<?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>75812</bug_id>
          
          <creation_ts>2012-01-08 16:28:43 -0800</creation_ts>
          <short_desc>JSC should be a triple-tier VM</short_desc>
          <delta_ts>2012-02-21 21:23:26 -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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>78791</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aroben</cc>
    
    <cc>gustavo</cc>
    
    <cc>hausmann</cc>
    
    <cc>loki</cc>
    
    <cc>morrita</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ossy</cc>
    
    <cc>pvarga</cc>
    
    <cc>rakuco</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wingo</cc>
    
    <cc>xan.lopez</cc>
    
    <cc>zherczeg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>531867</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-08 16:28:43 -0800</bug_when>
    <thetext>This is a work in progress.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531868</commentid>
    <comment_count>1</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-08 16:29:57 -0800</bug_when>
    <thetext>&lt;rdar://problem/10079694&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531873</commentid>
    <comment_count>2</comment_count>
      <attachid>121601</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-08 16:32:56 -0800</bug_when>
    <thetext>Created attachment 121601
work in progress

Doesn&apos;t work yet, not ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531901</commentid>
    <comment_count>3</comment_count>
      <attachid>121607</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-08 18:09:50 -0800</bug_when>
    <thetext>Created attachment 121607
work in progress

Added a chunk of the build logic, but not yet all of it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531951</commentid>
    <comment_count>4</comment_count>
      <attachid>121617</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-08 21:14:45 -0800</bug_when>
    <thetext>Created attachment 121617
work in progress

It&apos;s starting to build, sort of.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531959</commentid>
    <comment_count>5</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2012-01-08 21:38:34 -0800</bug_when>
    <thetext>Triple? Meh. Let&apos;s go to five -- http://onion.com/bWBRid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531960</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-08 21:39:42 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Triple? Meh. Let&apos;s go to five -- http://onion.com/bWBRid.

I can&apos;t argue with you on that one. ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532008</commentid>
    <comment_count>7</comment_count>
      <attachid>121624</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-08 23:36:38 -0800</bug_when>
    <thetext>Created attachment 121624
work in progress

Wrote more glue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532599</commentid>
    <comment_count>8</comment_count>
      <attachid>121744</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-09 16:00:49 -0800</bug_when>
    <thetext>Created attachment 121744
work in progress

Getting closer to having it build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532709</commentid>
    <comment_count>9</comment_count>
      <attachid>121769</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-09 17:29:19 -0800</bug_when>
    <thetext>Created attachment 121769
work in progress

It now compiles.  But does not link.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>532876</commentid>
    <comment_count>10</comment_count>
      <attachid>121809</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-10 01:09:22 -0800</bug_when>
    <thetext>Created attachment 121809
work in progress

It compiles and links but there is still a tiny bit of glue to write.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533397</commentid>
    <comment_count>11</comment_count>
      <attachid>121915</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-10 14:45:09 -0800</bug_when>
    <thetext>Created attachment 121915
work in progress

Rebased, and started to work on the yucky glue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>533501</commentid>
    <comment_count>12</comment_count>
      <attachid>121946</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-10 17:09:11 -0800</bug_when>
    <thetext>Created attachment 121946
work in progress

Call linking is fixed up.  But still more work to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534448</commentid>
    <comment_count>13</comment_count>
      <attachid>122140</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-11 17:31:35 -0800</bug_when>
    <thetext>Created attachment 122140
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534546</commentid>
    <comment_count>14</comment_count>
      <attachid>122163</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-11 21:07:34 -0800</bug_when>
    <thetext>Created attachment 122163
work in progress

Did another rebase and wrote most (all?) of the remaining glue that is needed to get this to work.

Not sure if it builds at this point.  And I&apos;m pretty sure that if it does, it&apos;ll crash in some humorous way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534548</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-11 21:11:26 -0800</bug_when>
    <thetext>Attachment 122163 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

Last 3072 characters of output:
ec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:114:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:120:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:121:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:122:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1087:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1120:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:43:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:65:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:38:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:44:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:46:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:52:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:54:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:65:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:27:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:28:  Found header this file implements after other header. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 27 in 79 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>534549</commentid>
    <comment_count>16</comment_count>
      <attachid>122163</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-11 21:11:34 -0800</bug_when>
    <thetext>Comment on attachment 122163
work in progress

Clearing r? because I didn&apos;t mean to set it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534555</commentid>
    <comment_count>17</comment_count>
      <attachid>122163</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-11 21:25:14 -0800</bug_when>
    <thetext>Comment on attachment 122163
work in progress

Attachment 122163 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11213281</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534559</commentid>
    <comment_count>18</comment_count>
      <attachid>122163</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-11 21:31:32 -0800</bug_when>
    <thetext>Comment on attachment 122163
work in progress

Attachment 122163 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11222238</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534573</commentid>
    <comment_count>19</comment_count>
      <attachid>122172</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-11 22:37:51 -0800</bug_when>
    <thetext>Created attachment 122172
work in progress

It just ran &quot;hello&quot;.

[pizlo@nitroflex OpenSource] WebKitBuild/Debug/jsc hello.js 
hello!
[pizlo@nitroflex OpenSource]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535160</commentid>
    <comment_count>20</comment_count>
      <attachid>122310</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-12 14:24:45 -0800</bug_when>
    <thetext>Created attachment 122310
work in progress

testapi works as do a bunch of random tests (eval, call caching, property access caching, global variables, printing, arithmetic, string concatenation, and other stuff), but run-javascriptcore-tests still fails.  But progress is being made.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535454</commentid>
    <comment_count>21</comment_count>
      <attachid>122371</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-12 22:55:11 -0800</bug_when>
    <thetext>Created attachment 122371
work in progress

Tons of bug fixes.  It&apos;s starting to work, but there are still test failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536834</commentid>
    <comment_count>22</comment_count>
      <attachid>122701</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-16 18:02:26 -0800</bug_when>
    <thetext>Created attachment 122701
work in progress

Fixed loads more regressions, but there&apos;s still more to go!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537456</commentid>
    <comment_count>23</comment_count>
      <attachid>122841</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-17 17:08:31 -0800</bug_when>
    <thetext>Created attachment 122841
work in progress

It can now run javascriptcore-tests, SunSpider, V8, and Kraken.  Backing up before I rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>537629</commentid>
    <comment_count>24</comment_count>
      <attachid>122872</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-17 22:26:11 -0800</bug_when>
    <thetext>Created attachment 122872
work in progress

This now runs SunSpider, V8, and Kraken in release mode.  It turns out that there was a bug in the offline assembler&apos;s interaction with the system linker, where the assembler&apos;s use of non-local but non-global labels (i.e. labels beginning with &apos;_&apos; but lacking a &apos;.globl&apos;) was causing a hilarious bug: an entire snippet of code between two such labels disappeared sometime between when the inline assembly was passed to the C++ compiler and when it was loaded into memory when the binary ran!

Anyway, here&apos;s the performance of just the low-level interpreter (LLInt) without tiering support.

Remaining work includes:

- Running layout tests.  Not anticipating anything big there.

- Enabling tiering and enjoying the bug explosion.


Benchmark report for SunSpider, V8, and Kraken on oldmac (MacPro4,1).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r105216)
&quot;LLInt&quot; at /Volumes/Data/pizlo/senary/OpenSource/WebKitBuild/Release/jsc (r105216)
&quot;OldInt&quot; at /Volumes/Data/pizlo/septenary/OpenSource/WebKitBuild/Release/jsc (r105216)

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1
benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing.
Reporting benchmark execution times with 95% confidence intervals in milliseconds.

                                            TipOfTree                 LLInt                   OldInt              OldInt v. TipOfTree    
SunSpider:
   3d-cube                                7.6638+-0.0505    !    20.0177+-0.0229    !    51.2581+-0.0747       ! definitely 6.6884x slower
   3d-morph                              14.0859+-0.0497    !    22.2417+-0.0705    !    63.8518+-0.1799       ! definitely 4.5330x slower
   3d-raytrace                           11.8198+-0.0278    !    32.3048+-0.2806    !    57.2185+-0.0874       ! definitely 4.8409x slower
   access-binary-trees                    2.2516+-0.0116    !    11.5333+-0.0726    !    17.5089+-0.0268       ! definitely 7.7761x slower
   access-fannkuch                       11.4253+-0.0212    !    51.4479+-1.7268    !   119.4145+-0.4435       ! definitely 10.4517x slower
   access-nbody                           6.8891+-0.0643    !    22.1227+-0.0842    !    56.7224+-0.0504       ! definitely 8.2336x slower
   access-nsieve                          3.8053+-0.0326    !    10.4458+-0.0395    !    25.1232+-0.0232       ! definitely 6.6021x slower
   bitops-3bit-bits-in-byte               1.5363+-0.0249    !    20.9110+-0.0530    !    42.8032+-0.0428       ! definitely 27.8613x slower
   bitops-bits-in-byte                    6.0055+-0.0246    !    27.4117+-0.7046    !    44.8535+-0.1989       ! definitely 7.4687x slower
   bitops-bitwise-and                     4.6773+-0.0433    !    22.7415+-0.1085    !    47.1811+-0.0167       ! definitely 10.0871x slower
   bitops-nsieve-bits                     8.2503+-0.0383    !    25.2988+-0.0695    !    60.1579+-0.0419       ! definitely 7.2916x slower
   controlflow-recursive                  3.5350+-0.0092    !    12.4984+-0.0564    !    26.1094+-0.1379       ! definitely 7.3861x slower
   crypto-aes                            11.2509+-0.1880    !    23.7763+-0.1513    !    40.7436+-0.1964       ! definitely 3.6214x slower
   crypto-md5                             3.4951+-0.0344    !    15.9365+-0.1302    !    27.5367+-0.1492       ! definitely 7.8786x slower
   crypto-sha1                            3.0708+-0.0170    !    14.6742+-0.0774    !    27.7720+-0.3279       ! definitely 9.0438x slower
   date-format-tofte                     14.1085+-0.1157    !    31.0783+-0.0933    ^    30.7639+-0.0352       ! definitely 2.1805x slower
   date-format-xparb                     14.4195+-0.1487    !    26.5260+-0.1848    ^    23.1269+-0.0614       ! definitely 1.6039x slower
   math-cordic                           12.1021+-0.0200    !    36.6978+-0.1130    !    70.9342+-0.3044       ! definitely 5.8613x slower
   math-partial-sums                     15.0148+-0.0252    !    22.0465+-0.0671    !    54.6326+-0.0661       ! definitely 3.6386x slower
   math-spectral-norm                     3.2588+-0.0080    !    18.0681+-1.2429    !    42.4210+-0.0473       ! definitely 13.0173x slower
   regexp-dna                            11.1681+-0.0469    ?    11.2181+-0.0782    !   233.8707+-0.7245       ! definitely 20.9410x slower
   string-base64                          5.7609+-0.0243    !    25.8767+-0.1465    !    27.5596+-0.1349       ! definitely 4.7839x slower
   string-fasta                          10.5268+-0.0296    !    24.8933+-0.2741    !    36.4612+-0.0171       ! definitely 3.4637x slower
   string-tagcloud                       16.5318+-0.0611    !    26.0234+-0.3133    !    45.0726+-0.6773       ! definitely 2.7264x slower
   string-unpack-code                    26.5009+-0.1188    !    30.0149+-0.2176    !    64.0745+-0.1974       ! definitely 2.4178x slower
   string-validate-input                  7.6353+-0.0251    !    17.3225+-0.0934    !    23.3600+-0.1823       ! definitely 3.0595x slower

   &lt;arithmetic&gt; *                         9.1073+-0.0249    !    23.1972+-0.1000    !    52.3282+-0.0400       ! definitely 5.7457x slower
   &lt;geometric&gt;                            7.3686+-0.0196    !    21.6519+-0.0729    !    43.7337+-0.0305       ! definitely 5.9351x slower
   &lt;harmonic&gt;                             5.7195+-0.0203    !    20.1591+-0.0641    !    38.5437+-0.0333       ! definitely 6.7391x slower

                                            TipOfTree                 LLInt                   OldInt              OldInt v. TipOfTree    
V8:
   crypto                               120.1883+-0.5165    !  1037.6748+-3.7260    !  2807.2836+-3.1412       ! definitely 23.3574x slower
   deltablue                            226.1341+-0.6206    !  2734.4194+-28.1251   ^  2493.4806+-10.8510      ! definitely 11.0266x slower
   earley-boyer                         143.4873+-1.6203    !   466.2559+-3.5907    !   789.9330+-4.2703       ! definitely 5.5052x slower
   raytrace                              68.8719+-0.2381    !   303.0984+-1.9271    !   353.9877+-5.8820       ! definitely 5.1398x slower
   regexp                               129.1626+-0.3948    !   162.7258+-0.5501    !  1202.7013+-13.1267      ! definitely 9.3115x slower
   richards                             240.3431+-1.1474    !  2640.3920+-12.0460   !  2896.8581+-5.3771       ! definitely 12.0530x slower
   splay                                120.6794+-1.3454    !   246.4478+-1.9810    !   289.9561+-8.3939       ! definitely 2.4027x slower

   &lt;arithmetic&gt;                         149.8381+-0.3944    !  1084.4306+-4.6843    !  1547.7429+-3.4411       ! definitely 10.3294x slower
   &lt;geometric&gt; *                        139.0662+-0.3535    !   636.7670+-2.0252    !  1102.1020+-4.9534       ! definitely 7.9250x slower
   &lt;harmonic&gt;                           128.6159+-0.2863    !   403.3166+-1.4094    !   738.4358+-7.3911       ! definitely 5.7414x slower

                                            TipOfTree                 LLInt                   OldInt              OldInt v. TipOfTree    
Kraken:
   ai-astar                             986.4699+-1.5020    !  5711.2708+-1.5013    ^  5656.3493+-4.4791       ! definitely 5.7339x slower
   audio-beat-detection                 300.4027+-2.5656    !  1544.7168+-1.8202    !  3461.4428+-8.8822       ! definitely 11.5227x slower
   audio-dft                            449.7360+-2.2174    !  1563.2987+-14.5969   !  2986.4066+-8.7263       ! definitely 6.6404x slower
   audio-fft                            188.6152+-0.6885    !  1491.1198+-2.0865    !  3378.8465+-4.2707       ! definitely 17.9140x slower
   audio-oscillator                     531.0049+-1.3694    !  1119.1909+-1.2375    !  2355.1291+-46.6195      ! definitely 4.4352x slower
   imaging-darkroom                     477.9397+-5.2400    !  1952.3063+-16.5109   !  4594.1441+-9.4076       ! definitely 9.6124x slower
   imaging-desaturate                   349.4066+-0.2174    !  3459.0173+-2.5981    !  6846.5305+-2.5816       ! definitely 19.5947x slower
   imaging-gaussian-blur                804.0863+-0.3510    ! 10101.1572+-114.0651  ! 28450.3464+-137.4128     ! definitely 35.3822x slower
   json-parse-financial                  84.1573+-0.1870    ?    84.3888+-0.5073         83.9558+-0.0540       
   json-stringify-tinderbox             127.6504+-0.3823        127.5610+-0.3344    ^   126.5883+-0.5533       ^ definitely 1.0084x faster
   stanford-crypto-aes                  165.0739+-0.5711    !   668.7007+-4.0118    !  1169.5522+-2.7745       ! definitely 7.0850x slower
   stanford-crypto-ccm                  148.1637+-0.5867    !   478.2820+-0.8416    !   805.8471+-1.0524       ! definitely 5.4389x slower
   stanford-crypto-pbkdf2               304.4971+-2.9252    !  1632.6897+-1.5222    !  2874.7453+-3.3609       ! definitely 9.4410x slower
   stanford-crypto-sha256-iterative     131.1675+-1.9117    !   598.6028+-0.7485    !   938.0714+-3.1941       ! definitely 7.1517x slower

   &lt;arithmetic&gt; *                       360.5980+-0.3558    !  2180.8788+-7.8414    !  4551.9968+-7.8917       ! definitely 12.6235x slower
   &lt;geometric&gt;                          280.6399+-0.3003    !  1126.2141+-0.9497    !  1946.9019+-2.5327       ! definitely 6.9374x slower
   &lt;harmonic&gt;                           220.8662+-0.2670    !   474.7984+-1.2485    !   554.6496+-0.7083       ! definitely 2.5112x slower

                                            TipOfTree                 LLInt                   OldInt              OldInt v. TipOfTree    
All benchmarks:
   &lt;arithmetic&gt;                         134.7665+-0.1527    !   823.9669+-1.8847    !  1615.3763+-2.1290       ! definitely 11.9865x slower
   &lt;geometric&gt;                           33.7496+-0.0654    !   116.2493+-0.2059    !   219.0713+-0.1464       ! definitely 6.4911x slower
   &lt;harmonic&gt;                            10.0778+-0.0350    !    35.1643+-0.1067    !    66.2642+-0.0545       ! definitely 6.5752x slower

                                            TipOfTree                 LLInt                   OldInt              OldInt v. TipOfTree    
Geomean of preferred means:
   &lt;scaled-result&gt;                       77.0094+-0.1378    !   318.1832+-0.5270    !   640.2995+-0.7543       ! definitely 8.3146x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538345</commentid>
    <comment_count>25</comment_count>
      <attachid>123042</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-18 17:16:01 -0800</bug_when>
    <thetext>Created attachment 123042
work in progress

fast/js passes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538410</commentid>
    <comment_count>26</comment_count>
      <attachid>123055</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-18 19:46:45 -0800</bug_when>
    <thetext>Created attachment 123055
work in progress

fast/js, sputnik, and ietestcenter all pass now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538446</commentid>
    <comment_count>27</comment_count>
      <attachid>123066</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-18 21:15:55 -0800</bug_when>
    <thetext>Created attachment 123066
work in progress

Just got LLInt-&gt;oldJIT tiering to work.  And oldJIT-&gt;DFG tiering still works, too.  Going to do more tests and then it&apos;ll be time to commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>538549</commentid>
    <comment_count>28</comment_count>
      <attachid>123089</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-19 01:16:31 -0800</bug_when>
    <thetext>Created attachment 123089
work in progress

I&apos;ve got some hilarious value profiling pathologies to fix still.  Right now this patch results in a 5% slow-down on SunSpider purely because some code never gets profiled, and the DFG doesn&apos;t handle that gracefully.  Should be easy to fix though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540381</commentid>
    <comment_count>29</comment_count>
      <attachid>123518</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-22 21:46:33 -0800</bug_when>
    <thetext>Created attachment 123518
work in progress

Triple-tiering now works on SunSpider and run-javascript-core tests and does not cause regressions.  Not too shabby, since SunSpider was not the benchmark we were trying to progress on with this change.



Benchmark report for SunSpider on nitroflex (MacBookPro8,2).

VMs tested:
&quot;TipOfTree&quot; at /Volumes/Data/pizlo/quinary/OpenSource/WebKitBuild/Release/jsc (r105584)
&quot;LLInt&quot; at /Volumes/Data/pizlo/septenary/OpenSource/WebKitBuild/Release/jsc (r105584)

Collected 12 samples per benchmark/VM, with 4 VM invocations per benchmark. Emitted a call to gc()
between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the
jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution
times with 95% confidence intervals in milliseconds.

                                 TipOfTree                 LLInt                                      

3d-cube                        5.6745+-0.1568    ?     5.8361+-0.1208       ? might be 1.0285x slower
3d-morph                      11.6210+-0.1631    ?    12.1069+-0.4708       ? might be 1.0418x slower
3d-raytrace                    8.9877+-0.2091    ?     9.0600+-0.2257       ?
access-binary-trees            1.7678+-0.0542          1.7197+-0.0319         might be 1.0280x faster
access-fannkuch                7.4614+-0.0947    ?     7.6526+-0.2332       ? might be 1.0256x slower
access-nbody                   5.2353+-0.1827    ^     4.7338+-0.1034       ^ definitely 1.1059x faster
access-nsieve                  2.9858+-0.0898          2.9686+-0.0710       
bitops-3bit-bits-in-byte       1.2672+-0.0291    ?     1.2888+-0.0322       ? might be 1.0171x slower
bitops-bits-in-byte            2.9313+-0.0499    ?     3.0038+-0.0783       ? might be 1.0247x slower
bitops-bitwise-and             2.8171+-0.1788    ?     2.9507+-0.2950       ? might be 1.0474x slower
bitops-nsieve-bits             6.5448+-0.3039    ?     6.5532+-0.3514       ?
controlflow-recursive          2.3911+-0.0410          2.3722+-0.0297       
crypto-aes                     8.3165+-0.1755          8.2634+-0.2232       
crypto-md5                     2.7578+-0.1087    !     3.0056+-0.0823       ! definitely 1.0899x slower
crypto-sha1                    2.4191+-0.0348          2.3804+-0.0404         might be 1.0163x faster
date-format-tofte             10.3733+-0.2814         10.2813+-0.1830       
date-format-xparb             11.3328+-0.7074         10.5627+-0.1865         might be 1.0729x faster
math-cordic                    8.0856+-0.0717    ?     8.0955+-0.1207       ?
math-partial-sums              9.6584+-0.2356          9.5466+-0.1533         might be 1.0117x faster
math-spectral-norm             2.4937+-0.0390    ?     2.4996+-0.0752       ?
regexp-dna                     7.8369+-0.1595          7.7539+-0.1160         might be 1.0107x faster
string-base64                  4.9288+-0.1364    ?     5.0067+-0.1325       ? might be 1.0158x slower
string-fasta                   7.7753+-0.1828          7.7097+-0.1765       
string-tagcloud               12.4376+-0.2461    ?    12.4669+-0.2336       ?
string-unpack-code            19.4631+-0.2433    ?    19.9456+-0.3127       ? might be 1.0248x slower
string-validate-input          6.3725+-0.1745          6.3249+-0.1717       

&lt;arithmetic&gt; *                 6.6899+-0.0577    ?     6.6957+-0.0426       ? might be 1.0009x slower
&lt;geometric&gt;                    5.4089+-0.0367    ?     5.4170+-0.0346       ? might be 1.0015x slower
&lt;harmonic&gt;                     4.2462+-0.0267    ?     4.2621+-0.0290       ? might be 1.0037x slower</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540880</commentid>
    <comment_count>30</comment_count>
      <attachid>123633</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-23 15:23:27 -0800</bug_when>
    <thetext>Created attachment 123633
work in progress

Can now run all major benchmarks in triple-tier mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541142</commentid>
    <comment_count>31</comment_count>
      <attachid>123701</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-23 22:59:46 -0800</bug_when>
    <thetext>Created attachment 123701
work in progress

It works on 32-bit Mac.

Also modified the offlineasm to do its own dependency tracking, since convincing Xcode to do it is hard. In short, the offsets extractor will not do any work (and will hence not mutate the LLIntDesiredOffsets.h file) unless the input has changed, and in turn the assembler will not do any work (and not mutate the LLIntAssembly.h file) unless the offset extract binary has different offsets than before and the input file had changed.  This is done by storing SHA1 signatures of the input in the output files.  The result is that you don&apos;t pay the cost of running the offlineasm, or of any downstream rebuilds, if you don&apos;t change either the LowLevelInterpreter.asm file or actually modify some structures/classes to have different sizes and offsets.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541561</commentid>
    <comment_count>32</comment_count>
      <attachid>123783</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-24 12:32:11 -0800</bug_when>
    <thetext>Created attachment 123783
work in progress

Made inlining of interpreted functions work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541746</commentid>
    <comment_count>33</comment_count>
      <attachid>123822</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-24 15:08:07 -0800</bug_when>
    <thetext>Created attachment 123822
work in progress

It completely works on 32-bit Mac now.  On to other platforms...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541887</commentid>
    <comment_count>34</comment_count>
      <attachid>123855</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-24 17:28:22 -0800</bug_when>
    <thetext>Created attachment 123855
the patch

It&apos;s ready.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541892</commentid>
    <comment_count>35</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-24 17:31:32 -0800</bug_when>
    <thetext>Attachment 123855 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

Last 3072 characters of output:
aScriptCore/llint/LLIntHelpers.cpp:126:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:127:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:133:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:134:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:135:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:228:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:557:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1313:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1346:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:43:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:65:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:41:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:47:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:55:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:57:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:68:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 29 in 93 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>541894</commentid>
    <comment_count>36</comment_count>
      <attachid>123858</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-24 17:33:44 -0800</bug_when>
    <thetext>Created attachment 123858
the patch

Fixed the real style errors.  The rest are false positives.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541900</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-24 17:38:37 -0800</bug_when>
    <thetext>Attachment 123858 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

Last 3072 characters of output:
se underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:120:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:126:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:127:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:133:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:134:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:135:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:228:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1312:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1345:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:65:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:41:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:47:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:55:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:57:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:68:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 93 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>541951</commentid>
    <comment_count>38</comment_count>
      <attachid>123858</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-01-24 18:44:57 -0800</bug_when>
    <thetext>Comment on attachment 123858
the patch

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

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:-62
&gt; -#if !defined(NDEBUG) || ENABLE(OPCODE_SAMPLING)

This is enabling dumping in release builds? - I don&apos;t think we&apos;ll want all these strings in a release binary, this change should be reverted.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1535
&gt; +#if ENABLE(LLINT)    

I&apos;m saddened to see yet another build flag – though this is clearly necessary until LLInt is ported to all platforms.

Looking toward the future, we may need to think about rationalizing down – typing together LLINT + JIT + DFG + MACRO_ASSEMBLER + YARR_JIT into a single brave-new-world-of-fast-JS-with-JITs switch.

&gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1754
&gt; +    if (!interpreter-&gt;enabled()) {

This confuses me a little - it looks like if LLInt is being used, interpreter-&gt;enabled() will be true, does LLInt not use the structure slots embedded within the instruction stream? – a comment here would probably be useful. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541962</commentid>
    <comment_count>39</comment_count>
      <attachid>123858</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-24 19:19:33 -0800</bug_when>
    <thetext>Comment on attachment 123858
the patch

Attachment 123858 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11242417</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541975</commentid>
    <comment_count>40</comment_count>
      <attachid>123858</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-24 19:47:57 -0800</bug_when>
    <thetext>Comment on attachment 123858
the patch

Attachment 123858 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11343158</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541977</commentid>
    <comment_count>41</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-24 19:49:23 -0800</bug_when>
    <thetext>(In reply to comment #38)
&gt; (From update of attachment 123858 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123858&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:-62
&gt; &gt; -#if !defined(NDEBUG) || ENABLE(OPCODE_SAMPLING)
&gt; 
&gt; This is enabling dumping in release builds? - I don&apos;t think we&apos;ll want all these strings in a release binary, this change should be reverted.

Should we really bothered by 824 bytes worth of strings and code?  The way C++ inlines template code like crazy, probably any change we make introduces that much.

Here&apos;s the size of a release build of the JavaScriptCore framework in ToT: 3578504 bytes
Here&apos;s the size of a release build with CodeBlock dumping compiled in: 3579328 bytes

So compiling in the dumping code leads to 824 bytes *total* increase in the framework size.  That&apos;s strings and code, combined.  Another way to put it is that it&apos;s a 0.02% increase - hardly noticable.

It&apos;s pretty much routine for me at this point to have to enable this dumping thingy in release builds when dealing with release-only crashes.  It&apos;s really annoying, and the NDEBUG checks are super annoying.  I agree with your comment below that we should strive to reduce the amount of #if madness in our code.

Are we really willing to have #if NDEBUG statements in a bunch of places to protect against having a 0.02% increase in code size?

&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1535
&gt; &gt; +#if ENABLE(LLINT)    
&gt; 
&gt; I&apos;m saddened to see yet another build flag – though this is clearly necessary until LLInt is ported to all platforms.
&gt; 
&gt; Looking toward the future, we may need to think about rationalizing down – typing together LLINT + JIT + DFG + MACRO_ASSEMBLER + YARR_JIT into a single brave-new-world-of-fast-JS-with-JITs switch.
&gt; 
&gt; &gt; Source/JavaScriptCore/bytecode/CodeBlock.cpp:1754
&gt; &gt; +    if (!interpreter-&gt;enabled()) {
&gt; 
&gt; This confuses me a little - it looks like if LLInt is being used, interpreter-&gt;enabled() will be true, does LLInt not use the structure slots embedded within the instruction stream? – a comment here would probably be useful. :-)

interpreter-&gt;enabled() means that LLInt was compiled in but we ended up using the old interpreter instead, a mode that I still support because there&apos;s probably a</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541985</commentid>
    <comment_count>42</comment_count>
      <attachid>123880</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-24 21:01:42 -0800</bug_when>
    <thetext>Created attachment 123880
the patch

Attempt to fix Qt/EFL/GTK builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541986</commentid>
    <comment_count>43</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-24 21:02:06 -0800</bug_when>
    <thetext>(In reply to comment #42)
&gt; Created an attachment (id=123880) [details]
&gt; the patch
&gt; 
&gt; Attempt to fix Qt/EFL/GTK builds.

And also addressed Gavin&apos;s comment about not having comments in the !interpreter-&gt;enabled() check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541987</commentid>
    <comment_count>44</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-24 21:08:29 -0800</bug_when>
    <thetext>Attachment 123880 did not pass style-queue:

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

Last 3072 characters of output:
se underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:120:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:126:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:127:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:133:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:134:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:135:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:228:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1312:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1345:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:65:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:41:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:47:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:55:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:57:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:68:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 97 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>541992</commentid>
    <comment_count>45</comment_count>
      <attachid>123880</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-24 21:24:54 -0800</bug_when>
    <thetext>Comment on attachment 123880
the patch

Attachment 123880 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11344251</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541995</commentid>
    <comment_count>46</comment_count>
      <attachid>123880</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-24 21:37:15 -0800</bug_when>
    <thetext>Comment on attachment 123880
the patch

Attachment 123880 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11159224</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542224</commentid>
    <comment_count>47</comment_count>
      <attachid>123880</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-01-25 06:22:47 -0800</bug_when>
    <thetext>Comment on attachment 123880
the patch

Attachment 123880 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11177485</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542421</commentid>
    <comment_count>48</comment_count>
      <attachid>123970</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-25 10:27:00 -0800</bug_when>
    <thetext>Created attachment 123970
the patch

Fixed bunch of builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542432</commentid>
    <comment_count>49</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-25 10:37:57 -0800</bug_when>
    <thetext>Attachment 123970 did not pass style-queue:

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

Last 3072 characters of output:
se underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:120:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:126:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:127:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:133:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:134:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:135:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:228:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1312:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1345:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:65:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:41:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:47:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:55:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:57:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:68:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 99 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>542467</commentid>
    <comment_count>50</comment_count>
      <attachid>123970</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-25 11:12:07 -0800</bug_when>
    <thetext>Comment on attachment 123970
the patch

Attachment 123970 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11242884</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543595</commentid>
    <comment_count>51</comment_count>
      <attachid>124199</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-26 15:48:23 -0800</bug_when>
    <thetext>Created attachment 124199
the patch

Fix build on EFL, Windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543603</commentid>
    <comment_count>52</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-26 15:51:53 -0800</bug_when>
    <thetext>Attachment 124199 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:120:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:126:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:127:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:133:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:134:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:135:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:228:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1312:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1345:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:65:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:41:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:47:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:55:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:57:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:68:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 101 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>543606</commentid>
    <comment_count>53</comment_count>
      <attachid>124201</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-26 15:54:33 -0800</bug_when>
    <thetext>Created attachment 124201
the patch

Cleaned up the comment style that I used in offlineasm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543612</commentid>
    <comment_count>54</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-26 15:59:07 -0800</bug_when>
    <thetext>Attachment 124201 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:120:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:126:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:127:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:133:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:134:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:135:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:228:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1312:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1345:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:65:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:41:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:47:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:55:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:57:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:68:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 101 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>543665</commentid>
    <comment_count>55</comment_count>
      <attachid>124201</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-26 16:58:18 -0800</bug_when>
    <thetext>Comment on attachment 124201
the patch

Attachment 124201 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11349525</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543688</commentid>
    <comment_count>56</comment_count>
      <attachid>124225</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-26 17:37:00 -0800</bug_when>
    <thetext>Created attachment 124225
the patch

Trying to fix the build more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543703</commentid>
    <comment_count>57</comment_count>
      <attachid>124229</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-26 18:03:42 -0800</bug_when>
    <thetext>Created attachment 124229
the patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543705</commentid>
    <comment_count>58</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-26 18:07:01 -0800</bug_when>
    <thetext>Attachment 124229 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:120:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:126:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:127:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:133:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:134:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:135:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:228:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1312:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1345:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:65:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:46:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:48:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:54:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:56:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:67:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 104 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>543775</commentid>
    <comment_count>59</comment_count>
      <attachid>124248</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-26 20:12:46 -0800</bug_when>
    <thetext>Created attachment 124248
the patch

Another rebase!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>543778</commentid>
    <comment_count>60</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-26 20:16:43 -0800</bug_when>
    <thetext>Attachment 124248 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:120:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:126:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:127:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:133:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:134:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:135:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:228:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1312:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1345:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:64:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:46:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:48:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:54:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:56:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:67:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 103 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>543793</commentid>
    <comment_count>61</comment_count>
      <attachid>124248</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-26 20:51:01 -0800</bug_when>
    <thetext>Comment on attachment 124248
the patch

Attachment 124248 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11349587</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544320</commentid>
    <comment_count>62</comment_count>
      <attachid>124360</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-27 13:37:03 -0800</bug_when>
    <thetext>Created attachment 124360
the patch

Again trying to fix EFL and Windows build.  Maybe I got it this time? ;-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544323</commentid>
    <comment_count>63</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-27 13:40:04 -0800</bug_when>
    <thetext>Attachment 124360 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:120:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:126:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:127:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:133:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:134:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:135:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:228:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1312:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1345:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:64:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:42:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:48:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:50:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:56:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:69:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 105 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>544354</commentid>
    <comment_count>64</comment_count>
      <attachid>124360</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-27 14:15:00 -0800</bug_when>
    <thetext>Comment on attachment 124360
the patch

Attachment 124360 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11163853</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544385</commentid>
    <comment_count>65</comment_count>
      <attachid>124372</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-27 14:42:19 -0800</bug_when>
    <thetext>Created attachment 124372
the patch

- More EFL build fixes.

- Made the offline assembler capable of hashing itself for depedency tracking.  So if you change the offline assembler, then it will realize that it must rebuild LLInt.

- Made the offline assembler use InlineASM.h&apos;s macros.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544386</commentid>
    <comment_count>66</comment_count>
      <attachid>124373</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-27 14:43:10 -0800</bug_when>
    <thetext>Created attachment 124373
LLIntAssembly.h

Generated assembly code with latest offlineasm changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544392</commentid>
    <comment_count>67</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-27 14:46:58 -0800</bug_when>
    <thetext>(In reply to comment #66)
&gt; Created an attachment (id=124373) [details]
&gt; LLIntAssembly.h
&gt; 
&gt; Generated assembly code with latest offlineasm changes.

Hajime, Simon, can you check that the LLIntAssembly.h file does the symbol magic consistently with the changes you guys are making?

Note that I had to introduce a new macro in InlineASM.h to create local labels.  Currently I only have this working on Mac, but it should be easy to expand support for this to other platforms in future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544396</commentid>
    <comment_count>68</comment_count>
      <attachid>124374</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-27 14:50:37 -0800</bug_when>
    <thetext>Created attachment 124374
the patch

Another rebase!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544401</commentid>
    <comment_count>69</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-27 14:54:41 -0800</bug_when>
    <thetext>Attachment 124374 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:120:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:126:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:127:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:133:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:134:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:135:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:228:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1312:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1345:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:64:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:42:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:58:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:60:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:71:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 108 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>544436</commentid>
    <comment_count>70</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-01-27 15:28:28 -0800</bug_when>
    <thetext>(In reply to comment #67)
&gt; (In reply to comment #66)
&gt; &gt; Created an attachment (id=124373) [details] [details]
&gt; &gt; LLIntAssembly.h
&gt; &gt; 
&gt; &gt; Generated assembly code with latest offlineasm changes.
&gt; 
&gt; Hajime, Simon, can you check that the LLIntAssembly.h file does the symbol magic consistently with the changes you guys are making?

Filip, Thanks for caring.
It looks good to me although Simon should know more.
Because the generated code is using same machinery as existing code, it should work fine.
And the code generator looks straightforward enough to fix possible problem later
without significant impact.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544634</commentid>
    <comment_count>71</comment_count>
      <attachid>124432</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-28 00:41:10 -0800</bug_when>
    <thetext>Created attachment 124432
the patch, sort of

This patch may be slightly polluted by debug garbage, as well as a bugfix that is to be reviewed separately.  I will &quot;remove&quot; that bugfix from this patch by rebasing after that one lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544635</commentid>
    <comment_count>72</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-28 00:44:10 -0800</bug_when>
    <thetext>Attachment 124432 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:120:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:126:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:127:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:133:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:134:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:135:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:228:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1316:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1349:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:64:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:42:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:58:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:60:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:71:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 112 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>544803</commentid>
    <comment_count>73</comment_count>
      <attachid>124478</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-29 17:37:38 -0800</bug_when>
    <thetext>Created attachment 124478
the patch

Includes beginnings of proper ARMv7 support in the offlineasm backend. This is done by doing a series of micropasses that break down the larger operations (like say &quot;addi 5000, 4[foo, bar, 8]&quot;) into smaller ones (&quot;move 4, tmp1; addp foo, tmp1; loadi [tmp1, bar, 8], tmp2; move 5000, tmp3; addi tmp3, tmp2; storei tmp2, [tmp1, bar, 8]&quot;).

Also includes a build fix in tools/; I&apos;ll land that build fix separately and exclude it from this patch in the next rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544804</commentid>
    <comment_count>74</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-29 17:41:24 -0800</bug_when>
    <thetext>Attachment 124478 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:120:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:126:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:127:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:133:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:134:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:135:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:228:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1316:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1349:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:64:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:42:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:58:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:60:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:71:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 111 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>544883</commentid>
    <comment_count>75</comment_count>
      <attachid>124496</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-29 22:00:04 -0800</bug_when>
    <thetext>Created attachment 124496
the patch

Rabased, and added more ARMv7 code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>544884</commentid>
    <comment_count>76</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-29 22:03:45 -0800</bug_when>
    <thetext>Attachment 124496 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:120:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:126:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:127:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:133:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:134:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:135:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:228:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1316:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1349:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:64:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:42:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:58:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:60:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:71:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:34:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 110 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>545073</commentid>
    <comment_count>77</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2012-01-30 06:48:24 -0800</bug_when>
    <thetext>(In reply to comment #70)
&gt; (In reply to comment #67)
&gt; &gt; (In reply to comment #66)
&gt; &gt; &gt; Created an attachment (id=124373) [details] [details] [details]
&gt; &gt; &gt; LLIntAssembly.h
&gt; &gt; &gt; 
&gt; &gt; &gt; Generated assembly code with latest offlineasm changes.
&gt; &gt; 
&gt; &gt; Hajime, Simon, can you check that the LLIntAssembly.h file does the symbol magic consistently with the changes you guys are making?
&gt; 
&gt; Filip, Thanks for caring.
&gt; It looks good to me although Simon should know more.
&gt; Because the generated code is using same machinery as existing code, it should work fine.
&gt; And the code generator looks straightforward enough to fix possible problem later
&gt; without significant impact.

Looks good AFAICS :)

Simon</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545456</commentid>
    <comment_count>78</comment_count>
      <attachid>124608</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-30 15:12:29 -0800</bug_when>
    <thetext>Created attachment 124608
the patch

- Rebased for new way of dealing with getters and setters.

- More ARMv7 stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545465</commentid>
    <comment_count>79</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-30 15:15:51 -0800</bug_when>
    <thetext>Attachment 124608 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:121:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:127:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:128:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:134:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:135:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:136:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:229:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1322:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1355:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:70:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:42:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:58:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:60:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:71:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 110 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>545521</commentid>
    <comment_count>80</comment_count>
      <attachid>124619</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-30 15:56:09 -0800</bug_when>
    <thetext>Created attachment 124619
the patch

- complete (though untested) implementation of ARMv7 and another rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545531</commentid>
    <comment_count>81</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-30 16:00:58 -0800</bug_when>
    <thetext>Attachment 124619 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:121:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:127:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:128:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:134:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:135:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:136:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:229:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1322:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1355:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:70:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:42:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:58:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:60:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:71:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 110 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>545675</commentid>
    <comment_count>82</comment_count>
      <attachid>124646</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-30 18:07:50 -0800</bug_when>
    <thetext>Created attachment 124646
work in progress

Doing a bunch of hacking to get ARMv7 to work.  I&apos;m almost there.  Backing up.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546739</commentid>
    <comment_count>83</comment_count>
      <attachid>124872</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-31 19:28:44 -0800</bug_when>
    <thetext>Created attachment 124872
the patch

ARM is starting to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546744</commentid>
    <comment_count>84</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 19:34:37 -0800</bug_when>
    <thetext>Attachment 124872 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:123:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:129:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:130:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:136:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:137:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:138:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:231:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1412:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1449:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:70:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:42:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:58:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:60:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:71:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 111 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>546764</commentid>
    <comment_count>85</comment_count>
      <attachid>124875</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-31 20:14:51 -0800</bug_when>
    <thetext>Created attachment 124875
the patch

Realized that the previous patch had some unnecessary printf&apos;s.

Other than that - still working on fleshing out ARM support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546766</commentid>
    <comment_count>86</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 20:20:11 -0800</bug_when>
    <thetext>Attachment 124875 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:123:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:129:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:130:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:136:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:137:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:138:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:231:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1412:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1449:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:70:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:42:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:58:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:60:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:71:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 111 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>546828</commentid>
    <comment_count>87</comment_count>
      <attachid>124888</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-01-31 23:23:21 -0800</bug_when>
    <thetext>Created attachment 124888
the patch

ARM works in LLInt-only config.  Haven&apos;t tried LLInt+JIT yet, but I&apos;m guessing it&apos;ll just work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547446</commentid>
    <comment_count>88</comment_count>
      <attachid>125035</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-01 15:41:40 -0800</bug_when>
    <thetext>Created attachment 125035
the patch

Rebased again.  We can now run LLInt+JIT on ARM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547449</commentid>
    <comment_count>89</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-01 15:46:11 -0800</bug_when>
    <thetext>Attachment 125035 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:123:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:129:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:130:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:136:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:137:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:138:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:231:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1412:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1449:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:70:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:42:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:51:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:58:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:60:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:71:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 111 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>547694</commentid>
    <comment_count>90</comment_count>
      <attachid>125085</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-01 23:55:37 -0800</bug_when>
    <thetext>Created attachment 125085
the patch

Made SunSpider, V8, and Kraken run on ARM.

To do this I had to make more debug printing work in release builds. :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547695</commentid>
    <comment_count>91</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-01 23:58:55 -0800</bug_when>
    <thetext>Attachment 125085 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:123:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:129:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:130:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:136:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:137:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:138:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:231:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1413:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1450:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:70:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:47:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:56:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:69:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 111 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>547697</commentid>
    <comment_count>92</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-02 00:02:23 -0800</bug_when>
    <thetext>(In reply to comment #90)
&gt; Created an attachment (id=125085) [details]
&gt; the patch
&gt; 
&gt; Made SunSpider, V8, and Kraken run on ARM.
&gt; 
&gt; To do this I had to make more debug printing work in release builds. :-(

Never mind, bad patch.  I left in some horrible debug magic.  I will retest without it and repost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547708</commentid>
    <comment_count>93</comment_count>
      <attachid>125085</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-02 00:24:33 -0800</bug_when>
    <thetext>Comment on attachment 125085
the patch

Attachment 125085 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11387775</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547713</commentid>
    <comment_count>94</comment_count>
      <attachid>125091</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-02 00:37:31 -0800</bug_when>
    <thetext>Created attachment 125091
the patch

- Fixed windows/efl, hopefully.

- Removed some really dumb debug stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547715</commentid>
    <comment_count>95</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-02 00:41:55 -0800</bug_when>
    <thetext>Attachment 125091 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:123:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:129:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:130:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:136:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:137:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:138:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:231:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1413:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1450:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:70:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:47:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:56:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:69:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 112 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>548150</commentid>
    <comment_count>96</comment_count>
      <attachid>125186</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-02 13:57:15 -0800</bug_when>
    <thetext>Created attachment 125186
the patch

Rebased to include the release debugging changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548152</commentid>
    <comment_count>97</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-02 14:00:47 -0800</bug_when>
    <thetext>Attachment 125186 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:123:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:129:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:130:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:136:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:137:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:138:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:231:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1413:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1450:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:70:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:47:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:56:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:69:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 111 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>548179</commentid>
    <comment_count>98</comment_count>
      <attachid>125194</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-02 14:53:55 -0800</bug_when>
    <thetext>Created attachment 125194
the patch

Optimized generate_offset_extractor.rb.  It now runs 10x faster.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550337</commentid>
    <comment_count>99</comment_count>
      <attachid>125715</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-06 15:17:08 -0800</bug_when>
    <thetext>Created attachment 125715
the patch

Another rebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550343</commentid>
    <comment_count>100</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 15:21:06 -0800</bug_when>
    <thetext>Attachment 125715 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:123:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:129:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:130:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:136:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:137:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:138:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:231:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1413:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1450:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:70:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:47:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:56:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:69:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 112 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>550446</commentid>
    <comment_count>101</comment_count>
      <attachid>125735</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-06 17:18:58 -0800</bug_when>
    <thetext>Created attachment 125735
the patch

Rebased and switched to using 4 space indentation in Ruby code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>550447</commentid>
    <comment_count>102</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-06 17:22:47 -0800</bug_when>
    <thetext>Attachment 125735 did not pass style-queue:

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

Last 3072 characters of output:
e underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:123:  __ct_globalData is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:129:  __cce_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:130:  __cce_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:136:  __cr_exec is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:137:  __cr_pc is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:138:  __cr_callTarget is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:231:  The parameter name &quot;]&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1413:  The parameter name &quot;v&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/llint/LLIntHelpers.cpp:1450:  The parameter name &quot;!&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/StructureChain.h:40:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/runtime/JSTypeInfo.h:37:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp:70:  Alphabetical sorting problem.  [build/include_order] [4]
Source/JavaScriptCore/runtime/JSVariableObject.h:41:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:40:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:47:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:49:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:56:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:58:  Extra space before ( in function call  [whitespace/parens] [4]
Source/JavaScriptCore/jit/HostCallReturnValue.cpp:69:  The parameter name &quot;&quot;&quot;&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/JavaScriptCore/runtime/Structure.h:48:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Source/JavaScriptCore/llint/LowLevelInterpreter.cpp:36:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 27 in 112 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>556430</commentid>
    <comment_count>103</comment_count>
      <attachid>127001</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-14 11:19:01 -0800</bug_when>
    <thetext>Created attachment 127001
the patch

Rebased again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>557036</commentid>
    <comment_count>104</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-15 01:26:48 -0800</bug_when>
    <thetext>Attachment 127001 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
	M	ChangeLog
	A	LayoutTests/fast/css/style-scoped/registering-shadowroot-expected.txt
	A	LayoutTests/fast/css/style-scoped/registering-shadowroot.html
	M	LayoutTests/ChangeLog
	M	Source/WebCore/WebCore.exp.in
	M	Source/WebCore/testing/Internals.cpp
	M	Source/WebCore/testing/Internals.h
	M	Source/WebCore/testing/Internals.idl
	M	Source/WebCore/dom/ShadowRootList.h
	M	Source/WebCore/dom/ShadowRootList.cpp
	M	Source/WebCore/dom/Element.cpp
	M	Source/WebCore/dom/Node.h
	M	Source/WebCore/dom/Element.h
	M	Source/WebCore/dom/NodeRareData.h
	M	Source/WebCore/dom/Node.cpp
	M	Source/WebCore/dom/ElementRareData.h
	M	Source/WebCore/ChangeLog
	M	Source/WebCore/platform/graphics/FontCache.cpp
	M	Source/WebCore/html/HTMLStyleElement.cpp
	M	Source/autotools/symbols.filter
	M	Source/WebKit2/ChangeLog
	M	Source/WebKit2/win/WebKit2CFLite.def
	M	Source/WebKit2/win/WebKit2.def
r107794 = c59b9dab74417b86c7b5b60a4408ab3e5d1659a8 (refs/remotes/origin/master)
First, rewinding head to replay your work on top of it...
Applying: [Mac][Win][WK2] Switch to RFC 6455 protocol for WebSockets
Using index info to reconstruct a base tree...
&lt;stdin&gt;:1578: trailing whitespace.
        
&lt;stdin&gt;:1647: trailing whitespace.
    
&lt;stdin&gt;:1657: trailing whitespace.
    
&lt;stdin&gt;:1672: trailing whitespace.
        return 0;        
&lt;stdin&gt;:1674: trailing whitespace.
    
warning: squelched 7 whitespace errors
warning: 12 lines add whitespace errors.
Falling back to patching base and 3-way merge...
warning: too many files (created: 168755 deleted: 3), skipping inexact rename detection
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/wk2/Skipped
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Auto-merging Source/WebCore/css/CSSCalculationValue.cpp
Auto-merging Source/WebCore/css/CSSCalculationValue.h
Auto-merging Source/WebCore/css/CSSParser.cpp
Auto-merging Source/WebKit/mac/ChangeLog
CONFLICT (content): Merge conflict in Source/WebKit/mac/ChangeLog
Auto-merging Source/WebKit2/ChangeLog
CONFLICT (content): Merge conflict in Source/WebKit2/ChangeLog
Auto-merging Tools/ChangeLog
CONFLICT (content): Merge conflict in Tools/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 [Mac][Win][WK2] Switch to RFC 6455 protocol for WebSockets

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559727</commentid>
    <comment_count>105</comment_count>
      <attachid>127001</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2012-02-17 23:07:06 -0800</bug_when>
    <thetext>Comment on attachment 127001
the patch

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

Okay, this basically all looks good.  Couple small of issues:

Please revert JSActivation.h &amp; Heap.cpp (whitespace only changes).

Please rename Interpreter::enabled() (to make it clear which interpreter this is enabling - e.g. &apos;classicEnabled()&apos; would be fine.)

Per our discussion, I think &apos;Helpers&apos; isn&apos;t a great name, since it isn&apos;t descriptive of what it helps.  I&apos;m happy with your suggested &apos;SlowPaths&apos;.

It&apos;s a shame that LLIntOffsetsExtractor is LLInt specific – it seems this pattern could be generalized to provide offsets into classes for use by the JITs, too, and reduce the friendliness of the codebase.  But I&apos;m not asking for this change in this patch, it&apos;s fine as is.

&gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:70
&gt; +# These declarations must match interpreter/RegisterFile.h.

Are these constants defended anywhere by compile time ASSERTs?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559729</commentid>
    <comment_count>106</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-17 23:11:36 -0800</bug_when>
    <thetext>(In reply to comment #105)
&gt; (From update of attachment 127001 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=127001&amp;action=review
&gt; 
&gt; Okay, this basically all looks good.  Couple small of issues:

Thanks! :-)

&gt; 
&gt; Please revert JSActivation.h &amp; Heap.cpp (whitespace only changes).

Ack.

&gt; 
&gt; Please rename Interpreter::enabled() (to make it clear which interpreter this is enabling - e.g. &apos;classicEnabled()&apos; would be fine.)

Good idea.

&gt; 
&gt; Per our discussion, I think &apos;Helpers&apos; isn&apos;t a great name, since it isn&apos;t descriptive of what it helps.  I&apos;m happy with your suggested &apos;SlowPaths&apos;.

Will do.

&gt; 
&gt; It&apos;s a shame that LLIntOffsetsExtractor is LLInt specific – it seems this pattern could be generalized to provide offsets into classes for use by the JITs, too, and reduce the friendliness of the codebase.  But I&apos;m not asking for this change in this patch, it&apos;s fine as is.

Agree.

&gt; 
&gt; &gt; Source/JavaScriptCore/llint/LowLevelInterpreter.asm:70
&gt; &gt; +# These declarations must match interpreter/RegisterFile.h.
&gt; 
&gt; Are these constants defended anywhere by compile time ASSERTs?

Unfortunately not. :-(  I will add these to LLIntData.cpp, since LLInt initialization funnels through there.

I&apos;d like to come up with a way of having these constants get extracted similarly to how we do offsets and sizes.  I&apos;m not there yet. :-(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559787</commentid>
    <comment_count>107</comment_count>
      <attachid>127706</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-18 11:10:37 -0800</bug_when>
    <thetext>Created attachment 127706
the patch

Rebasing and slowly incorporating Gavin&apos;s comments.  Putting up for EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>559801</commentid>
    <comment_count>108</comment_count>
      <attachid>127707</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-18 12:07:18 -0800</bug_when>
    <thetext>Created attachment 127707
the patch

Addressed Gavin&apos;s concerns.  Will have to do more testing before landing.  Putting up for EWS to let it simmer a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560257</commentid>
    <comment_count>109</comment_count>
      <attachid>127825</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-20 09:15:29 -0800</bug_when>
    <thetext>Created attachment 127825
the patch

Rebasing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560683</commentid>
    <comment_count>110</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-20 22:55:11 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/108309</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560715</commentid>
    <comment_count>111</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-21 00:26:49 -0800</bug_when>
    <thetext>Reopen, because it broke the Qt 64 bit debug build:
/usr/bin/gold: /home/webkitbuildbot/slaves/debug64bit/buildslave/qt-linux-64-debug/build/WebKitBuild/Debug/Source/JavaScriptCore/debug/libJavaScriptCore.a(DFGOperations.o): in function handleHostCall:../../../../Source/JavaScriptCore/dfg/DFGOperations.cpp:761: error: undefined reference to &apos;getHostCallReturnValue&apos;
/usr/bin/gold: /home/webkitbuildbot/slaves/debug64bit/buildslave/qt-linux-64-debug/build/WebKitBuild/Debug/Source/JavaScriptCore/debug/libJavaScriptCore.a(DFGOperations.o): in function handleHostCall:../../../../Source/JavaScriptCore/dfg/DFGOperations.cpp:781: error: undefined reference to &apos;getHostCallReturnValue&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560716</commentid>
    <comment_count>112</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-21 00:27:43 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560732</commentid>
    <comment_count>113</comment_count>
      <attachid>127932</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-21 01:04:27 -0800</bug_when>
    <thetext>Created attachment 127932
fix for elf

Fix for ELF.  Can Qt/Gtk people check if this fixes things?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560735</commentid>
    <comment_count>114</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-21 01:14:20 -0800</bug_when>
    <thetext>Build fix for ELF platforms landed in http://trac.webkit.org/changeset/108323</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560739</commentid>
    <comment_count>115</comment_count>
      <attachid>127932</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-21 01:18:35 -0800</bug_when>
    <thetext>Comment on attachment 127932
fix for elf

Clearing review flag because this was already landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560742</commentid>
    <comment_count>116</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-21 01:23:46 -0800</bug_when>
    <thetext>Reopen again, because build works, but tests crash. :-/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560749</commentid>
    <comment_count>117</comment_count>
      <attachid>127938</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-21 01:33:06 -0800</bug_when>
    <thetext>Created attachment 127938
fix for non-DFG build and DFG crashes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560750</commentid>
    <comment_count>118</comment_count>
      <attachid>127938</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-21 01:47:15 -0800</bug_when>
    <thetext>Comment on attachment 127938
fix for non-DFG build and DFG crashes

It fixed the crashes on Qt Linux debug, and fixes at leasat the non-DFG Qt Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560751</commentid>
    <comment_count>119</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-21 01:49:57 -0800</bug_when>
    <thetext>Fix for non-DFG build and DFG crashed landed in http://trac.webkit.org/changeset/108326</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>560978</commentid>
    <comment_count>120</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2012-02-21 09:59:15 -0800</bug_when>
    <thetext>I rolled this out in r108358 because it broke the 32-bit Lion build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561124</commentid>
    <comment_count>121</comment_count>
      <attachid>128019</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-21 12:15:59 -0800</bug_when>
    <thetext>Created attachment 128019
the patch

Fat binary build fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561584</commentid>
    <comment_count>122</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2012-02-21 21:23:26 -0800</bug_when>
    <thetext>Landed with variety of platform fixes in http://trac.webkit.org/changeset/108444</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121601</attachid>
            <date>2012-01-08 16:32:56 -0800</date>
            <delta_ts>2012-01-08 18:09:50 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_1.diff</filename>
            <type>text/plain</type>
            <size>228103</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0NDE4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUzIEBA
CisyMDEyLTAxLTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SlNDIHNob3VsZCBiZSBhIHRyaXBsZS10aWVyIFZNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAw
Nzk2OTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAor
ICAgICAgICBXT1JLIElOIFBST0dSRVNTLgorCisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2Nr
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBoZWFwL0Fs
bG9jYXRpb25TcGFjZS5oOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGludGVy
cHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogbGxpbnQ6IEFkZGVkLgorICAgICAgICAq
IGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6
cmV0dXJuVG9UaHJvdyk6CisgICAgICAgIChKU0M6OkxMSW50OjpjYWxsVG9UaHJvdyk6CisgICAg
ICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xM
SW50SGVscGVycy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfSEVMUEVS
X0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50SGVscGVycy5oOiBBZGRlZC4KKyAgICAgICAg
KiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc206IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc206IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vYXJtdjcucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20v
YXNtLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2FzdC5yYjogQWRkZWQuCisgICAg
ICAgICogb2ZmbGluZWFzbS9iYWNrZW5kcy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFz
bS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtL2luc3RydWN0aW9ucy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9vZmZzZXRf
ZXh0cmFjdG9yX2NvbnN0YW50cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9vZmZz
ZXRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3BhcnNlci5yYjogQWRkZWQuCisg
ICAgICAgICogb2ZmbGluZWFzbS9yZWdpc3RlcnMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxp
bmVhc20vc2V0dGluZ3MucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vdHJhbnNmb3Jt
LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3g4Ni5yYjogQWRkZWQuCisgICAgICAg
ICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24u
aDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAg
ICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgICogd3RmL1BsYXRm
b3JtLmg6CisKIDIwMTItMDEtMDggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAog
ICAgICAgICBUaGUgSklUJ3MgcHJvdG9jb2wgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZyBzaG91bGQg
YmUgYXZhaWxhYmxlIHRvIG90aGVyIHBhcnRzIG9mIHRoZSBzeXN0ZW0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEwNDQxMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5
KQpAQCAtNzIsOCArNzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgaGFzU2VlblNob3Vs
ZFJlcGF0Y2gKICAgICB9OwogCi0gICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIERGR0Nv
ZGVCbG9ja3M7CisgICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIAogICAgIGVudW0gQ29kZVR5cGUgeyBHbG9iYWxDb2RlLCBFdmFsQ29kZSwgRnVu
Y3Rpb25Db2RlIH07CiAKQEAgLTI1Niw2ICsyNTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXplciwgcHVibGljIFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gQ29weVBhcnNlZEJsb2Nr
VGFnIHsgQ29weVBhcnNlZEJsb2NrIH07CiAgICAgcHJvdGVjdGVkOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHJldmlzaW9uIDEwNDQxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xODQsNiArMTg0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBX
cml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBzdHJ1Y3R1cmVDaGFpbjsKICAgICAgICAg
ICAgIFdyaXRlQmFycmllckJhc2U8SlNDZWxsPiBqc0NlbGw7CiAgICAgICAgICAgICBQcm9wZXJ0
eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jOworICAgICAgICAgICAgdm9pZCogcG9pbnRl
cjsKICAgICAgICAgfSB1OwogICAgICAgICAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgJKHJldmlzaW9uIDEwNDQxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSGVhcDsK
K2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1hcmtlZEJsb2NrOwogCiBjbGFz
cyBBbGxvY2F0aW9uU3BhY2UgewpAQCAtNjgsNiArNjksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
aHJpbmsoKTsKICAgICAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKyAgICAKICAgICBlbnVtIEFsbG9jYXRpb25FZmZvcnQgeyBBbGxvY2F0aW9uTXVz
dFN1Y2NlZWQsIEFsbG9jYXRpb25DYW5GYWlsIH07CiAgICAgCiAgICAgdm9pZCogYWxsb2NhdGUo
TWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAkocmV2aXNpb24gMTA0NDEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNs
YXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBKU1ZhbHVlOwogICAgIGNsYXNzIExpdmVPYmpl
Y3RJdGVyYXRvcjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
TWFya2VkQXJndW1lbnRCdWZmZXI7CiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlOwogICAgIGNsYXNz
IFVTdHJpbmc7CkBAIC0xMjksMTAgKzEzMCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3Rz
KTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAg
ICAgICAgZnJpZW5kIGNsYXNzIEFsbG9jYXRpb25TcGFjZTsKLSAgICAgICAgZnJpZW5kIGNsYXNz
IFNsb3RWaXNpdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOworICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQgY2xhc3Mg
TWFya2VkQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKIAogICAgICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbkV4dHJhQ29zdCA9IDI1NjsKICAgICAgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBtYXhFeHRyYUNvc3QgPSAxMDI0ICogMTAyNDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAx
MDQ0MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgSlNGdW5jdGlvbjsKICAgICBjbGFz
cyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAg
Y2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgY2xhc3Mg
U2NvcGVDaGFpbk5vZGU7CkBAIC05MCw4ICs5MSw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAg
ICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgogICAgICAgICBJbnRlcnByZXRlcigpOwogICAg
ICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2Vw
dGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIExMSW50IHsKKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleGVj
LCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4
ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xv
YmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpKTsKKyAgICAKKyAgICByZXR1cm4gJmdsb2JhbERhdGEtPmV4Y2VwdGlvbkluc3Ry
dWN0aW9uczsKK30KKwordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVj
dGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2Jh
bERhdGEoKTsKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+
ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
KTsKKyAgICAKKyAgICByZXR1cm4gbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZTsK
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNf
aAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIExMSW50IHsKKworLy8gU2F2ZXMgdGhlIGN1cnJlbnQgUEMgaW4gdGhlIGdsb2JhbCBk
YXRhIGZvciBzYWZlLWtlZXBpbmcsIGFuZCBnaXZlcyB5b3UgYSBQQworLy8gdGhhdCB5b3UgY2Fu
IHRlbGwgdGhlIGludGVycHJldGVyIHRvIGdvIHRvLCB3aGljaCB3aGVuIGFkdmFuY2VkIGJldHdl
ZW4gMQorLy8gYW5kIDkgc2xvdHMgd2lsbCBnaXZlIHlvdSBhbiAiaW5zdHJ1Y3Rpb24iIHRoYXQg
dGhyZWFkcyB0byB0aGUgaW50ZXJwcmV0ZXIncworLy8gZXhjZXB0aW9uIGhhbmRsZXIuIE5vdGUg
dGhhdCBpZiB5b3UgZ2l2ZSBpdCB0aGUgUEMgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZywKKy8vIGl0
J3Mgc21hcnQgZW5vdWdoIHRvIGp1c3QgcmV0dXJuIHRoYXQgUEMgd2l0aG91dCBkb2luZyBhbnl0
aGluZyBlbHNlOyB0aGlzCisvLyBsZXRzIHlvdSB0aHJlYWQgZXhjZXB0aW9uIGhhbmRsaW5nIHRo
cm91Z2ggY29tbW9uIGhlbHBlciBmdW5jdGlvbnMgdXNlZCBieQorLy8gb3RoZXIgaGVscGVycy4K
K0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisK
Ky8vIFVzZSB0aGlzIHdoZW4geW91J3JlIHRocm93aW5nIHRvIGEgY2FsbCB0aHVuay4KK3ZvaWQq
IGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnRFeGNlcHRpb25zX2gKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTA5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRI
ZWxwZXJzLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCisjZGVmaW5l
IExMSU5UX09QKGluZGV4KSAoZXhlYy0+cmVnaXN0ZXJzKClbcGNbaW5kZXhdLnUub3BlcmFuZF0p
CisjZGVmaW5lIExMSU5UX09QX0MoaW5kZXgpIChleGVjLT5yKHBjW2luZGV4XS51Lm9wZXJhbmQp
KQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9UV08oZmlyc3QsIHNlY29uZCkgICAgICAgICBcCisg
ICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgdm9pZCogYTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdm9p
ZCogYjsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9IHBhaXI7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpbnQ2NF90IGk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gX191OyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIF9fdS5wYWlyLmEgPSBmaXJzdDsgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIF9fdS5wYWlyLmIgPSBzZWNvbmQ7ICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIHJldHVybiBfX3UuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
fSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5f
VFdPKHBjLCBleGVjKQorCisjZGVmaW5lIExMSU5UX1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fZ2xvYmFs
RGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsgICAgICAgIFwKKyAgICAgICAgX19nbG9iYWxEYXRh
LmV4Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICBcCisgICAgICAgIHBj
ID0gcmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DSEVDS19FWENF
UFRJT04oKSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VMWShl
eGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgeyAgIFwKKyAgICAgICAgICAgIHBjID0gcmV0
dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTExJTlRf
RU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChm
YWxzZSkKKworI2RlZmluZSBMTElOVF9FTkQoKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAg
ICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hp
bGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0JSQU5DSChvcGNvZGUsIGNvbmRpdGlvbikgZG8g
eyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBib29sIF9fY29uZGl0aW9uID0gKGNvbmRp
dGlvbik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChf
X2NvbmRpdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgcGMgKz0gcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5vcGVyYW5kOyAg
ICAgIFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wY29kZSk7
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkK
KworI2RlZmluZSBMTElOVF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAgICAgXAorICAg
ICAgICBKU1ZhbHVlIF9fcmV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgICAgXAorICAgICAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9P
UCgxKSA9IF9fcmV0dXJuVmFsdWU7ICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1Q
TCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVm
aW5lIExMSU5UX0NBTExfRU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RX
TygoZXhlYyksIChjYWxsVGFyZ2V0KSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMs
IHBjLCBleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBf
X2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIElu
c3RydWN0aW9uKiBfX3BjID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBKU0dsb2JhbERhdGEmIF9fZ2xvYmFsRGF0YSA9IChfX2V4ZWMpLT5nbG9iYWxEYXRh
KCk7ICAgIFwKKyAgICAgICAgX19nbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Ro
cm93KTsgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19leGVjLCBj
YWxsVG9UaHJvdyhfX2V4ZWMsIF9fcGMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVm
aW5lIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKSBkbyB7ICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19leGVjID0gKGV4ZWMpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX3Bj
ID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IGlmIChVTkxJS0VMWShfX2V4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fZXhlYywgY2FsbFRv
VGhyb3coX19leGVjLCBfX3BjKSk7ICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZp
bmUgTExJTlRfQ0FMTF9SRVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fcGMg
PSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
dm9pZCogX19jYWxsVGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19leGVjLT5jYWxs
ZXJGcmFtZSgpLCBfX3BjKTsgICAgICAgIFwKKyAgICAgICAgTExJTkdfQ0FMTF9FTkRfSU1QTChf
X2V4ZWMsIF9fY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxl
IChmYWxzZSkKKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKQoreworICAgIC8vIEZJWE1F
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3NyKQoreworICAgIC8vIEZJWE1FCit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpCit7CisgICAgLy8gRklYTUUKK30KKworTExJTlRf
SEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjaykKK3sKKyAgICAvLyBGSVhNRQorfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNrKQoreworICAgIC8vIEZJWE1F
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sK
KyAgICAvLyBGSVhNRQorfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FjdGl2
YXRpb24pCit7CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gSlNBY3RpdmF0aW9uOjpj
cmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihleGVjLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkpKTsKKyAgICBleGVj
LT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChhY3RpdmF0aW9uKSk7Cisg
ICAgTExJTlRfUkVUVVJOKEpTVmFsdWUoYWN0aXZhdGlvbikpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKK3sKKyAgICBMTElOVF9SRVRVUk4oSlNWYWx1
ZShBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAgICBKU0Z1bmN0aW9uKiBj
b25zdHJ1Y3RvciA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIAorI2lmICFBU1NF
UlRfRElTQUJMRUQKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQVNTRVJU
KGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9y
LCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlmCisgICAgCisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgSlNWYWx1ZSBwcm90byA9IExMSU5UX09QKDIpLmpz
VmFsdWUoKTsKKyAgICBpZiAocHJvdG8uaXNPYmplY3QoKSkKKyAgICAgICAgc3RydWN0dXJlID0g
YXNPYmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGVs
c2UKKyAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCktPmdsb2JhbE9iamVj
dC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oY29uc3Ry
dWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jb252ZXJ0X3RoaXMpCit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QKDEpLmpz
VmFsdWUoKTsKKyAgICBBU1NFUlQodjEuaXNQcmltaXRpdmUoKSk7CisgICAgTExJTlRfUkVUVVJO
KHYxLnRvVGhpc09iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXdfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpCit7CisgICAgQXJn
TGlzdCBhcmdMaXN0KCZMTElOVF9PUCgyKSwgcGNbM10udS5vcGVyYW5kKTsKKyAgICBMTElOVF9S
RVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgYXJnTGlzdCkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZlcikKK3sKKyAgICBBcmdMaXN0IGFyZ0xpc3QoZXhl
Yy0+Y29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKHBjWzJdLnUub3BlcmFuZCksIHBjWzNdLnUu
b3BlcmFuZCk7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGFyZ0xpc3Qp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCkKK3sKKyAgICBSZWdF
eHAqIHJlZ0V4cCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZWdleHAocGNbMl0udS5vcGVyYW5kKTsK
KyAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVT
eW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBmbGFnIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1
Y3Rvci4iKSk7CisgICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGV4LT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdFeHApKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25vdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFMTElO
VF9PUCgyKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9lcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OmVx
dWFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgp
LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3N0cmljdGVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6c3Ry
aWN0RXF1YWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdG5lcSkKK3sKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElO
VF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KGpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1Ao
MikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihq
c0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRf
T1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVy
KExMSU5UX09QKDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSArIDEpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3ByZV9kZWMpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVy
KExMSU5UX09QKDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAtIDEpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBMTElO
VF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051
bWJlcihyZXN1bHQgKyAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYykKK3sKKyAgICBkb3VibGUgcmVz
dWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09Q
KDIpID0ganNOdW1iZXIocmVzdWx0IC0gMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJl
c3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihl
eGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKQoreworICAgIExM
SU5UX1JFVFVSTihqc051bWJlcigtTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpCit7CisgICAgSlNWYWx1ZSB2
MSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHYyID0gTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCk7CisgICAgCisgICAgaWYgKHYxLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgTExJ
TlRfUkVUVVJOKAorICAgICAgICAgICAgdjIuaXNTdHJpbmcoKQorICAgICAgICAgICAgPyBqc1N0
cmluZyhleGVjLCBhc1N0cmluZyh2MSksIGFzU3RyaW5nKHYyKSkKKyAgICAgICAgICAgIDoganNT
dHJpbmcoZXhlYywgYXNTdHJpbmcodjEpLCB2Mi50b1ByaW1pdGl2ZVN0cmluZyhleGVjKSkpOwor
ICAgIH0KKyAgICAKKyAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAg
ICAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIodjEuYXNOdW1iZXIoKSArIHYyLmFzTnVtYmVyKCkp
KTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNBZGRTbG93Q2FzZShleGVjLCB2MSwgdjIpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCkKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICogTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3N1YikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNW
YWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIo
ZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RpdikKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8g
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX21vZCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoZm1vZChM
TElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyksIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpLnRvTnVtYmVyKGV4ZWMpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNo
aWZ0KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCku
dG9JbnQzMihleGVjKSA8PCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KQoreworICAgIExMSU5UX1JF
VFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA+PiBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfdXJzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRf
T1AoMikuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQp
Cit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b0lu
dDMyKGV4ZWMpICYgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG9yKQoreworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSB8IExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9iaXR4b3IpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpz
VmFsdWUoKS50b0ludDMyKGV4ZWMpIF4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIo
ZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCkKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIofkxMSU5UX09QKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpCit7
CisgICAgSlNWYWx1ZSBiYXNlVmFsID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworI2lmbmRlZiBO
REVCVUcKKyAgICBUeXBlSW5mbyB0eXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VS
VCghYmFzZVZhbC5pc09iamVjdCgpCisgICAgICAgICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVj
dChiYXNlVmFsKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5j
ZSgpKTsKKyNlbmRpZgorICAgIExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4
ZWMsICJpbnN0YW5jZW9mIiwgYmFzZVZhbCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaW5zdGFuY2VvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGluc3RhbmNlT2ZT
bG93KGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpLCBM
TElOVF9PUCg0KSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZikKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1AoMiku
anNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRlZmluZWQp
Cit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4odi5pc0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKExMSU5UX09QKDIpLmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oTExJTlRfT1AoMikuanNWYWx1ZSgpLmlzTnVtYmVyKCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKGlzSlNTdHJpbmcoZXhlYy0+Z2xvYmFsRGF0YSgpLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCkp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3QpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzT2JqZWN0VHlwZShMTElOVF9PUCgyKS5qc1ZhbHVlKCkp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbikKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUoTExJTlRfT1AoMikuanNWYWx1
ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4pCit7CisgICAgTExJTlRf
UkVUVVJOKG9wSW4oZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1Zh
bHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpCit7CisgICAg
TExJTlRfUkVUVVJOKG9wUmVzb2x2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmll
cihwY1syXS51Lm9wZXJhbmQpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNv
bHZlX3NraXApCit7CisgICAgTExJTlRfUkVUVVJOKAorICAgICAgICBvcFJlc292ZVNraXAoCisg
ICAgICAgICAgICBleGVjLAorICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZp
ZXIocGNbMl0udS5vcGVyYW5kKSwKKyAgICAgICAgICAgIHBjWzNdLnUub3BlcmFuZCkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCit7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBBU1NFUlQoZ2xv
YmFsT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkgPSBwY1syXS51
Lm9wZXJhbmQ7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVyZS5n
ZXQoKTsKKyAgICBpbnQgb2Zmc2V0ID0gcGNbNF0udS5vcGVyYW5kOworICAgIAorICAgIEFTU0VS
VCgoIXN0cnVjdHVyZSkgPT0gKCFvZmZzZXQpKTsKKyAgICBBU1NFUlQoc3RydWN0dXJlICE9IGds
b2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXImIGlkZW50ID0g
Y29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChn
bG9iYWxPYmplY3QpOworICAgIAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5U2xv
dChleGVjLCBpZGVudCwgc2xvdCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90Lmdl
dFZhbHVlKGV4ZWMsIGlkZW50KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgp
ICYmICFnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgp
CisgICAgICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAg
ICAgICAgICBwY1szXS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZ2xvYmFsRGF0
YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUo
KSk7CisgICAgICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIExMSU5UX1JFVFVSTihyZXN1bHQpOworICAgIH0KKyAgICAKKyAg
ICBMTElOVF9USFJPVyhjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAgSWRl
bnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9w
ZXJhbmQpOworICAgIGlmIChwY1szXS51Lm9wZXJhbmQpIHsKKyAgICAgICAgSlNWYWx1ZSBiYXNl
ID0gSlNDOjpyZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCB0cnVl
KTsKKyAgICAgICAgaWYgKCFiYXNlKQorICAgICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJy
b3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAg
ICAgICAgTExJTlRfUkVUVVJOKGJhc2UpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4o
SlNDOjpyZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykK
K3sKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgp
KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIElkZW50aWZpZXImIGlkZW50
ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBp
ZiAoIW9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50KSkKKyAgICAgICAgTExJTlRf
VEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51
c3RyaW5nKCkpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Jlc29sdmVfd2l0aF9iYXNlKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gb3BSZXNvbHZl
V2l0aEJhc2UoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVy
YW5kKSwgTExJTlRfT1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExM
SU5UX09QKDIpID0gcmVzdWx0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCit7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBv
cFJlc29sdmVXaXRoVGhpcyhleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1sz
XS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7
CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9j
ay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
TExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7
CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3Qp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDEpID0gcmVzdWx0
OworCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVh
YmxlKCkKKyAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAm
JiBzbG90LmNhY2VkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpWYWx1ZSkgeworICAg
ICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAg
ICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAg
ICAgIAorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQor
ICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNh
Y2hpbmcoKSkgeworICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAg
ICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwg
c3RydWN0dXJlKTsKKyAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zm
c2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpCit7Cisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlm
aWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5w
dXQoZXhlYywgaWRlbnQsIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAg
ICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCog
YmFzZUNlbGwgPSBiYXNlVmFsZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVj
dHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVy
ZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKQorICAgICAgICAgICAgJiYg
YmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYg
KHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlv
dXNJRCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3Bl
cmFuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OworICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGxsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbDsKKyAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1
cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBz
aXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3RydWN0dXJlLnNl
dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgcGNb
N10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5n
bG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJv
dG90eXBlQ2hhaW4oZXhlYykpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBsbGludF9vcF9wdXRfYnlfaWQ7
CisgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAg
ICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0
cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgcGNbNV11Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9m
ZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
ZGVsX2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2Nr
KCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9P
YmplY3QoZXhlYyk7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRh
YmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRp
ZmllcihwY1szXS51Lm9wZXJhbmQpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAg
ICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAg
IExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9w
ZXJ0eS4iKSk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQor
CitpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJz
Y3JpcHQpCit7CisgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0
LmlzU3RyaW5nKCkpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5h
c0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KGV4ZWMsIGFzU3RyaW5nKHN1YnNjcmlwdCktPnZh
bHVlKGV4ZWMpKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAg
IGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2Ny
aXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTU3RyaW5nKGV4ZWMsIGJhc2VWYWx1ZSkg
JiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICByZXR1
cm4gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAorICAg
ICAgICBpZiAoaXNKU0J5dGVBcnJheShleGVjLCBiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJh
c2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzQnl0ZUFy
cmF5KGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAgcmV0
dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgaSk7CisgICAgfQorICAgIAorICAgIElkZW50aWZpZXIg
cHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICByZXR1cm4gYmFz
ZVZhbHVlLmdldChleGVjLCBwcm9wZXJ0eSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9nZXRfYnlfdmFsKQoreworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChMTElOVF9PUCgyKS5q
c1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9
IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykgeworICAgICAgICBh
cmd1bWVudHMgPSBBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpOwor
ICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgTExJTlRfT1AoMikgPSBh
cmd1bWVudHM7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChhcmd1bWVu
dHMsIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZ2V0X2J5X3BuYW1lKQoreworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChMTElOVF9PUCgy
KS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHV0X2J5X3ZhbCkKK3sKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEg
PSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElO
VF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUCgyKS5q
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QKDMpLmpzVmFsdWUoKTsKKyAg
ICAKKyAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgeworICAgICAgICB1aW50
MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTQXJyYXkoJmds
b2JhbERhdGEsIGJhc2VWYWx1ZSkpIHsKKyAgICAgICAgICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBh
c0FycmF5KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAoanNBcnJheS0+Y2FuU2V0SW5kZXgo
aSkpCisgICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgoZ2xvYmFsRGF0YSwgaSwgdmFs
dWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5k
ZXgoanNBcnJheSwgZXhlYywgaSwgdmFsdWUpOworICAgICAgICAgICAgTExJTlRfRU5EKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoJmdsb2JhbERhdGEsIGJhc2VWYWx1
ZSkKKyAgICAgICAgICAgICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4
KGkpKSB7CisgICAgICAgICAgICBKU0J5dGVBcnJheSoganNCeXRlQXJyYXkgPSBhc0J5dGVBcnJh
eShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkgeworICAgICAg
ICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5hc0ludDMyKCkpOworICAg
ICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5k
ZXgoaSwgdmFsdWUuYXNOdW1iZXIoKSk7CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpLCB2
YWx1ZSk7CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVy
IHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7CisgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZXhlYy0+Y29kZUJsb2Nr
KCktPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIHByb3BlcnR5LCB2
YWx1ZSwgc2xvdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9kZWxfYnlfdmFsKQoreworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMiku
anNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0
KGV4ZWMpOworICAgIAorICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1AoMykuanNWYWx1
ZSgpOworICAgIAorICAgIGJvb2wgY291bGREZWxldGU7CisgICAgCisgICAgdWludDMyX3QgaTsK
KyAgICBpZiAoc3Vic2NyaXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAgY291bGREZWxldGUgPSBi
YXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYmFzZU9iaiwgZXhl
YywgaSk7CisgICAgZWxzZSB7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAg
ICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7
CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERlbGV0ZSA9
IGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGV4ZWMsIHBy
b3BlcnR5KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFyZXN1bHQgJiYgZXhlYy0+Y29kZUJsb2Nr
KCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgIAorICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3B1dF9ieV9pbmRleCkKK3sKKyAgICBMTElOVF9PUCgxKS5qc1ZhbHVlKCkucHV0KGV4ZWMs
IHBjWzJdLnUub3BlcmFuZCwgTExJTlRfT1AoMykuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIpCit7CisgICAgQVNT
RVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFz
ZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRlbnRpZmllciYg
aWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBBU1NF
UlQoTExJTlRfT1AoMykuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIGJhc2VPYmotPm1ldGhv
ZFRhYmxlKCktPmRlZmluZUdldHRlcihiYXNlT2JqLCBleGVjLCBpZGVudCwgYXNPYmplY3QoTExJ
TlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wdXRfc2V0dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5q
c1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChM
TElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2Nr
LT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpz
VmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVT
ZXR0ZXIoYmFzZU9iaiwgZXhlYywgaWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUo
KSksIDApOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
anRydWUpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2p0cnVlLCBMTElOVF9PUCgxKS5qc1ZhbHVl
KCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pmYWxz
ZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamZhbHNlLCAhTExJTlRfT1AoMSkuanNWYWx1ZSgp
LnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcykK
K3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3MsIGpzTGVzczx0cnVlPihleGVjLCBMTElOVF9P
UF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcykKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNz
LCAhanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXIp
Cit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVhdGVyLCBqc0xlc3M8ZmFsc2U+KGV4ZWMsIExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKQoreworICAgIExMSU5UX0JSQU5DSChv
cF9qbmdyZWF0ZXIsICFqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfamxlc3NlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3NlcSwganNMZXNzRXE8dHJ1
ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSkKK3sKKyAgICBMTElO
VF9CUkFOQ0gob3Bfam5sZXNzZXEsICFqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2pncmVhdGVyZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVhdGVy
ZXEsIGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3Jl
YXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmdyZWF0ZXJlcSwgIWpzTGVzc0VxPGZh
bHNlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9pbW0pCit7CisgICAg
SlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHNj
cnV0aW5lZS5pc0RvdWJsZSgpKTsKKyAgICBkb3VibGUgdmFsdWUgPSBzY3J1dGluZWUuYXNEb3Vi
bGUoKTsKKyAgICBpbnQzMl90IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUp
OworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlmICh2YWx1
ZSA9PSBpbnRWYWx1ZSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNv
ZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2RlQmxvY2stPmltbWVkaWF0ZVN3aXRjaEp1bXBU
YWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGludFZhbHVlLCBkZWZhdWx0T2Zm
c2V0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpCit7
CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7CisgICAgaW50
IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKCFzY3J1dGluZWUuaXNT
dHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBlbHNlIHsKKyAgICAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMg
Kz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZz
ZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGluZWUpLT52YWx1ZShleGVjKS5pbXBsKCksIGRlZmF1
bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25ld19mdW5jKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUoKSAhPSBGdW5jdGlv
bkNvZGUKKyAgICAgICAgICAgfHwgIWNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpCisg
ICAgICAgICAgIHx8IGV4ZWMtPnVuY2hlY2tlZFIoY29kZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0
ZXIoKSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9SRVRVUk4oY29kZUJsb2NrLT5mdW5jdGlvbkRl
Y2wocGNbMl0udS5vcGVyYW5kKS0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jX2V4cCkKK3sKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1syXS51Lm9wZXJhbmQpOwor
ICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBmdW5jdGlvbi0+bWFrZShleGVjLCBleGVjLT5zY29wZUNo
YWluKCkpOworICAgIAorICAgIGlmICghZnVuY3Rpb24tPm5hbWUoKS5pc051bGwoKSkgeworICAg
ICAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBmdW5jdGlvblNjb3BlT2JqZWN0ID0gSlNTdGF0aWNT
Y29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKCksIGZ1bmMsIFJlYWRPbmx5
IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGZ1bmMtPnNldFNjb3BlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZnVuYy0+c2NvcGUoKS0+cHVzaChmdW5jdGlvblNjb3BlT2JqZWN0KSk7CisgICAgfQorICAg
IAorICAgIExMSU5UX1JFVFVSTihmdW5jKTsKK30KKworc3RhdGljIEhlbHBlclJldHVyblR5cGUg
aGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIEpT
VmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgRXhlY1N0
YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICBKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworCisgICAgZXhlY0NhbGxlZS0+c2V0
U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVC
bG9jaygwKTsKKworICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIENhbGxE
YXRhIGNhbGxEYXRhOworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNh
bGxlZSwgY2FsbERhdGEpOworICAgIAorICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5
cGVKUyk7CisgICAgCisgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUhvc3QpIHsKKyAg
ICAgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICAgICAgfQorICAgIAor
ICAgICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKTsKKyAgICAgICAgTExJTlRf
Q0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVl
KSk7CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAg
CisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIENvbnN0cnVjdFR5cGUgY29u
c3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEoY2FsbGVlLCBjb25zdHJ1Y3REYXRhKTsKKyAg
ICAKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlSlMpOworICAgIAor
ICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVIb3N0KSB7CisgICAgICAgIGds
b2JhbERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0
RGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICBMTElOVF9DQUxMX1JF
VFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBD
b25zdHJ1Y3RUeXBlTm9uZSk7CisgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRl
Tm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7Cit9CisKK2lubGluZSBIZWxwZXJS
ZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBw
YywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUsIFdy
aXRlQmFycmllckJhc2U8SlNDZWxsPiogZXhwZWN0ZWRGdW5jdGlvbiA9IDAsIHZvaWQqKiBtYWNo
aW5lQ29kZSA9IDApCit7CisgICAgQVNTRVJUKCFleHBlY3RlZEZ1bmN0aW9uID09ICFtYWNoaW5l
Q29kZSk7CisgICAgCisgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVu
Y3Rpb24oY2FsbGVlQXNWYWx1ZSk7CisgICAgaWYgKCFjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkKKyAg
ICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIHBjLCBjYWxsZWVBc1ZhbHVl
LCBraW5kKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxl
ZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGNhbGxlZS0+
c2NvcGVVbmNoZWNrZWQoKSk7CisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxs
ZWUtPmV4ZWN1dGFibGUoKTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0
cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CisgICAgaWYgKGV4ZWN1dGFibGUtPmlz
SG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRK
SVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgZWxzZSB7CisgICAgICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1
bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVjQ2FsbGVlLCBjYWxsZWUtPnNjb3BlKCks
IGtpbmQpOworICAgICAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYyk7Cisg
ICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2Rl
Rm9yKGtpbmQpOworICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMp
KQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklU
Q29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBj
b2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFk
ZHJlc3NGb3JDYWxsKCk7CisgICAgfQorICAgIAorICAgIGlmIChleHBlY3RlZEZ1bmN0aW9uKSB7
CisgICAgICAgIGV4cGVjdGVkRnVuY3Rpb24tPnNldChleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICAgICAg
Km1hY2hpbmVDb2RlID0gY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpOworICAgIH0KKyAgICAK
KyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxl
QWRkcmVzcygpKTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhl
Y1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCkKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFt
ZS4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5l
Y2Vzc2FyeS4KKyAgICAvLyAtIElmIHBvc3NpYmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNh
Y2hlLgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8g
Y2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgSlNWYWx1ZSBjYWxsZWVB
c1ZhbHVlID0gTExJTlRfT1AoMSk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0g
ZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnNl
dENhbGxlZShjYWxsZWVBc1ZhbHVlKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShl
eGVjKTsKKyAgICAKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBj
YWxsZWVBc1ZhbHVlLCAmcGNbNF0udS5qc0NlbGwsICZwY1s1XS51LnBvaW50ZXIpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwo
ZXhlYywgcGMsIENvZGVGb3JDYWxsKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Nv
bnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDb25z
dHJ1Y3QpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKQorewor
ICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lIHdoaWxl
IHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4KKyAgICAvLyAtIEZpZ3VyZSBvdXQg
d2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIFJldHVy
biBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2Fs
bCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKTsK
KyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBsb2FkVmFyYXJncygKKyAgICAgICAg
ZXhlYywgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwKKyAg
ICAgICAgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIHBjWzRd
LnUub3BlcmFuZCk7CisgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpOwor
ICAgIAorICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlZShjYWxsZWVBc1ZhbHVlKTsKKyAgICBleGVj
Q2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICAKKyAgICByZXR1cm4gc2V0VXBDYWxs
KGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NhbGxfZXZhbCkKK3sKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBM
TElOVF9PUCgxKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNb
M10udS5vcGVyYW5kOworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2Jh
bERhdGEoKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4
ZWMpOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlZShjYWxsZWVBc1ZhbHVlKTsKKyAgICBleGVj
Q2FsbGVlLT5zZXRTY29wZUNoYWluKGNhbGxlckZyYW1lLT5zY29wZUNoYWluKCkpOworICAgIGV4
ZWNDYWxsZWUtPnNldFJldHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KGxsaW50X2dl
bmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOwor
ICAgIAorICAgIGlmICghaXNIb3N0RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2
YWwpKQorICAgICAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2Fs
bCwgY2FsbGVlQXNWYWx1ZSk7CisgICAgCisgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZh
bHVlID0gZXZhbChleGVjQ2FsbGVlKTsKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVl
LCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKK3sKKyAg
ICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAg
SlNWYWx1ZSBhY3RpdmF0aW9uVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgaWYg
KCFhY3RpdmF0aW9uVmFsdWUpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnJlZ2lz
dGVycygpW3VubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpXSkgewor
ICAgICAgICAgICAgaWYgKCFleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAg
ICAgICAgICAgICAgYXNBcmd1bWVudHModiktPnRlYXJPZmYoZXhlYy0+Z2xvYmFsRGF0YSgpKTsK
KyAgICAgICAgfQorICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9u
KiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0aW9uKGFjdGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZh
dGlvbi0+dGVhck9mZihleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBl
eGVjLT5yZWdpc3RlcnMoKVt1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVy
YW5kKV0pCisgICAgICAgIGFzQXJndW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIGFjdGl2YXRpb24pOworICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQoreworICAgIEFTU0VSVChl
eGVjLT5jb2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygpICYmICFleGVjLT5jb2RlQmxvY2soKS0+
bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBhc0FyZ3VtZW50cyhleGVjLT5yZWdpc3RlcnMo
KVt1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKV0pLT50ZWFyT2Zm
KGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9zdHJjYXQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMs
ICZMTElOVF9PUCgyKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl90b19wcmltaXRpdmUpCit7CisgICAgTExJTlRfUkVUVVJOKExMSU5UX09QKDIpLmpz
VmFsdWUoKS50b1ByaW1pdGl2ZShleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9nZXRfcG5hbWVzKQoreworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsK
KyAgICBpZiAodi5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBjICs9IHBjWzVdLnUu
b3BlcmFuZDsKKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0
KiBvID0gdi50b09iamVjdChleGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0
cnVjdHVyZSgpOworICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRl
cmF0b3IgPSBzdHJ1Y3R1cmUtPmVudW1lcmF0aW9uQ2FjaGUoKTsKKyAgICBpZiAoIWpzUHJvcGVy
dHlOYW1lSXRlcmF0b3IgfHwganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+Y2FjaGVkUHJvdG90eXBl
Q2hhaW4oKSAhPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpKQorICAgICAgICBqc1By
b3BlcnR5TmFtZUl0ZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMs
IG8pOworICAgIAorICAgIExMSU5UX09QKDEpID0ganNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKKyAg
ICBMTElOVF9PUCgyKSA9IEpTVmFsdWUobyk7CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rlcjo6
d2l0aEludCgwKTsKKyAgICBMTElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJvcGVy
dHlOYW1lSXRlcmF0b3ItPnNpemUoKSk7CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChv
cF9nZXRfcG5hbWVzKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25leHRfcG5hbWUpCit7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChMTElO
VF9PUCgyKS5qc1ZhbHVlKCkpOworICAgIEpTU3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3RyaW5nKExM
SU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgaWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgcHJvcGVydHktPnZhbHVlKGV4ZWMpKSkpIHsKKyAgICAgICAgLy8gR28g
dG8gdGFyZ2V0LgorICAgICAgICBwYyArPSBwY1s2XS51Lm9wZXJhbmQ7CisgICAgfSAvLyBFbHNl
LCBkb24ndCBjaGFuZ2UgdGhlIFBDLCBzbyB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxvb3AuCisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3Bl
KQoreworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVj
dCogbyA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgCisgICAgTExJTlRfT1AoMSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+
c2NvcGVDaGFpbigpLT5wdXNoKG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSkKK3sKKyAgICBleGVjLT5zZXRTY29wZUNo
YWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cG9wKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpCit7CisgICAgZXhlYy0+c2V0
U2NvcGVDaGFpbihjcmVhdGVFeGNlcHRpb25TY29wZShleGVjLCBwYyAtIGV4ZWMtPmNvZGVCbG9j
aygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdykKK3sKKyAgICBMTElOVF9USFJPVyhMTElOVF9P
UCgxKS5qc1ZhbHVlKCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVm
ZXJlbmNlX2Vycm9yKQoreworICAgIExMSU5UX1RIUk9XKGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4
ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvU3RyaW5nKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1ZykKK3sKKyAgICBpbnQgZGVidWdIb29rSUQgPSBwY1sx
XS51Lm9wZXJhbmQ7CisgICAgaW50IGZpcnN0TGluZSA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBp
bnQgbGFzdExpbmUgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLmludGVycHJldGVyLT5kZWJ1ZyhleGVjLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVi
dWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQoreworICAg
ICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSgpKS0+d2lsbEV4ZWN1dGUoZXhl
YywgTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCit7CisgICAgKCpQcm9maWxlcjo6
ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT5kaWRFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEp
LmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpMTEludAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVy
cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVs
cGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50SGVscGVyc19oCisjZGVm
aW5lIExMSW50SGVscGVyc19oCisKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit0eXBlZGVmIGludDY0X3QgSGVscGVy
UmV0dXJuVHlwZTsKKworI2RlZmluZSBMTElOVF9IRUxQRVJfREVDTChuYW1lKSBcCisgICAgZXh0
ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50XyMjbmFtZShFeGVjU3RhdGUqIGV4ZWMsIElu
c3RydWN0aW9uKiBwYykKKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGxvb3Bfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpOworTExJTlRf
SEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3Rf
YXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24p
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
b252ZXJ0X3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbmV3X2FycmF5X2J1ZmZlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4
cCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9lcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9zdHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0bmVx
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9sZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJlX2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcG9zdF9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3Rf
ZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmVnYXRlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
c3ViKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX21vZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hp
ZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfYml0b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
aGVja19oYXNfaW5zdGFuY2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2Yp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZik7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfdW5kZWZpbmVkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFu
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2lzX3N0cmluZyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfaW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcmVzb2x2ZV9nbG9iYWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVf
YmFzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9nZXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9nZXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRf
YnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2RlbF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2dldHRlcik7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcHV0X3NldHRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2pmYWxzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
amxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfamdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRl
cik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3NlcSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfam5sZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9zd2l0Y2hfaW1tKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hf
Y2hhcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0cmluZyk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
d19mdW5jX2V4cCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxs
X3ZhcmFyZ3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9z
dHJjYXQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZ2V0X3BuYW1lcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bmV4dF9wbmFtZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcG9wX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wdXNoX25ld19zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZGVidWcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVf
d2lsbF9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludEhlbHBlcnNf
aAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkFsbG9jYXRpb25TcGFjZS5oIgorI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJIZWFw
LmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKSVRTdGFja0ZyYW1lLmgi
CisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlN0eXBlSW5m
by5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKdW1wVGFibGUu
aCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgor
I2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRl
ICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBDUFUoWDg2
KQorI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01f
WDg2IDAKKyNlbmRpZgorCisjaWYgQ1BVKEFSTXY3KQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12
NyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCisjZW5kaWYKKworI2lmICFB
U1NFUlRTX0RJU0FCTEVECisjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVFNfRU5BQkxFRCAxCisj
ZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRTX0VOQUJMRUQgMAorI2VuZGlmCisKKyNp
ZiBDUFUoQklHX0VORElBTikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAxCisjZWxz
ZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDAKKyNlbmRpZgorCisjaWYgRU5BQkxF
KExMSU5UX09TUl9UT19KSVQpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNl
bHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCitjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3IgeworcHVibGljOgorICAgIHVuc2lnbmVkKiBkdW1teSgpOwor
fTsKKwordW5zaWduZWQqIExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKQoreworI2luY2x1
ZGUgIkxMSW50T2Zmc2V0c0V4dHJhY3Rvci5oIgorICAgIHJldHVybiBleHRyYWN0b3JUYWJsZTsK
K30KKworfQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIxNTkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKwor
IyBDcmFzaCBjb3Vyc2Ugb24gdGhlIGxhbmd1YWdlIHRoYXQgdGhpcyBpcyB3cml0dGVuIGluICh3
aGljaCBJIGp1c3QgY2FsbAorIyAiYXNzZW1ibHkiIGV2ZW4gdGhvdWdoIGl0J3MgbW9yZSB0aGFu
IHRoYXQpOgorIworIyAtIE1vc3RseSBnYXMtc3R5bGUgb3BlcmFuZCBvcmRlcmluZy4gVGhlIGxh
c3Qgb3BlcmFuZCB0ZW5kcyB0byBiZSB0aGUKKyMgICBkZXN0aW5hdGlvbi4gU28gImEgOj0gYiIg
aXMgd3JpdHRlbiBhcyAibW92IGIsIGEiLiBCdXQgdW5saWtlIGdhcywKKyMgICBjb21wYXJpc29u
cyBhcmUgaW4tb3JkZXIsIHNvICJpZiAoYSA8IGIpIiBpcyB3cml0dGVuIGFzCisjICAgImJpbHQg
YSwgYiwgLi4uIi4KKyMKKyMgLSAiYiIgPSBieXRlLCAiaCIgPSAxNi1iaXQgd29yZCwgImkiID0g
MzItYml0IHdvcmQsICJwIiA9IHBvaW50ZXIuCisjICAgQ3VycmVudGx5IHRoaXMgaXMganVzdCAz
Mi1iaXQgc28gImkiIGFuZCAicCIgYXJlIGludGVyY2hhbmdlYWJsZQorIyAgIGV4Y2VwdCB3aGVu
IGFuIG9wIHN1cHBvcnRzIG9uZSBidXQgbm90IHRoZSBvdGhlci4KKyMKKyMgLSBJbiBnZW5lcmFs
LCB2YWxpZCBvcGVyYW5kcyBmb3IgbWFjcm8gaW52b2NhdGlvbnMgYW5kIGluc3RydWN0aW9ucyBh
cmUKKyMgICByZWdpc3RlcnMgKGVnICJ0MCIpLCBhZGRyZXNzZXMgKGVnICI0W3QwXSIpLCBiYXNl
LWluZGV4IGFkZHJlc3NlcworIyAgIChlZyAiN1t0MCwgdDEsIDJdIiksIGFic29sdXRlIGFkZHJl
c3NlcyAoZWcgIjB4YTAwMDAwMDBbXSIpLCBvciBsYWJlbHMKKyMgICAoZWcgIl9mb28iIG9yICIu
Zm9vIikuIE1hY3JvIGludm9jYXRpb25zIGNhbiBhbHNvIHRha2UgYW5vbnltb3VzCisjICAgbWFj
cm9zIGFzIG9wZXJhbmRzLiBJbnN0cnVjdGlvbnMgY2Fubm90IHRha2UgYW5vbnltb3VzIG1hY3Jv
cy4KKyMKKyMgLSBMYWJlbHMgbXVzdCBoYXZlIG5hbWVzIHRoYXQgYmVnaW4gd2l0aCBlaXRoZXIg
Il8iIG9yICIuIi4gIEEgIi4iIGxhYmVsCisjICAgaXMgbG9jYWwgYW5kIGdldHMgcmVuYW1lZCBi
ZWZvcmUgY29kZSBnZW4gdG8gbWluaW1pemUgbmFtZXNwYWNlCisjICAgcG9sbHV0aW9uLiBBICJf
IiBsYWJlbCBpcyBhbiBleHRlcm4gc3ltYm9sIChpLmUuICIuZ2xvYmwiKS4gVGhlICJfIgorIyAg
IG1heSBvciBtYXkgbm90IGJlIHJlbW92ZWQgZHVyaW5nIGNvZGUgZ2VuIGRlcGVuZGluZyBvbiB3
aGV0aGVyIHRoZSBhc20KKyMgICBjb252ZW50aW9ucyBmb3IgQyBuYW1lIG1hbmdsaW5nIG9uIHRo
ZSB0YXJnZXQgcGxhdGZvcm0gbWFuZGF0ZSBhICJfIgorIyAgIHByZWZpeC4KKyMKKyMgLSBBICJt
YWNybyIgaXMgYSBsYW1iZGEgZXhwcmVzc2lvbiwgd2hpY2ggbWF5IGJlIGVpdGhlciBhbm9ueW1v
dXMgb3IKKyMgICBuYW1lZC4gQnV0IHRoaXMgaGFzIGNhdmVhdHMuICJtYWNybyIgY2FuIHRha2Ug
emVybyBvciBtb3JlIGFyZ3VtZW50cywKKyMgICB3aGljaCBtYXkgYmUgbWFjcm9zIG9yIGFueSB2
YWxpZCBvcGVyYW5kcywgYnV0IGl0IGNhbiBvbmx5IHJldHVybgorIyAgIGNvZGUuIEJ1dCB5b3Ug
Y2FuIGRvIFR1cmluZy1jb21wbGV0ZSB0aGluZ3MgdmlhIGNvbnRpbnVhdGlvbiBwYXNzaW5nCisj
ICAgc3R5bGU6ICJtYWNybyBmb28gKGEsIGIpIGIoYSkgZW5kIGZvbyhmb28sIGZvbykiLiBBY3R1
YWxseSwgZG9uJ3QgZG8KKyMgICB0aGF0LCBzaW5jZSB5b3UnbGwganVzdCBjcmFzaCB0aGUgYXNz
ZW1ibGVyLgorIworIyAtIEFuICJpZiIgaXMgYSBjb25kaXRpb25hbCBvbiBzZXR0aW5ncy4gQW55
IGlkZW50aWZpZXIgc3VwcGxpZWQgaW4gdGhlCisjICAgcHJlZGljYXRlIG9mIGFuICJpZiIgaXMg
YXNzdW1lZCB0byBiZSBhICNkZWZpbmUgdGhhdCBpcyBhdmFpbGFibGUKKyMgICBkdXJpbmcgY29k
ZSBnZW4uIFNvIHlvdSBjYW4ndCB1c2UgImlmIiBmb3IgY29tcHV0YXRpb24gaW4gYSBtYWNybywg
YnV0CisjICAgeW91IGNhbiB1c2UgaXQgdG8gc2VsZWN0IGRpZmZlcmVudCBwaWVjZXMgb2YgY29k
ZSBmb3IgZGlmZmVyZW50CisjICAgcGxhdGZvcm1zLgorIworIyAtIEFyZ3VtZW50cyB0byBtYWNy
b3MgZm9sbG93IGxleGljYWwgc2NvcGluZyByYXRoZXIgdGhhbiBkeW5hbWljIHNjb3BpbmcuCisj
ICAgQ29uc3QncyBhbHNvIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgYW5kIG1heSBvdmVycmlkZSAo
aGlkZSkgYXJndW1lbnRzCisjICAgb3Igb3RoZXIgY29uc3RzLiBBbGwgdmFyaWFibGVzIChhcmd1
bWVudHMgYW5kIGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gb3BlcmFuZHMuIEFkZGl0
aW9uYWxseSwgYXJndW1lbnRzIChidXQgbm90IGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAg
dG8gbWFjcm9zLgorCisKKyMgVGhlc2UgZGVjbGFyYXRpb25zIG11c3QgbWF0Y2ggaW50ZXJwcmV0
ZXIvUmVnaXN0ZXJGaWxlLmguCitjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gNDgKK2NvbnN0
IEFyZ3VtZW50Q291bnQgPSAtNDgKK2NvbnN0IENhbGxlckZyYW1lID0gLTQwCitjb25zdCBDYWxs
ZWUgPSAtMzIKK2NvbnN0IFNjb3BlQ2hhaW4gPSAtMjQKK2NvbnN0IFJldHVyblBDID0gLTE2Citj
b25zdCBDb2RlQmxvY2sgPSAtOAorCisjIERlY2xhcmUgc29tZSBhbGlhc2VzIGZvciB0aGUgcmVn
aXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAorCisjIE9mZnNldHMgbmVlZGVkIGZv
ciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRpb24uCitpZiBCSUdfRU5ESUFOCisg
ICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSA0CitlbHNl
CisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSAwCitl
bmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCitjb25zdCBJbnQzMlRhZyA9
IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51bGxUYWcgPSAtMworY29uc3QgVW5k
ZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQorY29uc3QgRW1wdHlWYWx1ZVRhZyA9
IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29uc3QgTG93ZXN0VGFnID0gRGVsZXRl
ZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25zdCBTdHJpbmdUeXBlID0gNQorY29u
c3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFncyBjb25zdGFudHMuCitjb25zdCBNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMgor
Y29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDgKKworIyBIZWFwIGFsbG9jYXRp
b24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0gMQorCisj
IEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3QgRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNvbnN0YW50cy4KK2NvbnN0IEdsb2Jh
bENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0IEZ1bmN0aW9uQ29kZSA9IDIKKwor
IyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0aGUgYXJndW1lbnQgY291
bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRhZ09mZnNldAorCisj
IFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25zdCBWZWN0b3JTaXplT2Zmc2V0ID0g
MAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisjIFN0cmluZyBmbGFncy4KK2NvbnN0
IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxpdGllcworbWFjcm8gY3Jhc2goKQor
ICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3ZlIDAsIHQwCisgICAgY2FsbCB0MAor
ZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAgaWYgQVNTRVJUU19FTkFCTEVECisg
ICAgICAgIGFzc2VydGlvbigub2spCisgICAgICAgIGNyYXNoKCkKKyAgICAub2s6CisgICAgZW5k
CitlbmQKKworbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9u
UmVnaXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBsciwgZGVzdGluYXRpb25SZWdp
c3RlcgorICAgIGVsc2lmIFg4NgorICAgICAgICBwb3AgZGVzdGluYXRpb25SZWdpc3RlcgorICAg
IGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyByZXN0b3JlUmV0dXJu
QWRkcmVzc0JlZm9yZVJldHVybihzb3VyY2VSZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAg
ICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgorICAgIGVsc2lmIFg4NgorICAgICAgICBwdXNoIHNv
dXJjZVJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21h
Y3JvIGRpc3BhdGNoKGFkdmFuY2UpCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMKKyAgICBqbXAg
W1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQorICAgIGxvYWRpIHBj
T2Zmc2V0LCB0MAorICAgIGxzaGlmdGkgMiwgdDAKKyAgICBhZGRwIHQwLCBQQworICAgIGptcCBb
UENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIGxvYWRpIEFyZ3VtZW50
Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGND
YWxsMihmdW5jdGlvbiwgYXJnMSwgYXJnMikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGFy
ZzEsIHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9r
ZSBhcmcyLCAwCisgICAgICAgIHBva2UgYXJnMSwgMQorICAgIGVsc2UKKyAgICAgICAgZXJyb3IK
KyAgICBlbmQKKyAgICBjYWxsIGZ1bmN0aW9uCitlbmQKKworbWFjcm8gY2FsbEhlbHBlcihoZWxw
ZXIpCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQwLCBQQworICAgIG1v
dmUgdDEsIGNmcgorZW5kCisKK21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBpZiBFWEVDVVRJ
T05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkKKyAgICBlbmQKK2Vu
ZAorCisjIENhbGwgYSBoZWxwZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3JvIGNhbGxDYWxsSGVs
cGVyKGFkdmFuY2UsIGhlbHBlciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDLCB0
MAorICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgY0Nh
bGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBhY3Rpb24odDApCitl
bmQKKworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikKKyAgICBjYWxsQ2Fs
bEhlbHBlcigKKyAgICAgICAgYWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAorICAgICAgICBtYWNy
byAoY2FsbGVlKQorICAgICAgICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAgICAgIGRpc3BhdGNo
QWZ0ZXJDYWxsKCkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVQo
aW5jcmVtZW50LCBhY3Rpb24pCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHQwCisgICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENvZGVCbG9jazo6bV9l
eGVjdXRlQ291bnRlclt0MF0sIC5kb25lCisgICAgICAgIGFjdGlvbigpCisgICAgLmRvbmU6Cisg
ICAgZW5kCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xvZ3VlKCkKKyAgICBj
aGVja1N3aXRjaFRvSklUKAorICAgICAgICA1LAorICAgICAgICBtYWNybyAoKQorICAgICAgICAg
ICAgY0NhbGwyKF9sbGludF9lbnRyeV9vc3IsIGNmciwgUEMpCisgICAgICAgICAgICBtb3ZlIHQx
LCBjZnIKKyAgICAgICAgICAgIGptcCB0MAorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hl
Y2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEs
CisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBjQ2FsbDIoX2xsaW50X2xvb3Bfb3NyLCBj
ZnIsIFBDKQorICAgICAgICAgICAgbW92ZSB0MSwgY2ZyCisgICAgICAgICAgICBqbXAgdDAKKyAg
ICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisg
ICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMTAsCisgICAgICAgIG1hY3JvICgpCisgICAg
ICAgICAgICBjYWxsSGVscGVyKF9sbGludF9yZXBsYWNlKQorICAgICAgICBlbmQpCitlbmQKKwor
bWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoaW5kZXgpCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmli
IGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgb2sgZW5kKQorZW5kCisKKyMgSW5k
ZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBp
cyBub3QKKyMgY2hhbmdlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUoaW5kZXgsIHRh
ZywgcGF5bG9hZCkKKyAgICBiaWFlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgs
IC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9u
ZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3Bh
eWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRo
ZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAor
ICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9hZHAgVGFnT2Zmc2V0W3BheWxvYWQsIGlu
ZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0s
IHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQgbWF5IGJlIHRoZSBz
YW1lIHJlZ2lzdGVyLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRh
ZywgcGF5bG9hZCkKKyAgICBiaWFlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgs
IC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9u
ZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YWcKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9h
ZF0sIHRhZworICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXgg
Y29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRo
ZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4KSA8PCAzLgorICAgIGxzaGlmdGkgMywgaW5kZXgKKyAgICBhZGRwIGluZGV4LCB0
YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQKKyAgICBsb2FkcCBUYWdP
ZmZzZXRbdGFnXSwgdGFnCisuZG9uZToKK2VuZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpCisgICAgYmlhZXEg
aW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBiaW5lcSBU
YWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIGV4cGVjdGVkVGFnLCBzbG93CisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0
YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBw
YXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBj
b250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhl
biB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXgpIDw8IDMuCisgICAgYmluZXEgVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwg
ZXhwZWN0ZWRUYWcsIHNsb3cKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4
LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworbWFjcm8gd3JpdGVCYXJyaWVyKHRhZywgcGF5
bG9hZCkKKyAgICAjIE5vdGhpbmcgdG8gZG8gc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGdlbmVyYXRp
b25hbCBvciBpbmNyZW1lbnRhbCBjb2xsZWN0b3IuCitlbmQKKworIyBFbnRyeXBvaW50cyBpbnRv
IHRoZSBpbnRlcnByZXRlcgorCisjIERvIHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8gZXhl
Y3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENvZGVCbG9jayoKKyMgaW4gdDEK
K21hY3JvIHByb2xvZ3VlKG9mZnNldE9mQ29kZUJsb2NrKQorICAgIHByZXNlcnZlUmV0dXJuQWRk
cmVzc0FmdGVyQ2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgY2FsbCBmcmFtZS4KKyAg
ICBzdG9yZXAgdDIsIFJldHVyblBDW2Nmcl0KKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDEKKyAg
ICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MQorICAgIGxvYWRwIG9mZnNl
dE9mQ29kZUJsb2NrW3QxXSwgdDEKKyAgICBzdG9yZXAgdDEsIENvZGVCbG9ja1tjZnJdCisgICAg
CisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlv
bnNbdDFdLCB0MAorICAgIGxvYWRwIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCitlbmQKKwor
bWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbigpCisgICAgIyBQcm9maWxlIHRoZSBhcmd1bWVu
dHMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hvaWNlIGJ1dCB0byBkbyB0aGlzLgorICAg
IGxvYWRpIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgdDAKKyAgICBidGl6IHQwLCAu
YXJndW1lbnRQcm9maWxlRG9uZQorICAgIGxzaGlmdGkgMywgdDAKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QxXSwgdDMK
Ky5hcmd1bWVudFByb2ZpbGVMb29wOgorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwXSwgdDIK
KyAgICBzdG9yZWkgdDIsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3QzXQor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MF0sIHQyCisgICAgc3RvcmVpIHQyLCBWYWx1
ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgYWRkcCBzaXplb2Yg
VmFsdWVQcm9maWxlLCB0MworICAgIGJzdWJpbnogOCwgdDAsIC5hcmd1bWVudFByb2ZpbGVMb29w
CisuYXJndW1lbnRQcm9maWxlRG9uZToKKyAgICAKKyAgICAjIENoZWNrIHN0YWNrIGhlaWdodC4K
KyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVnaXN0ZXJzW3QxXSwgdDAKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQyCisgICAgbG9hZHAgSlNHbG9iYWxE
YXRhOjptX2ludGVycHJldGVyW3QyXSwgdDIKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRkcCB0
MCwgY2ZyLCB0MAorICAgIGJwYWVxIEludGVycHJldGVyOjptX3JlZ2lzdGVyRmlsZSArIFJlZ2lz
dGVyRmlsZTo6bV9lbmRbdDJdLCB0MCwgLnN0YWNrSGVpZ2h0T0sKKworICAgICMgU3RhY2sgaGVp
Z2h0IGNoZWNrIGZhaWxlZCAtIG5lZWQgdG8gY2FsbCBhIGhlbHBlci4KKyAgICBjYWxsSGVscGVy
KF9sbGludF9yZWdpc3Rlcl9maWxlX2NoZWNrKQorLnN0YWNrSGVpZ2h0T0s6CitlbmQKKworbWFj
cm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgaGVscGVyKQorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisgICAgYmllcSB0MCwgQ29kZUJsb2Nr
OjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKKyAgICBjYWxsSGVscGVyKGhlbHBlcikK
KyAgICBqbXAgZG9uZUxhYmVsCitlbmQKKworX2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6CisgICAg
cHJvbG9ndWUoUHJvZ3JhbUV4ZWN1dGFibGU6Om1fcHJvZ3JhbUNvZGVCbG9jaykKKyAgICBjaGVj
a1N3aXRjaFRvSklURm9yUHJvbG9ndWUoKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2V2
YWxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoRXZhbEV4ZWN1dGFibGU6Om1fZXZhbENvZGVCbG9j
aykKKyAgICBjaGVja1N3aXRjaFRvSklURm9yUHJvbG9ndWUoKQorICAgIGRpc3BhdGNoKDApCisK
KworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKEZ1bmN0
aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsKQorLmZ1bmN0aW9uRm9yQ2FsbEJlZ2lu
OgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JQ
cm9sb2d1ZSgpCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoRnVuY3Rpb25FeGVjdXRhYmxlOjptX2Nv
ZGVCbG9ja0ZvckNvbnN0cnVjdCkKKy5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgorICAgIGZ1
bmN0aW9uSW5pdGlhbGl6YXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JQcm9sb2d1ZSgp
CisgICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
X2NoZWNrOgorICAgIHByb2xvZ3VlKEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JD
YWxsKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9sbGlu
dF9oZWxwZXJfY2FsbF9hcml0eUNoZWNrKQorCisKK19sbGludF9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2Rl
QmxvY2tGb3JDYWxsKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RCZWdpbiwgX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKKworIyBJbnN0cnVj
dGlvbiBpbXBsZW1lbnRhdGlvbnMKKworX2xsaW50X29wX2VudGVyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkaSBDb2RlQmxvY2s6
Om1fbnVtVmFycywgdDIKKyAgICBidGl6IC5vcEVudGVyRG9uZQorICAgIG1vdmUgVW5kZWZpbmVk
VGFnLCB0MAorICAgIG1vdmUgMCwgdDEKKy5vcEVudGVyTG9vcDoKKyAgICBzdWJpIDEsIHQyCisg
ICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBidGlueiB0MiwgLm9wRW50ZXJMb29wCisub3BFbnRl
ckRvbmU6CisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRv
bmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pCisub3BD
cmVhdGVBY3RpdmF0aW9uRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbml0
X2xhenlfcmVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVp
IDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9jcmVhdGVfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcs
IC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3Jl
YXRlX2FyZ3VtZW50cykKKy5vcENyZWF0ZUFyZ3VtZW50c0RvbmU6CisgICAgZGlzcGF0Y2goMikK
KworCittYWNybyBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kZXgsIHZwdHJPZmZz
ZXQsIG9mZnNldE9mUHJvcGVydHlTdG9yYWdlLCBzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaDEs
IHNjcmF0Y2gyLCBzbG93Q2FzZSkKKyAgICBjb25zdCBvZmZzZXRPZk15U2l6ZUNsYXNzID0gSlNH
bG9iYWxEYXRhOjpoZWFwICsgSGVhcDo6bV9vYmplY3RTcGFjZSArIEFsbG9jYXRpb25TcGFjZTo6
bV9tYXJrZWRTcGFjZSArIE1hcmtlZFNwYWNlOjptX3ByZWNpc2VTaXplQ2xhc3NlcyArIHNpemVD
bGFzc0luZGV4ICogc2l6ZW9mIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MKKyAgICAKKyAgICAjIEZJ
WE1FOiB3ZSBjYW4gZ2V0IHRoZSBnbG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRoZSBzdGFj
ay4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2NyYXRjaDEKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fZ2xvYmFsRGF0YVtzY3JhdGNoMV0sIHNjcmF0Y2gxCisgICAgCisgICAgIyBHZXQgdGhl
IG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuICAgIAorICAgIGxvYWRwIG9mZnNldE9mTXlTaXpl
Q2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXSwg
cmVzdWx0CisgICAgYnRweiByZXN1bHQsIHNsb3dDYXNlCisgICAgCisgICAgIyBSZW1vdmUgdGhl
IG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCisgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0Y2gy
CisgICAgc3RvcmVwIHNjcmF0Y2gxLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6
OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0KKworICAgICMgSW5pdGlhbGl6ZSB0
aGUgb2JqZWN0LgorICAgIGxvYWRwIHZwdHJPZmZzZXRbc2NyYXRjaDFdLCBzY3JhdGNoMgorICAg
IHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3VsdF0KKyAgICBzdG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6
Om1fc3RydWN0dXJlW3Jlc3VsdF0KKyAgICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1faW5oZXJpdG9y
SURbcmVzdWx0XQorICAgIGFkZHAgc2l6ZW9mIEpTT2JqZWN0LCByZXN1bHQsIHNjcmF0Y2gxCisg
ICAgc3RvcmVwIHNjcmF0Y2gxLCBvZmZzZXRPZlByb3BlcnR5U3RvcmFnZVtyZXN1bHRdCitlbmQK
KworX2xsaW50X29wX2NyZWF0ZV90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDEKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlw
ZVt0MV0sIE9iamVjdFR5cGUsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6
Om1faW5oZXJpdG9ySURbdDBdLCB0MgorICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93Cisg
ICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNH
bG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0VlB0ciwgSlNGaW5hbE9iamVjdDo6bV9wcm9wZXJ0eVN0
b3JhZ2UsIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9w
Q3JlYXRlVGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV90aGlz
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRPZmZzZXQg
KyBDYWxsZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0
Y2goMikKKworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENl
bGxUYWcsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYmJi
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBl
LCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0VGhpc1Ns
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAgICBkaXNw
YXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xv
YmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVj
dFN0cnVjdHVyZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmpl
Y3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0VlB0ciwgSlNGaW5h
bE9iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2UsIHQxLCB0MCwgdDIsIHQzLCAub3BOZXdPYmplY3RT
bG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAg
ICBkaXNwYXRjaCgyKQorCisub3BOZXdPYmplY3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9uZXdfb2JqZWN0KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX25ld19h
cnJheToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X25ld19hcnJheSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfYXJyYXlfYnVm
ZmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
bmV3X2FycmF5X2J1ZmZlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfcmVn
ZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
bmV3X3JlZ2V4cCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9tb3Y6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRh
Z09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25vdDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYXNz
ZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0Mgor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgYmluZXEgdDIsIEJv
b2xlYW5UYWcsIC5vcE5vdFNsb3cKKyAgICB4b3JpIDEsIHQzCisgICAgc3RvcmVpIHQyLCBUYWdP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOb3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9ub3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZXE6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgYXNzZXJ0Tm90Q29u
c3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDIsIHQzLCAub3BFcVNs
b3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BFcVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRh
ZywgLm9wRXFTbG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2llcSB0MCwgdDEsIHQwCisg
ICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEVxU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZXEpCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcEVxTnVsbEltbWVk
aWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRibnogU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkLCB0MQorICAgIGptcCAub3BFcU51bGxOb3RJbW1lZGlhdGUKKy5vcEVxTnVsbElt
bWVkaWF0ZToKKyAgICBjaWVxIHQxLCBOdWxsVGFnLCB0MgorICAgIGNpZXEgdDEsIFVuZGVmaW5l
ZFRhZywgdDEKKyAgICBvcmkgdDIsIHQxCisub3BFcU51bGxOb3RJbW1lZGlhdGU6CisgICAgc3Rv
cmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5
bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25l
cToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBh
c3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQy
CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0Miwg
dDMsIC5vcE5lcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFTbG93CisgICAgYmli
IHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaW5l
cSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4
XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNo
KDQpCisKKy5vcE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lcSkKKyAg
ICBkaXNwYXRjaCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251bGw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFz
c2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBD
ZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2Zs
YWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wTmVxTnVsbE5v
dEltbWVkaWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBjaW5lcSB0MSwgTnVsbFRhZywg
dDIKKyAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIGFuZGkgdDIsIHQxCisub3BO
ZXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBk
aXNwYXRjaCgzKQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBoZWxwZXIp
CisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MiwgdDMsIC5vcFN0cmljdGVxU2xvdworICAg
IGJpYiB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBDZWxsVGFnLCAubm90U3Ry
aW5nCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQzCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZv
ICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5ub3RTdHJpbmcKKyAgICBiYmVx
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDNdLCBTdHJpbmdUeXBl
LCAuc2xvdworLm5vdFN0cmluZzoKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBlcXVhbGl0eU9w
ZXJhdGlvbih0MCwgdDEsIHQwKQorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBk
aXNwYXRjaCg0KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRj
aCg0KQorZW5kCisKK19sbGludF9vcF9zdHJpY3RlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpZXEgbGVmdCwgcmlnaHQs
IHJlc3VsdCBlbmQsIF9sbGludF9oZWxwZXJfc3RyaWN0ZXEpCisKKworX2xsaW50X29wX3N0cmlj
dG5lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJp
Z2h0LCByZXN1bHQpIGNpbmVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVscGVy
X3N0cmljdG5lcSkKKworCitfbGxpbnRfb3BfbGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3MpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfbGVzc2VxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dyZWF0
ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9n
cmVhdGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dyZWF0ZXJlcToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dyZWF0ZXJlcSkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcmVfaW5jOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIEludDMyVGFnLCAub3BQcmVJbmNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDEKKyAgICBiYWRkaW8gMSwgdDEsIC5vcFByZUluY1Nsb3cKKyAgICBzdG9yZWkg
dDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVJ
bmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfaW5jKQorICAgIGRpc3Bh
dGNoKDIpCisKKworX2xsaW50X29wX3ByZV9kZWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJU
YWcsIC5vcFByZURlY1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MQorICAgIGJzdWJpbyAxLCB0MSwgLm9wUHJlRGVjU2xvdworICAgIHN0b3JlaSB0MSwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcFByZURlY1Nsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3ByZV9kZWMpCisgICAgZGlzcGF0Y2goMikKKwor
CitfbGxpbnRfb3BfcG9zdF9pbmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhb
UENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgSW50MzJUYWcsIC5vcFBvc3RJbmNTbG93CisgICAgYmllcSB0MCwgdDEsIC5vcFBvc3RJ
bmNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBtb3Zl
IHQyLCB0MworICAgIGJhZGRpbyAxLCB0MywgLm9wUG9zdEluY1Nsb3cKKyAgICBzdG9yZWkgSW50
MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQor
Lm9wUG9zdEluY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKworLm9wUG9zdEluY1Nsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfaW5jKQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX3Bvc3RfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIEludDMyVGFnLCAub3BQb3N0RGVjU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0RGVj
RG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0
MiwgdDMKKyAgICBic3ViaW8gMSwgdDMsIC5vcFBvc3REZWNTbG93CisgICAgc3RvcmVpIEludDMy
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5v
cFBvc3REZWNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3REZWNTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2RlYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF90b19qc251bWJlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgYmllcSB0MiwgSW50MzJUYWcsIC5vcFRvSnNudW1iZXJJ
c0ludAorICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BUb0pzbnVtYmVyU2xvdworLm9w
VG9Kc251bWJlcklzSW50OgorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykK
KworLm9wVG9Kc251bWJlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RvX2pz
bnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25lZ2F0ZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisg
ICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgYmluZXEg
dDEsIEludDMyVGFnLCAub3BOZWdhdGVTcmNOb3RJbnQKKyAgICBidGl6IHQyLCAweDdmZmZmZmZm
LCAub3BOZWdhdGVTbG93CisgICAgbmVnaSB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zm
c2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhd
CisgICAgZGlzcGF0Y2goMykKKy5vcE5lZ2F0ZVNyY05vdEludDoKKyAgICBiaWEgdDEsIExvd2Vz
dFRhZywgLm9wTmVnYXRlU2xvdworICAgIHhvcmkgMHg4MDAwMDAwMCwgdDEKKyAgICBzdG9yZWkg
dDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5lZ2F0ZVNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX25lZ2F0ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGJp
bmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRp
b24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGFzc2VydE5vdENvbnN0
YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9w
MU5vdEludAorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGxvYWRpIDRb
UENdLCB0MgorICAgIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0MywgdDEsIHQwLCAuc2xvdywg
dDIpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQg
aXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291bGQgYmUgYW55
dGhpbmcuCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQzLCBMb3dlc3RU
YWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93Cisg
ICAgY2kyZCB0MSwgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRv
dWJsZToKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGxvYWRp
IDRbUENdLCB0MQorICAgIGZpaTJkIHQwLCB0MiwgZnQwCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0
MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisK
Ky5vcDJOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50LCB0
aGUgc2Vjb25kIG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QuCisgICAgbG9hZGkgNFtQQ10sIHQy
CisgICAgYmlhIHQzLCBMb3dlc3RUYWcsIC5zbG93CisgICAgY2kyZCB0MCwgZnQwCisgICAgZmlp
MmQgdDEsIHQzLCBmdDEKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVk
IGZ0MSwgW2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhl
bHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAorCittYWNybyBiaW5hcnlPcChpbnRl
Z2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBiaW5hcnlPcEN1c3Rv
bVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRl
eCkKKyAgICAgICAgICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCisgICAg
ICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAg
ICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAg
IGVuZCwKKyAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCitlbmQKKworX2xsaW50X29w
X2FkZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgc2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9hZGQpCisKKworX2xsaW50X29wX211bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYm11bGlv
IGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBtdWxk
IGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9tdWwpCisKKworX2xsaW50
X29wX3N1YjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1YmlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9zdWIpCisKKworX2xsaW50X29wX2RpdjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBs
ZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjaTJkIGxlZnQsIGZ0MAorICAg
ICAgICAgICAgY2kyZCByaWdodCwgZnQxCisgICAgICAgICAgICBkaXZkIGZ0MCwgZnQxCisgICAg
ICAgICAgICBiY2QyaSBmdDEsIHJpZ2h0LCAubm90SW50CisgICAgICAgICAgICBzdG9yZWkgaW50
MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHJpZ2h0
LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBqbXAgLmRvbmUKKyAg
ICAgICAgLm5vdEludDoKKyAgICAgICAgICAgIHN0b3JlZCBmdDEsIFtjZnIsIGluZGV4LCA4XQor
ICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQp
IGRpdmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2RpdikKKworCitf
bGxpbnRfb3BfbW9kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfbW9kKQorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8gYml0T3Aob3BlcmF0aW9u
LCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBhc3NlcnROb3RDb25zdGFu
dCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93
CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAg
IG9wZXJhdGlvbih0MSwgdDAsIC5zbG93KQorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2Nmciwg
dDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlz
cGF0Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2go
NCkKK2VuZAorCitfbGxpbnRfb3BfbHNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBi
aXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBsc2hpZnRpIGxlZnQsIHJp
Z2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9sc2hpZnQpCisKKworX2xsaW50X29wX3Jz
aGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgc2xvdykgcnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfcnNoaWZ0KQorCisKK19sbGludF9vcF91cnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAg
ICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAs
IHNsb3cKKyAgICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3Vyc2hpZnQpCisKKwor
X2xsaW50X29wX2JpdGFuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5kaSBsZWZ0LCByaWdodCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfYml0YW5kKQorCisKK19sbGludF9vcF9iaXR4b3I6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdHhvcikK
KworCitfbGxpbnRfb3BfYml0b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIG9yaSBsZWZ0LCByaWdodCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfYml0b3IpCisKKworX2xsaW50X29wX2JpdG5vdDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDEpCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQzCisgICAgYmlu
ZXEgdDIsIEludDMyVGFnLCAub3BCaXRub3RTbG93CisgICAgbm90aSB0MworICAgIHN0b3JlaSB0
MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wQml0bm90U2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfYml0bm90KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X2NoZWNrX2hhc19pbnN0YW5jZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdworICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9m
bGFnc1t0MF0sIEltcGxlbWVudHNIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cK
KyAgICBkaXNwYXRjaCgyKQorCisub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQorICAgIGRpc3BhdGNoKDIpCisK
KworX2xsaW50X29wX2luc3RhbmNlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgQ2hl
Y2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZp
b3IuCisgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAx
MltQQ10sIHQwCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwg
dDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3Qw
XSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICAK
KyAgICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFu
dCh0MCkKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MSkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIENlbGxUYWcsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDEsIDhdLCBDZWxsVGFnLCAub3BJbnN0YW5jZW9mU2xvdworICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQxCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MV0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgCisgICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90
b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3ZlIDEsIHQwCisub3BJbnN0YW5jZW9mTG9vcDoKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6
Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldCwgdDIKKyAgICBicGVxIHQyLCB0MSwgLm9wSW5z
dGFuY2VvZkRvbmUKKyAgICBidGlueiB0MiwgLm9wSW5zdGFuY2VvZkxvb3AKKworICAgIG1vdmUg
MCwgdDAKKy5vcEluc3RhbmNlb2ZEb25lOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0K
KyAgICBkaXNwYXRjaCg1KQorCisub3BJbnN0YW5jZW9mU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfaW5zdGFuY2VvZikKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF90
eXBlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl90eXBlb2YpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfdW5kZWZpbmVkOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfdW5k
ZWZpbmVkKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX2Jvb2xlYW46CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19ib29sZWFu
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX251bWJlcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX251bWJlcikKKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19zdHJpbmc6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19zdHJpbmcpCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfaXNfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfb2JqZWN0KQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX2lzX2Z1bmN0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfaXNfZnVuY3Rpb24pCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfaW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9pbikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9yZXNvbHZlOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZSkKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX3NraXA6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3NraXApCisgICAg
ZGlzcGF0Y2goMykKKworCittYWNybyByZXNvbHZlR2xvYmFsKHNsb3cpCisgICAgIyBPcGVyYW5k
cyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2Fk
LgorICAgICMgOFtQQ10gICBQcm9wZXJ0eSBpZGVudGlmaWVyIGluZGV4IGluIHRoZSBjb2RlIGJs
b2NrLgorICAgICMgMTJbUENdICBTdHJ1Y3R1cmUgcG9pbnRlciwgaW5pdGlhbGl6ZWQgdG8gMCBi
eSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgIyAxNltQQ10gIE9mZnNldCBpbiBnbG9iYWwgb2Jq
ZWN0LCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3Qw
XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBicG5lcSB0
MCwgMTJbUENdLCBzbG93CisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0
OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwg
OF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MworICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCitlbmQKKworX2xsaW50X29wX3Jlc29s
dmVfZ2xvYmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICByZXNvbHZlR2xvYmFsKC5vcFJl
c29sdmVHbG9iYWxTbG93KQorICAgIGRpc3BhdGNoKDUpCisKKy5vcFJlc29sdmVHbG9iYWxTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNw
YXRjaCg1KQorCisKKyMgR2l2ZXMgeW91IHRoZSBzY29wZSBpbiB0MCwgd2hpbGUgYWxsb3dpbmcg
eW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0aGUKKyMgc2Nv
cGVzIGFzIHRoZXkgYXJlIHRyYXZlcnNlZC4gc2NvcGVDaGVjaygpIGlzIGNhbGxlZCB3aXRoIHR3
byBhcmd1bWVudHM6IHRoZSByZWdpc3RlcgorIyBob2xkaW5nIHRoZSBzY29wZSwgYW5kIGEgcmVn
aXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc2NyYXRjaC4gTm90ZSB0aGF0IHRoaXMgZG9lcyBu
b3QKKyMgdXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQgc3R1ZmYgaW4gdDMgaWYgbmVlZCBiZS4KK21h
Y3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2Fk
cCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIGRlQnVpamlu
SW5kZXhPcGVyYW5kLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisgICAgCisgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3Qx
XSwgRnVuY3Rpb25Db2RlLCAubG9vcAorICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNj
b3BlQ2hhaW5bdDFdLCAubG9vcAorICAgIAorICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0
aW9uUmVnaXN0ZXJbdDFdLCB0MQorCisgICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBv
dmVyIG9uZSBzY29wZS4KKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1
ZVRhZywgLm5vQWN0aXZhdGlvbgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNj
b3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKy5ub0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0
MgorICAgIAorICAgIGJ0aXogLmRvbmUKKy5sb29wOgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQor
ICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKyAgICBzdWJpIDEsIHQyCisg
ICAgYnRpbnogdDIsIC5vcEdldFNjb3BlZFZhckxvb3AKKworLmRvbmU6CitlbmQKKworX2xsaW50
X29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRwIEpTR2xvYmFs
RGF0YTo6YWN0aXZhdGlvblN0cnVjdHVyZVt0M10sIHQzCisgICAgZ2V0U2NvcGUoCisgICAgICAg
IDIwW1BDXSwKKyAgICAgICAgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKQorICAgICAgICAgICAgbG9h
ZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGJw
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHlu
YW1pY1N1cGVyU2xvdworICAgICAgICBlbmQpCisgICAgcmVzb2x2ZUdsb2JhbCgub3BSZXNvbHZl
R2xvYmFsRHluYW1pY1Nsb3cpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbER5
bmFtaWNTdXBlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisg
ICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNwYXRjaCg2KQorCisK
K19sbGludF9vcF9nZXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBP
cGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRo
ZSBsb2FkLgorICAgICMgOFtQQ10gICBJbmRleCBvZiByZWdpc3RlciBpbiB0aGUgc2NvcGUuCisg
ICAgIyAxMltQQ10gIERlIEJydWlqaW4gaW5kZXguCisgICAgZ2V0U2NvcGUoMTJbUENdLCBtYWNy
byAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSA4
W1BDXSwgdDIKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBs
b2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFn
T2Zmc2V0W3QwLCB0MiwgOF0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhd
LCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfcHV0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGdldFNjb3BlKDhb
UENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSAxMltPQ10sIHQxCisg
ICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDMsIHQy
KQorICAgIHdyaXRlQmFycmllcih0MywgdDIpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9i
amVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBd
LCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBzdG9yZWkgdDIs
IFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X2dldF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDEKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0ds
b2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwg
dDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDEKKyAgICBz
dG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3B1dF9nbG9i
YWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBs
b2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVj
dDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQzLCA4XSwg
dDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MworICAgIHdyaXRlQmFy
cmllcih0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0
b3JlaSB0MywgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfcmVzb2x2ZV9iYXNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9iYXNlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF9iYXNlOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2Up
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX3RoaXM6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3dp
dGhfdGhpcykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfaWQ6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlfaWQg
Y2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKKyAgICAjIG9wY29kZS4g
V2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hhbmdlIGFueXRpbWUgaWYg
ZmFpbHMsIHNpbmNlCisgICAgIyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4gQXQgYmVzdCB3ZSBnZXQg
bHVja3kgYW5kIHRoZSBnZXRfYnlfaWQgd2lsbCBjb250aW51ZQorICAgICMgdG8gdGFrZSBmYXN0
IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBzbG93IHBhdGgsIHdoaWNo
IGlzIHdoYXQKKyAgICAjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCisgICAgbG9h
ZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCisgICAgbG9hZGkg
MjBbUENdLCB0MgorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0M10sIHQw
CisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdwor
ICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDJdLCB0MworICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyXSwgdDIKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNl
dFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQor
ICAgIGRpc3BhdGNoKDgpCisKKy5vcEdldEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9nZXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOCkKKworCitfbGxpbnRfb3BfcHV0X2J5
X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2Fk
aSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxU
YWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9w
ZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZGkgVGFnT2Zm
c2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0s
IHQyCisgICAgd3JpdGVCYXJyaWVyKHQwLCB0MikKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0
MywgdDFdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBkaXNwYXRj
aCg4KQorCisKK21hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwg
dDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5z
bG93KQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZGkg
MTJbUENdLCB0MgorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLnNsb3cK
KyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLnNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0
MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYWRk
cCB0MSwgdDMKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQyKQor
ICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIDI0W1BDXSwgdDEKKyAgICBz
dG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXQorICAgIGRpc3BhdGNoKDgpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9wdXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOCkKK2VuZAorCitfbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3Jv
IChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKworCitfbGxpbnRfb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAorICAgICAgICBt
YWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQorICAgICAgICAgICAgY29uc3QgcHJv
dG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0
ZXIgZm9yIHRoZSBwcm90bworICAgICAgICAKKyAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2Ny
YXRjaAorICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yICsgVmVjdG9y
QnVmZmVyT2Zmc2V0W3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgICAgICAgICBiaWVxIFN0cnVjdHVy
ZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUK
KyAgICAgICAgLmxvb3A6CisgICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBl
ICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICAgICAgICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgICAg
ICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdworICAgICAgICAgICAgYWRk
cCA0LCBzY3JhdGNoCisgICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsg
VGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisgICAgICAgIC5kb25lCisg
ICAgICAgIGVuZCkKKworCitfbGxpbnRfb3BfZGVsX2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X2lkKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX2dldF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRp
IDEyW1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQxCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAub3BHZXRC
eVZhbFNsb3cpCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5VlB0clt0MV0sIHQyCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIEludDMyVGFnLCB0MSwgLm9wR2V0
QnlWYWxTbG93KQorICAgIGJwbmVxIFt0MF0sIHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2Fk
cCBKU0FycmF5OjptX3N0b3JhZ2VbdDBdLCB0MworICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3Zl
Y3Rvckxlbmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIK
KyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEs
IDhdLCB0MQorICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAg
IHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QnlWYWxTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaWVxIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRCeVZhbFNs
b3cKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgSW50MzJUYWcsIHQyLCAu
b3BHZXRBcmd1bWVudEJ5VmFsU2xvdykKKyAgICBhZGRpIDEsIHQyCisgICAgbG9hZGkgQXJndW1l
bnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDEKKyAgICBiaWFlcSB0MiwgdDEsIC5vcEdl
dEFyZ3VtZW50QnlWYWxTbG93CisgICAgbmVnaSB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQyLCA4XSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDIsIDhdLCB0MQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisg
ICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNCkK
KworLm9wR2V0QXJndW1lbnRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2dldF9hcmd1bWVudF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0
X2J5X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQwCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BHZXRC
eVBuYW1lU2xvdykKKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgYnBuZXEgdDEsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkgOFtQQ10sIHQw
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BH
ZXRCeVBuYW1lU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQwCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwg
dDAKKyAgICBicG5lcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1
cmVbdDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDI0W1BDXSwgdDAKKyAgICBsb2Fk
aSBbY2ZyLCB0MCwgOF0sIHQwCisgICAgc3ViaSAxLCB0MAorICAgIGJpYWVxIHQwLCBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9wR2V0QnlQbmFtZVNs
b3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDJdLCB0MgorICAgIGxv
YWRpIFRhZ09mZnNldFt0MiwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDIs
IHQwLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQor
ICAgIGRpc3BhdGNoKDcpCisKKy5vcEdldEJ5UG5hbWVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9nZXRfYnlfcG5hbWUpCisgICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3Bf
cHV0X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRC
eVZhbFNsb3cpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQodDAsIEludDMyVGFnLCB0MiwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QwXSwg
dDAKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlWUHRyW3QwXSwgdDAKKyAgICBicG5l
cSBbdDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93CisgICAgYmlhZXEgdDIsIEpTQXJyYXk6Om1fdmVj
dG9yTGVuZ3RoW3QxXSwgLm9wUHV0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9y
YWdlW3QxXSwgdDAKKyAgICBiaWVxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRb
dDAsIHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wUHV0QnlWYWxFbXB0eQorLm9wUHV0QnlWYWxT
dG9yZVJlc3VsdDoKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQo
dDMpCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDMsIDhdLCB0MQorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MykKKyAgICBz
dG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XQor
ICAgIHN0b3JlaSB0MywgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDAs
IHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcFB1dEJ5VmFsRW1wdHk6CisgICAgYWRkaSAx
LCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCisgICAgYmliIHQyLCBBcnJh
eVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorICAgIGFkZGkg
MSwgdDIsIHQxCisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXQorICAg
IGptcCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisKKy5vcFB1dEJ5VmFsU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9kZWxfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfZGVsX2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9wdXRfYnlfaW5kZXg6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9wdXRfYnlfaW5kZXgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
cHV0X2dldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3B1dF9nZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X3Nl
dHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3B1dF9zZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbG9vcDoKKyAgICBu
b3AKK19sbGludF9vcF9qbXA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRpc3BhdGNoQnJh
bmNoKDRbUENdKQorCisKK21hY3JvIGp1bXBUcnVlT3JGYWxzZShjb25kaXRpb25PcCwgc2xvdykK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaWIgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBCb29s
ZWFuVGFnLCAuc2xvdworICAgIGNvbmRpdGlvbk9wKFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5j
aCg4W1BDXSkKKworLnNsb3c6CisgICAgc3ViaSAzICogNCwgUEMKKyAgICBjYWxsSGVscGVyKHNs
b3cpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl90cnVlOgorICAg
IG5vcAorX2xsaW50X29wX2p0cnVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1
ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGlueiB2YWx1ZSwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qdHJ1ZSkKKworCitfbGxpbnRfb3BfbG9v
cF9pZl9mYWxzZToKKyAgICBub3AKK19sbGludF9vcF9qZmFsc2U6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQp
IGJ0aXogdmFsdWUsIHNsb3cgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pmYWxzZSkKKwor
CittYWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhbmRsZXIpCisgICAgbG9h
ZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcs
IC5pbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBj
ZWxsSGFuZGxlcihTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0Ml0s
IC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5j
aCg4W1BDXSkKKworLmltbWVkaWF0ZToKKyAgICBvcmkgMSwgdDEKKyAgICBpbW1lZGlhdGVIYW5k
bGVyKHQxLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCitlbmQKKworX2xsaW50X29wX2plcV9u
dWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1hY3Jv
ICh2YWx1ZSwgdGFyZ2V0KSBidGJueiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpZXEgdmFsdWUsIE51bGxU
YWcsIHRhcmdldCBlbmQpCisgICAgCisKK19sbGludF9vcF9qbmVxX251bGw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQp
IGJ0YnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisgICAgICAg
IG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaW5lcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkK
KworCitfbGxpbnRfb3Bfam5lcV9wdHI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgQ2VsbFRhZywgLm9wSm5lcVB0ckJyYW5jaAorICAgIGJwZXEgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDEsIC5vcEpuZXFQdHJGYWxsVGhyb3VnaAorLm9wSm5lcVB0ckJyYW5j
aDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisub3BKbmVxUHRyRmFsbFRocm9ndWg6Cisg
ICAgZGlzcGF0Y2goNCkKKworCittYWNybyBjb21wYXJlKGludGVnZXJDb21wYXJlLCBkb3VibGVD
b21wYXJlLCBoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQz
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDAsIHQxKQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUyUmVnKHQzLCB0MiwgdDMpCisgICAgYmluZXEgdDAsIEludDMyVGFnLCAub3Ax
Tm90SW50CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AyTm90SW50CisgICAgaW50ZWdlckNv
bXBhcmUodDEsIHQzLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisub3AxTm90SW50
OgorICAgIGJpYSB0MCwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAu
b3AxTm90SW50T3AyRG91YmxlCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGNp
MmQgdDMsIGZ0MQorICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6
CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBmaWkyZCB0MSwg
dDAsIGZ0MAorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRp
c3BhdGNoKDQpCisKKy5vcDJOb3RJbnQ6CisgICAgY2kyZCB0MSwgZnQwCisgICAgYmlhIHQyLCBM
b3dlc3RUYWcsIC5zbG93CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKyAgICBkb3VibGVDb21wYXJl
KGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisuanVtcFRhcmdldDoK
KyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVs
cGVyKQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfbGVzczoKKyAg
ICBub3AKK19sbGludF9vcF9qbGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFy
ZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQs
IHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0IGxl
ZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2psZXNzKQorCisK
K19sbGludF9vcF9qbmxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRh
cmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXF1biBs
ZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmxlc3MpCisK
KworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcjoKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRl
cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVhdGVyKQorCisKK19sbGludF9vcF9qbmdyZWF0
ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXF1biBsZWZ0LCByaWdodCwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXIpCisKKworX2xsaW50X29w
X2xvb3BfaWZfbGVzc2VxOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzZXE6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFy
Z2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfamxlc3NlcSkKKworCitfbGxpbnRfb3Bfam5sZXNzZXE6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
dGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmRndHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2pubGVzc2VxKQorCisKK19sbGludF9vcF9sb29wX2lmX2dyZWF0ZXJl
cToKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVx
IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRh
cmdldCkgYmRndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVs
cGVyX2pncmVhdGVyZXEpCisKKworX2xsaW50X29wX2puZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJkbHR1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9qbmdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3BfbG9vcF9oaW50OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgZGlzcGF0
Y2goMSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2ltbToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxv
YWRpIDRbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6
UmFyZURhdGE6Om1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNl
dFt0MiwgdDMsIDRdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
CisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKKyAgICBzdWJpIFNp
bXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxl
OjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxU
aHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2goU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRz
ICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyLCB0MCwgNF0pCisKKy5vcFN3aXRjaEltbU5vdEludDoK
KyAgICBiaWIgdDEsIExvd2VzdFRhZywgLm9wU3dpdGNoSW1tU2xvdyAgIyBHbyB0byBzbG93IHBh
dGggaWYgaXQncyBhIGRvdWJsZS4KKy5vcFN3aXRjaEltbUZhbGxUaHJvdWdoOgorICAgIGRpc3Bh
dGNoQnJhbmNoKDhbUENdKQorCisub3BTd2l0Y2hJbW1TbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9zd2l0Y2hfaW1tKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3N3
aXRjaF9jaGFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQwCisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJT
d2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyLCB0MywgNF0sIHQyCisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRh
ZywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQxCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
dHlwZVt0MV0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRw
IEpTU3RyaW5nOjptX3ZhbHVlW3QwXSwgdDAKKyAgICBiaW5lcSBTdHJpbmdJbXBsOjptX2xlbmd0
aFt0MF0sIDEsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFN0cmluZ0ltcGw6
Om1fZGF0YThbdDBdLCB0MQorICAgIGJ0aW56IFN0cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdzW3Qw
XSwgSGFzaEZsYWdzOEJpdEJ1ZmZlciwgLm9wU3dpdGNoQ2hhcjhCaXQKKyAgICBsb2FkaCBbdDFd
LCB0MAorICAgIGptcCAub3BTd2l0Y2hDaGFyUmVhZHkKKy5vcFN3aXRjaENoYXI4Qml0OgorICAg
IGxvYWRiIFt0MV0sIHQwCisub3BTd2l0Y2hDaGFyUmVhZHk6CisgICAgc3ViaSBTaW1wbGVKdW1w
VGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNo
T2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gK
KyAgICBkaXNwYXRjaEJyYW5jaChTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0
b3JCdWZmZXJPZmZzZXRbdDIsIHQwLCA0XSkKKworLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoOgor
ICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zd2l0Y2hfc3RyaW5nOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNo
X3N0cmluZykKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9uZXdfZnVuYzoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQxLCA4XSwgLm9wTmV3RnVuY0RvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfbmV3X2Z1bmMpCisub3BOZXdGdW5jRG9uZToKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9uZXdfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9uZXdfZnVuY19leHApCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBk
b0NhbGwoaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEK
KyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIENlbGxUYWcsIC5vcENhbGxTbG93CisgICAgYmluZXEgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XSwgdDEsIC5vcENhbGxTbG93CisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZGkgMTJb
UENdLCB0MworICAgIGFkZHAgMjQsIFBDCisgICAgbHNoaWZ0aSAzLCB0MworICAgIGFkZHAgY2Zy
LCB0MyAgIyB0MyBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9mIGNmcgorICAgIHN0b3JlaSB0Miwg
QXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgbG9hZHAgMjAgLSAyNFtQQ10s
IHQyCisgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBs
b2FkcCBKU0Z1bmN0aW9uOjptX3Njb3BlQ2hhaW5bdDFdLCB0MAorICAgIHN0b3JlcCBjZnIsIENh
bGxlckZyYW1lW3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNd
CisgICAgc3RvcmVpIHQxLCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBD
ZWxsVGFnLCBTY29wZUNoYWluICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSB0MCwgU2NvcGVD
aGFpbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgY2FsbCB0MgorICAgIGRpc3BhdGNoQWZ0ZXJD
YWxsKCkKKworLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhlbHBlcikKK2Vu
ZAorCitfbGxpbnRfb3BfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9s
bGludF9oZWxwZXJfY2FsbCkKKworCitfbGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3QpCisKKworX2xsaW50
X29wX2NhbGxfdmFyYXJnczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1BhdGhGb3JD
YWxsKDYsIF9sbGludF9oZWxwZXJfY2FsbF92YXJhcmdzKQorCisKK19sbGludF9vcF9jYWxsX2V2
YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIAorICAgICMgRXZhbCBpcyBleGVjdXRlZCBp
biBvbmUgb2YgdHdvIG1vZGVzOgorICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSBy
ZWFsbHkgaW52b2tpbmcgZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBleGVjdXRp
b24gaXMgcGVyZm9tZWQgZW50aXJlbHkgaW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBpdAorICAgICMg
ICAgcmV0dXJucyB0aGUgUEMgb2YgYSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0aGUgcmV0
dXJuIHZhbHVlCisgICAgIyAgICB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgICMKKyAgICAj
IDIpIFdlIGZpbmQgdGhhdCB3ZSdyZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwoKSB0
aGF0IGlzIG5vdAorICAgICMgICAgdGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVscGVyIHJldHVy
bnMgdGhlIFBDIG9mIHRoZSB0aGluZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQu
CisgICAgIworICAgICMgVGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywgd2hpY2gg
d291bGQgcmVxdWlyZSBhIHRvdGFsIG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0
ZSB0aGF0IGNhbm5vdCBiZSBlYXNpbHkgcGFja2VkIGludG8gdHdvCisgICAgIyByZWdpc3RlcnMg
KEMgZnVuY3Rpb25zIGNhbiByZXR1cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5KToKKyAg
ICAjCisgICAgIyAtIFRoZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBtYXkgbm90
IGhhdmUgYmVlbiBtb2RpZmllZAorICAgICMgICBieSB0aGUgaGVscGVyLCBidXQgdGhlIGNvbnZl
bnRpb24gaXMgdGhhdCBpdCByZXR1cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0b3RhbGx5IGNs
ZWFyIGlmIHRoYXQncyBuZWNlc3NhcnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUuCisg
ICAgIyAgIEJ1dCB0aGF0J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRlciBzbyB3
ZSBzdGljayB3aXRoIGl0LgorICAgICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBoZWxw
ZXIgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAjICAgdGhlIHJl
dHVybiB2YWx1ZSwgb3IgZGlkIG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3Ig
dXMKKyAgICAjICAgdG8gY2FsbC4KKyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAgICAjICAgLSBU
aGUgSlMgcmV0dXJuIHZhbHVlICh0d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisgICAgIyAgIC0g
VGhlIFBDIHRvIGNhbGwuCisgICAgIworICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2llciB0
byBqdXN0IGFsd2F5cyBoYXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBhIFBDIHRv
IGNhbGwsIGFuZCB0aGF0IFBDIG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAorICAgICMg
cmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAKKyAgICBz
bG93UGF0aEZvckNhbGwoNCwgX2xsaW50X2hlbHBlcl9jYWxsX2V2YWwpCisKKworX2xsaW50X2dl
bmVyaWNfcmV0dXJuX3BvaW50OgorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCk7CisKKworX2xsaW50
X29wX3RlYXJfb2ZmX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkCisgICAg
YmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3Rp
dmF0aW9uTm90Q3JlYXRlZAorLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkOgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQorLm9wVGVhck9mZkFjdGl2
YXRpb25Ob3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3RlYXJfb2Zm
X2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgc3ViaSAxLCB0MCAgICMgR2V0IHRoZSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIKKyAg
ICBiaWVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0
ZWQKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQorLm9w
VGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBk
b1JldHVybigpCisgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICBsb2FkcCBDYWxsZXJG
cmFtZVtjZnJdLCBjZnIKKyAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikK
KyAgICByZXQKK2VuZAorCitfbGxpbnRfb3BfcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3BfY2FsbF9wdXRf
cmVzdWx0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBz
dG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3JldF9vYmpl
Y3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZv
ckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAg
ICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BSZXRPYmplY3RPclRo
aXNOb3RPYmplY3QKKyAgICBkb1JldHVybigpCisKKy5vcFJldE9iamVjdE9yVGhpc05vdE9iamVj
dDoKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQxCisgICAgbG9hZGkgUGF5bGFvZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1JldHVy
bigpCisKKworX2xsaW50X29wX21ldGhvZF9jaGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNoZWNrcyBhbmQgdXNlIG5vcm1hbCBnZXRfYnlfaWQgb3B0
aW1pemF0aW9ucy4KKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zdHJjYXQ6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zdHJjYXQpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBs
b2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9QcmltaXRpdmVJc0lt
bQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJibmVxIFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BU
b1ByaW1pdGl2ZVNsb3dDYXNlCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0K
KyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgz
KQorCisub3BUb1ByaW1pdGl2ZVNsb3dDYXNlOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl90b19wcmltaXRpdmUpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZ2V0X3BuYW1l
czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dl
dF9wbmFtZXMpCisgICAgZGlzcGF0Y2goMCkgIyBUaGUgaGVscGVyIGVpdGhlciBhZHZhbmNlcyB0
aGUgUEMgb3IganVtcHMgdXMgdG8gc29tZXdoZXJlIGVsc2UuCisKKworX2xsaW50X29wX25leHRf
cG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBs
b2FkaSAxNltQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSwgdDAK
KyAgICBiaWVxIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCAub3BOZXh0UG5hbWVFbmQK
KyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4
XSwgdDIKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2pzU3RyaW5nc1t0Ml0s
IHQzCisgICAgbG9hZGkgW3QzLCB0MCwgOF0sIHQzCisgICAgYWRkaSAxLCB0MAorICAgIHN0b3Jl
aSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDRbUENdLCB0MQorICAg
IHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDNdLCB0MQorICAgIGJwbmVxIHQxLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hl
ZFN0cnVjdHVyZVt0Ml0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjptX2NhY2hlZFByb3RvdHlwZUNoYWluW3QyXSwgdDAKKyAgICBsb2FkcCBTdHJ1
Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDBdLCB0MAorICAgIGJ0cHogW3QwXSwgLm9wTmV4dFBuYW1l
VGFyZ2V0Cisub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3A6CisgICAgYmllcSBTdHJ1Y3R1
cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W3QxXSwgTnVsbFRhZywgLm9wTmV4dFBuYW1lU2xv
dworICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QxXSwg
dDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDEKKyAgICBicG5lcSB0MSwg
W3QwXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGFkZHAgNCwgdDAKKyAgICBidHBueiBbdDBdLCAu
b3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKKy5vcE5leHRQbmFtZVRhcmdldDoKKyAgICBk
aXNwYXRjaEJyYW5jaCgyNFtQQ10pCisKKy5vcE5leHRQbmFtZUVuZDoKKyAgICBkaXNwYXRjaCg3
KQorCisub3BOZXh0UG5hbWVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXh0
X3BuYW1lKSAjIFRoaXMgZWl0aGVyIGtlZXBzIHRoZSBQQyB3aGVyZSBpdCB3YXMgKGNhdXNpbmcg
dXMgdG8gbG9vcCkgb3Igc2V0cyBpdCB0byB0YXJnZXQuCisgICAgZGlzcGF0Y2goMCkKKworCitf
bGxpbnRfb3BfcHVzaF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3B1c2hfc2NvcGUpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRf
b3BfcG9wX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcG9wX3Njb3BlKQorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3B1c2hf
bmV3X3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfcHVzaF9uZXdfc2NvcGUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfY2F0
Y2g6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAg
ZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKKyAgICAjIG1hY2hp
bmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBh
bmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2VlIF9s
bGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRoZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wg
Y2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0aHJvd2luZworICAgICMgY29kZSBt
dXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93aW5nIHRvIHRoZSBpbnRlcnByZXRlciwg
YW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JU
aHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxE
YXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENG
b3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXls
b2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRh
Z09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsg
UGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRh
OjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBUYWdPZmZz
ZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvdzoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rocm93KQor
ICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93X3JlZmVyZW5jZV9lcnJvcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rocm93X3Jl
ZmVyZW5jZV9lcnJvcikKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9qc3I6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFkZGkgMyAqIDQsIFBD
LCB0MQorICAgIHN0b3JlaSB0MSwgW3QwXQorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisK
K19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwg
UEMKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9kZWJ1ZzoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlYnVnKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX3Byb2ZpbGVfd2lsbF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBidHB6IEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0s
IC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJv
ZmlsZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGJ0cHogSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgLm9w
UHJvZmlsZURpZENhbGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVf
ZGlkX2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitf
bGxpbnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklU
Rm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAor
ICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZToK
KyAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcg
ZnJvbSBMTEludEhlbHBlcnMpLCBzbworICAgICMgdGhlIHRocm93IHRhcmdldCBpcyBub3QgbmVj
ZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0byBoZXJlLgorICAgICMgVGhpcyBl
c3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCisgICAgbG9h
ZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxE
YXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFy
Z2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworX2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3Ry
YW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIGxv
YWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFs
RGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRh
cmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FybXY3LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkzIEBACisj
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitjbGFzcyBTcGVjaWFsUmVnaXN0
ZXIKKyAgZGVmIGluaXRpYWxpemUobmFtZSkKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAor
ICBkZWYgYXJtVjdPcGVyYW5kCisgICAgQG5hbWUKKyAgZW5kCitlbmQKKworQVJNdjdfREFUQV9S
RUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJpcCIpCitBUk12N19BRERSX1JFRyA9IFNwZWNpYWxS
ZWdpc3Rlci5uZXcoInIzIikKKworZGVmIG1vdmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQor
ICAjIEN1cnJlbnRseSB3ZSBvbmx5IGhhbmRsZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBi
YWNrIHRvIG1vdi9tb3Z0IGZvciB0aGUgY29tcGxleCBvbmVzLgorICBpZiB2YWx1ZSA+PSAwICYm
IHZhbHVlIDwgMjU2CisgICAgJGFzbS5wdXRzICJtb3Z3IFwjI3t2YWx1ZX0sICN7cmVnaXN0ZXIu
YXJtVjdPcGVyYW5kfSIKKyAgZWxzaWYgKH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1Ngor
ICAgICRhc20ucHV0cyAibXZudyBcIyN7fnZhbHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9
IgorICBlbHNlCisgICAgJGFzbS5wdXRzICJtb3Z3IFwjI3t2YWx1ZSAmIDB4ZmZmZn0sICN7cmVn
aXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBpZiAodmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCisg
ICAgICAkYXNtLnB1dHMgIm1vdnQgXCMje3ZhbHVlID4+IDE2fSwgI3tyZWdpc3Rlci5hcm1WN09w
ZXJhbmR9IgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBh
cm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAg
ICAgICJyMCIKKyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgICJyMSIKKyAgICB3aGVu
ICJ0MiIsICJhMiIKKyAgICAgICJyMiIKKyAgICB3aGVuICJhMyIKKyAgICAgICJyMyIKKyAgICB3
aGVuICJ0MyIKKyAgICAgICJyNCIKKyAgICB3aGVuICJ0NCIKKyAgICAgICJyNyIKKyAgICB3aGVu
ICJjZnIiCisgICAgICAicjUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5k
CisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAK
KyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVu
ZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkCisgIGVuZAorZW5kCisK
K2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisg
ICAgd2hlbiAiZnQwIiwgImZyIgorICAgICAgImQwIgorICAgIHdoZW4gImZyMSIsCisgICAgICAi
ZDEiCisgICAgd2hlbiAiZnIyIgorICAgICAgImQyIgorICAgIHdoZW4gImZyMyIKKyAgICAgICJk
MyIKKyAgICB3aGVuICJmcjQiCisgICAgICAiZDQiCisgICAgd2hlbiAiZnI1IgorICAgICAgImQ1
IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3
UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3Np
YmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1W
N0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZCBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVk
aWF0ZQorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2UgIkludmFsaWQgaW1tZWRpYXRlICN7
dmFsdWV9IiBpZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAiIyR7dmFsdWV9IgorICBl
bmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisg
IAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAg
ZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgeWllbGQgc2VsZgorICBlbmQK
K2VuZAorCittb2R1bGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisgIGRlZiBhcm1WN0xvYWRTdG9y
ZVdyYXAKKyAgICBzZWxmLmFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICRh
c20ucHV0cyAiXHRsZHIgI3tzZWxmLmFybVY3UG9zc2libHlNZW1vcnlPcGVyYW5kfSwgI3tBUk12
N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9IgorICAgIHlpZWxkIEFSTXY3X0RBVEFfUkVHCisgICAg
JGFzbS5wdXRzICJcdHN0ciAje0FSTXY3X0RBVEFfUkVHLmFybVY3T3BlcmFuZH0sICN7c2VsZi5h
cm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFuZH0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MK
KyAgaW5jbHVkZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9z
c2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0
LnZhbHVlID4gMHhmZmYKKyAgICAgIG1vdmVJbW1lZGlhdGUob2Zmc2V0LnZhbHVlLCBBUk12N19B
RERSX1JFRykKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9w
ZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZm
ZgorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tBUk12N19BRERSX1JFRy5hcm1WN09w
ZXJhbmR9XSIKKyAgICBlbHNlCisgICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje29mZnNl
dC5hcm1WN09wZXJhbmR9XSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4
CisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBv
c3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICBtb3Zl
SW1tZWRpYXRlKG9mZnNldC52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgICAgICAkYXNtLnB1dHMg
ImFkZHcgI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5k
fSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQK
KyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAgICAgIlsje0FSTXY3X0FERFJfUkVHLmFybVY3
T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVs
c2UKKyAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwg
bHNsIFwjI3tzY2FsZX1dIgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFk
ZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKyAgCisgIGRlZiBhcm1WN1By
ZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBtb3ZlSW1tZWRpYXRlKGFkZHJlc3MudmFs
dWUsIEFSTXY3X0FERFJfUkVHKQorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5
T3BlcmFuZAorICAgICJbI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgZW5kCitl
bmQKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDg4IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVf
XykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFy
c2VyIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2NsYXNzIEFz
c2VtYmxlcgorICBkZWYgaW5pdGlhbGl6ZShvdXRwKQorICAgIEBvdXRwID0gb3V0cAorICAgIEBz
dGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBkZWYgZW50ZXJBc20KKyAgICBAb3V0cC5wdXRzICJh
c20gKCIKKyAgICBAc3RhdGUgPSA6YXNtCisgIGVuZAorICAKKyAgZGVmIGxlYXZlQXNtCisgICAg
QG91dHAucHV0cyAiKSIKKyAgICBAc3RhdGUgPSA6Y3BwCisgIGVuZAorICAKKyAgZGVmIGluQXNt
CisgICAgZW50ZXJBc20KKyAgICB5aWVsZAorICAgIGxlYXZlQXNtCisgIGVuZAorICAKKyAgZGVm
IHB1dHMobGluZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBuZXdMaW5l
ID0gIiIKKyAgICBsaW5lLmVhY2hfYnl0ZSB7CisgICAgICB8IGJ5dGUgfAorICAgICAgaWYgYnl0
ZSA9PSA/JQorICAgICAgICBuZXdMaW5lICs9ICIlJSIKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3
TGluZSArPSBieXRlLmNocgorICAgICAgZW5kCisgICAgfQorICAgIEBvdXRwLnB1dHMoKG5ld0xp
bmUgKyAiXG4iKS5pbnNwZWN0KQorICBlbmQKK2VuZAorCiskYXNtID0gQXNzZW1ibGVyLm5ldygk
c3Rkb3V0KQorCithc21GaWxlID0gQVJHVi5zaGlmdAorb2Zmc2V0c0ZpbGUgPSBBUkdWLnNoaWZ0
CisKK2FzdCA9IHBhcnNlKGxleChJTzo6cmVhZChhc21GaWxlKSkpCitvZmZzZXRzTGlzdCwgc2l6
ZXNMaXN0LCBjb25maWdJbmRleCA9IG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgoYXN0LCBv
ZmZzZXRzRmlsZSkKKworZm9yU2V0dGluZ3MoY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFz
dClbY29uZmlnSW5kZXhdLCBhc3QpIHsKKyAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFT
VCwgYmFja2VuZCB8CisgIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAg
bG93TGV2ZWxBU1QgPSBsb3dMZXZlbEFTVC5yZXNvbHZlKCpidWlsZE9mZnNldHNNYXAobG93TGV2
ZWxBU1QsIG9mZnNldHNMaXN0LCBzaXplc0xpc3QpKQorICBlbWl0Q29kZUluQ29uZmlndXJhdGlv
bihjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCkgeworICAgICRhc20uaW5B
c20geworICAgICAgbG93TGV2ZWxBU1QubG93ZXIoYmFja2VuZCkKKyAgICB9CisgIH0KK30KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODA2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBCYXNlIHV0aWxpdHkgdHlwZXMgZm9y
IHRoZSBBU1QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFZhbGlkIG1ldGhvZHMgZm9yIE5vZGU6Cisj
CisjIG5vZGUuY2hpbGRyZW4gLT4gUmV0dXJucyBhbiBhcnJheSBvZiBpbW1lZGlhdGUgY2hpbGRy
ZW4uCisjCisjIG5vZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgc3Ry
aWN0IGRlc2NlbmRhbnRzIChjaGlsZHJlbgorIyAgICAgYW5kIGNoaWxkcmVuIG9mIGNoaWxkcmVu
LCB0cmFuc2l0aXZlbHkpLgorIworIyBub2RlLmZsYXR0ZW4gLT4gUmV0dXJucyBhbiBhcnJheSBj
b250YWluaW5nIHRoZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5kCisjICAgICB0aGUgbm9kZSBpdHNl
bGYuCisjCisjIG5vZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmlu
ZyB0aG9zZSBlbGVtZW50cyBpbgorIyAgICAgbm9kZS5mbGF0dGVuIHRoYXQgYXJlIG9mIHRoZSBn
aXZlbiB0eXBlIChpc19hPyB0eXBlIHJldHVybnMgdHJ1ZSkuCisjCisjIG5vZGUubWFwQ2hpbGRy
ZW57fHZ8IC4uLn0gLT4gUmV0dXJucyBhIG5ldyBub2RlIHdpdGggYWxsIGNoaWxkcmVuCisjICAg
ICByZXBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJsb2NrLgorIworIyBFeGFtcGxlczoK
KyMKKyMgbm9kZS5maWx0ZXIoU2V0dGluZykudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc2V0
dGluZ3MgdGhhdCB0aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVsc2UgYmxvY2tzIGRlcGVuZCBvbi4K
KyMKKyMgbm9kZS5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRo
ZSBzdHJ1Y3R1cmUgb2Zmc2V0cworIyAgICAgdGhhdCB0aGUgQVNUIGRlcGVuZHMgb24uCisKK2Ns
YXNzIE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4pCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgIGVuZAorICAKKyAg
ZGVmIGNvZGVPcmlnaW5TdHJpbmcKKyAgICAibGluZSBudW1iZXIgI3tAY29kZU9yaWdpbn0iCisg
IGVuZAorICAKKyAgZGVmIGRlc2NlbmRhbnRzCisgICAgY2hpbGRyZW4uY29sbGVjdHt8dnwgdi5m
bGF0dGVufS5mbGF0dGVuCisgIGVuZAorICAKKyAgZGVmIGZsYXR0ZW4KKyAgICBbc2VsZl0gKyBk
ZXNjZW5kYW50cworICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIodHlwZSkKKyAgICBmbGF0dGVuLnNl
bGVjdHt8dnwgdi5pc19hPyB0eXBlfQorICBlbmQKK2VuZAorCitjbGFzcyBOb0NoaWxkcmVuIDwg
Tm9kZQorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW10KKyAgZW5kCisgIAorICBkZWYgbWFw
Q2hpbGRyZW4KKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldEtleQor
ICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKHN0cnVj
dCwgZmllbGQpCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVu
ZAorICAKKyAgZGVmIGhhc2gKKyAgICBAc3RydWN0Lmhhc2ggKyBAZmllbGQuaGFzaCAqIDMKKyAg
ZW5kCisgIAorICBkZWYgZXFsPyhvdGhlcikKKyAgICBAc3RydWN0ID09IG90aGVyLnN0cnVjdCBh
bmQgQGZpZWxkID09IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisgICAgCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBBU1Qgbm9kZXMuICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworCitjbGFzcyBTdHJ1Y3RPZmZzZXQgPCBOb0NoaWxkcmVuCisgIGF0dHJf
cmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
c3RydWN0LCBmaWVsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1
Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAor
ICBkZWYgc2VsZi5mb3JGaWVsZChjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGtleSA9
IFN0cnVjdE9mZnNldEtleS5uZXcoc3RydWN0LCBmaWVsZCkKKyAgICAKKyAgICB1bmxlc3MgQEBt
YXBwaW5nW2tleV0KKyAgICAgIEBAbWFwcGluZ1trZXldID0gU3RydWN0T2Zmc2V0Lm5ldyhjb2Rl
T3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1trZXldCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tzdHJ1Y3R9Ojoje2ZpZWxkfSIKKyAgZW5kCisgIAor
ICBkZWYgPD0+KG90aGVyKQorICAgIGlmIEBzdHJ1Y3QgIT0gb3RoZXIuc3RydWN0CisgICAgICBy
ZXR1cm4gQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgICAgZW5kCisgICAgQGZpZWxkIDw9PiBv
dGhlci5maWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YgPCBOb0NoaWxkcmVuCisgIGF0
dHJfcmVhZGVyIDpzdHJ1Y3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVj
dCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgZW5kCisg
IAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBz
dHJ1Y3QpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tzdHJ1Y3RdCisgICAgICBAQG1hcHBpbmdbc3Ry
dWN0XSA9IFNpemVvZi5uZXcoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIGVuZAorICAgIEBAbWFw
cGluZ1tzdHJ1Y3RdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAic2l6ZW9mICN7QHN0cnVj
dH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAgICBAc3RydWN0IDw9PiBvdGhlci5z
dHJ1Y3QKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlIDwgTm9DaGlsZHJlbgorICBhdHRy
X3JlYWRlciA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhbHVlKQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICIje3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYgPT0ob3RoZXIpCisgICAg
b3RoZXIuaXNfYT8gSW1tZWRpYXRlIGFuZCBvdGhlci52YWx1ZSA9PSBAdmFsdWUKKyAgZW5kCitl
bmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpy
aWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAor
ICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAg
CisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5
aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
Iigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgU3Vi
SW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbgorICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5
aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0g
LSAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcyA8IE5v
ZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9
IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE11bElt
bWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKiAje3JpZ2h0LmR1bXB9
KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlIDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBbQGNoaWxkXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5l
Z0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiKC0je0BjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFJl
Z2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5h
bWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZv
ck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAg
ICBAQG1hcHBpbmdbbmFtZV0gPSBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAg
IGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFt
ZQorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJf
cmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBw
aW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1
bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBGUFJlZ2lzdGVy
SUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlh
YmxlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0g
bmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1l
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBt
YXBwaW5nW25hbWVdID0gVmFyaWFibGUubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisg
ICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVu
ZAorZW5kCisKK2NsYXNzIEFkZHJlc3MgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6b2Zm
c2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBvZmZzZXQpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BiYXNlLCBAb2Zmc2V0XQorICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sICh5aWVs
ZCBAYmFzZSksICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIj
e29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH1dIgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5k
ZXggPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6aW5kZXgsIDpzY2FsZSwgOm9mZnNldAor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAaW5kZXgg
PSBpbmRleAorICAgIEBzY2FsZSA9IHNjYWxlCisgICAgcmFpc2UgdW5sZXNzIFsxLCAyLCA0LCA4
XS5tZW1iZXI/IEBzY2FsZQorICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBbQGJhc2UsIEBpbmRleCwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSks
ICh5aWVsZCBAaW5kZXgpLCBAc2NhbGUsICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH0sICN7aW5kZXguZHVtcH0s
ICN7c2NhbGV9XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzIDwgTm9DaGls
ZHJlbgorICBhdHRyX3JlYWRlciA6YWRkcmVzcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgYWRkcmVzcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBhZGRyZXNzID0gYWRk
cmVzcworICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7YWRkcmVzcy5kdW1wfVtdIgorICBl
bmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbiA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm9wY29k
ZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBvcGNvZGUsIG9w
ZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG9wY29kZSA9IG9wY29kZQorICAg
IEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgb3Bl
cmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgSW5zdHJ1Y3Rp
b24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgIlx0IiArIG9wY29kZS50b19zICsgIiAiICsgb3BlcmFuZHMu
Y29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCisgIGVuZAorZW5kCisKK2NsYXNzIEVycm9y
IDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiZXJyb3IiCisgIGVuZAorZW5k
CisKK2NsYXNzIENvbnN0RGVjbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnZhcmlhYmxlLCA6dmFs
dWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YXJpYWJsZSA9IHZhcmlhYmxlCisgICAgQHZhbHVl
ID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQHZhcmlhYmxlLCBAdmFs
dWVdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQ29uc3REZWNsLm5ldyhjb2Rl
T3JpZ2luLCAoeWllbGQgQHZhcmlhYmxlKSwgKHlpZWxkIEB2YWx1ZSkpCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiY29uc3QgI3tAdmFyaWFibGUuZHVtcH0gPSAje0B2YWx1ZS5kdW1wfSIK
KyAgZW5kCitlbmQKKworJGxhYmVsTWFwcGluZyA9IHt9CisKK2NsYXNzIExhYmVsIDwgTm9DaGls
ZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQK
KyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxN
YXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0i
IHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExhYmVsCisgICAgZWxzZQorICAgICAg
JGxhYmVsTWFwcGluZ1tuYW1lXSA9IExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVu
ZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIj
e25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbCA8IE5vQ2hpbGRyZW4KKyAg
YXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisKKyAgQEB1
bmlxdWVOYW1lQ291bnRlciA9IDAKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFt
ZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExv
Y2FsTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTG9jYWxMYWJl
bC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5nW25hbWVd
CisgIGVuZAorICAKKyAgZGVmIHNlbGYudW5pcXVlCisgICAgd2hpbGUgJGxhYmVsTWFwcGluZ1si
X0wje0BAdW5pcXVlTmFtZUNvdW50ZXJ9Il0KKyAgICAgIEBAdW5pcXVlTmFtZUNvdW50ZXIgKz0g
MQorICAgIGVuZAorICAgIGZvck5hbWUobmlsLCAiX0wje0BAdW5pcXVlTmFtZUNvdW50ZXJ9IikK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xh
c3MgTGFiZWxSZWZlcmVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxd
CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTGFiZWxSZWZlcmVuY2UubmV3KGNv
ZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFi
ZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQorICBlbmQKK2Vu
ZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRl
ciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExv
Y2FsTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQK
KyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgbGFiZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZSA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxpc3QpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGlzdCA9IGxpc3QKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBsaXN0CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQor
ICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBAbGlzdC5tYXAoJnByb2MpKQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIlxuIikKKyAg
ZW5kCitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAg
ICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IFRydWUubmV3CisgIAorICBk
ZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUK
KyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAidHJ1ZSIKKyAgZW5kCitlbmQK
KworY2xhc3MgRmFsc2UgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIo
bmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBGYWxzZS5uZXcKKyAgCisgIGRlZiBzZWxm
Lmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiZmFsc2UiCisgIGVuZAorZW5kCisKK2Ns
YXNzIFRydWVDbGFzcworICBkZWYgYXNOb2RlCisgICAgVHJ1ZS5pbnN0YW5jZQorICBlbmQKK2Vu
ZAorCitjbGFzcyBGYWxzZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBGYWxzZS5pbnN0YW5jZQor
ICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9
CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBA
bWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gU2V0dGluZy5uZXcoY29kZU9y
aWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kIDwgTm9kZQorICBhdHRy
X3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBs
ZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAg
IEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBA
cmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQW5kLm5ldyhjb2RlT3Jp
Z2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgT3IgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRy
ZW4KKyAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkp
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBvciAje3JpZ2h0LmR1
bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTm90IDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hp
bGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4K
KyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBO
b3QubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAgPCBO
b0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJza2lwIgorICBlbmQKK2VuZAorCitj
bGFzcyBJZlRoZW5FbHNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6cHJlZGljYXRlLCA6dGhlbkNh
c2UKKyAgYXR0cl9hY2Nlc3NvciA6ZWxzZUNhc2UKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIHByZWRpY2F0ZSwgdGhlbkNhc2UpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
cHJlZGljYXRlID0gcHJlZGljYXRlCisgICAgQHRoZW5DYXNlID0gdGhlbkNhc2UKKyAgICBAZWxz
ZUNhc2UgPSBTa2lwLm5ldyhjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgor
ICAgIGlmIEBlbHNlQ2FzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZSwgQGVsc2VDYXNl
XQorICAgIGVsc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2VdCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwg
KHlpZWxkIEBwcmVkaWNhdGUpLCAoeWllbGQgQHRoZW5DYXNlKSwgKHlpZWxkIEBlbHNlQ2FzZSkp
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiaWYgI3twcmVkaWNhdGUuZHVtcH1cbiIgKyB0
aGVuQ2FzZS5kdW1wICsgIlxuZWxzZVxuIiArIGVsc2VDYXNlLmR1bXAgKyAiXG5lbmQiCisgIGVu
ZAorZW5kCisKK2NsYXNzIE1hY3JvIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOnZhcmlh
YmxlcywgOmJvZHkKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlh
YmxlcywgYm9keSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAg
IEB2YXJpYWJsZXMgPSB2YXJpYWJsZXMKKyAgICBAYm9keSA9IGJvZHkKKyAgZW5kCisgIAorICBk
ZWYgY2hpbGRyZW4KKyAgICBAdmFyaWFibGVzICsgW0Bib2R5XQorICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbgorICAgIE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQHZhcmlhYmxlcy5t
YXB7fHZ8IHlpZWxkIHZ9LCAoeWllbGQgQGJvZHkpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgIm1hY3JvICN7bmFtZX0oIiArIHZhcmlhYmxlcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4o
IiwgIikgKyAiKVxuIiArIGJvZHkuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3Mg
TWFjcm9DYWxsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOm9wZXJhbmRzCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgICAg
cmFpc2UgdW5sZXNzIEBvcGVyYW5kcworICAgIEBvcGVyYW5kcy5lYWNoe3x2fCByYWlzZSB1bmxl
c3Mgdn0KKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAb3BlcmFuZHMKKyAgZW5kCisg
IAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2lu
LCBAbmFtZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiXHQje25hbWV9KCIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikg
KyAiKSIKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vYmFja2VuZHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWly
ZSAieDg2IgorCitCQUNLRU5EUyA9CisgIFsKKyAgICJYODYiLAorICAgIkFSTXY3IgorICBdCisK
K1dPUktJTkdfQkFDS0VORFMgPQorICBbCisgICAiWDg2IgorICBdCisKK0JBQ0tFTkRfUEFUVEVS
TiA9IFJlZ2V4cC5uZXcoJ1xcQSgnICsgQkFDS0VORFMuam9pbignKXwoJykgKyAnKVxcWicpCisK
K2NsYXNzIE5vZGUKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgc2VuZCgibG93ZXIiICsgbmFtZSkK
KyAgZW5kCitlbmQKKworIyBPdmVycmlkZXMgZm9yIGxvd2VyKCkgZm9yIHRob3NlIG5vZGVzIHRo
YXQgYXJlIGJhY2tlbmQtYWdub3N0aWMKKworZGVmIHNhbml0aXplTGFiZWxOYW1lKG5hbWUpCisg
ICMgU29tZSBwbGF0Zm9ybXMgZG9uJ3Qgd2FudCB0aGUgbGVhZGluZyAiXyIuIElmIHdlIGV2ZXIg
d2FudCB0byBkbyBzb21ldGhpbmcKKyAgIyBhYm91dCB0aGF0LCBpdCB3b3VsZCBiZSBoZXJlLgor
ICBuYW1lCitlbmQKKworY2xhc3MgTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5w
dXRzICIuZ2xvYmwgI3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxmLm5hbWUpfSIKKyAgICAkYXNtLnB1
dHMgIiN7c2FuaXRpemVMYWJlbE5hbWUoc2VsZi5uYW1lKX06IgorICBlbmQKK2VuZAorCitjbGFz
cyBMb2NhbExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAgICRhc20ucHV0cyAiX19vYV8je3Nl
bGYubmFtZVsxLi4tMV19OiIKKyAgZW5kCitlbmQKKworY2xhc3MgU2tpcAorICBkZWYgbG93ZXIo
bmFtZSkKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIGxvd2VyKG5hbWUpCisg
ICAgQGxpc3QuZWFjaCB7CisgICAgICB8IG5vZGUgfAorICAgICAgbm9kZS5sb3dlcihuYW1lKQor
ICAgIH0KKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zm
c2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAorIyEvdXNyL2Jp
bi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiskOiA8
PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAi
b2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAi
dHJhbnNmb3JtIgorCitkZWYgZW1pdE1hZ2ljTnVtYmVyCisgIE9GRlNFVF9NQUdJQ19OVU1CRVJT
LmVhY2ggeworICAgIHwgbnVtYmVyIHwKKyAgICBwdXRzICIje251bWJlcn0sIgorICB9CitlbmQK
Kworb3JpZ2luYWxBU1QgPSBwYXJzZShsZXgoJHN0ZGluLnJlYWQpKQorCitlbWl0Q29kZUluQWxs
Q29uZmlndXJhdGlvbnMob3JpZ2luYWxBU1QpIHsKKyAgfCBzZXR0aW5ncywgYXN0LCBiYWNrZW5k
LCBpbmRleCB8CisgIG9mZnNldHNMaXN0ID0gYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEu
c29ydAorICBzaXplc0xpc3QgPSBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CisgIAorICBs
ZW5ndGggPSAoT0ZGU0VUX01BR0lDX05VTUJFUlMuc2l6ZSArIDEpICogKDEgKyBvZmZzZXRzTGlz
dC5zaXplICsgc2l6ZXNMaXN0LnNpemUpCisgIAorICBwdXRzICJzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgZXh0cmFjdG9yVGFibGVbI3tsZW5ndGh9XSA9IHsiCisgIGVtaXRNYWdpY051bWJlcgorICBw
dXRzICIje2luZGV4fSwiCisgIG9mZnNldHNMaXN0LmVhY2ggeworICAgIHwgb2Zmc2V0IHwKKyAg
ICBlbWl0TWFnaWNOdW1iZXIKKyAgICBwdXRzICJPRkZMSU5FX0FTTV9PRkZTRVRPRigje29mZnNl
dC5zdHJ1Y3R9LCAje29mZnNldC5maWVsZH0pLCIKKyAgfQorICBzaXplc0xpc3QuZWFjaCB7Cisg
ICAgfCBvZmZzZXQgfAorICAgIGVtaXRNYWdpY051bWJlcgorICAgIHB1dHMgInNpemVvZigje29m
ZnNldC5zdHJ1Y3R9KSwiCisgIH0KKyAgcHV0cyAifTsiCit9CisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTg4IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitNQUNST19JTlNUUlVDVElPTlMgPQorICBbCisgICAiYWRkaSIsCisgICAiYW5k
aSIsCisgICAibHNoaWZ0aSIsCisgICAibXVsaSIsCisgICAibmVnaSIsCisgICAibm90aSIsCisg
ICAib3JpIiwKKyAgICJyc2hpZnRpIiwKKyAgICJ1cnNoaWZ0aSIsCisgICAic3ViaSIsCisgICAi
eG9yaSIsCisgICAibG9hZGkiLAorICAgImxvYWRiIiwKKyAgICJsb2FkaCIsCisgICAic3RvcmVp
IiwKKyAgICJzdG9yZWIiLAorICAgImxvYWRkIiwKKyAgICJtb3ZlZCIsCisgICAic3RvcmVkIiwK
KyAgICJhZGRkIiwKKyAgICJkaXZkIiwKKyAgICJzdWJkIiwKKyAgICJtdWxkIiwKKyAgICJzcXJ0
ZCIsCisgICAiY2kyZCIsCisgICAiZmlpMmQiLCAjIHVzYWdlOiBmaWkyZCA8Z3ByIHdpdGggbGVh
c3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+LCA8
ZnByPgorICAgImZkMmlpIiwgIyB1c2FnZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0aCBsZWFzdCBz
aWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4KKyAgICJi
ZGVxIiwKKyAgICJiZG5lcSIsCisgICAiYmRndCIsCisgICAiYmRndGVxIiwKKyAgICJiZGx0IiwK
KyAgICJiZGx0ZXEiLAorICAgImJkZXF1biIsCisgICAiYmRuZXF1biIsCisgICAiYmRndHVuIiwK
KyAgICJiZGd0ZXF1biIsCisgICAiYmRsdHVuIiwKKyAgICJiZGx0ZXF1biIsCisgICAiYnRkMmki
LAorICAgInRkMmkiLAorICAgImJjZDJpIiwKKyAgICJtb3ZkeiIsCisgICAicG9wIiwKKyAgICJw
dXNoIiwKKyAgICJtb3ZlIiwKKyAgICJzeGkycCIsCisgICAienhpMnAiLAorICAgIm5vcCIsCisg
ICAiYmllcSIsCisgICAiYmluZXEiLAorICAgImJpYSIsCisgICAiYmlhZXEiLAorICAgImJpYiIs
CisgICAiYmliZXEiLAorICAgImJpZ3QiLAorICAgImJpZ3RlcSIsCisgICAiYmlsdCIsCisgICAi
YmlsdGVxIiwKKyAgICJiYmVxIiwKKyAgICJiYm5lcSIsCisgICAiYmJhIiwKKyAgICJiYmFlcSIs
CisgICAiYmJiIiwKKyAgICJiYmJlcSIsCisgICAiYmJndCIsCisgICAiYmJndGVxIiwKKyAgICJi
Ymx0IiwKKyAgICJiYmx0ZXEiLAorICAgImJ0aW8iLAorICAgImJ0aXMiLAorICAgImJ0aXoiLAor
ICAgImJ0aW56IiwKKyAgICJidGJvIiwKKyAgICJidGJzIiwKKyAgICJidGJ6IiwKKyAgICJidGJu
eiIsCisgICAiam1wIiwKKyAgICJiYWRkaW8iLAorICAgImJhZGRpcyIsCisgICAiYmFkZGl6IiwK
KyAgICJiYWRkaW56IiwKKyAgICJic3ViaW8iLAorICAgImJzdWJpcyIsCisgICAiYnN1Yml6IiwK
KyAgICJic3ViaW56IiwKKyAgICJibXVsaW8iLAorICAgImJtdWxpcyIsCisgICAiYm11bGl6IiwK
KyAgICJibXVsaW56IiwKKyAgICJib3JpbyIsCisgICAiYm9yaXMiLAorICAgImJvcml6IiwKKyAg
ICJib3JpbnoiLAorICAgImJyZWFrIiwKKyAgICJjYWxsIiwKKyAgICJyZXQiLAorICAgImNpZXEi
LAorICAgImNpbmVxIiwKKyAgICJjaWEiLAorICAgImNpYWVxIiwKKyAgICJjaWIiLAorICAgImNp
YmVxIiwKKyAgICJjaWd0IiwKKyAgICJjaWd0ZXEiLAorICAgImNpbHQiLAorICAgImNpbHRlcSIs
CisgICAidGlvIiwKKyAgICJ0aXMiLAorICAgInRpeiIsCisgICAidGlueiIsCisgICAidGJvIiwK
KyAgICJ0YnMiLAorICAgInRieiIsCisgICAidGJueiIsCisgICAicGVlayIsCisgICAicG9rZSIs
CisgICAiYnBlcSIsCisgICAiYnBuZXEiLAorICAgImJwYSIsCisgICAiYnBhZXEiLAorICAgImJw
YiIsCisgICAiYnBiZXEiLAorICAgImJwZ3QiLAorICAgImJwZ3RlcSIsCisgICAiYnBsdCIsCisg
ICAiYnBsdGVxIiwKKyAgICJhZGRwIiwKKyAgICJhbmRwIiwKKyAgICJvcnAiLAorICAgInN1YnAi
LAorICAgInhvcnAiLAorICAgImxvYWRwIiwKKyAgICJjcGVxIiwKKyAgICJjcG5lcSIsCisgICAi
Y3BhIiwKKyAgICJjcGFlcSIsCisgICAiY3BiIiwKKyAgICJjcGJlcSIsCisgICAiY3BndCIsCisg
ICAiY3BndGVxIiwKKyAgICJjcGx0IiwKKyAgICJjcGx0ZXEiLAorICAgInN0b3JlcCIsCisgICAi
YnRwbyIsCisgICAiYnRwcyIsCisgICAiYnRweiIsCisgICAiYnRwbnoiLAorICAgImJhZGRwbyIs
CisgICAiYmFkZHBzIiwKKyAgICJiYWRkcHoiLAorICAgImJhZGRwbnoiCisgIF0KKworWDg2X0lO
U1RSVUNUSU9OUyA9CisgIFsKKyAgICJjZHFpIiwKKyAgICJpZGl2aSIKKyAgXQorCitJTlNUUlVD
VElPTlMgPSBNQUNST19JTlNUUlVDVElPTlMgKyBYODZfSU5TVFJVQ1RJT05TCisKK0lOU1RSVUNU
SU9OX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbignKXwo
JykgKyAnKSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zm
c2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9y
X2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywg
MHgwZmY1ZTc1NSBdCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
b2Zmc2V0cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vb2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTkgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIm9m
ZnNldF9leHRyYWN0b3JfY29uc3RhbnRzIgorCitPRkZTRVRfTUFHSUNfTlVNQkVSUyA9IFsgMHhl
YzU3N2FjNywgMHgwZmY1ZTc1NSBdCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIG9mZnNldHNMaXN0KGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgc2l6ZXNMaXN0KGFzdCkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFJl
dHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhlIEFTVC4gICAgICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBvZmZz
ZXRzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKK2VuZAor
CitkZWYgc2l6ZXNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTaXplb2YpLnVuaXEuc29ydAorZW5k
CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG9mZnNldHNBbmRDb25maWd1
cmF0aW9uSW5kZXgoYXN0LCBmaWxlKSAtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ICAgIFtvZmZzZXRzTGlzdCwgc2l6ZXNMaXN0LCBpbmRleF0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFBhcnNlcyB0aGUgb2Zmc2V0cyBmcm9t
IGEgZmlsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgdGhlICMKKyMgaW5kZXgg
b2YgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB2YWxpZCBpbiB0aGlzIGJ1aWxkIHRhcmdldC4g
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIG9mZnNldHNB
bmRDb25maWd1cmF0aW9uSW5kZXgoYXN0LCBmaWxlKQorICBpbmRleCA9IG5pbAorICBvZmZzZXRz
ID0gW10KKyAgc2l6ZXMgPSBbXQorICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBuaWwKKyAgCisg
IG51bU9mZnNldHMgPSBvZmZzZXRzTGlzdChhc3QpLnNpemUKKyAgCisgIGRlZiByZWFkSW50KGVu
ZGlhbm5lc3MsIGlucCkKKyAgICBieXRlcyA9IFtdCisgICAgNC50aW1lcyB7CisgICAgICBieXRl
cyA8PCBpbnAuZ2V0Ynl0ZQorICAgIH0KKyAgICAKKyAgICBpZiBlbmRpYW5uZXNzID09IDpsaXR0
bGUKKyAgICAgICMgTGl0dGxlIGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDAgfAorICAgICAg
IGJ5dGVzWzFdIDw8IDggfAorICAgICAgIGJ5dGVzWzJdIDw8IDE2IHwKKyAgICAgICBieXRlc1sz
XSA8PCAyNCkKKyAgICBlbHNlCisgICAgICAjIEJpZyBlbmRpYW4KKyAgICAgIChieXRlc1swXSA8
PCAyNCB8CisgICAgICAgYnl0ZXNbMV0gPDwgMTYgfAorICAgICAgIGJ5dGVzWzJdIDw8IDggfAor
ICAgICAgIGJ5dGVzWzNdIDw8IDApCisgICAgZW5kCisgIGVuZAorICAKKyAgWzpsaXR0bGUsIDpi
aWddLmVhY2ggeworICAgIHwgZW5kaWFubmVzcyB8CisgICAgbWFnaWNCeXRlcyA9IFtdCisgICAg
TUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICAgIHwgbnVtYmVyIHwKKyAgICAgIGN1cnJlbnRCeXRl
cyA9IFtdCisgICAgICA0LnRpbWVzIHsKKyAgICAgICAgY3VycmVudEJ5dGVzIDw8IChudW1iZXIg
JiAweGZmKQorICAgICAgICBudW1iZXIgPj49IDgKKyAgICAgIH0KKyAgICAgIGlmIGVuZGlhbm5l
c3MgPT0gOmJpZworICAgICAgICBjdXJyZW50Qnl0ZXMucmV2ZXJzZSEKKyAgICAgIGVuZAorICAg
ICAgbWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0ZXMKKyAgICB9CisgICAgCisgICAgRmlsZS5vcGVu
KGZpbGUsICJyIikgeworICAgICAgfCBpbnAgfAorICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAg
ICAgIGxvb3AgeworICAgICAgICBieXRlID0gaW5wLmdldGJ5dGUKKyAgICAgICAgYnJlYWsgdW5s
ZXNzIGJ5dGUKKyAgICAgICAgaWYgYnl0ZSA9PSBtYWdpY0J5dGVzW3doZXJlSW5NYXJrZXJdCisg
ICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisgICAgICAgICAgaWYgd2hlcmVJbk1hcmtlciA9
PSBtYWdpY0J5dGVzLnNpemUKKyAgICAgICAgICAgICMgV2UgaGF2ZSBhIG1hdGNoISBJZiB3ZSBo
YXZlIG5vdCB5ZXQgcmVhZCB0aGUgZW5kaWFubmVzcyBtYXJrZXIgYW5kIGluZGV4LAorICAgICAg
ICAgICAgIyB0aGVuIHJlYWQgdGhvc2Ugbm93OyBvdGhlcndpc2UgcmVhZCBhbiBvZmZzZXQuCisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIG5vdCBpbmRleAorICAgICAgICAgICAgICBpbmRl
eCA9IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAgICAgZWxzaWYgb2Zmc2V0cy5z
aXplID09IG51bU9mZnNldHMKKyAgICAgICAgICAgICAgc2l6ZXMgPDwgcmVhZEludChlbmRpYW5u
ZXNzLCBpbnApCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIG9mZnNldHMgPDwgcmVh
ZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQor
ICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICAgIGVuZAorICAgICAgfQorICAgIH0K
KyAgICAKKyAgICBicmVhayBpZiBpbmRleAorICB9CisgIAorICByYWlzZSB1bmxlc3MgaW5kZXgK
KyAgcmFpc2UgdW5sZXNzIG9mZnNldHMuc2l6ZSA9PSBudW1PZmZzZXRzCisgIAorICBbb2Zmc2V0
cywgc2l6ZXMsIGluZGV4XQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHMsIHNpemVzKSAtPiBbb2Zmc2V0cywgc2l6
ZXNdICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBCdWlsZHMgYSBtYXBwaW5nIGJl
dHdlZW4gU3RydWN0T2Zmc2V0IG5vZGVzIGFuZCB0aGVpciB2YWx1ZXMuICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgYnVpbGRPZmZzZXRzTWFwKGFzdCwg
b2Zmc2V0cywgc2l6ZXMpCisgIG9mZnNldHNNYXAgPSB7fQorICBzaXplc01hcCA9IHt9CisgIG9m
ZnNldHNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHN0cnVjdE9mZnNldCwgaW5k
ZXggfAorICAgIG9mZnNldHNNYXBbc3RydWN0T2Zmc2V0XSA9IG9mZnNldHNbaW5kZXhdCisgIH0K
KyAgc2l6ZXNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHNpemVvZiwgaW5kZXgg
fAorICAgIHNpemVzTWFwW3NpemVvZl0gPSBzaXplc1tpbmRleF0KKyAgfQorICBbb2Zmc2V0c01h
cCwgc2l6ZXNNYXBdCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vcGFyc2VyLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OTEgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImlu
c3RydWN0aW9ucyIKK3JlcXVpcmUgInJlZ2lzdGVycyIKKworY2xhc3MgVG9rZW4KKyAgYXR0cl9y
ZWFkZXIgOmNvZGVPcmlnaW4sIDpzdHJpbmcKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIHN0cmluZykKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgICBAc3RyaW5nID0g
c3RyaW5nCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIGlmIG90aGVyLmlzX2E/IFRv
a2VuCisgICAgICBAc3RyaW5nID09IG90aGVyLnN0cmluZworICAgIGVsc2UKKyAgICAgIEBzdHJp
bmcgPT0gb3RoZXIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgPX4ob3RoZXIpCisgICAgQHN0
cmluZyA9fiBvdGhlcgorICBlbmQKKyAgCisgIGRlZiB0b19zCisgICAgIiN7QHN0cmluZy5pbnNw
ZWN0fSBhdCBsaW5lICN7Y29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3Io
KmNvbW1lbnQpCisgICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgIHJhaXNlICJQYXJzZSBlcnJv
cjogI3t0b19zfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc306
ICN7Y29tbWVudFswXX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIFRoZSBsZXhlci4gVGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMg
YW4gYXJyYXkgb2YgdG9rZW5zLiAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisKK2RlZiBsZXgoc3RyKQorICByZXN1bHQgPSBbXQorICBsaW5lTnVtYmVyID0g
MQorICB3aGlsZSBub3Qgc3RyLmVtcHR5PworICAgIGNhc2Ugc3RyCisgICAgd2hlbiAvXEFcIyhb
XlxuXSopLworICAgICAgIyBjb21tZW50LCBpZ25vcmUKKyAgICB3aGVuIC9cQVxuLworICAgICAg
cmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICAgIGxpbmVOdW1iZXIgKz0g
MQorICAgIHdoZW4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwg
VG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBXC4oW2EtekEtWjAtOV9dKikv
CisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xB
XyhbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwg
JCYpCisgICAgd2hlbiAvXEEoWyBcdF0rKS8KKyAgICAgICMgd2hpdGVzcGFjZSwgaWdub3JlCisg
ICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhs
aW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAgICB3aGVuIC9cQTAoWzAtN10rKS8KKyAgICAgIHJl
c3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYub2N0LnRvX3MpCisgICAgd2hlbiAvXEEo
WzAtOV0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAg
d2hlbiAvXEE6Oi8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisg
ICAgd2hlbiAvXEFbOixcKFwpXFtcXT1cK1wtKl0vCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3
KGxpbmVOdW1iZXIsICQmKQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJMZXhlciBlcnJvciBhdCBs
aW5lIG51bWJlciAje2xpbmVOdW1iZXJ9LCB1bmV4cGVjdGVkIHNlcXVlbmNlICN7c3RyWzAuLjIw
XS5pbnNwZWN0fSIKKyAgICBlbmQKKyAgICBzdHIgPSAkfi5wb3N0X21hdGNoCisgIGVuZAorICBy
ZXN1bHQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUb2tlbiBp
ZGVudGlmaWNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgaXNSZWdpc3Rl
cih0b2tlbikKKyAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTgorZW5kCisKK2RlZiBpc0luc3Ry
dWN0aW9uKHRva2VuKQorICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVm
IGlzS2V5d29yZCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBKCh0cnVlKXwoZmFsc2UpfChpZil8KHRo
ZW4pfChlbHNlKXwoZWxzaWYpfChlbmQpfChhbmQpfChvcil8KG5vdCl8KG1hY3JvKXwoY29uc3Qp
fChzaXplb2YpfChlcnJvcikpXFovIG9yCisgICAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTiBv
cgorICAgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJZGVudGlm
aWVyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKVxaLyBhbmQg
bm90IGlzS2V5d29yZCh0b2tlbikKK2VuZAorCitkZWYgaXNMYWJlbCh0b2tlbikKKyAgdG9rZW4g
PX4gL1xBXyhbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc0xvY2FsTGFiZWwodG9rZW4p
CisgIHRva2VuID1+IC9cQVwuKFthLXpBLVowLTlfXSopXFovCitlbmQKKworZGVmIGlzVmFyaWFi
bGUodG9rZW4pCisgIGlzSWRlbnRpZmllcih0b2tlbikgb3IgaXNSZWdpc3Rlcih0b2tlbikKK2Vu
ZAorCitkZWYgaXNJbnRlZ2VyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbMC05XS8KK2VuZAorCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgcGFyc2VyLiBUYWtlcyBhbiBh
cnJheSBvZiB0b2tlbnMgYW5kIHJldHVybnMgYW4gQVNULiBNZXRob2RzICAgICAjCisjIG90aGVy
IHRoYW4gcGFyc2UodG9rZW5zKSBhcmUgbm90IGZvciBwdWJsaWMgY29uc3VtcHRpb24uICAgICAg
ICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIFBhcnNl
cgorICBkZWYgaW5pdGlhbGl6ZSh0b2tlbnMpCisgICAgQHRva2VucyA9IHRva2VucworICAgIEBp
ZHggPSAwCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgQHRv
a2Vuc1tAaWR4XQorICAgICAgQHRva2Vuc1tAaWR4XS5wYXJzZUVycm9yKCpjb21tZW50KQorICAg
IGVsc2UKKyAgICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJv
ciBhdCBlbmQgb2YgZmlsZSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9y
IGF0IGVuZCBvZiBmaWxlOiAje2NvbW1lbnRbMF19IgorICAgICAgZW5kCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIGNvbnN1bWUocmVnZXhwKQorICAgIGlmIHJlZ2V4cAorICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9fiByZWdleHAKKyAgICBlbHNlCisgICAgICBwYXJz
ZUVycm9yIHVubGVzcyBAaWR4ID09IEB0b2tlbnMubGVuZ3RoCisgICAgZW5kCisgICAgQGlkeCAr
PSAxCisgIGVuZAorICAKKyAgZGVmIHNraXBOZXdMaW5lCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4
XSA9PSAiXG4iCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFy
c2VQcmVkaWNhdGVBdG9tCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibm90IgorICAgICAgQGlk
eCArPSAxCisgICAgICBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmVzdWx0
ID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0g
PT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gInRydWUiCisgICAgICByZXN1bHQgPSBUcnVlLmluc3RhbmNlCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImZhbHNlIgor
ICAgICAgcmVzdWx0ID0gRmFsc2UuaW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVz
dWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9
IFNldHRpbmcuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0u
c3RyaW5nKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAgICBw
YXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQW5kCisg
ICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9
PSAiYW5kIgorICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAg
ICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRp
Y2F0ZUF0b20KKyAgICAgIHJlc3VsdCA9IEFuZC5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdo
dCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGUK
KyAgICAjIHNvbWUgZXhhbXBsZXMgb2YgcHJlY2VkZW5jZToKKyAgICAjIG5vdCBhIGFuZCBiIC0+
IChub3QgYSkgYW5kIGIKKyAgICAjIGEgYW5kIGIgb3IgYyAtPiAoYSBhbmQgYikgb3IgYworICAg
ICMgYSBvciBiIGFuZCBjIC0+IGEgb3IgKGIgYW5kIGMpCisgICAgCisgICAgcmVzdWx0ID0gcGFy
c2VQcmVkaWNhdGVBbmQKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJvciIKKyAgICAgIGNv
ZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICAgIHJl
c3VsdCA9IE9yLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJl
c3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVZhcmlhYmxlCisgICAgaWYgaXNSZWdpc3RlcihA
dG9rZW5zW0BpZHhdKQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9fiBGUFJfUEFUVEVSTgorICAg
ICAgICByZXN1bHQgPSBGUFJlZ2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBS
ZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhd
LnN0cmluZykKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhd
KQorICAgICAgcmVzdWx0ID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAg
ICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VB
ZGRyZXNzKG9mZnNldCkKKyAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJb
IgorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAKKyAgICAj
IFRocmVlIHBvc3NpYmlsaXRpZXM6CisgICAgIyBbXSAgICAgICAtPiBBYnNvbHV0ZUFkZHJlc3MK
KyAgICAjIFthXSAgICAgIC0+IEFkZHJlc3MKKyAgICAjIFthLGJdICAgIC0+IEJhc2VJbmRleCB3
aXRoIHNjYWxlID0gMQorICAgICMgW2EsYixjXSAgLT4gQmFzZUluZGV4CisgICAgCisgICAgQGlk
eCArPSAxCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcmV0dXJuIEFic29sdXRlQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0KQorICAgIGVu
ZAorICAgIGEgPSBwYXJzZVZhcmlhYmxlCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAg
ICAgIHJlc3VsdCA9IEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIGEsIG9mZnNldCkKKyAgICBlbHNl
CisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgQGlk
eCArPSAxCisgICAgICBiID0gcGFyc2VWYXJpYWJsZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9
PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCAx
LCBvZmZzZXQpCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNb
QGlkeF0gPT0gIiwiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVz
cyBbIjEiLCAiMiIsICI0IiwgIjgiXS5tZW1iZXI/IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAg
ICAgIGMgPSBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICByZXN1
bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIGMsIG9mZnNldCkKKyAgICAgIGVu
ZAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBw
YXJzZUNvbG9uQ29sb24KKyAgICBza2lwTmV3TGluZQorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4KKyAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRv
a2Vuc1tAaWR4XQorICAgIG5hbWVzID0gW0B0b2tlbnNbQGlkeF0uc3RyaW5nXQorICAgIEBpZHgg
Kz0gMQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIjo6IgorICAgICAgQGlkeCArPSAxCisg
ICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAg
bmFtZXMgPDwgQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAor
ICAgIHJhaXNlIGlmIG5hbWVzLmVtcHR5PworICAgIFtjb2RlT3JpZ2luLCBuYW1lc10KKyAgZW5k
CisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHNraXBOZXdMaW5lCisgICAgaWYg
QHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgTmVnSW1tZWRpYXRl
Lm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCBwYXJzZUV4cHJlc3Npb25BdG9tKQor
ICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJl
c3VsdCA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tA
aWR4XSA9PSAiKSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJ
bnRlZ2VyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IEltbWVkaWF0ZS5uZXcoQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pKQorICAgICAgQGlk
eCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4
XQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIGlmIG5h
bWVzLnNpemUgPiAxCisgICAgICAgIFN0cnVjdE9mZnNldC5mb3JGaWVsZChjb2RlT3JpZ2luLCBu
YW1lc1swLi4tMl0uam9pbignOjonKSwgbmFtZXNbLTFdKQorICAgICAgZWxzZQorICAgICAgICBW
YXJpYWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzWzBdKQorICAgICAgZW5kCisgICAgZWxz
aWYgaXNSZWdpc3RlciBAdG9rZW5zW0BpZHhdCisgICAgICBwYXJzZVZhcmlhYmxlCisgICAgZWxz
aWYgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIgorICAgICAgQGlkeCArPSAxCisgICAgICBjb2Rl
T3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAgU2l6ZW9mLmZvck5hbWUoY29k
ZU9yaWdpbiwgbmFtZXMuam9pbignOjonKSkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbk11bAorICAgIHNraXBOZXdM
aW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHdoaWxlIEB0b2tlbnNb
QGlkeF0gPT0gIioiCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gTXVsSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0g
MV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAgZWxzZQor
ICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAK
KyAgZGVmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgQHRva2Vuc1tAaWR4XSA9PSAiLSIgb3IgQHRv
a2Vuc1tAaWR4XSA9PSAic2l6ZW9mIiBvciBpc0ludGVnZXIoQHRva2Vuc1tAaWR4XSkgb3IgaXNW
YXJpYWJsZShAdG9rZW5zW0BpZHhdKQorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb24K
KyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbk11bAorICAgIHdo
aWxlIEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICBp
ZiBAdG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0
ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0
LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICItIgor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gU3ViSW1tZWRpYXRlcy5uZXcoQHRv
a2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisg
ICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1bHQK
KyAgZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1lbnQpCisgICAgaWYgY291bGRCZUV4
cHJlc3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIGlmIEB0b2tlbnNb
QGlkeF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRkcmVzcyhleHByKQorICAgICAgZWxzZQorICAg
ICAgICBleHByCisgICAgICBlbmQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAg
ICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCAw
KSkKKyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IExhYmVs
UmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExhYmVsLmZvck5hbWUoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhd
CisgICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0
b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAg
ZWxzZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50KQorICAgIGVuZAorICBlbmQKKyAgCisgIGRl
ZiBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb25zdW1lKC9cQVwo
XFovKQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAgbG9vcCB7CisgICAgICBza2lwTmV3TGluZQor
ICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAg
IGJyZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAg
dmFyaWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBA
dG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBOZXdM
aW5lCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgQGlkeCArPSAx
CisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IKKyAg
ICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IKKyAgICAgIGVuZAorICAg
IH0KKyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAorICBkZWYgcGFyc2VTZXF1ZW5jZShmaW5hbCwg
Y29tbWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4K
KyAgICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAgICAgIGlmIChAaWR4ID09IEB0b2tlbnMubGVu
Z3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkK
KyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAg
ICAjIGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0g
PT0gImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3Mg
aXNWYXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZm9y
TmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9
PSAiPSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhbHVlID0gcGFyc2VPcGVyYW5kKCJ3
aGlsZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5uYW1lfSIpCisgICAgICAgIGxpc3QgPDwg
Q29uc3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkK
KyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImVycm9yIgorICAgICAgICBsaXN0IDw8IEVy
cm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4pCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBOZXdM
aW5lCisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgIGNvbnN1bWUo
L1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWZUaGVu
RWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VTZXF1ZW5j
ZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRlIG9mIFwiaWYgI3tw
cmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBsaXN0IDw8IGlmVGhlbkVsc2UKKyAgICAgICAg
d2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisgICAgICAgICAgY29kZU9yaWdpbiA9IEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIHNr
aXBOZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAg
ICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAg
ICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwg
cGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRl
IG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICAgIGlmVGhlbkVsc2UuZWxz
ZUNhc2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlmVGhlbkVsc2UgPSBlbHNlQ2FzZQorICAgICAg
ICBlbmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiZWxzZSIKKyAgICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gcGFyc2VTZXF1ZW5jZSgvXEFl
bmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNlIGZvciBcImlmICN7cHJlZGljYXRlLmR1
bXB9XCIiKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiZW5kIgorICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgorICAg
ICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lk
ZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3Ry
aW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3JvVmFy
aWFibGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGlu
c2lkZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGxpc3Qg
PDwgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICAgIGVs
c2lmIGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmlu
ZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBA
dG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAg
ICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5kIGl0J3MgdGhlIGxhc3Qgb25lLgor
ICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQor
ICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAg
ICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLgorICAgICAgICAgIGxpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBlbHNlCisgICAgICAgICAgIyBJdCdzIGRlZmluaXRlbHkgYW4gaW5zdHJ1Y3Rpb24s
IGFuZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJhbmQuCisgICAgICAgICAgb3BlcmFuZHMgPSBb
XQorICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxzZQorICAgICAgICAgIGxvb3AgeworICAg
ICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgaW5zdHJ1
Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0
b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAg
ICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uIGFuZCBvZiB0aGUgc2VxdWVuY2Uu
CisgICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSB0cnVlCisgICAgICAgICAgICAgIGJyZWFr
CisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgICAgICAj
IEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
ICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgICAgICMgVGhlIGVuZCBv
ZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAg
ICBicmVhaworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBwYXJzZUVycm9yKCJFeHBl
Y3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFsfSBhZnRlciAje29wZXJhbmRzLmxhc3Qu
ZHVtcH0iKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgfQorICAgICAgICAgIGxpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAgICAgIGlm
IGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgZW5kCisgICAgICAg
IGVuZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29k
ZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vu
c1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIEB0b2tlbnNbQGlk
eF0gPT0gIigiCisgICAgICAgICAgIyBNYWNybyBpbnZvY2F0aW9uLgorICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBza2lwTmV3TGluZQorICAg
ICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgICAgc2tpcE5ld0xp
bmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAgICAgICAg
ICAgICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQorICAgICAgICAgICAgICAgIGNvZGVPcmlnaW5J
bm5lciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICAg
ICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUg
b2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1bWVudCB0byAje25hbWV9IikKKyAgICAg
ICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBNYWNyby5u
ZXcoY29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlhYmxlcywgYm9keSkKKyAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5z
aWRlIG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgIGVuZAorICAgICAg
ICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIp
IgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAg
ICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9yICJV
bmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5zcGVjdH0gd2hpbGUgcGFyc2luZyBp
bnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgfQorICAgICAgICAgIGVuZAorICAgICAgICAgIGxpc3QgPDwgTWFjcm9DYWxsLm5ldyhjb2Rl
T3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJy
b3IgIkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFtZX0iCisgICAgICAgIGVuZAorICAgICAgZWxz
aWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhdCisg
ICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFt
ZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJz
ZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI6IgorICAgICAgICAjIEl0J3MgYSBsYWJl
bC4KKyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAgICAgbGlzdCA8PCBMYWJlbC5mb3JO
YW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVsc2UKKyAgICAgICAgICBsaXN0IDw8IExv
Y2FsTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbmQKKyAgICAgICAg
QGlkeCArPSAxCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgIkV4cGVjdGluZyB0ZXJt
aW5hbCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNl
Lm5ldyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisgIGVuZAorZW5kCisKK2RlZiBwYXJzZSh0b2tl
bnMpCisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9rZW5zKQorICBwYXJzZXIucGFyc2VTZXF1ZW5j
ZShuaWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3JlZ2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK0dQUlMgPQorICBbCisgICAidDAi
LAorICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMiLAorICAgInQ0IiwKKyAgICJjZnIiLAorICAg
ImEwIiwKKyAgICJhMSIsCisgICAicjAiLAorICAgInIxIiwKKyAgICJzcCIKKyAgXQorCitGUFJT
ID0KKyAgWworICAgImZ0MCIsCisgICAiZnQxIiwKKyAgICJmdDIiLAorICAgImZ0MyIsCisgICAi
ZnQ0IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisgICAiZmExIiwKKyAgICJmYTIiLAorICAgImZh
MyIsCisgICAiZnIiCisgIF0KKworUkVHSVNURVJTID0gR1BSUyArIEZQUlMKKworR1BSX1BBVFRF
Uk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKK0ZQ
Ul9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgRlBSUy5qb2luKCcpfCgnKSArICcpKVxc
WicpCisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBSRUdJU1RFUlMu
am9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vc2V0dGluZ3MucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMjEgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3Jl
cXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAidHJhbnNmb3JtIgor
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBjb21wdXRlU2V0dGluZ3NDb21i
aW5hdGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25zICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkgb2Ygc2V0dGluZ3MgbWFwcywgd2hlcmUg
YSBzZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMgIworIyBhIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBh
c3NlbWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIG1hcCAgICAgICAjCisjIGNvbnRhaW5z
IGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBzZXR0aW5ncyBuYW1lcyAoc3RyaW5ncykg
YW5kICMKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVhbnMgKHRydWUgZm9yIGVuYWJsZWQsIGZhbHNl
IGZvciBkaXNhYmxlZCkuICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KworZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIHNldHRpbmdzQ29tYmlu
YXRpb25zID0gW10KKyAgCisgIGRlZiBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5h
dGlvbnMsIG1hcFNvRmFyLCByZW1haW5pbmcpCisgICAgaWYgcmVtYWluaW5nLmVtcHR5PworICAg
ICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFwU29GYXIKKyAgICAgIHJldHVybgorICAgIGVu
ZAorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdb
MF1dID0gdHJ1ZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywg
bmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1
cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gZmFsc2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0
b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgZW5k
CisgIAorICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIHt9LCAoYXN0
LmZpbHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7fHZ8IHYubmFtZX0gKyBbIlg4NiIsICJBUk12
NyJdKS51bmlxKQorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMKK2VuZAorCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBh
c3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRl
U2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwgLi4uIH0gICAgICAgICAgICAgICAgICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBEZXRlcm1pbmVzIGlmIHRoZSBzZXR0aW5ncyBjb21iaW5hdGlv
biBpcyB2YWxpZCwgYW5kIGlmIHNvLCBjYWxscyAgICAjCisjIHRoZSBibG9jayB3aXRoIHRoZSBp
bmZvcm1hdGlvbiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBjb2RlLiAgICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JTZXR0aW5ncyhjb25jcmV0ZVNl
dHRpbmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0aGlzIGNvbWJpbmF0
b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWltZWRCYWNrZW5kcyA9IDAKKyAgc2VsZWN0
ZWRCYWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2ggeworICAgIHwgYmFja2VuZCB8CisgICAg
aXNTdXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2JhY2tlbmRdCisgICAgcmFpc2UgdW5sZXNz
IGlzU3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWltZWRCYWNrZW5kcyArPSBpZiBpc1N1cHBv
cnRlZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlzU3VwcG9ydGVkCisgICAgICBzZWxlY3Rl
ZEJhY2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0KKyAgCisgIHJldHVybiBpZiBudW1DbGFp
bWVkQmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUgdGhlIEFTVCBkb3duIHRvIGEgbG93LWxl
dmVsIGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25hbHMpLgorICBsb3dMZXZlbEFTVCA9IGFz
dC5yZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIHlpZWxkIGNvbmNyZXRl
U2V0dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJhY2tlbmQKK2VuZAorCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9u
KGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRl
U2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAgICAgICAgICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwg
c2V0dGluZ3NDb21iaW5hdGlvbnMpIHsgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGlu
Z3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBFeGVjdXRlcyB0aGUgZ2l2ZW4gYmxvY2sgZm9yIGVhY2ggdmFsaWQgc2V0
dGluZ3MgY29tYmluYXRpb24gaW4gdGhlICAjCisjIHNldHRpbmdzIG1hcC4gVGhlIGFzdCBwYXNz
ZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQgICAgICAgICAgICAgICMKKyMgKGFzdC5yZXNv
bHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBmaXJzdCBmb3JtIHdpbGwgY2FsbCBjb21wdXRl
U2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSBmb3IgeW91LiAgICMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFz
dCwgKm9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMpCisgIHJhaXNlIGlmIG9wdGlvbmFsU2V0
dGluZ3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEKKyAgCisgIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21i
aW5hdGlvbnMuZW1wdHk/CisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBjb21wdXRlU2V0dGlu
Z3NDb21iaW5hdGlvbnMoYXN0KQorICBlbHNlCisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBv
cHRpb25hbFNldHRpbmdzQ29tYmlhdGlvbnNbMF0KKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJp
bmF0aW9ucy5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgaW5kZXgg
fAorICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgeworICAgICAgfCBjb25j
cmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgICAgeWllbGQgY29uY3Jl
dGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgfQorICB9CitlbmQK
KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgY3BwU2V0dGluZ3NUZXN0KGNv
bmNyZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIFJldHVybnMgdGhlIEMrKyBjb2RlIHVzZWQgdG8gdGVzdCBpZiB3ZSBh
cmUgaW4gYSBjb25maWd1cmF0aW9uIHRoYXQgICMKKyMgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVu
IGNvbmNyZXRlIHNldHRpbmdzLiAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNl
dHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdzLnRvX2EuY29sbGVjdHsKKyAgICB8
IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisgICAgICAgIiIKKyAgICAgZWxzZQorICAgICAgICIh
IgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIgKyBwYWlyWzBdCisgIH0uam9pbigiICYmICIp
CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgaXNBU1RFcnJvbmVv
dXMoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIFRlc3RzIHRvIHNlZSBpZiB0aGUgQVNUIGNsYWltcyB0aGF0
IHRoZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUgICMKKyMgdXNlcidzIGNvZGUsIGFmdGVy
IHNldHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4gICAgICAgICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGlzQVNURXJyb25lb3VzKGFzdCkK
KyAgbm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5PworZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFbWl0
cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBnaXZlbiBjb25maWd1
cmF0aW9uLiAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgYXNzZXJ0
Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICBwdXRzIGNwcFNldHRpbmdzVGVzdChj
b25jcmV0ZVNldHRpbmdzKQorICBwdXRzICIjZWxzZSIKKyAgcHV0cyAiI2Vycm9yIFwiQ29uZmln
dXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAgcHV0cyAiI2VuZGlmIgorZW5kCisKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRl
U2V0dGluZ3MsIGFzdCwgYmFja2VuZCkgeyAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVT
ZXR0aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4uIH0gICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIEVtaXRzIGFsbCByZWxldmFudCBndWFyZHMgdG8gc2VlIGlmIHRo
ZSBjb25maWd1cmF0aW9uIGhvbGRzIGFuZCAgICAgICMKKyMgY2FsbHMgdGhlIGJsb2NrIGlmIHRo
ZSBjb25maWd1cmF0aW9uIGlzIG5vdCBlcnJvbmVvdXMuICAgICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0aW9u
KGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkKKyAgcHV0cyBjcHBTZXR0aW5nc1Rlc3Qo
Y29uY3JldGVTZXR0aW5ncykKKyAgCisgIGlmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAgICBwdXRz
ICIjZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uXCIiCisgIGVsc2lmIG5vdCBXT1JLSU5H
X0JBQ0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICBwdXRzICIjZXJyb3IgXCJUaGlzIGJhY2tl
bmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UKKyAgICB5aWVsZCBjb25jcmV0ZVNl
dHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICBwdXRzICIjZW5kaWYiCitlbmQKKwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZW1pdENvZGVJbkFsbENvbmZpZ3Vy
YXRpb25zKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAg
fCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAgICAg
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRW1pdHMgZ3VhcmQgY29kZXMgZm9yIGFsbCB2
YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxzIHRoZSBibG9jayAgIworIyBmb3IgdGhvc2Ug
Y29uZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5kIG5vdCBlcnJvbmVvdXMuICAgICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZW1pdENvZGVJbkFs
bENvbmZpZ3VyYXRpb25zKGFzdCkKKyAgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihh
c3QpIHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRl
eCB8CisgICAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgICB5aWVs
ZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICBwdXRz
ICIjZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
MzQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFz
dCIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZl
IGFueSBJZlRoZW5FbHNlIG5vZGVzIGJ5ICAgICAgICMKKyMgc3Vic3RpdHV0aW5nIGNvbmNyZXRl
IGJvb2xlYW4gdmFsdWVzIGZvciBlYWNoIFNldHRpbmcuICAgICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZVNl
dHRpbmdzKHNldHRpbmdzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAg
ICAgY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIH0KKyAgZW5kCitlbmQKKwor
Y2xhc3MgVHJ1ZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAg
ZW5kCitlbmQKKworY2xhc3MgRmFsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykK
KyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcKKyAgZGVmIHJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICBzZXR0aW5nc1tAbmFtZV0uYXNOb2RlCisgIGVuZAorZW5kCisK
K2NsYXNzIEFuZAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5y
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIGFuZCBAcmlnaHQucmVzb2x2ZVNldHRpbmdz
KHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE9yCisgIGRlZiBy
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykudmFsdWUgb3IgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFz
Tm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBOb3QKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykKKyAgICAobm90IEBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5h
c05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZQorICBkZWYgcmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKQorICAgIGlmIEBwcmVkaWNhdGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdz
KS52YWx1ZQorICAgICAgQHRoZW5DYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBl
bHNlCisgICAgICBAZWxzZUNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVuZAor
ICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLmRl
bWFjcm9pZnkobWFjcm9zKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIG5vZGUuc3Vic3RpdHV0ZShtYXBwaW5nKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBkZW1hY3JvaWZ5KCkg
Y29uc3RydWN0cyBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBNYWNybyAgICAgICAj
CisjIG5vZGVzLCB3aGlsZSBzdWJzdGl0dXRlKCkgcmVwbGFjZXMgVmFyaWFibGUgbm9kZXMgd2l0
aCB0aGUgZ2l2ZW4gICAgICMKKyMgbm9kZXMgaW4gdGhlIG1hcHBpbmcuICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAg
bWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5kZW1hY3JvaWZ5KG1h
Y3JvcykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBt
YXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobWFw
cGluZykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykK
KyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1
dGVMYWJlbHMobWFwcGluZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvCisgIGRl
ZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbXlNYXBwaW5nID0ge30KKyAgICBtYXBwaW5nLmVh
Y2hfcGFpciB7CisgICAgICB8IGtleSwgdmFsdWUgfAorICAgICAgdW5sZXNzIEB2YXJpYWJsZXMu
aW5jbHVkZT8ga2V5CisgICAgICAgIG15TWFwcGluZ1trZXldID0gdmFsdWUKKyAgICAgIGVuZAor
ICAgIH0KKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1
YnN0aXR1dGUobXlNYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUK
KyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBt
YXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAor
CitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAg
aWYgbWFwcGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNl
bGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHN1YnN0aXR1
dGUoY29uc3RhbnRzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIG15Q29uc3RhbnRzID0gY29uc3Rh
bnRzLmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0u
aXNfYT8gQ29uc3REZWNsCisgICAgICAgIG15Q29uc3RhbnRzW2l0ZW0udmFyaWFibGVdID0gaXRl
bS52YWx1ZS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZWxzZQorICAgICAgICBuZXdM
aXN0IDw8IGl0ZW0uc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgIGVuZAorICAgIH0KKyAg
ICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5kCisgIAorICBkZWYgcmVu
YW1lTGFiZWxzCisgICAgbWFwcGluZyA9IHt9CisgICAgCisgICAgQGxpc3QuZWFjaCB7CisgICAg
ICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBMb2NhbExhYmVsCisgICAgICAgIG1hcHBp
bmdbaXRlbV0gPSBMb2NhbExhYmVsLnVuaXF1ZQorICAgICAgZW5kCisgICAgfQorICAgIAorICAg
IHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgZW5kCisgIAorICBkZWYgZGVtYWNyb2lmeSht
YWNyb3MpCisgICAgbXlNYWNyb3MgPSBtYWNyb3MuZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAg
ICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICBteU1hY3Jvc1tp
dGVtLm5hbWVdID0gaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3QgPSBbXQorICAg
IEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gTWFjcm8K
KyAgICAgICAgIyBJZ25vcmUuCisgICAgICBlbHNpZiBpdGVtLmlzX2E/IE1hY3JvQ2FsbAorICAg
ICAgICBtYXBwaW5nID0ge30KKyAgICAgICAgbXlNeU1hY3JvcyA9IG15TWFjcm9zLmR1cAorICAg
ICAgICByYWlzZSAiQ291bGQgbm90IGZpbmQgbWFjcm8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5j
b2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG15TWFjcm9zW2l0ZW0ubmFtZV0KKyAgICAgICAgcmFp
c2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxsIHRvICN7aXRlbS5uYW1lfSBhdCAj
e2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVtLm9wZXJhbmRzLnNpemUgPT0gbXlN
YWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQorICAgICAgICBpdGVtLm9wZXJhbmRzLnNp
emUudGltZXMgeworICAgICAgICAgIHwgaWR4IHwKKyAgICAgICAgICBpZiBpdGVtLm9wZXJhbmRz
W2lkeF0uaXNfYT8gVmFyaWFibGUgYW5kIG15TWFjcm9zW2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1l
XQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tp
ZHhdLm5hbWVdID0gbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAg
ICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBuaWwK
KyAgICAgICAgICBlbHNpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gTWFjcm8KKyAgICAgICAg
ICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9
IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5h
bWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9IG5pbAor
ICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9
IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIG5l
d0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5LnN1YnN0aXR1dGUobWFwcGluZykuZGVt
YWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMubGlzdAorICAgICAgZWxzZQorICAgICAg
ICBuZXdMaXN0IDw8IGl0ZW0uZGVtYWNyb2lmeShteU1hY3JvcykKKyAgICAgIGVuZAorICAgIH0K
KyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkuc3Vic3RpdHV0ZSh7fSkKKyAg
ZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNv
bHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBoYXMgb2Zm
c2V0IHZhbHVlcyBpbnN0ZWFkIG9mIHN5bWJvbGljICAgICAgICMKKyMgb2Zmc2V0cy4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVz
b2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBj
aGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICB9
CisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldAorICBkZWYgcmVzb2x2ZU9mZnNldHMo
b2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgb2Zmc2V0c1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5l
dyhjb2RlT3JpZ2luLCBvZmZzZXRzW3NlbGZdKQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBl
bmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZz
ZXRzLCBzaXplcykKKyAgICBpZiBzaXplc1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2Rl
T3JpZ2luLCBzaXplc1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVu
ZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUuZm9sZCAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBSZXNvbHZlIGNvbnN0YW50IHJlZmVyZW5jZXMgYW5kIGNv
bXB1dGUgYXJpdGhtZXRpYyBleHByZXNzaW9ucy4gICAgICAjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiBmb2xkCisgICAgbWFwQ2hpbGRyZW4g
eworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5mb2xkCisgICAgfQorICBlbmQKK2VuZAor
CitjbGFzcyBBZGRJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xk
CisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQu
aXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1l
ZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICsgQHJpZ2h0
LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisg
ICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1
cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5s
ZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4s
IEBsZWZ0LnZhbHVlIC0gQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1l
ZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0g
QHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRl
CisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1l
ZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICogQHJpZ2h0LnZhbHVlKQorICBlbmQK
K2VuZAorCitjbGFzcyBOZWdJbW1lZGlhdGUKKyAgZGVmIGZvbGQKKyAgICBAY2hpbGQgPSBAY2hp
bGQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAY2hpbGQuaXNfYT8gSW1tZWRpYXRlCisg
ICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtQGNoaWxkLnZhbHVlKQorICBlbmQKK2VuZAor
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnJlc29sdmVBZnRlclNl
dHRpbmdzKG9mZnNldHMsIHNpemVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgQ29tcGlsZSBhc3NlbWJseSBhZ2FpbnN0IGEgc2V0IG9mIG9mZnNldHMu
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZShvZmZzZXRzLCBzaXplcykKKyAgICBk
ZW1hY3JvaWZ5KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykuZm9sZAorICBlbmQK
K2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY2NCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICBj
YXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0MSIsICJhMSIsICJyMSIsICJ0
MiIsICJ0MyIKKyAgICAgIHRydWUKKyAgICB3aGVuICJ0NCIsICJjZnIiCisgICAgICBmYWxzZQor
ICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJh
bmQoa2luZCkKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAg
IGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWFsIgorICAgICAgd2hlbiA6
aGFsZgorICAgICAgICAiJWF4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWF4IgorICAg
ICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDEiLCAiYTEiLCAi
cjEiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkbCIKKyAg
ICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVkeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAi
JWVkeCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQy
IgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlY2wiCisgICAg
ICB3aGVuIDpoYWxmCisgICAgICAgICIlY3giCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVl
Y3giCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MyIK
KyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWJsIgorICAgICAg
d2hlbiA6aGFsZgorICAgICAgICAiJWJ4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWJ4
IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDQiCisg
ICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzaWwiCisgICAgICB3
aGVuIDpoYWxmCisgICAgICAgICIlc2kiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlc2ki
CisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJjZnIiCisg
ICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkaWwiCisgICAgICB3
aGVuIDpoYWxmCisgICAgICAgICIlZGkiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlZGki
CisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJzcCIKKyAg
ICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNwbCIKKyAgICAgIHdo
ZW4gOmhhbGYKKyAgICAgICAgIiVzcCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzcCIK
KyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIHJh
aXNlCisgICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7
eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBk
ZWYgeDg2T3BlcmFuZChraW5kKQorICAgIHJhaXNlIHVubGVzcyBraW5kID09IDpkb3VibGUKKyAg
ICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAiZmEwIiwgImZyIgorICAgICAgIiV4bW0wIgor
ICAgIHdoZW4gImZ0MSIsICJmYTEiCisgICAgICAiJXhtbTEiCisgICAgd2hlbiAiZnQyIiwgImZh
MiIKKyAgICAgICIleG1tMiIKKyAgICB3aGVuICJmdDMiLCAiZmEzIgorICAgICAgIiV4bW0zIgor
ICAgIHdoZW4gImZ0NCIKKyAgICAgICIleG1tNCIKKyAgICB3aGVuICJmdDUiCisgICAgICAiJXht
bTUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4ODZDYWxs
T3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgSW1tZWRpYXRlCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiQje3ZhbHVlfSIK
KyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIje3ZhbHVlfSIKKyAgZW5k
CitlbmQKKworY2xhc3MgQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVl
CisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje29mZnNldC52YWx1
ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9KSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFu
ZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3Mg
QmFzZUluZGV4CisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAg
CisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2
T3BlcmFuZCg6aW50KX0sICN7aW5kZXgueDg2T3BlcmFuZCg6aW50KX0sICN7c2NhbGV9KSIKKyAg
ZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nm9wZXJhbmQoa2lu
ZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIHN1cHBvcnRz
OEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkK
KyAgICAiI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtp
bmQpCisgICAgIioje2FkZHJlc3MudmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJl
ZmVyZW5jZQorICBkZWYgeDg2TGFiZWwKKyAgICBzYW5pdGl6ZUxhYmVsTmFtZShuYW1lKQorICBl
bmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgeDg2TGFiZWwKKyAgZW5kCitlbmQK
KworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2TGFiZWwKKyAgICAiX19vYV8i
K25hbWVbMS4uLTFdCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICB4ODZM
YWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbgorICBkZWYgeDg2T3BlcmFuZHMo
KmtpbmRzKQorICAgIHJhaXNlIHVubGVzcyBraW5kcy5zaXplID09IG9wZXJhbmRzLnNpemUKKyAg
ICByZXN1bHQgPSBbXQorICAgIGtpbmRzLnNpemUudGltZXMgeworICAgICAgfCBpZHggfAorICAg
ICAgcmVzdWx0IDw8IG9wZXJhbmRzW2lkeF0ueDg2T3BlcmFuZChraW5kc1tpZHhdKQorICAgIH0K
KyAgICByZXN1bHQuam9pbigiLCAiKQorICBlbmQKKworICBkZWYgeDg2U3VmZml4KGtpbmQpCisg
ICAgY2FzZSBraW5kCisgICAgd2hlbiA6Ynl0ZQorICAgICAgImIiCisgICAgd2hlbiA6aGFsZgor
ICAgICAgInciCisgICAgd2hlbiA6aW50CisgICAgICAibCIKKyAgICB3aGVuIDpkb3VibGUKKyAg
ICAgICJzZCIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRl
ZiBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG51bU9wZXJhbmRzKQor
ICAgIGlmIG51bU9wZXJhbmRzID09IDMKKyAgICAgIGlmIG9wZXJhbmRzWzBdID09IG9wZXJhbmRz
WzJdCisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2lm
IG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29k
ZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVy
YW5kKGtpbmQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJcdG1vdiN7eDg2U3Vm
Zml4KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJd
Lng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5k
KX0iCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChr
aW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wKG9wY29kZSwga2lu
ZCkKKyAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRz
LnNpemUpCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNoaWZ0KG9wY29kZSwga2luZCkKKyAg
ICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0
ZXJJRC5mb3JOYW1lKCJ0MiIpCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmludCl9LCAlZWN4IgorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAlY2wsICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICBlbmQKKyAgZW5kCisg
IAorICBkZWYgaGFuZGxlWDg2RG91YmxlQnJhbmNoKGJyYW5jaE9wY29kZSwgbW9kZSkKKyAgICBj
YXNlIG1vZGUKKyAgICB3aGVuIDpub3JtYWwKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0iCisgICAgd2hlbiA6cmV2ZXJzZQorICAgICAgJGFzbS5wdXRzICJcdHVjb21p
c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDpkb3VibGUpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSBtb2RlLmluc3BlY3QKKyAg
ICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0am5lICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICBl
bmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlKGtpbmQpCisgICAgaWYgb3BlcmFuZHNb
MF0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCAoYnJhbmNo
T3Bjb2RlID09ICJqZSIgb3IgYnJhbmNoT3Bjb2RlID09ICJqbmUiKQorICAgICAgJGFzbS5wdXRz
ICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQp
fSIKKyAgICBlbHNpZiBvcGVyYW5kc1sxXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzFd
LnZhbHVlID09IDAgYW5kIChicmFuY2hPcGNvZGUgPT0gImplIiBvciBicmFuY2hPcGNvZGUgPT0g
ImpuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHRj
bXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kcyhraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVm
IGhhbmRsZVg4NkludEJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50
Q29tcGFyZShraW5kKQorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5k
c1syXS54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldChzZXRPcGNvZGUs
IG9wZXJhbmQpCisgICAgaWYgb3BlcmFuZC5zdXBwb3J0czhCaXRPblg4NgorICAgICAgJGFzbS5w
dXRzICJcdEB7c2V0T3Bjb2RlfSAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9IgorICAgICAg
JGFzbS5wdXRzICJcdG1vdnpibCAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJh
bmQueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHhjaGds
ICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHRA
e3NldE9wY29kZX0gJWFsIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAlYWwsICVlYXgiCisg
ICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4
IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlU2V0KHNldE9w
Y29kZSwga2luZCkKKyAgICBoYW5kbGVYODZJbnRDb21wYXJlKGtpbmQpCisgICAgaGFuZGxlWDg2
U2V0KHNldE9wY29kZSwgb3BlcmFuZHNbMl0pCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlRl
c3Qoa2luZCkKKyAgICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgICAgY2FzZSBvcGVyYW5kcy5zaXpl
CisgICAgd2hlbiAyCisgICAgICBtYXNrID0gSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtMSkK
KyAgICB3aGVuIDMKKyAgICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICAgIGVsc2UKKyAgICAgIHJh
aXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgIAorICAgIGlmIG1hc2suaXNfYT8gSW1tZWRp
YXRlIGFuZCBtYXNrLnZhbHVlID09IC0xCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3Vm
Zml4KGtpbmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQo
a2luZCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2lu
ZCl9ICN7bWFzay54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2QnJhbmNoVGVzdChicmFuY2hPcGNv
ZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgICRhc20ucHV0cyAiXHQje2Jy
YW5jaE9wY29kZX0gI3tvcGVyYW5kcy5sYXN0Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYg
aGFuZGxlWDg2U2V0VGVzdChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5k
KQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRzLmxhc3QpCisgIGVuZAorICAK
KyAgZGVmIGhhbmRsZVg4Nk9wQnJhbmNoKG9wY29kZSwgYnJhbmNoT3Bjb2RlLCBraW5kKQorICAg
IGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSAt
IDEpCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0
ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1sy
XQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20u
cHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0Lng4NkxhYmVsfSIKKyAgZW5kCisg
IAorICBkZWYgaGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBpZiBv
cGVyYW5kcy5zaXplID09IDQgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAk
YXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
JGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICBoYW5kbGVYODZPcFdp
dGhOdW1PcGVyYW5kcygic3ViIiwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgZW5kCisg
ICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3Bl
cmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAg
IGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAi
XHQje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBk
ZWYgbG93ZXJYODYKKyAgICBjYXNlIG9wY29kZQorICAgIHdoZW4gImFkZGkiLCAiYWRkcCIKKyAg
ICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRl
CisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAg
ICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIGlm
IG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAgICAgICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0g
b3BlcmFuZHNbMl0KKyAgICAgICAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAkYXNtLnB1dHMgIlx0bGVhbCAje29w
ZXJhbmRzWzBdLnZhbHVlfSgje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBvcGVy
YW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAg
cmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2Ug
dW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJc
dGxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
ZWxzZQorICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBd
CisgICAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0i
CisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAgd2hlbiAiYW5kaSIsICJhbmRwIgorICAgICAg
aGFuZGxlWDg2T3AoImFuZGwiLCA6aW50KQorICAgIHdoZW4gImxzaGlmdGkiCisgICAgICBoYW5k
bGVYODZTaGlmdCgic2FsbCIsIDppbnQpCisgICAgd2hlbiAibXVsaSIKKyAgICAgIGlmIG9wZXJh
bmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICRh
c20ucHV0cyAiXHRpbXVsbCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQsIDppbnQpfSIKKyAgICAg
IGVsc2UKKyAgICAgICAgaGFuZGxlWDg2T3AoImltdWxsIiwgOmludCkKKyAgICAgIGVuZAorICAg
IHdoZW4gIm5lZ2kiCisgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje3g4Nk9wZXJhbmRzKDppbnQp
fSIKKyAgICB3aGVuICJub3RpIgorICAgICAgJGFzbS5wdXRzICJcdG5vdGwgI3t4ODZPcGVyYW5k
cyg6aW50KX0iCisgICAgd2hlbiAib3JpIiwgIm9ycCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJvcmwi
LCA6aW50KQorICAgIHdoZW4gInJzaGlmdCIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYXJsIiwg
OmludCkKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzaHJsIiwg
OmludCkKKyAgICB3aGVuICJzdWJpIiwgInN1YnAiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09
IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiXHRu
ZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICRhc20ucHV0cyAi
XHRhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIGhhbmRsZVg4Nk9wKCJzdWJsIiwg
OmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gInhvcmkiLCAieG9ycCIKKyAgICAgIGhhbmRsZVg4
Nk9wKCJ4b3JsIiwgOmludCkKKyAgICB3aGVuICJsb2FkaSIsICJzdG9yZWkiLCAibG9hZHAiLCAi
c3RvcmVwIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50
KX0iCisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJsICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgIHdoZW4gImxvYWRoIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnp3bCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICB3aGVuICJzdG9yZWIiCisgICAgICAkYXNtLnB1dHMgIlx0bW92YiAje3g4Nk9wZXJhbmRz
KDpieXRlLCA6Ynl0ZSl9IgorICAgIHdoZW4gImxvYWRkIiwgIm1vdmVkIiwgInN0b3JlZCIKKyAg
ICAgICRhc20ucHV0cyAiXHRtb3ZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIK
KyAgICB3aGVuICJhZGRkIgorICAgICAgJGFzbS5wdXRzICJcdGFkZHNkICN7eDg2T3BlcmFuZHMo
OmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImRpdmQiCisgICAgICAkYXNtLnB1dHMgIlx0
ZGl2c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3ViZCIK
KyAgICAgICRhc20ucHV0cyAiXHRzdWJzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUp
fSIKKyAgICB3aGVuICJtdWxkIgorICAgICAgJGFzbS5wdXRzICJcdG11bHNkICN7eDg2T3BlcmFu
ZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInNxcnRkIgorICAgICAgJGFzbS5wdXRz
ICJcdHNxcnRzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImNpMmQiCisgICAgICAkYXNtLnB1
dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJiZGVxIgorICAgICAgaXNVbm9y
ZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZQorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje0xhYmVsUmVmZXJlbmNlLm5ldyhj
b2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJcdGpl
ICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIG9wZXJhbmRzWzJdKS54ODZMYWJlbH0i
CisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICB3aGVuICJiZG5lcSIKKyAgICAg
IGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiam5lIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGd0Igor
ICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRn
dGVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYWUiLCA6bm9ybWFsKQorICAgIHdo
ZW4gImJkbHQiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphIiwgOnJldmVyc2UpCisg
ICAgd2hlbiAiYmRsdGVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYWUiLCA6cmV2
ZXJzZSkKKyAgICB3aGVuICJiZGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpl
IiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZG5lcXVuIgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2Nh
bExhYmVsLnVuaXF1ZQorICAgICAgaXNFcXVhbCA9IExvY2FsTGFiZWwudW5pcXVlCisgICAgICAk
YXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdGpw
ICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS54ODZMYWJlbH0i
CisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwg
aXNFcXVhbCkueDg2TGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAg
ICAkYXNtLnB1dHMgIlx0am1wICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAgaXNFcXVh
bC5sb3dlcigiWDg2IikKKyAgICB3aGVuICJiZGd0dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVC
cmFuY2goImpiIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRndGVxdW4iCisgICAgICBoYW5kbGVY
ODZEb3VibGVCcmFuY2goImpiZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHR1biIKKyAgICAg
IGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHRlcXVu
IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6bm9ybWFsKQorICAgIHdoZW4g
ImJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
JGFzbS5wdXRzICJcdGNtcGwgJDB4ODAwMDAwMDAgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAg
ICB3aGVuICJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgIHdoZW4gImJjZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHRzZDJzaSAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgICAgJGFzbS5wdXRzICJcdHRlc3RsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0
amUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0c2kyc2Qg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMg
Ilx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAg
ICAgICRhc20ucHV0cyAiXHRqcCAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgICRhc20u
cHV0cyAiXHRqbmUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgd2hlbiAibW92ZHoiCisg
ICAgICAkYXNtLnB1dHMgIlx0eG9ycGQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUp
fSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJwb3AiCisg
ICAgICAkYXNtLnB1dHMgIlx0cG9wICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgd2hlbiAicHVzaCIKKyAgICAgICRhc20ucHV0cyAiXHRwdXNoICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6eGkycCIKKyAgICAg
IHVubGVzcyBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1sxXQorICAgICAgICAkYXNtLnB1dHMgIlx0
bW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgIGVuZAorICAgIHdoZW4gIm5v
cCIKKyAgICAgICRhc20ucHV0cyAiXHRub3AiCisgICAgd2hlbiAiYmllcSIsICJicGVxIgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDppbnQpCisgICAgd2hlbiAiYmluZXEiLCAiYnBu
ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDppbnQpCisgICAgd2hlbiAiYmlh
IiwgImJwYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6aW50KQorICAgIHdoZW4g
ImJpYWVxIiwgImJwYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6aW50KQor
ICAgIHdoZW4gImJpYiIsICJicGIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmlu
dCkKKyAgICB3aGVuICJiaWJlcSIsICJicGJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgi
amJlIiwgOmludCkKKyAgICB3aGVuICJiaWd0IiwgImJwZ3QiCisgICAgICBoYW5kbGVYODZJbnRC
cmFuY2goImpnIiwgOmludCkKKyAgICB3aGVuICJiaWd0ZXEiLCAiYnBndGVxIgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6aW50KQorICAgIHdoZW4gImJpbHQiLCAiYnBsdCIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6aW50KQorICAgIHdoZW4gImJpbHRlcSIsICJi
cGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsdGVxIiwgOmludCkKKyAgICB3aGVu
ICJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDpieXRlKQorICAgIHdoZW4g
ImJibmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6Ynl0ZSkKKyAgICB3aGVu
ICJiYmEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphIiwgOmJ5dGUpCisgICAgd2hlbiAi
YmJhZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphZSIsIDpieXRlKQorICAgIHdoZW4g
ImJiYiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6Ynl0ZSkKKyAgICB3aGVuICJi
YmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmJ5dGUpCisgICAgd2hlbiAi
YmJndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamciLCA6Ynl0ZSkKKyAgICB3aGVuICJi
Ymd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnZSIsIDpieXRlKQorICAgIHdoZW4g
ImJibHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwgOmJ5dGUpCisgICAgd2hlbiAi
YmJsdGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbHRlcSIsIDpieXRlKQorICAgIHdo
ZW4gImJ0aW8iLCAiYnRwbyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmludCkK
KyAgICB3aGVuICJidGlzIiwgImJ0cHMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIs
IDppbnQpCisgICAgd2hlbiAiYnRpeiIsICJidHB6IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVz
dCgianoiLCA6aW50KQorICAgIHdoZW4gImJ0aW56IiwgImJ0cG56IgorICAgICAgaGFuZGxlWDg2
QnJhbmNoVGVzdCgiam56IiwgOmludCkKKyAgICB3aGVuICJidGlvIgorICAgICAgaGFuZGxlWDg2
QnJhbmNoVGVzdCgiam8iLCA6Ynl0ZSkKKyAgICB3aGVuICJidGlzIgorICAgICAgaGFuZGxlWDg2
QnJhbmNoVGVzdCgianMiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGl6IgorICAgICAgaGFuZGxlWDg2
QnJhbmNoVGVzdCgianoiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGlueiIKKyAgICAgIGhhbmRsZVg4
NkJyYW5jaFRlc3QoImpueiIsIDpieXRlKQorICAgIHdoZW4gImptcCIKKyAgICAgICRhc20ucHV0
cyAiXHRqbXAgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAi
YmFkZGlvIiwgImJhZGRwbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGQiLCAiam8iLCA6
aW50KQorICAgIHdoZW4gImJhZGRpcyIsICJiYWRkcHMiCisgICAgICBoYW5kbGVYODZPcEJyYW5j
aCgiYWRkIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJiYWRkaXoiLCAiYmFkZHB6IgorICAgICAg
aGFuZGxlWDg2T3BCcmFuY2goImFkZCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlueiIs
ICJiYWRkcG56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZCIsICJqbnoiLCA6aW50KQor
ICAgIHdoZW4gImJzdWJpbyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam8iLCA6aW50KQor
ICAgIHdoZW4gImJzdWJpcyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianMiLCA6aW50KQor
ICAgIHdoZW4gImJzdWJpeiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianoiLCA6aW50KQor
ICAgIHdoZW4gImJzdWJpbnoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpueiIsIDppbnQp
CisgICAgd2hlbiAiYm11bGlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm11bCIsICJqbyIs
IDppbnQpCisgICAgd2hlbiAiYm11bGlzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm11bCIs
ICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm11bGl6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2go
Im11bCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlueiIKKyAgICAgIGhhbmRsZVg4Nk9w
QnJhbmNoKCJtdWwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJib3JpbyIKKyAgICAgIGhhbmRs
ZVg4Nk9wQnJhbmNoKCJvciIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXMiCisgICAgICBo
YW5kbGVYODZPcEJyYW5jaCgib3IiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJvcml6IgorICAg
ICAgaGFuZGxlWDg2T3BCcmFuY2goIm9yIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJib3Jpbnoi
CisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3IiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJi
cmVhayIKKyAgICAgICRhc20ucHV0cyAiXHRpbnQgJDMiCisgICAgd2hlbiAiY2FsbCIKKyAgICAg
ICRhc20ucHV0cyAiXHRjYWxsICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9Igor
ICAgIHdoZW4gInJldCIKKyAgICAgICRhc20ucHV0cyAiXHRyZXQiCisgICAgd2hlbiAiY2llcSIs
ICJjcGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQpCisgICAg
d2hlbiAiY2luZXEiLCAiY3BuZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRu
ZSIsIDppbnQpCisgICAgd2hlbiAiY2lhIiwgImNwYSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBh
cmVTZXQoInNldGEiLCA6aW50KQorICAgIHdoZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAgaGFu
ZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YWUiLCA6aW50KQorICAgIHdoZW4gImNpYiIsICJjcGIi
CisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiIiwgOmludCkKKyAgICB3aGVuICJj
aWJlcSIsICJjcGJlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGJlIiwgOmlu
dCkKKyAgICB3aGVuICJjaWd0IiwgImNwZ3QiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0
KCJzZXRnIiwgOmludCkKKyAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAgaGFuZGxl
WDg2SW50Q29tcGFyZVNldCgic2V0Z2UiLCA6aW50KQorICAgIHdoZW4gImNpbHQiLCAiY3BsdCIK
KyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGwiLCA6aW50KQorICAgIHdoZW4gImNp
bHRlcSIsICJjcGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDpp
bnQpCisgICAgd2hlbiAidGlvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQp
CisgICAgd2hlbiAidGlzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDppbnQpCisg
ICAgd2hlbiAidGl6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDppbnQpCisgICAg
d2hlbiAidGlueiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmludCkKKyAgICB3
aGVuICJ0Ym8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgd2hl
biAidGJzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAgIHdoZW4g
InRieiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0
Ym56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJw
ZWVrIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3tvcGVyYW5kc1swXS52YWx1ZSAqIDR9KCVl
c3ApLCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInBva2UiCisg
ICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAj
e29wZXJhbmRzWzFdLnZhbHVlICogNH0oJWVzcCkiCisgICAgd2hlbiAiY2RxaSIKKyAgICAgICRh
c20ucHV0cyAiXHRjZHEiCisgICAgd2hlbiAiaWRpdmkiCisgICAgICAkYXNtLnB1dHMgIlx0aWRp
dmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJmaWkyZCIKKyAg
ICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7
b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92
ZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0
cyAiXHRwc2xscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHBvciAleG1tNywgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAg
ICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2Qg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1
dHMgIlx0cHNybHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAleG1tNywg
I3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAi
QmFkIG9wY29kZTogI3tvcGNvZGV9IgorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxMDQ0MTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRGVidWdn
ZXI7CiAgICAgY2xhc3MgRXZhbENvZGVCbG9jazsKICAgICBjbGFzcyBGdW5jdGlvbkNvZGVCbG9j
azsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNv
ZGVCbG9jazsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKIApAQCAtMzE5LDYgKzMyMCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1
YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJs
ZSBCYXNlOwogCkBAIC0zODQsNiArMzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAog
ICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewor
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoK
ICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTQ1Myw2ICs0NTYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1
YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAxMDQ0MTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4
LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNBcnJheTsKKyAgICBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBzdHJ1Y3QgU3BhcnNlQXJyYXlFbnRyeSA6IHB1
YmxpYyBXcml0ZUJhcnJpZXI8VW5rbm93bj4gewogICAgICAgICBTcGFyc2VBcnJheUVudHJ5KCkg
OiBhdHRyaWJ1dGVzKDApIHt9CkBAIC0xMDQsNiArMTA1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgfTsKIAogICAgIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTA0NDEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNz
IFN0cnVjdHVyZTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
UHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OworICAgIGNs
YXNzIFN0cnVjdHVyZTsKIAogICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcywKQEAgLTE2NCw2ICsxNjUsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAgICAg
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAgIH07CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxMDQ0
MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVu
Y3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEpTR2xv
YmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBO
YXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgbmFtZXNwYWNlIERG
RyB7CkBAIC0xNDAsNiArMTQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAog
ICAgICAgICBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAg
c3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0
IElkZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsRGF0YS5oCShyZXZpc2lvbiAxMDQ0MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTUgKzMwLDE1IEBA
CiAjZGVmaW5lIEpTR2xvYmFsRGF0YV9oCiAKICNpbmNsdWRlICJDYWNoZWRUcmFuc2NlbmRlbnRh
bEZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3Rh
bmNlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAi
SGVhcC5oIgotI2luY2x1ZGUgIlN0cm9uZy5oIgorI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2lu
Y2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk51bWVy
aWNTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU3Ryb25n
LmgiCiAjaW5jbHVkZSAiVGVybWluYXRvci5oIgogI2luY2x1ZGUgIlRpbWVvdXRDaGVja2VyLmgi
CiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgpAQCAtNjUsNiArNjUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKICAgICBj
bGFzcyBLZXl3b3JkczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xh
c3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAgICBjbGFzcyBS
ZWdFeHBDYWNoZTsKQEAgLTM0OSw2ICszNTAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICN1bmRlZiBy
ZWdpc3RlclR5cGVkQXJyYXlGdW5jdGlvbgogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTR2xvYmFs
RGF0YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CiAgICAgICAg
IHN0YXRpYyBKU0dsb2JhbERhdGEqJiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAgICAg
IHZvaWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTA0NDEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3Rv
dHlwZTsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgR2xvYmFsQ29kZUJsb2Nr
OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgUmVn
RXhwQ29uc3RydWN0b3I7CkBAIC0zMzUsNiArMzM2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBpbnQgY291bnQp
OwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBGb2xkIHJlc2V0IGludG8gaW5pdC4K
ICAgICAgICAgdm9pZCBpbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpOwogICAgICAgICB2b2lkIHJl
c2V0KEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTA0NDEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgSGFzaEVudHJ5
OwogICAgIGNsYXNzIEludGVybmFsRnVuY3Rpb247CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3Jp
cHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKQEAgLTI2MCw2ICsyNjEsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
KiwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpOwogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAg
IC8vIE5vYm9keSBzaG91bGQgZXZlciBhc2sgYW55IG9mIHRoZXNlIHF1ZXN0aW9ucyBvbiBzb21l
dGhpbmcgYWxyZWFkeSBrbm93biB0byBiZSBhIEpTT2JqZWN0LgogICAgICAgICB1c2luZyBKU0Nl
bGw6OmlzQVBJVmFsdWVXcmFwcGVyOwogICAgICAgICB1c2luZyBKU0NlbGw6OmlzR2V0dGVyU2V0
dGVyOwpAQCAtMzcxLDYgKzM3NCw4IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lu
bGluZVN0b3IKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHBy
aXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
ICAgIAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQogICAgICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oCShyZXZpc2lvbiAxMDQ0MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJZGVudGlmaWVyOwogICAgIGNsYXNzIEpT
T2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNs
YXNzIEpJVDsKQEAgLTk2LDYgKzk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAog
ICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CisgICAgICAgIAogICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2Fj
aGVhYmxlU2xvdCk7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRT
dHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lv
biAxMDQ0MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTkxNiw2ICs5MTYsMTIgQEAKICNkZWZpbmUgRU5BQkxFX0pJVCAxCiAjZW5k
aWYKIAorLyogT24gc29tZSBvZiB0aGUgcGxhdGZvcm1zIHdoZXJlIHdlIGhhdmUgYSBKSVQsIHdl
IHdhbnQgdG8gYWxzbyBoYXZlIHRoZSAKKyAgIGxvdy1sZXZlbCBpbnRlcnByZXRlci4gKi8KKyNp
ZiBFTkFCTEUoSklUKSAmJiBQTEFURk9STShNQUMpICYmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVm
aW5lIEVOQUJMRV9MTElOVCAxCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9ERkdfSklU
KSAmJiBFTkFCTEUoSklUKQogLyogRW5hYmxlIHRoZSBERkcgSklUIG9uIFg4NiBhbmQgWDg2XzY0
LiAgT25seSB0ZXN0ZWQgb24gTWFjIGFuZCBHTlUvTGludXguICovCiAjaWYgKENQVShYODYpIHx8
IENQVShYODZfNjQpKSAmJiAoUExBVEZPUk0oTUFDKSB8fCBPUyhMSU5VWCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121607</attachid>
            <date>2012-01-08 18:09:50 -0800</date>
            <delta_ts>2012-01-08 21:14:45 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_2.diff</filename>
            <type>text/plain</type>
            <size>254139</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0NDIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY0IEBA
CisyMDEyLTAxLTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SlNDIHNob3VsZCBiZSBhIHRyaXBsZS10aWVyIFZNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAw
Nzk2OTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAor
ICAgICAgICBXT1JLIElOIFBST0dSRVNTLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoK
KyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAqIGhlYXAvQWxsb2Nh
dGlvblNwYWNlLmg6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgICogaGVhcC9NYXJr
ZWRTcGFjZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmg6CisgICAgICAgICogbGxpbnQ6IEFkZGVkLgor
ICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjpMTEludDo6cmV0dXJuVG9UaHJvdyk6CisgICAgICAgIChKU0M6OkxMSW50OjpjYWxsVG9UaHJv
dyk6CisgICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAq
IGxsaW50L0xMSW50SGVscGVycy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6TExJ
TlRfSEVMUEVSX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50SGVscGVycy5oOiBBZGRlZC4K
KyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToK
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRk
ZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxp
bmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6
IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAg
ICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4K
KyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxp
bmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5y
YjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9zZXR0aW5ncy5yYjogQWRkZWQuCisgICAg
ICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVh
c20veDg2LnJiOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxE
YXRhLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9K
U1R5cGVJbmZvLmg6CisgICAgICAgICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAg
ICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUu
aDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgICogd3RmL1Bs
YXRmb3JtLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorCiAyMDEyLTAxLTA4
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVGhlIEpJVCdzIHBy
b3RvY29sIGZvciBleGNlcHRpb24gaGFuZGxpbmcgc2hvdWxkIGJlIGF2YWlsYWJsZSB0byBvdGhl
ciBwYXJ0cyBvZiB0aGUgc3lzdGVtCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTA0NDEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxNSBA
QAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICov
CisJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovID0geworCQkJ
aXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBG
NDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgK
KwkJCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2Vz
ICovLAorCQkJKTsKKwkJCW5hbWUgPSAiTExJbnQgT2Zmc2V0cyI7CisJCQlwcm9kdWN0TmFtZSA9
ICJEZXJpdmVkIFNvdXJjZXMiOworCQl9OwogCQk2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyog
RGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OwogCQkJ
YnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDY1RkIzRjc3MDlEMTFFQkQwMEY0OURFQiAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVyaXZlZCBTb3Vy
Y2VzIiAqLzsKQEAgLTE0LDYgKzIzLDkgQEAKIAkJCQk2NUZCM0Y2NTA5RDExRTkxMDBGNDlERUIg
LyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTVEMzVERUUxMEM3QzE0MEIwMDg2
NDhCMiAvKiBHZW5lcmF0ZSBEVHJhY2UgaGVhZGVyICovLAogCQkJKTsKKwkJCWRlcGVuZGVuY2ll
cyA9ICgKKwkJCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5j
eSAqLywKKwkJCSk7CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlwcm9kdWN0TmFt
ZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQl9OwpAQCAtNTgsNiArNzAsMTEgQEAKIAkJMEY0MjZB
NDkxNDYwQ0JCNzAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDYxNDYwQ0JBQjAwMTMxRjhGIC8q
IFZpcnR1YWxSZWdpc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGNDI2QTRCMTQ2MENENkUwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0QTE0NjBD
RDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBMaXN0YWJs
ZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBBMzE0QkE3RjhE
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNl
cHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RjE0QkE3RjgyMDBC
RkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZF
MjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEE3
MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTExNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi87IH07CisJCTBGNDY4MEE4MTRCQTdG
QUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50
RXhjZXB0aW9ucy5jcHAgKi87IH07CiAJCTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNv
bmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFs
aXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGNjIwMTc0MTQzRkNEMzMwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjIwMTcyMTQzRkNE
MkYwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYyMDE3NTE0M0ZDRDM3MDA2OEI3N0Mg
LyogREZHT3BlcmFuZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNjIwMTcxMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdPcGVyYW5kcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC03MTgsNiArNzM1LDIw
IEBACiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFp
bmVySXRlbVByb3h5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94
eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9q
ZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmlu
ZyA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSAiTExJbnQgT2Zm
c2V0cyI7CisJCX07CisJCTBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJ
dGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250
YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3Qg
Ki87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODA4
RTE0QkE3RTVFMDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gSlNDTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworCQl9OwogCQkxNDEyMTEzNTBBNDg3OTYxMDA0ODAyNTUgLyogUEJYQ29udGFpbmVySXRl
bVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFp
bmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICov
OwpAQCAtNzkxLDYgKzgyMiwxNSBAQAogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkw
RjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJY
Q29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlkc3RQYXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJmb2xkZXJTcGVjID0g
MDsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAxOworCQl9OwogCQk1REJCMTUxMTEzMUQwQjEzMDA1NkFEMzYgLyogQ29weSBTdXBw
b3J0IFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAxMjsKQEAgLTg0MSw2ICs4ODEsMTIgQEAKIAkJMEY0MjZBNDYxNDYw
Q0JBQjAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBWaXJ0dWFsUmVnaXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY0MjZBNEExNDYwQ0Q2QjAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUZvcm1hdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpc3RhYmxlSGFuZGxlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJ
bnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0
RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9
IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9Q
Uk9EVUNUU19ESVI7IH07CisJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2Vw
dGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFeGNl
cHRpb25zLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2Vw
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFeGNlcHRpb25z
Lmg7IHBhdGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEhlbHBlcnMuY3BwOyBwYXRo
ID0gbGxpbnQvTExJbnRIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEhlbHBlcnMuaDsgcGF0aCA9IGxsaW50L0xMSW50SGVs
cGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMTE0QkE3RjgyMDBC
RkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHBhdGggPSBsbGludC9M
TEludE9mZnNldHNFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyogREZHQnl0ZUNvZGVDYWNoZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCeXRlQ29kZUNhY2hlLmg7IHBhdGggPSBkZmcvREZH
Qnl0ZUNvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVGMDhDRTE0
NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNjIwMTZEMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFj
dFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Fic3Ry
YWN0U3RhdGUuY3BwOyBwYXRoID0gZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTU0Miw2ICsxNTg4LDEzIEBACiAvKiBFbmQgUEJYRmlsZVJl
ZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNl
Y3Rpb24gKi8KKwkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1ld29ya3MgKi8gPSB7
CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUUwQTQ4NzkzQzAwNDgwMjU1IC8q
IEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0xNjAwLDYgKzE2NTMsNyBAQAogCQkJ
CTE0MTIxMTIwMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovLAogCQkJCTE0QkQ1OUJGMEEz
RThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAx
RCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NM
TEludE9mZnNldHNFeHRyYWN0b3IgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJ
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2MjgsNiArMTY4Miw3IEBACiAJCQkJRjVDMjkw
RTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCiAJCQkJNDVF
MTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRD
NjAxRkY2MEY3IC8qIGNvbmZpZy5oICovLAorCQkJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAv
KiBsbGludCAqLywKIAkJCQkxNDMyRUJENzBBMzRDQUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJ
CTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJsZXIgKi8sCiAJCQkJOTY5QTA3OEYw
RUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLApAQCAtMTY2Niw2ICsxNzIxLDE4IEBACiAJ
CQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCTBGNDY4MDlDMTRCQTdG
NEQwMEJGRTI3MiAvKiBsbGludCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5j
cHAgKi8sCisJCQkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5o
ICovLAorCQkJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICov
LAorCQkJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLywKKwkJ
CQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAq
LywKKwkJCSk7CisJCQluYW1lID0gbGxpbnQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwor
CQl9OwogCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAyNTUgLyogdGVzdHMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMzAwNCwxMiArMzA3MSwzMiBAQAogCQkJ
CTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODY3MDRCNDMxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1Bh
dGhzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJ
bnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUy
NzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKIC8qIEVuZCBQQlhIZWFkZXJzQnVp
bGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICov
CisJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3Ig
Ki8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovOworCQkJ
YnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMg
Ki8sCisJCQkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJ
MEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLywKKwkJCSk7CisJCQlidWls
ZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2ODBCMjE0QkE4
MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CisJCQluYW1lID0g
SlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdE5hbWUgPSBKU0NMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMEY0NjgwOEYxNEJBN0U1RTAwQkZF
MjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNv
bS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CiAJCTE0MTIxMTFGMEE0ODc5M0MwMDQ4
MDI1NSAvKiBtaW5pZG9tICovID0gewogCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwogCQkJYnVp
bGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi87CkBAIC0z
MTQwLDExICszMjI3LDI4IEBACiAJCQkJMTRCRDU5QkUwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3Rh
cGkgKi8sCiAJCQkJOTMyRjVCREEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLywKIAkJCQk2NTEx
MjJGNzE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RTE0QkE3
RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAorCQkJCTBGNDY4MEE5
MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovLAogCQkJKTsKIAkJfTsKIC8qIEVu
ZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU2hlbGxTY3JpcHRCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERl
cml2ZWQgU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlpbnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3Vy
Y2VzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJ
bnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJ
c2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZz
ZXRzL1wiXG5cbi91c3IvYmluL2VudiBydWJ5IFwiJHtTUkNST09UfS9vZmZsaW5lYXNtL2dlbmVy
YXRlX29mZnNldF9leHRyYWN0b3IucmJcIiA8IFwiJHtTUkNST09UfS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbVwiID4gXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL0xM
SW50RGVzaXJlZE9mZnNldHMuaFwiXG4iOworCQl9OwogCQkzNzEzRjAxNDE0MjkwNTI0MDAzNjM4
N0YgLyogQ2hlY2sgRm9yIEluYXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xhc3MgTmFtZXMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzI4NSw2ICszMzg5LDE0IEBACiAvKiBFbmQgUEJYU2hlbGxT
Y3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLyA9
IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAv
KiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFEMEE0
ODc5M0MwMDQ4MDI1NSAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxk
UGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzU0Miw2ICszNjU0
LDggQEAKIAkJCQk4NjcwNEI4NjEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4NjcwNEI4OTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCNDIxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50
YXhDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3
MiAvKiBMTEludEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTgxNEJBN0ZB
QjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTM1NTYs
NiArMzY3MCwxNiBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTBGNDY4MEIyMTRCQTgx
MTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFy
Z2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBM
TEludCBPZmZzZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMTE0QkE4MTE1MDBCRkUy
NzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkwRjQ2ODBCNDE0QkE4MjE0
MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlND
TExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMzE0QkE4
MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQkxNDEyMTEz
NjBBNDg3OTYxMDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9
IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSA5MzJGNUIzRTA4MjJBMUM3MDA3MzY5
NzUgLyogSmF2YVNjcmlwdENvcmUgKi87CkBAIC0zNjA5LDYgKzM3MzMsMTQ4IEBACiAvKiBFbmQg
UEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQnVpbGRDb25maWd1
cmF0aW9uIHNlY3Rpb24gKi8KKwkJMEY0NjgwOTYxNEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJD
SFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCUdD
Q19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0RZTkFNSUNfTk9fUElDID0g
Tk87CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX09QVElN
SVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgK
KwkJCQkJIkRFQlVHPTEiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOworCQkJCUdDQ19T
WU1CT0xTX1BSSVZBVEVfRVhURVJOID0gTk87CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUu
Y29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05W
RVJTSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlF
UzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9V
TlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIg
PSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTElu
dE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlN
QUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBZ
RVM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0g
bWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsK
KwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcyIC8qIFJl
bGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMg
PSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVT
OworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJ
CUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VY
Q0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxs
dm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVT
OworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0Nf
V0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFC
TEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4s
CisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMkKEhF
QURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdF
VCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtS
T09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOwor
CQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUy
NzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POwor
CQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9T
VFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1k
c3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFC
TEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNv
bXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVS
U0lPTiA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7
CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5V
U0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0g
KAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRP
ZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJH
RVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNI
X1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFE
RVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJ
MEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NF
QVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9C
SVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9O
X0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJE
ID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0ND
X1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19X
QVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX01J
U1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9
IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9T
RUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BB
VEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJ
CVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsK
KwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19E
SVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1l
ID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8qIERlYnVn
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9Owor
CQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVs
ZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJ
fTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUyNzIg
LyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29w
eSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJMEY0NjgwQjAxNEJBN0ZE
OTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQg
U291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJMTQx
MjExM0EwQTQ4Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewpAQCAtMzg1MCw2ICs0MTE2LDI3IEBA
CiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBYQ0Nv
bmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9m
ZnNldHNFeHRyYWN0b3IiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJ
CWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwOTYxNEJBN0U1RTAwQkZFMjcyIC8q
IERlYnVnICovLAorCQkJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovLAor
CQkJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY0Njgw
OTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQl9OworCQkwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUy
NzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxM
SW50IE9mZnNldHMiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1
aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8qIERl
YnVnICovLAorCQkJCTBGNDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovLAorCQkJ
CTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY0NjgwQjAx
NEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJv
ZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLyA9IHsKIAkJCWlz
YSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24g
MTA0NDEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3
b3JraW5nIGNvcHkpCkBAIC03Miw4ICs3Miw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBo
YXNTZWVuU2hvdWxkUmVwYXRjaAogICAgIH07CiAKLSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAg
Y2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgZW51bSBDb2RlVHlwZSB7IEdsb2JhbENvZGUsIEV2
YWxDb2RlLCBGdW5jdGlvbkNvZGUgfTsKIApAQCAtMjU2LDYgKzI1Nyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBVbmNvbmRpdGlvbmFsRmluYWxpemVy
LCBwdWJsaWMgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBDb3B5
UGFyc2VkQmxvY2tUYWcgeyBDb3B5UGFyc2VkQmxvY2sgfTsKICAgICBwcm90ZWN0ZWQ6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNp
b24gMTA0NDEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw2ICsxODQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IHN0cnVjdHVyZUNoYWlu
OwogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxKU0NlbGw+IGpzQ2VsbDsKICAgICAgICAg
ICAgIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1bmM7CisgICAgICAgICAgICB2
b2lkKiBwb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaAkocmV2aXNp
b24gMTA0NDEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBj
bGFzcyBIZWFwOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWFya2VkQmxv
Y2s7CiAKIGNsYXNzIEFsbG9jYXRpb25TcGFjZSB7CkBAIC02OCw2ICs2OSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNocmluaygpOwogICAgIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAgIGVudW0gQWxsb2NhdGlvbkVmZm9ydCB7IEFs
bG9jYXRpb25NdXN0U3VjY2VlZCwgQWxsb2NhdGlvbkNhbkZhaWwgfTsKICAgICAKICAgICB2b2lk
KiBhbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMDQ0MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTVmFsdWU7CiAgICAgY2xh
c3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
ICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAgICBjbGFzcyBSZWdpc3RlckZpbGU7
CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTEyOSwxMCArMTMwLDExIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMoSGFzaFNldDxKU0Nl
bGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtl
ZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGlvblNwYWNlOwotICAgICAgICBm
cmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIGZy
aWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9y
OwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWluRXh0cmFDb3N0ID0gMjU2OwogICAg
ICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4dHJhQ29zdCA9IDEwMjQgKiAxMDI0OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxMDQ0
MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSGVhcDsKIGNs
YXNzIEpTQ2VsbDsKIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsKIGNsYXNzIFNsb3RWaXNpdG9yOwogCkBA
IC03OSw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0
eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jaygpOwogCiBwcml2YXRlOgor
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiAgICAgLy8gWyAz
Mi4uLiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZVN0ZXAgPSBNYXJrZWRC
bG9jazo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlQ3V0b2ZmID0g
MjU2OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgJKHJldmlzaW9uIDEwNDQxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBK
U0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBS
ZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKQEAgLTkwLDggKzkxLDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJbnRlcnByZXRlciB7CiAgICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmll
bmQgY2xhc3MgQ2FjaGVkQ2FsbDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBwdWJsaWM6CiAgICAgICAg
IEludGVycHJldGVyKCk7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkocmV2aXNpb24gMTA0NDEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29uc2Vy
dmF0aXZlUm9vdHM7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBSZWdpc3RlckZpbGUgewogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShSZWdpc3RlckZpbGUpOwpAQCAtODEsNiArODIsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgZ3Jvd1Nsb3dD
YXNlKFJlZ2lzdGVyKik7CiAgICAgICAgIHZvaWQgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CiAg
ICAgICAgIHZvaWQgYWRkVG9Db21taXR0ZWRCeXRlQ291bnQobG9uZyk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEV4
Y2VwdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK0luc3Ry
dWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQor
eworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7Cisg
ICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwg
cGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisg
ICAgcmV0dXJuICZnbG9iYWxEYXRhLT5leGNlcHRpb25JbnN0cnVjdGlvbnM7Cit9CisKK3ZvaWQq
IGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgZ2VuZXJp
Y1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVj
LT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJu
IGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU7Cit9CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpMTEludAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
eGNlcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RXhjZXB0aW9ucy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RXhjZXB0aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRF
eGNlcHRpb25zX2gKKyNkZWZpbmUgTExJbnRFeGNlcHRpb25zX2gKKworI2luY2x1ZGUgPHd0Zi9T
dGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKKy8v
IFNhdmVzIHRoZSBjdXJyZW50IFBDIGluIHRoZSBnbG9iYWwgZGF0YSBmb3Igc2FmZS1rZWVwaW5n
LCBhbmQgZ2l2ZXMgeW91IGEgUEMKKy8vIHRoYXQgeW91IGNhbiB0ZWxsIHRoZSBpbnRlcnByZXRl
ciB0byBnbyB0bywgd2hpY2ggd2hlbiBhZHZhbmNlZCBiZXR3ZWVuIDEKKy8vIGFuZCA5IHNsb3Rz
IHdpbGwgZ2l2ZSB5b3UgYW4gImluc3RydWN0aW9uIiB0aGF0IHRocmVhZHMgdG8gdGhlIGludGVy
cHJldGVyJ3MKKy8vIGV4Y2VwdGlvbiBoYW5kbGVyLiBOb3RlIHRoYXQgaWYgeW91IGdpdmUgaXQg
dGhlIFBDIGZvciBleGNlcHRpb24gaGFuZGxpbmcsCisvLyBpdCdzIHNtYXJ0IGVub3VnaCB0byBq
dXN0IHJldHVybiB0aGF0IFBDIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxzZTsgdGhpcworLy8g
bGV0cyB5b3UgdGhyZWFkIGV4Y2VwdGlvbiBoYW5kbGluZyB0aHJvdWdoIGNvbW1vbiBoZWxwZXIg
ZnVuY3Rpb25zIHVzZWQgYnkKKy8vIG90aGVyIGhlbHBlcnMuCitJbnN0cnVjdGlvbiogcmV0dXJu
VG9UaHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOworCisvLyBVc2UgdGhpcyB3aGVuIHlv
dSdyZSB0aHJvd2luZyB0byBhIGNhbGwgdGh1bmsuCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3Rh
dGUqLCBJbnN0cnVjdGlvbiopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2Vu
ZGlmIC8vIExMSW50RXhjZXB0aW9uc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwOTUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50SGVscGVycy5oIgorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworI2RlZmluZSBMTElOVF9PUChpbmRleCkgKGV4
ZWMtPnJlZ2lzdGVycygpW3BjW2luZGV4XS51Lm9wZXJhbmRdKQorI2RlZmluZSBMTElOVF9PUF9D
KGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5vcGVyYW5kKSkKKworI2RlZmluZSBMTElOVF9S
RVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpICAgICAgICAgXAorICAgICAgICB1bmlvbiB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgc3RydWN0IHsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGE7ICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGI7ICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgfSBwYWlyOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgaW50NjRfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICB9IF9fdTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBfX3UucGFpci5hID0gZmlyc3Q7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3Uu
cGFpci5iID0gc2Vjb25kOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX191
Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisj
ZGVmaW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykKKworI2Rl
ZmluZSBMTElOVF9USFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBfX2dsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxE
YXRhKCk7ICAgICAgICBcCisgICAgICAgIF9fZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0
aW9uVG9UaHJvdyk7ICAgICAgICAgICAgXAorICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhl
YywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lN
UEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGls
ZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCkgZG8geyAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+Z2xvYmFsRGF0YSgpLmV4
Y2VwdGlvbikpIHsgICBcCisgICAgICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMp
OyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJ
TlRfRU5EKCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwo
KTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmlu
ZSBMTElOVF9CUkFOQ0gob3Bjb2RlLCBjb25kaXRpb24pIGRvIHsgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgYm9vbCBfX2NvbmRpdGlvbiA9IChjb25kaXRpb24pOyAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoX19jb25kaXRpb24pICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IHBjW09Q
Q09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsgICAgICBcCisgICAgICAgIGVsc2Ug
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcGNvZGUpOyAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfUkVU
VVJOKHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNWYWx1ZSBfX3JldHVy
blZhbHVlID0gKHZhbHVlKTsgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfT1AoMSkgPSBfX3JldHVyblZhbHVl
OyAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0VORF9J
TVBMKGV4ZWMsIGNhbGxUYXJnZXQpIExMSU5UX1JFVFVSTl9UV08oKGV4ZWMpLCAoY2FsbFRhcmdl
dCkpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgZXhjZXB0aW9uVG9UaHJv
dykgZG8geyAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19leGVjID0gKGV4ZWMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19wYyA9IChw
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNHbG9iYWxEYXRh
JiBfX2dsb2JhbERhdGEgPSAoX19leGVjKS0+Z2xvYmFsRGF0YSgpOyAgICBcCisgICAgICAgIF9f
Z2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgXAor
ICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fZXhlYywgY2FsbFRvVGhyb3coX19leGVjLCBf
X3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0NIRUNL
X0VYQ0VQVElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBFeGVjU3RhdGUqIF9fZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19wYyA9IChwYyk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoX19leGVj
LT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2V4ZWMsIGNhbGxUb1Rocm93KF9fZXhlYywgX19wYykp
OyAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfUkVUVVJO
KGV4ZWMsIHBjLCBjYWxsVGFyZ2V0KSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IEV4ZWNTdGF0ZSogX19leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX3BjID0gKHBjKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHZvaWQqIF9fY2FsbFRhcmdldCA9
IChjYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExM
SU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKF9fZXhlYy0+Y2FsbGVyRnJhbWUoKSwgX19wYyk7ICAg
ICAgICBcCisgICAgICAgIExMSU5HX0NBTExfRU5EX0lNUEwoX19leGVjLCBfX2NhbGxUYXJnZXQp
OyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKK0xMSU5UX0hF
TFBFUl9ERUNMKGVudHJ5X29zcikKK3sKKyAgICAvLyBGSVhNRQorfQorCitMTElOVF9IRUxQRVJf
REVDTChsb29wX29zcikKK3sKKyAgICAvLyBGSVhNRQorfQorCitMTElOVF9IRUxQRVJfREVDTChy
ZXBsYWNlKQoreworICAgIC8vIEZJWE1FCit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVy
X2ZpbGVfY2hlY2spCit7CisgICAgLy8gRklYTUUKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICAvLyBGSVhNRQorfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spCit7CisgICAgLy8gRklYTUUKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQoreworICAgIEpTQWN0
aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYywgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlYy0+Y29kZUJs
b2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVj
LT5zY29wZUNoYWluKCktPnB1c2goYWN0aXZhdGlvbikpOworICAgIExMSU5UX1JFVFVSTihKU1Zh
bHVlKGFjdGl2YXRpb24pKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9h
cmd1bWVudHMpCit7CisgICAgTExJTlRfUkVUVVJOKEpTVmFsdWUoQXJndW1lbnRzOjpjcmVhdGUo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY3JlYXRlX3RoaXMpCit7CisgICAgSlNGdW5jdGlvbiogY29uc3RydWN0b3IgPSBhc0Z1bmN0
aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgQ29u
c3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIEFTU0VSVChjb25zdHJ1Y3Rvci0+bWV0aG9k
VGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0YShjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSkgPT0g
Q29uc3RydWN0VHlwZUpTKTsKKyNlbmRpZgorICAgIAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
OworICAgIEpTVmFsdWUgcHJvdG8gPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKHBy
b3RvLmlzT2JqZWN0KCkpCisgICAgICAgIHN0cnVjdHVyZSA9IGFzT2JqZWN0KHByb3RvKS0+aW5o
ZXJpdG9ySUQoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBlbHNlCisgICAgICAgIHN0cnVjdHVy
ZSA9IGNvbnN0cnVjdG9yLT5zY29wZSgpLT5nbG9iYWxPYmplY3QtPmVtcHR5T2JqZWN0U3RydWN0
dXJlKCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMs
IHN0cnVjdHVyZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29udmVydF90aGlz
KQoreworICAgIEpTVmFsdWUgdjEgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJU
KHYxLmlzUHJpbWl0aXZlKCkpOworICAgIExMSU5UX1JFVFVSTih2MS50b1RoaXNPYmplY3QoZXhl
YykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVjdCkKK3sKKyAgICBM
TElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYykpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmV3X2FycmF5KQoreworICAgIEFyZ0xpc3QgYXJnTGlzdCgmTExJTlRf
T1AoMiksIHBjWzNdLnUub3BlcmFuZCk7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5
KGV4ZWMsIGFyZ0xpc3QpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJh
eV9idWZmZXIpCit7CisgICAgQXJnTGlzdCBhcmdMaXN0KGV4ZWMtPmNvZGVCbG9jaygpLT5jb25z
dGFudEJ1ZmZlcihwY1syXS51Lm9wZXJhbmQpLCBwY1szXS51Lm9wZXJhbmQpOworICAgIExMSU5U
X1JFVFVSTihjb25zdHJ1Y3RBcnJheShleGVjLCBhcmdMaXN0KTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25ld19yZWdleHApCit7CisgICAgUmVnRXhwKiByZWdFeHAgPSBleGVjLT5j
b2RlQmxvY2soKS0+cmVnZXhwKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFyZWdFeHAtPmlz
VmFsaWQoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIklu
dmFsaWQgZmxhZyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpOworICAgIExMSU5U
X1JFVFVSTihSZWdFeHBPYmplY3Q6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSwgZXhleC0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBT
dHJ1Y3R1cmUoKSwgcmVnRXhwKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3Qp
Cit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighTExJTlRfT1AoMikuanNWYWx1ZSgpLnRv
Qm9vbGVhbihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUCgy
KS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFs
dWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSkKK3sKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5U
X09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RuZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbighSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2xlc3MpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8dHJ1ZT4oZXhlYywg
TExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3NlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVh
dGVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPGZhbHNlPihleGVjLCBM
TElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcmVxKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
cmVfaW5jKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVl
KCkudG9OdW1iZXIoZXhlYykgKyAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
cmVfZGVjKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVl
KCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
b3N0X2luYykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRv
TnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0ganNOdW1iZXIocmVzdWx0ICsgMSk7Cisg
ICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcG9zdF9kZWMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3Vs
dCAtIDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc051
bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIo
LUxMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfYWRkKQoreworICAgIEpTVmFsdWUgdjEgPSBMTElOVF9PUCgyKS5qc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSB2MiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAor
ICAgIGlmICh2MS5pc1N0cmluZygpKSB7CisgICAgICAgIExMSU5UX1JFVFVSTigKKyAgICAgICAg
ICAgIHYyLmlzU3RyaW5nKCkKKyAgICAgICAgICAgID8ganNTdHJpbmcoZXhlYywgYXNTdHJpbmco
djEpLCBhc1N0cmluZyh2MikpCisgICAgICAgICAgICA6IGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5n
KHYxKSwgdjIudG9QcmltaXRpdmVTdHJpbmcoZXhlYykpKTsKKyAgICB9CisgICAgCisgICAgaWYg
KHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpz
TnVtYmVyKHYxLmFzTnVtYmVyKCkgKyB2Mi5hc051bWJlcigpKSk7CisgICAgCisgICAgTExJTlRf
UkVUVVJOKGpzQWRkU2xvd0Nhc2UoZXhlYywgdjEsIHYyKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9tdWwpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKSAqIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVt
YmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVj
KSAtIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExM
SU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAvIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2Qp
Cit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1AoMikuanNWYWx1ZSgp
LnRvTnVtYmVyKGV4ZWMpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCkKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPDwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3JzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRf
T1AoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCku
dG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQp
Cit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b1VJ
bnQzMihleGVjKSA+PiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKQoreworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSAmIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9iaXRvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMiku
anNWYWx1ZSgpLnRvSW50MzIoZXhlYykgfCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQz
MihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKQoreworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVj
KSBeIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVy
KH5MTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQoreworICAgIEpTVmFsdWUgYmFzZVZh
bCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgVHlwZUluZm8g
dHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKTsKKyAgICBBU1NFUlQoIWJhc2VWYWwuaXNPYmplY3Qo
KQorICAgICAgICAgICB8fCAhKHR5cGVJbmZvID0gYXNPYmplY3QoYmFzZVZhbCktPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSk7CisjZW5kaWYKKyAgICBM
TElOVF9USFJPVyhjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihleGVjLCAiaW5zdGFuY2VvZiIsIGJh
c2VWYWwpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihpbnN0YW5jZU9mU2xvdyhleGVjLCBMTElOVF9PUCgy
KS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgTExJTlRfT1AoNCkpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
VHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKQoreworICAgIEpTVmFsdWUgdiA9
IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKHYuaXND
ZWxsKCkgPyB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKCkgOiB2LmlzVW5kZWZpbmVkKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX2Jvb2xlYW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9P
UCgyKS5qc1ZhbHVlKCkuaXNCb29sZWFuKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2lzX251bWJlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5UX09QKDIp
LmpzVmFsdWUoKS5pc051bWJlcigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19zdHJpbmcpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihpc0pTU3RyaW5nKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgTExJTlRfT1AoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4o
anNJc09iamVjdFR5cGUoTExJTlRfT1AoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihqc0lzRnVuY3Rpb25UeXBlKExMSU5UX09QKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2luKQoreworICAgIExMSU5UX1JFVFVSTihvcEluKGV4ZWMsIExM
SU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKQoreworICAgIExMSU5UX1JFVFVSTihvcFJlc29s
dmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKQoreworICAgIExM
SU5UX1JFVFVSTigKKyAgICAgICAgb3BSZXNvdmVTa2lwKAorICAgICAgICAgICAgZXhlYywKKyAg
ICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCks
CisgICAgICAgICAgICBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Jlc29sdmVfZ2xvYmFsKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9iYWxP
YmplY3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0udS5vcGVyYW5kOworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaW50IG9mZnNl
dCA9IHBjWzRdLnUub3BlcmFuZDsKKyAgICAKKyAgICBBU1NFUlQoKCFzdHJ1Y3R1cmUpID09ICgh
b2Zmc2V0KSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSBnbG9iYWxPYmplY3QtPnN0cnVjdHVy
ZSgpKTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmll
cihwcm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAK
KyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3Qp
KSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCk7
CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgc2xv
dC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgcGNbM10udS5zdHJ1
Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCksIGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgcGNb
NF0gPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBM
TElOVF9SRVRVUk4ocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgTExJTlRfVEhST1coY3JlYXRl
VW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcmVzb2x2ZV9iYXNlKQoreworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhl
Yy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAocGNb
M10udS5vcGVyYW5kKSB7CisgICAgICAgIEpTVmFsdWUgYmFzZSA9IEpTQzo6cmVzb2x2ZUJhc2Uo
ZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgdHJ1ZSk7CisgICAgICAgIGlmICghYmFz
ZSkKKyAgICAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFz
c2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgICAgIExMSU5UX1JFVFVSTihi
YXNlKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKEpTQzo6cmVzb2x2ZUJhc2UoZXhl
YywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgZmFsc2UpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCit7CisgICAgSlNPYmplY3QqIG9i
amVjdCA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgUHJvcGVydHlTbG90
IHNsb3Qob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygp
LT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFvYmplY3QtPmdldFByb3Bl
cnR5U2xvdChleGVjLCBpZGVudCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9y
SW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFz
ZSkKK3sKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IG9wUmVzb2x2ZVdpdGhCYXNlKGV4ZWMsIGV4ZWMt
PmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsK
KyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVf
d2l0aF90aGlzKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gb3BSZXNvbHZlV2l0aFRoaXMoZXhl
YywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRf
T1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0g
cmVzdWx0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Z2V0X2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2Nr
KCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10u
dS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUo
KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSByZXN1
bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19F
WENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgxKSA9IHJlc3VsdDsKKworICAgIGlmIChiYXNlVmFs
dWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCisgICAgICAgICYmIHNs
b3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUKKyAgICAgICAgJiYgc2xvdC5jYWNlZFByb3BlcnR5
VHlwZSgpID09IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2Vs
bCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFz
dHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1
Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKKyAgICAgICAg
ICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxE
YXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAg
ICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFs
dWUpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxv
Y2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50LCBMTElO
VF9PUCgzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgIAorICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hl
YWJsZSgpKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbGUu
YXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVj
dHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVE
aWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGli
aXRzUHJvcGVydHlDYWNoaW5nKCkKKyAgICAgICAgICAgICYmIGJhc2VDZWxsID09IHNsb3QuYmFz
ZSgpKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQ
cm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1
cmUtPmlzRGljdGlvbmFyeSgpKSB7CisgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZVByb3Rv
dHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCisgICAgICAgICAgICAg
ICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdDsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgcGNbMF0udS5vcGNvZGUgPSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw7
CisgICAgICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKSwgc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOworICAgICAgICAgICAgICAgICAgICBwY1s1
XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAg
ICAgICAgICAgICAgICAgICBwY1s2XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCks
IHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzddLnUuc3RydWN0dXJlQ2hhaW4u
c2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IHBjWzBdLnUub3Bjb2RlID0gbGxpbnRfb3BfcHV0X2J5X2lkOworICAgICAgICAgICAgICAgIHBj
WzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgICAgIHBjWzVddS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1Zh
bHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCkKK3sKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBi
YXNlT2JqZWN0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvT2JqZWN0KGV4ZWMpOworICAgIGJv
b2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0
eShiYXNlT2JqZWN0LCBleGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5k
KSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgaWYgKCFjb3VsZERlbGV0ZSAm
JiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVU
eXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgIExMSU5U
X1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKworaW5saW5lIEpTVmFsdWUgZ2V0
QnlWYWwoSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQoreworICAgIGlmIChM
SUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAg
ICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Q
cm9wZXJ0eShleGVjLCBhc1N0cmluZyhzdWJzY3JpcHQpLT52YWx1ZShleGVjKSkpCisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBpZiAoc3Vic2NyaXB0LmlzVUlu
dDMyKCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAg
ICAgICBpZiAoaXNKU1N0cmluZyhleGVjLCBiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1
ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGJhc2VWYWx1
ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzSlNCeXRlQXJy
YXkoZXhlYywgYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJ
bmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5nZXRJ
bmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4
ZWMsIGkpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNj
cmlwdC50b1N0cmluZyhleGVjKSk7CisgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJv
cGVydHkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCkKK3sKKyAg
ICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgz
KS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVu
dF9ieV92YWwpCit7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBMTElOVF9PUCgyKS5qc1ZhbHVl
KCk7CisgICAgaWYgKCFhcmd1bWVudHMpIHsKKyAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRz
OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tf
RVhDRVBUSU9OKCk7CisgICAgICAgIExMSU5UX09QKDIpID0gYXJndW1lbnRzOworICAgIH0KKyAg
ICAKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoYXJndW1lbnRzLCBMTElOVF9PUCgzKS5qc1Zh
bHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSkKK3sK
KyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9P
UCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV92
YWwpCit7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgp
OworICAgIAorICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOwor
ICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIEpTVmFs
dWUgdmFsdWUgPSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7CisgICAgCisgICAgaWYgKExJS0VMWShz
dWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5h
c1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU0FycmF5KCZnbG9iYWxEYXRhLCBiYXNlVmFsdWUp
KSB7CisgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOwor
ICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNhblNldEluZGV4KGkpKQorICAgICAgICAgICAgICAg
IGpzQXJyYXktPnNldEluZGV4KGdsb2JhbERhdGEsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4KGpzQXJyYXksIGV4ZWMsIGks
IHZhbHVlKTsKKyAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICB9CisgICAgICAgIGlm
IChpc0pTQnl0ZUFycmF5KCZnbG9iYWxEYXRhLCBiYXNlVmFsdWUpCisgICAgICAgICAgICAmJiBh
c0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICAgICAg
SlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAg
ICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJh
eS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9F
TkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7
CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzTnVtYmVy
KCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaSwgdmFsdWUpOworICAgICAgICBMTElO
VF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJz
Y3JpcHQudG9TdHJpbmcoZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7
CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCkKK3sK
KyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBKU09i
amVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICAKKyAgICBK
U1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBib29s
IGNvdWxkRGVsZXRlOworICAgIAorICAgIHVpbnQzMl90IGk7CisgICAgaWYgKHN1YnNjcmlwdC5n
ZXRVSW50MzIoaSkpCisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUo
KS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KGJhc2VPYmosIGV4ZWMsIGkpOworICAgIGVsc2Ugewor
ICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgSWRlbnRpZmllciBwcm9w
ZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYykpOworICAgICAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJs
ZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBleGVjLCBwcm9wZXJ0eSk7CisgICAgfQorICAg
IAorICAgIGlmICghcmVzdWx0ICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkK
KyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVs
ZXRlIHByb3BlcnR5LiIpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxk
RGVsZXRlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpCit7
CisgICAgTExJTlRfT1AoMSkuanNWYWx1ZSgpLnB1dChleGVjLCBwY1syXS51Lm9wZXJhbmQsIExM
SU5UX09QKDMpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1Zh
bHVlKCkuaXNPYmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElO
VF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5p
ZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpzVmFs
dWUoKS5pc09iamVjdCgpKTsKKyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVHZXR0
ZXIoYmFzZU9iaiwgZXhlYywgaWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUoKSks
IDApOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0
X3NldHRlcikKK3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0KCkp
OworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgp
KTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51
Lm9wZXJhbmQpOworICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7
CisgICAgYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lU2V0dGVyKGJhc2VPYmosIGV4ZWMs
IGlkZW50LCBhc09iamVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKQoreworICAgIExMSU5U
X0JSQU5DSChvcF9qdHJ1ZSwgTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpCit7CisgICAgTExJTlRfQlJB
TkNIKG9wX2pmYWxzZSwgIUxMSU5UX09QKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3MpCit7CisgICAgTExJTlRfQlJBTkNI
KG9wX2psZXNzLCBqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bmxlc3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzcywgIWpzTGVzczx0cnVlPihleGVj
LCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKQoreworICAgIExMSU5UX0JSQU5D
SChvcF9qZ3JlYXRlciwganNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2puZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyLCAhanNMZXNz
PGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpCit7CisgICAg
TExJTlRfQlJBTkNIKG9wX2psZXNzZXEsIGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0Mo
MSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfam5sZXNzZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzc2Vx
LCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRl
cmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlcmVxLCBqc0xlc3NFcTxmYWxzZT4o
ZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSkKK3sKKyAgICBMTElO
VF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEsICFqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1Bf
QygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKQoreworICAgIEpTVmFsdWUgc2NydXRpbmVlID0g
TExJTlRfT1AoMykuanNWYWx1ZSgpOworICAgIEFTU0VSVChzY3J1dGluZWUuaXNEb3VibGUoKSk7
CisgICAgZG91YmxlIHZhbHVlID0gc2NydXRpbmVlLmFzRG91YmxlKCk7CisgICAgaW50MzJfdCBp
bnRWYWx1ZSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKTsKKyAgICBpbnQgZGVmYXVsdE9m
ZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAodmFsdWUgPT0gaW50VmFsdWUpIHsKKyAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAg
cGMgKz0gY29kZUJsb2NrLT5pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5k
KS5vZmZzZXRGb3JWYWx1ZShpbnRWYWx1ZSwgZGVmYXVsdE9mZnNldCk7CisgICAgfSBlbHNlCisg
ICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKQoreworICAgIEpTVmFsdWUgc2NydXRp
bmVlID0gTExJTlRfT1AoMykuanNWYWx1ZSgpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNb
Ml0udS5vcGVyYW5kOworICAgIGlmICghc2NydXRpbmVlLmlzU3RyaW5nKCkpCisgICAgICAgIHBj
ICs9IGRlZmF1bHRPZmZzZXQ7CisgICAgZWxzZSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+c3RyaW5n
U3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoYXNTdHJpbmco
c2NydXRpbmVlKS0+dmFsdWUoZXhlYykuaW1wbCgpLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYykK
K3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFT
U0VSVChjb2RlQmxvY2stPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlCisgICAgICAgICAgIHx8
ICFjb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKQorICAgICAgICAgICB8fCBleGVjLT51
bmNoZWNrZWRSKGNvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7Cisg
ICAgTExJTlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzJdLnUub3BlcmFuZCkt
Pm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfZnVuY19leHApCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVj
LT5jb2RlQmxvY2soKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJs
b2NrLT5mdW5jdGlvbkV4cHIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5j
ID0gZnVuY3Rpb24tPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICAKKyAgICBp
ZiAoIWZ1bmN0aW9uLT5uYW1lKCkuaXNOdWxsKCkpIHsKKyAgICAgICAgSlNTdGF0aWNTY29wZU9i
amVjdCogZnVuY3Rpb25TY29wZU9iamVjdCA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShl
eGVjLCBmdW5jdGlvbi0+bmFtZSgpLCBmdW5jLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAg
ICAgICBmdW5jLT5zZXRTY29wZShleGVjLT5nbG9iYWxEYXRhKCksIGZ1bmMtPnNjb3BlKCktPnB1
c2goZnVuY3Rpb25TY29wZU9iamVjdCkpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4o
ZnVuYyk7Cit9CisKK3N0YXRpYyBIZWxwZXJSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNT
dGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxs
ZWUtPmNhbGxlckZyYW1lKCk7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMt
Pmdsb2JhbERhdGEoKTsKKworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2Nv
cGVDaGFpbigpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CisKKyAgICBpZiAo
a2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAg
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShjYWxsZWUsIGNhbGxEYXRhKTsKKyAg
ICAKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlSlMpOworICAgIAorICAgICAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVIb3N0KSB7CisgICAgICAgICAgICBnbG9iYWxEYXRh
LT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5m
dW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIExMSU5UX0NB
TExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0
Q2FsbFJldHVyblZhbHVlKSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgQVNTRVJUKGNhbGxU
eXBlID09IENhbGxUeXBlTm9uZSk7CisgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMs
IGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgIH0KKworICAgIEFT
U0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIAorICAgIENvbnN0cnVjdERhdGEg
Y29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25z
dHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0RGF0YSk7CisgICAgCisgICAgQVNTRVJUKGNvbnN0
cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZUpTKTsKKyAgICAKKyAgICBpZiAoY29uc3RydWN0VHlw
ZSA9PSBDb25zdHJ1Y3RUeXBlSG9zdCkgeworICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJl
dHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9u
KGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMs
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICB9
CisgICAgCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZU5vbmUpOwor
ICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9y
KGV4ZWMsIGNhbGxlZSkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJuVHlwZSBzZXRVcENhbGwo
RXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCwgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlLCBXcml0ZUJhcnJpZXJCYXNlPEpTQ2Vs
bD4qIGV4cGVjdGVkRnVuY3Rpb24gPSAwLCB2b2lkKiogbWFjaGluZUNvZGUgPSAwKQoreworICAg
IEFTU0VSVCghZXhwZWN0ZWRGdW5jdGlvbiA9PSAhbWFjaGluZUNvZGUpOworICAgIAorICAgIEpT
Q2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUp
OworICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCisgICAgICAgIHJldHVybiBoYW5kbGVI
b3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwga2luZCk7CisgICAgCisgICAg
SlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7Cisg
ICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCkpOwor
ICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7Cisg
ICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSAwOworICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQorICAg
ICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRy
ZXNzRm9yQ2FsbCgpOworICAgIGVsc2UgeworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1
bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1
dGFibGUpOworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmNv
bXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29wZSgpLCBraW5kKTsKKyAgICAgICAgTExJ
TlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpOworICAgICAgICBjb2RlQmxvY2sgPSAm
ZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICAgICAg
aWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGNvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKSkKKyAgICAgICAgICAgIGNvZGVQ
dHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0Zv
cihraW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhl
Y3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAg
IH0KKyAgICAKKyAgICBpZiAoZXhwZWN0ZWRGdW5jdGlvbikgeworICAgICAgICBleHBlY3RlZEZ1
bmN0aW9uLT5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgICAgICptYWNoaW5lQ29kZSA9IGNvZGVQ
dHIuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfQ0FMTF9SRVRV
Uk4oZXhlY0NhbGxlZSwgcGMsIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Cit9CisKK2lu
bGluZSBIZWxwZXJSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1
Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgLy8gVGhpcyBu
ZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUuCisgICAgLy8gLSBGaWd1cmUg
b3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBJ
ZiBwb3NzaWJsZSwgbGluayB0aGUgY2FsbCdzIGlubGluZSBjYWNoZS4KKyAgICAvLyAtIFJldHVy
biBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2Fs
bCBmcmFtZS4KKyAgICAKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xv
YmFsRGF0YSgpOworICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QKDEp
OworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJh
bmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMo
cGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZWUoY2FsbGVlQXNWYWx1
ZSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgCisgICAgcmV0
dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywga2luZCwgY2FsbGVlQXNWYWx1ZSwgJnBjWzRd
LnUuanNDZWxsLCAmcGNbNV0udS5wb2ludGVyKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NhbGwpCit7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2Fs
bCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpCit7CisgICAgcmV0
dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ29uc3RydWN0KTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncykKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRv
OgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZSB3aGlsZSByZXNwZWN0aW5nIHRoZSB2YXJp
YWJsZSBhcmd1bWVudHMuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29t
cGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5l
IGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCisgICAgCisgICAg
SlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSk7CisgICAgCisgICAgRXhlY1N0YXRl
KiBleGVjQ2FsbGVlID0gbG9hZFZhcmFyZ3MoCisgICAgICAgIGV4ZWMsIGV4ZWMtPmdsb2JhbERh
dGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksCisgICAgICAgIExMSU5UX09QKDIpLmpz
VmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpLCBwY1s0XS51Lm9wZXJhbmQpOworICAgIExM
SU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKTsKKyAgICAKKyAgICBleGVjQ2FsbGVl
LT5zZXRDYWxsZWUoY2FsbGVlQXNWYWx1ZSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJh
bWUoZXhlYyk7CisgICAgCisgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywga2lu
ZCwgY2FsbGVlQXNWYWx1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2
YWwpCit7CisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSk7CisgICAgCisg
ICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICBK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAg
ZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5k
KTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjQ2FsbGVl
LT5zZXRDYWxsZWUoY2FsbGVlQXNWYWx1ZSk7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFp
bihjYWxsZXJGcmFtZS0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRSZXR1cm5Q
QyhiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkp
OworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKyAgICAKKyAgICBpZiAoIWlzSG9z
dEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFsKSkKKyAgICAgICAgcmV0dXJu
IHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOwor
ICAgIAorICAgIGdsb2JhbERhdGEuaG9zdENhbGxSZXR1cm5WYWx1ZSA9IGV2YWwoZXhlY0NhbGxl
ZSk7CisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCit7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVC
bG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIEpTVmFsdWUgYWN0aXZhdGlvblZh
bHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIGlmICghYWN0aXZhdGlvblZhbHVlKSB7
CisgICAgICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT5yZWdpc3RlcnMoKVt1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKV0pIHsKKyAgICAgICAgICAgIGlmICghZXhl
Yy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAgIGFzQXJndW1l
bnRzKHYpLT50ZWFyT2ZmKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgICAgIH0KKyAgICAgICAg
TExJTlRfRU5EKCk7CisgICAgfQorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGFzQWN0
aXZhdGlvbihhY3RpdmF0aW9uVmFsdWUpOworICAgIGFjdGl2YXRpb24tPnRlYXJPZmYoZXhlYy0+
Z2xvYmFsRGF0YSgpKTsKKyAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+cmVnaXN0ZXJzKClbdW5t
b2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCldKQorICAgICAgICBhc0Fy
Z3VtZW50cyh2KS0+ZGlkVGVhck9mZkFjdGl2YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBhY3Rp
dmF0aW9uKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3RlYXJfb2ZmX2FyZ3VtZW50cykKK3sKKyAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCktPnVz
ZXNBcmd1bWVudHMoKSAmJiAhZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4o
KSk7CisgICAgYXNBcmd1bWVudHMoZXhlYy0+cmVnaXN0ZXJzKClbdW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCldKS0+dGVhck9mZihleGVjLT5nbG9iYWxEYXRhKCkp
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0
KQoreworICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhleGVjLCAmTExJTlRfT1AoMiksIHBjWzNd
LnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZl
KQoreworICAgIExMSU5UX1JFVFVSTihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9QcmltaXRpdmUo
ZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X3BuYW1lcykKK3sKKyAg
ICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKHYuaXNVbmRlZmlu
ZWRPck51bGwoKSkgeworICAgICAgICBwYyArPSBwY1s1XS51Lm9wZXJhbmQ7CisgICAgICAgIExM
SU5UX0VORCgpOworICAgIH0KKyAgICAKKyAgICBKU09iamVjdCogbyA9IHYudG9PYmplY3QoZXhl
Yyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvLT5zdHJ1Y3R1cmUoKTsKKyAgICBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gc3RydWN0dXJlLT5l
bnVtZXJhdGlvbkNhY2hlKCk7CisgICAgaWYgKCFqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yIHx8IGpz
UHJvcGVydHlOYW1lSXRlcmF0b3ItPmNhY2hlZFByb3RvdHlwZUNoYWluKCkgIT0gc3RydWN0dXJl
LT5wcm90b3R5cGVDaGFpbihleGVjKSkKKyAgICAgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBvKTsKKyAgICAKKyAgICBMTElO
VF9PUCgxKSA9IGpzUHJvcGVydHlOYW1lSXRlcmF0b3I7CisgICAgTExJTlRfT1AoMikgPSBKU1Zh
bHVlKG8pOworICAgIExMSU5UX09QKDMpID0gUmVnaXN0ZXI6OndpdGhJbnQoMCk7CisgICAgTExJ
TlRfT1AoNCkgPSBSZWdpc3Rlcjo6d2l0aEludChqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5zaXpl
KCkpOworICAgIAorICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X3BuYW1lcyk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXh0X3BuYW1lKQor
eworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoTExJTlRfT1AoMikuanNWYWx1ZSgpKTsK
KyAgICBKU1N0cmluZyogcHJvcGVydHkgPSBhc1N0cmluZyhMTElOVF9PUCgxKS5qc1ZhbHVlKCkp
OworICAgIGlmIChiYXNlLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHByb3Bl
cnR5LT52YWx1ZShleGVjKSkpKSB7CisgICAgICAgIC8vIEdvIHRvIHRhcmdldC4KKyAgICAgICAg
cGMgKz0gcGNbNl0udS5vcGVyYW5kOworICAgIH0gLy8gRWxzZSwgZG9uJ3QgY2hhbmdlIHRoZSBQ
Qywgc28gdGhlIGludGVycHJldGVyIHdpbGwgcmVsb29wLgorICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSkKK3sKKyAgICBKU1ZhbHVlIHYg
PSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4
ZWMpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIExMSU5UX09QKDEp
ID0gbzsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChv
KSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wb3Bfc2NvcGUpCit7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWlu
KCktPnBvcCgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3B1c2hfbmV3X3Njb3BlKQoreworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oY3JlYXRlRXhj
ZXB0aW9uU2NvcGUoZXhlYywgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKSkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfdGhyb3cpCit7CisgICAgTExJTlRfVEhST1coTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKK3sKKyAg
ICBMTElOVF9USFJPVyhjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBMTElOVF9PUF9DKDEpLmpz
VmFsdWUoKS50b1N0cmluZyhleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
ZGVidWcpCit7CisgICAgaW50IGRlYnVnSG9va0lEID0gcGNbMV0udS5vcGVyYW5kOworICAgIGlu
dCBmaXJzdExpbmUgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaW50IGxhc3RMaW5lID0gcGNbM10u
dS5vcGVyYW5kOworICAgIAorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+ZGVi
dWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5l
LCBsYXN0TGluZSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVk
UHJvZmlsZXJSZWZlcmVuY2UoKSktPndpbGxFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFs
dWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
cm9maWxlX2RpZF9jYWxsKQoreworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVy
ZW5jZSgpKS0+ZGlkRXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExM
SU5UX0VORCgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBMTEludEhlbHBlcnNfaAorI2RlZmluZSBMTEludEhlbHBlcnNfaAor
CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIExMSW50IHsKKwordHlwZWRlZiBpbnQ2NF90IEhlbHBlclJldHVyblR5cGU7CisKKyNkZWZp
bmUgTExJTlRfSEVMUEVSX0RFQ0wobmFtZSkgXAorICAgIGV4dGVybiAiQyIgSGVscGVyUmV0dXJu
VHlwZSBsbGludF8jI25hbWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCisKK0xM
SU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcik7CitMTElOVF9IRUxQRVJfREVDTChsb29wX29zcik7
CitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVy
X2ZpbGVfY2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjayk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVh
dGVfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29udmVydF90aGlzKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uZXdfYXJyYXkpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdleHApOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25vdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25lcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdG5lcSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9n
cmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3ByZV9kZWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3Rf
aW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfdG9fanNudW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0
ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9tdWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1Yik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZGl2KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2QpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcnNo
aWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9iaXRhbmQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG9yKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2JpdG5vdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9mKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl90eXBlb2YpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbik7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaXNfbnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19zdHJpbmcp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX29iamVjdCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaXNfZnVuY3Rpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9yZXNvbHZlX3NraXApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFs
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNv
bHZlX3dpdGhfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2RlbF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
dXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfdmFsKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3B1dF9nZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qZmFsc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9qbmxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVy
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2psZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbmdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2lt
bSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2NoYXIpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
d19mdW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0
cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rl
YXJfb2ZmX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2Fy
Z3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dl
dF9wbmFtZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3BvcF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl90aHJvd19yZWZlcmVuY2VfZXJyb3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVn
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCk7CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnRIZWxwZXJzX2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSAiQWxsb2NhdGlvblNwYWNlLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgorI2luY2x1ZGUgIkpJVFN0YWNrRnJhbWUuaCIKKyNpbmNsdWRlICJKU0FycmF5
LmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1
ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU3R5cGVJbmZvLmgiCisjaW5jbHVkZSAiSlNW
YXJpYWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIk1hcmtl
ZFNwYWNlLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFp
bi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgi
CisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1w
bC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2lmIENQVShYODYpCisjZGVmaW5lIE9GRkxJTkVf
QVNNX1g4NiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMAorI2VuZGlmCisKKyNp
ZiBDUFUoQVJNdjcpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDEKKyNlbHNlCisjZGVmaW5l
IE9GRkxJTkVfQVNNX0FSTXY3IDAKKyNlbmRpZgorCisjaWYgIUFTU0VSVFNfRElTQUJMRUQKKyNk
ZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUU19FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX0FTU0VSVFNfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIENQVShCSUdfRU5ESUFOKQor
I2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVf
QVNNX0JJR19FTkRJQU4gMAorI2VuZGlmCisKKyNpZiBFTkFCTEUoTExJTlRfT1NSX1RPX0pJVCkK
KyNkZWZpbmUgT0ZGTElORV9BU01fSklUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElO
RV9BU01fSklUX0VOQUJMRUQgMAorI2VuZGlmCisKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
ciB7CitwdWJsaWM6CisgICAgc3RhdGljIHVuc2lnbmVkKiBkdW1teSgpOworfTsKKwordW5zaWdu
ZWQqIExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKQoreworI2luY2x1ZGUgIkxMSW50RGVz
aXJlZE9mZnNldHMuaCIKKyAgICByZXR1cm4gZXh0cmFjdG9yVGFibGU7Cit9CisKK30gLy8gbmFt
ZXNwYWVjIEpTQworCitpbnQgbWFpbihpbnQgYywgY2hhcioqIHYpCit7CisgICAgLy8gT3V0IG9m
IGFuIGFidW5kYW5jZSBvZiBjYXV0aW9uLCBtYWtlIHN1cmUgdGhhdCBMTEludE9mZnNldHNFeHRy
YWN0b3I6OmR1bW15KCkgaXMgbGl2ZSwKKyAgICAvLyBhbmQgdGhlIGV4dHJhY3RvclRhYmxlIGlz
IGxpdmUsIHRvby4KKyAgICBwcmludGYoIiVwXG4iLCBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rv
cjo6ZHVtbXkoKSk7CisgICAgcmV0dXJuIDA7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxNTkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKworIyBDcmFzaCBjb3Vyc2Ugb24gdGhlIGxhbmd1YWdlIHRoYXQg
dGhpcyBpcyB3cml0dGVuIGluICh3aGljaCBJIGp1c3QgY2FsbAorIyAiYXNzZW1ibHkiIGV2ZW4g
dGhvdWdoIGl0J3MgbW9yZSB0aGFuIHRoYXQpOgorIworIyAtIE1vc3RseSBnYXMtc3R5bGUgb3Bl
cmFuZCBvcmRlcmluZy4gVGhlIGxhc3Qgb3BlcmFuZCB0ZW5kcyB0byBiZSB0aGUKKyMgICBkZXN0
aW5hdGlvbi4gU28gImEgOj0gYiIgaXMgd3JpdHRlbiBhcyAibW92IGIsIGEiLiBCdXQgdW5saWtl
IGdhcywKKyMgICBjb21wYXJpc29ucyBhcmUgaW4tb3JkZXIsIHNvICJpZiAoYSA8IGIpIiBpcyB3
cml0dGVuIGFzCisjICAgImJpbHQgYSwgYiwgLi4uIi4KKyMKKyMgLSAiYiIgPSBieXRlLCAiaCIg
PSAxNi1iaXQgd29yZCwgImkiID0gMzItYml0IHdvcmQsICJwIiA9IHBvaW50ZXIuCisjICAgQ3Vy
cmVudGx5IHRoaXMgaXMganVzdCAzMi1iaXQgc28gImkiIGFuZCAicCIgYXJlIGludGVyY2hhbmdl
YWJsZQorIyAgIGV4Y2VwdCB3aGVuIGFuIG9wIHN1cHBvcnRzIG9uZSBidXQgbm90IHRoZSBvdGhl
ci4KKyMKKyMgLSBJbiBnZW5lcmFsLCB2YWxpZCBvcGVyYW5kcyBmb3IgbWFjcm8gaW52b2NhdGlv
bnMgYW5kIGluc3RydWN0aW9ucyBhcmUKKyMgICByZWdpc3RlcnMgKGVnICJ0MCIpLCBhZGRyZXNz
ZXMgKGVnICI0W3QwXSIpLCBiYXNlLWluZGV4IGFkZHJlc3NlcworIyAgIChlZyAiN1t0MCwgdDEs
IDJdIiksIGFic29sdXRlIGFkZHJlc3NlcyAoZWcgIjB4YTAwMDAwMDBbXSIpLCBvciBsYWJlbHMK
KyMgICAoZWcgIl9mb28iIG9yICIuZm9vIikuIE1hY3JvIGludm9jYXRpb25zIGNhbiBhbHNvIHRh
a2UgYW5vbnltb3VzCisjICAgbWFjcm9zIGFzIG9wZXJhbmRzLiBJbnN0cnVjdGlvbnMgY2Fubm90
IHRha2UgYW5vbnltb3VzIG1hY3Jvcy4KKyMKKyMgLSBMYWJlbHMgbXVzdCBoYXZlIG5hbWVzIHRo
YXQgYmVnaW4gd2l0aCBlaXRoZXIgIl8iIG9yICIuIi4gIEEgIi4iIGxhYmVsCisjICAgaXMgbG9j
YWwgYW5kIGdldHMgcmVuYW1lZCBiZWZvcmUgY29kZSBnZW4gdG8gbWluaW1pemUgbmFtZXNwYWNl
CisjICAgcG9sbHV0aW9uLiBBICJfIiBsYWJlbCBpcyBhbiBleHRlcm4gc3ltYm9sIChpLmUuICIu
Z2xvYmwiKS4gVGhlICJfIgorIyAgIG1heSBvciBtYXkgbm90IGJlIHJlbW92ZWQgZHVyaW5nIGNv
ZGUgZ2VuIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBhc20KKyMgICBjb252ZW50aW9ucyBmb3Ig
QyBuYW1lIG1hbmdsaW5nIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0gbWFuZGF0ZSBhICJfIgorIyAg
IHByZWZpeC4KKyMKKyMgLSBBICJtYWNybyIgaXMgYSBsYW1iZGEgZXhwcmVzc2lvbiwgd2hpY2gg
bWF5IGJlIGVpdGhlciBhbm9ueW1vdXMgb3IKKyMgICBuYW1lZC4gQnV0IHRoaXMgaGFzIGNhdmVh
dHMuICJtYWNybyIgY2FuIHRha2UgemVybyBvciBtb3JlIGFyZ3VtZW50cywKKyMgICB3aGljaCBt
YXkgYmUgbWFjcm9zIG9yIGFueSB2YWxpZCBvcGVyYW5kcywgYnV0IGl0IGNhbiBvbmx5IHJldHVy
bgorIyAgIGNvZGUuIEJ1dCB5b3UgY2FuIGRvIFR1cmluZy1jb21wbGV0ZSB0aGluZ3MgdmlhIGNv
bnRpbnVhdGlvbiBwYXNzaW5nCisjICAgc3R5bGU6ICJtYWNybyBmb28gKGEsIGIpIGIoYSkgZW5k
IGZvbyhmb28sIGZvbykiLiBBY3R1YWxseSwgZG9uJ3QgZG8KKyMgICB0aGF0LCBzaW5jZSB5b3Un
bGwganVzdCBjcmFzaCB0aGUgYXNzZW1ibGVyLgorIworIyAtIEFuICJpZiIgaXMgYSBjb25kaXRp
b25hbCBvbiBzZXR0aW5ncy4gQW55IGlkZW50aWZpZXIgc3VwcGxpZWQgaW4gdGhlCisjICAgcHJl
ZGljYXRlIG9mIGFuICJpZiIgaXMgYXNzdW1lZCB0byBiZSBhICNkZWZpbmUgdGhhdCBpcyBhdmFp
bGFibGUKKyMgICBkdXJpbmcgY29kZSBnZW4uIFNvIHlvdSBjYW4ndCB1c2UgImlmIiBmb3IgY29t
cHV0YXRpb24gaW4gYSBtYWNybywgYnV0CisjICAgeW91IGNhbiB1c2UgaXQgdG8gc2VsZWN0IGRp
ZmZlcmVudCBwaWVjZXMgb2YgY29kZSBmb3IgZGlmZmVyZW50CisjICAgcGxhdGZvcm1zLgorIwor
IyAtIEFyZ3VtZW50cyB0byBtYWNyb3MgZm9sbG93IGxleGljYWwgc2NvcGluZyByYXRoZXIgdGhh
biBkeW5hbWljIHNjb3BpbmcuCisjICAgQ29uc3QncyBhbHNvIGZvbGxvdyBsZXhpY2FsIHNjb3Bp
bmcgYW5kIG1heSBvdmVycmlkZSAoaGlkZSkgYXJndW1lbnRzCisjICAgb3Igb3RoZXIgY29uc3Rz
LiBBbGwgdmFyaWFibGVzIChhcmd1bWVudHMgYW5kIGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisj
ICAgdG8gb3BlcmFuZHMuIEFkZGl0aW9uYWxseSwgYXJndW1lbnRzIChidXQgbm90IGNvbnN0YW50
cykgY2FuIGJlIGJvdW5kCisjICAgdG8gbWFjcm9zLgorCisKKyMgVGhlc2UgZGVjbGFyYXRpb25z
IG11c3QgbWF0Y2ggaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmguCitjb25zdCBDYWxsRnJhbWVI
ZWFkZXJTaXplID0gNDgKK2NvbnN0IEFyZ3VtZW50Q291bnQgPSAtNDgKK2NvbnN0IENhbGxlckZy
YW1lID0gLTQwCitjb25zdCBDYWxsZWUgPSAtMzIKK2NvbnN0IFNjb3BlQ2hhaW4gPSAtMjQKK2Nv
bnN0IFJldHVyblBDID0gLTE2Citjb25zdCBDb2RlQmxvY2sgPSAtOAorCisjIERlY2xhcmUgc29t
ZSBhbGlhc2VzIGZvciB0aGUgcmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAor
CisjIE9mZnNldHMgbmVlZGVkIGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRp
b24uCitpZiBCSUdfRU5ESUFOCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBh
eWxvYWRPZmZzZXQgPSA0CitlbHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0
IFBheWxvYWRPZmZzZXQgPSAwCitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFu
dHMuCitjb25zdCBJbnQzMlRhZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51
bGxUYWcgPSAtMworY29uc3QgVW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQor
Y29uc3QgRW1wdHlWYWx1ZVRhZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29u
c3QgTG93ZXN0VGFnID0gRGVsZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25z
dCBTdHJpbmdUeXBlID0gNQorY29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFncyBj
b25zdGFudHMuCitjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVt
ZW50c0hhc0luc3RhbmNlID0gMgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9
IDgKKworIyBIZWFwIGFsbG9jYXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNp
emVDbGFzc0luZGV4ID0gMQorCisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3Qg
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNv
bnN0YW50cy4KK2NvbnN0IEdsb2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0
IEZ1bmN0aW9uQ29kZSA9IDIKKworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29y
ZCBvZiB0aGUgYXJndW1lbnQgY291bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRD
b3VudCArIFRhZ09mZnNldAorCisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25z
dCBWZWN0b3JTaXplT2Zmc2V0ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisj
IFN0cmluZyBmbGFncy4KK2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxp
dGllcworbWFjcm8gY3Jhc2goKQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3Zl
IDAsIHQwCisgICAgY2FsbCB0MAorZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAg
aWYgQVNTRVJUU19FTkFCTEVECisgICAgICAgIGFzc2VydGlvbigub2spCisgICAgICAgIGNyYXNo
KCkKKyAgICAub2s6CisgICAgZW5kCitlbmQKKworbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNz
QWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92
ZSBsciwgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2lmIFg4NgorICAgICAgICBwb3AgZGVz
dGluYXRpb25SZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAor
CittYWNybyByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihzb3VyY2VSZWdpc3RlcikK
KyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgorICAgIGVsc2lm
IFg4NgorICAgICAgICBwdXNoIHNvdXJjZVJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJv
cgorICAgIGVuZAorZW5kCisKK21hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCisgICAgYWRkcCBhZHZh
bmNlICogNCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoKHBj
T2Zmc2V0KQorICAgIGxvYWRpIHBjT2Zmc2V0LCB0MAorICAgIGxzaGlmdGkgMiwgdDAKKyAgICBh
ZGRwIHQwLCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwo
KQorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBqbXAg
W1BDXQorZW5kCisKK21hY3JvIGNDYWxsMihmdW5jdGlvbiwgYXJnMSwgYXJnMikKKyAgICBpZiBB
Uk12NworICAgICAgICBtb3ZlIGFyZzEsIHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICBl
bHNpZiBYODYKKyAgICAgICAgcG9rZSBhcmcyLCAwCisgICAgICAgIHBva2UgYXJnMSwgMQorICAg
IGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKKyAgICBjYWxsIGZ1bmN0aW9uCitlbmQKKwor
bWFjcm8gY2FsbEhlbHBlcihoZWxwZXIpCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAg
ICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKK21hY3JvIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKF9sbGlu
dF90cmFjZSkKKyAgICBlbmQKK2VuZAorCisjIENhbGwgYSBoZWxwZXIgZm9yIGNhbGwgb3Bjb2Rl
cy4KK21hY3JvIGNhbGxDYWxsSGVscGVyKGFkdmFuY2UsIGhlbHBlciwgYWN0aW9uKQorICAgIGFk
ZHAgYWR2YW5jZSAqIDQsIFBDLCB0MAorICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRh
Z09mZnNldFtjZnJdCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQxLCBj
ZnIKKyAgICBhY3Rpb24odDApCitlbmQKKworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2Us
IGhlbHBlcikKKyAgICBjYWxsQ2FsbEhlbHBlcigKKyAgICAgICAgYWR2YW5jZSwKKyAgICAgICAg
aGVscGVyLAorICAgICAgICBtYWNybyAoY2FsbGVlKQorICAgICAgICAgICAgY2FsbCBjYWxsZWUK
KyAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAgICAgZW5kKQorZW5kCisKK21h
Y3JvIGNoZWNrU3dpdGNoVG9KSVQoaW5jcmVtZW50LCBhY3Rpb24pCisgICAgaWYgSklUX0VOQUJM
RUQKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgICAgIGJhZGRpcyBpbmNy
ZW1lbnQsIENvZGVCbG9jazo6bV9leGVjdXRlQ291bnRlclt0MF0sIC5kb25lCisgICAgICAgIGFj
dGlvbigpCisgICAgLmRvbmU6CisgICAgZW5kCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJ
VEZvclByb2xvZ3VlKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICA1LAorICAgICAg
ICBtYWNybyAoKQorICAgICAgICAgICAgY0NhbGwyKF9sbGludF9lbnRyeV9vc3IsIGNmciwgUEMp
CisgICAgICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgICAgIGptcCB0MAorICAgICAgICBl
bmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGNoZWNrU3dp
dGNoVG9KSVQoCisgICAgICAgIDEsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBjQ2Fs
bDIoX2xsaW50X2xvb3Bfb3NyLCBjZnIsIFBDKQorICAgICAgICAgICAgbW92ZSB0MSwgY2ZyCisg
ICAgICAgICAgICBqbXAgdDAKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNo
VG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMTAsCisg
ICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBjYWxsSGVscGVyKF9sbGludF9yZXBsYWNlKQor
ICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoaW5kZXgpCisgICAg
YXNzZXJ0KG1hY3JvIChvaykgYmliIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwg
b2sgZW5kKQorZW5kCisKKyMgSW5kZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJl
bnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QKKyMgY2hhbmdlZC4KK21hY3JvIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWFlcSBpbmRleCwgRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwg
cGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsg
VmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJp
dCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwg
dG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9hZHAg
VGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNl
dFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5k
IHBheWxvYWQgbWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLgorbWFjcm8gbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWFlcSBpbmRleCwgRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwg
cGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0YWcKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0
b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHRhZworICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZp
bCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1
ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxzaGlmdGkgMywgaW5k
ZXgKKyAgICBhZGRwIGluZGV4LCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBh
eWxvYWQKKyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnCisuZG9uZToKK2VuZAorCittYWNy
byBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxv
YWQsIHNsb3cpCisgICAgYmlhZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAu
Y29uc3RhbnQKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIGV4cGVjdGVkVGFn
LCBzbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAor
ICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXls
b2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVm
ZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmls
IGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVl
IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgYmluZXEgVGFnT2Zmc2V0
W3BheWxvYWQsIGluZGV4LCA4XSwgZXhwZWN0ZWRUYWcsIHNsb3cKKyAgICBsb2FkcCBQYXlsb2Fk
T2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworbWFjcm8g
d3JpdGVCYXJyaWVyKHRhZywgcGF5bG9hZCkKKyAgICAjIE5vdGhpbmcgdG8gZG8gc2luY2Ugd2Ug
ZG9uJ3QgaGF2ZSBhIGdlbmVyYXRpb25hbCBvciBpbmNyZW1lbnRhbCBjb2xsZWN0b3IuCitlbmQK
KworIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlcgorCisjIERvIHRoZSBiYXJlIG1p
bmltdW0gcmVxdWlyZWQgdG8gZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhl
IENvZGVCbG9jayoKKyMgaW4gdDEKK21hY3JvIHByb2xvZ3VlKG9mZnNldE9mQ29kZUJsb2NrKQor
ICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1
cCB0aGUgY2FsbCBmcmFtZS4KKyAgICBzdG9yZXAgdDIsIFJldHVyblBDW2Nmcl0KKyAgICBsb2Fk
cCBDYWxsZWVbY2ZyXSwgdDEKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFd
LCB0MQorICAgIGxvYWRwIG9mZnNldE9mQ29kZUJsb2NrW3QxXSwgdDEKKyAgICBzdG9yZXAgdDEs
IENvZGVCbG9ja1tjZnJdCisgICAgCisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIFZlY3RvckJ1ZmZlck9m
ZnNldFt0MF0sIFBDCitlbmQKKworbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbigpCisgICAg
IyBQcm9maWxlIHRoZSBhcmd1bWVudHMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hvaWNl
IGJ1dCB0byBkbyB0aGlzLgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3Qx
XSwgdDAKKyAgICBidGl6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9uZQorICAgIGxzaGlmdGkgMywg
dDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9y
QnVmZmVyT2Zmc2V0W3QxXSwgdDMKKy5hcmd1bWVudFByb2ZpbGVMb29wOgorICAgIGxvYWRpIFRh
Z09mZnNldFtjZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIsIFZhbHVlUHJvZmlsZTo6bV9idWNr
ZXRzICsgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MF0sIHQy
CisgICAgc3RvcmVpIHQyLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRb
dDNdCisgICAgYWRkcCBzaXplb2YgVmFsdWVQcm9maWxlLCB0MworICAgIGJzdWJpbnogOCwgdDAs
IC5hcmd1bWVudFByb2ZpbGVMb29wCisuYXJndW1lbnRQcm9maWxlRG9uZToKKyAgICAKKyAgICAj
IENoZWNrIHN0YWNrIGhlaWdodC4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVn
aXN0ZXJzW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQy
CisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjptX2ludGVycHJldGVyW3QyXSwgdDIKKyAgICBsc2hp
ZnRpIDMsIHQwCisgICAgYWRkcCB0MCwgY2ZyLCB0MAorICAgIGJwYWVxIEludGVycHJldGVyOjpt
X3JlZ2lzdGVyRmlsZSArIFJlZ2lzdGVyRmlsZTo6bV9lbmRbdDJdLCB0MCwgLnN0YWNrSGVpZ2h0
T0sKKworICAgICMgU3RhY2sgaGVpZ2h0IGNoZWNrIGZhaWxlZCAtIG5lZWQgdG8gY2FsbCBhIGhl
bHBlci4KKyAgICBjYWxsSGVscGVyKF9sbGludF9yZWdpc3Rlcl9maWxlX2NoZWNrKQorLnN0YWNr
SGVpZ2h0T0s6CitlbmQKKworbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgaGVs
cGVyKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisg
ICAgYmllcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKKyAg
ICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBqbXAgZG9uZUxhYmVsCitlbmQKKworX2xsaW50X3By
b2dyYW1fcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoUHJvZ3JhbUV4ZWN1dGFibGU6Om1fcHJvZ3Jh
bUNvZGVCbG9jaykKKyAgICBjaGVja1N3aXRjaFRvSklURm9yUHJvbG9ndWUoKQorICAgIGRpc3Bh
dGNoKDApCisKKworX2xsaW50X2V2YWxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoRXZhbEV4ZWN1
dGFibGU6Om1fZXZhbENvZGVCbG9jaykKKyAgICBjaGVja1N3aXRjaFRvSklURm9yUHJvbG9ndWUo
KQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3Vl
OgorICAgIHByb2xvZ3VlKEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsKQor
LmZ1bmN0aW9uRm9yQ2FsbEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oKQorICAg
IGNoZWNrU3dpdGNoVG9KSVRGb3JQcm9sb2d1ZSgpCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKwor
X2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoRnVu
Y3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCkKKy5mdW5jdGlvbkZvckNv
bnN0cnVjdEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oKQorICAgIGNoZWNrU3dp
dGNoVG9KSVRGb3JQcm9sb2d1ZSgpCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1
bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKEZ1bmN0aW9uRXhlY3V0
YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rp
b25Gb3JDYWxsQmVnaW4sIF9sbGludF9oZWxwZXJfY2FsbF9hcml0eUNoZWNrKQorCisKK19sbGlu
dF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKEZ1bmN0
aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVj
ayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3RfYXJp
dHlDaGVjaykKKworIyBJbnN0cnVjdGlvbiBpbXBsZW1lbnRhdGlvbnMKKworX2xsaW50X29wX2Vu
dGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIK
KyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFycywgdDIKKyAgICBidGl6IC5vcEVudGVyRG9u
ZQorICAgIG1vdmUgVW5kZWZpbmVkVGFnLCB0MAorICAgIG1vdmUgMCwgdDEKKy5vcEVudGVyTG9v
cDoKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0K
KyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBidGlueiB0Miwg
Lm9wRW50ZXJMb29wCisub3BFbnRlckRvbmU6CisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRf
b3BfY3JlYXRlX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywg
Lm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3Jl
YXRlX2FjdGl2YXRpb24pCisub3BDcmVhdGVBY3RpdmF0aW9uRG9uZToKKyAgICBkaXNwYXRjaCgy
KQorCisKK19sbGludF9vcF9pbml0X2xhenlfcmVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgc3RvcmVpIDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBk
aXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jcmVhdGVfYXJndW1lbnRzOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKKy5vcENyZWF0ZUFyZ3VtZW50c0Rv
bmU6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6
ZUNsYXNzSW5kZXgsIHZwdHJPZmZzZXQsIG9mZnNldE9mUHJvcGVydHlTdG9yYWdlLCBzdHJ1Y3R1
cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBzbG93Q2FzZSkKKyAgICBjb25zdCBvZmZz
ZXRPZk15U2l6ZUNsYXNzID0gSlNHbG9iYWxEYXRhOjpoZWFwICsgSGVhcDo6bV9vYmplY3RTcGFj
ZSArIEFsbG9jYXRpb25TcGFjZTo6bV9tYXJrZWRTcGFjZSArIE1hcmtlZFNwYWNlOjptX3ByZWNp
c2VTaXplQ2xhc3NlcyArIHNpemVDbGFzc0luZGV4ICogc2l6ZW9mIE1hcmtlZFNwYWNlOjpTaXpl
Q2xhc3MKKyAgICAKKyAgICAjIEZJWE1FOiB3ZSBjYW4gZ2V0IHRoZSBnbG9iYWwgZGF0YSBpbiBv
bmUgbG9hZCBmcm9tIHRoZSBzdGFjay4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2NyYXRj
aDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVtzY3JhdGNoMV0sIHNjcmF0Y2gx
CisgICAgCisgICAgIyBHZXQgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuICAgIAorICAg
IGxvYWRwIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJz
dEZyZWVDZWxsW3NjcmF0Y2gxXSwgcmVzdWx0CisgICAgYnRweiByZXN1bHQsIHNsb3dDYXNlCisg
ICAgCisgICAgIyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCisgICAgbG9h
ZHAgW3Jlc3VsdF0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gxLCBvZmZzZXRPZk15U2l6
ZUNsYXNzICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0K
KworICAgICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgorICAgIGxvYWRwIHZwdHJPZmZzZXRbc2Ny
YXRjaDFdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3VsdF0KKyAgICBzdG9y
ZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0KKyAgICBzdG9yZXAgMCwg
SlNPYmplY3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0XQorICAgIGFkZHAgc2l6ZW9mIEpTT2JqZWN0
LCByZXN1bHQsIHNjcmF0Y2gxCisgICAgc3RvcmVwIHNjcmF0Y2gxLCBvZmZzZXRPZlByb3BlcnR5
U3RvcmFnZVtyZXN1bHRdCitlbmQKKworX2xsaW50X29wX2NyZWF0ZV90aGlzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBhc3NlcnROb3RDb25zdGFudCh0
MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENyZWF0ZVRo
aXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5vcENyZWF0ZVRoaXNTbG93
CisgICAgbG9hZHAgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbdDBdLCB0MgorICAgIGJ0cHogdDIs
IC5vcENyZWF0ZVRoaXNTbG93CisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmpl
Y3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0VlB0ciwgSlNGaW5h
bE9iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2UsIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlz
U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgZGlzcGF0Y2goMykKKworLm9wQ3JlYXRlVGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2NyZWF0ZV90aGlzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dl
dF9jYWxsZWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGxvYWRwIFBheWxvYWRPZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRh
ZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQwCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjpt
X3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgy
KQorCisub3BDb252ZXJ0VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Nv
bnZlcnRfdGhpcykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfb2JqZWN0Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2Jh
bE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNp
Y0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0Zp
bmFsT2JqZWN0VlB0ciwgSlNGaW5hbE9iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2UsIHQxLCB0MCwg
dDIsIHQzLCAub3BOZXdPYmplY3RTbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3Jl
aSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BOZXdPYmplY3RTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfb2JqZWN0KQorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX25ld19hcnJheToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9uZXdfYXJyYXlfYnVmZmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2FycmF5X2J1ZmZlcikKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9uZXdfcmVnZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfbmV3X3JlZ2V4cCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9tb3Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0
MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0Mywg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X25vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9h
ZGkgNFtQQ10sIHQxCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQzCisgICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5vcE5vdFNsb3cKKyAgICB4b3JpIDEsIHQz
CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOb3RTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ub3QpCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0Mywg
dDEpCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAg
YmluZXEgdDIsIHQzLCAub3BFcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BFcVNsb3cK
KyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wRXFTbG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisg
ICAgY2llcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIs
IHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRp
c3BhdGNoKDQpCisKKy5vcEVxU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZXEp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNz
ZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENl
bGxUYWcsIC5vcEVxTnVsbEltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MQorICAgIHRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxh
Z3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQorICAgIGptcCAub3BFcU51bGxOb3RJ
bW1lZGlhdGUKKy5vcEVxTnVsbEltbWVkaWF0ZToKKyAgICBjaWVxIHQxLCBOdWxsVGFnLCB0Mgor
ICAgIGNpZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKKyAgICBvcmkgdDIsIHQxCisub3BFcU51bGxO
b3RJbW1lZGlhdGU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4
XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX25lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
MTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDIsIHQzLCB0MSkKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDAKKyAgICBiaW5lcSB0MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFn
LCAub3BOZXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2Fk
aSA0W1BDXSwgdDIKKyAgICBjaW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcs
IFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX25lcSkKKyAgICBkaXNwYXRjaCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVx
X251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEK
KyAgICBqbXAgLm9wTmVxTnVsbE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAg
ICBjaW5lcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQor
ICAgIGFuZGkgdDIsIHQxCisub3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29s
ZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFs
aXR5T3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhb
UENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBhc3Nl
cnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MiwgdDMs
IC5vcFN0cmljdGVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpbmVx
IHQyLCBDZWxsVGFnLCAubm90U3RyaW5nCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQzCisgICAgYmJuZXEg
U3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUs
IC5ub3RTdHJpbmcKKyAgICBiYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjpt
X3R5cGVbdDNdLCBTdHJpbmdUeXBlLCAuc2xvdworLm5vdFN0cmluZzoKKyAgICBsb2FkaSA0W1BD
XSwgdDIKKyAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIHQwKQorICAgIHN0b3JlaSBCb29s
ZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVy
KGhlbHBlcikKKyAgICBkaXNwYXRjaCg0KQorZW5kCisKK19sbGludF9vcF9zdHJpY3RlcToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1
bHQpIGNpZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9oZWxwZXJfc3RyaWN0ZXEp
CisKKworX2xsaW50X29wX3N0cmljdG5lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc3Ry
aWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpbmVxIGxlZnQsIHJpZ2h0LCByZXN1
bHQgZW5kLCBfbGxpbnRfaGVscGVyX3N0cmljdG5lcSkKKworCitfbGxpbnRfb3BfbGVzczoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3MpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzc2VxKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX2dyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX2dyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2dyZWF0ZXJlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcmVf
aW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5l
cSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVJbmNTbG93CisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBiYWRkaW8gMSwgdDEsIC5vcFBy
ZUluY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBk
aXNwYXRjaCgyKQorCisub3BQcmVJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9wcmVfaW5jKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3ByZV9kZWM6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZURlY1Nsb3cKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJzdWJpbyAxLCB0MSwgLm9wUHJlRGVjU2xvdwor
ICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIp
CisKKy5vcFByZURlY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3ByZV9kZWMp
CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9zdF9pbmM6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3RJbmNTbG93CisgICAg
YmllcSB0MCwgdDEsIC5vcFBvc3RJbmNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDIKKyAgICBtb3ZlIHQyLCB0MworICAgIGJhZGRpbyAxLCB0MywgLm9wUG9zdElu
Y1Nsb3cKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0
b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQorLm9wUG9zdEluY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKwor
Lm9wUG9zdEluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfaW5jKQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Bvc3RfZGVjOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5l
cSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0RGVjU2xvdworICAgIGJp
ZXEgdDAsIHQxLCAub3BQb3N0RGVjRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBic3ViaW8gMSwgdDMsIC5vcFBvc3REZWNT
bG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3REZWNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5v
cFBvc3REZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2RlYykKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF90b19qc251bWJlcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYXNz
ZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0Mgor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgYmllcSB0MiwgSW50
MzJUYWcsIC5vcFRvSnNudW1iZXJJc0ludAorICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAu
b3BUb0pzbnVtYmVyU2xvdworLm9wVG9Kc251bWJlcklzSW50OgorICAgIHN0b3JlaSB0MiwgVGFn
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9Kc251bWJlclNsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3RvX2pzbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX25lZ2F0ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQyCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BOZWdhdGVTcmNOb3RJbnQKKyAg
ICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CisgICAgbmVnaSB0MgorICAgIHN0
b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKy5vcE5lZ2F0ZVNyY05vdElu
dDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xvdworICAgIHhvcmkgMHg4MDAw
MDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5l
Z2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lZ2F0ZSkKKyAgICBkaXNw
YXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFu
ZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisg
ICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQx
KQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJp
bmVxIHQyLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLm9w
Mk5vdEludAorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGludGVnZXJPcGVyYXRpb25BbmRTdG9y
ZSh0MywgdDEsIHQwLCAuc2xvdywgdDIpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5vdEludDoK
KyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25k
IG9wZXJhbmQgY291bGQgYmUgYW55dGhpbmcuCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93
CisgICAgYmliIHQzLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0
MywgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MSwgZnQxCisgICAgam1wIC5vcDFOb3RJbnRS
ZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorLm9wMU5v
dEludFJlYWR5OgorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGZpaTJkIHQwLCB0MiwgZnQwCisg
ICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQxLCA4
XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDJOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlz
IGRlZmluaXRlbHkgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3Qu
CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgYmlhIHQzLCBMb3dlc3RUYWcsIC5zbG93CisgICAg
Y2kyZCB0MCwgZnQwCisgICAgZmlpMmQgdDEsIHQzLCBmdDEKKyAgICBkb3VibGVPcGVyYXRpb24o
ZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MSwgW2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkK
KworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAor
CittYWNybyBiaW5hcnlPcChpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24sIGhlbHBl
cikKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxl
ZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGludGVnZXJPcGVyYXRpb24obGVm
dCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtj
ZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgaW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBoZWxw
ZXIpCitlbmQKKworX2xsaW50X29wX2FkZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmlu
YXJ5T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYmFkZGlvIGxlZnQsIHJp
Z2h0LCBzbG93IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJp
Z2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9hZGQpCisKKworX2xsaW50X29wX211bDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgc2xvdykgYm11bGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0KSBtdWxkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hl
bHBlcl9tdWwpCisKKworX2xsaW50X29wX3N1YjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
YmluYXJ5T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1YmlvIGxlZnQs
IHJpZ2h0LCBzbG93IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxlZnQs
IHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9zdWIpCisKKworX2xsaW50X29wX2Rp
djoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAg
ICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAg
ICBjaTJkIGxlZnQsIGZ0MAorICAgICAgICAgICAgY2kyZCByaWdodCwgZnQxCisgICAgICAgICAg
ICBkaXZkIGZ0MCwgZnQxCisgICAgICAgICAgICBiY2QyaSBmdDEsIHJpZ2h0LCAubm90SW50Cisg
ICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAg
ICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAg
ICAgICAgICBqbXAgLmRvbmUKKyAgICAgICAgLm5vdEludDoKKyAgICAgICAgICAgIHN0b3JlZCBm
dDEsIFtjZnIsIGluZGV4LCA4XQorICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kLAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQpIGRpdmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX2RpdikKKworCitfbGxpbnRfb3BfbW9kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbW9kKQorICAgIGRpc3BhdGNoKDQpCisKKwor
bWFjcm8gYml0T3Aob3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAg
IGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkK
KyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5l
cSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAg
IGxvYWRpIDRbUENdLCB0MgorICAgIG9wZXJhdGlvbih0MSwgdDAsIC5zbG93KQorICAgIHN0b3Jl
aSB0MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlciho
ZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRfb3BfbHNoaWZ0OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBz
bG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9sc2hp
ZnQpCisKKworX2xsaW50X29wX3JzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0
T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgcnNoaWZ0aSBsZWZ0LCByaWdo
dCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfcnNoaWZ0KQorCisKK19sbGludF9vcF91cnNo
aWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKKyAgICAg
ICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgZW5kLAorICAgICAgICBfbGxpbnRf
aGVscGVyX3Vyc2hpZnQpCisKKworX2xsaW50X29wX2JpdGFuZDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5kaSBs
ZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0YW5kKQorCisKK19sbGlu
dF9vcF9iaXR4b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2JpdHhvcikKKworCitfbGxpbnRfb3BfYml0b3I6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIG9y
aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0b3IpCisKKworX2xs
aW50X29wX2JpdG5vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQx
CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDEpCisgICAgbG9h
ZGkgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0sIHQzCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3BCaXRub3RTbG93CisgICAg
bm90aSB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVp
IHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wQml0
bm90U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfYml0bm90KQorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisg
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDaGVja0hhc0luc3Rh
bmNlU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNIYXNJbnN0YW5jZSwgLm9w
Q2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDaGVja0hhc0luc3Rh
bmNlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNl
KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luc3RhbmNlb2Y6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1
bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVw
cmVjYXRlZC4KKyAgICBsb2FkaSAxMltQQ10sIHQwCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDAp
CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgLm9w
SW5zdGFuY2VvZlNsb3cKKyAgICAKKyAgICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDMK
KyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MSkKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcEluc3RhbmNlb2ZTbG93
CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBDZWxsVGFnLCAub3BJbnN0YW5jZW9m
U2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQxCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdwor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgCisgICAgIyBSZWdp
c3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3ZlIDEsIHQwCisu
b3BJbnN0YW5jZW9mTG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIK
KyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldCwgdDIKKyAg
ICBicGVxIHQyLCB0MSwgLm9wSW5zdGFuY2VvZkRvbmUKKyAgICBidGlueiB0MiwgLm9wSW5zdGFu
Y2VvZkxvb3AKKworICAgIG1vdmUgMCwgdDAKKy5vcEluc3RhbmNlb2ZEb25lOgorICAgIHN0b3Jl
aSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3BJbnN0YW5jZW9mU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW5zdGFuY2VvZikKKyAgICBkaXNwYXRj
aCg1KQorCisKK19sbGludF9vcF90eXBlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl90eXBlb2YpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfaXNfdW5kZWZpbmVkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfaXNfdW5kZWZpbmVkKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX2lzX2Jvb2xlYW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9pc19ib29sZWFuKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lz
X251bWJlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2lzX251bWJlcikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19zdHJpbmc6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19z
dHJpbmcpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfb2JqZWN0OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfb2JqZWN0KQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX2Z1bmN0aW9uOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfZnVuY3Rpb24pCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9yZXNvbHZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcmVzb2x2ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZl
X3NraXA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9yZXNvbHZlX3NraXApCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyByZXNvbHZlR2xvYmFs
KHNsb3cpCisgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVz
dGluYXRpb24gZm9yIHRoZSBsb2FkLgorICAgICMgOFtQQ10gICBQcm9wZXJ0eSBpZGVudGlmaWVy
IGluZGV4IGluIHRoZSBjb2RlIGJsb2NrLgorICAgICMgMTJbUENdICBTdHJ1Y3R1cmUgcG9pbnRl
ciwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgIyAxNltQQ10g
IE9mZnNldCBpbiBnbG9iYWwgb2JqZWN0LCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdl
bmVyYXRvci4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDAKKyAgICBicG5lcSB0MCwgMTJbUENdLCBzbG93CisgICAgbG9hZGkgMTZbUENdLCB0
MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCisgICAgbG9h
ZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwg
dDEsIDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCitl
bmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICByZXNvbHZlR2xvYmFsKC5vcFJlc29sdmVHbG9iYWxTbG93KQorICAgIGRpc3BhdGNoKDUpCisK
Ky5vcFJlc29sdmVHbG9iYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNv
bHZlX2dsb2JhbCkKKyAgICBkaXNwYXRjaCg1KQorCisKKyMgR2l2ZXMgeW91IHRoZSBzY29wZSBp
biB0MCwgd2hpbGUgYWxsb3dpbmcgeW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlvbmFs
IGNoZWNrcyBvbiB0aGUKKyMgc2NvcGVzIGFzIHRoZXkgYXJlIHRyYXZlcnNlZC4gc2NvcGVDaGVj
aygpIGlzIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSByZWdpc3RlcgorIyBob2xkaW5n
IHRoZSBzY29wZSwgYW5kIGEgcmVnaXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc2NyYXRjaC4g
Tm90ZSB0aGF0IHRoaXMgZG9lcyBub3QKKyMgdXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQgc3R1ZmYg
aW4gdDMgaWYgbmVlZCBiZS4KK21hY3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwg
c2NvcGVDaGVjaykKKyAgICBsb2FkcCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0
MAorICAgIGxvYWRpIGRlQnVpamluSW5kZXhPcGVyYW5kLCB0MgorICAgIAorICAgIGJ0aXogdDIs
IC5kb25lCisgICAgCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgYmluZXEgQ29k
ZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAubG9vcAorICAgIGJ0YnogQ29k
ZUJsb2NrOjptX25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9vcAorICAgIAorICAgIGxvYWRp
IENvZGVCbG9jazo6bV9hY3RpdmF0aW9uUmVnaXN0ZXJbdDFdLCB0MQorCisgICAgIyBOZWVkIHRv
IGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KKyAgICBiaWVxIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlvbgorICAgIHNjb3BlQ2hlY2so
dDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKy5ub0FjdGl2
YXRpb246CisgICAgc3ViaSAxLCB0MgorICAgIAorICAgIGJ0aXogLmRvbmUKKy5sb29wOgorICAg
IHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwg
dDAKKyAgICBzdWJpIDEsIHQyCisgICAgYnRpbnogdDIsIC5vcEdldFNjb3BlZFZhckxvb3AKKwor
LmRvbmU6CitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0
MworICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0aXZhdGlvblN0cnVjdHVyZVt0M10sIHQzCisg
ICAgZ2V0U2NvcGUoCisgICAgICAgIDIwW1BDXSwKKyAgICAgICAgbWFjcm8gKHNjb3BlLCBzY3Jh
dGNoKQorICAgICAgICAgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFtzY29wZV0sIHNj
cmF0Y2gKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0sIHQz
LCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdworICAgICAgICBlbmQpCisgICAgcmVz
b2x2ZUdsb2JhbCgub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3cpCisgICAgZGlzcGF0Y2goNikK
KworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbER5
bmFtaWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkK
KyAgICBkaXNwYXRjaCg2KQorCisKK19sbGludF9vcF9nZXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENd
ICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgorICAgICMgOFtQQ10gICBJbmRleCBvZiByZWdp
c3RlciBpbiB0aGUgc2NvcGUuCisgICAgIyAxMltQQ10gIERlIEJydWlqaW4gaW5kZXguCisgICAg
Z2V0U2NvcGUoMTJbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSA0
W1BDXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6
b2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0
MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIHQzCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFt0MCwgdDIsIDhdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGdldFNjb3BlKDhbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAg
ICBsb2FkaSAxMltPQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MSwgdDMsIHQyKQorICAgIHdyaXRlQmFycmllcih0MywgdDIpCisgICAgbG9h
ZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9i
amVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W3QwLCB0
MiwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3Qw
XSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAg
IGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
dDAsIHQxLCA4XSwgdDEKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAg
IHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAg
ICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRh
Z09mZnNldFtjZnIsIHQzLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMs
IDhdLCB0MworICAgIHdyaXRlQmFycmllcih0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZz
ZXRbdDAsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9iYXNlOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9iYXNlKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHM6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9lbnN1cmVfcHJv
cGVydHlfZXhpc3RzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0
aF9iYXNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcmVzb2x2ZV93aXRoX2Jhc2UpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVz
b2x2ZV93aXRoX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9nZXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgV2Ugb25seSBkbyBt
b25vbW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlm
eSB0aGUKKyAgICAjIG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUg
dG8gY2hhbmdlIGFueXRpbWUgaWYgZmFpbHMsIHNpbmNlCisgICAgIyBwaW5nLXBvbmdpbmcgaXMg
ZnJlZS4gQXQgYmVzdCB3ZSBnZXQgbHVja3kgYW5kIHRoZSBnZXRfYnlfaWQgd2lsbCBjb250aW51
ZQorICAgICMgdG8gdGFrZSBmYXN0IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qgd2Ug
dGFrZSBzbG93IHBhdGgsIHdoaWNoIGlzIHdoYXQKKyAgICAjIHdlIHdvdWxkIGhhdmUgYmVlbiBk
b2luZyBhbnl3YXkuCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0
QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRwIEpTT2JqZWN0OjptX3By
b3BlcnR5U3RvcmFnZVt0M10sIHQwCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10s
IHQxLCAub3BHZXRCeUlkU2xvdworICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIFRhZ09m
ZnNldFt0MCwgdDJdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyXSwgdDIKKyAg
ICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDgpCisKKy5vcEdldEJ5SWRTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOCkK
KworCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBs
b2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGJwbmVxIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBsb2FkaSAyMFtQQ10s
IHQxCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAgd3JpdGVCYXJyaWVyKHQwLCB0MikKKyAgICBz
dG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDFdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0
W3QzLCB0MV0KKyAgICBkaXNwYXRjaCg4KQorCisKK21hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFk
ZGl0aW9uYWxDaGVja3MpCisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0
MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MywgQ2VsbFRhZywgdDAsIC5zbG93KQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQwCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MSwgLnNsb3cKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLnNsb3cp
CisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3Rv
cmFnZVt0MF0sIHQzCisgICAgYWRkcCB0MSwgdDMKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0
MiwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICB3
cml0ZUJhcnJpZXIodDEsIHQyKQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQorICAgIGxv
YWRpIDI0W1BDXSwgdDEKKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3Rv
cmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAgIGRpc3BhdGNoKDgpCisKKy5zbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaWQpCisgICAgZGlzcGF0Y2go
OCkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIHB1
dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkK
KworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgIHB1dEJ5SWRU
cmFuc2l0aW9uKAorICAgICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQor
ICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRo
ZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bworICAgICAgICAKKyAgICAgICAg
ICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAorICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hh
aW46Om1fdmVjdG9yICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3NjcmF0Y2hdLCBzY3JhdGNoCisgICAg
ICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0
dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAgICAgICAgLmxvb3A6CisgICAgICAgICAgICBsb2FkaSBT
dHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90
b0NlbGwKKyAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwg
b2xkU3RydWN0dXJlCisgICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwg
c2xvdworICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCisgICAgICAgICAgICBiaW5lcSBTdHJ1
Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5s
b29wCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQpCisKKworX2xsaW50X29wX2RlbF9ieV9p
ZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Rl
bF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfdmFsOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2Fk
aSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2dsb2JhbERhdGFbdDFdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQy
LCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6
anNBcnJheVZQdHJbdDFdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQz
LCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBicG5lcSBbdDBdLCB0MiwgLm9w
R2V0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QwXSwgdDMKKyAgICBi
aWFlcSB0MSwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDBdLCAub3BHZXRCeVZhbFNsb3cKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFn
T2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciAr
IFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKyAgICBiaWVxIHQyLCBFbXB0eVZhbHVlVGFn
LCAub3BHZXRCeVZhbFNsb3cKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQor
ICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDQp
CisKKy5vcEdldEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5
X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFs
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAx
MltQQ10sIHQxCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcs
IC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQodDEsIEludDMyVGFnLCB0MiwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cpCisgICAgYWRkaSAx
LCB0MgorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisg
ICAgYmlhZXEgdDIsIHQxLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIG5lZ2kgdDIKKyAg
ICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEKKyAgICBzdG9yZWkgdDAsIFRh
Z09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQz
LCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEFyZ3VtZW50QnlWYWxTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX2dldF9ieV9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQw
LCBDZWxsVGFnLCB0MSwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMTZbUENdLCB0MAor
ICAgIGJwbmVxIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAub3BHZXRCeVBuYW1lU2xv
dworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQwLCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0
MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2Fk
aSAyNFtQQ10sIHQwCisgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAorICAgIHN1YmkgMSwgdDAK
KyAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFibGVTbG90
c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlT
dG9yYWdlW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQwLCA4XSwgdDEKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg3KQorCisub3BHZXRCeVBuYW1lU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3BuYW1lKQorICAgIGRpc3Bh
dGNoKDcpCisKKworX2xsaW50X29wX3B1dF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQw
LCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBJbnQzMlRhZywgdDIsIC5vcFB1dEJ5
VmFsU2xvdykKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fZ2xvYmFsRGF0YVt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5
VlB0clt0MF0sIHQwCisgICAgYnBuZXEgW3QxXSwgdDAsIC5vcFB1dEJ5VmFsU2xvdworICAgIGJp
YWVxIHQyLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MV0sIC5vcFB1dEJ5VmFsU2xvdworICAg
IGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQwCisgICAgYmllcSBBcnJheVN0b3JhZ2U6
Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFB1dEJ5
VmFsRW1wdHkKKy5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQ6CisgICAgbG9hZGkgMTJbUENdLCB0Mwor
ICAgIGFzc2VydE5vdENvbnN0YW50KHQzKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQzLCA4
XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MworICAgIHdyaXRl
QmFycmllcih0MSwgdDMpCisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsg
VGFnT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBzdG9yZWkgdDMsIEFycmF5U3RvcmFnZTo6bV92ZWN0
b3IgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BQdXRC
eVZhbEVtcHR5OgorICAgIGFkZGkgMSwgQXJyYXlTdG9yYWdlOjptX251bVZhbHVlc0luVmVjdG9y
W3QwXQorICAgIGJpYiB0MiwgQXJyYXlTdG9yYWdlOjptX2xlbmd0aFt0MF0sIC5vcFB1dEJ5VmFs
U3RvcmVSZXN1bHQKKyAgICBhZGRpIDEsIHQyLCB0MQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9y
YWdlOjptX2xlbmd0aFt0MF0KKyAgICBqbXAgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorCisub3BQ
dXRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV92YWwpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZGVsX2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV92YWwpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2luZGV4OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X2luZGV4KQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX3B1dF9nZXR0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfZ2V0dGVyKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX3B1dF9zZXR0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfc2V0dGVyKQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX2xvb3A6CisgICAgbm9wCitfbGxpbnRfb3Bfam1wOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBkaXNwYXRjaEJyYW5jaCg0W1BDXSkKKworCittYWNybyBqdW1wVHJ1ZU9yRmFs
c2UoY29uZGl0aW9uT3AsIHNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmliIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgQm9vbGVhblRhZywgLnNsb3cKKyAgICBjb25kaXRpb25PcChQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJn
ZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5zbG93OgorICAgIHN1YmkgMyAqIDQs
IFBDCisgICAgY2FsbEhlbHBlcihzbG93KQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50
X29wX2xvb3BfaWZfdHJ1ZToKKyAgICBub3AKK19sbGludF9vcF9qdHJ1ZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAganVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRh
cmdldCkgYnRpbnogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfanRy
dWUpCisKKworX2xsaW50X29wX2xvb3BfaWZfZmFsc2U6CisgICAgbm9wCitfbGxpbnRfb3BfamZh
bHNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAg
IG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGl6IHZhbHVlLCBzbG93IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9qZmFsc2UpCisKKworbWFjcm8gZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1l
ZGlhdGVIYW5kbGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAor
ICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAuaW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQyCisgICAgY2VsbEhhbmRsZXIoU3RydWN0dXJlOjptX3R5cGVJbmZvICsg
VHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJn
ZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5pbW1lZGlhdGU6CisgICAgb3JpIDEs
IHQxCisgICAgaW1tZWRpYXRlSGFuZGxlcih0MSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQor
ZW5kCisKK19sbGludF9vcF9qZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1
YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRibnogdmFsdWUsIE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFy
Z2V0KSBiaWVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorICAgIAorCitfbGxpbnRfb3Bf
am5lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAg
IG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJ6IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmluZXEgdmFsdWUs
IE51bGxUYWcsIHRhcmdldCBlbmQpCisKKworX2xsaW50X29wX2puZXFfcHRyOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcEpuZXFQdHJCcmFuY2gK
KyAgICBicGVxIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxLCAub3BKbmVxUHRyRmFsbFRo
cm91Z2gKKy5vcEpuZXFQdHJCcmFuY2g6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorLm9w
Sm5lcVB0ckZhbGxUaHJvZ3VoOgorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8gY29tcGFyZShp
bnRlZ2VyQ29tcGFyZSwgZG91YmxlQ29tcGFyZSwgaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0
MgorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQw
LCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MywgdDIsIHQzKQorICAgIGJp
bmVxIHQwLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9w
Mk5vdEludAorICAgIGludGVnZXJDb21wYXJlKHQxLCB0MywgLmp1bXBUYXJnZXQpCisgICAgZGlz
cGF0Y2goNCkKKworLm9wMU5vdEludDoKKyAgICBiaWEgdDAsIExvd2VzdFRhZywgLnNsb3cKKyAg
ICBiaWIgdDIsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQyLCBJ
bnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQzLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5
Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQzLCB0MiwgZnQxCisub3AxTm90SW50
UmVhZHk6CisgICAgZmlpMmQgdDEsIHQwLCBmdDAKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQx
LCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisub3AyTm90SW50OgorICAgIGNpMmQg
dDEsIGZ0MAorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGZpaTJkIHQzLCB0Miwg
ZnQxCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0
Y2goNCkKKworLmp1bXBUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorCisuc2xv
dzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGlu
dF9vcF9sb29wX2lmX2xlc3M6CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3M6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFy
Z2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmRsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9qbGVzcykKKworCitfbGxpbnRfb3Bfam5sZXNzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkg
YmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmRndGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9s
bGludF9oZWxwZXJfam5sZXNzKQorCisKK19sbGludF9vcF9sb29wX2lmX2dyZWF0ZXI6CisgICAg
bm9wCitfbGxpbnRfb3BfamdyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBh
cmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndCBs
ZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcikK
KworCitfbGxpbnRfb3Bfam5ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21w
YXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQsIHJp
Z2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRs
dGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5n
cmVhdGVyKQorCisKK19sbGludF9vcF9sb29wX2lmX2xlc3NlcToKKyAgICBub3AKK19sbGludF9v
cF9qbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5k
LAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxIGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2psZXNzZXEpCisKKworX2xsaW50
X29wX2pubGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVu
ZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3R1biBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmxlc3NlcSkKKworCitfbGxp
bnRfb3BfbG9vcF9pZl9ncmVhdGVyZXE6CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXJlcToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVu
ZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcmVxKQorCisKK19sbGludF9vcF9qbmdy
ZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0dW4gbGVmdCwgcmlnaHQsIHRh
cmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5ncmVhdGVyZXEpCisKKworX2xsaW50
X29wX2xvb3BfaGludDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJ
VEZvckxvb3AoKQorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N3aXRjaF9pbW06Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEK
KyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJs
ZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDIsIHQzLCA0XSwgdDIKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wU3dpdGNo
SW1tTm90SW50CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlh
ZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRb
dDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJhbmNoKFNpbXBsZUp1
bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MiwgdDAsIDRdKQor
Cisub3BTd2l0Y2hJbW1Ob3RJbnQ6CisgICAgYmliIHQxLCBMb3dlc3RUYWcsIC5vcFN3aXRjaElt
bVNsb3cgICMgR28gdG8gc2xvdyBwYXRoIGlmIGl0J3MgYSBkb3VibGUuCisub3BTd2l0Y2hJbW1G
YWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLm9wU3dpdGNoSW1tU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX2ltbSkKKyAgICBkaXNwYXRj
aCgwKQorCisKK19sbGludF9vcF9zd2l0Y2hfY2hhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxv
YWRpIDRbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6
UmFyZURhdGE6Om1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNl
dFt0MiwgdDMsIDRdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
CisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90
eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFy
RmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MF0sIHQwCisgICAgYmlu
ZXEgU3RyaW5nSW1wbDo6bV9sZW5ndGhbdDBdLCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gK
KyAgICBsb2FkcCBTdHJpbmdJbXBsOjptX2RhdGE4W3QwXSwgdDEKKyAgICBidGlueiBTdHJpbmdJ
bXBsOjptX2hhc2hBbmRGbGFnc1t0MF0sIEhhc2hGbGFnczhCaXRCdWZmZXIsIC5vcFN3aXRjaENo
YXI4Qml0CisgICAgbG9hZGggW3QxXSwgdDAKKyAgICBqbXAgLm9wU3dpdGNoQ2hhclJlYWR5Cisu
b3BTd2l0Y2hDaGFyOEJpdDoKKyAgICBsb2FkYiBbdDFdLCB0MAorLm9wU3dpdGNoQ2hhclJlYWR5
OgorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBT
aW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9w
U3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2goU2ltcGxlSnVtcFRhYmxl
OjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyLCB0MCwgNF0pCisKKy5vcFN3
aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxp
bnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3N3aXRjaF9zdHJpbmcpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxp
bnRfb3BfbmV3X2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwg
dDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIC5vcE5ld0Z1bmNEb25lCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19mdW5jKQorLm9wTmV3RnVuY0RvbmU6CisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmNfZXhwKQorICAgIGRp
c3BhdGNoKDMpCisKKworbWFjcm8gZG9DYWxsKGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYmlu
ZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDYWxsU2xvdworICAgIGJpbmVx
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxLCAub3BDYWxsU2xvdworICAgIGxvYWRpIDhb
UENdLCB0MgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBhZGRwIDI0LCBQQworICAgIGxzaGlm
dGkgMywgdDMKKyAgICBhZGRwIGNmciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBv
ZiBjZnIKKyAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQor
ICAgIGxvYWRwIDIwIC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCAr
IFRhZ09mZnNldFtjZnJdCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QxXSwg
dDAKKyAgICBzdG9yZXAgY2ZyLCBDYWxsZXJGcmFtZVt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywg
Q2FsbGVlICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSB0MSwgQ2FsbGVlICsgUGF5bG9hZE9m
ZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10K
KyAgICBzdG9yZWkgdDAsIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGNhbGwg
dDIKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKy5vcENhbGxTbG93OgorICAgIHNsb3dQYXRo
Rm9yQ2FsbCg2LCBoZWxwZXIpCitlbmQKKworX2xsaW50X29wX2NhbGw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRfaGVscGVyX2NhbGwpCisKKworX2xsaW50X29wX2Nv
bnN0cnVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJf
Y29uc3RydWN0KQorCisKK19sbGludF9vcF9jYWxsX3ZhcmFyZ3M6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBfbGxpbnRfaGVscGVyX2NhbGxfdmFyYXJncykK
KworCitfbGxpbnRfb3BfY2FsbF9ldmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAKKyAg
ICAjIEV2YWwgaXMgZXhlY3V0ZWQgaW4gb25lIG9mIHR3byBtb2RlczoKKyAgICAjCisgICAgIyAx
KSBXZSBmaW5kIHRoYXQgd2UncmUgcmVhbGx5IGludm9raW5nIGV2YWwoKSBpbiB3aGljaCBjYXNl
IHRoZQorICAgICMgICAgZXhlY3V0aW9uIGlzIHBlcmZvbWVkIGVudGlyZWx5IGluc2lkZSB0aGUg
aGVscGVyLCBhbmQgaXQKKyAgICAjICAgIHJldHVybnMgdGhlIFBDIG9mIGEgZnVuY3Rpb24gdGhh
dCBqdXN0IHJldHVybnMgdGhlIHJldHVybiB2YWx1ZQorICAgICMgICAgdGhhdCB0aGUgZXZhbCBy
ZXR1cm5lZC4KKyAgICAjCisgICAgIyAyKSBXZSBmaW5kIHRoYXQgd2UncmUgaW52b2tpbmcgc29t
ZXRoaW5nIGNhbGxlZCBldmFsKCkgdGhhdCBpcyBub3QKKyAgICAjICAgIHRoZSByZWFsIGV2YWwu
IFRoZW4gdGhlIGhlbHBlciByZXR1cm5zIHRoZSBQQyBvZiB0aGUgdGhpbmcgdG8KKyAgICAjICAg
IGNhbGwsIGFuZCB3ZSBjYWxsIGl0LgorICAgICMKKyAgICAjIFRoaXMgYWxsb3dzIHVzIHRvIGhh
bmRsZSB0d28gY2FzZXMsIHdoaWNoIHdvdWxkIHJlcXVpcmUgYSB0b3RhbCBvZgorICAgICMgdXAg
dG8gZm91ciBwaWVjZXMgb2Ygc3RhdGUgdGhhdCBjYW5ub3QgYmUgZWFzaWx5IHBhY2tlZCBpbnRv
IHR3bworICAgICMgcmVnaXN0ZXJzIChDIGZ1bmN0aW9ucyBjYW4gcmV0dXJuIHVwIHRvIHR3byBy
ZWdpc3RlcnMsIGVhc2lseSk6CisgICAgIworICAgICMgLSBUaGUgY2FsbCBmcmFtZSByZWdpc3Rl
ci4gVGhpcyBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4gbW9kaWZpZWQKKyAgICAjICAgYnkgdGhl
IGhlbHBlciwgYnV0IHRoZSBjb252ZW50aW9uIGlzIHRoYXQgaXQgcmV0dXJucyBpdC4gSXQncyBu
b3QKKyAgICAjICAgdG90YWxseSBjbGVhciBpZiB0aGF0J3MgbmVjZXNzYXJ5LCBzaW5jZSB0aGUg
Y2ZyIGlzIGNhbGxlZSBzYXZlLgorICAgICMgICBCdXQgdGhhdCdzIG91ciBzdHlsZSBpbiB0aGlz
IGhlcmUgaW50ZXJwcmV0ZXIgc28gd2Ugc3RpY2sgd2l0aCBpdC4KKyAgICAjCisgICAgIyAtIEEg
Yml0IHRvIHNheSBpZiB0aGUgaGVscGVyIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCB0aGUgZXZhbCBh
bmQgaGFzCisgICAgIyAgIHRoZSByZXR1cm4gdmFsdWUsIG9yIGRpZCBub3QgZXhlY3V0ZSB0aGUg
ZXZhbCBidXQgaGFzIGEgUEMgZm9yIHVzCisgICAgIyAgIHRvIGNhbGwuCisgICAgIworICAgICMg
LSBFaXRoZXI6CisgICAgIyAgIC0gVGhlIEpTIHJldHVybiB2YWx1ZSAodHdvIHJlZ2lzdGVycyks
IG9yCisgICAgIworICAgICMgICAtIFRoZSBQQyB0byBjYWxsLgorICAgICMKKyAgICAjIEl0IHR1
cm5zIG91dCB0byBiZSBlYXNpZXIgdG8ganVzdCBhbHdheXMgaGF2ZSB0aGlzIHJldHVybiB0aGUg
Y2ZyCisgICAgIyBhbmQgYSBQQyB0byBjYWxsLCBhbmQgdGhhdCBQQyBtYXkgYmUgYSBkdW1teSB0
aHVuayB0aGF0IGp1c3QKKyAgICAjIHJldHVybnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwg
cmV0dXJuZWQuCisgICAgCisgICAgc2xvd1BhdGhGb3JDYWxsKDQsIF9sbGludF9oZWxwZXJfY2Fs
bF9ldmFsKQorCisKK19sbGludF9nZW5lcmljX3JldHVybl9wb2ludDoKKyAgICBkaXNwYXRjaEFm
dGVyQ2FsbCgpCisKKworX2xsaW50X29wX3RlYXJfb2ZmX2FjdGl2YXRpb246CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAg
IGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFj
dGl2YXRpb25DcmVhdGVkCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFs
dWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZAorLm9wVGVhck9mZkFjdGl2YXRp
b25DcmVhdGVkOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hY3RpdmF0
aW9uKQorLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX3RlYXJfb2ZmX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3ViaSAxLCB0MCAgICMgR2V0IHRoZSB1bm1vZGlmaWVk
QXJndW1lbnRzUmVnaXN0ZXIKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgLm9wVGVh
ck9mZkFyZ3VtZW50c05vdENyZWF0ZWQKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGVh
cl9vZmZfYXJndW1lbnRzKQorLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAgZGlz
cGF0Y2goMikKKworCittYWNybyBkb1JldHVybigpCisgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwg
dDIKKyAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKKyAgICByZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybih0MikKKyAgICByZXQKK2VuZAorCitfbGxpbnRfb3BfcmV0OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAg
IGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKwor
CitfbGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDIpCisK
KworX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wUmV0T2JqZWN0T3JU
aGlzTm90T2JqZWN0CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAg
YmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RU
eXBlLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBkb1JldHVybigpCisKKy5vcFJl
dE9iamVjdE9yVGhpc05vdE9iamVjdDoKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bGFvZE9mZnNldFtjZnIsIHQw
LCA4XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX21ldGhvZF9jaGVjazoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNoZWNrcyBhbmQgdXNl
IG5vcm1hbCBnZXRfYnlfaWQgb3B0aW1pemF0aW9ucy4KKyAgICBkaXNwYXRjaCgxKQorCisKK19s
bGludF9vcF9zdHJjYXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9zdHJjYXQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfdG9fcHJp
bWl0aXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRh
ZywgLm9wVG9QcmltaXRpdmVJc0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MgorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDJdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisgICAgc3RvcmVpIHQxLCBU
YWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb1ByaW1pdGl2ZVNsb3dDYXNlOgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19wcmltaXRpdmUpCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfZ2V0X3BuYW1lczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2dldF9wbmFtZXMpCisgICAgZGlzcGF0Y2goMCkgIyBUaGUgaGVs
cGVyIGVpdGhlciBhZHZhbmNlcyB0aGUgUEMgb3IganVtcHMgdXMgdG8gc29tZXdoZXJlIGVsc2Uu
CisKKworX2xsaW50X29wX25leHRfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkaSAxNltQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XSwgdDAKKyAgICBiaWVxIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIs
IDhdLCAub3BOZXh0UG5hbWVFbmQKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjptX2pzU3RyaW5nc1t0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgOF0sIHQzCisgICAg
YWRkaSAxLCB0MAorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAg
IGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA4
W1BDXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MworICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGJwbmVxIHQxLCBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIC5vcE5leHRQbmFtZVNsb3cKKyAg
ICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFByb3RvdHlwZUNoYWluW3Qy
XSwgdDAKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDBdLCB0MAorICAgIGJ0
cHogW3QwXSwgLm9wTmV4dFBuYW1lVGFyZ2V0Cisub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxv
b3A6CisgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W3QxXSwgTnVs
bFRhZywgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUg
KyBQYXlsb2FkT2Zmc2V0W3QxXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qy
XSwgdDEKKyAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGFkZHAgNCwg
dDAKKyAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKKy5vcE5l
eHRQbmFtZVRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgyNFtQQ10pCisKKy5vcE5leHRQbmFt
ZUVuZDoKKyAgICBkaXNwYXRjaCg3KQorCisub3BOZXh0UG5hbWVTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9uZXh0X3BuYW1lKSAjIFRoaXMgZWl0aGVyIGtlZXBzIHRoZSBQQyB3
aGVyZSBpdCB3YXMgKGNhdXNpbmcgdXMgdG8gbG9vcCkgb3Igc2V0cyBpdCB0byB0YXJnZXQuCisg
ICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfcHVzaF9zY29wZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfc2NvcGUpCisgICAgZGlz
cGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9wX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9wX3Njb3BlKQorICAgIGRpc3BhdGNoKDEp
CisKKworX2xsaW50X29wX3B1c2hfbmV3X3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9uZXdfc2NvcGUpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfY2F0Y2g6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgVGhp
cyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVj
YXVzZSB0aGUKKyAgICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0
byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhy
b3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRoZSBK
SVQgdGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0
aHJvd2luZworICAgICMgY29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93aW5n
IHRvIHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6OnRh
cmdldEludGVycHJldGVyUENGb3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBK
SVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6
OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9iYWxE
YXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0dsb2Jh
bERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpTR2xv
YmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1wdHlW
YWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdCisgICAgbG9h
ZGkgNFtQQ10sIHQyCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisK
K19sbGludF9vcF90aHJvdzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Rocm93KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93
X3JlZmVyZW5jZV9lcnJvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKKyAgICBkaXNwYXRjaCgyKQorCisK
K19sbGludF9vcF9qc3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGFkZGkgMyAqIDQsIFBDLCB0MQorICAgIHN0b3JlaSB0MSwgW3QwXQorICAgIGRpc3Bh
dGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA0W1BDXSwgUEMKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9k
ZWJ1ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2RlYnVnKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Byb2ZpbGVfd2lsbF9jYWxs
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidHB6IEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQ
cm9maWxlclJlZmVyZW5jZVtzcF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENhbGxE
b25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0cHogSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2Zp
bGVyUmVmZXJlbmNlW3NwXSwgLm9wUHJvZmlsZURpZENhbGxEb25lCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERvbmU6Cisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhyb3dfZnJv
bV9oZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJw
cmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMpLCBzbworICAgICMgdGhlIHRo
cm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0
byBoZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dp
bmcgcHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQx
CisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAg
am1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworX2xsaW50
X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNz
QWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0
MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAg
IGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTkzIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CitjbGFzcyBTcGVjaWFsUmVnaXN0ZXIKKyAgZGVmIGluaXRpYWxpemUobmFtZSkKKyAgICBAbmFt
ZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgQG5hbWUKKyAgZW5k
CitlbmQKKworQVJNdjdfREFUQV9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJpcCIpCitBUk12
N19BRERSX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoInIzIikKKworZGVmIG1vdmVJbW1lZGlh
dGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJlbnRseSB3ZSBvbmx5IGhhbmRsZSB0aGUgc2lt
cGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1vdi9tb3Z0IGZvciB0aGUgY29tcGxleCBvbmVz
LgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2CisgICAgJGFzbS5wdXRzICJtb3Z3IFwj
I3t2YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzaWYgKH52YWx1ZSkgPj0g
MCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20ucHV0cyAibXZudyBcIyN7fnZhbHVlfSwgI3ty
ZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNlCisgICAgJGFzbS5wdXRzICJtb3Z3IFwjI3t2
YWx1ZSAmIDB4ZmZmZn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBpZiAodmFsdWUg
JiAweGZmZmYwMDAwKSAhPSAwCisgICAgICAkYXNtLnB1dHMgIm1vdnQgXCMje3ZhbHVlID4+IDE2
fSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFz
cyBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVu
ICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICJyMCIKKyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIK
KyAgICAgICJyMSIKKyAgICB3aGVuICJ0MiIsICJhMiIKKyAgICAgICJyMiIKKyAgICB3aGVuICJh
MyIKKyAgICAgICJyMyIKKyAgICB3aGVuICJ0MyIKKyAgICAgICJyNCIKKyAgICB3aGVuICJ0NCIK
KyAgICAgICJyNyIKKyAgICB3aGVuICJjZnIiCisgICAgICAicjUiCisgICAgZWxzZQorICAgICAg
cmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1v
cnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisg
ICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAg
IHlpZWxkCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVy
YW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZyIgorICAgICAgImQwIgorICAg
IHdoZW4gImZyMSIsCisgICAgICAiZDEiCisgICAgd2hlbiAiZnIyIgorICAgICAgImQyIgorICAg
IHdoZW4gImZyMyIKKyAgICAgICJkMyIKKyAgICB3aGVuICJmcjQiCisgICAgICAiZDQiCisgICAg
d2hlbiAiZnI1IgorICAgICAgImQ1IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQK
KyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAor
ICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZCBzZWxmCisgIGVu
ZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2Ug
IkludmFsaWQgaW1tZWRpYXRlICN7dmFsdWV9IiBpZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUK
KyAgICAiIyR7dmFsdWV9IgorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1l
bW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQK
KyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisg
ICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCittb2R1bGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVz
CisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICBzZWxmLmFybVY3UHJlcGFyZVBvc3NpYmxl
TWVtb3J5T3BlcmFuZAorICAgICRhc20ucHV0cyAiXHRsZHIgI3tzZWxmLmFybVY3UG9zc2libHlN
ZW1vcnlPcGVyYW5kfSwgI3tBUk12N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9IgorICAgIHlpZWxk
IEFSTXY3X0RBVEFfUkVHCisgICAgJGFzbS5wdXRzICJcdHN0ciAje0FSTXY3X0RBVEFfUkVHLmFy
bVY3T3BlcmFuZH0sICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFuZH0iCisgIGVuZAor
ZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKwor
ICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZh
bHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAgIG1vdmVJbW1lZGlhdGUo
b2Zmc2V0LnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYg
YXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiB8
fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tB
Uk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgICBlbHNlCisgICAgICAiWyN7YmFzZS5h
cm1WN09wZXJhbmR9LCAje29mZnNldC5hcm1WN09wZXJhbmR9XSIKKyAgICBlbmQKKyAgZW5kCitl
bmQKKworY2xhc3MgQmFzZUluZGV4CisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisK
KyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52
YWx1ZSAhPSAwCisgICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1ZSwgQVJNdjdfQUREUl9S
RUcpCisgICAgICAkYXNtLnB1dHMgImFkZHcgI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9
LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQ
b3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAgICAgIlsj
e0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNs
IFwjI3tzY2FsZX1dIgorICAgIGVsc2UKKyAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7
aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVuZAorICBlbmQKK2Vu
ZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NVdGlsaXRp
ZXMKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBtb3Zl
SW1tZWRpYXRlKGFkZHJlc3MudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICBlbmQKKyAgCisgIGRl
ZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICJbI3tBUk12N19BRERSX1JFRy5hcm1W
N09wZXJhbmR9XSIKKyAgZW5kCitlbmQKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg4IEBACisjIS91c3IvYmlu
L2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8
IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJv
ZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0
cmFuc2Zvcm0iCisKK2NsYXNzIEFzc2VtYmxlcgorICBkZWYgaW5pdGlhbGl6ZShvdXRwKQorICAg
IEBvdXRwID0gb3V0cAorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBkZWYgZW50ZXJB
c20KKyAgICBAb3V0cC5wdXRzICJhc20gKCIKKyAgICBAc3RhdGUgPSA6YXNtCisgIGVuZAorICAK
KyAgZGVmIGxlYXZlQXNtCisgICAgQG91dHAucHV0cyAiKSIKKyAgICBAc3RhdGUgPSA6Y3BwCisg
IGVuZAorICAKKyAgZGVmIGluQXNtCisgICAgZW50ZXJBc20KKyAgICB5aWVsZAorICAgIGxlYXZl
QXNtCisgIGVuZAorICAKKyAgZGVmIHB1dHMobGluZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0YXRl
ID09IDphc20KKyAgICBuZXdMaW5lID0gIiIKKyAgICBsaW5lLmVhY2hfYnl0ZSB7CisgICAgICB8
IGJ5dGUgfAorICAgICAgaWYgYnl0ZSA9PSA/JQorICAgICAgICBuZXdMaW5lICs9ICIlJSIKKyAg
ICAgIGVsc2UKKyAgICAgICAgbmV3TGluZSArPSBieXRlLmNocgorICAgICAgZW5kCisgICAgfQor
ICAgIEBvdXRwLnB1dHMoKG5ld0xpbmUgKyAiXG4iKS5pbnNwZWN0KQorICBlbmQKK2VuZAorCisk
YXNtID0gQXNzZW1ibGVyLm5ldygkc3Rkb3V0KQorCithc21GaWxlID0gQVJHVi5zaGlmdAorb2Zm
c2V0c0ZpbGUgPSBBUkdWLnNoaWZ0CisKK2FzdCA9IHBhcnNlKGxleChJTzo6cmVhZChhc21GaWxl
KSkpCitvZmZzZXRzTGlzdCwgc2l6ZXNMaXN0LCBjb25maWdJbmRleCA9IG9mZnNldHNBbmRDb25m
aWd1cmF0aW9uSW5kZXgoYXN0LCBvZmZzZXRzRmlsZSkKKworZm9yU2V0dGluZ3MoY29tcHV0ZVNl
dHRpbmdzQ29tYmluYXRpb25zKGFzdClbY29uZmlnSW5kZXhdLCBhc3QpIHsKKyAgfCBjb25jcmV0
ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgIGFzc2VydENvbmZpZ3VyYXRpb24o
Y29uY3JldGVTZXR0aW5ncykKKyAgbG93TGV2ZWxBU1QgPSBsb3dMZXZlbEFTVC5yZXNvbHZlKCpi
dWlsZE9mZnNldHNNYXAobG93TGV2ZWxBU1QsIG9mZnNldHNMaXN0LCBzaXplc0xpc3QpKQorICBl
bWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFj
a2VuZCkgeworICAgICRhc20uaW5Bc20geworICAgICAgbG93TGV2ZWxBU1QubG93ZXIoYmFja2Vu
ZCkKKyAgICB9CisgIH0KK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L2FzdC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
c3QucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
c3QucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODA2IEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBC
YXNlIHV0aWxpdHkgdHlwZXMgZm9yIHRoZSBBU1QuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFZhbGlk
IG1ldGhvZHMgZm9yIE5vZGU6CisjCisjIG5vZGUuY2hpbGRyZW4gLT4gUmV0dXJucyBhbiBhcnJh
eSBvZiBpbW1lZGlhdGUgY2hpbGRyZW4uCisjCisjIG5vZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJu
cyBhbiBhcnJheSBvZiBhbGwgc3RyaWN0IGRlc2NlbmRhbnRzIChjaGlsZHJlbgorIyAgICAgYW5k
IGNoaWxkcmVuIG9mIGNoaWxkcmVuLCB0cmFuc2l0aXZlbHkpLgorIworIyBub2RlLmZsYXR0ZW4g
LT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5k
CisjICAgICB0aGUgbm9kZSBpdHNlbGYuCisjCisjIG5vZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVy
bnMgYW4gYXJyYXkgY29udGFpbmluZyB0aG9zZSBlbGVtZW50cyBpbgorIyAgICAgbm9kZS5mbGF0
dGVuIHRoYXQgYXJlIG9mIHRoZSBnaXZlbiB0eXBlIChpc19hPyB0eXBlIHJldHVybnMgdHJ1ZSku
CisjCisjIG5vZGUubWFwQ2hpbGRyZW57fHZ8IC4uLn0gLT4gUmV0dXJucyBhIG5ldyBub2RlIHdp
dGggYWxsIGNoaWxkcmVuCisjICAgICByZXBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJs
b2NrLgorIworIyBFeGFtcGxlczoKKyMKKyMgbm9kZS5maWx0ZXIoU2V0dGluZykudW5pcSAtPiBS
ZXR1cm5zIGFsbCBvZiB0aGUgc2V0dGluZ3MgdGhhdCB0aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVs
c2UgYmxvY2tzIGRlcGVuZCBvbi4KKyMKKyMgbm9kZS5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlx
IC0+IFJldHVybnMgYWxsIG9mIHRoZSBzdHJ1Y3R1cmUgb2Zmc2V0cworIyAgICAgdGhhdCB0aGUg
QVNUIGRlcGVuZHMgb24uCisKK2NsYXNzIE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4K
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgQGNvZGVPcmlnaW4gPSBjb2Rl
T3JpZ2luCisgIGVuZAorICAKKyAgZGVmIGNvZGVPcmlnaW5TdHJpbmcKKyAgICAibGluZSBudW1i
ZXIgI3tAY29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVmIGRlc2NlbmRhbnRzCisgICAgY2hp
bGRyZW4uY29sbGVjdHt8dnwgdi5mbGF0dGVufS5mbGF0dGVuCisgIGVuZAorICAKKyAgZGVmIGZs
YXR0ZW4KKyAgICBbc2VsZl0gKyBkZXNjZW5kYW50cworICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIo
dHlwZSkKKyAgICBmbGF0dGVuLnNlbGVjdHt8dnwgdi5pc19hPyB0eXBlfQorICBlbmQKK2VuZAor
CitjbGFzcyBOb0NoaWxkcmVuIDwgTm9kZQorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW10K
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2Ns
YXNzIFN0cnVjdE9mZnNldEtleQorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisg
IGRlZiBpbml0aWFsaXplKHN0cnVjdCwgZmllbGQpCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAg
IEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAgZGVmIGhhc2gKKyAgICBAc3RydWN0Lmhhc2gg
KyBAZmllbGQuaGFzaCAqIDMKKyAgZW5kCisgIAorICBkZWYgZXFsPyhvdGhlcikKKyAgICBAc3Ry
dWN0ID09IG90aGVyLnN0cnVjdCBhbmQgQGZpZWxkID09IG90aGVyLmZpZWxkCisgIGVuZAorZW5k
CisgICAgCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBBU1Qgbm9kZXMuICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBTdHJ1Y3RPZmZzZXQg
PCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisg
IEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JGaWVsZChjb2RlT3JpZ2luLCBzdHJ1
Y3QsIGZpZWxkKQorICAgIGtleSA9IFN0cnVjdE9mZnNldEtleS5uZXcoc3RydWN0LCBmaWVsZCkK
KyAgICAKKyAgICB1bmxlc3MgQEBtYXBwaW5nW2tleV0KKyAgICAgIEBAbWFwcGluZ1trZXldID0g
U3RydWN0T2Zmc2V0Lm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGVuZAorICAg
IEBAbWFwcGluZ1trZXldCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tzdHJ1Y3R9Ojoj
e2ZpZWxkfSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAgIGlmIEBzdHJ1Y3QgIT0g
b3RoZXIuc3RydWN0CisgICAgICByZXR1cm4gQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgICAg
ZW5kCisgICAgQGZpZWxkIDw9PiBvdGhlci5maWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXpl
b2YgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1
Y3QgPSBzdHJ1Y3QKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYu
Zm9yTmFtZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tzdHJ1Y3Rd
CisgICAgICBAQG1hcHBpbmdbc3RydWN0XSA9IFNpemVvZi5uZXcoY29kZU9yaWdpbiwgc3RydWN0
KQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tzdHJ1Y3RdCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAic2l6ZW9mICN7QHN0cnVjdH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAg
ICBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRl
IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhbHVlID0g
dmFsdWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje3ZhbHVlfSIKKyAgZW5kCisgIAor
ICBkZWYgPT0ob3RoZXIpCisgICAgb3RoZXIuaXNfYT8gSW1tZWRpYXRlIGFuZCBvdGhlci52YWx1
ZSA9PSBAdmFsdWUKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAg
YXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQK
KyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVm
dCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZEltbWVkaWF0
ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxl
ZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSBy
aWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBl
bmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmln
aW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIigje2xlZnQuZHVtcH0gLSAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xh
c3MgTXVsSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAg
CisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbgorICAgIE11bEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVm
dCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQu
ZHVtcH0gKiAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRl
IDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGNoaWxkXQorICBlbmQKKyAgCisgIGRl
ZiBtYXBDaGlsZHJlbgorICAgIE5lZ0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBj
aGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKC0je0BjaGlsZC5kdW1wfSkiCisg
IGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVy
IDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0g
e30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3Mg
QEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBSZWdpc3RlcklELm5ldyhj
b2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQg
PCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1l
CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBp
bmdbbmFtZV0gPSBGUFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisg
ICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVu
ZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFt
ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9Cisg
IAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFw
cGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gVmFyaWFibGUubmV3KGNvZGVPcmln
aW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpiYXNlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBiYXNlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UK
KyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0Bi
YXNlLCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZHJlc3Mu
bmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH1dIgorICBlbmQK
K2VuZAorCitjbGFzcyBCYXNlSW5kZXggPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6aW5k
ZXgsIDpzY2FsZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFz
ZSA9IGJhc2UKKyAgICBAaW5kZXggPSBpbmRleAorICAgIEBzY2FsZSA9IHNjYWxlCisgICAgcmFp
c2UgdW5sZXNzIFsxLCAyLCA0LCA4XS5tZW1iZXI/IEBzY2FsZQorICAgIEBvZmZzZXQgPSBvZmZz
ZXQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBpbmRleCwgQG9mZnNl
dF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBCYXNlSW5kZXgubmV3KGNvZGVP
cmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAaW5kZXgpLCBAc2NhbGUsICh5aWVsZCBAb2Zm
c2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2Uu
ZHVtcH0sICN7aW5kZXguZHVtcH0sICN7c2NhbGV9XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJz
b2x1dGVBZGRyZXNzIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6YWRkcmVzcworICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYWRkcmVzcykKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBhZGRyZXNzID0gYWRkcmVzcworICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7
YWRkcmVzcy5kdW1wfVtdIgorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbiA8IE5vZGUK
KyAgYXR0cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBvcGNvZGUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QG9wY29kZSA9IG9wY29kZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4o
JnByb2MpCisgICAgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5k
cy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0IiArIG9wY29kZS50
b19zICsgIiAiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCisgIGVu
ZAorZW5kCisKK2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiZXJyb3IiCisgIGVuZAorZW5kCisKK2NsYXNzIENvbnN0RGVjbCA8IE5vZGUKKyAgYXR0cl9y
ZWFkZXIgOnZhcmlhYmxlLCA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IHZhcmlhYmxlLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YXJpYWJsZSA9
IHZhcmlhYmxlCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4K
KyAgICBbQHZhcmlhYmxlLCBAdmFsdWVdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisg
ICAgQ29uc3REZWNsLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHZhcmlhYmxlKSwgKHlpZWxkIEB2
YWx1ZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiY29uc3QgI3tAdmFyaWFibGUuZHVt
cH0gPSAje0B2YWx1ZS5kdW1wfSIKKyAgZW5kCitlbmQKKworJGxhYmVsTWFwcGluZyA9IHt9CisK
K2NsYXNzIExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFt
ZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExh
YmVsCisgICAgZWxzZQorICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExhYmVsLm5ldyhjb2Rl
T3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxM
YWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9
IG5hbWUKKyAgZW5kCisKKyAgQEB1bmlxdWVOYW1lQ291bnRlciA9IDAKKyAgCisgIGRlZiBzZWxm
LmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisg
ICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxN
YXBwaW5nW25hbWVdLmlzX2E/IExvY2FsTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBw
aW5nW25hbWVdID0gTG9jYWxMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAg
ICAkbGFiZWxNYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIHNlbGYudW5pcXVlCisgICAg
d2hpbGUgJGxhYmVsTWFwcGluZ1siX0wje0BAdW5pcXVlTmFtZUNvdW50ZXJ9Il0KKyAgICAgIEBA
dW5pcXVlTmFtZUNvdW50ZXIgKz0gMQorICAgIGVuZAorICAgIGZvck5hbWUobmlsLCAiX0wje0BA
dW5pcXVlTmFtZUNvdW50ZXJ9IikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9
OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UgPCBOb2RlCisgIGF0dHJfcmVh
ZGVyIDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAg
TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAg
CisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
bGFiZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlIDwgTm9D
aGlsZHJlbgorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRl
ZiBtYXBDaGlsZHJlbgorICAgIExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5
aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBT
ZXF1ZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIGxpc3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGlzdCA9IGxp
c3QKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBsaXN0CisgIGVuZAorICAKKyAgZGVm
IG1hcENoaWxkcmVuKCZwcm9jKQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBAbGlzdC5t
YXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0e3x2fCB2
LmR1bXB9LmpvaW4oIlxuIikKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hpbGRyZW4K
KyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5j
ZSA9IFRydWUubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAg
ZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAidHJ1ZSIKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UgPCBOb0NoaWxkcmVuCisgIGRlZiBp
bml0aWFsaXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBGYWxz
ZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAg
CisgIGRlZiB2YWx1ZQorICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiZmFs
c2UiCisgIGVuZAorZW5kCisKK2NsYXNzIFRydWVDbGFzcworICBkZWYgYXNOb2RlCisgICAgVHJ1
ZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZUNsYXNzCisgIGRlZiBhc05vZGUK
KyAgICBGYWxzZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nIDwgTm9DaGls
ZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQK
KyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVd
ID0gU2V0dGluZy5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdb
bmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xh
c3MgQW5kIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNo
aWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
CisgICAgQW5kLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3JpZ2h0LmR1
bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgT3IgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0
LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmln
aHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5k
CisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBs
ZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVm
dC5kdW1wfSBvciAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTm90IDwgTm9k
ZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBk
ZWYgbWFwQ2hpbGRyZW4KKyAgICBOb3QubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisgIGVuZAor
ZW5kCisKK2NsYXNzIFNraXAgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJz
a2lwIgorICBlbmQKK2VuZAorCitjbGFzcyBJZlRoZW5FbHNlIDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6cHJlZGljYXRlLCA6dGhlbkNhc2UKKyAgYXR0cl9hY2Nlc3NvciA6ZWxzZUNhc2UKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgdGhlbkNhc2UpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAcHJlZGljYXRlID0gcHJlZGljYXRlCisgICAgQHRoZW5DYXNl
ID0gdGhlbkNhc2UKKyAgICBAZWxzZUNhc2UgPSBTa2lwLm5ldyhjb2RlT3JpZ2luKQorICBlbmQK
KyAgCisgIGRlZiBjaGlsZHJlbgorICAgIGlmIEBlbHNlQ2FzZQorICAgICAgW0BwcmVkaWNhdGUs
IEB0aGVuQ2FzZSwgQGVsc2VDYXNlXQorICAgIGVsc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhl
bkNhc2VdCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgSWZUaGVu
RWxzZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBwcmVkaWNhdGUpLCAoeWllbGQgQHRoZW5DYXNl
KSwgKHlpZWxkIEBlbHNlQ2FzZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiaWYgI3tw
cmVkaWNhdGUuZHVtcH1cbiIgKyB0aGVuQ2FzZS5kdW1wICsgIlxuZWxzZVxuIiArIGVsc2VDYXNl
LmR1bXAgKyAiXG5lbmQiCisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvIDwgTm9kZQorICBhdHRy
X3JlYWRlciA6bmFtZSwgOnZhcmlhYmxlcywgOmJvZHkKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBuYW1lID0gbmFtZQorICAgIEB2YXJpYWJsZXMgPSB2YXJpYWJsZXMKKyAgICBAYm9keSA9
IGJvZHkKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAdmFyaWFibGVzICsgW0Bib2R5
XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE1hY3JvLm5ldyhjb2RlT3JpZ2lu
LCBAbmFtZSwgQHZhcmlhYmxlcy5tYXB7fHZ8IHlpZWxkIHZ9LCAoeWllbGQgQGJvZHkpKQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIm1hY3JvICN7bmFtZX0oIiArIHZhcmlhYmxlcy5jb2xs
ZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKVxuIiArIGJvZHkuZHVtcCArICJcbmVuZCIK
KyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm9DYWxsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFt
ZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCBvcGVy
YW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAgIEBvcGVy
YW5kcyA9IG9wZXJhbmRzCisgICAgcmFpc2UgdW5sZXNzIEBvcGVyYW5kcworICAgIEBvcGVyYW5k
cy5lYWNoe3x2fCByYWlzZSB1bmxlc3Mgdn0KKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAg
ICBAb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgTWFj
cm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHQje25hbWV9KCIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2
fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKSIKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw4MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
cmVxdWlyZSAiYXN0IgorcmVxdWlyZSAieDg2IgorCitCQUNLRU5EUyA9CisgIFsKKyAgICJYODYi
LAorICAgIkFSTXY3IgorICBdCisKK1dPUktJTkdfQkFDS0VORFMgPQorICBbCisgICAiWDg2Igor
ICBdCisKK0JBQ0tFTkRfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgnICsgQkFDS0VORFMuam9p
bignKXwoJykgKyAnKVxcWicpCisKK2NsYXNzIE5vZGUKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAg
c2VuZCgibG93ZXIiICsgbmFtZSkKKyAgZW5kCitlbmQKKworIyBPdmVycmlkZXMgZm9yIGxvd2Vy
KCkgZm9yIHRob3NlIG5vZGVzIHRoYXQgYXJlIGJhY2tlbmQtYWdub3N0aWMKKworZGVmIHNhbml0
aXplTGFiZWxOYW1lKG5hbWUpCisgICMgU29tZSBwbGF0Zm9ybXMgZG9uJ3Qgd2FudCB0aGUgbGVh
ZGluZyAiXyIuIElmIHdlIGV2ZXIgd2FudCB0byBkbyBzb21ldGhpbmcKKyAgIyBhYm91dCB0aGF0
LCBpdCB3b3VsZCBiZSBoZXJlLgorICBuYW1lCitlbmQKKworY2xhc3MgTGFiZWwKKyAgZGVmIGxv
d2VyKG5hbWUpCisgICAgJGFzbS5wdXRzICIuZ2xvYmwgI3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxm
Lm5hbWUpfSIKKyAgICAkYXNtLnB1dHMgIiN7c2FuaXRpemVMYWJlbE5hbWUoc2VsZi5uYW1lKX06
IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAg
ICRhc20ucHV0cyAiX19vYV8je3NlbGYubmFtZVsxLi4tMV19OiIKKyAgZW5kCitlbmQKKworY2xh
c3MgU2tpcAorICBkZWYgbG93ZXIobmFtZSkKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UK
KyAgZGVmIGxvd2VyKG5hbWUpCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IG5vZGUgfAorICAg
ICAgbm9kZS5sb3dlcihuYW1lKQorICAgIH0KKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZz
ZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2NSBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUg
ImJhY2tlbmRzIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUg
InNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitkZWYgZW1pdE1hZ2ljTnVtYmVyCisg
IE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVhY2ggeworICAgIHwgbnVtYmVyIHwKKyAgICBwdXRzICIj
e251bWJlcn0sIgorICB9CitlbmQKKworb3JpZ2luYWxBU1QgPSBwYXJzZShsZXgoJHN0ZGluLnJl
YWQpKQorCitlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMob3JpZ2luYWxBU1QpIHsKKyAgfCBz
ZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8CisgIG9mZnNldHNMaXN0ID0gYXN0LmZpbHRl
cihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorICBzaXplc0xpc3QgPSBhc3QuZmlsdGVyKFNpemVv
ZikudW5pcS5zb3J0CisgIAorICBsZW5ndGggPSAoT0ZGU0VUX01BR0lDX05VTUJFUlMuc2l6ZSAr
IDEpICogKDEgKyBvZmZzZXRzTGlzdC5zaXplICsgc2l6ZXNMaXN0LnNpemUpCisgIAorICBwdXRz
ICJzdGF0aWMgY29uc3QgdW5zaWduZWQgZXh0cmFjdG9yVGFibGVbI3tsZW5ndGh9XSA9IHsiCisg
IGVtaXRNYWdpY051bWJlcgorICBwdXRzICIje2luZGV4fSwiCisgIG9mZnNldHNMaXN0LmVhY2gg
eworICAgIHwgb2Zmc2V0IHwKKyAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICBwdXRzICJPRkZMSU5F
X0FTTV9PRkZTRVRPRigje29mZnNldC5zdHJ1Y3R9LCAje29mZnNldC5maWVsZH0pLCIKKyAgfQor
ICBzaXplc0xpc3QuZWFjaCB7CisgICAgfCBvZmZzZXQgfAorICAgIGVtaXRNYWdpY051bWJlcgor
ICAgIHB1dHMgInNpemVvZigje29mZnNldC5zdHJ1Y3R9KSwiCisgIH0KKyAgcHV0cyAifTsiCit9
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVj
dGlvbnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9pbnN0cnVjdGlvbnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTg4IEBACisjIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitNQUNST19JTlNUUlVDVElPTlMgPQorICBb
CisgICAiYWRkaSIsCisgICAiYW5kaSIsCisgICAibHNoaWZ0aSIsCisgICAibXVsaSIsCisgICAi
bmVnaSIsCisgICAibm90aSIsCisgICAib3JpIiwKKyAgICJyc2hpZnRpIiwKKyAgICJ1cnNoaWZ0
aSIsCisgICAic3ViaSIsCisgICAieG9yaSIsCisgICAibG9hZGkiLAorICAgImxvYWRiIiwKKyAg
ICJsb2FkaCIsCisgICAic3RvcmVpIiwKKyAgICJzdG9yZWIiLAorICAgImxvYWRkIiwKKyAgICJt
b3ZlZCIsCisgICAic3RvcmVkIiwKKyAgICJhZGRkIiwKKyAgICJkaXZkIiwKKyAgICJzdWJkIiwK
KyAgICJtdWxkIiwKKyAgICJzcXJ0ZCIsCisgICAiY2kyZCIsCisgICAiZmlpMmQiLCAjIHVzYWdl
OiBmaWkyZCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0
IHNpZ25pZmljYW50IGJpdHM+LCA8ZnByPgorICAgImZkMmlpIiwgIyB1c2FnZTogZmQyaWkgPGZw
cj4sIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2ln
bmlmaWNhbnQgYml0cz4KKyAgICJiZGVxIiwKKyAgICJiZG5lcSIsCisgICAiYmRndCIsCisgICAi
YmRndGVxIiwKKyAgICJiZGx0IiwKKyAgICJiZGx0ZXEiLAorICAgImJkZXF1biIsCisgICAiYmRu
ZXF1biIsCisgICAiYmRndHVuIiwKKyAgICJiZGd0ZXF1biIsCisgICAiYmRsdHVuIiwKKyAgICJi
ZGx0ZXF1biIsCisgICAiYnRkMmkiLAorICAgInRkMmkiLAorICAgImJjZDJpIiwKKyAgICJtb3Zk
eiIsCisgICAicG9wIiwKKyAgICJwdXNoIiwKKyAgICJtb3ZlIiwKKyAgICJzeGkycCIsCisgICAi
enhpMnAiLAorICAgIm5vcCIsCisgICAiYmllcSIsCisgICAiYmluZXEiLAorICAgImJpYSIsCisg
ICAiYmlhZXEiLAorICAgImJpYiIsCisgICAiYmliZXEiLAorICAgImJpZ3QiLAorICAgImJpZ3Rl
cSIsCisgICAiYmlsdCIsCisgICAiYmlsdGVxIiwKKyAgICJiYmVxIiwKKyAgICJiYm5lcSIsCisg
ICAiYmJhIiwKKyAgICJiYmFlcSIsCisgICAiYmJiIiwKKyAgICJiYmJlcSIsCisgICAiYmJndCIs
CisgICAiYmJndGVxIiwKKyAgICJiYmx0IiwKKyAgICJiYmx0ZXEiLAorICAgImJ0aW8iLAorICAg
ImJ0aXMiLAorICAgImJ0aXoiLAorICAgImJ0aW56IiwKKyAgICJidGJvIiwKKyAgICJidGJzIiwK
KyAgICJidGJ6IiwKKyAgICJidGJueiIsCisgICAiam1wIiwKKyAgICJiYWRkaW8iLAorICAgImJh
ZGRpcyIsCisgICAiYmFkZGl6IiwKKyAgICJiYWRkaW56IiwKKyAgICJic3ViaW8iLAorICAgImJz
dWJpcyIsCisgICAiYnN1Yml6IiwKKyAgICJic3ViaW56IiwKKyAgICJibXVsaW8iLAorICAgImJt
dWxpcyIsCisgICAiYm11bGl6IiwKKyAgICJibXVsaW56IiwKKyAgICJib3JpbyIsCisgICAiYm9y
aXMiLAorICAgImJvcml6IiwKKyAgICJib3JpbnoiLAorICAgImJyZWFrIiwKKyAgICJjYWxsIiwK
KyAgICJyZXQiLAorICAgImNpZXEiLAorICAgImNpbmVxIiwKKyAgICJjaWEiLAorICAgImNpYWVx
IiwKKyAgICJjaWIiLAorICAgImNpYmVxIiwKKyAgICJjaWd0IiwKKyAgICJjaWd0ZXEiLAorICAg
ImNpbHQiLAorICAgImNpbHRlcSIsCisgICAidGlvIiwKKyAgICJ0aXMiLAorICAgInRpeiIsCisg
ICAidGlueiIsCisgICAidGJvIiwKKyAgICJ0YnMiLAorICAgInRieiIsCisgICAidGJueiIsCisg
ICAicGVlayIsCisgICAicG9rZSIsCisgICAiYnBlcSIsCisgICAiYnBuZXEiLAorICAgImJwYSIs
CisgICAiYnBhZXEiLAorICAgImJwYiIsCisgICAiYnBiZXEiLAorICAgImJwZ3QiLAorICAgImJw
Z3RlcSIsCisgICAiYnBsdCIsCisgICAiYnBsdGVxIiwKKyAgICJhZGRwIiwKKyAgICJhbmRwIiwK
KyAgICJvcnAiLAorICAgInN1YnAiLAorICAgInhvcnAiLAorICAgImxvYWRwIiwKKyAgICJjcGVx
IiwKKyAgICJjcG5lcSIsCisgICAiY3BhIiwKKyAgICJjcGFlcSIsCisgICAiY3BiIiwKKyAgICJj
cGJlcSIsCisgICAiY3BndCIsCisgICAiY3BndGVxIiwKKyAgICJjcGx0IiwKKyAgICJjcGx0ZXEi
LAorICAgInN0b3JlcCIsCisgICAiYnRwbyIsCisgICAiYnRwcyIsCisgICAiYnRweiIsCisgICAi
YnRwbnoiLAorICAgImJhZGRwbyIsCisgICAiYmFkZHBzIiwKKyAgICJiYWRkcHoiLAorICAgImJh
ZGRwbnoiCisgIF0KKworWDg2X0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJjZHFpIiwKKyAgICJp
ZGl2aSIKKyAgXQorCitJTlNUUlVDVElPTlMgPSBNQUNST19JTlNUUlVDVElPTlMgKyBYODZfSU5T
VFJVQ1RJT05TCisKK0lOU1RSVUNUSU9OX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBJ
TlNUUlVDVElPTlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9j
b25zdGFudHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworTUFHSUNfTlVN
QkVSUyA9IFsgMHhlYzU3N2FjNywgMHgwZmY1ZTc1NSBdCisKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNTkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVp
cmUgImFzdCIKK3JlcXVpcmUgIm9mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzIgorCitPRkZTRVRf
TUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgwZmY1ZTc1NSBdCisKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIG9mZnNldHNMaXN0KGFzdCkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgc2l6ZXNMaXN0KGFzdCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIFJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHNpemVzIHVz
ZWQgYnkgdGhlIEFTVC4gICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisKK2RlZiBvZmZzZXRzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU3RydWN0T2Zm
c2V0KS51bmlxLnNvcnQKK2VuZAorCitkZWYgc2l6ZXNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihT
aXplb2YpLnVuaXEuc29ydAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgoYXN0LCBmaWxlKSAtPiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgIFtvZmZzZXRzTGlzdCwgc2l6ZXNMaXN0LCBpbmRleF0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFBh
cnNlcyB0aGUgb2Zmc2V0cyBmcm9tIGEgZmlsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0
cyBhbmQgdGhlICMKKyMgaW5kZXggb2YgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB2YWxpZCBp
biB0aGlzIGJ1aWxkIHRhcmdldC4gICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKworZGVmIG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgoYXN0LCBmaWxlKQorICBp
bmRleCA9IG5pbAorICBvZmZzZXRzID0gW10KKyAgc2l6ZXMgPSBbXQorICBlbmRpYW5uZXNzTWFy
a2VyQnl0ZXMgPSBuaWwKKyAgCisgIG51bU9mZnNldHMgPSBvZmZzZXRzTGlzdChhc3QpLnNpemUK
KyAgCisgIGRlZiByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICBieXRlcyA9IFtdCisgICAg
NC50aW1lcyB7CisgICAgICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQorICAgIH0KKyAgICAKKyAgICBp
ZiBlbmRpYW5uZXNzID09IDpsaXR0bGUKKyAgICAgICMgTGl0dGxlIGVuZGlhbgorICAgICAgKGJ5
dGVzWzBdIDw8IDAgfAorICAgICAgIGJ5dGVzWzFdIDw8IDggfAorICAgICAgIGJ5dGVzWzJdIDw8
IDE2IHwKKyAgICAgICBieXRlc1szXSA8PCAyNCkKKyAgICBlbHNlCisgICAgICAjIEJpZyBlbmRp
YW4KKyAgICAgIChieXRlc1swXSA8PCAyNCB8CisgICAgICAgYnl0ZXNbMV0gPDwgMTYgfAorICAg
ICAgIGJ5dGVzWzJdIDw8IDggfAorICAgICAgIGJ5dGVzWzNdIDw8IDApCisgICAgZW5kCisgIGVu
ZAorICAKKyAgWzpsaXR0bGUsIDpiaWddLmVhY2ggeworICAgIHwgZW5kaWFubmVzcyB8CisgICAg
bWFnaWNCeXRlcyA9IFtdCisgICAgTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICAgIHwgbnVtYmVy
IHwKKyAgICAgIGN1cnJlbnRCeXRlcyA9IFtdCisgICAgICA0LnRpbWVzIHsKKyAgICAgICAgY3Vy
cmVudEJ5dGVzIDw8IChudW1iZXIgJiAweGZmKQorICAgICAgICBudW1iZXIgPj49IDgKKyAgICAg
IH0KKyAgICAgIGlmIGVuZGlhbm5lc3MgPT0gOmJpZworICAgICAgICBjdXJyZW50Qnl0ZXMucmV2
ZXJzZSEKKyAgICAgIGVuZAorICAgICAgbWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0ZXMKKyAgICB9
CisgICAgCisgICAgRmlsZS5vcGVuKGZpbGUsICJyIikgeworICAgICAgfCBpbnAgfAorICAgICAg
d2hlcmVJbk1hcmtlciA9IDAKKyAgICAgIGxvb3AgeworICAgICAgICBieXRlID0gaW5wLmdldGJ5
dGUKKyAgICAgICAgYnJlYWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgaWYgYnl0ZSA9PSBtYWdpY0J5
dGVzW3doZXJlSW5NYXJrZXJdCisgICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisgICAgICAg
ICAgaWYgd2hlcmVJbk1hcmtlciA9PSBtYWdpY0J5dGVzLnNpemUKKyAgICAgICAgICAgICMgV2Ug
aGF2ZSBhIG1hdGNoISBJZiB3ZSBoYXZlIG5vdCB5ZXQgcmVhZCB0aGUgZW5kaWFubmVzcyBtYXJr
ZXIgYW5kIGluZGV4LAorICAgICAgICAgICAgIyB0aGVuIHJlYWQgdGhvc2Ugbm93OyBvdGhlcndp
c2UgcmVhZCBhbiBvZmZzZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIG5vdCBpbmRl
eAorICAgICAgICAgICAgICBpbmRleCA9IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAg
ICAgICAgZWxzaWYgb2Zmc2V0cy5zaXplID09IG51bU9mZnNldHMKKyAgICAgICAgICAgICAgc2l6
ZXMgPDwgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgIG9mZnNldHMgPDwgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBl
bmQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAg
ICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICAg
IGVuZAorICAgICAgfQorICAgIH0KKyAgICAKKyAgICBicmVhayBpZiBpbmRleAorICB9CisgIAor
ICByYWlzZSB1bmxlc3MgaW5kZXgKKyAgcmFpc2UgdW5sZXNzIG9mZnNldHMuc2l6ZSA9PSBudW1P
ZmZzZXRzCisgIAorICBbb2Zmc2V0cywgc2l6ZXMsIGluZGV4XQorZW5kCisKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHMsIHNp
emVzKSAtPiBbb2Zmc2V0cywgc2l6ZXNdICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyBCdWlsZHMgYSBtYXBwaW5nIGJldHdlZW4gU3RydWN0T2Zmc2V0IG5vZGVzIGFuZCB0aGVpciB2
YWx1ZXMuICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYg
YnVpbGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0cywgc2l6ZXMpCisgIG9mZnNldHNNYXAgPSB7fQor
ICBzaXplc01hcCA9IHt9CisgIG9mZnNldHNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAg
ICB8IHN0cnVjdE9mZnNldCwgaW5kZXggfAorICAgIG9mZnNldHNNYXBbc3RydWN0T2Zmc2V0XSA9
IG9mZnNldHNbaW5kZXhdCisgIH0KKyAgc2l6ZXNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsK
KyAgICB8IHNpemVvZiwgaW5kZXggfAorICAgIHNpemVzTWFwW3NpemVvZl0gPSBzaXplc1tpbmRl
eF0KKyAgfQorICBbb2Zmc2V0c01hcCwgc2l6ZXNNYXBdCitlbmQKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1OTEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVp
cmUgImFzdCIKK3JlcXVpcmUgImluc3RydWN0aW9ucyIKK3JlcXVpcmUgInJlZ2lzdGVycyIKKwor
Y2xhc3MgVG9rZW4KKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4sIDpzdHJpbmcKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cmluZykKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVP
cmlnaW4KKyAgICBAc3RyaW5nID0gc3RyaW5nCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQor
ICAgIGlmIG90aGVyLmlzX2E/IFRva2VuCisgICAgICBAc3RyaW5nID09IG90aGVyLnN0cmluZwor
ICAgIGVsc2UKKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgPX4ob3RoZXIpCisgICAgQHN0cmluZyA9fiBvdGhlcgorICBlbmQKKyAgCisgIGRlZiB0b19z
CisgICAgIiN7QHN0cmluZy5pbnNwZWN0fSBhdCBsaW5lICN7Y29kZU9yaWdpbn0iCisgIGVuZAor
ICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgY29tbWVudC5lbXB0eT8KKyAg
ICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAi
UGFyc2UgZXJyb3I6ICN7dG9fc306ICN7Y29tbWVudFswXX0iCisgICAgZW5kCisgIGVuZAorZW5k
CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBsZXhlci4gVGFrZXMg
YSBzdHJpbmcgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdG9rZW5zLiAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBsZXgoc3RyKQorICByZXN1bHQg
PSBbXQorICBsaW5lTnVtYmVyID0gMQorICB3aGlsZSBub3Qgc3RyLmVtcHR5PworICAgIGNhc2Ug
c3RyCisgICAgd2hlbiAvXEFcIyhbXlxuXSopLworICAgICAgIyBjb21tZW50LCBpZ25vcmUKKyAg
ICB3aGVuIC9cQVxuLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikK
KyAgICAgIGxpbmVOdW1iZXIgKz0gMQorICAgIHdoZW4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9d
KikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4g
L1xBXC4oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1i
ZXIsICQmKQorICAgIHdoZW4gL1xBXyhbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBU
b2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEEoWyBcdF0rKS8KKyAgICAgICMg
d2hpdGVzcGFjZSwgaWdub3JlCisgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSspLworICAgICAg
cmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAgICB3aGVuIC9c
QTAoWzAtN10rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYub2N0
LnRvX3MpCisgICAgd2hlbiAvXEEoWzAtOV0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXco
bGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEE6Oi8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5u
ZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFbOixcKFwpXFtcXT1cK1wtKl0vCisgICAg
ICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIGVsc2UKKyAgICAgIHJh
aXNlICJMZXhlciBlcnJvciBhdCBsaW5lIG51bWJlciAje2xpbmVOdW1iZXJ9LCB1bmV4cGVjdGVk
IHNlcXVlbmNlICN7c3RyWzAuLjIwXS5pbnNwZWN0fSIKKyAgICBlbmQKKyAgICBzdHIgPSAkfi5w
b3N0X21hdGNoCisgIGVuZAorICByZXN1bHQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBUb2tlbiBpZGVudGlmaWNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworCitkZWYgaXNSZWdpc3Rlcih0b2tlbikKKyAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVS
TgorZW5kCisKK2RlZiBpc0luc3RydWN0aW9uKHRva2VuKQorICB0b2tlbiA9fiBJTlNUUlVDVElP
Tl9QQVRURVJOCitlbmQKKworZGVmIGlzS2V5d29yZCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBKCh0
cnVlKXwoZmFsc2UpfChpZil8KHRoZW4pfChlbHNlKXwoZWxzaWYpfChlbmQpfChhbmQpfChvcil8
KG5vdCl8KG1hY3JvKXwoY29uc3QpfChzaXplb2YpfChlcnJvcikpXFovIG9yCisgICAgdG9rZW4g
PX4gUkVHSVNURVJfUEFUVEVSTiBvcgorICAgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4K
K2VuZAorCitkZWYgaXNJZGVudGlmaWVyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbYS16QS1aXShb
YS16QS1aMC05X10qKVxaLyBhbmQgbm90IGlzS2V5d29yZCh0b2tlbikKK2VuZAorCitkZWYgaXNM
YWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXyhbYS16QS1aMC05X10qKVxaLworZW5kCisKK2Rl
ZiBpc0xvY2FsTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQVwuKFthLXpBLVowLTlfXSopXFov
CitlbmQKKworZGVmIGlzVmFyaWFibGUodG9rZW4pCisgIGlzSWRlbnRpZmllcih0b2tlbikgb3Ig
aXNSZWdpc3Rlcih0b2tlbikKK2VuZAorCitkZWYgaXNJbnRlZ2VyKHRva2VuKQorICB0b2tlbiA9
fiAvXEFbMC05XS8KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBU
aGUgcGFyc2VyLiBUYWtlcyBhbiBhcnJheSBvZiB0b2tlbnMgYW5kIHJldHVybnMgYW4gQVNULiBN
ZXRob2RzICAgICAjCisjIG90aGVyIHRoYW4gcGFyc2UodG9rZW5zKSBhcmUgbm90IGZvciBwdWJs
aWMgY29uc3VtcHRpb24uICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisKK2NsYXNzIFBhcnNlcgorICBkZWYgaW5pdGlhbGl6ZSh0b2tlbnMpCisgICAgQHRv
a2VucyA9IHRva2VucworICAgIEBpZHggPSAwCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3Io
KmNvbW1lbnQpCisgICAgaWYgQHRva2Vuc1tAaWR4XQorICAgICAgQHRva2Vuc1tAaWR4XS5wYXJz
ZUVycm9yKCpjb21tZW50KQorICAgIGVsc2UKKyAgICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAg
ICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZSIKKyAgICAgIGVsc2UKKyAgICAg
ICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlOiAje2NvbW1lbnRbMF19IgorICAg
ICAgZW5kCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGNvbnN1bWUocmVnZXhwKQorICAgIGlm
IHJlZ2V4cAorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9fiByZWdleHAK
KyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAaWR4ID09IEB0b2tlbnMubGVuZ3Ro
CisgICAgZW5kCisgICAgQGlkeCArPSAxCisgIGVuZAorICAKKyAgZGVmIHNraXBOZXdMaW5lCisg
ICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQK
KyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgaWYgQHRva2Vuc1tAaWR4
XSA9PSAibm90IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZVByZWRpY2F0ZUF0b20KKyAg
ICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lw
TmV3TGluZQorICAgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgIHBhcnNlRXJyb3Ig
dW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3Vs
dAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInRydWUiCisgICAgICByZXN1bHQgPSBUcnVl
Lmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gImZhbHNlIgorICAgICAgcmVzdWx0ID0gRmFsc2UuaW5zdGFuY2UKKyAgICAg
IEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNb
QGlkeF0KKyAgICAgIHJlc3VsdCA9IFNldHRpbmcuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1
bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVm
IHBhcnNlUHJlZGljYXRlQW5kCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisgICAg
d2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiYW5kIgorICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAg
ICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgIHJlc3VsdCA9IEFuZC5uZXcoY29k
ZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAor
ICBkZWYgcGFyc2VQcmVkaWNhdGUKKyAgICAjIHNvbWUgZXhhbXBsZXMgb2YgcHJlY2VkZW5jZToK
KyAgICAjIG5vdCBhIGFuZCBiIC0+IChub3QgYSkgYW5kIGIKKyAgICAjIGEgYW5kIGIgb3IgYyAt
PiAoYSBhbmQgYikgb3IgYworICAgICMgYSBvciBiIGFuZCBjIC0+IGEgb3IgKGIgYW5kIGMpCisg
ICAgCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICB3aGlsZSBAdG9rZW5zW0Bp
ZHhdID09ICJvciIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4K
KyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQ
cmVkaWNhdGVBbmQKKyAgICAgIHJlc3VsdCA9IE9yLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJp
Z2h0KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVZhcmlhYmxl
CisgICAgaWYgaXNSZWdpc3RlcihAdG9rZW5zW0BpZHhdKQorICAgICAgaWYgQHRva2Vuc1tAaWR4
XSA9fiBGUFJfUEFUVEVSTgorICAgICAgICByZXN1bHQgPSBGUFJlZ2lzdGVySUQuZm9yTmFtZShA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgZWxz
ZQorICAgICAgICByZXN1bHQgPSBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzSWRl
bnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgcmVzdWx0ID0gVmFyaWFibGUuZm9yTmFtZShA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgIGVsc2UK
KyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VBZGRyZXNzKG9mZnNldCkKKyAgICBwYXJzZUVycm9yIHVubGVz
cyBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4KKyAgICAKKyAgICAjIFRocmVlIHBvc3NpYmlsaXRpZXM6CisgICAgIyBbXSAgICAg
ICAtPiBBYnNvbHV0ZUFkZHJlc3MKKyAgICAjIFthXSAgICAgIC0+IEFkZHJlc3MKKyAgICAjIFth
LGJdICAgIC0+IEJhc2VJbmRleCB3aXRoIHNjYWxlID0gMQorICAgICMgW2EsYixjXSAgLT4gQmFz
ZUluZGV4CisgICAgCisgICAgQGlkeCArPSAxCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIK
KyAgICAgIEBpZHggKz0gMQorICAgICAgcmV0dXJuIEFic29sdXRlQWRkcmVzcy5uZXcoY29kZU9y
aWdpbiwgb2Zmc2V0KQorICAgIGVuZAorICAgIGEgPSBwYXJzZVZhcmlhYmxlCisgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIHJlc3VsdCA9IEFkZHJlc3MubmV3KGNvZGVPcmlnaW4s
IGEsIG9mZnNldCkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0Bp
ZHhdID09ICIsIgorICAgICAgQGlkeCArPSAxCisgICAgICBiID0gcGFyc2VWYXJpYWJsZQorICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5l
dyhjb2RlT3JpZ2luLCBhLCBiLCAxLCBvZmZzZXQpCisgICAgICBlbHNlCisgICAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICBwYXJzZUVycm9yIHVubGVzcyBbIjEiLCAiMiIsICI0IiwgIjgiXS5tZW1iZXI/IEB0b2tl
bnNbQGlkeF0uc3RyaW5nCisgICAgICAgIGMgPSBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhd
ID09ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIs
IGMsIG9mZnNldCkKKyAgICAgIGVuZAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICAgIHJlc3Vs
dAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUNvbG9uQ29sb24KKyAgICBza2lwTmV3TGluZQorICAg
IGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICBwYXJzZUVycm9yIHVu
bGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgIG5hbWVzID0gW0B0b2tlbnNbQGlk
eF0uc3RyaW5nXQorICAgIEBpZHggKz0gMQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIjo6
IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIg
QHRva2Vuc1tAaWR4XQorICAgICAgbmFtZXMgPDwgQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAg
IEBpZHggKz0gMQorICAgIGVuZAorICAgIHJhaXNlIGlmIG5hbWVzLmVtcHR5PworICAgIFtjb2Rl
T3JpZ2luLCBuYW1lc10KKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uQXRvbQorICAg
IHNraXBOZXdMaW5lCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIEBpZHggKz0g
MQorICAgICAgTmVnSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCBw
YXJzZUV4cHJlc3Npb25BdG9tKQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAg
ICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgIEBpZHggKz0gMQorICAgICAg
cmVzdWx0CisgICAgZWxzaWYgaXNJbnRlZ2VyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9
IEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0
cmluZy50b19pKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lk
ZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNv
bG9uQ29sb24KKyAgICAgIGlmIG5hbWVzLnNpemUgPiAxCisgICAgICAgIFN0cnVjdE9mZnNldC5m
b3JGaWVsZChjb2RlT3JpZ2luLCBuYW1lc1swLi4tMl0uam9pbignOjonKSwgbmFtZXNbLTFdKQor
ICAgICAgZWxzZQorICAgICAgICBWYXJpYWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzWzBd
KQorICAgICAgZW5kCisgICAgZWxzaWYgaXNSZWdpc3RlciBAdG9rZW5zW0BpZHhdCisgICAgICBw
YXJzZVZhcmlhYmxlCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIgorICAgICAg
QGlkeCArPSAxCisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAg
ICAgU2l6ZW9mLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXMuam9pbignOjonKSkKKyAgICBlbHNl
CisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVz
c2lvbk11bAorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uQXRv
bQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICBpZiBAdG9rZW5zW0BpZHhd
ID09ICIqIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gTXVsSW1tZWRpYXRl
cy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Np
b25BdG9tKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5kCisg
ICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgQHRva2Vu
c1tAaWR4XSA9PSAiLSIgb3IgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIiBvciBpc0ludGVnZXIo
QHRva2Vuc1tAaWR4XSkgb3IgaXNWYXJpYWJsZShAdG9rZW5zW0BpZHhdKQorICBlbmQKKyAgCisg
IGRlZiBwYXJzZUV4cHJlc3Npb24KKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNl
RXhwcmVzc2lvbk11bAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0b2tlbnNb
QGlkeF0gPT0gIi0iCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0g
MV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICItIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0g
U3ViSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBw
YXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQK
KyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1l
bnQpCisgICAgaWYgY291bGRCZUV4cHJlc3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Np
b24KKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRkcmVzcyhl
eHByKQorICAgICAgZWxzZQorICAgICAgICBleHByCisgICAgICBlbmQKKyAgICBlbHNpZiBAdG9r
ZW5zW0BpZHhdID09ICJbIgorICAgICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luLCAwKSkKKyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0K
KyAgICAgIHJlc3VsdCA9IExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4sIExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhd
LnN0cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzTG9j
YWxMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVmZXJlbmNl
Lm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0g
MQorICAgICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50KQorICAg
IGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tpcE5ld0xp
bmUKKyAgICBjb25zdW1lKC9cQVwoXFovKQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAgbG9vcCB7
CisgICAgICBza2lwTmV3TGluZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRv
a2Vuc1tAaWR4XSkKKyAgICAgICAgdmFyaWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIiki
CisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAg
ICAgICAgIHBhcnNlRXJyb3IKKyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIHBhcnNl
RXJyb3IKKyAgICAgIGVuZAorICAgIH0KKyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAorICBkZWYg
cGFyc2VTZXF1ZW5jZShmaW5hbCwgY29tbWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4gPSBAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAgICAgIGlm
IChAaWR4ID09IEB0b2tlbnMubGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQgQHRv
a2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gIlxuIgorICAgICAgICAjIGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEKKyAgICAg
IGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgcGFyc2VFcnJvciB1bmxlc3MgaXNWYXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAgICAgIHZh
cmlhYmxlID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tl
bnNbQGlkeF0uc3RyaW5nKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1
bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiPSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZh
bHVlID0gcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5uYW1l
fSIpCisgICAgICAgIGxpc3QgPDwgQ29uc3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImVycm9y
IgorICAgICAgICBsaXN0IDw8IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4pCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAg
ICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGlj
YXRlCisgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgc2tpcE5l
d0xpbmUKKyAgICAgICAgaWZUaGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHBy
ZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hp
bGUgaW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBsaXN0IDw8
IGlmVGhlbkVsc2UKKyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisgICAg
ICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRlID0gcGFy
c2VQcmVkaWNhdGUKKyAgICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAg
ICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNv
ZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNp
ZikpXFovLCAid2hpbGUgaW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAg
ICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlmVGhlbkVs
c2UgPSBlbHNlQ2FzZQorICAgICAgICBlbmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
ZWxzZSIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNl
ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNlIGZv
ciBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiZW5k
IgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gIm1hY3JvIgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBw
YXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgbmFt
ZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YXJp
YWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNl
KC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAgICAgQGlk
eCArPSAxCisgICAgICAgIGxpc3QgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlh
YmxlcywgYm9keSkKKyAgICAgIGVsc2lmIGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAg
ICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUg
PSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgKG5v
dCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tA
aWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5k
IGl0J3MgdGhlIGxhc3Qgb25lLgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNv
ZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLgor
ICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQor
ICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBJdCdzIGRlZmlu
aXRlbHkgYW4gaW5zdHJ1Y3Rpb24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJhbmQuCisg
ICAgICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxzZQor
ICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3
aGlsZSBpbnNpZGUgb2YgaW5zdHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICBpZiAobm90
IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0Bp
ZHhdID1+IGZpbmFsKQorICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9u
IGFuZCBvZiB0aGUgc2VxdWVuY2UuCisgICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSB0cnVl
CisgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICIsIgorICAgICAgICAgICAgICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAg
ICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFsfSBh
ZnRlciAje29wZXJhbmRzLmxhc3QuZHVtcH0iKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAg
fQorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9w
ZXJhbmRzKQorICAgICAgICAgIGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgZW5kCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tl
bnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgor
ICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICAgICAgIyBNYWNybyBpbnZvY2F0
aW9uLgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAg
ICAgICBza2lwTmV3TGluZQorICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsb29wIHsKKyAg
ICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9
PSAibWFjcm8iCisgICAgICAgICAgICAgICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQorICAgICAg
ICAgICAgICAgIGNvZGVPcmlnaW5Jbm5lciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAg
ICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNl
TWFjcm9WYXJpYWJsZXMKKyAgICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFl
bmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1bWVu
dCB0byAje25hbWV9IikKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAg
ICBvcGVyYW5kcyA8PCBNYWNyby5uZXcoY29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlhYmxlcywg
Ym9keSkKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBh
cnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIpCisgICAg
ICAgICAgICAgIGVuZAorICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBp
ZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwi
CisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBwYXJzZUVycm9yICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5z
cGVjdH0gd2hpbGUgcGFyc2luZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgfQorICAgICAgICAgIGVuZAorICAgICAgICAgIGxpc3Qg
PDwgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgZWxz
ZQorICAgICAgICAgIHBhcnNlRXJyb3IgIkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFtZX0iCisg
ICAgICAgIGVuZAorICAgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlzTG9jYWxM
YWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI6Igor
ICAgICAgICAjIEl0J3MgYSBsYWJlbC4KKyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAg
ICAgbGlzdCA8PCBMYWJlbC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVsc2UK
KyAgICAgICAgICBsaXN0IDw8IExvY2FsTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgICAgICBlbmQKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNlCisgICAgICAgIHBhcnNl
RXJyb3IgIkV4cGVjdGluZyB0ZXJtaW5hbCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAgICAgZW5k
CisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisgIGVuZAor
ZW5kCisKK2RlZiBwYXJzZSh0b2tlbnMpCisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9rZW5zKQor
ICBwYXJzZXIucGFyc2VTZXF1ZW5jZShuaWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K0dQUlMgPQorICBbCisgICAidDAiLAorICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMiLAorICAg
InQ0IiwKKyAgICJjZnIiLAorICAgImEwIiwKKyAgICJhMSIsCisgICAicjAiLAorICAgInIxIiwK
KyAgICJzcCIKKyAgXQorCitGUFJTID0KKyAgWworICAgImZ0MCIsCisgICAiZnQxIiwKKyAgICJm
dDIiLAorICAgImZ0MyIsCisgICAiZnQ0IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisgICAiZmEx
IiwKKyAgICJmYTIiLAorICAgImZhMyIsCisgICAiZnIiCisgIF0KKworUkVHSVNURVJTID0gR1BS
UyArIEZQUlMKKworR1BSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJTLmpvaW4o
Jyl8KCcpICsgJykpXFxaJykKK0ZQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgRlBS
Uy5qb2luKCcpfCgnKSArICcpKVxcWicpCisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdleHAubmV3
KCdcXEEoKCcgKyBSRUdJU1RFUlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyMjEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFyc2VyIgor
cmVxdWlyZSAidHJhbnNmb3JtIgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25z
ICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkgb2Yg
c2V0dGluZ3MgbWFwcywgd2hlcmUgYSBzZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMgIworIyBhIGNv
bmZpZ3VyYXRpb24gZm9yIHRoZSBhc3NlbWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIG1h
cCAgICAgICAjCisjIGNvbnRhaW5zIGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBzZXR0
aW5ncyBuYW1lcyAoc3RyaW5ncykgYW5kICMKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVhbnMgKHRy
dWUgZm9yIGVuYWJsZWQsIGZhbHNlIGZvciBkaXNhYmxlZCkuICAgICAgIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhh
c3QpCisgIHNldHRpbmdzQ29tYmluYXRpb25zID0gW10KKyAgCisgIGRlZiBzZXR0aW5nc0NvbWJp
bmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG1hcFNvRmFyLCByZW1haW5pbmcpCisgICAgaWYg
cmVtYWluaW5nLmVtcHR5PworICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFwU29GYXIK
KyAgICAgIHJldHVybgorICAgIGVuZAorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAor
ICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gdHJ1ZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihz
ZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICAgIAorICAg
IG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gZmFsc2UK
KyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVt
YWluaW5nWzEuLi0xXSkKKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3ND
b21iaW5hdGlvbnMsIHt9LCAoYXN0LmZpbHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7fHZ8IHYu
bmFtZX0gKyBbIlg4NiIsICJBUk12NyJdKS51bmlxKQorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlv
bnMKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JTZXR0aW5n
cyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwgLi4u
IH0gICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBEZXRlcm1pbmVzIGlmIHRo
ZSBzZXR0aW5ncyBjb21iaW5hdGlvbiBpcyB2YWxpZCwgYW5kIGlmIHNvLCBjYWxscyAgICAjCisj
IHRoZSBibG9jayB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBjb2Rl
LiAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBm
b3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJjaGl0
ZWN0dXJlcyB0aGlzIGNvbWJpbmF0b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWltZWRC
YWNrZW5kcyA9IDAKKyAgc2VsZWN0ZWRCYWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2ggewor
ICAgIHwgYmFja2VuZCB8CisgICAgaXNTdXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2JhY2tl
bmRdCisgICAgcmFpc2UgdW5sZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWltZWRC
YWNrZW5kcyArPSBpZiBpc1N1cHBvcnRlZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlzU3Vw
cG9ydGVkCisgICAgICBzZWxlY3RlZEJhY2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0KKyAg
CisgIHJldHVybiBpZiBudW1DbGFpbWVkQmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUgdGhl
IEFTVCBkb3duIHRvIGEgbG93LWxldmVsIGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25hbHMp
LgorICBsb3dMZXZlbEFTVCA9IGFzdC5yZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykK
KyAgCisgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJhY2tl
bmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFs
aWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4g
fSAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0
aW5nc0NvbWJpbmF0aW9uKGFzdCwgc2V0dGluZ3NDb21iaW5hdGlvbnMpIHsgICAgICAgICAjCisj
ICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAg
ICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFeGVjdXRlcyB0aGUgZ2l2ZW4gYmxv
Y2sgZm9yIGVhY2ggdmFsaWQgc2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlICAjCisjIHNldHRp
bmdzIG1hcC4gVGhlIGFzdCBwYXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQgICAgICAg
ICAgICAgICMKKyMgKGFzdC5yZXNvbHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBmaXJzdCBm
b3JtIHdpbGwgY2FsbCBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSBmb3IgeW91LiAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JFYWNoVmFsaWRT
ZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgKm9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMpCisg
IHJhaXNlIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEKKyAgCisgIGlm
IG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuZW1wdHk/CisgICAgc2V0dGluZ3NDb21iaW5h
dGlvbnMgPSBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBlbHNlCisgICAgc2V0
dGluZ3NDb21iaW5hdGlvbnMgPSBvcHRpb25hbFNldHRpbmdzQ29tYmlhdGlvbnNbMF0KKyAgZW5k
CisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucy5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgY29u
Y3JldGVTZXR0aW5ncywgaW5kZXggfAorICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3Ms
IGFzdCkgeworICAgICAgfCBjb25jcmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJhY2tlbmQg
fAorICAgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGlu
ZGV4CisgICAgfQorICB9CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFJldHVybnMgdGhlIEMrKyBjb2Rl
IHVzZWQgdG8gdGVzdCBpZiB3ZSBhcmUgaW4gYSBjb25maWd1cmF0aW9uIHRoYXQgICMKKyMgY29y
cmVzcG9uZHMgdG8gdGhlIGdpdmVuIGNvbmNyZXRlIHNldHRpbmdzLiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGNwcFNl
dHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdz
LnRvX2EuY29sbGVjdHsKKyAgICB8IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisgICAgICAgIiIK
KyAgICAgZWxzZQorICAgICAgICIhIgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIgKyBwYWly
WzBdCisgIH0uam9pbigiICYmICIpCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgaXNBU1RFcnJvbmVvdXMoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRlc3RzIHRvIHNlZSBp
ZiB0aGUgQVNUIGNsYWltcyB0aGF0IHRoZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUgICMK
KyMgdXNlcidzIGNvZGUsIGFmdGVyIHNldHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rl
cy4gICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVm
IGlzQVNURXJyb25lb3VzKGFzdCkKKyAgbm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5PworZW5k
CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGFzc2VydENvbmZpZ3VyYXRp
b24oY29uY3JldGVTZXR0aW5ncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBFbWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdlJ3JlIHVz
aW5nIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uLiAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworCitkZWYgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICBw
dXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICBwdXRzICIjZWxzZSIKKyAg
cHV0cyAiI2Vycm9yIFwiQ29uZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAgcHV0cyAiI2VuZGlm
IgorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGVtaXRDb2RlSW5D
b25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkgeyAgICAgICAgICAg
ICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4uIH0gICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEVtaXRzIGFsbCByZWxldmFu
dCBndWFyZHMgdG8gc2VlIGlmIHRoZSBjb25maWd1cmF0aW9uIGhvbGRzIGFuZCAgICAgICMKKyMg
Y2FsbHMgdGhlIGJsb2NrIGlmIHRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBlcnJvbmVvdXMuICAg
ICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGVt
aXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkKKyAg
cHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIGlmIGlzQVNURXJy
b25lb3VzKGFzdCkKKyAgICBwdXRzICIjZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uXCIi
CisgIGVsc2lmIG5vdCBXT1JLSU5HX0JBQ0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICBwdXRz
ICIjZXJyb3IgXCJUaGlzIGJhY2tlbmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UK
KyAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICBw
dXRzICIjZW5kaWYiCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGlu
ZGV4IHwgLi4uIH0gICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRW1pdHMg
Z3VhcmQgY29kZXMgZm9yIGFsbCB2YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxzIHRoZSBi
bG9jayAgIworIyBmb3IgdGhvc2UgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5kIG5v
dCBlcnJvbmVvdXMuICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworCitkZWYgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkKKyAgZm9yRWFjaFZhbGlk
U2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xl
dmVsQVNULCBiYWNrZW5kLCBpbmRleCB8CisgICAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3Jl
dGVTZXR0aW5ncykKKyAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFj
a2VuZCwgaW5kZXgKKyAgICBwdXRzICIjZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzMzQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK3JlcXVpcmUgImFzdCIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgbm9kZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbnN0cnVjdCBhIG5ldyBB
U1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBJZlRoZW5FbHNlIG5vZGVzIGJ5ICAgICAgICMKKyMg
c3Vic3RpdHV0aW5nIGNvbmNyZXRlIGJvb2xlYW4gdmFsdWVzIGZvciBlYWNoIFNldHRpbmcuICAg
ICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3Mg
Tm9kZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG1hcENoaWxkcmVuIHsK
KyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQor
ICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNl
dHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UKKyAgZGVmIHJlc29s
dmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRp
bmcKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZXR0aW5nc1tAbmFtZV0u
YXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNl
dHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIGFuZCBA
cmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5k
CisKK2NsYXNzIE9yCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0
LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgb3IgQHJpZ2h0LnJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBOb3QKKyAgZGVm
IHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAobm90IEBjaGlsZC5yZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxz
ZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGlmIEBwcmVkaWNhdGUucmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZQorICAgICAgQHRoZW5DYXNlLnJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICBlbHNlCisgICAgICBAZWxzZUNhc2UucmVzb2x2ZVNldHRpbmdz
KHNldHRpbmdzKQorICAgIGVuZAorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBub2RlLmRlbWFjcm9pZnkobWFjcm9zKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUuc3Vic3RpdHV0ZShtYXBwaW5nKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBkZW1hY3JvaWZ5KCkgY29uc3RydWN0cyBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBo
YXZlIGFueSBNYWNybyAgICAgICAjCisjIG5vZGVzLCB3aGlsZSBzdWJzdGl0dXRlKCkgcmVwbGFj
ZXMgVmFyaWFibGUgbm9kZXMgd2l0aCB0aGUgZ2l2ZW4gICAgICMKKyMgbm9kZXMgaW4gdGhlIG1h
cHBpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgZGVt
YWNyb2lmeShtYWNyb3MpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAg
ICBjaGlsZC5kZW1hY3JvaWZ5KG1hY3JvcykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0
aXR1dGUobWFwcGluZykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAg
IGNoaWxkLnN1YnN0aXR1dGUobWFwcGluZykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0
aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwK
KyAgICAgIGNoaWxkLnN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICB9CisgIGVuZAorZW5k
CisKK2NsYXNzIE1hY3JvCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbXlNYXBwaW5n
ID0ge30KKyAgICBtYXBwaW5nLmVhY2hfcGFpciB7CisgICAgICB8IGtleSwgdmFsdWUgfAorICAg
ICAgdW5sZXNzIEB2YXJpYWJsZXMuaW5jbHVkZT8ga2V5CisgICAgICAgIG15TWFwcGluZ1trZXld
ID0gdmFsdWUKKyAgICAgIGVuZAorICAgIH0KKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNo
aWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobXlNYXBwaW5nKQorICAgIH0KKyAgZW5kCitl
bmQKKworY2xhc3MgVmFyaWFibGUKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBpZiBt
YXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgor
ICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBzdWJzdGl0dXRl
TGFiZWxzKG1hcHBpbmcpCisgICAgaWYgbWFwcGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxm
XQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2Vx
dWVuY2UKKyAgZGVmIHN1YnN0aXR1dGUoY29uc3RhbnRzKQorICAgIG5ld0xpc3QgPSBbXQorICAg
IG15Q29uc3RhbnRzID0gY29uc3RhbnRzLmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBp
dGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gQ29uc3REZWNsCisgICAgICAgIG15Q29uc3RhbnRz
W2l0ZW0udmFyaWFibGVdID0gaXRlbS52YWx1ZS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAg
ICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uc3Vic3RpdHV0ZShteUNvbnN0YW50cykK
KyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkK
KyAgZW5kCisgIAorICBkZWYgcmVuYW1lTGFiZWxzCisgICAgbWFwcGluZyA9IHt9CisgICAgCisg
ICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBMb2Nh
bExhYmVsCisgICAgICAgIG1hcHBpbmdbaXRlbV0gPSBMb2NhbExhYmVsLnVuaXF1ZQorICAgICAg
ZW5kCisgICAgfQorICAgIAorICAgIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgZW5kCisg
IAorICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbXlNYWNyb3MgPSBtYWNyb3MuZHVwCisg
ICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNy
bworICAgICAgICBteU1hY3Jvc1tpdGVtLm5hbWVdID0gaXRlbQorICAgICAgZW5kCisgICAgfQor
ICAgIG5ld0xpc3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAg
IGlmIGl0ZW0uaXNfYT8gTWFjcm8KKyAgICAgICAgIyBJZ25vcmUuCisgICAgICBlbHNpZiBpdGVt
LmlzX2E/IE1hY3JvQ2FsbAorICAgICAgICBtYXBwaW5nID0ge30KKyAgICAgICAgbXlNeU1hY3Jv
cyA9IG15TWFjcm9zLmR1cAorICAgICAgICByYWlzZSAiQ291bGQgbm90IGZpbmQgbWFjcm8gI3tp
dGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG15TWFjcm9zW2l0
ZW0ubmFtZV0KKyAgICAgICAgcmFpc2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxs
IHRvICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVt
Lm9wZXJhbmRzLnNpemUgPT0gbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQorICAg
ICAgICBpdGVtLm9wZXJhbmRzLnNpemUudGltZXMgeworICAgICAgICAgIHwgaWR4IHwKKyAgICAg
ICAgICBpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gVmFyaWFibGUgYW5kIG15TWFjcm9zW2l0
ZW0ub3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tp
dGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tp
ZHhdLm5hbWVdCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFi
bGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNpZiBpdGVtLm9wZXJhbmRzW2lkeF0u
aXNfYT8gTWFjcm8KKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52
YXJpYWJsZXNbaWR4XS5uYW1lXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgbWFw
cGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZh
cmlhYmxlc1tpZHhdXSA9IG5pbAorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5h
bWVdLnZhcmlhYmxlc1tpZHhdXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgIGVuZAor
ICAgICAgICB9CisgICAgICAgIG5ld0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5LnN1
YnN0aXR1dGUobWFwcGluZykuZGVtYWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMubGlz
dAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uZGVtYWNyb2lmeShteU1hY3Jv
cykKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlz
dCkuc3Vic3RpdHV0ZSh7fSkKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgbm9kZS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbnN0cnVjdCBh
IG5ldyBBU1QgdGhhdCBoYXMgb2Zmc2V0IHZhbHVlcyBpbnN0ZWFkIG9mIHN5bWJvbGljICAgICAg
ICMKKyMgb2Zmc2V0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor
Y2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgbWFw
Q2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlT2Zmc2V0cyhv
ZmZzZXRzLCBzaXplcykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldAor
ICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgb2Zmc2V0c1tzZWxm
XQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXRzW3NlbGZdKQorICAgIGVs
c2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mCisgIGRl
ZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBzaXplc1tzZWxmXQorICAg
ICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBzaXplc1tzZWxmXSkKKyAgICBlbHNlCisgICAg
ICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIG5vZGUuZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBSZXNvbHZlIGNvbnN0
YW50IHJlZmVyZW5jZXMgYW5kIGNvbXB1dGUgYXJpdGhtZXRpYyBleHByZXNzaW9ucy4gICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiBm
b2xkCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5mb2xk
CisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisg
ICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1
cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5s
ZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4s
IEBsZWZ0LnZhbHVlICsgQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1l
ZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0g
QHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRl
CisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1l
ZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlIC0gQHJpZ2h0LnZhbHVlKQorICBlbmQK
K2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVm
dC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3Mg
QGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19h
PyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICog
QHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBOZWdJbW1lZGlhdGUKKyAgZGVmIGZv
bGQKKyAgICBAY2hpbGQgPSBAY2hpbGQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAY2hp
bGQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtQGNoaWxk
LnZhbHVlKQorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyBub2RlLnJlc29sdmVBZnRlclNldHRpbmdzKG9mZnNldHMsIHNpemVzKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29tcGlsZSBhc3NlbWJseSBhZ2Fp
bnN0IGEgc2V0IG9mIG9mZnNldHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZShv
ZmZzZXRzLCBzaXplcykKKyAgICBkZW1hY3JvaWZ5KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRz
LCBzaXplcykuZm9sZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2NCBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgc3Vw
cG9ydHM4Qml0T25YODYKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIs
ICJ0MSIsICJhMSIsICJyMSIsICJ0MiIsICJ0MyIKKyAgICAgIHRydWUKKyAgICB3aGVuICJ0NCIs
ICJjZnIiCisgICAgICBmYWxzZQorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0
MCIsICJhMCIsICJyMCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAg
ICAiJWFsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWF4IgorICAgICAgd2hlbiA6aW50
CisgICAgICAgICIlZWF4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisg
ICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5
dGUKKyAgICAgICAgIiVkbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVkeCIKKyAgICAg
IHdoZW4gOmludAorICAgICAgICAiJWVkeCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAg
ICAgIGVuZAorICAgIHdoZW4gInQyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRl
CisgICAgICAgICIlY2wiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlY3giCisgICAgICB3
aGVuIDppbnQKKyAgICAgICAgIiVlY3giCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAg
ICBlbmQKKyAgICB3aGVuICJ0MyIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQor
ICAgICAgICAiJWJsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWJ4IgorICAgICAgd2hl
biA6aW50CisgICAgICAgICIlZWJ4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAg
ZW5kCisgICAgd2hlbiAidDQiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAg
ICAgICAgIiVzaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc2kiCisgICAgICB3aGVu
IDppbnQKKyAgICAgICAgIiVlc2kiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBl
bmQKKyAgICB3aGVuICJjZnIiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAg
ICAgICAgIiVkaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZGkiCisgICAgICB3aGVu
IDppbnQKKyAgICAgICAgIiVlZGkiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBl
bmQKKyAgICB3aGVuICJzcCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAg
ICAgICAiJXNwbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVzcCIKKyAgICAgIHdoZW4g
OmludAorICAgICAgICAiJWVzcCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVu
ZAorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9w
ZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2Ns
YXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIHJhaXNlIHVubGVz
cyBraW5kID09IDpkb3VibGUKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAiZmEwIiwg
ImZyIgorICAgICAgIiV4bW0wIgorICAgIHdoZW4gImZ0MSIsICJmYTEiCisgICAgICAiJXhtbTEi
CisgICAgd2hlbiAiZnQyIiwgImZhMiIKKyAgICAgICIleG1tMiIKKyAgICB3aGVuICJmdDMiLCAi
ZmEzIgorICAgICAgIiV4bW0zIgorICAgIHdoZW4gImZ0NCIKKyAgICAgICIleG1tNCIKKyAgICB3
aGVuICJmdDUiCisgICAgICAiJXhtbTUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQK
KyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtp
bmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiB4ODZPcGVyYW5kKGtp
bmQpCisgICAgIiQje3ZhbHVlfSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQor
ICAgICIje3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBkZWYgc3VwcG9y
dHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5k
KQorICAgICIje29mZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9KSIKKyAgZW5k
CisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIK
KyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBzdXBwb3J0czhCaXRPblg4Ngor
ICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zm
c2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0sICN7aW5kZXgueDg2T3BlcmFuZCg6
aW50KX0sICN7c2NhbGV9KSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisg
ICAgIioje3g4Nm9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFk
ZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAg
ZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCisKKyAg
ZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje2FkZHJlc3MudmFsdWV9IgorICBlbmQK
K2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2TGFiZWwKKyAgICBzYW5pdGl6
ZUxhYmVsTmFtZShuYW1lKQorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAg
eDg2TGFiZWwKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQorICBkZWYg
eDg2TGFiZWwKKyAgICAiX19vYV8iK25hbWVbMS4uLTFdCisgIGVuZAorICBkZWYgeDg2Q2FsbE9w
ZXJhbmQoa2luZCkKKyAgICB4ODZMYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlv
bgorICBkZWYgeDg2T3BlcmFuZHMoKmtpbmRzKQorICAgIHJhaXNlIHVubGVzcyBraW5kcy5zaXpl
ID09IG9wZXJhbmRzLnNpemUKKyAgICByZXN1bHQgPSBbXQorICAgIGtpbmRzLnNpemUudGltZXMg
eworICAgICAgfCBpZHggfAorICAgICAgcmVzdWx0IDw8IG9wZXJhbmRzW2lkeF0ueDg2T3BlcmFu
ZChraW5kc1tpZHhdKQorICAgIH0KKyAgICByZXN1bHQuam9pbigiLCAiKQorICBlbmQKKworICBk
ZWYgeDg2U3VmZml4KGtpbmQpCisgICAgY2FzZSBraW5kCisgICAgd2hlbiA6Ynl0ZQorICAgICAg
ImIiCisgICAgd2hlbiA6aGFsZgorICAgICAgInciCisgICAgd2hlbiA6aW50CisgICAgICAibCIK
KyAgICB3aGVuIDpkb3VibGUKKyAgICAgICJzZCIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAg
IGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUs
IGtpbmQsIG51bU9wZXJhbmRzKQorICAgIGlmIG51bU9wZXJhbmRzID09IDMKKyAgICAgIGlmIG9w
ZXJhbmRzWzBdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0g
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5k
KGtpbmQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAg
ICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwg
I3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFz
bS5wdXRzICJcdG1vdiN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
a2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAkYXNtLnB1
dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFu
ZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICAkYXNt
LnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhh
bmRsZVg4Nk9wKG9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhv
cGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUpCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNo
aWZ0KG9wY29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgb3Ig
b3BlcmFuZHNbMF0gPT0gUmVnaXN0ZXJJRC5mb3JOYW1lKCJ0MiIpCisgICAgICAkYXNtLnB1dHMg
Ilx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hn
bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgICAgJGFzbS5wdXRz
ICJcdCN7b3Bjb2RlfSAlY2wsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAg
ICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgJWVj
eCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2RG91YmxlQnJhbmNoKGJyYW5j
aE9wY29kZSwgbW9kZSkKKyAgICBjYXNlIG1vZGUKKyAgICB3aGVuIDpub3JtYWwKKyAgICAgICRh
c20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiA6cmV2ZXJzZQorICAg
ICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUp
fSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICBlbHNlCisgICAgICBy
YWlzZSBtb2RlLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0am5lICN7b3BlcmFu
ZHNbMl0ueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlKGtp
bmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1swXS52
YWx1ZSA9PSAwIGFuZCAoYnJhbmNoT3Bjb2RlID09ICJqZSIgb3IgYnJhbmNoT3Bjb2RlID09ICJq
bmUiKQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNpZiBvcGVyYW5kc1sxXS5pc19hPyBJbW1l
ZGlhdGUgYW5kIG9wZXJhbmRzWzFdLnZhbHVlID09IDAgYW5kIChicmFuY2hPcGNvZGUgPT0gImpl
IiBvciBicmFuY2hPcGNvZGUgPT0gImpuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2
U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UK
KyAgICAgICRhc20ucHV0cyAiXHRjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kcyhraW5kKX0iCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludEJyYW5jaChicmFuY2hPcGNvZGUsIGtp
bmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShraW5kKQorICAgICRhc20ucHV0cyAiXHQje2Jy
YW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhh
bmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmQpCisgICAgaWYgb3BlcmFuZC5zdXBwb3J0czhC
aXRPblg4NgorICAgICAgJGFzbS5wdXRzICJcdEB7c2V0T3Bjb2RlfSAje29wZXJhbmQueDg2T3Bl
cmFuZCg6Ynl0ZSl9IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAje29wZXJhbmQueDg2T3Bl
cmFuZCg6Ynl0ZSl9LCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAg
ICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSwgJWVheCIK
KyAgICAgICRhc20ucHV0cyAiXHRAe3NldE9wY29kZX0gJWFsIgorICAgICAgJGFzbS5wdXRzICJc
dG1vdnpibCAlYWwsICVlYXgiCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kLng4
Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVY
ODZJbnRDb21wYXJlU2V0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZJbnRDb21wYXJl
KGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHNbMl0pCisgIGVuZAor
ICAKKyAgZGVmIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisg
ICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiAyCisgICAgICBtYXNrID0gSW1tZWRpYXRl
Lm5ldyhjb2RlT3JpZ2luLCAtMSkKKyAgICB3aGVuIDMKKyAgICAgIG1hc2sgPSBvcGVyYW5kc1sx
XQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgIAorICAg
IGlmIG1hc2suaXNfYT8gSW1tZWRpYXRlIGFuZCBtYXNrLnZhbHVlID09IC0xCisgICAgICAkYXNt
LnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9
LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAi
XHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7bWFzay54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1
ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2
QnJhbmNoVGVzdChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQor
ICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kcy5sYXN0Lng4NkxhYmVs
fSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0VGVzdChzZXRPcGNvZGUsIGtpbmQpCisg
ICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJh
bmRzLmxhc3QpCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wQnJhbmNoKG9wY29kZSwgYnJh
bmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwg
a2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hl
biA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1
bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVj
dAorICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0
Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9w
Y29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5kcy5zaXplID09IDQgYW5kIG9wZXJhbmRzWzFdID09
IG9wZXJhbmRzWzJdCisgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNl
CisgICAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcygic3ViIiwga2luZCwgb3BlcmFuZHMu
c2l6ZSAtIDEpCisgICAgZW5kCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiA0Cisg
ICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1bXBUYXJn
ZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAg
IGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0Lng4Nkxh
YmVsfSIKKyAgZW5kCisgIAorICBkZWYgbG93ZXJYODYKKyAgICBjYXNlIG9wY29kZQorICAgIHdo
ZW4gImFkZGkiLCAiYWRkcCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFu
ZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5p
c19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBS
ZWdpc3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAgICAgICB1
bmxlc3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICRhc20ucHV0cyAi
XHRtb3ZsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAk
YXNtLnB1dHMgIlx0bGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAg
ZW5kCisgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/
IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lz
dGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQK
KyAgICAgICAgJGFzbS5wdXRzICJcdGxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhu
aWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3t4ODZP
cGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAgd2hlbiAi
YW5kaSIsICJhbmRwIgorICAgICAgaGFuZGxlWDg2T3AoImFuZGwiLCA6aW50KQorICAgIHdoZW4g
ImxzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2FsbCIsIDppbnQpCisgICAgd2hlbiAi
bXVsaSIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8g
SW1tZWRpYXRlCisgICAgICAgICRhc20ucHV0cyAiXHRpbXVsbCAje3g4Nk9wZXJhbmRzKDppbnQs
IDppbnQsIDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgaGFuZGxlWDg2T3AoImltdWxsIiwg
OmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gIm5lZ2kiCisgICAgICAkYXNtLnB1dHMgIlx0bmVn
bCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJub3RpIgorICAgICAgJGFzbS5wdXRz
ICJcdG5vdGwgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAib3JpIiwgIm9ycCIKKyAg
ICAgIGhhbmRsZVg4Nk9wKCJvcmwiLCA6aW50KQorICAgIHdoZW4gInJzaGlmdCIKKyAgICAgIGhh
bmRsZVg4NlNoaWZ0KCJzYXJsIiwgOmludCkKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgIGhh
bmRsZVg4NlNoaWZ0KCJzaHJsIiwgOmludCkKKyAgICB3aGVuICJzdWJpIiwgInN1YnAiCisgICAg
ICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisg
ICAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50
KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAg
IGhhbmRsZVg4Nk9wKCJzdWJsIiwgOmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gInhvcmkiLCAi
eG9ycCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJ4b3JsIiwgOmludCkKKyAgICB3aGVuICJsb2FkaSIs
ICJzdG9yZWkiLCAibG9hZHAiLCAic3RvcmVwIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4
ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNtLnB1
dHMgIlx0bW92emJsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImxvYWRoIgorICAgICAgJGFzbS5wdXRz
ICJcdG1vdnp3bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJzdG9yZWIiCisgICAgICAkYXNtLnB1dHMg
Ilx0bW92YiAje3g4Nk9wZXJhbmRzKDpieXRlLCA6Ynl0ZSl9IgorICAgIHdoZW4gImxvYWRkIiwg
Im1vdmVkIiwgInN0b3JlZCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAje3g4Nk9wZXJhbmRz
KDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJhZGRkIgorICAgICAgJGFzbS5wdXRzICJc
dGFkZHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImRpdmQi
CisgICAgICAkYXNtLnB1dHMgIlx0ZGl2c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91Ymxl
KX0iCisgICAgd2hlbiAic3ViZCIKKyAgICAgICRhc20ucHV0cyAiXHRzdWJzZCAje3g4Nk9wZXJh
bmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJtdWxkIgorICAgICAgJGFzbS5wdXRz
ICJcdG11bHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInNx
cnRkIgorICAgICAgJGFzbS5wdXRzICJcdHNxcnRzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4g
ImNpMmQiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVu
ICJiZGVxIgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZQorICAgICAgJGFz
bS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAj
e0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkueDg2TGFiZWx9Igor
ICAgICAgJGFzbS5wdXRzICJcdGplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIG9w
ZXJhbmRzWzJdKS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAg
ICB3aGVuICJiZG5lcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiam5lIiwgOm5vcm1h
bCkKKyAgICB3aGVuICJiZGd0IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpu
b3JtYWwpCisgICAgd2hlbiAiYmRndGVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJq
YWUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHQiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFu
Y2goImphIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdGVxIgorICAgICAgaGFuZGxlWDg2RG91
YmxlQnJhbmNoKCJqYWUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGVxdW4iCisgICAgICBoYW5k
bGVYODZEb3VibGVCcmFuY2goImplIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZG5lcXVuIgorICAg
ICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZQorICAgICAgaXNFcXVhbCA9IExvY2Fs
TGFiZWwudW5pcXVlCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9Igor
ICAgICAgJGFzbS5wdXRzICJcdGpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlz
VW5vcmRlcmVkKS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tMYWJlbFJlZmVy
ZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNFcXVhbCkueDg2TGFiZWx9IgorICAgICAgaXNVbm9yZGVy
ZWQubG93ZXIoIlg4NiIpCisgICAgICAkYXNtLnB1dHMgIlx0am1wICN7b3BlcmFuZHNbMl0ueDg2
TGFiZWx9IgorICAgICAgaXNFcXVhbC5sb3dlcigiWDg2IikKKyAgICB3aGVuICJiZGd0dW4iCisg
ICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRn
dGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpyZXZlcnNlKQorICAg
IHdoZW4gImJkbHR1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6bm9ybWFs
KQorICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUi
LCA6bm9ybWFsKQorICAgIHdoZW4gImJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHRzZDJz
aSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGNtcGwgJDB4ODAwMDAwMDAgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje29wZXJh
bmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2
dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJjZDJpIgorICAgICAgJGFzbS5wdXRzICJc
dGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdHRlc3RsICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICAk
YXNtLnB1dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXht
bTciCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje29wZXJhbmRzWzJdLng4
NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqbmUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0i
CisgICAgd2hlbiAibW92ZHoiCisgICAgICAkYXNtLnB1dHMgIlx0eG9ycGQgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUp
fSIKKyAgICB3aGVuICJwb3AiCisgICAgICAkYXNtLnB1dHMgIlx0cG9wICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicHVzaCIKKyAgICAgICRhc20ucHV0cyAiXHRw
dXNoICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibW92ZSIsICJz
eGkycCIsICJ6eGkycCIKKyAgICAgIHVubGVzcyBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1sxXQor
ICAgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAg
ICAgIGVuZAorICAgIHdoZW4gIm5vcCIKKyAgICAgICRhc20ucHV0cyAiXHRub3AiCisgICAgd2hl
biAiYmllcSIsICJicGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDppbnQpCisg
ICAgd2hlbiAiYmluZXEiLCAiYnBuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIs
IDppbnQpCisgICAgd2hlbiAiYmlhIiwgImJwYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgi
amEiLCA6aW50KQorICAgIHdoZW4gImJpYWVxIiwgImJwYWVxIgorICAgICAgaGFuZGxlWDg2SW50
QnJhbmNoKCJqYWUiLCA6aW50KQorICAgIHdoZW4gImJpYiIsICJicGIiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImpiIiwgOmludCkKKyAgICB3aGVuICJiaWJlcSIsICJicGJlcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmludCkKKyAgICB3aGVuICJiaWd0IiwgImJwZ3Qi
CisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmludCkKKyAgICB3aGVuICJiaWd0ZXEi
LCAiYnBndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6aW50KQorICAgIHdo
ZW4gImJpbHQiLCAiYnBsdCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6aW50KQor
ICAgIHdoZW4gImJpbHRlcSIsICJicGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImps
dGVxIiwgOmludCkKKyAgICB3aGVuICJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJq
ZSIsIDpieXRlKQorICAgIHdoZW4gImJibmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJq
bmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImph
IiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImph
ZSIsIDpieXRlKQorICAgIHdoZW4gImJiYiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIi
LCA6Ynl0ZSkKKyAgICB3aGVuICJiYmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamJl
IiwgOmJ5dGUpCisgICAgd2hlbiAiYmJndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamci
LCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpn
ZSIsIDpieXRlKQorICAgIHdoZW4gImJibHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImps
IiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJq
bHRlcSIsIDpieXRlKQorICAgIHdoZW4gImJ0aW8iLCAiYnRwbyIKKyAgICAgIGhhbmRsZVg4NkJy
YW5jaFRlc3QoImpvIiwgOmludCkKKyAgICB3aGVuICJidGlzIiwgImJ0cHMiCisgICAgICBoYW5k
bGVYODZCcmFuY2hUZXN0KCJqcyIsIDppbnQpCisgICAgd2hlbiAiYnRpeiIsICJidHB6IgorICAg
ICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6aW50KQorICAgIHdoZW4gImJ0aW56IiwgImJ0
cG56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmludCkKKyAgICB3aGVuICJi
dGlvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6Ynl0ZSkKKyAgICB3aGVuICJi
dGlzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6Ynl0ZSkKKyAgICB3aGVuICJi
dGl6IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6Ynl0ZSkKKyAgICB3aGVuICJi
dGlueiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDpieXRlKQorICAgIHdoZW4g
ImptcCIKKyAgICAgICRhc20ucHV0cyAiXHRqbXAgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFu
ZCg6aW50KX0iCisgICAgd2hlbiAiYmFkZGlvIiwgImJhZGRwbyIKKyAgICAgIGhhbmRsZVg4Nk9w
QnJhbmNoKCJhZGQiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJhZGRpcyIsICJiYWRkcHMiCisg
ICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJiYWRk
aXoiLCAiYmFkZHB6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZCIsICJqeiIsIDppbnQp
CisgICAgd2hlbiAiYmFkZGlueiIsICJiYWRkcG56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2go
ImFkZCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbyIKKyAgICAgIGhhbmRsZVg4NlN1
YkJyYW5jaCgiam8iLCA6aW50KQorICAgIHdoZW4gImJzdWJpcyIKKyAgICAgIGhhbmRsZVg4NlN1
YkJyYW5jaCgianMiLCA6aW50KQorICAgIHdoZW4gImJzdWJpeiIKKyAgICAgIGhhbmRsZVg4NlN1
YkJyYW5jaCgianoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbnoiCisgICAgICBoYW5kbGVYODZT
dWJCcmFuY2goImpueiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlvIgorICAgICAgaGFuZGxlWDg2
T3BCcmFuY2goIm11bCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYm11bGlzIgorICAgICAgaGFu
ZGxlWDg2T3BCcmFuY2goIm11bCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm11bGl6IgorICAg
ICAgaGFuZGxlWDg2T3BCcmFuY2goIm11bCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlu
eiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJtdWwiLCAiam56IiwgOmludCkKKyAgICB3aGVu
ICJib3JpbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvciIsICJqbyIsIDppbnQpCisgICAg
d2hlbiAiYm9yaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3IiLCAianMiLCA6aW50KQor
ICAgIHdoZW4gImJvcml6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9yIiwgImp6IiwgOmlu
dCkKKyAgICB3aGVuICJib3JpbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3IiLCAiam56
IiwgOmludCkKKyAgICB3aGVuICJicmVhayIKKyAgICAgICRhc20ucHV0cyAiXHRpbnQgJDMiCisg
ICAgd2hlbiAiY2FsbCIKKyAgICAgICRhc20ucHV0cyAiXHRjYWxsICN7b3BlcmFuZHNbMF0ueDg2
Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInJldCIKKyAgICAgICRhc20ucHV0cyAiXHRy
ZXQiCisgICAgd2hlbiAiY2llcSIsICJjcGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNl
dCgic2V0ZSIsIDppbnQpCisgICAgd2hlbiAiY2luZXEiLCAiY3BuZXEiCisgICAgICBoYW5kbGVY
ODZJbnRDb21wYXJlU2V0KCJzZXRuZSIsIDppbnQpCisgICAgd2hlbiAiY2lhIiwgImNwYSIKKyAg
ICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGEiLCA6aW50KQorICAgIHdoZW4gImNpYWVx
IiwgImNwYWVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YWUiLCA6aW50KQor
ICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRi
IiwgOmludCkKKyAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAgIGhhbmRsZVg4NkludENv
bXBhcmVTZXQoInNldGJlIiwgOmludCkKKyAgICB3aGVuICJjaWd0IiwgImNwZ3QiCisgICAgICBo
YW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnIiwgOmludCkKKyAgICB3aGVuICJjaWd0ZXEiLCAi
Y3BndGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0Z2UiLCA6aW50KQorICAg
IHdoZW4gImNpbHQiLCAiY3BsdCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGwi
LCA6aW50KQorICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRD
b21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisgICAgd2hlbiAidGlvIgorICAgICAgaGFuZGxlWDg2
U2V0VGVzdCgic2V0byIsIDppbnQpCisgICAgd2hlbiAidGlzIgorICAgICAgaGFuZGxlWDg2U2V0
VGVzdCgic2V0cyIsIDppbnQpCisgICAgd2hlbiAidGl6IgorICAgICAgaGFuZGxlWDg2U2V0VGVz
dCgic2V0eiIsIDppbnQpCisgICAgd2hlbiAidGlueiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3Qo
InNldG56IiwgOmludCkKKyAgICB3aGVuICJ0Ym8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJz
ZXRvIiwgOmJ5dGUpCisgICAgd2hlbiAidGJzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0
cyIsIDpieXRlKQorICAgIHdoZW4gInRieiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoi
LCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ym56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoi
LCA6Ynl0ZSkKKyAgICB3aGVuICJwZWVrIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3tvcGVy
YW5kc1swXS52YWx1ZSAqIDR9KCVlc3ApLCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgIHdoZW4gInBva2UiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLnZhbHVlICogNH0oJWVzcCkiCisgICAg
d2hlbiAiY2RxaSIKKyAgICAgICRhc20ucHV0cyAiXHRjZHEiCisgICAgd2hlbiAiaWRpdmkiCisg
ICAgICAkYXNtLnB1dHMgIlx0aWRpdmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICB3aGVuICJmaWkyZCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisg
ICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAl
eG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwc2xscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5w
dXRzICJcdHBvciAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAg
ICB3aGVuICJmZDJpaSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAkYXNtLnB1dHMgIlx0bW92c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwg
JXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cHNybHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20u
cHV0cyAiXHRtb3ZzZCAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICBlbHNlCisgICAgICByYWlzZSAiQmFkIG9wY29kZTogI3tvcGNvZGV9IgorICAgIGVuZAorICBl
bmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCShyZXZpc2lvbiAxMDQ0MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgRGVidWdnZXI7CiAgICAgY2xhc3MgRXZhbENvZGVCbG9jazsKICAgICBj
bGFzcyBGdW5jdGlvbkNvZGVCbG9jazsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsK
IApAQCAtMzE5LDYgKzMyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFz
cyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5
cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC0zODQsNiArMzg2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJh
c2U7CiAKQEAgLTQ1Myw2ICs0NTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1
bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAx
MDQ0MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
SlNBcnJheTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBzdHJ1Y3Qg
U3BhcnNlQXJyYXlFbnRyeSA6IHB1YmxpYyBXcml0ZUJhcnJpZXI8VW5rbm93bj4gewogICAgICAg
ICBTcGFyc2VBcnJheUVudHJ5KCkgOiBhdHRyaWJ1dGVzKDApIHt9CkBAIC0xMDQsNiArMTA1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwcm90ZWN0ZWQ6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTA0NDEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDkgKzM2LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTR2xv
YmFsT2JqZWN0OwotICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3Bl
cnR5TmFtZUFycmF5OworICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGVudW0gRW51bWVyYXRp
b25Nb2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywKQEAgLTE2NCw2ICsx
NjUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IENsYXNzSW5m
byogbV9jbGFzc0luZm87CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0
dXJlOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oCShyZXZpc2lvbiAxMDQ0MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgSlNBY3RpdmF0
aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZUNv
ZGU7CiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0xNDAsNiArMTQxLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5l
KCkgY29uc3Q7CiAKICAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lvbiAxMDQ0MTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5
KQpAQCAtMzAsMTUgKzMwLDE1IEBACiAjZGVmaW5lIEpTR2xvYmFsRGF0YV9oCiAKICNpbmNsdWRl
ICJDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSW50cmluc2ljLmgi
CiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxs
b2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIlN0cm9uZy5oIgorI2luY2x1
ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNWYWx1
ZS5oIgogI2luY2x1ZGUgIk51bWVyaWNTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdz
LmgiCisjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVGVybWluYXRvci5oIgogI2luY2x1
ZGUgIlRpbWVvdXRDaGVja2VyLmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgpAQCAtNjUsNiAr
NjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBj
bGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBLZXl3b3JkczsKKyAgICBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBQYXJz
ZXJBcmVuYTsKICAgICBjbGFzcyBSZWdFeHBDYWNoZTsKQEAgLTM0OSw2ICszNTAsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICN1bmRlZiByZWdpc3RlclR5cGVkQXJyYXlGdW5jdGlvbgogCiAgICAgcHJp
dmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAg
ICAgCiAgICAgICAgIEpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBl
LCBIZWFwU2l6ZSk7CiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEqJiBzaGFyZWRJbnN0YW5j
ZUludGVybmFsKCk7CiAgICAgICAgIHZvaWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNp
b24gMTA0NDEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAg
Y2xhc3MgR2xvYmFsQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
ICAgICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2Rl
QmxvY2s7CiAgICAgY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CkBAIC0zMzUsNiArMzM2LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9w
ZXJ0eUluZm8qLCBpbnQgY291bnQpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBG
b2xkIHJlc2V0IGludG8gaW5pdC4KICAgICAgICAgdm9pZCBpbml0KEpTT2JqZWN0KiB0aGlzVmFs
dWUpOwogICAgICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTA0NDEzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7
CiAgICAgY2xhc3MgSGFzaEVudHJ5OwogICAgIGNsYXNzIEludGVybmFsRnVuY3Rpb247CisgICAg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE1hcmtlZEJsb2NrOwogICAg
IGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsK
QEAgLTI2MCw2ICsyNjEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNPYmplY3QoSlNH
bG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpOwog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICAgICAgCiAgICAgICAgIC8vIE5vYm9keSBzaG91bGQgZXZlciBhc2sgYW55IG9mIHRo
ZXNlIHF1ZXN0aW9ucyBvbiBzb21ldGhpbmcgYWxyZWFkeSBrbm93biB0byBiZSBhIEpTT2JqZWN0
LgogICAgICAgICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyOwogICAgICAgICB1c2lu
ZyBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyOwpAQCAtMzcxLDYgKzM3NCw4IEBAIENPTVBJTEVfQVNT
RVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJv
eShKU0NlbGwqKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAg
ICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQog
ICAgICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAxMDQ0MTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJZGVu
dGlmaWVyOwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIAogICAgIGNsYXNzIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IgOiBwdWJsaWMgSlNDZWxs
IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTk2LDYgKzk3LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJy
YXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7CiAKICAgICAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9jYWNoZWRTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDEwNDQxMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNTdHJpbmc7CisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoSlNHbG9i
YWxEYXRhKik7CiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKik7CkBAIC0y
NDEsNiArMjQyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0
Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICB2
b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2b2lkIHJlc29sdmVS
b3BlU2xvd0Nhc2U4KExDaGFyKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93
Q2FzZShVQ2hhciopIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZUluZm8uaAkocmV2aXNpb24gMTA0NDEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCiAg
ICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxOyAvLyBX
ZWJDb3JlIHVzZXMgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCB0byBtYWtlIGRvY3VtZW50LmFsbCB1
bmRldGVjdGFibGUuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEltcGxlbWVudHNIYXNJbnN0
YW5jZSA9IDEgPDwgMTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJpZGVzSGFzSW5z
dGFuY2UgPSAxIDw8IDI7CkBAIC04Nyw2ICs4OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MxKHVuc2lnbmVkIGZs
YWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPD0gKDEgPDwgNykpOyByZXR1cm4gbV9mbGFncyAmIGZs
YWc7IH0KICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MyKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsg
QVNTRVJUKGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1cm4gbV9mbGFnczIgJiAoZmxhZyA+PiA4KTsg
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJs
ZU9iamVjdC5oCShyZXZpc2lvbiAxMDQ0MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCwxMiBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
ICAgICBjbGFzcyBSZWdpc3RlcjsKIAogICAgIGNsYXNzIEpTVmFyaWFibGVPYmplY3QgOiBwdWJs
aWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBwdWJsaWM6CiAgICAg
ICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gMTA0NDEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MCw2ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAg
ICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9yOwogICAg
IGNsYXNzIFNsb3RWaXNpdG9yOwogICAgIApAQCAtOTEsNiArOTIsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsK
IAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CisgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxh
Z3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMDQ0MTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDUsNiArNDUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAgICBjbGFzcyBQcm9w
ZXJ0eU5hbWVBcnJheURhdGE7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CkBAIC0xOTYsNiAr
MTk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNv
bnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5
cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERh
dGEmKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVyZSop
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFp
bi5oCShyZXZpc2lvbiAxMDQ0MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IFN0cnVjdHVyZTsKIAogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluIDogcHVibGljIEpTQ2VsbCB7
CkBAIC03NCw2ICs3NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2
YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAg
ICAKICAgICAgICAgU3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAg
ICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIE93bkFycmF5UHRy
PFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAxMDQ0MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxNiw2ICs5MTYsMTIgQEAK
ICNkZWZpbmUgRU5BQkxFX0pJVCAxCiAjZW5kaWYKIAorLyogT24gc29tZSBvZiB0aGUgcGxhdGZv
cm1zIHdoZXJlIHdlIGhhdmUgYSBKSVQsIHdlIHdhbnQgdG8gYWxzbyBoYXZlIHRoZSAKKyAgIGxv
dy1sZXZlbCBpbnRlcnByZXRlci4gKi8KKyNpZiBFTkFCTEUoSklUKSAmJiBQTEFURk9STShNQUMp
ICYmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIEVOQUJMRV9MTElOVCAxCisjZW5kaWYKKwog
I2lmICFkZWZpbmVkKEVOQUJMRV9ERkdfSklUKSAmJiBFTkFCTEUoSklUKQogLyogRW5hYmxlIHRo
ZSBERkcgSklUIG9uIFg4NiBhbmQgWDg2XzY0LiAgT25seSB0ZXN0ZWQgb24gTWFjIGFuZCBHTlUv
TGludXguICovCiAjaWYgKENQVShYODYpIHx8IENQVShYODZfNjQpKSAmJiAoUExBVEZPUk0oTUFD
KSB8fCBPUyhMSU5VWCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9T
dHJpbmdJbXBsLmgJKHJldmlzaW9uIDEwNDQxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlN0cmluZyAqIENGU3RyaQogLy8gTGFuZGluZyB0aGUgZmls
ZSBtb3ZlcyBpbiBvbmUgcGF0Y2gsIHdpbGwgZm9sbG93IG9uIHdpdGggcGF0Y2hlcyB0byBjaGFu
Z2UgdGhlIG5hbWVzcGFjZXMuCiBuYW1lc3BhY2UgSlNDIHsKIHN0cnVjdCBJZGVudGlmaWVyQ1N0
cmluZ1RyYW5zbGF0b3I7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gc3RydWN0IElkZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjsKIHN0cnVj
dCBJZGVudGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9yOwogfQpAQCAtMzMyLDYgKzMzMyw4
IEBAIHB1YmxpYzoKICAgICB9CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICAvLyBUaGUgaGlnaCBiaXRzIG9mICdoYXNoJyBhcmUg
YWx3YXlzIGVtcHR5LCBidXQgd2UgcHJlZmVyIHRvIHN0b3JlIG91ciBmbGFncwogICAgIC8vIGlu
IHRoZSBsb3cgYml0cyBiZWNhdXNlIGl0IG1ha2VzIHRoZW0gc2xpZ2h0bHkgbW9yZSBlZmZpY2ll
bnQgdG8gYWNjZXNzLgogICAgIC8vIFNvLCB3ZSBzaGlmdCBsZWZ0IGFuZCByaWdodCB3aGVuIHNl
dHRpbmcgYW5kIGdldHRpbmcgb3VyIGhhc2ggY29kZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121617</attachid>
            <date>2012-01-08 21:14:45 -0800</date>
            <delta_ts>2012-01-08 23:36:38 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_3.diff</filename>
            <type>text/plain</type>
            <size>257799</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0NDI5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBA
CisyMDEyLTAxLTA4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SlNDIHNob3VsZCBiZSBhIHRyaXBsZS10aWVyIFZNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAw
Nzk2OTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAor
ICAgICAgICBXT1JLIElOIFBST0dSRVNTLgorCisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5o
OgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAqIGJ5dGVjb2RlL0lu
c3RydWN0aW9uLmg6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAgICAg
KiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3Rl
ckZpbGUuaDoKKyAgICAgICAgKiBsbGludDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRF
eGNlcHRpb25zLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNhbGxUb1Rocm93KToKKyAgICAgICAgKiBsbGludC9M
TEludEV4Y2VwdGlvbnMuaDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9IRUxQRVJfREVDTCk6CisgICAg
ICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludE9mZnNldHNF
eHRyYWN0b3I6OmR1bW15KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtOiBBZGRlZC4K
KyAgICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtL2FzbS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc3QucmI6IEFkZGVkLgor
ICAgICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxp
bmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYjogQWRkZWQuCisgICAgICAgICogb2Zm
bGluZWFzbS9pbnN0cnVjdGlvbnMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb2Zm
c2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20v
b2Zmc2V0cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9wYXJzZXIucmI6IEFkZGVk
LgorICAgICAgICAqIG9mZmxpbmVhc20vcmVnaXN0ZXJzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBv
ZmZsaW5lYXNtL3NldHRpbmdzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3RyYW5z
Zm9ybS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYucmI6IEFkZGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0
aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAgICAgICAoSlND
OjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICog
cnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTVHlwZUluZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAg
ICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVy
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisKIDIwMTItMDEt
MDggIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgV2luQ0UgYnVp
bGQgZml4IGFmdGVyIHIxMDQ0MTUuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxNSBA
QAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICov
CisJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovID0geworCQkJ
aXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBG
NDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgK
KwkJCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2Vz
ICovLAorCQkJKTsKKwkJCW5hbWUgPSAiTExJbnQgT2Zmc2V0cyI7CisJCQlwcm9kdWN0TmFtZSA9
ICJEZXJpdmVkIFNvdXJjZXMiOworCQl9OwogCQk2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyog
RGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OwogCQkJ
YnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDY1RkIzRjc3MDlEMTFFQkQwMEY0OURFQiAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVyaXZlZCBTb3Vy
Y2VzIiAqLzsKQEAgLTE0LDYgKzIzLDkgQEAKIAkJCQk2NUZCM0Y2NTA5RDExRTkxMDBGNDlERUIg
LyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTVEMzVERUUxMEM3QzE0MEIwMDg2
NDhCMiAvKiBHZW5lcmF0ZSBEVHJhY2UgaGVhZGVyICovLAogCQkJKTsKKwkJCWRlcGVuZGVuY2ll
cyA9ICgKKwkJCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5j
eSAqLywKKwkJCSk7CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlwcm9kdWN0TmFt
ZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQl9OwpAQCAtNTgsNiArNzAsMTEgQEAKIAkJMEY0MjZB
NDkxNDYwQ0JCNzAwMTMxRjhGIC8qIFZpcnR1YWxSZWdpc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MjZBNDYxNDYwQ0JBQjAwMTMxRjhGIC8q
IFZpcnR1YWxSZWdpc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGNDI2QTRCMTQ2MENENkUwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0QTE0NjBD
RDZCMDAxMzFGOEYgLyogRGF0YUZvcm1hdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBMaXN0YWJs
ZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBBMzE0QkE3RjhE
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNl
cHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RjE0QkE3RjgyMDBC
RkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZF
MjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEE3
MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTExNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi87IH07CisJCTBGNDY4MEE4MTRCQTdG
QUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50
RXhjZXB0aW9ucy5jcHAgKi87IH07CiAJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRF
eGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4MDgzMTRCQTU3MzEw
MEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRp
b25zLmNwcCAqLzsgfTsKIAkJMEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM2MCw3
ICszNzcsNyBAQAogCQk4NkI5OUFFMzExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI5OUFFMTEx
N0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZCQjA5QzAxMzhFMzgxQjAwNTY3MDJGIC8qIERG
R1JlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZCQjA5QkUxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwICovOyB9OwogCQk4
NkJCMDlDMTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8q
IERGR1JlcGF0Y2guaCAqLzsgfTsKLQkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3Jv
QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgfTsKKwkJ
ODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RG
NTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJs
ZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODZDNTY4REQxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCAqLzsgfTsK
IAkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNF
RTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwogCQk4NkM1NjhFMjExQTIx
M0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3Nl
bWJsZXIuaCAqLzsgfTsKQEAgLTcyMCw2ICs3MzcsMjAgQEAKIC8qIEVuZCBQQlhCdWlsZEZpbGUg
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwor
CQkwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0g
eworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0g
MDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlU
eXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwQTkxNEJBN0ZEOTAwQkZF
MjcyOworCQkJcmVtb3RlSW5mbyA9ICJMTEludCBPZmZzZXRzIjsKKwkJfTsKKwkJMEY0NjgwQjMx
NEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9
IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4
NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJ
CQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MjsKKwkJCXJl
bW90ZUluZm8gPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCX07CiAJCTE0MTIxMTM1MEE0
ODc5NjEwMDQ4MDI1NSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhDb250YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQw
MjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC03OTMsNiArODI0LDE1IEBACiAv
KiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29w
eUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAv
KiBDb3B5RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAvdXNyL3NoYXJlL21h
bi9tYW4xLzsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMgPSAoCisJCQkpOwor
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCX07CiAJCTVEQkIx
NTExMTMxRDBCMTMwMDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0gewogCQkJaXNh
ID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOwpAQCAt
ODQzLDYgKzg4MywxMiBAQAogCQkwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyogVmlydHVhbFJl
Z2lzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpcnR1YWxSZWdpc3Rl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQyNkE0QTE0NjBDRDZCMDAxMzFG
OEYgLyogRGF0YUZvcm1hdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEYXRh
Rm9ybWF0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDMxNzM2MTQ2QkFDNjUw
MDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNo
LW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0
c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMEY0Njgw
OUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuY3BwOyBwYXRoID0gbGxpbnQv
TExJbnRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0Njgw
OUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuaDsgcGF0aCA9IGxsaW50L0xMSW50RXhj
ZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RjE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IExMSW50SGVscGVycy5jcHA7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIg
LyogTExJbnRIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50
SGVscGVycy5oOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpJVEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA4
MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKSVRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNUYwOENDMTQ2QkU2MDIwMDA0NzJBOSAvKiBERkdCeXRlQ29kZUNhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0J5dGVDb2RlQ2FjaGUuaDsgcGF0aCA9IGRm
Zy9ERkdCeXRlQ29kZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQ2
LDYgKzE1OTIsMTMgQEAKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyog
QmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4QzE0QkE3
RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NC
dWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0g
KAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9
OwogCQkxNDEyMTExRTBBNDg3OTNDMDA0ODAyNTUgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKQEAgLTE2MDQsNiArMTY1Nyw3IEBACiAJCQkJMTQxMjExMjAwQTQ4NzkzQzAwNDgwMjU1
IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkg
Ki8sCiAJCQkJNjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJ
MEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywK
IAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtMTYzMiw2ICsxNjg2LDcgQEAKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2
YVNjcmlwdENvcmVQcmVmaXguaCAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyog
anNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8s
CisJCQkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovLAogCQkJCTE0MzJFQkQ3
MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlG
IC8qIGFzc2VtYmxlciAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNv
ZGUgKi8sCkBAIC0xNjcwLDYgKzE3MjUsMTggQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNU
YWJzID0gMDsKIAkJfTsKKwkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2ODA5RDE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8sCisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50SGVscGVycy5oICovLAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGlu
dDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3MjYw
MDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0zMDEwLDYgKzMwNzcsOCBAQAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCNDMxMkRCOEE4MTAwQTlG
RTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1RjE0
QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CkBAIC0zMDE3LDYgKzMwODYsMjQgQEAKIC8qIEVuZCBQQlhIZWFkZXJzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisJ
CTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8g
PSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0
ID0gMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovOworCQkJYnVp
bGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8s
CisJCQkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJMEY0
NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1
bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2ODBCMjE0QkE4MTE1
MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CisJCQluYW1lID0gSlND
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdE5hbWUgPSBKU0NMTEludE9mZnNldHNF
eHRyYWN0b3I7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcy
IC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5h
cHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CiAJCTE0MTIxMTFGMEE0ODc5M0MwMDQ4MDI1
NSAvKiBtaW5pZG9tICovID0gewogCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwogCQkJYnVpbGRD
b25maWd1cmF0aW9uTGlzdCA9IDE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi87CkBAIC0zMTQ3
LDExICszMjM0LDI5IEBACiAJCQkJMTRCRDU5QkUwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkg
Ki8sCiAJCQkJOTMyRjVCREEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLywKIAkJCQk2NTExMjJG
NzE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RTE0QkE3RTVF
MDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAorCQkJCTBGNDY4MEE5MTRC
QTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovLAogCQkJKTsKIAkJfTsKIC8qIEVuZCBQ
QlhQcm9qZWN0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KKwkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERlcml2
ZWQgU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlp
bnB1dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL2xsaW50L0xvd0xldmVsQXNzZW1ibGVyLmFz
bSIsCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMiOworCQkJb3V0
cHV0UGF0aHMgPSAoCisJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMvTExJ
bnREZXNpcmVkT2Zmc2V0cy5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9
ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvXCJcblxuL3Vz
ci9iaW4vZW52IHJ1YnkgXCIke1NSQ1JPT1R9L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4
dHJhY3Rvci5yYlwiIDwgXCIke1NSQ1JPT1R9L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
XCIgPiBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zm
c2V0cy5oXCJcbiI7CisJCX07CiAJCTM3MTNGMDE0MTQyOTA1MjQwMDM2Mzg3RiAvKiBDaGVjayBG
b3IgSW5hcHByb3ByaWF0ZSBPYmplY3RpdmUtQyBDbGFzcyBOYW1lcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CkBAIC0zMjkyLDYgKzMzOTcsMTQgQEAKIC8qIEVuZCBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhh
c2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICov
CisJCTBGNDY4MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0g
UEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owor
CQkJZmlsZXMgPSAoCisJCQkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUQwQTQ4NzkzQzAwNDgwMjU1
IC8qIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zNTQ5LDYgKzM2NjIsOCBAQAogCQkJCTg2
NzA0Qjg2MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg2NzA0Qjg5MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVs
cGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyog
TExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MDgzMTRCQTU3MzEw
MEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMzU2NCw2ICszNjc5LDE2
IEBACiAvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcy
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRl
bmN5OworCQkJdGFyZ2V0ID0gMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNl
dHMgKi87CisJCQl0YXJnZXRQcm94eSA9IDBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5j
eTsKKwkJCXRhcmdldCA9IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNl
dHNFeHRyYWN0b3IgKi87CisJCQl0YXJnZXRQcm94eSA9IDBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3
MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CiAJCTE0MTIxMTM2MEE0ODc5NjEw
MDQ4MDI1NSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0
RGVwZW5kZW5jeTsKIAkJCXRhcmdldCA9IDkzMkY1QjNFMDgyMkExQzcwMDczNjk3NSAvKiBKYXZh
U2NyaXB0Q29yZSAqLzsKQEAgLTM2MTcsNiArMzc0MiwxNDggQEAKIC8qIEVuZCBQQlhUYXJnZXRE
ZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2Vj
dGlvbiAqLworCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxX
QVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFS
RF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0NDX0NfTEFOR1VB
R0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlH
Q0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xF
VkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVC
VUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZTUJPTFNfUFJJ
VkFURV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMu
bGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBO
TzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0ND
X1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklB
QkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQku
LAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwK
KwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExP
WU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gWUVTOworCQkJCVBS
T0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJ
CQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIp
L0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0g
RGVidWc7CisJCX07CisJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovID0g
eworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0gewor
CQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNf
U1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJV
R19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5H
VUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0g
WUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFf
MDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19X
QVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9S
RVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJ
CQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwK
KwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMkKEhFQURFUl9TRUFSQ0hf
UEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJ
CQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4
OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5h
bWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmls
aW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0g
IiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsK
KwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlH
Q0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENF
UFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZt
LmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POwor
CQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FS
Tl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUg
PSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJ
CQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJ
CQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVO
VF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJ
CQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBp
Y3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFU
SFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2ODA5OTE0QkE3
RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFU
SFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNP
UFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3
YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJ
CQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNv
bS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJf
QklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQ
RVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0ND
X1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2Fy
Y2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7
CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUg
PSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFE
RVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNl
dHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247
CisJCX07CisJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9E
VUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1
ZzsKKwkJfTsKKwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
UFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0g
UmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAq
LyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJ
CW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQ
cm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7
CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTNBMEE0ODc5ODQw
MDQ4MDI1NSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwog
CQkJYnVpbGRTZXR0aW5ncyA9IHsKQEAgLTM4NTgsNiArNDEyNSwyNyBAQAogLyogRW5kIFhDQnVp
bGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlz
dCBzZWN0aW9uICovCisJCTBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9y
IiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3Vy
YXRpb25zID0gKAorCQkJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLywKKwkJ
CQkwRjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODA5ODE0
QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MDk5MTRCQTdFNUUwMEJG
RTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNW
aXNpYmxlID0gMDsKKwkJfTsKKwkJMEY0NjgwQUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJMTEludCBPZmZzZXRzIiAq
LyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRp
b25zID0gKAorCQkJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLywKKwkJCQkw
RjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODBBRjE0QkE3
RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MEIwMTRCQTdGRDkwMEJGRTI3
MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNp
YmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07
CiAJCTE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3Qg
Zm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3Vy
YXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShyZXZpc2lvbiAxMDQ0MjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2RlZmluZSBEVU1QX0xJTktfU1RBVElTVElDUyAwCiAj
ZGVmaW5lIERVTVBfQ09ERSAwCiAKLSNpbmNsdWRlIDxNYWNyb0Fzc2VtYmxlci5oPgorI2luY2x1
ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw4ICs3Miw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBoYXNTZWVuU2hvdWxkUmVwYXRjaAogICAgIH07CiAKLSAgICBjbGFz
cyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBFeGVjU3Rh
dGU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgZW51bSBDb2RlVHlw
ZSB7IEdsb2JhbENvZGUsIEV2YWxDb2RlLCBGdW5jdGlvbkNvZGUgfTsKIApAQCAtMjU2LDYgKzI1
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBVbmNv
bmRpdGlvbmFsRmluYWxpemVyLCBwdWJsaWMgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciB7CiAgICAg
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwor
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoK
ICAgICAgICAgZW51bSBDb3B5UGFyc2VkQmxvY2tUYWcgeyBDb3B5UGFyc2VkQmxvY2sgfTsKICAg
ICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw2ICsxODQsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlQ2hh
aW4+IHN0cnVjdHVyZUNoYWluOwogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxKU0NlbGw+
IGpzQ2VsbDsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1
bmM7CisgICAgICAgICAgICB2b2lkKiBwb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAog
ICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9u
U3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0
aW9uU3BhY2UuaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQWxsb2NhdGlvblNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogY2xhc3MgTWFya2VkQmxvY2s7CiAKIGNsYXNzIEFsbG9jYXRpb25TcGFjZSB7CkBAIC02OCw2
ICs2OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNocmluaygpOwogICAgIAogcHJpdmF0ZToKKyAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAgIGVudW0gQWxs
b2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRpb25NdXN0U3VjY2VlZCwgQWxsb2NhdGlvbkNhbkZhaWwg
fTsKICAgICAKICAgICB2b2lkKiBhbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNz
IEpTVmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAgICBj
bGFzcyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTEyOSwxMCArMTMwLDEx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVy
Um9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
ZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGlv
blNwYWNlOwotICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBDb2RlQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKKyAgICAgICAgZnJpZW5k
IGNsYXNzIFNsb3RWaXNpdG9yOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWluRXh0
cmFDb3N0ID0gMjU2OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4dHJhQ29zdCA9
IDEwMjQgKiAxMDI0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFj
ZS5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogY2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsK
K2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsKIGNsYXNz
IFNsb3RWaXNpdG9yOwogCkBAIC03OSw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9j
aygpOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CisgICAgCiAgICAgLy8gWyAzMi4uLiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJl
Y2lzZVN0ZXAgPSBNYXJrZWRCbG9jazo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBwcmVjaXNlQ3V0b2ZmID0gMjU2OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NSw2ICs0NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0
YWJsZTsKICAgICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0Owor
ICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0
YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKQEAg
LTkwLDggKzkxLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJbnRlcnByZXRlciB7
CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBmcmllbmQgY2xhc3Mg
SklUOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkQ2FsbDsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAg
ICBwdWJsaWM6CiAgICAgICAgIEludGVycHJldGVyKCk7CiAgICAgICAgIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkocmV2aXNp
b24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVy
RmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBSZWdpc3RlckZp
bGUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWdpc3RlckZpbGUpOwpAQCAtODEs
NiArODIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIGJvb2wgZ3Jvd1Nsb3dDYXNlKFJlZ2lzdGVyKik7CiAgICAgICAgIHZvaWQgcmVsZWFzZUV4
Y2Vzc0NhcGFjaXR5KCk7CiAgICAgICAgIHZvaWQgYWRkVG9Db21taXR0ZWRCeXRlQ291bnQobG9u
Zyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRp
b25zLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBMTEludCB7CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSogZXhlYywg
SW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVj
LT5nbG9iYWxEYXRhKCk7CisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2Jh
bERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJuICZnbG9iYWxEYXRhLT5leGNlcHRpb25JbnN0cnVj
dGlvbnM7Cit9CisKK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rp
b24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxE
YXRhKCk7CisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4
Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7
CisgICAgCisgICAgcmV0dXJuIGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU7Cit9
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgTExJbnRFeGNlcHRpb25zX2gKKyNkZWZpbmUgTExJbnRFeGNlcHRpb25zX2gK
KworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBMTEludCB7CisKKy8vIFNhdmVzIHRoZSBjdXJyZW50IFBDIGluIHRoZSBnbG9iYWwgZGF0
YSBmb3Igc2FmZS1rZWVwaW5nLCBhbmQgZ2l2ZXMgeW91IGEgUEMKKy8vIHRoYXQgeW91IGNhbiB0
ZWxsIHRoZSBpbnRlcnByZXRlciB0byBnbyB0bywgd2hpY2ggd2hlbiBhZHZhbmNlZCBiZXR3ZWVu
IDEKKy8vIGFuZCA5IHNsb3RzIHdpbGwgZ2l2ZSB5b3UgYW4gImluc3RydWN0aW9uIiB0aGF0IHRo
cmVhZHMgdG8gdGhlIGludGVycHJldGVyJ3MKKy8vIGV4Y2VwdGlvbiBoYW5kbGVyLiBOb3RlIHRo
YXQgaWYgeW91IGdpdmUgaXQgdGhlIFBDIGZvciBleGNlcHRpb24gaGFuZGxpbmcsCisvLyBpdCdz
IHNtYXJ0IGVub3VnaCB0byBqdXN0IHJldHVybiB0aGF0IFBDIHdpdGhvdXQgZG9pbmcgYW55dGhp
bmcgZWxzZTsgdGhpcworLy8gbGV0cyB5b3UgdGhyZWFkIGV4Y2VwdGlvbiBoYW5kbGluZyB0aHJv
dWdoIGNvbW1vbiBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgYnkKKy8vIG90aGVyIGhlbHBlcnMuCitJ
bnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOworCisv
LyBVc2UgdGhpcyB3aGVuIHlvdSdyZSB0aHJvd2luZyB0byBhIGNhbGwgdGh1bmsuCit2b2lkKiBj
YWxsVG9UaHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOworCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50RXhjZXB0aW9uc19oCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDEwOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50SGVs
cGVycy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworI2RlZmluZSBM
TElOVF9PUChpbmRleCkgKGV4ZWMtPnJlZ2lzdGVycygpW3BjW2luZGV4XS51Lm9wZXJhbmRdKQor
I2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5vcGVyYW5kKSkK
KworI2RlZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpICAgICAgICAgXAorICAg
ICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
IHZvaWQqIGE7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQq
IGI7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSBwYWlyOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50NjRfdCBpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICB9IF9fdTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBfX3UucGFpci5hID0gZmlyc3Q7ICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBfX3UucGFpci5iID0gc2Vjb25kOyAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICByZXR1cm4gX191Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0g
d2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RX
TyhwYywgZXhlYykKKworI2RlZmluZSBMTElOVF9USFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBfX2dsb2JhbERh
dGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7ICAgICAgICBcCisgICAgICAgIF9fZ2xvYmFsRGF0YS5l
eGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgXAorICAgICAgICBwYyA9
IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoZXhl
Yy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpIHsgICBcCisgICAgICAgICAgICBwYyA9IHJldHVy
blRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5UX0VO
RF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFs
c2UpCisKKyNkZWZpbmUgTExJTlRfRU5EKCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxl
IChmYWxzZSkKKworI2RlZmluZSBMTElOVF9CUkFOQ0gob3Bjb2RlLCBjb25kaXRpb24pIGRvIHsg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYm9vbCBfX2NvbmRpdGlvbiA9IChjb25kaXRp
b24pOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoX19j
b25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIHBjICs9IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsgICAg
ICBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcGNvZGUpOyAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
KyNkZWZpbmUgTExJTlRfUkVUVVJOKHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgSlNWYWx1ZSBfX3JldHVyblZhbHVlID0gKHZhbHVlKTsgICAgICAgIFwKKyAgICAgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfT1Ao
MSkgPSBfX3JldHVyblZhbHVlOyAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwo
KTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmlu
ZSBMTElOVF9DQUxMX0VORF9JTVBMKGV4ZWMsIGNhbGxUYXJnZXQpIExMSU5UX1JFVFVSTl9UV08o
KGV4ZWMpLCAoY2FsbFRhcmdldCkpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBw
YywgZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19l
eGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0
cnVjdGlvbiogX19wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgSlNHbG9iYWxEYXRhJiBfX2dsb2JhbERhdGEgPSAoX19leGVjKS0+Z2xvYmFsRGF0YSgp
OyAgICBcCisgICAgICAgIF9fZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJv
dyk7ICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fZXhlYywgY2Fs
bFRvVGhyb3coX19leGVjLCBfX3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmlu
ZSBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fZXhlYyA9IChleGVjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19wYyA9
IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBp
ZiAoVU5MSUtFTFkoX19leGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2V4ZWMsIGNhbGxUb1Ro
cm93KF9fZXhlYywgX19wYykpOyAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5l
IExMSU5UX0NBTExfUkVUVVJOKGV4ZWMsIHBjLCBjYWxsVGFyZ2V0KSBkbyB7ICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19leGVjID0gKGV4ZWMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX3BjID0g
KHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHZv
aWQqIF9fY2FsbFRhcmdldCA9IChjYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKF9fZXhlYy0+Y2FsbGVy
RnJhbWUoKSwgX19wYyk7ICAgICAgICBcCisgICAgICAgIExMSU5HX0NBTExfRU5EX0lNUEwoX19l
eGVjLCBfX2NhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAo
ZmFsc2UpCisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcikKK3sKKyAgICAvLyBGSVhNRQor
fQorCitMTElOVF9IRUxQRVJfREVDTChsb29wX29zcikKK3sKKyAgICAvLyBGSVhNRQorfQorCitM
TElOVF9IRUxQRVJfREVDTChyZXBsYWNlKQoreworICAgIC8vIEZJWE1FCit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spCit7CisgICAgLy8gRklYTUUKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICAvLyBGSVhNRQor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spCit7Cisg
ICAgLy8gRklYTUUKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0
aW9uKQoreworICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3Jl
YXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYywgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4oZXhlYy0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSk7CisgICAgZXhlYy0+
c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goYWN0aXZhdGlvbikpOworICAg
IExMSU5UX1JFVFVSTihKU1ZhbHVlKGFjdGl2YXRpb24pKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCit7CisgICAgTExJTlRfUkVUVVJOKEpTVmFsdWUo
QXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3RoaXMpCit7CisgICAgSlNGdW5jdGlvbiogY29u
c3RydWN0b3IgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICAKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIEFTU0VSVChj
b25zdHJ1Y3Rvci0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0YShjb25zdHJ1Y3Rvciwg
Y29uc3RydWN0RGF0YSkgPT0gQ29uc3RydWN0VHlwZUpTKTsKKyNlbmRpZgorICAgIAorICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlOworICAgIEpTVmFsdWUgcHJvdG8gPSBMTElOVF9PUCgyKS5qc1Zh
bHVlKCk7CisgICAgaWYgKHByb3RvLmlzT2JqZWN0KCkpCisgICAgICAgIHN0cnVjdHVyZSA9IGFz
T2JqZWN0KHByb3RvKS0+aW5oZXJpdG9ySUQoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBlbHNl
CisgICAgICAgIHN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5zY29wZSgpLT5nbG9iYWxPYmplY3Qt
PmVtcHR5T2JqZWN0U3RydWN0dXJlKCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVj
dEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY29udmVydF90aGlzKQoreworICAgIEpTVmFsdWUgdjEgPSBMTElOVF9PUCgxKS5qc1Zh
bHVlKCk7CisgICAgQVNTRVJUKHYxLmlzUHJpbWl0aXZlKCkpOworICAgIExMSU5UX1JFVFVSTih2
MS50b1RoaXNPYmplY3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3
X29iamVjdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYykp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5KQoreworICAgIEFyZ0xp
c3QgYXJnTGlzdCgmTExJTlRfT1AoMiksIHBjWzNdLnUub3BlcmFuZCk7CisgICAgTExJTlRfUkVU
VVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGFyZ0xpc3QpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25ld19hcnJheV9idWZmZXIpCit7CisgICAgQXJnTGlzdCBhcmdMaXN0KGV4ZWMt
PmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihwY1syXS51Lm9wZXJhbmQpLCBwY1szXS51Lm9w
ZXJhbmQpOworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RBcnJheShleGVjLCBhcmdMaXN0KTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdleHApCit7CisgICAgUmVnRXhw
KiByZWdFeHAgPSBleGVjLT5jb2RlQmxvY2soKS0+cmVnZXhwKHBjWzJdLnUub3BlcmFuZCk7Cisg
ICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlU3lu
dGF4RXJyb3IoZXhlYywgIkludmFsaWQgZmxhZyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0
b3IuIikpOworICAgIExMSU5UX1JFVFVSTihSZWdFeHBPYmplY3Q6OmNyZWF0ZShleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhleC0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9ub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighTExJTlRf
T1AoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVh
bChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKQoreworICAgIExMSU5UX1JFVFVS
Tihqc0Jvb2xlYW4oIUpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OnN0cmlj
dEVxdWFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RuZXEpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRf
T1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihq
c0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3NlcSkKK3sKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9ncmVhdGVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNM
ZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcmVxKQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09Q
KDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihM
TElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKyAxKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihM
TElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJTlRf
T1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0ganNOdW1i
ZXIocmVzdWx0ICsgMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9kZWMpCit7CisgICAgZG91YmxlIHJlc3Vs
dCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgy
KSA9IGpzTnVtYmVyKHJlc3VsdCAtIDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1
bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKQoreworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhl
YykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSkKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIoLUxMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKQoreworICAgIEpTVmFsdWUgdjEg
PSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2MiA9IExMSU5UX09QX0MoMyku
anNWYWx1ZSgpOworICAgIAorICAgIGlmICh2MS5pc1N0cmluZygpKSB7CisgICAgICAgIExMSU5U
X1JFVFVSTigKKyAgICAgICAgICAgIHYyLmlzU3RyaW5nKCkKKyAgICAgICAgICAgID8ganNTdHJp
bmcoZXhlYywgYXNTdHJpbmcodjEpLCBhc1N0cmluZyh2MikpCisgICAgICAgICAgICA6IGpzU3Ry
aW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9QcmltaXRpdmVTdHJpbmcoZXhlYykpKTsKKyAg
ICB9CisgICAgCisgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKKyAgICAg
ICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHYxLmFzTnVtYmVyKCkgKyB2Mi5hc051bWJlcigpKSk7
CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpzQWRkU2xvd0Nhc2UoZXhlYywgdjEsIHYyKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
TnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAqIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9zdWIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFs
dWUoKS50b051bWJlcihleGVjKSAtIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4
ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAvIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9tb2QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGZtb2QoTExJ
TlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KS50b051bWJlcihleGVjKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlm
dCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRv
SW50MzIoZXhlYykgPDwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3JzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Vyc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09Q
KDIpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSA+PiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50
b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKQor
eworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQz
MihleGVjKSAmIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgfCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfYml0eG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1Zh
bHVlKCkudG9JbnQzMihleGVjKSBeIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4
ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKH5MTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQorewor
ICAgIEpTVmFsdWUgYmFzZVZhbCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyNpZm5kZWYgTkRF
QlVHCisgICAgVHlwZUluZm8gdHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKTsKKyAgICBBU1NFUlQo
IWJhc2VWYWwuaXNPYmplY3QoKQorICAgICAgICAgICB8fCAhKHR5cGVJbmZvID0gYXNPYmplY3Qo
YmFzZVZhbCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2Uo
KSk7CisjZW5kaWYKKyAgICBMTElOVF9USFJPVyhjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihleGVj
LCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2luc3RhbmNlb2YpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihpbnN0YW5jZU9mU2xv
dyhleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgTExJ
TlRfT1AoNCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIExMSU5UX09QKDIpLmpz
VmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKQor
eworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKHYuaXNDZWxsKCkgPyB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUlu
Zm8oKS5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkgOiB2LmlzVW5kZWZpbmVkKCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Jvb2xlYW4pCit7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihMTElOVF9PUCgyKS5qc1ZhbHVlKCkuaXNCb29sZWFuKCkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKExMSU5UX09QKDIpLmpzVmFsdWUoKS5pc051bWJlcigpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9pc19zdHJpbmcpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihpc0pTU3RyaW5nKGV4ZWMtPmdsb2JhbERhdGEoKSwgTExJTlRfT1AoMikuanNWYWx1ZSgpKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KQoreworICAgIExMSU5U
X1JFVFVSTihqc0Jvb2xlYW4oanNJc09iamVjdFR5cGUoTExJTlRfT1AoMikuanNWYWx1ZSgpKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rpb25UeXBlKExMSU5UX09QKDIpLmpzVmFsdWUo
KSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luKQoreworICAgIExMSU5UX1JF
VFVSTihvcEluKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1
ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKQoreworICAgIExM
SU5UX1JFVFVSTihvcFJlc29sdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIo
cGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2
ZV9za2lwKQoreworICAgIExMSU5UX1JFVFVSTigKKyAgICAgICAgb3BSZXNvdmVTa2lwKAorICAg
ICAgICAgICAgZXhlYywKKyAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVy
KHBjWzJdLnUub3BlcmFuZCksCisgICAgICAgICAgICBwY1szXS51Lm9wZXJhbmQpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQoreworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGdsb2Jh
bE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0udS5v
cGVyYW5kOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0
KCk7CisgICAgaW50IG9mZnNldCA9IHBjWzRdLnUub3BlcmFuZDsKKyAgICAKKyAgICBBU1NFUlQo
KCFzdHJ1Y3R1cmUpID09ICghb2Zmc2V0KSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSBnbG9i
YWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNv
ZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xv
YmFsT2JqZWN0KTsKKyAgICAKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3Qo
ZXhlYywgaWRlbnQsIHNsb3QpKSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRW
YWx1ZShleGVjLCBpZGVudCk7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAm
JiAhZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQor
ICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgeworICAgICAg
ICAgICAgcGNbM10udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGdsb2JhbERhdGEs
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkp
OworICAgICAgICAgICAgcGNbNF0gPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBMTElOVF9SRVRVUk4ocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAg
TExJTlRfVEhST1coY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9iYXNlKQoreworICAgIElkZW50
aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVy
YW5kKTsKKyAgICBpZiAocGNbM10udS5vcGVyYW5kKSB7CisgICAgICAgIEpTVmFsdWUgYmFzZSA9
IEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgdHJ1ZSk7
CisgICAgICAgIGlmICghYmFzZSkKKyAgICAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9y
Rm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAg
ICAgIExMSU5UX1JFVFVSTihiYXNlKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKEpT
Qzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgZmFsc2UpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCit7
CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7
CisgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9
IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYg
KCFvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCkpCisgICAgICAgIExMSU5UX1RI
Uk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0
cmluZygpKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9yZXNvbHZlX3dpdGhfYmFzZSkKK3sKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IG9wUmVzb2x2ZVdp
dGhCYXNlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFu
ZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElO
VF9PUCgyKSA9IHJlc3VsdDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gb3BS
ZXNvbHZlV2l0aFRoaXMoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10u
dS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgIExMSU5UX09QKDIpID0gcmVzdWx0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2st
PmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExM
SU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwor
CisgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KTsK
KyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgxKSA9IHJlc3VsdDsK
KworICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJs
ZSgpCisgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUKKyAgICAgICAgJiYg
c2xvdC5jYWNlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAgICAg
ICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAg
ICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAg
ICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNo
aW5nKCkpIHsKKyAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAg
ICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0
cnVjdHVyZSk7CisgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNl
dCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKQoreworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmll
ciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBiYXNlVmFsdWUucHV0
KGV4ZWMsIGlkZW50LCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAg
ICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJh
c2VDZWxsID0gYmFzZVZhbGUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1
cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUt
PnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkKKyAgICAgICAgICAgICYmIGJh
c2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChz
bG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CisgICAgICAgICAg
ICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKKyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3Vz
SUQoKS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJh
bmQpCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGxsaW50X29wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBsbGludF9vcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWw7CisgICAgICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJl
LnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOworICAgICAg
ICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6
ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBwY1s2XS51LnN0cnVjdHVyZS5zZXQo
CisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzdd
LnUuc3RydWN0dXJlQ2hhaW4uc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByb3Rv
dHlwZUNoYWluKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gbGxpbnRfb3BfcHV0X2J5X2lkOwor
ICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1
Y3R1cmUpOworICAgICAgICAgICAgICAgIHBjWzVddS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0K
KyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rl
bF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvT2Jq
ZWN0KGV4ZWMpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBjb2RlQmxvY2stPmlkZW50aWZp
ZXIocGNbM10udS5vcGVyYW5kKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
aWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBM
TElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVy
dHkuIikpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKwor
aW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2Ny
aXB0KQoreworICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5p
c1N0cmluZygpKSkgeworICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXND
ZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eShleGVjLCBhc1N0cmluZyhzdWJzY3JpcHQpLT52YWx1
ZShleGVjKSkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBp
ZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlw
dC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU1N0cmluZyhleGVjLCBiYXNlVmFsdWUpICYm
IGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJu
IGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAg
ICAgaWYgKGlzSlNCeXRlQXJyYXkoZXhlYywgYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNl
VmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc0J5dGVBcnJh
eShiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIHJldHVy
biBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGkpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHBy
b3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7CisgICAgcmV0dXJuIGJhc2VW
YWx1ZS5nZXQoZXhlYywgcHJvcGVydHkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Z2V0X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoTExJTlRfT1AoMikuanNW
YWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpCit7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBM
TElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhcmd1bWVudHMpIHsKKyAgICAgICAgYXJn
dW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKTsKKyAg
ICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIExMSU5UX09QKDIpID0gYXJn
dW1lbnRzOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoYXJndW1lbnRz
LCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2dldF9ieV9wbmFtZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoTExJTlRfT1AoMiku
anNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3B1dF9ieV92YWwpCit7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0g
ZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRf
T1AoMSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1AoMikuanNW
YWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7CisgICAg
CisgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKKyAgICAgICAgdWludDMy
X3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU0FycmF5KCZnbG9i
YWxEYXRhLCBiYXNlVmFsdWUpKSB7CisgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNB
cnJheShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNhblNldEluZGV4KGkp
KQorICAgICAgICAgICAgICAgIGpzQXJyYXktPnNldEluZGV4KGdsb2JhbERhdGEsIGksIHZhbHVl
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4
KGpzQXJyYXksIGV4ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIExMSU5UX0VORCgpOworICAg
ICAgICB9CisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KCZnbG9iYWxEYXRhLCBiYXNlVmFsdWUp
CisgICAgICAgICAgICAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChp
KSkgeworICAgICAgICAgICAgSlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXko
YmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAg
ICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNJbnQzMigpKTsKKyAgICAg
ICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2
YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4
KGksIHZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaSwgdmFs
dWUpOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBw
cm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYykpOworICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGV4ZWMtPmNvZGVCbG9jaygp
LT5pc1N0cmljdE1vZGUoKSk7CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0eSwgdmFs
dWUsIHNsb3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZGVsX2J5X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpz
VmFsdWUoKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChl
eGVjKTsKKyAgICAKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QKDMpLmpzVmFsdWUo
KTsKKyAgICAKKyAgICBib29sIGNvdWxkRGVsZXRlOworICAgIAorICAgIHVpbnQzMl90IGk7Cisg
ICAgaWYgKHN1YnNjcmlwdC5nZXRVSW50MzIoaSkpCisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFz
ZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KGJhc2VPYmosIGV4ZWMs
IGkpOworICAgIGVsc2UgeworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAg
ICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYykpOwor
ICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgY291bGREZWxldGUgPSBi
YXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqLCBleGVjLCBwcm9w
ZXJ0eSk7CisgICAgfQorICAgIAorICAgIGlmICghcmVzdWx0ICYmIGV4ZWMtPmNvZGVCbG9jaygp
LT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4
ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAKKyAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wdXRfYnlfaW5kZXgpCit7CisgICAgTExJTlRfT1AoMSkuanNWYWx1ZSgpLnB1dChleGVjLCBw
Y1syXS51Lm9wZXJhbmQsIExMSU5UX09QKDMpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyKQoreworICAgIEFTU0VS
VChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VP
YmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIElkZW50aWZpZXImIGlk
ZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgQVNTRVJU
KExMSU5UX09QKDMpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBiYXNlT2JqLT5tZXRob2RU
YWJsZSgpLT5kZWZpbmVHZXR0ZXIoYmFzZU9iaiwgZXhlYywgaWRlbnQsIGFzT2JqZWN0KExMSU5U
X09QKDMpLmpzVmFsdWUoKSksIDApOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcHV0X3NldHRlcikKK3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNW
YWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJ
TlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+
aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1Zh
bHVlKCkuaXNPYmplY3QoKSk7CisgICAgYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lU2V0
dGVyKGJhc2VPYmosIGV4ZWMsIGlkZW50LCBhc09iamVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkp
LCAwKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0
cnVlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qdHJ1ZSwgTExJTlRfT1AoMSkuanNWYWx1ZSgp
LnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2Up
Cit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pmYWxzZSwgIUxMSU5UX09QKDEpLmpzVmFsdWUoKS50
b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3MpCit7
CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzLCBqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1Bf
QygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzcywg
IWpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKQor
eworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlciwganNMZXNzPGZhbHNlPihleGVjLCBMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bf
am5ncmVhdGVyLCAhanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2psZXNzZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEsIGpzTGVzc0VxPHRydWU+
KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpCit7CisgICAgTExJTlRf
QlJBTkNIKG9wX2pubGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9qZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlcmVx
LCBqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0
ZXJlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEsICFqc0xlc3NFcTxmYWxz
ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKQoreworICAgIEpT
VmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1AoMykuanNWYWx1ZSgpOworICAgIEFTU0VSVChzY3J1
dGluZWUuaXNEb3VibGUoKSk7CisgICAgZG91YmxlIHZhbHVlID0gc2NydXRpbmVlLmFzRG91Ymxl
KCk7CisgICAgaW50MzJfdCBpbnRWYWx1ZSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKTsK
KyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAodmFsdWUg
PT0gaW50VmFsdWUpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2Rl
QmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5pbW1lZGlhdGVTd2l0Y2hKdW1wVGFi
bGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShpbnRWYWx1ZSwgZGVmYXVsdE9mZnNl
dCk7CisgICAgfSBlbHNlCisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKQorewor
ICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1AoMykuanNWYWx1ZSgpOworICAgIGludCBk
ZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlmICghc2NydXRpbmVlLmlzU3Ry
aW5nKCkpCisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7CisgICAgZWxzZSB7CisgICAgICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9
IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0
Rm9yVmFsdWUoYXNTdHJpbmcoc2NydXRpbmVlKS0+dmFsdWUoZXhlYykuaW1wbCgpLCBkZWZhdWx0
T2Zmc2V0KTsKKyAgICB9CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfZnVuYykKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNv
ZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25D
b2RlCisgICAgICAgICAgIHx8ICFjb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKQorICAg
ICAgICAgICB8fCBleGVjLT51bmNoZWNrZWRSKGNvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVy
KCkpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNs
KHBjWzJdLnUub3BlcmFuZCktPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApCit7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbMl0udS5vcGVyYW5kKTsKKyAg
ICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVuY3Rpb24tPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFp
bigpKTsKKyAgICAKKyAgICBpZiAoIWZ1bmN0aW9uLT5uYW1lKCkuaXNOdWxsKCkpIHsKKyAgICAg
ICAgSlNTdGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25TY29wZU9iamVjdCA9IEpTU3RhdGljU2Nv
cGVPYmplY3Q6OmNyZWF0ZShleGVjLCBmdW5jdGlvbi0+bmFtZSgpLCBmdW5jLCBSZWFkT25seSB8
IERvbnREZWxldGUpOworICAgICAgICBmdW5jLT5zZXRTY29wZShleGVjLT5nbG9iYWxEYXRhKCks
IGZ1bmMtPnNjb3BlKCktPnB1c2goZnVuY3Rpb25TY29wZU9iamVjdCkpOworICAgIH0KKyAgICAK
KyAgICBMTElOVF9SRVRVUk4oZnVuYyk7Cit9CisKK3N0YXRpYyBIZWxwZXJSZXR1cm5UeXBlIGhh
bmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1Zh
bHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKworICAgIGV4ZWNDYWxsZWUtPnNldFNj
b3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxv
Y2soMCk7CisKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShjYWxs
ZWUsIGNhbGxEYXRhKTsKKyAgICAKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBl
SlMpOworICAgIAorICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVIb3N0KSB7CisgICAg
ICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9j
YXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgICAgIH0KKyAgICAKKyAg
ICAgICAgQVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSk7CisgICAgICAgIExMSU5UX0NB
TExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIGNhbGxlZSkp
OworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIAor
ICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0
cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0RGF0YSk7CisgICAg
CisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZUpTKTsKKyAgICAKKyAg
ICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlSG9zdCkgeworICAgICAgICBnbG9i
YWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERh
dGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgTExJTlRfQ0FMTF9SRVRV
Uk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpKTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29u
c3RydWN0VHlwZU5vbmUpOworICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5v
dEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworfQorCitpbmxpbmUgSGVscGVyUmV0
dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlLCBXcml0
ZUJhcnJpZXJCYXNlPEpTQ2VsbD4qIGV4cGVjdGVkRnVuY3Rpb24gPSAwLCB2b2lkKiogbWFjaGlu
ZUNvZGUgPSAwKQoreworICAgIEFTU0VSVCghZXhwZWN0ZWRGdW5jdGlvbiA9PSAhbWFjaGluZUNv
ZGUpOworICAgIAorICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0
aW9uKGNhbGxlZUFzVmFsdWUpOworICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCisgICAg
ICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwg
a2luZCk7CisgICAgCisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsZWVB
c0Z1bmN0aW9uQ2VsbCk7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihjYWxsZWUtPnNj
b3BlVW5jaGVja2VkKCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVl
LT5leGVjdXRhYmxlKCk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOworICAgIGlmIChleGVjdXRhYmxlLT5pc0hv
c3RGdW5jdGlvbigpKQorICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklU
Q29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIGVsc2UgeworICAgICAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5j
dGlvbkV4ZWN1dGFibGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29wZSgpLCBr
aW5kKTsKKyAgICAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpOworICAg
ICAgICBjb2RlQmxvY2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZv
cihraW5kKTsKKyAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJzKSkK
KyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENv
ZGVXaXRoQXJpdHlDaGVja0ZvcihraW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29k
ZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRy
ZXNzRm9yQ2FsbCgpOworICAgIH0KKyAgICAKKyAgICBpZiAoZXhwZWN0ZWRGdW5jdGlvbikgewor
ICAgICAgICBleHBlY3RlZEZ1bmN0aW9uLT5zZXQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgICAgICpt
YWNoaW5lQ29kZSA9IGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisgICAgCisg
ICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIGNvZGVQdHIuZXhlY3V0YWJsZUFk
ZHJlc3MoKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKEV4ZWNT
dGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
Cit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUu
CisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGlsZSBpdCBpZiBuZWNl
c3NhcnkuCisgICAgLy8gLSBJZiBwb3NzaWJsZSwgbGluayB0aGUgY2FsbCdzIGlubGluZSBjYWNo
ZS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNh
bGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNW
YWx1ZSA9IExMSU5UX09QKDEpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4
ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRD
YWxsZWUoY2FsbGVlQXNWYWx1ZSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhl
Yyk7CisgICAgCisgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywga2luZCwgY2Fs
bGVlQXNWYWx1ZSwgJnBjWzRdLnUuanNDZWxsLCAmcGNbNV0udS5wb2ludGVyKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpCit7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4
ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25z
dHJ1Y3QpCit7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ29uc3Ry
dWN0KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncykKK3sKKyAg
ICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZSB3aGlsZSBy
ZXNwZWN0aW5nIHRoZSB2YXJpYWJsZSBhcmd1bWVudHMuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdo
YXQgdG8gY2FsbCBhbmQgY29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBSZXR1cm4g
YSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwg
ZnJhbWUuCisgICAgCisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSk7Cisg
ICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gbG9hZFZhcmFyZ3MoCisgICAgICAgIGV4
ZWMsIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksCisgICAg
ICAgIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpLCBwY1s0XS51
Lm9wZXJhbmQpOworICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKTsKKyAg
ICAKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZWUoY2FsbGVlQXNWYWx1ZSk7CisgICAgZXhlY0Nh
bGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgCisgICAgcmV0dXJuIHNldFVwQ2FsbChl
eGVjQ2FsbGVlLCBwYywga2luZCwgY2FsbGVlQXNWYWx1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jYWxsX2V2YWwpCit7CisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJ
TlRfT1AoMSk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNd
LnUub3BlcmFuZDsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxE
YXRhKCk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVj
KTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZWUoY2FsbGVlQXNWYWx1ZSk7CisgICAgZXhlY0Nh
bGxlZS0+c2V0U2NvcGVDaGFpbihjYWxsZXJGcmFtZS0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVj
Q2FsbGVlLT5zZXRSZXR1cm5QQyhiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihsbGludF9nZW5l
cmljX3JldHVybl9wb2ludCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKyAg
ICAKKyAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFs
KSkKKyAgICAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGws
IGNhbGxlZUFzVmFsdWUpOworICAgIAorICAgIGdsb2JhbERhdGEuaG9zdENhbGxSZXR1cm5WYWx1
ZSA9IGV2YWwoZXhlY0NhbGxlZSk7CisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwg
cGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCit7CisgICAg
QVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIEpT
VmFsdWUgYWN0aXZhdGlvblZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIGlmICgh
YWN0aXZhdGlvblZhbHVlKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT5yZWdpc3Rl
cnMoKVt1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKV0pIHsKKyAg
ICAgICAgICAgIGlmICghZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAg
ICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT50ZWFyT2ZmKGV4ZWMtPmdsb2JhbERhdGEoKSk7Cisg
ICAgICAgIH0KKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIEpTQWN0aXZhdGlvbiog
YWN0aXZhdGlvbiA9IGFzQWN0aXZhdGlvbihhY3RpdmF0aW9uVmFsdWUpOworICAgIGFjdGl2YXRp
b24tPnRlYXJPZmYoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBpZiAoSlNWYWx1ZSB2ID0gZXhl
Yy0+cmVnaXN0ZXJzKClbdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFu
ZCldKQorICAgICAgICBhc0FyZ3VtZW50cyh2KS0+ZGlkVGVhck9mZkFjdGl2YXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBhY3RpdmF0aW9uKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cykKK3sKKyAgICBBU1NFUlQoZXhl
Yy0+Y29kZUJsb2NrKCktPnVzZXNBcmd1bWVudHMoKSAmJiAhZXhlYy0+Y29kZUJsb2NrKCktPm5l
ZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgYXNBcmd1bWVudHMoZXhlYy0+cmVnaXN0ZXJzKClb
dW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCldKS0+dGVhck9mZihl
eGVjLT5nbG9iYWxEYXRhKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfc3RyY2F0KQoreworICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhleGVjLCAm
TExJTlRfT1AoMiksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfdG9fcHJpbWl0aXZlKQoreworICAgIExMSU5UX1JFVFVSTihMTElOVF9PUCgyKS5qc1Zh
bHVlKCkudG9QcmltaXRpdmUoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Z2V0X3BuYW1lcykKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7Cisg
ICAgaWYgKHYuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBwYyArPSBwY1s1XS51Lm9w
ZXJhbmQ7CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAKKyAgICBKU09iamVjdCog
byA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvLT5zdHJ1
Y3R1cmUoKTsKKyAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJh
dG9yID0gc3RydWN0dXJlLT5lbnVtZXJhdGlvbkNhY2hlKCk7CisgICAgaWYgKCFqc1Byb3BlcnR5
TmFtZUl0ZXJhdG9yIHx8IGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmNhY2hlZFByb3RvdHlwZUNo
YWluKCkgIT0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSkKKyAgICAgICAganNQcm9w
ZXJ0eU5hbWVJdGVyYXRvciA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBv
KTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9IGpzUHJvcGVydHlOYW1lSXRlcmF0b3I7CisgICAg
TExJTlRfT1AoMikgPSBKU1ZhbHVlKG8pOworICAgIExMSU5UX09QKDMpID0gUmVnaXN0ZXI6Ondp
dGhJbnQoMCk7CisgICAgTExJTlRfT1AoNCkgPSBSZWdpc3Rlcjo6d2l0aEludChqc1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLT5zaXplKCkpOworICAgIAorICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bf
Z2V0X3BuYW1lcyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9uZXh0X3BuYW1lKQoreworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoTExJTlRf
T1AoMikuanNWYWx1ZSgpKTsKKyAgICBKU1N0cmluZyogcHJvcGVydHkgPSBhc1N0cmluZyhMTElO
VF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIGlmIChiYXNlLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVu
dGlmaWVyKGV4ZWMsIHByb3BlcnR5LT52YWx1ZShleGVjKSkpKSB7CisgICAgICAgIC8vIEdvIHRv
IHRhcmdldC4KKyAgICAgICAgcGMgKz0gcGNbNl0udS5vcGVyYW5kOworICAgIH0gLy8gRWxzZSwg
ZG9uJ3QgY2hhbmdlIHRoZSBQQywgc28gdGhlIGludGVycHJldGVyIHdpbGwgcmVsb29wLgorICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSkK
K3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3Qq
IG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAg
IAorICAgIExMSU5UX09QKDEpID0gbzsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNj
b3BlQ2hhaW4oKS0+cHVzaChvKSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUpCit7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFp
bihleGVjLT5zY29wZUNoYWluKCktPnBvcCgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKQoreworICAgIGV4ZWMtPnNldFNj
b3BlQ2hhaW4oY3JlYXRlRXhjZXB0aW9uU2NvcGUoZXhlYywgcGMgLSBleGVjLT5jb2RlQmxvY2so
KS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpCit7CisgICAgTExJTlRfVEhST1coTExJTlRfT1Ao
MSkuanNWYWx1ZSgpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93X3JlZmVy
ZW5jZV9lcnJvcikKK3sKKyAgICBMTElOVF9USFJPVyhjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVj
LCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b1N0cmluZyhleGVjKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZGVidWcpCit7CisgICAgaW50IGRlYnVnSG9va0lEID0gcGNbMV0u
dS5vcGVyYW5kOworICAgIGludCBmaXJzdExpbmUgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaW50
IGxhc3RMaW5lID0gcGNbM10udS5vcGVyYW5kOworICAgIAorICAgIGV4ZWMtPmdsb2JhbERhdGEo
KS5pbnRlcnByZXRlci0+ZGVidWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVn
SG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCkKK3sKKyAgICAo
KlByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPndpbGxFeGVjdXRlKGV4ZWMs
IExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQoreworICAgICgqUHJvZmlsZXI6OmVu
YWJsZWRQcm9maWxlclJlZmVyZW5jZSgpKS0+ZGlkRXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5q
c1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
TExJbnQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBl
cnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEhlbHBlcnNfaAorI2RlZmlu
ZSBMTEludEhlbHBlcnNfaAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordHlwZWRlZiBpbnQ2NF90IEhlbHBlclJl
dHVyblR5cGU7CisKKyNkZWZpbmUgTExJTlRfSEVMUEVSX0RFQ0wobmFtZSkgXAorICAgIGV4dGVy
biAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF8jI25hbWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0
cnVjdGlvbiogcGMpCisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcik7CitMTElOVF9IRUxQ
RVJfREVDTChsb29wX29zcik7CitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0X2Fy
aXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29u
dmVydF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfb2JqZWN0KTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X25ld19hcnJheV9idWZmZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdleHAp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdG5lcSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3By
ZV9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9kZWMpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Bvc3RfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2Rl
Yyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25lZ2F0ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1
Yik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9tb2QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2JpdG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hl
Y2tfaGFzX2luc3RhbmNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9mKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2lzX3VuZGVmaW5lZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbik7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9pc19zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX29iamVjdCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2luKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Jlc29sdmVfZ2xvYmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jh
c2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZ2V0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZ2V0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5
X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9k
ZWxfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3B1dF9zZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ps
ZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2pncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2pubGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfc3dpdGNoX2ltbSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2No
YXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25ld19mdW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdf
ZnVuY19leHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92
YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3Ry
Y2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
eHRfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHVzaF9uZXdfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2RlYnVnKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dp
bGxfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCk7CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnRIZWxwZXJzX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQWxsb2NhdGlvblNwYWNlLmgiCisjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkhlYXAu
aCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5j
bHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlN0eXBlSW5mby5oIgor
I2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKdW1wVGFibGUuaCIKKyNp
bmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5jbHVk
ZSAiUmVnaXN0ZXJGaWxlLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorI2luY2x1ZGUgIlN0
cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiVmFsdWVQ
cm9maWxlLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdJbXBsLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjaWYgQ1BVKFg4NikKKyNkZWZp
bmUgT0ZGTElORV9BU01fWDg2IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisj
ZW5kaWYKKworI2lmIENQVShBUk12NykKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMQorI2Vs
c2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMAorI2VuZGlmCisKKyNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVm
aW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgQ1BVKEJJR19F
TkRJQU4pCisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMQorI2Vsc2UKKyNkZWZpbmUg
T0ZGTElORV9BU01fQklHX0VORElBTiAwCisjZW5kaWYKKworI2lmIEVOQUJMRShMTElOVF9PU1Jf
VE9fSklUKQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAxCisjZWxzZQorI2RlZmlu
ZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIExMSU5UX0VYRUNVVElP
Tl9UUkFDSU5HCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDEKKyNlbHNl
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNlbmRpZgorCisjZGVm
aW5lIE9GRkxJTkVfQVNNX09GRlNFVE9GKGNsYXp6LCBmaWVsZCkgT0JKRUNUX09GRlNFVE9GKGNs
YXp6LCBmaWVsZCkKKworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQqIGR1bW15KCk7Cit9OworCitjb25zdCB1bnNpZ25lZCog
TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpCit7CisjaW5jbHVkZSAiTExJbnREZXNpcmVk
T2Zmc2V0cy5oIgorICAgIHJldHVybiBleHRyYWN0b3JUYWJsZTsKK30KKworfSAvLyBuYW1lc3Bh
ZWMgSlNDCisKK2ludCBtYWluKGludCwgY2hhcioqKQoreworICAgIC8vIE91dCBvZiBhbiBhYnVu
ZGFuY2Ugb2YgY2F1dGlvbiwgbWFrZSBzdXJlIHRoYXQgTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpk
dW1teSgpIGlzIGxpdmUsCisgICAgLy8gYW5kIHRoZSBleHRyYWN0b3JUYWJsZSBpcyBsaXZlLCB0
b28uCisgICAgcHJpbnRmKCIlcFxuIiwgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15
KCkpOworICAgIHJldHVybiAwOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyMTU5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisKKyMgQ3Jhc2ggY291cnNlIG9uIHRoZSBsYW5ndWFnZSB0aGF0IHRoaXMgaXMg
d3JpdHRlbiBpbiAod2hpY2ggSSBqdXN0IGNhbGwKKyMgImFzc2VtYmx5IiBldmVuIHRob3VnaCBp
dCdzIG1vcmUgdGhhbiB0aGF0KToKKyMKKyMgLSBNb3N0bHkgZ2FzLXN0eWxlIG9wZXJhbmQgb3Jk
ZXJpbmcuIFRoZSBsYXN0IG9wZXJhbmQgdGVuZHMgdG8gYmUgdGhlCisjICAgZGVzdGluYXRpb24u
IFNvICJhIDo9IGIiIGlzIHdyaXR0ZW4gYXMgIm1vdiBiLCBhIi4gQnV0IHVubGlrZSBnYXMsCisj
ICAgY29tcGFyaXNvbnMgYXJlIGluLW9yZGVyLCBzbyAiaWYgKGEgPCBiKSIgaXMgd3JpdHRlbiBh
cworIyAgICJiaWx0IGEsIGIsIC4uLiIuCisjCisjIC0gImIiID0gYnl0ZSwgImgiID0gMTYtYml0
IHdvcmQsICJpIiA9IDMyLWJpdCB3b3JkLCAicCIgPSBwb2ludGVyLgorIyAgIEN1cnJlbnRseSB0
aGlzIGlzIGp1c3QgMzItYml0IHNvICJpIiBhbmQgInAiIGFyZSBpbnRlcmNoYW5nZWFibGUKKyMg
ICBleGNlcHQgd2hlbiBhbiBvcCBzdXBwb3J0cyBvbmUgYnV0IG5vdCB0aGUgb3RoZXIuCisjCisj
IC0gSW4gZ2VuZXJhbCwgdmFsaWQgb3BlcmFuZHMgZm9yIG1hY3JvIGludm9jYXRpb25zIGFuZCBp
bnN0cnVjdGlvbnMgYXJlCisjICAgcmVnaXN0ZXJzIChlZyAidDAiKSwgYWRkcmVzc2VzIChlZyAi
NFt0MF0iKSwgYmFzZS1pbmRleCBhZGRyZXNzZXMKKyMgICAoZWcgIjdbdDAsIHQxLCAyXSIpLCBh
YnNvbHV0ZSBhZGRyZXNzZXMgKGVnICIweGEwMDAwMDAwW10iKSwgb3IgbGFiZWxzCisjICAgKGVn
ICJfZm9vIiBvciAiLmZvbyIpLiBNYWNybyBpbnZvY2F0aW9ucyBjYW4gYWxzbyB0YWtlIGFub255
bW91cworIyAgIG1hY3JvcyBhcyBvcGVyYW5kcy4gSW5zdHJ1Y3Rpb25zIGNhbm5vdCB0YWtlIGFu
b255bW91cyBtYWNyb3MuCisjCisjIC0gTGFiZWxzIG11c3QgaGF2ZSBuYW1lcyB0aGF0IGJlZ2lu
IHdpdGggZWl0aGVyICJfIiBvciAiLiIuICBBICIuIiBsYWJlbAorIyAgIGlzIGxvY2FsIGFuZCBn
ZXRzIHJlbmFtZWQgYmVmb3JlIGNvZGUgZ2VuIHRvIG1pbmltaXplIG5hbWVzcGFjZQorIyAgIHBv
bGx1dGlvbi4gQSAiXyIgbGFiZWwgaXMgYW4gZXh0ZXJuIHN5bWJvbCAoaS5lLiAiLmdsb2JsIiku
IFRoZSAiXyIKKyMgICBtYXkgb3IgbWF5IG5vdCBiZSByZW1vdmVkIGR1cmluZyBjb2RlIGdlbiBk
ZXBlbmRpbmcgb24gd2hldGhlciB0aGUgYXNtCisjICAgY29udmVudGlvbnMgZm9yIEMgbmFtZSBt
YW5nbGluZyBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtIG1hbmRhdGUgYSAiXyIKKyMgICBwcmVmaXgu
CisjCisjIC0gQSAibWFjcm8iIGlzIGEgbGFtYmRhIGV4cHJlc3Npb24sIHdoaWNoIG1heSBiZSBl
aXRoZXIgYW5vbnltb3VzIG9yCisjICAgbmFtZWQuIEJ1dCB0aGlzIGhhcyBjYXZlYXRzLiAibWFj
cm8iIGNhbiB0YWtlIHplcm8gb3IgbW9yZSBhcmd1bWVudHMsCisjICAgd2hpY2ggbWF5IGJlIG1h
Y3JvcyBvciBhbnkgdmFsaWQgb3BlcmFuZHMsIGJ1dCBpdCBjYW4gb25seSByZXR1cm4KKyMgICBj
b2RlLiBCdXQgeW91IGNhbiBkbyBUdXJpbmctY29tcGxldGUgdGhpbmdzIHZpYSBjb250aW51YXRp
b24gcGFzc2luZworIyAgIHN0eWxlOiAibWFjcm8gZm9vIChhLCBiKSBiKGEpIGVuZCBmb28oZm9v
LCBmb28pIi4gQWN0dWFsbHksIGRvbid0IGRvCisjICAgdGhhdCwgc2luY2UgeW91J2xsIGp1c3Qg
Y3Jhc2ggdGhlIGFzc2VtYmxlci4KKyMKKyMgLSBBbiAiaWYiIGlzIGEgY29uZGl0aW9uYWwgb24g
c2V0dGluZ3MuIEFueSBpZGVudGlmaWVyIHN1cHBsaWVkIGluIHRoZQorIyAgIHByZWRpY2F0ZSBv
ZiBhbiAiaWYiIGlzIGFzc3VtZWQgdG8gYmUgYSAjZGVmaW5lIHRoYXQgaXMgYXZhaWxhYmxlCisj
ICAgZHVyaW5nIGNvZGUgZ2VuLiBTbyB5b3UgY2FuJ3QgdXNlICJpZiIgZm9yIGNvbXB1dGF0aW9u
IGluIGEgbWFjcm8sIGJ1dAorIyAgIHlvdSBjYW4gdXNlIGl0IHRvIHNlbGVjdCBkaWZmZXJlbnQg
cGllY2VzIG9mIGNvZGUgZm9yIGRpZmZlcmVudAorIyAgIHBsYXRmb3Jtcy4KKyMKKyMgLSBBcmd1
bWVudHMgdG8gbWFjcm9zIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgcmF0aGVyIHRoYW4gZHluYW1p
YyBzY29waW5nLgorIyAgIENvbnN0J3MgYWxzbyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIGFuZCBt
YXkgb3ZlcnJpZGUgKGhpZGUpIGFyZ3VtZW50cworIyAgIG9yIG90aGVyIGNvbnN0cy4gQWxsIHZh
cmlhYmxlcyAoYXJndW1lbnRzIGFuZCBjb25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAgIHRvIG9w
ZXJhbmRzLiBBZGRpdGlvbmFsbHksIGFyZ3VtZW50cyAoYnV0IG5vdCBjb25zdGFudHMpIGNhbiBi
ZSBib3VuZAorIyAgIHRvIG1hY3Jvcy4KKworCisjIFRoZXNlIGRlY2xhcmF0aW9ucyBtdXN0IG1h
dGNoIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oLgorY29uc3QgQ2FsbEZyYW1lSGVhZGVyU2l6
ZSA9IDQ4Citjb25zdCBBcmd1bWVudENvdW50ID0gLTQ4Citjb25zdCBDYWxsZXJGcmFtZSA9IC00
MAorY29uc3QgQ2FsbGVlID0gLTMyCitjb25zdCBTY29wZUNoYWluID0gLTI0Citjb25zdCBSZXR1
cm5QQyA9IC0xNgorY29uc3QgQ29kZUJsb2NrID0gLTgKKworIyBEZWNsYXJlIHNvbWUgYWxpYXNl
cyBmb3IgdGhlIHJlZ2lzdGVycyB3ZSB3aWxsIHVzZS4KK2NvbnN0IFBDID0gdDQKKworIyBPZmZz
ZXRzIG5lZWRlZCBmb3IgcmVhc29uaW5nIGFib3V0IHZhbHVlIHJlcHJlc2VudGF0aW9uLgoraWYg
QklHX0VORElBTgorICAgIGNvbnN0IFRhZ09mZnNldCA9IDAKKyAgICBjb25zdCBQYXlsb2FkT2Zm
c2V0ID0gNAorZWxzZQorICAgIGNvbnN0IFRhZ09mZnNldCA9IDQKKyAgICBjb25zdCBQYXlsb2Fk
T2Zmc2V0ID0gMAorZW5kCisKKyMgVmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgorY29u
c3QgSW50MzJUYWcgPSAtMQorY29uc3QgQm9vbGVhblRhZyA9IC0yCitjb25zdCBOdWxsVGFnID0g
LTMKK2NvbnN0IFVuZGVmaW5lZFRhZyA9IC00Citjb25zdCBDZWxsVGFnID0gLTUKK2NvbnN0IEVt
cHR5VmFsdWVUYWcgPSAtNgorY29uc3QgRGVsZXRlZFZhbHVlVGFnID0gLTcKK2NvbnN0IExvd2Vz
dFRhZyA9IERlbGV0ZWRWYWx1ZVRhZworCisjIFR5cGUgY29uc3RhbnRzLgorY29uc3QgU3RyaW5n
VHlwZSA9IDUKK2NvbnN0IE9iamVjdFR5cGUgPSAxMAorCisjIFR5cGUgZmxhZ3MgY29uc3RhbnRz
LgorY29uc3QgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDEKK2NvbnN0IEltcGxlbWVudHNIYXNJ
bnN0YW5jZSA9IDIKK2NvbnN0IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSA4CisKKyMg
SGVhcCBhbGxvY2F0aW9uIGNvbnN0YW50cy4KK2NvbnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJ
bmRleCA9IDEKKworIyBCeXRlY29kZSBvcGVyYW5kIGNvbnN0YW50cy4KK2NvbnN0IEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMAorCisjIENvZGUgdHlwZSBjb25zdGFudHMu
Citjb25zdCBHbG9iYWxDb2RlID0gMAorY29uc3QgRXZhbENvZGUgPSAxCitjb25zdCBGdW5jdGlv
bkNvZGUgPSAyCisKKyMgVGhlIGludGVycHJldGVyIHN0ZWFscyB0aGUgdGFnIHdvcmQgb2YgdGhl
IGFyZ3VtZW50IGNvdW50LgorY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBU
YWdPZmZzZXQKKworIyBUaGlzIG11c3QgbWF0Y2ggd3RmL1ZlY3Rvci5oLgorY29uc3QgVmVjdG9y
U2l6ZU9mZnNldCA9IDAKK2NvbnN0IFZlY3RvckJ1ZmZlck9mZnNldCA9IDQKKworIyBTdHJpbmcg
ZmxhZ3MuCitjb25zdCBIYXNoRmxhZ3M4Qml0QnVmZmVyID0gNjQKKworIyBVdGlsaXRpZXMKK21h
Y3JvIGNyYXNoKCkKKyAgICBzdG9yZWkgMCwgMHhiYmFkYmVlZltdCisgICAgbW92ZSAwLCB0MAor
ICAgIGNhbGwgdDAKK2VuZAorCittYWNybyBhc3NlcnQoYXNzZXJ0aW9uKQorICAgIGlmIEFTU0VS
VF9FTkFCTEVECisgICAgICAgIGFzc2VydGlvbigub2spCisgICAgICAgIGNyYXNoKCkKKyAgICAu
b2s6CisgICAgZW5kCitlbmQKKworbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxs
KGRlc3RpbmF0aW9uUmVnaXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBsciwgZGVz
dGluYXRpb25SZWdpc3RlcgorICAgIGVsc2lmIFg4NgorICAgICAgICBwb3AgZGVzdGluYXRpb25S
ZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyBy
ZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihzb3VyY2VSZWdpc3RlcikKKyAgICBpZiBB
Uk12NworICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgorICAgIGVsc2lmIFg4NgorICAg
ICAgICBwdXNoIHNvdXJjZVJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVu
ZAorZW5kCisKK21hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCisgICAgYWRkcCBhZHZhbmNlICogNCwg
UEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQor
ICAgIGxvYWRpIHBjT2Zmc2V0LCB0MAorICAgIGxzaGlmdGkgMiwgdDAKKyAgICBhZGRwIHQwLCBQ
QworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIGxv
YWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBqbXAgW1BDXQorZW5k
CisKK21hY3JvIGNDYWxsMihmdW5jdGlvbiwgYXJnMSwgYXJnMikKKyAgICBpZiBBUk12NworICAg
ICAgICBtb3ZlIGFyZzEsIHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICBlbHNpZiBYODYK
KyAgICAgICAgcG9rZSBhcmcyLCAwCisgICAgICAgIHBva2UgYXJnMSwgMQorICAgIGVsc2UKKyAg
ICAgICAgZXJyb3IKKyAgICBlbmQKKyAgICBjYWxsIGZ1bmN0aW9uCitlbmQKKworbWFjcm8gY2Fs
bEhlbHBlcihoZWxwZXIpCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQw
LCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKK21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkK
KyAgICBlbmQKK2VuZAorCisjIENhbGwgYSBoZWxwZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3Jv
IGNhbGxDYWxsSGVscGVyKGFkdmFuY2UsIGhlbHBlciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5j
ZSAqIDQsIFBDLCB0MAorICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtj
ZnJdCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBh
Y3Rpb24odDApCitlbmQKKworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikK
KyAgICBjYWxsQ2FsbEhlbHBlcigKKyAgICAgICAgYWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAor
ICAgICAgICBtYWNybyAoY2FsbGVlKQorICAgICAgICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAg
ICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNr
U3dpdGNoVG9KSVQoaW5jcmVtZW50LCBhY3Rpb24pCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENv
ZGVCbG9jazo6bV9leGVjdXRlQ291bnRlclt0MF0sIC5kb25lCisgICAgICAgIGFjdGlvbigpCisg
ICAgLmRvbmU6CisgICAgZW5kCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xv
Z3VlKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICA1LAorICAgICAgICBtYWNybyAo
KQorICAgICAgICAgICAgY0NhbGwyKF9sbGludF9lbnRyeV9vc3IsIGNmciwgUEMpCisgICAgICAg
ICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgICAgIGptcCB0MAorICAgICAgICBlbmQpCitlbmQK
KworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQo
CisgICAgICAgIDEsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBjQ2FsbDIoX2xsaW50
X2xvb3Bfb3NyLCBjZnIsIFBDKQorICAgICAgICAgICAgbW92ZSB0MSwgY2ZyCisgICAgICAgICAg
ICBqbXAgdDAKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JF
cGlsb2d1ZSgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMTAsCisgICAgICAgIG1h
Y3JvICgpCisgICAgICAgICAgICBjYWxsSGVscGVyKF9sbGludF9yZXBsYWNlKQorICAgICAgICBl
bmQpCitlbmQKKworbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoaW5kZXgpCisgICAgYXNzZXJ0KG1h
Y3JvIChvaykgYmliIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgb2sgZW5kKQor
ZW5kCisKKyMgSW5kZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0
ZXJzLiBJbmRleCBpcyBub3QKKyMgY2hhbmdlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWFlcSBpbmRleCwgRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4
XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAor
ICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXls
b2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVm
ZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmls
IGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVl
IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9hZHAgVGFnT2Zmc2V0
W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2Fk
LCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQg
bWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWFlcSBpbmRleCwgRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4
XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAor
ICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YWcK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJP
ZmZzZXRbcGF5bG9hZF0sIHRhZworICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBp
ZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxzaGlmdGkgMywgaW5kZXgKKyAgICBh
ZGRwIGluZGV4LCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQKKyAg
ICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnCisuZG9uZToKK2VuZAorCittYWNybyBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cp
CisgICAgYmlhZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQK
KyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIGV4cGVjdGVkVGFnLCBzbG93Cisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAu
ZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0
W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlm
IHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgYmluZXEgVGFnT2Zmc2V0W3BheWxvYWQs
IGluZGV4LCA4XSwgZXhwZWN0ZWRUYWcsIHNsb3cKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3Bh
eWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworbWFjcm8gd3JpdGVCYXJy
aWVyKHRhZywgcGF5bG9hZCkKKyAgICAjIE5vdGhpbmcgdG8gZG8gc2luY2Ugd2UgZG9uJ3QgaGF2
ZSBhIGdlbmVyYXRpb25hbCBvciBpbmNyZW1lbnRhbCBjb2xsZWN0b3IuCitlbmQKKworIyBFbnRy
eXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlcgorCisjIERvIHRoZSBiYXJlIG1pbmltdW0gcmVx
dWlyZWQgdG8gZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENvZGVCbG9j
ayoKKyMgaW4gdDEKK21hY3JvIHByb2xvZ3VlKG9mZnNldE9mQ29kZUJsb2NrKQorICAgIHByZXNl
cnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgY2Fs
bCBmcmFtZS4KKyAgICBzdG9yZXAgdDIsIFJldHVyblBDW2Nmcl0KKyAgICBsb2FkcCBDYWxsZWVb
Y2ZyXSwgdDEKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MQorICAg
IGxvYWRwIG9mZnNldE9mQ29kZUJsb2NrW3QxXSwgdDEKKyAgICBzdG9yZXAgdDEsIENvZGVCbG9j
a1tjZnJdCisgICAgCisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVCbG9jazo6
bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0s
IFBDCitlbmQKKworbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbigpCisgICAgIyBQcm9maWxl
IHRoZSBhcmd1bWVudHMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hvaWNlIGJ1dCB0byBk
byB0aGlzLgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgdDAKKyAg
ICBidGl6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9uZQorICAgIGxzaGlmdGkgMywgdDAKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zm
c2V0W3QxXSwgdDMKKy5hcmd1bWVudFByb2ZpbGVMb29wOgorICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFn
T2Zmc2V0W3QzXQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MF0sIHQyCisgICAgc3Rv
cmVpIHQyLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbdDNdCisgICAg
YWRkcCBzaXplb2YgVmFsdWVQcm9maWxlLCB0MworICAgIGJzdWJpbnogOCwgdDAsIC5hcmd1bWVu
dFByb2ZpbGVMb29wCisuYXJndW1lbnRQcm9maWxlRG9uZToKKyAgICAKKyAgICAjIENoZWNrIHN0
YWNrIGhlaWdodC4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVnaXN0ZXJzW3Qx
XSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQyCisgICAgbG9h
ZHAgSlNHbG9iYWxEYXRhOjppbnRlcnByZXRlclt0Ml0sIHQyCisgICAgbHNoaWZ0aSAzLCB0MAor
ICAgIGFkZHAgdDAsIGNmciwgdDAKKyAgICBicGFlcSBJbnRlcnByZXRlcjo6bV9yZWdpc3RlckZp
bGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCisKKyAgICAj
IFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBoZWxwZXIuCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVjaykKKy5zdGFja0hlaWdodE9LOgor
ZW5kCisKK21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIGhlbHBlcikKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGJpZXEgdDAs
IENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCisgICAgY2FsbEhlbHBl
cihoZWxwZXIpCisgICAgam1wIGRvbmVMYWJlbAorZW5kCisKK19sbGludF9wcm9ncmFtX3Byb2xv
Z3VlOgorICAgIHByb2xvZ3VlKFByb2dyYW1FeGVjdXRhYmxlOjptX3Byb2dyYW1Db2RlQmxvY2sp
CisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xvZ3VlKCkKKyAgICBkaXNwYXRjaCgwKQorCisK
K19sbGludF9ldmFsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKEV2YWxFeGVjdXRhYmxlOjptX2V2
YWxDb2RlQmxvY2spCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xvZ3VlKCkKKyAgICBkaXNw
YXRjaCgwKQorCisKK19sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZToKKyAgICBwcm9s
b2d1ZShGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbCkKKy5mdW5jdGlvbkZv
ckNhbGxCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKCkKKyAgICBjaGVja1N3aXRj
aFRvSklURm9yUHJvbG9ndWUoKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKEZ1bmN0aW9uRXhlY3V0
YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpCisuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdp
bjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9y
UHJvbG9ndWUoKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29k
ZUJsb2NrRm9yQ2FsbCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ2FsbEJl
Z2luLCBfbGxpbnRfaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKKworCitfbGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShGdW5jdGlvbkV4ZWN1dGFi
bGU6Om1fY29kZUJsb2NrRm9yQ2FsbCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9u
Rm9yQ29uc3RydWN0QmVnaW4sIF9sbGludF9oZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spCisK
KyMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25zCisKK19sbGludF9vcF9lbnRlcjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZGkg
Q29kZUJsb2NrOjptX251bVZhcnMsIHQyCisgICAgYnRpeiB0MiwgLm9wRW50ZXJEb25lCisgICAg
bW92ZSBVbmRlZmluZWRUYWcsIHQwCisgICAgbW92ZSAwLCB0MQorLm9wRW50ZXJMb29wOgorICAg
IHN1YmkgMSwgdDIKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0
b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGJ0aW56IHQyLCAub3BFbnRl
ckxvb3AKKy5vcEVudGVyRG9uZToKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9jcmVh
dGVfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVh
dGVBY3RpdmF0aW9uRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYWN0
aXZhdGlvbikKKy5vcENyZWF0ZUFjdGl2YXRpb25Eb25lOgorICAgIGRpc3BhdGNoKDIpCisKKwor
X2xsaW50X29wX2luaXRfbGF6eV9yZWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0KKyAgICBzdG9yZWkgMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNo
KDIpCisKKworX2xsaW50X29wX2NyZWF0ZV9hcmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
RW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQXJndW1lbnRzRG9uZQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQorLm9wQ3JlYXRlQXJndW1lbnRzRG9uZToKKyAg
ICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJ
bmRleCwgY2xhc3NJbmZvT2Zmc2V0LCBvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSwgc3RydWN0dXJl
LCByZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2xvd0Nhc2UpCisgICAgY29uc3Qgb2Zmc2V0
T2ZNeVNpemVDbGFzcyA9IEpTR2xvYmFsRGF0YTo6aGVhcCArIEhlYXA6Om1fb2JqZWN0U3BhY2Ug
KyBBbGxvY2F0aW9uU3BhY2U6Om1fbWFya2VkU3BhY2UgKyBNYXJrZWRTcGFjZTo6bV9wcmVjaXNl
U2l6ZUNsYXNzZXMgKyBzaXplQ2xhc3NJbmRleCAqIHNpemVvZiBNYXJrZWRTcGFjZTo6U2l6ZUNs
YXNzCisgICAgCisgICAgIyBGSVhNRTogd2UgY2FuIGdldCB0aGUgZ2xvYmFsIGRhdGEgaW4gb25l
IGxvYWQgZnJvbSB0aGUgc3RhY2suCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gx
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbc2NyYXRjaDFdLCBzY3JhdGNoMQor
ICAgIAorICAgICMgR2V0IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LiAgICAKKyAgICBs
b2FkcCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmlyc3RG
cmVlQ2VsbFtzY3JhdGNoMV0sIHJlc3VsdAorICAgIGJ0cHogcmVzdWx0LCBzbG93Q2FzZQorICAg
IAorICAgICMgUmVtb3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LgorICAgIGxvYWRw
IFtyZXN1bHRdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNoMSwgb2Zmc2V0T2ZNeVNpemVD
bGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdCisK
KyAgICAjIEluaXRpYWxpemUgdGhlIG9iamVjdC4KKyAgICBsb2FkcCBjbGFzc0luZm9PZmZzZXRb
c2NyYXRjaDFdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3VsdF0KKyAgICBz
dG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0KKyAgICBzdG9yZXAg
MCwgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0XQorICAgIGFkZHAgc2l6ZW9mIEpTT2Jq
ZWN0LCByZXN1bHQsIHNjcmF0Y2gxCisgICAgc3RvcmVwIHNjcmF0Y2gxLCBvZmZzZXRPZlByb3Bl
cnR5U3RvcmFnZVtyZXN1bHRdCitlbmQKKworX2xsaW50X29wX2NyZWF0ZV90aGlzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBhc3NlcnROb3RDb25zdGFu
dCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENyZWF0
ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5vcENyZWF0ZVRoaXNT
bG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbdDBdLCB0MgorICAgIGJ0cHog
dDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxP
YmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZv
LCBKU0ZpbmFsT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZSwgdDIsIHQwLCB0MSwgdDMsIC5vcENy
ZWF0ZVRoaXNTbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBU
YWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BDcmVhdGVUaGlzU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX3RoaXMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfZ2V0X2NhbGxlZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldCArIENhbGxlZVtjZnJdLCB0MQorICAgIHN0b3Jl
aSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jb252ZXJ0
X3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ29udmVydFRoaXNTbG93Cisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlw
ZUluZm86Om1fdHlwZVt0MF0sIE9iamVjdFR5cGUsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGRp
c3BhdGNoKDIpCisKKy5vcENvbnZlcnRUaGlzU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfY29udmVydF90aGlzKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX25ld19v
YmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRw
IEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0dXJlW3QwXSwgdDEKKyAgICBhbGxv
Y2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERh
dGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIEpTRmluYWxPYmplY3Q6Om1fcHJvcGVydHlTdG9y
YWdlLCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwg
dDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3
T2JqZWN0U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkKKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheV9idWZmZXIpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdleHApCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQxLCB0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9ub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MworICAgIGJpbmVxIHQyLCBCb29sZWFuVGFnLCAub3BOb3RTbG93Cisg
ICAgeG9yaSAxLCB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
c3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKwor
Lm9wTm90U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbm90KQorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZSh0MiwgdDMsIHQxKQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MAorICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRh
ZywgLm9wRXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxvYWRp
IDRbUENdLCB0MgorICAgIGNpZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBU
YWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BFcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2VxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2VxX251bGw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENd
LCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAg
IGJpbmVxIHQxLCBDZWxsVGFnLCAub3BFcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAg
Lm9wRXFOdWxsTm90SW1tZWRpYXRlCisub3BFcU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0MSwg
TnVsbFRhZywgdDIKKyAgICBjaWVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQyLCB0
MQorLm9wRXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0K
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93CisgICAgYmll
cSB0MiwgQ2VsbFRhZywgLm9wTmVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFT
bG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2luZXEgdDAsIHQxLCB0MAorICAgIHN0b3Jl
aSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BOZXFTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXEpCisgICAgZGlzcGF0Y2goNCkKKyAgICAKKwor
X2xsaW50X29wX25lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbEltbWVk
aWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRieiBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQsIHQxCisgICAgam1wIC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKKy5vcE5lcU51bGxJ
bW1lZGlhdGU6CisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2luZXEgdDEsIFVuZGVm
aW5lZFRhZywgdDEKKyAgICBhbmRpIHQyLCB0MQorLm9wTmVxTnVsbE5vdEltbWVkaWF0ZToKKyAg
ICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBz
dHJpY3RFcShlcXVhbGl0eU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0Mywg
dDEpCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAg
YmluZXEgdDIsIHQzLCAub3BTdHJpY3RlcVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLnNs
b3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmluZworICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0
MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJd
LCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cKKy5ub3RTdHJpbmc6Cisg
ICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkKKyAg
ICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6Cisg
ICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRfb3Bf
c3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0
LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVs
cGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9zdHJpY3RuZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0
LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9zdHJpY3RuZXEpCisKKworX2xsaW50
X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xlc3NlcToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3NlcSkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcikKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlSW5j
U2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYmFkZGlv
IDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5jU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9w
cmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVEZWNTbG93CisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBic3ViaW8gMSwgdDEsIC5v
cFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Bvc3RfaW5jOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0
SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBiYWRkaW8gMSwg
dDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNEb25lOgorICAgIGRp
c3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9wb3N0X2RlYzoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10s
IHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdERl
Y1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYnN1YmlvIDEsIHQz
LCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVp
IHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0RGVjRG9uZToKKyAgICBkaXNw
YXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdG9fanNudW1iZXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENd
LCB0MQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MworICAg
IGJpZXEgdDIsIEludDMyVGFnLCAub3BUb0pzbnVtYmVySXNJbnQKKyAgICBiaWFlcSB0MiwgRW1w
dHlWYWx1ZVRhZywgLm9wVG9Kc251bWJlclNsb3cKKy5vcFRvSnNudW1iZXJJc0ludDoKKyAgICBz
dG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvSnNudW1iZXJTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19qc251bWJlcikKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9uZWdhdGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQw
KQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRl
U3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdworICAgIG5l
Z2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0
b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisub3BO
ZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKKyAg
ICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0Mywg
OF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRj
aCgzKQorCisub3BOZWdhdGVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZWdh
dGUpCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKGludGVn
ZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkg
MTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDIsIHQzLCB0MSkKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDAKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0Mywg
SW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBpbnRlZ2VyT3Bl
cmF0aW9uQW5kU3RvcmUodDMsIHQxLCB0MCwgLnNsb3csIHQyKQorICAgIGRpc3BhdGNoKDQpCisK
Ky5vcDFOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90IGFuIGlu
dCwgdGhlIHNlY29uZCBvcGVyYW5kIGNvdWxkIGJlIGFueXRoaW5nLgorICAgIGJpYSB0MiwgTG93
ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MywgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91Ymxl
CisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDEsIGZ0MQorICAgIGpt
cCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDEsIHQz
LCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBmaWkyZCB0
MCwgdDIsIGZ0MAorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQw
LCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3AyTm90SW50OgorICAgICMgRmly
c3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGlzIGRl
ZmluaXRlbHkgbm90LgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGJpYSB0MywgTG93ZXN0VGFn
LCAuc2xvdworICAgIGNpMmQgdDAsIGZ0MAorICAgIGZpaTJkIHQxLCB0MywgZnQxCisgICAgZG91
YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDEsIFtjZnIsIHQyLCA4XQorICAg
IGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3Bh
dGNoKDQpCitlbmQKKworbWFjcm8gYmluYXJ5T3AoaW50ZWdlck9wZXJhdGlvbiwgZG91YmxlT3Bl
cmF0aW9uLCBoZWxwZXIpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8g
KGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBpbnRlZ2Vy
T3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFn
LCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5
bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIGRvdWJsZU9w
ZXJhdGlvbiwgaGVscGVyKQorZW5kCisKK19sbGludF9vcF9hZGQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJh
ZGRpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkg
YWRkZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYWRkKQorCisKK19s
bGludF9vcF9tdWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJtdWxpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQs
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfbXVsKQorCisKK19sbGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cp
IGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfc3ViKQorCisK
K19sbGludF9vcF9kaXY6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9t
U3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4
KQorICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0
MQorICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdo
dCwgLm5vdEludAorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBp
bmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGlu
ZGV4LCA4XQorICAgICAgICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6CisgICAgICAg
ICAgICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6CisgICAgICAg
IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwK
KyAgICAgICAgX2xsaW50X2hlbHBlcl9kaXYpCisKKworX2xsaW50X29wX21vZDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkKKyAgICBkaXNw
YXRjaCg0KQorCisKK21hY3JvIGJpdE9wKG9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEy
W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQyLCB0MywgdDEpCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQwCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBJbnQzMlRh
ZywgLnNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xv
dykKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwg
UGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAg
IGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50X29wX2xz
aGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfbHNoaWZ0KQorCisKK19sbGludF9vcF9yc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlm
dGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3JzaGlmdCkKKworCitf
bGxpbnRfb3BfdXJzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQs
IHJpZ2h0CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAgIGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl91cnNoaWZ0KQorCisKK19sbGludF9vcF9iaXRhbmQ6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHNsb3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdGFu
ZCkKKworCitfbGxpbnRfb3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRP
cCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQsIHJpZ2h0IGVu
ZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXR4b3IpCisKKworX2xsaW50X29wX2JpdG9yOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2Jp
dG9yKQorCisKK19sbGludF9vcF9iaXRub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50
KHQxKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wQml0
bm90U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4
XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNo
KDMpCisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2JpdG5v
dCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFzc2VydE5vdENv
bnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9w
Q2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFz
SW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgZGlzcGF0Y2goMikKKworLm9w
Q2hlY2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NoZWNr
X2hhc19pbnN0YW5jZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbnN0YW5jZW9m
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIENoZWNrIHRoYXQgYmFzZVZhbCBpbXBsZW1l
bnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9yLgorICAgICMgRklYTUU6IFRoaXMg
c2hvdWxkIGJlIGRlcHJlY2F0ZWQuCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGFzc2VydE5v
dENvbnN0YW50KHQwKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFz
SW5zdGFuY2UsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgCisgICAgIyBBY3R1YWxseSBkbyB0aGUg
d29yay4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9h
ZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYXNzZXJ0Tm90Q29u
c3RhbnQodDEpCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BJ
bnN0YW5jZW9mU2xvdworICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgQ2VsbFRhZywg
Lm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0
MQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGJiYiBTdHJ1Y3R1
cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5z
dGFuY2VvZlNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAg
IAorICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCisgICAg
bW92ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxvb3A6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0Ml0sIHQyCisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRP
ZmZzZXQsIHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRpbnog
dDIsIC5vcEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9mRG9u
ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9w
SW5zdGFuY2VvZlNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luc3RhbmNlb2Yp
CisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9pc19udW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9pc19udW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRf
b3BfaXNfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX29i
amVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2lzX29iamVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19mdW5jdGlvbjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Z1
bmN0aW9uKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2luOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfcmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcmVzb2x2ZV9za2lwKQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8g
cmVzb2x2ZUdsb2JhbChzbG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAg
IyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgUHJvcGVy
dHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAjIDEyW1BDXSAgU3Ry
dWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgor
ICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBi
eSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnBuZXEgdDAsIDEyW1BDXSwgc2xvdworICAgIGxv
YWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBd
LCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkg
dDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XQorZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgcmVzb2x2ZUdsb2JhbCgub3BSZXNvbHZlR2xvYmFsU2xvdykKKyAgICBk
aXNwYXRjaCg1KQorCisub3BSZXNvbHZlR2xvYmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCisgICAgZGlzcGF0Y2goNSkKKworCisjIEdpdmVzIHlv
dSB0aGUgc2NvcGUgaW4gdDAsIHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25hbGx5IHBlcmZv
cm0gYWRkaXRpb25hbCBjaGVja3Mgb24gdGhlCisjIHNjb3BlcyBhcyB0aGV5IGFyZSB0cmF2ZXJz
ZWQuIHNjb3BlQ2hlY2soKSBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgcmVnaXN0
ZXIKKyMgaG9sZGluZyB0aGUgc2NvcGUsIGFuZCBhIHJlZ2lzdGVyIHRoYXQgY2FuIGJlIHVzZWQg
Zm9yIHNjcmF0Y2guIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90CisjIHVzZSB0Mywgc28geW91IGNh
biBob2xkIHN0dWZmIGluIHQzIGlmIG5lZWQgYmUuCittYWNybyBnZXRTY29wZShkZUJydWlqaW5J
bmRleE9wZXJhbmQsIHNjb3BlQ2hlY2spCisgICAgbG9hZHAgU2NvcGVDaGFpbiArIFBheWxvYWRP
ZmZzZXRbY2ZyXSwgdDAKKyAgICBsb2FkaSBkZUJydWlqaW5JbmRleE9wZXJhbmQsIHQyCisgICAg
CisgICAgYnRpeiB0MiwgLmRvbmUKKyAgICAKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEK
KyAgICBiaW5lcSBDb2RlQmxvY2s6Om1fY29kZVR5cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5sb29w
CisgICAgYnRieiBDb2RlQmxvY2s6Om1fbmVlZHNGdWxsU2NvcGVDaGFpblt0MV0sIC5sb29wCisg
ICAgCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX2FjdGl2YXRpb25SZWdpc3Rlclt0MV0sIHQxCisK
KyAgICAjIE5lZWQgdG8gY29uZGl0aW9uYWxseSBza2lwIG92ZXIgb25lIHNjb3BlLgorICAgIGJp
ZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAubm9BY3RpdmF0aW9uCisg
ICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBd
LCB0MAorLm5vQWN0aXZhdGlvbjoKKyAgICBzdWJpIDEsIHQyCisgICAgCisgICAgYnRpeiB0Miwg
LmRvbmUKKy5sb29wOgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hh
aW5Ob2RlOjpuZXh0W3QwXSwgdDAKKyAgICBzdWJpIDEsIHQyCisgICAgYnRpbnogdDIsIC5vcEdl
dFNjb3BlZFZhckxvb3AKKworLmRvbmU6CitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFs
X2R5bmFtaWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6
Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0aXZhdGlvblN0
cnVjdHVyZVt0M10sIHQzCisgICAgZ2V0U2NvcGUoCisgICAgICAgIDIwW1BDXSwKKyAgICAgICAg
bWFjcm8gKHNjb3BlLCBzY3JhdGNoKQorICAgICAgICAgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6
Om9iamVjdFtzY29wZV0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdworICAg
ICAgICBlbmQpCisgICAgcmVzb2x2ZUdsb2JhbCgub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3cp
CisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goNikKKwor
Lm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNwYXRjaCg2KQorCisKK19sbGludF9vcF9nZXRfc2Nv
cGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9s
bG93czoKKyAgICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgorICAgICMgOFtQ
Q10gICBJbmRleCBvZiByZWdpc3RlciBpbiB0aGUgc2NvcGUuCisgICAgIyAxMltQQ10gIERlIEJy
dWlqaW4gaW5kZXguCisgICAgZ2V0U2NvcGUoMTJbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gp
IGVuZCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2Fk
cCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2Jq
ZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MiwgOF0s
IHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdLCB0MAorICAgIHN0b3JlaSB0
MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGdldFNjb3BlKDhbUENdLCBtYWNybyAoc2NvcGUs
IHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQy
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDMsIHQyKQorICAgIHdyaXRlQmFycmll
cih0MywgdDIpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAg
bG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIHN0b3JlaSB0
MywgVGFnT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDAs
IHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BD
XSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdp
c3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDEKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNl
dFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFs
T2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBd
LCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQzLCA4XSwgdDIKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MworICAgIHdyaXRlQmFycmllcih0MiwgdDMpCisgICAg
c3RvcmVpIHQyLCBUYWdPZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9m
ZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9i
YXNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cmVzb2x2ZV9iYXNlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2Vuc3VyZV9wcm9w
ZXJ0eV9leGlzdHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xs
aW50X29wX3Jlc29sdmVfd2l0aF9iYXNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKKyAgICBkaXNw
YXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBh
bmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKKyAgICAjIG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFs
bG93IGZvciB0aGUgY2FjaGUgdG8gY2hhbmdlIGFueXRpbWUgaWYgZmFpbHMsIHNpbmNlCisgICAg
IyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4gQXQgYmVzdCB3ZSBnZXQgbHVja3kgYW5kIHRoZSBnZXRf
YnlfaWQgd2lsbCBjb250aW51ZQorICAgICMgdG8gdGFrZSBmYXN0IHBhdGggb24gdGhlIG5ldyBj
YWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBzbG93IHBhdGgsIHdoaWNoIGlzIHdoYXQKKyAgICAjIHdl
IHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAg
bG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBD
ZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxv
YWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0M10sIHQwCisgICAgYnBuZXEgSlNDZWxs
OjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdworICAgIGxvYWRpIDRbUENdLCB0
MQorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDJdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbdDAsIHQyXSwgdDIKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDgpCisK
Ky5vcEdldEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfaWQp
CisgICAgZGlzcGF0Y2goOCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlk
U2xvdykKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRp
IDEyW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0
MworICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cK
KyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0
MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAgd3JpdGVCYXJy
aWVyKHQwLCB0MikKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDFdCisgICAgc3RvcmVp
IHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBkaXNwYXRjaCg4KQorCisKK21hY3JvIHB1
dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5zbG93KQorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGJw
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLnNsb3cKKyAgICBhZGRpdGlvbmFsQ2hl
Y2tzKHQxLCB0MywgLnNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRwIEpTT2Jq
ZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYWRkcCB0MSwgdDMKKyAgICBsb2Fk
aSBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XSwgdDIKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQyKQorICAgIHN0b3JlaSB0MSwgVGFn
T2Zmc2V0W3QzXQorICAgIGxvYWRpIDI0W1BDXSwgdDEKKyAgICBzdG9yZWkgdDIsIFBheWxvYWRP
ZmZzZXRbdDNdCisgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAgIGRp
c3BhdGNoKDgpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlf
aWQpCisgICAgZGlzcGF0Y2goOCkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0OgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNj
cmF0Y2gsIHNsb3cpIGVuZCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAorICAgICAgICBtYWNybyAob2xkU3RydWN0dXJl
LCBzY3JhdGNoLCBzbG93KQorICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0
dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bwor
ICAgICAgICAKKyAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAorICAgICAgICAgICAg
bG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3NjcmF0
Y2hdLCBzY3JhdGNoCisgICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBU
YWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAgICAgICAgLmxvb3A6Cisg
ICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtv
bGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgICAgICAgICBicG5lcSBvbGRTdHJ1
Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdworICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCisgICAg
ICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVj
dHVyZV0sIE51bGxUYWcsIC5sb29wCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQpCisKKwor
X2xsaW50X29wX2RlbF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2RlbF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9nZXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGxv
YWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MV0sIHQyCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93KQor
ICAgIGJwbmVxIFt0MF0sIHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5Ojpt
X3N0b3JhZ2VbdDBdLCB0MworICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0
MF0sIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIEFycmF5
U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBB
cnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQorICAg
IGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAgIHN0b3JlaSB0Miwg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QnlWYWxTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX2dldF9hcmd1bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgSW50MzJUYWcsIHQyLCAub3BHZXRBcmd1bWVu
dEJ5VmFsU2xvdykKKyAgICBhZGRpIDEsIHQyCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBh
eWxvYWRPZmZzZXRbY2ZyXSwgdDEKKyAgICBiaWFlcSB0MiwgdDEsIC5vcEdldEFyZ3VtZW50QnlW
YWxTbG93CisgICAgbmVnaSB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIFRhZ09m
ZnNldFtjZnIsIHQyLCA4XSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
LCB0MQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QXJn
dW1lbnRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9hcmd1bWVu
dF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5X3BuYW1lOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQwCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BHZXRCeVBuYW1lU2xvdykK
KyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgYnBuZXEgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BHZXRCeVBuYW1lU2xv
dykKKyAgICBsb2FkaSAyMFtQQ10sIHQwCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDAKKyAgICBicG5l
cSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDNdLCAub3BH
ZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDI0W1BDXSwgdDAKKyAgICBsb2FkaSBbY2ZyLCB0MCwg
OF0sIHQwCisgICAgc3ViaSAxLCB0MAorICAgIGJpYWVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2Fk
cCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDJdLCB0MgorICAgIGxvYWRpIFRhZ09mZnNl
dFt0MiwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDIsIHQwLCA4XSwgdDMK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQwLCA4
XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNo
KDcpCisKKy5vcEdldEJ5UG5hbWVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9n
ZXRfYnlfcG5hbWUpCisgICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfcHV0X2J5X3ZhbDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCisg
ICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAs
IEludDMyVGFnLCB0MiwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QwXSwgdDAKKyAgICBsb2Fk
cCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDBdLCB0MAorICAgIGJwbmVxIFt0MV0s
IHQwLCAub3BQdXRCeVZhbFNsb3cKKyAgICBiaWFlcSB0MiwgSlNBcnJheTo6bV92ZWN0b3JMZW5n
dGhbdDFdLCAub3BQdXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDFd
LCB0MAorICAgIGJpZXEgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIs
IDhdLCBFbXB0eVZhbHVlVGFnLCAub3BQdXRCeVZhbEVtcHR5Cisub3BQdXRCeVZhbFN0b3JlUmVz
dWx0OgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MykKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MywgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQzLCA4XSwgdDMKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQzKQorICAgIHN0b3JlaSB0
MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdCisgICAgc3Rv
cmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhd
CisgICAgZGlzcGF0Y2goNCkKKworLm9wUHV0QnlWYWxFbXB0eToKKyAgICBhZGRpIDEsIEFycmF5
U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KKyAgICBiaWIgdDIsIEFycmF5U3RvcmFn
ZTo6bV9sZW5ndGhbdDBdLCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0Miwg
dDEKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdCisgICAgam1wIC5v
cFB1dEJ5VmFsU3RvcmVSZXN1bHQKKworLm9wUHV0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9wdXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X2RlbF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9kZWxfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9i
eV9pbmRleDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3B1dF9ieV9pbmRleCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2V0
dGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cHV0X2dldHRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfc2V0dGVyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X3Nl
dHRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9sb29wOgorICAgIG5vcAorX2xs
aW50X29wX2ptcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0Y2hCcmFuY2goNFtQ
Q10pCisKKworbWFjcm8ganVtcFRydWVPckZhbHNlKGNvbmRpdGlvbk9wLCBzbG93KQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIGJpYiBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEJvb2xlYW5UYWcs
IC5zbG93CisgICAgY29uZGl0aW9uT3AoUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgLnRhcmdl
dCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENd
KQorCisuc2xvdzoKKyAgICBzdWJpIDMgKiA0LCBQQworICAgIGNhbGxIZWxwZXIoc2xvdykKKyAg
ICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX3RydWU6CisgICAgbm9wCitf
bGxpbnRfb3BfanRydWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxz
ZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aW56IHZhbHVlLCB0YXJnZXQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2p0cnVlKQorCisKK19sbGludF9vcF9sb29wX2lmX2Zh
bHNlOgorICAgIG5vcAorX2xsaW50X29wX2pmYWxzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAganVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpeiB2
YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZmFsc2UpCisKKworbWFj
cm8gZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYW5kbGVyKQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAuaW1t
ZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgY2VsbEhh
bmRsZXIoU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFy
Z2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQ
Q10pCisKKy5pbW1lZGlhdGU6CisgICAgb3JpIDEsIHQxCisgICAgaW1tZWRpYXRlSGFuZGxlcih0
MSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorZW5kCisKK19sbGludF9vcF9qZXFfbnVsbDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFs
dWUsIHRhcmdldCkgYnRibnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBl
bmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaWVxIHZhbHVlLCBOdWxsVGFnLCB0
YXJnZXQgZW5kKQorICAgIAorCitfbGxpbnRfb3Bfam5lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJ6
IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNy
byAodmFsdWUsIHRhcmdldCkgYmluZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisKKwor
X2xsaW50X29wX2puZXFfcHRyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIENlbGxUYWcsIC5vcEpuZXFQdHJCcmFuY2gKKyAgICBicGVxIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQxLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKKy5vcEpuZXFQdHJCcmFuY2g6Cisg
ICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorLm9wSm5lcVB0ckZhbGxUaHJvZ3VoOgorICAgIGRp
c3BhdGNoKDQpCisKKworbWFjcm8gY29tcGFyZShpbnRlZ2VyQ29tcGFyZSwgZG91YmxlQ29tcGFy
ZSwgaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MworICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZyh0MywgdDIsIHQzKQorICAgIGJpbmVxIHQwLCBJbnQzMlRhZywgLm9wMU5vdElu
dAorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGludGVnZXJDb21wYXJl
KHQxLCB0MywgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5vdEludDoKKyAg
ICBiaWEgdDAsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wMU5v
dEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQz
LCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAg
IGZpaTJkIHQzLCB0MiwgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgZmlpMmQgdDEsIHQwLCBm
dDAKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRj
aCg0KQorCisub3AyTm90SW50OgorICAgIGNpMmQgdDEsIGZ0MAorICAgIGJpYSB0MiwgTG93ZXN0
VGFnLCAuc2xvdworICAgIGZpaTJkIHQzLCB0MiwgZnQxCisgICAgZG91YmxlQ29tcGFyZShmdDAs
IGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLmp1bXBUYXJnZXQ6CisgICAg
ZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikK
KyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX2xlc3M6CisgICAgbm9w
CitfbGxpbnRfb3Bfamxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdCBsZWZ0LCBy
aWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzcykKKworCitfbGxp
bnRfb3Bfam5sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQg
ZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxdW4gbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzKQorCisKK19s
bGludF9vcF9sb29wX2lmX2dyZWF0ZXI6CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcikKKworCitfbGxpbnRfb3Bfam5ncmVhdGVyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5ncmVhdGVyKQorCisKK19sbGludF9vcF9sb29w
X2lmX2xlc3NlcToKKyAgICBub3AKK19sbGludF9vcF9qbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkg
YmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmRsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX2psZXNzZXEpCisKKworX2xsaW50X29wX2pubGVzc2VxOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJkZ3R1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9qbmxlc3NlcSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyZXE6Cisg
ICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0
LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJkZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9q
Z3JlYXRlcmVxKQorCisKK19sbGludF9vcF9qbmdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJp
bHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
dGFyZ2V0KSBiZGx0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfam5ncmVhdGVyZXEpCisKKworX2xsaW50X29wX2xvb3BfaGludDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGRpc3BhdGNoKDEp
CisKKworX2xsaW50X29wX3N3aXRjaF9pbW06CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkaSA0
W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIGxv
YWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVE
YXRhOjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDIs
IHQzLCA0XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAg
IGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wU3dpdGNoSW1tTm90SW50CisgICAgc3ViaSBTaW1wbGVK
dW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJh
bmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3Vn
aAorICAgIGRpc3BhdGNoQnJhbmNoKFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZl
Y3RvckJ1ZmZlck9mZnNldFt0MiwgdDAsIDRdKQorCisub3BTd2l0Y2hJbW1Ob3RJbnQ6CisgICAg
YmliIHQxLCBMb3dlc3RUYWcsIC5vcFN3aXRjaEltbVNsb3cgICMgR28gdG8gc2xvdyBwYXRoIGlm
IGl0J3MgYSBkb3VibGUuCisub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJy
YW5jaCg4W1BDXSkKKworLm9wU3dpdGNoSW1tU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfc3dpdGNoX2ltbSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9zd2l0Y2hf
Y2hhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fY2hhcmFjdGVyU3dpdGNo
SnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MiwgdDMsIDRdLCB0MgorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5v
cFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MQorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU1N0
cmluZzo6bV92YWx1ZVt0MF0sIHQwCisgICAgYmluZXEgU3RyaW5nSW1wbDo6bV9sZW5ndGhbdDBd
LCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTdHJpbmdJbXBsOjptX2Rh
dGE4W3QwXSwgdDEKKyAgICBidGlueiBTdHJpbmdJbXBsOjptX2hhc2hBbmRGbGFnc1t0MF0sIEhh
c2hGbGFnczhCaXRCdWZmZXIsIC5vcFN3aXRjaENoYXI4Qml0CisgICAgbG9hZGggW3QxXSwgdDAK
KyAgICBqbXAgLm9wU3dpdGNoQ2hhclJlYWR5Cisub3BTd2l0Y2hDaGFyOEJpdDoKKyAgICBsb2Fk
YiBbdDFdLCB0MAorLm9wU3dpdGNoQ2hhclJlYWR5OgorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxl
OjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNl
dHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAg
ZGlzcGF0Y2hCcmFuY2goU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVm
ZmVyT2Zmc2V0W3QyLCB0MCwgNF0pCisKKy5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAgICBk
aXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9zdHJp
bmcpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcE5ld0Z1bmNEb25lCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX25ld19mdW5jKQorLm9wTmV3RnVuY0RvbmU6CisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDMpCisK
KworbWFjcm8gZG9DYWxsKGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSAx
NltQQ10sIHQxCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDYWxsU2xvdworICAgIGJpbmVxIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQxLCAub3BDYWxsU2xvdworICAgIGxvYWRpIDhbUENdLCB0MgorICAg
IGxvYWRpIDEyW1BDXSwgdDMKKyAgICBhZGRwIDI0LCBQQworICAgIGxzaGlmdGkgMywgdDMKKyAg
ICBhZGRwIGNmciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBjZnIKKyAgICBz
dG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGxvYWRwIDIw
IC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtj
ZnJdCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QxXSwgdDAKKyAgICBzdG9y
ZXAgY2ZyLCBDYWxsZXJGcmFtZVt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFn
T2Zmc2V0W3QzXQorICAgIHN0b3JlaSB0MSwgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFt0M10KKyAg
ICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10KKyAgICBzdG9yZWkg
dDAsIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGNhbGwgdDIKKyAgICBkaXNw
YXRjaEFmdGVyQ2FsbCgpCisKKy5vcENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBo
ZWxwZXIpCitlbmQKKworX2xsaW50X29wX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGRvQ2FsbChfbGxpbnRfaGVscGVyX2NhbGwpCisKKworX2xsaW50X29wX2NvbnN0cnVjdDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY29uc3RydWN0KQor
CisKK19sbGludF9vcF9jYWxsX3ZhcmFyZ3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHNs
b3dQYXRoRm9yQ2FsbCg2LCBfbGxpbnRfaGVscGVyX2NhbGxfdmFyYXJncykKKworCitfbGxpbnRf
b3BfY2FsbF9ldmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAKKyAgICAjIEV2YWwgaXMg
ZXhlY3V0ZWQgaW4gb25lIG9mIHR3byBtb2RlczoKKyAgICAjCisgICAgIyAxKSBXZSBmaW5kIHRo
YXQgd2UncmUgcmVhbGx5IGludm9raW5nIGV2YWwoKSBpbiB3aGljaCBjYXNlIHRoZQorICAgICMg
ICAgZXhlY3V0aW9uIGlzIHBlcmZvbWVkIGVudGlyZWx5IGluc2lkZSB0aGUgaGVscGVyLCBhbmQg
aXQKKyAgICAjICAgIHJldHVybnMgdGhlIFBDIG9mIGEgZnVuY3Rpb24gdGhhdCBqdXN0IHJldHVy
bnMgdGhlIHJldHVybiB2YWx1ZQorICAgICMgICAgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAg
ICAjCisgICAgIyAyKSBXZSBmaW5kIHRoYXQgd2UncmUgaW52b2tpbmcgc29tZXRoaW5nIGNhbGxl
ZCBldmFsKCkgdGhhdCBpcyBub3QKKyAgICAjICAgIHRoZSByZWFsIGV2YWwuIFRoZW4gdGhlIGhl
bHBlciByZXR1cm5zIHRoZSBQQyBvZiB0aGUgdGhpbmcgdG8KKyAgICAjICAgIGNhbGwsIGFuZCB3
ZSBjYWxsIGl0LgorICAgICMKKyAgICAjIFRoaXMgYWxsb3dzIHVzIHRvIGhhbmRsZSB0d28gY2Fz
ZXMsIHdoaWNoIHdvdWxkIHJlcXVpcmUgYSB0b3RhbCBvZgorICAgICMgdXAgdG8gZm91ciBwaWVj
ZXMgb2Ygc3RhdGUgdGhhdCBjYW5ub3QgYmUgZWFzaWx5IHBhY2tlZCBpbnRvIHR3bworICAgICMg
cmVnaXN0ZXJzIChDIGZ1bmN0aW9ucyBjYW4gcmV0dXJuIHVwIHRvIHR3byByZWdpc3RlcnMsIGVh
c2lseSk6CisgICAgIworICAgICMgLSBUaGUgY2FsbCBmcmFtZSByZWdpc3Rlci4gVGhpcyBtYXkg
b3IgbWF5IG5vdCBoYXZlIGJlZW4gbW9kaWZpZWQKKyAgICAjICAgYnkgdGhlIGhlbHBlciwgYnV0
IHRoZSBjb252ZW50aW9uIGlzIHRoYXQgaXQgcmV0dXJucyBpdC4gSXQncyBub3QKKyAgICAjICAg
dG90YWxseSBjbGVhciBpZiB0aGF0J3MgbmVjZXNzYXJ5LCBzaW5jZSB0aGUgY2ZyIGlzIGNhbGxl
ZSBzYXZlLgorICAgICMgICBCdXQgdGhhdCdzIG91ciBzdHlsZSBpbiB0aGlzIGhlcmUgaW50ZXJw
cmV0ZXIgc28gd2Ugc3RpY2sgd2l0aCBpdC4KKyAgICAjCisgICAgIyAtIEEgYml0IHRvIHNheSBp
ZiB0aGUgaGVscGVyIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCB0aGUgZXZhbCBhbmQgaGFzCisgICAg
IyAgIHRoZSByZXR1cm4gdmFsdWUsIG9yIGRpZCBub3QgZXhlY3V0ZSB0aGUgZXZhbCBidXQgaGFz
IGEgUEMgZm9yIHVzCisgICAgIyAgIHRvIGNhbGwuCisgICAgIworICAgICMgLSBFaXRoZXI6Cisg
ICAgIyAgIC0gVGhlIEpTIHJldHVybiB2YWx1ZSAodHdvIHJlZ2lzdGVycyksIG9yCisgICAgIwor
ICAgICMgICAtIFRoZSBQQyB0byBjYWxsLgorICAgICMKKyAgICAjIEl0IHR1cm5zIG91dCB0byBi
ZSBlYXNpZXIgdG8ganVzdCBhbHdheXMgaGF2ZSB0aGlzIHJldHVybiB0aGUgY2ZyCisgICAgIyBh
bmQgYSBQQyB0byBjYWxsLCBhbmQgdGhhdCBQQyBtYXkgYmUgYSBkdW1teSB0aHVuayB0aGF0IGp1
c3QKKyAgICAjIHJldHVybnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisg
ICAgCisgICAgc2xvd1BhdGhGb3JDYWxsKDQsIF9sbGludF9oZWxwZXJfY2FsbF9ldmFsKQorCisK
K19sbGludF9nZW5lcmljX3JldHVybl9wb2ludDoKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisK
KworX2xsaW50X29wX3RlYXJfb2ZmX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25DcmVh
dGVkCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRl
YXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZAorLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkOgor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQorLm9wVGVh
ck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X3RlYXJfb2ZmX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgc3ViaSAxLCB0MCAgICMgR2V0IHRoZSB1bm1vZGlmaWVkQXJndW1lbnRzUmVn
aXN0ZXIKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9w
VGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
dGVhcl9vZmZfYXJndW1lbnRzKQorLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAg
ZGlzcGF0Y2goMikKKworCittYWNybyBkb1JldHVybigpCisgICAgbG9hZHAgUmV0dXJuUENbY2Zy
XSwgdDIKKyAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKKyAgICByZXN0b3JlUmV0dXJu
QWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICByZXQKK2VuZAorCitfbGxpbnRfb3BfcmV0Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkK
KworCitfbGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDIKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQor
ICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wUmV0T2JqZWN0
T3JUaGlzTm90T2JqZWN0CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisg
ICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmpl
Y3RUeXBlLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBkb1JldHVybigpCisKKy5v
cFJldE9iamVjdE9yVGhpc05vdE9iamVjdDoKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
aSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX21ldGhvZF9jaGVjazoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNoZWNrcyBhbmQg
dXNlIG5vcm1hbCBnZXRfYnlfaWQgb3B0aW1pemF0aW9ucy4KKyAgICBkaXNwYXRjaCgxKQorCisK
K19sbGludF9vcF9zdHJjYXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9zdHJjYXQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfdG9f
cHJpbWl0aXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2Vs
bFRhZywgLm9wVG9QcmltaXRpdmVJc0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MgorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5
cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisgICAgc3RvcmVpIHQx
LCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb1ByaW1pdGl2ZVNsb3dDYXNlOgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19wcmltaXRpdmUpCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfZ2V0X3BuYW1lczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9wbmFtZXMpCisgICAgZGlzcGF0Y2goMCkgIyBUaGUg
aGVscGVyIGVpdGhlciBhZHZhbmNlcyB0aGUgUEMgb3IganVtcHMgdXMgdG8gc29tZXdoZXJlIGVs
c2UuCisKKworX2xsaW50X29wX25leHRfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkaSAxNltQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQxLCA4XSwgdDAKKyAgICBiaWVxIHQwLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDIsIDhdLCAub3BOZXh0UG5hbWVFbmQKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yOjptX2pzU3RyaW5nc1t0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgOF0sIHQzCisg
ICAgYWRkaSAxLCB0MAorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQor
ICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2Fk
aSA4W1BDXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MworICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGJwbmVxIHQxLCBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIC5vcE5leHRQbmFtZVNsb3cK
KyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFByb3RvdHlwZUNoYWlu
W3QyXSwgdDAKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDBdLCB0MAorICAg
IGJ0cHogW3QwXSwgLm9wTmV4dFBuYW1lVGFyZ2V0Cisub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlw
ZUxvb3A6CisgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W3QxXSwg
TnVsbFRhZywgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5
cGUgKyBQYXlsb2FkT2Zmc2V0W3QxXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QyXSwgdDEKKyAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGFkZHAg
NCwgdDAKKyAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKKy5v
cE5leHRQbmFtZVRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgyNFtQQ10pCisKKy5vcE5leHRQ
bmFtZUVuZDoKKyAgICBkaXNwYXRjaCg3KQorCisub3BOZXh0UG5hbWVTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9uZXh0X3BuYW1lKSAjIFRoaXMgZWl0aGVyIGtlZXBzIHRoZSBQ
QyB3aGVyZSBpdCB3YXMgKGNhdXNpbmcgdXMgdG8gbG9vcCkgb3Igc2V0cyBpdCB0byB0YXJnZXQu
CisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfcHVzaF9zY29wZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfc2NvcGUpCisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9wX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9wX3Njb3BlKQorICAgIGRpc3BhdGNo
KDEpCisKKworX2xsaW50X29wX3B1c2hfbmV3X3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9uZXdfc2NvcGUpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfY2F0Y2g6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMg
VGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAo
YmVjYXVzZSB0aGUKKyAgICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNl
dCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3Mg
dGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRo
ZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRo
ZSB0aHJvd2luZworICAgICMgY29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93
aW5nIHRvIHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6
OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2Fk
cCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERh
dGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9i
YWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0ds
b2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpT
R2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1w
dHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdCisgICAg
bG9hZGkgNFtQQ10sIHQyCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF90aHJvdzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Rocm93KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Ro
cm93X3JlZmVyZW5jZV9lcnJvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF9qc3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENd
LCB0MAorICAgIGFkZGkgMyAqIDQsIFBDLCB0MQorICAgIHN0b3JlaSB0MSwgW3QwXQorICAgIGRp
c3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgUEMKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9v
cF9kZWJ1ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2RlYnVnKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Byb2ZpbGVfd2lsbF9j
YWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidHB6IEpJVFN0YWNrRnJhbWU6OmVuYWJs
ZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENh
bGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0cHogSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFBy
b2ZpbGVyUmVmZXJlbmNlW3NwXSwgLm9wUHJvZmlsZURpZENhbGxEb25lCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERvbmU6
CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhyb3df
ZnJvbV9oZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50
ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMpLCBzbworICAgICMgdGhl
IHRocm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29t
ZSB0byBoZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhy
b3dpbmcgcHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0s
IHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisg
ICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworX2xs
aW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5BZGRy
ZXNzQWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3Bd
LCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAor
ICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTkzIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitjbGFzcyBTcGVjaWFsUmVnaXN0ZXIKKyAgZGVmIGluaXRpYWxpemUobmFtZSkKKyAgICBA
bmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgQG5hbWUKKyAg
ZW5kCitlbmQKKworQVJNdjdfREFUQV9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJpcCIpCitB
Uk12N19BRERSX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoInIzIikKKworZGVmIG1vdmVJbW1l
ZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJlbnRseSB3ZSBvbmx5IGhhbmRsZSB0aGUg
c2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1vdi9tb3Z0IGZvciB0aGUgY29tcGxleCBv
bmVzLgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2CisgICAgJGFzbS5wdXRzICJtb3Z3
IFwjI3t2YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzaWYgKH52YWx1ZSkg
Pj0gMCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20ucHV0cyAibXZudyBcIyN7fnZhbHVlfSwg
I3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNlCisgICAgJGFzbS5wdXRzICJtb3Z3IFwj
I3t2YWx1ZSAmIDB4ZmZmZn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBpZiAodmFs
dWUgJiAweGZmZmYwMDAwKSAhPSAwCisgICAgICAkYXNtLnB1dHMgIm1vdnQgXCMje3ZhbHVlID4+
IDE2fSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorICBlbmQKK2VuZAorCitj
bGFzcyBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUKKyAgICB3
aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICJyMCIKKyAgICB3aGVuICJ0MSIsICJhMSIsICJy
MSIKKyAgICAgICJyMSIKKyAgICB3aGVuICJ0MiIsICJhMiIKKyAgICAgICJyMiIKKyAgICB3aGVu
ICJhMyIKKyAgICAgICJyMyIKKyAgICB3aGVuICJ0MyIKKyAgICAgICJyNCIKKyAgICB3aGVuICJ0
NCIKKyAgICAgICJyNyIKKyAgICB3aGVuICJjZnIiCisgICAgICAicjUiCisgICAgZWxzZQorICAg
ICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVN
ZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5k
CisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAor
ICAgIHlpZWxkCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdP
cGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZyIgorICAgICAgImQwIgor
ICAgIHdoZW4gImZyMSIsCisgICAgICAiZDEiCisgICAgd2hlbiAiZnIyIgorICAgICAgImQyIgor
ICAgIHdoZW4gImZyMyIKKyAgICAgICJkMyIKKyAgICB3aGVuICJmcjQiCisgICAgICAiZDQiCisg
ICAgd2hlbiAiZnI1IgorICAgICAgImQ1IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5k
CisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBl
bmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFu
ZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZCBzZWxmCisg
IGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgcmFp
c2UgIkludmFsaWQgaW1tZWRpYXRlICN7dmFsdWV9IiBpZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAy
NTUKKyAgICAiIyR7dmFsdWV9IgorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJs
ZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJh
bmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFw
CisgICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCittb2R1bGUgQVJNdjdBZGRyZXNzVXRpbGl0
aWVzCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICBzZWxmLmFybVY3UHJlcGFyZVBvc3Np
YmxlTWVtb3J5T3BlcmFuZAorICAgICRhc20ucHV0cyAiXHRsZHIgI3tzZWxmLmFybVY3UG9zc2li
bHlNZW1vcnlPcGVyYW5kfSwgI3tBUk12N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9IgorICAgIHlp
ZWxkIEFSTXY3X0RBVEFfUkVHCisgICAgJGFzbS5wdXRzICJcdHN0ciAje0FSTXY3X0RBVEFfUkVH
LmFybVY3T3BlcmFuZH0sICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFuZH0iCisgIGVu
ZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMK
KworICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0
LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAgIG1vdmVJbW1lZGlh
dGUob2Zmc2V0LnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgPCAtMHhm
ZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwg
I3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgICBlbHNlCisgICAgICAiWyN7YmFz
ZS5hcm1WN09wZXJhbmR9LCAje29mZnNldC5hcm1WN09wZXJhbmR9XSIKKyAgICBlbmQKKyAgZW5k
CitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVz
CisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNl
dC52YWx1ZSAhPSAwCisgICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1ZSwgQVJNdjdfQURE
Ul9SRUcpCisgICAgICAkYXNtLnB1dHMgImFkZHcgI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJh
bmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJt
VjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAgICAg
Ilsje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwg
bHNsIFwjI3tzY2FsZX1dIgorICAgIGVsc2UKKyAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0s
ICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVuZAorICBlbmQK
K2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NVdGls
aXRpZXMKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBt
b3ZlSW1tZWRpYXRlKGFkZHJlc3MudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICBlbmQKKyAgCisg
IGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICJbI3tBUk12N19BRERSX1JFRy5h
cm1WN09wZXJhbmR9XSIKKyAgZW5kCitlbmQKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg4IEBACisjIS91c3Iv
YmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6
IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJl
ICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJl
ICJ0cmFuc2Zvcm0iCisKK2NsYXNzIEFzc2VtYmxlcgorICBkZWYgaW5pdGlhbGl6ZShvdXRwKQor
ICAgIEBvdXRwID0gb3V0cAorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBkZWYgZW50
ZXJBc20KKyAgICBAb3V0cC5wdXRzICJhc20gKCIKKyAgICBAc3RhdGUgPSA6YXNtCisgIGVuZAor
ICAKKyAgZGVmIGxlYXZlQXNtCisgICAgQG91dHAucHV0cyAiKSIKKyAgICBAc3RhdGUgPSA6Y3Bw
CisgIGVuZAorICAKKyAgZGVmIGluQXNtCisgICAgZW50ZXJBc20KKyAgICB5aWVsZAorICAgIGxl
YXZlQXNtCisgIGVuZAorICAKKyAgZGVmIHB1dHMobGluZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0
YXRlID09IDphc20KKyAgICBuZXdMaW5lID0gIiIKKyAgICBsaW5lLmVhY2hfYnl0ZSB7CisgICAg
ICB8IGJ5dGUgfAorICAgICAgaWYgYnl0ZSA9PSA/JQorICAgICAgICBuZXdMaW5lICs9ICIlJSIK
KyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGluZSArPSBieXRlLmNocgorICAgICAgZW5kCisgICAg
fQorICAgIEBvdXRwLnB1dHMoKG5ld0xpbmUgKyAiXG4iKS5pbnNwZWN0KQorICBlbmQKK2VuZAor
CiskYXNtID0gQXNzZW1ibGVyLm5ldygkc3Rkb3V0KQorCithc21GaWxlID0gQVJHVi5zaGlmdAor
b2Zmc2V0c0ZpbGUgPSBBUkdWLnNoaWZ0CisKK2FzdCA9IHBhcnNlKGxleChJTzo6cmVhZChhc21G
aWxlKSkpCitvZmZzZXRzTGlzdCwgY29uZmlnSW5kZXggPSBvZmZzZXRzQW5kQ29uZmlndXJhdGlv
bkluZGV4KG9mZnNldHNGaWxlKQorCitmb3JTZXR0aW5ncyhjb21wdXRlU2V0dGluZ3NDb21iaW5h
dGlvbnMoYXN0KVtjb25maWdJbmRleF0sIGFzdCkgeworICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxv
d0xldmVsQVNULCBiYWNrZW5kIHwKKyAgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRp
bmdzKQorICBsb3dMZXZlbEFTVCA9IGxvd0xldmVsQVNULnJlc29sdmUoKmJ1aWxkT2Zmc2V0c01h
cChsb3dMZXZlbEFTVCwgb2Zmc2V0c0xpc3QpKQorICBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihj
b25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCkgeworICAgICRhc20uaW5Bc20g
eworICAgICAgbG93TGV2ZWxBU1QubG93ZXIoYmFja2VuZCkKKyAgICB9CisgIH0KK30KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsODA2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBCYXNlIHV0aWxpdHkgdHlwZXMgZm9yIHRo
ZSBBU1QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFZhbGlkIG1ldGhvZHMgZm9yIE5vZGU6CisjCisj
IG5vZGUuY2hpbGRyZW4gLT4gUmV0dXJucyBhbiBhcnJheSBvZiBpbW1lZGlhdGUgY2hpbGRyZW4u
CisjCisjIG5vZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgc3RyaWN0
IGRlc2NlbmRhbnRzIChjaGlsZHJlbgorIyAgICAgYW5kIGNoaWxkcmVuIG9mIGNoaWxkcmVuLCB0
cmFuc2l0aXZlbHkpLgorIworIyBub2RlLmZsYXR0ZW4gLT4gUmV0dXJucyBhbiBhcnJheSBjb250
YWluaW5nIHRoZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5kCisjICAgICB0aGUgbm9kZSBpdHNlbGYu
CisjCisjIG5vZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0
aG9zZSBlbGVtZW50cyBpbgorIyAgICAgbm9kZS5mbGF0dGVuIHRoYXQgYXJlIG9mIHRoZSBnaXZl
biB0eXBlIChpc19hPyB0eXBlIHJldHVybnMgdHJ1ZSkuCisjCisjIG5vZGUubWFwQ2hpbGRyZW57
fHZ8IC4uLn0gLT4gUmV0dXJucyBhIG5ldyBub2RlIHdpdGggYWxsIGNoaWxkcmVuCisjICAgICBy
ZXBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJsb2NrLgorIworIyBFeGFtcGxlczoKKyMK
KyMgbm9kZS5maWx0ZXIoU2V0dGluZykudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc2V0dGlu
Z3MgdGhhdCB0aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVsc2UgYmxvY2tzIGRlcGVuZCBvbi4KKyMK
KyMgbm9kZS5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBz
dHJ1Y3R1cmUgb2Zmc2V0cworIyAgICAgdGhhdCB0aGUgQVNUIGRlcGVuZHMgb24uCisKK2NsYXNz
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4pCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgIGVuZAorICAKKyAgZGVm
IGNvZGVPcmlnaW5TdHJpbmcKKyAgICAibGluZSBudW1iZXIgI3tAY29kZU9yaWdpbn0iCisgIGVu
ZAorICAKKyAgZGVmIGRlc2NlbmRhbnRzCisgICAgY2hpbGRyZW4uY29sbGVjdHt8dnwgdi5mbGF0
dGVufS5mbGF0dGVuCisgIGVuZAorICAKKyAgZGVmIGZsYXR0ZW4KKyAgICBbc2VsZl0gKyBkZXNj
ZW5kYW50cworICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIodHlwZSkKKyAgICBmbGF0dGVuLnNlbGVj
dHt8dnwgdi5pc19hPyB0eXBlfQorICBlbmQKK2VuZAorCitjbGFzcyBOb0NoaWxkcmVuIDwgTm9k
ZQorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
IGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW10KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hp
bGRyZW4KKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldEtleQorICBh
dHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKHN0cnVjdCwg
ZmllbGQpCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAor
ICAKKyAgZGVmIGhhc2gKKyAgICBAc3RydWN0Lmhhc2ggKyBAZmllbGQuaGFzaCAqIDMKKyAgZW5k
CisgIAorICBkZWYgZXFsPyhvdGhlcikKKyAgICBAc3RydWN0ID09IG90aGVyLnN0cnVjdCBhbmQg
QGZpZWxkID09IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisgICAgCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBBU1Qgbm9kZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworCitjbGFzcyBTdHJ1Y3RPZmZzZXQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVh
ZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3Ry
dWN0LCBmaWVsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QK
KyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBk
ZWYgc2VsZi5mb3JGaWVsZChjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGtleSA9IFN0
cnVjdE9mZnNldEtleS5uZXcoc3RydWN0LCBmaWVsZCkKKyAgICAKKyAgICB1bmxlc3MgQEBtYXBw
aW5nW2tleV0KKyAgICAgIEBAbWFwcGluZ1trZXldID0gU3RydWN0T2Zmc2V0Lm5ldyhjb2RlT3Jp
Z2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1trZXldCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiI3tzdHJ1Y3R9Ojoje2ZpZWxkfSIKKyAgZW5kCisgIAorICBk
ZWYgPD0+KG90aGVyKQorICAgIGlmIEBzdHJ1Y3QgIT0gb3RoZXIuc3RydWN0CisgICAgICByZXR1
cm4gQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgICAgZW5kCisgICAgQGZpZWxkIDw9PiBvdGhl
ci5maWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YgPCBOb0NoaWxkcmVuCisgIGF0dHJf
cmVhZGVyIDpzdHJ1Y3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgZW5kCisgIAor
ICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBzdHJ1
Y3QpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tzdHJ1Y3RdCisgICAgICBAQG1hcHBpbmdbc3RydWN0
XSA9IFNpemVvZi5uZXcoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIGVuZAorICAgIEBAbWFwcGlu
Z1tzdHJ1Y3RdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAic2l6ZW9mICN7QHN0cnVjdH0i
CisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAgICBAc3RydWN0IDw9PiBvdGhlci5zdHJ1
Y3QKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlIDwgTm9DaGlsZHJlbgorICBhdHRyX3Jl
YWRlciA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhbHVlKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICIje3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYgPT0ob3RoZXIpCisgICAgb3Ro
ZXIuaXNfYT8gSW1tZWRpYXRlIGFuZCBvdGhlci52YWx1ZSA9PSBAdmFsdWUKKyAgZW5kCitlbmQK
KworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdo
dAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBl
bmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisg
IGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVs
ZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigj
e2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1t
ZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJl
bgorICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVs
ZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gLSAj
e3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcyA8IE5vZGUK
KyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxl
ZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtA
bGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE11bEltbWVk
aWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKiAje3JpZ2h0LmR1bXB9KSIK
KyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6
Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbQGNoaWxkXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5lZ0lt
bWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICAiKC0je0BjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lz
dGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUg
PSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5h
bWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBA
QG1hcHBpbmdbbmFtZV0gPSBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVu
ZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQor
ICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVh
ZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5n
ID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxl
c3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBGUFJlZ2lzdGVySUQu
bmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxl
IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFt
ZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBw
aW5nW25hbWVdID0gVmFyaWFibGUubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAg
QEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAor
ZW5kCisKK2NsYXNzIEFkZHJlc3MgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6b2Zmc2V0
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBvZmZzZXQpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0Cisg
IGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BiYXNlLCBAb2Zmc2V0XQorICBlbmQKKyAg
CisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBA
YmFzZSksICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29m
ZnNldC5kdW1wfVsje2Jhc2UuZHVtcH1dIgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgg
PCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6aW5kZXgsIDpzY2FsZSwgOm9mZnNldAorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAaW5kZXggPSBp
bmRleAorICAgIEBzY2FsZSA9IHNjYWxlCisgICAgcmFpc2UgdW5sZXNzIFsxLCAyLCA0LCA4XS5t
ZW1iZXI/IEBzY2FsZQorICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBbQGJhc2UsIEBpbmRleCwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFw
Q2hpbGRyZW4KKyAgICBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5
aWVsZCBAaW5kZXgpLCBAc2NhbGUsICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH0sICN7aW5kZXguZHVtcH0sICN7
c2NhbGV9XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzIDwgTm9DaGlsZHJl
bgorICBhdHRyX3JlYWRlciA6YWRkcmVzcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgYWRkcmVzcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBhZGRyZXNzID0gYWRkcmVz
cworICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7YWRkcmVzcy5kdW1wfVtdIgorICBlbmQK
K2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbiA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm9wY29kZSwg
Om9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBvcGNvZGUsIG9wZXJh
bmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG9wY29kZSA9IG9wY29kZQorICAgIEBv
cGVyYW5kcyA9IG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgb3BlcmFu
ZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgSW5zdHJ1Y3Rpb24u
bmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIlx0IiArIG9wY29kZS50b19zICsgIiAiICsgb3BlcmFuZHMuY29s
bGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCisgIGVuZAorZW5kCisKK2NsYXNzIEVycm9yIDwg
Tm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRlcnJvciIKKyAgZW5kCitlbmQK
KworY2xhc3MgQ29uc3REZWNsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6dmFyaWFibGUsIDp2YWx1
ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhcmlhYmxlID0gdmFyaWFibGUKKyAgICBAdmFsdWUg
PSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAdmFyaWFibGUsIEB2YWx1
ZV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBDb25zdERlY2wubmV3KGNvZGVP
cmlnaW4sICh5aWVsZCBAdmFyaWFibGUpLCAoeWllbGQgQHZhbHVlKSkKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICJjb25zdCAje0B2YXJpYWJsZS5kdW1wfSA9ICN7QHZhbHVlLmR1bXB9Igor
ICBlbmQKK2VuZAorCiskbGFiZWxNYXBwaW5nID0ge30KKworY2xhc3MgTGFiZWwgPCBOb0NoaWxk
cmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAor
ICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1h
cHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIg
dW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTGFiZWwKKyAgICBlbHNlCisgICAgICAk
bGFiZWxNYXBwaW5nW25hbWVdID0gTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5k
CisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7
bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsIDwgTm9DaGlsZHJlbgorICBh
dHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKworICBAQHVu
aXF1ZU5hbWVDb3VudGVyID0gMAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBu
YW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1l
IGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTG9j
YWxMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBMb2NhbExhYmVs
Lm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0K
KyAgZW5kCisgIAorICBkZWYgc2VsZi51bmlxdWUKKyAgICB3aGlsZSAkbGFiZWxNYXBwaW5nWyJf
TCN7QEB1bmlxdWVOYW1lQ291bnRlcn0iXQorICAgICAgQEB1bmlxdWVOYW1lQ291bnRlciArPSAx
CisgICAgZW5kCisgICAgZm9yTmFtZShuaWwsICJfTCN7QEB1bmlxdWVOYW1lQ291bnRlcn0iKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFz
cyBMYWJlbFJlZmVyZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0K
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBMYWJlbFJlZmVyZW5jZS5uZXcoY29k
ZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJl
bC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorZW5k
CisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVy
IDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTG9j
YWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAor
ICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICBsYWJlbC5uYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlIDwgTm9kZQorICBhdHRy
X3JlYWRlciA6bGlzdAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGlzdCkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsaXN0ID0gbGlzdAorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIGxpc3QKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisg
ICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIEBsaXN0Lm1hcCgmcHJvYykpCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICBsaXN0LmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiXG4iKQorICBl
bmQKK2VuZAorCitjbGFzcyBUcnVlIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQorICAg
IHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNlID0gVHJ1ZS5uZXcKKyAgCisgIGRl
ZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1ZQor
ICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJ0cnVlIgorICBlbmQKK2VuZAor
CitjbGFzcyBGYWxzZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihu
aWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IEZhbHNlLm5ldworICAKKyAgZGVmIHNlbGYu
aW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVmIHZhbHVlCisgICAgZmFs
c2UKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJmYWxzZSIKKyAgZW5kCitlbmQKKworY2xh
c3MgVHJ1ZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBUcnVlLmluc3RhbmNlCisgIGVuZAorZW5k
CisKK2NsYXNzIEZhbHNlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAgIEZhbHNlLmluc3RhbmNlCisg
IGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpu
YW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30K
KyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBt
YXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBTZXR0aW5nLm5ldyhjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQgPCBOb2RlCisgIGF0dHJf
cmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxl
ZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAg
QHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEBy
aWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBbmQubmV3KGNvZGVPcmln
aW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIigje2xlZnQuZHVtcH0gYW5kICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitj
bGFzcyBPciA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJl
bgorICAgIE9yLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IG9yICN7cmlnaHQuZHVt
cH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBOb3QgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpjaGls
ZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAY2hpbGQgPSBjaGlsZAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgor
ICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5v
dC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiKG5vdCAje2NoaWxkLmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgU2tpcCA8IE5v
Q2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0c2tpcCIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgSWZUaGVuRWxzZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnByZWRpY2F0ZSwgOnRoZW5D
YXNlCisgIGF0dHJfYWNjZXNzb3IgOmVsc2VDYXNlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBwcmVkaWNhdGUsIHRoZW5DYXNlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QHByZWRpY2F0ZSA9IHByZWRpY2F0ZQorICAgIEB0aGVuQ2FzZSA9IHRoZW5DYXNlCisgICAgQGVs
c2VDYXNlID0gU2tpcC5uZXcoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4K
KyAgICBpZiBAZWxzZUNhc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2UsIEBlbHNlQ2Fz
ZV0KKyAgICBlbHNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNlXQorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4s
ICh5aWVsZCBAcHJlZGljYXRlKSwgKHlpZWxkIEB0aGVuQ2FzZSksICh5aWVsZCBAZWxzZUNhc2Up
KQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImlmICN7cHJlZGljYXRlLmR1bXB9XG4iICsg
dGhlbkNhc2UuZHVtcCArICJcbmVsc2VcbiIgKyBlbHNlQ2FzZS5kdW1wICsgIlxuZW5kIgorICBl
bmQKK2VuZAorCitjbGFzcyBNYWNybyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5hbWUsIDp2YXJp
YWJsZXMsIDpib2R5CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCB2YXJp
YWJsZXMsIGJvZHkpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAg
ICBAdmFyaWFibGVzID0gdmFyaWFibGVzCisgICAgQGJvZHkgPSBib2R5CisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgQHZhcmlhYmxlcyArIFtAYm9keV0KKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBNYWNyby5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEB2YXJpYWJsZXMu
bWFwe3x2fCB5aWVsZCB2fSwgKHlpZWxkIEBib2R5KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICJtYWNybyAje25hbWV9KCIgKyB2YXJpYWJsZXMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2lu
KCIsICIpICsgIilcbiIgKyBib2R5LmR1bXAgKyAiXG5lbmQiCisgIGVuZAorZW5kCisKK2NsYXNz
IE1hY3JvQ2FsbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5hbWUsIDpvcGVyYW5kcworICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcworICAg
IHJhaXNlIHVubGVzcyBAb3BlcmFuZHMKKyAgICBAb3BlcmFuZHMuZWFjaHt8dnwgcmFpc2UgdW5s
ZXNzIHZ9CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgQG9wZXJhbmRzCisgIGVuZAor
ICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdp
biwgQG5hbWUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgIlx0I3tuYW1lfSgiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIp
ICsgIikiCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2JhY2tlbmRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVp
cmUgIng4NiIKKworQkFDS0VORFMgPQorICBbCisgICAiWDg2IiwKKyAgICJBUk12NyIKKyAgXQor
CitXT1JLSU5HX0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIKKyAgXQorCitCQUNLRU5EX1BBVFRF
Uk4gPSBSZWdleHAubmV3KCdcXEEoJyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFonKQor
CitjbGFzcyBOb2RlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIHNlbmQoImxvd2VyIiArIG5hbWUp
CisgIGVuZAorZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBsb3dlcigpIGZvciB0aG9zZSBub2RlcyB0
aGF0IGFyZSBiYWNrZW5kLWFnbm9zdGljCisKK2RlZiBzYW5pdGl6ZUxhYmVsTmFtZShuYW1lKQor
ICAjIFNvbWUgcGxhdGZvcm1zIGRvbid0IHdhbnQgdGhlIGxlYWRpbmcgIl8iLiBJZiB3ZSBldmVy
IHdhbnQgdG8gZG8gc29tZXRoaW5nCisgICMgYWJvdXQgdGhhdCwgaXQgd291bGQgYmUgaGVyZS4K
KyAgbmFtZQorZW5kCisKK2NsYXNzIExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAgICRhc20u
cHV0cyAiLmdsb2JsICN7c2FuaXRpemVMYWJlbE5hbWUoc2VsZi5uYW1lKX0iCisgICAgJGFzbS5w
dXRzICIje3Nhbml0aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9OiIKKyAgZW5kCitlbmQKKworY2xh
c3MgTG9jYWxMYWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHMgIl9fb2FfI3tz
ZWxmLm5hbWVbMS4uLTFdfToiCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAKKyAgZGVmIGxvd2Vy
KG5hbWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBsb3dlcihuYW1lKQor
ICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUubG93ZXIobmFtZSkK
KyAgICB9CisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29m
ZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKKyMhL3Vzci9i
aW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworJDog
PDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUg
Im9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUg
InRyYW5zZm9ybSIKKworZGVmIGVtaXRNYWdpY051bWJlcgorICBPRkZTRVRfTUFHSUNfTlVNQkVS
Uy5lYWNoIHsKKyAgICB8IG51bWJlciB8CisgICAgcHV0cyAiI3tudW1iZXJ9LCIKKyAgfQorZW5k
CisKK29yaWdpbmFsQVNUID0gcGFyc2UobGV4KCRzdGRpbi5yZWFkKSkKKworZW1pdENvZGVJbkFs
bENvbmZpZ3VyYXRpb25zKG9yaWdpbmFsQVNUKSB7CisgIHwgc2V0dGluZ3MsIGFzdCwgYmFja2Vu
ZCwgaW5kZXggfAorICBvZmZzZXRzTGlzdCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlx
LnNvcnQKKyAgc2l6ZXNMaXN0ID0gYXN0LmZpbHRlcihTaXplb2YpLnVuaXEuc29ydAorICAKKyAg
bGVuZ3RoID0gKE9GRlNFVF9NQUdJQ19OVU1CRVJTLnNpemUgKyAxKSAqICgxICsgb2Zmc2V0c0xp
c3Quc2l6ZSArIHNpemVzTGlzdC5zaXplKQorICAKKyAgcHV0cyAic3RhdGljIGNvbnN0IHVuc2ln
bmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICBlbWl0TWFnaWNOdW1iZXIKKyAg
cHV0cyAiI3tpbmRleH0sIgorICBvZmZzZXRzTGlzdC5lYWNoIHsKKyAgICB8IG9mZnNldCB8Cisg
ICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgcHV0cyAiT0ZGTElORV9BU01fT0ZGU0VUT0YoI3tvZmZz
ZXQuc3RydWN0fSwgI3tvZmZzZXQuZmllbGR9KSwiCisgIH0KKyAgc2l6ZXNMaXN0LmVhY2ggewor
ICAgIHwgb2Zmc2V0IHwKKyAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICBwdXRzICJzaXplb2YoI3tv
ZmZzZXQuc3RydWN0fSksIgorICB9CisgIHB1dHMgIn07IgorfQorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworTUFDUk9fSU5TVFJVQ1RJT05TID0KKyAgWworICAgImFkZGkiLAorICAgImFu
ZGkiLAorICAgImxzaGlmdGkiLAorICAgIm11bGkiLAorICAgIm5lZ2kiLAorICAgIm5vdGkiLAor
ICAgIm9yaSIsCisgICAicnNoaWZ0aSIsCisgICAidXJzaGlmdGkiLAorICAgInN1YmkiLAorICAg
InhvcmkiLAorICAgImxvYWRpIiwKKyAgICJsb2FkYiIsCisgICAibG9hZGgiLAorICAgInN0b3Jl
aSIsCisgICAic3RvcmViIiwKKyAgICJsb2FkZCIsCisgICAibW92ZWQiLAorICAgInN0b3JlZCIs
CisgICAiYWRkZCIsCisgICAiZGl2ZCIsCisgICAic3ViZCIsCisgICAibXVsZCIsCisgICAic3Fy
dGQiLAorICAgImNpMmQiLAorICAgImZpaTJkIiwgIyB1c2FnZTogZmlpMmQgPGdwciB3aXRoIGxl
YXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPiwg
PGZwcj4KKyAgICJmZDJpaSIsICMgdXNhZ2U6IGZkMmlpIDxmcHI+LCA8Z3ByIHdpdGggbGVhc3Qg
c2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+CisgICAi
YmRlcSIsCisgICAiYmRuZXEiLAorICAgImJkZ3QiLAorICAgImJkZ3RlcSIsCisgICAiYmRsdCIs
CisgICAiYmRsdGVxIiwKKyAgICJiZGVxdW4iLAorICAgImJkbmVxdW4iLAorICAgImJkZ3R1biIs
CisgICAiYmRndGVxdW4iLAorICAgImJkbHR1biIsCisgICAiYmRsdGVxdW4iLAorICAgImJ0ZDJp
IiwKKyAgICJ0ZDJpIiwKKyAgICJiY2QyaSIsCisgICAibW92ZHoiLAorICAgInBvcCIsCisgICAi
cHVzaCIsCisgICAibW92ZSIsCisgICAic3hpMnAiLAorICAgInp4aTJwIiwKKyAgICJub3AiLAor
ICAgImJpZXEiLAorICAgImJpbmVxIiwKKyAgICJiaWEiLAorICAgImJpYWVxIiwKKyAgICJiaWIi
LAorICAgImJpYmVxIiwKKyAgICJiaWd0IiwKKyAgICJiaWd0ZXEiLAorICAgImJpbHQiLAorICAg
ImJpbHRlcSIsCisgICAiYmJlcSIsCisgICAiYmJuZXEiLAorICAgImJiYSIsCisgICAiYmJhZXEi
LAorICAgImJiYiIsCisgICAiYmJiZXEiLAorICAgImJiZ3QiLAorICAgImJiZ3RlcSIsCisgICAi
YmJsdCIsCisgICAiYmJsdGVxIiwKKyAgICJidGlvIiwKKyAgICJidGlzIiwKKyAgICJidGl6IiwK
KyAgICJidGlueiIsCisgICAiYnRibyIsCisgICAiYnRicyIsCisgICAiYnRieiIsCisgICAiYnRi
bnoiLAorICAgImptcCIsCisgICAiYmFkZGlvIiwKKyAgICJiYWRkaXMiLAorICAgImJhZGRpeiIs
CisgICAiYmFkZGlueiIsCisgICAiYnN1YmlvIiwKKyAgICJic3ViaXMiLAorICAgImJzdWJpeiIs
CisgICAiYnN1YmlueiIsCisgICAiYm11bGlvIiwKKyAgICJibXVsaXMiLAorICAgImJtdWxpeiIs
CisgICAiYm11bGlueiIsCisgICAiYm9yaW8iLAorICAgImJvcmlzIiwKKyAgICJib3JpeiIsCisg
ICAiYm9yaW56IiwKKyAgICJicmVhayIsCisgICAiY2FsbCIsCisgICAicmV0IiwKKyAgICJjaWVx
IiwKKyAgICJjaW5lcSIsCisgICAiY2lhIiwKKyAgICJjaWFlcSIsCisgICAiY2liIiwKKyAgICJj
aWJlcSIsCisgICAiY2lndCIsCisgICAiY2lndGVxIiwKKyAgICJjaWx0IiwKKyAgICJjaWx0ZXEi
LAorICAgInRpbyIsCisgICAidGlzIiwKKyAgICJ0aXoiLAorICAgInRpbnoiLAorICAgInRibyIs
CisgICAidGJzIiwKKyAgICJ0YnoiLAorICAgInRibnoiLAorICAgInBlZWsiLAorICAgInBva2Ui
LAorICAgImJwZXEiLAorICAgImJwbmVxIiwKKyAgICJicGEiLAorICAgImJwYWVxIiwKKyAgICJi
cGIiLAorICAgImJwYmVxIiwKKyAgICJicGd0IiwKKyAgICJicGd0ZXEiLAorICAgImJwbHQiLAor
ICAgImJwbHRlcSIsCisgICAiYWRkcCIsCisgICAiYW5kcCIsCisgICAib3JwIiwKKyAgICJzdWJw
IiwKKyAgICJ4b3JwIiwKKyAgICJsb2FkcCIsCisgICAiY3BlcSIsCisgICAiY3BuZXEiLAorICAg
ImNwYSIsCisgICAiY3BhZXEiLAorICAgImNwYiIsCisgICAiY3BiZXEiLAorICAgImNwZ3QiLAor
ICAgImNwZ3RlcSIsCisgICAiY3BsdCIsCisgICAiY3BsdGVxIiwKKyAgICJzdG9yZXAiLAorICAg
ImJ0cG8iLAorICAgImJ0cHMiLAorICAgImJ0cHoiLAorICAgImJ0cG56IiwKKyAgICJiYWRkcG8i
LAorICAgImJhZGRwcyIsCisgICAiYmFkZHB6IiwKKyAgICJiYWRkcG56IgorICBdCisKK1g4Nl9J
TlNUUlVDVElPTlMgPQorICBbCisgICAiY2RxaSIsCisgICAiaWRpdmkiCisgIF0KKworSU5TVFJV
Q1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05TICsgWDg2X0lOU1RSVUNUSU9OUworCitJTlNUUlVD
VElPTl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgSU5TVFJVQ1RJT05TLmpvaW4oJyl8
KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29m
ZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rv
cl9jb25zdGFudHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01BR0lDX05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcs
IDB4MGZmNWU3NTUgXQorCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L29mZnNldHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vb2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU2IEBACisjIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJv
ZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cyIKKworT0ZGU0VUX01BR0lDX05VTUJFUlMgPSBbIDB4
ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBvZmZzZXRzTGlzdChhc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIHNpemVzTGlzdChhc3QpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBS
ZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCBzaXplcyB1c2VkIGJ5IHRoZSBBU1QuICAgICAg
ICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgb2Zm
c2V0c0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CitlbmQK
KworZGVmIHNpemVzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKK2Vu
ZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBvZmZzZXRzQW5kQ29uZmln
dXJhdGlvbkluZGV4KGFzdCwgZmlsZSkgLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
ICAgICBbb2Zmc2V0cywgaW5kZXhdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBQYXJzZXMgdGhlIG9mZnNldHMgZnJv
bSBhIGZpbGUgYW5kIHJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHRoZSAjCisjIGluZGV4
IG9mIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgaXMgdmFsaWQgaW4gdGhpcyBidWlsZCB0YXJnZXQu
ICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBvZmZzZXRz
QW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUpCisgIGluZGV4ID0gbmlsCisgIG9mZnNldHMgPSBb
XQorICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBuaWwKKyAgCisgIGRlZiByZWFkSW50KGVuZGlh
bm5lc3MsIGlucCkKKyAgICBieXRlcyA9IFtdCisgICAgNC50aW1lcyB7CisgICAgICBieXRlcyA8
PCBpbnAuZ2V0Ynl0ZQorICAgIH0KKyAgICAKKyAgICBpZiBlbmRpYW5uZXNzID09IDpsaXR0bGUK
KyAgICAgICMgTGl0dGxlIGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDAgfAorICAgICAgIGJ5
dGVzWzFdIDw8IDggfAorICAgICAgIGJ5dGVzWzJdIDw8IDE2IHwKKyAgICAgICBieXRlc1szXSA8
PCAyNCkKKyAgICBlbHNlCisgICAgICAjIEJpZyBlbmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAy
NCB8CisgICAgICAgYnl0ZXNbMV0gPDwgMTYgfAorICAgICAgIGJ5dGVzWzJdIDw8IDggfAorICAg
ICAgIGJ5dGVzWzNdIDw8IDApCisgICAgZW5kCisgIGVuZAorICAKKyAgWzpsaXR0bGUsIDpiaWdd
LmVhY2ggeworICAgIHwgZW5kaWFubmVzcyB8CisgICAgbWFnaWNCeXRlcyA9IFtdCisgICAgTUFH
SUNfTlVNQkVSUy5lYWNoIHsKKyAgICAgIHwgbnVtYmVyIHwKKyAgICAgIGN1cnJlbnRCeXRlcyA9
IFtdCisgICAgICA0LnRpbWVzIHsKKyAgICAgICAgY3VycmVudEJ5dGVzIDw8IChudW1iZXIgJiAw
eGZmKQorICAgICAgICBudW1iZXIgPj49IDgKKyAgICAgIH0KKyAgICAgIGlmIGVuZGlhbm5lc3Mg
PT0gOmJpZworICAgICAgICBjdXJyZW50Qnl0ZXMucmV2ZXJzZSEKKyAgICAgIGVuZAorICAgICAg
bWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0ZXMKKyAgICB9CisgICAgCisgICAgRmlsZS5vcGVuKGZp
bGUsICJyIikgeworICAgICAgfCBpbnAgfAorICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAg
IGxvb3AgeworICAgICAgICBieXRlID0gaW5wLmdldGJ5dGUKKyAgICAgICAgYnJlYWsgdW5sZXNz
IGJ5dGUKKyAgICAgICAgaWYgYnl0ZSA9PSBtYWdpY0J5dGVzW3doZXJlSW5NYXJrZXJdCisgICAg
ICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisgICAgICAgICAgaWYgd2hlcmVJbk1hcmtlciA9PSBt
YWdpY0J5dGVzLnNpemUKKyAgICAgICAgICAgICMgV2UgaGF2ZSBhIG1hdGNoISBJZiB3ZSBoYXZl
IG5vdCB5ZXQgcmVhZCB0aGUgZW5kaWFubmVzcyBtYXJrZXIgYW5kIGluZGV4LAorICAgICAgICAg
ICAgIyB0aGVuIHJlYWQgdGhvc2Ugbm93OyBvdGhlcndpc2UgcmVhZCBhbiBvZmZzZXQuCisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGlmIG5vdCBpbmRleAorICAgICAgICAgICAgICBpbmRleCA9
IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICBvZmZzZXRzIDw8IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAgICAgZW5kCisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICAgICAgZW5k
CisgICAgICAgIGVsc2UKKyAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICBlbmQK
KyAgICAgIH0KKyAgICB9CisgICAgCisgICAgYnJlYWsgaWYgaW5kZXgKKyAgfQorICAKKyAgcmFp
c2UgdW5sZXNzIGluZGV4CisgIAorICBbb2Zmc2V0cywgaW5kZXhdCitlbmQKKworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgYnVpbGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xp
c3QpIC0+IFtvZmZzZXRzLCBzaXplc10gICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIEJ1aWxkcyBhIG1hcHBpbmcgYmV0d2VlbiBTdHJ1Y3RPZmZzZXQgbm9kZXMgYW5kIHRoZWly
IHZhbHVlcy4gICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Rl
ZiBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkKKyAgb2Zmc2V0c01hcCA9IHt9Cisg
IHNpemVzTWFwID0ge30KKyAgYXN0T2Zmc2V0c0xpc3QgPSBvZmZzZXRzTGlzdChhc3QpCisgIGFz
dFNpemVzTGlzdCA9IHNpemVzTGlzdChhc3QpCisgIHJhaXNlIHVubGVzcyBhc3RPZmZzZXRzTGlz
dC5zaXplICsgYXN0U2l6ZXNMaXN0LnNpemUgPT0gb2Zmc2V0c0xpc3Quc2l6ZQorICBvZmZzZXRz
TGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBzdHJ1Y3RPZmZzZXQsIGluZGV4IHwK
KyAgICBvZmZzZXRzTWFwW3N0cnVjdE9mZnNldF0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9Cisg
IHNpemVzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBzaXplb2YsIGluZGV4IHwK
KyAgICBzaXplc01hcFtzaXplb2ZdID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQorICBbb2Zmc2V0
c01hcCwgc2l6ZXNNYXBdCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vcGFyc2VyLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OTEgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUg
Imluc3RydWN0aW9ucyIKK3JlcXVpcmUgInJlZ2lzdGVycyIKKworY2xhc3MgVG9rZW4KKyAgYXR0
cl9yZWFkZXIgOmNvZGVPcmlnaW4sIDpzdHJpbmcKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIHN0cmluZykKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgICBAc3RyaW5n
ID0gc3RyaW5nCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIGlmIG90aGVyLmlzX2E/
IFRva2VuCisgICAgICBAc3RyaW5nID09IG90aGVyLnN0cmluZworICAgIGVsc2UKKyAgICAgIEBz
dHJpbmcgPT0gb3RoZXIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgPX4ob3RoZXIpCisgICAg
QHN0cmluZyA9fiBvdGhlcgorICBlbmQKKyAgCisgIGRlZiB0b19zCisgICAgIiN7QHN0cmluZy5p
bnNwZWN0fSBhdCBsaW5lICN7Y29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJy
b3IoKmNvbW1lbnQpCisgICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgIHJhaXNlICJQYXJzZSBl
cnJvcjogI3t0b19zfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9f
c306ICN7Y29tbWVudFswXX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIFRoZSBsZXhlci4gVGFrZXMgYSBzdHJpbmcgYW5kIHJldHVy
bnMgYW4gYXJyYXkgb2YgdG9rZW5zLiAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisKK2RlZiBsZXgoc3RyKQorICByZXN1bHQgPSBbXQorICBsaW5lTnVtYmVy
ID0gMQorICB3aGlsZSBub3Qgc3RyLmVtcHR5PworICAgIGNhc2Ugc3RyCisgICAgd2hlbiAvXEFc
IyhbXlxuXSopLworICAgICAgIyBjb21tZW50LCBpZ25vcmUKKyAgICB3aGVuIC9cQVxuLworICAg
ICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICAgIGxpbmVOdW1iZXIg
Kz0gMQorICAgIHdoZW4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQg
PDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBXC4oW2EtekEtWjAtOV9d
KikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4g
L1xBXyhbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJl
ciwgJCYpCisgICAgd2hlbiAvXEEoWyBcdF0rKS8KKyAgICAgICMgd2hpdGVzcGFjZSwgaWdub3Jl
CisgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5l
dyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAgICB3aGVuIC9cQTAoWzAtN10rKS8KKyAgICAg
IHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYub2N0LnRvX3MpCisgICAgd2hlbiAv
XEEoWzAtOV0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisg
ICAgd2hlbiAvXEE6Oi8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYp
CisgICAgd2hlbiAvXEFbOixcKFwpXFtcXT1cK1wtKl0vCisgICAgICByZXN1bHQgPDwgVG9rZW4u
bmV3KGxpbmVOdW1iZXIsICQmKQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJMZXhlciBlcnJvciBh
dCBsaW5lIG51bWJlciAje2xpbmVOdW1iZXJ9LCB1bmV4cGVjdGVkIHNlcXVlbmNlICN7c3RyWzAu
LjIwXS5pbnNwZWN0fSIKKyAgICBlbmQKKyAgICBzdHIgPSAkfi5wb3N0X21hdGNoCisgIGVuZAor
ICByZXN1bHQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUb2tl
biBpZGVudGlmaWNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgaXNSZWdp
c3Rlcih0b2tlbikKKyAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTgorZW5kCisKK2RlZiBpc0lu
c3RydWN0aW9uKHRva2VuKQorICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKwor
ZGVmIGlzS2V5d29yZCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBKCh0cnVlKXwoZmFsc2UpfChpZil8
KHRoZW4pfChlbHNlKXwoZWxzaWYpfChlbmQpfChhbmQpfChvcil8KG5vdCl8KG1hY3JvKXwoY29u
c3QpfChzaXplb2YpfChlcnJvcikpXFovIG9yCisgICAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVS
TiBvcgorICAgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJZGVu
dGlmaWVyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKVxaLyBh
bmQgbm90IGlzS2V5d29yZCh0b2tlbikKK2VuZAorCitkZWYgaXNMYWJlbCh0b2tlbikKKyAgdG9r
ZW4gPX4gL1xBXyhbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc0xvY2FsTGFiZWwodG9r
ZW4pCisgIHRva2VuID1+IC9cQVwuKFthLXpBLVowLTlfXSopXFovCitlbmQKKworZGVmIGlzVmFy
aWFibGUodG9rZW4pCisgIGlzSWRlbnRpZmllcih0b2tlbikgb3IgaXNSZWdpc3Rlcih0b2tlbikK
K2VuZAorCitkZWYgaXNJbnRlZ2VyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbMC05XS8KK2VuZAor
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgcGFyc2VyLiBUYWtlcyBh
biBhcnJheSBvZiB0b2tlbnMgYW5kIHJldHVybnMgYW4gQVNULiBNZXRob2RzICAgICAjCisjIG90
aGVyIHRoYW4gcGFyc2UodG9rZW5zKSBhcmUgbm90IGZvciBwdWJsaWMgY29uc3VtcHRpb24uICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIFBh
cnNlcgorICBkZWYgaW5pdGlhbGl6ZSh0b2tlbnMpCisgICAgQHRva2VucyA9IHRva2VucworICAg
IEBpZHggPSAwCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYg
QHRva2Vuc1tAaWR4XQorICAgICAgQHRva2Vuc1tAaWR4XS5wYXJzZUVycm9yKCpjb21tZW50KQor
ICAgIGVsc2UKKyAgICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICAgIHJhaXNlICJQYXJzZSBl
cnJvciBhdCBlbmQgb2YgZmlsZSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlBhcnNlIGVy
cm9yIGF0IGVuZCBvZiBmaWxlOiAje2NvbW1lbnRbMF19IgorICAgICAgZW5kCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIGNvbnN1bWUocmVnZXhwKQorICAgIGlmIHJlZ2V4cAorICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9fiByZWdleHAKKyAgICBlbHNlCisgICAgICBw
YXJzZUVycm9yIHVubGVzcyBAaWR4ID09IEB0b2tlbnMubGVuZ3RoCisgICAgZW5kCisgICAgQGlk
eCArPSAxCisgIGVuZAorICAKKyAgZGVmIHNraXBOZXdMaW5lCisgICAgd2hpbGUgQHRva2Vuc1tA
aWR4XSA9PSAiXG4iCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYg
cGFyc2VQcmVkaWNhdGVBdG9tCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibm90IgorICAgICAg
QGlkeCArPSAxCisgICAgICBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICBlbHNpZiBAdG9rZW5zW0Bp
ZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmVz
dWx0ID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlk
eF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gInRydWUiCisgICAgICByZXN1bHQgPSBUcnVlLmluc3RhbmNlCisgICAgICBA
aWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImZhbHNl
IgorICAgICAgcmVzdWx0ID0gRmFsc2UuaW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAgICAg
cmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3Vs
dCA9IFNldHRpbmcuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlk
eF0uc3RyaW5nKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAg
ICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQW5k
CisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4
XSA9PSAiYW5kIgorICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgor
ICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVBy
ZWRpY2F0ZUF0b20KKyAgICAgIHJlc3VsdCA9IEFuZC5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCBy
aWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNh
dGUKKyAgICAjIHNvbWUgZXhhbXBsZXMgb2YgcHJlY2VkZW5jZToKKyAgICAjIG5vdCBhIGFuZCBi
IC0+IChub3QgYSkgYW5kIGIKKyAgICAjIGEgYW5kIGIgb3IgYyAtPiAoYSBhbmQgYikgb3IgYwor
ICAgICMgYSBvciBiIGFuZCBjIC0+IGEgb3IgKGIgYW5kIGMpCisgICAgCisgICAgcmVzdWx0ID0g
cGFyc2VQcmVkaWNhdGVBbmQKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJvciIKKyAgICAg
IGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQor
ICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICAg
IHJlc3VsdCA9IE9yLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAg
IHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVZhcmlhYmxlCisgICAgaWYgaXNSZWdpc3Rl
cihAdG9rZW5zW0BpZHhdKQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9fiBGUFJfUEFUVEVSTgor
ICAgICAgICByZXN1bHQgPSBGUFJlZ2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgZWxzZQorICAgICAgICByZXN1bHQg
PSBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0Bp
ZHhdLnN0cmluZykKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0Bp
ZHhdKQorICAgICAgcmVzdWx0ID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IK
KyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFy
c2VBZGRyZXNzKG9mZnNldCkKKyAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09
ICJbIgorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAKKyAg
ICAjIFRocmVlIHBvc3NpYmlsaXRpZXM6CisgICAgIyBbXSAgICAgICAtPiBBYnNvbHV0ZUFkZHJl
c3MKKyAgICAjIFthXSAgICAgIC0+IEFkZHJlc3MKKyAgICAjIFthLGJdICAgIC0+IEJhc2VJbmRl
eCB3aXRoIHNjYWxlID0gMQorICAgICMgW2EsYixjXSAgLT4gQmFzZUluZGV4CisgICAgCisgICAg
QGlkeCArPSAxCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgcmV0dXJuIEFic29sdXRlQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0KQorICAg
IGVuZAorICAgIGEgPSBwYXJzZVZhcmlhYmxlCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIK
KyAgICAgIHJlc3VsdCA9IEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIGEsIG9mZnNldCkKKyAgICBl
bHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAg
QGlkeCArPSAxCisgICAgICBiID0gcGFyc2VWYXJpYWJsZQorICAgICAgaWYgQHRva2Vuc1tAaWR4
XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBi
LCAxLCBvZmZzZXQpCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tl
bnNbQGlkeF0gPT0gIiwiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVu
bGVzcyBbIjEiLCAiMiIsICI0IiwgIjgiXS5tZW1iZXI/IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisg
ICAgICAgIGMgPSBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICBy
ZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIGMsIG9mZnNldCkKKyAgICAg
IGVuZAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRl
ZiBwYXJzZUNvbG9uQ29sb24KKyAgICBza2lwTmV3TGluZQorICAgIGNvZGVPcmlnaW4gPSBAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIg
QHRva2Vuc1tAaWR4XQorICAgIG5hbWVzID0gW0B0b2tlbnNbQGlkeF0uc3RyaW5nXQorICAgIEBp
ZHggKz0gMQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIjo6IgorICAgICAgQGlkeCArPSAx
CisgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAg
ICAgbmFtZXMgPDwgQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgIEBpZHggKz0gMQorICAgIGVu
ZAorICAgIHJhaXNlIGlmIG5hbWVzLmVtcHR5PworICAgIFtjb2RlT3JpZ2luLCBuYW1lc10KKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHNraXBOZXdMaW5lCisgICAg
aWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgTmVnSW1tZWRp
YXRlLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCBwYXJzZUV4cHJlc3Npb25BdG9t
KQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAgICAg
IHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vu
c1tAaWR4XSA9PSAiKSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYg
aXNJbnRlZ2VyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IEltbWVkaWF0ZS5uZXcoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pKQorICAgICAg
QGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tA
aWR4XQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIGlm
IG5hbWVzLnNpemUgPiAxCisgICAgICAgIFN0cnVjdE9mZnNldC5mb3JGaWVsZChjb2RlT3JpZ2lu
LCBuYW1lc1swLi4tMl0uam9pbignOjonKSwgbmFtZXNbLTFdKQorICAgICAgZWxzZQorICAgICAg
ICBWYXJpYWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzWzBdKQorICAgICAgZW5kCisgICAg
ZWxzaWYgaXNSZWdpc3RlciBAdG9rZW5zW0BpZHhdCisgICAgICBwYXJzZVZhcmlhYmxlCisgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIgorICAgICAgQGlkeCArPSAxCisgICAgICBj
b2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAgU2l6ZW9mLmZvck5hbWUo
Y29kZU9yaWdpbiwgbmFtZXMuam9pbignOjonKSkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9y
CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbk11bAorICAgIHNraXBO
ZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHdoaWxlIEB0b2tl
bnNbQGlkeF0gPT0gIioiCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gTXVsSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4
IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAgZWxz
ZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAor
ICAKKyAgZGVmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgQHRva2Vuc1tAaWR4XSA9PSAiLSIgb3Ig
QHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIiBvciBpc0ludGVnZXIoQHRva2Vuc1tAaWR4XSkgb3Ig
aXNWYXJpYWJsZShAdG9rZW5zW0BpZHhdKQorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Np
b24KKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbk11bAorICAg
IHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVz
dWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVz
dWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIt
IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gU3ViSW1tZWRpYXRlcy5uZXco
QHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwp
CisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1
bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1lbnQpCisgICAgaWYgY291bGRC
ZUV4cHJlc3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRkcmVzcyhleHByKQorICAgICAgZWxzZQor
ICAgICAgICBleHByCisgICAgICBlbmQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJbIgor
ICAgICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCAwKSkKKyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IExh
YmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExhYmVsLmZvck5hbWUo
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBA
aWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0Bp
ZHhdCisgICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4s
IEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0Cisg
ICAgZWxzZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50KQorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb25zdW1lKC9c
QVwoXFovKQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAgbG9vcCB7CisgICAgICBza2lwTmV3TGlu
ZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIGJyZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAg
ICAgdmFyaWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBO
ZXdMaW5lCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIK
KyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IK
KyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IKKyAgICAgIGVuZAor
ICAgIH0KKyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAorICBkZWYgcGFyc2VTZXF1ZW5jZShmaW5h
bCwgY29tbWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4KKyAgICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAgICAgIGlmIChAaWR4ID09IEB0b2tlbnMu
bGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5h
bCkKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAg
ICAgICAjIGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxl
c3MgaXNWYXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUu
Zm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4
XSA9PSAiPSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhbHVlID0gcGFyc2VPcGVyYW5k
KCJ3aGlsZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5uYW1lfSIpCisgICAgICAgIGxpc3Qg
PDwgQ29uc3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1
ZSkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImVycm9yIgorICAgICAgICBsaXN0IDw8
IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4pCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAgICAgIGNvZGVPcmlnaW4gPSBA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBO
ZXdMaW5lCisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgIGNvbnN1
bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWZU
aGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VTZXF1
ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRlIG9mIFwiaWYg
I3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBsaXN0IDw8IGlmVGhlbkVsc2UKKyAgICAg
ICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisgICAgICAgICAgY29kZU9yaWdpbiA9
IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
IHNraXBOZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAg
ICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgICAgc2tpcE5ld0xpbmUK
KyAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0
ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5z
aWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICAgIGlmVGhlbkVsc2Uu
ZWxzZUNhc2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlmVGhlbkVsc2UgPSBlbHNlQ2FzZQorICAg
ICAgICBlbmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiZWxzZSIKKyAgICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gcGFyc2VTZXF1ZW5jZSgv
XEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNlIGZvciBcImlmICN7cHJlZGljYXRl
LmR1bXB9XCIiKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAg
cGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiZW5kIgorICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgor
ICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBp
c0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0u
c3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3Jv
VmFyaWFibGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxl
IGluc2lkZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGxp
c3QgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICAg
IGVsc2lmIGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0g
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0
cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9
PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAg
ICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5kIGl0J3MgdGhlIGxhc3Qgb25l
LgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtd
KQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgor
ICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLgorICAgICAgICAgIGxpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBJdCdzIGRlZmluaXRlbHkgYW4gaW5zdHJ1Y3Rp
b24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJhbmQuCisgICAgICAgICAgb3BlcmFuZHMg
PSBbXQorICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxzZQorICAgICAgICAgIGxvb3Agewor
ICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgaW5z
dHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09
IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAg
ICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uIGFuZCBvZiB0aGUgc2VxdWVu
Y2UuCisgICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSB0cnVlCisgICAgICAgICAgICAgIGJy
ZWFrCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgICAg
ICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgICAgICMgVGhlIGVu
ZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
ICAgICBicmVhaworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBwYXJzZUVycm9yKCJF
eHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFsfSBhZnRlciAje29wZXJhbmRzLmxh
c3QuZHVtcH0iKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgfQorICAgICAgICAgIGxpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAgICAg
IGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgZW5kCisgICAg
ICAgIGVuZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAg
Y29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRv
a2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIEB0b2tlbnNb
QGlkeF0gPT0gIigiCisgICAgICAgICAgIyBNYWNybyBpbnZvY2F0aW9uLgorICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgICAgc2tpcE5l
d0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAgICAg
ICAgICAgICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQorICAgICAgICAgICAgICAgIGNvZGVPcmln
aW5Jbm5lciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAg
ICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNp
ZGUgb2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1bWVudCB0byAje25hbWV9IikKKyAg
ICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBNYWNy
by5uZXcoY29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlhYmxlcywgYm9keSkKKyAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUg
aW5zaWRlIG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICIpIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAgICAg
QGlkeCArPSAxCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9y
ICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5zcGVjdH0gd2hpbGUgcGFyc2lu
ZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAgICAgICAgIGVuZAorICAgICAg
ICAgICAgfQorICAgICAgICAgIGVuZAorICAgICAgICAgIGxpc3QgPDwgTWFjcm9DYWxsLm5ldyhj
b2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNl
RXJyb3IgIkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFtZX0iCisgICAgICAgIGVuZAorICAgICAg
ZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhd
CisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAg
bmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBw
YXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI6IgorICAgICAgICAjIEl0J3MgYSBs
YWJlbC4KKyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAgICAgbGlzdCA8PCBMYWJlbC5m
b3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVsc2UKKyAgICAgICAgICBsaXN0IDw8
IExvY2FsTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbmQKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgIkV4cGVjdGluZyB0
ZXJtaW5hbCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVl
bmNlLm5ldyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisgIGVuZAorZW5kCisKK2RlZiBwYXJzZSh0
b2tlbnMpCisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9rZW5zKQorICBwYXJzZXIucGFyc2VTZXF1
ZW5jZShuaWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3JlZ2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK0dQUlMgPQorICBbCisgICAi
dDAiLAorICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMiLAorICAgInQ0IiwKKyAgICJjZnIiLAor
ICAgImEwIiwKKyAgICJhMSIsCisgICAicjAiLAorICAgInIxIiwKKyAgICJzcCIKKyAgXQorCitG
UFJTID0KKyAgWworICAgImZ0MCIsCisgICAiZnQxIiwKKyAgICJmdDIiLAorICAgImZ0MyIsCisg
ICAiZnQ0IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisgICAiZmExIiwKKyAgICJmYTIiLAorICAg
ImZhMyIsCisgICAiZnIiCisgIF0KKworUkVHSVNURVJTID0gR1BSUyArIEZQUlMKKworR1BSX1BB
VFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykK
K0ZQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgRlBSUy5qb2luKCcpfCgnKSArICcp
KVxcWicpCisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBSRUdJU1RF
UlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vc2V0dGluZ3MucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMjEg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIK
K3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAidHJhbnNmb3Jt
IgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBjb21wdXRlU2V0dGluZ3ND
b21iaW5hdGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25zICAgICAgICAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkgb2Ygc2V0dGluZ3MgbWFwcywgd2hl
cmUgYSBzZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMgIworIyBhIGNvbmZpZ3VyYXRpb24gZm9yIHRo
ZSBhc3NlbWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIG1hcCAgICAgICAjCisjIGNvbnRh
aW5zIGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBzZXR0aW5ncyBuYW1lcyAoc3RyaW5n
cykgYW5kICMKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVhbnMgKHRydWUgZm9yIGVuYWJsZWQsIGZh
bHNlIGZvciBkaXNhYmxlZCkuICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKworZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIHNldHRpbmdzQ29t
YmluYXRpb25zID0gW10KKyAgCisgIGRlZiBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21i
aW5hdGlvbnMsIG1hcFNvRmFyLCByZW1haW5pbmcpCisgICAgaWYgcmVtYWluaW5nLmVtcHR5Pwor
ICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFwU29GYXIKKyAgICAgIHJldHVybgorICAg
IGVuZAorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5p
bmdbMF1dID0gdHJ1ZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9u
cywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFy
LmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gZmFsc2UKKyAgICBzZXR0aW5nc0NvbWJp
bmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAg
ZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIHt9LCAo
YXN0LmZpbHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7fHZ8IHYubmFtZX0gKyBbIlg4NiIsICJB
Uk12NyJdKS51bmlxKQorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMKK2VuZAorCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdz
LCBhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICB8IGNvbmNy
ZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwgLi4uIH0gICAgICAgICAgICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBEZXRlcm1pbmVzIGlmIHRoZSBzZXR0aW5ncyBjb21iaW5h
dGlvbiBpcyB2YWxpZCwgYW5kIGlmIHNvLCBjYWxscyAgICAjCisjIHRoZSBibG9jayB3aXRoIHRo
ZSBpbmZvcm1hdGlvbiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBjb2RlLiAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JTZXR0aW5ncyhjb25jcmV0
ZVNldHRpbmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0aGlzIGNvbWJp
bmF0b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWltZWRCYWNrZW5kcyA9IDAKKyAgc2Vs
ZWN0ZWRCYWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2ggeworICAgIHwgYmFja2VuZCB8Cisg
ICAgaXNTdXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2JhY2tlbmRdCisgICAgcmFpc2UgdW5s
ZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWltZWRCYWNrZW5kcyArPSBpZiBpc1N1
cHBvcnRlZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlzU3VwcG9ydGVkCisgICAgICBzZWxl
Y3RlZEJhY2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0KKyAgCisgIHJldHVybiBpZiBudW1D
bGFpbWVkQmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUgdGhlIEFTVCBkb3duIHRvIGEgbG93
LWxldmVsIGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25hbHMpLgorICBsb3dMZXZlbEFTVCA9
IGFzdC5yZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIHlpZWxkIGNvbmNy
ZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJhY2tlbmQKK2VuZAorCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0
aW9uKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICB8IGNvbmNy
ZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAgICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFz
dCwgc2V0dGluZ3NDb21iaW5hdGlvbnMpIHsgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0
dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBFeGVjdXRlcyB0aGUgZ2l2ZW4gYmxvY2sgZm9yIGVhY2ggdmFsaWQg
c2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlICAjCisjIHNldHRpbmdzIG1hcC4gVGhlIGFzdCBw
YXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQgICAgICAgICAgICAgICMKKyMgKGFzdC5y
ZXNvbHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBmaXJzdCBmb3JtIHdpbGwgY2FsbCBjb21w
dXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSBmb3IgeW91LiAgICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9u
KGFzdCwgKm9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMpCisgIHJhaXNlIGlmIG9wdGlvbmFs
U2V0dGluZ3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEKKyAgCisgIGlmIG9wdGlvbmFsU2V0dGluZ3ND
b21iaW5hdGlvbnMuZW1wdHk/CisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBjb21wdXRlU2V0
dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBlbHNlCisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMg
PSBvcHRpb25hbFNldHRpbmdzQ29tYmlhdGlvbnNbMF0KKyAgZW5kCisgIAorICBzZXR0aW5nc0Nv
bWJpbmF0aW9ucy5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgaW5k
ZXggfAorICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgeworICAgICAgfCBj
b25jcmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgICAgeWllbGQgY29u
Y3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgfQorICB9Citl
bmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgY3BwU2V0dGluZ3NUZXN0
KGNvbmNyZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIFJldHVybnMgdGhlIEMrKyBjb2RlIHVzZWQgdG8gdGVzdCBpZiB3
ZSBhcmUgaW4gYSBjb25maWd1cmF0aW9uIHRoYXQgICMKKyMgY29ycmVzcG9uZHMgdG8gdGhlIGdp
dmVuIGNvbmNyZXRlIHNldHRpbmdzLiAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGNwcFNldHRpbmdzVGVzdChjb25jcmV0
ZVNldHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdzLnRvX2EuY29sbGVjdHsKKyAg
ICB8IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisgICAgICAgIiIKKyAgICAgZWxzZQorICAgICAg
ICIhIgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIgKyBwYWlyWzBdCisgIH0uam9pbigiICYm
ICIpCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgaXNBU1RFcnJv
bmVvdXMoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIFRlc3RzIHRvIHNlZSBpZiB0aGUgQVNUIGNsYWltcyB0
aGF0IHRoZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUgICMKKyMgdXNlcidzIGNvZGUsIGFm
dGVyIHNldHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4gICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGlzQVNURXJyb25lb3VzKGFz
dCkKKyAgbm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5PworZW5kCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5n
cykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBF
bWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBnaXZlbiBjb25m
aWd1cmF0aW9uLiAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgYXNz
ZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICBwdXRzIGNwcFNldHRpbmdzVGVz
dChjb25jcmV0ZVNldHRpbmdzKQorICBwdXRzICIjZWxzZSIKKyAgcHV0cyAiI2Vycm9yIFwiQ29u
ZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAgcHV0cyAiI2VuZGlmIgorZW5kCisKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNy
ZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkgeyAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3Jl
dGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4uIH0gICAgICAgICAgICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIEVtaXRzIGFsbCByZWxldmFudCBndWFyZHMgdG8gc2VlIGlm
IHRoZSBjb25maWd1cmF0aW9uIGhvbGRzIGFuZCAgICAgICMKKyMgY2FsbHMgdGhlIGJsb2NrIGlm
IHRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBlcnJvbmVvdXMuICAgICAgICAgICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0
aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkKKyAgcHV0cyBjcHBTZXR0aW5nc1Rl
c3QoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIGlmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAgICBw
dXRzICIjZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uXCIiCisgIGVsc2lmIG5vdCBXT1JL
SU5HX0JBQ0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICBwdXRzICIjZXJyb3IgXCJUaGlzIGJh
Y2tlbmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UKKyAgICB5aWVsZCBjb25jcmV0
ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICBwdXRzICIjZW5kaWYiCitlbmQK
KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZW1pdENvZGVJbkFsbENvbmZp
Z3VyYXRpb25zKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAg
ICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAg
ICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRW1pdHMgZ3VhcmQgY29kZXMgZm9yIGFs
bCB2YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxzIHRoZSBibG9jayAgIworIyBmb3IgdGhv
c2UgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5kIG5vdCBlcnJvbmVvdXMuICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZW1pdENvZGVJ
bkFsbENvbmZpZ3VyYXRpb25zKGFzdCkKKyAgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlv
bihhc3QpIHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBp
bmRleCB8CisgICAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgICB5
aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICBw
dXRzICIjZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzNTIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUg
ImFzdCIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBo
YXZlIGFueSBJZlRoZW5FbHNlIG5vZGVzIGJ5ICAgICAgICMKKyMgc3Vic3RpdHV0aW5nIGNvbmNy
ZXRlIGJvb2xlYW4gdmFsdWVzIGZvciBlYWNoIFNldHRpbmcuICAgICAgICAgICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAor
ICAgICAgY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIH0KKyAgZW5kCitlbmQK
KworY2xhc3MgVHJ1ZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYK
KyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcKKyAgZGVmIHJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZXR0aW5nc1tAbmFtZV0uYXNOb2RlCisgIGVuZAorZW5k
CisKK2NsYXNzIEFuZAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVm
dC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIGFuZCBAcmlnaHQucmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE9yCisgIGRl
ZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykudmFsdWUgb3IgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUp
LmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBOb3QKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykKKyAgICAobm90IEBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVl
KS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZQorICBkZWYgcmVzb2x2ZVNl
dHRpbmdzKHNldHRpbmdzKQorICAgIGlmIEBwcmVkaWNhdGUucmVzb2x2ZVNldHRpbmdzKHNldHRp
bmdzKS52YWx1ZQorICAgICAgQHRoZW5DYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAg
ICBlbHNlCisgICAgICBAZWxzZUNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVu
ZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNl
dHRpbmdzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVt
IHwKKyAgICAgIGl0ZW0gPSBpdGVtLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgIGlm
IGl0ZW0uaXNfYT8gU2VxdWVuY2UKKyAgICAgICAgbmV3TGlzdCArPSBpdGVtLmxpc3QKKyAgICAg
IGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgU2Vx
dWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUuZGVtYWNyb2lmeShtYWNyb3MpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5zdWJzdGl0dXRl
KG1hcHBpbmcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIGRlbWFjcm9pZnkoKSBjb25zdHJ1Y3RzIGEgbmV3IEFTVCB0aGF0
IGRvZXMgbm90IGhhdmUgYW55IE1hY3JvICAgICAgICMKKyMgbm9kZXMsIHdoaWxlIHN1YnN0aXR1
dGUoKSByZXBsYWNlcyBWYXJpYWJsZSBub2RlcyB3aXRoIHRoZSBnaXZlbiAgICAgIworIyBub2Rl
cyBpbiB0aGUgbWFwcGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2Rl
CisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNo
aWxkIHwKKyAgICAgIGNoaWxkLmRlbWFjcm9pZnkobWFjcm9zKQorICAgIH0KKyAgZW5kCisgIAor
ICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hp
bGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIH0KKyAgZW5kCisgIAor
ICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAg
IHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIH0K
KyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8KKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAg
ICBteU1hcHBpbmcgPSB7fQorICAgIG1hcHBpbmcuZWFjaF9wYWlyIHsKKyAgICAgIHwga2V5LCB2
YWx1ZSB8CisgICAgICB1bmxlc3MgQHZhcmlhYmxlcy5pbmNsdWRlPyBrZXkKKyAgICAgICAgbXlN
YXBwaW5nW2tleV0gPSB2YWx1ZQorICAgICAgZW5kCisgICAgfQorICAgIG1hcENoaWxkcmVuIHsK
KyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShteU1hcHBpbmcpCisgICAg
fQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZQorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5n
KQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisg
ICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVm
IHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBt
YXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAor
CitjbGFzcyBTZXF1ZW5jZQorICBkZWYgc3Vic3RpdHV0ZShjb25zdGFudHMpCisgICAgbmV3TGlz
dCA9IFtdCisgICAgbXlDb25zdGFudHMgPSBjb25zdGFudHMuZHVwCisgICAgQGxpc3QuZWFjaCB7
CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAgICAg
bXlDb25zdGFudHNbaXRlbS52YXJpYWJsZV0gPSBpdGVtLnZhbHVlLnN1YnN0aXR1dGUobXlDb25z
dGFudHMpCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5zdWJzdGl0dXRlKG15
Q29uc3RhbnRzKQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2lu
LCBuZXdMaXN0KQorICBlbmQKKyAgCisgIGRlZiByZW5hbWVMYWJlbHMKKyAgICBtYXBwaW5nID0g
e30KKyAgICAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVt
LmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAgbWFwcGluZ1tpdGVtXSA9IExvY2FsTGFiZWwudW5p
cXVlCisgICAgICBlbmQKKyAgICB9CisgICAgCisgICAgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5n
KQorICBlbmQKKyAgCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBteU1hY3JvcyA9IG1h
Y3Jvcy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVt
LmlzX2E/IE1hY3JvCisgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBpdGVtCisgICAgICBl
bmQKKyAgICB9CisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0
ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICAjIElnbm9yZS4KKyAgICAg
IGVsc2lmIGl0ZW0uaXNfYT8gTWFjcm9DYWxsCisgICAgICAgIG1hcHBpbmcgPSB7fQorICAgICAg
ICBteU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisgICAgICAgIHJhaXNlICJDb3VsZCBub3QgZmlu
ZCBtYWNybyAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mg
bXlNYWNyb3NbaXRlbS5uYW1lXQorICAgICAgICByYWlzZSAiQXJndW1lbnQgY291bnQgbWlzbWF0
Y2ggZm9yIGNhbGwgdG8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIg
dW5sZXNzIGl0ZW0ub3BlcmFuZHMuc2l6ZSA9PSBteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxl
cy5zaXplCisgICAgICAgIGl0ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgfCBp
ZHggfAorICAgICAgICAgIGlmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBWYXJpYWJsZSBhbmQg
bXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAgICBteU15TWFjcm9z
W215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jvc1tpdGVt
Lm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5u
YW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2lmIGl0ZW0ub3Bl
cmFuZHNbaWR4XS5pc19hPyBNYWNybworICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tp
dGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAg
ICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0g
PSBuaWwKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0
ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gbmlsCisgICAgICAgICAgICBtYXBwaW5nW215TWFj
cm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAg
ICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCArPSBteU1hY3Jvc1tpdGVtLm5h
bWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNyb3MpLnJlbmFt
ZUxhYmVscy5saXN0CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5kZW1hY3Jv
aWZ5KG15TWFjcm9zKQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3Jp
Z2luLCBuZXdMaXN0KS5zdWJzdGl0dXRlKHt9KQorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBub2RlLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVz
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
Q29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGhhcyBvZmZzZXQgdmFsdWVzIGluc3RlYWQgb2Ygc3lt
Ym9saWMgICAgICAgIworIyBvZmZzZXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXpl
cykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnJlc29s
dmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgU3Ry
dWN0T2Zmc2V0CisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBv
ZmZzZXRzW3NlbGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIG9mZnNldHNbc2Vs
Zl0pCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBT
aXplb2YKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlmIHNpemVz
W3NlbGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIHNpemVzW3NlbGZdKQorICAg
IGVsc2UKKyAgICAgIHB1dHMgIkNvdWxkIG5vdCBmaW5kICN7c2VsZi5pbnNwZWN0fSBpbiAje3Np
emVzLmtleXMuaW5zcGVjdH0iCisgICAgICBwdXRzICJzaXplcyA9ICN7c2l6ZXMuaW5zcGVjdH0i
CisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIG5vZGUuZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBSZXNvbHZl
IGNvbnN0YW50IHJlZmVyZW5jZXMgYW5kIGNvbXB1dGUgYXJpdGhtZXRpYyBleHByZXNzaW9ucy4g
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisg
IGRlZiBmb2xkCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGls
ZC5mb2xkCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVzCisgIGRlZiBm
b2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAg
ICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNl
bGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVP
cmlnaW4sIEBsZWZ0LnZhbHVlICsgQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBT
dWJJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJp
Z2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1t
ZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAg
ICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlIC0gQHJpZ2h0LnZhbHVlKQor
ICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQg
PSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1
bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdo
dC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZh
bHVlICogQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBOZWdJbW1lZGlhdGUKKyAg
ZGVmIGZvbGQKKyAgICBAY2hpbGQgPSBAY2hpbGQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVz
cyBAY2hpbGQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAt
QGNoaWxkLnZhbHVlKQorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBub2RlLnJlc29sdmVBZnRlclNldHRpbmdzKG9mZnNldHMsIHNpemVzKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29tcGlsZSBhc3NlbWJs
eSBhZ2FpbnN0IGEgc2V0IG9mIG9mZnNldHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVz
b2x2ZShvZmZzZXRzLCBzaXplcykKKyAgICBkZW1hY3JvaWZ5KHt9KS5yZXNvbHZlT2Zmc2V0cyhv
ZmZzZXRzLCBzaXplcykuZm9sZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2OCBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgUmVnaXN0ZXJJRAorICBk
ZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIs
ICJyMCIsICJ0MSIsICJhMSIsICJyMSIsICJ0MiIsICJ0MyIKKyAgICAgIHRydWUKKyAgICB3aGVu
ICJ0NCIsICJjZnIiCisgICAgICBmYWxzZQorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5k
CisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICBjYXNlIG5hbWUKKyAgICB3
aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQor
ICAgICAgICAiJWFsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWF4IgorICAgICAgd2hl
biA6aW50CisgICAgICAgICIlZWF4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAg
ZW5kCisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdo
ZW4gOmJ5dGUKKyAgICAgICAgIiVkbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVkeCIK
KyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkeCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFp
c2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVu
IDpieXRlCisgICAgICAgICIlY2wiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlY3giCisg
ICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlY3giCisgICAgICBlbHNlCisgICAgICAgIHJhaXNl
CisgICAgICBlbmQKKyAgICB3aGVuICJ0MyIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6
Ynl0ZQorICAgICAgICAiJWJsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWJ4IgorICAg
ICAgd2hlbiA6aW50CisgICAgICAgICIlZWJ4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQor
ICAgICAgZW5kCisgICAgd2hlbiAidDQiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5
dGUKKyAgICAgICAgIiVzaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc2kiCisgICAg
ICB3aGVuIDppbnQKKyAgICAgICAgIiVlc2kiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisg
ICAgICBlbmQKKyAgICB3aGVuICJjZnIiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5
dGUKKyAgICAgICAgIiVkaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZGkiCisgICAg
ICB3aGVuIDppbnQKKyAgICAgICAgIiVlZGkiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisg
ICAgICBlbmQKKyAgICB3aGVuICJzcCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0
ZQorICAgICAgICAiJXNwbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVzcCIKKyAgICAg
IHdoZW4gOmludAorICAgICAgICAiJWVzcCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAg
ICAgIGVuZAorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICBkZWYgeDg2
Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5k
CisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIHJhaXNl
IHVubGVzcyBraW5kID09IDpkb3VibGUKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAi
ZmEwIiwgImZyIgorICAgICAgIiV4bW0wIgorICAgIHdoZW4gImZ0MSIsICJmYTEiCisgICAgICAi
JXhtbTEiCisgICAgd2hlbiAiZnQyIiwgImZhMiIKKyAgICAgICIleG1tMiIKKyAgICB3aGVuICJm
dDMiLCAiZmEzIgorICAgICAgIiV4bW0zIgorICAgIHdoZW4gImZ0NCIKKyAgICAgICIleG1tNCIK
KyAgICB3aGVuICJmdDUiCisgICAgICAiJXhtbTUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAg
ICBlbmQKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVy
YW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiB4ODZPcGVy
YW5kKGtpbmQpCisgICAgIiQje3ZhbHVlfSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChr
aW5kKQorICAgICIje3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBkZWYg
c3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFu
ZChraW5kKQorICAgICIje29mZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9KSIK
KyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtp
bmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBzdXBwb3J0czhCaXRP
blg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAg
IiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0sICN7aW5kZXgueDg2T3Bl
cmFuZCg6aW50KX0sICN7c2NhbGV9KSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtp
bmQpCisgICAgIioje3g4Nm9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNv
bHV0ZUFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAg
ICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5k
CisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje2FkZHJlc3MudmFsdWV9Igor
ICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2TGFiZWwKKyAgICBz
YW5pdGl6ZUxhYmVsTmFtZShuYW1lKQorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQp
CisgICAgeDg2TGFiZWwKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQor
ICBkZWYgeDg2TGFiZWwKKyAgICAiX19vYV8iK25hbWVbMS4uLTFdCisgIGVuZAorICBkZWYgeDg2
Q2FsbE9wZXJhbmQoa2luZCkKKyAgICB4ODZMYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0
cnVjdGlvbgorICBkZWYgeDg2T3BlcmFuZHMoKmtpbmRzKQorICAgIHJhaXNlIHVubGVzcyBraW5k
cy5zaXplID09IG9wZXJhbmRzLnNpemUKKyAgICByZXN1bHQgPSBbXQorICAgIGtpbmRzLnNpemUu
dGltZXMgeworICAgICAgfCBpZHggfAorICAgICAgcmVzdWx0IDw8IG9wZXJhbmRzW2lkeF0ueDg2
T3BlcmFuZChraW5kc1tpZHhdKQorICAgIH0KKyAgICByZXN1bHQuam9pbigiLCAiKQorICBlbmQK
KworICBkZWYgeDg2U3VmZml4KGtpbmQpCisgICAgY2FzZSBraW5kCisgICAgd2hlbiA6Ynl0ZQor
ICAgICAgImIiCisgICAgd2hlbiA6aGFsZgorICAgICAgInciCisgICAgd2hlbiA6aW50CisgICAg
ICAibCIKKyAgICB3aGVuIDpkb3VibGUKKyAgICAgICJzZCIKKyAgICBlbHNlCisgICAgICByYWlz
ZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhv
cGNvZGUsIGtpbmQsIG51bU9wZXJhbmRzKQorICAgIGlmIG51bU9wZXJhbmRzID09IDMKKyAgICAg
IGlmIG9wZXJhbmRzWzBdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiXHQje29w
Y29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisg
ICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtp
bmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2UKKyAgICAg
ICAgJGFzbS5wdXRzICJcdG1vdiN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAk
YXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7
b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNlCisgICAg
ICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0s
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmIGhhbmRsZVg4Nk9wKG9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVy
YW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUpCisgIGVuZAorICAKKyAgZGVmIGhhbmRs
ZVg4NlNoaWZ0KG9wY29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlh
dGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0ZXJJRC5mb3JOYW1lKG5pbCwgInQyIikKKyAgICAg
ICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0s
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzZQorICAgICAgJGFzbS5w
dXRzICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAg
ICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICVjbCwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmludCl9LCAlZWN4IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZEb3VibGVC
cmFuY2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAgIGNhc2UgbW9kZQorICAgIHdoZW4gOm5vcm1h
bAorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpk
b3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuIDpy
ZXZlcnNlCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIGVs
c2UKKyAgICAgIHJhaXNlIG1vZGUuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiXHRq
bmUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nklu
dENvbXBhcmUob3Bjb2RlU3VmZml4LCBraW5kKQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IElt
bWVkaWF0ZSBhbmQgb3BlcmFuZHNbMF0udmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNbMV0uaXNfYT8g
UmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3VmZml4ID09ICJu
ZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2lmIG9wZXJhbmRzWzFdLmlzX2E/IEltbWVk
aWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVn
aXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3VmZml4ID09ICJuZSIp
CisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHRjbXAje3g4
NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxl
WDg2SW50QnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZJbnRDb21wYXJl
KGJyYW5jaE9wY29kZVsxLi4tMV0sIGtpbmQpCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bj
b2RlfSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2
U2V0KHNldE9wY29kZSwgb3BlcmFuZCkKKyAgICBpZiBvcGVyYW5kLnN1cHBvcnRzOEJpdE9uWDg2
CisgICAgICAkYXNtLnB1dHMgIlx0QHtzZXRPcGNvZGV9ICN7b3BlcmFuZC54ODZPcGVyYW5kKDpi
eXRlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJsICN7b3BlcmFuZC54ODZPcGVyYW5kKDpi
eXRlKX0sICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICAkYXNt
LnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgICAg
JGFzbS5wdXRzICJcdEB7c2V0T3Bjb2RlfSAlYWwiCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJs
ICVhbCwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmQueDg2T3BlcmFu
ZCg6aW50KX0sICVlYXgiCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludENv
bXBhcmVTZXQoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NkludENvbXBhcmUoc2V0T3Bj
b2RlWzMuLi0xXSwga2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kc1sy
XSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2VGVzdChraW5kKQorICAgIHZhbHVlID0gb3Bl
cmFuZHNbMF0KKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDIKKyAgICAgIG1hc2sg
PSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAgIHdoZW4gMworICAgICAgbWFzayA9
IG9wZXJhbmRzWzFdCisgICAgZWxzZQorICAgICAgcmFpc2UgIkV4cGVjdGVkIDIgb3IgMyBvcGVy
YW5kcywgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisg
ICAgZW5kCisgICAgCisgICAgaWYgbWFzay5pc19hPyBJbW1lZGlhdGUgYW5kIG1hc2sudmFsdWUg
PT0gLTEKKyAgICAgIGlmIHZhbHVlLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRz
ICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSwgI3t2
YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJc
dGNtcCN7eDg2U3VmZml4KGtpbmQpfSAkMCwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAg
ICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2lu
ZCl9ICN7bWFzay54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2QnJhbmNoVGVzdChicmFuY2hPcGNv
ZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgICRhc20ucHV0cyAiXHQje2Jy
YW5jaE9wY29kZX0gI3tvcGVyYW5kcy5sYXN0Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYg
aGFuZGxlWDg2U2V0VGVzdChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5k
KQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRzLmxhc3QpCisgIGVuZAorICAK
KyAgZGVmIGhhbmRsZVg4Nk9wQnJhbmNoKG9wY29kZSwgYnJhbmNoT3Bjb2RlLCBraW5kKQorICAg
IGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSAt
IDEpCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0
ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1sy
XQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20u
cHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0Lng4NkxhYmVsfSIKKyAgZW5kCisg
IAorICBkZWYgaGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBpZiBv
cGVyYW5kcy5zaXplID09IDQgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAk
YXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
JGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICBoYW5kbGVYODZPcFdp
dGhOdW1PcGVyYW5kcygic3ViIiwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgZW5kCisg
ICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3Bl
cmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAg
IGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAi
XHQje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBk
ZWYgbG93ZXJYODYKKyAgICBjYXNlIG9wY29kZQorICAgIHdoZW4gImFkZGkiLCAiYWRkcCIKKyAg
ICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRl
CisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAg
ICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIGlm
IG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAgICAgICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0g
b3BlcmFuZHNbMl0KKyAgICAgICAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAkYXNtLnB1dHMgIlx0bGVhbCAje29w
ZXJhbmRzWzBdLnZhbHVlfSgje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBvcGVy
YW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAg
cmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2Ug
dW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJc
dGxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
ZWxzZQorICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBd
CisgICAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0i
CisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAgd2hlbiAiYW5kaSIsICJhbmRwIgorICAgICAg
aGFuZGxlWDg2T3AoImFuZGwiLCA6aW50KQorICAgIHdoZW4gImxzaGlmdGkiCisgICAgICBoYW5k
bGVYODZTaGlmdCgic2FsbCIsIDppbnQpCisgICAgd2hlbiAibXVsaSIKKyAgICAgIGlmIG9wZXJh
bmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICRh
c20ucHV0cyAiXHRpbXVsbCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQsIDppbnQpfSIKKyAgICAg
IGVsc2UKKyAgICAgICAgaGFuZGxlWDg2T3AoImltdWxsIiwgOmludCkKKyAgICAgIGVuZAorICAg
IHdoZW4gIm5lZ2kiCisgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje3g4Nk9wZXJhbmRzKDppbnQp
fSIKKyAgICB3aGVuICJub3RpIgorICAgICAgJGFzbS5wdXRzICJcdG5vdGwgI3t4ODZPcGVyYW5k
cyg6aW50KX0iCisgICAgd2hlbiAib3JpIiwgIm9ycCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJvcmwi
LCA6aW50KQorICAgIHdoZW4gInJzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2FybCIs
IDppbnQpCisgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2hybCIs
IDppbnQpCisgICAgd2hlbiAic3ViaSIsICJzdWJwIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9
PSAzIGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1dHMgIlx0
bmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAkYXNtLnB1dHMg
Ilx0YWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICBoYW5kbGVYODZPcCgic3VibCIs
IDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICBoYW5kbGVY
ODZPcCgieG9ybCIsIDppbnQpCisgICAgd2hlbiAibG9hZGkiLCAic3RvcmVpIiwgImxvYWRwIiwg
InN0b3JlcCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7eDg2T3BlcmFuZHMoOmludCwgOmlu
dCl9IgorICAgIHdoZW4gImxvYWRiIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQp
fSIKKyAgICB3aGVuICJsb2FkaCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6d2wgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDpoYWxmKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgd2hlbiAic3RvcmViIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmIgI3t4ODZPcGVyYW5k
cyg6Ynl0ZSwgOmJ5dGUpfSIKKyAgICB3aGVuICJsb2FkZCIsICJtb3ZlZCIsICJzdG9yZWQiCisg
ICAgICAkYXNtLnB1dHMgIlx0bW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0i
CisgICAgd2hlbiAiYWRkZCIKKyAgICAgICRhc20ucHV0cyAiXHRhZGRzZCAje3g4Nk9wZXJhbmRz
KDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJkaXZkIgorICAgICAgJGFzbS5wdXRzICJc
dGRpdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInN1YmQi
CisgICAgICAkYXNtLnB1dHMgIlx0c3Vic2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91Ymxl
KX0iCisgICAgd2hlbiAibXVsZCIKKyAgICAgICRhc20ucHV0cyAiXHRtdWxzZCAje3g4Nk9wZXJh
bmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJzcXJ0ZCIKKyAgICAgICRhc20ucHV0
cyAiXHRzcXJ0c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJjaTJkIgorICAgICAgJGFzbS5w
dXRzICJcdGN2dHNpMnNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiYmRlcSIKKyAgICAgIGlzVW5v
cmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0anAgI3tMYWJlbFJlZmVyZW5jZS5uZXco
Y29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRq
ZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBvcGVyYW5kc1syXSkueDg2TGFiZWx9
IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRuZXEiCisgICAg
ICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpuZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRndCIK
KyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6bm9ybWFsKQorICAgIHdoZW4gImJk
Z3RlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOm5vcm1hbCkKKyAgICB3
aGVuICJiZGx0IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpyZXZlcnNlKQor
ICAgIHdoZW4gImJkbHRlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOnJl
dmVyc2UpCisgICAgd2hlbiAiYmRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJq
ZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRuZXF1biIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9j
YWxMYWJlbC51bmlxdWUKKyAgICAgIGlzRXF1YWwgPSBMb2NhbExhYmVsLnVuaXF1ZQorICAgICAg
JGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRq
cCAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkueDg2TGFiZWx9
IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4s
IGlzRXF1YWwpLng4NkxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAg
ICAgJGFzbS5wdXRzICJcdGptcCAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgIGlzRXF1
YWwubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRndHVuIgorICAgICAgaGFuZGxlWDg2RG91Ymxl
QnJhbmNoKCJqYiIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkZ3RlcXVuIgorICAgICAgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGx0dW4iCisgICAg
ICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0ZXF1
biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamJlIiwgOm5vcm1hbCkKKyAgICB3aGVu
ICJidGQyaSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
ICRhc20ucHV0cyAiXHRjbXBsICQweDgwMDAwMDAwICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisg
ICAgd2hlbiAidGQyaSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICB3aGVuICJiY2QyaSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQp
fSIKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmlu
dCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJc
dGplICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJcdGN2dHNpMnNk
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgJGFzbS5wdXRz
ICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisg
ICAgICAkYXNtLnB1dHMgIlx0anAgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICAkYXNt
LnB1dHMgIlx0am5lICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgIHdoZW4gIm1vdmR6Igor
ICAgICAgJGFzbS5wdXRzICJcdHhvcnBkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAicG9wIgor
ICAgICAgJGFzbS5wdXRzICJcdHBvcCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgIHdoZW4gInB1c2giCisgICAgICAkYXNtLnB1dHMgIlx0cHVzaCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gIm1vdmUiLCAic3hpMnAiLCAienhpMnAiCisgICAg
ICB1bmxlc3Mgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMV0KKyAgICAgICAgJGFzbS5wdXRzICJc
dG1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgICBlbmQKKyAgICB3aGVuICJu
b3AiCisgICAgICAkYXNtLnB1dHMgIlx0bm9wIgorICAgIHdoZW4gImJpZXEiLCAiYnBlcSIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6aW50KQorICAgIHdoZW4gImJpbmVxIiwgImJw
bmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6aW50KQorICAgIHdoZW4gImJp
YSIsICJicGEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphIiwgOmludCkKKyAgICB3aGVu
ICJiaWFlcSIsICJicGFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmludCkK
KyAgICB3aGVuICJiaWIiLCAiYnBiIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDpp
bnQpCisgICAgd2hlbiAiYmliZXEiLCAiYnBiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpiZSIsIDppbnQpCisgICAgd2hlbiAiYmlndCIsICJicGd0IgorICAgICAgaGFuZGxlWDg2SW50
QnJhbmNoKCJqZyIsIDppbnQpCisgICAgd2hlbiAiYmlndGVxIiwgImJwZ3RlcSIKKyAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmludCkKKyAgICB3aGVuICJiaWx0IiwgImJwbHQiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwgOmludCkKKyAgICB3aGVuICJiaWx0ZXEiLCAi
YnBsdGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbHRlcSIsIDppbnQpCisgICAgd2hl
biAiYmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6Ynl0ZSkKKyAgICB3aGVu
ICJiYm5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmJ5dGUpCisgICAgd2hl
biAiYmJhIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDpieXRlKQorICAgIHdoZW4g
ImJiYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6Ynl0ZSkKKyAgICB3aGVu
ICJiYmIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmJ5dGUpCisgICAgd2hlbiAi
YmJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRlKQorICAgIHdoZW4g
ImJiZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmJ5dGUpCisgICAgd2hlbiAi
YmJndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6Ynl0ZSkKKyAgICB3aGVu
ICJiYmx0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDpieXRlKQorICAgIHdoZW4g
ImJibHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6Ynl0ZSkKKyAgICB3
aGVuICJidGlvIiwgImJ0cG8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDppbnQp
CisgICAgd2hlbiAiYnRpcyIsICJidHBzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMi
LCA6aW50KQorICAgIHdoZW4gImJ0aXoiLCAiYnRweiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRl
c3QoImp6IiwgOmludCkKKyAgICB3aGVuICJidGlueiIsICJidHBueiIKKyAgICAgIGhhbmRsZVg4
NkJyYW5jaFRlc3QoImpueiIsIDppbnQpCisgICAgd2hlbiAiYnRibyIKKyAgICAgIGhhbmRsZVg4
NkJyYW5jaFRlc3QoImpvIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRicyIKKyAgICAgIGhhbmRsZVg4
NkJyYW5jaFRlc3QoImpzIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRieiIKKyAgICAgIGhhbmRsZVg4
NkJyYW5jaFRlc3QoImp6IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRibnoiCisgICAgICBoYW5kbGVY
ODZCcmFuY2hUZXN0KCJqbnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJqbXAiCisgICAgICAkYXNtLnB1
dHMgIlx0am1wICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdoZW4g
ImJhZGRpbyIsICJiYWRkcG8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkIiwgImpvIiwg
OmludCkKKyAgICB3aGVuICJiYWRkaXMiLCAiYmFkZHBzIgorICAgICAgaGFuZGxlWDg2T3BCcmFu
Y2goImFkZCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYmFkZGl6IiwgImJhZGRweiIKKyAgICAg
IGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGQiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJhZGRpbnoi
LCAiYmFkZHBueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGQiLCAiam56IiwgOmludCkK
KyAgICB3aGVuICJic3ViaW8iCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpvIiwgOmludCkK
KyAgICB3aGVuICJic3ViaXMiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpzIiwgOmludCkK
KyAgICB3aGVuICJic3ViaXoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImp6IiwgOmludCkK
KyAgICB3aGVuICJic3ViaW56IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbnoiLCA6aW50
KQorICAgIHdoZW4gImJtdWxpbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJtdWwiLCAiam8i
LCA6aW50KQorICAgIHdoZW4gImJtdWxpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJtdWwi
LCAianMiLCA6aW50KQorICAgIHdoZW4gImJtdWxpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNo
KCJtdWwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJtdWxpbnoiCisgICAgICBoYW5kbGVYODZP
cEJyYW5jaCgibXVsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYm9yaW8iCisgICAgICBoYW5k
bGVYODZPcEJyYW5jaCgib3IiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJvcmlzIgorICAgICAg
aGFuZGxlWDg2T3BCcmFuY2goIm9yIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJib3JpeiIKKyAg
ICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvciIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYm9yaW56
IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9yIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAi
YnJlYWsiCisgICAgICAkYXNtLnB1dHMgIlx0aW50ICQzIgorICAgIHdoZW4gImNhbGwiCisgICAg
ICAkYXNtLnB1dHMgIlx0Y2FsbCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIK
KyAgICB3aGVuICJyZXQiCisgICAgICAkYXNtLnB1dHMgIlx0cmV0IgorICAgIHdoZW4gImNpZXEi
LCAiY3BlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGUiLCA6aW50KQorICAg
IHdoZW4gImNpbmVxIiwgImNwbmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
bmUiLCA6aW50KQorICAgIHdoZW4gImNpYSIsICJjcGEiCisgICAgICBoYW5kbGVYODZJbnRDb21w
YXJlU2V0KCJzZXRhIiwgOmludCkKKyAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAgICAgIGhh
bmRsZVg4NkludENvbXBhcmVTZXQoInNldGFlIiwgOmludCkKKyAgICB3aGVuICJjaWIiLCAiY3Bi
IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YiIsIDppbnQpCisgICAgd2hlbiAi
Y2liZXEiLCAiY3BiZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiZSIsIDpp
bnQpCisgICAgd2hlbiAiY2lndCIsICJjcGd0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNl
dCgic2V0ZyIsIDppbnQpCisgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIKKyAgICAgIGhhbmRs
ZVg4NkludENvbXBhcmVTZXQoInNldGdlIiwgOmludCkKKyAgICB3aGVuICJjaWx0IiwgImNwbHQi
CisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsIiwgOmludCkKKyAgICB3aGVuICJj
aWx0ZXEiLCAiY3BsdGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bGUiLCA6
aW50KQorICAgIHdoZW4gInRpbyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6aW50
KQorICAgIHdoZW4gInRpcyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6aW50KQor
ICAgIHdoZW4gInRpeiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6aW50KQorICAg
IHdoZW4gInRpbnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDppbnQpCisgICAg
d2hlbiAidGJvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDpieXRlKQorICAgIHdo
ZW4gInRicyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6Ynl0ZSkKKyAgICB3aGVu
ICJ0YnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmJ5dGUpCisgICAgd2hlbiAi
dGJueiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmJ5dGUpCisgICAgd2hlbiAi
cGVlayIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fSgl
ZXNwKSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJwb2tlIgor
ICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwg
I3tvcGVyYW5kc1sxXS52YWx1ZSAqIDR9KCVlc3ApIgorICAgIHdoZW4gImNkcWkiCisgICAgICAk
YXNtLnB1dHMgIlx0Y2RxIgorICAgIHdoZW4gImlkaXZpIgorICAgICAgJGFzbS5wdXRzICJcdGlk
aXZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiZmlpMmQiCisg
ICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdG1v
dmQgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNtLnB1
dHMgIlx0cHNsbHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwb3IgJXhtbTcsICN7
b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiZmQyaWkiCisgICAg
ICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNk
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFzbS5w
dXRzICJcdHBzcmxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgJXhtbTcs
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgcmFpc2Ug
IkJhZCBvcGNvZGU6ICN7b3Bjb2RlfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTA0NDI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIERlYnVn
Z2VyOwogICAgIGNsYXNzIEV2YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgRnVuY3Rpb25Db2RlQmxv
Y2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1D
b2RlQmxvY2s7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKQEAgLTMxOSw2ICszMjAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBw
dWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFi
bGUgQmFzZTsKIApAQCAtMzg0LDYgKzM4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAK
ICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsK
KyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6
CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC00NTMsNiArNDU2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBw
dWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAg
ICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTQXJyYXk7CisgICAgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgc3RydWN0IFNwYXJzZUFycmF5RW50cnkgOiBw
dWJsaWMgV3JpdGVCYXJyaWVyPFVua25vd24+IHsKICAgICAgICAgU3BhcnNlQXJyYXlFbnRyeSgp
IDogYXR0cmlidXRlcygwKSB7fQpAQCAtMTA0LDYgKzEwNSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIH07CiAKICAgICBjbGFzcyBKU0FycmF5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewor
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmll
bmQgY2xhc3MgV2Fsa2VyOwogCiAgICAgcHJvdGVjdGVkOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiwxMCBA
QAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKLSAgICBjbGFz
cyBTdHJ1Y3R1cmU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKKyAgICBj
bGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBlbnVtIEVudW1lcmF0aW9uTW9kZSB7CiAgICAgICAgIEV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsCkBAIC0xNjQsNiArMTY1LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
IAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CisgICAgICAgIAogICAgICAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwogICAg
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKICAgICB9OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTA0
NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1
bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEpTQWN0aXZhdGlvbjsKICAgICBjbGFzcyBKU0ds
b2JhbE9iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
TmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBTb3VyY2VDb2RlOwogICAgIG5hbWVzcGFjZSBE
RkcgewpAQCAtMTQwLDYgKzE0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRl
OgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAK
ICAgICAgICAgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgICAg
IHN0YXRpYyBKU1ZhbHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25z
dCBJZGVudGlmaWVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsx
NDEsOCBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgLCBr
ZXl3b3JkcyhhZG9wdFB0cihuZXcgS2V5d29yZHModGhpcykpKQogICAgICwgaW50ZXJwcmV0ZXIo
MCkKICAgICAsIGhlYXAodGhpcywgaGVhcFNpemUpCisgICAgLCBqc0FycmF5Q2xhc3NJbmZvKCZK
U0FycmF5OjpzX2luZm8pCisgICAgLCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvKCZKU0ZpbmFsT2Jq
ZWN0OjpzX2luZm8pCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLCBzaXplT2ZMYXN0U2NyYXRj
aEJ1ZmZlcigwKQogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwx
NSBAQAogI2RlZmluZSBKU0dsb2JhbERhdGFfaAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5k
ZW50YWxGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJ
bnN0YW5jZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1
ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJTdHJvbmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIK
ICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJO
dW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlN0
cm9uZy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJUaW1lb3V0Q2hlY2tl
ci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYgKzY1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAg
ICAgY2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAg
IGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmE7CiAgICAgY2xh
c3MgUmVnRXhwQ2FjaGU7CkBAIC0yNDgsNiArMjQ5LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247CisKKyAgICAgICAg
Y29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOworICAgICAgICBjb25zdCBD
bGFzc0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CisKICNpZiBFTkFCTEUoSklU
KQogICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIGV4Y2VwdGlvbkxvY2F0aW9uOwogICAgICAgICBK
U1ZhbHVlIGhvc3RDYWxsUmV0dXJuVmFsdWU7CkBAIC0zNTIsNiArMzU3LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAjdW5kZWYgcmVnaXN0ZXJUeXBlZEFycmF5RnVuY3Rpb24KIAogICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAog
ICAgICAgICBKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSwgSGVh
cFNpemUpOwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxEYXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRl
cm5hbCgpOwogICAgICAgICB2b2lkIGNyZWF0ZU5hdGl2ZVRodW5rKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDEw
NDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgR2V0dGVyU2V0dGVyOwogICAgIGNsYXNz
IEdsb2JhbENvZGVCbG9jazsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAg
Y2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2Nr
OwogICAgIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwpAQCAtMzM1LDYgKzMzNiw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIGFkZFN0YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJ
bmZvKiwgaW50IGNvdW50KTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogRm9sZCBy
ZXNldCBpbnRvIGluaXQuCiAgICAgICAgIHZvaWQgaW5pdChKU09iamVjdCogdGhpc1ZhbHVlKTsK
ICAgICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5
LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgR2V0dGVyU2V0dGVyOwogICAg
IGNsYXNzIEhhc2hFbnRyeTsKICAgICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uOworICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRCbG9jazsKICAgICBjbGFz
cyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CkBAIC0y
NjAsNiArMjYxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKTsKIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgICAgIAogICAgICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIgYXNrIGFueSBvZiB0aGVzZSBx
dWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25vd24gdG8gYmUgYSBKU09iamVjdC4KICAg
ICAgICAgdXNpbmcgSlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcjsKICAgICAgICAgdXNpbmcgSlND
ZWxsOjppc0dldHRlclNldHRlcjsKQEAgLTM3MSw2ICszNzQsOCBAQCBDT01QSUxFX0FTU0VSVCgo
SlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgZXhwbGljaXQgSlNGaW5hbE9iamVjdChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICAgICAg
OiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5lU3RvcmFnZSkKICAgICAg
ICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSWRlbnRpZmll
cjsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAKICAgICBjbGFzcyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC05Niw2ICs5Nyw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0
YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpOwogCiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fY2FjaGVkU3RydWN0dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTU3RyaW5nOworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIAogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEpTR2xvYmFsRGF0
YSopOwogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSopOwpAQCAtMjQxLDYg
KzI0Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgdm9pZCBy
ZXNvbHZlUm9wZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNs
b3dDYXNlOChMQ2hhciopIGNvbnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2Uo
VUNoYXIqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVJbmZvLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMTsgLy8gV2ViQ29y
ZSB1c2VzIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgdG8gbWFrZSBkb2N1bWVudC5hbGwgdW5kZXRl
Y3RhYmxlLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbXBsZW1lbnRzSGFzSW5zdGFuY2Ug
PSAxIDw8IDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE92ZXJyaWRlc0hhc0luc3RhbmNl
ID0gMSA8PCAyOwpAQCAtODcsNiArODksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBmbGFnKSBj
b25zdCB7IEFTU0VSVChmbGFnIDw9ICgxIDw8IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBmbGFnOyB9
CiAgICAgICAgIGJvb2wgaXNTZXRPbkZsYWdzMih1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VS
VChmbGFnID49ICgxIDw8IDgpKTsgcmV0dXJuIG1fZmxhZ3MyICYgKGZsYWcgPj4gOCk7IH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmpl
Y3QuaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTIgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAg
Y2xhc3MgUmVnaXN0ZXI7CiAKICAgICBjbGFzcyBKU1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgcHVibGljOgogICAgICAgICB0
eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY29wZUNoYWluLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5JdGVyYXRvcjsKICAgICBjbGFz
cyBTbG90VmlzaXRvcjsKICAgICAKQEAgLTkxLDYgKzkyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAg
ICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0g
T3ZlcnJpZGVzVmlzaXRDaGlsZHJlbjsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYg
KzQ1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CiAgICAgY2xhc3MgUHJvcGVydHlO
YW1lQXJyYXlEYXRhOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOwpAQCAtMTk2LDYgKzE5Nyw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBD
bGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5m
byYsIGNvbnN0IENsYXNzSW5mbyopOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7
CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAko
cmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTdHJ1
Y3R1cmU7CiAKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbiA6IHB1YmxpYyBKU0NlbGwgewpAQCAt
NzQsNiArNzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToK
KyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAg
ICAgICAgIFN0cnVjdHVyZUNoYWluKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgICBPd25BcnJheVB0cjxXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiA+IG1fdmVjdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MTYsNiArOTE2LDEyIEBACiAjZGVm
aW5lIEVOQUJMRV9KSVQgMQogI2VuZGlmCiAKKy8qIE9uIHNvbWUgb2YgdGhlIHBsYXRmb3JtcyB3
aGVyZSB3ZSBoYXZlIGEgSklULCB3ZSB3YW50IHRvIGFsc28gaGF2ZSB0aGUgCisgICBsb3ctbGV2
ZWwgaW50ZXJwcmV0ZXIuICovCisjaWYgRU5BQkxFKEpJVCkgJiYgUExBVEZPUk0oTUFDKSAmJiBV
U0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBFTkFCTEVfTExJTlQgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfREZHX0pJVCkgJiYgRU5BQkxFKEpJVCkKIC8qIEVuYWJsZSB0aGUgREZH
IEpJVCBvbiBYODYgYW5kIFg4Nl82NC4gIE9ubHkgdGVzdGVkIG9uIE1hYyBhbmQgR05VL0xpbnV4
LiAqLwogI2lmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSkgJiYgKFBMQVRGT1JNKE1BQykgfHwg
T1MoTElOVVgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5n
SW1wbC5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IF9fQ0ZTdHJpbmcgKiBDRlN0cmkKIC8vIExhbmRpbmcgdGhlIGZpbGUgbW92
ZXMgaW4gb25lIHBhdGNoLCB3aWxsIGZvbGxvdyBvbiB3aXRoIHBhdGNoZXMgdG8gY2hhbmdlIHRo
ZSBuYW1lc3BhY2VzLgogbmFtZXNwYWNlIEpTQyB7CiBzdHJ1Y3QgSWRlbnRpZmllckNTdHJpbmdU
cmFuc2xhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogdGVtcGxhdGUgPHR5cGVu
YW1lIFQ+IHN0cnVjdCBJZGVudGlmaWVyQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiBzdHJ1Y3QgSWRl
bnRpZmllckxDaGFyRnJvbVVDaGFyVHJhbnNsYXRvcjsKIH0KQEAgLTcwLDcgKzcxLDggQEAgY2xh
c3MgU3RyaW5nSW1wbCB7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6Okhhc2hBbmRVVEY4Q2hhcmFj
dGVyc1RyYW5zbGF0b3I7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6OlVDaGFyQnVmZmVyVHJhbnNs
YXRvcjsKICAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKLQorICAgIGZyaWVuZCBj
bGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKIHByaXZhdGU6CiAgICAgZW51
bSBCdWZmZXJPd25lcnNoaXAgewogICAgICAgICBCdWZmZXJJbnRlcm5hbCwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121624</attachid>
            <date>2012-01-08 23:36:38 -0800</date>
            <delta_ts>2012-01-09 16:00:49 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_4.diff</filename>
            <type>text/plain</type>
            <size>268051</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0NDM2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNyBA
QAorMjAxMi0wMS0wOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV09SSyBJTiBQUk9HUkVTUy4KKworICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIu
aDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKiBieXRlY29kZS9J
bnN0cnVjdGlvbi5oOgorICAgICAgICAqIGhlYXAvQWxsb2NhdGlvblNwYWNlLmg6CisgICAgICAg
ICogaGVhcC9IZWFwLmg6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAq
IGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0
ZXJGaWxlLmg6CisgICAgICAgICogbGxpbnQ6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50
Q29tbW9uLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuVG9UaHJvdyk6CisgICAgICAgIChKU0M6
OkxMSW50OjpjYWxsVG9UaHJvdyk6CisgICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50SGVscGVycy5jcHA6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpMTEludDo6TExJTlRfSEVMUEVSX0RFQ0wpOgorICAgICAgICAqIGxsaW50L0xMSW50
SGVscGVycy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZmxpbmVBc21Db25maWcu
aDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAg
ICAobWFpbik6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206IEFkZGVk
LgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmg6IEFkZGVkLgorICAgICAgICAqIG9mZmxp
bmVhc206IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXJtdjcucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vYXNtLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2Fz
dC5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9iYWNrZW5kcy5yYjogQWRkZWQuCisg
ICAgICAgICogb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiOiBBZGRlZC4K
KyAgICAgICAgKiBvZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYjogQWRkZWQuCisgICAgICAgICog
b2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYjogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9vZmZzZXRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3Bh
cnNlci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9yZWdpc3RlcnMucmI6IEFkZGVk
LgorICAgICAgICAqIG9mZmxpbmVhc20vc2V0dGluZ3MucmI6IEFkZGVkLgorICAgICAgICAqIG9m
ZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3g4Ni5y
YjogQWRkZWQuCisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgICogcnVu
dGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJs
ZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oOgor
ICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwu
aDoKKworMjAxMi0wMS0wOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAg
ICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBhc3NlbWJsZXIvTGlua0J1ZmZlci5oOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5o
OgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAgICogaGVhcC9BbGxv
Y2F0aW9uU3BhY2UuaDoKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01h
cmtlZFNwYWNlLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaDoKKyAgICAgICAgKiBsbGludDogQWRkZWQu
CisgICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmNhbGxUb1Ro
cm93KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMuaDogQWRkZWQuCisgICAgICAg
ICogbGxpbnQvTExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpM
TElOVF9IRUxQRVJfREVDTCk6CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6IEFkZGVk
LgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KToKKyAgICAgICAgKG1haW4p
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRlZC4KKyAgICAg
ICAgKiBvZmZsaW5lYXNtOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2FzbS5yYjogQWRkZWQuCisgICAgICAgICogb2Zm
bGluZWFzbS9hc3QucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6
IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5y
YjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmI6IEFkZGVkLgor
ICAgICAgICAqIG9mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmI6IEFkZGVk
LgorICAgICAgICAqIG9mZmxpbmVhc20vb2Zmc2V0cy5yYjogQWRkZWQuCisgICAgICAgICogb2Zm
bGluZWFzbS9wYXJzZXIucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcmVnaXN0ZXJz
LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3NldHRpbmdzLnJiOiBBZGRlZC4KKyAg
ICAgICAgKiBvZmZsaW5lYXNtL3RyYW5zZm9ybS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGlu
ZWFzbS94ODYucmI6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6Cisg
ICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJp
bmcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKiBydW50aW1l
L0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAg
ICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJl
Q2hhaW4uaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdJbXBsLmg6CisKIDIwMTItMDEtMDggIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBGaXggY29tcGlsYXRpb24gZXJyb3IgYWJvdXQgTGlzdEhh
c2hTZXRSZXZlcnNlSXRlcmF0b3IKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE1IEBA
CiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8K
KwkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8gPSB7CisJCQlp
c2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0
NjgwQUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
QWdncmVnYXRlVGFyZ2V0ICJMTEludCBPZmZzZXRzIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAor
CQkJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMg
Ki8sCisJCQkpOworCQkJbmFtZSA9ICJMTEludCBPZmZzZXRzIjsKKwkJCXByb2R1Y3ROYW1lID0g
IkRlcml2ZWQgU291cmNlcyI7CisJCX07CiAJCTY1RkIzRjY2MDlEMTFFOTEwMEY0OURFQiAvKiBE
ZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CiAJCQli
dWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNjVGQjNGNzcwOUQxMUVCRDAwRjQ5REVCIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJEZXJpdmVkIFNvdXJj
ZXMiICovOwpAQCAtMTQsNiArMjMsOSBAQAogCQkJCTY1RkIzRjY1MDlEMTFFOTEwMEY0OURFQiAv
KiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJNUQzNURFRTEwQzdDMTQwQjAwODY0
OEIyIC8qIEdlbmVyYXRlIERUcmFjZSBoZWFkZXIgKi8sCiAJCQkpOworCQkJZGVwZW5kZW5jaWVz
ID0gKAorCQkJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJCXByb2R1Y3ROYW1l
ID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCX07CkBAIC01OCw2ICs3MCwxMSBAQAogCQkwRjQyNkE0
OTE0NjBDQkI3MDAxMzFGOEYgLyogVmlydHVhbFJlZ2lzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQyNkE0NjE0NjBDQkFCMDAxMzFGOEYgLyog
VmlydHVhbFJlZ2lzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY0MjZBNEIxNDYwQ0Q2RTAwMTMxRjhGIC8qIERhdGFGb3JtYXQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDI2QTRBMTQ2MENE
NkIwMDEzMUY4RiAvKiBEYXRhRm9ybWF0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0MzE3MzgxNDZCQUM2OTAwN0UzODkwIC8qIExpc3RhYmxl
SGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEEzMTRCQTdGOEQw
MEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2Vw
dGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlGMTRCQTdGODIwMEJG
RTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovOyB9OworCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUy
NzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTcx
NEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUy
NzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTgxNEJBN0ZB
QjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRF
eGNlcHRpb25zLmNwcCAqLzsgfTsKIAkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4
Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODMxNEJBNTczMTAw
QkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlv
bnMuY3BwICovOyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25h
bEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzYwLDcg
KzM3Nyw3IEBACiAJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUUxMTE3
RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZH
UmVwYXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkJCMDlCRTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87IH07CiAJCTg2
QkIwOUMxMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyog
REZHUmVwYXRjaC5oICovOyB9OwotCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9B
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyB9OworCQk4
NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1
OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxl
ckFSTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkM1NjhERDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9Owog
CQk4NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VF
MDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07CiAJCTg2QzU2OEUyMTFBMjEz
RUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2Vt
Ymxlci5oICovOyB9OwpAQCAtNzIwLDYgKzczNywyMCBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJ
CTBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7
CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAw
ODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5
cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUy
NzI7CisJCQlyZW1vdGVJbmZvID0gIkxMSW50IE9mZnNldHMiOworCQl9OworCQkwRjQ2ODBCMzE0
QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0g
UEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0
MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJ
CXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyOworCQkJcmVt
b3RlSW5mbyA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJMTQxMjExMzUwQTQ4
Nzk2MTAwNDgwMjU1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBC
WENvbnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAy
OEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTc5Myw2ICs4MjQsMTUgQEAKIC8q
IEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5
RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8q
IENvcHlGaWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFu
L21hbjEvOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKIAkJNURCQjE1
MTExMzFEMEIxMzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7CkBAIC04
NDMsNiArODgzLDEyIEBACiAJCTBGNDI2QTQ2MTQ2MENCQUIwMDEzMUY4RiAvKiBWaXJ0dWFsUmVn
aXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlydHVhbFJlZ2lzdGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDI2QTRBMTQ2MENENkIwMDEzMUY4
RiAvKiBEYXRhRm9ybWF0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERhdGFG
b3JtYXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0MzE3MzYxNDZCQUM2NTAw
N0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBMaXN0YWJsZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0
NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gt
by5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gSlNDTExJbnRPZmZzZXRz
RXh0cmFjdG9yOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkwRjQ2ODA5
RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5jcHA7IHBhdGggPSBsbGludC9M
TEludEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5
RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5oOyBwYXRoID0gbGxpbnQvTExJbnRFeGNl
cHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlGMTRCQTdGODIw
MEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTExJbnRIZWxwZXJzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVycy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRI
ZWxwZXJzLmg7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8q
IEpJVEV4Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SklURXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDgw
MTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5dGVDb2RlQ2FjaGUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNvZGVDYWNoZS5oOyBwYXRoID0gZGZn
L0RGR0J5dGVDb2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDYs
NiArMTU5MiwxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhDMTRCQTdF
NUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAo
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07
CiAJCTE0MTIxMTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNh
ID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwpAQCAtMTYwNCw2ICsxNjU3LDcgQEAKIAkJCQkxNDEyMTEyMDBBNDg3OTNDMDA0ODAyNTUg
LyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAq
LywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkw
RjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAog
CQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0xNjMyLDYgKzE2ODYsNyBAQAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZh
U2NyaXB0Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBq
c2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLywK
KwkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8sCiAJCQkJMTQzMkVCRDcw
QTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYg
LyogYXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29k
ZSAqLywKQEAgLTE2NzAsNiArMTcyNSwxOCBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1Rh
YnMgPSAwOwogCQl9OworCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTBGNDY4MDlEMTRCQTdG
ODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovLAorCQkJCTBGNDY4MDlFMTRCQTdG
ODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLywKKwkJCQkwRjQ2ODA5RjE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLywKKwkJCQkwRjQ2ODBBMDE0QkE3RjgyMDBC
RkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8sCisJCQkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGxsaW50
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMTQxMjExMDAwQTQ4NzcyNjAw
NDgwMjU1IC8qIHRlc3RzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKQEAgLTMwMTAsNiArMzA3Nyw4IEBACiAJCQkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8q
IFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZF
N0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRC
N0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
NDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKQEAgLTMwMTcsNiArMzA4NiwyNCBAQAogLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJ
MEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9
IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3Qg
PSAwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIgKi87CisJCQlidWls
ZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLywK
KwkJCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkwRjQ2
ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVs
ZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4MEIyMTRCQTgxMTUw
MEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBKU0NM
TEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0TmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIg
LyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFw
cGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKIAkJMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1
IC8qIG1pbmlkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLzsKQEAgLTMxNDcs
MTEgKzMyMzQsMjkgQEAKIAkJCQkxNEJENTlCRTBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAq
LywKIAkJCQk5MzJGNUJEQTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAogCQkJCTY1MTEyMkY3
MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4MDhFMTRCQTdFNUUw
MEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCisJCQkJMEY0NjgwQTkxNEJB
N0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8sCiAJCQkpOwogCQl9OwogLyogRW5kIFBC
WFByb2plY3Qgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ug
c2VjdGlvbiAqLworCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZl
ZCBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlu
cHV0UGF0aHMgPSAoCisJCQkJIiQoU1JDUk9PVCkvbGxpbnQvTG93TGV2ZWxBc3NlbWJsZXIuYXNt
IiwKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CisJCQlvdXRw
dXRQYXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cy9MTElu
dERlc2lyZWRPZmZzZXRzLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0g
Im1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9cIlxuXG4vdXNy
L2Jpbi9lbnYgcnVieSBcIiR7U1JDUk9PVH0vb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0
cmFjdG9yLnJiXCIgPCBcIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc21c
IiA+IFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZz
ZXRzLmhcIlxuIjsKKwkJfTsKIAkJMzcxM0YwMTQxNDI5MDUyNDAwMzYzODdGIC8qIENoZWNrIEZv
ciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzICovID0gewogCQkJaXNhID0g
UEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKQEAgLTMyOTIsNiArMzM5NywxNCBAQAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFz
ZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8K
KwkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlmaWxlcyA9ICgKKwkJCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRDBBNDg3OTNDMDA0ODAyNTUg
LyogU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTM1NDksNiArMzY2Miw4IEBACiAJCQkJODY3
MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
ODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxw
ZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBM
TEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwODMxNEJBNTczMTAw
QkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0zNTY0LDYgKzM2NzksMTYg
QEAKIC8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLworCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0
cyAqLzsKKwkJCXRhcmdldFByb3h5ID0gMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENv
bnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8q
IFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5
OworCQkJdGFyZ2V0ID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0
c0V4dHJhY3RvciAqLzsKKwkJCXRhcmdldFByb3h5ID0gMEY0NjgwQjMxNEJBODIxNDAwQkZFMjcy
IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKIAkJMTQxMjExMzYwQTQ4Nzk2MTAw
NDgwMjU1IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXRE
ZXBlbmRlbmN5OwogCQkJdGFyZ2V0ID0gOTMyRjVCM0UwODIyQTFDNzAwNzM2OTc1IC8qIEphdmFT
Y3JpcHRDb3JlICovOwpAQCAtMzYxNyw2ICszNzQyLDE0OCBAQAogLyogRW5kIFBCWFRhcmdldERl
cGVuZGVuY3kgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0
aW9uICovCisJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdB
WVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJE
XzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlHQ0NfQ19MQU5HVUFH
RV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdD
Q19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVW
RUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJV
Rz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfU1lNQk9MU19QUklW
QVRFX0VYVEVSTiA9IE5POworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5s
bHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5P
OworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0Nf
V0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFC
TEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4s
CisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAor
CQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9Z
TUVOVF9UQVJHRVQgPSAxMC43OworCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJCQkJUFJP
RFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJ
CVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
TExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBE
ZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7
CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19T
VEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVH
X0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdV
QUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZ
RVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8w
OworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dB
Uk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JF
VFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJ
CQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAor
CQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyQoSEVBREVSX1NFQVJDSF9Q
QVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJ
CQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7
CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFt
ZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxp
bmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAi
JChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOwor
CQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdD
Q19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQ
VElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0u
Y2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJ
CQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJO
X0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9
IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJ
CQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJ
CSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5U
X1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJ
CQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGlj
dSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRI
UykiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MDk5MTRCQTdF
NUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRI
UyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09Q
WV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdh
cmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJ
CUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29t
LmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9C
SVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBF
UyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0Nf
V0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJj
aD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElS
KS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsK
KwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9
ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURF
Ul9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0
cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsK
KwkJfTsKKwkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RV
Q1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVn
OworCQl9OworCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQ
Uk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBS
ZWxlYXNlOworCQl9OworCQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJ
bmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFBy
b2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsK
KwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjExM0EwQTQ4Nzk4NDAw
NDgwMjU1IC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJ
CQlidWlsZFNldHRpbmdzID0gewpAQCAtMzg1OCw2ICs0MTI1LDI3IEBACiAvKiBFbmQgWENCdWls
ZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0
IHNlY3Rpb24gKi8KKwkJMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3Ii
ICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJh
dGlvbnMgPSAoCisJCQkJMEY0NjgwOTYxNEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJ
CTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4MDk4MTRC
QTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY0NjgwOTkxNEJBN0U1RTAwQkZF
MjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zp
c2libGUgPSAwOworCQl9OworCQkwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICov
ID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlv
bnMgPSAoCisJCQkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBG
NDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4MEFGMTRCQTdG
RDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcy
IC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2li
bGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsK
IAkJMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJh
dGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHJldmlzaW9uIDEwNDQyOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw3IEBACiAjZGVmaW5lIERVTVBfTElOS19TVEFUSVNUSUNTIDAKICNk
ZWZpbmUgRFVNUF9DT0RFIDAKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+CisjaW5jbHVk
ZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDggKzcyLDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGhhc1NlZW5TaG91bGRSZXBhdGNoCiAgICAgfTsKIAotICAgIGNsYXNz
IEV4ZWNTdGF0ZTsKICAgICBjbGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIEV4ZWNTdGF0
ZTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBlbnVtIENvZGVUeXBl
IHsgR2xvYmFsQ29kZSwgRXZhbENvZGUsIEZ1bmN0aW9uQ29kZSB9OwogCkBAIC0yNTYsNiArMjU3
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXIsIHB1YmxpYyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyIHsKICAgICAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgog
ICAgICAgICBlbnVtIENvcHlQYXJzZWRCbG9ja1RhZyB7IENvcHlQYXJzZWRCbG9jayB9OwogICAg
IHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0
cnVjdGlvbi5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDYgKzE4NCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFp
bj4gc3RydWN0dXJlQ2hhaW47CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4g
anNDZWxsOwogICAgICAgICAgICAgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVu
YzsKKyAgICAgICAgICAgIHZvaWQqIHBvaW50ZXI7CiAgICAgICAgIH0gdTsKICAgICAgICAgCiAg
ICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25T
cGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRp
b25TcGFjZS5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9BbGxvY2F0aW9uU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEhlYXA7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiBjbGFzcyBNYXJrZWRCbG9jazsKIAogY2xhc3MgQWxsb2NhdGlvblNwYWNlIHsKQEAgLTY4LDYg
KzY5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2hyaW5rKCk7CiAgICAgCiBwcml2YXRlOgorICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiAgICAgZW51bSBBbGxv
Y2F0aW9uRWZmb3J0IHsgQWxsb2NhdGlvbk11c3RTdWNjZWVkLCBBbGxvY2F0aW9uQ2FuRmFpbCB9
OwogICAgIAogICAgIHZvaWQqIGFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3Mg
SlNWYWx1ZTsKICAgICBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CisgICAgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyOwogICAgIGNs
YXNzIFJlZ2lzdGVyRmlsZTsKICAgICBjbGFzcyBVU3RyaW5nOwpAQCAtMTI5LDEwICsxMzAsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZ2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJS
b290cyhIYXNoU2V0PEpTQ2VsbCo+JiByb290cyk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBm
cmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBBbGxvY2F0aW9u
U3BhY2U7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKICAgICAgICAgZnJpZW5k
IGNsYXNzIENvZGVCbG9jazsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOworICAgICAgICBmcmllbmQg
Y2xhc3MgU2xvdFZpc2l0b3I7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtaW5FeHRy
YUNvc3QgPSAyNTY7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4RXh0cmFDb3N0ID0g
MTAyNCAqIDEwMjQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNl
LmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiBjbGFzcyBIZWFwOwogY2xhc3MgSlNDZWxsOwogY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOwor
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgV2Vha0dDSGFuZGxlOwogY2xhc3Mg
U2xvdFZpc2l0b3I7CiAKQEAgLTc5LDYgKzgwLDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaEJsb2Nr
KCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAKICAgICAvLyBbIDMyLi4uIDI1NiBdCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVj
aXNlU3RlcCA9IE1hcmtlZEJsb2NrOjphdG9tU2l6ZTsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IHByZWNpc2VDdXRvZmYgPSAyNTY7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRh
YmxlOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Cisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRh
YmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwpAQCAt
OTAsOCArOTEsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEludGVycHJldGVyIHsK
ICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBK
SVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAg
IHB1YmxpYzoKICAgICAgICAgSW50ZXJwcmV0ZXIoKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCShyZXZpc2lv
biAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJG
aWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAgICBjbGFzcyBERkdDb2RlQmxvY2tzOwor
ICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIFJlZ2lzdGVyRmls
ZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlZ2lzdGVyRmlsZSk7CkBAIC04MSw2
ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAg
ICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIqKTsKICAgICAgICAgdm9pZCByZWxlYXNlRXhj
ZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9pZCBhZGRUb0NvbW1pdHRlZEJ5dGVDb3VudChsb25n
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29t
bW9uX2gKKworI2RlZmluZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lORyAwCisKKyNlbmRpZiAvLyBM
TEludENvbW1vbl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4
Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorCisjaW5jbHVkZSAiTG93
TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsK
KworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlv
biogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERh
dGEoKTsKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhj
ZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsK
KyAgICAKKyAgICByZXR1cm4gJmdsb2JhbERhdGEtPmV4Y2VwdGlvbkluc3RydWN0aW9uczsKK30K
Kwordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7
CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAg
ICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBw
YyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAKKyAg
ICByZXR1cm4gbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZTsKK30KKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50
IHsKKworLy8gU2F2ZXMgdGhlIGN1cnJlbnQgUEMgaW4gdGhlIGdsb2JhbCBkYXRhIGZvciBzYWZl
LWtlZXBpbmcsIGFuZCBnaXZlcyB5b3UgYSBQQworLy8gdGhhdCB5b3UgY2FuIHRlbGwgdGhlIGlu
dGVycHJldGVyIHRvIGdvIHRvLCB3aGljaCB3aGVuIGFkdmFuY2VkIGJldHdlZW4gMQorLy8gYW5k
IDkgc2xvdHMgd2lsbCBnaXZlIHlvdSBhbiAiaW5zdHJ1Y3Rpb24iIHRoYXQgdGhyZWFkcyB0byB0
aGUgaW50ZXJwcmV0ZXIncworLy8gZXhjZXB0aW9uIGhhbmRsZXIuIE5vdGUgdGhhdCBpZiB5b3Ug
Z2l2ZSBpdCB0aGUgUEMgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZywKKy8vIGl0J3Mgc21hcnQgZW5v
dWdoIHRvIGp1c3QgcmV0dXJuIHRoYXQgUEMgd2l0aG91dCBkb2luZyBhbnl0aGluZyBlbHNlOyB0
aGlzCisvLyBsZXRzIHlvdSB0aHJlYWQgZXhjZXB0aW9uIGhhbmRsaW5nIHRocm91Z2ggY29tbW9u
IGhlbHBlciBmdW5jdGlvbnMgdXNlZCBieQorLy8gb3RoZXIgaGVscGVycy4KK0luc3RydWN0aW9u
KiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisKKy8vIFVzZSB0aGlz
IHdoZW4geW91J3JlIHRocm93aW5nIHRvIGEgY2FsbCB0aHVuay4KK3ZvaWQqIGNhbGxUb1Rocm93
KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTElu
dAorCisjZW5kaWYgLy8gTExJbnRFeGNlcHRpb25zX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTA5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRIZWxwZXJzLmgiCisK
K25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCisjZGVmaW5lIExMSU5UX09QKGlu
ZGV4KSAoZXhlYy0+cmVnaXN0ZXJzKClbcGNbaW5kZXhdLnUub3BlcmFuZF0pCisjZGVmaW5lIExM
SU5UX09QX0MoaW5kZXgpIChleGVjLT5yKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorCisjZGVmaW5l
IExMSU5UX1JFVFVSTl9UV08oZmlyc3QsIHNlY29uZCkgICAgICAgICBcCisgICAgICAgIHVuaW9u
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBzdHJ1Y3Qg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdm9pZCogYTsg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdm9pZCogYjsgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9IHBhaXI7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICBpbnQ2NF90IGk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIH0gX191OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIF9fdS5wYWlyLmEgPSBmaXJzdDsgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIF9fdS5wYWlyLmIgPSBzZWNvbmQ7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJl
dHVybiBfX3UuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFs
c2UpCisKKyNkZWZpbmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCBleGVj
KQorCisjZGVmaW5lIExMSU5UX1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fZ2xvYmFsRGF0YSA9IGV4ZWMt
Pmdsb2JhbERhdGEoKTsgICAgICAgIFwKKyAgICAgICAgX19nbG9iYWxEYXRhLmV4Y2VwdGlvbiA9
IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICBcCisgICAgICAgIHBjID0gcmV0dXJuVG9U
aHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElO
VF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DSEVDS19FWENFUFRJT04oKSBkbyB7
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VMWShleGVjLT5nbG9iYWxE
YXRhKCkuZXhjZXB0aW9uKSkgeyAgIFwKKyAgICAgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvdyhl
eGVjLCBwYyk7ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2Rl
ZmluZSBMTElOVF9FTkQoKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9F
TkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQor
CisjZGVmaW5lIExMSU5UX0JSQU5DSChvcGNvZGUsIGNvbmRpdGlvbikgZG8geyAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBib29sIF9fY29uZGl0aW9uID0gKGNvbmRpdGlvbik7ICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChfX2NvbmRpdGlvbikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMg
Kz0gcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5vcGVyYW5kOyAgICAgIFwKKyAgICAg
ICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wY29kZSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBM
TElOVF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVl
IF9fcmV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19F
WENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9PUCgxKSA9IF9fcmV0
dXJuVmFsdWU7ICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NB
TExfRU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RXTygoZXhlYyksIChj
YWxsVGFyZ2V0KSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBleGNlcHRp
b25Ub1Rocm93KSBkbyB7ICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2V4ZWMgPSAoZXhl
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBf
X3BjID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0ds
b2JhbERhdGEmIF9fZ2xvYmFsRGF0YSA9IChfX2V4ZWMpLT5nbG9iYWxEYXRhKCk7ICAgIFwKKyAg
ICAgICAgX19nbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAg
ICAgICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19leGVjLCBjYWxsVG9UaHJvdyhf
X2V4ZWMsIF9fcGMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NB
TExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIEV4ZWNTdGF0ZSogX19leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX3BjID0gKHBjKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VM
WShfX2V4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fZXhlYywgY2FsbFRvVGhyb3coX19leGVj
LCBfX3BjKSk7ICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FM
TF9SRVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgRXhlY1N0YXRlKiBfX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fcGMgPSAocGMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9pZCogX19jYWxs
VGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19leGVjLT5jYWxsZXJGcmFtZSgpLCBf
X3BjKTsgICAgICAgIFwKKyAgICAgICAgTExJTkdfQ0FMTF9FTkRfSU1QTChfX2V4ZWMsIF9fY2Fs
bFRhcmdldCk7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKwor
TExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKQoreworICAgIC8vIEZJWE1FCit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGxvb3Bfb3NyKQoreworICAgIC8vIEZJWE1FCit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKHJlcGxhY2UpCit7CisgICAgLy8gRklYTUUKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
cmVnaXN0ZXJfZmlsZV9jaGVjaykKK3sKKyAgICAvLyBGSVhNRQorfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNrKQoreworICAgIC8vIEZJWE1FCit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICAvLyBGSVhN
RQorfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pCit7Cisg
ICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gSlNBY3RpdmF0aW9uOjpjcmVhdGUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVj
LT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkpKTsKKyAgICBleGVjLT5zZXRTY29wZUNo
YWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChhY3RpdmF0aW9uKSk7CisgICAgTExJTlRfUkVU
VVJOKEpTVmFsdWUoYWN0aXZhdGlvbikpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y3JlYXRlX2FyZ3VtZW50cykKK3sKKyAgICBMTElOVF9SRVRVUk4oSlNWYWx1ZShBcmd1bWVudHM6
OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9
IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIAorI2lmICFBU1NFUlRfRElTQUJMRUQK
KyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQVNTRVJUKGNvbnN0cnVjdG9y
LT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RE
YXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlmCisgICAgCisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmU7CisgICAgSlNWYWx1ZSBwcm90byA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAg
ICBpZiAocHJvdG8uaXNPYmplY3QoKSkKKyAgICAgICAgc3RydWN0dXJlID0gYXNPYmplY3QocHJv
dG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGVsc2UKKyAgICAgICAg
c3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCktPmdsb2JhbE9iamVjdC0+ZW1wdHlPYmpl
Y3RTdHJ1Y3R1cmUoKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYywgc3RydWN0dXJlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252
ZXJ0X3RoaXMpCit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAg
ICBBU1NFUlQodjEuaXNQcmltaXRpdmUoKSk7CisgICAgTExJTlRfUkVUVVJOKHYxLnRvVGhpc09i
amVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfb2JqZWN0KQor
eworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpCit7CisgICAgQXJnTGlzdCBhcmdMaXN0
KCZMTElOVF9PUCgyKSwgcGNbM10udS5vcGVyYW5kKTsKKyAgICBMTElOVF9SRVRVUk4oY29uc3Ry
dWN0QXJyYXkoZXhlYywgYXJnTGlzdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bmV3X2FycmF5X2J1ZmZlcikKK3sKKyAgICBBcmdMaXN0IGFyZ0xpc3QoZXhlYy0+Y29kZUJsb2Nr
KCktPmNvbnN0YW50QnVmZmVyKHBjWzJdLnUub3BlcmFuZCksIHBjWzNdLnUub3BlcmFuZCk7Cisg
ICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGFyZ0xpc3QpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCkKK3sKKyAgICBSZWdFeHAqIHJlZ0V4cCA9
IGV4ZWMtPmNvZGVCbG9jaygpLT5yZWdleHAocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIXJl
Z0V4cC0+aXNWYWxpZCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVTeW50YXhFcnJvcihl
eGVjLCAiSW52YWxpZCBmbGFnIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSk7Cisg
ICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGV4LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkt
PnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdFeHApKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25vdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFMTElOVF9PUCgyKS5qc1Zh
bHVlKCkudG9Cb29sZWFuKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9l
cSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIExM
SU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bighSlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdGVx
KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhl
YywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdG5lcSkKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUCgyKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbGVzcykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVl
PihleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKQoreworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgp
LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2dyZWF0ZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8ZmFsc2U+
KGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1AoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3ByZV9pbmMpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDEp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKSArIDEpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3ByZV9kZWMpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDEp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKSAtIDEpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Bvc3RfaW5jKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQg
KyAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJTlRf
T1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0ganNOdW1i
ZXIocmVzdWx0IC0gMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKQoreworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcigtTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpCit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09Q
KDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHYyID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7
CisgICAgCisgICAgaWYgKHYxLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgTExJTlRfUkVUVVJOKAor
ICAgICAgICAgICAgdjIuaXNTdHJpbmcoKQorICAgICAgICAgICAgPyBqc1N0cmluZyhleGVjLCBh
c1N0cmluZyh2MSksIGFzU3RyaW5nKHYyKSkKKyAgICAgICAgICAgIDoganNTdHJpbmcoZXhlYywg
YXNTdHJpbmcodjEpLCB2Mi50b1ByaW1pdGl2ZVN0cmluZyhleGVjKSkpOworICAgIH0KKyAgICAK
KyAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIodjEuYXNOdW1iZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKKyAgICAKKyAg
ICBMTElOVF9SRVRVUk4oanNBZGRTbG93Q2FzZShleGVjLCB2MSwgdjIpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX211bCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJ
TlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICogTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1YikK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVt
YmVyKGV4ZWMpIC0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RpdikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX21vZCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoZm1vZChMTElOVF9PUCgyKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYyksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVy
KGV4ZWMpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KQoreworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVj
KSA8PCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA+PiBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
dXJzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1
ZSgpLnRvVUludDMyKGV4ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4
ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpICYg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2JpdG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElO
VF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSB8IExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3Ip
Cit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b0lu
dDMyKGV4ZWMpIF4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCkKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNOdW1iZXIofkxMSU5UX09QKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpCit7CisgICAgSlNWYWx1
ZSBiYXNlVmFsID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworI2lmbmRlZiBOREVCVUcKKyAgICBU
eXBlSW5mbyB0eXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VSVCghYmFzZVZhbC5p
c09iamVjdCgpCisgICAgICAgICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVjdChiYXNlVmFsKS0+
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKTsKKyNlbmRp
ZgorICAgIExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4ZWMsICJpbnN0YW5j
ZW9mIiwgYmFzZVZhbCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2Vv
ZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGluc3RhbmNlT2ZTbG93KGV4ZWMsIExM
SU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpLCBMTElOVF9PUCg0KSkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZikKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRlZmluZWQpCit7CisgICAgSlNW
YWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xl
YW4odi5pc0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KExMSU5UX09QKDIpLmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfaXNfbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJ
TlRfT1AoMikuanNWYWx1ZSgpLmlzTnVtYmVyKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX3N0cmluZykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGlzSlNTdHJp
bmcoZXhlYy0+Z2xvYmFsRGF0YSgpLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihqc0lzT2JqZWN0VHlwZShMTElOVF9PUCgyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbikKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUoTExJTlRfT1AoMikuanNWYWx1ZSgpKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4pCit7CisgICAgTExJTlRfUkVUVVJOKG9wSW4o
ZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpCit7CisgICAgTExJTlRfUkVUVVJO
KG9wUmVzb2x2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9w
ZXJhbmQpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApCit7
CisgICAgTExJTlRfUkVUVVJOKAorICAgICAgICBvcFJlc292ZVNraXAoCisgICAgICAgICAgICBl
eGVjLAorICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5v
cGVyYW5kKSwKKyAgICAgICAgICAgIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5p
c0dsb2JhbE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkgPSBwY1syXS51Lm9wZXJhbmQ7Cisg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBp
bnQgb2Zmc2V0ID0gcGNbNF0udS5vcGVyYW5kOworICAgIAorICAgIEFTU0VSVCgoIXN0cnVjdHVy
ZSkgPT0gKCFvZmZzZXQpKTsKKyAgICBBU1NFUlQoc3RydWN0dXJlICE9IGdsb2JhbE9iamVjdC0+
c3RydWN0dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5p
ZGVudGlmaWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3Qp
OworICAgIAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVu
dCwgc2xvdCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGV4ZWMs
IGlkZW50KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmICFnbG9iYWxP
YmplY3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAg
ICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICBwY1sz
XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgICAg
ICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIExMSU5UX1JFVFVSTihyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9USFJP
VyhjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAgSWRlbnRpZmllciYgaWRl
bnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAg
IGlmIChwY1szXS51Lm9wZXJhbmQpIHsKKyAgICAgICAgSlNWYWx1ZSBiYXNlID0gSlNDOjpyZXNv
bHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCB0cnVlKTsKKyAgICAgICAg
aWYgKCFiYXNlKQorICAgICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlk
R2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICAgICAgTExJTlRf
UkVUVVJOKGJhc2UpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oSlNDOjpyZXNvbHZl
QmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKK3sKKyAgICBKU09i
amVjdCogb2JqZWN0ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29k
ZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIW9iamVjdC0+
Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50KSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRl
RXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVf
d2l0aF9iYXNlKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gb3BSZXNvbHZlV2l0aEJhc2UoZXhl
YywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRf
T1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0g
cmVzdWx0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cmVzb2x2ZV93aXRoX3RoaXMpCit7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBvcFJlc29sdmVXaXRo
VGhpcyhleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQp
LCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRf
T1AoMikgPSByZXN1bHQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9nZXRfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmll
cihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMiku
anNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDEpID0gcmVzdWx0OworCisgICAgaWYg
KGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkKKyAgICAg
ICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAmJiBzbG90LmNhY2Vk
UHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpWYWx1ZSkgeworICAgICAgICAKKyAgICAg
ICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAg
ICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAg
JiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgewor
ICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMt
Pmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsK
KyAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXpl
b2YoSlNWYWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpCit7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9
IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaWRl
bnQsIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90
LmlzQ2FjaGVhYmxlKCkpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBi
YXNlVmFsZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2Vs
bC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNh
Y2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8o
KS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKQorICAgICAgICAgICAgJiYgYmFzZUNlbGwgPT0g
c2xvdC5iYXNlKCkpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgp
ID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
IXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbm9ybWFs
aXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5pc09i
amVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X25vcm1hbDsKKyAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAg
ICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgICAgICAgICAgICAg
ICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1
ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1
cmVDaGFpbi5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCks
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4o
ZXhlYykpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBsbGludF9vcF9wdXRfYnlfaWQ7CisgICAgICAgICAg
ICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICBleGVjLT5n
bG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7Cisg
ICAgICAgICAgICAgICAgcGNbNV11Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6
ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X2lkKQor
eworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNP
YmplY3QqIGJhc2VPYmplY3QgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7
CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0
ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51
Lm9wZXJhbmQpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBpZiAoIWNvdWxk
RGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9X
KGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7Cisg
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitpbmxpbmUgSlNW
YWx1ZSBnZXRCeVZhbChKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCit7Cisg
ICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkp
KSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFz
dEdldE93blByb3BlcnR5KGV4ZWMsIGFzU3RyaW5nKHN1YnNjcmlwdCktPnZhbHVlKGV4ZWMpKSkK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIGlmIChzdWJzY3Jp
cHQuaXNVSW50MzIoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMy
KCk7CisgICAgICAgIGlmIChpc0pTU3RyaW5nKGV4ZWMsIGJhc2VWYWx1ZSkgJiYgYXNTdHJpbmco
YmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICByZXR1cm4gYXNTdHJpbmco
YmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAorICAgICAgICBpZiAoaXNK
U0J5dGVBcnJheShleGVjLCBiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNh
bkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzQnl0ZUFycmF5KGJhc2VWYWx1
ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGJhc2VWYWx1
ZS5nZXQoZXhlYywgaSk7CisgICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhl
Yywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZhbHVlLmdldChl
eGVjLCBwcm9wZXJ0eSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFs
KQoreworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExM
SU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X2FyZ3VtZW50X2J5X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IExMSU5UX09QKDIp
LmpzVmFsdWUoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykgeworICAgICAgICBhcmd1bWVudHMgPSBB
cmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpOworICAgICAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgTExJTlRfT1AoMikgPSBhcmd1bWVudHM7Cisg
ICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChhcmd1bWVudHMsIExMSU5UX09Q
KDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3Bu
YW1lKQoreworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChMTElOVF9PUCgyKS5qc1ZhbHVlKCks
IExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHV0X2J5X3ZhbCkKK3sKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9i
YWxEYXRhKCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUCgxKS5qc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7Cisg
ICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBpZiAo
TElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vi
c2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTQXJyYXkoJmdsb2JhbERhdGEsIGJh
c2VWYWx1ZSkpIHsKKyAgICAgICAgICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5KGJhc2VW
YWx1ZSk7CisgICAgICAgICAgICBpZiAoanNBcnJheS0+Y2FuU2V0SW5kZXgoaSkpCisgICAgICAg
ICAgICAgICAganNBcnJheS0+c2V0SW5kZXgoZ2xvYmFsRGF0YSwgaSwgdmFsdWUpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5kZXgoanNBcnJheSwg
ZXhlYywgaSwgdmFsdWUpOworICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoJmdsb2JhbERhdGEsIGJhc2VWYWx1ZSkKKyAgICAgICAg
ICAgICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CisgICAg
ICAgICAgICBKU0J5dGVBcnJheSoganNCeXRlQXJyYXkgPSBhc0J5dGVBcnJheShiYXNlVmFsdWUp
OworICAgICAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkgeworICAgICAgICAgICAgICAgIGpz
Qnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5hc0ludDMyKCkpOworICAgICAgICAgICAgICAg
IExMSU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHZhbHVlLmlzTnVt
YmVyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUu
YXNOdW1iZXIoKSk7CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpLCB2YWx1ZSk7CisgICAg
ICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4
ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0
TW9kZSgpKTsKKyAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlf
dmFsKQoreworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOwor
ICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAg
IAorICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1AoMykuanNWYWx1ZSgpOworICAgIAor
ICAgIGJvb2wgY291bGREZWxldGU7CisgICAgCisgICAgdWludDMyX3QgaTsKKyAgICBpZiAoc3Vi
c2NyaXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRo
b2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYmFzZU9iaiwgZXhlYywgaSk7CisgICAg
ZWxzZSB7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBJZGVudGlm
aWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7CisgICAgICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmotPm1l
dGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGV4ZWMsIHByb3BlcnR5KTsKKyAg
ICB9CisgICAgCisgICAgaWYgKCFyZXN1bHQgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0
TW9kZSgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJs
ZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0Jvb2xl
YW4oY291bGREZWxldGUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9p
bmRleCkKK3sKKyAgICBMTElOVF9PUCgxKS5qc1ZhbHVlKCkucHV0KGV4ZWMsIHBjWzJdLnUub3Bl
cmFuZCwgTExJTlRfT1AoMykuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIpCit7CisgICAgQVNTRVJUKExMSU5UX09Q
KDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2Jq
ZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2Rl
QmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1Ao
MykuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRl
ZmluZUdldHRlcihiYXNlT2JqLCBleGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNW
YWx1ZSgpKSwgMCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wdXRfc2V0dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNP
YmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5q
c1ZhbHVlKCkpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVy
KHBjWzJdLnUub3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpzVmFsdWUoKS5pc09i
amVjdCgpKTsKKyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVTZXR0ZXIoYmFzZU9i
aiwgZXhlYywgaWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUoKSksIDApOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpCit7Cisg
ICAgTExJTlRfQlJBTkNIKG9wX2p0cnVlLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9Cb29sZWFu
KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pmYWxzZSkKK3sKKyAgICBM
TElOVF9CUkFOQ0gob3BfamZhbHNlLCAhTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihl
eGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcykKK3sKKyAgICBMTElO
VF9CUkFOQ0gob3Bfamxlc3MsIGpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFs
dWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2pubGVzcykKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzLCAhanNMZXNzPHRy
dWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXIpCit7CisgICAgTExJ
TlRfQlJBTkNIKG9wX2pncmVhdGVyLCBqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMSku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfam5ncmVhdGVyKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmdyZWF0ZXIs
ICFqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3NlcSkK
K3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3NlcSwganNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bf
am5sZXNzZXEsICFqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2pncmVhdGVyZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVhdGVyZXEsIGpzTGVzc0Vx
PGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcmVxKQorewor
ICAgIExMSU5UX0JSQU5DSChvcF9qbmdyZWF0ZXJlcSwgIWpzTGVzc0VxPGZhbHNlPihleGVjLCBM
TElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9pbW0pCit7CisgICAgSlNWYWx1ZSBzY3J1
dGluZWUgPSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHNjcnV0aW5lZS5pc0Rv
dWJsZSgpKTsKKyAgICBkb3VibGUgdmFsdWUgPSBzY3J1dGluZWUuYXNEb3VibGUoKTsKKyAgICBp
bnQzMl90IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpOworICAgIGludCBk
ZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlmICh2YWx1ZSA9PSBpbnRWYWx1
ZSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwor
ICAgICAgICBwYyArPSBjb2RlQmxvY2stPmltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZShwY1sxXS51
Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGludFZhbHVlLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9
IGVsc2UKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpCit7CisgICAgSlNWYWx1
ZSBzY3J1dGluZWUgPSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7CisgICAgaW50IGRlZmF1bHRPZmZz
ZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKCFzY3J1dGluZWUuaXNTdHJpbmcoKSkKKyAg
ICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBlbHNlIHsKKyAgICAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2Nr
LT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShh
c1N0cmluZyhzY3J1dGluZWUpLT52YWx1ZShleGVjKS5pbXBsKCksIGRlZmF1bHRPZmZzZXQpOwor
ICAgIH0KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
d19mdW5jKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CisgICAgQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUKKyAgICAg
ICAgICAgfHwgIWNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpCisgICAgICAgICAgIHx8
IGV4ZWMtPnVuY2hlY2tlZFIoY29kZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1
ZSgpKTsKKyAgICBMTElOVF9SRVRVUk4oY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbMl0udS5v
cGVyYW5kKS0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25ld19mdW5jX2V4cCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24g
PSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTRnVuY3Rp
b24qIGZ1bmMgPSBmdW5jdGlvbi0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpOworICAg
IAorICAgIGlmICghZnVuY3Rpb24tPm5hbWUoKS5pc051bGwoKSkgeworICAgICAgICBKU1N0YXRp
Y1Njb3BlT2JqZWN0KiBmdW5jdGlvblNjb3BlT2JqZWN0ID0gSlNTdGF0aWNTY29wZU9iamVjdDo6
Y3JlYXRlKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKCksIGZ1bmMsIFJlYWRPbmx5IHwgRG9udERlbGV0
ZSk7CisgICAgICAgIGZ1bmMtPnNldFNjb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuYy0+c2Nv
cGUoKS0+cHVzaChmdW5jdGlvblNjb3BlT2JqZWN0KSk7CisgICAgfQorICAgIAorICAgIExMSU5U
X1JFVFVSTihmdW5jKTsKK30KKworc3RhdGljIEhlbHBlclJldHVyblR5cGUgaGFuZGxlSG9zdENh
bGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgY2FsbGVl
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0g
ZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEg
PSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworCisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihl
eGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKwor
ICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRh
OworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxlZSwgY2FsbERh
dGEpOworICAgIAorICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVKUyk7CisgICAg
CisgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUhvc3QpIHsKKyAgICAgICAgICAgIGds
b2JhbERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEu
bmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
TExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBBU1NF
UlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKTsKKyAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhl
eGVjLCBwYywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CisgICAgfQor
CisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgCisgICAgQ29uc3Ry
dWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9
IGdldENvbnN0cnVjdERhdGEoY2FsbGVlLCBjb25zdHJ1Y3REYXRhKTsKKyAgICAKKyAgICBBU1NF
UlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlSlMpOworICAgIAorICAgIGlmIChjb25z
dHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVIb3N0KSB7CisgICAgICAgIGdsb2JhbERhdGEtPmhv
c3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUu
ZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2Fs
bGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkp
OworICAgIH0KKyAgICAKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBl
Tm9uZSk7CisgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUNvbnN0cnVj
dG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIHNl
dFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUsIFdyaXRlQmFycmllckJh
c2U8SlNDZWxsPiogZXhwZWN0ZWRGdW5jdGlvbiA9IDAsIHZvaWQqKiBtYWNoaW5lQ29kZSA9IDAp
Cit7CisgICAgQVNTRVJUKCFleHBlY3RlZEZ1bmN0aW9uID09ICFtYWNoaW5lQ29kZSk7CisgICAg
CisgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVl
QXNWYWx1ZSk7CisgICAgaWYgKCFjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkKKyAgICAgICAgcmV0dXJu
IGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIHBjLCBjYWxsZWVBc1ZhbHVlLCBraW5kKTsKKyAg
ICAKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxlZUFzRnVuY3Rpb25D
ZWxsKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGNhbGxlZS0+c2NvcGVVbmNoZWNr
ZWQoKSk7CisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFi
bGUoKTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IDA7CisgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9u
KCkpCisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtp
bmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgZWxzZSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4oZXhlY3V0YWJsZSk7CisgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+Y29tcGlsZUZvcihleGVjQ2FsbGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOworICAg
ICAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYyk7CisgICAgICAgIGNvZGVC
bG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOwor
ICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0
YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5tX251bVBhcmFtZXRlcnMpKQorICAgICAgICAg
ICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZVdpdGhBcml0
eUNoZWNrRm9yKGtpbmQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUHRyID0gZnVu
Y3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxs
KCk7CisgICAgfQorICAgIAorICAgIGlmIChleHBlY3RlZEZ1bmN0aW9uKSB7CisgICAgICAgIGV4
cGVjdGVkRnVuY3Rpb24tPnNldChleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCksIGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICAgICAgKm1hY2hpbmVDb2Rl
ID0gY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9D
QUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsK
K30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVj
LCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICAv
LyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAvLyAt
IEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAg
ICAvLyAtIElmIHBvc3NpYmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAgIC8v
IC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhl
IG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZl
eGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJ
TlRfT1AoMSk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNd
LnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlZShjYWxs
ZWVBc1ZhbHVlKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICAK
KyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVl
LCAmcGNbNF0udS5qc0NlbGwsICZwY1s1XS51LnBvaW50ZXIpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY2FsbCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENv
ZGVGb3JDYWxsKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCkKK3sK
KyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKQoreworICAgIC8vIFRoaXMg
bmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lIHdoaWxlIHJlc3BlY3Rpbmcg
dGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxs
IGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9m
IG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAg
ICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKTsKKyAgICAKKyAgICBF
eGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBsb2FkVmFyYXJncygKKyAgICAgICAgZXhlYywgZXhlYy0+
Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwKKyAgICAgICAgTExJTlRf
T1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIHBjWzRdLnUub3BlcmFuZCk7
CisgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpOworICAgIAorICAgIGV4
ZWNDYWxsZWUtPnNldENhbGxlZShjYWxsZWVBc1ZhbHVlKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRD
YWxsZXJGcmFtZShleGVjKTsKKyAgICAKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUs
IHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2NhbGxfZXZhbCkKK3sKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKTsK
KyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5k
OworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAg
ICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51
Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4
ZWNDYWxsZWUtPnNldENhbGxlZShjYWxsZWVBc1ZhbHVlKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRT
Y29wZUNoYWluKGNhbGxlckZyYW1lLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNl
dFJldHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KGxsaW50X2dlbmVyaWNfcmV0dXJu
X3BvaW50KSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworICAgIAorICAgIGlm
ICghaXNIb3N0RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQorICAgICAg
ICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNW
YWx1ZSk7CisgICAgCisgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0gZXZhbChl
eGVjQ2FsbGVlKTsKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKK3sKKyAgICBBU1NFUlQoZXhl
Yy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgSlNWYWx1ZSBhY3Rp
dmF0aW9uVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhY3RpdmF0aW9u
VmFsdWUpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnJlZ2lzdGVycygpW3VubW9k
aWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpXSkgeworICAgICAgICAgICAg
aWYgKCFleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICAgICAg
YXNBcmd1bWVudHModiktPnRlYXJPZmYoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICAgICAgfQor
ICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9u
ID0gYXNBY3RpdmF0aW9uKGFjdGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9m
ZihleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT5yZWdpc3Rl
cnMoKVt1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKV0pCisgICAg
ICAgIGFzQXJndW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLT5nbG9iYWxEYXRh
KCksIGFjdGl2YXRpb24pOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQoreworICAgIEFTU0VSVChleGVjLT5jb2RlQmxv
Y2soKS0+dXNlc0FyZ3VtZW50cygpICYmICFleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2Nv
cGVDaGFpbigpKTsKKyAgICBhc0FyZ3VtZW50cyhleGVjLT5yZWdpc3RlcnMoKVt1bm1vZGlmaWVk
QXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKV0pLT50ZWFyT2ZmKGV4ZWMtPmdsb2Jh
bERhdGEoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9zdHJjYXQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsICZMTElOVF9PUCgy
KSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19w
cmltaXRpdmUpCit7CisgICAgTExJTlRfUkVUVVJOKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b1By
aW1pdGl2ZShleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVz
KQoreworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAodi5p
c1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBjICs9IHBjWzVdLnUub3BlcmFuZDsKKyAg
ICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBvID0gdi50b09i
amVjdChleGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVjdHVyZSgpOwor
ICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBzdHJ1
Y3R1cmUtPmVudW1lcmF0aW9uQ2FjaGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlOYW1lSXRlcmF0
b3IgfHwganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4oKSAhPSBz
dHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpKQorICAgICAgICBqc1Byb3BlcnR5TmFtZUl0
ZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8pOworICAgIAor
ICAgIExMSU5UX09QKDEpID0ganNQcm9wZXJ0eU5hbWVJdGVyYXRvcjsKKyAgICBMTElOVF9PUCgy
KSA9IEpTVmFsdWUobyk7CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rlcjo6d2l0aEludCgwKTsK
KyAgICBMTElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJvcGVydHlOYW1lSXRlcmF0
b3ItPnNpemUoKSk7CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcG5hbWVz
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRf
cG5hbWUpCit7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChMTElOVF9PUCgyKS5qc1Zh
bHVlKCkpOworICAgIEpTU3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3RyaW5nKExMSU5UX09QKDEpLmpz
VmFsdWUoKSk7CisgICAgaWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgcHJvcGVydHktPnZhbHVlKGV4ZWMpKSkpIHsKKyAgICAgICAgLy8gR28gdG8gdGFyZ2V0Lgor
ICAgICAgICBwYyArPSBwY1s2XS51Lm9wZXJhbmQ7CisgICAgfSAvLyBFbHNlLCBkb24ndCBjaGFu
Z2UgdGhlIFBDLCBzbyB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxvb3AuCisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKQoreworICAgIEpT
VmFsdWUgdiA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogbyA9IHYudG9P
YmplY3QoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgTExJ
TlRfT1AoMSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigp
LT5wdXNoKG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3BvcF9zY29wZSkKK3sKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNj
b3BlQ2hhaW4oKS0+cG9wKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpCit7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihj
cmVhdGVFeGNlcHRpb25TY29wZShleGVjLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl90aHJvdykKK3sKKyAgICBMTElOVF9USFJPVyhMTElOVF9PUCgxKS5qc1ZhbHVl
KCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9y
KQoreworICAgIExMSU5UX1RIUk9XKGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIExMSU5UX09Q
X0MoMSkuanNWYWx1ZSgpLnRvU3RyaW5nKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9kZWJ1ZykKK3sKKyAgICBpbnQgZGVidWdIb29rSUQgPSBwY1sxXS51Lm9wZXJhbmQ7
CisgICAgaW50IGZpcnN0TGluZSA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgbGFzdExpbmUg
PSBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJl
dGVyLT5kZWJ1ZyhleGVjLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBm
aXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQoreworICAgICgqUHJvZmlsZXI6
OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSgpKS0+d2lsbEV4ZWN1dGUoZXhlYywgTExJTlRfT1Ao
MSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCit7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2Zp
bGVyUmVmZXJlbmNlKCkpLT5kaWRFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50SGVscGVyc19oCisjZGVmaW5lIExMSW50SGVs
cGVyc19oCisKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgTExJbnQgeworCit0eXBlZGVmIGludDY0X3QgSGVscGVyUmV0dXJuVHlwZTsK
KworI2RlZmluZSBMTElOVF9IRUxQRVJfREVDTChuYW1lKSBcCisgICAgZXh0ZXJuICJDIiBIZWxw
ZXJSZXR1cm5UeXBlIGxsaW50XyMjbmFtZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBw
YykKKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGxv
b3Bfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpOworTExJTlRfSEVMUEVSX0RFQ0wo
cmVnaXN0ZXJfZmlsZV9jaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0
eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NyZWF0ZV90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25ld19hcnJheSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5
X2J1ZmZlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9z
dHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0bmVxKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2dyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2luYyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcG9zdF9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbmVnYXRlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX211bCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9yc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0
b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcik7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfYml0bm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5z
dGFuY2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3R5cGVvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5k
ZWZpbmVkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lz
X3N0cmluZyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
aW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Jlc29sdmVfc2tpcCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2
ZV9nbG9iYWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Jlc29sdmVfd2l0aF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlf
aWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZGVsX2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlf
dmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3B1dF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHV0X2dldHRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X3Nl
dHRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2pmYWxzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3MpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
amdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcik7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfamxlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5s
ZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9z
d2l0Y2hfaW1tKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfY2hhcik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0cmluZyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmV3X2Z1bmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jX2V4cCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVh
cl9vZmZfYXJndW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X3BuYW1lcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcG9wX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19z
Y29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZGVidWcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKTsKKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludEhlbHBlcnNfaAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
bGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRPZmZsaW5l
QXNtQ29uZmlnX2gKKyNkZWZpbmUgTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKKworI2luY2x1ZGUg
IkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKworI2lmIENQVShY
ODYpCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FT
TV9YODYgMAorI2VuZGlmCisKKyNpZiBDUFUoQVJNdjcpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FS
TXY3IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDAKKyNlbmRpZgorCisjaWYg
IUFTU0VSVF9ESVNBQkxFRAorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAxCisj
ZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lm
IENQVShCSUdfRU5ESUFOKQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDEKKyNlbHNl
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMAorI2VuZGlmCisKKyNpZiBFTkFCTEUo
TExJTlRfT1NSX1RPX0pJVCkKKyNkZWZpbmUgT0ZGTElORV9BU01fSklUX0VOQUJMRUQgMQorI2Vs
c2UKKyNkZWZpbmUgT0ZGTElORV9BU01fSklUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBMTElO
VF9FWEVDVVRJT05fVFJBQ0lORworI2RlZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lO
RyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAwCisjZW5k
aWYKKworI2VuZGlmIC8vIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2luY2x1ZGUgIkFsbG9jYXRpb25TcGFjZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKKyNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNp
bmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNH
bG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09i
amVjdC5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJK
U1N0cmluZy5oIgorI2luY2x1ZGUgIkpTdHlwZUluZm8uaCIKKyNpbmNsdWRlICJKU1ZhcmlhYmxl
T2JqZWN0LmgiCisjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKKyNpbmNsdWRlICJSZWdpc3Rl
ckZpbGUuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgi
CisjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX09GRlNFVE9GKGNsYXp6LCBmaWVsZCkgT0JKRUNUX09GRlNFVE9G
KGNsYXp6LCBmaWVsZCkKKworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQqIGR1bW15KCk7Cit9OworCitjb25zdCB1bnNpZ25l
ZCogTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpCit7CisjaW5jbHVkZSAiTExJbnREZXNp
cmVkT2Zmc2V0cy5oIgorICAgIHJldHVybiBleHRyYWN0b3JUYWJsZTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKK2ludCBtYWluKGludCwgY2hhcioqKQoreworICAgIC8vIE91dCBvZiBhbiBh
YnVuZGFuY2Ugb2YgY2F1dGlvbiwgbWFrZSBzdXJlIHRoYXQgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OjpkdW1teSgpIGlzIGxpdmUsCisgICAgLy8gYW5kIHRoZSBleHRyYWN0b3JUYWJsZSBpcyBsaXZl
LCB0b28uCisgICAgcHJpbnRmKCIlcFxuIiwgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KCkpOworICAgIHJldHVybiAwOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyMTU5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisKKyMgQ3Jhc2ggY291cnNlIG9uIHRoZSBsYW5ndWFnZSB0aGF0IHRoaXMg
aXMgd3JpdHRlbiBpbiAod2hpY2ggSSBqdXN0IGNhbGwKKyMgImFzc2VtYmx5IiBldmVuIHRob3Vn
aCBpdCdzIG1vcmUgdGhhbiB0aGF0KToKKyMKKyMgLSBNb3N0bHkgZ2FzLXN0eWxlIG9wZXJhbmQg
b3JkZXJpbmcuIFRoZSBsYXN0IG9wZXJhbmQgdGVuZHMgdG8gYmUgdGhlCisjICAgZGVzdGluYXRp
b24uIFNvICJhIDo9IGIiIGlzIHdyaXR0ZW4gYXMgIm1vdiBiLCBhIi4gQnV0IHVubGlrZSBnYXMs
CisjICAgY29tcGFyaXNvbnMgYXJlIGluLW9yZGVyLCBzbyAiaWYgKGEgPCBiKSIgaXMgd3JpdHRl
biBhcworIyAgICJiaWx0IGEsIGIsIC4uLiIuCisjCisjIC0gImIiID0gYnl0ZSwgImgiID0gMTYt
Yml0IHdvcmQsICJpIiA9IDMyLWJpdCB3b3JkLCAicCIgPSBwb2ludGVyLgorIyAgIEN1cnJlbnRs
eSB0aGlzIGlzIGp1c3QgMzItYml0IHNvICJpIiBhbmQgInAiIGFyZSBpbnRlcmNoYW5nZWFibGUK
KyMgICBleGNlcHQgd2hlbiBhbiBvcCBzdXBwb3J0cyBvbmUgYnV0IG5vdCB0aGUgb3RoZXIuCisj
CisjIC0gSW4gZ2VuZXJhbCwgdmFsaWQgb3BlcmFuZHMgZm9yIG1hY3JvIGludm9jYXRpb25zIGFu
ZCBpbnN0cnVjdGlvbnMgYXJlCisjICAgcmVnaXN0ZXJzIChlZyAidDAiKSwgYWRkcmVzc2VzIChl
ZyAiNFt0MF0iKSwgYmFzZS1pbmRleCBhZGRyZXNzZXMKKyMgICAoZWcgIjdbdDAsIHQxLCAyXSIp
LCBhYnNvbHV0ZSBhZGRyZXNzZXMgKGVnICIweGEwMDAwMDAwW10iKSwgb3IgbGFiZWxzCisjICAg
KGVnICJfZm9vIiBvciAiLmZvbyIpLiBNYWNybyBpbnZvY2F0aW9ucyBjYW4gYWxzbyB0YWtlIGFu
b255bW91cworIyAgIG1hY3JvcyBhcyBvcGVyYW5kcy4gSW5zdHJ1Y3Rpb25zIGNhbm5vdCB0YWtl
IGFub255bW91cyBtYWNyb3MuCisjCisjIC0gTGFiZWxzIG11c3QgaGF2ZSBuYW1lcyB0aGF0IGJl
Z2luIHdpdGggZWl0aGVyICJfIiBvciAiLiIuICBBICIuIiBsYWJlbAorIyAgIGlzIGxvY2FsIGFu
ZCBnZXRzIHJlbmFtZWQgYmVmb3JlIGNvZGUgZ2VuIHRvIG1pbmltaXplIG5hbWVzcGFjZQorIyAg
IHBvbGx1dGlvbi4gQSAiXyIgbGFiZWwgaXMgYW4gZXh0ZXJuIHN5bWJvbCAoaS5lLiAiLmdsb2Js
IikuIFRoZSAiXyIKKyMgICBtYXkgb3IgbWF5IG5vdCBiZSByZW1vdmVkIGR1cmluZyBjb2RlIGdl
biBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgYXNtCisjICAgY29udmVudGlvbnMgZm9yIEMgbmFt
ZSBtYW5nbGluZyBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtIG1hbmRhdGUgYSAiXyIKKyMgICBwcmVm
aXguCisjCisjIC0gQSAibWFjcm8iIGlzIGEgbGFtYmRhIGV4cHJlc3Npb24sIHdoaWNoIG1heSBi
ZSBlaXRoZXIgYW5vbnltb3VzIG9yCisjICAgbmFtZWQuIEJ1dCB0aGlzIGhhcyBjYXZlYXRzLiAi
bWFjcm8iIGNhbiB0YWtlIHplcm8gb3IgbW9yZSBhcmd1bWVudHMsCisjICAgd2hpY2ggbWF5IGJl
IG1hY3JvcyBvciBhbnkgdmFsaWQgb3BlcmFuZHMsIGJ1dCBpdCBjYW4gb25seSByZXR1cm4KKyMg
ICBjb2RlLiBCdXQgeW91IGNhbiBkbyBUdXJpbmctY29tcGxldGUgdGhpbmdzIHZpYSBjb250aW51
YXRpb24gcGFzc2luZworIyAgIHN0eWxlOiAibWFjcm8gZm9vIChhLCBiKSBiKGEpIGVuZCBmb28o
Zm9vLCBmb28pIi4gQWN0dWFsbHksIGRvbid0IGRvCisjICAgdGhhdCwgc2luY2UgeW91J2xsIGp1
c3QgY3Jhc2ggdGhlIGFzc2VtYmxlci4KKyMKKyMgLSBBbiAiaWYiIGlzIGEgY29uZGl0aW9uYWwg
b24gc2V0dGluZ3MuIEFueSBpZGVudGlmaWVyIHN1cHBsaWVkIGluIHRoZQorIyAgIHByZWRpY2F0
ZSBvZiBhbiAiaWYiIGlzIGFzc3VtZWQgdG8gYmUgYSAjZGVmaW5lIHRoYXQgaXMgYXZhaWxhYmxl
CisjICAgZHVyaW5nIGNvZGUgZ2VuLiBTbyB5b3UgY2FuJ3QgdXNlICJpZiIgZm9yIGNvbXB1dGF0
aW9uIGluIGEgbWFjcm8sIGJ1dAorIyAgIHlvdSBjYW4gdXNlIGl0IHRvIHNlbGVjdCBkaWZmZXJl
bnQgcGllY2VzIG9mIGNvZGUgZm9yIGRpZmZlcmVudAorIyAgIHBsYXRmb3Jtcy4KKyMKKyMgLSBB
cmd1bWVudHMgdG8gbWFjcm9zIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgcmF0aGVyIHRoYW4gZHlu
YW1pYyBzY29waW5nLgorIyAgIENvbnN0J3MgYWxzbyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIGFu
ZCBtYXkgb3ZlcnJpZGUgKGhpZGUpIGFyZ3VtZW50cworIyAgIG9yIG90aGVyIGNvbnN0cy4gQWxs
IHZhcmlhYmxlcyAoYXJndW1lbnRzIGFuZCBjb25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAgIHRv
IG9wZXJhbmRzLiBBZGRpdGlvbmFsbHksIGFyZ3VtZW50cyAoYnV0IG5vdCBjb25zdGFudHMpIGNh
biBiZSBib3VuZAorIyAgIHRvIG1hY3Jvcy4KKworCisjIFRoZXNlIGRlY2xhcmF0aW9ucyBtdXN0
IG1hdGNoIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oLgorY29uc3QgQ2FsbEZyYW1lSGVhZGVy
U2l6ZSA9IDQ4Citjb25zdCBBcmd1bWVudENvdW50ID0gLTQ4Citjb25zdCBDYWxsZXJGcmFtZSA9
IC00MAorY29uc3QgQ2FsbGVlID0gLTMyCitjb25zdCBTY29wZUNoYWluID0gLTI0Citjb25zdCBS
ZXR1cm5QQyA9IC0xNgorY29uc3QgQ29kZUJsb2NrID0gLTgKKworIyBEZWNsYXJlIHNvbWUgYWxp
YXNlcyBmb3IgdGhlIHJlZ2lzdGVycyB3ZSB3aWxsIHVzZS4KK2NvbnN0IFBDID0gdDQKKworIyBP
ZmZzZXRzIG5lZWRlZCBmb3IgcmVhc29uaW5nIGFib3V0IHZhbHVlIHJlcHJlc2VudGF0aW9uLgor
aWYgQklHX0VORElBTgorICAgIGNvbnN0IFRhZ09mZnNldCA9IDAKKyAgICBjb25zdCBQYXlsb2Fk
T2Zmc2V0ID0gNAorZWxzZQorICAgIGNvbnN0IFRhZ09mZnNldCA9IDQKKyAgICBjb25zdCBQYXls
b2FkT2Zmc2V0ID0gMAorZW5kCisKKyMgVmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgor
Y29uc3QgSW50MzJUYWcgPSAtMQorY29uc3QgQm9vbGVhblRhZyA9IC0yCitjb25zdCBOdWxsVGFn
ID0gLTMKK2NvbnN0IFVuZGVmaW5lZFRhZyA9IC00Citjb25zdCBDZWxsVGFnID0gLTUKK2NvbnN0
IEVtcHR5VmFsdWVUYWcgPSAtNgorY29uc3QgRGVsZXRlZFZhbHVlVGFnID0gLTcKK2NvbnN0IExv
d2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRhZworCisjIFR5cGUgY29uc3RhbnRzLgorY29uc3QgU3Ry
aW5nVHlwZSA9IDUKK2NvbnN0IE9iamVjdFR5cGUgPSAxMAorCisjIFR5cGUgZmxhZ3MgY29uc3Rh
bnRzLgorY29uc3QgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDEKK2NvbnN0IEltcGxlbWVudHNI
YXNJbnN0YW5jZSA9IDIKK2NvbnN0IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSA4CisK
KyMgSGVhcCBhbGxvY2F0aW9uIGNvbnN0YW50cy4KK2NvbnN0IEpTRmluYWxPYmplY3RTaXplQ2xh
c3NJbmRleCA9IDEKKworIyBCeXRlY29kZSBvcGVyYW5kIGNvbnN0YW50cy4KK2NvbnN0IEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMAorCisjIENvZGUgdHlwZSBjb25zdGFu
dHMuCitjb25zdCBHbG9iYWxDb2RlID0gMAorY29uc3QgRXZhbENvZGUgPSAxCitjb25zdCBGdW5j
dGlvbkNvZGUgPSAyCisKKyMgVGhlIGludGVycHJldGVyIHN0ZWFscyB0aGUgdGFnIHdvcmQgb2Yg
dGhlIGFyZ3VtZW50IGNvdW50LgorY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQg
KyBUYWdPZmZzZXQKKworIyBUaGlzIG11c3QgbWF0Y2ggd3RmL1ZlY3Rvci5oLgorY29uc3QgVmVj
dG9yU2l6ZU9mZnNldCA9IDAKK2NvbnN0IFZlY3RvckJ1ZmZlck9mZnNldCA9IDQKKworIyBTdHJp
bmcgZmxhZ3MuCitjb25zdCBIYXNoRmxhZ3M4Qml0QnVmZmVyID0gNjQKKworIyBVdGlsaXRpZXMK
K21hY3JvIGNyYXNoKCkKKyAgICBzdG9yZWkgMCwgMHhiYmFkYmVlZltdCisgICAgbW92ZSAwLCB0
MAorICAgIGNhbGwgdDAKK2VuZAorCittYWNybyBhc3NlcnQoYXNzZXJ0aW9uKQorICAgIGlmIEFT
U0VSVF9FTkFCTEVECisgICAgICAgIGFzc2VydGlvbigub2spCisgICAgICAgIGNyYXNoKCkKKyAg
ICAub2s6CisgICAgZW5kCitlbmQKKworbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJD
YWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBsciwg
ZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2lmIFg4NgorICAgICAgICBwb3AgZGVzdGluYXRp
b25SZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNy
byByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihzb3VyY2VSZWdpc3RlcikKKyAgICBp
ZiBBUk12NworICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgorICAgIGVsc2lmIFg4Ngor
ICAgICAgICBwdXNoIHNvdXJjZVJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAg
IGVuZAorZW5kCisKK21hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCisgICAgYWRkcCBhZHZhbmNlICog
NCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0
KQorICAgIGxvYWRpIHBjT2Zmc2V0LCB0MAorICAgIGxzaGlmdGkgMiwgdDAKKyAgICBhZGRwIHQw
LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoKQorICAg
IGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBqbXAgW1BDXQor
ZW5kCisKK21hY3JvIGNDYWxsMihmdW5jdGlvbiwgYXJnMSwgYXJnMikKKyAgICBpZiBBUk12Nwor
ICAgICAgICBtb3ZlIGFyZzEsIHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICBlbHNpZiBY
ODYKKyAgICAgICAgcG9rZSBhcmcyLCAwCisgICAgICAgIHBva2UgYXJnMSwgMQorICAgIGVsc2UK
KyAgICAgICAgZXJyb3IKKyAgICBlbmQKKyAgICBjYWxsIGZ1bmN0aW9uCitlbmQKKworbWFjcm8g
Y2FsbEhlbHBlcihoZWxwZXIpCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3Zl
IHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKK21hY3JvIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKF9sbGludF90cmFj
ZSkKKyAgICBlbmQKK2VuZAorCisjIENhbGwgYSBoZWxwZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21h
Y3JvIGNhbGxDYWxsSGVscGVyKGFkdmFuY2UsIGhlbHBlciwgYWN0aW9uKQorICAgIGFkZHAgYWR2
YW5jZSAqIDQsIFBDLCB0MAorICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNl
dFtjZnJdCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQxLCBjZnIKKyAg
ICBhY3Rpb24odDApCitlbmQKKworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBl
cikKKyAgICBjYWxsQ2FsbEhlbHBlcigKKyAgICAgICAgYWR2YW5jZSwKKyAgICAgICAgaGVscGVy
LAorICAgICAgICBtYWNybyAoY2FsbGVlKQorICAgICAgICAgICAgY2FsbCBjYWxsZWUKKyAgICAg
ICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNo
ZWNrU3dpdGNoVG9KSVQoaW5jcmVtZW50LCBhY3Rpb24pCisgICAgaWYgSklUX0VOQUJMRUQKKyAg
ICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgICAgIGJhZGRpcyBpbmNyZW1lbnQs
IENvZGVCbG9jazo6bV9leGVjdXRlQ291bnRlclt0MF0sIC5kb25lCisgICAgICAgIGFjdGlvbigp
CisgICAgLmRvbmU6CisgICAgZW5kCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvclBy
b2xvZ3VlKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICA1LAorICAgICAgICBtYWNy
byAoKQorICAgICAgICAgICAgY0NhbGwyKF9sbGludF9lbnRyeV9vc3IsIGNmciwgUEMpCisgICAg
ICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgICAgIGptcCB0MAorICAgICAgICBlbmQpCitl
bmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGNoZWNrU3dpdGNoVG9K
SVQoCisgICAgICAgIDEsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBjQ2FsbDIoX2xs
aW50X2xvb3Bfb3NyLCBjZnIsIFBDKQorICAgICAgICAgICAgbW92ZSB0MSwgY2ZyCisgICAgICAg
ICAgICBqbXAgdDAKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRG
b3JFcGlsb2d1ZSgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMTAsCisgICAgICAg
IG1hY3JvICgpCisgICAgICAgICAgICBjYWxsSGVscGVyKF9sbGludF9yZXBsYWNlKQorICAgICAg
ICBlbmQpCitlbmQKKworbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoaW5kZXgpCisgICAgYXNzZXJ0
KG1hY3JvIChvaykgYmliIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgb2sgZW5k
KQorZW5kCisKKyMgSW5kZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVn
aXN0ZXJzLiBJbmRleCBpcyBub3QKKyMgY2hhbmdlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWFlcSBpbmRleCwgRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4
LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9h
ZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBw
YXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9y
QnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBl
dmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZh
bHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9hZHAgVGFnT2Zm
c2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXls
b2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxv
YWQgbWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWFlcSBpbmRleCwgRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4
LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9h
ZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
YWcKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZm
ZXJPZmZzZXRbcGF5bG9hZF0sIHRhZworICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJl
OiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxzaGlmdGkgMywgaW5kZXgKKyAg
ICBhZGRwIGluZGV4LCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQK
KyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnCisuZG9uZToKK2VuZAorCittYWNybyBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNs
b3cpCisgICAgYmlhZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3Rh
bnQKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIGV4cGVjdGVkVGFnLCBzbG93
CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGpt
cCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zm
c2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6
IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgYmluZXEgVGFnT2Zmc2V0W3BheWxv
YWQsIGluZGV4LCA4XSwgZXhwZWN0ZWRUYWcsIHNsb3cKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0
W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworbWFjcm8gd3JpdGVC
YXJyaWVyKHRhZywgcGF5bG9hZCkKKyAgICAjIE5vdGhpbmcgdG8gZG8gc2luY2Ugd2UgZG9uJ3Qg
aGF2ZSBhIGdlbmVyYXRpb25hbCBvciBpbmNyZW1lbnRhbCBjb2xsZWN0b3IuCitlbmQKKworIyBF
bnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlcgorCisjIERvIHRoZSBiYXJlIG1pbmltdW0g
cmVxdWlyZWQgdG8gZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENvZGVC
bG9jayoKKyMgaW4gdDEKK21hY3JvIHByb2xvZ3VlKG9mZnNldE9mQ29kZUJsb2NrKQorICAgIHBy
ZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1cCB0aGUg
Y2FsbCBmcmFtZS4KKyAgICBzdG9yZXAgdDIsIFJldHVyblBDW2Nmcl0KKyAgICBsb2FkcCBDYWxs
ZWVbY2ZyXSwgdDEKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MQor
ICAgIGxvYWRwIG9mZnNldE9mQ29kZUJsb2NrW3QxXSwgdDEKKyAgICBzdG9yZXAgdDEsIENvZGVC
bG9ja1tjZnJdCisgICAgCisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVCbG9j
azo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIFZlY3RvckJ1ZmZlck9mZnNldFt0
MF0sIFBDCitlbmQKKworbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbigpCisgICAgIyBQcm9m
aWxlIHRoZSBhcmd1bWVudHMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hvaWNlIGJ1dCB0
byBkbyB0aGlzLgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgdDAK
KyAgICBidGl6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9uZQorICAgIGxzaGlmdGkgMywgdDAKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3QxXSwgdDMKKy5hcmd1bWVudFByb2ZpbGVMb29wOgorICAgIGxvYWRpIFRhZ09mZnNl
dFtjZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsg
VGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MF0sIHQyCisgICAg
c3RvcmVpIHQyLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbdDNdCisg
ICAgYWRkcCBzaXplb2YgVmFsdWVQcm9maWxlLCB0MworICAgIGJzdWJpbnogOCwgdDAsIC5hcmd1
bWVudFByb2ZpbGVMb29wCisuYXJndW1lbnRQcm9maWxlRG9uZToKKyAgICAKKyAgICAjIENoZWNr
IHN0YWNrIGhlaWdodC4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVnaXN0ZXJz
W3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQyCisgICAg
bG9hZHAgSlNHbG9iYWxEYXRhOjppbnRlcnByZXRlclt0Ml0sIHQyCisgICAgbHNoaWZ0aSAzLCB0
MAorICAgIGFkZHAgdDAsIGNmciwgdDAKKyAgICBicGFlcSBJbnRlcnByZXRlcjo6bV9yZWdpc3Rl
ckZpbGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCisKKyAg
ICAjIFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBoZWxwZXIuCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVjaykKKy5zdGFja0hlaWdodE9L
OgorZW5kCisKK21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIGhlbHBlcikKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGJpZXEg
dDAsIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCisgICAgY2FsbEhl
bHBlcihoZWxwZXIpCisgICAgam1wIGRvbmVMYWJlbAorZW5kCisKK19sbGludF9wcm9ncmFtX3By
b2xvZ3VlOgorICAgIHByb2xvZ3VlKFByb2dyYW1FeGVjdXRhYmxlOjptX3Byb2dyYW1Db2RlQmxv
Y2spCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xvZ3VlKCkKKyAgICBkaXNwYXRjaCgwKQor
CisKK19sbGludF9ldmFsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKEV2YWxFeGVjdXRhYmxlOjpt
X2V2YWxDb2RlQmxvY2spCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xvZ3VlKCkKKyAgICBk
aXNwYXRjaCgwKQorCisKK19sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZToKKyAgICBw
cm9sb2d1ZShGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbCkKKy5mdW5jdGlv
bkZvckNhbGxCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKCkKKyAgICBjaGVja1N3
aXRjaFRvSklURm9yUHJvbG9ndWUoKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpCisuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RC
ZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklU
Rm9yUHJvbG9ndWUoKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShGdW5jdGlvbkV4ZWN1dGFibGU6Om1f
Y29kZUJsb2NrRm9yQ2FsbCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ2Fs
bEJlZ2luLCBfbGxpbnRfaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKKworCitfbGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShGdW5jdGlvbkV4ZWN1
dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0
aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9sbGludF9oZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2sp
CisKKyMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25zCisKK19sbGludF9vcF9lbnRlcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9h
ZGkgQ29kZUJsb2NrOjptX251bVZhcnMsIHQyCisgICAgYnRpeiB0MiwgLm9wRW50ZXJEb25lCisg
ICAgbW92ZSBVbmRlZmluZWRUYWcsIHQwCisgICAgbW92ZSAwLCB0MQorLm9wRW50ZXJMb29wOgor
ICAgIHN1YmkgMSwgdDIKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAg
IHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGJ0aW56IHQyLCAub3BF
bnRlckxvb3AKKy5vcEVudGVyRG9uZToKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9j
cmVhdGVfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BD
cmVhdGVBY3RpdmF0aW9uRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVf
YWN0aXZhdGlvbikKKy5vcENyZWF0ZUFjdGl2YXRpb25Eb25lOgorICAgIGRpc3BhdGNoKDIpCisK
KworX2xsaW50X29wX2luaXRfbGF6eV9yZWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBzdG9yZWkgMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3Bh
dGNoKDIpCisKKworX2xsaW50X29wX2NyZWF0ZV9hcmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQXJndW1lbnRzRG9uZQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQorLm9wQ3JlYXRlQXJndW1lbnRzRG9uZToK
KyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xh
c3NJbmRleCwgY2xhc3NJbmZvT2Zmc2V0LCBvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSwgc3RydWN0
dXJlLCByZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2xvd0Nhc2UpCisgICAgY29uc3Qgb2Zm
c2V0T2ZNeVNpemVDbGFzcyA9IEpTR2xvYmFsRGF0YTo6aGVhcCArIEhlYXA6Om1fb2JqZWN0U3Bh
Y2UgKyBBbGxvY2F0aW9uU3BhY2U6Om1fbWFya2VkU3BhY2UgKyBNYXJrZWRTcGFjZTo6bV9wcmVj
aXNlU2l6ZUNsYXNzZXMgKyBzaXplQ2xhc3NJbmRleCAqIHNpemVvZiBNYXJrZWRTcGFjZTo6U2l6
ZUNsYXNzCisgICAgCisgICAgIyBGSVhNRTogd2UgY2FuIGdldCB0aGUgZ2xvYmFsIGRhdGEgaW4g
b25lIGxvYWQgZnJvbSB0aGUgc3RhY2suCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0
Y2gxCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbc2NyYXRjaDFdLCBzY3JhdGNo
MQorICAgIAorICAgICMgR2V0IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LiAgICAKKyAg
ICBsb2FkcCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmly
c3RGcmVlQ2VsbFtzY3JhdGNoMV0sIHJlc3VsdAorICAgIGJ0cHogcmVzdWx0LCBzbG93Q2FzZQor
ICAgIAorICAgICMgUmVtb3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LgorICAgIGxv
YWRwIFtyZXN1bHRdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNoMSwgb2Zmc2V0T2ZNeVNp
emVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFd
CisKKyAgICAjIEluaXRpYWxpemUgdGhlIG9iamVjdC4KKyAgICBsb2FkcCBjbGFzc0luZm9PZmZz
ZXRbc2NyYXRjaDFdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3VsdF0KKyAg
ICBzdG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0KKyAgICBzdG9y
ZXAgMCwgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0XQorICAgIGFkZHAgc2l6ZW9mIEpT
T2JqZWN0LCByZXN1bHQsIHNjcmF0Y2gxCisgICAgc3RvcmVwIHNjcmF0Y2gxLCBvZmZzZXRPZlBy
b3BlcnR5U3RvcmFnZVtyZXN1bHRdCitlbmQKKworX2xsaW50X29wX2NyZWF0ZV90aGlzOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBhc3NlcnROb3RDb25z
dGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENy
ZWF0ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYmIgU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5vcENyZWF0ZVRo
aXNTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbdDBdLCB0MgorICAgIGJ0
cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmlu
YWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJ
bmZvLCBKU0ZpbmFsT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZSwgdDIsIHQwLCB0MSwgdDMsIC5v
cENyZWF0ZVRoaXNTbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BDcmVhdGVUaGlzU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX3RoaXMpCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfZ2V0X2NhbGxlZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldCArIENhbGxlZVtjZnJdLCB0MQorICAgIHN0
b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jb252
ZXJ0X3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ29udmVydFRoaXNTbG93
CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsg
VHlwZUluZm86Om1fdHlwZVt0MF0sIE9iamVjdFR5cGUsIC5vcENvbnZlcnRUaGlzU2xvdworICAg
IGRpc3BhdGNoKDIpCisKKy5vcENvbnZlcnRUaGlzU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfY29udmVydF90aGlzKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX25l
d19vYmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxv
YWRwIEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0dXJlW3QwXSwgdDEKKyAgICBh
bGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2Jh
bERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIEpTRmluYWxPYmplY3Q6Om1fcHJvcGVydHlT
dG9yYWdlLCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9w
TmV3T2JqZWN0U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkK
KyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheV9idWZmZXIpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdleHApCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQxLCB0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0K
KyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9ub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhb
UENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQor
ICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MworICAgIGJpbmVxIHQyLCBCb29sZWFuVGFnLCAub3BOb3RTbG93
CisgICAgeG9yaSAxLCB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykK
KworLm9wTm90U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbm90KQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRp
IFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MAorICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2Vs
bFRhZywgLm9wRXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxv
YWRpIDRbUENdLCB0MgorICAgIGNpZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BFcVNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2VxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2VxX251bGw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRb
UENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAor
ICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BFcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBq
bXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlCisub3BFcU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0
MSwgTnVsbFRhZywgdDIKKyAgICBjaWVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQy
LCB0MQorLm9wRXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Mywg
OF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDAp
CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93CisgICAg
YmllcSB0MiwgQ2VsbFRhZywgLm9wTmVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BO
ZXFTbG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2luZXEgdDAsIHQxLCB0MAorICAgIHN0
b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BOZXFTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXEpCisgICAgZGlzcGF0Y2goNCkKKyAgICAK
KworX2xsaW50X29wX25lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkK
KyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbElt
bWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRieiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKKy5vcE5lcU51
bGxJbW1lZGlhdGU6CisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2luZXEgdDEsIFVu
ZGVmaW5lZFRhZywgdDEKKyAgICBhbmRpIHQyLCB0MQorLm9wTmVxTnVsbE5vdEltbWVkaWF0ZToK
KyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVp
IHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCittYWNy
byBzdHJpY3RFcShlcXVhbGl0eU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwg
dDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MywgdDEpCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisg
ICAgYmluZXEgdDIsIHQzLCAub3BTdHJpY3RlcVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywg
LnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmluZworICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFd
LCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cKKy5ub3RTdHJpbmc6
CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkK
KyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6
CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRf
b3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChs
ZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRf
aGVscGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9zdHJpY3RuZXE6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBs
ZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9zdHJpY3RuZXEpCisKKworX2xs
aW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xlc3NlcToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3NlcSkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcikKKyAgICBkaXNwYXRj
aCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEpCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJl
SW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYmFk
ZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5jU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9v
cF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVEZWNTbG93Cisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBic3ViaW8gMSwgdDEs
IC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0K
KyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Bvc3RfaW5j
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0
W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQ
b3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBiYWRkaW8g
MSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBz
dG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNEb25lOgorICAg
IGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9wb3N0X2RlYzoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQ
Q10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9z
dERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYnN1YmlvIDEs
IHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0RGVjRG9uZToKKyAgICBk
aXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdG9fanNudW1iZXI6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRb
UENdLCB0MQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0Mwor
ICAgIGJpZXEgdDIsIEludDMyVGFnLCAub3BUb0pzbnVtYmVySXNJbnQKKyAgICBiaWFlcSB0Miwg
RW1wdHlWYWx1ZVRhZywgLm9wVG9Kc251bWJlclNsb3cKKy5vcFRvSnNudW1iZXJJc0ludDoKKyAg
ICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvSnNudW1iZXJTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19qc251bWJlcikKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9uZWdhdGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50
KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVn
YXRlU3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdworICAg
IG5lZ2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisu
b3BOZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cK
KyAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0
MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNw
YXRjaCgzKQorCisub3BOZWdhdGVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9u
ZWdhdGUpCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKGlu
dGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9h
ZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDIsIHQzLCB0MSkKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XSwgdDAKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0
MywgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBpbnRlZ2Vy
T3BlcmF0aW9uQW5kU3RvcmUodDMsIHQxLCB0MCwgLnNsb3csIHQyKQorICAgIGRpc3BhdGNoKDQp
CisKKy5vcDFOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90IGFu
IGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGNvdWxkIGJlIGFueXRoaW5nLgorICAgIGJpYSB0Miwg
TG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MywgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91
YmxlCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDEsIGZ0MQorICAg
IGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDEs
IHQzLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBmaWky
ZCB0MCwgdDIsIGZ0MAorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQg
ZnQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3AyTm90SW50OgorICAgICMg
Rmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGlz
IGRlZmluaXRlbHkgbm90LgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGJpYSB0MywgTG93ZXN0
VGFnLCAuc2xvdworICAgIGNpMmQgdDAsIGZ0MAorICAgIGZpaTJkIHQxLCB0MywgZnQxCisgICAg
ZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDEsIFtjZnIsIHQyLCA4XQor
ICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRp
c3BhdGNoKDQpCitlbmQKKworbWFjcm8gYmluYXJ5T3AoaW50ZWdlck9wZXJhdGlvbiwgZG91Ymxl
T3BlcmF0aW9uLCBoZWxwZXIpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFj
cm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBpbnRl
Z2VyT3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgc3RvcmVpIGludDMy
VGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwg
UGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIGRvdWJs
ZU9wZXJhdGlvbiwgaGVscGVyKQorZW5kCisKK19sbGludF9vcF9hZGQ6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cp
IGJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCkgYWRkZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYWRkKQorCisK
K19sbGludF9vcF9tdWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJtdWxpbyBsZWZ0LCByaWdodCwgc2xvdyBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfbXVsKQorCisKK19sbGludF9vcF9zdWI6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3cpIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfc3ViKQor
CisKK19sbGludF9vcF9kaXY6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3Vz
dG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGlu
ZGV4KQorICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQgcmlnaHQs
IGZ0MQorICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkgZnQxLCBy
aWdodCwgLm5vdEludAorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2Zy
LCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIs
IGluZGV4LCA4XQorICAgICAgICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6CisgICAg
ICAgICAgICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6CisgICAg
ICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVu
ZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9kaXYpCisKKworX2xsaW50X29wX21vZDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkKKyAgICBk
aXNwYXRjaCg0KQorCisKK21hY3JvIGJpdE9wKG9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRp
IDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQyLCB0MywgdDEpCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQwCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBJbnQz
MlRhZywgLnNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBvcGVyYXRpb24odDEsIHQwLCAu
c2xvdykKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93Ogor
ICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50X29w
X2xzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9s
bGludF9oZWxwZXJfbHNoaWZ0KQorCisKK19sbGludF9vcF9yc2hpZnQ6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHJz
aGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3JzaGlmdCkKKwor
CitfbGxpbnRfb3BfdXJzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHVyc2hpZnRpIGxl
ZnQsIHJpZ2h0CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAgIGVuZCwK
KyAgICAgICAgX2xsaW50X2hlbHBlcl91cnNoaWZ0KQorCisKK19sbGludF9vcF9iaXRhbmQ6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHNsb3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2Jp
dGFuZCkKKworCitfbGxpbnRfb3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBi
aXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQsIHJpZ2h0
IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXR4b3IpCisKKworX2xsaW50X29wX2JpdG9y
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVy
X2JpdG9yKQorCisKK19sbGludF9vcF9iaXRub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0
YW50KHQxKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9w
Qml0bm90U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQw
LCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3Bh
dGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Jp
dG5vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFzc2VydE5v
dENvbnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywg
Lm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0Ynog
U3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRz
SGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgZGlzcGF0Y2goMikKKwor
Lm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2No
ZWNrX2hhc19pbnN0YW5jZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbnN0YW5j
ZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIENoZWNrIHRoYXQgYmFzZVZhbCBpbXBs
ZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9yLgorICAgICMgRklYTUU6IFRo
aXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGFzc2Vy
dE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1
cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0
SGFzSW5zdGFuY2UsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgCisgICAgIyBBY3R1YWxseSBkbyB0
aGUgd29yay4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAg
bG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYXNzZXJ0Tm90
Q29uc3RhbnQodDEpCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAu
b3BJbnN0YW5jZW9mU2xvdworICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgQ2VsbFRh
ZywgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhd
LCB0MQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGJiYiBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9w
SW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0Mgor
ICAgIAorICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCisg
ICAgbW92ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxvb3A6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0Ml0sIHQyCisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxv
YWRPZmZzZXQsIHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRp
bnogdDIsIC5vcEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9m
RG9uZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
c3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKwor
Lm9wSW5zdGFuY2VvZlNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luc3RhbmNl
b2YpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9pc19udW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9pc19udW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfaXNfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lz
X29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2lzX29iamVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19mdW5jdGlv
bjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lz
X2Z1bmN0aW9uKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2luOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfcmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9za2lwKQorICAgIGRpc3BhdGNoKDMpCisKKworbWFj
cm8gcmVzb2x2ZUdsb2JhbChzbG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6Cisg
ICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgUHJv
cGVydHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAjIDEyW1BDXSAg
U3RydWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9y
LgorICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8g
MCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnBuZXEgdDAsIDEyW1BDXSwgc2xvdworICAg
IGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2Vb
dDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9y
ZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQorZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgcmVzb2x2ZUdsb2JhbCgub3BSZXNvbHZlR2xvYmFsU2xvdykKKyAg
ICBkaXNwYXRjaCg1KQorCisub3BSZXNvbHZlR2xvYmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCisgICAgZGlzcGF0Y2goNSkKKworCisjIEdpdmVz
IHlvdSB0aGUgc2NvcGUgaW4gdDAsIHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25hbGx5IHBl
cmZvcm0gYWRkaXRpb25hbCBjaGVja3Mgb24gdGhlCisjIHNjb3BlcyBhcyB0aGV5IGFyZSB0cmF2
ZXJzZWQuIHNjb3BlQ2hlY2soKSBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgcmVn
aXN0ZXIKKyMgaG9sZGluZyB0aGUgc2NvcGUsIGFuZCBhIHJlZ2lzdGVyIHRoYXQgY2FuIGJlIHVz
ZWQgZm9yIHNjcmF0Y2guIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90CisjIHVzZSB0Mywgc28geW91
IGNhbiBob2xkIHN0dWZmIGluIHQzIGlmIG5lZWQgYmUuCittYWNybyBnZXRTY29wZShkZUJydWlq
aW5JbmRleE9wZXJhbmQsIHNjb3BlQ2hlY2spCisgICAgbG9hZHAgU2NvcGVDaGFpbiArIFBheWxv
YWRPZmZzZXRbY2ZyXSwgdDAKKyAgICBsb2FkaSBkZUJydWlqaW5JbmRleE9wZXJhbmQsIHQyCisg
ICAgCisgICAgYnRpeiB0MiwgLmRvbmUKKyAgICAKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDEKKyAgICBiaW5lcSBDb2RlQmxvY2s6Om1fY29kZVR5cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5s
b29wCisgICAgYnRieiBDb2RlQmxvY2s6Om1fbmVlZHNGdWxsU2NvcGVDaGFpblt0MV0sIC5sb29w
CisgICAgCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX2FjdGl2YXRpb25SZWdpc3Rlclt0MV0sIHQx
CisKKyAgICAjIE5lZWQgdG8gY29uZGl0aW9uYWxseSBza2lwIG92ZXIgb25lIHNjb3BlLgorICAg
IGJpZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAubm9BY3RpdmF0aW9u
CisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRb
dDBdLCB0MAorLm5vQWN0aXZhdGlvbjoKKyAgICBzdWJpIDEsIHQyCisgICAgCisgICAgYnRpeiB0
MiwgLmRvbmUKKy5sb29wOgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3Bl
Q2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKyAgICBzdWJpIDEsIHQyCisgICAgYnRpbnogdDIsIC5v
cEdldFNjb3BlZFZhckxvb3AKKworLmRvbmU6CitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJh
bWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0aXZhdGlv
blN0cnVjdHVyZVt0M10sIHQzCisgICAgZ2V0U2NvcGUoCisgICAgICAgIDIwW1BDXSwKKyAgICAg
ICAgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKQorICAgICAgICAgICAgbG9hZHAgU2NvcGVDaGFpbk5v
ZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdwor
ICAgICAgICBlbmQpCisgICAgcmVzb2x2ZUdsb2JhbCgub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Ns
b3cpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goNikK
KworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNwYXRjaCg2KQorCisKK19sbGludF9vcF9nZXRf
c2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBPcGVyYW5kcyBhcmUgYXMg
Zm9sbG93czoKKyAgICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgorICAgICMg
OFtQQ10gICBJbmRleCBvZiByZWdpc3RlciBpbiB0aGUgc2NvcGUuCisgICAgIyAxMltQQ10gIERl
IEJydWlqaW4gaW5kZXguCisgICAgZ2V0U2NvcGUoMTJbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0
Y2gpIGVuZCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBs
b2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxl
T2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0Miwg
OF0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdLCB0MAorICAgIHN0b3Jl
aSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X3Njb3BlZF92
YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGdldFNjb3BlKDhbUENdLCBtYWNybyAoc2Nv
cGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10s
IHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDMsIHQyKQorICAgIHdyaXRlQmFy
cmllcih0MywgdDIpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisg
ICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIHN0b3Jl
aSB0MywgVGFnT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
dDAsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFy
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0
W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9y
ZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDEKKyAgICBzdG9yZWkgdDIsIFRhZ09m
ZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4
XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDMK
KyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xv
YmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNb
dDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQzLCA4XSwgdDIKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MworICAgIHdyaXRlQmFycmllcih0MiwgdDMpCisg
ICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2
ZV9iYXNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcmVzb2x2ZV9iYXNlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2Vuc3VyZV9w
cm9wZXJ0eV9leGlzdHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX3Jlc29sdmVfd2l0aF9iYXNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93
LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKKyAgICAjIG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIs
IGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hhbmdlIGFueXRpbWUgaWYgZmFpbHMsIHNpbmNlCisg
ICAgIyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4gQXQgYmVzdCB3ZSBnZXQgbHVja3kgYW5kIHRoZSBn
ZXRfYnlfaWQgd2lsbCBjb250aW51ZQorICAgICMgdG8gdGFrZSBmYXN0IHBhdGggb24gdGhlIG5l
dyBjYWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBzbG93IHBhdGgsIHdoaWNoIGlzIHdoYXQKKyAgICAj
IHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQw
LCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAg
IGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0M10sIHQwCisgICAgYnBuZXEgSlND
ZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdworICAgIGxvYWRpIDRbUENd
LCB0MQorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDJdLCB0MworICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbdDAsIHQyXSwgdDIKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQor
ICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDgp
CisKKy5vcEdldEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlf
aWQpCisgICAgZGlzcGF0Y2goOCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRC
eUlkU2xvdykKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxv
YWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBd
LCB0MworICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNs
b3cKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDIsIDhd
LCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAgd3JpdGVC
YXJyaWVyKHQwLCB0MikKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDFdCisgICAgc3Rv
cmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBkaXNwYXRjaCg4KQorCisKK21hY3Jv
IHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5zbG93KQorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAg
IGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLnNsb3cKKyAgICBhZGRpdGlvbmFs
Q2hlY2tzKHQxLCB0MywgLnNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRwIEpT
T2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYWRkcCB0MSwgdDMKKyAgICBs
b2FkaSBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQyLCA4XSwgdDIKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQyKQorICAgIHN0b3JlaSB0MSwg
VGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIDI0W1BDXSwgdDEKKyAgICBzdG9yZWkgdDIsIFBheWxv
YWRPZmZzZXRbdDNdCisgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAg
IGRpc3BhdGNoKDgpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRf
YnlfaWQpCisgICAgZGlzcGF0Y2goOCkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0OgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUs
IHNjcmF0Y2gsIHNsb3cpIGVuZCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAorICAgICAgICBtYWNybyAob2xkU3RydWN0
dXJlLCBzY3JhdGNoLCBzbG93KQorICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3Ry
dWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90
bworICAgICAgICAKKyAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAorICAgICAgICAg
ICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3Nj
cmF0Y2hdLCBzY3JhdGNoCisgICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUg
KyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAgICAgICAgLmxvb3A6
CisgICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNl
dFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgICAgICAgICBicG5lcSBvbGRT
dHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdworICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCisg
ICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0
cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQpCisK
KworX2xsaW50X29wX2RlbF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9nZXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQQ10sIHQzCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQorICAg
IGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MV0sIHQyCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93
KQorICAgIGJwbmVxIFt0MF0sIHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5
OjptX3N0b3JhZ2VbdDBdLCB0MworICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0
aFt0MF0sIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIEFy
cmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAgICBsb2Fk
aSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQor
ICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAgIHN0b3JlaSB0
MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QnlWYWxTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaWVxIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgSW50MzJUYWcsIHQyLCAub3BHZXRBcmd1
bWVudEJ5VmFsU2xvdykKKyAgICBhZGRpIDEsIHQyCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCAr
IFBheWxvYWRPZmZzZXRbY2ZyXSwgdDEKKyAgICBiaWFlcSB0MiwgdDEsIC5vcEdldEFyZ3VtZW50
QnlWYWxTbG93CisgICAgbmVnaSB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIFRh
Z09mZnNldFtjZnIsIHQyLCA4XSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIs
IDhdLCB0MQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVp
IHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0
QXJndW1lbnRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9hcmd1
bWVudF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5X3BuYW1l
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQwCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BHZXRCeVBuYW1lU2xv
dykKKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgYnBuZXEgdDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BHZXRCeVBuYW1l
U2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQwCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDAKKyAgICBi
cG5lcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDNdLCAu
b3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDI0W1BDXSwgdDAKKyAgICBsb2FkaSBbY2ZyLCB0
MCwgOF0sIHQwCisgICAgc3ViaSAxLCB0MAorICAgIGJpYWVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBs
b2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDJdLCB0MgorICAgIGxvYWRpIFRhZ09m
ZnNldFt0MiwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDIsIHQwLCA4XSwg
dDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQw
LCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3Bh
dGNoKDcpCisKKy5vcEdldEJ5UG5hbWVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9nZXRfYnlfcG5hbWUpCisgICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfcHV0X2J5X3Zh
bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZhbFNsb3cp
CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDAsIEludDMyVGFnLCB0MiwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QwXSwgdDAKKyAgICBs
b2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDBdLCB0MAorICAgIGJwbmVxIFt0
MV0sIHQwLCAub3BQdXRCeVZhbFNsb3cKKyAgICBiaWFlcSB0MiwgSlNBcnJheTo6bV92ZWN0b3JM
ZW5ndGhbdDFdLCAub3BQdXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0b3JhZ2Vb
dDFdLCB0MAorICAgIGJpZXEgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwg
dDIsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BQdXRCeVZhbEVtcHR5Cisub3BQdXRCeVZhbFN0b3Jl
UmVzdWx0OgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MykK
KyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MywgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQzLCA4XSwgdDMKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQzKQorICAgIHN0b3Jl
aSB0MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdCisgICAg
c3RvcmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MCwgdDIs
IDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wUHV0QnlWYWxFbXB0eToKKyAgICBhZGRpIDEsIEFy
cmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KKyAgICBiaWIgdDIsIEFycmF5U3Rv
cmFnZTo6bV9sZW5ndGhbdDBdLCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0
MiwgdDEKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdCisgICAgam1w
IC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQKKworLm9wUHV0QnlWYWxTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX2RlbF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9kZWxfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1
dF9ieV9pbmRleDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3B1dF9ieV9pbmRleCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRf
Z2V0dGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcHV0X2dldHRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfc2V0dGVy
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0
X3NldHRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9sb29wOgorICAgIG5vcAor
X2xsaW50X29wX2ptcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0Y2hCcmFuY2go
NFtQQ10pCisKKworbWFjcm8ganVtcFRydWVPckZhbHNlKGNvbmRpdGlvbk9wLCBzbG93KQorICAg
IGxvYWRpIDRbUENdLCB0MAorICAgIGJpYiBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEJvb2xlYW5U
YWcsIC5zbG93CisgICAgY29uZGl0aW9uT3AoUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgLnRh
cmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhb
UENdKQorCisuc2xvdzoKKyAgICBzdWJpIDMgKiA0LCBQQworICAgIGNhbGxIZWxwZXIoc2xvdykK
KyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX3RydWU6CisgICAgbm9w
CitfbGxpbnRfb3BfanRydWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JG
YWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aW56IHZhbHVlLCB0YXJnZXQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2p0cnVlKQorCisKK19sbGludF9vcF9sb29wX2lm
X2ZhbHNlOgorICAgIG5vcAorX2xsaW50X29wX2pmYWxzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAganVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRp
eiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZmFsc2UpCisKKwor
bWFjcm8gZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYW5kbGVyKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
aW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgY2Vs
bEhhbmRsZXIoU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAu
dGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2go
OFtQQ10pCisKKy5pbW1lZGlhdGU6CisgICAgb3JpIDEsIHQxCisgICAgaW1tZWRpYXRlSGFuZGxl
cih0MSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorZW5kCisKK19sbGludF9vcF9qZXFfbnVs
bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAo
dmFsdWUsIHRhcmdldCkgYnRibnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdl
dCBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaWVxIHZhbHVlLCBOdWxsVGFn
LCB0YXJnZXQgZW5kKQorICAgIAorCitfbGxpbnRfb3Bfam5lcV9udWxsOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBi
dGJ6IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBt
YWNybyAodmFsdWUsIHRhcmdldCkgYmluZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisK
KworX2xsaW50X29wX2puZXFfcHRyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIENlbGxUYWcsIC5vcEpuZXFQdHJCcmFuY2gKKyAgICBicGVxIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQxLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKKy5vcEpuZXFQdHJCcmFuY2g6
CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorLm9wSm5lcVB0ckZhbGxUaHJvZ3VoOgorICAg
IGRpc3BhdGNoKDQpCisKKworbWFjcm8gY29tcGFyZShpbnRlZ2VyQ29tcGFyZSwgZG91YmxlQ29t
cGFyZSwgaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0Mwor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZyh0MywgdDIsIHQzKQorICAgIGJpbmVxIHQwLCBJbnQzMlRhZywgLm9wMU5v
dEludAorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGludGVnZXJDb21w
YXJlKHQxLCB0MywgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5vdEludDoK
KyAgICBiaWEgdDAsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9w
MU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJk
IHQzLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgor
ICAgIGZpaTJkIHQzLCB0MiwgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgZmlpMmQgdDEsIHQw
LCBmdDAKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNw
YXRjaCg0KQorCisub3AyTm90SW50OgorICAgIGNpMmQgdDEsIGZ0MAorICAgIGJpYSB0MiwgTG93
ZXN0VGFnLCAuc2xvdworICAgIGZpaTJkIHQzLCB0MiwgZnQxCisgICAgZG91YmxlQ29tcGFyZShm
dDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLmp1bXBUYXJnZXQ6Cisg
ICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBl
cikKKyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX2xlc3M6CisgICAg
bm9wCitfbGxpbnRfb3Bfamxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUo
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdCBsZWZ0
LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzcykKKworCitf
bGxpbnRfb3Bfam5sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxdW4gbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzKQorCisK
K19sbGludF9vcF9sb29wX2lmX2dyZWF0ZXI6CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXI6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcikKKworCitfbGxpbnRfb3Bfam5ncmVhdGVy
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5ncmVhdGVyKQorCisKK19sbGludF9vcF9s
b29wX2lmX2xlc3NlcToKKyAgICBub3AKK19sbGludF9vcF9qbGVzc2VxOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmRsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2psZXNzZXEpCisKKworX2xsaW50X29wX2pubGVzc2VxOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRh
cmdldCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJkZ3R1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9qbmxlc3NlcSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyZXE6
CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBs
ZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJkZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl9qZ3JlYXRlcmVxKQorCisKK19sbGludF9vcF9qbmdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgdGFyZ2V0KSBiZGx0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfam5ncmVhdGVyZXEpCisKKworX2xsaW50X29wX2xvb3BfaGludDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGRpc3BhdGNo
KDEpCisKKworX2xsaW50X29wX3N3aXRjaF9pbW06CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2Fk
aSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJh
cmVEYXRhOjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRb
dDIsIHQzLCA0XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAor
ICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wU3dpdGNoSW1tTm90SW50CisgICAgc3ViaSBTaW1w
bGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6
YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhy
b3VnaAorICAgIGRpc3BhdGNoQnJhbmNoKFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyAr
IFZlY3RvckJ1ZmZlck9mZnNldFt0MiwgdDAsIDRdKQorCisub3BTd2l0Y2hJbW1Ob3RJbnQ6Cisg
ICAgYmliIHQxLCBMb3dlc3RUYWcsIC5vcFN3aXRjaEltbVNsb3cgICMgR28gdG8gc2xvdyBwYXRo
IGlmIGl0J3MgYSBkb3VibGUuCisub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRj
aEJyYW5jaCg4W1BDXSkKKworLm9wU3dpdGNoSW1tU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfc3dpdGNoX2ltbSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9zd2l0
Y2hfY2hhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRw
IENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fY2hhcmFjdGVyU3dp
dGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MiwgdDMsIDRdLCB0MgorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcs
IC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MQorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5
cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBK
U1N0cmluZzo6bV92YWx1ZVt0MF0sIHQwCisgICAgYmluZXEgU3RyaW5nSW1wbDo6bV9sZW5ndGhb
dDBdLCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTdHJpbmdJbXBsOjpt
X2RhdGE4W3QwXSwgdDEKKyAgICBidGlueiBTdHJpbmdJbXBsOjptX2hhc2hBbmRGbGFnc1t0MF0s
IEhhc2hGbGFnczhCaXRCdWZmZXIsIC5vcFN3aXRjaENoYXI4Qml0CisgICAgbG9hZGggW3QxXSwg
dDAKKyAgICBqbXAgLm9wU3dpdGNoQ2hhclJlYWR5Cisub3BTd2l0Y2hDaGFyOEJpdDoKKyAgICBs
b2FkYiBbdDFdLCB0MAorLm9wU3dpdGNoQ2hhclJlYWR5OgorICAgIHN1YmkgU2ltcGxlSnVtcFRh
YmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9m
ZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisg
ICAgZGlzcGF0Y2hCcmFuY2goU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9y
QnVmZmVyT2Zmc2V0W3QyLCB0MCwgNF0pCisKKy5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAg
ICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9z
dHJpbmcpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmM6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRb
Y2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcE5ld0Z1bmNEb25lCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX25ld19mdW5jKQorLm9wTmV3RnVuY0RvbmU6CisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDMp
CisKKworbWFjcm8gZG9DYWxsKGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2Fk
aSAxNltQQ10sIHQxCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDYWxsU2xvdworICAgIGJpbmVxIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxLCAub3BDYWxsU2xvdworICAgIGxvYWRpIDhbUENdLCB0Mgor
ICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBhZGRwIDI0LCBQQworICAgIGxzaGlmdGkgMywgdDMK
KyAgICBhZGRwIGNmciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBjZnIKKyAg
ICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGxvYWRw
IDIwIC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNl
dFtjZnJdCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QxXSwgdDAKKyAgICBz
dG9yZXAgY2ZyLCBDYWxsZXJGcmFtZVt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsg
VGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSB0MSwgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFt0M10K
KyAgICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10KKyAgICBzdG9y
ZWkgdDAsIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGNhbGwgdDIKKyAgICBk
aXNwYXRjaEFmdGVyQ2FsbCgpCisKKy5vcENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbCg2
LCBoZWxwZXIpCitlbmQKKworX2xsaW50X29wX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGRvQ2FsbChfbGxpbnRfaGVscGVyX2NhbGwpCisKKworX2xsaW50X29wX2NvbnN0cnVjdDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY29uc3RydWN0
KQorCisKK19sbGludF9vcF9jYWxsX3ZhcmFyZ3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IHNsb3dQYXRoRm9yQ2FsbCg2LCBfbGxpbnRfaGVscGVyX2NhbGxfdmFyYXJncykKKworCitfbGxp
bnRfb3BfY2FsbF9ldmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAKKyAgICAjIEV2YWwg
aXMgZXhlY3V0ZWQgaW4gb25lIG9mIHR3byBtb2RlczoKKyAgICAjCisgICAgIyAxKSBXZSBmaW5k
IHRoYXQgd2UncmUgcmVhbGx5IGludm9raW5nIGV2YWwoKSBpbiB3aGljaCBjYXNlIHRoZQorICAg
ICMgICAgZXhlY3V0aW9uIGlzIHBlcmZvbWVkIGVudGlyZWx5IGluc2lkZSB0aGUgaGVscGVyLCBh
bmQgaXQKKyAgICAjICAgIHJldHVybnMgdGhlIFBDIG9mIGEgZnVuY3Rpb24gdGhhdCBqdXN0IHJl
dHVybnMgdGhlIHJldHVybiB2YWx1ZQorICAgICMgICAgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4K
KyAgICAjCisgICAgIyAyKSBXZSBmaW5kIHRoYXQgd2UncmUgaW52b2tpbmcgc29tZXRoaW5nIGNh
bGxlZCBldmFsKCkgdGhhdCBpcyBub3QKKyAgICAjICAgIHRoZSByZWFsIGV2YWwuIFRoZW4gdGhl
IGhlbHBlciByZXR1cm5zIHRoZSBQQyBvZiB0aGUgdGhpbmcgdG8KKyAgICAjICAgIGNhbGwsIGFu
ZCB3ZSBjYWxsIGl0LgorICAgICMKKyAgICAjIFRoaXMgYWxsb3dzIHVzIHRvIGhhbmRsZSB0d28g
Y2FzZXMsIHdoaWNoIHdvdWxkIHJlcXVpcmUgYSB0b3RhbCBvZgorICAgICMgdXAgdG8gZm91ciBw
aWVjZXMgb2Ygc3RhdGUgdGhhdCBjYW5ub3QgYmUgZWFzaWx5IHBhY2tlZCBpbnRvIHR3bworICAg
ICMgcmVnaXN0ZXJzIChDIGZ1bmN0aW9ucyBjYW4gcmV0dXJuIHVwIHRvIHR3byByZWdpc3RlcnMs
IGVhc2lseSk6CisgICAgIworICAgICMgLSBUaGUgY2FsbCBmcmFtZSByZWdpc3Rlci4gVGhpcyBt
YXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4gbW9kaWZpZWQKKyAgICAjICAgYnkgdGhlIGhlbHBlciwg
YnV0IHRoZSBjb252ZW50aW9uIGlzIHRoYXQgaXQgcmV0dXJucyBpdC4gSXQncyBub3QKKyAgICAj
ICAgdG90YWxseSBjbGVhciBpZiB0aGF0J3MgbmVjZXNzYXJ5LCBzaW5jZSB0aGUgY2ZyIGlzIGNh
bGxlZSBzYXZlLgorICAgICMgICBCdXQgdGhhdCdzIG91ciBzdHlsZSBpbiB0aGlzIGhlcmUgaW50
ZXJwcmV0ZXIgc28gd2Ugc3RpY2sgd2l0aCBpdC4KKyAgICAjCisgICAgIyAtIEEgYml0IHRvIHNh
eSBpZiB0aGUgaGVscGVyIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCB0aGUgZXZhbCBhbmQgaGFzCisg
ICAgIyAgIHRoZSByZXR1cm4gdmFsdWUsIG9yIGRpZCBub3QgZXhlY3V0ZSB0aGUgZXZhbCBidXQg
aGFzIGEgUEMgZm9yIHVzCisgICAgIyAgIHRvIGNhbGwuCisgICAgIworICAgICMgLSBFaXRoZXI6
CisgICAgIyAgIC0gVGhlIEpTIHJldHVybiB2YWx1ZSAodHdvIHJlZ2lzdGVycyksIG9yCisgICAg
IworICAgICMgICAtIFRoZSBQQyB0byBjYWxsLgorICAgICMKKyAgICAjIEl0IHR1cm5zIG91dCB0
byBiZSBlYXNpZXIgdG8ganVzdCBhbHdheXMgaGF2ZSB0aGlzIHJldHVybiB0aGUgY2ZyCisgICAg
IyBhbmQgYSBQQyB0byBjYWxsLCBhbmQgdGhhdCBQQyBtYXkgYmUgYSBkdW1teSB0aHVuayB0aGF0
IGp1c3QKKyAgICAjIHJldHVybnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQu
CisgICAgCisgICAgc2xvd1BhdGhGb3JDYWxsKDQsIF9sbGludF9oZWxwZXJfY2FsbF9ldmFsKQor
CisKK19sbGludF9nZW5lcmljX3JldHVybl9wb2ludDoKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgp
CisKKworX2xsaW50X29wX3RlYXJfb2ZmX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25D
cmVhdGVkCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5v
cFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZAorLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVk
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQorLm9w
VGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX3RlYXJfb2ZmX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgc3ViaSAxLCB0MCAgICMgR2V0IHRoZSB1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXIKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywg
Lm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfdGVhcl9vZmZfYXJndW1lbnRzKQorLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQ6Cisg
ICAgZGlzcGF0Y2goMikKKworCittYWNybyBkb1JldHVybigpCisgICAgbG9hZHAgUmV0dXJuUENb
Y2ZyXSwgdDIKKyAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKKyAgICByZXN0b3JlUmV0
dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICByZXQKK2VuZAorCitfbGxpbnRfb3BfcmV0
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUo
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
dDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJu
KCkKKworCitfbGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4
XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNo
KDIpCisKKworX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wUmV0T2Jq
ZWN0T3JUaGlzTm90T2JqZWN0CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQy
CisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBP
YmplY3RUeXBlLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBkb1JldHVybigpCisK
Ky5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdDoKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX21ldGhvZF9jaGVj
azoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNoZWNrcyBh
bmQgdXNlIG5vcm1hbCBnZXRfYnlfaWQgb3B0aW1pemF0aW9ucy4KKyAgICBkaXNwYXRjaCgxKQor
CisKK19sbGludF9vcF9zdHJjYXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9zdHJjYXQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
dG9fcHJpbWl0aXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQx
CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwg
Q2VsbFRhZywgLm9wVG9QcmltaXRpdmVJc0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MgorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjpt
X3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisgICAgc3RvcmVp
IHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb1ByaW1pdGl2ZVNsb3dDYXNlOgor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19wcmltaXRpdmUpCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfZ2V0X3BuYW1lczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9wbmFtZXMpCisgICAgZGlzcGF0Y2goMCkgIyBU
aGUgaGVscGVyIGVpdGhlciBhZHZhbmNlcyB0aGUgUEMgb3IganVtcHMgdXMgdG8gc29tZXdoZXJl
IGVsc2UuCisKKworX2xsaW50X29wX25leHRfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkaSAxNltQQ10sIHQyCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQxLCA4XSwgdDAKKyAgICBiaWVxIHQwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDIsIDhdLCAub3BOZXh0UG5hbWVFbmQKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjptX2pzU3RyaW5nc1t0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgOF0sIHQz
CisgICAgYWRkaSAxLCB0MAorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4
XQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBs
b2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0Mwor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGJwbmVxIHQxLCBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIC5vcE5leHRQbmFtZVNs
b3cKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFByb3RvdHlwZUNo
YWluW3QyXSwgdDAKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDBdLCB0MAor
ICAgIGJ0cHogW3QwXSwgLm9wTmV4dFBuYW1lVGFyZ2V0Cisub3BOZXh0UG5hbWVDaGVja1Byb3Rv
dHlwZUxvb3A6CisgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W3Qx
XSwgTnVsbFRhZywgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90
b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QxXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QyXSwgdDEKKyAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGFk
ZHAgNCwgdDAKKyAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AK
Ky5vcE5leHRQbmFtZVRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgyNFtQQ10pCisKKy5vcE5l
eHRQbmFtZUVuZDoKKyAgICBkaXNwYXRjaCg3KQorCisub3BOZXh0UG5hbWVTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXh0X3BuYW1lKSAjIFRoaXMgZWl0aGVyIGtlZXBzIHRo
ZSBQQyB3aGVyZSBpdCB3YXMgKGNhdXNpbmcgdXMgdG8gbG9vcCkgb3Igc2V0cyBpdCB0byB0YXJn
ZXQuCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfcHVzaF9zY29wZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfc2NvcGUpCisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9wX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9wX3Njb3BlKQorICAgIGRpc3Bh
dGNoKDEpCisKKworX2xsaW50X29wX3B1c2hfbmV3X3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9uZXdfc2NvcGUpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfY2F0Y2g6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
ICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGlu
ZSAoYmVjYXVzZSB0aGUKKyAgICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJl
IHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVy
J3MgdGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAj
IFRoZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAu
IFRoZSB0aHJvd2luZworICAgICMgY29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRo
cm93aW5nIHRvIHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERh
dGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBs
b2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2Jh
bERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNH
bG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBK
U0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAs
IEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkg
RW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdCisg
ICAgbG9hZGkgNFtQQ10sIHQyCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIs
IDhdCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCgy
KQorCisKK19sbGludF9vcF90aHJvdzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3Rocm93KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29w
X3Rocm93X3JlZmVyZW5jZV9lcnJvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKKyAgICBkaXNwYXRjaCgy
KQorCisKK19sbGludF9vcF9qc3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGFkZGkgMyAqIDQsIFBDLCB0MQorICAgIHN0b3JlaSB0MSwgW3QwXQorICAg
IGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgUEMKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGlu
dF9vcF9kZWJ1ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2RlYnVnKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Byb2ZpbGVfd2ls
bF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidHB6IEpJVFN0YWNrRnJhbWU6OmVu
YWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2ls
bENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2Nh
bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0cHogSklUU3RhY2tGcmFtZTo6ZW5hYmxl
ZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgLm9wUHJvZmlsZURpZENhbGxEb25lCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERv
bmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENd
LCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhy
b3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUg
aW50ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMpLCBzbworICAgICMg
dGhlIHRocm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2Ug
Y29tZSB0byBoZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3Mg
dGhyb3dpbmcgcHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtz
cF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQw
CisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKwor
X2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5B
ZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFb
c3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0
MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUgIkxv
d0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7
CisKKyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBsbGludF8jI29wY29kZSwK
KyAgICBPcGNvZGUqIG9wY29kZU1hcFtudW1PcGNvZGVJRHNdID0geyBGT1JfRUFDSF9PUENPREVf
SUQoT1BDT0RFX0VOVFJZKSB9OworI3VuZGVmIE9QQ09ERV9FTlRSWQorCisjaW5jbHVkZSAiTExJ
bnRBc3NlbWJseS5oIgorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExvd0xldmVsSW50ZXJwcmV0ZXJf
aAorI2RlZmluZSBMb3dMZXZlbEludGVycHJldGVyX2gKKworI2luY2x1ZGUgIk9wY29kZS5oIgor
CisjZGVmaW5lIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wob3Bjb2RlLCBsZW5ndGgpIGV4dGVybiAi
QyIgdm9pZCBsbGludF8jI25hbWUoKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoTExJTlRfSU5T
VFJVQ1RJT05fREVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJVQ1RJT05fREVDTAorCitleHRlcm4g
IkMiIHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50
X2V2YWxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19mcm9tX2hlbHBl
cl90cmFtcG9saW5lKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxf
dHJhbXBvbGluZSgpOworCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworZXh0
ZXJuIE9wY29kZSogb3Bjb2RlTWFwW251bU9wY29kZUlEc107CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpMTEludAorCisjZW5kaWYgLy8gTG93TGV2ZWxJbnRlcnByZXRlcl9oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE5MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xh
c3MgU3BlY2lhbFJlZ2lzdGVyCisgIGRlZiBpbml0aWFsaXplKG5hbWUpCisgICAgQG5hbWUgPSBu
YW1lCisgIGVuZAorICAKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIEBuYW1lCisgIGVuZAorZW5k
CisKK0FSTXY3X0RBVEFfUkVHID0gU3BlY2lhbFJlZ2lzdGVyLm5ldygiaXAiKQorQVJNdjdfQURE
Ul9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyMyIpCisKK2RlZiBtb3ZlSW1tZWRpYXRlKHZh
bHVlLCByZWdpc3RlcikKKyAgIyBDdXJyZW50bHkgd2Ugb25seSBoYW5kbGUgdGhlIHNpbXBsZSBj
YXNlcywgYW5kIGZhbGwgYmFjayB0byBtb3YvbW92dCBmb3IgdGhlIGNvbXBsZXggb25lcy4KKyAg
aWYgdmFsdWUgPj0gMCAmJiB2YWx1ZSA8IDI1NgorICAgICRhc20ucHV0cyAibW92dyBcIyN7dmFs
dWV9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgIGVsc2lmICh+dmFsdWUpID49IDAgJiYg
KH52YWx1ZSkgPCAyNTYKKyAgICAkYXNtLnB1dHMgIm12bncgXCMje352YWx1ZX0sICN7cmVnaXN0
ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzZQorICAgICRhc20ucHV0cyAibW92dyBcIyN7dmFsdWUg
JiAweGZmZmZ9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgICAgaWYgKHZhbHVlICYgMHhm
ZmZmMDAwMCkgIT0gMAorICAgICAgJGFzbS5wdXRzICJtb3Z0IFwjI3t2YWx1ZSA+PiAxNn0sICN7
cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgUmVn
aXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAi
LCAiYTAiLCAicjAiCisgICAgICAicjAiCisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAg
ICAicjEiCisgICAgd2hlbiAidDIiLCAiYTIiCisgICAgICAicjIiCisgICAgd2hlbiAiYTMiCisg
ICAgICAicjMiCisgICAgd2hlbiAidDMiCisgICAgICAicjQiCisgICAgd2hlbiAidDQiCisgICAg
ICAicjciCisgICAgd2hlbiAiY2ZyIgorICAgICAgInI1IgorICAgIGVsc2UKKyAgICAgIHJhaXNl
CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3Bl
cmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFy
bVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVs
ZAorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQKKyAgZGVmIGFybVY3T3BlcmFuZAor
ICAgIGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIsICJmciIKKyAgICAgICJkMCIKKyAgICB3aGVu
ICJmcjEiLAorICAgICAgImQxIgorICAgIHdoZW4gImZyMiIKKyAgICAgICJkMiIKKyAgICB3aGVu
ICJmcjMiCisgICAgICAiZDMiCisgICAgd2hlbiAiZnI0IgorICAgICAgImQ0IgorICAgIHdoZW4g
ImZyNSIKKyAgICAgICJkNSIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAor
ICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5k
CisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgeWllbGQgc2VsZgorICBlbmQKK2Vu
ZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJJbnZh
bGlkIGltbWVkaWF0ZSAje3ZhbHVlfSIgaWYgdmFsdWUgPCAwIG9yIHZhbHVlID4gMjU1CisgICAg
IiMke3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlP
cGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAg
YXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlp
ZWxkIHNlbGYKKyAgZW5kCitlbmQKKworbW9kdWxlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworICBk
ZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgc2VsZi5hcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9y
eU9wZXJhbmQKKyAgICAkYXNtLnB1dHMgIlx0bGRyICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVtb3J5
T3BlcmFuZH0sICN7QVJNdjdfREFUQV9SRUcuYXJtVjdPcGVyYW5kfSIKKyAgICB5aWVsZCBBUk12
N19EQVRBX1JFRworICAgICRhc20ucHV0cyAiXHRzdHIgI3tBUk12N19EQVRBX1JFRy5hcm1WN09w
ZXJhbmR9LCAje3NlbGYuYXJtVjdQb3NzaWJseU1lbW9yeU9wZXJhbmR9IgorICBlbmQKK2VuZAor
CitjbGFzcyBBZGRyZXNzCisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisKKyAgZGVm
IGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSA8
IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNl
dC52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3
UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zm
c2V0LnZhbHVlID4gMHhmZmYKKyAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7QVJNdjdf
QUREUl9SRUcuYXJtVjdPcGVyYW5kfV0iCisgICAgZWxzZQorICAgICAgIlsje2Jhc2UuYXJtVjdP
cGVyYW5kfSwgI3tvZmZzZXQuYXJtVjdPcGVyYW5kfV0iCisgICAgZW5kCisgIGVuZAorZW5kCisK
K2NsYXNzIEJhc2VJbmRleAorICBpbmNsdWRlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworCisgIGRl
ZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUg
IT0gMAorICAgICAgbW92ZUltbWVkaWF0ZShvZmZzZXQudmFsdWUsIEFSTXY3X0FERFJfUkVHKQor
ICAgICAgJGFzbS5wdXRzICJhZGR3ICN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfSwgI3ti
YXNlLmFybVY3T3BlcmFuZH0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2li
bGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAgICJbI3tBUk12
N19BRERSX1JFRy5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7
c2NhbGV9XSIKKyAgICBlbHNlCisgICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje2luZGV4
LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGV9XSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKwor
Y2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisg
IAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgbW92ZUltbWVk
aWF0ZShhZGRyZXNzLnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgZW5kCisgIAorICBkZWYgYXJt
VjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICAiWyN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVy
YW5kfV0iCisgIGVuZAorZW5kCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vYXNtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FzbS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FzbS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorIyEvdXNyL2Jpbi9lbnYg
cnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiskOiA8PCBGaWxl
LmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAib2Zmc2V0
cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNm
b3JtIgorCitjbGFzcyBBc3NlbWJsZXIKKyAgZGVmIGluaXRpYWxpemUob3V0cCkKKyAgICBAb3V0
cCA9IG91dHAKKyAgICBAc3RhdGUgPSA6Y3BwCisgIGVuZAorICAKKyAgZGVmIGVudGVyQXNtCisg
ICAgQG91dHAucHV0cyAiYXNtICgiCisgICAgQHN0YXRlID0gOmFzbQorICBlbmQKKyAgCisgIGRl
ZiBsZWF2ZUFzbQorICAgIEBvdXRwLnB1dHMgIikiCisgICAgQHN0YXRlID0gOmNwcAorICBlbmQK
KyAgCisgIGRlZiBpbkFzbQorICAgIGVudGVyQXNtCisgICAgeWllbGQKKyAgICBsZWF2ZUFzbQor
ICBlbmQKKyAgCisgIGRlZiBwdXRzKGxpbmUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6
YXNtCisgICAgbmV3TGluZSA9ICIiCisgICAgbGluZS5lYWNoX2J5dGUgeworICAgICAgfCBieXRl
IHwKKyAgICAgIGlmIGJ5dGUgPT0gPyUKKyAgICAgICAgbmV3TGluZSArPSAiJSUiCisgICAgICBl
bHNlCisgICAgICAgIG5ld0xpbmUgKz0gYnl0ZS5jaHIKKyAgICAgIGVuZAorICAgIH0KKyAgICBA
b3V0cC5wdXRzKChuZXdMaW5lICsgIlxuIikuaW5zcGVjdCkKKyAgZW5kCitlbmQKKworJGFzbSA9
IEFzc2VtYmxlci5uZXcoJHN0ZG91dCkKKworYXNtRmlsZSA9IEFSR1Yuc2hpZnQKK29mZnNldHNG
aWxlID0gQVJHVi5zaGlmdAorCithc3QgPSBwYXJzZShsZXgoSU86OnJlYWQoYXNtRmlsZSkpKQor
b2Zmc2V0c0xpc3QsIGNvbmZpZ0luZGV4ID0gb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChv
ZmZzZXRzRmlsZSkKKworZm9yU2V0dGluZ3MoY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFz
dClbY29uZmlnSW5kZXhdLCBhc3QpIHsKKyAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFT
VCwgYmFja2VuZCB8CisgIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAg
bG93TGV2ZWxBU1QgPSBsb3dMZXZlbEFTVC5yZXNvbHZlKCpidWlsZE9mZnNldHNNYXAobG93TGV2
ZWxBU1QsIG9mZnNldHNMaXN0KSkKKyAgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVT
ZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQpIHsKKyAgICAkYXNtLmluQXNtIHsKKyAgICAg
IGxvd0xldmVsQVNULmxvd2VyKGJhY2tlbmQpCisgICAgfQorICB9Cit9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgw
NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgQmFzZSB1dGlsaXR5IHR5cGVzIGZvciB0aGUgQVNULiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKworIyBWYWxpZCBtZXRob2RzIGZvciBOb2RlOgorIworIyBub2RlLmNo
aWxkcmVuIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgaW1tZWRpYXRlIGNoaWxkcmVuLgorIworIyBu
b2RlLmRlc2NlbmRlbnRzIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHN0cmljdCBkZXNjZW5k
YW50cyAoY2hpbGRyZW4KKyMgICAgIGFuZCBjaGlsZHJlbiBvZiBjaGlsZHJlbiwgdHJhbnNpdGl2
ZWx5KS4KKyMKKyMgbm9kZS5mbGF0dGVuIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0
aGUgc3RyaWN0IGRlc2NlbmRhbnRzIGFuZAorIyAgICAgdGhlIG5vZGUgaXRzZWxmLgorIworIyBu
b2RlLmZpbHRlcih0eXBlKSAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhvc2UgZWxl
bWVudHMgaW4KKyMgICAgIG5vZGUuZmxhdHRlbiB0aGF0IGFyZSBvZiB0aGUgZ2l2ZW4gdHlwZSAo
aXNfYT8gdHlwZSByZXR1cm5zIHRydWUpLgorIworIyBub2RlLm1hcENoaWxkcmVue3x2fCAuLi59
IC0+IFJldHVybnMgYSBuZXcgbm9kZSB3aXRoIGFsbCBjaGlsZHJlbgorIyAgICAgcmVwbGFjZWQg
YWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBibG9jay4KKyMKKyMgRXhhbXBsZXM6CisjCisjIG5vZGUu
ZmlsdGVyKFNldHRpbmcpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHNldHRpbmdzIHRoYXQg
dGhlIEFTVCdzCisjICAgICBJZlRoZW5FbHNlIGJsb2NrcyBkZXBlbmQgb24uCisjCisjIG5vZGUu
ZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc3RydWN0dXJl
IG9mZnNldHMKKyMgICAgIHRoYXQgdGhlIEFTVCBkZXBlbmRzIG9uLgorCitjbGFzcyBOb2RlCisg
IGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
KQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICBlbmQKKyAgCisgIGRlZiBjb2RlT3Jp
Z2luU3RyaW5nCisgICAgImxpbmUgbnVtYmVyICN7QGNvZGVPcmlnaW59IgorICBlbmQKKyAgCisg
IGRlZiBkZXNjZW5kYW50cworICAgIGNoaWxkcmVuLmNvbGxlY3R7fHZ8IHYuZmxhdHRlbn0uZmxh
dHRlbgorICBlbmQKKyAgCisgIGRlZiBmbGF0dGVuCisgICAgW3NlbGZdICsgZGVzY2VuZGFudHMK
KyAgZW5kCisgIAorICBkZWYgZmlsdGVyKHR5cGUpCisgICAgZmxhdHRlbi5zZWxlY3R7fHZ8IHYu
aXNfYT8gdHlwZX0KKyAgZW5kCitlbmQKKworY2xhc3MgTm9DaGlsZHJlbiA8IE5vZGUKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAg
CisgIGRlZiBjaGlsZHJlbgorICAgIFtdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisg
ICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXRLZXkKKyAgYXR0cl9yZWFk
ZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShzdHJ1Y3QsIGZpZWxkKQor
ICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisgIGRl
ZiBoYXNoCisgICAgQHN0cnVjdC5oYXNoICsgQGZpZWxkLmhhc2ggKiAzCisgIGVuZAorICAKKyAg
ZGVmIGVxbD8ob3RoZXIpCisgICAgQHN0cnVjdCA9PSBvdGhlci5zdHJ1Y3QgYW5kIEBmaWVsZCA9
PSBvdGhlci5maWVsZAorICBlbmQKK2VuZAorICAgIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgQVNUIG5vZGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKworY2xhc3MgU3RydWN0T2Zmc2V0IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3Ry
dWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmll
bGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgICAgQGZp
ZWxkID0gZmllbGQKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYu
Zm9yRmllbGQoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBrZXkgPSBTdHJ1Y3RPZmZz
ZXRLZXkubmV3KHN0cnVjdCwgZmllbGQpCisgICAgCisgICAgdW5sZXNzIEBAbWFwcGluZ1trZXld
CisgICAgICBAQG1hcHBpbmdba2V5XSA9IFN0cnVjdE9mZnNldC5uZXcoY29kZU9yaWdpbiwgc3Ry
dWN0LCBmaWVsZCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdba2V5XQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgIiN7c3RydWN0fTo6I3tmaWVsZH0iCisgIGVuZAorICAKKyAgZGVmIDw9Pihv
dGhlcikKKyAgICBpZiBAc3RydWN0ICE9IG90aGVyLnN0cnVjdAorICAgICAgcmV0dXJuIEBzdHJ1
Y3QgPD0+IG90aGVyLnN0cnVjdAorICAgIGVuZAorICAgIEBmaWVsZCA8PT4gb3RoZXIuZmllbGQK
KyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
c3RydWN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgIGVuZAorICAKKyAgQEBtYXBw
aW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgc3RydWN0KQorICAg
IHVubGVzcyBAQG1hcHBpbmdbc3RydWN0XQorICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBTaXpl
b2YubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbc3RydWN0
XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgInNpemVvZiAje0BzdHJ1Y3R9IgorICBlbmQK
KyAgCisgIGRlZiA8PT4ob3RoZXIpCisgICAgQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgIGVu
ZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnZh
bHVlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEB2YWx1ZSA9IHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiI3t2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIG90aGVyLmlzX2E/
IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUgPT0gQHZhbHVlCisgIGVuZAorZW5kCisKK2NsYXNz
IEFkZEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAor
ICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFw
Q2hpbGRyZW4KKyAgICBBZGRJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQp
LCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1
bXB9ICsgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMg
PCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxl
ZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4K
KyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBT
dWJJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0
KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IC0gI3tyaWdodC5k
dW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJf
cmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxl
ZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAg
QHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEBy
aWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBNdWxJbW1lZGlhdGVzLm5l
dyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICogI3tyaWdodC5kdW1wfSkiCisgIGVuZAor
ZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0ZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAg
W0BjaGlsZF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOZWdJbW1lZGlhdGUu
bmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgIigtI3tAY2hpbGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklEIDwg
Tm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQor
ICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5n
W25hbWVdID0gUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBA
QG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitl
bmQKKworY2xhc3MgRlBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFt
ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9Cisg
IAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFw
cGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gRlBSZWdpc3RlcklELm5ldyhjb2Rl
T3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZSA8IE5vQ2hp
bGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5k
CisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2lu
LCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1l
XSA9IFZhcmlhYmxlLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGlu
Z1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitj
bGFzcyBBZGRyZXNzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFzZSwgOm9mZnNldAorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisgICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAg
CisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAo
eWllbGQgQG9mZnNldCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQuZHVt
cH1bI3tiYXNlLmR1bXB9XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9kZQor
ICBhdHRyX3JlYWRlciA6YmFzZSwgOmluZGV4LCA6c2NhbGUsIDpvZmZzZXQKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisgICAgQGluZGV4ID0gaW5kZXgKKyAg
ICBAc2NhbGUgPSBzY2FsZQorICAgIHJhaXNlIHVubGVzcyBbMSwgMiwgNCwgOF0ubWVtYmVyPyBA
c2NhbGUKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisg
ICAgW0BiYXNlLCBAaW5kZXgsIEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
CisgICAgQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQGlu
ZGV4KSwgQHNjYWxlLCAoeWllbGQgQG9mZnNldCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiI3tvZmZzZXQuZHVtcH1bI3tiYXNlLmR1bXB9LCAje2luZGV4LmR1bXB9LCAje3NjYWxlfV0i
CisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAgYXR0
cl9yZWFkZXIgOmFkZHJlc3MKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGFkZHJl
c3MpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgICIje2FkZHJlc3MuZHVtcH1bXSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgSW5zdHJ1Y3Rpb24gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpvcGNvZGUsIDpvcGVyYW5k
cworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgb3Bjb2RlLCBvcGVyYW5kcykKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBvcGNvZGUgPSBvcGNvZGUKKyAgICBAb3BlcmFuZHMg
PSBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIG9wZXJhbmRzCisgIGVu
ZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIEluc3RydWN0aW9uLm5ldyhjb2Rl
T3JpZ2luLCBAb3Bjb2RlLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICJcdCIgKyBvcGNvZGUudG9fcyArICIgIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8
IHYuZHVtcH0uam9pbigiLCAiKQorICBlbmQKK2VuZAorCitjbGFzcyBFcnJvciA8IE5vQ2hpbGRy
ZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0ZXJyb3IiCisgIGVuZAorZW5kCisKK2NsYXNz
IENvbnN0RGVjbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnZhcmlhYmxlLCA6dmFsdWUKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEB2YXJpYWJsZSA9IHZhcmlhYmxlCisgICAgQHZhbHVlID0gdmFsdWUK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQHZhcmlhYmxlLCBAdmFsdWVdCisgIGVu
ZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQ29uc3REZWNsLm5ldyhjb2RlT3JpZ2luLCAo
eWllbGQgQHZhcmlhYmxlKSwgKHlpZWxkIEB2YWx1ZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiY29uc3QgI3tAdmFyaWFibGUuZHVtcH0gPSAje0B2YWx1ZS5kdW1wfSIKKyAgZW5kCitl
bmQKKworJGxhYmVsTWFwcGluZyA9IHt9CisKK2NsYXNzIExhYmVsIDwgTm9DaGlsZHJlbgorICBh
dHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRl
ZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25h
bWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAk
bGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExhYmVsCisgICAgZWxzZQorICAgICAgJGxhYmVsTWFw
cGluZ1tuYW1lXSA9IExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRs
YWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIK
KyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFk
ZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisKKyAgQEB1bmlxdWVOYW1l
Q291bnRlciA9IDAKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAg
ICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNp
b246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExvY2FsTGFiZWwK
KyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTG9jYWxMYWJlbC5uZXcoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgIGVuZAor
ICAKKyAgZGVmIHNlbGYudW5pcXVlCisgICAgd2hpbGUgJGxhYmVsTWFwcGluZ1siX0wje0BAdW5p
cXVlTmFtZUNvdW50ZXJ9Il0KKyAgICAgIEBAdW5pcXVlTmFtZUNvdW50ZXIgKz0gMQorICAgIGVu
ZAorICAgIGZvck5hbWUobmlsLCAiX0wje0BAdW5pcXVlTmFtZUNvdW50ZXJ9IikKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxS
ZWZlcmVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwg
PSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAor
ICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4s
ICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFz
cyBMb2NhbExhYmVsUmVmZXJlbmNlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bGFiZWwK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAg
ICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExvY2FsTGFiZWxS
ZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRl
ZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwu
bmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIg
Omxpc3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxpc3QpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAbGlzdCA9IGxpc3QKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4K
KyAgICBsaXN0CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIFNlcXVl
bmNlLm5ldyhjb2RlT3JpZ2luLCBAbGlzdC5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgbGlzdC5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIlxuIikKKyAgZW5kCitlbmQK
KworY2xhc3MgVHJ1ZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihu
aWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IFRydWUubmV3CisgIAorICBkZWYgc2VsZi5p
bnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICB0cnVl
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAidHJ1ZSIKKyAgZW5kCitlbmQKKworY2xhc3Mg
RmFsc2UgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIobmlsKQorICBl
bmQKKyAgCisgIEBAaW5zdGFuY2UgPSBGYWxzZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNl
CisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIGZhbHNlCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiZmFsc2UiCisgIGVuZAorZW5kCisKK2NsYXNzIFRydWVD
bGFzcworICBkZWYgYXNOb2RlCisgICAgVHJ1ZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFz
cyBGYWxzZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBGYWxzZS5pbnN0YW5jZQorICBlbmQKK2Vu
ZAorCitjbGFzcyBTZXR0aW5nIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBk
ZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tu
YW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gU2V0dGluZy5uZXcoY29kZU9yaWdpbiwgbmFt
ZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kIDwgTm9kZQorICBhdHRyX3JlYWRlciA6
bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdo
dCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9
IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQW5kLm5ldyhjb2RlT3JpZ2luLCAoeWll
bGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIo
I3tsZWZ0LmR1bXB9IGFuZCAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgT3Ig
PCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxl
ZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4K
KyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBP
ci5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBvciAje3JpZ2h0LmR1bXB9KSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgTm90IDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxl
ZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOb3QubmV3KGNv
ZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIihu
b3QgI3tjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAgPCBOb0NoaWxkcmVu
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdHNraXAiCisgIGVuZAorZW5kCisKK2NsYXNzIElm
VGhlbkVsc2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpwcmVkaWNhdGUsIDp0aGVuQ2FzZQorICBh
dHRyX2FjY2Vzc29yIDplbHNlQ2FzZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
cHJlZGljYXRlLCB0aGVuQ2FzZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBwcmVkaWNh
dGUgPSBwcmVkaWNhdGUKKyAgICBAdGhlbkNhc2UgPSB0aGVuQ2FzZQorICAgIEBlbHNlQ2FzZSA9
IFNraXAubmV3KGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgaWYg
QGVsc2VDYXNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNlLCBAZWxzZUNhc2VdCisgICAg
ZWxzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZV0KKyAgICBlbmQKKyAgZW5kCisgIAor
ICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQg
QHByZWRpY2F0ZSksICh5aWVsZCBAdGhlbkNhc2UpLCAoeWllbGQgQGVsc2VDYXNlKSkKKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgICJpZiAje3ByZWRpY2F0ZS5kdW1wfVxuIiArIHRoZW5DYXNl
LmR1bXAgKyAiXG5lbHNlXG4iICsgZWxzZUNhc2UuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQK
KworY2xhc3MgTWFjcm8gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6dmFyaWFibGVzLCA6
Ym9keQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBi
b2R5KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQHZhcmlh
YmxlcyA9IHZhcmlhYmxlcworICAgIEBib2R5ID0gYm9keQorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIEB2YXJpYWJsZXMgKyBbQGJvZHldCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxk
cmVuCisgICAgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAdmFyaWFibGVzLm1hcHt8dnwg
eWllbGQgdn0sICh5aWVsZCBAYm9keSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAibWFj
cm8gI3tuYW1lfSgiICsgdmFyaWFibGVzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSAr
ICIpXG4iICsgYm9keS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBNYWNyb0Nh
bGwgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6b3BlcmFuZHMKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQG5hbWUgPSBuYW1lCisgICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAgICByYWlzZSB1
bmxlc3MgQG9wZXJhbmRzCisgICAgQG9wZXJhbmRzLmVhY2h7fHZ8IHJhaXNlIHVubGVzcyB2fQor
ICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEBvcGVyYW5kcworICBlbmQKKyAgCisgIGRl
ZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIEBuYW1l
LCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdCN7
bmFtZX0oIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpIgor
ICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNr
ZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9i
YWNrZW5kcy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisjIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJ4ODYi
CisKK0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIsCisgICAiQVJNdjciCisgIF0KKworV09SS0lO
R19CQUNLRU5EUyA9CisgIFsKKyAgICJYODYiCisgIF0KKworQkFDS0VORF9QQVRURVJOID0gUmVn
ZXhwLm5ldygnXFxBKCcgKyBCQUNLRU5EUy5qb2luKCcpfCgnKSArICcpXFxaJykKKworY2xhc3Mg
Tm9kZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBzZW5kKCJsb3dlciIgKyBuYW1lKQorICBlbmQK
K2VuZAorCisjIE92ZXJyaWRlcyBmb3IgbG93ZXIoKSBmb3IgdGhvc2Ugbm9kZXMgdGhhdCBhcmUg
YmFja2VuZC1hZ25vc3RpYworCitkZWYgc2FuaXRpemVMYWJlbE5hbWUobmFtZSkKKyAgIyBTb21l
IHBsYXRmb3JtcyBkb24ndCB3YW50IHRoZSBsZWFkaW5nICJfIi4gSWYgd2UgZXZlciB3YW50IHRv
IGRvIHNvbWV0aGluZworICAjIGFib3V0IHRoYXQsIGl0IHdvdWxkIGJlIGhlcmUuCisgIG5hbWUK
K2VuZAorCitjbGFzcyBMYWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHMgIi5n
bG9ibCAje3Nhbml0aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9IgorICAgICRhc20ucHV0cyAiI3tz
YW5pdGl6ZUxhYmVsTmFtZShzZWxmLm5hbWUpfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2Fs
TGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzICJfX29hXyN7c2VsZi5uYW1l
WzEuLi0xXX06IgorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwCisgIGRlZiBsb3dlcihuYW1lKQor
ICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBAbGlz
dC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBub2RlLmxvd2VyKG5hbWUpCisgICAgfQor
ICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5l
cmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0
cmFjdG9yLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisjIS91c3IvYmluL2VudiBy
dWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUu
ZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJvZmZzZXRz
IgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zv
cm0iCisKK2RlZiBlbWl0TWFnaWNOdW1iZXIKKyAgT0ZGU0VUX01BR0lDX05VTUJFUlMuZWFjaCB7
CisgICAgfCBudW1iZXIgfAorICAgIHB1dHMgIiN7bnVtYmVyfSwiCisgIH0KK2VuZAorCitvcmln
aW5hbEFTVCA9IHBhcnNlKGxleCgkc3RkaW4ucmVhZCkpCisKK2VtaXRDb2RlSW5BbGxDb25maWd1
cmF0aW9ucyhvcmlnaW5hbEFTVCkgeworICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4
IHwKKyAgb2Zmc2V0c0xpc3QgPSBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0Cisg
IHNpemVzTGlzdCA9IGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKKyAgCisgIGxlbmd0aCA9
IChPRkZTRVRfTUFHSUNfTlVNQkVSUy5zaXplICsgMSkgKiAoMSArIG9mZnNldHNMaXN0LnNpemUg
KyBzaXplc0xpc3Quc2l6ZSkKKyAgCisgIHB1dHMgInN0YXRpYyBjb25zdCB1bnNpZ25lZCBleHRy
YWN0b3JUYWJsZVsje2xlbmd0aH1dID0geyIKKyAgZW1pdE1hZ2ljTnVtYmVyCisgIHB1dHMgIiN7
aW5kZXh9LCIKKyAgb2Zmc2V0c0xpc3QuZWFjaCB7CisgICAgfCBvZmZzZXQgfAorICAgIGVtaXRN
YWdpY051bWJlcgorICAgIHB1dHMgIk9GRkxJTkVfQVNNX09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVj
dH0sICN7b2Zmc2V0LmZpZWxkfSksIgorICB9CisgIHNpemVzTGlzdC5lYWNoIHsKKyAgICB8IG9m
ZnNldCB8CisgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgcHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0
cnVjdH0pLCIKKyAgfQorICBwdXRzICJ9OyIKK30KKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxODggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK01BQ1JPX0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJhZGRpIiwKKyAgICJhbmRpIiwKKyAg
ICJsc2hpZnRpIiwKKyAgICJtdWxpIiwKKyAgICJuZWdpIiwKKyAgICJub3RpIiwKKyAgICJvcmki
LAorICAgInJzaGlmdGkiLAorICAgInVyc2hpZnRpIiwKKyAgICJzdWJpIiwKKyAgICJ4b3JpIiwK
KyAgICJsb2FkaSIsCisgICAibG9hZGIiLAorICAgImxvYWRoIiwKKyAgICJzdG9yZWkiLAorICAg
InN0b3JlYiIsCisgICAibG9hZGQiLAorICAgIm1vdmVkIiwKKyAgICJzdG9yZWQiLAorICAgImFk
ZGQiLAorICAgImRpdmQiLAorICAgInN1YmQiLAorICAgIm11bGQiLAorICAgInNxcnRkIiwKKyAg
ICJjaTJkIiwKKyAgICJmaWkyZCIsICMgdXNhZ2U6IGZpaTJkIDxncHIgd2l0aCBsZWFzdCBzaWdu
aWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxmcHI+Cisg
ICAiZmQyaWkiLCAjIHVzYWdlOiBmZDJpaSA8ZnByPiwgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmlj
YW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPgorICAgImJkZXEiLAor
ICAgImJkbmVxIiwKKyAgICJiZGd0IiwKKyAgICJiZGd0ZXEiLAorICAgImJkbHQiLAorICAgImJk
bHRlcSIsCisgICAiYmRlcXVuIiwKKyAgICJiZG5lcXVuIiwKKyAgICJiZGd0dW4iLAorICAgImJk
Z3RlcXVuIiwKKyAgICJiZGx0dW4iLAorICAgImJkbHRlcXVuIiwKKyAgICJidGQyaSIsCisgICAi
dGQyaSIsCisgICAiYmNkMmkiLAorICAgIm1vdmR6IiwKKyAgICJwb3AiLAorICAgInB1c2giLAor
ICAgIm1vdmUiLAorICAgInN4aTJwIiwKKyAgICJ6eGkycCIsCisgICAibm9wIiwKKyAgICJiaWVx
IiwKKyAgICJiaW5lcSIsCisgICAiYmlhIiwKKyAgICJiaWFlcSIsCisgICAiYmliIiwKKyAgICJi
aWJlcSIsCisgICAiYmlndCIsCisgICAiYmlndGVxIiwKKyAgICJiaWx0IiwKKyAgICJiaWx0ZXEi
LAorICAgImJiZXEiLAorICAgImJibmVxIiwKKyAgICJiYmEiLAorICAgImJiYWVxIiwKKyAgICJi
YmIiLAorICAgImJiYmVxIiwKKyAgICJiYmd0IiwKKyAgICJiYmd0ZXEiLAorICAgImJibHQiLAor
ICAgImJibHRlcSIsCisgICAiYnRpbyIsCisgICAiYnRpcyIsCisgICAiYnRpeiIsCisgICAiYnRp
bnoiLAorICAgImJ0Ym8iLAorICAgImJ0YnMiLAorICAgImJ0YnoiLAorICAgImJ0Ym56IiwKKyAg
ICJqbXAiLAorICAgImJhZGRpbyIsCisgICAiYmFkZGlzIiwKKyAgICJiYWRkaXoiLAorICAgImJh
ZGRpbnoiLAorICAgImJzdWJpbyIsCisgICAiYnN1YmlzIiwKKyAgICJic3ViaXoiLAorICAgImJz
dWJpbnoiLAorICAgImJtdWxpbyIsCisgICAiYm11bGlzIiwKKyAgICJibXVsaXoiLAorICAgImJt
dWxpbnoiLAorICAgImJvcmlvIiwKKyAgICJib3JpcyIsCisgICAiYm9yaXoiLAorICAgImJvcmlu
eiIsCisgICAiYnJlYWsiLAorICAgImNhbGwiLAorICAgInJldCIsCisgICAiY2llcSIsCisgICAi
Y2luZXEiLAorICAgImNpYSIsCisgICAiY2lhZXEiLAorICAgImNpYiIsCisgICAiY2liZXEiLAor
ICAgImNpZ3QiLAorICAgImNpZ3RlcSIsCisgICAiY2lsdCIsCisgICAiY2lsdGVxIiwKKyAgICJ0
aW8iLAorICAgInRpcyIsCisgICAidGl6IiwKKyAgICJ0aW56IiwKKyAgICJ0Ym8iLAorICAgInRi
cyIsCisgICAidGJ6IiwKKyAgICJ0Ym56IiwKKyAgICJwZWVrIiwKKyAgICJwb2tlIiwKKyAgICJi
cGVxIiwKKyAgICJicG5lcSIsCisgICAiYnBhIiwKKyAgICJicGFlcSIsCisgICAiYnBiIiwKKyAg
ICJicGJlcSIsCisgICAiYnBndCIsCisgICAiYnBndGVxIiwKKyAgICJicGx0IiwKKyAgICJicGx0
ZXEiLAorICAgImFkZHAiLAorICAgImFuZHAiLAorICAgIm9ycCIsCisgICAic3VicCIsCisgICAi
eG9ycCIsCisgICAibG9hZHAiLAorICAgImNwZXEiLAorICAgImNwbmVxIiwKKyAgICJjcGEiLAor
ICAgImNwYWVxIiwKKyAgICJjcGIiLAorICAgImNwYmVxIiwKKyAgICJjcGd0IiwKKyAgICJjcGd0
ZXEiLAorICAgImNwbHQiLAorICAgImNwbHRlcSIsCisgICAic3RvcmVwIiwKKyAgICJidHBvIiwK
KyAgICJidHBzIiwKKyAgICJidHB6IiwKKyAgICJidHBueiIsCisgICAiYmFkZHBvIiwKKyAgICJi
YWRkcHMiLAorICAgImJhZGRweiIsCisgICAiYmFkZHBueiIKKyAgXQorCitYODZfSU5TVFJVQ1RJ
T05TID0KKyAgWworICAgImNkcWkiLAorICAgImlkaXZpIgorICBdCisKK0lOU1RSVUNUSU9OUyA9
IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMKKworSU5TVFJVQ1RJT05fUEFU
VEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIElOU1RSVUNUSU9OUy5qb2luKCcpfCgnKSArICcp
KVxcWicpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0
cmFjdG9yX2NvbnN0YW50cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3Rh
bnRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCitNQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVl
NzU1IF0KKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRz
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNl
dHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9v
ZmZzZXRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1NiBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4
dHJhY3Rvcl9jb25zdGFudHMiCisKK09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3
LCAweDBmZjVlNzU1IF0KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgb2Zm
c2V0c0xpc3QoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBzaXplc0xpc3QoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUmV0dXJucyBh
IGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgc2l6ZXMgdXNlZCBieSB0aGUgQVNULiAgICAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIG9mZnNldHNMaXN0
KGFzdCkKKyAgYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorZW5kCisKK2RlZiBz
aXplc0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CitlbmQKKworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25J
bmRleChhc3QsIGZpbGUpIC0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgW29m
ZnNldHMsIGluZGV4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgUGFyc2VzIHRoZSBvZmZzZXRzIGZyb20gYSBmaWxl
IGFuZCByZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCB0aGUgIworIyBpbmRleCBvZiB0aGUg
Y29uZmlndXJhdGlvbiB0aGF0IGlzIHZhbGlkIGluIHRoaXMgYnVpbGQgdGFyZ2V0LiAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgb2Zmc2V0c0FuZENvbmZp
Z3VyYXRpb25JbmRleChmaWxlKQorICBpbmRleCA9IG5pbAorICBvZmZzZXRzID0gW10KKyAgZW5k
aWFubmVzc01hcmtlckJ5dGVzID0gbmlsCisgIAorICBkZWYgcmVhZEludChlbmRpYW5uZXNzLCBp
bnApCisgICAgYnl0ZXMgPSBbXQorICAgIDQudGltZXMgeworICAgICAgYnl0ZXMgPDwgaW5wLmdl
dGJ5dGUKKyAgICB9CisgICAgCisgICAgaWYgZW5kaWFubmVzcyA9PSA6bGl0dGxlCisgICAgICAj
IExpdHRsZSBlbmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAwIHwKKyAgICAgICBieXRlc1sxXSA8
PCA4IHwKKyAgICAgICBieXRlc1syXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbM10gPDwgMjQpCisg
ICAgZWxzZQorICAgICAgIyBCaWcgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMjQgfAorICAg
ICAgIGJ5dGVzWzFdIDw8IDE2IHwKKyAgICAgICBieXRlc1syXSA8PCA4IHwKKyAgICAgICBieXRl
c1szXSA8PCAwKQorICAgIGVuZAorICBlbmQKKyAgCisgIFs6bGl0dGxlLCA6YmlnXS5lYWNoIHsK
KyAgICB8IGVuZGlhbm5lc3MgfAorICAgIG1hZ2ljQnl0ZXMgPSBbXQorICAgIE1BR0lDX05VTUJF
UlMuZWFjaCB7CisgICAgICB8IG51bWJlciB8CisgICAgICBjdXJyZW50Qnl0ZXMgPSBbXQorICAg
ICAgNC50aW1lcyB7CisgICAgICAgIGN1cnJlbnRCeXRlcyA8PCAobnVtYmVyICYgMHhmZikKKyAg
ICAgICAgbnVtYmVyID4+PSA4CisgICAgICB9CisgICAgICBpZiBlbmRpYW5uZXNzID09IDpiaWcK
KyAgICAgICAgY3VycmVudEJ5dGVzLnJldmVyc2UhCisgICAgICBlbmQKKyAgICAgIG1hZ2ljQnl0
ZXMgKz0gY3VycmVudEJ5dGVzCisgICAgfQorICAgIAorICAgIEZpbGUub3BlbihmaWxlLCAiciIp
IHsKKyAgICAgIHwgaW5wIHwKKyAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICBsb29wIHsK
KyAgICAgICAgYnl0ZSA9IGlucC5nZXRieXRlCisgICAgICAgIGJyZWFrIHVubGVzcyBieXRlCisg
ICAgICAgIGlmIGJ5dGUgPT0gbWFnaWNCeXRlc1t3aGVyZUluTWFya2VyXQorICAgICAgICAgIHdo
ZXJlSW5NYXJrZXIgKz0gMQorICAgICAgICAgIGlmIHdoZXJlSW5NYXJrZXIgPT0gbWFnaWNCeXRl
cy5zaXplCisgICAgICAgICAgICAjIFdlIGhhdmUgYSBtYXRjaCEgSWYgd2UgaGF2ZSBub3QgeWV0
IHJlYWQgdGhlIGVuZGlhbm5lc3MgbWFya2VyIGFuZCBpbmRleCwKKyAgICAgICAgICAgICMgdGhl
biByZWFkIHRob3NlIG5vdzsgb3RoZXJ3aXNlIHJlYWQgYW4gb2Zmc2V0LgorICAgICAgICAgICAg
CisgICAgICAgICAgICBpZiBub3QgaW5kZXgKKyAgICAgICAgICAgICAgaW5kZXggPSByZWFkSW50
KGVuZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgb2Zmc2V0
cyA8PCByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgCisgICAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICAgIGVuZAorICAgICAg
ICBlbHNlCisgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgZW5kCisgICAgICB9
CisgICAgfQorICAgIAorICAgIGJyZWFrIGlmIGluZGV4CisgIH0KKyAgCisgIHJhaXNlIHVubGVz
cyBpbmRleAorICAKKyAgW29mZnNldHMsIGluZGV4XQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAtPiBb
b2Zmc2V0cywgc2l6ZXNdICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBCdWls
ZHMgYSBtYXBwaW5nIGJldHdlZW4gU3RydWN0T2Zmc2V0IG5vZGVzIGFuZCB0aGVpciB2YWx1ZXMu
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgYnVpbGRP
ZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpCisgIG9mZnNldHNNYXAgPSB7fQorICBzaXplc01h
cCA9IHt9CisgIGFzdE9mZnNldHNMaXN0ID0gb2Zmc2V0c0xpc3QoYXN0KQorICBhc3RTaXplc0xp
c3QgPSBzaXplc0xpc3QoYXN0KQorICByYWlzZSB1bmxlc3MgYXN0T2Zmc2V0c0xpc3Quc2l6ZSAr
IGFzdFNpemVzTGlzdC5zaXplID09IG9mZnNldHNMaXN0LnNpemUKKyAgb2Zmc2V0c0xpc3QoYXN0
KS5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgc3RydWN0T2Zmc2V0LCBpbmRleCB8CisgICAgb2Zm
c2V0c01hcFtzdHJ1Y3RPZmZzZXRdID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQorICBzaXplc0xp
c3QoYXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgc2l6ZW9mLCBpbmRleCB8CisgICAgc2l6
ZXNNYXBbc2l6ZW9mXSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgW29mZnNldHNNYXAsIHNp
emVzTWFwXQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Bh
cnNlci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9w
YXJzZXIucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9wYXJzZXIucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkxIEBACisjIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJpbnN0cnVj
dGlvbnMiCityZXF1aXJlICJyZWdpc3RlcnMiCisKK2NsYXNzIFRva2VuCisgIGF0dHJfcmVhZGVy
IDpjb2RlT3JpZ2luLCA6c3RyaW5nCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBz
dHJpbmcpCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgICAgQHN0cmluZyA9IHN0cmlu
ZworICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBpZiBvdGhlci5pc19hPyBUb2tlbgor
ICAgICAgQHN0cmluZyA9PSBvdGhlci5zdHJpbmcKKyAgICBlbHNlCisgICAgICBAc3RyaW5nID09
IG90aGVyCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmID1+KG90aGVyKQorICAgIEBzdHJpbmcg
PX4gb3RoZXIKKyAgZW5kCisgIAorICBkZWYgdG9fcworICAgICIje0BzdHJpbmcuaW5zcGVjdH0g
YXQgbGluZSAje2NvZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21t
ZW50KQorICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7
dG9fc30iCisgICAgZWxzZQorICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9OiAje2Nv
bW1lbnRbMF19IgorICAgIGVuZAorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBUaGUgbGV4ZXIuIFRha2VzIGEgc3RyaW5nIGFuZCByZXR1cm5zIGFuIGFy
cmF5IG9mIHRva2Vucy4gICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworCitkZWYgbGV4KHN0cikKKyAgcmVzdWx0ID0gW10KKyAgbGluZU51bWJlciA9IDEKKyAg
d2hpbGUgbm90IHN0ci5lbXB0eT8KKyAgICBjYXNlIHN0cgorICAgIHdoZW4gL1xBXCMoW15cbl0q
KS8KKyAgICAgICMgY29tbWVudCwgaWdub3JlCisgICAgd2hlbiAvXEFcbi8KKyAgICAgIHJlc3Vs
dCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICBsaW5lTnVtYmVyICs9IDEKKyAg
ICB3aGVuIC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2Vu
Lm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVwuKFthLXpBLVowLTlfXSopLworICAg
ICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQV8oW2Et
ekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQor
ICAgIHdoZW4gL1xBKFsgXHRdKykvCisgICAgICAjIHdoaXRlc3BhY2UsIGlnbm9yZQorICAgIHdo
ZW4gL1xBMHgoWzAtOWEtZkEtRl0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51
bWJlciwgJCYuaGV4LnRvX3MpCisgICAgd2hlbiAvXEEwKFswLTddKykvCisgICAgICByZXN1bHQg
PDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLm9jdC50b19zKQorICAgIHdoZW4gL1xBKFswLTld
KykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4g
L1xBOjovCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdo
ZW4gL1xBWzosXChcKVxbXF09XCtcLSpdLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5l
TnVtYmVyLCAkJikKKyAgICBlbHNlCisgICAgICByYWlzZSAiTGV4ZXIgZXJyb3IgYXQgbGluZSBu
dW1iZXIgI3tsaW5lTnVtYmVyfSwgdW5leHBlY3RlZCBzZXF1ZW5jZSAje3N0clswLi4yMF0uaW5z
cGVjdH0iCisgICAgZW5kCisgICAgc3RyID0gJH4ucG9zdF9tYXRjaAorICBlbmQKKyAgcmVzdWx0
CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVG9rZW4gaWRlbnRp
ZmljYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGlzUmVnaXN0ZXIodG9r
ZW4pCisgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJbnN0cnVjdGlv
bih0b2tlbikKKyAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0tl
eXdvcmQodG9rZW4pCisgIHRva2VuID1+IC9cQSgodHJ1ZSl8KGZhbHNlKXwoaWYpfCh0aGVuKXwo
ZWxzZSl8KGVsc2lmKXwoZW5kKXwoYW5kKXwob3IpfChub3QpfChtYWNybyl8KGNvbnN0KXwoc2l6
ZW9mKXwoZXJyb3IpKVxaLyBvcgorICAgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4gb3IKKyAg
ICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzSWRlbnRpZmllcih0
b2tlbikKKyAgdG9rZW4gPX4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKilcWi8gYW5kIG5vdCBp
c0tleXdvcmQodG9rZW4pCitlbmQKKworZGVmIGlzTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9c
QV8oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNMb2NhbExhYmVsKHRva2VuKQorICB0
b2tlbiA9fiAvXEFcLihbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc1ZhcmlhYmxlKHRv
a2VuKQorICBpc0lkZW50aWZpZXIodG9rZW4pIG9yIGlzUmVnaXN0ZXIodG9rZW4pCitlbmQKKwor
ZGVmIGlzSW50ZWdlcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBWzAtOV0vCitlbmQKKworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIHBhcnNlci4gVGFrZXMgYW4gYXJyYXkg
b2YgdG9rZW5zIGFuZCByZXR1cm5zIGFuIEFTVC4gTWV0aG9kcyAgICAgIworIyBvdGhlciB0aGFu
IHBhcnNlKHRva2VucykgYXJlIG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9uLiAgICAgICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBQYXJzZXIKKyAg
ZGVmIGluaXRpYWxpemUodG9rZW5zKQorICAgIEB0b2tlbnMgPSB0b2tlbnMKKyAgICBAaWR4ID0g
MAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIEB0b2tlbnNb
QGlkeF0KKyAgICAgIEB0b2tlbnNbQGlkeF0ucGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBlbHNl
CisgICAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQg
ZW5kIG9mIGZpbGUiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBl
bmQgb2YgZmlsZTogI3tjb21tZW50WzBdfSIKKyAgICAgIGVuZAorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBjb25zdW1lKHJlZ2V4cCkKKyAgICBpZiByZWdleHAKKyAgICAgIHBhcnNlRXJyb3Ig
dW5sZXNzIEB0b2tlbnNbQGlkeF0gPX4gcmVnZXhwCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJv
ciB1bmxlc3MgQGlkeCA9PSBAdG9rZW5zLmxlbmd0aAorICAgIGVuZAorICAgIEBpZHggKz0gMQor
ICBlbmQKKyAgCisgIGRlZiBza2lwTmV3TGluZQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0g
IlxuIgorICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJl
ZGljYXRlQXRvbQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm5vdCIKKyAgICAgIEBpZHggKz0g
MQorICAgICAgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAi
KCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJlc3VsdCA9IHBh
cnNlUHJlZGljYXRlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIp
IgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICJ0cnVlIgorICAgICAgcmVzdWx0ID0gVHJ1ZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAx
CisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJmYWxzZSIKKyAgICAg
IHJlc3VsdCA9IEZhbHNlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAor
ICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBTZXR0
aW5nLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmlu
ZykKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VF
cnJvcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZUFuZAorICAgIHJl
c3VsdCA9IHBhcnNlUHJlZGljYXRlQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImFu
ZCIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBp
ZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVB
dG9tCisgICAgICByZXN1bHQgPSBBbmQubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisg
ICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlCisgICAg
IyBzb21lIGV4YW1wbGVzIG9mIHByZWNlZGVuY2U6CisgICAgIyBub3QgYSBhbmQgYiAtPiAobm90
IGEpIGFuZCBiCisgICAgIyBhIGFuZCBiIG9yIGMgLT4gKGEgYW5kIGIpIG9yIGMKKyAgICAjIGEg
b3IgYiBhbmQgYyAtPiBhIG9yIChiIGFuZCBjKQorICAgIAorICAgIHJlc3VsdCA9IHBhcnNlUHJl
ZGljYXRlQW5kCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAib3IiCisgICAgICBjb2RlT3Jp
Z2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNr
aXBOZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgICByZXN1bHQg
PSBPci5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQK
KyAgZW5kCisgIAorICBkZWYgcGFyc2VWYXJpYWJsZQorICAgIGlmIGlzUmVnaXN0ZXIoQHRva2Vu
c1tAaWR4XSkKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPX4gRlBSX1BBVFRFUk4KKyAgICAgICAg
cmVzdWx0ID0gRlBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBA
dG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUmVnaXN0
ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJp
bmcpCisgICAgICBlbmQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAg
ICAgIHJlc3VsdCA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBA
dG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5k
CisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQWRkcmVz
cyhvZmZzZXQpCisgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAg
ICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgCisgICAgIyBUaHJl
ZSBwb3NzaWJpbGl0aWVzOgorICAgICMgW10gICAgICAgLT4gQWJzb2x1dGVBZGRyZXNzCisgICAg
IyBbYV0gICAgICAtPiBBZGRyZXNzCisgICAgIyBbYSxiXSAgICAtPiBCYXNlSW5kZXggd2l0aCBz
Y2FsZSA9IDEKKyAgICAjIFthLGIsY10gIC0+IEJhc2VJbmRleAorICAgIAorICAgIEBpZHggKz0g
MQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJl
dHVybiBBYnNvbHV0ZUFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIG9mZnNldCkKKyAgICBlbmQKKyAg
ICBhID0gcGFyc2VWYXJpYWJsZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICBy
ZXN1bHQgPSBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBhLCBvZmZzZXQpCisgICAgZWxzZQorICAg
ICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgIEBpZHggKz0g
MQorICAgICAgYiA9IHBhcnNlVmFyaWFibGUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0i
CisgICAgICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgMSwgb2Zm
c2V0KQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhd
ID09ICIsIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgWyIx
IiwgIjIiLCAiNCIsICI4Il0ubWVtYmVyPyBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBj
ID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
cGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0g
QmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCBjLCBvZmZzZXQpCisgICAgICBlbmQKKyAg
ICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VD
b2xvbkNvbG9uCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luCisgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNb
QGlkeF0KKyAgICBuYW1lcyA9IFtAdG9rZW5zW0BpZHhdLnN0cmluZ10KKyAgICBAaWR4ICs9IDEK
KyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICI6OiIKKyAgICAgIEBpZHggKz0gMQorICAgICAg
cGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIG5hbWVz
IDw8IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgICBy
YWlzZSBpZiBuYW1lcy5lbXB0eT8KKyAgICBbY29kZU9yaWdpbiwgbmFtZXNdCisgIGVuZAorICAK
KyAgZGVmIHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICBza2lwTmV3TGluZQorICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gIi0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIE5lZ0ltbWVkaWF0ZS5uZXco
QHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICBl
bHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQg
PSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0g
PT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSW50ZWdl
ciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faSkKKyAgICAgIEBpZHggKz0g
MQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAg
ICAgIGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBpZiBuYW1lcy5z
aXplID4gMQorICAgICAgICBTdHJ1Y3RPZmZzZXQuZm9yRmllbGQoY29kZU9yaWdpbiwgbmFtZXNb
MC4uLTJdLmpvaW4oJzo6JyksIG5hbWVzWy0xXSkKKyAgICAgIGVsc2UKKyAgICAgICAgVmFyaWFi
bGUuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lc1swXSkKKyAgICAgIGVuZAorICAgIGVsc2lmIGlz
UmVnaXN0ZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcGFyc2VWYXJpYWJsZQorICAgIGVsc2lmIEB0
b2tlbnNbQGlkeF0gPT0gInNpemVvZiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgY29kZU9yaWdp
biwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIFNpemVvZi5mb3JOYW1lKGNvZGVPcmln
aW4sIG5hbWVzLmpvaW4oJzo6JykpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVu
ZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICBza2lwTmV3TGluZQor
ICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhd
ID09ICIqIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgICAgQGlkeCArPSAx
CisgICAgICAgIHJlc3VsdCA9IE11bEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNv
ZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICAgIGVsc2UKKyAgICAg
ICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRl
ZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgIEB0b2tlbnNbQGlkeF0gPT0gIi0iIG9yIEB0b2tlbnNb
QGlkeF0gPT0gInNpemVvZiIgb3IgaXNJbnRlZ2VyKEB0b2tlbnNbQGlkeF0pIG9yIGlzVmFyaWFi
bGUoQHRva2Vuc1tAaWR4XSkKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uCisgICAg
c2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICB3aGlsZSBA
dG9rZW5zW0BpZHhdID09ICIrIiBvciBAdG9rZW5zW0BpZHhdID09ICItIgorICAgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiKyIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IEFk
ZEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFy
c2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IFN1YkltbWVkaWF0ZXMubmV3KEB0b2tlbnNb
QGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAg
ZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVu
ZAorICAKKyAgZGVmIHBhcnNlT3BlcmFuZChjb21tZW50KQorICAgIGlmIGNvdWxkQmVFeHByZXNz
aW9uCisgICAgICBleHByID0gcGFyc2VFeHByZXNzaW9uCisgICAgICBpZiBAdG9rZW5zW0BpZHhd
ID09ICJbIgorICAgICAgICBwYXJzZUFkZHJlc3MoZXhwcikKKyAgICAgIGVsc2UKKyAgICAgICAg
ZXhwcgorICAgICAgZW5kCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgIHBh
cnNlQWRkcmVzcyhJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgMCkpCisg
ICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBMYWJlbFJlZmVy
ZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMYWJlbC5mb3JOYW1lKEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAx
CisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAg
ICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luLCBMb2NhbExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5z
W0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UK
KyAgICAgIHBhcnNlRXJyb3IoY29tbWVudCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFy
c2VNYWNyb1ZhcmlhYmxlcworICAgIHNraXBOZXdMaW5lCisgICAgY29uc3VtZSgvXEFcKFxaLykK
KyAgICB2YXJpYWJsZXMgPSBbXQorICAgIGxvb3AgeworICAgICAgc2tpcE5ld0xpbmUKKyAgICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBicmVh
aworICAgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIHZhcmlh
YmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vu
c1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yCisgICAgICAg
IGVuZAorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yCisgICAgICBlbmQKKyAgICB9Cisg
ICAgdmFyaWFibGVzCisgIGVuZAorICAKKyAgZGVmIHBhcnNlU2VxdWVuY2UoZmluYWwsIGNvbW1l
bnQpCisgICAgZmlyc3RDb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAg
bGlzdCA9IFtdCisgICAgbG9vcCB7CisgICAgICBpZiAoQGlkeCA9PSBAdG9rZW5zLmxlbmd0aCBh
bmQgbm90IGZpbmFsKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAg
ICAgIGJyZWFrCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgIyBp
Z25vcmUKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJj
b25zdCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzVmFy
aWFibGUgQHRva2Vuc1tAaWR4XQorICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZvck5hbWUo
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAg
QGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIj0i
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YWx1ZSA9IHBhcnNlT3BlcmFuZCgid2hpbGUg
aW5zaWRlIG9mIGNvbnN0ICN7dmFyaWFibGUubmFtZX0iKQorICAgICAgICBsaXN0IDw8IENvbnN0
RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAg
ICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJlcnJvciIKKyAgICAgICAgbGlzdCA8PCBFcnJvci5u
ZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVs
c2lmIEB0b2tlbnNbQGlkeF0gPT0gImlmIgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgICBjb25zdW1lKC9cQSgo
dGhlbil8KFxuKSlcWi8pCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmVGhlbkVsc2Ug
PSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xB
KChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGlj
YXRlLmR1bXB9XCIiKSkKKyAgICAgICAgbGlzdCA8PCBpZlRoZW5FbHNlCisgICAgICAgIHdoaWxl
IEB0b2tlbnNbQGlkeF0gPT0gImVsc2lmIgorICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBza2lwTmV3
TGluZQorICAgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgICAgY29u
c3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAg
ICAgZWxzZUNhc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNl
U2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBc
ImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNl
ID0gZWxzZUNhc2UKKyAgICAgICAgICBpZlRoZW5FbHNlID0gZWxzZUNhc2UKKyAgICAgICAgZW5k
CisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gImVsc2UiCisgICAgICAgICAgQGlkeCArPSAx
CisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFov
LCAid2hpbGUgaW5zaWRlIG9mIGVsc2UgY2FzZSBmb3IgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwi
IikKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJy
b3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gImVuZCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgZW5kCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAg
Y29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlm
aWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZwor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxl
cworICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUg
b2YgbWFjcm8gI3tuYW1lfSIpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBsaXN0IDw8IE1h
Y3JvLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICBlbHNpZiBp
c0luc3RydWN0aW9uIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vu
cy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgICAg
IyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24sIGFuZCBpdCdzIHRoZSBsYXN0IG9uZS4KKyAgICAg
ICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAg
ICAgICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAg
ICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbi4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0
aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICMgSXQncyBkZWZpbml0ZWx5IGFuIGluc3RydWN0aW9uLCBhbmQg
aXQgaGFzIGF0IGxlYXN0IG9uZSBvcGVyYW5kLgorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAg
ICAgICAgICBlbmRPZlNlcXVlbmNlID0gZmFsc2UKKyAgICAgICAgICBsb29wIHsKKyAgICAgICAg
ICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGluc3RydWN0aW9u
ICN7bmFtZX0iKQorICAgICAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5z
LnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAg
ICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbiBhbmQgb2YgdGhlIHNlcXVlbmNlLgorICAg
ICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gdHJ1ZQorICAgICAgICAgICAgICBicmVhaworICAg
ICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgIyBIYXMg
YW5vdGhlciBvcGVyYW5kLgorICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVs
c2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhl
IGluc3RydWN0aW9uLgorICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQg
YSBjb21tYSwgbmV3bGluZSwgb3IgI3tmaW5hbH0gYWZ0ZXIgI3tvcGVyYW5kcy5sYXN0LmR1bXB9
IikKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgIH0KKyAgICAgICAgICBsaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgICBpZiBlbmRP
ZlNlcXVlbmNlCisgICAgICAgICAgICBicmVhaworICAgICAgICAgIGVuZAorICAgICAgICBlbmQK
KyAgICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmln
aW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlk
eF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICIoIgorICAgICAgICAgICMgTWFjcm8gaW52b2NhdGlvbi4KKyAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbG9vcCB7CisgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisg
ICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgorICAgICAgICAgICAgICAg
ICMgSXQncyBhIG1hY3JvIGxhbWJkYSEKKyAgICAgICAgICAgICAgICBjb2RlT3JpZ2luSW5uZXIg
PSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgICAg
ICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGFu
b255bW91cyBtYWNybyBwYXNzZWQgYXMgYXJndW1lbnQgdG8gI3tuYW1lfSIpCisgICAgICAgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwgTWFjcm8ubmV3KGNv
ZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBv
ZiBtYWNybyBjYWxsIHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAg
ICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAg
ICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGFyc2VFcnJvciAiVW5leHBl
Y3RlZCAje0B0b2tlbnNbQGlkeF0uc3RyaW5nLmluc3BlY3R9IHdoaWxlIHBhcnNpbmcgaW52b2Nh
dGlvbiBvZiBtYWNybyAje25hbWV9IgorICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICBlbmQKKyAgICAgICAgICBsaXN0IDw8IE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdp
biwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yICJF
eHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9IgorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlz
TGFiZWwgQHRva2Vuc1tAaWR4XSBvciBpc0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAg
ICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBA
dG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJv
ciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiOiIKKyAgICAgICAgIyBJdCdzIGEgbGFiZWwuCisg
ICAgICAgIGlmIGlzTGFiZWwgbmFtZQorICAgICAgICAgIGxpc3QgPDwgTGFiZWwuZm9yTmFtZShj
b2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbHNlCisgICAgICAgICAgbGlzdCA8PCBMb2NhbExh
YmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RpbmcgdGVybWluYWwg
I3tmaW5hbH0gI3tjb21tZW50fSIKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXco
Zmlyc3RDb2RlT3JpZ2luLCBsaXN0KQorICBlbmQKK2VuZAorCitkZWYgcGFyc2UodG9rZW5zKQor
ICBwYXJzZXIgPSBQYXJzZXIubmV3KHRva2VucykKKyAgcGFyc2VyLnBhcnNlU2VxdWVuY2Uobmls
LCAiIikKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdp
c3RlcnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
cmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACisjIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitHUFJTID0KKyAgWworICAgInQwIiwKKyAg
ICJ0MSIsCisgICAidDIiLAorICAgInQzIiwKKyAgICJ0NCIsCisgICAiY2ZyIiwKKyAgICJhMCIs
CisgICAiYTEiLAorICAgInIwIiwKKyAgICJyMSIsCisgICAic3AiCisgIF0KKworRlBSUyA9Cisg
IFsKKyAgICJmdDAiLAorICAgImZ0MSIsCisgICAiZnQyIiwKKyAgICJmdDMiLAorICAgImZ0NCIs
CisgICAiZnQ1IiwKKyAgICJmYTAiLAorICAgImZhMSIsCisgICAiZmEyIiwKKyAgICJmYTMiLAor
ICAgImZyIgorICBdCisKK1JFR0lTVEVSUyA9IEdQUlMgKyBGUFJTCisKK0dQUl9QQVRURVJOID0g
UmVnZXhwLm5ldygnXFxBKCgnICsgR1BSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCitGUFJfUEFU
VEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQor
CitSRUdJU1RFUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgUkVHSVNURVJTLmpvaW4o
Jyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3NldHRpbmdzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIxIEBACisjIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJl
ICJiYWNrZW5kcyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRp
b25zKGFzdCkgLT4gc2V0dGluZ3NDb21iaWF0aW9ucyAgICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIENvbXB1dGVzIGFuIGFycmF5IG9mIHNldHRpbmdzIG1hcHMsIHdoZXJlIGEgc2V0
dGluZ3MgbWFwIGNvbnN0aXR1dGVzICMKKyMgYSBjb25maWd1cmF0aW9uIGZvciB0aGUgYXNzZW1i
bHkgY29kZSBiZWluZyBnZW5lcmF0ZWQuIFRoZSBtYXAgICAgICAgIworIyBjb250YWlucyBrZXkg
dmFsdWUgcGFpcnMgd2hlcmUga2V5cyBhcmUgc2V0dGluZ3MgbmFtZXMgKHN0cmluZ3MpIGFuZCAj
CisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xlYW5zICh0cnVlIGZvciBlbmFibGVkLCBmYWxzZSBmb3Ig
ZGlzYWJsZWQpLiAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Rl
ZiBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBzZXR0aW5nc0NvbWJpbmF0aW9u
cyA9IFtdCisgIAorICBkZWYgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25z
LCBtYXBTb0ZhciwgcmVtYWluaW5nKQorICAgIGlmIHJlbWFpbmluZy5lbXB0eT8KKyAgICAgIHNl
dHRpbmdzQ29tYmluYXRpb25zIDw8IG1hcFNvRmFyCisgICAgICByZXR1cm4KKyAgICBlbmQKKyAg
ICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9
IHRydWUKKyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01h
cCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAg
ICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IGZhbHNlCisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNl
dHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmluZ1sxLi4tMV0pCisgIGVuZAorICAK
KyAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCB7fSwgKGFzdC5maWx0
ZXIoU2V0dGluZykudW5pcS5jb2xsZWN0e3x2fCB2Lm5hbWV9ICsgWyJYODYiLCAiQVJNdjciXSku
dW5pcSkKKyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zCitlbmQKKworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRp
bmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8IC4uLiB9ICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgRGV0ZXJtaW5lcyBpZiB0aGUgc2V0dGluZ3MgY29tYmluYXRpb24gaXMg
dmFsaWQsIGFuZCBpZiBzbywgY2FsbHMgICAgIworIyB0aGUgYmxvY2sgd2l0aCB0aGUgaW5mb3Jt
YXRpb24geW91IG5lZWQgdG8gZ2VuZXJhdGUgY29kZS4gICAgICAgICAgICAjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5n
cywgYXN0KQorICAjIENoZWNrIHdoaWNoIGFyY2hpdGVjdHVyZXMgdGhpcyBjb21iaW5hdG9yIGNs
YWltcyB0byBzdXBwb3J0LgorICBudW1DbGFpbWVkQmFja2VuZHMgPSAwCisgIHNlbGVjdGVkQmFj
a2VuZCA9IG5pbAorICBCQUNLRU5EUy5lYWNoIHsKKyAgICB8IGJhY2tlbmQgfAorICAgIGlzU3Vw
cG9ydGVkID0gY29uY3JldGVTZXR0aW5nc1tiYWNrZW5kXQorICAgIHJhaXNlIHVubGVzcyBpc1N1
cHBvcnRlZCAhPSBuaWwKKyAgICBudW1DbGFpbWVkQmFja2VuZHMgKz0gaWYgaXNTdXBwb3J0ZWQg
dGhlbiAxIGVsc2UgMCBlbmQKKyAgICBpZiBpc1N1cHBvcnRlZAorICAgICAgc2VsZWN0ZWRCYWNr
ZW5kID0gYmFja2VuZAorICAgIGVuZAorICB9CisgIAorICByZXR1cm4gaWYgbnVtQ2xhaW1lZEJh
Y2tlbmRzID4gMQorICAKKyAgIyBSZXNvbHZlIHRoZSBBU1QgZG93biB0byBhIGxvdy1sZXZlbCBm
b3JtIChubyBtYWNyb3Mgb3IgY29uZGl0aW9uYWxzKS4KKyAgbG93TGV2ZWxBU1QgPSBhc3QucmVz
b2x2ZVNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICB5aWVsZCBjb25jcmV0ZVNldHRp
bmdzLCBsb3dMZXZlbEFTVCwgc2VsZWN0ZWRCYWNrZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3Qp
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRp
bmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QsIHNldHRp
bmdzQ29tYmluYXRpb25zKSB7ICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBh
c3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAgICAgICAgICAgICAjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgRXhlY3V0ZXMgdGhlIGdpdmVuIGJsb2NrIGZvciBlYWNoIHZhbGlkIHNldHRpbmdz
IGNvbWJpbmF0aW9uIGluIHRoZSAgIworIyBzZXR0aW5ncyBtYXAuIFRoZSBhc3QgcGFzc2VkIGlu
dG8gdGhlIGJsb2NrIGlzIHJlc29sdmVkICAgICAgICAgICAgICAjCisjIChhc3QucmVzb2x2ZSkg
YWdhaW5zdCB0aGUgc2V0dGluZ3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBUaGUgZmlyc3QgZm9ybSB3aWxsIGNhbGwgY29tcHV0ZVNldHRp
bmdzQ29tYmluYXRpb25zKGFzdCkgZm9yIHlvdS4gICAjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworCitkZWYgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QsICpv
cHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zKQorICByYWlzZSBpZiBvcHRpb25hbFNldHRpbmdz
Q29tYmluYXRpb25zLnNpemUgPiAxCisgIAorICBpZiBvcHRpb25hbFNldHRpbmdzQ29tYmluYXRp
b25zLmVtcHR5PworICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gY29tcHV0ZVNldHRpbmdzQ29t
YmluYXRpb25zKGFzdCkKKyAgZWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gb3B0aW9u
YWxTZXR0aW5nc0NvbWJpYXRpb25zWzBdCisgIGVuZAorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlv
bnMuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGluZGV4IHwKKyAg
ICBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpIHsKKyAgICAgIHwgY29uY3JldGVT
ZXR0aW5nc18sIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICAgIHlpZWxkIGNvbmNyZXRlU2V0
dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgIH0KKyAgfQorZW5kCisKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGNwcFNldHRpbmdzVGVzdChjb25jcmV0
ZVNldHRpbmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyBSZXR1cm5zIHRoZSBDKysgY29kZSB1c2VkIHRvIHRlc3QgaWYgd2UgYXJlIGlu
IGEgY29uZmlndXJhdGlvbiB0aGF0ICAjCisjIGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBjb25j
cmV0ZSBzZXR0aW5ncy4gICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5n
cykKKyAgIiNpZiAiICsgY29uY3JldGVTZXR0aW5ncy50b19hLmNvbGxlY3R7CisgICAgfCBwYWly
IHwKKyAgICAoaWYgcGFpclsxXQorICAgICAgICIiCisgICAgIGVsc2UKKyAgICAgICAiISIKKyAg
ICAgZW5kKSArICJPRkZMSU5FX0FTTV8iICsgcGFpclswXQorICB9LmpvaW4oIiAmJiAiKQorZW5k
CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGlzQVNURXJyb25lb3VzKGFz
dCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBUZXN0cyB0byBzZWUgaWYgdGhlIEFTVCBjbGFpbXMgdGhhdCB0aGVy
ZSBpcyBhbiBlcnJvciAtIGkuZS4gaWYgdGhlICAjCisjIHVzZXIncyBjb2RlLCBhZnRlciBzZXR0
aW5ncyByZXNvbHV0aW9uLCBoYXMgRXJyb3Igbm9kZXMuICAgICAgICAgICAgICMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBpc0FTVEVycm9uZW91cyhhc3QpCisgIG5v
dCBhc3QuZmlsdGVyKEVycm9yKS5lbXB0eT8KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRW1pdHMgYSBj
aGVjayB0aGF0IGFzc2VydHMgdGhhdCB3ZSdyZSB1c2luZyB0aGUgZ2l2ZW4gY29uZmlndXJhdGlv
bi4gIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGFzc2VydENvbmZp
Z3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3Jl
dGVTZXR0aW5ncykKKyAgcHV0cyAiI2Vsc2UiCisgIHB1dHMgIiNlcnJvciBcIkNvbmZpZ3VyYXRp
b24gbWlzbWF0Y2guXCIiCisgIHB1dHMgIiNlbmRpZiIKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRp
bmdzLCBhc3QsIGJhY2tlbmQpIHsgICAgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGlu
Z3MsIGFzdCwgYmFja2VuZCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBFbWl0cyBhbGwgcmVsZXZhbnQgZ3VhcmRzIHRvIHNlZSBpZiB0aGUgY29u
ZmlndXJhdGlvbiBob2xkcyBhbmQgICAgICAjCisjIGNhbGxzIHRoZSBibG9jayBpZiB0aGUgY29u
ZmlndXJhdGlvbiBpcyBub3QgZXJyb25lb3VzLiAgICAgICAgICAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25j
cmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpCisgIHB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNy
ZXRlU2V0dGluZ3MpCisgIAorICBpZiBpc0FTVEVycm9uZW91cyhhc3QpCisgICAgcHV0cyAiI2Vy
cm9yIFwiSW52YWxpZCBjb25maWd1cmF0aW9uLlwiIgorICBlbHNpZiBub3QgV09SS0lOR19CQUNL
RU5EUy5pbmNsdWRlPyBiYWNrZW5kCisgICAgcHV0cyAiI2Vycm9yIFwiVGhpcyBiYWNrZW5kIGlz
IG5vdCBzdXBwb3J0ZWQgeWV0LlwiIgorICBlbHNlCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5n
cywgYXN0LCBiYWNrZW5kCisgIGVuZAorICAKKyAgcHV0cyAiI2VuZGlmIgorZW5kCisKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9u
cyhhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgIHwgY29u
Y3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9ICAgICAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIEVtaXRzIGd1YXJkIGNvZGVzIGZvciBhbGwgdmFsaWQg
Y29uZmlndXJhdGlvbnMsIGFuZCBjYWxscyB0aGUgYmxvY2sgICMKKyMgZm9yIHRob3NlIGNvbmZp
Z3VyYXRpb25zIHRoYXQgYXJlIHZhbGlkIGFuZCBub3QgZXJyb25lb3VzLiAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGVtaXRDb2RlSW5BbGxDb25m
aWd1cmF0aW9ucyhhc3QpCisgIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7
CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXggfAor
ICAgIHB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICAgeWllbGQgY29u
Y3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgcHV0cyAiI2Vu
ZGlmIgorICB9CitlbmQKKworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3RyYW5zZm9ybS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUyIEBA
CisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCisK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2ZVNldHRpbmdz
KHNldHRpbmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkg
SWZUaGVuRWxzZSBub2RlcyBieSAgICAgICAjCisjIHN1YnN0aXR1dGluZyBjb25jcmV0ZSBib29s
ZWFuIHZhbHVlcyBmb3IgZWFjaCBTZXR0aW5nLiAgICAgICAgICAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNo
aWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNz
IFRydWUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAor
ZW5kCisKK2NsYXNzIEZhbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAg
c2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nCisgIGRlZiByZXNvbHZlU2V0dGluZ3Mo
c2V0dGluZ3MpCisgICAgc2V0dGluZ3NbQG5hbWVdLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFz
cyBBbmQKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQucmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBhbmQgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBPcgorICBkZWYgcmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
LnZhbHVlIG9yIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUK
KyAgZW5kCitlbmQKKworY2xhc3MgTm90CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
CisgICAgKG5vdCBAY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2Rl
CisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykKKyAgICBpZiBAcHJlZGljYXRlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFs
dWUKKyAgICAgIEB0aGVuQ2FzZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZWxzZQor
ICAgICAgQGVsc2VDYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbmQKKyAgZW5k
CitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykK
KyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAg
ICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICBpZiBpdGVtLmlz
X2E/IFNlcXVlbmNlCisgICAgICAgIG5ld0xpc3QgKz0gaXRlbS5saXN0CisgICAgICBlbHNlCisg
ICAgICAgIG5ld0xpc3QgPDwgaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5l
dyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBub2RlLmRlbWFjcm9pZnkobWFjcm9zKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUuc3Vic3RpdHV0ZShtYXBwaW5n
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyBkZW1hY3JvaWZ5KCkgY29uc3RydWN0cyBhIG5ldyBBU1QgdGhhdCBkb2VzIG5v
dCBoYXZlIGFueSBNYWNybyAgICAgICAjCisjIG5vZGVzLCB3aGlsZSBzdWJzdGl0dXRlKCkgcmVw
bGFjZXMgVmFyaWFibGUgbm9kZXMgd2l0aCB0aGUgZ2l2ZW4gICAgICMKKyMgbm9kZXMgaW4gdGhl
IG1hcHBpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYg
ZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8Cisg
ICAgICBjaGlsZC5kZW1hY3JvaWZ5KG1hY3JvcykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1
YnN0aXR1dGUobWFwcGluZykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAg
ICAgIGNoaWxkLnN1YnN0aXR1dGUobWFwcGluZykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1
YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxk
IHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICB9CisgIGVuZAor
ZW5kCisKK2NsYXNzIE1hY3JvCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbXlNYXBw
aW5nID0ge30KKyAgICBtYXBwaW5nLmVhY2hfcGFpciB7CisgICAgICB8IGtleSwgdmFsdWUgfAor
ICAgICAgdW5sZXNzIEB2YXJpYWJsZXMuaW5jbHVkZT8ga2V5CisgICAgICAgIG15TWFwcGluZ1tr
ZXldID0gdmFsdWUKKyAgICAgIGVuZAorICAgIH0KKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8
IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobXlNYXBwaW5nKQorICAgIH0KKyAgZW5k
CitlbmQKKworY2xhc3MgVmFyaWFibGUKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBp
ZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2Vs
ZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBzdWJzdGl0
dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgaWYgbWFwcGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tz
ZWxmXQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3Mg
U2VxdWVuY2UKKyAgZGVmIHN1YnN0aXR1dGUoY29uc3RhbnRzKQorICAgIG5ld0xpc3QgPSBbXQor
ICAgIG15Q29uc3RhbnRzID0gY29uc3RhbnRzLmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAg
fCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gQ29uc3REZWNsCisgICAgICAgIG15Q29uc3Rh
bnRzW2l0ZW0udmFyaWFibGVdID0gaXRlbS52YWx1ZS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQor
ICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uc3Vic3RpdHV0ZShteUNvbnN0YW50
cykKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlz
dCkKKyAgZW5kCisgIAorICBkZWYgcmVuYW1lTGFiZWxzCisgICAgbWFwcGluZyA9IHt9CisgICAg
CisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBM
b2NhbExhYmVsCisgICAgICAgIG1hcHBpbmdbaXRlbV0gPSBMb2NhbExhYmVsLnVuaXF1ZQorICAg
ICAgZW5kCisgICAgfQorICAgIAorICAgIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgZW5k
CisgIAorICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbXlNYWNyb3MgPSBtYWNyb3MuZHVw
CisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBN
YWNybworICAgICAgICBteU1hY3Jvc1tpdGVtLm5hbWVdID0gaXRlbQorICAgICAgZW5kCisgICAg
fQorICAgIG5ld0xpc3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAg
ICAgIGlmIGl0ZW0uaXNfYT8gTWFjcm8KKyAgICAgICAgIyBJZ25vcmUuCisgICAgICBlbHNpZiBp
dGVtLmlzX2E/IE1hY3JvQ2FsbAorICAgICAgICBtYXBwaW5nID0ge30KKyAgICAgICAgbXlNeU1h
Y3JvcyA9IG15TWFjcm9zLmR1cAorICAgICAgICByYWlzZSAiQ291bGQgbm90IGZpbmQgbWFjcm8g
I3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG15TWFjcm9z
W2l0ZW0ubmFtZV0KKyAgICAgICAgcmFpc2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBj
YWxsIHRvICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBp
dGVtLm9wZXJhbmRzLnNpemUgPT0gbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQor
ICAgICAgICBpdGVtLm9wZXJhbmRzLnNpemUudGltZXMgeworICAgICAgICAgIHwgaWR4IHwKKyAg
ICAgICAgICBpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gVmFyaWFibGUgYW5kIG15TWFjcm9z
W2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jv
c1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbXlNYWNyb3NbaXRlbS5vcGVyYW5k
c1tpZHhdLm5hbWVdCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFy
aWFibGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNpZiBpdGVtLm9wZXJhbmRzW2lk
eF0uaXNfYT8gTWFjcm8KKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1l
XS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAg
bWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVd
LnZhcmlhYmxlc1tpZHhdXSA9IG5pbAorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVt
Lm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgIGVu
ZAorICAgICAgICB9CisgICAgICAgIG5ld0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5
LnN1YnN0aXR1dGUobWFwcGluZykuZGVtYWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMu
bGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uZGVtYWNyb2lmeShteU1h
Y3JvcykKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3
TGlzdCkuc3Vic3RpdHV0ZSh7fSkKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbnN0cnVj
dCBhIG5ldyBBU1QgdGhhdCBoYXMgb2Zmc2V0IHZhbHVlcyBpbnN0ZWFkIG9mIHN5bWJvbGljICAg
ICAgICMKKyMgb2Zmc2V0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAg
bWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlT2Zmc2V0
cyhvZmZzZXRzLCBzaXplcykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNl
dAorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgb2Zmc2V0c1tz
ZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXRzW3NlbGZdKQorICAg
IGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mCisg
IGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBzaXplc1tzZWxmXQor
ICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBzaXplc1tzZWxmXSkKKyAgICBlbHNlCisg
ICAgICBwdXRzICJDb3VsZCBub3QgZmluZCAje3NlbGYuaW5zcGVjdH0gaW4gI3tzaXplcy5rZXlz
Lmluc3BlY3R9IgorICAgICAgcHV0cyAic2l6ZXMgPSAje3NpemVzLmluc3BlY3R9IgorICAgICAg
c2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBub2RlLmZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUmVzb2x2ZSBjb25zdGFu
dCByZWZlcmVuY2VzIGFuZCBjb21wdXRlIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMuICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgZm9s
ZAorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuZm9sZAor
ICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAg
IEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJu
IHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVz
cyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBA
bGVmdC52YWx1ZSArIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRp
YXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEBy
aWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQor
ICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRp
YXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAtIEByaWdodC52YWx1ZSkKKyAgZW5kCitl
bmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQu
Zm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBs
ZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8g
SW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAqIEBy
aWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlCisgIGRlZiBmb2xk
CisgICAgQGNoaWxkID0gQGNoaWxkLmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGNoaWxk
LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLUBjaGlsZC52
YWx1ZSkKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
bm9kZS5yZXNvbHZlQWZ0ZXJTZXR0aW5ncyhvZmZzZXRzLCBzaXplcykgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbXBpbGUgYXNzZW1ibHkgYWdhaW5z
dCBhIHNldCBvZiBvZmZzZXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmUob2Zm
c2V0cywgc2l6ZXMpCisgICAgZGVtYWNyb2lmeSh7fSkucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywg
c2l6ZXMpLmZvbGQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NjggQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIHN1cHBv
cnRzOEJpdE9uWDg2CisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiLCAi
dDEiLCAiYTEiLCAicjEiLCAidDIiLCAidDMiCisgICAgICB0cnVlCisgICAgd2hlbiAidDQiLCAi
Y2ZyIgorICAgICAgZmFsc2UKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAi
LCAiYTAiLCAicjAiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAg
IiVhbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVheCIKKyAgICAgIHdoZW4gOmludAor
ICAgICAgICAiJWVheCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAg
IHdoZW4gInQxIiwgImExIiwgInIxIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRl
CisgICAgICAgICIlZGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZHgiCisgICAgICB3
aGVuIDppbnQKKyAgICAgICAgIiVlZHgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAg
ICBlbmQKKyAgICB3aGVuICJ0MiIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQor
ICAgICAgICAiJWNsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWN4IgorICAgICAgd2hl
biA6aW50CisgICAgICAgICIlZWN4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAg
ZW5kCisgICAgd2hlbiAidDMiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAg
ICAgICAgIiVibCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVieCIKKyAgICAgIHdoZW4g
OmludAorICAgICAgICAiJWVieCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVu
ZAorICAgIHdoZW4gInQ0IgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAg
ICAgICIlc2lsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNpIgorICAgICAgd2hlbiA6
aW50CisgICAgICAgICIlZXNpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5k
CisgICAgd2hlbiAiY2ZyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAg
ICAgICIlZGlsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWRpIgorICAgICAgd2hlbiA6
aW50CisgICAgICAgICIlZWRpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5k
CisgICAgd2hlbiAic3AiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAg
ICAgIiVzcGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc3AiCisgICAgICB3aGVuIDpp
bnQKKyAgICAgICAgIiVlc3AiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQK
KyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVy
YW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFz
cyBGUFJlZ2lzdGVySUQKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICByYWlzZSB1bmxlc3Mg
a2luZCA9PSA6ZG91YmxlCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZhMCIsICJm
ciIKKyAgICAgICIleG1tMCIKKyAgICB3aGVuICJmdDEiLCAiZmExIgorICAgICAgIiV4bW0xIgor
ICAgIHdoZW4gImZ0MiIsICJmYTIiCisgICAgICAiJXhtbTIiCisgICAgd2hlbiAiZnQzIiwgImZh
MyIKKyAgICAgICIleG1tMyIKKyAgICB3aGVuICJmdDQiCisgICAgICAiJXhtbTQiCisgICAgd2hl
biAiZnQ1IgorICAgICAgIiV4bW01IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisg
IGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5k
KX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgeDg2T3BlcmFuZChraW5k
KQorICAgICIkI3t2YWx1ZX0iCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAg
ICAiI3t2YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIHN1cHBvcnRz
OEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkK
KyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSkiCisgIGVuZAor
ICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisg
IGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAg
ICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje29mZnNl
dC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9LCAje2luZGV4Lng4Nk9wZXJhbmQoOmlu
dCl9LCAje3NjYWxlfSkiCisgIGVuZAorCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAg
ICIqI3t4ODZvcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRy
ZXNzCisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRl
ZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7YWRkcmVzcy52YWx1ZX0iCisgIGVuZAorCisgIGRl
ZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCitl
bmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAgZGVmIHg4NkxhYmVsCisgICAgc2FuaXRpemVM
YWJlbE5hbWUobmFtZSkKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgIHg4
NkxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UKKyAgZGVmIHg4
NkxhYmVsCisgICAgIl9fb2FfIituYW1lWzEuLi0xXQorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVy
YW5kKGtpbmQpCisgICAgeDg2TGFiZWwKKyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24K
KyAgZGVmIHg4Nk9wZXJhbmRzKCpraW5kcykKKyAgICByYWlzZSB1bmxlc3Mga2luZHMuc2l6ZSA9
PSBvcGVyYW5kcy5zaXplCisgICAgcmVzdWx0ID0gW10KKyAgICBraW5kcy5zaXplLnRpbWVzIHsK
KyAgICAgIHwgaWR4IHwKKyAgICAgIHJlc3VsdCA8PCBvcGVyYW5kc1tpZHhdLng4Nk9wZXJhbmQo
a2luZHNbaWR4XSkKKyAgICB9CisgICAgcmVzdWx0LmpvaW4oIiwgIikKKyAgZW5kCisKKyAgZGVm
IHg4NlN1ZmZpeChraW5kKQorICAgIGNhc2Uga2luZAorICAgIHdoZW4gOmJ5dGUKKyAgICAgICJi
IgorICAgIHdoZW4gOmhhbGYKKyAgICAgICJ3IgorICAgIHdoZW4gOmludAorICAgICAgImwiCisg
ICAgd2hlbiA6ZG91YmxlCisgICAgICAic2QiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBl
bmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBr
aW5kLCBudW1PcGVyYW5kcykKKyAgICBpZiBudW1PcGVyYW5kcyA9PSAzCisgICAgICBpZiBvcGVy
YW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChr
aW5kKX0iCisgICAgICBlbHNpZiBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAk
YXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7
b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNlCisgICAgICAgICRhc20u
cHV0cyAiXHRtb3Yje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtp
bmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgJGFzbS5wdXRz
ICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRz
WzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5w
dXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5k
bGVYODZPcChvcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bj
b2RlLCBraW5kLCBvcGVyYW5kcy5zaXplKQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTaGlm
dChvcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIG9yIG9w
ZXJhbmRzWzBdID09IFJlZ2lzdGVySUQuZm9yTmFtZShuaWwsICJ0MiIpCisgICAgICAkYXNtLnB1
dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR4
Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgICAgJGFzbS5w
dXRzICJcdCN7b3Bjb2RlfSAlY2wsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisg
ICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwg
JWVjeCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2RG91YmxlQnJhbmNoKGJy
YW5jaE9wY29kZSwgbW9kZSkKKyAgICBjYXNlIG1vZGUKKyAgICB3aGVuIDpub3JtYWwKKyAgICAg
ICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0s
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiA6cmV2ZXJzZQor
ICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICBlbHNlCisgICAg
ICByYWlzZSBtb2RlLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0am5lICN7b3Bl
cmFuZHNbMl0ueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJl
KG9wY29kZVN1ZmZpeCwga2luZCkKKyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUg
YW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDAgYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVy
SUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAg
ICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICBlbHNpZiBvcGVyYW5kc1sxXS5pc19hPyBJbW1lZGlhdGUgYW5k
IG9wZXJhbmRzWzFdLnZhbHVlID09IDAgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQg
YW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAg
JGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0Y21wI3t4ODZTdWZmaXgo
a2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludEJy
YW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShicmFuY2hP
cGNvZGVbMS4uLTFdLCBraW5kKQorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tv
cGVyYW5kc1syXS54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldChzZXRP
cGNvZGUsIG9wZXJhbmQpCisgICAgaWYgb3BlcmFuZC5zdXBwb3J0czhCaXRPblg4NgorICAgICAg
JGFzbS5wdXRzICJcdEB7c2V0T3Bjb2RlfSAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9Igor
ICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9LCAj
e29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJc
dHhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICAgICRhc20ucHV0
cyAiXHRAe3NldE9wY29kZX0gJWFsIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAlYWwsICVl
YXgiCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9
LCAlZWF4IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlU2V0
KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZJbnRDb21wYXJlKHNldE9wY29kZVszLi4t
MV0sIGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHNbMl0pCisgIGVu
ZAorICAKKyAgZGVmIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICB2YWx1ZSA9IG9wZXJhbmRzWzBd
CisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiAyCisgICAgICBtYXNrID0gSW1tZWRp
YXRlLm5ldyhjb2RlT3JpZ2luLCAtMSkKKyAgICB3aGVuIDMKKyAgICAgIG1hc2sgPSBvcGVyYW5k
c1sxXQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJFeHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMsIGJ1
dCBnb3QgI3tvcGVyYW5kcy5zaXplfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAor
ICAgIAorICAgIGlmIG1hc2suaXNfYT8gSW1tZWRpYXRlIGFuZCBtYXNrLnZhbHVlID09IC0xCisg
ICAgICBpZiB2YWx1ZS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHR0ZXN0
I3t4ODZTdWZmaXgoa2luZCl9ICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2
T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiXHRjbXAje3g4
NlN1ZmZpeChraW5kKX0gJDAsICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQK
KyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje21h
c2sueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5k
CisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkJyYW5jaFRlc3QoYnJhbmNoT3Bjb2RlLCBraW5k
KQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNv
ZGV9ICN7b3BlcmFuZHMubGFzdC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4
NlNldFRlc3Qoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICBo
YW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kcy5sYXN0KQorICBlbmQKKyAgCisgIGRlZiBo
YW5kbGVYODZPcEJyYW5jaChvcGNvZGUsIGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVY
ODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAg
IGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJh
bmRzWzNdCisgICAgd2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBl
bHNlCisgICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0
I3ticmFuY2hPcGNvZGV9ICN7anVtcFRhcmdldC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVm
IGhhbmRsZVg4NlN1YkJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHMu
c2l6ZSA9PSA0IGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgJGFzbS5wdXRz
ICJcdG5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0
cyAiXHRhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3Bl
cmFuZHMoInN1YiIsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGVuZAorICAgIGNhc2Ug
b3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNd
CisgICAgd2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisg
ICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFu
Y2hPcGNvZGV9ICN7anVtcFRhcmdldC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGxvd2Vy
WDg2CisgICAgY2FzZSBvcGNvZGUKKyAgICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAgICBpZiBv
cGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAg
ICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlz
ZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICBpZiBvcGVyYW5k
c1swXS52YWx1ZSA9PSAwCisgICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRz
WzJdCisgICAgICAgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgIGVu
ZAorICAgICAgICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRzICJcdGxlYWwgI3tvcGVyYW5kc1sw
XS52YWx1ZX0oI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6
ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVu
bGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBv
cGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHRsZWFsICgj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAg
ICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAg
ICAgICRhc20ucHV0cyAiXHRhZGRsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAg
ICBlbmQKKyAgICAgIGVuZAorICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgIGhhbmRsZVg4
Nk9wKCJhbmRsIiwgOmludCkKKyAgICB3aGVuICJsc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hp
ZnQoInNhbGwiLCA6aW50KQorICAgIHdoZW4gIm11bGkiCisgICAgICBpZiBvcGVyYW5kcy5zaXpl
ID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAkYXNtLnB1dHMg
Ilx0aW11bGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50LCA6aW50KX0iCisgICAgICBlbHNlCisg
ICAgICAgIGhhbmRsZVg4Nk9wKCJpbXVsbCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJu
ZWdpIgorICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAg
d2hlbiAibm90aSIKKyAgICAgICRhc20ucHV0cyAiXHRub3RsICN7eDg2T3BlcmFuZHMoOmludCl9
IgorICAgIHdoZW4gIm9yaSIsICJvcnAiCisgICAgICBoYW5kbGVYODZPcCgib3JsIiwgOmludCkK
KyAgICB3aGVuICJyc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNhcmwiLCA6aW50KQor
ICAgIHdoZW4gInVyc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNocmwiLCA6aW50KQor
ICAgIHdoZW4gInN1YmkiLCAic3VicCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQg
b3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgaGFuZGxlWDg2T3AoInN1YmwiLCA6aW50KQor
ICAgICAgZW5kCisgICAgd2hlbiAieG9yaSIsICJ4b3JwIgorICAgICAgaGFuZGxlWDg2T3AoInhv
cmwiLCA6aW50KQorICAgIHdoZW4gImxvYWRpIiwgInN0b3JlaSIsICJsb2FkcCIsICJzdG9yZXAi
CisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAg
ICB3aGVuICJsb2FkYiIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
d2hlbiAibG9hZGgiCisgICAgICAkYXNtLnB1dHMgIlx0bW92endsICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6aGFsZil9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdo
ZW4gInN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZiICN7eDg2T3BlcmFuZHMoOmJ5dGUs
IDpieXRlKX0iCisgICAgd2hlbiAibG9hZGQiLCAibW92ZWQiLCAic3RvcmVkIgorICAgICAgJGFz
bS5wdXRzICJcdG1vdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdo
ZW4gImFkZGQiCisgICAgICAkYXNtLnB1dHMgIlx0YWRkc2QgI3t4ODZPcGVyYW5kcyg6ZG91Ymxl
LCA6ZG91YmxlKX0iCisgICAgd2hlbiAiZGl2ZCIKKyAgICAgICRhc20ucHV0cyAiXHRkaXZzZCAj
e3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJzdWJkIgorICAgICAg
JGFzbS5wdXRzICJcdHN1YnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAg
IHdoZW4gIm11bGQiCisgICAgICAkYXNtLnB1dHMgIlx0bXVsc2QgI3t4ODZPcGVyYW5kcyg6ZG91
YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3FydGQiCisgICAgICAkYXNtLnB1dHMgIlx0c3Fy
dHNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiY2kyZCIKKyAgICAgICRhc20ucHV0cyAiXHRj
dnRzaTJzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImJkZXEiCisgICAgICBpc1Vub3JkZXJlZCA9
IExvY2FsTGFiZWwudW5pcXVlCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmln
aW4sIGlzVW5vcmRlcmVkKS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tMYWJl
bFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgb3BlcmFuZHNbMl0pLng4NkxhYmVsfSIKKyAgICAg
IGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkbmVxIgorICAgICAgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKCJqbmUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3QiCisgICAgICBo
YW5kbGVYODZEb3VibGVCcmFuY2goImphIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGd0ZXEiCisg
ICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRs
dCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6cmV2ZXJzZSkKKyAgICB3aGVu
ICJiZGx0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIsIDpyZXZlcnNlKQor
ICAgIHdoZW4gImJkZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamUiLCA6bm9y
bWFsKQorICAgIHdoZW4gImJkbmVxdW4iCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwu
dW5pcXVlCisgICAgICBpc0VxdWFsID0gTG9jYWxMYWJlbC51bmlxdWUKKyAgICAgICRhc20ucHV0
cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0anAgI3tMYWJl
bFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4NkxhYmVsfSIKKyAgICAg
ICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc0VxdWFs
KS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICAgICRhc20u
cHV0cyAiXHRqbXAgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICBpc0VxdWFsLmxvd2Vy
KCJYODYiKQorICAgIHdoZW4gImJkZ3R1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgi
amIiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJs
ZUJyYW5jaCgiamJlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdHVuIgorICAgICAgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKCJqYiIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRsdGVxdW4iCisgICAg
ICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYnRkMmki
CisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1
dHMgIlx0Y21wbCAkMHg4MDAwMDAwMCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgICAgJGFzbS5wdXRzICJcdGplICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgIHdoZW4g
InRkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hl
biAiYmNkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAkYXNtLnB1dHMgIlx0dGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje29w
ZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnRzaTJzZCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHR1Y29t
aXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFz
bS5wdXRzICJcdGpwICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJc
dGpuZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJtb3ZkeiIKKyAgICAgICRh
c20ucHV0cyAiXHR4b3JwZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gInBvcCIKKyAgICAgICRh
c20ucHV0cyAiXHRwb3AgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVu
ICJwdXNoIgorICAgICAgJGFzbS5wdXRzICJcdHB1c2ggI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgdW5sZXNz
IG9wZXJhbmRzWzBdID09IG9wZXJhbmRzWzFdCisgICAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7
eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgZW5kCisgICAgd2hlbiAibm9wIgorICAg
ICAgJGFzbS5wdXRzICJcdG5vcCIKKyAgICB3aGVuICJiaWVxIiwgImJwZXEiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImplIiwgOmludCkKKyAgICB3aGVuICJiaW5lcSIsICJicG5lcSIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmludCkKKyAgICB3aGVuICJiaWEiLCAiYnBh
IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDppbnQpCisgICAgd2hlbiAiYmlhZXEi
LCAiYnBhZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphZSIsIDppbnQpCisgICAgd2hl
biAiYmliIiwgImJwYiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6aW50KQorICAg
IHdoZW4gImJpYmVxIiwgImJwYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6
aW50KQorICAgIHdoZW4gImJpZ3QiLCAiYnBndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgi
amciLCA6aW50KQorICAgIHdoZW4gImJpZ3RlcSIsICJicGd0ZXEiCisgICAgICBoYW5kbGVYODZJ
bnRCcmFuY2goImpnZSIsIDppbnQpCisgICAgd2hlbiAiYmlsdCIsICJicGx0IgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqbCIsIDppbnQpCisgICAgd2hlbiAiYmlsdGVxIiwgImJwbHRlcSIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6aW50KQorICAgIHdoZW4gImJiZXEi
CisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJuZXEi
CisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDpieXRlKQorICAgIHdoZW4gImJiYSIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmFlcSIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiIgor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDpieXRlKQorICAgIHdoZW4gImJiYmVxIgor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0Igor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDpieXRlKQorICAgIHdoZW4gImJiZ3RlcSIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdCIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0ZXEi
CisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsdGVxIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRp
byIsICJidHBvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6aW50KQorICAgIHdo
ZW4gImJ0aXMiLCAiYnRwcyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmludCkK
KyAgICB3aGVuICJidGl6IiwgImJ0cHoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIs
IDppbnQpCisgICAgd2hlbiAiYnRpbnoiLCAiYnRwbnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hU
ZXN0KCJqbnoiLCA6aW50KQorICAgIHdoZW4gImJ0Ym8iCisgICAgICBoYW5kbGVYODZCcmFuY2hU
ZXN0KCJqbyIsIDpieXRlKQorICAgIHdoZW4gImJ0YnMiCisgICAgICBoYW5kbGVYODZCcmFuY2hU
ZXN0KCJqcyIsIDpieXRlKQorICAgIHdoZW4gImJ0YnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hU
ZXN0KCJqeiIsIDpieXRlKQorICAgIHdoZW4gImJ0Ym56IgorICAgICAgaGFuZGxlWDg2QnJhbmNo
VGVzdCgiam56IiwgOmJ5dGUpCisgICAgd2hlbiAiam1wIgorICAgICAgJGFzbS5wdXRzICJcdGpt
cCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiYWRkaW8i
LCAiYmFkZHBvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZCIsICJqbyIsIDppbnQpCisg
ICAgd2hlbiAiYmFkZGlzIiwgImJhZGRwcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGQi
LCAianMiLCA6aW50KQorICAgIHdoZW4gImJhZGRpeiIsICJiYWRkcHoiCisgICAgICBoYW5kbGVY
ODZPcEJyYW5jaCgiYWRkIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJiYWRkaW56IiwgImJhZGRw
bnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkIiwgImpueiIsIDppbnQpCisgICAgd2hl
biAiYnN1YmlvIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbyIsIDppbnQpCisgICAgd2hl
biAiYnN1YmlzIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqcyIsIDppbnQpCisgICAgd2hl
biAiYnN1Yml6IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqeiIsIDppbnQpCisgICAgd2hl
biAiYnN1YmlueiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam56IiwgOmludCkKKyAgICB3
aGVuICJibXVsaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgibXVsIiwgImpvIiwgOmludCkK
KyAgICB3aGVuICJibXVsaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgibXVsIiwgImpzIiwg
OmludCkKKyAgICB3aGVuICJibXVsaXoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgibXVsIiwg
Imp6IiwgOmludCkKKyAgICB3aGVuICJibXVsaW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2go
Im11bCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJvcmlvIgorICAgICAgaGFuZGxlWDg2T3BC
cmFuY2goIm9yIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJib3JpcyIKKyAgICAgIGhhbmRsZVg4
Nk9wQnJhbmNoKCJvciIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXoiCisgICAgICBoYW5k
bGVYODZPcEJyYW5jaCgib3IiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJvcmlueiIKKyAgICAg
IGhhbmRsZVg4Nk9wQnJhbmNoKCJvciIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJyZWFrIgor
ICAgICAgJGFzbS5wdXRzICJcdGludCAkMyIKKyAgICB3aGVuICJjYWxsIgorICAgICAgJGFzbS5w
dXRzICJcdGNhbGwgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hl
biAicmV0IgorICAgICAgJGFzbS5wdXRzICJcdHJldCIKKyAgICB3aGVuICJjaWVxIiwgImNwZXEi
CisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRlIiwgOmludCkKKyAgICB3aGVuICJj
aW5lcSIsICJjcG5lcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldG5lIiwgOmlu
dCkKKyAgICB3aGVuICJjaWEiLCAiY3BhIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgi
c2V0YSIsIDppbnQpCisgICAgd2hlbiAiY2lhZXEiLCAiY3BhZXEiCisgICAgICBoYW5kbGVYODZJ
bnRDb21wYXJlU2V0KCJzZXRhZSIsIDppbnQpCisgICAgd2hlbiAiY2liIiwgImNwYiIKKyAgICAg
IGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGIiLCA6aW50KQorICAgIHdoZW4gImNpYmVxIiwg
ImNwYmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YmUiLCA6aW50KQorICAg
IHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGci
LCA6aW50KQorICAgIHdoZW4gImNpZ3RlcSIsICJjcGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRD
b21wYXJlU2V0KCJzZXRnZSIsIDppbnQpCisgICAgd2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAg
aGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bCIsIDppbnQpCisgICAgd2hlbiAiY2lsdGVxIiwg
ImNwbHRlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGxlIiwgOmludCkKKyAg
ICB3aGVuICJ0aW8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmludCkKKyAgICB3
aGVuICJ0aXMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmludCkKKyAgICB3aGVu
ICJ0aXoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmludCkKKyAgICB3aGVuICJ0
aW56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6aW50KQorICAgIHdoZW4gInRi
byIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6Ynl0ZSkKKyAgICB3aGVuICJ0YnMi
CisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmJ5dGUpCisgICAgd2hlbiAidGJ6Igor
ICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDpieXRlKQorICAgIHdoZW4gInRibnoiCisg
ICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDpieXRlKQorICAgIHdoZW4gInBlZWsiCisg
ICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzBdLnZhbHVlICogNH0oJWVzcCksICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicG9rZSIKKyAgICAgICRh
c20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFu
ZHNbMV0udmFsdWUgKiA0fSglZXNwKSIKKyAgICB3aGVuICJjZHFpIgorICAgICAgJGFzbS5wdXRz
ICJcdGNkcSIKKyAgICB3aGVuICJpZGl2aSIKKyAgICAgICRhc20ucHV0cyAiXHRpZGl2bCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImZpaTJkIgorICAgICAgJGFz
bS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5k
c1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHBz
bGxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cG9yICV4bW03LCAje29wZXJhbmRz
WzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImZkMmlpIgorICAgICAgJGFzbS5w
dXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRw
c3JscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNkICV4bW03LCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQgb3Bj
b2RlOiAje29wY29kZX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1Z2dlcjsKICAg
ICBjbGFzcyBFdmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOworICAg
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2Nr
OwogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwogCkBAIC0zMTksNiArMzIwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDogcHVibGljIFNj
cmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7
CiAKQEAgLTM4NCw2ICszODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xh
c3MgUHJvZ3JhbUV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAg
ICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNDUzLDYgKzQ1Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIFNj
cmlwdEV4ZWN1dGFibGUgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlw
ZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAog
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIAogICAgIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdy
aXRlQmFycmllcjxVbmtub3duPiB7CiAgICAgICAgIFNwYXJzZUFycmF5RW50cnkoKSA6IGF0dHJp
YnV0ZXMoMCkge30KQEAgLTEwNCw2ICsxMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9Owog
CiAgICAgY2xhc3MgSlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNz
IFdhbGtlcjsKIAogICAgIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsMTAgQEAKIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0gICAgY2xhc3MgU3RydWN0
dXJlOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0
eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CisgICAgY2xhc3MgU3Ry
dWN0dXJlOwogCiAgICAgZW51bSBFbnVtZXJhdGlvbk1vZGUgewogICAgICAgICBFeGNsdWRlRG9u
dEVudW1Qcm9wZXJ0aWVzLApAQCAtMTY0LDYgKzE2NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVj
U3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBw
cml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAg
ICAgICAKICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsKICAgICAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDEwNDQyOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblBy
b3RvdHlwZTsKICAgICBjbGFzcyBKU0FjdGl2YXRpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4
ZWN1dGFibGU7CiAgICAgY2xhc3MgU291cmNlQ29kZTsKICAgICBuYW1lc3BhY2UgREZHIHsKQEAg
LTE0MCw2ICsxNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAg
IGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMg
SlNWYWx1ZSBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRp
ZmllciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDggQEAg
SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgICwga2V5d29yZHMo
YWRvcHRQdHIobmV3IEtleXdvcmRzKHRoaXMpKSkKICAgICAsIGludGVycHJldGVyKDApCiAgICAg
LCBoZWFwKHRoaXMsIGhlYXBTaXplKQorICAgICwganNBcnJheUNsYXNzSW5mbygmSlNBcnJheTo6
c19pbmZvKQorICAgICwganNGaW5hbE9iamVjdENsYXNzSW5mbygmSlNGaW5hbE9iamVjdDo6c19p
bmZvKQogI2lmIEVOQUJMRShERkdfSklUKQogICAgICwgc2l6ZU9mTGFzdFNjcmF0Y2hCdWZmZXIo
MCkKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTUgQEAKICNk
ZWZpbmUgSlNHbG9iYWxEYXRhX2gKIAogI2luY2x1ZGUgIkNhY2hlZFRyYW5zY2VuZGVudGFsRnVu
Y3Rpb24uaCIKLSNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2VD
YWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFw
LmgiCi0jaW5jbHVkZSAiU3Ryb25nLmgiCisjaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVk
ZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTnVtZXJpY1N0
cmluZ3MuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIK
ICNpbmNsdWRlICJUZXJtaW5hdG9yLmgiCiAjaW5jbHVkZSAiVGltZW91dENoZWNrZXIuaCIKICNp
bmNsdWRlICJXZWFrUmFuZG9tLmgiCkBAIC02NSw2ICs2NSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNz
IEtleXdvcmRzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBO
YXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFBhcnNlckFyZW5hOwogICAgIGNsYXNzIFJlZ0V4
cENhY2hlOwpAQCAtMjQ4LDYgKzI0OSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSGVh
cCBoZWFwOwogCiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uOworCisgICAgICAgIGNvbnN0IENs
YXNzSW5mbyogY29uc3QganNBcnJheUNsYXNzSW5mbzsKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZv
KiBjb25zdCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAg
ICAgUmV0dXJuQWRkcmVzc1B0ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBo
b3N0Q2FsbFJldHVyblZhbHVlOwpAQCAtMzUyLDYgKzM1Nyw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
I3VuZGVmIHJlZ2lzdGVyVHlwZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAg
SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsK
ICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsK
ICAgICAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDQ0MjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0
aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxD
b2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5h
dGl2ZUVycm9yQ29uc3RydWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBj
bGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKQEAgLTMzNSw2ICszMzYsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyosIGlu
dCBjb3VudCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVzZXQgaW50
byBpbml0LgogICAgICAgICB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CiAgICAgICAg
IHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBI
YXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgY2xhc3MgUHJvcGVy
dHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwpAQCAtMjYwLDYgKzI2
MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7CiAKICAgICBwcml2YXRl
OgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAK
ICAgICAgICAgLy8gTm9ib2R5IHNob3VsZCBldmVyIGFzayBhbnkgb2YgdGhlc2UgcXVlc3Rpb25z
IG9uIHNvbWV0aGluZyBhbHJlYWR5IGtub3duIHRvIGJlIGEgSlNPYmplY3QuCiAgICAgICAgIHVz
aW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXI7CiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNH
ZXR0ZXJTZXR0ZXI7CkBAIC0zNzEsNiArMzc0LDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxP
YmplY3RfaW5saW5lU3RvcgogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0IEpTRmluYWxPYmplY3QoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgICAgIDogSlNPYmpl
Y3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAg
Y2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAg
Y2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBm
cmllbmQgY2xhc3MgSklUOwpAQCAtOTYsNiArOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVf
dCBudW1DYWNoZWFibGVTbG90KTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBKU1N0cmluZzsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKICAg
ICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsKQEAgLTI0MSw2ICsyNDIsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgcmVzb2x2ZVJv
cGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZTgo
TENoYXIqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFyKikg
Y29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5o
CShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNlcyBN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkIHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJsZS4K
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8PCAx
OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEgPDwg
MjsKQEAgLTg3LDYgKzg5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHBy
aXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
ICAgIAogICAgICAgICBib29sIGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3QgeyBB
U1NFUlQoZmxhZyA8PSAoMSA8PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAgICAg
ICBib29sIGlzU2V0T25GbGFnczIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+
PSAoMSA8PCA4KSk7IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJl
dmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFi
bGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEyIEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFJl
Z2lzdGVyOwogCiAgICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBK
U05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY29wZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY29wZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xv
YmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZp
c2l0b3I7CiAgICAgCkBAIC05MSw2ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
dGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0
ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAg
CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW47CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5
RGF0YTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZv
IHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25z
dCBDbGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYpOwogICAgICAg
ICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9u
IDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWlu
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU3RydWN0dXJlOwog
CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlNDZWxsIHsKQEAgLTc0LDYgKzc1
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBT
dHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxh
dGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTE2LDYgKzkxNiwxMiBAQAogI2RlZmluZSBFTkFC
TEVfSklUIDEKICNlbmRpZgogCisvKiBPbiBzb21lIG9mIHRoZSBwbGF0Zm9ybXMgd2hlcmUgd2Ug
aGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNvIGhhdmUgdGhlIAorICAgbG93LWxldmVsIGludGVy
cHJldGVyLiAqLworI2lmIEVOQUJMRShKSVQpICYmIFBMQVRGT1JNKE1BQykgJiYgVVNFKEpTVkFM
VUUzMl82NCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQo
RU5BQkxFX0RGR19KSVQpICYmIEVOQUJMRShKSVQpCiAvKiBFbmFibGUgdGhlIERGRyBKSVQgb24g
WDg2IGFuZCBYODZfNjQuICBPbmx5IHRlc3RlZCBvbiBNYWMgYW5kIEdOVS9MaW51eC4gKi8KICNp
ZiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpICYmIChQTEFURk9STShNQUMpIHx8IE9TKExJTlVY
KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAko
cmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpCiAvLyBMYW5kaW5nIHRoZSBmaWxlIG1vdmVzIGluIG9u
ZSBwYXRjaCwgd2lsbCBmb2xsb3cgb24gd2l0aCBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgbmFtZXNw
YWNlcy4KIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRv
cjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBz
dHJ1Y3QgSWRlbnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yOwogc3RydWN0IElkZW50aWZpZXJM
Q2hhckZyb21VQ2hhclRyYW5zbGF0b3I7CiB9CkBAIC03MCw3ICs3MSw4IEBAIGNsYXNzIFN0cmlu
Z0ltcGwgewogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFu
c2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAg
ICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7Ci0KKyAgICBmcmllbmQgY2xhc3MgSlND
OjpMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiBwcml2YXRlOgogICAgIGVudW0gQnVmZmVy
T3duZXJzaGlwIHsKICAgICAgICAgQnVmZmVySW50ZXJuYWwsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121744</attachid>
            <date>2012-01-09 16:00:49 -0800</date>
            <delta_ts>2012-01-09 17:29:19 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_5.diff</filename>
            <type>text/plain</type>
            <size>275693</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0NTAyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc5IEBA
CisyMDEyLTAxLTA5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
SlNDIHNob3VsZCBiZSBhIHRyaXBsZS10aWVyIFZNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAw
Nzk2OTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAor
ICAgICAgICBXT1JLIElOIFBST0dSRVNTLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBi
eXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKiBoZWFwL0FsbG9jYXRpb25TcGFjZS5oOgorICAg
ICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAqIGludGVycHJldGVyL1Jl
Z2lzdGVyRmlsZS5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9M
TEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAoSlNDOjpMTElu
dDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAgICAg
IChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50RXhj
ZXB0aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuVG9UaHJvdyk6
CisgICAgICAgIChKU0M6OkxMSW50OjpjYWxsVG9UaHJvdyk6CisgICAgICAgICogbGxpbnQvTExJ
bnRFeGNlcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50SGVscGVycy5jcHA6
IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfSEVMUEVSX0RFQ0wpOgorICAgICAg
ICAqIGxsaW50L0xMSW50SGVscGVycy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9m
ZmxpbmVBc21Db25maWcuaDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6
ZHVtbXkpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc206IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmg6IEFkZGVkLgor
ICAgICAgICAqIG9mZmxpbmVhc206IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXJtdjcu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXNtLnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL2FzdC5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9iYWNrZW5k
cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFj
dG9yLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYjogQWRk
ZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYjog
QWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9vZmZzZXRzLnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL3BhcnNlci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9yZWdp
c3RlcnMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2V0dGluZ3MucmI6IEFkZGVk
LgorICAgICAgICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBBZGRlZC4KKyAgICAgICAgKiBv
ZmZsaW5lYXNtL3g4Ni5yYjogQWRkZWQuCisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6
CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRh
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAg
ICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9K
U1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAqIHJ1
bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5o
OgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1
Y3R1cmVDaGFpbi5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi90
ZXh0L1N0cmluZ0ltcGwuaDoKKwogMjAxMi0wMS0wOSAgQWRhbSBUcmVhdCAgPGF0cmVhdEByaW0u
Y29tPgogCiAgICAgICAgIExvZyBpcyBhIGxpdHRsZSB0byB2ZXJib3NlIGZvciBibGFja2JlcnJ5
IHBvcnQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShy
ZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDA2
LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDExLCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtNjAsNiArNjAsNyBAQCBhbGwgOiBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAog
ICAgIFN0cmluZ1Byb3RvdHlwZS5sdXQuaCBcCiAgICAgZG9jcy9ieXRlY29kZS5odG1sIFwKKyAg
ICBMTEludEFzc2VtYmx5LmguUEhPTlkgXAogIwogCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNz
ZXMKQEAgLTEwNCwzICsxMDUsMTEgQEAgSGVhZGVyRGV0ZWN0aW9uLmggOgogCWVjaG8gPiAkQAog
CiBlbmRpZgorCisjIEFzc2VtYmx5IGZvciB0aGUgTG93TGV2ZWxJbnRlcnByZXRlcgorCisjIFRo
aXMgYnVpbGRzIGV2ZXJ5IHRpbWUgYmVjYXVzZSB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBkZXNj
cmliZQorIyB0aGUgZGVwZW5kZW5jaWVzIHVzaW5nIG1ha2UuIEluc3RlYWQsIHRoZSBhc3NlbWJs
ZXIgd2lsbCBkZWNpZGUgb24KKyMgaXRzIG93biB3aGV0aGVyIG9yIG5vdCBpdCBkaWQgYW55dGhp
bmcgdGhhdCB3b3VsZCBsZWFkIHRvIGEgY2hhbmdlLgorTExJbnRBc3NlbWJseS5oLlBIT05ZOgor
CXJ1YnkgJChKYXZhU2NyaXB0Q29yZSkvb2ZmbGluZWFzbS9hc20ucmIgJChKYXZhU2NyaXB0Q29y
ZSkvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJChCVUlMVF9QUk9EVUNUU19ESVIpL0pT
Q0xMSW50T2Zmc2V0c0V4dHJhY3RvciA+IExMSW50QXNzZW1ibHkuaApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC03LDYgKzcsMTUgQEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdh
dGVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQg
T2Zmc2V0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29u
ZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovOwor
CQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVy
YXRlIERlcml2ZWQgU291cmNlcyAqLywKKwkJCSk7CisJCQluYW1lID0gIkxMSW50IE9mZnNldHMi
OworCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKIAkJNjVGQjNGNjYw
OUQxMUU5MTAwRjQ5REVCIC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEFn
Z3JlZ2F0ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2NUZCM0Y3NzA5RDEx
RUJEMDBGNDlERUIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVU
YXJnZXQgIkRlcml2ZWQgU291cmNlcyIgKi87CkBAIC0xNCw2ICsyMyw5IEBACiAJCQkJNjVGQjNG
NjUwOUQxMUU5MTAwRjQ5REVCIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk1
RDM1REVFMTBDN0MxNDBCMDA4NjQ4QjIgLyogR2VuZXJhdGUgRFRyYWNlIGhlYWRlciAqLywKIAkJ
CSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8q
IFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJj
ZXMiOwogCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJfTsKQEAgLTYwLDYg
KzcyLDE1IEBACiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDMxNzM2
MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIg
LyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MzE0
QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklU
RXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTElu
dEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBBNDE0QkE3
RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhl
bHBlcnMuY3BwICovOyB9OworCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxw
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2
ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcy
IC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExM
SW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAq
LzsgfTsKKwkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNTE0QkJCMTY5
MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZs
aW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0Njgw
Q0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzcxNEJCQjE2OTAwQkZF
MjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovOyB9OworCQkwRjQ2ODBDRDE0QkJCMTdE
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xl
dmVsSW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFs
aXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1
RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYyMDE3NDE0M0ZD
RDMzMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYyMDE3MjE0M0ZDRDJGMDA2OEI3N0MgLyog
REZHVmFyaWFibGVBY2Nlc3NEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAxNzUxNDNGQ0QzNzAwNjhCNzdDIC8qIERGR09wZXJhbmRz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYyMDE3
MTE0M0ZDRDJGMDA2OEI3N0MgLyogREZHT3BlcmFuZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzYwLDcgKzM4MSw3IEBACiAJCTg2Qjk5QUUz
MTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUUxMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJp
bmdCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRTEzOEUzODFCMDA1
NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87IH07CiAJCTg2QkIwOUMxMTM4RTM4MUIwMDU2NzAy
RiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oICovOyB9Owot
CQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIz
REY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyB9OworCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RG
NTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzU2
OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERDExQTIxM0VFMDAwN0Y3
RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9OwogCQk4NkM1NjhFMTExQTIxM0VFMDAw
N0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3Nl
bWJsZXJNSVBTLmggKi87IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovOyB9OwpAQCAtNzIw
LDYgKzc0MSwyMCBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTBGNDY4MEIxMTRCQTgxMTUwMEJG
RTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWlu
ZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFD
MDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xv
YmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0g
IkxMSW50IE9mZnNldHMiOworCQl9OworCQkwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5
OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2pl
Y3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5n
ID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9IEpTQ0xMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJMTQxMjExMzUwQTQ4Nzk2MTAwNDgwMjU1IC8qIFBCWENv
bnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsK
IAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0
IG9iamVjdCAqLzsKQEAgLTc5Myw2ICs4MjgsMTUgQEAKIC8qIEVuZCBQQlhDb250YWluZXJJdGVt
UHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEvOworCQkJZHN0U3ViZm9s
ZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKIAkJNURCQjE1MTExMzFEMEIxMzAwNTZBRDM2IC8q
IENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBo
YXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7CkBAIC04NDUsNiArODg5LDE4IEBACiAJCTBG
NDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIg
LyogSklURXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRF
eGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDhGMTRCQTdF
NUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJs
ZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRp
b25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBMTEludEV4Y2VwdGlvbnMuaDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExM
SW50SGVscGVycy5jcHA7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxw
ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50SGVscGVycy5oOyBw
YXRoID0gbGxpbnQvTExJbnRIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcDsgcGF0aCA9IGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1v
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENvbW1vbi5oOyBwYXRo
ID0gbGxpbnQvTExJbnRDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0
NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludE9mZmxpbmVBc21Db25maWcuaDsgcGF0aCA9
IGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVy
LmNwcDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRl
cnByZXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMb3dMZXZlbEludGVy
cHJldGVyLmg7IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnREYXRhLmNwcDsg
cGF0aCA9IGxsaW50L0xMSW50RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTExJbnREYXRhLmg7IHBhdGggPSBsbGludC9MTEludERhdGEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8q
IERGR0J5dGVDb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZH
Qnl0ZUNvZGVDYWNoZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVDb2RlQ2FjaGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0
aW9uYWxGaW5hbGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5jb25k
aXRpb25hbEZpbmFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYyMDE2
RDE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBYnN0cmFjdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9E
RkdBYnN0cmFjdFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDYs
NiArMTYwMiwxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhDMTRCQTdF
NUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1
aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAo
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07
CiAJCTE0MTIxMTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNh
ID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwpAQCAtMTYwNCw2ICsxNjY3LDcgQEAKIAkJCQkxNDEyMTEyMDBBNDg3OTNDMDA0ODAyNTUg
LyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAq
LywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkw
RjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAog
CQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC0xNjMyLDYgKzE2OTYsNyBAQAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZh
U2NyaXB0Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBq
c2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLywK
KwkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8sCiAJCQkJMTQzMkVCRDcw
QTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYg
LyogYXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29k
ZSAqLywKQEAgLTE2NzAsNiArMTczNSwyNCBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1Rh
YnMgPSAwOwogCQl9OworCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8gPSB7
CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTBGNDY4MENFMTRCQkIz
RDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovLAorCQkJCTBGNDY4MENGMTRCQkIzRDEwMEJG
RTI3MiAvKiBMTEludERhdGEuaCAqLywKKwkJCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyog
TExJbnRDb21tb24uaCAqLywKKwkJCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRP
ZmZsaW5lQXNtQ29uZmlnLmggKi8sCisJCQkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExv
d0xldmVsSW50ZXJwcmV0ZXIuY3BwICovLAorCQkJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAv
KiBMb3dMZXZlbEludGVycHJldGVyLmggKi8sCisJCQkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8sCisJCQkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50RXhjZXB0aW9ucy5oICovLAorCQkJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludEhlbHBlcnMuY3BwICovLAorCQkJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBM
TEludEhlbHBlcnMuaCAqLywKKwkJCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gbGxpbnQ7CisJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAyNTUgLyog
dGVzdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMzAx
MCwxMyArMzA5MywzNiBAQAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0
dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCNDMxMkRCOEE4MTAwQTlGRTdCIC8qIFlh
cnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1RjE0QjdBNzNFMDA1
REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBBMzE0
QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIg
LyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CiAvKiBFbmQgUEJYSGVhZGVy
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlv
biAqLworCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFj
dG9yICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0
aW9uTGlzdCA9IDBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLzsK
KwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3Vy
Y2VzICovLAorCQkJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovLAor
CQkJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8sCisJCQkpOworCQkJ
YnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjIx
NEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFt
ZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3ROYW1lID0gSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDBGNDY4MDhGMTRCQTdFNUUw
MEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQlwcm9kdWN0VHlwZSA9
ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OwogCQkxNDEyMTExRjBBNDg3OTND
MDA0ODAyNTUgLyogbWluaWRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJ
CWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovOwpA
QCAtMzE0NywxMSArMzI1MywyOSBAQAogCQkJCTE0QkQ1OUJFMEEzRThGOTAwMEJBRjU5QyAvKiB0
ZXN0YXBpICovLAogCQkJCTkzMkY1QkRBMDgyMkExQzcwMDczNjk3NSAvKiBqc2MgKi8sCiAJCQkJ
NjUxMTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEUx
NEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKKwkJCQkwRjQ2
ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLywKIAkJCSk7CiAJCX07CiAv
KiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVp
bGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0
ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkp
OworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9sbGludC9Mb3dMZXZlbEFzc2Vt
Ymxlci5hc20iLAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsK
KwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZz
ZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxT
Y3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL1wi
XG5cbi91c3IvYmluL2VudiBydWJ5IFwiJHtTUkNST09UfS9vZmZsaW5lYXNtL2dlbmVyYXRlX29m
ZnNldF9leHRyYWN0b3IucmJcIiA8IFwiJHtTUkNST09UfS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbVwiID4gXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL0xMSW50RGVz
aXJlZE9mZnNldHMuaFwiXG4iOworCQl9OwogCQkzNzEzRjAxNDE0MjkwNTI0MDAzNjM4N0YgLyog
Q2hlY2sgRm9yIEluYXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xhc3MgTmFtZXMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OwpAQCAtMzI5Miw2ICszNDE2LDE0IEBACiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2Vj
dGlvbiAqLworCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFEMEE0ODc5M0Mw
MDQ4MDI1NSAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7
CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzU0OSw3ICszNjgxLDEwIEBA
CiAJCQkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hl
Y2tlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyog
TExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJG
RTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwODMx
NEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkBAIC0zNTY0LDYgKzM2OTksMTYgQEAKIC8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAq
LworCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9
IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODBBOTE0
QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLzsKKwkJCXRhcmdldFByb3h5ID0gMEY0
NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsK
KwkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7
CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMEY0NjgwOEUxNEJB
N0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXRhcmdldFBy
b3h5ID0gMEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LzsKKwkJfTsKIAkJMTQxMjExMzYwQTQ4Nzk2MTAwNDgwMjU1IC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwogCQkJdGFyZ2V0ID0gOTMy
RjVCM0UwODIyQTFDNzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlICovOwpAQCAtMzYxNyw2ICsz
NzYyLDE0OCBAQAogLyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTBGNDY4MDk2MTRCQTdFNUUw
MEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsK
KwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0Vf
U1RSSVAgPSBOTzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdD
Q19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0g
WUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNT
T1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIs
CisJCQkJKTsKKwkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5POworCQkJCUdDQ19W
RVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FS
Tl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJ
TkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlF
UzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFS
Q0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRf
UFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhT
KSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCU9O
TFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUp
IjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9
ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJD
SF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwOTcxNEJB
N0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhT
ID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZ
X1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2Fy
Zi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJ
R0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20u
YXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJ
VF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVT
ID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19X
QVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNo
PSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIp
L0xMSW50T2Zmc2V0cyQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NY
X0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRf
TkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BB
VEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJf
U0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4
MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9V
U0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsK
KwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1B
VCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251
OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJ
T04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0
X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19Q
Uk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOwor
CQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9Q
QVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9E
VUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwK
KwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVD
VF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVT
RVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJ
bnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9m
aWxpbmc7CisJCX07CisJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJD
SFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlE
RUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19M
QU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05T
ID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5n
LjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdD
Q19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9V
VF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7
CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWlj
dSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChI
RUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJH
RVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsK
KwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUQxNEJBN0ZEOTAw
QkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMg
Y29weSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODBBRTE0QkE3RkQ5
MDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3Vy
Y2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODBBRjE0
QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJp
dmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJ
MEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9O
QU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlv
bjsKKwkJfTsKIAkJMTQxMjExM0EwQTQ4Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovID0gewogCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewpAQCAtMzg1
OCw2ICs0MTQ1LDI4IEBACiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOUExNEJB
N0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFy
Z2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovID0geworCQkJaXNhID0gWENDb25maWd1
cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwOTYxNEJB
N0U1RTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAv
KiBSZWxlYXNlICovLAorCQkJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcg
Ki8sCisJCQkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkp
OworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUMxNEJBN0ZEOTAwQkZF
MjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJM
TEludCBPZmZzZXRzIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQli
dWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBE
ZWJ1ZyAqLywKKwkJCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJ
CQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MEIw
MTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFBy
b2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi8gPSB7CiAJCQlp
c2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShyZXZp
c2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2RlZmluZSBEVU1QX0xJTktf
U1RBVElTVElDUyAwCiAjZGVmaW5lIERVTVBfQ09ERSAwCiAKLSNpbmNsdWRlIDxNYWNyb0Fzc2Vt
Ymxlci5oPgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNv
cHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw4ICs3
Miw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBoYXNTZWVuU2hvdWxkUmVwYXRjaAogICAg
IH07CiAKLSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAg
ICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAg
ICAgZW51bSBDb2RlVHlwZSB7IEdsb2JhbENvZGUsIEV2YWxDb2RlLCBGdW5jdGlvbkNvZGUgfTsK
IApAQCAtMjU2LDYgKzI1Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIENvZGVCbG9j
ayA6IHB1YmxpYyBVbmNvbmRpdGlvbmFsRmluYWxpemVyLCBwdWJsaWMgV2Vha1JlZmVyZW5jZUhh
cnZlc3RlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBmcmll
bmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBDb3B5UGFyc2VkQmxvY2tUYWcgeyBDb3B5UGFy
c2VkQmxvY2sgfTsKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4
NCw2ICsxODQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJh
c2U8U3RydWN0dXJlQ2hhaW4+IHN0cnVjdHVyZUNoYWluOwogICAgICAgICAgICAgV3JpdGVCYXJy
aWVyQmFzZTxKU0NlbGw+IGpzQ2VsbDsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jIGdldHRlckZ1bmM7CisgICAgICAgICAgICB2b2lkKiBwb2ludGVyOwogICAgICAgICB9
IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBlbnVtIHsgRk9SX0VBQ0hfT1BDT0RFX0lE
KE9QQ09ERV9JRF9FTlVNKSB9IE9wY29kZUlEOwogICAgICN1bmRlZiBPUENPREVfSURfRU5VTQog
CisgICAgY29uc3QgaW50IG1heE9wY29kZUxlbmd0aCA9IDk7CiAgICAgY29uc3QgaW50IG51bU9w
Y29kZUlEcyA9IG9wX2VuZCArIDE7CiAKICAgICAjZGVmaW5lIE9QQ09ERV9JRF9MRU5HVEhTKGlk
LCBsZW5ndGgpIGNvbnN0IGludCBpZCMjX2xlbmd0aCA9IGxlbmd0aDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5oCShyZXZpc2lvbiAxMDQ0Mjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEhlYXA7
CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBNYXJrZWRCbG9jazsKIAogY2xh
c3MgQWxsb2NhdGlvblNwYWNlIHsKQEAgLTY4LDYgKzY5LDggQEAgcHVibGljOgogICAgIHZvaWQg
c2hyaW5rKCk7CiAgICAgCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgCiAgICAgZW51bSBBbGxvY2F0aW9uRWZmb3J0IHsgQWxsb2NhdGlvbk11
c3RTdWNjZWVkLCBBbGxvY2F0aW9uQ2FuRmFpbCB9OwogICAgIAogICAgIHZvaWQqIGFsbG9jYXRl
KE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNWYWx1ZTsKICAgICBjbGFzcyBMaXZlT2Jq
ZWN0SXRlcmF0b3I7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IE1hcmtlZEFyZ3VtZW50QnVmZmVyOwogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZTsKICAgICBjbGFz
cyBVU3RyaW5nOwpAQCAtMTI5LDEwICsxMzAsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZ2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cyhIYXNoU2V0PEpTQ2VsbCo+JiByb290
cyk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBBbGxvY2F0aW9uU3BhY2U7Ci0gICAgICAgIGZyaWVuZCBjbGFz
cyBTbG90VmlzaXRvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IE1hcmtlZEJsb2NrOworICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7CiAKICAgICAg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBtaW5FeHRyYUNvc3QgPSAyNTY7CiAgICAgICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgbWF4RXh0cmFDb3N0ID0gMTAyNCAqIDEwMjQ7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBIZWFwOwogY2xhc3MgSlNDZWxs
OwogY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogY2xhc3MgV2Vha0dDSGFuZGxlOwogY2xhc3MgU2xvdFZpc2l0b3I7CiAKQEAgLTc5LDYgKzgw
LDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1
bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaEJsb2NrKCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICAvLyBbIDMyLi4uIDI1NiBd
CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlU3RlcCA9IE1hcmtlZEJsb2NrOjphdG9t
U2l6ZTsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VDdXRvZmYgPSAyNTY7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAko
cmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNzIEpTRnVuY3Rpb247
CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwog
ICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwpAQCAtOTAsOCArOTEsOSBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBD
YWNoZWRDYWxsOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIHB1YmxpYzoKICAgICAgICAgSW50ZXJwcmV0
ZXIoKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
UmVnaXN0ZXJGaWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL1JlZ2lzdGVyRmlsZS5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5
LDYgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290
czsKICAgICBjbGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIAogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFJlZ2lzdGVyRmlsZSk7CkBAIC04MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0
ZXIqKTsKICAgICAgICAgdm9pZCByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9p
ZCBhZGRUb0NvbW1pdHRlZEJ5dGVDb3VudChsb25nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBM
TEludENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2RlZmluZSBMTElOVF9FWEVD
VVRJT05fVFJBQ0lORyAwCisKKyNlbmRpZiAvLyBMTEludENvbW1vbl9oCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorCisjaWYgRU5B
QkxFKExMSU5UKQorCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJMb3dMZXZl
bEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgTExJbnQgeworCitEYXRhOjpEYXRhKCkKKyAgICA6IG1fZXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zKG5ldyBJbnN0cnVjdGlvblttYXhPcGNvZGVMZW5ndGggKyAxXSkKKyAgICAsIG1fb3Bj
b2RlTWFwKG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXSkKK3sKKyAgICBmb3IgKGludCBpID0gMDsg
aSA8IG1heE9wY29kZUxlbmd0aCArIDE7ICsraSkKKyAgICAgICAgbV9leGNlcHRpb25JbnN0cnVj
dGlvbnNbaV0udS5wb2ludGVyID0gbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZTsK
KyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBtX29wY29kZU1hcFtvcGNvZGVd
ID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUpOworICAgIEZPUl9FQUNIX09Q
Q09ERV9JRChPUENPREVfRU5UUlkpOworI3VuZGVmIE9QQ09ERV9FTlRSWQorfQorCitEYXRhOjp+
RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgZGVs
ZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisj
ZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludERhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RGF0YV9oCisjZGVm
aW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFt
ZXNwYWNlIExMSW50IHsKKworI2lmIEVOQUJMRShMTElOVCkKK2NsYXNzIERhdGEgeworcHVibGlj
OgorICAgIERhdGEoKTsKKyAgICB+RGF0YSgpOworICAgIAorICAgIEluc3RydWN0aW9uKiBleGNl
cHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5z
dHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgfQorcHJpdmF0ZToKKyAgICBJbnN0cnVj
dGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgT3Bjb2RlKiBtX29wY29kZU1hcDsK
K307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQpCisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlmCisKK2NsYXNzIERhdGEgeworcHVibGljOgor
ICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFw
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK307CisKKyNp
ZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgor
CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQK
KworI2VuZGlmIC8vIExMSW50RGF0YV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorCisj
aW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAi
SW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTG93
TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsK
KworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlv
biogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERh
dGEoKTsKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhj
ZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsK
KyAgICAKKyAgICByZXR1cm4gZ2xvYmFsRGF0YS0+bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0
aW9ucygpOworfQorCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0
aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFs
RGF0YSgpOworICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5l
eGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkp
OworICAgIAorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19kdXJp
bmdfY2FsbF90cmFtcG9saW5lKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRp
b25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNfaAorI2Rl
ZmluZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9u
OworCituYW1lc3BhY2UgTExJbnQgeworCisvLyBTYXZlcyB0aGUgY3VycmVudCBQQyBpbiB0aGUg
Z2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlvdSBhIFBDCisvLyB0aGF0
IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4gYWR2YW5j
ZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0cnVjdGlv
biIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBleGNlcHRpb24gaGFuZGxl
ci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5n
LAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhhdCBQQyB3aXRob3V0IGRv
aW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVhZCBleGNlcHRpb24gaGFu
ZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5CisvLyBvdGhlciBo
ZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rp
b24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxsIHRodW5r
Lgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludEV4Y2VwdGlvbnNfaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJMTEludEhlbHBlcnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisK
KyNkZWZpbmUgTExJTlRfT1AoaW5kZXgpIChleGVjLT5yZWdpc3RlcnMoKVtwY1tpbmRleF0udS5v
cGVyYW5kXSkKKyNkZWZpbmUgTExJTlRfT1BfQyhpbmRleCkgKGV4ZWMtPnIocGNbaW5kZXhdLnUu
b3BlcmFuZCkpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOX1RXTyhmaXJzdCwgc2Vjb25kKSAgICAg
ICAgIFwKKyAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgICAgICB2b2lkKiBhOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
ICAgICB2b2lkKiBiOyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gcGFp
cjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGludDY0X3QgaTsg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSBfX3U7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX191LnBhaXIuYSA9IGZpcnN0OyAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgX191LnBhaXIuYiA9IHNlY29uZDsgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fdS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9FTkRfSU1QTCgpIExMSU5U
X1JFVFVSTl9UV08ocGMsIGV4ZWMpCisKKyNkZWZpbmUgTExJTlRfVEhST1coZXhjZXB0aW9uVG9U
aHJvdykgZG8geyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYg
X19nbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOyAgICAgICAgXAorICAgICAgICBfX2ds
b2JhbERhdGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgIFwKKyAg
ICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVO
TElLRUxZKGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSB7ICAgXAorICAgICAgICAgICAg
cGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0g
d2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORCgpIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAg
ICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQlJBTkNIKG9wY29kZSwgY29uZGl0
aW9uKSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGJvb2wgX19jb25kaXRpb24g
PSAoY29uZGl0aW9uKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgaWYgKF9fY29uZGl0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICBwYyArPSBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51Lm9w
ZXJhbmQ7ICAgICAgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgo
b3Bjb2RlKTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBM
KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUg
KGZhbHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTih2YWx1ZSkgZG8geyAgICAgICAgICAgICAg
ICBcCisgICAgICAgIEpTVmFsdWUgX19yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgICBcCisg
ICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAg
IExMSU5UX09QKDEpID0gX19yZXR1cm5WYWx1ZTsgICAgICAgICAgICBcCisgICAgICAgIExMSU5U
X0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2Up
CisKKyNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0KSBMTElOVF9S
RVRVUk5fVFdPKChleGVjKSwgKGNhbGxUYXJnZXQpKQorCisjZGVmaW5lIExMSU5UX0NBTExfVEhS
T1coZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgXAorICAgICAgICBFeGVj
U3RhdGUqIF9fZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgSW5zdHJ1Y3Rpb24qIF9fcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYgX19nbG9iYWxEYXRhID0gKF9fZXhlYyktPmds
b2JhbERhdGEoKTsgICAgXAorICAgICAgICBfX2dsb2JhbERhdGEuZXhjZXB0aW9uID0gKGV4Y2Vw
dGlvblRvVGhyb3cpOyAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChf
X2V4ZWMsIGNhbGxUb1Rocm93KF9fZXhlYywgX19wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2Up
CisKKyNkZWZpbmUgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpIGRvIHsgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2V4ZWMgPSAoZXhlYyk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rp
b24qIF9fcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgaWYgKFVOTElLRUxZKF9fZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19leGVj
LCBjYWxsVG9UaHJvdyhfX2V4ZWMsIF9fcGMpKTsgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkK
KworI2RlZmluZSBMTElOVF9DQUxMX1JFVFVSTihleGVjLCBwYywgY2FsbFRhcmdldCkgZG8geyAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fZXhlYyA9IChleGVjKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlv
biogX19wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICB2b2lkKiBfX2NhbGxUYXJnZXQgPSAoY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihfX2V4
ZWMtPmNhbGxlckZyYW1lKCksIF9fcGMpOyAgICAgICAgXAorICAgICAgICBMTElOR19DQUxMX0VO
RF9JTVBMKF9fZXhlYywgX19jYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IH0gd2hpbGUgKGZhbHNlKQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpCit7CisgICAg
Ly8gRklYTUUKK30KKworTExJTlRfSEVMUEVSX0RFQ0wobG9vcF9vc3IpCit7CisgICAgLy8gRklY
TUUKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSkKK3sKKyAgICAvLyBGSVhNRQorfQor
CitMTElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKQoreworICAgIC8vIEZJWE1F
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAg
Ly8gRklYTUUKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNo
ZWNrKQoreworICAgIC8vIEZJWE1FCit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVh
dGVfYWN0aXZhdGlvbikKK3sKKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBKU0FjdGl2
YXRpb246OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMsIHN0YXRpY19jYXN0PEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSkpOwor
ICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2YXRp
b24pKTsKKyAgICBMTElOVF9SRVRVUk4oSlNWYWx1ZShhY3RpdmF0aW9uKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQoreworICAgIExMSU5UX1JFVFVS
TihKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYykpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKQoreworICAgIEpTRnVu
Y3Rpb24qIGNvbnN0cnVjdG9yID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgCisj
aWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAg
ICBBU1NFUlQoY29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY29u
c3RydWN0b3IsIGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CisjZW5kaWYKKyAg
ICAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBKU1ZhbHVlIHByb3RvID0gTExJTlRf
T1AoMikuanNWYWx1ZSgpOworICAgIGlmIChwcm90by5pc09iamVjdCgpKQorICAgICAgICBzdHJ1
Y3R1cmUgPSBhc09iamVjdChwcm90byktPmluaGVyaXRvcklEKGV4ZWMtPmdsb2JhbERhdGEoKSk7
CisgICAgZWxzZQorICAgICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c2NvcGUoKS0+Z2xv
YmFsT2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpOworICAgIAorICAgIExMSU5UX1JFVFVS
Tihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcykKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRf
T1AoMSkuanNWYWx1ZSgpOworICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBMTElO
VF9SRVRVUk4odjEudG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25ld19vYmplY3QpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSkKK3sK
KyAgICBBcmdMaXN0IGFyZ0xpc3QoJkxMSU5UX09QKDIpLCBwY1szXS51Lm9wZXJhbmQpOworICAg
IExMSU5UX1JFVFVSTihjb25zdHJ1Y3RBcnJheShleGVjLCBhcmdMaXN0KSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQoreworICAgIEFyZ0xpc3QgYXJn
TGlzdChleGVjLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIocGNbMl0udS5vcGVyYW5kKSwg
cGNbM10udS5vcGVyYW5kKTsKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywg
YXJnTGlzdCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfcmVnZXhwKQorewor
ICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlZ2V4cChwY1syXS51Lm9w
ZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCisgICAgICAgIExMSU5UX1RIUk9X
KGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIGZsYWcgc3VwcGxpZWQgdG8gUmVnRXhw
IGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2JqZWN0OjpjcmVhdGUo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZXgtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4cCkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xl
YW4oIUxMSU5UX09QKDIpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2VxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNW
YWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSkKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUCgyKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1Zh
bHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0bmVx
KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OnN0cmljdEVxdWFsKGV4
ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNz
ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTx0cnVlPihleGVjLCBM
TElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKGpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0
ZXJlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPGZhbHNlPihleGVj
LCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2luYykKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICsgMSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYykKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gMSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9pbmMpCit7CisgICAgZG91YmxlIHJlc3Vs
dCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgy
KSA9IGpzTnVtYmVyKHJlc3VsdCArIDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1
bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKQoreworICAgIGRv
dWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAg
TExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQgLSAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJl
cikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRv
TnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKC1MTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1i
ZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2FkZCkKK3sKKyAgICBK
U1ZhbHVlIHYxID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBpZiAodjEuaXNTdHJpbmcoKSkgeworICAg
ICAgICBMTElOVF9SRVRVUk4oCisgICAgICAgICAgICB2Mi5pc1N0cmluZygpCisgICAgICAgICAg
ICA/IGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgYXNTdHJpbmcodjIpKQorICAgICAgICAg
ICAgOiBqc1N0cmluZyhleGVjLCBhc1N0cmluZyh2MSksIHYyLnRvUHJpbWl0aXZlU3RyaW5nKGV4
ZWMpKSk7CisgICAgfQorICAgIAorICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVy
KCkpCisgICAgICAgIExMSU5UX1JFVFVSTihqc051bWJlcih2MS5hc051bWJlcigpICsgdjIuYXNO
dW1iZXIoKSkpOworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0FkZFNsb3dDYXNlKGV4ZWMsIHYx
LCB2MikpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKQoreworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKiBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfc3ViKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9P
UCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KQorewor
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIo
ZXhlYykgLyBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihmbW9kKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9sc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpz
VmFsdWUoKS50b0ludDMyKGV4ZWMpIDw8IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMy
KGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMp
ID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2JpdGFuZCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1
ZSgpLnRvSW50MzIoZXhlYykgJiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVj
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3IpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIHwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2JpdHhvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRf
T1AoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgXiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50
b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KQor
eworICAgIExMSU5UX1JFVFVSTihqc051bWJlcih+TExJTlRfT1AoMikuanNWYWx1ZSgpLnRvSW50
MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0
YW5jZSkKK3sKKyAgICBKU1ZhbHVlIGJhc2VWYWwgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7Cisj
aWZuZGVmIE5ERUJVRworICAgIFR5cGVJbmZvIHR5cGVJbmZvKFVuc3BlY2lmaWVkVHlwZSk7Cisg
ICAgQVNTRVJUKCFiYXNlVmFsLmlzT2JqZWN0KCkKKyAgICAgICAgICAgfHwgISh0eXBlSW5mbyA9
IGFzT2JqZWN0KGJhc2VWYWwpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKSkuaW1wbGVtZW50c0hh
c0luc3RhbmNlKCkpOworI2VuZGlmCisgICAgTExJTlRfVEhST1coY3JlYXRlSW52YWxpZFBhcmFt
RXJyb3IoZXhlYywgImluc3RhbmNlb2YiLCBiYXNlVmFsKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pbnN0YW5jZW9mKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oaW5z
dGFuY2VPZlNsb3coZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1Zh
bHVlKCksIExMSU5UX09QKDQpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdHlw
ZW9mKQoreworICAgIExMSU5UX1JFVFVSTihqc1R5cGVTdHJpbmdGb3JWYWx1ZShleGVjLCBMTElO
VF9PUCgyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3Vu
ZGVmaW5lZCkKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbih2LmlzQ2VsbCgpID8gdi5hc0NlbGwoKS0+c3RydWN0dXJl
KCktPnR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpIDogdi5pc1VuZGVmaW5lZCgp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKQoreworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1AoMikuanNWYWx1ZSgpLmlzQm9vbGVhbigpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUCgyKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKQoreworICAgIExMSU5UX1JFVFVS
Tihqc0Jvb2xlYW4oaXNKU1N0cmluZyhleGVjLT5nbG9iYWxEYXRhKCksIExMSU5UX09QKDIpLmpz
VmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX29iamVjdCkKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNPYmplY3RUeXBlKExMSU5UX09QKDIpLmpz
VmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKQor
eworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc0Z1bmN0aW9uVHlwZShMTElOVF9PUCgy
KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbikKK3sKKyAg
ICBMTElOVF9SRVRVUk4ob3BJbihleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09Q
KDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSkK
K3sKKyAgICBMTElOVF9SRVRVUk4ob3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5p
ZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Jlc29sdmVfc2tpcCkKK3sKKyAgICBMTElOVF9SRVRVUk4oCisgICAgICAgIG9wUmVzb3Zl
U2tpcCgKKyAgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+
aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAgICAgICAgICAgcGNbM10udS5vcGVyYW5k
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCkKK3sKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOworICAgIEFT
U0VSVChnbG9iYWxPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkpOworICAgIGludCBwcm9wZXJ0eSA9
IHBjWzJdLnUub3BlcmFuZDsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHBjWzNdLnUuc3Ry
dWN0dXJlLmdldCgpOworICAgIGludCBvZmZzZXQgPSBwY1s0XS51Lm9wZXJhbmQ7CisgICAgCisg
ICAgQVNTRVJUKCghc3RydWN0dXJlKSA9PSAoIW9mZnNldCkpOworICAgIEFTU0VSVChzdHJ1Y3R1
cmUgIT0gZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgCisgICAgSWRlbnRpZmllciYg
aWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpOworICAgIFByb3BlcnR5U2xv
dCBzbG90KGdsb2JhbE9iamVjdCk7CisgICAgCisgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2V0UHJv
cGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkgeworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9
IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpOworICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJs
ZVZhbHVlKCkgJiYgIWdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0
aW9uYXJ5KCkKKyAgICAgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBnbG9iYWxPYmplY3Qp
IHsKKyAgICAgICAgICAgIHBjWzNdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBn
bG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIHBjWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgTExJTlRfUkVUVVJOKHJlc3VsdCk7CisgICAgfQor
ICAgIAorICAgIExMSU5UX1RIUk9XKGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywg
aWRlbnQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSkKK3sK
KyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBj
WzJdLnUub3BlcmFuZCk7CisgICAgaWYgKHBjWzNdLnUub3BlcmFuZCkgeworICAgICAgICBKU1Zh
bHVlIGJhc2UgPSBKU0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWlu
KCksIHRydWUpOworICAgICAgICBpZiAoIWJhc2UpCisgICAgICAgICAgICBMTElOVF9USFJPVyhj
cmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmco
KSkpOworICAgICAgICBMTElOVF9SRVRVUk4oYmFzZSk7CisgICAgfQorICAgIAorICAgIExMSU5U
X1JFVFVSTihKU0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCks
IGZhbHNlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlf
ZXhpc3RzKQoreworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChMTElOVF9PUCgxKS5q
c1ZhbHVlKCkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CisgICAgSWRlbnRpZmll
ciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQp
OworICAgIGlmICghb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQpKQorICAgICAg
ICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMs
IGlkZW50LnVzdHJpbmcoKSkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpCit7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBv
cFJlc29sdmVXaXRoQmFzZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1sz
XS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7
CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKK3sKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IG9wUmVzb2x2ZVdpdGhUaGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlm
aWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0g
Y29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFz
ZVZhbHVlKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChleGVjLCBpZGVu
dCwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1AoMSkg
PSByZXN1bHQ7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCisgICAgICAgICYmIHNsb3Qu
aXNDYWNoZWFibGUoKQorICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlCisg
ICAgICAgICYmIHNsb3QuY2FjZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OlZhbHVl
KSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2Vs
bCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUo
KTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlv
bmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1By
b3BlcnR5Q2FjaGluZygpKSB7CisgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisg
ICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5j
YWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9p
ZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAg
IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFu
ZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAgYmFz
ZVZhbHVlLnB1dChleGVjLCBpZGVudCwgTExJTlRfT1AoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2Vs
bCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKSkgeworICAgICAgICAKKyAgICAgICAg
SlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWxlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlm
ICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAh
c3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpCisgICAgICAg
ICAgICAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewor
ICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAgICAg
ICAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJl
LT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOworICAgICAgICAgICAgICAgICAgICBpZiAocGNb
OF0udS5vcGVyYW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBs
bGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q7CisgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOworICAgICAgICAgICAgICAgICAgICBwY1s0XS51
LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRh
KCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNl0udS5zdHJ1
Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAg
ICAgICBwY1s3XS51LnN0cnVjdHVyZUNoYWluLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0
dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGxsaW50X29wX3B1
dF9ieV9pZDsKKyAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAg
ICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBwY1s1XXUub3BlcmFuZCA9IHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9kZWxfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IExMSU5UX09QKDIpLmpzVmFs
dWUoKS50b09iamVjdChleGVjKTsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+
bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgY29kZUJsb2Nr
LT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOworICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkK
KyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVs
ZXRlIHByb3BlcnR5LiIpKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRl
KSk7Cit9CisKK2lubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEpTVmFsdWUgYmFzZVZhbHVlLCBKU1Zh
bHVlIHN1YnNjcmlwdCkKK3sKKyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBz
dWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFz
ZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkoZXhlYywgYXNTdHJpbmcoc3Vic2Ny
aXB0KS0+dmFsdWUoZXhlYykpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cisg
ICAgCisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGkg
PSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcoZXhlYywgYmFz
ZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAg
ICAgIHJldHVybiBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAg
ICAgCisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGV4ZWMsIGJhc2VWYWx1ZSkgJiYgYXNCeXRl
QXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpCisgICAgICAgICAgICByZXR1cm4g
YXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBpKTsKKyAgICB9CisgICAgCisgICAgSWRl
bnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYykpOworICAgIHJl
dHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5KTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dldF9ieV92YWwpCit7CisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKExMSU5U
X09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQoreworICAgIEpTVmFsdWUgYXJn
dW1lbnRzID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICghYXJndW1lbnRzKSB7Cisg
ICAgICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYyk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBMTElOVF9P
UCgyKSA9IGFyZ3VtZW50czsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFs
KGFyZ3VtZW50cywgTExJTlRfT1AoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpCit7CisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKExM
SU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFsKQoreworICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBKU1ZhbHVlIGJhc2VWYWx1
ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5U
X09QKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1AoMykuanNWYWx1
ZSgpOworICAgIAorICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CisgICAg
ICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNB
cnJheSgmZ2xvYmFsRGF0YSwgYmFzZVZhbHVlKSkgeworICAgICAgICAgICAgSlNBcnJheSoganNB
cnJheSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChqc0FycmF5LT5jYW5T
ZXRJbmRleChpKSkKKyAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRleChnbG9iYWxEYXRh
LCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgSlNBcnJheTo6
cHV0QnlJbmRleChqc0FycmF5LCBleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBMTElOVF9F
TkQoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheSgmZ2xvYmFsRGF0YSwg
YmFzZVZhbHVlKQorICAgICAgICAgICAgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNj
ZXNzSW5kZXgoaSkpIHsKKyAgICAgICAgICAgIEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IGFz
Qnl0ZUFycmF5KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKSB7
CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzSW50MzIo
KSk7CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5
LT5zZXRJbmRleChpLCB2YWx1ZS5hc051bWJlcigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9F
TkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBiYXNlVmFsdWUucHV0KGV4
ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIElk
ZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChleGVjLT5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJv
cGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2RlbF9ieV92YWwpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElO
VF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUu
dG9PYmplY3QoZXhlYyk7CisgICAgCisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUCgz
KS5qc1ZhbHVlKCk7CisgICAgCisgICAgYm9vbCBjb3VsZERlbGV0ZTsKKyAgICAKKyAgICB1aW50
MzJfdCBpOworICAgIGlmIChzdWJzY3JpcHQuZ2V0VUludDMyKGkpKQorICAgICAgICBjb3VsZERl
bGV0ZSA9IGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNl
T2JqLCBleGVjLCBpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5n
KGV4ZWMpKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIGNvdWxk
RGVsZXRlID0gYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iaiwg
ZXhlYywgcHJvcGVydHkpOworICAgIH0KKyAgICAKKyAgICBpZiAoIXJlc3VsdCAmJiBleGVjLT5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgCisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHV0X2J5X2luZGV4KQoreworICAgIExMSU5UX09QKDEpLmpzVmFsdWUoKS5w
dXQoZXhlYywgcGNbMl0udS5vcGVyYW5kLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpOworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2dldHRlcikKK3sK
KyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIEpTT2Jq
ZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBJZGVu
dGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOwor
ICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgYmFzZU9i
ai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lR2V0dGVyKGJhc2VPYmosIGV4ZWMsIGlkZW50LCBhc09i
amVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpCit7CisgICAgQVNTRVJUKExMSU5U
X09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFz
T2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBj
b2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRf
T1AoMykuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCkt
PmRlZmluZVNldHRlcihiYXNlT2JqLCBleGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMyku
anNWYWx1ZSgpKSwgMCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qdHJ1ZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfanRydWUsIExMSU5UX09QKDEp
LmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfamZhbHNlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZmFsc2UsICFMTElOVF9PUCgxKS5q
c1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2psZXNzKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzcywganNMZXNzPHRydWU+KGV4ZWMs
IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKQoreworICAgIExMSU5UX0JSQU5DSChv
cF9qbmxlc3MsICFqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
Z3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXIsIGpzTGVzczxmYWxzZT4o
ZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpCit7CisgICAgTExJTlRf
QlJBTkNIKG9wX2puZ3JlYXRlciwgIWpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygxKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9qbGVzc2VxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzc2VxLCBqc0xl
c3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKQorewor
ICAgIExMSU5UX0JSQU5DSChvcF9qbmxlc3NlcSwgIWpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5U
X09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bf
amdyZWF0ZXJlcSwganNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfam5ncmVhdGVyZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlcmVxLCAhanNM
ZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSkK
K3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QKDMpLmpzVmFsdWUoKTsKKyAgICBB
U1NFUlQoc2NydXRpbmVlLmlzRG91YmxlKCkpOworICAgIGRvdWJsZSB2YWx1ZSA9IHNjcnV0aW5l
ZS5hc0RvdWJsZSgpOworICAgIGludDMyX3QgaW50VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90
Pih2YWx1ZSk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAg
aWYgKHZhbHVlID09IGludFZhbHVlKSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+aW1tZWRpYXRlU3dp
dGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoaW50VmFsdWUsIGRl
ZmF1bHRPZmZzZXQpOworICAgIH0gZWxzZQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0Owor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0
cmluZykKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QKDMpLmpzVmFsdWUoKTsK
KyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAoIXNjcnV0
aW5lZS5pc1N0cmluZygpKQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIGVsc2Ug
eworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAg
ICAgICBwYyArPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJh
bmQpLm9mZnNldEZvclZhbHVlKGFzU3RyaW5nKHNjcnV0aW5lZSktPnZhbHVlKGV4ZWMpLmltcGwo
KSwgZGVmYXVsdE9mZnNldCk7CisgICAgfQorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmMpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9
IEZ1bmN0aW9uQ29kZQorICAgICAgICAgICB8fCAhY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNo
YWluKCkKKyAgICAgICAgICAgfHwgZXhlYy0+dW5jaGVja2VkUihjb2RlQmxvY2stPmFjdGl2YXRp
b25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX1JFVFVSTihjb2RlQmxvY2stPmZ1
bmN0aW9uRGVjbChwY1syXS51Lm9wZXJhbmQpLT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4o
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmNfZXhwKQoreworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgRnVuY3Rpb25F
eGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzJdLnUub3Bl
cmFuZCk7CisgICAgSlNGdW5jdGlvbiogZnVuYyA9IGZ1bmN0aW9uLT5tYWtlKGV4ZWMsIGV4ZWMt
PnNjb3BlQ2hhaW4oKSk7CisgICAgCisgICAgaWYgKCFmdW5jdGlvbi0+bmFtZSgpLmlzTnVsbCgp
KSB7CisgICAgICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIGZ1bmN0aW9uU2NvcGVPYmplY3QgPSBK
U1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgZnVuY3Rpb24tPm5hbWUoKSwgZnVuYywg
UmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgZnVuYy0+c2V0U2NvcGUoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBmdW5jLT5zY29wZSgpLT5wdXNoKGZ1bmN0aW9uU2NvcGVPYmplY3QpKTsKKyAg
ICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKGZ1bmMpOworfQorCitzdGF0aWMgSGVscGVyUmV0
dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9u
KiBwYywgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAg
ICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgIEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisKKyAgICBleGVjQ2Fs
bGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+
c2V0Q29kZUJsb2NrKDApOworCisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAg
ICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2Fs
bERhdGEoY2FsbGVlLCBjYWxsRGF0YSk7CisgICAgCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSAh
PSBDYWxsVHlwZUpTKTsKKyAgICAKKyAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSG9z
dCkgeworICAgICAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFs
dWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAg
ICAgICAgCisgICAgICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgICAgICB9
CisgICAgCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpOworICAgICAg
ICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihleGVj
LCBjYWxsZWUpKTsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0
KTsKKyAgICAKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQ29uc3RydWN0
VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShjYWxsZWUsIGNvbnN0cnVjdERh
dGEpOworICAgIAorICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGVKUyk7
CisgICAgCisgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZUhvc3QpIHsKKyAg
ICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShj
b25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgIExMSU5U
X0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgfQorICAgIAorICAgIEFTU0VSVChjb25zdHJ1Y3RU
eXBlID09IENvbnN0cnVjdFR5cGVOb25lKTsKKyAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBj
LCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKK30KKworaW5saW5l
IEhlbHBlclJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1
Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUgY2FsbGVlQXNW
YWx1ZSwgV3JpdGVCYXJyaWVyQmFzZTxKU0NlbGw+KiBleHBlY3RlZEZ1bmN0aW9uID0gMCwgdm9p
ZCoqIG1hY2hpbmVDb2RlID0gMCkKK3sKKyAgICBBU1NFUlQoIWV4cGVjdGVkRnVuY3Rpb24gPT0g
IW1hY2hpbmVDb2RlKTsKKyAgICAKKyAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0g
Z2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKKyAgICBpZiAoIWNhbGxlZUFzRnVuY3Rpb25D
ZWxsKQorICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgcGMsIGNhbGxl
ZUFzVmFsdWUsIGtpbmQpOworICAgIAorICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rp
b24oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4o
Y2FsbGVlLT5zY29wZVVuY2hlY2tlZCgpKTsKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJs
ZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOworICAgIAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBjb2RlUHRyOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKKyAgICBpZiAoZXhlY3V0
YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmdl
bmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICAgICAgSlNPYmplY3QqIGVy
cm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21waWxlRm9yKGV4ZWNDYWxsZWUsIGNhbGxlZS0+
c2NvcGUoKSwga2luZCk7CisgICAgICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMs
IHBjKTsKKyAgICAgICAgY29kZUJsb2NrID0gJmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVk
Qnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm1fbnVtUGFy
YW1ldGVycykpCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5l
cmF0ZWRKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Io
a2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICB9CisgICAgCisgICAgaWYgKGV4cGVjdGVkRnVu
Y3Rpb24pIHsKKyAgICAgICAgZXhwZWN0ZWRGdW5jdGlvbi0+c2V0KGV4ZWMtPmdsb2JhbERhdGEo
KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlQXNGdW5jdGlvbkNlbGwpOwor
ICAgICAgICAqbWFjaGluZUNvZGUgPSBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCk7CisgICAg
fQorICAgIAorICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCBjb2RlUHRyLmV4
ZWN1dGFibGVBZGRyZXNzKCkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJuVHlwZSBnZW5lcmlj
Q2FsbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAgYSBj
YWxsIGZyYW1lLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUg
aXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gSWYgcG9zc2libGUsIGxpbmsgdGhlIGNhbGwncyBp
bmxpbmUgY2FjaGUuCisgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRk
cmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCisgICAgCisgICAgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBKU1ZhbHVl
IGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWND
YWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIAorICAgIGV4ZWNDYWxsZWUtPnNl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFuZCk7CisgICAgZXhlY0Nh
bGxlZS0+c2V0Q2FsbGVlKGNhbGxlZUFzVmFsdWUpOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxl
ckZyYW1lKGV4ZWMpOworICAgIAorICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMs
IGtpbmQsIGNhbGxlZUFzVmFsdWUsICZwY1s0XS51LmpzQ2VsbCwgJnBjWzVdLnUucG9pbnRlcik7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKQoreworICAgIHJldHVybiBnZW5l
cmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY29uc3RydWN0KQoreworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29k
ZUZvckNvbnN0cnVjdCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX3ZhcmFy
Z3MpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJh
bWUgd2hpbGUgcmVzcGVjdGluZyB0aGUgdmFyaWFibGUgYXJndW1lbnRzLgorICAgIC8vIC0gRmln
dXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8v
IC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhl
IG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5U
X09QKDEpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAor
ICAgICAgICBleGVjLCBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmls
ZSgpLAorICAgICAgICBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUo
KSwgcGNbNF0udS5vcGVyYW5kKTsKKyAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVj
LCBwYyk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVlKGNhbGxlZUFzVmFsdWUpOwor
ICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIAorICAgIHJldHVybiBz
ZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIGtpbmQsIGNhbGxlZUFzVmFsdWUpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKQoreworICAgIEpTVmFsdWUgY2FsbGVlQXNW
YWx1ZSA9IExMSU5UX09QKDEpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4
ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhl
Yy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFuZCk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVy
RnJhbWUoZXhlYyk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVlKGNhbGxlZUFzVmFsdWUpOwor
ICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oY2FsbGVyRnJhbWUtPnNjb3BlQ2hhaW4oKSk7
CisgICAgZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMoYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4o
bGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxv
Y2soMCk7CisgICAgCisgICAgaWYgKCFpc0hvc3RGdW5jdGlvbihjYWxsZWVBc1ZhbHVlLCBnbG9i
YWxGdW5jRXZhbCkpCisgICAgICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENv
ZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKKyAgICAKKyAgICBnbG9iYWxEYXRhLmhvc3RDYWxs
UmV0dXJuVmFsdWUgPSBldmFsKGV4ZWNDYWxsZWUpOworICAgIExMSU5UX0NBTExfUkVUVVJOKGV4
ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9u
KQoreworICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigp
KTsKKyAgICBKU1ZhbHVlIGFjdGl2YXRpb25WYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsK
KyAgICBpZiAoIWFjdGl2YXRpb25WYWx1ZSkgeworICAgICAgICBpZiAoSlNWYWx1ZSB2ID0gZXhl
Yy0+cmVnaXN0ZXJzKClbdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFu
ZCldKSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUo
KSkKKyAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVjLT5nbG9iYWxE
YXRhKCkpOworICAgICAgICB9CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICBKU0Fj
dGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVlKTsKKyAg
ICBhY3RpdmF0aW9uLT50ZWFyT2ZmKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgaWYgKEpTVmFs
dWUgdiA9IGV4ZWMtPnJlZ2lzdGVycygpW3VubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sy
XS51Lm9wZXJhbmQpXSkKKyAgICAgICAgYXNBcmd1bWVudHModiktPmRpZFRlYXJPZmZBY3RpdmF0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgYWN0aXZhdGlvbik7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCit7CisgICAg
QVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkgJiYgIWV4ZWMtPmNvZGVC
bG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIGFzQXJndW1lbnRzKGV4ZWMtPnJl
Z2lzdGVycygpW3VubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpXSkt
PnRlYXJPZmYoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNhdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNTdHJp
bmcoZXhlYywgJkxMSU5UX09QKDIpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oTExJTlRf
T1AoMikuanNWYWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dldF9wbmFtZXMpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNW
YWx1ZSgpOworICAgIGlmICh2LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcGMgKz0g
cGNbNV0udS5vcGVyYW5kOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAg
SlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gby0+c3RydWN0dXJlKCk7CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0
eU5hbWVJdGVyYXRvciA9IHN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpOworICAgIGlmICgh
anNQcm9wZXJ0eU5hbWVJdGVyYXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQ
cm90b3R5cGVDaGFpbigpICE9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCisgICAg
ICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVh
dGUoZXhlYywgbyk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBqc1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOworICAgIExMSU5UX09QKDIpID0gSlNWYWx1ZShvKTsKKyAgICBMTElOVF9PUCgzKSA9IFJl
Z2lzdGVyOjp3aXRoSW50KDApOworICAgIExMSU5UX09QKDQpID0gUmVnaXN0ZXI6OndpdGhJbnQo
anNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAgICAKKyAgICBwYyArPSBPUENPREVf
TEVOR1RIKG9wX2dldF9wbmFtZXMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSkKK3sKKyAgICBKU09iamVjdCogYmFzZSA9IGFzT2Jq
ZWN0KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CisgICAgSlNTdHJpbmcqIHByb3BlcnR5ID0gYXNT
dHJpbmcoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBpZiAoYmFzZS0+aGFzUHJvcGVydHko
ZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eS0+dmFsdWUoZXhlYykpKSkgeworICAgICAg
ICAvLyBHbyB0byB0YXJnZXQuCisgICAgICAgIHBjICs9IHBjWzZdLnUub3BlcmFuZDsKKyAgICB9
IC8vIEVsc2UsIGRvbid0IGNoYW5nZSB0aGUgUEMsIHNvIHRoZSBpbnRlcnByZXRlciB3aWxsIHJl
bG9vcC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1
c2hfc2NvcGUpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAg
IEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9IG87CisgICAgZXhlYy0+c2V0U2NvcGVDaGFp
bihleGVjLT5zY29wZUNoYWluKCktPnB1c2gobykpOworICAgIAorICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9wX3Njb3BlKQoreworICAgIGV4ZWMtPnNl
dFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wb3AoKSk7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSkKK3sKKyAgICBl
eGVjLT5zZXRTY29wZUNoYWluKGNyZWF0ZUV4Y2VwdGlvblNjb3BlKGV4ZWMsIHBjIC0gZXhlYy0+
Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KQoreworICAgIExMSU5UX1RIUk9X
KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90
aHJvd19yZWZlcmVuY2VfZXJyb3IpCit7CisgICAgTExJTlRfVEhST1coY3JlYXRlUmVmZXJlbmNl
RXJyb3IoZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9TdHJpbmcoZXhlYykpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKQoreworICAgIGludCBkZWJ1Z0hvb2tJ
RCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5k
OworICAgIGludCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5n
bG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9v
a0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIAorICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwp
Cit7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT53aWxsRXhl
Y3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKK3sKKyAgICAoKlBy
b2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPmRpZEV4ZWN1dGUoZXhlYywgTExJ
TlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRIZWxwZXJzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRIZWxwZXJzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRIZWxwZXJz
X2gKKyNkZWZpbmUgTExJbnRIZWxwZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3R5cGVkZWYgaW50NjRf
dCBIZWxwZXJSZXR1cm5UeXBlOworCisjZGVmaW5lIExMSU5UX0hFTFBFUl9ERUNMKG5hbWUpIFwK
KyAgICBleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfIyNuYW1lKEV4ZWNTdGF0ZSog
ZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpOwor
TExJTlRfSEVMUEVSX0RFQ0wobG9vcF9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSk7
CitMTElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Nv
bnN0cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0
aXZhdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NvbnZlcnRfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVj
dCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5KTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXdfcmVnZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9z
dHJpY3RuZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2xlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcik7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wcmVfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcG9zdF9kZWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2FkZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9zdWIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rpdik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbW9kKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3JzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfdXJzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9iaXRvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9y
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5z
dGFuY2VvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9pc191bmRlZmluZWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lz
X2Jvb2xlYW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJlcik7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19vYmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9pbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2
ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cmVzb2x2ZV9iYXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlf
ZXhpc3RzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2dldF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5
X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2dldF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9h
cmd1bWVudF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZGVsX2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lu
ZGV4KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wdXRfc2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qdHJ1
ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZhbHNlKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
am5ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdy
ZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyZXEpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9pbW0pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3N3aXRjaF9jaGFyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmV3X2Z1bmNfZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NhbGxfdmFyYXJncyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3N0cmNhdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZlKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXh0X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3Bl
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJv
dyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1Zyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJvZmlsZV93aWxsX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlk
X2NhbGwpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50
SGVscGVyc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxp
bmVBc21Db25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBMTEludE9mZmxpbmVBc21Db25maWdfaAorI2RlZmluZSBMTEludE9mZmxpbmVBc21D
b25maWdfaAorCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4NikKKyNkZWZp
bmUgT0ZGTElORV9BU01fWDg2IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisj
ZW5kaWYKKworI2lmIENQVShBUk12NykKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMQorI2Vs
c2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMAorI2VuZGlmCisKKyNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVm
aW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgQ1BVKEJJR19F
TkRJQU4pCisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMQorI2Vsc2UKKyNkZWZpbmUg
T0ZGTElORV9BU01fQklHX0VORElBTiAwCisjZW5kaWYKKworI2lmIEVOQUJMRShMTElOVF9PU1Jf
VE9fSklUKQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAxCisjZWxzZQorI2RlZmlu
ZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIExMSU5UX0VYRUNVVElP
Tl9UUkFDSU5HCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDEKKyNlbHNl
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNlbmRpZgorCisjZW5k
aWYgLy8gTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
QWxsb2NhdGlvblNwYWNlLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhl
Y3V0YWJsZS5oIgorI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgor
I2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpT
Q2VsbC5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEu
aCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisj
aW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgi
CisjaW5jbHVkZSAiSlN0eXBlSW5mby5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIK
KyNpbmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcu
aCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgor
I2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRl
ICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgT0ZG
TElORV9BU01fT0ZGU0VUT0YoY2xhenosIGZpZWxkKSBPQkpFQ1RfT0ZGU0VUT0YoY2xhenosIGZp
ZWxkKQorCitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3IgeworcHVibGljOgorICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCogZHVtbXkoKTsKK307CisKK2NvbnN0IHVuc2lnbmVkKiBMTEludE9m
ZnNldHNFeHRyYWN0b3I6OmR1bW15KCkKK3sKKyNpbmNsdWRlICJMTEludERlc2lyZWRPZmZzZXRz
LmgiCisgICAgcmV0dXJuIGV4dHJhY3RvclRhYmxlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworaW50IG1haW4oaW50LCBjaGFyKiopCit7CisgICAgLy8gT3V0IG9mIGFuIGFidW5kYW5jZSBv
ZiBjYXV0aW9uLCBtYWtlIHN1cmUgdGhhdCBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkg
aXMgbGl2ZSwKKyAgICAvLyBhbmQgdGhlIGV4dHJhY3RvclRhYmxlIGlzIGxpdmUsIHRvby4KKyAg
ICBwcmludGYoIiVwXG4iLCBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSk7Cisg
ICAgcmV0dXJuIDA7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDIxNTkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKworIyBDcmFzaCBjb3Vyc2Ugb24gdGhlIGxhbmd1YWdlIHRoYXQgdGhpcyBpcyB3cml0dGVu
IGluICh3aGljaCBJIGp1c3QgY2FsbAorIyAiYXNzZW1ibHkiIGV2ZW4gdGhvdWdoIGl0J3MgbW9y
ZSB0aGFuIHRoYXQpOgorIworIyAtIE1vc3RseSBnYXMtc3R5bGUgb3BlcmFuZCBvcmRlcmluZy4g
VGhlIGxhc3Qgb3BlcmFuZCB0ZW5kcyB0byBiZSB0aGUKKyMgICBkZXN0aW5hdGlvbi4gU28gImEg
Oj0gYiIgaXMgd3JpdHRlbiBhcyAibW92IGIsIGEiLiBCdXQgdW5saWtlIGdhcywKKyMgICBjb21w
YXJpc29ucyBhcmUgaW4tb3JkZXIsIHNvICJpZiAoYSA8IGIpIiBpcyB3cml0dGVuIGFzCisjICAg
ImJpbHQgYSwgYiwgLi4uIi4KKyMKKyMgLSAiYiIgPSBieXRlLCAiaCIgPSAxNi1iaXQgd29yZCwg
ImkiID0gMzItYml0IHdvcmQsICJwIiA9IHBvaW50ZXIuCisjICAgQ3VycmVudGx5IHRoaXMgaXMg
anVzdCAzMi1iaXQgc28gImkiIGFuZCAicCIgYXJlIGludGVyY2hhbmdlYWJsZQorIyAgIGV4Y2Vw
dCB3aGVuIGFuIG9wIHN1cHBvcnRzIG9uZSBidXQgbm90IHRoZSBvdGhlci4KKyMKKyMgLSBJbiBn
ZW5lcmFsLCB2YWxpZCBvcGVyYW5kcyBmb3IgbWFjcm8gaW52b2NhdGlvbnMgYW5kIGluc3RydWN0
aW9ucyBhcmUKKyMgICByZWdpc3RlcnMgKGVnICJ0MCIpLCBhZGRyZXNzZXMgKGVnICI0W3QwXSIp
LCBiYXNlLWluZGV4IGFkZHJlc3NlcworIyAgIChlZyAiN1t0MCwgdDEsIDJdIiksIGFic29sdXRl
IGFkZHJlc3NlcyAoZWcgIjB4YTAwMDAwMDBbXSIpLCBvciBsYWJlbHMKKyMgICAoZWcgIl9mb28i
IG9yICIuZm9vIikuIE1hY3JvIGludm9jYXRpb25zIGNhbiBhbHNvIHRha2UgYW5vbnltb3VzCisj
ICAgbWFjcm9zIGFzIG9wZXJhbmRzLiBJbnN0cnVjdGlvbnMgY2Fubm90IHRha2UgYW5vbnltb3Vz
IG1hY3Jvcy4KKyMKKyMgLSBMYWJlbHMgbXVzdCBoYXZlIG5hbWVzIHRoYXQgYmVnaW4gd2l0aCBl
aXRoZXIgIl8iIG9yICIuIi4gIEEgIi4iIGxhYmVsCisjICAgaXMgbG9jYWwgYW5kIGdldHMgcmVu
YW1lZCBiZWZvcmUgY29kZSBnZW4gdG8gbWluaW1pemUgbmFtZXNwYWNlCisjICAgcG9sbHV0aW9u
LiBBICJfIiBsYWJlbCBpcyBhbiBleHRlcm4gc3ltYm9sIChpLmUuICIuZ2xvYmwiKS4gVGhlICJf
IgorIyAgIG1heSBvciBtYXkgbm90IGJlIHJlbW92ZWQgZHVyaW5nIGNvZGUgZ2VuIGRlcGVuZGlu
ZyBvbiB3aGV0aGVyIHRoZSBhc20KKyMgICBjb252ZW50aW9ucyBmb3IgQyBuYW1lIG1hbmdsaW5n
IG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0gbWFuZGF0ZSBhICJfIgorIyAgIHByZWZpeC4KKyMKKyMg
LSBBICJtYWNybyIgaXMgYSBsYW1iZGEgZXhwcmVzc2lvbiwgd2hpY2ggbWF5IGJlIGVpdGhlciBh
bm9ueW1vdXMgb3IKKyMgICBuYW1lZC4gQnV0IHRoaXMgaGFzIGNhdmVhdHMuICJtYWNybyIgY2Fu
IHRha2UgemVybyBvciBtb3JlIGFyZ3VtZW50cywKKyMgICB3aGljaCBtYXkgYmUgbWFjcm9zIG9y
IGFueSB2YWxpZCBvcGVyYW5kcywgYnV0IGl0IGNhbiBvbmx5IHJldHVybgorIyAgIGNvZGUuIEJ1
dCB5b3UgY2FuIGRvIFR1cmluZy1jb21wbGV0ZSB0aGluZ3MgdmlhIGNvbnRpbnVhdGlvbiBwYXNz
aW5nCisjICAgc3R5bGU6ICJtYWNybyBmb28gKGEsIGIpIGIoYSkgZW5kIGZvbyhmb28sIGZvbyki
LiBBY3R1YWxseSwgZG9uJ3QgZG8KKyMgICB0aGF0LCBzaW5jZSB5b3UnbGwganVzdCBjcmFzaCB0
aGUgYXNzZW1ibGVyLgorIworIyAtIEFuICJpZiIgaXMgYSBjb25kaXRpb25hbCBvbiBzZXR0aW5n
cy4gQW55IGlkZW50aWZpZXIgc3VwcGxpZWQgaW4gdGhlCisjICAgcHJlZGljYXRlIG9mIGFuICJp
ZiIgaXMgYXNzdW1lZCB0byBiZSBhICNkZWZpbmUgdGhhdCBpcyBhdmFpbGFibGUKKyMgICBkdXJp
bmcgY29kZSBnZW4uIFNvIHlvdSBjYW4ndCB1c2UgImlmIiBmb3IgY29tcHV0YXRpb24gaW4gYSBt
YWNybywgYnV0CisjICAgeW91IGNhbiB1c2UgaXQgdG8gc2VsZWN0IGRpZmZlcmVudCBwaWVjZXMg
b2YgY29kZSBmb3IgZGlmZmVyZW50CisjICAgcGxhdGZvcm1zLgorIworIyAtIEFyZ3VtZW50cyB0
byBtYWNyb3MgZm9sbG93IGxleGljYWwgc2NvcGluZyByYXRoZXIgdGhhbiBkeW5hbWljIHNjb3Bp
bmcuCisjICAgQ29uc3QncyBhbHNvIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgYW5kIG1heSBvdmVy
cmlkZSAoaGlkZSkgYXJndW1lbnRzCisjICAgb3Igb3RoZXIgY29uc3RzLiBBbGwgdmFyaWFibGVz
IChhcmd1bWVudHMgYW5kIGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gb3BlcmFuZHMu
IEFkZGl0aW9uYWxseSwgYXJndW1lbnRzIChidXQgbm90IGNvbnN0YW50cykgY2FuIGJlIGJvdW5k
CisjICAgdG8gbWFjcm9zLgorCisKKyMgVGhlc2UgZGVjbGFyYXRpb25zIG11c3QgbWF0Y2ggaW50
ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmguCitjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gNDgK
K2NvbnN0IEFyZ3VtZW50Q291bnQgPSAtNDgKK2NvbnN0IENhbGxlckZyYW1lID0gLTQwCitjb25z
dCBDYWxsZWUgPSAtMzIKK2NvbnN0IFNjb3BlQ2hhaW4gPSAtMjQKK2NvbnN0IFJldHVyblBDID0g
LTE2Citjb25zdCBDb2RlQmxvY2sgPSAtOAorCisjIERlY2xhcmUgc29tZSBhbGlhc2VzIGZvciB0
aGUgcmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAorCisjIE9mZnNldHMgbmVl
ZGVkIGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRpb24uCitpZiBCSUdfRU5E
SUFOCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSA0
CitlbHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQg
PSAwCitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCitjb25zdCBJbnQz
MlRhZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51bGxUYWcgPSAtMworY29u
c3QgVW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQorY29uc3QgRW1wdHlWYWx1
ZVRhZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29uc3QgTG93ZXN0VGFnID0g
RGVsZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25zdCBTdHJpbmdUeXBlID0g
NQorY29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFncyBjb25zdGFudHMuCitjb25z
dCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVtZW50c0hhc0luc3RhbmNl
ID0gMgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDgKKworIyBIZWFwIGFs
bG9jYXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0g
MQorCisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3QgRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNvbnN0YW50cy4KK2NvbnN0
IEdsb2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0IEZ1bmN0aW9uQ29kZSA9
IDIKKworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0aGUgYXJndW1l
bnQgY291bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRhZ09mZnNl
dAorCisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25zdCBWZWN0b3JTaXplT2Zm
c2V0ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisjIFN0cmluZyBmbGFncy4K
K2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxpdGllcworbWFjcm8gY3Jh
c2goKQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3ZlIDAsIHQwCisgICAgY2Fs
bCB0MAorZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAgaWYgQVNTRVJUX0VOQUJM
RUQKKyAgICAgICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAgY3Jhc2goKQorICAgIC5vazoKKyAg
ICBlbmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVzdGlu
YXRpb25SZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlv
blJlZ2lzdGVyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBvcCBkZXN0aW5hdGlvblJlZ2lzdGVy
CisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIHJlc3RvcmVS
ZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQorICAgIGlmIEFSTXY3Cisg
ICAgICAgIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHB1
c2ggc291cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQK
KworbWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQworICAg
IGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZzZXQpCisgICAgbG9h
ZGkgcGNPZmZzZXQsIHQwCisgICAgbHNoaWZ0aSAyLCB0MAorICAgIGFkZHAgdDAsIFBDCisgICAg
am1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAgbG9hZGkgQXJn
dW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFj
cm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1v
dmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgIGVsc2lmIFg4NgorICAgICAg
ICBwb2tlIGFyZzIsIDAKKyAgICAgICAgcG9rZSBhcmcxLCAxCisgICAgZWxzZQorICAgICAgICBl
cnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCittYWNybyBjYWxsSGVscGVy
KGhlbHBlcikKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUgdDAsIFBDCisg
ICAgbW92ZSB0MSwgY2ZyCitlbmQKKworbWFjcm8gdHJhY2VFeGVjdXRpb24oKQorICAgIGlmIEVY
RUNVVElPTl9UUkFDSU5HCisgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3RyYWNlKQorICAgIGVu
ZAorZW5kCisKKyMgQ2FsbCBhIGhlbHBlciBmb3IgY2FsbCBvcGNvZGVzLgorbWFjcm8gY2FsbENh
bGxIZWxwZXIoYWR2YW5jZSwgaGVscGVyLCBhY3Rpb24pCisgICAgYWRkcCBhZHZhbmNlICogNCwg
UEMsIHQwCisgICAgc3RvcmVwIHQwLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAg
ICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUgdDEsIGNmcgorICAgIGFjdGlvbih0
MCkKK2VuZAorCittYWNybyBzbG93UGF0aEZvckNhbGwoYWR2YW5jZSwgaGVscGVyKQorICAgIGNh
bGxDYWxsSGVscGVyKAorICAgICAgICBhZHZhbmNlLAorICAgICAgICBoZWxwZXIsCisgICAgICAg
IG1hY3JvIChjYWxsZWUpCisgICAgICAgICAgICBjYWxsIGNhbGxlZQorICAgICAgICAgICAgZGlz
cGF0Y2hBZnRlckNhbGwoKQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hU
b0pJVChpbmNyZW1lbnQsIGFjdGlvbikKKyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICAgICAgYmFkZGlzIGluY3JlbWVudCwgQ29kZUJsb2Nr
OjptX2V4ZWN1dGVDb3VudGVyW3QwXSwgLmRvbmUKKyAgICAgICAgYWN0aW9uKCkKKyAgICAuZG9u
ZToKKyAgICBlbmQKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yUHJvbG9ndWUoKQor
ICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDUsCisgICAgICAgIG1hY3JvICgpCisgICAg
ICAgICAgICBjQ2FsbDIoX2xsaW50X2VudHJ5X29zciwgY2ZyLCBQQykKKyAgICAgICAgICAgIG1v
dmUgdDEsIGNmcgorICAgICAgICAgICAgam1wIHQwCisgICAgICAgIGVuZCkKK2VuZAorCittYWNy
byBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAg
ICAgMSwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAgIGNDYWxsMihfbGxpbnRfbG9vcF9v
c3IsIGNmciwgUEMpCisgICAgICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgICAgIGptcCB0
MAorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3Vl
KCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxMCwKKyAgICAgICAgbWFjcm8gKCkK
KyAgICAgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlcGxhY2UpCisgICAgICAgIGVuZCkKK2Vu
ZAorCittYWNybyBhc3NlcnROb3RDb25zdGFudChpbmRleCkKKyAgICBhc3NlcnQobWFjcm8gKG9r
KSBiaWIgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBvayBlbmQpCitlbmQKKwor
IyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIElu
ZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShpbmRl
eCwgdGFnLCBwYXlsb2FkKQorICAgIGJpYWVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1w
IC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTog
aWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsb2FkcCBUYWdPZmZzZXRbcGF5bG9h
ZCwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4
LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBtYXkgYmUg
dGhlIHNhbWUgcmVnaXN0ZXIuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhpbmRl
eCwgdGFnLCBwYXlsb2FkKQorICAgIGJpYWVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1w
IC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhZworICAgIGxv
YWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtw
YXlsb2FkXSwgdGFnCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBp
bmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAg
ICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbHNoaWZ0aSAzLCBpbmRleAorICAgIGFkZHAgaW5k
ZXgsIHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdGFnXSwgcGF5bG9hZAorICAgIGxvYWRw
IFRhZ09mZnNldFt0YWddLCB0YWcKKy5kb25lOgorZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywgcGF5bG9hZCwgc2xvdykKKyAgICBi
aWFlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgZXhwZWN0ZWRUYWcsIHNsb3cKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisu
Y29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9h
ZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGlu
ZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAg
IyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBiaW5lcSBUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgs
IDhdLCBleHBlY3RlZFRhZywgc2xvdworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwg
aW5kZXgsIDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAorCittYWNybyB3cml0ZUJhcnJpZXIodGFn
LCBwYXlsb2FkKQorICAgICMgTm90aGluZyB0byBkbyBzaW5jZSB3ZSBkb24ndCBoYXZlIGEgZ2Vu
ZXJhdGlvbmFsIG9yIGluY3JlbWVudGFsIGNvbGxlY3Rvci4KK2VuZAorCisjIEVudHJ5cG9pbnRz
IGludG8gdGhlIGludGVycHJldGVyCisKKyMgRG8gdGhlIGJhcmUgbWluaW11bSByZXF1aXJlZCB0
byBleGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBsZWF2ZSB0aGUgQ29kZUJsb2NrKgorIyBp
biB0MQorbWFjcm8gcHJvbG9ndWUob2Zmc2V0T2ZDb2RlQmxvY2spCisgICAgcHJlc2VydmVSZXR1
cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIAorICAgICMgU2V0IHVwIHRoZSBjYWxsIGZyYW1l
LgorICAgIHN0b3JlcCB0MiwgUmV0dXJuUENbY2ZyXQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0
MQorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0MV0sIHQxCisgICAgbG9hZHAg
b2Zmc2V0T2ZDb2RlQmxvY2tbdDFdLCB0MQorICAgIHN0b3JlcCB0MSwgQ29kZUJsb2NrW2Nmcl0K
KyAgICAKKyAgICAjIFNldCB1cCB0aGUgUEMuCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3Ry
dWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKK2Vu
ZAorCittYWNybyBmdW5jdGlvbkluaXRpYWxpemF0aW9uKCkKKyAgICAjIFByb2ZpbGUgdGhlIGFy
Z3VtZW50cy4gVW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBubyBjaG9pY2UgYnV0IHRvIGRvIHRoaXMu
CisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCB0MAorICAgIGJ0aXog
dDAsIC5hcmd1bWVudFByb2ZpbGVEb25lCisgICAgbHNoaWZ0aSAzLCB0MAorICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDFd
LCB0MworLmFyZ3VtZW50UHJvZmlsZUxvb3A6CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDBd
LCB0MgorICAgIHN0b3JlaSB0MiwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRb
dDNdCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIs
IFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBhZGRwIHNp
emVvZiBWYWx1ZVByb2ZpbGUsIHQzCisgICAgYnN1YmlueiA4LCB0MCwgLmFyZ3VtZW50UHJvZmls
ZUxvb3AKKy5hcmd1bWVudFByb2ZpbGVEb25lOgorICAgIAorICAgICMgQ2hlY2sgc3RhY2sgaGVp
Z2h0LgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1DYWxsZWVSZWdpc3RlcnNbdDFdLCB0MAor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDIKKyAgICBsb2FkcCBKU0ds
b2JhbERhdGE6OmludGVycHJldGVyW3QyXSwgdDIKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRk
cCB0MCwgY2ZyLCB0MAorICAgIGJwYWVxIEludGVycHJldGVyOjptX3JlZ2lzdGVyRmlsZSArIFJl
Z2lzdGVyRmlsZTo6bV9lbmRbdDJdLCB0MCwgLnN0YWNrSGVpZ2h0T0sKKworICAgICMgU3RhY2sg
aGVpZ2h0IGNoZWNrIGZhaWxlZCAtIG5lZWQgdG8gY2FsbCBhIGhlbHBlci4KKyAgICBjYWxsSGVs
cGVyKF9sbGludF9yZWdpc3Rlcl9maWxlX2NoZWNrKQorLnN0YWNrSGVpZ2h0T0s6CitlbmQKKwor
bWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgaGVscGVyKQorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisgICAgYmllcSB0MCwgQ29kZUJs
b2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKKyAgICBjYWxsSGVscGVyKGhlbHBl
cikKKyAgICBqbXAgZG9uZUxhYmVsCitlbmQKKworX2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6Cisg
ICAgcHJvbG9ndWUoUHJvZ3JhbUV4ZWN1dGFibGU6Om1fcHJvZ3JhbUNvZGVCbG9jaykKKyAgICBj
aGVja1N3aXRjaFRvSklURm9yUHJvbG9ndWUoKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50
X2V2YWxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoRXZhbEV4ZWN1dGFibGU6Om1fZXZhbENvZGVC
bG9jaykKKyAgICBjaGVja1N3aXRjaFRvSklURm9yUHJvbG9ndWUoKQorICAgIGRpc3BhdGNoKDAp
CisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKEZ1
bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsKQorLmZ1bmN0aW9uRm9yQ2FsbEJl
Z2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRG
b3JQcm9sb2d1ZSgpCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3RfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoRnVuY3Rpb25FeGVjdXRhYmxlOjpt
X2NvZGVCbG9ja0ZvckNvbnN0cnVjdCkKKy5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgorICAg
IGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JQcm9sb2d1
ZSgpCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tG
b3JDYWxsKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9s
bGludF9oZWxwZXJfY2FsbF9hcml0eUNoZWNrKQorCisKK19sbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9j
b2RlQmxvY2tGb3JDYWxsKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RCZWdpbiwgX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKKworIyBJbnN0
cnVjdGlvbiBpbXBsZW1lbnRhdGlvbnMKKworX2xsaW50X29wX2VudGVyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkaSBDb2RlQmxv
Y2s6Om1fbnVtVmFycywgdDIKKyAgICBidGl6IHQyLCAub3BFbnRlckRvbmUKKyAgICBtb3ZlIFVu
ZGVmaW5lZFRhZywgdDAKKyAgICBtb3ZlIDAsIHQxCisub3BFbnRlckxvb3A6CisgICAgc3ViaSAx
LCB0MgorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgYnRpbnogdDIsIC5vcEVudGVyTG9vcAor
Lm9wRW50ZXJEb25lOgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX2NyZWF0ZV9hY3Rp
dmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFjdGl2
YXRpb25Eb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9u
KQorLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRf
b3BfaW5pdF9sYXp5X3JlZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAg
IHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKwor
CitfbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZh
bHVlVGFnLCAub3BDcmVhdGVBcmd1bWVudHNEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2NyZWF0ZV9hcmd1bWVudHMpCisub3BDcmVhdGVBcmd1bWVudHNEb25lOgorICAgIGRpc3Bh
dGNoKDIpCisKKworbWFjcm8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNpemVDbGFzc0luZGV4LCBj
bGFzc0luZm9PZmZzZXQsIG9mZnNldE9mUHJvcGVydHlTdG9yYWdlLCBzdHJ1Y3R1cmUsIHJlc3Vs
dCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBzbG93Q2FzZSkKKyAgICBjb25zdCBvZmZzZXRPZk15U2l6
ZUNsYXNzID0gSlNHbG9iYWxEYXRhOjpoZWFwICsgSGVhcDo6bV9vYmplY3RTcGFjZSArIEFsbG9j
YXRpb25TcGFjZTo6bV9tYXJrZWRTcGFjZSArIE1hcmtlZFNwYWNlOjptX3ByZWNpc2VTaXplQ2xh
c3NlcyArIHNpemVDbGFzc0luZGV4ICogc2l6ZW9mIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MKKyAg
ICAKKyAgICAjIEZJWE1FOiB3ZSBjYW4gZ2V0IHRoZSBnbG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBm
cm9tIHRoZSBzdGFjay4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2NyYXRjaDEKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVtzY3JhdGNoMV0sIHNjcmF0Y2gxCisgICAgCisg
ICAgIyBHZXQgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuICAgIAorICAgIGxvYWRwIG9m
ZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxs
W3NjcmF0Y2gxXSwgcmVzdWx0CisgICAgYnRweiByZXN1bHQsIHNsb3dDYXNlCisgICAgCisgICAg
IyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCisgICAgbG9hZHAgW3Jlc3Vs
dF0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gxLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsg
TWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0KKworICAgICMg
SW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgorICAgIGxvYWRwIGNsYXNzSW5mb09mZnNldFtzY3JhdGNo
MV0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gyLCBbcmVzdWx0XQorICAgIHN0b3JlcCBz
dHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQorICAgIHN0b3JlcCAwLCBKU09i
amVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCisgICAgYWRkcCBzaXplb2YgSlNPYmplY3QsIHJl
c3VsdCwgc2NyYXRjaDEKKyAgICBzdG9yZXAgc2NyYXRjaDEsIG9mZnNldE9mUHJvcGVydHlTdG9y
YWdlW3Jlc3VsdF0KK2VuZAorCitfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQor
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ3JlYXRlVGhpc1Ns
b3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAg
ICBsb2FkcCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFt0MF0sIHQyCisgICAgYnRweiB0MiwgLm9w
Q3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNp
emVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIEpTRmlu
YWxPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlLCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhp
c1Nsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNl
dFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQor
ICAgIGRpc3BhdGNoKDMpCisKKy5vcENyZWF0ZVRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9jcmVhdGVfdGhpcykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9n
ZXRfY2FsbGVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBsb2FkcCBQYXlsb2FkT2Zmc2V0ICsgQ2FsbGVlW2Nmcl0sIHQxCisgICAgc3RvcmVpIENlbGxU
YWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NvbnZlcnRfdGhpczoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MAorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6
bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNTbG93CisgICAgZGlzcGF0Y2go
MikKKworLm9wQ29udmVydFRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9j
b252ZXJ0X3RoaXMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X29iamVjdDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9i
YWxPYmplY3Q6Om1fZW1wdHlPYmplY3RTdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGFsbG9jYXRlQmFz
aWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNG
aW5hbE9iamVjdENsYXNzSW5mbywgSlNGaW5hbE9iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2UsIHQx
LCB0MCwgdDIsIHQzLCAub3BOZXdPYmplY3RTbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAg
IHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BOZXdPYmplY3RT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfb2JqZWN0KQorICAgIGRpc3Bh
dGNoKDIpCisKKworX2xsaW50X29wX25ld19hcnJheToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheSkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9uZXdfYXJyYXlfYnVmZmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2FycmF5X2J1ZmZlcikKKyAgICBkaXNwYXRj
aCg0KQorCisKK19sbGludF9vcF9uZXdfcmVnZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X3JlZ2V4cCkKKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9tb3Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEs
IHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3Jl
aSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xs
aW50X29wX25vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQzCisgICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5vcE5vdFNsb3cKKyAgICB4b3Jp
IDEsIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkg
dDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOb3RT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ub3QpCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BD
XSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQy
LCB0MywgdDEpCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
CisgICAgYmluZXEgdDIsIHQzLCAub3BFcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BF
cVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wRXFTbG93CisgICAgbG9hZGkgNFtQQ10s
IHQyCisgICAgY2llcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNl
dFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQor
ICAgIGRpc3BhdGNoKDQpCisKKy5vcEVxU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZXFfbnVsbDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisg
ICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEg
dDEsIENlbGxUYWcsIC5vcEVxTnVsbEltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MQorICAgIHRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQorICAgIGptcCAub3BFcU51
bGxOb3RJbW1lZGlhdGUKKy5vcEVxTnVsbEltbWVkaWF0ZToKKyAgICBjaWVxIHQxLCBOdWxsVGFn
LCB0MgorICAgIGNpZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKKyAgICBvcmkgdDIsIHQxCisub3BF
cU51bGxOb3RJbW1lZGlhdGU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIs
IHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX25lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2Fk
aSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVxIHQyLCBD
ZWxsVGFnLCAub3BOZXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAg
ICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xl
YW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX25lcSkKKyAgICBkaXNwYXRjaCg0KQorICAgIAorCitfbGxpbnRf
b3BfbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRp
IFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6
bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCwgdDEKKyAgICBqbXAgLm9wTmVxTnVsbE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0
ZToKKyAgICBjaW5lcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFn
LCB0MQorICAgIGFuZGkgdDIsIHQxCisub3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3Jl
aSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHN0cmljdEVx
KGVxdWFsaXR5T3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAg
ICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0
MiwgdDMsIC5vcFN0cmljdGVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAg
IGJpbmVxIHQyLCBDZWxsVGFnLCAubm90U3RyaW5nCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQzCisgICAg
YmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmlu
Z1R5cGUsIC5ub3RTdHJpbmcKKyAgICBiYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJ
bmZvOjptX3R5cGVbdDNdLCBTdHJpbmdUeXBlLCAuc2xvdworLm5vdFN0cmluZzoKKyAgICBsb2Fk
aSA0W1BDXSwgdDIKKyAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIHQwKQorICAgIHN0b3Jl
aSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisuc2xvdzoKKyAgICBjYWxs
SGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCg0KQorZW5kCisKK19sbGludF9vcF9zdHJpY3Rl
cToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0
LCByZXN1bHQpIGNpZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9oZWxwZXJfc3Ry
aWN0ZXEpCisKKworX2xsaW50X29wX3N0cmljdG5lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpbmVxIGxlZnQsIHJpZ2h0
LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVscGVyX3N0cmljdG5lcSkKKworCitfbGxpbnRfb3BfbGVz
czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xl
c3MpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbGVzc2VxOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzc2VxKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX2dyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyKQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX2dyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2dyZWF0ZXJlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9wcmVfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVJbmNTbG93Cisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBiYWRkaW8gMSwgdDEs
IC5vcFByZUluY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0K
KyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9wcmVfaW5jKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3ByZV9kZWM6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZURlY1Nsb3cKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJzdWJpbyAxLCB0MSwgLm9wUHJlRGVj
U2xvdworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3Bh
dGNoKDIpCisKKy5vcFByZURlY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3By
ZV9kZWMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9zdF9pbmM6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQor
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3RJbmNTbG93
CisgICAgYmllcSB0MCwgdDEsIC5vcFBvc3RJbmNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDIKKyAgICBtb3ZlIHQyLCB0MworICAgIGJhZGRpbyAxLCB0MywgLm9w
UG9zdEluY1Nsb3cKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQor
ICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0Mywg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorLm9wUG9zdEluY0RvbmU6CisgICAgZGlzcGF0Y2go
MykKKworLm9wUG9zdEluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3Rf
aW5jKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Bvc3RfZGVjOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0RGVjU2xvdwor
ICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0RGVjRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBic3ViaW8gMSwgdDMsIC5vcFBv
c3REZWNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAg
ICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3REZWNEb25lOgorICAgIGRpc3BhdGNoKDMp
CisKKy5vcFBvc3REZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2Rl
YykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF90b19qc251bWJlcjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisg
ICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgYmllcSB0
MiwgSW50MzJUYWcsIC5vcFRvSnNudW1iZXJJc0ludAorICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVl
VGFnLCAub3BUb0pzbnVtYmVyU2xvdworLm9wVG9Kc251bWJlcklzSW50OgorICAgIHN0b3JlaSB0
MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9Kc251bWJlclNsb3c6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3RvX2pzbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX25lZ2F0ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10s
IHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAg
bG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQyCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BOZWdhdGVTcmNOb3RJ
bnQKKyAgICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CisgICAgbmVnaSB0Mgor
ICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQy
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKy5vcE5lZ2F0ZVNy
Y05vdEludDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xvdworICAgIHhvcmkg
MHg4MDAwMDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisK
Ky5vcE5lZ2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lZ2F0ZSkKKyAg
ICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJh
dGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10s
IHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwg
dDMsIHQxKQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAor
ICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAgIGJpbmVxIHQzLCBJbnQzMlRh
ZywgLm9wMk5vdEludAorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGludGVnZXJPcGVyYXRpb25B
bmRTdG9yZSh0MywgdDEsIHQwLCAuc2xvdywgdDIpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5v
dEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUg
c2Vjb25kIG9wZXJhbmQgY291bGQgYmUgYW55dGhpbmcuCisgICAgYmlhIHQyLCBMb3dlc3RUYWcs
IC5zbG93CisgICAgYmliIHQzLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBi
aW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MSwgZnQxCisgICAgam1wIC5vcDFO
b3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQor
Lm9wMU5vdEludFJlYWR5OgorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGZpaTJkIHQwLCB0Miwg
ZnQwCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIs
IHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDJOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVy
YW5kIGlzIGRlZmluaXRlbHkgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgaXMgZGVmaW5pdGVs
eSBub3QuCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgYmlhIHQzLCBMb3dlc3RUYWcsIC5zbG93
CisgICAgY2kyZCB0MCwgZnQwCisgICAgZmlpMmQgdDEsIHQzLCBmdDEKKyAgICBkb3VibGVPcGVy
YXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDIsIDhdCisgICAgZGlzcGF0
Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkK
K2VuZAorCittYWNybyBiaW5hcnlPcChpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24s
IGhlbHBlcikKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJU
YWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGludGVnZXJPcGVyYXRp
b24obGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09m
ZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zm
c2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAgICAgZG91YmxlT3BlcmF0aW9u
LCBoZWxwZXIpCitlbmQKKworX2xsaW50X29wX2FkZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYmFkZGlvIGxl
ZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxl
ZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9hZGQpCisKKworX2xsaW50X29w
X211bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgc2xvdykgYm11bGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBtdWxkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9tdWwpCisKKworX2xsaW50X29wX3N1YjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1Ymlv
IGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJk
IGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9zdWIpCisKKworX2xsaW50
X29wX2RpdjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgK
KyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAg
ICAgICAgICBjaTJkIGxlZnQsIGZ0MAorICAgICAgICAgICAgY2kyZCByaWdodCwgZnQxCisgICAg
ICAgICAgICBkaXZkIGZ0MCwgZnQxCisgICAgICAgICAgICBiY2QyaSBmdDEsIHJpZ2h0LCAubm90
SW50CisgICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4
XQorICAgICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhd
CisgICAgICAgICAgICBqbXAgLmRvbmUKKyAgICAgICAgLm5vdEludDoKKyAgICAgICAgICAgIHN0
b3JlZCBmdDEsIFtjZnIsIGluZGV4LCA4XQorICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGRpdmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2RpdikKKworCitfbGxpbnRfb3BfbW9kOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbW9kKQorICAgIGRpc3BhdGNoKDQp
CisKKworbWFjcm8gYml0T3Aob3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0
MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQz
LCB0MSkKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAg
ICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xv
dworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIG9wZXJhdGlvbih0MSwgdDAsIC5zbG93KQorICAg
IHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhl
bHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRfb3BfbHNoaWZ0Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCBzbG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl9sc2hpZnQpCisKKworX2xsaW50X29wX3JzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgcnNoaWZ0aSBsZWZ0
LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfcnNoaWZ0KQorCisKK19sbGludF9v
cF91cnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQK
KyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX3Vyc2hpZnQpCisKKworX2xsaW50X29wX2JpdGFuZDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykg
YW5kaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0YW5kKQorCisK
K19sbGludF9vcF9iaXR4b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAg
ICAgICBfbGxpbnRfaGVscGVyX2JpdHhvcikKKworCitfbGxpbnRfb3BfYml0b3I6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3cpIG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0b3IpCisK
KworX2xsaW50X29wX2JpdG5vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDEpCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MSwgOF0sIHQzCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3BCaXRub3RTbG93
CisgICAgbm90aSB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
c3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKwor
Lm9wQml0bm90U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfYml0bm90KQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQo
dDApCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDaGVja0hh
c0luc3RhbmNlU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNIYXNJbnN0YW5j
ZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDaGVja0hh
c0luc3RhbmNlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY2hlY2tfaGFzX2lu
c3RhbmNlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luc3RhbmNlb2Y6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhl
IGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisgICAgIyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAxMltQQ10sIHQwCisgICAgYXNzZXJ0Tm90Q29uc3Rh
bnQodDApCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5j
ZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICAKKyAgICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BD
XSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBhc3NlcnROb3RDb25zdGFudCh0
MSkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcEluc3RhbmNl
b2ZTbG93CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBDZWxsVGFnLCAub3BJbnN0
YW5jZW9mU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQxCisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90
eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9m
U2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgCisgICAg
IyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3ZlIDEs
IHQwCisub3BJbnN0YW5jZW9mTG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qy
XSwgdDIKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldCwg
dDIKKyAgICBicGVxIHQyLCB0MSwgLm9wSW5zdGFuY2VvZkRvbmUKKyAgICBidGlueiB0MiwgLm9w
SW5zdGFuY2VvZkxvb3AKKworICAgIG1vdmUgMCwgdDAKKy5vcEluc3RhbmNlb2ZEb25lOgorICAg
IHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3BJbnN0YW5j
ZW9mU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW5zdGFuY2VvZikKKyAgICBk
aXNwYXRjaCg1KQorCisKK19sbGludF9vcF90eXBlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90eXBlb2YpCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfaXNfdW5kZWZpbmVkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfaXNfdW5kZWZpbmVkKQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX2lzX2Jvb2xlYW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9pc19ib29sZWFuKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX2lzX251bWJlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2lzX251bWJlcikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19z
dHJpbmc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9pc19zdHJpbmcpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfb2JqZWN0Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfb2Jq
ZWN0KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX2Z1bmN0aW9uOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfZnVuY3Rpb24p
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaW46CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbikKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9yZXNvbHZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcmVzb2x2ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9y
ZXNvbHZlX3NraXA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9yZXNvbHZlX3NraXApCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyByZXNvbHZl
R2xvYmFsKHNsb3cpCisgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENd
ICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgorICAgICMgOFtQQ10gICBQcm9wZXJ0eSBpZGVu
dGlmaWVyIGluZGV4IGluIHRoZSBjb2RlIGJsb2NrLgorICAgICMgMTJbUENdICBTdHJ1Y3R1cmUg
cG9pbnRlciwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgIyAx
NltQQ10gIE9mZnNldCBpbiBnbG9iYWwgb2JqZWN0LCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVj
b2RlIGdlbmVyYXRvci4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDAKKyAgICBicG5lcSB0MCwgMTJbUENdLCBzbG93CisgICAgbG9hZGkgMTZb
UENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFt0MCwgdDEsIDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MiwgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdCitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICByZXNvbHZlR2xvYmFsKC5vcFJlc29sdmVHbG9iYWxTbG93KQorICAgIGRpc3BhdGNo
KDUpCisKKy5vcFJlc29sdmVHbG9iYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNwYXRjaCg1KQorCisKKyMgR2l2ZXMgeW91IHRoZSBz
Y29wZSBpbiB0MCwgd2hpbGUgYWxsb3dpbmcgeW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRp
dGlvbmFsIGNoZWNrcyBvbiB0aGUKKyMgc2NvcGVzIGFzIHRoZXkgYXJlIHRyYXZlcnNlZC4gc2Nv
cGVDaGVjaygpIGlzIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSByZWdpc3RlcgorIyBo
b2xkaW5nIHRoZSBzY29wZSwgYW5kIGEgcmVnaXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc2Ny
YXRjaC4gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QKKyMgdXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQg
c3R1ZmYgaW4gdDMgaWYgbmVlZCBiZS4KK21hY3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3Bl
cmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2FkcCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtj
ZnJdLCB0MAorICAgIGxvYWRpIGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIKKyAgICAKKyAgICBi
dGl6IHQyLCAuZG9uZQorICAgIAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGJp
bmVxIENvZGVCbG9jazo6bV9jb2RlVHlwZVt0MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AKKyAgICBi
dGJ6IENvZGVCbG9jazo6bV9uZWVkc0Z1bGxTY29wZUNoYWluW3QxXSwgLmxvb3AKKyAgICAKKyAg
ICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEKKworICAgICMg
TmVlZCB0byBjb25kaXRpb25hbGx5IHNraXAgb3ZlciBvbmUgc2NvcGUuCisgICAgYmllcSBUYWdP
ZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2YXRpb24KKyAgICBzY29w
ZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisu
bm9BY3RpdmF0aW9uOgorICAgIHN1YmkgMSwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQor
Lmxvb3A6CisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6
Om5leHRbdDBdLCB0MAorICAgIHN1YmkgMSwgdDIKKyAgICBidGlueiB0MiwgLm9wR2V0U2NvcGVk
VmFyTG9vcAorCisuZG9uZToKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1p
YzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFs
RGF0YVtzcF0sIHQzCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJl
W3QzXSwgdDMKKyAgICBnZXRTY29wZSgKKyAgICAgICAgMjBbUENdLAorICAgICAgICBtYWNybyAo
c2NvcGUsIHNjcmF0Y2gpCisgICAgICAgICAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0
W3Njb3BlXSwgc2NyYXRjaAorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVtz
Y3JhdGNoXSwgdDMsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93CisgICAgICAgIGVu
ZCkKKyAgICByZXNvbHZlR2xvYmFsKC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdykKKyAgICBk
aXNwYXRjaCg2KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZSkKKyAgICBkaXNwYXRjaCg2KQorCisub3BSZXNv
bHZlR2xvYmFsRHluYW1pY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29s
dmVfZ2xvYmFsKQorICAgIGRpc3BhdGNoKDYpCisKKworX2xsaW50X29wX2dldF9zY29wZWRfdmFy
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgor
ICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIElu
ZGV4IG9mIHJlZ2lzdGVyIGluIHRoZSBzY29wZS4KKyAgICAjIDEyW1BDXSAgRGUgQnJ1aWppbiBp
bmRleC4KKyAgICBnZXRTY29wZSgxMltQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQor
ICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRwIFNjb3Bl
Q2hhaW5Ob2RlOjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1f
cmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgdDMKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgZ2V0U2NvcGUoOFtQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRj
aCkgZW5kKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MywgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQzLCB0
MikKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBK
U1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdP
ZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhd
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0Mwor
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9i
YWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0
MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nmciwg
dDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3Rb
dDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDMsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MywgOF0sIHQzCisgICAgd3JpdGVCYXJyaWVyKHQyLCB0MykKKyAgICBzdG9yZWkg
dDIsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W3Qw
LCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX2Jhc2U6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZl
X2Jhc2UpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZW5zdXJlX3Byb3BlcnR5X2V4
aXN0czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bf
cmVzb2x2ZV93aXRoX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9yZXNvbHZlX3dpdGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBX
ZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBk
byBub3QgbW9kaWZ5IHRoZQorICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cgZm9y
IHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKKyAgICAjIHBpbmct
cG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3
aWxsIGNvbnRpbnVlCisgICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBB
dCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAorICAgICMgd2Ugd291bGQg
aGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAx
NltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcs
IHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZHAgSlNP
YmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKKyAgICBicG5lcSBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAg
bG9hZGkgVGFnT2Zmc2V0W3QwLCB0Ml0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwg
dDJdLCB0MgorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVp
IHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goOCkKKworLm9wR2V0
QnlJZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9pZCkKKyAgICBk
aXNwYXRjaCg4KQorCisKK19sbGludF9vcF9wdXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZGkgMTJbUENd
LCB0MgorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAg
YnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGxv
YWRpIDIwW1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICB3cml0ZUJhcnJpZXIodDAs
IHQyKQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KKyAgICBzdG9yZWkgdDIsIFBh
eWxvYWRPZmZzZXRbdDMsIHQxXQorICAgIGRpc3BhdGNoKDgpCisKKworbWFjcm8gcHV0QnlJZFRy
YW5zaXRpb24oYWRkaXRpb25hbENoZWNrcykKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLnNsb3cpCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgYnBuZXEgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAuc2xvdworICAgIGFkZGl0aW9uYWxDaGVja3ModDEs
IHQzLCAuc2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1f
cHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBhZGRwIHQxLCB0MworICAgIGxvYWRpIFRhZ09m
ZnNldFtjZnIsIHQyLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
LCB0MgorICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRb
dDNdCisgICAgbG9hZGkgMjRbUENdLCB0MQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0
M10KKyAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgZGlzcGF0Y2go
OCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pZCkKKyAg
ICBkaXNwYXRjaCg4KQorZW5kCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Q6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwg
c2xvdykgZW5kKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6Cisg
ICAgcHV0QnlJZFRyYW5zaXRpb24oCisgICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0
Y2gsIHNsb3cpCisgICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAj
IFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAgICAg
IAorICAgICAgICAgICAgbG9hZHAgMjhbUENdLCBzY3JhdGNoCisgICAgICAgICAgICBsb2FkcCBT
dHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3IgKyBWZWN0b3JCdWZmZXJPZmZzZXRbc2NyYXRjaF0sIHNj
cmF0Y2gKKyAgICAgICAgICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNl
dFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorICAgICAgICAubG9vcDoKKyAgICAgICAg
ICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVj
dHVyZV0sIHByb3RvQ2VsbAorICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtw
cm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwg
W3NjcmF0Y2hdLCBzbG93CisgICAgICAgICAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICAgICAgICAg
IGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwg
TnVsbFRhZywgLmxvb3AKKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCkKKworCitfbGxpbnRf
b3BfZGVsX2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfZGVsX2J5X2lkKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9i
eV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNsb3cpCisgICAgbG9hZHAgSlNH
bG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAgYnBu
ZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFn
ZVt0MF0sIHQzCisgICAgYmlhZXEgdDEsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9w
R2V0QnlWYWxTbG93CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgQXJyYXlTdG9yYWdl
OjptX3ZlY3RvciArIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgIGxvYWRpIEFycmF5U3Rv
cmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisgICAgYmllcSB0
MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93CisgICAgc3RvcmVpIHQyLCBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0K
KyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2dldF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0
X2FyZ3VtZW50X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10s
IHQwCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQxLCBJbnQzMlRhZywgdDIsIC5vcEdldEFyZ3VtZW50QnlWYWxT
bG93KQorICAgIGFkZGkgMSwgdDIKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9m
ZnNldFtjZnJdLCB0MQorICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cK
KyAgICBuZWdpIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisg
ICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudEJ5
VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3Zh
bCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfcG5hbWU6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxv
YWRpIDE2W1BDXSwgdDAKKyAgICBicG5lcSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
Lm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5UG5hbWVTbG93KQorICAg
IGxvYWRpIDIwW1BDXSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAorICAgIGJwbmVxIHQwLCBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0M10sIC5vcEdldEJ5UG5h
bWVTbG93CisgICAgbG9hZGkgMjRbUENdLCB0MAorICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAK
KyAgICBzdWJpIDEsIHQwCisgICAgYmlhZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1f
bnVtQ2FjaGVhYmxlU2xvdHNbdDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRwIEpTT2Jq
ZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QyLCB0
MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MiwgdDAsIDhdLCB0MworICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
c3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNykKKwor
Lm9wR2V0QnlQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9w
bmFtZSkKKyAgICBkaXNwYXRjaCg3KQorCisKK19sbGludF9vcF9wdXRfYnlfdmFsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgSW50MzJU
YWcsIHQyLCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xv
YmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MF0sIHQwCisgICAgYnBuZXEgW3QxXSwgdDAsIC5v
cFB1dEJ5VmFsU2xvdworICAgIGJpYWVxIHQyLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MV0s
IC5vcFB1dEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQwCisg
ICAgYmllcSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIEVt
cHR5VmFsdWVUYWcsIC5vcFB1dEJ5VmFsRW1wdHkKKy5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQ6Cisg
ICAgbG9hZGkgMTJbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQzKQorICAgIGxvYWRp
IFRhZ09mZnNldFtjZnIsIHQzLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDMsIDhdLCB0MworICAgIHdyaXRlQmFycmllcih0MSwgdDMpCisgICAgc3RvcmVpIHQxLCBBcnJh
eVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBzdG9yZWkgdDMs
IEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBk
aXNwYXRjaCg0KQorCisub3BQdXRCeVZhbEVtcHR5OgorICAgIGFkZGkgMSwgQXJyYXlTdG9yYWdl
OjptX251bVZhbHVlc0luVmVjdG9yW3QwXQorICAgIGJpYiB0MiwgQXJyYXlTdG9yYWdlOjptX2xl
bmd0aFt0MF0sIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQKKyAgICBhZGRpIDEsIHQyLCB0MQorICAg
IHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX2xlbmd0aFt0MF0KKyAgICBqbXAgLm9wUHV0QnlW
YWxTdG9yZVJlc3VsdAorCisub3BQdXRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3B1dF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZGVsX2J5
X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2RlbF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2luZGV4
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0
X2J5X2luZGV4KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9nZXR0ZXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfZ2V0
dGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9zZXR0ZXI6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfc2V0dGVyKQor
ICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xvb3A6CisgICAgbm9wCitfbGxpbnRfb3Bf
am1wOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkaXNwYXRjaEJyYW5jaCg0W1BDXSkKKwor
CittYWNybyBqdW1wVHJ1ZU9yRmFsc2UoY29uZGl0aW9uT3AsIHNsb3cpCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgYmliIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQm9vbGVhblRhZywgLnNsb3cK
KyAgICBjb25kaXRpb25PcChQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAudGFyZ2V0KQorICAg
IGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5z
bG93OgorICAgIHN1YmkgMyAqIDQsIFBDCisgICAgY2FsbEhlbHBlcihzbG93KQorICAgIGRpc3Bh
dGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfdHJ1ZToKKyAgICBub3AKK19sbGludF9v
cF9qdHJ1ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAganVtcFRydWVPckZhbHNlKAorICAg
ICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpbnogdmFsdWUsIHRhcmdldCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfanRydWUpCisKKworX2xsaW50X29wX2xvb3BfaWZfZmFsc2U6Cisg
ICAgbm9wCitfbGxpbnRfb3BfamZhbHNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1w
VHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGl6IHZhbHVlLCB0
YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pmYWxzZSkKKworCittYWNybyBlcXVh
bE51bGwoY2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhbmRsZXIpCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5pbW1lZGlhdGUK
KyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBjZWxsSGFuZGxlcihT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0Ml0sIC50YXJnZXQpCisg
ICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKwor
LmltbWVkaWF0ZToKKyAgICBvcmkgMSwgdDEKKyAgICBpbW1lZGlhdGVIYW5kbGVyKHQxLCAudGFy
Z2V0KQorICAgIGRpc3BhdGNoKDMpCitlbmQKKworX2xsaW50X29wX2plcV9udWxsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFy
Z2V0KSBidGJueiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBl
bmQpCisgICAgCisKK19sbGludF9vcF9qbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0YnogdmFsdWUs
IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1
ZSwgdGFyZ2V0KSBiaW5lcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKworCitfbGxpbnRf
b3Bfam5lcV9wdHI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2Vs
bFRhZywgLm9wSm5lcVB0ckJyYW5jaAorICAgIGJwZXEgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDEsIC5vcEpuZXFQdHJGYWxsVGhyb3VnaAorLm9wSm5lcVB0ckJyYW5jaDoKKyAgICBkaXNw
YXRjaEJyYW5jaCgxMltQQ10pCisub3BKbmVxUHRyRmFsbFRocm9ndWg6CisgICAgZGlzcGF0Y2go
NCkKKworCittYWNybyBjb21wYXJlKGludGVnZXJDb21wYXJlLCBkb3VibGVDb21wYXJlLCBoZWxw
ZXIpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MiwgdDAsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnKHQzLCB0MiwgdDMpCisgICAgYmluZXEgdDAsIEludDMyVGFnLCAub3AxTm90SW50CisgICAg
YmluZXEgdDIsIEludDMyVGFnLCAub3AyTm90SW50CisgICAgaW50ZWdlckNvbXBhcmUodDEsIHQz
LCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisub3AxTm90SW50OgorICAgIGJpYSB0
MCwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3AxTm90SW50T3Ay
RG91YmxlCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDMsIGZ0MQor
ICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQg
dDMsIHQyLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBmaWkyZCB0MSwgdDAsIGZ0MAorICAg
IGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisK
Ky5vcDJOb3RJbnQ6CisgICAgY2kyZCB0MSwgZnQwCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5z
bG93CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAu
anVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisuanVtcFRhcmdldDoKKyAgICBkaXNwYXRj
aEJyYW5jaCgxMltQQ10pCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRp
c3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfbGVzczoKKyAgICBub3AKK19sbGlu
dF9vcF9qbGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0IGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2psZXNzKQorCisKK19sbGludF9vcF9q
bmxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXF1biBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmxlc3MpCisKKworX2xsaW50X29w
X2xvb3BfaWZfZ3JlYXRlcjoKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0
YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiZGd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2pncmVhdGVyKQorCisKK19sbGludF9vcF9qbmdyZWF0ZXI6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
dGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXIpCisKKworX2xsaW50X29wX2xvb3BfaWZfbGVz
c2VxOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEg
bGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFy
Z2V0KSBiZGx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfamxlc3NlcSkKKworCitfbGxpbnRfb3Bfam5sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0
IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRh
cmdldCkgYmRndHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVs
cGVyX2pubGVzc2VxKQorCisKK19sbGludF9vcF9sb29wX2lmX2dyZWF0ZXJlcToKKyAgICBub3AK
K19sbGludF9vcF9qZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJl
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVx
IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVhdGVy
ZXEpCisKKworX2xsaW50X29wX2puZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0
LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJkbHR1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9q
bmdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3BfbG9vcF9oaW50OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgZGlzcGF0Y2goMSkKKworCitf
bGxpbnRfb3Bfc3dpdGNoX2ltbToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJb
UENdLCB0MAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0
MworICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbG9hZGkgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1f
aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MiwgdDMsIDRd
LCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEg
dDEsIEludDMyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJs
ZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZz
ZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAg
ZGlzcGF0Y2hCcmFuY2goU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVm
ZmVyT2Zmc2V0W3QyLCB0MCwgNF0pCisKKy5vcFN3aXRjaEltbU5vdEludDoKKyAgICBiaWIgdDEs
IExvd2VzdFRhZywgLm9wU3dpdGNoSW1tU2xvdyAgIyBHbyB0byBzbG93IHBhdGggaWYgaXQncyBh
IGRvdWJsZS4KKy5vcFN3aXRjaEltbUZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhb
UENdKQorCisub3BTd2l0Y2hJbW1TbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9z
d2l0Y2hfaW1tKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3N3aXRjaF9jaGFyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQwCisgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQx
CisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFi
bGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyLCB0MywgNF0sIHQyCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wU3dpdGNo
Q2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisg
ICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIFN0
cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTU3RyaW5nOjpt
X3ZhbHVlW3QwXSwgdDAKKyAgICBiaW5lcSBTdHJpbmdJbXBsOjptX2xlbmd0aFt0MF0sIDEsIC5v
cFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFN0cmluZ0ltcGw6Om1fZGF0YThbdDBd
LCB0MQorICAgIGJ0aW56IFN0cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdzW3QwXSwgSGFzaEZsYWdz
OEJpdEJ1ZmZlciwgLm9wU3dpdGNoQ2hhcjhCaXQKKyAgICBsb2FkaCBbdDFdLCB0MAorICAgIGpt
cCAub3BTd2l0Y2hDaGFyUmVhZHkKKy5vcFN3aXRjaENoYXI4Qml0OgorICAgIGxvYWRiIFt0MV0s
IHQwCisub3BTd2l0Y2hDaGFyUmVhZHk6CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0
Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZl
Y3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBkaXNwYXRj
aEJyYW5jaChTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbdDIsIHQwLCA0XSkKKworLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNo
QnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zd2l0Y2hfc3RyaW5nOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX3N0cmluZykKKyAg
ICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9uZXdfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQxLCA4
XSwgRW1wdHlWYWx1ZVRhZywgLm9wTmV3RnVuY0RvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfbmV3X2Z1bmMpCisub3BOZXdGdW5jRG9uZToKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9uZXdfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuY19leHApCisgICAgZGlzcGF0Y2goMykKKworCittYWNy
byBkb0NhbGwoaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwg
dDEKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIENlbGxUYWcsIC5vcENhbGxTbG93CisgICAgYmluZXEgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDEsIC5vcENhbGxTbG93CisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZGkg
MTJbUENdLCB0MworICAgIGFkZHAgMjQsIFBDCisgICAgbHNoaWZ0aSAzLCB0MworICAgIGFkZHAg
Y2ZyLCB0MyAgIyB0MyBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9mIGNmcgorICAgIHN0b3JlaSB0
MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgbG9hZHAgMjAgLSAyNFtQ
Q10sIHQyCisgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAg
ICBsb2FkcCBKU0Z1bmN0aW9uOjptX3Njb3BlQ2hhaW5bdDFdLCB0MAorICAgIHN0b3JlcCBjZnIs
IENhbGxlckZyYW1lW3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRb
dDNdCisgICAgc3RvcmVpIHQxLCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3Jl
aSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSB0MCwgU2Nv
cGVDaGFpbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgY2FsbCB0MgorICAgIGRpc3BhdGNoQWZ0
ZXJDYWxsKCkKKworLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhlbHBlcikK
K2VuZAorCitfbGxpbnRfb3BfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxs
KF9sbGludF9oZWxwZXJfY2FsbCkKKworCitfbGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3QpCisKKworX2xs
aW50X29wX2NhbGxfdmFyYXJnczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1BhdGhG
b3JDYWxsKDYsIF9sbGludF9oZWxwZXJfY2FsbF92YXJhcmdzKQorCisKK19sbGludF9vcF9jYWxs
X2V2YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIAorICAgICMgRXZhbCBpcyBleGVjdXRl
ZCBpbiBvbmUgb2YgdHdvIG1vZGVzOgorICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdy
ZSByZWFsbHkgaW52b2tpbmcgZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBleGVj
dXRpb24gaXMgcGVyZm9tZWQgZW50aXJlbHkgaW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBpdAorICAg
ICMgICAgcmV0dXJucyB0aGUgUEMgb2YgYSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0aGUg
cmV0dXJuIHZhbHVlCisgICAgIyAgICB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgICMKKyAg
ICAjIDIpIFdlIGZpbmQgdGhhdCB3ZSdyZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwo
KSB0aGF0IGlzIG5vdAorICAgICMgICAgdGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVscGVyIHJl
dHVybnMgdGhlIFBDIG9mIHRoZSB0aGluZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNhbGwg
aXQuCisgICAgIworICAgICMgVGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywgd2hp
Y2ggd291bGQgcmVxdWlyZSBhIHRvdGFsIG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBvZiBz
dGF0ZSB0aGF0IGNhbm5vdCBiZSBlYXNpbHkgcGFja2VkIGludG8gdHdvCisgICAgIyByZWdpc3Rl
cnMgKEMgZnVuY3Rpb25zIGNhbiByZXR1cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5KToK
KyAgICAjCisgICAgIyAtIFRoZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBtYXkg
bm90IGhhdmUgYmVlbiBtb2RpZmllZAorICAgICMgICBieSB0aGUgaGVscGVyLCBidXQgdGhlIGNv
bnZlbnRpb24gaXMgdGhhdCBpdCByZXR1cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0b3RhbGx5
IGNsZWFyIGlmIHRoYXQncyBuZWNlc3NhcnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUu
CisgICAgIyAgIEJ1dCB0aGF0J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRlciBz
byB3ZSBzdGljayB3aXRoIGl0LgorICAgICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBo
ZWxwZXIgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAjICAgdGhl
IHJldHVybiB2YWx1ZSwgb3IgZGlkIG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBm
b3IgdXMKKyAgICAjICAgdG8gY2FsbC4KKyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAgICAjICAg
LSBUaGUgSlMgcmV0dXJuIHZhbHVlICh0d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisgICAgIyAg
IC0gVGhlIFBDIHRvIGNhbGwuCisgICAgIworICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2ll
ciB0byBqdXN0IGFsd2F5cyBoYXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBhIFBD
IHRvIGNhbGwsIGFuZCB0aGF0IFBDIG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAorICAg
ICMgcmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAKKyAg
ICBzbG93UGF0aEZvckNhbGwoNCwgX2xsaW50X2hlbHBlcl9jYWxsX2V2YWwpCisKKworX2xsaW50
X2dlbmVyaWNfcmV0dXJuX3BvaW50OgorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitfbGxp
bnRfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQKKyAg
ICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFj
dGl2YXRpb25Ob3RDcmVhdGVkCisub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCisub3BUZWFyT2ZmQWN0
aXZhdGlvbk5vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdGVhcl9v
ZmZfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBzdWJpIDEsIHQwICAgIyBHZXQgdGhlIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcgor
ICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2Zm
QXJndW1lbnRzTm90Q3JlYXRlZAorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29m
Zl9hcmd1bWVudHMpCisub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRj
aCgyKQorCisKK21hY3JvIGRvUmV0dXJuKCkKKyAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0Mgor
ICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgorICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNz
QmVmb3JlUmV0dXJuKHQyKQorICAgIHJldAorZW5kCisKK19sbGludF9vcF9yZXQ6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9h
ZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgZG9SZXR1cm4oKQorCisKK19s
bGludF9vcF9jYWxsX3B1dF9yZXN1bHQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDRbUENdLCB0MgorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitf
bGxpbnRfb3BfcmV0X29iamVjdF9vcl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
aGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxv
YWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BSZXRPYmplY3RPclRoaXNO
b3RPYmplY3QKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYmIg
U3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUs
IC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAorICAgIGRvUmV0dXJuKCkKKworLm9wUmV0T2Jq
ZWN0T3JUaGlzTm90T2JqZWN0OgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3BfbWV0aG9kX2NoZWNrOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIGlnbm9yZSBtZXRob2QgY2hlY2tzIGFuZCB1c2Ugbm9y
bWFsIGdldF9ieV9pZCBvcHRpbWl6YXRpb25zLgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50
X29wX3N0cmNhdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3N0cmNhdCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF90b19wcmltaXRp
dmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRp
IDRbUENdLCB0MworICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
b3BUb1ByaW1pdGl2ZUlzSW1tCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQy
CisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0s
IFN0cmluZ1R5cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2UKKyAgICBzdG9yZWkgdDEsIFRhZ09m
ZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4
XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvUHJpbWl0aXZlU2xvd0Nhc2U6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3RvX3ByaW1pdGl2ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9nZXRfcG5hbWVzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfZ2V0X3BuYW1lcykKKyAgICBkaXNwYXRjaCgwKSAjIFRoZSBoZWxwZXIg
ZWl0aGVyIGFkdmFuY2VzIHRoZSBQQyBvciBqdW1wcyB1cyB0byBzb21ld2hlcmUgZWxzZS4KKwor
CitfbGxpbnRfb3BfbmV4dF9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
MTJbUENdLCB0MQorICAgIGxvYWRpIDE2W1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdLCB0MAorICAgIGJpZXEgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0s
IC5vcE5leHRQbmFtZUVuZAorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDIsIDhdLCB0MgorICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
Om1fanNTdHJpbmdzW3QyXSwgdDMKKyAgICBsb2FkaSBbdDMsIHQwLCA4XSwgdDMKKyAgICBhZGRp
IDEsIHQwCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9h
ZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQor
ICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDhbUENd
LCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGxv
YWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0
MAorICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCisgICAgYnRweiBb
dDBdLCAub3BOZXh0UG5hbWVUYXJnZXQKKy5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcDoK
KyAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbdDFdLCBOdWxsVGFn
LCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBh
eWxvYWRPZmZzZXRbdDFdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0
MQorICAgIGJwbmVxIHQxLCBbdDBdLCAub3BOZXh0UG5hbWVTbG93CisgICAgYWRkcCA0LCB0MAor
ICAgIGJ0cG56IFt0MF0sIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcAorLm9wTmV4dFBu
YW1lVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDI0W1BDXSkKKworLm9wTmV4dFBuYW1lRW5k
OgorICAgIGRpc3BhdGNoKDcpCisKKy5vcE5leHRQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX25leHRfcG5hbWUpICMgVGhpcyBlaXRoZXIga2VlcHMgdGhlIFBDIHdoZXJl
IGl0IHdhcyAoY2F1c2luZyB1cyB0byBsb29wKSBvciBzZXRzIGl0IHRvIHRhcmdldC4KKyAgICBk
aXNwYXRjaCgwKQorCisKK19sbGludF9vcF9wdXNoX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9zY29wZSkKKyAgICBkaXNwYXRj
aCgyKQorCisKK19sbGludF9vcF9wb3Bfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3Bfc2NvcGUpCisgICAgZGlzcGF0Y2goMSkKKwor
CitfbGxpbnRfb3BfcHVzaF9uZXdfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX25ld19zY29wZSkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9jYXRjaDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBUaGlzIGlz
IHdoZXJlIHdlIGVuZCB1cCBmcm9tIHRoZSBKSVQncyB0aHJvdyB0cmFtcG9saW5lIChiZWNhdXNl
IHRoZQorICAgICMgbWFjaGluZSBjb2RlIHJldHVybiBhZGRyZXNzIHdpbGwgYmUgc2V0IHRvIF9s
bGludF9vcF9jYXRjaCksIGFuZCBmcm9tCisgICAgIyB0aGUgaW50ZXJwcmV0ZXIncyB0aHJvdyB0
cmFtcG9saW5lIChzZWUgX2xsaW50X3Rocm93X3RyYW1wb2xpbmUpLgorICAgICMgVGhlIEpJVCB0
aHJvd2luZyBwcm90b2NvbCBjYWxscyBmb3IgdGhlIGNmciB0byBiZSBpbiB0MC4gVGhlIHRocm93
aW5nCisgICAgIyBjb2RlIG11c3QgaGF2ZSBrbm93biB0aGF0IHdlIHdlcmUgdGhyb3dpbmcgdG8g
dGhlIGludGVycHJldGVyLCBhbmQgaGF2ZQorICAgICMgc2V0IEpTR2xvYmFsRGF0YTo6dGFyZ2V0
SW50ZXJwcmV0ZXJQQ0ZvclRocm93LgorICAgIG1vdmUgdDAsIGNmcgorICAgIGxvYWRwIEpJVFN0
YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6dGFy
Z2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93W3QzXSwgUEMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6
OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdLCB0MAorICAgIGxvYWRpIEpTR2xvYmFsRGF0
YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSwgdDEKKyAgICBzdG9yZWkgMCwgSlNHbG9iYWxE
YXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBFbXB0eVZhbHVl
VGFnLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSA0
W1BDXSwgdDIKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBz
dG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xs
aW50X29wX3Rocm93OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfdGhyb3cpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3dfcmVm
ZXJlbmNlX2Vycm9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xs
aW50X29wX2pzcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgYWRkaSAzICogNCwgUEMsIHQxCisgICAgc3RvcmVpIHQxLCBbdDBdCisgICAgZGlzcGF0Y2hC
cmFuY2goOFtQQ10pCisKKworX2xsaW50X29wX3NyZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCBQQworICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX2RlYnVn
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVi
dWcpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJvZmlsZV93aWxsX2NhbGw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0cHogSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2Zp
bGVyUmVmZXJlbmNlW3NwXSwgLm9wUHJvZmlsZVdpbGxDYWxsRG9uZQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCkKKy5vcFByb2ZpbGVXaWxsQ2FsbERvbmU6
CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJvZmlsZV9kaWRfY2FsbDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgYnRweiBKSVRTdGFja0ZyYW1lOjplbmFibGVkUHJvZmlsZXJS
ZWZlcmVuY2Vbc3BdLCAub3BQcm9maWxlRGlkQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKKy5vcFByb2ZpbGVEaWRDYWxsRG9uZToKKyAgICBk
aXNwYXRjaCgyKQorCisKK19sbGludF9vcF9lbmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
bG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQwCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF90aHJvd19mcm9tX2hl
bHBlcl90cmFtcG9saW5lOgorICAgICMgV2hlbiB0aHJvd2luZyBmcm9tIHRoZSBpbnRlcnByZXRl
ciAoaS5lLiB0aHJvd2luZyBmcm9tIExMSW50SGVscGVycyksIHNvCisgICAgIyB0aGUgdGhyb3cg
dGFyZ2V0IGlzIG5vdCBuZWNlc3NhcmlseSBpbnRlcnByZXRlZCBjb2RlLCB3ZSBjb21lIHRvIGhl
cmUuCisgICAgIyBUaGlzIGVzc2VudGlhbGx5IGVtdWxhdGVzIHRoZSBKSVQncyB0aHJvd2luZyBw
cm90b2NvbC4KKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAg
ICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAg
SlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCitfbGxpbnRfdGhy
b3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZToKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRl
ckNhbGwodDIpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisg
ICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1w
IEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRl
cnByZXRlci5oIgorCisjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgorCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMb3dMZXZlbEludGVycHJldGVyX2gK
KyNkZWZpbmUgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKwor
I2RlZmluZSBMTElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29kZSwgbGVuZ3RoKSBleHRlcm4gIkMi
IHZvaWQgbGxpbnRfIyNvcGNvZGUoKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoTExJTlRfSU5T
VFJVQ1RJT05fREVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJVQ1RJT05fREVDTAorCitleHRlcm4g
IkMiIHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50
X2V2YWxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19mcm9tX2hlbHBl
cl90cmFtcG9saW5lKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxf
dHJhbXBvbGluZSgpOworCisjZW5kaWYgLy8gTG93TGV2ZWxJbnRlcnByZXRlcl9oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE5MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
Y2xhc3MgU3BlY2lhbFJlZ2lzdGVyCisgIGRlZiBpbml0aWFsaXplKG5hbWUpCisgICAgQG5hbWUg
PSBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIEBuYW1lCisgIGVuZAor
ZW5kCisKK0FSTXY3X0RBVEFfUkVHID0gU3BlY2lhbFJlZ2lzdGVyLm5ldygiaXAiKQorQVJNdjdf
QUREUl9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyMyIpCisKK2RlZiBtb3ZlSW1tZWRpYXRl
KHZhbHVlLCByZWdpc3RlcikKKyAgIyBDdXJyZW50bHkgd2Ugb25seSBoYW5kbGUgdGhlIHNpbXBs
ZSBjYXNlcywgYW5kIGZhbGwgYmFjayB0byBtb3YvbW92dCBmb3IgdGhlIGNvbXBsZXggb25lcy4K
KyAgaWYgdmFsdWUgPj0gMCAmJiB2YWx1ZSA8IDI1NgorICAgICRhc20ucHV0cyAibW92dyBcIyN7
dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgIGVsc2lmICh+dmFsdWUpID49IDAg
JiYgKH52YWx1ZSkgPCAyNTYKKyAgICAkYXNtLnB1dHMgIm12bncgXCMje352YWx1ZX0sICN7cmVn
aXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzZQorICAgICRhc20ucHV0cyAibW92dyBcIyN7dmFs
dWUgJiAweGZmZmZ9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgICAgaWYgKHZhbHVlICYg
MHhmZmZmMDAwMCkgIT0gMAorICAgICAgJGFzbS5wdXRzICJtb3Z0IFwjI3t2YWx1ZSA+PiAxNn0s
ICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3Mg
UmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAi
dDAiLCAiYTAiLCAicjAiCisgICAgICAicjAiCisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisg
ICAgICAicjEiCisgICAgd2hlbiAidDIiLCAiYTIiCisgICAgICAicjIiCisgICAgd2hlbiAiYTMi
CisgICAgICAicjMiCisgICAgd2hlbiAidDMiCisgICAgICAicjQiCisgICAgd2hlbiAidDQiCisg
ICAgICAicjciCisgICAgd2hlbiAiY2ZyIgorICAgICAgInI1IgorICAgIGVsc2UKKyAgICAgIHJh
aXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5
T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAg
IGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5
aWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQKKyAgZGVmIGFybVY3T3BlcmFu
ZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIsICJmciIKKyAgICAgICJkMCIKKyAgICB3
aGVuICJmcjEiLAorICAgICAgImQxIgorICAgIHdoZW4gImZyMiIKKyAgICAgICJkMiIKKyAgICB3
aGVuICJmcjMiCisgICAgICAiZDMiCisgICAgd2hlbiAiZnI0IgorICAgICAgImQ0IgorICAgIHdo
ZW4gImZyNSIKKyAgICAgICJkNSIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisg
IAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAg
ZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgeWllbGQgc2VsZgorICBlbmQK
K2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJJ
bnZhbGlkIGltbWVkaWF0ZSAje3ZhbHVlfSIgaWYgdmFsdWUgPCAwIG9yIHZhbHVlID4gMjU1Cisg
ICAgIiMke3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1v
cnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisg
ICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAg
IHlpZWxkIHNlbGYKKyAgZW5kCitlbmQKKworbW9kdWxlIEFSTXY3QWRkcmVzc1V0aWxpdGllcwor
ICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgc2VsZi5hcm1WN1ByZXBhcmVQb3NzaWJsZU1l
bW9yeU9wZXJhbmQKKyAgICAkYXNtLnB1dHMgIlx0bGRyICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVt
b3J5T3BlcmFuZH0sICN7QVJNdjdfREFUQV9SRUcuYXJtVjdPcGVyYW5kfSIKKyAgICB5aWVsZCBB
Uk12N19EQVRBX1JFRworICAgICRhc20ucHV0cyAiXHRzdHIgI3tBUk12N19EQVRBX1JFRy5hcm1W
N09wZXJhbmR9LCAje3NlbGYuYXJtVjdQb3NzaWJseU1lbW9yeU9wZXJhbmR9IgorICBlbmQKK2Vu
ZAorCitjbGFzcyBBZGRyZXNzCisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisKKyAg
ZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1
ZSA8IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICBtb3ZlSW1tZWRpYXRlKG9m
ZnNldC52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFy
bVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwg
b2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7QVJN
djdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfV0iCisgICAgZWxzZQorICAgICAgIlsje2Jhc2UuYXJt
VjdPcGVyYW5kfSwgI3tvZmZzZXQuYXJtVjdPcGVyYW5kfV0iCisgICAgZW5kCisgIGVuZAorZW5k
CisKK2NsYXNzIEJhc2VJbmRleAorICBpbmNsdWRlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworCisg
IGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFs
dWUgIT0gMAorICAgICAgbW92ZUltbWVkaWF0ZShvZmZzZXQudmFsdWUsIEFSTXY3X0FERFJfUkVH
KQorICAgICAgJGFzbS5wdXRzICJhZGR3ICN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfSwg
I3tiYXNlLmFybVY3T3BlcmFuZH0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9z
c2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAgICJbI3tB
Uk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBc
IyN7c2NhbGV9XSIKKyAgICBlbHNlCisgICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje2lu
ZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGV9XSIKKyAgICBlbmQKKyAgZW5kCitlbmQK
KworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVz
CisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgbW92ZUlt
bWVkaWF0ZShhZGRyZXNzLnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgZW5kCisgIAorICBkZWYg
YXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICAiWyN7QVJNdjdfQUREUl9SRUcuYXJtVjdP
cGVyYW5kfV0iCisgIGVuZAorZW5kCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYXNtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorIyEvdXNyL2Jpbi9l
bnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiskOiA8PCBG
aWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAib2Zm
c2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJh
bnNmb3JtIgorCitjbGFzcyBBc3NlbWJsZXIKKyAgZGVmIGluaXRpYWxpemUob3V0cCkKKyAgICBA
b3V0cCA9IG91dHAKKyAgICBAc3RhdGUgPSA6Y3BwCisgIGVuZAorICAKKyAgZGVmIGVudGVyQXNt
CisgICAgQG91dHAucHV0cyAiYXNtICgiCisgICAgQHN0YXRlID0gOmFzbQorICBlbmQKKyAgCisg
IGRlZiBsZWF2ZUFzbQorICAgIEBvdXRwLnB1dHMgIikiCisgICAgQHN0YXRlID0gOmNwcAorICBl
bmQKKyAgCisgIGRlZiBpbkFzbQorICAgIGVudGVyQXNtCisgICAgeWllbGQKKyAgICBsZWF2ZUFz
bQorICBlbmQKKyAgCisgIGRlZiBwdXRzKGxpbmUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9
PSA6YXNtCisgICAgbmV3TGluZSA9ICIiCisgICAgbGluZS5lYWNoX2J5dGUgeworICAgICAgfCBi
eXRlIHwKKyAgICAgIGlmIGJ5dGUgPT0gPyUKKyAgICAgICAgbmV3TGluZSArPSAiJSUiCisgICAg
ICBlbHNlCisgICAgICAgIG5ld0xpbmUgKz0gYnl0ZS5jaHIKKyAgICAgIGVuZAorICAgIH0KKyAg
ICBAb3V0cC5wdXRzKChuZXdMaW5lICsgIlxuIikuaW5zcGVjdCkKKyAgZW5kCitlbmQKKworJGFz
bSA9IEFzc2VtYmxlci5uZXcoJHN0ZG91dCkKKworYXNtRmlsZSA9IEFSR1Yuc2hpZnQKK29mZnNl
dHNGaWxlID0gQVJHVi5zaGlmdAorCithc3QgPSBwYXJzZShsZXgoSU86OnJlYWQoYXNtRmlsZSkp
KQorb2Zmc2V0c0xpc3QsIGNvbmZpZ0luZGV4ID0gb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRl
eChvZmZzZXRzRmlsZSkKKworZm9yU2V0dGluZ3MoY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25z
KGFzdClbY29uZmlnSW5kZXhdLCBhc3QpIHsKKyAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZl
bEFTVCwgYmFja2VuZCB8CisgIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykK
KyAgbG93TGV2ZWxBU1QgPSBsb3dMZXZlbEFTVC5yZXNvbHZlKCpidWlsZE9mZnNldHNNYXAobG93
TGV2ZWxBU1QsIG9mZnNldHNMaXN0KSkKKyAgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3Jl
dGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQpIHsKKyAgICAkYXNtLmluQXNtIHsKKyAg
ICAgIGxvd0xldmVsQVNULmxvd2VyKGJhY2tlbmQpCisgICAgfQorICB9Cit9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDgwNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgQmFzZSB1dGlsaXR5IHR5cGVzIGZvciB0aGUgQVNU
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKworIyBWYWxpZCBtZXRob2RzIGZvciBOb2RlOgorIworIyBub2Rl
LmNoaWxkcmVuIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgaW1tZWRpYXRlIGNoaWxkcmVuLgorIwor
IyBub2RlLmRlc2NlbmRlbnRzIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHN0cmljdCBkZXNj
ZW5kYW50cyAoY2hpbGRyZW4KKyMgICAgIGFuZCBjaGlsZHJlbiBvZiBjaGlsZHJlbiwgdHJhbnNp
dGl2ZWx5KS4KKyMKKyMgbm9kZS5mbGF0dGVuIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmlu
ZyB0aGUgc3RyaWN0IGRlc2NlbmRhbnRzIGFuZAorIyAgICAgdGhlIG5vZGUgaXRzZWxmLgorIwor
IyBub2RlLmZpbHRlcih0eXBlKSAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhvc2Ug
ZWxlbWVudHMgaW4KKyMgICAgIG5vZGUuZmxhdHRlbiB0aGF0IGFyZSBvZiB0aGUgZ2l2ZW4gdHlw
ZSAoaXNfYT8gdHlwZSByZXR1cm5zIHRydWUpLgorIworIyBub2RlLm1hcENoaWxkcmVue3x2fCAu
Li59IC0+IFJldHVybnMgYSBuZXcgbm9kZSB3aXRoIGFsbCBjaGlsZHJlbgorIyAgICAgcmVwbGFj
ZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBibG9jay4KKyMKKyMgRXhhbXBsZXM6CisjCisjIG5v
ZGUuZmlsdGVyKFNldHRpbmcpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHNldHRpbmdzIHRo
YXQgdGhlIEFTVCdzCisjICAgICBJZlRoZW5FbHNlIGJsb2NrcyBkZXBlbmQgb24uCisjCisjIG5v
ZGUuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc3RydWN0
dXJlIG9mZnNldHMKKyMgICAgIHRoYXQgdGhlIEFTVCBkZXBlbmRzIG9uLgorCitjbGFzcyBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luKQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICBlbmQKKyAgCisgIGRlZiBjb2Rl
T3JpZ2luU3RyaW5nCisgICAgImxpbmUgbnVtYmVyICN7QGNvZGVPcmlnaW59IgorICBlbmQKKyAg
CisgIGRlZiBkZXNjZW5kYW50cworICAgIGNoaWxkcmVuLmNvbGxlY3R7fHZ8IHYuZmxhdHRlbn0u
ZmxhdHRlbgorICBlbmQKKyAgCisgIGRlZiBmbGF0dGVuCisgICAgW3NlbGZdICsgZGVzY2VuZGFu
dHMKKyAgZW5kCisgIAorICBkZWYgZmlsdGVyKHR5cGUpCisgICAgZmxhdHRlbi5zZWxlY3R7fHZ8
IHYuaXNfYT8gdHlwZX0KKyAgZW5kCitlbmQKKworY2xhc3MgTm9DaGlsZHJlbiA8IE5vZGUKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQK
KyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
CisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXRLZXkKKyAgYXR0cl9y
ZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShzdHJ1Y3QsIGZpZWxk
KQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisg
IGRlZiBoYXNoCisgICAgQHN0cnVjdC5oYXNoICsgQGZpZWxkLmhhc2ggKiAzCisgIGVuZAorICAK
KyAgZGVmIGVxbD8ob3RoZXIpCisgICAgQHN0cnVjdCA9PSBvdGhlci5zdHJ1Y3QgYW5kIEBmaWVs
ZCA9PSBvdGhlci5maWVsZAorICBlbmQKK2VuZAorICAgIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgQVNUIG5vZGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKworY2xhc3MgU3RydWN0T2Zmc2V0IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCwg
ZmllbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgICAg
QGZpZWxkID0gZmllbGQKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNl
bGYuZm9yRmllbGQoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBrZXkgPSBTdHJ1Y3RP
ZmZzZXRLZXkubmV3KHN0cnVjdCwgZmllbGQpCisgICAgCisgICAgdW5sZXNzIEBAbWFwcGluZ1tr
ZXldCisgICAgICBAQG1hcHBpbmdba2V5XSA9IFN0cnVjdE9mZnNldC5uZXcoY29kZU9yaWdpbiwg
c3RydWN0LCBmaWVsZCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdba2V5XQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIiN7c3RydWN0fTo6I3tmaWVsZH0iCisgIGVuZAorICAKKyAgZGVmIDw9
PihvdGhlcikKKyAgICBpZiBAc3RydWN0ICE9IG90aGVyLnN0cnVjdAorICAgICAgcmV0dXJuIEBz
dHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICAgIGVuZAorICAgIEBmaWVsZCA8PT4gb3RoZXIuZmll
bGQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRl
ciA6c3RydWN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgIGVuZAorICAKKyAgQEBt
YXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgc3RydWN0KQor
ICAgIHVubGVzcyBAQG1hcHBpbmdbc3RydWN0XQorICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBT
aXplb2YubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbc3Ry
dWN0XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgInNpemVvZiAje0BzdHJ1Y3R9IgorICBl
bmQKKyAgCisgIGRlZiA8PT4ob3RoZXIpCisgICAgQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0Cisg
IGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIg
OnZhbHVlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEB2YWx1ZSA9IHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiI3t2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIG90aGVyLmlz
X2E/IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUgPT0gQHZhbHVlCisgIGVuZAorZW5kCisKK2Ns
YXNzIEFkZEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisg
IAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBBZGRJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxl
ZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0
LmR1bXB9ICsgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0
ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBTdWJJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJp
Z2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IC0gI3tyaWdo
dC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0Cisg
ICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQs
IEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBNdWxJbW1lZGlhdGVz
Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICogI3tyaWdodC5kdW1wfSkiCisgIGVu
ZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0ZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxk
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisg
ICAgW0BjaGlsZF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOZWdJbW1lZGlh
dGUubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIigtI3tAY2hpbGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklE
IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFt
ZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBw
aW5nW25hbWVdID0gUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAg
ICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5k
CitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9
CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBA
bWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gRlBSZWdpc3RlcklELm5ldyhj
b2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZSA8IE5v
Q2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAg
ZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tu
YW1lXSA9IFZhcmlhYmxlLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFw
cGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAor
CitjbGFzcyBBZGRyZXNzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFzZSwgOm9mZnNldAorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisgICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQK
KyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwgQG9mZnNldF0KKyAgZW5kCisgIAorICBk
ZWYgbWFwQ2hpbGRyZW4KKyAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2Up
LCAoeWllbGQgQG9mZnNldCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQu
ZHVtcH1bI3tiYXNlLmR1bXB9XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9k
ZQorICBhdHRyX3JlYWRlciA6YmFzZSwgOmluZGV4LCA6c2NhbGUsIDpvZmZzZXQKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisgICAgQGluZGV4ID0gaW5kZXgK
KyAgICBAc2NhbGUgPSBzY2FsZQorICAgIHJhaXNlIHVubGVzcyBbMSwgMiwgNCwgOF0ubWVtYmVy
PyBAc2NhbGUKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVu
CisgICAgW0BiYXNlLCBAaW5kZXgsIEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxk
cmVuCisgICAgQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQg
QGluZGV4KSwgQHNjYWxlLCAoeWllbGQgQG9mZnNldCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiI3tvZmZzZXQuZHVtcH1bI3tiYXNlLmR1bXB9LCAje2luZGV4LmR1bXB9LCAje3NjYWxl
fV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAg
YXR0cl9yZWFkZXIgOmFkZHJlc3MKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGFk
ZHJlc3MpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje2FkZHJlc3MuZHVtcH1bXSIKKyAgZW5kCitlbmQK
KworY2xhc3MgSW5zdHJ1Y3Rpb24gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpvcGNvZGUsIDpvcGVy
YW5kcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgb3Bjb2RlLCBvcGVyYW5kcykK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBvcGNvZGUgPSBvcGNvZGUKKyAgICBAb3BlcmFu
ZHMgPSBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIG9wZXJhbmRzCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIEluc3RydWN0aW9uLm5ldyhj
b2RlT3JpZ2luLCBAb3Bjb2RlLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICJcdCIgKyBvcGNvZGUudG9fcyArICIgIiArIG9wZXJhbmRzLmNvbGxlY3R7
fHZ8IHYuZHVtcH0uam9pbigiLCAiKQorICBlbmQKK2VuZAorCitjbGFzcyBFcnJvciA8IE5vQ2hp
bGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0ZXJyb3IiCisgIGVuZAorZW5kCisKK2Ns
YXNzIENvbnN0RGVjbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnZhcmlhYmxlLCA6dmFsdWUKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEB2YXJpYWJsZSA9IHZhcmlhYmxlCisgICAgQHZhbHVlID0gdmFs
dWUKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQHZhcmlhYmxlLCBAdmFsdWVdCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQ29uc3REZWNsLm5ldyhjb2RlT3JpZ2lu
LCAoeWllbGQgQHZhcmlhYmxlKSwgKHlpZWxkIEB2YWx1ZSkpCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiY29uc3QgI3tAdmFyaWFibGUuZHVtcH0gPSAje0B2YWx1ZS5kdW1wfSIKKyAgZW5k
CitlbmQKKworJGxhYmVsTWFwcGluZyA9IHt9CisKK2NsYXNzIExhYmVsIDwgTm9DaGlsZHJlbgor
ICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFt
ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisg
IGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5n
W25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVz
cyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExhYmVsCisgICAgZWxzZQorICAgICAgJGxhYmVs
TWFwcGluZ1tuYW1lXSA9IExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAg
ICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9
OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9y
ZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisKKyAgQEB1bmlxdWVO
YW1lQ291bnRlciA9IDAKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkK
KyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xs
aXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExvY2FsTGFi
ZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTG9jYWxMYWJlbC5uZXco
Y29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgIGVu
ZAorICAKKyAgZGVmIHNlbGYudW5pcXVlCisgICAgd2hpbGUgJGxhYmVsTWFwcGluZ1siX0wje0BA
dW5pcXVlTmFtZUNvdW50ZXJ9Il0KKyAgICAgIEBAdW5pcXVlTmFtZUNvdW50ZXIgKz0gMQorICAg
IGVuZAorICAgIGZvck5hbWUobmlsLCAiX0wje0BAdW5pcXVlTmFtZUNvdW50ZXJ9IikKKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFi
ZWxSZWZlcmVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGFi
ZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxdCisgIGVu
ZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmln
aW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFt
ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQorICBlbmQKK2VuZAorCitj
bGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bGFi
ZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4K
KyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExvY2FsTGFi
ZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisg
IGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFi
ZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFk
ZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxpc3QpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAbGlzdCA9IGxpc3QKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBsaXN0CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIFNl
cXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBAbGlzdC5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIlxuIikKKyAgZW5kCitl
bmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBl
cihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IFRydWUubmV3CisgIAorICBkZWYgc2Vs
Zi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICB0
cnVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAidHJ1ZSIKKyAgZW5kCitlbmQKKworY2xh
c3MgRmFsc2UgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIobmlsKQor
ICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBGYWxzZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3Rh
bmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIGZhbHNlCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiZmFsc2UiCisgIGVuZAorZW5kCisKK2NsYXNzIFRy
dWVDbGFzcworICBkZWYgYXNOb2RlCisgICAgVHJ1ZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitj
bGFzcyBGYWxzZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBGYWxzZS5pbnN0YW5jZQorICBlbmQK
K2VuZAorCitjbGFzcyBTZXR0aW5nIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAor
ICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGlu
Z1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gU2V0dGluZy5uZXcoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kIDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCBy
aWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdo
dCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRd
CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQW5kLm5ldyhjb2RlT3JpZ2luLCAo
eWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICIoI3tsZWZ0LmR1bXB9IGFuZCAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3Mg
T3IgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBPci5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBvciAje3JpZ2h0LmR1bXB9KSIK
KyAgZW5kCitlbmQKKworY2xhc3MgTm90IDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBb
QGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOb3QubmV3
KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
Iihub3QgI3tjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAgPCBOb0NoaWxk
cmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdHNraXAiCisgIGVuZAorZW5kCisKK2NsYXNz
IElmVGhlbkVsc2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpwcmVkaWNhdGUsIDp0aGVuQ2FzZQor
ICBhdHRyX2FjY2Vzc29yIDplbHNlQ2FzZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgcHJlZGljYXRlLCB0aGVuQ2FzZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBwcmVk
aWNhdGUgPSBwcmVkaWNhdGUKKyAgICBAdGhlbkNhc2UgPSB0aGVuQ2FzZQorICAgIEBlbHNlQ2Fz
ZSA9IFNraXAubmV3KGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAg
aWYgQGVsc2VDYXNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNlLCBAZWxzZUNhc2VdCisg
ICAgZWxzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZV0KKyAgICBlbmQKKyAgZW5kCisg
IAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCAoeWll
bGQgQHByZWRpY2F0ZSksICh5aWVsZCBAdGhlbkNhc2UpLCAoeWllbGQgQGVsc2VDYXNlKSkKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICJpZiAje3ByZWRpY2F0ZS5kdW1wfVxuIiArIHRoZW5D
YXNlLmR1bXAgKyAiXG5lbHNlXG4iICsgZWxzZUNhc2UuZHVtcCArICJcbmVuZCIKKyAgZW5kCitl
bmQKKworY2xhc3MgTWFjcm8gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6dmFyaWFibGVz
LCA6Ym9keQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVz
LCBib2R5KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQHZh
cmlhYmxlcyA9IHZhcmlhYmxlcworICAgIEBib2R5ID0gYm9keQorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIEB2YXJpYWJsZXMgKyBbQGJvZHldCisgIGVuZAorICAKKyAgZGVmIG1hcENo
aWxkcmVuCisgICAgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAdmFyaWFibGVzLm1hcHt8
dnwgeWllbGQgdn0sICh5aWVsZCBAYm9keSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
bWFjcm8gI3tuYW1lfSgiICsgdmFyaWFibGVzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAi
KSArICIpXG4iICsgYm9keS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBNYWNy
b0NhbGwgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6b3BlcmFuZHMKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAgICByYWlz
ZSB1bmxlc3MgQG9wZXJhbmRzCisgICAgQG9wZXJhbmRzLmVhY2h7fHZ8IHJhaXNlIHVubGVzcyB2
fQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEBvcGVyYW5kcworICBlbmQKKyAgCisg
IGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIEBu
YW1lLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJc
dCN7bmFtZX0oIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIp
IgorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9i
YWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisjIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJ4
ODYiCisKK0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIsCisgICAiQVJNdjciCisgIF0KKworV09S
S0lOR19CQUNLRU5EUyA9CisgIFsKKyAgICJYODYiCisgIF0KKworQkFDS0VORF9QQVRURVJOID0g
UmVnZXhwLm5ldygnXFxBKCcgKyBCQUNLRU5EUy5qb2luKCcpfCgnKSArICcpXFxaJykKKworY2xh
c3MgTm9kZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBzZW5kKCJsb3dlciIgKyBuYW1lKQorICBl
bmQKK2VuZAorCisjIE92ZXJyaWRlcyBmb3IgbG93ZXIoKSBmb3IgdGhvc2Ugbm9kZXMgdGhhdCBh
cmUgYmFja2VuZC1hZ25vc3RpYworCitkZWYgc2FuaXRpemVMYWJlbE5hbWUobmFtZSkKKyAgIyBT
b21lIHBsYXRmb3JtcyBkb24ndCB3YW50IHRoZSBsZWFkaW5nICJfIi4gSWYgd2UgZXZlciB3YW50
IHRvIGRvIHNvbWV0aGluZworICAjIGFib3V0IHRoYXQsIGl0IHdvdWxkIGJlIGhlcmUuCisgIG5h
bWUKK2VuZAorCitjbGFzcyBMYWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHMg
Ii5nbG9ibCAje3Nhbml0aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9IgorICAgICRhc20ucHV0cyAi
I3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxmLm5hbWUpfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExv
Y2FsTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzICJfX29hXyN7c2VsZi5u
YW1lWzEuLi0xXX06IgorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwCisgIGRlZiBsb3dlcihuYW1l
KQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBA
bGlzdC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBub2RlLmxvd2VyKG5hbWUpCisgICAg
fQorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9n
ZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRf
ZXh0cmFjdG9yLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisjIS91c3IvYmluL2Vu
diBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZp
bGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJvZmZz
ZXRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFu
c2Zvcm0iCisKK2RlZiBlbWl0TWFnaWNOdW1iZXIKKyAgT0ZGU0VUX01BR0lDX05VTUJFUlMuZWFj
aCB7CisgICAgfCBudW1iZXIgfAorICAgIHB1dHMgIiN7bnVtYmVyfSwiCisgIH0KK2VuZAorCitv
cmlnaW5hbEFTVCA9IHBhcnNlKGxleCgkc3RkaW4ucmVhZCkpCisKK2VtaXRDb2RlSW5BbGxDb25m
aWd1cmF0aW9ucyhvcmlnaW5hbEFTVCkgeworICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGlu
ZGV4IHwKKyAgb2Zmc2V0c0xpc3QgPSBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0
CisgIHNpemVzTGlzdCA9IGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKKyAgCisgIGxlbmd0
aCA9IChPRkZTRVRfTUFHSUNfTlVNQkVSUy5zaXplICsgMSkgKiAoMSArIG9mZnNldHNMaXN0LnNp
emUgKyBzaXplc0xpc3Quc2l6ZSkKKyAgCisgIHB1dHMgInN0YXRpYyBjb25zdCB1bnNpZ25lZCBl
eHRyYWN0b3JUYWJsZVsje2xlbmd0aH1dID0geyIKKyAgZW1pdE1hZ2ljTnVtYmVyCisgIHB1dHMg
IiN7aW5kZXh9LCIKKyAgb2Zmc2V0c0xpc3QuZWFjaCB7CisgICAgfCBvZmZzZXQgfAorICAgIGVt
aXRNYWdpY051bWJlcgorICAgIHB1dHMgIk9GRkxJTkVfQVNNX09GRlNFVE9GKCN7b2Zmc2V0LnN0
cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSksIgorICB9CisgIHNpemVzTGlzdC5lYWNoIHsKKyAgICB8
IG9mZnNldCB8CisgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgcHV0cyAic2l6ZW9mKCN7b2Zmc2V0
LnN0cnVjdH0pLCIKKyAgfQorICBwdXRzICJ9OyIKK30KKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxODggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK01BQ1JPX0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJhZGRpIiwKKyAgICJhbmRpIiwK
KyAgICJsc2hpZnRpIiwKKyAgICJtdWxpIiwKKyAgICJuZWdpIiwKKyAgICJub3RpIiwKKyAgICJv
cmkiLAorICAgInJzaGlmdGkiLAorICAgInVyc2hpZnRpIiwKKyAgICJzdWJpIiwKKyAgICJ4b3Jp
IiwKKyAgICJsb2FkaSIsCisgICAibG9hZGIiLAorICAgImxvYWRoIiwKKyAgICJzdG9yZWkiLAor
ICAgInN0b3JlYiIsCisgICAibG9hZGQiLAorICAgIm1vdmVkIiwKKyAgICJzdG9yZWQiLAorICAg
ImFkZGQiLAorICAgImRpdmQiLAorICAgInN1YmQiLAorICAgIm11bGQiLAorICAgInNxcnRkIiwK
KyAgICJjaTJkIiwKKyAgICJmaWkyZCIsICMgdXNhZ2U6IGZpaTJkIDxncHIgd2l0aCBsZWFzdCBz
aWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxmcHI+
CisgICAiZmQyaWkiLCAjIHVzYWdlOiBmZDJpaSA8ZnByPiwgPGdwciB3aXRoIGxlYXN0IHNpZ25p
ZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPgorICAgImJkZXEi
LAorICAgImJkbmVxIiwKKyAgICJiZGd0IiwKKyAgICJiZGd0ZXEiLAorICAgImJkbHQiLAorICAg
ImJkbHRlcSIsCisgICAiYmRlcXVuIiwKKyAgICJiZG5lcXVuIiwKKyAgICJiZGd0dW4iLAorICAg
ImJkZ3RlcXVuIiwKKyAgICJiZGx0dW4iLAorICAgImJkbHRlcXVuIiwKKyAgICJidGQyaSIsCisg
ICAidGQyaSIsCisgICAiYmNkMmkiLAorICAgIm1vdmR6IiwKKyAgICJwb3AiLAorICAgInB1c2gi
LAorICAgIm1vdmUiLAorICAgInN4aTJwIiwKKyAgICJ6eGkycCIsCisgICAibm9wIiwKKyAgICJi
aWVxIiwKKyAgICJiaW5lcSIsCisgICAiYmlhIiwKKyAgICJiaWFlcSIsCisgICAiYmliIiwKKyAg
ICJiaWJlcSIsCisgICAiYmlndCIsCisgICAiYmlndGVxIiwKKyAgICJiaWx0IiwKKyAgICJiaWx0
ZXEiLAorICAgImJiZXEiLAorICAgImJibmVxIiwKKyAgICJiYmEiLAorICAgImJiYWVxIiwKKyAg
ICJiYmIiLAorICAgImJiYmVxIiwKKyAgICJiYmd0IiwKKyAgICJiYmd0ZXEiLAorICAgImJibHQi
LAorICAgImJibHRlcSIsCisgICAiYnRpbyIsCisgICAiYnRpcyIsCisgICAiYnRpeiIsCisgICAi
YnRpbnoiLAorICAgImJ0Ym8iLAorICAgImJ0YnMiLAorICAgImJ0YnoiLAorICAgImJ0Ym56IiwK
KyAgICJqbXAiLAorICAgImJhZGRpbyIsCisgICAiYmFkZGlzIiwKKyAgICJiYWRkaXoiLAorICAg
ImJhZGRpbnoiLAorICAgImJzdWJpbyIsCisgICAiYnN1YmlzIiwKKyAgICJic3ViaXoiLAorICAg
ImJzdWJpbnoiLAorICAgImJtdWxpbyIsCisgICAiYm11bGlzIiwKKyAgICJibXVsaXoiLAorICAg
ImJtdWxpbnoiLAorICAgImJvcmlvIiwKKyAgICJib3JpcyIsCisgICAiYm9yaXoiLAorICAgImJv
cmlueiIsCisgICAiYnJlYWsiLAorICAgImNhbGwiLAorICAgInJldCIsCisgICAiY2llcSIsCisg
ICAiY2luZXEiLAorICAgImNpYSIsCisgICAiY2lhZXEiLAorICAgImNpYiIsCisgICAiY2liZXEi
LAorICAgImNpZ3QiLAorICAgImNpZ3RlcSIsCisgICAiY2lsdCIsCisgICAiY2lsdGVxIiwKKyAg
ICJ0aW8iLAorICAgInRpcyIsCisgICAidGl6IiwKKyAgICJ0aW56IiwKKyAgICJ0Ym8iLAorICAg
InRicyIsCisgICAidGJ6IiwKKyAgICJ0Ym56IiwKKyAgICJwZWVrIiwKKyAgICJwb2tlIiwKKyAg
ICJicGVxIiwKKyAgICJicG5lcSIsCisgICAiYnBhIiwKKyAgICJicGFlcSIsCisgICAiYnBiIiwK
KyAgICJicGJlcSIsCisgICAiYnBndCIsCisgICAiYnBndGVxIiwKKyAgICJicGx0IiwKKyAgICJi
cGx0ZXEiLAorICAgImFkZHAiLAorICAgImFuZHAiLAorICAgIm9ycCIsCisgICAic3VicCIsCisg
ICAieG9ycCIsCisgICAibG9hZHAiLAorICAgImNwZXEiLAorICAgImNwbmVxIiwKKyAgICJjcGEi
LAorICAgImNwYWVxIiwKKyAgICJjcGIiLAorICAgImNwYmVxIiwKKyAgICJjcGd0IiwKKyAgICJj
cGd0ZXEiLAorICAgImNwbHQiLAorICAgImNwbHRlcSIsCisgICAic3RvcmVwIiwKKyAgICJidHBv
IiwKKyAgICJidHBzIiwKKyAgICJidHB6IiwKKyAgICJidHBueiIsCisgICAiYmFkZHBvIiwKKyAg
ICJiYWRkcHMiLAorICAgImJhZGRweiIsCisgICAiYmFkZHBueiIKKyAgXQorCitYODZfSU5TVFJV
Q1RJT05TID0KKyAgWworICAgImNkcWkiLAorICAgImlkaXZpIgorICBdCisKK0lOU1RSVUNUSU9O
UyA9IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMKKworSU5TVFJVQ1RJT05f
UEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIElOU1RSVUNUSU9OUy5qb2luKCcpfCgnKSAr
ICcpKVxcWicpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRf
ZXh0cmFjdG9yX2NvbnN0YW50cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29u
c3RhbnRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitNQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBm
ZjVlNzU1IF0KKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZz
ZXRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29m
ZnNldHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1NiBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0
X2V4dHJhY3Rvcl9jb25zdGFudHMiCisKK09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3
YWM3LCAweDBmZjVlNzU1IF0KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
b2Zmc2V0c0xpc3QoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBzaXplc0xpc3QoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUmV0dXJu
cyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgc2l6ZXMgdXNlZCBieSB0aGUgQVNULiAgICAgICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIG9mZnNldHNM
aXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorZW5kCisKK2Rl
ZiBzaXplc0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CitlbmQKKwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRp
b25JbmRleChhc3QsIGZpbGUpIC0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAg
W29mZnNldHMsIGluZGV4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUGFyc2VzIHRoZSBvZmZzZXRzIGZyb20gYSBm
aWxlIGFuZCByZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCB0aGUgIworIyBpbmRleCBvZiB0
aGUgY29uZmlndXJhdGlvbiB0aGF0IGlzIHZhbGlkIGluIHRoaXMgYnVpbGQgdGFyZ2V0LiAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgb2Zmc2V0c0FuZENv
bmZpZ3VyYXRpb25JbmRleChmaWxlKQorICBpbmRleCA9IG5pbAorICBvZmZzZXRzID0gW10KKyAg
ZW5kaWFubmVzc01hcmtlckJ5dGVzID0gbmlsCisgIAorICBkZWYgcmVhZEludChlbmRpYW5uZXNz
LCBpbnApCisgICAgYnl0ZXMgPSBbXQorICAgIDQudGltZXMgeworICAgICAgYnl0ZXMgPDwgaW5w
LmdldGJ5dGUKKyAgICB9CisgICAgCisgICAgaWYgZW5kaWFubmVzcyA9PSA6bGl0dGxlCisgICAg
ICAjIExpdHRsZSBlbmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAwIHwKKyAgICAgICBieXRlc1sx
XSA8PCA4IHwKKyAgICAgICBieXRlc1syXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbM10gPDwgMjQp
CisgICAgZWxzZQorICAgICAgIyBCaWcgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMjQgfAor
ICAgICAgIGJ5dGVzWzFdIDw8IDE2IHwKKyAgICAgICBieXRlc1syXSA8PCA4IHwKKyAgICAgICBi
eXRlc1szXSA8PCAwKQorICAgIGVuZAorICBlbmQKKyAgCisgIFs6bGl0dGxlLCA6YmlnXS5lYWNo
IHsKKyAgICB8IGVuZGlhbm5lc3MgfAorICAgIG1hZ2ljQnl0ZXMgPSBbXQorICAgIE1BR0lDX05V
TUJFUlMuZWFjaCB7CisgICAgICB8IG51bWJlciB8CisgICAgICBjdXJyZW50Qnl0ZXMgPSBbXQor
ICAgICAgNC50aW1lcyB7CisgICAgICAgIGN1cnJlbnRCeXRlcyA8PCAobnVtYmVyICYgMHhmZikK
KyAgICAgICAgbnVtYmVyID4+PSA4CisgICAgICB9CisgICAgICBpZiBlbmRpYW5uZXNzID09IDpi
aWcKKyAgICAgICAgY3VycmVudEJ5dGVzLnJldmVyc2UhCisgICAgICBlbmQKKyAgICAgIG1hZ2lj
Qnl0ZXMgKz0gY3VycmVudEJ5dGVzCisgICAgfQorICAgIAorICAgIEZpbGUub3BlbihmaWxlLCAi
ciIpIHsKKyAgICAgIHwgaW5wIHwKKyAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICBsb29w
IHsKKyAgICAgICAgYnl0ZSA9IGlucC5nZXRieXRlCisgICAgICAgIGJyZWFrIHVubGVzcyBieXRl
CisgICAgICAgIGlmIGJ5dGUgPT0gbWFnaWNCeXRlc1t3aGVyZUluTWFya2VyXQorICAgICAgICAg
IHdoZXJlSW5NYXJrZXIgKz0gMQorICAgICAgICAgIGlmIHdoZXJlSW5NYXJrZXIgPT0gbWFnaWNC
eXRlcy5zaXplCisgICAgICAgICAgICAjIFdlIGhhdmUgYSBtYXRjaCEgSWYgd2UgaGF2ZSBub3Qg
eWV0IHJlYWQgdGhlIGVuZGlhbm5lc3MgbWFya2VyIGFuZCBpbmRleCwKKyAgICAgICAgICAgICMg
dGhlbiByZWFkIHRob3NlIG5vdzsgb3RoZXJ3aXNlIHJlYWQgYW4gb2Zmc2V0LgorICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiBub3QgaW5kZXgKKyAgICAgICAgICAgICAgaW5kZXggPSByZWFk
SW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgb2Zm
c2V0cyA8PCByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVuZAorICAgICAg
ICAgICAgCisgICAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICAgIGVuZAorICAg
ICAgICBlbHNlCisgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgZW5kCisgICAg
ICB9CisgICAgfQorICAgIAorICAgIGJyZWFrIGlmIGluZGV4CisgIH0KKyAgCisgIHJhaXNlIHVu
bGVzcyBpbmRleAorICAKKyAgW29mZnNldHMsIGluZGV4XQorZW5kCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAt
PiBbb2Zmc2V0cywgc2l6ZXNdICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBC
dWlsZHMgYSBtYXBwaW5nIGJldHdlZW4gU3RydWN0T2Zmc2V0IG5vZGVzIGFuZCB0aGVpciB2YWx1
ZXMuICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgYnVp
bGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpCisgIG9mZnNldHNNYXAgPSB7fQorICBzaXpl
c01hcCA9IHt9CisgIGFzdE9mZnNldHNMaXN0ID0gb2Zmc2V0c0xpc3QoYXN0KQorICBhc3RTaXpl
c0xpc3QgPSBzaXplc0xpc3QoYXN0KQorICByYWlzZSB1bmxlc3MgYXN0T2Zmc2V0c0xpc3Quc2l6
ZSArIGFzdFNpemVzTGlzdC5zaXplID09IG9mZnNldHNMaXN0LnNpemUKKyAgb2Zmc2V0c0xpc3Qo
YXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgc3RydWN0T2Zmc2V0LCBpbmRleCB8CisgICAg
b2Zmc2V0c01hcFtzdHJ1Y3RPZmZzZXRdID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQorICBzaXpl
c0xpc3QoYXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgc2l6ZW9mLCBpbmRleCB8CisgICAg
c2l6ZXNNYXBbc2l6ZW9mXSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgW29mZnNldHNNYXAs
IHNpemVzTWFwXQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3BhcnNlci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9wYXJzZXIucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkxIEBACisjIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJpbnN0
cnVjdGlvbnMiCityZXF1aXJlICJyZWdpc3RlcnMiCisKK2NsYXNzIFRva2VuCisgIGF0dHJfcmVh
ZGVyIDpjb2RlT3JpZ2luLCA6c3RyaW5nCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBzdHJpbmcpCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgICAgQHN0cmluZyA9IHN0
cmluZworICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBpZiBvdGhlci5pc19hPyBUb2tl
bgorICAgICAgQHN0cmluZyA9PSBvdGhlci5zdHJpbmcKKyAgICBlbHNlCisgICAgICBAc3RyaW5n
ID09IG90aGVyCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmID1+KG90aGVyKQorICAgIEBzdHJp
bmcgPX4gb3RoZXIKKyAgZW5kCisgIAorICBkZWYgdG9fcworICAgICIje0BzdHJpbmcuaW5zcGVj
dH0gYXQgbGluZSAje2NvZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpj
b21tZW50KQorICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6
ICN7dG9fc30iCisgICAgZWxzZQorICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9OiAj
e2NvbW1lbnRbMF19IgorICAgIGVuZAorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBUaGUgbGV4ZXIuIFRha2VzIGEgc3RyaW5nIGFuZCByZXR1cm5zIGFu
IGFycmF5IG9mIHRva2Vucy4gICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworCitkZWYgbGV4KHN0cikKKyAgcmVzdWx0ID0gW10KKyAgbGluZU51bWJlciA9IDEK
KyAgd2hpbGUgbm90IHN0ci5lbXB0eT8KKyAgICBjYXNlIHN0cgorICAgIHdoZW4gL1xBXCMoW15c
bl0qKS8KKyAgICAgICMgY29tbWVudCwgaWdub3JlCisgICAgd2hlbiAvXEFcbi8KKyAgICAgIHJl
c3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICBsaW5lTnVtYmVyICs9IDEK
KyAgICB3aGVuIC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRv
a2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVwuKFthLXpBLVowLTlfXSopLwor
ICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQV8o
W2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQm
KQorICAgIHdoZW4gL1xBKFsgXHRdKykvCisgICAgICAjIHdoaXRlc3BhY2UsIGlnbm9yZQorICAg
IHdoZW4gL1xBMHgoWzAtOWEtZkEtRl0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGlu
ZU51bWJlciwgJCYuaGV4LnRvX3MpCisgICAgd2hlbiAvXEEwKFswLTddKykvCisgICAgICByZXN1
bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLm9jdC50b19zKQorICAgIHdoZW4gL1xBKFsw
LTldKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdo
ZW4gL1xBOjovCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAg
IHdoZW4gL1xBWzosXChcKVxbXF09XCtcLSpdLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhs
aW5lTnVtYmVyLCAkJikKKyAgICBlbHNlCisgICAgICByYWlzZSAiTGV4ZXIgZXJyb3IgYXQgbGlu
ZSBudW1iZXIgI3tsaW5lTnVtYmVyfSwgdW5leHBlY3RlZCBzZXF1ZW5jZSAje3N0clswLi4yMF0u
aW5zcGVjdH0iCisgICAgZW5kCisgICAgc3RyID0gJH4ucG9zdF9tYXRjaAorICBlbmQKKyAgcmVz
dWx0CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVG9rZW4gaWRl
bnRpZmljYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGlzUmVnaXN0ZXIo
dG9rZW4pCisgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJbnN0cnVj
dGlvbih0b2tlbikKKyAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBp
c0tleXdvcmQodG9rZW4pCisgIHRva2VuID1+IC9cQSgodHJ1ZSl8KGZhbHNlKXwoaWYpfCh0aGVu
KXwoZWxzZSl8KGVsc2lmKXwoZW5kKXwoYW5kKXwob3IpfChub3QpfChtYWNybyl8KGNvbnN0KXwo
c2l6ZW9mKXwoZXJyb3IpKVxaLyBvcgorICAgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4gb3IK
KyAgICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzSWRlbnRpZmll
cih0b2tlbikKKyAgdG9rZW4gPX4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKilcWi8gYW5kIG5v
dCBpc0tleXdvcmQodG9rZW4pCitlbmQKKworZGVmIGlzTGFiZWwodG9rZW4pCisgIHRva2VuID1+
IC9cQV8oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNMb2NhbExhYmVsKHRva2VuKQor
ICB0b2tlbiA9fiAvXEFcLihbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc1ZhcmlhYmxl
KHRva2VuKQorICBpc0lkZW50aWZpZXIodG9rZW4pIG9yIGlzUmVnaXN0ZXIodG9rZW4pCitlbmQK
KworZGVmIGlzSW50ZWdlcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBWzAtOV0vCitlbmQKKworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIHBhcnNlci4gVGFrZXMgYW4gYXJy
YXkgb2YgdG9rZW5zIGFuZCByZXR1cm5zIGFuIEFTVC4gTWV0aG9kcyAgICAgIworIyBvdGhlciB0
aGFuIHBhcnNlKHRva2VucykgYXJlIG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9uLiAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBQYXJzZXIK
KyAgZGVmIGluaXRpYWxpemUodG9rZW5zKQorICAgIEB0b2tlbnMgPSB0b2tlbnMKKyAgICBAaWR4
ID0gMAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIEB0b2tl
bnNbQGlkeF0KKyAgICAgIEB0b2tlbnNbQGlkeF0ucGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBl
bHNlCisgICAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3Ig
YXQgZW5kIG9mIGZpbGUiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBh
dCBlbmQgb2YgZmlsZTogI3tjb21tZW50WzBdfSIKKyAgICAgIGVuZAorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBjb25zdW1lKHJlZ2V4cCkKKyAgICBpZiByZWdleHAKKyAgICAgIHBhcnNlRXJy
b3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPX4gcmVnZXhwCisgICAgZWxzZQorICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgQGlkeCA9PSBAdG9rZW5zLmxlbmd0aAorICAgIGVuZAorICAgIEBpZHggKz0g
MQorICBlbmQKKyAgCisgIGRlZiBza2lwTmV3TGluZQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0g
PT0gIlxuIgorICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNl
UHJlZGljYXRlQXRvbQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm5vdCIKKyAgICAgIEBpZHgg
Kz0gMQorICAgICAgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9
PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJlc3VsdCA9
IHBhcnNlUHJlZGljYXRlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09
ICIpIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0Bp
ZHhdID09ICJ0cnVlIgorICAgICAgcmVzdWx0ID0gVHJ1ZS5pbnN0YW5jZQorICAgICAgQGlkeCAr
PSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJmYWxzZSIKKyAg
ICAgIHJlc3VsdCA9IEZhbHNlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3Vs
dAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBT
ZXR0aW5nLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0
cmluZykKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFy
c2VFcnJvcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZUFuZAorICAg
IHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0g
ImFuZCIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAg
IEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNh
dGVBdG9tCisgICAgICByZXN1bHQgPSBBbmQubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQp
CisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlCisg
ICAgIyBzb21lIGV4YW1wbGVzIG9mIHByZWNlZGVuY2U6CisgICAgIyBub3QgYSBhbmQgYiAtPiAo
bm90IGEpIGFuZCBiCisgICAgIyBhIGFuZCBiIG9yIGMgLT4gKGEgYW5kIGIpIG9yIGMKKyAgICAj
IGEgb3IgYiBhbmQgYyAtPiBhIG9yIChiIGFuZCBjKQorICAgIAorICAgIHJlc3VsdCA9IHBhcnNl
UHJlZGljYXRlQW5kCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAib3IiCisgICAgICBjb2Rl
T3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAg
IHNraXBOZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgICByZXN1
bHQgPSBPci5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1
bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VWYXJpYWJsZQorICAgIGlmIGlzUmVnaXN0ZXIoQHRv
a2Vuc1tAaWR4XSkKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPX4gRlBSX1BBVFRFUk4KKyAgICAg
ICAgcmVzdWx0ID0gRlBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUmVn
aXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5z
dHJpbmcpCisgICAgICBlbmQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkK
KyAgICAgIHJlc3VsdCA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAg
ZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQWRk
cmVzcyhvZmZzZXQpCisgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiWyIK
KyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgCisgICAgIyBU
aHJlZSBwb3NzaWJpbGl0aWVzOgorICAgICMgW10gICAgICAgLT4gQWJzb2x1dGVBZGRyZXNzCisg
ICAgIyBbYV0gICAgICAtPiBBZGRyZXNzCisgICAgIyBbYSxiXSAgICAtPiBCYXNlSW5kZXggd2l0
aCBzY2FsZSA9IDEKKyAgICAjIFthLGIsY10gIC0+IEJhc2VJbmRleAorICAgIAorICAgIEBpZHgg
Kz0gMQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICBAaWR4ICs9IDEKKyAgICAg
IHJldHVybiBBYnNvbHV0ZUFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIG9mZnNldCkKKyAgICBlbmQK
KyAgICBhID0gcGFyc2VWYXJpYWJsZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAg
ICByZXN1bHQgPSBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBhLCBvZmZzZXQpCisgICAgZWxzZQor
ICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgIEBpZHgg
Kz0gMQorICAgICAgYiA9IHBhcnNlVmFyaWFibGUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0g
Il0iCisgICAgICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgMSwg
b2Zmc2V0KQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0Bp
ZHhdID09ICIsIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3Mg
WyIxIiwgIjIiLCAiNCIsICI4Il0ubWVtYmVyPyBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAg
ICBjID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faQorICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0
ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCBjLCBvZmZzZXQpCisgICAgICBlbmQK
KyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFy
c2VDb2xvbkNvbG9uCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luCisgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tl
bnNbQGlkeF0KKyAgICBuYW1lcyA9IFtAdG9rZW5zW0BpZHhdLnN0cmluZ10KKyAgICBAaWR4ICs9
IDEKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICI6OiIKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIG5h
bWVzIDw8IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAg
ICByYWlzZSBpZiBuYW1lcy5lbXB0eT8KKyAgICBbY29kZU9yaWdpbiwgbmFtZXNdCisgIGVuZAor
ICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICBza2lwTmV3TGluZQorICAgIGlmIEB0
b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIE5lZ0ltbWVkaWF0ZS5u
ZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAg
ICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1
bHQgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlk
eF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSW50
ZWdlciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBJbW1lZGlhdGUubmV3KEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faSkKKyAgICAgIEBpZHgg
Kz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0K
KyAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBpZiBuYW1l
cy5zaXplID4gMQorICAgICAgICBTdHJ1Y3RPZmZzZXQuZm9yRmllbGQoY29kZU9yaWdpbiwgbmFt
ZXNbMC4uLTJdLmpvaW4oJzo6JyksIG5hbWVzWy0xXSkKKyAgICAgIGVsc2UKKyAgICAgICAgVmFy
aWFibGUuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lc1swXSkKKyAgICAgIGVuZAorICAgIGVsc2lm
IGlzUmVnaXN0ZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcGFyc2VWYXJpYWJsZQorICAgIGVsc2lm
IEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgY29kZU9y
aWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIFNpemVvZi5mb3JOYW1lKGNvZGVP
cmlnaW4sIG5hbWVzLmpvaW4oJzo6JykpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAg
IGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICBza2lwTmV3TGlu
ZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0Bp
ZHhdID09ICIqIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIHJlc3VsdCA9IE11bEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFd
LmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICAgIGVsc2UKKyAg
ICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisg
IGRlZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgIEB0b2tlbnNbQGlkeF0gPT0gIi0iIG9yIEB0b2tl
bnNbQGlkeF0gPT0gInNpemVvZiIgb3IgaXNJbnRlZ2VyKEB0b2tlbnNbQGlkeF0pIG9yIGlzVmFy
aWFibGUoQHRva2Vuc1tAaWR4XSkKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uCisg
ICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICB3aGls
ZSBAdG9rZW5zW0BpZHhdID09ICIrIiBvciBAdG9rZW5zW0BpZHhdID09ICItIgorICAgICAgaWYg
QHRva2Vuc1tAaWR4XSA9PSAiKyIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9
IEFkZEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwg
cGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IFN1YkltbWVkaWF0ZXMubmV3KEB0b2tl
bnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAg
ICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0Cisg
IGVuZAorICAKKyAgZGVmIHBhcnNlT3BlcmFuZChjb21tZW50KQorICAgIGlmIGNvdWxkQmVFeHBy
ZXNzaW9uCisgICAgICBleHByID0gcGFyc2VFeHByZXNzaW9uCisgICAgICBpZiBAdG9rZW5zW0Bp
ZHhdID09ICJbIgorICAgICAgICBwYXJzZUFkZHJlc3MoZXhwcikKKyAgICAgIGVsc2UKKyAgICAg
ICAgZXhwcgorICAgICAgZW5kCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAg
IHBhcnNlQWRkcmVzcyhJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgMCkp
CisgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBMYWJlbFJl
ZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMYWJlbC5mb3JOYW1lKEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQorICAgICAgQGlkeCAr
PSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQor
ICAgICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luLCBMb2NhbExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9r
ZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVs
c2UKKyAgICAgIHBhcnNlRXJyb3IoY29tbWVudCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYg
cGFyc2VNYWNyb1ZhcmlhYmxlcworICAgIHNraXBOZXdMaW5lCisgICAgY29uc3VtZSgvXEFcKFxa
LykKKyAgICB2YXJpYWJsZXMgPSBbXQorICAgIGxvb3AgeworICAgICAgc2tpcE5ld0xpbmUKKyAg
ICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBi
cmVhaworICAgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIHZh
cmlhYmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRv
a2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGlu
ZQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yCisgICAg
ICAgIGVuZAorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yCisgICAgICBlbmQKKyAgICB9
CisgICAgdmFyaWFibGVzCisgIGVuZAorICAKKyAgZGVmIHBhcnNlU2VxdWVuY2UoZmluYWwsIGNv
bW1lbnQpCisgICAgZmlyc3RDb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisg
ICAgbGlzdCA9IFtdCisgICAgbG9vcCB7CisgICAgICBpZiAoQGlkeCA9PSBAdG9rZW5zLmxlbmd0
aCBhbmQgbm90IGZpbmFsKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisg
ICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAg
IyBpZ25vcmUKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJjb25zdCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlz
VmFyaWFibGUgQHRva2Vuc1tAaWR4XQorICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZvck5h
bWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0g
Ij0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YWx1ZSA9IHBhcnNlT3BlcmFuZCgid2hp
bGUgaW5zaWRlIG9mIGNvbnN0ICN7dmFyaWFibGUubmFtZX0iKQorICAgICAgICBsaXN0IDw8IENv
bnN0RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisg
ICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJlcnJvciIKKyAgICAgICAgbGlzdCA8PCBFcnJv
ci5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAg
IGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImlmIgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGlu
ZQorICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgICBjb25zdW1lKC9c
QSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmVGhlbkVs
c2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2Uo
L1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJl
ZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgbGlzdCA8PCBpZlRoZW5FbHNlCisgICAgICAgIHdo
aWxlIEB0b2tlbnNbQGlkeF0gPT0gImVsc2lmIgorICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBza2lw
TmV3TGluZQorICAgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgICAg
Y29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAg
ICAgICAgZWxzZUNhc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBh
cnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBv
ZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VD
YXNlID0gZWxzZUNhc2UKKyAgICAgICAgICBpZlRoZW5FbHNlID0gZWxzZUNhc2UKKyAgICAgICAg
ZW5kCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gImVsc2UiCisgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5k
XFovLCAid2hpbGUgaW5zaWRlIG9mIGVsc2UgY2FzZSBmb3IgXCJpZiAje3ByZWRpY2F0ZS5kdW1w
fVwiIikKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gImVuZCIKKyAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgZW5kCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAg
ICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVu
dGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmlu
ZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1Zhcmlh
YmxlcworICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNp
ZGUgb2YgbWFjcm8gI3tuYW1lfSIpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBsaXN0IDw8
IE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICBlbHNp
ZiBpc0luc3RydWN0aW9uIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcK
KyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRv
a2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAg
ICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24sIGFuZCBpdCdzIHRoZSBsYXN0IG9uZS4KKyAg
ICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAg
ICAgICAgICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAg
ICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbi4KKyAgICAgICAgICBsaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICMgSXQncyBkZWZpbml0ZWx5IGFuIGluc3RydWN0aW9uLCBh
bmQgaXQgaGFzIGF0IGxlYXN0IG9uZSBvcGVyYW5kLgorICAgICAgICAgIG9wZXJhbmRzID0gW10K
KyAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gZmFsc2UKKyAgICAgICAgICBsb29wIHsKKyAgICAg
ICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGluc3RydWN0
aW9uICN7bmFtZX0iKQorICAgICAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9r
ZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAg
ICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbiBhbmQgb2YgdGhlIHNlcXVlbmNlLgor
ICAgICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gdHJ1ZQorICAgICAgICAgICAgICBicmVhawor
ICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgIyBI
YXMgYW5vdGhlciBvcGVyYW5kLgorICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAg
IGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICAgICAjIFRoZSBlbmQgb2Yg
dGhlIGluc3RydWN0aW9uLgorICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAg
YnJlYWsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0
ZWQgYSBjb21tYSwgbmV3bGluZSwgb3IgI3tmaW5hbH0gYWZ0ZXIgI3tvcGVyYW5kcy5sYXN0LmR1
bXB9IikKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgIH0KKyAgICAgICAgICBsaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgICBpZiBl
bmRPZlNlcXVlbmNlCisgICAgICAgICAgICBicmVhaworICAgICAgICAgIGVuZAorICAgICAgICBl
bmQKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVP
cmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNb
QGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhd
ID09ICIoIgorICAgICAgICAgICMgTWFjcm8gaW52b2NhdGlvbi4KKyAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAg
ICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbG9vcCB7CisgICAgICAgICAgICAgIHNraXBOZXdMaW5l
CisgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgorICAgICAgICAgICAg
ICAgICMgSXQncyBhIG1hY3JvIGxhbWJkYSEKKyAgICAgICAgICAgICAgICBjb2RlT3JpZ2luSW5u
ZXIgPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAg
ICAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9m
IGFub255bW91cyBtYWNybyBwYXNzZWQgYXMgYXJndW1lbnQgdG8gI3tuYW1lfSIpCisgICAgICAg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwgTWFjcm8ubmV3
KGNvZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lk
ZSBvZiBtYWNybyBjYWxsIHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICBlbmQKKyAgICAgICAg
ICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIK
KyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAg
ICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGFyc2VFcnJvciAiVW5l
eHBlY3RlZCAje0B0b2tlbnNbQGlkeF0uc3RyaW5nLmluc3BlY3R9IHdoaWxlIHBhcnNpbmcgaW52
b2NhdGlvbiBvZiBtYWNybyAje25hbWV9IgorICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICBlbmQKKyAgICAgICAgICBsaXN0IDw8IE1hY3JvQ2FsbC5uZXcoY29kZU9y
aWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9y
ICJFeHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9IgorICAgICAgICBlbmQKKyAgICAgIGVsc2lm
IGlzTGFiZWwgQHRva2Vuc1tAaWR4XSBvciBpc0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAg
ICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUg
PSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiOiIKKyAgICAgICAgIyBJdCdzIGEgbGFiZWwu
CisgICAgICAgIGlmIGlzTGFiZWwgbmFtZQorICAgICAgICAgIGxpc3QgPDwgTGFiZWwuZm9yTmFt
ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbHNlCisgICAgICAgICAgbGlzdCA8PCBMb2Nh
bExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RpbmcgdGVybWlu
YWwgI3tmaW5hbH0gI3tjb21tZW50fSIKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5u
ZXcoZmlyc3RDb2RlT3JpZ2luLCBsaXN0KQorICBlbmQKK2VuZAorCitkZWYgcGFyc2UodG9rZW5z
KQorICBwYXJzZXIgPSBQYXJzZXIubmV3KHRva2VucykKKyAgcGFyc2VyLnBhcnNlU2VxdWVuY2Uo
bmlsLCAiIikKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9y
ZWdpc3RlcnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACisjIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitHUFJTID0KKyAgWworICAgInQwIiwK
KyAgICJ0MSIsCisgICAidDIiLAorICAgInQzIiwKKyAgICJ0NCIsCisgICAiY2ZyIiwKKyAgICJh
MCIsCisgICAiYTEiLAorICAgInIwIiwKKyAgICJyMSIsCisgICAic3AiCisgIF0KKworRlBSUyA9
CisgIFsKKyAgICJmdDAiLAorICAgImZ0MSIsCisgICAiZnQyIiwKKyAgICJmdDMiLAorICAgImZ0
NCIsCisgICAiZnQ1IiwKKyAgICJmYTAiLAorICAgImZhMSIsCisgICAiZmEyIiwKKyAgICJmYTMi
LAorICAgImZyIgorICBdCisKK1JFR0lTVEVSUyA9IEdQUlMgKyBGUFJTCisKK0dQUl9QQVRURVJO
ID0gUmVnZXhwLm5ldygnXFxBKCgnICsgR1BSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCitGUFJf
UEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMuam9pbignKXwoJykgKyAnKSlcXFon
KQorCitSRUdJU1RFUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgUkVHSVNURVJTLmpv
aW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3NldHRpbmdzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIxIEBACisj
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1
aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgY29tcHV0ZVNldHRpbmdzQ29tYmlu
YXRpb25zKGFzdCkgLT4gc2V0dGluZ3NDb21iaWF0aW9ucyAgICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIENvbXB1dGVzIGFuIGFycmF5IG9mIHNldHRpbmdzIG1hcHMsIHdoZXJlIGEg
c2V0dGluZ3MgbWFwIGNvbnN0aXR1dGVzICMKKyMgYSBjb25maWd1cmF0aW9uIGZvciB0aGUgYXNz
ZW1ibHkgY29kZSBiZWluZyBnZW5lcmF0ZWQuIFRoZSBtYXAgICAgICAgIworIyBjb250YWlucyBr
ZXkgdmFsdWUgcGFpcnMgd2hlcmUga2V5cyBhcmUgc2V0dGluZ3MgbmFtZXMgKHN0cmluZ3MpIGFu
ZCAjCisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xlYW5zICh0cnVlIGZvciBlbmFibGVkLCBmYWxzZSBm
b3IgZGlzYWJsZWQpLiAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK
K2RlZiBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBzZXR0aW5nc0NvbWJpbmF0
aW9ucyA9IFtdCisgIAorICBkZWYgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRp
b25zLCBtYXBTb0ZhciwgcmVtYWluaW5nKQorICAgIGlmIHJlbWFpbmluZy5lbXB0eT8KKyAgICAg
IHNldHRpbmdzQ29tYmluYXRpb25zIDw8IG1hcFNvRmFyCisgICAgICByZXR1cm4KKyAgICBlbmQK
KyAgICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBd
XSA9IHRydWUKKyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5l
d01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAK
KyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IGZhbHNlCisgICAgc2V0dGluZ3NDb21iaW5hdG9y
KHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmluZ1sxLi4tMV0pCisgIGVuZAor
ICAKKyAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCB7fSwgKGFzdC5m
aWx0ZXIoU2V0dGluZykudW5pcS5jb2xsZWN0e3x2fCB2Lm5hbWV9ICsgWyJYODYiLCAiQVJNdjci
XSkudW5pcSkKKyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zCitlbmQKKworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0
KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNl
dHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8IC4uLiB9ICAgICAgICAgICAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgRGV0ZXJtaW5lcyBpZiB0aGUgc2V0dGluZ3MgY29tYmluYXRpb24g
aXMgdmFsaWQsIGFuZCBpZiBzbywgY2FsbHMgICAgIworIyB0aGUgYmxvY2sgd2l0aCB0aGUgaW5m
b3JtYXRpb24geW91IG5lZWQgdG8gZ2VuZXJhdGUgY29kZS4gICAgICAgICAgICAjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0
aW5ncywgYXN0KQorICAjIENoZWNrIHdoaWNoIGFyY2hpdGVjdHVyZXMgdGhpcyBjb21iaW5hdG9y
IGNsYWltcyB0byBzdXBwb3J0LgorICBudW1DbGFpbWVkQmFja2VuZHMgPSAwCisgIHNlbGVjdGVk
QmFja2VuZCA9IG5pbAorICBCQUNLRU5EUy5lYWNoIHsKKyAgICB8IGJhY2tlbmQgfAorICAgIGlz
U3VwcG9ydGVkID0gY29uY3JldGVTZXR0aW5nc1tiYWNrZW5kXQorICAgIHJhaXNlIHVubGVzcyBp
c1N1cHBvcnRlZCAhPSBuaWwKKyAgICBudW1DbGFpbWVkQmFja2VuZHMgKz0gaWYgaXNTdXBwb3J0
ZWQgdGhlbiAxIGVsc2UgMCBlbmQKKyAgICBpZiBpc1N1cHBvcnRlZAorICAgICAgc2VsZWN0ZWRC
YWNrZW5kID0gYmFja2VuZAorICAgIGVuZAorICB9CisgIAorICByZXR1cm4gaWYgbnVtQ2xhaW1l
ZEJhY2tlbmRzID4gMQorICAKKyAgIyBSZXNvbHZlIHRoZSBBU1QgZG93biB0byBhIGxvdy1sZXZl
bCBmb3JtIChubyBtYWNyb3Mgb3IgY29uZGl0aW9uYWxzKS4KKyAgbG93TGV2ZWxBU1QgPSBhc3Qu
cmVzb2x2ZVNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICB5aWVsZCBjb25jcmV0ZVNl
dHRpbmdzLCBsb3dMZXZlbEFTVCwgc2VsZWN0ZWRCYWNrZW5kCitlbmQKKworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihh
c3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNl
dHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAgICAgICAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QsIHNl
dHRpbmdzQ29tYmluYXRpb25zKSB7ICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdz
LCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAgICAgICAgICAgICAjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgRXhlY3V0ZXMgdGhlIGdpdmVuIGJsb2NrIGZvciBlYWNoIHZhbGlkIHNldHRp
bmdzIGNvbWJpbmF0aW9uIGluIHRoZSAgIworIyBzZXR0aW5ncyBtYXAuIFRoZSBhc3QgcGFzc2Vk
IGludG8gdGhlIGJsb2NrIGlzIHJlc29sdmVkICAgICAgICAgICAgICAjCisjIChhc3QucmVzb2x2
ZSkgYWdhaW5zdCB0aGUgc2V0dGluZ3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBUaGUgZmlyc3QgZm9ybSB3aWxsIGNhbGwgY29tcHV0ZVNl
dHRpbmdzQ29tYmluYXRpb25zKGFzdCkgZm9yIHlvdS4gICAjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworCitkZWYgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3Qs
ICpvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zKQorICByYWlzZSBpZiBvcHRpb25hbFNldHRp
bmdzQ29tYmluYXRpb25zLnNpemUgPiAxCisgIAorICBpZiBvcHRpb25hbFNldHRpbmdzQ29tYmlu
YXRpb25zLmVtcHR5PworICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gY29tcHV0ZVNldHRpbmdz
Q29tYmluYXRpb25zKGFzdCkKKyAgZWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gb3B0
aW9uYWxTZXR0aW5nc0NvbWJpYXRpb25zWzBdCisgIGVuZAorICAKKyAgc2V0dGluZ3NDb21iaW5h
dGlvbnMuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGluZGV4IHwK
KyAgICBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpIHsKKyAgICAgIHwgY29uY3Jl
dGVTZXR0aW5nc18sIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICAgIHlpZWxkIGNvbmNyZXRl
U2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgIH0KKyAgfQorZW5kCisK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGNwcFNldHRpbmdzVGVzdChjb25j
cmV0ZVNldHRpbmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBSZXR1cm5zIHRoZSBDKysgY29kZSB1c2VkIHRvIHRlc3QgaWYgd2UgYXJl
IGluIGEgY29uZmlndXJhdGlvbiB0aGF0ICAjCisjIGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBj
b25jcmV0ZSBzZXR0aW5ncy4gICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0
aW5ncykKKyAgIiNpZiAiICsgY29uY3JldGVTZXR0aW5ncy50b19hLmNvbGxlY3R7CisgICAgfCBw
YWlyIHwKKyAgICAoaWYgcGFpclsxXQorICAgICAgICIiCisgICAgIGVsc2UKKyAgICAgICAiISIK
KyAgICAgZW5kKSArICJPRkZMSU5FX0FTTV8iICsgcGFpclswXQorICB9LmpvaW4oIiAmJiAiKQor
ZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGlzQVNURXJyb25lb3Vz
KGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBUZXN0cyB0byBzZWUgaWYgdGhlIEFTVCBjbGFpbXMgdGhhdCB0
aGVyZSBpcyBhbiBlcnJvciAtIGkuZS4gaWYgdGhlICAjCisjIHVzZXIncyBjb2RlLCBhZnRlciBz
ZXR0aW5ncyByZXNvbHV0aW9uLCBoYXMgRXJyb3Igbm9kZXMuICAgICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBpc0FTVEVycm9uZW91cyhhc3QpCisg
IG5vdCBhc3QuZmlsdGVyKEVycm9yKS5lbXB0eT8KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRW1pdHMg
YSBjaGVjayB0aGF0IGFzc2VydHMgdGhhdCB3ZSdyZSB1c2luZyB0aGUgZ2l2ZW4gY29uZmlndXJh
dGlvbi4gIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGFzc2VydENv
bmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29u
Y3JldGVTZXR0aW5ncykKKyAgcHV0cyAiI2Vsc2UiCisgIHB1dHMgIiNlcnJvciBcIkNvbmZpZ3Vy
YXRpb24gbWlzbWF0Y2guXCIiCisgIHB1dHMgIiNlbmRpZiIKK2VuZAorCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNl
dHRpbmdzLCBhc3QsIGJhY2tlbmQpIHsgICAgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0
dGluZ3MsIGFzdCwgYmFja2VuZCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBFbWl0cyBhbGwgcmVsZXZhbnQgZ3VhcmRzIHRvIHNlZSBpZiB0aGUg
Y29uZmlndXJhdGlvbiBob2xkcyBhbmQgICAgICAjCisjIGNhbGxzIHRoZSBibG9jayBpZiB0aGUg
Y29uZmlndXJhdGlvbiBpcyBub3QgZXJyb25lb3VzLiAgICAgICAgICAgICAgICMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihj
b25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpCisgIHB1dHMgY3BwU2V0dGluZ3NUZXN0KGNv
bmNyZXRlU2V0dGluZ3MpCisgIAorICBpZiBpc0FTVEVycm9uZW91cyhhc3QpCisgICAgcHV0cyAi
I2Vycm9yIFwiSW52YWxpZCBjb25maWd1cmF0aW9uLlwiIgorICBlbHNpZiBub3QgV09SS0lOR19C
QUNLRU5EUy5pbmNsdWRlPyBiYWNrZW5kCisgICAgcHV0cyAiI2Vycm9yIFwiVGhpcyBiYWNrZW5k
IGlzIG5vdCBzdXBwb3J0ZWQgeWV0LlwiIgorICBlbHNlCisgICAgeWllbGQgY29uY3JldGVTZXR0
aW5ncywgYXN0LCBiYWNrZW5kCisgIGVuZAorICAKKyAgcHV0cyAiI2VuZGlmIgorZW5kCisKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0
aW9ucyhhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgIHwg
Y29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9ICAgICAgICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIEVtaXRzIGd1YXJkIGNvZGVzIGZvciBhbGwgdmFs
aWQgY29uZmlndXJhdGlvbnMsIGFuZCBjYWxscyB0aGUgYmxvY2sgICMKKyMgZm9yIHRob3NlIGNv
bmZpZ3VyYXRpb25zIHRoYXQgYXJlIHZhbGlkIGFuZCBub3QgZXJyb25lb3VzLiAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGVtaXRDb2RlSW5BbGxD
b25maWd1cmF0aW9ucyhhc3QpCisgIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0
KSB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgg
fAorICAgIHB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICAgeWllbGQg
Y29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgcHV0cyAi
I2VuZGlmIgorICB9CitlbmQKKworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3RyYW5zZm9ybS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUy
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3Qi
CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2ZSBh
bnkgSWZUaGVuRWxzZSBub2RlcyBieSAgICAgICAjCisjIHN1YnN0aXR1dGluZyBjb25jcmV0ZSBi
b29sZWFuIHZhbHVlcyBmb3IgZWFjaCBTZXR0aW5nLiAgICAgICAgICAgICAgICMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAg
IGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICB9CisgIGVuZAorZW5kCisKK2Ns
YXNzIFRydWUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVu
ZAorZW5kCisKK2NsYXNzIEZhbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisg
ICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nCisgIGRlZiByZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpCisgICAgc2V0dGluZ3NbQG5hbWVdLmFzTm9kZQorICBlbmQKK2VuZAorCitj
bGFzcyBBbmQKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQucmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBhbmQgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBPcgorICBkZWYgcmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpLnZhbHVlIG9yIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05v
ZGUKKyAgZW5kCitlbmQKKworY2xhc3MgTm90CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgKG5vdCBAY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNO
b2RlCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykKKyAgICBpZiBAcHJlZGljYXRlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncyku
dmFsdWUKKyAgICAgIEB0aGVuQ2FzZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZWxz
ZQorICAgICAgQGVsc2VDYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbmQKKyAg
ZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8Cisg
ICAgICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICBpZiBpdGVt
LmlzX2E/IFNlcXVlbmNlCisgICAgICAgIG5ld0xpc3QgKz0gaXRlbS5saXN0CisgICAgICBlbHNl
CisgICAgICAgIG5ld0xpc3QgPDwgaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNl
Lm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBub2RlLmRlbWFjcm9pZnkobWFjcm9zKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUuc3Vic3RpdHV0ZShtYXBw
aW5nKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBkZW1hY3JvaWZ5KCkgY29uc3RydWN0cyBhIG5ldyBBU1QgdGhhdCBkb2Vz
IG5vdCBoYXZlIGFueSBNYWNybyAgICAgICAjCisjIG5vZGVzLCB3aGlsZSBzdWJzdGl0dXRlKCkg
cmVwbGFjZXMgVmFyaWFibGUgbm9kZXMgd2l0aCB0aGUgZ2l2ZW4gICAgICMKKyMgbm9kZXMgaW4g
dGhlIG1hcHBpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBk
ZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8
CisgICAgICBjaGlsZC5kZW1hY3JvaWZ5KG1hY3JvcykKKyAgICB9CisgIGVuZAorICAKKyAgZGVm
IHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwK
KyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobWFwcGluZykKKyAgICB9CisgIGVuZAorICAKKyAgZGVm
IHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNo
aWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICB9CisgIGVu
ZAorZW5kCisKK2NsYXNzIE1hY3JvCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbXlN
YXBwaW5nID0ge30KKyAgICBtYXBwaW5nLmVhY2hfcGFpciB7CisgICAgICB8IGtleSwgdmFsdWUg
fAorICAgICAgdW5sZXNzIEB2YXJpYWJsZXMuaW5jbHVkZT8ga2V5CisgICAgICAgIG15TWFwcGlu
Z1trZXldID0gdmFsdWUKKyAgICAgIGVuZAorICAgIH0KKyAgICBtYXBDaGlsZHJlbiB7CisgICAg
ICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobXlNYXBwaW5nKQorICAgIH0KKyAg
ZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAg
ICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAg
c2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBzdWJz
dGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgaWYgbWFwcGluZ1tzZWxmXQorICAgICAgbWFwcGlu
Z1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xh
c3MgU2VxdWVuY2UKKyAgZGVmIHN1YnN0aXR1dGUoY29uc3RhbnRzKQorICAgIG5ld0xpc3QgPSBb
XQorICAgIG15Q29uc3RhbnRzID0gY29uc3RhbnRzLmR1cAorICAgIEBsaXN0LmVhY2ggeworICAg
ICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gQ29uc3REZWNsCisgICAgICAgIG15Q29u
c3RhbnRzW2l0ZW0udmFyaWFibGVdID0gaXRlbS52YWx1ZS5zdWJzdGl0dXRlKG15Q29uc3RhbnRz
KQorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uc3Vic3RpdHV0ZShteUNvbnN0
YW50cykKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3
TGlzdCkKKyAgZW5kCisgIAorICBkZWYgcmVuYW1lTGFiZWxzCisgICAgbWFwcGluZyA9IHt9Cisg
ICAgCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19h
PyBMb2NhbExhYmVsCisgICAgICAgIG1hcHBpbmdbaXRlbV0gPSBMb2NhbExhYmVsLnVuaXF1ZQor
ICAgICAgZW5kCisgICAgfQorICAgIAorICAgIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAg
ZW5kCisgIAorICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbXlNYWNyb3MgPSBtYWNyb3Mu
ZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19h
PyBNYWNybworICAgICAgICBteU1hY3Jvc1tpdGVtLm5hbWVdID0gaXRlbQorICAgICAgZW5kCisg
ICAgfQorICAgIG5ld0xpc3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwK
KyAgICAgIGlmIGl0ZW0uaXNfYT8gTWFjcm8KKyAgICAgICAgIyBJZ25vcmUuCisgICAgICBlbHNp
ZiBpdGVtLmlzX2E/IE1hY3JvQ2FsbAorICAgICAgICBtYXBwaW5nID0ge30KKyAgICAgICAgbXlN
eU1hY3JvcyA9IG15TWFjcm9zLmR1cAorICAgICAgICByYWlzZSAiQ291bGQgbm90IGZpbmQgbWFj
cm8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG15TWFj
cm9zW2l0ZW0ubmFtZV0KKyAgICAgICAgcmFpc2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZv
ciBjYWxsIHRvICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVz
cyBpdGVtLm9wZXJhbmRzLnNpemUgPT0gbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6
ZQorICAgICAgICBpdGVtLm9wZXJhbmRzLnNpemUudGltZXMgeworICAgICAgICAgIHwgaWR4IHwK
KyAgICAgICAgICBpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gVmFyaWFibGUgYW5kIG15TWFj
cm9zW2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1h
Y3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbXlNYWNyb3NbaXRlbS5vcGVy
YW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0u
dmFyaWFibGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNpZiBpdGVtLm9wZXJhbmRz
W2lkeF0uaXNfYT8gTWFjcm8KKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5u
YW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAg
ICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmls
CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5h
bWVdLnZhcmlhYmxlc1tpZHhdXSA9IG5pbAorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tp
dGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAg
IGVuZAorICAgICAgICB9CisgICAgICAgIG5ld0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5i
b2R5LnN1YnN0aXR1dGUobWFwcGluZykuZGVtYWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJl
bHMubGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uZGVtYWNyb2lmeSht
eU1hY3JvcykKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwg
bmV3TGlzdCkuc3Vic3RpdHV0ZSh7fSkKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbnN0
cnVjdCBhIG5ldyBBU1QgdGhhdCBoYXMgb2Zmc2V0IHZhbHVlcyBpbnN0ZWFkIG9mIHN5bWJvbGlj
ICAgICAgICMKKyMgb2Zmc2V0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisg
ICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlT2Zm
c2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9m
ZnNldAorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgb2Zmc2V0
c1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXRzW3NlbGZdKQor
ICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9m
CisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBzaXplc1tzZWxm
XQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBzaXplc1tzZWxmXSkKKyAgICBlbHNl
CisgICAgICBwdXRzICJDb3VsZCBub3QgZmluZCAje3NlbGYuaW5zcGVjdH0gaW4gI3tzaXplcy5r
ZXlzLmluc3BlY3R9IgorICAgICAgcHV0cyAic2l6ZXMgPSAje3NpemVzLmluc3BlY3R9IgorICAg
ICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyBub2RlLmZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUmVzb2x2ZSBjb25z
dGFudCByZWZlcmVuY2VzIGFuZCBjb21wdXRlIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMuICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYg
Zm9sZAorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuZm9s
ZAorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcworICBkZWYgZm9sZAor
ICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0
dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVu
bGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2lu
LCBAbGVmdC52YWx1ZSArIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1t
ZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9
IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0
ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1t
ZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAtIEByaWdodC52YWx1ZSkKKyAgZW5k
CitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxl
ZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNz
IEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNf
YT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAq
IEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlCisgIGRlZiBm
b2xkCisgICAgQGNoaWxkID0gQGNoaWxkLmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGNo
aWxkLmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLUBjaGls
ZC52YWx1ZSkKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgbm9kZS5yZXNvbHZlQWZ0ZXJTZXR0aW5ncyhvZmZzZXRzLCBzaXplcykgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbXBpbGUgYXNzZW1ibHkgYWdh
aW5zdCBhIHNldCBvZiBvZmZzZXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmUo
b2Zmc2V0cywgc2l6ZXMpCisgICAgZGVtYWNyb2lmeSh7fSkucmVzb2x2ZU9mZnNldHMob2Zmc2V0
cywgc2l6ZXMpLmZvbGQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NjggQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIHN1
cHBvcnRzOEJpdE9uWDg2CisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAi
LCAidDEiLCAiYTEiLCAicjEiLCAidDIiLCAidDMiCisgICAgICB0cnVlCisgICAgd2hlbiAidDQi
LCAiY2ZyIgorICAgICAgZmFsc2UKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAi
dDAiLCAiYTAiLCAicjAiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAg
ICAgIiVhbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVheCIKKyAgICAgIHdoZW4gOmlu
dAorICAgICAgICAiJWVheCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAor
ICAgIHdoZW4gInQxIiwgImExIiwgInIxIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpi
eXRlCisgICAgICAgICIlZGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZHgiCisgICAg
ICB3aGVuIDppbnQKKyAgICAgICAgIiVlZHgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisg
ICAgICBlbmQKKyAgICB3aGVuICJ0MiIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0
ZQorICAgICAgICAiJWNsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWN4IgorICAgICAg
d2hlbiA6aW50CisgICAgICAgICIlZWN4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAg
ICAgZW5kCisgICAgd2hlbiAidDMiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUK
KyAgICAgICAgIiVibCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVieCIKKyAgICAgIHdo
ZW4gOmludAorICAgICAgICAiJWVieCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAg
IGVuZAorICAgIHdoZW4gInQ0IgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisg
ICAgICAgICIlc2lsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNpIgorICAgICAgd2hl
biA6aW50CisgICAgICAgICIlZXNpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAg
ZW5kCisgICAgd2hlbiAiY2ZyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisg
ICAgICAgICIlZGlsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWRpIgorICAgICAgd2hl
biA6aW50CisgICAgICAgICIlZWRpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAg
ZW5kCisgICAgd2hlbiAic3AiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAg
ICAgICAgIiVzcGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc3AiCisgICAgICB3aGVu
IDppbnQKKyAgICAgICAgIiVlc3AiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBl
bmQKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxP
cGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitj
bGFzcyBGUFJlZ2lzdGVySUQKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICByYWlzZSB1bmxl
c3Mga2luZCA9PSA6ZG91YmxlCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZhMCIs
ICJmciIKKyAgICAgICIleG1tMCIKKyAgICB3aGVuICJmdDEiLCAiZmExIgorICAgICAgIiV4bW0x
IgorICAgIHdoZW4gImZ0MiIsICJmYTIiCisgICAgICAiJXhtbTIiCisgICAgd2hlbiAiZnQzIiwg
ImZhMyIKKyAgICAgICIleG1tMyIKKyAgICB3aGVuICJmdDQiCisgICAgICAiJXhtbTQiCisgICAg
d2hlbiAiZnQ1IgorICAgICAgIiV4bW01IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5k
CisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChr
aW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgeDg2T3BlcmFuZChr
aW5kKQorICAgICIkI3t2YWx1ZX0iCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkK
KyAgICAiI3t2YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIHN1cHBv
cnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2lu
ZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSkiCisgIGVu
ZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0i
CisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYK
KyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje29m
ZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9LCAje2luZGV4Lng4Nk9wZXJhbmQo
OmludCl9LCAje3NjYWxlfSkiCisgIGVuZAorCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQor
ICAgICIqI3t4ODZvcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVB
ZGRyZXNzCisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisg
IGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7YWRkcmVzcy52YWx1ZX0iCisgIGVuZAorCisg
IGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5k
CitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAgZGVmIHg4NkxhYmVsCisgICAgc2FuaXRp
emVMYWJlbE5hbWUobmFtZSkKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAg
IHg4NkxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UKKyAgZGVm
IHg4NkxhYmVsCisgICAgIl9fb2FfIituYW1lWzEuLi0xXQorICBlbmQKKyAgZGVmIHg4NkNhbGxP
cGVyYW5kKGtpbmQpCisgICAgeDg2TGFiZWwKKyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rp
b24KKyAgZGVmIHg4Nk9wZXJhbmRzKCpraW5kcykKKyAgICByYWlzZSB1bmxlc3Mga2luZHMuc2l6
ZSA9PSBvcGVyYW5kcy5zaXplCisgICAgcmVzdWx0ID0gW10KKyAgICBraW5kcy5zaXplLnRpbWVz
IHsKKyAgICAgIHwgaWR4IHwKKyAgICAgIHJlc3VsdCA8PCBvcGVyYW5kc1tpZHhdLng4Nk9wZXJh
bmQoa2luZHNbaWR4XSkKKyAgICB9CisgICAgcmVzdWx0LmpvaW4oIiwgIikKKyAgZW5kCisKKyAg
ZGVmIHg4NlN1ZmZpeChraW5kKQorICAgIGNhc2Uga2luZAorICAgIHdoZW4gOmJ5dGUKKyAgICAg
ICJiIgorICAgIHdoZW4gOmhhbGYKKyAgICAgICJ3IgorICAgIHdoZW4gOmludAorICAgICAgImwi
CisgICAgd2hlbiA6ZG91YmxlCisgICAgICAic2QiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAg
ICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2Rl
LCBraW5kLCBudW1PcGVyYW5kcykKKyAgICBpZiBudW1PcGVyYW5kcyA9PSAzCisgICAgICBpZiBv
cGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFu
ZChraW5kKX0iCisgICAgICBlbHNpZiBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAg
ICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0s
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNlCisgICAgICAgICRh
c20ucHV0cyAiXHRtb3Yje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgJGFzbS5w
dXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFz
bS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBo
YW5kbGVYODZPcChvcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMo
b3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXplKQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZT
aGlmdChvcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIG9y
IG9wZXJhbmRzWzBdID09IFJlZ2lzdGVySUQuZm9yTmFtZShuaWwsICJ0MiIpCisgICAgICAkYXNt
LnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAi
XHR4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgICAgJGFz
bS5wdXRzICJcdCN7b3Bjb2RlfSAlY2wsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0i
CisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQp
fSwgJWVjeCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2RG91YmxlQnJhbmNo
KGJyYW5jaE9wY29kZSwgbW9kZSkKKyAgICBjYXNlIG1vZGUKKyAgICB3aGVuIDpub3JtYWwKKyAg
ICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiA6cmV2ZXJz
ZQorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpk
b3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICBlbHNlCisg
ICAgICByYWlzZSBtb2RlLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0am5lICN7
b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21w
YXJlKG9wY29kZVN1ZmZpeCwga2luZCkKKyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlh
dGUgYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDAgYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lz
dGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQor
ICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNpZiBvcGVyYW5kc1sxXS5pc19hPyBJbW1lZGlhdGUg
YW5kIG9wZXJhbmRzWzFdLnZhbHVlID09IDAgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVy
SUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAg
ICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0Y21wI3t4ODZTdWZm
aXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nklu
dEJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShicmFu
Y2hPcGNvZGVbMS4uLTFdLCBraW5kKQorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0g
I3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldChz
ZXRPcGNvZGUsIG9wZXJhbmQpCisgICAgaWYgb3BlcmFuZC5zdXBwb3J0czhCaXRPblg4NgorICAg
ICAgJGFzbS5wdXRzICJcdEB7c2V0T3Bjb2RlfSAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9
IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9
LCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRz
ICJcdHhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICAgICRhc20u
cHV0cyAiXHRAe3NldE9wY29kZX0gJWFsIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAlYWws
ICVlYXgiCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmlu
dCl9LCAlZWF4IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJl
U2V0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZJbnRDb21wYXJlKHNldE9wY29kZVsz
Li4tMV0sIGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHNbMl0pCisg
IGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICB2YWx1ZSA9IG9wZXJhbmRz
WzBdCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiAyCisgICAgICBtYXNrID0gSW1t
ZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtMSkKKyAgICB3aGVuIDMKKyAgICAgIG1hc2sgPSBvcGVy
YW5kc1sxXQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJFeHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMs
IGJ1dCBnb3QgI3tvcGVyYW5kcy5zaXplfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVu
ZAorICAgIAorICAgIGlmIG1hc2suaXNfYT8gSW1tZWRpYXRlIGFuZCBtYXNrLnZhbHVlID09IC0x
CisgICAgICBpZiB2YWx1ZS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHR0
ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUu
eDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiXHRjbXAj
e3g4NlN1ZmZpeChraW5kKX0gJDAsICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBl
bmQKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAj
e21hc2sueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkJyYW5jaFRlc3QoYnJhbmNoT3Bjb2RlLCBr
aW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hP
cGNvZGV9ICN7b3BlcmFuZHMubGFzdC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRs
ZVg4NlNldFRlc3Qoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAg
ICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kcy5sYXN0KQorICBlbmQKKyAgCisgIGRl
ZiBoYW5kbGVYODZPcEJyYW5jaChvcGNvZGUsIGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5k
bGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQor
ICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9w
ZXJhbmRzWzNdCisgICAgd2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAg
ICBlbHNlCisgICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMg
Ilx0I3ticmFuY2hPcGNvZGV9ICN7anVtcFRhcmdldC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAg
ZGVmIGhhbmRsZVg4NlN1YkJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFu
ZHMuc2l6ZSA9PSA0IGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgJGFzbS5w
dXRzICJcdG5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20u
cHV0cyAiXHRhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNb
Ml0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgaGFuZGxlWDg2T3BXaXRoTnVt
T3BlcmFuZHMoInN1YiIsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGVuZAorICAgIGNh
c2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRz
WzNdCisgICAgd2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNl
CisgICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ti
cmFuY2hPcGNvZGV9ICN7anVtcFRhcmdldC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGxv
d2VyWDg2CisgICAgY2FzZSBvcGNvZGUKKyAgICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAgICBp
ZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAg
ICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICBy
YWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICBpZiBvcGVy
YW5kc1swXS52YWx1ZSA9PSAwCisgICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJh
bmRzWzJdCisgICAgICAgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAg
IGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRzICJcdGxlYWwgI3tvcGVyYW5k
c1swXS52YWx1ZX0oI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNb
Ml0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMu
c2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNl
IHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVz
cyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHRsZWFs
ICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UK
KyAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAg
ICAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAg
ICAgICBlbmQKKyAgICAgIGVuZAorICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgIGhhbmRs
ZVg4Nk9wKCJhbmRsIiwgOmludCkKKyAgICB3aGVuICJsc2hpZnRpIgorICAgICAgaGFuZGxlWDg2
U2hpZnQoInNhbGwiLCA6aW50KQorICAgIHdoZW4gIm11bGkiCisgICAgICBpZiBvcGVyYW5kcy5z
aXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAkYXNtLnB1
dHMgIlx0aW11bGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50LCA6aW50KX0iCisgICAgICBlbHNl
CisgICAgICAgIGhhbmRsZVg4Nk9wKCJpbXVsbCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVu
ICJuZWdpIgorICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisg
ICAgd2hlbiAibm90aSIKKyAgICAgICRhc20ucHV0cyAiXHRub3RsICN7eDg2T3BlcmFuZHMoOmlu
dCl9IgorICAgIHdoZW4gIm9yaSIsICJvcnAiCisgICAgICBoYW5kbGVYODZPcCgib3JsIiwgOmlu
dCkKKyAgICB3aGVuICJyc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNhcmwiLCA6aW50
KQorICAgIHdoZW4gInVyc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNocmwiLCA6aW50
KQorICAgIHdoZW4gInN1YmkiLCAic3VicCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBh
bmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJcdG5lZ2wg
I3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgJGFzbS5wdXRzICJcdGFk
ZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgaGFuZGxlWDg2T3AoInN1YmwiLCA6aW50
KQorICAgICAgZW5kCisgICAgd2hlbiAieG9yaSIsICJ4b3JwIgorICAgICAgaGFuZGxlWDg2T3Ao
InhvcmwiLCA6aW50KQorICAgIHdoZW4gImxvYWRpIiwgInN0b3JlaSIsICJsb2FkcCIsICJzdG9y
ZXAiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIK
KyAgICB3aGVuICJsb2FkYiIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgd2hlbiAibG9hZGgiCisgICAgICAkYXNtLnB1dHMgIlx0bW92endsICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6aGFsZil9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAg
IHdoZW4gInN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZiICN7eDg2T3BlcmFuZHMoOmJ5
dGUsIDpieXRlKX0iCisgICAgd2hlbiAibG9hZGQiLCAibW92ZWQiLCAic3RvcmVkIgorICAgICAg
JGFzbS5wdXRzICJcdG1vdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAg
IHdoZW4gImFkZGQiCisgICAgICAkYXNtLnB1dHMgIlx0YWRkc2QgI3t4ODZPcGVyYW5kcyg6ZG91
YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAiZGl2ZCIKKyAgICAgICRhc20ucHV0cyAiXHRkaXZz
ZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJzdWJkIgorICAg
ICAgJGFzbS5wdXRzICJcdHN1YnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9Igor
ICAgIHdoZW4gIm11bGQiCisgICAgICAkYXNtLnB1dHMgIlx0bXVsc2QgI3t4ODZPcGVyYW5kcyg6
ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3FydGQiCisgICAgICAkYXNtLnB1dHMgIlx0
c3FydHNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiY2kyZCIKKyAgICAgICRhc20ucHV0cyAi
XHRjdnRzaTJzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImJkZXEiCisgICAgICBpc1Vub3JkZXJl
ZCA9IExvY2FsTGFiZWwudW5pcXVlCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVP
cmlnaW4sIGlzVW5vcmRlcmVkKS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tM
YWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgb3BlcmFuZHNbMl0pLng4NkxhYmVsfSIKKyAg
ICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkbmVxIgorICAgICAgaGFu
ZGxlWDg2RG91YmxlQnJhbmNoKCJqbmUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3QiCisgICAg
ICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGd0ZXEi
CisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIsIDpub3JtYWwpCisgICAgd2hlbiAi
YmRsdCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6cmV2ZXJzZSkKKyAgICB3
aGVuICJiZGx0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIsIDpyZXZlcnNl
KQorICAgIHdoZW4gImJkZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamUiLCA6
bm9ybWFsKQorICAgIHdoZW4gImJkbmVxdW4iCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFi
ZWwudW5pcXVlCisgICAgICBpc0VxdWFsID0gTG9jYWxMYWJlbC51bmlxdWUKKyAgICAgICRhc20u
cHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0anAgI3tM
YWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4NkxhYmVsfSIKKyAg
ICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc0Vx
dWFsKS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICAgICRh
c20ucHV0cyAiXHRqbXAgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICBpc0VxdWFsLmxv
d2VyKCJYODYiKQorICAgIHdoZW4gImJkZ3R1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5j
aCgiamIiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRv
dWJsZUJyYW5jaCgiamJlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdHVuIgorICAgICAgaGFu
ZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRsdGVxdW4iCisg
ICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYnRk
MmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNt
LnB1dHMgIlx0Y21wbCAkMHg4MDAwMDAwMCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgIHdo
ZW4gInRkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
d2hlbiAiYmNkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgICAkYXNtLnB1dHMgIlx0dGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAj
e29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnRzaTJzZCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHR1
Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAg
JGFzbS5wdXRzICJcdGpwICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRz
ICJcdGpuZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJtb3ZkeiIKKyAgICAg
ICRhc20ucHV0cyAiXHR4b3JwZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gInBvcCIKKyAgICAg
ICRhc20ucHV0cyAiXHRwb3AgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3
aGVuICJwdXNoIgorICAgICAgJGFzbS5wdXRzICJcdHB1c2ggI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgdW5s
ZXNzIG9wZXJhbmRzWzBdID09IG9wZXJhbmRzWzFdCisgICAgICAgICRhc20ucHV0cyAiXHRtb3Zs
ICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgZW5kCisgICAgd2hlbiAibm9wIgor
ICAgICAgJGFzbS5wdXRzICJcdG5vcCIKKyAgICB3aGVuICJiaWVxIiwgImJwZXEiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImplIiwgOmludCkKKyAgICB3aGVuICJiaW5lcSIsICJicG5lcSIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmludCkKKyAgICB3aGVuICJiaWEiLCAi
YnBhIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDppbnQpCisgICAgd2hlbiAiYmlh
ZXEiLCAiYnBhZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphZSIsIDppbnQpCisgICAg
d2hlbiAiYmliIiwgImJwYiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6aW50KQor
ICAgIHdoZW4gImJpYmVxIiwgImJwYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUi
LCA6aW50KQorICAgIHdoZW4gImJpZ3QiLCAiYnBndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamciLCA6aW50KQorICAgIHdoZW4gImJpZ3RlcSIsICJicGd0ZXEiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImpnZSIsIDppbnQpCisgICAgd2hlbiAiYmlsdCIsICJicGx0IgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDppbnQpCisgICAgd2hlbiAiYmlsdGVxIiwgImJwbHRl
cSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6aW50KQorICAgIHdoZW4gImJi
ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJu
ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDpieXRlKQorICAgIHdoZW4gImJi
YSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmFl
cSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJi
IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDpieXRlKQorICAgIHdoZW4gImJiYmVx
IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0
IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDpieXRlKQorICAgIHdoZW4gImJiZ3Rl
cSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJs
dCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0
ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsdGVxIiwgOmJ5dGUpCisgICAgd2hlbiAi
YnRpbyIsICJidHBvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6aW50KQorICAg
IHdoZW4gImJ0aXMiLCAiYnRwcyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmlu
dCkKKyAgICB3aGVuICJidGl6IiwgImJ0cHoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
eiIsIDppbnQpCisgICAgd2hlbiAiYnRpbnoiLCAiYnRwbnoiCisgICAgICBoYW5kbGVYODZCcmFu
Y2hUZXN0KCJqbnoiLCA6aW50KQorICAgIHdoZW4gImJ0Ym8iCisgICAgICBoYW5kbGVYODZCcmFu
Y2hUZXN0KCJqbyIsIDpieXRlKQorICAgIHdoZW4gImJ0YnMiCisgICAgICBoYW5kbGVYODZCcmFu
Y2hUZXN0KCJqcyIsIDpieXRlKQorICAgIHdoZW4gImJ0YnoiCisgICAgICBoYW5kbGVYODZCcmFu
Y2hUZXN0KCJqeiIsIDpieXRlKQorICAgIHdoZW4gImJ0Ym56IgorICAgICAgaGFuZGxlWDg2QnJh
bmNoVGVzdCgiam56IiwgOmJ5dGUpCisgICAgd2hlbiAiam1wIgorICAgICAgJGFzbS5wdXRzICJc
dGptcCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiYWRk
aW8iLCAiYmFkZHBvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZCIsICJqbyIsIDppbnQp
CisgICAgd2hlbiAiYmFkZGlzIiwgImJhZGRwcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJh
ZGQiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJhZGRpeiIsICJiYWRkcHoiCisgICAgICBoYW5k
bGVYODZPcEJyYW5jaCgiYWRkIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJiYWRkaW56IiwgImJh
ZGRwbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkIiwgImpueiIsIDppbnQpCisgICAg
d2hlbiAiYnN1YmlvIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbyIsIDppbnQpCisgICAg
d2hlbiAiYnN1YmlzIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqcyIsIDppbnQpCisgICAg
d2hlbiAiYnN1Yml6IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqeiIsIDppbnQpCisgICAg
d2hlbiAiYnN1YmlueiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam56IiwgOmludCkKKyAg
ICB3aGVuICJibXVsaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgibXVsIiwgImpvIiwgOmlu
dCkKKyAgICB3aGVuICJibXVsaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgibXVsIiwgImpz
IiwgOmludCkKKyAgICB3aGVuICJibXVsaXoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgibXVs
IiwgImp6IiwgOmludCkKKyAgICB3aGVuICJibXVsaW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFu
Y2goIm11bCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJvcmlvIgorICAgICAgaGFuZGxlWDg2
T3BCcmFuY2goIm9yIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJib3JpcyIKKyAgICAgIGhhbmRs
ZVg4Nk9wQnJhbmNoKCJvciIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXoiCisgICAgICBo
YW5kbGVYODZPcEJyYW5jaCgib3IiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJvcmlueiIKKyAg
ICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvciIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJyZWFr
IgorICAgICAgJGFzbS5wdXRzICJcdGludCAkMyIKKyAgICB3aGVuICJjYWxsIgorICAgICAgJGFz
bS5wdXRzICJcdGNhbGwgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAg
d2hlbiAicmV0IgorICAgICAgJGFzbS5wdXRzICJcdHJldCIKKyAgICB3aGVuICJjaWVxIiwgImNw
ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRlIiwgOmludCkKKyAgICB3aGVu
ICJjaW5lcSIsICJjcG5lcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldG5lIiwg
OmludCkKKyAgICB3aGVuICJjaWEiLCAiY3BhIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNl
dCgic2V0YSIsIDppbnQpCisgICAgd2hlbiAiY2lhZXEiLCAiY3BhZXEiCisgICAgICBoYW5kbGVY
ODZJbnRDb21wYXJlU2V0KCJzZXRhZSIsIDppbnQpCisgICAgd2hlbiAiY2liIiwgImNwYiIKKyAg
ICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGIiLCA6aW50KQorICAgIHdoZW4gImNpYmVx
IiwgImNwYmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YmUiLCA6aW50KQor
ICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNl
dGciLCA6aW50KQorICAgIHdoZW4gImNpZ3RlcSIsICJjcGd0ZXEiCisgICAgICBoYW5kbGVYODZJ
bnRDb21wYXJlU2V0KCJzZXRnZSIsIDppbnQpCisgICAgd2hlbiAiY2lsdCIsICJjcGx0IgorICAg
ICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bCIsIDppbnQpCisgICAgd2hlbiAiY2lsdGVx
IiwgImNwbHRlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGxlIiwgOmludCkK
KyAgICB3aGVuICJ0aW8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmludCkKKyAg
ICB3aGVuICJ0aXMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmludCkKKyAgICB3
aGVuICJ0aXoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmludCkKKyAgICB3aGVu
ICJ0aW56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6aW50KQorICAgIHdoZW4g
InRibyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6Ynl0ZSkKKyAgICB3aGVuICJ0
YnMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmJ5dGUpCisgICAgd2hlbiAidGJ6
IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDpieXRlKQorICAgIHdoZW4gInRibnoi
CisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDpieXRlKQorICAgIHdoZW4gInBlZWsi
CisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzBdLnZhbHVlICogNH0oJWVzcCks
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicG9rZSIKKyAgICAg
ICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3Bl
cmFuZHNbMV0udmFsdWUgKiA0fSglZXNwKSIKKyAgICB3aGVuICJjZHFpIgorICAgICAgJGFzbS5w
dXRzICJcdGNkcSIKKyAgICB3aGVuICJpZGl2aSIKKyAgICAgICRhc20ucHV0cyAiXHRpZGl2bCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImZpaTJkIgorICAgICAg
JGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZkICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJc
dHBzbGxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cG9yICV4bW03LCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImZkMmlpIgorICAgICAgJGFz
bS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAi
XHRwc3JscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNkICV4bW03LCAje29w
ZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQg
b3Bjb2RlOiAje29wY29kZX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDEwNDQyOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1Z2dlcjsK
ICAgICBjbGFzcyBFdmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOwor
ICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJs
b2NrOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwogCkBAIC0zMTksNiArMzIwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJh
c2U7CiAKQEAgLTM4NCw2ICszODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAg
Y2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAg
ICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNDUzLDYgKzQ1Niw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAg
dHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBA
QAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGlj
IFdyaXRlQmFycmllcjxVbmtub3duPiB7CiAgICAgICAgIFNwYXJzZUFycmF5RW50cnkoKSA6IGF0
dHJpYnV0ZXMoMCkge30KQEAgLTEwNCw2ICsxMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9
OwogCiAgICAgY2xhc3MgSlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNs
YXNzIFdhbGtlcjsKIAogICAgIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsMTAgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0gICAgY2xhc3MgU3Ry
dWN0dXJlOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9w
ZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CisgICAgY2xhc3Mg
U3RydWN0dXJlOwogCiAgICAgZW51bSBFbnVtZXJhdGlvbk1vZGUgewogICAgICAgICBFeGNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzLApAQCAtMTY0LDYgKzE2NSw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAg
ICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgICAgICAKICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsKICAgICAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CiAgICAgfTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDEwNDQyOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlv
blByb3RvdHlwZTsKICAgICBjbGFzcyBKU0FjdGl2YXRpb247CiAgICAgY2xhc3MgSlNHbG9iYWxP
YmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2
ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgU291cmNlQ29kZTsKICAgICBuYW1lc3BhY2UgREZHIHsK
QEAgLTE0MCw2ICsxNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIAogICAgICAgICBzdGF0
aWMgSlNWYWx1ZSBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDgg
QEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgICwga2V5d29y
ZHMoYWRvcHRQdHIobmV3IEtleXdvcmRzKHRoaXMpKSkKICAgICAsIGludGVycHJldGVyKDApCiAg
ICAgLCBoZWFwKHRoaXMsIGhlYXBTaXplKQorICAgICwganNBcnJheUNsYXNzSW5mbygmSlNBcnJh
eTo6c19pbmZvKQorICAgICwganNGaW5hbE9iamVjdENsYXNzSW5mbygmSlNGaW5hbE9iamVjdDo6
c19pbmZvKQogI2lmIEVOQUJMRShERkdfSklUKQogICAgICwgc2l6ZU9mTGFzdFNjcmF0Y2hCdWZm
ZXIoMCkKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTYgQEAK
ICNkZWZpbmUgSlNHbG9iYWxEYXRhX2gKIAogI2luY2x1ZGUgIkNhY2hlZFRyYW5zY2VuZGVudGFs
RnVuY3Rpb24uaCIKLSNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFu
Y2VDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJI
ZWFwLmgiCi0jaW5jbHVkZSAiU3Ryb25nLmgiCisjaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5j
bHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnRE
YXRhLmgiCiAjaW5jbHVkZSAiTnVtZXJpY1N0cmluZ3MuaCIKICNpbmNsdWRlICJTbWFsbFN0cmlu
Z3MuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUZXJtaW5hdG9yLmgiCiAjaW5j
bHVkZSAiVGltZW91dENoZWNrZXIuaCIKICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCkBAIC02NSw2
ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAg
IGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEtleXdvcmRzOworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFBh
cnNlckFyZW5hOwogICAgIGNsYXNzIFJlZ0V4cENhY2hlOwpAQCAtMjQ4LDYgKzI1MCwxMiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgSGVhcCBoZWFwOwogCiAgICAgICAgIEpTVmFsdWUgZXhj
ZXB0aW9uOworCisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QganNBcnJheUNsYXNzSW5m
bzsKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZv
OworCisgICAgICAgIExMSW50OjpEYXRhIGxsaW50RGF0YTsKKwogI2lmIEVOQUJMRShKSVQpCiAg
ICAgICAgIFJldHVybkFkZHJlc3NQdHIgZXhjZXB0aW9uTG9jYXRpb247CiAgICAgICAgIEpTVmFs
dWUgaG9zdENhbGxSZXR1cm5WYWx1ZTsKQEAgLTM1Miw2ICszNjAsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICN1bmRlZiByZWdpc3RlclR5cGVkQXJyYXlGdW5jdGlvbgogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIEpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6
ZSk7CiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEqJiBzaGFyZWRJbnN0YW5jZUludGVybmFs
KCk7CiAgICAgICAgIHZvaWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTA0NDI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBG
dW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgR2xv
YmFsQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFz
cyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAg
ICAgY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CkBAIC0zMzUsNiArMzM2LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8q
LCBpbnQgY291bnQpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBGb2xkIHJlc2V0
IGludG8gaW5pdC4KICAgICAgICAgdm9pZCBpbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpOwogICAg
ICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiAr
NDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xh
c3MgSGFzaEVudHJ5OwogICAgIGNsYXNzIEludGVybmFsRnVuY3Rpb247CisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgIGNsYXNzIFBy
b3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKQEAgLTI2MCw2
ICsyNjEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNPYmplY3QoSlNHbG9iYWxEYXRh
JiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpOwogCiAgICAgcHJp
dmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAg
ICAgCiAgICAgICAgIC8vIE5vYm9keSBzaG91bGQgZXZlciBhc2sgYW55IG9mIHRoZXNlIHF1ZXN0
aW9ucyBvbiBzb21ldGhpbmcgYWxyZWFkeSBrbm93biB0byBiZSBhIEpTT2JqZWN0LgogICAgICAg
ICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyOwogICAgICAgICB1c2luZyBKU0NlbGw6
OmlzR2V0dGVyU2V0dGVyOwpAQCAtMzcxLDYgKzM3NCw4IEBAIENPTVBJTEVfQVNTRVJUKChKU0Zp
bmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwq
KTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgICAgICA6IEpT
T2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQogICAgICAgICB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJZGVudGlmaWVyOwog
ICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAog
ICAgIGNsYXNzIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTk2LDYgKzk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBz
aXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9jYWNoZWRTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNTdHJpbmc7CisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogCiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7
CiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKik7CkBAIC0yNDEsNiArMjQy
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICB2b2lkIHJlc29s
dmVSb3BlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nh
c2U4KExDaGFyKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hh
ciopIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5m
by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUlu
Zm8uaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxOyAvLyBXZWJDb3JlIHVz
ZXMgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCB0byBtYWtlIGRvY3VtZW50LmFsbCB1bmRldGVjdGFi
bGUuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDEg
PDwgMTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJpZGVzSGFzSW5zdGFuY2UgPSAx
IDw8IDI7CkBAIC04Nyw2ICs4OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAg
ICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgICAgICAKICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MxKHVuc2lnbmVkIGZsYWcpIGNvbnN0
IHsgQVNTRVJUKGZsYWcgPD0gKDEgPDwgNykpOyByZXR1cm4gbV9mbGFncyAmIGZsYWc7IH0KICAg
ICAgICAgYm9vbCBpc1NldE9uRmxhZ3MyKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZs
YWcgPj0gKDEgPDwgOCkpOyByZXR1cm4gbV9mbGFnczIgJiAoZmxhZyA+PiA4KTsgfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5o
CShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
cmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCwxMiBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFz
cyBSZWdpc3RlcjsKIAogICAgIGNsYXNzIEpTVmFyaWFibGVPYmplY3QgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVk
ZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9yOwogICAgIGNsYXNzIFNs
b3RWaXNpdG9yOwogICAgIApAQCAtOTEsNiArOTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHBy
aXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
ICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUs
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVB
cnJheURhdGE7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CkBAIC0xOTYsNiArMTk3LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNz
SW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwg
Y29uc3QgQ2xhc3NJbmZvKik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmKTsKICAg
ICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVyZSopOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZp
c2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVD
aGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFN0cnVjdHVy
ZTsKIAogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluIDogcHVibGljIEpTQ2VsbCB7CkBAIC03NCw2
ICs3NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAg
ICAgU3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAgICAgICAgIHN0
YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Q
bGF0Zm9ybS5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxNiw2ICs5MTYsMTIgQEAKICNkZWZpbmUg
RU5BQkxFX0pJVCAxCiAjZW5kaWYKIAorLyogT24gc29tZSBvZiB0aGUgcGxhdGZvcm1zIHdoZXJl
IHdlIGhhdmUgYSBKSVQsIHdlIHdhbnQgdG8gYWxzbyBoYXZlIHRoZSAKKyAgIGxvdy1sZXZlbCBp
bnRlcnByZXRlci4gKi8KKyNpZiBFTkFCTEUoSklUKSAmJiBQTEFURk9STShNQUMpICYmIFVTRShK
U1ZBTFVFMzJfNjQpCisjZGVmaW5lIEVOQUJMRV9MTElOVCAxCisjZW5kaWYKKwogI2lmICFkZWZp
bmVkKEVOQUJMRV9ERkdfSklUKSAmJiBFTkFCTEUoSklUKQogLyogRW5hYmxlIHRoZSBERkcgSklU
IG9uIFg4NiBhbmQgWDg2XzY0LiAgT25seSB0ZXN0ZWQgb24gTWFjIGFuZCBHTlUvTGludXguICov
CiAjaWYgKENQVShYODYpIHx8IENQVShYODZfNjQpKSAmJiAoUExBVEZPUk0oTUFDKSB8fCBPUyhM
SU5VWCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBs
LmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9T
dHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgX19DRlN0cmluZyAqIENGU3RyaQogLy8gTGFuZGluZyB0aGUgZmlsZSBtb3ZlcyBp
biBvbmUgcGF0Y2gsIHdpbGwgZm9sbG93IG9uIHdpdGggcGF0Y2hlcyB0byBjaGFuZ2UgdGhlIG5h
bWVzcGFjZXMuCiBuYW1lc3BhY2UgSlNDIHsKIHN0cnVjdCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5z
bGF0b3I7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gc3RydWN0IElkZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjsKIHN0cnVjdCBJZGVudGlm
aWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9yOwogfQpAQCAtNzAsNyArNzEsOCBAQCBjbGFzcyBT
dHJpbmdJbXBsIHsKICAgICBmcmllbmQgc3RydWN0IFdURjo6SGFzaEFuZFVURjhDaGFyYWN0ZXJz
VHJhbnNsYXRvcjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6VUNoYXJCdWZmZXJUcmFuc2xhdG9y
OwogICAgIGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmdJbXBsOwotCisgICAgZnJpZW5kIGNsYXNz
IEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogcHJpdmF0ZToKICAgICBlbnVtIEJ1
ZmZlck93bmVyc2hpcCB7CiAgICAgICAgIEJ1ZmZlckludGVybmFsLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121769</attachid>
            <date>2012-01-09 17:29:19 -0800</date>
            <delta_ts>2012-01-10 01:09:22 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_6.diff</filename>
            <type>text/plain</type>
            <size>294019</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0NTIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMiBA
QAorMjAxMi0wMS0wOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV09SSyBJTiBQUk9HUkVTUy4gIEl0IG5vdyBjb21waWxlcyBidXQgZG9lcyBub3Qg
bGluay4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5oOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6
CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKiBieXRlY29kZS9P
cGNvZGUuaDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZH
Q2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGhlYXAvQWxsb2NhdGlv
blNwYWNlLmg6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgICogaGVhcC9NYXJrZWRT
cGFjZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcik6CisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKToK
KyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6Z2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29k
ZUlEKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaDoKKyAgICAgICAgKiBq
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpnZXRIb3N0
Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSk6CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0
dXJuVmFsdWUuaDogQWRkZWQuCisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0
ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAgKiBs
bGludC9MTEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAoSlND
OjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xM
SW50RXhjZXB0aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuVG9U
aHJvdyk6CisgICAgICAgIChKU0M6OkxMSW50OjpjYWxsVG9UaHJvdyk6CisgICAgICAgICogbGxp
bnQvTExJbnRFeGNlcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50SGVscGVy
cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfSEVMUEVSX0RFQ0wpOgor
ICAgICAgICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFu
ZGxlSG9zdENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMu
aDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6IEFkZGVk
LgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KToKKyAgICAgICAgKG1haW4p
OgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRlZC4KKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDogQWRkZWQuCisgICAgICAgICogbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBBZGRlZC4KKyAgICAgICAgKiBv
ZmZsaW5lYXNtL2FzbS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc3QucmI6IEFk
ZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYjogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVh
c20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxp
bmVhc20vb2Zmc2V0cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9wYXJzZXIucmI6
IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcmVnaXN0ZXJzLnJiOiBBZGRlZC4KKyAgICAg
ICAgKiBvZmZsaW5lYXNtL3NldHRpbmdzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L3RyYW5zZm9ybS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYucmI6IEFkZGVk
LgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
cnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9K
U0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAgICAg
ICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3Qu
aDoKKyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAgICAg
KiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisKIDIw
MTItMDEtMDkgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBKYXZhU2Ny
aXB0Q29yZSBleGVjdXRhYmxlIHRhcmdldHMgc2hvdWxkbid0IGV4cGxpY2l0bHkgZGVwZW5kIG9u
IHRoZSBKYXZhU2NyaXB0Q29yZSBmcmFtZXdvcmsgdGFyZ2V0CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEs
NCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwNiwgMjAw
NywgMjAwOCwgMjAwOSwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTYwLDYgKzYwLDcgQEAgYWxsIDogXAog
ICAgIFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBTdHJpbmdQcm90b3R5cGUubHV0Lmgg
XAogICAgIGRvY3MvYnl0ZWNvZGUuaHRtbCBcCisgICAgTExJbnRBc3NlbWJseS5oLlBIT05ZIFwK
ICMKIAogIyBsb29rdXAgdGFibGVzIGZvciBjbGFzc2VzCkBAIC0xMDQsMyArMTA1LDExIEBAIEhl
YWRlckRldGVjdGlvbi5oIDoKIAllY2hvID4gJEAKIAogZW5kaWYKKworIyBBc3NlbWJseSBmb3Ig
dGhlIExvd0xldmVsSW50ZXJwcmV0ZXIKKworIyBUaGlzIGJ1aWxkcyBldmVyeSB0aW1lIGJlY2F1
c2UgdGhlcmUgaXMgbm8gZWFzeSB3YXkgdG8gZGVzY3JpYmUKKyMgdGhlIGRlcGVuZGVuY2llcyB1
c2luZyBtYWtlLiBJbnN0ZWFkLCB0aGUgYXNzZW1ibGVyIHdpbGwgZGVjaWRlIG9uCisjIGl0cyBv
d24gd2hldGhlciBvciBub3QgaXQgZGlkIGFueXRoaW5nIHRoYXQgd291bGQgbGVhZCB0byBhIGNo
YW5nZS4KK0xMSW50QXNzZW1ibHkuaC5QSE9OWToKKwlydWJ5ICQoSmF2YVNjcmlwdENvcmUpL29m
ZmxpbmVhc20vYXNtLnJiICQoSmF2YVNjcmlwdENvcmUpL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtICQoQlVJTFRfUFJPRFVDVFNfRElSKS9KU0NMTEludE9mZnNldHNFeHRyYWN0b3IgPiBM
TEludEFzc2VtYmx5LmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE1IEBACiAJb2Jq
ZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0
NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwQUMx
NEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVn
YXRlVGFyZ2V0ICJMTEludCBPZmZzZXRzIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBG
NDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCisJ
CQkpOworCQkJbmFtZSA9ICJMTEludCBPZmZzZXRzIjsKKwkJCXByb2R1Y3ROYW1lID0gIkRlcml2
ZWQgU291cmNlcyI7CisJCX07CiAJCTY1RkIzRjY2MDlEMTFFOTEwMEY0OURFQiAvKiBEZXJpdmVk
IFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CiAJCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gNjVGQjNGNzcwOUQxMUVCRDAwRjQ5REVCIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJEZXJpdmVkIFNvdXJjZXMiICov
OwpAQCAtMTQsNiArMjMsOSBAQAogCQkJCTY1RkIzRjY1MDlEMTFFOTEwMEY0OURFQiAvKiBHZW5l
cmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJNUQzNURFRTEwQzdDMTQwQjAwODY0OEIyIC8q
IEdlbmVyYXRlIERUcmFjZSBoZWFkZXIgKi8sCiAJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAor
CQkJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAor
CQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJCXByb2R1Y3ROYW1lID0gIkRl
cml2ZWQgU291cmNlcyI7CiAJCX07CkBAIC02MCw2ICs3MiwxNSBAQAogCQkwRjQzMTczODE0NkJB
QzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFi
bGVIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDgwMTRCQTU3Mjcw
MEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2Vw
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkw
RjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RTE0QkE3RjgyMDBCRkUy
NzIgLyogTExJbnRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVy
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2
ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLzsgc2V0dGluZ3MgPSB7
Q09NUElMRVJfRkxBR1MgPSAiLVduby11bnVzZWQtcGFyYW1ldGVyIjsgfTsgfTsKKwkJMEY0Njgw
QTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExM
SW50SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Njgw
QTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi87IH07CisJ
CTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUQxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MENBMTRCQkIxNkMw
MEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0Njgw
Q0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzYxNEJCQjE2OTAwQkZF
MjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dM
ZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVy
LmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1RjA4Q0YxNDZDNzYz
MzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBV
bmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAxNzQxNDNGQ0QzMzAwNjhCNzdDIC8qIERGR1ZhcmlhYmxl
QWNjZXNzRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY2MjAxNzIxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjIwMTc1
MTQzRkNEMzcwMDY4Qjc3QyAvKiBERkdPcGVyYW5kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MjAxNzExNDNGQ0QyRjAwNjhCNzdDIC8qIERGR09w
ZXJhbmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTM2MCw3ICszODEsNyBAQAogCQk4NkI5OUFFMzExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5n
QnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkI5OUFFMTExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZCQjA5QzAxMzhFMzgxQjAwNTY3
MDJGIC8qIERGR1JlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZCQjA5QkUxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwICov
OyB9OwogCQk4NkJCMDlDMTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkYxMzhFMzgxQjAw
NTY3MDJGIC8qIERGR1JlcGF0Y2guaCAqLzsgfTsKLQkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5
IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAq
LzsgfTsKKwkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEy
ODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFj
cm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZDNTY4REQxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNw
cCAqLzsgfTsKIAkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQ
Uy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4
REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwogCQk4NkM1
NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8q
IE1JUFNBc3NlbWJsZXIuaCAqLzsgfTsKQEAgLTcyMCw2ICs3NDEsMjAgQEAKIC8qIEVuZCBQQlhC
dWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2Vj
dGlvbiAqLworCQkwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVBy
b3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVy
UG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwor
CQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwQTkxNEJB
N0ZEOTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9ICJMTEludCBPZmZzZXRzIjsKKwkJfTsKKwkJ
MEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsK
KwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4
NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlw
ZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3
MjsKKwkJCXJlbW90ZUluZm8gPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCX07CiAJCTE0
MTIxMTM1MEE0ODc5NjEwMDQ4MDI1NSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3
RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC03OTMsNiArODI4
LDE1IEBACiAvKiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhEMTRCQTdFNUUw
MEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBo
YXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAvdXNy
L3NoYXJlL21hbi9tYW4xLzsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMgPSAo
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCX07
CiAJCTVEQkIxNTExMTMxRDBCMTMwMDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0g
ewogCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDEyOwpAQCAtODQ1LDYgKzg4OSwyMCBAQAogCQkwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyog
TGlzdGFibGVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpc3Rh
YmxlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA3RjE0QkE1
NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKSVRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBh
dGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CisJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFeGNlcHRpb25z
LmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFeGNlcHRpb25zLmg7IHBh
dGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEhlbHBlcnMuY3BwOyBwYXRoID0gbGxp
bnQvTExJbnRIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0Njgw
QTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBMTEludEhlbHBlcnMuaDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIg
LyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHBhdGggPSBsbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBD
NTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gTExJbnRDb21tb24uaDsgcGF0aCA9IGxsaW50L0xMSW50Q29tbW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBM
TEludE9mZmxpbmVBc21Db25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHBhdGggPSBsbGludC9MTEludE9mZmxpbmVBc21Db25m
aWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzcxNEJCQjE2OTAwQkZF
MjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHBhdGggPSBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzgx
NEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5oOyBwYXRoID0gbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBD
RTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IExMSW50RGF0YS5jcHA7IHBhdGggPSBsbGludC9MTEludERhdGEuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIg
LyogTExJbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RGF0
YS5oOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUy
NzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNUYwOENDMTQ2QkU2MDIwMDA0NzJBOSAvKiBERkdCeXRlQ29kZUNhY2hlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0J5dGVDb2RlQ2FjaGUuaDsgcGF0aCA9IGRmZy9E
RkdCeXRlQ29kZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENF
MTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2MjAxNkQxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR0Fic3Ry
YWN0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQWJz
dHJhY3RTdGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQ2LDYgKzE2MDQsMTMgQEAKIC8qIEVuZCBQQlhGaWxl
UmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ug
c2VjdGlvbiAqLworCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRTBBNDg3OTNDMDA0ODAyNTUg
LyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwog
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTE2MDQsNiArMTY2OSw3IEBACiAJ
CQkJMTQxMjExMjAwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYw
QTNFOEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJNjUxMTIzMDUxNDA0NkE0QzAwMkIx
MDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpT
Q0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKIAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTYzMiw2ICsxNjk4LDcgQEAKIAkJCQlGNUMy
OTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLywKIAkJCQk0
NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVE
NEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8sCisJCQkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcy
IC8qIGxsaW50ICovLAogCQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJ
CQkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQk5NjlBMDc4
RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8sCkBAIC0xNjcwLDYgKzE3MzcsMjQgQEAK
IAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJMEY0NjgwOUMxNEJB
N0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGls
ZHJlbiA9ICgKKwkJCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAq
LywKKwkJCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi8sCisJCQkJ
MEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi8sCisJCQkJMEY0Njgw
QzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovLAorCQkJCTBG
NDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLywKKwkJ
CQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovLAor
CQkJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovLAor
CQkJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLywKKwkJ
CQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLywKKwkJCQkw
RjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8sCisJCQkJMEY0Njgw
QTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi8sCisJCQkp
OworCQkJbmFtZSA9IGxsaW50OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJ
MTQxMjExMDAwQTQ4NzcyNjAwNDgwMjU1IC8qIHRlc3RzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE3MDIsNiArMTc4Nyw4IEBACiAJCTE0MjlEOTJDMEVE
MjJENzAwMEI4OTYxOSAvKiBqaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZh
bHVlLmNwcCAqLywKKwkJCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1
cm5WYWx1ZS5oICovLAogCQkJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRp
b25zLmNwcCAqLywKIAkJCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9u
cy5oICovLAogCQkJCTBGRDgyRTM3MTQxQUIxNDIwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1h
cC5oICovLApAQCAtMzAxMCwxMyArMzA5NywzNiBAQAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5
RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCNDMxMkRCOEE4
MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1
RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExM
SW50Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIg
LyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDRDE0
QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CiAv
KiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRp
dmVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJ
bnRPZmZzZXRzRXh0cmFjdG9yICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJ
YnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRz
RXh0cmFjdG9yIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MDhCMTRCQTdFNUUw
MEJGRTI3MiAvKiBTb3VyY2VzICovLAorCQkJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBG
cmFtZXdvcmtzICovLAorCQkJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMg
Ki8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAo
CisJCQkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8s
CisJCQkpOworCQkJbmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3RO
YW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDBG
NDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJ
CQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OwogCQkx
NDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWE5h
dGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDEyMTEzOTBBNDg3OTg0
MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQg
Im1pbmlkb20iICovOwpAQCAtMzE0NywxMSArMzI1NywyOSBAQAogCQkJCTE0QkQ1OUJFMEEzRThG
OTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTkzMkY1QkRBMDgyMkExQzcwMDczNjk3NSAv
KiBqc2MgKi8sCiAJCQkJNjUxMTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8s
CisJCQkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ciAqLywKKwkJCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLywK
IAkJCSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MEFBMTRCQTdGRDkwMEJG
RTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVs
bFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJ
ZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9sbGlu
dC9Mb3dMZXZlbEFzc2VtYmxlci5hc20iLAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUgRGVy
aXZlZCBTb3VyY2VzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RVQ1RT
X0RJUikvTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaCIsCisJCQkpOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmlu
L3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0v
TExJbnRPZmZzZXRzL1wiXG5cbi91c3IvYmluL2VudiBydWJ5IFwiJHtTUkNST09UfS9vZmZsaW5l
YXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmJcIiA8IFwiJHtTUkNST09UfS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbVwiID4gXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRP
ZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaFwiXG4iOworCQl9OwogCQkzNzEzRjAxNDE0Mjkw
NTI0MDAzNjM4N0YgLyogQ2hlY2sgRm9yIEluYXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xhc3Mg
TmFtZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzI5Miw2ICszNDIwLDE0IEBACiAvKiBFbmQg
UEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNl
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291
cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGNDY4MEE3MTRCQTdGQTEw
MEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkp
OworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0
MTIxMTFEMEE0ODc5M0MwMDQ4MDI1NSAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291
cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzU0
OSw3ICszNjg1LDEwIEBACiAJCQkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQ
YXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAv
KiBZYXJyU3ludGF4Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0QkE3
RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4
MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0zNTY0LDYgKzM3MDMsMTYgQEAKIC8qIEVuZCBQ
QlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERlcGVu
ZGVuY3kgc2VjdGlvbiAqLworCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0
RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJn
ZXQgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLzsKKwkJCXRh
cmdldFByb3h5ID0gMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLzsKKwkJfTsKKwkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0
ID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAq
LzsKKwkJCXRhcmdldFByb3h5ID0gMEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKIAkJMTQxMjExMzYwQTQ4Nzk2MTAwNDgwMjU1IC8qIFBC
WFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5Owog
CQkJdGFyZ2V0ID0gOTMyRjVCM0UwODIyQTFDNzAwNzM2OTc1IC8qIEphdmFTY3JpcHRDb3JlICov
OwpAQCAtMzYxNyw2ICszNzY2LDE0OCBAQAogLyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kgc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTBG
NDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VT
RVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOwor
CQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9
IGdudTk5OworCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19FTkFCTEVfT0JK
Q19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJ
CUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJ
IiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9
IE5POworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFf
MDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19X
QVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9S
RVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJ
CQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwK
KwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFE
RVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQg
PSAxMC43OworCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJCQkJUFJPRFVDVF9OQU1FID0g
IiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVS
X1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRz
ICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsK
KwkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NF
QVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9C
SVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9O
X0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJE
ID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0ND
X1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19X
QVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlT
U0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0g
WUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NF
QVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlM
VF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJ
CSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05B
TUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9I
RUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9m
ZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7
CisJCX07CisJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
QUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFO
REFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lO
Rk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdF
X1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7
CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOwor
CQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5f
QUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVS
Tl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQki
SEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJ
CQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9T
RUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEw
Ljc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0g
bWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsK
KwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAv
KiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJ
CUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJ
UCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3lt
IjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVf
T0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBp
bGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lP
TiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURf
VkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJ
CQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNl
dHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hf
REVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9O
QU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFU
SFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9T
RUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0
NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJE
ZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkw
RjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUg
PSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9
OworCQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RV
Q1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2Zp
bGluZzsKKwkJfTsKKwkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQlu
YW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjExM0EwQTQ4Nzk4NDAwNDgwMjU1IC8qIERl
YnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRp
bmdzID0gewpAQCAtMzg1OCw2ICs0MTQ5LDI4IEBACiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRp
b24gc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8K
KwkJMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovID0geworCQkJ
aXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJ
CQkJMEY0NjgwOTYxNEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MDk3MTRC
QTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3
MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1
Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwor
CQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0Njgw
QUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdn
cmVnYXRlVGFyZ2V0ICJMTEludCBPZmZzZXRzIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJh
dGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MEFEMTRCQTdG
RDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyog
UmVsZWFzZSAqLywKKwkJCQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICov
LAorCQkJCTBGNDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsK
KwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1
cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1
NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRv
bSIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1
ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlu
a0J1ZmZlci5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0xpbmtCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2Rl
ZmluZSBEVU1QX0xJTktfU1RBVElTVElDUyAwCiAjZGVmaW5lIERVTVBfQ09ERSAwCiAKLSNpbmNs
dWRlIDxNYWNyb0Fzc2VtYmxlci5oPgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEwNDQy
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04ODEsNiArODgxLDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNT
dGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDogeworICAg
ICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAgICAgICAgcHJp
bnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF9nZW5lcmljOiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2Nh
dGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIpOwogICAgICAgICAgICAgYnJlYWs7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAx
MDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcyLDggKzcyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGhh
c1NlZW5TaG91bGRSZXBhdGNoCiAgICAgfTsKIAotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBj
bGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBlbnVtIENvZGVUeXBlIHsgR2xvYmFsQ29kZSwgRXZh
bENvZGUsIEZ1bmN0aW9uQ29kZSB9OwogCkBAIC0yNTYsNiArMjU3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIs
IHB1YmxpYyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENvcHlQ
YXJzZWRCbG9ja1RhZyB7IENvcHlQYXJzZWRCbG9jayB9OwogICAgIHByb3RlY3RlZDoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lv
biAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDYgKzE4NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3RydWN0dXJlQ2hhaW47
CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxsOwogICAgICAgICAg
ICAgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKKyAgICAgICAgICAgIHZv
aWQqIHBvaW50ZXI7CiAgICAgICAgIH0gdTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDEwNDQyOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTIzLDYgKzEyMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9n
ZXRfYXJndW1lbnRzX2xlbmd0aCwgNCkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWQsIDkp
IFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24sIDkpIFwKKyAgICAgICAg
bWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0LCA5KSBcCisgICAgICAgIG1hY3Jv
KG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCwgOSkgXAogICAgICAgICBtYWNybyhvcF9w
dXRfYnlfaWRfcmVwbGFjZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfZ2VuZXJp
YywgOSkgXAogICAgICAgICBtYWNybyhvcF9kZWxfYnlfaWQsIDQpIFwKQEAgLTIwMiw2ICsyMDQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBlbnVtIHsgRk9SX0VBQ0hfT1BD
T0RFX0lEKE9QQ09ERV9JRF9FTlVNKSB9IE9wY29kZUlEOwogICAgICN1bmRlZiBPUENPREVfSURf
RU5VTQogCisgICAgY29uc3QgaW50IG1heE9wY29kZUxlbmd0aCA9IDk7CiAgICAgY29uc3QgaW50
IG51bU9wY29kZUlEcyA9IG9wX2VuZCArIDE7CiAKICAgICAjZGVmaW5lIE9QQ09ERV9JRF9MRU5H
VEhTKGlkLCBsZW5ndGgpIGNvbnN0IGludCBpZCMjX2xlbmd0aCA9IGxlbmd0aDsKQEAgLTIxOCw3
ICsyMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKFZF
UklGWV9PUENPREVfSUQpOwogICAgICN1bmRlZiBWRVJJRllfT1BDT0RFX0lECiAKLSNpZiBFTkFC
TEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19J
TlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQogI2lmIENPTVBJTEVSKFJWQ1QpIHx8IENPTVBJ
TEVSKElOVEVMKQogICAgIHR5cGVkZWYgdm9pZCogT3Bjb2RlOwogI2Vsc2UKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lv
biAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyMyw3ICsxODIzLDkgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0
X2J5X2lkKTsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CisgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6
IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmll
ck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTEx
LDggQEAgaW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNhc2Ug
b3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9w
dXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xv
YmFsX3ZhcjoKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZp
c2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUgIkRGR1JlcGF0Y2guaCIKKyNp
bmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW5saW5lQVNNLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgpAQCAtNTQ1
LDQ1ICs1NDYsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNvZGVkSlNWYWx1
ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNT
dGF0ZSopOwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklO
RyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKLSAgICAi
bW92ICVyMTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKFg4
NikKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0g
ICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVzcClcbiIKLSAg
ICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVX
aXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20gKAotIi50
ZXh0IiAiXG4iCi0iLmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpICJcbiIKLSIudGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0o
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKLSAgICAi
Y3B5IHIwLCByNSIgIlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0KLUVuY29k
ZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3Rh
dGUoRXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+
Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQotCiBzdGF0aWMgdm9pZCogaGFu
ZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxs
ZWUtPmNhbGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxv
Y2F0aW9uU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9B
bGxvY2F0aW9uU3BhY2UuaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOworY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogY2xhc3MgTWFya2VkQmxvY2s7CiAKIGNsYXNzIEFsbG9jYXRpb25TcGFjZSB7CkBA
IC02OCw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNocmluaygpOwogICAgIAogcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAgIGVu
dW0gQWxsb2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRpb25NdXN0U3VjY2VlZCwgQWxsb2NhdGlvbkNh
bkZhaWwgfTsKICAgICAKICAgICB2b2lkKiBhbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNz
Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMDQ0MjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAg
IGNsYXNzIEpTVmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsK
ICAgICBjbGFzcyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTEyOSwxMCAr
MTMwLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJl
Z2lzdGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQWxs
b2NhdGlvblNwYWNlOwotICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
bWluRXh0cmFDb3N0ID0gMjU2OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4dHJh
Q29zdCA9IDEwMjQgKiAxMDI0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRTcGFjZS5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogY2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIExpdmVPYmplY3RJdGVy
YXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsK
IGNsYXNzIFNsb3RWaXNpdG9yOwogCkBAIC03OSw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVh
Y2hCbG9jaygpOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisgICAgCiAgICAgLy8gWyAzMi4uLiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgcHJlY2lzZVN0ZXAgPSBNYXJrZWRCbG9jazo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBwcmVjaXNlQ3V0b2ZmID0gMjU2OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMDQ0MjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjZW5kaWYKIAot
I2RlZmluZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQgKEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKSAmJiAhZGVmaW5lZChfX2xsdm1fXykpCisjZGVmaW5lIFdU
Rl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAoKEVOQUJMRShDT01QVVRFRF9HT1RP
X0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpKSAmJiAhZGVmaW5lZChfX2xsdm1fXykpCiAK
IHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTU0NywxNyArNTQ3LDQxIEBAIEludGVycHJldGVy
OjpJbnRlcnByZXRlcigpCiB7CiB9CiAKLXZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9v
bCBjYW5Vc2VKSVQpCitJbnRlcnByZXRlcjo6fkludGVycHJldGVyKCkKIHsKLSNpZiBFTkFCTEUo
Q09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1f
ZW5hYmxlZCkKKyAgICAgICAgZGVsZXRlW10gbV9vcGNvZGVUYWJsZTsKKyNlbmRpZgorfQorCit2
b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKExMSW50OjpEYXRhKiBsbGludERhdGEsIGJvb2wg
Y2FuVXNlSklUKQoreworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBF
TkFCTEUoTExJTlQpCisjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorICAg
IC8vIEhhdmluZyBMTEludCBlbmFibGVkLCBidXQgbm90IGJlaW5nIGFibGUgdG8gdXNlIHRoZSBK
SVQsIGFuZCBub3QgaGF2aW5nCisgICAgLy8gYSBjb21wdXRlZCBnb3RvIGludGVycHJldGVyLCBp
cyBub3Qgc3VwcG9ydGVkLiBOb3QgYmVjYXVzZSB3ZSBjYW5ub3QKKyAgICAvLyBzdXBwb3J0IGl0
LCBidXQgYmVjYXVzZSBJIGRlY2lkZWQgdG8gZHJhdyB0aGUgbGluZSBhdCB0aGUgbnVtYmVyIG9m
CisgICAgLy8gcGVybXV0YXRpb25zIG9mIGV4ZWN1dGlvbiBlbmdpbmVzIHRoYXQgSSB3YW50ZWQg
dGhpcyBjb2RlIHRvIGdyb2suCisgICAgQVNTRVJUKGNhblVzZUpJVCk7CisjZW5kaWYKICAgICBp
ZiAoY2FuVXNlSklUKSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxl
ID0gbGxpbnREYXRhLT5vcGNvZGVNYXAoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1PcGNvZGVJRHM7ICsraSkKKyAgICAgICAgICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNv
ZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsKKyNlbHNlCiAgICAgICAgIC8v
IElmIHRoZSBKSVQgaXMgcHJlc2VudCwgZG9uJ3QgdXNlIGp1bXAgZGVzdGluYXRpb25zIGZvciBv
cGNvZGVzLgogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJ
RHM7ICsraSkgewogICAgICAgICAgICAgT3Bjb2RlIG9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihpKSk7CiAgICAgICAgICAgICBtX29wY29kZVRhYmxl
W2ldID0gb3Bjb2RlOwogICAgICAgICB9CisjZW5kaWYKICAgICB9IGVsc2UgeworI2lmIEVOQUJM
RShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJsZSA9IG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURz
XTsKKyNlbmRpZgogICAgICAgICBwcml2YXRlRXhlY3V0ZShJbml0aWFsaXplQW5kUmV0dXJuLCAw
LCAwKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURz
OyArK2kpCkBAIC02NjcsOSArNjkxLDExIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3Rl
cnMoQ2FsbEZyYW0KIAogYm9vbCBJbnRlcnByZXRlcjo6aXNPcGNvZGUoT3Bjb2RlIG9wY29kZSkK
IHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09N
UFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoTExJ
TlQpCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybiBvcGNvZGUgPj0gMCAmJiBz
dGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSkgPD0g
b3BfZW5kOworI2VuZGlmCiAgICAgcmV0dXJuIG9wY29kZSAhPSBIYXNoVHJhaXRzPE9wY29kZT46
OmVtcHR5VmFsdWUoKQogICAgICAgICAmJiAhSGFzaFRyYWl0czxPcGNvZGU+Ojppc0RlbGV0ZWRW
YWx1ZShvcGNvZGUpCiAgICAgICAgICYmIG1fb3Bjb2RlSURUYWJsZS5jb250YWlucyhvcGNvZGUp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVk
ZSAiUmVnaXN0ZXJGaWxlLmgiCiAKQEAgLTQ1LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNs
YXNzIFNjb3BlQ2hhaW5Ob2RlOwpAQCAtOTAsMTkgKzkyLDIxIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hl
ZENhbGw7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgogICAgICAgICBJbnRlcnByZXRlcigp
OworICAgICAgICB+SW50ZXJwcmV0ZXIoKTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgaW5pdGlh
bGl6ZShib29sIGNhblVzZUpJVCk7CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZShMTEludDo6RGF0
YSosIGJvb2wgY2FuVXNlSklUKTsKIAogICAgICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmls
ZSgpIHsgcmV0dXJuIG1fcmVnaXN0ZXJGaWxlOyB9CiAgICAgICAgIAogICAgICAgICBPcGNvZGUg
Z2V0T3Bjb2RlKE9wY29kZUlEIGlkKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9p
bml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICAgICAg
ICAgICAgIHJldHVybiBtX29wY29kZVRhYmxlW2lkXTsKICNlbHNlCiAgICAgICAgICAgICByZXR1
cm4gaWQ7CkBAIC0xMTIsNyArMTE2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPcGNv
ZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBB
U1NFUlQobV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVU
RVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29k
ZSkpOworICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKKyNl
bGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgQVNTRVJU
KGlzT3Bjb2RlKG9wY29kZSkpOwogICAgICAgICAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihvcGNvZGUpKTsKQEAgLTE4OSw3ICsxOTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgUmVnaXN0ZXJGaWxlIG1fcmVnaXN0ZXJGaWxlOwogICAgICAgICAKLSNpZiBFTkFCTEUo
Q09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIE9w
Y29kZSogbV9vcGNvZGVUYWJsZTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBp
bGluZworICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsg
Ly8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCisjZWxpZiBFTkFCTEUo
Q09NUFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVb
bnVtT3Bjb2RlSURzXTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwog
ICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFw
cyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHJldmlz
aW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rl
ckZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7
CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgUmVnaXN0ZXJG
aWxlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVnaXN0ZXJGaWxlKTsKQEAgLTgx
LDYgKzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAg
ICAgICBib29sIGdyb3dTbG93Q2FzZShSZWdpc3RlciopOwogICAgICAgICB2b2lkIHJlbGVhc2VF
eGNlc3NDYXBhY2l0eSgpOwogICAgICAgICB2b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxv
bmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0
dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9I
b3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorCisjaW5jbHVkZSAiQ2Fs
bEZyYW1lLmgiCisjaW5jbHVkZSAiSW5saW5lQVNNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitl
eHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9D
QUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3Rh
dGUoRXhlY1N0YXRlKik7CisKKyNpZiBDUFUoWDg2XzY0KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1C
T0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglcjEzKSwgJXIxM1xu
IgorICAgICJtb3YgJXIxMywgJXJkaVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9D
QVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxp
ZiBDUFUoWDg2KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoi
ICJcbiIKKyAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgorICAgICJtb3YgJWVkaSwgNCglZXNw
KVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKK2Fz
bSAoCisiLnRleHQiICJcbiIKKyIuYWxpZ24gMiIgIlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJ
TkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIlxuIgorIi50aHVtYiIgIlxuIgorIi50aHVtYl9mdW5jICIgVEhVTUJfRlVO
Q19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxu
IgorICAgICJjcHkgcjAsIHI1IiAiXG4iCisgICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJ
T04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZW5kaWYK
KworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElP
TiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxS
ZXR1cm5WYWx1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorI2RlZmluZSBIb3N0
Q2FsbFJldHVyblZhbHVlX2gKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJNYWNy
b0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENB
TExJTkdfQ09OVkVOVElPTl9JU19TVERDQUxMCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFM
VUVfT1BUSU9OIENERUNMCisjZWxzZQorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09Q
VElPTgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0MgeworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1
ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7
Cit9CisKKyNlbmRpZiAvLyBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDggQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmls
ZV93aWxsX2NhbGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX25ld19zY29wZSkKICAgICAg
ICAgREVGSU5FX09QKG9wX3B1c2hfc2NvcGUpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbDoKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09Q
KG9wX3B1dF9ieV9pbmRleCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCkBAIC00
ODcsNiArNDg5LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Bvc3RfaW5jKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfcHJlX2RlYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9pbmMp
CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9i
eV92YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2dsb2JhbCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBMTEludENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gK
KworI2RlZmluZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lORyAwCisKKyNlbmRpZiAvLyBMTEludENv
bW1vbl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxM
SW50RGF0YS5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24u
aCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgi
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitEYXRhOjpEYXRhKCkKKyAg
ICA6IG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKG5ldyBJbnN0cnVjdGlvblttYXhPcGNvZGVMZW5n
dGggKyAxXSkKKyAgICAsIG1fb3Bjb2RlTWFwKG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXSkKK3sK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heE9wY29kZUxlbmd0aCArIDE7ICsraSkKKyAgICAg
ICAgbV9leGNlcHRpb25JbnN0cnVjdGlvbnNbaV0udS5wb2ludGVyID0gbGxpbnRfdGhyb3dfZnJv
bV9oZWxwZXJfdHJhbXBvbGluZTsKKyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3Ro
KSBtX29wY29kZU1hcFtvcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNv
ZGUpOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkpOworI3VuZGVmIE9QQ09E
RV9FTlRSWQorfQorCitEYXRhOjp+RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9leGNlcHRpb25J
bnN0cnVjdGlvbnM7CisgICAgZGVsZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIExMSW50RGF0YV9oCisjZGVmaW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRlICJPcGNvZGUu
aCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVj
dCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKworI2lmIEVOQUJMRShMTElOVCkK
K2NsYXNzIERhdGEgeworcHVibGljOgorICAgIERhdGEoKTsKKyAgICB+RGF0YSgpOworICAgIAor
ICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUq
IG9wY29kZU1hcCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgfQor
cHJpdmF0ZToKKyAgICBJbnN0cnVjdGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAg
T3Bjb2RlKiBtX29wY29kZU1hcDsKK307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQpCisKKyNpZiBD
T01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlmCisKK2Ns
YXNzIERhdGEgeworcHVibGljOgorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlv
bnMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAor
ICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KK307CisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwb3AKKyNlbmRpZgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50RGF0YV9oCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxM
SW50RXhjZXB0aW9ucy5oIgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJKSVRFeGNlcHRp
b25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIExMSW50IHsKKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0
YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwg
ZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAKKyAgICByZXR1cm4gZ2xvYmFsRGF0YS0+bGxpbnRE
YXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworfQorCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVj
U3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRh
LCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmlu
c3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKTsKK30KKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBM
TEludEV4Y2VwdGlvbnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRl
Oworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisvLyBTYXZlcyB0
aGUgY3VycmVudCBQQyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdp
dmVzIHlvdSBhIFBDCisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28g
dG8sIHdoaWNoIHdoZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdp
dmUgeW91IGFuICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidz
CisvLyBleGNlcHRpb24gaGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBm
b3IgZXhjZXB0aW9uIGhhbmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1
cm4gdGhhdCBQQyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91
IHRocmVhZCBleGNlcHRpb24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9u
cyB1c2VkIGJ5CisvLyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3co
RXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhy
b3dpbmcgdG8gYSBjYWxsIHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5z
dHJ1Y3Rpb24qKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBM
TEludEV4Y2VwdGlvbnNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTE2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEhlbHBlcnMuaCIKKworI2luY2x1ZGUgIkFyZ3Vt
ZW50cy5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRo
cy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5
LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgor
I2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxM
SW50RXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewor
CisjZGVmaW5lIExMSU5UX09QKGluZGV4KSAoZXhlYy0+cmVnaXN0ZXJzKClbcGNbaW5kZXhdLnUu
b3BlcmFuZF0pCisjZGVmaW5lIExMSU5UX09QX0MoaW5kZXgpIChleGVjLT5yKHBjW2luZGV4XS51
Lm9wZXJhbmQpKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9UV08oZmlyc3QsIHNlY29uZCkgZG8g
eyAgICAgICBcCisgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICAgICAgdm9pZCogYTsgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICAgICAgdm9pZCogYjsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICB9IHBhaXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICBpbnQ2NF90IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IH0gX19ydF91OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9f
cnRfdS5wYWlyLmEgPSBmaXJzdDsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRf
dS5wYWlyLmIgPSBzZWNvbmQ7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBf
X3J0X3UuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2Up
CisKKyNkZWZpbmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCBleGVjKQor
CisjZGVmaW5lIExMSU5UX1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYgX190X2dsb2JhbERhdGEgPSBleGVj
LT5nbG9iYWxEYXRhKCk7ICAgICAgICBcCisgICAgICAgIF9fdF9nbG9iYWxEYXRhLmV4Y2VwdGlv
biA9IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICBcCisgICAgICAgIHBjID0gcmV0dXJu
VG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+
Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpIHsgICBcCisgICAgICAgICAgICBwYyA9IHJldHVyblRv
VGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5UX0VORF9J
TVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2Up
CisKKyNkZWZpbmUgTExJTlRfRU5EKCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
TExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChm
YWxzZSkKKworI2RlZmluZSBMTElOVF9CUkFOQ0gob3Bjb2RlLCBjb25kaXRpb24pIGRvIHsgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBib29sIF9fYl9jb25kaXRpb24gPSAoY29uZGl0
aW9uKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAo
X19iX2NvbmRpdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgcGMgKz0gcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5vcGVyYW5k
OyAgICAgICAgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChv
cGNvZGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1Q
TCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hp
bGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTih2YWx1ZSkgZG8geyAgICAgICAgICAg
ICAgICBcCisgICAgICAgIEpTVmFsdWUgX19yX3JldHVyblZhbHVlID0gKHZhbHVlKTsgICAgICBc
CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAg
ICAgIExMSU5UX09QKDEpID0gX19yX3JldHVyblZhbHVlOyAgICAgICAgICBcCisgICAgICAgIExM
SU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFs
c2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0KSBMTElO
VF9SRVRVUk5fVFdPKChleGVjKSwgKGNhbGxUYXJnZXQpKQorCisjZGVmaW5lIExMSU5UX0NBTExf
VEhST1coZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICBcCisg
ICAgICAgIEV4ZWNTdGF0ZSogX19jdF9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2N0X3BjID0gKHBjKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYg
X19jdF9nbG9iYWxEYXRhID0gKF9fY3RfZXhlYyktPmdsb2JhbERhdGEoKTsgICAgICBcCisgICAg
ICAgIF9fY3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jdF9leGVjLCBjYWxs
VG9UaHJvdyhfX2N0X2V4ZWMsIF9fY3RfcGMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisj
ZGVmaW5lIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKSBkbyB7ICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jY2VfZXhlYyA9IChleGVjKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBf
X2NjZV9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIGlmIChVTkxJS0VMWShfX2NjZV9leGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY2NlX2V4ZWMs
IGNhbGxUb1Rocm93KF9fY2NlX2V4ZWMsIF9fY2NlX3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxz
ZSkKKworI2RlZmluZSBMTElOVF9DQUxMX1JFVFVSTihleGVjLCBwYywgY2FsbFRhcmdldCkgZG8g
eyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3JfZXhlYyA9IChl
eGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVj
dGlvbiogX19jcl9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICB2b2lkKiBfX2NyX2NhbGxUYXJnZXQgPSAoY2FsbFRhcmdldCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihf
X2NyX2V4ZWMtPmNhbGxlckZyYW1lKCksIF9fY3JfcGMpOyAgXAorICAgICAgICBMTElOVF9DQUxM
X0VORF9JTVBMKF9fY3JfZXhlYywgX19jcl9jYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgXAor
ICAgIH0gd2hpbGUgKGZhbHNlKQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpCit7Cisg
ICAgLy8gRklYTUUKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wobG9v
cF9vc3IpCit7CisgICAgLy8gRklYTUUKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0wocmVwbGFjZSkKK3sKKyAgICAvLyBGSVhNRQorICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKQoreworICAgIC8vIEZJWE1F
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2Fy
aXR5Q2hlY2spCit7CisgICAgLy8gRklYTUUKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIC8vIEZJWE1F
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVf
YWN0aXZhdGlvbikKK3sKKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBKU0FjdGl2YXRp
b246OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMsIHN0YXRpY19jYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSkpOworICAg
IGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2YXRpb24p
KTsKKyAgICBMTElOVF9SRVRVUk4oSlNWYWx1ZShhY3RpdmF0aW9uKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQoreworICAgIExMSU5UX1JFVFVSTihK
U1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYykpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKQoreworICAgIEpTRnVuY3Rp
b24qIGNvbnN0cnVjdG9yID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgCisjaWYg
IUFTU0VSVF9ESVNBQkxFRAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBB
U1NFUlQoY29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3Ry
dWN0b3IsIGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CisjZW5kaWYKKyAgICAK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBKU1ZhbHVlIHByb3RvID0gTExJTlRfT1Ao
MikuanNWYWx1ZSgpOworICAgIGlmIChwcm90by5pc09iamVjdCgpKQorICAgICAgICBzdHJ1Y3R1
cmUgPSBhc09iamVjdChwcm90byktPmluaGVyaXRvcklEKGV4ZWMtPmdsb2JhbERhdGEoKSk7Cisg
ICAgZWxzZQorICAgICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c2NvcGUoKS0+Z2xvYmFs
T2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpOworICAgIAorICAgIExMSU5UX1JFVFVSTihj
b25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcykKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1Ao
MSkuanNWYWx1ZSgpOworICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBMTElOVF9S
RVRVUk4odjEudG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25ld19vYmplY3QpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSkKK3sKKyAg
ICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgYml0d2lzZV9jYXN0PEpTVmFsdWUq
PigmTExJTlRfT1AoMikpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25ld19hcnJheV9idWZmZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVj
dEFycmF5KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihwY1syXS51Lm9w
ZXJhbmQpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X25ld19yZWdleHApCit7CisgICAgUmVnRXhwKiByZWdFeHAgPSBleGVjLT5jb2RlQmxvY2soKS0+
cmVnZXhwKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkKKyAg
ICAgICAgTExJTlRfVEhST1coY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgZmxhZyBz
dXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpOworICAgIExMSU5UX1JFVFVSTihSZWdF
eHBPYmplY3Q6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwg
cmVnRXhwKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbighTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVj
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbmVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OmVxdWFsKGV4
ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFs
dWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9zdHJpY3RuZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1
ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1AoMiku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2xlc3NlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVz
c0VxPHRydWU+KGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKQoreworICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUCgyKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZ3JlYXRlcmVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNM
ZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKQorewor
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIo
ZXhlYykgKyAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKQorewor
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIo
ZXhlYykgLSAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYykKK3sK
KyAgICBkb3VibGUgcmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
OworICAgIExMSU5UX09QKDIpID0ganNOdW1iZXIocmVzdWx0ICsgMSk7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKHJlc3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9z
dF9kZWMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051
bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCAtIDEpOworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3RvX2pzbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9P
UCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25lZ2F0ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoLUxMSU5UX09QKDIp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfYWRkKQoreworICAgIEpTVmFsdWUgdjEgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSB2MiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAgIGlmICh2MS5p
c1N0cmluZygpKSB7CisgICAgICAgIExMSU5UX1JFVFVSTigKKyAgICAgICAgICAgIHYyLmlzU3Ry
aW5nKCkKKyAgICAgICAgICAgID8ganNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEpLCBhc1N0cmlu
Zyh2MikpCisgICAgICAgICAgICA6IGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9Q
cmltaXRpdmVTdHJpbmcoZXhlYykpKTsKKyAgICB9CisgICAgCisgICAgaWYgKHYxLmlzTnVtYmVy
KCkgJiYgdjIuaXNOdW1iZXIoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHYxLmFz
TnVtYmVyKCkgKyB2Mi5hc051bWJlcigpKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpzQWRk
U2xvd0Nhc2UoZXhlYywgdjEsIHYyKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9t
dWwpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKSAqIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAtIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9kaXYpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKSAvIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVy
KGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2QpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4
ZWMpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPDwgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3JzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1
ZSgpLnRvSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhl
YykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSA+
PiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfYml0YW5kKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihM
TElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSAmIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRv
cikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRv
SW50MzIoZXhlYykgfCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKQoreworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSBeIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9iaXRub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKH5MTElOVF9PUCgy
KS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY2hlY2tfaGFzX2luc3RhbmNlKQoreworICAgIEpTVmFsdWUgYmFzZVZhbCA9IExMSU5UX09Q
KDIpLmpzVmFsdWUoKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgVHlwZUluZm8gdHlwZUluZm8oVW5z
cGVjaWZpZWRUeXBlKTsKKyAgICBBU1NFUlQoIWJhc2VWYWwuaXNPYmplY3QoKQorICAgICAgICAg
ICB8fCAhKHR5cGVJbmZvID0gYXNPYmplY3QoYmFzZVZhbCktPnN0cnVjdHVyZSgpLT50eXBlSW5m
bygpKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSk7CisjZW5kaWYKKyAgICBMTElOVF9USFJPVyhj
cmVhdGVJbnZhbGlkUGFyYW1FcnJvcihleGVjLCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3coZXhlYywgTExJ
TlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIExMSU5UX09QKDQpLmpz
VmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZikKK3sKKyAg
ICBMTElOVF9SRVRVUk4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1AoMikuanNW
YWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRlZmluZWQpCit7
CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIExMSU5UX1JFVFVS
Tihqc0Jvb2xlYW4odi5pc0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5m
bygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKExMSU5UX09QKDIpLmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oTExJTlRfT1AoMikuanNWYWx1ZSgpLmlzTnVtYmVyKCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KGlzSlNTdHJpbmcoTExJTlRfT1AoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfaXNfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJ
c09iamVjdFR5cGUoTExJTlRfT1AoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfaXNfZnVuY3Rpb24pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihq
c0lzRnVuY3Rpb25UeXBlKExMSU5UX09QKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2luKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9u
U2xvd1BhdGhzOjpvcEluKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMyku
anNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSkKK3sK
KyAgICBMTElOVF9SRVRVUk4oQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+
Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKQoreworICAgIExMSU5UX1JFVFVSTigKKyAg
ICAgICAgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVTa2lwKAorICAgICAgICAgICAgZXhlYywK
KyAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFu
ZCksCisgICAgICAgICAgICBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9i
YWxPYmplY3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0udS5vcGVyYW5kOworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaW50IG9m
ZnNldCA9IHBjWzRdLnUub3BlcmFuZDsKKyAgICAKKyAgICBBU1NFUlQoKCFzdHJ1Y3R1cmUpID09
ICghb2Zmc2V0KSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSBnbG9iYWxPYmplY3QtPnN0cnVj
dHVyZSgpKTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRp
Zmllcihwcm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsKKyAg
ICAKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNs
b3QpKSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVu
dCk7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYg
c2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgcGNbM10udS5z
dHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAg
ICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIExMSU5UX1JFVFVSTihyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9U
SFJPVyhjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAgSWRlbnRpZmllciYg
aWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOwor
ICAgIGlmIChwY1szXS51Lm9wZXJhbmQpIHsKKyAgICAgICAgSlNWYWx1ZSBiYXNlID0gSlNDOjpy
ZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCB0cnVlKTsKKyAgICAg
ICAgaWYgKCFiYXNlKQorICAgICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZh
bGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICAgICAgTExJ
TlRfUkVUVVJOKGJhc2UpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oSlNDOjpyZXNv
bHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKK3sKKyAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+
Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIW9iamVj
dC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkKKyAgICAgICAgTExJTlRfVEhS
T1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3Ry
aW5nKCkpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfd2l0aF9iYXNlKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1Bh
dGhzOjpvcFJlc29sdmVXaXRoQmFzZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmll
cihwY1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKK3sKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aFRoaXMoZXhlYywgZXhl
Yy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5
X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Cisg
ICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVy
YW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBi
YXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKyAgICBMTElOVF9PUCgxKSA9IHJlc3VsdDsKKworICAgIGlmIChiYXNlVmFsdWUuaXND
ZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCisgICAgICAgICYmIHNsb3Quc2xv
dEJhc2UoKSA9PSBiYXNlVmFsdWUKKyAgICAgICAgJiYgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUo
KSA9PSBQcm9wZXJ0eVNsb3Q6OlZhbHVlKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJh
c2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RydWN0
dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0dXJl
LT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpKSB7CisgICAgICAgICAgICBw
Y1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAg
cGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5p
ZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElO
VF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSk7CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwgTExJTlRfT1Ao
MykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAK
KyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUo
KSkgeworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0Nl
bGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJl
KCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rp
b25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQ
cm9wZXJ0eUNhY2hpbmcoKQorICAgICAgICAgICAgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkp
IHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3Bl
cnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+
aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBl
Q2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAg
ICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVj
LT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+
cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xv
dC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAg
cGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAg
ICAgICAgICAgICAgICAgICBwY1s3XS51LnN0cnVjdHVyZUNoYWluLnNldCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKSwgc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9
IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAg
ICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9i
YWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAg
ICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVv
ZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCkKK3sK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2Jq
ZWN0KiBiYXNlT2JqZWN0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvT2JqZWN0KGV4ZWMpOwor
ICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQ
cm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5v
cGVyYW5kKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgaWYgKCFjb3VsZERl
bGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElOVF9USFJPVyhj
cmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKworaW5saW5lIEpTVmFs
dWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBz
dWJzY3JpcHQpCit7CisgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2Ny
aXB0LmlzU3RyaW5nKCkpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1
ZS5hc0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KGV4ZWMsIGFzU3RyaW5nKHN1YnNjcmlwdCkt
PnZhbHVlKGV4ZWMpKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAor
ICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vi
c2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYg
YXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICByZXR1cm4g
YXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAorICAgICAg
ICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSkt
PmNhbkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzQnl0ZUFycmF5KGJhc2VW
YWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGJhc2VW
YWx1ZS5nZXQoZXhlYywgaSk7CisgICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHko
ZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZhbHVlLmdl
dChleGVjLCBwcm9wZXJ0eSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlf
dmFsKQoreworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBMTElOVF9PUCgyKS5qc1Zh
bHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IExM
SU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykgeworICAgICAgICBhcmd1
bWVudHMgPSBBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpOworICAg
ICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgTExJTlRfT1AoMikgPSBhcmd1
bWVudHM7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBhcmd1
bWVudHMsIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2J5X3BuYW1lKQoreworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBM
TElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCkKK3sKKyAgICBKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElO
VF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QKDMpLmpzVmFs
dWUoKTsKKyAgICAKKyAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgeworICAg
ICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pT
QXJyYXkoYmFzZVZhbHVlKSkgeworICAgICAgICAgICAgSlNBcnJheSoganNBcnJheSA9IGFzQXJy
YXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkK
KyAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRleChnbG9iYWxEYXRhLCBpLCB2YWx1ZSk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgSlNBcnJheTo6cHV0QnlJbmRleChq
c0FycmF5LCBleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAg
ICAgfQorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpCisgICAgICAgICAgICAm
JiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICAg
ICAgSlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKKyAg
ICAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVB
cnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICBMTElO
VF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigp
KSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzTnVt
YmVyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaSwgdmFsdWUpOworICAgICAgICBM
TElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBz
dWJzY3JpcHQudG9TdHJpbmcoZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUo
KSk7CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCkK
K3sKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBK
U09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICAKKyAg
ICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBi
b29sIGNvdWxkRGVsZXRlOworICAgIAorICAgIHVpbnQzMl90IGk7CisgICAgaWYgKHN1YnNjcmlw
dC5nZXRVSW50MzIoaSkpCisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9k
VGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KGJhc2VPYmplY3QsIGV4ZWMsIGkpOworICAg
IGVsc2UgeworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgSWRlbnRp
ZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYykpOworICAgICAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBwcm9wZXJ0
eSk7CisgICAgfQorICAgIAorICAgIGlmICghY291bGREZWxldGUgJiYgZXhlYy0+Y29kZUJsb2Nr
KCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3Io
ZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgIAorICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3B1dF9ieV9pbmRleCkKK3sKKyAgICBMTElOVF9PUCgxKS5qc1ZhbHVlKCkucHV0KGV4ZWMs
IHBjWzJdLnUub3BlcmFuZCwgTExJTlRfT1AoMykuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIpCit7CisgICAgQVNT
RVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFz
ZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRlbnRpZmllciYg
aWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOwor
ICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgYmFzZU9i
ai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lR2V0dGVyKGJhc2VPYmosIGV4ZWMsIGlkZW50LCBhc09i
amVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpCit7CisgICAgQVNTRVJUKExMSU5U
X09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFz
T2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBl
eGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEFTU0VS
VChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgYmFzZU9iai0+bWV0aG9k
VGFibGUoKS0+ZGVmaW5lU2V0dGVyKGJhc2VPYmosIGV4ZWMsIGlkZW50LCBhc09iamVjdChMTElO
VF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2p0cnVlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qdHJ1ZSwgTExJ
TlRfT1AoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9qZmFsc2UpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pmYWxzZSwgIUxMSU5U
X09QKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfamxlc3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzLCBqc0xlc3M8dHJ1
ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpCit7CisgICAgTExJTlRf
QlJBTkNIKG9wX2pubGVzcywgIWpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFs
dWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2pncmVhdGVyKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlciwganNMZXNz
PGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcikKK3sKKyAg
ICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyLCAhanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9P
UF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNz
ZXEsIGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNz
ZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhl
YywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JS
QU5DSChvcF9qZ3JlYXRlcmVxLCBqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygxKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVy
ZXEsICFqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0
Y2hfaW1tKQoreworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1AoMykuanNWYWx1ZSgp
OworICAgIEFTU0VSVChzY3J1dGluZWUuaXNEb3VibGUoKSk7CisgICAgZG91YmxlIHZhbHVlID0g
c2NydXRpbmVlLmFzRG91YmxlKCk7CisgICAgaW50MzJfdCBpbnRWYWx1ZSA9IHN0YXRpY19jYXN0
PGludDMyX3Q+KHZhbHVlKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFu
ZDsKKyAgICBpZiAodmFsdWUgPT0gaW50VmFsdWUpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5pbW1l
ZGlhdGVTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShpbnRW
YWx1ZSwgZGVmYXVsdE9mZnNldCk7CisgICAgfSBlbHNlCisgICAgICAgIHBjICs9IGRlZmF1bHRP
ZmZzZXQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9z
d2l0Y2hfc3RyaW5nKQoreworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1AoMykuanNW
YWx1ZSgpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlm
ICghc2NydXRpbmVlLmlzU3RyaW5nKCkpCisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7Cisg
ICAgZWxzZSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2Nr
KCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKHBjWzFd
LnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoYXNTdHJpbmcoc2NydXRpbmVlKS0+dmFsdWUoZXhl
YykuaW1wbCgpLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYykKK3sKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVU
eXBlKCkgIT0gRnVuY3Rpb25Db2RlCisgICAgICAgICAgIHx8ICFjb2RlQmxvY2stPm5lZWRzRnVs
bFNjb3BlQ2hhaW4oKQorICAgICAgICAgICB8fCBleGVjLT51bmNoZWNrZWRSKGNvZGVCbG9jay0+
YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfUkVUVVJOKGNvZGVC
bG9jay0+ZnVuY3Rpb25EZWNsKHBjWzJdLnUub3BlcmFuZCktPm1ha2UoZXhlYywgZXhlYy0+c2Nv
cGVDaGFpbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHAp
Cit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNb
Ml0udS5vcGVyYW5kKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVuY3Rpb24tPm1ha2UoZXhl
YywgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICAKKyAgICBpZiAoIWZ1bmN0aW9uLT5uYW1lKCku
aXNOdWxsKCkpIHsKKyAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25TY29wZU9i
amVjdCA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBmdW5jdGlvbi0+bmFtZSgp
LCBmdW5jLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBmdW5jLT5zZXRTY29wZShl
eGVjLT5nbG9iYWxEYXRhKCksIGZ1bmMtPnNjb3BlKCktPnB1c2goZnVuY3Rpb25TY29wZU9iamVj
dCkpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZnVuYyk7Cit9CisKK3N0YXRpYyBI
ZWxwZXJSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5z
dHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7Cisg
ICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKworICAg
IGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVj
Q2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CisKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkg
eworICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBnZXRDYWxsRGF0YShjYWxsZWUsIGNhbGxEYXRhKTsKKyAgICAKKyAgICAgICAgQVNTRVJUKGNh
bGxUeXBlICE9IENhbGxUeXBlSlMpOworICAgIAorICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGVIb3N0KSB7CisgICAgICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVl
ID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUs
IHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7Cisg
ICAgICAgIH0KKyAgICAKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSk7
CisgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFGdW5jdGlvbkVy
cm9yKGV4ZWMsIGNhbGxlZSkpOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JD
b25zdHJ1Y3QpOworICAgIAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBD
b25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29u
c3RydWN0RGF0YSk7CisgICAgCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0
VHlwZUpTKTsKKyAgICAKKyAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlSG9z
dCkgeworICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAg
ICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKGNv
bnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZU5vbmUpOworICAgIExMSU5UX0NBTExfVEhST1co
ZXhlYywgcGMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworfQor
CitpbmxpbmUgSGVscGVyUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVl
LCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSlNWYWx1ZSBj
YWxsZWVBc1ZhbHVlLCBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4qIGV4cGVjdGVkRnVuY3Rpb24g
PSAwLCB2b2lkKiogbWFjaGluZUNvZGUgPSAwKQoreworICAgIEFTU0VSVCghZXhwZWN0ZWRGdW5j
dGlvbiA9PSAhbWFjaGluZUNvZGUpOworICAgIAorICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlv
bkNlbGwgPSBnZXRKU0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOworICAgIGlmICghY2FsbGVlQXNG
dW5jdGlvbkNlbGwpCisgICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBw
YywgY2FsbGVlQXNWYWx1ZSwga2luZCk7CisgICAgCisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0g
YXNGdW5jdGlvbihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgZXhlY0NhbGxlZS0+c2V0U2Nv
cGVDaGFpbihjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiBl
eGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyIGNvZGVQdHI7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOworICAgIGlm
IChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICBjb2RlUHRyID0gZXhlY3V0
YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIGVs
c2UgeworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0
YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOworICAgICAgICBKU09i
amVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwg
Y2FsbGVlLT5zY29wZSgpLCBraW5kKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAg
TExJTlRfQ0FMTF9USFJPVyhleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOwor
ICAgICAgICBjb2RlQmxvY2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29k
ZUZvcihraW5kKTsKKyAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bV9udW1QYXJhbWV0ZXJz
KSkKKyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJ
VENvZGVXaXRoQXJpdHlDaGVja0ZvcihraW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Y29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5h
ZGRyZXNzRm9yQ2FsbCgpOworICAgIH0KKyAgICAKKyAgICBpZiAoZXhwZWN0ZWRGdW5jdGlvbikg
eworICAgICAgICBleHBlY3RlZEZ1bmN0aW9uLT5zZXQoZXhlY0NhbGxlZS0+Z2xvYmFsRGF0YSgp
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7Cisg
ICAgICAgICptYWNoaW5lQ29kZSA9IGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9
CisgICAgCisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIGNvZGVQdHIuZXhl
Y3V0YWJsZUFkZHJlc3MoKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIGdlbmVyaWND
YWxsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNh
bGwgZnJhbWUuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGlsZSBp
dCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBJZiBwb3NzaWJsZSwgbGluayB0aGUgY2FsbCdzIGlu
bGluZSBjYWNoZS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRy
ZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNh
bGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRl
KiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjQ2Fs
bGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAg
IGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNW
YWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICAKKyAgICBy
ZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCAmcGNb
NF0udS5qc0NlbGwsICZwY1s1XS51LnBvaW50ZXIpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY2FsbCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JD
YWxsKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCkKK3sKKyAgICBy
ZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKQoreworICAgIC8vIFRoaXMgbmVlZHMg
dG86CisgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZh
cmlhYmxlIGFyZ3VtZW50cy4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBj
b21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hp
bmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAg
ICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisg
ICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gbG9hZFZhcmFyZ3MoCisgICAgICAgIGV4ZWMsICZl
eGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLAorICAgICAgICBM
TElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5vcGVy
YW5kKTsKKyAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYyk7CisgICAgCisg
ICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVB
c1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIAorICAg
IHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1Zh
bHVlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCkKK3sKKyAgICBK
U1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAg
RXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICBKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgZXhl
Y0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsK
KyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjQ2FsbGVlLT51
bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhl
Y0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxs
ZWUtPnNldFJldHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KCZsbGludF9nZW5lcmlj
X3JldHVybl9wb2ludCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKyAgICAK
KyAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFsKSkK
KyAgICAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNh
bGxlZUFzVmFsdWUpOworICAgIAorICAgIGdsb2JhbERhdGEuaG9zdENhbGxSZXR1cm5WYWx1ZSA9
IGV2YWwoZXhlY0NhbGxlZSk7CisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMs
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCit7CisgICAgQVNT
RVJUKGV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIEpTVmFs
dWUgYWN0aXZhdGlvblZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIGlmICghYWN0
aXZhdGlvblZhbHVlKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT5yZWdpc3RlcnMo
KVt1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKV0uanNWYWx1ZSgp
KSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkK
KyAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAg
fQorICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0
aW9uID0gYXNBY3RpdmF0aW9uKGFjdGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVh
ck9mZihleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT5yZWdp
c3RlcnMoKVt1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKV0uanNW
YWx1ZSgpKQorICAgICAgICBhc0FyZ3VtZW50cyh2KS0+ZGlkVGVhck9mZkFjdGl2YXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBhY3RpdmF0aW9uKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cykKK3sKKyAgICBBU1NFUlQo
ZXhlYy0+Y29kZUJsb2NrKCktPnVzZXNBcmd1bWVudHMoKSAmJiAhZXhlYy0+Y29kZUJsb2NrKCkt
Pm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgYXNBcmd1bWVudHMoZXhlYy0+cmVnaXN0ZXJz
KClbdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCldLmpzVmFsdWUo
KSktPnRlYXJPZmYoZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9zdHJjYXQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsICZM
TElOVF9PUCgyKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90b19wcmltaXRpdmUpCit7CisgICAgTExJTlRfUkVUVVJOKExMSU5UX09QKDIpLmpzVmFs
dWUoKS50b1ByaW1pdGl2ZShleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9n
ZXRfcG5hbWVzKQoreworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAg
ICBpZiAodi5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBjICs9IHBjWzVdLnUub3Bl
cmFuZDsKKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBv
ID0gdi50b09iamVjdChleGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVj
dHVyZSgpOworICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0
b3IgPSBzdHJ1Y3R1cmUtPmVudW1lcmF0aW9uQ2FjaGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlO
YW1lSXRlcmF0b3IgfHwganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hh
aW4oKSAhPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpKQorICAgICAgICBqc1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8p
OworICAgIAorICAgIExMSU5UX09QKDEpID0gSlNWYWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9y
KTsKKyAgICBMTElOVF9PUCgyKSA9IEpTVmFsdWUobyk7CisgICAgTExJTlRfT1AoMykgPSBSZWdp
c3Rlcjo6d2l0aEludCgwKTsKKyAgICBMTElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpz
UHJvcGVydHlOYW1lSXRlcmF0b3ItPnNpemUoKSk7CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xF
TkdUSChvcF9nZXRfcG5hbWVzKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25leHRfcG5hbWUpCit7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVj
dChMTElOVF9PUCgyKS5qc1ZhbHVlKCkpOworICAgIEpTU3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3Ry
aW5nKExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgaWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4
ZWMsIElkZW50aWZpZXIoZXhlYywgcHJvcGVydHktPnZhbHVlKGV4ZWMpKSkpIHsKKyAgICAgICAg
Ly8gR28gdG8gdGFyZ2V0LgorICAgICAgICBwYyArPSBwY1s2XS51Lm9wZXJhbmQ7CisgICAgfSAv
LyBFbHNlLCBkb24ndCBjaGFuZ2UgdGhlIFBDLCBzbyB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxv
b3AuCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNo
X3Njb3BlKQoreworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBK
U09iamVjdCogbyA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4o
ZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSkKK3sKKyAgICBleGVjLT5zZXRT
Y29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cG9wKCkpOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpCit7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogc2Nv
cGUgPSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgY29kZUJsb2NrLT5pZGVudGlm
aWVyKHBjWzJdLnUub3BlcmFuZCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgRG9udERlbGV0ZSk7
CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goc2NvcGUp
KTsKKyAgICBMTElOVF9SRVRVUk4oc2NvcGUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfdGhyb3cpCit7CisgICAgTExJTlRfVEhST1coTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKK3sKKyAg
ICBMTElOVF9USFJPVyhjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBMTElOVF9PUF9DKDEpLmpz
VmFsdWUoKS50b1N0cmluZyhleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
ZGVidWcpCit7CisgICAgaW50IGRlYnVnSG9va0lEID0gcGNbMV0udS5vcGVyYW5kOworICAgIGlu
dCBmaXJzdExpbmUgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaW50IGxhc3RMaW5lID0gcGNbM10u
dS5vcGVyYW5kOworICAgIAorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+ZGVi
dWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5l
LCBsYXN0TGluZSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVk
UHJvZmlsZXJSZWZlcmVuY2UoKSktPndpbGxFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFs
dWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
cm9maWxlX2RpZF9jYWxsKQoreworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVy
ZW5jZSgpKS0+ZGlkRXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExM
SU5UX0VORCgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBMTEludEhlbHBlcnNfaAorI2RlZmluZSBMTEludEhlbHBlcnNfaAor
CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgewor
Cit0eXBlZGVmIGludDY0X3QgSGVscGVyUmV0dXJuVHlwZTsKKworI2RlZmluZSBMTElOVF9IRUxQ
RVJfREVDTChuYW1lKSBcCisgICAgZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50XyMj
bmFtZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKKworTExJTlRfSEVMUEVSX0RF
Q0woZW50cnlfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3NyKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKHJlcGxhY2UpOworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjayk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0
ZV9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25ld19vYmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZlcik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfc3RyaWN0bmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNz
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2dyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHJlX2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9pbmMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90
b19qc251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9hZGQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9k
aXYpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbHNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Jp
dGFuZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3IpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2JpdHhvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2luc3RhbmNlb2YpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVv
Zik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9pc19ib29sZWFuKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19u
dW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19m
dW5jdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4pOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Jlc29sdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tp
cCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
ZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2
ZV93aXRoX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlz
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3B1dF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X2lk
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9nZXRfYnlfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3B1dF9ieV9pbmRleCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2dldHRl
cik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X3NldHRlcik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfanRydWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pmYWxzZSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2pubGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXIpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxl
c3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2pncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3Jl
YXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfY2hhcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
c3dpdGNoX3N0cmluZyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmMpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jX2V4cCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0KTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NhbGxfZXZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZh
dGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3RvX3ByaW1pdGl2ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X3BuYW1lcyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcHVzaF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9wX3Njb3BlKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfdGhyb3cpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93X3JlZmVy
ZW5jZV9lcnJvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVidWcpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wcm9maWxlX2RpZF9jYWxsKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisK
KyNlbmRpZiAvLyBMTEludEhlbHBlcnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKKyNkZWZpbmUg
TExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKKworI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lm
IENQVShYODYpCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAxCisjZWxzZQorI2RlZmluZSBPRkZM
SU5FX0FTTV9YODYgMAorI2VuZGlmCisKKyNpZiBDUFUoQVJNdjcpCisjZGVmaW5lIE9GRkxJTkVf
QVNNX0FSTXY3IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDAKKyNlbmRpZgor
CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxF
RCAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAwCisjZW5kaWYK
KworI2lmIENQVShCSUdfRU5ESUFOKQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDEK
KyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMAorI2VuZGlmCisKKyNpZiBF
TkFCTEUoTExJTlRfT1NSX1RPX0pJVCkKKyNkZWZpbmUgT0ZGTElORV9BU01fSklUX0VOQUJMRUQg
MQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fSklUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNp
ZiBMTElOVF9FWEVDVVRJT05fVFJBQ0lORworI2RlZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05f
VFJBQ0lORyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAw
CisjZW5kaWYKKworI2VuZGlmIC8vIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKworI2luY2x1ZGUgIkFsbG9jYXRpb25TcGFjZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAi
SW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTQXJyYXku
aCIKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVk
ZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRl
ICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNs
dWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTdHlwZUluZm8uaCIKKyNpbmNsdWRlICJKU1Zh
cmlhYmxlT2JqZWN0LmgiCisjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRP
ZmZsaW5lQXNtQ29uZmlnLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKKyNpbmNsdWRlICJS
ZWdpc3RlckZpbGUuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisjaW5jbHVkZSAiU3RydWN0
dXJlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJWYWx1ZVByb2Zp
bGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CisKK25hbWVzcGFjZSBKU0Mg
eworCisjZGVmaW5lIE9GRkxJTkVfQVNNX09GRlNFVE9GKGNsYXp6LCBmaWVsZCkgT0JKRUNUX09G
RlNFVE9GKGNsYXp6LCBmaWVsZCkKKworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQqIGR1bW15KCk7Cit9OworCitjb25zdCB1
bnNpZ25lZCogTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpCit7CisjaW5jbHVkZSAiTExJ
bnREZXNpcmVkT2Zmc2V0cy5oIgorICAgIHJldHVybiBleHRyYWN0b3JUYWJsZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKK2ludCBtYWluKGludCwgY2hhcioqKQoreworICAgIC8vIE91dCBv
ZiBhbiBhYnVuZGFuY2Ugb2YgY2F1dGlvbiwgbWFrZSBzdXJlIHRoYXQgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOjpkdW1teSgpIGlzIGxpdmUsCisgICAgLy8gYW5kIHRoZSBleHRyYWN0b3JUYWJsZSBp
cyBsaXZlLCB0b28uCisgICAgcHJpbnRmKCIlcFxuIiwgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0
b3I6OmR1bW15KCkpOworICAgIHJldHVybiAwOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMTU5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSwgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisKKyMgQ3Jhc2ggY291cnNlIG9uIHRoZSBsYW5ndWFnZSB0aGF0
IHRoaXMgaXMgd3JpdHRlbiBpbiAod2hpY2ggSSBqdXN0IGNhbGwKKyMgImFzc2VtYmx5IiBldmVu
IHRob3VnaCBpdCdzIG1vcmUgdGhhbiB0aGF0KToKKyMKKyMgLSBNb3N0bHkgZ2FzLXN0eWxlIG9w
ZXJhbmQgb3JkZXJpbmcuIFRoZSBsYXN0IG9wZXJhbmQgdGVuZHMgdG8gYmUgdGhlCisjICAgZGVz
dGluYXRpb24uIFNvICJhIDo9IGIiIGlzIHdyaXR0ZW4gYXMgIm1vdiBiLCBhIi4gQnV0IHVubGlr
ZSBnYXMsCisjICAgY29tcGFyaXNvbnMgYXJlIGluLW9yZGVyLCBzbyAiaWYgKGEgPCBiKSIgaXMg
d3JpdHRlbiBhcworIyAgICJiaWx0IGEsIGIsIC4uLiIuCisjCisjIC0gImIiID0gYnl0ZSwgImgi
ID0gMTYtYml0IHdvcmQsICJpIiA9IDMyLWJpdCB3b3JkLCAicCIgPSBwb2ludGVyLgorIyAgIEN1
cnJlbnRseSB0aGlzIGlzIGp1c3QgMzItYml0IHNvICJpIiBhbmQgInAiIGFyZSBpbnRlcmNoYW5n
ZWFibGUKKyMgICBleGNlcHQgd2hlbiBhbiBvcCBzdXBwb3J0cyBvbmUgYnV0IG5vdCB0aGUgb3Ro
ZXIuCisjCisjIC0gSW4gZ2VuZXJhbCwgdmFsaWQgb3BlcmFuZHMgZm9yIG1hY3JvIGludm9jYXRp
b25zIGFuZCBpbnN0cnVjdGlvbnMgYXJlCisjICAgcmVnaXN0ZXJzIChlZyAidDAiKSwgYWRkcmVz
c2VzIChlZyAiNFt0MF0iKSwgYmFzZS1pbmRleCBhZGRyZXNzZXMKKyMgICAoZWcgIjdbdDAsIHQx
LCAyXSIpLCBhYnNvbHV0ZSBhZGRyZXNzZXMgKGVnICIweGEwMDAwMDAwW10iKSwgb3IgbGFiZWxz
CisjICAgKGVnICJfZm9vIiBvciAiLmZvbyIpLiBNYWNybyBpbnZvY2F0aW9ucyBjYW4gYWxzbyB0
YWtlIGFub255bW91cworIyAgIG1hY3JvcyBhcyBvcGVyYW5kcy4gSW5zdHJ1Y3Rpb25zIGNhbm5v
dCB0YWtlIGFub255bW91cyBtYWNyb3MuCisjCisjIC0gTGFiZWxzIG11c3QgaGF2ZSBuYW1lcyB0
aGF0IGJlZ2luIHdpdGggZWl0aGVyICJfIiBvciAiLiIuICBBICIuIiBsYWJlbAorIyAgIGlzIGxv
Y2FsIGFuZCBnZXRzIHJlbmFtZWQgYmVmb3JlIGNvZGUgZ2VuIHRvIG1pbmltaXplIG5hbWVzcGFj
ZQorIyAgIHBvbGx1dGlvbi4gQSAiXyIgbGFiZWwgaXMgYW4gZXh0ZXJuIHN5bWJvbCAoaS5lLiAi
Lmdsb2JsIikuIFRoZSAiXyIKKyMgICBtYXkgb3IgbWF5IG5vdCBiZSByZW1vdmVkIGR1cmluZyBj
b2RlIGdlbiBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgYXNtCisjICAgY29udmVudGlvbnMgZm9y
IEMgbmFtZSBtYW5nbGluZyBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtIG1hbmRhdGUgYSAiXyIKKyMg
ICBwcmVmaXguCisjCisjIC0gQSAibWFjcm8iIGlzIGEgbGFtYmRhIGV4cHJlc3Npb24sIHdoaWNo
IG1heSBiZSBlaXRoZXIgYW5vbnltb3VzIG9yCisjICAgbmFtZWQuIEJ1dCB0aGlzIGhhcyBjYXZl
YXRzLiAibWFjcm8iIGNhbiB0YWtlIHplcm8gb3IgbW9yZSBhcmd1bWVudHMsCisjICAgd2hpY2gg
bWF5IGJlIG1hY3JvcyBvciBhbnkgdmFsaWQgb3BlcmFuZHMsIGJ1dCBpdCBjYW4gb25seSByZXR1
cm4KKyMgICBjb2RlLiBCdXQgeW91IGNhbiBkbyBUdXJpbmctY29tcGxldGUgdGhpbmdzIHZpYSBj
b250aW51YXRpb24gcGFzc2luZworIyAgIHN0eWxlOiAibWFjcm8gZm9vIChhLCBiKSBiKGEpIGVu
ZCBmb28oZm9vLCBmb28pIi4gQWN0dWFsbHksIGRvbid0IGRvCisjICAgdGhhdCwgc2luY2UgeW91
J2xsIGp1c3QgY3Jhc2ggdGhlIGFzc2VtYmxlci4KKyMKKyMgLSBBbiAiaWYiIGlzIGEgY29uZGl0
aW9uYWwgb24gc2V0dGluZ3MuIEFueSBpZGVudGlmaWVyIHN1cHBsaWVkIGluIHRoZQorIyAgIHBy
ZWRpY2F0ZSBvZiBhbiAiaWYiIGlzIGFzc3VtZWQgdG8gYmUgYSAjZGVmaW5lIHRoYXQgaXMgYXZh
aWxhYmxlCisjICAgZHVyaW5nIGNvZGUgZ2VuLiBTbyB5b3UgY2FuJ3QgdXNlICJpZiIgZm9yIGNv
bXB1dGF0aW9uIGluIGEgbWFjcm8sIGJ1dAorIyAgIHlvdSBjYW4gdXNlIGl0IHRvIHNlbGVjdCBk
aWZmZXJlbnQgcGllY2VzIG9mIGNvZGUgZm9yIGRpZmZlcmVudAorIyAgIHBsYXRmb3Jtcy4KKyMK
KyMgLSBBcmd1bWVudHMgdG8gbWFjcm9zIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgcmF0aGVyIHRo
YW4gZHluYW1pYyBzY29waW5nLgorIyAgIENvbnN0J3MgYWxzbyBmb2xsb3cgbGV4aWNhbCBzY29w
aW5nIGFuZCBtYXkgb3ZlcnJpZGUgKGhpZGUpIGFyZ3VtZW50cworIyAgIG9yIG90aGVyIGNvbnN0
cy4gQWxsIHZhcmlhYmxlcyAoYXJndW1lbnRzIGFuZCBjb25zdGFudHMpIGNhbiBiZSBib3VuZAor
IyAgIHRvIG9wZXJhbmRzLiBBZGRpdGlvbmFsbHksIGFyZ3VtZW50cyAoYnV0IG5vdCBjb25zdGFu
dHMpIGNhbiBiZSBib3VuZAorIyAgIHRvIG1hY3Jvcy4KKworCisjIFRoZXNlIGRlY2xhcmF0aW9u
cyBtdXN0IG1hdGNoIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oLgorY29uc3QgQ2FsbEZyYW1l
SGVhZGVyU2l6ZSA9IDQ4Citjb25zdCBBcmd1bWVudENvdW50ID0gLTQ4Citjb25zdCBDYWxsZXJG
cmFtZSA9IC00MAorY29uc3QgQ2FsbGVlID0gLTMyCitjb25zdCBTY29wZUNoYWluID0gLTI0Citj
b25zdCBSZXR1cm5QQyA9IC0xNgorY29uc3QgQ29kZUJsb2NrID0gLTgKKworIyBEZWNsYXJlIHNv
bWUgYWxpYXNlcyBmb3IgdGhlIHJlZ2lzdGVycyB3ZSB3aWxsIHVzZS4KK2NvbnN0IFBDID0gdDQK
KworIyBPZmZzZXRzIG5lZWRlZCBmb3IgcmVhc29uaW5nIGFib3V0IHZhbHVlIHJlcHJlc2VudGF0
aW9uLgoraWYgQklHX0VORElBTgorICAgIGNvbnN0IFRhZ09mZnNldCA9IDAKKyAgICBjb25zdCBQ
YXlsb2FkT2Zmc2V0ID0gNAorZWxzZQorICAgIGNvbnN0IFRhZ09mZnNldCA9IDQKKyAgICBjb25z
dCBQYXlsb2FkT2Zmc2V0ID0gMAorZW5kCisKKyMgVmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3Rh
bnRzLgorY29uc3QgSW50MzJUYWcgPSAtMQorY29uc3QgQm9vbGVhblRhZyA9IC0yCitjb25zdCBO
dWxsVGFnID0gLTMKK2NvbnN0IFVuZGVmaW5lZFRhZyA9IC00Citjb25zdCBDZWxsVGFnID0gLTUK
K2NvbnN0IEVtcHR5VmFsdWVUYWcgPSAtNgorY29uc3QgRGVsZXRlZFZhbHVlVGFnID0gLTcKK2Nv
bnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRhZworCisjIFR5cGUgY29uc3RhbnRzLgorY29u
c3QgU3RyaW5nVHlwZSA9IDUKK2NvbnN0IE9iamVjdFR5cGUgPSAxMAorCisjIFR5cGUgZmxhZ3Mg
Y29uc3RhbnRzLgorY29uc3QgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDEKK2NvbnN0IEltcGxl
bWVudHNIYXNJbnN0YW5jZSA9IDIKK2NvbnN0IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2Ug
PSA4CisKKyMgSGVhcCBhbGxvY2F0aW9uIGNvbnN0YW50cy4KK2NvbnN0IEpTRmluYWxPYmplY3RT
aXplQ2xhc3NJbmRleCA9IDEKKworIyBCeXRlY29kZSBvcGVyYW5kIGNvbnN0YW50cy4KK2NvbnN0
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMAorCisjIENvZGUgdHlwZSBj
b25zdGFudHMuCitjb25zdCBHbG9iYWxDb2RlID0gMAorY29uc3QgRXZhbENvZGUgPSAxCitjb25z
dCBGdW5jdGlvbkNvZGUgPSAyCisKKyMgVGhlIGludGVycHJldGVyIHN0ZWFscyB0aGUgdGFnIHdv
cmQgb2YgdGhlIGFyZ3VtZW50IGNvdW50LgorY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50
Q291bnQgKyBUYWdPZmZzZXQKKworIyBUaGlzIG11c3QgbWF0Y2ggd3RmL1ZlY3Rvci5oLgorY29u
c3QgVmVjdG9yU2l6ZU9mZnNldCA9IDAKK2NvbnN0IFZlY3RvckJ1ZmZlck9mZnNldCA9IDQKKwor
IyBTdHJpbmcgZmxhZ3MuCitjb25zdCBIYXNoRmxhZ3M4Qml0QnVmZmVyID0gNjQKKworIyBVdGls
aXRpZXMKK21hY3JvIGNyYXNoKCkKKyAgICBzdG9yZWkgMCwgMHhiYmFkYmVlZltdCisgICAgbW92
ZSAwLCB0MAorICAgIGNhbGwgdDAKK2VuZAorCittYWNybyBhc3NlcnQoYXNzZXJ0aW9uKQorICAg
IGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGFzc2VydGlvbigub2spCisgICAgICAgIGNyYXNo
KCkKKyAgICAub2s6CisgICAgZW5kCitlbmQKKworbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNz
QWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92
ZSBsciwgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2lmIFg4NgorICAgICAgICBwb3AgZGVz
dGluYXRpb25SZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAor
CittYWNybyByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihzb3VyY2VSZWdpc3RlcikK
KyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgorICAgIGVsc2lm
IFg4NgorICAgICAgICBwdXNoIHNvdXJjZVJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJv
cgorICAgIGVuZAorZW5kCisKK21hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCisgICAgYWRkcCBhZHZh
bmNlICogNCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoKHBj
T2Zmc2V0KQorICAgIGxvYWRpIHBjT2Zmc2V0LCB0MAorICAgIGxzaGlmdGkgMiwgdDAKKyAgICBh
ZGRwIHQwLCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwo
KQorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBqbXAg
W1BDXQorZW5kCisKK21hY3JvIGNDYWxsMihmdW5jdGlvbiwgYXJnMSwgYXJnMikKKyAgICBpZiBB
Uk12NworICAgICAgICBtb3ZlIGFyZzEsIHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICBl
bHNpZiBYODYKKyAgICAgICAgcG9rZSBhcmcyLCAwCisgICAgICAgIHBva2UgYXJnMSwgMQorICAg
IGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKKyAgICBjYWxsIGZ1bmN0aW9uCitlbmQKKwor
bWFjcm8gY2FsbEhlbHBlcihoZWxwZXIpCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAg
ICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKK21hY3JvIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKF9sbGlu
dF90cmFjZSkKKyAgICBlbmQKK2VuZAorCisjIENhbGwgYSBoZWxwZXIgZm9yIGNhbGwgb3Bjb2Rl
cy4KK21hY3JvIGNhbGxDYWxsSGVscGVyKGFkdmFuY2UsIGhlbHBlciwgYWN0aW9uKQorICAgIGFk
ZHAgYWR2YW5jZSAqIDQsIFBDLCB0MAorICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRh
Z09mZnNldFtjZnJdCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQxLCBj
ZnIKKyAgICBhY3Rpb24odDApCitlbmQKKworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2Us
IGhlbHBlcikKKyAgICBjYWxsQ2FsbEhlbHBlcigKKyAgICAgICAgYWR2YW5jZSwKKyAgICAgICAg
aGVscGVyLAorICAgICAgICBtYWNybyAoY2FsbGVlKQorICAgICAgICAgICAgY2FsbCBjYWxsZWUK
KyAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAgICAgZW5kKQorZW5kCisKK21h
Y3JvIGNoZWNrU3dpdGNoVG9KSVQoaW5jcmVtZW50LCBhY3Rpb24pCisgICAgaWYgSklUX0VOQUJM
RUQKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgICAgIGJhZGRpcyBpbmNy
ZW1lbnQsIENvZGVCbG9jazo6bV9leGVjdXRlQ291bnRlclt0MF0sIC5kb25lCisgICAgICAgIGFj
dGlvbigpCisgICAgLmRvbmU6CisgICAgZW5kCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJ
VEZvclByb2xvZ3VlKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICA1LAorICAgICAg
ICBtYWNybyAoKQorICAgICAgICAgICAgY0NhbGwyKF9sbGludF9lbnRyeV9vc3IsIGNmciwgUEMp
CisgICAgICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgICAgIGptcCB0MAorICAgICAgICBl
bmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGNoZWNrU3dp
dGNoVG9KSVQoCisgICAgICAgIDEsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBjQ2Fs
bDIoX2xsaW50X2xvb3Bfb3NyLCBjZnIsIFBDKQorICAgICAgICAgICAgbW92ZSB0MSwgY2ZyCisg
ICAgICAgICAgICBqbXAgdDAKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNo
VG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMTAsCisg
ICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBjYWxsSGVscGVyKF9sbGludF9yZXBsYWNlKQor
ICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoaW5kZXgpCisgICAg
YXNzZXJ0KG1hY3JvIChvaykgYmliIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwg
b2sgZW5kKQorZW5kCisKKyMgSW5kZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJl
bnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QKKyMgY2hhbmdlZC4KK21hY3JvIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWFlcSBpbmRleCwgRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwg
cGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsg
VmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJp
dCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwg
dG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9hZHAg
VGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNl
dFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5k
IHBheWxvYWQgbWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLgorbWFjcm8gbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWFlcSBpbmRleCwgRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwg
cGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0YWcKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0
b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHRhZworICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZp
bCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1
ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxzaGlmdGkgMywgaW5k
ZXgKKyAgICBhZGRwIGluZGV4LCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBh
eWxvYWQKKyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnCisuZG9uZToKK2VuZAorCittYWNy
byBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxv
YWQsIHNsb3cpCisgICAgYmlhZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAu
Y29uc3RhbnQKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIGV4cGVjdGVkVGFn
LCBzbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAor
ICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXls
b2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVm
ZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmls
IGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVl
IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgYmluZXEgVGFnT2Zmc2V0
W3BheWxvYWQsIGluZGV4LCA4XSwgZXhwZWN0ZWRUYWcsIHNsb3cKKyAgICBsb2FkcCBQYXlsb2Fk
T2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworbWFjcm8g
d3JpdGVCYXJyaWVyKHRhZywgcGF5bG9hZCkKKyAgICAjIE5vdGhpbmcgdG8gZG8gc2luY2Ugd2Ug
ZG9uJ3QgaGF2ZSBhIGdlbmVyYXRpb25hbCBvciBpbmNyZW1lbnRhbCBjb2xsZWN0b3IuCitlbmQK
KworIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlcgorCisjIERvIHRoZSBiYXJlIG1p
bmltdW0gcmVxdWlyZWQgdG8gZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhl
IENvZGVCbG9jayoKKyMgaW4gdDEKK21hY3JvIHByb2xvZ3VlKG9mZnNldE9mQ29kZUJsb2NrKQor
ICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1
cCB0aGUgY2FsbCBmcmFtZS4KKyAgICBzdG9yZXAgdDIsIFJldHVyblBDW2Nmcl0KKyAgICBsb2Fk
cCBDYWxsZWVbY2ZyXSwgdDEKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFd
LCB0MQorICAgIGxvYWRwIG9mZnNldE9mQ29kZUJsb2NrW3QxXSwgdDEKKyAgICBzdG9yZXAgdDEs
IENvZGVCbG9ja1tjZnJdCisgICAgCisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIFZlY3RvckJ1ZmZlck9m
ZnNldFt0MF0sIFBDCitlbmQKKworbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbigpCisgICAg
IyBQcm9maWxlIHRoZSBhcmd1bWVudHMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hvaWNl
IGJ1dCB0byBkbyB0aGlzLgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3Qx
XSwgdDAKKyAgICBidGl6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9uZQorICAgIGxzaGlmdGkgMywg
dDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9y
QnVmZmVyT2Zmc2V0W3QxXSwgdDMKKy5hcmd1bWVudFByb2ZpbGVMb29wOgorICAgIGxvYWRpIFRh
Z09mZnNldFtjZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIsIFZhbHVlUHJvZmlsZTo6bV9idWNr
ZXRzICsgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MF0sIHQy
CisgICAgc3RvcmVpIHQyLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRb
dDNdCisgICAgYWRkcCBzaXplb2YgVmFsdWVQcm9maWxlLCB0MworICAgIGJzdWJpbnogOCwgdDAs
IC5hcmd1bWVudFByb2ZpbGVMb29wCisuYXJndW1lbnRQcm9maWxlRG9uZToKKyAgICAKKyAgICAj
IENoZWNrIHN0YWNrIGhlaWdodC4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVn
aXN0ZXJzW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQy
CisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjppbnRlcnByZXRlclt0Ml0sIHQyCisgICAgbHNoaWZ0
aSAzLCB0MAorICAgIGFkZHAgdDAsIGNmciwgdDAKKyAgICBicGFlcSBJbnRlcnByZXRlcjo6bV9y
ZWdpc3RlckZpbGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hlaWdodE9L
CisKKyAgICAjIFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBoZWxw
ZXIuCisgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVjaykKKy5zdGFja0hl
aWdodE9LOgorZW5kCisKK21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIGhlbHBl
cikKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAg
IGJpZXEgdDAsIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCisgICAg
Y2FsbEhlbHBlcihoZWxwZXIpCisgICAgam1wIGRvbmVMYWJlbAorZW5kCisKK19sbGludF9wcm9n
cmFtX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKFByb2dyYW1FeGVjdXRhYmxlOjptX3Byb2dyYW1D
b2RlQmxvY2spCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xvZ3VlKCkKKyAgICBkaXNwYXRj
aCgwKQorCisKK19sbGludF9ldmFsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKEV2YWxFeGVjdXRh
YmxlOjptX2V2YWxDb2RlQmxvY2spCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xvZ3VlKCkK
KyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZToK
KyAgICBwcm9sb2d1ZShGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbCkKKy5m
dW5jdGlvbkZvckNhbGxCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKCkKKyAgICBj
aGVja1N3aXRjaFRvSklURm9yUHJvbG9ndWUoKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19s
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKEZ1bmN0
aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpCisuZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKCkKKyAgICBjaGVja1N3aXRj
aFRvSklURm9yUHJvbG9ndWUoKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShGdW5jdGlvbkV4ZWN1dGFi
bGU6Om1fY29kZUJsb2NrRm9yQ2FsbCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9u
Rm9yQ2FsbEJlZ2luLCBfbGxpbnRfaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKKworCitfbGxpbnRf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShGdW5jdGlv
bkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2so
LmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9sbGludF9oZWxwZXJfY29uc3RydWN0X2FyaXR5
Q2hlY2spCisKKyMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25zCisKK19sbGludF9vcF9lbnRl
cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisg
ICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVZhcnMsIHQyCisgICAgYnRpeiB0MiwgLm9wRW50ZXJE
b25lCisgICAgbW92ZSBVbmRlZmluZWRUYWcsIHQwCisgICAgbW92ZSAwLCB0MQorLm9wRW50ZXJM
b29wOgorICAgIHN1YmkgMSwgdDIKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQyLCA4
XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGJ0aW56IHQy
LCAub3BFbnRlckxvb3AKKy5vcEVudGVyRG9uZToKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGlu
dF9vcF9jcmVhdGVfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFn
LCAub3BDcmVhdGVBY3RpdmF0aW9uRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9j
cmVhdGVfYWN0aXZhdGlvbikKKy5vcENyZWF0ZUFjdGl2YXRpb25Eb25lOgorICAgIGRpc3BhdGNo
KDIpCisKKworX2xsaW50X29wX2luaXRfbGF6eV9yZWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAg
IGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NyZWF0ZV9hcmd1bWVudHM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQXJndW1lbnRzRG9uZQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQorLm9wQ3JlYXRlQXJndW1lbnRz
RG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChz
aXplQ2xhc3NJbmRleCwgY2xhc3NJbmZvT2Zmc2V0LCBvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSwg
c3RydWN0dXJlLCByZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2xvd0Nhc2UpCisgICAgY29u
c3Qgb2Zmc2V0T2ZNeVNpemVDbGFzcyA9IEpTR2xvYmFsRGF0YTo6aGVhcCArIEhlYXA6Om1fb2Jq
ZWN0U3BhY2UgKyBBbGxvY2F0aW9uU3BhY2U6Om1fbWFya2VkU3BhY2UgKyBNYXJrZWRTcGFjZTo6
bV9wcmVjaXNlU2l6ZUNsYXNzZXMgKyBzaXplQ2xhc3NJbmRleCAqIHNpemVvZiBNYXJrZWRTcGFj
ZTo6U2l6ZUNsYXNzCisgICAgCisgICAgIyBGSVhNRTogd2UgY2FuIGdldCB0aGUgZ2xvYmFsIGRh
dGEgaW4gb25lIGxvYWQgZnJvbSB0aGUgc3RhY2suCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHNjcmF0Y2gxCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbc2NyYXRjaDFdLCBz
Y3JhdGNoMQorICAgIAorICAgICMgR2V0IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LiAg
ICAKKyAgICBsb2FkcCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6OlNpemVDbGFz
czo6Zmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0sIHJlc3VsdAorICAgIGJ0cHogcmVzdWx0LCBzbG93
Q2FzZQorICAgIAorICAgICMgUmVtb3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0Lgor
ICAgIGxvYWRwIFtyZXN1bHRdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNoMSwgb2Zmc2V0
T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2Ny
YXRjaDFdCisKKyAgICAjIEluaXRpYWxpemUgdGhlIG9iamVjdC4KKyAgICBsb2FkcCBjbGFzc0lu
Zm9PZmZzZXRbc2NyYXRjaDFdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3Vs
dF0KKyAgICBzdG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0KKyAg
ICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0XQorICAgIGFkZHAgc2l6
ZW9mIEpTT2JqZWN0LCByZXN1bHQsIHNjcmF0Y2gxCisgICAgc3RvcmVwIHNjcmF0Y2gxLCBvZmZz
ZXRPZlByb3BlcnR5U3RvcmFnZVtyZXN1bHRdCitlbmQKKworX2xsaW50X29wX2NyZWF0ZV90aGlz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBhc3NlcnRO
b3RDb25zdGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcs
IC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYmIgU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5vcENy
ZWF0ZVRoaXNTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbdDBdLCB0Mgor
ICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0
KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0
Q2xhc3NJbmZvLCBKU0ZpbmFsT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZSwgdDIsIHQwLCB0MSwg
dDMsIC5vcENyZWF0ZVRoaXNTbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBD
ZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BDcmVhdGVUaGlzU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX3RoaXMpCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfZ2V0X2NhbGxlZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgNFtQQ10sIHQwCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldCArIENhbGxlZVtjZnJdLCB0MQor
ICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDEs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9v
cF9jb252ZXJ0X3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ29udmVydFRo
aXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIE9iamVjdFR5cGUsIC5vcENvbnZlcnRUaGlzU2xv
dworICAgIGRpc3BhdGNoKDIpCisKKy5vcENvbnZlcnRUaGlzU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfY29udmVydF90aGlzKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50
X29wX25ld19vYmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAor
ICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0dXJlW3QwXSwgdDEK
KyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBK
U0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIEpTRmluYWxPYmplY3Q6Om1fcHJv
cGVydHlTdG9yYWdlLCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikK
KworLm9wTmV3T2JqZWN0U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X29i
amVjdCkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfYXJyYXk6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXkpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheV9idWZm
ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdleHApCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNw
YXRjaCgzKQorCisKK19sbGludF9vcF9ub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGFzc2VydE5vdENvbnN0YW50
KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MworICAgIGJpbmVxIHQyLCBCb29sZWFuVGFnLCAub3BO
b3RTbG93CisgICAgeG9yaSAxLCB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0
Y2goMykKKworLm9wTm90U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbm90KQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93CisgICAgYmllcSB0
MiwgQ2VsbFRhZywgLm9wRXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdwor
ICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29s
ZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BFcVNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2VxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2Vx
X251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BFcU51bGxJbW1lZGlhdGUKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEK
KyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlCisub3BFcU51bGxJbW1lZGlhdGU6CisgICAg
Y2llcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaWVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAg
b3JpIHQyLCB0MQorLm9wRXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZXE6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgYXNzZXJ0Tm90Q29uc3Rh
bnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93
CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wTmVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFn
LCAub3BOZXFTbG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2luZXEgdDAsIHQxLCB0MAor
ICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkg
dDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BOZXFT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXEpCisgICAgZGlzcGF0Y2goNCkK
KyAgICAKKworX2xsaW50X29wX25lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFu
dCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVx
TnVsbEltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAg
IHRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKKy5v
cE5lcU51bGxJbW1lZGlhdGU6CisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2luZXEg
dDEsIFVuZGVmaW5lZFRhZywgdDEKKyAgICBhbmRpIHQyLCB0MQorLm9wTmVxTnVsbE5vdEltbWVk
aWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKwor
CittYWNybyBzdHJpY3RFcShlcXVhbGl0eU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEy
W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQyLCB0MywgdDEpCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQwCisgICAgYmluZXEgdDIsIHQzLCAub3BTdHJpY3RlcVNsb3cKKyAgICBiaWIgdDIsIExvd2Vz
dFRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmluZworICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDFdLCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjpt
X3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJlcSBTdHJ1Y3R1cmU6Om1f
dHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cKKy5ub3RT
dHJpbmc6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQx
LCB0MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAg
c3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKwor
LnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAorCitf
bGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1h
Y3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBf
bGxpbnRfaGVscGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9zdHJpY3RuZXE6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBj
aW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9zdHJpY3RuZXEpCisK
KworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xlc3Nl
cToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xl
c3NlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcikKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywg
Lm9wUHJlSW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisg
ICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5jU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19s
bGludF9vcF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVEZWNT
bG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBic3ViaW8g
MSwgdDEsIC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Bv
c3RfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFn
LCAub3BQb3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBi
YWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNEb25l
OgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9wb3N0
X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9h
ZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywg
Lm9wUG9zdERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYnN1
YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0RGVjRG9uZToK
KyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdG9fanNu
dW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRpIDRbUENdLCB0MQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MworICAgIGJpZXEgdDIsIEludDMyVGFnLCAub3BUb0pzbnVtYmVySXNJbnQKKyAgICBiaWFl
cSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wVG9Kc251bWJlclNsb3cKKy5vcFRvSnNudW1iZXJJc0lu
dDoKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0Mywg
UGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvSnNudW1i
ZXJTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19qc251bWJlcikKKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZWdhdGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENv
bnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywg
Lm9wTmVnYXRlU3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xv
dworICAgIG5lZ2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4
XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNo
KDMpCisub3BOZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0
ZVNsb3cKKyAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAg
ICBkaXNwYXRjaCgzKQorCisub3BOZWdhdGVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9uZWdhdGUpCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBiaW5hcnlPcEN1c3RvbVN0
b3JlKGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCisg
ICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBs
b2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBi
aW5lcSB0MywgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBp
bnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUodDMsIHQxLCB0MCwgLnNsb3csIHQyKQorICAgIGRpc3Bh
dGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkg
bm90IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGNvdWxkIGJlIGFueXRoaW5nLgorICAgIGJp
YSB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MywgTG93ZXN0VGFnLCAub3AxTm90SW50
T3AyRG91YmxlCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDEsIGZ0
MQorICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlp
MmQgdDEsIHQzLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICBmaWkyZCB0MCwgdDIsIGZ0MAorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBz
dG9yZWQgZnQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3AyTm90SW50Ogor
ICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IGFuIGludCwgdGhlIHNlY29uZCBvcGVy
YW5kIGlzIGRlZmluaXRlbHkgbm90LgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGJpYSB0Mywg
TG93ZXN0VGFnLCAuc2xvdworICAgIGNpMmQgdDAsIGZ0MAorICAgIGZpaTJkIHQxLCB0MywgZnQx
CisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQy
LCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQor
ICAgIGRpc3BhdGNoKDQpCitlbmQKKworbWFjcm8gYmluYXJ5T3AoaW50ZWdlck9wZXJhdGlvbiwg
ZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAg
ICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAg
ICBpbnRlZ2VyT3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgc3RvcmVp
IGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSBy
aWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAg
IGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorZW5kCisKK19sbGludF9vcF9hZGQ6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHNsb3cpIGJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCkgYWRkZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYWRk
KQorCisKK19sbGludF9vcF9tdWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9w
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJtdWxpbyBsZWZ0LCByaWdodCwg
c2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbXVsKQorCisKK19sbGludF9vcF9zdWI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
c3ViKQorCisKK19sbGludF9vcF9kaXY6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFy
eU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNs
b3csIGluZGV4KQorICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQg
cmlnaHQsIGZ0MQorICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkg
ZnQxLCByaWdodCwgLm5vdEludAorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZz
ZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNl
dFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6
CisgICAgICAgICAgICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6
CisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJp
Z2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9kaXYpCisKKworX2xsaW50X29wX21vZDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkK
KyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGJpdE9wKG9wZXJhdGlvbiwgaGVscGVyKQorICAg
IGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9h
ZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGJpbmVxIHQy
LCBJbnQzMlRhZywgLnNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBvcGVyYXRpb24odDEs
IHQwLCAuc2xvdykKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5z
bG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworX2xs
aW50X29wX2xzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfbHNoaWZ0KQorCisKK19sbGludF9vcF9yc2hpZnQ6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3cpIHJzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3JzaGlm
dCkKKworCitfbGxpbnRfb3BfdXJzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0
T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHVyc2hp
ZnRpIGxlZnQsIHJpZ2h0CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAg
IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl91cnNoaWZ0KQorCisKK19sbGludF9vcF9iaXRh
bmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHNsb3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVs
cGVyX2JpdGFuZCkKKworCitfbGxpbnRfb3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQs
IHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXR4b3IpCisKKworX2xsaW50X29w
X2JpdG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRf
aGVscGVyX2JpdG9yKQorCisKK19sbGludF9vcF9iaXRub3Q6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFzc2VydE5v
dENvbnN0YW50KHQxKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgdDIKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MworICAgIGJpbmVxIHQyLCBJbnQzMlRh
ZywgLm9wQml0bm90U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAg
IGRpc3BhdGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2JpdG5vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVja19oYXNfaW5z
dGFuY2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFz
c2VydE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2Vs
bFRhZywgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAg
IGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBs
ZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgZGlzcGF0Y2go
MikKKworLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9p
bnN0YW5jZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIENoZWNrIHRoYXQgYmFzZVZh
bCBpbXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9yLgorICAgICMgRklY
TUU6IFRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAg
IGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNE
ZWZhdWx0SGFzSW5zdGFuY2UsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgCisgICAgIyBBY3R1YWxs
eSBkbyB0aGUgd29yay4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQx
CisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYXNz
ZXJ0Tm90Q29uc3RhbnQodDEpCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxs
VGFnLCAub3BJbnN0YW5jZW9mU2xvdworICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwg
Q2VsbFRhZywgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdLCB0MQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGJi
YiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlw
ZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MgorICAgIAorICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZh
bHVlCisgICAgbW92ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxvb3A6CisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0Ml0sIHQyCisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSAr
IFBheWxvYWRPZmZzZXQsIHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisg
ICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0
YW5jZW9mRG9uZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhd
CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2go
NSkKKworLm9wSW5zdGFuY2VvZlNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lu
c3RhbmNlb2YpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9pc19udW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19udW1iZXIpCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfaXNfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX2lzX29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2lzX29iamVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19m
dW5jdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2lzX2Z1bmN0aW9uKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2luOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfcmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9za2lwKQorICAgIGRpc3BhdGNoKDMpCisK
KworbWFjcm8gcmVzb2x2ZUdsb2JhbChzbG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxv
d3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENd
ICAgUHJvcGVydHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAjIDEy
W1BDXSAgU3RydWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2Vu
ZXJhdG9yLgorICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6
ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnBuZXEgdDAsIDEyW1BDXSwgc2xv
dworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0
b3JhZ2VbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQorZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgcmVzb2x2ZUdsb2JhbCgub3BSZXNvbHZlR2xvYmFsU2xv
dykKKyAgICBkaXNwYXRjaCg1KQorCisub3BSZXNvbHZlR2xvYmFsU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCisgICAgZGlzcGF0Y2goNSkKKworCisj
IEdpdmVzIHlvdSB0aGUgc2NvcGUgaW4gdDAsIHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25h
bGx5IHBlcmZvcm0gYWRkaXRpb25hbCBjaGVja3Mgb24gdGhlCisjIHNjb3BlcyBhcyB0aGV5IGFy
ZSB0cmF2ZXJzZWQuIHNjb3BlQ2hlY2soKSBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0
aGUgcmVnaXN0ZXIKKyMgaG9sZGluZyB0aGUgc2NvcGUsIGFuZCBhIHJlZ2lzdGVyIHRoYXQgY2Fu
IGJlIHVzZWQgZm9yIHNjcmF0Y2guIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90CisjIHVzZSB0Mywg
c28geW91IGNhbiBob2xkIHN0dWZmIGluIHQzIGlmIG5lZWQgYmUuCittYWNybyBnZXRTY29wZShk
ZUJydWlqaW5JbmRleE9wZXJhbmQsIHNjb3BlQ2hlY2spCisgICAgbG9hZHAgU2NvcGVDaGFpbiAr
IFBheWxvYWRPZmZzZXRbY2ZyXSwgdDAKKyAgICBsb2FkaSBkZUJydWlqaW5JbmRleE9wZXJhbmQs
IHQyCisgICAgCisgICAgYnRpeiB0MiwgLmRvbmUKKyAgICAKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDEKKyAgICBiaW5lcSBDb2RlQmxvY2s6Om1fY29kZVR5cGVbdDFdLCBGdW5jdGlvbkNv
ZGUsIC5sb29wCisgICAgYnRieiBDb2RlQmxvY2s6Om1fbmVlZHNGdWxsU2NvcGVDaGFpblt0MV0s
IC5sb29wCisgICAgCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX2FjdGl2YXRpb25SZWdpc3Rlclt0
MV0sIHQxCisKKyAgICAjIE5lZWQgdG8gY29uZGl0aW9uYWxseSBza2lwIG92ZXIgb25lIHNjb3Bl
LgorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAubm9BY3Rp
dmF0aW9uCisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6
Om5leHRbdDBdLCB0MAorLm5vQWN0aXZhdGlvbjoKKyAgICBzdWJpIDEsIHQyCisgICAgCisgICAg
YnRpeiB0MiwgLmRvbmUKKy5sb29wOgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRw
IFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKyAgICBzdWJpIDEsIHQyCisgICAgYnRpbnog
dDIsIC5vcEdldFNjb3BlZFZhckxvb3AKKworLmRvbmU6CitlbmQKKworX2xsaW50X29wX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0
YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0
aXZhdGlvblN0cnVjdHVyZVt0M10sIHQzCisgICAgZ2V0U2NvcGUoCisgICAgICAgIDIwW1BDXSwK
KyAgICAgICAgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKQorICAgICAgICAgICAgbG9hZHAgU2NvcGVD
aGFpbk5vZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGJwbmVxIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVy
U2xvdworICAgICAgICBlbmQpCisgICAgcmVzb2x2ZUdsb2JhbCgub3BSZXNvbHZlR2xvYmFsRHlu
YW1pY1Nsb3cpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBl
clNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0
Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNwYXRjaCg2KQorCisKK19sbGludF9v
cF9nZXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBPcGVyYW5kcyBh
cmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgor
ICAgICMgOFtQQ10gICBJbmRleCBvZiByZWdpc3RlciBpbiB0aGUgc2NvcGUuCisgICAgIyAxMltQ
Q10gIERlIEJydWlqaW4gaW5kZXguCisgICAgZ2V0U2NvcGUoMTJbUENdLCBtYWNybyAoc2NvcGUs
IHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIK
KyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1Zh
cmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3Qw
LCB0MiwgOF0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdLCB0MAorICAg
IHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X3Nj
b3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGdldFNjb3BlKDhbUENdLCBtYWNy
byAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZGkg
NFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDMsIHQyKQorICAgIHdy
aXRlQmFycmllcih0MywgdDIpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0s
IHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAg
IHN0b3JlaSB0MywgVGFnT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRP
ZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9nbG9i
YWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBs
b2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVj
dDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0
MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDEKKyAgICBzdG9yZWkgdDIs
IFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSA4W1BD
XSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdp
c3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQzLCA4XSwgdDIKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MworICAgIHdyaXRlQmFycmllcih0Miwg
dDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0b3JlaSB0Mywg
UGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bf
cmVzb2x2ZV9iYXNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcmVzb2x2ZV9iYXNlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2Vu
c3VyZV9wcm9wZXJ0eV9leGlzdHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF9iYXNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX3RoaXM6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfaWQ6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBm
b3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKKyAgICAjIG9wY29kZS4gV2UgZG8sIGhv
d2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hhbmdlIGFueXRpbWUgaWYgZmFpbHMsIHNp
bmNlCisgICAgIyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4gQXQgYmVzdCB3ZSBnZXQgbHVja3kgYW5k
IHRoZSBnZXRfYnlfaWQgd2lsbCBjb250aW51ZQorICAgICMgdG8gdGFrZSBmYXN0IHBhdGggb24g
dGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBzbG93IHBhdGgsIHdoaWNoIGlzIHdoYXQK
KyAgICAjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCisgICAgbG9hZGkgOFtQQ10s
IHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0
MgorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0M10sIHQwCisgICAgYnBu
ZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdworICAgIGxvYWRp
IDRbUENdLCB0MQorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDJdLCB0MworICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbdDAsIHQyXSwgdDIKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQx
LCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3Bh
dGNoKDgpCisKKy5vcEdldEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9n
ZXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10s
IHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAu
b3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAor
ICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3Jh
Z2VbdDBdLCB0MworICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0
QnlJZFNsb3cKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
dDIsIDhdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAg
d3JpdGVCYXJyaWVyKHQwLCB0MikKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDFdCisg
ICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBkaXNwYXRjaCg4KQorCisK
K21hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5zbG93KQorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZGkgMTJbUENdLCB0
MgorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLnNsb3cKKyAgICBhZGRp
dGlvbmFsQ2hlY2tzKHQxLCB0MywgLnNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxv
YWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYWRkcCB0MSwgdDMK
KyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQyKQorICAgIHN0b3Jl
aSB0MSwgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIDI0W1BDXSwgdDEKKyAgICBzdG9yZWkgdDIs
IFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XQorICAgIGRpc3BhdGNoKDgpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9wdXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOCkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0OgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1
Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAorICAgICAgICBtYWNybyAob2xk
U3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQorICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0g
b2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRo
ZSBwcm90bworICAgICAgICAKKyAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAorICAg
ICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yICsgVmVjdG9yQnVmZmVyT2Zm
c2V0W3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90
b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAgICAgICAg
Lmxvb3A6CisgICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9h
ZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICAgICAgICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgICAgICAgICBicG5l
cSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdworICAgICAgICAgICAgYWRkcCA0LCBzY3Jh
dGNoCisgICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0
W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisgICAgICAgIC5kb25lOgorICAgICAgICBl
bmQpCisKKworX2xsaW50X29wX2RlbF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9nZXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQQ10s
IHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93
KQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MV0sIHQyCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlW
YWxTbG93KQorICAgIGJwbmVxIFt0MF0sIHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkcCBK
U0FycmF5OjptX3N0b3JhZ2VbdDBdLCB0MworICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3ZlY3Rv
ckxlbmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxv
YWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAg
ICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhd
LCB0MQorICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAgIHN0
b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QnlWYWxTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaWVxIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgSW50MzJUYWcsIHQyLCAub3BH
ZXRBcmd1bWVudEJ5VmFsU2xvdykKKyAgICBhZGRpIDEsIHQyCisgICAgbG9hZGkgQXJndW1lbnRD
b3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDEKKyAgICBiaWFlcSB0MiwgdDEsIC5vcEdldEFy
Z3VtZW50QnlWYWxTbG93CisgICAgbmVnaSB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxv
YWRpIFRhZ09mZnNldFtjZnIsIHQyLCA4XSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDIsIDhdLCB0MQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNCkKKwor
Lm9wR2V0QXJndW1lbnRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dl
dF9hcmd1bWVudF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5
X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQwCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BHZXRCeVBu
YW1lU2xvdykKKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgYnBuZXEgdDEsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BHZXRC
eVBuYW1lU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQwCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDAK
KyAgICBicG5lcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVb
dDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDI0W1BDXSwgdDAKKyAgICBsb2FkaSBb
Y2ZyLCB0MCwgOF0sIHQwCisgICAgc3ViaSAxLCB0MAorICAgIGJpYWVxIHQwLCBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cK
KyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDJdLCB0MgorICAgIGxvYWRp
IFRhZ09mZnNldFt0MiwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDIsIHQw
LCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAg
IGRpc3BhdGNoKDcpCisKKy5vcEdldEJ5UG5hbWVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9nZXRfYnlfcG5hbWUpCisgICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfcHV0
X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZh
bFNsb3cpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDAsIEludDMyVGFnLCB0MiwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QwXSwgdDAK
KyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDBdLCB0MAorICAgIGJw
bmVxIFt0MV0sIHQwLCAub3BQdXRCeVZhbFNsb3cKKyAgICBiaWFlcSB0MiwgSlNBcnJheTo6bV92
ZWN0b3JMZW5ndGhbdDFdLCAub3BQdXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0
b3JhZ2VbdDFdLCB0MAorICAgIGJpZXEgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNl
dFt0MCwgdDIsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BQdXRCeVZhbEVtcHR5Cisub3BQdXRCeVZh
bFN0b3JlUmVzdWx0OgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFu
dCh0MykKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MywgOF0sIHQxCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQzKQorICAg
IHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhd
CisgICAgc3RvcmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0
MCwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wUHV0QnlWYWxFbXB0eToKKyAgICBhZGRp
IDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KKyAgICBiaWIgdDIsIEFy
cmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdLCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisgICAgYWRk
aSAxLCB0MiwgdDEKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdCisg
ICAgam1wIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQKKworLm9wUHV0QnlWYWxTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX2RlbF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9kZWxfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX3B1dF9ieV9pbmRleDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3B1dF9ieV9pbmRleCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9wdXRfZ2V0dGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcHV0X2dldHRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRf
c2V0dGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcHV0X3NldHRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9sb29wOgorICAg
IG5vcAorX2xsaW50X29wX2ptcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0Y2hC
cmFuY2goNFtQQ10pCisKKworbWFjcm8ganVtcFRydWVPckZhbHNlKGNvbmRpdGlvbk9wLCBzbG93
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpYiBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEJv
b2xlYW5UYWcsIC5zbG93CisgICAgY29uZGl0aW9uT3AoUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJh
bmNoKDhbUENdKQorCisuc2xvdzoKKyAgICBzdWJpIDMgKiA0LCBQQworICAgIGNhbGxIZWxwZXIo
c2xvdykKKyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX3RydWU6Cisg
ICAgbm9wCitfbGxpbnRfb3BfanRydWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBU
cnVlT3JGYWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aW56IHZhbHVlLCB0
YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2p0cnVlKQorCisKK19sbGludF9vcF9s
b29wX2lmX2ZhbHNlOgorICAgIG5vcAorX2xsaW50X29wX2pmYWxzZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAganVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdl
dCkgYnRpeiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZmFsc2Up
CisKKworbWFjcm8gZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYW5kbGVyKQorICAg
IGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxs
VGFnLCAuaW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisg
ICAgY2VsbEhhbmRsZXIoU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDJdLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hC
cmFuY2goOFtQQ10pCisKKy5pbW1lZGlhdGU6CisgICAgb3JpIDEsIHQxCisgICAgaW1tZWRpYXRl
SGFuZGxlcih0MSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorZW5kCisKK19sbGludF9vcF9q
ZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBt
YWNybyAodmFsdWUsIHRhcmdldCkgYnRibnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQs
IHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaWVxIHZhbHVlLCBO
dWxsVGFnLCB0YXJnZXQgZW5kKQorICAgIAorCitfbGxpbnRfb3Bfam5lcV9udWxsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFy
Z2V0KSBidGJ6IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAg
ICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmluZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBl
bmQpCisKKworX2xsaW50X29wX2puZXFfcHRyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcEpuZXFQdHJCcmFuY2gKKyAgICBicGVxIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKKy5vcEpuZXFQdHJC
cmFuY2g6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorLm9wSm5lcVB0ckZhbGxUaHJvZ3Vo
OgorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8gY29tcGFyZShpbnRlZ2VyQ29tcGFyZSwgZG91
YmxlQ29tcGFyZSwgaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENd
LCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwLCB0MSkKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MywgdDIsIHQzKQorICAgIGJpbmVxIHQwLCBJbnQzMlRhZywg
Lm9wMU5vdEludAorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGludGVn
ZXJDb21wYXJlKHQxLCB0MywgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5v
dEludDoKKyAgICBiaWEgdDAsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRh
ZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAg
ICBjaTJkIHQzLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91
YmxlOgorICAgIGZpaTJkIHQzLCB0MiwgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgZmlpMmQg
dDEsIHQwLCBmdDAKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAg
ICBkaXNwYXRjaCg0KQorCisub3AyTm90SW50OgorICAgIGNpMmQgdDEsIGZ0MAorICAgIGJpYSB0
MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGZpaTJkIHQzLCB0MiwgZnQxCisgICAgZG91YmxlQ29t
cGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLmp1bXBUYXJn
ZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVy
KGhlbHBlcikKKyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX2xlc3M6
CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNv
bXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJp
Z2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRs
dCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzcykK
KworCitfbGxpbnRfb3Bfam5sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJl
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVx
dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNz
KQorCisKK19sbGludF9vcF9sb29wX2lmX2dyZWF0ZXI6CisgICAgbm9wCitfbGxpbnRfb3Bfamdy
ZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndCBsZWZ0LCByaWdodCwgdGFyZ2V0
IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcikKKworCitfbGxpbnRfb3Bfam5n
cmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxdW4gbGVmdCwgcmlnaHQs
IHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5ncmVhdGVyKQorCisKK19sbGlu
dF9vcF9sb29wX2lmX2xlc3NlcToKKyAgICBub3AKK19sbGludF9vcF9qbGVzc2VxOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAg
ICAgICBfbGxpbnRfaGVscGVyX2psZXNzZXEpCisKKworX2xsaW50X29wX2pubGVzc2VxOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3R1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl9qbmxlc3NlcSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVh
dGVyZXE6CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJp
Z3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJkZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9qZ3JlYXRlcmVxKQorCisKK19sbGludF9vcF9qbmdyZWF0ZXJlcToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0
YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiZGx0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfam5ncmVhdGVyZXEpCisKKworX2xsaW50X29wX2xvb3BfaGludDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGRp
c3BhdGNoKDEpCisKKworX2xsaW50X29wX3N3aXRjaF9pbW06CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAg
ICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0
MgorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6OlJhcmVEYXRhOjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJP
ZmZzZXRbdDIsIHQzLCA0XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MAorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wU3dpdGNoSW1tTm90SW50CisgICAgc3Vi
aSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBU
YWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hJbW1G
YWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJhbmNoKFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zm
c2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MiwgdDAsIDRdKQorCisub3BTd2l0Y2hJbW1Ob3RJ
bnQ6CisgICAgYmliIHQxLCBMb3dlc3RUYWcsIC5vcFN3aXRjaEltbVNsb3cgICMgR28gdG8gc2xv
dyBwYXRoIGlmIGl0J3MgYSBkb3VibGUuCisub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaDoKKyAgICBk
aXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLm9wU3dpdGNoSW1tU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfc3dpdGNoX2ltbSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9v
cF9zd2l0Y2hfY2hhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0
MAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAg
IGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fY2hhcmFj
dGVyU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MiwgdDMsIDRdLCB0Mgor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENl
bGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MQorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBs
b2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MF0sIHQwCisgICAgYmluZXEgU3RyaW5nSW1wbDo6bV9s
ZW5ndGhbdDBdLCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTdHJpbmdJ
bXBsOjptX2RhdGE4W3QwXSwgdDEKKyAgICBidGlueiBTdHJpbmdJbXBsOjptX2hhc2hBbmRGbGFn
c1t0MF0sIEhhc2hGbGFnczhCaXRCdWZmZXIsIC5vcFN3aXRjaENoYXI4Qml0CisgICAgbG9hZGgg
W3QxXSwgdDAKKyAgICBqbXAgLm9wU3dpdGNoQ2hhclJlYWR5Cisub3BTd2l0Y2hDaGFyOEJpdDoK
KyAgICBsb2FkYiBbdDFdLCB0MAorLm9wU3dpdGNoQ2hhclJlYWR5OgorICAgIHN1YmkgU2ltcGxl
SnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJy
YW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJv
dWdoCisgICAgZGlzcGF0Y2hCcmFuY2goU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsg
VmVjdG9yQnVmZmVyT2Zmc2V0W3QyLCB0MCwgNF0pCisKKy5vcFN3aXRjaENoYXJGYWxsVGhyb3Vn
aDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX3N0cmlu
ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3
aXRjaF9zdHJpbmcpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaW5lcSBUYWdP
ZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcE5ld0Z1bmNEb25lCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19mdW5jKQorLm9wTmV3RnVuY0RvbmU6CisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmNfZXhwKQorICAgIGRpc3Bh
dGNoKDMpCisKKworbWFjcm8gZG9DYWxsKGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBsb2FkaSAxNltQQ10sIHQxCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDYWxsU2xvdworICAgIGJpbmVxIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxLCAub3BDYWxsU2xvdworICAgIGxvYWRpIDhbUENd
LCB0MgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBhZGRwIDI0LCBQQworICAgIGxzaGlmdGkg
MywgdDMKKyAgICBhZGRwIGNmciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBj
ZnIKKyAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAg
IGxvYWRwIDIwIC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRh
Z09mZnNldFtjZnJdCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QxXSwgdDAK
KyAgICBzdG9yZXAgY2ZyLCBDYWxsZXJGcmFtZVt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2Fs
bGVlICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSB0MSwgQ2FsbGVlICsgUGF5bG9hZE9mZnNl
dFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10KKyAg
ICBzdG9yZWkgdDAsIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGNhbGwgdDIK
KyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKy5vcENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9y
Q2FsbCg2LCBoZWxwZXIpCitlbmQKKworX2xsaW50X29wX2NhbGw6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGRvQ2FsbChfbGxpbnRfaGVscGVyX2NhbGwpCisKKworX2xsaW50X29wX2NvbnN0
cnVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY29u
c3RydWN0KQorCisKK19sbGludF9vcF9jYWxsX3ZhcmFyZ3M6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBfbGxpbnRfaGVscGVyX2NhbGxfdmFyYXJncykKKwor
CitfbGxpbnRfb3BfY2FsbF9ldmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAKKyAgICAj
IEV2YWwgaXMgZXhlY3V0ZWQgaW4gb25lIG9mIHR3byBtb2RlczoKKyAgICAjCisgICAgIyAxKSBX
ZSBmaW5kIHRoYXQgd2UncmUgcmVhbGx5IGludm9raW5nIGV2YWwoKSBpbiB3aGljaCBjYXNlIHRo
ZQorICAgICMgICAgZXhlY3V0aW9uIGlzIHBlcmZvbWVkIGVudGlyZWx5IGluc2lkZSB0aGUgaGVs
cGVyLCBhbmQgaXQKKyAgICAjICAgIHJldHVybnMgdGhlIFBDIG9mIGEgZnVuY3Rpb24gdGhhdCBq
dXN0IHJldHVybnMgdGhlIHJldHVybiB2YWx1ZQorICAgICMgICAgdGhhdCB0aGUgZXZhbCByZXR1
cm5lZC4KKyAgICAjCisgICAgIyAyKSBXZSBmaW5kIHRoYXQgd2UncmUgaW52b2tpbmcgc29tZXRo
aW5nIGNhbGxlZCBldmFsKCkgdGhhdCBpcyBub3QKKyAgICAjICAgIHRoZSByZWFsIGV2YWwuIFRo
ZW4gdGhlIGhlbHBlciByZXR1cm5zIHRoZSBQQyBvZiB0aGUgdGhpbmcgdG8KKyAgICAjICAgIGNh
bGwsIGFuZCB3ZSBjYWxsIGl0LgorICAgICMKKyAgICAjIFRoaXMgYWxsb3dzIHVzIHRvIGhhbmRs
ZSB0d28gY2FzZXMsIHdoaWNoIHdvdWxkIHJlcXVpcmUgYSB0b3RhbCBvZgorICAgICMgdXAgdG8g
Zm91ciBwaWVjZXMgb2Ygc3RhdGUgdGhhdCBjYW5ub3QgYmUgZWFzaWx5IHBhY2tlZCBpbnRvIHR3
bworICAgICMgcmVnaXN0ZXJzIChDIGZ1bmN0aW9ucyBjYW4gcmV0dXJuIHVwIHRvIHR3byByZWdp
c3RlcnMsIGVhc2lseSk6CisgICAgIworICAgICMgLSBUaGUgY2FsbCBmcmFtZSByZWdpc3Rlci4g
VGhpcyBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4gbW9kaWZpZWQKKyAgICAjICAgYnkgdGhlIGhl
bHBlciwgYnV0IHRoZSBjb252ZW50aW9uIGlzIHRoYXQgaXQgcmV0dXJucyBpdC4gSXQncyBub3QK
KyAgICAjICAgdG90YWxseSBjbGVhciBpZiB0aGF0J3MgbmVjZXNzYXJ5LCBzaW5jZSB0aGUgY2Zy
IGlzIGNhbGxlZSBzYXZlLgorICAgICMgICBCdXQgdGhhdCdzIG91ciBzdHlsZSBpbiB0aGlzIGhl
cmUgaW50ZXJwcmV0ZXIgc28gd2Ugc3RpY2sgd2l0aCBpdC4KKyAgICAjCisgICAgIyAtIEEgYml0
IHRvIHNheSBpZiB0aGUgaGVscGVyIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCB0aGUgZXZhbCBhbmQg
aGFzCisgICAgIyAgIHRoZSByZXR1cm4gdmFsdWUsIG9yIGRpZCBub3QgZXhlY3V0ZSB0aGUgZXZh
bCBidXQgaGFzIGEgUEMgZm9yIHVzCisgICAgIyAgIHRvIGNhbGwuCisgICAgIworICAgICMgLSBF
aXRoZXI6CisgICAgIyAgIC0gVGhlIEpTIHJldHVybiB2YWx1ZSAodHdvIHJlZ2lzdGVycyksIG9y
CisgICAgIworICAgICMgICAtIFRoZSBQQyB0byBjYWxsLgorICAgICMKKyAgICAjIEl0IHR1cm5z
IG91dCB0byBiZSBlYXNpZXIgdG8ganVzdCBhbHdheXMgaGF2ZSB0aGlzIHJldHVybiB0aGUgY2Zy
CisgICAgIyBhbmQgYSBQQyB0byBjYWxsLCBhbmQgdGhhdCBQQyBtYXkgYmUgYSBkdW1teSB0aHVu
ayB0aGF0IGp1c3QKKyAgICAjIHJldHVybnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0
dXJuZWQuCisgICAgCisgICAgc2xvd1BhdGhGb3JDYWxsKDQsIF9sbGludF9oZWxwZXJfY2FsbF9l
dmFsKQorCisKK19sbGludF9nZW5lcmljX3JldHVybl9wb2ludDoKKyAgICBkaXNwYXRjaEFmdGVy
Q2FsbCgpCisKKworX2xsaW50X29wX3RlYXJfb2ZmX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2
YXRpb25DcmVhdGVkCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVU
YWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZAorLm9wVGVhck9mZkFjdGl2YXRpb25D
cmVhdGVkOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9u
KQorLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX3RlYXJfb2ZmX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgc3ViaSAxLCB0MCAgICMgR2V0IHRoZSB1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1
ZVRhZywgLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQorLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0
ZWQ6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBkb1JldHVybigpCisgICAgbG9hZHAgUmV0
dXJuUENbY2ZyXSwgdDIKKyAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKKyAgICByZXN0
b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICByZXQKK2VuZAorCitfbGxpbnRf
b3BfcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBp
bG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRv
UmV0dXJuKCkKKworCitfbGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIs
IHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRp
c3BhdGNoKDIpCisKKworX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9w
UmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDJdLCBPYmplY3RUeXBlLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBkb1JldHVy
bigpCisKKy5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdDoKKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX21ldGhv
ZF9jaGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNo
ZWNrcyBhbmQgdXNlIG5vcm1hbCBnZXRfYnlfaWQgb3B0aW1pemF0aW9ucy4KKyAgICBkaXNwYXRj
aCgxKQorCisKK19sbGludF9vcF9zdHJjYXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zdHJjYXQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfdG9fcHJpbWl0aXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5l
cSB0MSwgQ2VsbFRhZywgLm9wVG9QcmltaXRpdmVJc0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJ
bmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisgICAg
c3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb1ByaW1pdGl2ZVNsb3dD
YXNlOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19wcmltaXRpdmUpCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfZ2V0X3BuYW1lczoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9wbmFtZXMpCisgICAgZGlzcGF0Y2go
MCkgIyBUaGUgaGVscGVyIGVpdGhlciBhZHZhbmNlcyB0aGUgUEMgb3IganVtcHMgdXMgdG8gc29t
ZXdoZXJlIGVsc2UuCisKKworX2xsaW50X29wX25leHRfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkaSAxNltQQ10sIHQyCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSwgdDAKKyAgICBiaWVxIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdLCAub3BOZXh0UG5hbWVFbmQKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICBsb2FkcCBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yOjptX2pzU3RyaW5nc1t0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwg
OF0sIHQzCisgICAgYWRkaSAxLCB0MAorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQxLCA4XQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhd
LCB0MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGJwbmVxIHQx
LCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIC5vcE5leHRQ
bmFtZVNsb3cKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFByb3Rv
dHlwZUNoYWluW3QyXSwgdDAKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDBd
LCB0MAorICAgIGJ0cHogW3QwXSwgLm9wTmV4dFBuYW1lVGFyZ2V0Cisub3BOZXh0UG5hbWVDaGVj
a1Byb3RvdHlwZUxvb3A6CisgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zm
c2V0W3QxXSwgTnVsbFRhZywgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRwIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QxXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QyXSwgdDEKKyAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdwor
ICAgIGFkZHAgNCwgdDAKKyAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlw
ZUxvb3AKKy5vcE5leHRQbmFtZVRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgyNFtQQ10pCisK
Ky5vcE5leHRQbmFtZUVuZDoKKyAgICBkaXNwYXRjaCg3KQorCisub3BOZXh0UG5hbWVTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXh0X3BuYW1lKSAjIFRoaXMgZWl0aGVyIGtl
ZXBzIHRoZSBQQyB3aGVyZSBpdCB3YXMgKGNhdXNpbmcgdXMgdG8gbG9vcCkgb3Igc2V0cyBpdCB0
byB0YXJnZXQuCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfcHVzaF9zY29wZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfc2Nv
cGUpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9wX3Njb3BlOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9wX3Njb3BlKQorICAg
IGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3B1c2hfbmV3X3Njb3BlOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9uZXdfc2NvcGUpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfY2F0Y2g6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJh
bXBvbGluZSAoYmVjYXVzZSB0aGUKKyAgICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3
aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQorICAgICMgdGhlIGludGVy
cHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4K
KyAgICAjIFRoZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUg
aW4gdDAuIFRoZSB0aHJvd2luZworICAgICMgY29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3
ZXJlIHRocm93aW5nIHRvIHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0ds
b2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIK
KyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBK
U0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9h
ZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBs
b2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxCisgICAgc3Rv
cmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBz
dG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRb
dDNdCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNw
YXRjaCgyKQorCisKK19sbGludF9vcF90aHJvdzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rocm93KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xs
aW50X29wX3Rocm93X3JlZmVyZW5jZV9lcnJvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKKyAgICBkaXNw
YXRjaCgyKQorCisKK19sbGludF9vcF9qc3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIGFkZGkgMyAqIDQsIFBDLCB0MQorICAgIHN0b3JlaSB0MSwgW3Qw
XQorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zcmV0OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgUEMKKyAgICBkaXNwYXRjaCgwKQorCisK
K19sbGludF9vcF9kZWJ1ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2RlYnVnKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Byb2Zp
bGVfd2lsbF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidHB6IEpJVFN0YWNrRnJh
bWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCisub3BQcm9m
aWxlV2lsbENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Byb2ZpbGVf
ZGlkX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0cHogSklUU3RhY2tGcmFtZTo6
ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgLm9wUHJvZmlsZURpZENhbGxEb25lCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9maWxlRGlk
Q2FsbERvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxp
bnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dpbmcgZnJv
bSB0aGUgaW50ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMpLCBzbwor
ICAgICMgdGhlIHRocm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29k
ZSwgd2UgY29tZSB0byBoZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUg
SklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFs
RGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0
MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFd
CisKKworX2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVS
ZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2Jh
bERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3db
dDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3Qx
XQorCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1
ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworI2luY2x1ZGUgIkxMSW50QXNzZW1ibHkuaCIK
KworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTG93TGV2
ZWxJbnRlcnByZXRlcl9oCisjZGVmaW5lIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorCisjaW5jbHVk
ZSAiT3Bjb2RlLmgiCisKKyNkZWZpbmUgTExJTlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxl
bmd0aCkgZXh0ZXJuICJDIiB2b2lkIGxsaW50XyMjb3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hfT1BD
T0RFX0lEKExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wpOworI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9O
X0RFQ0wKKworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUoKTsKK2V4dGVy
biAiQyIgdm9pZCBsbGludF9ldmFsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
ZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
Z2VuZXJpY19yZXR1cm5fcG9pbnQoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19mcm9t
X2hlbHBlcl90cmFtcG9saW5lKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZHVyaW5n
X2NhbGxfdHJhbXBvbGluZSgpOworCisjZW5kaWYgLy8gTG93TGV2ZWxJbnRlcnByZXRlcl9oCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE5MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVyCisgIGRlZiBpbml0aWFsaXplKG5hbWUpCisgICAg
QG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIEBuYW1lCisg
IGVuZAorZW5kCisKK0FSTXY3X0RBVEFfUkVHID0gU3BlY2lhbFJlZ2lzdGVyLm5ldygiaXAiKQor
QVJNdjdfQUREUl9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyMyIpCisKK2RlZiBtb3ZlSW1t
ZWRpYXRlKHZhbHVlLCByZWdpc3RlcikKKyAgIyBDdXJyZW50bHkgd2Ugb25seSBoYW5kbGUgdGhl
IHNpbXBsZSBjYXNlcywgYW5kIGZhbGwgYmFjayB0byBtb3YvbW92dCBmb3IgdGhlIGNvbXBsZXgg
b25lcy4KKyAgaWYgdmFsdWUgPj0gMCAmJiB2YWx1ZSA8IDI1NgorICAgICRhc20ucHV0cyAibW92
dyBcIyN7dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgIGVsc2lmICh+dmFsdWUp
ID49IDAgJiYgKH52YWx1ZSkgPCAyNTYKKyAgICAkYXNtLnB1dHMgIm12bncgXCMje352YWx1ZX0s
ICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzZQorICAgICRhc20ucHV0cyAibW92dyBc
IyN7dmFsdWUgJiAweGZmZmZ9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgICAgaWYgKHZh
bHVlICYgMHhmZmZmMDAwMCkgIT0gMAorICAgICAgJGFzbS5wdXRzICJtb3Z0IFwjI3t2YWx1ZSA+
PiAxNn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKwor
Y2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAg
d2hlbiAidDAiLCAiYTAiLCAicjAiCisgICAgICAicjAiCisgICAgd2hlbiAidDEiLCAiYTEiLCAi
cjEiCisgICAgICAicjEiCisgICAgd2hlbiAidDIiLCAiYTIiCisgICAgICAicjIiCisgICAgd2hl
biAiYTMiCisgICAgICAicjMiCisgICAgd2hlbiAidDMiCisgICAgICAicjQiCisgICAgd2hlbiAi
dDQiCisgICAgICAicjciCisgICAgd2hlbiAiY2ZyIgorICAgICAgInI1IgorICAgIGVsc2UKKyAg
ICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxl
TWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFu
ZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAK
KyAgICB5aWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQKKyAgZGVmIGFybVY3
T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIsICJmciIKKyAgICAgICJkMCIK
KyAgICB3aGVuICJmcjEiLAorICAgICAgImQxIgorICAgIHdoZW4gImZyMiIKKyAgICAgICJkMiIK
KyAgICB3aGVuICJmcjMiCisgICAgICAiZDMiCisgICAgd2hlbiAiZnI0IgorICAgICAgImQ0Igor
ICAgIHdoZW4gImZyNSIKKyAgICAgICJkNSIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVu
ZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAg
ZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJh
bmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgeWllbGQgc2VsZgor
ICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIHJh
aXNlICJJbnZhbGlkIGltbWVkaWF0ZSAje3ZhbHVlfSIgaWYgdmFsdWUgPCAwIG9yIHZhbHVlID4g
MjU1CisgICAgIiMke3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2li
bGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVy
YW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3Jh
cAorICAgIHlpZWxkIHNlbGYKKyAgZW5kCitlbmQKKworbW9kdWxlIEFSTXY3QWRkcmVzc1V0aWxp
dGllcworICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgc2VsZi5hcm1WN1ByZXBhcmVQb3Nz
aWJsZU1lbW9yeU9wZXJhbmQKKyAgICAkYXNtLnB1dHMgIlx0bGRyICN7c2VsZi5hcm1WN1Bvc3Np
Ymx5TWVtb3J5T3BlcmFuZH0sICN7QVJNdjdfREFUQV9SRUcuYXJtVjdPcGVyYW5kfSIKKyAgICB5
aWVsZCBBUk12N19EQVRBX1JFRworICAgICRhc20ucHV0cyAiXHRzdHIgI3tBUk12N19EQVRBX1JF
Ry5hcm1WN09wZXJhbmR9LCAje3NlbGYuYXJtVjdQb3NzaWJseU1lbW9yeU9wZXJhbmR9IgorICBl
bmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVz
CisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNl
dC52YWx1ZSA8IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICBtb3ZlSW1tZWRp
YXRlKG9mZnNldC52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4
ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0s
ICN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfV0iCisgICAgZWxzZQorICAgICAgIlsje2Jh
c2UuYXJtVjdPcGVyYW5kfSwgI3tvZmZzZXQuYXJtVjdPcGVyYW5kfV0iCisgICAgZW5kCisgIGVu
ZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBpbmNsdWRlIEFSTXY3QWRkcmVzc1V0aWxpdGll
cworCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZz
ZXQudmFsdWUgIT0gMAorICAgICAgbW92ZUltbWVkaWF0ZShvZmZzZXQudmFsdWUsIEFSTXY3X0FE
RFJfUkVHKQorICAgICAgJGFzbS5wdXRzICJhZGR3ICN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVy
YW5kfSwgI3tiYXNlLmFybVY3T3BlcmFuZH0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFy
bVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAg
ICJbI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0s
IGxzbCBcIyN7c2NhbGV9XSIKKyAgICBlbHNlCisgICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9
LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGV9XSIKKyAgICBlbmQKKyAgZW5k
CitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRp
bGl0aWVzCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAg
bW92ZUltbWVkaWF0ZShhZGRyZXNzLnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgZW5kCisgIAor
ICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICAiWyN7QVJNdjdfQUREUl9SRUcu
YXJtVjdPcGVyYW5kfV0iCisgIGVuZAorZW5kCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYXNtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OSBAQAorIyEvdXNy
L2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisk
OiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWly
ZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWly
ZSAidHJhbnNmb3JtIgorCitjbGFzcyBBc3NlbWJsZXIKKyAgZGVmIGluaXRpYWxpemUob3V0cCkK
KyAgICBAb3V0cCA9IG91dHAKKyAgICBAc3RhdGUgPSA6Y3BwCisgIGVuZAorICAKKyAgZGVmIGVu
dGVyQXNtCisgICAgQG91dHAucHV0cyAiYXNtICgiCisgICAgQHN0YXRlID0gOmFzbQorICBlbmQK
KyAgCisgIGRlZiBsZWF2ZUFzbQorICAgIEBvdXRwLnB1dHMgIik7IgorICAgIEBzdGF0ZSA9IDpj
cHAKKyAgZW5kCisgIAorICBkZWYgaW5Bc20KKyAgICBlbnRlckFzbQorICAgIHlpZWxkCisgICAg
bGVhdmVBc20KKyAgZW5kCisgIAorICBkZWYgcHV0cyhsaW5lKQorICAgIHJhaXNlIHVubGVzcyBA
c3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnB1dHMoKGxpbmUgKyAiXG4iKS5pbnNwZWN0KQorICBl
bmQKK2VuZAorCiskYXNtID0gQXNzZW1ibGVyLm5ldygkc3Rkb3V0KQorCithc21GaWxlID0gQVJH
Vi5zaGlmdAorb2Zmc2V0c0ZpbGUgPSBBUkdWLnNoaWZ0CisKK2FzdCA9IHBhcnNlKGxleChJTzo6
cmVhZChhc21GaWxlKSkpCitvZmZzZXRzTGlzdCwgY29uZmlnSW5kZXggPSBvZmZzZXRzQW5kQ29u
ZmlndXJhdGlvbkluZGV4KG9mZnNldHNGaWxlKQorCitmb3JTZXR0aW5ncyhjb21wdXRlU2V0dGlu
Z3NDb21iaW5hdGlvbnMoYXN0KVtjb25maWdJbmRleF0sIGFzdCkgeworICB8IGNvbmNyZXRlU2V0
dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25j
cmV0ZVNldHRpbmdzKQorICBsb3dMZXZlbEFTVCA9IGxvd0xldmVsQVNULnJlc29sdmUoKmJ1aWxk
T2Zmc2V0c01hcChsb3dMZXZlbEFTVCwgb2Zmc2V0c0xpc3QpKQorICBlbWl0Q29kZUluQ29uZmln
dXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCkgeworICAgICRh
c20uaW5Bc20geworICAgICAgbG93TGV2ZWxBU1QubG93ZXIoYmFja2VuZCkKKyAgICB9CisgIH0K
K30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODA2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBCYXNlIHV0aWxpdHkgdHlw
ZXMgZm9yIHRoZSBBU1QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFZhbGlkIG1ldGhvZHMgZm9yIE5v
ZGU6CisjCisjIG5vZGUuY2hpbGRyZW4gLT4gUmV0dXJucyBhbiBhcnJheSBvZiBpbW1lZGlhdGUg
Y2hpbGRyZW4uCisjCisjIG5vZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJucyBhbiBhcnJheSBvZiBh
bGwgc3RyaWN0IGRlc2NlbmRhbnRzIChjaGlsZHJlbgorIyAgICAgYW5kIGNoaWxkcmVuIG9mIGNo
aWxkcmVuLCB0cmFuc2l0aXZlbHkpLgorIworIyBub2RlLmZsYXR0ZW4gLT4gUmV0dXJucyBhbiBh
cnJheSBjb250YWluaW5nIHRoZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5kCisjICAgICB0aGUgbm9k
ZSBpdHNlbGYuCisjCisjIG5vZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVybnMgYW4gYXJyYXkgY29u
dGFpbmluZyB0aG9zZSBlbGVtZW50cyBpbgorIyAgICAgbm9kZS5mbGF0dGVuIHRoYXQgYXJlIG9m
IHRoZSBnaXZlbiB0eXBlIChpc19hPyB0eXBlIHJldHVybnMgdHJ1ZSkuCisjCisjIG5vZGUubWFw
Q2hpbGRyZW57fHZ8IC4uLn0gLT4gUmV0dXJucyBhIG5ldyBub2RlIHdpdGggYWxsIGNoaWxkcmVu
CisjICAgICByZXBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJsb2NrLgorIworIyBFeGFt
cGxlczoKKyMKKyMgbm9kZS5maWx0ZXIoU2V0dGluZykudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0
aGUgc2V0dGluZ3MgdGhhdCB0aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVsc2UgYmxvY2tzIGRlcGVu
ZCBvbi4KKyMKKyMgbm9kZS5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxIC0+IFJldHVybnMgYWxs
IG9mIHRoZSBzdHJ1Y3R1cmUgb2Zmc2V0cworIyAgICAgdGhhdCB0aGUgQVNUIGRlcGVuZHMgb24u
CisKK2NsYXNzIE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4pCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgIGVuZAor
ICAKKyAgZGVmIGNvZGVPcmlnaW5TdHJpbmcKKyAgICAibGluZSBudW1iZXIgI3tAY29kZU9yaWdp
bn0iCisgIGVuZAorICAKKyAgZGVmIGRlc2NlbmRhbnRzCisgICAgY2hpbGRyZW4uY29sbGVjdHt8
dnwgdi5mbGF0dGVufS5mbGF0dGVuCisgIGVuZAorICAKKyAgZGVmIGZsYXR0ZW4KKyAgICBbc2Vs
Zl0gKyBkZXNjZW5kYW50cworICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIodHlwZSkKKyAgICBmbGF0
dGVuLnNlbGVjdHt8dnwgdi5pc19hPyB0eXBlfQorICBlbmQKK2VuZAorCitjbGFzcyBOb0NoaWxk
cmVuIDwgTm9kZQorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW10KKyAgZW5kCisgIAorICBk
ZWYgbWFwQ2hpbGRyZW4KKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNl
dEtleQorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXpl
KHN0cnVjdCwgZmllbGQpCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxk
CisgIGVuZAorICAKKyAgZGVmIGhhc2gKKyAgICBAc3RydWN0Lmhhc2ggKyBAZmllbGQuaGFzaCAq
IDMKKyAgZW5kCisgIAorICBkZWYgZXFsPyhvdGhlcikKKyAgICBAc3RydWN0ID09IG90aGVyLnN0
cnVjdCBhbmQgQGZpZWxkID09IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisgICAgCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBBU1Qgbm9kZXMuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBTdHJ1Y3RPZmZzZXQgPCBOb0NoaWxkcmVuCisg
IGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3Qg
PSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9
CisgIAorICBkZWYgc2VsZi5mb3JGaWVsZChjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAg
IGtleSA9IFN0cnVjdE9mZnNldEtleS5uZXcoc3RydWN0LCBmaWVsZCkKKyAgICAKKyAgICB1bmxl
c3MgQEBtYXBwaW5nW2tleV0KKyAgICAgIEBAbWFwcGluZ1trZXldID0gU3RydWN0T2Zmc2V0Lm5l
dyhjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1trZXld
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tzdHJ1Y3R9Ojoje2ZpZWxkfSIKKyAgZW5k
CisgIAorICBkZWYgPD0+KG90aGVyKQorICAgIGlmIEBzdHJ1Y3QgIT0gb3RoZXIuc3RydWN0Cisg
ICAgICByZXR1cm4gQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgICAgZW5kCisgICAgQGZpZWxk
IDw9PiBvdGhlci5maWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YgPCBOb0NoaWxkcmVu
CisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IHN0cnVjdCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAg
ZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3Jp
Z2luLCBzdHJ1Y3QpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tzdHJ1Y3RdCisgICAgICBAQG1hcHBp
bmdbc3RydWN0XSA9IFNpemVvZi5uZXcoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIGVuZAorICAg
IEBAbWFwcGluZ1tzdHJ1Y3RdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAic2l6ZW9mICN7
QHN0cnVjdH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAgICBAc3RydWN0IDw9PiBv
dGhlci5zdHJ1Y3QKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlIDwgTm9DaGlsZHJlbgor
ICBhdHRyX3JlYWRlciA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZh
bHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIje3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYgPT0ob3RoZXIp
CisgICAgb3RoZXIuaXNfYT8gSW1tZWRpYXRlIGFuZCBvdGhlci52YWx1ZSA9PSBAdmFsdWUKKyAg
ZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxl
ZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSBy
aWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBl
bmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZEltbWVkaWF0ZXMubmV3KGNvZGVPcmln
aW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xh
c3MgU3ViSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAg
CisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbgorICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVm
dCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQu
ZHVtcH0gLSAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRl
cyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
bGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJl
bgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAg
IE11bEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmln
aHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKiAje3JpZ2h0
LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlIDwgTm9kZQorICBhdHRy
X3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBk
ZWYgY2hpbGRyZW4KKyAgICBbQGNoaWxkXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgor
ICAgIE5lZ0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiKC0je0BjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2Ns
YXNzIFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBz
ZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVd
CisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1l
KQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisg
IGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1l
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAg
QEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkK
KyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBGUFJl
Z2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25h
bWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNz
IFZhcmlhYmxlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBu
YW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5m
b3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAg
ICAgQEBtYXBwaW5nW25hbWVdID0gVmFyaWFibGUubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
ZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1l
CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNl
LCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBvZmZzZXQp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAb2Zmc2V0ID0g
b2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BiYXNlLCBAb2Zmc2V0XQor
ICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4s
ICh5aWVsZCBAYmFzZSksICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH1dIgorICBlbmQKK2VuZAorCitjbGFzcyBC
YXNlSW5kZXggPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6aW5kZXgsIDpzY2FsZSwgOm9m
ZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBA
aW5kZXggPSBpbmRleAorICAgIEBzY2FsZSA9IHNjYWxlCisgICAgcmFpc2UgdW5sZXNzIFsxLCAy
LCA0LCA4XS5tZW1iZXI/IEBzY2FsZQorICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAgZW5kCisgIAor
ICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBpbmRleCwgQG9mZnNldF0KKyAgZW5kCisgIAor
ICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBA
YmFzZSksICh5aWVsZCBAaW5kZXgpLCBAc2NhbGUsICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH0sICN7aW5kZXgu
ZHVtcH0sICN7c2NhbGV9XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzIDwg
Tm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6YWRkcmVzcworICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgYWRkcmVzcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBhZGRyZXNz
ID0gYWRkcmVzcworICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7YWRkcmVzcy5kdW1wfVtd
IgorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbiA8IE5vZGUKKyAgYXR0cl9yZWFkZXIg
Om9wY29kZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBvcGNv
ZGUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG9wY29kZSA9IG9wY29k
ZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisg
ICAgb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgSW5z
dHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0IiArIG9wY29kZS50b19zICsgIiAiICsgb3Bl
cmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCisgIGVuZAorZW5kCisKK2NsYXNz
IEVycm9yIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRlcnJvciIKKyAg
ZW5kCitlbmQKKworY2xhc3MgQ29uc3REZWNsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6dmFyaWFi
bGUsIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFyaWFibGUsIHZh
bHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhcmlhYmxlID0gdmFyaWFibGUKKyAg
ICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAdmFyaWFi
bGUsIEB2YWx1ZV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBDb25zdERlY2wu
bmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAdmFyaWFibGUpLCAoeWllbGQgQHZhbHVlKSkKKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgICJjb25zdCAje0B2YXJpYWJsZS5kdW1wfSA9ICN7QHZhbHVl
LmR1bXB9IgorICBlbmQKK2VuZAorCiskbGFiZWxNYXBwaW5nID0ge30KKworY2xhc3MgTGFiZWwg
PCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1l
CisgIGVuZAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlm
ICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjog
I3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTGFiZWwKKyAgICBlbHNl
CisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsIDwgTm9DaGls
ZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQK
KworICBAQHVuaXF1ZU5hbWVDb3VudGVyID0gMAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2Rl
T3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJM
YWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0u
aXNfYT8gTG9jYWxMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBM
b2NhbExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1hcHBp
bmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgc2VsZi51bmlxdWUKKyAgICB3aGlsZSAkbGFiZWxN
YXBwaW5nWyJfTCN7QEB1bmlxdWVOYW1lQ291bnRlcn0iXQorICAgICAgQEB1bmlxdWVOYW1lQ291
bnRlciArPSAxCisgICAgZW5kCisgICAgZm9yTmFtZShuaWwsICJfTCN7QEB1bmlxdWVOYW1lQ291
bnRlcn0iKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2Vu
ZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxhYmVsCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAg
W0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBMYWJlbFJlZmVyZW5j
ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUK
KyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisg
IGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UgPCBOb0NoaWxkcmVuCisgIGF0
dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisg
IGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
CisgICAgTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkp
CisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlIDwgTm9k
ZQorICBhdHRyX3JlYWRlciA6bGlzdAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bGlzdCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsaXN0ID0gbGlzdAorICBlbmQKKyAg
CisgIGRlZiBjaGlsZHJlbgorICAgIGxpc3QKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4o
JnByb2MpCisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIEBsaXN0Lm1hcCgmcHJvYykpCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsaXN0LmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigi
XG4iKQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlh
bGl6ZQorICAgIHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNlID0gVHJ1ZS5uZXcK
KyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRl
ZiB2YWx1ZQorICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJ0cnVlIgorICBl
bmQKK2VuZAorCitjbGFzcyBGYWxzZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAg
ICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IEZhbHNlLm5ldworICAKKyAg
ZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVmIHZhbHVl
CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJmYWxzZSIKKyAgZW5kCitl
bmQKKworY2xhc3MgVHJ1ZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBUcnVlLmluc3RhbmNlCisg
IGVuZAorZW5kCisKK2NsYXNzIEZhbHNlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAgIEZhbHNlLmlu
c3RhbmNlCisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcgPCBOb0NoaWxkcmVuCisgIGF0dHJf
cmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBw
aW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1
bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBTZXR0aW5nLm5l
dyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQgPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBs
ZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBb
QGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBbmQubmV3
KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gYW5kICN7cmlnaHQuZHVtcH0pIgorICBlbmQK
K2VuZAorCitjbGFzcyBPciA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAg
CisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbgorICAgIE9yLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQg
QHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IG9yICN7
cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBOb3QgPCBOb2RlCisgIGF0dHJfcmVh
ZGVyIDpjaGlsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAY2hpbGQgPSBjaGlsZAorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJl
bgorICAgIE5vdC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiKG5vdCAje2NoaWxkLmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3Mg
U2tpcCA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0c2tpcCIKKyAgZW5k
CitlbmQKKworY2xhc3MgSWZUaGVuRWxzZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnByZWRpY2F0
ZSwgOnRoZW5DYXNlCisgIGF0dHJfYWNjZXNzb3IgOmVsc2VDYXNlCisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHRoZW5DYXNlKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQHByZWRpY2F0ZSA9IHByZWRpY2F0ZQorICAgIEB0aGVuQ2FzZSA9IHRoZW5DYXNl
CisgICAgQGVsc2VDYXNlID0gU2tpcC5uZXcoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBpZiBAZWxzZUNhc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2Us
IEBlbHNlQ2FzZV0KKyAgICBlbHNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNlXQorICAg
IGVuZAorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIElmVGhlbkVsc2UubmV3KGNv
ZGVPcmlnaW4sICh5aWVsZCBAcHJlZGljYXRlKSwgKHlpZWxkIEB0aGVuQ2FzZSksICh5aWVsZCBA
ZWxzZUNhc2UpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImlmICN7cHJlZGljYXRlLmR1
bXB9XG4iICsgdGhlbkNhc2UuZHVtcCArICJcbmVsc2VcbiIgKyBlbHNlQ2FzZS5kdW1wICsgIlxu
ZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBNYWNybyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5h
bWUsIDp2YXJpYWJsZXMsIDpib2R5CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBu
YW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9
IG5hbWUKKyAgICBAdmFyaWFibGVzID0gdmFyaWFibGVzCisgICAgQGJvZHkgPSBib2R5CisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgQHZhcmlhYmxlcyArIFtAYm9keV0KKyAgZW5kCisg
IAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBNYWNyby5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEB2
YXJpYWJsZXMubWFwe3x2fCB5aWVsZCB2fSwgKHlpZWxkIEBib2R5KSkKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICJtYWNybyAje25hbWV9KCIgKyB2YXJpYWJsZXMuY29sbGVjdHt8dnwgdi5k
dW1wfS5qb2luKCIsICIpICsgIilcbiIgKyBib2R5LmR1bXAgKyAiXG5lbmQiCisgIGVuZAorZW5k
CisKK2NsYXNzIE1hY3JvQ2FsbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5hbWUsIDpvcGVyYW5k
cworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgICBAb3BlcmFuZHMgPSBvcGVy
YW5kcworICAgIHJhaXNlIHVubGVzcyBAb3BlcmFuZHMKKyAgICBAb3BlcmFuZHMuZWFjaHt8dnwg
cmFpc2UgdW5sZXNzIHZ9CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgQG9wZXJhbmRz
CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIE1hY3JvQ2FsbC5uZXco
Y29kZU9yaWdpbiwgQG5hbWUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgIlx0I3tuYW1lfSgiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5q
b2luKCIsICIpICsgIikiCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
ODAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFz
dCIKK3JlcXVpcmUgIng4NiIKKworQkFDS0VORFMgPQorICBbCisgICAiWDg2IiwKKyAgICJBUk12
NyIKKyAgXQorCitXT1JLSU5HX0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIKKyAgXQorCitCQUNL
RU5EX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoJyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsg
JylcXFonKQorCitjbGFzcyBOb2RlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIHNlbmQoImxvd2Vy
IiArIG5hbWUpCisgIGVuZAorZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBsb3dlcigpIGZvciB0aG9z
ZSBub2RlcyB0aGF0IGFyZSBiYWNrZW5kLWFnbm9zdGljCisKK2RlZiBzYW5pdGl6ZUxhYmVsTmFt
ZShuYW1lKQorICAjIFNvbWUgcGxhdGZvcm1zIGRvbid0IHdhbnQgdGhlIGxlYWRpbmcgIl8iLiBJ
ZiB3ZSBldmVyIHdhbnQgdG8gZG8gc29tZXRoaW5nCisgICMgYWJvdXQgdGhhdCwgaXQgd291bGQg
YmUgaGVyZS4KKyAgbmFtZQorZW5kCisKK2NsYXNzIExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQor
ICAgICRhc20ucHV0cyAiLmdsb2JsICN7c2FuaXRpemVMYWJlbE5hbWUoc2VsZi5uYW1lKX0iCisg
ICAgJGFzbS5wdXRzICIje3Nhbml0aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9OiIKKyAgZW5kCitl
bmQKKworY2xhc3MgTG9jYWxMYWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHMg
Il9fb2FfI3tzZWxmLm5hbWVbMS4uLTFdfToiCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAKKyAg
ZGVmIGxvd2VyKG5hbWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBsb3dl
cihuYW1lKQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUubG93
ZXIobmFtZSkKKyAgICB9CisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rv
ci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAK
KyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNrZW5kcyIK
K3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZXR0aW5ncyIK
K3JlcXVpcmUgInRyYW5zZm9ybSIKKworZGVmIGVtaXRNYWdpY051bWJlcgorICBPRkZTRVRfTUFH
SUNfTlVNQkVSUy5lYWNoIHsKKyAgICB8IG51bWJlciB8CisgICAgcHV0cyAiI3tudW1iZXJ9LCIK
KyAgfQorZW5kCisKK29yaWdpbmFsQVNUID0gcGFyc2UobGV4KCRzdGRpbi5yZWFkKSkKKworZW1p
dENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKG9yaWdpbmFsQVNUKSB7CisgIHwgc2V0dGluZ3MsIGFz
dCwgYmFja2VuZCwgaW5kZXggfAorICBvZmZzZXRzTGlzdCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zm
c2V0KS51bmlxLnNvcnQKKyAgc2l6ZXNMaXN0ID0gYXN0LmZpbHRlcihTaXplb2YpLnVuaXEuc29y
dAorICAKKyAgbGVuZ3RoID0gKE9GRlNFVF9NQUdJQ19OVU1CRVJTLnNpemUgKyAxKSAqICgxICsg
b2Zmc2V0c0xpc3Quc2l6ZSArIHNpemVzTGlzdC5zaXplKQorICAKKyAgcHV0cyAic3RhdGljIGNv
bnN0IHVuc2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICBlbWl0TWFnaWNO
dW1iZXIKKyAgcHV0cyAiI3tpbmRleH0sIgorICBvZmZzZXRzTGlzdC5lYWNoIHsKKyAgICB8IG9m
ZnNldCB8CisgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgcHV0cyAiT0ZGTElORV9BU01fT0ZGU0VU
T0YoI3tvZmZzZXQuc3RydWN0fSwgI3tvZmZzZXQuZmllbGR9KSwiCisgIH0KKyAgc2l6ZXNMaXN0
LmVhY2ggeworICAgIHwgb2Zmc2V0IHwKKyAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICBwdXRzICJz
aXplb2YoI3tvZmZzZXQuc3RydWN0fSksIgorICB9CisgIHB1dHMgIn07IgorfQorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rp
b25zLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworTUFDUk9fSU5TVFJVQ1RJT05TID0KKyAgWworICAgImFkZGki
LAorICAgImFuZGkiLAorICAgImxzaGlmdGkiLAorICAgIm11bGkiLAorICAgIm5lZ2kiLAorICAg
Im5vdGkiLAorICAgIm9yaSIsCisgICAicnNoaWZ0aSIsCisgICAidXJzaGlmdGkiLAorICAgInN1
YmkiLAorICAgInhvcmkiLAorICAgImxvYWRpIiwKKyAgICJsb2FkYiIsCisgICAibG9hZGgiLAor
ICAgInN0b3JlaSIsCisgICAic3RvcmViIiwKKyAgICJsb2FkZCIsCisgICAibW92ZWQiLAorICAg
InN0b3JlZCIsCisgICAiYWRkZCIsCisgICAiZGl2ZCIsCisgICAic3ViZCIsCisgICAibXVsZCIs
CisgICAic3FydGQiLAorICAgImNpMmQiLAorICAgImZpaTJkIiwgIyB1c2FnZTogZmlpMmQgPGdw
ciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2Fu
dCBiaXRzPiwgPGZwcj4KKyAgICJmZDJpaSIsICMgdXNhZ2U6IGZkMmlpIDxmcHI+LCA8Z3ByIHdp
dGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJp
dHM+CisgICAiYmRlcSIsCisgICAiYmRuZXEiLAorICAgImJkZ3QiLAorICAgImJkZ3RlcSIsCisg
ICAiYmRsdCIsCisgICAiYmRsdGVxIiwKKyAgICJiZGVxdW4iLAorICAgImJkbmVxdW4iLAorICAg
ImJkZ3R1biIsCisgICAiYmRndGVxdW4iLAorICAgImJkbHR1biIsCisgICAiYmRsdGVxdW4iLAor
ICAgImJ0ZDJpIiwKKyAgICJ0ZDJpIiwKKyAgICJiY2QyaSIsCisgICAibW92ZHoiLAorICAgInBv
cCIsCisgICAicHVzaCIsCisgICAibW92ZSIsCisgICAic3hpMnAiLAorICAgInp4aTJwIiwKKyAg
ICJub3AiLAorICAgImJpZXEiLAorICAgImJpbmVxIiwKKyAgICJiaWEiLAorICAgImJpYWVxIiwK
KyAgICJiaWIiLAorICAgImJpYmVxIiwKKyAgICJiaWd0IiwKKyAgICJiaWd0ZXEiLAorICAgImJp
bHQiLAorICAgImJpbHRlcSIsCisgICAiYmJlcSIsCisgICAiYmJuZXEiLAorICAgImJiYSIsCisg
ICAiYmJhZXEiLAorICAgImJiYiIsCisgICAiYmJiZXEiLAorICAgImJiZ3QiLAorICAgImJiZ3Rl
cSIsCisgICAiYmJsdCIsCisgICAiYmJsdGVxIiwKKyAgICJidGlvIiwKKyAgICJidGlzIiwKKyAg
ICJidGl6IiwKKyAgICJidGlueiIsCisgICAiYnRibyIsCisgICAiYnRicyIsCisgICAiYnRieiIs
CisgICAiYnRibnoiLAorICAgImptcCIsCisgICAiYmFkZGlvIiwKKyAgICJiYWRkaXMiLAorICAg
ImJhZGRpeiIsCisgICAiYmFkZGlueiIsCisgICAiYnN1YmlvIiwKKyAgICJic3ViaXMiLAorICAg
ImJzdWJpeiIsCisgICAiYnN1YmlueiIsCisgICAiYm11bGlvIiwKKyAgICJibXVsaXMiLAorICAg
ImJtdWxpeiIsCisgICAiYm11bGlueiIsCisgICAiYm9yaW8iLAorICAgImJvcmlzIiwKKyAgICJi
b3JpeiIsCisgICAiYm9yaW56IiwKKyAgICJicmVhayIsCisgICAiY2FsbCIsCisgICAicmV0IiwK
KyAgICJjaWVxIiwKKyAgICJjaW5lcSIsCisgICAiY2lhIiwKKyAgICJjaWFlcSIsCisgICAiY2li
IiwKKyAgICJjaWJlcSIsCisgICAiY2lndCIsCisgICAiY2lndGVxIiwKKyAgICJjaWx0IiwKKyAg
ICJjaWx0ZXEiLAorICAgInRpbyIsCisgICAidGlzIiwKKyAgICJ0aXoiLAorICAgInRpbnoiLAor
ICAgInRibyIsCisgICAidGJzIiwKKyAgICJ0YnoiLAorICAgInRibnoiLAorICAgInBlZWsiLAor
ICAgInBva2UiLAorICAgImJwZXEiLAorICAgImJwbmVxIiwKKyAgICJicGEiLAorICAgImJwYWVx
IiwKKyAgICJicGIiLAorICAgImJwYmVxIiwKKyAgICJicGd0IiwKKyAgICJicGd0ZXEiLAorICAg
ImJwbHQiLAorICAgImJwbHRlcSIsCisgICAiYWRkcCIsCisgICAiYW5kcCIsCisgICAib3JwIiwK
KyAgICJzdWJwIiwKKyAgICJ4b3JwIiwKKyAgICJsb2FkcCIsCisgICAiY3BlcSIsCisgICAiY3Bu
ZXEiLAorICAgImNwYSIsCisgICAiY3BhZXEiLAorICAgImNwYiIsCisgICAiY3BiZXEiLAorICAg
ImNwZ3QiLAorICAgImNwZ3RlcSIsCisgICAiY3BsdCIsCisgICAiY3BsdGVxIiwKKyAgICJzdG9y
ZXAiLAorICAgImJ0cG8iLAorICAgImJ0cHMiLAorICAgImJ0cHoiLAorICAgImJ0cG56IiwKKyAg
ICJiYWRkcG8iLAorICAgImJhZGRwcyIsCisgICAiYmFkZHB6IiwKKyAgICJiYWRkcG56IgorICBd
CisKK1g4Nl9JTlNUUlVDVElPTlMgPQorICBbCisgICAiY2RxaSIsCisgICAiaWRpdmkiCisgIF0K
KworSU5TVFJVQ1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05TICsgWDg2X0lOU1RSVUNUSU9OUwor
CitJTlNUUlVDVElPTl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgSU5TVFJVQ1RJT05T
LmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJi
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0
X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01BR0lDX05VTUJFUlMgPSBbIDB4
ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL29mZnNldHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vb2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU2IEBA
CisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCity
ZXF1aXJlICJvZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cyIKKworT0ZGU0VUX01BR0lDX05VTUJF
UlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBvZmZzZXRzTGlzdChhc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIHNpemVzTGlzdChhc3QpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBSZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCBzaXplcyB1c2VkIGJ5IHRoZSBB
U1QuICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
CitkZWYgb2Zmc2V0c0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5z
b3J0CitlbmQKKworZGVmIHNpemVzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlx
LnNvcnQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBvZmZzZXRz
QW5kQ29uZmlndXJhdGlvbkluZGV4KGFzdCwgZmlsZSkgLT4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjICAgICBbb2Zmc2V0cywgaW5kZXhdICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBQYXJzZXMgdGhlIG9m
ZnNldHMgZnJvbSBhIGZpbGUgYW5kIHJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHRoZSAj
CisjIGluZGV4IG9mIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgaXMgdmFsaWQgaW4gdGhpcyBidWls
ZCB0YXJnZXQuICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Rl
ZiBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUpCisgIGluZGV4ID0gbmlsCisgIG9m
ZnNldHMgPSBbXQorICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBuaWwKKyAgCisgIGRlZiByZWFk
SW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICBieXRlcyA9IFtdCisgICAgNC50aW1lcyB7CisgICAg
ICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQorICAgIH0KKyAgICAKKyAgICBpZiBlbmRpYW5uZXNzID09
IDpsaXR0bGUKKyAgICAgICMgTGl0dGxlIGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDAgfAor
ICAgICAgIGJ5dGVzWzFdIDw8IDggfAorICAgICAgIGJ5dGVzWzJdIDw8IDE2IHwKKyAgICAgICBi
eXRlc1szXSA8PCAyNCkKKyAgICBlbHNlCisgICAgICAjIEJpZyBlbmRpYW4KKyAgICAgIChieXRl
c1swXSA8PCAyNCB8CisgICAgICAgYnl0ZXNbMV0gPDwgMTYgfAorICAgICAgIGJ5dGVzWzJdIDw8
IDggfAorICAgICAgIGJ5dGVzWzNdIDw8IDApCisgICAgZW5kCisgIGVuZAorICAKKyAgWzpsaXR0
bGUsIDpiaWddLmVhY2ggeworICAgIHwgZW5kaWFubmVzcyB8CisgICAgbWFnaWNCeXRlcyA9IFtd
CisgICAgTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICAgIHwgbnVtYmVyIHwKKyAgICAgIGN1cnJl
bnRCeXRlcyA9IFtdCisgICAgICA0LnRpbWVzIHsKKyAgICAgICAgY3VycmVudEJ5dGVzIDw8IChu
dW1iZXIgJiAweGZmKQorICAgICAgICBudW1iZXIgPj49IDgKKyAgICAgIH0KKyAgICAgIGlmIGVu
ZGlhbm5lc3MgPT0gOmJpZworICAgICAgICBjdXJyZW50Qnl0ZXMucmV2ZXJzZSEKKyAgICAgIGVu
ZAorICAgICAgbWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0ZXMKKyAgICB9CisgICAgCisgICAgRmls
ZS5vcGVuKGZpbGUsICJyIikgeworICAgICAgfCBpbnAgfAorICAgICAgd2hlcmVJbk1hcmtlciA9
IDAKKyAgICAgIGxvb3AgeworICAgICAgICBieXRlID0gaW5wLmdldGJ5dGUKKyAgICAgICAgYnJl
YWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgaWYgYnl0ZSA9PSBtYWdpY0J5dGVzW3doZXJlSW5NYXJr
ZXJdCisgICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisgICAgICAgICAgaWYgd2hlcmVJbk1h
cmtlciA9PSBtYWdpY0J5dGVzLnNpemUKKyAgICAgICAgICAgICMgV2UgaGF2ZSBhIG1hdGNoISBJ
ZiB3ZSBoYXZlIG5vdCB5ZXQgcmVhZCB0aGUgZW5kaWFubmVzcyBtYXJrZXIgYW5kIGluZGV4LAor
ICAgICAgICAgICAgIyB0aGVuIHJlYWQgdGhvc2Ugbm93OyBvdGhlcndpc2UgcmVhZCBhbiBvZmZz
ZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIG5vdCBpbmRleAorICAgICAgICAgICAg
ICBpbmRleCA9IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICBvZmZzZXRzIDw8IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAg
ICAgZW5kCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAg
ICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAg
ICAgICBlbmQKKyAgICAgIH0KKyAgICB9CisgICAgCisgICAgYnJlYWsgaWYgaW5kZXgKKyAgfQor
ICAKKyAgcmFpc2UgdW5sZXNzIGluZGV4CisgIAorICBbb2Zmc2V0cywgaW5kZXhdCitlbmQKKwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgYnVpbGRPZmZzZXRzTWFwKGFzdCwg
b2Zmc2V0c0xpc3QpIC0+IFtvZmZzZXRzLCBzaXplc10gICAgICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIEJ1aWxkcyBhIG1hcHBpbmcgYmV0d2VlbiBTdHJ1Y3RPZmZzZXQgbm9kZXMg
YW5kIHRoZWlyIHZhbHVlcy4gICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisKK2RlZiBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkKKyAgb2Zmc2V0c01h
cCA9IHt9CisgIHNpemVzTWFwID0ge30KKyAgYXN0T2Zmc2V0c0xpc3QgPSBvZmZzZXRzTGlzdChh
c3QpCisgIGFzdFNpemVzTGlzdCA9IHNpemVzTGlzdChhc3QpCisgIHJhaXNlIHVubGVzcyBhc3RP
ZmZzZXRzTGlzdC5zaXplICsgYXN0U2l6ZXNMaXN0LnNpemUgPT0gb2Zmc2V0c0xpc3Quc2l6ZQor
ICBvZmZzZXRzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBzdHJ1Y3RPZmZzZXQs
IGluZGV4IHwKKyAgICBvZmZzZXRzTWFwW3N0cnVjdE9mZnNldF0gPSBvZmZzZXRzTGlzdC5zaGlm
dAorICB9CisgIHNpemVzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBzaXplb2Ys
IGluZGV4IHwKKyAgICBzaXplc01hcFtzaXplb2ZdID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQor
ICBbb2Zmc2V0c01hcCwgc2l6ZXNNYXBdCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OTEg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIK
K3JlcXVpcmUgImluc3RydWN0aW9ucyIKK3JlcXVpcmUgInJlZ2lzdGVycyIKKworY2xhc3MgVG9r
ZW4KKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4sIDpzdHJpbmcKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIHN0cmluZykKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAg
ICBAc3RyaW5nID0gc3RyaW5nCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIGlmIG90
aGVyLmlzX2E/IFRva2VuCisgICAgICBAc3RyaW5nID09IG90aGVyLnN0cmluZworICAgIGVsc2UK
KyAgICAgIEBzdHJpbmcgPT0gb3RoZXIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgPX4ob3Ro
ZXIpCisgICAgQHN0cmluZyA9fiBvdGhlcgorICBlbmQKKyAgCisgIGRlZiB0b19zCisgICAgIiN7
QHN0cmluZy5pbnNwZWN0fSBhdCBsaW5lICN7Y29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVm
IHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgIHJhaXNl
ICJQYXJzZSBlcnJvcjogI3t0b19zfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiUGFyc2UgZXJy
b3I6ICN7dG9fc306ICN7Y29tbWVudFswXX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBsZXhlci4gVGFrZXMgYSBzdHJpbmcg
YW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdG9rZW5zLiAgICAgICAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBsZXgoc3RyKQorICByZXN1bHQgPSBbXQorICBs
aW5lTnVtYmVyID0gMQorICB3aGlsZSBub3Qgc3RyLmVtcHR5PworICAgIGNhc2Ugc3RyCisgICAg
d2hlbiAvXEFcIyhbXlxuXSopLworICAgICAgIyBjb21tZW50LCBpZ25vcmUKKyAgICB3aGVuIC9c
QVxuLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICAgIGxp
bmVOdW1iZXIgKz0gMQorICAgIHdoZW4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKikvCisgICAg
ICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBXC4oW2Et
ekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQor
ICAgIHdoZW4gL1xBXyhbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXco
bGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEEoWyBcdF0rKS8KKyAgICAgICMgd2hpdGVzcGFj
ZSwgaWdub3JlCisgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSspLworICAgICAgcmVzdWx0IDw8
IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAgICB3aGVuIC9cQTAoWzAtN10r
KS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYub2N0LnRvX3MpCisg
ICAgd2hlbiAvXEEoWzAtOV0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJl
ciwgJCYpCisgICAgd2hlbiAvXEE6Oi8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51
bWJlciwgJCYpCisgICAgd2hlbiAvXEFbOixcKFwpXFtcXT1cK1wtKl0vCisgICAgICByZXN1bHQg
PDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJMZXhl
ciBlcnJvciBhdCBsaW5lIG51bWJlciAje2xpbmVOdW1iZXJ9LCB1bmV4cGVjdGVkIHNlcXVlbmNl
ICN7c3RyWzAuLjIwXS5pbnNwZWN0fSIKKyAgICBlbmQKKyAgICBzdHIgPSAkfi5wb3N0X21hdGNo
CisgIGVuZAorICByZXN1bHQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBUb2tlbiBpZGVudGlmaWNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitk
ZWYgaXNSZWdpc3Rlcih0b2tlbikKKyAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTgorZW5kCisK
K2RlZiBpc0luc3RydWN0aW9uKHRva2VuKQorICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJO
CitlbmQKKworZGVmIGlzS2V5d29yZCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBKCh0cnVlKXwoZmFs
c2UpfChpZil8KHRoZW4pfChlbHNlKXwoZWxzaWYpfChlbmQpfChhbmQpfChvcil8KG5vdCl8KG1h
Y3JvKXwoY29uc3QpfChzaXplb2YpfChlcnJvcikpXFovIG9yCisgICAgdG9rZW4gPX4gUkVHSVNU
RVJfUEFUVEVSTiBvcgorICAgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2VuZAorCitk
ZWYgaXNJZGVudGlmaWVyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbYS16QS1aXShbYS16QS1aMC05
X10qKVxaLyBhbmQgbm90IGlzS2V5d29yZCh0b2tlbikKK2VuZAorCitkZWYgaXNMYWJlbCh0b2tl
bikKKyAgdG9rZW4gPX4gL1xBXyhbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc0xvY2Fs
TGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQVwuKFthLXpBLVowLTlfXSopXFovCitlbmQKKwor
ZGVmIGlzVmFyaWFibGUodG9rZW4pCisgIGlzSWRlbnRpZmllcih0b2tlbikgb3IgaXNSZWdpc3Rl
cih0b2tlbikKK2VuZAorCitkZWYgaXNJbnRlZ2VyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbMC05
XS8KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgcGFyc2Vy
LiBUYWtlcyBhbiBhcnJheSBvZiB0b2tlbnMgYW5kIHJldHVybnMgYW4gQVNULiBNZXRob2RzICAg
ICAjCisjIG90aGVyIHRoYW4gcGFyc2UodG9rZW5zKSBhcmUgbm90IGZvciBwdWJsaWMgY29uc3Vt
cHRpb24uICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK
K2NsYXNzIFBhcnNlcgorICBkZWYgaW5pdGlhbGl6ZSh0b2tlbnMpCisgICAgQHRva2VucyA9IHRv
a2VucworICAgIEBpZHggPSAwCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQp
CisgICAgaWYgQHRva2Vuc1tAaWR4XQorICAgICAgQHRva2Vuc1tAaWR4XS5wYXJzZUVycm9yKCpj
b21tZW50KQorICAgIGVsc2UKKyAgICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICAgIHJhaXNl
ICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2Ug
IlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlOiAje2NvbW1lbnRbMF19IgorICAgICAgZW5kCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGNvbnN1bWUocmVnZXhwKQorICAgIGlmIHJlZ2V4cAor
ICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9fiByZWdleHAKKyAgICBlbHNl
CisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAaWR4ID09IEB0b2tlbnMubGVuZ3RoCisgICAgZW5k
CisgICAgQGlkeCArPSAxCisgIGVuZAorICAKKyAgZGVmIHNraXBOZXdMaW5lCisgICAgd2hpbGUg
QHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgZW5kCisg
IAorICBkZWYgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibm90
IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQor
ICAgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0
b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVs
c2lmIEB0b2tlbnNbQGlkeF0gPT0gInRydWUiCisgICAgICByZXN1bHQgPSBUcnVlLmluc3RhbmNl
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0g
PT0gImZhbHNlIgorICAgICAgcmVzdWx0ID0gRmFsc2UuaW5zdGFuY2UKKyAgICAgIEBpZHggKz0g
MQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAg
ICAgIHJlc3VsdCA9IFNldHRpbmcuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0
b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBl
bHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJl
ZGljYXRlQW5kCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgd2hpbGUgQHRv
a2Vuc1tAaWR4XSA9PSAiYW5kIgorICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmlnaHQg
PSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgIHJlc3VsdCA9IEFuZC5uZXcoY29kZU9yaWdpbiwg
cmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFy
c2VQcmVkaWNhdGUKKyAgICAjIHNvbWUgZXhhbXBsZXMgb2YgcHJlY2VkZW5jZToKKyAgICAjIG5v
dCBhIGFuZCBiIC0+IChub3QgYSkgYW5kIGIKKyAgICAjIGEgYW5kIGIgb3IgYyAtPiAoYSBhbmQg
Yikgb3IgYworICAgICMgYSBvciBiIGFuZCBjIC0+IGEgb3IgKGIgYW5kIGMpCisgICAgCisgICAg
cmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJv
ciIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBp
ZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVB
bmQKKyAgICAgIHJlc3VsdCA9IE9yLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAg
IGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVZhcmlhYmxlCisgICAgaWYg
aXNSZWdpc3RlcihAdG9rZW5zW0BpZHhdKQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9fiBGUFJf
UEFUVEVSTgorICAgICAgICByZXN1bHQgPSBGUFJlZ2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgZWxzZQorICAgICAg
ICByZXN1bHQgPSBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBA
dG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzSWRlbnRpZmllcihA
dG9rZW5zW0BpZHhdKQorICAgICAgcmVzdWx0ID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgIGVsc2UKKyAgICAgIHBh
cnNlRXJyb3IKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAor
ICBkZWYgcGFyc2VBZGRyZXNzKG9mZnNldCkKKyAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5z
W0BpZHhdID09ICJbIgorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4K
KyAgICAKKyAgICAjIFRocmVlIHBvc3NpYmlsaXRpZXM6CisgICAgIyBbXSAgICAgICAtPiBBYnNv
bHV0ZUFkZHJlc3MKKyAgICAjIFthXSAgICAgIC0+IEFkZHJlc3MKKyAgICAjIFthLGJdICAgIC0+
IEJhc2VJbmRleCB3aXRoIHNjYWxlID0gMQorICAgICMgW2EsYixjXSAgLT4gQmFzZUluZGV4Cisg
ICAgCisgICAgQGlkeCArPSAxCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIEBp
ZHggKz0gMQorICAgICAgcmV0dXJuIEFic29sdXRlQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgb2Zm
c2V0KQorICAgIGVuZAorICAgIGEgPSBwYXJzZVZhcmlhYmxlCisgICAgaWYgQHRva2Vuc1tAaWR4
XSA9PSAiXSIKKyAgICAgIHJlc3VsdCA9IEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIGEsIG9mZnNl
dCkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIs
IgorICAgICAgQGlkeCArPSAxCisgICAgICBiID0gcGFyc2VWYXJpYWJsZQorICAgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3Jp
Z2luLCBhLCBiLCAxLCBvZmZzZXQpCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJz
ZUVycm9yIHVubGVzcyBbIjEiLCAiMiIsICI0IiwgIjgiXS5tZW1iZXI/IEB0b2tlbnNbQGlkeF0u
c3RyaW5nCisgICAgICAgIGMgPSBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJdIgor
ICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIGMsIG9mZnNl
dCkKKyAgICAgIGVuZAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQK
KyAgCisgIGRlZiBwYXJzZUNvbG9uQ29sb24KKyAgICBza2lwTmV3TGluZQorICAgIGNvZGVPcmln
aW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lk
ZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgIG5hbWVzID0gW0B0b2tlbnNbQGlkeF0uc3RyaW5n
XQorICAgIEBpZHggKz0gMQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIjo6IgorICAgICAg
QGlkeCArPSAxCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tA
aWR4XQorICAgICAgbmFtZXMgPDwgQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgIEBpZHggKz0g
MQorICAgIGVuZAorICAgIHJhaXNlIGlmIG5hbWVzLmVtcHR5PworICAgIFtjb2RlT3JpZ2luLCBu
YW1lc10KKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHNraXBOZXdM
aW5lCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIEBpZHggKz0gMQorICAgICAg
TmVnSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCBwYXJzZUV4cHJl
c3Npb25BdG9tKQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICBAaWR4ICs9
IDEKKyAgICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAgcGFyc2VFcnJvciB1bmxl
c3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0Cisg
ICAgZWxzaWYgaXNJbnRlZ2VyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IEltbWVkaWF0
ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19p
KQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIg
QHRva2Vuc1tAaWR4XQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24K
KyAgICAgIGlmIG5hbWVzLnNpemUgPiAxCisgICAgICAgIFN0cnVjdE9mZnNldC5mb3JGaWVsZChj
b2RlT3JpZ2luLCBuYW1lc1swLi4tMl0uam9pbignOjonKSwgbmFtZXNbLTFdKQorICAgICAgZWxz
ZQorICAgICAgICBWYXJpYWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzWzBdKQorICAgICAg
ZW5kCisgICAgZWxzaWYgaXNSZWdpc3RlciBAdG9rZW5zW0BpZHhdCisgICAgICBwYXJzZVZhcmlh
YmxlCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIgorICAgICAgQGlkeCArPSAx
CisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAgU2l6ZW9m
LmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXMuam9pbignOjonKSkKKyAgICBlbHNlCisgICAgICBw
YXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbk11bAor
ICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHdo
aWxlIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIqIgor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gTXVsSW1tZWRpYXRlcy5uZXcoQHRv
a2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25BdG9tKQor
ICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0
CisgIGVuZAorICAKKyAgZGVmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgQHRva2Vuc1tAaWR4XSA9
PSAiLSIgb3IgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIiBvciBpc0ludGVnZXIoQHRva2Vuc1tA
aWR4XSkgb3IgaXNWYXJpYWJsZShAdG9rZW5zW0BpZHhdKQorICBlbmQKKyAgCisgIGRlZiBwYXJz
ZUV4cHJlc3Npb24KKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lv
bk11bAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0b2tlbnNbQGlkeF0gPT0g
Ii0iCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgcmVzdWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9y
aWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNpZiBAdG9rZW5zW0Bp
ZHhdID09ICItIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gU3ViSW1tZWRp
YXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJl
c3Npb25NdWwpCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQK
KyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1lbnQpCisgICAg
aWYgY291bGRCZUV4cHJlc3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRkcmVzcyhleHByKQorICAg
ICAgZWxzZQorICAgICAgICBleHByCisgICAgICBlbmQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICJbIgorICAgICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luLCAwKSkKKyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJl
c3VsdCA9IExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExhYmVs
LmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykp
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzTG9jYWxMYWJlbCBA
dG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAg
cmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50KQorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tpcE5ld0xpbmUKKyAgICBj
b25zdW1lKC9cQVwoXFovKQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAgbG9vcCB7CisgICAgICBz
a2lwTmV3TGluZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4
XSkKKyAgICAgICAgdmFyaWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4
XSA9PSAiLCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBh
cnNlRXJyb3IKKyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IKKyAg
ICAgIGVuZAorICAgIH0KKyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAorICBkZWYgcGFyc2VTZXF1
ZW5jZShmaW5hbCwgY29tbWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4KKyAgICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAgICAgIGlmIChAaWR4ID09
IEB0b2tlbnMubGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4
XSA9fiBmaW5hbCkKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0g
IlxuIgorICAgICAgICAjIGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0
b2tlbnNbQGlkeF0gPT0gImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgaXNWYXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAgICAgIHZhcmlhYmxlID0g
VmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0u
c3RyaW5nKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRv
a2Vuc1tAaWR4XSA9PSAiPSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhbHVlID0gcGFy
c2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5uYW1lfSIpCisgICAg
ICAgIGxpc3QgPDwgQ29uc3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIHZhcmlh
YmxlLCB2YWx1ZSkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImVycm9yIgorICAgICAg
ICBsaXN0IDw8IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4pCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAgICAgIGNvZGVP
cmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIHNraXBOZXdMaW5lCisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAg
ICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAg
ICAgICAgaWZUaGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwg
cGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRl
IG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBsaXN0IDw8IGlmVGhlbkVs
c2UKKyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisgICAgICAgICAgY29k
ZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNh
dGUKKyAgICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgICAgc2tp
cE5ld0xpbmUKKyAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4s
IHByZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAi
d2hpbGUgaW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICAgIGlm
VGhlbkVsc2UuZWxzZUNhc2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlmVGhlbkVsc2UgPSBlbHNl
Q2FzZQorICAgICAgICBlbmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiZWxzZSIKKyAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gcGFyc2VT
ZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNlIGZvciBcImlmICN7
cHJlZGljYXRlLmR1bXB9XCIiKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisg
ICAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiZW5kIgorICAgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0g
Im1hY3JvIgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwYXJzZUVycm9y
IHVubGVzcyBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgbmFtZSA9IEB0b2tl
bnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YXJpYWJsZXMgPSBw
YXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxa
LywgIndoaWxlIGluc2lkZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIGxpc3QgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9k
eSkKKyAgICAgIGVsc2lmIGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2Rl
T3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5z
W0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgKG5vdCBmaW5hbCBh
bmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBm
aW5hbCkKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5kIGl0J3MgdGhl
IGxhc3Qgb25lLgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4s
IG5hbWUsIFtdKQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0g
PT0gIlxuIgorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLgorICAgICAgICAg
IGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBJdCdzIGRlZmluaXRlbHkgYW4g
aW5zdHJ1Y3Rpb24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJhbmQuCisgICAgICAgICAg
b3BlcmFuZHMgPSBbXQorICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxzZQorICAgICAgICAg
IGxvb3AgeworICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNp
ZGUgb2YgaW5zdHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICBpZiAobm90IGZpbmFsIGFu
ZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZp
bmFsKQorICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uIGFuZCBvZiB0
aGUgc2VxdWVuY2UuCisgICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSB0cnVlCisgICAgICAg
ICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAg
ICAgICAgICAgICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgICAg
ICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBwYXJz
ZUVycm9yKCJFeHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFsfSBhZnRlciAje29w
ZXJhbmRzLmxhc3QuZHVtcH0iKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgfQorICAgICAg
ICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQor
ICAgICAgICAgIGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAg
ZW5kCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0K
KyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBu
YW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlm
IEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICAgICAgIyBNYWNybyBpbnZvY2F0aW9uLgorICAg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBza2lw
TmV3TGluZQorICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8i
CisgICAgICAgICAgICAgICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQorICAgICAgICAgICAgICAg
IGNvZGVPcmlnaW5Jbm5lciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJp
YWJsZXMKKyAgICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3
aGlsZSBpbnNpZGUgb2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1bWVudCB0byAje25h
bWV9IikKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBvcGVyYW5k
cyA8PCBNYWNyby5uZXcoY29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlhYmxlcywgYm9keSkKKyAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFu
ZCgid2hpbGUgaW5zaWRlIG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAg
IGVuZAorICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5z
W0BpZHhdID09ICIpIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBw
YXJzZUVycm9yICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5zcGVjdH0gd2hp
bGUgcGFyc2luZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAgICAgICAgIGVu
ZAorICAgICAgICAgICAgfQorICAgICAgICAgIGVuZAorICAgICAgICAgIGxpc3QgPDwgTWFjcm9D
YWxsLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgZWxzZQorICAgICAg
ICAgIHBhcnNlRXJyb3IgIkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFtZX0iCisgICAgICAgIGVu
ZAorICAgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlzTG9jYWxMYWJlbCBAdG9r
ZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4K
KyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI6IgorICAgICAgICAj
IEl0J3MgYSBsYWJlbC4KKyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAgICAgbGlzdCA8
PCBMYWJlbC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICBsaXN0IDw8IExvY2FsTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBl
bmQKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgIkV4
cGVjdGluZyB0ZXJtaW5hbCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAgICAgZW5kCisgICAgfQor
ICAgIFNlcXVlbmNlLm5ldyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisgIGVuZAorZW5kCisKK2Rl
ZiBwYXJzZSh0b2tlbnMpCisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9rZW5zKQorICBwYXJzZXIu
cGFyc2VTZXF1ZW5jZShuaWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK0dQUlMgPQor
ICBbCisgICAidDAiLAorICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMiLAorICAgInQ0IiwKKyAg
ICJjZnIiLAorICAgImEwIiwKKyAgICJhMSIsCisgICAicjAiLAorICAgInIxIiwKKyAgICJzcCIK
KyAgXQorCitGUFJTID0KKyAgWworICAgImZ0MCIsCisgICAiZnQxIiwKKyAgICJmdDIiLAorICAg
ImZ0MyIsCisgICAiZnQ0IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisgICAiZmExIiwKKyAgICJm
YTIiLAorICAgImZhMyIsCisgICAiZnIiCisgIF0KKworUkVHSVNURVJTID0gR1BSUyArIEZQUlMK
KworR1BSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJTLmpvaW4oJyl8KCcpICsg
JykpXFxaJykKK0ZQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgRlBSUy5qb2luKCcp
fCgnKSArICcpKVxcWicpCisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcg
KyBSRUdJU1RFUlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyMjEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVp
cmUgImFzdCIKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAi
dHJhbnNmb3JtIgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBjb21wdXRl
U2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25zICAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkgb2Ygc2V0dGluZ3Mg
bWFwcywgd2hlcmUgYSBzZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMgIworIyBhIGNvbmZpZ3VyYXRp
b24gZm9yIHRoZSBhc3NlbWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIG1hcCAgICAgICAj
CisjIGNvbnRhaW5zIGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBzZXR0aW5ncyBuYW1l
cyAoc3RyaW5ncykgYW5kICMKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVhbnMgKHRydWUgZm9yIGVu
YWJsZWQsIGZhbHNlIGZvciBkaXNhYmxlZCkuICAgICAgIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKworZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIHNl
dHRpbmdzQ29tYmluYXRpb25zID0gW10KKyAgCisgIGRlZiBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0
dGluZ3NDb21iaW5hdGlvbnMsIG1hcFNvRmFyLCByZW1haW5pbmcpCisgICAgaWYgcmVtYWluaW5n
LmVtcHR5PworICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFwU29GYXIKKyAgICAgIHJl
dHVybgorICAgIGVuZAorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01h
cFtyZW1haW5pbmdbMF1dID0gdHJ1ZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0Nv
bWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICAgIAorICAgIG5ld01hcCA9
IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gZmFsc2UKKyAgICBzZXR0
aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEu
Li0xXSkKKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlv
bnMsIHt9LCAoYXN0LmZpbHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7fHZ8IHYubmFtZX0gKyBb
Ilg4NiIsICJBUk12NyJdKS51bmlxKQorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMKK2VuZAor
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JTZXR0aW5ncyhjb25jcmV0
ZVNldHRpbmdzLCBhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwgLi4uIH0gICAgICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBEZXRlcm1pbmVzIGlmIHRoZSBzZXR0aW5n
cyBjb21iaW5hdGlvbiBpcyB2YWxpZCwgYW5kIGlmIHNvLCBjYWxscyAgICAjCisjIHRoZSBibG9j
ayB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBjb2RlLiAgICAgICAg
ICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JTZXR0aW5n
cyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0
aGlzIGNvbWJpbmF0b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWltZWRCYWNrZW5kcyA9
IDAKKyAgc2VsZWN0ZWRCYWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2ggeworICAgIHwgYmFj
a2VuZCB8CisgICAgaXNTdXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2JhY2tlbmRdCisgICAg
cmFpc2UgdW5sZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWltZWRCYWNrZW5kcyAr
PSBpZiBpc1N1cHBvcnRlZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlzU3VwcG9ydGVkCisg
ICAgICBzZWxlY3RlZEJhY2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0KKyAgCisgIHJldHVy
biBpZiBudW1DbGFpbWVkQmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUgdGhlIEFTVCBkb3du
IHRvIGEgbG93LWxldmVsIGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25hbHMpLgorICBsb3dM
ZXZlbEFTVCA9IGFzdC5yZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIHlp
ZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJhY2tlbmQKK2VuZAor
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0aW5n
c0NvbWJpbmF0aW9uKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJp
bmF0aW9uKGFzdCwgc2V0dGluZ3NDb21iaW5hdGlvbnMpIHsgICAgICAgICAjCisjICAgICB8IGNv
bmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAgICAg
ICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyBFeGVjdXRlcyB0aGUgZ2l2ZW4gYmxvY2sgZm9yIGVh
Y2ggdmFsaWQgc2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlICAjCisjIHNldHRpbmdzIG1hcC4g
VGhlIGFzdCBwYXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQgICAgICAgICAgICAgICMK
KyMgKGFzdC5yZXNvbHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBmaXJzdCBmb3JtIHdpbGwg
Y2FsbCBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSBmb3IgeW91LiAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JFYWNoVmFsaWRTZXR0aW5nc0Nv
bWJpbmF0aW9uKGFzdCwgKm9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMpCisgIHJhaXNlIGlm
IG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEKKyAgCisgIGlmIG9wdGlvbmFs
U2V0dGluZ3NDb21iaW5hdGlvbnMuZW1wdHk/CisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBj
b21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBlbHNlCisgICAgc2V0dGluZ3NDb21i
aW5hdGlvbnMgPSBvcHRpb25hbFNldHRpbmdzQ29tYmlhdGlvbnNbMF0KKyAgZW5kCisgIAorICBz
ZXR0aW5nc0NvbWJpbmF0aW9ucy5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgY29uY3JldGVTZXR0
aW5ncywgaW5kZXggfAorICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgewor
ICAgICAgfCBjb25jcmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgICAg
eWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAg
fQorICB9CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgY3BwU2V0
dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIFJldHVybnMgdGhlIEMrKyBjb2RlIHVzZWQgdG8g
dGVzdCBpZiB3ZSBhcmUgaW4gYSBjb25maWd1cmF0aW9uIHRoYXQgICMKKyMgY29ycmVzcG9uZHMg
dG8gdGhlIGdpdmVuIGNvbmNyZXRlIHNldHRpbmdzLiAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGNwcFNldHRpbmdzVGVz
dChjb25jcmV0ZVNldHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdzLnRvX2EuY29s
bGVjdHsKKyAgICB8IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisgICAgICAgIiIKKyAgICAgZWxz
ZQorICAgICAgICIhIgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIgKyBwYWlyWzBdCisgIH0u
am9pbigiICYmICIpCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
aXNBU1RFcnJvbmVvdXMoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRlc3RzIHRvIHNlZSBpZiB0aGUgQVNU
IGNsYWltcyB0aGF0IHRoZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUgICMKKyMgdXNlcidz
IGNvZGUsIGFmdGVyIHNldHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4gICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGlzQVNURXJy
b25lb3VzKGFzdCkKKyAgbm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5PworZW5kCisKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3Jl
dGVTZXR0aW5ncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBFbWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBn
aXZlbiBjb25maWd1cmF0aW9uLiAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
CitkZWYgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICBwdXRzIGNwcFNl
dHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICBwdXRzICIjZWxzZSIKKyAgcHV0cyAiI2Vy
cm9yIFwiQ29uZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAgcHV0cyAiI2VuZGlmIgorZW5kCisK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGVtaXRDb2RlSW5Db25maWd1cmF0
aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkgeyAgICAgICAgICAgICMKKyMgICAg
IHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4uIH0gICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEVtaXRzIGFsbCByZWxldmFudCBndWFyZHMg
dG8gc2VlIGlmIHRoZSBjb25maWd1cmF0aW9uIGhvbGRzIGFuZCAgICAgICMKKyMgY2FsbHMgdGhl
IGJsb2NrIGlmIHRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBlcnJvbmVvdXMuICAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGVtaXRDb2RlSW5D
b25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkKKyAgcHV0cyBjcHBT
ZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIGlmIGlzQVNURXJyb25lb3VzKGFz
dCkKKyAgICBwdXRzICIjZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uXCIiCisgIGVsc2lm
IG5vdCBXT1JLSU5HX0JBQ0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICBwdXRzICIjZXJyb3Ig
XCJUaGlzIGJhY2tlbmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UKKyAgICB5aWVs
ZCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICBwdXRzICIjZW5k
aWYiCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZW1pdENvZGVJ
bkFsbENvbmZpZ3VyYXRpb25zKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4u
IH0gICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRW1pdHMgZ3VhcmQgY29k
ZXMgZm9yIGFsbCB2YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxzIHRoZSBibG9jayAgIwor
IyBmb3IgdGhvc2UgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5kIG5vdCBlcnJvbmVv
dXMuICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYg
ZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkKKyAgZm9yRWFjaFZhbGlkU2V0dGluZ3ND
b21iaW5hdGlvbihhc3QpIHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBi
YWNrZW5kLCBpbmRleCB8CisgICAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5n
cykKKyAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5k
ZXgKKyAgICBwdXRzICIjZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzNTIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K3JlcXVpcmUgImFzdCIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9k
ZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBk
b2VzIG5vdCBoYXZlIGFueSBJZlRoZW5FbHNlIG5vZGVzIGJ5ICAgICAgICMKKyMgc3Vic3RpdHV0
aW5nIGNvbmNyZXRlIGJvb2xlYW4gdmFsdWVzIGZvciBlYWNoIFNldHRpbmcuICAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBk
ZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwg
Y2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIH0KKyAg
ZW5kCitlbmQKKworY2xhc3MgVHJ1ZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQor
ICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcKKyAgZGVm
IHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZXR0aW5nc1tAbmFtZV0uYXNOb2RlCisg
IGVuZAorZW5kCisKK2NsYXNzIEFuZAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQor
ICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIGFuZCBAcmlnaHQucmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNz
IE9yCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgb3IgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBOb3QKKyAgZGVmIHJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyAgICAobm90IEBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZQorICBkZWYg
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGlmIEBwcmVkaWNhdGUucmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKS52YWx1ZQorICAgICAgQHRoZW5DYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykKKyAgICBlbHNlCisgICAgICBAZWxzZUNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdz
KQorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgcmVzb2x2ZVNl
dHRpbmdzKHNldHRpbmdzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAg
ICAgfCBpdGVtIHwKKyAgICAgIGl0ZW0gPSBpdGVtLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykK
KyAgICAgIGlmIGl0ZW0uaXNfYT8gU2VxdWVuY2UKKyAgICAgICAgbmV3TGlzdCArPSBpdGVtLmxp
c3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtCisgICAgICBlbmQKKyAgICB9
CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisgIGVuZAorZW5kCisKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUuZGVtYWNyb2lmeShtYWNyb3Mp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5z
dWJzdGl0dXRlKG1hcHBpbmcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIGRlbWFjcm9pZnkoKSBjb25zdHJ1Y3RzIGEgbmV3
IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IE1hY3JvICAgICAgICMKKyMgbm9kZXMsIHdoaWxl
IHN1YnN0aXR1dGUoKSByZXBsYWNlcyBWYXJpYWJsZSBub2RlcyB3aXRoIHRoZSBnaXZlbiAgICAg
IworIyBub2RlcyBpbiB0aGUgbWFwcGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitj
bGFzcyBOb2RlCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBtYXBDaGlsZHJlbiB7Cisg
ICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLmRlbWFjcm9pZnkobWFjcm9zKQorICAgIH0KKyAg
ZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAg
ICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIH0KKyAg
ZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIG1hcENoaWxkcmVu
IHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5n
KQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8KKyAgZGVmIHN1YnN0aXR1dGUobWFw
cGluZykKKyAgICBteU1hcHBpbmcgPSB7fQorICAgIG1hcHBpbmcuZWFjaF9wYWlyIHsKKyAgICAg
IHwga2V5LCB2YWx1ZSB8CisgICAgICB1bmxlc3MgQHZhcmlhYmxlcy5pbmNsdWRlPyBrZXkKKyAg
ICAgICAgbXlNYXBwaW5nW2tleV0gPSB2YWx1ZQorICAgICAgZW5kCisgICAgfQorICAgIG1hcENo
aWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShteU1hcHBp
bmcpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZQorICBkZWYgc3Vic3RpdHV0
ZShtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2VsZl0KKyAg
ICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFi
ZWwKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZd
CisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBl
bmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgc3Vic3RpdHV0ZShjb25zdGFudHMpCisg
ICAgbmV3TGlzdCA9IFtdCisgICAgbXlDb25zdGFudHMgPSBjb25zdGFudHMuZHVwCisgICAgQGxp
c3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBDb25zdERlY2wK
KyAgICAgICAgbXlDb25zdGFudHNbaXRlbS52YXJpYWJsZV0gPSBpdGVtLnZhbHVlLnN1YnN0aXR1
dGUobXlDb25zdGFudHMpCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5zdWJz
dGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhj
b2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKKyAgCisgIGRlZiByZW5hbWVMYWJlbHMKKyAgICBt
YXBwaW5nID0ge30KKyAgICAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAg
ICBpZiBpdGVtLmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAgbWFwcGluZ1tpdGVtXSA9IExvY2Fs
TGFiZWwudW5pcXVlCisgICAgICBlbmQKKyAgICB9CisgICAgCisgICAgc3Vic3RpdHV0ZUxhYmVs
cyhtYXBwaW5nKQorICBlbmQKKyAgCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBteU1h
Y3JvcyA9IG1hY3Jvcy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAg
ICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBpdGVt
CisgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7Cisg
ICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICAjIElnbm9y
ZS4KKyAgICAgIGVsc2lmIGl0ZW0uaXNfYT8gTWFjcm9DYWxsCisgICAgICAgIG1hcHBpbmcgPSB7
fQorICAgICAgICBteU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisgICAgICAgIHJhaXNlICJDb3Vs
ZCBub3QgZmluZCBtYWNybyAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9
IiB1bmxlc3MgbXlNYWNyb3NbaXRlbS5uYW1lXQorICAgICAgICByYWlzZSAiQXJndW1lbnQgY291
bnQgbWlzbWF0Y2ggZm9yIGNhbGwgdG8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2lu
U3RyaW5nfSIgdW5sZXNzIGl0ZW0ub3BlcmFuZHMuc2l6ZSA9PSBteU1hY3Jvc1tpdGVtLm5hbWVd
LnZhcmlhYmxlcy5zaXplCisgICAgICAgIGl0ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7CisgICAg
ICAgICAgfCBpZHggfAorICAgICAgICAgIGlmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBWYXJp
YWJsZSBhbmQgbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAgICBt
eU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBteU1h
Y3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNy
b3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2lm
IGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBNYWNybworICAgICAgICAgICAgbXlNeU1hY3Jvc1tt
eU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5kc1tp
ZHhdCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lk
eF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBteU15TWFjcm9zW215
TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gbmlsCisgICAgICAgICAgICBtYXBw
aW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gaXRlbS5vcGVyYW5kc1tp
ZHhdCisgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCArPSBteU1hY3Jv
c1tpdGVtLm5hbWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNy
b3MpLnJlbmFtZUxhYmVscy5saXN0CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRl
bS5kZW1hY3JvaWZ5KG15TWFjcm9zKQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5l
dyhjb2RlT3JpZ2luLCBuZXdMaXN0KS5zdWJzdGl0dXRlKHt9KQorICBlbmQKK2VuZAorCisjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnJlc29sdmVPZmZzZXRzKG9mZnNl
dHMsIHNpemVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGhhcyBvZmZzZXQgdmFsdWVzIGluc3Rl
YWQgb2Ygc3ltYm9saWMgICAgICAgIworIyBvZmZzZXRzLiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZz
ZXRzLCBzaXplcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNo
aWxkLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIH0KKyAgZW5kCitlbmQKKwor
Y2xhc3MgU3RydWN0T2Zmc2V0CisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykK
KyAgICBpZiBvZmZzZXRzW3NlbGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIG9m
ZnNldHNbc2VsZl0pCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAor
CitjbGFzcyBTaXplb2YKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAg
IGlmIHNpemVzW3NlbGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIHNpemVzW3Nl
bGZdKQorICAgIGVsc2UKKyAgICAgIHB1dHMgIkNvdWxkIG5vdCBmaW5kICN7c2VsZi5pbnNwZWN0
fSBpbiAje3NpemVzLmtleXMuaW5zcGVjdH0iCisgICAgICBwdXRzICJzaXplcyA9ICN7c2l6ZXMu
aW5zcGVjdH0iCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUuZm9sZCAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyBSZXNvbHZlIGNvbnN0YW50IHJlZmVyZW5jZXMgYW5kIGNvbXB1dGUgYXJpdGhtZXRpYyBleHBy
ZXNzaW9ucy4gICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFz
cyBOb2RlCisgIGRlZiBmb2xkCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8Cisg
ICAgICBjaGlsZC5mb2xkCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVz
CisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0
LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAg
cmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUu
bmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICsgQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAor
CitjbGFzcyBTdWJJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xk
CisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQu
aXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1l
ZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlIC0gQHJpZ2h0
LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisg
ICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1
cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5s
ZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4s
IEBsZWZ0LnZhbHVlICogQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBOZWdJbW1l
ZGlhdGUKKyAgZGVmIGZvbGQKKyAgICBAY2hpbGQgPSBAY2hpbGQuZm9sZAorICAgIHJldHVybiBz
ZWxmIHVubGVzcyBAY2hpbGQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2Rl
T3JpZ2luLCAtQGNoaWxkLnZhbHVlKQorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBub2RlLnJlc29sdmVBZnRlclNldHRpbmdzKG9mZnNldHMsIHNpemVz
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29tcGls
ZSBhc3NlbWJseSBhZ2FpbnN0IGEgc2V0IG9mIG9mZnNldHMuICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQor
ICBkZWYgcmVzb2x2ZShvZmZzZXRzLCBzaXplcykKKyAgICBkZW1hY3JvaWZ5KHt9KS5yZXNvbHZl
T2Zmc2V0cyhvZmZzZXRzLCBzaXplcykuZm9sZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2
OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgUmVnaXN0
ZXJJRAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0
MCIsICJhMCIsICJyMCIsICJ0MSIsICJhMSIsICJyMSIsICJ0MiIsICJ0MyIKKyAgICAgIHRydWUK
KyAgICB3aGVuICJ0NCIsICJjZnIiCisgICAgICBmYWxzZQorICAgIGVsc2UKKyAgICAgIHJhaXNl
CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICBjYXNlIG5h
bWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hl
biA6Ynl0ZQorICAgICAgICAiJWFsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWF4Igor
ICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWF4IgorICAgICAgZWxzZQorICAgICAgICByYWlz
ZQorICAgICAgZW5kCisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAgICBjYXNlIGtpbmQK
KyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAg
ICAgIiVkeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkeCIKKyAgICAgIGVsc2UKKyAg
ICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQyIgorICAgICAgY2FzZSBraW5kCisg
ICAgICB3aGVuIDpieXRlCisgICAgICAgICIlY2wiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAg
ICIlY3giCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlY3giCisgICAgICBlbHNlCisgICAg
ICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MyIKKyAgICAgIGNhc2Uga2luZAorICAg
ICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWJsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAi
JWJ4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWJ4IgorICAgICAgZWxzZQorICAgICAg
ICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDQiCisgICAgICBjYXNlIGtpbmQKKyAgICAg
IHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIl
c2kiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlc2kiCisgICAgICBlbHNlCisgICAgICAg
IHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJjZnIiCisgICAgICBjYXNlIGtpbmQKKyAgICAg
IHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIl
ZGkiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlZGkiCisgICAgICBlbHNlCisgICAgICAg
IHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJzcCIKKyAgICAgIGNhc2Uga2luZAorICAgICAg
d2hlbiA6Ynl0ZQorICAgICAgICAiJXNwbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVz
cCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzcCIKKyAgICAgIGVsc2UKKyAgICAgICAg
cmFpc2UKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAor
ICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisg
IGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgeDg2T3BlcmFuZChraW5kKQor
ICAgIHJhaXNlIHVubGVzcyBraW5kID09IDpkb3VibGUKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVu
ICJmdDAiLCAiZmEwIiwgImZyIgorICAgICAgIiV4bW0wIgorICAgIHdoZW4gImZ0MSIsICJmYTEi
CisgICAgICAiJXhtbTEiCisgICAgd2hlbiAiZnQyIiwgImZhMiIKKyAgICAgICIleG1tMiIKKyAg
ICB3aGVuICJmdDMiLCAiZmEzIgorICAgICAgIiV4bW0zIgorICAgIHdoZW4gImZ0NCIKKyAgICAg
ICIleG1tNCIKKyAgICB3aGVuICJmdDUiCisgICAgICAiJXhtbTUiCisgICAgZWxzZQorICAgICAg
cmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIq
I3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRl
ZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiQje3ZhbHVlfSIKKyAgZW5kCisgIGRlZiB4ODZDYWxs
T3BlcmFuZChraW5kKQorICAgICIje3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVz
cworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYg
eDg2T3BlcmFuZChraW5kKQorICAgICIje29mZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQo
OmludCl9KSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZP
cGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBzdXBw
b3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtp
bmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0sICN7aW5k
ZXgueDg2T3BlcmFuZCg6aW50KX0sICN7c2NhbGV9KSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxP
cGVyYW5kKGtpbmQpCisgICAgIioje3g4Nm9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitj
bGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQor
ICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3thZGRyZXNzLnZhbHVl
fSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje2FkZHJlc3Mu
dmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2TGFi
ZWwKKyAgICBzYW5pdGl6ZUxhYmVsTmFtZShuYW1lKQorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVy
YW5kKGtpbmQpCisgICAgeDg2TGFiZWwKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJl
ZmVyZW5jZQorICBkZWYgeDg2TGFiZWwKKyAgICAiX19vYV8iK25hbWVbMS4uLTFdCisgIGVuZAor
ICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICB4ODZMYWJlbAorICBlbmQKK2VuZAorCitj
bGFzcyBJbnN0cnVjdGlvbgorICBkZWYgeDg2T3BlcmFuZHMoKmtpbmRzKQorICAgIHJhaXNlIHVu
bGVzcyBraW5kcy5zaXplID09IG9wZXJhbmRzLnNpemUKKyAgICByZXN1bHQgPSBbXQorICAgIGtp
bmRzLnNpemUudGltZXMgeworICAgICAgfCBpZHggfAorICAgICAgcmVzdWx0IDw8IG9wZXJhbmRz
W2lkeF0ueDg2T3BlcmFuZChraW5kc1tpZHhdKQorICAgIH0KKyAgICByZXN1bHQuam9pbigiLCAi
KQorICBlbmQKKworICBkZWYgeDg2U3VmZml4KGtpbmQpCisgICAgY2FzZSBraW5kCisgICAgd2hl
biA6Ynl0ZQorICAgICAgImIiCisgICAgd2hlbiA6aGFsZgorICAgICAgInciCisgICAgd2hlbiA6
aW50CisgICAgICAibCIKKyAgICB3aGVuIDpkb3VibGUKKyAgICAgICJzZCIKKyAgICBlbHNlCisg
ICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcFdpdGhOdW1P
cGVyYW5kcyhvcGNvZGUsIGtpbmQsIG51bU9wZXJhbmRzKQorICAgIGlmIG51bU9wZXJhbmRzID09
IDMKKyAgICAgIGlmIG9wZXJhbmRzWzBdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0
cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5k
c1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRzWzFdID09IG9wZXJh
bmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVs
c2UKKyAgICAgICAgJGFzbS5wdXRzICJcdG1vdiN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9Igor
ICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChr
aW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBl
bHNlCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wKG9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdp
dGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUpCisgIGVuZAorICAKKyAg
ZGVmIGhhbmRsZVg4NlNoaWZ0KG9wY29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5kc1swXS5pc19h
PyBJbW1lZGlhdGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0ZXJJRC5mb3JOYW1lKG5pbCwgInQy
IikKKyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzZQorICAg
ICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVl
Y3giCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICVjbCwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVY
ODZEb3VibGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAgIGNhc2UgbW9kZQorICAgIHdo
ZW4gOm5vcm1hbAorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAg
ICB3aGVuIDpyZXZlcnNlCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
IgorICAgIGVsc2UKKyAgICAgIHJhaXNlIG1vZGUuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20u
cHV0cyAiXHRqbmUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhh
bmRsZVg4NkludENvbXBhcmUob3Bjb2RlU3VmZml4LCBraW5kKQorICAgIGlmIG9wZXJhbmRzWzBd
LmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMF0udmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNb
MV0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3Vm
Zml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2lmIG9wZXJhbmRzWzFdLmlz
X2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNbMF0u
aXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3VmZml4
ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAi
XHRjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgaGFuZGxlWDg2SW50QnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZJ
bnRDb21wYXJlKGJyYW5jaE9wY29kZVsxLi4tMV0sIGtpbmQpCisgICAgJGFzbS5wdXRzICJcdCN7
YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYg
aGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZCkKKyAgICBpZiBvcGVyYW5kLnN1cHBvcnRz
OEJpdE9uWDg2CisgICAgICAkYXNtLnB1dHMgIlx0I3tzZXRPcGNvZGV9ICN7b3BlcmFuZC54ODZP
cGVyYW5kKDpieXRlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJsICN7b3BlcmFuZC54ODZP
cGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisg
ICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4
IgorICAgICAgJGFzbS5wdXRzICJcdCN7c2V0T3Bjb2RlfSAlYWwiCisgICAgICAkYXNtLnB1dHMg
Ilx0bW92emJsICVhbCwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmQu
eDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRs
ZVg4NkludENvbXBhcmVTZXQoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NkludENvbXBh
cmUoc2V0T3Bjb2RlWzMuLi0xXSwga2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBv
cGVyYW5kc1syXSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2VGVzdChraW5kKQorICAgIHZh
bHVlID0gb3BlcmFuZHNbMF0KKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDIKKyAg
ICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAgIHdoZW4gMworICAg
ICAgbWFzayA9IG9wZXJhbmRzWzFdCisgICAgZWxzZQorICAgICAgcmFpc2UgIkV4cGVjdGVkIDIg
b3IgMyBvcGVyYW5kcywgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0
cmluZ30iCisgICAgZW5kCisgICAgCisgICAgaWYgbWFzay5pc19hPyBJbW1lZGlhdGUgYW5kIG1h
c2sudmFsdWUgPT0gLTEKKyAgICAgIGlmIHZhbHVlLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAg
JGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3t2YWx1ZS54ODZPcGVyYW5kKGtp
bmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFz
bS5wdXRzICJcdGNtcCN7eDg2U3VmZml4KGtpbmQpfSAkMCwgI3t2YWx1ZS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZT
dWZmaXgoa2luZCl9ICN7bWFzay54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5k
KGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2QnJhbmNoVGVzdChi
cmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgICRhc20ucHV0
cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kcy5sYXN0Lng4NkxhYmVsfSIKKyAgZW5kCisg
IAorICBkZWYgaGFuZGxlWDg2U2V0VGVzdChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2
VGVzdChraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRzLmxhc3QpCisg
IGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wQnJhbmNoKG9wY29kZSwgYnJhbmNoT3Bjb2RlLCBr
aW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFu
ZHMuc2l6ZSAtIDEpCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiA0CisgICAgICBq
dW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1bXBUYXJnZXQgPSBv
cGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAor
ICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0Lng4NkxhYmVsfSIK
KyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkK
KyAgICBpZiBvcGVyYW5kcy5zaXplID09IDQgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJd
CisgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQp
fSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICBoYW5k
bGVYODZPcFdpdGhOdW1PcGVyYW5kcygic3ViI3t4ODZTdWZmaXgoa2luZCl9Iiwga2luZCwgb3Bl
cmFuZHMuc2l6ZSAtIDEpCisgICAgZW5kCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hl
biA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1
bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVj
dAorICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0
Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgbG93ZXJYODYKKyAgICBjYXNlIG9wY29kZQor
ICAgIHdoZW4gImFkZGkiLCAiYWRkcCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQg
b3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5k
c1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5p
c19hPyBSZWdpc3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAg
ICAgICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICRhc20u
cHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNb
Ml0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAkYXNtLnB1dHMgIlx0bGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICAgICAgZW5kCisgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBd
LmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/
IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lz
dGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJcdGxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICB1bmxlc3MgSW1tZWRpYXRl
Lm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwg
I3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAg
d2hlbiAiYW5kaSIsICJhbmRwIgorICAgICAgaGFuZGxlWDg2T3AoImFuZGwiLCA6aW50KQorICAg
IHdoZW4gImxzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2FsbCIsIDppbnQpCisgICAg
d2hlbiAibXVsaSIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0u
aXNfYT8gSW1tZWRpYXRlCisgICAgICAgICRhc20ucHV0cyAiXHRpbXVsbCAje3g4Nk9wZXJhbmRz
KDppbnQsIDppbnQsIDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgaGFuZGxlWDg2T3AoImlt
dWxsIiwgOmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gIm5lZ2kiCisgICAgICAkYXNtLnB1dHMg
Ilx0bmVnbCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJub3RpIgorICAgICAgJGFz
bS5wdXRzICJcdG5vdGwgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAib3JpIiwgIm9y
cCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJvcmwiLCA6aW50KQorICAgIHdoZW4gInJzaGlmdGkiCisg
ICAgICBoYW5kbGVYODZTaGlmdCgic2FybCIsIDppbnQpCisgICAgd2hlbiAidXJzaGlmdGkiCisg
ICAgICBoYW5kbGVYODZTaGlmdCgic2hybCIsIDppbnQpCisgICAgd2hlbiAic3ViaSIsICJzdWJw
IgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5k
c1syXQorICAgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzZQor
ICAgICAgICBoYW5kbGVYODZPcCgic3VibCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJ4
b3JpIiwgInhvcnAiCisgICAgICBoYW5kbGVYODZPcCgieG9ybCIsIDppbnQpCisgICAgd2hlbiAi
bG9hZGkiLCAic3RvcmVpIiwgImxvYWRwIiwgInN0b3JlcCIKKyAgICAgICRhc20ucHV0cyAiXHRt
b3ZsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgIHdoZW4gImxvYWRiIgorICAgICAg
JGFzbS5wdXRzICJcdG1vdnpibCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJsb2FkaCIKKyAgICAgICRh
c20ucHV0cyAiXHRtb3Z6d2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpoYWxmKX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAic3RvcmViIgorICAgICAgJGFz
bS5wdXRzICJcdG1vdmIgI3t4ODZPcGVyYW5kcyg6Ynl0ZSwgOmJ5dGUpfSIKKyAgICB3aGVuICJs
b2FkZCIsICJtb3ZlZCIsICJzdG9yZWQiCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgI3t4ODZP
cGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAiYWRkZCIKKyAgICAgICRhc20u
cHV0cyAiXHRhZGRzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVu
ICJkaXZkIgorICAgICAgJGFzbS5wdXRzICJcdGRpdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwg
OmRvdWJsZSl9IgorICAgIHdoZW4gInN1YmQiCisgICAgICAkYXNtLnB1dHMgIlx0c3Vic2QgI3t4
ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAibXVsZCIKKyAgICAgICRh
c20ucHV0cyAiXHRtdWxzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3
aGVuICJzcXJ0ZCIKKyAgICAgICRhc20ucHV0cyAiXHRzcXJ0c2QgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAg
ICB3aGVuICJjaTJkIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHNpMnNkICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisg
ICAgd2hlbiAiYmRlcSIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUKKyAg
ICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMg
Ilx0anAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4Nkxh
YmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3Jp
Z2luLCBvcGVyYW5kc1syXSkueDg2TGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4
NiIpCisgICAgd2hlbiAiYmRuZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpuZSIs
IDpub3JtYWwpCisgICAgd2hlbiAiYmRndCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgi
amEiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJy
YW5jaCgiamFlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0IgorICAgICAgaGFuZGxlWDg2RG91
YmxlQnJhbmNoKCJqYSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHRlcSIKKyAgICAgIGhhbmRs
ZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRlcXVuIgorICAg
ICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRuZXF1
biIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUKKyAgICAgIGlzRXF1YWwg
PSBMb2NhbExhYmVsLnVuaXF1ZQorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3Jp
Z2luLCBpc1Vub3JkZXJlZCkueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7TGFi
ZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzRXF1YWwpLng4NkxhYmVsfSIKKyAgICAgIGlz
VW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgICAgJGFzbS5wdXRzICJcdGptcCAje29wZXJhbmRz
WzJdLng4NkxhYmVsfSIKKyAgICAgIGlzRXF1YWwubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRn
dHVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpyZXZlcnNlKQorICAgIHdo
ZW4gImJkZ3RlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6cmV2ZXJz
ZSkKKyAgICB3aGVuICJiZGx0dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwg
Om5vcm1hbCkKKyAgICB3aGVuICJiZGx0ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5j
aCgiamJlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJidGQyaSIKKyAgICAgICRhc20ucHV0cyAiXHRj
dnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRjbXBsICQweDgwMDAwMDAw
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0amUg
I3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgd2hlbiAidGQyaSIKKyAgICAgICRhc20ucHV0
cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiY2QyaSIKKyAgICAgICRhc20u
cHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0bCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9Igor
ICAgICAgJGFzbS5wdXRzICJcdGN2dHNpMnNkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50
KX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0anAgI3tvcGVyYW5k
c1syXS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0am5lICN7b3BlcmFuZHNbMl0ueDg2
TGFiZWx9IgorICAgIHdoZW4gIm1vdmR6IgorICAgICAgJGFzbS5wdXRzICJcdHhvcnBkICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0iCisgICAgd2hlbiAicG9wIgorICAgICAgJGFzbS5wdXRzICJcdHBvcCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInB1c2giCisgICAgICAkYXNtLnB1
dHMgIlx0cHVzaCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gIm1v
dmUiLCAic3hpMnAiLCAienhpMnAiCisgICAgICB1bmxlc3Mgb3BlcmFuZHNbMF0gPT0gb3BlcmFu
ZHNbMV0KKyAgICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50
KX0iCisgICAgICBlbmQKKyAgICB3aGVuICJub3AiCisgICAgICAkYXNtLnB1dHMgIlx0bm9wIgor
ICAgIHdoZW4gImJpZXEiLCAiYnBlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6
aW50KQorICAgIHdoZW4gImJpbmVxIiwgImJwbmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqbmUiLCA6aW50KQorICAgIHdoZW4gImJpYSIsICJicGEiCisgICAgICBoYW5kbGVYODZJbnRC
cmFuY2goImphIiwgOmludCkKKyAgICB3aGVuICJiaWFlcSIsICJicGFlcSIKKyAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiamFlIiwgOmludCkKKyAgICB3aGVuICJiaWIiLCAiYnBiIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDppbnQpCisgICAgd2hlbiAiYmliZXEiLCAiYnBiZXEi
CisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDppbnQpCisgICAgd2hlbiAiYmlndCIs
ICJicGd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDppbnQpCisgICAgd2hlbiAi
YmlndGVxIiwgImJwZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmludCkK
KyAgICB3aGVuICJiaWx0IiwgImJwbHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwg
OmludCkKKyAgICB3aGVuICJiaWx0ZXEiLCAiYnBsdGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqbGUiLCA6aW50KQorICAgIHdoZW4gImJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImplIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImpuZSIsIDpieXRlKQorICAgIHdoZW4gImJiYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamEiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamFlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqYiIsIDpieXRlKQorICAgIHdoZW4gImJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqYmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqZyIsIDpieXRlKQorICAgIHdoZW4gImJiZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamdlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamwiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImpsdGVxIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRpbyIsICJidHBvIgorICAgICAgaGFuZGxl
WDg2QnJhbmNoVGVzdCgiam8iLCA6aW50KQorICAgIHdoZW4gImJ0aXMiLCAiYnRwcyIKKyAgICAg
IGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmludCkKKyAgICB3aGVuICJidGl6IiwgImJ0cHoi
CisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDppbnQpCisgICAgd2hlbiAiYnRpbnoi
LCAiYnRwbnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6aW50KQorICAgIHdo
ZW4gImJ0Ym8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpieXRlKQorICAgIHdo
ZW4gImJ0YnMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDpieXRlKQorICAgIHdo
ZW4gImJ0YnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDpieXRlKQorICAgIHdo
ZW4gImJ0Ym56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmJ5dGUpCisgICAg
d2hlbiAiam1wIgorICAgICAgJGFzbS5wdXRzICJcdGptcCAje29wZXJhbmRzWzBdLng4NkNhbGxP
cGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiYWRkaW8iLCAiYmFkZHBvIgorICAgICAgaGFuZGxl
WDg2T3BCcmFuY2goImFkZGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJhZGRpcyIsICJiYWRk
cHMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqcyIsIDppbnQpCisgICAgd2hl
biAiYmFkZGl6IiwgImJhZGRweiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImp6
IiwgOmludCkKKyAgICB3aGVuICJiYWRkaW56IiwgImJhZGRwbnoiCisgICAgICBoYW5kbGVYODZP
cEJyYW5jaCgiYWRkbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbyIKKyAgICAgIGhh
bmRsZVg4NlN1YkJyYW5jaCgiam8iLCA6aW50KQorICAgIHdoZW4gImJzdWJpcyIKKyAgICAgIGhh
bmRsZVg4NlN1YkJyYW5jaCgianMiLCA6aW50KQorICAgIHdoZW4gImJzdWJpeiIKKyAgICAgIGhh
bmRsZVg4NlN1YkJyYW5jaCgianoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbnoiCisgICAgICBo
YW5kbGVYODZTdWJCcmFuY2goImpueiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlvIgorICAgICAg
aGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJibXVsaXMi
CisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAianMiLCA6aW50KQorICAgIHdoZW4g
ImJtdWxpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqeiIsIDppbnQpCisg
ICAgd2hlbiAiYm11bGlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbnoi
LCA6aW50KQorICAgIHdoZW4gImJvcmlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIs
ICJqbyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgi
b3JsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJib3JpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJh
bmNoKCJvcmwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJvcmlueiIKKyAgICAgIGhhbmRsZVg4
Nk9wQnJhbmNoKCJvcmwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJicmVhayIKKyAgICAgICRh
c20ucHV0cyAiXHRpbnQgJDMiCisgICAgd2hlbiAiY2FsbCIKKyAgICAgICRhc20ucHV0cyAiXHRj
YWxsICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInJldCIK
KyAgICAgICRhc20ucHV0cyAiXHRyZXQiCisgICAgd2hlbiAiY2llcSIsICJjcGVxIgorICAgICAg
aGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQpCisgICAgd2hlbiAiY2luZXEiLCAi
Y3BuZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRuZSIsIDppbnQpCisgICAg
d2hlbiAiY2lhIiwgImNwYSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGEiLCA6
aW50KQorICAgIHdoZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFy
ZVNldCgic2V0YWUiLCA6aW50KQorICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAgICBoYW5kbGVY
ODZJbnRDb21wYXJlU2V0KCJzZXRiIiwgOmludCkKKyAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIK
KyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGJlIiwgOmludCkKKyAgICB3aGVuICJj
aWd0IiwgImNwZ3QiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnIiwgOmludCkK
KyAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNl
dCgic2V0Z2UiLCA6aW50KQorICAgIHdoZW4gImNpbHQiLCAiY3BsdCIKKyAgICAgIGhhbmRsZVg4
NkludENvbXBhcmVTZXQoInNldGwiLCA6aW50KQorICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEi
CisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisgICAgd2hlbiAi
dGlvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQpCisgICAgd2hlbiAidGlz
IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDppbnQpCisgICAgd2hlbiAidGl6Igor
ICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDppbnQpCisgICAgd2hlbiAidGlueiIKKyAg
ICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmludCkKKyAgICB3aGVuICJ0Ym8iCisgICAg
ICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgd2hlbiAidGJzIgorICAgICAg
aGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAgIHdoZW4gInRieiIKKyAgICAgIGhh
bmRsZVg4NlNldFRlc3QoInNldHoiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ym56IgorICAgICAgaGFu
ZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJwZWVrIgorICAgICAgJGFz
bS5wdXRzICJcdG1vdmwgI3tvcGVyYW5kc1swXS52YWx1ZSAqIDR9KCVlc3ApLCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInBva2UiCisgICAgICAkYXNtLnB1dHMg
Ilx0bW92bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLnZh
bHVlICogNH0oJWVzcCkiCisgICAgd2hlbiAiY2RxaSIKKyAgICAgICRhc20ucHV0cyAiXHRjZHEi
CisgICAgd2hlbiAiaWRpdmkiCisgICAgICAkYXNtLnB1dHMgIlx0aWRpdmwgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJmaWkyZCIKKyAgICAgICRhc20ucHV0cyAi
XHRtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwc2xscSAkMzIs
ICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHBvciAleG1tNywgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRhc20ucHV0cyAiXHRt
b3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cHNybHEgJDMy
LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAleG1tNywgI3tvcGVyYW5kc1syXS54
ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiQmFkIG9wY29kZTogI3tv
cGNvZGV9IgorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYg
KzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRGVidWdnZXI7CiAgICAgY2xhc3Mg
RXZhbENvZGVCbG9jazsKICAgICBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jazsKKyAgICBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBj
bGFzcyBTY29wZUNoYWluTm9kZTsKIApAQCAtMzE5LDYgKzMyMCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIH07CiAKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC0z
ODQsNiArMzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIFByb2dy
YW1FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRl
ZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTQ1Myw2ICs0NTYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRhYmxlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2Ny
aXB0RXhlY3V0YWJsZSBCYXNlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgSlNBcnJheTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAKICAgICBzdHJ1Y3QgU3BhcnNlQXJyYXlFbnRyeSA6IHB1YmxpYyBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4gewogICAgICAgICBTcGFyc2VBcnJheUVudHJ5KCkgOiBhdHRyaWJ1dGVzKDAp
IHt9CkBAIC0xMDQsNiArMTA1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNs
YXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7
CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBACiBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlw
dG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OworICAgIGNsYXNzIFN0cnVjdHVyZTsK
IAogICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJv
cGVydGllcywKQEAgLTE2NCw2ICsxNjUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToK
KyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAg
ICAgICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAgICAgICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7
CiAgICAgY2xhc3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAg
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxl
OwogICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0xNDAsNiAr
MTQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGlz
SG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgc3RhdGljIEpTVmFsdWUg
YXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNw
cAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw4IEBAIEpTR2xvYmFs
RGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICAsIGtleXdvcmRzKGFkb3B0UHRy
KG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRlcnByZXRlcigwKQogICAgICwgaGVhcCh0
aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFzc0luZm8oJkpTQXJyYXk6OnNfaW5mbykK
KyAgICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKICNp
ZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxhc3RTY3JhdGNoQnVmZmVyKDApCiAjZW5k
aWYKQEAgLTIxOCw3ICsyMjAsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxE
YXRhVHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1bmtzKHRoaXMpKTsKICNl
bmRpZgogCi0gICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUodGhpcy0+Y2FuVXNlSklUKCkpOwor
ICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKCZsbGludERhdGEsIHRoaXMtPmNhblVzZUpJVCgp
KTsKIAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xsZWN0KCk7CiB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gMTA0NDI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDE1ICszMCwxNiBAQAogI2RlZmluZSBKU0dsb2JhbERhdGFfaAogCiAj
aW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkludHJp
bnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0
YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJTdHJvbmcuaCIK
KyNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUg
IkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJOdW1lcmljU3Ry
aW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlN0cm9uZy5oIgog
I2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJUaW1lb3V0Q2hlY2tlci5oIgogI2lu
Y2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYgKzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3Mg
S2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5h
dGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmE7CiAgICAgY2xhc3MgUmVnRXhw
Q2FjaGU7CkBAIC0yNDgsNiArMjUwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBIZWFw
IGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247CisKKyAgICAgICAgY29uc3QgQ2xh
c3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOworICAgICAgICBjb25zdCBDbGFzc0luZm8q
IGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CisKKyAgICAgICAgTExJbnQ6OkRhdGEgbGxp
bnREYXRhOworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciBleGNl
cHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBob3N0Q2FsbFJldHVyblZhbHVlOwpAQCAt
MzUyLDYgKzM2MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogI3VuZGVmIHJlZ2lzdGVyVHlwZWRBcnJh
eUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFU
eXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKICAgICAgICAgc3RhdGljIEpTR2xvYmFs
RGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAgdm9pZCBjcmVhdGVOYXRp
dmVUaHVuaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNz
IEdldHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CiAg
ICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsK
QEAgLTMzNSw2ICszMzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBhZGRTdGF0
aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyosIGludCBjb3VudCk7CiAKICAgICBwcml2YXRl
OgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAK
ICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVzZXQgaW50byBpbml0LgogICAgICAgICB2b2lkIGlu
aXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CiAgICAgICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90
b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShy
ZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50
ZXJuYWxGdW5jdGlvbjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xh
c3MgTWFya2VkQmxvY2s7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNz
IFByb3BlcnR5TmFtZUFycmF5OwpAQCAtMjYwLDYgKzI2MSw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3Jh
Z2UgaW5saW5lU3RvcmFnZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gTm9ib2R5IHNob3Vs
ZCBldmVyIGFzayBhbnkgb2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0aGluZyBhbHJlYWR5IGtu
b3duIHRvIGJlIGEgSlNPYmplY3QuCiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdy
YXBwZXI7CiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7CkBAIC0zNzEsNiAr
Mzc0LDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGV4
cGxpY2l0IEpTRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJl
LCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9u
IDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvciA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtOTYs
NiArOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlE
YXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKIAog
ICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTA0NDI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1N0
cmluZzsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBKU1N0cmluZyog
anNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmlu
ZyhFeGVjU3RhdGUqKTsKQEAgLTI0MSw2ICsyNDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAgICAgCiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7CiAg
ICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIqKSBjb25zdDsKICAgICAgICAg
dm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFyKikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIHRv
IG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJsZS4KICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8PCAxOwogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEgPDwgMjsKQEAgLTg3LDYgKzg5LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGlzU2V0
T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA8PSAoMSA8PCA3KSk7
IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAgICAgICBib29sIGlzU2V0T25GbGFnczIodW5z
aWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8PCA4KSk7IHJldHVybiBtX2Zs
YWdzMiAmIChmbGFnID4+IDgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsMTAgKzM4LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogCiAgICAgY2xhc3MgSlNW
YXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgZnJpZW5k
IGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZpc2lv
biAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpT
T2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTY29w
ZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCkBAIC05MSw2ICs5
Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25z
dCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAgICAgfTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlz
aW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFy
cmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5RGF0YTsKICAgICBjbGFzcyBTdHJ1Y3R1
cmVDaGFpbjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAog
ICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
IHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qKTsKICAgICAgICAg
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
JiwgY29uc3QgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3
LDYgKzM3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogCiAgICAgY2xhc3MgU3RydWN0dXJlQ2hh
aW4gOiBwdWJsaWMgSlNDZWxsIHsKQEAgLTc0LDYgKzc1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERh
dGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsK
ICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEwNDQyOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpA
QCAtOTE2LDYgKzkxNiwxMiBAQAogI2RlZmluZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCisvKiBP
biBzb21lIG9mIHRoZSBwbGF0Zm9ybXMgd2hlcmUgd2UgaGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBh
bHNvIGhhdmUgdGhlIAorICAgbG93LWxldmVsIGludGVycHJldGVyLiAqLworI2lmIEVOQUJMRShK
SVQpICYmIFBMQVRGT1JNKE1BQykgJiYgVVNFKEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgRU5BQkxF
X0xMSU5UIDEKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0RGR19KSVQpICYmIEVOQUJM
RShKSVQpCiAvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gWDg2IGFuZCBYODZfNjQuICBPbmx5IHRl
c3RlZCBvbiBNYWMgYW5kIEdOVS9MaW51eC4gKi8KICNpZiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82
NCkpICYmIChQTEFURk9STShNQUMpIHx8IE9TKExJTlVYKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpA
QCAtNDMsNiArNDMsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJp
CiAvLyBMYW5kaW5nIHRoZSBmaWxlIG1vdmVzIGluIG9uZSBwYXRjaCwgd2lsbCBmb2xsb3cgb24g
d2l0aCBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgbmFtZXNwYWNlcy4KIG5hbWVzcGFjZSBKU0Mgewog
c3RydWN0IElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSWRlbnRpZmllckNoYXJCdWZm
ZXJUcmFuc2xhdG9yOwogc3RydWN0IElkZW50aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5zbGF0b3I7
CiB9CkBAIC03MCw3ICs3MSw4IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgIGZyaWVuZCBzdHJ1
Y3QgV1RGOjpIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1
Y3QgV1RGOjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0
cmluZ0ltcGw7Ci0KKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7
CisgICAgCiBwcml2YXRlOgogICAgIGVudW0gQnVmZmVyT3duZXJzaGlwIHsKICAgICAgICAgQnVm
ZmVySW50ZXJuYWwsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121809</attachid>
            <date>2012-01-10 01:09:22 -0800</date>
            <delta_ts>2012-01-10 14:45:09 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_8.diff</filename>
            <type>text/plain</type>
            <size>298293</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0NTI3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwMyBA
QAorMjAxMi0wMS0wOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV09SSyBJTiBQUk9HUkVTUy4gIEl0IG5vdyBjb21waWxlcyBhbmQgbGlua3MsIGJ1
dCBkb2Vzbid0IGRvIGFueXRoaW5nIHlldC4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1h
a2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoK
KyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZlci5oOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoK
KyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRl
Y29kZS9PcGNvZGUuaDoKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBk
ZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29k
ZSk6CisgICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGhlYXAvQWxs
b2NhdGlvblNwYWNlLmg6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgICogaGVhcC9N
YXJrZWRTcGFjZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcik6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmlzT3Bj
b2RlKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Omdl
dE9wY29kZUlEKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaDoKKyAgICAg
ICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSk6CisgICAgICAgICogaml0L0hvc3RD
YWxsUmV0dXJuVmFsdWUuaDogQWRkZWQuCisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAg
ICAgKiBsbGludC9MTEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERh
dGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAg
ICAoSlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9u
cyk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxs
aW50L0xMSW50RXhjZXB0aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6cmV0
dXJuVG9UaHJvdyk6CisgICAgICAgIChKU0M6OkxMSW50OjpjYWxsVG9UaHJvdyk6CisgICAgICAg
ICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50
SGVscGVycy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfSEVMUEVSX0RF
Q0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTElu
dDo6aGFuZGxlSG9zdENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKiBsbGludC9MTEludEhl
bHBlcnMuaDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KToKKyAgICAgICAg
KG1haW4pOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRlZC4K
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDogQWRkZWQuCisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBBZGRlZC4KKyAgICAg
ICAgKiBvZmZsaW5lYXNtL2FzbS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc3Qu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYjogQWRkZWQuCisg
ICAgICAgICogb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmI6IEFkZGVkLgorICAgICAgICAqIG9m
ZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20vb2Zmc2V0cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9wYXJz
ZXIucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcmVnaXN0ZXJzLnJiOiBBZGRlZC4K
KyAgICAgICAgKiBvZmZsaW5lYXNtL3NldHRpbmdzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZs
aW5lYXNtL3RyYW5zZm9ybS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYucmI6
IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVu
dGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgor
ICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVP
YmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAg
ICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6
CisKIDIwMTItMDEtMDkgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29t
PgogCiAgICAgICAgIEVycm9yIGhhbmRsaW5nIDogaW4gSVNPODYwMSB0aW1lem9uZQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEwNDQy
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MCw2ICs2MCw3
IEBAIGFsbCA6IFwKICAgICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU3RyaW5nUHJv
dG90eXBlLmx1dC5oIFwKICAgICBkb2NzL2J5dGVjb2RlLmh0bWwgXAorICAgIExMSW50QXNzZW1i
bHkuaC5QSE9OWSBcCiAjCiAKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwpAQCAtMTA0LDMg
KzEwNSwxMSBAQCBIZWFkZXJEZXRlY3Rpb24uaCA6CiAJZWNobyA+ICRACiAKIGVuZGlmCisKKyMg
QXNzZW1ibHkgZm9yIHRoZSBMb3dMZXZlbEludGVycHJldGVyCisKKyMgVGhpcyBidWlsZHMgZXZl
cnkgdGltZSBiZWNhdXNlIHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGRlc2NyaWJlCisjIHRoZSBk
ZXBlbmRlbmNpZXMgdXNpbmcgbWFrZS4gSW5zdGVhZCwgdGhlIGFzc2VtYmxlciB3aWxsIGRlY2lk
ZSBvbgorIyBpdHMgb3duIHdoZXRoZXIgb3Igbm90IGl0IGRpZCBhbnl0aGluZyB0aGF0IHdvdWxk
IGxlYWQgdG8gYSBjaGFuZ2UuCitMTEludEFzc2VtYmx5LmguUEhPTlk6CisJcnVieSAkKEphdmFT
Y3JpcHRDb3JlKS9vZmZsaW5lYXNtL2FzbS5yYiAkKEphdmFTY3JpcHRDb3JlKS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvSlNDTExJbnRPZmZzZXRz
RXh0cmFjdG9yID4gTExJbnRBc3NlbWJseS5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcsNiAr
NywxNSBAQAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0
aW9uICovCisJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovID0g
eworCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlz
dCA9IDBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3Qg
Zm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi87CisJCQlidWlsZFBoYXNl
cyA9ICgKKwkJCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBT
b3VyY2VzICovLAorCQkJKTsKKwkJCW5hbWUgPSAiTExJbnQgT2Zmc2V0cyI7CisJCQlwcm9kdWN0
TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOworCQl9OwogCQk2NUZCM0Y2NjA5RDExRTkxMDBGNDlE
RUIgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0
OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDY1RkIzRjc3MDlEMTFFQkQwMEY0OURFQiAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVyaXZl
ZCBTb3VyY2VzIiAqLzsKQEAgLTE0LDYgKzIzLDkgQEAKIAkJCQk2NUZCM0Y2NTA5RDExRTkxMDBG
NDlERUIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTVEMzVERUUxMEM3QzE0
MEIwMDg2NDhCMiAvKiBHZW5lcmF0ZSBEVHJhY2UgaGVhZGVyICovLAogCQkJKTsKKwkJCWRlcGVu
ZGVuY2llcyA9ICgKKwkJCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVw
ZW5kZW5jeSAqLywKKwkJCSk7CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlwcm9k
dWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQl9OwpAQCAtNjAsNiArNzIsMTkgQEAKIAkJ
MEY0MzE3MzgxNDZCQUM2OTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MzE3MzYxNDZCQUM2NTAwN0Uz
ODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRp
b25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2
ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3
MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNw
cCAqLzsgfTsKKwkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUUx
NEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAv
KiBMTEludEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi87
IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tdW51c2VkLXBhcmFtZXRlciI7IH07
IH07CisJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEEwMTRCQTdGODIw
MEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwICovOyB9OworCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25z
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4
MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2
ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBM
TEludENvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM2
MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQzE0QkJCMTdBMDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAgKi87IH07CisJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBM
b3dMZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
NDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8q
IExMSW50RGF0YS5jcHAgKi87IH07CisJCTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTElu
dERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIg
LyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1
cm5WYWx1ZS5jcHAgKi87IH07CisJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2Fs
bFJldHVyblZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUYwOENG
MTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAwNDcy
QTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjIwMTc0MTQzRkNEMzMwMDY4Qjc3QyAvKiBERkdW
YXJpYWJsZUFjY2Vzc0RhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNjIwMTcyMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0Rh
dGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjYyMDE3NTE0M0ZDRDM3MDA2OEI3N0MgLyogREZHT3BlcmFuZHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjIwMTcxMTQzRkNEMkYwMDY4Qjc3QyAv
KiBERkdPcGVyYW5kcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0zNjAsNyArMzg1LDcgQEAKIAkJODZCOTlBRTMxMTdFNTc4MTAwREY1QTkwIC8q
IFN0cmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODZCOTlBRTExMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QkIwOUMwMTM4RTM4
MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJFMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNo
LmNwcCAqLzsgfTsKIAkJODZCQjA5QzExMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJGMTM4
RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggKi87IH07Ci0JCTg2QzM2RUVBMEVFMTI4OUQw
MEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1i
bGVyLmggKi87IH07CisJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZF
RTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0Yw
IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2QzU2OEREMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxl
ckFSTS5jcHAgKi87IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2Vt
Ymxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLzsgfTsK
IAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERGMTFBMjEzRUUwMDA3
RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IH07CkBAIC03MjAsNiArNzQ1LDIwIEBACiAvKiBF
bmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVBy
b3h5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNv
bnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVj
dCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGNDY4
MEE5MTRCQTdGRDkwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSAiTExJbnQgT2Zmc2V0cyI7CisJ
CX07CisJCTBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0
YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlw
cm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODA4RTE0QkE3RTVF
MDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQl9
OwogCQkxNDEyMTEzNTBBNDg3OTYxMDA0ODAyNTUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICov
ID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFs
ID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtNzkz
LDYgKzgzMiwxNSBAQAogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4RDE0
QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVz
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQYXRo
ID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMDsKKwkJCWZp
bGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAx
OworCQl9OwogCQk1REJCMTUxMTEzMUQwQjEzMDA1NkFEMzYgLyogQ29weSBTdXBwb3J0IFNjcmlw
dCAqLyA9IHsKIAkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlv
bk1hc2sgPSAxMjsKQEAgLTg0NSw2ICs4OTMsMjAgQEAKIAkJMEY0MzE3MzYxNDZCQUM2NTAwN0Uz
ODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBMaXN0YWJsZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0Njgw
N0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSklURXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xM
SW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNp
dEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXgg
PSAwOyBwYXRoID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OworCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNl
cHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RXhj
ZXB0aW9ucy5jcHA7IHBhdGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNl
cHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RXhjZXB0aW9u
cy5oOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRIZWxwZXJzLmNwcDsgcGF0
aCA9IGxsaW50L0xMSW50SGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRIZWxwZXJzLmg7IHBhdGggPSBsbGludC9MTEludEhl
bHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQTExNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOyBwYXRoID0gbGxpbnQv
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50Q29tbW9uLmg7IHBhdGggPSBsbGludC9MTEludENvbW1v
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUy
NzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBwYXRoID0gbGxpbnQvTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM3MTRCQkIx
NjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBwYXRoID0gbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIuaDsgcGF0aCA9IGxs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludERhdGEuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRE
YXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0YxNEJCQjNEMTAw
QkZFMjcyIC8qIExMSW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBM
TEludERhdGEuaDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIb3N0Q2FsbFJldHVy
blZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwRDExNEJCQzVG
ODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyogREZHQnl0ZUNvZGVDYWNoZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCeXRlQ29kZUNhY2hlLmg7IHBhdGgg
PSBkZmcvREZHQnl0ZUNvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjIwMTZEMTQzRkNEMkYwMDY4Qjc3QyAvKiBE
RkdBYnN0cmFjdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IERGR0Fic3RyYWN0U3RhdGUuY3BwOyBwYXRoID0gZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU0Niw2ICsxNjA4LDEzIEBACiAvKiBFbmQg
UEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1ld29y
a3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUUwQTQ4NzkzQzAw
NDgwMjU1IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQ
aGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0xNjA0LDYgKzE2NzMs
NyBAQAogCQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovLAogCQkJCTE0
QkQ1OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTY1MTEyMzA1MTQwNDZB
NEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3
MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFByb2R1
Y3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2MzIsNiArMTcwMiw3IEBACiAJ
CQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8s
CiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJC
OEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5oICovLAorCQkJCTBGNDY4MDlDMTRCQTdGNEQw
MEJGRTI3MiAvKiBsbGludCAqLywKIAkJCQkxNDMyRUJENzBBMzRDQUQ0MDA3MTdCOUYgLyogQVBJ
ICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJsZXIgKi8sCiAJCQkJ
OTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLApAQCAtMTY3MCw2ICsxNzQx
LDI0IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCTBGNDY4
MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOwor
CQkJY2hpbGRyZW4gPSAoCisJCQkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0
YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICov
LAorCQkJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovLAorCQkJ
CTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLywK
KwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAg
Ki8sCisJCQkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIu
aCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNw
cCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmgg
Ki8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8s
CisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovLAorCQkJ
CTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICov
LAorCQkJKTsKKwkJCW5hbWUgPSBsbGludDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CiAJCTE0MTIxMTAwMEE0ODc3MjYwMDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNzAyLDYgKzE3OTEsOCBAQAogCQkxNDI5
RDkyQzBFRDIyRDcwMDBCODk2MTkgLyogaml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxS
ZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RD
YWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklU
RXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4
Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJ
VENvZGVNYXAuaCAqLywKQEAgLTMwMTAsMTMgKzMxMDEsMzggQEAKIAkJCQk4NjcwNEI4QTEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQz
MTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVs
cGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJ
VEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3
MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0IxNEJCQjE3MjAw
QkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0
NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZh
bHVlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKIC8qIEVuZCBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisJCTBGNDY4MDhFMTRC
QTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7CisJCQlpc2Eg
PSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwOUEx
NEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZl
VGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovOworCQkJYnVpbGRQaGFzZXMgPSAo
CisJCQkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8sCisJCQkJMEY0Njgw
OEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJMEY0NjgwOEQxNEJBN0U1
RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJ
KTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyog
UEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CisJCQluYW1lID0gSlNDTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworCQkJcHJvZHVjdE5hbWUgPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJ
CQlwcm9kdWN0UmVmZXJlbmNlID0gMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50
T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0
LXR5cGUudG9vbCI7CisJCX07CiAJCTE0MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9t
ICovID0gewogCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9u
TGlzdCA9IDE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi87CkBAIC0zMTQ3LDExICszMjYzLDI5
IEBACiAJCQkJMTRCRDU5QkUwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJOTMy
RjVCREEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLywKIAkJCQk2NTExMjJGNzE0MDQ2QTRDMDAy
QjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyog
SlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAorCQkJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3
MiAvKiBMTEludCBPZmZzZXRzICovLAogCQkJKTsKIAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNl
Y3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8K
KwkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAq
LyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0g
KAorCQkJCSIkKFNSQ1JPT1QpL2xsaW50L0xvd0xldmVsQXNzZW1ibGVyLmFzbSIsCisJCQkpOwor
CQkJbmFtZSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMiOworCQkJb3V0cHV0UGF0aHMgPSAo
CisJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zm
c2V0cy5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBc
IiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvXCJcblxuL3Vzci9iaW4vZW52IHJ1
YnkgXCIke1NSQ1JPT1R9L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYlwi
IDwgXCIke1NSQ1JPT1R9L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtXCIgPiBcIiR7QlVJ
TFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oXCJcbiI7
CisJCX07CiAJCTM3MTNGMDE0MTQyOTA1MjQwMDM2Mzg3RiAvKiBDaGVjayBGb3IgSW5hcHByb3By
aWF0ZSBPYmplY3RpdmUtQyBDbGFzcyBOYW1lcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2Ny
aXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zMjky
LDYgKzM0MjYsMTQgQEAKIC8qIEVuZCBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhC
MTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1
aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAo
CisJCQkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUQwQTQ4NzkzQzAwNDgwMjU1IC8qIFNvdXJjZXMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CkBAIC0zNTQ5LDcgKzM2OTEsMTIgQEAKIAkJCQk4NjcwNEI4NjEyREJB
MzM3MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4OTEy
REJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3
MDRCNDIxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0
aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBDQzE0QkJCMTdBMDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2
ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQl9OwpAQCAtMzU2NCw2ICszNzExLDE2IEBACiAvKiBFbmQgUEJYU291cmNlc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24g
Ki8KKwkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8g
PSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMEY0NjgwQTkx
NEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi87CisJCQl0YXJnZXRQcm94eSA9IDBG
NDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07
CisJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0g
eworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MDhFMTRC
QTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQl0YXJnZXRQ
cm94eSA9IDBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki87CisJCX07CiAJCTE0MTIxMTM2MEE0ODc5NjEwMDQ4MDI1NSAvKiBQQlhUYXJnZXREZXBlbmRl
bmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJCXRhcmdldCA9IDkz
MkY1QjNFMDgyMkExQzcwMDczNjk3NSAvKiBKYXZhU2NyaXB0Q29yZSAqLzsKQEAgLTM2MTcsNiAr
Mzc3NCwxNDggQEAKIC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyog
QmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkwRjQ2ODA5NjE0QkE3RTVF
MDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87
CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNF
X1NUUklQID0gTk87CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlH
Q0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9
IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VT
U09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCki
LAorCQkJCSk7CisJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0Nf
VkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dB
Uk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNT
SU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZ
RVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VB
UkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxU
X1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRI
UykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlP
TkxZX0FDVElWRV9BUkNIID0gWUVTOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1F
KSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMg
PSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFS
Q0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MDk3MTRC
QTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRI
UyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09Q
WV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdh
cmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJ
CUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29t
LmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9C
SVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBF
UyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0Nf
V0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJj
aD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElS
KS9MTEludE9mZnNldHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09T
WF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VU
X05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9Q
QVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVS
X1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2
ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hf
VVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7
CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JN
QVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdu
dTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJT
SU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82
NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdf
UFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsK
KwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hf
UEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJP
RFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIs
CisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RV
Q1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlV
U0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xM
SW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJv
ZmlsaW5nOworCQl9OworCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAq
LyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFS
Q0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJ
REVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0Nf
TEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9O
UyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFu
Zy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlH
Q0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJP
VVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVT
OworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlp
Y3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQo
SEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFS
R0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNE
S1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7
CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFEMTRCQTdGRDkw
MEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2Vz
IGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwQUUxNEJBN0ZE
OTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291
cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwQUYx
NEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVy
aXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJ
CTBGNDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0g
WENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1Rf
TkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rp
b247CisJCX07CiAJCTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1NSAvKiBEZWJ1ZyAqLyA9IHsKIAkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKQEAgLTM4
NTgsNiArNDE1NywyOCBAQAogLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTBGNDY4MDlBMTRC
QTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRh
cmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmln
dXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MDk2MTRC
QTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIg
LyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5n
ICovLAorCQkJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJ
KTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFDMTRCQTdGRDkwMEJG
RTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAi
TExJbnQgT2Zmc2V0cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJ
YnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyog
RGVidWcgKi8sCisJCQkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJ
CQkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODBC
MDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQ
cm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovID0gewogCQkJ
aXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2
aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNkZWZpbmUgRFVNUF9MSU5L
X1NUQVRJU1RJQ1MgMAogI2RlZmluZSBEVU1QX0NPREUgMAogCi0jaW5jbHVkZSA8TWFjcm9Bc3Nl
bWJsZXIuaD4KKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODgxLDYgKzg4MSwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNv
CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlf
aWRfdHJhbnNpdGlvbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50
UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4
ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJp
YzogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0
X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAgICAgIGJyZWFrOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBA
IC03Miw4ICs3Miw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBoYXNTZWVuU2hvdWxkUmVw
YXRjaAogICAgIH07CiAKLSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgREZHQ29kZUJs
b2NrczsKKyAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogCiAgICAgZW51bSBDb2RlVHlwZSB7IEdsb2JhbENvZGUsIEV2YWxDb2RlLCBGdW5jdGlv
bkNvZGUgfTsKIApAQCAtMjU2LDYgKzI1Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IENvZGVCbG9jayA6IHB1YmxpYyBVbmNvbmRpdGlvbmFsRmluYWxpemVyLCBwdWJsaWMgV2Vha1Jl
ZmVyZW5jZUhhcnZlc3RlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAg
ICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBDb3B5UGFyc2VkQmxvY2tUYWcg
eyBDb3B5UGFyc2VkQmxvY2sgfTsKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTA0NDI4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE0MSw2ICsxNDEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHN0
cnVjdCBJbnN0cnVjdGlvbiB7CisgICAgICAgIEluc3RydWN0aW9uKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdS5qc0NlbGwuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAg
SW5zdHJ1Y3Rpb24oT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogI2lmICFFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikKQEAgLTE4NCw2ICsxODksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IHN0cnVjdHVyZUNo
YWluOwogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxKU0NlbGw+IGpzQ2VsbDsKICAgICAg
ICAgICAgIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1bmM7CisgICAgICAgICAg
ICB2b2lkKiBwb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMDQ0
MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8o
b3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lk
LCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uLCA5KSBcCisgICAg
ICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwgOSkgXAorICAgICAgICBt
YWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwKICAgICAgICAgbWFjcm8o
b3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX2dl
bmVyaWMsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBcCkBAIC0yMDIsNiAr
MjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgZW51bSB7IEZPUl9FQUNI
X09QQ09ERV9JRChPUENPREVfSURfRU5VTSkgfSBPcGNvZGVJRDsKICAgICAjdW5kZWYgT1BDT0RF
X0lEX0VOVU0KIAorICAgIGNvbnN0IGludCBtYXhPcGNvZGVMZW5ndGggPSA5OwogICAgIGNvbnN0
IGludCBudW1PcGNvZGVJRHMgPSBvcF9lbmQgKyAxOwogCiAgICAgI2RlZmluZSBPUENPREVfSURf
TEVOR1RIUyhpZCwgbGVuZ3RoKSBjb25zdCBpbnQgaWQjI19sZW5ndGggPSBsZW5ndGg7CkBAIC0y
MTgsNyArMjIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9J
RChWRVJJRllfT1BDT0RFX0lEKTsKICAgICAjdW5kZWYgVkVSSUZZX09QQ09ERV9JRAogCi0jaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dP
VE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICNpZiBDT01QSUxFUihSVkNUKSB8fCBD
T01QSUxFUihJTlRFTCkKICAgICB0eXBlZGVmIHZvaWQqIE9wY29kZTsKICNlbHNlCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2
aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MjMsNyArMTgyMyw5IEBAIGJvb2wgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9w
X2dldF9ieV9pZCk7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDogewor
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsOiB7CiAgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0
aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJy
ZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50
aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50
SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kXTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYg
KzExMSw4IEBAIGlubGluZSBib29sIGNhbkNvbXBpbGVPcGNvZGUoT3Bjb2RlSUQgb3AKICAgICBj
YXNlIG9wX3B1dF9zY29wZWRfdmFyOgogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgIGNhc2Ug
b3BfcHV0X2J5X2lkOgorICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Ogor
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgIGNhc2Ugb3BfZ2V0
X2dsb2JhbF92YXI6CiAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX2pt
cDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAko
cmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKICNpbmNsdWRlICJERkdSZXBhdGNoLmgi
CisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIklubGluZUFTTS5o
IgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKQEAg
LTU0NSw0NSArNTQ2LDYgQEAgc2l6ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0
cgogICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBKU1ZhbHVlOjpkZWNvZGUo
ZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiB9CiAKLUVuY29kZWRK
U1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOwotRW5jb2RlZEpT
VmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShF
eGVjU3RhdGUqKTsKLQotI2lmIENQVShYODZfNjQpCi1hc20gKAotIi5nbG9ibCAiIFNZTUJPTF9T
VFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0
Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCi0g
ICAgIm1vdiAlcjEzLCAlcmRpXG4iCi0gICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElP
TihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQ
VShYODYpCi1hc20gKAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxu
IgotICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4iCi0gICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4i
Ci0gICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZh
bHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKQotYXNtICgK
LSIudGV4dCIgIlxuIgotIi5hbGlnbiAyIiAiXG4iCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiXG4iCi0iLnRodW1iIiAiXG4iCi0iLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BB
UkFNKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCi0g
ICAgImNweSByMCwgcjUiICJcbiIKLSAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbmRpZgotCi1F
bmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhl
Y1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4
ZWMtPmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKLX0KLQogc3RhdGljIHZvaWQq
IGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVj
Q2FsbGVlLT5jYWxsZXJGcmFtZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QWxsb2NhdGlvblNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQWxsb2NhdGlvblNwYWNlLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICsz
NCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSGVhcDsKK2NsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKIGNsYXNzIE1hcmtlZEJsb2NrOwogCiBjbGFzcyBBbGxvY2F0aW9uU3BhY2Ug
ewpAQCAtNjgsNiArNjksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaHJpbmsoKTsKICAgICAKIHBy
aXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAg
ICBlbnVtIEFsbG9jYXRpb25FZmZvcnQgeyBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQsIEFsbG9jYXRp
b25DYW5GYWlsIH07CiAgICAgCiAgICAgdm9pZCogYWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVD
bGFzcyYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTA0NDI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Niw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsK
ICAgICBjbGFzcyBKU1ZhbHVlOwogICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZm
ZXI7CiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlOwogICAgIGNsYXNzIFVTdHJpbmc7CkBAIC0xMjks
MTAgKzEzMCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2YXRp
dmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNz
IEFsbG9jYXRpb25TcGFjZTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwogICAg
ICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKIAogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IG1pbkV4dHJhQ29zdCA9IDI1NjsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhF
eHRyYUNvc3QgPSAxMDI0ICogMTAyNDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkU3BhY2UuaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIGNsYXNzIEhlYXA7CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBMaXZlT2JqZWN0
SXRlcmF0b3I7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBXZWFrR0NIYW5k
bGU7CiBjbGFzcyBTbG90VmlzaXRvcjsKIApAQCAtNzksNiArODAsOCBAQCBwdWJsaWM6CiAgICAg
dGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBm
b3JFYWNoQmxvY2soKTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworICAgIAogICAgIC8vIFsgMzIuLi4gMjU2IF0KICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IHByZWNpc2VTdGVwID0gTWFya2VkQmxvY2s6OmF0b21TaXplOwogICAgIHN0YXRpYyBj
b25zdCBzaXplX3QgcHJlY2lzZUN1dG9mZiA9IDI1NjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTA0NDI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2VuZGlm
CiAKLSNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EIChFTkFCTEUo
Q09NUFVURURfR09UT19JTlRFUlBSRVRFUikgJiYgIWRlZmluZWQoX19sbHZtX18pKQorI2RlZmlu
ZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQgKChFTkFCTEUoQ09NUFVURURf
R09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkgJiYgIWRlZmluZWQoX19sbHZtX18p
KQogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC01NDcsMTcgKzU0Nyw0MSBAQCBJbnRlcnBy
ZXRlcjo6SW50ZXJwcmV0ZXIoKQogewogfQogCi12b2lkIEludGVycHJldGVyOjppbml0aWFsaXpl
KGJvb2wgY2FuVXNlSklUKQorSW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcigpCiB7Ci0jaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlm
IChtX2VuYWJsZWQpCisgICAgICAgIGRlbGV0ZVtdIG1fb3Bjb2RlVGFibGU7CisjZW5kaWYKK30K
Kwordm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShMTEludDo6RGF0YSogbGxpbnREYXRhLCBi
b29sIGNhblVzZUpJVCkKK3sKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikg
fHwgRU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikK
KyAgICAvLyBIYXZpbmcgTExJbnQgZW5hYmxlZCwgYnV0IG5vdCBiZWluZyBhYmxlIHRvIHVzZSB0
aGUgSklULCBhbmQgbm90IGhhdmluZworICAgIC8vIGEgY29tcHV0ZWQgZ290byBpbnRlcnByZXRl
ciwgaXMgbm90IHN1cHBvcnRlZC4gTm90IGJlY2F1c2Ugd2UgY2Fubm90CisgICAgLy8gc3VwcG9y
dCBpdCwgYnV0IGJlY2F1c2UgSSBkZWNpZGVkIHRvIGRyYXcgdGhlIGxpbmUgYXQgdGhlIG51bWJl
ciBvZgorICAgIC8vIHBlcm11dGF0aW9ucyBvZiBleGVjdXRpb24gZW5naW5lcyB0aGF0IEkgd2Fu
dGVkIHRoaXMgY29kZSB0byBncm9rLgorICAgIEFTU0VSVChjYW5Vc2VKSVQpOworI2VuZGlmCiAg
ICAgaWYgKGNhblVzZUpJVCkgeworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVU
YWJsZSA9IGxsaW50RGF0YS0+b3Bjb2RlTWFwKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbnVtT3Bjb2RlSURzOyArK2kpCisgICAgICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1f
b3Bjb2RlVGFibGVbaV0sIHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7CisjZWxzZQogICAgICAg
ICAvLyBJZiB0aGUgSklUIGlzIHByZXNlbnQsIGRvbid0IHVzZSBqdW1wIGRlc3RpbmF0aW9ucyBm
b3Igb3Bjb2Rlcy4KICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bj
b2RlSURzOyArK2kpIHsKICAgICAgICAgICAgIE9wY29kZSBvcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaSkpOwogICAgICAgICAgICAgbV9vcGNvZGVU
YWJsZVtpXSA9IG9wY29kZTsKICAgICAgICAgfQorI2VuZGlmCiAgICAgfSBlbHNlIHsKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bjb2RlVGFibGUgPSBuZXcgT3Bjb2RlW251bU9wY29k
ZUlEc107CisjZW5kaWYKICAgICAgICAgcHJpdmF0ZUV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVy
biwgMCwgMCk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29k
ZUlEczsgKytpKQpAQCAtNjY3LDkgKzY5MSwxMSBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVn
aXN0ZXJzKENhbGxGcmFtCiAKIGJvb2wgSW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKE9wY29kZSBvcGNv
ZGUpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxF
KENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxF
KExMSU5UKQogICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm4gb3Bjb2RlID49IDAg
JiYgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29kZSkp
IDw9IG9wX2VuZDsKKyNlbmRpZgogICAgIHJldHVybiBvcGNvZGUgIT0gSGFzaFRyYWl0czxPcGNv
ZGU+OjplbXB0eVZhbHVlKCkKICAgICAgICAgJiYgIUhhc2hUcmFpdHM8T3Bjb2RlPjo6aXNEZWxl
dGVkVmFsdWUob3Bjb2RlKQogICAgICAgICAmJiBtX29wY29kZUlEVGFibGUuY29udGFpbnMob3Bj
b2RlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAog
I2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09i
amVjdC5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2lu
Y2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgogCkBAIC00NSw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBKU0Z1bmN0aW9uOwog
ICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAg
ICBjbGFzcyBTY29wZUNoYWluTm9kZTsKQEAgLTkwLDE5ICs5MiwyMSBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBD
YWNoZWRDYWxsOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIHB1YmxpYzoKICAgICAgICAgSW50ZXJwcmV0
ZXIoKTsKKyAgICAgICAgfkludGVycHJldGVyKCk7CiAgICAgICAgIAotICAgICAgICB2b2lkIGlu
aXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQpOworICAgICAgICB2b2lkIGluaXRpYWxpemUoTExJbnQ6
OkRhdGEqLCBib29sIGNhblVzZUpJVCk7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3Rl
ckZpbGUoKSB7IHJldHVybiBtX3JlZ2lzdGVyRmlsZTsgfQogICAgICAgICAKICAgICAgICAgT3Bj
b2RlIGdldE9wY29kZShPcGNvZGVJRCBpZCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJU
KG1faW5pdGlhbGl6ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQor
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAg
ICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVUYWJsZVtpZF07CiAjZWxzZQogICAgICAgICAgICAg
cmV0dXJuIGlkOwpAQCAtMTEyLDcgKzExNiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
T3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogICAgICAgICAg
ICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVS
UFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShv
cGNvZGUpKTsKKyAgICAgICAgICAgIHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7
CisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgICAgIEFT
U0VSVChpc09wY29kZShvcGNvZGUpKTsKICAgICAgICAgICAgIGlmICghbV9lbmFibGVkKQogICAg
ICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4ob3Bjb2RlKSk7CkBAIC0xODksNyArMTk2LDEwIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIFJlZ2lzdGVyRmlsZSBtX3JlZ2lzdGVyRmlsZTsKICAgICAgICAgCi0jaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAg
ICBPcGNvZGUqIG1fb3Bjb2RlVGFibGU7IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bjb2RlIGZvciBj
b21waWxpbmcKKyAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29wY29kZUlEVGFi
bGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZworI2VsaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgIE9wY29kZSBtX29wY29kZVRh
YmxlW251bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bjb2RlIGZvciBjb21waWxp
bmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29wY29kZUlEVGFibGU7IC8v
IE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZwogI2VuZGlmCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCShy
ZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVn
aXN0ZXJGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAgICBjbGFzcyBERkdDb2RlQmxv
Y2tzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIFJlZ2lz
dGVyRmlsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlZ2lzdGVyRmlsZSk7CkBA
IC04MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRl
OgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAK
ICAgICAgICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIqKTsKICAgICAgICAgdm9pZCByZWxl
YXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9pZCBhZGRUb0NvbW1pdHRlZEJ5dGVDb3Vu
dChsb25nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5W
YWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2Fs
bFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKworI2luY2x1ZGUg
IkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIklubGluZUFTTS5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElP
TiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhP
U1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhl
Y1N0YXRlKEV4ZWNTdGF0ZSopOworCisjaWYgQ1BVKFg4Nl82NCkKK2FzbSAoCisiLmdsb2JsICIg
U1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5H
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJXIxMyksICVy
MTNcbiIKKyAgICAibW92ICVyMTMsICVyZGlcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19S
RUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOwor
I2VsaWYgQ1BVKFg4NikKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKKyAgICAibW92ICVlZGksIDQo
JWVzcClcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKEFSTV9USFVNQjIp
Cithc20gKAorIi50ZXh0IiAiXG4iCisiLmFsaWduIDIiICJcbiIKKyIuZ2xvYmwgIiBTWU1CT0xf
U1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lNQk9MKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKKyIudGh1bWIiICJcbiIKKyIudGh1bWJfZnVuYyAiIFRIVU1C
X0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJsZHIgcjUsIFtyNSwgIy00MF0i
ICJcbiIKKyAgICAiY3B5IHIwLCByNSIgIlxuIgorICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxP
Q0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2Vu
ZGlmCisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9P
UFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RD
YWxsUmV0dXJuVmFsdWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKyNkZWZpbmUg
SG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNp
ZiBDQUxMSU5HX0NPTlZFTlRJT05fSVNfU1REQ0FMTAorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJO
X1ZBTFVFX09QVElPTiBDREVDTAorI2Vsc2UKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxV
RV9PUFRJT04KKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKK2V4dGVybiAiQyIgRW5jb2RlZEpT
VmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSgpOworfQorCisjZW5kaWYgLy8gSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw4IEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3By
b2ZpbGVfd2lsbF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9uZXdfc2NvcGUpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXNoX3Njb3BlKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWw6CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklO
RV9PUChvcF9wdXRfYnlfaW5kZXgpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsKQpA
QCAtNDg3LDYgKzQ4OSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVf
aW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9w
dXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcmVzb2x2ZV9nbG9iYWwp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDb21tb25faAorI2RlZmluZSBMTEludENvbW1v
bl9oCisKKyNkZWZpbmUgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcgMAorCisjZW5kaWYgLy8gTExJ
bnRDb21tb25faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJMTEludERhdGEuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkluc3RydWN0
aW9uLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wY29k
ZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworRGF0YTo6RGF0YSgp
CisgICAgOiBtX2V4Y2VwdGlvbkluc3RydWN0aW9ucyhuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2Rl
TGVuZ3RoICsgMV0pCisgICAgLCBtX29wY29kZU1hcChuZXcgT3Bjb2RlW251bU9wY29kZUlEc10p
Cit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyArK2kpCisg
ICAgICAgIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9IGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUpOworI2RlZmluZSBP
UENPREVfRU5UUlkob3Bjb2RlLCBsZW5ndGgpIG1fb3Bjb2RlTWFwW29wY29kZV0gPSBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZsbGludF8jI29wY29kZSk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKE9Q
Q09ERV9FTlRSWSk7CisjdW5kZWYgT1BDT0RFX0VOVFJZCit9CisKK0RhdGE6On5EYXRhKCkKK3sK
KyAgICBkZWxldGVbXSBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBkZWxldGVbXSBtX29w
Y29kZU1hcDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBF
TkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnREYXRhX2gKKyNkZWZpbmUgTExJbnRE
YXRhX2gKKworI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJ
bnQgeworCisjaWYgRU5BQkxFKExMSU5UKQorY2xhc3MgRGF0YSB7CitwdWJsaWM6CisgICAgRGF0
YSgpOworICAgIH5EYXRhKCk7CisgICAgCisgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3Ry
dWN0aW9ucygpCisgICAgeworICAgICAgICByZXR1cm4gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7
CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX29wY29kZU1hcDsKKyAgICB9Citwcml2YXRlOgorICAgIEluc3RydWN0aW9uKiBtX2V4
Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBPcGNvZGUqIG1fb3Bjb2RlTWFwOworfTsKKyNlbHNl
IC8vIEVOQUJMRShMTElOVCkKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Np
bmctbm9yZXR1cm4iCisjZW5kaWYKKworY2xhc3MgRGF0YSB7CitwdWJsaWM6CisgICAgSW5zdHJ1
Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQorICAgIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfTsKKworI2lmIENPTVBJTEVS
KENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisKKyNlbmRpZiAv
LyBFTkFCTEUoTExJTlQpCisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYg
Ly8gTExJbnREYXRhX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCisKKyNpbmNsdWRlICJD
YWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnN0cnVjdGlv
bi5oIgorI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVy
cHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitJbnN0cnVj
dGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sK
KyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAg
IGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBj
IC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAg
IHJldHVybiBnbG9iYWxEYXRhLT5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9
CisKK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQor
eworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7Cisg
ICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwg
cGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisg
ICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2R1cmluZ19jYWxsX3Ry
YW1wb2xpbmUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RXhjZXB0aW9uc19oCisjZGVmaW5lIExMSW50
RXhjZXB0aW9uc19oCisKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVz
cGFjZSBMTEludCB7CisKKy8vIFNhdmVzIHRoZSBjdXJyZW50IFBDIGluIHRoZSBnbG9iYWwgZGF0
YSBmb3Igc2FmZS1rZWVwaW5nLCBhbmQgZ2l2ZXMgeW91IGEgUEMKKy8vIHRoYXQgeW91IGNhbiB0
ZWxsIHRoZSBpbnRlcnByZXRlciB0byBnbyB0bywgd2hpY2ggd2hlbiBhZHZhbmNlZCBiZXR3ZWVu
IDEKKy8vIGFuZCA5IHNsb3RzIHdpbGwgZ2l2ZSB5b3UgYW4gImluc3RydWN0aW9uIiB0aGF0IHRo
cmVhZHMgdG8gdGhlIGludGVycHJldGVyJ3MKKy8vIGV4Y2VwdGlvbiBoYW5kbGVyLiBOb3RlIHRo
YXQgaWYgeW91IGdpdmUgaXQgdGhlIFBDIGZvciBleGNlcHRpb24gaGFuZGxpbmcsCisvLyBpdCdz
IHNtYXJ0IGVub3VnaCB0byBqdXN0IHJldHVybiB0aGF0IFBDIHdpdGhvdXQgZG9pbmcgYW55dGhp
bmcgZWxzZTsgdGhpcworLy8gbGV0cyB5b3UgdGhyZWFkIGV4Y2VwdGlvbiBoYW5kbGluZyB0aHJv
dWdoIGNvbW1vbiBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgYnkKKy8vIG90aGVyIGhlbHBlcnMuCitJ
bnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOworCisv
LyBVc2UgdGhpcyB3aGVuIHlvdSdyZSB0aHJvd2luZyB0byBhIGNhbGwgdGh1bmsuCit2b2lkKiBj
YWxsVG9UaHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOworCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50RXhjZXB0aW9uc19oCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDExMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50SGVs
cGVycy5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgi
CisjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5W
YWx1ZS5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSlNBY3RpdmF0aW9u
LmgiCisjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1
bmN0aW9ucy5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRl
ICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRl
ICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTG93
TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKKyNkZWZpbmUgTExJTlRfT1AoaW5kZXgpIChleGVj
LT5yZWdpc3RlcnMoKVtwY1tpbmRleF0udS5vcGVyYW5kXSkKKyNkZWZpbmUgTExJTlRfT1BfQyhp
bmRleCkgKGV4ZWMtPnIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisKKyNkZWZpbmUgTExJTlRfUkVU
VVJOX1RXTyhmaXJzdCwgc2Vjb25kKSBkbyB7ICAgICAgIFwKKyAgICAgICAgdW5pb24geyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHN0cnVjdCB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB2b2lkKiBhOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB2b2lkKiBiOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gcGFpcjsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGludDY0X3QgaTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSBfX3J0X3U7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgX19ydF91LnBhaXIuYSA9IGZpcnN0OyAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgX19ydF91LnBhaXIuYiA9IHNlY29uZDsgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fcnRfdS5pOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9FTkRfSU1QTCgpIExM
SU5UX1JFVFVSTl9UV08ocGMsIGV4ZWMpCisKKyNkZWZpbmUgTExJTlRfVEhST1coZXhjZXB0aW9u
VG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNHbG9iYWxE
YXRhJiBfX3RfZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsgICAgICAgIFwKKyAgICAg
ICAgX190X2dsb2JhbERhdGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAg
ICAgIFwKKyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2Rl
ZmluZSBMTElOVF9DSEVDS19FWENFUFRJT04oKSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIGlmIChVTkxJS0VMWShleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgeyAgIFwK
KyAgICAgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9FTkQoKSBkbyB7ICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsg
ICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0JSQU5DSChv
cGNvZGUsIGNvbmRpdGlvbikgZG8geyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGJv
b2wgX19iX2NvbmRpdGlvbiA9IChjb25kaXRpb24pOyAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIGlmIChfX2JfY29uZGl0aW9uKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwYyArPSBwY1tPUENPREVfTEVO
R1RIKG9wY29kZSkgLSAxXS51Lm9wZXJhbmQ7ICAgICAgICBcCisgICAgICAgIGVsc2UgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wY29kZSk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfUkVU
VVJOKHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNWYWx1ZSBfX3JfcmV0
dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfT1AoMSkgPSBfX3JfcmV0dXJuVmFs
dWU7ICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0VORF9J
TVBMKGV4ZWMsIGNhbGxUYXJnZXQpIExMSU5UX1JFVFVSTl9UV08oKGV4ZWMpLCAoY2FsbFRhcmdl
dCkpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgZXhjZXB0aW9uVG9UaHJv
dykgZG8geyAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2N0X2V4ZWMgPSAo
ZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1
Y3Rpb24qIF9fY3RfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBfX2N0X2dsb2JhbERhdGEgPSAoX19jdF9leGVjKS0+
Z2xvYmFsRGF0YSgpOyAgICAgIFwKKyAgICAgICAgX19jdF9nbG9iYWxEYXRhLmV4Y2VwdGlvbiA9
IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0FM
TF9FTkRfSU1QTChfX2N0X2V4ZWMsIGNhbGxUb1Rocm93KF9fY3RfZXhlYywgX19jdF9wYykpOyBc
CisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJ
T04oZXhlYywgcGMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0
YXRlKiBfX2NjZV9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY2NlX3BjID0gKHBjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKF9fY2NlX2V4ZWMtPmds
b2JhbERhdGEoKS5leGNlcHRpb24pKSAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5U
X0NBTExfRU5EX0lNUEwoX19jY2VfZXhlYywgY2FsbFRvVGhyb3coX19jY2VfZXhlYywgX19jY2Vf
cGMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfUkVUVVJO
KGV4ZWMsIHBjLCBjYWxsVGFyZ2V0KSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IEV4ZWNTdGF0ZSogX19jcl9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2NyX3BjID0gKHBjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHZvaWQqIF9fY3JfY2FsbFRhcmdl
dCA9IChjYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExM
SU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKF9fY3JfZXhlYy0+Y2FsbGVyRnJhbWUoKSwgX19jcl9w
Yyk7ICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jcl9leGVjLCBfX2NyX2NhbGxU
YXJnZXQpOyAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKK0xMSU5UX0hF
TFBFUl9ERUNMKGVudHJ5X29zcikKK3sKKyAgICAvLyBGSVhNRQorICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChsb29wX29zcikKK3sKKyAgICAvLyBGSVhNRQorICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKQoreworICAgIC8vIEZJ
WE1FCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2Zp
bGVfY2hlY2spCit7CisgICAgLy8gRklYTUUKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICAvLyBGSVhNRQorICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0X2Fy
aXR5Q2hlY2spCit7CisgICAgLy8gRklYTUUKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQoreworICAgIEpTQWN0aXZhdGlv
biogYWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYywgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlYy0+Y29kZUJsb2NrKCkt
Pm93bmVyRXhlY3V0YWJsZSgpKSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29w
ZUNoYWluKCktPnB1c2goYWN0aXZhdGlvbikpOworICAgIExMSU5UX1JFVFVSTihKU1ZhbHVlKGFj
dGl2YXRpb24pKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVu
dHMpCit7CisgICAgTExJTlRfUkVUVVJOKEpTVmFsdWUoQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3Jl
YXRlX3RoaXMpCit7CisgICAgSlNGdW5jdGlvbiogY29uc3RydWN0b3IgPSBhc0Z1bmN0aW9uKGV4
ZWMtPmNhbGxlZSgpKTsKKyAgICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgQ29uc3RydWN0
RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIEFTU0VSVChjb25zdHJ1Y3Rvci0+bWV0aG9kVGFibGUo
KS0+Z2V0Q29uc3RydWN0RGF0YShjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSkgPT0gQ29uc3Ry
dWN0VHlwZUpTKTsKKyNlbmRpZgorICAgIAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOworICAg
IEpTVmFsdWUgcHJvdG8gPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKHByb3RvLmlz
T2JqZWN0KCkpCisgICAgICAgIHN0cnVjdHVyZSA9IGFzT2JqZWN0KHByb3RvKS0+aW5oZXJpdG9y
SUQoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBlbHNlCisgICAgICAgIHN0cnVjdHVyZSA9IGNv
bnN0cnVjdG9yLT5zY29wZSgpLT5nbG9iYWxPYmplY3QtPmVtcHR5T2JqZWN0U3RydWN0dXJlKCk7
CisgICAgCisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVj
dHVyZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29udmVydF90aGlzKQorewor
ICAgIEpTVmFsdWUgdjEgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHYxLmlz
UHJpbWl0aXZlKCkpOworICAgIExMSU5UX1JFVFVSTih2MS50b1RoaXNPYmplY3QoZXhlYykpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVjdCkKK3sKKyAgICBMTElOVF9S
RVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbmV3X2FycmF5KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RBcnJheShl
eGVjLCBiaXR3aXNlX2Nhc3Q8SlNWYWx1ZSo+KCZMTElOVF9PUCgyKSksIHBjWzNdLnUub3BlcmFu
ZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZlcikKK3sK
KyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCkt
PmNvbnN0YW50QnVmZmVyKHBjWzJdLnUub3BlcmFuZCksIHBjWzNdLnUub3BlcmFuZCkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCkKK3sKKyAgICBSZWdFeHAqIHJl
Z0V4cCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZWdleHAocGNbMl0udS5vcGVyYW5kKTsKKyAgICBp
ZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVTeW50YXhF
cnJvcihleGVjLCAiSW52YWxpZCBmbGFnIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4i
KSk7CisgICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdFeHApKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25vdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFMTElOVF9PUCgy
KS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9lcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4
ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbighSlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0
cmljdGVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6c3RyaWN0RXF1
YWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3RlcSkKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUCgy
KS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbGVzcykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVz
czx0cnVlPihleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKQoreworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1AoMikuanNW
YWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dyZWF0ZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8
ZmFsc2U+KGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1AoMiku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3ByZV9pbmMpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5U
X09QKDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSArIDEpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3ByZV9kZWMpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5U
X09QKDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAtIDEpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Bvc3RfaW5jKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgy
KS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihy
ZXN1bHQgKyAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0g
TExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0g
anNOdW1iZXIocmVzdWx0IC0gMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKQoreworICAgIExMSU5UX1JF
VFVSTihqc051bWJlcigtTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpCit7CisgICAgSlNWYWx1ZSB2MSA9IExM
SU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHYyID0gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCk7CisgICAgCisgICAgaWYgKHYxLmlzU3RyaW5nKCkpIHsKKyAgICAgICAgTExJTlRfUkVU
VVJOKAorICAgICAgICAgICAgdjIuaXNTdHJpbmcoKQorICAgICAgICAgICAgPyBqc1N0cmluZyhl
eGVjLCBhc1N0cmluZyh2MSksIGFzU3RyaW5nKHYyKSkKKyAgICAgICAgICAgIDoganNTdHJpbmco
ZXhlYywgYXNTdHJpbmcodjEpLCB2Mi50b1ByaW1pdGl2ZVN0cmluZyhleGVjKSkpOworICAgIH0K
KyAgICAKKyAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIodjEuYXNOdW1iZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKKyAg
ICAKKyAgICBMTElOVF9SRVRVUk4oanNBZGRTbG93Q2FzZShleGVjLCB2MSwgdjIpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICogTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3N1YikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgp
LnRvTnVtYmVyKGV4ZWMpIC0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RpdikKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX21vZCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoZm1vZChMTElOVF9P
UCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRv
TnVtYmVyKGV4ZWMpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KQor
eworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQz
MihleGVjKSA8PCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KQoreworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA+PiBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfdXJzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMiku
anNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUlu
dDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4
ZWMpICYgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSB8IExMSU5UX09QX0MoMykuanNW
YWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9i
aXR4b3IpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUo
KS50b0ludDMyKGV4ZWMpIF4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCkKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIofkxMSU5UX09QKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpCit7CisgICAg
SlNWYWx1ZSBiYXNlVmFsID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworI2lmbmRlZiBOREVCVUcK
KyAgICBUeXBlSW5mbyB0eXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VSVCghYmFz
ZVZhbC5pc09iamVjdCgpCisgICAgICAgICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVjdChiYXNl
VmFsKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKTsK
KyNlbmRpZgorICAgIExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4ZWMsICJp
bnN0YW5jZW9mIiwgYmFzZVZhbCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5z
dGFuY2VvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6
b3BJbnN0YW5jZU9mU2xvdyhleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMp
LmpzVmFsdWUoKSwgTExJTlRfT1AoNCkuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfdHlwZW9mKQoreworICAgIExMSU5UX1JFVFVSTihqc1R5cGVTdHJpbmdGb3JW
YWx1ZShleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2lzX3VuZGVmaW5lZCkKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgyKS5q
c1ZhbHVlKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbih2LmlzQ2VsbCgpID8gdi5hc0Nl
bGwoKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpIDog
di5pc1VuZGVmaW5lZCgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29s
ZWFuKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1AoMikuanNWYWx1ZSgp
LmlzQm9vbGVhbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIp
Cit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUCgyKS5qc1ZhbHVlKCkuaXNO
dW1iZXIoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oaXNKU1N0cmluZyhMTElOVF9PUCgyKS5qc1ZhbHVl
KCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3QpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzT2JqZWN0VHlwZShMTElOVF9PUCgyKS5qc1ZhbHVl
KCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbikKK3sKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUoTExJTlRfT1AoMikuanNW
YWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4pCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW4oZXhlYywgTExJTlRfT1Ao
MikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9yZXNvbHZlKQoreworICAgIExMSU5UX1JFVFVSTihDb21tb25TbG93UGF0
aHM6Om9wUmVzb2x2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51
Lm9wZXJhbmQpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXAp
Cit7CisgICAgTExJTlRfUkVUVVJOKAorICAgICAgICBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2
ZVNraXAoCisgICAgICAgICAgICBleGVjLAorICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCkt
PmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwKKyAgICAgICAgICAgIHBjWzNdLnUub3BlcmFu
ZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCit7Cisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBB
U1NFUlQoZ2xvYmFsT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkg
PSBwY1syXS51Lm9wZXJhbmQ7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0
cnVjdHVyZS5nZXQoKTsKKyAgICBpbnQgb2Zmc2V0ID0gcGNbNF0udS5vcGVyYW5kOworICAgIAor
ICAgIEFTU0VSVCgoIXN0cnVjdHVyZSkgPT0gKCFvZmZzZXQpKTsKKyAgICBBU1NFUlQoc3RydWN0
dXJlICE9IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXIm
IGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChnbG9iYWxPYmplY3QpOworICAgIAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFBy
b3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQg
PSBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFi
bGVWYWx1ZSgpICYmICFnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGlj
dGlvbmFyeSgpCisgICAgICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0
KSB7CisgICAgICAgICAgICBwY1szXS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxP
YmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIHBjWzRdID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgTExJTlRfUkVUVVJOKHJlc3VsdCk7
CisgICAgfQorICAgIAorICAgIExMSU5UX1RIUk9XKGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJy
b3IoZXhlYywgaWRlbnQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVf
YmFzZSkKK3sKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVu
dGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKHBjWzNdLnUub3BlcmFuZCkgeworICAg
ICAgICBKU1ZhbHVlIGJhc2UgPSBKU0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5z
Y29wZUNoYWluKCksIHRydWUpOworICAgICAgICBpZiAoIWJhc2UpCisgICAgICAgICAgICBMTElO
VF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50
LnVzdHJpbmcoKSkpOworICAgICAgICBMTElOVF9SRVRVUk4oYmFzZSk7CisgICAgfQorICAgIAor
ICAgIExMSU5UX1JFVFVSTihKU0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29w
ZUNoYWluKCksIGZhbHNlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVf
cHJvcGVydHlfZXhpc3RzKQoreworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChMTElO
VF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CisgICAg
SWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51
Lm9wZXJhbmQpOworICAgIGlmICghb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQs
IHNsb3QpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxB
c3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpCit7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhCYXNlKGV4ZWMsIGV4
ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEp
KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3Vs
dDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmVfd2l0aF90aGlzKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjpv
cFJlc29sdmVXaXRoVGhpcyhleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1sz
XS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7
CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9j
ay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
TExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7
CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3Qp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDEpID0gcmVzdWx0
OworCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVh
YmxlKCkKKyAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAm
JiBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAg
ICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7Cisg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAg
ICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkK
KyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlD
YWNoaW5nKCkpIHsKKyAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAg
ICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCks
IHN0cnVjdHVyZSk7CisgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9m
ZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19s
ZW5ndGgpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsK
KyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9w
ZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOwor
ICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisgICAgTExJTlRfUkVUVVJOKGJhc2VW
YWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3B1dF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVC
bG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBj
WzJdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUCgxKS5qc1Zh
bHVlKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSk7CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwgTExJTlRfT1AoMykuanNWYWx1ZSgp
LCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBpZiAoYmFz
ZVZhbHVlLmlzQ2VsbCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKSkgeworICAgICAg
ICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAg
IAorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAg
ICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hp
bmcoKQorICAgICAgICAgICAgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3
UHJvcGVydHkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywg
YmFzZUNlbGwpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNT
RVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBd
LnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgICAgICBwY1s0XS51
LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRh
KCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgp
KTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNl0udS5zdHJ1
Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAg
ICAgICBwY1s3XS51LnN0cnVjdHVyZUNoYWluLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0
dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgcGNbNF0udS5z
dHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAg
cGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCkKK3sKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvT2JqZWN0KGV4ZWMpOworICAgIGJvb2wgY291
bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNl
T2JqZWN0LCBleGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSk7Cisg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJy
b3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgIExMSU5UX1JFVFVS
Tihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKworaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwo
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCit7
CisgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5n
KCkpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+
ZmFzdEdldE93blByb3BlcnR5KGV4ZWMsIGFzU3RyaW5nKHN1YnNjcmlwdCktPnZhbHVlKGV4ZWMp
KSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIGlmIChzdWJz
Y3JpcHQuaXNVSW50MzIoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUlu
dDMyKCk7CisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFz
ZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICByZXR1cm4gYXNTdHJpbmcoYmFz
ZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAorICAgICAgICBpZiAoaXNKU0J5
dGVBcnJheShiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0lu
ZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdldElu
ZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhl
YywgaSk7CisgICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2Ny
aXB0LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBwcm9w
ZXJ0eSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKQoreworICAg
IExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5U
X09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2Fy
Z3VtZW50X2J5X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IExMSU5UX09QKDIpLmpz
VmFsdWUoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykgeworICAgICAgICBhcmd1bWVudHMgPSBBcmd1
bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpOworICAgICAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgTExJTlRfT1AoMikgPSBhcmd1bWVudHM7CisgICAg
fQorICAgIAorICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBhcmd1bWVudHMsIExMSU5U
X09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5
X3BuYW1lKQoreworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBMTElOVF9PUCgyKS5q
c1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHV0X2J5X3ZhbCkKK3sKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBl
eGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9P
UCgxKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUCgyKS5qc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QKDMpLmpzVmFsdWUoKTsKKyAgICAK
KyAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgeworICAgICAgICB1aW50MzJf
dCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZh
bHVlKSkgeworICAgICAgICAgICAgSlNBcnJheSoganNBcnJheSA9IGFzQXJyYXkoYmFzZVZhbHVl
KTsKKyAgICAgICAgICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkKKyAgICAgICAgICAg
ICAgICBqc0FycmF5LT5zZXRJbmRleChnbG9iYWxEYXRhLCBpLCB2YWx1ZSk7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgSlNBcnJheTo6cHV0QnlJbmRleChqc0FycmF5LCBleGVj
LCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgfQorICAgICAg
ICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpCisgICAgICAgICAgICAmJiBhc0J5dGVBcnJh
eShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICAgICAgSlNCeXRlQXJy
YXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlm
ICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5k
ZXgoaSwgdmFsdWUuYXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAg
ICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzTnVtYmVyKCkpOworICAg
ICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaSwgdmFsdWUpOworICAgICAgICBMTElOVF9FTkQoKTsK
KyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9T
dHJpbmcoZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgYmFz
ZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCkKK3sKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogYmFz
ZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICAKKyAgICBKU1ZhbHVlIHN1
YnNjcmlwdCA9IExMSU5UX09QKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBib29sIGNvdWxkRGVs
ZXRlOworICAgIAorICAgIHVpbnQzMl90IGk7CisgICAgaWYgKHN1YnNjcmlwdC5nZXRVSW50MzIo
aSkpCisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KGJhc2VPYmplY3QsIGV4ZWMsIGkpOworICAgIGVsc2UgeworICAg
ICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0
eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYykpOworICAgICAgICBMTElOVF9DSEVDS19F
WENFUFRJT04oKTsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBwcm9wZXJ0eSk7CisgICAgfQor
ICAgIAorICAgIGlmICghY291bGREZWxldGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0
TW9kZSgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJs
ZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0Jvb2xl
YW4oY291bGREZWxldGUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9p
bmRleCkKK3sKKyAgICBMTElOVF9PUCgxKS5qc1ZhbHVlKCkucHV0KGV4ZWMsIHBjWzJdLnUub3Bl
cmFuZCwgTExJTlRfT1AoMykuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIpCit7CisgICAgQVNTRVJUKExMSU5UX09Q
KDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2Jq
ZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVj
LT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEFTU0VSVChM
TElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgYmFzZU9iai0+bWV0aG9kVGFi
bGUoKS0+ZGVmaW5lR2V0dGVyKGJhc2VPYmosIGV4ZWMsIGlkZW50LCBhc09iamVjdChMTElOVF9P
UCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpCit7CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFs
dWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5U
X09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxv
Y2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEFTU0VSVChMTElOVF9PUCgz
KS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVm
aW5lU2V0dGVyKGJhc2VPYmosIGV4ZWMsIGlkZW50LCBhc09iamVjdChMTElOVF9PUCgzKS5qc1Zh
bHVlKCkpLCAwKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2ptcF9zY29wZXMpCit7CisgICAgdW5zaWduZWQgY291bnQgPSBwY1sxXS51Lm9wZXJhbmQ7
CisgICAgU2NvcGVDaGFpbk5vZGUqIHRtcCA9IGV4ZWMtPnNjb3BlQ2hhaW4oKTsKKyAgICB3aGls
ZSAoY291bnQtLSkKKyAgICAgICAgdG1wID0gdG1wLT5wb3AoKTsKKyAgICBleGVjLT5zZXRTY29w
ZUNoYWluKHRtcCk7CisgICAgcGMgKz0gcGNbMl0udS5vcGVyYW5kOworICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpCit7CisgICAgTExJTlRfQlJB
TkNIKG9wX2p0cnVlLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pmYWxzZSkKK3sKKyAgICBMTElOVF9CUkFOQ0go
b3BfamZhbHNlLCAhTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcykKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bf
amxlc3MsIGpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVz
cykKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzLCAhanNMZXNzPHRydWU+KGV4ZWMsIExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXIpCit7CisgICAgTExJTlRfQlJBTkNIKG9w
X2pncmVhdGVyLCBqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
am5ncmVhdGVyKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmdyZWF0ZXIsICFqc0xlc3M8ZmFs
c2U+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3NlcSkKK3sKKyAgICBMTElO
VF9CUkFOQ0gob3Bfamxlc3NlcSwganNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9qbmxlc3NlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzZXEsICFq
c0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEp
Cit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVhdGVyZXEsIGpzTGVzc0VxPGZhbHNlPihleGVj
LCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JS
QU5DSChvcF9qbmdyZWF0ZXJlcSwgIWpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDEp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3N3aXRjaF9pbW0pCit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElO
VF9PUCgzKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHNjcnV0aW5lZS5pc0RvdWJsZSgpKTsKKyAg
ICBkb3VibGUgdmFsdWUgPSBzY3J1dGluZWUuYXNEb3VibGUoKTsKKyAgICBpbnQzMl90IGludFZh
bHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpOworICAgIGludCBkZWZhdWx0T2Zmc2V0
ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlmICh2YWx1ZSA9PSBpbnRWYWx1ZSkgeworICAgICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyAr
PSBjb2RlQmxvY2stPmltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9m
ZnNldEZvclZhbHVlKGludFZhbHVlLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpCit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUg
PSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51
Lm9wZXJhbmQ7CisgICAgaWYgKCFzY3J1dGluZWUuaXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0g
ZGVmYXVsdE9mZnNldDsKKyAgICBlbHNlIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0
Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1
dGluZWUpLT52YWx1ZShleGVjKS5pbXBsKCksIGRlZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKQorewor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgQVNTRVJU
KGNvZGVCbG9jay0+Y29kZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUKKyAgICAgICAgICAgfHwgIWNv
ZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpCisgICAgICAgICAgIHx8IGV4ZWMtPnVuY2hl
Y2tlZFIoY29kZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKKyAgICBM
TElOVF9SRVRVUk4oY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbMl0udS5vcGVyYW5kKS0+bWFr
ZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25ld19mdW5jX2V4cCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNv
ZGVCbG9jaygpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2st
PmZ1bmN0aW9uRXhwcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBm
dW5jdGlvbi0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpOworICAgIAorICAgIGlmICgh
ZnVuY3Rpb24tPm5hbWUoKS5pc051bGwoKSkgeworICAgICAgICBKU1N0YXRpY1Njb3BlT2JqZWN0
KiBmdW5jdGlvblNjb3BlT2JqZWN0ID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMs
IGZ1bmN0aW9uLT5uYW1lKCksIGZ1bmMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAg
IGZ1bmMtPnNldFNjb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuYy0+c2NvcGUoKS0+cHVzaChm
dW5jdGlvblNjb3BlT2JqZWN0KSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihmdW5j
KTsKK30KKworc3RhdGljIEhlbHBlclJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRl
KiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+
Y2FsbGVyRnJhbWUoKTsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xv
YmFsRGF0YSgpOworCisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNo
YWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKworICAgIGlmIChraW5k
ID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgICAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxlZSwgY2FsbERhdGEpOworICAgIAor
ICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVKUyk7CisgICAgCisgICAgICAgIGlm
IChjYWxsVHlwZSA9PSBDYWxsVHlwZUhvc3QpIHsKKyAgICAgICAgICAgIGdsb2JhbERhdGEtPmhv
c3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0
aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTExJTlRfQ0FMTF9S
RVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBBU1NFUlQoY2FsbFR5cGUg
PT0gQ2FsbFR5cGVOb25lKTsKKyAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3Jl
YXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CisgICAgfQorCisgICAgQVNTRVJU
KGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgCisgICAgQ29uc3RydWN0RGF0YSBjb25z
dHJ1Y3REYXRhOworICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVj
dERhdGEoY2FsbGVlLCBjb25zdHJ1Y3REYXRhKTsKKyAgICAKKyAgICBBU1NFUlQoY29uc3RydWN0
VHlwZSAhPSBDb25zdHJ1Y3RUeXBlSlMpOworICAgIAorICAgIGlmIChjb25zdHJ1Y3RUeXBlID09
IENvbnN0cnVjdFR5cGVIb3N0KSB7CisgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0dXJu
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhl
Y0NhbGxlZSkpOworICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICAKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSk7CisgICAg
TExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhl
YywgY2FsbGVlKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUsIFdyaXRlQmFycmllckJhc2U8SlNDZWxsPiog
ZXhwZWN0ZWRGdW5jdGlvbiA9IDAsIHZvaWQqKiBtYWNoaW5lQ29kZSA9IDApCit7CisgICAgQVNT
RVJUKCFleHBlY3RlZEZ1bmN0aW9uID09ICFtYWNoaW5lQ29kZSk7CisgICAgCisgICAgSlNDZWxs
KiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSk7Cisg
ICAgaWYgKCFjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RD
YWxsKGV4ZWNDYWxsZWUsIHBjLCBjYWxsZWVBc1ZhbHVlLCBraW5kKTsKKyAgICAKKyAgICBKU0Z1
bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBl
eGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKSk7CisgICAg
RXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAgICAK
KyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IDA7CisgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAg
IGNvZGVQdHIgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NG
b3JDYWxsKCk7CisgICAgZWxzZSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJs
ZSk7CisgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGls
ZUZvcihleGVjQ2FsbGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOworICAgICAgICBpZiAoZXJy
b3IpCisgICAgICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1l
KCksIHBjLCBlcnJvcik7CisgICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUt
PmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2Nr
LT5tX251bVBhcmFtZXRlcnMpKQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+Z2VuZXJhdGVkSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRK
SVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgfQorICAgIAorICAgIGlmIChl
eHBlY3RlZEZ1bmN0aW9uKSB7CisgICAgICAgIGV4cGVjdGVkRnVuY3Rpb24tPnNldChleGVjQ2Fs
bGVlLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZUFz
RnVuY3Rpb25DZWxsKTsKKyAgICAgICAgKm1hY2hpbmVDb2RlID0gY29kZVB0ci5leGVjdXRhYmxl
QWRkcmVzcygpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVl
LCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKK30KKworaW5saW5lIEhlbHBlclJl
dHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAg
IC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBj
YWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIElmIHBvc3NpYmxlLCBs
aW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2Yg
bWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAg
IAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAg
ICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOwor
ICAgIAorICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJd
LnUub3BlcmFuZCk7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNh
bGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4
ZWMpOworICAgIAorICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIGtpbmQsIGNh
bGxlZUFzVmFsdWUsICZwY1s0XS51LmpzQ2VsbCwgJnBjWzVdLnUucG9pbnRlcik7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKQoreworICAgIHJldHVybiBnZW5lcmljQ2FsbChl
eGVjLCBwYywgQ29kZUZvckNhbGwpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29u
c3RydWN0KQoreworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0
cnVjdCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpCit7Cisg
ICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUgd2hpbGUg
cmVzcGVjdGluZyB0aGUgdmFyaWFibGUgYXJndW1lbnRzLgorICAgIC8vIC0gRmlndXJlIG91dCB3
aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gUmV0dXJu
IGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxs
IGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QKDEpLmpz
VmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBsb2FkVmFyYXJncygK
KyAgICAgICAgZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJG
aWxlKCksCisgICAgICAgIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1
ZSgpLCBwY1s0XS51Lm9wZXJhbmQpOworICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4
ZWMsIHBjKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6
Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUo
ZXhlYyk7CisgICAgCisgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZv
ckNhbGwsIGNhbGxlZUFzVmFsdWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2Fs
bF9ldmFsKQoreworICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFs
dWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5v
cGVyYW5kOworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEo
KTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhw
Y1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOwor
ICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVl
QXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4o
KSk7CisgICAgZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMoYml0d2lzZV9jYXN0PEluc3RydWN0aW9u
Kj4oJmxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29k
ZUJsb2NrKDApOworICAgIAorICAgIGlmICghaXNIb3N0RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwg
Z2xvYmFsRnVuY0V2YWwpKQorICAgICAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBj
LCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7CisgICAgCisgICAgZ2xvYmFsRGF0YS5ob3N0
Q2FsbFJldHVyblZhbHVlID0gZXZhbChleGVjQ2FsbGVlKTsKKyAgICBMTElOVF9DQUxMX1JFVFVS
TihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZh
dGlvbikKK3sKKyAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hh
aW4oKSk7CisgICAgSlNWYWx1ZSBhY3RpdmF0aW9uVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVl
KCk7CisgICAgaWYgKCFhY3RpdmF0aW9uVmFsdWUpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgdiA9
IGV4ZWMtPnJlZ2lzdGVycygpW3VubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9w
ZXJhbmQpXS5qc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGlmICghZXhlYy0+Y29kZUJsb2NrKCkt
PmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT50ZWFyT2Zm
KGV4ZWMpOworICAgICAgICB9CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICBKU0Fj
dGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVlKTsKKyAg
ICBhY3RpdmF0aW9uLT50ZWFyT2ZmKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgaWYgKEpTVmFs
dWUgdiA9IGV4ZWMtPnJlZ2lzdGVycygpW3VubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sy
XS51Lm9wZXJhbmQpXS5qc1ZhbHVlKCkpCisgICAgICAgIGFzQXJndW1lbnRzKHYpLT5kaWRUZWFy
T2ZmQWN0aXZhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGFjdGl2YXRpb24pOworICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRz
KQoreworICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygpICYmICFl
eGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBhc0FyZ3VtZW50
cyhleGVjLT5yZWdpc3RlcnMoKVt1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5v
cGVyYW5kKV0uanNWYWx1ZSgpKS0+dGVhck9mZihleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNhdCkKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNTdHJpbmcoZXhlYywgJkxMSU5UX09QKDIpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4o
TExJTlRfT1AoMikuanNWYWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1Ao
MikuanNWYWx1ZSgpOworICAgIGlmICh2LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAg
cGMgKz0gcGNbNV0udS5vcGVyYW5kOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAg
CisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gby0+c3RydWN0dXJlKCk7CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQ
cm9wZXJ0eU5hbWVJdGVyYXRvciA9IHN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpOworICAg
IGlmICghanNQcm9wZXJ0eU5hbWVJdGVyYXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5j
YWNoZWRQcm90b3R5cGVDaGFpbigpICE9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykp
CisgICAgICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OjpjcmVhdGUoZXhlYywgbyk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBKU1ZhbHVlKGpzUHJv
cGVydHlOYW1lSXRlcmF0b3IpOworICAgIExMSU5UX09QKDIpID0gSlNWYWx1ZShvKTsKKyAgICBM
TElOVF9PUCgzKSA9IFJlZ2lzdGVyOjp3aXRoSW50KDApOworICAgIExMSU5UX09QKDQpID0gUmVn
aXN0ZXI6OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAgICAKKyAg
ICBwYyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFtZXMpOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSkKK3sKKyAgICBKU09iamVj
dCogYmFzZSA9IGFzT2JqZWN0KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CisgICAgSlNTdHJpbmcq
IHByb3BlcnR5ID0gYXNTdHJpbmcoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBpZiAoYmFz
ZS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eS0+dmFsdWUoZXhl
YykpKSkgeworICAgICAgICAvLyBHbyB0byB0YXJnZXQuCisgICAgICAgIHBjICs9IHBjWzZdLnUu
b3BlcmFuZDsKKyAgICB9IC8vIEVsc2UsIGRvbid0IGNoYW5nZSB0aGUgUEMsIHNvIHRoZSBpbnRl
cnByZXRlciB3aWxsIHJlbG9vcC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMSku
anNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKKyAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9IG87CisgICAgZXhl
Yy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2gobykpOworICAgIAorICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9wX3Njb3BlKQor
eworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wb3AoKSk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19z
Y29wZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwor
ICAgIEpTT2JqZWN0KiBzY29wZSA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBj
b2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwgTExJTlRfT1AoMykuanNWYWx1
ZSgpLCBEb250RGVsZXRlKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hh
aW4oKS0+cHVzaChzY29wZSkpOworICAgIExMSU5UX1JFVFVSTihzY29wZSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdykKK3sKKyAgICBMTElOVF9USFJPVyhMTElOVF9PUCgx
KS5qc1ZhbHVlKCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJl
bmNlX2Vycm9yKQoreworICAgIExMSU5UX1RIUk9XKGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMs
IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvU3RyaW5nKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9kZWJ1ZykKK3sKKyAgICBpbnQgZGVidWdIb29rSUQgPSBwY1sxXS51
Lm9wZXJhbmQ7CisgICAgaW50IGZpcnN0TGluZSA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpbnQg
bGFzdExpbmUgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LmludGVycHJldGVyLT5kZWJ1ZyhleGVjLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdI
b29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQoreworICAgICgq
UHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSgpKS0+d2lsbEV4ZWN1dGUoZXhlYywg
TExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCit7CisgICAgKCpQcm9maWxlcjo6ZW5h
YmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT5kaWRFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpz
VmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpM
TEludAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVy
cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50SGVscGVyc19oCisjZGVmaW5l
IExMSW50SGVscGVyc19oCisKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25h
bWVzcGFjZSBMTEludCB7CisKK3R5cGVkZWYgaW50NjRfdCBIZWxwZXJSZXR1cm5UeXBlOworCisj
ZGVmaW5lIExMSU5UX0hFTFBFUl9ERUNMKG5hbWUpIFwKKyAgICBleHRlcm4gIkMiIEhlbHBlclJl
dHVyblR5cGUgbGxpbnRfIyNuYW1lKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQor
CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0wobG9vcF9v
c3IpOworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSk7CitMTElOVF9IRUxQRVJfREVDTChyZWdp
c3Rlcl9maWxlX2NoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hl
Y2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y3JlYXRlX3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVjdCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmV3X2FycmF5KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVm
ZmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfcmVnZXhwKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9ub3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2VxKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmlj
dGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2xlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3NlcSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
b3N0X2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9kZWMpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZWdhdGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2FkZCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbXVsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2Rpdik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3JzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdXJzaGlmdCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfYml0YW5kKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcik7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9iaXRub3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5j
ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfdHlwZW9mKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRlZmlu
ZWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Jvb2xlYW4pOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2lzX251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfc3Ry
aW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3QpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbik7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcmVzb2x2ZV9za2lwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2ds
b2JhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9iYXNlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cmVzb2x2ZV93aXRoX3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
ZGVsX2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9i
eV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHV0X2dldHRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X3NldHRlcik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfam1wX3Njb3Blcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfanRydWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pmYWxzZSk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfamxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2puZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3NlcSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2pncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcmVxKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9zd2l0Y2hfY2hhcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0
cmluZyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmMpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25ld19mdW5jX2V4cCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2Fs
bCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxf
ZXZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbik7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9zdHJjYXQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1p
dGl2ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X3BuYW1lcyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVz
aF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9wX3Njb3BlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfdGhyb3cpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJv
cik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVidWcpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9m
aWxlX2RpZF9jYWxsKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAv
LyBMTEludEhlbHBlcnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKKyNkZWZpbmUgTExJbnRPZmZs
aW5lQXNtQ29uZmlnX2gKKworI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENQVShYODYp
CisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9Y
ODYgMAorI2VuZGlmCisKKyNpZiBDUFUoQVJNdjcpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3
IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDAKKyNlbmRpZgorCisjaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAxCisjZWxz
ZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIENQ
VShCSUdfRU5ESUFOKQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDEKKyNlbHNlCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMAorI2VuZGlmCisKKyNpZiBFTkFCTEUoTExJ
TlRfT1NSX1RPX0pJVCkKKyNkZWZpbmUgT0ZGTElORV9BU01fSklUX0VOQUJMRUQgMQorI2Vsc2UK
KyNkZWZpbmUgT0ZGTElORV9BU01fSklUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBMTElOVF9F
WEVDVVRJT05fVFJBQ0lORworI2RlZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAx
CisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAwCisjZW5kaWYK
KworI2VuZGlmIC8vIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIkFsbG9jYXRpb25TcGFjZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1
ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKKyNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNs
dWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHbG9i
YWxEYXRhLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVj
dC5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0
cmluZy5oIgorI2luY2x1ZGUgIkpTdHlwZUluZm8uaCIKKyNpbmNsdWRlICJKU1ZhcmlhYmxlT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKKyNpbmNsdWRlICJSZWdpc3RlckZp
bGUuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisj
aW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVm
aW5lIE9GRkxJTkVfQVNNX09GRlNFVE9GKGNsYXp6LCBmaWVsZCkgT0JKRUNUX09GRlNFVE9GKGNs
YXp6LCBmaWVsZCkKKworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQqIGR1bW15KCk7Cit9OworCitjb25zdCB1bnNpZ25lZCog
TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpCit7CisjaW5jbHVkZSAiTExJbnREZXNpcmVk
T2Zmc2V0cy5oIgorICAgIHJldHVybiBleHRyYWN0b3JUYWJsZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKK2ludCBtYWluKGludCwgY2hhcioqKQoreworICAgIC8vIE91dCBvZiBhbiBhYnVu
ZGFuY2Ugb2YgY2F1dGlvbiwgbWFrZSBzdXJlIHRoYXQgTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpk
dW1teSgpIGlzIGxpdmUsCisgICAgLy8gYW5kIHRoZSBleHRyYWN0b3JUYWJsZSBpcyBsaXZlLCB0
b28uCisgICAgcHJpbnRmKCIlcFxuIiwgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15
KCkpOworICAgIHJldHVybiAwOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyMjQ1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisKKyMgQ3Jhc2ggY291cnNlIG9uIHRoZSBsYW5ndWFnZSB0aGF0IHRoaXMgaXMg
d3JpdHRlbiBpbiAod2hpY2ggSSBqdXN0IGNhbGwKKyMgImFzc2VtYmx5IiBldmVuIHRob3VnaCBp
dCdzIG1vcmUgdGhhbiB0aGF0KToKKyMKKyMgLSBNb3N0bHkgZ2FzLXN0eWxlIG9wZXJhbmQgb3Jk
ZXJpbmcuIFRoZSBsYXN0IG9wZXJhbmQgdGVuZHMgdG8gYmUgdGhlCisjICAgZGVzdGluYXRpb24u
IFNvICJhIDo9IGIiIGlzIHdyaXR0ZW4gYXMgIm1vdiBiLCBhIi4gQnV0IHVubGlrZSBnYXMsCisj
ICAgY29tcGFyaXNvbnMgYXJlIGluLW9yZGVyLCBzbyAiaWYgKGEgPCBiKSIgaXMgd3JpdHRlbiBh
cworIyAgICJiaWx0IGEsIGIsIC4uLiIuCisjCisjIC0gImIiID0gYnl0ZSwgImgiID0gMTYtYml0
IHdvcmQsICJpIiA9IDMyLWJpdCB3b3JkLCAicCIgPSBwb2ludGVyLgorIyAgIEN1cnJlbnRseSB0
aGlzIGlzIGp1c3QgMzItYml0IHNvICJpIiBhbmQgInAiIGFyZSBpbnRlcmNoYW5nZWFibGUKKyMg
ICBleGNlcHQgd2hlbiBhbiBvcCBzdXBwb3J0cyBvbmUgYnV0IG5vdCB0aGUgb3RoZXIuCisjCisj
IC0gSW4gZ2VuZXJhbCwgdmFsaWQgb3BlcmFuZHMgZm9yIG1hY3JvIGludm9jYXRpb25zIGFuZCBp
bnN0cnVjdGlvbnMgYXJlCisjICAgcmVnaXN0ZXJzIChlZyAidDAiKSwgYWRkcmVzc2VzIChlZyAi
NFt0MF0iKSwgYmFzZS1pbmRleCBhZGRyZXNzZXMKKyMgICAoZWcgIjdbdDAsIHQxLCAyXSIpLCBh
YnNvbHV0ZSBhZGRyZXNzZXMgKGVnICIweGEwMDAwMDAwW10iKSwgb3IgbGFiZWxzCisjICAgKGVn
ICJfZm9vIiBvciAiLmZvbyIpLiBNYWNybyBpbnZvY2F0aW9ucyBjYW4gYWxzbyB0YWtlIGFub255
bW91cworIyAgIG1hY3JvcyBhcyBvcGVyYW5kcy4gSW5zdHJ1Y3Rpb25zIGNhbm5vdCB0YWtlIGFu
b255bW91cyBtYWNyb3MuCisjCisjIC0gTGFiZWxzIG11c3QgaGF2ZSBuYW1lcyB0aGF0IGJlZ2lu
IHdpdGggZWl0aGVyICJfIiBvciAiLiIuICBBICIuIiBsYWJlbAorIyAgIGlzIGxvY2FsIGFuZCBn
ZXRzIHJlbmFtZWQgYmVmb3JlIGNvZGUgZ2VuIHRvIG1pbmltaXplIG5hbWVzcGFjZQorIyAgIHBv
bGx1dGlvbi4gQSAiXyIgbGFiZWwgaXMgYW4gZXh0ZXJuIHN5bWJvbCAoaS5lLiAiLmdsb2JsIiku
IFRoZSAiXyIKKyMgICBtYXkgb3IgbWF5IG5vdCBiZSByZW1vdmVkIGR1cmluZyBjb2RlIGdlbiBk
ZXBlbmRpbmcgb24gd2hldGhlciB0aGUgYXNtCisjICAgY29udmVudGlvbnMgZm9yIEMgbmFtZSBt
YW5nbGluZyBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtIG1hbmRhdGUgYSAiXyIKKyMgICBwcmVmaXgu
CisjCisjIC0gQSAibWFjcm8iIGlzIGEgbGFtYmRhIGV4cHJlc3Npb24sIHdoaWNoIG1heSBiZSBl
aXRoZXIgYW5vbnltb3VzIG9yCisjICAgbmFtZWQuIEJ1dCB0aGlzIGhhcyBjYXZlYXRzLiAibWFj
cm8iIGNhbiB0YWtlIHplcm8gb3IgbW9yZSBhcmd1bWVudHMsCisjICAgd2hpY2ggbWF5IGJlIG1h
Y3JvcyBvciBhbnkgdmFsaWQgb3BlcmFuZHMsIGJ1dCBpdCBjYW4gb25seSByZXR1cm4KKyMgICBj
b2RlLiBCdXQgeW91IGNhbiBkbyBUdXJpbmctY29tcGxldGUgdGhpbmdzIHZpYSBjb250aW51YXRp
b24gcGFzc2luZworIyAgIHN0eWxlOiAibWFjcm8gZm9vIChhLCBiKSBiKGEpIGVuZCBmb28oZm9v
LCBmb28pIi4gQWN0dWFsbHksIGRvbid0IGRvCisjICAgdGhhdCwgc2luY2UgeW91J2xsIGp1c3Qg
Y3Jhc2ggdGhlIGFzc2VtYmxlci4KKyMKKyMgLSBBbiAiaWYiIGlzIGEgY29uZGl0aW9uYWwgb24g
c2V0dGluZ3MuIEFueSBpZGVudGlmaWVyIHN1cHBsaWVkIGluIHRoZQorIyAgIHByZWRpY2F0ZSBv
ZiBhbiAiaWYiIGlzIGFzc3VtZWQgdG8gYmUgYSAjZGVmaW5lIHRoYXQgaXMgYXZhaWxhYmxlCisj
ICAgZHVyaW5nIGNvZGUgZ2VuLiBTbyB5b3UgY2FuJ3QgdXNlICJpZiIgZm9yIGNvbXB1dGF0aW9u
IGluIGEgbWFjcm8sIGJ1dAorIyAgIHlvdSBjYW4gdXNlIGl0IHRvIHNlbGVjdCBkaWZmZXJlbnQg
cGllY2VzIG9mIGNvZGUgZm9yIGRpZmZlcmVudAorIyAgIHBsYXRmb3Jtcy4KKyMKKyMgLSBBcmd1
bWVudHMgdG8gbWFjcm9zIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgcmF0aGVyIHRoYW4gZHluYW1p
YyBzY29waW5nLgorIyAgIENvbnN0J3MgYWxzbyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIGFuZCBt
YXkgb3ZlcnJpZGUgKGhpZGUpIGFyZ3VtZW50cworIyAgIG9yIG90aGVyIGNvbnN0cy4gQWxsIHZh
cmlhYmxlcyAoYXJndW1lbnRzIGFuZCBjb25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAgIHRvIG9w
ZXJhbmRzLiBBZGRpdGlvbmFsbHksIGFyZ3VtZW50cyAoYnV0IG5vdCBjb25zdGFudHMpIGNhbiBi
ZSBib3VuZAorIyAgIHRvIG1hY3Jvcy4KKworCisjIFRoZXNlIGRlY2xhcmF0aW9ucyBtdXN0IG1h
dGNoIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oLgorY29uc3QgQ2FsbEZyYW1lSGVhZGVyU2l6
ZSA9IDQ4Citjb25zdCBBcmd1bWVudENvdW50ID0gLTQ4Citjb25zdCBDYWxsZXJGcmFtZSA9IC00
MAorY29uc3QgQ2FsbGVlID0gLTMyCitjb25zdCBTY29wZUNoYWluID0gLTI0Citjb25zdCBSZXR1
cm5QQyA9IC0xNgorY29uc3QgQ29kZUJsb2NrID0gLTgKKworIyBEZWNsYXJlIHNvbWUgYWxpYXNl
cyBmb3IgdGhlIHJlZ2lzdGVycyB3ZSB3aWxsIHVzZS4KK2NvbnN0IFBDID0gdDQKKworIyBPZmZz
ZXRzIG5lZWRlZCBmb3IgcmVhc29uaW5nIGFib3V0IHZhbHVlIHJlcHJlc2VudGF0aW9uLgoraWYg
QklHX0VORElBTgorICAgIGNvbnN0IFRhZ09mZnNldCA9IDAKKyAgICBjb25zdCBQYXlsb2FkT2Zm
c2V0ID0gNAorZWxzZQorICAgIGNvbnN0IFRhZ09mZnNldCA9IDQKKyAgICBjb25zdCBQYXlsb2Fk
T2Zmc2V0ID0gMAorZW5kCisKKyMgVmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgorY29u
c3QgSW50MzJUYWcgPSAtMQorY29uc3QgQm9vbGVhblRhZyA9IC0yCitjb25zdCBOdWxsVGFnID0g
LTMKK2NvbnN0IFVuZGVmaW5lZFRhZyA9IC00Citjb25zdCBDZWxsVGFnID0gLTUKK2NvbnN0IEVt
cHR5VmFsdWVUYWcgPSAtNgorY29uc3QgRGVsZXRlZFZhbHVlVGFnID0gLTcKK2NvbnN0IExvd2Vz
dFRhZyA9IERlbGV0ZWRWYWx1ZVRhZworCisjIFR5cGUgY29uc3RhbnRzLgorY29uc3QgU3RyaW5n
VHlwZSA9IDUKK2NvbnN0IE9iamVjdFR5cGUgPSAxMAorCisjIFR5cGUgZmxhZ3MgY29uc3RhbnRz
LgorY29uc3QgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDEKK2NvbnN0IEltcGxlbWVudHNIYXNJ
bnN0YW5jZSA9IDIKK2NvbnN0IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSA4CisKKyMg
SGVhcCBhbGxvY2F0aW9uIGNvbnN0YW50cy4KK2NvbnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJ
bmRleCA9IDEKKworIyBCeXRlY29kZSBvcGVyYW5kIGNvbnN0YW50cy4KK2NvbnN0IEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMAorCisjIENvZGUgdHlwZSBjb25zdGFudHMu
Citjb25zdCBHbG9iYWxDb2RlID0gMAorY29uc3QgRXZhbENvZGUgPSAxCitjb25zdCBGdW5jdGlv
bkNvZGUgPSAyCisKKyMgVGhlIGludGVycHJldGVyIHN0ZWFscyB0aGUgdGFnIHdvcmQgb2YgdGhl
IGFyZ3VtZW50IGNvdW50LgorY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBU
YWdPZmZzZXQKKworIyBUaGlzIG11c3QgbWF0Y2ggd3RmL1ZlY3Rvci5oLgorY29uc3QgVmVjdG9y
U2l6ZU9mZnNldCA9IDAKK2NvbnN0IFZlY3RvckJ1ZmZlck9mZnNldCA9IDQKKworIyBTdHJpbmcg
ZmxhZ3MuCitjb25zdCBIYXNoRmxhZ3M4Qml0QnVmZmVyID0gNjQKKworIyBVdGlsaXRpZXMKK21h
Y3JvIGNyYXNoKCkKKyAgICBzdG9yZWkgMCwgMHhiYmFkYmVlZltdCisgICAgbW92ZSAwLCB0MAor
ICAgIGNhbGwgdDAKK2VuZAorCittYWNybyBhc3NlcnQoYXNzZXJ0aW9uKQorICAgIGlmIEFTU0VS
VF9FTkFCTEVECisgICAgICAgIGFzc2VydGlvbigub2spCisgICAgICAgIGNyYXNoKCkKKyAgICAu
b2s6CisgICAgZW5kCitlbmQKKworbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxs
KGRlc3RpbmF0aW9uUmVnaXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBsciwgZGVz
dGluYXRpb25SZWdpc3RlcgorICAgIGVsc2lmIFg4NgorICAgICAgICBwb3AgZGVzdGluYXRpb25S
ZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyBy
ZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihzb3VyY2VSZWdpc3RlcikKKyAgICBpZiBB
Uk12NworICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgorICAgIGVsc2lmIFg4NgorICAg
ICAgICBwdXNoIHNvdXJjZVJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVu
ZAorZW5kCisKK21hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCisgICAgYWRkcCBhZHZhbmNlICogNCwg
UEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQor
ICAgIGxvYWRpIHBjT2Zmc2V0LCB0MAorICAgIGxzaGlmdGkgMiwgdDAKKyAgICBhZGRwIHQwLCBQ
QworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIGxv
YWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBqbXAgW1BDXQorZW5k
CisKK21hY3JvIGNDYWxsMihmdW5jdGlvbiwgYXJnMSwgYXJnMikKKyAgICBpZiBBUk12NworICAg
ICAgICBtb3ZlIGFyZzEsIHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICBlbHNpZiBYODYK
KyAgICAgICAgcG9rZSBhcmcyLCAwCisgICAgICAgIHBva2UgYXJnMSwgMQorICAgIGVsc2UKKyAg
ICAgICAgZXJyb3IKKyAgICBlbmQKKyAgICBjYWxsIGZ1bmN0aW9uCitlbmQKKworbWFjcm8gY2Fs
bEhlbHBlcihoZWxwZXIpCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQw
LCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKK21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkK
KyAgICBlbmQKK2VuZAorCisjIENhbGwgYSBoZWxwZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3Jv
IGNhbGxDYWxsSGVscGVyKGFkdmFuY2UsIGhlbHBlciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5j
ZSAqIDQsIFBDLCB0MAorICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtj
ZnJdCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBh
Y3Rpb24odDApCitlbmQKKworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikK
KyAgICBjYWxsQ2FsbEhlbHBlcigKKyAgICAgICAgYWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAor
ICAgICAgICBtYWNybyAoY2FsbGVlKQorICAgICAgICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAg
ICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNr
U3dpdGNoVG9KSVQoaW5jcmVtZW50LCBhY3Rpb24pCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENv
ZGVCbG9jazo6bV9leGVjdXRlQ291bnRlclt0MF0sIC5kb25lCisgICAgICAgIGFjdGlvbigpCisg
ICAgLmRvbmU6CisgICAgZW5kCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xv
Z3VlKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICA1LAorICAgICAgICBtYWNybyAo
KQorICAgICAgICAgICAgY0NhbGwyKF9sbGludF9lbnRyeV9vc3IsIGNmciwgUEMpCisgICAgICAg
ICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgICAgIGptcCB0MAorICAgICAgICBlbmQpCitlbmQK
KworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQo
CisgICAgICAgIDEsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBjQ2FsbDIoX2xsaW50
X2xvb3Bfb3NyLCBjZnIsIFBDKQorICAgICAgICAgICAgbW92ZSB0MSwgY2ZyCisgICAgICAgICAg
ICBqbXAgdDAKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JF
cGlsb2d1ZSgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMTAsCisgICAgICAgIG1h
Y3JvICgpCisgICAgICAgICAgICBjYWxsSGVscGVyKF9sbGludF9yZXBsYWNlKQorICAgICAgICBl
bmQpCitlbmQKKworbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoaW5kZXgpCisgICAgYXNzZXJ0KG1h
Y3JvIChvaykgYmliIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgb2sgZW5kKQor
ZW5kCisKKyMgSW5kZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0
ZXJzLiBJbmRleCBpcyBub3QKKyMgY2hhbmdlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWFlcSBpbmRleCwgRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4
XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAor
ICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXls
b2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVm
ZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmls
IGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVl
IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9hZHAgVGFnT2Zmc2V0
W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2Fk
LCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQg
bWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWFlcSBpbmRleCwgRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4
XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAor
ICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YWcK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJP
ZmZzZXRbcGF5bG9hZF0sIHRhZworICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBp
ZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxzaGlmdGkgMywgaW5kZXgKKyAgICBh
ZGRwIGluZGV4LCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQKKyAg
ICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnCisuZG9uZToKK2VuZAorCittYWNybyBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cp
CisgICAgYmlhZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQK
KyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIGV4cGVjdGVkVGFnLCBzbG93Cisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAu
ZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0
W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlm
IHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgYmluZXEgVGFnT2Zmc2V0W3BheWxvYWQs
IGluZGV4LCA4XSwgZXhwZWN0ZWRUYWcsIHNsb3cKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3Bh
eWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworbWFjcm8gd3JpdGVCYXJy
aWVyKHRhZywgcGF5bG9hZCkKKyAgICAjIE5vdGhpbmcgdG8gZG8gc2luY2Ugd2UgZG9uJ3QgaGF2
ZSBhIGdlbmVyYXRpb25hbCBvciBpbmNyZW1lbnRhbCBjb2xsZWN0b3IuCitlbmQKKworIyBFbnRy
eXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlcgorCisjIERvIHRoZSBiYXJlIG1pbmltdW0gcmVx
dWlyZWQgdG8gZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENvZGVCbG9j
ayoKKyMgaW4gdDEKK21hY3JvIHByb2xvZ3VlKG9mZnNldE9mQ29kZUJsb2NrKQorICAgIHByZXNl
cnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgY2Fs
bCBmcmFtZS4KKyAgICBzdG9yZXAgdDIsIFJldHVyblBDW2Nmcl0KKyAgICBsb2FkcCBDYWxsZWVb
Y2ZyXSwgdDEKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdDFdLCB0MQorICAg
IGxvYWRwIG9mZnNldE9mQ29kZUJsb2NrW3QxXSwgdDEKKyAgICBzdG9yZXAgdDEsIENvZGVCbG9j
a1tjZnJdCisgICAgCisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVCbG9jazo6
bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0s
IFBDCitlbmQKKworbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbigpCisgICAgIyBQcm9maWxl
IHRoZSBhcmd1bWVudHMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hvaWNlIGJ1dCB0byBk
byB0aGlzLgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgdDAKKyAg
ICBidGl6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9uZQorICAgIGxzaGlmdGkgMywgdDAKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zm
c2V0W3QxXSwgdDMKKy5hcmd1bWVudFByb2ZpbGVMb29wOgorICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFn
T2Zmc2V0W3QzXQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MF0sIHQyCisgICAgc3Rv
cmVpIHQyLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbdDNdCisgICAg
YWRkcCBzaXplb2YgVmFsdWVQcm9maWxlLCB0MworICAgIGJzdWJpbnogOCwgdDAsIC5hcmd1bWVu
dFByb2ZpbGVMb29wCisuYXJndW1lbnRQcm9maWxlRG9uZToKKyAgICAKKyAgICAjIENoZWNrIHN0
YWNrIGhlaWdodC4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVnaXN0ZXJzW3Qx
XSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQyCisgICAgbG9h
ZHAgSlNHbG9iYWxEYXRhOjppbnRlcnByZXRlclt0Ml0sIHQyCisgICAgbHNoaWZ0aSAzLCB0MAor
ICAgIGFkZHAgdDAsIGNmciwgdDAKKyAgICBicGFlcSBJbnRlcnByZXRlcjo6bV9yZWdpc3RlckZp
bGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCisKKyAgICAj
IFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBoZWxwZXIuCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVjaykKKy5zdGFja0hlaWdodE9LOgor
ZW5kCisKK21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIGhlbHBlcikKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGJpZXEgdDAs
IENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCisgICAgY2FsbEhlbHBl
cihoZWxwZXIpCisgICAgam1wIGRvbmVMYWJlbAorZW5kCisKK19sbGludF9wcm9ncmFtX3Byb2xv
Z3VlOgorICAgIHByb2xvZ3VlKFByb2dyYW1FeGVjdXRhYmxlOjptX3Byb2dyYW1Db2RlQmxvY2sp
CisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xvZ3VlKCkKKyAgICBkaXNwYXRjaCgwKQorCisK
K19sbGludF9ldmFsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKEV2YWxFeGVjdXRhYmxlOjptX2V2
YWxDb2RlQmxvY2spCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xvZ3VlKCkKKyAgICBkaXNw
YXRjaCgwKQorCisKK19sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZToKKyAgICBwcm9s
b2d1ZShGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbCkKKy5mdW5jdGlvbkZv
ckNhbGxCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKCkKKyAgICBjaGVja1N3aXRj
aFRvSklURm9yUHJvbG9ndWUoKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKEZ1bmN0aW9uRXhlY3V0
YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QpCisuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdp
bjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9y
UHJvbG9ndWUoKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29k
ZUJsb2NrRm9yQ2FsbCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ2FsbEJl
Z2luLCBfbGxpbnRfaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKKworCitfbGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShGdW5jdGlvbkV4ZWN1dGFi
bGU6Om1fY29kZUJsb2NrRm9yQ2FsbCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9u
Rm9yQ29uc3RydWN0QmVnaW4sIF9sbGludF9oZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spCisK
KyMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25zCisKK19sbGludF9vcF9lbnRlcjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZGkg
Q29kZUJsb2NrOjptX251bVZhcnMsIHQyCisgICAgYnRpeiB0MiwgLm9wRW50ZXJEb25lCisgICAg
bW92ZSBVbmRlZmluZWRUYWcsIHQwCisgICAgbW92ZSAwLCB0MQorLm9wRW50ZXJMb29wOgorICAg
IHN1YmkgMSwgdDIKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0
b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGJ0aW56IHQyLCAub3BFbnRl
ckxvb3AKKy5vcEVudGVyRG9uZToKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9jcmVh
dGVfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVh
dGVBY3RpdmF0aW9uRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYWN0
aXZhdGlvbikKKy5vcENyZWF0ZUFjdGl2YXRpb25Eb25lOgorICAgIGRpc3BhdGNoKDIpCisKKwor
X2xsaW50X29wX2luaXRfbGF6eV9yZWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0KKyAgICBzdG9yZWkgMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNo
KDIpCisKKworX2xsaW50X29wX2NyZWF0ZV9hcmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
RW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQXJndW1lbnRzRG9uZQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQorLm9wQ3JlYXRlQXJndW1lbnRzRG9uZToKKyAg
ICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJ
bmRleCwgY2xhc3NJbmZvT2Zmc2V0LCBvZmZzZXRPZlByb3BlcnR5U3RvcmFnZSwgc3RydWN0dXJl
LCByZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2xvd0Nhc2UpCisgICAgY29uc3Qgb2Zmc2V0
T2ZNeVNpemVDbGFzcyA9IEpTR2xvYmFsRGF0YTo6aGVhcCArIEhlYXA6Om1fb2JqZWN0U3BhY2Ug
KyBBbGxvY2F0aW9uU3BhY2U6Om1fbWFya2VkU3BhY2UgKyBNYXJrZWRTcGFjZTo6bV9wcmVjaXNl
U2l6ZUNsYXNzZXMgKyBzaXplQ2xhc3NJbmRleCAqIHNpemVvZiBNYXJrZWRTcGFjZTo6U2l6ZUNs
YXNzCisgICAgCisgICAgIyBGSVhNRTogd2UgY2FuIGdldCB0aGUgZ2xvYmFsIGRhdGEgaW4gb25l
IGxvYWQgZnJvbSB0aGUgc3RhY2suCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gx
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbc2NyYXRjaDFdLCBzY3JhdGNoMQor
ICAgIAorICAgICMgR2V0IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LiAgICAKKyAgICBs
b2FkcCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmlyc3RG
cmVlQ2VsbFtzY3JhdGNoMV0sIHJlc3VsdAorICAgIGJ0cHogcmVzdWx0LCBzbG93Q2FzZQorICAg
IAorICAgICMgUmVtb3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LgorICAgIGxvYWRw
IFtyZXN1bHRdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNoMSwgb2Zmc2V0T2ZNeVNpemVD
bGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdCisK
KyAgICAjIEluaXRpYWxpemUgdGhlIG9iamVjdC4KKyAgICBsb2FkcCBjbGFzc0luZm9PZmZzZXRb
c2NyYXRjaDFdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3VsdF0KKyAgICBz
dG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0KKyAgICBzdG9yZXAg
MCwgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0XQorICAgIGFkZHAgc2l6ZW9mIEpTT2Jq
ZWN0LCByZXN1bHQsIHNjcmF0Y2gxCisgICAgc3RvcmVwIHNjcmF0Y2gxLCBvZmZzZXRPZlByb3Bl
cnR5U3RvcmFnZVtyZXN1bHRdCitlbmQKKworX2xsaW50X29wX2NyZWF0ZV90aGlzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBhc3NlcnROb3RDb25zdGFu
dCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENyZWF0
ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5vcENyZWF0ZVRoaXNT
bG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbdDBdLCB0MgorICAgIGJ0cHog
dDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxP
YmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZv
LCBKU0ZpbmFsT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZSwgdDIsIHQwLCB0MSwgdDMsIC5vcENy
ZWF0ZVRoaXNTbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBU
YWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BDcmVhdGVUaGlzU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX3RoaXMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfZ2V0X2NhbGxlZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldCArIENhbGxlZVtjZnJdLCB0MQorICAgIHN0b3Jl
aSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jb252ZXJ0
X3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ29udmVydFRoaXNTbG93Cisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlw
ZUluZm86Om1fdHlwZVt0MF0sIE9iamVjdFR5cGUsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGRp
c3BhdGNoKDIpCisKKy5vcENvbnZlcnRUaGlzU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfY29udmVydF90aGlzKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX25ld19v
YmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRw
IEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0dXJlW3QwXSwgdDEKKyAgICBhbGxv
Y2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERh
dGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIEpTRmluYWxPYmplY3Q6Om1fcHJvcGVydHlTdG9y
YWdlLCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwg
dDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3
T2JqZWN0U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkKKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheV9idWZmZXIpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdleHApCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQxLCB0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9ub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MworICAgIGJpbmVxIHQyLCBCb29sZWFuVGFnLCAub3BOb3RTbG93Cisg
ICAgeG9yaSAxLCB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
c3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKwor
Lm9wTm90U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbm90KQorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZSh0MiwgdDMsIHQxKQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MAorICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRh
ZywgLm9wRXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxvYWRp
IDRbUENdLCB0MgorICAgIGNpZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBU
YWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BFcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2VxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2VxX251bGw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENd
LCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAg
IGJpbmVxIHQxLCBDZWxsVGFnLCAub3BFcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAg
Lm9wRXFOdWxsTm90SW1tZWRpYXRlCisub3BFcU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0MSwg
TnVsbFRhZywgdDIKKyAgICBjaWVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQyLCB0
MQorLm9wRXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0K
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93CisgICAgYmll
cSB0MiwgQ2VsbFRhZywgLm9wTmVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFT
bG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2luZXEgdDAsIHQxLCB0MAorICAgIHN0b3Jl
aSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BOZXFTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXEpCisgICAgZGlzcGF0Y2goNCkKKyAgICAKKwor
X2xsaW50X29wX25lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbEltbWVk
aWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRieiBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQsIHQxCisgICAgam1wIC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKKy5vcE5lcU51bGxJ
bW1lZGlhdGU6CisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2luZXEgdDEsIFVuZGVm
aW5lZFRhZywgdDEKKyAgICBhbmRpIHQyLCB0MQorLm9wTmVxTnVsbE5vdEltbWVkaWF0ZToKKyAg
ICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBz
dHJpY3RFcShlcXVhbGl0eU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0Mywg
dDEpCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAg
YmluZXEgdDIsIHQzLCAuc2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJp
bmVxIHQyLCBDZWxsVGFnLCAubm90U3RyaW5nCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQzCisgICAgYmJu
ZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5
cGUsIC5ub3RTdHJpbmcKKyAgICBiYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX3R5cGVbdDNdLCBTdHJpbmdUeXBlLCAuc2xvdworLm5vdFN0cmluZzoKKyAgICBsb2FkaSA0
W1BDXSwgdDIKKyAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIHQwKQorICAgIHN0b3JlaSBC
b29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisuc2xvdzoKKyAgICBjYWxsSGVs
cGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCg0KQorZW5kCisKK19sbGludF9vcF9zdHJpY3RlcToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCBy
ZXN1bHQpIGNpZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9oZWxwZXJfc3RyaWN0
ZXEpCisKKworX2xsaW50X29wX25zdHJpY3RlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
c3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpbmVxIGxlZnQsIHJpZ2h0LCBy
ZXN1bHQgZW5kLCBfbGxpbnRfaGVscGVyX25zdHJpY3RlcSkKKworCitfbGxpbnRfb3BfbGVzczoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3Mp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzc2VxKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX2dyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX2dyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2dyZWF0ZXJlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9w
cmVfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVJbmNTbG93CisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBiYWRkaW8gMSwgdDEsIC5v
cFByZUluY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBkaXNwYXRjaCgyKQorCisub3BQcmVJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9wcmVfaW5jKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3ByZV9kZWM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZURlY1Nsb3cKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJzdWJpbyAxLCB0MSwgLm9wUHJlRGVjU2xv
dworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNo
KDIpCisKKy5vcFByZURlY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3ByZV9k
ZWMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9zdF9pbmM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAg
IGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3RJbmNTbG93Cisg
ICAgYmllcSB0MCwgdDEsIC5vcFBvc3RJbmNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDIKKyAgICBtb3ZlIHQyLCB0MworICAgIGJhZGRpbyAxLCB0MywgLm9wUG9z
dEluY1Nsb3cKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorLm9wUG9zdEluY0RvbmU6CisgICAgZGlzcGF0Y2goMykK
KworLm9wUG9zdEluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfaW5j
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Bvc3RfZGVjOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0RGVjU2xvdworICAg
IGJpZXEgdDAsIHQxLCAub3BQb3N0RGVjRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBic3ViaW8gMSwgdDMsIC5vcFBvc3RE
ZWNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBz
dG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3REZWNEb25lOgorICAgIGRpc3BhdGNoKDMpCisK
Ky5vcFBvc3REZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2RlYykK
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF90b19qc251bWJlcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAg
YXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgYmllcSB0Miwg
SW50MzJUYWcsIC5vcFRvSnNudW1iZXJJc0ludAorICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFn
LCAub3BUb0pzbnVtYmVyU2xvdworLm9wVG9Kc251bWJlcklzSW50OgorICAgIHN0b3JlaSB0Miwg
VGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9Kc251bWJlclNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3RvX2pzbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xs
aW50X29wX25lZ2F0ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQw
CisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9h
ZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQyCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BOZWdhdGVTcmNOb3RJbnQK
KyAgICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CisgICAgbmVnaSB0MgorICAg
IHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKy5vcE5lZ2F0ZVNyY05v
dEludDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xvdworICAgIHhvcmkgMHg4
MDAwMDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0
b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5v
cE5lZ2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lZ2F0ZSkKKyAgICBk
aXNwYXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlv
bkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQy
CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMs
IHQxKQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAg
IGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywg
Lm9wMk5vdEludAorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGludGVnZXJPcGVyYXRpb25BbmRT
dG9yZSh0MywgdDEsIHQwLCAuc2xvdywgdDIpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5vdElu
dDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vj
b25kIG9wZXJhbmQgY291bGQgYmUgYW55dGhpbmcuCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5z
bG93CisgICAgYmliIHQzLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5l
cSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MSwgZnQxCisgICAgam1wIC5vcDFOb3RJ
bnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorLm9w
MU5vdEludFJlYWR5OgorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGZpaTJkIHQwLCB0MiwgZnQw
CisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQx
LCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDJOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5k
IGlzIGRlZmluaXRlbHkgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgaXMgZGVmaW5pdGVseSBu
b3QuCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgYmlhIHQzLCBMb3dlc3RUYWcsIC5zbG93Cisg
ICAgY2kyZCB0MCwgZnQwCisgICAgZmlpMmQgdDEsIHQzLCBmdDEKKyAgICBkb3VibGVPcGVyYXRp
b24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2go
NCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2Vu
ZAorCittYWNybyBiaW5hcnlPcChpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24sIGhl
bHBlcikKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcs
IGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGludGVnZXJPcGVyYXRpb24o
bGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNl
dFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0
W2NmciwgaW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBo
ZWxwZXIpCitlbmQKKworX2xsaW50X29wX2FkZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
YmluYXJ5T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYmFkZGlvIGxlZnQs
IHJpZ2h0LCBzbG93IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxlZnQs
IHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9hZGQpCisKKworX2xsaW50X29wX211
bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgc2xvdykgYm11bGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0KSBtdWxkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9tdWwpCisKKworX2xsaW50X29wX3N1YjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1YmlvIGxl
ZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxl
ZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9zdWIpCisKKworX2xsaW50X29w
X2RpdjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAg
ICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAg
ICAgICBjaTJkIGxlZnQsIGZ0MAorICAgICAgICAgICAgY2kyZCByaWdodCwgZnQxCisgICAgICAg
ICAgICBkaXZkIGZ0MCwgZnQxCisgICAgICAgICAgICBiY2QyaSBmdDEsIHJpZ2h0LCAubm90SW50
CisgICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQor
ICAgICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisg
ICAgICAgICAgICBqbXAgLmRvbmUKKyAgICAgICAgLm5vdEludDoKKyAgICAgICAgICAgIHN0b3Jl
ZCBmdDEsIFtjZnIsIGluZGV4LCA4XQorICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kLAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGRpdmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2RpdikKKworCitfbGxpbnRfb3BfbW9kOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbW9kKQorICAgIGRpc3BhdGNoKDQpCisK
KworbWFjcm8gYml0T3Aob3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0Mgor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0
MSkKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBi
aW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdwor
ICAgIGxvYWRpIDRbUENdLCB0MgorICAgIG9wZXJhdGlvbih0MSwgdDAsIC5zbG93KQorICAgIHN0
b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBl
cihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRfb3BfbHNoaWZ0OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCBzbG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9s
c2hpZnQpCisKKworX2xsaW50X29wX3JzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Yml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgcnNoaWZ0aSBsZWZ0LCBy
aWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfcnNoaWZ0KQorCisKK19sbGludF9vcF91
cnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKKyAg
ICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX3Vyc2hpZnQpCisKKworX2xsaW50X29wX2JpdGFuZDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5k
aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0YW5kKQorCisKK19s
bGludF9vcF9iaXR4b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2JpdHhvcikKKworCitfbGxpbnRfb3BfYml0b3I6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cp
IG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0b3IpCisKKwor
X2xsaW50X29wX2JpdG5vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10s
IHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDEpCisgICAg
bG9hZGkgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0sIHQzCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3BCaXRub3RTbG93Cisg
ICAgbm90aSB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9w
Qml0bm90U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfYml0bm90KQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDAp
CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDaGVja0hhc0lu
c3RhbmNlU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1f
dHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNIYXNJbnN0YW5jZSwg
Lm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDaGVja0hhc0lu
c3RhbmNlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY2hlY2tfaGFzX2luc3Rh
bmNlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luc3RhbmNlb2Y6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRl
ZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
ZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAxMltQQ10sIHQwCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQo
dDApCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwg
Lm9wSW5zdGFuY2VvZlNsb3cKKyAgICAKKyAgICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgorICAg
IGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwg
dDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MSkK
KyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcEluc3RhbmNlb2ZT
bG93CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBDZWxsVGFnLCAub3BJbnN0YW5j
ZW9mU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQxCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xv
dworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgCisgICAgIyBS
ZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3ZlIDEsIHQw
Cisub3BJbnN0YW5jZW9mTG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwg
dDIKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldCwgdDIK
KyAgICBicGVxIHQyLCB0MSwgLm9wSW5zdGFuY2VvZkRvbmUKKyAgICBidGlueiB0MiwgLm9wSW5z
dGFuY2VvZkxvb3AKKworICAgIG1vdmUgMCwgdDAKKy5vcEluc3RhbmNlb2ZEb25lOgorICAgIHN0
b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3BJbnN0YW5jZW9m
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW5zdGFuY2VvZikKKyAgICBkaXNw
YXRjaCg1KQorCisKK19sbGludF9vcF90eXBlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90eXBlb2YpCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfaXNfdW5kZWZpbmVkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfaXNfdW5kZWZpbmVkKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xs
aW50X29wX2lzX2Jvb2xlYW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9pc19ib29sZWFuKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X2lzX251bWJlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2lzX251bWJlcikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19zdHJp
bmc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9p
c19zdHJpbmcpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfb2JqZWN0OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfb2JqZWN0
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX2Z1bmN0aW9uOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfZnVuY3Rpb24pCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaW46CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbikKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9yZXNvbHZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfcmVzb2x2ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNv
bHZlX3NraXA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9yZXNvbHZlX3NraXApCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyByZXNvbHZlR2xv
YmFsKHNsb3cpCisgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAg
RGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgorICAgICMgOFtQQ10gICBQcm9wZXJ0eSBpZGVudGlm
aWVyIGluZGV4IGluIHRoZSBjb2RlIGJsb2NrLgorICAgICMgMTJbUENdICBTdHJ1Y3R1cmUgcG9p
bnRlciwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgIyAxNltQ
Q10gIE9mZnNldCBpbiBnbG9iYWwgb2JqZWN0LCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2Rl
IGdlbmVyYXRvci4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QwXSwgdDAKKyAgICBicG5lcSB0MCwgMTJbUENdLCBzbG93CisgICAgbG9hZGkgMTZbUENd
LCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCisgICAg
bG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0
MCwgdDEsIDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MiwgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
CitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICByZXNvbHZlR2xvYmFsKC5vcFJlc29sdmVHbG9iYWxTbG93KQorICAgIGRpc3BhdGNoKDUp
CisKKy5vcFJlc29sdmVHbG9iYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9y
ZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNwYXRjaCg1KQorCisKKyMgR2l2ZXMgeW91IHRoZSBzY29w
ZSBpbiB0MCwgd2hpbGUgYWxsb3dpbmcgeW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlv
bmFsIGNoZWNrcyBvbiB0aGUKKyMgc2NvcGVzIGFzIHRoZXkgYXJlIHRyYXZlcnNlZC4gc2NvcGVD
aGVjaygpIGlzIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSByZWdpc3RlcgorIyBob2xk
aW5nIHRoZSBzY29wZSwgYW5kIGEgcmVnaXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc2NyYXRj
aC4gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QKKyMgdXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQgc3R1
ZmYgaW4gdDMgaWYgbmVlZCBiZS4KK21hY3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFu
ZCwgc2NvcGVDaGVjaykKKyAgICBsb2FkcCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJd
LCB0MAorICAgIGxvYWRpIGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIKKyAgICAKKyAgICBidGl6
IHQyLCAuZG9uZQorICAgIAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGJpbmVx
IENvZGVCbG9jazo6bV9jb2RlVHlwZVt0MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AKKyAgICBidGJ6
IENvZGVCbG9jazo6bV9uZWVkc0Z1bGxTY29wZUNoYWluW3QxXSwgLmxvb3AKKyAgICAKKyAgICBs
b2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEKKworICAgICMgTmVl
ZCB0byBjb25kaXRpb25hbGx5IHNraXAgb3ZlciBvbmUgc2NvcGUuCisgICAgYmllcSBUYWdPZmZz
ZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2YXRpb24KKyAgICBzY29wZUNo
ZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisubm9B
Y3RpdmF0aW9uOgorICAgIHN1YmkgMSwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorLmxv
b3A6CisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5l
eHRbdDBdLCB0MAorICAgIHN1YmkgMSwgdDIKKyAgICBidGlueiB0MiwgLmxvb3AKKworLmRvbmU6
CitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAg
IGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0aXZhdGlvblN0cnVjdHVyZVt0M10sIHQzCisgICAgZ2V0
U2NvcGUoCisgICAgICAgIDIwW1BDXSwKKyAgICAgICAgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKQor
ICAgICAgICAgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0Y2gK
KyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BS
ZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdworICAgICAgICBlbmQpCisgICAgcmVzb2x2ZUds
b2JhbCgub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3cpCisgICAgZGlzcGF0Y2goNikKKworLm9w
UmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBk
aXNwYXRjaCg2KQorCisKK19sbGludF9vcF9nZXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVz
dGluYXRpb24gZm9yIHRoZSBsb2FkLgorICAgICMgOFtQQ10gICBJbmRleCBvZiByZWdpc3RlciBp
biB0aGUgc2NvcGUuCisgICAgIyAxMltQQ10gIERlIEJydWlqaW4gaW5kZXguCisgICAgZ2V0U2Nv
cGUoMTJbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSA0W1BDXSwg
dDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0
W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQw
CisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFt0MCwgdDIsIDhdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhd
CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGdldFNjb3BlKDhbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2Fk
aSAxMltQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZSh0MSwgdDMsIHQyKQorICAgIHdyaXRlQmFycmllcih0MywgdDIpCisgICAgbG9hZHAgU2Nv
cGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6
bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W3QwLCB0MiwgOF0K
KyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAK
KyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRp
IFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQx
LCA4XSwgdDEKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3Jl
aSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xs
aW50X29wX3B1dF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2Fk
cCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNl
dFtjZnIsIHQzLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0
MworICAgIHdyaXRlQmFycmllcih0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbdDAs
IHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9iYXNlOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9iYXNlKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9lbnN1cmVfcHJvcGVydHlf
ZXhpc3RzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF9iYXNl
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVz
b2x2ZV93aXRoX2Jhc2UpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZV93
aXRoX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9n
ZXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgV2Ugb25seSBkbyBtb25vbW9y
cGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUK
KyAgICAjIG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hh
bmdlIGFueXRpbWUgaWYgZmFpbHMsIHNpbmNlCisgICAgIyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4g
QXQgYmVzdCB3ZSBnZXQgbHVja3kgYW5kIHRoZSBnZXRfYnlfaWQgd2lsbCBjb250aW51ZQorICAg
ICMgdG8gdGFrZSBmYXN0IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBz
bG93IHBhdGgsIHdoaWNoIGlzIHdoYXQKKyAgICAjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBh
bnl3YXkuCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNs
b3cpCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5
U3RvcmFnZVt0M10sIHQwCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAu
b3BHZXRCeUlkU2xvdworICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIFRhZ09mZnNldFt0
MCwgdDJdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyXSwgdDIKKyAgICBzdG9y
ZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDgpCisKKy5vcEdldEJ5SWRTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOCkKKworCitf
bGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdwor
ICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQyCisgICAgc3Vi
aSAxLCB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKwor
Lm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
Z2V0X2FyZ3VtZW50c19sZW5ndGgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0
X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBs
b2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENl
bGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9w
cm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZGkgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0Miwg
OF0sIHQyCisgICAgd3JpdGVCYXJyaWVyKHQwLCB0MikKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNl
dFt0MywgdDFdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBkaXNw
YXRjaCg4KQorCisub3BQdXRCeUlkU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cHV0X2J5X2lkKQorICAgIGRpc3BhdGNoKDgpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24o
YWRkaXRpb25hbENoZWNrcykKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQzCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgYnBuZXEgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGFkZGl0aW9uYWxD
aGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAg
bG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBhZGRwIHQxLCB0
MworICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQyLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDIsIDhdLCB0MgorICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgc3Rv
cmVpIHQxLCBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgMjRbUENdLCB0MQorICAgIHN0b3JlaSB0
MiwgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdCisgICAgZGlzcGF0Y2goOCkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0OgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNj
cmF0Y2gsIHNsb3cpIGVuZCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAorICAgICAgICBtYWNybyAob2xkU3RydWN0dXJl
LCBzY3JhdGNoLCBzbG93KQorICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0
dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bwor
ICAgICAgICAKKyAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAorICAgICAgICAgICAg
bG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3NjcmF0
Y2hdLCBzY3JhdGNoCisgICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBU
YWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAgICAgICAgLmxvb3A6Cisg
ICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtv
bGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgICAgICAgICBicG5lcSBvbGRTdHJ1
Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdworICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCisgICAg
ICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVj
dHVyZV0sIE51bGxUYWcsIC5sb29wCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQpCisKKwor
X2xsaW50X29wX2RlbF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2RlbF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9nZXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGxv
YWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MV0sIHQyCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93KQor
ICAgIGJwbmVxIFt0MF0sIHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5Ojpt
X3N0b3JhZ2VbdDBdLCB0MworICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0
MF0sIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIEFycmF5
U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBB
cnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQorICAg
IGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAgIHN0b3JlaSB0Miwg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QnlWYWxTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX2dldF9hcmd1bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgSW50MzJUYWcsIHQyLCAub3BHZXRBcmd1bWVu
dEJ5VmFsU2xvdykKKyAgICBhZGRpIDEsIHQyCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBh
eWxvYWRPZmZzZXRbY2ZyXSwgdDEKKyAgICBiaWFlcSB0MiwgdDEsIC5vcEdldEFyZ3VtZW50QnlW
YWxTbG93CisgICAgbmVnaSB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIFRhZ09m
ZnNldFtjZnIsIHQyLCA4XSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
LCB0MQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QXJn
dW1lbnRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9hcmd1bWVu
dF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5X3BuYW1lOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQwCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BHZXRCeVBuYW1lU2xvdykK
KyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgYnBuZXEgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BHZXRCeVBuYW1lU2xv
dykKKyAgICBsb2FkaSAyMFtQQ10sIHQwCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDAKKyAgICBicG5l
cSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDNdLCAub3BH
ZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDI0W1BDXSwgdDAKKyAgICBsb2FkaSBbY2ZyLCB0MCwg
OF0sIHQwCisgICAgc3ViaSAxLCB0MAorICAgIGJpYWVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2Fk
cCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDJdLCB0MgorICAgIGxvYWRpIFRhZ09mZnNl
dFt0MiwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDIsIHQwLCA4XSwgdDMK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQwLCA4
XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNo
KDcpCisKKy5vcEdldEJ5UG5hbWVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9n
ZXRfYnlfcG5hbWUpCisgICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfcHV0X2J5X3ZhbDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCisg
ICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAs
IEludDMyVGFnLCB0MiwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QwXSwgdDAKKyAgICBsb2Fk
cCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDBdLCB0MAorICAgIGJwbmVxIFt0MV0s
IHQwLCAub3BQdXRCeVZhbFNsb3cKKyAgICBiaWFlcSB0MiwgSlNBcnJheTo6bV92ZWN0b3JMZW5n
dGhbdDFdLCAub3BQdXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDFd
LCB0MAorICAgIGJpZXEgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIs
IDhdLCBFbXB0eVZhbHVlVGFnLCAub3BQdXRCeVZhbEVtcHR5Cisub3BQdXRCeVZhbFN0b3JlUmVz
dWx0OgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MykKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MywgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQzLCA4XSwgdDMKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQzKQorICAgIHN0b3JlaSB0
MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdCisgICAgc3Rv
cmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhd
CisgICAgZGlzcGF0Y2goNCkKKworLm9wUHV0QnlWYWxFbXB0eToKKyAgICBhZGRpIDEsIEFycmF5
U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KKyAgICBiaWIgdDIsIEFycmF5U3RvcmFn
ZTo6bV9sZW5ndGhbdDBdLCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0Miwg
dDEKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdCisgICAgam1wIC5v
cFB1dEJ5VmFsU3RvcmVSZXN1bHQKKworLm9wUHV0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9wdXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X2RlbF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9kZWxfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9i
eV9pbmRleDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3B1dF9ieV9pbmRleCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2V0
dGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cHV0X2dldHRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfc2V0dGVyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X3Nl
dHRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9sb29wOgorICAgIG5vcAorX2xs
aW50X29wX2ptcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0Y2hCcmFuY2goNFtQ
Q10pCisKKworX2xsaW50X29wX2ptcF9zY29wZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9qbXBfc2NvcGVzKQorICAgIGRpc3BhdGNoKDApCisK
KworbWFjcm8ganVtcFRydWVPckZhbHNlKGNvbmRpdGlvbk9wLCBzbG93KQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGJpYiBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEJvb2xlYW5UYWcsIC5zbG93
CisgICAgY29uZGl0aW9uT3AoUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgLnRhcmdldCkKKyAg
ICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisu
c2xvdzoKKyAgICBzdWJpIDMgKiA0LCBQQworICAgIGNhbGxIZWxwZXIoc2xvdykKKyAgICBkaXNw
YXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX3RydWU6CisgICAgbm9wCitfbGxpbnRf
b3BfanRydWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAg
ICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aW56IHZhbHVlLCB0YXJnZXQgZW5kLAorICAg
ICAgICBfbGxpbnRfaGVscGVyX2p0cnVlKQorCisKK19sbGludF9vcF9sb29wX2lmX2ZhbHNlOgor
ICAgIG5vcAorX2xsaW50X29wX2pmYWxzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAganVt
cFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpeiB2YWx1ZSwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZmFsc2UpCisKKworbWFjcm8gZXF1
YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYW5kbGVyKQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAuaW1tZWRpYXRl
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgY2VsbEhhbmRsZXIo
U3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQor
ICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisK
Ky5pbW1lZGlhdGU6CisgICAgb3JpIDEsIHQxCisgICAgaW1tZWRpYXRlSGFuZGxlcih0MSwgLnRh
cmdldCkKKyAgICBkaXNwYXRjaCgzKQorZW5kCisKK19sbGludF9vcF9qZXFfbnVsbDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRh
cmdldCkgYnRibnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisg
ICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaWVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQg
ZW5kKQorICAgIAorCitfbGxpbnRfb3Bfam5lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJ6IHZhbHVl
LCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFs
dWUsIHRhcmdldCkgYmluZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisKKworX2xsaW50
X29wX2puZXFfcHRyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENl
bGxUYWcsIC5vcEpuZXFQdHJCcmFuY2gKKyAgICBicGVxIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQxLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKKy5vcEpuZXFQdHJCcmFuY2g6CisgICAgZGlz
cGF0Y2hCcmFuY2goMTJbUENdKQorLm9wSm5lcVB0ckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNo
KDQpCisKKworbWFjcm8gY29tcGFyZShpbnRlZ2VyQ29tcGFyZSwgZG91YmxlQ29tcGFyZSwgaGVs
cGVyKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDIsIHQwLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZyh0MywgdDIsIHQzKQorICAgIGJpbmVxIHQwLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAg
IGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGludGVnZXJDb21wYXJlKHQxLCB0
MywgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5vdEludDoKKyAgICBiaWEg
dDAsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wMU5vdEludE9w
MkRvdWJsZQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQzLCBmdDEK
KyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJk
IHQzLCB0MiwgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgZmlpMmQgdDEsIHQwLCBmdDAKKyAg
ICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQor
Cisub3AyTm90SW50OgorICAgIGNpMmQgdDEsIGZ0MAorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAu
c2xvdworICAgIGZpaTJkIHQzLCB0MiwgZnQxCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwg
Lmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLmp1bXBUYXJnZXQ6CisgICAgZGlzcGF0
Y2hCcmFuY2goMTJbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBk
aXNwYXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX2xlc3M6CisgICAgbm9wCitfbGxp
bnRfb3Bfamxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5k
LAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdCBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzcykKKworCitfbGxpbnRfb3Bf
am5sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxdW4gbGVmdCwgcmlnaHQs
IHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzKQorCisKK19sbGludF9v
cF9sb29wX2lmX2dyZWF0ZXI6CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXI6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
dGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmRndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9qZ3JlYXRlcikKKworCitfbGxpbnRfb3Bfam5ncmVhdGVyOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfam5ncmVhdGVyKQorCisKK19sbGludF9vcF9sb29wX2lmX2xl
c3NlcToKKyAgICBub3AKK19sbGludF9vcF9qbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVx
IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRh
cmdldCkgYmRsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVs
cGVyX2psZXNzZXEpCisKKworX2xsaW50X29wX2pubGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmln
dCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0
YXJnZXQpIGJkZ3R1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hl
bHBlcl9qbmxlc3NlcSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyZXE6CisgICAgbm9w
CitfbGxpbnRfb3BfamdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFy
ZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3Rl
cSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRl
cmVxKQorCisKK19sbGludF9vcF9qbmdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiZGx0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
am5ncmVhdGVyZXEpCisKKworX2xsaW50X29wX2xvb3BfaGludDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGRpc3BhdGNoKDEpCisKKwor
X2xsaW50X29wX3N3aXRjaF9pbW06CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEy
W1BDXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwg
dDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIGxvYWRpIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjpt
X2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDIsIHQzLCA0
XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVx
IHQxLCBJbnQzMlRhZywgLm9wU3dpdGNoSW1tTm90SW50CisgICAgc3ViaSBTaW1wbGVKdW1wVGFi
bGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zm
c2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAg
IGRpc3BhdGNoQnJhbmNoKFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1
ZmZlck9mZnNldFt0MiwgdDAsIDRdKQorCisub3BTd2l0Y2hJbW1Ob3RJbnQ6CisgICAgYmliIHQx
LCBMb3dlc3RUYWcsIC5vcFN3aXRjaEltbVNsb3cgICMgR28gdG8gc2xvdyBwYXRoIGlmIGl0J3Mg
YSBkb3VibGUuCisub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4
W1BDXSkKKworLm9wU3dpdGNoSW1tU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
c3dpdGNoX2ltbSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9zd2l0Y2hfY2hhcjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9j
azo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MQorICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fY2hhcmFjdGVyU3dpdGNoSnVtcFRh
YmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MiwgdDMsIDRdLCB0MgorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRj
aENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQor
ICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBT
dHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU1N0cmluZzo6
bV92YWx1ZVt0MF0sIHQwCisgICAgYmluZXEgU3RyaW5nSW1wbDo6bV9sZW5ndGhbdDBdLCAxLCAu
b3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTdHJpbmdJbXBsOjptX2RhdGE4W3Qw
XSwgdDEKKyAgICBidGlueiBTdHJpbmdJbXBsOjptX2hhc2hBbmRGbGFnc1t0MF0sIEhhc2hGbGFn
czhCaXRCdWZmZXIsIC5vcFN3aXRjaENoYXI4Qml0CisgICAgbG9hZGggW3QxXSwgdDAKKyAgICBq
bXAgLm9wU3dpdGNoQ2hhclJlYWR5Cisub3BTd2l0Y2hDaGFyOEJpdDoKKyAgICBsb2FkYiBbdDFd
LCB0MAorLm9wU3dpdGNoQ2hhclJlYWR5OgorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5b
dDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBW
ZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgZGlzcGF0
Y2hCcmFuY2goU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zm
c2V0W3QyLCB0MCwgNF0pCisKKy5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRj
aEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9zdHJpbmcpCisg
ICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmM6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MSwg
OF0sIEVtcHR5VmFsdWVUYWcsIC5vcE5ld0Z1bmNEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX25ld19mdW5jKQorLm9wTmV3RnVuY0RvbmU6CisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKworbWFj
cm8gZG9DYWxsKGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10s
IHQxCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBDZWxsVGFnLCAub3BDYWxsU2xvdworICAgIGJpbmVxIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQxLCAub3BDYWxsU2xvdworICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRp
IDEyW1BDXSwgdDMKKyAgICBhZGRwIDI0LCBQQworICAgIGxzaGlmdGkgMywgdDMKKyAgICBhZGRw
IGNmciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBjZnIKKyAgICBzdG9yZWkg
dDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGxvYWRwIDIwIC0gMjRb
UENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisg
ICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QxXSwgdDAKKyAgICBzdG9yZXAgY2Zy
LCBDYWxsZXJGcmFtZVt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0
W3QzXQorICAgIHN0b3JlaSB0MSwgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9y
ZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10KKyAgICBzdG9yZWkgdDAsIFNj
b3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGNhbGwgdDIKKyAgICBkaXNwYXRjaEFm
dGVyQ2FsbCgpCisKKy5vcENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBoZWxwZXIp
CitlbmQKKworX2xsaW50X29wX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRvQ2Fs
bChfbGxpbnRfaGVscGVyX2NhbGwpCisKKworX2xsaW50X29wX2NvbnN0cnVjdDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY29uc3RydWN0KQorCisKK19s
bGludF9vcF9jYWxsX3ZhcmFyZ3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHNsb3dQYXRo
Rm9yQ2FsbCg2LCBfbGxpbnRfaGVscGVyX2NhbGxfdmFyYXJncykKKworCitfbGxpbnRfb3BfY2Fs
bF9ldmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAKKyAgICAjIEV2YWwgaXMgZXhlY3V0
ZWQgaW4gb25lIG9mIHR3byBtb2RlczoKKyAgICAjCisgICAgIyAxKSBXZSBmaW5kIHRoYXQgd2Un
cmUgcmVhbGx5IGludm9raW5nIGV2YWwoKSBpbiB3aGljaCBjYXNlIHRoZQorICAgICMgICAgZXhl
Y3V0aW9uIGlzIHBlcmZvbWVkIGVudGlyZWx5IGluc2lkZSB0aGUgaGVscGVyLCBhbmQgaXQKKyAg
ICAjICAgIHJldHVybnMgdGhlIFBDIG9mIGEgZnVuY3Rpb24gdGhhdCBqdXN0IHJldHVybnMgdGhl
IHJldHVybiB2YWx1ZQorICAgICMgICAgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAjCisg
ICAgIyAyKSBXZSBmaW5kIHRoYXQgd2UncmUgaW52b2tpbmcgc29tZXRoaW5nIGNhbGxlZCBldmFs
KCkgdGhhdCBpcyBub3QKKyAgICAjICAgIHRoZSByZWFsIGV2YWwuIFRoZW4gdGhlIGhlbHBlciBy
ZXR1cm5zIHRoZSBQQyBvZiB0aGUgdGhpbmcgdG8KKyAgICAjICAgIGNhbGwsIGFuZCB3ZSBjYWxs
IGl0LgorICAgICMKKyAgICAjIFRoaXMgYWxsb3dzIHVzIHRvIGhhbmRsZSB0d28gY2FzZXMsIHdo
aWNoIHdvdWxkIHJlcXVpcmUgYSB0b3RhbCBvZgorICAgICMgdXAgdG8gZm91ciBwaWVjZXMgb2Yg
c3RhdGUgdGhhdCBjYW5ub3QgYmUgZWFzaWx5IHBhY2tlZCBpbnRvIHR3bworICAgICMgcmVnaXN0
ZXJzIChDIGZ1bmN0aW9ucyBjYW4gcmV0dXJuIHVwIHRvIHR3byByZWdpc3RlcnMsIGVhc2lseSk6
CisgICAgIworICAgICMgLSBUaGUgY2FsbCBmcmFtZSByZWdpc3Rlci4gVGhpcyBtYXkgb3IgbWF5
IG5vdCBoYXZlIGJlZW4gbW9kaWZpZWQKKyAgICAjICAgYnkgdGhlIGhlbHBlciwgYnV0IHRoZSBj
b252ZW50aW9uIGlzIHRoYXQgaXQgcmV0dXJucyBpdC4gSXQncyBub3QKKyAgICAjICAgdG90YWxs
eSBjbGVhciBpZiB0aGF0J3MgbmVjZXNzYXJ5LCBzaW5jZSB0aGUgY2ZyIGlzIGNhbGxlZSBzYXZl
LgorICAgICMgICBCdXQgdGhhdCdzIG91ciBzdHlsZSBpbiB0aGlzIGhlcmUgaW50ZXJwcmV0ZXIg
c28gd2Ugc3RpY2sgd2l0aCBpdC4KKyAgICAjCisgICAgIyAtIEEgYml0IHRvIHNheSBpZiB0aGUg
aGVscGVyIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCB0aGUgZXZhbCBhbmQgaGFzCisgICAgIyAgIHRo
ZSByZXR1cm4gdmFsdWUsIG9yIGRpZCBub3QgZXhlY3V0ZSB0aGUgZXZhbCBidXQgaGFzIGEgUEMg
Zm9yIHVzCisgICAgIyAgIHRvIGNhbGwuCisgICAgIworICAgICMgLSBFaXRoZXI6CisgICAgIyAg
IC0gVGhlIEpTIHJldHVybiB2YWx1ZSAodHdvIHJlZ2lzdGVycyksIG9yCisgICAgIworICAgICMg
ICAtIFRoZSBQQyB0byBjYWxsLgorICAgICMKKyAgICAjIEl0IHR1cm5zIG91dCB0byBiZSBlYXNp
ZXIgdG8ganVzdCBhbHdheXMgaGF2ZSB0aGlzIHJldHVybiB0aGUgY2ZyCisgICAgIyBhbmQgYSBQ
QyB0byBjYWxsLCBhbmQgdGhhdCBQQyBtYXkgYmUgYSBkdW1teSB0aHVuayB0aGF0IGp1c3QKKyAg
ICAjIHJldHVybnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAgCisg
ICAgc2xvd1BhdGhGb3JDYWxsKDQsIF9sbGludF9oZWxwZXJfY2FsbF9ldmFsKQorCisKK19sbGlu
dF9nZW5lcmljX3JldHVybl9wb2ludDoKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKworX2xs
aW50X29wX3RlYXJfb2ZmX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkCisg
ICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZB
Y3RpdmF0aW9uTm90Q3JlYXRlZAorLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkOgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQorLm9wVGVhck9mZkFj
dGl2YXRpb25Ob3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3RlYXJf
b2ZmX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgc3ViaSAxLCB0MCAgICMgR2V0IHRoZSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIK
KyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9m
ZkFyZ3VtZW50c05vdENyZWF0ZWQKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGVhcl9v
ZmZfYXJndW1lbnRzKQorLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAgZGlzcGF0
Y2goMikKKworCittYWNybyBkb1JldHVybigpCisgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIK
KyAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKKyAgICByZXN0b3JlUmV0dXJuQWRkcmVz
c0JlZm9yZVJldHVybih0MikKKyAgICByZXQKK2VuZAorCitfbGxpbnRfb3BfcmV0OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitf
bGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA0W1BDXSwgdDIKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKwor
X2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBs
b2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wUmV0T2JqZWN0T3JUaGlz
Tm90T2JqZWN0CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJi
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBl
LCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBkb1JldHVybigpCisKKy5vcFJldE9i
amVjdE9yVGhpc05vdE9iamVjdDoKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX21ldGhvZF9jaGVjazoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNoZWNrcyBhbmQgdXNlIG5v
cm1hbCBnZXRfYnlfaWQgb3B0aW1pemF0aW9ucy4KKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGlu
dF9vcF9zdHJjYXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9zdHJjYXQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfdG9fcHJpbWl0
aXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
aSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywg
Lm9wVG9QcmltaXRpdmVJc0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MgorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJd
LCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisub3BUb1ByaW1pdGl2ZUlzSW1t
OgorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9QcmltaXRp
dmVTbG93Q2FzZToKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fcHJpbWl0aXZlKQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9wbmFtZXM6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfcG5hbWVzKQorICAgIGRp
c3BhdGNoKDApICMgVGhlIGhlbHBlciBlaXRoZXIgYWR2YW5jZXMgdGhlIFBDIG9yIGp1bXBzIHVz
IHRvIHNvbWV3aGVyZSBlbHNlLgorCisKK19sbGludF9vcF9uZXh0X3BuYW1lOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZGkgMTZbUENdLCB0Mgor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQwCisgICAgYmllcSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgLm9wTmV4dFBuYW1lRW5kCisgICAgbG9hZGkgMjBbUENd
LCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAgbG9hZHAg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9qc1N0cmluZ3NbdDJdLCB0MworICAgIGxvYWRpIFt0
MywgdDAsIDhdLCB0MworICAgIGFkZGkgMSwgdDAKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywg
VGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAgICBi
cG5lcSB0MSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAu
b3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNo
ZWRQcm90b3R5cGVDaGFpblt0Ml0sIHQwCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVj
dG9yW3QwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5vcE5leHRQbmFtZVRhcmdldAorLm9wTmV4dFBu
YW1lQ2hlY2tQcm90b3R5cGVMb29wOgorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSAr
IFRhZ09mZnNldFt0MV0sIE51bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBTdHJ1
Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQxCisgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFt
ZVNsb3cKKyAgICBhZGRwIDQsIHQwCisgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQ
cm90b3R5cGVMb29wCisub3BOZXh0UG5hbWVUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMjRb
UENdKQorCisub3BOZXh0UG5hbWVFbmQ6CisgICAgZGlzcGF0Y2goNykKKworLm9wTmV4dFBuYW1l
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV4dF9wbmFtZSkgIyBUaGlzIGVp
dGhlciBrZWVwcyB0aGUgUEMgd2hlcmUgaXQgd2FzIChjYXVzaW5nIHVzIHRvIGxvb3ApIG9yIHNl
dHMgaXQgdG8gdGFyZ2V0LgorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3B1c2hfc2Nv
cGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9w
dXNoX3Njb3BlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3BvcF9zY29wZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3BvcF9zY29w
ZSkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9wdXNoX25ld19zY29wZToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfbmV3X3Nj
b3BlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2NhdGNoOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICAjIFRoaXMgaXMgd2hlcmUgd2UgZW5kIHVwIGZyb20gdGhlIEpJVCdzIHRo
cm93IHRyYW1wb2xpbmUgKGJlY2F1c2UgdGhlCisgICAgIyBtYWNoaW5lIGNvZGUgcmV0dXJuIGFk
ZHJlc3Mgd2lsbCBiZSBzZXQgdG8gX2xsaW50X29wX2NhdGNoKSwgYW5kIGZyb20KKyAgICAjIHRo
ZSBpbnRlcnByZXRlcidzIHRocm93IHRyYW1wb2xpbmUgKHNlZSBfbGxpbnRfdGhyb3dfdHJhbXBv
bGluZSkuCisgICAgIyBUaGUgSklUIHRocm93aW5nIHByb3RvY29sIGNhbGxzIGZvciB0aGUgY2Zy
IHRvIGJlIGluIHQwLiBUaGUgdGhyb3dpbmcKKyAgICAjIGNvZGUgbXVzdCBoYXZlIGtub3duIHRo
YXQgd2Ugd2VyZSB0aHJvd2luZyB0byB0aGUgaW50ZXJwcmV0ZXIsIGFuZCBoYXZlCisgICAgIyBz
ZXQgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cuCisgICAgbW92ZSB0
MCwgY2ZyCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAg
bG9hZGkgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3dbdDNdLCBQQwor
ICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10sIHQw
CisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdLCB0MQor
ICAgIHN0b3JlaSAwLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNd
CisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFn
T2Zmc2V0W3QzXQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3c6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvdykKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3I6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpCisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfanNyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBhZGRpIDMgKiA0LCBQQywgdDEKKyAgICBzdG9yZWkg
dDEsIFt0MF0KKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3JldDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIFBDCisgICAgZGlzcGF0Y2go
MCkKKworCitfbGxpbnRfb3BfZGVidWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9kZWJ1ZykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9wcm9maWxlX3dpbGxfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYnRweiBKSVRT
dGFja0ZyYW1lOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCAub3BQcm9maWxlV2lsbENh
bGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQor
Lm9wUHJvZmlsZVdpbGxDYWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9w
cm9maWxlX2RpZF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidHB6IEpJVFN0YWNr
RnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIC5vcFByb2ZpbGVEaWRDYWxsRG9u
ZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQorLm9wUHJv
ZmlsZURpZENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2VuZDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1JldHVybigpCisK
KworX2xsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmU6CisgICAgIyBXaGVuIHRocm93
aW5nIGZyb20gdGhlIGludGVycHJldGVyIChpLmUuIHRocm93aW5nIGZyb20gTExJbnRIZWxwZXJz
KSwgc28KKyAgICAjIHRoZSB0aHJvdyB0YXJnZXQgaXMgbm90IG5lY2Vzc2FyaWx5IGludGVycHJl
dGVkIGNvZGUsIHdlIGNvbWUgdG8gaGVyZS4KKyAgICAjIFRoaXMgZXNzZW50aWFsbHkgZW11bGF0
ZXMgdGhlIEpJVCdzIHRocm93aW5nIHByb3RvY29sLgorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6
Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9y
VGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRo
cm93W3QxXQorCisKK19sbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lOgorICAgIHBy
ZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1l
OjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZv
clRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JU
aHJvd1t0MV0KKworCisjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0
aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KKyMgVGhlc2Ugb3Bjb2RlcyBzaG91
bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQK
KyMgYXMgbXVjaC4KKworbWFjcm8gbm90U3VwcG9ydGVkKCkKKyAgICBpZiBBU1NFUlRfRU5BQkxF
RAorICAgICAgICBjcmFzaCgpCisgICAgZWxzZQorICAgICAgICAjIFdlIHNob3VsZCB1c2Ugd2hh
dGV2ZXIgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIGluc3RydWN0aW9uIGlzLCBqdXN0IHRvCisgICAg
ICAgICMgZW5zdXJlIHRoYXQgdGhlcmUgaXMgYSBnYXAgYmV0d2VlbiBpbnN0cnVjdGlvbiBsYWJl
bHMuIElmIG11bHRpcGxlCisgICAgICAgICMgc21hbGxlc3QgaW5zdHJ1Y3Rpb25zIGV4aXN0LCB3
ZSBzaG91bGQgcGljayB0aGUgb25lIHRoYXQgaXMgbW9zdAorICAgICAgICAjIGxpa2VseSByZXN1
bHQgaW4gZXhlY3V0aW9uIGJlaW5nIGhhbHRlZC4gQ3VycmVudGx5IHRoYXQgaXMgdGhlIGJyZWFr
CisgICAgICAgICMgaW5zdHJ1Y3Rpb24gb24gYWxsIGFyY2hpdGVjdHVyZXMgd2UncmUgaW50ZXJl
c3RlZCBpbi4gKEJyZWFrIGlzIGludDMKKyAgICAgICAgIyBvbiBJbnRlbCwgd2hpY2ggaXMgMSBi
eXRlLCBhbmQgYmtwdCBvbiBBUk12Nywgd2hpY2ggaXMgMiBieXRlcy4pCisgICAgICAgIGJyZWFr
CisgICAgZW5kCitlbmQKKworX2xsaW50X29wX2dldF9hcnJheV9sZW5ndGg6CisgICAgbm90U3Vw
cG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQo
KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQo
KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQo
KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgp
CisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitf
bGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitf
bGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitf
bGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19s
bGludF9vcF9nZXRfYnlfaWRfcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29w
X2dldF9ieV9pZF9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfc3Ry
aW5nX2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX2dl
bmVyaWM6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9yZXBsYWNl
OgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbjoK
KyAgICBub3RTdXBwb3J0ZWQoKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21D
b25maWcuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKKyNpbmNsdWRlICJM
TEludEFzc2VtYmx5LmgiCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorI2RlZmluZSBMb3dMZXZlbEludGVycHJl
dGVyX2gKKworI2luY2x1ZGUgIk9wY29kZS5oIgorCisjZGVmaW5lIExMSU5UX0lOU1RSVUNUSU9O
X0RFQ0wob3Bjb2RlLCBsZW5ndGgpIGV4dGVybiAiQyIgdm9pZCBsbGludF8jI29wY29kZSgpOwor
ICAgIEZPUl9FQUNIX09QQ09ERV9JRChMTElOVF9JTlNUUlVDVElPTl9ERUNMKTsKKyN1bmRlZiBM
TElOVF9JTlNUUlVDVElPTl9ERUNMCisKK2V4dGVybiAiQyIgdm9pZCBsbGludF9wcm9ncmFtX3By
b2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZXZhbF9wcm9sb2d1ZSgpOworZXh0ZXJu
ICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMi
IHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSgpOworZXh0ZXJuICJD
IiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMi
IHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaygpOworZXh0ZXJu
ICJDIiB2b2lkIGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KCk7CitleHRlcm4gIkMiIHZvaWQg
bGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSgpOworZXh0ZXJuICJDIiB2b2lkIGxs
aW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUoKTsKKworI2VuZGlmIC8vIExvd0xldmVs
SW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJt
djcucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJt
djcucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
cm12Ny5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTMgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2NsYXNzIFNwZWNpYWxSZWdpc3RlcgorICBkZWYgaW5pdGlh
bGl6ZShuYW1lKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBhcm1WN09wZXJh
bmQKKyAgICBAbmFtZQorICBlbmQKK2VuZAorCitBUk12N19EQVRBX1JFRyA9IFNwZWNpYWxSZWdp
c3Rlci5uZXcoImlwIikKK0FSTXY3X0FERFJfUkVHID0gU3BlY2lhbFJlZ2lzdGVyLm5ldygicjMi
KQorCitkZWYgbW92ZUltbWVkaWF0ZSh2YWx1ZSwgcmVnaXN0ZXIpCisgICMgQ3VycmVudGx5IHdl
IG9ubHkgaGFuZGxlIHRoZSBzaW1wbGUgY2FzZXMsIGFuZCBmYWxsIGJhY2sgdG8gbW92L21vdnQg
Zm9yIHRoZSBjb21wbGV4IG9uZXMuCisgIGlmIHZhbHVlID49IDAgJiYgdmFsdWUgPCAyNTYKKyAg
ICAkYXNtLnB1dHMgIm1vdncgXCMje3ZhbHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9Igor
ICBlbHNpZiAofnZhbHVlKSA+PSAwICYmICh+dmFsdWUpIDwgMjU2CisgICAgJGFzbS5wdXRzICJt
dm53IFwjI3t+dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgIGVsc2UKKyAgICAk
YXNtLnB1dHMgIm1vdncgXCMje3ZhbHVlICYgMHhmZmZmfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJh
bmR9IgorICAgIGlmICh2YWx1ZSAmIDB4ZmZmZjAwMDApICE9IDAKKyAgICAgICRhc20ucHV0cyAi
bW92dCBcIyN7dmFsdWUgPj4gMTZ9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgICAgZW5k
CisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIGFybVY3T3BlcmFuZAorICAg
IGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgInIwIgorICAgIHdo
ZW4gInQxIiwgImExIiwgInIxIgorICAgICAgInIxIgorICAgIHdoZW4gInQyIiwgImEyIgorICAg
ICAgInIyIgorICAgIHdoZW4gImEzIgorICAgICAgInIzIgorICAgIHdoZW4gInQzIgorICAgICAg
InI0IgorICAgIHdoZW4gInQ0IgorICAgICAgInI3IgorICAgIHdoZW4gImNmciIKKyAgICAgICJy
NSIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1W
N1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3Nz
aWJsZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJt
VjdMb2FkU3RvcmVXcmFwCisgICAgeWllbGQKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3Rl
cklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAi
ZnIiCisgICAgICAiZDAiCisgICAgd2hlbiAiZnIxIiwKKyAgICAgICJkMSIKKyAgICB3aGVuICJm
cjIiCisgICAgICAiZDIiCisgICAgd2hlbiAiZnIzIgorICAgICAgImQzIgorICAgIHdoZW4gImZy
NCIKKyAgICAgICJkNCIKKyAgICB3aGVuICJmcjUiCisgICAgICAiZDUiCisgICAgZWxzZQorICAg
ICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVN
ZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5k
CisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAor
ICAgIHlpZWxkIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiBhcm1W
N09wZXJhbmQKKyAgICByYWlzZSAiSW52YWxpZCBpbW1lZGlhdGUgI3t2YWx1ZX0iIGlmIHZhbHVl
IDwgMCBvciB2YWx1ZSA+IDI1NQorICAgICIjJHt2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmIGFy
bVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bv
c3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBh
cm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZCBzZWxmCisgIGVuZAorZW5kCisKK21vZHVsZSBB
Uk12N0FkZHJlc3NVdGlsaXRpZXMKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHNlbGYu
YXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgJGFzbS5wdXRzICJcdGxkciAj
e3NlbGYuYXJtVjdQb3NzaWJseU1lbW9yeU9wZXJhbmR9LCAje0FSTXY3X0RBVEFfUkVHLmFybVY3
T3BlcmFuZH0iCisgICAgeWllbGQgQVJNdjdfREFUQV9SRUcKKyAgICAkYXNtLnB1dHMgIlx0c3Ry
ICN7QVJNdjdfREFUQV9SRUcuYXJtVjdPcGVyYW5kfSwgI3tzZWxmLmFybVY3UG9zc2libHlNZW1v
cnlPcGVyYW5kfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBpbmNsdWRlIEFSTXY3
QWRkcmVzc1V0aWxpdGllcworCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJh
bmQKKyAgICBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgor
ICAgICAgbW92ZUltbWVkaWF0ZShvZmZzZXQudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICAgIGVu
ZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9m
ZnNldC52YWx1ZSA8IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICAiWyN7YmFz
ZS5hcm1WN09wZXJhbmR9LCAje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH1dIgorICAgIGVs
c2UKKyAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7b2Zmc2V0LmFybVY3T3BlcmFuZH1d
IgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgaW5jbHVkZSBBUk12
N0FkZHJlc3NVdGlsaXRpZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVy
YW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAgIG1vdmVJbW1lZGlhdGUob2Zmc2V0
LnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgICAgICRhc20ucHV0cyAiYWRkdyAje0FSTXY3X0FE
RFJfUkVHLmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52
YWx1ZSAhPSAwCisgICAgICAiWyN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfSwgI3tpbmRl
eC5hcm1WN09wZXJhbmR9LCBsc2wgXCMje3NjYWxlfV0iCisgICAgZWxzZQorICAgICAgIlsje2Jh
c2UuYXJtVjdPcGVyYW5kfSwgI3tpbmRleC5hcm1WN09wZXJhbmR9LCBsc2wgXCMje3NjYWxlfV0i
CisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBpbmNsdWRl
IEFSTXY3QWRkcmVzc1V0aWxpdGllcworICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVt
b3J5T3BlcmFuZAorICAgIG1vdmVJbW1lZGlhdGUoYWRkcmVzcy52YWx1ZSwgQVJNdjdfQUREUl9S
RUcpCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgIlsj
e0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH1dIgorICBlbmQKK2VuZAorCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsODMgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJi
YWNrZW5kcyIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJz
ZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworY2xhc3MgQXNzZW1ibGVyCisgIGRlZiBp
bml0aWFsaXplKG91dHApCisgICAgQG91dHAgPSBvdXRwCisgICAgQHN0YXRlID0gOmNwcAorICBl
bmQKKyAgCisgIGRlZiBlbnRlckFzbQorICAgIEBvdXRwLnB1dHMgImFzbSAoIgorICAgIEBzdGF0
ZSA9IDphc20KKyAgZW5kCisgIAorICBkZWYgbGVhdmVBc20KKyAgICBAb3V0cC5wdXRzICIpOyIK
KyAgICBAc3RhdGUgPSA6Y3BwCisgIGVuZAorICAKKyAgZGVmIGluQXNtCisgICAgZW50ZXJBc20K
KyAgICB5aWVsZAorICAgIGxlYXZlQXNtCisgIGVuZAorICAKKyAgZGVmIHB1dHMobGluZSkKKyAg
ICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wdXRzKChsaW5lICsgIlxu
IikuaW5zcGVjdCkKKyAgZW5kCisgIAorICBkZWYgY29tbWVudCh0ZXh0KQorICAgIEBvdXRwLnB1
dHMgIi8vICN7dGV4dH0iCisgIGVuZAorZW5kCisKKyRhc20gPSBBc3NlbWJsZXIubmV3KCRzdGRv
dXQpCisKK2FzbUZpbGUgPSBBUkdWLnNoaWZ0CitvZmZzZXRzRmlsZSA9IEFSR1Yuc2hpZnQKKwor
YXN0ID0gcGFyc2UobGV4KElPOjpyZWFkKGFzbUZpbGUpKSkKK29mZnNldHNMaXN0LCBjb25maWdJ
bmRleCA9IG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgob2Zmc2V0c0ZpbGUpCisKK2ZvclNl
dHRpbmdzKGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpW2NvbmZpZ0luZGV4XSwgYXN0
KSB7CisgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICBhc3Nl
cnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgIGxvd0xldmVsQVNUID0gbG93TGV2
ZWxBU1QucmVzb2x2ZSgqYnVpbGRPZmZzZXRzTWFwKGxvd0xldmVsQVNULCBvZmZzZXRzTGlzdCkp
CisgIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNU
LCBiYWNrZW5kKSB7CisgICAgJGFzbS5pbkFzbSB7CisgICAgICBsb3dMZXZlbEFTVC5sb3dlcihi
YWNrZW5kKQorICAgIH0KKyAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vYXN0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FzdC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FzdC5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MDYgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIEJhc2UgdXRpbGl0eSB0eXBlcyBmb3IgdGhlIEFTVC4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMg
VmFsaWQgbWV0aG9kcyBmb3IgTm9kZToKKyMKKyMgbm9kZS5jaGlsZHJlbiAtPiBSZXR1cm5zIGFu
IGFycmF5IG9mIGltbWVkaWF0ZSBjaGlsZHJlbi4KKyMKKyMgbm9kZS5kZXNjZW5kZW50cyAtPiBS
ZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBzdHJpY3QgZGVzY2VuZGFudHMgKGNoaWxkcmVuCisjICAg
ICBhbmQgY2hpbGRyZW4gb2YgY2hpbGRyZW4sIHRyYW5zaXRpdmVseSkuCisjCisjIG5vZGUuZmxh
dHRlbiAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHN0cmljdCBkZXNjZW5kYW50
cyBhbmQKKyMgICAgIHRoZSBub2RlIGl0c2VsZi4KKyMKKyMgbm9kZS5maWx0ZXIodHlwZSkgLT4g
UmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRob3NlIGVsZW1lbnRzIGluCisjICAgICBub2Rl
LmZsYXR0ZW4gdGhhdCBhcmUgb2YgdGhlIGdpdmVuIHR5cGUgKGlzX2E/IHR5cGUgcmV0dXJucyB0
cnVlKS4KKyMKKyMgbm9kZS5tYXBDaGlsZHJlbnt8dnwgLi4ufSAtPiBSZXR1cm5zIGEgbmV3IG5v
ZGUgd2l0aCBhbGwgY2hpbGRyZW4KKyMgICAgIHJlcGxhY2VkIGFjY29yZGluZyB0byB0aGUgZ2l2
ZW4gYmxvY2suCisjCisjIEV4YW1wbGVzOgorIworIyBub2RlLmZpbHRlcihTZXR0aW5nKS51bmlx
IC0+IFJldHVybnMgYWxsIG9mIHRoZSBzZXR0aW5ncyB0aGF0IHRoZSBBU1QncworIyAgICAgSWZU
aGVuRWxzZSBibG9ja3MgZGVwZW5kIG9uLgorIworIyBub2RlLmZpbHRlcihTdHJ1Y3RPZmZzZXQp
LnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHN0cnVjdHVyZSBvZmZzZXRzCisjICAgICB0aGF0
IHRoZSBBU1QgZGVwZW5kcyBvbi4KKworY2xhc3MgTm9kZQorICBhdHRyX3JlYWRlciA6Y29kZU9y
aWdpbgorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBAY29kZU9yaWdpbiA9
IGNvZGVPcmlnaW4KKyAgZW5kCisgIAorICBkZWYgY29kZU9yaWdpblN0cmluZworICAgICJsaW5l
IG51bWJlciAje0Bjb2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYgZGVzY2VuZGFudHMKKyAg
ICBjaGlsZHJlbi5jb2xsZWN0e3x2fCB2LmZsYXR0ZW59LmZsYXR0ZW4KKyAgZW5kCisgIAorICBk
ZWYgZmxhdHRlbgorICAgIFtzZWxmXSArIGRlc2NlbmRhbnRzCisgIGVuZAorICAKKyAgZGVmIGZp
bHRlcih0eXBlKQorICAgIGZsYXR0ZW4uc2VsZWN0e3x2fCB2LmlzX2E/IHR5cGV9CisgIGVuZAor
ZW5kCisKK2NsYXNzIE5vQ2hpbGRyZW4gPCBOb2RlCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAg
ICBbXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIHNlbGYKKyAgZW5kCitlbmQK
KworY2xhc3MgU3RydWN0T2Zmc2V0S2V5CisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAor
ICAKKyAgZGVmIGluaXRpYWxpemUoc3RydWN0LCBmaWVsZCkKKyAgICBAc3RydWN0ID0gc3RydWN0
CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5kCisgIAorICBkZWYgaGFzaAorICAgIEBzdHJ1Y3Qu
aGFzaCArIEBmaWVsZC5oYXNoICogMworICBlbmQKKyAgCisgIGRlZiBlcWw/KG90aGVyKQorICAg
IEBzdHJ1Y3QgPT0gb3RoZXIuc3RydWN0IGFuZCBAZmllbGQgPT0gb3RoZXIuZmllbGQKKyAgZW5k
CitlbmQKKyAgICAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEFTVCBub2Rl
cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIFN0cnVjdE9m
ZnNldCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAor
ICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvckZpZWxkKGNvZGVPcmlnaW4s
IHN0cnVjdCwgZmllbGQpCisgICAga2V5ID0gU3RydWN0T2Zmc2V0S2V5Lm5ldyhzdHJ1Y3QsIGZp
ZWxkKQorICAgIAorICAgIHVubGVzcyBAQG1hcHBpbmdba2V5XQorICAgICAgQEBtYXBwaW5nW2tl
eV0gPSBTdHJ1Y3RPZmZzZXQubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAgZW5k
CisgICAgQEBtYXBwaW5nW2tleV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje3N0cnVj
dH06OiN7ZmllbGR9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIpCisgICAgaWYgQHN0cnVj
dCAhPSBvdGhlci5zdHJ1Y3QKKyAgICAgIHJldHVybiBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QK
KyAgICBlbmQKKyAgICBAZmllbGQgPD0+IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisKK2NsYXNz
IFNpemVvZiA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVjdAorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QHN0cnVjdCA9IHN0cnVjdAorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYg
c2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW3N0
cnVjdF0KKyAgICAgIEBAbWFwcGluZ1tzdHJ1Y3RdID0gU2l6ZW9mLm5ldyhjb2RlT3JpZ2luLCBz
dHJ1Y3QpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW3N0cnVjdF0KKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICJzaXplb2YgI3tAc3RydWN0fSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVy
KQorICAgIEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICBlbmQKK2VuZAorCitjbGFzcyBJbW1l
ZGlhdGUgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDp2YWx1ZQorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgdmFsdWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAdmFs
dWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7dmFsdWV9IgorICBlbmQK
KyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBvdGhlci5pc19hPyBJbW1lZGlhdGUgYW5kIG90aGVy
LnZhbHVlID09IEB2YWx1ZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVzIDwgTm9k
ZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0g
bGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAg
W0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQWRkSW1t
ZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSArICN7cmlnaHQuZHVtcH0p
IgorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCBy
aWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdo
dCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRd
CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgU3ViSW1tZWRpYXRlcy5uZXcoY29k
ZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAtICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAor
CitjbGFzcyBNdWxJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAg
ZGVmIG1hcENoaWxkcmVuCisgICAgTXVsSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxk
IEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7
bGVmdC5kdW1wfSAqICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBOZWdJbW1l
ZGlhdGUgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgY2hpbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAY2hpbGQgPSBj
aGlsZAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAY2hpbGRdCisgIGVuZAorICAK
KyAgZGVmIG1hcENoaWxkcmVuCisgICAgTmVnSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAoeWll
bGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoLSN7QGNoaWxkLmR1bXB9
KSIKKyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9y
ZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBp
bmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVu
bGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFJlZ2lzdGVySUQu
bmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0
ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9
IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFt
ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBA
bWFwcGluZ1tuYW1lXSA9IEZQUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBl
bmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUK
KyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVy
IDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0g
e30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3Mg
QEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBWYXJpYWJsZS5uZXcoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcyA8IE5vZGUK
KyAgYXR0cl9yZWFkZXIgOmJhc2UsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIGJhc2UsIG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBiYXNlID0g
YmFzZQorICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAg
ICBbQGJhc2UsIEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQWRk
cmVzcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBvZmZzZXQpKQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfV0iCisg
IGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2Us
IDppbmRleCwgOnNjYWxlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBiYXNlID0gYmFzZQorICAgIEBpbmRleCA9IGluZGV4CisgICAgQHNjYWxlID0gc2NhbGUKKyAg
ICByYWlzZSB1bmxlc3MgWzEsIDIsIDQsIDhdLm1lbWJlcj8gQHNjYWxlCisgICAgQG9mZnNldCA9
IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwgQGluZGV4LCBA
b2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEJhc2VJbmRleC5uZXco
Y29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBpbmRleCksIEBzY2FsZSwgKHlpZWxk
IEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7
YmFzZS5kdW1wfSwgI3tpbmRleC5kdW1wfSwgI3tzY2FsZX1dIgorICBlbmQKK2VuZAorCitjbGFz
cyBBYnNvbHV0ZUFkZHJlc3MgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDphZGRyZXNzCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBhZGRyZXNzKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQGFkZHJlc3MgPSBhZGRyZXNzCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiI3thZGRyZXNzLmR1bXB9W10iCisgIGVuZAorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uIDwg
Tm9kZQorICBhdHRyX3JlYWRlciA6b3Bjb2RlLCA6b3BlcmFuZHMKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIG9wY29kZSwgb3BlcmFuZHMpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAb3Bjb2RlID0gb3Bjb2RlCisgICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAgZW5kCisg
IAorICBkZWYgY2hpbGRyZW4KKyAgICBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbigmcHJvYykKKyAgICBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgQG9wY29kZSwgQG9w
ZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHQiICsgb3Bj
b2RlLnRvX3MgKyAiICIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikK
KyAgZW5kCitlbmQKKworY2xhc3MgRXJyb3IgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgICJcdGVycm9yIgorICBlbmQKK2VuZAorCitjbGFzcyBDb25zdERlY2wgPCBOb2RlCisg
IGF0dHJfcmVhZGVyIDp2YXJpYWJsZSwgOnZhbHVlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAdmFy
aWFibGUgPSB2YXJpYWJsZQorICAgIEB2YWx1ZSA9IHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGNo
aWxkcmVuCisgICAgW0B2YXJpYWJsZSwgQHZhbHVlXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbgorICAgIENvbnN0RGVjbC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEB2YXJpYWJsZSksICh5
aWVsZCBAdmFsdWUpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImNvbnN0ICN7QHZhcmlh
YmxlLmR1bXB9ID0gI3tAdmFsdWUuZHVtcH0iCisgIGVuZAorZW5kCisKKyRsYWJlbE1hcHBpbmcg
PSB7fQorCitjbGFzcyBMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgaWYgJGxhYmVsTWFwcGluZ1tuYW1lXQorICAgICAgcmFpc2UgIkxh
YmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9IiB1bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5p
c19hPyBMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBMYWJlbC5u
ZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5kCisKK2NsYXNz
IExvY2FsTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QG5hbWUgPSBuYW1lCisgIGVuZAorCisgIEBAdW5pcXVlTmFtZUNvdW50ZXIgPSAwCisgIAorICBk
ZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgaWYgJGxhYmVsTWFwcGluZ1tu
YW1lXQorICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9IiB1bmxlc3Mg
JGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMb2NhbExhYmVsCisgICAgZWxzZQorICAgICAgJGxh
YmVsTWFwcGluZ1tuYW1lXSA9IExvY2FsTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
ZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBzZWxmLnVuaXF1
ZQorICAgIHdoaWxlICRsYWJlbE1hcHBpbmdbIl9MI3tAQHVuaXF1ZU5hbWVDb3VudGVyfSJdCisg
ICAgICBAQHVuaXF1ZU5hbWVDb3VudGVyICs9IDEKKyAgICBlbmQKKyAgICBmb3JOYW1lKG5pbCwg
Il9MI3tAQHVuaXF1ZU5hbWVDb3VudGVyfSIpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
I3tuYW1lfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlIDwgTm9kZQorICBh
dHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVs
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAor
ICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJl
bgorICAgIExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxhYmVsKSkKKyAg
ZW5kCisgIAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgIGxhYmVsLm5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5j
ZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsYWJlbCA9
IGxhYmVsCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0KKyAgZW5kCisg
IAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3Jp
Z2luLCAoeWllbGQgQGxhYmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5h
bWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAgZW5kCitlbmQKKwor
Y2xhc3MgU2VxdWVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsaXN0CisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBsaXN0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxp
c3QgPSBsaXN0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgbGlzdAorICBlbmQKKyAg
CisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwg
QGxpc3QubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxpc3QuY29sbGVj
dHt8dnwgdi5kdW1wfS5qb2luKCJcbiIpCisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUgPCBOb0No
aWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBA
aW5zdGFuY2UgPSBUcnVlLm5ldworICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGluc3Rh
bmNlCisgIGVuZAorICAKKyAgZGVmIHZhbHVlCisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgInRydWUiCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlIDwgTm9DaGlsZHJlbgor
ICBkZWYgaW5pdGlhbGl6ZQorICAgIHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNl
ID0gRmFsc2UubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAg
ZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgImZhbHNlIgorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlQ2xhc3MKKyAgZGVmIGFzTm9kZQor
ICAgIFRydWUuaW5zdGFuY2UKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2VDbGFzcworICBkZWYg
YXNOb2RlCisgICAgRmFsc2UuaW5zdGFuY2UKKyAgZW5kCitlbmQKKworY2xhc3MgU2V0dGluZyA8
IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUK
KyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2Rl
T3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGlu
Z1tuYW1lXSA9IFNldHRpbmcubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBt
YXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5k
CisKK2NsYXNzIEFuZCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisg
IGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIEFuZC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEBy
aWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBhbmQgI3ty
aWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE9yIDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCBy
aWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdo
dCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRd
CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgT3IubmV3KGNvZGVPcmlnaW4sICh5
aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
Iigje2xlZnQuZHVtcH0gb3IgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE5v
dCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxk
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAor
ICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTm90Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNo
aWxkKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIobm90ICN7Y2hpbGQuZHVtcH0pIgor
ICBlbmQKK2VuZAorCitjbGFzcyBTa2lwIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiXHRza2lwIgorICBlbmQKK2VuZAorCitjbGFzcyBJZlRoZW5FbHNlIDwgTm9kZQorICBh
dHRyX3JlYWRlciA6cHJlZGljYXRlLCA6dGhlbkNhc2UKKyAgYXR0cl9hY2Nlc3NvciA6ZWxzZUNh
c2UKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgdGhlbkNhc2Up
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAcHJlZGljYXRlID0gcHJlZGljYXRlCisgICAg
QHRoZW5DYXNlID0gdGhlbkNhc2UKKyAgICBAZWxzZUNhc2UgPSBTa2lwLm5ldyhjb2RlT3JpZ2lu
KQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIGlmIEBlbHNlQ2FzZQorICAgICAgW0Bw
cmVkaWNhdGUsIEB0aGVuQ2FzZSwgQGVsc2VDYXNlXQorICAgIGVsc2UKKyAgICAgIFtAcHJlZGlj
YXRlLCBAdGhlbkNhc2VdCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisg
ICAgSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBwcmVkaWNhdGUpLCAoeWllbGQg
QHRoZW5DYXNlKSwgKHlpZWxkIEBlbHNlQ2FzZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiaWYgI3twcmVkaWNhdGUuZHVtcH1cbiIgKyB0aGVuQ2FzZS5kdW1wICsgIlxuZWxzZVxuIiAr
IGVsc2VDYXNlLmR1bXAgKyAiXG5lbmQiCisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvIDwgTm9k
ZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOnZhcmlhYmxlcywgOmJvZHkKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAgIEB2YXJpYWJsZXMgPSB2YXJpYWJsZXMKKyAg
ICBAYm9keSA9IGJvZHkKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAdmFyaWFibGVz
ICsgW0Bib2R5XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE1hY3JvLm5ldyhj
b2RlT3JpZ2luLCBAbmFtZSwgQHZhcmlhYmxlcy5tYXB7fHZ8IHlpZWxkIHZ9LCAoeWllbGQgQGJv
ZHkpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIm1hY3JvICN7bmFtZX0oIiArIHZhcmlh
Ymxlcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKVxuIiArIGJvZHkuZHVtcCAr
ICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm9DYWxsIDwgTm9kZQorICBhdHRyX3Jl
YWRlciA6bmFtZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBu
YW1lLCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQor
ICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgICAgcmFpc2UgdW5sZXNzIEBvcGVyYW5kcworICAg
IEBvcGVyYW5kcy5lYWNoe3x2fCByYWlzZSB1bmxlc3Mgdn0KKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBAb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2Mp
CisgICAgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQG9wZXJhbmRzLm1hcCgmcHJv
YykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHQje25hbWV9KCIgKyBvcGVyYW5kcy5j
b2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKSIKKyAgZW5kCitlbmQKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAieDg2IgorCitCQUNLRU5EUyA9CisgIFsK
KyAgICJYODYiLAorICAgIkFSTXY3IgorICBdCisKK1dPUktJTkdfQkFDS0VORFMgPQorICBbCisg
ICAiWDg2IgorICBdCisKK0JBQ0tFTkRfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgnICsgQkFD
S0VORFMuam9pbignKXwoJykgKyAnKVxcWicpCisKK2NsYXNzIE5vZGUKKyAgZGVmIGxvd2VyKG5h
bWUpCisgICAgc2VuZCgibG93ZXIiICsgbmFtZSkKKyAgZW5kCitlbmQKKworIyBPdmVycmlkZXMg
Zm9yIGxvd2VyKCkgZm9yIHRob3NlIG5vZGVzIHRoYXQgYXJlIGJhY2tlbmQtYWdub3N0aWMKKwor
ZGVmIHNhbml0aXplTGFiZWxOYW1lKG5hbWUpCisgICMgU29tZSBwbGF0Zm9ybXMgZG9uJ3Qgd2Fu
dCB0aGUgbGVhZGluZyAiXyIuIElmIHdlIGV2ZXIgd2FudCB0byBkbyBzb21ldGhpbmcKKyAgIyBh
Ym91dCB0aGF0LCBpdCB3b3VsZCBiZSBoZXJlLgorICBuYW1lCitlbmQKKworY2xhc3MgTGFiZWwK
KyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzICIuZ2xvYmwgI3tzYW5pdGl6ZUxhYmVs
TmFtZShzZWxmLm5hbWUpfSIKKyAgICAkYXNtLnB1dHMgIiN7c2FuaXRpemVMYWJlbE5hbWUoc2Vs
Zi5uYW1lKX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBsb3dlcihu
YW1lKQorICAgICRhc20ucHV0cyAiX19vYV8je3NlbGYubmFtZVsxLi4tMV19OiIKKyAgZW5kCitl
bmQKKworY2xhc3MgU2tpcAorICBkZWYgbG93ZXIobmFtZSkKKyAgZW5kCitlbmQKKworY2xhc3Mg
U2VxdWVuY2UKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IG5v
ZGUgfAorICAgICAgbm9kZS5sb3dlcihuYW1lKQorICAgIH0KKyAgZW5kCitlbmQKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rv
ci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5l
cmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw2NSBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisK
K3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNlciIK
K3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitkZWYgZW1pdE1hZ2lj
TnVtYmVyCisgIE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVhY2ggeworICAgIHwgbnVtYmVyIHwKKyAg
ICBwdXRzICIje251bWJlcn0sIgorICB9CitlbmQKKworb3JpZ2luYWxBU1QgPSBwYXJzZShsZXgo
JHN0ZGluLnJlYWQpKQorCitlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMob3JpZ2luYWxBU1Qp
IHsKKyAgfCBzZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8CisgIG9mZnNldHNMaXN0ID0g
YXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorICBzaXplc0xpc3QgPSBhc3QuZmls
dGVyKFNpemVvZikudW5pcS5zb3J0CisgIAorICBsZW5ndGggPSAoT0ZGU0VUX01BR0lDX05VTUJF
UlMuc2l6ZSArIDEpICogKDEgKyBvZmZzZXRzTGlzdC5zaXplICsgc2l6ZXNMaXN0LnNpemUpCisg
IAorICBwdXRzICJzdGF0aWMgY29uc3QgdW5zaWduZWQgZXh0cmFjdG9yVGFibGVbI3tsZW5ndGh9
XSA9IHsiCisgIGVtaXRNYWdpY051bWJlcgorICBwdXRzICIje2luZGV4fSwiCisgIG9mZnNldHNM
aXN0LmVhY2ggeworICAgIHwgb2Zmc2V0IHwKKyAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICBwdXRz
ICJPRkZMSU5FX0FTTV9PRkZTRVRPRigje29mZnNldC5zdHJ1Y3R9LCAje29mZnNldC5maWVsZH0p
LCIKKyAgfQorICBzaXplc0xpc3QuZWFjaCB7CisgICAgfCBvZmZzZXQgfAorICAgIGVtaXRNYWdp
Y051bWJlcgorICAgIHB1dHMgInNpemVvZigje29mZnNldC5zdHJ1Y3R9KSwiCisgIH0KKyAgcHV0
cyAifTsiCit9CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3Ry
dWN0aW9ucy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9pbnN0cnVjdGlvbnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTg4IEBA
CisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitNQUNST19JTlNUUlVDVElP
TlMgPQorICBbCisgICAiYWRkaSIsCisgICAiYW5kaSIsCisgICAibHNoaWZ0aSIsCisgICAibXVs
aSIsCisgICAibmVnaSIsCisgICAibm90aSIsCisgICAib3JpIiwKKyAgICJyc2hpZnRpIiwKKyAg
ICJ1cnNoaWZ0aSIsCisgICAic3ViaSIsCisgICAieG9yaSIsCisgICAibG9hZGkiLAorICAgImxv
YWRiIiwKKyAgICJsb2FkaCIsCisgICAic3RvcmVpIiwKKyAgICJzdG9yZWIiLAorICAgImxvYWRk
IiwKKyAgICJtb3ZlZCIsCisgICAic3RvcmVkIiwKKyAgICJhZGRkIiwKKyAgICJkaXZkIiwKKyAg
ICJzdWJkIiwKKyAgICJtdWxkIiwKKyAgICJzcXJ0ZCIsCisgICAiY2kyZCIsCisgICAiZmlpMmQi
LCAjIHVzYWdlOiBmaWkyZCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIg
d2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+LCA8ZnByPgorICAgImZkMmlpIiwgIyB1c2FnZTog
ZmQyaWkgPGZwcj4sIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRo
IG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4KKyAgICJiZGVxIiwKKyAgICJiZG5lcSIsCisgICAiYmRn
dCIsCisgICAiYmRndGVxIiwKKyAgICJiZGx0IiwKKyAgICJiZGx0ZXEiLAorICAgImJkZXF1biIs
CisgICAiYmRuZXF1biIsCisgICAiYmRndHVuIiwKKyAgICJiZGd0ZXF1biIsCisgICAiYmRsdHVu
IiwKKyAgICJiZGx0ZXF1biIsCisgICAiYnRkMmkiLAorICAgInRkMmkiLAorICAgImJjZDJpIiwK
KyAgICJtb3ZkeiIsCisgICAicG9wIiwKKyAgICJwdXNoIiwKKyAgICJtb3ZlIiwKKyAgICJzeGky
cCIsCisgICAienhpMnAiLAorICAgIm5vcCIsCisgICAiYmllcSIsCisgICAiYmluZXEiLAorICAg
ImJpYSIsCisgICAiYmlhZXEiLAorICAgImJpYiIsCisgICAiYmliZXEiLAorICAgImJpZ3QiLAor
ICAgImJpZ3RlcSIsCisgICAiYmlsdCIsCisgICAiYmlsdGVxIiwKKyAgICJiYmVxIiwKKyAgICJi
Ym5lcSIsCisgICAiYmJhIiwKKyAgICJiYmFlcSIsCisgICAiYmJiIiwKKyAgICJiYmJlcSIsCisg
ICAiYmJndCIsCisgICAiYmJndGVxIiwKKyAgICJiYmx0IiwKKyAgICJiYmx0ZXEiLAorICAgImJ0
aW8iLAorICAgImJ0aXMiLAorICAgImJ0aXoiLAorICAgImJ0aW56IiwKKyAgICJidGJvIiwKKyAg
ICJidGJzIiwKKyAgICJidGJ6IiwKKyAgICJidGJueiIsCisgICAiam1wIiwKKyAgICJiYWRkaW8i
LAorICAgImJhZGRpcyIsCisgICAiYmFkZGl6IiwKKyAgICJiYWRkaW56IiwKKyAgICJic3ViaW8i
LAorICAgImJzdWJpcyIsCisgICAiYnN1Yml6IiwKKyAgICJic3ViaW56IiwKKyAgICJibXVsaW8i
LAorICAgImJtdWxpcyIsCisgICAiYm11bGl6IiwKKyAgICJibXVsaW56IiwKKyAgICJib3JpbyIs
CisgICAiYm9yaXMiLAorICAgImJvcml6IiwKKyAgICJib3JpbnoiLAorICAgImJyZWFrIiwKKyAg
ICJjYWxsIiwKKyAgICJyZXQiLAorICAgImNpZXEiLAorICAgImNpbmVxIiwKKyAgICJjaWEiLAor
ICAgImNpYWVxIiwKKyAgICJjaWIiLAorICAgImNpYmVxIiwKKyAgICJjaWd0IiwKKyAgICJjaWd0
ZXEiLAorICAgImNpbHQiLAorICAgImNpbHRlcSIsCisgICAidGlvIiwKKyAgICJ0aXMiLAorICAg
InRpeiIsCisgICAidGlueiIsCisgICAidGJvIiwKKyAgICJ0YnMiLAorICAgInRieiIsCisgICAi
dGJueiIsCisgICAicGVlayIsCisgICAicG9rZSIsCisgICAiYnBlcSIsCisgICAiYnBuZXEiLAor
ICAgImJwYSIsCisgICAiYnBhZXEiLAorICAgImJwYiIsCisgICAiYnBiZXEiLAorICAgImJwZ3Qi
LAorICAgImJwZ3RlcSIsCisgICAiYnBsdCIsCisgICAiYnBsdGVxIiwKKyAgICJhZGRwIiwKKyAg
ICJhbmRwIiwKKyAgICJvcnAiLAorICAgInN1YnAiLAorICAgInhvcnAiLAorICAgImxvYWRwIiwK
KyAgICJjcGVxIiwKKyAgICJjcG5lcSIsCisgICAiY3BhIiwKKyAgICJjcGFlcSIsCisgICAiY3Bi
IiwKKyAgICJjcGJlcSIsCisgICAiY3BndCIsCisgICAiY3BndGVxIiwKKyAgICJjcGx0IiwKKyAg
ICJjcGx0ZXEiLAorICAgInN0b3JlcCIsCisgICAiYnRwbyIsCisgICAiYnRwcyIsCisgICAiYnRw
eiIsCisgICAiYnRwbnoiLAorICAgImJhZGRwbyIsCisgICAiYmFkZHBzIiwKKyAgICJiYWRkcHoi
LAorICAgImJhZGRwbnoiCisgIF0KKworWDg2X0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJjZHFp
IiwKKyAgICJpZGl2aSIKKyAgXQorCitJTlNUUlVDVElPTlMgPSBNQUNST19JTlNUUlVDVElPTlMg
KyBYODZfSU5TVFJVQ1RJT05TCisKK0lOU1RSVUNUSU9OX1BBVFRFUk4gPSBSZWdleHAubmV3KCdc
XEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4
dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
TUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgwZmY1ZTc1NSBdCisKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNTYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIm9mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzIgor
CitPRkZTRVRfTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgwZmY1ZTc1NSBdCisKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG9mZnNldHNMaXN0KGFzdCkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgc2l6ZXNM
aXN0KGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIFJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5k
IHNpemVzIHVzZWQgYnkgdGhlIEFTVC4gICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBvZmZzZXRzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIo
U3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKK2VuZAorCitkZWYgc2l6ZXNMaXN0KGFzdCkKKyAgYXN0
LmZpbHRlcihTaXplb2YpLnVuaXEuc29ydAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgoYXN0LCBmaWxlKSAtPiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgIFtvZmZzZXRzLCBpbmRleF0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIFBhcnNlcyB0aGUgb2Zmc2V0cyBmcm9tIGEgZmlsZSBhbmQgcmV0dXJucyBhIGxpc3Qg
b2Ygb2Zmc2V0cyBhbmQgdGhlICMKKyMgaW5kZXggb2YgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBp
cyB2YWxpZCBpbiB0aGlzIGJ1aWxkIHRhcmdldC4gICAgICAgIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKworZGVmIG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgoZmlsZSkK
KyAgaW5kZXggPSBuaWwKKyAgb2Zmc2V0cyA9IFtdCisgIGVuZGlhbm5lc3NNYXJrZXJCeXRlcyA9
IG5pbAorICAKKyAgZGVmIHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgIGJ5dGVzID0gW10K
KyAgICA0LnRpbWVzIHsKKyAgICAgIGJ5dGVzIDw8IGlucC5nZXRieXRlCisgICAgfQorICAgIAor
ICAgIGlmIGVuZGlhbm5lc3MgPT0gOmxpdHRsZQorICAgICAgIyBMaXR0bGUgZW5kaWFuCisgICAg
ICAoYnl0ZXNbMF0gPDwgMCB8CisgICAgICAgYnl0ZXNbMV0gPDwgOCB8CisgICAgICAgYnl0ZXNb
Ml0gPDwgMTYgfAorICAgICAgIGJ5dGVzWzNdIDw8IDI0KQorICAgIGVsc2UKKyAgICAgICMgQmln
IGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDI0IHwKKyAgICAgICBieXRlc1sxXSA8PCAxNiB8
CisgICAgICAgYnl0ZXNbMl0gPDwgOCB8CisgICAgICAgYnl0ZXNbM10gPDwgMCkKKyAgICBlbmQK
KyAgZW5kCisgIAorICBbOmxpdHRsZSwgOmJpZ10uZWFjaCB7CisgICAgfCBlbmRpYW5uZXNzIHwK
KyAgICBtYWdpY0J5dGVzID0gW10KKyAgICBNQUdJQ19OVU1CRVJTLmVhY2ggeworICAgICAgfCBu
dW1iZXIgfAorICAgICAgY3VycmVudEJ5dGVzID0gW10KKyAgICAgIDQudGltZXMgeworICAgICAg
ICBjdXJyZW50Qnl0ZXMgPDwgKG51bWJlciAmIDB4ZmYpCisgICAgICAgIG51bWJlciA+Pj0gOAor
ICAgICAgfQorICAgICAgaWYgZW5kaWFubmVzcyA9PSA6YmlnCisgICAgICAgIGN1cnJlbnRCeXRl
cy5yZXZlcnNlIQorICAgICAgZW5kCisgICAgICBtYWdpY0J5dGVzICs9IGN1cnJlbnRCeXRlcwor
ICAgIH0KKyAgICAKKyAgICBGaWxlLm9wZW4oZmlsZSwgInIiKSB7CisgICAgICB8IGlucCB8Cisg
ICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgbG9vcCB7CisgICAgICAgIGJ5dGUgPSBpbnAu
Z2V0Ynl0ZQorICAgICAgICBicmVhayB1bmxlc3MgYnl0ZQorICAgICAgICBpZiBieXRlID09IG1h
Z2ljQnl0ZXNbd2hlcmVJbk1hcmtlcl0KKyAgICAgICAgICB3aGVyZUluTWFya2VyICs9IDEKKyAg
ICAgICAgICBpZiB3aGVyZUluTWFya2VyID09IG1hZ2ljQnl0ZXMuc2l6ZQorICAgICAgICAgICAg
IyBXZSBoYXZlIGEgbWF0Y2ghIElmIHdlIGhhdmUgbm90IHlldCByZWFkIHRoZSBlbmRpYW5uZXNz
IG1hcmtlciBhbmQgaW5kZXgsCisgICAgICAgICAgICAjIHRoZW4gcmVhZCB0aG9zZSBub3c7IG90
aGVyd2lzZSByZWFkIGFuIG9mZnNldC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgbm90
IGluZGV4CisgICAgICAgICAgICAgIGluZGV4ID0gcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIG9mZnNldHMgPDwgcmVhZEludChlbmRpYW5u
ZXNzLCBpbnApCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd2hl
cmVJbk1hcmtlciA9IDAKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgIHdo
ZXJlSW5NYXJrZXIgPSAwCisgICAgICAgIGVuZAorICAgICAgfQorICAgIH0KKyAgICAKKyAgICBi
cmVhayBpZiBpbmRleAorICB9CisgIAorICByYWlzZSB1bmxlc3MgaW5kZXgKKyAgCisgIFtvZmZz
ZXRzLCBpbmRleF0KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBi
dWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkgLT4gW29mZnNldHMsIHNpemVzXSAgICAg
ICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQnVpbGRzIGEgbWFwcGluZyBiZXR3ZWVu
IFN0cnVjdE9mZnNldCBub2RlcyBhbmQgdGhlaXIgdmFsdWVzLiAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNl
dHNMaXN0KQorICBvZmZzZXRzTWFwID0ge30KKyAgc2l6ZXNNYXAgPSB7fQorICBhc3RPZmZzZXRz
TGlzdCA9IG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0U2l6ZXNMaXN0ID0gc2l6ZXNMaXN0KGFzdCkK
KyAgcmFpc2UgdW5sZXNzIGFzdE9mZnNldHNMaXN0LnNpemUgKyBhc3RTaXplc0xpc3Quc2l6ZSA9
PSBvZmZzZXRzTGlzdC5zaXplCisgIG9mZnNldHNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsK
KyAgICB8IHN0cnVjdE9mZnNldCwgaW5kZXggfAorICAgIG9mZnNldHNNYXBbc3RydWN0T2Zmc2V0
XSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgc2l6ZXNMaXN0KGFzdCkuZWFjaF93aXRoX2lu
ZGV4IHsKKyAgICB8IHNpemVvZiwgaW5kZXggfAorICAgIHNpemVzTWFwW3NpemVvZl0gPSBvZmZz
ZXRzTGlzdC5zaGlmdAorICB9CisgIFtvZmZzZXRzTWFwLCBzaXplc01hcF0KK2VuZAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU5MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiaW5zdHJ1Y3Rpb25zIgorcmVxdWlyZSAicmVn
aXN0ZXJzIgorCitjbGFzcyBUb2tlbgorICBhdHRyX3JlYWRlciA6Y29kZU9yaWdpbiwgOnN0cmlu
ZworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RyaW5nKQorICAgIEBjb2RlT3Jp
Z2luID0gY29kZU9yaWdpbgorICAgIEBzdHJpbmcgPSBzdHJpbmcKKyAgZW5kCisgIAorICBkZWYg
PT0ob3RoZXIpCisgICAgaWYgb3RoZXIuaXNfYT8gVG9rZW4KKyAgICAgIEBzdHJpbmcgPT0gb3Ro
ZXIuc3RyaW5nCisgICAgZWxzZQorICAgICAgQHN0cmluZyA9PSBvdGhlcgorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiA9fihvdGhlcikKKyAgICBAc3RyaW5nID1+IG90aGVyCisgIGVuZAorICAK
KyAgZGVmIHRvX3MKKyAgICAiI3tAc3RyaW5nLmluc3BlY3R9IGF0IGxpbmUgI3tjb2RlT3JpZ2lu
fSIKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBpZiBjb21tZW50
LmVtcHR5PworICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9IgorICAgIGVsc2UKKyAg
ICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfTogI3tjb21tZW50WzBdfSIKKyAgICBlbmQK
KyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIGxl
eGVyLiBUYWtlcyBhIHN0cmluZyBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0b2tlbnMuICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGxleChzdHIp
CisgIHJlc3VsdCA9IFtdCisgIGxpbmVOdW1iZXIgPSAxCisgIHdoaWxlIG5vdCBzdHIuZW1wdHk/
CisgICAgY2FzZSBzdHIKKyAgICB3aGVuIC9cQVwjKFteXG5dKikvCisgICAgICAjIGNvbW1lbnQs
IGlnbm9yZQorICAgIHdoZW4gL1xBXG4vCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVO
dW1iZXIsICQmKQorICAgICAgbGluZU51bWJlciArPSAxCisgICAgd2hlbiAvXEFbYS16QS1aXShb
YS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYp
CisgICAgd2hlbiAvXEFcLihbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5u
ZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFfKFthLXpBLVowLTlfXSopLworICAgICAg
cmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQShbIFx0XSsp
LworICAgICAgIyB3aGl0ZXNwYWNlLCBpZ25vcmUKKyAgICB3aGVuIC9cQTB4KFswLTlhLWZBLUZd
KykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLmhleC50b19zKQor
ICAgIHdoZW4gL1xBMChbMC03XSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVt
YmVyLCAkJi5vY3QudG9fcykKKyAgICB3aGVuIC9cQShbMC05XSspLworICAgICAgcmVzdWx0IDw8
IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQTo6LworICAgICAgcmVzdWx0
IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVs6LFwoXClcW1xdPVwr
XC0qXS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgZWxz
ZQorICAgICAgcmFpc2UgIkxleGVyIGVycm9yIGF0IGxpbmUgbnVtYmVyICN7bGluZU51bWJlcn0s
IHVuZXhwZWN0ZWQgc2VxdWVuY2UgI3tzdHJbMC4uMjBdLmluc3BlY3R9IgorICAgIGVuZAorICAg
IHN0ciA9ICR+LnBvc3RfbWF0Y2gKKyAgZW5kCisgIHJlc3VsdAorZW5kCisKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIFRva2VuIGlkZW50aWZpY2F0aW9uLiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisKK2RlZiBpc1JlZ2lzdGVyKHRva2VuKQorICB0b2tlbiA9fiBSRUdJ
U1RFUl9QQVRURVJOCitlbmQKKworZGVmIGlzSW5zdHJ1Y3Rpb24odG9rZW4pCisgIHRva2VuID1+
IElOU1RSVUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNLZXl3b3JkKHRva2VuKQorICB0b2tl
biA9fiAvXEEoKHRydWUpfChmYWxzZSl8KGlmKXwodGhlbil8KGVsc2UpfChlbHNpZil8KGVuZCl8
KGFuZCl8KG9yKXwobm90KXwobWFjcm8pfChjb25zdCl8KHNpemVvZil8KGVycm9yKSlcWi8gb3IK
KyAgICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOIG9yCisgICAgdG9rZW4gPX4gSU5TVFJVQ1RJ
T05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0lkZW50aWZpZXIodG9rZW4pCisgIHRva2VuID1+IC9c
QVthLXpBLVpdKFthLXpBLVowLTlfXSopXFovIGFuZCBub3QgaXNLZXl3b3JkKHRva2VuKQorZW5k
CisKK2RlZiBpc0xhYmVsKHRva2VuKQorICB0b2tlbiA9fiAvXEFfKFthLXpBLVowLTlfXSopXFov
CitlbmQKKworZGVmIGlzTG9jYWxMYWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXC4oW2EtekEt
WjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNWYXJpYWJsZSh0b2tlbikKKyAgaXNJZGVudGlmaWVy
KHRva2VuKSBvciBpc1JlZ2lzdGVyKHRva2VuKQorZW5kCisKK2RlZiBpc0ludGVnZXIodG9rZW4p
CisgIHRva2VuID1+IC9cQVswLTldLworZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIFRoZSBwYXJzZXIuIFRha2VzIGFuIGFycmF5IG9mIHRva2VucyBhbmQgcmV0dXJu
cyBhbiBBU1QuIE1ldGhvZHMgICAgICMKKyMgb3RoZXIgdGhhbiBwYXJzZSh0b2tlbnMpIGFyZSBu
b3QgZm9yIHB1YmxpYyBjb25zdW1wdGlvbi4gICAgICAgICAgICAgIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgUGFyc2VyCisgIGRlZiBpbml0aWFsaXplKHRva2Vu
cykKKyAgICBAdG9rZW5zID0gdG9rZW5zCisgICAgQGlkeCA9IDAKKyAgZW5kCisgIAorICBkZWYg
cGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBpZiBAdG9rZW5zW0BpZHhdCisgICAgICBAdG9rZW5z
W0BpZHhdLnBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgZWxzZQorICAgICAgaWYgY29tbWVudC5l
bXB0eT8KKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlIgorICAgICAg
ZWxzZQorICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZpbGU6ICN7Y29tbWVu
dFswXX0iCisgICAgICBlbmQKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgY29uc3VtZShyZWdl
eHApCisgICAgaWYgcmVnZXhwCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhd
ID1+IHJlZ2V4cAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEBpZHggPT0gQHRv
a2Vucy5sZW5ndGgKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgZW5kCisgIAorICBkZWYgc2tp
cE5ld0xpbmUKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgIEBpZHggKz0g
MQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICBpZiBA
dG9rZW5zW0BpZHhdID09ICJub3QiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHBhcnNlUHJlZGlj
YXRlQXRvbQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICBAaWR4ICs9IDEK
KyAgICAgIHNraXBOZXdMaW5lCisgICAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZQorICAgICAg
cGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAidHJ1ZSIKKyAgICAgIHJl
c3VsdCA9IFRydWUuaW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZmFsc2UiCisgICAgICByZXN1bHQgPSBGYWxzZS5pbnN0
YW5jZQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lkZW50aWZp
ZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gU2V0dGluZy5mb3JOYW1lKEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBAaWR4ICs9IDEK
KyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgZW5k
CisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBbmQKKyAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0
ZUF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJhbmQiCisgICAgICBjb2RlT3JpZ2lu
ID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBO
ZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQXRvbQorICAgICAgcmVzdWx0ID0g
QW5kLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJlc3VsdAor
ICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZQorICAgICMgc29tZSBleGFtcGxlcyBvZiBw
cmVjZWRlbmNlOgorICAgICMgbm90IGEgYW5kIGIgLT4gKG5vdCBhKSBhbmQgYgorICAgICMgYSBh
bmQgYiBvciBjIC0+IChhIGFuZCBiKSBvciBjCisgICAgIyBhIG9yIGIgYW5kIGMgLT4gYSBvciAo
YiBhbmQgYykKKyAgICAKKyAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAgIHdoaWxl
IEB0b2tlbnNbQGlkeF0gPT0gIm9yIgorICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmln
aHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAgICAgcmVzdWx0ID0gT3IubmV3KGNvZGVPcmlnaW4s
IHJlc3VsdCwgcmlnaHQpCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBh
cnNlVmFyaWFibGUKKyAgICBpZiBpc1JlZ2lzdGVyKEB0b2tlbnNbQGlkeF0pCisgICAgICBpZiBA
dG9rZW5zW0BpZHhdID1+IEZQUl9QQVRURVJOCisgICAgICAgIHJlc3VsdCA9IEZQUmVnaXN0ZXJJ
RC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcp
CisgICAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IFJlZ2lzdGVySUQuZm9yTmFtZShAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgZW5kCisgICAg
ZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICByZXN1bHQgPSBWYXJpYWJs
ZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcp
CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICAgIEBpZHggKz0gMQorICAg
IHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUFkZHJlc3Mob2Zmc2V0KQorICAgIHBhcnNl
RXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgY29kZU9yaWdpbiA9IEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbgorICAgIAorICAgICMgVGhyZWUgcG9zc2liaWxpdGllczoKKyAg
ICAjIFtdICAgICAgIC0+IEFic29sdXRlQWRkcmVzcworICAgICMgW2FdICAgICAgLT4gQWRkcmVz
cworICAgICMgW2EsYl0gICAgLT4gQmFzZUluZGV4IHdpdGggc2NhbGUgPSAxCisgICAgIyBbYSxi
LGNdICAtPiBCYXNlSW5kZXgKKyAgICAKKyAgICBAaWR4ICs9IDEKKyAgICBpZiBAdG9rZW5zW0Bp
ZHhdID09ICJdIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXR1cm4gQWJzb2x1dGVBZGRyZXNz
Lm5ldyhjb2RlT3JpZ2luLCBvZmZzZXQpCisgICAgZW5kCisgICAgYSA9IHBhcnNlVmFyaWFibGUK
KyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgcmVzdWx0ID0gQWRkcmVzcy5uZXco
Y29kZU9yaWdpbiwgYSwgb2Zmc2V0KQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNz
IEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIGIgPSBwYXJzZVZh
cmlhYmxlCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICByZXN1bHQgPSBC
YXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIDEsIG9mZnNldCkKKyAgICAgIGVsc2UKKyAg
ICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgQGlk
eCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIFsiMSIsICIyIiwgIjQiLCAiOCJdLm1l
bWJlcj8gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgYyA9IEB0b2tlbnNbQGlkeF0uc3Ry
aW5nLnRvX2kKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0
b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9y
aWdpbiwgYSwgYiwgYywgb2Zmc2V0KQorICAgICAgZW5kCisgICAgZW5kCisgICAgQGlkeCArPSAx
CisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQ29sb25Db2xvbgorICAgIHNraXBO
ZXdMaW5lCisgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIHBh
cnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgbmFtZXMgPSBb
QHRva2Vuc1tAaWR4XS5zdHJpbmddCisgICAgQGlkeCArPSAxCisgICAgd2hpbGUgQHRva2Vuc1tA
aWR4XSA9PSAiOjoiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlz
SWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICBuYW1lcyA8PCBAdG9rZW5zW0BpZHhdLnN0
cmluZworICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgICAgcmFpc2UgaWYgbmFtZXMuZW1wdHk/
CisgICAgW2NvZGVPcmlnaW4sIG5hbWVzXQorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Np
b25BdG9tCisgICAgc2tpcE5ld0xpbmUKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICItIgorICAg
ICAgQGlkeCArPSAxCisgICAgICBOZWdJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNv
ZGVPcmlnaW4sIHBhcnNlRXhwcmVzc2lvbkF0b20pCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9
PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uCisg
ICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgQGlkeCAr
PSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0ludGVnZXIgQHRva2Vuc1tAaWR4XQorICAg
ICAgcmVzdWx0ID0gSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tl
bnNbQGlkeF0uc3RyaW5nLnRvX2kpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAg
IGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICBjb2RlT3JpZ2luLCBuYW1l
cyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAgaWYgbmFtZXMuc2l6ZSA+IDEKKyAgICAgICAgU3Ry
dWN0T2Zmc2V0LmZvckZpZWxkKGNvZGVPcmlnaW4sIG5hbWVzWzAuLi0yXS5qb2luKCc6OicpLCBu
YW1lc1stMV0pCisgICAgICBlbHNlCisgICAgICAgIFZhcmlhYmxlLmZvck5hbWUoY29kZU9yaWdp
biwgbmFtZXNbMF0pCisgICAgICBlbmQKKyAgICBlbHNpZiBpc1JlZ2lzdGVyIEB0b2tlbnNbQGlk
eF0KKyAgICAgIHBhcnNlVmFyaWFibGUKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJzaXpl
b2YiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xv
bkNvbG9uCisgICAgICBTaXplb2YuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lcy5qb2luKCc6Oicp
KQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYg
cGFyc2VFeHByZXNzaW9uTXVsCisgICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBwYXJzZUV4
cHJlc3Npb25BdG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgIGlmIEB0
b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBN
dWxJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBh
cnNlRXhwcmVzc2lvbkF0b20pCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQK
KyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgY291bGRCZUV4cHJlc3Npb24K
KyAgICBAdG9rZW5zW0BpZHhdID09ICItIiBvciBAdG9rZW5zW0BpZHhdID09ICJzaXplb2YiIG9y
IGlzSW50ZWdlcihAdG9rZW5zW0BpZHhdKSBvciBpc1ZhcmlhYmxlKEB0b2tlbnNbQGlkeF0pCisg
IGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbgorICAgIHNraXBOZXdMaW5lCisgICAgcmVz
dWx0ID0gcGFyc2VFeHByZXNzaW9uTXVsCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKyIg
b3IgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIisiCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBBZGRJbW1lZGlhdGVzLm5ldyhAdG9r
ZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkKKyAg
ICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICByZXN1bHQgPSBTdWJJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2lu
LCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UK
KyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZU9w
ZXJhbmQoY29tbWVudCkKKyAgICBpZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgICAgZXhwciA9IHBh
cnNlRXhwcmVzc2lvbgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgICAgcGFy
c2VBZGRyZXNzKGV4cHIpCisgICAgICBlbHNlCisgICAgICAgIGV4cHIKKyAgICAgIGVuZAorICAg
IGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICBwYXJzZUFkZHJlc3MoSW1tZWRpYXRl
Lm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIDApKQorICAgIGVsc2lmIGlzTGFiZWwgQHRv
a2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0
b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAg
ZWxzaWYgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IExvY2FsTGFi
ZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgTG9jYWxMYWJlbC5mb3JO
YW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQorICAg
ICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yKGNv
bW1lbnQpCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAg
ICBza2lwTmV3TGluZQorICAgIGNvbnN1bWUoL1xBXChcWi8pCisgICAgdmFyaWFibGVzID0gW10K
KyAgICBsb29wIHsKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICIpIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIGlzSWRl
bnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICB2YXJpYWJsZXMgPDwgVmFyaWFibGUuZm9y
TmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWYgQHRva2Vuc1tA
aWR4XSA9PSAiKSIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBicmVhaworICAgICAg
ICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvcgorICAgICAgICBlbmQKKyAgICAgIGVsc2UKKyAg
ICAgICAgcGFyc2VFcnJvcgorICAgICAgZW5kCisgICAgfQorICAgIHZhcmlhYmxlcworICBlbmQK
KyAgCisgIGRlZiBwYXJzZVNlcXVlbmNlKGZpbmFsLCBjb21tZW50KQorICAgIGZpcnN0Q29kZU9y
aWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIGxpc3QgPSBbXQorICAgIGxvb3Ag
eworICAgICAgaWYgKEBpZHggPT0gQHRva2Vucy5sZW5ndGggYW5kIG5vdCBmaW5hbCkgb3IgKGZp
bmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICBicmVhaworICAgICAgZWxz
aWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICMgaWdub3JlCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiY29uc3QiCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc1ZhcmlhYmxlIEB0b2tlbnNbQGlkeF0K
KyAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBw
YXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI9IgorICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgdmFsdWUgPSBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBjb25zdCAje3Zh
cmlhYmxlLm5hbWV9IikKKyAgICAgICAgbGlzdCA8PCBDb25zdERlY2wubmV3KEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4
XSA9PSAiZXJyb3IiCisgICAgICAgIGxpc3QgPDwgRXJyb3IubmV3KEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbikKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJpZiIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcHJlZGljYXRlID0g
cGFyc2VQcmVkaWNhdGUKKyAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAg
ICAgICBza2lwTmV3TGluZQorICAgICAgICBpZlRoZW5FbHNlID0gSWZUaGVuRWxzZS5uZXcoY29k
ZU9yaWdpbiwgcHJlZGljYXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lm
KSlcWi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAg
ICAgIGxpc3QgPDwgaWZUaGVuRWxzZQorICAgICAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJl
bHNpZiIKKyAgICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBwcmVk
aWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4p
KVxaLykKKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIGVsc2VDYXNlID0gSWZUaGVu
RWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGljYXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8
KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1w
fVwiIikpCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IGVsc2VDYXNlCisgICAgICAg
ICAgaWZUaGVuRWxzZSA9IGVsc2VDYXNlCisgICAgICAgIGVuZAorICAgICAgICBpZiBAdG9rZW5z
W0BpZHhdID09ICJlbHNlIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGlmVGhlbkVs
c2UuZWxzZUNhc2UgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBl
bHNlIGNhc2UgZm9yIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpCisgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0Bp
ZHhdID09ICJlbmQiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVuZAorICAgICAgZWxz
aWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5l
CisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQor
ICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICAgICAgYm9keSA9IHBh
cnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIG1hY3JvICN7bmFtZX0iKQor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgbGlzdCA8PCBNYWNyby5uZXcoY29kZU9yaWdpbiwg
bmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgICAgZWxzaWYgaXNJbnN0cnVjdGlvbiBAdG9rZW5z
W0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAg
ICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFu
ZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3Ry
dWN0aW9uLCBhbmQgaXQncyB0aGUgbGFzdCBvbmUuCisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgYnJlYWsKKyAgICAgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5z
dHJ1Y3Rpb24uCisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwg
bmFtZSwgW10pCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICAj
IEl0J3MgZGVmaW5pdGVseSBhbiBpbnN0cnVjdGlvbiwgYW5kIGl0IGhhcyBhdCBsZWFzdCBvbmUg
b3BlcmFuZC4KKyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAgZW5kT2ZTZXF1ZW5j
ZSA9IGZhbHNlCisgICAgICAgICAgbG9vcCB7CisgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJz
ZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBpbnN0cnVjdGlvbiAje25hbWV9IikKKyAgICAgICAg
ICAgIGlmIChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5k
IEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUg
aW5zdHJ1Y3Rpb24gYW5kIG9mIHRoZSBzZXF1ZW5jZS4KKyAgICAgICAgICAgICAgZW5kT2ZTZXF1
ZW5jZSA9IHRydWUKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAgICMgSGFzIGFub3RoZXIgb3BlcmFuZC4KKyAg
ICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJcbiIKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbi4KKyAgICAg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIGEgY29tbWEsIG5ld2xpbmUsIG9y
ICN7ZmluYWx9IGFmdGVyICN7b3BlcmFuZHMubGFzdC5kdW1wfSIpCisgICAgICAgICAgICBlbmQK
KyAgICAgICAgICB9CisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdp
biwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgICAgaWYgZW5kT2ZTZXF1ZW5jZQorICAgICAgICAg
ICAgYnJlYWsKKyAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBpc0lkZW50
aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgICAgICAjIE1h
Y3JvIGludm9jYXRpb24uCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgb3BlcmFuZHMg
PSBbXQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9
PSAiKSIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGxvb3AgeworICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9r
ZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAgICAgICAgICAjIEl0J3MgYSBtYWNybyBsYW1i
ZGEhCisgICAgICAgICAgICAgICAgY29kZU9yaWdpbklubmVyID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgdmFyaWFi
bGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICAgICAgICAgIGJvZHkgPSBwYXJzZVNl
cXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBhbm9ueW1vdXMgbWFjcm8gcGFzc2Vk
IGFzIGFyZ3VtZW50IHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICAgICAgICAgIG9wZXJhbmRzIDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luSW5uZXIsIG5pbCwg
dmFyaWFibGVzLCBib2R5KQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3Bl
cmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gY2FsbCB0byAje25h
bWV9IikKKyAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAg
ICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IgIlVuZXhwZWN0ZWQgI3tAdG9rZW5zW0BpZHhd
LnN0cmluZy5pbnNwZWN0fSB3aGlsZSBwYXJzaW5nIGludm9jYXRpb24gb2YgbWFjcm8gI3tuYW1l
fSIKKyAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICB9CisgICAgICAgICAgZW5kCisgICAg
ICAgICAgbGlzdCA8PCBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQor
ICAgICAgICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0ZWQgXCIoXCIgYWZ0ZXIg
I3tuYW1lfSIKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0g
b3IgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcK
KyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlk
eF0gPT0gIjoiCisgICAgICAgICMgSXQncyBhIGxhYmVsLgorICAgICAgICBpZiBpc0xhYmVsIG5h
bWUKKyAgICAgICAgICBsaXN0IDw8IExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAg
ICAgICAgZWxzZQorICAgICAgICAgIGxpc3QgPDwgTG9jYWxMYWJlbC5mb3JOYW1lKGNvZGVPcmln
aW4sIG5hbWUpCisgICAgICAgIGVuZAorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2UKKyAg
ICAgICAgcGFyc2VFcnJvciAiRXhwZWN0aW5nIHRlcm1pbmFsICN7ZmluYWx9ICN7Y29tbWVudH0i
CisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGZpcnN0Q29kZU9yaWdpbiwgbGlz
dCkKKyAgZW5kCitlbmQKKworZGVmIHBhcnNlKHRva2VucykKKyAgcGFyc2VyID0gUGFyc2VyLm5l
dyh0b2tlbnMpCisgIHBhcnNlci5wYXJzZVNlcXVlbmNlKG5pbCwgIiIpCitlbmQKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworR1BSUyA9CisgIFsKKyAgICJ0MCIsCisgICAidDEiLAorICAgInQyIiwKKyAg
ICJ0MyIsCisgICAidDQiLAorICAgImNmciIsCisgICAiYTAiLAorICAgImExIiwKKyAgICJyMCIs
CisgICAicjEiLAorICAgInNwIgorICBdCisKK0ZQUlMgPQorICBbCisgICAiZnQwIiwKKyAgICJm
dDEiLAorICAgImZ0MiIsCisgICAiZnQzIiwKKyAgICJmdDQiLAorICAgImZ0NSIsCisgICAiZmEw
IiwKKyAgICJmYTEiLAorICAgImZhMiIsCisgICAiZmEzIiwKKyAgICJmciIKKyAgXQorCitSRUdJ
U1RFUlMgPSBHUFJTICsgRlBSUworCitHUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyAr
IEdQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQorRlBSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdc
XEEoKCcgKyBGUFJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKKworUkVHSVNURVJfUEFUVEVSTiA9
IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIFJFR0lTVEVSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJi
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyMSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJl
ICJwYXJzZXIiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIC0+IHNldHRpbmdz
Q29tYmlhdGlvbnMgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBDb21wdXRlcyBh
biBhcnJheSBvZiBzZXR0aW5ncyBtYXBzLCB3aGVyZSBhIHNldHRpbmdzIG1hcCBjb25zdGl0dXRl
cyAjCisjIGEgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFzc2VtYmx5IGNvZGUgYmVpbmcgZ2VuZXJh
dGVkLiBUaGUgbWFwICAgICAgICMKKyMgY29udGFpbnMga2V5IHZhbHVlIHBhaXJzIHdoZXJlIGtl
eXMgYXJlIHNldHRpbmdzIG5hbWVzIChzdHJpbmdzKSBhbmQgIworIyB0aGUgdmFsdWVzIGFyZSBi
b29sZWFucyAodHJ1ZSBmb3IgZW5hYmxlZCwgZmFsc2UgZm9yIGRpc2FibGVkKS4gICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgY29tcHV0ZVNldHRpbmdzQ29t
YmluYXRpb25zKGFzdCkKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBbXQorICAKKyAgZGVmIHNl
dHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbWFwU29GYXIsIHJlbWFpbmlu
ZykKKyAgICBpZiByZW1haW5pbmcuZW1wdHk/CisgICAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA8
PCBtYXBTb0ZhcgorICAgICAgcmV0dXJuCisgICAgZW5kCisgICAgCisgICAgbmV3TWFwID0gbWFw
U29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSB0cnVlCisgICAgc2V0dGluZ3ND
b21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmluZ1sxLi4tMV0p
CisgICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1sw
XV0gPSBmYWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywg
bmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmluYXRv
cihzZXR0aW5nc0NvbWJpbmF0aW9ucywge30sIChhc3QuZmlsdGVyKFNldHRpbmcpLnVuaXEuY29s
bGVjdHt8dnwgdi5uYW1lfSArIFsiWDg2IiwgIkFSTXY3Il0pLnVuaXEpCisgIAorICBzZXR0aW5n
c0NvbWJpbmF0aW9ucworZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJh
Y2tlbmQgfCAuLi4gfSAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIERldGVy
bWluZXMgaWYgdGhlIHNldHRpbmdzIGNvbWJpbmF0aW9uIGlzIHZhbGlkLCBhbmQgaWYgc28sIGNh
bGxzICAgICMKKyMgdGhlIGJsb2NrIHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSBuZWVkIHRvIGdl
bmVyYXRlIGNvZGUuICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKworZGVmIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkKKyAgIyBDaGVjayB3
aGljaCBhcmNoaXRlY3R1cmVzIHRoaXMgY29tYmluYXRvciBjbGFpbXMgdG8gc3VwcG9ydC4KKyAg
bnVtQ2xhaW1lZEJhY2tlbmRzID0gMAorICBzZWxlY3RlZEJhY2tlbmQgPSBuaWwKKyAgQkFDS0VO
RFMuZWFjaCB7CisgICAgfCBiYWNrZW5kIHwKKyAgICBpc1N1cHBvcnRlZCA9IGNvbmNyZXRlU2V0
dGluZ3NbYmFja2VuZF0KKyAgICByYWlzZSB1bmxlc3MgaXNTdXBwb3J0ZWQgIT0gbmlsCisgICAg
bnVtQ2xhaW1lZEJhY2tlbmRzICs9IGlmIGlzU3VwcG9ydGVkIHRoZW4gMSBlbHNlIDAgZW5kCisg
ICAgaWYgaXNTdXBwb3J0ZWQKKyAgICAgIHNlbGVjdGVkQmFja2VuZCA9IGJhY2tlbmQKKyAgICBl
bmQKKyAgfQorICAKKyAgcmV0dXJuIGlmIG51bUNsYWltZWRCYWNrZW5kcyA+IDEKKyAgCisgICMg
UmVzb2x2ZSB0aGUgQVNUIGRvd24gdG8gYSBsb3ctbGV2ZWwgZm9ybSAobm8gbWFjcm9zIG9yIGNv
bmRpdGlvbmFscykuCisgIGxvd0xldmVsQVNUID0gYXN0LnJlc29sdmVTZXR0aW5ncyhjb25jcmV0
ZVNldHRpbmdzKQorICAKKyAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIHNl
bGVjdGVkQmFja2VuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBp
bmRleCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGZvckVh
Y2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCBzZXR0aW5nc0NvbWJpbmF0aW9ucykgeyAg
ICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8
IC4uLiB9ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEV4ZWN1dGVzIHRo
ZSBnaXZlbiBibG9jayBmb3IgZWFjaCB2YWxpZCBzZXR0aW5ncyBjb21iaW5hdGlvbiBpbiB0aGUg
ICMKKyMgc2V0dGluZ3MgbWFwLiBUaGUgYXN0IHBhc3NlZCBpbnRvIHRoZSBibG9jayBpcyByZXNv
bHZlZCAgICAgICAgICAgICAgIworIyAoYXN0LnJlc29sdmUpIGFnYWluc3QgdGhlIHNldHRpbmdz
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
VGhlIGZpcnN0IGZvcm0gd2lsbCBjYWxsIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3Qp
IGZvciB5b3UuICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGZv
ckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCAqb3B0aW9uYWxTZXR0aW5nc0NvbWJp
bmF0aW9ucykKKyAgcmFpc2UgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucy5zaXplID4g
MQorICAKKyAgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucy5lbXB0eT8KKyAgICBzZXR0
aW5nc0NvbWJpbmF0aW9ucyA9IGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIGVs
c2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IG9wdGlvbmFsU2V0dGluZ3NDb21iaWF0aW9u
c1swXQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zLmVhY2hfd2l0aF9pbmRleCB7
CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBpbmRleCB8CisgICAgZm9yU2V0dGluZ3MoY29uY3Jl
dGVTZXR0aW5ncywgYXN0KSB7CisgICAgICB8IGNvbmNyZXRlU2V0dGluZ3NfLCBsb3dMZXZlbEFT
VCwgYmFja2VuZCB8CisgICAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwg
YmFja2VuZCwgaW5kZXgKKyAgICB9CisgIH0KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUmV0dXJucyB0
aGUgQysrIGNvZGUgdXNlZCB0byB0ZXN0IGlmIHdlIGFyZSBpbiBhIGNvbmZpZ3VyYXRpb24gdGhh
dCAgIworIyBjb3JyZXNwb25kcyB0byB0aGUgZ2l2ZW4gY29uY3JldGUgc2V0dGluZ3MuICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
CitkZWYgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICIjaWYgIiArIGNvbmNy
ZXRlU2V0dGluZ3MudG9fYS5jb2xsZWN0eworICAgIHwgcGFpciB8CisgICAgKGlmIHBhaXJbMV0K
KyAgICAgICAiIgorICAgICBlbHNlCisgICAgICAgIiEiCisgICAgIGVuZCkgKyAiT0ZGTElORV9B
U01fIiArIHBhaXJbMF0KKyAgfS5qb2luKCIgJiYgIikKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBpc0FTVEVycm9uZW91cyhhc3QpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGVz
dHMgdG8gc2VlIGlmIHRoZSBBU1QgY2xhaW1zIHRoYXQgdGhlcmUgaXMgYW4gZXJyb3IgLSBpLmUu
IGlmIHRoZSAgIworIyB1c2VyJ3MgY29kZSwgYWZ0ZXIgc2V0dGluZ3MgcmVzb2x1dGlvbiwgaGFz
IEVycm9yIG5vZGVzLiAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworCitkZWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICBub3QgYXN0LmZpbHRlcihFcnJvciku
ZW1wdHk/CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgYXNzZXJ0
Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIEVtaXRzIGEgY2hlY2sgdGhhdCBhc3NlcnRzIHRo
YXQgd2UncmUgdXNpbmcgdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24uICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0
dGluZ3MpCisgIHB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgIHB1dHMg
IiNlbHNlIgorICBwdXRzICIjZXJyb3IgXCJDb25maWd1cmF0aW9uIG1pc21hdGNoLlwiIgorICBw
dXRzICIjZW5kaWYiCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKSB7
ICAgICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQgfCAu
Li4gfSAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRW1pdHMg
YWxsIHJlbGV2YW50IGd1YXJkcyB0byBzZWUgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaG9sZHMgYW5k
ICAgICAgIworIyBjYWxscyB0aGUgYmxvY2sgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGVy
cm9uZW91cy4gICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworCitkZWYgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBi
YWNrZW5kKQorICBwdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAKKyAg
aWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAgIHB1dHMgIiNlcnJvciBcIkludmFsaWQgY29uZmln
dXJhdGlvbi5cIiIKKyAgZWxzaWYgbm90IFdPUktJTkdfQkFDS0VORFMuaW5jbHVkZT8gYmFja2Vu
ZAorICAgIHB1dHMgIiNlcnJvciBcIlRoaXMgYmFja2VuZCBpcyBub3Qgc3VwcG9ydGVkIHlldC5c
IiIKKyAgZWxzZQorICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZAorICBl
bmQKKyAgCisgIHB1dHMgIiNlbmRpZiIKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KSB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwg
YmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBFbWl0cyBndWFyZCBjb2RlcyBmb3IgYWxsIHZhbGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQg
Y2FsbHMgdGhlIGJsb2NrICAjCisjIGZvciB0aG9zZSBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSB2
YWxpZCBhbmQgbm90IGVycm9uZW91cy4gICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisKK2RlZiBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KQorICBm
b3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworICAgIHwgY29uY3JldGVTZXR0
aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICBwdXRzIGNwcFNldHRpbmdz
VGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xl
dmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgIHB1dHMgIiNlbmRpZiIKKyAgfQorZW5kCisKKwor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJi
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNm
b3JtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBub2RlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29uc3Ry
dWN0IGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IElmVGhlbkVsc2Ugbm9kZXMgYnkg
ICAgICAgIworIyBzdWJzdGl0dXRpbmcgY29uY3JldGUgYm9vbGVhbiB2YWx1ZXMgZm9yIGVhY2gg
U2V0dGluZy4gICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgbWFw
Q2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlU2V0dGluZ3Mo
c2V0dGluZ3MpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlCisgIGRlZiByZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZQor
ICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQKKwor
Y2xhc3MgU2V0dGluZworICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNldHRp
bmdzW0BuYW1lXS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kCisgIGRlZiByZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncyku
dmFsdWUgYW5kIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUK
KyAgZW5kCitlbmQKKworY2xhc3MgT3IKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykK
KyAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBvciBAcmlnaHQucmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNz
IE5vdAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChub3QgQGNoaWxkLnJl
c29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFz
cyBJZlRoZW5FbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgaWYgQHBy
ZWRpY2F0ZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlCisgICAgICBAdGhlbkNhc2Uu
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVsc2UKKyAgICAgIEBlbHNlQ2FzZS5yZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVl
bmNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgbmV3TGlzdCA9IFtdCisg
ICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaXRlbSA9IGl0ZW0ucmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgaWYgaXRlbS5pc19hPyBTZXF1ZW5jZQorICAgICAg
ICBuZXdMaXN0ICs9IGl0ZW0ubGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0
ZW0KKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlz
dCkKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9k
ZS5kZW1hY3JvaWZ5KG1hY3JvcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBub2RlLnN1YnN0aXR1dGUobWFwcGluZykgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZGVtYWNyb2lm
eSgpIGNvbnN0cnVjdHMgYSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgTWFjcm8gICAg
ICAgIworIyBub2Rlcywgd2hpbGUgc3Vic3RpdHV0ZSgpIHJlcGxhY2VzIFZhcmlhYmxlIG5vZGVz
IHdpdGggdGhlIGdpdmVuICAgICAjCisjIG5vZGVzIGluIHRoZSBtYXBwaW5nLiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIGRlbWFjcm9pZnkobWFjcm9zKQor
ICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuZGVtYWNyb2lm
eShtYWNyb3MpCisgICAgfQorICBlbmQKKyAgCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisg
ICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5zdWJzdGl0dXRl
KG1hcHBpbmcpCisgICAgfQorICBlbmQKKyAgCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBp
bmcpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5zdWJz
dGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBNYWNybwor
ICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG15TWFwcGluZyA9IHt9CisgICAgbWFwcGlu
Zy5lYWNoX3BhaXIgeworICAgICAgfCBrZXksIHZhbHVlIHwKKyAgICAgIHVubGVzcyBAdmFyaWFi
bGVzLmluY2x1ZGU/IGtleQorICAgICAgICBteU1hcHBpbmdba2V5XSA9IHZhbHVlCisgICAgICBl
bmQKKyAgICB9CisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGls
ZC5zdWJzdGl0dXRlKG15TWFwcGluZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlh
YmxlCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgaWYgbWFwcGluZ1tzZWxmXQorICAg
ICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitl
bmQKKworY2xhc3MgTG9jYWxMYWJlbAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQor
ICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisgICAg
ICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBzdWJz
dGl0dXRlKGNvbnN0YW50cykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBteUNvbnN0YW50cyA9IGNv
bnN0YW50cy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBp
dGVtLmlzX2E/IENvbnN0RGVjbAorICAgICAgICBteUNvbnN0YW50c1tpdGVtLnZhcmlhYmxlXSA9
IGl0ZW0udmFsdWUuc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgIGVsc2UKKyAgICAgICAg
bmV3TGlzdCA8PCBpdGVtLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICBlbmQKKyAgICB9
CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisgIGVuZAorICAKKyAgZGVm
IHJlbmFtZUxhYmVscworICAgIG1hcHBpbmcgPSB7fQorICAgIAorICAgIEBsaXN0LmVhY2ggewor
ICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gTG9jYWxMYWJlbAorICAgICAgICBt
YXBwaW5nW2l0ZW1dID0gTG9jYWxMYWJlbC51bmlxdWUKKyAgICAgIGVuZAorICAgIH0KKyAgICAK
KyAgICBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgIGVuZAorICAKKyAgZGVmIGRlbWFjcm9p
ZnkobWFjcm9zKQorICAgIG15TWFjcm9zID0gbWFjcm9zLmR1cAorICAgIEBsaXN0LmVhY2ggewor
ICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gTWFjcm8KKyAgICAgICAgbXlNYWNy
b3NbaXRlbS5uYW1lXSA9IGl0ZW0KKyAgICAgIGVuZAorICAgIH0KKyAgICBuZXdMaXN0ID0gW10K
KyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1h
Y3JvCisgICAgICAgICMgSWdub3JlLgorICAgICAgZWxzaWYgaXRlbS5pc19hPyBNYWNyb0NhbGwK
KyAgICAgICAgbWFwcGluZyA9IHt9CisgICAgICAgIG15TXlNYWNyb3MgPSBteU1hY3Jvcy5kdXAK
KyAgICAgICAgcmFpc2UgIkNvdWxkIG5vdCBmaW5kIG1hY3JvICN7aXRlbS5uYW1lfSBhdCAje2l0
ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBteU1hY3Jvc1tpdGVtLm5hbWVdCisgICAgICAg
IHJhaXNlICJBcmd1bWVudCBjb3VudCBtaXNtYXRjaCBmb3IgY2FsbCB0byAje2l0ZW0ubmFtZX0g
YXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgaXRlbS5vcGVyYW5kcy5zaXplID09
IG15TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzLnNpemUKKyAgICAgICAgaXRlbS5vcGVyYW5k
cy5zaXplLnRpbWVzIHsKKyAgICAgICAgICB8IGlkeCB8CisgICAgICAgICAgaWYgaXRlbS5vcGVy
YW5kc1tpZHhdLmlzX2E/IFZhcmlhYmxlIGFuZCBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0u
bmFtZV0KKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJs
ZXNbaWR4XS5uYW1lXSA9IG15TWFjcm9zW2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAg
ICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0g
bmlsCisgICAgICAgICAgZWxzaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IE1hY3JvCisgICAg
ICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFt
ZV0gPSBpdGVtLm9wZXJhbmRzW2lkeF0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRl
bS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBu
aWwKKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4
XV0gPSBpdGVtLm9wZXJhbmRzW2lkeF0KKyAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAg
ICBuZXdMaXN0ICs9IG15TWFjcm9zW2l0ZW0ubmFtZV0uYm9keS5zdWJzdGl0dXRlKG1hcHBpbmcp
LmRlbWFjcm9pZnkobXlNeU1hY3JvcykucmVuYW1lTGFiZWxzLmxpc3QKKyAgICAgIGVsc2UKKyAg
ICAgICAgbmV3TGlzdCA8PCBpdGVtLmRlbWFjcm9pZnkobXlNYWNyb3MpCisgICAgICBlbmQKKyAg
ICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpLnN1YnN0aXR1dGUoe30p
CisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUu
cmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgaGFz
IG9mZnNldCB2YWx1ZXMgaW5zdGVhZCBvZiBzeW1ib2xpYyAgICAgICAjCisjIG9mZnNldHMuICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVm
IHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAg
IHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisg
ICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXQKKyAgZGVmIHJlc29sdmVPZmZz
ZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlmIG9mZnNldHNbc2VsZl0KKyAgICAgIEltbWVkaWF0
ZS5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0c1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBzZWxmCisg
ICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZgorICBkZWYgcmVzb2x2ZU9mZnNldHMo
b2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgc2l6ZXNbc2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXco
Y29kZU9yaWdpbiwgc2l6ZXNbc2VsZl0pCisgICAgZWxzZQorICAgICAgcHV0cyAiQ291bGQgbm90
IGZpbmQgI3tzZWxmLmluc3BlY3R9IGluICN7c2l6ZXMua2V5cy5pbnNwZWN0fSIKKyAgICAgIHB1
dHMgInNpemVzID0gI3tzaXplcy5pbnNwZWN0fSIKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5k
CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5mb2xkICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIFJlc29sdmUgY29uc3RhbnQgcmVmZXJlbmNlcyBhbmQgY29t
cHV0ZSBhcml0aG1ldGljIGV4cHJlc3Npb25zLiAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIGZvbGQKKyAgICBtYXBDaGlsZHJlbiB7
CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLmZvbGQKKyAgICB9CisgIGVuZAorZW5kCisK
K2NsYXNzIEFkZEltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQK
KyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5p
c19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVk
aWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgKyBAcmlnaHQu
dmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAg
ICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVy
biBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxl
c3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwg
QGxlZnQudmFsdWUgLSBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVk
aWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBA
cmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUK
KyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVk
aWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgKiBAcmlnaHQudmFsdWUpCisgIGVuZAor
ZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0ZQorICBkZWYgZm9sZAorICAgIEBjaGlsZCA9IEBjaGls
ZC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBjaGlsZC5pc19hPyBJbW1lZGlhdGUKKyAg
ICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC1AY2hpbGQudmFsdWUpCisgIGVuZAorZW5kCisK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2ZUFmdGVyU2V0
dGluZ3Mob2Zmc2V0cywgc2l6ZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBDb21waWxlIGFzc2VtYmx5IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4g
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlKG9mZnNldHMsIHNpemVzKQorICAgIGRl
bWFjcm9pZnkoe30pLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKS5mb2xkCisgIGVuZAor
ZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjcxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIGNh
c2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIiwgInQxIiwgImExIiwgInIxIiwgInQy
IiwgInQzIgorICAgICAgdHJ1ZQorICAgIHdoZW4gInQ0IiwgImNmciIKKyAgICAgIGZhbHNlCisg
ICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgeDg2T3BlcmFu
ZChraW5kKQorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAg
Y2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlYWwiCisgICAgICB3aGVuIDpo
YWxmCisgICAgICAgICIlYXgiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYXgiCisgICAg
ICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MSIsICJhMSIsICJy
MSIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWRsIgorICAg
ICAgd2hlbiA6aGFsZgorICAgICAgICAiJWR4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIl
ZWR4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDIi
CisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVjbCIKKyAgICAg
IHdoZW4gOmhhbGYKKyAgICAgICAgIiVjeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVj
eCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQzIgor
ICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlYmwiCisgICAgICB3
aGVuIDpoYWxmCisgICAgICAgICIlYngiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYngi
CisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0NCIKKyAg
ICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNpbCIKKyAgICAgIHdo
ZW4gOmhhbGYKKyAgICAgICAgIiVzaSIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzaSIK
KyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gImNmciIKKyAg
ICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWRpbCIKKyAgICAgIHdo
ZW4gOmhhbGYKKyAgICAgICAgIiVkaSIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkaSIK
KyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInNwIgorICAg
ICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlc3BsIgorICAgICAgd2hl
biA6aGFsZgorICAgICAgICAiJXNwIgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZXNwIgor
ICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgcmFp
c2UKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4
ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgIGRl
ZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgcmFpc2UgdW5sZXNzIGtpbmQgPT0gOmRvdWJsZQorICAg
IGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIsICJmYTAiLCAiZnIiCisgICAgICAiJXhtbTAiCisg
ICAgd2hlbiAiZnQxIiwgImZhMSIKKyAgICAgICIleG1tMSIKKyAgICB3aGVuICJmdDIiLCAiZmEy
IgorICAgICAgIiV4bW0yIgorICAgIHdoZW4gImZ0MyIsICJmYTMiCisgICAgICAiJXhtbTMiCisg
ICAgd2hlbiAiZnQ0IgorICAgICAgIiV4bW00IgorICAgIHdoZW4gImZ0NSIKKyAgICAgICIleG1t
NSIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxP
cGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitj
bGFzcyBJbW1lZGlhdGUKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiJCN7dmFsdWV9Igor
ICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIiN7dmFsdWV9IgorICBlbmQK
K2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUK
KyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVl
fSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0pIgorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5k
KGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBC
YXNlSW5kZXgKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAK
KyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZP
cGVyYW5kKDppbnQpfSwgI3tpbmRleC54ODZPcGVyYW5kKDppbnQpfSwgI3tzY2FsZX0pIgorICBl
bmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2b3BlcmFuZChraW5k
KX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBkZWYgc3VwcG9ydHM4
Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQor
ICAgICIje2FkZHJlc3MudmFsdWV9IgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2lu
ZCkKKyAgICAiKiN7YWRkcmVzcy52YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVm
ZXJlbmNlCisgIGRlZiB4ODZMYWJlbAorICAgIHNhbml0aXplTGFiZWxOYW1lKG5hbWUpCisgIGVu
ZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICB4ODZMYWJlbAorICBlbmQKK2VuZAor
CitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCisgIGRlZiB4ODZMYWJlbAorICAgICJfX29hXyIr
bmFtZVsxLi4tMV0KKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgIHg4Nkxh
YmVsCisgIGVuZAorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgIGRlZiB4ODZPcGVyYW5kcygq
a2luZHMpCisgICAgcmFpc2UgdW5sZXNzIGtpbmRzLnNpemUgPT0gb3BlcmFuZHMuc2l6ZQorICAg
IHJlc3VsdCA9IFtdCisgICAga2luZHMuc2l6ZS50aW1lcyB7CisgICAgICB8IGlkeCB8CisgICAg
ICByZXN1bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZPcGVyYW5kKGtpbmRzW2lkeF0pCisgICAgfQor
ICAgIHJlc3VsdC5qb2luKCIsICIpCisgIGVuZAorCisgIGRlZiB4ODZTdWZmaXgoa2luZCkKKyAg
ICBjYXNlIGtpbmQKKyAgICB3aGVuIDpieXRlCisgICAgICAiYiIKKyAgICB3aGVuIDpoYWxmCisg
ICAgICAidyIKKyAgICB3aGVuIDppbnQKKyAgICAgICJsIgorICAgIHdoZW4gOmRvdWJsZQorICAg
ICAgInNkIgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVm
IGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgbnVtT3BlcmFuZHMpCisg
ICAgaWYgbnVtT3BlcmFuZHMgPT0gMworICAgICAgaWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNb
Ml0KKyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzaWYg
b3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2Rl
fSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJh
bmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgIlx0bW92I3t4ODZTdWZm
aXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0u
eDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQp
fSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3Aob3Bjb2RlLCBraW5k
KQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMu
c2l6ZSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2hpZnQob3Bjb2RlLCBraW5kKQorICAg
IGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBvciBvcGVyYW5kc1swXSA9PSBSZWdpc3Rl
cklELmZvck5hbWUobmlsLCAidDIiKQorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gJWNs
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgJGFzbS5wdXRzICJcdHhj
aGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIGhhbmRsZVg4NkRvdWJsZUJyYW5jaChicmFuY2hPcGNvZGUsIG1vZGUpCisg
ICAgY2FzZSBtb2RlCisgICAgd2hlbiA6bm9ybWFsCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlz
ZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gOnJldmVyc2UKKyAgICAgICRhc20ucHV0cyAiXHR1
Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgZWxzZQorICAgICAgcmFpc2UgbW9kZS5pbnNwZWN0
CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdGpuZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIK
KyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29tcGFyZShvcGNvZGVTdWZmaXgsIGtpbmQp
CisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1swXS52YWx1
ZSA9PSAwIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4
ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0
I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAg
ZWxzaWYgb3BlcmFuZHNbMV0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1sxXS52YWx1ZSA9
PSAwIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09
ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4
ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxz
ZQorICAgICAgJGFzbS5wdXRzICJcdGNtcCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAg
IGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRCcmFuY2goYnJhbmNoT3Bjb2RlLCBr
aW5kKQorICAgIGhhbmRsZVg4NkludENvbXBhcmUoYnJhbmNoT3Bjb2RlWzEuLi0xXSwga2luZCkK
KyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9
IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kKQorICAg
IGlmIG9wZXJhbmQuc3VwcG9ydHM4Qml0T25YODYKKyAgICAgICRhc20ucHV0cyAiXHQje3NldE9w
Y29kZX0gI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRt
b3Z6YmwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kLng4Nk9wZXJhbmQo
OmludCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmQueDg2
T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgICAkYXNtLnB1dHMgIlx0I3tzZXRPcGNvZGV9ICVh
bCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgJWFsLCAlZWF4IgorICAgICAgJGFzbS5wdXRz
ICJcdHhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29tcGFyZVNldChzZXRPcGNvZGUsIGtpbmQpCisg
ICAgaGFuZGxlWDg2SW50Q29tcGFyZShzZXRPcGNvZGVbMy4uLTFdLCBraW5kKQorICAgIGhhbmRs
ZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRzWzJdKQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVY
ODZUZXN0KGtpbmQpCisgICAgdmFsdWUgPSBvcGVyYW5kc1swXQorICAgIGNhc2Ugb3BlcmFuZHMu
c2l6ZQorICAgIHdoZW4gMgorICAgICAgbWFzayA9IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwg
LTEpCisgICAgd2hlbiAzCisgICAgICBtYXNrID0gb3BlcmFuZHNbMV0KKyAgICBlbHNlCisgICAg
ICByYWlzZSAiRXhwZWN0ZWQgMiBvciAzIG9wZXJhbmRzLCBidXQgZ290ICN7b3BlcmFuZHMuc2l6
ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKyAgICAKKyAgICBpZiBtYXNrLmlz
X2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQorICAgICAgaWYgdmFsdWUuaXNfYT8g
UmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAj
e3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAg
ICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgIlx0Y21wI3t4ODZTdWZmaXgoa2luZCl9ICQwLCAj
e3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFz
bS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3ttYXNrLng4Nk9wZXJhbmQoa2luZCl9
LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBo
YW5kbGVYODZCcmFuY2hUZXN0KGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0
KGtpbmQpCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzLmxhc3Qu
eDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTZXRUZXN0KHNldE9wY29kZSwg
a2luZCkKKyAgICBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29k
ZSwgb3BlcmFuZHMubGFzdCkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3BCcmFuY2gob3Bj
b2RlLCBicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMo
b3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXplIC0gMSkKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUK
KyAgICB3aGVuIDQKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMwor
ICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2Vs
Zi5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje2p1
bXBUYXJnZXQueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTdWJCcmFuY2go
YnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gNCBhbmQgb3BlcmFu
ZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7b3BlcmFuZHNb
Ml0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgIGVsc2UKKyAgICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKCJzdWIje3g4NlN1ZmZp
eChraW5kKX0iLCBraW5kLCBvcGVyYW5kcy5zaXplIC0gMSkKKyAgICBlbmQKKyAgICBjYXNlIG9w
ZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQor
ICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAg
ICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNo
T3Bjb2RlfSAje2p1bXBUYXJnZXQueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBsb3dlclg4
NgorICAgICRhc20uY29tbWVudCBjb2RlT3JpZ2luU3RyaW5nCisgICAgY2FzZSBvcGNvZGUKKyAg
ICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9w
ZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNb
MV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNf
YT8gUmVnaXN0ZXJJRAorICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCisgICAgICAg
ICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAkYXNtLnB1
dHMgIlx0bW92bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAg
ICAgJGFzbS5wdXRzICJcdGxlYWwgI3tvcGVyYW5kc1swXS52YWx1ZX0oI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAgIGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5p
c19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBS
ZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3Rl
cklECisgICAgICAgICRhc20ucHV0cyAiXHRsZWFsICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54
ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5u
ZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7
eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgICBlbmQKKyAgICAgIGVuZAorICAgIHdo
ZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJhbmRsIiwgOmludCkKKyAgICB3
aGVuICJsc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNhbGwiLCA6aW50KQorICAgIHdo
ZW4gIm11bGkiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlz
X2E/IEltbWVkaWF0ZQorICAgICAgICAkYXNtLnB1dHMgIlx0aW11bGwgI3t4ODZPcGVyYW5kcyg6
aW50LCA6aW50LCA6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIGhhbmRsZVg4Nk9wKCJpbXVs
bCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJuZWdpIgorICAgICAgJGFzbS5wdXRzICJc
dG5lZ2wgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAibm90aSIKKyAgICAgICRhc20u
cHV0cyAiXHRub3RsICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm9yaSIsICJvcnAi
CisgICAgICBoYW5kbGVYODZPcCgib3JsIiwgOmludCkKKyAgICB3aGVuICJyc2hpZnRpIgorICAg
ICAgaGFuZGxlWDg2U2hpZnQoInNhcmwiLCA6aW50KQorICAgIHdoZW4gInVyc2hpZnRpIgorICAg
ICAgaGFuZGxlWDg2U2hpZnQoInNocmwiLCA6aW50KQorICAgIHdoZW4gInN1YmkiLCAic3VicCIK
KyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNb
Ml0KKyAgICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAg
ICAgICAgaGFuZGxlWDg2T3AoInN1YmwiLCA6aW50KQorICAgICAgZW5kCisgICAgd2hlbiAieG9y
aSIsICJ4b3JwIgorICAgICAgaGFuZGxlWDg2T3AoInhvcmwiLCA6aW50KQorICAgIHdoZW4gImxv
YWRpIiwgInN0b3JlaSIsICJsb2FkcCIsICJzdG9yZXAiCisgICAgICAkYXNtLnB1dHMgIlx0bW92
bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICB3aGVuICJsb2FkYiIKKyAgICAgICRh
c20ucHV0cyAiXHRtb3Z6YmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGgiCisgICAgICAkYXNt
LnB1dHMgIlx0bW92endsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICRhc20u
cHV0cyAiXHRtb3ZiICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0iCisgICAgd2hlbiAibG9h
ZGQiLCAibW92ZWQiLCAic3RvcmVkIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNkICN7eDg2T3Bl
cmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImFkZGQiCisgICAgICAkYXNtLnB1
dHMgIlx0YWRkc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAi
ZGl2ZCIKKyAgICAgICRhc20ucHV0cyAiXHRkaXZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpk
b3VibGUpfSIKKyAgICB3aGVuICJzdWJkIgorICAgICAgJGFzbS5wdXRzICJcdHN1YnNkICN7eDg2
T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gIm11bGQiCisgICAgICAkYXNt
LnB1dHMgIlx0bXVsc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hl
biAic3FydGQiCisgICAgICAkYXNtLnB1dHMgIlx0c3FydHNkICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAg
d2hlbiAiY2kyZCIKKyAgICAgICRhc20ucHV0cyAiXHRjdnRzaTJzZCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAg
IHdoZW4gImJkZXEiCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlCisgICAg
ICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJc
dGpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS54ODZMYWJl
bH0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdp
biwgb3BlcmFuZHNbMl0pLng4NkxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYi
KQorICAgIHdoZW4gImJkbmVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqbmUiLCA6
bm9ybWFsKQorICAgIHdoZW4gImJkZ3QiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImph
IiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGd0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFu
Y2goImphZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRsdCIKKyAgICAgIGhhbmRsZVg4NkRvdWJs
ZUJyYW5jaCgiamEiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGx0ZXEiCisgICAgICBoYW5kbGVY
ODZEb3VibGVCcmFuY2goImphZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkZXF1biIKKyAgICAg
IGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbmVxdW4i
CisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlCisgICAgICBpc0VxdWFsID0g
TG9jYWxMYWJlbC51bmlxdWUKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0iCisgICAgICAkYXNtLnB1dHMgIlx0anAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdp
biwgaXNVbm9yZGVyZWQpLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVs
UmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc0VxdWFsKS54ODZMYWJlbH0iCisgICAgICBpc1Vu
b3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICAgICRhc20ucHV0cyAiXHRqbXAgI3tvcGVyYW5kc1sy
XS54ODZMYWJlbH0iCisgICAgICBpc0VxdWFsLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkZ3R1
biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6cmV2ZXJzZSkKKyAgICB3aGVu
ICJiZGd0ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamJlIiwgOnJldmVyc2Up
CisgICAgd2hlbiAiYmRsdHVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpu
b3JtYWwpCisgICAgd2hlbiAiYmRsdGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2go
ImpiZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYnRkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0
dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0Y21wbCAkMHg4MDAwMDAwMCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7
b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgIHdoZW4gInRkMmkiCisgICAgICAkYXNtLnB1dHMg
Ilx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiYmNkMmkiCisgICAgICAkYXNtLnB1
dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdGwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAg
ICAgICRhc20ucHV0cyAiXHRjdnRzaTJzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9
LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7b3BlcmFuZHNb
Ml0ueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJcdGpuZSAje29wZXJhbmRzWzJdLng4Nkxh
YmVsfSIKKyAgICB3aGVuICJtb3ZkeiIKKyAgICAgICRhc20ucHV0cyAiXHR4b3JwZCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9IgorICAgIHdoZW4gInBvcCIKKyAgICAgICRhc20ucHV0cyAiXHRwb3AgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJwdXNoIgorICAgICAgJGFzbS5wdXRz
ICJcdHB1c2ggI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJtb3Zl
IiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9w
ZXJhbmRzWzBdIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20u
cHV0cyAiXHR4b3JsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNpZiBvcGVyYW5kc1swXSAhPSBvcGVyYW5k
c1sxXQorICAgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQp
fSIKKyAgICAgIGVuZAorICAgIHdoZW4gIm5vcCIKKyAgICAgICRhc20ucHV0cyAiXHRub3AiCisg
ICAgd2hlbiAiYmllcSIsICJicGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDpp
bnQpCisgICAgd2hlbiAiYmluZXEiLCAiYnBuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpuZSIsIDppbnQpCisgICAgd2hlbiAiYmlhIiwgImJwYSIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamEiLCA6aW50KQorICAgIHdoZW4gImJpYWVxIiwgImJwYWVxIgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqYWUiLCA6aW50KQorICAgIHdoZW4gImJpYiIsICJicGIiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmludCkKKyAgICB3aGVuICJiaWJlcSIsICJicGJlcSIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmludCkKKyAgICB3aGVuICJiaWd0Iiwg
ImJwZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmludCkKKyAgICB3aGVuICJi
aWd0ZXEiLCAiYnBndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6aW50KQor
ICAgIHdoZW4gImJpbHQiLCAiYnBsdCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6
aW50KQorICAgIHdoZW4gImJpbHRlcSIsICJicGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImpsZSIsIDppbnQpCisgICAgd2hlbiAiYmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYm5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiam5lIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqYSIsIDpieXRlKQorICAgIHdoZW4gImJiYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqYWUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpiIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpiZSIsIDpieXRlKQorICAgIHdoZW4gImJiZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpnIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqZ2UiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqbCIsIDpieXRlKQorICAgIHdoZW4gImJibHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamx0ZXEiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGlvIiwgImJ0cG8iCisgICAgICBoYW5kbGVY
ODZCcmFuY2hUZXN0KCJqbyIsIDppbnQpCisgICAgd2hlbiAiYnRpcyIsICJidHBzIgorICAgICAg
aGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6aW50KQorICAgIHdoZW4gImJ0aXoiLCAiYnRweiIK
KyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6IiwgOmludCkKKyAgICB3aGVuICJidGlueiIs
ICJidHBueiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDppbnQpCisgICAgd2hl
biAiYnRibyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmJ5dGUpCisgICAgd2hl
biAiYnRicyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmJ5dGUpCisgICAgd2hl
biAiYnRieiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6IiwgOmJ5dGUpCisgICAgd2hl
biAiYnRibnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6Ynl0ZSkKKyAgICB3
aGVuICJqbXAiCisgICAgICAkYXNtLnB1dHMgIlx0am1wICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9w
ZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJhZGRpbyIsICJiYWRkcG8iCisgICAgICBoYW5kbGVY
ODZPcEJyYW5jaCgiYWRkbCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlzIiwgImJhZGRw
cyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpzIiwgOmludCkKKyAgICB3aGVu
ICJiYWRkaXoiLCAiYmFkZHB6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianoi
LCA6aW50KQorICAgIHdoZW4gImJhZGRpbnoiLCAiYmFkZHBueiIKKyAgICAgIGhhbmRsZVg4Nk9w
QnJhbmNoKCJhZGRsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlvIgorICAgICAgaGFu
ZGxlWDg2U3ViQnJhbmNoKCJqbyIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlzIgorICAgICAgaGFu
ZGxlWDg2U3ViQnJhbmNoKCJqcyIsIDppbnQpCisgICAgd2hlbiAiYnN1Yml6IgorICAgICAgaGFu
ZGxlWDg2U3ViQnJhbmNoKCJqeiIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlueiIKKyAgICAgIGhh
bmRsZVg4NlN1YkJyYW5jaCgiam56IiwgOmludCkKKyAgICB3aGVuICJibXVsaW8iCisgICAgICBo
YW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJtdWxpcyIK
KyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAi
Ym11bGl6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImp6IiwgOmludCkKKyAg
ICB3aGVuICJibXVsaW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpueiIs
IDppbnQpCisgICAgd2hlbiAiYm9yaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwg
ImpvIiwgOmludCkKKyAgICB3aGVuICJib3JpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJv
cmwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJvcml6IgorICAgICAgaGFuZGxlWDg2T3BCcmFu
Y2goIm9ybCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYm9yaW56IgorICAgICAgaGFuZGxlWDg2
T3BCcmFuY2goIm9ybCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJyZWFrIgorICAgICAgJGFz
bS5wdXRzICJcdGludCAkMyIKKyAgICB3aGVuICJjYWxsIgorICAgICAgJGFzbS5wdXRzICJcdGNh
bGwgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicmV0Igor
ICAgICAgJGFzbS5wdXRzICJcdHJldCIKKyAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICBo
YW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRlIiwgOmludCkKKyAgICB3aGVuICJjaW5lcSIsICJj
cG5lcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldG5lIiwgOmludCkKKyAgICB3
aGVuICJjaWEiLCAiY3BhIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YSIsIDpp
bnQpCisgICAgd2hlbiAiY2lhZXEiLCAiY3BhZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJl
U2V0KCJzZXRhZSIsIDppbnQpCisgICAgd2hlbiAiY2liIiwgImNwYiIKKyAgICAgIGhhbmRsZVg4
NkludENvbXBhcmVTZXQoInNldGIiLCA6aW50KQorICAgIHdoZW4gImNpYmVxIiwgImNwYmVxIgor
ICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YmUiLCA6aW50KQorICAgIHdoZW4gImNp
Z3QiLCAiY3BndCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGciLCA6aW50KQor
ICAgIHdoZW4gImNpZ3RlcSIsICJjcGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0
KCJzZXRnZSIsIDppbnQpCisgICAgd2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAgaGFuZGxlWDg2
SW50Q29tcGFyZVNldCgic2V0bCIsIDppbnQpCisgICAgd2hlbiAiY2lsdGVxIiwgImNwbHRlcSIK
KyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGxlIiwgOmludCkKKyAgICB3aGVuICJ0
aW8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmludCkKKyAgICB3aGVuICJ0aXMi
CisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmludCkKKyAgICB3aGVuICJ0aXoiCisg
ICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmludCkKKyAgICB3aGVuICJ0aW56IgorICAg
ICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6aW50KQorICAgIHdoZW4gInRibyIKKyAgICAg
IGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6Ynl0ZSkKKyAgICB3aGVuICJ0YnMiCisgICAgICBo
YW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmJ5dGUpCisgICAgd2hlbiAidGJ6IgorICAgICAgaGFu
ZGxlWDg2U2V0VGVzdCgic2V0eiIsIDpieXRlKQorICAgIHdoZW4gInRibnoiCisgICAgICBoYW5k
bGVYODZTZXRUZXN0KCJzZXRueiIsIDpieXRlKQorICAgIHdoZW4gInBlZWsiCisgICAgICAkYXNt
LnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzBdLnZhbHVlICogNH0oJWVzcCksICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicG9rZSIKKyAgICAgICRhc20ucHV0cyAi
XHRtb3ZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0udmFs
dWUgKiA0fSglZXNwKSIKKyAgICB3aGVuICJjZHFpIgorICAgICAgJGFzbS5wdXRzICJcdGNkcSIK
KyAgICB3aGVuICJpZGl2aSIKKyAgICAgICRhc20ucHV0cyAiXHRpZGl2bCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImZpaTJkIgorICAgICAgJGFzbS5wdXRzICJc
dG1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHBzbGxxICQzMiwg
JXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cG9yICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImZkMmlpIgorICAgICAgJGFzbS5wdXRzICJcdG1v
dmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwc3JscSAkMzIs
ICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNkICV4bW03LCAje29wZXJhbmRzWzJdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQgb3Bjb2RlOiAje29w
Y29kZX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiAr
MzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1Z2dlcjsKICAgICBjbGFzcyBF
dmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNs
YXNzIFNjb3BlQ2hhaW5Ob2RlOwogCkBAIC0zMTksNiArMzIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgfTsKIAogICAgIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1
dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAg
IHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTM4
NCw2ICszODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgUHJvZ3Jh
bUV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVm
IFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNDUzLDYgKzQ1Niw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1
dGFibGUgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3Jp
cHRFeGVjdXRhYmxlIEJhc2U7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIAogICAgIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmll
cjxVbmtub3duPiB7CiAgICAgICAgIFNwYXJzZUFycmF5RW50cnkoKSA6IGF0dHJpYnV0ZXMoMCkg
e30KQEAgLTEwNCw2ICsxMDUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xh
c3MgSlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdhbGtlcjsK
IAogICAgIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsMTAgQEAKIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0gICAgY2xhc3MgU3RydWN0dXJlOworICAg
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0
b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CisgICAgY2xhc3MgU3RydWN0dXJlOwog
CiAgICAgZW51bSBFbnVtZXJhdGlvbk1vZGUgewogICAgICAgICBFeGNsdWRlRG9udEVudW1Qcm9w
ZXJ0aWVzLApAQCAtMTY0LDYgKzE2NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0
aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAg
ICAgICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsKICAgICAgICAgV3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsK
ICAgICBjbGFzcyBKU0FjdGl2YXRpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7
CiAgICAgY2xhc3MgU291cmNlQ29kZTsKICAgICBuYW1lc3BhY2UgREZHIHsKQEAgLTE0MCw2ICsx
NDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgaXNI
b3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBh
cmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
CShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDggQEAgSlNHbG9iYWxE
YXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgICwga2V5d29yZHMoYWRvcHRQdHIo
bmV3IEtleXdvcmRzKHRoaXMpKSkKICAgICAsIGludGVycHJldGVyKDApCiAgICAgLCBoZWFwKHRo
aXMsIGhlYXBTaXplKQorICAgICwganNBcnJheUNsYXNzSW5mbygmSlNBcnJheTo6c19pbmZvKQor
ICAgICwganNGaW5hbE9iamVjdENsYXNzSW5mbygmSlNGaW5hbE9iamVjdDo6c19pbmZvKQogI2lm
IEVOQUJMRShERkdfSklUKQogICAgICwgc2l6ZU9mTGFzdFNjcmF0Y2hCdWZmZXIoMCkKICNlbmRp
ZgpAQCAtMjE4LDcgKzIyMCw3IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERh
dGFUeXAKICAgICBqaXRTdHVicyA9IGFkb3B0UHRyKG5ldyBKSVRUaHVua3ModGhpcykpOwogI2Vu
ZGlmCiAKLSAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSh0aGlzLT5jYW5Vc2VKSVQoKSk7Cisg
ICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUoJmxsaW50RGF0YSwgdGhpcy0+Y2FuVXNlSklUKCkp
OwogCiAgICAgaGVhcC5ub3RpZnlJc1NhZmVUb0NvbGxlY3QoKTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lvbiAxMDQ0Mjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsMTUgKzMwLDE2IEBACiAjZGVmaW5lIEpTR2xvYmFsRGF0YV9oCiAKICNp
bmNsdWRlICJDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSW50cmlu
c2ljLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRh
YmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIlN0cm9uZy5oIgor
I2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAi
SlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk51bWVyaWNTdHJp
bmdzLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU3Ryb25nLmgiCiAj
aW5jbHVkZSAiVGVybWluYXRvci5oIgogI2luY2x1ZGUgIlRpbWVvdXRDaGVja2VyLmgiCiAjaW5j
bHVkZSAiV2Vha1JhbmRvbS5oIgpAQCAtNjUsNiArNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBL
ZXl3b3JkczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0
aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAgICBjbGFzcyBSZWdFeHBD
YWNoZTsKQEAgLTI0OCw2ICsyNTAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEhlYXAg
aGVhcDsKIAogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKKworICAgICAgICBjb25zdCBDbGFz
c0luZm8qIGNvbnN0IGpzQXJyYXlDbGFzc0luZm87CisgICAgICAgIGNvbnN0IENsYXNzSW5mbyog
Y29uc3QganNGaW5hbE9iamVjdENsYXNzSW5mbzsKKworICAgICAgICBMTEludDo6RGF0YSBsbGlu
dERhdGE7CisKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIGV4Y2Vw
dGlvbkxvY2F0aW9uOwogICAgICAgICBKU1ZhbHVlIGhvc3RDYWxsUmV0dXJuVmFsdWU7CkBAIC0z
NTIsNiArMzYwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjdW5kZWYgcmVnaXN0ZXJUeXBlZEFycmF5
RnVuY3Rpb24KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5
cGUsIFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUpOwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxE
YXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwogICAgICAgICB2b2lkIGNyZWF0ZU5hdGl2
ZVRodW5rKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3Mg
R2V0dGVyU2V0dGVyOwogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKKyAgICBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKICAg
ICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwpA
QCAtMzM1LDYgKzMzNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGFkZFN0YXRp
Y0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiwgaW50IGNvdW50KTsKIAogICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAog
ICAgICAgICAvLyBGSVhNRTogRm9sZCByZXNldCBpbnRvIGluaXQuCiAgICAgICAgIHZvaWQgaW5p
dChKU09iamVjdCogdGhpc1ZhbHVlKTsKICAgICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3Rv
dHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJl
dmlzaW9uIDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgR2V0dGVyU2V0dGVyOwogICAgIGNsYXNzIEhhc2hFbnRyeTsKICAgICBjbGFzcyBJbnRl
cm5hbEZ1bmN0aW9uOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFz
cyBNYXJrZWRCbG9jazsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3Mg
UHJvcGVydHlOYW1lQXJyYXk7CkBAIC0yNjAsNiArMjYxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5U3RvcmFn
ZSBpbmxpbmVTdG9yYWdlKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBOb2JvZHkgc2hvdWxk
IGV2ZXIgYXNrIGFueSBvZiB0aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25v
d24gdG8gYmUgYSBKU09iamVjdC4KICAgICAgICAgdXNpbmcgSlNDZWxsOjppc0FQSVZhbHVlV3Jh
cHBlcjsKICAgICAgICAgdXNpbmcgSlNDZWxsOjppc0dldHRlclNldHRlcjsKQEAgLTM3MSw2ICsz
NzQsOCBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAg
IHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgZXhw
bGljaXQgSlNGaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQogICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUs
IG1faW5saW5lU3RvcmFnZSkKICAgICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkocmV2aXNpb24g
MTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC05Niw2
ICs5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAg
ICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheURh
dGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpOwogCiAg
ICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FjaGVkU3RydWN0dXJlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxMDQ0Mjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTU3Ry
aW5nOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIEpTU3RyaW5nKiBq
c0VtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSopOwogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5n
KEV4ZWNTdGF0ZSopOwpAQCAtMjQxLDYgKzI0Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAg
ICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgICAgICAKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZShFeGVjU3RhdGUqKSBjb25zdDsKICAg
ICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlOChMQ2hhciopIGNvbnN0OwogICAgICAgICB2
b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2UoVUNoYXIqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDEwNDQyOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKKwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkID0gMTsgLy8gV2ViQ29yZSB1c2VzIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgdG8g
bWFrZSBkb2N1bWVudC5hbGwgdW5kZXRlY3RhYmxlLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPSAxIDw8IDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIE92ZXJyaWRlc0hhc0luc3RhbmNlID0gMSA8PCAyOwpAQCAtODcsNiArODksOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTZXRP
bkZsYWdzMSh1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnIDw9ICgxIDw8IDcpKTsg
cmV0dXJuIG1fZmxhZ3MgJiBmbGFnOyB9CiAgICAgICAgIGJvb2wgaXNTZXRPbkZsYWdzMih1bnNp
Z25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnID49ICgxIDw8IDgpKTsgcmV0dXJuIG1fZmxh
Z3MyICYgKGZsYWcgPj4gOCk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCwxMCArMzgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAKICAgICBjbGFzcyBKU1Zh
cmlhYmxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHJldmlzaW9u
IDEwNDQyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFz
cyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNP
YmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFNjb3Bl
Q2hhaW5JdGVyYXRvcjsKICAgICBjbGFzcyBTbG90VmlzaXRvcjsKICAgICAKQEAgLTkxLDYgKzky
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbjsKICAgICB9Owog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNp
b24gMTA0NDI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJy
YXk7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhOwogICAgIGNsYXNzIFN0cnVjdHVy
ZUNoYWluOwpAQCAtMTk2LDYgKzE5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0
aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToK
KyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAg
ICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUg
cHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyopOwogICAgICAgICBT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEm
LCBjb25zdCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMTA0NDI4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFp
biA6IHB1YmxpYyBKU0NlbGwgewpAQCAtNzQsNiArNzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZUNoYWluKEpTR2xvYmFsRGF0
YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwog
ICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiA+IG1fdmVjdG9yOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTA0NDI4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBA
IC05MTYsNiArOTE2LDEyIEBACiAjZGVmaW5lIEVOQUJMRV9KSVQgMQogI2VuZGlmCiAKKy8qIE9u
IHNvbWUgb2YgdGhlIHBsYXRmb3JtcyB3aGVyZSB3ZSBoYXZlIGEgSklULCB3ZSB3YW50IHRvIGFs
c28gaGF2ZSB0aGUgCisgICBsb3ctbGV2ZWwgaW50ZXJwcmV0ZXIuICovCisjaWYgRU5BQkxFKEpJ
VCkgJiYgUExBVEZPUk0oTUFDKSAmJiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBFTkFCTEVf
TExJTlQgMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfREZHX0pJVCkgJiYgRU5BQkxF
KEpJVCkKIC8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBYODYgYW5kIFg4Nl82NC4gIE9ubHkgdGVz
dGVkIG9uIE1hYyBhbmQgR05VL0xpbnV4LiAqLwogI2lmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0
KSkgJiYgKFBMQVRGT1JNKE1BQykgfHwgT1MoTElOVVgpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAxMDQ0MjgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw2ICs0Myw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZTdHJpbmcgKiBDRlN0cmkK
IC8vIExhbmRpbmcgdGhlIGZpbGUgbW92ZXMgaW4gb25lIHBhdGNoLCB3aWxsIGZvbGxvdyBvbiB3
aXRoIHBhdGNoZXMgdG8gY2hhbmdlIHRoZSBuYW1lc3BhY2VzLgogbmFtZXNwYWNlIEpTQyB7CiBz
dHJ1Y3QgSWRlbnRpZmllckNTdHJpbmdUcmFuc2xhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJZGVudGlmaWVyQ2hhckJ1ZmZl
clRyYW5zbGF0b3I7CiBzdHJ1Y3QgSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyVHJhbnNsYXRvcjsK
IH0KQEAgLTcwLDcgKzcxLDggQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgZnJpZW5kIHN0cnVj
dCBXVEY6Okhhc2hBbmRVVEY4Q2hhcmFjdGVyc1RyYW5zbGF0b3I7CiAgICAgZnJpZW5kIHN0cnVj
dCBXVEY6OlVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKICAgICBmcmllbmQgY2xhc3MgQXRvbWljU3Ry
aW5nSW1wbDsKLQorICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAKIHByaXZhdGU6CiAgICAgZW51bSBCdWZmZXJPd25lcnNoaXAgewogICAgICAgICBCdWZm
ZXJJbnRlcm5hbCwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121915</attachid>
            <date>2012-01-10 14:45:09 -0800</date>
            <delta_ts>2012-01-10 17:09:11 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_9.diff</filename>
            <type>text/plain</type>
            <size>322115</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0NjMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyNyBA
QAorMjAxMi0wMS0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV09SSyBJTiBQUk9HUkVTUy4gIFN0aWxsIG5lZWQgdG8gd3JpdGUgY2FsbCBsaW5r
aW5nIGdsdWUuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1i
bGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZp
bmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzdHJvbmds
eVZpc2l0U3Ryb25nUmVmZXJlbmNlcyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5
dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVj
dGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRS
ZXNvbHZlV2l0aEJhc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJl
c29sdmVXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0
QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZCk6CisgICAg
ICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5o
OgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBoZWFwL0FsbG9jYXRpb25TcGFjZS5oOgorICAg
ICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6aW5pdGlhbGl6
ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjppc09wY29kZSk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9w
Y29kZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGVJRCk6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjplbmFibGVkKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdp
c3RlckZpbGUuaDoKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSk6Cisg
ICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaDogQWRkZWQuCisgICAgICAgICogaml0
L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6Cisg
ICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAqIGpp
dC9KSVRDb2RlLmg6CisgICAgICAgICogbGxpbnQ6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xM
SW50Q29tbW9uLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6RGF0YSk6CisgICAgICAgIChKU0M6OkxMSW50
OjpEYXRhOjp+RGF0YSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpMTEludDo6RGF0YTo6ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OkRhdGE6Om9wY29kZU1hcCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRy
eXBvaW50cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0RnVuY3Rpb25FbnRy
eXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnRzLmg6IEFkZGVkLgorICAg
ICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpM
TEludDo6cmV0dXJuVG9UaHJvdyk6CisgICAgICAgIChKU0M6OkxMSW50OjpjYWxsVG9UaHJvdyk6
CisgICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIGxs
aW50L0xMSW50SGVscGVycy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRf
SEVMUEVSX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAo
SlNDOjpMTEludDo6aGFuZGxlSG9zdENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBD
YWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKiBsbGlu
dC9MTEludEhlbHBlcnMuaDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KToK
KyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6CisgICAgICAg
IChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxBcml0eVRodW5rR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlUaHVua0dl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpldmFsRW50cnlUaHVua0dlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkxMSW50Ojpwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAg
ICAgICogbGxpbnQvTExJbnRUaHVua3MuaDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc206IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmg6
IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc206IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVh
c20vYXJtdjcucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXNtLnJiOiBBZGRlZC4K
KyAgICAgICAgKiBvZmZsaW5lYXNtL2FzdC5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFz
bS9iYWNrZW5kcy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZz
ZXRfZXh0cmFjdG9yLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2luc3RydWN0aW9u
cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0
YW50cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9vZmZzZXRzLnJiOiBBZGRlZC4K
KyAgICAgICAgKiBvZmZsaW5lYXNtL3BhcnNlci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGlu
ZWFzbS9yZWdpc3RlcnMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2V0dGluZ3Mu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBBZGRlZC4KKyAg
ICAgICAgKiBvZmZsaW5lYXNtL3g4Ni5yYjogQWRkZWQuCisgICAgICAgICogcnVudGltZS9FeGVj
dXRhYmxlLmg6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVudGlt
ZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNH
bG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6
CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgICog
cnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvU2Nv
cGVDaGFpbi5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVu
dGltZS9TdHJ1Y3R1cmVDaGFpbi5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAg
ICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKwogMjAxMi0wMS0xMCAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzIHNo
b3VsZCBiZSBlbmNhcHN1bGF0ZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCShyZXZpc2lvbiAxMDQ2MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAy
MDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNjAsNiArNjAsNyBAQCBhbGwgOiBcCiAgICAgU3RyaW5nQ29uc3Ry
dWN0b3IubHV0LmggXAogICAgIFN0cmluZ1Byb3RvdHlwZS5sdXQuaCBcCiAgICAgZG9jcy9ieXRl
Y29kZS5odG1sIFwKKyAgICBMTEludEFzc2VtYmx5LmguUEhPTlkgXAogIwogCiAjIGxvb2t1cCB0
YWJsZXMgZm9yIGNsYXNzZXMKQEAgLTEwNCwzICsxMDUsMTEgQEAgSGVhZGVyRGV0ZWN0aW9uLmgg
OgogCWVjaG8gPiAkQAogCiBlbmRpZgorCisjIEFzc2VtYmx5IGZvciB0aGUgTG93TGV2ZWxJbnRl
cnByZXRlcgorCisjIFRoaXMgYnVpbGRzIGV2ZXJ5IHRpbWUgYmVjYXVzZSB0aGVyZSBpcyBubyBl
YXN5IHdheSB0byBkZXNjcmliZQorIyB0aGUgZGVwZW5kZW5jaWVzIHVzaW5nIG1ha2UuIEluc3Rl
YWQsIHRoZSBhc3NlbWJsZXIgd2lsbCBkZWNpZGUgb24KKyMgaXRzIG93biB3aGV0aGVyIG9yIG5v
dCBpdCBkaWQgYW55dGhpbmcgdGhhdCB3b3VsZCBsZWFkIHRvIGEgY2hhbmdlLgorTExJbnRBc3Nl
bWJseS5oLlBIT05ZOgorCXJ1YnkgJChKYXZhU2NyaXB0Q29yZSkvb2ZmbGluZWFzbS9hc20ucmIg
JChKYXZhU2NyaXB0Q29yZSkvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0pTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciA+IExMSW50QXNzZW1ibHkuaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEwNDYzMSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsMTUgQEAKIAlvYmplY3RzID0gewogCiAvKiBC
ZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBC
RkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdl
dDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIg
LyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50
IE9mZnNldHMiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwQUExNEJBN0ZEOTAw
QkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKKwkJCSk7CisJCQluYW1lID0g
IkxMSW50IE9mZnNldHMiOworCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJ
fTsKIAkJNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCIC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3Qg
PSA2NUZCM0Y3NzA5RDExRUJEMDBGNDlERUIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkRlcml2ZWQgU291cmNlcyIgKi87CkBAIC0xNCw2ICsyMyw5
IEBACiAJCQkJNjVGQjNGNjUwOUQxMUU5MTAwRjQ5REVCIC8qIEdlbmVyYXRlIERlcml2ZWQgU291
cmNlcyAqLywKIAkJCQk1RDM1REVFMTBDN0MxNDBCMDA4NjQ4QjIgLyogR2VuZXJhdGUgRFRyYWNl
IGhlYWRlciAqLywKIAkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjQxNEJB
ODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOwogCQkJbmFtZSA9
ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsK
IAkJfTsKQEAgLTQ4LDYgKzYwLDEwIEBACiAJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBU
aHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJp
Y3Rpb25WZXJpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBCQ0Q4MzU3MTQ4NTg0NTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4
NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyog
U2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi87IH07CisJ
CTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUIxNEJDRjQ2
MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi87IH07CisJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4
NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNUYxNUYx
NEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENv
bW1vblNsb3dQYXRocy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMTZENzI2MTQyQzM5QzAwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNkQ3MjQxNDJDMzlB
MjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCTBGMjQyREE3MTNGM0IxRTgwMDdB
REQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1Jl
ZmVyZW5jZUhhcnZlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC02MCw2ICs3NiwxOSBAQAogCQkwRjQzMTczODE0NkJBQzY5MDA3RTM4OTAg
LyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0Njgw
ODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBK
SVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwN0YxNEJB
NTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBBMzE0QkE3
RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRF
eGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RjE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxB
R1MgPSAiLVduby11bnVzZWQtcGFyYW1ldGVyIjsgfTsgfTsKKwkJMEY0NjgwQTUxNEJBN0Y4RDAw
QkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4
MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTExNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi87IH07CisJCTBGNDY4MEE4MTRC
QTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExM
SW50RXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBM
TEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0IxNEJCQjE3MjAw
QkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50
T2ZmbGluZUFzbUNvbmZpZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJl
dGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLzsgfTsK
KwkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM4MTRCQkIx
NjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8q
IExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLzsgfTsKKwkJ
MEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8q
IExMSW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEQw
MTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLzsgfTsKKwkJMEY0
NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEQxMTRCQkM1RjgwMEJG
RTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxp
emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY2MjAxNzQxNDNGQ0QzMzAwNjhCNzdDIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MjAxNzIxNDNGQ0Qy
RjAwNjhCNzdDIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjIwMTc1MTQzRkNEMzcwMDY4Qjc3QyAv
KiBERkdPcGVyYW5kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY2MjAxNzExNDNGQ0QyRjAwNjhCNzdDIC8qIERGR09wZXJhbmRzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM2MCw3ICszODksNyBA
QAogCQk4NkI5OUFFMzExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI5OUFFMTExN0U1NzgxMDBE
RjVBOTAgLyogU3RyaW5nQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODZCQjA5QzAxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2gu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5
QkUxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwICovOyB9OwogCQk4NkJCMDlDMTEz
OEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0
Y2guaCAqLzsgfTsKLQkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVF
OTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgfTsKKwkJODZDMzZFRUEw
RUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFj
cm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REQx
MUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCAqLzsgfTsKIAkJODZDNTY4
RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0Yw
IC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwogCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3
RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCAq
LzsgfTsKQEAgLTcyMCw2ICs3NDksMjAgQEAKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLworCQkwRjQ2ODBC
MTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNh
ID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBG
RTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsK
KwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyOworCQkJ
cmVtb3RlSW5mbyA9ICJMTEludCBPZmZzZXRzIjsKKwkJfTsKKwkJMEY0NjgwQjMxNEJBODIxNDAw
QkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRh
aW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJB
QUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVH
bG9iYWxJRFN0cmluZyA9IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8g
PSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCX07CiAJCTE0MTIxNEJFMEE0OTE5MEUwMDQ4
MDI1NSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWlu
ZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFD
MDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC03NjUsNiArODA4LDE1IEBACiAvKiBFbmQgUEJY
Q29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29weUZpbGVzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5Rmls
ZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsK
KwkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCX07CiAJCTVEQkIxNTExMTMxRDBC
MTMwMDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0gewogCQkJaXNhID0gUEJYQ29w
eUZpbGVzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOwpAQCAtODA1LDYgKzg1
NywxMCBAQAogCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25W
ZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRSZXN0cmlj
dGlvblZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCQ0Q4MzU0MTQ4
NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGVtcG9yYXJ5Q2hhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpemVMaW1pdHMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBv
aW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEVudHJ5
cG9pbnRzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRy
eXBvaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEVudHJ5cG9p
bnRzLmg7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludFRodW5rcy5jcHA7IHBh
dGggPSBsbGludC9MTEludFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludFRodW5rcy5oOyBwYXRoID0gbGxpbnQvTExJbnRUaHVu
a3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3QTczQTAwNURF
MzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDb21tb25TbG93UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNkQ3
MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrUmVmZXJlbmNlSGFydmVzdGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MTcsNiArODczLDIwIEBACiAJCTBG
NDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIg
LyogSklURXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRF
eGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDhGMTRCQTdF
NUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJs
ZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRp
b25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBMTEludEV4Y2VwdGlvbnMuaDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExM
SW50SGVscGVycy5jcHA7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxw
ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50SGVscGVycy5oOyBw
YXRoID0gbGxpbnQvTExJbnRIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcDsgcGF0aCA9IGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1v
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENvbW1vbi5oOyBwYXRo
ID0gbGxpbnQvTExJbnRDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0
NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludE9mZmxpbmVBc21Db25maWcuaDsgcGF0aCA9
IGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVy
LmNwcDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRl
cnByZXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMb3dMZXZlbEludGVy
cHJldGVyLmg7IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnREYXRhLmNwcDsg
cGF0aCA9IGxsaW50L0xMSW50RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTExJbnREYXRhLmg7IHBhdGggPSBsbGludC9MTEludERhdGEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8q
IEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERG
R0J5dGVDb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0
ZUNvZGVDYWNoZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVDb2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5jb25kaXRp
b25hbEZpbmFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYyMDE2RDE0
M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBYnN0cmFjdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdB
YnN0cmFjdFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1MTgsNiAr
MTU4OCwxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhDMTRCQTdFNUUw
MEJGRTI3MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxk
UGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJ
CQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJ
CTE0MTIxMTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0g
UEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OwpAQCAtMTU3Niw2ICsxNjUzLDcgQEAKIAkJCQkxNDEyMTEyMDBBNDg3OTNDMDA0ODAyNTUgLyog
bWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywK
IAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2
ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0x
NjA0LDYgKzE2ODIsNyBAQAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2Ny
aXB0Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2Mu
Y3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLywKKwkJ
CQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8sCiAJCQkJMTQzMkVCRDcwQTM0
Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyog
YXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAq
LywKQEAgLTE2NDIsNiArMTcyMSwyOCBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMg
PSAwOwogCQl9OworCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTBGMEI4Mzk1MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLywKKwkJCQkwRjBCODM5NjE0QkNGNDVB
MDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovLAorCQkJCTBGMEI4Mzk3MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8sCisJCQkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1
QjRGIC8qIExMSW50VGh1bmtzLmggKi8sCisJCQkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8q
IExMSW50RGF0YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50
RGF0YS5oICovLAorCQkJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5o
ICovLAorCQkJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25m
aWcuaCAqLywKKwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnBy
ZXRlci5jcHAgKi8sCisJCQkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50
ZXJwcmV0ZXIuaCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNl
cHRpb25zLmNwcCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNl
cHRpb25zLmggKi8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVy
cy5jcHAgKi8sCisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5o
ICovLAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGludDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3MjYwMDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNjc0LDYgKzE3NzUsOCBA
QAogCQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkgLyogaml0ICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyog
SG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcy
IC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUy
NzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyog
Q29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTI5ODIsMTMgKzMwODUsNDAgQEAKIAkJCQk4Njcw
NEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhj
ZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8q
IExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZF
MjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENBMTRCQkIx
NkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0Ix
NEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2Fs
bFJldHVyblZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVC
NEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzOUQxNEJD
RjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKIC8qIEVuZCBQQlhI
ZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBz
ZWN0aW9uICovCisJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNF
eHRyYWN0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZp
Z3VyYXRpb25MaXN0ID0gMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3Ii
ICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8q
IFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1ld29ya3Mg
Ki8sCisJCQkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLywKKwkJCSk7
CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2
ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CisJ
CQluYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdE5hbWUgPSBKU0NM
TEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMEY0NjgwOEYxNEJB
N0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXByb2R1Y3RU
eXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CiAJCTE0MTIxMTFGMEE0
ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovID0gewogCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0
OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIg
Ki87CkBAIC0zMTE1LDExICszMjQ1LDI5IEBACiAJCQkJMTRCRDU5QkUwQTNFOEY5MDAwQkFGNTlD
IC8qIHRlc3RhcGkgKi8sCiAJCQkJOTMyRjVCREEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLywK
IAkJCQk2NTExMjJGNzE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2
ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAorCQkJ
CTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovLAogCQkJKTsKIAkJ
fTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU2hlbGxTY3Jp
cHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdl
bmVyYXRlIERlcml2ZWQgU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVp
bGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgK
KwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL2xsaW50L0xvd0xldmVs
QXNzZW1ibGVyLmFzbSIsCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNvdXJj
ZXMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTElu
dE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlz
aGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNl
dHMvXCJcblxuL3Vzci9iaW4vZW52IHJ1YnkgXCIke1NSQ1JPT1R9L29mZmxpbmVhc20vZ2VuZXJh
dGVfb2Zmc2V0X2V4dHJhY3Rvci5yYlwiIDwgXCIke1NSQ1JPT1R9L2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtXCIgPiBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvTExJ
bnREZXNpcmVkT2Zmc2V0cy5oXCJcbiI7CisJCX07CiAJCTM3MTNGMDE0MTQyOTA1MjQwMDM2Mzg3
RiAvKiBDaGVjayBGb3IgSW5hcHByb3ByaWF0ZSBPYmplY3RpdmUtQyBDbGFzcyBOYW1lcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CkBAIC0zMjYwLDYgKzM0MDgsMTQgQEAKIC8qIEVuZCBQQlhTaGVsbFNj
cmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCisJCTBGNDY4MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovID0g
eworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8q
IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUQwQTQ4
NzkzQzAwNDgwMjU1IC8qIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQ
aGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zNTE3LDcgKzM2NzMs
MTQgQEAKIAkJCQk4NjcwNEI4NjEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4NjcwNEI4OTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCNDIxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50
YXhDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3
MiAvKiBMTEludEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTgxNEJBN0ZB
QjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2
ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRh
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0
Q2FsbFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlBMTRCQ0Y0NUQw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4
MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAg
LTM1MzIsNiArMzY5NSwxNiBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTBGNDY4MEIy
MTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0g
UEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3
MiAvKiBMTEludCBPZmZzZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMTE0QkE4MTE1
MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkwRjQ2ODBCNDE0
QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBC
WFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIg
LyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBC
MzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQkx
NDEyMTRCRjBBNDkxOTBFMDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEyMTExRjBBNDg3OTND
MDA0ODAyNTUgLyogbWluaWRvbSAqLzsKQEAgLTM1NjUsNiArMzczOCwxNDggQEAKIC8qIEVuZCBQ
QlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZpZ3Vy
YXRpb24gc2VjdGlvbiAqLworCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNI
U19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0ND
X0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBO
TzsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1J
WkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAor
CQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZ
TUJPTFNfUFJJVkFURV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5j
b21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZF
UlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7
CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5V
U0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0g
KAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRP
ZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gWUVT
OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1h
Y29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9E
VUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJ
CQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxl
YXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0g
IiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsK
KwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlH
Q0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENF
UFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZt
LmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POwor
CQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FS
Tl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUg
PSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJ
CQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMkKEhFQURF
Ul9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9
IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09U
ID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJ
fTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIg
LyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJ
CUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJ
UCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3lt
IjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVf
T0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBp
bGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lP
TiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURf
VkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJ
CQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNl
dHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hf
REVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9O
QU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFU
SFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9T
RUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2
ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNI
X1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCki
OworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9S
TUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBn
bnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVS
U0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5f
NjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5H
X1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7
CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNI
X1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUyki
LAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9E
VUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJ
VVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9M
TEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFBy
b2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9
IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5h
bWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2Ug
Ki8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJ
CQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFBy
b2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOwor
CQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIwMTRCQTdGRDkwMEJG
RTI3MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJj
ZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTNB
MEE0ODc5ODQwMDQ4MDI1NSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKQEAgLTM4MDYsNiArNDEyMSwyOCBAQAogLyog
RW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENDb25maWd1
cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRz
RXh0cmFjdG9yIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWls
ZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1
ZyAqLywKKwkJCQkwRjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkw
RjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MDk5MTRC
QTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1
cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1
Y3Rpb247CisJCX07CisJCTBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi8gPSB7
CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKKwkJCQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0Njgw
QUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwQUYxNEJBN0ZEOTAw
QkZFMjcyIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyog
UHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9
IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkx
NDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9u
TGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA0NjMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDcgKzMxLDcgQEAKICNkZWZpbmUgRFVNUF9MSU5LX1NUQVRJU1RJQ1MgMAogI2RlZmlu
ZSBEVU1QX0NPREUgMAogCi0jaW5jbHVkZSA8TWFjcm9Bc3NlbWJsZXIuaD4KKyNpbmNsdWRlICJN
YWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCShyZXZpc2lvbiAxMDQ2MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgxLDYgKzg4MSwxNCBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1
dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9kaXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0
aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWw6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1
dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJp
bnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTcyOCw2ICsxNzM2LDQ5IEBAIHZvaWQgQ29kZUJsb2NrOjpm
aW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICNlbmRpZgogI2VuZGlmCiAgICAgCisjaWYgRU5BQkxF
KExMSU5UKQorICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFsRGF0YS0+aW50
ZXJwcmV0ZXI7CisgICAgaWYgKCFpbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAgICAgIGZv
ciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9
IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVj
dGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHVjdGlvbnNbaV1dOwor
ICAgICAgICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rp
b25bMF0udS5vcGNvZGUpKSB7CisgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICAgICAgICAgIGlmIChIZWFwOjppc01h
cmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkpCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0
dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5k
ID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9ub3JtYWw6CisgICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGN1cklu
c3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAgICAgICAgICAmJiBI
ZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1
Y3R1cmVDaGFpbi5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAg
ICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAg
ICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmNsZWFyKCk7CisgICAgICAg
ICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPSBpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlKG9wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMo
KVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgICAgIH0KKyAgICAgICAg
Zm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1
Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXTsK
KyAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rp
b25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsCisgICAgICAgICAgICAgICAgICAg
fHwgaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9
PSBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKKyAgICAgICAgICAgIGlmIChIZWFwOjppc01h
cmtlZChjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQoKSkpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5j
bGVhcigpOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kID0gMDsKKyAg
ICAgICAgfQorICAgIH0KKyNlbmRpZgorCisjZW5kaWYKKwogI2lmIEVOQUJMRShERkdfSklUKQog
ICAgIC8vIENoZWNrIGlmIHdlJ3JlIG5vdCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24u
CiAgICAgaWYgKCEoc2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8
fCBtX2RmZ0RhdGEtPmxpdmVuZXNzSGFzQmVlblByb3ZlZCkpIHsKQEAgLTE4NDgsMTAgKzE4OTks
MTIgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlvbkRlY2xzLnNpemUoKTsgKytpKQogICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmbV9mdW5jdGlvbkRlY2xzW2ldKTsKICNpZiBFTkFCTEUoSU5URVJQUkVU
RVIpCi0gICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMu
c2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZp
c2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7
Ci0gICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXpl
KCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRv
ciwgJmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAg
IGlmIChtX2dsb2JhbERhdGEtPmludGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9y
IChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0g
MDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAm
aW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOworICAgICAg
ICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwg
aSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRv
ciwgJmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAg
IH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKERGR19KSVQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMDQ2MzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTcy
LDggKzcyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGhhc1NlZW5TaG91bGRSZXBhdGNo
CiAgICAgfTsKIAotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFzcyBERkdDb2RlQmxvY2tz
OworICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAKICAgICBlbnVtIENvZGVUeXBlIHsgR2xvYmFsQ29kZSwgRXZhbENvZGUsIEZ1bmN0aW9uQ29k
ZSB9OwogCkBAIC0yNTYsNiArMjU3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29k
ZUJsb2NrIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIsIHB1YmxpYyBXZWFrUmVmZXJl
bmNlSGFydmVzdGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENvcHlQYXJzZWRCbG9ja1RhZyB7IENv
cHlQYXJzZWRCbG9jayB9OwogICAgIHByb3RlY3RlZDoKQEAgLTUwOCwxMiArNTEwLDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRF
UikKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb24qIHJldHVybkFk
ZHJlc3MpCiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnN0cnVj
dGlvbio+KHJldHVybkFkZHJlc3MpIC0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICAgICAg
fQotI2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXRJc051bWVyaWNDb21wYXJlRnVuY3Rpb24oYm9v
bCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24pIHsgbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb24g
PSBpc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KICAgICAgICAgYm9vbCBpc051bWVyaWNDb21w
YXJlRnVuY3Rpb24oKSB7IHJldHVybiBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQpAQCAt
NjI5LDcgKzYyOSw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgY2xlYXJFdmFs
Q2FjaGUoKTsKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgdm9pZCBhZGRQcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9uKHVuc2lnbmVkIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24p
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkK
QEAgLTY0MSw3ICs2NDAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBtX2ds
b2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik7
CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25BdEJ5
dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKLSNlbmRpZgogI2lmIEVOQUJM
RShKSVQpCiAgICAgICAgIHZvaWQgc2V0TnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3Moc2l6ZV90
IHNpemUpIHsgbV9zdHJ1Y3R1cmVTdHViSW5mb3MuZ3JvdyhzaXplKTsgfQogICAgICAgICBzaXpl
X3QgbnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVy
ZVN0dWJJbmZvcy5zaXplKCk7IH0KQEAgLTEyMjQsMTAgKzEyMjIsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5z
aWduZWQgbV9zb3VyY2VPZmZzZXQ7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAg
IFZlY3Rvcjx1bnNpZ25lZD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKICAgICAgICAg
VmVjdG9yPHVuc2lnbmVkPiBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnM7Ci0jZW5kaWYKICNp
ZiBFTkFCTEUoSklUKQogICAgICAgICBWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+IG1fc3RydWN0
dXJlU3R1YkluZm9zOwogICAgICAgICBWZWN0b3I8R2xvYmFsUmVzb2x2ZUluZm8+IG1fZ2xvYmFs
UmVzb2x2ZUluZm9zOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Ry
dWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RydWN0aW9uLmgJKHJldmlzaW9uIDEwNDYzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDExIEBA
IG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb24geworICAg
ICAgICBJbnN0cnVjdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuanNDZWxsLmNsZWFy
KCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIEluc3RydWN0aW9uKE9wY29kZSBvcGNv
ZGUpCiAgICAgICAgIHsKICNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCkBA
IC0xODQsNiArMTg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBXcml0ZUJhcnJp
ZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBzdHJ1Y3R1cmVDaGFpbjsKICAgICAgICAgICAgIFdyaXRl
QmFycmllckJhc2U8SlNDZWxsPiBqc0NlbGw7CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYyBnZXR0ZXJGdW5jOworICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsKICAgICAg
ICAgfSB1OwogICAgICAgICAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTA0NjMxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9hcmd1bWVudHNfbGVuZ3Ro
LCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkgXAogICAgICAgICBtYWNybyhv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9yZXBsYWNlLCA5
KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmljLCA5KSBcCiAgICAgICAgIG1h
Y3JvKG9wX2RlbF9ieV9pZCwgNCkgXApAQCAtMjAyLDYgKzIwNCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB0eXBlZGVmIGVudW0geyBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0lEX0VO
VU0pIH0gT3Bjb2RlSUQ7CiAgICAgI3VuZGVmIE9QQ09ERV9JRF9FTlVNCiAKKyAgICBjb25zdCBp
bnQgbWF4T3Bjb2RlTGVuZ3RoID0gOTsKICAgICBjb25zdCBpbnQgbnVtT3Bjb2RlSURzID0gb3Bf
ZW5kICsgMTsKIAogICAgICNkZWZpbmUgT1BDT0RFX0lEX0xFTkdUSFMoaWQsIGxlbmd0aCkgY29u
c3QgaW50IGlkIyNfbGVuZ3RoID0gbGVuZ3RoOwpAQCAtMjE4LDcgKzIyMSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoVkVSSUZZX09QQ09ERV9JRCk7CiAg
ICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQKIAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lO
VEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFC
TEUoTExJTlQpCiAjaWYgQ09NUElMRVIoUlZDVCkgfHwgQ09NUElMRVIoSU5URUwpCiAgICAgdHlw
ZWRlZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9u
IDEwNDYzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjY0LDkgKzEyNjQsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICAg
ICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUo
KSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIG1fY29kZUJsb2Nr
LT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNl
bmRpZgogICAgICAgICBlbWl0T3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE0MTksOSArMTQxNyw3IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgIG1f
Y29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwog
I2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAg
IGVtaXRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJv
cERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHBy
b3BlcnR5KSk7CkBAIC0xNDY2LDkgKzE0NjIsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xv
YmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJM
RShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0
aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBlbWl0T3Bjb2RlKHJlcXVp
cmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZl
X2dsb2JhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ4
Niw5ICsxNDgwLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1ldGhvZENoZWNrKAog
CiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSNp
ZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1pdE9w
Y29kZShvcF9nZXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4
KCkpOwpAQCAtMTUxMyw5ICsxNTA1LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRBcgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQo
UmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQq
IHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRk
UHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlm
CiAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTUzMSw5ICsxNTIxLDcgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikK
ICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlv
bnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lv
biAxMDQ2MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyMyw3ICsxODIzLDkgQEAgYm9vbCBCeXRlQ29kZVBh
cnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0
X2J5X2lkKTsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CisgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6
IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25b
M10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJ
bnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmll
ck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0
cnVjdGlvblsyXS51Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMDQ2MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTEx
LDggQEAgaW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNhc2Ug
b3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9w
dXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xv
YmFsX3ZhcjoKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZp
c2lvbiAxMDQ2MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUgIkRGR1JlcGF0Y2guaCIKKyNp
bmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW5saW5lQVNNLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgpAQCAtNTQ1
LDQ1ICs1NDYsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNv
ZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KIAotRW5jb2RlZEpTVmFs
dWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNvZGVkSlNWYWx1
ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNT
dGF0ZSopOwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklO
RyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKLSAgICAi
bW92ICVyMTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKFg4
NikKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0g
ICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVzcClcbiIKLSAg
ICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVX
aXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20gKAotIi50
ZXh0IiAiXG4iCi0iLmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpICJcbiIKLSIudGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0o
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKLSAgICAi
Y3B5IHIwLCByNSIgIlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0KLUVuY29k
ZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3Rh
dGUoRXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+
Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQotCiBzdGF0aWMgdm9pZCogaGFu
ZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxs
ZWUtPmNhbGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxv
Y2F0aW9uU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9B
bGxvY2F0aW9uU3BhY2UuaAkocmV2aXNpb24gMTA0NjMxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOworY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogY2xhc3MgTWFya2VkQmxvY2s7CiAKIGNsYXNzIEFsbG9jYXRpb25TcGFjZSB7CkBA
IC02OCw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNocmluaygpOwogICAgIAogcHJpdmF0
ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAgIGVu
dW0gQWxsb2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRpb25NdXN0U3VjY2VlZCwgQWxsb2NhdGlvbkNh
bkZhaWwgfTsKICAgICAKICAgICB2b2lkKiBhbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNz
Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMDQ2MzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAg
IGNsYXNzIEpTVmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsK
ICAgICBjbGFzcyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTEyOSwxMCAr
MTMwLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJl
Z2lzdGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQWxs
b2NhdGlvblNwYWNlOwotICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
bWluRXh0cmFDb3N0ID0gMjU2OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4dHJh
Q29zdCA9IDEwMjQgKiAxMDI0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRTcGFjZS5oCShyZXZpc2lvbiAxMDQ2MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogY2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIExpdmVPYmplY3RJdGVy
YXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsK
IGNsYXNzIFNsb3RWaXNpdG9yOwogCkBAIC03OSw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVh
Y2hCbG9jaygpOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisgICAgCiAgICAgLy8gWyAzMi4uLiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgcHJlY2lzZVN0ZXAgPSBNYXJrZWRCbG9jazo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBwcmVjaXNlQ3V0b2ZmID0gMjU2OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMDQ2MzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjZW5kaWYKIAot
I2RlZmluZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQgKEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKSAmJiAhZGVmaW5lZChfX2xsdm1fXykpCisjZGVmaW5lIFdU
Rl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAoKEVOQUJMRShDT01QVVRFRF9HT1RP
X0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpKSAmJiAhZGVmaW5lZChfX2xsdm1fXykpCiAK
IHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTU0NywxNyArNTQ3LDQxIEBAIEludGVycHJldGVy
OjpJbnRlcnByZXRlcigpCiB7CiB9CiAKLXZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9v
bCBjYW5Vc2VKSVQpCitJbnRlcnByZXRlcjo6fkludGVycHJldGVyKCkKIHsKLSNpZiBFTkFCTEUo
Q09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1f
ZW5hYmxlZCkKKyAgICAgICAgZGVsZXRlW10gbV9vcGNvZGVUYWJsZTsKKyNlbmRpZgorfQorCit2
b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKExMSW50OjpEYXRhKiBsbGludERhdGEsIGJvb2wg
Y2FuVXNlSklUKQoreworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBF
TkFCTEUoTExJTlQpCisjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorICAg
IC8vIEhhdmluZyBMTEludCBlbmFibGVkLCBidXQgbm90IGJlaW5nIGFibGUgdG8gdXNlIHRoZSBK
SVQsIGFuZCBub3QgaGF2aW5nCisgICAgLy8gYSBjb21wdXRlZCBnb3RvIGludGVycHJldGVyLCBp
cyBub3Qgc3VwcG9ydGVkLiBOb3QgYmVjYXVzZSB3ZSBjYW5ub3QKKyAgICAvLyBzdXBwb3J0IGl0
LCBidXQgYmVjYXVzZSBJIGRlY2lkZWQgdG8gZHJhdyB0aGUgbGluZSBhdCB0aGUgbnVtYmVyIG9m
CisgICAgLy8gcGVybXV0YXRpb25zIG9mIGV4ZWN1dGlvbiBlbmdpbmVzIHRoYXQgSSB3YW50ZWQg
dGhpcyBjb2RlIHRvIGdyb2suCisgICAgQVNTRVJUKGNhblVzZUpJVCk7CisjZW5kaWYKICAgICBp
ZiAoY2FuVXNlSklUKSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxl
ID0gbGxpbnREYXRhLT5vcGNvZGVNYXAoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1PcGNvZGVJRHM7ICsraSkKKyAgICAgICAgICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNv
ZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsKKyNlbHNlCiAgICAgICAgIC8v
IElmIHRoZSBKSVQgaXMgcHJlc2VudCwgZG9uJ3QgdXNlIGp1bXAgZGVzdGluYXRpb25zIGZvciBv
cGNvZGVzLgogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJ
RHM7ICsraSkgewogICAgICAgICAgICAgT3Bjb2RlIG9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihpKSk7CiAgICAgICAgICAgICBtX29wY29kZVRhYmxl
W2ldID0gb3Bjb2RlOwogICAgICAgICB9CisjZW5kaWYKICAgICB9IGVsc2UgeworI2lmIEVOQUJM
RShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJsZSA9IG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURz
XTsKKyNlbmRpZgogICAgICAgICBwcml2YXRlRXhlY3V0ZShJbml0aWFsaXplQW5kUmV0dXJuLCAw
LCAwKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURz
OyArK2kpCkBAIC02NjcsOSArNjkxLDExIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3Rl
cnMoQ2FsbEZyYW0KIAogYm9vbCBJbnRlcnByZXRlcjo6aXNPcGNvZGUoT3Bjb2RlIG9wY29kZSkK
IHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09N
UFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoTExJ
TlQpCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybiBvcGNvZGUgPj0gMCAmJiBz
dGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSkgPD0g
b3BfZW5kOworI2VuZGlmCiAgICAgcmV0dXJuIG9wY29kZSAhPSBIYXNoVHJhaXRzPE9wY29kZT46
OmVtcHR5VmFsdWUoKQogICAgICAgICAmJiAhSGFzaFRyYWl0czxPcGNvZGU+Ojppc0RlbGV0ZWRW
YWx1ZShvcGNvZGUpCiAgICAgICAgICYmIG1fb3Bjb2RlSURUYWJsZS5jb250YWlucyhvcGNvZGUp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgJKHJldmlzaW9uIDEwNDYzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVk
ZSAiUmVnaXN0ZXJGaWxlLmgiCiAKQEAgLTQ1LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNs
YXNzIFNjb3BlQ2hhaW5Ob2RlOwpAQCAtOTAsMTkgKzkyLDIxIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hl
ZENhbGw7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgogICAgICAgICBJbnRlcnByZXRlcigp
OworICAgICAgICB+SW50ZXJwcmV0ZXIoKTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgaW5pdGlh
bGl6ZShib29sIGNhblVzZUpJVCk7CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZShMTEludDo6RGF0
YSosIGJvb2wgY2FuVXNlSklUKTsKIAogICAgICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmls
ZSgpIHsgcmV0dXJuIG1fcmVnaXN0ZXJGaWxlOyB9CiAgICAgICAgIAogICAgICAgICBPcGNvZGUg
Z2V0T3Bjb2RlKE9wY29kZUlEIGlkKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9p
bml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICAgICAg
ICAgICAgIHJldHVybiBtX29wY29kZVRhYmxlW2lkXTsKICNlbHNlCiAgICAgICAgICAgICByZXR1
cm4gaWQ7CkBAIC0xMTIsNyArMTE2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPcGNv
ZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBB
U1NFUlQobV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVU
RVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29k
ZSkpOworICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKKyNl
bGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgQVNTRVJU
KGlzT3Bjb2RlKG9wY29kZSkpOwogICAgICAgICAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihvcGNvZGUpKTsKQEAgLTEyMiw2ICsxMjksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICByZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGJvb2wgZW5hYmxlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2VuYWJs
ZWQ7CisgICAgICAgIH0KIAogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKQEAgLTE4
OSw3ICsyMDEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlIG1f
cmVnaXN0ZXJGaWxlOwogICAgICAgICAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBS
RVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIE9wY29kZSogbV9vcGNvZGVUYWJsZTsg
Ly8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZworICAgICAgICBIYXNoTWFw
PE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bj
b2RlSUQgZm9yIGRlY29tcGlsaW5nCisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBS
RVRFUikKICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2RlSURzXTsgLy8gTWFw
cyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBIYXNoTWFwPE9wY29k
ZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQg
Zm9yIGRlY29tcGlsaW5nCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9SZWdpc3RlckZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHJldmlzaW9uIDEwNDYzMSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnNlcnZh
dGl2ZVJvb3RzOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlIHsKICAgICAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoUmVnaXN0ZXJGaWxlKTsKQEAgLTgxLDYgKzgyLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGdyb3dTbG93Q2Fz
ZShSZWdpc3RlciopOwogICAgICAgICB2b2lkIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwogICAg
ICAgICB2b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSG9z
dENhbGxSZXR1cm5WYWx1ZS5oIgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAi
SW5saW5lQVNNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitleHRlcm4gIkMiIEVuY29kZWRKU1Zh
bHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUo
KTsKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJ
T04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7CisKKyNp
ZiBDUFUoWDg2XzY0KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkg
IjoiICJcbiIKKyAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgorICAgICJtb3YgJXIxMywgJXJk
aVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUoWDg2KQorYXNtICgKKyIu
Z2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJP
TF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCgl
ZWRpKSwgJWVkaVxuIgorICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgorICAgICJqbXAgIiBTWU1C
T0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUp
ICJcbiIKKyk7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKK2FzbSAoCisiLnRleHQiICJcbiIKKyIu
YWxpZ24gMiIgIlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorIi50
aHVtYiIgIlxuIgorIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6
IiAiXG4iCisgICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgorICAgICJjcHkgcjAsIHI1IiAi
XG4iCisgICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZW5kaWYKKworZXh0ZXJuICJDIiBFbmNvZGVk
SlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZh
bHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2Fs
bFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9I
b3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorI2RlZmluZSBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKwor
I2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIK
KyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENBTExJTkdfQ09OVkVOVElPTl9JU19T
VERDQUxMCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIENERUNMCisjZWxz
ZQorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTgorI2VuZGlmCisKK25hbWVz
cGFjZSBKU0MgeworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZB
TFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Cit9CisKKyNlbmRpZiAvLyBIb3N0
Q2FsbFJldHVyblZhbHVlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2
aXNpb24gMTA0NjMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFp
blBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmlsZV93aWxsX2NhbGwpCiAgICAgICAg
IERFRklORV9PUChvcF9wdXNoX25ld19zY29wZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hf
c2NvcGUpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5F
X09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pbmRleCkKICAg
ICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCkBAIC00ODcsNiArNDg5LDggQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3Bvc3RfaW5jKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2RlYykKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9pbmMpCisgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkK
ICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2dsb2JhbCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ29kZS5oCShyZXZpc2lvbiAxMDQ2MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgSklUQ29kZSgpIHsgfQogI2VuZGlmCiAgICAgcHVibGljOgotICAgICAg
ICBlbnVtIEpJVFR5cGUgeyBIb3N0Q2FsbFRodW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07Cisg
ICAgICAgIGVudW0gSklUVHlwZSB7IEhvc3RDYWxsVGh1bmssIEludGVycHJldGVyVGh1bmsgQmFz
ZWxpbmVKSVQsIERGR0pJVCB9OwogICAgICAgICAKICAgICAgICAgc3RhdGljIEpJVFR5cGUgYm90
dG9tVGllckpJVCgpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENvbW1v
bl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2RlZmluZSBMTElOVF9FWEVDVVRJT05fVFJB
Q0lORyAwCisKKyNlbmRpZiAvLyBMTEludENvbW1vbl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorCisjaWYgRU5BQkxFKExMSU5U
KQorCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJl
dGVyLmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
TExJbnQgeworCitEYXRhOjpEYXRhKCkKKyAgICA6IG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKG5l
dyBJbnN0cnVjdGlvblttYXhPcGNvZGVMZW5ndGggKyAxXSkKKyAgICAsIG1fb3Bjb2RlTWFwKG5l
dyBPcGNvZGVbbnVtT3Bjb2RlSURzXSkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heE9w
Y29kZUxlbmd0aCArIDE7ICsraSkKKyAgICAgICAgbV9leGNlcHRpb25JbnN0cnVjdGlvbnNbaV0u
dS5wb2ludGVyID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJf
dHJhbXBvbGluZSk7CisjZGVmaW5lIE9QQ09ERV9FTlRSWShvcGNvZGUsIGxlbmd0aCkgbV9vcGNv
ZGVNYXBbb3Bjb2RlXSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50XyMjb3Bjb2RlKTsKKyAg
ICBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0VOVFJZKTsKKyN1bmRlZiBPUENPREVfRU5UUlkK
K30KKworRGF0YTo6fkRhdGEoKQoreworICAgIGRlbGV0ZVtdIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rp
b25zOworICAgIGRlbGV0ZVtdIG1fb3Bjb2RlTWFwOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTElu
dERhdGFfaAorI2RlZmluZSBMTEludERhdGFfaAorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5j
bHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1
Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKKyNpZiBFTkFCTEUoTExJTlQpCitjbGFzcyBE
YXRhIHsKK3B1YmxpYzoKKyAgICBEYXRhKCk7CisgICAgfkRhdGEoKTsKKyAgICAKKyAgICBJbnN0
cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKyAgICB7CisgICAgICAgIHJldHVybiBt
X2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBvcGNvZGVN
YXAoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3Bjb2RlTWFwOworICAgIH0KK3ByaXZhdGU6
CisgICAgSW5zdHJ1Y3Rpb24qIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIE9wY29kZSog
bV9vcGNvZGVNYXA7Cit9OworI2Vsc2UgLy8gRU5BQkxFKExMSU5UKQorCisjaWYgQ09NUElMRVIo
Q0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFn
bm9zdGljIGlnbm9yZWQgIi1XbWlzc2luZy1ub3JldHVybiIKKyNlbmRpZgorCitjbGFzcyBEYXRh
IHsKK3B1YmxpYzoKKyAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICBPcGNv
ZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICB9Cit9OworCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cG9wCisjZW5kaWYKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludERhdGFfaAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRFbnRyeXBvaW50c19oCisjZGVmaW5lIExM
SW50RW50cnlwb2ludHNfaAorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRF
bnRyeXBvaW50cy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9p
ZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQsIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciYgYXJpdHlDaGVjaykKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsK
KyAgICAgICAgaml0Q29kZSA9IC8vID8/CisgICAgfQorfQorCit2b2lkIGdldEV2YWxFbnRyeXBv
aW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQo
SlNHbG9iYWxEYXRhJiwgSklUQ29kZSYpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQK
KworI2VuZGlmIC8vIExMSW50RW50cnlwb2ludHNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIExMSW50RW50cnlwb2ludHNfaAorI2RlZmluZSBMTEludEVudHJ5cG9pbnRz
X2gKKworI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEpJVENvZGU7CitjbGFzcyBKU0dsb2JhbERhdGE7CitjbGFzcyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWY7CisKK25hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25F
bnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIEpJVENvZGUm
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2spOwordm9pZCBnZXRFdmFsRW50cnlw
b2ludChKU0dsb2JhbERhdGEmLCBKSVRDb2RlJik7Cit2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50
KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50
CisKKyNlbmRpZiAvLyBMTEludEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5o
IgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5j
bHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVk
ZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExM
SW50IHsKKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0
cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmds
b2JhbERhdGEoKTsKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0
YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpKTsKKyAgICAKKyAgICByZXR1cm4gZ2xvYmFsRGF0YS0+bGxpbnREYXRhLmV4Y2VwdGlvbklu
c3RydWN0aW9ucygpOworfQorCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIElu
c3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+
Z2xvYmFsRGF0YSgpOworICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxE
YXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJl
Z2luKCkpOworICAgIAorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJv
d19kdXJpbmdfY2FsbF90cmFtcG9saW5lKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxM
SW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRp
b25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
eGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNf
aAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3Ry
dWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisvLyBTYXZlcyB0aGUgY3VycmVudCBQQyBp
biB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlvdSBhIFBDCisv
LyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4g
YWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0
cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBleGNlcHRpb24g
aGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhjZXB0aW9uIGhh
bmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhhdCBQQyB3aXRo
b3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVhZCBleGNlcHRp
b24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5CisvLyBv
dGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiwgSW5z
dHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxs
IHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludEV4Y2VwdGlvbnNf
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJz
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTM2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJMTEludEhlbHBlcnMuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUg
Ikhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1
ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmgiCisjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3Ry
aW5nLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5o
IgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25z
LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCisjZGVmaW5lIExMSU5U
X09QKGluZGV4KSAoZXhlYy0+cmVnaXN0ZXJzKClbcGNbaW5kZXhdLnUub3BlcmFuZF0pCisjZGVm
aW5lIExMSU5UX09QX0MoaW5kZXgpIChleGVjLT5yKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorCisj
ZGVmaW5lIExMSU5UX1JFVFVSTl9UV08oZmlyc3QsIHNlY29uZCkgZG8geyAgICAgICBcCisgICAg
ICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICAgICAgdm9pZCogYTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgdm9pZCogYjsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9IHBh
aXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpbnQ2NF90
IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gX19ydF91OyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmEgPSBm
aXJzdDsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmIgPSBzZWNv
bmQ7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX3J0X3UuaTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJ
TlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCBleGVjKQorCisjZGVmaW5lIExMSU5U
X1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIEpTR2xvYmFsRGF0YSYgX190X2dsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7
ICAgICAgICBcCisgICAgICAgIF9fdF9nbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IChleGNlcHRpb25U
b1Rocm93KTsgICAgICAgICAgICBcCisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBw
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBM
KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGls
ZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCkgZG8geyAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+Z2xvYmFsRGF0YSgpLmV4
Y2VwdGlvbikpIHsgICBcCisgICAgICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMp
OyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJ
TlRfRU5EKCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwo
KTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmlu
ZSBMTElOVF9CUkFOQ0gob3Bjb2RlLCBjb25kaXRpb24pIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBib29sIF9fYl9jb25kaXRpb24gPSAoY29uZGl0aW9uKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoX19iX2NvbmRpdGlvbikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMg
Kz0gcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5vcGVyYW5kOyAgICAgICAgXAorICAg
ICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcGNvZGUpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisj
ZGVmaW5lIExMSU5UX1JFVFVSTih2YWx1ZSkgZG8geyAgICAgICAgICAgICAgICBcCisgICAgICAg
IEpTVmFsdWUgX19yX3JldHVyblZhbHVlID0gKHZhbHVlKTsgICAgICBcCisgICAgICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEp
ID0gX19yX3JldHVyblZhbHVlOyAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUg
TExJTlRfQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0KSBMTElOVF9SRVRVUk5fVFdPKChl
eGVjKSwgKGNhbGxUYXJnZXQpKQorCisjZGVmaW5lIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMs
IGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0
ZSogX19jdF9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIEluc3RydWN0aW9uKiBfX2N0X3BjID0gKHBjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYgX19jdF9nbG9iYWxEYXRh
ID0gKF9fY3RfZXhlYyktPmdsb2JhbERhdGEoKTsgICAgICBcCisgICAgICAgIF9fY3RfZ2xvYmFs
RGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jdF9leGVjLCBjYWxsVG9UaHJvdyhfX2N0X2V4
ZWMsIF9fY3RfcGMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NB
TExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIEV4ZWNTdGF0ZSogX19jY2VfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2NjZV9wYyA9IChwYyk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VM
WShfX2NjZV9leGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY2NlX2V4ZWMsIGNhbGxUb1Rocm93KF9f
Y2NlX2V4ZWMsIF9fY2NlX3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBM
TElOVF9DQUxMX1JFVFVSTihleGVjLCBwYywgY2FsbFRhcmdldCkgZG8geyAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3JfZXhlYyA9IChleGVjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jcl9wYyA9
IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2b2lk
KiBfX2NyX2NhbGxUYXJnZXQgPSAoY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihfX2NyX2V4ZWMtPmNhbGxl
ckZyYW1lKCksIF9fY3JfcGMpOyAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3Jf
ZXhlYywgX19jcl9jYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZh
bHNlKQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpCit7CisgICAgLy8gRklYTUUKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wobG9vcF9vc3IpCit7CisgICAg
Ly8gRklYTUUKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFj
ZSkKK3sKKyAgICAvLyBGSVhNRQorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKQoreworICAgIC8vIEZJWE1FCisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCit7Cisg
ICAgLy8gRklYTUUKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIC8vIEZJWE1FCisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKK3sK
KyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBKU0FjdGl2YXRpb246OmNyZWF0ZShleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMsIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4
ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSkpOworICAgIGV4ZWMtPnNldFNjb3Bl
Q2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2YXRpb24pKTsKKyAgICBMTElOVF9S
RVRVUk4oSlNWYWx1ZShhY3RpdmF0aW9uKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9jcmVhdGVfYXJndW1lbnRzKQoreworICAgIExMSU5UX1JFVFVSTihKU1ZhbHVlKEFyZ3VtZW50
czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKQoreworICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9y
ID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxF
RAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBBU1NFUlQoY29uc3RydWN0
b3ItPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNvbnN0cnVj
dERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CisjZW5kaWYKKyAgICAKKyAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZTsKKyAgICBKU1ZhbHVlIHByb3RvID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOwor
ICAgIGlmIChwcm90by5pc09iamVjdCgpKQorICAgICAgICBzdHJ1Y3R1cmUgPSBhc09iamVjdChw
cm90byktPmluaGVyaXRvcklEKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgZWxzZQorICAgICAg
ICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5lbXB0eU9i
amVjdFN0cnVjdHVyZSgpOworICAgIAorICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjLCBzdHJ1Y3R1cmUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Nv
bnZlcnRfdGhpcykKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOwor
ICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBMTElOVF9SRVRVUk4odjEudG9UaGlz
T2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3Qp
Cit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSkKK3sKKyAgICBMTElOVF9SRVRVUk4o
Y29uc3RydWN0QXJyYXkoZXhlYywgYml0d2lzZV9jYXN0PEpTVmFsdWUqPigmTExJTlRfT1AoMikp
LCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19h
cnJheV9idWZmZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGV4
ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihwY1syXS51Lm9wZXJhbmQpLCBwY1szXS51
Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdleHApCit7
CisgICAgUmVnRXhwKiByZWdFeHAgPSBleGVjLT5jb2RlQmxvY2soKS0+cmVnZXhwKHBjWzJdLnUu
b3BlcmFuZCk7CisgICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkKKyAgICAgICAgTExJTlRfVEhS
T1coY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgZmxhZyBzdXBwbGllZCB0byBSZWdF
eHAgY29uc3RydWN0b3IuIikpOworICAgIExMSU5UX1JFVFVSTihSZWdFeHBPYmplY3Q6OmNyZWF0
ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+
bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbighTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihK
U1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKQoreworICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpT
VmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0
ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6c3RyaWN0RXF1YWwo
ZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xl
c3NlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPHRydWU+KGV4ZWMs
IExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3Jl
YXRlcmVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8ZmFsc2U+KGV4
ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKQoreworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKyAxKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKQoreworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYykKK3sKKyAgICBkb3VibGUgcmVz
dWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09Q
KDIpID0ganNOdW1iZXIocmVzdWx0ICsgMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJl
c3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9kZWMpCit7CisgICAg
ZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAg
ICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCAtIDEpOworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVt
YmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSkK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoLUxMSU5UX09QKDIpLmpzVmFsdWUoKS50b051
bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKQoreworICAg
IEpTVmFsdWUgdjEgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2MiA9IExM
SU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAgIGlmICh2MS5pc1N0cmluZygpKSB7Cisg
ICAgICAgIExMSU5UX1JFVFVSTigKKyAgICAgICAgICAgIHYyLmlzU3RyaW5nKCkKKyAgICAgICAg
ICAgID8ganNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEpLCBhc1N0cmluZyh2MikpCisgICAgICAg
ICAgICA6IGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9QcmltaXRpdmVTdHJpbmco
ZXhlYykpKTsKKyAgICB9CisgICAgCisgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1i
ZXIoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHYxLmFzTnVtYmVyKCkgKyB2Mi5h
c051bWJlcigpKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpzQWRkU2xvd0Nhc2UoZXhlYywg
djEsIHYyKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAq
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9zdWIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5U
X09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAtIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJl
cihleGVjKSAvIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKGZtb2QoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpLCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2xzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMiku
anNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPDwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50
MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3JzaGlmdCkKK3sKKyAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhl
YykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSA+PiBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfYml0YW5kKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1Zh
bHVlKCkudG9JbnQzMihleGVjKSAmIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4
ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcikKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgfCBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfYml0eG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElO
VF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSBeIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3Qp
Cit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKH5MTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9J
bnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2lu
c3RhbmNlKQoreworICAgIEpTVmFsdWUgYmFzZVZhbCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsK
KyNpZm5kZWYgTkRFQlVHCisgICAgVHlwZUluZm8gdHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKTsK
KyAgICBBU1NFUlQoIWJhc2VWYWwuaXNPYmplY3QoKQorICAgICAgICAgICB8fCAhKHR5cGVJbmZv
ID0gYXNPYmplY3QoYmFzZVZhbCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpKS5pbXBsZW1lbnRz
SGFzSW5zdGFuY2UoKSk7CisjZW5kaWYKKyAgICBMTElOVF9USFJPVyhjcmVhdGVJbnZhbGlkUGFy
YW1FcnJvcihleGVjLCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2luc3RhbmNlb2YpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihD
b21tb25TbG93UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3coZXhlYywgTExJTlRfT1AoMikuanNWYWx1
ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIExMSU5UX09QKDQpLmpzVmFsdWUoKSkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZikKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRlZmluZWQpCit7CisgICAgSlNWYWx1ZSB2
ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4odi5p
c0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5U
X09QKDIpLmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1Ao
MikuanNWYWx1ZSgpLmlzTnVtYmVyKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2lzX3N0cmluZykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGlzSlNTdHJpbmcoTExJ
TlRfT1AoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNf
b2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc09iamVjdFR5cGUoTExJ
TlRfT1AoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNf
ZnVuY3Rpb24pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rpb25UeXBl
KExMSU5UX09QKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2luKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcElu
KGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSkKK3sKKyAgICBMTElOVF9SRVRV
Uk4oQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlk
ZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcmVzb2x2ZV9za2lwKQoreworICAgIExMSU5UX1JFVFVSTigKKyAgICAgICAgQ29tbW9uU2xv
d1BhdGhzOjpvcFJlc29sdmVTa2lwKAorICAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgIGV4
ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCksCisgICAgICAgICAg
ICBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmVfZ2xvYmFsKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2Nr
KCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFs
T2JqZWN0KCk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7Cisg
ICAgaW50IHByb3BlcnR5ID0gcGNbMl0udS5vcGVyYW5kOworICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaW50IG9mZnNldCA9IHBjWzRdLnUu
b3BlcmFuZDsKKyAgICAKKyAgICBBU1NFUlQoKCFzdHJ1Y3R1cmUpID09ICghb2Zmc2V0KSk7Cisg
ICAgQVNTRVJUKHN0cnVjdHVyZSAhPSBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAK
KyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7
CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAKKyAgICBpZiAoZ2xv
YmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKSB7CisgICAgICAg
IEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCk7CisgICAgICAgIGlm
IChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+
aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgp
ID09IGdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgcGNbM10udS5zdHJ1Y3R1cmUuc2V0KAor
ICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBwY1s0XSA9
IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIExMSU5U
X1JFVFVSTihyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9USFJPVyhjcmVhdGVVbmRl
ZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5j
b2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIGlmIChwY1szXS51
Lm9wZXJhbmQpIHsKKyAgICAgICAgSlNWYWx1ZSBiYXNlID0gSlNDOjpyZXNvbHZlQmFzZShleGVj
LCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCB0cnVlKTsKKyAgICAgICAgaWYgKCFiYXNlKQor
ICAgICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdu
bWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICAgICAgTExJTlRfUkVUVVJOKGJhc2Up
OworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oSlNDOjpyZXNvbHZlQmFzZShleGVjLCBp
ZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKK3sKKyAgICBKU09iamVjdCogb2JqZWN0
ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChvYmplY3QpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlk
ZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIW9iamVjdC0+Z2V0UHJvcGVydHlT
bG90KGV4ZWMsIGlkZW50LCBzbG90KSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JG
b3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9i
YXNlKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVX
aXRoQmFzZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJh
bmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJ
TlRfT1AoMikgPSByZXN1bHQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKK3sKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IENv
bW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aFRoaXMoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCkt
PmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0OworICAgIExMSU5UX0VO
RCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKQoreworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYg
aWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4
ZWMsIGlkZW50LCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElO
VF9PUCgxKSA9IHJlc3VsdDsKKworICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAg
JiYgc2xvdC5pc0NhY2hlYWJsZSgpCisgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNl
VmFsdWUKKyAgICAgICAgJiYgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNs
b3Q6OlZhbHVlKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZh
bHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5z
dHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVh
YmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnBy
b2hpYml0c1Byb3BlcnR5Q2FjaGluZygpKSB7CisgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVy
ZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5k
ID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2dldF9hcmd1bWVudHNfbGVuZ3RoKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50
aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09Q
KDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworICAgIExM
SU5UX1JFVFVSTihiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9j
ay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
TExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaWRlbnQsIExMSU5U
X09QKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVh
YmxlKCkpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUu
YXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVj
dHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVE
aWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGli
aXRzUHJvcGVydHlDYWNoaW5nKCkKKyAgICAgICAgICAgICYmIGJhc2VDZWxsID09IHNsb3QuYmFz
ZSgpKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQ
cm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1
cmUtPmlzRGljdGlvbmFyeSgpKSB7CisgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZVByb3Rv
dHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCisgICAgICAgICAgICAg
ICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAg
ICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1
cmUtPnByZXZpb3VzSUQoKSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9
IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAg
ICAgIHBjWzZdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMt
Pmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsK
KyAgICAgICAgICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAg
ICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCksIHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNv
ZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAgICAg
ICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgZXhlYy0+
Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwor
ICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBz
aXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQp
Cit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBK
U09iamVjdCogYmFzZU9iamVjdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b09iamVjdChleGVj
KTsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVs
ZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNd
LnUub3BlcmFuZCkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGlmICghY291
bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJTlRfVEhS
T1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisKK2lubGluZSBK
U1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFs
dWUgc3Vic2NyaXB0KQoreworICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1
YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNl
VmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eShleGVjLCBhc1N0cmluZyhzdWJzY3Jp
cHQpLT52YWx1ZShleGVjKSkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAg
ICAKKyAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9
IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUp
ICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgcmV0
dXJuIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAg
ICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFs
dWUpLT5jYW5BY2Nlc3NJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc0J5dGVBcnJheShi
YXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBi
YXNlVmFsdWUuZ2V0KGV4ZWMsIGkpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3Bl
cnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7CisgICAgcmV0dXJuIGJhc2VWYWx1
ZS5nZXQoZXhlYywgcHJvcGVydHkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJTlRfT1AoMiku
anNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpCit7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMg
PSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhcmd1bWVudHMpIHsKKyAgICAgICAg
YXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKTsK
KyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIExMSU5UX09QKDIpID0g
YXJndW1lbnRzOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywg
YXJndW1lbnRzLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dldF9ieV9wbmFtZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhl
YywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpCit7CisgICAgSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0g
TExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUCgzKS5q
c1ZhbHVlKCk7CisgICAgCisgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsK
KyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAo
aXNKU0FycmF5KGJhc2VWYWx1ZSkpIHsKKyAgICAgICAgICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBh
c0FycmF5KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAoanNBcnJheS0+Y2FuU2V0SW5kZXgo
aSkpCisgICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgoZ2xvYmFsRGF0YSwgaSwgdmFs
dWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5k
ZXgoanNBcnJheSwgZXhlYywgaSwgdmFsdWUpOworICAgICAgICAgICAgTExJTlRfRU5EKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKQorICAgICAgICAg
ICAgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAgICAg
ICAgICAgIEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7
CisgICAgICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAganNC
eXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzSW50MzIoKSk7CisgICAgICAgICAgICAgICAg
TExJTlRfRU5EKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodmFsdWUuaXNOdW1i
ZXIoKSkgeworICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5h
c051bWJlcigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGksIHZhbHVlKTsKKyAgICAg
ICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhl
Yywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RN
b2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92
YWwpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7Cisg
ICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAg
CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7CisgICAgCisg
ICAgYm9vbCBjb3VsZERlbGV0ZTsKKyAgICAKKyAgICB1aW50MzJfdCBpOworICAgIGlmIChzdWJz
Y3JpcHQuZ2V0VUludDMyKGkpKQorICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1l
dGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNlT2JqZWN0LCBleGVjLCBpKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIElk
ZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9i
amVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgcHJv
cGVydHkpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGV4ZWMtPmNvZGVC
bG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAKKyAgICBMTElO
VF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wdXRfYnlfaW5kZXgpCit7CisgICAgTExJTlRfT1AoMSkuanNWYWx1ZSgpLnB1dChl
eGVjLCBwY1syXS51Lm9wZXJhbmQsIExMSU5UX09QKDMpLmpzVmFsdWUoKSk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyKQoreworICAg
IEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgSlNPYmplY3Qq
IGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIElkZW50aWZp
ZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5k
KTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIGJh
c2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZUdldHRlcihiYXNlT2JqLCBleGVjLCBpZGVudCwg
YXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfc2V0dGVyKQoreworICAgIEFTU0VSVChM
TElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmog
PSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIElkZW50aWZpZXImIGlkZW50
ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBB
U1NFUlQoTExJTlRfT1AoMykuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIGJhc2VPYmotPm1l
dGhvZFRhYmxlKCktPmRlZmluZVNldHRlcihiYXNlT2JqLCBleGVjLCBpZGVudCwgYXNPYmplY3Qo
TExJTlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKQoreworICAgIHVuc2lnbmVkIGNvdW50ID0g
cGNbMV0udS5vcGVyYW5kOworICAgIFNjb3BlQ2hhaW5Ob2RlKiB0bXAgPSBleGVjLT5zY29wZUNo
YWluKCk7CisgICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAgIHRtcCA9IHRtcC0+cG9wKCk7Cisg
ICAgZXhlYy0+c2V0U2NvcGVDaGFpbih0bXApOworICAgIHBjICs9IHBjWzJdLnUub3BlcmFuZDsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKQor
eworICAgIExMSU5UX0JSQU5DSChvcF9qdHJ1ZSwgTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvQm9v
bGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpCit7Cisg
ICAgTExJTlRfQlJBTkNIKG9wX2pmYWxzZSwgIUxMSU5UX09QKDEpLmpzVmFsdWUoKS50b0Jvb2xl
YW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3MpCit7CisgICAg
TExJTlRfQlJBTkNIKG9wX2psZXNzLCBqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9qbmxlc3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzcywgIWpzTGVz
czx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKQoreworICAg
IExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlciwganNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVh
dGVyLCAhanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNz
ZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEsIGpzTGVzc0VxPHRydWU+KGV4ZWMs
IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpCit7CisgICAgTExJTlRfQlJBTkNI
KG9wX2pubGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlcmVxLCBqc0xl
c3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSkK
K3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEsICFqc0xlc3NFcTxmYWxzZT4oZXhl
YywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKQoreworICAgIEpTVmFsdWUg
c2NydXRpbmVlID0gTExJTlRfT1AoMykuanNWYWx1ZSgpOworICAgIEFTU0VSVChzY3J1dGluZWUu
aXNEb3VibGUoKSk7CisgICAgZG91YmxlIHZhbHVlID0gc2NydXRpbmVlLmFzRG91YmxlKCk7Cisg
ICAgaW50MzJfdCBpbnRWYWx1ZSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKTsKKyAgICBp
bnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAodmFsdWUgPT0gaW50
VmFsdWUpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2so
KTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGUocGNb
MV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShpbnRWYWx1ZSwgZGVmYXVsdE9mZnNldCk7Cisg
ICAgfSBlbHNlCisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKQoreworICAgIEpT
VmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1AoMykuanNWYWx1ZSgpOworICAgIGludCBkZWZhdWx0
T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlmICghc2NydXRpbmVlLmlzU3RyaW5nKCkp
CisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7CisgICAgZWxzZSB7CisgICAgICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVC
bG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFs
dWUoYXNTdHJpbmcoc2NydXRpbmVlKS0+dmFsdWUoZXhlYykuaW1wbCgpLCBkZWZhdWx0T2Zmc2V0
KTsKKyAgICB9CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uZXdfZnVuYykKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9j
aygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlCisg
ICAgICAgICAgIHx8ICFjb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKQorICAgICAgICAg
ICB8fCBleGVjLT51bmNoZWNrZWRSKGNvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpz
VmFsdWUoKSk7CisgICAgTExJTlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzJd
LnUub3BlcmFuZCktPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApCit7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0
aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBKU0Z1
bmN0aW9uKiBmdW5jID0gZnVuY3Rpb24tPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKTsK
KyAgICAKKyAgICBpZiAoIWZ1bmN0aW9uLT5uYW1lKCkuaXNOdWxsKCkpIHsKKyAgICAgICAgSlNT
dGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25TY29wZU9iamVjdCA9IEpTU3RhdGljU2NvcGVPYmpl
Y3Q6OmNyZWF0ZShleGVjLCBmdW5jdGlvbi0+bmFtZSgpLCBmdW5jLCBSZWFkT25seSB8IERvbnRE
ZWxldGUpOworICAgICAgICBmdW5jLT5zZXRTY29wZShleGVjLT5nbG9iYWxEYXRhKCksIGZ1bmMt
PnNjb3BlKCktPnB1c2goZnVuY3Rpb25TY29wZU9iamVjdCkpOworICAgIH0KKyAgICAKKyAgICBM
TElOVF9SRVRVUk4oZnVuYyk7Cit9CisKK3N0YXRpYyBIZWxwZXJSZXR1cm5UeXBlIGhhbmRsZUhv
c3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNh
bGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hh
aW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7
CisKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShjYWxsZWUsIGNh
bGxEYXRhKTsKKyAgICAKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlSlMpOwor
ICAgIAorICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVIb3N0KSB7CisgICAgICAgICAg
ICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxE
YXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZv
aWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAg
QVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSk7CisgICAgICAgIExMSU5UX0NBTExfVEhS
T1coZXhlYywgcGMsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAg
IH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIAorICAgIENv
bnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5
cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0RGF0YSk7CisgICAgCisgICAg
QVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZUpTKTsKKyAgICAKKyAgICBpZiAo
Y29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlSG9zdCkgeworICAgICAgICBnbG9iYWxEYXRh
LT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0
aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhl
Y0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpKTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0
VHlwZU5vbmUpOworICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFDb25z
dHJ1Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJuVHlw
ZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCwgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlLCBXcml0ZUJhcnJp
ZXJCYXNlPEpTQ2VsbD4qIGV4cGVjdGVkRnVuY3Rpb24gPSAwLCB2b2lkKiogbWFjaGluZUNvZGUg
PSAwKQoreworICAgIEFTU0VSVCghZXhwZWN0ZWRGdW5jdGlvbiA9PSAhbWFjaGluZUNvZGUpOwor
ICAgIAorICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0aW9uKGNh
bGxlZUFzVmFsdWUpOworICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCisgICAgICAgIHJl
dHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwga2luZCk7
CisgICAgCisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsZWVBc0Z1bmN0
aW9uQ2VsbCk7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihjYWxsZWUtPnNjb3BlVW5j
aGVja2VkKCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVj
dXRhYmxlKCk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOworICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5j
dGlvbigpKQorICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZv
cihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIGVsc2UgeworICAgICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGV4ZWN1dGFibGUpOworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4
ZWN1dGFibGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29wZSgpLCBraW5kKTsK
KyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjQ2Fs
bGVlLT5jYWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOworICAgICAgICBjb2RlQmxvY2sgPSAmZnVu
Y3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICAgICAgaWYg
KGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxz
aXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIGNvZGVQdHIg
PSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0Zvcihr
aW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIH0K
KyAgICAKKyAgICBpZiAoZXhwZWN0ZWRGdW5jdGlvbikgeworICAgICAgICBleHBlY3RlZEZ1bmN0
aW9uLT5zZXQoZXhlY0NhbGxlZS0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLCBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgICAgICptYWNoaW5lQ29kZSA9IGNv
ZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfQ0FMTF9S
RVRVUk4oZXhlY0NhbGxlZSwgcGMsIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Cit9CisK
K2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKEV4ZWNTdGF0ZSogZXhlYywgSW5z
dHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgLy8gVGhp
cyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUuCisgICAgLy8gLSBGaWd1
cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAgLy8g
LSBJZiBwb3NzaWJsZSwgbGluayB0aGUgY2FsbCdzIGlubGluZSBjYWNoZS4KKyAgICAvLyAtIFJl
dHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcg
Y2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgx
KS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBj
WzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIo
UmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5z
ZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICAKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxs
ZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCAmcGNbNF0udS5qc0NlbGwsICZwY1s1XS51LnBv
aW50ZXIpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCkKK3sKKyAgICByZXR1
cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDYWxsKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywg
cGMsIENvZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2Fs
bF92YXJhcmdzKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAgYSBj
YWxsIGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4KKyAgICAv
LyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4K
KyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwg
YW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUg
PSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVl
ID0gbG9hZFZhcmFyZ3MoCisgICAgICAgIGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJw
cmV0ZXItPnJlZ2lzdGVyRmlsZSgpLAorICAgICAgICBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExM
SU5UX09QKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5vcGVyYW5kKTsKKyAgICBMTElOVF9DQUxMX0NI
RUNLX0VYQ0VQVElPTihleGVjLCBwYyk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2Vk
UihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUt
PnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIAorICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0Nh
bGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NhbGxfZXZhbCkKK3sKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBM
TElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0g
ZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBl
eGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxs
ZXJGcmFtZShleGVjKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6
Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihl
eGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBDKGJpdHdpc2Vf
Y2FzdDxJbnN0cnVjdGlvbio+KCZsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOworICAgIGV4
ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKyAgICAKKyAgICBpZiAoIWlzSG9zdEZ1bmN0aW9u
KGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFsKSkKKyAgICAgICAgcmV0dXJuIHNldFVwQ2Fs
bChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworICAgIAorICAg
IGdsb2JhbERhdGEuaG9zdENhbGxSZXR1cm5WYWx1ZSA9IGV2YWwoZXhlY0NhbGxlZSk7CisgICAg
TExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3RlYXJfb2ZmX2FjdGl2YXRpb24pCit7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT5u
ZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIEpTVmFsdWUgYWN0aXZhdGlvblZhbHVlID0gTExJ
TlRfT1AoMSkuanNWYWx1ZSgpOworICAgIGlmICghYWN0aXZhdGlvblZhbHVlKSB7CisgICAgICAg
IGlmIChKU1ZhbHVlIHYgPSBleGVjLT5yZWdpc3RlcnMoKVt1bm1vZGlmaWVkQXJndW1lbnRzUmVn
aXN0ZXIocGNbMl0udS5vcGVyYW5kKV0uanNWYWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoIWV4
ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICBhc0FyZ3Vt
ZW50cyh2KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAgfQorICAgICAgICBMTElOVF9FTkQoKTsK
KyAgICB9CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0aW9uKGFjdGl2
YXRpb25WYWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihleGVjLT5nbG9iYWxEYXRhKCkp
OworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT5yZWdpc3RlcnMoKVt1bm1vZGlmaWVkQXJndW1l
bnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKV0uanNWYWx1ZSgpKQorICAgICAgICBhc0FyZ3Vt
ZW50cyh2KS0+ZGlkVGVhck9mZkFjdGl2YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBhY3RpdmF0
aW9uKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rl
YXJfb2ZmX2FyZ3VtZW50cykKK3sKKyAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCktPnVzZXNB
cmd1bWVudHMoKSAmJiAhZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7
CisgICAgYXNBcmd1bWVudHMoZXhlYy0+cmVnaXN0ZXJzKClbdW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKHBjWzFdLnUub3BlcmFuZCldLmpzVmFsdWUoKSktPnRlYXJPZmYoZXhlYyk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsICZMTElOVF9PUCgyKSwgcGNbM10udS5vcGVy
YW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpCit7Cisg
ICAgTExJTlRfUkVUVVJOKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b1ByaW1pdGl2ZShleGVjKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKQoreworICAgIEpTVmFs
dWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAodi5pc1VuZGVmaW5lZE9yTnVs
bCgpKSB7CisgICAgICAgIHBjICs9IHBjWzVdLnUub3BlcmFuZDsKKyAgICAgICAgTExJTlRfRU5E
KCk7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKKyAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVjdHVyZSgpOworICAgIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBzdHJ1Y3R1cmUtPmVudW1lcmF0
aW9uQ2FjaGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlOYW1lSXRlcmF0b3IgfHwganNQcm9wZXJ0
eU5hbWVJdGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4oKSAhPSBzdHJ1Y3R1cmUtPnByb3Rv
dHlwZUNoYWluKGV4ZWMpKQorICAgICAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8pOworICAgIAorICAgIExMSU5UX09QKDEp
ID0gSlNWYWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKKyAgICBMTElOVF9PUCgyKSA9IEpT
VmFsdWUobyk7CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rlcjo6d2l0aEludCgwKTsKKyAgICBM
TElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPnNp
emUoKSk7CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcG5hbWVzKTsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUp
Cit7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChMTElOVF9PUCgyKS5qc1ZhbHVlKCkp
OworICAgIEpTU3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3RyaW5nKExMSU5UX09QKDEpLmpzVmFsdWUo
KSk7CisgICAgaWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgcHJv
cGVydHktPnZhbHVlKGV4ZWMpKSkpIHsKKyAgICAgICAgLy8gR28gdG8gdGFyZ2V0LgorICAgICAg
ICBwYyArPSBwY1s2XS51Lm9wZXJhbmQ7CisgICAgfSAvLyBFbHNlLCBkb24ndCBjaGFuZ2UgdGhl
IFBDLCBzbyB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxvb3AuCisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKQoreworICAgIEpTVmFsdWUg
diA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogbyA9IHYudG9PYmplY3Qo
ZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgTExJTlRfT1Ao
MSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNo
KG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3BvcF9zY29wZSkKK3sKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hh
aW4oKS0+cG9wKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcHVzaF9uZXdfc2NvcGUpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVj
LT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogc2NvcGUgPSBKU1N0YXRpY1Njb3BlT2JqZWN0
OjpjcmVhdGUoZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCksIExM
SU5UX09QKDMpLmpzVmFsdWUoKSwgRG9udERlbGV0ZSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFp
bihleGVjLT5zY29wZUNoYWluKCktPnB1c2goc2NvcGUpKTsKKyAgICBMTElOVF9SRVRVUk4oc2Nv
cGUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpCit7CisgICAgTExJTlRf
VEhST1coTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKK3sKKyAgICBMTElOVF9USFJPVyhjcmVhdGVSZWZl
cmVuY2VFcnJvcihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b1N0cmluZyhleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVidWcpCit7CisgICAgaW50IGRlYnVn
SG9va0lEID0gcGNbMV0udS5vcGVyYW5kOworICAgIGludCBmaXJzdExpbmUgPSBwY1syXS51Lm9w
ZXJhbmQ7CisgICAgaW50IGxhc3RMaW5lID0gcGNbM10udS5vcGVyYW5kOworICAgIAorICAgIGV4
ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+ZGVidWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVi
dWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgCisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxf
Y2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPndp
bGxFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQoreworICAg
ICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSgpKS0+ZGlkRXhlY3V0ZShleGVj
LCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6TExJbnQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEhl
bHBlcnNfaAorI2RlZmluZSBMTEludEhlbHBlcnNfaAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IElu
c3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCit0eXBlZGVmIGludDY0X3QgSGVscGVy
UmV0dXJuVHlwZTsKKworI2RlZmluZSBMTElOVF9IRUxQRVJfREVDTChuYW1lKSBcCisgICAgZXh0
ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50XyMjbmFtZShFeGVjU3RhdGUqIGV4ZWMsIElu
c3RydWN0aW9uKiBwYykKKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGxvb3Bfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpOworTExJTlRf
SEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3Rf
YXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24p
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
b252ZXJ0X3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbmV3X2FycmF5X2J1ZmZlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4
cCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9lcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9zdHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVx
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9sZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJlX2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcG9zdF9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3Rf
ZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmVnYXRlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
c3ViKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX21vZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hp
ZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfYml0b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
aGVja19oYXNfaW5zdGFuY2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2Yp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZik7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfdW5kZWZpbmVkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFu
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2lzX3N0cmluZyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfaW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcmVzb2x2ZV9nbG9iYWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVf
YmFzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9nZXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNf
bGVuZ3RoKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wdXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlf
dmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1
dF9zZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFs
c2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbmxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2psZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qbmdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2NoYXIpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3N3aXRjaF9zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5j
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jYWxsX2V2YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2Zm
X2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50
cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl90b19wcmltaXRpdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFt
ZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9z
Y29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJv
d19yZWZlcmVuY2VfZXJyb3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpM
TEludAorCisjZW5kaWYgLy8gTExJbnRIZWxwZXJzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisj
ZGVmaW5lIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisKKyNpbmNsdWRlICJMTEludENvbW1vbi5o
IgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CisKKyNpZiBDUFUoWDg2KQorI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMQorI2Vsc2UKKyNkZWZp
bmUgT0ZGTElORV9BU01fWDg2IDAKKyNlbmRpZgorCisjaWYgQ1BVKEFSTXY3KQorI2RlZmluZSBP
RkZMSU5FX0FTTV9BUk12NyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCisj
ZW5kaWYKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJU
X0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMAor
I2VuZGlmCisKKyNpZiBDUFUoQklHX0VORElBTikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VO
RElBTiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDAKKyNlbmRpZgor
CisjaWYgRU5BQkxFKExMSU5UX09TUl9UT19KSVQpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9F
TkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRp
ZgorCisjaWYgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhF
Q1VUSU9OX1RSQUNJTkcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RS
QUNJTkcgMAorI2VuZGlmCisKKyNlbmRpZiAvLyBMTEludE9mZmxpbmVBc21Db25maWdfaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpbmNsdWRlICJBbGxvY2F0aW9uU3BhY2UuaCIKKyNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSGVhcC5oIgorI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJK
U0FycmF5LmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgi
CisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU3R5cGVJbmZvLmgiCisjaW5jbHVk
ZSAiSlNWYXJpYWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUg
IkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5j
bHVkZSAiUmVnaXN0ZXJGaWxlLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorI2luY2x1ZGUg
IlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiVmFs
dWVQcm9maWxlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworI2RlZmluZSBPRkZMSU5FX0FTTV9PRkZTRVRPRihjbGF6eiwgZmllbGQpIE9C
SkVDVF9PRkZTRVRPRihjbGF6eiwgZmllbGQpCisKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
ciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkKiBkdW1teSgpOworfTsKKwor
Y29uc3QgdW5zaWduZWQqIExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKQoreworI2luY2x1
ZGUgIkxMSW50RGVzaXJlZE9mZnNldHMuaCIKKyAgICByZXR1cm4gZXh0cmFjdG9yVGFibGU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCitpbnQgbWFpbihpbnQsIGNoYXIqKikKK3sKKyAgICAv
LyBPdXQgb2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRpb24sIG1ha2Ugc3VyZSB0aGF0IExMSW50T2Zm
c2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSBpcyBsaXZlLAorICAgIC8vIGFuZCB0aGUgZXh0cmFjdG9y
VGFibGUgaXMgbGl2ZSwgdG9vLgorICAgIHByaW50ZigiJXBcbiIsIEpTQzo6TExJbnRPZmZzZXRz
RXh0cmFjdG9yOjpkdW1teSgpKTsKKyAgICByZXR1cm4gMDsKK30KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisKKyNpbmNs
dWRlICJKU0ludGVyZmFjZUpJVC5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIK
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIHZv
aWQgKCp0YXJnZXQpKCkpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIAorICAgIC8v
IEZJWE1FOiB0aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0byBkbyBpdCBvbiBYODYsIGJ1
dCBJJ20gbm90IHN1cmUgSSBjYXJlLgorICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVz
dGVkSW1tUHRyKHRhcmdldCksIEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgaml0Lmp1bXAo
SlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVy
KCpnbG9iYWxEYXRhLCAmaml0KTsKKyAgICByZXR1cm4gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2Rl
KCk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5r
R2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJv
bG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RF
bnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopCit7CisgICAgcmV0dXJuIGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
cHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJp
dHlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9j
aGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFy
aXR5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKikKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9h
cml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dl
bmVyYXRvcihKU0dsb2JhbERhdGEqKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUbyhnbG9iYWxEYXRhLCBsbGludF9ldmFsX3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopCit7Cisg
ICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X3Byb2dy
YW1fcHJvbG9ndWUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIExMSW50VGh1bmtzX2gKKyNkZWZpbmUgTExJbnRUaHVua3NfaAorCisj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBKU0dsb2JhbERhdGE7CisKK25hbWVzcGFjZSBMTEludCB7CisKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSop
OworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dl
bmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZv
ckNhbGxBcml0eVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERh
dGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0ds
b2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNl
bmRpZiAvLyBMTEludFRodW5rc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDIyNDUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKworIyBDcmFzaCBjb3Vyc2Ugb24gdGhlIGxhbmd1YWdlIHRoYXQgdGhpcyBpcyB3
cml0dGVuIGluICh3aGljaCBJIGp1c3QgY2FsbAorIyAiYXNzZW1ibHkiIGV2ZW4gdGhvdWdoIGl0
J3MgbW9yZSB0aGFuIHRoYXQpOgorIworIyAtIE1vc3RseSBnYXMtc3R5bGUgb3BlcmFuZCBvcmRl
cmluZy4gVGhlIGxhc3Qgb3BlcmFuZCB0ZW5kcyB0byBiZSB0aGUKKyMgICBkZXN0aW5hdGlvbi4g
U28gImEgOj0gYiIgaXMgd3JpdHRlbiBhcyAibW92IGIsIGEiLiBCdXQgdW5saWtlIGdhcywKKyMg
ICBjb21wYXJpc29ucyBhcmUgaW4tb3JkZXIsIHNvICJpZiAoYSA8IGIpIiBpcyB3cml0dGVuIGFz
CisjICAgImJpbHQgYSwgYiwgLi4uIi4KKyMKKyMgLSAiYiIgPSBieXRlLCAiaCIgPSAxNi1iaXQg
d29yZCwgImkiID0gMzItYml0IHdvcmQsICJwIiA9IHBvaW50ZXIuCisjICAgQ3VycmVudGx5IHRo
aXMgaXMganVzdCAzMi1iaXQgc28gImkiIGFuZCAicCIgYXJlIGludGVyY2hhbmdlYWJsZQorIyAg
IGV4Y2VwdCB3aGVuIGFuIG9wIHN1cHBvcnRzIG9uZSBidXQgbm90IHRoZSBvdGhlci4KKyMKKyMg
LSBJbiBnZW5lcmFsLCB2YWxpZCBvcGVyYW5kcyBmb3IgbWFjcm8gaW52b2NhdGlvbnMgYW5kIGlu
c3RydWN0aW9ucyBhcmUKKyMgICByZWdpc3RlcnMgKGVnICJ0MCIpLCBhZGRyZXNzZXMgKGVnICI0
W3QwXSIpLCBiYXNlLWluZGV4IGFkZHJlc3NlcworIyAgIChlZyAiN1t0MCwgdDEsIDJdIiksIGFi
c29sdXRlIGFkZHJlc3NlcyAoZWcgIjB4YTAwMDAwMDBbXSIpLCBvciBsYWJlbHMKKyMgICAoZWcg
Il9mb28iIG9yICIuZm9vIikuIE1hY3JvIGludm9jYXRpb25zIGNhbiBhbHNvIHRha2UgYW5vbnlt
b3VzCisjICAgbWFjcm9zIGFzIG9wZXJhbmRzLiBJbnN0cnVjdGlvbnMgY2Fubm90IHRha2UgYW5v
bnltb3VzIG1hY3Jvcy4KKyMKKyMgLSBMYWJlbHMgbXVzdCBoYXZlIG5hbWVzIHRoYXQgYmVnaW4g
d2l0aCBlaXRoZXIgIl8iIG9yICIuIi4gIEEgIi4iIGxhYmVsCisjICAgaXMgbG9jYWwgYW5kIGdl
dHMgcmVuYW1lZCBiZWZvcmUgY29kZSBnZW4gdG8gbWluaW1pemUgbmFtZXNwYWNlCisjICAgcG9s
bHV0aW9uLiBBICJfIiBsYWJlbCBpcyBhbiBleHRlcm4gc3ltYm9sIChpLmUuICIuZ2xvYmwiKS4g
VGhlICJfIgorIyAgIG1heSBvciBtYXkgbm90IGJlIHJlbW92ZWQgZHVyaW5nIGNvZGUgZ2VuIGRl
cGVuZGluZyBvbiB3aGV0aGVyIHRoZSBhc20KKyMgICBjb252ZW50aW9ucyBmb3IgQyBuYW1lIG1h
bmdsaW5nIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0gbWFuZGF0ZSBhICJfIgorIyAgIHByZWZpeC4K
KyMKKyMgLSBBICJtYWNybyIgaXMgYSBsYW1iZGEgZXhwcmVzc2lvbiwgd2hpY2ggbWF5IGJlIGVp
dGhlciBhbm9ueW1vdXMgb3IKKyMgICBuYW1lZC4gQnV0IHRoaXMgaGFzIGNhdmVhdHMuICJtYWNy
byIgY2FuIHRha2UgemVybyBvciBtb3JlIGFyZ3VtZW50cywKKyMgICB3aGljaCBtYXkgYmUgbWFj
cm9zIG9yIGFueSB2YWxpZCBvcGVyYW5kcywgYnV0IGl0IGNhbiBvbmx5IHJldHVybgorIyAgIGNv
ZGUuIEJ1dCB5b3UgY2FuIGRvIFR1cmluZy1jb21wbGV0ZSB0aGluZ3MgdmlhIGNvbnRpbnVhdGlv
biBwYXNzaW5nCisjICAgc3R5bGU6ICJtYWNybyBmb28gKGEsIGIpIGIoYSkgZW5kIGZvbyhmb28s
IGZvbykiLiBBY3R1YWxseSwgZG9uJ3QgZG8KKyMgICB0aGF0LCBzaW5jZSB5b3UnbGwganVzdCBj
cmFzaCB0aGUgYXNzZW1ibGVyLgorIworIyAtIEFuICJpZiIgaXMgYSBjb25kaXRpb25hbCBvbiBz
ZXR0aW5ncy4gQW55IGlkZW50aWZpZXIgc3VwcGxpZWQgaW4gdGhlCisjICAgcHJlZGljYXRlIG9m
IGFuICJpZiIgaXMgYXNzdW1lZCB0byBiZSBhICNkZWZpbmUgdGhhdCBpcyBhdmFpbGFibGUKKyMg
ICBkdXJpbmcgY29kZSBnZW4uIFNvIHlvdSBjYW4ndCB1c2UgImlmIiBmb3IgY29tcHV0YXRpb24g
aW4gYSBtYWNybywgYnV0CisjICAgeW91IGNhbiB1c2UgaXQgdG8gc2VsZWN0IGRpZmZlcmVudCBw
aWVjZXMgb2YgY29kZSBmb3IgZGlmZmVyZW50CisjICAgcGxhdGZvcm1zLgorIworIyAtIEFyZ3Vt
ZW50cyB0byBtYWNyb3MgZm9sbG93IGxleGljYWwgc2NvcGluZyByYXRoZXIgdGhhbiBkeW5hbWlj
IHNjb3BpbmcuCisjICAgQ29uc3QncyBhbHNvIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgYW5kIG1h
eSBvdmVycmlkZSAoaGlkZSkgYXJndW1lbnRzCisjICAgb3Igb3RoZXIgY29uc3RzLiBBbGwgdmFy
aWFibGVzIChhcmd1bWVudHMgYW5kIGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gb3Bl
cmFuZHMuIEFkZGl0aW9uYWxseSwgYXJndW1lbnRzIChidXQgbm90IGNvbnN0YW50cykgY2FuIGJl
IGJvdW5kCisjICAgdG8gbWFjcm9zLgorCisKKyMgVGhlc2UgZGVjbGFyYXRpb25zIG11c3QgbWF0
Y2ggaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmguCitjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXpl
ID0gNDgKK2NvbnN0IEFyZ3VtZW50Q291bnQgPSAtNDgKK2NvbnN0IENhbGxlckZyYW1lID0gLTQw
Citjb25zdCBDYWxsZWUgPSAtMzIKK2NvbnN0IFNjb3BlQ2hhaW4gPSAtMjQKK2NvbnN0IFJldHVy
blBDID0gLTE2Citjb25zdCBDb2RlQmxvY2sgPSAtOAorCisjIERlY2xhcmUgc29tZSBhbGlhc2Vz
IGZvciB0aGUgcmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAorCisjIE9mZnNl
dHMgbmVlZGVkIGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRpb24uCitpZiBC
SUdfRU5ESUFOCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBheWxvYWRPZmZz
ZXQgPSA0CitlbHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0IFBheWxvYWRP
ZmZzZXQgPSAwCitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCitjb25z
dCBJbnQzMlRhZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51bGxUYWcgPSAt
MworY29uc3QgVW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQorY29uc3QgRW1w
dHlWYWx1ZVRhZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29uc3QgTG93ZXN0
VGFnID0gRGVsZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25zdCBTdHJpbmdU
eXBlID0gNQorY29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFncyBjb25zdGFudHMu
Citjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVtZW50c0hhc0lu
c3RhbmNlID0gMgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDgKKworIyBI
ZWFwIGFsbG9jYXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0lu
ZGV4ID0gMQorCisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3QgRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNvbnN0YW50cy4K
K2NvbnN0IEdsb2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0IEZ1bmN0aW9u
Q29kZSA9IDIKKworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0aGUg
YXJndW1lbnQgY291bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRh
Z09mZnNldAorCisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25zdCBWZWN0b3JT
aXplT2Zmc2V0ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisjIFN0cmluZyBm
bGFncy4KK2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxpdGllcworbWFj
cm8gY3Jhc2goKQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3ZlIDAsIHQwCisg
ICAgY2FsbCB0MAorZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAgaWYgQVNTRVJU
X0VOQUJMRUQKKyAgICAgICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAgY3Jhc2goKQorICAgIC5v
azoKKyAgICBlbmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwo
ZGVzdGluYXRpb25SZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGxyLCBkZXN0
aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBvcCBkZXN0aW5hdGlvblJl
Z2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIHJl
c3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQorICAgIGlmIEFS
TXY3CisgICAgICAgIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAgZWxzaWYgWDg2CisgICAg
ICAgIHB1c2ggc291cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5k
CitlbmQKKworbWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQ
QworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZzZXQpCisg
ICAgbG9hZGkgcGNPZmZzZXQsIHQwCisgICAgbHNoaWZ0aSAyLCB0MAorICAgIGFkZHAgdDAsIFBD
CisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAgbG9h
ZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgIGptcCBbUENdCitlbmQK
KworbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQorICAgIGlmIEFSTXY3CisgICAg
ICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgIGVsc2lmIFg4Ngor
ICAgICAgICBwb2tlIGFyZzIsIDAKKyAgICAgICAgcG9rZSBhcmcxLCAxCisgICAgZWxzZQorICAg
ICAgICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCittYWNybyBjYWxs
SGVscGVyKGhlbHBlcikKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUgdDAs
IFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworbWFjcm8gdHJhY2VFeGVjdXRpb24oKQorICAg
IGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3RyYWNlKQor
ICAgIGVuZAorZW5kCisKKyMgQ2FsbCBhIGhlbHBlciBmb3IgY2FsbCBvcGNvZGVzLgorbWFjcm8g
Y2FsbENhbGxIZWxwZXIoYWR2YW5jZSwgaGVscGVyLCBhY3Rpb24pCisgICAgYWRkcCBhZHZhbmNl
ICogNCwgUEMsIHQwCisgICAgc3RvcmVwIHQwLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nm
cl0KKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUgdDEsIGNmcgorICAgIGFj
dGlvbih0MCkKK2VuZAorCittYWNybyBzbG93UGF0aEZvckNhbGwoYWR2YW5jZSwgaGVscGVyKQor
ICAgIGNhbGxDYWxsSGVscGVyKAorICAgICAgICBhZHZhbmNlLAorICAgICAgICBoZWxwZXIsCisg
ICAgICAgIG1hY3JvIChjYWxsZWUpCisgICAgICAgICAgICBjYWxsIGNhbGxlZQorICAgICAgICAg
ICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tT
d2l0Y2hUb0pJVChpbmNyZW1lbnQsIGFjdGlvbikKKyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICAgICAgYmFkZGlzIGluY3JlbWVudCwgQ29k
ZUJsb2NrOjptX2V4ZWN1dGVDb3VudGVyW3QwXSwgLmRvbmUKKyAgICAgICAgYWN0aW9uKCkKKyAg
ICAuZG9uZToKKyAgICBlbmQKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yUHJvbG9n
dWUoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDUsCisgICAgICAgIG1hY3JvICgp
CisgICAgICAgICAgICBjQ2FsbDIoX2xsaW50X2VudHJ5X29zciwgY2ZyLCBQQykKKyAgICAgICAg
ICAgIG1vdmUgdDEsIGNmcgorICAgICAgICAgICAgam1wIHQwCisgICAgICAgIGVuZCkKK2VuZAor
CittYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgK
KyAgICAgICAgMSwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAgIGNDYWxsMihfbGxpbnRf
bG9vcF9vc3IsIGNmciwgUEMpCisgICAgICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgICAg
IGptcCB0MAorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckVw
aWxvZ3VlKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxMCwKKyAgICAgICAgbWFj
cm8gKCkKKyAgICAgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlcGxhY2UpCisgICAgICAgIGVu
ZCkKK2VuZAorCittYWNybyBhc3NlcnROb3RDb25zdGFudChpbmRleCkKKyAgICBhc3NlcnQobWFj
cm8gKG9rKSBiaWIgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBvayBlbmQpCitl
bmQKKworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3Rl
cnMuIEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpYWVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhd
LCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisg
ICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxv
YWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZm
ZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwg
aGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUg
LSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsb2FkcCBUYWdPZmZzZXRb
cGF5bG9hZCwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQs
IGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBt
YXkgYmUgdGhlIHNhbWUgcmVnaXN0ZXIuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
ZyhpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpYWVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhd
LCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisg
ICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhZwor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9m
ZnNldFt0YWddLCB0YWcKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhl
IGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisg
ICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsc2hpZnRpIDMsIGluZGV4CisgICAgYWRkcCBp
bmRleCwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFt0YWddLCBwYXlsb2FkCisgICAgbG9h
ZHAgVGFnT2Zmc2V0W3RhZ10sIHRhZworLmRvbmU6CitlbmQKKworbWFjcm8gbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBwYXlsb2FkLCBzbG93KQorICAg
IGJpYWVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAg
YmluZXEgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBleHBlY3RlZFRhZywgc2xvdworICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUK
Ky5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRw
IENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXls
b2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUg
aW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAg
ICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGJpbmVxIFRhZ09mZnNldFtwYXlsb2FkLCBpbmRl
eCwgOF0sIGV4cGVjdGVkVGFnLCBzbG93CisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2Fk
LCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKK21hY3JvIHdyaXRlQmFycmllcih0
YWcsIHBheWxvYWQpCisgICAgIyBOb3RoaW5nIHRvIGRvIHNpbmNlIHdlIGRvbid0IGhhdmUgYSBn
ZW5lcmF0aW9uYWwgb3IgaW5jcmVtZW50YWwgY29sbGVjdG9yLgorZW5kCisKKyMgRW50cnlwb2lu
dHMgaW50byB0aGUgaW50ZXJwcmV0ZXIKKworIyBEbyB0aGUgYmFyZSBtaW5pbXVtIHJlcXVpcmVk
IHRvIGV4ZWN1dGUgY29kZS4gU2V0cyB1cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2RlQmxvY2sqCisj
IGluIHQxCittYWNybyBwcm9sb2d1ZShvZmZzZXRPZkNvZGVCbG9jaykKKyAgICBwcmVzZXJ2ZVJl
dHVybkFkZHJlc3NBZnRlckNhbGwodDIpCisgICAgCisgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJh
bWUuCisgICAgc3RvcmVwIHQyLCBSZXR1cm5QQ1tjZnJdCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0s
IHQxCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3QxXSwgdDEKKyAgICBsb2Fk
cCBvZmZzZXRPZkNvZGVCbG9ja1t0MV0sIHQxCisgICAgc3RvcmVwIHQxLCBDb2RlQmxvY2tbY2Zy
XQorICAgIAorICAgICMgU2V0IHVwIHRoZSBQQy4KKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5z
dHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQwor
ZW5kCisKK21hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oKQorICAgICMgUHJvZmlsZSB0aGUg
YXJndW1lbnRzLiBVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIGNob2ljZSBidXQgdG8gZG8gdGhp
cy4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIHQwCisgICAgYnRp
eiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0
MV0sIHQzCisuYXJndW1lbnRQcm9maWxlTG9vcDoKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0
MF0sIHQyCisgICAgc3RvcmVpIHQyLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNl
dFt0M10KKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDBdLCB0MgorICAgIHN0b3JlaSB0
MiwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGFkZHAg
c2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDMKKyAgICBic3ViaW56IDgsIHQwLCAuYXJndW1lbnRQcm9m
aWxlTG9vcAorLmFyZ3VtZW50UHJvZmlsZURvbmU6CisgICAgCisgICAgIyBDaGVjayBzdGFjayBo
ZWlnaHQuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lzdGVyc1t0MV0sIHQw
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MgorICAgIGxvYWRwIEpT
R2xvYmFsRGF0YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MgorICAgIGxzaGlmdGkgMywgdDAKKyAgICBh
ZGRwIHQwLCBjZnIsIHQwCisgICAgYnBhZXEgSW50ZXJwcmV0ZXI6Om1fcmVnaXN0ZXJGaWxlICsg
UmVnaXN0ZXJGaWxlOjptX2VuZFt0Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSworCisgICAgIyBTdGFj
ayBoZWlnaHQgY2hlY2sgZmFpbGVkIC0gbmVlZCB0byBjYWxsIGEgaGVscGVyLgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X3JlZ2lzdGVyX2ZpbGVfY2hlY2spCisuc3RhY2tIZWlnaHRPSzoKK2VuZAor
CittYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBoZWxwZXIpCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwgdDAKKyAgICBiaWVxIHQwLCBDb2Rl
QmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJlbAorICAgIGNhbGxIZWxwZXIoaGVs
cGVyKQorICAgIGptcCBkb25lTGFiZWwKK2VuZAorCitfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToK
KyAgICBwcm9sb2d1ZShQcm9ncmFtRXhlY3V0YWJsZTo6bV9wcm9ncmFtQ29kZUJsb2NrKQorICAg
IGNoZWNrU3dpdGNoVG9KSVRGb3JQcm9sb2d1ZSgpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxp
bnRfZXZhbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShFdmFsRXhlY3V0YWJsZTo6bV9ldmFsQ29k
ZUJsb2NrKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JQcm9sb2d1ZSgpCisgICAgZGlzcGF0Y2go
MCkKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUo
RnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGwpCisuZnVuY3Rpb25Gb3JDYWxs
QmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJ
VEZvclByb2xvZ3VlKCkKKyAgICBkaXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShGdW5jdGlvbkV4ZWN1dGFibGU6
Om1fY29kZUJsb2NrRm9yQ29uc3RydWN0KQorLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46Cisg
ICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvclByb2xv
Z3VlKCkKKyAgICBkaXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxf
YXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUoRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9j
a0ZvckNhbGwpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwg
X2xsaW50X2hlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUoRnVuY3Rpb25FeGVjdXRhYmxlOjpt
X2NvZGVCbG9ja0ZvckNhbGwpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNv
bnN0cnVjdEJlZ2luLCBfbGxpbnRfaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQorCisjIElu
c3RydWN0aW9uIGltcGxlbWVudGF0aW9ucworCitfbGxpbnRfb3BfZW50ZXI6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRpIENvZGVC
bG9jazo6bV9udW1WYXJzLCB0MgorICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZQorICAgIG1vdmUg
VW5kZWZpbmVkVGFnLCB0MAorICAgIG1vdmUgMCwgdDEKKy5vcEVudGVyTG9vcDoKKyAgICBzdWJp
IDEsIHQyCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkg
dDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBidGlueiB0MiwgLm9wRW50ZXJMb29w
Cisub3BFbnRlckRvbmU6CisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfY3JlYXRlX2Fj
dGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0
aXZhdGlvbkRvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FjdGl2YXRp
b24pCisub3BDcmVhdGVBY3RpdmF0aW9uRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9pbml0X2xhenlfcmVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisg
ICAgc3RvcmVpIDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF9jcmVhdGVfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5
VmFsdWVUYWcsIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKKy5vcENyZWF0ZUFyZ3VtZW50c0RvbmU6CisgICAgZGlz
cGF0Y2goMikKKworCittYWNybyBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kZXgs
IGNsYXNzSW5mb09mZnNldCwgb2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UsIHN0cnVjdHVyZSwgcmVz
dWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNsb3dDYXNlKQorICAgIGNvbnN0IG9mZnNldE9mTXlT
aXplQ2xhc3MgPSBKU0dsb2JhbERhdGE6OmhlYXAgKyBIZWFwOjptX29iamVjdFNwYWNlICsgQWxs
b2NhdGlvblNwYWNlOjptX21hcmtlZFNwYWNlICsgTWFya2VkU3BhY2U6Om1fcHJlY2lzZVNpemVD
bGFzc2VzICsgc2l6ZUNsYXNzSW5kZXggKiBzaXplb2YgTWFya2VkU3BhY2U6OlNpemVDbGFzcwor
ICAgIAorICAgICMgRklYTUU6IHdlIGNhbiBnZXQgdGhlIGdsb2JhbCBkYXRhIGluIG9uZSBsb2Fk
IGZyb20gdGhlIHN0YWNrLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoMQorICAg
IGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAK
KyAgICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4gICAgCisgICAgbG9hZHAg
b2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNl
bGxbc2NyYXRjaDFdLCByZXN1bHQKKyAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UKKyAgICAKKyAg
ICAjIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAgICBsb2FkcCBbcmVz
dWx0XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDEsIG9mZnNldE9mTXlTaXplQ2xhc3Mg
KyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXQorCisgICAg
IyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgbG9hZHAgY2xhc3NJbmZvT2Zmc2V0W3NjcmF0
Y2gxXSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCisgICAgc3RvcmVw
IHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCisgICAgc3RvcmVwIDAsIEpT
T2JqZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0KKyAgICBhZGRwIHNpemVvZiBKU09iamVjdCwg
cmVzdWx0LCBzY3JhdGNoMQorICAgIHN0b3JlcCBzY3JhdGNoMSwgb2Zmc2V0T2ZQcm9wZXJ0eVN0
b3JhZ2VbcmVzdWx0XQorZW5kCisKK19sbGludF9vcF9jcmVhdGVfdGhpczoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDAp
CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDcmVhdGVUaGlz
U2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBPYmplY3RUeXBlLCAub3BDcmVhdGVUaGlzU2xvdwor
ICAgIGxvYWRwIEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3QwXSwgdDIKKyAgICBidHB6IHQyLCAu
b3BDcmVhdGVUaGlzU2xvdworICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0
U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywgSlNG
aW5hbE9iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2UsIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVU
aGlzU2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhd
CisgICAgZGlzcGF0Y2goMykKKworLm9wQ3JlYXRlVGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2NyZWF0ZV90aGlzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X2dldF9jYWxsZWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGxvYWRwIFBheWxvYWRPZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2Vs
bFRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY29udmVydF90aGlz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQwCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRj
aCgyKQorCisub3BDb252ZXJ0VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2NvbnZlcnRfdGhpcykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfb2JqZWN0
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0ds
b2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQxCisgICAgYWxsb2NhdGVC
YXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpq
c0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCBKU0ZpbmFsT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZSwg
dDEsIHQwLCB0MiwgdDMsIC5vcE5ld09iamVjdFNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisg
ICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwg
UGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcE5ld09iamVj
dFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19vYmplY3QpCisgICAgZGlz
cGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X2FycmF5OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2FycmF5KQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX25ld19hcnJheV9idWZmZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX25ld19yZWdleHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfcmVnZXhwKQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX21vdjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MSwgdDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3Bfbm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2Fk
aSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDMKKyAgICBiaW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90U2xvdworICAgIHhv
cmkgMSwgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3Jl
aSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5v
dFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJb
UENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDIsIHQzLCB0MSkKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDAKKyAgICBiaW5lcSB0MiwgdDMsIC5vcEVxU2xvdworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5v
cEVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cKKyAgICBsb2FkaSA0W1BD
XSwgdDIKKyAgICBjaWVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zm
c2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgZGlzcGF0Y2goNCkKKworLm9wRXFTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9lcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9lcV9udWxsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMK
KyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5l
cSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQxCisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5m
bzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5vcEVx
TnVsbE5vdEltbWVkaWF0ZQorLm9wRXFOdWxsSW1tZWRpYXRlOgorICAgIGNpZXEgdDEsIE51bGxU
YWcsIHQyCisgICAgY2llcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIG9yaSB0MiwgdDEKKy5v
cEVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxv
YWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQyLCB0MywgLm9wTmVxU2xvdworICAgIGJpZXEgdDIs
IENlbGxUYWcsIC5vcE5lcVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wTmVxU2xvdwor
ICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpbmVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9v
bGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wTmVxU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfbmVxKQorICAgIGRpc3BhdGNoKDQpCisgICAgCisKK19sbGlu
dF9vcF9uZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQw
CisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9h
ZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcE5lcU51bGxJbW1lZGlhdGUK
KyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0YnogU3RydWN0dXJl
OjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkLCB0MQorICAgIGptcCAub3BOZXFOdWxsTm90SW1tZWRpYXRlCisub3BOZXFOdWxsSW1tZWRp
YXRlOgorICAgIGNpbmVxIHQxLCBOdWxsVGFnLCB0MgorICAgIGNpbmVxIHQxLCBVbmRlZmluZWRU
YWcsIHQxCisgICAgYW5kaSB0MiwgdDEKKy5vcE5lcU51bGxOb3RJbW1lZGlhdGU6CisgICAgc3Rv
cmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5
bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gc3RyaWN0
RXEoZXF1YWxpdHlPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQor
ICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVx
IHQyLCB0MywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0
MiwgQ2VsbFRhZywgLm5vdFN0cmluZworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MworICAgIGJibmVxIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAu
bm90U3RyaW5nCisgICAgYmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90
eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cKKy5ub3RTdHJpbmc6CisgICAgbG9hZGkgNFtQQ10s
IHQyCisgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVh
blRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlciho
ZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0
KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVscGVyX3N0cmljdGVxKQor
CisKK19sbGludF9vcF9uc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmlj
dEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0
IGVuZCwgX2xsaW50X2hlbHBlcl9uc3RyaWN0ZXEpCisKKworX2xsaW50X29wX2xlc3M6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3NlcSkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9ncmVhdGVyZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2lu
YzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJ
bmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlz
cGF0Y2goMikKKworLm9wUHJlSW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cHJlX2luYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wcmVfZGVjOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVEZWNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBic3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAg
ICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQor
Cisub3BQcmVEZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfZGVjKQor
ICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Bvc3RfaW5jOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5l
cSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0SW5jU2xvdworICAgIGJp
ZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNT
bG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5v
cFBvc3RJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2luYykKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9wb3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVx
IHQwLCB0MSwgLm9wUG9zdERlY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xv
dworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVp
IHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCisub3BQb3N0RGVjRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQ
b3N0RGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9kZWMpCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdG9fanNudW1iZXI6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGFzc2Vy
dE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MworICAgIGJpZXEgdDIsIEludDMy
VGFnLCAub3BUb0pzbnVtYmVySXNJbnQKKyAgICBiaWFlcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9w
VG9Kc251bWJlclNsb3cKKy5vcFRvSnNudW1iZXJJc0ludDoKKyAgICBzdG9yZWkgdDIsIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4
XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvSnNudW1iZXJTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl90b19qc251bWJlcikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9uZWdhdGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MgorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CisgICAg
YnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdworICAgIG5lZ2kgdDIKKyAgICBzdG9y
ZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisub3BOZWdhdGVTcmNOb3RJbnQ6
CisgICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKKyAgICB4b3JpIDB4ODAwMDAw
MDAsIHQxCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkg
dDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOZWdh
dGVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZWdhdGUpCisgICAgZGlzcGF0
Y2goMykKKworCittYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKGludGVnZXJPcGVyYXRpb25BbmRT
dG9yZSwgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAg
IGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkK
KyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5l
cSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5vcDJO
b3RJbnQKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUo
dDMsIHQxLCB0MCwgLnNsb3csIHQyKQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6Cisg
ICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90IGFuIGludCwgdGhlIHNlY29uZCBv
cGVyYW5kIGNvdWxkIGJlIGFueXRoaW5nLgorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xvdwor
ICAgIGJpYiB0MywgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisgICAgYmluZXEgdDMs
IEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDEsIGZ0MQorICAgIGptcCAub3AxTm90SW50UmVh
ZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDEsIHQzLCBmdDEKKy5vcDFOb3RJ
bnRSZWFkeToKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBmaWkyZCB0MCwgdDIsIGZ0MAorICAg
IGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MSwgOF0K
KyAgICBkaXNwYXRjaCg0KQorCisub3AyTm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBk
ZWZpbml0ZWx5IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90Lgor
ICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGJpYSB0MywgTG93ZXN0VGFnLCAuc2xvdworICAgIGNp
MmQgdDAsIGZ0MAorICAgIGZpaTJkIHQxLCB0MywgZnQxCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0
MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisK
Ky5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKwor
bWFjcm8gYmluYXJ5T3AoaW50ZWdlck9wZXJhdGlvbiwgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIp
CisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0
LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKGxlZnQs
IHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2Zy
LCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIs
IGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVy
KQorZW5kCisKK19sbGludF9vcF9hZGQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFy
eU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJhZGRpbyBsZWZ0LCByaWdo
dCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgYWRkZCBsZWZ0LCByaWdo
dCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYWRkKQorCisKK19sbGludF9vcF9tdWw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHNsb3cpIGJtdWxpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfbXVsKQorCisKK19sbGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJp
bmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCBy
aWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCBy
aWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfc3ViKQorCisKK19sbGludF9vcF9kaXY6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAg
IG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAg
Y2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQorICAgICAgICAgICAg
ZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdEludAorICAg
ICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAg
ICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAg
ICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6CisgICAgICAgICAgICBzdG9yZWQgZnQx
LCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCwKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9kaXYpCisKKworX2xsaW50X29wX21vZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK21h
Y3JvIGJpdE9wKG9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBs
b2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisg
ICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEg
dDMsIEludDMyVGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xvdykKKyAgICBzdG9yZWkg
dDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVs
cGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50X29wX2xzaGlmdDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xv
dykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbHNoaWZ0
KQorCisKK19sbGludF9vcF9yc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9w
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkgbGVmdCwgcmlnaHQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3JzaGlmdCkKKworCitfbGxpbnRfb3BfdXJzaGlm
dDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0CisgICAgICAg
ICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAgIGVuZCwKKyAgICAgICAgX2xsaW50X2hl
bHBlcl91cnNoaWZ0KQorCisKK19sbGludF9vcF9iaXRhbmQ6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGFuZGkgbGVm
dCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdGFuZCkKKworCitfbGxpbnRf
b3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9iaXR4b3IpCisKKworX2xsaW50X29wX2JpdG9yOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBvcmkg
bGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdG9yKQorCisKK19sbGlu
dF9vcF9iaXRub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQxKQorICAgIGxvYWRp
IFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdLCB0MworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wQml0bm90U2xvdworICAgIG5v
dGkgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0
MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcEJpdG5v
dFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2JpdG5vdCkKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAg
IGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ2hlY2tIYXNJbnN0YW5j
ZVNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENo
ZWNrSGFzSW5zdGFuY2VTbG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ2hlY2tIYXNJbnN0YW5j
ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkK
KyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbnN0YW5jZW9mOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICAjIENoZWNrIHRoYXQgYmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBkZWZhdWx0
IEhhc0luc3RhbmNlIGJlaGF2aW9yLgorICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlcHJl
Y2F0ZWQuCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBU
eXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIC5vcElu
c3RhbmNlb2ZTbG93CisgICAgCisgICAgIyBBY3R1YWxseSBkbyB0aGUgd29yay4KKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQzCisg
ICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDEpCisgICAg
YmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BJbnN0YW5jZW9mU2xvdwor
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgQ2VsbFRhZywgLm9wSW5zdGFuY2VvZlNs
b3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MQorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIAorICAgICMgUmVnaXN0
ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCisgICAgbW92ZSAxLCB0MAorLm9w
SW5zdGFuY2VvZkxvb3A6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCisg
ICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXQsIHQyCisgICAg
YnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRpbnogdDIsIC5vcEluc3RhbmNl
b2ZMb29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9mRG9uZToKKyAgICBzdG9yZWkg
Qm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wSW5zdGFuY2VvZlNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luc3RhbmNlb2YpCisgICAgZGlzcGF0Y2go
NSkKKworCitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19u
dW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9pc19udW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfc3RyaW5nOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfc3Ry
aW5nKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX29iamVjdDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX29iamVjdCkKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19mdW5jdGlvbjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Z1bmN0aW9uKQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX2luOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9z
a2lwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cmVzb2x2ZV9za2lwKQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gcmVzb2x2ZUdsb2JhbChz
bG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3Rp
bmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgUHJvcGVydHkgaWRlbnRpZmllciBp
bmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAjIDEyW1BDXSAgU3RydWN0dXJlIHBvaW50ZXIs
IGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgICMgMTZbUENdICBP
ZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5l
cmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQwCisgICAgYnBuZXEgdDAsIDEyW1BDXSwgc2xvdworICAgIGxvYWRpIDE2W1BDXSwgdDEK
KyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAorICAgIGxvYWRp
IFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQx
LCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorZW5k
CisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
cmVzb2x2ZUdsb2JhbCgub3BSZXNvbHZlR2xvYmFsU2xvdykKKyAgICBkaXNwYXRjaCg1KQorCisu
b3BSZXNvbHZlR2xvYmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2
ZV9nbG9iYWwpCisgICAgZGlzcGF0Y2goNSkKKworCisjIEdpdmVzIHlvdSB0aGUgc2NvcGUgaW4g
dDAsIHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25hbGx5IHBlcmZvcm0gYWRkaXRpb25hbCBj
aGVja3Mgb24gdGhlCisjIHNjb3BlcyBhcyB0aGV5IGFyZSB0cmF2ZXJzZWQuIHNjb3BlQ2hlY2so
KSBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgcmVnaXN0ZXIKKyMgaG9sZGluZyB0
aGUgc2NvcGUsIGFuZCBhIHJlZ2lzdGVyIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHNjcmF0Y2guIE5v
dGUgdGhhdCB0aGlzIGRvZXMgbm90CisjIHVzZSB0Mywgc28geW91IGNhbiBob2xkIHN0dWZmIGlu
IHQzIGlmIG5lZWQgYmUuCittYWNybyBnZXRTY29wZShkZUJydWlqaW5JbmRleE9wZXJhbmQsIHNj
b3BlQ2hlY2spCisgICAgbG9hZHAgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDAK
KyAgICBsb2FkaSBkZUJydWlqaW5JbmRleE9wZXJhbmQsIHQyCisgICAgCisgICAgYnRpeiB0Miwg
LmRvbmUKKyAgICAKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBiaW5lcSBDb2Rl
QmxvY2s6Om1fY29kZVR5cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5sb29wCisgICAgYnRieiBDb2Rl
QmxvY2s6Om1fbmVlZHNGdWxsU2NvcGVDaGFpblt0MV0sIC5sb29wCisgICAgCisgICAgbG9hZGkg
Q29kZUJsb2NrOjptX2FjdGl2YXRpb25SZWdpc3Rlclt0MV0sIHQxCisKKyAgICAjIE5lZWQgdG8g
Y29uZGl0aW9uYWxseSBza2lwIG92ZXIgb25lIHNjb3BlLgorICAgIGJpZXEgVGFnT2Zmc2V0W2Nm
ciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAubm9BY3RpdmF0aW9uCisgICAgc2NvcGVDaGVjayh0
MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MAorLm5vQWN0aXZh
dGlvbjoKKyAgICBzdWJpIDEsIHQyCisgICAgCisgICAgYnRpeiB0MiwgLmRvbmUKKy5sb29wOgor
ICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3Qw
XSwgdDAKKyAgICBzdWJpIDEsIHQyCisgICAgYnRpbnogdDIsIC5sb29wCisKKy5kb25lOgorZW5k
CisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2Fk
cCBKU0dsb2JhbERhdGE6OmFjdGl2YXRpb25TdHJ1Y3R1cmVbdDNdLCB0MworICAgIGdldFNjb3Bl
KAorICAgICAgICAyMFtQQ10sCisgICAgICAgIG1hY3JvIChzY29wZSwgc2NyYXRjaCkKKyAgICAg
ICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3Rbc2NvcGVdLCBzY3JhdGNoCisgICAg
ICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3NjcmF0Y2hdLCB0MywgLm9wUmVzb2x2
ZUdsb2JhbER5bmFtaWNTdXBlclNsb3cKKyAgICAgICAgZW5kKQorICAgIHJlc29sdmVHbG9iYWwo
Lm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93KQorICAgIGRpc3BhdGNoKDYpCisKKy5vcFJlc29s
dmVHbG9iYWxEeW5hbWljU3VwZXJTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9y
ZXNvbHZlKQorICAgIGRpc3BhdGNoKDYpCisKKy5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCisgICAgZGlzcGF0
Y2goNikKKworCitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0
aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgSW5kZXggb2YgcmVnaXN0ZXIgaW4gdGhl
IHNjb3BlLgorICAgICMgMTJbUENdICBEZSBCcnVpamluIGluZGV4LgorICAgIGdldFNjb3BlKDEy
W1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgNFtQQ10sIHQxCisg
ICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0s
IHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAg
IGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
dDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX3B1dF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBn
ZXRTY29wZSg4W1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgMTJb
UENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDEsIHQzLCB0MikKKyAgICB3cml0ZUJhcnJpZXIodDMsIHQyKQorICAgIGxvYWRwIFNjb3BlQ2hh
aW5Ob2RlOjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVn
aXN0ZXJzW3QwXSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFt0MCwgdDIsIDhdCisgICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAg
bG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0s
IHQxCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9wdXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQxCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNH
bG9iYWxPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2Zy
LCB0MywgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKKyAg
ICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W3QwLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfYmFzZSkKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0
cykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfYmFzZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVf
d2l0aF9iYXNlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF90
aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cmVzb2x2ZV93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5
X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMg
Z2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisgICAg
IyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBh
bnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJl
c3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKKyAgICAjIHRv
IHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBw
YXRoLCB3aGljaCBpcyB3aGF0CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5
LgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQor
ICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3Jh
Z2VbdDNdLCB0MAorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0
QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQy
XSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAgc3RvcmVpIHQz
LCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBkaXNwYXRjaCg4KQorCisub3BHZXRCeUlkU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X2lkKQorICAgIGRpc3BhdGNoKDgpCisKKworX2xsaW50
X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50c0xlbmd0aFNsb3cKKyAgICBs
b2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MgorICAgIHN1YmkgMSwg
dDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdl
dEFyZ3VtZW50c0xlbmd0aFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9h
cmd1bWVudHNfbGVuZ3RoKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9p
ZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkg
MTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFn
LCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDAKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVy
dHlTdG9yYWdlW3QwXSwgdDMKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEs
IC5vcFB1dEJ5SWRTbG93CisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRpIFRhZ09mZnNl
dFtjZnIsIHQyLCA4XSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0
MgorICAgIHdyaXRlQmFycmllcih0MCwgdDIpCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbdDMs
IHQxXQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MywgdDFdCisgICAgZGlzcGF0Y2go
OCkKKworLm9wUHV0QnlJZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9i
eV9pZCkKKyAgICBkaXNwYXRjaCg4KQorCisKK21hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0
aW9uYWxDaGVja3MpCisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0Mwor
ICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGJwbmVxIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRpdGlvbmFsQ2hlY2tz
KHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRw
IEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYWRkcCB0MSwgdDMKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQyLCA4XSwgdDIKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQyKQorICAgIHN0b3JlaSB0
MSwgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIDI0W1BDXSwgdDEKKyAgICBzdG9yZWkgdDIsIFBh
eWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQor
ICAgIGRpc3BhdGNoKDgpCitlbmQKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdDoKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNo
LCBzbG93KSBlbmQpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoK
KyAgICBwdXRCeUlkVHJhbnNpdGlvbigKKyAgICAgICAgbWFjcm8gKG9sZFN0cnVjdHVyZSwgc2Ny
YXRjaCwgc2xvdykKKyAgICAgICAgICAgIGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAg
ICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KKyAgICAg
ICAgCisgICAgICAgICAgICBsb2FkcCAyOFtQQ10sIHNjcmF0Y2gKKyAgICAgICAgICAgIGxvYWRw
IFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvciArIFZlY3RvckJ1ZmZlck9mZnNldFtzY3JhdGNoXSwg
c2NyYXRjaAorICAgICAgICAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zm
c2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25lCisgICAgICAgIC5sb29wOgorICAgICAg
ICAgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3Ry
dWN0dXJlXSwgcHJvdG9DZWxsCisgICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQorICAgICAgICAgICAgYnBuZXEgb2xkU3RydWN0dXJl
LCBbc2NyYXRjaF0sIHNsb3cKKyAgICAgICAgICAgIGFkZHAgNCwgc2NyYXRjaAorICAgICAgICAg
ICAgYmluZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVd
LCBOdWxsVGFnLCAubG9vcAorICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kKQorCisKK19sbGlu
dF9vcF9kZWxfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9kZWxfYnlfaWQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0
X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRw
IENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZCh0MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBsb2FkcCBK
U0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDFdLCB0MgorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBi
cG5lcSBbdDBdLCB0MiwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9y
YWdlW3QwXSwgdDMKKyAgICBiaWFlcSB0MSwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDBdLCAu
b3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBBcnJheVN0b3Jh
Z2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgQXJyYXlT
dG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKyAgICBiaWVx
IHQyLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRCeVZhbFNsb3cKKyAgICBzdG9yZWkgdDIsIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfZ2V0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9n
ZXRfYXJndW1lbnRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEludDMyVGFnLCB0MiwgLm9wR2V0QXJndW1lbnRCeVZh
bFNsb3cpCisgICAgYWRkaSAxLCB0MgorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2Fk
T2Zmc2V0W2Nmcl0sIHQxCisgICAgYmlhZXEgdDIsIHQxLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xv
dworICAgIG5lZ2kgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0sIHQwCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEK
KyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5
bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEFyZ3VtZW50
QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRfYnlf
dmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV9wbmFtZToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAg
bG9hZGkgMTZbUENdLCB0MAorICAgIGJwbmVxIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisg
ICAgbG9hZGkgMjBbUENdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAs
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQ
bmFtZVNsb3cKKyAgICBsb2FkaSAyNFtQQ10sIHQwCisgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0
MAorICAgIHN1YmkgMSwgdDAKKyAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6
bV9udW1DYWNoZWFibGVTbG90c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZHAgSlNP
YmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDIs
IHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg3KQor
Cisub3BHZXRCeVBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5
X3BuYW1lKQorICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX3B1dF9ieV92YWw6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBJbnQz
MlRhZywgdDIsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MF0sIHQwCisgICAgbG9hZHAgSlNH
bG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QwXSwgdDAKKyAgICBicG5lcSBbdDFdLCB0MCwg
Lm9wUHV0QnlWYWxTbG93CisgICAgYmlhZXEgdDIsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3Qx
XSwgLm9wUHV0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QxXSwgdDAK
KyAgICBiaWVxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwg
RW1wdHlWYWx1ZVRhZywgLm9wUHV0QnlWYWxFbXB0eQorLm9wUHV0QnlWYWxTdG9yZVJlc3VsdDoK
KyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDMpCisgICAgbG9h
ZGkgVGFnT2Zmc2V0W2NmciwgdDMsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MywgOF0sIHQzCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MykKKyAgICBzdG9yZWkgdDEsIEFy
cmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0b3JlaSB0
MywgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XQorICAg
IGRpc3BhdGNoKDQpCisKKy5vcFB1dEJ5VmFsRW1wdHk6CisgICAgYWRkaSAxLCBBcnJheVN0b3Jh
Z2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCisgICAgYmliIHQyLCBBcnJheVN0b3JhZ2U6Om1f
bGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorICAgIGFkZGkgMSwgdDIsIHQxCisg
ICAgc3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXQorICAgIGptcCAub3BQdXRC
eVZhbFN0b3JlUmVzdWx0CisKKy5vcFB1dEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcHV0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9kZWxf
YnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfZGVsX2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaW5k
ZXg6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9w
dXRfYnlfaW5kZXgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dldHRlcjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9n
ZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X3NldHRlcjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9zZXR0ZXIp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbG9vcDoKKyAgICBub3AKK19sbGludF9v
cF9qbXA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRpc3BhdGNoQnJhbmNoKDRbUENdKQor
CisKK19sbGludF9vcF9qbXBfc2NvcGVzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfam1wX3Njb3BlcykKKyAgICBkaXNwYXRjaCgwKQorCisKK21h
Y3JvIGp1bXBUcnVlT3JGYWxzZShjb25kaXRpb25PcCwgc2xvdykKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBiaWIgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBCb29sZWFuVGFnLCAuc2xvdworICAg
IGNvbmRpdGlvbk9wKFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIC50YXJnZXQpCisgICAgZGlz
cGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLnNsb3c6
CisgICAgc3ViaSAzICogNCwgUEMKKyAgICBjYWxsSGVscGVyKHNsb3cpCisgICAgZGlzcGF0Y2go
MCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl90cnVlOgorICAgIG5vcAorX2xsaW50X29wX2p0
cnVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAg
IG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9qdHJ1ZSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKKyAgICBu
b3AKK19sbGludF9vcF9qZmFsc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVl
T3JGYWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIHRhcmdl
dCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamZhbHNlKQorCisKK21hY3JvIGVxdWFsTnVs
bChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxIYW5kbGVyKFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKKyAgICBk
aXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuaW1t
ZWRpYXRlOgorICAgIG9yaSAxLCB0MQorICAgIGltbWVkaWF0ZUhhbmRsZXIodDEsIC50YXJnZXQp
CisgICAgZGlzcGF0Y2goMykKK2VuZAorCitfbGxpbnRfb3BfamVxX251bGw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQp
IGJ0Ym56IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAg
ICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmllcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkK
KyAgICAKKworX2xsaW50X29wX2puZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
ZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRieiB2YWx1ZSwgTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0
YXJnZXQpIGJpbmVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorCisKK19sbGludF9vcF9q
bmVxX3B0cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
bG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFn
LCAub3BKbmVxUHRyQnJhbmNoCisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MSwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCisub3BKbmVxUHRyQnJhbmNoOgorICAgIGRpc3BhdGNo
QnJhbmNoKDEyW1BDXSkKKy5vcEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaCg0KQor
CisKK21hY3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUsIGhlbHBlcikK
KyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWco
dDMsIHQyLCB0MykKKyAgICBiaW5lcSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5l
cSB0MiwgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5q
dW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgYmlhIHQwLCBM
b3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3Vi
bGUKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MywgZnQxCisgICAg
am1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0Mywg
dDIsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGZpaTJkIHQxLCB0MCwgZnQwCisgICAgZG91
YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9w
Mk5vdEludDoKKyAgICBjaTJkIHQxLCBmdDAKKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cK
KyAgICBmaWkyZCB0MywgdDIsIGZ0MQorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1w
VGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5qdW1wVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJh
bmNoKDEyW1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0
Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzOgorICAgIG5vcAorX2xsaW50X29w
X2psZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHQgbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3MpCisKKworX2xsaW50X29wX2pubGVz
czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzcykKKworCitfbGxpbnRfb3BfbG9v
cF9pZl9ncmVhdGVyOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJkZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfamdyZWF0ZXIpCisKKworX2xsaW50X29wX2puZ3JlYXRlcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJkbHRlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcikKKworCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzZXE6
CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0
LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJkbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9q
bGVzc2VxKQorCisKK19sbGludF9vcF9qbmxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiZGd0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
am5sZXNzZXEpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcmVxOgorICAgIG5vcAorX2xs
aW50X29wX2pncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRh
cmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXEgbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXJlcSkK
KworCitfbGxpbnRfb3Bfam5ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNv
bXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJp
Z2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRs
dHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3Jl
YXRlcmVxKQorCisKK19sbGludF9vcF9sb29wX2hpbnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGlu
dF9vcF9zd2l0Y2hfaW1tOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10s
IHQwCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9pbW1l
ZGlhdGVTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyLCB0MywgNF0sIHQy
CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwg
SW50MzJUYWcsIC5vcFN3aXRjaEltbU5vdEludAorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjpt
aW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMg
KyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNw
YXRjaEJyYW5jaChTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJP
ZmZzZXRbdDIsIHQwLCA0XSkKKworLm9wU3dpdGNoSW1tTm90SW50OgorICAgIGJpYiB0MSwgTG93
ZXN0VGFnLCAub3BTd2l0Y2hJbW1TbG93ICAjIEdvIHRvIHNsb3cgcGF0aCBpZiBpdCdzIGEgZG91
YmxlLgorLm9wU3dpdGNoSW1tRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10p
CisKKy5vcFN3aXRjaEltbVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRj
aF9pbW0pCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
cmFyZURhdGFbdDJdLCB0MgorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXMg
KyBWZWN0b3JCdWZmZXJPZmZzZXRbdDIsIHQzLCA0XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFy
RmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBi
Ym5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgU3RyaW5n
VHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFs
dWVbdDBdLCB0MAorICAgIGJpbmVxIFN0cmluZ0ltcGw6Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dp
dGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU3RyaW5nSW1wbDo6bV9kYXRhOFt0MF0sIHQx
CisgICAgYnRpbnogU3RyaW5nSW1wbDo6bV9oYXNoQW5kRmxhZ3NbdDBdLCBIYXNoRmxhZ3M4Qml0
QnVmZmVyLCAub3BTd2l0Y2hDaGFyOEJpdAorICAgIGxvYWRoIFt0MV0sIHQwCisgICAgam1wIC5v
cFN3aXRjaENoYXJSZWFkeQorLm9wU3dpdGNoQ2hhcjhCaXQ6CisgICAgbG9hZGIgW3QxXSwgdDAK
Ky5vcFN3aXRjaENoYXJSZWFkeToKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwg
dDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9y
U2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJh
bmNoKFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0
MiwgdDAsIDRdKQorCisub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFu
Y2goOFtQQ10pCisKKworX2xsaW50X29wX3N3aXRjaF9zdHJpbmc6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfc3RyaW5nKQorICAgIGRp
c3BhdGNoKDApCisKKworX2xsaW50X29wX25ld19mdW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBF
bXB0eVZhbHVlVGFnLCAub3BOZXdGdW5jRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9uZXdfZnVuYykKKy5vcE5ld0Z1bmNEb25lOgorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX25ld19mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX25ld19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGRv
Q2FsbChoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQor
ICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgQ2VsbFRhZywgLm9wQ2FsbFNsb3cKKyAgICBiaW5lcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MSwgLm9wQ2FsbFNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQ
Q10sIHQzCisgICAgYWRkcCAyNCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgYWRkcCBjZnIs
IHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgc3RvcmVpIHQyLCBB
cmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBsb2FkcCAyMCAtIDI0W1BDXSwg
dDIKKyAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIGxv
YWRwIEpTRnVuY3Rpb246Om1fc2NvcGVDaGFpblt0MV0sIHQwCisgICAgc3RvcmVwIGNmciwgQ2Fs
bGVyRnJhbWVbdDNdCisgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10K
KyAgICBzdG9yZWkgdDEsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIENl
bGxUYWcsIFNjb3BlQ2hhaW4gKyBUYWdPZmZzZXRbdDNdCisgICAgc3RvcmVpIHQwLCBTY29wZUNo
YWluICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBjYWxsIHQyCisgICAgZGlzcGF0Y2hBZnRlckNh
bGwoKQorCisub3BDYWxsU2xvdzoKKyAgICBzbG93UGF0aEZvckNhbGwoNiwgaGVscGVyKQorZW5k
CisKK19sbGludF9vcF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xs
aW50X2hlbHBlcl9jYWxsKQorCisKK19sbGludF9vcF9jb25zdHJ1Y3Q6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRfaGVscGVyX2NvbnN0cnVjdCkKKworCitfbGxpbnRf
b3BfY2FsbF92YXJhcmdzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzbG93UGF0aEZvckNh
bGwoNiwgX2xsaW50X2hlbHBlcl9jYWxsX3ZhcmFyZ3MpCisKKworX2xsaW50X29wX2NhbGxfZXZh
bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgCisgICAgIyBFdmFsIGlzIGV4ZWN1dGVkIGlu
IG9uZSBvZiB0d28gbW9kZXM6CisgICAgIworICAgICMgMSkgV2UgZmluZCB0aGF0IHdlJ3JlIHJl
YWxseSBpbnZva2luZyBldmFsKCkgaW4gd2hpY2ggY2FzZSB0aGUKKyAgICAjICAgIGV4ZWN1dGlv
biBpcyBwZXJmb21lZCBlbnRpcmVseSBpbnNpZGUgdGhlIGhlbHBlciwgYW5kIGl0CisgICAgIyAg
ICByZXR1cm5zIHRoZSBQQyBvZiBhIGZ1bmN0aW9uIHRoYXQganVzdCByZXR1cm5zIHRoZSByZXR1
cm4gdmFsdWUKKyAgICAjICAgIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAgIworICAgICMg
MikgV2UgZmluZCB0aGF0IHdlJ3JlIGludm9raW5nIHNvbWV0aGluZyBjYWxsZWQgZXZhbCgpIHRo
YXQgaXMgbm90CisgICAgIyAgICB0aGUgcmVhbCBldmFsLiBUaGVuIHRoZSBoZWxwZXIgcmV0dXJu
cyB0aGUgUEMgb2YgdGhlIHRoaW5nIHRvCisgICAgIyAgICBjYWxsLCBhbmQgd2UgY2FsbCBpdC4K
KyAgICAjCisgICAgIyBUaGlzIGFsbG93cyB1cyB0byBoYW5kbGUgdHdvIGNhc2VzLCB3aGljaCB3
b3VsZCByZXF1aXJlIGEgdG90YWwgb2YKKyAgICAjIHVwIHRvIGZvdXIgcGllY2VzIG9mIHN0YXRl
IHRoYXQgY2Fubm90IGJlIGVhc2lseSBwYWNrZWQgaW50byB0d28KKyAgICAjIHJlZ2lzdGVycyAo
QyBmdW5jdGlvbnMgY2FuIHJldHVybiB1cCB0byB0d28gcmVnaXN0ZXJzLCBlYXNpbHkpOgorICAg
ICMKKyAgICAjIC0gVGhlIGNhbGwgZnJhbWUgcmVnaXN0ZXIuIFRoaXMgbWF5IG9yIG1heSBub3Qg
aGF2ZSBiZWVuIG1vZGlmaWVkCisgICAgIyAgIGJ5IHRoZSBoZWxwZXIsIGJ1dCB0aGUgY29udmVu
dGlvbiBpcyB0aGF0IGl0IHJldHVybnMgaXQuIEl0J3Mgbm90CisgICAgIyAgIHRvdGFsbHkgY2xl
YXIgaWYgdGhhdCdzIG5lY2Vzc2FyeSwgc2luY2UgdGhlIGNmciBpcyBjYWxsZWUgc2F2ZS4KKyAg
ICAjICAgQnV0IHRoYXQncyBvdXIgc3R5bGUgaW4gdGhpcyBoZXJlIGludGVycHJldGVyIHNvIHdl
IHN0aWNrIHdpdGggaXQuCisgICAgIworICAgICMgLSBBIGJpdCB0byBzYXkgaWYgdGhlIGhlbHBl
ciBzdWNjZXNzZnVsbHkgZXhlY3V0ZWQgdGhlIGV2YWwgYW5kIGhhcworICAgICMgICB0aGUgcmV0
dXJuIHZhbHVlLCBvciBkaWQgbm90IGV4ZWN1dGUgdGhlIGV2YWwgYnV0IGhhcyBhIFBDIGZvciB1
cworICAgICMgICB0byBjYWxsLgorICAgICMKKyAgICAjIC0gRWl0aGVyOgorICAgICMgICAtIFRo
ZSBKUyByZXR1cm4gdmFsdWUgKHR3byByZWdpc3RlcnMpLCBvcgorICAgICMKKyAgICAjICAgLSBU
aGUgUEMgdG8gY2FsbC4KKyAgICAjCisgICAgIyBJdCB0dXJucyBvdXQgdG8gYmUgZWFzaWVyIHRv
IGp1c3QgYWx3YXlzIGhhdmUgdGhpcyByZXR1cm4gdGhlIGNmcgorICAgICMgYW5kIGEgUEMgdG8g
Y2FsbCwgYW5kIHRoYXQgUEMgbWF5IGJlIGEgZHVtbXkgdGh1bmsgdGhhdCBqdXN0CisgICAgIyBy
ZXR1cm5zIHRoZSBKUyB2YWx1ZSB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgIAorICAgIHNs
b3dQYXRoRm9yQ2FsbCg0LCBfbGxpbnRfaGVscGVyX2NhbGxfZXZhbCkKKworCitfbGxpbnRfZ2Vu
ZXJpY19yZXR1cm5fcG9pbnQ6CisgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorCisKK19sbGludF9v
cF90ZWFyX29mZl9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZAorICAgIGJp
ZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZh
dGlvbk5vdENyZWF0ZWQKKy5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZDoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKKy5vcFRlYXJPZmZBY3RpdmF0
aW9uTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF90ZWFyX29mZl9h
cmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IHN1YmkgMSwgdDAgICAjIEdldCB0aGUgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyCisgICAg
YmllcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBcmd1
bWVudHNOb3RDcmVhdGVkCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2Fy
Z3VtZW50cykKKy5vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDIp
CisKKworbWFjcm8gZG9SZXR1cm4oKQorICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCisgICAg
bG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgY2ZyCisgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZv
cmVSZXR1cm4odDIpCisgICAgcmV0CitlbmQKKworX2xsaW50X29wX3JldDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50
X29wX2NhbGxfcHV0X3Jlc3VsdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQyCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkg
dDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9yZXRfb2JqZWN0X29yX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNr
U3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFJldE9iamVjdE9yVGhpc05vdE9i
amVjdAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJiYiBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9w
UmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgZG9SZXR1cm4oKQorCisub3BSZXRPYmplY3RP
clRoaXNOb3RPYmplY3Q6CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
CisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF9vcF9tZXRob2RfY2hlY2s6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgICMgV2UgaWdub3JlIG1ldGhvZCBjaGVja3MgYW5kIHVzZSBub3JtYWwg
Z2V0X2J5X2lkIG9wdGltaXphdGlvbnMuCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bf
c3RyY2F0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfc3RyY2F0KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3RvX3ByaW1pdGl2ZToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQ
Q10sIHQzCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFRv
UHJpbWl0aXZlSXNJbW0KKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAg
ICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3Ry
aW5nVHlwZSwgLm9wVG9QcmltaXRpdmVTbG93Q2FzZQorLm9wVG9QcmltaXRpdmVJc0ltbToKKyAg
ICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvUHJpbWl0aXZlU2xv
d0Nhc2U6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RvX3ByaW1pdGl2ZSkKKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF9nZXRfcG5hbWVzOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X3BuYW1lcykKKyAgICBkaXNwYXRj
aCgwKSAjIFRoZSBoZWxwZXIgZWl0aGVyIGFkdmFuY2VzIHRoZSBQQyBvciBqdW1wcyB1cyB0byBz
b21ld2hlcmUgZWxzZS4KKworCitfbGxpbnRfb3BfbmV4dF9wbmFtZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRpIDE2W1BDXSwgdDIKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MAorICAgIGJpZXEgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MiwgOF0sIC5vcE5leHRQbmFtZUVuZAorICAgIGxvYWRpIDIwW1BDXSwgdDIK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MgorICAgIGxvYWRwIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3I6Om1fanNTdHJpbmdzW3QyXSwgdDMKKyAgICBsb2FkaSBbdDMsIHQw
LCA4XSwgdDMKKyAgICBhZGRpIDEsIHQwCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDEsIDhdCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4
XQorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0Mywg
OF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgYnBuZXEg
dDEsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4
dFBuYW1lU2xvdworICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJv
dG90eXBlQ2hhaW5bdDJdLCB0MAorICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0
MF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BOZXh0UG5hbWVUYXJnZXQKKy5vcE5leHRQbmFtZUNo
ZWNrUHJvdG90eXBlTG9vcDoKKyAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdP
ZmZzZXRbdDFdLCBOdWxsVGFnLCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgU3RydWN0dXJl
OjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDFdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDJdLCB0MQorICAgIGJwbmVxIHQxLCBbdDBdLCAub3BOZXh0UG5hbWVTbG93
CisgICAgYWRkcCA0LCB0MAorICAgIGJ0cG56IFt0MF0sIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90
eXBlTG9vcAorLm9wTmV4dFBuYW1lVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDI0W1BDXSkK
KworLm9wTmV4dFBuYW1lRW5kOgorICAgIGRpc3BhdGNoKDcpCisKKy5vcE5leHRQbmFtZVNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25leHRfcG5hbWUpICMgVGhpcyBlaXRoZXIg
a2VlcHMgdGhlIFBDIHdoZXJlIGl0IHdhcyAoY2F1c2luZyB1cyB0byBsb29wKSBvciBzZXRzIGl0
IHRvIHRhcmdldC4KKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9wdXNoX3Njb3BlOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9z
Y29wZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3Bfc2NvcGU6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3Bfc2NvcGUpCisg
ICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfcHVzaF9uZXdfc2NvcGU6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX25ld19zY29wZSkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9jYXRjaDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgIyBUaGlzIGlzIHdoZXJlIHdlIGVuZCB1cCBmcm9tIHRoZSBKSVQncyB0aHJvdyB0
cmFtcG9saW5lIChiZWNhdXNlIHRoZQorICAgICMgbWFjaGluZSBjb2RlIHJldHVybiBhZGRyZXNz
IHdpbGwgYmUgc2V0IHRvIF9sbGludF9vcF9jYXRjaCksIGFuZCBmcm9tCisgICAgIyB0aGUgaW50
ZXJwcmV0ZXIncyB0aHJvdyB0cmFtcG9saW5lIChzZWUgX2xsaW50X3Rocm93X3RyYW1wb2xpbmUp
LgorICAgICMgVGhlIEpJVCB0aHJvd2luZyBwcm90b2NvbCBjYWxscyBmb3IgdGhlIGNmciB0byBi
ZSBpbiB0MC4gVGhlIHRocm93aW5nCisgICAgIyBjb2RlIG11c3QgaGF2ZSBrbm93biB0aGF0IHdl
IHdlcmUgdGhyb3dpbmcgdG8gdGhlIGludGVycHJldGVyLCBhbmQgaGF2ZQorICAgICMgc2V0IEpT
R2xvYmFsRGF0YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93LgorICAgIG1vdmUgdDAsIGNm
cgorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRp
IEpTR2xvYmFsRGF0YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93W3QzXSwgUEMKKyAgICBs
b2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdLCB0MAorICAg
IGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSwgdDEKKyAgICBz
dG9yZWkgMCwgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAg
IHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNl
dFt0M10KKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIGRp
c3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGhyb3cpCisgICAgZGlzcGF0Y2goMikKKworCitf
bGxpbnRfb3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQorICAgIGRp
c3BhdGNoKDIpCisKKworX2xsaW50X29wX2pzcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgYWRkaSAzICogNCwgUEMsIHQxCisgICAgc3RvcmVpIHQxLCBb
dDBdCisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKworX2xsaW50X29wX3NyZXQ6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCBQQworICAgIGRpc3BhdGNoKDApCisK
KworX2xsaW50X29wX2RlYnVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfZGVidWcpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJv
ZmlsZV93aWxsX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0cHogSklUU3RhY2tG
cmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgLm9wUHJvZmlsZVdpbGxDYWxsRG9u
ZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCkKKy5vcFBy
b2ZpbGVXaWxsQ2FsbERvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJvZmls
ZV9kaWRfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYnRweiBKSVRTdGFja0ZyYW1l
OjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCAub3BQcm9maWxlRGlkQ2FsbERvbmUKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKKy5vcFByb2ZpbGVE
aWRDYWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9lbmQ6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9h
ZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgZG9SZXR1cm4oKQorCisKK19s
bGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lOgorICAgICMgV2hlbiB0aHJvd2luZyBm
cm9tIHRoZSBpbnRlcnByZXRlciAoaS5lLiB0aHJvd2luZyBmcm9tIExMSW50SGVscGVycyksIHNv
CisgICAgIyB0aGUgdGhyb3cgdGFyZ2V0IGlzIG5vdCBuZWNlc3NhcmlseSBpbnRlcnByZXRlZCBj
b2RlLCB3ZSBjb21lIHRvIGhlcmUuCisgICAgIyBUaGlzIGVzc2VudGlhbGx5IGVtdWxhdGVzIHRo
ZSBKSVQncyB0aHJvd2luZyBwcm90b2NvbC4KKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9i
YWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93
W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0
MV0KKworCitfbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZToKKyAgICBwcmVzZXJ2
ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xv
YmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJv
d1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3db
dDFdCisKKworIyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdo
IHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMuCisjIFRoZXNlIG9wY29kZXMgc2hvdWxkIG5l
dmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CisjIGFz
IG11Y2guCisKK21hY3JvIG5vdFN1cHBvcnRlZCgpCisgICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAg
ICAgICAgY3Jhc2goKQorICAgIGVsc2UKKyAgICAgICAgIyBXZSBzaG91bGQgdXNlIHdoYXRldmVy
IHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBpbnN0cnVjdGlvbiBpcywganVzdCB0bworICAgICAgICAj
IGVuc3VyZSB0aGF0IHRoZXJlIGlzIGEgZ2FwIGJldHdlZW4gaW5zdHJ1Y3Rpb24gbGFiZWxzLiBJ
ZiBtdWx0aXBsZQorICAgICAgICAjIHNtYWxsZXN0IGluc3RydWN0aW9ucyBleGlzdCwgd2Ugc2hv
dWxkIHBpY2sgdGhlIG9uZSB0aGF0IGlzIG1vc3QKKyAgICAgICAgIyBsaWtlbHkgcmVzdWx0IGlu
IGV4ZWN1dGlvbiBiZWluZyBoYWx0ZWQuIEN1cnJlbnRseSB0aGF0IGlzIHRoZSBicmVhaworICAg
ICAgICAjIGluc3RydWN0aW9uIG9uIGFsbCBhcmNoaXRlY3R1cmVzIHdlJ3JlIGludGVyZXN0ZWQg
aW4uIChCcmVhayBpcyBpbnQzCisgICAgICAgICMgb24gSW50ZWwsIHdoaWNoIGlzIDEgYnl0ZSwg
YW5kIGJrcHQgb24gQVJNdjcsIHdoaWNoIGlzIDIgYnl0ZXMuKQorICAgICAgICBicmVhaworICAg
IGVuZAorZW5kCisKK19sbGludF9vcF9nZXRfYXJyYXlfbGVuZ3RoOgorICAgIG5vdFN1cHBvcnRl
ZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKwor
X2xsaW50X29wX2dldF9ieV9pZF9jdXN0b21fY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKwor
X2xsaW50X29wX2dldF9ieV9pZF9jdXN0b21fcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKwor
X2xsaW50X29wX2dldF9ieV9pZF9jdXN0b21fc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitf
bGxpbnRfb3BfZ2V0X2J5X2lkX2dlbmVyaWM6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50
X29wX2dldF9ieV9pZF9nZXR0ZXJfY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50
X29wX2dldF9ieV9pZF9nZXR0ZXJfcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50
X29wX2dldF9ieV9pZF9nZXR0ZXJfc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRf
b3BfZ2V0X2J5X2lkX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X3N0cmluZ19s
ZW5ndGg6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9nZW5lcmlj
OgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfcmVwbGFjZToKKyAg
ICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb246CisgICAg
bm90U3VwcG9ydGVkKCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmln
LmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCisjaW5jbHVkZSAiTExJbnRB
c3NlbWJseS5oIgorCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBMb3dMZXZlbEludGVycHJldGVyX2gKKyNkZWZpbmUgTG93TGV2ZWxJbnRlcnByZXRlcl9o
CisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworI2RlZmluZSBMTElOVF9JTlNUUlVDVElPTl9ERUNM
KG9wY29kZSwgbGVuZ3RoKSBleHRlcm4gIkMiIHZvaWQgbGxpbnRfIyNvcGNvZGUoKTsKKyAgICBG
T1JfRUFDSF9PUENPREVfSUQoTExJTlRfSU5TVFJVQ1RJT05fREVDTCk7CisjdW5kZWYgTExJTlRf
SU5TVFJVQ1RJT05fREVDTAorCitleHRlcm4gIkMiIHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1
ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2V2YWxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIg
dm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIg
dm9pZCBsbGludF9nZW5lcmljX3JldHVybl9wb2ludCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50
X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90
aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKCk7CisKKyNlbmRpZiAvLyBMb3dMZXZlbEludGVy
cHJldGVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJi
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcu
cmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkzIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitjbGFzcyBTcGVjaWFsUmVnaXN0ZXIKKyAgZGVmIGluaXRpYWxpemUo
bmFtZSkKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgYXJtVjdPcGVyYW5kCisg
ICAgQG5hbWUKKyAgZW5kCitlbmQKKworQVJNdjdfREFUQV9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIu
bmV3KCJpcCIpCitBUk12N19BRERSX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoInIzIikKKwor
ZGVmIG1vdmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJlbnRseSB3ZSBvbmx5
IGhhbmRsZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1vdi9tb3Z0IGZvciB0
aGUgY29tcGxleCBvbmVzLgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2CisgICAgJGFz
bS5wdXRzICJtb3Z3IFwjI3t2YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxz
aWYgKH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20ucHV0cyAibXZudyBc
IyN7fnZhbHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNlCisgICAgJGFzbS5w
dXRzICJtb3Z3IFwjI3t2YWx1ZSAmIDB4ZmZmZn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIK
KyAgICBpZiAodmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCisgICAgICAkYXNtLnB1dHMgIm1vdnQg
XCMje3ZhbHVlID4+IDE2fSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorICBl
bmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNl
IG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICJyMCIKKyAgICB3aGVuICJ0
MSIsICJhMSIsICJyMSIKKyAgICAgICJyMSIKKyAgICB3aGVuICJ0MiIsICJhMiIKKyAgICAgICJy
MiIKKyAgICB3aGVuICJhMyIKKyAgICAgICJyMyIKKyAgICB3aGVuICJ0MyIKKyAgICAgICJyNCIK
KyAgICB3aGVuICJ0NCIKKyAgICAgICJyNyIKKyAgICB3aGVuICJjZnIiCisgICAgICAicjUiCisg
ICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVw
YXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVN
ZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9h
ZFN0b3JlV3JhcAorICAgIHlpZWxkCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAor
ICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZyIgor
ICAgICAgImQwIgorICAgIHdoZW4gImZyMSIsCisgICAgICAiZDEiCisgICAgd2hlbiAiZnIyIgor
ICAgICAgImQyIgorICAgIHdoZW4gImZyMyIKKyAgICAgICJkMyIKKyAgICB3aGVuICJmcjQiCisg
ICAgICAiZDQiCisgICAgd2hlbiAiZnI1IgorICAgICAgImQ1IgorICAgIGVsc2UKKyAgICAgIHJh
aXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5
T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAg
IGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5
aWVsZCBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgYXJtVjdPcGVy
YW5kCisgICAgcmFpc2UgIkludmFsaWQgaW1tZWRpYXRlICN7dmFsdWV9IiBpZiB2YWx1ZSA8IDAg
b3IgdmFsdWUgPiAyNTUKKyAgICAiIyR7dmFsdWV9IgorICBlbmQKKyAgCisgIGRlZiBhcm1WN1By
ZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJs
ZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdM
b2FkU3RvcmVXcmFwCisgICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCittb2R1bGUgQVJNdjdB
ZGRyZXNzVXRpbGl0aWVzCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICBzZWxmLmFybVY3
UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICRhc20ucHV0cyAiXHRsZHIgI3tzZWxm
LmFybVY3UG9zc2libHlNZW1vcnlPcGVyYW5kfSwgI3tBUk12N19EQVRBX1JFRy5hcm1WN09wZXJh
bmR9IgorICAgIHlpZWxkIEFSTXY3X0RBVEFfUkVHCisgICAgJGFzbS5wdXRzICJcdHN0ciAje0FS
TXY3X0RBVEFfUkVHLmFybVY3T3BlcmFuZH0sICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVtb3J5T3Bl
cmFuZH0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJl
c3NVdGlsaXRpZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisg
ICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAg
IG1vdmVJbW1lZGlhdGUob2Zmc2V0LnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQu
dmFsdWUgPCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgIlsje2Jhc2UuYXJt
VjdPcGVyYW5kfSwgI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgICBlbHNlCisg
ICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje29mZnNldC5hcm1WN09wZXJhbmR9XSIKKyAg
ICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGluY2x1ZGUgQVJNdjdBZGRy
ZXNzVXRpbGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAor
ICAgIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1
ZSwgQVJNdjdfQUREUl9SRUcpCisgICAgICAkYXNtLnB1dHMgImFkZHcgI3tBUk12N19BRERSX1JF
Ry5hcm1WN09wZXJhbmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAgZW5kCisg
IAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUg
IT0gMAorICAgICAgIlsje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJt
VjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVsc2UKKyAgICAgICJbI3tiYXNlLmFy
bVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAg
IGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgaW5jbHVkZSBBUk12
N0FkZHJlc3NVdGlsaXRpZXMKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9w
ZXJhbmQKKyAgICBtb3ZlSW1tZWRpYXRlKGFkZHJlc3MudmFsdWUsIEFSTXY3X0FERFJfUkVHKQor
ICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICJbI3tBUk12
N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgZW5kCitlbmQKKworCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgz
IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2Vu
ZHMiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2V0dGlu
Z3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2NsYXNzIEFzc2VtYmxlcgorICBkZWYgaW5pdGlh
bGl6ZShvdXRwKQorICAgIEBvdXRwID0gb3V0cAorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisg
IAorICBkZWYgZW50ZXJBc20KKyAgICBAb3V0cC5wdXRzICJhc20gKCIKKyAgICBAc3RhdGUgPSA6
YXNtCisgIGVuZAorICAKKyAgZGVmIGxlYXZlQXNtCisgICAgQG91dHAucHV0cyAiKTsiCisgICAg
QHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBpbkFzbQorICAgIGVudGVyQXNtCisgICAg
eWllbGQKKyAgICBsZWF2ZUFzbQorICBlbmQKKyAgCisgIGRlZiBwdXRzKGxpbmUpCisgICAgcmFp
c2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAgQG91dHAucHV0cygobGluZSArICJcbiIpLmlu
c3BlY3QpCisgIGVuZAorICAKKyAgZGVmIGNvbW1lbnQodGV4dCkKKyAgICBAb3V0cC5wdXRzICIv
LyAje3RleHR9IgorICBlbmQKK2VuZAorCiskYXNtID0gQXNzZW1ibGVyLm5ldygkc3Rkb3V0KQor
Cithc21GaWxlID0gQVJHVi5zaGlmdAorb2Zmc2V0c0ZpbGUgPSBBUkdWLnNoaWZ0CisKK2FzdCA9
IHBhcnNlKGxleChJTzo6cmVhZChhc21GaWxlKSkpCitvZmZzZXRzTGlzdCwgY29uZmlnSW5kZXgg
PSBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KG9mZnNldHNGaWxlKQorCitmb3JTZXR0aW5n
cyhjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KVtjb25maWdJbmRleF0sIGFzdCkgewor
ICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgYXNzZXJ0Q29u
ZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICBsb3dMZXZlbEFTVCA9IGxvd0xldmVsQVNU
LnJlc29sdmUoKmJ1aWxkT2Zmc2V0c01hcChsb3dMZXZlbEFTVCwgb2Zmc2V0c0xpc3QpKQorICBl
bWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFj
a2VuZCkgeworICAgICRhc20uaW5Bc20geworICAgICAgbG93TGV2ZWxBU1QubG93ZXIoYmFja2Vu
ZCkKKyAgICB9CisgIH0KK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L2FzdC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
c3QucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
c3QucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODA2IEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBC
YXNlIHV0aWxpdHkgdHlwZXMgZm9yIHRoZSBBU1QuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFZhbGlk
IG1ldGhvZHMgZm9yIE5vZGU6CisjCisjIG5vZGUuY2hpbGRyZW4gLT4gUmV0dXJucyBhbiBhcnJh
eSBvZiBpbW1lZGlhdGUgY2hpbGRyZW4uCisjCisjIG5vZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJu
cyBhbiBhcnJheSBvZiBhbGwgc3RyaWN0IGRlc2NlbmRhbnRzIChjaGlsZHJlbgorIyAgICAgYW5k
IGNoaWxkcmVuIG9mIGNoaWxkcmVuLCB0cmFuc2l0aXZlbHkpLgorIworIyBub2RlLmZsYXR0ZW4g
LT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5k
CisjICAgICB0aGUgbm9kZSBpdHNlbGYuCisjCisjIG5vZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVy
bnMgYW4gYXJyYXkgY29udGFpbmluZyB0aG9zZSBlbGVtZW50cyBpbgorIyAgICAgbm9kZS5mbGF0
dGVuIHRoYXQgYXJlIG9mIHRoZSBnaXZlbiB0eXBlIChpc19hPyB0eXBlIHJldHVybnMgdHJ1ZSku
CisjCisjIG5vZGUubWFwQ2hpbGRyZW57fHZ8IC4uLn0gLT4gUmV0dXJucyBhIG5ldyBub2RlIHdp
dGggYWxsIGNoaWxkcmVuCisjICAgICByZXBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJs
b2NrLgorIworIyBFeGFtcGxlczoKKyMKKyMgbm9kZS5maWx0ZXIoU2V0dGluZykudW5pcSAtPiBS
ZXR1cm5zIGFsbCBvZiB0aGUgc2V0dGluZ3MgdGhhdCB0aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVs
c2UgYmxvY2tzIGRlcGVuZCBvbi4KKyMKKyMgbm9kZS5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlx
IC0+IFJldHVybnMgYWxsIG9mIHRoZSBzdHJ1Y3R1cmUgb2Zmc2V0cworIyAgICAgdGhhdCB0aGUg
QVNUIGRlcGVuZHMgb24uCisKK2NsYXNzIE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4K
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgQGNvZGVPcmlnaW4gPSBjb2Rl
T3JpZ2luCisgIGVuZAorICAKKyAgZGVmIGNvZGVPcmlnaW5TdHJpbmcKKyAgICAibGluZSBudW1i
ZXIgI3tAY29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVmIGRlc2NlbmRhbnRzCisgICAgY2hp
bGRyZW4uY29sbGVjdHt8dnwgdi5mbGF0dGVufS5mbGF0dGVuCisgIGVuZAorICAKKyAgZGVmIGZs
YXR0ZW4KKyAgICBbc2VsZl0gKyBkZXNjZW5kYW50cworICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIo
dHlwZSkKKyAgICBmbGF0dGVuLnNlbGVjdHt8dnwgdi5pc19hPyB0eXBlfQorICBlbmQKK2VuZAor
CitjbGFzcyBOb0NoaWxkcmVuIDwgTm9kZQorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW10K
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2Ns
YXNzIFN0cnVjdE9mZnNldEtleQorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisg
IGRlZiBpbml0aWFsaXplKHN0cnVjdCwgZmllbGQpCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAg
IEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAgZGVmIGhhc2gKKyAgICBAc3RydWN0Lmhhc2gg
KyBAZmllbGQuaGFzaCAqIDMKKyAgZW5kCisgIAorICBkZWYgZXFsPyhvdGhlcikKKyAgICBAc3Ry
dWN0ID09IG90aGVyLnN0cnVjdCBhbmQgQGZpZWxkID09IG90aGVyLmZpZWxkCisgIGVuZAorZW5k
CisgICAgCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBBU1Qgbm9kZXMuICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBTdHJ1Y3RPZmZzZXQg
PCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisg
IEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JGaWVsZChjb2RlT3JpZ2luLCBzdHJ1
Y3QsIGZpZWxkKQorICAgIGtleSA9IFN0cnVjdE9mZnNldEtleS5uZXcoc3RydWN0LCBmaWVsZCkK
KyAgICAKKyAgICB1bmxlc3MgQEBtYXBwaW5nW2tleV0KKyAgICAgIEBAbWFwcGluZ1trZXldID0g
U3RydWN0T2Zmc2V0Lm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGVuZAorICAg
IEBAbWFwcGluZ1trZXldCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tzdHJ1Y3R9Ojoj
e2ZpZWxkfSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAgIGlmIEBzdHJ1Y3QgIT0g
b3RoZXIuc3RydWN0CisgICAgICByZXR1cm4gQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgICAg
ZW5kCisgICAgQGZpZWxkIDw9PiBvdGhlci5maWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXpl
b2YgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1
Y3QgPSBzdHJ1Y3QKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYu
Zm9yTmFtZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tzdHJ1Y3Rd
CisgICAgICBAQG1hcHBpbmdbc3RydWN0XSA9IFNpemVvZi5uZXcoY29kZU9yaWdpbiwgc3RydWN0
KQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tzdHJ1Y3RdCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAic2l6ZW9mICN7QHN0cnVjdH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAg
ICBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRl
IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhbHVlID0g
dmFsdWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje3ZhbHVlfSIKKyAgZW5kCisgIAor
ICBkZWYgPT0ob3RoZXIpCisgICAgb3RoZXIuaXNfYT8gSW1tZWRpYXRlIGFuZCBvdGhlci52YWx1
ZSA9PSBAdmFsdWUKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAg
YXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQK
KyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVm
dCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZEltbWVkaWF0
ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxl
ZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSBy
aWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBl
bmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmln
aW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIigje2xlZnQuZHVtcH0gLSAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xh
c3MgTXVsSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAg
CisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbgorICAgIE11bEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVm
dCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQu
ZHVtcH0gKiAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRl
IDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGNoaWxkXQorICBlbmQKKyAgCisgIGRl
ZiBtYXBDaGlsZHJlbgorICAgIE5lZ0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBj
aGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKC0je0BjaGlsZC5kdW1wfSkiCisg
IGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVy
IDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0g
e30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3Mg
QEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBSZWdpc3RlcklELm5ldyhj
b2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQg
PCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1l
CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBp
bmdbbmFtZV0gPSBGUFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisg
ICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVu
ZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFt
ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9Cisg
IAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFw
cGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gVmFyaWFibGUubmV3KGNvZGVPcmln
aW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpiYXNlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBiYXNlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UK
KyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0Bi
YXNlLCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZHJlc3Mu
bmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH1dIgorICBlbmQK
K2VuZAorCitjbGFzcyBCYXNlSW5kZXggPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6aW5k
ZXgsIDpzY2FsZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFz
ZSA9IGJhc2UKKyAgICBAaW5kZXggPSBpbmRleAorICAgIEBzY2FsZSA9IHNjYWxlCisgICAgcmFp
c2UgdW5sZXNzIFsxLCAyLCA0LCA4XS5tZW1iZXI/IEBzY2FsZQorICAgIEBvZmZzZXQgPSBvZmZz
ZXQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBpbmRleCwgQG9mZnNl
dF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBCYXNlSW5kZXgubmV3KGNvZGVP
cmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAaW5kZXgpLCBAc2NhbGUsICh5aWVsZCBAb2Zm
c2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2Uu
ZHVtcH0sICN7aW5kZXguZHVtcH0sICN7c2NhbGV9XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJz
b2x1dGVBZGRyZXNzIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6YWRkcmVzcworICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYWRkcmVzcykKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBhZGRyZXNzID0gYWRkcmVzcworICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7
YWRkcmVzcy5kdW1wfVtdIgorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbiA8IE5vZGUK
KyAgYXR0cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBvcGNvZGUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QG9wY29kZSA9IG9wY29kZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4o
JnByb2MpCisgICAgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5k
cy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0IiArIG9wY29kZS50
b19zICsgIiAiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCisgIGVu
ZAorZW5kCisKK2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiXHRlcnJvciIKKyAgZW5kCitlbmQKKworY2xhc3MgQ29uc3REZWNsIDwgTm9kZQorICBhdHRy
X3JlYWRlciA6dmFyaWFibGUsIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgdmFyaWFibGUsIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhcmlhYmxl
ID0gdmFyaWFibGUKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJl
bgorICAgIFtAdmFyaWFibGUsIEB2YWx1ZV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICBDb25zdERlY2wubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAdmFyaWFibGUpLCAoeWllbGQg
QHZhbHVlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJjb25zdCAje0B2YXJpYWJsZS5k
dW1wfSA9ICN7QHZhbHVlLmR1bXB9IgorICBlbmQKK2VuZAorCiskbGFiZWxNYXBwaW5nID0ge30K
KworY2xhc3MgTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2lu
LCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBu
YW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8g
TGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFiZWwubmV3KGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2Nh
bExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1l
ID0gbmFtZQorICBlbmQKKworICBAQHVuaXF1ZU5hbWVDb3VudGVyID0gMAorICAKKyAgZGVmIHNl
bGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0K
KyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJl
bE1hcHBpbmdbbmFtZV0uaXNfYT8gTG9jYWxMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1h
cHBpbmdbbmFtZV0gPSBMb2NhbExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAor
ICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgc2VsZi51bmlxdWUKKyAg
ICB3aGlsZSAkbGFiZWxNYXBwaW5nWyJfTCN7QEB1bmlxdWVOYW1lQ291bnRlcn0iXQorICAgICAg
QEB1bmlxdWVOYW1lQ291bnRlciArPSAxCisgICAgZW5kCisgICAgZm9yTmFtZShuaWwsICJfTCN7
QEB1bmlxdWVOYW1lQ291bnRlcn0iKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFt
ZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZSA8IE5vZGUKKyAgYXR0cl9y
ZWFkZXIgOmxhYmVsCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAgZGVm
IGNoaWxkcmVuCisgICAgW0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAor
ICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICBsYWJlbC5uYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UgPCBO
b0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJl
bAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAg
ZGVmIG1hcENoaWxkcmVuCisgICAgTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwg
KHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorZW5kCisKK2NsYXNz
IFNlcXVlbmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGlzdAorICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgbGlzdCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsaXN0ID0g
bGlzdAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIGxpc3QKKyAgZW5kCisgIAorICBk
ZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIEBsaXN0
Lm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsaXN0LmNvbGxlY3R7fHZ8
IHYuZHVtcH0uam9pbigiXG4iKQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlIDwgTm9DaGlsZHJl
bgorICBkZWYgaW5pdGlhbGl6ZQorICAgIHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3Rh
bmNlID0gVHJ1ZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQor
ICBlbmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICJ0cnVlIgorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZSA8IE5vQ2hpbGRyZW4KKyAgZGVm
IGluaXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IEZh
bHNlLm5ldworICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAor
ICAKKyAgZGVmIHZhbHVlCisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJm
YWxzZSIKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBU
cnVlLmluc3RhbmNlCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlQ2xhc3MKKyAgZGVmIGFzTm9k
ZQorICAgIEZhbHNlLmluc3RhbmNlCisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcgPCBOb0No
aWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVu
ZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdp
biwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFt
ZV0gPSBTZXR0aW5nLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGlu
Z1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitj
bGFzcyBBbmQgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRy
ZW4KKyAgICBBbmQubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQp
KQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gYW5kICN7cmlnaHQu
ZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBPciA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxl
ZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSBy
aWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBl
bmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE9yLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQg
QGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3ts
ZWZ0LmR1bXB9IG9yICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBOb3QgPCBO
b2RlCisgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgY2hpbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAY2hpbGQgPSBjaGlsZAorICBl
bmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisg
IGRlZiBtYXBDaGlsZHJlbgorICAgIE5vdC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkp
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKG5vdCAje2NoaWxkLmR1bXB9KSIKKyAgZW5k
CitlbmQKKworY2xhc3MgU2tpcCA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
Ilx0c2tpcCIKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZSA8IE5vZGUKKyAgYXR0cl9y
ZWFkZXIgOnByZWRpY2F0ZSwgOnRoZW5DYXNlCisgIGF0dHJfYWNjZXNzb3IgOmVsc2VDYXNlCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHRoZW5DYXNlKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHByZWRpY2F0ZSA9IHByZWRpY2F0ZQorICAgIEB0aGVu
Q2FzZSA9IHRoZW5DYXNlCisgICAgQGVsc2VDYXNlID0gU2tpcC5uZXcoY29kZU9yaWdpbikKKyAg
ZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBpZiBAZWxzZUNhc2UKKyAgICAgIFtAcHJlZGlj
YXRlLCBAdGhlbkNhc2UsIEBlbHNlQ2FzZV0KKyAgICBlbHNlCisgICAgICBbQHByZWRpY2F0ZSwg
QHRoZW5DYXNlXQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIElm
VGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAcHJlZGljYXRlKSwgKHlpZWxkIEB0aGVu
Q2FzZSksICh5aWVsZCBAZWxzZUNhc2UpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImlm
ICN7cHJlZGljYXRlLmR1bXB9XG4iICsgdGhlbkNhc2UuZHVtcCArICJcbmVsc2VcbiIgKyBlbHNl
Q2FzZS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBNYWNybyA8IE5vZGUKKyAg
YXR0cl9yZWFkZXIgOm5hbWUsIDp2YXJpYWJsZXMsIDpib2R5CisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbmFtZSA9IG5hbWUKKyAgICBAdmFyaWFibGVzID0gdmFyaWFibGVzCisgICAgQGJv
ZHkgPSBib2R5CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgQHZhcmlhYmxlcyArIFtA
Ym9keV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBNYWNyby5uZXcoY29kZU9y
aWdpbiwgQG5hbWUsIEB2YXJpYWJsZXMubWFwe3x2fCB5aWVsZCB2fSwgKHlpZWxkIEBib2R5KSkK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJtYWNybyAje25hbWV9KCIgKyB2YXJpYWJsZXMu
Y29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpICsgIilcbiIgKyBib2R5LmR1bXAgKyAiXG5l
bmQiCisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvQ2FsbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIg
Om5hbWUsIDpvcGVyYW5kcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwg
b3BlcmFuZHMpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgICBA
b3BlcmFuZHMgPSBvcGVyYW5kcworICAgIHJhaXNlIHVubGVzcyBAb3BlcmFuZHMKKyAgICBAb3Bl
cmFuZHMuZWFjaHt8dnwgcmFpc2UgdW5sZXNzIHZ9CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVu
CisgICAgQG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAg
IE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0I3tuYW1lfSgiICsgb3BlcmFuZHMuY29sbGVj
dHt8dnwgdi5kdW1wfS5qb2luKCIsICIpICsgIikiCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIng4NiIKKworQkFDS0VORFMgPQorICBbCisgICAi
WDg2IiwKKyAgICJBUk12NyIKKyAgXQorCitXT1JLSU5HX0JBQ0tFTkRTID0KKyAgWworICAgIlg4
NiIKKyAgXQorCitCQUNLRU5EX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoJyArIEJBQ0tFTkRT
LmpvaW4oJyl8KCcpICsgJylcXFonKQorCitjbGFzcyBOb2RlCisgIGRlZiBsb3dlcihuYW1lKQor
ICAgIHNlbmQoImxvd2VyIiArIG5hbWUpCisgIGVuZAorZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBs
b3dlcigpIGZvciB0aG9zZSBub2RlcyB0aGF0IGFyZSBiYWNrZW5kLWFnbm9zdGljCisKK2RlZiBz
YW5pdGl6ZUxhYmVsTmFtZShuYW1lKQorICAjIFNvbWUgcGxhdGZvcm1zIGRvbid0IHdhbnQgdGhl
IGxlYWRpbmcgIl8iLiBJZiB3ZSBldmVyIHdhbnQgdG8gZG8gc29tZXRoaW5nCisgICMgYWJvdXQg
dGhhdCwgaXQgd291bGQgYmUgaGVyZS4KKyAgbmFtZQorZW5kCisKK2NsYXNzIExhYmVsCisgIGRl
ZiBsb3dlcihuYW1lKQorICAgICRhc20ucHV0cyAiLmdsb2JsICN7c2FuaXRpemVMYWJlbE5hbWUo
c2VsZi5uYW1lKX0iCisgICAgJGFzbS5wdXRzICIje3Nhbml0aXplTGFiZWxOYW1lKHNlbGYubmFt
ZSl9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbAorICBkZWYgbG93ZXIobmFtZSkK
KyAgICAkYXNtLnB1dHMgIl9fb2FfI3tzZWxmLm5hbWVbMS4uLTFdfToiCisgIGVuZAorZW5kCisK
K2NsYXNzIFNraXAKKyAgZGVmIGxvd2VyKG5hbWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVl
bmNlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBub2RlIHwK
KyAgICAgIG5vZGUubG93ZXIobmFtZSkKKyAgICB9CisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVf
b2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjUgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1
aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1
aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworZGVmIGVtaXRNYWdpY051bWJl
cgorICBPRkZTRVRfTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICB8IG51bWJlciB8CisgICAgcHV0
cyAiI3tudW1iZXJ9LCIKKyAgfQorZW5kCisKK29yaWdpbmFsQVNUID0gcGFyc2UobGV4KCRzdGRp
bi5yZWFkKSkKKworZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKG9yaWdpbmFsQVNUKSB7Cisg
IHwgc2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfAorICBvZmZzZXRzTGlzdCA9IGFzdC5m
aWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKKyAgc2l6ZXNMaXN0ID0gYXN0LmZpbHRlcihT
aXplb2YpLnVuaXEuc29ydAorICAKKyAgbGVuZ3RoID0gKE9GRlNFVF9NQUdJQ19OVU1CRVJTLnNp
emUgKyAxKSAqICgxICsgb2Zmc2V0c0xpc3Quc2l6ZSArIHNpemVzTGlzdC5zaXplKQorICAKKyAg
cHV0cyAic3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7
IgorICBlbWl0TWFnaWNOdW1iZXIKKyAgcHV0cyAiI3tpbmRleH0sIgorICBvZmZzZXRzTGlzdC5l
YWNoIHsKKyAgICB8IG9mZnNldCB8CisgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgcHV0cyAiT0ZG
TElORV9BU01fT0ZGU0VUT0YoI3tvZmZzZXQuc3RydWN0fSwgI3tvZmZzZXQuZmllbGR9KSwiCisg
IH0KKyAgc2l6ZXNMaXN0LmVhY2ggeworICAgIHwgb2Zmc2V0IHwKKyAgICBlbWl0TWFnaWNOdW1i
ZXIKKyAgICBwdXRzICJzaXplb2YoI3tvZmZzZXQuc3RydWN0fSksIgorICB9CisgIHB1dHMgIn07
IgorfQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlv
bnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5z
dHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vaW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4OCBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworTUFDUk9fSU5TVFJVQ1RJT05TID0K
KyAgWworICAgImFkZGkiLAorICAgImFuZGkiLAorICAgImxzaGlmdGkiLAorICAgIm11bGkiLAor
ICAgIm5lZ2kiLAorICAgIm5vdGkiLAorICAgIm9yaSIsCisgICAicnNoaWZ0aSIsCisgICAidXJz
aGlmdGkiLAorICAgInN1YmkiLAorICAgInhvcmkiLAorICAgImxvYWRpIiwKKyAgICJsb2FkYiIs
CisgICAibG9hZGgiLAorICAgInN0b3JlaSIsCisgICAic3RvcmViIiwKKyAgICJsb2FkZCIsCisg
ICAibW92ZWQiLAorICAgInN0b3JlZCIsCisgICAiYWRkZCIsCisgICAiZGl2ZCIsCisgICAic3Vi
ZCIsCisgICAibXVsZCIsCisgICAic3FydGQiLAorICAgImNpMmQiLAorICAgImZpaTJkIiwgIyB1
c2FnZTogZmlpMmQgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGgg
bW9zdCBzaWduaWZpY2FudCBiaXRzPiwgPGZwcj4KKyAgICJmZDJpaSIsICMgdXNhZ2U6IGZkMmlp
IDxmcHI+LCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0
IHNpZ25pZmljYW50IGJpdHM+CisgICAiYmRlcSIsCisgICAiYmRuZXEiLAorICAgImJkZ3QiLAor
ICAgImJkZ3RlcSIsCisgICAiYmRsdCIsCisgICAiYmRsdGVxIiwKKyAgICJiZGVxdW4iLAorICAg
ImJkbmVxdW4iLAorICAgImJkZ3R1biIsCisgICAiYmRndGVxdW4iLAorICAgImJkbHR1biIsCisg
ICAiYmRsdGVxdW4iLAorICAgImJ0ZDJpIiwKKyAgICJ0ZDJpIiwKKyAgICJiY2QyaSIsCisgICAi
bW92ZHoiLAorICAgInBvcCIsCisgICAicHVzaCIsCisgICAibW92ZSIsCisgICAic3hpMnAiLAor
ICAgInp4aTJwIiwKKyAgICJub3AiLAorICAgImJpZXEiLAorICAgImJpbmVxIiwKKyAgICJiaWEi
LAorICAgImJpYWVxIiwKKyAgICJiaWIiLAorICAgImJpYmVxIiwKKyAgICJiaWd0IiwKKyAgICJi
aWd0ZXEiLAorICAgImJpbHQiLAorICAgImJpbHRlcSIsCisgICAiYmJlcSIsCisgICAiYmJuZXEi
LAorICAgImJiYSIsCisgICAiYmJhZXEiLAorICAgImJiYiIsCisgICAiYmJiZXEiLAorICAgImJi
Z3QiLAorICAgImJiZ3RlcSIsCisgICAiYmJsdCIsCisgICAiYmJsdGVxIiwKKyAgICJidGlvIiwK
KyAgICJidGlzIiwKKyAgICJidGl6IiwKKyAgICJidGlueiIsCisgICAiYnRibyIsCisgICAiYnRi
cyIsCisgICAiYnRieiIsCisgICAiYnRibnoiLAorICAgImptcCIsCisgICAiYmFkZGlvIiwKKyAg
ICJiYWRkaXMiLAorICAgImJhZGRpeiIsCisgICAiYmFkZGlueiIsCisgICAiYnN1YmlvIiwKKyAg
ICJic3ViaXMiLAorICAgImJzdWJpeiIsCisgICAiYnN1YmlueiIsCisgICAiYm11bGlvIiwKKyAg
ICJibXVsaXMiLAorICAgImJtdWxpeiIsCisgICAiYm11bGlueiIsCisgICAiYm9yaW8iLAorICAg
ImJvcmlzIiwKKyAgICJib3JpeiIsCisgICAiYm9yaW56IiwKKyAgICJicmVhayIsCisgICAiY2Fs
bCIsCisgICAicmV0IiwKKyAgICJjaWVxIiwKKyAgICJjaW5lcSIsCisgICAiY2lhIiwKKyAgICJj
aWFlcSIsCisgICAiY2liIiwKKyAgICJjaWJlcSIsCisgICAiY2lndCIsCisgICAiY2lndGVxIiwK
KyAgICJjaWx0IiwKKyAgICJjaWx0ZXEiLAorICAgInRpbyIsCisgICAidGlzIiwKKyAgICJ0aXoi
LAorICAgInRpbnoiLAorICAgInRibyIsCisgICAidGJzIiwKKyAgICJ0YnoiLAorICAgInRibnoi
LAorICAgInBlZWsiLAorICAgInBva2UiLAorICAgImJwZXEiLAorICAgImJwbmVxIiwKKyAgICJi
cGEiLAorICAgImJwYWVxIiwKKyAgICJicGIiLAorICAgImJwYmVxIiwKKyAgICJicGd0IiwKKyAg
ICJicGd0ZXEiLAorICAgImJwbHQiLAorICAgImJwbHRlcSIsCisgICAiYWRkcCIsCisgICAiYW5k
cCIsCisgICAib3JwIiwKKyAgICJzdWJwIiwKKyAgICJ4b3JwIiwKKyAgICJsb2FkcCIsCisgICAi
Y3BlcSIsCisgICAiY3BuZXEiLAorICAgImNwYSIsCisgICAiY3BhZXEiLAorICAgImNwYiIsCisg
ICAiY3BiZXEiLAorICAgImNwZ3QiLAorICAgImNwZ3RlcSIsCisgICAiY3BsdCIsCisgICAiY3Bs
dGVxIiwKKyAgICJzdG9yZXAiLAorICAgImJ0cG8iLAorICAgImJ0cHMiLAorICAgImJ0cHoiLAor
ICAgImJ0cG56IiwKKyAgICJiYWRkcG8iLAorICAgImJhZGRwcyIsCisgICAiYmFkZHB6IiwKKyAg
ICJiYWRkcG56IgorICBdCisKK1g4Nl9JTlNUUlVDVElPTlMgPQorICBbCisgICAiY2RxaSIsCisg
ICAiaWRpdmkiCisgIF0KKworSU5TVFJVQ1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05TICsgWDg2
X0lOU1RSVUNUSU9OUworCitJTlNUUlVDVElPTl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgn
ICsgSU5TVFJVQ1RJT05TLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0
b3JfY29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01BR0lD
X05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTU2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCity
ZXF1aXJlICJhc3QiCityZXF1aXJlICJvZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cyIKKworT0ZG
U0VUX01BR0lDX05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBvZmZzZXRzTGlzdChhc3QpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIHNpemVzTGlzdChh
c3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBSZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCBzaXpl
cyB1c2VkIGJ5IHRoZSBBU1QuICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworCitkZWYgb2Zmc2V0c0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFN0cnVj
dE9mZnNldCkudW5pcS5zb3J0CitlbmQKKworZGVmIHNpemVzTGlzdChhc3QpCisgIGFzdC5maWx0
ZXIoU2l6ZW9mKS51bmlxLnNvcnQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGFzdCwgZmlsZSkgLT4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjICAgICBbb2Zmc2V0cywgaW5kZXhdICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyBQYXJzZXMgdGhlIG9mZnNldHMgZnJvbSBhIGZpbGUgYW5kIHJldHVybnMgYSBsaXN0IG9mIG9m
ZnNldHMgYW5kIHRoZSAjCisjIGluZGV4IG9mIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgaXMgdmFs
aWQgaW4gdGhpcyBidWlsZCB0YXJnZXQuICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisKK2RlZiBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUpCisgIGlu
ZGV4ID0gbmlsCisgIG9mZnNldHMgPSBbXQorICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBuaWwK
KyAgCisgIGRlZiByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICBieXRlcyA9IFtdCisgICAg
NC50aW1lcyB7CisgICAgICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQorICAgIH0KKyAgICAKKyAgICBp
ZiBlbmRpYW5uZXNzID09IDpsaXR0bGUKKyAgICAgICMgTGl0dGxlIGVuZGlhbgorICAgICAgKGJ5
dGVzWzBdIDw8IDAgfAorICAgICAgIGJ5dGVzWzFdIDw8IDggfAorICAgICAgIGJ5dGVzWzJdIDw8
IDE2IHwKKyAgICAgICBieXRlc1szXSA8PCAyNCkKKyAgICBlbHNlCisgICAgICAjIEJpZyBlbmRp
YW4KKyAgICAgIChieXRlc1swXSA8PCAyNCB8CisgICAgICAgYnl0ZXNbMV0gPDwgMTYgfAorICAg
ICAgIGJ5dGVzWzJdIDw8IDggfAorICAgICAgIGJ5dGVzWzNdIDw8IDApCisgICAgZW5kCisgIGVu
ZAorICAKKyAgWzpsaXR0bGUsIDpiaWddLmVhY2ggeworICAgIHwgZW5kaWFubmVzcyB8CisgICAg
bWFnaWNCeXRlcyA9IFtdCisgICAgTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICAgIHwgbnVtYmVy
IHwKKyAgICAgIGN1cnJlbnRCeXRlcyA9IFtdCisgICAgICA0LnRpbWVzIHsKKyAgICAgICAgY3Vy
cmVudEJ5dGVzIDw8IChudW1iZXIgJiAweGZmKQorICAgICAgICBudW1iZXIgPj49IDgKKyAgICAg
IH0KKyAgICAgIGlmIGVuZGlhbm5lc3MgPT0gOmJpZworICAgICAgICBjdXJyZW50Qnl0ZXMucmV2
ZXJzZSEKKyAgICAgIGVuZAorICAgICAgbWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0ZXMKKyAgICB9
CisgICAgCisgICAgRmlsZS5vcGVuKGZpbGUsICJyIikgeworICAgICAgfCBpbnAgfAorICAgICAg
d2hlcmVJbk1hcmtlciA9IDAKKyAgICAgIGxvb3AgeworICAgICAgICBieXRlID0gaW5wLmdldGJ5
dGUKKyAgICAgICAgYnJlYWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgaWYgYnl0ZSA9PSBtYWdpY0J5
dGVzW3doZXJlSW5NYXJrZXJdCisgICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisgICAgICAg
ICAgaWYgd2hlcmVJbk1hcmtlciA9PSBtYWdpY0J5dGVzLnNpemUKKyAgICAgICAgICAgICMgV2Ug
aGF2ZSBhIG1hdGNoISBJZiB3ZSBoYXZlIG5vdCB5ZXQgcmVhZCB0aGUgZW5kaWFubmVzcyBtYXJr
ZXIgYW5kIGluZGV4LAorICAgICAgICAgICAgIyB0aGVuIHJlYWQgdGhvc2Ugbm93OyBvdGhlcndp
c2UgcmVhZCBhbiBvZmZzZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIG5vdCBpbmRl
eAorICAgICAgICAgICAgICBpbmRleCA9IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICBvZmZzZXRzIDw8IHJlYWRJbnQoZW5kaWFubmVzcywg
aW5wKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdoZXJlSW5N
YXJrZXIgPSAwCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICB3aGVyZUlu
TWFya2VyID0gMAorICAgICAgICBlbmQKKyAgICAgIH0KKyAgICB9CisgICAgCisgICAgYnJlYWsg
aWYgaW5kZXgKKyAgfQorICAKKyAgcmFpc2UgdW5sZXNzIGluZGV4CisgIAorICBbb2Zmc2V0cywg
aW5kZXhdCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgYnVpbGRP
ZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpIC0+IFtvZmZzZXRzLCBzaXplc10gICAgICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIEJ1aWxkcyBhIG1hcHBpbmcgYmV0d2VlbiBTdHJ1
Y3RPZmZzZXQgbm9kZXMgYW5kIHRoZWlyIHZhbHVlcy4gICAgICAgICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlz
dCkKKyAgb2Zmc2V0c01hcCA9IHt9CisgIHNpemVzTWFwID0ge30KKyAgYXN0T2Zmc2V0c0xpc3Qg
PSBvZmZzZXRzTGlzdChhc3QpCisgIGFzdFNpemVzTGlzdCA9IHNpemVzTGlzdChhc3QpCisgIHJh
aXNlIHVubGVzcyBhc3RPZmZzZXRzTGlzdC5zaXplICsgYXN0U2l6ZXNMaXN0LnNpemUgPT0gb2Zm
c2V0c0xpc3Quc2l6ZQorICBvZmZzZXRzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7CisgICAg
fCBzdHJ1Y3RPZmZzZXQsIGluZGV4IHwKKyAgICBvZmZzZXRzTWFwW3N0cnVjdE9mZnNldF0gPSBv
ZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIHNpemVzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7
CisgICAgfCBzaXplb2YsIGluZGV4IHwKKyAgICBzaXplc01hcFtzaXplb2ZdID0gb2Zmc2V0c0xp
c3Quc2hpZnQKKyAgfQorICBbb2Zmc2V0c01hcCwgc2l6ZXNNYXBdCitlbmQKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1OTEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImluc3RydWN0aW9ucyIKK3JlcXVpcmUgInJlZ2lzdGVy
cyIKKworY2xhc3MgVG9rZW4KKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4sIDpzdHJpbmcKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cmluZykKKyAgICBAY29kZU9yaWdpbiA9
IGNvZGVPcmlnaW4KKyAgICBAc3RyaW5nID0gc3RyaW5nCisgIGVuZAorICAKKyAgZGVmID09KG90
aGVyKQorICAgIGlmIG90aGVyLmlzX2E/IFRva2VuCisgICAgICBAc3RyaW5nID09IG90aGVyLnN0
cmluZworICAgIGVsc2UKKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIKKyAgICBlbmQKKyAgZW5kCisg
IAorICBkZWYgPX4ob3RoZXIpCisgICAgQHN0cmluZyA9fiBvdGhlcgorICBlbmQKKyAgCisgIGRl
ZiB0b19zCisgICAgIiN7QHN0cmluZy5pbnNwZWN0fSBhdCBsaW5lICN7Y29kZU9yaWdpbn0iCisg
IGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgY29tbWVudC5lbXB0
eT8KKyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfSIKKyAgICBlbHNlCisgICAgICBy
YWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc306ICN7Y29tbWVudFswXX0iCisgICAgZW5kCisgIGVu
ZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBsZXhlci4g
VGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdG9rZW5zLiAgICAgICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBsZXgoc3RyKQorICBy
ZXN1bHQgPSBbXQorICBsaW5lTnVtYmVyID0gMQorICB3aGlsZSBub3Qgc3RyLmVtcHR5PworICAg
IGNhc2Ugc3RyCisgICAgd2hlbiAvXEFcIyhbXlxuXSopLworICAgICAgIyBjb21tZW50LCBpZ25v
cmUKKyAgICB3aGVuIC9cQVxuLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVy
LCAkJikKKyAgICAgIGxpbmVOdW1iZXIgKz0gMQorICAgIHdoZW4gL1xBW2EtekEtWl0oW2EtekEt
WjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAg
IHdoZW4gL1xBXC4oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxp
bmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBXyhbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3Vs
dCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEEoWyBcdF0rKS8KKyAg
ICAgICMgd2hpdGVzcGFjZSwgaWdub3JlCisgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSspLwor
ICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAgICB3
aGVuIC9cQTAoWzAtN10rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwg
JCYub2N0LnRvX3MpCisgICAgd2hlbiAvXEEoWzAtOV0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tl
bi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEE6Oi8KKyAgICAgIHJlc3VsdCA8PCBU
b2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFbOixcKFwpXFtcXT1cK1wtKl0v
CisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIGVsc2UKKyAg
ICAgIHJhaXNlICJMZXhlciBlcnJvciBhdCBsaW5lIG51bWJlciAje2xpbmVOdW1iZXJ9LCB1bmV4
cGVjdGVkIHNlcXVlbmNlICN7c3RyWzAuLjIwXS5pbnNwZWN0fSIKKyAgICBlbmQKKyAgICBzdHIg
PSAkfi5wb3N0X21hdGNoCisgIGVuZAorICByZXN1bHQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBUb2tlbiBpZGVudGlmaWNhdGlvbi4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworCitkZWYgaXNSZWdpc3Rlcih0b2tlbikKKyAgdG9rZW4gPX4gUkVHSVNURVJf
UEFUVEVSTgorZW5kCisKK2RlZiBpc0luc3RydWN0aW9uKHRva2VuKQorICB0b2tlbiA9fiBJTlNU
UlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzS2V5d29yZCh0b2tlbikKKyAgdG9rZW4gPX4g
L1xBKCh0cnVlKXwoZmFsc2UpfChpZil8KHRoZW4pfChlbHNlKXwoZWxzaWYpfChlbmQpfChhbmQp
fChvcil8KG5vdCl8KG1hY3JvKXwoY29uc3QpfChzaXplb2YpfChlcnJvcikpXFovIG9yCisgICAg
dG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTiBvcgorICAgIHRva2VuID1+IElOU1RSVUNUSU9OX1BB
VFRFUk4KK2VuZAorCitkZWYgaXNJZGVudGlmaWVyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbYS16
QS1aXShbYS16QS1aMC05X10qKVxaLyBhbmQgbm90IGlzS2V5d29yZCh0b2tlbikKK2VuZAorCitk
ZWYgaXNMYWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXyhbYS16QS1aMC05X10qKVxaLworZW5k
CisKK2RlZiBpc0xvY2FsTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQVwuKFthLXpBLVowLTlf
XSopXFovCitlbmQKKworZGVmIGlzVmFyaWFibGUodG9rZW4pCisgIGlzSWRlbnRpZmllcih0b2tl
bikgb3IgaXNSZWdpc3Rlcih0b2tlbikKK2VuZAorCitkZWYgaXNJbnRlZ2VyKHRva2VuKQorICB0
b2tlbiA9fiAvXEFbMC05XS8KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBUaGUgcGFyc2VyLiBUYWtlcyBhbiBhcnJheSBvZiB0b2tlbnMgYW5kIHJldHVybnMgYW4g
QVNULiBNZXRob2RzICAgICAjCisjIG90aGVyIHRoYW4gcGFyc2UodG9rZW5zKSBhcmUgbm90IGZv
ciBwdWJsaWMgY29uc3VtcHRpb24uICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisKK2NsYXNzIFBhcnNlcgorICBkZWYgaW5pdGlhbGl6ZSh0b2tlbnMpCisg
ICAgQHRva2VucyA9IHRva2VucworICAgIEBpZHggPSAwCisgIGVuZAorICAKKyAgZGVmIHBhcnNl
RXJyb3IoKmNvbW1lbnQpCisgICAgaWYgQHRva2Vuc1tAaWR4XQorICAgICAgQHRva2Vuc1tAaWR4
XS5wYXJzZUVycm9yKCpjb21tZW50KQorICAgIGVsc2UKKyAgICAgIGlmIGNvbW1lbnQuZW1wdHk/
CisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZSIKKyAgICAgIGVsc2UK
KyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlOiAje2NvbW1lbnRbMF19
IgorICAgICAgZW5kCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGNvbnN1bWUocmVnZXhwKQor
ICAgIGlmIHJlZ2V4cAorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9fiBy
ZWdleHAKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAaWR4ID09IEB0b2tlbnMu
bGVuZ3RoCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgIGVuZAorICAKKyAgZGVmIHNraXBOZXdM
aW5lCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICBAaWR4ICs9IDEKKyAg
ICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgaWYgQHRva2Vu
c1tAaWR4XSA9PSAibm90IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZVByZWRpY2F0ZUF0
b20KKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAg
ICBza2lwTmV3TGluZQorICAgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAgICAg
IHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInRydWUiCisgICAgICByZXN1bHQg
PSBUcnVlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lm
IEB0b2tlbnNbQGlkeF0gPT0gImZhbHNlIgorICAgICAgcmVzdWx0ID0gRmFsc2UuaW5zdGFuY2UK
KyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0
b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IFNldHRpbmcuZm9yTmFtZShAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgQGlkeCArPSAxCisgICAg
ICByZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIHBhcnNlUHJlZGljYXRlQW5kCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBdG9t
CisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiYW5kIgorICAgICAgY29kZU9yaWdpbiA9IEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGlu
ZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgIHJlc3VsdCA9IEFuZC5u
ZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5k
CisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGUKKyAgICAjIHNvbWUgZXhhbXBsZXMgb2YgcHJlY2Vk
ZW5jZToKKyAgICAjIG5vdCBhIGFuZCBiIC0+IChub3QgYSkgYW5kIGIKKyAgICAjIGEgYW5kIGIg
b3IgYyAtPiAoYSBhbmQgYikgb3IgYworICAgICMgYSBvciBiIGFuZCBjIC0+IGEgb3IgKGIgYW5k
IGMpCisgICAgCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICB3aGlsZSBAdG9r
ZW5zW0BpZHhdID09ICJvciIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0g
cGFyc2VQcmVkaWNhdGVBbmQKKyAgICAgIHJlc3VsdCA9IE9yLm5ldyhjb2RlT3JpZ2luLCByZXN1
bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVZh
cmlhYmxlCisgICAgaWYgaXNSZWdpc3RlcihAdG9rZW5zW0BpZHhdKQorICAgICAgaWYgQHRva2Vu
c1tAaWR4XSA9fiBGUFJfUEFUVEVSTgorICAgICAgICByZXN1bHQgPSBGUFJlZ2lzdGVySUQuZm9y
TmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAg
ICAgZWxzZQorICAgICAgICByZXN1bHQgPSBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVuZAorICAgIGVsc2lm
IGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgcmVzdWx0ID0gVmFyaWFibGUuZm9y
TmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAg
IGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1
bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VBZGRyZXNzKG9mZnNldCkKKyAgICBwYXJzZUVycm9y
IHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4KKyAgICAKKyAgICAjIFRocmVlIHBvc3NpYmlsaXRpZXM6CisgICAgIyBb
XSAgICAgICAtPiBBYnNvbHV0ZUFkZHJlc3MKKyAgICAjIFthXSAgICAgIC0+IEFkZHJlc3MKKyAg
ICAjIFthLGJdICAgIC0+IEJhc2VJbmRleCB3aXRoIHNjYWxlID0gMQorICAgICMgW2EsYixjXSAg
LT4gQmFzZUluZGV4CisgICAgCisgICAgQGlkeCArPSAxCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9
PSAiXSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmV0dXJuIEFic29sdXRlQWRkcmVzcy5uZXco
Y29kZU9yaWdpbiwgb2Zmc2V0KQorICAgIGVuZAorICAgIGEgPSBwYXJzZVZhcmlhYmxlCisgICAg
aWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIHJlc3VsdCA9IEFkZHJlc3MubmV3KGNvZGVP
cmlnaW4sIGEsIG9mZnNldCkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9r
ZW5zW0BpZHhdID09ICIsIgorICAgICAgQGlkeCArPSAxCisgICAgICBiID0gcGFyc2VWYXJpYWJs
ZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUlu
ZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCAxLCBvZmZzZXQpCisgICAgICBlbHNlCisgICAgICAg
IHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBbIjEiLCAiMiIsICI0IiwgIjgiXS5tZW1iZXI/
IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIGMgPSBAdG9rZW5zW0BpZHhdLnN0cmluZy50
b19pCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5z
W0BpZHhdID09ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4s
IGEsIGIsIGMsIG9mZnNldCkKKyAgICAgIGVuZAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICAg
IHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUNvbG9uQ29sb24KKyAgICBza2lwTmV3TGlu
ZQorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICBwYXJzZUVy
cm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgIG5hbWVzID0gW0B0b2tl
bnNbQGlkeF0uc3RyaW5nXQorICAgIEBpZHggKz0gMQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0g
PT0gIjo6IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50
aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgbmFtZXMgPDwgQHRva2Vuc1tAaWR4XS5zdHJpbmcK
KyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICAgIHJhaXNlIGlmIG5hbWVzLmVtcHR5PworICAg
IFtjb2RlT3JpZ2luLCBuYW1lc10KKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uQXRv
bQorICAgIHNraXBOZXdMaW5lCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIEBp
ZHggKz0gMQorICAgICAgTmVnSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3Jp
Z2luLCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigi
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAg
cGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJbnRlZ2VyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJl
c3VsdCA9IEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0Bp
ZHhdLnN0cmluZy50b19pKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNp
ZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBw
YXJzZUNvbG9uQ29sb24KKyAgICAgIGlmIG5hbWVzLnNpemUgPiAxCisgICAgICAgIFN0cnVjdE9m
ZnNldC5mb3JGaWVsZChjb2RlT3JpZ2luLCBuYW1lc1swLi4tMl0uam9pbignOjonKSwgbmFtZXNb
LTFdKQorICAgICAgZWxzZQorICAgICAgICBWYXJpYWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4sIG5h
bWVzWzBdKQorICAgICAgZW5kCisgICAgZWxzaWYgaXNSZWdpc3RlciBAdG9rZW5zW0BpZHhdCisg
ICAgICBwYXJzZVZhcmlhYmxlCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIgor
ICAgICAgQGlkeCArPSAxCisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xv
bgorICAgICAgU2l6ZW9mLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXMuam9pbignOjonKSkKKyAg
ICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNl
RXhwcmVzc2lvbk11bAorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNz
aW9uQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICBpZiBAdG9rZW5z
W0BpZHhdID09ICIqIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gTXVsSW1t
ZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4
cHJlc3Npb25BdG9tKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAg
ZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIGNvdWxkQmVFeHByZXNzaW9uCisgICAg
QHRva2Vuc1tAaWR4XSA9PSAiLSIgb3IgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIiBvciBpc0lu
dGVnZXIoQHRva2Vuc1tAaWR4XSkgb3IgaXNWYXJpYWJsZShAdG9rZW5zW0BpZHhdKQorICBlbmQK
KyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb24KKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9
IHBhcnNlRXhwcmVzc2lvbk11bAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0
b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIrIgorICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tA
aWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBl
bHNpZiBAdG9rZW5zW0BpZHhdID09ICItIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVz
dWx0ID0gU3ViSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVz
dWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAg
ICBlbmQKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5k
KGNvbW1lbnQpCisgICAgaWYgY291bGRCZUV4cHJlc3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4
cHJlc3Npb24KKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRk
cmVzcyhleHByKQorICAgICAgZWxzZQorICAgICAgICBleHByCisgICAgICBlbmQKKyAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXco
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCAwKSkKKyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNb
QGlkeF0KKyAgICAgIHJlc3VsdCA9IExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4sIExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5z
W0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lm
IGlzTG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVm
ZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBp
ZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50
KQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tp
cE5ld0xpbmUKKyAgICBjb25zdW1lKC9cQVwoXFovKQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAg
bG9vcCB7CisgICAgICBza2lwTmV3TGluZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIK
KyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZp
ZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgdmFyaWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUo
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAg
QGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gIikiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxz
aWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxz
ZQorICAgICAgICAgIHBhcnNlRXJyb3IKKyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAg
IHBhcnNlRXJyb3IKKyAgICAgIGVuZAorICAgIH0KKyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAor
ICBkZWYgcGFyc2VTZXF1ZW5jZShmaW5hbCwgY29tbWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4g
PSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAg
ICAgIGlmIChAaWR4ID09IEB0b2tlbnMubGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBh
bmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0
b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAjIGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEK
KyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNWYXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAg
ICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4s
IEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiPSIKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIHZhbHVlID0gcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJs
ZS5uYW1lfSIpCisgICAgICAgIGxpc3QgPDwgQ29uc3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0g
ImVycm9yIgorICAgICAgICBsaXN0IDw8IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4pCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYi
CisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAg
QGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNl
UHJlZGljYXRlCisgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAg
c2tpcE5ld0xpbmUKKyAgICAgICAgaWZUaGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmln
aW4sIHByZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFov
LCAid2hpbGUgaW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBs
aXN0IDw8IGlmVGhlbkVsc2UKKyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYi
CisgICAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRl
ID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8p
CisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2Uu
bmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQp
fChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIp
KQorICAgICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlm
VGhlbkVsc2UgPSBlbHNlQ2FzZQorICAgICAgICBlbmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4
XSA9PSAiZWxzZSIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVs
c2VDYXNlID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBj
YXNlIGZvciBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKQorICAgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9
PSAiZW5kIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0
b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAg
ICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAg
ICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICB2YXJpYWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNl
cXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIGxpc3QgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUs
IHZhcmlhYmxlcywgYm9keSkKKyAgICAgIGVsc2lmIGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4
XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAg
IG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
aWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRv
a2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlv
biwgYW5kIGl0J3MgdGhlIGxhc3Qgb25lLgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lm
IEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0
aW9uLgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUs
IFtdKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBJdCdz
IGRlZmluaXRlbHkgYW4gaW5zdHJ1Y3Rpb24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJh
bmQuCisgICAgICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBm
YWxzZQorICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVy
YW5kKCJ3aGlsZSBpbnNpZGUgb2YgaW5zdHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICBp
ZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9r
ZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3Ry
dWN0aW9uIGFuZCBvZiB0aGUgc2VxdWVuY2UuCisgICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2Ug
PSB0cnVlCisgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0Bp
ZHhdID09ICIsIgorICAgICAgICAgICAgICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4i
CisgICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2Zp
bmFsfSBhZnRlciAje29wZXJhbmRzLmxhc3QuZHVtcH0iKQorICAgICAgICAgICAgZW5kCisgICAg
ICAgICAgfQorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5h
bWUsIG9wZXJhbmRzKQorICAgICAgICAgIGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJy
ZWFrCisgICAgICAgICAgZW5kCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVy
IEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICAgICAgIyBNYWNybyBp
bnZvY2F0aW9uLgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIG9wZXJhbmRzID0gW10K
KyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIiki
CisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsb29w
IHsKKyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tA
aWR4XSA9PSAibWFjcm8iCisgICAgICAgICAgICAgICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQor
ICAgICAgICAgICAgICAgIGNvZGVPcmlnaW5Jbm5lciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdp
bgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9
IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5j
ZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBh
cmd1bWVudCB0byAje25hbWV9IikKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
ICAgICAgICBvcGVyYW5kcyA8PCBNYWNyby5uZXcoY29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlh
YmxlcywgYm9keSkKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9wZXJhbmRz
IDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIp
CisgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAg
ICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0g
PT0gIiwiCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBwYXJzZUVycm9yICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJp
bmcuaW5zcGVjdH0gd2hpbGUgcGFyc2luZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisg
ICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgfQorICAgICAgICAgIGVuZAorICAgICAgICAg
IGxpc3QgPDwgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAg
ICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IgIkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFt
ZX0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlz
TG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09
ICI6IgorICAgICAgICAjIEl0J3MgYSBsYWJlbC4KKyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisg
ICAgICAgICAgbGlzdCA8PCBMYWJlbC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAg
IGVsc2UKKyAgICAgICAgICBsaXN0IDw8IExvY2FsTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBu
YW1lKQorICAgICAgICBlbmQKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNlCisgICAgICAg
IHBhcnNlRXJyb3IgIkV4cGVjdGluZyB0ZXJtaW5hbCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAg
ICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisg
IGVuZAorZW5kCisKK2RlZiBwYXJzZSh0b2tlbnMpCisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9r
ZW5zKQorICBwYXJzZXIucGFyc2VTZXF1ZW5jZShuaWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK0dQUlMgPQorICBbCisgICAidDAiLAorICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMi
LAorICAgInQ0IiwKKyAgICJjZnIiLAorICAgImEwIiwKKyAgICJhMSIsCisgICAicjAiLAorICAg
InIxIiwKKyAgICJzcCIKKyAgXQorCitGUFJTID0KKyAgWworICAgImZ0MCIsCisgICAiZnQxIiwK
KyAgICJmdDIiLAorICAgImZ0MyIsCisgICAiZnQ0IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisg
ICAiZmExIiwKKyAgICJmYTIiLAorICAgImZhMyIsCisgICAiZnIiCisgIF0KKworUkVHSVNURVJT
ID0gR1BSUyArIEZQUlMKKworR1BSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJT
LmpvaW4oJyl8KCcpICsgJykpXFxaJykKK0ZQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgn
ICsgRlBSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdl
eHAubmV3KCdcXEEoKCcgKyBSRUdJU1RFUlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyMjEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFy
c2VyIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJp
YXRpb25zICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29tcHV0ZXMgYW4gYXJy
YXkgb2Ygc2V0dGluZ3MgbWFwcywgd2hlcmUgYSBzZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMgIwor
IyBhIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhc3NlbWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4g
VGhlIG1hcCAgICAgICAjCisjIGNvbnRhaW5zIGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFy
ZSBzZXR0aW5ncyBuYW1lcyAoc3RyaW5ncykgYW5kICMKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVh
bnMgKHRydWUgZm9yIGVuYWJsZWQsIGZhbHNlIGZvciBkaXNhYmxlZCkuICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0
aW9ucyhhc3QpCisgIHNldHRpbmdzQ29tYmluYXRpb25zID0gW10KKyAgCisgIGRlZiBzZXR0aW5n
c0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG1hcFNvRmFyLCByZW1haW5pbmcpCisg
ICAgaWYgcmVtYWluaW5nLmVtcHR5PworICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFw
U29GYXIKKyAgICAgIHJldHVybgorICAgIGVuZAorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFy
LmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gdHJ1ZQorICAgIHNldHRpbmdzQ29tYmlu
YXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICAg
IAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0g
ZmFsc2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01h
cCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0
dGluZ3NDb21iaW5hdGlvbnMsIHt9LCAoYXN0LmZpbHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7
fHZ8IHYubmFtZX0gKyBbIlg4NiIsICJBUk12NyJdKS51bmlxKQorICAKKyAgc2V0dGluZ3NDb21i
aW5hdGlvbnMKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JT
ZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5k
IHwgLi4uIH0gICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBEZXRlcm1pbmVz
IGlmIHRoZSBzZXR0aW5ncyBjb21iaW5hdGlvbiBpcyB2YWxpZCwgYW5kIGlmIHNvLCBjYWxscyAg
ICAjCisjIHRoZSBibG9jayB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgbmVlZCB0byBnZW5lcmF0
ZSBjb2RlLiAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK
K2RlZiBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2gg
YXJjaGl0ZWN0dXJlcyB0aGlzIGNvbWJpbmF0b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNs
YWltZWRCYWNrZW5kcyA9IDAKKyAgc2VsZWN0ZWRCYWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVh
Y2ggeworICAgIHwgYmFja2VuZCB8CisgICAgaXNTdXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdz
W2JhY2tlbmRdCisgICAgcmFpc2UgdW5sZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNs
YWltZWRCYWNrZW5kcyArPSBpZiBpc1N1cHBvcnRlZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlm
IGlzU3VwcG9ydGVkCisgICAgICBzZWxlY3RlZEJhY2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisg
IH0KKyAgCisgIHJldHVybiBpZiBudW1DbGFpbWVkQmFja2VuZHMgPiAxCisgIAorICAjIFJlc29s
dmUgdGhlIEFTVCBkb3duIHRvIGEgbG93LWxldmVsIGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRp
b25hbHMpLgorICBsb3dMZXZlbEFTVCA9IGFzdC5yZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0
aW5ncykKKyAgCisgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3Rl
ZEJhY2tlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JF
YWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXgg
fCAuLi4gfSAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFs
aWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgc2V0dGluZ3NDb21iaW5hdGlvbnMpIHsgICAgICAg
ICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4g
fSAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFeGVjdXRlcyB0aGUgZ2l2
ZW4gYmxvY2sgZm9yIGVhY2ggdmFsaWQgc2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlICAjCisj
IHNldHRpbmdzIG1hcC4gVGhlIGFzdCBwYXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQg
ICAgICAgICAgICAgICMKKyMgKGFzdC5yZXNvbHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBm
aXJzdCBmb3JtIHdpbGwgY2FsbCBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSBmb3Ig
eW91LiAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JFYWNo
VmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgKm9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlv
bnMpCisgIHJhaXNlIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEKKyAg
CisgIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuZW1wdHk/CisgICAgc2V0dGluZ3ND
b21iaW5hdGlvbnMgPSBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBlbHNlCisg
ICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBvcHRpb25hbFNldHRpbmdzQ29tYmlhdGlvbnNbMF0K
KyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucy5lYWNoX3dpdGhfaW5kZXggeworICAg
IHwgY29uY3JldGVTZXR0aW5ncywgaW5kZXggfAorICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0
dGluZ3MsIGFzdCkgeworICAgICAgfCBjb25jcmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJh
Y2tlbmQgfAorICAgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tl
bmQsIGluZGV4CisgICAgfQorICB9CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFJldHVybnMgdGhlIEMr
KyBjb2RlIHVzZWQgdG8gdGVzdCBpZiB3ZSBhcmUgaW4gYSBjb25maWd1cmF0aW9uIHRoYXQgICMK
KyMgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIGNvbmNyZXRlIHNldHRpbmdzLiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVm
IGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNl
dHRpbmdzLnRvX2EuY29sbGVjdHsKKyAgICB8IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisgICAg
ICAgIiIKKyAgICAgZWxzZQorICAgICAgICIhIgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIg
KyBwYWlyWzBdCisgIH0uam9pbigiICYmICIpCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgaXNBU1RFcnJvbmVvdXMoYXN0KSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRlc3RzIHRv
IHNlZSBpZiB0aGUgQVNUIGNsYWltcyB0aGF0IHRoZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0
aGUgICMKKyMgdXNlcidzIGNvZGUsIGFmdGVyIHNldHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJv
ciBub2Rlcy4gICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KworZGVmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAgbm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5
PworZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGFzc2VydENvbmZp
Z3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBFbWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdl
J3JlIHVzaW5nIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uLiAjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworCitkZWYgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdz
KQorICBwdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICBwdXRzICIjZWxz
ZSIKKyAgcHV0cyAiI2Vycm9yIFwiQ29uZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAgcHV0cyAi
I2VuZGlmIgorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGVtaXRD
b2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkgeyAgICAg
ICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4uIH0g
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEVtaXRzIGFsbCBy
ZWxldmFudCBndWFyZHMgdG8gc2VlIGlmIHRoZSBjb25maWd1cmF0aW9uIGhvbGRzIGFuZCAgICAg
ICMKKyMgY2FsbHMgdGhlIGJsb2NrIGlmIHRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBlcnJvbmVv
dXMuICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor
ZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2Vu
ZCkKKyAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIGlmIGlz
QVNURXJyb25lb3VzKGFzdCkKKyAgICBwdXRzICIjZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRp
b24uXCIiCisgIGVsc2lmIG5vdCBXT1JLSU5HX0JBQ0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAg
ICBwdXRzICIjZXJyb3IgXCJUaGlzIGJhY2tlbmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisg
IGVsc2UKKyAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisg
IAorICBwdXRzICIjZW5kaWYiCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tl
bmQsIGluZGV4IHwgLi4uIH0gICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
RW1pdHMgZ3VhcmQgY29kZXMgZm9yIGFsbCB2YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxz
IHRoZSBibG9jayAgIworIyBmb3IgdGhvc2UgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQg
YW5kIG5vdCBlcnJvbmVvdXMuICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworCitkZWYgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkKKyAgZm9yRWFj
aFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3Ms
IGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleCB8CisgICAgcHV0cyBjcHBTZXR0aW5nc1Rlc3Qo
Y29uY3JldGVTZXR0aW5ncykKKyAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFT
VCwgYmFja2VuZCwgaW5kZXgKKyAgICBwdXRzICIjZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5y
YgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNTIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgbm9kZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbnN0cnVjdCBh
IG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBJZlRoZW5FbHNlIG5vZGVzIGJ5ICAgICAg
ICMKKyMgc3Vic3RpdHV0aW5nIGNvbmNyZXRlIGJvb2xlYW4gdmFsdWVzIGZvciBlYWNoIFNldHRp
bmcuICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor
Y2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG1hcENoaWxk
cmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRp
bmdzKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZQorICBkZWYgcmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UKKyAgZGVm
IHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNz
IFNldHRpbmcKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZXR0aW5nc1tA
bmFtZV0uYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZAorICBkZWYgcmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVl
IGFuZCBAcmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVu
ZAorZW5kCisKK2NsYXNzIE9yCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAg
KEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgb3IgQHJpZ2h0LnJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBOb3QK
KyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAobm90IEBjaGlsZC5yZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgSWZU
aGVuRWxzZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGlmIEBwcmVkaWNh
dGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZQorICAgICAgQHRoZW5DYXNlLnJlc29s
dmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbHNlCisgICAgICBAZWxzZUNhc2UucmVzb2x2ZVNl
dHRpbmdzKHNldHRpbmdzKQorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQor
ICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIEBs
aXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGl0ZW0gPSBpdGVtLnJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICAgIGlmIGl0ZW0uaXNfYT8gU2VxdWVuY2UKKyAgICAgICAgbmV3
TGlzdCArPSBpdGVtLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtCisg
ICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisg
IGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUuZGVt
YWNyb2lmeShtYWNyb3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgbm9kZS5zdWJzdGl0dXRlKG1hcHBpbmcpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGRlbWFjcm9pZnkoKSBj
b25zdHJ1Y3RzIGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IE1hY3JvICAgICAgICMK
KyMgbm9kZXMsIHdoaWxlIHN1YnN0aXR1dGUoKSByZXBsYWNlcyBWYXJpYWJsZSBub2RlcyB3aXRo
IHRoZSBnaXZlbiAgICAgIworIyBub2RlcyBpbiB0aGUgbWFwcGluZy4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBt
YXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLmRlbWFjcm9pZnkobWFj
cm9zKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG1h
cENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShtYXBw
aW5nKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQor
ICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0
ZUxhYmVscyhtYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8KKyAgZGVm
IHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBteU1hcHBpbmcgPSB7fQorICAgIG1hcHBpbmcuZWFj
aF9wYWlyIHsKKyAgICAgIHwga2V5LCB2YWx1ZSB8CisgICAgICB1bmxlc3MgQHZhcmlhYmxlcy5p
bmNsdWRlPyBrZXkKKyAgICAgICAgbXlNYXBwaW5nW2tleV0gPSB2YWx1ZQorICAgICAgZW5kCisg
ICAgfQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vi
c3RpdHV0ZShteU1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZQor
ICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1h
cHBpbmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisK
K2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBp
ZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2Vs
ZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgc3Vic3RpdHV0
ZShjb25zdGFudHMpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbXlDb25zdGFudHMgPSBjb25zdGFu
dHMuZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5p
c19hPyBDb25zdERlY2wKKyAgICAgICAgbXlDb25zdGFudHNbaXRlbS52YXJpYWJsZV0gPSBpdGVt
LnZhbHVlLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICBlbHNlCisgICAgICAgIG5ld0xp
c3QgPDwgaXRlbS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZW5kCisgICAgfQorICAg
IFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKKyAgCisgIGRlZiByZW5h
bWVMYWJlbHMKKyAgICBtYXBwaW5nID0ge30KKyAgICAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAg
IHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAgbWFwcGlu
Z1tpdGVtXSA9IExvY2FsTGFiZWwudW5pcXVlCisgICAgICBlbmQKKyAgICB9CisgICAgCisgICAg
c3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICBlbmQKKyAgCisgIGRlZiBkZW1hY3JvaWZ5KG1h
Y3JvcykKKyAgICBteU1hY3JvcyA9IG1hY3Jvcy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAg
IHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgIG15TWFjcm9zW2l0
ZW0ubmFtZV0gPSBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdCA9IFtdCisgICAg
QGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybwor
ICAgICAgICAjIElnbm9yZS4KKyAgICAgIGVsc2lmIGl0ZW0uaXNfYT8gTWFjcm9DYWxsCisgICAg
ICAgIG1hcHBpbmcgPSB7fQorICAgICAgICBteU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisgICAg
ICAgIHJhaXNlICJDb3VsZCBub3QgZmluZCBtYWNybyAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNv
ZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgbXlNYWNyb3NbaXRlbS5uYW1lXQorICAgICAgICByYWlz
ZSAiQXJndW1lbnQgY291bnQgbWlzbWF0Y2ggZm9yIGNhbGwgdG8gI3tpdGVtLm5hbWV9IGF0ICN7
aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIGl0ZW0ub3BlcmFuZHMuc2l6ZSA9PSBteU1h
Y3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlcy5zaXplCisgICAgICAgIGl0ZW0ub3BlcmFuZHMuc2l6
ZS50aW1lcyB7CisgICAgICAgICAgfCBpZHggfAorICAgICAgICAgIGlmIGl0ZW0ub3BlcmFuZHNb
aWR4XS5pc19hPyBWYXJpYWJsZSBhbmQgbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVd
CisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lk
eF0ubmFtZV0gPSBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAg
IG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAor
ICAgICAgICAgIGVsc2lmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBNYWNybworICAgICAgICAg
ICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0g
aXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFt
ZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gbmlsCisg
ICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0g
aXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbmV3
TGlzdCArPSBteU1hY3Jvc1tpdGVtLm5hbWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1h
Y3JvaWZ5KG15TXlNYWNyb3MpLnJlbmFtZUxhYmVscy5saXN0CisgICAgICBlbHNlCisgICAgICAg
IG5ld0xpc3QgPDwgaXRlbS5kZW1hY3JvaWZ5KG15TWFjcm9zKQorICAgICAgZW5kCisgICAgfQor
ICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KS5zdWJzdGl0dXRlKHt9KQorICBl
bmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnJlc29s
dmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGhhcyBvZmZz
ZXQgdmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMgICAgICAgIworIyBvZmZzZXRzLiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNv
bHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNo
aWxkIHwKKyAgICAgIGNoaWxkLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIH0K
KyAgZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0CisgIGRlZiByZXNvbHZlT2Zmc2V0cyhv
ZmZzZXRzLCBzaXplcykKKyAgICBpZiBvZmZzZXRzW3NlbGZdCisgICAgICBJbW1lZGlhdGUubmV3
KGNvZGVPcmlnaW4sIG9mZnNldHNbc2VsZl0pCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVu
ZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNl
dHMsIHNpemVzKQorICAgIGlmIHNpemVzW3NlbGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVP
cmlnaW4sIHNpemVzW3NlbGZdKQorICAgIGVsc2UKKyAgICAgIHB1dHMgIkNvdWxkIG5vdCBmaW5k
ICN7c2VsZi5pbnNwZWN0fSBpbiAje3NpemVzLmtleXMuaW5zcGVjdH0iCisgICAgICBwdXRzICJz
aXplcyA9ICN7c2l6ZXMuaW5zcGVjdH0iCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5k
CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUuZm9sZCAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBSZXNvbHZlIGNvbnN0YW50IHJlZmVyZW5jZXMgYW5kIGNvbXB1dGUg
YXJpdGhtZXRpYyBleHByZXNzaW9ucy4gICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiBmb2xkCisgICAgbWFwQ2hpbGRyZW4geworICAg
ICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5mb2xkCisgICAgfQorICBlbmQKK2VuZAorCitjbGFz
cyBBZGRJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAg
QHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8g
SW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUK
KyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICsgQHJpZ2h0LnZhbHVl
KQorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxl
ZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2Vs
ZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBy
aWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0
LnZhbHVlIC0gQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVz
CisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0
LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAg
cmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUu
bmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICogQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAor
CitjbGFzcyBOZWdJbW1lZGlhdGUKKyAgZGVmIGZvbGQKKyAgICBAY2hpbGQgPSBAY2hpbGQuZm9s
ZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAY2hpbGQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1t
ZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtQGNoaWxkLnZhbHVlKQorICBlbmQKK2VuZAorCisjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnJlc29sdmVBZnRlclNldHRpbmdz
KG9mZnNldHMsIHNpemVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgQ29tcGlsZSBhc3NlbWJseSBhZ2FpbnN0IGEgc2V0IG9mIG9mZnNldHMuICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZShvZmZzZXRzLCBzaXplcykKKyAgICBkZW1hY3Jv
aWZ5KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykuZm9sZAorICBlbmQKK2VuZAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDY3MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICBjYXNlIG5h
bWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0MSIsICJhMSIsICJyMSIsICJ0MiIsICJ0
MyIKKyAgICAgIHRydWUKKyAgICB3aGVuICJ0NCIsICJjZnIiCisgICAgICBmYWxzZQorICAgIGVs
c2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2lu
ZCkKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgIGNhc2Ug
a2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWFsIgorICAgICAgd2hlbiA6aGFsZgor
ICAgICAgICAiJWF4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWF4IgorICAgICAgZWxz
ZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisg
ICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkbCIKKyAgICAgIHdo
ZW4gOmhhbGYKKyAgICAgICAgIiVkeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkeCIK
KyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQyIgorICAg
ICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlY2wiCisgICAgICB3aGVu
IDpoYWxmCisgICAgICAgICIlY3giCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlY3giCisg
ICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MyIKKyAgICAg
IGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWJsIgorICAgICAgd2hlbiA6
aGFsZgorICAgICAgICAiJWJ4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWJ4IgorICAg
ICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDQiCisgICAgICBj
YXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzaWwiCisgICAgICB3aGVuIDpo
YWxmCisgICAgICAgICIlc2kiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlc2kiCisgICAg
ICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJjZnIiCisgICAgICBj
YXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkaWwiCisgICAgICB3aGVuIDpo
YWxmCisgICAgICAgICIlZGkiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlZGkiCisgICAg
ICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJzcCIKKyAgICAgIGNh
c2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNwbCIKKyAgICAgIHdoZW4gOmhh
bGYKKyAgICAgICAgIiVzcCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzcCIKKyAgICAg
IGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIHJhaXNlCisg
ICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3Bl
cmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgeDg2
T3BlcmFuZChraW5kKQorICAgIHJhaXNlIHVubGVzcyBraW5kID09IDpkb3VibGUKKyAgICBjYXNl
IG5hbWUKKyAgICB3aGVuICJmdDAiLCAiZmEwIiwgImZyIgorICAgICAgIiV4bW0wIgorICAgIHdo
ZW4gImZ0MSIsICJmYTEiCisgICAgICAiJXhtbTEiCisgICAgd2hlbiAiZnQyIiwgImZhMiIKKyAg
ICAgICIleG1tMiIKKyAgICB3aGVuICJmdDMiLCAiZmEzIgorICAgICAgIiV4bW0zIgorICAgIHdo
ZW4gImZ0NCIKKyAgICAgICIleG1tNCIKKyAgICB3aGVuICJmdDUiCisgICAgICAiJXhtbTUiCisg
ICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFu
ZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3Mg
SW1tZWRpYXRlCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiQje3ZhbHVlfSIKKyAgZW5k
CisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIje3ZhbHVlfSIKKyAgZW5kCitlbmQK
KworY2xhc3MgQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVu
ZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje29mZnNldC52YWx1ZX0oI3ti
YXNlLng4Nk9wZXJhbmQoOmludCl9KSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5k
KQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUlu
ZGV4CisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRl
ZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFu
ZCg6aW50KX0sICN7aW5kZXgueDg2T3BlcmFuZCg6aW50KX0sICN7c2NhbGV9KSIKKyAgZW5kCisK
KyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nm9wZXJhbmQoa2luZCl9Igor
ICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9u
WDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAi
I3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisg
ICAgIioje2FkZHJlc3MudmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5j
ZQorICBkZWYgeDg2TGFiZWwKKyAgICBzYW5pdGl6ZUxhYmVsTmFtZShuYW1lKQorICBlbmQKKyAg
ZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgeDg2TGFiZWwKKyAgZW5kCitlbmQKKworY2xh
c3MgTG9jYWxMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2TGFiZWwKKyAgICAiX19vYV8iK25hbWVb
MS4uLTFdCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICB4ODZMYWJlbAor
ICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbgorICBkZWYgeDg2T3BlcmFuZHMoKmtpbmRz
KQorICAgIHJhaXNlIHVubGVzcyBraW5kcy5zaXplID09IG9wZXJhbmRzLnNpemUKKyAgICByZXN1
bHQgPSBbXQorICAgIGtpbmRzLnNpemUudGltZXMgeworICAgICAgfCBpZHggfAorICAgICAgcmVz
dWx0IDw8IG9wZXJhbmRzW2lkeF0ueDg2T3BlcmFuZChraW5kc1tpZHhdKQorICAgIH0KKyAgICBy
ZXN1bHQuam9pbigiLCAiKQorICBlbmQKKworICBkZWYgeDg2U3VmZml4KGtpbmQpCisgICAgY2Fz
ZSBraW5kCisgICAgd2hlbiA6Ynl0ZQorICAgICAgImIiCisgICAgd2hlbiA6aGFsZgorICAgICAg
InciCisgICAgd2hlbiA6aW50CisgICAgICAibCIKKyAgICB3aGVuIDpkb3VibGUKKyAgICAgICJz
ZCIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5k
bGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG51bU9wZXJhbmRzKQorICAgIGlm
IG51bU9wZXJhbmRzID09IDMKKyAgICAgIGlmIG9wZXJhbmRzWzBdID09IG9wZXJhbmRzWzJdCisg
ICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtp
bmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2lmIG9wZXJh
bmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJcdG1vdiN7eDg2U3VmZml4KGtp
bmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9w
ZXJhbmQoa2luZCl9IgorICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisg
ICAgICBlbmQKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0i
CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wKG9wY29kZSwga2luZCkKKyAg
ICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUp
CisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNoaWZ0KG9wY29kZSwga2luZCkKKyAgICBpZiBv
cGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0ZXJJRC5m
b3JOYW1lKG5pbCwgInQyIikKKyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0i
CisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6aW50KX0sICVlY3giCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICVjbCwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBoYW5kbGVYODZEb3VibGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAgIGNh
c2UgbW9kZQorICAgIHdoZW4gOm5vcm1hbAorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDpkb3VibGUpfSIKKyAgICB3aGVuIDpyZXZlcnNlCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlz
ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlIG1vZGUuaW5zcGVjdAorICAg
IGVuZAorICAgICRhc20ucHV0cyAiXHRqbmUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgIGVu
ZAorICAKKyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmUob3Bjb2RlU3VmZml4LCBraW5kKQorICAg
IGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMF0udmFsdWUgPT0g
MCBhbmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAi
ZSIgb3Igb3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2
U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2lm
IG9wZXJhbmRzWzFdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMCBh
bmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIg
b3Igb3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3Vm
Zml4KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAg
ICAgICRhc20ucHV0cyAiXHRjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQK
KyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50QnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkK
KyAgICBoYW5kbGVYODZJbnRDb21wYXJlKGJyYW5jaE9wY29kZVsxLi4tMV0sIGtpbmQpCisgICAg
JGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAg
ZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZCkKKyAgICBpZiBv
cGVyYW5kLnN1cHBvcnRzOEJpdE9uWDg2CisgICAgICAkYXNtLnB1dHMgIlx0I3tzZXRPcGNvZGV9
ICN7b3BlcmFuZC54ODZPcGVyYW5kKDpieXRlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJs
ICN7b3BlcmFuZC54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQp
fSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJh
bmQoOmludCl9LCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJcdCN7c2V0T3Bjb2RlfSAlYWwiCisg
ICAgICAkYXNtLnB1dHMgIlx0bW92emJsICVhbCwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHR4
Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgZW5kCisgIGVuZAor
ICAKKyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmVTZXQoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhh
bmRsZVg4NkludENvbXBhcmUoc2V0T3Bjb2RlWzMuLi0xXSwga2luZCkKKyAgICBoYW5kbGVYODZT
ZXQoc2V0T3Bjb2RlLCBvcGVyYW5kc1syXSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2VGVz
dChraW5kKQorICAgIHZhbHVlID0gb3BlcmFuZHNbMF0KKyAgICBjYXNlIG9wZXJhbmRzLnNpemUK
KyAgICB3aGVuIDIKKyAgICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQor
ICAgIHdoZW4gMworICAgICAgbWFzayA9IG9wZXJhbmRzWzFdCisgICAgZWxzZQorICAgICAgcmFp
c2UgIkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5kcywgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0
ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAgaWYgbWFzay5pc19hPyBJ
bW1lZGlhdGUgYW5kIG1hc2sudmFsdWUgPT0gLTEKKyAgICAgIGlmIHZhbHVlLmlzX2E/IFJlZ2lz
dGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3t2YWx1
ZS54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVs
c2UKKyAgICAgICAgJGFzbS5wdXRzICJcdGNtcCN7eDg2U3VmZml4KGtpbmQpfSAkMCwgI3t2YWx1
ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0
cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7bWFzay54ODZPcGVyYW5kKGtpbmQpfSwgI3t2
YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxl
WDg2QnJhbmNoVGVzdChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5k
KQorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kcy5sYXN0Lng4Nkxh
YmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0VGVzdChzZXRPcGNvZGUsIGtpbmQp
CisgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9w
ZXJhbmRzLmxhc3QpCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wQnJhbmNoKG9wY29kZSwg
YnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29k
ZSwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAg
d2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAg
IGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5z
cGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFy
Z2V0Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5j
aE9wY29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5kcy5zaXplID09IDQgYW5kIG9wZXJhbmRzWzFd
ID09IG9wZXJhbmRzWzJdCisgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBl
bHNlCisgICAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcygic3ViI3t4ODZTdWZmaXgoa2lu
ZCl9Iiwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgZW5kCisgICAgY2FzZSBvcGVyYW5k
cy5zaXplCisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3
aGVuIDMKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJh
aXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29k
ZX0gI3tqdW1wVGFyZ2V0Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgbG93ZXJYODYKKyAg
ICAkYXNtLmNvbW1lbnQgY29kZU9yaWdpblN0cmluZworICAgIGNhc2Ugb3Bjb2RlCisgICAgd2hl
biAiYWRkaSIsICJhZGRwIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5k
c1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlz
X2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJl
Z2lzdGVySUQKKyAgICAgICAgaWYgb3BlcmFuZHNbMF0udmFsdWUgPT0gMAorICAgICAgICAgIHVu
bGVzcyBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgJGFzbS5wdXRzICJc
dG1vdmwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICRh
c20ucHV0cyAiXHRsZWFsICN7b3BlcmFuZHNbMF0udmFsdWV9KCN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICBl
bmQKKyAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8g
UmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0
ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAor
ICAgICAgICAkYXNtLnB1dHMgIlx0bGVhbCAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQp
fSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5p
bCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje3g4Nk9w
ZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbmQKKyAgICB3aGVuICJh
bmRpIiwgImFuZHAiCisgICAgICBoYW5kbGVYODZPcCgiYW5kbCIsIDppbnQpCisgICAgd2hlbiAi
bHNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYWxsIiwgOmludCkKKyAgICB3aGVuICJt
dWxpIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJ
bW1lZGlhdGUKKyAgICAgICAgJGFzbS5wdXRzICJcdGltdWxsICN7eDg2T3BlcmFuZHMoOmludCwg
OmludCwgOmludCl9IgorICAgICAgZWxzZQorICAgICAgICBoYW5kbGVYODZPcCgiaW11bGwiLCA6
aW50KQorICAgICAgZW5kCisgICAgd2hlbiAibmVnaSIKKyAgICAgICRhc20ucHV0cyAiXHRuZWds
ICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm5vdGkiCisgICAgICAkYXNtLnB1dHMg
Ilx0bm90bCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJvcmkiLCAib3JwIgorICAg
ICAgaGFuZGxlWDg2T3AoIm9ybCIsIDppbnQpCisgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgIGhh
bmRsZVg4NlNoaWZ0KCJzYXJsIiwgOmludCkKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgIGhh
bmRsZVg4NlNoaWZ0KCJzaHJsIiwgOmludCkKKyAgICB3aGVuICJzdWJpIiwgInN1YnAiCisgICAg
ICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisg
ICAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50
KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAg
IGhhbmRsZVg4Nk9wKCJzdWJsIiwgOmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gInhvcmkiLCAi
eG9ycCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJ4b3JsIiwgOmludCkKKyAgICB3aGVuICJsb2FkaSIs
ICJzdG9yZWkiLCAibG9hZHAiLCAic3RvcmVwIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4
ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNtLnB1
dHMgIlx0bW92emJsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImxvYWRoIgorICAgICAgJGFzbS5wdXRz
ICJcdG1vdnp3bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJzdG9yZWIiCisgICAgICAkYXNtLnB1dHMg
Ilx0bW92YiAje3g4Nk9wZXJhbmRzKDpieXRlLCA6Ynl0ZSl9IgorICAgIHdoZW4gImxvYWRkIiwg
Im1vdmVkIiwgInN0b3JlZCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAje3g4Nk9wZXJhbmRz
KDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJhZGRkIgorICAgICAgJGFzbS5wdXRzICJc
dGFkZHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImRpdmQi
CisgICAgICAkYXNtLnB1dHMgIlx0ZGl2c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91Ymxl
KX0iCisgICAgd2hlbiAic3ViZCIKKyAgICAgICRhc20ucHV0cyAiXHRzdWJzZCAje3g4Nk9wZXJh
bmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJtdWxkIgorICAgICAgJGFzbS5wdXRz
ICJcdG11bHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInNx
cnRkIgorICAgICAgJGFzbS5wdXRzICJcdHNxcnRzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4g
ImNpMmQiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVu
ICJiZGVxIgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZQorICAgICAgJGFz
bS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAj
e0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkueDg2TGFiZWx9Igor
ICAgICAgJGFzbS5wdXRzICJcdGplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIG9w
ZXJhbmRzWzJdKS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAg
ICB3aGVuICJiZG5lcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiam5lIiwgOm5vcm1h
bCkKKyAgICB3aGVuICJiZGd0IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpu
b3JtYWwpCisgICAgd2hlbiAiYmRndGVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJq
YWUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHQiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFu
Y2goImphIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdGVxIgorICAgICAgaGFuZGxlWDg2RG91
YmxlQnJhbmNoKCJqYWUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGVxdW4iCisgICAgICBoYW5k
bGVYODZEb3VibGVCcmFuY2goImplIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZG5lcXVuIgorICAg
ICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZQorICAgICAgaXNFcXVhbCA9IExvY2Fs
TGFiZWwudW5pcXVlCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9Igor
ICAgICAgJGFzbS5wdXRzICJcdGpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlz
VW5vcmRlcmVkKS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tMYWJlbFJlZmVy
ZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNFcXVhbCkueDg2TGFiZWx9IgorICAgICAgaXNVbm9yZGVy
ZWQubG93ZXIoIlg4NiIpCisgICAgICAkYXNtLnB1dHMgIlx0am1wICN7b3BlcmFuZHNbMl0ueDg2
TGFiZWx9IgorICAgICAgaXNFcXVhbC5sb3dlcigiWDg2IikKKyAgICB3aGVuICJiZGd0dW4iCisg
ICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRn
dGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpyZXZlcnNlKQorICAg
IHdoZW4gImJkbHR1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6bm9ybWFs
KQorICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUi
LCA6bm9ybWFsKQorICAgIHdoZW4gImJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHRzZDJz
aSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGNtcGwgJDB4ODAwMDAwMDAgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje29wZXJh
bmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2
dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJjZDJpIgorICAgICAgJGFzbS5wdXRzICJc
dGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdHRlc3RsICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICAk
YXNtLnB1dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXht
bTciCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje29wZXJhbmRzWzJdLng4
NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqbmUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0i
CisgICAgd2hlbiAibW92ZHoiCisgICAgICAkYXNtLnB1dHMgIlx0eG9ycGQgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUp
fSIKKyAgICB3aGVuICJwb3AiCisgICAgICAkYXNtLnB1dHMgIlx0cG9wICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicHVzaCIKKyAgICAgICRhc20ucHV0cyAiXHRw
dXNoICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibW92ZSIsICJz
eGkycCIsICJ6eGkycCIKKyAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5k
c1swXSBhbmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMg
Ilx0eG9ybCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMF0gIT0gb3BlcmFuZHNbMV0K
KyAgICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisg
ICAgICBlbmQKKyAgICB3aGVuICJub3AiCisgICAgICAkYXNtLnB1dHMgIlx0bm9wIgorICAgIHdo
ZW4gImJpZXEiLCAiYnBlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6aW50KQor
ICAgIHdoZW4gImJpbmVxIiwgImJwbmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbmUi
LCA6aW50KQorICAgIHdoZW4gImJpYSIsICJicGEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImphIiwgOmludCkKKyAgICB3aGVuICJiaWFlcSIsICJicGFlcSIKKyAgICAgIGhhbmRsZVg4Nklu
dEJyYW5jaCgiamFlIiwgOmludCkKKyAgICB3aGVuICJiaWIiLCAiYnBiIgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqYiIsIDppbnQpCisgICAgd2hlbiAiYmliZXEiLCAiYnBiZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDppbnQpCisgICAgd2hlbiAiYmlndCIsICJicGd0
IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDppbnQpCisgICAgd2hlbiAiYmlndGVx
IiwgImJwZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmludCkKKyAgICB3
aGVuICJiaWx0IiwgImJwbHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwgOmludCkK
KyAgICB3aGVuICJiaWx0ZXEiLCAiYnBsdGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJq
bGUiLCA6aW50KQorICAgIHdoZW4gImJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpl
IiwgOmJ5dGUpCisgICAgd2hlbiAiYmJuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpu
ZSIsIDpieXRlKQorICAgIHdoZW4gImJiYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEi
LCA6Ynl0ZSkKKyAgICB3aGVuICJiYmFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFl
IiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYiIs
IDpieXRlKQorICAgIHdoZW4gImJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUi
LCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIs
IDpieXRlKQorICAgIHdoZW4gImJiZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdl
IiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwi
LCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImps
dGVxIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRpbyIsICJidHBvIgorICAgICAgaGFuZGxlWDg2QnJh
bmNoVGVzdCgiam8iLCA6aW50KQorICAgIHdoZW4gImJ0aXMiLCAiYnRwcyIKKyAgICAgIGhhbmRs
ZVg4NkJyYW5jaFRlc3QoImpzIiwgOmludCkKKyAgICB3aGVuICJidGl6IiwgImJ0cHoiCisgICAg
ICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDppbnQpCisgICAgd2hlbiAiYnRpbnoiLCAiYnRw
bnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6aW50KQorICAgIHdoZW4gImJ0
Ym8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpieXRlKQorICAgIHdoZW4gImJ0
YnMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDpieXRlKQorICAgIHdoZW4gImJ0
YnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDpieXRlKQorICAgIHdoZW4gImJ0
Ym56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmJ5dGUpCisgICAgd2hlbiAi
am1wIgorICAgICAgJGFzbS5wdXRzICJcdGptcCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5k
KDppbnQpfSIKKyAgICB3aGVuICJiYWRkaW8iLCAiYmFkZHBvIgorICAgICAgaGFuZGxlWDg2T3BC
cmFuY2goImFkZGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJhZGRpcyIsICJiYWRkcHMiCisg
ICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYmFk
ZGl6IiwgImJhZGRweiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImp6IiwgOmlu
dCkKKyAgICB3aGVuICJiYWRkaW56IiwgImJhZGRwbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5j
aCgiYWRkbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbyIKKyAgICAgIGhhbmRsZVg4
NlN1YkJyYW5jaCgiam8iLCA6aW50KQorICAgIHdoZW4gImJzdWJpcyIKKyAgICAgIGhhbmRsZVg4
NlN1YkJyYW5jaCgianMiLCA6aW50KQorICAgIHdoZW4gImJzdWJpeiIKKyAgICAgIGhhbmRsZVg4
NlN1YkJyYW5jaCgianoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbnoiCisgICAgICBoYW5kbGVY
ODZTdWJCcmFuY2goImpueiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlvIgorICAgICAgaGFuZGxl
WDg2T3BCcmFuY2goImltdWxsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJibXVsaXMiCisgICAg
ICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJtdWxp
eiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqeiIsIDppbnQpCisgICAgd2hl
biAiYm11bGlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbnoiLCA6aW50
KQorICAgIHdoZW4gImJvcmlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqbyIs
IDppbnQpCisgICAgd2hlbiAiYm9yaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwg
ImpzIiwgOmludCkKKyAgICB3aGVuICJib3JpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJv
cmwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJvcmlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJh
bmNoKCJvcmwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJicmVhayIKKyAgICAgICRhc20ucHV0
cyAiXHRpbnQgJDMiCisgICAgd2hlbiAiY2FsbCIKKyAgICAgICRhc20ucHV0cyAiXHRjYWxsICN7
b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInJldCIKKyAgICAg
ICRhc20ucHV0cyAiXHRyZXQiCisgICAgd2hlbiAiY2llcSIsICJjcGVxIgorICAgICAgaGFuZGxl
WDg2SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQpCisgICAgd2hlbiAiY2luZXEiLCAiY3BuZXEi
CisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRuZSIsIDppbnQpCisgICAgd2hlbiAi
Y2lhIiwgImNwYSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGEiLCA6aW50KQor
ICAgIHdoZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgi
c2V0YWUiLCA6aW50KQorICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAgICBoYW5kbGVYODZJbnRD
b21wYXJlU2V0KCJzZXRiIiwgOmludCkKKyAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAg
IGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGJlIiwgOmludCkKKyAgICB3aGVuICJjaWd0Iiwg
ImNwZ3QiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnIiwgOmludCkKKyAgICB3
aGVuICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
Z2UiLCA6aW50KQorICAgIHdoZW4gImNpbHQiLCAiY3BsdCIKKyAgICAgIGhhbmRsZVg4NkludENv
bXBhcmVTZXQoInNldGwiLCA6aW50KQorICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiCisgICAg
ICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisgICAgd2hlbiAidGlvIgor
ICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQpCisgICAgd2hlbiAidGlzIgorICAg
ICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDppbnQpCisgICAgd2hlbiAidGl6IgorICAgICAg
aGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDppbnQpCisgICAgd2hlbiAidGlueiIKKyAgICAgIGhh
bmRsZVg4NlNldFRlc3QoInNldG56IiwgOmludCkKKyAgICB3aGVuICJ0Ym8iCisgICAgICBoYW5k
bGVYODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgd2hlbiAidGJzIgorICAgICAgaGFuZGxl
WDg2U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAgIHdoZW4gInRieiIKKyAgICAgIGhhbmRsZVg4
NlNldFRlc3QoInNldHoiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ym56IgorICAgICAgaGFuZGxlWDg2
U2V0VGVzdCgic2V0bnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJwZWVrIgorICAgICAgJGFzbS5wdXRz
ICJcdG1vdmwgI3tvcGVyYW5kc1swXS52YWx1ZSAqIDR9KCVlc3ApLCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInBva2UiCisgICAgICAkYXNtLnB1dHMgIlx0bW92
bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLnZhbHVlICog
NH0oJWVzcCkiCisgICAgd2hlbiAiY2RxaSIKKyAgICAgICRhc20ucHV0cyAiXHRjZHEiCisgICAg
d2hlbiAiaWRpdmkiCisgICAgICAkYXNtLnB1dHMgIlx0aWRpdmwgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJmaWkyZCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Zk
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwc2xscSAkMzIsICV4bW03
IgorICAgICAgJGFzbS5wdXRzICJcdHBvciAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5k
KDpkb3VibGUpfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZkICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cHNybHEgJDMyLCAleG1t
NyIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiQmFkIG9wY29kZTogI3tvcGNvZGV9
IgorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxMDQ2MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcg
QEAKICNkZWZpbmUgRXhlY3V0YWJsZV9oCiAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgorI2luY2x1
ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtMzksMTIgKzQw
LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIERlYnVnZ2VyOwogICAgIGNsYXNzIEV2
YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7CisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xh
c3MgU2NvcGVDaGFpbk5vZGU7CiAKICAgICBzdHJ1Y3QgRXhjZXB0aW9uSW5mbzsKICAgICAKLSAg
ICBlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0
cnVjdCB9OwogICAgIGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxhdGlvbiwgT3B0
aW1pemluZ0NvbXBpbGF0aW9uIH07CiAKICAgICBpbmxpbmUgYm9vbCBpc0NhbGwoQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQpAQCAtMzE5LDYgKzMyMCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIH07CiAKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRh
YmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBw
dWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC0zODQs
NiArMzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIFByb2dyYW1F
eGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBT
Y3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTQ1Myw2ICs0NTYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRh
YmxlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0
RXhlY3V0YWJsZSBCYXNlOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oCShyZXZpc2lvbiAxMDQ2MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgSlNBcnJheTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAKICAgICBzdHJ1Y3QgU3BhcnNlQXJyYXlFbnRyeSA6IHB1YmxpYyBXcml0ZUJhcnJpZXI8
VW5rbm93bj4gewogICAgICAgICB0eXBlZGVmIFdyaXRlQmFycmllcjxVbmtub3duPiBCYXNlOwpA
QCAtMTI0LDYgKzEyNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBK
U0FycmF5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgV2Fsa2VyOwogCiAg
ICAgcHJvdGVjdGVkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJ
KHJldmlzaW9uIDEwNDYzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiwxMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKLSAgICBjbGFzcyBTdHJ1Y3R1cmU7CisgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsK
ICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKKyAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAg
ICBlbnVtIEVudW1lcmF0aW9uTW9kZSB7CiAgICAgICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRp
ZXMsCkBAIC0xNjQsNiArMTY1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBi
b29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAg
ICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiBtX3N0cnVjdHVyZTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTA0NjMxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAg
IGNsYXNzIEpTQWN0aXZhdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAg
ICBjbGFzcyBTb3VyY2VDb2RlOwogICAgIG5hbWVzcGFjZSBERkcgewpAQCAtMTQwLDYgKzE0MSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpT
Q2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBpc0hvc3RG
dW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3Vt
ZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJl
dmlzaW9uIDEwNDYzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsOCBAQCBKU0dsb2JhbERhdGE6
OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgLCBrZXl3b3JkcyhhZG9wdFB0cihuZXcg
S2V5d29yZHModGhpcykpKQogICAgICwgaW50ZXJwcmV0ZXIoMCkKICAgICAsIGhlYXAodGhpcywg
aGVhcFNpemUpCisgICAgLCBqc0FycmF5Q2xhc3NJbmZvKCZKU0FycmF5OjpzX2luZm8pCisgICAg
LCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvKCZKU0ZpbmFsT2JqZWN0OjpzX2luZm8pCiAjaWYgRU5B
QkxFKERGR19KSVQpCiAgICAgLCBzaXplT2ZMYXN0U2NyYXRjaEJ1ZmZlcigwKQogI2VuZGlmCkBA
IC0yMTgsNyArMjIwLDcgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5
cAogICAgIGppdFN0dWJzID0gYWRvcHRQdHIobmV3IEpJVFRodW5rcyh0aGlzKSk7CiAjZW5kaWYK
IAotICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKHRoaXMtPmNhblVzZUpJVCgpKTsKKyAgICBp
bnRlcnByZXRlci0+aW5pdGlhbGl6ZSgmbGxpbnREYXRhLCB0aGlzLT5jYW5Vc2VKSVQoKSk7CiAK
ICAgICBoZWFwLm5vdGlmeUlzU2FmZVRvQ29sbGVjdCgpOwogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDEwNDYzMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCwxNSArMzAsMTYgQEAKICNkZWZpbmUgSlNHbG9iYWxEYXRhX2gKIAogI2luY2x1
ZGUgIkNhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJJbnRyaW5zaWMu
aCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2VDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVB
bGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCi0jaW5jbHVkZSAiU3Ryb25nLmgiCisjaW5j
bHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU1Zh
bHVlLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTnVtZXJpY1N0cmluZ3Mu
aCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNs
dWRlICJUZXJtaW5hdG9yLmgiCiAjaW5jbHVkZSAiVGltZW91dENoZWNrZXIuaCIKICNpbmNsdWRl
ICJXZWFrUmFuZG9tLmgiCkBAIC02NSw2ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNs
YXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEtleXdv
cmRzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVF
eGVjdXRhYmxlOwogICAgIGNsYXNzIFBhcnNlckFyZW5hOwogICAgIGNsYXNzIFJlZ0V4cENhY2hl
OwpAQCAtMjQ4LDYgKzI1MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSGVhcCBoZWFw
OwogCiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uOworCisgICAgICAgIGNvbnN0IENsYXNzSW5m
byogY29uc3QganNBcnJheUNsYXNzSW5mbzsKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25z
dCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOworCisgICAgICAgIExMSW50OjpEYXRhIGxsaW50RGF0
YTsKKwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIgZXhjZXB0aW9u
TG9jYXRpb247CiAgICAgICAgIEpTVmFsdWUgaG9zdENhbGxSZXR1cm5WYWx1ZTsKQEAgLTM1Miw2
ICszNjAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICN1bmRlZiByZWdpc3RlclR5cGVkQXJyYXlGdW5j
dGlvbgogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSwg
VGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEq
JiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAgICAgIHZvaWQgY3JlYXRlTmF0aXZlVGh1
bmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAkocmV2aXNpb24gMTA0NjMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBHZXR0
ZXJTZXR0ZXI7CiAgICAgY2xhc3MgR2xvYmFsQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogICAgIGNs
YXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CkBAIC0z
MzUsNiArMzM2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgYWRkU3RhdGljR2xv
YmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBpbnQgY291bnQpOwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIC8vIEZJWE1FOiBGb2xkIHJlc2V0IGludG8gaW5pdC4KICAgICAgICAgdm9pZCBpbml0KEpT
T2JqZWN0KiB0aGlzVmFsdWUpOwogICAgICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJvdG90eXBl
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNp
b24gMTA0NjMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFz
cyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgSGFzaEVudHJ5OwogICAgIGNsYXNzIEludGVybmFs
RnVuY3Rpb247CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE1h
cmtlZEJsb2NrOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9w
ZXJ0eU5hbWVBcnJheTsKQEAgLTI2MCw2ICsyNjEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSlNPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdlIGlu
bGluZVN0b3JhZ2UpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIE5vYm9keSBzaG91bGQgZXZl
ciBhc2sgYW55IG9mIHRoZXNlIHF1ZXN0aW9ucyBvbiBzb21ldGhpbmcgYWxyZWFkeSBrbm93biB0
byBiZSBhIEpTT2JqZWN0LgogICAgICAgICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVy
OwogICAgICAgICB1c2luZyBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyOwpAQCAtMzcxLDYgKzM3NCw4
IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBleHBsaWNp
dCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCiAgICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9p
bmxpbmVTdG9yYWdlKQogICAgICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAxMDQ2
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBJZGVudGlmaWVyOwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIEpTUHJvcGVydHlOYW1lSXRlcmF0b3Ig
OiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTk2LDYgKzk3
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5RGF0YSog
cHJvcGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7CiAKICAgICAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRTdHJ1Y3R1cmU7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDEwNDYzMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNTdHJpbmc7
CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgSlNTdHJpbmcqIGpzRW1w
dHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7CiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoRXhl
Y1N0YXRlKik7CkBAIC0yNDEsNiArMjQyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0
YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHBy
aXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
ICAgIAogICAgICAgICB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAg
ICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2U4KExDaGFyKikgY29uc3Q7CiAgICAgICAgIHZvaWQg
cmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hhciopIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNpb24gMTA0NjMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw2ICszNCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgPSAxOyAvLyBXZWJDb3JlIHVzZXMgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCB0byBtYWtl
IGRvY3VtZW50LmFsbCB1bmRldGVjdGFibGUuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIElt
cGxlbWVudHNIYXNJbnN0YW5jZSA9IDEgPDwgMTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
T3ZlcnJpZGVzSGFzSW5zdGFuY2UgPSAxIDw8IDI7CkBAIC04Nyw2ICs4OSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBpc1NldE9uRmxh
Z3MxKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPD0gKDEgPDwgNykpOyByZXR1
cm4gbV9mbGFncyAmIGZsYWc7IH0KICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MyKHVuc2lnbmVk
IGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1cm4gbV9mbGFnczIg
JiAoZmxhZyA+PiA4KTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiAxMDQ2MzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDEwICszOCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBSZWdpc3RlcjsKIAogICAgIGNsYXNzIEpTVmFyaWFi
bGVPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAg
ICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gMTA0
NjMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpT
R2xvYmFsRGF0YTsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVj
dDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU2NvcGVDaGFp
bkl0ZXJhdG9yOwogICAgIGNsYXNzIFNsb3RWaXNpdG9yOwogICAgIApAQCAtOTEsNiArOTIsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xh
c3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuOwogICAgIH07CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAx
MDQ2MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsK
ICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hh
aW47CkBAIC0xOTYsNiArMTk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBK
U19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAg
ICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90
b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKik7CiAgICAgICAgIFN0cnVj
dHVyZShKU0dsb2JhbERhdGEmKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNv
bnN0IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAxMDQ2MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICsz
Nyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluIDog
cHVibGljIEpTQ2VsbCB7CkBAIC03NCw2ICs3NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgICAgICAKICAgICAgICAgU3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiwg
U3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAg
ICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAxMDQ2MzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTkx
Niw2ICs5MTYsMTIgQEAKICNkZWZpbmUgRU5BQkxFX0pJVCAxCiAjZW5kaWYKIAorLyogT24gc29t
ZSBvZiB0aGUgcGxhdGZvcm1zIHdoZXJlIHdlIGhhdmUgYSBKSVQsIHdlIHdhbnQgdG8gYWxzbyBo
YXZlIHRoZSAKKyAgIGxvdy1sZXZlbCBpbnRlcnByZXRlci4gKi8KKyNpZiBFTkFCTEUoSklUKSAm
JiBQTEFURk9STShNQUMpICYmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIEVOQUJMRV9MTElO
VCAxCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9ERkdfSklUKSAmJiBFTkFCTEUoSklU
KQogLyogRW5hYmxlIHRoZSBERkcgSklUIG9uIFg4NiBhbmQgWDg2XzY0LiAgT25seSB0ZXN0ZWQg
b24gTWFjIGFuZCBHTlUvTGludXguICovCiAjaWYgKENQVShYODYpIHx8IENQVShYODZfNjQpKSAm
JiAoUExBVEZPUk0oTUFDKSB8fCBPUyhMSU5VWCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDEwNDYzMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDYgKzQzLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlN0cmluZyAqIENGU3RyaQogLy8g
TGFuZGluZyB0aGUgZmlsZSBtb3ZlcyBpbiBvbmUgcGF0Y2gsIHdpbGwgZm9sbG93IG9uIHdpdGgg
cGF0Y2hlcyB0byBjaGFuZ2UgdGhlIG5hbWVzcGFjZXMuCiBuYW1lc3BhY2UgSlNDIHsKIHN0cnVj
dCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5zbGF0b3I7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElkZW50aWZpZXJDaGFyQnVmZmVyVHJh
bnNsYXRvcjsKIHN0cnVjdCBJZGVudGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9yOwogfQpA
QCAtNzAsNyArNzEsOCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICBmcmllbmQgc3RydWN0IFdU
Rjo6SGFzaEFuZFVURjhDaGFyYWN0ZXJzVHJhbnNsYXRvcjsKICAgICBmcmllbmQgc3RydWN0IFdU
Rjo6VUNoYXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmdJ
bXBsOwotCisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAg
IAogcHJpdmF0ZToKICAgICBlbnVtIEJ1ZmZlck93bmVyc2hpcCB7CiAgICAgICAgIEJ1ZmZlcklu
dGVybmFsLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>121946</attachid>
            <date>2012-01-10 17:09:11 -0800</date>
            <delta_ts>2012-01-11 17:31:35 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_10.diff</filename>
            <type>text/plain</type>
            <size>335301</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0NjUxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MiBA
QAorMjAxMi0wMS0xMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV09SSyBJTiBQUk9HUkVTUy4gIFN0aWxsIG5lZWQgdG8gd3JpdGUgYm9vdHN0cmFw
IGdsdWUuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNl
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxp
bmtJbmNvbWluZ0NhbGxzKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTExJ
bnRDYWxsTGlua0luZm8pOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAg
ICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUv
TExJbnRDYWxsTGlua0luZm8uaDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJ
bmZvOjpMTEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZv
Ojp+TExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6
aXNMaW5rZWQpOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6dW5saW5rKToKKyAg
ICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJl
c29sdmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRo
QmFzZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhU
aGlzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRDb25zdHJ1Y3QpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAg
ICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21w
aWxlT3Bjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICog
aGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAg
KiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6fkludGVycHJldGVyKToKKyAgICAgICAg
KEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6aXNPcGNvZGUpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZW5hYmxlZCk6
CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmg6CisgICAgICAgICogaml0L0hv
c3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Z2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJldHVyblZh
bHVlLmg6IEFkZGVkLgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgorICAgICAgICAqIGxsaW50
OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAgICAg
KiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6
OkRhdGEpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxs
aW50L0xMSW50RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2Vw
dGlvbkluc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXAp
OgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpnZXRFdmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50
cnlwb2ludCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cp
OgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBs
bGludC9MTEludEhlbHBlcnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5U
X0hFTFBFUl9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFVw
Q2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6CisgICAgICAgICogbGxp
bnQvTExJbnRIZWxwZXJzLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFz
bUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSk6
CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8pOgorICAgICAg
ICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAg
ICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlUaHVua0dlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5VGh1bmtH
ZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3Ip
OgorICAgICAgICAoSlNDOjpMTEludDo6cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAg
ICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmNwcDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5o
OiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtL2FybXY3LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2FzbS5yYjogQWRkZWQu
CisgICAgICAgICogb2ZmbGluZWFzbS9hc3QucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVh
c20vYmFja2VuZHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zm
c2V0X2V4dHJhY3Rvci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9pbnN0cnVjdGlv
bnMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25z
dGFudHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb2Zmc2V0cy5yYjogQWRkZWQu
CisgICAgICAgICogb2ZmbGluZWFzbS9wYXJzZXIucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxp
bmVhc20vcmVnaXN0ZXJzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3NldHRpbmdz
LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3RyYW5zZm9ybS5yYjogQWRkZWQuCisg
ICAgICAgICogb2ZmbGluZWFzbS94ODYucmI6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvRXhl
Y3V0YWJsZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpT
R2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL1Nj
b3BlQ2hhaW4uaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAg
ICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisKIDIwMTItMDEtMTAgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBDb2RlQmxvY2suaCBkZWNsYXJlcyB0b28gbWFu
eSB0aGluZ3MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CShyZXZpc2lvbiAxMDQ2NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDExLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNjAsNiArNjAsNyBAQCBhbGwgOiBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0Lmgg
XAogICAgIFN0cmluZ1Byb3RvdHlwZS5sdXQuaCBcCiAgICAgZG9jcy9ieXRlY29kZS5odG1sIFwK
KyAgICBMTEludEFzc2VtYmx5LmguUEhPTlkgXAogIwogCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNs
YXNzZXMKQEAgLTEwNCwzICsxMDUsMTEgQEAgSGVhZGVyRGV0ZWN0aW9uLmggOgogCWVjaG8gPiAk
QAogCiBlbmRpZgorCisjIEFzc2VtYmx5IGZvciB0aGUgTG93TGV2ZWxJbnRlcnByZXRlcgorCisj
IFRoaXMgYnVpbGRzIGV2ZXJ5IHRpbWUgYmVjYXVzZSB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBk
ZXNjcmliZQorIyB0aGUgZGVwZW5kZW5jaWVzIHVzaW5nIG1ha2UuIEluc3RlYWQsIHRoZSBhc3Nl
bWJsZXIgd2lsbCBkZWNpZGUgb24KKyMgaXRzIG93biB3aGV0aGVyIG9yIG5vdCBpdCBkaWQgYW55
dGhpbmcgdGhhdCB3b3VsZCBsZWFkIHRvIGEgY2hhbmdlLgorTExJbnRBc3NlbWJseS5oLlBIT05Z
OgorCXJ1YnkgJChKYXZhU2NyaXB0Q29yZSkvb2ZmbGluZWFzbS9hc20ucmIgJChKYXZhU2NyaXB0
Q29yZSkvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJChCVUlMVF9QUk9EVUNUU19ESVIp
L0pTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciA+IExMSW50QXNzZW1ibHkuaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEwNDY0NykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC03LDYgKzcsMTUgQEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dy
ZWdhdGVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJ
bnQgT2Zmc2V0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxk
Q29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICov
OworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdl
bmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKKwkJCSk7CisJCQluYW1lID0gIkxMSW50IE9mZnNl
dHMiOworCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKIAkJNjVGQjNG
NjYwOUQxMUU5MTAwRjQ5REVCIC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEFnZ3JlZ2F0ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2NUZCM0Y3NzA5
RDExRUJEMDBGNDlERUIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdh
dGVUYXJnZXQgIkRlcml2ZWQgU291cmNlcyIgKi87CkBAIC0xNCw2ICsyMyw5IEBACiAJCQkJNjVG
QjNGNjUwOUQxMUU5MTAwRjQ5REVCIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKIAkJ
CQk1RDM1REVFMTBDN0MxNDBCMDA4NjQ4QjIgLyogR2VuZXJhdGUgRFRyYWNlIGhlYWRlciAqLywK
IAkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcy
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNv
dXJjZXMiOwogCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJfTsKQEAgLTQ4
LDYgKzYwLDEwIEBACiAJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmlj
dGlvblZlcmlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBC
Q0Q4MzU3MTQ4NTg0NTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAw
MyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwQkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEy
ODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4MzlBMTRC
Q0Y0NUQwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBM
TEludEVudHJ5cG9pbnRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8q
IExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgz
OUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBM
TEludFRodW5rcy5jcHAgKi87IH07CisJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTElu
dFRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTcxNEJDRjUwNzAwODg1
QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBOTE0QkNGNTYy
MDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4
M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBQTE0QkNGNUI5MDA4ODVC
NEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC01OCw2ICs3NCw3IEBACiAJCTBGMEI4M0I1MTRCQ0Y4NjIw
MDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RD
YWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I2MTRC
Q0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAv
KiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENh
bGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExM
SW50Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE1RjE1
RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyog
Q29tbW9uU2xvd1BhdGhzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEYxNkQ3MjYxNDJDMzlDMDAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE2RDcyNDE0MkMz
OUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLzsgfTsKIAkJMEYyNDJEQTcxM0YzQjFFODAw
N0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFr
UmVmZXJlbmNlSGFydmVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTcwLDYgKzg3LDE5IEBACiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5
MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2
ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8q
IEpJVEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA3RjE0
QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MEEzMTRC
QTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlGMTRCQTdG
ODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9G
TEFHUyA9ICItV25vLXVudXNlZC1wYXJhbWV0ZXIiOyB9OyB9OworCQkwRjQ2ODBBNTE0QkE3RjhE
MDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0
NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTgx
NEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8q
IExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQjE0QkJCMTcy
MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovOyB9
OworCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzgxNEJC
QjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIg
LyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovOyB9Owor
CQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIg
LyogTExJbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Njgw
RDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovOyB9OworCQkw
RjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDExNEJCQzVGODAw
QkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5j
b25kaXRpb25hbEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjYyMDE3NDE0M0ZDRDMzMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYyMDE3MjE0M0ZD
RDJGMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAxNzUxNDNGQ0QzNzAwNjhCNzdD
IC8qIERGR09wZXJhbmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjYyMDE3MTE0M0ZDRDJGMDA2OEI3N0MgLyogREZHT3BlcmFuZHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzcwLDcgKzQwMCw3
IEBACiAJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUUxMTE3RTU3ODEw
MERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRj
aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJC
MDlCRTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87IH07CiAJCTg2QkIwOUMx
MTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVw
YXRjaC5oICovOyB9OwotCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2
RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyB9OworCQk4NkMzNkVF
QTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBN
YWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhE
RDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9OwogCQk4NkM1
NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3
RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3
RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5o
ICovOyB9OwpAQCAtNzMwLDYgKzc2MCwyMCBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTBGNDY4
MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlp
c2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5
MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAx
OworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzI7CisJ
CQlyZW1vdGVJbmZvID0gIkxMSW50IE9mZnNldHMiOworCQl9OworCQkwRjQ2ODBCMzE0QkE4MjE0
MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29u
dGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMw
MkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90
ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyOworCQkJcmVtb3RlSW5m
byA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJMTQxMjE0QkUwQTQ5MTkwRTAw
NDgwMjU1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRh
aW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJB
QUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTc3NSw2ICs4MTksMTUgQEAKIC8qIEVuZCBQ
QlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5RmlsZXNC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlG
aWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEv
OworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKIAkJNURCQjE1MTExMzFE
MEIxMzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhD
b3B5RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7CkBAIC04MTUsNiAr
ODY4LDEwIEBACiAJCTBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlv
blZlcmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFJlc3Ry
aWN0aW9uVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJDRDgzNTQx
NDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUZW1wb3JhcnlDaGFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5
cG9pbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RW50
cnlwb2ludHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RW50cnlw
b2ludHMuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50VGh1bmtzLmNwcDsg
cGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50VGh1bmtzLmg7IHBhdGggPSBsbGludC9MTEludFRo
dW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBNTE0QkNGNTA0MDA4
ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29k
ZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTgxNEJDRjU1RTAw
ODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0FBMTRC
Q0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTgyNSw2ICs4ODIsNyBAQAogCQkwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYg
LyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1ldGhvZENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBC
ODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR2xvYmFsUmVzb2x2ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZz
ZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
bGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMTEludENhbGxMaW5rSW5mby5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29t
bW9uU2xvd1BhdGhzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vblNs
b3dQYXRocy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE2RDcyNDE0MkMzOUEy
MDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjQy
REE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgzNyw2ICs4OTUsMjAgQEAKIAkJMEY0MzE3MzYxNDZC
QUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBMaXN0YWJsZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklURXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNl
cHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcy
IC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVk
ZUluSW5kZXggPSAwOyBwYXRoID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOyBzb3VyY2VUcmVl
ID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IExMSW50RXhjZXB0aW9ucy5jcHA7IHBhdGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50
RXhjZXB0aW9ucy5oOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBl
cnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRIZWxwZXJz
LmNwcDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRIZWxwZXJzLmg7IHBhdGggPSBsbGlu
dC9MTEludEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQTEx
NEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOyBwYXRo
ID0gbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50Q29tbW9uLmg7IHBhdGggPSBsbGludC9M
TEludENvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNjE0QkJC
MTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBwYXRoID0gbGxpbnQvTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4
MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBwYXRo
ID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIuaDsg
cGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludERhdGEuY3BwOyBwYXRoID0gbGxp
bnQvTExJbnREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0Yx
NEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBMTEludERhdGEuaDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxS
ZXR1cm5WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIb3N0
Q2FsbFJldHVyblZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0Njgw
RDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyogREZHQnl0ZUNvZGVD
YWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCeXRlQ29kZUNhY2hl
Lmg7IHBhdGggPSBkZmcvREZHQnl0ZUNvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXpl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmNvbmRpdGlvbmFsRmluYWxp
emVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjIwMTZEMTQzRkNEMkYwMDY4
Qjc3QyAvKiBERkdBYnN0cmFjdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR0Fic3RyYWN0U3RhdGUuY3BwOyBwYXRoID0gZGZnL0RGR0Fic3RyYWN0U3Rh
dGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTUzOCw2ICsxNjEwLDEzIEBA
CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1l
d29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8q
IEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUUw
QTQ4NzkzQzAwNDgwMjU1IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0xNTk2
LDYgKzE2NzUsNyBAQAogCQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICov
LAogCQkJCTE0QkQ1OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTY1MTEy
MzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4MDhGMTRCQTdF
NUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCiAJCQkpOwogCQkJbmFt
ZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2MjQsNiArMTcw
NCw3IEBACiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJl
Zml4LmggKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8sCiAJ
CQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5oICovLAorCQkJCTBGNDY4MDlD
MTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLywKIAkJCQkxNDMyRUJENzBBMzRDQUQ0MDA3MTdC
OUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJsZXIg
Ki8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLApAQCAtMTY2
Miw2ICsxNzQzLDI4IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07
CisJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8q
IExMSW50RW50cnlwb2ludHMuY3BwICovLAorCQkJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludEVudHJ5cG9pbnRzLmggKi8sCisJCQkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8q
IExMSW50VGh1bmtzLmNwcCAqLywKKwkJCQkwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuaCAqLywKKwkJCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRh
LmNwcCAqLywKKwkJCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi8s
CisJCQkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi8sCisJCQkJ
MEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovLAor
CQkJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAq
LywKKwkJCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5o
ICovLAorCQkJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3Bw
ICovLAorCQkJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAq
LywKKwkJCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLywK
KwkJCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8sCisJCQkJ
MEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi8s
CisJCQkpOworCQkJbmFtZSA9IGxsaW50OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIAkJMTQxMjExMDAwQTQ4NzcyNjAwNDgwMjU1IC8qIHRlc3RzICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE2OTQsNiArMTc5Nyw4IEBACiAJCTE0MjlE
OTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJl
dHVyblZhbHVlLmNwcCAqLywKKwkJCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENh
bGxSZXR1cm5WYWx1ZS5oICovLAogCQkJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRF
eGNlcHRpb25zLmNwcCAqLywKIAkJCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhj
ZXB0aW9ucy5oICovLAogCQkJCTBGRDgyRTM3MTQxQUIxNDIwMDE3OUM5NCAvKiBDb21wYWN0SklU
Q29kZU1hcC5oICovLApAQCAtMjQ3NCw2ICsyNTc5LDcgQEAKIAkJOTY5QTA3OEYwRUQxRDNBRTAw
RjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8u
aCAqLywKIAkJCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQuaCAqLywKIAkJCQkwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xv
YmFsUmVzb2x2ZUluZm8uaCAqLywKIAkJCQkwRjBCODNCMjE0QkNGODVFMDA4ODVCNEYgLyogTWV0
aG9kQ2FsbExpbmtJbmZvLmNwcCAqLywKQEAgLTMwMTIsNyArMzExOCwxNiBAQAogCQkJCTg2NzA0
QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODY3MDRCNDMxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNl
cHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyog
TExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUy
NzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2
QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0
QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxs
UmV0dXJuVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0
RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5RDE0QkNG
NDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3
MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgz
QTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMDIxLDEyICszMTM2LDMxIEBACiAJCQkJMEYwQjgzQjUxNEJDRjg2MjAwODg1
QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjcx
NEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBM
TEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CiAvKiBFbmQgUEJYSGVhZGVyc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLwor
CQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICov
ID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlz
dCA9IDBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3Qg
Zm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLzsKKwkJCWJ1
aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICov
LAorCQkJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovLAorCQkJCTBG
NDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8sCisJCQkpOworCQkJYnVpbGRS
dWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjIxNEJBODEx
NTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9IEpT
Q0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3ROYW1lID0gSlNDTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3
MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20u
YXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OwogCQkxNDEyMTExRjBBNDg3OTNDMDA0ODAy
NTUgLyogbWluaWRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxk
Q29uZmlndXJhdGlvbkxpc3QgPSAxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovOwpAQCAtMzE1
MywxMSArMzI4NywyOSBAQAogCQkJCTE0QkQ1OUJFMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBp
ICovLAogCQkJCTkzMkY1QkRBMDgyMkExQzcwMDczNjk3NSAvKiBqc2MgKi8sCiAJCQkJNjUxMTIy
RjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEUxNEJBN0U1
RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKKwkJCQkwRjQ2ODBBOTE0
QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLywKIAkJCSk7CiAJCX07CiAvKiBFbmQg
UEJYUHJvamVjdCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFz
ZSBzZWN0aW9uICovCisJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJp
dmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJ
aW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9sbGludC9Mb3dMZXZlbEFzc2VtYmxlci5h
c20iLAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKKwkJCW91
dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzL0xM
SW50RGVzaXJlZE9mZnNldHMuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQg
PSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL1wiXG5cbi91
c3IvYmluL2VudiBydWJ5IFwiJHtTUkNST09UfS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9l
eHRyYWN0b3IucmJcIiA8IFwiJHtTUkNST09UfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bVwiID4gXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9m
ZnNldHMuaFwiXG4iOworCQl9OwogCQkzNzEzRjAxNDE0MjkwNTI0MDAzNjM4N0YgLyogQ2hlY2sg
Rm9yIEluYXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xhc3MgTmFtZXMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwpAQCAtMzI5OCw2ICszNDUwLDE0IEBACiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LworCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9
IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
KwkJCWZpbGVzID0gKAorCQkJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFEMEE0ODc5M0MwMDQ4MDI1
NSAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzU1NSw3ICszNzE1LDE0IEBACiAJCQkJ
ODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRI
ZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAv
KiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwODMxNEJBNTcz
MTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0Njgw
Q0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5W
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyog
TExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QzE0QkNGNDYz
MDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjAx
NEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjBCODNCNDE0QkNGODYwMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJKTsKQEAgLTM1NzIsNiArMzczOSwxNiBAQAogLyogRW5kIFBCWFNvdXJjZXNC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0
aW9uICovCisJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4
MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovOworCQkJdGFyZ2V0UHJveHkg
PSAwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwor
CQl9OworCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4
RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJdGFy
Z2V0UHJveHkgPSAwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVBy
b3h5ICovOworCQl9OwogCQkxNDEyMTRCRjBBNDkxOTBFMDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVw
ZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQg
PSAxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLzsKQEAgLTM2MDUsNiArMzc4
MiwxNDggQEAKIC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkwRjQ2ODA5NjE0QkE3RTVFMDBC
RkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJ
CQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NU
UklQID0gTk87CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0Nf
RFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlF
UzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09S
X0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAor
CQkJCSk7CisJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVS
U0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5f
NjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5H
X1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7
CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNI
X1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUyki
LAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZ
X0FDVElWRV9BUkNIID0gWUVTOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7
CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAi
LiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hf
UEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MDk3MTRCQTdF
NUUwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9
IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9Q
SEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYt
d2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdD
Q19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFw
cGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRf
Q09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9
IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FS
Tl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0q
XSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9M
TEludE9mZnNldHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9E
RVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05B
TUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRI
UyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NF
QVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODA5
ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNF
Ul9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJ
CQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQg
PSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5
OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9O
ID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9U
T18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJP
VE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFU
SFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVD
VFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJ
CQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1Rf
TkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VS
X0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50
T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZmls
aW5nOworCQl9OworCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9
IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hT
X1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVC
VUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFO
R1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9
IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4x
XzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0Nf
V0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRf
UkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOwor
CQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3Us
CisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVB
REVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VU
ID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JP
T1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJ
CQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFEMTRCQTdGRDkwMEJG
RTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNv
cHkiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwQUUxNEJBN0ZEOTAw
QkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNl
cyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwQUYxNEJB
N0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZl
ZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBG
NDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFN
RSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247
CisJCX07CiAJCTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1NSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKQEAgLTM4NDYs
NiArNDE2NSwyOCBAQAogLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTBGNDY4MDlBMTRCQTdF
NUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdl
dCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJh
dGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MDk2MTRCQTdF
NUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyog
UmVsZWFzZSAqLywKKwkJCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICov
LAorCQkJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsK
KwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1
cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3
MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJ
bnQgT2Zmc2V0cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVp
bGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVi
dWcgKi8sCisJCQkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJ
MEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODBCMDE0
QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9k
dWN0aW9uOworCQl9OwogCQkxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovID0gewogCQkJaXNh
ID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNp
b24gMTA0NjQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNkZWZpbmUgRFVNUF9MSU5LX1NU
QVRJU1RJQ1MgMAogI2RlZmluZSBEVU1QX0NPREUgMAogCi0jaW5jbHVkZSA8TWFjcm9Bc3NlbWJs
ZXIuaD4KKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5
YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMDQ2NDcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgx
LDYgKzg4MSwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAg
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
dHJhbnNpdGlvbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50UHV0
QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMs
IGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzog
ewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5
X2lkX2dlbmVyaWMiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTUxNCw3ICsxNTIyLDExIEBA
IENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJPRklM
RSkKICAgICBkdW1wVmFsdWVQcm9maWxlcygpOwogI2VuZGlmCi0gICAgCisKKyNpZiBFTkFCTEUo
TExJTlQpICAgIAorICAgIHdoaWxlIChtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpICE9IG1f
aW5jb21pbmdMTEludENhbGxzLmVuZCgpKQorICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5i
ZWdpbigpLT5yZW1vdmUoKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICAvLyBXZSBtYXkgYmUgZGVzdHJveWVkIGJlZm9yZSBhbnkgQ29kZUJsb2NrcyB0aGF0
IHJlZmVyIHRvIHVzIGFyZSBkZXN0cm95ZWQuCiAgICAgLy8gQ29uc2lkZXIgdGhhdCB0d28gQ29k
ZUJsb2NrcyBiZWNvbWUgdW5yZWFjaGFibGUgYXQgdGhlIHNhbWUgdGltZS4gVGhlcmUKQEAgLTE3
MjgsNiArMTc0MCw1NiBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHko
CiAjZW5kaWYKICNlbmRpZgogICAgIAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnRlcnByZXRl
ciogaW50ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJldGVyOworICAgIGlmICghaW50
ZXJwcmV0ZXItPmVuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Cisg
ICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClb
bV9wcm9wZXJ0eUFjY2Vzc0luc3R1Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaW50
ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgeworICAg
ICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZDoKKyAgICAgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0u
dS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAg
ICAgICAgIGN1ckluc3RydWN0aW9uWzVdLnUub3BlcmFuZCA9IDA7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoK
KyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAg
ICAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVy
ZS5nZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1
Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6
OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0
XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzZd
LnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10u
dS5zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9u
WzBdLnUub3Bjb2RlID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZpc2l0
U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uc1tpXV0pOworICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2ds
b2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgewor
ICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygp
W21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV07CisgICAgICAgICAgICBBU1NFUlQoaW50
ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9y
ZXNvbHZlX2dsb2JhbAorICAgICAgICAgICAgICAgICAgIHx8IGludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3BfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYyk7CisgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bM10u
dS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgIGN1
ckluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9zLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5mb3NbaV0uaXNMaW5rZWQoKSAmJiAhSGVh
cDo6aXNNYXJrZWQobV9sbGludENhbGxMaW5rSW5mb3NbaV0uY2FsbGVlLmdldCgpKSkgeworICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQorICAgICAgICAgICAgICAgICAgICBw
cmludGYoIkNsZWFyaW5nIExMSW50IGNhbGwgZnJvbSAlcC5cbiIsIHRoaXMpOworICAgICAgICAg
ICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyNlbmRpZgorCiAjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgLy8gQ2hlY2sgaWYgd2UncmUgbm90IGxpdmUuIElmIHdlIGFyZSwgdGhlbiBqZXR0aXNv
bi4KICAgICBpZiAoIShzaG91bGRJbW1lZGlhdGVseUFzc3VtZUxpdmVuZXNzRHVyaW5nU2Nhbigp
IHx8IG1fZGZnRGF0YS0+bGl2ZW5lc3NIYXNCZWVuUHJvdmVkKSkgewpAQCAtMTg0OCwxMCArMTkx
MCwxMiBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVjbHMuc2l6ZSgpOyArK2kpCiAgICAgICAg
IHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9uRGVjbHNbaV0pOwogI2lmIEVOQUJMRShJTlRFUlBS
RVRFUikKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9u
cy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICB2aXNpdFN0cnVjdHVyZXMo
dmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1d
KTsKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNp
emUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNp
dG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXSk7Cisg
ICAgaWYgKG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPmVuYWJsZWQoKSkgeworICAgICAgICBm
b3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkg
PSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3Is
ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAg
ICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgp
LCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNp
dG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXSk7Cisg
ICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTIwMjgsNiArMjA5Miw5IEBA
IHZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdCgpCiAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3Mu
c2hyaW5rVG9GaXQoKTsKICAgICBtX2NhbGxMaW5rSW5mb3Muc2hyaW5rVG9GaXQoKTsKICNlbmRp
ZgorI2lmIEVOQUJMRShMTElOVCkKKyAgICBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaHJpbmtUb0Zp
dCgpOworI2VuZGlmCiAKICAgICBtX2lkZW50aWZpZXJzLnNocmlua1RvRml0KCk7CiAgICAgbV9m
dW5jdGlvbkRlY2xzLnNocmlua1RvRml0KCk7CkBAIC0yMDYwLDYgKzIxMjcsMTIgQEAgdm9pZCBD
b2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIHsKICAgICBpZiAoISFtX2FsdGVybmF0aXZlKQogICAg
ICAgICBtX2FsdGVybmF0aXZlLT51bmxpbmtDYWxscygpOworI2lmIEVOQUJMRShMTElOVCkKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9zLnNpemUoKTsgKytp
KSB7CisgICAgICAgIGlmIChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpKQorICAg
ICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgfQorI2VuZGlm
CiAgICAgaWYgKCEobV9jYWxsTGlua0luZm9zLnNpemUoKSB8fCBtX21ldGhvZENhbGxMaW5rSW5m
b3Muc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5V
c2VKSVQoKSkKQEAgLTIwNzQsNiArMjE0Nyw4IEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxs
cygpCiAKIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKCkKIHsKKyAgICB3aGls
ZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5l
bmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+dW5saW5rKCk7CiAg
ICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRoaXMpOwogICAgIHdoaWxlIChtX2luY29t
aW5nQ2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2FsbHMuZW5kKCkpCiAgICAgICAgIG1faW5j
b21pbmdDYWxscy5iZWdpbigpLT51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZp
c2lvbiAxMDQ2NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAKICNpbmNsdWRlICJKSVRXcml0ZUJh
cnJpZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkp1bXBUYWJs
ZS5oIgorI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiTGluZUluZm8u
aCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlByZWRpY3Rpb25UcmFja2VyLmgiCkBA
IC03Myw4ICs3NCw5IEBAIHN0YXRpYyBjb25zdCBpbnQgRmlyc3RDb25zdGFudFJlZ2lzdGVySW4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgREZH
Q29kZUJsb2NrczsKKyAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogCiAgICAgaW5saW5lIGludCB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIo
aW50IGFyZ3VtZW50c1JlZ2lzdGVyKSB7IHJldHVybiBhcmd1bWVudHNSZWdpc3RlciAtIDE7IH0K
IApAQCAtODMsNiArODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb2RlQmxvY2sg
OiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXplciwgcHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJpZW5k
IGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
ICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gQ29weVBhcnNlZEJsb2NrVGFnIHsgQ29weVBhcnNl
ZEJsb2NrIH07CiAgICAgcHJvdGVjdGVkOgpAQCAtMjIzLDkgKzIyNiwxNSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21p
bmcpOwogICAgICAgICB9CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICB2b2lkIGxpbmtJbmNv
bWluZ0NhbGwoTExJbnRDYWxsTGlua0luZm8qIGluY29taW5nKQorICAgICAgICB7CisgICAgICAg
ICAgICBtX2luY29taW5nTExJbnRDYWxscy5wdXNoKGluY29taW5nKTsKKyAgICAgICAgfQorI2Vu
ZGlmIC8vIEVOQUJMRShMTElOVCkKICAgICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5rSW5jb21p
bmdDYWxscygpOwotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogI2lmIEVOQUJMRShE
RkdfSklUKQogICAgICAgICB2b2lkIHNldEpJVENvZGVNYXAoUGFzc093blB0cjxDb21wYWN0SklU
Q29kZU1hcD4gaml0Q29kZU1hcCkKQEAgLTMzNSwxMiArMzQ0LDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJlc3MpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnN0cnVjdGlvbio+KHJldHVy
bkFkZHJlc3MpIC0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICAgICAgfQotI2VuZGlmCiAK
ICAgICAgICAgdm9pZCBzZXRJc051bWVyaWNDb21wYXJlRnVuY3Rpb24oYm9vbCBpc051bWVyaWND
b21wYXJlRnVuY3Rpb24pIHsgbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb24gPSBpc051bWVyaWND
b21wYXJlRnVuY3Rpb247IH0KICAgICAgICAgYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24o
KSB7IHJldHVybiBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQpAQCAtNDU2LDcgKzQ2Myw2
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgY2xlYXJFdmFsQ2FjaGUoKTsKIAot
I2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgdm9pZCBhZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKHVuc2lnbmVkIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKQEAgLTQ2OCw2ICs0
NzQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZl
SW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9
CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uQXRCeXRlY29kZU9mZnNl
dCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBM
TEludENhbGxMaW5rSW5mbyogYWRkTExJbnRDYWxsTGlua0luZm8oKQorICAgICAgICB7CisgICAg
ICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvcy5hcHBlbmQoTExJbnRDYWxsTGlua0luZm8oKSk7
CisgICAgICAgICAgICByZXR1cm4gJm1fbGxpbnRDYWxsTGlua0luZm9zLmxhc3QoKTsKKyAgICAg
ICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBzZXROdW1iZXJPZlN0
cnVjdHVyZVN0dWJJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZvcy5ncm93
KHNpemUpOyB9CkBAIC0xMDUxLDkgKzEwNjMsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9zb3VyY2U7CiAgICAgICAgIHVuc2lnbmVkIG1fc291
cmNlT2Zmc2V0OwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBWZWN0b3I8dW5z
aWduZWQ+IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnM7CiAgICAgICAgIFZlY3Rvcjx1bnNp
Z25lZD4gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zOworI2lmIEVOQUJMRShMTElOVCkKKyAg
ICAgICAgU2VnbWVudGVkVmVjdG9yPExMSW50Q2FsbExpbmtJbmZvLCA4PiBtX2xsaW50Q2FsbExp
bmtJbmZvczsKKyAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PExMSW50Q2FsbExpbmtJbmZvLCBC
YXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5nTExJbnRD
YWxsczsKICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFZlY3RvcjxTdHJ1Y3R1cmVT
dHViSW5mbz4gbV9zdHJ1Y3R1cmVTdHViSW5mb3M7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTA0NjQ3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gc29sdXRpb24gZm9yIG5vdyAt
IHdpbGwgbmVlZCB0byBzb21ldGhpbmcgc21hcnRlciBpZi93aGVuIHdlIGFjdHVhbGx5IHdhbnQg
bWl4ZWQtbW9kZSBvcGVyYXRpb24uCiAKICAgICBjbGFzcyBKU0NlbGw7CisgICAgY2xhc3MgTExJ
bnRDYWxsTGlua0luZm87CiAgICAgY2xhc3MgU3RydWN0dXJlOwogICAgIGNsYXNzIFN0cnVjdHVy
ZUNoYWluOwogCkBAIC0xNDEsNiArMTQyLDExIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAK
ICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb24geworICAgICAgICBJbnN0cnVjdGlvbigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHUuanNDZWxsLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgCiAg
ICAgICAgIEluc3RydWN0aW9uKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICNpZiAhRU5BQkxF
KENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCkBAIC0xNzYsNiArMTgyLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYyBnZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7IH0KKyAg
ICAgICAgCisgICAgICAgIEluc3RydWN0aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8pIHsgdS5jYWxsTGlua0luZm8gPSBjYWxsTGlua0luZm87IH0KIAogICAgICAgICB1bmlvbiB7
CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlOwpAQCAtMTg0LDYgKzE5Miw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3Ry
dWN0dXJlQ2hhaW47CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxs
OwogICAgICAgICAgICAgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKKyAg
ICAgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm87CisgICAgICAgICAgICB2
b2lkKiBwb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0lu
Zm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTElu
dENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDYWxsTGlu
a0luZm9faAorI2RlZmluZSBMTEludENhbGxMaW5rSW5mb19oCisKKyNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUHRyLmgiCisjaW5jbHVkZSA8d3Rm
L1NlbnRpbmVsTGlua2VkTGlzdC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3Ry
dWN0aW9uOworCitzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50
aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+IHsKKyAgICBMTEludENhbGxMaW5rSW5mbygpCisg
ICAgeworICAgIH0KKyAgICAKKyAgICB+TExJbnRDYWxsTGlua0luZm8oKQorICAgIHsKKyAgICAg
ICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9CisgICAgCisg
ICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIGNhbGxlZTsgfQorICAgIAorICAgIHZvaWQgdW5s
aW5rKCkKKyAgICB7CisgICAgICAgIGNhbGxlZS5jbGVhcigpOworICAgICAgICBtYWNoaW5lQ29k
ZVRhcmdldCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgICAgICBpZiAoaXNPbkxpc3Qo
KSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8
SlNGdW5jdGlvbj4gY2FsbGVlOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWNoaW5lQ29k
ZVRhcmdldDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gTExJbnRDYWxs
TGlua0luZm9faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5o
CShyZXZpc2lvbiAxMDQ2NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bj
b2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgsIDQpIFwKICAgICAgICAgbWFj
cm8ob3BfcHV0X2J5X2lkLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uLCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwg
OSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwK
ICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8o
b3BfcHV0X2J5X2lkX2dlbmVyaWMsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0
KSBcCkBAIC0yMDIsNiArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYg
ZW51bSB7IEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfSURfRU5VTSkgfSBPcGNvZGVJRDsKICAg
ICAjdW5kZWYgT1BDT0RFX0lEX0VOVU0KIAorICAgIGNvbnN0IGludCBtYXhPcGNvZGVMZW5ndGgg
PSA5OwogICAgIGNvbnN0IGludCBudW1PcGNvZGVJRHMgPSBvcF9lbmQgKyAxOwogCiAgICAgI2Rl
ZmluZSBPUENPREVfSURfTEVOR1RIUyhpZCwgbGVuZ3RoKSBjb25zdCBpbnQgaWQjI19sZW5ndGgg
PSBsZW5ndGg7CkBAIC0yMTgsNyArMjIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZP
Ul9FQUNIX09QQ09ERV9JRChWRVJJRllfT1BDT0RFX0lEKTsKICAgICAjdW5kZWYgVkVSSUZZX09Q
Q09ERV9JRAogCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICNpZiBDT01Q
SUxFUihSVkNUKSB8fCBDT01QSUxFUihJTlRFTCkKICAgICB0eXBlZGVmIHZvaWQqIE9wY29kZTsK
ICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTA0NjQ3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyNjQsOSArMTI2NCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRk
R2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVO
QUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgICAgIGVtaXRP
cGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6
IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+
aW5kZXgoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9w
ZXJ0eSkpOwpAQCAtMTQxOSw5ICsxNDE3LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2Jh
bFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUo
SU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlv
bihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgZW1pdE9wY29kZShyZXF1aXJl
c0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9n
bG9iYWwpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wRHN0LT5pbmRleCgpKTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE0NjYs
OSArMTQ2Miw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNp
ZiBFTkFCTEUoSklUKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0
cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAg
IG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpKTsKLSNlbmRpZgogICAgIGVtaXRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8g
b3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDg2LDkgKzE0ODAsNyBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TWV0aG9kQ2hlY2soCiAKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRF
UikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVj
dGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBlbWl0T3Bjb2RlKG9wX2dldF9ieV9pZCk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0xNTEzLDkgKzE1
MDUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyCiAKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0jaWYgRU5B
QkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKIAogICAgIGVtaXRPcGNvZGUo
b3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7
CkBAIC0xNTMxLDkgKzE1MjEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFB1dEJ5CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJ
ZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJ
RCogdmFsdWUpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5h
ZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5k
aWYKICAgICAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTgyMSw3ICsxODA5LDExIEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCgKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2Fs
bEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsg
Ly8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKG1fY29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKDApOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIGVtaXRP
cGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKQEAgLTE5MjMsNyArMTkxNSwxMSBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNh
bGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7IC8vIGFyZ0NvdW50CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0ZXJPZmZzZXQoKSk7
IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0luZm8oKSk7CisjZWxzZQogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICBlbWl0
T3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTA0NjQ3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE4MjMsNyArMTgyMyw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9ieV9pZCk7CiAgICAgICAg
IH0KIAotICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDogeworICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CiAgICAgICAgICAgICBO
b2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAg
ICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5v
cGVyYW5kKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVy
YW5kXTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
aAkocmV2aXNpb24gMTA0NjQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBh
YmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw4IEBAIGlubGluZSBib29s
IGNhbkNvbXBpbGVPcGNvZGUoT3Bjb2RlSUQgb3AKICAgICBjYXNlIG9wX3B1dF9zY29wZWRfdmFy
OgogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsOgogICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXI6CiAgICAgY2Fz
ZSBvcF9wdXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX2ptcDoKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTA0NjQ3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRG
R09TUkV4aXQuaCIKICNpbmNsdWRlICJERkdSZXBhdGNoLmgiCisjaW5jbHVkZSAiSG9zdENhbGxS
ZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIklubGluZUFTTS5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCiAjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKQEAgLTU0NSw0NSArNTQ2LDYgQEAgc2l6
ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cgogICAgIHJldHVybiBKU1ZhbHVl
OjpzdHJpY3RFcXVhbChleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6
OmRlY29kZShlbmNvZGVkT3AyKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04g
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOwotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqKTsKLQotI2lmIENQ
VShYODZfNjQpCi1hc20gKAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIg
IlxuIgotICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCi0gICAgIm1vdiAlcjEzLCAlcmRpXG4i
Ci0gICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZh
bHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQVShYODYpCi1hc20gKAotIi5nbG9i
bCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NU
UklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJtb3YgLTQwKCVlZGkp
LCAlZWRpXG4iCi0gICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCi0gICAgImptcCAiIFNZTUJPTF9T
VFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxu
IgotKTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKQotYXNtICgKLSIudGV4dCIgIlxuIgotIi5hbGln
biAyIiAiXG4iCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi0iLnRodW1i
IiAiXG4iCi0iLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJc
biIKLSAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCi0gICAgImNweSByMCwgcjUiICJcbiIK
LSAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVl
V2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbmRpZgotCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BF
UkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhl
YykKLXsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0
Q2FsbFJldHVyblZhbHVlKTsKLX0KLQogc3RhdGljIHZvaWQqIGhhbmRsZUhvc3RDYWxsKEV4ZWNT
dGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgJ
KHJldmlzaW9uIDEwNDY0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRp
b25TcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgSlND
IHsKIAogY2xhc3MgSGVhcDsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1h
cmtlZEJsb2NrOwogCiBjbGFzcyBBbGxvY2F0aW9uU3BhY2UgewpAQCAtNjgsNiArNjksOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzaHJpbmsoKTsKICAgICAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICBlbnVtIEFsbG9jYXRpb25FZmZv
cnQgeyBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQsIEFsbG9jYXRpb25DYW5GYWlsIH07CiAgICAgCiAg
ICAgdm9pZCogYWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTA0NjQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBKU1ZhbHVlOwog
ICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXI7CiAgICAgY2xhc3MgUmVnaXN0
ZXJGaWxlOwogICAgIGNsYXNzIFVTdHJpbmc7CkBAIC0xMjksMTAgKzEzMCwxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hT
ZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFz
cyBNYXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNzIEFsbG9jYXRpb25TcGFjZTsKLSAg
ICAgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgQ29k
ZUJsb2NrOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAg
ICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBTbG90
VmlzaXRvcjsKIAogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbkV4dHJhQ29zdCA9IDI1
NjsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhFeHRyYUNvc3QgPSAxMDI0ICogMTAy
NDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNp
b24gMTA0NjQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAko
d29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEhl
YXA7CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CitjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBXZWFrR0NIYW5kbGU7CiBjbGFzcyBTbG90VmlzaXRv
cjsKIApAQCAtNzksNiArODAsOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVu
Y3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQmxvY2soKTsKIAogcHJp
dmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAg
IC8vIFsgMzIuLi4gMjU2IF0KICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VTdGVwID0g
TWFya2VkQmxvY2s6OmF0b21TaXplOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZUN1
dG9mZiA9IDI1NjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTA0NjQ3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjks
NyArNjksNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2VuZGlmCiAKLSNkZWZpbmUgV1RGX1VTRV9H
Q0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EIChFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBS
RVRFUikgJiYgIWRlZmluZWQoX19sbHZtX18pKQorI2RlZmluZSBXVEZfVVNFX0dDQ19DT01QVVRF
RF9HT1RPX1dPUktBUk9VTkQgKChFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwg
RU5BQkxFKExMSU5UKSkgJiYgIWRlZmluZWQoX19sbHZtX18pKQogCiB1c2luZyBuYW1lc3BhY2Ug
c3RkOwogCkBAIC01NDcsMTcgKzU0Nyw0MSBAQCBJbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIoKQog
ewogfQogCi12b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKQorSW50
ZXJwcmV0ZXI6On5JbnRlcnByZXRlcigpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2VuYWJsZWQpCisgICAgICAg
IGRlbGV0ZVtdIG1fb3Bjb2RlVGFibGU7CisjZW5kaWYKK30KKwordm9pZCBJbnRlcnByZXRlcjo6
aW5pdGlhbGl6ZShMTEludDo6RGF0YSogbGxpbnREYXRhLCBib29sIGNhblVzZUpJVCkKK3sKKyNp
ZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lm
ICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyAgICAvLyBIYXZpbmcgTExJbnQg
ZW5hYmxlZCwgYnV0IG5vdCBiZWluZyBhYmxlIHRvIHVzZSB0aGUgSklULCBhbmQgbm90IGhhdmlu
ZworICAgIC8vIGEgY29tcHV0ZWQgZ290byBpbnRlcnByZXRlciwgaXMgbm90IHN1cHBvcnRlZC4g
Tm90IGJlY2F1c2Ugd2UgY2Fubm90CisgICAgLy8gc3VwcG9ydCBpdCwgYnV0IGJlY2F1c2UgSSBk
ZWNpZGVkIHRvIGRyYXcgdGhlIGxpbmUgYXQgdGhlIG51bWJlciBvZgorICAgIC8vIHBlcm11dGF0
aW9ucyBvZiBleGVjdXRpb24gZW5naW5lcyB0aGF0IEkgd2FudGVkIHRoaXMgY29kZSB0byBncm9r
LgorICAgIEFTU0VSVChjYW5Vc2VKSVQpOworI2VuZGlmCiAgICAgaWYgKGNhblVzZUpJVCkgewor
I2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJsZSA9IGxsaW50RGF0YS0+b3Bj
b2RlTWFwKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kp
CisgICAgICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1fb3Bjb2RlVGFibGVbaV0sIHN0YXRp
Y19jYXN0PE9wY29kZUlEPihpKSk7CisjZWxzZQogICAgICAgICAvLyBJZiB0aGUgSklUIGlzIHBy
ZXNlbnQsIGRvbid0IHVzZSBqdW1wIGRlc3RpbmF0aW9ucyBmb3Igb3Bjb2Rlcy4KICAgICAgICAg
CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpIHsKICAgICAg
ICAgICAgIE9wY29kZSBvcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oaSkpOwogICAgICAgICAgICAgbV9vcGNvZGVUYWJsZVtpXSA9IG9wY29kZTsKICAg
ICAgICAgfQorI2VuZGlmCiAgICAgfSBlbHNlIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAg
IG1fb3Bjb2RlVGFibGUgPSBuZXcgT3Bjb2RlW251bU9wY29kZUlEc107CisjZW5kaWYKICAgICAg
ICAgcHJpdmF0ZUV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVybiwgMCwgMCk7CiAgICAgICAgIAog
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQpAQCAtNjY3LDkg
KzY5MSwxMSBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtCiAKIGJv
b2wgSW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKE9wY29kZSBvcGNvZGUpCiB7Ci0jaWYgRU5BQkxFKENP
TVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQ
UkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKExMSU5UKQogICAgIGlmICghbV9l
bmFibGVkKQogICAgICAgICByZXR1cm4gb3Bjb2RlID49IDAgJiYgc3RhdGljX2Nhc3Q8T3Bjb2Rl
SUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29kZSkpIDw9IG9wX2VuZDsKKyNlbmRpZgog
ICAgIHJldHVybiBvcGNvZGUgIT0gSGFzaFRyYWl0czxPcGNvZGU+OjplbXB0eVZhbHVlKCkKICAg
ICAgICAgJiYgIUhhc2hUcmFpdHM8T3Bjb2RlPjo6aXNEZWxldGVkVmFsdWUob3Bjb2RlKQogICAg
ICAgICAmJiBtX29wY29kZUlEVGFibGUuY29udGFpbnMob3Bjb2RlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAx
MDQ2NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgog
I2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkxM
SW50RGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5o
IgogCkBAIC00NSw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9u
RXhlY3V0YWJsZTsKICAgICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFt
RXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWluTm9k
ZTsKQEAgLTkwLDE5ICs5MiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEludGVy
cHJldGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQgY2xhc3Mg
SklUOwogICAgIHB1YmxpYzoKICAgICAgICAgSW50ZXJwcmV0ZXIoKTsKKyAgICAgICAgfkludGVy
cHJldGVyKCk7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBjYW5Vc2VK
SVQpOworICAgICAgICB2b2lkIGluaXRpYWxpemUoTExJbnQ6OkRhdGEqLCBib29sIGNhblVzZUpJ
VCk7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKSB7IHJldHVybiBtX3Jl
Z2lzdGVyRmlsZTsgfQogICAgICAgICAKICAgICAgICAgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJ
RCBpZCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwotI2lm
IEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9H
T1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgICAgICByZXR1cm4gbV9v
cGNvZGVUYWJsZVtpZF07CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIGlkOwpAQCAtMTEyLDcg
KzExNiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQo
T3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6
ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShM
TElOVCkKKyAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKKyAgICAgICAgICAg
IHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CisjZWxpZiBFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUp
KTsKICAgICAgICAgICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSk7CkBA
IC0xMjIsNiArMTI5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG9w
Y29kZTsKICNlbmRpZgogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGVuYWJsZWQo
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9lbmFibGVkOworICAgICAgICB9CiAK
ICAgICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCkBAIC0xODksNyArMjAxLDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSBtX3JlZ2lzdGVyRmlsZTsKICAg
ICAgICAgCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxF
KExMSU5UKQorICAgICAgICBPcGNvZGUqIG1fb3Bjb2RlVGFibGU7IC8vIE1hcHMgT3Bjb2RlSUQg
PT4gT3Bjb2RlIGZvciBjb21waWxpbmcKKyAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlE
PiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBp
bGluZworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgIE9w
Y29kZSBtX29wY29kZVRhYmxlW251bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bj
b2RlIGZvciBjb21waWxpbmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29w
Y29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJG
aWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Jl
Z2lzdGVyRmlsZS5oCShyZXZpc2lvbiAxMDQ2NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAgICBj
bGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAog
ICAgIGNsYXNzIFJlZ2lzdGVyRmlsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJl
Z2lzdGVyRmlsZSk7CkBAIC04MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9
CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIqKTsKICAg
ICAgICAgdm9pZCByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9pZCBhZGRUb0Nv
bW1pdHRlZEJ5dGVDb3VudChsb25nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUu
aCIKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIklubGluZUFTTS5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVU
VVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7CitleHRlcm4gIkMiIEVu
Y29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0
dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOworCisjaWYgQ1BVKFg4Nl82NCkKK2Fz
bSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4i
CitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1v
diAtNDAoJXIxMyksICVyMTNcbiIKKyAgICAibW92ICVyMTMsICVyZGlcbiIKKyAgICAiam1wICIg
U1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKFg4NikKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NU
UklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKKyAg
ICAibW92ICVlZGksIDQoJWVzcClcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FU
SU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYg
Q1BVKEFSTV9USFVNQjIpCithc20gKAorIi50ZXh0IiAiXG4iCisiLmFsaWduIDIiICJcbiIKKyIu
Z2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVf
U1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKKyIudGh1bWIiICJcbiIKKyIudGh1
bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgor
U1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJsZHIg
cjUsIFtyNSwgIy00MF0iICJcbiIKKyAgICAiY3B5IHIwLCByNSIgIlxuIgorICAgICJiICIgU1lN
Qk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRl
KSAiXG4iCispOworI2VuZGlmCisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxM
X1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUo
RXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xv
YmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1
ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJl
dHVyblZhbHVlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBIb3N0Q2FsbFJldHVyblZh
bHVlX2gKKyNkZWZpbmUgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKKyNpbmNsdWRlICJKU1ZhbHVl
LmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CisKKyNpZiBDQUxMSU5HX0NPTlZFTlRJT05fSVNfU1REQ0FMTAorI2RlZmluZSBI
T1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBDREVDTAorI2Vsc2UKKyNkZWZpbmUgSE9TVF9D
QUxMX1JFVFVSTl9WQUxVRV9PUFRJT04KKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKK2V4dGVy
biAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSgpOworfQorCisjZW5kaWYgLy8gSG9zdENhbGxSZXR1cm5WYWx1ZV9o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEwNDY0NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1
LDYgKzMyNSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
REVGSU5FX09QKG9wX3Byb2ZpbGVfd2lsbF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVz
aF9uZXdfc2NvcGUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX3Njb3BlKQorICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQp
CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaW5kZXgpCiAgICAgICAgIERFRklORV9PUChv
cF9wdXRfYnlfdmFsKQpAQCAtNDg3LDYgKzQ4OSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
cmVzb2x2ZV9nbG9iYWwpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkocmV2
aXNpb24gMTA0NjQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpJ
VENvZGUoKSB7IH0KICNlbmRpZgogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBKSVRUeXBlIHsg
SG9zdENhbGxUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OworICAgICAgICBlbnVtIEpJVFR5
cGUgeyBIb3N0Q2FsbFRodW5rLCBJbnRlcnByZXRlclRodW5rIEJhc2VsaW5lSklULCBERkdKSVQg
fTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKSVRUeXBlIGJvdHRvbVRpZXJKSVQoKQogICAg
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDb21tb25faAorI2RlZmluZSBMTElu
dENvbW1vbl9oCisKKyNkZWZpbmUgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcgMAorCisjZW5kaWYg
Ly8gTExJbnRDb21tb25faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnREYXRhLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludERhdGEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJMTEludERhdGEuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIklu
c3RydWN0aW9uLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUg
Ik9wY29kZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworRGF0YTo6
RGF0YSgpCisgICAgOiBtX2V4Y2VwdGlvbkluc3RydWN0aW9ucyhuZXcgSW5zdHJ1Y3Rpb25bbWF4
T3Bjb2RlTGVuZ3RoICsgMV0pCisgICAgLCBtX29wY29kZU1hcChuZXcgT3Bjb2RlW251bU9wY29k
ZUlEc10pCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyAr
K2kpCisgICAgICAgIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9IGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUpOworI2Rl
ZmluZSBPUENPREVfRU5UUlkob3Bjb2RlLCBsZW5ndGgpIG1fb3Bjb2RlTWFwW29wY29kZV0gPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF8jI29wY29kZSk7CisgICAgRk9SX0VBQ0hfT1BDT0RF
X0lEKE9QQ09ERV9FTlRSWSk7CisjdW5kZWYgT1BDT0RFX0VOVFJZCit9CisKK0RhdGE6On5EYXRh
KCkKK3sKKyAgICBkZWxldGVbXSBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBkZWxldGVb
XSBtX29wY29kZU1hcDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnREYXRhX2gKKyNkZWZpbmUg
TExJbnREYXRhX2gKKworI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3Bh
Y2UgTExJbnQgeworCisjaWYgRU5BQkxFKExMSU5UKQorY2xhc3MgRGF0YSB7CitwdWJsaWM6Cisg
ICAgRGF0YSgpOworICAgIH5EYXRhKCk7CisgICAgCisgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlv
bkluc3RydWN0aW9ucygpCisgICAgeworICAgICAgICByZXR1cm4gbV9leGNlcHRpb25JbnN0cnVj
dGlvbnM7CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBtX29wY29kZU1hcDsKKyAgICB9Citwcml2YXRlOgorICAgIEluc3RydWN0aW9u
KiBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBPcGNvZGUqIG1fb3Bjb2RlTWFwOworfTsK
KyNlbHNlIC8vIEVOQUJMRShMTElOVCkKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICIt
V21pc3Npbmctbm9yZXR1cm4iCisjZW5kaWYKKworY2xhc3MgRGF0YSB7CitwdWJsaWM6CisgICAg
SW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAgeworICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQor
ICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfTsKKworI2lmIENP
TVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisKKyNl
bmRpZiAvLyBFTkFCTEUoTExJTlQpCisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisj
ZW5kaWYgLy8gTExJbnREYXRhX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RW50cnlwb2ludHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIExMSW50RW50cnlwb2ludHNfaAorI2RlZmluZSBMTEludEVudHJ5cG9pbnRzX2gK
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKwor
I2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5o
IgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlv
bkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlD
aGVjaykKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaWYg
KGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpI
b3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVS
ZWYoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUp
KSk7CisgICAgICAgICAgICBhcml0eUNoZWNrID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
ZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAg
ICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkpKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hl
Y2spOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChraW5kID09IENvZGVG
b3JDYWxsKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1
YihmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuayk7CisgICAgICAgIGFyaXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVu
Y3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAg
ICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cisg
ICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVj
dEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpOworfQorCit2b2lkIGdldEV2YWxFbnRy
eXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAg
ICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENv
ZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2Vk
Q29kZVJlZihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsaW50X2V2YWxfcHJvbG9ndWUpKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0
YS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuayk7Cit9CisKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwg
SklUQ29kZSYpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAg
IGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpj
cmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoYml0d2lzZV9jYXN0PHZvaWQqPigmbGludF9wcm9ncmFt
X3Byb2xvZ3VlKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGppdENvZGUg
PSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRv
ciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50RW50cnlwb2ludHNfaApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RW50cnlwb2ludHNfaAorI2RlZmluZSBMTEludEVu
dHJ5cG9pbnRzX2gKKworI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpJVENvZGU7CitjbGFzcyBKU0dsb2JhbERhdGE7CitjbGFz
cyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CisKK25hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0
RnVuY3Rpb25FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQs
IEpJVENvZGUmLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2spOwordm9pZCBnZXRF
dmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBKSVRDb2RlJik7Cit2b2lkIGdldFByb2dyYW1F
bnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RXhj
ZXB0aW9ucy5oIgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgi
CisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIExMSW50IHsKKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBl
eGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0g
JmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywg
Z2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpKTsKKyAgICAKKyAgICByZXR1cm4gZ2xvYmFsRGF0YS0+bGxpbnREYXRhLmV4
Y2VwdGlvbkluc3RydWN0aW9ucygpOworfQorCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUq
IGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEg
PSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVj
LCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0
aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKTsKK30KKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4
Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEV4
Y2VwdGlvbnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3Ry
dWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisvLyBTYXZlcyB0aGUgY3Vy
cmVudCBQQyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlv
dSBhIFBDCisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdo
aWNoIHdoZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91
IGFuICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBl
eGNlcHRpb24gaGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhj
ZXB0aW9uIGhhbmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhh
dCBQQyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVh
ZCBleGNlcHRpb24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2Vk
IGJ5CisvLyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0
YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcg
dG8gYSBjYWxsIHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rp
b24qKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludEV4
Y2VwdGlvbnNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVy
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVs
cGVycy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTM4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJMTEludEhlbHBlcnMuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5o
IgorI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgor
I2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgorI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgorI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50RXhj
ZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJP
cGVyYXRpb25zLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCisjZGVm
aW5lIExMSU5UX09QKGluZGV4KSAoZXhlYy0+cmVnaXN0ZXJzKClbcGNbaW5kZXhdLnUub3BlcmFu
ZF0pCisjZGVmaW5lIExMSU5UX09QX0MoaW5kZXgpIChleGVjLT5yKHBjW2luZGV4XS51Lm9wZXJh
bmQpKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9UV08oZmlyc3QsIHNlY29uZCkgZG8geyAgICAg
ICBcCisgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICAgICAgdm9pZCogYTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICAgICAgdm9pZCogYjsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICB9IHBhaXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICBpbnQ2NF90IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gX19y
dF91OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5w
YWlyLmEgPSBmaXJzdDsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5wYWly
LmIgPSBzZWNvbmQ7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX3J0X3Uu
aTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNk
ZWZpbmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCBleGVjKQorCisjZGVm
aW5lIExMSU5UX1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYgX190X2dsb2JhbERhdGEgPSBleGVjLT5nbG9i
YWxEYXRhKCk7ICAgICAgICBcCisgICAgICAgIF9fdF9nbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IChl
eGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICBcCisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJv
dyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5U
X0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCkgZG8g
eyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+Z2xvYmFs
RGF0YSgpLmV4Y2VwdGlvbikpIHsgICBcCisgICAgICAgICAgICBwYyA9IHJldHVyblRvVGhyb3co
ZXhlYywgcGMpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNk
ZWZpbmUgTExJTlRfRU5EKCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRf
RU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkK
KworI2RlZmluZSBMTElOVF9CUkFOQ0gob3Bjb2RlLCBjb25kaXRpb24pIGRvIHsgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBib29sIF9fYl9jb25kaXRpb24gPSAoY29uZGl0aW9uKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoX19iX2Nv
bmRpdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgcGMgKz0gcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5vcGVyYW5kOyAgICAg
ICAgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcGNvZGUp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZh
bHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTih2YWx1ZSkgZG8geyAgICAgICAgICAgICAgICBc
CisgICAgICAgIEpTVmFsdWUgX19yX3JldHVyblZhbHVlID0gKHZhbHVlKTsgICAgICBcCisgICAg
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExM
SU5UX09QKDEpID0gX19yX3JldHVyblZhbHVlOyAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VO
RF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
KyNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0KSBMTElOVF9SRVRV
Uk5fVFdPKChleGVjKSwgKGNhbGxUYXJnZXQpKQorCisjZGVmaW5lIExMSU5UX0NBTExfVEhST1co
ZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICBcCisgICAgICAg
IEV4ZWNTdGF0ZSogX19jdF9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2N0X3BjID0gKHBjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYgX19jdF9n
bG9iYWxEYXRhID0gKF9fY3RfZXhlYyktPmdsb2JhbERhdGEoKTsgICAgICBcCisgICAgICAgIF9f
Y3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jdF9leGVjLCBjYWxsVG9UaHJv
dyhfX2N0X2V4ZWMsIF9fY3RfcGMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5l
IExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKSBkbyB7ICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jY2VfZXhlYyA9IChleGVjKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2NjZV9w
YyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlm
IChVTkxJS0VMWShfX2NjZV9leGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY2NlX2V4ZWMsIGNhbGxU
b1Rocm93KF9fY2NlX2V4ZWMsIF9fY2NlX3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKwor
I2RlZmluZSBMTElOVF9DQUxMX1JFVFVSTihleGVjLCBwYywgY2FsbFRhcmdldCkgZG8geyAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3JfZXhlYyA9IChleGVjKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiog
X19jcl9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICB2b2lkKiBfX2NyX2NhbGxUYXJnZXQgPSAoY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihfX2NyX2V4
ZWMtPmNhbGxlckZyYW1lKCksIF9fY3JfcGMpOyAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9J
TVBMKF9fY3JfZXhlYywgX19jcl9jYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgXAorICAgIH0g
d2hpbGUgKGZhbHNlKQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpCit7CisgICAgLy8g
RklYTUUKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wobG9vcF9vc3Ip
Cit7CisgICAgLy8gRklYTUUKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0wocmVwbGFjZSkKK3sKKyAgICAvLyBGSVhNRQorICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKQoreworICAgIC8vIEZJWE1FCisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hl
Y2spCit7CisgICAgLy8gRklYTUUKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIC8vIEZJWE1FCisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZh
dGlvbikKK3sKKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBKU0FjdGl2YXRpb246OmNy
ZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMsIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSkpOworICAgIGV4ZWMt
PnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2YXRpb24pKTsKKyAg
ICBMTElOVF9SRVRVUk4oSlNWYWx1ZShhY3RpdmF0aW9uKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQoreworICAgIExMSU5UX1JFVFVSTihKU1ZhbHVl
KEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYykpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKQoreworICAgIEpTRnVuY3Rpb24qIGNv
bnN0cnVjdG9yID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgCisjaWYgIUFTU0VS
VF9ESVNBQkxFRAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBBU1NFUlQo
Y29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3Is
IGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CisjZW5kaWYKKyAgICAKKyAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBKU1ZhbHVlIHByb3RvID0gTExJTlRfT1AoMikuanNW
YWx1ZSgpOworICAgIGlmIChwcm90by5pc09iamVjdCgpKQorICAgICAgICBzdHJ1Y3R1cmUgPSBh
c09iamVjdChwcm90byktPmluaGVyaXRvcklEKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgZWxz
ZQorICAgICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0
LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpOworICAgIAorICAgIExMSU5UX1JFVFVSTihjb25zdHJ1
Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NvbnZlcnRfdGhpcykKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSkuanNW
YWx1ZSgpOworICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBMTElOVF9SRVRVUk4o
djEudG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
d19vYmplY3QpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSkKK3sKKyAgICBMTElO
VF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgYml0d2lzZV9jYXN0PEpTVmFsdWUqPigmTExJ
TlRfT1AoMikpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25ld19hcnJheV9idWZmZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5
KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihwY1syXS51Lm9wZXJhbmQp
LCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19y
ZWdleHApCit7CisgICAgUmVnRXhwKiByZWdFeHAgPSBleGVjLT5jb2RlQmxvY2soKS0+cmVnZXhw
KHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkKKyAgICAgICAg
TExJTlRfVEhST1coY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgZmxhZyBzdXBwbGll
ZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpOworICAgIExMSU5UX1JFVFVSTihSZWdFeHBPYmpl
Y3Q6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhw
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbighTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVx
KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OmVxdWFsKGV4ZWMsIExM
SU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6c3Ry
aWN0RXF1YWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1AoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2xlc3NlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPHRy
dWU+KGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKQoreworICAgIExMSU5U
X1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ3JlYXRlcmVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8
ZmFsc2U+KGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKQoreworICAgIExM
SU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykg
KyAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKQoreworICAgIExM
SU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykg
LSAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYykKK3sKKyAgICBk
b3VibGUgcmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAg
IExMSU5UX09QKDIpID0ganNOdW1iZXIocmVzdWx0ICsgMSk7CisgICAgTExJTlRfUkVUVVJOKGpz
TnVtYmVyKHJlc3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9kZWMp
Cit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihl
eGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCAtIDEpOworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3RvX2pzbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgyKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X25lZ2F0ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoLUxMSU5UX09QKDIpLmpzVmFs
dWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRk
KQoreworICAgIEpTVmFsdWUgdjEgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1
ZSB2MiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAgIGlmICh2MS5pc1N0cmlu
ZygpKSB7CisgICAgICAgIExMSU5UX1JFVFVSTigKKyAgICAgICAgICAgIHYyLmlzU3RyaW5nKCkK
KyAgICAgICAgICAgID8ganNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEpLCBhc1N0cmluZyh2Mikp
CisgICAgICAgICAgICA6IGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9QcmltaXRp
dmVTdHJpbmcoZXhlYykpKTsKKyAgICB9CisgICAgCisgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYg
djIuaXNOdW1iZXIoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHYxLmFzTnVtYmVy
KCkgKyB2Mi5hc051bWJlcigpKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpzQWRkU2xvd0Nh
c2UoZXhlYywgdjEsIHYyKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJl
cihleGVjKSAqIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAtIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9kaXYpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUo
KS50b051bWJlcihleGVjKSAvIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2QpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpLCBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2xzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJ
TlRfT1AoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPDwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3JzaGlm
dCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRv
SW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSA+PiBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfYml0YW5kKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9P
UCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSAmIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRv
VUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcikKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvSW50MzIo
ZXhlYykgfCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051
bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSBeIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9iaXRub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKH5MTElOVF9PUCgyKS5qc1Zh
bHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hl
Y2tfaGFzX2luc3RhbmNlKQoreworICAgIEpTVmFsdWUgYmFzZVZhbCA9IExMSU5UX09QKDIpLmpz
VmFsdWUoKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgVHlwZUluZm8gdHlwZUluZm8oVW5zcGVjaWZp
ZWRUeXBlKTsKKyAgICBBU1NFUlQoIWJhc2VWYWwuaXNPYmplY3QoKQorICAgICAgICAgICB8fCAh
KHR5cGVJbmZvID0gYXNPYmplY3QoYmFzZVZhbCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpKS5p
bXBsZW1lbnRzSGFzSW5zdGFuY2UoKSk7CisjZW5kaWYKKyAgICBMTElOVF9USFJPVyhjcmVhdGVJ
bnZhbGlkUGFyYW1FcnJvcihleGVjLCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3coZXhlYywgTExJTlRfT1Ao
MikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIExMSU5UX09QKDQpLmpzVmFsdWUo
KSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZikKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRlZmluZWQpCit7CisgICAg
SlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4odi5pc0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKExMSU5UX09QKDIpLmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4o
TExJTlRfT1AoMikuanNWYWx1ZSgpLmlzTnVtYmVyKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2lzX3N0cmluZykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGlzSlNT
dHJpbmcoTExJTlRfT1AoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc09iamVj
dFR5cGUoTExJTlRfT1AoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfZnVuY3Rpb24pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVu
Y3Rpb25UeXBlKExMSU5UX09QKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2luKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1Bh
dGhzOjpvcEluKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1
ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSkKK3sKKyAgICBM
TElOVF9SRVRVUk4oQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+Y29kZUJs
b2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKQoreworICAgIExMSU5UX1JFVFVSTigKKyAgICAgICAg
Q29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVTa2lwKAorICAgICAgICAgICAgZXhlYywKKyAgICAg
ICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCksCisg
ICAgICAgICAgICBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Jlc29sdmVfZ2xvYmFsKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmpl
Y3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0udS5vcGVyYW5kOworICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaW50IG9mZnNldCA9
IHBjWzRdLnUub3BlcmFuZDsKKyAgICAKKyAgICBBU1NFUlQoKCFzdHJ1Y3R1cmUpID09ICghb2Zm
c2V0KSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgp
KTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihw
cm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAKKyAg
ICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKSB7
CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCk7Cisg
ICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgc2xvdC5z
bG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgcGNbM10udS5zdHJ1Y3R1
cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAg
ICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIExMSU5UX1JFVFVSTihyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9USFJPVyhj
cmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAgSWRlbnRpZmllciYgaWRlbnQg
PSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIGlm
IChwY1szXS51Lm9wZXJhbmQpIHsKKyAgICAgICAgSlNWYWx1ZSBiYXNlID0gSlNDOjpyZXNvbHZl
QmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCB0cnVlKTsKKyAgICAgICAgaWYg
KCFiYXNlKQorICAgICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xv
YmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICAgICAgTExJTlRfUkVU
VVJOKGJhc2UpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oSlNDOjpyZXNvbHZlQmFz
ZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKK3sKKyAgICBKU09iamVj
dCogb2JqZWN0ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChvYmplY3QpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJs
b2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIW9iamVjdC0+Z2V0
UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkKKyAgICAgICAgTExJTlRfVEhST1coY3Jl
YXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkp
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmVfd2l0aF9iYXNlKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjpv
cFJlc29sdmVXaXRoQmFzZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1sz
XS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7
CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKK3sKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aFRoaXMoZXhlYywgZXhlYy0+Y29k
ZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0OworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKQor
eworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRl
bnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsK
KyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFs
dWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsK
KyAgICBMTElOVF9PUCgxKSA9IHJlc3VsdDsKKworICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkK
KyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCisgICAgICAgICYmIHNsb3Quc2xvdEJhc2Uo
KSA9PSBiYXNlVmFsdWUKKyAgICAgICAgJiYgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQ
cm9wZXJ0eVNsb3Q6OlZhbHVlKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxs
ID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJh
c2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RydWN0dXJlLT5p
c1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBl
SW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpKSB7CisgICAgICAgICAgICBwY1s0XS51
LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcGNbNV0u
dS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKQoreworICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxv
Y2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUp
OworICAgIExMSU5UX1JFVFVSTihiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpCit7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9
IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90
KGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaWRl
bnQsIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90
LmlzQ2FjaGVhYmxlKCkpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBi
YXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNl
bGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5j
YWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZv
KCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkKKyAgICAgICAgICAgICYmIGJhc2VDZWxsID09
IHNsb3QuYmFzZSgpKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzbG90LnR5cGUo
KSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgaWYg
KCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CisgICAgICAgICAgICAgICAgICAgIG5vcm1h
bGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKKyAgICAgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+aXNP
YmplY3QoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCisgICAg
ICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAg
ICAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAg
ICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUu
b3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAg
ICAgICAgICAgICAgIHBjWzZdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQo
CisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNb
MF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOwor
ICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1
Y3R1cmUpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zm
c2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9k
ZWxfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2so
KTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b09i
amVjdChleGVjKTsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFi
bGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgY29kZUJsb2NrLT5pZGVudGlm
aWVyKHBjWzNdLnUub3BlcmFuZCkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAg
IGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAg
TExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3Bl
cnR5LiIpKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisK
K2lubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFs
dWUsIEpTVmFsdWUgc3Vic2NyaXB0KQoreworICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2Vs
bCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBpZiAoSlNWYWx1ZSByZXN1
bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eShleGVjLCBhc1N0cmlu
ZyhzdWJzY3JpcHQpLT52YWx1ZShleGVjKSkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKyAgICAKKyAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKKyAgICAgICAgdWlu
dDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU1N0cmluZyhi
YXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAg
ICAgICAgcmV0dXJuIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAg
ICAgICAKKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJh
eShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc0J5
dGVBcnJheShiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAg
IHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGkpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlm
aWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7CisgICAgcmV0dXJu
IGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVydHkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJ
TlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpCit7CisgICAgSlNWYWx1ZSBh
cmd1bWVudHMgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhcmd1bWVudHMpIHsK
KyAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIExMSU5U
X09QKDIpID0gYXJndW1lbnRzOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlW
YWwoZXhlYywgYXJndW1lbnRzLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oZ2V0
QnlWYWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpCit7CisgICAgSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAgIEpT
VmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3Vi
c2NyaXB0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElO
VF9PUCgzKS5qc1ZhbHVlKCk7CisgICAgCisgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50
MzIoKSkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAg
ICAgICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1ZSkpIHsKKyAgICAgICAgICAgIEpTQXJyYXkqIGpz
QXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAoanNBcnJheS0+Y2Fu
U2V0SW5kZXgoaSkpCisgICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgoZ2xvYmFsRGF0
YSwgaSwgdmFsdWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEpTQXJyYXk6
OnB1dEJ5SW5kZXgoanNBcnJheSwgZXhlYywgaSwgdmFsdWUpOworICAgICAgICAgICAgTExJTlRf
RU5EKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKQor
ICAgICAgICAgICAgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkp
IHsKKyAgICAgICAgICAgIEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IGFzQnl0ZUFycmF5KGJh
c2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKSB7CisgICAgICAgICAg
ICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzSW50MzIoKSk7CisgICAgICAg
ICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodmFs
dWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChp
LCB2YWx1ZS5hc051bWJlcigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGksIHZhbHVl
KTsKKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJv
cGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19F
WENFUFRJT04oKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChleGVjLT5jb2RlQmxvY2soKS0+
aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVl
LCBzbG90KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2RlbF9ieV92YWwpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUCgyKS5qc1Zh
bHVlKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZXhl
Yyk7CisgICAgCisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7
CisgICAgCisgICAgYm9vbCBjb3VsZERlbGV0ZTsKKyAgICAKKyAgICB1aW50MzJfdCBpOworICAg
IGlmIChzdWJzY3JpcHQuZ2V0VUludDMyKGkpKQorICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VP
YmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNlT2JqZWN0LCBl
eGVjLCBpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMp
KTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIGNvdWxkRGVsZXRl
ID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwg
ZXhlYywgcHJvcGVydHkpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGV4
ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpCit7CisgICAgTExJTlRfT1AoMSkuanNWYWx1
ZSgpLnB1dChleGVjLCBwY1syXS51Lm9wZXJhbmQsIExMSU5UX09QKDMpLmpzVmFsdWUoKSk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVy
KQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAg
SlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAg
IElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0u
dS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNWYWx1ZSgpLmlzT2JqZWN0KCkp
OworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZUdldHRlcihiYXNlT2JqLCBleGVj
LCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfc2V0dGVyKQoreworICAg
IEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgSlNPYmplY3Qq
IGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIElkZW50aWZp
ZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5k
KTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIGJh
c2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZVNldHRlcihiYXNlT2JqLCBleGVjLCBpZGVudCwg
YXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKQoreworICAgIHVuc2lnbmVk
IGNvdW50ID0gcGNbMV0udS5vcGVyYW5kOworICAgIFNjb3BlQ2hhaW5Ob2RlKiB0bXAgPSBleGVj
LT5zY29wZUNoYWluKCk7CisgICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAgIHRtcCA9IHRtcC0+
cG9wKCk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbih0bXApOworICAgIHBjICs9IHBjWzJdLnUu
b3BlcmFuZDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2p0cnVlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qdHJ1ZSwgTExJTlRfT1AoMSkuanNWYWx1
ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFs
c2UpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pmYWxzZSwgIUxMSU5UX09QKDEpLmpzVmFsdWUo
KS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3Mp
Cit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzLCBqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVz
cywgIWpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVy
KQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlciwganNMZXNzPGZhbHNlPihleGVjLCBM
TElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0go
b3Bfam5ncmVhdGVyLCAhanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2psZXNzZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEsIGpzTGVzc0VxPHRy
dWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpCit7CisgICAgTExJ
TlRfQlJBTkNIKG9wX2pubGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygx
KS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRl
cmVxLCBqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdy
ZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEsICFqc0xlc3NFcTxm
YWxzZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKQoreworICAg
IEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1AoMykuanNWYWx1ZSgpOworICAgIEFTU0VSVChz
Y3J1dGluZWUuaXNEb3VibGUoKSk7CisgICAgZG91YmxlIHZhbHVlID0gc2NydXRpbmVlLmFzRG91
YmxlKCk7CisgICAgaW50MzJfdCBpbnRWYWx1ZSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVl
KTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAodmFs
dWUgPT0gaW50VmFsdWUpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5pbW1lZGlhdGVTd2l0Y2hKdW1w
VGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShpbnRWYWx1ZSwgZGVmYXVsdE9m
ZnNldCk7CisgICAgfSBlbHNlCisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKQor
eworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1AoMykuanNWYWx1ZSgpOworICAgIGlu
dCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlmICghc2NydXRpbmVlLmlz
U3RyaW5nKCkpCisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7CisgICAgZWxzZSB7CisgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBj
ICs9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zm
c2V0Rm9yVmFsdWUoYXNTdHJpbmcoc2NydXRpbmVlKS0+dmFsdWUoZXhlYykuaW1wbCgpLCBkZWZh
dWx0T2Zmc2V0KTsKKyAgICB9CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXdfZnVuYykKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMt
PmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVUeXBlKCkgIT0gRnVuY3Rp
b25Db2RlCisgICAgICAgICAgIHx8ICFjb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKQor
ICAgICAgICAgICB8fCBleGVjLT51bmNoZWNrZWRSKGNvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lz
dGVyKCkpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVuY3Rpb25E
ZWNsKHBjWzJdLnUub3BlcmFuZCktPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApCit7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbMl0udS5vcGVyYW5kKTsK
KyAgICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVuY3Rpb24tPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVD
aGFpbigpKTsKKyAgICAKKyAgICBpZiAoIWZ1bmN0aW9uLT5uYW1lKCkuaXNOdWxsKCkpIHsKKyAg
ICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25TY29wZU9iamVjdCA9IEpTU3RhdGlj
U2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBmdW5jdGlvbi0+bmFtZSgpLCBmdW5jLCBSZWFkT25s
eSB8IERvbnREZWxldGUpOworICAgICAgICBmdW5jLT5zZXRTY29wZShleGVjLT5nbG9iYWxEYXRh
KCksIGZ1bmMtPnNjb3BlKCktPnB1c2goZnVuY3Rpb25TY29wZU9iamVjdCkpOworICAgIH0KKyAg
ICAKKyAgICBMTElOVF9SRVRVUk4oZnVuYyk7Cit9CisKK3N0YXRpYyBIZWxwZXJSZXR1cm5UeXBl
IGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBK
U1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEV4ZWNT
dGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKworICAgIGV4ZWNDYWxsZWUtPnNl
dFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2Rl
QmxvY2soMCk7CisKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShj
YWxsZWUsIGNhbGxEYXRhKTsKKyAgICAKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxU
eXBlSlMpOworICAgIAorICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVIb3N0KSB7Cisg
ICAgICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJl
dF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgICAgIH0KKyAgICAK
KyAgICAgICAgQVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSk7CisgICAgICAgIExMSU5U
X0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIGNhbGxl
ZSkpOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAg
IAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNv
bnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0RGF0YSk7Cisg
ICAgCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZUpTKTsKKyAgICAK
KyAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlSG9zdCkgeworICAgICAgICBn
bG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVj
dERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgTExJTlRfQ0FMTF9S
RVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0g
Q29uc3RydWN0VHlwZU5vbmUpOworICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0
ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworfQorCitpbmxpbmUgSGVscGVy
UmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiog
cGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlLCBM
TEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gMCkKK3sKKyAgICBBU1NFUlQoIWV4cGVj
dGVkRnVuY3Rpb24gPT0gIW1hY2hpbmVDb2RlKTsKKyAgICAKKyAgICBKU0NlbGwqIGNhbGxlZUFz
RnVuY3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKKyAgICBpZiAoIWNh
bGxlZUFzRnVuY3Rpb25DZWxsKQorICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0Nh
bGxlZSwgcGMsIGNhbGxlZUFzVmFsdWUsIGtpbmQpOworICAgIAorICAgIEpTRnVuY3Rpb24qIGNh
bGxlZSA9IGFzRnVuY3Rpb24oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOworICAgIGV4ZWNDYWxsZWUt
PnNldFNjb3BlQ2hhaW4oY2FsbGVlLT5zY29wZVVuY2hlY2tlZCgpKTsKKyAgICBFeGVjdXRhYmxl
QmFzZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOworICAgIAorICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsK
KyAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgY29kZVB0ciA9
IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFi
bGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICAg
ICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21waWxlRm9yKGV4ZWND
YWxsZWUsIGNhbGxlZS0+c2NvcGUoKSwga2luZCk7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAg
ICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKSwgcGMsIGVy
cm9yKTsKKyAgICAgICAgY29kZUJsb2NrID0gJmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVk
Qnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFt
ZXRlcnMoKSkpCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5l
cmF0ZWRKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Io
a2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICB9CisgICAgCisgICAgaWYgKGNhbGxMaW5rSW5m
bykgeworICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQoZXhlY0NhbGxlZS0+Z2xvYmFs
RGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWVBc0Z1bmN0aW9uQ2Vs
bCk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+bWFjaGluZUNvZGVUYXJldCA9IGNvZGVQdHI7Cisg
ICAgICAgIGlmIChjb2RlQmxvY2spCisgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWlu
Z0NhbGwoY2FsbExpbmtJbmZvKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfQ0FMTF9SRVRVUk4o
ZXhlY0NhbGxlZSwgcGMsIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Cit9CisKK2lubGlu
ZSBIZWxwZXJSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rp
b24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgLy8gVGhpcyBuZWVk
cyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUuCisgICAgLy8gLSBGaWd1cmUgb3V0
IHdoYXQgdG8gY2FsbCBhbmQgY29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBJZiBw
b3NzaWJsZSwgbGluayB0aGUgY2FsbCdzIGlubGluZSBjYWNoZS4KKyAgICAvLyAtIFJldHVybiBh
IHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBm
cmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKS5qc1Zh
bHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUu
b3BlcmFuZDsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0
ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxs
ZXJGcmFtZShleGVjKTsKKyAgICAKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBj
LCBraW5kLCBjYWxsZWVBc1ZhbHVlLCAmcGNbNF0udS5qc0NlbGwsICZwY1s1XS51LnBvaW50ZXIp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCkKK3sKKyAgICByZXR1cm4gZ2Vu
ZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDYWxsKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENv
ZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJh
cmdzKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZy
YW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4KKyAgICAvLyAtIEZp
Z3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAv
LyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRo
ZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElO
VF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gbG9h
ZFZhcmFyZ3MoCisgICAgICAgIGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXIt
PnJlZ2lzdGVyRmlsZSgpLAorICAgICAgICBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09Q
KDMpLmpzVmFsdWUoKSwgcGNbNF0udS5vcGVyYW5kKTsKKyAgICBMTElOVF9DQUxMX0NIRUNLX0VY
Q0VQVElPTihleGVjLCBwYyk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdp
c3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENh
bGxlckZyYW1lKGV4ZWMpOworICAgIAorICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwg
cGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NhbGxfZXZhbCkKK3sKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9P
UCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyAr
IHBjWzNdLnUub3BlcmFuZDsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5n
bG9iYWxEYXRhKCk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFt
ZShleGVjKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVl
KSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5z
Y29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBDKGJpdHdpc2VfY2FzdDxJ
bnN0cnVjdGlvbio+KCZsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOworICAgIGV4ZWNDYWxs
ZWUtPnNldENvZGVCbG9jaygwKTsKKyAgICAKKyAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxl
ZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFsKSkKKyAgICAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVj
Q2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworICAgIAorICAgIGdsb2Jh
bERhdGEuaG9zdENhbGxSZXR1cm5WYWx1ZSA9IGV2YWwoZXhlY0NhbGxlZSk7CisgICAgTExJTlRf
Q0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJf
b2ZmX2FjdGl2YXRpb24pCit7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1
bGxTY29wZUNoYWluKCkpOworICAgIEpTVmFsdWUgYWN0aXZhdGlvblZhbHVlID0gTExJTlRfT1Ao
MSkuanNWYWx1ZSgpOworICAgIGlmICghYWN0aXZhdGlvblZhbHVlKSB7CisgICAgICAgIGlmIChK
U1ZhbHVlIHYgPSBleGVjLT5yZWdpc3RlcnMoKVt1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIo
cGNbMl0udS5vcGVyYW5kKV0uanNWYWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMtPmNv
ZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyh2
KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAgfQorICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9
CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0aW9uKGFjdGl2YXRpb25W
YWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihleGVjLT5nbG9iYWxEYXRhKCkpOworICAg
IGlmIChKU1ZhbHVlIHYgPSBleGVjLT5yZWdpc3RlcnMoKVt1bm1vZGlmaWVkQXJndW1lbnRzUmVn
aXN0ZXIocGNbMl0udS5vcGVyYW5kKV0uanNWYWx1ZSgpKQorICAgICAgICBhc0FyZ3VtZW50cyh2
KS0+ZGlkVGVhck9mZkFjdGl2YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBhY3RpdmF0aW9uKTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2Zm
X2FyZ3VtZW50cykKK3sKKyAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCktPnVzZXNBcmd1bWVu
dHMoKSAmJiAhZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAg
YXNBcmd1bWVudHMoZXhlYy0+cmVnaXN0ZXJzKClbdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVy
KHBjWzFdLnUub3BlcmFuZCldLmpzVmFsdWUoKSktPnRlYXJPZmYoZXhlYyk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsICZMTElOVF9PUCgyKSwgcGNbM10udS5vcGVyYW5kKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpCit7CisgICAgTExJ
TlRfUkVUVVJOKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b1ByaW1pdGl2ZShleGVjKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKQoreworICAgIEpTVmFsdWUgdiA9
IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAodi5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7
CisgICAgICAgIHBjICs9IHBjWzVdLnUub3BlcmFuZDsKKyAgICAgICAgTExJTlRfRU5EKCk7Cisg
ICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKKyAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVjdHVyZSgpOworICAgIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBzdHJ1Y3R1cmUtPmVudW1lcmF0aW9uQ2Fj
aGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlOYW1lSXRlcmF0b3IgfHwganNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4oKSAhPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNo
YWluKGV4ZWMpKQorICAgICAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8pOworICAgIAorICAgIExMSU5UX09QKDEpID0gSlNW
YWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKKyAgICBMTElOVF9PUCgyKSA9IEpTVmFsdWUo
byk7CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rlcjo6d2l0aEludCgwKTsKKyAgICBMTElOVF9P
UCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPnNpemUoKSk7
CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcG5hbWVzKTsKKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUpCit7Cisg
ICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChMTElOVF9PUCgyKS5qc1ZhbHVlKCkpOworICAg
IEpTU3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3RyaW5nKExMSU5UX09QKDEpLmpzVmFsdWUoKSk7Cisg
ICAgaWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgcHJvcGVydHkt
PnZhbHVlKGV4ZWMpKSkpIHsKKyAgICAgICAgLy8gR28gdG8gdGFyZ2V0LgorICAgICAgICBwYyAr
PSBwY1s2XS51Lm9wZXJhbmQ7CisgICAgfSAvLyBFbHNlLCBkb24ndCBjaGFuZ2UgdGhlIFBDLCBz
byB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxvb3AuCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKQoreworICAgIEpTVmFsdWUgdiA9IExM
SU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogbyA9IHYudG9PYmplY3QoZXhlYyk7
CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBv
OworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKG8pKTsK
KyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bv
cF9zY29wZSkKK3sKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+
cG9wKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHVzaF9uZXdfc2NvcGUpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2Rl
QmxvY2soKTsKKyAgICBKU09iamVjdCogc2NvcGUgPSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVh
dGUoZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCksIExMSU5UX09Q
KDMpLmpzVmFsdWUoKSwgRG9udERlbGV0ZSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVj
LT5zY29wZUNoYWluKCktPnB1c2goc2NvcGUpKTsKKyAgICBMTElOVF9SRVRVUk4oc2NvcGUpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpCit7CisgICAgTExJTlRfVEhST1co
TExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Ro
cm93X3JlZmVyZW5jZV9lcnJvcikKK3sKKyAgICBMTElOVF9USFJPVyhjcmVhdGVSZWZlcmVuY2VF
cnJvcihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b1N0cmluZyhleGVjKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVidWcpCit7CisgICAgaW50IGRlYnVnSG9va0lE
ID0gcGNbMV0udS5vcGVyYW5kOworICAgIGludCBmaXJzdExpbmUgPSBwY1syXS51Lm9wZXJhbmQ7
CisgICAgaW50IGxhc3RMaW5lID0gcGNbM10udS5vcGVyYW5kOworICAgIAorICAgIGV4ZWMtPmds
b2JhbERhdGEoKS5pbnRlcnByZXRlci0+ZGVidWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVidWdIb29r
SUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgCisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCkK
K3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPndpbGxFeGVj
dXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQoreworICAgICgqUHJv
ZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSgpKS0+ZGlkRXhlY3V0ZShleGVjLCBMTElO
VF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6TExJbnQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEhlbHBlcnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEhlbHBlcnNf
aAorI2RlZmluZSBMTEludEhlbHBlcnNfaAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0
aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCit0eXBlZGVmIGludDY0X3QgSGVscGVyUmV0dXJu
VHlwZTsKKworI2RlZmluZSBMTElOVF9IRUxQRVJfREVDTChuYW1lKSBcCisgICAgZXh0ZXJuICJD
IiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50XyMjbmFtZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0
aW9uKiBwYykKKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGxvb3Bfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpOworTExJTlRfSEVMUEVS
X0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2Fs
bF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlD
aGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2NyZWF0ZV90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0
X3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25ld19hcnJheSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3
X2FycmF5X2J1ZmZlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9l
cSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9zdHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVxKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9s
ZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2dyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2lu
Yyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYyk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcG9zdF9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcik7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbmVnYXRlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX211bCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X21vZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9yc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfYml0b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfYml0bm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19o
YXNfaW5zdGFuY2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
aXNfdW5kZWZpbmVkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2lzX3N0cmluZyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbik7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cmVzb2x2ZV9nbG9iYWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9n
ZXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3Ro
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2RlbF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3Zh
bCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wdXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfdmFsKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3B1dF9nZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0
ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2p0cnVlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qbmxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ps
ZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdy
ZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2NoYXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3N3aXRjaF9zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jYWxsX2V2YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2
YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl90b19wcmltaXRpdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3B1c2hfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Rocm93KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZl
cmVuY2VfZXJyb3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAor
CisjZW5kaWYgLy8gTExJbnRIZWxwZXJzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisjZGVmaW5l
IExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2lu
Y2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNp
ZiBDUFUoWDg2KQorI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMQorI2Vsc2UKKyNkZWZpbmUgT0ZG
TElORV9BU01fWDg2IDAKKyNlbmRpZgorCisjaWYgQ1BVKEFSTXY3KQorI2RlZmluZSBPRkZMSU5F
X0FTTV9BUk12NyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCisjZW5kaWYK
KworI2lmICFBU1NFUlRfRElTQUJMRUQKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJM
RUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMAorI2VuZGlm
CisKKyNpZiBDUFUoQklHX0VORElBTikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAx
CisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDAKKyNlbmRpZgorCisjaWYg
RU5BQkxFKExMSU5UX09TUl9UT19KSVQpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVE
IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCisj
aWYgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9O
X1RSQUNJTkcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcg
MAorI2VuZGlmCisKKyNlbmRpZiAvLyBMTEludE9mZmxpbmVBc21Db25maWdfaApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpbmNsdWRlICJBbGxvY2F0aW9uU3BhY2UuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2su
aCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU0FycmF5
LmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1
ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU3R5cGVJbmZvLmgiCisjaW5jbHVkZSAiSlNW
YXJpYWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50
T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5jbHVkZSAi
UmVnaXN0ZXJGaWxlLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVj
dHVyZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9m
aWxlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgorCituYW1lc3BhY2UgSlND
IHsKKworI2RlZmluZSBPRkZMSU5FX0FTTV9PRkZTRVRPRihjbGF6eiwgZmllbGQpIE9CSkVDVF9P
RkZTRVRPRihjbGF6eiwgZmllbGQpCisKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvciB7Citw
dWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkKiBkdW1teSgpOworfTsKKworY29uc3Qg
dW5zaWduZWQqIExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKQoreworI2luY2x1ZGUgIkxM
SW50RGVzaXJlZE9mZnNldHMuaCIKKyAgICByZXR1cm4gZXh0cmFjdG9yVGFibGU7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCitpbnQgbWFpbihpbnQsIGNoYXIqKikKK3sKKyAgICAvLyBPdXQg
b2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRpb24sIG1ha2Ugc3VyZSB0aGF0IExMSW50T2Zmc2V0c0V4
dHJhY3Rvcjo6ZHVtbXkoKSBpcyBsaXZlLAorICAgIC8vIGFuZCB0aGUgZXh0cmFjdG9yVGFibGUg
aXMgbGl2ZSwgdG9vLgorICAgIHByaW50ZigiJXBcbiIsIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFj
dG9yOjpkdW1teSgpKTsKKyAgICByZXR1cm4gMDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisKKyNpbmNsdWRlICJK
U0ludGVyZmFjZUpJVC5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIHZvaWQgKCp0
YXJnZXQpKCkpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIAorICAgIC8vIEZJWE1F
OiB0aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20g
bm90IHN1cmUgSSBjYXJlLgorICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1t
UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7
CisgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0KTsKKyAgICByZXR1cm4gcGF0Y2hCdWZm
ZXIuZmluYWxpemVDb2RlKCk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZv
ckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAg
ICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopCit7CisgICAg
cmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVu
Y3Rpb25Gb3JDYWxsQXJpdHlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKQoreworICAgIHJl
dHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlv
bkZvckNvbnN0cnVjdEFyaXR5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKikKK3sKKyAgICBy
ZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBl
dmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKQoreworICAgIHJldHVybiBnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9ldmFsX3Byb2xvZ3VlKTsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xv
YmFsRGF0YSopCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERh
dGEsIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
TExJbnQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3Mu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50VGh1bmtzX2gKKyNkZWZpbmUgTExJ
bnRUaHVua3NfaAorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBKU0dsb2JhbERhdGE7CisKK25hbWVzcGFjZSBMTEludCB7CisK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9y
KEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3Ry
dWN0RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVu
a0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFt
RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludFRodW5rc19oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyNDUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBDcmFzaCBjb3Vyc2Ugb24gdGhlIGxhbmd1YWdl
IHRoYXQgdGhpcyBpcyB3cml0dGVuIGluICh3aGljaCBJIGp1c3QgY2FsbAorIyAiYXNzZW1ibHki
IGV2ZW4gdGhvdWdoIGl0J3MgbW9yZSB0aGFuIHRoYXQpOgorIworIyAtIE1vc3RseSBnYXMtc3R5
bGUgb3BlcmFuZCBvcmRlcmluZy4gVGhlIGxhc3Qgb3BlcmFuZCB0ZW5kcyB0byBiZSB0aGUKKyMg
ICBkZXN0aW5hdGlvbi4gU28gImEgOj0gYiIgaXMgd3JpdHRlbiBhcyAibW92IGIsIGEiLiBCdXQg
dW5saWtlIGdhcywKKyMgICBjb21wYXJpc29ucyBhcmUgaW4tb3JkZXIsIHNvICJpZiAoYSA8IGIp
IiBpcyB3cml0dGVuIGFzCisjICAgImJpbHQgYSwgYiwgLi4uIi4KKyMKKyMgLSAiYiIgPSBieXRl
LCAiaCIgPSAxNi1iaXQgd29yZCwgImkiID0gMzItYml0IHdvcmQsICJwIiA9IHBvaW50ZXIuCisj
ICAgQ3VycmVudGx5IHRoaXMgaXMganVzdCAzMi1iaXQgc28gImkiIGFuZCAicCIgYXJlIGludGVy
Y2hhbmdlYWJsZQorIyAgIGV4Y2VwdCB3aGVuIGFuIG9wIHN1cHBvcnRzIG9uZSBidXQgbm90IHRo
ZSBvdGhlci4KKyMKKyMgLSBJbiBnZW5lcmFsLCB2YWxpZCBvcGVyYW5kcyBmb3IgbWFjcm8gaW52
b2NhdGlvbnMgYW5kIGluc3RydWN0aW9ucyBhcmUKKyMgICByZWdpc3RlcnMgKGVnICJ0MCIpLCBh
ZGRyZXNzZXMgKGVnICI0W3QwXSIpLCBiYXNlLWluZGV4IGFkZHJlc3NlcworIyAgIChlZyAiN1t0
MCwgdDEsIDJdIiksIGFic29sdXRlIGFkZHJlc3NlcyAoZWcgIjB4YTAwMDAwMDBbXSIpLCBvciBs
YWJlbHMKKyMgICAoZWcgIl9mb28iIG9yICIuZm9vIikuIE1hY3JvIGludm9jYXRpb25zIGNhbiBh
bHNvIHRha2UgYW5vbnltb3VzCisjICAgbWFjcm9zIGFzIG9wZXJhbmRzLiBJbnN0cnVjdGlvbnMg
Y2Fubm90IHRha2UgYW5vbnltb3VzIG1hY3Jvcy4KKyMKKyMgLSBMYWJlbHMgbXVzdCBoYXZlIG5h
bWVzIHRoYXQgYmVnaW4gd2l0aCBlaXRoZXIgIl8iIG9yICIuIi4gIEEgIi4iIGxhYmVsCisjICAg
aXMgbG9jYWwgYW5kIGdldHMgcmVuYW1lZCBiZWZvcmUgY29kZSBnZW4gdG8gbWluaW1pemUgbmFt
ZXNwYWNlCisjICAgcG9sbHV0aW9uLiBBICJfIiBsYWJlbCBpcyBhbiBleHRlcm4gc3ltYm9sIChp
LmUuICIuZ2xvYmwiKS4gVGhlICJfIgorIyAgIG1heSBvciBtYXkgbm90IGJlIHJlbW92ZWQgZHVy
aW5nIGNvZGUgZ2VuIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBhc20KKyMgICBjb252ZW50aW9u
cyBmb3IgQyBuYW1lIG1hbmdsaW5nIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0gbWFuZGF0ZSBhICJf
IgorIyAgIHByZWZpeC4KKyMKKyMgLSBBICJtYWNybyIgaXMgYSBsYW1iZGEgZXhwcmVzc2lvbiwg
d2hpY2ggbWF5IGJlIGVpdGhlciBhbm9ueW1vdXMgb3IKKyMgICBuYW1lZC4gQnV0IHRoaXMgaGFz
IGNhdmVhdHMuICJtYWNybyIgY2FuIHRha2UgemVybyBvciBtb3JlIGFyZ3VtZW50cywKKyMgICB3
aGljaCBtYXkgYmUgbWFjcm9zIG9yIGFueSB2YWxpZCBvcGVyYW5kcywgYnV0IGl0IGNhbiBvbmx5
IHJldHVybgorIyAgIGNvZGUuIEJ1dCB5b3UgY2FuIGRvIFR1cmluZy1jb21wbGV0ZSB0aGluZ3Mg
dmlhIGNvbnRpbnVhdGlvbiBwYXNzaW5nCisjICAgc3R5bGU6ICJtYWNybyBmb28gKGEsIGIpIGIo
YSkgZW5kIGZvbyhmb28sIGZvbykiLiBBY3R1YWxseSwgZG9uJ3QgZG8KKyMgICB0aGF0LCBzaW5j
ZSB5b3UnbGwganVzdCBjcmFzaCB0aGUgYXNzZW1ibGVyLgorIworIyAtIEFuICJpZiIgaXMgYSBj
b25kaXRpb25hbCBvbiBzZXR0aW5ncy4gQW55IGlkZW50aWZpZXIgc3VwcGxpZWQgaW4gdGhlCisj
ICAgcHJlZGljYXRlIG9mIGFuICJpZiIgaXMgYXNzdW1lZCB0byBiZSBhICNkZWZpbmUgdGhhdCBp
cyBhdmFpbGFibGUKKyMgICBkdXJpbmcgY29kZSBnZW4uIFNvIHlvdSBjYW4ndCB1c2UgImlmIiBm
b3IgY29tcHV0YXRpb24gaW4gYSBtYWNybywgYnV0CisjICAgeW91IGNhbiB1c2UgaXQgdG8gc2Vs
ZWN0IGRpZmZlcmVudCBwaWVjZXMgb2YgY29kZSBmb3IgZGlmZmVyZW50CisjICAgcGxhdGZvcm1z
LgorIworIyAtIEFyZ3VtZW50cyB0byBtYWNyb3MgZm9sbG93IGxleGljYWwgc2NvcGluZyByYXRo
ZXIgdGhhbiBkeW5hbWljIHNjb3BpbmcuCisjICAgQ29uc3QncyBhbHNvIGZvbGxvdyBsZXhpY2Fs
IHNjb3BpbmcgYW5kIG1heSBvdmVycmlkZSAoaGlkZSkgYXJndW1lbnRzCisjICAgb3Igb3RoZXIg
Y29uc3RzLiBBbGwgdmFyaWFibGVzIChhcmd1bWVudHMgYW5kIGNvbnN0YW50cykgY2FuIGJlIGJv
dW5kCisjICAgdG8gb3BlcmFuZHMuIEFkZGl0aW9uYWxseSwgYXJndW1lbnRzIChidXQgbm90IGNv
bnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gbWFjcm9zLgorCisKKyMgVGhlc2UgZGVjbGFy
YXRpb25zIG11c3QgbWF0Y2ggaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmguCitjb25zdCBDYWxs
RnJhbWVIZWFkZXJTaXplID0gNDgKK2NvbnN0IEFyZ3VtZW50Q291bnQgPSAtNDgKK2NvbnN0IENh
bGxlckZyYW1lID0gLTQwCitjb25zdCBDYWxsZWUgPSAtMzIKK2NvbnN0IFNjb3BlQ2hhaW4gPSAt
MjQKK2NvbnN0IFJldHVyblBDID0gLTE2Citjb25zdCBDb2RlQmxvY2sgPSAtOAorCisjIERlY2xh
cmUgc29tZSBhbGlhc2VzIGZvciB0aGUgcmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMg
PSB0NAorCisjIE9mZnNldHMgbmVlZGVkIGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVz
ZW50YXRpb24uCitpZiBCSUdfRU5ESUFOCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNv
bnN0IFBheWxvYWRPZmZzZXQgPSA0CitlbHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAg
IGNvbnN0IFBheWxvYWRPZmZzZXQgPSAwCitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBj
b25zdGFudHMuCitjb25zdCBJbnQzMlRhZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2Nv
bnN0IE51bGxUYWcgPSAtMworY29uc3QgVW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcg
PSAtNQorY29uc3QgRW1wdHlWYWx1ZVRhZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAt
NworY29uc3QgTG93ZXN0VGFnID0gRGVsZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMu
Citjb25zdCBTdHJpbmdUeXBlID0gNQorY29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBm
bGFncyBjb25zdGFudHMuCitjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3Qg
SW1wbGVtZW50c0hhc0luc3RhbmNlID0gMgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSA9IDgKKworIyBIZWFwIGFsbG9jYXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9i
amVjdFNpemVDbGFzc0luZGV4ID0gMQorCisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgor
Y29uc3QgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0
eXBlIGNvbnN0YW50cy4KK2NvbnN0IEdsb2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEK
K2NvbnN0IEZ1bmN0aW9uQ29kZSA9IDIKKworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0
YWcgd29yZCBvZiB0aGUgYXJndW1lbnQgY291bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJn
dW1lbnRDb3VudCArIFRhZ09mZnNldAorCisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmgu
Citjb25zdCBWZWN0b3JTaXplT2Zmc2V0ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0g
NAorCisjIFN0cmluZyBmbGFncy4KK2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisj
IFV0aWxpdGllcworbWFjcm8gY3Jhc2goKQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAg
ICBtb3ZlIDAsIHQwCisgICAgY2FsbCB0MAorZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24p
CisgICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAg
Y3Jhc2goKQorICAgIC5vazoKKyAgICBlbmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFk
ZHJlc3NBZnRlckNhbGwoZGVzdGluYXRpb25SZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAg
ICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBv
cCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAor
ZW5kCisKK21hY3JvIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lz
dGVyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAg
ZWxzaWYgWDg2CisgICAgICAgIHB1c2ggc291cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAg
IGVycm9yCisgICAgZW5kCitlbmQKKworbWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRw
IGFkdmFuY2UgKiA0LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFu
Y2gocGNPZmZzZXQpCisgICAgbG9hZGkgcGNPZmZzZXQsIHQwCisgICAgbHNoaWZ0aSAyLCB0MAor
ICAgIGFkZHAgdDAsIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEFmdGVy
Q2FsbCgpCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAg
IGptcCBbUENdCitlbmQKKworbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQorICAg
IGlmIEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQor
ICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzIsIDAKKyAgICAgICAgcG9rZSBhcmcxLCAx
CisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2Vu
ZAorCittYWNybyBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBD
KQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworbWFjcm8gdHJhY2VF
eGVjdXRpb24oKQorICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAgICAgIGNhbGxIZWxwZXIo
X2xsaW50X3RyYWNlKQorICAgIGVuZAorZW5kCisKKyMgQ2FsbCBhIGhlbHBlciBmb3IgY2FsbCBv
cGNvZGVzLgorbWFjcm8gY2FsbENhbGxIZWxwZXIoYWR2YW5jZSwgaGVscGVyLCBhY3Rpb24pCisg
ICAgYWRkcCBhZHZhbmNlICogNCwgUEMsIHQwCisgICAgc3RvcmVwIHQwLCBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUg
dDEsIGNmcgorICAgIGFjdGlvbih0MCkKK2VuZAorCittYWNybyBzbG93UGF0aEZvckNhbGwoYWR2
YW5jZSwgaGVscGVyKQorICAgIGNhbGxDYWxsSGVscGVyKAorICAgICAgICBhZHZhbmNlLAorICAg
ICAgICBoZWxwZXIsCisgICAgICAgIG1hY3JvIChjYWxsZWUpCisgICAgICAgICAgICBjYWxsIGNh
bGxlZQorICAgICAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgICAgICBlbmQpCitlbmQK
KworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVChpbmNyZW1lbnQsIGFjdGlvbikKKyAgICBpZiBKSVRf
RU5BQkxFRAorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICAgICAgYmFkZGlz
IGluY3JlbWVudCwgQ29kZUJsb2NrOjptX2V4ZWN1dGVDb3VudGVyW3QwXSwgLmRvbmUKKyAgICAg
ICAgYWN0aW9uKCkKKyAgICAuZG9uZToKKyAgICBlbmQKK2VuZAorCittYWNybyBjaGVja1N3aXRj
aFRvSklURm9yUHJvbG9ndWUoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDUsCisg
ICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBjQ2FsbDIoX2xsaW50X2VudHJ5X29zciwgY2Zy
LCBQQykKKyAgICAgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAgICAgICAgam1wIHQwCisgICAg
ICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgY2hl
Y2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMSwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAg
IGNDYWxsMihfbGxpbnRfbG9vcF9vc3IsIGNmciwgUEMpCisgICAgICAgICAgICBtb3ZlIHQxLCBj
ZnIKKyAgICAgICAgICAgIGptcCB0MAorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tT
d2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAx
MCwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlcGxh
Y2UpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBhc3NlcnROb3RDb25zdGFudChpbmRleCkK
KyAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWIgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4LCBvayBlbmQpCitlbmQKKworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRp
ZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENv
bnN0YW50T3JWYXJpYWJsZShpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpYWVxIGluZGV4LCBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0
W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgs
IDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3Rl
cnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlz
IGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBl
cXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBs
b2FkcCBUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkcCBQYXlsb2Fk
T2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRl
eCBhbmQgcGF5bG9hZCBtYXkgYmUgdGhlIHNhbWUgcmVnaXN0ZXIuCittYWNybyBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpYWVxIGluZGV4LCBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0
W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgs
IDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHRhZworICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyAr
IFZlY3RvckJ1ZmZlck9mZnNldFt0YWddLCB0YWcKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2
aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFs
dWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsc2hpZnRpIDMsIGlu
ZGV4CisgICAgYWRkcCBpbmRleCwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFt0YWddLCBw
YXlsb2FkCisgICAgbG9hZHAgVGFnT2Zmc2V0W3RhZ10sIHRhZworLmRvbmU6CitlbmQKKworbWFj
cm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBwYXls
b2FkLCBzbG93KQorICAgIGJpYWVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwg
LmNvbnN0YW50CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBleHBlY3RlZFRh
Zywgc2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQK
KyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5
bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1
ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZp
bCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1
ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGJpbmVxIFRhZ09mZnNl
dFtwYXlsb2FkLCBpbmRleCwgOF0sIGV4cGVjdGVkVGFnLCBzbG93CisgICAgbG9hZHAgUGF5bG9h
ZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKK21hY3Jv
IHdyaXRlQmFycmllcih0YWcsIHBheWxvYWQpCisgICAgIyBOb3RoaW5nIHRvIGRvIHNpbmNlIHdl
IGRvbid0IGhhdmUgYSBnZW5lcmF0aW9uYWwgb3IgaW5jcmVtZW50YWwgY29sbGVjdG9yLgorZW5k
CisKKyMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIKKworIyBEbyB0aGUgYmFyZSBt
aW5pbXVtIHJlcXVpcmVkIHRvIGV4ZWN1dGUgY29kZS4gU2V0cyB1cCB0aGUgUEMsIGxlYXZlIHRo
ZSBDb2RlQmxvY2sqCisjIGluIHQxCittYWNybyBwcm9sb2d1ZShvZmZzZXRPZkNvZGVCbG9jaykK
KyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpCisgICAgCisgICAgIyBTZXQg
dXAgdGhlIGNhbGwgZnJhbWUuCisgICAgc3RvcmVwIHQyLCBSZXR1cm5QQ1tjZnJdCisgICAgbG9h
ZHAgQ2FsbGVlW2Nmcl0sIHQxCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3Qx
XSwgdDEKKyAgICBsb2FkcCBvZmZzZXRPZkNvZGVCbG9ja1t0MV0sIHQxCisgICAgc3RvcmVwIHQx
LCBDb2RlQmxvY2tbY2ZyXQorICAgIAorICAgICMgU2V0IHVwIHRoZSBQQy4KKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBWZWN0b3JCdWZmZXJP
ZmZzZXRbdDBdLCBQQworZW5kCisKK21hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oKQorICAg
ICMgUHJvZmlsZSB0aGUgYXJndW1lbnRzLiBVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIGNob2lj
ZSBidXQgdG8gZG8gdGhpcy4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0
MV0sIHQwCisgICAgYnRpeiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKKyAgICBsc2hpZnRpIDMs
IHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFt0MV0sIHQzCisuYXJndW1lbnRQcm9maWxlTG9vcDoKKyAgICBsb2FkaSBU
YWdPZmZzZXRbY2ZyLCB0MF0sIHQyCisgICAgc3RvcmVpIHQyLCBWYWx1ZVByb2ZpbGU6Om1fYnVj
a2V0cyArIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDBdLCB0
MgorICAgIHN0b3JlaSB0MiwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0
W3QzXQorICAgIGFkZHAgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDMKKyAgICBic3ViaW56IDgsIHQw
LCAuYXJndW1lbnRQcm9maWxlTG9vcAorLmFyZ3VtZW50UHJvZmlsZURvbmU6CisgICAgCisgICAg
IyBDaGVjayBzdGFjayBoZWlnaHQuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJl
Z2lzdGVyc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0
MgorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MgorICAgIGxzaGlm
dGkgMywgdDAKKyAgICBhZGRwIHQwLCBjZnIsIHQwCisgICAgYnBhZXEgSW50ZXJwcmV0ZXI6Om1f
cmVnaXN0ZXJGaWxlICsgUmVnaXN0ZXJGaWxlOjptX2VuZFt0Ml0sIHQwLCAuc3RhY2tIZWlnaHRP
SworCisgICAgIyBTdGFjayBoZWlnaHQgY2hlY2sgZmFpbGVkIC0gbmVlZCB0byBjYWxsIGEgaGVs
cGVyLgorICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlZ2lzdGVyX2ZpbGVfY2hlY2spCisuc3RhY2tI
ZWlnaHRPSzoKK2VuZAorCittYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBoZWxw
ZXIpCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwgdDAKKyAg
ICBiaWVxIHQwLCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJlbAorICAg
IGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGptcCBkb25lTGFiZWwKK2VuZAorCitfbGxpbnRfcHJv
Z3JhbV9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShQcm9ncmFtRXhlY3V0YWJsZTo6bV9wcm9ncmFt
Q29kZUJsb2NrKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JQcm9sb2d1ZSgpCisgICAgZGlzcGF0
Y2goMCkKKworCitfbGxpbnRfZXZhbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShFdmFsRXhlY3V0
YWJsZTo6bV9ldmFsQ29kZUJsb2NrKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JQcm9sb2d1ZSgp
CisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWU6
CisgICAgcHJvbG9ndWUoRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGwpCisu
ZnVuY3Rpb25Gb3JDYWxsQmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigpCisgICAg
Y2hlY2tTd2l0Y2hUb0pJVEZvclByb2xvZ3VlKCkKKyAgICBkaXNwYXRjaCgwKQorICAgIAorCitf
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShGdW5j
dGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ29uc3RydWN0KQorLmZ1bmN0aW9uRm9yQ29u
c3RydWN0QmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigpCisgICAgY2hlY2tTd2l0
Y2hUb0pJVEZvclByb2xvZ3VlKCkKKyAgICBkaXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUoRnVuY3Rpb25FeGVjdXRh
YmxlOjptX2NvZGVCbG9ja0ZvckNhbGwpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlv
bkZvckNhbGxCZWdpbiwgX2xsaW50X2hlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCisKKworX2xsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUoRnVuY3Rp
b25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGwpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNr
KC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfbGxpbnRfaGVscGVyX2NvbnN0cnVjdF9hcml0
eUNoZWNrKQorCisjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9ucworCitfbGxpbnRfb3BfZW50
ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0Mgor
ICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1WYXJzLCB0MgorICAgIGJ0aXogdDIsIC5vcEVudGVy
RG9uZQorICAgIG1vdmUgVW5kZWZpbmVkVGFnLCB0MAorICAgIG1vdmUgMCwgdDEKKy5vcEVudGVy
TG9vcDoKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0Miwg
OF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBidGlueiB0
MiwgLm9wRW50ZXJMb29wCisub3BFbnRlckRvbmU6CisgICAgZGlzcGF0Y2goMSkKKworCitfbGxp
bnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRh
ZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
Y3JlYXRlX2FjdGl2YXRpb24pCisub3BDcmVhdGVBY3RpdmF0aW9uRG9uZToKKyAgICBkaXNwYXRj
aCgyKQorCisKK19sbGludF9vcF9pbml0X2xhenlfcmVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jcmVhdGVfYXJndW1lbnRzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKKy5vcENyZWF0ZUFyZ3VtZW50
c0RvbmU6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qo
c2l6ZUNsYXNzSW5kZXgsIGNsYXNzSW5mb09mZnNldCwgb2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2Us
IHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNsb3dDYXNlKQorICAgIGNv
bnN0IG9mZnNldE9mTXlTaXplQ2xhc3MgPSBKU0dsb2JhbERhdGE6OmhlYXAgKyBIZWFwOjptX29i
amVjdFNwYWNlICsgQWxsb2NhdGlvblNwYWNlOjptX21hcmtlZFNwYWNlICsgTWFya2VkU3BhY2U6
Om1fcHJlY2lzZVNpemVDbGFzc2VzICsgc2l6ZUNsYXNzSW5kZXggKiBzaXplb2YgTWFya2VkU3Bh
Y2U6OlNpemVDbGFzcworICAgIAorICAgICMgRklYTUU6IHdlIGNhbiBnZXQgdGhlIGdsb2JhbCBk
YXRhIGluIG9uZSBsb2FkIGZyb20gdGhlIHN0YWNrLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCBzY3JhdGNoMQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwg
c2NyYXRjaDEKKyAgICAKKyAgICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4g
ICAgCisgICAgbG9hZHAgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xh
c3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKKyAgICBidHB6IHJlc3VsdCwgc2xv
d0Nhc2UKKyAgICAKKyAgICAjIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4K
KyAgICBsb2FkcCBbcmVzdWx0XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDEsIG9mZnNl
dE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3Nj
cmF0Y2gxXQorCisgICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgbG9hZHAgY2xhc3NJ
bmZvT2Zmc2V0W3NjcmF0Y2gxXSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1
bHRdCisgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCisg
ICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0KKyAgICBhZGRwIHNp
emVvZiBKU09iamVjdCwgcmVzdWx0LCBzY3JhdGNoMQorICAgIHN0b3JlcCBzY3JhdGNoMSwgb2Zm
c2V0T2ZQcm9wZXJ0eVN0b3JhZ2VbcmVzdWx0XQorZW5kCisKK19sbGludF9vcF9jcmVhdGVfdGhp
czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgYXNzZXJ0
Tm90Q29uc3RhbnQodDApCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFn
LCAub3BDcmVhdGVUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYmJiIFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBPYmplY3RUeXBlLCAub3BD
cmVhdGVUaGlzU2xvdworICAgIGxvYWRwIEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3QwXSwgdDIK
KyAgICBidHB6IHQyLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGFsbG9jYXRlQmFzaWNKU09iamVj
dChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVj
dENsYXNzSW5mbywgSlNGaW5hbE9iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2UsIHQyLCB0MCwgdDEs
IHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkg
Q2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wQ3JlYXRlVGhpc1Nsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV90aGlzKQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRPZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEK
KyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRf
b3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRU
aGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Ns
b3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAK
KyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQx
CisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwg
SlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCBKU0ZpbmFsT2JqZWN0OjptX3By
b3BlcnR5U3RvcmFnZSwgdDEsIHQwLCB0MiwgdDMsIC5vcE5ld09iamVjdFNsb3cpCisgICAgbG9h
ZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQor
ICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDIp
CisKKy5vcE5ld09iamVjdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19v
YmplY3QpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X2FycmF5OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2FycmF5KQor
ICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19hcnJheV9idWZmZXI6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXlfYnVm
ZmVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19yZWdleHA6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfcmVnZXhwKQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX21vdjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3Bfbm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBhc3NlcnROb3RDb25zdGFu
dCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDMKKyAgICBiaW5lcSB0MiwgQm9vbGVhblRhZywgLm9w
Tm90U2xvdworICAgIHhvcmkgMSwgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQx
LCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3Bh
dGNoKDMpCisKKy5vcE5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25vdCkK
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MiwgdDMsIC5vcEVxU2xvdworICAgIGJpZXEg
dDIsIENlbGxUYWcsIC5vcEVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cK
KyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaWVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9v
bGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wRXFTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9lcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9l
cV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQx
CisgICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0ZQorLm9wRXFOdWxsSW1tZWRpYXRlOgorICAg
IGNpZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2llcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAg
IG9yaSB0MiwgdDEKKy5vcEVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRh
ZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVxOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGFzc2VydE5vdENvbnN0
YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQyLCB0MywgLm9wTmVxU2xv
dworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcE5lcVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRh
ZywgLm9wTmVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpbmVxIHQwLCB0MSwgdDAK
KyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wTmVx
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmVxKQorICAgIGRpc3BhdGNoKDQp
CisgICAgCisKK19sbGludF9vcF9uZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3Rh
bnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcE5l
cU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAg
ICB0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkLCB0MQorICAgIGptcCAub3BOZXFOdWxsTm90SW1tZWRpYXRlCisu
b3BOZXFOdWxsSW1tZWRpYXRlOgorICAgIGNpbmVxIHQxLCBOdWxsVGFnLCB0MgorICAgIGNpbmVx
IHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgYW5kaSB0MiwgdDEKKy5vcE5lcU51bGxOb3RJbW1l
ZGlhdGU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAg
IHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisK
KworbWFjcm8gc3RyaWN0RXEoZXF1YWxpdHlPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAx
MltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MiwgdDMsIHQxKQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MAorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLnNs
b3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmluZworICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0
MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJd
LCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cKKy5ub3RTdHJpbmc6Cisg
ICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkKKyAg
ICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6Cisg
ICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRfb3Bf
c3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0
LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVs
cGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0
LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9uc3RyaWN0ZXEpCisKKworX2xsaW50
X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xlc3NlcToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3NlcSkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcikKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlSW5j
U2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYmFkZGlv
IDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5jU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9w
cmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVEZWNTbG93CisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBic3ViaW8gMSwgdDEsIC5v
cFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Bvc3RfaW5jOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0
SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBiYWRkaW8gMSwg
dDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNEb25lOgorICAgIGRp
c3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9wb3N0X2RlYzoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10s
IHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdERl
Y1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYnN1YmlvIDEsIHQz
LCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVp
IHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0RGVjRG9uZToKKyAgICBkaXNw
YXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdG9fanNudW1iZXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENd
LCB0MQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MworICAg
IGJpZXEgdDIsIEludDMyVGFnLCAub3BUb0pzbnVtYmVySXNJbnQKKyAgICBiaWFlcSB0MiwgRW1w
dHlWYWx1ZVRhZywgLm9wVG9Kc251bWJlclNsb3cKKy5vcFRvSnNudW1iZXJJc0ludDoKKyAgICBz
dG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvSnNudW1iZXJTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19qc251bWJlcikKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9uZWdhdGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQw
KQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRl
U3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdworICAgIG5l
Z2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0
b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisub3BO
ZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKKyAg
ICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0Mywg
OF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRj
aCgzKQorCisub3BOZWdhdGVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZWdh
dGUpCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKGludGVn
ZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkg
MTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDIsIHQzLCB0MSkKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDAKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0Mywg
SW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBpbnRlZ2VyT3Bl
cmF0aW9uQW5kU3RvcmUodDMsIHQxLCB0MCwgLnNsb3csIHQyKQorICAgIGRpc3BhdGNoKDQpCisK
Ky5vcDFOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90IGFuIGlu
dCwgdGhlIHNlY29uZCBvcGVyYW5kIGNvdWxkIGJlIGFueXRoaW5nLgorICAgIGJpYSB0MiwgTG93
ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MywgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91Ymxl
CisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDEsIGZ0MQorICAgIGpt
cCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDEsIHQz
LCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBmaWkyZCB0
MCwgdDIsIGZ0MAorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQw
LCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3AyTm90SW50OgorICAgICMgRmly
c3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGlzIGRl
ZmluaXRlbHkgbm90LgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGJpYSB0MywgTG93ZXN0VGFn
LCAuc2xvdworICAgIGNpMmQgdDAsIGZ0MAorICAgIGZpaTJkIHQxLCB0MywgZnQxCisgICAgZG91
YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQyLCA4XQorICAg
IGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3Bh
dGNoKDQpCitlbmQKKworbWFjcm8gYmluYXJ5T3AoaW50ZWdlck9wZXJhdGlvbiwgZG91YmxlT3Bl
cmF0aW9uLCBoZWxwZXIpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8g
KGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBpbnRlZ2Vy
T3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFn
LCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5
bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIGRvdWJsZU9w
ZXJhdGlvbiwgaGVscGVyKQorZW5kCisKK19sbGludF9vcF9hZGQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJh
ZGRpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkg
YWRkZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYWRkKQorCisKK19s
bGludF9vcF9tdWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJtdWxpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQs
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfbXVsKQorCisKK19sbGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cp
IGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfc3ViKQorCisK
K19sbGludF9vcF9kaXY6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9t
U3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4
KQorICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0
MQorICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdo
dCwgLm5vdEludAorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBp
bmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGlu
ZGV4LCA4XQorICAgICAgICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6CisgICAgICAg
ICAgICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6CisgICAgICAg
IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwK
KyAgICAgICAgX2xsaW50X2hlbHBlcl9kaXYpCisKKworX2xsaW50X29wX21vZDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkKKyAgICBkaXNw
YXRjaCg0KQorCisKK21hY3JvIGJpdE9wKG9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEy
W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQyLCB0MywgdDEpCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQwCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBJbnQzMlRh
ZywgLnNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xv
dykKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwg
UGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAg
IGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50X29wX2xz
aGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfbHNoaWZ0KQorCisKK19sbGludF9vcF9yc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlm
dGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3JzaGlmdCkKKworCitf
bGxpbnRfb3BfdXJzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQs
IHJpZ2h0CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAgIGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl91cnNoaWZ0KQorCisKK19sbGludF9vcF9iaXRhbmQ6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHNsb3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdGFu
ZCkKKworCitfbGxpbnRfb3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRP
cCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQsIHJpZ2h0IGVu
ZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXR4b3IpCisKKworX2xsaW50X29wX2JpdG9yOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2Jp
dG9yKQorCisKK19sbGludF9vcF9iaXRub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50
KHQxKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wQml0
bm90U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4
XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNo
KDMpCisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2JpdG5v
dCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFzc2VydE5vdENv
bnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9w
Q2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFz
SW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgZGlzcGF0Y2goMikKKworLm9w
Q2hlY2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NoZWNr
X2hhc19pbnN0YW5jZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbnN0YW5jZW9m
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIENoZWNrIHRoYXQgYmFzZVZhbCBpbXBsZW1l
bnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9yLgorICAgICMgRklYTUU6IFRoaXMg
c2hvdWxkIGJlIGRlcHJlY2F0ZWQuCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGFzc2VydE5v
dENvbnN0YW50KHQwKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFz
SW5zdGFuY2UsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgCisgICAgIyBBY3R1YWxseSBkbyB0aGUg
d29yay4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9h
ZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYXNzZXJ0Tm90Q29u
c3RhbnQodDEpCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BJ
bnN0YW5jZW9mU2xvdworICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgQ2VsbFRhZywg
Lm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0
MQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGJiYiBTdHJ1Y3R1
cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5z
dGFuY2VvZlNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAg
IAorICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCisgICAg
bW92ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxvb3A6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0Ml0sIHQyCisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRP
ZmZzZXQsIHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRpbnog
dDIsIC5vcEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9mRG9u
ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9w
SW5zdGFuY2VvZlNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luc3RhbmNlb2Yp
CisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9pc19udW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9pc19udW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRf
b3BfaXNfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX29i
amVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2lzX29iamVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19mdW5jdGlvbjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Z1
bmN0aW9uKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2luOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfcmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcmVzb2x2ZV9za2lwKQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8g
cmVzb2x2ZUdsb2JhbChzbG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAg
IyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgUHJvcGVy
dHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAjIDEyW1BDXSAgU3Ry
dWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgor
ICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBi
eSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnBuZXEgdDAsIDEyW1BDXSwgc2xvdworICAgIGxv
YWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBd
LCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkg
dDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XQorZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgcmVzb2x2ZUdsb2JhbCgub3BSZXNvbHZlR2xvYmFsU2xvdykKKyAgICBk
aXNwYXRjaCg1KQorCisub3BSZXNvbHZlR2xvYmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCisgICAgZGlzcGF0Y2goNSkKKworCisjIEdpdmVzIHlv
dSB0aGUgc2NvcGUgaW4gdDAsIHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25hbGx5IHBlcmZv
cm0gYWRkaXRpb25hbCBjaGVja3Mgb24gdGhlCisjIHNjb3BlcyBhcyB0aGV5IGFyZSB0cmF2ZXJz
ZWQuIHNjb3BlQ2hlY2soKSBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgcmVnaXN0
ZXIKKyMgaG9sZGluZyB0aGUgc2NvcGUsIGFuZCBhIHJlZ2lzdGVyIHRoYXQgY2FuIGJlIHVzZWQg
Zm9yIHNjcmF0Y2guIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90CisjIHVzZSB0Mywgc28geW91IGNh
biBob2xkIHN0dWZmIGluIHQzIGlmIG5lZWQgYmUuCittYWNybyBnZXRTY29wZShkZUJydWlqaW5J
bmRleE9wZXJhbmQsIHNjb3BlQ2hlY2spCisgICAgbG9hZHAgU2NvcGVDaGFpbiArIFBheWxvYWRP
ZmZzZXRbY2ZyXSwgdDAKKyAgICBsb2FkaSBkZUJydWlqaW5JbmRleE9wZXJhbmQsIHQyCisgICAg
CisgICAgYnRpeiB0MiwgLmRvbmUKKyAgICAKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEK
KyAgICBiaW5lcSBDb2RlQmxvY2s6Om1fY29kZVR5cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5sb29w
CisgICAgYnRieiBDb2RlQmxvY2s6Om1fbmVlZHNGdWxsU2NvcGVDaGFpblt0MV0sIC5sb29wCisg
ICAgCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX2FjdGl2YXRpb25SZWdpc3Rlclt0MV0sIHQxCisK
KyAgICAjIE5lZWQgdG8gY29uZGl0aW9uYWxseSBza2lwIG92ZXIgb25lIHNjb3BlLgorICAgIGJp
ZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAubm9BY3RpdmF0aW9uCisg
ICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBd
LCB0MAorLm5vQWN0aXZhdGlvbjoKKyAgICBzdWJpIDEsIHQyCisgICAgCisgICAgYnRpeiB0Miwg
LmRvbmUKKy5sb29wOgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hh
aW5Ob2RlOjpuZXh0W3QwXSwgdDAKKyAgICBzdWJpIDEsIHQyCisgICAgYnRpbnogdDIsIC5sb29w
CisKKy5kb25lOgorZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3Nw
XSwgdDMKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmFjdGl2YXRpb25TdHJ1Y3R1cmVbdDNdLCB0
MworICAgIGdldFNjb3BlKAorICAgICAgICAyMFtQQ10sCisgICAgICAgIG1hY3JvIChzY29wZSwg
c2NyYXRjaCkKKyAgICAgICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3Rbc2NvcGVd
LCBzY3JhdGNoCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3NjcmF0Y2hd
LCB0MywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3cKKyAgICAgICAgZW5kKQorICAg
IHJlc29sdmVHbG9iYWwoLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93KQorICAgIGRpc3BhdGNo
KDYpCisKKy5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9yZXNvbHZlKQorICAgIGRpc3BhdGNoKDYpCisKKy5vcFJlc29sdmVHbG9i
YWxEeW5hbWljU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9nbG9i
YWwpCisgICAgZGlzcGF0Y2goNikKKworCitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0
W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgSW5kZXggb2Yg
cmVnaXN0ZXIgaW4gdGhlIHNjb3BlLgorICAgICMgMTJbUENdICBEZSBCcnVpamluIGluZGV4Lgor
ICAgIGdldFNjb3BlKDEyW1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9h
ZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZHAgU2NvcGVDaGFpbk5v
ZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3Rl
cnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBnZXRTY29wZSg4W1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQp
CisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDEsIHQzLCB0MikKKyAgICB3cml0ZUJhcnJpZXIodDMsIHQyKQorICAg
IGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFi
bGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFt0
MCwgdDIsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVj
dFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAK
KyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W3QwLCB0MSwgOF0sIHQxCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0K
KyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQw
CisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2Fk
aSBUYWdPZmZzZXRbY2ZyLCB0MywgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XSwgdDMKKyAgICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFn
T2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4
XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfYmFzZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfYmFzZSkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZW5zdXJl
X3Byb3BlcnR5X2V4aXN0cykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZl
X3dpdGhfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X3Jlc29sdmVfd2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIG9ubHkg
ZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBt
b2RpZnkgdGhlCisgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNh
Y2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorICAgICMgcGluZy1wb25naW5n
IGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29u
dGludWUKKyAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0
IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJl
ZW4gZG9pbmcgYW55d2F5LgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwg
dDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5v
cEdldEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6
bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSBU
YWdPZmZzZXRbdDAsIHQyXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQy
CisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg4KQorCisub3BHZXRCeUlkU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X2lkKQorICAgIGRpc3BhdGNo
KDgpCisKKworX2xsaW50X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5l
cSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50c0xl
bmd0aFNsb3cKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0
MgorICAgIHN1YmkgMSwgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQx
LCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3Bh
dGNoKDQpCisKKy5vcEdldEFyZ3VtZW50c0xlbmd0aFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX3B1dF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQzCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZHAgSlNP
YmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBicG5lcSBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgbG9hZGkgMjBbUENdLCB0MQorICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQyLCA4XSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDIsIDhdLCB0MgorICAgIHdyaXRlQmFycmllcih0MCwgdDIpCisgICAgc3RvcmVpIHQw
LCBUYWdPZmZzZXRbdDMsIHQxXQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MywgdDFd
CisgICAgZGlzcGF0Y2goOCkKKworLm9wUHV0QnlJZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3B1dF9ieV9pZCkKKyAgICBkaXNwYXRjaCg4KQorCisKK21hY3JvIHB1dEJ5SWRU
cmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAg
IGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBh
ZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENd
LCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAg
YWRkcCB0MSwgdDMKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQy
KQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIDI0W1BDXSwgdDEKKyAg
ICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXQorICAgIGRpc3BhdGNoKDgpCitlbmQKKworX2xsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihtYWNybyAob2xkU3Ry
dWN0dXJlLCBzY3JhdGNoLCBzbG93KSBlbmQpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbDoKKyAgICBwdXRCeUlkVHJhbnNpdGlvbigKKyAgICAgICAgbWFjcm8gKG9s
ZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykKKyAgICAgICAgICAgIGNvbnN0IHByb3RvQ2VsbCA9
IG9sZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0
aGUgcHJvdG8KKyAgICAgICAgCisgICAgICAgICAgICBsb2FkcCAyOFtQQ10sIHNjcmF0Y2gKKyAg
ICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvciArIFZlY3RvckJ1ZmZlck9m
ZnNldFtzY3JhdGNoXSwgc2NyYXRjaAorICAgICAgICAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJv
dG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25lCisgICAgICAg
IC5sb29wOgorICAgICAgICAgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxv
YWRPZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAgICAgICAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQorICAgICAgICAgICAgYnBu
ZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIHNsb3cKKyAgICAgICAgICAgIGFkZHAgNCwgc2Ny
YXRjaAorICAgICAgICAgICAgYmluZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNl
dFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAubG9vcAorICAgICAgICAuZG9uZToKKyAgICAgICAg
ZW5kKQorCisKK19sbGludF9vcF9kZWxfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWxfYnlfaWQpCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZGkgMTJbUENd
LCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDEKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xv
dykKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDFdLCB0MgorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5
VmFsU2xvdykKKyAgICBicG5lcSBbdDBdLCB0MiwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZHAg
SlNBcnJheTo6bV9zdG9yYWdlW3QwXSwgdDMKKyAgICBiaWFlcSB0MSwgSlNBcnJheTo6bV92ZWN0
b3JMZW5ndGhbdDBdLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBs
b2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisg
ICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4
XSwgdDEKKyAgICBiaWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRCeVZhbFNsb3cKKyAgICBz
dG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEJ5VmFsU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgYmllcSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEludDMyVGFnLCB0MiwgLm9w
R2V0QXJndW1lbnRCeVZhbFNsb3cpCisgICAgYWRkaSAxLCB0MgorICAgIGxvYWRpIEFyZ3VtZW50
Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisgICAgYmlhZXEgdDIsIHQxLCAub3BHZXRB
cmd1bWVudEJ5VmFsU2xvdworICAgIG5lZ2kgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBs
b2FkaSBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQyLCA4XSwgdDEKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAg
IHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDQpCisK
Ky5vcEdldEFyZ3VtZW50QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9n
ZXRfYXJndW1lbnRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9i
eV9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wR2V0QnlQ
bmFtZVNsb3cpCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGJwbmVxIHQxLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wR2V0
QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQw
CisgICAgYnBuZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJl
W3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSAyNFtQQ10sIHQwCisgICAgbG9hZGkg
W2NmciwgdDAsIDhdLCB0MAorICAgIHN1YmkgMSwgdDAKKyAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFibGVTbG90c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93
CisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QyXSwgdDIKKyAgICBsb2Fk
aSBUYWdPZmZzZXRbdDIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0
MCwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBkaXNwYXRjaCg3KQorCisub3BHZXRCeVBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfZ2V0X2J5X3BuYW1lKQorICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX3B1
dF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlW
YWxTbG93KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQwLCBJbnQzMlRhZywgdDIsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MF0sIHQw
CisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QwXSwgdDAKKyAgICBi
cG5lcSBbdDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93CisgICAgYmlhZXEgdDIsIEpTQXJyYXk6Om1f
dmVjdG9yTGVuZ3RoW3QxXSwgLm9wUHV0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9z
dG9yYWdlW3QxXSwgdDAKKyAgICBiaWVxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZz
ZXRbdDAsIHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wUHV0QnlWYWxFbXB0eQorLm9wUHV0QnlW
YWxTdG9yZVJlc3VsdDoKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3Rh
bnQodDMpCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDMsIDhdLCB0MQorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MykKKyAg
ICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4
XQorICAgIHN0b3JlaSB0MywgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRb
dDAsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcFB1dEJ5VmFsRW1wdHk6CisgICAgYWRk
aSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCisgICAgYmliIHQyLCBB
cnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorICAgIGFk
ZGkgMSwgdDIsIHQxCisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXQor
ICAgIGptcCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisKKy5vcFB1dEJ5VmFsU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9kZWxfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9wdXRfYnlfaW5kZXg6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9wdXRfYnlfaW5kZXgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfcHV0X2dldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3B1dF9nZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0
X3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3B1dF9zZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbG9vcDoKKyAg
ICBub3AKK19sbGludF9vcF9qbXA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRpc3BhdGNo
QnJhbmNoKDRbUENdKQorCisKK19sbGludF9vcF9qbXBfc2NvcGVzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfam1wX3Njb3BlcykKKyAgICBkaXNw
YXRjaCgwKQorCisKK21hY3JvIGp1bXBUcnVlT3JGYWxzZShjb25kaXRpb25PcCwgc2xvdykKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaWIgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBCb29sZWFu
VGFnLCAuc2xvdworICAgIGNvbmRpdGlvbk9wKFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIC50
YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4
W1BDXSkKKworLnNsb3c6CisgICAgc3ViaSAzICogNCwgUEMKKyAgICBjYWxsSGVscGVyKHNsb3cp
CisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl90cnVlOgorICAgIG5v
cAorX2xsaW50X29wX2p0cnVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9y
RmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGlueiB2YWx1ZSwgdGFyZ2V0
IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qdHJ1ZSkKKworCitfbGxpbnRfb3BfbG9vcF9p
Zl9mYWxzZToKKyAgICBub3AKK19sbGludF9vcF9qZmFsc2U6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0
aXogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamZhbHNlKQorCisK
K21hY3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2Fk
aSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywg
LmltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNl
bGxIYW5kbGVyKFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwg
LnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNo
KDhbUENdKQorCisuaW1tZWRpYXRlOgorICAgIG9yaSAxLCB0MQorICAgIGltbWVkaWF0ZUhhbmRs
ZXIodDEsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKK2VuZAorCitfbGxpbnRfb3BfamVxX251
bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8g
KHZhbHVlLCB0YXJnZXQpIGJ0Ym56IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJn
ZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmllcSB2YWx1ZSwgTnVsbFRh
ZywgdGFyZ2V0IGVuZCkKKyAgICAKKworX2xsaW50X29wX2puZXFfbnVsbDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkg
YnRieiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
bWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpbmVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQor
CisKK19sbGludF9vcF9qbmVxX3B0cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNoCisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCisub3BKbmVxUHRyQnJhbmNo
OgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKy5vcEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAg
ICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNv
bXBhcmUsIGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCwgdDEpCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWcodDMsIHQyLCB0MykKKyAgICBiaW5lcSB0MCwgSW50MzJUYWcsIC5vcDFO
b3RJbnQKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29t
cGFyZSh0MSwgdDMsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6
CisgICAgYmlhIHQwLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5v
cDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgY2ky
ZCB0MywgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToK
KyAgICBmaWkyZCB0MywgdDIsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGZpaTJkIHQxLCB0
MCwgZnQwCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlz
cGF0Y2goNCkKKworLm9wMk5vdEludDoKKyAgICBjaTJkIHQxLCBmdDAKKyAgICBiaWEgdDIsIExv
d2VzdFRhZywgLnNsb3cKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQorICAgIGRvdWJsZUNvbXBhcmUo
ZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5qdW1wVGFyZ2V0Ogor
ICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxw
ZXIpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzOgorICAg
IG5vcAorX2xsaW50X29wX2psZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJl
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHQgbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3MpCisKKwor
X2xsaW50X29wX2pubGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxl
ZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzcykKKwor
CitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVy
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXIpCisKKworX2xsaW50X29wX2puZ3JlYXRl
cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcXVuIGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcikKKworCitfbGxpbnRfb3Bf
bG9vcF9pZl9sZXNzZXE6CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3NlcToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJkbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9qbGVzc2VxKQorCisKK19sbGludF9vcF9qbmxlc3NlcToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0
YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiZGd0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfam5sZXNzZXEpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcmVx
OgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEg
bGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFy
Z2V0KSBiZGd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfamdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3Bfam5ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmRsdHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX2puZ3JlYXRlcmVxKQorCisKK19sbGludF9vcF9sb29wX2hpbnQ6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBkaXNwYXRj
aCgxKQorCisKK19sbGludF9vcF9zd2l0Y2hfaW1tOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSAxMltQQ10sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9h
ZGkgNFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrOjpS
YXJlRGF0YTo6bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0
W3QyLCB0MywgNF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAK
KyAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcFN3aXRjaEltbU5vdEludAorICAgIHN1YmkgU2lt
cGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6
OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRo
cm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaChTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMg
KyBWZWN0b3JCdWZmZXJPZmZzZXRbdDIsIHQwLCA0XSkKKworLm9wU3dpdGNoSW1tTm90SW50Ogor
ICAgIGJpYiB0MSwgTG93ZXN0VGFnLCAub3BTd2l0Y2hJbW1TbG93ICAjIEdvIHRvIHNsb3cgcGF0
aCBpZiBpdCdzIGEgZG91YmxlLgorLm9wU3dpdGNoSW1tRmFsbFRocm91Z2g6CisgICAgZGlzcGF0
Y2hCcmFuY2goOFtQQ10pCisKKy5vcFN3aXRjaEltbVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3N3aXRjaF9pbW0pCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3Bfc3dp
dGNoX2NoYXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2NoYXJhY3RlclN3
aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDIsIHQzLCA0XSwgdDIKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFn
LCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90
eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAg
SlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0MAorICAgIGJpbmVxIFN0cmluZ0ltcGw6Om1fbGVuZ3Ro
W3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU3RyaW5nSW1wbDo6
bV9kYXRhOFt0MF0sIHQxCisgICAgYnRpbnogU3RyaW5nSW1wbDo6bV9oYXNoQW5kRmxhZ3NbdDBd
LCBIYXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0Y2hDaGFyOEJpdAorICAgIGxvYWRoIFt0MV0s
IHQwCisgICAgam1wIC5vcFN3aXRjaENoYXJSZWFkeQorLm9wU3dpdGNoQ2hhcjhCaXQ6CisgICAg
bG9hZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENoYXJSZWFkeToKKyAgICBzdWJpIFNpbXBsZUp1bXBU
YWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hP
ZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAor
ICAgIGRpc3BhdGNoQnJhbmNoKFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFt0MiwgdDAsIDRdKQorCisub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2g6Cisg
ICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKworX2xsaW50X29wX3N3aXRjaF9zdHJpbmc6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hf
c3RyaW5nKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX25ld19mdW5jOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BOZXdGdW5jRG9uZQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuYykKKy5vcE5ld0Z1bmNEb25lOgorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX25ld19mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCgz
KQorCisKK21hY3JvIGRvQ2FsbChoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9h
ZGkgMTZbUENdLCB0MQorICAgIGxvYWRwIExMSW50Q2FsbExpbmtJbmZvOjpjYWxsZWVbdDFdLCB0
MgorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgQ2VsbFRhZywgLm9wQ2FsbFNsb3cKKyAgICBiaW5lcSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgYWRkcCAy
NCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5z
IHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWlu
W3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNdCisgICAg
c3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBsb2FkaSA4IC0g
MjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJd
CisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNdCisgICAgc3RvcmVpIHQyLCBBcmd1bWVu
dENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsg
VGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFnT2Zmc2V0
W3QzXQorICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQor
ICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JD
YWxsKDYsIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY2FsbCkKKworCitfbGxpbnRfb3BfY29uc3Ry
dWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBlcl9jb25z
dHJ1Y3QpCisKKworX2xsaW50X29wX2NhbGxfdmFyYXJnczoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIF9sbGludF9oZWxwZXJfY2FsbF92YXJhcmdzKQorCisK
K19sbGludF9vcF9jYWxsX2V2YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIAorICAgICMg
RXZhbCBpcyBleGVjdXRlZCBpbiBvbmUgb2YgdHdvIG1vZGVzOgorICAgICMKKyAgICAjIDEpIFdl
IGZpbmQgdGhhdCB3ZSdyZSByZWFsbHkgaW52b2tpbmcgZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhl
CisgICAgIyAgICBleGVjdXRpb24gaXMgcGVyZm9tZWQgZW50aXJlbHkgaW5zaWRlIHRoZSBoZWxw
ZXIsIGFuZCBpdAorICAgICMgICAgcmV0dXJucyB0aGUgUEMgb2YgYSBmdW5jdGlvbiB0aGF0IGp1
c3QgcmV0dXJucyB0aGUgcmV0dXJuIHZhbHVlCisgICAgIyAgICB0aGF0IHRoZSBldmFsIHJldHVy
bmVkLgorICAgICMKKyAgICAjIDIpIFdlIGZpbmQgdGhhdCB3ZSdyZSBpbnZva2luZyBzb21ldGhp
bmcgY2FsbGVkIGV2YWwoKSB0aGF0IGlzIG5vdAorICAgICMgICAgdGhlIHJlYWwgZXZhbC4gVGhl
biB0aGUgaGVscGVyIHJldHVybnMgdGhlIFBDIG9mIHRoZSB0aGluZyB0bworICAgICMgICAgY2Fs
bCwgYW5kIHdlIGNhbGwgaXQuCisgICAgIworICAgICMgVGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxl
IHR3byBjYXNlcywgd2hpY2ggd291bGQgcmVxdWlyZSBhIHRvdGFsIG9mCisgICAgIyB1cCB0byBm
b3VyIHBpZWNlcyBvZiBzdGF0ZSB0aGF0IGNhbm5vdCBiZSBlYXNpbHkgcGFja2VkIGludG8gdHdv
CisgICAgIyByZWdpc3RlcnMgKEMgZnVuY3Rpb25zIGNhbiByZXR1cm4gdXAgdG8gdHdvIHJlZ2lz
dGVycywgZWFzaWx5KToKKyAgICAjCisgICAgIyAtIFRoZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBU
aGlzIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBtb2RpZmllZAorICAgICMgICBieSB0aGUgaGVs
cGVyLCBidXQgdGhlIGNvbnZlbnRpb24gaXMgdGhhdCBpdCByZXR1cm5zIGl0LiBJdCdzIG5vdAor
ICAgICMgICB0b3RhbGx5IGNsZWFyIGlmIHRoYXQncyBuZWNlc3NhcnksIHNpbmNlIHRoZSBjZnIg
aXMgY2FsbGVlIHNhdmUuCisgICAgIyAgIEJ1dCB0aGF0J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVy
ZSBpbnRlcnByZXRlciBzbyB3ZSBzdGljayB3aXRoIGl0LgorICAgICMKKyAgICAjIC0gQSBiaXQg
dG8gc2F5IGlmIHRoZSBoZWxwZXIgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIHRoZSBldmFsIGFuZCBo
YXMKKyAgICAjICAgdGhlIHJldHVybiB2YWx1ZSwgb3IgZGlkIG5vdCBleGVjdXRlIHRoZSBldmFs
IGJ1dCBoYXMgYSBQQyBmb3IgdXMKKyAgICAjICAgdG8gY2FsbC4KKyAgICAjCisgICAgIyAtIEVp
dGhlcjoKKyAgICAjICAgLSBUaGUgSlMgcmV0dXJuIHZhbHVlICh0d28gcmVnaXN0ZXJzKSwgb3IK
KyAgICAjCisgICAgIyAgIC0gVGhlIFBDIHRvIGNhbGwuCisgICAgIworICAgICMgSXQgdHVybnMg
b3V0IHRvIGJlIGVhc2llciB0byBqdXN0IGFsd2F5cyBoYXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIK
KyAgICAjIGFuZCBhIFBDIHRvIGNhbGwsIGFuZCB0aGF0IFBDIG1heSBiZSBhIGR1bW15IHRodW5r
IHRoYXQganVzdAorICAgICMgcmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1
cm5lZC4KKyAgICAKKyAgICBzbG93UGF0aEZvckNhbGwoNCwgX2xsaW50X2hlbHBlcl9jYWxsX2V2
YWwpCisKKworX2xsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50OgorICAgIGRpc3BhdGNoQWZ0ZXJD
YWxsKCkKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmlu
ZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZh
dGlvbkNyZWF0ZWQKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRh
ZywgLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkCisub3BUZWFyT2ZmQWN0aXZhdGlvbkNy
ZWF0ZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24p
Cisub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfdGVhcl9vZmZfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBzdWJpIDEsIHQwICAgIyBHZXQgdGhlIHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcgorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVl
VGFnLCAub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZAorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCisub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRl
ZDoKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGRvUmV0dXJuKCkKKyAgICBsb2FkcCBSZXR1
cm5QQ1tjZnJdLCB0MgorICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgorICAgIHJlc3Rv
cmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAgIHJldAorZW5kCisKK19sbGludF9v
cF9yZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGls
b2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgZG9S
ZXR1cm4oKQorCisKK19sbGludF9vcF9jYWxsX3B1dF9yZXN1bHQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2Nmciwg
dDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlz
cGF0Y2goMikKKworCitfbGxpbnRfb3BfcmV0X29iamVjdF9vcl90aGlzOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BS
ZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0
Ml0sIE9iamVjdFR5cGUsIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAorICAgIGRvUmV0dXJu
KCkKKworLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0OgorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3BfbWV0aG9k
X2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIGlnbm9yZSBtZXRob2QgY2hl
Y2tzIGFuZCB1c2Ugbm9ybWFsIGdldF9ieV9pZCBvcHRpbWl6YXRpb25zLgorICAgIGRpc3BhdGNo
KDEpCisKKworX2xsaW50X29wX3N0cmNhdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3N0cmNhdCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF90b19wcmltaXRpdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVx
IHQxLCBDZWxsVGFnLCAub3BUb1ByaW1pdGl2ZUlzSW1tCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQyCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUlu
Zm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2UKKy5vcFRv
UHJpbWl0aXZlSXNJbW06CisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAg
ICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQor
Cisub3BUb1ByaW1pdGl2ZVNsb3dDYXNlOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90
b19wcmltaXRpdmUpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZ2V0X3BuYW1lczoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9w
bmFtZXMpCisgICAgZGlzcGF0Y2goMCkgIyBUaGUgaGVscGVyIGVpdGhlciBhZHZhbmNlcyB0aGUg
UEMgb3IganVtcHMgdXMgdG8gc29tZXdoZXJlIGVsc2UuCisKKworX2xsaW50X29wX25leHRfcG5h
bWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2Fk
aSAxNltQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSwgdDAKKyAg
ICBiaWVxIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCAub3BOZXh0UG5hbWVFbmQKKyAg
ICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwg
dDIKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2pzU3RyaW5nc1t0Ml0sIHQz
CisgICAgbG9hZGkgW3QzLCB0MCwgOF0sIHQzCisgICAgYWRkaSAxLCB0MAorICAgIHN0b3JlaSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0
b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDNdLCB0MQorICAgIGJwbmVxIHQxLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0
cnVjdHVyZVt0Ml0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yOjptX2NhY2hlZFByb3RvdHlwZUNoYWluW3QyXSwgdDAKKyAgICBsb2FkcCBTdHJ1Y3R1
cmVDaGFpbjo6bV92ZWN0b3JbdDBdLCB0MAorICAgIGJ0cHogW3QwXSwgLm9wTmV4dFBuYW1lVGFy
Z2V0Cisub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3A6CisgICAgYmllcSBTdHJ1Y3R1cmU6
Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W3QxXSwgTnVsbFRhZywgLm9wTmV4dFBuYW1lU2xvdwor
ICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QxXSwgdDIK
KyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDEKKyAgICBicG5lcSB0MSwgW3Qw
XSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGFkZHAgNCwgdDAKKyAgICBidHBueiBbdDBdLCAub3BO
ZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKKy5vcE5leHRQbmFtZVRhcmdldDoKKyAgICBkaXNw
YXRjaEJyYW5jaCgyNFtQQ10pCisKKy5vcE5leHRQbmFtZUVuZDoKKyAgICBkaXNwYXRjaCg3KQor
Cisub3BOZXh0UG5hbWVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXh0X3Bu
YW1lKSAjIFRoaXMgZWl0aGVyIGtlZXBzIHRoZSBQQyB3aGVyZSBpdCB3YXMgKGNhdXNpbmcgdXMg
dG8gbG9vcCkgb3Igc2V0cyBpdCB0byB0YXJnZXQuCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxp
bnRfb3BfcHVzaF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3B1c2hfc2NvcGUpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3Bf
cG9wX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfcG9wX3Njb3BlKQorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3B1c2hfbmV3
X3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcHVzaF9uZXdfc2NvcGUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfY2F0Y2g6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJv
bSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKKyAgICAjIG1hY2hpbmUg
Y29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQg
ZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGlu
dF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRoZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wgY2Fs
bHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0aHJvd2luZworICAgICMgY29kZSBtdXN0
IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93aW5nIHRvIHRoZSBpbnRlcnByZXRlciwgYW5k
IGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJv
dy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRh
W3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JU
aHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2Fk
T2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09m
ZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5
bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpl
eGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvdzoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rocm93KQorICAg
IGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93X3JlZmVyZW5jZV9lcnJvcjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rocm93X3JlZmVy
ZW5jZV9lcnJvcikKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9qc3I6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFkZGkgMyAqIDQsIFBDLCB0
MQorICAgIHN0b3JlaSB0MSwgW3QwXQorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19s
bGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgUEMK
KyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9kZWJ1ZzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlYnVnKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX3Byb2ZpbGVfd2lsbF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBidHB6IEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIC5v
cFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmls
ZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisK
KworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGJ0cHogSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgLm9wUHJv
ZmlsZURpZENhbGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlk
X2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxp
bnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9y
RXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAg
IGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZToKKyAg
ICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJv
bSBMTEludEhlbHBlcnMpLCBzbworICAgICMgdGhlIHRocm93IHRhcmdldCBpcyBub3QgbmVjZXNz
YXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0byBoZXJlLgorICAgICMgVGhpcyBlc3Nl
bnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCisgICAgbG9hZHAg
SklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRh
OjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0
TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworX2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1w
b2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRw
IEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0
YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdl
dE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKKyMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBj
YW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgorIyBUaGVz
ZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhlciBK
SVQuIFdlIGFzc2VydAorIyBhcyBtdWNoLgorCittYWNybyBub3RTdXBwb3J0ZWQoKQorICAgIGlm
IEFTU0VSVF9FTkFCTEVECisgICAgICAgIGNyYXNoKCkKKyAgICBlbHNlCisgICAgICAgICMgV2Ug
c2hvdWxkIHVzZSB3aGF0ZXZlciB0aGUgc21hbGxlc3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24gaXMs
IGp1c3QgdG8KKyAgICAgICAgIyBlbnN1cmUgdGhhdCB0aGVyZSBpcyBhIGdhcCBiZXR3ZWVuIGlu
c3RydWN0aW9uIGxhYmVscy4gSWYgbXVsdGlwbGUKKyAgICAgICAgIyBzbWFsbGVzdCBpbnN0cnVj
dGlvbnMgZXhpc3QsIHdlIHNob3VsZCBwaWNrIHRoZSBvbmUgdGhhdCBpcyBtb3N0CisgICAgICAg
ICMgbGlrZWx5IHJlc3VsdCBpbiBleGVjdXRpb24gYmVpbmcgaGFsdGVkLiBDdXJyZW50bHkgdGhh
dCBpcyB0aGUgYnJlYWsKKyAgICAgICAgIyBpbnN0cnVjdGlvbiBvbiBhbGwgYXJjaGl0ZWN0dXJl
cyB3ZSdyZSBpbnRlcmVzdGVkIGluLiAoQnJlYWsgaXMgaW50MworICAgICAgICAjIG9uIEludGVs
LCB3aGljaCBpcyAxIGJ5dGUsIGFuZCBia3B0IG9uIEFSTXY3LCB3aGljaCBpcyAyIGJ5dGVzLikK
KyAgICAgICAgYnJlYWsKKyAgICBlbmQKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0
aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2NoYWluOgorICAg
IG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX2NoYWluOgorICAg
IG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3Byb3RvOgorICAg
IG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3NlbGY6CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1
cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX2NoYWluOgorICAgIG5vdFN1
cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3Byb3RvOgorICAgIG5vdFN1
cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3NlbGY6CisgICAgbm90U3Vw
cG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQo
KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xs
aW50X29wX2dldF9zdHJpbmdfbGVuZ3RoOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9v
cF9wdXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0
X2J5X2lkX3JlcGxhY2U6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uOgorICAgIG5vdFN1cHBvcnRlZCgpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxM
SW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIK
KworI2luY2x1ZGUgIkxMSW50QXNzZW1ibHkuaCIKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisjZGVmaW5lIExv
d0xldmVsSW50ZXJwcmV0ZXJfaAorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKKyNkZWZpbmUgTExJ
TlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxlbmd0aCkgZXh0ZXJuICJDIiB2b2lkIGxsaW50
XyMjb3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKExMSU5UX0lOU1RSVUNUSU9OX0RF
Q0wpOworI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wKKworZXh0ZXJuICJDIiB2b2lkIGxs
aW50X3Byb2dyYW1fcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9ldmFsX3Byb2xv
Z3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUo
KTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3Vl
KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2so
KTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2No
ZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQoKTsKK2V4
dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lKCk7CitleHRl
cm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSgpOworCisjZW5k
aWYgLy8gTG93TGV2ZWxJbnRlcnByZXRlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9hcm12Ny5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MyBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVy
CisgIGRlZiBpbml0aWFsaXplKG5hbWUpCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAg
ZGVmIGFybVY3T3BlcmFuZAorICAgIEBuYW1lCisgIGVuZAorZW5kCisKK0FSTXY3X0RBVEFfUkVH
ID0gU3BlY2lhbFJlZ2lzdGVyLm5ldygiaXAiKQorQVJNdjdfQUREUl9SRUcgPSBTcGVjaWFsUmVn
aXN0ZXIubmV3KCJyMyIpCisKK2RlZiBtb3ZlSW1tZWRpYXRlKHZhbHVlLCByZWdpc3RlcikKKyAg
IyBDdXJyZW50bHkgd2Ugb25seSBoYW5kbGUgdGhlIHNpbXBsZSBjYXNlcywgYW5kIGZhbGwgYmFj
ayB0byBtb3YvbW92dCBmb3IgdGhlIGNvbXBsZXggb25lcy4KKyAgaWYgdmFsdWUgPj0gMCAmJiB2
YWx1ZSA8IDI1NgorICAgICRhc20ucHV0cyAibW92dyBcIyN7dmFsdWV9LCAje3JlZ2lzdGVyLmFy
bVY3T3BlcmFuZH0iCisgIGVsc2lmICh+dmFsdWUpID49IDAgJiYgKH52YWx1ZSkgPCAyNTYKKyAg
ICAkYXNtLnB1dHMgIm12bncgXCMje352YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIK
KyAgZWxzZQorICAgICRhc20ucHV0cyAibW92dyBcIyN7dmFsdWUgJiAweGZmZmZ9LCAje3JlZ2lz
dGVyLmFybVY3T3BlcmFuZH0iCisgICAgaWYgKHZhbHVlICYgMHhmZmZmMDAwMCkgIT0gMAorICAg
ICAgJGFzbS5wdXRzICJtb3Z0IFwjI3t2YWx1ZSA+PiAxNn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVy
YW5kfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgYXJt
VjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiCisgICAg
ICAicjAiCisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAgICAicjEiCisgICAgd2hlbiAi
dDIiLCAiYTIiCisgICAgICAicjIiCisgICAgd2hlbiAiYTMiCisgICAgICAicjMiCisgICAgd2hl
biAidDMiCisgICAgICAicjQiCisgICAgd2hlbiAidDQiCisgICAgICAicjciCisgICAgd2hlbiAi
Y2ZyIgorICAgICAgInI1IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAor
ICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisg
IGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQK
KyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZAorICBlbmQKK2VuZAorCitj
bGFzcyBGUFJlZ2lzdGVySUQKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAg
IHdoZW4gImZ0MCIsICJmciIKKyAgICAgICJkMCIKKyAgICB3aGVuICJmcjEiLAorICAgICAgImQx
IgorICAgIHdoZW4gImZyMiIKKyAgICAgICJkMiIKKyAgICB3aGVuICJmcjMiCisgICAgICAiZDMi
CisgICAgd2hlbiAiZnI0IgorICAgICAgImQ0IgorICAgIHdoZW4gImZyNSIKKyAgICAgICJkNSIK
KyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1By
ZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJs
ZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdM
b2FkU3RvcmVXcmFwCisgICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlh
dGUKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJJbnZhbGlkIGltbWVkaWF0ZSAje3Zh
bHVlfSIgaWYgdmFsdWUgPCAwIG9yIHZhbHVlID4gMjU1CisgICAgIiMke3ZhbHVlfSIKKyAgZW5k
CisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAK
KyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVu
ZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkIHNlbGYKKyAgZW5kCitl
bmQKKworbW9kdWxlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworICBkZWYgYXJtVjdMb2FkU3RvcmVX
cmFwCisgICAgc2VsZi5hcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICAkYXNt
LnB1dHMgIlx0bGRyICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFuZH0sICN7QVJNdjdf
REFUQV9SRUcuYXJtVjdPcGVyYW5kfSIKKyAgICB5aWVsZCBBUk12N19EQVRBX1JFRworICAgICRh
c20ucHV0cyAiXHRzdHIgI3tBUk12N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9LCAje3NlbGYuYXJt
VjdQb3NzaWJseU1lbW9yeU9wZXJhbmR9IgorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisg
IGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3Np
YmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIHx8IG9mZnNldC52
YWx1ZSA+IDB4ZmZmCisgICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1ZSwgQVJNdjdfQURE
Ul9SRUcpCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVy
YW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYK
KyAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVy
YW5kfV0iCisgICAgZWxzZQorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tvZmZzZXQu
YXJtVjdPcGVyYW5kfV0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAor
ICBpbmNsdWRlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworCisgIGRlZiBhcm1WN1ByZXBhcmVQb3Nz
aWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAgICAgbW92ZUlt
bWVkaWF0ZShvZmZzZXQudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICAgICAgJGFzbS5wdXRzICJh
ZGR3ICN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfSwgI3tiYXNlLmFybVY3T3BlcmFuZH0i
CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisg
ICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAgICJbI3tBUk12N19BRERSX1JFRy5hcm1WN09w
ZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGV9XSIKKyAgICBlbHNl
CisgICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxz
bCBcIyN7c2NhbGV9XSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRy
ZXNzCisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisgIAorICBkZWYgYXJtVjdQcmVw
YXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgbW92ZUltbWVkaWF0ZShhZGRyZXNzLnZhbHVl
LCBBUk12N19BRERSX1JFRykKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9w
ZXJhbmQKKyAgICAiWyN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfV0iCisgIGVuZAorZW5k
CisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw4MyBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18p
CisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNl
ciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitjbGFzcyBBc3Nl
bWJsZXIKKyAgZGVmIGluaXRpYWxpemUob3V0cCkKKyAgICBAb3V0cCA9IG91dHAKKyAgICBAc3Rh
dGUgPSA6Y3BwCisgIGVuZAorICAKKyAgZGVmIGVudGVyQXNtCisgICAgQG91dHAucHV0cyAiYXNt
ICgiCisgICAgQHN0YXRlID0gOmFzbQorICBlbmQKKyAgCisgIGRlZiBsZWF2ZUFzbQorICAgIEBv
dXRwLnB1dHMgIik7IgorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBkZWYgaW5Bc20K
KyAgICBlbnRlckFzbQorICAgIHlpZWxkCisgICAgbGVhdmVBc20KKyAgZW5kCisgIAorICBkZWYg
cHV0cyhsaW5lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnB1
dHMoKGxpbmUgKyAiXG4iKS5pbnNwZWN0KQorICBlbmQKKyAgCisgIGRlZiBjb21tZW50KHRleHQp
CisgICAgQG91dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgZW5kCitlbmQKKworJGFzbSA9IEFzc2Vt
Ymxlci5uZXcoJHN0ZG91dCkKKworYXNtRmlsZSA9IEFSR1Yuc2hpZnQKK29mZnNldHNGaWxlID0g
QVJHVi5zaGlmdAorCithc3QgPSBwYXJzZShsZXgoSU86OnJlYWQoYXNtRmlsZSkpKQorb2Zmc2V0
c0xpc3QsIGNvbmZpZ0luZGV4ID0gb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChvZmZzZXRz
RmlsZSkKKworZm9yU2V0dGluZ3MoY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdClbY29u
ZmlnSW5kZXhdLCBhc3QpIHsKKyAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFj
a2VuZCB8CisgIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAgbG93TGV2
ZWxBU1QgPSBsb3dMZXZlbEFTVC5yZXNvbHZlKCpidWlsZE9mZnNldHNNYXAobG93TGV2ZWxBU1Qs
IG9mZnNldHNMaXN0KSkKKyAgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5n
cywgbG93TGV2ZWxBU1QsIGJhY2tlbmQpIHsKKyAgICAkYXNtLmluQXNtIHsKKyAgICAgIGxvd0xl
dmVsQVNULmxvd2VyKGJhY2tlbmQpCisgICAgfQorICB9Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwNiBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgQmFzZSB1dGlsaXR5IHR5cGVzIGZvciB0aGUgQVNULiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKworIyBWYWxpZCBtZXRob2RzIGZvciBOb2RlOgorIworIyBub2RlLmNoaWxkcmVu
IC0+IFJldHVybnMgYW4gYXJyYXkgb2YgaW1tZWRpYXRlIGNoaWxkcmVuLgorIworIyBub2RlLmRl
c2NlbmRlbnRzIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHN0cmljdCBkZXNjZW5kYW50cyAo
Y2hpbGRyZW4KKyMgICAgIGFuZCBjaGlsZHJlbiBvZiBjaGlsZHJlbiwgdHJhbnNpdGl2ZWx5KS4K
KyMKKyMgbm9kZS5mbGF0dGVuIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgc3Ry
aWN0IGRlc2NlbmRhbnRzIGFuZAorIyAgICAgdGhlIG5vZGUgaXRzZWxmLgorIworIyBub2RlLmZp
bHRlcih0eXBlKSAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhvc2UgZWxlbWVudHMg
aW4KKyMgICAgIG5vZGUuZmxhdHRlbiB0aGF0IGFyZSBvZiB0aGUgZ2l2ZW4gdHlwZSAoaXNfYT8g
dHlwZSByZXR1cm5zIHRydWUpLgorIworIyBub2RlLm1hcENoaWxkcmVue3x2fCAuLi59IC0+IFJl
dHVybnMgYSBuZXcgbm9kZSB3aXRoIGFsbCBjaGlsZHJlbgorIyAgICAgcmVwbGFjZWQgYWNjb3Jk
aW5nIHRvIHRoZSBnaXZlbiBibG9jay4KKyMKKyMgRXhhbXBsZXM6CisjCisjIG5vZGUuZmlsdGVy
KFNldHRpbmcpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHNldHRpbmdzIHRoYXQgdGhlIEFT
VCdzCisjICAgICBJZlRoZW5FbHNlIGJsb2NrcyBkZXBlbmQgb24uCisjCisjIG5vZGUuZmlsdGVy
KFN0cnVjdE9mZnNldCkudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc3RydWN0dXJlIG9mZnNl
dHMKKyMgICAgIHRoYXQgdGhlIEFTVCBkZXBlbmRzIG9uLgorCitjbGFzcyBOb2RlCisgIGF0dHJf
cmVhZGVyIDpjb2RlT3JpZ2luCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAg
IEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICBlbmQKKyAgCisgIGRlZiBjb2RlT3JpZ2luU3Ry
aW5nCisgICAgImxpbmUgbnVtYmVyICN7QGNvZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBk
ZXNjZW5kYW50cworICAgIGNoaWxkcmVuLmNvbGxlY3R7fHZ8IHYuZmxhdHRlbn0uZmxhdHRlbgor
ICBlbmQKKyAgCisgIGRlZiBmbGF0dGVuCisgICAgW3NlbGZdICsgZGVzY2VuZGFudHMKKyAgZW5k
CisgIAorICBkZWYgZmlsdGVyKHR5cGUpCisgICAgZmxhdHRlbi5zZWxlY3R7fHZ8IHYuaXNfYT8g
dHlwZX0KKyAgZW5kCitlbmQKKworY2xhc3MgTm9DaGlsZHJlbiA8IE5vZGUKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIFtdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgc2Vs
ZgorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXRLZXkKKyAgYXR0cl9yZWFkZXIgOnN0
cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShzdHJ1Y3QsIGZpZWxkKQorICAgIEBz
dHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisgIGRlZiBoYXNo
CisgICAgQHN0cnVjdC5oYXNoICsgQGZpZWxkLmhhc2ggKiAzCisgIGVuZAorICAKKyAgZGVmIGVx
bD8ob3RoZXIpCisgICAgQHN0cnVjdCA9PSBvdGhlci5zdHJ1Y3QgYW5kIEBmaWVsZCA9PSBvdGhl
ci5maWVsZAorICBlbmQKK2VuZAorICAgIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgQVNUIG5vZGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor
Y2xhc3MgU3RydWN0T2Zmc2V0IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6
ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgICAgQGZpZWxkID0g
ZmllbGQKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yRmll
bGQoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBrZXkgPSBTdHJ1Y3RPZmZzZXRLZXku
bmV3KHN0cnVjdCwgZmllbGQpCisgICAgCisgICAgdW5sZXNzIEBAbWFwcGluZ1trZXldCisgICAg
ICBAQG1hcHBpbmdba2V5XSA9IFN0cnVjdE9mZnNldC5uZXcoY29kZU9yaWdpbiwgc3RydWN0LCBm
aWVsZCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdba2V5XQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIiN7c3RydWN0fTo6I3tmaWVsZH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikK
KyAgICBpZiBAc3RydWN0ICE9IG90aGVyLnN0cnVjdAorICAgICAgcmV0dXJuIEBzdHJ1Y3QgPD0+
IG90aGVyLnN0cnVjdAorICAgIGVuZAorICAgIEBmaWVsZCA8PT4gb3RoZXIuZmllbGQKKyAgZW5k
CitlbmQKKworY2xhc3MgU2l6ZW9mIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0g
e30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHVubGVz
cyBAQG1hcHBpbmdbc3RydWN0XQorICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBTaXplb2YubmV3
KGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbc3RydWN0XQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgInNpemVvZiAje0BzdHJ1Y3R9IgorICBlbmQKKyAgCisg
IGRlZiA8PT4ob3RoZXIpCisgICAgQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgIGVuZAorZW5k
CisKK2NsYXNzIEltbWVkaWF0ZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnZhbHVlCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEB2YWx1ZSA9IHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3t2
YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIG90aGVyLmlzX2E/IEltbWVk
aWF0ZSBhbmQgb3RoZXIudmFsdWUgPT0gQHZhbHVlCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZElt
bWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRy
ZW4KKyAgICBBZGRJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWll
bGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICsg
I3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMgPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBs
ZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBb
QGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBTdWJJbW1l
ZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IC0gI3tyaWdodC5kdW1wfSki
CisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVy
IDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJp
Z2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0
ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0K
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBNdWxJbW1lZGlhdGVzLm5ldyhjb2Rl
T3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICogI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisK
K2NsYXNzIE5lZ0ltbWVkaWF0ZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBjaGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BjaGls
ZF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOZWdJbW1lZGlhdGUubmV3KGNv
ZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigt
I3tAY2hpbGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklEIDwgTm9DaGls
ZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQK
KyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVd
ID0gUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBp
bmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKwor
Y2xhc3MgRlBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBk
ZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tu
YW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gRlBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2lu
LCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZSA8IE5vQ2hpbGRyZW4K
KyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5h
bWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAor
ICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1l
KQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFZh
cmlhYmxlLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1l
XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBB
ZGRyZXNzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFzZSwgOm9mZnNldAorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQGJhc2UgPSBiYXNlCisgICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIFtAYmFzZSwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hp
bGRyZW4KKyAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQg
QG9mZnNldCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQuZHVtcH1bI3ti
YXNlLmR1bXB9XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9kZQorICBhdHRy
X3JlYWRlciA6YmFzZSwgOmluZGV4LCA6c2NhbGUsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisgICAgQGluZGV4ID0gaW5kZXgKKyAgICBAc2Nh
bGUgPSBzY2FsZQorICAgIHJhaXNlIHVubGVzcyBbMSwgMiwgNCwgOF0ubWVtYmVyPyBAc2NhbGUK
KyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0Bi
YXNlLCBAaW5kZXgsIEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAg
QmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQGluZGV4KSwg
QHNjYWxlLCAoeWllbGQgQG9mZnNldCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tv
ZmZzZXQuZHVtcH1bI3tiYXNlLmR1bXB9LCAje2luZGV4LmR1bXB9LCAje3NjYWxlfV0iCisgIGVu
ZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFk
ZXIgOmFkZHJlc3MKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGFkZHJlc3MpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICIje2FkZHJlc3MuZHVtcH1bXSIKKyAgZW5kCitlbmQKKworY2xhc3Mg
SW5zdHJ1Y3Rpb24gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpvcGNvZGUsIDpvcGVyYW5kcworICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgb3Bjb2RlLCBvcGVyYW5kcykKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBvcGNvZGUgPSBvcGNvZGUKKyAgICBAb3BlcmFuZHMgPSBvcGVy
YW5kcworICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIG9wZXJhbmRzCisgIGVuZAorICAK
KyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2lu
LCBAb3Bjb2RlLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICJcdCIgKyBvcGNvZGUudG9fcyArICIgIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVt
cH0uam9pbigiLCAiKQorICBlbmQKK2VuZAorCitjbGFzcyBFcnJvciA8IE5vQ2hpbGRyZW4KKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgIlx0ZXJyb3IiCisgIGVuZAorZW5kCisKK2NsYXNzIENvbnN0
RGVjbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnZhcmlhYmxlLCA6dmFsdWUKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEB2YXJpYWJsZSA9IHZhcmlhYmxlCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQHZhcmlhYmxlLCBAdmFsdWVdCisgIGVuZAorICAK
KyAgZGVmIG1hcENoaWxkcmVuCisgICAgQ29uc3REZWNsLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQg
QHZhcmlhYmxlKSwgKHlpZWxkIEB2YWx1ZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
Y29uc3QgI3tAdmFyaWFibGUuZHVtcH0gPSAje0B2YWx1ZS5kdW1wfSIKKyAgZW5kCitlbmQKKwor
JGxhYmVsTWFwcGluZyA9IHt9CisKK2NsYXNzIExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3Jl
YWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBzZWxm
LmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisg
ICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxN
YXBwaW5nW25hbWVdLmlzX2E/IExhYmVsCisgICAgZWxzZQorICAgICAgJGxhYmVsTWFwcGluZ1tu
YW1lXSA9IExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1h
cHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5k
CitlbmQKKworY2xhc3MgTG9jYWxMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5h
bWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisKKyAgQEB1bmlxdWVOYW1lQ291bnRl
ciA9IDAKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAk
bGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7
bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExvY2FsTGFiZWwKKyAgICBl
bHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTG9jYWxMYWJlbC5uZXcoY29kZU9yaWdp
biwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAg
ZGVmIHNlbGYudW5pcXVlCisgICAgd2hpbGUgJGxhYmVsTWFwcGluZ1siX0wje0BAdW5pcXVlTmFt
ZUNvdW50ZXJ9Il0KKyAgICAgIEBAdW5pcXVlTmFtZUNvdW50ZXIgKz0gMQorICAgIGVuZAorICAg
IGZvck5hbWUobmlsLCAiX0wje0BAdW5pcXVlTmFtZUNvdW50ZXJ9IikKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVu
Y2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJl
bAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAg
ZGVmIG1hcENoaWxkcmVuCisgICAgTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVs
ZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBMb2Nh
bExhYmVsUmVmZXJlbmNlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxh
YmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExvY2FsTGFiZWxSZWZlcmVu
Y2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1l
CisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQor
ICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxpc3QK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxpc3QpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAbGlzdCA9IGxpc3QKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBs
aXN0CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIFNlcXVlbmNlLm5l
dyhjb2RlT3JpZ2luLCBAbGlzdC5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgbGlzdC5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIlxuIikKKyAgZW5kCitlbmQKKworY2xh
c3MgVHJ1ZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisg
IGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IFRydWUubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5j
ZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICB0cnVlCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAidHJ1ZSIKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2Ug
PCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAg
CisgIEBAaW5zdGFuY2UgPSBGYWxzZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAg
QEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIGZhbHNlCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICAiZmFsc2UiCisgIGVuZAorZW5kCisKK2NsYXNzIFRydWVDbGFzcwor
ICBkZWYgYXNOb2RlCisgICAgVHJ1ZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBGYWxz
ZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBGYWxzZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitj
bGFzcyBTZXR0aW5nIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2Vs
Zi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQor
ICAgICAgQEBtYXBwaW5nW25hbWVdID0gU2V0dGluZy5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAg
ICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5h
bWUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwg
OnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAor
ICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQW5kLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxl
ZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0
LmR1bXB9IGFuZCAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgT3IgPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBs
ZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBb
QGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBPci5uZXco
Y29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBvciAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitl
bmQKKworY2xhc3MgTm90IDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEBy
aWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOb3QubmV3KGNvZGVPcmln
aW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIihub3QgI3tj
aGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAgPCBOb0NoaWxkcmVuCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICJcdHNraXAiCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVs
c2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpwcmVkaWNhdGUsIDp0aGVuQ2FzZQorICBhdHRyX2Fj
Y2Vzc29yIDplbHNlQ2FzZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgcHJlZGlj
YXRlLCB0aGVuQ2FzZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBwcmVkaWNhdGUgPSBw
cmVkaWNhdGUKKyAgICBAdGhlbkNhc2UgPSB0aGVuQ2FzZQorICAgIEBlbHNlQ2FzZSA9IFNraXAu
bmV3KGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgaWYgQGVsc2VD
YXNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNlLCBAZWxzZUNhc2VdCisgICAgZWxzZQor
ICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZV0KKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHByZWRp
Y2F0ZSksICh5aWVsZCBAdGhlbkNhc2UpLCAoeWllbGQgQGVsc2VDYXNlKSkKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICJpZiAje3ByZWRpY2F0ZS5kdW1wfVxuIiArIHRoZW5DYXNlLmR1bXAg
KyAiXG5lbHNlXG4iICsgZWxzZUNhc2UuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xh
c3MgTWFjcm8gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6dmFyaWFibGVzLCA6Ym9keQor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQHZhcmlhYmxlcyA9
IHZhcmlhYmxlcworICAgIEBib2R5ID0gYm9keQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgor
ICAgIEB2YXJpYWJsZXMgKyBbQGJvZHldCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisg
ICAgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAdmFyaWFibGVzLm1hcHt8dnwgeWllbGQg
dn0sICh5aWVsZCBAYm9keSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAibWFjcm8gI3tu
YW1lfSgiICsgdmFyaWFibGVzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpXG4i
ICsgYm9keS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBNYWNyb0NhbGwgPCBO
b2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6b3BlcmFuZHMKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QG5hbWUgPSBuYW1lCisgICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAgICByYWlzZSB1bmxlc3Mg
QG9wZXJhbmRzCisgICAgQG9wZXJhbmRzLmVhY2h7fHZ8IHJhaXNlIHVubGVzcyB2fQorICBlbmQK
KyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbigmcHJvYykKKyAgICBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAb3Bl
cmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdCN7bmFtZX0o
IiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpIgorICBlbmQK
K2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5k
cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Jh
Y2tlbmRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJ4ODYiCisKK0JB
Q0tFTkRTID0KKyAgWworICAgIlg4NiIsCisgICAiQVJNdjciCisgIF0KKworV09SS0lOR19CQUNL
RU5EUyA9CisgIFsKKyAgICJYODYiCisgIF0KKworQkFDS0VORF9QQVRURVJOID0gUmVnZXhwLm5l
dygnXFxBKCcgKyBCQUNLRU5EUy5qb2luKCcpfCgnKSArICcpXFxaJykKKworY2xhc3MgTm9kZQor
ICBkZWYgbG93ZXIobmFtZSkKKyAgICBzZW5kKCJsb3dlciIgKyBuYW1lKQorICBlbmQKK2VuZAor
CisjIE92ZXJyaWRlcyBmb3IgbG93ZXIoKSBmb3IgdGhvc2Ugbm9kZXMgdGhhdCBhcmUgYmFja2Vu
ZC1hZ25vc3RpYworCitkZWYgc2FuaXRpemVMYWJlbE5hbWUobmFtZSkKKyAgIyBTb21lIHBsYXRm
b3JtcyBkb24ndCB3YW50IHRoZSBsZWFkaW5nICJfIi4gSWYgd2UgZXZlciB3YW50IHRvIGRvIHNv
bWV0aGluZworICAjIGFib3V0IHRoYXQsIGl0IHdvdWxkIGJlIGhlcmUuCisgIG5hbWUKK2VuZAor
CitjbGFzcyBMYWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHMgIi5nbG9ibCAj
e3Nhbml0aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9IgorICAgICRhc20ucHV0cyAiI3tzYW5pdGl6
ZUxhYmVsTmFtZShzZWxmLm5hbWUpfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwK
KyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzICJfX29hXyN7c2VsZi5uYW1lWzEuLi0x
XX06IgorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwCisgIGRlZiBsb3dlcihuYW1lKQorICBlbmQK
K2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBAbGlzdC5lYWNo
IHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBub2RlLmxvd2VyKG5hbWUpCisgICAgfQorICBlbmQK
K2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9v
ZmZzZXRfZXh0cmFjdG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9y
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisjIS91c3IvYmluL2VudiBydWJ5CisK
KyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFt
ZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJvZmZzZXRzIgorcmVx
dWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisK
K2RlZiBlbWl0TWFnaWNOdW1iZXIKKyAgT0ZGU0VUX01BR0lDX05VTUJFUlMuZWFjaCB7CisgICAg
fCBudW1iZXIgfAorICAgIHB1dHMgIiN7bnVtYmVyfSwiCisgIH0KK2VuZAorCitvcmlnaW5hbEFT
VCA9IHBhcnNlKGxleCgkc3RkaW4ucmVhZCkpCisKK2VtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9u
cyhvcmlnaW5hbEFTVCkgeworICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAg
b2Zmc2V0c0xpc3QgPSBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CisgIHNpemVz
TGlzdCA9IGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKKyAgCisgIGxlbmd0aCA9IChPRkZT
RVRfTUFHSUNfTlVNQkVSUy5zaXplICsgMSkgKiAoMSArIG9mZnNldHNMaXN0LnNpemUgKyBzaXpl
c0xpc3Quc2l6ZSkKKyAgCisgIHB1dHMgInN0YXRpYyBjb25zdCB1bnNpZ25lZCBleHRyYWN0b3JU
YWJsZVsje2xlbmd0aH1dID0geyIKKyAgZW1pdE1hZ2ljTnVtYmVyCisgIHB1dHMgIiN7aW5kZXh9
LCIKKyAgb2Zmc2V0c0xpc3QuZWFjaCB7CisgICAgfCBvZmZzZXQgfAorICAgIGVtaXRNYWdpY051
bWJlcgorICAgIHB1dHMgIk9GRkxJTkVfQVNNX09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7
b2Zmc2V0LmZpZWxkfSksIgorICB9CisgIHNpemVzTGlzdC5lYWNoIHsKKyAgICB8IG9mZnNldCB8
CisgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgcHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0cnVjdH0p
LCIKKyAgfQorICBwdXRzICJ9OyIKK30KKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxODggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01B
Q1JPX0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJhZGRpIiwKKyAgICJhbmRpIiwKKyAgICJsc2hp
ZnRpIiwKKyAgICJtdWxpIiwKKyAgICJuZWdpIiwKKyAgICJub3RpIiwKKyAgICJvcmkiLAorICAg
InJzaGlmdGkiLAorICAgInVyc2hpZnRpIiwKKyAgICJzdWJpIiwKKyAgICJ4b3JpIiwKKyAgICJs
b2FkaSIsCisgICAibG9hZGIiLAorICAgImxvYWRoIiwKKyAgICJzdG9yZWkiLAorICAgInN0b3Jl
YiIsCisgICAibG9hZGQiLAorICAgIm1vdmVkIiwKKyAgICJzdG9yZWQiLAorICAgImFkZGQiLAor
ICAgImRpdmQiLAorICAgInN1YmQiLAorICAgIm11bGQiLAorICAgInNxcnRkIiwKKyAgICJjaTJk
IiwKKyAgICJmaWkyZCIsICMgdXNhZ2U6IGZpaTJkIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2Fu
dCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxmcHI+CisgICAiZmQy
aWkiLCAjIHVzYWdlOiBmZDJpaSA8ZnByPiwgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJp
dHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPgorICAgImJkZXEiLAorICAgImJk
bmVxIiwKKyAgICJiZGd0IiwKKyAgICJiZGd0ZXEiLAorICAgImJkbHQiLAorICAgImJkbHRlcSIs
CisgICAiYmRlcXVuIiwKKyAgICJiZG5lcXVuIiwKKyAgICJiZGd0dW4iLAorICAgImJkZ3RlcXVu
IiwKKyAgICJiZGx0dW4iLAorICAgImJkbHRlcXVuIiwKKyAgICJidGQyaSIsCisgICAidGQyaSIs
CisgICAiYmNkMmkiLAorICAgIm1vdmR6IiwKKyAgICJwb3AiLAorICAgInB1c2giLAorICAgIm1v
dmUiLAorICAgInN4aTJwIiwKKyAgICJ6eGkycCIsCisgICAibm9wIiwKKyAgICJiaWVxIiwKKyAg
ICJiaW5lcSIsCisgICAiYmlhIiwKKyAgICJiaWFlcSIsCisgICAiYmliIiwKKyAgICJiaWJlcSIs
CisgICAiYmlndCIsCisgICAiYmlndGVxIiwKKyAgICJiaWx0IiwKKyAgICJiaWx0ZXEiLAorICAg
ImJiZXEiLAorICAgImJibmVxIiwKKyAgICJiYmEiLAorICAgImJiYWVxIiwKKyAgICJiYmIiLAor
ICAgImJiYmVxIiwKKyAgICJiYmd0IiwKKyAgICJiYmd0ZXEiLAorICAgImJibHQiLAorICAgImJi
bHRlcSIsCisgICAiYnRpbyIsCisgICAiYnRpcyIsCisgICAiYnRpeiIsCisgICAiYnRpbnoiLAor
ICAgImJ0Ym8iLAorICAgImJ0YnMiLAorICAgImJ0YnoiLAorICAgImJ0Ym56IiwKKyAgICJqbXAi
LAorICAgImJhZGRpbyIsCisgICAiYmFkZGlzIiwKKyAgICJiYWRkaXoiLAorICAgImJhZGRpbnoi
LAorICAgImJzdWJpbyIsCisgICAiYnN1YmlzIiwKKyAgICJic3ViaXoiLAorICAgImJzdWJpbnoi
LAorICAgImJtdWxpbyIsCisgICAiYm11bGlzIiwKKyAgICJibXVsaXoiLAorICAgImJtdWxpbnoi
LAorICAgImJvcmlvIiwKKyAgICJib3JpcyIsCisgICAiYm9yaXoiLAorICAgImJvcmlueiIsCisg
ICAiYnJlYWsiLAorICAgImNhbGwiLAorICAgInJldCIsCisgICAiY2llcSIsCisgICAiY2luZXEi
LAorICAgImNpYSIsCisgICAiY2lhZXEiLAorICAgImNpYiIsCisgICAiY2liZXEiLAorICAgImNp
Z3QiLAorICAgImNpZ3RlcSIsCisgICAiY2lsdCIsCisgICAiY2lsdGVxIiwKKyAgICJ0aW8iLAor
ICAgInRpcyIsCisgICAidGl6IiwKKyAgICJ0aW56IiwKKyAgICJ0Ym8iLAorICAgInRicyIsCisg
ICAidGJ6IiwKKyAgICJ0Ym56IiwKKyAgICJwZWVrIiwKKyAgICJwb2tlIiwKKyAgICJicGVxIiwK
KyAgICJicG5lcSIsCisgICAiYnBhIiwKKyAgICJicGFlcSIsCisgICAiYnBiIiwKKyAgICJicGJl
cSIsCisgICAiYnBndCIsCisgICAiYnBndGVxIiwKKyAgICJicGx0IiwKKyAgICJicGx0ZXEiLAor
ICAgImFkZHAiLAorICAgImFuZHAiLAorICAgIm9ycCIsCisgICAic3VicCIsCisgICAieG9ycCIs
CisgICAibG9hZHAiLAorICAgImNwZXEiLAorICAgImNwbmVxIiwKKyAgICJjcGEiLAorICAgImNw
YWVxIiwKKyAgICJjcGIiLAorICAgImNwYmVxIiwKKyAgICJjcGd0IiwKKyAgICJjcGd0ZXEiLAor
ICAgImNwbHQiLAorICAgImNwbHRlcSIsCisgICAic3RvcmVwIiwKKyAgICJidHBvIiwKKyAgICJi
dHBzIiwKKyAgICJidHB6IiwKKyAgICJidHBueiIsCisgICAiYmFkZHBvIiwKKyAgICJiYWRkcHMi
LAorICAgImJhZGRweiIsCisgICAiYmFkZHBueiIKKyAgXQorCitYODZfSU5TVFJVQ1RJT05TID0K
KyAgWworICAgImNkcWkiLAorICAgImlkaXZpIgorICBdCisKK0lOU1RSVUNUSU9OUyA9IE1BQ1JP
X0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMKKworSU5TVFJVQ1RJT05fUEFUVEVSTiA9
IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIElOU1RSVUNUSU9OUy5qb2luKCcpfCgnKSArICcpKVxcWicp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9y
X2NvbnN0YW50cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJi
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitNQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0K
KworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRz
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJhY3Rv
cl9jb25zdGFudHMiCisKK09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBm
ZjVlNzU1IF0KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgb2Zmc2V0c0xp
c3QoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBzaXplc0xpc3QoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUmV0dXJucyBhIGxpc3Qg
b2Ygb2Zmc2V0cyBhbmQgc2l6ZXMgdXNlZCBieSB0aGUgQVNULiAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIG9mZnNldHNMaXN0KGFzdCkK
KyAgYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorZW5kCisKK2RlZiBzaXplc0xp
c3QoYXN0KQorICBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CitlbmQKKworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChh
c3QsIGZpbGUpIC0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgW29mZnNldHMs
IGluZGV4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgUGFyc2VzIHRoZSBvZmZzZXRzIGZyb20gYSBmaWxlIGFuZCBy
ZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCB0aGUgIworIyBpbmRleCBvZiB0aGUgY29uZmln
dXJhdGlvbiB0aGF0IGlzIHZhbGlkIGluIHRoaXMgYnVpbGQgdGFyZ2V0LiAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgb2Zmc2V0c0FuZENvbmZpZ3VyYXRp
b25JbmRleChmaWxlKQorICBpbmRleCA9IG5pbAorICBvZmZzZXRzID0gW10KKyAgZW5kaWFubmVz
c01hcmtlckJ5dGVzID0gbmlsCisgIAorICBkZWYgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisg
ICAgYnl0ZXMgPSBbXQorICAgIDQudGltZXMgeworICAgICAgYnl0ZXMgPDwgaW5wLmdldGJ5dGUK
KyAgICB9CisgICAgCisgICAgaWYgZW5kaWFubmVzcyA9PSA6bGl0dGxlCisgICAgICAjIExpdHRs
ZSBlbmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAwIHwKKyAgICAgICBieXRlc1sxXSA8PCA4IHwK
KyAgICAgICBieXRlc1syXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbM10gPDwgMjQpCisgICAgZWxz
ZQorICAgICAgIyBCaWcgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMjQgfAorICAgICAgIGJ5
dGVzWzFdIDw8IDE2IHwKKyAgICAgICBieXRlc1syXSA8PCA4IHwKKyAgICAgICBieXRlc1szXSA8
PCAwKQorICAgIGVuZAorICBlbmQKKyAgCisgIFs6bGl0dGxlLCA6YmlnXS5lYWNoIHsKKyAgICB8
IGVuZGlhbm5lc3MgfAorICAgIG1hZ2ljQnl0ZXMgPSBbXQorICAgIE1BR0lDX05VTUJFUlMuZWFj
aCB7CisgICAgICB8IG51bWJlciB8CisgICAgICBjdXJyZW50Qnl0ZXMgPSBbXQorICAgICAgNC50
aW1lcyB7CisgICAgICAgIGN1cnJlbnRCeXRlcyA8PCAobnVtYmVyICYgMHhmZikKKyAgICAgICAg
bnVtYmVyID4+PSA4CisgICAgICB9CisgICAgICBpZiBlbmRpYW5uZXNzID09IDpiaWcKKyAgICAg
ICAgY3VycmVudEJ5dGVzLnJldmVyc2UhCisgICAgICBlbmQKKyAgICAgIG1hZ2ljQnl0ZXMgKz0g
Y3VycmVudEJ5dGVzCisgICAgfQorICAgIAorICAgIEZpbGUub3BlbihmaWxlLCAiciIpIHsKKyAg
ICAgIHwgaW5wIHwKKyAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICBsb29wIHsKKyAgICAg
ICAgYnl0ZSA9IGlucC5nZXRieXRlCisgICAgICAgIGJyZWFrIHVubGVzcyBieXRlCisgICAgICAg
IGlmIGJ5dGUgPT0gbWFnaWNCeXRlc1t3aGVyZUluTWFya2VyXQorICAgICAgICAgIHdoZXJlSW5N
YXJrZXIgKz0gMQorICAgICAgICAgIGlmIHdoZXJlSW5NYXJrZXIgPT0gbWFnaWNCeXRlcy5zaXpl
CisgICAgICAgICAgICAjIFdlIGhhdmUgYSBtYXRjaCEgSWYgd2UgaGF2ZSBub3QgeWV0IHJlYWQg
dGhlIGVuZGlhbm5lc3MgbWFya2VyIGFuZCBpbmRleCwKKyAgICAgICAgICAgICMgdGhlbiByZWFk
IHRob3NlIG5vdzsgb3RoZXJ3aXNlIHJlYWQgYW4gb2Zmc2V0LgorICAgICAgICAgICAgCisgICAg
ICAgICAgICBpZiBub3QgaW5kZXgKKyAgICAgICAgICAgICAgaW5kZXggPSByZWFkSW50KGVuZGlh
bm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgb2Zmc2V0cyA8PCBy
ZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgCisg
ICAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICAgIGVuZAorICAgICAgICBlbHNl
CisgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgZW5kCisgICAgICB9CisgICAg
fQorICAgIAorICAgIGJyZWFrIGlmIGluZGV4CisgIH0KKyAgCisgIHJhaXNlIHVubGVzcyBpbmRl
eAorICAKKyAgW29mZnNldHMsIGluZGV4XQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAtPiBbb2Zmc2V0
cywgc2l6ZXNdICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBCdWlsZHMgYSBt
YXBwaW5nIGJldHdlZW4gU3RydWN0T2Zmc2V0IG5vZGVzIGFuZCB0aGVpciB2YWx1ZXMuICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgYnVpbGRPZmZzZXRz
TWFwKGFzdCwgb2Zmc2V0c0xpc3QpCisgIG9mZnNldHNNYXAgPSB7fQorICBzaXplc01hcCA9IHt9
CisgIGFzdE9mZnNldHNMaXN0ID0gb2Zmc2V0c0xpc3QoYXN0KQorICBhc3RTaXplc0xpc3QgPSBz
aXplc0xpc3QoYXN0KQorICByYWlzZSB1bmxlc3MgYXN0T2Zmc2V0c0xpc3Quc2l6ZSArIGFzdFNp
emVzTGlzdC5zaXplID09IG9mZnNldHNMaXN0LnNpemUKKyAgb2Zmc2V0c0xpc3QoYXN0KS5lYWNo
X3dpdGhfaW5kZXggeworICAgIHwgc3RydWN0T2Zmc2V0LCBpbmRleCB8CisgICAgb2Zmc2V0c01h
cFtzdHJ1Y3RPZmZzZXRdID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQorICBzaXplc0xpc3QoYXN0
KS5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgc2l6ZW9mLCBpbmRleCB8CisgICAgc2l6ZXNNYXBb
c2l6ZW9mXSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgW29mZnNldHNNYXAsIHNpemVzTWFw
XQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIu
cmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJz
ZXIucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkxIEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJpbnN0cnVjdGlvbnMi
CityZXF1aXJlICJyZWdpc3RlcnMiCisKK2NsYXNzIFRva2VuCisgIGF0dHJfcmVhZGVyIDpjb2Rl
T3JpZ2luLCA6c3RyaW5nCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJpbmcp
CisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgICAgQHN0cmluZyA9IHN0cmluZworICBl
bmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBpZiBvdGhlci5pc19hPyBUb2tlbgorICAgICAg
QHN0cmluZyA9PSBvdGhlci5zdHJpbmcKKyAgICBlbHNlCisgICAgICBAc3RyaW5nID09IG90aGVy
CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmID1+KG90aGVyKQorICAgIEBzdHJpbmcgPX4gb3Ro
ZXIKKyAgZW5kCisgIAorICBkZWYgdG9fcworICAgICIje0BzdHJpbmcuaW5zcGVjdH0gYXQgbGlu
ZSAje2NvZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQor
ICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc30i
CisgICAgZWxzZQorICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9OiAje2NvbW1lbnRb
MF19IgorICAgIGVuZAorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBUaGUgbGV4ZXIuIFRha2VzIGEgc3RyaW5nIGFuZCByZXR1cm5zIGFuIGFycmF5IG9m
IHRva2Vucy4gICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
CitkZWYgbGV4KHN0cikKKyAgcmVzdWx0ID0gW10KKyAgbGluZU51bWJlciA9IDEKKyAgd2hpbGUg
bm90IHN0ci5lbXB0eT8KKyAgICBjYXNlIHN0cgorICAgIHdoZW4gL1xBXCMoW15cbl0qKS8KKyAg
ICAgICMgY29tbWVudCwgaWdub3JlCisgICAgd2hlbiAvXEFcbi8KKyAgICAgIHJlc3VsdCA8PCBU
b2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICBsaW5lTnVtYmVyICs9IDEKKyAgICB3aGVu
IC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhs
aW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVwuKFthLXpBLVowLTlfXSopLworICAgICAgcmVz
dWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQV8oW2EtekEtWjAt
OV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdo
ZW4gL1xBKFsgXHRdKykvCisgICAgICAjIHdoaXRlc3BhY2UsIGlnbm9yZQorICAgIHdoZW4gL1xB
MHgoWzAtOWEtZkEtRl0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwg
JCYuaGV4LnRvX3MpCisgICAgd2hlbiAvXEEwKFswLTddKykvCisgICAgICByZXN1bHQgPDwgVG9r
ZW4ubmV3KGxpbmVOdW1iZXIsICQmLm9jdC50b19zKQorICAgIHdoZW4gL1xBKFswLTldKykvCisg
ICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBOjov
CisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xB
WzosXChcKVxbXF09XCtcLSpdLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVy
LCAkJikKKyAgICBlbHNlCisgICAgICByYWlzZSAiTGV4ZXIgZXJyb3IgYXQgbGluZSBudW1iZXIg
I3tsaW5lTnVtYmVyfSwgdW5leHBlY3RlZCBzZXF1ZW5jZSAje3N0clswLi4yMF0uaW5zcGVjdH0i
CisgICAgZW5kCisgICAgc3RyID0gJH4ucG9zdF9tYXRjaAorICBlbmQKKyAgcmVzdWx0CitlbmQK
KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVG9rZW4gaWRlbnRpZmljYXRp
b24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGlzUmVnaXN0ZXIodG9rZW4pCisg
IHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJbnN0cnVjdGlvbih0b2tl
bikKKyAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0tleXdvcmQo
dG9rZW4pCisgIHRva2VuID1+IC9cQSgodHJ1ZSl8KGZhbHNlKXwoaWYpfCh0aGVuKXwoZWxzZSl8
KGVsc2lmKXwoZW5kKXwoYW5kKXwob3IpfChub3QpfChtYWNybyl8KGNvbnN0KXwoc2l6ZW9mKXwo
ZXJyb3IpKVxaLyBvcgorICAgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4gb3IKKyAgICB0b2tl
biA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzSWRlbnRpZmllcih0b2tlbikK
KyAgdG9rZW4gPX4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKilcWi8gYW5kIG5vdCBpc0tleXdv
cmQodG9rZW4pCitlbmQKKworZGVmIGlzTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQV8oW2Et
ekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNMb2NhbExhYmVsKHRva2VuKQorICB0b2tlbiA9
fiAvXEFcLihbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc1ZhcmlhYmxlKHRva2VuKQor
ICBpc0lkZW50aWZpZXIodG9rZW4pIG9yIGlzUmVnaXN0ZXIodG9rZW4pCitlbmQKKworZGVmIGlz
SW50ZWdlcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBWzAtOV0vCitlbmQKKworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIHBhcnNlci4gVGFrZXMgYW4gYXJyYXkgb2YgdG9r
ZW5zIGFuZCByZXR1cm5zIGFuIEFTVC4gTWV0aG9kcyAgICAgIworIyBvdGhlciB0aGFuIHBhcnNl
KHRva2VucykgYXJlIG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9uLiAgICAgICAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBQYXJzZXIKKyAgZGVmIGlu
aXRpYWxpemUodG9rZW5zKQorICAgIEB0b2tlbnMgPSB0b2tlbnMKKyAgICBAaWR4ID0gMAorICBl
bmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIEB0b2tlbnNbQGlkeF0K
KyAgICAgIEB0b2tlbnNbQGlkeF0ucGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBlbHNlCisgICAg
ICBpZiBjb21tZW50LmVtcHR5PworICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9m
IGZpbGUiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2Yg
ZmlsZTogI3tjb21tZW50WzBdfSIKKyAgICAgIGVuZAorICAgIGVuZAorICBlbmQKKyAgCisgIGRl
ZiBjb25zdW1lKHJlZ2V4cCkKKyAgICBpZiByZWdleHAKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNz
IEB0b2tlbnNbQGlkeF0gPX4gcmVnZXhwCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1bmxl
c3MgQGlkeCA9PSBAdG9rZW5zLmxlbmd0aAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICBlbmQK
KyAgCisgIGRlZiBza2lwTmV3TGluZQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgor
ICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRl
QXRvbQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm5vdCIKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAg
ICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJlc3VsdCA9IHBhcnNlUHJl
ZGljYXRlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgorICAg
ICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJ0
cnVlIgorICAgICAgcmVzdWx0ID0gVHJ1ZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAg
ICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJmYWxzZSIKKyAgICAgIHJlc3Vs
dCA9IEZhbHNlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVs
c2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBTZXR0aW5nLmZv
ck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAg
ICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgor
ICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZUFuZAorICAgIHJlc3VsdCA9
IHBhcnNlUHJlZGljYXRlQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImFuZCIKKyAg
ICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0g
MQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisg
ICAgICByZXN1bHQgPSBBbmQubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5k
CisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlCisgICAgIyBzb21l
IGV4YW1wbGVzIG9mIHByZWNlZGVuY2U6CisgICAgIyBub3QgYSBhbmQgYiAtPiAobm90IGEpIGFu
ZCBiCisgICAgIyBhIGFuZCBiIG9yIGMgLT4gKGEgYW5kIGIpIG9yIGMKKyAgICAjIGEgb3IgYiBh
bmQgYyAtPiBhIG9yIChiIGFuZCBjKQorICAgIAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRl
QW5kCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAib3IiCisgICAgICBjb2RlT3JpZ2luID0g
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdM
aW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgICByZXN1bHQgPSBPci5u
ZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5k
CisgIAorICBkZWYgcGFyc2VWYXJpYWJsZQorICAgIGlmIGlzUmVnaXN0ZXIoQHRva2Vuc1tAaWR4
XSkKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPX4gRlBSX1BBVFRFUk4KKyAgICAgICAgcmVzdWx0
ID0gRlBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5z
W0BpZHhdLnN0cmluZykKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUmVnaXN0ZXJJRC5m
b3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisg
ICAgICBlbmQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgIHJl
c3VsdCA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5z
W0BpZHhdLnN0cmluZykKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgICAg
QGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQWRkcmVzcyhvZmZz
ZXQpCisgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICBjb2Rl
T3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgCisgICAgIyBUaHJlZSBwb3Nz
aWJpbGl0aWVzOgorICAgICMgW10gICAgICAgLT4gQWJzb2x1dGVBZGRyZXNzCisgICAgIyBbYV0g
ICAgICAtPiBBZGRyZXNzCisgICAgIyBbYSxiXSAgICAtPiBCYXNlSW5kZXggd2l0aCBzY2FsZSA9
IDEKKyAgICAjIFthLGIsY10gIC0+IEJhc2VJbmRleAorICAgIAorICAgIEBpZHggKz0gMQorICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJldHVybiBB
YnNvbHV0ZUFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIG9mZnNldCkKKyAgICBlbmQKKyAgICBhID0g
cGFyc2VWYXJpYWJsZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICByZXN1bHQg
PSBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBhLCBvZmZzZXQpCisgICAgZWxzZQorICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgYiA9IHBhcnNlVmFyaWFibGUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAg
ICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgMSwgb2Zmc2V0KQor
ICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIs
IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgWyIxIiwgIjIi
LCAiNCIsICI4Il0ubWVtYmVyPyBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBjID0gQHRv
a2Vuc1tAaWR4XS5zdHJpbmcudG9faQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUlu
ZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCBjLCBvZmZzZXQpCisgICAgICBlbmQKKyAgICBlbmQK
KyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VDb2xvbkNv
bG9uCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0K
KyAgICBuYW1lcyA9IFtAdG9rZW5zW0BpZHhdLnN0cmluZ10KKyAgICBAaWR4ICs9IDEKKyAgICB3
aGlsZSBAdG9rZW5zW0BpZHhdID09ICI6OiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIG5hbWVzIDw8IEB0
b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgICByYWlzZSBp
ZiBuYW1lcy5lbXB0eT8KKyAgICBbY29kZU9yaWdpbiwgbmFtZXNdCisgIGVuZAorICAKKyAgZGVm
IHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICBza2lwTmV3TGluZQorICAgIGlmIEB0b2tlbnNbQGlk
eF0gPT0gIi0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIE5lZ0ltbWVkaWF0ZS5uZXcoQHRva2Vu
c1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQgPSBwYXJz
ZUV4cHJlc3Npb24KKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiki
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSW50ZWdlciBAdG9r
ZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faSkKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIGNv
ZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBpZiBuYW1lcy5zaXplID4g
MQorICAgICAgICBTdHJ1Y3RPZmZzZXQuZm9yRmllbGQoY29kZU9yaWdpbiwgbmFtZXNbMC4uLTJd
LmpvaW4oJzo6JyksIG5hbWVzWy0xXSkKKyAgICAgIGVsc2UKKyAgICAgICAgVmFyaWFibGUuZm9y
TmFtZShjb2RlT3JpZ2luLCBuYW1lc1swXSkKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzUmVnaXN0
ZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcGFyc2VWYXJpYWJsZQorICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gInNpemVvZiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgY29kZU9yaWdpbiwgbmFt
ZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIFNpemVvZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5h
bWVzLmpvaW4oJzo6JykpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICBza2lwTmV3TGluZQorICAgIHJl
c3VsdCA9IHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIq
IgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIHJlc3VsdCA9IE11bEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmln
aW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFp
c2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBjb3Vs
ZEJlRXhwcmVzc2lvbgorICAgIEB0b2tlbnNbQGlkeF0gPT0gIi0iIG9yIEB0b2tlbnNbQGlkeF0g
PT0gInNpemVvZiIgb3IgaXNJbnRlZ2VyKEB0b2tlbnNbQGlkeF0pIG9yIGlzVmFyaWFibGUoQHRv
a2Vuc1tAaWR4XSkKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uCisgICAgc2tpcE5l
d0xpbmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICB3aGlsZSBAdG9rZW5z
W0BpZHhdID09ICIrIiBvciBAdG9rZW5zW0BpZHhdID09ICItIgorICAgICAgaWYgQHRva2Vuc1tA
aWR4XSA9PSAiKyIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IEFkZEltbWVk
aWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHBy
ZXNzaW9uTXVsKQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgICAgQGlk
eCArPSAxCisgICAgICAgIHJlc3VsdCA9IFN1YkltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAt
IDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzZQor
ICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAK
KyAgZGVmIHBhcnNlT3BlcmFuZChjb21tZW50KQorICAgIGlmIGNvdWxkQmVFeHByZXNzaW9uCisg
ICAgICBleHByID0gcGFyc2VFeHByZXNzaW9uCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJb
IgorICAgICAgICBwYXJzZUFkZHJlc3MoZXhwcikKKyAgICAgIGVsc2UKKyAgICAgICAgZXhwcgor
ICAgICAgZW5kCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgIHBhcnNlQWRk
cmVzcyhJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgMCkpCisgICAgZWxz
aWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBMYWJlbFJlZmVyZW5jZS5u
ZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAxCisgICAg
ICByZXN1bHQKKyAgICBlbHNpZiBpc0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVz
dWx0ID0gTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBM
b2NhbExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhd
LnN0cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAg
IHBhcnNlRXJyb3IoY29tbWVudCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VNYWNy
b1ZhcmlhYmxlcworICAgIHNraXBOZXdMaW5lCisgICAgY29uc3VtZSgvXEFcKFxaLykKKyAgICB2
YXJpYWJsZXMgPSBbXQorICAgIGxvb3AgeworICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIGlmIEB0
b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBicmVhaworICAg
ICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIHZhcmlhYmxlcyA8
PCBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4
XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
IGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yCisgICAgICAgIGVuZAor
ICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yCisgICAgICBlbmQKKyAgICB9CisgICAgdmFy
aWFibGVzCisgIGVuZAorICAKKyAgZGVmIHBhcnNlU2VxdWVuY2UoZmluYWwsIGNvbW1lbnQpCisg
ICAgZmlyc3RDb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgbGlzdCA9
IFtdCisgICAgbG9vcCB7CisgICAgICBpZiAoQGlkeCA9PSBAdG9rZW5zLmxlbmd0aCBhbmQgbm90
IGZpbmFsKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgIGJy
ZWFrCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgIyBpZ25vcmUK
KyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJjb25zdCIK
KyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzVmFyaWFibGUg
QHRva2Vuc1tAaWR4XQorICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIj0iCisgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICB2YWx1ZSA9IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRl
IG9mIGNvbnN0ICN7dmFyaWFibGUubmFtZX0iKQorICAgICAgICBsaXN0IDw8IENvbnN0RGVjbC5u
ZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICJlcnJvciIKKyAgICAgICAgbGlzdCA8PCBFcnJvci5uZXcoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0
b2tlbnNbQGlkeF0gPT0gImlmIgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAg
ICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8
KFxuKSlcWi8pCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmVGhlbkVsc2UgPSBJZlRo
ZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNl
KXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1
bXB9XCIiKSkKKyAgICAgICAgbGlzdCA8PCBpZlRoZW5FbHNlCisgICAgICAgIHdoaWxlIEB0b2tl
bnNbQGlkeF0gPT0gImVsc2lmIgorICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4KKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgICAgY29uc3VtZSgv
XEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgZWxz
ZUNhc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVu
Y2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7
cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxz
ZUNhc2UKKyAgICAgICAgICBpZlRoZW5FbHNlID0gZWxzZUNhc2UKKyAgICAgICAgZW5kCisgICAg
ICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gImVsc2UiCisgICAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hp
bGUgaW5zaWRlIG9mIGVsc2UgY2FzZSBmb3IgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikKKyAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIEB0b2tlbnNbQGlkeF0gPT0gImVuZCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
ZW5kCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAgY29kZU9y
aWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyKEB0
b2tlbnNbQGlkeF0pCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAg
ICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgbWFj
cm8gI3tuYW1lfSIpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBsaXN0IDw8IE1hY3JvLm5l
dyhjb2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICBlbHNpZiBpc0luc3Ry
dWN0aW9uIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAg
QGlkeCArPSAxCisgICAgICAgIGlmIChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXpl
KSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgICAgIyBaZXJv
IG9wZXJhbmQgaW5zdHJ1Y3Rpb24sIGFuZCBpdCdzIHRoZSBsYXN0IG9uZS4KKyAgICAgICAgICBs
aXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBi
cmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAjIFpl
cm8gb3BlcmFuZCBpbnN0cnVjdGlvbi4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICMgSXQncyBkZWZpbml0ZWx5IGFuIGluc3RydWN0aW9uLCBhbmQgaXQgaGFz
IGF0IGxlYXN0IG9uZSBvcGVyYW5kLgorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAg
ICBlbmRPZlNlcXVlbmNlID0gZmFsc2UKKyAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgIG9w
ZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGluc3RydWN0aW9uICN7bmFt
ZX0iKQorICAgICAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUp
IG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAgICAgIyBU
aGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbiBhbmQgb2YgdGhlIHNlcXVlbmNlLgorICAgICAgICAg
ICAgICBlbmRPZlNlcXVlbmNlID0gdHJ1ZQorICAgICAgICAgICAgICBicmVhaworICAgICAgICAg
ICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgIyBIYXMgYW5vdGhl
ciBvcGVyYW5kLgorICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVsc2lmIEB0
b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3Ry
dWN0aW9uLgorICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgYnJlYWsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQgYSBjb21t
YSwgbmV3bGluZSwgb3IgI3tmaW5hbH0gYWZ0ZXIgI3tvcGVyYW5kcy5sYXN0LmR1bXB9IikKKyAg
ICAgICAgICAgIGVuZAorICAgICAgICAgIH0KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgICBpZiBlbmRPZlNlcXVl
bmNlCisgICAgICAgICAgICBicmVhaworICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICAg
IGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3Ry
aW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIoIgor
ICAgICAgICAgICMgTWFjcm8gaW52b2NhdGlvbi4KKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBpZiBA
dG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbG9vcCB7CisgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAg
ICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgorICAgICAgICAgICAgICAgICMgSXQn
cyBhIG1hY3JvIGxhbWJkYSEKKyAgICAgICAgICAgICAgICBjb2RlT3JpZ2luSW5uZXIgPSBAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
ICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgICAgICAgICAg
Ym9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGFub255bW91
cyBtYWNybyBwYXNzZWQgYXMgYXJndW1lbnQgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgICAg
QGlkeCArPSAxCisgICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwgTWFjcm8ubmV3KGNvZGVPcmln
aW5Jbm5lciwgbmlsLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBtYWNy
byBjYWxsIHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgc2tp
cE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICBl
bHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGFyc2VFcnJvciAiVW5leHBlY3RlZCAj
e0B0b2tlbnNbQGlkeF0uc3RyaW5nLmluc3BlY3R9IHdoaWxlIHBhcnNpbmcgaW52b2NhdGlvbiBv
ZiBtYWNybyAje25hbWV9IgorICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICBlbmQKKyAgICAgICAgICBsaXN0IDw8IE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgbmFt
ZSwgb3BlcmFuZHMpCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yICJFeHBlY3Rl
ZCBcIihcIiBhZnRlciAje25hbWV9IgorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzTGFiZWwg
QHRva2Vuc1tAaWR4XSBvciBpc0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2Rl
T3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5z
W0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxl
c3MgQHRva2Vuc1tAaWR4XSA9PSAiOiIKKyAgICAgICAgIyBJdCdzIGEgbGFiZWwuCisgICAgICAg
IGlmIGlzTGFiZWwgbmFtZQorICAgICAgICAgIGxpc3QgPDwgTGFiZWwuZm9yTmFtZShjb2RlT3Jp
Z2luLCBuYW1lKQorICAgICAgICBlbHNlCisgICAgICAgICAgbGlzdCA8PCBMb2NhbExhYmVsLmZv
ck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RpbmcgdGVybWluYWwgI3tmaW5h
bH0gI3tjb21tZW50fSIKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoZmlyc3RD
b2RlT3JpZ2luLCBsaXN0KQorICBlbmQKK2VuZAorCitkZWYgcGFyc2UodG9rZW5zKQorICBwYXJz
ZXIgPSBQYXJzZXIubmV3KHRva2VucykKKyAgcGFyc2VyLnBhcnNlU2VxdWVuY2UobmlsLCAiIikK
K2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMu
cmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0
ZXJzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
cmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACisjIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitHUFJTID0KKyAgWworICAgInQwIiwKKyAgICJ0MSIs
CisgICAidDIiLAorICAgInQzIiwKKyAgICJ0NCIsCisgICAiY2ZyIiwKKyAgICJhMCIsCisgICAi
YTEiLAorICAgInIwIiwKKyAgICJyMSIsCisgICAic3AiCisgIF0KKworRlBSUyA9CisgIFsKKyAg
ICJmdDAiLAorICAgImZ0MSIsCisgICAiZnQyIiwKKyAgICJmdDMiLAorICAgImZ0NCIsCisgICAi
ZnQ1IiwKKyAgICJmYTAiLAorICAgImZhMSIsCisgICAiZmEyIiwKKyAgICJmYTMiLAorICAgImZy
IgorICBdCisKK1JFR0lTVEVSUyA9IEdQUlMgKyBGUFJTCisKK0dQUl9QQVRURVJOID0gUmVnZXhw
Lm5ldygnXFxBKCgnICsgR1BSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCitGUFJfUEFUVEVSTiA9
IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQorCitSRUdJ
U1RFUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgUkVHSVNURVJTLmpvaW4oJyl8KCcp
ICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRp
bmdzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Nl
dHRpbmdzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjIxIEBACisjIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJiYWNr
ZW5kcyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFz
dCkgLT4gc2V0dGluZ3NDb21iaWF0aW9ucyAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIENvbXB1dGVzIGFuIGFycmF5IG9mIHNldHRpbmdzIG1hcHMsIHdoZXJlIGEgc2V0dGluZ3Mg
bWFwIGNvbnN0aXR1dGVzICMKKyMgYSBjb25maWd1cmF0aW9uIGZvciB0aGUgYXNzZW1ibHkgY29k
ZSBiZWluZyBnZW5lcmF0ZWQuIFRoZSBtYXAgICAgICAgIworIyBjb250YWlucyBrZXkgdmFsdWUg
cGFpcnMgd2hlcmUga2V5cyBhcmUgc2V0dGluZ3MgbmFtZXMgKHN0cmluZ3MpIGFuZCAjCisjIHRo
ZSB2YWx1ZXMgYXJlIGJvb2xlYW5zICh0cnVlIGZvciBlbmFibGVkLCBmYWxzZSBmb3IgZGlzYWJs
ZWQpLiAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBjb21w
dXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IFtd
CisgIAorICBkZWYgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBtYXBT
b0ZhciwgcmVtYWluaW5nKQorICAgIGlmIHJlbWFpbmluZy5lbXB0eT8KKyAgICAgIHNldHRpbmdz
Q29tYmluYXRpb25zIDw8IG1hcFNvRmFyCisgICAgICByZXR1cm4KKyAgICBlbmQKKyAgICAKKyAg
ICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IHRydWUK
KyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVt
YWluaW5nWzEuLi0xXSkKKyAgICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBuZXdN
YXBbcmVtYWluaW5nWzBdXSA9IGZhbHNlCisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdz
Q29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmluZ1sxLi4tMV0pCisgIGVuZAorICAKKyAgc2V0
dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCB7fSwgKGFzdC5maWx0ZXIoU2V0
dGluZykudW5pcS5jb2xsZWN0e3x2fCB2Lm5hbWV9ICsgWyJYODYiLCAiQVJNdjciXSkudW5pcSkK
KyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBs
b3dMZXZlbEFTVCwgYmFja2VuZCB8IC4uLiB9ICAgICAgICAgICAgICAgICAjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgRGV0ZXJtaW5lcyBpZiB0aGUgc2V0dGluZ3MgY29tYmluYXRpb24gaXMgdmFsaWQs
IGFuZCBpZiBzbywgY2FsbHMgICAgIworIyB0aGUgYmxvY2sgd2l0aCB0aGUgaW5mb3JtYXRpb24g
eW91IG5lZWQgdG8gZ2VuZXJhdGUgY29kZS4gICAgICAgICAgICAjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworCitkZWYgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0
KQorICAjIENoZWNrIHdoaWNoIGFyY2hpdGVjdHVyZXMgdGhpcyBjb21iaW5hdG9yIGNsYWltcyB0
byBzdXBwb3J0LgorICBudW1DbGFpbWVkQmFja2VuZHMgPSAwCisgIHNlbGVjdGVkQmFja2VuZCA9
IG5pbAorICBCQUNLRU5EUy5lYWNoIHsKKyAgICB8IGJhY2tlbmQgfAorICAgIGlzU3VwcG9ydGVk
ID0gY29uY3JldGVTZXR0aW5nc1tiYWNrZW5kXQorICAgIHJhaXNlIHVubGVzcyBpc1N1cHBvcnRl
ZCAhPSBuaWwKKyAgICBudW1DbGFpbWVkQmFja2VuZHMgKz0gaWYgaXNTdXBwb3J0ZWQgdGhlbiAx
IGVsc2UgMCBlbmQKKyAgICBpZiBpc1N1cHBvcnRlZAorICAgICAgc2VsZWN0ZWRCYWNrZW5kID0g
YmFja2VuZAorICAgIGVuZAorICB9CisgIAorICByZXR1cm4gaWYgbnVtQ2xhaW1lZEJhY2tlbmRz
ID4gMQorICAKKyAgIyBSZXNvbHZlIHRoZSBBU1QgZG93biB0byBhIGxvdy1sZXZlbCBmb3JtIChu
byBtYWNyb3Mgb3IgY29uZGl0aW9uYWxzKS4KKyAgbG93TGV2ZWxBU1QgPSBhc3QucmVzb2x2ZVNl
dHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBs
b3dMZXZlbEFTVCwgc2VsZWN0ZWRCYWNrZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBh
c3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAgICAgICAgICAgICAjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QsIHNldHRpbmdzQ29t
YmluYXRpb25zKSB7ICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJh
Y2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgRXhlY3V0ZXMgdGhlIGdpdmVuIGJsb2NrIGZvciBlYWNoIHZhbGlkIHNldHRpbmdzIGNvbWJp
bmF0aW9uIGluIHRoZSAgIworIyBzZXR0aW5ncyBtYXAuIFRoZSBhc3QgcGFzc2VkIGludG8gdGhl
IGJsb2NrIGlzIHJlc29sdmVkICAgICAgICAgICAgICAjCisjIChhc3QucmVzb2x2ZSkgYWdhaW5z
dCB0aGUgc2V0dGluZ3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBUaGUgZmlyc3QgZm9ybSB3aWxsIGNhbGwgY29tcHV0ZVNldHRpbmdzQ29t
YmluYXRpb25zKGFzdCkgZm9yIHlvdS4gICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworCitkZWYgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QsICpvcHRpb25h
bFNldHRpbmdzQ29tYmluYXRpb25zKQorICByYWlzZSBpZiBvcHRpb25hbFNldHRpbmdzQ29tYmlu
YXRpb25zLnNpemUgPiAxCisgIAorICBpZiBvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zLmVt
cHR5PworICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gY29tcHV0ZVNldHRpbmdzQ29tYmluYXRp
b25zKGFzdCkKKyAgZWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gb3B0aW9uYWxTZXR0
aW5nc0NvbWJpYXRpb25zWzBdCisgIGVuZAorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMuZWFj
aF93aXRoX2luZGV4IHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGluZGV4IHwKKyAgICBmb3JT
ZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpIHsKKyAgICAgIHwgY29uY3JldGVTZXR0aW5n
c18sIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3Ms
IGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgIH0KKyAgfQorZW5kCisKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRp
bmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBSZXR1cm5zIHRoZSBDKysgY29kZSB1c2VkIHRvIHRlc3QgaWYgd2UgYXJlIGluIGEgY29u
ZmlndXJhdGlvbiB0aGF0ICAjCisjIGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBjb25jcmV0ZSBz
ZXR0aW5ncy4gICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisKK2RlZiBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAg
IiNpZiAiICsgY29uY3JldGVTZXR0aW5ncy50b19hLmNvbGxlY3R7CisgICAgfCBwYWlyIHwKKyAg
ICAoaWYgcGFpclsxXQorICAgICAgICIiCisgICAgIGVsc2UKKyAgICAgICAiISIKKyAgICAgZW5k
KSArICJPRkZMSU5FX0FTTV8iICsgcGFpclswXQorICB9LmpvaW4oIiAmJiAiKQorZW5kCisKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGlzQVNURXJyb25lb3VzKGFzdCkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyBUZXN0cyB0byBzZWUgaWYgdGhlIEFTVCBjbGFpbXMgdGhhdCB0aGVyZSBpcyBh
biBlcnJvciAtIGkuZS4gaWYgdGhlICAjCisjIHVzZXIncyBjb2RlLCBhZnRlciBzZXR0aW5ncyBy
ZXNvbHV0aW9uLCBoYXMgRXJyb3Igbm9kZXMuICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBpc0FTVEVycm9uZW91cyhhc3QpCisgIG5vdCBhc3Qu
ZmlsdGVyKEVycm9yKS5lbXB0eT8KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRW1pdHMgYSBjaGVjayB0
aGF0IGFzc2VydHMgdGhhdCB3ZSdyZSB1c2luZyB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbi4gIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGFzc2VydENvbmZpZ3VyYXRp
b24oY29uY3JldGVTZXR0aW5ncykKKyAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0
aW5ncykKKyAgcHV0cyAiI2Vsc2UiCisgIHB1dHMgIiNlcnJvciBcIkNvbmZpZ3VyYXRpb24gbWlz
bWF0Y2guXCIiCisgIHB1dHMgIiNlbmRpZiIKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBh
c3QsIGJhY2tlbmQpIHsgICAgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFz
dCwgYmFja2VuZCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBFbWl0cyBhbGwgcmVsZXZhbnQgZ3VhcmRzIHRvIHNlZSBpZiB0aGUgY29uZmlndXJh
dGlvbiBob2xkcyBhbmQgICAgICAjCisjIGNhbGxzIHRoZSBibG9jayBpZiB0aGUgY29uZmlndXJh
dGlvbiBpcyBub3QgZXJyb25lb3VzLiAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisKK2RlZiBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNl
dHRpbmdzLCBhc3QsIGJhY2tlbmQpCisgIHB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0
dGluZ3MpCisgIAorICBpZiBpc0FTVEVycm9uZW91cyhhc3QpCisgICAgcHV0cyAiI2Vycm9yIFwi
SW52YWxpZCBjb25maWd1cmF0aW9uLlwiIgorICBlbHNpZiBub3QgV09SS0lOR19CQUNLRU5EUy5p
bmNsdWRlPyBiYWNrZW5kCisgICAgcHV0cyAiI2Vycm9yIFwiVGhpcyBiYWNrZW5kIGlzIG5vdCBz
dXBwb3J0ZWQgeWV0LlwiIgorICBlbHNlCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgYXN0
LCBiYWNrZW5kCisgIGVuZAorICAKKyAgcHV0cyAiI2VuZGlmIgorZW5kCisKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3Qp
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVT
ZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIEVtaXRzIGd1YXJkIGNvZGVzIGZvciBhbGwgdmFsaWQgY29uZmln
dXJhdGlvbnMsIGFuZCBjYWxscyB0aGUgYmxvY2sgICMKKyMgZm9yIHRob3NlIGNvbmZpZ3VyYXRp
b25zIHRoYXQgYXJlIHZhbGlkIGFuZCBub3QgZXJyb25lb3VzLiAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0
aW9ucyhhc3QpCisgIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7CisgICAg
fCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXggfAorICAgIHB1
dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICAgeWllbGQgY29uY3JldGVT
ZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgcHV0cyAiI2VuZGlmIgor
ICB9CitlbmQKKworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Ry
YW5zZm9ybS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUyIEBACisjIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCisKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2ZVNldHRpbmdzKHNldHRp
bmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgSWZUaGVu
RWxzZSBub2RlcyBieSAgICAgICAjCisjIHN1YnN0aXR1dGluZyBjb25jcmV0ZSBib29sZWFuIHZh
bHVlcyBmb3IgZWFjaCBTZXR0aW5nLiAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnJl
c29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUK
KyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5kCisK
K2NsYXNzIEZhbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgor
ICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgc2V0dGluZ3NbQG5hbWVdLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQK
KyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQucmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKS52YWx1ZSBhbmQgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncyku
dmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBPcgorICBkZWYgcmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVl
IG9yIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5k
CitlbmQKKworY2xhc3MgTm90CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAg
KG5vdCBAY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVu
ZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykKKyAgICBpZiBAcHJlZGljYXRlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUKKyAg
ICAgIEB0aGVuQ2FzZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZWxzZQorICAgICAg
QGVsc2VDYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbmQKKyAgZW5kCitlbmQK
KworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBu
ZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpdGVt
ID0gaXRlbS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICBpZiBpdGVtLmlzX2E/IFNl
cXVlbmNlCisgICAgICAgIG5ld0xpc3QgKz0gaXRlbS5saXN0CisgICAgICBlbHNlCisgICAgICAg
IG5ld0xpc3QgPDwgaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2Rl
T3JpZ2luLCBuZXdMaXN0KQorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyBub2RlLmRlbWFjcm9pZnkobWFjcm9zKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUuc3Vic3RpdHV0ZShtYXBwaW5nKSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBkZW1hY3JvaWZ5KCkgY29uc3RydWN0cyBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZl
IGFueSBNYWNybyAgICAgICAjCisjIG5vZGVzLCB3aGlsZSBzdWJzdGl0dXRlKCkgcmVwbGFjZXMg
VmFyaWFibGUgbm9kZXMgd2l0aCB0aGUgZ2l2ZW4gICAgICMKKyMgbm9kZXMgaW4gdGhlIG1hcHBp
bmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgZGVtYWNy
b2lmeShtYWNyb3MpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBj
aGlsZC5kZW1hY3JvaWZ5KG1hY3JvcykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1
dGUobWFwcGluZykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNo
aWxkLnN1YnN0aXR1dGUobWFwcGluZykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1
dGVMYWJlbHMobWFwcGluZykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAg
ICAgIGNoaWxkLnN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICB9CisgIGVuZAorZW5kCisK
K2NsYXNzIE1hY3JvCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbXlNYXBwaW5nID0g
e30KKyAgICBtYXBwaW5nLmVhY2hfcGFpciB7CisgICAgICB8IGtleSwgdmFsdWUgfAorICAgICAg
dW5sZXNzIEB2YXJpYWJsZXMuaW5jbHVkZT8ga2V5CisgICAgICAgIG15TWFwcGluZ1trZXldID0g
dmFsdWUKKyAgICAgIGVuZAorICAgIH0KKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxk
IHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobXlNYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQK
KworY2xhc3MgVmFyaWFibGUKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBpZiBtYXBw
aW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAg
IGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBzdWJzdGl0dXRlTGFi
ZWxzKG1hcHBpbmcpCisgICAgaWYgbWFwcGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQor
ICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVu
Y2UKKyAgZGVmIHN1YnN0aXR1dGUoY29uc3RhbnRzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIG15
Q29uc3RhbnRzID0gY29uc3RhbnRzLmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVt
IHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gQ29uc3REZWNsCisgICAgICAgIG15Q29uc3RhbnRzW2l0
ZW0udmFyaWFibGVdID0gaXRlbS52YWx1ZS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAg
ZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAg
ICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAg
ZW5kCisgIAorICBkZWYgcmVuYW1lTGFiZWxzCisgICAgbWFwcGluZyA9IHt9CisgICAgCisgICAg
QGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBMb2NhbExh
YmVsCisgICAgICAgIG1hcHBpbmdbaXRlbV0gPSBMb2NhbExhYmVsLnVuaXF1ZQorICAgICAgZW5k
CisgICAgfQorICAgIAorICAgIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgZW5kCisgIAor
ICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbXlNYWNyb3MgPSBtYWNyb3MuZHVwCisgICAg
QGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybwor
ICAgICAgICBteU1hY3Jvc1tpdGVtLm5hbWVdID0gaXRlbQorICAgICAgZW5kCisgICAgfQorICAg
IG5ld0xpc3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlm
IGl0ZW0uaXNfYT8gTWFjcm8KKyAgICAgICAgIyBJZ25vcmUuCisgICAgICBlbHNpZiBpdGVtLmlz
X2E/IE1hY3JvQ2FsbAorICAgICAgICBtYXBwaW5nID0ge30KKyAgICAgICAgbXlNeU1hY3JvcyA9
IG15TWFjcm9zLmR1cAorICAgICAgICByYWlzZSAiQ291bGQgbm90IGZpbmQgbWFjcm8gI3tpdGVt
Lm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG15TWFjcm9zW2l0ZW0u
bmFtZV0KKyAgICAgICAgcmFpc2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxsIHRv
ICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVtLm9w
ZXJhbmRzLnNpemUgPT0gbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQorICAgICAg
ICBpdGVtLm9wZXJhbmRzLnNpemUudGltZXMgeworICAgICAgICAgIHwgaWR4IHwKKyAgICAgICAg
ICBpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gVmFyaWFibGUgYW5kIG15TWFjcm9zW2l0ZW0u
b3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVt
Lm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhd
Lm5hbWVdCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVz
W2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNf
YT8gTWFjcm8KKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJp
YWJsZXNbaWR4XS5uYW1lXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgbWFwcGlu
Z1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlh
Ymxlc1tpZHhdXSA9IG5pbAorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVd
LnZhcmlhYmxlc1tpZHhdXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgIGVuZAorICAg
ICAgICB9CisgICAgICAgIG5ld0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5LnN1YnN0
aXR1dGUobWFwcGluZykuZGVtYWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMubGlzdAor
ICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uZGVtYWNyb2lmeShteU1hY3JvcykK
KyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCku
c3Vic3RpdHV0ZSh7fSkKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgbm9kZS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbnN0cnVjdCBhIG5l
dyBBU1QgdGhhdCBoYXMgb2Zmc2V0IHZhbHVlcyBpbnN0ZWFkIG9mIHN5bWJvbGljICAgICAgICMK
KyMgb2Zmc2V0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xh
c3MgTm9kZQorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgbWFwQ2hp
bGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlT2Zmc2V0cyhvZmZz
ZXRzLCBzaXplcykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldAorICBk
ZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgb2Zmc2V0c1tzZWxmXQor
ICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXRzW3NlbGZdKQorICAgIGVsc2UK
KyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mCisgIGRlZiBy
ZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBzaXplc1tzZWxmXQorICAgICAg
SW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBzaXplc1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBw
dXRzICJDb3VsZCBub3QgZmluZCAje3NlbGYuaW5zcGVjdH0gaW4gI3tzaXplcy5rZXlzLmluc3Bl
Y3R9IgorICAgICAgcHV0cyAic2l6ZXMgPSAje3NpemVzLmluc3BlY3R9IgorICAgICAgc2VsZgor
ICAgIGVuZAorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyBub2RlLmZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUmVzb2x2ZSBjb25zdGFudCByZWZl
cmVuY2VzIGFuZCBjb21wdXRlIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMuICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgZm9sZAorICAg
IG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuZm9sZAorICAgIH0K
KyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0
ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYg
dW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmln
aHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52
YWx1ZSArIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcwor
ICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5m
b2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJl
dHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5l
dyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAtIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKwor
Y2xhc3MgTXVsSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAor
ICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0Lmlz
X2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRp
YXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAqIEByaWdodC52
YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlCisgIGRlZiBmb2xkCisgICAg
QGNoaWxkID0gQGNoaWxkLmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGNoaWxkLmlzX2E/
IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLUBjaGlsZC52YWx1ZSkK
KyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5y
ZXNvbHZlQWZ0ZXJTZXR0aW5ncyhvZmZzZXRzLCBzaXplcykgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbXBpbGUgYXNzZW1ibHkgYWdhaW5zdCBhIHNl
dCBvZiBvZmZzZXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmUob2Zmc2V0cywg
c2l6ZXMpCisgICAgZGVtYWNyb2lmeSh7fSkucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMp
LmZvbGQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3g4Ni5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3g4Ni5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NzEgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIHN1cHBvcnRzOEJp
dE9uWDg2CisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiLCAidDEiLCAi
YTEiLCAicjEiLCAidDIiLCAidDMiCisgICAgICB0cnVlCisgICAgd2hlbiAidDQiLCAiY2ZyIgor
ICAgICAgZmFsc2UKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAi
LCAicjAiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVhbCIK
KyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVheCIKKyAgICAgIHdoZW4gOmludAorICAgICAg
ICAiJWVheCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4g
InQxIiwgImExIiwgInIxIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAg
ICAgICIlZGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZHgiCisgICAgICB3aGVuIDpp
bnQKKyAgICAgICAgIiVlZHgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQK
KyAgICB3aGVuICJ0MiIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAg
ICAiJWNsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWN4IgorICAgICAgd2hlbiA6aW50
CisgICAgICAgICIlZWN4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisg
ICAgd2hlbiAidDMiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAg
IiVibCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVieCIKKyAgICAgIHdoZW4gOmludAor
ICAgICAgICAiJWVieCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAg
IHdoZW4gInQ0IgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIl
c2lsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNpIgorICAgICAgd2hlbiA6aW50Cisg
ICAgICAgICIlZXNpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAg
d2hlbiAiY2ZyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIl
ZGlsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWRpIgorICAgICAgd2hlbiA6aW50Cisg
ICAgICAgICIlZWRpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAg
d2hlbiAic3AiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVz
cGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc3AiCisgICAgICB3aGVuIDppbnQKKyAg
ICAgICAgIiVlc3AiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBl
bHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtp
bmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBGUFJl
Z2lzdGVySUQKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICByYWlzZSB1bmxlc3Mga2luZCA9
PSA6ZG91YmxlCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZhMCIsICJmciIKKyAg
ICAgICIleG1tMCIKKyAgICB3aGVuICJmdDEiLCAiZmExIgorICAgICAgIiV4bW0xIgorICAgIHdo
ZW4gImZ0MiIsICJmYTIiCisgICAgICAiJXhtbTIiCisgICAgd2hlbiAiZnQzIiwgImZhMyIKKyAg
ICAgICIleG1tMyIKKyAgICB3aGVuICJmdDQiCisgICAgICAiJXhtbTQiCisgICAgd2hlbiAiZnQ1
IgorICAgICAgIiV4bW01IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAor
ICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisg
IGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAg
ICIkI3t2YWx1ZX0iCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiI3t2
YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9u
WDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAi
I3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSkiCisgIGVuZAorICBkZWYg
eDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAor
ZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVl
CisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje29mZnNldC52YWx1
ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9LCAje2luZGV4Lng4Nk9wZXJhbmQoOmludCl9LCAj
e3NjYWxlfSkiCisgIGVuZAorCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4
ODZvcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisg
IGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZP
cGVyYW5kKGtpbmQpCisgICAgIiN7YWRkcmVzcy52YWx1ZX0iCisgIGVuZAorCisgIGRlZiB4ODZD
YWxsT3BlcmFuZChraW5kKQorICAgICIqI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAgZGVmIHg4NkxhYmVsCisgICAgc2FuaXRpemVMYWJlbE5h
bWUobmFtZSkKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgIHg4NkxhYmVs
CisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UKKyAgZGVmIHg4NkxhYmVs
CisgICAgIl9fb2FfIituYW1lWzEuLi0xXQorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtp
bmQpCisgICAgeDg2TGFiZWwKKyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24KKyAgZGVm
IHg4Nk9wZXJhbmRzKCpraW5kcykKKyAgICByYWlzZSB1bmxlc3Mga2luZHMuc2l6ZSA9PSBvcGVy
YW5kcy5zaXplCisgICAgcmVzdWx0ID0gW10KKyAgICBraW5kcy5zaXplLnRpbWVzIHsKKyAgICAg
IHwgaWR4IHwKKyAgICAgIHJlc3VsdCA8PCBvcGVyYW5kc1tpZHhdLng4Nk9wZXJhbmQoa2luZHNb
aWR4XSkKKyAgICB9CisgICAgcmVzdWx0LmpvaW4oIiwgIikKKyAgZW5kCisKKyAgZGVmIHg4NlN1
ZmZpeChraW5kKQorICAgIGNhc2Uga2luZAorICAgIHdoZW4gOmJ5dGUKKyAgICAgICJiIgorICAg
IHdoZW4gOmhhbGYKKyAgICAgICJ3IgorICAgIHdoZW4gOmludAorICAgICAgImwiCisgICAgd2hl
biA6ZG91YmxlCisgICAgICAic2QiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBu
dW1PcGVyYW5kcykKKyAgICBpZiBudW1PcGVyYW5kcyA9PSAzCisgICAgICBpZiBvcGVyYW5kc1sw
XSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0i
CisgICAgICBlbHNpZiBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1
dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFu
ZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAi
XHRtb3Yje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwg
I3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgJGFzbS5wdXRzICJcdCN7
b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4
Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJc
dCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZP
cChvcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBr
aW5kLCBvcGVyYW5kcy5zaXplKQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTaGlmdChvcGNv
ZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIG9yIG9wZXJhbmRz
WzBdID09IFJlZ2lzdGVySUQuZm9yTmFtZShuaWwsICJ0MiIpCisgICAgICAkYXNtLnB1dHMgIlx0
I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgICAgJGFzbS5wdXRzICJc
dCN7b3Bjb2RlfSAlY2wsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAk
YXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2RG91YmxlQnJhbmNoKGJyYW5jaE9w
Y29kZSwgbW9kZSkKKyAgICBjYXNlIG1vZGUKKyAgICB3aGVuIDpub3JtYWwKKyAgICAgICRhc20u
cHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiA6cmV2ZXJzZQorICAgICAg
JGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICBlbHNlCisgICAgICByYWlz
ZSBtb2RlLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0am5lICN7b3BlcmFuZHNb
Ml0ueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlKG9wY29k
ZVN1ZmZpeCwga2luZCkKKyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9w
ZXJhbmRzWzBdLnZhbHVlID09IDAgYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQgYW5k
IChvcGNvZGVTdWZmaXggPT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFz
bS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KGtpbmQpfSIKKyAgICBlbHNpZiBvcGVyYW5kc1sxXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJh
bmRzWzFdLnZhbHVlID09IDAgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChv
cGNvZGVTdWZmaXggPT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5w
dXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0Y21wI3t4ODZTdWZmaXgoa2luZCl9
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludEJyYW5jaChi
cmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShicmFuY2hPcGNvZGVb
MS4uLTFdLCBraW5kKQorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5k
c1syXS54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldChzZXRPcGNvZGUs
IG9wZXJhbmQpCisgICAgaWYgb3BlcmFuZC5zdXBwb3J0czhCaXRPblg4NgorICAgICAgJGFzbS5w
dXRzICJcdCN7c2V0T3Bjb2RlfSAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9IgorICAgICAg
JGFzbS5wdXRzICJcdG1vdnpibCAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJh
bmQueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHhjaGds
ICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHQj
e3NldE9wY29kZX0gJWFsIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAlYWwsICVlYXgiCisg
ICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4
IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlU2V0KHNldE9w
Y29kZSwga2luZCkKKyAgICBoYW5kbGVYODZJbnRDb21wYXJlKHNldE9wY29kZVszLi4tMV0sIGtp
bmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHNbMl0pCisgIGVuZAorICAK
KyAgZGVmIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgICAg
Y2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiAyCisgICAgICBtYXNrID0gSW1tZWRpYXRlLm5l
dyhjb2RlT3JpZ2luLCAtMSkKKyAgICB3aGVuIDMKKyAgICAgIG1hc2sgPSBvcGVyYW5kc1sxXQor
ICAgIGVsc2UKKyAgICAgIHJhaXNlICJFeHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMsIGJ1dCBnb3Qg
I3tvcGVyYW5kcy5zaXplfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICAgIAor
ICAgIGlmIG1hc2suaXNfYT8gSW1tZWRpYXRlIGFuZCBtYXNrLnZhbHVlID09IC0xCisgICAgICBp
ZiB2YWx1ZS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZT
dWZmaXgoa2luZCl9ICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFu
ZChraW5kKX0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiXHRjbXAje3g4NlN1ZmZp
eChraW5kKX0gJDAsICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBl
bHNlCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje21hc2sueDg2
T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIGhhbmRsZVg4NkJyYW5jaFRlc3QoYnJhbmNoT3Bjb2RlLCBraW5kKQorICAg
IGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7
b3BlcmFuZHMubGFzdC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldFRl
c3Qoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICBoYW5kbGVY
ODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kcy5sYXN0KQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVY
ODZPcEJyYW5jaChvcGNvZGUsIGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdp
dGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGNhc2Ug
b3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNd
CisgICAgd2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisg
ICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFu
Y2hPcGNvZGV9ICN7anVtcFRhcmdldC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRs
ZVg4NlN1YkJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9
PSA0IGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgJGFzbS5wdXRzICJcdG5l
Z2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRh
ZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMo
InN1YiN7eDg2U3VmZml4KGtpbmQpfSIsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGVu
ZAorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9
IG9wZXJhbmRzWzNdCisgICAgd2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0K
KyAgICBlbHNlCisgICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1
dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7anVtcFRhcmdldC54ODZMYWJlbH0iCisgIGVuZAorICAK
KyAgZGVmIGxvd2VyWDg2CisgICAgJGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICBj
YXNlIG9wY29kZQorICAgIHdoZW4gImFkZGkiLCAiYWRkcCIKKyAgICAgIGlmIG9wZXJhbmRzLnNp
emUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVu
bGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBv
cGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVl
ID09IDAKKyAgICAgICAgICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAg
ICAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0s
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAgZW5kCisgICAgICAg
IGVsc2UKKyAgICAgICAgICAkYXNtLnB1dHMgIlx0bGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5k
IG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJh
bmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJd
LmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJcdGxlYWwgKCN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICB1bmxl
c3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgJGFzbS5w
dXRzICJcdGFkZGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgICAgIGVuZAorICAg
ICAgZW5kCisgICAgd2hlbiAiYW5kaSIsICJhbmRwIgorICAgICAgaGFuZGxlWDg2T3AoImFuZGwi
LCA6aW50KQorICAgIHdoZW4gImxzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2FsbCIs
IDppbnQpCisgICAgd2hlbiAibXVsaSIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQg
b3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICRhc20ucHV0cyAiXHRpbXVsbCAj
e3g4Nk9wZXJhbmRzKDppbnQsIDppbnQsIDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgaGFu
ZGxlWDg2T3AoImltdWxsIiwgOmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gIm5lZ2kiCisgICAg
ICAkYXNtLnB1dHMgIlx0bmVnbCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJub3Rp
IgorICAgICAgJGFzbS5wdXRzICJcdG5vdGwgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hl
biAib3JpIiwgIm9ycCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJvcmwiLCA6aW50KQorICAgIHdoZW4g
InJzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2FybCIsIDppbnQpCisgICAgd2hlbiAi
dXJzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2hybCIsIDppbnQpCisgICAgd2hlbiAi
c3ViaSIsICJzdWJwIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sx
XSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgICAgZWxzZQorICAgICAgICBoYW5kbGVYODZPcCgic3VibCIsIDppbnQpCisgICAgICBlbmQK
KyAgICB3aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICBoYW5kbGVYODZPcCgieG9ybCIsIDppbnQp
CisgICAgd2hlbiAibG9hZGkiLCAic3RvcmVpIiwgImxvYWRwIiwgInN0b3JlcCIKKyAgICAgICRh
c20ucHV0cyAiXHRtb3ZsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgIHdoZW4gImxv
YWRiIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJsb2Fk
aCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6d2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpo
YWxmKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAic3RvcmVi
IgorICAgICAgJGFzbS5wdXRzICJcdG1vdmIgI3t4ODZPcGVyYW5kcyg6Ynl0ZSwgOmJ5dGUpfSIK
KyAgICB3aGVuICJsb2FkZCIsICJtb3ZlZCIsICJzdG9yZWQiCisgICAgICAkYXNtLnB1dHMgIlx0
bW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAiYWRkZCIK
KyAgICAgICRhc20ucHV0cyAiXHRhZGRzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUp
fSIKKyAgICB3aGVuICJkaXZkIgorICAgICAgJGFzbS5wdXRzICJcdGRpdnNkICN7eDg2T3BlcmFu
ZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInN1YmQiCisgICAgICAkYXNtLnB1dHMg
Ilx0c3Vic2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAibXVs
ZCIKKyAgICAgICRhc20ucHV0cyAiXHRtdWxzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3Vi
bGUpfSIKKyAgICB3aGVuICJzcXJ0ZCIKKyAgICAgICRhc20ucHV0cyAiXHRzcXJ0c2QgI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpk
b3VibGUpfSIKKyAgICB3aGVuICJjaTJkIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHNpMnNkICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0iCisgICAgd2hlbiAiYmRlcSIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJl
bC51bmlxdWUKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAg
ICAkYXNtLnB1dHMgIlx0anAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9y
ZGVyZWQpLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNl
Lm5ldyhjb2RlT3JpZ2luLCBvcGVyYW5kc1syXSkueDg2TGFiZWx9IgorICAgICAgaXNVbm9yZGVy
ZWQubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRuZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVC
cmFuY2goImpuZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRndCIKKyAgICAgIGhhbmRsZVg4NkRv
dWJsZUJyYW5jaCgiamEiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgIGhhbmRs
ZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0IgorICAgICAg
aGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHRlcSIK
KyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOnJldmVyc2UpCisgICAgd2hlbiAi
YmRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwpCisgICAg
d2hlbiAiYmRuZXF1biIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUKKyAg
ICAgIGlzRXF1YWwgPSBMb2NhbExhYmVsLnVuaXF1ZQorICAgICAgJGFzbS5wdXRzICJcdHVjb21p
c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje0xhYmVsUmVmZXJlbmNl
Lm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRz
ICJcdGplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzRXF1YWwpLng4NkxhYmVs
fSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgICAgJGFzbS5wdXRzICJcdGpt
cCAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgIGlzRXF1YWwubG93ZXIoIlg4NiIpCisg
ICAgd2hlbiAiYmRndHVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpyZXZl
cnNlKQorICAgIHdoZW4gImJkZ3RlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJq
YmUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGx0dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVC
cmFuY2goImpiIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0ZXF1biIKKyAgICAgIGhhbmRsZVg4
NkRvdWJsZUJyYW5jaCgiamJlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJidGQyaSIKKyAgICAgICRh
c20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRjbXBs
ICQweDgwMDAwMDAwICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNt
LnB1dHMgIlx0amUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgd2hlbiAidGQyaSIKKyAg
ICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiY2QyaSIK
KyAgICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpk
b3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0
cyAiXHR0ZXN0bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7b3BlcmFuZHNbMl0u
eDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJcdGN2dHNpMnNkICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0
anAgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0am5lICN7b3Bl
cmFuZHNbMl0ueDg2TGFiZWx9IgorICAgIHdoZW4gIm1vdmR6IgorICAgICAgJGFzbS5wdXRzICJc
dHhvcnBkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAicG9wIgorICAgICAgJGFzbS5wdXRzICJc
dHBvcCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInB1c2giCisg
ICAgICAkYXNtLnB1dHMgIlx0cHVzaCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgIHdoZW4gIm1vdmUiLCAic3hpMnAiLCAienhpMnAiCisgICAgICBpZiBJbW1lZGlhdGUubmV3
KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0gYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQK
KyAgICAgICAgJGFzbS5wdXRzICJcdHhvcmwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQp
fSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRz
WzBdICE9IG9wZXJhbmRzWzFdCisgICAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7eDg2T3BlcmFu
ZHMoOmludCwgOmludCl9IgorICAgICAgZW5kCisgICAgd2hlbiAibm9wIgorICAgICAgJGFzbS5w
dXRzICJcdG5vcCIKKyAgICB3aGVuICJiaWVxIiwgImJwZXEiCisgICAgICBoYW5kbGVYODZJbnRC
cmFuY2goImplIiwgOmludCkKKyAgICB3aGVuICJiaW5lcSIsICJicG5lcSIKKyAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiam5lIiwgOmludCkKKyAgICB3aGVuICJiaWEiLCAiYnBhIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDppbnQpCisgICAgd2hlbiAiYmlhZXEiLCAiYnBhZXEi
CisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphZSIsIDppbnQpCisgICAgd2hlbiAiYmliIiwg
ImJwYiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6aW50KQorICAgIHdoZW4gImJp
YmVxIiwgImJwYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6aW50KQorICAg
IHdoZW4gImJpZ3QiLCAiYnBndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamciLCA6aW50
KQorICAgIHdoZW4gImJpZ3RlcSIsICJicGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpnZSIsIDppbnQpCisgICAgd2hlbiAiYmlsdCIsICJicGx0IgorICAgICAgaGFuZGxlWDg2SW50
QnJhbmNoKCJqbCIsIDppbnQpCisgICAgd2hlbiAiYmlsdGVxIiwgImJwbHRlcSIKKyAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiamxlIiwgOmludCkKKyAgICB3aGVuICJiYmVxIgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqZSIsIDpieXRlKQorICAgIHdoZW4gImJibmVxIgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmEiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImphIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhZXEiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImphZSIsIDpieXRlKQorICAgIHdoZW4gImJiYiIKKyAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiamIiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmJlcSIKKyAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiamJlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJndCIKKyAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiamciLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0ZXEiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImpnZSIsIDpieXRlKQorICAgIHdoZW4gImJibHQiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImpsIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdGVxIgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqbHRlcSIsIDpieXRlKQorICAgIHdoZW4gImJ0aW8iLCAiYnRwbyIK
KyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmludCkKKyAgICB3aGVuICJidGlzIiwg
ImJ0cHMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDppbnQpCisgICAgd2hlbiAi
YnRpeiIsICJidHB6IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6aW50KQorICAg
IHdoZW4gImJ0aW56IiwgImJ0cG56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56Iiwg
OmludCkKKyAgICB3aGVuICJidGJvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6
Ynl0ZSkKKyAgICB3aGVuICJidGJzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6
Ynl0ZSkKKyAgICB3aGVuICJidGJ6IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6
Ynl0ZSkKKyAgICB3aGVuICJidGJueiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIs
IDpieXRlKQorICAgIHdoZW4gImptcCIKKyAgICAgICRhc20ucHV0cyAiXHRqbXAgI3tvcGVyYW5k
c1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiYmFkZGlvIiwgImJhZGRwbyIK
KyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJi
YWRkaXMiLCAiYmFkZHBzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianMiLCA6
aW50KQorICAgIHdoZW4gImJhZGRpeiIsICJiYWRkcHoiCisgICAgICBoYW5kbGVYODZPcEJyYW5j
aCgiYWRkbCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlueiIsICJiYWRkcG56IgorICAg
ICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJic3Vi
aW8iCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpvIiwgOmludCkKKyAgICB3aGVuICJic3Vi
aXMiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpzIiwgOmludCkKKyAgICB3aGVuICJic3Vi
aXoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImp6IiwgOmludCkKKyAgICB3aGVuICJic3Vi
aW56IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbnoiLCA6aW50KQorICAgIHdoZW4gImJt
dWxpbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbyIsIDppbnQpCisgICAg
d2hlbiAiYm11bGlzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpzIiwgOmlu
dCkKKyAgICB3aGVuICJibXVsaXoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAi
anoiLCA6aW50KQorICAgIHdoZW4gImJtdWxpbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgi
aW11bGwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJib3JpbyIKKyAgICAgIGhhbmRsZVg4Nk9w
QnJhbmNoKCJvcmwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJvcmlzIgorICAgICAgaGFuZGxl
WDg2T3BCcmFuY2goIm9ybCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXoiCisgICAgICBo
YW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJib3JpbnoiCisg
ICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYnJl
YWsiCisgICAgICAkYXNtLnB1dHMgIlx0aW50ICQzIgorICAgIHdoZW4gImNhbGwiCisgICAgICAk
YXNtLnB1dHMgIlx0Y2FsbCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAg
ICB3aGVuICJyZXQiCisgICAgICAkYXNtLnB1dHMgIlx0cmV0IgorICAgIHdoZW4gImNpZXEiLCAi
Y3BlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGUiLCA6aW50KQorICAgIHdo
ZW4gImNpbmVxIiwgImNwbmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bmUi
LCA6aW50KQorICAgIHdoZW4gImNpYSIsICJjcGEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJl
U2V0KCJzZXRhIiwgOmludCkKKyAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAgICAgIGhhbmRs
ZVg4NkludENvbXBhcmVTZXQoInNldGFlIiwgOmludCkKKyAgICB3aGVuICJjaWIiLCAiY3BiIgor
ICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YiIsIDppbnQpCisgICAgd2hlbiAiY2li
ZXEiLCAiY3BiZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiZSIsIDppbnQp
CisgICAgd2hlbiAiY2lndCIsICJjcGd0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgi
c2V0ZyIsIDppbnQpCisgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIKKyAgICAgIGhhbmRsZVg4
NkludENvbXBhcmVTZXQoInNldGdlIiwgOmludCkKKyAgICB3aGVuICJjaWx0IiwgImNwbHQiCisg
ICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsIiwgOmludCkKKyAgICB3aGVuICJjaWx0
ZXEiLCAiY3BsdGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bGUiLCA6aW50
KQorICAgIHdoZW4gInRpbyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6aW50KQor
ICAgIHdoZW4gInRpcyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6aW50KQorICAg
IHdoZW4gInRpeiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6aW50KQorICAgIHdo
ZW4gInRpbnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDppbnQpCisgICAgd2hl
biAidGJvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDpieXRlKQorICAgIHdoZW4g
InRicyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0
YnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmJ5dGUpCisgICAgd2hlbiAidGJu
eiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmJ5dGUpCisgICAgd2hlbiAicGVl
ayIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fSglZXNw
KSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJwb2tlIgorICAg
ICAgJGFzbS5wdXRzICJcdG1vdmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tv
cGVyYW5kc1sxXS52YWx1ZSAqIDR9KCVlc3ApIgorICAgIHdoZW4gImNkcWkiCisgICAgICAkYXNt
LnB1dHMgIlx0Y2RxIgorICAgIHdoZW4gImlkaXZpIgorICAgICAgJGFzbS5wdXRzICJcdGlkaXZs
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiZmlpMmQiCisgICAg
ICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29w
ZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMg
Ilx0cHNsbHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwb3IgJXhtbTcsICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiZmQyaWkiCisgICAgICAk
YXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNkICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFzbS5wdXRz
ICJcdHBzcmxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgJXhtbTcsICN7
b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgcmFpc2UgIkJh
ZCBvcGNvZGU6ICN7b3Bjb2RlfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTA0NjQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEV4ZWN1dGFibGVfaAogCiAjaW5jbHVkZSAi
Q2FsbERhdGEuaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTm9k
ZXMuaCIKQEAgLTM5LDEyICs0MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1
Z2dlcjsKICAgICBjbGFzcyBFdmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIEZ1bmN0aW9uQ29kZUJs
b2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFt
Q29kZUJsb2NrOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwogCiAgICAgc3RydWN0IEV4Y2Vw
dGlvbkluZm87CiAgICAgCi0gICAgZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZv
ckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKICAgICBlbnVtIENvbXBpbGF0aW9uS2luZCB7IEZp
cnN0Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21waWxhdGlvbiB9OwogCiAgICAgaW5saW5lIGJv
b2wgaXNDYWxsKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAgLTMxOSw2ICszMjAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBw
dWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFi
bGUgQmFzZTsKIApAQCAtMzg0LDYgKzM4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAK
ICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsK
KyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6
CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC00NTMsNiArNDU2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBw
dWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAg
ICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24gMTA0NjQ3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTQXJyYXk7CisgICAgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgc3RydWN0IFNwYXJzZUFycmF5RW50cnkgOiBw
dWJsaWMgV3JpdGVCYXJyaWVyPFVua25vd24+IHsKICAgICAgICAgdHlwZWRlZiBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4gQmFzZTsKQEAgLTEyNCw2ICsxMjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB9OwogCiAgICAgY2xhc3MgSlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5k
IGNsYXNzIFdhbGtlcjsKIAogICAgIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxMDQ2NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsMTAgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0gICAgY2xhc3Mg
U3RydWN0dXJlOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQ
cm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CisgICAgY2xh
c3MgU3RydWN0dXJlOwogCiAgICAgZW51bSBFbnVtZXJhdGlvbk1vZGUgewogICAgICAgICBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzLApAQCAtMTY0LDYgKzE2NSw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAK
ICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworICAgICAgICAKICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsKICAgICAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CiAgICAgfTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDEwNDY0
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5j
dGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBKU0FjdGl2YXRpb247CiAgICAgY2xhc3MgSlNHbG9i
YWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5h
dGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgU291cmNlQ29kZTsKICAgICBuYW1lc3BhY2UgREZH
IHsKQEAgLTE0MCw2ICsxNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToK
KyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAg
ICAgICAgIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIAogICAgICAgICBz
dGF0aWMgSlNWYWx1ZSBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3Qg
SWRlbnRpZmllciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMDQ2NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQx
LDggQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgICwga2V5
d29yZHMoYWRvcHRQdHIobmV3IEtleXdvcmRzKHRoaXMpKSkKICAgICAsIGludGVycHJldGVyKDAp
CiAgICAgLCBoZWFwKHRoaXMsIGhlYXBTaXplKQorICAgICwganNBcnJheUNsYXNzSW5mbygmSlNB
cnJheTo6c19pbmZvKQorICAgICwganNGaW5hbE9iamVjdENsYXNzSW5mbygmSlNGaW5hbE9iamVj
dDo6c19pbmZvKQogI2lmIEVOQUJMRShERkdfSklUKQogICAgICwgc2l6ZU9mTGFzdFNjcmF0Y2hC
dWZmZXIoMCkKICNlbmRpZgpAQCAtMjE4LDcgKzIyMCw3IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9i
YWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICBqaXRTdHVicyA9IGFkb3B0UHRyKG5ldyBKSVRUaHVu
a3ModGhpcykpOwogI2VuZGlmCiAKLSAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSh0aGlzLT5j
YW5Vc2VKSVQoKSk7CisgICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUoJmxsaW50RGF0YSwgdGhp
cy0+Y2FuVXNlSklUKCkpOwogCiAgICAgaGVhcC5ub3RpZnlJc1NhZmVUb0NvbGxlY3QoKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShy
ZXZpc2lvbiAxMDQ2NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTUgKzMwLDE2IEBACiAjZGVmaW5lIEpTR2xv
YmFsRGF0YV9oCiAKICNpbmNsdWRlICJDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgiCi0j
aW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNp
bmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1
ZGUgIlN0cm9uZy5oIgorI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkpJVFN0dWJz
LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1
ZGUgIk51bWVyaWNTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVk
ZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVGVybWluYXRvci5oIgogI2luY2x1ZGUgIlRpbWVvdXRD
aGVja2VyLmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgpAQCAtNjUsNiArNjYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVj
dDsKICAgICBjbGFzcyBLZXl3b3JkczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAg
ICBjbGFzcyBSZWdFeHBDYWNoZTsKQEAgLTI0OCw2ICsyNTAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEhlYXAgaGVhcDsKIAogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKKworICAg
ICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzQXJyYXlDbGFzc0luZm87CisgICAgICAgIGNv
bnN0IENsYXNzSW5mbyogY29uc3QganNGaW5hbE9iamVjdENsYXNzSW5mbzsKKworICAgICAgICBM
TEludDo6RGF0YSBsbGludERhdGE7CisKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZXR1cm5B
ZGRyZXNzUHRyIGV4Y2VwdGlvbkxvY2F0aW9uOwogICAgICAgICBKU1ZhbHVlIGhvc3RDYWxsUmV0
dXJuVmFsdWU7CkBAIC0zNTIsNiArMzYwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjdW5kZWYgcmVn
aXN0ZXJUeXBlZEFycmF5RnVuY3Rpb24KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU0dsb2JhbERh
dGEoR2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUpOwogICAgICAgICBz
dGF0aWMgSlNHbG9iYWxEYXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwogICAgICAgICB2
b2lkIGNyZWF0ZU5hdGl2ZVRodW5rKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDEwNDY0NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5
cGU7CiAgICAgY2xhc3MgR2V0dGVyU2V0dGVyOwogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFJlZ0V4
cENvbnN0cnVjdG9yOwpAQCAtMzM1LDYgKzMzNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIGFkZFN0YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiwgaW50IGNvdW50KTsK
IAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CisgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogRm9sZCByZXNldCBpbnRvIGluaXQuCiAg
ICAgICAgIHZvaWQgaW5pdChKU09iamVjdCogdGhpc1ZhbHVlKTsKICAgICAgICAgdm9pZCByZXNl
dChKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgJKHJldmlzaW9uIDEwNDY0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgY2xhc3MgR2V0dGVyU2V0dGVyOwogICAgIGNsYXNzIEhhc2hFbnRyeTsK
ICAgICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBjbGFzcyBNYXJrZWRCbG9jazsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0
b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CkBAIC0yNjAsNiArMjYxLDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSos
IFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKTsKIAogICAgIHByaXZhdGU6CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAv
LyBOb2JvZHkgc2hvdWxkIGV2ZXIgYXNrIGFueSBvZiB0aGVzZSBxdWVzdGlvbnMgb24gc29tZXRo
aW5nIGFscmVhZHkga25vd24gdG8gYmUgYSBKU09iamVjdC4KICAgICAgICAgdXNpbmcgSlNDZWxs
Ojppc0FQSVZhbHVlV3JhcHBlcjsKICAgICAgICAgdXNpbmcgSlNDZWxsOjppc0dldHRlclNldHRl
cjsKQEAgLTM3MSw2ICszNzQsOCBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxp
bmVTdG9yCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBwcml2
YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAg
ICAKICAgICAgICAgZXhwbGljaXQgSlNGaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxE
YXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5lU3RvcmFnZSkKICAgICAgICAgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaAkocmV2aXNpb24gMTA0NjQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBKU09i
amVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKSVQ7CkBAIC05Niw2ICs5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAg
ICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgICAgICAKICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hl
YWJsZVNsb3QpOwogCiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FjaGVkU3Ry
dWN0dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShy
ZXZpc2lvbiAxMDQ2NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIEpTU3RyaW5nOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAog
ICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSopOwogICAgIEpTU3RyaW5n
KiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSopOwpAQCAtMjQxLDYgKzI0Miw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZShFeGVjU3Rh
dGUqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlOChMQ2hhciopIGNv
bnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2UoVUNoYXIqKSBjb25zdDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9u
IDEwNDY0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAko
d29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAg
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMTsgLy8gV2ViQ29yZSB1c2VzIE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgdG8gbWFrZSBkb2N1bWVudC5hbGwgdW5kZXRlY3RhYmxlLgogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPSAxIDw8IDE7CiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIE92ZXJyaWRlc0hhc0luc3RhbmNlID0gMSA8PCAyOwpAQCAtODcs
NiArODksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIGJvb2wgaXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFn
IDw9ICgxIDw8IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBmbGFnOyB9CiAgICAgICAgIGJvb2wgaXNT
ZXRPbkZsYWdzMih1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnID49ICgxIDw8IDgp
KTsgcmV0dXJuIG1fZmxhZ3MyICYgKGZsYWcgPj4gOCk7IH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMTA0
NjQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAK
ICAgICBjbGFzcyBKU1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
ICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxP
YmplY3QgQmFzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hh
aW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNo
YWluLmgJKHJldmlzaW9uIDEwNDY0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Njb3BlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7
CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIGNsYXNzIFNjb3BlQ2hhaW5JdGVyYXRvcjsKICAgICBjbGFzcyBTbG90VmlzaXRvcjsKICAg
ICAKQEAgLTkxLDYgKzkyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19F
WFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGls
ZHJlbjsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAkocmV2aXNpb24gMTA0NjQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
UHJvcGVydHlOYW1lQXJyYXk7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhOwogICAg
IGNsYXNzIFN0cnVjdHVyZUNoYWluOwpAQCAtMTk2LDYgKzE5Nyw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5m
byopOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIFN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMTA0NjQ3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBjbGFz
cyBTdHJ1Y3R1cmVDaGFpbiA6IHB1YmxpYyBKU0NlbGwgewpAQCAtNzQsNiArNzUsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZUNo
YWluKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiA+IG1fdmVjdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2
aXNpb24gMTA0NjQ3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3
b3JraW5nIGNvcHkpCkBAIC05MTYsNiArOTE2LDEyIEBACiAjZGVmaW5lIEVOQUJMRV9KSVQgMQog
I2VuZGlmCiAKKy8qIE9uIHNvbWUgb2YgdGhlIHBsYXRmb3JtcyB3aGVyZSB3ZSBoYXZlIGEgSklU
LCB3ZSB3YW50IHRvIGFsc28gaGF2ZSB0aGUgCisgICBsb3ctbGV2ZWwgaW50ZXJwcmV0ZXIuICov
CisjaWYgRU5BQkxFKEpJVCkgJiYgUExBVEZPUk0oTUFDKSAmJiBVU0UoSlNWQUxVRTMyXzY0KQor
I2RlZmluZSBFTkFCTEVfTExJTlQgMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfREZH
X0pJVCkgJiYgRU5BQkxFKEpJVCkKIC8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBYODYgYW5kIFg4
Nl82NC4gIE9ubHkgdGVzdGVkIG9uIE1hYyBhbmQgR05VL0xpbnV4LiAqLwogI2lmIChDUFUoWDg2
KSB8fCBDUFUoWDg2XzY0KSkgJiYgKFBMQVRGT1JNKE1BQykgfHwgT1MoTElOVVgpKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAx
MDQ2NDcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZT
dHJpbmcgKiBDRlN0cmkKIC8vIExhbmRpbmcgdGhlIGZpbGUgbW92ZXMgaW4gb25lIHBhdGNoLCB3
aWxsIGZvbGxvdyBvbiB3aXRoIHBhdGNoZXMgdG8gY2hhbmdlIHRoZSBuYW1lc3BhY2VzLgogbmFt
ZXNwYWNlIEpTQyB7CiBzdHJ1Y3QgSWRlbnRpZmllckNTdHJpbmdUcmFuc2xhdG9yOworY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJZGVu
dGlmaWVyQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiBzdHJ1Y3QgSWRlbnRpZmllckxDaGFyRnJvbVVD
aGFyVHJhbnNsYXRvcjsKIH0KQEAgLTcwLDcgKzcxLDggQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAg
ICAgZnJpZW5kIHN0cnVjdCBXVEY6Okhhc2hBbmRVVEY4Q2hhcmFjdGVyc1RyYW5zbGF0b3I7CiAg
ICAgZnJpZW5kIHN0cnVjdCBXVEY6OlVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKICAgICBmcmllbmQg
Y2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKLQorICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKKyAgICAKIHByaXZhdGU6CiAgICAgZW51bSBCdWZmZXJPd25lcnNoaXAg
ewogICAgICAgICBCdWZmZXJJbnRlcm5hbCwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122140</attachid>
            <date>2012-01-11 17:31:35 -0800</date>
            <delta_ts>2012-01-11 21:07:34 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_11.diff</filename>
            <type>text/plain</type>
            <size>357685</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0Nzc2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2OSBA
QAorMjAxMi0wMS0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV09SSyBJTiBQUk9HUkVTUy4gIFN0aWxsIG5lZWQgdG8gd3JpdGUgYm9vdHN0cmFw
IGdsdWUuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVy
L0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2Rl
QmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNl
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c2hyaW5rVG9GaXQpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxp
bmtJbmNvbWluZ0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNl
dCk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAg
KEpTQzo6RXZhbENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNv
ZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5lVmVyc2lvbik6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6bGlua0luY29taW5nQ2FsbCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Ynl0
ZWNvZGVPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAg
IChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvTExJ
bnRDYWxsTGlua0luZm8uaDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZv
OjpMTEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjp+
TExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6aXNM
aW5rZWQpOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6dW5saW5rKToKKyAgICAg
ICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29s
dmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFz
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlz
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDb25zdHJ1Y3QpOgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAg
ICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxl
T3Bjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaGVh
cC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBo
ZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6Cisg
ICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y3VycmVudFZQQyk6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6fkludGVycHJl
dGVyKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFz
dENhbGxlcik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAg
KEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVy
OjpnZXRPcGNvZGVJRCk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjplbmFibGVkKToKKyAg
ICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaDoKKyAgICAgICAgKiBqaXQvSG9zdENh
bGxSZXR1cm5WYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpnZXRIb3N0Q2FsbFJldHVy
blZhbHVlV2l0aEV4ZWNTdGF0ZSk6CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUu
aDogQWRkZWQuCisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6OkpJVENv
ZGU6OmlzT3B0aW1pemluZ0pJVCk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OmlzQmFzZWxpbmVD
b2RlKToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Ompp
dFRocm93KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJ
TkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogbGxpbnQ6IEFkZGVkLgorICAgICAgICAqIGxs
aW50L0xMSW50Q29tbW9uLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6
IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6RGF0YSk6CisgICAgICAgIChKU0M6
OkxMSW50OjpEYXRhOjp+RGF0YSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6IEFkZGVk
LgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6Om9wY29kZU1hcCk6CisgICAgICAgICogbGxpbnQvTExJ
bnRFbnRyeXBvaW50cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0RnVuY3Rp
b25FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEV2YWxFbnRyeXBvaW50KToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmdldFByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKiBs
bGludC9MTEludEVudHJ5cG9pbnRzLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50RXhj
ZXB0aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6aW50ZXJwcmV0ZXJUaHJv
dyk6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9u
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpM
TEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljQ2Fs
bCk6CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6IEFkZGVkLgorICAgICAgICAqIGxs
aW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRPZmZzZXRz
RXh0cmFjdG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBsbGludC9MTElu
dFRodW5rcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dp
dGhKdW1wVG8pOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVu
a0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVu
dHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxs
QXJpdHlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNv
bnN0cnVjdEFyaXR5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZXZhbEVu
dHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6cHJvZ3JhbUVudHJ5VGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6IEFkZGVkLgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRlZC4KKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtOiBBZGRlZC4K
KyAgICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtL2FzbS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc3QucmI6IEFkZGVkLgor
ICAgICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxp
bmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYjogQWRkZWQuCisgICAgICAgICogb2Zm
bGluZWFzbS9pbnN0cnVjdGlvbnMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb2Zm
c2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20v
b2Zmc2V0cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9wYXJzZXIucmI6IEFkZGVk
LgorICAgICAgICAqIG9mZmxpbmVhc20vcmVnaXN0ZXJzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBv
ZmZsaW5lYXNtL3NldHRpbmdzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3RyYW5z
Zm9ybS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYucmI6IEFkZGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOiBBZGRlZC4KKyAgICAgICAg
KiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0
aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6Cisg
ICAgICAgIChKU0M6OmpldHRpc29uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6c2FtcGxpbmdE
ZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5h
bCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVj
dEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNw
cDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6Cisg
ICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgICogcnVudGltZS9KU1Zhcmlh
YmxlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6
CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1w
bC5oOgorCiAyMDEyLTAxLTExICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgQ29kZSBkdXBsaWNhdGlvbiBmb3IgaW52b2tpbmcgdGhlIEpJVCBhbmQgREZHIHNob3Vs
ZCBiZSByZWR1Y2VkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQkocmV2aXNpb24gMTA0Nzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAo
QykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSwgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTYwLDYgKzYwLDcgQEAgYWxsIDogXAogICAgIFN0cmluZ0NvbnN0cnVjdG9yLmx1
dC5oIFwKICAgICBTdHJpbmdQcm90b3R5cGUubHV0LmggXAogICAgIGRvY3MvYnl0ZWNvZGUuaHRt
bCBcCisgICAgTExJbnRBc3NlbWJseS5oLlBIT05ZIFwKICMKIAogIyBsb29rdXAgdGFibGVzIGZv
ciBjbGFzc2VzCkBAIC0xMDQsMyArMTA1LDExIEBAIEhlYWRlckRldGVjdGlvbi5oIDoKIAllY2hv
ID4gJEAKIAogZW5kaWYKKworIyBBc3NlbWJseSBmb3IgdGhlIExvd0xldmVsSW50ZXJwcmV0ZXIK
KworIyBUaGlzIGJ1aWxkcyBldmVyeSB0aW1lIGJlY2F1c2UgdGhlcmUgaXMgbm8gZWFzeSB3YXkg
dG8gZGVzY3JpYmUKKyMgdGhlIGRlcGVuZGVuY2llcyB1c2luZyBtYWtlLiBJbnN0ZWFkLCB0aGUg
YXNzZW1ibGVyIHdpbGwgZGVjaWRlIG9uCisjIGl0cyBvd24gd2hldGhlciBvciBub3QgaXQgZGlk
IGFueXRoaW5nIHRoYXQgd291bGQgbGVhZCB0byBhIGNoYW5nZS4KK0xMSW50QXNzZW1ibHkuaC5Q
SE9OWToKKwlydWJ5ICQoSmF2YVNjcmlwdENvcmUpL29mZmxpbmVhc20vYXNtLnJiICQoSmF2YVNj
cmlwdENvcmUpL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9KU0NMTEludE9mZnNldHNFeHRyYWN0b3IgPiBMTEludEFzc2VtYmx5LmgKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDQ3NzUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNyw2ICs3LDE1IEBACiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJY
QWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8q
IExMSW50IE9mZnNldHMgKi8gPSB7CisJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQli
dWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwQUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJMTEludCBPZmZzZXRz
IiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAv
KiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCisJCQkpOworCQkJbmFtZSA9ICJMTEludCBP
ZmZzZXRzIjsKKwkJCXByb2R1Y3ROYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CisJCX07CiAJCTY1
RkIzRjY2MDlEMTFFOTEwMEY0OURFQiAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNjVGQjNG
NzcwOUQxMUVCRDAwRjQ5REVCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdn
cmVnYXRlVGFyZ2V0ICJEZXJpdmVkIFNvdXJjZXMiICovOwpAQCAtMTQsNiArMjMsOSBAQAogCQkJ
CTY1RkIzRjY1MDlEMTFFOTEwMEY0OURFQiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8s
CiAJCQkJNUQzNURFRTEwQzdDMTQwQjAwODY0OEIyIC8qIEdlbmVyYXRlIERUcmFjZSBoZWFkZXIg
Ki8sCiAJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4MEI0MTRCQTgyMTQwMEJG
RTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZl
ZCBTb3VyY2VzIjsKIAkJCXByb2R1Y3ROYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCX07CkBA
IC00OCw2ICs2MCwxMCBAQAogCQkwQkFDOTRBMDEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVz
dHJpY3Rpb25WZXJpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVy
aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwQkNEODM1NzE0ODU4NDUyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkNEODM1NDE0ODU4NDEyMDBF
QTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJGMjhBMjkxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1p
dHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJG
MjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovOyB9OworCQkwRjBCODM5
QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYg
LyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi87IH07CisJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0
RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
MEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYg
LyogTExJbnRUaHVua3MuY3BwICovOyB9OworCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyog
TExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0E3MTRCQ0Y1MDcw
MDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTkxNEJD
RjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlcklu
Zm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQUExNEJDRjVCOTAw
ODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTgsNiArNzQsNyBAQAogCQkwRjBCODNCNTE0QkNG
ODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0
aG9kQ2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZv
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNC
NjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVC
NEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAv
KiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAv
KiBMTEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZv
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYx
NUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdE
IC8qIENvbW1vblNsb3dQYXRocy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGMTZENzI2MTQyQzM5QzAwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNkQ3MjQx
NDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCTBGMjFDMjY4MTRCRTVG
NjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNzEsNiAr
ODgsMTkgQEAKIAkJMEY0MzE3MzgxNDZCQUM2OTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MzE3MzYx
NDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4MDgzMTRC
QTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRF
eGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50
RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEE0MTRCQTdG
OEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVs
cGVycy5jcHAgKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tdW51c2VkLXBh
cmFtZXRlciI7IH07IH07CisJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBl
cnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4
MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIg
LyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwICovOyB9OworCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJ
bnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICov
OyB9OworCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21tb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM1MTRCQkIxNjkw
MEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxp
bmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBD
QzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNzE0QkJCMTY5MDBCRkUy
NzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi87IH07CisJCTBGNDY4MENEMTRCQkIxN0Qw
MEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2
ZWxJbnRlcnByZXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0UxNEJCQjNE
MTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi87IH07CisJCTBGNDY4MEQzMTRCQkQxNjcwMEJG
RTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBENDE0QkJE
MjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyog
SG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi87IH07CisJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3
MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1
cm5WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVGMDhDRTE0
NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjIwMTc0MTQzRkNEMzMwMDY4
Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjIwMTcyMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdWYXJp
YWJsZUFjY2Vzc0RhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjYyMDE3NTE0M0ZDRDM3MDA2OEI3N0MgLyogREZHT3BlcmFuZHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjIwMTcxMTQzRkNE
MkYwMDY4Qjc3QyAvKiBERkdPcGVyYW5kcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC0zNzEsNyArNDAxLDcgQEAKIAkJODZCOTlBRTMxMTdFNTc4
MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZCOTlBRTExMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2
QkIwOUMwMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJFMTM4RTM4MUIwMDU2NzAyRiAv
KiBERkdSZXBhdGNoLmNwcCAqLzsgfTsKIAkJODZCQjA5QzExMzhFMzgxQjAwNTY3MDJGIC8qIERG
R1JlcGF0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2QkIwOUJGMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggKi87IH07Ci0JCTg2QzM2
RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8q
IE1hY3JvQXNzZW1ibGVyLmggKi87IH07CisJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBN
YWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTAxMUEy
MTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OEREMTFBMjEzRUUwMDA3RjdGMCAvKiBN
YWNyb0Fzc2VtYmxlckFSTS5jcHAgKi87IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAv
KiBNYWNyb0Fzc2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1J
UFMuaCAqLzsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERG
MTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IH07CkBAIC03MzEsNiArNzYx
LDIwIEBACiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29u
dGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8q
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Q
cm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQ
cm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0
cmluZyA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSAiTExJbnQg
T2Zmc2V0cyI7CisJCX07CisJCTBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQlj
b250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmpl
Y3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2
ODA4RTE0QkE3RTVFMDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gSlNDTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworCQl9OwogCQkxNDEyMTRCRTBBNDkxOTBFMDA0ODAyNTUgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29u
dGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0
ICovOwpAQCAtNzc2LDYgKzgyMCwxNSBAQAogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwor
CQkwRjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0g
UEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CisJCQlkc3RQYXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJmb2xkZXJTcGVj
ID0gMDsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAxOworCQl9OwogCQk1REJCMTUxMTEzMUQwQjEzMDA1NkFEMzYgLyogQ29weSBT
dXBwb3J0IFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CiAJ
CQlidWlsZEFjdGlvbk1hc2sgPSAxMjsKQEAgLTgxNiw2ICs4NjksMTAgQEAKIAkJMEJBQzk0OUUx
MzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVt
cG9yYXJ5Q2hhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFy
eUNoYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkYyOEEyODExQTMzREMz
MDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBTaXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYw
QjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5jcHA7IHBhdGggPSBs
bGludC9MTEludEVudHJ5cG9pbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5oOyBwYXRoID0gbGxpbnQv
TExJbnRFbnRyeXBvaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5
NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTExJbnRUaHVua3MuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRUaHVu
a3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5ODE0QkNGNDVBMDA4
ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TExJbnRUaHVua3MuaDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlVHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlckluZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJl
c3Npb25SYW5nZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwcmVz
c2lvblJhbmdlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODI2LDYgKzg4
Myw3IEBACiAJCTBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0aG9kQ2FsbExpbmtJbmZvLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAv
KiBHbG9iYWxSZXNvbHZlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
bG9iYWxSZXNvbHZlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNC
ODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNv
ZGVPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwRkM0NTgxNEJEMTVG
MTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IExMSW50Q2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uU2xvd1BhdGhzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQml0VmVjdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8q
IEpJVERyaXZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVREcml2ZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgzOSw2ICs4OTcsMjAgQEAKIAkJMEY0
MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBMaXN0YWJsZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklURXhjZXB0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEV4
Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOEYxNEJBN0U1
RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxl
IjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOyBz
b3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkwRjQ2ODA5RDE0QkE3RjgyMDBC
RkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5jcHA7IHBhdGggPSBsbGludC9MTEludEV4Y2VwdGlv
bnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RTE0QkE3RjgyMDBC
RkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IExMSW50RXhjZXB0aW9ucy5oOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBM
TEludEhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJ
bnRIZWxwZXJzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVycy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBl
cnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRIZWxwZXJzLmg7IHBh
dGggPSBsbGludC9MTEludEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwOyBwYXRoID0gbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50Q29tbW9uLmg7IHBhdGgg
PSBsbGludC9MTEludENvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBwYXRoID0g
bGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIu
Y3BwOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVy
cHJldGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExvd0xldmVsSW50ZXJw
cmV0ZXIuaDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludERhdGEuY3BwOyBw
YXRoID0gbGxpbnQvTExJbnREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMTEludERhdGEuaDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyog
SG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyogREZH
Qnl0ZUNvZGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCeXRl
Q29kZUNhY2hlLmg7IHBhdGggPSBkZmcvREZHQnl0ZUNvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25h
bEZpbmFsaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmNvbmRpdGlv
bmFsRmluYWxpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjIwMTZEMTQz
RkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Fic3RyYWN0U3RhdGUuY3BwOyBwYXRoID0gZGZnL0RGR0Fi
c3RyYWN0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU0MCw2ICsx
NjEyLDEzIEBACiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEMxNEJBN0U1RTAw
QkZFMjcyIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJ
CSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJ
MTQxMjExMUUwQTQ4NzkzQzAwNDgwMjU1IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CkBAIC0xNTk4LDYgKzE2NzcsNyBAQAogCQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4MDI1NSAvKiBt
aW5pZG9tICovLAogCQkJCTE0QkQ1OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAog
CQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4
MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCiAJCQkp
OwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2
MjYsNiArMTcwNiw3IEBACiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3Jp
cHRDb3JlUHJlZml4LmggKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5j
cHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5oICovLAorCQkJ
CTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLywKIAkJCQkxNDMyRUJENzBBMzRD
QUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBh
c3NlbWJsZXIgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICov
LApAQCAtMTY2NCw2ICsxNzQ1LDI4IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9
IDA7CiAJCX07CisJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYwQjgzOTUxNEJDRjQ1QTAw
ODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovLAorCQkJCTBGMEI4Mzk2MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8sCisJCQkJMEYwQjgzOTcxNEJDRjQ1QTAw
ODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLywKKwkJCQkwRjBCODM5ODE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRUaHVua3MuaCAqLywKKwkJCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyog
TExJbnREYXRhLmNwcCAqLywKKwkJCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnRE
YXRhLmggKi8sCisJCQkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmgg
Ki8sCisJCQkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oICovLAorCQkJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJl
dGVyLmNwcCAqLywKKwkJCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRl
cnByZXRlci5oICovLAorCQkJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2Vw
dGlvbnMuY3BwICovLAorCQkJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2Vw
dGlvbnMuaCAqLywKKwkJCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJz
LmNwcCAqLywKKwkJCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmgg
Ki8sCisJCQkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGxsaW50OworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKIAkJMTQxMjExMDAwQTQ4NzcyNjAwNDgwMjU1IC8qIHRlc3RzICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE2OTYsNiArMTc5OSw4IEBA
CiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBI
b3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLywKKwkJCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIg
LyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovLAogCQkJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3
MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLywKIAkJCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIg
LyogSklURXhjZXB0aW9ucy5oICovLAogCQkJCTBGRDgyRTM3MTQxQUIxNDIwMDE3OUM5NCAvKiBD
b21wYWN0SklUQ29kZU1hcC5oICovLApAQCAtMjQ3Nyw2ICsyNTgyLDcgQEAKIAkJOTY5QTA3OEYw
RUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxs
TGlua0luZm8uaCAqLywKIAkJCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVy
bk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLywKIAkJCQkwRjBCODNCNjE0QkNGOERGMDA4ODVC
NEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLywKIAkJCQkwRjBCODNCMjE0QkNGODVFMDA4ODVC
NEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCAqLywKQEAgLTMwMTUsNyArMzEyMSwxNiBAQAog
CQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODY3MDRCNDMxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xv
d1BhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyog
TExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBC
RkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1
NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0Njgw
Q0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnBy
ZXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExM
SW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8q
IEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlCMTRCQ0Y0
NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBC
ODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMDI0LDYgKzMxMzksNyBAQAogCQkJCTBGMEI4M0I1MTRCQ0Y4
NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5
dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODEx
NTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjFDMjY4MTRC
RTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpAQCAtMzAzMSw2ICszMTQ3LDI0
IEBACiAvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyog
SlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0
OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MDhCMTRC
QTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovLAorCQkJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3
MiAvKiBGcmFtZXdvcmtzICovLAorCQkJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5
RmlsZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNp
ZXMgPSAoCisJCQkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8sCisJCQkpOworCQkJbmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXBy
b2R1Y3ROYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdFJlZmVyZW5j
ZSA9IDBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3Ig
Ki87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9
OwogCQkxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLyA9IHsKIAkJCWlzYSA9
IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDEyMTEzOTBB
NDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVU
YXJnZXQgIm1pbmlkb20iICovOwpAQCAtMzE1NywxMSArMzI5MSwyOSBAQAogCQkJCTE0QkQ1OUJF
MEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTkzMkY1QkRBMDgyMkExQzcwMDcz
Njk3NSAvKiBqc2MgKi8sCiAJCQkJNjUxMTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdF
eHAgKi8sCisJCQkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4
dHJhY3RvciAqLywKKwkJCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0
cyAqLywKIAkJCSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MEFBMTRCQTdG
RDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09U
KS9sbGludC9Mb3dMZXZlbEFzc2VtYmxlci5hc20iLAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJh
dGUgRGVyaXZlZCBTb3VyY2VzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaCIsCisJCQkpOwor
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGgg
PSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RT
X0RJUn0vTExJbnRPZmZzZXRzL1wiXG5cbi91c3IvYmluL2VudiBydWJ5IFwiJHtTUkNST09UfS9v
ZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmJcIiA8IFwiJHtTUkNST09UfS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbVwiID4gXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0v
TExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaFwiXG4iOworCQl9OwogCQkzNzEzRjAx
NDE0MjkwNTI0MDAzNjM4N0YgLyogQ2hlY2sgRm9yIEluYXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMg
Q2xhc3MgTmFtZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzMwMiw2ICszNDU0LDE0IEBACiAv
KiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
U291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIg
LyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGNDY4MEE3MTRC
QTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07
CiAJCTE0MTIxMTFEMEE0ODc5M0MwMDQ4MDI1NSAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0g
UEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpA
QCAtMzU1OSw3ICszNzE5LDE0IEBACiAJCQkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJKSVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8q
IFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5
RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBB
NDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZF
MjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBENDE0QkJEMjQ5
MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjAxNEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5rSW5m
by5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBCODNCNDE0QkNGODYwMDA4ODVCNEYgLyogTWV0
aG9kQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKQEAgLTM1NzYsNiArMzc0
MywxNiBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTBGNDY4MEIyMTRCQTgxMTUwMEJG
RTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVw
ZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBP
ZmZzZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUy
NzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVu
ZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMzE0QkE4MjE0MDBC
RkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQkxNDEyMTRCRjBBNDkx
OTBFMDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRh
cmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyog
bWluaWRvbSAqLzsKQEAgLTM2MDksNiArMzc4NiwxNDggQEAKIC8qIEVuZCBQQlhUYXJnZXREZXBl
bmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlv
biAqLworCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlT
X1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82
NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0NDX0NfTEFOR1VBR0Vf
U1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0Nf
RU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVM
ID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9
MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZTUJPTFNfUFJJVkFU
RV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2
bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsK
KwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dB
Uk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxF
ID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAor
CQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJ
CQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1F
TlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gWUVTOworCQkJCVBST0RV
Q1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlV
U0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xM
SW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gRGVi
dWc7CisJCX07CisJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RB
TkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19J
TkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFH
RV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVT
OworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsK
KwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJO
X0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRV
Uk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJ
IkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJ
CQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMkKEhFQURFUl9TRUFSQ0hfUEFU
SFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJ
UFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4Owor
CQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUg
PSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5n
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQo
QVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJ
CQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0Nf
Q19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJ
T05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNs
YW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJ
CUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9B
Qk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZ
RVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJ
CWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQki
JChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9U
QVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJ
U0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3Ug
JChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
IjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2ODA5OTE0QkE3RTVF
MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMg
PSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlf
UEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJm
LXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlH
Q0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5h
cHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklU
X0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMg
PSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dB
Uk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9
Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikv
TExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJ
CQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAi
JChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJf
U0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMg
JChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJ
CX07CisJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNU
X05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsK
KwkJfTsKKwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJP
RFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUmVs
ZWFzZTsKKwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9
IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5h
bWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9k
dWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJ
CQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTNBMEE0ODc5ODQwMDQ4
MDI1NSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKQEAgLTM4NTAsNiArNDE2OSwyOCBAQAogLyogRW5kIFhDQnVpbGRD
b25maWd1cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBz
ZWN0aW9uICovCisJCTBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAq
LyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRp
b25zID0gKAorCQkJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLywKKwkJCQkw
RjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODA5ODE0QkE3
RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3
MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNp
YmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07
CisJCTBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3Qg
Zm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi8gPSB7CisJCQlpc2EgPSBY
Q0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2
ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwQUUxNEJBN0ZEOTAw
QkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFBy
b2ZpbGluZyAqLywKKwkJCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAq
LywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZh
dWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEzOTBBNDg3
OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgIm1pbmlkb20iICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1
aWxkQ29uZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA0Nzc1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMx
LDcgQEAKICNkZWZpbmUgRFVNUF9MSU5LX1NUQVRJU1RJQ1MgMAogI2RlZmluZSBEVU1QX0NPREUg
MAogCi0jaW5jbHVkZSA8TWFjcm9Bc3NlbWJsZXIuaD4KKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZp
c2lvbiAxMDQ3NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODkwLDYgKzg5MCwxNCBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVj
LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Q6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKKyAgICAg
ICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3Ao
ZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTUxNCw3ICsxNTIyLDExIEBAIENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiAjaWYg
RU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJPRklMRSkKICAgICBkdW1wVmFsdWVQcm9maWxlcygpOwog
I2VuZGlmCi0gICAgCisKKyNpZiBFTkFCTEUoTExJTlQpICAgIAorICAgIHdoaWxlIChtX2luY29t
aW5nTExJbnRDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQorICAg
ICAgICBtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpLT5yZW1vdmUoKTsKKyNlbmRpZiAvLyBF
TkFCTEUoTExJTlQpCiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBXZSBtYXkgYmUgZGVzdHJveWVk
IGJlZm9yZSBhbnkgQ29kZUJsb2NrcyB0aGF0IHJlZmVyIHRvIHVzIGFyZSBkZXN0cm95ZWQuCiAg
ICAgLy8gQ29uc2lkZXIgdGhhdCB0d28gQ29kZUJsb2NrcyBiZWNvbWUgdW5yZWFjaGFibGUgYXQg
dGhlIHNhbWUgdGltZS4gVGhlcmUKQEAgLTE3MjgsNiArMTc0MCw1NiBAQCB2b2lkIENvZGVCbG9j
azo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAjZW5kaWYKICNlbmRpZgogICAgIAorI2lmIEVO
QUJMRShMTElOVCkKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEt
PmludGVycHJldGVyOworICAgIGlmICghaW50ZXJwcmV0ZXItPmVuYWJsZWQoKSkgeworICAgICAg
ICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCks
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5z
dHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3R1Y3Rpb25zW2ld
XTsKKyAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3Ry
dWN0aW9uWzBdLnUub3Bjb2RlKSkgeworICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6Cisg
ICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgICAgICAgICBpZiAoSGVhcDo6
aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0
cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzVdLnUub3Bl
cmFuZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZChj
dXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgICAgICAgICAg
JiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisg
ICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzddLnUu
c3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAg
ICAgICAgICAgIGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAg
ICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOworICAg
ICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlID0gaW50ZXJwcmV0ZXItPmdl
dE9wY29kZShvcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rp
b25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOworICAgICAgICB9CisgICAg
ICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgp
LCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cklu
c3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tp
XV07CisgICAgICAgICAgICBBU1NFUlQoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3Ry
dWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbAorICAgICAgICAgICAgICAg
ICAgIHx8IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29k
ZSkgPT0gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CisgICAgICAgICAgICBpZiAoSGVhcDo6
aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1
cmUuY2xlYXIoKTsKKyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9IDA7
CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGxpbnRDYWxs
TGlua0luZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAobV9sbGludENhbGxMaW5r
SW5mb3NbaV0uaXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQobV9sbGludENhbGxMaW5rSW5m
b3NbaV0uY2FsbGVlLmdldCgpKSkgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5r
aW5nKQorICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IGNhbGwgZnJv
bSAlcC5cbiIsIHRoaXMpOworICAgICAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ld
LnVubGluaygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCisKKyNl
bmRpZgorCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLy8gQ2hlY2sgaWYgd2UncmUgbm90IGxp
dmUuIElmIHdlIGFyZSwgdGhlbiBqZXR0aXNvbi4KICAgICBpZiAoIShzaG91bGRJbW1lZGlhdGVs
eUFzc3VtZUxpdmVuZXNzRHVyaW5nU2NhbigpIHx8IG1fZGZnRGF0YS0+bGl2ZW5lc3NIYXNCZWVu
UHJvdmVkKSkgewpAQCAtMTg0OCwxMCArMTkxMCwxMiBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25n
bHlWaXNpdFN0cm9uZ1JlZmVyCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9u
RGVjbHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9uRGVj
bHNbaV0pOwogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKLSAgICBmb3IgKHNpemVfdCBzaXplID0g
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQotICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9n
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0g
ICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0
ZXItPmVuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAg
ICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAg
ICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREZH
X0pJVCkKQEAgLTIwMjgsNiArMjA5Miw5IEBAIHZvaWQgQ29kZUJsb2NrOjpzaHJpbmtUb0ZpdCgp
CiAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3Muc2hyaW5rVG9GaXQoKTsKICAgICBtX2NhbGxMaW5r
SW5mb3Muc2hyaW5rVG9GaXQoKTsKICNlbmRpZgorI2lmIEVOQUJMRShMTElOVCkKKyAgICBtX2xs
aW50Q2FsbExpbmtJbmZvcy5zaHJpbmtUb0ZpdCgpOworI2VuZGlmCiAKICAgICBtX2lkZW50aWZp
ZXJzLnNocmlua1RvRml0KCk7CiAgICAgbV9mdW5jdGlvbkRlY2xzLnNocmlua1RvRml0KCk7CkBA
IC0yMDYwLDYgKzIxMjcsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIHsKICAg
ICBpZiAoISFtX2FsdGVybmF0aXZlKQogICAgICAgICBtX2FsdGVybmF0aXZlLT51bmxpbmtDYWxs
cygpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGxp
bnRDYWxsTGlua0luZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2xsaW50Q2FsbExp
bmtJbmZvc1tpXS5pc0xpbmtlZCgpKQorICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3Nb
aV0udW5saW5rKCk7CisgICAgfQorI2VuZGlmCiAgICAgaWYgKCEobV9jYWxsTGlua0luZm9zLnNp
emUoKSB8fCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKQEAgLTIwNzQsMTAgKzIxNDcsMzYg
QEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIAogdm9pZCBDb2RlQmxvY2s6OnVubGlu
a0luY29taW5nQ2FsbHMoKQogeworICAgIHdoaWxlIChtX2luY29taW5nTExJbnRDYWxscy5iZWdp
bigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQorICAgICAgICBtX2luY29taW5nTExJ
bnRDYWxscy5iZWdpbigpLT51bmxpbmsoKTsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZm
ZXIodGhpcyk7CiAgICAgd2hpbGUgKG1faW5jb21pbmdDYWxscy5iZWdpbigpICE9IG1faW5jb21p
bmdDYWxscy5lbmQoKSkKICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLmJlZ2luKCktPnVubGluaygq
bV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKIH0KKwordW5zaWduZWQgQ29kZUJsb2NrOjpi
eXRlY29kZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRk
cmVzcykKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKHJldHVybkFkZHJlc3MudmFsdWUo
KSA+PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9iZWdpbikKKyAgICAgICAgJiYgcmV0dXJu
QWRkcmVzcy52YWx1ZSgpIDw9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2VuZCkpIHsKKyAg
ICAgICAgRXhlY1N0YXRlKiBjYWxsZXJFeGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAg
ICAgQVNTRVJUKGNhbGxlckV4ZWMpOworICAgICAgICBBU1NFUlQoY2FsbGVyRXhlYy0+Y29kZUJs
b2NrKCkpOworICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoY2FsbGVyRXhl
Yy0+Y29kZUJsb2NrKCktPmdldEpJVFR5cGUoKSkpOworICAgICAgICBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24gPSBleGVjLT5jYWxsZXJGcmFtZSgpLT5jdXJyZW50VlBDKCk7CisgICAgICAgIEFT
U0VSVChpbnN0cnVjdGlvbik7CisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldChpbnN0cnVj
dGlvbik7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisjZW5kaWYKKyAg
ICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiAxOworICAgIFZlY3RvcjxDYWxsUmV0
dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0gbV9yYXJlRGF0YS0+bV9j
YWxsUmV0dXJuSW5kZXhWZWN0b3I7CisgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCisgICAg
ICAgIHJldHVybiAxOworICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNl
cy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1
cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7Cit9CiAjZW5kaWYKIAogdm9pZCBD
b2RlQmxvY2s6OmNsZWFyRXZhbENhY2hlKCkKQEAgLTIxNzMsMjEgKzIyNzIsMjEgQEAgYm9vbCBG
dW5jdGlvbkNvZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERgogCiB2b2lkIFByb2dyYW1Db2RlQmxv
Y2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJh
c2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5
cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19j
YXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGlt
aXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRXZhbENvZGVCbG9jazo6amV0dGlz
b24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQp
OworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAg
ICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RXZhbEV4
ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xv
YmFsRGF0YSgpKTsKIH0KIAogdm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24oKQogewot
ICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFT
U0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJU
KHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGVGb3IoKmdsb2Jh
bERhdGEoKSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxs
KTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJ
KHJldmlzaW9uIDEwNDc3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgIkpJVFdy
aXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSnVt
cFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJMaW5l
SW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUHJlZGljdGlvblRyYWNrZXIu
aCIKQEAgLTczLDggKzc0LDkgQEAgc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbgogCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFz
cyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAKICAgICBpbmxpbmUgaW50IHVubW9kaWZpZWRBcmd1bWVudHNSZWdp
c3RlcihpbnQgYXJndW1lbnRzUmVnaXN0ZXIpIHsgcmV0dXJuIGFyZ3VtZW50c1JlZ2lzdGVyIC0g
MTsgfQogCkBAIC04Myw2ICs4NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIENvZGVC
bG9jayA6IHB1YmxpYyBVbmNvbmRpdGlvbmFsRmluYWxpemVyLCBwdWJsaWMgV2Vha1JlZmVyZW5j
ZUhhcnZlc3RlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBm
cmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBDb3B5UGFyc2VkQmxvY2tUYWcgeyBDb3B5
UGFyc2VkQmxvY2sgfTsKICAgICBwcm90ZWN0ZWQ6CkBAIC0xMjMsNyArMTI2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICB3aGlsZSAocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKQogICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC0+YWx0ZXJuYXRpdmUoKTsKICAgICAgICAgICAg
IEFTU0VSVChyZXN1bHQpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC0+Z2V0SklUVHlwZSgp
ID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjpp
c0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgfQogI2VuZGlmCkBAIC0xOTQsMTUgKzE5Nyw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuICooYmluYXJ5U2VhcmNoPE1ldGhvZENhbGxMaW5r
SW5mbywgdW5zaWduZWQsIGdldE1ldGhvZENhbGxMaW5rSW5mb0J5dGVjb2RlSW5kZXg+KG1fbWV0
aG9kQ2FsbExpbmtJbmZvcy5iZWdpbigpLCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpLCBi
eXRlY29kZUluZGV4KSk7CiAgICAgICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghbV9yYXJlRGF0YSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAg
ICAgIFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2Vz
ID0gbV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7Ci0gICAgICAgICAgICBpZiAo
IWNhbGxJbmRpY2VzLnNpemUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAg
ICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQs
IHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxs
SW5kaWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVl
KCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7Ci0gICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQoRXhlY1N0YXRlKiwgUmV0dXJuQWRkcmVzc1B0cik7CiAKICAgICAgICAgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXRGb3JDYWxsQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAg
ewpAQCAtMjIzLDkgKzIxOCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAg
ICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwogICAgICAgICB9CisjaWYgRU5B
QkxFKExMSU5UKQorICAgICAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoTExJbnRDYWxsTGlua0lu
Zm8qIGluY29taW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2luY29taW5nTExJbnRDYWxs
cy5wdXNoKGluY29taW5nKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKICAg
ICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5rSW5jb21pbmdDYWxscygpOwotI2VuZGlmCisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICB2b2lkIHNl
dEpJVENvZGVNYXAoUGFzc093blB0cjxDb21wYWN0SklUQ29kZU1hcD4gaml0Q29kZU1hcCkKQEAg
LTMzNSwxMiArMzM2LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAjZW5kaWYKIAot
I2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQo
SW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJlc3MpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChyZXR1cm5BZGRyZXNzID49IGluc3RydWN0aW9ucygpLmJlZ2luKCkgJiYgcmV0dXJuQWRkcmVz
cyA8IGluc3RydWN0aW9ucygpLmVuZCgpKSk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7
CiAgICAgICAgIH0KLSNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1
bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFy
ZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNO
dW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgeyByZXR1cm4gbV9pc051bWVyaWNDb21wYXJlRnVuY3Rp
b247IH0KQEAgLTM5MSwxMyArMzkxLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2aXJ0
dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKSA9IDA7CiAgICAgICAgIGJvb2wgaGFzT3B0aW1p
emVkUmVwbGFjZW1lbnQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlw
ZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2Rl
Ojppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIGJvb2wgcmVzdWx0
ID0gcmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID4gZ2V0SklUVHlwZSgpOwogI2lmICFBU1NF
UlRfRElTQUJMRUQKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAgQVNT
RVJUKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwogICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmdl
dEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgQVNT
RVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSkp
OwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpID09IHRoaXMpOwogICAgICAg
ICAgICAgfQogI2VuZGlmCkBAIC00NTYsNyArNDU2LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgdm9pZCBjbGVhckV2YWxDYWNoZSgpOwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQog
ICAgICAgICB2b2lkIGFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24odW5zaWduZWQgcHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2dsb2Jh
bERhdGEtPmNhblVzZUpJVCgpKQpAQCAtNDY4LDYgKzQ2NywxMiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb25BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBhZGRMTElu
dENhbGxMaW5rSW5mbygpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0lu
Zm9zLmFwcGVuZChMTEludENhbGxMaW5rSW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiAmbV9s
bGludENhbGxMaW5rSW5mb3MubGFzdCgpOworICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUo
SklUKQogICAgICAgICB2b2lkIHNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKHNpemVfdCBz
aXplKSB7IG1fc3RydWN0dXJlU3R1YkluZm9zLmdyb3coc2l6ZSk7IH0KQEAgLTY3Miw3ICs2Nzcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgYWRkRnJlcXVlbnRF
eGl0U2l0ZShjb25zdCBERkc6OkZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwor
ICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkp
OwogICAgICAgICAgICAgcmV0dXJuIG1fZXhpdFByb2ZpbGUuYWRkKHNpdGUpOwogICAgICAgICB9
CiAKQEAgLTEwNTIsOSArMTA1NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZz
ZXQ7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4g
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBt
X2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBT
ZWdtZW50ZWRWZWN0b3I8TExJbnRDYWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxsTGlua0luZm9z
OworICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3
U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdMTEludENhbGxzOwog
I2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZv
PiBtX3N0cnVjdHVyZVN0dWJJbmZvczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMDQ3NzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiAr
NDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAvLyBzb2x1dGlvbiBmb3Igbm93IC0gd2lsbCBu
ZWVkIHRvIHNvbWV0aGluZyBzbWFydGVyIGlmL3doZW4gd2UgYWN0dWFsbHkgd2FudCBtaXhlZC1t
b2RlIG9wZXJhdGlvbi4KIAogICAgIGNsYXNzIEpTQ2VsbDsKKyAgICBjbGFzcyBMTEludENhbGxM
aW5rSW5mbzsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47
CiAKQEAgLTE0MSw2ICsxNDIsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHN0
cnVjdCBJbnN0cnVjdGlvbiB7CisgICAgICAgIEluc3RydWN0aW9uKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdS5qc0NlbGwuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAg
SW5zdHJ1Y3Rpb24oT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogI2lmICFFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikKQEAgLTE3Niw2ICsxODIsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgfQogCiAgICAgICAgIEluc3RydWN0aW9uKFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jIGdldHRlckZ1bmMpIHsgdS5nZXR0ZXJGdW5jID0gZ2V0dGVyRnVuYzsgfQorICAgICAgICAK
KyAgICAgICAgSW5zdHJ1Y3Rpb24oTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykgeyB1
LmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsgfQogCiAgICAgICAgIHVuaW9uIHsKICAgICAg
ICAgICAgIE9wY29kZSBvcGNvZGU7CkBAIC0xODQsNiArMTkyLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBzdHJ1Y3R1cmVD
aGFpbjsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8SlNDZWxsPiBqc0NlbGw7CiAgICAg
ICAgICAgICBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jOworICAgICAgICAg
ICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbzsKKyAgICAgICAgICAgIHZvaWQqIHBv
aW50ZXI7CiAgICAgICAgIH0gdTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExp
bmtJbmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENhbGxMaW5rSW5mb19o
CisjZGVmaW5lIExMSW50Q2FsbExpbmtJbmZvX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVQdHIuaCIKKyNpbmNsdWRlIDx3dGYvU2VudGlu
ZWxMaW5rZWRMaXN0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247
CisKK3N0cnVjdCBMTEludENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9k
ZTxMTEludENhbGxMaW5rSW5mbz4geworICAgIExMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7Cisg
ICAgfQorICAgIAorICAgIH5MTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgICAgICBpZiAo
aXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBib29s
IGlzTGlua2VkKCkgeyByZXR1cm4gY2FsbGVlOyB9CisgICAgCisgICAgdm9pZCB1bmxpbmsoKQor
ICAgIHsKKyAgICAgICAgY2FsbGVlLmNsZWFyKCk7CisgICAgICAgIG1hY2hpbmVDb2RlVGFyZ2V0
ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAg
ICAgICAgICAgcmVtb3ZlKCk7CisgICAgfQorICAgIAorICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0
aW9uPiBjYWxsZWU7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1hY2hpbmVDb2RlVGFyZ2V0
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBMTEludENhbGxMaW5rSW5m
b19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlz
aW9uIDEwNDc3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBtYWNybyhvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCwgNCkgXAogICAgICAgICBtYWNybyhvcF9w
dXRfYnlfaWQsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24sIDkp
IFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0LCA5KSBcCisg
ICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCwgOSkgXAogICAgICAg
ICBtYWNybyhvcF9wdXRfYnlfaWRfcmVwbGFjZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRf
YnlfaWRfZ2VuZXJpYywgOSkgXAogICAgICAgICBtYWNybyhvcF9kZWxfYnlfaWQsIDQpIFwKQEAg
LTIwMiw2ICsyMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBlbnVtIHsg
Rk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9JRF9FTlVNKSB9IE9wY29kZUlEOwogICAgICN1bmRl
ZiBPUENPREVfSURfRU5VTQogCisgICAgY29uc3QgaW50IG1heE9wY29kZUxlbmd0aCA9IDk7CiAg
ICAgY29uc3QgaW50IG51bU9wY29kZUlEcyA9IG9wX2VuZCArIDE7CiAKICAgICAjZGVmaW5lIE9Q
Q09ERV9JRF9MRU5HVEhTKGlkLCBsZW5ndGgpIGNvbnN0IGludCBpZCMjX2xlbmd0aCA9IGxlbmd0
aDsKQEAgLTIxOCw3ICsyMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRk9SX0VBQ0hf
T1BDT0RFX0lEKFZFUklGWV9PUENPREVfSUQpOwogICAgICN1bmRlZiBWRVJJRllfT1BDT0RFX0lE
CiAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09N
UFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQogI2lmIENPTVBJTEVSKFJW
Q1QpIHx8IENPTVBJTEVSKElOVEVMKQogICAgIHR5cGVkZWYgdm9pZCogT3Bjb2RlOwogI2Vsc2UK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMDQ3NzUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTI2NCw5ICsxMjY0LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxS
ZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKElO
VEVSUFJFVEVSKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0
aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICAgICAgZW1pdE9wY29kZShy
ZXF1aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVz
b2x2ZV9nbG9iYWwpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgp
KTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7
CkBAIC0xNDE5LDkgKzE0MTcsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2
ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBS
RVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3Ry
dWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBlbWl0T3Bjb2RlKHJlcXVpcmVzRHluYW1p
Y0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ2Niw5ICsxNDYy
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJM
RShKSVQpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9u
cygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2Rl
QmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkp
OwotI2VuZGlmCiAgICAgZW1pdE9wY29kZShyZXF1aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNv
bHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChwcm9wRHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
YWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE0ODYsOSArMTQ4MCw3IEBAIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRNZXRob2RDaGVjaygKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAg
IG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygp
LnNpemUoKSk7Ci0jZW5kaWYKIAogICAgIGVtaXRPcGNvZGUob3BfZ2V0X2J5X2lkKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKQEAgLTE1MTMsOSArMTUwNSw3IEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXIKIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5U
RVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24o
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1pdE9wY29kZShvcF9wdXRf
YnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE1
MzEsOSArMTUyMSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnkK
IAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKFJlZ2lz
dGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1
ZSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3Bl
cnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAg
IAogICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoYmFzZS0+aW5kZXgoKSk7CkBAIC0xODIxLDcgKzE4MDksMTEgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5j
LT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1l
bnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdp
c3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
bV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7
CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgZW1pdE9wY29kZShv
cF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMTkyMyw3ICsxOTE1LDExIEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3QKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVu
Yy0+aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3Vt
ZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsgLy8gcmVn
aXN0ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KG1fY29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKDApOworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDAp
OwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIGVtaXRPcGNvZGUo
b3BfY2FsbF9wdXRfcmVzdWx0KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMDQ3NzUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTgyMyw3ICsxODIzLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X2lkKTsKICAgICAgICAgfQogCi0g
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgor
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAgICAgIE5vZGVJbmRl
eCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAg
ICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQp
OwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tU
b3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmRdOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZp
c2lvbiAxMDQ3NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDggQEAgaW5saW5lIGJvb2wgY2FuQ29t
cGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAg
Y2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX3B1
dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxMDQ3NzUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhp
dC5oIgogI2luY2x1ZGUgIkRGR1JlcGF0Y2guaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZh
bHVlLmgiCiAjaW5jbHVkZSAiSW5saW5lQVNNLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgpAQCAtNTQ1LDQ1ICs1NDYsNiBAQCBzaXplX3QgREZH
X09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmlj
dEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcDIpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0
Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOwotCi0jaWYgQ1BVKFg4Nl82
NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0g
ICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKLSAgICAibW92ICVyMTMsICVyZGlcbiIKLSAgICAi
am1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRo
RXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKFg4NikKLWFzbSAoCi0iLmdsb2JsICIgU1lN
Qk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJWVkaSksICVlZGlc
biIKLSAgICAibW92ICVlZGksIDQoJWVzcClcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19S
RUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwot
I2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20gKAotIi50ZXh0IiAiXG4iCi0iLmFsaWduIDIiICJc
biIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIK
LUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLSIudGh1bWIiICJcbiIK
LSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkg
IlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAg
ICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKLSAgICAiY3B5IHIwLCByNSIgIlxuIgotICAgICJi
ICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhl
Y1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0KLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04g
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQotewot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0
dXJuVmFsdWUpOwotfQotCiBzdGF0aWMgdm9pZCogaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBl
eGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQog
ewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaAkocmV2aXNp
b24gMTA0Nzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBj
bGFzcyBIZWFwOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWFya2VkQmxv
Y2s7CiAKIGNsYXNzIEFsbG9jYXRpb25TcGFjZSB7CkBAIC02OCw2ICs2OSw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNocmluaygpOwogICAgIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAgIGVudW0gQWxsb2NhdGlvbkVmZm9ydCB7IEFs
bG9jYXRpb25NdXN0U3VjY2VlZCwgQWxsb2NhdGlvbkNhbkZhaWwgfTsKICAgICAKICAgICB2b2lk
KiBhbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMDQ3NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTVmFsdWU7CiAgICAgY2xh
c3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
ICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAgICBjbGFzcyBSZWdpc3RlckZpbGU7
CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTEyOSwxMCArMTMwLDExIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMoSGFzaFNldDxKU0Nl
bGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtl
ZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGlvblNwYWNlOwotICAgICAgICBm
cmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIGZy
aWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKKyAgICAgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9y
OwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWluRXh0cmFDb3N0ID0gMjU2OwogICAg
ICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4dHJhQ29zdCA9IDEwMjQgKiAxMDI0OwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxMDQ3
NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSGVhcDsKIGNs
YXNzIEpTQ2VsbDsKIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsKIGNsYXNzIFNsb3RWaXNpdG9yOwogCkBA
IC03OSw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0
eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jaygpOwogCiBwcml2YXRlOgor
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiAgICAgLy8gWyAz
Mi4uLiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZVN0ZXAgPSBNYXJrZWRC
bG9jazo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlQ3V0b2ZmID0g
MjU2OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJh
bWUuaAkocmV2aXNpb24gMTA0Nzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiArMTE5LDkgQEAgbmFtZXNw
YWNlIEpTQyAgewogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgSW5zdHJ1Y3Rpb24q
IHJldHVyblZQQygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10u
dlBDKCk7IH0KICNlbmRpZgorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgSW5zdHJ1Y3Rpb24q
IGN1cnJlbnRWUEMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPih0
aGlzW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0udGFnKCkpOyB9CisjZW5kaWYKIAogICAg
ICAgICB2b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogY2FsbGVyRnJhbWUpIHsgc3RhdGlj
X2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXSA9IGNhbGxl
ckZyYW1lOyB9CiAgICAgICAgIHZvaWQgc2V0U2NvcGVDaGFpbihTY29wZUNoYWluTm9kZSogc2Nv
cGVDaGFpbikgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6U2Nv
cGVDaGFpbl0gPSBzY29wZUNoYWluOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEwNDc3NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNlbmRpZgogCi0jZGVm
aW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAoRU5BQkxFKENPTVBVVEVE
X0dPVE9fSU5URVJQUkVURVIpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKKyNkZWZpbmUgV1RGX1VT
RV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EICgoRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKIAogdXNp
bmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNTQ3LDE3ICs1NDcsNDEgQEAgSW50ZXJwcmV0ZXI6Oklu
dGVycHJldGVyKCkKIHsKIH0KIAotdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShib29sIGNh
blVzZUpJVCkKK0ludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIoKQogewotI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAobV9lbmFi
bGVkKQorICAgICAgICBkZWxldGVbXSBtX29wY29kZVRhYmxlOworI2VuZGlmCit9CisKK3ZvaWQg
SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRhdGEqIGxsaW50RGF0YSwgYm9vbCBjYW5V
c2VKSVQpCit7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJM
RShMTElOVCkKKyNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisgICAgLy8g
SGF2aW5nIExMSW50IGVuYWJsZWQsIGJ1dCBub3QgYmVpbmcgYWJsZSB0byB1c2UgdGhlIEpJVCwg
YW5kIG5vdCBoYXZpbmcKKyAgICAvLyBhIGNvbXB1dGVkIGdvdG8gaW50ZXJwcmV0ZXIsIGlzIG5v
dCBzdXBwb3J0ZWQuIE5vdCBiZWNhdXNlIHdlIGNhbm5vdAorICAgIC8vIHN1cHBvcnQgaXQsIGJ1
dCBiZWNhdXNlIEkgZGVjaWRlZCB0byBkcmF3IHRoZSBsaW5lIGF0IHRoZSBudW1iZXIgb2YKKyAg
ICAvLyBwZXJtdXRhdGlvbnMgb2YgZXhlY3V0aW9uIGVuZ2luZXMgdGhhdCBJIHdhbnRlZCB0aGlz
IGNvZGUgdG8gZ3Jvay4KKyAgICBBU1NFUlQoY2FuVXNlSklUKTsKKyNlbmRpZgogICAgIGlmIChj
YW5Vc2VKSVQpIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bjb2RlVGFibGUgPSBs
bGludERhdGEtPm9wY29kZU1hcCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9w
Y29kZUlEczsgKytpKQorICAgICAgICAgICAgbV9vcGNvZGVJRFRhYmxlLmFkZChtX29wY29kZVRh
YmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworI2Vsc2UKICAgICAgICAgLy8gSWYg
dGhlIEpJVCBpcyBwcmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0aW5hdGlvbnMgZm9yIG9wY29k
ZXMuCiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsg
KytpKSB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPihz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpKTsKICAgICAgICAgICAgIG1fb3Bjb2RlVGFibGVbaV0g
PSBvcGNvZGU7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKExM
SU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbmV3IE9wY29kZVtudW1PcGNvZGVJRHNdOwor
I2VuZGlmCiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRpYWxpemVBbmRSZXR1cm4sIDAsIDAp
OwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsr
aSkKQEAgLTY2Nyw5ICs2OTEsMTEgQEAgdm9pZCBJbnRlcnByZXRlcjo6ZHVtcFJlZ2lzdGVycyhD
YWxsRnJhbQogCiBib29sIEludGVycHJldGVyOjppc09wY29kZShPcGNvZGUgb3Bjb2RlKQogewot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRF
RF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJMRShMTElOVCkK
ICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG9wY29kZSA+PSAwICYmIHN0YXRp
Y19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKSA8PSBvcF9l
bmQ7CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2RlICE9IEhhc2hUcmFpdHM8T3Bjb2RlPjo6ZW1w
dHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJhaXRzPE9wY29kZT46OmlzRGVsZXRlZFZhbHVl
KG9wY29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJRFRhYmxlLmNvbnRhaW5zKG9wY29kZSk7CkBA
IC03MjQsMTMgKzc1MCwxNCBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6dW53aW5k
Q2FsCiAgICAgLy8gdGhlIGJlZ2lubmluZyBvZiBuZXh0IGluc3RydWN0aW9uIHRvIGV4ZWN1dGUu
IFRvIGdldCBhbiBvZmZzZXQKICAgICAvLyBpbnNpZGUgdGhlIGNhbGwgaW5zdHJ1Y3Rpb24gdGhh
dCB0cmlnZ2VyZWQgdGhlIGV4Y2VwdGlvbiB3ZQogICAgIC8vIGhhdmUgdG8gc3VidHJhY3QgMS4K
KyNlcnJvciAiRG9lcyBub3QgY29tcHV0ZS4iCiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKElO
VEVSUFJFVEVSKQogICAgIGlmIChjYWxsZXJGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgp
KQotICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2Fs
bEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICAgICBl
bHNlCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChj
YWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZWxpZiBFTkFCTEUoSklUKQotICAgIGJ5dGVj
b2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBD
KCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxs
RnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZWxzZQogICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7
CiAjZW5kaWYKQEAgLTUxNjYsMTAgKzUxOTMsMTAgQEAgdm9pZCBJbnRlcnByZXRlcjo6cmV0cmll
dmVMYXN0Q2FsbGVyKENhbAogICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9j
ay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSk7CiAjaWYgRU5BQkxFKEpJ
VCkKICAgICBlbHNlCi0gICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5i
eXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgICAgICBieXRlY29kZU9m
ZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLCBjYWxsRnJh
bWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAjZWxzZQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2Fs
bGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAg
IGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJh
bWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYKICAgICBsaW5lTnVtYmVyID0gY2Fs
bGVyQ29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQg
LSAxKTsKICAgICBzb3VyY2VJRCA9IGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkt
PnNvdXJjZUlEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTA0Nzc1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUu
aCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKIApAQCAtNDUsNiArNDYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgSlNGdW5j
dGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0
ZXI7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CkBAIC05MCwxOSArOTIsMjEgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBJbnRlcnByZXRlciB7CiAgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwotICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQg
Y2xhc3MgQ2FjaGVkQ2FsbDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBwdWJsaWM6CiAgICAgICAgIElu
dGVycHJldGVyKCk7CisgICAgICAgIH5JbnRlcnByZXRlcigpOwogICAgICAgICAKLSAgICAgICAg
dm9pZCBpbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKTsKKyAgICAgICAgdm9pZCBpbml0aWFsaXpl
KExMSW50OjpEYXRhKiwgYm9vbCBjYW5Vc2VKSVQpOwogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSYg
cmVnaXN0ZXJGaWxlKCkgeyByZXR1cm4gbV9yZWdpc3RlckZpbGU7IH0KICAgICAgICAgCiAgICAg
ICAgIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBS
RVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExM
SU5UKQogICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlVGFibGVbaWRdOwogI2Vsc2UKICAgICAg
ICAgICAgIHJldHVybiBpZDsKQEAgLTExMiw3ICsxMTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICAg
ICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09U
T19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgICAgICBBU1NFUlQoaXNP
cGNvZGUob3Bjb2RlKSk7CisgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVJRFRhYmxlLmdldChv
cGNvZGUpOworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAg
ICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7CiAgICAgICAgICAgICBpZiAoIW1fZW5hYmxl
ZCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KG9wY29kZSkpOwpAQCAtMTIyLDYgKzEyOSwxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIHJldHVybiBvcGNvZGU7CiAjZW5kaWYKICAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgYm9vbCBlbmFibGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIG1fZW5hYmxlZDsKKyAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2Rl
KTsKIApAQCAtMTg5LDcgKzIwMSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdp
c3RlckZpbGUgbV9yZWdpc3RlckZpbGU7CiAgICAgICAgIAotI2lmIEVOQUJMRShDT01QVVRFRF9H
T1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgT3Bjb2RlKiBtX29w
Y29kZVRhYmxlOyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCisgICAg
ICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9w
Y29kZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21waWxpbmcKKyNlbGlmIEVOQUJMRShDT01QVVRFRF9H
T1RPX0lOVEVSUFJFVEVSKQogICAgICAgICBPcGNvZGUgbV9vcGNvZGVUYWJsZVtudW1PcGNvZGVJ
RHNdOyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCiAgICAgICAgIEhh
c2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9
PiBPcGNvZGVJRCBmb3IgZGVjb21waWxpbmcKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkocmV2aXNpb24gMTA0Nzc1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgQ29uc2VydmF0aXZlUm9vdHM7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBSZWdpc3RlckZpbGUgewogICAg
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWdpc3RlckZpbGUpOwpAQCAtODEsNiArODIsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wg
Z3Jvd1Nsb3dDYXNlKFJlZ2lzdGVyKik7CiAgICAgICAgIHZvaWQgcmVsZWFzZUV4Y2Vzc0NhcGFj
aXR5KCk7CiAgICAgICAgIHZvaWQgYWRkVG9Db21taXR0ZWRCeXRlQ291bnQobG9uZyk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0
dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIK
KyNpbmNsdWRlICJJbmxpbmVBU00uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2V4dGVybiAiQyIg
RW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSgpOworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJO
X1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3Rh
dGUqKTsKKworI2lmIENQVShYODZfNjQpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkco
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCisgICAgIm1v
diAlcjEzLCAlcmRpXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRI
b3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShYODYp
Cithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkg
IlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAg
ICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4iCisgICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCisgICAg
ImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0
aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorYXNtICgKKyIudGV4
dCIgIlxuIgorIi5hbGlnbiAyIiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0
Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiXG4iCisiLnRodW1iIiAiXG4iCisiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCisgICAgImNw
eSByMCwgcjUiICJcbiIKKyAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0
Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbmRpZgorCitleHRlcm4g
IkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVyblZhbHVl
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisjZGVmaW5lIEhvc3RDYWxsUmV0dXJu
VmFsdWVfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ0FMTElOR19DT05W
RU5USU9OX0lTX1NURENBTEwKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04g
Q0RFQ0wKKyNlbHNlCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OCisjZW5k
aWYKKworbmFtZXNwYWNlIEpTQyB7CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FM
TF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKK30KKworI2Vu
ZGlmIC8vIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCShyZXZpc2lvbiAxMDQ3NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsOCBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dpbGxfY2Fs
bCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBERUZJTkVf
T1Aob3BfcHVzaF9zY29wZSkKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAg
ICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5
X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKQEAgLTQ4Nyw2ICs0ODks
OCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfcG9zdF9pbmMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9w
cmVfZGVjKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2luYykKKyAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
cHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEwNDc3NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKSVRDb2RlKCkgeyB9CiAjZW5kaWYKICAgICBwdWJs
aWM6Ci0gICAgICAgIGVudW0gSklUVHlwZSB7IEhvc3RDYWxsVGh1bmssIEJhc2VsaW5lSklULCBE
RkdKSVQgfTsKKyAgICAgICAgZW51bSBKSVRUeXBlIHsgSG9zdENhbGxUaHVuaywgSW50ZXJwcmV0
ZXJUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OwogICAgICAgICAKICAgICAgICAgc3RhdGlj
IEpJVFR5cGUgYm90dG9tVGllckpJVCgpCiAgICAgICAgIHsKQEAgLTY2LDYgKzY2LDE2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIERGR0pJVDsKICAgICAgICAgfQogICAg
ICAgICAKKyAgICAgICAgc3RhdGljIGJvb2wgaXNPcHRpbWl6aW5nSklUKEpJVFR5cGUgaml0VHlw
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gREZHSklUOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgYm9vbCBpc0Jhc2VsaW5lQ29kZShKSVRU
eXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IElu
dGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBCYXNlbGluZUpJVDsKKyAgICAgICAgfQorICAg
ICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBKSVRDb2RlKCkKICAgICAgICAgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lv
biAxMDQ3NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIEV4Y2VwdGlvbkhhbmRsZXIgZ2VuZXJp
Y1Rocm93KEpTR2xvYmFsRGEKIAogRXhjZXB0aW9uSGFuZGxlciBqaXRUaHJvdyhKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2VwdGlvblZh
bHVlLCBSZXR1cm5BZGRyZXNzUHRyIGZhdWx0TG9jYXRpb24pCiB7Ci0gICAgcmV0dXJuIGdlbmVy
aWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChmYXVsdExvY2F0aW9uKSk7CisgICAgcmV0dXJu
IGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUsIGZhdWx0TG9jYXRp
b24pKTsKIH0KIAogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJ
KHJldmlzaW9uIDEwNDc3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTY0LDQ1ICsyMTY0LDEzIEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1pbmxp
bmUgQ2FsbEZyYW1lKiBhcml0eUNoZWNrRm9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBSZWdpc3Rl
ckZpbGUqIHJlZ2lzdGVyRmlsZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQotewotICAg
IEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oY2FsbEZyYW1lLT5jYWxsZWUoKSk7Ci0g
ICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwotICAgIENvZGVCbG9jayogbmV3
Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9y
KGtpbmQpOwotICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKLQotICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91
Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBh
c3NlZCBieSB0aGUgY2FsbGVyLgotICAgIGlmICghcmVnaXN0ZXJGaWxlLT5ncm93KGNhbGxGcmFt
ZS0+cmVnaXN0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVC
bG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEFT
U0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1l
dGVycygpKTsKLQotICAgIC8vIFRvbyBmZXcgYXJndW1lbnRzIC0tIGNvcHkgY2FsbCBmcmFtZSBh
bmQgYXJndW1lbnRzLCB0aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1bWVudHMgd2l0aCB1bmRlZmlu
ZWQuCi0gICAgc2l6ZV90IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKLSAgICBSZWdpc3Rlciogc3JjID0gY2FsbEZyYW1l
LT5yZWdpc3RlcnMoKTsKLSAgICBSZWdpc3RlciogZHN0ID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMo
KSArIGRlbHRhOwotCi0gICAgaW50IGk7Ci0gICAgaW50IGVuZCA9IC1DYWxsRnJhbWU6Om9mZnNl
dEZvcihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7Ci0gICAgZm9yIChpID0gLTE7IGkgPj0g
ZW5kOyAtLWkpCi0gICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKLQotICAgIGVuZCAtPSBkZWx0YTsK
LSAgICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkpCi0gICAgICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVk
KCk7Ci0KLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGRz
dCk7Ci0gICAgQVNTRVJUKCh2b2lkKiluZXdDYWxsRnJhbWUgPD0gcmVnaXN0ZXJGaWxlLT5lbmQo
KSk7Ci0gICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKLX0KLQogREVGSU5FX1NUVUJfRlVOQ1RJT04o
dm9pZCosIG9wX2NhbGxfYXJpdHlDaGVjaykKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUo
c3RhY2tGcmFtZSk7CiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2Fs
bEZyYW1lOwogCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBhcml0eUNoZWNrRm9yKGNh
bGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDYWxsKTsKKyAgICBDYWxs
RnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxs
RnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CiAgICAgaWYgKCFu
ZXdDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9p
ZCo+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3Rh
Y2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOwogCkBAIC0yMjE1LDcg
KzIxODMsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAKICAg
ICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogCi0gICAgQ2Fs
bEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBhcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFt
ZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIENhbGxGcmFtZSogbmV3Q2Fs
bEZyYW1lID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tG
cmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIGlmICghbmV3Q2FsbEZy
YW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFj
a0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZs
b3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIExMSW50Q29tbW9uX2gKKyNkZWZpbmUgTExJbnRDb21tb25faAorCisjZGVmaW5lIExMSU5U
X0VYRUNVVElPTl9UUkFDSU5HIDAKKworI2VuZGlmIC8vIExMSW50Q29tbW9uX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCisKKyNp
ZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkxv
d0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBMTEludCB7CisKK0RhdGE6OkRhdGEoKQorICAgIDogbV9leGNlcHRpb25J
bnN0cnVjdGlvbnMobmV3IEluc3RydWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdKQorICAgICwg
bV9vcGNvZGVNYXAobmV3IE9wY29kZVtudW1PcGNvZGVJRHNdKQoreworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAgICAgICBtX2V4Y2VwdGlvbklu
c3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJv
d19mcm9tX2hlbHBlcl90cmFtcG9saW5lKTsKKyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwg
bGVuZ3RoKSBtX29wY29kZU1hcFtvcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
IyNvcGNvZGUpOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkpOworI3VuZGVm
IE9QQ09ERV9FTlRSWQorfQorCitEYXRhOjp+RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9leGNl
cHRpb25JbnN0cnVjdGlvbnM7CisgICAgZGVsZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIExMSW50RGF0YV9oCisjZGVmaW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRlICJP
cGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKworI2lmIEVOQUJMRShM
TElOVCkKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIERhdGEoKTsKKyAgICB+RGF0YSgpOwor
ICAgIAorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAgICBP
cGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7Cisg
ICAgfQorcHJpdmF0ZToKKyAgICBJbnN0cnVjdGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7
CisgICAgT3Bjb2RlKiBtX29wY29kZU1hcDsKK307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQpCisK
KyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlm
CisKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0
cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
ICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KK307CisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50RGF0YV9oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRy
eXBvaW50cy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVudHJ5cG9pbnRz
X2gKKyNkZWZpbmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCisKKyNpbmNsdWRlICJMTEludFRodW5rcy5oIgor
I2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKSVRDb2RlJiBqaXRDb2Rl
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2spCit7CisgICAgaWYgKCFnbG9iYWxE
YXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7Cisg
ICAgICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSkpOworICAgICAgICAgICAgYXJpdHlDaGVj
ayA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChr
aW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9z
dEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9n
dWUpKSk7CisgICAgICAgIGFyaXR5Q2hlY2sgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBqaXRDb2Rl
ID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVu
a0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgICAgICBhcml0eUNo
ZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVu
a0dlbmVyYXRvcikuY29kZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJU
KGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFs
RGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvciks
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIGFyaXR5Q2hlY2sgPSBnbG9iYWxEYXRh
LmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3Ip
LmNvZGUoKTsKK30KKwordm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJ
VCgpKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoYml0d2lzZV9jYXN0PHZvaWQq
PigmbGludF9ldmFsX3Byb2xvZ3VlKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVu
a0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQorCit2b2lkIGdldFBy
b2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKQoreworICAgIGlmICghZ2xv
YmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1
bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENU
SVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTElu
dEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVu
dHJ5cG9pbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTElu
dEVudHJ5cG9pbnRzX2gKKyNkZWZpbmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNsdWRlICJD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKSVRD
b2RlOworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOwor
CituYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0dsb2Jh
bERhdGEmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBKSVRDb2RlJiwgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyJiBhcml0eUNoZWNrKTsKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRh
JiwgSklUQ29kZSYpOwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBK
SVRDb2RlJik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJ
bnRFbnRyeXBvaW50c19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
eGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKworI2luY2x1ZGUgIkNh
bGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkluc3RydWN0aW9u
LmgiCisjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJw
cmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgaW50
ZXJwcmV0ZXJUaHJvdyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0
YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBleGVjLT5jb2RlQmxvY2soKS0+Ynl0ZWNv
ZGVPZmZzZXQoZXhlYywgZXhlYy0+cmV0dXJuUEMoKSkpOworfQorCitJbnN0cnVjdGlvbiogcmV0
dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0
dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7
Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1
Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9i
YWxEYXRhKCk7CisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEt
PmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4o
KSk7CisgICAgCisgICAgcmV0dXJuIGdsb2JhbERhdGEtPmxsaW50RGF0YS5leGNlcHRpb25JbnN0
cnVjdGlvbnMoKTsKK30KKwordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0
cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmds
b2JhbERhdGEoKTsKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0
YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpKTsKKyAgICAKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3df
ZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTElu
dAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9u
cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhj
ZXB0aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRFeGNlcHRpb25zX2gK
KyNkZWZpbmUgTExJbnRFeGNlcHRpb25zX2gKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVj
dGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKworLy8gSnVzdCB0aHJvdyB0aGUgY3VycmVudGx5
IGFjdGl2ZSBleGNlcHRpb24gaW4gdGhlIGNvbnRleHQgb2YgdGhpcyBleGVjIHN0YXRlCisvLyBh
bmQgc2V0IHVwIGFsbCBuZWNlc3Nhcnkgc3RhdGUuCit2b2lkIGludGVycHJldGVyVGhyb3coRXhl
Y1N0YXRlKik7CisKKy8vIFRlbGxzIHlvdSB3aGVyZSB0byBqdW1wIHRvIGlmIHlvdSB3YW50IHRv
IHJldHVybi10by10aHJvdywgYWZ0ZXIgeW91J3ZlIGFscmVhZHkKKy8vIHNldCB1cCBhbGwgaW5m
b3JtYXRpb24gbmVlZGVkIHRvIHRocm93IHRoZSBleGNlcHRpb24uCitJbnN0cnVjdGlvbiogcmV0
dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihFeGVjU3RhdGUqKTsKKworLy8gU2F2ZXMgdGhl
IGN1cnJlbnQgUEMgaW4gdGhlIGdsb2JhbCBkYXRhIGZvciBzYWZlLWtlZXBpbmcsIGFuZCBnaXZl
cyB5b3UgYSBQQworLy8gdGhhdCB5b3UgY2FuIHRlbGwgdGhlIGludGVycHJldGVyIHRvIGdvIHRv
LCB3aGljaCB3aGVuIGFkdmFuY2VkIGJldHdlZW4gMQorLy8gYW5kIDkgc2xvdHMgd2lsbCBnaXZl
IHlvdSBhbiAiaW5zdHJ1Y3Rpb24iIHRoYXQgdGhyZWFkcyB0byB0aGUgaW50ZXJwcmV0ZXIncwor
Ly8gZXhjZXB0aW9uIGhhbmRsZXIuIE5vdGUgdGhhdCBpZiB5b3UgZ2l2ZSBpdCB0aGUgUEMgZm9y
IGV4Y2VwdGlvbiBoYW5kbGluZywKKy8vIGl0J3Mgc21hcnQgZW5vdWdoIHRvIGp1c3QgcmV0dXJu
IHRoYXQgUEMgd2l0aG91dCBkb2luZyBhbnl0aGluZyBlbHNlOyB0aGlzCisvLyBsZXRzIHlvdSB0
aHJlYWQgZXhjZXB0aW9uIGhhbmRsaW5nIHRocm91Z2ggY29tbW9uIGhlbHBlciBmdW5jdGlvbnMg
dXNlZCBieQorLy8gb3RoZXIgaGVscGVycy4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4
ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisKKy8vIFVzZSB0aGlzIHdoZW4geW91J3JlIHRocm93
aW5nIHRvIGEgY2FsbCB0aHVuay4KK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSosIEluc3Ry
dWN0aW9uKik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJ
bnRFeGNlcHRpb25zX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhl
bHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE4NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRIZWxwZXJzLmgiCisKKyNpbmNsdWRlICJBcmd1bWVu
dHMuaCIKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25TbG93UGF0aHMu
aCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKKyNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKKyNpbmNsdWRlICJKU0J5dGVBcnJheS5o
IgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKKyNp
bmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTElu
dEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVk
ZSAiT3BlcmF0aW9ucy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwor
I2RlZmluZSBMTElOVF9PUChpbmRleCkgKGV4ZWMtPnJlZ2lzdGVycygpW3BjW2luZGV4XS51Lm9w
ZXJhbmRdKQorI2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5v
cGVyYW5kKSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsg
ICAgICAgXAorICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgICAgIHZvaWQqIGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgICAgIHZvaWQqIGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgfSBwYWlyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgaW50NjRfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9
IF9fcnRfdTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0
X3UucGFpci5hID0gZmlyc3Q7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3Uu
cGFpci5iID0gc2Vjb25kOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19y
dF91Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQor
CisjZGVmaW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykKKwor
I2RlZmluZSBMTElOVF9USFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fdF9nbG9iYWxEYXRhID0gZXhlYy0+
Z2xvYmFsRGF0YSgpOyAgICAgICAgXAorICAgICAgICBfX3RfZ2xvYmFsRGF0YS5leGNlcHRpb24g
PSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgXAorICAgICAgICBwYyA9IHJldHVyblRv
VGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBM
TElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
IGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmds
b2JhbERhdGEoKS5leGNlcHRpb24pKSB7ICAgXAorICAgICAgICAgICAgcGMgPSByZXR1cm5Ub1Ro
cm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9FTkRfSU1Q
TCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQor
CisjZGVmaW5lIExMSU5UX0VORCgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExM
SU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFs
c2UpCisKKyNkZWZpbmUgTExJTlRfQlJBTkNIKG9wY29kZSwgY29uZGl0aW9uKSBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYm9vbCBfX2JfY29uZGl0aW9uID0gKGNvbmRpdGlv
bik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9f
Yl9jb25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIHBjICs9IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsg
ICAgICAgIFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bj
b2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwo
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxl
IChmYWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAg
ICAgXAorICAgICAgICBKU1ZhbHVlIF9fcl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAor
ICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAg
ICBMTElOVF9PUCgxKSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAgXAorICAgICAgICBMTElO
VF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNl
KQorCisjZGVmaW5lIExMSU5UX0NBTExfRU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRf
UkVUVVJOX1RXTygoZXhlYyksIChjYWxsVGFyZ2V0KSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RI
Uk9XKGV4ZWMsIHBjLCBleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAg
ICAgICBFeGVjU3RhdGUqIF9fY3RfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9f
Y3RfZ2xvYmFsRGF0YSA9IChfX2N0X2V4ZWMpLT5nbG9iYWxEYXRhKCk7ICAgICAgXAorICAgICAg
ICBfX2N0X2dsb2JhbERhdGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3RfZXhlYywgY2FsbFRv
VGhyb3coX19jdF9leGVjLCBfX2N0X3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2Rl
ZmluZSBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19j
Y2VfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBpZiAoVU5MSUtFTFkoX19jY2VfZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBj
YWxsVG9UaHJvdyhfX2NjZV9leGVjLCBfX2NjZV9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2Up
CisKKyNkZWZpbmUgTExJTlRfQ0FMTF9SRVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhl
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rp
b24qIF9fY3JfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgdm9pZCogX19jcl9jYWxsVGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19j
cl9leGVjLT5jYWxsZXJGcmFtZSgpLCBfX2NyX3BjKTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9F
TkRfSU1QTChfX2NyX2V4ZWMsIF9fY3JfY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgIFwKKyAg
ICB9IHdoaWxlIChmYWxzZSkKKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Zvcl9wcm9n
cmFtKTsKK3sKKyAgICAvLyBGSVhNRQorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChlbnRyeV9vc3JfZm9yX2V2YWwpOworeworICAgIC8vIEZJWE1FCisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mb3JfZnVuY3Rpb25fZm9y
X2NhbGwpOworeworICAgIC8vIEZJWE1FCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGVudHJ5X29zcl9mb3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7Cit7CisgICAg
Ly8gRklYTUUKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlf
b3NyX2Zvcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKTsKK3sKKyAgICAvLyBGSVhNRQor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZm9yX2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7Cit7CisgICAgLy8gRklYTUUKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wobG9vcF9vc3IpCit7CisgICAgLy8g
RklYTUUKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSkK
K3sKKyAgICAvLyBGSVhNRQorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChyZWdpc3Rlcl9maWxlX2NoZWNrKQoreworICAgIGlmIChVTkxJS0VMWSghZXhlYy0+Z2xvYmFs
RGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5ncm93KCZleGVjLT5yZWdpc3RlcnMo
KVtleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnNdKSkpIHsKKyAgICAgICAg
ZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5l
eGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVy
cHJldGVyVGhyb3coZXhlYyk7CisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4
Y2VwdGlvbigpOworICAgIH0KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBD
b21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5p
bnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDYWxsKTsKKyAgICBpZiAoIW5ld0V4
ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMt
Pmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7
CisgICAgICAgIGludGVycHJldGVyVGhyb3coZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9U
V08oMSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICBF
eGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywg
JmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JD
b25zdHJ1Y3QpOworICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBleGVjID0gZXhlYy0+Y2Fs
bGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0
ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0ZXJUaHJvdyhleGVj
KTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygxLCBleGVjKTsKKyAgICB9CisgICAgTExJTlRf
UkVUVVJOX1RXTygwLCBleGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0
ZV9hY3RpdmF0aW9uKQoreworICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpTQWN0aXZh
dGlvbjo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYywgc3RhdGljX2Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4oZXhlYy0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSk7Cisg
ICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goYWN0aXZhdGlv
bikpOworICAgIExMSU5UX1JFVFVSTihKU1ZhbHVlKGFjdGl2YXRpb24pKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCit7CisgICAgTExJTlRfUkVUVVJO
KEpTVmFsdWUoQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3RoaXMpCit7CisgICAgSlNGdW5j
dGlvbiogY29uc3RydWN0b3IgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICAKKyNp
ZiAhQVNTRVJUX0RJU0FCTEVECisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAg
IEFTU0VSVChjb25zdHJ1Y3Rvci0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0YShjb25z
dHJ1Y3RvciwgY29uc3RydWN0RGF0YSkgPT0gQ29uc3RydWN0VHlwZUpTKTsKKyNlbmRpZgorICAg
IAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOworICAgIEpTVmFsdWUgcHJvdG8gPSBMTElOVF9P
UCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKHByb3RvLmlzT2JqZWN0KCkpCisgICAgICAgIHN0cnVj
dHVyZSA9IGFzT2JqZWN0KHByb3RvKS0+aW5oZXJpdG9ySUQoZXhlYy0+Z2xvYmFsRGF0YSgpKTsK
KyAgICBlbHNlCisgICAgICAgIHN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5zY29wZSgpLT5nbG9i
YWxPYmplY3QtPmVtcHR5T2JqZWN0U3RydWN0dXJlKCk7CisgICAgCisgICAgTExJTlRfUkVUVVJO
KGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY29udmVydF90aGlzKQoreworICAgIEpTVmFsdWUgdjEgPSBMTElOVF9P
UCgxKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHYxLmlzUHJpbWl0aXZlKCkpOworICAgIExMSU5U
X1JFVFVSTih2MS50b1RoaXNPYmplY3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmV3X29iamVjdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5KQorewor
ICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RBcnJheShleGVjLCBiaXR3aXNlX2Nhc3Q8SlNWYWx1
ZSo+KCZMTElOVF9PUCgyKSksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oY29uc3Ry
dWN0QXJyYXkoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKHBjWzJdLnUu
b3BlcmFuZCksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbmV3X3JlZ2V4cCkKK3sKKyAgICBSZWdFeHAqIHJlZ0V4cCA9IGV4ZWMtPmNvZGVCbG9jaygp
LT5yZWdleHAocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQor
ICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBmbGFn
IHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSk7CisgICAgTExJTlRfUkVUVVJOKFJl
Z0V4cE9iamVjdDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgp
LCByZWdFeHApKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCkKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNCb29sZWFuKCFMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4
ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSkKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9uZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6ZXF1YWwo
ZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKQoreworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1AoMikuanNW
YWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1Zh
bHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcykKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUCgy
KS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbGVzc2VxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNM
ZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihq
c0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDEpLmpzVmFsdWUoKS50b051bWJl
cihleGVjKSArIDEpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9kZWMpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDEpLmpzVmFsdWUoKS50b051bWJl
cihleGVjKSAtIDEpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKQor
eworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhl
Yyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQgKyAxKTsKKyAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
b3N0X2RlYykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRv
TnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0ganNOdW1iZXIocmVzdWx0IC0gMSk7Cisg
ICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfdG9fanNudW1iZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5U
X09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbmVnYXRlKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcigtTExJTlRfT1Ao
MikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9hZGQpCit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHYyID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisgICAgaWYgKHYx
LmlzU3RyaW5nKCkpIHsKKyAgICAgICAgTExJTlRfUkVUVVJOKAorICAgICAgICAgICAgdjIuaXNT
dHJpbmcoKQorICAgICAgICAgICAgPyBqc1N0cmluZyhleGVjLCBhc1N0cmluZyh2MSksIGFzU3Ry
aW5nKHYyKSkKKyAgICAgICAgICAgIDoganNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEpLCB2Mi50
b1ByaW1pdGl2ZVN0cmluZyhleGVjKSkpOworICAgIH0KKyAgICAKKyAgICBpZiAodjEuaXNOdW1i
ZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIodjEu
YXNOdW1iZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNB
ZGRTbG93Q2FzZShleGVjLCB2MSwgdjIpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X211bCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgp
LnRvTnVtYmVyKGV4ZWMpICogTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1YikKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2RpdikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMiku
anNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1i
ZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCkKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoZm1vZChMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIo
ZXhlYyksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KQoreworICAgIExMSU5UX1JFVFVSTihqc051
bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA8PCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcnNoaWZ0KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1Zh
bHVlKCkudG9JbnQzMihleGVjKSA+PiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihl
eGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdXJzaGlmdCkKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMp
ID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVy
KExMSU5UX09QKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpICYgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Jp
dG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCku
dG9JbnQzMihleGVjKSB8IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIF4gTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2JpdG5vdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIofkxMSU5UX09Q
KDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jaGVja19oYXNfaW5zdGFuY2UpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsID0gTExJTlRf
T1AoMikuanNWYWx1ZSgpOworI2lmbmRlZiBOREVCVUcKKyAgICBUeXBlSW5mbyB0eXBlSW5mbyhV
bnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VSVCghYmFzZVZhbC5pc09iamVjdCgpCisgICAgICAg
ICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVjdChiYXNlVmFsKS0+c3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKTsKKyNlbmRpZgorICAgIExMSU5UX1RIUk9X
KGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4ZWMsICJpbnN0YW5jZW9mIiwgYmFzZVZhbCkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZikKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbnN0YW5jZU9mU2xvdyhleGVjLCBM
TElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgTExJTlRfT1AoNCku
anNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKQorewor
ICAgIExMSU5UX1JFVFVSTihqc1R5cGVTdHJpbmdGb3JWYWx1ZShleGVjLCBMTElOVF9PUCgyKS5q
c1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCkK
K3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbih2LmlzQ2VsbCgpID8gdi5hc0NlbGwoKS0+c3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpIDogdi5pc1VuZGVmaW5lZCgpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKQoreworICAgIExMSU5UX1JFVFVS
Tihqc0Jvb2xlYW4oTExJTlRfT1AoMikuanNWYWx1ZSgpLmlzQm9vbGVhbigpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihMTElOVF9PUCgyKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xl
YW4oaXNKU1N0cmluZyhMTElOVF9PUCgyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9pc19vYmplY3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihq
c0lzT2JqZWN0VHlwZShMTElOVF9PUCgyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KGpzSXNGdW5jdGlvblR5cGUoTExJTlRfT1AoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21t
b25TbG93UGF0aHM6Om9wSW4oZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgz
KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKQor
eworICAgIExMSU5UX1JFVFVSTihDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZShleGVjLCBleGVj
LT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApCit7CisgICAgTExJTlRfUkVUVVJOKAor
ICAgICAgICBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVNraXAoCisgICAgICAgICAgICBleGVj
LAorICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVy
YW5kKSwKKyAgICAgICAgICAgIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5pc0ds
b2JhbE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBpbnQg
b2Zmc2V0ID0gcGNbNF0udS5vcGVyYW5kOworICAgIAorICAgIEFTU0VSVCgoIXN0cnVjdHVyZSkg
PT0gKCFvZmZzZXQpKTsKKyAgICBBU1NFUlQoc3RydWN0dXJlICE9IGdsb2JhbE9iamVjdC0+c3Ry
dWN0dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVu
dGlmaWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3QpOwor
ICAgIAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwg
c2xvdCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGlk
ZW50KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmICFnbG9iYWxPYmpl
Y3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAm
JiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICBwY1szXS51
LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAg
ICAgICAgICAgIHBjWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgTExJTlRfUkVUVVJOKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIExMSU5U
X1RIUk9XKGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSkKK3sKKyAgICBJZGVudGlmaWVy
JiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7
CisgICAgaWYgKHBjWzNdLnUub3BlcmFuZCkgeworICAgICAgICBKU1ZhbHVlIGJhc2UgPSBKU0M6
OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIHRydWUpOworICAg
ICAgICBpZiAoIWJhc2UpCisgICAgICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvcklu
dmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgICAgICBM
TElOVF9SRVRVUk4oYmFzZSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihKU0M6OnJl
c29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIGZhbHNlKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKQoreworICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAg
IFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVj
LT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghb2Jq
ZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKQorICAgICAgICBMTElOVF9U
SFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVz
dHJpbmcoKSkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcmVzb2x2ZV93aXRoX2Jhc2UpCit7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93
UGF0aHM6Om9wUmVzb2x2ZVdpdGhCYXNlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlm
aWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQoreworICAgIEpT
VmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVXaXRoVGhpcyhleGVjLCBl
eGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgx
KSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1
bHQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRf
YnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsK
KyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9w
ZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOwor
ICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOworICAgIExMSU5UX09QKDEpID0gcmVzdWx0OworCisgICAgaWYgKGJhc2VWYWx1ZS5p
c0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkKKyAgICAgICAgJiYgc2xvdC5z
bG90QmFzZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAmJiBzbG90LmNhY2hlZFByb3BlcnR5VHlw
ZSgpID09IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCog
YmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1
Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKKyAgICAgICAgICAg
IHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRh
KCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAg
ICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUp
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCit7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9
IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJh
c2VWYWx1ZSk7CisgICAgTExJTlRfUkVUVVJOKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNs
b3QpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCkKK3sKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXIm
IGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QoY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAgYmFzZVZhbHVlLnB1dChl
eGVjLCBpZGVudCwgTExJTlRfT1AoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICAKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCisgICAgICAg
ICYmIHNsb3QuaXNDYWNoZWFibGUoKSkgeworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNl
Q2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVjdHVy
ZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+
dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKQorICAgICAgICAgICAgJiYgYmFz
ZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNs
b3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJ
RCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFu
ZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUg
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWwpOworICAgICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAg
ICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCksIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
cGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsK
KyAgICAgICAgICAgICAgICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAg
ICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgICAgICBwY1s3XS51LnN0cnVjdHVyZUNo
YWluLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVj
KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9i
eV9pZCk7CisgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAg
ICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5j
YWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2RlbF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNv
ZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gTExJTlRfT1AoMikuanNWYWx1
ZSgpLnRvT2JqZWN0KGV4ZWMpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBjb2RlQmxvY2st
PmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQor
ICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxl
dGUgcHJvcGVydHkuIikpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUp
KTsKK30KKworaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCit7CisgICAgaWYgKExJS0VMWShiYXNlVmFs
dWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7CisgICAgICAgIGlmIChKU1Zh
bHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KGV4ZWMs
IGFzU3RyaW5nKHN1YnNjcmlwdCktPnZhbHVlKGV4ZWMpKSkKKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorICAgIAorICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgeworICAg
ICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pT
U3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkp
CisgICAgICAgICAgICByZXR1cm4gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywg
aSk7CisgICAgICAgIAorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYmIGFz
Qnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAgcmV0
dXJuIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAK
KyAgICAgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgaSk7CisgICAgfQorICAgIAorICAg
IElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpKTsKKyAg
ICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBwcm9wZXJ0eSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKQoreworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChl
eGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKK3sKKyAgICBK
U1ZhbHVlIGFyZ3VtZW50cyA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFyZ3Vt
ZW50cykgeworICAgICAgICBhcmd1bWVudHMgPSBBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMpOworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAg
ICAgTExJTlRfT1AoMikgPSBhcmd1bWVudHM7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVS
TihnZXRCeVZhbChleGVjLCBhcmd1bWVudHMsIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKQoreworICAgIExMSU5UX1JF
VFVSTihnZXRCeVZhbChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpz
VmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCkKK3sK
KyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAg
CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1
ZSA9IExMSU5UX09QKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBpZiAoTElLRUxZKHN1YnNjcmlw
dC5pc1VJbnQzMigpKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMy
KCk7CisgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgeworICAgICAgICAgICAgSlNB
cnJheSoganNBcnJheSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChqc0Fy
cmF5LT5jYW5TZXRJbmRleChpKSkKKyAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRleChn
bG9iYWxEYXRhLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
SlNBcnJheTo6cHV0QnlJbmRleChqc0FycmF5LCBleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgICAg
ICBMTElOVF9FTkQoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNl
VmFsdWUpCisgICAgICAgICAgICAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJ
bmRleChpKSkgeworICAgICAgICAgICAgSlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRl
QXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAg
ICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNJbnQzMigpKTsK
KyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmICh2YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNl
dEluZGV4KGksIHZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywg
aSwgdmFsdWUpOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSWRlbnRp
ZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYykpOworICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGV4ZWMtPmNvZGVC
bG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0
eSwgdmFsdWUsIHNsb3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZGVsX2J5X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09Q
KDIpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09i
amVjdChleGVjKTsKKyAgICAKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QKDMpLmpz
VmFsdWUoKTsKKyAgICAKKyAgICBib29sIGNvdWxkRGVsZXRlOworICAgIAorICAgIHVpbnQzMl90
IGk7CisgICAgaWYgKHN1YnNjcmlwdC5nZXRVSW50MzIoaSkpCisgICAgICAgIGNvdWxkRGVsZXRl
ID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KGJhc2VP
YmplY3QsIGV4ZWMsIGkpOworICAgIGVsc2UgeworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJp
bmcoZXhlYykpOworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgY291
bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNl
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eSk7CisgICAgfQorICAgIAorICAgIGlmICghY291bGREZWxl
dGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElOVF9U
SFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikp
OworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCkKK3sKKyAgICBMTElOVF9PUCgx
KS5qc1ZhbHVlKCkucHV0KGV4ZWMsIHBjWzJdLnUub3BlcmFuZCwgTExJTlRfT1AoMykuanNWYWx1
ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1
dF9nZXR0ZXIpCit7CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgp
KTsKKyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUo
KSk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmll
cihwY1syXS51Lm9wZXJhbmQpOworICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNP
YmplY3QoKSk7CisgICAgYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lR2V0dGVyKGJhc2VP
YmosIGV4ZWMsIGlkZW50LCBhc09iamVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIp
Cit7CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBK
U09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAg
SWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51
Lm9wZXJhbmQpOworICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7
CisgICAgYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lU2V0dGVyKGJhc2VPYmosIGV4ZWMs
IGlkZW50LCBhc09iamVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpCit7CisgICAg
dW5zaWduZWQgY291bnQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgU2NvcGVDaGFpbk5vZGUqIHRt
cCA9IGV4ZWMtPnNjb3BlQ2hhaW4oKTsKKyAgICB3aGlsZSAoY291bnQtLSkKKyAgICAgICAgdG1w
ID0gdG1wLT5wb3AoKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKHRtcCk7CisgICAgcGMgKz0g
cGNbMl0udS5vcGVyYW5kOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfanRydWUpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2p0cnVlLCBMTElOVF9PUCgx
KS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2pmYWxzZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamZhbHNlLCAhTExJTlRfT1AoMSku
anNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qbGVzcykKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3MsIGpzTGVzczx0cnVlPihleGVj
LCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcykKK3sKKyAgICBMTElOVF9CUkFOQ0go
b3Bfam5sZXNzLCAhanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
amdyZWF0ZXIpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVhdGVyLCBqc0xlc3M8ZmFsc2U+
KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKQoreworICAgIExMSU5U
X0JSQU5DSChvcF9qbmdyZWF0ZXIsICFqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMSku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfamxlc3NlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3NlcSwganNM
ZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSkKK3sK
KyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzZXEsICFqc0xlc3NFcTx0cnVlPihleGVjLCBMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9w
X2pncmVhdGVyZXEsIGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2puZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmdyZWF0ZXJlcSwgIWpz
TGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9pbW0p
Cit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7CisgICAg
QVNTRVJUKHNjcnV0aW5lZS5pc0RvdWJsZSgpKTsKKyAgICBkb3VibGUgdmFsdWUgPSBzY3J1dGlu
ZWUuYXNEb3VibGUoKTsKKyAgICBpbnQzMl90IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJf
dD4odmFsdWUpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAg
IGlmICh2YWx1ZSA9PSBpbnRWYWx1ZSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2RlQmxvY2stPmltbWVkaWF0ZVN3
aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGludFZhbHVlLCBk
ZWZhdWx0T2Zmc2V0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9z
dHJpbmcpCit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7
CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKCFzY3J1
dGluZWUuaXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBlbHNl
IHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAg
ICAgICAgcGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVy
YW5kKS5vZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGluZWUpLT52YWx1ZShleGVjKS5pbXBs
KCksIGRlZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUoKSAh
PSBGdW5jdGlvbkNvZGUKKyAgICAgICAgICAgfHwgIWNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVD
aGFpbigpCisgICAgICAgICAgIHx8IGV4ZWMtPnVuY2hlY2tlZFIoY29kZUJsb2NrLT5hY3RpdmF0
aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9SRVRVUk4oY29kZUJsb2NrLT5m
dW5jdGlvbkRlY2wocGNbMl0udS5vcGVyYW5kKS0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWlu
KCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jX2V4cCkKK3sKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1syXS51Lm9w
ZXJhbmQpOworICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBmdW5jdGlvbi0+bWFrZShleGVjLCBleGVj
LT5zY29wZUNoYWluKCkpOworICAgIAorICAgIGlmICghZnVuY3Rpb24tPm5hbWUoKS5pc051bGwo
KSkgeworICAgICAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBmdW5jdGlvblNjb3BlT2JqZWN0ID0g
SlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKCksIGZ1bmMs
IFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGZ1bmMtPnNldFNjb3BlKGV4ZWMtPmds
b2JhbERhdGEoKSwgZnVuYy0+c2NvcGUoKS0+cHVzaChmdW5jdGlvblNjb3BlT2JqZWN0KSk7Cisg
ICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihmdW5jKTsKK30KKworc3RhdGljIEhlbHBlclJl
dHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlv
biogcGMsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7Cisg
ICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICBKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworCisgICAgZXhlY0Nh
bGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUt
PnNldENvZGVCbG9jaygwKTsKKworICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAg
ICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENh
bGxEYXRhKGNhbGxlZSwgY2FsbERhdGEpOworICAgIAorICAgICAgICBBU1NFUlQoY2FsbFR5cGUg
IT0gQ2FsbFR5cGVKUyk7CisgICAgCisgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUhv
c3QpIHsKKyAgICAgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICAgICAg
fQorICAgIAorICAgICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKTsKKyAgICAg
ICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhl
YywgY2FsbGVlKSk7CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVj
dCk7CisgICAgCisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIENvbnN0cnVj
dFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEoY2FsbGVlLCBjb25zdHJ1Y3RE
YXRhKTsKKyAgICAKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlSlMp
OworICAgIAorICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVIb3N0KSB7Cisg
ICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUo
Y29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICBMTElO
VF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQoY29uc3RydWN0
VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSk7CisgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBw
YywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7Cit9CisKK2lubGlu
ZSBIZWxwZXJSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3Ry
dWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFz
VmFsdWUsIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSAwKQoreworICAgIEFTU0VS
VCghZXhwZWN0ZWRGdW5jdGlvbiA9PSAhbWFjaGluZUNvZGUpOworICAgIAorICAgIEpTQ2VsbCog
Y2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOworICAg
IGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCisgICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2Fs
bChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwga2luZCk7CisgICAgCisgICAgSlNGdW5j
dGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgZXhl
Y0NhbGxlZS0+c2V0U2NvcGVDaGFpbihjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCkpOworICAgIEV4
ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7CisgICAgCisg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSAwOworICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICBj
b2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9y
Q2FsbCgpOworICAgIGVsc2UgeworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9u
RXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUp
OworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbXBpbGVG
b3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29wZSgpLCBraW5kKTsKKyAgICAgICAgaWYgKGVycm9y
KQorICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgp
LCBwYywgZXJyb3IpOworICAgICAgICBjb2RlQmxvY2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5n
ZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFi
bGUtPmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihraW5kKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklU
Q29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIH0KKyAgICAKKyAgICBpZiAoY2Fs
bExpbmtJbmZvKSB7CisgICAgICAgIGNhbGxMaW5rSW5mby0+Y2FsbGVlLnNldChleGVjQ2FsbGVl
LT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZUFzRnVu
Y3Rpb25DZWxsKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5tYWNoaW5lQ29kZVRhcmV0ID0gY29k
ZVB0cjsKKyAgICAgICAgaWYgKGNvZGVCbG9jaykKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bGlu
a0luY29taW5nQ2FsbChjYWxsTGlua0luZm8pOworICAgIH0KKyAgICAKKyAgICBMTElOVF9DQUxM
X1JFVFVSTihleGVjQ2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKK30K
KworaW5saW5lIEhlbHBlclJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBJ
bnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICAvLyBU
aGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAvLyAtIEZp
Z3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAv
LyAtIElmIHBvc3NpYmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAgIC8vIC0g
UmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5l
dyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09Q
KDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsg
cGNbM10udS5vcGVyYW5kOworICAgIAorICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFuZCk7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2Vk
UihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUt
PnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIAorICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0Nh
bGxlZSwgcGMsIGtpbmQsIGNhbGxlZUFzVmFsdWUsICZwY1s0XS51LmpzQ2VsbCwgJnBjWzVdLnUu
cG9pbnRlcik7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKQoreworICAgIHJl
dHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY29uc3RydWN0KQoreworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVj
LCBwYywgQ29kZUZvckNvbnN0cnVjdCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
YWxsX3ZhcmFyZ3MpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBh
IGNhbGwgZnJhbWUgd2hpbGUgcmVzcGVjdGluZyB0aGUgdmFyaWFibGUgYXJndW1lbnRzLgorICAg
IC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5
LgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2Fs
bCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1
ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxs
ZWUgPSBsb2FkVmFyYXJncygKKyAgICAgICAgZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRl
cnByZXRlci0+cmVnaXN0ZXJGaWxlKCksCisgICAgICAgIExMSU5UX09QKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1AoMykuanNWYWx1ZSgpLCBwY1s0XS51Lm9wZXJhbmQpOworICAgIExMSU5UX0NBTExf
Q0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNr
ZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxl
ZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgCisgICAgcmV0dXJuIHNldFVwQ2FsbChleGVj
Q2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKQoreworICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9
IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUg
PSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9
IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnNldENh
bGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxl
OjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWlu
KGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMoYml0d2lz
ZV9jYXN0PEluc3RydWN0aW9uKj4oJmxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAg
ZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworICAgIAorICAgIGlmICghaXNIb3N0RnVuY3Rp
b24oY2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQorICAgICAgICByZXR1cm4gc2V0VXBD
YWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7CisgICAgCisg
ICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0gZXZhbChleGVjQ2FsbGVlKTsKKyAg
ICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKK3sKKyAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkt
Pm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgSlNWYWx1ZSBhY3RpdmF0aW9uVmFsdWUgPSBM
TElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhY3RpdmF0aW9uVmFsdWUpIHsKKyAgICAg
ICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnJlZ2lzdGVycygpW3VubW9kaWZpZWRBcmd1bWVudHNS
ZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpXS5qc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGlmICgh
ZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAgIGFzQXJn
dW1lbnRzKHYpLT50ZWFyT2ZmKGV4ZWMpOworICAgICAgICB9CisgICAgICAgIExMSU5UX0VORCgp
OworICAgIH0KKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oYWN0
aXZhdGlvblZhbHVlKTsKKyAgICBhY3RpdmF0aW9uLT50ZWFyT2ZmKGV4ZWMtPmdsb2JhbERhdGEo
KSk7CisgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnJlZ2lzdGVycygpW3VubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpXS5qc1ZhbHVlKCkpCisgICAgICAgIGFzQXJn
dW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGFjdGl2
YXRpb24pOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
dGVhcl9vZmZfYXJndW1lbnRzKQoreworICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+dXNl
c0FyZ3VtZW50cygpICYmICFleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigp
KTsKKyAgICBhc0FyZ3VtZW50cyhleGVjLT5yZWdpc3RlcnMoKVt1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKV0uanNWYWx1ZSgpKS0+dGVhck9mZihleGVjKTsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNhdCkKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNTdHJpbmcoZXhlYywgJkxMSU5UX09QKDIpLCBwY1szXS51Lm9w
ZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSkKK3sK
KyAgICBMTElOVF9SRVRVUk4oTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpCit7CisgICAgSlNW
YWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICh2LmlzVW5kZWZpbmVkT3JO
dWxsKCkpIHsKKyAgICAgICAgcGMgKz0gcGNbNV0udS5vcGVyYW5kOworICAgICAgICBMTElOVF9F
TkQoKTsKKyAgICB9CisgICAgCisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOwor
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gby0+c3RydWN0dXJlKCk7CisgICAgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IHN0cnVjdHVyZS0+ZW51bWVy
YXRpb25DYWNoZSgpOworICAgIGlmICghanNQcm9wZXJ0eU5hbWVJdGVyYXRvciB8fCBqc1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQcm90b3R5cGVDaGFpbigpICE9IHN0cnVjdHVyZS0+cHJv
dG90eXBlQ2hhaW4oZXhlYykpCisgICAgICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywgbyk7CisgICAgCisgICAgTExJTlRfT1Ao
MSkgPSBKU1ZhbHVlKGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOworICAgIExMSU5UX09QKDIpID0g
SlNWYWx1ZShvKTsKKyAgICBMTElOVF9PUCgzKSA9IFJlZ2lzdGVyOjp3aXRoSW50KDApOworICAg
IExMSU5UX09QKDQpID0gUmVnaXN0ZXI6OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+
c2l6ZSgpKTsKKyAgICAKKyAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFtZXMpOwor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFt
ZSkKK3sKKyAgICBKU09iamVjdCogYmFzZSA9IGFzT2JqZWN0KExMSU5UX09QKDIpLmpzVmFsdWUo
KSk7CisgICAgSlNTdHJpbmcqIHByb3BlcnR5ID0gYXNTdHJpbmcoTExJTlRfT1AoMSkuanNWYWx1
ZSgpKTsKKyAgICBpZiAoYmFzZS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBw
cm9wZXJ0eS0+dmFsdWUoZXhlYykpKSkgeworICAgICAgICAvLyBHbyB0byB0YXJnZXQuCisgICAg
ICAgIHBjICs9IHBjWzZdLnUub3BlcmFuZDsKKyAgICB9IC8vIEVsc2UsIGRvbid0IGNoYW5nZSB0
aGUgUEMsIHNvIHRoZSBpbnRlcnByZXRlciB3aWxsIHJlbG9vcC4KKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpCit7CisgICAgSlNWYWx1
ZSB2ID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVj
dChleGVjKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBMTElOVF9P
UCgxKSA9IG87CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1
c2gobykpOworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcG9wX3Njb3BlKQoreworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVD
aGFpbigpLT5wb3AoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wdXNoX25ld19zY29wZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBzY29wZSA9IEpTU3RhdGljU2NvcGVPYmpl
Y3Q6OmNyZWF0ZShleGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwg
TExJTlRfT1AoMykuanNWYWx1ZSgpLCBEb250RGVsZXRlKTsKKyAgICBleGVjLT5zZXRTY29wZUNo
YWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChzY29wZSkpOworICAgIExMSU5UX1JFVFVSTihz
Y29wZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdykKK3sKKyAgICBMTElO
VF9USFJPVyhMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQoreworICAgIExMSU5UX1RIUk9XKGNyZWF0ZVJl
ZmVyZW5jZUVycm9yKGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvU3RyaW5nKGV4ZWMp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1ZykKK3sKKyAgICBpbnQgZGVi
dWdIb29rSUQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgaW50IGZpcnN0TGluZSA9IHBjWzJdLnUu
b3BlcmFuZDsKKyAgICBpbnQgbGFzdExpbmUgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5kZWJ1ZyhleGVjLCBzdGF0aWNfY2FzdDxE
ZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfd2ls
bF9jYWxsKQoreworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSgpKS0+
d2lsbEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCit7Cisg
ICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT5kaWRFeGVjdXRlKGV4
ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50
SGVscGVyc19oCisjZGVmaW5lIExMSW50SGVscGVyc19oCisKKyNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3Qg
SW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKK3R5cGVkZWYgaW50NjRfdCBIZWxw
ZXJSZXR1cm5UeXBlOworCisjZGVmaW5lIExMSU5UX0hFTFBFUl9ERUNMKG5hbWUpIFwKKyAgICBl
eHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfIyNuYW1lKEV4ZWNTdGF0ZSogZXhlYywg
SW5zdHJ1Y3Rpb24qIHBjKQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZm9yX3Byb2dy
YW0pOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Zvcl9ldmFsKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGVudHJ5X29zcl9mb3JfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RF
Q0woZW50cnlfb3NyX2Zvcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGVudHJ5X29zcl9mb3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9I
RUxQRVJfREVDTChlbnRyeV9vc3JfZm9yX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVj
ayk7CitMTElOVF9IRUxQRVJfREVDTChsb29wX29zcik7CitMTElOVF9IRUxQRVJfREVDTChyZXBs
YWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0
ZV9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRz
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY29udmVydF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdf
b2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25ld19yZWdleHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25zdHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcyk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVh
dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3ByZV9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9kZWMp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wb3N0X2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfYWRkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3N1Yik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9tb2QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlm
dCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl91cnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9i
aXR4b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9pbnN0YW5jZW9mKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaXNfYm9vbGVhbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2lzX29iamVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9y
ZXNvbHZlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9yZXNvbHZlX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9w
ZXJ0eV9leGlzdHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNl
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcyk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9n
ZXRfYXJndW1lbnRzX2xlbmd0aCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lk
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dldF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1
bWVudF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZGVsX2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wdXRfc2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2Nv
cGVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qdHJ1ZSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfamZhbHNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
Z3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxl
c3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfam5ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3
aXRjaF9pbW0pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9jaGFyKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9uZXdfZnVuYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmNfZXhwKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFy
X29mZl9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNhdCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9nZXRfcG5hbWVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXh0X3BuYW1lKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wb3Bfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Nj
b3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdyk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9kZWJ1Zyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpOworCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50SGVscGVyc19oCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmln
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZs
aW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludE9mZmxpbmVB
c21Db25maWdfaAorI2RlZmluZSBMTEludE9mZmxpbmVBc21Db25maWdfaAorCisjaW5jbHVkZSAi
TExJbnRDb21tb24uaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4NikKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDEK
KyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisjZW5kaWYKKworI2lmIENQVShBUk12
NykKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9B
U01fQVJNdjcgMAorI2VuZGlmCisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisjZGVmaW5lIE9GRkxJ
TkVfQVNNX0FTU0VSVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VS
VF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgQ1BVKEJJR19FTkRJQU4pCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX0JJR19FTkRJQU4gMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElB
TiAwCisjZW5kaWYKKworI2lmIEVOQUJMRShMTElOVF9PU1JfVE9fSklUKQorI2RlZmluZSBPRkZM
SU5FX0FTTV9KSVRfRU5BQkxFRCAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5B
QkxFRCAwCisjZW5kaWYKKworI2lmIExMSU5UX0VYRUNVVElPTl9UUkFDSU5HCisjZGVmaW5lIE9G
RkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNN
X0VYRUNVVElPTl9UUkFDSU5HIDAKKyNlbmRpZgorCisjZW5kaWYgLy8gTExJbnRPZmZsaW5lQXNt
Q29uZmlnX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQWxsb2NhdGlvblNwYWNlLmgiCisj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUg
IkhlYXAuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVFN0dWJzLmgi
CisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlN0eXBlSW5m
by5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKdW1wVGFibGUu
aCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRlICJNYXJrZWRT
cGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4u
aCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgor
I2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwu
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgT0ZGTElORV9BU01fT0ZGU0VUT0YoY2xh
enosIGZpZWxkKSBPQkpFQ1RfT0ZGU0VUT0YoY2xhenosIGZpZWxkKQorCitjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCogZHVt
bXkoKTsKK307CisKK2NvbnN0IHVuc2lnbmVkKiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15
KCkKK3sKKyNpbmNsdWRlICJMTEludERlc2lyZWRPZmZzZXRzLmgiCisgICAgcmV0dXJuIGV4dHJh
Y3RvclRhYmxlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworaW50IG1haW4oaW50LCBjaGFy
KiopCit7CisgICAgLy8gT3V0IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0aW9uLCBtYWtlIHN1cmUg
dGhhdCBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkgaXMgbGl2ZSwKKyAgICAvLyBhbmQg
dGhlIGV4dHJhY3RvclRhYmxlIGlzIGxpdmUsIHRvby4KKyAgICBwcmludGYoIiVwXG4iLCBKU0M6
OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSk7CisgICAgcmV0dXJuIDA7Cit9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludFRodW5r
cy5oIgorCisjaW5jbHVkZSAiSlNJbnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRlICJMb3dMZXZlbElu
dGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCB2b2lkICgqdGFyZ2V0KSgpKQoreworICAgIEpTSW50ZXJmYWNlSklUIGppdDsK
KyAgICAKKyAgICAvLyBGSVhNRTogdGhlcmUncyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8g
aXQgb24gWDg2LCBidXQgSSdtIG5vdCBzdXJlIEkgY2FyZS4KKyAgICBqaXQubW92ZShKU0ludGVy
ZmFjZUpJVDo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdldCkpLCBKU0lu
dGVyZmFjZUpJVDo6cmVnVDApOworICAgIGppdC5qdW1wKEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7
CisgICAgCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwgJmppdCk7Cisg
ICAgcmV0dXJuIHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOworfQorCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2Jh
bERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihKU0ds
b2JhbERhdGEqKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxE
YXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKK30KKworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5VGh1bmtHZW5lcmF0b3IoSlNHbG9i
YWxEYXRhKikKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0
YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eVRodW5rR2VuZXJhdG9yKEpTR2xv
YmFsRGF0YSopCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERh
dGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spOworfQorCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKikK
K3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRf
ZXZhbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlU
aHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKTsKK30KKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludFRo
dW5rc19oCisjZGVmaW5lIExMSW50VGh1bmtzX2gKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRhOworCitu
YW1lc3BhY2UgTExJbnQgeworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxs
RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlUaHVua0dlbmVyYXRv
cihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0
cnVjdEFyaXR5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnRUaHVua3NfaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMjYyIEBACisj
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyMgQ3Jhc2ggY291
cnNlIG9uIHRoZSBsYW5ndWFnZSB0aGF0IHRoaXMgaXMgd3JpdHRlbiBpbiAod2hpY2ggSSBqdXN0
IGNhbGwKKyMgImFzc2VtYmx5IiBldmVuIHRob3VnaCBpdCdzIG1vcmUgdGhhbiB0aGF0KToKKyMK
KyMgLSBNb3N0bHkgZ2FzLXN0eWxlIG9wZXJhbmQgb3JkZXJpbmcuIFRoZSBsYXN0IG9wZXJhbmQg
dGVuZHMgdG8gYmUgdGhlCisjICAgZGVzdGluYXRpb24uIFNvICJhIDo9IGIiIGlzIHdyaXR0ZW4g
YXMgIm1vdiBiLCBhIi4gQnV0IHVubGlrZSBnYXMsCisjICAgY29tcGFyaXNvbnMgYXJlIGluLW9y
ZGVyLCBzbyAiaWYgKGEgPCBiKSIgaXMgd3JpdHRlbiBhcworIyAgICJiaWx0IGEsIGIsIC4uLiIu
CisjCisjIC0gImIiID0gYnl0ZSwgImgiID0gMTYtYml0IHdvcmQsICJpIiA9IDMyLWJpdCB3b3Jk
LCAicCIgPSBwb2ludGVyLgorIyAgIEN1cnJlbnRseSB0aGlzIGlzIGp1c3QgMzItYml0IHNvICJp
IiBhbmQgInAiIGFyZSBpbnRlcmNoYW5nZWFibGUKKyMgICBleGNlcHQgd2hlbiBhbiBvcCBzdXBw
b3J0cyBvbmUgYnV0IG5vdCB0aGUgb3RoZXIuCisjCisjIC0gSW4gZ2VuZXJhbCwgdmFsaWQgb3Bl
cmFuZHMgZm9yIG1hY3JvIGludm9jYXRpb25zIGFuZCBpbnN0cnVjdGlvbnMgYXJlCisjICAgcmVn
aXN0ZXJzIChlZyAidDAiKSwgYWRkcmVzc2VzIChlZyAiNFt0MF0iKSwgYmFzZS1pbmRleCBhZGRy
ZXNzZXMKKyMgICAoZWcgIjdbdDAsIHQxLCAyXSIpLCBhYnNvbHV0ZSBhZGRyZXNzZXMgKGVnICIw
eGEwMDAwMDAwW10iKSwgb3IgbGFiZWxzCisjICAgKGVnICJfZm9vIiBvciAiLmZvbyIpLiBNYWNy
byBpbnZvY2F0aW9ucyBjYW4gYWxzbyB0YWtlIGFub255bW91cworIyAgIG1hY3JvcyBhcyBvcGVy
YW5kcy4gSW5zdHJ1Y3Rpb25zIGNhbm5vdCB0YWtlIGFub255bW91cyBtYWNyb3MuCisjCisjIC0g
TGFiZWxzIG11c3QgaGF2ZSBuYW1lcyB0aGF0IGJlZ2luIHdpdGggZWl0aGVyICJfIiBvciAiLiIu
ICBBICIuIiBsYWJlbAorIyAgIGlzIGxvY2FsIGFuZCBnZXRzIHJlbmFtZWQgYmVmb3JlIGNvZGUg
Z2VuIHRvIG1pbmltaXplIG5hbWVzcGFjZQorIyAgIHBvbGx1dGlvbi4gQSAiXyIgbGFiZWwgaXMg
YW4gZXh0ZXJuIHN5bWJvbCAoaS5lLiAiLmdsb2JsIikuIFRoZSAiXyIKKyMgICBtYXkgb3IgbWF5
IG5vdCBiZSByZW1vdmVkIGR1cmluZyBjb2RlIGdlbiBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUg
YXNtCisjICAgY29udmVudGlvbnMgZm9yIEMgbmFtZSBtYW5nbGluZyBvbiB0aGUgdGFyZ2V0IHBs
YXRmb3JtIG1hbmRhdGUgYSAiXyIKKyMgICBwcmVmaXguCisjCisjIC0gQSAibWFjcm8iIGlzIGEg
bGFtYmRhIGV4cHJlc3Npb24sIHdoaWNoIG1heSBiZSBlaXRoZXIgYW5vbnltb3VzIG9yCisjICAg
bmFtZWQuIEJ1dCB0aGlzIGhhcyBjYXZlYXRzLiAibWFjcm8iIGNhbiB0YWtlIHplcm8gb3IgbW9y
ZSBhcmd1bWVudHMsCisjICAgd2hpY2ggbWF5IGJlIG1hY3JvcyBvciBhbnkgdmFsaWQgb3BlcmFu
ZHMsIGJ1dCBpdCBjYW4gb25seSByZXR1cm4KKyMgICBjb2RlLiBCdXQgeW91IGNhbiBkbyBUdXJp
bmctY29tcGxldGUgdGhpbmdzIHZpYSBjb250aW51YXRpb24gcGFzc2luZworIyAgIHN0eWxlOiAi
bWFjcm8gZm9vIChhLCBiKSBiKGEpIGVuZCBmb28oZm9vLCBmb28pIi4gQWN0dWFsbHksIGRvbid0
IGRvCisjICAgdGhhdCwgc2luY2UgeW91J2xsIGp1c3QgY3Jhc2ggdGhlIGFzc2VtYmxlci4KKyMK
KyMgLSBBbiAiaWYiIGlzIGEgY29uZGl0aW9uYWwgb24gc2V0dGluZ3MuIEFueSBpZGVudGlmaWVy
IHN1cHBsaWVkIGluIHRoZQorIyAgIHByZWRpY2F0ZSBvZiBhbiAiaWYiIGlzIGFzc3VtZWQgdG8g
YmUgYSAjZGVmaW5lIHRoYXQgaXMgYXZhaWxhYmxlCisjICAgZHVyaW5nIGNvZGUgZ2VuLiBTbyB5
b3UgY2FuJ3QgdXNlICJpZiIgZm9yIGNvbXB1dGF0aW9uIGluIGEgbWFjcm8sIGJ1dAorIyAgIHlv
dSBjYW4gdXNlIGl0IHRvIHNlbGVjdCBkaWZmZXJlbnQgcGllY2VzIG9mIGNvZGUgZm9yIGRpZmZl
cmVudAorIyAgIHBsYXRmb3Jtcy4KKyMKKyMgLSBBcmd1bWVudHMgdG8gbWFjcm9zIGZvbGxvdyBs
ZXhpY2FsIHNjb3BpbmcgcmF0aGVyIHRoYW4gZHluYW1pYyBzY29waW5nLgorIyAgIENvbnN0J3Mg
YWxzbyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIGFuZCBtYXkgb3ZlcnJpZGUgKGhpZGUpIGFyZ3Vt
ZW50cworIyAgIG9yIG90aGVyIGNvbnN0cy4gQWxsIHZhcmlhYmxlcyAoYXJndW1lbnRzIGFuZCBj
b25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAgIHRvIG9wZXJhbmRzLiBBZGRpdGlvbmFsbHksIGFy
Z3VtZW50cyAoYnV0IG5vdCBjb25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAgIHRvIG1hY3Jvcy4K
KworCisjIFRoZXNlIGRlY2xhcmF0aW9ucyBtdXN0IG1hdGNoIGludGVycHJldGVyL1JlZ2lzdGVy
RmlsZS5oLgorY29uc3QgQ2FsbEZyYW1lSGVhZGVyU2l6ZSA9IDQ4Citjb25zdCBBcmd1bWVudENv
dW50ID0gLTQ4Citjb25zdCBDYWxsZXJGcmFtZSA9IC00MAorY29uc3QgQ2FsbGVlID0gLTMyCitj
b25zdCBTY29wZUNoYWluID0gLTI0Citjb25zdCBSZXR1cm5QQyA9IC0xNgorY29uc3QgQ29kZUJs
b2NrID0gLTgKKworIyBEZWNsYXJlIHNvbWUgYWxpYXNlcyBmb3IgdGhlIHJlZ2lzdGVycyB3ZSB3
aWxsIHVzZS4KK2NvbnN0IFBDID0gdDQKKworIyBPZmZzZXRzIG5lZWRlZCBmb3IgcmVhc29uaW5n
IGFib3V0IHZhbHVlIHJlcHJlc2VudGF0aW9uLgoraWYgQklHX0VORElBTgorICAgIGNvbnN0IFRh
Z09mZnNldCA9IDAKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gNAorZWxzZQorICAgIGNvbnN0
IFRhZ09mZnNldCA9IDQKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gMAorZW5kCisKKyMgVmFs
dWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgorY29uc3QgSW50MzJUYWcgPSAtMQorY29uc3Qg
Qm9vbGVhblRhZyA9IC0yCitjb25zdCBOdWxsVGFnID0gLTMKK2NvbnN0IFVuZGVmaW5lZFRhZyA9
IC00Citjb25zdCBDZWxsVGFnID0gLTUKK2NvbnN0IEVtcHR5VmFsdWVUYWcgPSAtNgorY29uc3Qg
RGVsZXRlZFZhbHVlVGFnID0gLTcKK2NvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRhZwor
CisjIFR5cGUgY29uc3RhbnRzLgorY29uc3QgU3RyaW5nVHlwZSA9IDUKK2NvbnN0IE9iamVjdFR5
cGUgPSAxMAorCisjIFR5cGUgZmxhZ3MgY29uc3RhbnRzLgorY29uc3QgTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCA9IDEKK2NvbnN0IEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDIKK2NvbnN0IEltcGxl
bWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSA4CisKKyMgSGVhcCBhbGxvY2F0aW9uIGNvbnN0YW50
cy4KK2NvbnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9IDEKKworIyBCeXRlY29kZSBv
cGVyYW5kIGNvbnN0YW50cy4KK2NvbnN0IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0
MDAwMDAwMAorCisjIENvZGUgdHlwZSBjb25zdGFudHMuCitjb25zdCBHbG9iYWxDb2RlID0gMAor
Y29uc3QgRXZhbENvZGUgPSAxCitjb25zdCBGdW5jdGlvbkNvZGUgPSAyCisKKyMgVGhlIGludGVy
cHJldGVyIHN0ZWFscyB0aGUgdGFnIHdvcmQgb2YgdGhlIGFyZ3VtZW50IGNvdW50LgorY29uc3Qg
TExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQKKworIyBUaGlzIG11c3Qg
bWF0Y2ggd3RmL1ZlY3Rvci5oLgorY29uc3QgVmVjdG9yU2l6ZU9mZnNldCA9IDAKK2NvbnN0IFZl
Y3RvckJ1ZmZlck9mZnNldCA9IDQKKworIyBTdHJpbmcgZmxhZ3MuCitjb25zdCBIYXNoRmxhZ3M4
Qml0QnVmZmVyID0gNjQKKworIyBVdGlsaXRpZXMKK21hY3JvIGNyYXNoKCkKKyAgICBzdG9yZWkg
MCwgMHhiYmFkYmVlZltdCisgICAgbW92ZSAwLCB0MAorICAgIGNhbGwgdDAKK2VuZAorCittYWNy
byBhc3NlcnQoYXNzZXJ0aW9uKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGFzc2Vy
dGlvbigub2spCisgICAgICAgIGNyYXNoKCkKKyAgICAub2s6CisgICAgZW5kCitlbmQKKworbWFj
cm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIpCisg
ICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBsciwgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVs
c2lmIFg4NgorICAgICAgICBwb3AgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2UKKyAgICAg
ICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9y
ZVJldHVybihzb3VyY2VSZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIHNvdXJj
ZVJlZ2lzdGVyLCBscgorICAgIGVsc2lmIFg4NgorICAgICAgICBwdXNoIHNvdXJjZVJlZ2lzdGVy
CisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIGRpc3BhdGNo
KGFkdmFuY2UpCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisK
K21hY3JvIGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQorICAgIGxvYWRpIHBjT2Zmc2V0LCB0MAor
ICAgIGxzaGlmdGkgMiwgdDAKKyAgICBhZGRwIHQwLCBQQworICAgIGptcCBbUENdCitlbmQKKwor
bWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdP
ZmZzZXRbY2ZyXSwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGNDYWxsMihmdW5jdGlv
biwgYXJnMSwgYXJnMikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGFyZzEsIHQwCisgICAg
ICAgIG1vdmUgYXJnMiwgdDEKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBhcmcyLCAwCisg
ICAgICAgIHBva2UgYXJnMSwgMQorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKKyAg
ICBjYWxsIGZ1bmN0aW9uCitlbmQKKworbWFjcm8gY2FsbEhlbHBlcihoZWxwZXIpCisgICAgY0Nh
bGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgor
ZW5kCisKK21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORwor
ICAgICAgICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkKKyAgICBlbmQKK2VuZAorCisjIENhbGwg
YSBoZWxwZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3JvIGNhbGxDYWxsSGVscGVyKGFkdmFuY2Us
IGhlbHBlciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDLCB0MAorICAgIHN0b3Jl
cCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgY0NhbGwyKGhlbHBlciwg
Y2ZyLCBQQykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBhY3Rpb24odDApCitlbmQKKworbWFjcm8g
c2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikKKyAgICBjYWxsQ2FsbEhlbHBlcigKKyAg
ICAgICAgYWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAorICAgICAgICBtYWNybyAoY2FsbGVlKQor
ICAgICAgICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkK
KyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVQoaW5jcmVtZW50LCBh
Y3Rpb24pCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQwCisgICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENvZGVCbG9jazo6bV9leGVjdXRlQ291bnRl
clt0MF0sIC5jb250aW51ZQorICAgICAgICBhY3Rpb24oKQorICAgIC5jb250aW51ZToKKyAgICBl
bmQKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgY2hlY2tTd2l0
Y2hUb0pJVCgKKyAgICAgICAgMSwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAgIGNDYWxs
MihfbGxpbnRfbG9vcF9vc3IsIGNmciwgUEMpCisgICAgICAgICAgICBtb3ZlIHQxLCBjZnIKKyAg
ICAgICAgICAgIGptcCB0MAorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hU
b0pJVEZvckVwaWxvZ3VlKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxMCwKKyAg
ICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlcGxhY2UpCisg
ICAgICAgIGVuZCkKK2VuZAorCittYWNybyBhc3NlcnROb3RDb25zdGFudChpbmRleCkKKyAgICBh
c3NlcnQobWFjcm8gKG9rKSBiaWIgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBv
ayBlbmQpCitlbmQKKworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVu
dCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENvbnN0YW50
T3JWYXJpYWJsZShpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpYWVxIGluZGV4LCBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBw
YXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBW
ZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0
IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0
byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsb2FkcCBU
YWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0
W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQg
cGF5bG9hZCBtYXkgYmUgdGhlIHNhbWUgcmVnaXN0ZXIuCittYWNybyBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpYWVxIGluZGV4LCBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBw
YXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHRhZworICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFt0YWddLCB0YWcKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVy
ZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsc2hpZnRpIDMsIGluZGV4Cisg
ICAgYWRkcCBpbmRleCwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFt0YWddLCBwYXlsb2Fk
CisgICAgbG9hZHAgVGFnT2Zmc2V0W3RhZ10sIHRhZworLmRvbmU6CitlbmQKKworbWFjcm8gbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBwYXlsb2FkLCBz
bG93KQorICAgIGJpYWVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0
YW50CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBleHBlY3RlZFRhZywgc2xv
dworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBq
bXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9m
ZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJl
OiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGJpbmVxIFRhZ09mZnNldFtwYXls
b2FkLCBpbmRleCwgOF0sIGV4cGVjdGVkVGFnLCBzbG93CisgICAgbG9hZHAgUGF5bG9hZE9mZnNl
dFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKK21hY3JvIHdyaXRl
QmFycmllcih0YWcsIHBheWxvYWQpCisgICAgIyBOb3RoaW5nIHRvIGRvIHNpbmNlIHdlIGRvbid0
IGhhdmUgYSBnZW5lcmF0aW9uYWwgb3IgaW5jcmVtZW50YWwgY29sbGVjdG9yLgorZW5kCisKKwor
IyBJbmRpY2F0ZSB0aGUgYmVnaW5uaW5nIG9mIExMSW50LgorX2xsaW50X2JlZ2luOgorICAgIGNy
YXNoKCkKKworCisjIEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVycHJldGVyCisKKyMgRG8gdGhl
IGJhcmUgbWluaW11bSByZXF1aXJlZCB0byBleGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBs
ZWF2ZSB0aGUgQ29kZUJsb2NrKgorIyBpbiB0MQorbWFjcm8gcHJvbG9ndWUob2Zmc2V0T2ZDb2Rl
QmxvY2ssIG9zckhlbHBlcikKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIp
CisgICAgCisgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3Vs
ZCBPU1IuCisgICAgc3RvcmVwIHQyLCBSZXR1cm5QQ1tjZnJdCisgICAgbG9hZHAgQ2FsbGVlW2Nm
cl0sIHQxCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3QxXSwgdDEKKyAgICBs
b2FkcCBvZmZzZXRPZkNvZGVCbG9ja1t0MV0sIHQxCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAg
ICAgYmFkZGlzIDUsIENvZGVCbG9jazo6bV9leGVjdXRlQ291bnRlclt0MF0sIC5jb250aW51ZQor
ICAgICAgICBjQ2FsbDIob3NySGVscGVyLCBjZnIsIFBDKQorICAgICAgICBtb3ZlIHQxLCBjZnIK
KyAgICAgICAgam1wIHQwCisgICAgLmNvbnRpbnVlOgorICAgIGVuZAorICAgIHN0b3JlcCB0MSwg
Q29kZUJsb2NrW2Nmcl0KKyAgICAKKyAgICAjIFNldCB1cCB0aGUgUEMuCisgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgVmVjdG9yQnVmZmVyT2Zm
c2V0W3QwXSwgUEMKK2VuZAorCisjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdo
aWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgorIyBNdXN0IGNhbGwgZGlzcGF0
Y2goMCkgYWZ0ZXIgY2FsbGluZyB0aGlzLgorbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbigp
CisgICAgIyBQcm9maWxlIHRoZSBhcmd1bWVudHMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8g
Y2hvaWNlIGJ1dCB0byBkbyB0aGlzLgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1QYXJhbWV0
ZXJzW3QxXSwgdDAKKyAgICBidGl6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9uZQorICAgIGxzaGlm
dGkgMywgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsg
VmVjdG9yQnVmZmVyT2Zmc2V0W3QxXSwgdDMKKy5hcmd1bWVudFByb2ZpbGVMb29wOgorICAgIGxv
YWRpIFRhZ09mZnNldFtjZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIsIFZhbHVlUHJvZmlsZTo6
bV9idWNrZXRzICsgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MF0sIHQyCisgICAgc3RvcmVpIHQyLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRP
ZmZzZXRbdDNdCisgICAgYWRkcCBzaXplb2YgVmFsdWVQcm9maWxlLCB0MworICAgIGJzdWJpbnog
OCwgdDAsIC5hcmd1bWVudFByb2ZpbGVMb29wCisuYXJndW1lbnRQcm9maWxlRG9uZToKKyAgICAK
KyAgICAjIENoZWNrIHN0YWNrIGhlaWdodC4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0
MV0sIHQyCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjppbnRlcnByZXRlclt0Ml0sIHQyICAgIyBG
SVhNRTogQ2FuIGdldCB0byB0aGUgUmVnaXN0ZXJGaWxlIGZyb20gdGhlIEpJVFN0YWNrRnJhbWUK
KyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MCwgY2ZyLCB0MAorICAgIGJwYWVxIEludGVy
cHJldGVyOjptX3JlZ2lzdGVyRmlsZSArIFJlZ2lzdGVyRmlsZTo6bV9lbmRbdDJdLCB0MCwgLnN0
YWNrSGVpZ2h0T0sKKworICAgICMgU3RhY2sgaGVpZ2h0IGNoZWNrIGZhaWxlZCAtIG5lZWQgdG8g
Y2FsbCBhIGhlbHBlci4KKyAgICBjYWxsSGVscGVyKF9sbGludF9yZWdpc3Rlcl9maWxlX2NoZWNr
LCBjZnIsIFBDKQorLnN0YWNrSGVpZ2h0T0s6CitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJs
b2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KK21h
Y3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIGhlbHBlcikKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGJpZXEgdDAsIENvZGVCbG9j
azo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCisgICAgY0NhbGwyKGhlbHBlcikgICAj
IFRoaXMgaGVscGVyIGhhcyBhIHNpbXBsZSBwcm90b2NvbDogdDAgPSAwID0+IG5vIGVycm9yLCB0
MCAhPSAwID0+IGVycm9yCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYnRpeiB0MCwgLmNvbnRpbnVl
CisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAg
SlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFs
RGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisuY29udGludWU6CisgICAgIyBSZWxv
YWQgQ29kZUJsb2NrIGFuZCBQQywgc2luY2UgdGhlIGhlbHBlciBjbG9iYmVyZWQgaXQuCisgICAg
bG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0
aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKKyAgICBq
bXAgZG9uZUxhYmVsCitlbmQKKworX2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6CisgICAgcHJvbG9n
dWUoUHJvZ3JhbUV4ZWN1dGFibGU6Om1fcHJvZ3JhbUNvZGVCbG9jaywgX2xsaW50X2VudHJ5X29z
cl9mb3JfcHJvZ3JhbSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9ldmFsX3Byb2xvZ3Vl
OgorICAgIHByb2xvZ3VlKEV2YWxFeGVjdXRhYmxlOjptX2V2YWxDb2RlQmxvY2ssIF9sbGludF9l
bnRyeV9vc3JfZm9yX2V2YWwpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoRnVuY3Rpb25FeGVjdXRhYmxlOjptX2Nv
ZGVCbG9ja0ZvckNhbGwsIF9sbGludF9lbnRyeV9vc3JfZm9yX2Z1bmN0aW9uX2Zvcl9jYWxsKQor
LmZ1bmN0aW9uRm9yQ2FsbEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oKQorICAg
IGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xv
Z3VlOgorICAgIHByb2xvZ3VlKEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25z
dHJ1Y3QsIF9sbGludF9lbnRyeV9vc3JfZm9yX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCisuZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKCkKKyAg
ICBkaXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hl
Y2s6CisgICAgcHJvbG9ndWUoRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGws
IF9sbGludF9lbnRyeV9vc3JfZm9yX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2spCisgICAg
ZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X2hlbHBlcl9j
YWxsX2FyaXR5Q2hlY2spCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlf
Y2hlY2s6CisgICAgcHJvbG9ndWUoRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNh
bGwsICwgX2xsaW50X2VudHJ5X29zcl9mb3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNo
ZWNrKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwg
X2xsaW50X2hlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKKworIyBJbnN0cnVjdGlvbiBpbXBs
ZW1lbnRhdGlvbnMKKworX2xsaW50X29wX2VudGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFy
cywgdDIKKyAgICBidGl6IHQyLCAub3BFbnRlckRvbmUKKyAgICBtb3ZlIFVuZGVmaW5lZFRhZywg
dDAKKyAgICBtb3ZlIDAsIHQxCisub3BFbnRlckxvb3A6CisgICAgc3ViaSAxLCB0MgorICAgIHN0
b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdCisgICAgYnRpbnogdDIsIC5vcEVudGVyTG9vcAorLm9wRW50ZXJEb25l
OgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX2NyZWF0ZV9hY3RpdmF0aW9uOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQorLm9wQ3JlYXRl
QWN0aXZhdGlvbkRvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5pdF9sYXp5
X3JlZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3Rv
cmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSAwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3Bf
Y3JlYXRlX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BD
cmVhdGVBcmd1bWVudHNEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9h
cmd1bWVudHMpCisub3BDcmVhdGVBcmd1bWVudHNEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKwor
bWFjcm8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNpemVDbGFzc0luZGV4LCBjbGFzc0luZm9PZmZz
ZXQsIG9mZnNldE9mUHJvcGVydHlTdG9yYWdlLCBzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaDEs
IHNjcmF0Y2gyLCBzbG93Q2FzZSkKKyAgICBjb25zdCBvZmZzZXRPZk15U2l6ZUNsYXNzID0gSlNH
bG9iYWxEYXRhOjpoZWFwICsgSGVhcDo6bV9vYmplY3RTcGFjZSArIEFsbG9jYXRpb25TcGFjZTo6
bV9tYXJrZWRTcGFjZSArIE1hcmtlZFNwYWNlOjptX3ByZWNpc2VTaXplQ2xhc3NlcyArIHNpemVD
bGFzc0luZGV4ICogc2l6ZW9mIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MKKyAgICAKKyAgICAjIEZJ
WE1FOiB3ZSBjYW4gZ2V0IHRoZSBnbG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRoZSBzdGFj
ay4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2NyYXRjaDEKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fZ2xvYmFsRGF0YVtzY3JhdGNoMV0sIHNjcmF0Y2gxCisgICAgCisgICAgIyBHZXQgdGhl
IG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuICAgIAorICAgIGxvYWRwIG9mZnNldE9mTXlTaXpl
Q2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXSwg
cmVzdWx0CisgICAgYnRweiByZXN1bHQsIHNsb3dDYXNlCisgICAgCisgICAgIyBSZW1vdmUgdGhl
IG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCisgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0Y2gy
CisgICAgc3RvcmVwIHNjcmF0Y2gxLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6
OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0KKworICAgICMgSW5pdGlhbGl6ZSB0
aGUgb2JqZWN0LgorICAgIGxvYWRwIGNsYXNzSW5mb09mZnNldFtzY3JhdGNoMV0sIHNjcmF0Y2gy
CisgICAgc3RvcmVwIHNjcmF0Y2gyLCBbcmVzdWx0XQorICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQorICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9pbmhl
cml0b3JJRFtyZXN1bHRdCisgICAgYWRkcCBzaXplb2YgSlNPYmplY3QsIHJlc3VsdCwgc2NyYXRj
aDEKKyAgICBzdG9yZXAgc2NyYXRjaDEsIG9mZnNldE9mUHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0K
K2VuZAorCitfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDhbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVxIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6
bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkcCBKU09i
amVjdDo6bV9pbmhlcml0b3JJRFt0MF0sIHQyCisgICAgYnRweiB0MiwgLm9wQ3JlYXRlVGhpc1Ns
b3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4
LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIEpTRmluYWxPYmplY3Q6Om1f
cHJvcGVydHlTdG9yYWdlLCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCisgICAg
bG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4
XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNo
KDMpCisKKy5vcENyZWF0ZVRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9j
cmVhdGVfdGhpcykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9nZXRfY2FsbGVlOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkcCBQYXls
b2FkT2Zmc2V0ICsgQ2FsbGVlW2Nmcl0sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQor
ICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NvbnZlcnRfdGhpczoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MAorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwg
T2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNTbG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ29u
dmVydFRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jb252ZXJ0X3RoaXMp
CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X29iamVjdDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1f
ZW1wdHlPYmplY3RTdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChK
U0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENs
YXNzSW5mbywgSlNGaW5hbE9iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2UsIHQxLCB0MCwgdDIsIHQz
LCAub3BOZXdPYmplY3RTbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxs
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BOZXdPYmplY3RTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfb2JqZWN0KQorICAgIGRpc3BhdGNoKDIpCisKKwor
X2xsaW50X29wX25ld19hcnJheToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX25ld19hcnJheSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9uZXdfYXJyYXlfYnVmZmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfbmV3X2FycmF5X2J1ZmZlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9uZXdfcmVnZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfbmV3X3JlZ2V4cCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9tb3Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAg
ICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25vdDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQ
Q10sIHQxCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisg
ICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5vcE5vdFNsb3cKKyAgICB4b3JpIDEsIHQzCisgICAg
c3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOb3RTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ub3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRf
b3BfZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBs
b2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisg
ICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEg
dDIsIHQzLCAub3BFcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BFcVNsb3cKKyAgICBi
aWIgdDIsIExvd2VzdFRhZywgLm9wRXFTbG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2ll
cSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4
XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNo
KDQpCisKKy5vcEVxU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZXEpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90
Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcs
IC5vcEVxTnVsbEltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MQorICAgIHRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFd
LCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQorICAgIGptcCAub3BFcU51bGxOb3RJbW1lZGlh
dGUKKy5vcEVxTnVsbEltbWVkaWF0ZToKKyAgICBjaWVxIHQxLCBOdWxsVGFnLCB0MgorICAgIGNp
ZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKKyAgICBvcmkgdDIsIHQxCisub3BFcU51bGxOb3RJbW1l
ZGlhdGU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAg
IHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX25lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENd
LCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIs
IHQzLCB0MSkKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAK
KyAgICBiaW5lcSB0MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BO
ZXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0W1BD
XSwgdDIKKyAgICBjaW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09m
ZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4
XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX25lcSkKKyAgICBkaXNwYXRjaCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251bGw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRb
UENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAor
ICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBq
bXAgLm9wTmVxTnVsbE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBjaW5l
cSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIGFu
ZGkgdDIsIHQxCisub3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3Bl
cmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0
MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBhc3NlcnROb3RD
b25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MiwgdDMsIC5zbG93
CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIENlbGxUYWcsIC5u
b3RTdHJpbmcKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZworICAg
IGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0cmlu
Z1R5cGUsIC5zbG93Cisubm90U3RyaW5nOgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGVxdWFs
aXR5T3BlcmF0aW9uKHQwLCB0MSwgdDApCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNl
dFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQor
ICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRp
c3BhdGNoKDQpCitlbmQKKworX2xsaW50X29wX3N0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2llcSBsZWZ0LCBy
aWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9zdHJpY3RlcSkKKworCitfbGxpbnRfb3Bf
bnN0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVm
dCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9o
ZWxwZXJfbnN0cmljdGVxKQorCisKK19sbGludF9vcF9sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzcykKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9sZXNzZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
Z3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2dyZWF0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcmVxOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRl
cmVxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3ByZV9pbmM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZUluY1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MQorICAgIGJhZGRpbyAxLCB0MSwgLm9wUHJlSW5jU2xvdworICAgIHN0
b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5v
cFByZUluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3ByZV9pbmMpCisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJlX2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJ
bnQzMlRhZywgLm9wUHJlRGVjU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQxCisgICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNTbG93CisgICAgc3RvcmVpIHQxLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlRGVjU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2RlYykKKyAgICBkaXNwYXRjaCgy
KQorCisKK19sbGludF9vcF9wb3N0X2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdEluY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9w
UG9zdEluY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAg
IG1vdmUgdDIsIHQzCisgICAgYmFkZGlvIDEsIHQzLCAub3BQb3N0SW5jU2xvdworICAgIHN0b3Jl
aSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdCisub3BQb3N0SW5jRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0SW5jU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9pbmMpCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfcG9zdF9kZWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3REZWNTbG93CisgICAgYmllcSB0MCwgdDEsIC5vcFBv
c3REZWNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBt
b3ZlIHQyLCB0MworICAgIGJzdWJpbyAxLCB0MywgLm9wUG9zdERlY1Nsb3cKKyAgICBzdG9yZWkg
SW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XQorLm9wUG9zdERlY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKworLm9wUG9zdERlY1Nsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfZGVjKQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX3RvX2pzbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBhc3NlcnROb3RDb25zdGFudCh0
MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDMKKyAgICBiaWVxIHQyLCBJbnQzMlRhZywgLm9wVG9Kc251
bWJlcklzSW50CisgICAgYmlhZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcFRvSnNudW1iZXJTbG93
Cisub3BUb0pzbnVtYmVySXNJbnQ6CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRj
aCgzKQorCisub3BUb0pzbnVtYmVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
dG9fanNudW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVnYXRlOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwg
dDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBi
aW5lcSB0MSwgSW50MzJUYWcsIC5vcE5lZ2F0ZVNyY05vdEludAorICAgIGJ0aXogdDIsIDB4N2Zm
ZmZmZmYsIC5vcE5lZ2F0ZVNsb3cKKyAgICBuZWdpIHQyCisgICAgc3RvcmVpIEludDMyVGFnLCBU
YWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MywgOF0KKyAgICBkaXNwYXRjaCgzKQorLm9wTmVnYXRlU3JjTm90SW50OgorICAgIGJpYSB0MSwg
TG93ZXN0VGFnLCAub3BOZWdhdGVTbG93CisgICAgeG9yaSAweDgwMDAwMDAwLCB0MQorICAgIHN0
b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wTmVnYXRlU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmVnYXRlKQorICAgIGRpc3BhdGNoKDMpCisKKworbWFj
cm8gYmluYXJ5T3BDdXN0b21TdG9yZShpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUsIGRvdWJsZU9w
ZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgYXNzZXJ0Tm90
Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDIsIEludDMyVGFn
LCAub3AxTm90SW50CisgICAgYmluZXEgdDMsIEludDMyVGFnLCAub3AyTm90SW50CisgICAgbG9h
ZGkgNFtQQ10sIHQyCisgICAgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHQzLCB0MSwgdDAsIC5z
bG93LCB0MikKKyAgICBkaXNwYXRjaCg0KQorCisub3AxTm90SW50OgorICAgICMgRmlyc3Qgb3Bl
cmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBi
ZSBhbnl0aGluZy4KKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDMsIExv
d2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLnNs
b3cKKyAgICBjaTJkIHQxLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50
T3AyRG91YmxlOgorICAgIGZpaTJkIHQxLCB0MywgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAg
bG9hZGkgNFtQQ10sIHQxCisgICAgZmlpMmQgdDAsIHQyLCBmdDAKKyAgICBkb3VibGVPcGVyYXRp
b24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2go
NCkKKworLm9wMk5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBhbiBp
bnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KKyAgICBsb2FkaSA0W1BD
XSwgdDIKKyAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNsb3cKKyAgICBjaTJkIHQwLCBmdDAKKyAg
ICBmaWkyZCB0MSwgdDMsIGZ0MQorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBz
dG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisuc2xvdzoKKyAgICBj
YWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCg0KQorZW5kCisKK21hY3JvIGJpbmFyeU9w
KGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGJpbmFyeU9w
Q3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3cs
IGluZGV4KQorICAgICAgICAgICAgaW50ZWdlck9wZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdykK
KyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisg
ICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAg
ICAgICAgZW5kLAorICAgICAgICBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKK2VuZAorCitfbGxp
bnRfb3BfYWRkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2FkZCkKKworCitfbGxpbnRfb3BfbXVsOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBi
bXVsaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQp
IG11bGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX211bCkKKworCitf
bGxpbnRfb3Bfc3ViOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBic3ViaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5k
LAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIHN1YmQgbGVmdCwgcmlnaHQgZW5kLAorICAg
ICAgICBfbGxpbnRfaGVscGVyX3N1YikKKworCitfbGxpbnRfb3BfZGl2OgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJU
YWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGNpMmQgbGVmdCwgZnQw
CisgICAgICAgICAgICBjaTJkIHJpZ2h0LCBmdDEKKyAgICAgICAgICAgIGRpdmQgZnQwLCBmdDEK
KyAgICAgICAgICAgIGJjZDJpIGZ0MSwgcmlnaHQsIC5ub3RJbnQKKyAgICAgICAgICAgIHN0b3Jl
aSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkg
cmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIGptcCAuZG9u
ZQorICAgICAgICAubm90SW50OgorICAgICAgICAgICAgc3RvcmVkIGZ0MSwgW2NmciwgaW5kZXgs
IDhdCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCkgZGl2ZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfZGl2KQor
CisKK19sbGludF9vcF9tb2Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9tb2QpCisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBiaXRPcChvcGVy
YXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQw
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGFzc2VydE5vdENv
bnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywg
LnNsb3cKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgbG9hZGkgNFtQQ10sIHQy
CisgICAgb3BlcmF0aW9uKHQxLCB0MCwgLnNsb3cpCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAg
ICBkaXNwYXRjaCg0KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNw
YXRjaCg0KQorZW5kCisKK19sbGludF9vcF9sc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGxzaGlmdGkgbGVm
dCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2xzaGlmdCkKKworCitfbGxpbnRf
b3BfcnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCBzbG93KSByc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9yc2hpZnQpCisKKworX2xsaW50X29wX3Vyc2hpZnQ6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cp
CisgICAgICAgICAgICB1cnNoaWZ0aSBsZWZ0LCByaWdodAorICAgICAgICAgICAgYmlsdCByaWdo
dCwgMCwgc2xvdworICAgICAgICBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfdXJzaGlmdCkK
KworCitfbGxpbnRfb3BfYml0YW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBhbmRpIGxlZnQsIHJpZ2h0IGVuZCwK
KyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXRhbmQpCisKKworX2xsaW50X29wX2JpdHhvcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgc2xvdykgeG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0
eG9yKQorCisKK19sbGludF9vcF9iaXRvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0
T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgb3JpIGxlZnQsIHJpZ2h0IGVu
ZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXRvcikKKworCitfbGxpbnRfb3BfYml0bm90Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MSkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSwgdDMKKyAg
ICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcEJpdG5vdFNsb3cKKyAgICBub3RpIHQzCisgICAgc3Rv
cmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BCaXRub3RTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9iaXRub3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA0W1BDXSwgdDAKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0hhc0luc3RhbmNlLCAub3BDaGVja0hhc0luc3RhbmNl
U2xvdworICAgIGRpc3BhdGNoKDIpCisKKy5vcENoZWNrSGFzSW5zdGFuY2VTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpCisgICAgZGlzcGF0Y2go
MikKKworCitfbGxpbnRfb3BfaW5zdGFuY2VvZjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
IyBDaGVjayB0aGF0IGJhc2VWYWwgaW1wbGVtZW50cyB0aGUgZGVmYXVsdCBIYXNJbnN0YW5jZSBi
ZWhhdmlvci4KKyAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkZXByZWNhdGVkLgorICAgIGxv
YWRpIDEyW1BDXSwgdDAKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxh
Z3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdwor
ICAgIAorICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENv
bnN0YW50KHQwKQorICAgIGFzc2VydE5vdENvbnN0YW50KHQxKQorICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBiaW5lcSBUYWdP
ZmZzZXRbY2ZyLCB0MSwgOF0sIENlbGxUYWcsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSwgdDEKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QxXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
dHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICAKKyAgICAjIFJlZ2lzdGVyIHN0YXRlOiB0MSA9
IHByb3RvdHlwZSwgdDIgPSB2YWx1ZQorICAgIG1vdmUgMSwgdDAKKy5vcEluc3RhbmNlb2ZMb29w
OgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MgorICAgIGxvYWRpIFN0cnVj
dHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0LCB0MgorICAgIGJwZXEgdDIsIHQxLCAu
b3BJbnN0YW5jZW9mRG9uZQorICAgIGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcAorCisgICAg
bW92ZSAwLCB0MAorLm9wSW5zdGFuY2VvZkRvbmU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRh
Z09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQz
LCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEluc3RhbmNlb2ZTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9pbnN0YW5jZW9mKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50
X29wX3R5cGVvZjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3R5cGVvZikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc191bmRlZmlu
ZWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9p
c191bmRlZmluZWQpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfYm9vbGVhbjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Jv
b2xlYW4pCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfbnVtYmVyOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfbnVtYmVyKQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3N0cmluZykKKyAgICBkaXNw
YXRjaCgzKQorCisKK19sbGludF9vcF9pc19vYmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19vYmplY3QpCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfaXNfZnVuY3Rpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19mdW5jdGlvbikKKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9pbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2luKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29sdmU6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZl
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfc2tpcDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfc2tpcCkK
KyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHJlc29sdmVHbG9iYWwoc2xvdykKKyAgICAjIE9w
ZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhl
IGxvYWQuCisgICAgIyA4W1BDXSAgIFByb3BlcnR5IGlkZW50aWZpZXIgaW5kZXggaW4gdGhlIGNv
ZGUgYmxvY2suCisgICAgIyAxMltQQ10gIFN0cnVjdHVyZSBwb2ludGVyLCBpbml0aWFsaXplZCB0
byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAgICAjIDE2W1BDXSAgT2Zmc2V0IGluIGdsb2Jh
bCBvYmplY3QsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmpl
Y3RbdDBdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJw
bmVxIHQwLCAxMltQQ10sIHNsb3cKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAgSlNP
YmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAs
IHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQzCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KK2VuZAorCitfbGxpbnRfb3Bf
cmVzb2x2ZV9nbG9iYWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHJlc29sdmVHbG9iYWwo
Lm9wUmVzb2x2ZUdsb2JhbFNsb3cpCisgICAgZGlzcGF0Y2goNSkKKworLm9wUmVzb2x2ZUdsb2Jh
bFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQorICAg
IGRpc3BhdGNoKDUpCisKKworIyBHaXZlcyB5b3UgdGhlIHNjb3BlIGluIHQwLCB3aGlsZSBhbGxv
d2luZyB5b3UgdG8gb3B0aW9uYWxseSBwZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9uIHRoZQor
IyBzY29wZXMgYXMgdGhleSBhcmUgdHJhdmVyc2VkLiBzY29wZUNoZWNrKCkgaXMgY2FsbGVkIHdp
dGggdHdvIGFyZ3VtZW50czogdGhlIHJlZ2lzdGVyCisjIGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQg
YSByZWdpc3RlciB0aGF0IGNhbiBiZSB1c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBk
b2VzIG5vdAorIyB1c2UgdDMsIHNvIHlvdSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJl
LgorbWFjcm8gZ2V0U2NvcGUoZGVCcnVpamluSW5kZXhPcGVyYW5kLCBzY29wZUNoZWNrKQorICAg
IGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgZGVC
cnVpamluSW5kZXhPcGVyYW5kLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisgICAgCisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVU
eXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAubG9vcAorICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRz
RnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9vcAorICAgIAorICAgIGxvYWRpIENvZGVCbG9jazo6bV9h
Y3RpdmF0aW9uUmVnaXN0ZXJbdDFdLCB0MQorCisgICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkg
c2tpcCBvdmVyIG9uZSBzY29wZS4KKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1w
dHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlvbgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxv
YWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKy5ub0FjdGl2YXRpb246CisgICAgc3Vi
aSAxLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisubG9vcDoKKyAgICBzY29wZUNoZWNr
KHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisgICAgc3Vi
aSAxLCB0MgorICAgIGJ0aW56IHQyLCAubG9vcAorCisuZG9uZToKK2VuZAorCitfbGxpbnRfb3Bf
cmVzb2x2ZV9nbG9iYWxfZHluYW1pYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAg
SklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZHAgSlNHbG9iYWxEYXRh
OjphY3RpdmF0aW9uU3RydWN0dXJlW3QzXSwgdDMKKyAgICBnZXRTY29wZSgKKyAgICAgICAgMjBb
UENdLAorICAgICAgICBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpCisgICAgICAgICAgICBsb2FkcCBT
Y29wZUNoYWluTm9kZTo6b2JqZWN0W3Njb3BlXSwgc2NyYXRjaAorICAgICAgICAgICAgYnBuZXEg
SlNDZWxsOjptX3N0cnVjdHVyZVtzY3JhdGNoXSwgdDMsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWlj
U3VwZXJTbG93CisgICAgICAgIGVuZCkKKyAgICByZXNvbHZlR2xvYmFsKC5vcFJlc29sdmVHbG9i
YWxEeW5hbWljU2xvdykKKyAgICBkaXNwYXRjaCg2KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1p
Y1N1cGVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZSkKKyAgICBk
aXNwYXRjaCg2KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3BhdGNoKDYpCisKKworX2xs
aW50X29wX2dldF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIE9wZXJh
bmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxv
YWQuCisgICAgIyA4W1BDXSAgIEluZGV4IG9mIHJlZ2lzdGVyIGluIHRoZSBzY29wZS4KKyAgICAj
IDEyW1BDXSAgRGUgQnJ1aWppbiBpbmRleC4KKyAgICBnZXRTY29wZSgxMltQQ10sIG1hY3JvIChz
Y29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIDhbUENd
LCB0MgorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRw
IEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZz
ZXRbdDAsIHQyLCA4XSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0sIHQw
CisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9w
dXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZ2V0U2NvcGUoOFtQQ10s
IG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MywgdDIpCisg
ICAgd3JpdGVCYXJyaWVyKHQzLCB0MikKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0
W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQw
CisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5
bG9hZE9mZnNldFt0MCwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0
X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQor
ICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxv
YWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFs
T2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwg
OF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MQorICAgIHN0b3Jl
aSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcHV0X2dsb2JhbF92
YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRp
IDhbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVC
bG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0Ojpt
X3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDMsIDhdLCB0Mgor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCisgICAgd3JpdGVCYXJyaWVy
KHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVp
IHQzLCBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9yZXNvbHZlX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9yZXNvbHZlX2Jhc2UpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfdGhpczoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF90
aGlzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNo
aW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQorICAgICMgb3Bjb2RlLiBXZSBk
bywgaG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWls
cywgc2luY2UKKyAgICAjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNr
eSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCisgICAgIyB0byB0YWtlIGZhc3QgcGF0
aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMg
d2hhdAorICAgICMgd2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQ
Q10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKKyAg
ICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAg
bG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0Ml0sIHQzCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFt0MCwgdDJdLCB0MgorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2Nm
ciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
ZGlzcGF0Y2goOCkKKworLm9wR2V0QnlJZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2dldF9ieV9pZCkKKyAgICBkaXNwYXRjaCg4KQorCisKK19sbGludF9vcF9nZXRfYXJndW1l
bnRzX2xlbmd0aDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0
eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93CisgICAgbG9hZGkgQXJndW1lbnRD
b3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDIKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVp
IEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudHNMZW5n
dGhTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0
aCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaWQ6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5
SWRTbG93KQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9h
ZGkgMTJbUENdLCB0MgorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0s
IHQzCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xv
dworICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0s
IHQwCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICB3cml0ZUJh
cnJpZXIodDAsIHQyKQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KKyAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQorICAgIGRpc3BhdGNoKDgpCisKKy5vcFB1dEJ5
SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaWQpCisgICAgZGlz
cGF0Y2goOCkKKworCittYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQ
Q10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQw
LCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MAorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMsIC5vcFB1
dEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9w
cm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGFkZHAgdDEsIHQzCisgICAgbG9hZGkgVGFnT2Zm
c2V0W2NmciwgdDIsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0s
IHQyCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0
M10KKyAgICBsb2FkaSAyNFtQQ10sIHQxCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3Qz
XQorICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICBkaXNwYXRjaCg4
KQorZW5kCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgcHV0
QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQor
CisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgcHV0QnlJZFRy
YW5zaXRpb24oCisgICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCisg
ICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhl
IG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAgICAgIAorICAgICAgICAg
ICAgbG9hZHAgMjhbUENdLCBzY3JhdGNoCisgICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFp
bjo6bV92ZWN0b3IgKyBWZWN0b3JCdWZmZXJPZmZzZXRbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICAg
ICAgICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1
cmVdLCBOdWxsVGFnLCAuZG9uZQorICAgICAgICAubG9vcDoKKyAgICAgICAgICAgIGxvYWRpIFN0
cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3Rv
Q2VsbAorICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBv
bGRTdHJ1Y3R1cmUKKyAgICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCBz
bG93CisgICAgICAgICAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICAgICAgICAgIGJpbmVxIFN0cnVj
dHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxv
b3AKKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCkKKworCitfbGxpbnRfb3BfZGVsX2J5X2lk
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVs
X2J5X2lkKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV92YWw6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRp
IDhbUENdLCB0MgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
Z2xvYmFsRGF0YVt0MV0sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIs
IENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNsb3cpCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpq
c0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAgYnBuZXEgW3QwXSwgdDIs
IC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MF0sIHQzCisg
ICAgYmlhZXEgdDEsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93
CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciAr
IFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0
b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisgICAgYmllcSB0MiwgRW1wdHlWYWx1
ZVRhZywgLm9wR2V0QnlWYWxTbG93CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRj
aCg0KQorCisub3BHZXRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dl
dF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50X2J5
X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9h
ZGkgMTJbUENdLCB0MQorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVl
VGFnLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQxLCBJbnQzMlRhZywgdDIsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93KQorICAgIGFk
ZGkgMSwgdDIKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0
MQorICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAgICBuZWdpIHQy
CisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0
MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgc3RvcmVpIHQw
LCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MywgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudEJ5VmFsU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKKyAgICBkaXNw
YXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDE2W1BDXSwg
dDAKKyAgICBicG5lcSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgLm9wR2V0QnlQbmFt
ZVNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDIwW1BD
XSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MworICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAorICAgIGJwbmVxIHQwLCBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAg
bG9hZGkgMjRbUENdLCB0MAorICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAKKyAgICBzdWJpIDEs
IHQwCisgICAgYmlhZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2FjaGVhYmxl
U2xvdHNbdDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3Bl
cnR5U3RvcmFnZVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QyLCB0MCwgOF0sIHQxCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MiwgdDAsIDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNykKKworLm9wR2V0QnlQbmFt
ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9wbmFtZSkKKyAgICBk
aXNwYXRjaCg3KQorCisKK19sbGludF9vcF9wdXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgSW50MzJUYWcsIHQyLCAub3BQ
dXRCeVZhbFNsb3cpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2dsb2JhbERhdGFbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNB
cnJheUNsYXNzSW5mb1t0MF0sIHQwCisgICAgYnBuZXEgW3QxXSwgdDAsIC5vcFB1dEJ5VmFsU2xv
dworICAgIGJpYWVxIHQyLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MV0sIC5vcFB1dEJ5VmFs
U2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQwCisgICAgYmllcSBBcnJh
eVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIEVtcHR5VmFsdWVUYWcs
IC5vcFB1dEJ5VmFsRW1wdHkKKy5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQ6CisgICAgbG9hZGkgMTJb
UENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQzKQorICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIHQzLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0Mwor
ICAgIHdyaXRlQmFycmllcih0MSwgdDMpCisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1f
dmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBzdG9yZWkgdDMsIEFycmF5U3RvcmFn
ZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQor
Cisub3BQdXRCeVZhbEVtcHR5OgorICAgIGFkZGkgMSwgQXJyYXlTdG9yYWdlOjptX251bVZhbHVl
c0luVmVjdG9yW3QwXQorICAgIGJpYiB0MiwgQXJyYXlTdG9yYWdlOjptX2xlbmd0aFt0MF0sIC5v
cFB1dEJ5VmFsU3RvcmVSZXN1bHQKKyAgICBhZGRpIDEsIHQyLCB0MQorICAgIHN0b3JlaSB0MSwg
QXJyYXlTdG9yYWdlOjptX2xlbmd0aFt0MF0KKyAgICBqbXAgLm9wUHV0QnlWYWxTdG9yZVJlc3Vs
dAorCisub3BQdXRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9i
eV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZGVsX2J5X3ZhbDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV92YWwp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2luZGV4OgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X2luZGV4KQor
ICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9nZXR0ZXI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfZ2V0dGVyKQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9zZXR0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfc2V0dGVyKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX2xvb3A6CisgICAgbm9wCitfbGxpbnRfb3Bfam1wOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBkaXNwYXRjaEJyYW5jaCg0W1BDXSkKKworCitfbGxpbnRfb3Bf
am1wX3Njb3BlczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2ptcF9zY29wZXMpCisgICAgZGlzcGF0Y2goMCkKKworCittYWNybyBqdW1wVHJ1ZU9y
RmFsc2UoY29uZGl0aW9uT3AsIHNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmliIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgQm9vbGVhblRhZywgLnNsb3cKKyAgICBjb25kaXRpb25PcChQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50
YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5zbG93OgorICAgIHN1YmkgMyAq
IDQsIFBDCisgICAgY2FsbEhlbHBlcihzbG93KQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xs
aW50X29wX2xvb3BfaWZfdHJ1ZToKKyAgICBub3AKK19sbGludF9vcF9qdHJ1ZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAganVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUs
IHRhcmdldCkgYnRpbnogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
anRydWUpCisKKworX2xsaW50X29wX2xvb3BfaWZfZmFsc2U6CisgICAgbm9wCitfbGxpbnRfb3Bf
amZhbHNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAg
ICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGl6IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2pmYWxzZSkKKworCittYWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIs
IGltbWVkaWF0ZUhhbmRsZXIpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5pbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBjZWxsSGFuZGxlcihTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0Ml0sIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKwor
LnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLmltbWVkaWF0ZToKKyAgICBv
cmkgMSwgdDEKKyAgICBpbW1lZGlhdGVIYW5kbGVyKHQxLCAudGFyZ2V0KQorICAgIGRpc3BhdGNo
KDMpCitlbmQKKworX2xsaW50X29wX2plcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJueiB2YWx1ZSwg
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVl
LCB0YXJnZXQpIGJpZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisgICAgCisKK19sbGlu
dF9vcF9qbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAg
ICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0YnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaW5lcSB2
YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKworCitfbGxpbnRfb3Bfam5lcV9wdHI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0
MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wSm5lcVB0ckJy
YW5jaAorICAgIGJwZXEgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEsIC5vcEpuZXFQdHJG
YWxsVGhyb3VnaAorLm9wSm5lcVB0ckJyYW5jaDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10p
Cisub3BKbmVxUHRyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBjb21w
YXJlKGludGVnZXJDb21wYXJlLCBkb3VibGVDb21wYXJlLCBoZWxwZXIpCisgICAgbG9hZGkgNFtQ
Q10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MiwgdDAsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MiwgdDMpCisg
ICAgYmluZXEgdDAsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDIsIEludDMyVGFn
LCAub3AyTm90SW50CisgICAgaW50ZWdlckNvbXBhcmUodDEsIHQzLCAuanVtcFRhcmdldCkKKyAg
ICBkaXNwYXRjaCg0KQorCisub3AxTm90SW50OgorICAgIGJpYSB0MCwgTG93ZXN0VGFnLCAuc2xv
dworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisgICAgYmluZXEg
dDIsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDMsIGZ0MQorICAgIGptcCAub3AxTm90SW50
UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKy5vcDFO
b3RJbnRSZWFkeToKKyAgICBmaWkyZCB0MSwgdDAsIGZ0MAorICAgIGRvdWJsZUNvbXBhcmUoZnQw
LCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDJOb3RJbnQ6CisgICAg
Y2kyZCB0MSwgZnQwCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgZmlpMmQgdDMs
IHQyLCBmdDEKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBk
aXNwYXRjaCg0KQorCisuanVtcFRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisK
Ky5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDApCitlbmQKKwor
X2xsaW50X29wX2xvb3BfaWZfbGVzczoKKyAgICBub3AKK19sbGludF9vcF9qbGVzczoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2psZXNzKQorCisKK19sbGludF9vcF9qbmxlc3M6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFy
Z2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAg
ICAgX2xsaW50X2hlbHBlcl9qbmxlc3MpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcjoK
KyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
ZGd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVh
dGVyKQorCisKK19sbGludF9vcF9qbmdyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiZGx0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl9qbmdyZWF0ZXIpCisKKworX2xsaW50X29wX2xvb3BfaWZfbGVzc2VxOgorICAgIG5vcAorX2xs
aW50X29wX2psZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXEgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3NlcSkKKworCitf
bGxpbnRfb3Bfam5sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndHVuIGxlZnQs
IHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzc2VxKQorCisK
K19sbGludF9vcF9sb29wX2lmX2dyZWF0ZXJlcToKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRl
cmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxIGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVhdGVyZXEpCisKKworX2xsaW50X29w
X2puZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVu
ZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHR1biBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXJlcSkKKworCitf
bGxpbnRfb3BfbG9vcF9oaW50OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRj
aFRvSklURm9yTG9vcCgpCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2lt
bToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRwIENvZGVC
bG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1faW1tZWRpYXRlU3dpdGNoSnVt
cFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MiwgdDMsIDRdLCB0MgorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BT
d2l0Y2hJbW1Ob3RJbnQKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAg
ICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9m
ZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2goU2lt
cGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyLCB0MCwg
NF0pCisKKy5vcFN3aXRjaEltbU5vdEludDoKKyAgICBiaWIgdDEsIExvd2VzdFRhZywgLm9wU3dp
dGNoSW1tU2xvdyAgIyBHbyB0byBzbG93IHBhdGggaWYgaXQncyBhIGRvdWJsZS4KKy5vcFN3aXRj
aEltbUZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisub3BTd2l0Y2hJ
bW1TbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfaW1tKQorICAgIGRp
c3BhdGNoKDApCisKKworX2xsaW50X29wX3N3aXRjaF9jaGFyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSAxMltQQ10sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisg
ICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwg
dDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZHAgQ29kZUJs
b2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3QyLCB0MywgNF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYmJuZXEgU3RydWN0dXJl
OjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIFN0cmluZ1R5cGUsIC5vcFN3aXRj
aENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTU3RyaW5nOjptX3ZhbHVlW3QwXSwgdDAKKyAg
ICBiaW5lcSBTdHJpbmdJbXBsOjptX2xlbmd0aFt0MF0sIDEsIC5vcFN3aXRjaENoYXJGYWxsVGhy
b3VnaAorICAgIGxvYWRwIFN0cmluZ0ltcGw6Om1fZGF0YThbdDBdLCB0MQorICAgIGJ0aW56IFN0
cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdzW3QwXSwgSGFzaEZsYWdzOEJpdEJ1ZmZlciwgLm9wU3dp
dGNoQ2hhcjhCaXQKKyAgICBsb2FkaCBbdDFdLCB0MAorICAgIGptcCAub3BTd2l0Y2hDaGFyUmVh
ZHkKKy5vcFN3aXRjaENoYXI4Qml0OgorICAgIGxvYWRiIFt0MV0sIHQwCisub3BTd2l0Y2hDaGFy
UmVhZHk6CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEg
dDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJd
LCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaChTaW1wbGVKdW1w
VGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDIsIHQwLCA0XSkKKwor
Lm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisK
K19sbGludF9vcF9zd2l0Y2hfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX3N0cmluZykKKyAgICBkaXNwYXRjaCgwKQorCisK
K19sbGludF9vcF9uZXdfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJb
UENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywg
Lm9wTmV3RnVuY0RvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmMpCisu
b3BOZXdGdW5jRG9uZToKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfZnVuY19l
eHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9u
ZXdfZnVuY19leHApCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBkb0NhbGwoaGVscGVyKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBMTElu
dENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkK
KyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENhbGxTbG93Cisg
ICAgYmluZXEgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIsIC5vcENhbGxTbG93CisgICAg
bG9hZGkgMTJbUENdLCB0MworICAgIGFkZHAgMjQsIFBDCisgICAgbHNoaWZ0aSAzLCB0MworICAg
IGFkZHAgY2ZyLCB0MyAgIyB0MyBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9mIGNmcgorICAgIGxv
YWRwIEpTRnVuY3Rpb246Om1fc2NvcGVDaGFpblt0Ml0sIHQwCisgICAgc3RvcmVpIHQyLCBDYWxs
ZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSB0MCwgU2NvcGVDaGFpbiArIFBheWxv
YWRPZmZzZXRbdDNdCisgICAgbG9hZGkgOCAtIDI0W1BDXSwgdDIKKyAgICBzdG9yZWkgUEMsIEFy
Z3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlcCBjZnIsIENhbGxlckZyYW1l
W3QzXQorICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCisg
ICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10KKyAgICBzdG9yZWkgQ2Vs
bFRhZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10KKyAgICBjYWxsIExMSW50Q2FsbExpbmtJ
bmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0KKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKy5v
cENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBoZWxwZXIpCitlbmQKKworX2xsaW50
X29wX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRfaGVscGVy
X2NhbGwpCisKKworX2xsaW50X29wX2NvbnN0cnVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY29uc3RydWN0KQorCisKK19sbGludF9vcF9jYWxsX3Zh
cmFyZ3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBfbGxp
bnRfaGVscGVyX2NhbGxfdmFyYXJncykKKworCitfbGxpbnRfb3BfY2FsbF9ldmFsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICAKKyAgICAjIEV2YWwgaXMgZXhlY3V0ZWQgaW4gb25lIG9mIHR3
byBtb2RlczoKKyAgICAjCisgICAgIyAxKSBXZSBmaW5kIHRoYXQgd2UncmUgcmVhbGx5IGludm9r
aW5nIGV2YWwoKSBpbiB3aGljaCBjYXNlIHRoZQorICAgICMgICAgZXhlY3V0aW9uIGlzIHBlcmZv
bWVkIGVudGlyZWx5IGluc2lkZSB0aGUgaGVscGVyLCBhbmQgaXQKKyAgICAjICAgIHJldHVybnMg
dGhlIFBDIG9mIGEgZnVuY3Rpb24gdGhhdCBqdXN0IHJldHVybnMgdGhlIHJldHVybiB2YWx1ZQor
ICAgICMgICAgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAjCisgICAgIyAyKSBXZSBmaW5k
IHRoYXQgd2UncmUgaW52b2tpbmcgc29tZXRoaW5nIGNhbGxlZCBldmFsKCkgdGhhdCBpcyBub3QK
KyAgICAjICAgIHRoZSByZWFsIGV2YWwuIFRoZW4gdGhlIGhlbHBlciByZXR1cm5zIHRoZSBQQyBv
ZiB0aGUgdGhpbmcgdG8KKyAgICAjICAgIGNhbGwsIGFuZCB3ZSBjYWxsIGl0LgorICAgICMKKyAg
ICAjIFRoaXMgYWxsb3dzIHVzIHRvIGhhbmRsZSB0d28gY2FzZXMsIHdoaWNoIHdvdWxkIHJlcXVp
cmUgYSB0b3RhbCBvZgorICAgICMgdXAgdG8gZm91ciBwaWVjZXMgb2Ygc3RhdGUgdGhhdCBjYW5u
b3QgYmUgZWFzaWx5IHBhY2tlZCBpbnRvIHR3bworICAgICMgcmVnaXN0ZXJzIChDIGZ1bmN0aW9u
cyBjYW4gcmV0dXJuIHVwIHRvIHR3byByZWdpc3RlcnMsIGVhc2lseSk6CisgICAgIworICAgICMg
LSBUaGUgY2FsbCBmcmFtZSByZWdpc3Rlci4gVGhpcyBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4g
bW9kaWZpZWQKKyAgICAjICAgYnkgdGhlIGhlbHBlciwgYnV0IHRoZSBjb252ZW50aW9uIGlzIHRo
YXQgaXQgcmV0dXJucyBpdC4gSXQncyBub3QKKyAgICAjICAgdG90YWxseSBjbGVhciBpZiB0aGF0
J3MgbmVjZXNzYXJ5LCBzaW5jZSB0aGUgY2ZyIGlzIGNhbGxlZSBzYXZlLgorICAgICMgICBCdXQg
dGhhdCdzIG91ciBzdHlsZSBpbiB0aGlzIGhlcmUgaW50ZXJwcmV0ZXIgc28gd2Ugc3RpY2sgd2l0
aCBpdC4KKyAgICAjCisgICAgIyAtIEEgYml0IHRvIHNheSBpZiB0aGUgaGVscGVyIHN1Y2Nlc3Nm
dWxseSBleGVjdXRlZCB0aGUgZXZhbCBhbmQgaGFzCisgICAgIyAgIHRoZSByZXR1cm4gdmFsdWUs
IG9yIGRpZCBub3QgZXhlY3V0ZSB0aGUgZXZhbCBidXQgaGFzIGEgUEMgZm9yIHVzCisgICAgIyAg
IHRvIGNhbGwuCisgICAgIworICAgICMgLSBFaXRoZXI6CisgICAgIyAgIC0gVGhlIEpTIHJldHVy
biB2YWx1ZSAodHdvIHJlZ2lzdGVycyksIG9yCisgICAgIworICAgICMgICAtIFRoZSBQQyB0byBj
YWxsLgorICAgICMKKyAgICAjIEl0IHR1cm5zIG91dCB0byBiZSBlYXNpZXIgdG8ganVzdCBhbHdh
eXMgaGF2ZSB0aGlzIHJldHVybiB0aGUgY2ZyCisgICAgIyBhbmQgYSBQQyB0byBjYWxsLCBhbmQg
dGhhdCBQQyBtYXkgYmUgYSBkdW1teSB0aHVuayB0aGF0IGp1c3QKKyAgICAjIHJldHVybnMgdGhl
IEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAgCisgICAgc2xvd1BhdGhGb3JD
YWxsKDQsIF9sbGludF9oZWxwZXJfY2FsbF9ldmFsKQorCisKK19sbGludF9nZW5lcmljX3JldHVy
bl9wb2ludDoKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKworX2xsaW50X29wX3RlYXJfb2Zm
X2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1w
dHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkCisgICAgYmllcSBUYWdPZmZz
ZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3Jl
YXRlZAorLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkOgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQorLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVh
dGVkOgorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3RlYXJfb2ZmX2FyZ3VtZW50czoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3ViaSAxLCB0
MCAgICMgR2V0IHRoZSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIKKyAgICBiaWVxIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFyZ3VtZW50c05vdENy
ZWF0ZWQKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQor
Lm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMikKKworCittYWNy
byBkb1JldHVybigpCisgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICBsb2FkcCBDYWxs
ZXJGcmFtZVtjZnJdLCBjZnIKKyAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0
MikKKyAgICByZXQKK2VuZAorCitfbGxpbnRfb3BfcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3BfY2FsbF9w
dXRfcmVzdWx0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAg
ICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3JldF9v
YmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJ
VEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAK
KyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90
eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BSZXRPYmplY3RP
clRoaXNOb3RPYmplY3QKKyAgICBkb1JldHVybigpCisKKy5vcFJldE9iamVjdE9yVGhpc05vdE9i
amVjdDoKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1Jl
dHVybigpCisKKworX2xsaW50X29wX21ldGhvZF9jaGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNoZWNrcyBhbmQgdXNlIG5vcm1hbCBnZXRfYnlfaWQg
b3B0aW1pemF0aW9ucy4KKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zdHJjYXQ6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zdHJjYXQp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9QcmltaXRpdmVJ
c0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJibmVxIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAu
b3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisub3BUb1ByaW1pdGl2ZUlzSW1tOgorICAgIHN0b3JlaSB0
MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9QcmltaXRpdmVTbG93Q2FzZToKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fcHJpbWl0aXZlKQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX2dldF9wbmFtZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfcG5hbWVzKQorICAgIGRpc3BhdGNoKDApICMgVGhl
IGhlbHBlciBlaXRoZXIgYWR2YW5jZXMgdGhlIFBDIG9yIGp1bXBzIHVzIHRvIHNvbWV3aGVyZSBl
bHNlLgorCisKK19sbGludF9vcF9uZXh0X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZGkgMTZbUENdLCB0MgorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQwCisgICAgYmllcSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XSwgLm9wTmV4dFBuYW1lRW5kCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcjo6bV9qc1N0cmluZ3NbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDhdLCB0Mwor
ICAgIGFkZGkgMSwgdDAKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9h
ZGkgOFtQQ10sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAgICBicG5lcSB0MSwgSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93
CisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFp
blt0Ml0sIHQwCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKKyAg
ICBidHB6IFt0MF0sIC5vcE5leHRQbmFtZVRhcmdldAorLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5
cGVMb29wOgorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFt0MV0s
IE51bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90
eXBlICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0Ml0sIHQxCisgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBhZGRw
IDQsIHQwCisgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wCisu
b3BOZXh0UG5hbWVUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMjRbUENdKQorCisub3BOZXh0
UG5hbWVFbmQ6CisgICAgZGlzcGF0Y2goNykKKworLm9wTmV4dFBuYW1lU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfbmV4dF9wbmFtZSkgIyBUaGlzIGVpdGhlciBrZWVwcyB0aGUg
UEMgd2hlcmUgaXQgd2FzIChjYXVzaW5nIHVzIHRvIGxvb3ApIG9yIHNldHMgaXQgdG8gdGFyZ2V0
LgorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3B1c2hfc2NvcGU6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX3Njb3BlKQorICAg
IGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3BvcF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3BvcF9zY29wZSkKKyAgICBkaXNwYXRj
aCgxKQorCisKK19sbGludF9vcF9wdXNoX25ld19zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfbmV3X3Njb3BlKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX2NhdGNoOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAj
IFRoaXMgaXMgd2hlcmUgd2UgZW5kIHVwIGZyb20gdGhlIEpJVCdzIHRocm93IHRyYW1wb2xpbmUg
KGJlY2F1c2UgdGhlCisgICAgIyBtYWNoaW5lIGNvZGUgcmV0dXJuIGFkZHJlc3Mgd2lsbCBiZSBz
ZXQgdG8gX2xsaW50X29wX2NhdGNoKSwgYW5kIGZyb20KKyAgICAjIHRoZSBpbnRlcnByZXRlcidz
IHRocm93IHRyYW1wb2xpbmUgKHNlZSBfbGxpbnRfdGhyb3dfdHJhbXBvbGluZSkuCisgICAgIyBU
aGUgSklUIHRocm93aW5nIHByb3RvY29sIGNhbGxzIGZvciB0aGUgY2ZyIHRvIGJlIGluIHQwLiBU
aGUgdGhyb3dpbmcKKyAgICAjIGNvZGUgbXVzdCBoYXZlIGtub3duIHRoYXQgd2Ugd2VyZSB0aHJv
d2luZyB0byB0aGUgaW50ZXJwcmV0ZXIsIGFuZCBoYXZlCisgICAgIyBzZXQgSlNHbG9iYWxEYXRh
Ojp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cuCisgICAgbW92ZSB0MCwgY2ZyCisgICAgbG9h
ZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZGkgSlNHbG9iYWxE
YXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3dbdDNdLCBQQworICAgIGxvYWRpIEpTR2xv
YmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10sIHQwCisgICAgbG9hZGkgSlNH
bG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdLCB0MQorICAgIHN0b3JlaSAwLCBK
U0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIEVt
cHR5VmFsdWVUYWcsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXQorICAg
IGxvYWRpIDRbUENdLCB0MgorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4
XQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goMikK
KworCitfbGxpbnRfb3BfdGhyb3c6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl90aHJvdykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90
aHJvd19yZWZlcmVuY2VfZXJyb3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpCisgICAgZGlzcGF0Y2goMikK
KworCitfbGxpbnRfb3BfanNyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBhZGRpIDMgKiA0LCBQQywgdDEKKyAgICBzdG9yZWkgdDEsIFt0MF0KKyAgICBk
aXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3JldDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIFBDCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRf
b3BfZGVidWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9kZWJ1ZykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcm9maWxlX3dpbGxf
Y2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYnRweiBKSVRTdGFja0ZyYW1lOjplbmFi
bGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQorLm9wUHJvZmlsZVdpbGxD
YWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wcm9maWxlX2RpZF9jYWxs
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidHB6IEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQ
cm9maWxlclJlZmVyZW5jZVtzcF0sIC5vcFByb2ZpbGVEaWRDYWxsRG9uZQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQorLm9wUHJvZmlsZURpZENhbGxEb25l
OgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2VuZDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X3Rocm93
X2Zyb21faGVscGVyX3RyYW1wb2xpbmU6CisgICAgIyBXaGVuIHRocm93aW5nIGZyb20gdGhlIGlu
dGVycHJldGVyIChpLmUuIHRocm93aW5nIGZyb20gTExJbnRIZWxwZXJzKSwgc28KKyAgICAjIHRo
ZSB0aHJvdyB0YXJnZXQgaXMgbm90IG5lY2Vzc2FyaWx5IGludGVycHJldGVkIGNvZGUsIHdlIGNv
bWUgdG8gaGVyZS4KKyAgICAjIFRoaXMgZXNzZW50aWFsbHkgZW11bGF0ZXMgdGhlIEpJVCdzIHRo
cm93aW5nIHByb3RvY29sLgorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3Bd
LCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAor
ICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKK19s
bGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lOgorICAgIHByZXNlcnZlUmV0dXJuQWRk
cmVzc0FmdGVyQ2FsbCh0MikKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3Nw
XSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAK
KyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCisj
IExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qg
c3VwcG9ydCBhbGwgb3Bjb2Rlcy4KKyMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ug
d2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQKKyMgYXMgbXVjaC4KKwor
bWFjcm8gbm90U3VwcG9ydGVkKCkKKyAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBjcmFz
aCgpCisgICAgZWxzZQorICAgICAgICAjIFdlIHNob3VsZCB1c2Ugd2hhdGV2ZXIgdGhlIHNtYWxs
ZXN0IHBvc3NpYmxlIGluc3RydWN0aW9uIGlzLCBqdXN0IHRvCisgICAgICAgICMgZW5zdXJlIHRo
YXQgdGhlcmUgaXMgYSBnYXAgYmV0d2VlbiBpbnN0cnVjdGlvbiBsYWJlbHMuIElmIG11bHRpcGxl
CisgICAgICAgICMgc21hbGxlc3QgaW5zdHJ1Y3Rpb25zIGV4aXN0LCB3ZSBzaG91bGQgcGljayB0
aGUgb25lIHRoYXQgaXMgbW9zdAorICAgICAgICAjIGxpa2VseSByZXN1bHQgaW4gZXhlY3V0aW9u
IGJlaW5nIGhhbHRlZC4gQ3VycmVudGx5IHRoYXQgaXMgdGhlIGJyZWFrCisgICAgICAgICMgaW5z
dHJ1Y3Rpb24gb24gYWxsIGFyY2hpdGVjdHVyZXMgd2UncmUgaW50ZXJlc3RlZCBpbi4gKEJyZWFr
IGlzIGludDMKKyAgICAgICAgIyBvbiBJbnRlbCwgd2hpY2ggaXMgMSBieXRlLCBhbmQgYmtwdCBv
biBBUk12Nywgd2hpY2ggaXMgMiBieXRlcy4pCisgICAgICAgIGJyZWFrCisgICAgZW5kCitlbmQK
KworX2xsaW50X29wX2dldF9hcnJheV9sZW5ndGg6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xs
aW50X29wX2dldF9ieV9pZF9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2N1c3RvbV9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2N1c3RvbV9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2N1c3RvbV9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9n
ZXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX2dldHRlcl9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX2dldHRlcl9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX2dldHRlcl9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9zZWxm
OgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfc3RyaW5nX2xlbmd0aDoKKyAg
ICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX2dlbmVyaWM6CisgICAgbm90
U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9yZXBsYWNlOgorICAgIG5vdFN1cHBv
cnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbjoKKyAgICBub3RTdXBwb3J0
ZWQoKQorCisKKyMgSW5kaWNhdGUgdGhlIGVuZCBvZiBMTEludC4KK19sbGludF9lbmQ6CisgICAg
Y3Jhc2goKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNp
bmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKKyNpbmNsdWRlICJMTEludEFzc2VtYmx5
LmgiCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExv
d0xldmVsSW50ZXJwcmV0ZXJfaAorI2RlZmluZSBMb3dMZXZlbEludGVycHJldGVyX2gKKworI2lu
Y2x1ZGUgIk9wY29kZS5oIgorCisjZGVmaW5lIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wob3Bjb2Rl
LCBsZW5ndGgpIGV4dGVybiAiQyIgdm9pZCBsbGludF8jI29wY29kZSgpOworICAgIEZPUl9FQUNI
X09QQ09ERV9JRChMTElOVF9JTlNUUlVDVElPTl9ERUNMKTsKKyN1bmRlZiBMTElOVF9JTlNUUlVD
VElPTl9ERUNMCisKK2V4dGVybiAiQyIgdm9pZCBsbGludF9iZWdpbigpOworZXh0ZXJuICJDIiB2
b2lkIGxsaW50X2VuZCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUo
KTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9ldmFsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZv
aWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBs
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQg
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBs
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZv
aWQgbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90
aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhy
b3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSgpOworCisjZW5kaWYgLy8gTG93TGV2ZWxJbnRlcnBy
ZXRlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJi
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVyCisgIGRlZiBpbml0aWFsaXplKG5h
bWUpCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFybVY3T3BlcmFuZAorICAg
IEBuYW1lCisgIGVuZAorZW5kCisKK0FSTXY3X0RBVEFfUkVHID0gU3BlY2lhbFJlZ2lzdGVyLm5l
dygiaXAiKQorQVJNdjdfQUREUl9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyMyIpCisKK2Rl
ZiBtb3ZlSW1tZWRpYXRlKHZhbHVlLCByZWdpc3RlcikKKyAgIyBDdXJyZW50bHkgd2Ugb25seSBo
YW5kbGUgdGhlIHNpbXBsZSBjYXNlcywgYW5kIGZhbGwgYmFjayB0byBtb3YvbW92dCBmb3IgdGhl
IGNvbXBsZXggb25lcy4KKyAgaWYgdmFsdWUgPj0gMCAmJiB2YWx1ZSA8IDI1NgorICAgICRhc20u
cHV0cyAibW92dyBcIyN7dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgIGVsc2lm
ICh+dmFsdWUpID49IDAgJiYgKH52YWx1ZSkgPCAyNTYKKyAgICAkYXNtLnB1dHMgIm12bncgXCMj
e352YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzZQorICAgICRhc20ucHV0
cyAibW92dyBcIyN7dmFsdWUgJiAweGZmZmZ9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisg
ICAgaWYgKHZhbHVlICYgMHhmZmZmMDAwMCkgIT0gMAorICAgICAgJGFzbS5wdXRzICJtb3Z0IFwj
I3t2YWx1ZSA+PiAxNn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAgZW5k
CitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBu
YW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiCisgICAgICAicjAiCisgICAgd2hlbiAidDEi
LCAiYTEiLCAicjEiCisgICAgICAicjEiCisgICAgd2hlbiAidDIiLCAiYTIiCisgICAgICAicjIi
CisgICAgd2hlbiAiYTMiCisgICAgICAicjMiCisgICAgd2hlbiAidDMiCisgICAgICAicjQiCisg
ICAgd2hlbiAidDQiCisgICAgICAicjciCisgICAgd2hlbiAiY2ZyIgorICAgICAgInI1IgorICAg
IGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFy
ZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVt
b3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRT
dG9yZVdyYXAKKyAgICB5aWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQKKyAg
ZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIsICJmciIKKyAg
ICAgICJkMCIKKyAgICB3aGVuICJmcjEiLAorICAgICAgImQxIgorICAgIHdoZW4gImZyMiIKKyAg
ICAgICJkMiIKKyAgICB3aGVuICJmcjMiCisgICAgICAiZDMiCisgICAgd2hlbiAiZnI0IgorICAg
ICAgImQ0IgorICAgIHdoZW4gImZyNSIKKyAgICAgICJkNSIKKyAgICBlbHNlCisgICAgICByYWlz
ZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9w
ZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBh
cm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgeWll
bGQgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3T3BlcmFu
ZAorICAgIHJhaXNlICJJbnZhbGlkIGltbWVkaWF0ZSAje3ZhbHVlfSIgaWYgdmFsdWUgPCAwIG9y
IHZhbHVlID4gMjU1CisgICAgIiMke3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVw
YXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVN
ZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9h
ZFN0b3JlV3JhcAorICAgIHlpZWxkIHNlbGYKKyAgZW5kCitlbmQKKworbW9kdWxlIEFSTXY3QWRk
cmVzc1V0aWxpdGllcworICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgc2VsZi5hcm1WN1By
ZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICAkYXNtLnB1dHMgIlx0bGRyICN7c2VsZi5h
cm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFuZH0sICN7QVJNdjdfREFUQV9SRUcuYXJtVjdPcGVyYW5k
fSIKKyAgICB5aWVsZCBBUk12N19EQVRBX1JFRworICAgICRhc20ucHV0cyAiXHRzdHIgI3tBUk12
N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9LCAje3NlbGYuYXJtVjdQb3NzaWJseU1lbW9yeU9wZXJh
bmR9IgorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGluY2x1ZGUgQVJNdjdBZGRyZXNz
VXRpbGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAg
IGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICBt
b3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZh
bHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAgICJbI3tiYXNlLmFybVY3
T3BlcmFuZH0sICN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfV0iCisgICAgZWxzZQorICAg
ICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tvZmZzZXQuYXJtVjdPcGVyYW5kfV0iCisgICAg
ZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBpbmNsdWRlIEFSTXY3QWRkcmVz
c1V0aWxpdGllcworCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAg
ICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAgICAgbW92ZUltbWVkaWF0ZShvZmZzZXQudmFsdWUs
IEFSTXY3X0FERFJfUkVHKQorICAgICAgJGFzbS5wdXRzICJhZGR3ICN7QVJNdjdfQUREUl9SRUcu
YXJtVjdPcGVyYW5kfSwgI3tiYXNlLmFybVY3T3BlcmFuZH0iCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlICE9
IDAKKyAgICAgICJbI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3
T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGV9XSIKKyAgICBlbHNlCisgICAgICAiWyN7YmFzZS5hcm1W
N09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGV9XSIKKyAgICBl
bmQKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgIGluY2x1ZGUgQVJNdjdB
ZGRyZXNzVXRpbGl0aWVzCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVy
YW5kCisgICAgbW92ZUltbWVkaWF0ZShhZGRyZXNzLnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAg
ZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICAiWyN7QVJNdjdf
QUREUl9SRUcuYXJtVjdPcGVyYW5kfV0iCisgIGVuZAorZW5kCisKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MyBA
QAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRz
IgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNldHRpbmdz
IgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitjbGFzcyBBc3NlbWJsZXIKKyAgZGVmIGluaXRpYWxp
emUob3V0cCkKKyAgICBAb3V0cCA9IG91dHAKKyAgICBAc3RhdGUgPSA6Y3BwCisgIGVuZAorICAK
KyAgZGVmIGVudGVyQXNtCisgICAgQG91dHAucHV0cyAiYXNtICgiCisgICAgQHN0YXRlID0gOmFz
bQorICBlbmQKKyAgCisgIGRlZiBsZWF2ZUFzbQorICAgIEBvdXRwLnB1dHMgIik7IgorICAgIEBz
dGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBkZWYgaW5Bc20KKyAgICBlbnRlckFzbQorICAgIHlp
ZWxkCisgICAgbGVhdmVBc20KKyAgZW5kCisgIAorICBkZWYgcHV0cyhsaW5lKQorICAgIHJhaXNl
IHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnB1dHMoKGxpbmUgKyAiXG4iKS5pbnNw
ZWN0KQorICBlbmQKKyAgCisgIGRlZiBjb21tZW50KHRleHQpCisgICAgQG91dHAucHV0cyAiLy8g
I3t0ZXh0fSIKKyAgZW5kCitlbmQKKworJGFzbSA9IEFzc2VtYmxlci5uZXcoJHN0ZG91dCkKKwor
YXNtRmlsZSA9IEFSR1Yuc2hpZnQKK29mZnNldHNGaWxlID0gQVJHVi5zaGlmdAorCithc3QgPSBw
YXJzZShsZXgoSU86OnJlYWQoYXNtRmlsZSkpKQorb2Zmc2V0c0xpc3QsIGNvbmZpZ0luZGV4ID0g
b2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChvZmZzZXRzRmlsZSkKKworZm9yU2V0dGluZ3Mo
Y29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdClbY29uZmlnSW5kZXhdLCBhc3QpIHsKKyAg
fCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgIGFzc2VydENvbmZp
Z3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAgbG93TGV2ZWxBU1QgPSBsb3dMZXZlbEFTVC5y
ZXNvbHZlKCpidWlsZE9mZnNldHNNYXAobG93TGV2ZWxBU1QsIG9mZnNldHNMaXN0KSkKKyAgZW1p
dENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tl
bmQpIHsKKyAgICAkYXNtLmluQXNtIHsKKyAgICAgIGxvd0xldmVsQVNULmxvd2VyKGJhY2tlbmQp
CisgICAgfQorICB9Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
c3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0
LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQmFz
ZSB1dGlsaXR5IHR5cGVzIGZvciB0aGUgQVNULiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBWYWxpZCBt
ZXRob2RzIGZvciBOb2RlOgorIworIyBub2RlLmNoaWxkcmVuIC0+IFJldHVybnMgYW4gYXJyYXkg
b2YgaW1tZWRpYXRlIGNoaWxkcmVuLgorIworIyBub2RlLmRlc2NlbmRlbnRzIC0+IFJldHVybnMg
YW4gYXJyYXkgb2YgYWxsIHN0cmljdCBkZXNjZW5kYW50cyAoY2hpbGRyZW4KKyMgICAgIGFuZCBj
aGlsZHJlbiBvZiBjaGlsZHJlbiwgdHJhbnNpdGl2ZWx5KS4KKyMKKyMgbm9kZS5mbGF0dGVuIC0+
IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgc3RyaWN0IGRlc2NlbmRhbnRzIGFuZAor
IyAgICAgdGhlIG5vZGUgaXRzZWxmLgorIworIyBub2RlLmZpbHRlcih0eXBlKSAtPiBSZXR1cm5z
IGFuIGFycmF5IGNvbnRhaW5pbmcgdGhvc2UgZWxlbWVudHMgaW4KKyMgICAgIG5vZGUuZmxhdHRl
biB0aGF0IGFyZSBvZiB0aGUgZ2l2ZW4gdHlwZSAoaXNfYT8gdHlwZSByZXR1cm5zIHRydWUpLgor
IworIyBub2RlLm1hcENoaWxkcmVue3x2fCAuLi59IC0+IFJldHVybnMgYSBuZXcgbm9kZSB3aXRo
IGFsbCBjaGlsZHJlbgorIyAgICAgcmVwbGFjZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBibG9j
ay4KKyMKKyMgRXhhbXBsZXM6CisjCisjIG5vZGUuZmlsdGVyKFNldHRpbmcpLnVuaXEgLT4gUmV0
dXJucyBhbGwgb2YgdGhlIHNldHRpbmdzIHRoYXQgdGhlIEFTVCdzCisjICAgICBJZlRoZW5FbHNl
IGJsb2NrcyBkZXBlbmQgb24uCisjCisjIG5vZGUuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcSAt
PiBSZXR1cm5zIGFsbCBvZiB0aGUgc3RydWN0dXJlIG9mZnNldHMKKyMgICAgIHRoYXQgdGhlIEFT
VCBkZXBlbmRzIG9uLgorCitjbGFzcyBOb2RlCisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9y
aWdpbgorICBlbmQKKyAgCisgIGRlZiBjb2RlT3JpZ2luU3RyaW5nCisgICAgImxpbmUgbnVtYmVy
ICN7QGNvZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBkZXNjZW5kYW50cworICAgIGNoaWxk
cmVuLmNvbGxlY3R7fHZ8IHYuZmxhdHRlbn0uZmxhdHRlbgorICBlbmQKKyAgCisgIGRlZiBmbGF0
dGVuCisgICAgW3NlbGZdICsgZGVzY2VuZGFudHMKKyAgZW5kCisgIAorICBkZWYgZmlsdGVyKHR5
cGUpCisgICAgZmxhdHRlbi5zZWxlY3R7fHZ8IHYuaXNfYT8gdHlwZX0KKyAgZW5kCitlbmQKKwor
Y2xhc3MgTm9DaGlsZHJlbiA8IE5vZGUKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtdCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFz
cyBTdHJ1Y3RPZmZzZXRLZXkKKyAgYXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShzdHJ1Y3QsIGZpZWxkKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBA
ZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisgIGRlZiBoYXNoCisgICAgQHN0cnVjdC5oYXNoICsg
QGZpZWxkLmhhc2ggKiAzCisgIGVuZAorICAKKyAgZGVmIGVxbD8ob3RoZXIpCisgICAgQHN0cnVj
dCA9PSBvdGhlci5zdHJ1Y3QgYW5kIEBmaWVsZCA9PSBvdGhlci5maWVsZAorICBlbmQKK2VuZAor
ICAgIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQVNUIG5vZGVzLiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgU3RydWN0T2Zmc2V0IDwg
Tm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAc3RydWN0ID0gc3RydWN0CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5kCisgIAorICBA
QG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yRmllbGQoY29kZU9yaWdpbiwgc3RydWN0
LCBmaWVsZCkKKyAgICBrZXkgPSBTdHJ1Y3RPZmZzZXRLZXkubmV3KHN0cnVjdCwgZmllbGQpCisg
ICAgCisgICAgdW5sZXNzIEBAbWFwcGluZ1trZXldCisgICAgICBAQG1hcHBpbmdba2V5XSA9IFN0
cnVjdE9mZnNldC5uZXcoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBlbmQKKyAgICBA
QG1hcHBpbmdba2V5XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7c3RydWN0fTo6I3tm
aWVsZH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAgICBpZiBAc3RydWN0ICE9IG90
aGVyLnN0cnVjdAorICAgICAgcmV0dXJuIEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICAgIGVu
ZAorICAgIEBmaWVsZCA8PT4gb3RoZXIuZmllbGQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9m
IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0CisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0
ID0gc3RydWN0CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZv
ck5hbWUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHVubGVzcyBAQG1hcHBpbmdbc3RydWN0XQor
ICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBTaXplb2YubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCkK
KyAgICBlbmQKKyAgICBAQG1hcHBpbmdbc3RydWN0XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgInNpemVvZiAje0BzdHJ1Y3R9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIpCisgICAg
QHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZSA8
IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnZhbHVlCisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YWx1ZSA9IHZh
bHVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3t2YWx1ZX0iCisgIGVuZAorICAKKyAg
ZGVmID09KG90aGVyKQorICAgIG90aGVyLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUg
PT0gQHZhbHVlCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0Cisg
ICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQs
IEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBZGRJbW1lZGlhdGVz
Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICsgI3tyaWdodC5kdW1wfSkiCisgIGVu
ZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0
LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmln
aHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5k
CisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBTdWJJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2lu
LCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICIoI3tsZWZ0LmR1bXB9IC0gI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNz
IE11bEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAor
ICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFw
Q2hpbGRyZW4KKyAgICBNdWxJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQp
LCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1
bXB9ICogI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0ZSA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisg
IGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BjaGlsZF0KKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBOZWdJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hp
bGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigtI3tAY2hpbGQuZHVtcH0pIgorICBl
bmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9
CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBA
bWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gUmVnaXN0ZXJJRC5uZXcoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklEIDwg
Tm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQor
ICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5n
W25hbWVdID0gRlBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAg
IEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQK
K2VuZAorCitjbGFzcyBWYXJpYWJsZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAK
KyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBp
bmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFZhcmlhYmxlLm5ldyhjb2RlT3JpZ2lu
LCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzIDwgTm9kZQorICBhdHRy
X3JlYWRlciA6YmFzZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
YmFzZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisg
ICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFz
ZSwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBZGRyZXNzLm5l
dyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQG9mZnNldCkpCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQuZHVtcH1bI3tiYXNlLmR1bXB9XSIKKyAgZW5kCitl
bmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFzZSwgOmluZGV4
LCA6c2NhbGUsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGJhc2Us
IGluZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGJhc2Ug
PSBiYXNlCisgICAgQGluZGV4ID0gaW5kZXgKKyAgICBAc2NhbGUgPSBzY2FsZQorICAgIHJhaXNl
IHVubGVzcyBbMSwgMiwgNCwgOF0ubWVtYmVyPyBAc2NhbGUKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BiYXNlLCBAaW5kZXgsIEBvZmZzZXRd
CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQmFzZUluZGV4Lm5ldyhjb2RlT3Jp
Z2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQGluZGV4KSwgQHNjYWxlLCAoeWllbGQgQG9mZnNl
dCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQuZHVtcH1bI3tiYXNlLmR1
bXB9LCAje2luZGV4LmR1bXB9LCAje3NjYWxlfV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29s
dXRlQWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmFkZHJlc3MKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGFkZHJlc3MpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje2Fk
ZHJlc3MuZHVtcH1bXSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24gPCBOb2RlCisg
IGF0dHJfcmVhZGVyIDpvcGNvZGUsIDpvcGVyYW5kcworICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgb3Bjb2RlLCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBv
cGNvZGUgPSBvcGNvZGUKKyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcworICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZw
cm9jKQorICAgIEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBAb3Bjb2RlLCBAb3BlcmFuZHMu
bWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdCIgKyBvcGNvZGUudG9f
cyArICIgIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKQorICBlbmQK
K2VuZAorCitjbGFzcyBFcnJvciA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
Ilx0ZXJyb3IiCisgIGVuZAorZW5kCisKK2NsYXNzIENvbnN0RGVjbCA8IE5vZGUKKyAgYXR0cl9y
ZWFkZXIgOnZhcmlhYmxlLCA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IHZhcmlhYmxlLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YXJpYWJsZSA9
IHZhcmlhYmxlCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4K
KyAgICBbQHZhcmlhYmxlLCBAdmFsdWVdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisg
ICAgQ29uc3REZWNsLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHZhcmlhYmxlKSwgKHlpZWxkIEB2
YWx1ZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiY29uc3QgI3tAdmFyaWFibGUuZHVt
cH0gPSAje0B2YWx1ZS5kdW1wfSIKKyAgZW5kCitlbmQKKworJGxhYmVsTWFwcGluZyA9IHt9CisK
K2NsYXNzIExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFt
ZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExh
YmVsCisgICAgZWxzZQorICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExhYmVsLm5ldyhjb2Rl
T3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxM
YWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9
IG5hbWUKKyAgZW5kCisKKyAgQEB1bmlxdWVOYW1lQ291bnRlciA9IDAKKyAgCisgIGRlZiBzZWxm
LmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisg
ICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxN
YXBwaW5nW25hbWVdLmlzX2E/IExvY2FsTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBw
aW5nW25hbWVdID0gTG9jYWxMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAg
ICAkbGFiZWxNYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIHNlbGYudW5pcXVlCisgICAg
d2hpbGUgJGxhYmVsTWFwcGluZ1siX0wje0BAdW5pcXVlTmFtZUNvdW50ZXJ9Il0KKyAgICAgIEBA
dW5pcXVlTmFtZUNvdW50ZXIgKz0gMQorICAgIGVuZAorICAgIGZvck5hbWUobmlsLCAiX0wje0BA
dW5pcXVlTmFtZUNvdW50ZXJ9IikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9
OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UgPCBOb2RlCisgIGF0dHJfcmVh
ZGVyIDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAg
TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAg
CisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
bGFiZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlIDwgTm9D
aGlsZHJlbgorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRl
ZiBtYXBDaGlsZHJlbgorICAgIExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5
aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBT
ZXF1ZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIGxpc3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGlzdCA9IGxp
c3QKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBsaXN0CisgIGVuZAorICAKKyAgZGVm
IG1hcENoaWxkcmVuKCZwcm9jKQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBAbGlzdC5t
YXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0e3x2fCB2
LmR1bXB9LmpvaW4oIlxuIikKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hpbGRyZW4K
KyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5j
ZSA9IFRydWUubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAg
ZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAidHJ1ZSIKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UgPCBOb0NoaWxkcmVuCisgIGRlZiBp
bml0aWFsaXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBGYWxz
ZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAg
CisgIGRlZiB2YWx1ZQorICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiZmFs
c2UiCisgIGVuZAorZW5kCisKK2NsYXNzIFRydWVDbGFzcworICBkZWYgYXNOb2RlCisgICAgVHJ1
ZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZUNsYXNzCisgIGRlZiBhc05vZGUK
KyAgICBGYWxzZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nIDwgTm9DaGls
ZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQK
KyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVd
ID0gU2V0dGluZy5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdb
bmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xh
c3MgQW5kIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNo
aWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
CisgICAgQW5kLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3JpZ2h0LmR1
bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgT3IgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0
LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmln
aHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5k
CisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBs
ZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVm
dC5kdW1wfSBvciAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTm90IDwgTm9k
ZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBk
ZWYgbWFwQ2hpbGRyZW4KKyAgICBOb3QubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisgIGVuZAor
ZW5kCisKK2NsYXNzIFNraXAgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJc
dHNraXAiCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UgPCBOb2RlCisgIGF0dHJfcmVh
ZGVyIDpwcmVkaWNhdGUsIDp0aGVuQ2FzZQorICBhdHRyX2FjY2Vzc29yIDplbHNlQ2FzZQorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZSkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBwcmVkaWNhdGUgPSBwcmVkaWNhdGUKKyAgICBAdGhlbkNh
c2UgPSB0aGVuQ2FzZQorICAgIEBlbHNlQ2FzZSA9IFNraXAubmV3KGNvZGVPcmlnaW4pCisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgaWYgQGVsc2VDYXNlCisgICAgICBbQHByZWRpY2F0
ZSwgQHRoZW5DYXNlLCBAZWxzZUNhc2VdCisgICAgZWxzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0
aGVuQ2FzZV0KKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBJZlRo
ZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHByZWRpY2F0ZSksICh5aWVsZCBAdGhlbkNh
c2UpLCAoeWllbGQgQGVsc2VDYXNlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJpZiAj
e3ByZWRpY2F0ZS5kdW1wfVxuIiArIHRoZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsgZWxzZUNh
c2UuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8gPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpuYW1lLCA6dmFyaWFibGVzLCA6Ym9keQorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQG5hbWUgPSBuYW1lCisgICAgQHZhcmlhYmxlcyA9IHZhcmlhYmxlcworICAgIEBib2R5
ID0gYm9keQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEB2YXJpYWJsZXMgKyBbQGJv
ZHldCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTWFjcm8ubmV3KGNvZGVPcmln
aW4sIEBuYW1lLCBAdmFyaWFibGVzLm1hcHt8dnwgeWllbGQgdn0sICh5aWVsZCBAYm9keSkpCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFibGVzLmNv
bGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpXG4iICsgYm9keS5kdW1wICsgIlxuZW5k
IgorICBlbmQKK2VuZAorCitjbGFzcyBNYWNyb0NhbGwgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpu
YW1lLCA6b3BlcmFuZHMKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIG9w
ZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQG9w
ZXJhbmRzID0gb3BlcmFuZHMKKyAgICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAgQG9wZXJh
bmRzLmVhY2h7fHZ8IHJhaXNlIHVubGVzcyB2fQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgor
ICAgIEBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBN
YWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdCN7bmFtZX0oIiArIG9wZXJhbmRzLmNvbGxlY3R7
fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpIgorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDgwIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CityZXF1aXJlICJhc3QiCityZXF1aXJlICJ4ODYiCisKK0JBQ0tFTkRTID0KKyAgWworICAgIlg4
NiIsCisgICAiQVJNdjciCisgIF0KKworV09SS0lOR19CQUNLRU5EUyA9CisgIFsKKyAgICJYODYi
CisgIF0KKworQkFDS0VORF9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCcgKyBCQUNLRU5EUy5q
b2luKCcpfCgnKSArICcpXFxaJykKKworY2xhc3MgTm9kZQorICBkZWYgbG93ZXIobmFtZSkKKyAg
ICBzZW5kKCJsb3dlciIgKyBuYW1lKQorICBlbmQKK2VuZAorCisjIE92ZXJyaWRlcyBmb3IgbG93
ZXIoKSBmb3IgdGhvc2Ugbm9kZXMgdGhhdCBhcmUgYmFja2VuZC1hZ25vc3RpYworCitkZWYgc2Fu
aXRpemVMYWJlbE5hbWUobmFtZSkKKyAgIyBTb21lIHBsYXRmb3JtcyBkb24ndCB3YW50IHRoZSBs
ZWFkaW5nICJfIi4gSWYgd2UgZXZlciB3YW50IHRvIGRvIHNvbWV0aGluZworICAjIGFib3V0IHRo
YXQsIGl0IHdvdWxkIGJlIGhlcmUuCisgIG5hbWUKK2VuZAorCitjbGFzcyBMYWJlbAorICBkZWYg
bG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHMgIi5nbG9ibCAje3Nhbml0aXplTGFiZWxOYW1lKHNl
bGYubmFtZSl9IgorICAgICRhc20ucHV0cyAiI3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxmLm5hbWUp
fToiCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisg
ICAgJGFzbS5wdXRzICJfX29hXyN7c2VsZi5uYW1lWzEuLi0xXX06IgorICBlbmQKK2VuZAorCitj
bGFzcyBTa2lwCisgIGRlZiBsb3dlcihuYW1lKQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5j
ZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8Cisg
ICAgICBub2RlLmxvd2VyKG5hbWUpCisgICAgfQorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29m
ZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDY1IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWly
ZSAiYmFja2VuZHMiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWly
ZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2RlZiBlbWl0TWFnaWNOdW1iZXIK
KyAgT0ZGU0VUX01BR0lDX05VTUJFUlMuZWFjaCB7CisgICAgfCBudW1iZXIgfAorICAgIHB1dHMg
IiN7bnVtYmVyfSwiCisgIH0KK2VuZAorCitvcmlnaW5hbEFTVCA9IHBhcnNlKGxleCgkc3RkaW4u
cmVhZCkpCisKK2VtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhvcmlnaW5hbEFTVCkgeworICB8
IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAgb2Zmc2V0c0xpc3QgPSBhc3QuZmls
dGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CisgIHNpemVzTGlzdCA9IGFzdC5maWx0ZXIoU2l6
ZW9mKS51bmlxLnNvcnQKKyAgCisgIGxlbmd0aCA9IChPRkZTRVRfTUFHSUNfTlVNQkVSUy5zaXpl
ICsgMSkgKiAoMSArIG9mZnNldHNMaXN0LnNpemUgKyBzaXplc0xpc3Quc2l6ZSkKKyAgCisgIHB1
dHMgInN0YXRpYyBjb25zdCB1bnNpZ25lZCBleHRyYWN0b3JUYWJsZVsje2xlbmd0aH1dID0geyIK
KyAgZW1pdE1hZ2ljTnVtYmVyCisgIHB1dHMgIiN7aW5kZXh9LCIKKyAgb2Zmc2V0c0xpc3QuZWFj
aCB7CisgICAgfCBvZmZzZXQgfAorICAgIGVtaXRNYWdpY051bWJlcgorICAgIHB1dHMgIk9GRkxJ
TkVfQVNNX09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSksIgorICB9
CisgIHNpemVzTGlzdC5lYWNoIHsKKyAgICB8IG9mZnNldCB8CisgICAgZW1pdE1hZ2ljTnVtYmVy
CisgICAgcHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0cnVjdH0pLCIKKyAgfQorICBwdXRzICJ9OyIK
K30KKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25z
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3Ry
dWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxODggQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01BQ1JPX0lOU1RSVUNUSU9OUyA9Cisg
IFsKKyAgICJhZGRpIiwKKyAgICJhbmRpIiwKKyAgICJsc2hpZnRpIiwKKyAgICJtdWxpIiwKKyAg
ICJuZWdpIiwKKyAgICJub3RpIiwKKyAgICJvcmkiLAorICAgInJzaGlmdGkiLAorICAgInVyc2hp
ZnRpIiwKKyAgICJzdWJpIiwKKyAgICJ4b3JpIiwKKyAgICJsb2FkaSIsCisgICAibG9hZGIiLAor
ICAgImxvYWRoIiwKKyAgICJzdG9yZWkiLAorICAgInN0b3JlYiIsCisgICAibG9hZGQiLAorICAg
Im1vdmVkIiwKKyAgICJzdG9yZWQiLAorICAgImFkZGQiLAorICAgImRpdmQiLAorICAgInN1YmQi
LAorICAgIm11bGQiLAorICAgInNxcnRkIiwKKyAgICJjaTJkIiwKKyAgICJmaWkyZCIsICMgdXNh
Z2U6IGZpaTJkIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1v
c3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxmcHI+CisgICAiZmQyaWkiLCAjIHVzYWdlOiBmZDJpaSA8
ZnByPiwgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBz
aWduaWZpY2FudCBiaXRzPgorICAgImJkZXEiLAorICAgImJkbmVxIiwKKyAgICJiZGd0IiwKKyAg
ICJiZGd0ZXEiLAorICAgImJkbHQiLAorICAgImJkbHRlcSIsCisgICAiYmRlcXVuIiwKKyAgICJi
ZG5lcXVuIiwKKyAgICJiZGd0dW4iLAorICAgImJkZ3RlcXVuIiwKKyAgICJiZGx0dW4iLAorICAg
ImJkbHRlcXVuIiwKKyAgICJidGQyaSIsCisgICAidGQyaSIsCisgICAiYmNkMmkiLAorICAgIm1v
dmR6IiwKKyAgICJwb3AiLAorICAgInB1c2giLAorICAgIm1vdmUiLAorICAgInN4aTJwIiwKKyAg
ICJ6eGkycCIsCisgICAibm9wIiwKKyAgICJiaWVxIiwKKyAgICJiaW5lcSIsCisgICAiYmlhIiwK
KyAgICJiaWFlcSIsCisgICAiYmliIiwKKyAgICJiaWJlcSIsCisgICAiYmlndCIsCisgICAiYmln
dGVxIiwKKyAgICJiaWx0IiwKKyAgICJiaWx0ZXEiLAorICAgImJiZXEiLAorICAgImJibmVxIiwK
KyAgICJiYmEiLAorICAgImJiYWVxIiwKKyAgICJiYmIiLAorICAgImJiYmVxIiwKKyAgICJiYmd0
IiwKKyAgICJiYmd0ZXEiLAorICAgImJibHQiLAorICAgImJibHRlcSIsCisgICAiYnRpbyIsCisg
ICAiYnRpcyIsCisgICAiYnRpeiIsCisgICAiYnRpbnoiLAorICAgImJ0Ym8iLAorICAgImJ0YnMi
LAorICAgImJ0YnoiLAorICAgImJ0Ym56IiwKKyAgICJqbXAiLAorICAgImJhZGRpbyIsCisgICAi
YmFkZGlzIiwKKyAgICJiYWRkaXoiLAorICAgImJhZGRpbnoiLAorICAgImJzdWJpbyIsCisgICAi
YnN1YmlzIiwKKyAgICJic3ViaXoiLAorICAgImJzdWJpbnoiLAorICAgImJtdWxpbyIsCisgICAi
Ym11bGlzIiwKKyAgICJibXVsaXoiLAorICAgImJtdWxpbnoiLAorICAgImJvcmlvIiwKKyAgICJi
b3JpcyIsCisgICAiYm9yaXoiLAorICAgImJvcmlueiIsCisgICAiYnJlYWsiLAorICAgImNhbGwi
LAorICAgInJldCIsCisgICAiY2llcSIsCisgICAiY2luZXEiLAorICAgImNpYSIsCisgICAiY2lh
ZXEiLAorICAgImNpYiIsCisgICAiY2liZXEiLAorICAgImNpZ3QiLAorICAgImNpZ3RlcSIsCisg
ICAiY2lsdCIsCisgICAiY2lsdGVxIiwKKyAgICJ0aW8iLAorICAgInRpcyIsCisgICAidGl6IiwK
KyAgICJ0aW56IiwKKyAgICJ0Ym8iLAorICAgInRicyIsCisgICAidGJ6IiwKKyAgICJ0Ym56IiwK
KyAgICJwZWVrIiwKKyAgICJwb2tlIiwKKyAgICJicGVxIiwKKyAgICJicG5lcSIsCisgICAiYnBh
IiwKKyAgICJicGFlcSIsCisgICAiYnBiIiwKKyAgICJicGJlcSIsCisgICAiYnBndCIsCisgICAi
YnBndGVxIiwKKyAgICJicGx0IiwKKyAgICJicGx0ZXEiLAorICAgImFkZHAiLAorICAgImFuZHAi
LAorICAgIm9ycCIsCisgICAic3VicCIsCisgICAieG9ycCIsCisgICAibG9hZHAiLAorICAgImNw
ZXEiLAorICAgImNwbmVxIiwKKyAgICJjcGEiLAorICAgImNwYWVxIiwKKyAgICJjcGIiLAorICAg
ImNwYmVxIiwKKyAgICJjcGd0IiwKKyAgICJjcGd0ZXEiLAorICAgImNwbHQiLAorICAgImNwbHRl
cSIsCisgICAic3RvcmVwIiwKKyAgICJidHBvIiwKKyAgICJidHBzIiwKKyAgICJidHB6IiwKKyAg
ICJidHBueiIsCisgICAiYmFkZHBvIiwKKyAgICJiYWRkcHMiLAorICAgImJhZGRweiIsCisgICAi
YmFkZHBueiIKKyAgXQorCitYODZfSU5TVFJVQ1RJT05TID0KKyAgWworICAgImNkcWkiLAorICAg
ImlkaXZpIgorICBdCisKK0lOU1RSVUNUSU9OUyA9IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9J
TlNUUlVDVElPTlMKKworSU5TVFJVQ1RJT05fUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyAr
IElOU1RSVUNUSU9OUy5qb2luKCcpfCgnKSArICcpKVxcWicpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9y
X2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitNQUdJQ19O
VU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE1NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVx
dWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMiCisKK09GRlNF
VF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgb2Zmc2V0c0xpc3QoYXN0KSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBzaXplc0xpc3QoYXN0
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgUmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgc2l6ZXMg
dXNlZCBieSB0aGUgQVNULiAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKworZGVmIG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTdHJ1Y3RP
ZmZzZXQpLnVuaXEuc29ydAorZW5kCisKK2RlZiBzaXplc0xpc3QoYXN0KQorICBhc3QuZmlsdGVy
KFNpemVvZikudW5pcS5zb3J0CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChhc3QsIGZpbGUpIC0+ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyAgICAgW29mZnNldHMsIGluZGV4XSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
UGFyc2VzIHRoZSBvZmZzZXRzIGZyb20gYSBmaWxlIGFuZCByZXR1cm5zIGEgbGlzdCBvZiBvZmZz
ZXRzIGFuZCB0aGUgIworIyBpbmRleCBvZiB0aGUgY29uZmlndXJhdGlvbiB0aGF0IGlzIHZhbGlk
IGluIHRoaXMgYnVpbGQgdGFyZ2V0LiAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworCitkZWYgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChmaWxlKQorICBpbmRl
eCA9IG5pbAorICBvZmZzZXRzID0gW10KKyAgZW5kaWFubmVzc01hcmtlckJ5dGVzID0gbmlsCisg
IAorICBkZWYgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgYnl0ZXMgPSBbXQorICAgIDQu
dGltZXMgeworICAgICAgYnl0ZXMgPDwgaW5wLmdldGJ5dGUKKyAgICB9CisgICAgCisgICAgaWYg
ZW5kaWFubmVzcyA9PSA6bGl0dGxlCisgICAgICAjIExpdHRsZSBlbmRpYW4KKyAgICAgIChieXRl
c1swXSA8PCAwIHwKKyAgICAgICBieXRlc1sxXSA8PCA4IHwKKyAgICAgICBieXRlc1syXSA8PCAx
NiB8CisgICAgICAgYnl0ZXNbM10gPDwgMjQpCisgICAgZWxzZQorICAgICAgIyBCaWcgZW5kaWFu
CisgICAgICAoYnl0ZXNbMF0gPDwgMjQgfAorICAgICAgIGJ5dGVzWzFdIDw8IDE2IHwKKyAgICAg
ICBieXRlc1syXSA8PCA4IHwKKyAgICAgICBieXRlc1szXSA8PCAwKQorICAgIGVuZAorICBlbmQK
KyAgCisgIFs6bGl0dGxlLCA6YmlnXS5lYWNoIHsKKyAgICB8IGVuZGlhbm5lc3MgfAorICAgIG1h
Z2ljQnl0ZXMgPSBbXQorICAgIE1BR0lDX05VTUJFUlMuZWFjaCB7CisgICAgICB8IG51bWJlciB8
CisgICAgICBjdXJyZW50Qnl0ZXMgPSBbXQorICAgICAgNC50aW1lcyB7CisgICAgICAgIGN1cnJl
bnRCeXRlcyA8PCAobnVtYmVyICYgMHhmZikKKyAgICAgICAgbnVtYmVyID4+PSA4CisgICAgICB9
CisgICAgICBpZiBlbmRpYW5uZXNzID09IDpiaWcKKyAgICAgICAgY3VycmVudEJ5dGVzLnJldmVy
c2UhCisgICAgICBlbmQKKyAgICAgIG1hZ2ljQnl0ZXMgKz0gY3VycmVudEJ5dGVzCisgICAgfQor
ICAgIAorICAgIEZpbGUub3BlbihmaWxlLCAiciIpIHsKKyAgICAgIHwgaW5wIHwKKyAgICAgIHdo
ZXJlSW5NYXJrZXIgPSAwCisgICAgICBsb29wIHsKKyAgICAgICAgYnl0ZSA9IGlucC5nZXRieXRl
CisgICAgICAgIGJyZWFrIHVubGVzcyBieXRlCisgICAgICAgIGlmIGJ5dGUgPT0gbWFnaWNCeXRl
c1t3aGVyZUluTWFya2VyXQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIgKz0gMQorICAgICAgICAg
IGlmIHdoZXJlSW5NYXJrZXIgPT0gbWFnaWNCeXRlcy5zaXplCisgICAgICAgICAgICAjIFdlIGhh
dmUgYSBtYXRjaCEgSWYgd2UgaGF2ZSBub3QgeWV0IHJlYWQgdGhlIGVuZGlhbm5lc3MgbWFya2Vy
IGFuZCBpbmRleCwKKyAgICAgICAgICAgICMgdGhlbiByZWFkIHRob3NlIG5vdzsgb3RoZXJ3aXNl
IHJlYWQgYW4gb2Zmc2V0LgorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiBub3QgaW5kZXgK
KyAgICAgICAgICAgICAgaW5kZXggPSByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgb2Zmc2V0cyA8PCByZWFkSW50KGVuZGlhbm5lc3MsIGlu
cCkKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgCisgICAgICAgICAgICB3aGVyZUluTWFy
a2VyID0gMAorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgd2hlcmVJbk1h
cmtlciA9IDAKKyAgICAgICAgZW5kCisgICAgICB9CisgICAgfQorICAgIAorICAgIGJyZWFrIGlm
IGluZGV4CisgIH0KKyAgCisgIHJhaXNlIHVubGVzcyBpbmRleAorICAKKyAgW29mZnNldHMsIGlu
ZGV4XQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGJ1aWxkT2Zm
c2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAtPiBbb2Zmc2V0cywgc2l6ZXNdICAgICAgICAgICAg
ICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyBCdWlsZHMgYSBtYXBwaW5nIGJldHdlZW4gU3RydWN0
T2Zmc2V0IG5vZGVzIGFuZCB0aGVpciB2YWx1ZXMuICAgICAgICAjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworCitkZWYgYnVpbGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3Qp
CisgIG9mZnNldHNNYXAgPSB7fQorICBzaXplc01hcCA9IHt9CisgIGFzdE9mZnNldHNMaXN0ID0g
b2Zmc2V0c0xpc3QoYXN0KQorICBhc3RTaXplc0xpc3QgPSBzaXplc0xpc3QoYXN0KQorICByYWlz
ZSB1bmxlc3MgYXN0T2Zmc2V0c0xpc3Quc2l6ZSArIGFzdFNpemVzTGlzdC5zaXplID09IG9mZnNl
dHNMaXN0LnNpemUKKyAgb2Zmc2V0c0xpc3QoYXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAgIHwg
c3RydWN0T2Zmc2V0LCBpbmRleCB8CisgICAgb2Zmc2V0c01hcFtzdHJ1Y3RPZmZzZXRdID0gb2Zm
c2V0c0xpc3Quc2hpZnQKKyAgfQorICBzaXplc0xpc3QoYXN0KS5lYWNoX3dpdGhfaW5kZXggewor
ICAgIHwgc2l6ZW9mLCBpbmRleCB8CisgICAgc2l6ZXNNYXBbc2l6ZW9mXSA9IG9mZnNldHNMaXN0
LnNoaWZ0CisgIH0KKyAgW29mZnNldHNNYXAsIHNpemVzTWFwXQorZW5kCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTkxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCity
ZXF1aXJlICJhc3QiCityZXF1aXJlICJpbnN0cnVjdGlvbnMiCityZXF1aXJlICJyZWdpc3RlcnMi
CisKK2NsYXNzIFRva2VuCisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luLCA6c3RyaW5nCisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJpbmcpCisgICAgQGNvZGVPcmlnaW4gPSBj
b2RlT3JpZ2luCisgICAgQHN0cmluZyA9IHN0cmluZworICBlbmQKKyAgCisgIGRlZiA9PShvdGhl
cikKKyAgICBpZiBvdGhlci5pc19hPyBUb2tlbgorICAgICAgQHN0cmluZyA9PSBvdGhlci5zdHJp
bmcKKyAgICBlbHNlCisgICAgICBAc3RyaW5nID09IG90aGVyCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmID1+KG90aGVyKQorICAgIEBzdHJpbmcgPX4gb3RoZXIKKyAgZW5kCisgIAorICBkZWYg
dG9fcworICAgICIje0BzdHJpbmcuaW5zcGVjdH0gYXQgbGluZSAje2NvZGVPcmlnaW59IgorICBl
bmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIGNvbW1lbnQuZW1wdHk/
CisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc30iCisgICAgZWxzZQorICAgICAgcmFp
c2UgIlBhcnNlIGVycm9yOiAje3RvX3N9OiAje2NvbW1lbnRbMF19IgorICAgIGVuZAorICBlbmQK
K2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgbGV4ZXIuIFRh
a2VzIGEgc3RyaW5nIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRva2Vucy4gICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgbGV4KHN0cikKKyAgcmVz
dWx0ID0gW10KKyAgbGluZU51bWJlciA9IDEKKyAgd2hpbGUgbm90IHN0ci5lbXB0eT8KKyAgICBj
YXNlIHN0cgorICAgIHdoZW4gL1xBXCMoW15cbl0qKS8KKyAgICAgICMgY29tbWVudCwgaWdub3Jl
CisgICAgd2hlbiAvXEFcbi8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwg
JCYpCisgICAgICBsaW5lTnVtYmVyICs9IDEKKyAgICB3aGVuIC9cQVthLXpBLVpdKFthLXpBLVow
LTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3
aGVuIC9cQVwuKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5l
TnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQV8oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQg
PDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBKFsgXHRdKykvCisgICAg
ICAjIHdoaXRlc3BhY2UsIGlnbm9yZQorICAgIHdoZW4gL1xBMHgoWzAtOWEtZkEtRl0rKS8KKyAg
ICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYuaGV4LnRvX3MpCisgICAgd2hl
biAvXEEwKFswLTddKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQm
Lm9jdC50b19zKQorICAgIHdoZW4gL1xBKFswLTldKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4u
bmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBOjovCisgICAgICByZXN1bHQgPDwgVG9r
ZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBWzosXChcKVxbXF09XCtcLSpdLwor
ICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICBlbHNlCisgICAg
ICByYWlzZSAiTGV4ZXIgZXJyb3IgYXQgbGluZSBudW1iZXIgI3tsaW5lTnVtYmVyfSwgdW5leHBl
Y3RlZCBzZXF1ZW5jZSAje3N0clswLi4yMF0uaW5zcGVjdH0iCisgICAgZW5kCisgICAgc3RyID0g
JH4ucG9zdF9tYXRjaAorICBlbmQKKyAgcmVzdWx0CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgVG9rZW4gaWRlbnRpZmljYXRpb24uICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKworZGVmIGlzUmVnaXN0ZXIodG9rZW4pCisgIHRva2VuID1+IFJFR0lTVEVSX1BB
VFRFUk4KK2VuZAorCitkZWYgaXNJbnN0cnVjdGlvbih0b2tlbikKKyAgdG9rZW4gPX4gSU5TVFJV
Q1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0tleXdvcmQodG9rZW4pCisgIHRva2VuID1+IC9c
QSgodHJ1ZSl8KGZhbHNlKXwoaWYpfCh0aGVuKXwoZWxzZSl8KGVsc2lmKXwoZW5kKXwoYW5kKXwo
b3IpfChub3QpfChtYWNybyl8KGNvbnN0KXwoc2l6ZW9mKXwoZXJyb3IpKVxaLyBvcgorICAgIHRv
a2VuID1+IFJFR0lTVEVSX1BBVFRFUk4gb3IKKyAgICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRU
RVJOCitlbmQKKworZGVmIGlzSWRlbnRpZmllcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBW2EtekEt
Wl0oW2EtekEtWjAtOV9dKilcWi8gYW5kIG5vdCBpc0tleXdvcmQodG9rZW4pCitlbmQKKworZGVm
IGlzTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQV8oW2EtekEtWjAtOV9dKilcWi8KK2VuZAor
CitkZWYgaXNMb2NhbExhYmVsKHRva2VuKQorICB0b2tlbiA9fiAvXEFcLihbYS16QS1aMC05X10q
KVxaLworZW5kCisKK2RlZiBpc1ZhcmlhYmxlKHRva2VuKQorICBpc0lkZW50aWZpZXIodG9rZW4p
IG9yIGlzUmVnaXN0ZXIodG9rZW4pCitlbmQKKworZGVmIGlzSW50ZWdlcih0b2tlbikKKyAgdG9r
ZW4gPX4gL1xBWzAtOV0vCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgVGhlIHBhcnNlci4gVGFrZXMgYW4gYXJyYXkgb2YgdG9rZW5zIGFuZCByZXR1cm5zIGFuIEFT
VC4gTWV0aG9kcyAgICAgIworIyBvdGhlciB0aGFuIHBhcnNlKHRva2VucykgYXJlIG5vdCBmb3Ig
cHVibGljIGNvbnN1bXB0aW9uLiAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworCitjbGFzcyBQYXJzZXIKKyAgZGVmIGluaXRpYWxpemUodG9rZW5zKQorICAg
IEB0b2tlbnMgPSB0b2tlbnMKKyAgICBAaWR4ID0gMAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVy
cm9yKCpjb21tZW50KQorICAgIGlmIEB0b2tlbnNbQGlkeF0KKyAgICAgIEB0b2tlbnNbQGlkeF0u
cGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBlbHNlCisgICAgICBpZiBjb21tZW50LmVtcHR5Pwor
ICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZpbGUiCisgICAgICBlbHNlCisg
ICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZTogI3tjb21tZW50WzBdfSIK
KyAgICAgIGVuZAorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBjb25zdW1lKHJlZ2V4cCkKKyAg
ICBpZiByZWdleHAKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPX4gcmVn
ZXhwCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQGlkeCA9PSBAdG9rZW5zLmxl
bmd0aAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICBlbmQKKyAgCisgIGRlZiBza2lwTmV3TGlu
ZQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgQGlkeCArPSAxCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQXRvbQorICAgIGlmIEB0b2tlbnNb
QGlkeF0gPT0gIm5vdCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcGFyc2VQcmVkaWNhdGVBdG9t
CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAgICAg
c2tpcE5ld0xpbmUKKyAgICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlCisgICAgICBwYXJzZUVy
cm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgQGlkeCArPSAxCisgICAgICBy
ZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJ0cnVlIgorICAgICAgcmVzdWx0ID0g
VHJ1ZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICJmYWxzZSIKKyAgICAgIHJlc3VsdCA9IEZhbHNlLmluc3RhbmNlCisg
ICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9r
ZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBTZXR0aW5nLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIEBpZHggKz0gMQorICAgICAg
cmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBwYXJzZVByZWRpY2F0ZUFuZAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlQXRvbQor
ICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImFuZCIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUK
KyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgICByZXN1bHQgPSBBbmQubmV3
KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAor
ICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlCisgICAgIyBzb21lIGV4YW1wbGVzIG9mIHByZWNlZGVu
Y2U6CisgICAgIyBub3QgYSBhbmQgYiAtPiAobm90IGEpIGFuZCBiCisgICAgIyBhIGFuZCBiIG9y
IGMgLT4gKGEgYW5kIGIpIG9yIGMKKyAgICAjIGEgb3IgYiBhbmQgYyAtPiBhIG9yIChiIGFuZCBj
KQorICAgIAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgd2hpbGUgQHRva2Vu
c1tAaWR4XSA9PSAib3IiCisgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9IHBh
cnNlUHJlZGljYXRlQW5kCisgICAgICByZXN1bHQgPSBPci5uZXcoY29kZU9yaWdpbiwgcmVzdWx0
LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VWYXJp
YWJsZQorICAgIGlmIGlzUmVnaXN0ZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgIGlmIEB0b2tlbnNb
QGlkeF0gPX4gRlBSX1BBVFRFUk4KKyAgICAgICAgcmVzdWx0ID0gRlBSZWdpc3RlcklELmZvck5h
bWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAg
IGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBlbmQKKyAgICBlbHNpZiBp
c0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgIHJlc3VsdCA9IFZhcmlhYmxlLmZvck5h
bWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICBl
bHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0
CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQWRkcmVzcyhvZmZzZXQpCisgICAgcGFyc2VFcnJvciB1
bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luCisgICAgCisgICAgIyBUaHJlZSBwb3NzaWJpbGl0aWVzOgorICAgICMgW10g
ICAgICAgLT4gQWJzb2x1dGVBZGRyZXNzCisgICAgIyBbYV0gICAgICAtPiBBZGRyZXNzCisgICAg
IyBbYSxiXSAgICAtPiBCYXNlSW5kZXggd2l0aCBzY2FsZSA9IDEKKyAgICAjIFthLGIsY10gIC0+
IEJhc2VJbmRleAorICAgIAorICAgIEBpZHggKz0gMQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0g
Il0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJldHVybiBBYnNvbHV0ZUFkZHJlc3MubmV3KGNv
ZGVPcmlnaW4sIG9mZnNldCkKKyAgICBlbmQKKyAgICBhID0gcGFyc2VWYXJpYWJsZQorICAgIGlm
IEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICByZXN1bHQgPSBBZGRyZXNzLm5ldyhjb2RlT3Jp
Z2luLCBhLCBvZmZzZXQpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vu
c1tAaWR4XSA9PSAiLCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgYiA9IHBhcnNlVmFyaWFibGUK
KyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAgIHJlc3VsdCA9IEJhc2VJbmRl
eC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgMSwgb2Zmc2V0KQorICAgICAgZWxzZQorICAgICAgICBw
YXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgWyIxIiwgIjIiLCAiNCIsICI4Il0ubWVtYmVyPyBA
dG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBjID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9f
aQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tA
aWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBh
LCBiLCBjLCBvZmZzZXQpCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICBy
ZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VDb2xvbkNvbG9uCisgICAgc2tpcE5ld0xpbmUK
KyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgcGFyc2VFcnJv
ciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICBuYW1lcyA9IFtAdG9rZW5z
W0BpZHhdLnN0cmluZ10KKyAgICBAaWR4ICs9IDEKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09
ICI6OiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlm
aWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIG5hbWVzIDw8IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisg
ICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgICByYWlzZSBpZiBuYW1lcy5lbXB0eT8KKyAgICBb
Y29kZU9yaWdpbiwgbmFtZXNdCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbkF0b20K
KyAgICBza2lwTmV3TGluZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIE5lZ0ltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdp
biwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgor
ICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIHBh
cnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSW50ZWdlciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1
bHQgPSBJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4
XS5zdHJpbmcudG9faSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYg
aXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0gcGFy
c2VDb2xvbkNvbG9uCisgICAgICBpZiBuYW1lcy5zaXplID4gMQorICAgICAgICBTdHJ1Y3RPZmZz
ZXQuZm9yRmllbGQoY29kZU9yaWdpbiwgbmFtZXNbMC4uLTJdLmpvaW4oJzo6JyksIG5hbWVzWy0x
XSkKKyAgICAgIGVsc2UKKyAgICAgICAgVmFyaWFibGUuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1l
c1swXSkKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzUmVnaXN0ZXIgQHRva2Vuc1tAaWR4XQorICAg
ICAgcGFyc2VWYXJpYWJsZQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIKKyAg
ICAgIEBpZHggKz0gMQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24K
KyAgICAgIFNpemVvZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzLmpvaW4oJzo6JykpCisgICAg
ZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4
cHJlc3Npb25NdWwKKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lv
bkF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgaWYgQHRva2Vuc1tA
aWR4XSA9PSAiKiIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IE11bEltbWVk
aWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHBy
ZXNzaW9uQXRvbSkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVu
ZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgIEB0
b2tlbnNbQGlkeF0gPT0gIi0iIG9yIEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIgb3IgaXNJbnRl
Z2VyKEB0b2tlbnNbQGlkeF0pIG9yIGlzVmFyaWFibGUoQHRva2Vuc1tAaWR4XSkKKyAgZW5kCisg
IAorICBkZWYgcGFyc2VFeHByZXNzaW9uCisgICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBw
YXJzZUV4cHJlc3Npb25NdWwKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIrIiBvciBAdG9r
ZW5zW0BpZHhdID09ICItIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKyIKKyAgICAgICAg
QGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IEFkZEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlk
eCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxz
aWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3Vs
dCA9IFN1YkltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3Vs
dCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAg
ZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlT3BlcmFuZChj
b21tZW50KQorICAgIGlmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgICBleHByID0gcGFyc2VFeHBy
ZXNzaW9uCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAgICBwYXJzZUFkZHJl
c3MoZXhwcikKKyAgICAgIGVsc2UKKyAgICAgICAgZXhwcgorICAgICAgZW5kCisgICAgZWxzaWYg
QHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgIHBhcnNlQWRkcmVzcyhJbW1lZGlhdGUubmV3KEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgMCkpCisgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0Bp
ZHhdCisgICAgICByZXN1bHQgPSBMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luLCBMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tA
aWR4XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBp
c0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJlZmVy
ZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMb2NhbExhYmVsLmZvck5hbWUoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IoY29tbWVudCkK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgIHNraXBO
ZXdMaW5lCisgICAgY29uc3VtZSgvXEFcKFxaLykKKyAgICB2YXJpYWJsZXMgPSBbXQorICAgIGxv
b3AgeworICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgaXNJZGVudGlmaWVy
KEB0b2tlbnNbQGlkeF0pCisgICAgICAgIHZhcmlhYmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1lKEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICIpIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lm
IEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UK
KyAgICAgICAgICBwYXJzZUVycm9yCisgICAgICAgIGVuZAorICAgICAgZWxzZQorICAgICAgICBw
YXJzZUVycm9yCisgICAgICBlbmQKKyAgICB9CisgICAgdmFyaWFibGVzCisgIGVuZAorICAKKyAg
ZGVmIHBhcnNlU2VxdWVuY2UoZmluYWwsIGNvbW1lbnQpCisgICAgZmlyc3RDb2RlT3JpZ2luID0g
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgbGlzdCA9IFtdCisgICAgbG9vcCB7CisgICAg
ICBpZiAoQGlkeCA9PSBAdG9rZW5zLmxlbmd0aCBhbmQgbm90IGZpbmFsKSBvciAoZmluYWwgYW5k
IEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBAdG9r
ZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgIyBpZ25vcmUKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJjb25zdCIKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzVmFyaWFibGUgQHRva2Vuc1tAaWR4XQorICAgICAg
ICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBA
dG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJy
b3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIj0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICB2YWx1ZSA9IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGNvbnN0ICN7dmFyaWFibGUu
bmFtZX0iKQorICAgICAgICBsaXN0IDw8IENvbnN0RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJl
cnJvciIKKyAgICAgICAgbGlzdCA8PCBFcnJvci5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
KQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImlmIgor
ICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVBy
ZWRpY2F0ZQorICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgIHNr
aXBOZXdMaW5lCisgICAgICAgIGlmVGhlbkVsc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2lu
LCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywg
IndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgbGlz
dCA8PCBpZlRoZW5FbHNlCisgICAgICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImVsc2lmIgor
ICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIHByZWRpY2F0ZSA9
IHBhcnNlUHJlZGljYXRlCisgICAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQor
ICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgZWxzZUNhc2UgPSBJZlRoZW5FbHNlLm5l
dyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwo
ZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkK
KyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNhc2UKKyAgICAgICAgICBpZlRo
ZW5FbHNlID0gZWxzZUNhc2UKKyAgICAgICAgZW5kCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gImVsc2UiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNl
Q2FzZSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGVsc2UgY2Fz
ZSBmb3IgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikKKyAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0g
ImVuZCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBAdG9r
ZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAg
ICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAg
IG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
dmFyaWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICBib2R5ID0gcGFyc2VTZXF1
ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gI3tuYW1lfSIpCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBsaXN0IDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCB2
YXJpYWJsZXMsIGJvZHkpCisgICAgICBlbHNpZiBpc0luc3RydWN0aW9uIEB0b2tlbnNbQGlkeF0K
KyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBu
YW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlm
IChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tl
bnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24s
IGFuZCBpdCdzIHRoZSBsYXN0IG9uZS4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBicmVhaworICAgICAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlv
bi4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBb
XSkKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgICMgSXQncyBk
ZWZpbml0ZWx5IGFuIGluc3RydWN0aW9uLCBhbmQgaXQgaGFzIGF0IGxlYXN0IG9uZSBvcGVyYW5k
LgorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gZmFs
c2UKKyAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFu
ZCgid2hpbGUgaW5zaWRlIG9mIGluc3RydWN0aW9uICN7bmFtZX0iKQorICAgICAgICAgICAgaWYg
KG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vu
c1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVj
dGlvbiBhbmQgb2YgdGhlIHNlcXVlbmNlLgorICAgICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0g
dHJ1ZQorICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4
XSA9PSAiLCIKKyAgICAgICAgICAgICAgIyBIYXMgYW5vdGhlciBvcGVyYW5kLgorICAgICAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgor
ICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uLgorICAgICAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQgYSBjb21tYSwgbmV3bGluZSwgb3IgI3tmaW5h
bH0gYWZ0ZXIgI3tvcGVyYW5kcy5sYXN0LmR1bXB9IikKKyAgICAgICAgICAgIGVuZAorICAgICAg
ICAgIH0KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1l
LCBvcGVyYW5kcykKKyAgICAgICAgICBpZiBlbmRPZlNlcXVlbmNlCisgICAgICAgICAgICBicmVh
aworICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmllciBA
dG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgICAgICMgTWFjcm8gaW52
b2NhdGlvbi4KKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisg
ICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgor
ICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9vcCB7
CisgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlk
eF0gPT0gIm1hY3JvIgorICAgICAgICAgICAgICAgICMgSXQncyBhIG1hY3JvIGxhbWJkYSEKKyAg
ICAgICAgICAgICAgICBjb2RlT3JpZ2luSW5uZXIgPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4K
KyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBw
YXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgICAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2Uo
L1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGFub255bW91cyBtYWNybyBwYXNzZWQgYXMgYXJn
dW1lbnQgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAg
ICAgICAgb3BlcmFuZHMgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJpYWJs
ZXMsIGJvZHkpCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8
PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBtYWNybyBjYWxsIHRvICN7bmFtZX0iKQor
ICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICIsIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgcGFyc2VFcnJvciAiVW5leHBlY3RlZCAje0B0b2tlbnNbQGlkeF0uc3RyaW5n
Lmluc3BlY3R9IHdoaWxlIHBhcnNpbmcgaW52b2NhdGlvbiBvZiBtYWNybyAje25hbWV9IgorICAg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbmQKKyAgICAgICAgICBs
aXN0IDw8IE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAg
IGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9
IgorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XSBvciBpc0xv
Y2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAi
OiIKKyAgICAgICAgIyBJdCdzIGEgbGFiZWwuCisgICAgICAgIGlmIGlzTGFiZWwgbmFtZQorICAg
ICAgICAgIGxpc3QgPDwgTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBl
bHNlCisgICAgICAgICAgbGlzdCA8PCBMb2NhbExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFt
ZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzZQorICAgICAgICBw
YXJzZUVycm9yICJFeHBlY3RpbmcgdGVybWluYWwgI3tmaW5hbH0gI3tjb21tZW50fSIKKyAgICAg
IGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoZmlyc3RDb2RlT3JpZ2luLCBsaXN0KQorICBl
bmQKK2VuZAorCitkZWYgcGFyc2UodG9rZW5zKQorICBwYXJzZXIgPSBQYXJzZXIubmV3KHRva2Vu
cykKKyAgcGFyc2VyLnBhcnNlU2VxdWVuY2UobmlsLCAiIikKK2VuZAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitHUFJTID0KKyAgWworICAgInQwIiwKKyAgICJ0MSIsCisgICAidDIiLAorICAgInQzIiwK
KyAgICJ0NCIsCisgICAiY2ZyIiwKKyAgICJhMCIsCisgICAiYTEiLAorICAgInIwIiwKKyAgICJy
MSIsCisgICAic3AiCisgIF0KKworRlBSUyA9CisgIFsKKyAgICJmdDAiLAorICAgImZ0MSIsCisg
ICAiZnQyIiwKKyAgICJmdDMiLAorICAgImZ0NCIsCisgICAiZnQ1IiwKKyAgICJmYTAiLAorICAg
ImZhMSIsCisgICAiZmEyIiwKKyAgICJmYTMiLAorICAgImZyIgorICBdCisKK1JFR0lTVEVSUyA9
IEdQUlMgKyBGUFJTCisKK0dQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgR1BSUy5q
b2luKCcpfCgnKSArICcpKVxcWicpCitGUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyAr
IEZQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQorCitSRUdJU1RFUl9QQVRURVJOID0gUmVnZXhw
Lm5ldygnXFxBKCgnICsgUkVHSVNURVJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjIxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgInBhcnNl
ciIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgLT4gc2V0dGluZ3NDb21iaWF0
aW9ucyAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbXB1dGVzIGFuIGFycmF5
IG9mIHNldHRpbmdzIG1hcHMsIHdoZXJlIGEgc2V0dGluZ3MgbWFwIGNvbnN0aXR1dGVzICMKKyMg
YSBjb25maWd1cmF0aW9uIGZvciB0aGUgYXNzZW1ibHkgY29kZSBiZWluZyBnZW5lcmF0ZWQuIFRo
ZSBtYXAgICAgICAgIworIyBjb250YWlucyBrZXkgdmFsdWUgcGFpcnMgd2hlcmUga2V5cyBhcmUg
c2V0dGluZ3MgbmFtZXMgKHN0cmluZ3MpIGFuZCAjCisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xlYW5z
ICh0cnVlIGZvciBlbmFibGVkLCBmYWxzZSBmb3IgZGlzYWJsZWQpLiAgICAgICMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlv
bnMoYXN0KQorICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IFtdCisgIAorICBkZWYgc2V0dGluZ3ND
b21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBtYXBTb0ZhciwgcmVtYWluaW5nKQorICAg
IGlmIHJlbWFpbmluZy5lbXB0eT8KKyAgICAgIHNldHRpbmdzQ29tYmluYXRpb25zIDw8IG1hcFNv
RmFyCisgICAgICByZXR1cm4KKyAgICBlbmQKKyAgICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5k
dXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IHRydWUKKyAgICBzZXR0aW5nc0NvbWJpbmF0
b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgICAK
KyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IGZh
bHNlCisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAs
IHJlbWFpbmluZ1sxLi4tMV0pCisgIGVuZAorICAKKyAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRp
bmdzQ29tYmluYXRpb25zLCB7fSwgKGFzdC5maWx0ZXIoU2V0dGluZykudW5pcS5jb2xsZWN0e3x2
fCB2Lm5hbWV9ICsgWyJYODYiLCAiQVJNdjciXSkudW5pcSkKKyAgCisgIHNldHRpbmdzQ29tYmlu
YXRpb25zCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yU2V0
dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8
IC4uLiB9ICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRGV0ZXJtaW5lcyBp
ZiB0aGUgc2V0dGluZ3MgY29tYmluYXRpb24gaXMgdmFsaWQsIGFuZCBpZiBzbywgY2FsbHMgICAg
IworIyB0aGUgYmxvY2sgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91IG5lZWQgdG8gZ2VuZXJhdGUg
Y29kZS4gICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitk
ZWYgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KQorICAjIENoZWNrIHdoaWNoIGFy
Y2hpdGVjdHVyZXMgdGhpcyBjb21iaW5hdG9yIGNsYWltcyB0byBzdXBwb3J0LgorICBudW1DbGFp
bWVkQmFja2VuZHMgPSAwCisgIHNlbGVjdGVkQmFja2VuZCA9IG5pbAorICBCQUNLRU5EUy5lYWNo
IHsKKyAgICB8IGJhY2tlbmQgfAorICAgIGlzU3VwcG9ydGVkID0gY29uY3JldGVTZXR0aW5nc1ti
YWNrZW5kXQorICAgIHJhaXNlIHVubGVzcyBpc1N1cHBvcnRlZCAhPSBuaWwKKyAgICBudW1DbGFp
bWVkQmFja2VuZHMgKz0gaWYgaXNTdXBwb3J0ZWQgdGhlbiAxIGVsc2UgMCBlbmQKKyAgICBpZiBp
c1N1cHBvcnRlZAorICAgICAgc2VsZWN0ZWRCYWNrZW5kID0gYmFja2VuZAorICAgIGVuZAorICB9
CisgIAorICByZXR1cm4gaWYgbnVtQ2xhaW1lZEJhY2tlbmRzID4gMQorICAKKyAgIyBSZXNvbHZl
IHRoZSBBU1QgZG93biB0byBhIGxvdy1sZXZlbCBmb3JtIChubyBtYWNyb3Mgb3IgY29uZGl0aW9u
YWxzKS4KKyAgbG93TGV2ZWxBU1QgPSBhc3QucmVzb2x2ZVNldHRpbmdzKGNvbmNyZXRlU2V0dGlu
Z3MpCisgIAorICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgc2VsZWN0ZWRC
YWNrZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yRWFj
aFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwg
Li4uIH0gICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yRWFjaFZhbGlk
U2V0dGluZ3NDb21iaW5hdGlvbihhc3QsIHNldHRpbmdzQ29tYmluYXRpb25zKSB7ICAgICAgICAg
IworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0g
ICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRXhlY3V0ZXMgdGhlIGdpdmVu
IGJsb2NrIGZvciBlYWNoIHZhbGlkIHNldHRpbmdzIGNvbWJpbmF0aW9uIGluIHRoZSAgIworIyBz
ZXR0aW5ncyBtYXAuIFRoZSBhc3QgcGFzc2VkIGludG8gdGhlIGJsb2NrIGlzIHJlc29sdmVkICAg
ICAgICAgICAgICAjCisjIChhc3QucmVzb2x2ZSkgYWdhaW5zdCB0aGUgc2V0dGluZ3MuICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgZmly
c3QgZm9ybSB3aWxsIGNhbGwgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgZm9yIHlv
dS4gICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZm9yRWFjaFZh
bGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QsICpvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25z
KQorICByYWlzZSBpZiBvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zLnNpemUgPiAxCisgIAor
ICBpZiBvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zLmVtcHR5PworICAgIHNldHRpbmdzQ29t
YmluYXRpb25zID0gY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgZWxzZQorICAg
IHNldHRpbmdzQ29tYmluYXRpb25zID0gb3B0aW9uYWxTZXR0aW5nc0NvbWJpYXRpb25zWzBdCisg
IGVuZAorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8
IGNvbmNyZXRlU2V0dGluZ3MsIGluZGV4IHwKKyAgICBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRp
bmdzLCBhc3QpIHsKKyAgICAgIHwgY29uY3JldGVTZXR0aW5nc18sIGxvd0xldmVsQVNULCBiYWNr
ZW5kIHwKKyAgICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5k
LCBpbmRleAorICAgIH0KKyAgfQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBSZXR1cm5zIHRoZSBDKysg
Y29kZSB1c2VkIHRvIHRlc3QgaWYgd2UgYXJlIGluIGEgY29uZmlndXJhdGlvbiB0aGF0ICAjCisj
IGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBjb25jcmV0ZSBzZXR0aW5ncy4gICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBj
cHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgIiNpZiAiICsgY29uY3JldGVTZXR0
aW5ncy50b19hLmNvbGxlY3R7CisgICAgfCBwYWlyIHwKKyAgICAoaWYgcGFpclsxXQorICAgICAg
ICIiCisgICAgIGVsc2UKKyAgICAgICAiISIKKyAgICAgZW5kKSArICJPRkZMSU5FX0FTTV8iICsg
cGFpclswXQorICB9LmpvaW4oIiAmJiAiKQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIGlzQVNURXJyb25lb3VzKGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUZXN0cyB0byBz
ZWUgaWYgdGhlIEFTVCBjbGFpbXMgdGhhdCB0aGVyZSBpcyBhbiBlcnJvciAtIGkuZS4gaWYgdGhl
ICAjCisjIHVzZXIncyBjb2RlLCBhZnRlciBzZXR0aW5ncyByZXNvbHV0aW9uLCBoYXMgRXJyb3Ig
bm9kZXMuICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK
K2RlZiBpc0FTVEVycm9uZW91cyhhc3QpCisgIG5vdCBhc3QuZmlsdGVyKEVycm9yKS5lbXB0eT8K
K2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBhc3NlcnRDb25maWd1
cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgRW1pdHMgYSBjaGVjayB0aGF0IGFzc2VydHMgdGhhdCB3ZSdy
ZSB1c2luZyB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbi4gIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKworZGVmIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykK
KyAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgcHV0cyAiI2Vsc2Ui
CisgIHB1dHMgIiNlcnJvciBcIkNvbmZpZ3VyYXRpb24gbWlzbWF0Y2guXCIiCisgIHB1dHMgIiNl
bmRpZiIKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBlbWl0Q29k
ZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpIHsgICAgICAg
ICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCB8IC4uLiB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFbWl0cyBhbGwgcmVs
ZXZhbnQgZ3VhcmRzIHRvIHNlZSBpZiB0aGUgY29uZmlndXJhdGlvbiBob2xkcyBhbmQgICAgICAj
CisjIGNhbGxzIHRoZSBibG9jayBpZiB0aGUgY29uZmlndXJhdGlvbiBpcyBub3QgZXJyb25lb3Vz
LiAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Rl
ZiBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQp
CisgIHB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICBpZiBpc0FT
VEVycm9uZW91cyhhc3QpCisgICAgcHV0cyAiI2Vycm9yIFwiSW52YWxpZCBjb25maWd1cmF0aW9u
LlwiIgorICBlbHNpZiBub3QgV09SS0lOR19CQUNLRU5EUy5pbmNsdWRlPyBiYWNrZW5kCisgICAg
cHV0cyAiI2Vycm9yIFwiVGhpcyBiYWNrZW5kIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LlwiIgorICBl
bHNlCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kCisgIGVuZAorICAK
KyAgcHV0cyAiI2VuZGlmIgorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3QpIHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5k
LCBpbmRleCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEVt
aXRzIGd1YXJkIGNvZGVzIGZvciBhbGwgdmFsaWQgY29uZmlndXJhdGlvbnMsIGFuZCBjYWxscyB0
aGUgYmxvY2sgICMKKyMgZm9yIHRob3NlIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHZhbGlkIGFu
ZCBub3QgZXJyb25lb3VzLiAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKworZGVmIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3QpCisgIGZvckVhY2hW
YWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBs
b3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXggfAorICAgIHB1dHMgY3BwU2V0dGluZ3NUZXN0KGNv
bmNyZXRlU2V0dGluZ3MpCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1Qs
IGJhY2tlbmQsIGluZGV4CisgICAgcHV0cyAiI2VuZGlmIgorICB9CitlbmQKKworCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUyIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIG5vZGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBDb25zdHJ1Y3QgYSBu
ZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgSWZUaGVuRWxzZSBub2RlcyBieSAgICAgICAj
CisjIHN1YnN0aXR1dGluZyBjb25jcmV0ZSBib29sZWFuIHZhbHVlcyBmb3IgZWFjaCBTZXR0aW5n
LiAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Ns
YXNzIE5vZGUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBtYXBDaGlsZHJl
biB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUKKyAgZGVmIHJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlCisgIGRlZiBy
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBT
ZXR0aW5nCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2V0dGluZ3NbQG5h
bWVdLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQKKyAgZGVmIHJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykKKyAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBh
bmQgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQK
K2VuZAorCitjbGFzcyBPcgorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChA
bGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIG9yIEByaWdodC5yZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgTm90Cisg
IGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKG5vdCBAY2hpbGQucmVzb2x2ZVNl
dHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhl
bkVsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBpZiBAcHJlZGljYXRl
LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUKKyAgICAgIEB0aGVuQ2FzZS5yZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZWxzZQorICAgICAgQGVsc2VDYXNlLnJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAg
ZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlz
dC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpCisgICAgICBpZiBpdGVtLmlzX2E/IFNlcXVlbmNlCisgICAgICAgIG5ld0xp
c3QgKz0gaXRlbS5saXN0CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbQorICAg
ICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBl
bmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLmRlbWFj
cm9pZnkobWFjcm9zKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIG5vZGUuc3Vic3RpdHV0ZShtYXBwaW5nKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBkZW1hY3JvaWZ5KCkgY29u
c3RydWN0cyBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBNYWNybyAgICAgICAjCisj
IG5vZGVzLCB3aGlsZSBzdWJzdGl0dXRlKCkgcmVwbGFjZXMgVmFyaWFibGUgbm9kZXMgd2l0aCB0
aGUgZ2l2ZW4gICAgICMKKyMgbm9kZXMgaW4gdGhlIG1hcHBpbmcuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbWFw
Q2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5kZW1hY3JvaWZ5KG1hY3Jv
cykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBtYXBD
aGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobWFwcGlu
ZykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAg
ICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGVM
YWJlbHMobWFwcGluZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvCisgIGRlZiBz
dWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbXlNYXBwaW5nID0ge30KKyAgICBtYXBwaW5nLmVhY2hf
cGFpciB7CisgICAgICB8IGtleSwgdmFsdWUgfAorICAgICAgdW5sZXNzIEB2YXJpYWJsZXMuaW5j
bHVkZT8ga2V5CisgICAgICAgIG15TWFwcGluZ1trZXldID0gdmFsdWUKKyAgICAgIGVuZAorICAg
IH0KKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0
aXR1dGUobXlNYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUKKyAg
ZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBw
aW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitj
bGFzcyBMb2NhbExhYmVsCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgaWYg
bWFwcGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNlbGYK
KyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHN1YnN0aXR1dGUo
Y29uc3RhbnRzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIG15Q29uc3RhbnRzID0gY29uc3RhbnRz
LmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNf
YT8gQ29uc3REZWNsCisgICAgICAgIG15Q29uc3RhbnRzW2l0ZW0udmFyaWFibGVdID0gaXRlbS52
YWx1ZS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0
IDw8IGl0ZW0uc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgIGVuZAorICAgIH0KKyAgICBT
ZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5kCisgIAorICBkZWYgcmVuYW1l
TGFiZWxzCisgICAgbWFwcGluZyA9IHt9CisgICAgCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8
IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBMb2NhbExhYmVsCisgICAgICAgIG1hcHBpbmdb
aXRlbV0gPSBMb2NhbExhYmVsLnVuaXF1ZQorICAgICAgZW5kCisgICAgfQorICAgIAorICAgIHN1
YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgZW5kCisgIAorICBkZWYgZGVtYWNyb2lmeShtYWNy
b3MpCisgICAgbXlNYWNyb3MgPSBtYWNyb3MuZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8
IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICBteU1hY3Jvc1tpdGVt
Lm5hbWVdID0gaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3QgPSBbXQorICAgIEBs
aXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gTWFjcm8KKyAg
ICAgICAgIyBJZ25vcmUuCisgICAgICBlbHNpZiBpdGVtLmlzX2E/IE1hY3JvQ2FsbAorICAgICAg
ICBtYXBwaW5nID0ge30KKyAgICAgICAgbXlNeU1hY3JvcyA9IG15TWFjcm9zLmR1cAorICAgICAg
ICByYWlzZSAiQ291bGQgbm90IGZpbmQgbWFjcm8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2Rl
T3JpZ2luU3RyaW5nfSIgdW5sZXNzIG15TWFjcm9zW2l0ZW0ubmFtZV0KKyAgICAgICAgcmFpc2Ug
IkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxsIHRvICN7aXRlbS5uYW1lfSBhdCAje2l0
ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVtLm9wZXJhbmRzLnNpemUgPT0gbXlNYWNy
b3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQorICAgICAgICBpdGVtLm9wZXJhbmRzLnNpemUu
dGltZXMgeworICAgICAgICAgIHwgaWR4IHwKKyAgICAgICAgICBpZiBpdGVtLm9wZXJhbmRzW2lk
eF0uaXNfYT8gVmFyaWFibGUgYW5kIG15TWFjcm9zW2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1lXQor
ICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhd
Lm5hbWVdID0gbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAgICBt
YXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAg
ICAgICAgICBlbHNpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gTWFjcm8KKyAgICAgICAgICAg
IG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IGl0
ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVd
LnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
bXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9IG5pbAorICAg
ICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9IGl0
ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIG5ld0xp
c3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5LnN1YnN0aXR1dGUobWFwcGluZykuZGVtYWNy
b2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMubGlzdAorICAgICAgZWxzZQorICAgICAgICBu
ZXdMaXN0IDw8IGl0ZW0uZGVtYWNyb2lmeShteU1hY3JvcykKKyAgICAgIGVuZAorICAgIH0KKyAg
ICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkuc3Vic3RpdHV0ZSh7fSkKKyAgZW5k
CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZl
T2Zmc2V0cyhvZmZzZXRzLCBzaXplcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBoYXMgb2Zmc2V0
IHZhbHVlcyBpbnN0ZWFkIG9mIHN5bWJvbGljICAgICAgICMKKyMgb2Zmc2V0cy4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2
ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGls
ZCB8CisgICAgICBjaGlsZC5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICB9Cisg
IGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldAorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zm
c2V0cywgc2l6ZXMpCisgICAgaWYgb2Zmc2V0c1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhj
b2RlT3JpZ2luLCBvZmZzZXRzW3NlbGZdKQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQK
KyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRz
LCBzaXplcykKKyAgICBpZiBzaXplc1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3Jp
Z2luLCBzaXplc1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBwdXRzICJDb3VsZCBub3QgZmluZCAj
e3NlbGYuaW5zcGVjdH0gaW4gI3tzaXplcy5rZXlzLmluc3BlY3R9IgorICAgICAgcHV0cyAic2l6
ZXMgPSAje3NpemVzLmluc3BlY3R9IgorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAor
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLmZvbGQgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgUmVzb2x2ZSBjb25zdGFudCByZWZlcmVuY2VzIGFuZCBjb21wdXRlIGFy
aXRobWV0aWMgZXhwcmVzc2lvbnMuICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgZm9sZAorICAgIG1hcENoaWxkcmVuIHsKKyAgICAg
IHwgY2hpbGQgfAorICAgICAgY2hpbGQuZm9sZAorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3Mg
QWRkSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEBy
aWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IElt
bWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisg
ICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSArIEByaWdodC52YWx1ZSkK
KyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0
ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYg
dW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmln
aHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52
YWx1ZSAtIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcwor
ICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5m
b2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJl
dHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5l
dyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAqIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKwor
Y2xhc3MgTmVnSW1tZWRpYXRlCisgIGRlZiBmb2xkCisgICAgQGNoaWxkID0gQGNoaWxkLmZvbGQK
KyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGNoaWxkLmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVk
aWF0ZS5uZXcoY29kZU9yaWdpbiwgLUBjaGlsZC52YWx1ZSkKKyAgZW5kCitlbmQKKworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZlQWZ0ZXJTZXR0aW5ncyhv
ZmZzZXRzLCBzaXplcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIENvbXBpbGUgYXNzZW1ibHkgYWdhaW5zdCBhIHNldCBvZiBvZmZzZXRzLiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK
K2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmUob2Zmc2V0cywgc2l6ZXMpCisgICAgZGVtYWNyb2lm
eSh7fSkucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpLmZvbGQKKyAgZW5kCitlbmQKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2NzEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgY2FzZSBuYW1l
CisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiLCAidDEiLCAiYTEiLCAicjEiLCAidDIiLCAidDMi
CisgICAgICB0cnVlCisgICAgd2hlbiAidDQiLCAiY2ZyIgorICAgICAgZmFsc2UKKyAgICBlbHNl
CisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQp
CisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiCisgICAgICBjYXNlIGtp
bmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVhbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAg
ICAgICAgIiVheCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVheCIKKyAgICAgIGVsc2UK
KyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQxIiwgImExIiwgInIxIgorICAg
ICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlZGwiCisgICAgICB3aGVu
IDpoYWxmCisgICAgICAgICIlZHgiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlZHgiCisg
ICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MiIKKyAgICAg
IGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWNsIgorICAgICAgd2hlbiA6
aGFsZgorICAgICAgICAiJWN4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWN4IgorICAg
ICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDMiCisgICAgICBj
YXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVibCIKKyAgICAgIHdoZW4gOmhh
bGYKKyAgICAgICAgIiVieCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVieCIKKyAgICAg
IGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQ0IgorICAgICAgY2Fz
ZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlc2lsIgorICAgICAgd2hlbiA6aGFs
ZgorICAgICAgICAiJXNpIgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZXNpIgorICAgICAg
ZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAiY2ZyIgorICAgICAgY2Fz
ZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlZGlsIgorICAgICAgd2hlbiA6aGFs
ZgorICAgICAgICAiJWRpIgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWRpIgorICAgICAg
ZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAic3AiCisgICAgICBjYXNl
IGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzcGwiCisgICAgICB3aGVuIDpoYWxm
CisgICAgICAgICIlc3AiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlc3AiCisgICAgICBl
bHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICByYWlzZQorICAg
IGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJh
bmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQKKyAgZGVmIHg4Nk9w
ZXJhbmQoa2luZCkKKyAgICByYWlzZSB1bmxlc3Mga2luZCA9PSA6ZG91YmxlCisgICAgY2FzZSBu
YW1lCisgICAgd2hlbiAiZnQwIiwgImZhMCIsICJmciIKKyAgICAgICIleG1tMCIKKyAgICB3aGVu
ICJmdDEiLCAiZmExIgorICAgICAgIiV4bW0xIgorICAgIHdoZW4gImZ0MiIsICJmYTIiCisgICAg
ICAiJXhtbTIiCisgICAgd2hlbiAiZnQzIiwgImZhMyIKKyAgICAgICIleG1tMyIKKyAgICB3aGVu
ICJmdDQiCisgICAgICAiJXhtbTQiCisgICAgd2hlbiAiZnQ1IgorICAgICAgIiV4bW01IgorICAg
IGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQo
a2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIElt
bWVkaWF0ZQorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIkI3t2YWx1ZX0iCisgIGVuZAor
ICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiI3t2YWx1ZX0iCisgIGVuZAorZW5kCisK
K2NsYXNzIEFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQK
KyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFz
ZS54ODZPcGVyYW5kKDppbnQpfSkiCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkK
KyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRl
eAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYg
eDg2T3BlcmFuZChraW5kKQorICAgICIje29mZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQo
OmludCl9LCAje2luZGV4Lng4Nk9wZXJhbmQoOmludCl9LCAje3NjYWxlfSkiCisgIGVuZAorCisg
IGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZvcGVyYW5kKGtpbmQpfSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgIGRlZiBzdXBwb3J0czhCaXRPblg4
NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7
YWRkcmVzcy52YWx1ZX0iCisgIGVuZAorCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAg
ICIqI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UK
KyAgZGVmIHg4NkxhYmVsCisgICAgc2FuaXRpemVMYWJlbE5hbWUobmFtZSkKKyAgZW5kCisgIGRl
ZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgIHg4NkxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNz
IExvY2FsTGFiZWxSZWZlcmVuY2UKKyAgZGVmIHg4NkxhYmVsCisgICAgIl9fb2FfIituYW1lWzEu
Li0xXQorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgeDg2TGFiZWwKKyAg
ZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24KKyAgZGVmIHg4Nk9wZXJhbmRzKCpraW5kcykK
KyAgICByYWlzZSB1bmxlc3Mga2luZHMuc2l6ZSA9PSBvcGVyYW5kcy5zaXplCisgICAgcmVzdWx0
ID0gW10KKyAgICBraW5kcy5zaXplLnRpbWVzIHsKKyAgICAgIHwgaWR4IHwKKyAgICAgIHJlc3Vs
dCA8PCBvcGVyYW5kc1tpZHhdLng4Nk9wZXJhbmQoa2luZHNbaWR4XSkKKyAgICB9CisgICAgcmVz
dWx0LmpvaW4oIiwgIikKKyAgZW5kCisKKyAgZGVmIHg4NlN1ZmZpeChraW5kKQorICAgIGNhc2Ug
a2luZAorICAgIHdoZW4gOmJ5dGUKKyAgICAgICJiIgorICAgIHdoZW4gOmhhbGYKKyAgICAgICJ3
IgorICAgIHdoZW4gOmludAorICAgICAgImwiCisgICAgd2hlbiA6ZG91YmxlCisgICAgICAic2Qi
CisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxl
WDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBudW1PcGVyYW5kcykKKyAgICBpZiBu
dW1PcGVyYW5kcyA9PSAzCisgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAg
ICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5k
KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNpZiBvcGVyYW5k
c1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5k
KX0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiXHRtb3Yje3g4NlN1ZmZpeChraW5k
KX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVy
YW5kKGtpbmQpfSIKKyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAg
ICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9Igor
ICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcChvcGNvZGUsIGtpbmQpCisgICAg
aGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXplKQor
ICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTaGlmdChvcGNvZGUsIGtpbmQpCisgICAgaWYgb3Bl
cmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIG9yIG9wZXJhbmRzWzBdID09IFJlZ2lzdGVySUQuZm9y
TmFtZShuaWwsICJ0MiIpCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9Igor
ICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmludCl9LCAlZWN4IgorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAlY2wsICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICBlbmQKKyAgZW5kCisgIAor
ICBkZWYgaGFuZGxlWDg2RG91YmxlQnJhbmNoKGJyYW5jaE9wY29kZSwgbW9kZSkKKyAgICBjYXNl
IG1vZGUKKyAgICB3aGVuIDpub3JtYWwKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0iCisgICAgd2hlbiA6cmV2ZXJzZQorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2Qg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDpkb3VibGUpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSBtb2RlLmluc3BlY3QKKyAgICBl
bmQKKyAgICAkYXNtLnB1dHMgIlx0am5lICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICBlbmQK
KyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlKG9wY29kZVN1ZmZpeCwga2luZCkKKyAgICBp
ZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDAg
YW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUi
IG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1
ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNpZiBv
cGVyYW5kc1sxXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzFdLnZhbHVlID09IDAgYW5k
IG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9y
IG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZp
eChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAg
ICAkYXNtLnB1dHMgIlx0Y21wI3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZChraW5kKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludEJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisg
ICAgaGFuZGxlWDg2SW50Q29tcGFyZShicmFuY2hPcGNvZGVbMS4uLTFdLCBraW5kKQorICAgICRh
c20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgIGVu
ZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmQpCisgICAgaWYgb3Bl
cmFuZC5zdXBwb3J0czhCaXRPblg4NgorICAgICAgJGFzbS5wdXRzICJcdCN7c2V0T3Bjb2RlfSAj
e29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAj
e29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5k
KDppbnQpfSwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHQje3NldE9wY29kZX0gJWFsIgorICAg
ICAgJGFzbS5wdXRzICJcdG1vdnpibCAlYWwsICVlYXgiCisgICAgICAkYXNtLnB1dHMgIlx0eGNo
Z2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlU2V0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5k
bGVYODZJbnRDb21wYXJlKHNldE9wY29kZVszLi4tMV0sIGtpbmQpCisgICAgaGFuZGxlWDg2U2V0
KHNldE9wY29kZSwgb3BlcmFuZHNbMl0pCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlRlc3Qo
a2luZCkKKyAgICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisg
ICAgd2hlbiAyCisgICAgICBtYXNrID0gSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtMSkKKyAg
ICB3aGVuIDMKKyAgICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICAgIGVsc2UKKyAgICAgIHJhaXNl
ICJFeHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMsIGJ1dCBnb3QgI3tvcGVyYW5kcy5zaXplfSBhdCAj
e2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICAgIAorICAgIGlmIG1hc2suaXNfYT8gSW1t
ZWRpYXRlIGFuZCBtYXNrLnZhbHVlID09IC0xCisgICAgICBpZiB2YWx1ZS5pc19hPyBSZWdpc3Rl
cklECisgICAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7dmFsdWUu
eDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNl
CisgICAgICAgICRhc20ucHV0cyAiXHRjbXAje3g4NlN1ZmZpeChraW5kKX0gJDAsICN7dmFsdWUu
eDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMg
Ilx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje21hc2sueDg2T3BlcmFuZChraW5kKX0sICN7dmFs
dWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4
NkJyYW5jaFRlc3QoYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkK
KyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHMubGFzdC54ODZMYWJl
bH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldFRlc3Qoc2V0T3Bjb2RlLCBraW5kKQor
ICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVy
YW5kcy5sYXN0KQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcEJyYW5jaChvcGNvZGUsIGJy
YW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUs
IGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdo
ZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgd2hlbiAzCisgICAgICBq
dW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICByYWlzZSBzZWxmLmluc3Bl
Y3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7anVtcFRhcmdl
dC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlN1YkJyYW5jaChicmFuY2hP
cGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSA0IGFuZCBvcGVyYW5kc1sxXSA9
PSBvcGVyYW5kc1syXQorICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxz
ZQorICAgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMoInN1YiN7eDg2U3VmZml4KGtpbmQp
fSIsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGVuZAorICAgIGNhc2Ugb3BlcmFuZHMu
c2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgd2hl
biAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICByYWlz
ZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9
ICN7anVtcFRhcmdldC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGxvd2VyWDg2CisgICAg
JGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICBjYXNlIG9wY29kZQorICAgIHdoZW4g
ImFkZGkiLCAiYWRkcCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNb
MF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19h
PyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdp
c3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAgICAgICB1bmxl
c3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICRhc20ucHV0cyAiXHRt
b3ZsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAkYXNt
LnB1dHMgIlx0bGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgZW5k
CisgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJl
Z2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVy
SUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAg
ICAgICAgJGFzbS5wdXRzICJcdGxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0s
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWws
IDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3t4ODZPcGVy
YW5kcyg6aW50LCA6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAgd2hlbiAiYW5k
aSIsICJhbmRwIgorICAgICAgaGFuZGxlWDg2T3AoImFuZGwiLCA6aW50KQorICAgIHdoZW4gImxz
aGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2FsbCIsIDppbnQpCisgICAgd2hlbiAibXVs
aSIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1t
ZWRpYXRlCisgICAgICAgICRhc20ucHV0cyAiXHRpbXVsbCAje3g4Nk9wZXJhbmRzKDppbnQsIDpp
bnQsIDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgaGFuZGxlWDg2T3AoImltdWxsIiwgOmlu
dCkKKyAgICAgIGVuZAorICAgIHdoZW4gIm5lZ2kiCisgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAj
e3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJub3RpIgorICAgICAgJGFzbS5wdXRzICJc
dG5vdGwgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAib3JpIiwgIm9ycCIKKyAgICAg
IGhhbmRsZVg4Nk9wKCJvcmwiLCA6aW50KQorICAgIHdoZW4gInJzaGlmdGkiCisgICAgICBoYW5k
bGVYODZTaGlmdCgic2FybCIsIDppbnQpCisgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICBoYW5k
bGVYODZTaGlmdCgic2hybCIsIDppbnQpCisgICAgd2hlbiAic3ViaSIsICJzdWJwIgorICAgICAg
aWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAg
ICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9
LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICBo
YW5kbGVYODZPcCgic3VibCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJ4b3JpIiwgInhv
cnAiCisgICAgICBoYW5kbGVYODZPcCgieG9ybCIsIDppbnQpCisgICAgd2hlbiAibG9hZGkiLCAi
c3RvcmVpIiwgImxvYWRwIiwgInN0b3JlcCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7eDg2
T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgIHdoZW4gImxvYWRiIgorICAgICAgJGFzbS5wdXRz
ICJcdG1vdnpibCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJsb2FkaCIKKyAgICAgICRhc20ucHV0cyAi
XHRtb3Z6d2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpoYWxmKX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAic3RvcmViIgorICAgICAgJGFzbS5wdXRzICJc
dG1vdmIgI3t4ODZPcGVyYW5kcyg6Ynl0ZSwgOmJ5dGUpfSIKKyAgICB3aGVuICJsb2FkZCIsICJt
b3ZlZCIsICJzdG9yZWQiCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgI3t4ODZPcGVyYW5kcyg6
ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAiYWRkZCIKKyAgICAgICRhc20ucHV0cyAiXHRh
ZGRzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJkaXZkIgor
ICAgICAgJGFzbS5wdXRzICJcdGRpdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9
IgorICAgIHdoZW4gInN1YmQiCisgICAgICAkYXNtLnB1dHMgIlx0c3Vic2QgI3t4ODZPcGVyYW5k
cyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAibXVsZCIKKyAgICAgICRhc20ucHV0cyAi
XHRtdWxzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJzcXJ0
ZCIKKyAgICAgICRhc20ucHV0cyAiXHRzcXJ0c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpk
b3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJj
aTJkIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHNpMnNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAi
YmRlcSIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUKKyAgICAgICRhc20u
cHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0anAgI3tM
YWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4NkxhYmVsfSIKKyAg
ICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBvcGVy
YW5kc1syXSkueDg2TGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAg
d2hlbiAiYmRuZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpuZSIsIDpub3JtYWwp
CisgICAgd2hlbiAiYmRndCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6bm9y
bWFsKQorICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFl
IiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNo
KCJqYSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHRlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJs
ZUJyYW5jaCgiamFlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRlcXVuIgorICAgICAgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRuZXF1biIKKyAgICAg
IGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUKKyAgICAgIGlzRXF1YWwgPSBMb2NhbExh
YmVsLnVuaXF1ZQorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAg
ICAgICRhc20ucHV0cyAiXHRqcCAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vu
b3JkZXJlZCkueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7TGFiZWxSZWZlcmVu
Y2UubmV3KGNvZGVPcmlnaW4sIGlzRXF1YWwpLng4NkxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVk
Lmxvd2VyKCJYODYiKQorICAgICAgJGFzbS5wdXRzICJcdGptcCAje29wZXJhbmRzWzJdLng4Nkxh
YmVsfSIKKyAgICAgIGlzRXF1YWwubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRndHVuIgorICAg
ICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkZ3Rl
cXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6cmV2ZXJzZSkKKyAgICB3
aGVuICJiZGx0dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOm5vcm1hbCkK
KyAgICB3aGVuICJiZGx0ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamJlIiwg
Om5vcm1hbCkKKyAgICB3aGVuICJidGQyaSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRjbXBsICQweDgwMDAwMDAwICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tvcGVyYW5k
c1syXS54ODZMYWJlbH0iCisgICAgd2hlbiAidGQyaSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnR0
c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiY2QyaSIKKyAgICAgICRhc20ucHV0cyAiXHRj
dnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0bCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgICAgJGFzbS5wdXRzICJcdGplICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAgJGFz
bS5wdXRzICJcdGN2dHNpMnNkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03
IgorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpk
b3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0anAgI3tvcGVyYW5kc1syXS54ODZM
YWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0am5lICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9Igor
ICAgIHdoZW4gIm1vdmR6IgorICAgICAgJGFzbS5wdXRzICJcdHhvcnBkICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0i
CisgICAgd2hlbiAicG9wIgorICAgICAgJGFzbS5wdXRzICJcdHBvcCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInB1c2giCisgICAgICAkYXNtLnB1dHMgIlx0cHVz
aCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gIm1vdmUiLCAic3hp
MnAiLCAienhpMnAiCisgICAgICBpZiBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNb
MF0gYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJc
dHhvcmwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRzWzBdICE9IG9wZXJhbmRzWzFdCisg
ICAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAg
ICAgZW5kCisgICAgd2hlbiAibm9wIgorICAgICAgJGFzbS5wdXRzICJcdG5vcCIKKyAgICB3aGVu
ICJiaWVxIiwgImJwZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmludCkKKyAg
ICB3aGVuICJiaW5lcSIsICJicG5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwg
OmludCkKKyAgICB3aGVuICJiaWEiLCAiYnBhIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJq
YSIsIDppbnQpCisgICAgd2hlbiAiYmlhZXEiLCAiYnBhZXEiCisgICAgICBoYW5kbGVYODZJbnRC
cmFuY2goImphZSIsIDppbnQpCisgICAgd2hlbiAiYmliIiwgImJwYiIKKyAgICAgIGhhbmRsZVg4
NkludEJyYW5jaCgiamIiLCA6aW50KQorICAgIHdoZW4gImJpYmVxIiwgImJwYmVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6aW50KQorICAgIHdoZW4gImJpZ3QiLCAiYnBndCIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamciLCA6aW50KQorICAgIHdoZW4gImJpZ3RlcSIs
ICJicGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnZSIsIDppbnQpCisgICAgd2hl
biAiYmlsdCIsICJicGx0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDppbnQpCisg
ICAgd2hlbiAiYmlsdGVxIiwgImJwbHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamxl
IiwgOmludCkKKyAgICB3aGVuICJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIs
IDpieXRlKQorICAgIHdoZW4gImJibmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbmUi
LCA6Ynl0ZSkKKyAgICB3aGVuICJiYmEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphIiwg
OmJ5dGUpCisgICAgd2hlbiAiYmJhZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphZSIs
IDpieXRlKQorICAgIHdoZW4gImJiYiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6
Ynl0ZSkKKyAgICB3aGVuICJiYmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwg
OmJ5dGUpCisgICAgd2hlbiAiYmJndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamciLCA6
Ynl0ZSkKKyAgICB3aGVuICJiYmd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnZSIs
IDpieXRlKQorICAgIHdoZW4gImJibHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwg
OmJ5dGUpCisgICAgd2hlbiAiYmJsdGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbHRl
cSIsIDpieXRlKQorICAgIHdoZW4gImJ0aW8iLCAiYnRwbyIKKyAgICAgIGhhbmRsZVg4NkJyYW5j
aFRlc3QoImpvIiwgOmludCkKKyAgICB3aGVuICJidGlzIiwgImJ0cHMiCisgICAgICBoYW5kbGVY
ODZCcmFuY2hUZXN0KCJqcyIsIDppbnQpCisgICAgd2hlbiAiYnRpeiIsICJidHB6IgorICAgICAg
aGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6aW50KQorICAgIHdoZW4gImJ0aW56IiwgImJ0cG56
IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmludCkKKyAgICB3aGVuICJidGJv
IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJz
IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJ6
IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJu
eiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDpieXRlKQorICAgIHdoZW4gImpt
cCIKKyAgICAgICRhc20ucHV0cyAiXHRqbXAgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6
aW50KX0iCisgICAgd2hlbiAiYmFkZGlvIiwgImJhZGRwbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJh
bmNoKCJhZGRsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJiYWRkaXMiLCAiYmFkZHBzIgorICAg
ICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJhZGRp
eiIsICJiYWRkcHoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqeiIsIDppbnQp
CisgICAgd2hlbiAiYmFkZGlueiIsICJiYWRkcG56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2go
ImFkZGwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJic3ViaW8iCisgICAgICBoYW5kbGVYODZT
dWJCcmFuY2goImpvIiwgOmludCkKKyAgICB3aGVuICJic3ViaXMiCisgICAgICBoYW5kbGVYODZT
dWJCcmFuY2goImpzIiwgOmludCkKKyAgICB3aGVuICJic3ViaXoiCisgICAgICBoYW5kbGVYODZT
dWJCcmFuY2goImp6IiwgOmludCkKKyAgICB3aGVuICJic3ViaW56IgorICAgICAgaGFuZGxlWDg2
U3ViQnJhbmNoKCJqbnoiLCA6aW50KQorICAgIHdoZW4gImJtdWxpbyIKKyAgICAgIGhhbmRsZVg4
Nk9wQnJhbmNoKCJpbXVsbCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYm11bGlzIgorICAgICAg
aGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJibXVsaXoi
CisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAianoiLCA6aW50KQorICAgIHdoZW4g
ImJtdWxpbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAiam56IiwgOmludCkK
KyAgICB3aGVuICJib3JpbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAiam8iLCA6
aW50KQorICAgIHdoZW4gImJvcmlzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJq
cyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3Js
IiwgImp6IiwgOmludCkKKyAgICB3aGVuICJib3JpbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5j
aCgib3JsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYnJlYWsiCisgICAgICAkYXNtLnB1dHMg
Ilx0aW50ICQzIgorICAgIHdoZW4gImNhbGwiCisgICAgICAkYXNtLnB1dHMgIlx0Y2FsbCAje29w
ZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJyZXQiCisgICAgICAk
YXNtLnB1dHMgIlx0cmV0IgorICAgIHdoZW4gImNpZXEiLCAiY3BlcSIKKyAgICAgIGhhbmRsZVg4
NkludENvbXBhcmVTZXQoInNldGUiLCA6aW50KQorICAgIHdoZW4gImNpbmVxIiwgImNwbmVxIgor
ICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bmUiLCA6aW50KQorICAgIHdoZW4gImNp
YSIsICJjcGEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRhIiwgOmludCkKKyAg
ICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNl
dGFlIiwgOmludCkKKyAgICB3aGVuICJjaWIiLCAiY3BiIgorICAgICAgaGFuZGxlWDg2SW50Q29t
cGFyZVNldCgic2V0YiIsIDppbnQpCisgICAgd2hlbiAiY2liZXEiLCAiY3BiZXEiCisgICAgICBo
YW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiZSIsIDppbnQpCisgICAgd2hlbiAiY2lndCIsICJj
cGd0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZyIsIDppbnQpCisgICAgd2hl
biAiY2lndGVxIiwgImNwZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGdl
IiwgOmludCkKKyAgICB3aGVuICJjaWx0IiwgImNwbHQiCisgICAgICBoYW5kbGVYODZJbnRDb21w
YXJlU2V0KCJzZXRsIiwgOmludCkKKyAgICB3aGVuICJjaWx0ZXEiLCAiY3BsdGVxIgorICAgICAg
aGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bGUiLCA6aW50KQorICAgIHdoZW4gInRpbyIKKyAg
ICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6aW50KQorICAgIHdoZW4gInRpcyIKKyAgICAg
IGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6aW50KQorICAgIHdoZW4gInRpeiIKKyAgICAgIGhh
bmRsZVg4NlNldFRlc3QoInNldHoiLCA6aW50KQorICAgIHdoZW4gInRpbnoiCisgICAgICBoYW5k
bGVYODZTZXRUZXN0KCJzZXRueiIsIDppbnQpCisgICAgd2hlbiAidGJvIgorICAgICAgaGFuZGxl
WDg2U2V0VGVzdCgic2V0byIsIDpieXRlKQorICAgIHdoZW4gInRicyIKKyAgICAgIGhhbmRsZVg4
NlNldFRlc3QoInNldHMiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0YnoiCisgICAgICBoYW5kbGVYODZT
ZXRUZXN0KCJzZXR6IiwgOmJ5dGUpCisgICAgd2hlbiAidGJueiIKKyAgICAgIGhhbmRsZVg4NlNl
dFRlc3QoInNldG56IiwgOmJ5dGUpCisgICAgd2hlbiAicGVlayIKKyAgICAgICRhc20ucHV0cyAi
XHRtb3ZsICN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fSglZXNwKSwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJwb2tlIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS52YWx1ZSAqIDR9
KCVlc3ApIgorICAgIHdoZW4gImNkcWkiCisgICAgICAkYXNtLnB1dHMgIlx0Y2RxIgorICAgIHdo
ZW4gImlkaXZpIgorICAgICAgJGFzbS5wdXRzICJcdGlkaXZsICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgd2hlbiAiZmlpMmQiCisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cHNsbHEgJDMyLCAleG1tNyIK
KyAgICAgICRhc20ucHV0cyAiXHRwb3IgJXhtbTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0iCisgICAgd2hlbiAiZmQyaWkiCisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHBzcmxxICQzMiwgJXhtbTci
CisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgJXhtbTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgcmFpc2UgIkJhZCBvcGNvZGU6ICN7b3Bjb2RlfSIK
KyAgICBlbmQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorI2Rl
ZmluZSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0g
Q29kZVNwZWNpYWxpemF0aW9uS2luZCB7IENvZGVGb3JDYWxsLCBDb2RlRm9yQ29uc3RydWN0IH07
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCShyZXZpc2lvbiAxMDQ3NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAog
I2RlZmluZSBDb21tb25TbG93UGF0aHNfaAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5j
bHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBl
cnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAKQEAgLTQxLDYgKzQyLDM4IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKIAorQUxXQVlTX0lOTElORSBF
eGVjU3RhdGUqIGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3RlckZpbGUqIHJl
Z2lzdGVyRmlsZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEpTRnVuY3Rp
b24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIEFTU0VSVCghY2Fs
bGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKKyAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZj
YWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBleGVjLT5hcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcygpOworCisgICAgLy8gVGhpcyBlbnN1cmVzIGVub3VnaCBzcGFjZSBmb3IgdGhlIHdv
cnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1bWVudHMgcGFzc2VkIGJ5IHRoZSBjYWxsZXIu
CisgICAgaWYgKCFyZWdpc3RlckZpbGUtPmdyb3coZXhlYy0+cmVnaXN0ZXJzKCkgKyBuZXdDb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3Rl
cnMpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKworICAgIC8vIFRvbyBm
ZXcgYXJndW1lbnRzIC0tIGNvcHkgY2FsbCBmcmFtZSBhbmQgYXJndW1lbnRzLCB0aGVuIGZpbGwg
aW4gbWlzc2luZyBhcmd1bWVudHMgd2l0aCB1bmRlZmluZWQuCisgICAgc2l6ZV90IGRlbHRhID0g
bmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
czsKKyAgICBSZWdpc3Rlciogc3JjID0gZXhlYy0+cmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0ZXIq
IGRzdCA9IGV4ZWMtPnJlZ2lzdGVycygpICsgZGVsdGE7CisKKyAgICBpbnQgaTsKKyAgICBpbnQg
ZW5kID0gLUV4ZWNTdGF0ZTo6b2Zmc2V0Rm9yKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsK
KyAgICBmb3IgKGkgPSAtMTsgaSA+PSBlbmQ7IC0taSkKKyAgICAgICAgZHN0W2ldID0gc3JjW2ld
OworCisgICAgZW5kIC09IGRlbHRhOworICAgIGZvciAoIDsgaSA+PSBlbmQ7IC0taSkKKyAgICAg
ICAgZHN0W2ldID0ganNVbmRlZmluZWQoKTsKKworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IEV4
ZWNTdGF0ZTo6Y3JlYXRlKGRzdCk7CisgICAgQVNTRVJUKCh2b2lkKiluZXdFeGVjIDw9IHJlZ2lz
dGVyRmlsZS0+ZW5kKCkpOworICAgIHJldHVybiBuZXdFeGVjOworfQorCiBBTFdBWVNfSU5MSU5F
IGJvb2wgb3BJbnN0YW5jZU9mU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpT
VmFsdWUgYmFzZVZhbCwgSlNWYWx1ZSBwcm90bykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzQ2Vs
bCgpIHx8ICFiYXNlVmFsLmlzQ2VsbCgpIHx8ICFwcm90by5pc0NlbGwoKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDEwNDc3
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIEludHJpbnNpYyBOYXRpdmVFeGVjdXRhYmxlOjpp
bnRyaW5zaWMoKSAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdGF0aWMgdm9pZCBqZXR0aXNvbkNv
ZGVCbG9jayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxUPiYgY29kZUJsb2NrKQog
ewotICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGlu
ZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmdl
dEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwogICAg
IE93blB0cjxUPiBjb2RlQmxvY2tUb0pldHRpc29uID0gY29kZUJsb2NrLnJlbGVhc2UoKTsKICAg
ICBjb2RlQmxvY2sgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFQ+KGNvZGVCbG9ja1RvSmV0dGlzb24t
PnJlbGVhc2VBbHRlcm5hdGl2ZSgpKTsKQEAgLTE2Nyw5ICsxNjcsMjQgQEAgSlNPYmplY3QqIEV2
YWxFeGVjdXRhYmxlOjpjb21waWxlT3B0aW1pegogICAgIHJldHVybiBlcnJvcjsKIH0KIAoraW5s
aW5lIGNvbnN0IGNoYXIqIHNhbXBsaW5nRGVzY3JpcHRpb24oSklUVHlwZSBqaXRUeXBlKQorewor
ICAgIHN3aXRjaCAoaml0VHlwZSkgeworICAgIGNhc2UgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVu
azoKKyAgICAgICAgcmV0dXJuICJJbnRlcnByZXRlciBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAg
ICBjYXNlIEpJVENvZGU6OkJhc2VsaW5lSklUOgorICAgICAgICByZXR1cm4gIkJhc2VsaW5lIENv
bXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6REZHSklUOgorICAgICAgICBy
ZXR1cm4gIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiBKU09i
amVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNj
b3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQog
ewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBp
bGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1w
bGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBV
TlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC0yOTcsNyArMzEyLDcgQEAgSlNPYmplY3QqIFByb2dy
YW1FeGVjdXRhYmxlOjpjb21waWxlT3B0aQogCiBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6
OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNo
YWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxp
bmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAg
ICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5
cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7
CkBAIC00MTIsNyArNDI3LDcgQEAgRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6YgogICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAgIHJlc3VsdCA9
IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4ocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKTsK
ICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29k
ZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQ4
Miw3ICs0OTcsNyBAQCBQYXNzT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBGdW5jdGlvbkV4CiAK
IEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhl
Y1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJ
VFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRU
eXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RB
TCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVO
QUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNTI0LDcgKzUzOSw3IEBAIEpT
T2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKIAogSlNPYmplY3QqIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKEV4ZWNTdGF0ZSogZXhl
YywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5
cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRD
b2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcg
Q29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9u
KHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQog
ICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDEwNDc3NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcs
NyBAQAogI2RlZmluZSBFeGVjdXRhYmxlX2gKIAogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCisjaW5j
bHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCkBAIC0zOSwxMiAr
NDAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRGVidWdnZXI7CiAgICAgY2xhc3Mg
RXZhbENvZGVCbG9jazsKICAgICBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jazsKKyAgICBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBj
bGFzcyBTY29wZUNoYWluTm9kZTsKIAogICAgIHN0cnVjdCBFeGNlcHRpb25JbmZvOwogICAgIAot
ICAgIGVudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7IENvZGVGb3JDYWxsLCBDb2RlRm9yQ29u
c3RydWN0IH07CiAgICAgZW51bSBDb21waWxhdGlvbktpbmQgeyBGaXJzdENvbXBpbGF0aW9uLCBP
cHRpbWl6aW5nQ29tcGlsYXRpb24gfTsKIAogICAgIGlubGluZSBib29sIGlzQ2FsbChDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0zMTksNiArMzIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgfTsKIAogICAgIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1
dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAg
IHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTM4
NCw2ICszODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgUHJvZ3Jh
bUV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVm
IFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNDUzLDYgKzQ1Niw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1
dGFibGUgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3Jp
cHRFeGVjdXRhYmxlIEJhc2U7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmgJKHJldmlzaW9uIDEwNDc3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIAogICAgIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmll
cjxVbmtub3duPiB7CiAgICAgICAgIHR5cGVkZWYgV3JpdGVCYXJyaWVyPFVua25vd24+IEJhc2U7
CkBAIC0xMjQsNiArMTI1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNz
IEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAK
ICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAkocmV2aXNpb24gMTA0Nzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9y
OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OworICAgIGNsYXNzIFN0cnVjdHVyZTsKIAog
ICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllcywKQEAgLTE2NCw2ICsxNjUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAgICAgICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxMDQ3NzUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYg
KzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAg
ICAgY2xhc3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwog
ICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0xNDAsNiArMTQx
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGlzSG9z
dEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJn
dW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAko
cmV2aXNpb24gMTA0Nzc1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw4IEBAIEpTR2xvYmFsRGF0
YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICAsIGtleXdvcmRzKGFkb3B0UHRyKG5l
dyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRlcnByZXRlcigwKQogICAgICwgaGVhcCh0aGlz
LCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFzc0luZm8oJkpTQXJyYXk6OnNfaW5mbykKKyAg
ICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKICNpZiBF
TkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxhc3RTY3JhdGNoQnVmZmVyKDApCiAjZW5kaWYK
QEAgLTIxOCw3ICsyMjAsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRh
VHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1bmtzKHRoaXMpKTsKICNlbmRp
ZgogCi0gICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUodGhpcy0+Y2FuVXNlSklUKCkpOworICAg
IGludGVycHJldGVyLT5pbml0aWFsaXplKCZsbGludERhdGEsIHRoaXMtPmNhblVzZUpJVCgpKTsK
IAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xsZWN0KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gMTA0Nzc1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDE1ICszMCwxNiBAQAogI2RlZmluZSBKU0dsb2JhbERhdGFfaAogCiAjaW5j
bHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkludHJpbnNp
Yy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJs
ZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJTdHJvbmcuaCIKKyNp
bmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpT
VmFsdWUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJOdW1lcmljU3RyaW5n
cy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlN0cm9uZy5oIgogI2lu
Y2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJUaW1lb3V0Q2hlY2tlci5oIgogI2luY2x1
ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYgKzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgS2V5
d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2
ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmE7CiAgICAgY2xhc3MgUmVnRXhwQ2Fj
aGU7CkBAIC0yNDgsNiArMjUwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBIZWFwIGhl
YXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247CisKKyAgICAgICAgY29uc3QgQ2xhc3NJ
bmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOworICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNv
bnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CisKKyAgICAgICAgTExJbnQ6OkRhdGEgbGxpbnRE
YXRhOworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciBleGNlcHRp
b25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBob3N0Q2FsbFJldHVyblZhbHVlOwpAQCAtMzUy
LDYgKzM2MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogI3VuZGVmIHJlZ2lzdGVyVHlwZWRBcnJheUZ1
bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBl
LCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0
YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAgdm9pZCBjcmVhdGVOYXRpdmVU
aHVuaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCShyZXZpc2lvbiAxMDQ3NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEdl
dHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CiAgICAg
Y2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKQEAg
LTMzNSw2ICszMzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBhZGRTdGF0aWNH
bG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyosIGludCBjb3VudCk7CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAg
ICAgICAgLy8gRklYTUU6IEZvbGQgcmVzZXQgaW50byBpbml0LgogICAgICAgICB2b2lkIGluaXQo
SlNPYmplY3QqIHRoaXNWYWx1ZSk7CiAgICAgICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5
cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZp
c2lvbiAxMDQ3NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNs
YXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJu
YWxGdW5jdGlvbjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
TWFya2VkQmxvY2s7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFBy
b3BlcnR5TmFtZUFycmF5OwpAQCAtMjYwLDYgKzI2MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2Ug
aW5saW5lU3RvcmFnZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gTm9ib2R5IHNob3VsZCBl
dmVyIGFzayBhbnkgb2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0aGluZyBhbHJlYWR5IGtub3du
IHRvIGJlIGEgSlNPYmplY3QuCiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBw
ZXI7CiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7CkBAIC0zNzEsNiArMzc0
LDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGV4cGxp
Y2l0IEpTRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKICAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBt
X2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEw
NDc3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ciA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtOTYsNiAr
OTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAg
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRh
KiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKIAogICAg
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTA0Nzc1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1N0cmlu
ZzsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBKU1N0cmluZyoganNF
bXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhF
eGVjU3RhdGUqKTsKQEAgLTI0MSw2ICsyNDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAg
cHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAg
ICAgICAgCiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAg
ICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIqKSBjb25zdDsKICAgICAgICAgdm9p
ZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFyKikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAxMDQ3NzUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIHRvIG1h
a2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJsZS4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
SW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8PCAxOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEgPDwgMjsKQEAgLTg3LDYgKzg5LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGlzU2V0T25G
bGFnczEodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA8PSAoMSA8PCA3KSk7IHJl
dHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAgICAgICBib29sIGlzU2V0T25GbGFnczIodW5zaWdu
ZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8PCA4KSk7IHJldHVybiBtX2ZsYWdz
MiAmIChmbGFnID4+IDgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEwNDc3NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsMTAgKzM4LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogCiAgICAgY2xhc3MgSlNWYXJp
YWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNs
YXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAog
ICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiAx
MDQ3NzUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
SlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2Jq
ZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTY29wZUNo
YWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCkBAIC05MSw2ICs5Miw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBD
bGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAgICAgfTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9u
IDEwNDc3NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5
OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5RGF0YTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVD
aGFpbjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAg
ICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHBy
b3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qKTsKICAgICAgICAgU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwg
Y29uc3QgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9uIDEwNDc3NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYg
KzM3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogCiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4g
OiBwdWJsaWMgSlNDZWxsIHsKQEAgLTc0LDYgKzc1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAg
ICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEwNDc3NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAt
OTE2LDYgKzkxNiwxMiBAQAogI2RlZmluZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCisvKiBPbiBz
b21lIG9mIHRoZSBwbGF0Zm9ybXMgd2hlcmUgd2UgaGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNv
IGhhdmUgdGhlIAorICAgbG93LWxldmVsIGludGVycHJldGVyLiAqLworI2lmIEVOQUJMRShKSVQp
ICYmIFBMQVRGT1JNKE1BQykgJiYgVVNFKEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgRU5BQkxFX0xM
SU5UIDEKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0RGR19KSVQpICYmIEVOQUJMRShK
SVQpCiAvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gWDg2IGFuZCBYODZfNjQuICBPbmx5IHRlc3Rl
ZCBvbiBNYWMgYW5kIEdOVS9MaW51eC4gKi8KICNpZiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkp
ICYmIChQTEFURk9STShNQUMpIHx8IE9TKExJTlVYKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gMTA0Nzc1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAt
NDMsNiArNDMsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpCiAv
LyBMYW5kaW5nIHRoZSBmaWxlIG1vdmVzIGluIG9uZSBwYXRjaCwgd2lsbCBmb2xsb3cgb24gd2l0
aCBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgbmFtZXNwYWNlcy4KIG5hbWVzcGFjZSBKU0Mgewogc3Ry
dWN0IElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSWRlbnRpZmllckNoYXJCdWZmZXJU
cmFuc2xhdG9yOwogc3RydWN0IElkZW50aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5zbGF0b3I7CiB9
CkBAIC03MCw3ICs3MSw4IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgIGZyaWVuZCBzdHJ1Y3Qg
V1RGOjpIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3Qg
V1RGOjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmlu
Z0ltcGw7Ci0KKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgCiBwcml2YXRlOgogICAgIGVudW0gQnVmZmVyT3duZXJzaGlwIHsKICAgICAgICAgQnVmZmVy
SW50ZXJuYWwsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122163</attachid>
            <date>2012-01-11 21:07:34 -0800</date>
            <delta_ts>2012-01-11 22:37:51 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_12.diff</filename>
            <type>text/plain</type>
            <size>381421</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwOCBA
QAorMjAxMi0wMS0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV09SSyBJTiBQUk9HUkVTUy4gIEFsbCBvZiB0aGUgZ2x1ZSBpcyB3cml0dGVuIGJ1
dCBpdCBzdGlsbCBuZWVkcyB0byBiZQorICAgICAgICB0ZXN0ZWQuCisgICAgICAgIAorICAgICAg
ICBJbXBsZW1lbnRlZCBhbiBpbnRlcnByZXRlciB0aGF0IHVzZXMgdGhlIEpJVCdzIGNhbGxpbmcg
Y29udmVudGlvbi4gVGhpcworICAgICAgICBpbnRlcnByZXRlciBpcyBjYWxsZWQgTExJbnQsIG9y
IHRoZSBMb3cgTGV2ZWwgSW50ZXJwcmV0ZXIuIEpTQyB3aWxsIG5vdworICAgICAgICB3aWxsIHN0
YXJ0IGJ5IGV4ZWN1dGluZyBjb2RlIGluIExMSW50IGFuZCB3aWxsIG9ubHkgdGllciB1cCB0byB0
aGUgb2xkCisgICAgICAgIEpJVCBhZnRlciB0aGUgY29kZSBpcyBwcm92ZW4gaG90LgorICAgICAg
ICAKKyAgICAgICAgTExJbnQgaXMgd3JpdHRlbiBpbiBhIG1vZGlmaWVkIGZvcm0gb2Ygb3VyIG1h
Y3JvIGFzc2VtYmx5LiBUaGlzIG5ldyBtYWNybworICAgICAgICBhc3NlbWJseSBpcyBjb21waWxl
ZCBieSBhbiBvZmZsaW5lIGFzc2VtYmxlciAoc2VlIG9mZmxpbmVhc20pLCB3aGljaAorICAgICAg
ICBpbXBsZW1lbnRzIG1hbnkgbW9kZXJuIGNvbnZlbmllbmNlcyBzdWNoIGFzIGEgVHVyaW5nLWNv
bXBsZXRlIENQUy1iYXNlZAorICAgICAgICBtYWNybyBsYW5ndWFnZSBhbmQgZGlyZWN0IGFjY2Vz
cyB0byByZWxldmFudCBDKysgdHlwZSBpbmZvcm1hdGlvbgorICAgICAgICAoYmFzaWNhbGx5IG9m
ZnNldHMgb2YgZmllbGRzIGFuZCBzaXplcyBvZiBzdHJ1Y3RzL2NsYXNzZXMpLgorICAgICAgICAK
KyAgICAgICAgQ29kZSBleGVjdXRpbmcgaW4gTExJbnQgYXBwZWFycyB0byB0aGUgcmVzdCBvZiB0
aGUgSlNDIHdvcmxkICJhcyBpZiIgaXQKKyAgICAgICAgd2VyZSBleGVjdXRpbmcgaW4gdGhlIG9s
ZCBKSVQuIEhlbmNlLCB0aGluZ3MgbGlrZSBleGNlcHRpb24gaGFuZGxpbmcgYW5kCisgICAgICAg
IGNyb3NzLWV4ZWN1dGlvbi1lbmdpbmUgY2FsbHMganVzdCB3b3JrIGFuZCByZXF1aXJlIHByZXR0
eSBtdWNoIG5vCisgICAgICAgIGFkZGl0aW9uYWwgb3ZlcmhlYWQuCisKKyAgICAgICAgKiBEZXJp
dmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXAp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVV
bmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRT
dHJvbmdSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzaHJpbmtUb0ZpdCk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5saW5rQ2FsbHMpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUNvZGVCbG9jazo6amV0dGlz
b24pOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OlByb2dyYW1D
b2RlQmxvY2s6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpqaXRD
b21waWxlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGUpOgor
ICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmJhc2VsaW5lVmVyc2lvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlua0luY29taW5n
Q2FsbCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJ
bnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpMTEludENhbGxMaW5rSW5mbyk6
CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjp+TExJbnRDYWxsTGlua0luZm8pOgor
ICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6aXNMaW5rZWQpOgorICAgICAgICAoSlND
OjpMTEludENhbGxMaW5rSW5mbzo6dW5saW5rKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUu
aDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmUpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFzZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlzKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
YWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdHJ1Y3QpOgor
ICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRp
ZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBk
ZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoK
KyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0
ZTo6Y3VycmVudFZQQyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6fkludGVycHJldGVyKToKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6aXNP
cGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Omdl
dE9wY29kZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGVJRCk6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjplbmFibGVkKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9S
ZWdpc3RlckZpbGUuaDoKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSk6
CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaDogQWRkZWQuCisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgorICAg
ICAgICAoSlNDOjpKSVRDb2RlOjppc09wdGltaXppbmdKSVQpOgorICAgICAgICAoSlNDOjpKSVRD
b2RlOjppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgor
ICAgICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBw
cm9wcmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRl
KToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRo
cm93KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVf
U1RVQl9GVU5DVElPTik6CisgICAgICAgICogbGxpbnQ6IEFkZGVkLgorICAgICAgICAqIGxsaW50
L0xMSW50Q29tbW9uLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6RGF0YSk6CisgICAgICAgIChKU0M6OkxM
SW50OjpEYXRhOjp+RGF0YSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkRhdGE6Om9wY29kZU1hcCk6CisgICAgICAgICogbGxpbnQvTExJbnRF
bnRyeXBvaW50cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0RnVuY3Rpb25F
bnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEV2YWxFbnRyeXBvaW50KToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmdldFByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGlu
dC9MTEludEVudHJ5cG9pbnRzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0RW50
cnlwb2ludCk6CisgICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkxMSW50OjppbnRlcnByZXRlclRocm93KToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OnJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24pOgorICAgICAgICAoSlNDOjpMTElu
dDo6cmV0dXJuVG9UaHJvdyk6CisgICAgICAgIChKU0M6OkxMSW50OjpjYWxsVG9UaHJvdyk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50
L0xMSW50SGVscGVycy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6c2hvdWxkSklU
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxs
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpnZW5lcmljQ2FsbCk6CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6IEFkZGVkLgor
ICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAg
KiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToKKyAgICAgICAg
KiBsbGludC9MTEludFRodW5rcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6Z2Vu
ZXJhdGVUaHVua1dpdGhKdW1wVG8pOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JD
YWxsRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZv
ckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVu
Y3Rpb25Gb3JDYWxsQXJpdHlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50Ojpm
dW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpM
TEludDo6ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6cHJv
Z3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRlZC4K
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDogQWRkZWQuCisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBBZGRlZC4KKyAgICAg
ICAgKiBvZmZsaW5lYXNtL2FzbS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc3Qu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYjogQWRkZWQuCisg
ICAgICAgICogb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmI6IEFkZGVkLgorICAgICAgICAqIG9m
ZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20vb2Zmc2V0cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9wYXJz
ZXIucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcmVnaXN0ZXJzLnJiOiBBZGRlZC4K
KyAgICAgICAgKiBvZmZsaW5lYXNtL3NldHRpbmdzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZs
aW5lYXNtL3RyYW5zZm9ybS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYucmI6
IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOiBBZGRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAoSlNDOjpD
b21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmpldHRpc29uQ29kZUJsb2NrKToKKyAgICAgICAgKEpT
Qzo6RXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpzYW1wbGluZ0Rl
c2NyaXB0aW9uKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5h
bCk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAg
ICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbCk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6YmFzZWxpbmVDb2RlQmxvY2tGb3IpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDYWxsKToKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ29uc3RydWN0KToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwp
OgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0aW9u
SGFybmVzcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6cHJlcGFyZUZvckV4ZWN1dGlvbik6Cisg
ICAgICAgIChKU0M6OnByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBy
dW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6
CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJs
ZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6
Ok9wdGlvbnM6OmluaXRpYWxpemVPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMu
aDoKKyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKiBydW50aW1lL1N0
cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAgICAg
KiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisKIDIw
MTItMDEtMTEgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBDb2Rl
QmxvY2s6Om1fZXhlY3V0ZUNvdW50ZXIgc2hvdWxkIGJlIHJlbmFtZWQgdG8gQ29kZUJsb2NrOjpt
X2ppdEV4ZWN1dGVDb3VudGVyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHly
aWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTYwLDYgKzYwLDcgQEAgYWxsIDogXAogICAgIFN0cmluZ0NvbnN0cnVj
dG9yLmx1dC5oIFwKICAgICBTdHJpbmdQcm90b3R5cGUubHV0LmggXAogICAgIGRvY3MvYnl0ZWNv
ZGUuaHRtbCBcCisgICAgTExJbnRBc3NlbWJseS5oLlBIT05ZIFwKICMKIAogIyBsb29rdXAgdGFi
bGVzIGZvciBjbGFzc2VzCkBAIC0xMDQsMyArMTA1LDExIEBAIEhlYWRlckRldGVjdGlvbi5oIDoK
IAllY2hvID4gJEAKIAogZW5kaWYKKworIyBBc3NlbWJseSBmb3IgdGhlIExvd0xldmVsSW50ZXJw
cmV0ZXIKKworIyBUaGlzIGJ1aWxkcyBldmVyeSB0aW1lIGJlY2F1c2UgdGhlcmUgaXMgbm8gZWFz
eSB3YXkgdG8gZGVzY3JpYmUKKyMgdGhlIGRlcGVuZGVuY2llcyB1c2luZyBtYWtlLiBJbnN0ZWFk
LCB0aGUgYXNzZW1ibGVyIHdpbGwgZGVjaWRlIG9uCisjIGl0cyBvd24gd2hldGhlciBvciBub3Qg
aXQgZGlkIGFueXRoaW5nIHRoYXQgd291bGQgbGVhZCB0byBhIGNoYW5nZS4KK0xMSW50QXNzZW1i
bHkuaC5QSE9OWToKKwlydWJ5ICQoSmF2YVNjcmlwdENvcmUpL29mZmxpbmVhc20vYXNtLnJiICQo
SmF2YVNjcmlwdENvcmUpL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9KU0NMTEludE9mZnNldHNFeHRyYWN0b3IgPiBMTEludEFzc2VtYmx5LmgKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE1IEBACiAJb2JqZWN0cyA9IHsKIAogLyogQmVn
aW4gUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZF
MjcyIC8qIExMSW50IE9mZnNldHMgKi8gPSB7CisJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7
CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwQUMxNEJBN0ZEOTAwQkZFMjcyIC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJMTEludCBP
ZmZzZXRzIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MEFBMTRCQTdGRDkwMEJG
RTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCisJCQkpOworCQkJbmFtZSA9ICJM
TEludCBPZmZzZXRzIjsKKwkJCXByb2R1Y3ROYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CisJCX07
CiAJCTY1RkIzRjY2MDlEMTFFOTEwMEY0OURFQiAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0g
NjVGQjNGNzcwOUQxMUVCRDAwRjQ5REVCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYQWdncmVnYXRlVGFyZ2V0ICJEZXJpdmVkIFNvdXJjZXMiICovOwpAQCAtMTQsNiArMjMsOSBA
QAogCQkJCTY1RkIzRjY1MDlEMTFFOTEwMEY0OURFQiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJj
ZXMgKi8sCiAJCQkJNUQzNURFRTEwQzdDMTQwQjAwODY0OEIyIC8qIEdlbmVyYXRlIERUcmFjZSBo
ZWFkZXIgKi8sCiAJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4MEI0MTRCQTgy
MTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKIAkJCW5hbWUgPSAi
RGVyaXZlZCBTb3VyY2VzIjsKIAkJCXByb2R1Y3ROYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJ
CX07CkBAIC00OCw2ICs2MCwxMCBAQAogCQkwQkFDOTRBMDEzMzg3Mjg0MDBDRjEzNUIgLyogVGhy
ZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0
aW9uVmVyaWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwQkNEODM1NzE0ODU4NDUyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkNEODM1NDE0ODU4
NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJGMjhBMjkxMUEzM0RDMzAwNjM4Rjg0IC8qIFNp
emVMaW1pdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovOyB9OworCQkw
RjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NTE0QkNGNDVBMDA4
ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi87IH07CisJCTBGMEI4MzlCMTRCQ0Y0NjAw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRy
eXBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NzE0QkNGNDVBMDA4
ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovOyB9OworCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVC
NEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0E3MTRC
Q0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgz
QTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFu
ZGxlckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQUExNEJD
RjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTgsOSArNzQsMTIgQEAKIAkJMEYwQjgz
QjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRG
IC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNv
bHZlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjkxNEJDRjk1
RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCODE0QkNGOTVCMDA4
ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBGQzQ1QTE0QkQxNUY1MDBC
ODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxM
aW5rSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTVGMTVEMTRCN0E3M0Ew
MDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE2RDcyNjE0MkMzOUMwMDBDRjc4NEEgLyogQml0VmVj
dG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwICovOyB9OwogCQkwRjIxQzI2
ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJp
dmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjdBMTRCRTcyNzMwMEFE
QzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8qIENvZGVTcGVj
aWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYy
NDJEQTcxM0YzQjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjQyREE1MTNGM0IxQkIw
MDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NkYxNDczOEYzMTAwMTIxRTRGIC8q
IERGR0NvZGVCbG9ja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NzAxNDcz
OEYzNTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0Nv
ZGVCbG9ja3MuY3BwICovOyB9OwpAQCAtNzEsNiArOTAsMTkgQEAKIAkJMEY0MzE3MzgxNDZCQUM2
OTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxl
SGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA4MDE0QkE1NzI3MDBC
RkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRp
b25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0
NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50RXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Njgw
OUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi87IHNldHRpbmdzID0ge0NP
TVBJTEVSX0ZMQUdTID0gIi1Xbm8tdW51c2VkLXBhcmFtZXRlciI7IH07IH07CisJCTBGNDY4MEE1
MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dEhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEEx
MTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovOyB9OworCQkw
RjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlEMTRCQTdGODIwMEJG
RTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBDQTE0QkJCMTZDMDBC
RkUyNzIgLyogTExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENC
MTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3
MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5j
cHAgKi87IH07CisJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJl
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2
ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQyMTRCQkQxNjUw
MEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAg
Ki87IH07CisJCTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENGMTRCQkIzRDEw
MEJGRTI3MiAvKiBMTEludERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1
cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi87
IH07CisJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMTE0
QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJB
OSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRp
b25hbEZpbmFsaXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGNjIwMTc0MTQzRkNEMzMwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0Rh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjIw
MTcyMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYyMDE3NTE0M0ZDRDM3
MDA2OEI3N0MgLyogREZHT3BlcmFuZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNjIwMTcxMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdPcGVyYW5kcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNzEs
NyArNDAzLDcgQEAKIAkJODZCOTlBRTMxMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCOTlBRTEx
MTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QkIwOUMwMTM4RTM4MUIwMDU2NzAyRiAvKiBE
RkdSZXBhdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2QkIwOUJFMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCAqLzsgfTsKIAkJ
ODZCQjA5QzExMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJGMTM4RTM4MUIwMDU2NzAyRiAv
KiBERkdSZXBhdGNoLmggKi87IH07Ci0JCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNy
b0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IH07CisJ
CTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNE
RjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1i
bGVyQVJNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2QzU2OEREMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgKi87IH07
CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERFMTFBMjEz
RUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLzsgfTsKIAkJODZDNTY4RTIxMUEy
MTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNz
ZW1ibGVyLmggKi87IH07CkBAIC03MzEsNiArNzYzLDIwIEBACiAvKiBFbmQgUEJYQnVpbGRGaWxl
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8K
KwkJMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9
IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9
IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5
VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGNDY4MEE5MTRCQTdGRDkwMEJG
RTI3MjsKKwkJCXJlbW90ZUluZm8gPSAiTExJbnQgT2Zmc2V0cyI7CisJCX07CisJCTBGNDY4MEIz
MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2Eg
PSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZF
ODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOwor
CQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzI7CisJCQly
ZW1vdGVJbmZvID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQl9OwogCQkxNDEyMTRCRTBB
NDkxOTBFMDA0ODAyNTUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0g
UEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0
MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtNzc2LDYgKzgyMiwxNSBAQAog
LyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENv
cHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIg
LyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQYXRoID0gL3Vzci9zaGFyZS9t
YW4vbWFuMS87CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMDsKKwkJCWZpbGVzID0gKAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAxOworCQl9OwogCQk1REJC
MTUxMTEzMUQwQjEzMDA1NkFEMzYgLyogQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHsKIAkJCWlz
YSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAxMjsKQEAg
LTgxNiw2ICs4NzEsMTAgQEAKIAkJMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJl
c3RyaWN0aW9uVmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhy
ZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
QkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFyeUNoYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaXplTGltaXRzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExM
SW50RW50cnlwb2ludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
TExJbnRFbnRyeXBvaW50cy5jcHA7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8q
IExMSW50RW50cnlwb2ludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJ
bnRFbnRyeXBvaW50cy5oOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRU
aHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRUaHVu
a3MuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRUaHVua3MuaDsgcGF0aCA9IGxsaW50
L0xMSW50VGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0E1MTRC
Q0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb2RlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBODE0
QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSGFuZGxlckluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYw
QjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwcmVzc2lvblJhbmdlSW5mby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtODI2LDkgKzg4NSwxMiBAQAogCQkwRjBCODNCMzE0QkNGODVF
MDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IE1ldGhvZENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2xvYmFsUmVzb2x2ZUluZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5r
SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMTEludENhbGxMaW5rSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUz
N0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbW1vblNsb3dQYXRocy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE2RDcy
NDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSklURHJpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVTcGVjaWFsaXphdGlvbktp
bmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0ExNEJFNzI3MzAwQURD
NjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRXhlY3V0aW9uSGFybmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI0
MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdD
b2RlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERGR0Nv
ZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RTE0NzM4
RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04
MzksNiArOTAxLDIwIEBACiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhh
bmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5kbGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3
MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpJVEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2
ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKSVRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0
b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21w
aWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpTQ0xM
SW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
KwkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuY3BwOyBwYXRo
ID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuaDsgcGF0aCA9IGxsaW50
L0xMSW50RXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5
RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50SGVscGVycy5jcHA7IHBhdGggPSBsbGludC9MTEludEhl
bHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMDE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IExMSW50SGVscGVycy5oOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM1MTRCQkIxNjkw
MEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMTEludENvbW1vbi5oOyBwYXRoID0gbGxpbnQvTExJbnRDb21tb24uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGlu
ZUFzbUNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludE9mZmxp
bmVBc21Db25maWcuaDsgcGF0aCA9IGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93
TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBMb3dMZXZlbEludGVycHJldGVyLmNwcDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDODE0QkJCMTY5MDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmg7IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENFMTRCQkIzRDEw
MEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTExJbnREYXRhLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERh
dGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnREYXRhLmg7IHBhdGgg
PSBsbGludC9MTEludERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0Njgw
RDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0
Q2FsbFJldHVyblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhvc3RD
YWxsUmV0dXJuVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0Mx
NDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5dGVDb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNvZGVDYWNoZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVDb2Rl
Q2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0UxNDZDNzYyRjAw
MDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVW5jb25kaXRpb25hbEZpbmFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjYyMDE2RDE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBYnN0cmFjdFN0YXRl
LmNwcDsgcGF0aCA9IGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE1NDAsNiArMTYxNiwxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ug
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICov
CisJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNh
ID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFtZXdv
cmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTU5OCw2ICsxNjgxLDcgQEAKIAkJCQkxNDEyMTEy
MDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBC
QUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVz
dFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjI2LDYgKzE3MTAsNyBAQAogCQkJCUY1QzI5MEU2MDI4NEY5
OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4MDZB
NDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBG
NyAvKiBjb25maWcuaCAqLywKKwkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQg
Ki8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0Ix
MjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUw
MEYxRjY4MSAvKiBieXRlY29kZSAqLywKQEAgLTE2NjQsNiArMTc0OSwyOCBAQAogCQkJdGFiV2lk
dGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUy
NzIgLyogbGxpbnQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLywK
KwkJCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovLAor
CQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8sCisJCQkJ
MEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8sCisJCQkJMEY0Njgw
Q0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0YxNEJC
QjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovLAorCQkJCTBGNDY4MEM1MTRCQkIxNjkwMEJG
RTI3MiAvKiBMTEludENvbW1vbi5oICovLAorCQkJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAv
KiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLywKKwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUy
NzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8sCisJCQkJMEY0NjgwQzgxNEJCQjE2OTAw
QkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8sCisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50SGVscGVycy5oICovLAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGludDsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3MjYwMDQ4
MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC0xNjk2LDYgKzE4MDMsOCBAQAogCQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkgLyogaml0
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2ODBE
MDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJMEY0
NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJCQkw
RjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJMEY0
NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4MkUz
NzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTIxMTgsNiAr
MjIyNyw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3OTE0QkU3Mjcz
MDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovLAorCQkJCTBGMjFDMjdBMTRC
RTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8sCiAJCQkJMEYxNUYxNUQxNEI3
QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovLAogCQkJCUJDRjYwNTExMEUyMDNF
RjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2
NEQgLyogQXJnTGlzdC5oICovLApAQCAtMjQ3Nyw2ICsyNTg4LDcgQEAKIAkJOTY5QTA3OEYwRUQx
RDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlu
a0luZm8uaCAqLywKIAkJCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9m
ZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLywKIAkJCQkwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYg
LyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLywKIAkJCQkwRjBCODNCMjE0QkNGODVFMDA4ODVCNEYg
LyogTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCAqLywKQEAgLTMwMTUsNyArMzEyNywxNiBAQAogCQkJ
CTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODY3MDRCNDMxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1Bh
dGhzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJ
bnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUy
NzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJE
MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0Ex
NEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2
ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50
RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhv
c3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlCMTRCQ0Y0NjAw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5
RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMDI0LDEzICszMTQ1LDM0IEBACiAJCQkJMEYwQjgzQjUxNEJDRjg2
MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYw
QjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0
ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1
NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyNjgxNEJF
NUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0Mx
NEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKIC8qIEVuZCBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisJCTBGNDY4MDhFMTRCQTdFNUUwMEJG
RTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRp
dmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwOUExNEJBN0U1RjAw
QkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJK
U0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0
NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwOEMxNEJBN0U1
RTAwQkZFMjcyIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcy
IC8qIENvcHlGaWxlcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRl
cGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0
RGVwZW5kZW5jeSAqLywKKwkJCSk7CisJCQluYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworCQkJcHJvZHVjdE5hbWUgPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0
UmVmZXJlbmNlID0gMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4
dHJhY3RvciAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9v
bCI7CisJCX07CiAJCTE0MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovID0gewog
CQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0
MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi87CkBAIC0zMTU3LDExICszMjk5LDI5IEBACiAJCQkJ
MTRCRDU5QkUwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJOTMyRjVCREEwODIy
QTFDNzAwNzM2OTc1IC8qIGpzYyAqLywKIAkJCQk2NTExMjJGNzE0MDQ2QTRDMDAyQjEwMUQgLyog
dGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yICovLAorCQkJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTElu
dCBPZmZzZXRzICovLAogCQkJKTsKIAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0Njgw
QUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIk
KFNSQ1JPT1QpL2xsaW50L0xvd0xldmVsQXNzZW1ibGVyLmFzbSIsCisJCQkpOworCQkJbmFtZSA9
ICJHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQo
QlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oIiwK
KwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNo
ZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRf
UFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvXCJcblxuL3Vzci9iaW4vZW52IHJ1YnkgXCIke1NS
Q1JPT1R9L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYlwiIDwgXCIke1NS
Q1JPT1R9L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtXCIgPiBcIiR7QlVJTFRfUFJPRFVD
VFNfRElSfS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oXCJcbiI7CisJCX07CiAJ
CTM3MTNGMDE0MTQyOTA1MjQwMDM2Mzg3RiAvKiBDaGVjayBGb3IgSW5hcHByb3ByaWF0ZSBPYmpl
Y3RpdmUtQyBDbGFzcyBOYW1lcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zMzAyLDYgKzM0NjIs
MTQgQEAKIC8qIEVuZCBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhCMTRCQTdFNUUw
MEJGRTI3MiAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7
CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJMEY0
NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKKwkJfTsKIAkJMTQxMjExMUQwQTQ4NzkzQzAwNDgwMjU1IC8qIFNvdXJjZXMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CkBAIC0zNTU5LDcgKzM3MjcsMTQgQEAKIAkJCQk4NjcwNEI4NjEyREJBMzM3MDBBOUZF
N0IgLyogWWFyckpJVC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4OTEyREJBMzM3MDBB
OUZFN0IgLyogWWFyclBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCNDIxMkRC
OEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0
aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyog
TG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBEMjE0QkJE
MTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQ0
MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5r
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBCODNCMDE0QkNGNzE2MDA4ODVCNEYgLyogQ2Fs
bExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4M0I0MTRCQ0Y4NjAwMDg4NUI0
RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwpAQCAtMzU3
Niw2ICszNzUxLDE2IEBACiAvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjIxNEJB
ODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhU
YXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8q
IExMSW50IE9mZnNldHMgKi87CisJCQl0YXJnZXRQcm94eSA9IDBGNDY4MEIxMTRCQTgxMTUwMEJG
RTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTBGNDY4MEI0MTRCQTgy
MTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFy
Z2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBK
U0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQl0YXJnZXRQcm94eSA9IDBGNDY4MEIzMTRC
QTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CiAJCTE0MTIx
NEJGMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNh
ID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJCXRhcmdldCA9IDE0MTIxMTFGMEE0ODc5M0MwMDQ4
MDI1NSAvKiBtaW5pZG9tICovOwpAQCAtMzYwOSw2ICszNzk0LDE0OCBAQAogLyogRW5kIFBCWFRh
cmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlv
biBzZWN0aW9uICovCisJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NU
QU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlHQ0NfQ19M
QU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POwor
CQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19PUFRJTUlaQVRJ
T05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJ
CSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfU1lNQk9M
U19QUklWQVRFX0VYVEVSTiA9IE5POworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBp
bGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lP
TiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURf
VkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJ
CQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNl
dHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hf
REVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJ
CQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4
OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RT
X0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5h
bWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2Ug
Ki8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChB
UkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJ
CURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19D
X0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElP
TlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xh
bmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJ
R0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FC
T1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlF
UzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJ
aWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyQoSEVBREVSX1NF
QVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAu
NzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBt
YWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9Owor
CQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQ
cm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJD
SFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0g
WUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOwor
CQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpD
X0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJz
Lmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0g
Tk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdD
Q19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJ
QUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJ
LiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIs
CisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBM
T1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUp
IjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9
ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJD
SF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MDk5
MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNF
Ul9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJ
CQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQg
PSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5
OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9O
ID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9U
T18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJP
VE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFU
SFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVD
VFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJ
CQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1Rf
TkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VS
X0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50
T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVj
dGlvbjsKKwkJfTsKKwkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8qIERlYnVnICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9
IERlYnVnOworCQl9OworCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9
IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5h
bWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmls
aW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9
OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcy
IC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBj
b3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjExM0EwQTQ4
Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CiAJCQlidWlsZFNldHRpbmdzID0gewpAQCAtMzg1MCw2ICs0MTc3LDI4IEBACiAvKiBFbmQg
WENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRp
b25MaXN0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRy
YWN0b3IiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29u
ZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwOTYxNEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICov
LAorCQkJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4
MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY0NjgwOTkxNEJBN0U1
RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlv
bjsKKwkJfTsKKwkJMEY0NjgwQUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJMTEludCBPZmZzZXRzIiAqLyA9IHsKKwkJ
CWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAor
CQkJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODBBRTE0
QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUy
NzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9k
dWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsK
KwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIx
MTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5h
dGl2ZVRhcmdldCAibWluaWRvbSIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0
OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNyBAQAogI2RlZmluZSBEVU1QX0xJTktfU1RBVElTVElDUyAwCiAjZGVmaW5lIERV
TVBfQ09ERSAwCiAKLSNpbmNsdWRlIDxNYWNyb0Fzc2VtYmxlci5oPgorI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OTAsNiArODkwLDE0IEBAIHZvaWQgQ29k
ZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJ
ZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uIik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX2RpcmVjdDogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24s
IGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Iik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDog
eworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9nZW5lcmljOiB7CiAgICAgICAgICAgICBwcmludFB1
dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xNDQ5LDYgKzE0NTcsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhD
b3B5UGFyc2VkQmxvY2tUYWcsCiB7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1QYXJh
bWV0ZXJzKCkpOwogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1V
cCgpOwogICAgIAogICAgIGlmIChvdGhlci5tX3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0ZVJh
cmVEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTE0OTcsNiArMTUwNiw3IEBAIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIAog
ICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogCiAjaWYg
RFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJQ1MKICAgICBsaXZlQ29kZUJsb2NrU2V0LmFkZCh0aGlz
KTsKQEAgLTE1MTQsNyArMTUyNCwxMSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2lmIEVO
QUJMRShWRVJCT1NFX1ZBTFVFX1BST0ZJTEUpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNl
bmRpZgotICAgIAorCisjaWYgRU5BQkxFKExMSU5UKSAgICAKKyAgICB3aGlsZSAobV9pbmNvbWlu
Z0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAg
ICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7CisjZW5kaWYgLy8gRU5B
QkxFKExMSU5UKQogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gV2UgbWF5IGJlIGRlc3Ryb3llZCBi
ZWZvcmUgYW55IENvZGVCbG9ja3MgdGhhdCByZWZlciB0byB1cyBhcmUgZGVzdHJveWVkLgogICAg
IC8vIENvbnNpZGVyIHRoYXQgdHdvIENvZGVCbG9ja3MgYmVjb21lIHVucmVhY2hhYmxlIGF0IHRo
ZSBzYW1lIHRpbWUuIFRoZXJlCkBAIC0xNzI4LDYgKzE3NDIsNTYgQEAgdm9pZCBDb2RlQmxvY2s6
OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogI2VuZGlmCiAjZW5kaWYKICAgICAKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9nbG9iYWxEYXRhLT5p
bnRlcnByZXRlcjsKKyAgICBpZiAoIWludGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAg
Zm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3Ry
dWN0aW9uID0gJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0dWN0aW9uc1tpXV07
CisgICAgICAgICAgICBzd2l0Y2ggKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVj
dGlvblswXS51Lm9wY29kZSkpIHsKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAg
ICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgICAgICAgICAgaWYgKEhlYXA6Omlz
TWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1
Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls1XS51Lm9wZXJh
bmQgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY3Vy
SW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYm
IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpKQorICAg
ICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls3XS51LnN0
cnVjdHVyZUNoYWluLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAg
ICAgICAgICBjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAg
ICAgICAgIGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAg
ICAgICAgICAgICBjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSA9IGludGVycHJldGVyLT5nZXRP
cGNvZGUob3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9u
cygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICAgICAgfQorICAgICAg
ICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0
cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1d
OworICAgICAgICAgICAgQVNTRVJUKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVj
dGlvblswXS51Lm9wY29kZSkgPT0gb3BfcmVzb2x2ZV9nbG9iYWwKKyAgICAgICAgICAgICAgICAg
ICB8fCBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUp
ID09IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpOworICAgICAgICAgICAgaWYgKEhlYXA6Omlz
TWFya2VkKGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJl
LmNsZWFyKCk7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQgPSAwOwor
ICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExp
bmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0lu
Zm9zW2ldLmlzTGlua2VkKCkgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9z
W2ldLmNhbGxlZS5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2lu
ZykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20g
JXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51
bmxpbmsoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisjZW5k
aWYKKwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8vIENoZWNrIGlmIHdlJ3JlIG5vdCBsaXZl
LiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAgICAgaWYgKCEoc2hvdWxkSW1tZWRpYXRlbHlB
c3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBtX2RmZ0RhdGEtPmxpdmVuZXNzSGFzQmVlblBy
b3ZlZCkpIHsKQEAgLTE4NDgsMTAgKzE5MTIsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5
VmlzaXRTdHJvbmdSZWZlcgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlvbkRl
Y2xzLnNpemUoKTsgKytpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9mdW5jdGlvbkRlY2xz
W2ldKTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCi0gICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1f
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkK
LSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3Bl
cnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7Ci0gICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xv
YmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAg
ICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVz
b2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIGlmIChtX2dsb2JhbERhdGEtPmludGVycHJldGVy
LT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nl
c3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAg
IHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9uc1tpXV0pOworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAg
ICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVz
b2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKERGR19K
SVQpCkBAIC0yMDI4LDYgKzIwOTQsOSBAQCB2b2lkIENvZGVCbG9jazo6c2hyaW5rVG9GaXQoKQog
ICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLnNocmlua1RvRml0KCk7CiAgICAgbV9jYWxsTGlua0lu
Zm9zLnNocmlua1RvRml0KCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgbV9sbGlu
dENhbGxMaW5rSW5mb3Muc2hyaW5rVG9GaXQoKTsKKyNlbmRpZgogCiAgICAgbV9pZGVudGlmaWVy
cy5zaHJpbmtUb0ZpdCgpOwogICAgIG1fZnVuY3Rpb25EZWNscy5zaHJpbmtUb0ZpdCgpOwpAQCAt
MjA2MCw2ICsyMTI5LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiB7CiAgICAg
aWYgKCEhbV9hbHRlcm5hdGl2ZSkKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+dW5saW5rQ2FsbHMo
KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xsaW50
Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9sbGludENhbGxMaW5r
SW5mb3NbaV0uaXNMaW5rZWQoKSkKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ld
LnVubGluaygpOworICAgIH0KKyNlbmRpZgogICAgIGlmICghKG1fY2FsbExpbmtJbmZvcy5zaXpl
KCkgfHwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKICAg
ICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0yMDc0LDEwICsyMTQ5LDM2IEBA
IHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiAKIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtJ
bmNvbWluZ0NhbGxzKCkKIHsKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4o
KSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50
Q2FsbHMuYmVnaW4oKS0+dW5saW5rKCk7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVy
KHRoaXMpOwogICAgIHdoaWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5n
Q2FsbHMuZW5kKCkpCiAgICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigpLT51bmxpbmsoKm1f
Z2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CiB9CisKK3Vuc2lnbmVkIENvZGVCbG9jazo6Ynl0
ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJl
c3MpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkg
Pj0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfYmVnaW4pCisgICAgICAgICYmIHJldHVybkFk
ZHJlc3MudmFsdWUoKSA8PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQpKSB7CisgICAg
ICAgIEV4ZWNTdGF0ZSogY2FsbGVyRXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAg
IEFTU0VSVChjYWxsZXJFeGVjKTsKKyAgICAgICAgQVNTRVJUKGNhbGxlckV4ZWMtPmNvZGVCbG9j
aygpKTsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGNhbGxlckV4ZWMt
PmNvZGVCbG9jaygpLT5nZXRKSVRUeXBlKCkpKTsKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3Ry
dWN0aW9uID0gZXhlYy0+Y2FsbGVyRnJhbWUoKS0+Y3VycmVudFZQQygpOworICAgICAgICBBU1NF
UlQoaW5zdHJ1Y3Rpb24pOworICAgICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rp
b24pOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworI2VuZGlmCisgICAg
aWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gMTsKKyAgICBWZWN0b3I8Q2FsbFJldHVy
bk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2Fs
bFJldHVybkluZGV4VmVjdG9yOworICAgIGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQorICAgICAg
ICByZXR1cm4gMTsKKyAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5
dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMu
YmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJu
QWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OworfQogI2VuZGlmCiAKIHZvaWQgQ29k
ZUJsb2NrOjpjbGVhckV2YWxDYWNoZSgpCkBAIC0yMTczLDI0ICsyMjc0LDQ1IEBAIGJvb2wgRnVu
Y3Rpb25Db2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRoREYKIAogdm9pZCBQcm9ncmFtQ29kZUJsb2Nr
OjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNl
bGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBl
KCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2Fz
dDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6
ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwogfQogCiB2b2lkIEV2YWxDb2RlQmxvY2s6OmpldHRpc29u
KCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsK
KyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAg
IEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PEV2YWxFeGVj
dXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2Jh
bERhdGEoKSk7CiB9CiAKIHZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAg
ICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NF
UlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0
aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yKCpnbG9iYWxE
YXRhKCksIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7
CiB9CisKK3ZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6aml0Q29tcGlsZShFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KTsKKyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICBzdGF0aWNfY2FzdDxQ
cm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShleGVjKTsK
K30KKwordm9pZCBFdmFsQ29kZUJsb2NrOjpqaXRDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOwor
ICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHN0YXRpY19jYXN0PEV2YWxF
eGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlKGV4ZWMpOworfQorCit2
b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqaXRDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAg
IEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZUZvcihleGVjLCBtX2lz
Q29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOworfQogI2VuZGlm
CiAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYg
KzUwLDcgQEAKICNpbmNsdWRlICJKSVRXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50Q2FsbExp
bmtJbmZvLmgiCiAjaW5jbHVkZSAiTGluZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2lu
Y2x1ZGUgIlByZWRpY3Rpb25UcmFja2VyLmgiCkBAIC03Myw4ICs3NCw5IEBAIHN0YXRpYyBjb25z
dCBpbnQgRmlyc3RDb25zdGFudFJlZ2lzdGVySW4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBj
bGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBFeGVj
U3RhdGU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgaW5saW5lIGlu
dCB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoaW50IGFyZ3VtZW50c1JlZ2lzdGVyKSB7IHJl
dHVybiBhcmd1bWVudHNSZWdpc3RlciAtIDE7IH0KIApAQCAtODMsNiArODUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFs
aXplciwgcHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0g
Q29weVBhcnNlZEJsb2NrVGFnIHsgQ29weVBhcnNlZEJsb2NrIH07CiAgICAgcHJvdGVjdGVkOgpA
QCAtMTIzLDcgKzEyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgd2hpbGUgKHJl
c3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQtPmFs
dGVybmF0aXZlKCk7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAgICAgICAgIEFT
U0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAg
ICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBl
KCkpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICNlbmRpZgpAQCAt
MTk0LDE1ICsxOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAqKGJp
bmFyeVNlYXJjaDxNZXRob2RDYWxsTGlua0luZm8sIHVuc2lnbmVkLCBnZXRNZXRob2RDYWxsTGlu
a0luZm9CeXRlY29kZUluZGV4PihtX21ldGhvZENhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRo
b2RDYWxsTGlua0luZm9zLnNpemUoKSwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0
ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4
VmVjdG9yOwotICAgICAgICAgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1
cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4o
Y2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zm
c2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OwotICAgICAgICB9
CisgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSosIFJldHVybkFkZHJl
c3NQdHIpOwogCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Rm9yQ2FsbEF0SW5kZXgo
dW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKQEAgLTIyMywxMSArMjE4LDE3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBtX2luY29taW5nQ2FsbHMucHVzaChpbmNv
bWluZyk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHZvaWQgbGlua0lu
Y29taW5nQ2FsbChMTEludENhbGxMaW5rSW5mbyogaW5jb21pbmcpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLnB1c2goaW5jb21pbmcpOworICAgICAgICB9Cisj
ZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogICAgICAgICAKICAgICAgICAgdm9pZCB1bmxpbmtJbmNv
bWluZ0NhbGxzKCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi0jaWYgRU5BQkxF
KERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAg
dm9pZCBzZXRKSVRDb2RlTWFwKFBhc3NPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IGppdENvZGVN
YXApCiAgICAgICAgIHsKICAgICAgICAgICAgIG1faml0Q29kZU1hcCA9IGppdENvZGVNYXA7CkBA
IC0yMzYsNyArMjM3LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBtX2ppdENvZGVNYXAuZ2V0KCk7CiAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAK
KyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgdm9pZCBjcmVhdGVERkdEYXRhSWZOZWNlc3Nh
cnkoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoISFtX2RmZ0RhdGEpCkBAIC0zMzUsMTIg
KzMzOCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoSU5URVJQUkVURVIpCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0
aW9uKiByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocmV0dXJu
QWRkcmVzcyA+PSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICYmIHJldHVybkFkZHJlc3MgPCBpbnN0
cnVjdGlvbnMoKS5lbmQoKSkpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3Ry
dWN0aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgICAg
ICB9Ci0jZW5kaWYKIAogICAgICAgICB2b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihi
b29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlv
biA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgICAgICBib29sIGlzTnVtZXJpY0Nv
bXBhcmVGdW5jdGlvbigpIHsgcmV0dXJuIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CkBA
IC0zNTYsMTAgKzM1OCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgICAgICB2
b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCkKICAgICAgICAgeworI2lm
ICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKSAmJiAhRU5BQkxFKExMSU5UKQorICAgICAgICAgICAg
aWYgKEJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAoISFhbHRlcm5hdGl2ZSgpKQogICAgICAgICAg
ICAgICAgIGRpc2NhcmRCeXRlY29kZSgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAg
ICAgIGRpc2NhcmRCeXRlY29kZUxhdGVyKCk7CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICAK
ICNpZm5kZWYgTkRFQlVHCkBAIC0zODcsMTcgKzM5MywxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZSogZXhlY3V0YWJsZU1lbW9yeSgpIHsgcmV0dXJu
IGdldEpJVENvZGUoKS5nZXRFeGVjdXRhYmxlTWVtb3J5KCk7IH0KICAgICAgICAgdmlydHVhbCBK
U09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCkgPSAwOworICAgICAgICB2aXJ0dWFs
IHZvaWQgaml0Q29tcGlsZShFeGVjU3RhdGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJs
b2NrKiByZXBsYWNlbWVudCgpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVX
aXRoREZHKCkgPSAwOwogICAgICAgICBib29sIGhhc09wdGltaXplZFJlcGxhY2VtZW50KCkKICAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNl
bGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0
SklUVHlwZSgpKSk7CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHJlcGxhY2VtZW50KCktPmdl
dEpJVFR5cGUoKSA+IGdldEpJVFR5cGUoKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAg
ICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5n
ZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2Vs
aW5lQ29kZShyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgICAgICBB
U1NFUlQocmVwbGFjZW1lbnQoKSA9PSB0aGlzKTsKICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAt
NDU2LDcgKzQ2Myw2IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgY2xlYXJFdmFs
Q2FjaGUoKTsKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgdm9pZCBhZGRQcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9uKHVuc2lnbmVkIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24p
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkK
QEAgLTQ2OCw2ICs0NzQsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgbV9n
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24p
OwogICAgICAgICB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uQXRC
eXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CisjaWYgRU5BQkxFKExMSU5U
KQorICAgICAgICBMTEludENhbGxMaW5rSW5mbyogYWRkTExJbnRDYWxsTGlua0luZm8oKQorICAg
ICAgICB7CisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvcy5hcHBlbmQoTExJbnRDYWxs
TGlua0luZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gJm1fbGxpbnRDYWxsTGlua0luZm9zLmxh
c3QoKTsKKyAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBz
ZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVjdHVyZVN0
dWJJbmZvcy5ncm93KHNpemUpOyB9CkBAIC02NzIsNyArNjg0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIAogICAgICAgICBib29sIGFkZEZyZXF1ZW50RXhpdFNpdGUoY29uc3QgREZHOjpG
cmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0
SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChK
SVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVy
biBtX2V4aXRQcm9maWxlLmFkZChzaXRlKTsKICAgICAgICAgfQogCkBAIC03NzcsNiArNzg5LDI5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbShD
b2RlQmxvY2sqIGFsdGVybmF0aXZlKTsKICAgICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZy
b21BbHRlcm5hdGl2ZSgpOwogICAgICAgICAKKyAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250
cm9sbGluZyB3aGVuIEpJVHRpbmcga2lja3MgaW4sIGluIGEgbWl4ZWQgbW9kZQorICAgICAgICAv
LyBleGVjdXRpb24gd29ybGQuCisgICAgICAgIAorICAgICAgICB2b2lkIGRvbnRKSVRBbnl0aW1l
U29vbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9w
dGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRBZnRlcldhcm1VcCgpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICB2b2lkIGppdFNvb24oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNv
dW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBpbnQzMl90IGxsaW50RXhlY3V0ZUNvdW50ZXIoKSBjb25z
dDsKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fbGxpbnRFeGVjdXRlQ291bnRlcjsK
KyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9sbGlu
ZyB3aGVuIHRpZXJlZCBjb21waWxhdGlvbiBraWNrcyBpbi4gVGhpcwogICAgICAgICAvLyBjb250
cm9scyBib3RoIHdoZW4gdGhlIG9wdGltaXppbmcgY29tcGlsZXIgaXMgaW52b2tlZCBhbmQgd2hl
biBPU1IKICAgICAgICAgLy8gZW50cnkgaGFwcGVucy4gVHdvIHRyaWdnZXJzIGV4aXN0OiB0aGUg
bG9vcCB0cmlnZ2VyIGFuZCB0aGUgcmV0dXJuCkBAIC0xMDUyLDkgKzEwODcsMTEgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9zb3VyY2U7CiAgICAg
ICAgIHVuc2lnbmVkIG1fc291cmNlT2Zmc2V0OwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQog
ICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnM7CiAg
ICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zOworI2lm
IEVOQUJMRShMTElOVCkKKyAgICAgICAgU2VnbWVudGVkVmVjdG9yPExMSW50Q2FsbExpbmtJbmZv
LCA4PiBtX2xsaW50Q2FsbExpbmtJbmZvczsKKyAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PExM
SW50Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4g
PiBtX2luY29taW5nTExJbnRDYWxsczsKICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgICAg
IFZlY3RvcjxTdHJ1Y3R1cmVTdHViSW5mbz4gbV9zdHJ1Y3R1cmVTdHViSW5mb3M7CkBAIC0xMDY1
LDkgKzExMDIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciBtX2ppdENvZGVXaXRoQXJpdHlDaGVjazsKICAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0
PENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiA+IG1faW5j
b21pbmdDYWxsczsKICNlbmRpZgotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShERkdf
SklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIE93blB0cjxDb21wYWN0SklUQ29kZU1hcD4g
bV9qaXRDb2RlTWFwOwotICAgICAgICAKKyNlbmRpZgorI2lmIEVOQUJMRShERkdfSklUKQogICAg
ICAgICBzdHJ1Y3QgV2Vha1JlZmVyZW5jZVRyYW5zaXRpb24gewogICAgICAgICAgICAgV2Vha1Jl
ZmVyZW5jZVRyYW5zaXRpb24oKSB7IH0KICAgICAgICAgICAgIApAQCAtMTEzMCwxMiArMTE2OCwx
NCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBPd25QdHI8Q29kZUJsb2NrPiBtX2FsdGVy
bmF0aXZlOwogICAgICAgICAKKyAgICAgICAgaW50MzJfdCBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7
CisgICAgICAgIAogICAgICAgICBpbnQzMl90IG1faml0RXhlY3V0ZUNvdW50ZXI7CiAgICAgICAg
IHVpbnQzMl90IG1fc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcjsKICAgICAgICAgdWludDMyX3Qg
bV9zcGVjdWxhdGl2ZUZhaWxDb3VudGVyOwogICAgICAgICB1aW50OF90IG1fb3B0aW1pemF0aW9u
RGVsYXlDb3VudGVyOwogICAgICAgICB1aW50OF90IG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50
ZXI7Ci0KKyAgICAgICAgCiAgICAgICAgIHN0cnVjdCBSYXJlRGF0YSB7CiAgICAgICAgICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBwdWJsaWM6CkBAIC0xMjA4LDYgKzEyNDgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNP
YmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRD
b21waWxlKEV4ZWNTdGF0ZSopOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1l
bnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYK
QEAgLTEyNDIsNiArMTI4Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29w
ZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGppdENvbXBpbGUoRXhlY1N0YXRlKik7CiAgICAgICAgIHZpcnR1YWwgQ29k
ZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdp
dGhERkcoKTsKICNlbmRpZgpAQCAtMTI3OSw2ICsxMzIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVk
KEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0
aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZShFeGVjU3RhdGUqKTsKICAg
ICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBjYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ2LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgLy8gc29sdXRpb24gZm9yIG5v
dyAtIHdpbGwgbmVlZCB0byBzb21ldGhpbmcgc21hcnRlciBpZi93aGVuIHdlIGFjdHVhbGx5IHdh
bnQgbWl4ZWQtbW9kZSBvcGVyYXRpb24uCiAKICAgICBjbGFzcyBKU0NlbGw7CisgICAgY2xhc3Mg
TExJbnRDYWxsTGlua0luZm87CiAgICAgY2xhc3MgU3RydWN0dXJlOwogICAgIGNsYXNzIFN0cnVj
dHVyZUNoYWluOwogCkBAIC0xNDEsNiArMTQyLDExIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlm
CiAKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb24geworICAgICAgICBJbnN0cnVjdGlvbigpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHUuanNDZWxsLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAg
CiAgICAgICAgIEluc3RydWN0aW9uKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICNpZiAhRU5B
QkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCkBAIC0xNzYsNiArMTgyLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7IH0K
KyAgICAgICAgCisgICAgICAgIEluc3RydWN0aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlu
a0luZm8pIHsgdS5jYWxsTGlua0luZm8gPSBjYWxsTGlua0luZm87IH0KIAogICAgICAgICB1bmlv
biB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlOwpAQCAtMTg0LDYgKzE5Miw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4g
c3RydWN0dXJlQ2hhaW47CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganND
ZWxsOwogICAgICAgICAgICAgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsK
KyAgICAgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm87CisgICAgICAgICAg
ICB2b2lkKiBwb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlu
a0luZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9M
TEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDYWxs
TGlua0luZm9faAorI2RlZmluZSBMTEludENhbGxMaW5rSW5mb19oCisKKyNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUHRyLmgiCisjaW5jbHVkZSA8
d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IElu
c3RydWN0aW9uOworCitzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdT
ZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+IHsKKyAgICBMTEludENhbGxMaW5rSW5mbygp
CisgICAgeworICAgIH0KKyAgICAKKyAgICB+TExJbnRDYWxsTGlua0luZm8oKQorICAgIHsKKyAg
ICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9CisgICAg
CisgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIGNhbGxlZTsgfQorICAgIAorICAgIHZvaWQg
dW5saW5rKCkKKyAgICB7CisgICAgICAgIGNhbGxlZS5jbGVhcigpOworICAgICAgICBtYWNoaW5l
Q29kZVRhcmdldCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgICAgICBpZiAoaXNPbkxp
c3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBXcml0ZUJhcnJp
ZXI8SlNGdW5jdGlvbj4gY2FsbGVlOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWNoaW5l
Q29kZVRhcmdldDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gTExJbnRD
YWxsTGlua0luZm9faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bj
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29k
ZS5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgsIDQpIFwKICAgICAgICAg
bWFjcm8ob3BfcHV0X2J5X2lkLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uLCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkp
IFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFj
cm8ob3BfcHV0X2J5X2lkX2dlbmVyaWMsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lk
LCA0KSBcCkBAIC0yMDIsNiArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVk
ZWYgZW51bSB7IEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfSURfRU5VTSkgfSBPcGNvZGVJRDsK
ICAgICAjdW5kZWYgT1BDT0RFX0lEX0VOVU0KIAorICAgIGNvbnN0IGludCBtYXhPcGNvZGVMZW5n
dGggPSA5OwogICAgIGNvbnN0IGludCBudW1PcGNvZGVJRHMgPSBvcF9lbmQgKyAxOwogCiAgICAg
I2RlZmluZSBPUENPREVfSURfTEVOR1RIUyhpZCwgbGVuZ3RoKSBjb25zdCBpbnQgaWQjI19sZW5n
dGggPSBsZW5ndGg7CkBAIC0yMTgsNyArMjIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEZPUl9FQUNIX09QQ09ERV9JRChWRVJJRllfT1BDT0RFX0lEKTsKICAgICAjdW5kZWYgVkVSSUZZ
X09QQ09ERV9JRAogCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICNpZiBD
T01QSUxFUihSVkNUKSB8fCBDT01QSUxFUihJTlRFTCkKICAgICB0eXBlZGVmIHZvaWQqIE9wY29k
ZTsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyNjQsOSArMTI2NCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBtX2NvZGVCbG9jay0+
YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lm
IEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29s
dmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgICAgIGVt
aXRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1p
YyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRz
dC0+aW5kZXgoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChw
cm9wZXJ0eSkpOwpAQCAtMTQxOSw5ICsxNDE3LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9jb2RlQmxvY2stPmFkZEds
b2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFC
TEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgZW1pdE9wY29kZShyZXF1
aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2
ZV9nbG9iYWwpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wRHN0LT5pbmRleCgpKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE0
NjYsOSArMTQ2Miw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wK
ICNpZiBFTkFCTEUoSklUKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhp
bnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQog
ICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIGVtaXRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tz
ID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDg2LDkgKzE0ODAsNyBAQCB2
b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TWV0aG9kQ2hlY2soCiAKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogewotI2lmIEVOQUJMRShJTlRFUlBS
RVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0
cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBlbWl0T3Bjb2RlKG9wX2dldF9ieV9p
ZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0xNTEzLDkg
KzE1MDUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyCiAKIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0jaWYg
RU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKIAogICAgIGVtaXRPcGNv
ZGUob3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgo
KSk7CkBAIC0xNTMxLDkgKzE1MjEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFB1dEJ5CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0
QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0
ZXJJRCogdmFsdWUpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2Nr
LT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0j
ZW5kaWYKICAgICAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTgyMSw3ICsxODA5LDExIEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCgKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
Y2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgp
KTsgLy8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKDApOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIGVt
aXRPcGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKQEAgLTE5MjMsNyArMTkxNSwxMSBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7IC8vIGFyZ0NvdW50
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0ZXJPZmZzZXQo
KSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0luZm8oKSk7CisjZWxzZQog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICBl
bWl0T3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTA0Nzg3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE4MjMsNyArMTgyMyw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9ieV9pZCk7CiAgICAg
ICAgIH0KIAotICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDogeworICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6Cisg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CiAgICAgICAgICAg
ICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7
CiAgICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0u
dS5vcGVyYW5kKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lu
bGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5v
cGVyYW5kXTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw4IEBAIGlubGluZSBi
b29sIGNhbkNvbXBpbGVPcGNvZGUoT3Bjb2RlSUQgb3AKICAgICBjYXNlIG9wX3B1dF9zY29wZWRf
dmFyOgogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXI6CiAgICAg
Y2FzZSBvcF9wdXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX2ptcDoKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTA0Nzg3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUg
IkRGR09TUkV4aXQuaCIKICNpbmNsdWRlICJERkdSZXBhdGNoLmgiCisjaW5jbHVkZSAiSG9zdENh
bGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIklubGluZUFTTS5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKQEAgLTU0NSw0NSArNTQ2LDYgQEAg
c2l6ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cgogICAgIHJldHVybiBKU1Zh
bHVlOjpzdHJpY3RFcXVhbChleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJ
T04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOwotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElP
TiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqKTsKLQotI2lm
IENQVShYODZfNjQpCi1hc20gKAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAi
OiIgIlxuIgotICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCi0gICAgIm1vdiAlcjEzLCAlcmRp
XG4iCi0gICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVy
blZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQVShYODYpCi1hc20gKAotIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9M
X1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJtb3YgLTQwKCVl
ZGkpLCAlZWRpXG4iCi0gICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCi0gICAgImptcCAiIFNZTUJP
TF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkg
IlxuIgotKTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKQotYXNtICgKLSIudGV4dCIgIlxuIgotIi5h
bGlnbiAyIiAiXG4iCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi0iLnRo
dW1iIiAiXG4iCi0iLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoi
ICJcbiIKLSAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCi0gICAgImNweSByMCwgcjUiICJc
biIKLSAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZh
bHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbmRpZgotCi1FbmNvZGVkSlNWYWx1ZSBERkdf
T1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSog
ZXhlYykKLXsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5o
b3N0Q2FsbFJldHVyblZhbHVlKTsKLX0KLQogc3RhdGljIHZvaWQqIGhhbmRsZUhvc3RDYWxsKEV4
ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFt
ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNl
LmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9j
YXRpb25TcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogY2xhc3MgSGVhcDsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNz
IE1hcmtlZEJsb2NrOwogCiBjbGFzcyBBbGxvY2F0aW9uU3BhY2UgewpAQCAtNjgsNiArNjksOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzaHJpbmsoKTsKICAgICAKIHByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICBlbnVtIEFsbG9jYXRpb25F
ZmZvcnQgeyBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQsIEFsbG9jYXRpb25DYW5GYWlsIH07CiAgICAg
CiAgICAgdm9pZCogYWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBKU1ZhbHVl
OwogICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXI7CiAgICAgY2xhc3MgUmVn
aXN0ZXJGaWxlOwogICAgIGNsYXNzIFVTdHJpbmc7CkBAIC0xMjksMTAgKzEzMCwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhh
c2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBj
bGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNzIEFsbG9jYXRpb25TcGFjZTsK
LSAgICAgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwogICAgICAgICBmcmllbmQgY2xhc3Mg
Q29kZUJsb2NrOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBT
bG90VmlzaXRvcjsKIAogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbkV4dHJhQ29zdCA9
IDI1NjsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhFeHRyYUNvc3QgPSAxMDI0ICog
MTAyNDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2
aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNz
IEhlYXA7CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CitjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBXZWFrR0NIYW5kbGU7CiBjbGFzcyBTbG90Vmlz
aXRvcjsKIApAQCAtNzksNiArODAsOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
RnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQmxvY2soKTsKIAog
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAog
ICAgIC8vIFsgMzIuLi4gMjU2IF0KICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VTdGVw
ID0gTWFya2VkQmxvY2s6OmF0b21TaXplOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lz
ZUN1dG9mZiA9IDI1NjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9D
YWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDYgKzExOSw5
IEBAIG5hbWVzcGFjZSBKU0MgIHsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIElu
c3RydWN0aW9uKiByZXR1cm5WUEMoKSBjb25zdCB7IHJldHVybiB0aGlzW1JlZ2lzdGVyRmlsZTo6
UmV0dXJuUENdLnZQQygpOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIElu
c3RydWN0aW9uKiBjdXJyZW50VlBDKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PEluc3Ry
dWN0aW9uKj4odGhpc1tSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnRdLnRhZygpKTsgfQorI2Vu
ZGlmCiAKICAgICAgICAgdm9pZCBzZXRDYWxsZXJGcmFtZShDYWxsRnJhbWUqIGNhbGxlckZyYW1l
KSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFt
ZV0gPSBjYWxsZXJGcmFtZTsgfQogICAgICAgICB2b2lkIHNldFNjb3BlQ2hhaW4oU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW4pIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3Rl
ckZpbGU6OlNjb3BlQ2hhaW5dID0gc2NvcGVDaGFpbjsgfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMDQ3
ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjZW5k
aWYKIAotI2RlZmluZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQgKEVOQUJM
RShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSAmJiAhZGVmaW5lZChfX2xsdm1fXykpCisjZGVm
aW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAoKEVOQUJMRShDT01QVVRF
RF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpKSAmJiAhZGVmaW5lZChfX2xsdm1f
XykpCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTU0NywxNyArNTQ3LDQxIEBAIEludGVy
cHJldGVyOjpJbnRlcnByZXRlcigpCiB7CiB9CiAKLXZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxp
emUoYm9vbCBjYW5Vc2VKSVQpCitJbnRlcnByZXRlcjo6fkludGVycHJldGVyKCkKIHsKLSNpZiBF
TkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAg
aWYgKG1fZW5hYmxlZCkKKyAgICAgICAgZGVsZXRlW10gbV9vcGNvZGVUYWJsZTsKKyNlbmRpZgor
fQorCit2b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKExMSW50OjpEYXRhKiBsbGludERhdGEs
IGJvb2wgY2FuVXNlSklUKQoreworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KQorICAgIC8vIEhhdmluZyBMTEludCBlbmFibGVkLCBidXQgbm90IGJlaW5nIGFibGUgdG8gdXNl
IHRoZSBKSVQsIGFuZCBub3QgaGF2aW5nCisgICAgLy8gYSBjb21wdXRlZCBnb3RvIGludGVycHJl
dGVyLCBpcyBub3Qgc3VwcG9ydGVkLiBOb3QgYmVjYXVzZSB3ZSBjYW5ub3QKKyAgICAvLyBzdXBw
b3J0IGl0LCBidXQgYmVjYXVzZSBJIGRlY2lkZWQgdG8gZHJhdyB0aGUgbGluZSBhdCB0aGUgbnVt
YmVyIG9mCisgICAgLy8gcGVybXV0YXRpb25zIG9mIGV4ZWN1dGlvbiBlbmdpbmVzIHRoYXQgSSB3
YW50ZWQgdGhpcyBjb2RlIHRvIGdyb2suCisgICAgQVNTRVJUKGNhblVzZUpJVCk7CisjZW5kaWYK
ICAgICBpZiAoY2FuVXNlSklUKSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29k
ZVRhYmxlID0gbGxpbnREYXRhLT5vcGNvZGVNYXAoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKKyAgICAgICAgICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQo
bV9vcGNvZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsKKyNlbHNlCiAgICAg
ICAgIC8vIElmIHRoZSBKSVQgaXMgcHJlc2VudCwgZG9uJ3QgdXNlIGp1bXAgZGVzdGluYXRpb25z
IGZvciBvcGNvZGVzLgogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1P
cGNvZGVJRHM7ICsraSkgewogICAgICAgICAgICAgT3Bjb2RlIG9wY29kZSA9IGJpdHdpc2VfY2Fz
dDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihpKSk7CiAgICAgICAgICAgICBtX29wY29k
ZVRhYmxlW2ldID0gb3Bjb2RlOwogICAgICAgICB9CisjZW5kaWYKICAgICB9IGVsc2UgeworI2lm
IEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJsZSA9IG5ldyBPcGNvZGVbbnVtT3Bj
b2RlSURzXTsKKyNlbmRpZgogICAgICAgICBwcml2YXRlRXhlY3V0ZShJbml0aWFsaXplQW5kUmV0
dXJuLCAwLCAwKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bj
b2RlSURzOyArK2kpCkBAIC02NjcsOSArNjkxLDExIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBS
ZWdpc3RlcnMoQ2FsbEZyYW0KIAogYm9vbCBJbnRlcnByZXRlcjo6aXNPcGNvZGUoT3Bjb2RlIG9w
Y29kZSkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFC
TEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lmICFFTkFC
TEUoTExJTlQpCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybiBvcGNvZGUgPj0g
MCAmJiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2Rl
KSkgPD0gb3BfZW5kOworI2VuZGlmCiAgICAgcmV0dXJuIG9wY29kZSAhPSBIYXNoVHJhaXRzPE9w
Y29kZT46OmVtcHR5VmFsdWUoKQogICAgICAgICAmJiAhSGFzaFRyYWl0czxPcGNvZGU+Ojppc0Rl
bGV0ZWRWYWx1ZShvcGNvZGUpCiAgICAgICAgICYmIG1fb3Bjb2RlSURUYWJsZS5jb250YWlucyhv
cGNvZGUpOwpAQCAtNzI0LDEzICs3NTAsMTQgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0
ZXI6OnVud2luZENhbAogICAgIC8vIHRoZSBiZWdpbm5pbmcgb2YgbmV4dCBpbnN0cnVjdGlvbiB0
byBleGVjdXRlLiBUbyBnZXQgYW4gb2Zmc2V0CiAgICAgLy8gaW5zaWRlIHRoZSBjYWxsIGluc3Ry
dWN0aW9uIHRoYXQgdHJpZ2dlcmVkIHRoZSBleGNlcHRpb24gd2UKICAgICAvLyBoYXZlIHRvIHN1
YnRyYWN0IDEuCisjZXJyb3IgIkRvZXMgbm90IGNvbXB1dGUuIgogI2lmIEVOQUJMRShKSVQpICYm
IEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBpZiAoY2FsbGVyRnJhbWUtPmdsb2JhbERhdGEoKS5j
YW5Vc2VKSVQoKSkKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2Rl
T2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0g
Y29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMo
KSk7CiAgICAgZWxzZQogICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNv
ZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAxOwogI2VsaWYgRU5BQkxFKEpJVCkK
LSAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1l
LT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVP
ZmZzZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2Vsc2UKICAgICBieXRl
Y29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5W
UEMoKSkgLSAxOwogI2VuZGlmCkBAIC01MTY2LDEwICs1MTkzLDEwIEBAIHZvaWQgSW50ZXJwcmV0
ZXI6OnJldHJpZXZlTGFzdENhbGxlcihDYWwKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxs
ZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpOwogI2lm
IEVOQUJMRShKSVQpCiAgICAgZWxzZQotICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNv
ZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAg
Ynl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFt
ZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogI2Vsc2UKLSAgICBieXRlY29kZU9m
ZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5Q
QygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZz
ZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAgICAgbGluZU51
bWJlciA9IGNhbGxlckNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0IC0gMSk7CiAgICAgc291cmNlSUQgPSBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLT5zb3VyY2VJRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5o
IgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVk
ZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCiAKQEAgLTQ1LDYgKzQ2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNs
YXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogICAgIGNs
YXNzIFJlZ2lzdGVyOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwpAQCAtOTAsMTkgKzkyLDIx
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgog
ICAgICAgICBJbnRlcnByZXRlcigpOworICAgICAgICB+SW50ZXJwcmV0ZXIoKTsKICAgICAgICAg
Ci0gICAgICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGNhblVzZUpJVCk7CisgICAgICAgIHZvaWQg
aW5pdGlhbGl6ZShMTEludDo6RGF0YSosIGJvb2wgY2FuVXNlSklUKTsKIAogICAgICAgICBSZWdp
c3RlckZpbGUmIHJlZ2lzdGVyRmlsZSgpIHsgcmV0dXJuIG1fcmVnaXN0ZXJGaWxlOyB9CiAgICAg
ICAgIAogICAgICAgICBPcGNvZGUgZ2V0T3Bjb2RlKE9wY29kZUlEIGlkKQogICAgICAgICB7CiAg
ICAgICAgICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dP
VE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8
IEVOQUJMRShMTElOVCkKICAgICAgICAgICAgIHJldHVybiBtX29wY29kZVRhYmxlW2lkXTsKICNl
bHNlCiAgICAgICAgICAgICByZXR1cm4gaWQ7CkBAIC0xMTIsNyArMTE2LDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUgb3Bjb2RlKQogICAg
ICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENP
TVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICAgICAg
QVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOworICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlSURU
YWJsZS5nZXQob3Bjb2RlKTsKKyNlbGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KQogICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOwogICAgICAgICAgICAgaWYg
KCFtX2VuYWJsZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZUlE
PihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKTsKQEAgLTEyMiw2ICsxMjksMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgZW5hYmxlZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBtX2VuYWJsZWQ7CisgICAgICAgIH0KIAogICAgICAgICBib29sIGlzT3Bj
b2RlKE9wY29kZSk7CiAKQEAgLTE4OSw3ICsyMDEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgUmVnaXN0ZXJGaWxlIG1fcmVnaXN0ZXJGaWxlOwogICAgICAgICAKLSNpZiBFTkFCTEUo
Q09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIE9w
Y29kZSogbV9vcGNvZGVUYWJsZTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBp
bGluZworICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsg
Ly8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCisjZWxpZiBFTkFCTEUo
Q09NUFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVb
bnVtT3Bjb2RlSURzXTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwog
ICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFw
cyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHJldmlz
aW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rl
ckZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7
CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgUmVnaXN0ZXJG
aWxlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVnaXN0ZXJGaWxlKTsKQEAgLTgx
LDYgKzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAg
ICAgICBib29sIGdyb3dTbG93Q2FzZShSZWdpc3RlciopOwogICAgICAgICB2b2lkIHJlbGVhc2VF
eGNlc3NDYXBhY2l0eSgpOwogICAgICAgICB2b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxv
bmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0
dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9I
b3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorCisjaW5jbHVkZSAiQ2Fs
bEZyYW1lLmgiCisjaW5jbHVkZSAiSW5saW5lQVNNLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitl
eHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9D
QUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3Rh
dGUoRXhlY1N0YXRlKik7CisKKyNpZiBDUFUoWDg2XzY0KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1C
T0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglcjEzKSwgJXIxM1xu
IgorICAgICJtb3YgJXIxMywgJXJkaVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9D
QVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxp
ZiBDUFUoWDg2KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoi
ICJcbiIKKyAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgorICAgICJtb3YgJWVkaSwgNCglZXNw
KVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKK2Fz
bSAoCisiLnRleHQiICJcbiIKKyIuYWxpZ24gMiIgIlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJ
TkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIlxuIgorIi50aHVtYiIgIlxuIgorIi50aHVtYl9mdW5jICIgVEhVTUJfRlVO
Q19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxu
IgorICAgICJjcHkgcjAsIHI1IiAiXG4iCisgICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJ
T04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZW5kaWYK
KworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElP
TiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxS
ZXR1cm5WYWx1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorI2RlZmluZSBIb3N0
Q2FsbFJldHVyblZhbHVlX2gKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJNYWNy
b0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENB
TExJTkdfQ09OVkVOVElPTl9JU19TVERDQUxMCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFM
VUVfT1BUSU9OIENERUNMCisjZWxzZQorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09Q
VElPTgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0MgeworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1
ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7
Cit9CisKKyNlbmRpZiAvLyBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDggQEAgdm9pZCBK
SVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmls
ZV93aWxsX2NhbGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX25ld19zY29wZSkKICAgICAg
ICAgREVGSU5FX09QKG9wX3B1c2hfc2NvcGUpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbDoKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09Q
KG9wX3B1dF9ieV9pbmRleCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCkBAIC00
ODcsNiArNDg5LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Bvc3RfaW5jKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfcHJlX2RlYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9pbmMp
CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9i
eV92YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2dsb2JhbCkKQEAg
LTY5MCw3ICs2OTQsNyBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVu
CiAgICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gbV9jb2RlQmxvY2stPnN0cnVjdHVy
ZVN0dWJJbmZvKG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mb1tpXS5wcm9wZXJ0eUFjY2Vzc0lu
ZGV4KS5jYWxsUmV0dXJuTG9jYXRpb247CiAgICAgfQogCi0jaWYgRU5BQkxFKERGR19KSVQpCisj
aWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICBpZiAobV9jYW5CZU9wdGlt
aXplZCkgewogICAgICAgICBDb21wYWN0SklUQ29kZU1hcDo6RW5jb2RlciBqaXRDb2RlTWFwRW5j
b2RlcjsKICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2Rl
T2Zmc2V0IDwgbV9sYWJlbHMuc2l6ZSgpOyArK2J5dGVjb2RlT2Zmc2V0KSB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpJVENvZGUoKSB7IH0KICNlbmRpZgogICAgIHB1
YmxpYzoKLSAgICAgICAgZW51bSBKSVRUeXBlIHsgSG9zdENhbGxUaHVuaywgQmFzZWxpbmVKSVQs
IERGR0pJVCB9OworICAgICAgICBlbnVtIEpJVFR5cGUgeyBOb25lLCBIb3N0Q2FsbFRodW5rLCBJ
bnRlcnByZXRlclRodW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CiAgICAgICAgIAogICAgICAg
ICBzdGF0aWMgSklUVHlwZSBib3R0b21UaWVySklUKCkKICAgICAgICAgewpAQCAtNjYsOCArNjYs
MTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gREZHSklUOwogICAgICAg
ICB9CiAgICAgICAgIAorICAgICAgICBzdGF0aWMgYm9vbCBpc09wdGltaXppbmdKSVQoSklUVHlw
ZSBqaXRUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBERkdK
SVQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBib29sIGlzQmFzZWxpbmVD
b2RlKEpJVFR5cGUgaml0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5
cGUgPT0gSW50ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEJhc2VsaW5lSklUOworICAgICAg
ICB9CisgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIEpJVENvZGUoKQorICAgICAg
ICAgICAgOiBtX2ppdFR5cGUoTm9uZSkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTc1LDYg
Kzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICA6IG1fcmVmKHJlZikKICAgICAg
ICAgICAgICwgbV9qaXRUeXBlKGppdFR5cGUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChqaXRUeXBlICE9IE5vbmUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIG9w
ZXJhdG9yICEoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5o
CShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNSArMzMsMjEgQEAKICNpbmNsdWRlICJCeXRlY29k
ZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkpJVC5oIgor
I2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBs
YXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+CiBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHBy
b3ByaWF0ZShFeGVjU3RhdGUqIGV4ZWMsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2Nr
LCBKSVRDb2RlJiBqaXRDb2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CisgICAgaWYg
KGppdFR5cGUgPT0gY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIAogICAgIGlmICghZXhlYy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMo
KTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUg
PT0gSklUQ29kZTo6REZHSklUKQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGls
ZShleGVjLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUpOwpAQCAtNTUsMTAgKzYxLDcgQEAgaW5s
aW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoRXhlYwogICAgICAgICB9CiAgICAgICAg
IGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLmdl
dCgpKTsKICAgICB9Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRl
Y29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+
aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgorICAgIGNvZGVC
bG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2RlQmxv
Y2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwogICAgIAog
ICAgIHJldHVybiB0cnVlOwpAQCAtNjYsMTAgKzY5LDE1IEBAIGlubGluZSBib29sIGppdENvbXBp
bGVJZkFwcHJvcHJpYXRlKEV4ZWMKIAogaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZB
cHByb3ByaWF0ZShFeGVjU3RhdGUqIGV4ZWMsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNv
ZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2Rl
V2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6
OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJ
VFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAgSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIGlmICghZ2xvYmFsRGF0YS5jYW5V
c2VKSVQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisgICAgY29kZUJsb2NrLT51bmxp
bmtJbmNvbWluZ0NhbGxzKCk7CisgICAgCiAgICAgYm9vbCBkZmdDb21waWxlZCA9IGZhbHNlOwog
ICAgIGlmIChqaXRUeXBlID09IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAgZGZnQ29tcGlsZWQg
PSBERkc6OnRyeUNvbXBpbGVGdW5jdGlvbihleGVjLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUs
IGppdENvZGVXaXRoQXJpdHlDaGVjayk7CkBAIC04NCwxMSArOTIsNyBAQCBpbmxpbmUgYm9vbCBq
aXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpCiAgICAgICAgIH0KICAgICAgICAgaml0Q29kZSA9
IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCAmaml0Q29kZVdpdGhB
cml0eUNoZWNrKTsKICAgICB9Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYg
KCFCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVC
bG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgotICAg
IAorICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsK
ICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNr
KTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklURXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyAr
NjQsNyBAQCBFeGNlcHRpb25IYW5kbGVyIGdlbmVyaWNUaHJvdyhKU0dsb2JhbERhCiAKIEV4Y2Vw
dGlvbkhhbmRsZXIgaml0VGhyb3coSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVjU3RhdGUq
IGNhbGxGcmFtZSwgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSwgUmV0dXJuQWRkcmVzc1B0ciBmYXVs
dExvY2F0aW9uKQogewotICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgY2FsbEZy
YW1lLCBleGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZz
ZXQoZmF1bHRMb2NhdGlvbikpOworICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwg
Y2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNv
ZGVPZmZzZXQoY2FsbEZyYW1lLCBmYXVsdExvY2F0aW9uKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2
NCw0NSArMjE2NCwxMyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0Zv
cihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1
bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpOwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RG
dW5jdGlvbigpKTsKLSAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhl
Y3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KCk7Ci0KLSAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2Fz
ZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBp
ZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJz
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3
IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGlu
IG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5l
d0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7
Ci0gICAgUmVnaXN0ZXIqIHNyYyA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0
ZXIqIGRzdCA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwot
ICAgIGludCBlbmQgPSAtQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpOwotICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0g
PSBzcmNbaV07Ci0KLSAgICBlbmQgLT0gZGVsdGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1p
KQotICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdD
YWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3
Q2FsbEZyYW1lIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJh
bWU7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2sp
CiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSog
bmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0
ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21t
b25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVy
RmlsZSwgQ29kZUZvckNhbGwpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUs
IFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUt
PmNhbGxlckZyYW1lKCkpKTsKIApAQCAtMjIxNSw3ICsyMTgzLDcgQEAgREVGSU5FX1NUVUJfRlVO
Q1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBz
dGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJp
dHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29u
c3RydWN0KTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6
YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9y
Q29uc3RydWN0KTsKICAgICBpZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93
RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JF
VFVSTl9BRERSRVNTLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJG
cmFtZSgpKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1v
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1v
bi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29t
bW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENvbW1vbl9oCisjZGVmaW5l
IExMSW50Q29tbW9uX2gKKworI2RlZmluZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lORyAwCisKKyNl
bmRpZiAvLyBMTEludENvbW1vbl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVk
ZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5j
bHVkZSAiT3Bjb2RlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitE
YXRhOjpEYXRhKCkKKyAgICA6IG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKG5ldyBJbnN0cnVjdGlv
blttYXhPcGNvZGVMZW5ndGggKyAxXSkKKyAgICAsIG1fb3Bjb2RlTWFwKG5ldyBPcGNvZGVbbnVt
T3Bjb2RlSURzXSkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heE9wY29kZUxlbmd0aCAr
IDE7ICsraSkKKyAgICAgICAgbV9leGNlcHRpb25JbnN0cnVjdGlvbnNbaV0udS5wb2ludGVyID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSk7
CisjZGVmaW5lIE9QQ09ERV9FTlRSWShvcGNvZGUsIGxlbmd0aCkgbV9vcGNvZGVNYXBbb3Bjb2Rl
XSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50XyMjb3Bjb2RlKTsKKyAgICBGT1JfRUFDSF9P
UENPREVfSUQoT1BDT0RFX0VOVFJZKTsKKyN1bmRlZiBPUENPREVfRU5UUlkKK30KKworRGF0YTo6
fkRhdGEoKQoreworICAgIGRlbGV0ZVtdIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIGRl
bGV0ZVtdIG1fb3Bjb2RlTWFwOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwor
I2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnREYXRhLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnREYXRhLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludERhdGFfaAorI2Rl
ZmluZSBMTEludERhdGFfaAorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25h
bWVzcGFjZSBMTEludCB7CisKKyNpZiBFTkFCTEUoTExJTlQpCitjbGFzcyBEYXRhIHsKK3B1Ymxp
YzoKKyAgICBEYXRhKCk7CisgICAgfkRhdGEoKTsKKyAgICAKKyAgICBJbnN0cnVjdGlvbiogZXhj
ZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2V4Y2VwdGlvbklu
c3RydWN0aW9uczsKKyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fb3Bjb2RlTWFwOworICAgIH0KK3ByaXZhdGU6CisgICAgSW5zdHJ1
Y3Rpb24qIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIE9wY29kZSogbV9vcGNvZGVNYXA7
Cit9OworI2Vsc2UgLy8gRU5BQkxFKExMSU5UKQorCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1XbWlzc2luZy1ub3JldHVybiIKKyNlbmRpZgorCitjbGFzcyBEYXRhIHsKK3B1YmxpYzoK
KyAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1h
cCgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9OworCisj
aWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYK
KworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50
CisKKyNlbmRpZiAvLyBMTEludERhdGFfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgTExJbnRFbnRyeXBvaW50c19oCisjZGVmaW5lIExMSW50RW50cnlwb2lu
dHNfaAorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5o
IgorCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJl
dGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1
bmN0aW9uRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCwgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBh
cml0eUNoZWNrKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAg
ICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICAgICAgaml0Q29kZSA9IEpJVENv
ZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2Vk
Q29kZVJlZihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9s
b2d1ZSkpKTsKKyAgICAgICAgICAgIGFyaXR5Q2hlY2sgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsK
KyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSkpOworICAgICAgICBhcml0eUNoZWNr
ID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eV9jaGVjayk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKGtpbmQgPT0g
Q29kZUZvckNhbGwpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRD
VElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1
YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3Qp
OworICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZv
ckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KTsKKyAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7Cit9CisKK3ZvaWQgZ2V0RXZh
bEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQor
eworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0g
SklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1h
bmFnZWRDb2RlUmVmKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxpbnRfZXZhbF9wcm9sb2d1ZSkpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9i
YWxEYXRhLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKTsKK30KKwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERh
dGEmLCBKSVRDb2RlJikKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAg
ICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsaW50X3By
b2dyYW1fcHJvbG9ndWUpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaml0
Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRodW5rR2Vu
ZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cit9CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnRFbnRyeXBvaW50c19oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRFbnRyeXBvaW50c19oCisjZGVmaW5lIExM
SW50RW50cnlwb2ludHNfaAorCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSklUQ29kZTsKK2NsYXNzIEpTR2xvYmFsRGF0YTsK
K2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKKworbmFtZXNwYWNlIExMSW50IHsKKwordm9p
ZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCwgSklUQ29kZSYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjayk7Cit2b2lk
IGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKK3ZvaWQgZ2V0UHJv
Z3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYpOworCitpbmxpbmUgdm9pZCBn
ZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXZhbENvZGVCbG9jayosIEpJ
VENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0RXZhbEVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0
Q29kZSk7Cit9CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBQcm9ncmFtQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRQ
cm9ncmFtRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxM
SW50RXhjZXB0aW9ucy5oIgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJKSVRFeGNlcHRp
b25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBpbnRlcnByZXRlclRocm93KEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0
YSgpOworICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNl
cHRpb24sIGV4ZWMtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChleGVjLCBleGVjLT5yZXR1
cm5QQygpKSk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0
aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmxs
aW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVy
blRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICBnZW5lcmljVGhy
b3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNv
ZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAKKyAgICByZXR1cm4gZ2xv
YmFsRGF0YS0+bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworfQorCit2b2lkKiBj
YWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIGdlbmVyaWNU
aHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+
Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKTsK
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNf
aAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQg
eworCisvLyBKdXN0IHRocm93IHRoZSBjdXJyZW50bHkgYWN0aXZlIGV4Y2VwdGlvbiBpbiB0aGUg
Y29udGV4dCBvZiB0aGlzIGV4ZWMgc3RhdGUKKy8vIGFuZCBzZXQgdXAgYWxsIG5lY2Vzc2FyeSBz
dGF0ZS4KK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvdyhFeGVjU3RhdGUqKTsKKworLy8gVGVsbHMgeW91
IHdoZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0dXJuLXRvLXRocm93LCBhZnRlciB5
b3UndmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gdGhyb3cg
dGhlIGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0
aW9uKEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0aGUgY3VycmVudCBQQyBpbiB0aGUgZ2xvYmFs
IGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlvdSBhIFBDCisvLyB0aGF0IHlvdSBj
YW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4gYWR2YW5jZWQgYmV0
d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0cnVjdGlvbiIgdGhh
dCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBleGNlcHRpb24gaGFuZGxlci4gTm90
ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nLAorLy8g
aXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhhdCBQQyB3aXRob3V0IGRvaW5nIGFu
eXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVhZCBleGNlcHRpb24gaGFuZGxpbmcg
dGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5CisvLyBvdGhlciBoZWxwZXJz
LgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsK
KworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxsIHRodW5rLgordm9p
ZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludEV4Y2VwdGlvbnNfaApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMjAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTElu
dEhlbHBlcnMuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkNhbGxGcmFt
ZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0
dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVERyaXZl
ci5oIgorI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5Lmgi
CisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50
RXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRl
ICJPcGVyYXRpb25zLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCisj
ZGVmaW5lIExMSU5UX09QKGluZGV4KSAoZXhlYy0+cmVnaXN0ZXJzKClbcGNbaW5kZXhdLnUub3Bl
cmFuZF0pCisjZGVmaW5lIExMSU5UX09QX0MoaW5kZXgpIChleGVjLT5yKHBjW2luZGV4XS51Lm9w
ZXJhbmQpKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9UV08oZmlyc3QsIHNlY29uZCkgZG8geyAg
ICAgICBcCisgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICAgICAgdm9pZCogYTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICAgICAgdm9pZCogYjsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICB9IHBhaXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICBpbnQ2NF90IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0g
X19ydF91OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRf
dS5wYWlyLmEgPSBmaXJzdDsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5w
YWlyLmIgPSBzZWNvbmQ7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX3J0
X3UuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
KyNkZWZpbmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCBleGVjKQorCisj
ZGVmaW5lIExMSU5UX1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYgX190X2dsb2JhbERhdGEgPSBleGVjLT5n
bG9iYWxEYXRhKCk7ICAgICAgICBcCisgICAgICAgIF9fdF9nbG9iYWxEYXRhLmV4Y2VwdGlvbiA9
IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICBcCisgICAgICAgIHBjID0gcmV0dXJuVG9U
aHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExM
SU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCkg
ZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+Z2xv
YmFsRGF0YSgpLmV4Y2VwdGlvbikpIHsgICBcCisgICAgICAgICAgICBwYyA9IHJldHVyblRvVGhy
b3coZXhlYywgcGMpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5UX0VORF9JTVBM
KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
KyNkZWZpbmUgTExJTlRfRU5EKCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJ
TlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxz
ZSkKKworI2RlZmluZSBMTElOVF9CUkFOQ0gob3Bjb2RlLCBjb25kaXRpb24pIGRvIHsgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBib29sIF9fYl9jb25kaXRpb24gPSAoY29uZGl0aW9u
KTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoX19i
X2NvbmRpdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgcGMgKz0gcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5vcGVyYW5kOyAg
ICAgICAgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcGNv
ZGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUg
KGZhbHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTih2YWx1ZSkgZG8geyAgICAgICAgICAgICAg
ICBcCisgICAgICAgIEpTVmFsdWUgX19yX3JldHVyblZhbHVlID0gKHZhbHVlKTsgICAgICBcCisg
ICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAg
IExMSU5UX09QKDEpID0gX19yX3JldHVyblZhbHVlOyAgICAgICAgICBcCisgICAgICAgIExMSU5U
X0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2Up
CisKKyNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0KSBMTElOVF9S
RVRVUk5fVFdPKChleGVjKSwgKGNhbGxUYXJnZXQpKQorCisjZGVmaW5lIExMSU5UX0NBTExfVEhS
T1coZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICBcCisgICAg
ICAgIEV4ZWNTdGF0ZSogX19jdF9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2N0X3BjID0gKHBjKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYgX19j
dF9nbG9iYWxEYXRhID0gKF9fY3RfZXhlYyktPmdsb2JhbERhdGEoKTsgICAgICBcCisgICAgICAg
IF9fY3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jdF9leGVjLCBjYWxsVG9U
aHJvdyhfX2N0X2V4ZWMsIF9fY3RfcGMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVm
aW5lIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKSBkbyB7ICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jY2VfZXhlYyA9IChleGVjKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2Nj
ZV9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IGlmIChVTkxJS0VMWShfX2NjZV9leGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY2NlX2V4ZWMsIGNh
bGxUb1Rocm93KF9fY2NlX2V4ZWMsIF9fY2NlX3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkK
KworI2RlZmluZSBMTElOVF9DQUxMX1JFVFVSTihleGVjLCBwYywgY2FsbFRhcmdldCkgZG8geyAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3JfZXhlYyA9IChleGVj
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlv
biogX19jcl9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICB2b2lkKiBfX2NyX2NhbGxUYXJnZXQgPSAoY2FsbFRhcmdldCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihfX2Ny
X2V4ZWMtPmNhbGxlckZyYW1lKCksIF9fY3JfcGMpOyAgXAorICAgICAgICBMTElOVF9DQUxMX0VO
RF9JTVBMKF9fY3JfZXhlYywgX19jcl9jYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgXAorICAg
IH0gd2hpbGUgKGZhbHNlKQorCisKK2lubGluZSBib29sIHNob3VsZEpJVChFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgLy8gWW91IGNhbiBtb2RpZnkgdGhpcyB0byB0dXJuIG9mZiBKSVR0aW5nIHdp
dGhvdXQgcmVidWlsZGluZyB0aGUgd29ybGQuCisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEo
KS5jYW5Vc2VKSVQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKTsKK3sKKyAg
ICBpZiAoIXNob3VsZEpJVChleGVjKSkgeworICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+ZG9u
dEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7Cisg
ICAgfQorICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5qaXRDb21waWxlKGV4ZWMpOworICAgIGV4ZWMt
PmNvZGVCbG9jaygpLT5qaXRTb29uKCk7CisgICAgTExJTlRfUkVUVVJOX1RXTyhleGVjLT5jb2Rl
QmxvY2soKS0+Z2V0SklUQ29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoMCksIGV4ZWMp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfYXJpdHlDaGVjayk7Cit7CisgICAg
aWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmRvbnRK
SVRBbnl0aW1lU29vbigpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAg
IH0KKyAgICBleGVjLT5jb2RlQmxvY2soKS0+aml0Q29tcGlsZShleGVjKTsKKyAgICBleGVjLT5j
b2RlQmxvY2soKS0+aml0U29vbigpOworICAgIExMSU5UX1JFVFVSTl9UV08oZXhlYy0+Y29kZUJs
b2NrKCktPmdldEpJVENvZGVXaXRoQXJpdHlDaGVjaygpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGV4
ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChsb29wX29zcikKK3sKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorICAgIGlmICghc2hvdWxkSklU
KGV4ZWMpKSB7CisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAg
ICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIAorICAgIGNvZGVCbG9j
ay0+aml0Q29tcGlsZShleGVjKTsKKyAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICAKKyAg
ICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQp
OworICAgIAorICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+IG1hcDsKKyAgICBj
b2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKG1hcCk7CisgICAgQnl0ZWNvZGVBbmRNYWNo
aW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2VhcmNoPEJ5dGVjb2RlQW5kTWFjaGluZW9mZnNl
dCwgdW5zaWduZWQsIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldDo6Z2V0Qnl0ZWNvZGVJbmRleD4o
ZGVjb2RlZENvZGVNYXAuYmVnaW4oKSwgZGVjb2RlZENvZGVNYXAuc2l6ZSgpLCBwYyAtIGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgQVNTRVJUKG1hcHBpbmcpOworICAg
IEFTU0VSVChtYXBwaW5nLT5tX2J5dGVjb2RlSW5kZXggPT0gcGMgLSBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucy5iZWdpbigpKTsKKyAgICAKKyAgICB2b2lkKiBqdW1wVGFyZ2V0ID0gY29kZUJsb2Nr
LT5nZXRKSVRDb2RlKCkuZXhlY3V0ZUFkZHJlc3NBdE9mZnNldChtYXBwaW5nLT5tX21hY2hpbmVD
b2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQoanVtcFRhcmdldCk7CisgICAgCisgICAgTExJTlRfUkVU
VVJOX1RXTyhqdW1wVGFyZ2V0LCBleGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFj
ZSkKK3sKKyAgICBpZiAoc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGV4ZWMtPmNvZGVCbG9j
aygpLT5qaXRDb21waWxlKGV4ZWMpOworICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+aml0U29v
bigpOworICAgIH0gZWxzZQorICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+ZG9udEpJVEFueXRp
bWVTb29uKCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lz
dGVyX2ZpbGVfY2hlY2spCit7CisgICAgaWYgKFVOTElLRUxZKCFleGVjLT5nbG9iYWxEYXRhKCku
aW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmdyb3coJmV4ZWMtPnJlZ2lzdGVycygpW2V4ZWMt
PmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVyc10pKSkgeworICAgICAgICBleGVjID0g
ZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlv
biA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0ZXJU
aHJvdyhleGVjKTsKKyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9u
KCk7CisgICAgfQorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY2FsbF9hcml0eUNoZWNrKQoreworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNs
b3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJl
dGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNhbGwpOworICAgIGlmICghbmV3RXhlYykgewor
ICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFs
RGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAg
ICAgaW50ZXJwcmV0ZXJUaHJvdyhleGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygxLCBl
eGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIEV4ZWNTdGF0
ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmZXhlYy0+
Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNvbnN0cnVj
dCk7CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFt
ZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93KGV4ZWMpOworICAg
ICAgICBMTElOVF9SRVRVUk5fVFdPKDEsIGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9SRVRVUk5f
VFdPKDAsIGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FjdGl2
YXRpb24pCit7CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gSlNBY3RpdmF0aW9uOjpj
cmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihleGVjLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkpKTsKKyAgICBleGVj
LT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChhY3RpdmF0aW9uKSk7Cisg
ICAgTExJTlRfUkVUVVJOKEpTVmFsdWUoYWN0aXZhdGlvbikpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKK3sKKyAgICBMTElOVF9SRVRVUk4oSlNWYWx1
ZShBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAgICBKU0Z1bmN0aW9uKiBj
b25zdHJ1Y3RvciA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIAorI2lmICFBU1NF
UlRfRElTQUJMRUQKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQVNTRVJU
KGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9y
LCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlmCisgICAgCisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgSlNWYWx1ZSBwcm90byA9IExMSU5UX09QKDIpLmpz
VmFsdWUoKTsKKyAgICBpZiAocHJvdG8uaXNPYmplY3QoKSkKKyAgICAgICAgc3RydWN0dXJlID0g
YXNPYmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGVs
c2UKKyAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCktPmdsb2JhbE9iamVj
dC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oY29uc3Ry
dWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jb252ZXJ0X3RoaXMpCit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QKDEpLmpz
VmFsdWUoKTsKKyAgICBBU1NFUlQodjEuaXNQcmltaXRpdmUoKSk7CisgICAgTExJTlRfUkVUVVJO
KHYxLnRvVGhpc09iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXdfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpCit7CisgICAgTExJ
TlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4oJkxM
SU5UX09QKDIpKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9uZXdfYXJyYXlfYnVmZmVyKQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RBcnJh
eShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIocGNbMl0udS5vcGVyYW5k
KSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdf
cmVnZXhwKQoreworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlZ2V4
cChwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCisgICAgICAg
IExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIGZsYWcgc3VwcGxp
ZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2Jq
ZWN0OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4
cCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KQoreworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oIUxMSU5UX09QKDIpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2VxKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oSlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
cSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjplcXVhbChleGVjLCBM
TElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbnN0cmljdGVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OnN0
cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKQoreworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QKDIpLmpzVmFs
dWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9sZXNzZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTx0
cnVlPihleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcikKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1AoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2dyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0Vx
PGZhbHNlPihleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2luYykKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
ICsgMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYykKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
IC0gMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9pbmMpCit7CisgICAg
ZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAg
ICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCArIDEpOworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVj
KQoreworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIo
ZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQgLSAxKTsKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl90b19qc251bWJlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMiku
anNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uZWdhdGUpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKC1MTElOVF9PUCgyKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Fk
ZCkKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIEpTVmFs
dWUgdjIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBpZiAodjEuaXNTdHJp
bmcoKSkgeworICAgICAgICBMTElOVF9SRVRVUk4oCisgICAgICAgICAgICB2Mi5pc1N0cmluZygp
CisgICAgICAgICAgICA/IGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgYXNTdHJpbmcodjIp
KQorICAgICAgICAgICAgOiBqc1N0cmluZyhleGVjLCBhc1N0cmluZyh2MSksIHYyLnRvUHJpbWl0
aXZlU3RyaW5nKGV4ZWMpKSk7CisgICAgfQorICAgIAorICAgIGlmICh2MS5pc051bWJlcigpICYm
IHYyLmlzTnVtYmVyKCkpCisgICAgICAgIExMSU5UX1JFVFVSTihqc051bWJlcih2MS5hc051bWJl
cigpICsgdjIuYXNOdW1iZXIoKSkpOworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0FkZFNsb3dD
YXNlKGV4ZWMsIHYxLCB2MikpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKQor
eworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1i
ZXIoZXhlYykgKiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKQoreworICAgIExMSU5UX1JFVFVSTihqc051
bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZGl2KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVl
KCkudG9OdW1iZXIoZXhlYykgLyBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVj
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKQoreworICAgIExMSU5UX1JF
VFVSTihqc051bWJlcihmbW9kKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExM
SU5UX09QKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIDw8IExMSU5UX09QX0MoMykuanNWYWx1
ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hp
ZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50
b0ludDMyKGV4ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KQoreworICAgIExMSU5UX1JF
VFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykgPj4gTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2JpdGFuZCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRf
T1AoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgJiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50
b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3IpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b0ludDMy
KGV4ZWMpIHwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgXiBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfYml0bm90KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcih+TExJTlRfT1AoMikuanNW
YWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2No
ZWNrX2hhc19pbnN0YW5jZSkKK3sKKyAgICBKU1ZhbHVlIGJhc2VWYWwgPSBMTElOVF9PUCgyKS5q
c1ZhbHVlKCk7CisjaWZuZGVmIE5ERUJVRworICAgIFR5cGVJbmZvIHR5cGVJbmZvKFVuc3BlY2lm
aWVkVHlwZSk7CisgICAgQVNTRVJUKCFiYXNlVmFsLmlzT2JqZWN0KCkKKyAgICAgICAgICAgfHwg
ISh0eXBlSW5mbyA9IGFzT2JqZWN0KGJhc2VWYWwpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKSku
aW1wbGVtZW50c0hhc0luc3RhbmNlKCkpOworI2VuZGlmCisgICAgTExJTlRfVEhST1coY3JlYXRl
SW52YWxpZFBhcmFtRXJyb3IoZXhlYywgImluc3RhbmNlb2YiLCBiYXNlVmFsKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9mKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluc3RhbmNlT2ZTbG93KGV4ZWMsIExMSU5UX09Q
KDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpLCBMTElOVF9PUCg0KS5qc1ZhbHVl
KCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKQoreworICAg
IEpTVmFsdWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKHYuaXNDZWxsKCkgPyB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5t
YXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkgOiB2LmlzVW5kZWZpbmVkKCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2lzX2Jvb2xlYW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihMTElOVF9PUCgyKS5qc1ZhbHVlKCkuaXNCb29sZWFuKCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2lzX251bWJlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KExMSU5UX09QKDIpLmpzVmFsdWUoKS5pc051bWJlcigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pc19zdHJpbmcpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihpc0pT
U3RyaW5nKExMSU5UX09QKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX29iamVjdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNPYmpl
Y3RUeXBlKExMSU5UX09QKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX2Z1bmN0aW9uKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc0Z1
bmN0aW9uVHlwZShMTElOVF9PUCgyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQ
YXRoczo6b3BJbihleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFs
dWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpCit7CisgICAg
TExJTlRfUkVUVVJOKENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVC
bG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCkKK3sKKyAgICBMTElOVF9SRVRVUk4oCisgICAgICAg
IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlU2tpcCgKKyAgICAgICAgICAgIGV4ZWMsCisgICAg
ICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAor
ICAgICAgICAgICAgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9yZXNvbHZlX2dsb2JhbCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMt
PmNvZGVCbG9jaygpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxv
Y2stPmdsb2JhbE9iamVjdCgpOworICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPmlzR2xvYmFsT2Jq
ZWN0KCkpOworICAgIGludCBwcm9wZXJ0eSA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IHBjWzNdLnUuc3RydWN0dXJlLmdldCgpOworICAgIGludCBvZmZzZXQg
PSBwY1s0XS51Lm9wZXJhbmQ7CisgICAgCisgICAgQVNTRVJUKCghc3RydWN0dXJlKSA9PSAoIW9m
ZnNldCkpOworICAgIEFTU0VSVChzdHJ1Y3R1cmUgIT0gZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUo
KSk7CisgICAgCisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIo
cHJvcGVydHkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCk7CisgICAgCisg
ICAgaWYgKGdsb2JhbE9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkg
eworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpOwor
ICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgJiYgIWdsb2JhbE9iamVjdC0+c3Ry
dWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmIHNsb3Qu
c2xvdEJhc2UoKSA9PSBnbG9iYWxPYmplY3QpIHsKKyAgICAgICAgICAgIHBjWzNdLnUuc3RydWN0
dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksIGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOworICAgICAgICAg
ICAgcGNbNF0gPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBMTElOVF9SRVRVUk4ocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgTExJTlRfVEhST1co
Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9iYXNlKQoreworICAgIElkZW50aWZpZXImIGlkZW50
ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBp
ZiAocGNbM10udS5vcGVyYW5kKSB7CisgICAgICAgIEpTVmFsdWUgYmFzZSA9IEpTQzo6cmVzb2x2
ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgdHJ1ZSk7CisgICAgICAgIGlm
ICghYmFzZSkKKyAgICAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEds
b2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgICAgIExMSU5UX1JF
VFVSTihiYXNlKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKEpTQzo6cmVzb2x2ZUJh
c2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgZmFsc2UpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCit7CisgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgUHJvcGVy
dHlTbG90IHNsb3Qob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVC
bG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFvYmplY3QtPmdl
dFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNy
ZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygp
KSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNv
bHZlX3dpdGhfYmFzZSkKK3sKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6
b3BSZXNvbHZlV2l0aEJhc2UoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNb
M10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
OworICAgIExMSU5UX09QKDIpID0gcmVzdWx0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCit7CisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhUaGlzKGV4ZWMsIGV4ZWMtPmNv
ZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCkK
K3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElk
ZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7
CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgUHJv
cGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZh
bHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7
CisgICAgTExJTlRfT1AoMSkgPSByZXN1bHQ7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgp
CisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKQorICAgICAgICAmJiBzbG90LnNsb3RCYXNl
KCkgPT0gYmFzZVZhbHVlCisgICAgICAgICYmIHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0g
UHJvcGVydHlTbG90OjpWYWx1ZSkgeworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2Vs
bCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBi
YXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+
aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlw
ZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgeworICAgICAgICAgICAgcGNbNF0u
dS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHBjWzVd
LnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAg
ICAgIH0KKyAgICB9CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJs
b2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVl
KTsKKyAgICBMTElOVF9SRVRVUk4oYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKQoreworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQg
PSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGlk
ZW50LCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOworICAgIAorICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xv
dC5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0g
YmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VD
ZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1Vu
Y2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5m
bygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpCisgICAgICAgICAgICAmJiBiYXNlQ2VsbCA9
PSBzbG90LmJhc2UoKSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc2xvdC50eXBl
KCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgeworICAgICAgICAgICAgICAgIGlm
ICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAgICAgICAgICAgICAgICAgICBub3Jt
YWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlz
T2JqZWN0KCkpOworICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAg
ICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOworICAgICAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7Cisg
ICAgICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KSwgc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOworICAgICAgICAgICAgICAgICAgICBwY1s1XS51
Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICBwY1s2XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAg
ICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0
cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzddLnUuc3RydWN0dXJlQ2hhaW4uc2V0
KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBj
WzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsK
KyAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAg
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9m
ZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
ZGVsX2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2Nr
KCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9P
YmplY3QoZXhlYyk7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRh
YmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRp
ZmllcihwY1szXS51Lm9wZXJhbmQpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAg
ICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAg
IExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9w
ZXJ0eS4iKSk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQor
CitpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZh
bHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKK3sKKyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0Nl
bGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVz
dWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkoZXhlYywgYXNTdHJp
bmcoc3Vic2NyaXB0KS0+dmFsdWUoZXhlYykpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisgICAgCisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVp
bnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNTdHJpbmco
YmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAg
ICAgICAgIHJldHVybiBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJy
YXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpCisgICAgICAgICAgICByZXR1cm4gYXNC
eXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBpKTsKKyAgICB9CisgICAgCisgICAgSWRlbnRp
ZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYykpOworICAgIHJldHVy
biBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2dldF9ieV92YWwpCit7CisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIExM
SU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQoreworICAgIEpTVmFsdWUg
YXJndW1lbnRzID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICghYXJndW1lbnRzKSB7
CisgICAgICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYyk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBMTElO
VF9PUCgyKSA9IGFyZ3VtZW50czsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKGdldEJ5
VmFsKGV4ZWMsIGFyZ3VtZW50cywgTExJTlRfT1AoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpCit7CisgICAgTExJTlRfUkVUVVJOKGdl
dEJ5VmFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFsKQoreworICAgIEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1
YnNjcmlwdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJ
TlRfT1AoMykuanNWYWx1ZSgpOworICAgIAorICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUlu
dDMyKCkpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAg
ICAgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUpKSB7CisgICAgICAgICAgICBKU0FycmF5KiBq
c0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNh
blNldEluZGV4KGkpKQorICAgICAgICAgICAgICAgIGpzQXJyYXktPnNldEluZGV4KGdsb2JhbERh
dGEsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBKU0FycmF5
OjpwdXRCeUluZGV4KGpzQXJyYXksIGV4ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIExMSU5U
X0VORCgpOworICAgICAgICB9CisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkK
KyAgICAgICAgICAgICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkp
KSB7CisgICAgICAgICAgICBKU0J5dGVBcnJheSoganNCeXRlQXJyYXkgPSBhc0J5dGVBcnJheShi
YXNlVmFsdWUpOworICAgICAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkgeworICAgICAgICAg
ICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5hc0ludDMyKCkpOworICAgICAg
ICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHZh
bHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgo
aSwgdmFsdWUuYXNOdW1iZXIoKSk7CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpLCB2YWx1
ZSk7CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHBy
b3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7CisgICAgTExJTlRfQ0hFQ0tf
RVhDRVBUSU9OKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZXhlYy0+Y29kZUJsb2NrKCkt
PmlzU3RyaWN0TW9kZSgpKTsKKyAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIHByb3BlcnR5LCB2YWx1
ZSwgc2xvdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9kZWxfYnlfdmFsKQoreworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMikuanNW
YWx1ZSgpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGV4
ZWMpOworICAgIAorICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1AoMykuanNWYWx1ZSgp
OworICAgIAorICAgIGJvb2wgY291bGREZWxldGU7CisgICAgCisgICAgdWludDMyX3QgaTsKKyAg
ICBpZiAoc3Vic2NyaXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNl
T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYmFzZU9iamVjdCwg
ZXhlYywgaSk7CisgICAgZWxzZSB7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVj
KSk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERlbGV0
ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBl
eGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAg
CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KQoreworICAgIExMSU5UX09QKDEpLmpzVmFs
dWUoKS5wdXQoZXhlYywgcGNbMl0udS5vcGVyYW5kLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpOwor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2dldHRl
cikKK3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAg
IEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAg
ICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJd
LnUub3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpzVmFsdWUoKS5pc09iamVjdCgp
KTsKKyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVHZXR0ZXIoYmFzZU9iaiwgZXhl
YywgaWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUoKSksIDApOworICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X3NldHRlcikKK3sKKyAg
ICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIEpTT2JqZWN0
KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBJZGVudGlm
aWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFu
ZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBi
YXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVTZXR0ZXIoYmFzZU9iaiwgZXhlYywgaWRlbnQs
IGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUoKSksIDApOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam1wX3Njb3BlcykKK3sKKyAgICB1bnNpZ25l
ZCBjb3VudCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBTY29wZUNoYWluTm9kZSogdG1wID0gZXhl
Yy0+c2NvcGVDaGFpbigpOworICAgIHdoaWxlIChjb3VudC0tKQorICAgICAgICB0bXAgPSB0bXAt
PnBvcCgpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4odG1wKTsKKyAgICBwYyArPSBwY1syXS51
Lm9wZXJhbmQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qdHJ1ZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfanRydWUsIExMSU5UX09QKDEpLmpzVmFs
dWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZh
bHNlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZmFsc2UsICFMTElOVF9PUCgxKS5qc1ZhbHVl
KCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNz
KQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzcywganNMZXNzPHRydWU+KGV4ZWMsIExMSU5U
X09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmxl
c3MsICFqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRl
cikKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXIsIGpzTGVzczxmYWxzZT4oZXhlYywg
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpCit7CisgICAgTExJTlRfQlJBTkNI
KG9wX2puZ3JlYXRlciwgIWpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qbGVzc2VxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzc2VxLCBqc0xlc3NFcTx0
cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKQoreworICAgIExM
SU5UX0JSQU5DSChvcF9qbmxlc3NlcSwgIWpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0Mo
MSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0
ZXJlcSwganNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5n
cmVhdGVyZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlcmVxLCAhanNMZXNzRXE8
ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSkKK3sKKyAg
ICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QKDMpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQo
c2NydXRpbmVlLmlzRG91YmxlKCkpOworICAgIGRvdWJsZSB2YWx1ZSA9IHNjcnV0aW5lZS5hc0Rv
dWJsZSgpOworICAgIGludDMyX3QgaW50VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1
ZSk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKHZh
bHVlID09IGludFZhbHVlKSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+aW1tZWRpYXRlU3dpdGNoSnVt
cFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoaW50VmFsdWUsIGRlZmF1bHRP
ZmZzZXQpOworICAgIH0gZWxzZQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0cmluZykK
K3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QKDMpLmpzVmFsdWUoKTsKKyAgICBp
bnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAoIXNjcnV0aW5lZS5p
c1N0cmluZygpKQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIGVsc2UgeworICAg
ICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBw
YyArPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9m
ZnNldEZvclZhbHVlKGFzU3RyaW5nKHNjcnV0aW5lZSktPnZhbHVlKGV4ZWMpLmltcGwoKSwgZGVm
YXVsdE9mZnNldCk7CisgICAgfQorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbmV3X2Z1bmMpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVj
LT5jb2RlQmxvY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEZ1bmN0
aW9uQ29kZQorICAgICAgICAgICB8fCAhY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkK
KyAgICAgICAgICAgfHwgZXhlYy0+dW5jaGVja2VkUihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdp
c3RlcigpKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX1JFVFVSTihjb2RlQmxvY2stPmZ1bmN0aW9u
RGVjbChwY1syXS51Lm9wZXJhbmQpLT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmNfZXhwKQoreworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzJdLnUub3BlcmFuZCk7
CisgICAgSlNGdW5jdGlvbiogZnVuYyA9IGZ1bmN0aW9uLT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3Bl
Q2hhaW4oKSk7CisgICAgCisgICAgaWYgKCFmdW5jdGlvbi0+bmFtZSgpLmlzTnVsbCgpKSB7Cisg
ICAgICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIGZ1bmN0aW9uU2NvcGVPYmplY3QgPSBKU1N0YXRp
Y1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgZnVuY3Rpb24tPm5hbWUoKSwgZnVuYywgUmVhZE9u
bHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgZnVuYy0+c2V0U2NvcGUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBmdW5jLT5zY29wZSgpLT5wdXNoKGZ1bmN0aW9uU2NvcGVPYmplY3QpKTsKKyAgICB9Cisg
ICAgCisgICAgTExJTlRfUkVUVVJOKGZ1bmMpOworfQorCitzdGF0aWMgSGVscGVyUmV0dXJuVHlw
ZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywg
SlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgIEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisKKyAgICBleGVjQ2FsbGVlLT5z
ZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29k
ZUJsb2NrKDApOworCisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
Y2FsbGVlLCBjYWxsRGF0YSk7CisgICAgCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxs
VHlwZUpTKTsKKyAgICAKKyAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSG9zdCkgewor
ICAgICAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICAgICAg
CisgICAgICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgICAgICB9CisgICAg
CisgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpOworICAgICAgICBMTElO
VF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihleGVjLCBjYWxs
ZWUpKTsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAg
ICAKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQ29uc3RydWN0VHlwZSBj
b25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShjYWxsZWUsIGNvbnN0cnVjdERhdGEpOwor
ICAgIAorICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGVKUyk7CisgICAg
CisgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZUhvc3QpIHsKKyAgICAgICAg
Z2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1
Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgIExMSU5UX0NBTExf
UkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSk7CisgICAgfQorICAgIAorICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlID09
IENvbnN0cnVjdFR5cGVOb25lKTsKKyAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVh
dGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKK30KKworaW5saW5lIEhlbHBl
clJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24q
IHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSwg
TExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCit7CisgICAgQVNTRVJUKCFleHBl
Y3RlZEZ1bmN0aW9uID09ICFtYWNoaW5lQ29kZSk7CisgICAgCisgICAgSlNDZWxsKiBjYWxsZWVB
c0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSk7CisgICAgaWYgKCFj
YWxsZWVBc0Z1bmN0aW9uQ2VsbCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWND
YWxsZWUsIHBjLCBjYWxsZWVBc1ZhbHVlLCBraW5kKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBj
YWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBleGVjQ2FsbGVl
LT5zZXRTY29wZUNoYWluKGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKSk7CisgICAgRXhlY3V0YWJs
ZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAgICAKKyAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7
CisgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGNvZGVQdHIg
PSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7
CisgICAgZWxzZSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAg
ICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVj
Q2FsbGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOworICAgICAgICBpZiAoZXJyb3IpCisgICAg
ICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCksIHBjLCBl
cnJvcik7CisgICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRl
ZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpKQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2Vu
ZXJhdGVkSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9y
KGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgfQorICAgIAorICAgIGlmIChjYWxsTGlua0lu
Zm8pIHsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5jYWxsZWUuc2V0KGV4ZWNDYWxsZWUtPmdsb2Jh
bERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlQXNGdW5jdGlvbkNl
bGwpOworICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZXQgPSBjb2RlUHRyOwor
ICAgICAgICBpZiAoY29kZUJsb2NrKQorICAgICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21p
bmdDYWxsKGNhbGxMaW5rSW5mbyk7CisgICAgfQorICAgIAorICAgIExMSU5UX0NBTExfUkVUVVJO
KGV4ZWNDYWxsZWUsIHBjLCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworfQorCitpbmxp
bmUgSGVscGVyUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0
aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIC8vIFRoaXMgbmVl
ZHMgdG86CisgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lLgorICAgIC8vIC0gRmlndXJlIG91
dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gSWYg
cG9zc2libGUsIGxpbmsgdGhlIGNhbGwncyBpbmxpbmUgY2FjaGUuCisgICAgLy8gLSBSZXR1cm4g
YSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwg
ZnJhbWUuCisgICAgCisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSkuanNW
YWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51
Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lz
dGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2Fs
bGVyRnJhbWUoZXhlYyk7CisgICAgCisgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBw
Yywga2luZCwgY2FsbGVlQXNWYWx1ZSwgJnBjWzRdLnUuanNDZWxsLCAmcGNbNV0udS5wb2ludGVy
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpCit7CisgICAgcmV0dXJuIGdl
bmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jb25zdHJ1Y3QpCit7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBD
b2RlRm9yQ29uc3RydWN0KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFy
YXJncykKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBm
cmFtZSB3aGlsZSByZXNwZWN0aW5nIHRoZSB2YXJpYWJsZSBhcmd1bWVudHMuCisgICAgLy8gLSBG
aWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAg
Ly8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0
aGUgbmV3IGNhbGwgZnJhbWUuCisgICAgCisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJ
TlRfT1AoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGxv
YWRWYXJhcmdzKAorICAgICAgICBleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVy
LT5yZWdpc3RlckZpbGUoKSwKKyAgICAgICAgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9P
UCgzKS5qc1ZhbHVlKCksIHBjWzRdLnUub3BlcmFuZCk7CisgICAgTExJTlRfQ0FMTF9DSEVDS19F
WENFUFRJT04oZXhlYywgcGMpOworICAgIAorICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVn
aXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRD
YWxsZXJGcmFtZShleGVjKTsKKyAgICAKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUs
IHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jYWxsX2V2YWwpCit7CisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRf
T1AoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMg
KyBwY1szXS51Lm9wZXJhbmQ7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+
Z2xvYmFsRGF0YSgpOworICAgIAorICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKHBjWzJdLnUub3BlcmFuZCk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJh
bWUoZXhlYyk7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxl
ZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+
c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRSZXR1cm5QQyhiaXR3aXNlX2Nhc3Q8
SW5zdHJ1Y3Rpb24qPigmbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICBleGVjQ2Fs
bGVlLT5zZXRDb2RlQmxvY2soMCk7CisgICAgCisgICAgaWYgKCFpc0hvc3RGdW5jdGlvbihjYWxs
ZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpCisgICAgICAgIHJldHVybiBzZXRVcENhbGwoZXhl
Y0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKKyAgICAKKyAgICBnbG9i
YWxEYXRhLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBldmFsKGV4ZWNDYWxsZWUpOworICAgIExMSU5U
X0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFy
X29mZl9hY3RpdmF0aW9uKQoreworICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNG
dWxsU2NvcGVDaGFpbigpKTsKKyAgICBKU1ZhbHVlIGFjdGl2YXRpb25WYWx1ZSA9IExMSU5UX09Q
KDEpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFjdGl2YXRpb25WYWx1ZSkgeworICAgICAgICBpZiAo
SlNWYWx1ZSB2ID0gZXhlYy0+cmVnaXN0ZXJzKClbdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVy
KHBjWzJdLnUub3BlcmFuZCldLmpzVmFsdWUoKSkgeworICAgICAgICAgICAgaWYgKCFleGVjLT5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICAgICAgYXNBcmd1bWVudHMo
diktPnRlYXJPZmYoZXhlYyk7CisgICAgICAgIH0KKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAg
fQorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGFzQWN0aXZhdGlvbihhY3RpdmF0aW9u
VmFsdWUpOworICAgIGFjdGl2YXRpb24tPnRlYXJPZmYoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAg
ICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+cmVnaXN0ZXJzKClbdW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKHBjWzJdLnUub3BlcmFuZCldLmpzVmFsdWUoKSkKKyAgICAgICAgYXNBcmd1bWVudHMo
diktPmRpZFRlYXJPZmZBY3RpdmF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgYWN0aXZhdGlvbik7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29m
Zl9hcmd1bWVudHMpCit7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1l
bnRzKCkgJiYgIWV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAg
IGFzQXJndW1lbnRzKGV4ZWMtPnJlZ2lzdGVycygpW3VubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rl
cihwY1sxXS51Lm9wZXJhbmQpXS5qc1ZhbHVlKCkpLT50ZWFyT2ZmKGV4ZWMpOworICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KQoreworICAgIExM
SU5UX1JFVFVSTihqc1N0cmluZyhleGVjLCAmTExJTlRfT1AoMiksIHBjWzNdLnUub3BlcmFuZCkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZlKQoreworICAgIExM
SU5UX1JFVFVSTihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9QcmltaXRpdmUoZXhlYykpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X3BuYW1lcykKK3sKKyAgICBKU1ZhbHVlIHYg
PSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKHYuaXNVbmRlZmluZWRPck51bGwoKSkg
eworICAgICAgICBwYyArPSBwY1s1XS51Lm9wZXJhbmQ7CisgICAgICAgIExMSU5UX0VORCgpOwor
ICAgIH0KKyAgICAKKyAgICBKU09iamVjdCogbyA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBvLT5zdHJ1Y3R1cmUoKTsKKyAgICBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gc3RydWN0dXJlLT5lbnVtZXJhdGlvbkNh
Y2hlKCk7CisgICAgaWYgKCFqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yIHx8IGpzUHJvcGVydHlOYW1l
SXRlcmF0b3ItPmNhY2hlZFByb3RvdHlwZUNoYWluKCkgIT0gc3RydWN0dXJlLT5wcm90b3R5cGVD
aGFpbihleGVjKSkKKyAgICAgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IEpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBvKTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9IEpT
VmFsdWUoanNQcm9wZXJ0eU5hbWVJdGVyYXRvcik7CisgICAgTExJTlRfT1AoMikgPSBKU1ZhbHVl
KG8pOworICAgIExMSU5UX09QKDMpID0gUmVnaXN0ZXI6OndpdGhJbnQoMCk7CisgICAgTExJTlRf
T1AoNCkgPSBSZWdpc3Rlcjo6d2l0aEludChqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5zaXplKCkp
OworICAgIAorICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X3BuYW1lcyk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXh0X3BuYW1lKQorewor
ICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoTExJTlRfT1AoMikuanNWYWx1ZSgpKTsKKyAg
ICBKU1N0cmluZyogcHJvcGVydHkgPSBhc1N0cmluZyhMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOwor
ICAgIGlmIChiYXNlLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5
LT52YWx1ZShleGVjKSkpKSB7CisgICAgICAgIC8vIEdvIHRvIHRhcmdldC4KKyAgICAgICAgcGMg
Kz0gcGNbNl0udS5vcGVyYW5kOworICAgIH0gLy8gRWxzZSwgZG9uJ3QgY2hhbmdlIHRoZSBQQywg
c28gdGhlIGludGVycHJldGVyIHdpbGwgcmVsb29wLgorICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSkKK3sKKyAgICBKU1ZhbHVlIHYgPSBM
TElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIExMSU5UX09QKDEpID0g
bzsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChvKSk7
CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
b3Bfc2NvcGUpCit7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkt
PnBvcCgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3B1c2hfbmV3X3Njb3BlKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIHNjb3BlID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3Jl
YXRlKGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLCBMTElOVF9P
UCgzKS5qc1ZhbHVlKCksIERvbnREZWxldGUpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhl
Yy0+c2NvcGVDaGFpbigpLT5wdXNoKHNjb3BlKSk7CisgICAgTExJTlRfUkVUVVJOKHNjb3BlKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KQoreworICAgIExMSU5UX1RIUk9X
KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90
aHJvd19yZWZlcmVuY2VfZXJyb3IpCit7CisgICAgTExJTlRfVEhST1coY3JlYXRlUmVmZXJlbmNl
RXJyb3IoZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9TdHJpbmcoZXhlYykpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKQoreworICAgIGludCBkZWJ1Z0hvb2tJ
RCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5k
OworICAgIGludCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5n
bG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9v
a0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIAorICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwp
Cit7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT53aWxsRXhl
Y3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKK3sKKyAgICAoKlBy
b2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPmRpZEV4ZWN1dGUoZXhlYywgTExJ
TlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRIZWxwZXJzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRIZWxwZXJzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRIZWxwZXJz
X2gKKyNkZWZpbmUgTExJbnRIZWxwZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVj
dGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKwordHlwZWRlZiBpbnQ2NF90IEhlbHBlclJldHVy
blR5cGU7CisKKyNkZWZpbmUgTExJTlRfSEVMUEVSX0RFQ0wobmFtZSkgXAorICAgIGV4dGVybiAi
QyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF8jI25hbWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVj
dGlvbiogcGMpCisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcik7CitMTElOVF9IRUxQRVJf
REVDTChlbnRyeV9vc3JfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3Jf
YXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChsb29wX29zcik7CitMTElOVF9IRUxQRVJf
REVDTChyZXBsYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NyZWF0ZV9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVf
YXJndW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY29udmVydF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9uZXdfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25ld19yZWdleHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X25lcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25zdHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3ByZV9kZWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9f
anNudW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfYWRkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1Yik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2xzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRh
bmQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9iaXR4b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pbnN0YW5jZW9mKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2Yp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfaXNfYm9vbGVhbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVt
YmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19zdHJpbmcpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2lzX29iamVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVu
Y3Rpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9yZXNvbHZlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXAp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vu
c3VyZV9wcm9wZXJ0eV9leGlzdHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVf
d2l0aF9iYXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHV0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2dldF9hcmd1bWVudF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9w
bmFtZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0
X2J5X2luZGV4KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfc2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qbXBfc2NvcGVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qdHJ1ZSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfamZhbHNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVz
cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qbmxlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3N3aXRjaF9pbW0pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9jaGFy
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9uZXdfZnVuYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1
bmNfZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFy
YXJncyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90ZWFyX29mZl9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNh
dCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZlKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXh0
X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1
c2hfbmV3X3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdyk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9kZWJ1Zyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxs
X2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpOworCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50SGVscGVyc19oCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTElu
dE9mZmxpbmVBc21Db25maWdfaAorI2RlZmluZSBMTEludE9mZmxpbmVBc21Db25maWdfaAorCisj
aW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4NikKKyNkZWZpbmUgT0ZGTElORV9B
U01fWDg2IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisjZW5kaWYKKworI2lm
IENQVShBUk12NykKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMQorI2Vsc2UKKyNkZWZpbmUg
T0ZGTElORV9BU01fQVJNdjcgMAorI2VuZGlmCisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisjZGVm
aW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVf
QVNNX0FTU0VSVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgQ1BVKEJJR19FTkRJQU4pCisjZGVm
aW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01f
QklHX0VORElBTiAwCisjZW5kaWYKKworI2lmIEVOQUJMRShMTElOVF9PU1JfVE9fSklUKQorI2Rl
ZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FT
TV9KSVRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIExMSU5UX0VYRUNVVElPTl9UUkFDSU5HCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDEKKyNlbHNlCisjZGVmaW5lIE9G
RkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNlbmRpZgorCisjZW5kaWYgLy8gTExJbnRP
ZmZsaW5lQXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQWxsb2NhdGlvblNw
YWNlLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgor
I2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJ
VFN0dWJzLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAi
SlN0eXBlSW5mby5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKKyNpbmNsdWRlICJK
dW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRl
ICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgorI2luY2x1ZGUgIlNj
b3BlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVD
aGFpbi5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgT0ZGTElORV9BU01fT0ZG
U0VUT0YoY2xhenosIGZpZWxkKSBPQkpFQ1RfT0ZGU0VUT0YoY2xhenosIGZpZWxkKQorCitjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCogZHVtbXkoKTsKK307CisKK2NvbnN0IHVuc2lnbmVkKiBMTEludE9mZnNldHNFeHRyYWN0
b3I6OmR1bW15KCkKK3sKKyNpbmNsdWRlICJMTEludERlc2lyZWRPZmZzZXRzLmgiCisgICAgcmV0
dXJuIGV4dHJhY3RvclRhYmxlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworaW50IG1haW4o
aW50LCBjaGFyKiopCit7CisgICAgLy8gT3V0IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0aW9uLCBt
YWtlIHN1cmUgdGhhdCBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkgaXMgbGl2ZSwKKyAg
ICAvLyBhbmQgdGhlIGV4dHJhY3RvclRhYmxlIGlzIGxpdmUsIHRvby4KKyAgICBwcmludGYoIiVw
XG4iLCBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSk7CisgICAgcmV0dXJuIDA7
Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3Mu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJM
TEludFRodW5rcy5oIgorCisjaW5jbHVkZSAiSlNJbnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRlICJM
b3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQg
eworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCB2b2lkICgqdGFyZ2V0KSgpKQoreworICAgIEpTSW50ZXJmYWNl
SklUIGppdDsKKyAgICAKKyAgICAvLyBGSVhNRTogdGhlcmUncyBwcm9iYWJseSBhIGJldHRlciB3
YXkgdG8gZG8gaXQgb24gWDg2LCBidXQgSSdtIG5vdCBzdXJlIEkgY2FyZS4KKyAgICBqaXQubW92
ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdl
dCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDApOworICAgIGppdC5qdW1wKEpTSW50ZXJmYWNlSklU
OjpyZWdUMCk7CisgICAgCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwg
JmppdCk7CisgICAgcmV0dXJuIHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOworfQorCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKTsKK30KKwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
byhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5VGh1bmtHZW5lcmF0
b3IoSlNHbG9iYWxEYXRhKikKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8o
Z2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOworfQorCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eVRodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSopCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRv
KGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spOwor
fQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9i
YWxEYXRhKikKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0
YSwgbGxpbnRfZXZhbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9n
cmFtRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKQoreworICAgIHJldHVybiBnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKTsK
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludFRodW5rc19oCisjZGVmaW5lIExMSW50VGh1bmtzX2gKKworI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyQ29kZVJlZi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxE
YXRhOworCituYW1lc3BhY2UgTExJbnQgeworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rp
b25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9i
YWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlUaHVu
a0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlv
bkZvckNvbnN0cnVjdEFyaXR5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxE
YXRhKik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnRU
aHVua3NfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
MjczIEBACisjIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyMg
Q3Jhc2ggY291cnNlIG9uIHRoZSBsYW5ndWFnZSB0aGF0IHRoaXMgaXMgd3JpdHRlbiBpbiAod2hp
Y2ggSSBqdXN0IGNhbGwKKyMgImFzc2VtYmx5IiBldmVuIHRob3VnaCBpdCdzIG1vcmUgdGhhbiB0
aGF0KToKKyMKKyMgLSBNb3N0bHkgZ2FzLXN0eWxlIG9wZXJhbmQgb3JkZXJpbmcuIFRoZSBsYXN0
IG9wZXJhbmQgdGVuZHMgdG8gYmUgdGhlCisjICAgZGVzdGluYXRpb24uIFNvICJhIDo9IGIiIGlz
IHdyaXR0ZW4gYXMgIm1vdiBiLCBhIi4gQnV0IHVubGlrZSBnYXMsCisjICAgY29tcGFyaXNvbnMg
YXJlIGluLW9yZGVyLCBzbyAiaWYgKGEgPCBiKSIgaXMgd3JpdHRlbiBhcworIyAgICJiaWx0IGEs
IGIsIC4uLiIuCisjCisjIC0gImIiID0gYnl0ZSwgImgiID0gMTYtYml0IHdvcmQsICJpIiA9IDMy
LWJpdCB3b3JkLCAicCIgPSBwb2ludGVyLgorIyAgIEN1cnJlbnRseSB0aGlzIGlzIGp1c3QgMzIt
Yml0IHNvICJpIiBhbmQgInAiIGFyZSBpbnRlcmNoYW5nZWFibGUKKyMgICBleGNlcHQgd2hlbiBh
biBvcCBzdXBwb3J0cyBvbmUgYnV0IG5vdCB0aGUgb3RoZXIuCisjCisjIC0gSW4gZ2VuZXJhbCwg
dmFsaWQgb3BlcmFuZHMgZm9yIG1hY3JvIGludm9jYXRpb25zIGFuZCBpbnN0cnVjdGlvbnMgYXJl
CisjICAgcmVnaXN0ZXJzIChlZyAidDAiKSwgYWRkcmVzc2VzIChlZyAiNFt0MF0iKSwgYmFzZS1p
bmRleCBhZGRyZXNzZXMKKyMgICAoZWcgIjdbdDAsIHQxLCAyXSIpLCBhYnNvbHV0ZSBhZGRyZXNz
ZXMgKGVnICIweGEwMDAwMDAwW10iKSwgb3IgbGFiZWxzCisjICAgKGVnICJfZm9vIiBvciAiLmZv
byIpLiBNYWNybyBpbnZvY2F0aW9ucyBjYW4gYWxzbyB0YWtlIGFub255bW91cworIyAgIG1hY3Jv
cyBhcyBvcGVyYW5kcy4gSW5zdHJ1Y3Rpb25zIGNhbm5vdCB0YWtlIGFub255bW91cyBtYWNyb3Mu
CisjCisjIC0gTGFiZWxzIG11c3QgaGF2ZSBuYW1lcyB0aGF0IGJlZ2luIHdpdGggZWl0aGVyICJf
IiBvciAiLiIuICBBICIuIiBsYWJlbAorIyAgIGlzIGxvY2FsIGFuZCBnZXRzIHJlbmFtZWQgYmVm
b3JlIGNvZGUgZ2VuIHRvIG1pbmltaXplIG5hbWVzcGFjZQorIyAgIHBvbGx1dGlvbi4gQSAiXyIg
bGFiZWwgaXMgYW4gZXh0ZXJuIHN5bWJvbCAoaS5lLiAiLmdsb2JsIikuIFRoZSAiXyIKKyMgICBt
YXkgb3IgbWF5IG5vdCBiZSByZW1vdmVkIGR1cmluZyBjb2RlIGdlbiBkZXBlbmRpbmcgb24gd2hl
dGhlciB0aGUgYXNtCisjICAgY29udmVudGlvbnMgZm9yIEMgbmFtZSBtYW5nbGluZyBvbiB0aGUg
dGFyZ2V0IHBsYXRmb3JtIG1hbmRhdGUgYSAiXyIKKyMgICBwcmVmaXguCisjCisjIC0gQSAibWFj
cm8iIGlzIGEgbGFtYmRhIGV4cHJlc3Npb24sIHdoaWNoIG1heSBiZSBlaXRoZXIgYW5vbnltb3Vz
IG9yCisjICAgbmFtZWQuIEJ1dCB0aGlzIGhhcyBjYXZlYXRzLiAibWFjcm8iIGNhbiB0YWtlIHpl
cm8gb3IgbW9yZSBhcmd1bWVudHMsCisjICAgd2hpY2ggbWF5IGJlIG1hY3JvcyBvciBhbnkgdmFs
aWQgb3BlcmFuZHMsIGJ1dCBpdCBjYW4gb25seSByZXR1cm4KKyMgICBjb2RlLiBCdXQgeW91IGNh
biBkbyBUdXJpbmctY29tcGxldGUgdGhpbmdzIHZpYSBjb250aW51YXRpb24gcGFzc2luZworIyAg
IHN0eWxlOiAibWFjcm8gZm9vIChhLCBiKSBiKGEpIGVuZCBmb28oZm9vLCBmb28pIi4gQWN0dWFs
bHksIGRvbid0IGRvCisjICAgdGhhdCwgc2luY2UgeW91J2xsIGp1c3QgY3Jhc2ggdGhlIGFzc2Vt
Ymxlci4KKyMKKyMgLSBBbiAiaWYiIGlzIGEgY29uZGl0aW9uYWwgb24gc2V0dGluZ3MuIEFueSBp
ZGVudGlmaWVyIHN1cHBsaWVkIGluIHRoZQorIyAgIHByZWRpY2F0ZSBvZiBhbiAiaWYiIGlzIGFz
c3VtZWQgdG8gYmUgYSAjZGVmaW5lIHRoYXQgaXMgYXZhaWxhYmxlCisjICAgZHVyaW5nIGNvZGUg
Z2VuLiBTbyB5b3UgY2FuJ3QgdXNlICJpZiIgZm9yIGNvbXB1dGF0aW9uIGluIGEgbWFjcm8sIGJ1
dAorIyAgIHlvdSBjYW4gdXNlIGl0IHRvIHNlbGVjdCBkaWZmZXJlbnQgcGllY2VzIG9mIGNvZGUg
Zm9yIGRpZmZlcmVudAorIyAgIHBsYXRmb3Jtcy4KKyMKKyMgLSBBcmd1bWVudHMgdG8gbWFjcm9z
IGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgcmF0aGVyIHRoYW4gZHluYW1pYyBzY29waW5nLgorIyAg
IENvbnN0J3MgYWxzbyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIGFuZCBtYXkgb3ZlcnJpZGUgKGhp
ZGUpIGFyZ3VtZW50cworIyAgIG9yIG90aGVyIGNvbnN0cy4gQWxsIHZhcmlhYmxlcyAoYXJndW1l
bnRzIGFuZCBjb25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAgIHRvIG9wZXJhbmRzLiBBZGRpdGlv
bmFsbHksIGFyZ3VtZW50cyAoYnV0IG5vdCBjb25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAgIHRv
IG1hY3Jvcy4KKworCisjIFRoZXNlIGRlY2xhcmF0aW9ucyBtdXN0IG1hdGNoIGludGVycHJldGVy
L1JlZ2lzdGVyRmlsZS5oLgorY29uc3QgQ2FsbEZyYW1lSGVhZGVyU2l6ZSA9IDQ4Citjb25zdCBB
cmd1bWVudENvdW50ID0gLTQ4Citjb25zdCBDYWxsZXJGcmFtZSA9IC00MAorY29uc3QgQ2FsbGVl
ID0gLTMyCitjb25zdCBTY29wZUNoYWluID0gLTI0Citjb25zdCBSZXR1cm5QQyA9IC0xNgorY29u
c3QgQ29kZUJsb2NrID0gLTgKKworIyBEZWNsYXJlIHNvbWUgYWxpYXNlcyBmb3IgdGhlIHJlZ2lz
dGVycyB3ZSB3aWxsIHVzZS4KK2NvbnN0IFBDID0gdDQKKworIyBPZmZzZXRzIG5lZWRlZCBmb3Ig
cmVhc29uaW5nIGFib3V0IHZhbHVlIHJlcHJlc2VudGF0aW9uLgoraWYgQklHX0VORElBTgorICAg
IGNvbnN0IFRhZ09mZnNldCA9IDAKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gNAorZWxzZQor
ICAgIGNvbnN0IFRhZ09mZnNldCA9IDQKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gMAorZW5k
CisKKyMgVmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgorY29uc3QgSW50MzJUYWcgPSAt
MQorY29uc3QgQm9vbGVhblRhZyA9IC0yCitjb25zdCBOdWxsVGFnID0gLTMKK2NvbnN0IFVuZGVm
aW5lZFRhZyA9IC00Citjb25zdCBDZWxsVGFnID0gLTUKK2NvbnN0IEVtcHR5VmFsdWVUYWcgPSAt
NgorY29uc3QgRGVsZXRlZFZhbHVlVGFnID0gLTcKK2NvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRW
YWx1ZVRhZworCisjIFR5cGUgY29uc3RhbnRzLgorY29uc3QgU3RyaW5nVHlwZSA9IDUKK2NvbnN0
IE9iamVjdFR5cGUgPSAxMAorCisjIFR5cGUgZmxhZ3MgY29uc3RhbnRzLgorY29uc3QgTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IDEKK2NvbnN0IEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDIKK2Nv
bnN0IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSA4CisKKyMgSGVhcCBhbGxvY2F0aW9u
IGNvbnN0YW50cy4KK2NvbnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9IDEKKworIyBC
eXRlY29kZSBvcGVyYW5kIGNvbnN0YW50cy4KK2NvbnN0IEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4ID0gMHg0MDAwMDAwMAorCisjIENvZGUgdHlwZSBjb25zdGFudHMuCitjb25zdCBHbG9iYWxD
b2RlID0gMAorY29uc3QgRXZhbENvZGUgPSAxCitjb25zdCBGdW5jdGlvbkNvZGUgPSAyCisKKyMg
VGhlIGludGVycHJldGVyIHN0ZWFscyB0aGUgdGFnIHdvcmQgb2YgdGhlIGFyZ3VtZW50IGNvdW50
LgorY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQKKworIyBU
aGlzIG11c3QgbWF0Y2ggd3RmL1ZlY3Rvci5oLgorY29uc3QgVmVjdG9yU2l6ZU9mZnNldCA9IDAK
K2NvbnN0IFZlY3RvckJ1ZmZlck9mZnNldCA9IDQKKworIyBTdHJpbmcgZmxhZ3MuCitjb25zdCBI
YXNoRmxhZ3M4Qml0QnVmZmVyID0gNjQKKworIyBVdGlsaXRpZXMKK21hY3JvIGNyYXNoKCkKKyAg
ICBzdG9yZWkgMCwgMHhiYmFkYmVlZltdCisgICAgbW92ZSAwLCB0MAorICAgIGNhbGwgdDAKK2Vu
ZAorCittYWNybyBhc3NlcnQoYXNzZXJ0aW9uKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAg
ICAgIGFzc2VydGlvbigub2spCisgICAgICAgIGNyYXNoKCkKKyAgICAub2s6CisgICAgZW5kCitl
bmQKKworbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVn
aXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBsciwgZGVzdGluYXRpb25SZWdpc3Rl
cgorICAgIGVsc2lmIFg4NgorICAgICAgICBwb3AgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVs
c2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyByZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybihzb3VyY2VSZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBt
b3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgorICAgIGVsc2lmIFg4NgorICAgICAgICBwdXNoIHNvdXJj
ZVJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3Jv
IGRpc3BhdGNoKGFkdmFuY2UpCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMKKyAgICBqbXAgW1BD
XQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQorICAgIGxvYWRpIHBjT2Zm
c2V0LCB0MAorICAgIGxzaGlmdGkgMiwgdDAKKyAgICBhZGRwIHQwLCBQQworICAgIGptcCBbUENd
CitlbmQKKworbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIGxvYWRpIEFyZ3VtZW50Q291
bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGNDYWxs
MihmdW5jdGlvbiwgYXJnMSwgYXJnMikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGFyZzEs
IHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBh
cmcyLCAwCisgICAgICAgIHBva2UgYXJnMSwgMQorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAg
ICBlbmQKKyAgICBjYWxsIGZ1bmN0aW9uCitlbmQKKworbWFjcm8gY2FsbEhlbHBlcihoZWxwZXIp
CisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUg
dDEsIGNmcgorZW5kCisKK21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBpZiBFWEVDVVRJT05f
VFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkKKyAgICBlbmQKK2VuZAor
CisjIENhbGwgYSBoZWxwZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3JvIGNhbGxDYWxsSGVscGVy
KGFkdmFuY2UsIGhlbHBlciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDLCB0MAor
ICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgY0NhbGwy
KGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBhY3Rpb24odDApCitlbmQK
KworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikKKyAgICBjYWxsQ2FsbEhl
bHBlcigKKyAgICAgICAgYWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAorICAgICAgICBtYWNybyAo
Y2FsbGVlKQorICAgICAgICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAgICAgIGRpc3BhdGNoQWZ0
ZXJDYWxsKCkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVQoaW5j
cmVtZW50LCBhY3Rpb24pCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQwCisgICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENvZGVCbG9jazo6bV9sbGlu
dEV4ZWN1dGVDb3VudGVyW3QwXSwgLmNvbnRpbnVlCisgICAgICAgIGFjdGlvbigpCisgICAgLmNv
bnRpbnVlOgorICAgIGVuZAorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkK
KyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxLAorICAgICAgICBtYWNybyAoKQorICAg
ICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICAg
ICAgICAgIGNDYWxsMihfbGxpbnRfbG9vcF9vc3IsIGNmciwgUEMpCisgICAgICAgICAgICBtb3Zl
IHQxLCBjZnIKKyAgICAgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgICAgICBqbXAg
dDAKKyAgICAgICAgLnJlY292ZXI6CisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsg
VGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRj
aFRvSklURm9yRXBpbG9ndWUoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEwLAor
ICAgICAgICBtYWNybyAoKQorICAgICAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVwbGFjZSkK
KyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGFzc2VydE5vdENvbnN0YW50KGluZGV4KQorICAg
IGFzc2VydChtYWNybyAob2spIGJpYiBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgs
IG9rIGVuZCkKK2VuZAorCisjIEluZGV4LCB0YWcsIGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVy
ZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90CisjIGNoYW5nZWQuCittYWNybyBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmlhZXEgaW5kZXgsIEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2Zy
LCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0s
IHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyAr
IFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBi
aXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFs
IHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxvYWRw
IFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZz
ZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4IGFu
ZCBwYXlsb2FkIG1heSBiZSB0aGUgc2FtZSByZWdpc3Rlci4KK21hY3JvIGxvYWRDb25zdGFudE9y
VmFyaWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmlhZXEgaW5kZXgsIEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2Zy
LCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0s
IHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdGFnCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVj
dG9yQnVmZmVyT2Zmc2V0W3RhZ10sIHRhZworICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBo
ZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAt
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxzaGlmdGkgMywgaW5kZXgK
KyAgICBhZGRwIGluZGV4LCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxv
YWQKKyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnCisuZG9uZToKK2VuZAorCittYWNybyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQs
IHNsb3cpCisgICAgYmlhZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29u
c3RhbnQKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIGV4cGVjdGVkVGFnLCBz
bG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAg
IGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2Fk
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhl
cmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0g
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgYmluZXEgVGFnT2Zmc2V0W3Bh
eWxvYWQsIGluZGV4LCA4XSwgZXhwZWN0ZWRUYWcsIHNsb3cKKyAgICBsb2FkcCBQYXlsb2FkT2Zm
c2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworbWFjcm8gd3Jp
dGVCYXJyaWVyKHRhZywgcGF5bG9hZCkKKyAgICAjIE5vdGhpbmcgdG8gZG8gc2luY2Ugd2UgZG9u
J3QgaGF2ZSBhIGdlbmVyYXRpb25hbCBvciBpbmNyZW1lbnRhbCBjb2xsZWN0b3IuCitlbmQKKwor
CisjIEluZGljYXRlIHRoZSBiZWdpbm5pbmcgb2YgTExJbnQuCitfbGxpbnRfYmVnaW46CisgICAg
Y3Jhc2goKQorCisKKyMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIKKworIyBEbyB0
aGUgYmFyZSBtaW5pbXVtIHJlcXVpcmVkIHRvIGV4ZWN1dGUgY29kZS4gU2V0cyB1cCB0aGUgUEMs
IGxlYXZlIHRoZSBDb2RlQmxvY2sqCisjIGluIHQxLiBNYXkgYWxzbyB0cmlnZ2VyIHByb2xvZ3Vl
IGVudHJ5IE9TUi4KK21hY3JvIHByb2xvZ3VlKG9mZnNldE9mQ29kZUJsb2NrLCBvc3JIZWxwZXIp
CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIAorICAgICMgU2V0
IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgorICAgIHN0b3Jl
cCB0MiwgUmV0dXJuUENbY2ZyXQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0MQorICAgIGxvYWRw
IEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0MV0sIHQxCisgICAgbG9hZHAgb2Zmc2V0T2ZDb2Rl
QmxvY2tbdDFdLCB0MQorICAgIGlmIEpJVF9FTkFCTEVECisgICAgICAgIGJhZGRpcyA1LCBDb2Rl
QmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRlclt0MV0sIC5jb250aW51ZQorICAgICAgICBjQ2Fs
bDIob3NySGVscGVyLCBjZnIsIFBDKQorICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgYnRw
eiB0MCwgLnJlY292ZXIKKyAgICAgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICAgICAg
cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4odDIpCisgICAgICAgIGptcCB0MAorICAg
IC5yZWNvdmVyOgorICAgICAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdDEKKyAgICAgICAgbG9hZHAg
SlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3QxXSwgdDEKKyAgICAgICAgbG9hZHAgb2Zmc2V0T2ZD
b2RlQmxvY2tbdDFdLCB0MQorICAgIC5jb250aW51ZToKKyAgICBlbmQKKyAgICBzdG9yZXAgdDEs
IENvZGVCbG9ja1tjZnJdCisgICAgCisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIFZlY3RvckJ1ZmZlck9m
ZnNldFt0MF0sIFBDCitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3
aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KKyMgTXVzdCBjYWxsIGRpc3Bh
dGNoKDApIGFmdGVyIGNhbGxpbmcgdGhpcy4KK21hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24o
KQorICAgICMgUHJvZmlsZSB0aGUgYXJndW1lbnRzLiBVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5v
IGNob2ljZSBidXQgdG8gZG8gdGhpcy4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtUGFyYW1l
dGVyc1t0MV0sIHQwCisgICAgYnRpeiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKKyAgICBsc2hp
ZnRpIDMsIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcyAr
IFZlY3RvckJ1ZmZlck9mZnNldFt0MV0sIHQzCisuYXJndW1lbnRQcm9maWxlTG9vcDoKKyAgICBs
b2FkaSBUYWdPZmZzZXRbY2ZyLCB0MF0sIHQyCisgICAgc3RvcmVpIHQyLCBWYWx1ZVByb2ZpbGU6
Om1fYnVja2V0cyArIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDBdLCB0MgorICAgIHN0b3JlaSB0MiwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2Fk
T2Zmc2V0W3QzXQorICAgIGFkZHAgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDMKKyAgICBic3ViaW56
IDgsIHQwLCAuYXJndW1lbnRQcm9maWxlTG9vcAorLmFyZ3VtZW50UHJvZmlsZURvbmU6CisgICAg
CisgICAgIyBDaGVjayBzdGFjayBoZWlnaHQuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNh
bGxlZVJlZ2lzdGVyc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFb
dDFdLCB0MgorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MiAgICMg
RklYTUU6IENhbiBnZXQgdG8gdGhlIFJlZ2lzdGVyRmlsZSBmcm9tIHRoZSBKSVRTdGFja0ZyYW1l
CisgICAgbHNoaWZ0aSAzLCB0MAorICAgIGFkZHAgdDAsIGNmciwgdDAKKyAgICBicGFlcSBJbnRl
cnByZXRlcjo6bV9yZWdpc3RlckZpbGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5z
dGFja0hlaWdodE9LCisKKyAgICAjIFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRv
IGNhbGwgYSBoZWxwZXIuCisgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVj
aywgY2ZyLCBQQykKKy5zdGFja0hlaWdodE9LOgorZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVC
bG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCitt
YWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBoZWxwZXIpCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwgdDAKKyAgICBiaWVxIHQwLCBDb2RlQmxv
Y2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJlbAorICAgIGNDYWxsMihoZWxwZXIpICAg
IyBUaGlzIGhlbHBlciBoYXMgYSBzaW1wbGUgcHJvdG9jb2w6IHQwID0gMCA9PiBubyBlcnJvciwg
dDAgIT0gMCA9PiBlcnJvcgorICAgIG1vdmUgdDEsIGNmcgorICAgIGJ0aXogdDAsIC5jb250aW51
ZQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRw
IEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2Jh
bERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorLmNvbnRpbnVlOgorICAgICMgUmVs
b2FkIENvZGVCbG9jayBhbmQgUEMsIHNpbmNlIHRoZSBoZWxwZXIgY2xvYmJlcmVkIGl0LgorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVj
dGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCisgICAg
am1wIGRvbmVMYWJlbAorZW5kCisKK19sbGludF9wcm9ncmFtX3Byb2xvZ3VlOgorICAgIHByb2xv
Z3VlKFByb2dyYW1FeGVjdXRhYmxlOjptX3Byb2dyYW1Db2RlQmxvY2ssIF9sbGludF9lbnRyeV9v
c3IpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfZXZhbF9wcm9sb2d1ZToKKyAgICBwcm9s
b2d1ZShFdmFsRXhlY3V0YWJsZTo6bV9ldmFsQ29kZUJsb2NrLCBfbGxpbnRfZW50cnlfb3NyKQor
ICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgor
ICAgIHByb2xvZ3VlKEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsLCBfbGxp
bnRfZW50cnlfb3NyKQorLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlh
bGl6YXRpb24oKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9j
b2RlQmxvY2tGb3JDb25zdHJ1Y3QsIF9sbGludF9lbnRyeV9vc3IpCisuZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKCkKKyAgICBkaXNwYXRjaCgw
KQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2s6CisgICAgcHJv
bG9ndWUoRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGwsIF9sbGludF9lbnRy
eV9vc3JfYXJpdHlDaGVjaykKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ2Fs
bEJlZ2luLCBfbGxpbnRfaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKKworCitfbGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShGdW5jdGlvbkV4ZWN1
dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbCwgLCBfbGxpbnRfZW50cnlfb3NyX2FyaXR5Q2hlY2sp
CisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfbGxp
bnRfaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQorCisjIEluc3RydWN0aW9uIGltcGxlbWVu
dGF0aW9ucworCitfbGxpbnRfb3BfZW50ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1WYXJzLCB0
MgorICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZQorICAgIG1vdmUgVW5kZWZpbmVkVGFnLCB0MAor
ICAgIG1vdmUgMCwgdDEKKy5vcEVudGVyTG9vcDoKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVp
IHQwLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MiwgOF0KKyAgICBidGlueiB0MiwgLm9wRW50ZXJMb29wCisub3BFbnRlckRvbmU6Cisg
ICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pCisub3BDcmVhdGVBY3Rp
dmF0aW9uRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbml0X2xhenlfcmVn
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkg
RW1wdHlWYWx1ZVRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jcmVh
dGVfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0
ZUFyZ3VtZW50c0RvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FyZ3Vt
ZW50cykKKy5vcENyZWF0ZUFyZ3VtZW50c0RvbmU6CisgICAgZGlzcGF0Y2goMikKKworCittYWNy
byBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kZXgsIGNsYXNzSW5mb09mZnNldCwg
b2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UsIHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoMSwgc2Ny
YXRjaDIsIHNsb3dDYXNlKQorICAgIGNvbnN0IG9mZnNldE9mTXlTaXplQ2xhc3MgPSBKU0dsb2Jh
bERhdGE6OmhlYXAgKyBIZWFwOjptX29iamVjdFNwYWNlICsgQWxsb2NhdGlvblNwYWNlOjptX21h
cmtlZFNwYWNlICsgTWFya2VkU3BhY2U6Om1fcHJlY2lzZVNpemVDbGFzc2VzICsgc2l6ZUNsYXNz
SW5kZXggKiBzaXplb2YgTWFya2VkU3BhY2U6OlNpemVDbGFzcworICAgIAorICAgICMgRklYTUU6
IHdlIGNhbiBnZXQgdGhlIGdsb2JhbCBkYXRhIGluIG9uZSBsb2FkIGZyb20gdGhlIHN0YWNrLgor
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoMQorICAgIGxvYWRwIENvZGVCbG9jazo6
bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAKKyAgICAjIEdldCB0aGUgb2Jq
ZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4gICAgCisgICAgbG9hZHAgb2Zmc2V0T2ZNeVNpemVDbGFz
cyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdLCByZXN1
bHQKKyAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UKKyAgICAKKyAgICAjIFJlbW92ZSB0aGUgb2Jq
ZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAgICBsb2FkcCBbcmVzdWx0XSwgc2NyYXRjaDIKKyAg
ICBzdG9yZXAgc2NyYXRjaDEsIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6
ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXQorCisgICAgIyBJbml0aWFsaXplIHRoZSBv
YmplY3QuCisgICAgbG9hZHAgY2xhc3NJbmZvT2Zmc2V0W3NjcmF0Y2gxXSwgc2NyYXRjaDIKKyAg
ICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCisgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxs
OjptX3N0cnVjdHVyZVtyZXN1bHRdCisgICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX2luaGVyaXRv
cklEW3Jlc3VsdF0KKyAgICBhZGRwIHNpemVvZiBKU09iamVjdCwgcmVzdWx0LCBzY3JhdGNoMQor
ICAgIHN0b3JlcCBzY3JhdGNoMSwgb2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2VbcmVzdWx0XQorZW5k
CisKK19sbGludF9vcF9jcmVhdGVfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgOFtQQ10sIHQwCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQxCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5
cGVbdDFdLCBPYmplY3RUeXBlLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGxvYWRwIEpTT2JqZWN0
OjptX2luaGVyaXRvcklEW3QwXSwgdDIKKyAgICBidHB6IHQyLCAub3BDcmVhdGVUaGlzU2xvdwor
ICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpT
R2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywgSlNGaW5hbE9iamVjdDo6bV9wcm9w
ZXJ0eVN0b3JhZ2UsIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykK
KworLm9wQ3JlYXRlVGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0
ZV90aGlzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRP
ZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIENlbGxUYWcsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisg
ICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmpl
Y3RUeXBlLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0
VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0
eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmlu
YWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJ
bmZvLCBKU0ZpbmFsT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZSwgdDEsIHQwLCB0MiwgdDMsIC5v
cE5ld09iamVjdFNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcs
IFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQxLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcE5ld09iamVjdFNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX25ld19vYmplY3QpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxp
bnRfb3BfbmV3X2FycmF5OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfbmV3X2FycmF5KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25l
d19hcnJheV9idWZmZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX25ld19yZWdleHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9uZXdfcmVnZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX21v
djoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHN0
b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bfbm90OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwg
dDEKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDMKKyAgICBi
aW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90U2xvdworICAgIHhvcmkgMSwgdDMKKyAgICBzdG9y
ZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5vdFNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9l
cToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBh
c3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQy
CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0Miwg
dDMsIC5vcEVxU2xvdworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcEVxU2xvdworICAgIGJpYiB0
MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaWVxIHQw
LCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkK
KworLm9wRXFTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9lcSkKKyAgICBkaXNw
YXRjaCg0KQorCisKK19sbGludF9vcF9lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25z
dGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9w
RXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisg
ICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0ZQor
Lm9wRXFOdWxsSW1tZWRpYXRlOgorICAgIGNpZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2llcSB0
MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIG9yaSB0MiwgdDEKKy5vcEVxTnVsbE5vdEltbWVkaWF0
ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3Rv
cmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfbmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQy
CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMs
IHQxKQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAg
IGJpbmVxIHQyLCB0MywgLm9wTmVxU2xvdworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcE5lcVNs
b3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wTmVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0
MgorICAgIGNpbmVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0
W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgZGlzcGF0Y2goNCkKKworLm9wTmVxU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfbmVxKQorICAgIGRpc3BhdGNoKDQpCisgICAgCisKK19sbGludF9vcF9uZXFfbnVsbDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10s
IHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAg
YmluZXEgdDEsIENlbGxUYWcsIC5vcE5lcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlw
ZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQorICAgIGptcCAu
b3BOZXFOdWxsTm90SW1tZWRpYXRlCisub3BOZXFOdWxsSW1tZWRpYXRlOgorICAgIGNpbmVxIHQx
LCBOdWxsVGFnLCB0MgorICAgIGNpbmVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgYW5kaSB0
MiwgdDEKKy5vcE5lcU51bGxOb3RJbW1lZGlhdGU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRh
Z09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQz
LCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gc3RyaWN0RXEoZXF1YWxpdHlPcGVyYXRp
b24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGFzc2VydE5vdENvbnN0
YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKKyAg
ICBiaWIgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0
cmluZworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJl
cSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlw
ZSwgLnNsb3cKKy5ub3RTdHJpbmc6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlP
cGVyYXRpb24odDAsIHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAg
ZGlzcGF0Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0
Y2goNCkKK2VuZAorCitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0
LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVscGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3Ry
aWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCBy
aWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBl
cl9uc3RyaWN0ZXEpCisKKworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX2xlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2xlc3NlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVh
dGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
Z3JlYXRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCBJbnQzMlRhZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQxCisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVp
IHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJl
SW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNw
YXRjaCgyKQorCisKK19sbGludF9vcF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMy
VGFnLCAub3BQcmVEZWNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDEKKyAgICBic3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisK
KworX2xsaW50X29wX3Bvc3RfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIEludDMyVGFnLCAub3BQb3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0
SW5jRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92
ZSB0MiwgdDMKKyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIElu
dDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0K
Ky5vcFBvc3RJbmNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9wb3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCBJbnQzMlRhZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERl
Y0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUg
dDIsIHQzCisgICAgYnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQz
MlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisu
b3BQb3N0RGVjRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfdG9fanNudW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhb
UENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQor
ICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MworICAgIGJpZXEgdDIsIEludDMyVGFnLCAub3BUb0pzbnVtYmVy
SXNJbnQKKyAgICBiaWFlcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wVG9Kc251bWJlclNsb3cKKy5v
cFRvSnNudW1iZXJJc0ludDoKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQor
ICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMp
CisKKy5vcFRvSnNudW1iZXJTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19q
c251bWJlcikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZWdhdGU6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0Mwor
ICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGJpbmVx
IHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3ZmZmZmZm
ZiwgLm9wTmVnYXRlU2xvdworICAgIG5lZ2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09m
ZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4
XQorICAgIGRpc3BhdGNoKDMpCisub3BOZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQxLCBMb3dl
c3RUYWcsIC5vcE5lZ2F0ZVNsb3cKKyAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAgc3RvcmVp
IHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOZWdhdGVTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9uZWdhdGUpCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBi
aW5hcnlPcEN1c3RvbVN0b3JlKGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0
aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBhc3NlcnROb3RDb25z
dGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5v
cDFOb3RJbnQKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBsb2FkaSA0
W1BDXSwgdDIKKyAgICBpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUodDMsIHQxLCB0MCwgLnNsb3cs
IHQyKQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5k
IGlzIGRlZmluaXRlbHkgbm90IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGNvdWxkIGJlIGFu
eXRoaW5nLgorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MywgTG93ZXN0
VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdwor
ICAgIGNpMmQgdDEsIGZ0MQorICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJE
b3VibGU6CisgICAgZmlpMmQgdDEsIHQzLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICBmaWkyZCB0MCwgdDIsIGZ0MAorICAgIGRvdWJsZU9wZXJhdGlvbihm
dDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQor
Cisub3AyTm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IGFuIGludCwg
dGhlIHNlY29uZCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90LgorICAgIGxvYWRpIDRbUENdLCB0
MgorICAgIGJpYSB0MywgTG93ZXN0VGFnLCAuc2xvdworICAgIGNpMmQgdDAsIGZ0MAorICAgIGZp
aTJkIHQxLCB0MywgZnQxCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3Jl
ZCBmdDAsIFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxI
ZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworbWFjcm8gYmluYXJ5T3AoaW50
ZWdlck9wZXJhdGlvbiwgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCisgICAgYmluYXJ5T3BDdXN0
b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5k
ZXgpCisgICAgICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KQorICAg
ICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAg
ICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAg
ICBlbmQsCisgICAgICAgIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorZW5kCisKK19sbGludF9v
cF9hZGQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHNsb3cpIGJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCkgYWRkZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9s
bGludF9oZWxwZXJfYWRkKQorCisKK19sbGludF9vcF9tdWw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJtdWxp
byBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVs
ZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbXVsKQorCisKK19sbGlu
dF9vcF9zdWI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfc3ViKQorCisKK19sbGludF9vcF9kaXY6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywg
bGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAKKyAg
ICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQorICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQorICAg
ICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdEludAorICAgICAgICAgICAgc3RvcmVpIGlu
dDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdo
dCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgam1wIC5kb25lCisg
ICAgICAgIC5ub3RJbnQ6CisgICAgICAgICAgICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0K
KyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9kaXYpCisKKwor
X2xsaW50X29wX21vZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX21vZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGJpdE9wKG9wZXJhdGlv
biwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgYXNzZXJ0Tm90Q29uc3Rh
bnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xv
dworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAg
ICBvcGVyYXRpb24odDEsIHQwLCAuc2xvdykKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIs
IHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRp
c3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNo
KDQpCitlbmQKKworX2xsaW50X29wX2xzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Yml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCBy
aWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbHNoaWZ0KQorCisKK19sbGludF9vcF9y
c2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX3JzaGlmdCkKKworCitfbGxpbnRfb3BfdXJzaGlmdDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAg
ICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAw
LCBzbG93CisgICAgICAgIGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl91cnNoaWZ0KQorCisK
K19sbGludF9vcF9iaXRhbmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5kLAorICAg
ICAgICBfbGxpbnRfaGVscGVyX2JpdGFuZCkKKworCitfbGxpbnRfb3BfYml0eG9yOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBz
bG93KSB4b3JpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXR4b3Ip
CisKKworX2xsaW50X29wX2JpdG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAor
ICAgICAgICBfbGxpbnRfaGVscGVyX2JpdG9yKQorCisKK19sbGludF9vcF9iaXRub3Q6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQxKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQx
LCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MworICAgIGJp
bmVxIHQyLCBJbnQzMlRhZywgLm9wQml0bm90U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkg
dDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2JpdG5vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
ZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93
CisgICAgZGlzcGF0Y2goMikKKworLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF9pbnN0YW5jZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIENo
ZWNrIHRoYXQgYmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2
aW9yLgorICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuCisgICAgbG9hZGkg
MTJbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0
MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIC5vcEluc3RhbmNlb2ZTbG93CisgICAg
CisgICAgIyBBY3R1YWxseSBkbyB0aGUgd29yay4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkaSAxNltQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3Rh
bnQodDApCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDEpCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBDZWxsVGFnLCAub3BJbnN0YW5jZW9mU2xvdworICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQxLCA4XSwgQ2VsbFRhZywgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDFdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MgorICAgIAorICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJv
dG90eXBlLCB0MiA9IHZhbHVlCisgICAgbW92ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxvb3A6Cisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCisgICAgbG9hZGkgU3RydWN0dXJl
OjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXQsIHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcElu
c3RhbmNlb2ZEb25lCisgICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3Zl
IDAsIHQwCisub3BJbnN0YW5jZW9mRG9uZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zm
c2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhd
CisgICAgZGlzcGF0Y2goNSkKKworLm9wSW5zdGFuY2VvZlNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2luc3RhbmNlb2YpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3Bf
dHlwZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfdHlwZW9mKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3VuZGVmaW5lZDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3Vu
ZGVmaW5lZCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19ib29sZWFuOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfYm9vbGVh
bikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19udW1iZXI6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19udW1iZXIpCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX2lzX29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX29iamVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9pc19mdW5jdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2lzX2Z1bmN0aW9uKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xs
aW50X29wX2luOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfaW4pCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9za2lwKQorICAg
IGRpc3BhdGNoKDMpCisKKworbWFjcm8gcmVzb2x2ZUdsb2JhbChzbG93KQorICAgICMgT3BlcmFu
ZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9h
ZC4KKyAgICAjIDhbUENdICAgUHJvcGVydHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBi
bG9jay4KKyAgICAjIDEyW1BDXSAgU3RydWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAg
YnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9i
amVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0
MF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnBuZXEg
dDAsIDEyW1BDXSwgc2xvdworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVj
dDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEs
IDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2Fk
aSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0
b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorZW5kCisKK19sbGludF9vcF9yZXNv
bHZlX2dsb2JhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgcmVzb2x2ZUdsb2JhbCgub3BS
ZXNvbHZlR2xvYmFsU2xvdykKKyAgICBkaXNwYXRjaCg1KQorCisub3BSZXNvbHZlR2xvYmFsU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCisgICAgZGlz
cGF0Y2goNSkKKworCisjIEdpdmVzIHlvdSB0aGUgc2NvcGUgaW4gdDAsIHdoaWxlIGFsbG93aW5n
IHlvdSB0byBvcHRpb25hbGx5IHBlcmZvcm0gYWRkaXRpb25hbCBjaGVja3Mgb24gdGhlCisjIHNj
b3BlcyBhcyB0aGV5IGFyZSB0cmF2ZXJzZWQuIHNjb3BlQ2hlY2soKSBpcyBjYWxsZWQgd2l0aCB0
d28gYXJndW1lbnRzOiB0aGUgcmVnaXN0ZXIKKyMgaG9sZGluZyB0aGUgc2NvcGUsIGFuZCBhIHJl
Z2lzdGVyIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHNjcmF0Y2guIE5vdGUgdGhhdCB0aGlzIGRvZXMg
bm90CisjIHVzZSB0Mywgc28geW91IGNhbiBob2xkIHN0dWZmIGluIHQzIGlmIG5lZWQgYmUuCitt
YWNybyBnZXRTY29wZShkZUJydWlqaW5JbmRleE9wZXJhbmQsIHNjb3BlQ2hlY2spCisgICAgbG9h
ZHAgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDAKKyAgICBsb2FkaSBkZUJydWlq
aW5JbmRleE9wZXJhbmQsIHQyCisgICAgCisgICAgYnRpeiB0MiwgLmRvbmUKKyAgICAKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBiaW5lcSBDb2RlQmxvY2s6Om1fY29kZVR5cGVb
dDFdLCBGdW5jdGlvbkNvZGUsIC5sb29wCisgICAgYnRieiBDb2RlQmxvY2s6Om1fbmVlZHNGdWxs
U2NvcGVDaGFpblt0MV0sIC5sb29wCisgICAgCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX2FjdGl2
YXRpb25SZWdpc3Rlclt0MV0sIHQxCisKKyAgICAjIE5lZWQgdG8gY29uZGl0aW9uYWxseSBza2lw
IG92ZXIgb25lIHNjb3BlLgorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZh
bHVlVGFnLCAubm9BY3RpdmF0aW9uCisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAg
U2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MAorLm5vQWN0aXZhdGlvbjoKKyAgICBzdWJpIDEs
IHQyCisgICAgCisgICAgYnRpeiB0MiwgLmRvbmUKKy5sb29wOgorICAgIHNjb3BlQ2hlY2sodDAs
IHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKyAgICBzdWJpIDEs
IHQyCisgICAgYnRpbnogdDIsIC5sb29wCisKKy5kb25lOgorZW5kCisKK19sbGludF9vcF9yZXNv
bHZlX2dsb2JhbF9keW5hbWljOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBKSVRT
dGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmFj
dGl2YXRpb25TdHJ1Y3R1cmVbdDNdLCB0MworICAgIGdldFNjb3BlKAorICAgICAgICAyMFtQQ10s
CisgICAgICAgIG1hY3JvIChzY29wZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGxvYWRwIFNjb3Bl
Q2hhaW5Ob2RlOjpvYmplY3Rbc2NvcGVdLCBzY3JhdGNoCisgICAgICAgICAgICBicG5lcSBKU0Nl
bGw6Om1fc3RydWN0dXJlW3NjcmF0Y2hdLCB0MywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBl
clNsb3cKKyAgICAgICAgZW5kKQorICAgIHJlc29sdmVHbG9iYWwoLm9wUmVzb2x2ZUdsb2JhbER5
bmFtaWNTbG93KQorICAgIGRpc3BhdGNoKDYpCisKKy5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3Vw
ZXJTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlKQorICAgIGRpc3Bh
dGNoKDYpCisKKy5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCisgICAgZGlzcGF0Y2goNikKKworCitfbGxpbnRf
b3BfZ2V0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgT3BlcmFuZHMg
YXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4K
KyAgICAjIDhbUENdICAgSW5kZXggb2YgcmVnaXN0ZXIgaW4gdGhlIHNjb3BlLgorICAgICMgMTJb
UENdICBEZSBCcnVpamluIGluZGV4LgorICAgIGdldFNjb3BlKDEyW1BDXSwgbWFjcm8gKHNjb3Bl
LCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQy
CisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNW
YXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0
MCwgdDIsIDhdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XSwgdDAKKyAg
ICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9z
Y29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBnZXRTY29wZSg4W1BDXSwgbWFj
cm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRp
IDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQzLCB0MikKKyAgICB3
cml0ZUJhcnJpZXIodDMsIHQyKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3RbdDBd
LCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAg
ICBzdG9yZWkgdDMsIFRhZ09mZnNldFt0MCwgdDIsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2Fk
T2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfZ2xv
YmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAg
bG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmpl
Y3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwg
dDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQxCisgICAgc3RvcmVpIHQy
LCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgOFtQ
Q10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fcmVn
aXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MywgOF0sIHQyCisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKKyAgICB3cml0ZUJhcnJpZXIodDIs
IHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMs
IFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X3Jlc29sdmVfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3Jlc29sdmVfYmFzZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9l
bnN1cmVfcHJvcGVydHlfZXhpc3RzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcg
Zm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisgICAgIyBvcGNvZGUuIFdlIGRvLCBo
b3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBz
aW5jZQorICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFu
ZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKKyAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9u
IHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0
CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwg
dDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAgIGJw
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNw
YXRjaCg4KQorCisub3BHZXRCeUlkU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
Z2V0X2J5X2lkKQorICAgIGRpc3BhdGNoKDgpCisKKworX2xsaW50X29wX2dldF9hcmd1bWVudHNf
bGVuZ3RoOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFs
dWVUYWcsIC5vcEdldEFyZ3VtZW50c0xlbmd0aFNsb3cKKyAgICBsb2FkaSBBcmd1bWVudENvdW50
ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MgorICAgIHN1YmkgMSwgdDIKKyAgICBzdG9yZWkgSW50
MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEFyZ3VtZW50c0xlbmd0aFNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKQor
ICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNs
b3cpCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkaSAx
MltQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMK
KyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93Cisg
ICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQyLCA4XSwgdDAK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MgorICAgIHdyaXRlQmFycmll
cih0MCwgdDIpCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbdDMsIHQxXQorICAgIHN0b3JlaSB0
MiwgUGF5bG9hZE9mZnNldFt0MywgdDFdCisgICAgZGlzcGF0Y2goOCkKKworLm9wUHV0QnlJZFNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pZCkKKyAgICBkaXNwYXRj
aCg4KQorCisKK21hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwg
dDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5v
cFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisg
ICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9wUHV0QnlJ
ZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3Bl
cnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYWRkcCB0MSwgdDMKKyAgICBsb2FkaSBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIK
KyAgICB3cml0ZUJhcnJpZXIodDEsIHQyKQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQor
ICAgIGxvYWRpIDI0W1BDXSwgdDEKKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCisg
ICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAgIGRpc3BhdGNoKDgpCitl
bmQKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBwdXRCeUlk
VHJhbnNpdGlvbihtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KSBlbmQpCisKKwor
X2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICBwdXRCeUlkVHJhbnNp
dGlvbigKKyAgICAgICAgbWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykKKyAgICAg
ICAgICAgIGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUgb2xk
U3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KKyAgICAgICAgCisgICAgICAgICAgICBs
b2FkcCAyOFtQQ10sIHNjcmF0Y2gKKyAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjpt
X3ZlY3RvciArIFZlY3RvckJ1ZmZlck9mZnNldFtzY3JhdGNoXSwgc2NyYXRjaAorICAgICAgICAg
ICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0s
IE51bGxUYWcsIC5kb25lCisgICAgICAgIC5sb29wOgorICAgICAgICAgICAgbG9hZGkgU3RydWN0
dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxs
CisgICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0
cnVjdHVyZQorICAgICAgICAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIHNsb3cK
KyAgICAgICAgICAgIGFkZHAgNCwgc2NyYXRjaAorICAgICAgICAgICAgYmluZXEgU3RydWN0dXJl
OjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAubG9vcAor
ICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kKQorCisKK19sbGludF9vcF9kZWxfYnlfaWQ6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWxfYnlf
aWQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9hZGkgOFtQ
Q10sIHQyCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9i
YWxEYXRhW3QxXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MiwgQ2Vs
bFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmpzQXJy
YXlDbGFzc0luZm9bdDFdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQz
LCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBicG5lcSBbdDBdLCB0MiwgLm9w
R2V0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QwXSwgdDMKKyAgICBi
aWFlcSB0MSwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDBdLCAub3BHZXRCeVZhbFNsb3cKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFn
T2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciAr
IFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKyAgICBiaWVxIHQyLCBFbXB0eVZhbHVlVGFn
LCAub3BHZXRCeVZhbFNsb3cKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQor
ICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDQp
CisKKy5vcEdldEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5
X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFs
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAx
MltQQ10sIHQxCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcs
IC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQodDEsIEludDMyVGFnLCB0MiwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cpCisgICAgYWRkaSAx
LCB0MgorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisg
ICAgYmlhZXEgdDIsIHQxLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIG5lZ2kgdDIKKyAg
ICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEKKyAgICBzdG9yZWkgdDAsIFRh
Z09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQz
LCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEFyZ3VtZW50QnlWYWxTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX2dldF9ieV9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQw
LCBDZWxsVGFnLCB0MSwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMTZbUENdLCB0MAor
ICAgIGJwbmVxIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAub3BHZXRCeVBuYW1lU2xv
dworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQwLCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0
MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2Fk
aSAyNFtQQ10sIHQwCisgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAorICAgIHN1YmkgMSwgdDAK
KyAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFibGVTbG90
c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlT
dG9yYWdlW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQwLCA4XSwgdDEKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg3KQorCisub3BHZXRCeVBuYW1lU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3BuYW1lKQorICAgIGRpc3Bh
dGNoKDcpCisKKworX2xsaW50X29wX3B1dF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQw
LCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBJbnQzMlRhZywgdDIsIC5vcFB1dEJ5
VmFsU2xvdykKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fZ2xvYmFsRGF0YVt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5
Q2xhc3NJbmZvW3QwXSwgdDAKKyAgICBicG5lcSBbdDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93Cisg
ICAgYmlhZXEgdDIsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QxXSwgLm9wUHV0QnlWYWxTbG93
CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QxXSwgdDAKKyAgICBiaWVxIEFycmF5U3Rv
cmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9w
UHV0QnlWYWxFbXB0eQorLm9wUHV0QnlWYWxTdG9yZVJlc3VsdDoKKyAgICBsb2FkaSAxMltQQ10s
IHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDMpCisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
dDMsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCisgICAg
d3JpdGVCYXJyaWVyKHQxLCB0MykKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV92ZWN0
b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0b3JlaSB0MywgQXJyYXlTdG9yYWdlOjpt
X3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5v
cFB1dEJ5VmFsRW1wdHk6CisgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5W
ZWN0b3JbdDBdCisgICAgYmliIHQyLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXSwgLm9wUHV0
QnlWYWxTdG9yZVJlc3VsdAorICAgIGFkZGkgMSwgdDIsIHQxCisgICAgc3RvcmVpIHQxLCBBcnJh
eVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXQorICAgIGptcCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisK
Ky5vcFB1dEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X3Zh
bCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9kZWxfYnlfdmFsOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X3ZhbCkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaW5kZXg6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaW5kZXgpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9nZXR0ZXIpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9zZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfbG9vcDoKKyAgICBub3AKK19sbGludF9vcF9qbXA6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGRpc3BhdGNoQnJhbmNoKDRbUENdKQorCisKK19sbGludF9vcF9qbXBf
c2NvcGVzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfam1wX3Njb3BlcykKKyAgICBkaXNwYXRjaCgwKQorCisKK21hY3JvIGp1bXBUcnVlT3JGYWxz
ZShjb25kaXRpb25PcCwgc2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaWIgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBCb29sZWFuVGFnLCAuc2xvdworICAgIGNvbmRpdGlvbk9wKFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRhcmdl
dDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLnNsb3c6CisgICAgc3ViaSAzICogNCwg
UEMKKyAgICBjYWxsSGVscGVyKHNsb3cpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRf
b3BfbG9vcF9pZl90cnVlOgorICAgIG5vcAorX2xsaW50X29wX2p0cnVlOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFy
Z2V0KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qdHJ1
ZSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKKyAgICBub3AKK19sbGludF9vcF9qZmFs
c2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAg
bWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9s
bGludF9oZWxwZXJfamZhbHNlKQorCisKK21hY3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwgaW1t
ZWRpYXRlSGFuZGxlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAK
KyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxIYW5kbGVyKFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFy
Z2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuaW1tZWRpYXRlOgorICAgIG9yaSAx
LCB0MQorICAgIGltbWVkaWF0ZUhhbmRsZXIodDEsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykK
K2VuZAorCitfbGxpbnRfb3BfamVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVx
dWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0Ym56IHZhbHVlLCBNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRh
cmdldCkgYmllcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKyAgICAKKworX2xsaW50X29w
X2puZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAg
ICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRieiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpbmVxIHZhbHVl
LCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorCisKK19sbGludF9vcF9qbmVxX3B0cjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisg
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNo
CisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxU
aHJvdWdoCisub3BKbmVxUHRyQnJhbmNoOgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKy5v
cEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGNvbXBhcmUo
aW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUsIGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwg
dDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQyLCB0MykKKyAgICBi
aW5lcSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5v
cDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5qdW1wVGFyZ2V0KQorICAgIGRp
c3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgYmlhIHQwLCBMb3dlc3RUYWcsIC5zbG93Cisg
ICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0Miwg
SW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MywgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFk
eQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQorLm9wMU5vdElu
dFJlYWR5OgorICAgIGZpaTJkIHQxLCB0MCwgZnQwCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0
MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMk5vdEludDoKKyAgICBjaTJk
IHQxLCBmdDAKKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBmaWkyZCB0MywgdDIs
IGZ0MQorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3Bh
dGNoKDQpCisKKy5qdW1wVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKworLnNs
b3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxp
bnRfb3BfbG9vcF9pZl9sZXNzOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRh
cmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJkbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9s
bGludF9oZWxwZXJfamxlc3MpCisKKworX2xsaW50X29wX2pubGVzczoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2pubGVzcykKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyOgorICAg
IG5vcAorX2xsaW50X29wX2pncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21w
YXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3Qg
bGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXIp
CisKKworX2xsaW50X29wX2puZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29t
cGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCBy
aWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJk
bHRlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pu
Z3JlYXRlcikKKworCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzZXE6CisgICAgbm9wCitfbGxpbnRf
b3Bfamxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVu
ZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcSBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzc2VxKQorCisKK19sbGlu
dF9vcF9qbmxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0dW4gbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzZXEpCisKKworX2xs
aW50X29wX2xvb3BfaWZfZ3JlYXRlcmVxOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyZXE6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3Bfam5n
cmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdHVuIGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcmVxKQorCisKK19sbGlu
dF9vcF9sb29wX2hpbnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9K
SVRGb3JMb29wKCkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zd2l0Y2hfaW1tOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQwCisgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQx
CisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFi
bGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyLCB0MywgNF0sIHQyCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcFN3aXRj
aEltbU5vdEludAorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJp
YWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0
W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaChTaW1wbGVK
dW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDIsIHQwLCA0XSkK
KworLm9wU3dpdGNoSW1tTm90SW50OgorICAgIGJpYiB0MSwgTG93ZXN0VGFnLCAub3BTd2l0Y2hJ
bW1TbG93ICAjIEdvIHRvIHNsb3cgcGF0aCBpZiBpdCdzIGEgZG91YmxlLgorLm9wU3dpdGNoSW1t
RmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5vcFN3aXRjaEltbVNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9pbW0pCisgICAgZGlzcGF0
Y2goMCkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBs
b2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0Mgor
ICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6
OlJhcmVEYXRhOjptX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbdDIsIHQzLCA0XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1f
dHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hh
ckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0MAorICAgIGJp
bmVxIFN0cmluZ0ltcGw6Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdo
CisgICAgbG9hZHAgU3RyaW5nSW1wbDo6bV9kYXRhOFt0MF0sIHQxCisgICAgYnRpbnogU3RyaW5n
SW1wbDo6bV9oYXNoQW5kRmxhZ3NbdDBdLCBIYXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0Y2hD
aGFyOEJpdAorICAgIGxvYWRoIFt0MV0sIHQwCisgICAgam1wIC5vcFN3aXRjaENoYXJSZWFkeQor
Lm9wU3dpdGNoQ2hhcjhCaXQ6CisgICAgbG9hZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENoYXJSZWFk
eToKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwg
U2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5v
cFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJhbmNoKFNpbXBsZUp1bXBUYWJs
ZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MiwgdDAsIDRdKQorCisub3BT
d2l0Y2hDaGFyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKworX2xs
aW50X29wX3N3aXRjaF9zdHJpbmc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfc3RyaW5nKQorICAgIGRpc3BhdGNoKDApCisKKworX2xs
aW50X29wX25ld19mdW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10s
IHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BO
ZXdGdW5jRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuYykKKy5vcE5l
d0Z1bmNEb25lOgorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19mdW5jX2V4cDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19m
dW5jX2V4cCkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGRvQ2FsbChoZWxwZXIpCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRwIExMSW50Q2Fs
bExpbmtJbmZvOjpjYWxsZWVbdDFdLCB0MgorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAg
IGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ2FsbFNsb3cKKyAgICBi
aW5lcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBsb2Fk
aSAxMltQQ10sIHQzCisgICAgYWRkcCAyNCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgYWRk
cCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9hZHAg
SlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxlZSAr
IFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9m
ZnNldFt0M10KKyAgICBsb2FkaSA4IC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1l
bnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNd
CisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBz
dG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFn
LCBTY29wZUNoYWluICsgVGFnT2Zmc2V0W3QzXQorICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86
Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworLm9wQ2Fs
bFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3Bf
Y2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY2Fs
bCkKKworCitfbGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBk
b0NhbGwoX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3QpCisKKworX2xsaW50X29wX2NhbGxfdmFyYXJn
czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIF9sbGludF9o
ZWxwZXJfY2FsbF92YXJhcmdzKQorCisKK19sbGludF9vcF9jYWxsX2V2YWw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIAorICAgICMgRXZhbCBpcyBleGVjdXRlZCBpbiBvbmUgb2YgdHdvIG1v
ZGVzOgorICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSByZWFsbHkgaW52b2tpbmcg
ZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBleGVjdXRpb24gaXMgcGVyZm9tZWQg
ZW50aXJlbHkgaW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBpdAorICAgICMgICAgcmV0dXJucyB0aGUg
UEMgb2YgYSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0aGUgcmV0dXJuIHZhbHVlCisgICAg
IyAgICB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgICMKKyAgICAjIDIpIFdlIGZpbmQgdGhh
dCB3ZSdyZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwoKSB0aGF0IGlzIG5vdAorICAg
ICMgICAgdGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVscGVyIHJldHVybnMgdGhlIFBDIG9mIHRo
ZSB0aGluZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQuCisgICAgIworICAgICMg
VGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywgd2hpY2ggd291bGQgcmVxdWlyZSBh
IHRvdGFsIG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0ZSB0aGF0IGNhbm5vdCBi
ZSBlYXNpbHkgcGFja2VkIGludG8gdHdvCisgICAgIyByZWdpc3RlcnMgKEMgZnVuY3Rpb25zIGNh
biByZXR1cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5KToKKyAgICAjCisgICAgIyAtIFRo
ZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBtb2Rp
ZmllZAorICAgICMgICBieSB0aGUgaGVscGVyLCBidXQgdGhlIGNvbnZlbnRpb24gaXMgdGhhdCBp
dCByZXR1cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0b3RhbGx5IGNsZWFyIGlmIHRoYXQncyBu
ZWNlc3NhcnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUuCisgICAgIyAgIEJ1dCB0aGF0
J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRlciBzbyB3ZSBzdGljayB3aXRoIGl0
LgorICAgICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBoZWxwZXIgc3VjY2Vzc2Z1bGx5
IGV4ZWN1dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAjICAgdGhlIHJldHVybiB2YWx1ZSwgb3Ig
ZGlkIG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3IgdXMKKyAgICAjICAgdG8g
Y2FsbC4KKyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAgICAjICAgLSBUaGUgSlMgcmV0dXJuIHZh
bHVlICh0d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisgICAgIyAgIC0gVGhlIFBDIHRvIGNhbGwu
CisgICAgIworICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2llciB0byBqdXN0IGFsd2F5cyBo
YXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBhIFBDIHRvIGNhbGwsIGFuZCB0aGF0
IFBDIG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAorICAgICMgcmV0dXJucyB0aGUgSlMg
dmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAKKyAgICBzbG93UGF0aEZvckNhbGwo
NCwgX2xsaW50X2hlbHBlcl9jYWxsX2V2YWwpCisKKworX2xsaW50X2dlbmVyaWNfcmV0dXJuX3Bv
aW50OgorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYWN0
aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
bG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZh
bHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQKKyAgICBiaWVxIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVk
Cisub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCisub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQ6
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYXJndW1lbnRzOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdWJpIDEsIHQwICAg
IyBHZXQgdGhlIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcgorICAgIGJpZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRl
ZAorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCisub3BU
ZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGRv
UmV0dXJuKCkKKyAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgIGxvYWRwIENhbGxlckZy
YW1lW2Nmcl0sIGNmcgorICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQor
ICAgIHJldAorZW5kCisKK19sbGludF9vcF9yZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
bG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQwCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF9vcF9jYWxsX3B1dF9y
ZXN1bHQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIHN0
b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcmV0X29iamVj
dF9vcl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9y
RXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAg
IGJpbmVxIHQxLCBDZWxsVGFnLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcFJldE9iamVjdE9yVGhp
c05vdE9iamVjdAorICAgIGRvUmV0dXJuKCkKKworLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0
OgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
dDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJu
KCkKKworCitfbGxpbnRfb3BfbWV0aG9kX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICAjIFdlIGlnbm9yZSBtZXRob2QgY2hlY2tzIGFuZCB1c2Ugbm9ybWFsIGdldF9ieV9pZCBvcHRp
bWl6YXRpb25zLgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N0cmNhdDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N0cmNhdCkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF90b19wcmltaXRpdmU6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxv
YWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BUb1ByaW1pdGl2ZUlzSW1t
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJuZXEgU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5vcFRv
UHJpbWl0aXZlU2xvd0Nhc2UKKy5vcFRvUHJpbWl0aXZlSXNJbW06CisgICAgc3RvcmVpIHQxLCBU
YWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb1ByaW1pdGl2ZVNsb3dDYXNlOgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19wcmltaXRpdmUpCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfZ2V0X3BuYW1lczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2dldF9wbmFtZXMpCisgICAgZGlzcGF0Y2goMCkgIyBUaGUgaGVs
cGVyIGVpdGhlciBhZHZhbmNlcyB0aGUgUEMgb3IganVtcHMgdXMgdG8gc29tZXdoZXJlIGVsc2Uu
CisKKworX2xsaW50X29wX25leHRfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkaSAxNltQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XSwgdDAKKyAgICBiaWVxIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIs
IDhdLCAub3BOZXh0UG5hbWVFbmQKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjptX2pzU3RyaW5nc1t0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgOF0sIHQzCisgICAg
YWRkaSAxLCB0MAorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAg
IGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA4
W1BDXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MworICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGJwbmVxIHQxLCBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIC5vcE5leHRQbmFtZVNsb3cKKyAg
ICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFByb3RvdHlwZUNoYWluW3Qy
XSwgdDAKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDBdLCB0MAorICAgIGJ0
cHogW3QwXSwgLm9wTmV4dFBuYW1lVGFyZ2V0Cisub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxv
b3A6CisgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W3QxXSwgTnVs
bFRhZywgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUg
KyBQYXlsb2FkT2Zmc2V0W3QxXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qy
XSwgdDEKKyAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGFkZHAgNCwg
dDAKKyAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKKy5vcE5l
eHRQbmFtZVRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgyNFtQQ10pCisKKy5vcE5leHRQbmFt
ZUVuZDoKKyAgICBkaXNwYXRjaCg3KQorCisub3BOZXh0UG5hbWVTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9uZXh0X3BuYW1lKSAjIFRoaXMgZWl0aGVyIGtlZXBzIHRoZSBQQyB3
aGVyZSBpdCB3YXMgKGNhdXNpbmcgdXMgdG8gbG9vcCkgb3Igc2V0cyBpdCB0byB0YXJnZXQuCisg
ICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfcHVzaF9zY29wZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfc2NvcGUpCisgICAgZGlz
cGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9wX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9wX3Njb3BlKQorICAgIGRpc3BhdGNoKDEp
CisKKworX2xsaW50X29wX3B1c2hfbmV3X3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9uZXdfc2NvcGUpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfY2F0Y2g6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgVGhp
cyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVj
YXVzZSB0aGUKKyAgICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0
byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhy
b3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRoZSBK
SVQgdGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0
aHJvd2luZworICAgICMgY29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93aW5n
IHRvIHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6OnRh
cmdldEludGVycHJldGVyUENGb3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBK
SVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6
OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9iYWxE
YXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0dsb2Jh
bERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpTR2xv
YmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1wdHlW
YWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdCisgICAgbG9h
ZGkgNFtQQ10sIHQyCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisK
K19sbGludF9vcF90aHJvdzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Rocm93KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93
X3JlZmVyZW5jZV9lcnJvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKKyAgICBkaXNwYXRjaCgyKQorCisK
K19sbGludF9vcF9qc3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGFkZGkgMyAqIDQsIFBDLCB0MQorICAgIHN0b3JlaSB0MSwgW3QwXQorICAgIGRpc3Bh
dGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA0W1BDXSwgUEMKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9k
ZWJ1ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2RlYnVnKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Byb2ZpbGVfd2lsbF9jYWxs
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidHB6IEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQ
cm9maWxlclJlZmVyZW5jZVtzcF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENhbGxE
b25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0cHogSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2Zp
bGVyUmVmZXJlbmNlW3NwXSwgLm9wUHJvZmlsZURpZENhbGxEb25lCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERvbmU6Cisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhyb3dfZnJv
bV9oZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJw
cmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMpLCBzbworICAgICMgdGhlIHRo
cm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0
byBoZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dp
bmcgcHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQx
CisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAg
am1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworX2xsaW50
X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNz
QWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0
MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAg
IGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKKyMgTGFz
dGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBw
b3J0IGFsbCBvcGNvZGVzLgorIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVu
IHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAorIyBhcyBtdWNoLgorCittYWNy
byBub3RTdXBwb3J0ZWQoKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGNyYXNoKCkK
KyAgICBlbHNlCisgICAgICAgICMgV2Ugc2hvdWxkIHVzZSB3aGF0ZXZlciB0aGUgc21hbGxlc3Qg
cG9zc2libGUgaW5zdHJ1Y3Rpb24gaXMsIGp1c3QgdG8KKyAgICAgICAgIyBlbnN1cmUgdGhhdCB0
aGVyZSBpcyBhIGdhcCBiZXR3ZWVuIGluc3RydWN0aW9uIGxhYmVscy4gSWYgbXVsdGlwbGUKKyAg
ICAgICAgIyBzbWFsbGVzdCBpbnN0cnVjdGlvbnMgZXhpc3QsIHdlIHNob3VsZCBwaWNrIHRoZSBv
bmUgdGhhdCBpcyBtb3N0CisgICAgICAgICMgbGlrZWx5IHJlc3VsdCBpbiBleGVjdXRpb24gYmVp
bmcgaGFsdGVkLiBDdXJyZW50bHkgdGhhdCBpcyB0aGUgYnJlYWsKKyAgICAgICAgIyBpbnN0cnVj
dGlvbiBvbiBhbGwgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBpbnRlcmVzdGVkIGluLiAoQnJlYWsgaXMg
aW50MworICAgICAgICAjIG9uIEludGVsLCB3aGljaCBpcyAxIGJ5dGUsIGFuZCBia3B0IG9uIEFS
TXY3LCB3aGljaCBpcyAyIGJ5dGVzLikKKyAgICAgICAgYnJlYWsKKyAgICBlbmQKK2VuZAorCitf
bGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRf
b3BfZ2V0X2J5X2lkX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfY3VzdG9tX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfY3VzdG9tX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfY3VzdG9tX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9i
eV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRf
Z2V0dGVyX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRf
Z2V0dGVyX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRf
Z2V0dGVyX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9w
cm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3NlbGY6Cisg
ICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9zdHJpbmdfbGVuZ3RoOgorICAgIG5v
dFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBw
b3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3JlcGxhY2U6CisgICAgbm90U3VwcG9ydGVk
KCkKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uOgorICAgIG5vdFN1cHBvcnRlZCgp
CisKKworIyBJbmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50LgorX2xsaW50X2VuZDoKKyAgICBjcmFz
aCgpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1
ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworI2luY2x1ZGUgIkxMSW50QXNzZW1ibHkuaCIK
KworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTG93TGV2
ZWxJbnRlcnByZXRlcl9oCisjZGVmaW5lIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorCisjaW5jbHVk
ZSAiT3Bjb2RlLmgiCisKKyNkZWZpbmUgTExJTlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxl
bmd0aCkgZXh0ZXJuICJDIiB2b2lkIGxsaW50XyMjb3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hfT1BD
T0RFX0lEKExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wpOworI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9O
X0RFQ0wKKworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2JlZ2luKCk7CitleHRlcm4gIkMiIHZvaWQg
bGxpbnRfZW5kKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOwor
ZXh0ZXJuICJDIiB2b2lkIGxsaW50X2V2YWxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBs
bGludF9nZW5lcmljX3JldHVybl9wb2ludCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93
X2Zyb21faGVscGVyX3RyYW1wb2xpbmUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19k
dXJpbmdfY2FsbF90cmFtcG9saW5lKCk7CisKKyNlbmRpZiAvLyBMb3dMZXZlbEludGVycHJldGVy
X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTkzIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitjbGFzcyBTcGVjaWFsUmVnaXN0ZXIKKyAgZGVmIGluaXRpYWxpemUobmFtZSkK
KyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgQG5h
bWUKKyAgZW5kCitlbmQKKworQVJNdjdfREFUQV9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJp
cCIpCitBUk12N19BRERSX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoInIzIikKKworZGVmIG1v
dmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJlbnRseSB3ZSBvbmx5IGhhbmRs
ZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1vdi9tb3Z0IGZvciB0aGUgY29t
cGxleCBvbmVzLgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2CisgICAgJGFzbS5wdXRz
ICJtb3Z3IFwjI3t2YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzaWYgKH52
YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20ucHV0cyAibXZudyBcIyN7fnZh
bHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNlCisgICAgJGFzbS5wdXRzICJt
b3Z3IFwjI3t2YWx1ZSAmIDB4ZmZmZn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBp
ZiAodmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCisgICAgICAkYXNtLnB1dHMgIm1vdnQgXCMje3Zh
bHVlID4+IDE2fSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorICBlbmQKK2Vu
ZAorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUK
KyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICJyMCIKKyAgICB3aGVuICJ0MSIsICJh
MSIsICJyMSIKKyAgICAgICJyMSIKKyAgICB3aGVuICJ0MiIsICJhMiIKKyAgICAgICJyMiIKKyAg
ICB3aGVuICJhMyIKKyAgICAgICJyMyIKKyAgICB3aGVuICJ0MyIKKyAgICAgICJyNCIKKyAgICB3
aGVuICJ0NCIKKyAgICAgICJyNyIKKyAgICB3aGVuICJjZnIiCisgICAgICAicjUiCisgICAgZWxz
ZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9z
c2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlP
cGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3Jl
V3JhcAorICAgIHlpZWxkCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYg
YXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZyIgorICAgICAg
ImQwIgorICAgIHdoZW4gImZyMSIsCisgICAgICAiZDEiCisgICAgd2hlbiAiZnIyIgorICAgICAg
ImQyIgorICAgIHdoZW4gImZyMyIKKyAgICAgICJkMyIKKyAgICB3aGVuICJmcjQiCisgICAgICAi
ZDQiCisgICAgd2hlbiAiZnI1IgorICAgICAgImQ1IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFu
ZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3
T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZCBz
ZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgYXJtVjdPcGVyYW5kCisg
ICAgcmFpc2UgIkludmFsaWQgaW1tZWRpYXRlICN7dmFsdWV9IiBpZiB2YWx1ZSA8IDAgb3IgdmFs
dWUgPiAyNTUKKyAgICAiIyR7dmFsdWV9IgorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQ
b3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9y
eU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3Rv
cmVXcmFwCisgICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCittb2R1bGUgQVJNdjdBZGRyZXNz
VXRpbGl0aWVzCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICBzZWxmLmFybVY3UHJlcGFy
ZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICRhc20ucHV0cyAiXHRsZHIgI3tzZWxmLmFybVY3
UG9zc2libHlNZW1vcnlPcGVyYW5kfSwgI3tBUk12N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9Igor
ICAgIHlpZWxkIEFSTXY3X0RBVEFfUkVHCisgICAgJGFzbS5wdXRzICJcdHN0ciAje0FSTXY3X0RB
VEFfUkVHLmFybVY3T3BlcmFuZH0sICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFuZH0i
CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NVdGls
aXRpZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYg
b2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAgIG1vdmVJ
bW1lZGlhdGUob2Zmc2V0LnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgICBlbmQKKyAgZW5kCisg
IAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUg
PCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVy
YW5kfSwgI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgICBlbHNlCisgICAgICAi
WyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje29mZnNldC5hcm1WN09wZXJhbmR9XSIKKyAgICBlbmQK
KyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRp
bGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlm
IG9mZnNldC52YWx1ZSAhPSAwCisgICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1ZSwgQVJN
djdfQUREUl9SRUcpCisgICAgICAkYXNtLnB1dHMgImFkZHcgI3tBUk12N19BRERSX1JFRy5hcm1W
N09wZXJhbmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAor
ICAgICAgIlsje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVy
YW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVsc2UKKyAgICAgICJbI3tiYXNlLmFybVY3T3Bl
cmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVuZAor
ICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJl
c3NVdGlsaXRpZXMKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQK
KyAgICBtb3ZlSW1tZWRpYXRlKGFkZHJlc3MudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICBlbmQK
KyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICJbI3tBUk12N19BRERS
X1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgZW5kCitlbmQKKworCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgzIEBACisj
IS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCity
ZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2V0dGluZ3MiCity
ZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2NsYXNzIEFzc2VtYmxlcgorICBkZWYgaW5pdGlhbGl6ZShv
dXRwKQorICAgIEBvdXRwID0gb3V0cAorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBk
ZWYgZW50ZXJBc20KKyAgICBAb3V0cC5wdXRzICJhc20gKCIKKyAgICBAc3RhdGUgPSA6YXNtCisg
IGVuZAorICAKKyAgZGVmIGxlYXZlQXNtCisgICAgQG91dHAucHV0cyAiKTsiCisgICAgQHN0YXRl
ID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBpbkFzbQorICAgIGVudGVyQXNtCisgICAgeWllbGQK
KyAgICBsZWF2ZUFzbQorICBlbmQKKyAgCisgIGRlZiBwdXRzKGxpbmUpCisgICAgcmFpc2UgdW5s
ZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAgQG91dHAucHV0cygobGluZSArICJcbiIpLmluc3BlY3Qp
CisgIGVuZAorICAKKyAgZGVmIGNvbW1lbnQodGV4dCkKKyAgICBAb3V0cC5wdXRzICIvLyAje3Rl
eHR9IgorICBlbmQKK2VuZAorCiskYXNtID0gQXNzZW1ibGVyLm5ldygkc3Rkb3V0KQorCithc21G
aWxlID0gQVJHVi5zaGlmdAorb2Zmc2V0c0ZpbGUgPSBBUkdWLnNoaWZ0CisKK2FzdCA9IHBhcnNl
KGxleChJTzo6cmVhZChhc21GaWxlKSkpCitvZmZzZXRzTGlzdCwgY29uZmlnSW5kZXggPSBvZmZz
ZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KG9mZnNldHNGaWxlKQorCitmb3JTZXR0aW5ncyhjb21w
dXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KVtjb25maWdJbmRleF0sIGFzdCkgeworICB8IGNv
bmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgYXNzZXJ0Q29uZmlndXJh
dGlvbihjb25jcmV0ZVNldHRpbmdzKQorICBsb3dMZXZlbEFTVCA9IGxvd0xldmVsQVNULnJlc29s
dmUoKmJ1aWxkT2Zmc2V0c01hcChsb3dMZXZlbEFTVCwgb2Zmc2V0c0xpc3QpKQorICBlbWl0Q29k
ZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCkg
eworICAgICRhc20uaW5Bc20geworICAgICAgbG93TGV2ZWxBU1QubG93ZXIoYmFja2VuZCkKKyAg
ICB9CisgIH0KK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODA2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBCYXNlIHV0
aWxpdHkgdHlwZXMgZm9yIHRoZSBBU1QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFZhbGlkIG1ldGhv
ZHMgZm9yIE5vZGU6CisjCisjIG5vZGUuY2hpbGRyZW4gLT4gUmV0dXJucyBhbiBhcnJheSBvZiBp
bW1lZGlhdGUgY2hpbGRyZW4uCisjCisjIG5vZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJucyBhbiBh
cnJheSBvZiBhbGwgc3RyaWN0IGRlc2NlbmRhbnRzIChjaGlsZHJlbgorIyAgICAgYW5kIGNoaWxk
cmVuIG9mIGNoaWxkcmVuLCB0cmFuc2l0aXZlbHkpLgorIworIyBub2RlLmZsYXR0ZW4gLT4gUmV0
dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5kCisjICAg
ICB0aGUgbm9kZSBpdHNlbGYuCisjCisjIG5vZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVybnMgYW4g
YXJyYXkgY29udGFpbmluZyB0aG9zZSBlbGVtZW50cyBpbgorIyAgICAgbm9kZS5mbGF0dGVuIHRo
YXQgYXJlIG9mIHRoZSBnaXZlbiB0eXBlIChpc19hPyB0eXBlIHJldHVybnMgdHJ1ZSkuCisjCisj
IG5vZGUubWFwQ2hpbGRyZW57fHZ8IC4uLn0gLT4gUmV0dXJucyBhIG5ldyBub2RlIHdpdGggYWxs
IGNoaWxkcmVuCisjICAgICByZXBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJsb2NrLgor
IworIyBFeGFtcGxlczoKKyMKKyMgbm9kZS5maWx0ZXIoU2V0dGluZykudW5pcSAtPiBSZXR1cm5z
IGFsbCBvZiB0aGUgc2V0dGluZ3MgdGhhdCB0aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVsc2UgYmxv
Y2tzIGRlcGVuZCBvbi4KKyMKKyMgbm9kZS5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxIC0+IFJl
dHVybnMgYWxsIG9mIHRoZSBzdHJ1Y3R1cmUgb2Zmc2V0cworIyAgICAgdGhhdCB0aGUgQVNUIGRl
cGVuZHMgb24uCisKK2NsYXNzIE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2lu
CisgIGVuZAorICAKKyAgZGVmIGNvZGVPcmlnaW5TdHJpbmcKKyAgICAibGluZSBudW1iZXIgI3tA
Y29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVmIGRlc2NlbmRhbnRzCisgICAgY2hpbGRyZW4u
Y29sbGVjdHt8dnwgdi5mbGF0dGVufS5mbGF0dGVuCisgIGVuZAorICAKKyAgZGVmIGZsYXR0ZW4K
KyAgICBbc2VsZl0gKyBkZXNjZW5kYW50cworICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIodHlwZSkK
KyAgICBmbGF0dGVuLnNlbGVjdHt8dnwgdi5pc19hPyB0eXBlfQorICBlbmQKK2VuZAorCitjbGFz
cyBOb0NoaWxkcmVuIDwgTm9kZQorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW10KKyAgZW5k
CisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFN0
cnVjdE9mZnNldEtleQorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBp
bml0aWFsaXplKHN0cnVjdCwgZmllbGQpCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVs
ZCA9IGZpZWxkCisgIGVuZAorICAKKyAgZGVmIGhhc2gKKyAgICBAc3RydWN0Lmhhc2ggKyBAZmll
bGQuaGFzaCAqIDMKKyAgZW5kCisgIAorICBkZWYgZXFsPyhvdGhlcikKKyAgICBAc3RydWN0ID09
IG90aGVyLnN0cnVjdCBhbmQgQGZpZWxkID09IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisgICAg
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBBU1Qgbm9kZXMuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBTdHJ1Y3RPZmZzZXQgPCBOb0No
aWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisgIEBAbWFw
cGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JGaWVsZChjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZp
ZWxkKQorICAgIGtleSA9IFN0cnVjdE9mZnNldEtleS5uZXcoc3RydWN0LCBmaWVsZCkKKyAgICAK
KyAgICB1bmxlc3MgQEBtYXBwaW5nW2tleV0KKyAgICAgIEBAbWFwcGluZ1trZXldID0gU3RydWN0
T2Zmc2V0Lm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGVuZAorICAgIEBAbWFw
cGluZ1trZXldCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tzdHJ1Y3R9Ojoje2ZpZWxk
fSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAgIGlmIEBzdHJ1Y3QgIT0gb3RoZXIu
c3RydWN0CisgICAgICByZXR1cm4gQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgICAgZW5kCisg
ICAgQGZpZWxkIDw9PiBvdGhlci5maWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YgPCBO
b0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBz
dHJ1Y3QKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFt
ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tzdHJ1Y3RdCisgICAg
ICBAQG1hcHBpbmdbc3RydWN0XSA9IFNpemVvZi5uZXcoY29kZU9yaWdpbiwgc3RydWN0KQorICAg
IGVuZAorICAgIEBAbWFwcGluZ1tzdHJ1Y3RdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
c2l6ZW9mICN7QHN0cnVjdH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAgICBAc3Ry
dWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlIDwgTm9D
aGlsZHJlbgorICBhdHRyX3JlYWRlciA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhbHVlID0gdmFsdWUK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYg
PT0ob3RoZXIpCisgICAgb3RoZXIuaXNfYT8gSW1tZWRpYXRlIGFuZCBvdGhlci52YWx1ZSA9PSBA
dmFsdWUKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9y
ZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVm
dCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBA
cmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJp
Z2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZEltbWVkaWF0ZXMubmV3
KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitl
bmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpy
aWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAor
ICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAg
CisgIGRlZiBtYXBDaGlsZHJlbgorICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5
aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
Iigje2xlZnQuZHVtcH0gLSAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTXVs
SW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbgorICAgIE11bEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5
aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0g
KiAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlIDwgTm9k
ZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGNoaWxkXQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIE5lZ0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkp
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKC0je0BjaGlsZC5kdW1wfSkiCisgIGVuZAor
ZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1l
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAg
CisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBw
aW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBSZWdpc3RlcklELm5ldyhjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQgPCBOb0No
aWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVu
ZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdp
biwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFt
ZV0gPSBGUFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBt
YXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5k
CisKK2NsYXNzIFZhcmlhYmxlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBk
ZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tu
YW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gVmFyaWFibGUubmV3KGNvZGVPcmlnaW4sIG5h
bWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MgPCBOb2RlCisgIGF0dHJfcmVh
ZGVyIDpiYXNlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNl
LCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBA
b2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BiYXNlLCBA
b2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZHJlc3MubmV3KGNv
ZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH1dIgorICBlbmQKK2VuZAor
CitjbGFzcyBCYXNlSW5kZXggPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6aW5kZXgsIDpz
Y2FsZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJh
c2UKKyAgICBAaW5kZXggPSBpbmRleAorICAgIEBzY2FsZSA9IHNjYWxlCisgICAgcmFpc2UgdW5s
ZXNzIFsxLCAyLCA0LCA4XS5tZW1iZXI/IEBzY2FsZQorICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAg
ZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBpbmRleCwgQG9mZnNldF0KKyAg
ZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4s
ICh5aWVsZCBAYmFzZSksICh5aWVsZCBAaW5kZXgpLCBAc2NhbGUsICh5aWVsZCBAb2Zmc2V0KSkK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH0s
ICN7aW5kZXguZHVtcH0sICN7c2NhbGV9XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVB
ZGRyZXNzIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6YWRkcmVzcworICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgYWRkcmVzcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBhZGRyZXNzID0gYWRkcmVzcworICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7YWRkcmVz
cy5kdW1wfVtdIgorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbiA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBvcGNvZGUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG9wY29k
ZSA9IG9wY29kZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIGNo
aWxkcmVuCisgICAgb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2Mp
CisgICAgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5tYXAo
JnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0IiArIG9wY29kZS50b19zICsg
IiAiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCisgIGVuZAorZW5k
CisKK2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRl
cnJvciIKKyAgZW5kCitlbmQKKworY2xhc3MgQ29uc3REZWNsIDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6dmFyaWFibGUsIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFy
aWFibGUsIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhcmlhYmxlID0gdmFy
aWFibGUKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IFtAdmFyaWFibGUsIEB2YWx1ZV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBD
b25zdERlY2wubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAdmFyaWFibGUpLCAoeWllbGQgQHZhbHVl
KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJjb25zdCAje0B2YXJpYWJsZS5kdW1wfSA9
ICN7QHZhbHVlLmR1bXB9IgorICBlbmQKK2VuZAorCiskbGFiZWxNYXBwaW5nID0ge30KKworY2xh
c3MgTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5h
bWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1l
KQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNv
bGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTGFiZWwK
KyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFiZWwubmV3KGNvZGVPcmln
aW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVs
IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFt
ZQorICBlbmQKKworICBAQHVuaXF1ZU5hbWVDb3VudGVyID0gMAorICAKKyAgZGVmIHNlbGYuZm9y
TmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAg
IHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBp
bmdbbmFtZV0uaXNfYT8gTG9jYWxMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdb
bmFtZV0gPSBMb2NhbExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRs
YWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgc2VsZi51bmlxdWUKKyAgICB3aGls
ZSAkbGFiZWxNYXBwaW5nWyJfTCN7QEB1bmlxdWVOYW1lQ291bnRlcn0iXQorICAgICAgQEB1bmlx
dWVOYW1lQ291bnRlciArPSAxCisgICAgZW5kCisgICAgZm9yTmFtZShuaWwsICJfTCN7QEB1bmlx
dWVOYW1lQ291bnRlcn0iKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06Igor
ICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIg
OmxhYmVsCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAgZGVmIGNoaWxk
cmVuCisgICAgW0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBMYWJl
bFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAg
ZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJl
bC5uYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UgPCBOb0NoaWxk
cmVuCisgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBl
bmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1h
cENoaWxkcmVuCisgICAgTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxk
IEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVl
bmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGlzdAorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbGlzdCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsaXN0ID0gbGlzdAor
ICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIGxpc3QKKyAgZW5kCisgIAorICBkZWYgbWFw
Q2hpbGRyZW4oJnByb2MpCisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIEBsaXN0Lm1hcCgm
cHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsaXN0LmNvbGxlY3R7fHZ8IHYuZHVt
cH0uam9pbigiXG4iKQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlIDwgTm9DaGlsZHJlbgorICBk
ZWYgaW5pdGlhbGl6ZQorICAgIHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNlID0g
VHJ1ZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQK
KyAgCisgIGRlZiB2YWx1ZQorICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJ0
cnVlIgorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRp
YWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IEZhbHNlLm5l
dworICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAg
ZGVmIHZhbHVlCisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJmYWxzZSIK
KyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBUcnVlLmlu
c3RhbmNlCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAg
IEZhbHNlLmluc3RhbmNlCisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcgPCBOb0NoaWxkcmVu
CisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBu
YW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAK
KyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFt
ZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBT
ZXR0aW5nLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1l
XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBB
bmQgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBBbmQubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gYW5kICN7cmlnaHQuZHVtcH0p
IgorICBlbmQKK2VuZAorCitjbGFzcyBPciA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpy
aWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAor
ICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAg
CisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE9yLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQp
LCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1
bXB9IG9yICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBOb3QgPCBOb2RlCisg
IGF0dHJfcmVhZGVyIDpjaGlsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgY2hp
bGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAY2hpbGQgPSBjaGlsZAorICBlbmQKKyAg
CisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbgorICAgIE5vdC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKG5vdCAje2NoaWxkLmR1bXB9KSIKKyAgZW5kCitlbmQK
KworY2xhc3MgU2tpcCA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0c2tp
cCIKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIg
OnByZWRpY2F0ZSwgOnRoZW5DYXNlCisgIGF0dHJfYWNjZXNzb3IgOmVsc2VDYXNlCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHRoZW5DYXNlKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQHByZWRpY2F0ZSA9IHByZWRpY2F0ZQorICAgIEB0aGVuQ2FzZSA9
IHRoZW5DYXNlCisgICAgQGVsc2VDYXNlID0gU2tpcC5uZXcoY29kZU9yaWdpbikKKyAgZW5kCisg
IAorICBkZWYgY2hpbGRyZW4KKyAgICBpZiBAZWxzZUNhc2UKKyAgICAgIFtAcHJlZGljYXRlLCBA
dGhlbkNhc2UsIEBlbHNlQ2FzZV0KKyAgICBlbHNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5D
YXNlXQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIElmVGhlbkVs
c2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAcHJlZGljYXRlKSwgKHlpZWxkIEB0aGVuQ2FzZSks
ICh5aWVsZCBAZWxzZUNhc2UpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImlmICN7cHJl
ZGljYXRlLmR1bXB9XG4iICsgdGhlbkNhc2UuZHVtcCArICJcbmVsc2VcbiIgKyBlbHNlQ2FzZS5k
dW1wICsgIlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBNYWNybyA8IE5vZGUKKyAgYXR0cl9y
ZWFkZXIgOm5hbWUsIDp2YXJpYWJsZXMsIDpib2R5CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAbmFtZSA9IG5hbWUKKyAgICBAdmFyaWFibGVzID0gdmFyaWFibGVzCisgICAgQGJvZHkgPSBi
b2R5CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgQHZhcmlhYmxlcyArIFtAYm9keV0K
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBNYWNyby5uZXcoY29kZU9yaWdpbiwg
QG5hbWUsIEB2YXJpYWJsZXMubWFwe3x2fCB5aWVsZCB2fSwgKHlpZWxkIEBib2R5KSkKKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgICJtYWNybyAje25hbWV9KCIgKyB2YXJpYWJsZXMuY29sbGVj
dHt8dnwgdi5kdW1wfS5qb2luKCIsICIpICsgIilcbiIgKyBib2R5LmR1bXAgKyAiXG5lbmQiCisg
IGVuZAorZW5kCisKK2NsYXNzIE1hY3JvQ2FsbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5hbWUs
IDpvcGVyYW5kcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFu
ZHMpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgICBAb3BlcmFu
ZHMgPSBvcGVyYW5kcworICAgIHJhaXNlIHVubGVzcyBAb3BlcmFuZHMKKyAgICBAb3BlcmFuZHMu
ZWFjaHt8dnwgcmFpc2UgdW5sZXNzIHZ9CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAg
QG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIE1hY3Jv
Q2FsbC5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgIlx0I3tuYW1lfSgiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwg
di5kdW1wfS5qb2luKCIsICIpICsgIikiCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3Jl
cXVpcmUgImFzdCIKK3JlcXVpcmUgIng4NiIKKworQkFDS0VORFMgPQorICBbCisgICAiWDg2IiwK
KyAgICJBUk12NyIKKyAgXQorCitXT1JLSU5HX0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIKKyAg
XQorCitCQUNLRU5EX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoJyArIEJBQ0tFTkRTLmpvaW4o
Jyl8KCcpICsgJylcXFonKQorCitjbGFzcyBOb2RlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIHNl
bmQoImxvd2VyIiArIG5hbWUpCisgIGVuZAorZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBsb3dlcigp
IGZvciB0aG9zZSBub2RlcyB0aGF0IGFyZSBiYWNrZW5kLWFnbm9zdGljCisKK2RlZiBzYW5pdGl6
ZUxhYmVsTmFtZShuYW1lKQorICAjIFNvbWUgcGxhdGZvcm1zIGRvbid0IHdhbnQgdGhlIGxlYWRp
bmcgIl8iLiBJZiB3ZSBldmVyIHdhbnQgdG8gZG8gc29tZXRoaW5nCisgICMgYWJvdXQgdGhhdCwg
aXQgd291bGQgYmUgaGVyZS4KKyAgbmFtZQorZW5kCisKK2NsYXNzIExhYmVsCisgIGRlZiBsb3dl
cihuYW1lKQorICAgICRhc20ucHV0cyAiLmdsb2JsICN7c2FuaXRpemVMYWJlbE5hbWUoc2VsZi5u
YW1lKX0iCisgICAgJGFzbS5wdXRzICIje3Nhbml0aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9OiIK
KyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAk
YXNtLnB1dHMgIl9fb2FfI3tzZWxmLm5hbWVbMS4uLTFdfToiCisgIGVuZAorZW5kCisKK2NsYXNz
IFNraXAKKyAgZGVmIGxvd2VyKG5hbWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisg
IGRlZiBsb3dlcihuYW1lKQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBub2RlIHwKKyAgICAg
IG5vZGUubG93ZXIobmFtZSkKKyAgICB9CisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0
X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjUgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJi
YWNrZW5kcyIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJz
ZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworZGVmIGVtaXRNYWdpY051bWJlcgorICBP
RkZTRVRfTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICB8IG51bWJlciB8CisgICAgcHV0cyAiI3tu
dW1iZXJ9LCIKKyAgfQorZW5kCisKK29yaWdpbmFsQVNUID0gcGFyc2UobGV4KCRzdGRpbi5yZWFk
KSkKKworZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKG9yaWdpbmFsQVNUKSB7CisgIHwgc2V0
dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfAorICBvZmZzZXRzTGlzdCA9IGFzdC5maWx0ZXIo
U3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKKyAgc2l6ZXNMaXN0ID0gYXN0LmZpbHRlcihTaXplb2Yp
LnVuaXEuc29ydAorICAKKyAgbGVuZ3RoID0gKE9GRlNFVF9NQUdJQ19OVU1CRVJTLnNpemUgKyAx
KSAqICgxICsgb2Zmc2V0c0xpc3Quc2l6ZSArIHNpemVzTGlzdC5zaXplKQorICAKKyAgcHV0cyAi
c3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICBl
bWl0TWFnaWNOdW1iZXIKKyAgcHV0cyAiI3tpbmRleH0sIgorICBvZmZzZXRzTGlzdC5lYWNoIHsK
KyAgICB8IG9mZnNldCB8CisgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgcHV0cyAiT0ZGTElORV9B
U01fT0ZGU0VUT0YoI3tvZmZzZXQuc3RydWN0fSwgI3tvZmZzZXQuZmllbGR9KSwiCisgIH0KKyAg
c2l6ZXNMaXN0LmVhY2ggeworICAgIHwgb2Zmc2V0IHwKKyAgICBlbWl0TWFnaWNOdW1iZXIKKyAg
ICBwdXRzICJzaXplb2YoI3tvZmZzZXQuc3RydWN0fSksIgorICB9CisgIHB1dHMgIn07IgorfQor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rp
b25zLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4OCBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworTUFDUk9fSU5TVFJVQ1RJT05TID0KKyAgWwor
ICAgImFkZGkiLAorICAgImFuZGkiLAorICAgImxzaGlmdGkiLAorICAgIm11bGkiLAorICAgIm5l
Z2kiLAorICAgIm5vdGkiLAorICAgIm9yaSIsCisgICAicnNoaWZ0aSIsCisgICAidXJzaGlmdGki
LAorICAgInN1YmkiLAorICAgInhvcmkiLAorICAgImxvYWRpIiwKKyAgICJsb2FkYiIsCisgICAi
bG9hZGgiLAorICAgInN0b3JlaSIsCisgICAic3RvcmViIiwKKyAgICJsb2FkZCIsCisgICAibW92
ZWQiLAorICAgInN0b3JlZCIsCisgICAiYWRkZCIsCisgICAiZGl2ZCIsCisgICAic3ViZCIsCisg
ICAibXVsZCIsCisgICAic3FydGQiLAorICAgImNpMmQiLAorICAgImZpaTJkIiwgIyB1c2FnZTog
ZmlpMmQgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBz
aWduaWZpY2FudCBiaXRzPiwgPGZwcj4KKyAgICJmZDJpaSIsICMgdXNhZ2U6IGZkMmlpIDxmcHI+
LCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25p
ZmljYW50IGJpdHM+CisgICAiYmRlcSIsCisgICAiYmRuZXEiLAorICAgImJkZ3QiLAorICAgImJk
Z3RlcSIsCisgICAiYmRsdCIsCisgICAiYmRsdGVxIiwKKyAgICJiZGVxdW4iLAorICAgImJkbmVx
dW4iLAorICAgImJkZ3R1biIsCisgICAiYmRndGVxdW4iLAorICAgImJkbHR1biIsCisgICAiYmRs
dGVxdW4iLAorICAgImJ0ZDJpIiwKKyAgICJ0ZDJpIiwKKyAgICJiY2QyaSIsCisgICAibW92ZHoi
LAorICAgInBvcCIsCisgICAicHVzaCIsCisgICAibW92ZSIsCisgICAic3hpMnAiLAorICAgInp4
aTJwIiwKKyAgICJub3AiLAorICAgImJpZXEiLAorICAgImJpbmVxIiwKKyAgICJiaWEiLAorICAg
ImJpYWVxIiwKKyAgICJiaWIiLAorICAgImJpYmVxIiwKKyAgICJiaWd0IiwKKyAgICJiaWd0ZXEi
LAorICAgImJpbHQiLAorICAgImJpbHRlcSIsCisgICAiYmJlcSIsCisgICAiYmJuZXEiLAorICAg
ImJiYSIsCisgICAiYmJhZXEiLAorICAgImJiYiIsCisgICAiYmJiZXEiLAorICAgImJiZ3QiLAor
ICAgImJiZ3RlcSIsCisgICAiYmJsdCIsCisgICAiYmJsdGVxIiwKKyAgICJidGlvIiwKKyAgICJi
dGlzIiwKKyAgICJidGl6IiwKKyAgICJidGlueiIsCisgICAiYnRibyIsCisgICAiYnRicyIsCisg
ICAiYnRieiIsCisgICAiYnRibnoiLAorICAgImptcCIsCisgICAiYmFkZGlvIiwKKyAgICJiYWRk
aXMiLAorICAgImJhZGRpeiIsCisgICAiYmFkZGlueiIsCisgICAiYnN1YmlvIiwKKyAgICJic3Vi
aXMiLAorICAgImJzdWJpeiIsCisgICAiYnN1YmlueiIsCisgICAiYm11bGlvIiwKKyAgICJibXVs
aXMiLAorICAgImJtdWxpeiIsCisgICAiYm11bGlueiIsCisgICAiYm9yaW8iLAorICAgImJvcmlz
IiwKKyAgICJib3JpeiIsCisgICAiYm9yaW56IiwKKyAgICJicmVhayIsCisgICAiY2FsbCIsCisg
ICAicmV0IiwKKyAgICJjaWVxIiwKKyAgICJjaW5lcSIsCisgICAiY2lhIiwKKyAgICJjaWFlcSIs
CisgICAiY2liIiwKKyAgICJjaWJlcSIsCisgICAiY2lndCIsCisgICAiY2lndGVxIiwKKyAgICJj
aWx0IiwKKyAgICJjaWx0ZXEiLAorICAgInRpbyIsCisgICAidGlzIiwKKyAgICJ0aXoiLAorICAg
InRpbnoiLAorICAgInRibyIsCisgICAidGJzIiwKKyAgICJ0YnoiLAorICAgInRibnoiLAorICAg
InBlZWsiLAorICAgInBva2UiLAorICAgImJwZXEiLAorICAgImJwbmVxIiwKKyAgICJicGEiLAor
ICAgImJwYWVxIiwKKyAgICJicGIiLAorICAgImJwYmVxIiwKKyAgICJicGd0IiwKKyAgICJicGd0
ZXEiLAorICAgImJwbHQiLAorICAgImJwbHRlcSIsCisgICAiYWRkcCIsCisgICAiYW5kcCIsCisg
ICAib3JwIiwKKyAgICJzdWJwIiwKKyAgICJ4b3JwIiwKKyAgICJsb2FkcCIsCisgICAiY3BlcSIs
CisgICAiY3BuZXEiLAorICAgImNwYSIsCisgICAiY3BhZXEiLAorICAgImNwYiIsCisgICAiY3Bi
ZXEiLAorICAgImNwZ3QiLAorICAgImNwZ3RlcSIsCisgICAiY3BsdCIsCisgICAiY3BsdGVxIiwK
KyAgICJzdG9yZXAiLAorICAgImJ0cG8iLAorICAgImJ0cHMiLAorICAgImJ0cHoiLAorICAgImJ0
cG56IiwKKyAgICJiYWRkcG8iLAorICAgImJhZGRwcyIsCisgICAiYmFkZHB6IiwKKyAgICJiYWRk
cG56IgorICBdCisKK1g4Nl9JTlNUUlVDVElPTlMgPQorICBbCisgICAiY2RxaSIsCisgICAiaWRp
dmkiCisgIF0KKworSU5TVFJVQ1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05TICsgWDg2X0lOU1RS
VUNUSU9OUworCitJTlNUUlVDVElPTl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgSU5T
VFJVQ1RJT05TLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29u
c3RhbnRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01BR0lDX05VTUJF
UlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTU2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJl
ICJhc3QiCityZXF1aXJlICJvZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cyIKKworT0ZGU0VUX01B
R0lDX05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBvZmZzZXRzTGlzdChhc3QpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIHNpemVzTGlzdChhc3QpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBSZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCBzaXplcyB1c2Vk
IGJ5IHRoZSBBU1QuICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworCitkZWYgb2Zmc2V0c0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFN0cnVjdE9mZnNl
dCkudW5pcS5zb3J0CitlbmQKKworZGVmIHNpemVzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU2l6
ZW9mKS51bmlxLnNvcnQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGFzdCwgZmlsZSkgLT4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjICAgICBbb2Zmc2V0cywgaW5kZXhdICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBQYXJz
ZXMgdGhlIG9mZnNldHMgZnJvbSBhIGZpbGUgYW5kIHJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMg
YW5kIHRoZSAjCisjIGluZGV4IG9mIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgaXMgdmFsaWQgaW4g
dGhpcyBidWlsZCB0YXJnZXQuICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisKK2RlZiBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUpCisgIGluZGV4ID0g
bmlsCisgIG9mZnNldHMgPSBbXQorICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBuaWwKKyAgCisg
IGRlZiByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICBieXRlcyA9IFtdCisgICAgNC50aW1l
cyB7CisgICAgICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQorICAgIH0KKyAgICAKKyAgICBpZiBlbmRp
YW5uZXNzID09IDpsaXR0bGUKKyAgICAgICMgTGl0dGxlIGVuZGlhbgorICAgICAgKGJ5dGVzWzBd
IDw8IDAgfAorICAgICAgIGJ5dGVzWzFdIDw8IDggfAorICAgICAgIGJ5dGVzWzJdIDw8IDE2IHwK
KyAgICAgICBieXRlc1szXSA8PCAyNCkKKyAgICBlbHNlCisgICAgICAjIEJpZyBlbmRpYW4KKyAg
ICAgIChieXRlc1swXSA8PCAyNCB8CisgICAgICAgYnl0ZXNbMV0gPDwgMTYgfAorICAgICAgIGJ5
dGVzWzJdIDw8IDggfAorICAgICAgIGJ5dGVzWzNdIDw8IDApCisgICAgZW5kCisgIGVuZAorICAK
KyAgWzpsaXR0bGUsIDpiaWddLmVhY2ggeworICAgIHwgZW5kaWFubmVzcyB8CisgICAgbWFnaWNC
eXRlcyA9IFtdCisgICAgTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICAgIHwgbnVtYmVyIHwKKyAg
ICAgIGN1cnJlbnRCeXRlcyA9IFtdCisgICAgICA0LnRpbWVzIHsKKyAgICAgICAgY3VycmVudEJ5
dGVzIDw8IChudW1iZXIgJiAweGZmKQorICAgICAgICBudW1iZXIgPj49IDgKKyAgICAgIH0KKyAg
ICAgIGlmIGVuZGlhbm5lc3MgPT0gOmJpZworICAgICAgICBjdXJyZW50Qnl0ZXMucmV2ZXJzZSEK
KyAgICAgIGVuZAorICAgICAgbWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0ZXMKKyAgICB9CisgICAg
CisgICAgRmlsZS5vcGVuKGZpbGUsICJyIikgeworICAgICAgfCBpbnAgfAorICAgICAgd2hlcmVJ
bk1hcmtlciA9IDAKKyAgICAgIGxvb3AgeworICAgICAgICBieXRlID0gaW5wLmdldGJ5dGUKKyAg
ICAgICAgYnJlYWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgaWYgYnl0ZSA9PSBtYWdpY0J5dGVzW3do
ZXJlSW5NYXJrZXJdCisgICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisgICAgICAgICAgaWYg
d2hlcmVJbk1hcmtlciA9PSBtYWdpY0J5dGVzLnNpemUKKyAgICAgICAgICAgICMgV2UgaGF2ZSBh
IG1hdGNoISBJZiB3ZSBoYXZlIG5vdCB5ZXQgcmVhZCB0aGUgZW5kaWFubmVzcyBtYXJrZXIgYW5k
IGluZGV4LAorICAgICAgICAgICAgIyB0aGVuIHJlYWQgdGhvc2Ugbm93OyBvdGhlcndpc2UgcmVh
ZCBhbiBvZmZzZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIG5vdCBpbmRleAorICAg
ICAgICAgICAgICBpbmRleCA9IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICBvZmZzZXRzIDw8IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQor
ICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdoZXJlSW5NYXJrZXIg
PSAwCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICB3aGVyZUluTWFya2Vy
ID0gMAorICAgICAgICBlbmQKKyAgICAgIH0KKyAgICB9CisgICAgCisgICAgYnJlYWsgaWYgaW5k
ZXgKKyAgfQorICAKKyAgcmFpc2UgdW5sZXNzIGluZGV4CisgIAorICBbb2Zmc2V0cywgaW5kZXhd
CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgYnVpbGRPZmZzZXRz
TWFwKGFzdCwgb2Zmc2V0c0xpc3QpIC0+IFtvZmZzZXRzLCBzaXplc10gICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIEJ1aWxkcyBhIG1hcHBpbmcgYmV0d2VlbiBTdHJ1Y3RPZmZz
ZXQgbm9kZXMgYW5kIHRoZWlyIHZhbHVlcy4gICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisKK2RlZiBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkKKyAg
b2Zmc2V0c01hcCA9IHt9CisgIHNpemVzTWFwID0ge30KKyAgYXN0T2Zmc2V0c0xpc3QgPSBvZmZz
ZXRzTGlzdChhc3QpCisgIGFzdFNpemVzTGlzdCA9IHNpemVzTGlzdChhc3QpCisgIHJhaXNlIHVu
bGVzcyBhc3RPZmZzZXRzTGlzdC5zaXplICsgYXN0U2l6ZXNMaXN0LnNpemUgPT0gb2Zmc2V0c0xp
c3Quc2l6ZQorICBvZmZzZXRzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBzdHJ1
Y3RPZmZzZXQsIGluZGV4IHwKKyAgICBvZmZzZXRzTWFwW3N0cnVjdE9mZnNldF0gPSBvZmZzZXRz
TGlzdC5zaGlmdAorICB9CisgIHNpemVzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7CisgICAg
fCBzaXplb2YsIGluZGV4IHwKKyAgICBzaXplc01hcFtzaXplb2ZdID0gb2Zmc2V0c0xpc3Quc2hp
ZnQKKyAgfQorICBbb2Zmc2V0c01hcCwgc2l6ZXNNYXBdCitlbmQKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1OTEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVp
cmUgImFzdCIKK3JlcXVpcmUgImluc3RydWN0aW9ucyIKK3JlcXVpcmUgInJlZ2lzdGVycyIKKwor
Y2xhc3MgVG9rZW4KKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4sIDpzdHJpbmcKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cmluZykKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVP
cmlnaW4KKyAgICBAc3RyaW5nID0gc3RyaW5nCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQor
ICAgIGlmIG90aGVyLmlzX2E/IFRva2VuCisgICAgICBAc3RyaW5nID09IG90aGVyLnN0cmluZwor
ICAgIGVsc2UKKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgPX4ob3RoZXIpCisgICAgQHN0cmluZyA9fiBvdGhlcgorICBlbmQKKyAgCisgIGRlZiB0b19z
CisgICAgIiN7QHN0cmluZy5pbnNwZWN0fSBhdCBsaW5lICN7Y29kZU9yaWdpbn0iCisgIGVuZAor
ICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgY29tbWVudC5lbXB0eT8KKyAg
ICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAi
UGFyc2UgZXJyb3I6ICN7dG9fc306ICN7Y29tbWVudFswXX0iCisgICAgZW5kCisgIGVuZAorZW5k
CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBsZXhlci4gVGFrZXMg
YSBzdHJpbmcgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdG9rZW5zLiAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBsZXgoc3RyKQorICByZXN1bHQg
PSBbXQorICBsaW5lTnVtYmVyID0gMQorICB3aGlsZSBub3Qgc3RyLmVtcHR5PworICAgIGNhc2Ug
c3RyCisgICAgd2hlbiAvXEFcIyhbXlxuXSopLworICAgICAgIyBjb21tZW50LCBpZ25vcmUKKyAg
ICB3aGVuIC9cQVxuLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikK
KyAgICAgIGxpbmVOdW1iZXIgKz0gMQorICAgIHdoZW4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9d
KikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4g
L1xBXC4oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1i
ZXIsICQmKQorICAgIHdoZW4gL1xBXyhbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBU
b2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEEoWyBcdF0rKS8KKyAgICAgICMg
d2hpdGVzcGFjZSwgaWdub3JlCisgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSspLworICAgICAg
cmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAgICB3aGVuIC9c
QTAoWzAtN10rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYub2N0
LnRvX3MpCisgICAgd2hlbiAvXEEoWzAtOV0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXco
bGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEE6Oi8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5u
ZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFbOixcKFwpXFtcXT1cK1wtKl0vCisgICAg
ICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIGVsc2UKKyAgICAgIHJh
aXNlICJMZXhlciBlcnJvciBhdCBsaW5lIG51bWJlciAje2xpbmVOdW1iZXJ9LCB1bmV4cGVjdGVk
IHNlcXVlbmNlICN7c3RyWzAuLjIwXS5pbnNwZWN0fSIKKyAgICBlbmQKKyAgICBzdHIgPSAkfi5w
b3N0X21hdGNoCisgIGVuZAorICByZXN1bHQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBUb2tlbiBpZGVudGlmaWNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworCitkZWYgaXNSZWdpc3Rlcih0b2tlbikKKyAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVS
TgorZW5kCisKK2RlZiBpc0luc3RydWN0aW9uKHRva2VuKQorICB0b2tlbiA9fiBJTlNUUlVDVElP
Tl9QQVRURVJOCitlbmQKKworZGVmIGlzS2V5d29yZCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBKCh0
cnVlKXwoZmFsc2UpfChpZil8KHRoZW4pfChlbHNlKXwoZWxzaWYpfChlbmQpfChhbmQpfChvcil8
KG5vdCl8KG1hY3JvKXwoY29uc3QpfChzaXplb2YpfChlcnJvcikpXFovIG9yCisgICAgdG9rZW4g
PX4gUkVHSVNURVJfUEFUVEVSTiBvcgorICAgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4K
K2VuZAorCitkZWYgaXNJZGVudGlmaWVyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbYS16QS1aXShb
YS16QS1aMC05X10qKVxaLyBhbmQgbm90IGlzS2V5d29yZCh0b2tlbikKK2VuZAorCitkZWYgaXNM
YWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXyhbYS16QS1aMC05X10qKVxaLworZW5kCisKK2Rl
ZiBpc0xvY2FsTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQVwuKFthLXpBLVowLTlfXSopXFov
CitlbmQKKworZGVmIGlzVmFyaWFibGUodG9rZW4pCisgIGlzSWRlbnRpZmllcih0b2tlbikgb3Ig
aXNSZWdpc3Rlcih0b2tlbikKK2VuZAorCitkZWYgaXNJbnRlZ2VyKHRva2VuKQorICB0b2tlbiA9
fiAvXEFbMC05XS8KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBU
aGUgcGFyc2VyLiBUYWtlcyBhbiBhcnJheSBvZiB0b2tlbnMgYW5kIHJldHVybnMgYW4gQVNULiBN
ZXRob2RzICAgICAjCisjIG90aGVyIHRoYW4gcGFyc2UodG9rZW5zKSBhcmUgbm90IGZvciBwdWJs
aWMgY29uc3VtcHRpb24uICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisKK2NsYXNzIFBhcnNlcgorICBkZWYgaW5pdGlhbGl6ZSh0b2tlbnMpCisgICAgQHRv
a2VucyA9IHRva2VucworICAgIEBpZHggPSAwCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3Io
KmNvbW1lbnQpCisgICAgaWYgQHRva2Vuc1tAaWR4XQorICAgICAgQHRva2Vuc1tAaWR4XS5wYXJz
ZUVycm9yKCpjb21tZW50KQorICAgIGVsc2UKKyAgICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAg
ICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZSIKKyAgICAgIGVsc2UKKyAgICAg
ICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlOiAje2NvbW1lbnRbMF19IgorICAg
ICAgZW5kCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGNvbnN1bWUocmVnZXhwKQorICAgIGlm
IHJlZ2V4cAorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9fiByZWdleHAK
KyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAaWR4ID09IEB0b2tlbnMubGVuZ3Ro
CisgICAgZW5kCisgICAgQGlkeCArPSAxCisgIGVuZAorICAKKyAgZGVmIHNraXBOZXdMaW5lCisg
ICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQK
KyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgaWYgQHRva2Vuc1tAaWR4
XSA9PSAibm90IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZVByZWRpY2F0ZUF0b20KKyAg
ICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lw
TmV3TGluZQorICAgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgIHBhcnNlRXJyb3Ig
dW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3Vs
dAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInRydWUiCisgICAgICByZXN1bHQgPSBUcnVl
Lmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gImZhbHNlIgorICAgICAgcmVzdWx0ID0gRmFsc2UuaW5zdGFuY2UKKyAgICAg
IEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNb
QGlkeF0KKyAgICAgIHJlc3VsdCA9IFNldHRpbmcuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1
bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVm
IHBhcnNlUHJlZGljYXRlQW5kCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisgICAg
d2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiYW5kIgorICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAg
ICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgIHJlc3VsdCA9IEFuZC5uZXcoY29k
ZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAor
ICBkZWYgcGFyc2VQcmVkaWNhdGUKKyAgICAjIHNvbWUgZXhhbXBsZXMgb2YgcHJlY2VkZW5jZToK
KyAgICAjIG5vdCBhIGFuZCBiIC0+IChub3QgYSkgYW5kIGIKKyAgICAjIGEgYW5kIGIgb3IgYyAt
PiAoYSBhbmQgYikgb3IgYworICAgICMgYSBvciBiIGFuZCBjIC0+IGEgb3IgKGIgYW5kIGMpCisg
ICAgCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICB3aGlsZSBAdG9rZW5zW0Bp
ZHhdID09ICJvciIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4K
KyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQ
cmVkaWNhdGVBbmQKKyAgICAgIHJlc3VsdCA9IE9yLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJp
Z2h0KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVZhcmlhYmxl
CisgICAgaWYgaXNSZWdpc3RlcihAdG9rZW5zW0BpZHhdKQorICAgICAgaWYgQHRva2Vuc1tAaWR4
XSA9fiBGUFJfUEFUVEVSTgorICAgICAgICByZXN1bHQgPSBGUFJlZ2lzdGVySUQuZm9yTmFtZShA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgZWxz
ZQorICAgICAgICByZXN1bHQgPSBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzSWRl
bnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgcmVzdWx0ID0gVmFyaWFibGUuZm9yTmFtZShA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgIGVsc2UK
KyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VBZGRyZXNzKG9mZnNldCkKKyAgICBwYXJzZUVycm9yIHVubGVz
cyBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4KKyAgICAKKyAgICAjIFRocmVlIHBvc3NpYmlsaXRpZXM6CisgICAgIyBbXSAgICAg
ICAtPiBBYnNvbHV0ZUFkZHJlc3MKKyAgICAjIFthXSAgICAgIC0+IEFkZHJlc3MKKyAgICAjIFth
LGJdICAgIC0+IEJhc2VJbmRleCB3aXRoIHNjYWxlID0gMQorICAgICMgW2EsYixjXSAgLT4gQmFz
ZUluZGV4CisgICAgCisgICAgQGlkeCArPSAxCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIK
KyAgICAgIEBpZHggKz0gMQorICAgICAgcmV0dXJuIEFic29sdXRlQWRkcmVzcy5uZXcoY29kZU9y
aWdpbiwgb2Zmc2V0KQorICAgIGVuZAorICAgIGEgPSBwYXJzZVZhcmlhYmxlCisgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIHJlc3VsdCA9IEFkZHJlc3MubmV3KGNvZGVPcmlnaW4s
IGEsIG9mZnNldCkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0Bp
ZHhdID09ICIsIgorICAgICAgQGlkeCArPSAxCisgICAgICBiID0gcGFyc2VWYXJpYWJsZQorICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5l
dyhjb2RlT3JpZ2luLCBhLCBiLCAxLCBvZmZzZXQpCisgICAgICBlbHNlCisgICAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICBwYXJzZUVycm9yIHVubGVzcyBbIjEiLCAiMiIsICI0IiwgIjgiXS5tZW1iZXI/IEB0b2tl
bnNbQGlkeF0uc3RyaW5nCisgICAgICAgIGMgPSBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhd
ID09ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIs
IGMsIG9mZnNldCkKKyAgICAgIGVuZAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICAgIHJlc3Vs
dAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUNvbG9uQ29sb24KKyAgICBza2lwTmV3TGluZQorICAg
IGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICBwYXJzZUVycm9yIHVu
bGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgIG5hbWVzID0gW0B0b2tlbnNbQGlk
eF0uc3RyaW5nXQorICAgIEBpZHggKz0gMQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIjo6
IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIg
QHRva2Vuc1tAaWR4XQorICAgICAgbmFtZXMgPDwgQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAg
IEBpZHggKz0gMQorICAgIGVuZAorICAgIHJhaXNlIGlmIG5hbWVzLmVtcHR5PworICAgIFtjb2Rl
T3JpZ2luLCBuYW1lc10KKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uQXRvbQorICAg
IHNraXBOZXdMaW5lCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIEBpZHggKz0g
MQorICAgICAgTmVnSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCBw
YXJzZUV4cHJlc3Npb25BdG9tKQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAg
ICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgIEBpZHggKz0gMQorICAgICAg
cmVzdWx0CisgICAgZWxzaWYgaXNJbnRlZ2VyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9
IEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0
cmluZy50b19pKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lk
ZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNv
bG9uQ29sb24KKyAgICAgIGlmIG5hbWVzLnNpemUgPiAxCisgICAgICAgIFN0cnVjdE9mZnNldC5m
b3JGaWVsZChjb2RlT3JpZ2luLCBuYW1lc1swLi4tMl0uam9pbignOjonKSwgbmFtZXNbLTFdKQor
ICAgICAgZWxzZQorICAgICAgICBWYXJpYWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzWzBd
KQorICAgICAgZW5kCisgICAgZWxzaWYgaXNSZWdpc3RlciBAdG9rZW5zW0BpZHhdCisgICAgICBw
YXJzZVZhcmlhYmxlCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIgorICAgICAg
QGlkeCArPSAxCisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAg
ICAgU2l6ZW9mLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXMuam9pbignOjonKSkKKyAgICBlbHNl
CisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVz
c2lvbk11bAorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uQXRv
bQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICBpZiBAdG9rZW5zW0BpZHhd
ID09ICIqIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gTXVsSW1tZWRpYXRl
cy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Np
b25BdG9tKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5kCisg
ICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgQHRva2Vu
c1tAaWR4XSA9PSAiLSIgb3IgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIiBvciBpc0ludGVnZXIo
QHRva2Vuc1tAaWR4XSkgb3IgaXNWYXJpYWJsZShAdG9rZW5zW0BpZHhdKQorICBlbmQKKyAgCisg
IGRlZiBwYXJzZUV4cHJlc3Npb24KKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNl
RXhwcmVzc2lvbk11bAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0b2tlbnNb
QGlkeF0gPT0gIi0iCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0g
MV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICItIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0g
U3ViSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBw
YXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQK
KyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1l
bnQpCisgICAgaWYgY291bGRCZUV4cHJlc3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Np
b24KKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRkcmVzcyhl
eHByKQorICAgICAgZWxzZQorICAgICAgICBleHByCisgICAgICBlbmQKKyAgICBlbHNpZiBAdG9r
ZW5zW0BpZHhdID09ICJbIgorICAgICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luLCAwKSkKKyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0K
KyAgICAgIHJlc3VsdCA9IExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4sIExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhd
LnN0cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzTG9j
YWxMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVmZXJlbmNl
Lm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0g
MQorICAgICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50KQorICAg
IGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tpcE5ld0xp
bmUKKyAgICBjb25zdW1lKC9cQVwoXFovKQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAgbG9vcCB7
CisgICAgICBza2lwTmV3TGluZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRv
a2Vuc1tAaWR4XSkKKyAgICAgICAgdmFyaWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIiki
CisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAg
ICAgICAgIHBhcnNlRXJyb3IKKyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIHBhcnNl
RXJyb3IKKyAgICAgIGVuZAorICAgIH0KKyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAorICBkZWYg
cGFyc2VTZXF1ZW5jZShmaW5hbCwgY29tbWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4gPSBAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAgICAgIGlm
IChAaWR4ID09IEB0b2tlbnMubGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQgQHRv
a2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gIlxuIgorICAgICAgICAjIGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEKKyAgICAg
IGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgcGFyc2VFcnJvciB1bmxlc3MgaXNWYXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAgICAgIHZh
cmlhYmxlID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tl
bnNbQGlkeF0uc3RyaW5nKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1
bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiPSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZh
bHVlID0gcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5uYW1l
fSIpCisgICAgICAgIGxpc3QgPDwgQ29uc3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImVycm9y
IgorICAgICAgICBsaXN0IDw8IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4pCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAg
ICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGlj
YXRlCisgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgc2tpcE5l
d0xpbmUKKyAgICAgICAgaWZUaGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHBy
ZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hp
bGUgaW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBsaXN0IDw8
IGlmVGhlbkVsc2UKKyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisgICAg
ICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRlID0gcGFy
c2VQcmVkaWNhdGUKKyAgICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAg
ICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNv
ZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNp
ZikpXFovLCAid2hpbGUgaW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAg
ICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlmVGhlbkVs
c2UgPSBlbHNlQ2FzZQorICAgICAgICBlbmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
ZWxzZSIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNl
ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNlIGZv
ciBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiZW5k
IgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gIm1hY3JvIgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBw
YXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgbmFt
ZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YXJp
YWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNl
KC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAgICAgQGlk
eCArPSAxCisgICAgICAgIGxpc3QgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlh
YmxlcywgYm9keSkKKyAgICAgIGVsc2lmIGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAg
ICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUg
PSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgKG5v
dCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tA
aWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5k
IGl0J3MgdGhlIGxhc3Qgb25lLgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNv
ZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLgor
ICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQor
ICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBJdCdzIGRlZmlu
aXRlbHkgYW4gaW5zdHJ1Y3Rpb24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJhbmQuCisg
ICAgICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxzZQor
ICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3
aGlsZSBpbnNpZGUgb2YgaW5zdHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICBpZiAobm90
IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0Bp
ZHhdID1+IGZpbmFsKQorICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9u
IGFuZCBvZiB0aGUgc2VxdWVuY2UuCisgICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSB0cnVl
CisgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICIsIgorICAgICAgICAgICAgICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAg
ICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFsfSBh
ZnRlciAje29wZXJhbmRzLmxhc3QuZHVtcH0iKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAg
fQorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9w
ZXJhbmRzKQorICAgICAgICAgIGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgZW5kCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tl
bnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgor
ICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICAgICAgIyBNYWNybyBpbnZvY2F0
aW9uLgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAg
ICAgICBza2lwTmV3TGluZQorICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsb29wIHsKKyAg
ICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9
PSAibWFjcm8iCisgICAgICAgICAgICAgICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQorICAgICAg
ICAgICAgICAgIGNvZGVPcmlnaW5Jbm5lciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAg
ICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNl
TWFjcm9WYXJpYWJsZXMKKyAgICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFl
bmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1bWVu
dCB0byAje25hbWV9IikKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAg
ICBvcGVyYW5kcyA8PCBNYWNyby5uZXcoY29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlhYmxlcywg
Ym9keSkKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBh
cnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIpCisgICAg
ICAgICAgICAgIGVuZAorICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBp
ZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwi
CisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBwYXJzZUVycm9yICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5z
cGVjdH0gd2hpbGUgcGFyc2luZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgfQorICAgICAgICAgIGVuZAorICAgICAgICAgIGxpc3Qg
PDwgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgZWxz
ZQorICAgICAgICAgIHBhcnNlRXJyb3IgIkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFtZX0iCisg
ICAgICAgIGVuZAorICAgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlzTG9jYWxM
YWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI6Igor
ICAgICAgICAjIEl0J3MgYSBsYWJlbC4KKyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAg
ICAgbGlzdCA8PCBMYWJlbC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVsc2UK
KyAgICAgICAgICBsaXN0IDw8IExvY2FsTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgICAgICBlbmQKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNlCisgICAgICAgIHBhcnNl
RXJyb3IgIkV4cGVjdGluZyB0ZXJtaW5hbCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAgICAgZW5k
CisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisgIGVuZAor
ZW5kCisKK2RlZiBwYXJzZSh0b2tlbnMpCisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9rZW5zKQor
ICBwYXJzZXIucGFyc2VTZXF1ZW5jZShuaWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K0dQUlMgPQorICBbCisgICAidDAiLAorICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMiLAorICAg
InQ0IiwKKyAgICJjZnIiLAorICAgImEwIiwKKyAgICJhMSIsCisgICAicjAiLAorICAgInIxIiwK
KyAgICJzcCIKKyAgXQorCitGUFJTID0KKyAgWworICAgImZ0MCIsCisgICAiZnQxIiwKKyAgICJm
dDIiLAorICAgImZ0MyIsCisgICAiZnQ0IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisgICAiZmEx
IiwKKyAgICJmYTIiLAorICAgImZhMyIsCisgICAiZnIiCisgIF0KKworUkVHSVNURVJTID0gR1BS
UyArIEZQUlMKKworR1BSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJTLmpvaW4o
Jyl8KCcpICsgJykpXFxaJykKK0ZQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgRlBS
Uy5qb2luKCcpfCgnKSArICcpKVxcWicpCisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdleHAubmV3
KCdcXEEoKCcgKyBSRUdJU1RFUlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyMjEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFyc2VyIgor
cmVxdWlyZSAidHJhbnNmb3JtIgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25z
ICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkgb2Yg
c2V0dGluZ3MgbWFwcywgd2hlcmUgYSBzZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMgIworIyBhIGNv
bmZpZ3VyYXRpb24gZm9yIHRoZSBhc3NlbWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIG1h
cCAgICAgICAjCisjIGNvbnRhaW5zIGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBzZXR0
aW5ncyBuYW1lcyAoc3RyaW5ncykgYW5kICMKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVhbnMgKHRy
dWUgZm9yIGVuYWJsZWQsIGZhbHNlIGZvciBkaXNhYmxlZCkuICAgICAgIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhh
c3QpCisgIHNldHRpbmdzQ29tYmluYXRpb25zID0gW10KKyAgCisgIGRlZiBzZXR0aW5nc0NvbWJp
bmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG1hcFNvRmFyLCByZW1haW5pbmcpCisgICAgaWYg
cmVtYWluaW5nLmVtcHR5PworICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFwU29GYXIK
KyAgICAgIHJldHVybgorICAgIGVuZAorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAor
ICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gdHJ1ZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihz
ZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICAgIAorICAg
IG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gZmFsc2UK
KyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVt
YWluaW5nWzEuLi0xXSkKKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3ND
b21iaW5hdGlvbnMsIHt9LCAoYXN0LmZpbHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7fHZ8IHYu
bmFtZX0gKyBbIlg4NiIsICJBUk12NyJdKS51bmlxKQorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlv
bnMKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JTZXR0aW5n
cyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwgLi4u
IH0gICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBEZXRlcm1pbmVzIGlmIHRo
ZSBzZXR0aW5ncyBjb21iaW5hdGlvbiBpcyB2YWxpZCwgYW5kIGlmIHNvLCBjYWxscyAgICAjCisj
IHRoZSBibG9jayB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBjb2Rl
LiAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBm
b3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJjaGl0
ZWN0dXJlcyB0aGlzIGNvbWJpbmF0b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWltZWRC
YWNrZW5kcyA9IDAKKyAgc2VsZWN0ZWRCYWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2ggewor
ICAgIHwgYmFja2VuZCB8CisgICAgaXNTdXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2JhY2tl
bmRdCisgICAgcmFpc2UgdW5sZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWltZWRC
YWNrZW5kcyArPSBpZiBpc1N1cHBvcnRlZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlzU3Vw
cG9ydGVkCisgICAgICBzZWxlY3RlZEJhY2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0KKyAg
CisgIHJldHVybiBpZiBudW1DbGFpbWVkQmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUgdGhl
IEFTVCBkb3duIHRvIGEgbG93LWxldmVsIGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25hbHMp
LgorICBsb3dMZXZlbEFTVCA9IGFzdC5yZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykK
KyAgCisgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJhY2tl
bmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFs
aWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4g
fSAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0
aW5nc0NvbWJpbmF0aW9uKGFzdCwgc2V0dGluZ3NDb21iaW5hdGlvbnMpIHsgICAgICAgICAjCisj
ICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAg
ICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFeGVjdXRlcyB0aGUgZ2l2ZW4gYmxv
Y2sgZm9yIGVhY2ggdmFsaWQgc2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlICAjCisjIHNldHRp
bmdzIG1hcC4gVGhlIGFzdCBwYXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQgICAgICAg
ICAgICAgICMKKyMgKGFzdC5yZXNvbHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBmaXJzdCBm
b3JtIHdpbGwgY2FsbCBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSBmb3IgeW91LiAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JFYWNoVmFsaWRT
ZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgKm9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMpCisg
IHJhaXNlIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEKKyAgCisgIGlm
IG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuZW1wdHk/CisgICAgc2V0dGluZ3NDb21iaW5h
dGlvbnMgPSBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBlbHNlCisgICAgc2V0
dGluZ3NDb21iaW5hdGlvbnMgPSBvcHRpb25hbFNldHRpbmdzQ29tYmlhdGlvbnNbMF0KKyAgZW5k
CisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucy5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgY29u
Y3JldGVTZXR0aW5ncywgaW5kZXggfAorICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3Ms
IGFzdCkgeworICAgICAgfCBjb25jcmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJhY2tlbmQg
fAorICAgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGlu
ZGV4CisgICAgfQorICB9CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFJldHVybnMgdGhlIEMrKyBjb2Rl
IHVzZWQgdG8gdGVzdCBpZiB3ZSBhcmUgaW4gYSBjb25maWd1cmF0aW9uIHRoYXQgICMKKyMgY29y
cmVzcG9uZHMgdG8gdGhlIGdpdmVuIGNvbmNyZXRlIHNldHRpbmdzLiAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGNwcFNl
dHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdz
LnRvX2EuY29sbGVjdHsKKyAgICB8IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisgICAgICAgIiIK
KyAgICAgZWxzZQorICAgICAgICIhIgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIgKyBwYWly
WzBdCisgIH0uam9pbigiICYmICIpCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgaXNBU1RFcnJvbmVvdXMoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRlc3RzIHRvIHNlZSBp
ZiB0aGUgQVNUIGNsYWltcyB0aGF0IHRoZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUgICMK
KyMgdXNlcidzIGNvZGUsIGFmdGVyIHNldHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rl
cy4gICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVm
IGlzQVNURXJyb25lb3VzKGFzdCkKKyAgbm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5PworZW5k
CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGFzc2VydENvbmZpZ3VyYXRp
b24oY29uY3JldGVTZXR0aW5ncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBFbWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdlJ3JlIHVz
aW5nIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uLiAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworCitkZWYgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICBw
dXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICBwdXRzICIjZWxzZSIKKyAg
cHV0cyAiI2Vycm9yIFwiQ29uZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAgcHV0cyAiI2VuZGlm
IgorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGVtaXRDb2RlSW5D
b25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkgeyAgICAgICAgICAg
ICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4uIH0gICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEVtaXRzIGFsbCByZWxldmFu
dCBndWFyZHMgdG8gc2VlIGlmIHRoZSBjb25maWd1cmF0aW9uIGhvbGRzIGFuZCAgICAgICMKKyMg
Y2FsbHMgdGhlIGJsb2NrIGlmIHRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBlcnJvbmVvdXMuICAg
ICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGVt
aXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkKKyAg
cHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIGlmIGlzQVNURXJy
b25lb3VzKGFzdCkKKyAgICBwdXRzICIjZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uXCIi
CisgIGVsc2lmIG5vdCBXT1JLSU5HX0JBQ0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICBwdXRz
ICIjZXJyb3IgXCJUaGlzIGJhY2tlbmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UK
KyAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICBw
dXRzICIjZW5kaWYiCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGlu
ZGV4IHwgLi4uIH0gICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRW1pdHMg
Z3VhcmQgY29kZXMgZm9yIGFsbCB2YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxzIHRoZSBi
bG9jayAgIworIyBmb3IgdGhvc2UgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5kIG5v
dCBlcnJvbmVvdXMuICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworCitkZWYgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkKKyAgZm9yRWFjaFZhbGlk
U2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xl
dmVsQVNULCBiYWNrZW5kLCBpbmRleCB8CisgICAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3Jl
dGVTZXR0aW5ncykKKyAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFj
a2VuZCwgaW5kZXgKKyAgICBwdXRzICIjZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzNTIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK3JlcXVpcmUgImFzdCIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgbm9kZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbnN0cnVjdCBhIG5ldyBB
U1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBJZlRoZW5FbHNlIG5vZGVzIGJ5ICAgICAgICMKKyMg
c3Vic3RpdHV0aW5nIGNvbmNyZXRlIGJvb2xlYW4gdmFsdWVzIGZvciBlYWNoIFNldHRpbmcuICAg
ICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3Mg
Tm9kZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG1hcENoaWxkcmVuIHsK
KyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQor
ICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNl
dHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UKKyAgZGVmIHJlc29s
dmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRp
bmcKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZXR0aW5nc1tAbmFtZV0u
YXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNl
dHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIGFuZCBA
cmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5k
CisKK2NsYXNzIE9yCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0
LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgb3IgQHJpZ2h0LnJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBOb3QKKyAgZGVm
IHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAobm90IEBjaGlsZC5yZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxz
ZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGlmIEBwcmVkaWNhdGUucmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZQorICAgICAgQHRoZW5DYXNlLnJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICBlbHNlCisgICAgICBAZWxzZUNhc2UucmVzb2x2ZVNldHRpbmdz
KHNldHRpbmdzKQorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYg
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIEBsaXN0LmVh
Y2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGl0ZW0gPSBpdGVtLnJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykKKyAgICAgIGlmIGl0ZW0uaXNfYT8gU2VxdWVuY2UKKyAgICAgICAgbmV3TGlzdCAr
PSBpdGVtLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtCisgICAgICBl
bmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisgIGVuZAor
ZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUuZGVtYWNyb2lm
eShtYWNyb3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgbm9kZS5zdWJzdGl0dXRlKG1hcHBpbmcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGRlbWFjcm9pZnkoKSBjb25zdHJ1
Y3RzIGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IE1hY3JvICAgICAgICMKKyMgbm9k
ZXMsIHdoaWxlIHN1YnN0aXR1dGUoKSByZXBsYWNlcyBWYXJpYWJsZSBub2RlcyB3aXRoIHRoZSBn
aXZlbiAgICAgIworIyBub2RlcyBpbiB0aGUgbWFwcGluZy4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworCitjbGFzcyBOb2RlCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBtYXBDaGls
ZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLmRlbWFjcm9pZnkobWFjcm9zKQor
ICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG1hcENoaWxk
cmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShtYXBwaW5nKQor
ICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIG1h
cENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxhYmVs
cyhtYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8KKyAgZGVmIHN1YnN0
aXR1dGUobWFwcGluZykKKyAgICBteU1hcHBpbmcgPSB7fQorICAgIG1hcHBpbmcuZWFjaF9wYWly
IHsKKyAgICAgIHwga2V5LCB2YWx1ZSB8CisgICAgICB1bmxlc3MgQHZhcmlhYmxlcy5pbmNsdWRl
PyBrZXkKKyAgICAgICAgbXlNYXBwaW5nW2tleV0gPSB2YWx1ZQorICAgICAgZW5kCisgICAgfQor
ICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0
ZShteU1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZQorICBkZWYg
c3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdb
c2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNz
IExvY2FsTGFiZWwKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBpZiBtYXBw
aW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAg
IGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgc3Vic3RpdHV0ZShjb25z
dGFudHMpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbXlDb25zdGFudHMgPSBjb25zdGFudHMuZHVw
CisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBD
b25zdERlY2wKKyAgICAgICAgbXlDb25zdGFudHNbaXRlbS52YXJpYWJsZV0gPSBpdGVtLnZhbHVl
LnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwg
aXRlbS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVl
bmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKKyAgCisgIGRlZiByZW5hbWVMYWJl
bHMKKyAgICBtYXBwaW5nID0ge30KKyAgICAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRl
bSB8CisgICAgICBpZiBpdGVtLmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAgbWFwcGluZ1tpdGVt
XSA9IExvY2FsTGFiZWwudW5pcXVlCisgICAgICBlbmQKKyAgICB9CisgICAgCisgICAgc3Vic3Rp
dHV0ZUxhYmVscyhtYXBwaW5nKQorICBlbmQKKyAgCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykK
KyAgICBteU1hY3JvcyA9IG1hY3Jvcy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRl
bSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFt
ZV0gPSBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3Qu
ZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAg
ICAjIElnbm9yZS4KKyAgICAgIGVsc2lmIGl0ZW0uaXNfYT8gTWFjcm9DYWxsCisgICAgICAgIG1h
cHBpbmcgPSB7fQorICAgICAgICBteU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisgICAgICAgIHJh
aXNlICJDb3VsZCBub3QgZmluZCBtYWNybyAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmln
aW5TdHJpbmd9IiB1bmxlc3MgbXlNYWNyb3NbaXRlbS5uYW1lXQorICAgICAgICByYWlzZSAiQXJn
dW1lbnQgY291bnQgbWlzbWF0Y2ggZm9yIGNhbGwgdG8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5j
b2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIGl0ZW0ub3BlcmFuZHMuc2l6ZSA9PSBteU1hY3Jvc1tp
dGVtLm5hbWVdLnZhcmlhYmxlcy5zaXplCisgICAgICAgIGl0ZW0ub3BlcmFuZHMuc2l6ZS50aW1l
cyB7CisgICAgICAgICAgfCBpZHggfAorICAgICAgICAgIGlmIGl0ZW0ub3BlcmFuZHNbaWR4XS5p
c19hPyBWYXJpYWJsZSBhbmQgbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAg
ICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFt
ZV0gPSBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG1hcHBp
bmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAg
ICAgIGVsc2lmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBNYWNybworICAgICAgICAgICAgbXlN
eU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5v
cGVyYW5kc1tpZHhdCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFy
aWFibGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBteU15
TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gbmlsCisgICAgICAg
ICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gaXRlbS5v
cGVyYW5kc1tpZHhdCisgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCAr
PSBteU1hY3Jvc1tpdGVtLm5hbWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5
KG15TXlNYWNyb3MpLnJlbmFtZUxhYmVscy5saXN0CisgICAgICBlbHNlCisgICAgICAgIG5ld0xp
c3QgPDwgaXRlbS5kZW1hY3JvaWZ5KG15TWFjcm9zKQorICAgICAgZW5kCisgICAgfQorICAgIFNl
cXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KS5zdWJzdGl0dXRlKHt9KQorICBlbmQKK2Vu
ZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnJlc29sdmVPZmZz
ZXRzKG9mZnNldHMsIHNpemVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGhhcyBvZmZzZXQgdmFs
dWVzIGluc3RlYWQgb2Ygc3ltYm9saWMgICAgICAgIworIyBvZmZzZXRzLiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlT2Zm
c2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwK
KyAgICAgIGNoaWxkLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIH0KKyAgZW5k
CitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0CisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRz
LCBzaXplcykKKyAgICBpZiBvZmZzZXRzW3NlbGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVP
cmlnaW4sIG9mZnNldHNbc2VsZl0pCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBl
bmQKK2VuZAorCitjbGFzcyBTaXplb2YKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNp
emVzKQorICAgIGlmIHNpemVzW3NlbGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4s
IHNpemVzW3NlbGZdKQorICAgIGVsc2UKKyAgICAgIHB1dHMgIkNvdWxkIG5vdCBmaW5kICN7c2Vs
Zi5pbnNwZWN0fSBpbiAje3NpemVzLmtleXMuaW5zcGVjdH0iCisgICAgICBwdXRzICJzaXplcyA9
ICN7c2l6ZXMuaW5zcGVjdH0iCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUuZm9sZCAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyBSZXNvbHZlIGNvbnN0YW50IHJlZmVyZW5jZXMgYW5kIGNvbXB1dGUgYXJpdGht
ZXRpYyBleHByZXNzaW9ucy4gICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworCitjbGFzcyBOb2RlCisgIGRlZiBmb2xkCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBj
aGlsZCB8CisgICAgICBjaGlsZC5mb2xkCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRJ
bW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0
ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRp
YXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJ
bW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICsgQHJpZ2h0LnZhbHVlKQorICBl
bmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBA
bGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxl
c3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5p
c19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVl
IC0gQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzCisgIGRl
ZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQK
KyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJu
IHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNv
ZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICogQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFz
cyBOZWdJbW1lZGlhdGUKKyAgZGVmIGZvbGQKKyAgICBAY2hpbGQgPSBAY2hpbGQuZm9sZAorICAg
IHJldHVybiBzZWxmIHVubGVzcyBAY2hpbGQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRl
Lm5ldyhjb2RlT3JpZ2luLCAtQGNoaWxkLnZhbHVlKQorICBlbmQKK2VuZAorCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnJlc29sdmVBZnRlclNldHRpbmdzKG9mZnNl
dHMsIHNpemVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgQ29tcGlsZSBhc3NlbWJseSBhZ2FpbnN0IGEgc2V0IG9mIG9mZnNldHMuICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xh
c3MgTm9kZQorICBkZWYgcmVzb2x2ZShvZmZzZXRzLCBzaXplcykKKyAgICBkZW1hY3JvaWZ5KHt9
KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykuZm9sZAorICBlbmQKK2VuZAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDY3MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xh
c3MgUmVnaXN0ZXJJRAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICBjYXNlIG5hbWUKKyAg
ICB3aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0MSIsICJhMSIsICJyMSIsICJ0MiIsICJ0MyIKKyAg
ICAgIHRydWUKKyAgICB3aGVuICJ0NCIsICJjZnIiCisgICAgICBmYWxzZQorICAgIGVsc2UKKyAg
ICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAg
ICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgIGNhc2Uga2luZAor
ICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWFsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAg
ICAiJWF4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWF4IgorICAgICAgZWxzZQorICAg
ICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAgICBj
YXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkbCIKKyAgICAgIHdoZW4gOmhh
bGYKKyAgICAgICAgIiVkeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkeCIKKyAgICAg
IGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQyIgorICAgICAgY2Fz
ZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlY2wiCisgICAgICB3aGVuIDpoYWxm
CisgICAgICAgICIlY3giCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlY3giCisgICAgICBl
bHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MyIKKyAgICAgIGNhc2Ug
a2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWJsIgorICAgICAgd2hlbiA6aGFsZgor
ICAgICAgICAiJWJ4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWJ4IgorICAgICAgZWxz
ZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDQiCisgICAgICBjYXNlIGtp
bmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzaWwiCisgICAgICB3aGVuIDpoYWxmCisg
ICAgICAgICIlc2kiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlc2kiCisgICAgICBlbHNl
CisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJjZnIiCisgICAgICBjYXNlIGtp
bmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkaWwiCisgICAgICB3aGVuIDpoYWxmCisg
ICAgICAgICIlZGkiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlZGkiCisgICAgICBlbHNl
CisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJzcCIKKyAgICAgIGNhc2Uga2lu
ZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNwbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAg
ICAgICAgIiVzcCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzcCIKKyAgICAgIGVsc2UK
KyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5k
CisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChr
aW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgeDg2T3BlcmFu
ZChraW5kKQorICAgIHJhaXNlIHVubGVzcyBraW5kID09IDpkb3VibGUKKyAgICBjYXNlIG5hbWUK
KyAgICB3aGVuICJmdDAiLCAiZmEwIiwgImZyIgorICAgICAgIiV4bW0wIgorICAgIHdoZW4gImZ0
MSIsICJmYTEiCisgICAgICAiJXhtbTEiCisgICAgd2hlbiAiZnQyIiwgImZhMiIKKyAgICAgICIl
eG1tMiIKKyAgICB3aGVuICJmdDMiLCAiZmEzIgorICAgICAgIiV4bW0zIgorICAgIHdoZW4gImZ0
NCIKKyAgICAgICIleG1tNCIKKyAgICB3aGVuICJmdDUiCisgICAgICAiJXhtbTUiCisgICAgZWxz
ZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5k
KQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRp
YXRlCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiQje3ZhbHVlfSIKKyAgZW5kCisgIGRl
ZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIje3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xh
c3MgQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAg
IAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje29mZnNldC52YWx1ZX0oI3tiYXNlLng4
Nk9wZXJhbmQoOmludCl9KSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAg
ICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4Cisg
IGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZP
cGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50
KX0sICN7aW5kZXgueDg2T3BlcmFuZCg6aW50KX0sICN7c2NhbGV9KSIKKyAgZW5kCisKKyAgZGVm
IHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nm9wZXJhbmQoa2luZCl9IgorICBlbmQK
K2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2Cisg
ICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3thZGRy
ZXNzLnZhbHVlfSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioj
e2FkZHJlc3MudmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZQorICBk
ZWYgeDg2TGFiZWwKKyAgICBzYW5pdGl6ZUxhYmVsTmFtZShuYW1lKQorICBlbmQKKyAgZGVmIHg4
NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgeDg2TGFiZWwKKyAgZW5kCitlbmQKKworY2xhc3MgTG9j
YWxMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2TGFiZWwKKyAgICAiX19vYV8iK25hbWVbMS4uLTFd
CisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICB4ODZMYWJlbAorICBlbmQK
K2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbgorICBkZWYgeDg2T3BlcmFuZHMoKmtpbmRzKQorICAg
IHJhaXNlIHVubGVzcyBraW5kcy5zaXplID09IG9wZXJhbmRzLnNpemUKKyAgICByZXN1bHQgPSBb
XQorICAgIGtpbmRzLnNpemUudGltZXMgeworICAgICAgfCBpZHggfAorICAgICAgcmVzdWx0IDw8
IG9wZXJhbmRzW2lkeF0ueDg2T3BlcmFuZChraW5kc1tpZHhdKQorICAgIH0KKyAgICByZXN1bHQu
am9pbigiLCAiKQorICBlbmQKKworICBkZWYgeDg2U3VmZml4KGtpbmQpCisgICAgY2FzZSBraW5k
CisgICAgd2hlbiA6Ynl0ZQorICAgICAgImIiCisgICAgd2hlbiA6aGFsZgorICAgICAgInciCisg
ICAgd2hlbiA6aW50CisgICAgICAibCIKKyAgICB3aGVuIDpkb3VibGUKKyAgICAgICJzZCIKKyAg
ICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZP
cFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG51bU9wZXJhbmRzKQorICAgIGlmIG51bU9w
ZXJhbmRzID09IDMKKyAgICAgIGlmIG9wZXJhbmRzWzBdID09IG9wZXJhbmRzWzJdCisgICAgICAg
ICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwg
I3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRzWzFd
ID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJcdG1vdiN7eDg2U3VmZml4KGtpbmQpfSAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQo
a2luZCl9IgorICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBl
bmQKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wKG9wY29kZSwga2luZCkKKyAgICBoYW5k
bGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUpCisgIGVu
ZAorICAKKyAgZGVmIGhhbmRsZVg4NlNoaWZ0KG9wY29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5k
c1swXS5pc19hPyBJbW1lZGlhdGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0ZXJJRC5mb3JOYW1l
KG5pbCwgInQyIikKKyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAg
ZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
aW50KX0sICVlY3giCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICVjbCwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRl
ZiBoYW5kbGVYODZEb3VibGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAgIGNhc2UgbW9k
ZQorICAgIHdoZW4gOm5vcm1hbAorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSIKKyAgICB3aGVuIDpyZXZlcnNlCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlIG1vZGUuaW5zcGVjdAorICAgIGVuZAor
ICAgICRhc20ucHV0cyAiXHRqbmUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgIGVuZAorICAK
KyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmUob3Bjb2RlU3VmZml4LCBraW5kKQorICAgIGlmIG9w
ZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMF0udmFsdWUgPT0gMCBhbmQg
b3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Ig
b3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4
KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2lmIG9wZXJh
bmRzWzFdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMCBhbmQgb3Bl
cmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bj
b2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtp
bmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRh
c20ucHV0cyAiXHRjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KGtpbmQpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5k
CisgIAorICBkZWYgaGFuZGxlWDg2SW50QnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBo
YW5kbGVYODZJbnRDb21wYXJlKGJyYW5jaE9wY29kZVsxLi4tMV0sIGtpbmQpCisgICAgJGFzbS5w
dXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgZW5kCisg
IAorICBkZWYgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZCkKKyAgICBpZiBvcGVyYW5k
LnN1cHBvcnRzOEJpdE9uWDg2CisgICAgICAkYXNtLnB1dHMgIlx0I3tzZXRPcGNvZGV9ICN7b3Bl
cmFuZC54ODZPcGVyYW5kKDpieXRlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJsICN7b3Bl
cmFuZC54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmlu
dCl9LCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJcdCN7c2V0T3Bjb2RlfSAlYWwiCisgICAgICAk
YXNtLnB1dHMgIlx0bW92emJsICVhbCwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAj
e29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmIGhhbmRsZVg4NkludENvbXBhcmVTZXQoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4
NkludENvbXBhcmUoc2V0T3Bjb2RlWzMuLi0xXSwga2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0
T3Bjb2RlLCBvcGVyYW5kc1syXSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2VGVzdChraW5k
KQorICAgIHZhbHVlID0gb3BlcmFuZHNbMF0KKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3
aGVuIDIKKyAgICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAgIHdo
ZW4gMworICAgICAgbWFzayA9IG9wZXJhbmRzWzFdCisgICAgZWxzZQorICAgICAgcmFpc2UgIkV4
cGVjdGVkIDIgb3IgMyBvcGVyYW5kcywgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29k
ZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAgaWYgbWFzay5pc19hPyBJbW1lZGlh
dGUgYW5kIG1hc2sudmFsdWUgPT0gLTEKKyAgICAgIGlmIHZhbHVlLmlzX2E/IFJlZ2lzdGVySUQK
KyAgICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3t2YWx1ZS54ODZP
cGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2UKKyAg
ICAgICAgJGFzbS5wdXRzICJcdGNtcCN7eDg2U3VmZml4KGtpbmQpfSAkMCwgI3t2YWx1ZS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR0
ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7bWFzay54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54
ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2QnJh
bmNoVGVzdChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAg
ICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kcy5sYXN0Lng4NkxhYmVsfSIK
KyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0VGVzdChzZXRPcGNvZGUsIGtpbmQpCisgICAg
aGFuZGxlWDg2VGVzdChraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRz
Lmxhc3QpCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wQnJhbmNoKG9wY29kZSwgYnJhbmNo
T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2lu
ZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiA0
CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1bXBU
YXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAor
ICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0Lng4
NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9wY29k
ZSwga2luZCkKKyAgICBpZiBvcGVyYW5kcy5zaXplID09IDQgYW5kIG9wZXJhbmRzWzFdID09IG9w
ZXJhbmRzWzJdCisgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisg
ICAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcygic3ViI3t4ODZTdWZmaXgoa2luZCl9Iiwg
a2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgZW5kCisgICAgY2FzZSBvcGVyYW5kcy5zaXpl
CisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMK
KyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNl
bGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tq
dW1wVGFyZ2V0Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgbG93ZXJYODYKKyAgICAkYXNt
LmNvbW1lbnQgY29kZU9yaWdpblN0cmluZworICAgIGNhc2Ugb3Bjb2RlCisgICAgd2hlbiAiYWRk
aSIsICJhZGRwIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5p
c19hPyBJbW1lZGlhdGUKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJl
Z2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVy
SUQKKyAgICAgICAgaWYgb3BlcmFuZHNbMF0udmFsdWUgPT0gMAorICAgICAgICAgIHVubGVzcyBv
cGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgJGFzbS5wdXRzICJcdG1vdmwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICRhc20ucHV0
cyAiXHRsZWFsICN7b3BlcmFuZHNbMF0udmFsdWV9KCN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICBlbmQKKyAg
ICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0
ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAor
ICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAg
ICAkYXNtLnB1dHMgIlx0bGVhbCAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkg
PT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje3g4Nk9wZXJhbmRz
KDppbnQsIDppbnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbmQKKyAgICB3aGVuICJhbmRpIiwg
ImFuZHAiCisgICAgICBoYW5kbGVYODZPcCgiYW5kbCIsIDppbnQpCisgICAgd2hlbiAibHNoaWZ0
aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYWxsIiwgOmludCkKKyAgICB3aGVuICJtdWxpIgor
ICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlh
dGUKKyAgICAgICAgJGFzbS5wdXRzICJcdGltdWxsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCwg
OmludCl9IgorICAgICAgZWxzZQorICAgICAgICBoYW5kbGVYODZPcCgiaW11bGwiLCA6aW50KQor
ICAgICAgZW5kCisgICAgd2hlbiAibmVnaSIKKyAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7eDg2
T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm5vdGkiCisgICAgICAkYXNtLnB1dHMgIlx0bm90
bCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgaGFu
ZGxlWDg2T3AoIm9ybCIsIDppbnQpCisgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4
NlNoaWZ0KCJzYXJsIiwgOmludCkKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4
NlNoaWZ0KCJzaHJsIiwgOmludCkKKyAgICB3aGVuICJzdWJpIiwgInN1YnAiCisgICAgICBpZiBv
cGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAg
ICRhc20ucHV0cyAiXHRuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAgICRhc20ucHV0cyAiXHRhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7
b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIGhhbmRs
ZVg4Nk9wKCJzdWJsIiwgOmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gInhvcmkiLCAieG9ycCIK
KyAgICAgIGhhbmRsZVg4Nk9wKCJ4b3JsIiwgOmludCkKKyAgICB3aGVuICJsb2FkaSIsICJzdG9y
ZWkiLCAibG9hZHAiLCAic3RvcmVwIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZPcGVy
YW5kcyg6aW50LCA6aW50KX0iCisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNtLnB1dHMgIlx0
bW92emJsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImxvYWRoIgorICAgICAgJGFzbS5wdXRzICJcdG1v
dnp3bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJzdG9yZWIiCisgICAgICAkYXNtLnB1dHMgIlx0bW92
YiAje3g4Nk9wZXJhbmRzKDpieXRlLCA6Ynl0ZSl9IgorICAgIHdoZW4gImxvYWRkIiwgIm1vdmVk
IiwgInN0b3JlZCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAje3g4Nk9wZXJhbmRzKDpkb3Vi
bGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJhZGRkIgorICAgICAgJGFzbS5wdXRzICJcdGFkZHNk
ICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImRpdmQiCisgICAg
ICAkYXNtLnB1dHMgIlx0ZGl2c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisg
ICAgd2hlbiAic3ViZCIKKyAgICAgICRhc20ucHV0cyAiXHRzdWJzZCAje3g4Nk9wZXJhbmRzKDpk
b3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJtdWxkIgorICAgICAgJGFzbS5wdXRzICJcdG11
bHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInNxcnRkIgor
ICAgICAgJGFzbS5wdXRzICJcdHNxcnRzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImNpMmQi
CisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpp
bnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJiZGVx
IgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZQorICAgICAgJGFzbS5wdXRz
ICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje0xhYmVs
UmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkueDg2TGFiZWx9IgorICAgICAg
JGFzbS5wdXRzICJcdGplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIG9wZXJhbmRz
WzJdKS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICB3aGVu
ICJiZG5lcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiam5lIiwgOm5vcm1hbCkKKyAg
ICB3aGVuICJiZGd0IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpub3JtYWwp
CisgICAgd2hlbiAiYmRndGVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYWUiLCA6
bm9ybWFsKQorICAgIHdoZW4gImJkbHQiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImph
IiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdGVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJh
bmNoKCJqYWUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGVxdW4iCisgICAgICBoYW5kbGVYODZE
b3VibGVCcmFuY2goImplIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZG5lcXVuIgorICAgICAgaXNV
bm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZQorICAgICAgaXNFcXVhbCA9IExvY2FsTGFiZWwu
dW5pcXVlCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAg
JGFzbS5wdXRzICJcdGpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRl
cmVkKS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tMYWJlbFJlZmVyZW5jZS5u
ZXcoY29kZU9yaWdpbiwgaXNFcXVhbCkueDg2TGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93
ZXIoIlg4NiIpCisgICAgICAkYXNtLnB1dHMgIlx0am1wICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9
IgorICAgICAgaXNFcXVhbC5sb3dlcigiWDg2IikKKyAgICB3aGVuICJiZGd0dW4iCisgICAgICBo
YW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRndGVxdW4i
CisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpyZXZlcnNlKQorICAgIHdoZW4g
ImJkbHR1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6bm9ybWFsKQorICAg
IHdoZW4gImJkbHRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6bm9y
bWFsKQorICAgIHdoZW4gImJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHRzZDJzaSAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGNtcGwgJDB4ODAwMDAwMDAgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje29wZXJhbmRzWzJd
Lng4NkxhYmVsfSIKKyAgICB3aGVuICJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHRzZDJz
aSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJjZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHRz
ZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdHRlc3RsICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAkYXNtLnB1dHMgIlx0amUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1
dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisg
ICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje29wZXJhbmRzWzJdLng4NkxhYmVs
fSIKKyAgICAgICRhc20ucHV0cyAiXHRqbmUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAg
d2hlbiAibW92ZHoiCisgICAgICAkYXNtLnB1dHMgIlx0eG9ycGQgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAg
ICB3aGVuICJwb3AiCisgICAgICAkYXNtLnB1dHMgIlx0cG9wICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgd2hlbiAicHVzaCIKKyAgICAgICRhc20ucHV0cyAiXHRwdXNoICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibW92ZSIsICJzeGkycCIs
ICJ6eGkycCIKKyAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXSBh
bmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgIlx0eG9y
bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMF0gIT0gb3BlcmFuZHNbMV0KKyAgICAg
ICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgICBl
bmQKKyAgICB3aGVuICJub3AiCisgICAgICAkYXNtLnB1dHMgIlx0bm9wIgorICAgIHdoZW4gImJp
ZXEiLCAiYnBlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6aW50KQorICAgIHdo
ZW4gImJpbmVxIiwgImJwbmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6aW50
KQorICAgIHdoZW4gImJpYSIsICJicGEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphIiwg
OmludCkKKyAgICB3aGVuICJiaWFlcSIsICJicGFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamFlIiwgOmludCkKKyAgICB3aGVuICJiaWIiLCAiYnBiIgorICAgICAgaGFuZGxlWDg2SW50
QnJhbmNoKCJqYiIsIDppbnQpCisgICAgd2hlbiAiYmliZXEiLCAiYnBiZXEiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImpiZSIsIDppbnQpCisgICAgd2hlbiAiYmlndCIsICJicGd0IgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDppbnQpCisgICAgd2hlbiAiYmlndGVxIiwgImJw
Z3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmludCkKKyAgICB3aGVuICJi
aWx0IiwgImJwbHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwgOmludCkKKyAgICB3
aGVuICJiaWx0ZXEiLCAiYnBsdGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbGUiLCA6
aW50KQorICAgIHdoZW4gImJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmJ5
dGUpCisgICAgd2hlbiAiYmJuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDpi
eXRlKQorICAgIHdoZW4gImJiYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6Ynl0
ZSkKKyAgICB3aGVuICJiYmFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmJ5
dGUpCisgICAgd2hlbiAiYmJiIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDpieXRl
KQorICAgIHdoZW4gImJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6Ynl0
ZSkKKyAgICB3aGVuICJiYmd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDpieXRl
KQorICAgIHdoZW4gImJiZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmJ5
dGUpCisgICAgd2hlbiAiYmJsdCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6Ynl0
ZSkKKyAgICB3aGVuICJiYmx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsdGVxIiwg
OmJ5dGUpCisgICAgd2hlbiAiYnRpbyIsICJidHBvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVz
dCgiam8iLCA6aW50KQorICAgIHdoZW4gImJ0aXMiLCAiYnRwcyIKKyAgICAgIGhhbmRsZVg4NkJy
YW5jaFRlc3QoImpzIiwgOmludCkKKyAgICB3aGVuICJidGl6IiwgImJ0cHoiCisgICAgICBoYW5k
bGVYODZCcmFuY2hUZXN0KCJqeiIsIDppbnQpCisgICAgd2hlbiAiYnRpbnoiLCAiYnRwbnoiCisg
ICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6aW50KQorICAgIHdoZW4gImJ0Ym8iCisg
ICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpieXRlKQorICAgIHdoZW4gImJ0YnMiCisg
ICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDpieXRlKQorICAgIHdoZW4gImJ0YnoiCisg
ICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDpieXRlKQorICAgIHdoZW4gImJ0Ym56Igor
ICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmJ5dGUpCisgICAgd2hlbiAiam1wIgor
ICAgICAgJGFzbS5wdXRzICJcdGptcCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQp
fSIKKyAgICB3aGVuICJiYWRkaW8iLCAiYmFkZHBvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2go
ImFkZGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJhZGRpcyIsICJiYWRkcHMiCisgICAgICBo
YW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYmFkZGl6Iiwg
ImJhZGRweiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImp6IiwgOmludCkKKyAg
ICB3aGVuICJiYWRkaW56IiwgImJhZGRwbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRk
bCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbyIKKyAgICAgIGhhbmRsZVg4NlN1YkJy
YW5jaCgiam8iLCA6aW50KQorICAgIHdoZW4gImJzdWJpcyIKKyAgICAgIGhhbmRsZVg4NlN1YkJy
YW5jaCgianMiLCA6aW50KQorICAgIHdoZW4gImJzdWJpeiIKKyAgICAgIGhhbmRsZVg4NlN1YkJy
YW5jaCgianoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbnoiCisgICAgICBoYW5kbGVYODZTdWJC
cmFuY2goImpueiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlvIgorICAgICAgaGFuZGxlWDg2T3BC
cmFuY2goImltdWxsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJibXVsaXMiCisgICAgICBoYW5k
bGVYODZPcEJyYW5jaCgiaW11bGwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJtdWxpeiIKKyAg
ICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYm11
bGlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbnoiLCA6aW50KQorICAg
IHdoZW4gImJvcmlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqbyIsIDppbnQp
CisgICAgd2hlbiAiYm9yaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpzIiwg
OmludCkKKyAgICB3aGVuICJib3JpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAi
anoiLCA6aW50KQorICAgIHdoZW4gImJvcmlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJv
cmwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJicmVhayIKKyAgICAgICRhc20ucHV0cyAiXHRp
bnQgJDMiCisgICAgd2hlbiAiY2FsbCIKKyAgICAgICRhc20ucHV0cyAiXHRjYWxsICN7b3BlcmFu
ZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInJldCIKKyAgICAgICRhc20u
cHV0cyAiXHRyZXQiCisgICAgd2hlbiAiY2llcSIsICJjcGVxIgorICAgICAgaGFuZGxlWDg2SW50
Q29tcGFyZVNldCgic2V0ZSIsIDppbnQpCisgICAgd2hlbiAiY2luZXEiLCAiY3BuZXEiCisgICAg
ICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRuZSIsIDppbnQpCisgICAgd2hlbiAiY2lhIiwg
ImNwYSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGEiLCA6aW50KQorICAgIHdo
ZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YWUi
LCA6aW50KQorICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJl
U2V0KCJzZXRiIiwgOmludCkKKyAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAgIGhhbmRs
ZVg4NkludENvbXBhcmVTZXQoInNldGJlIiwgOmludCkKKyAgICB3aGVuICJjaWd0IiwgImNwZ3Qi
CisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnIiwgOmludCkKKyAgICB3aGVuICJj
aWd0ZXEiLCAiY3BndGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0Z2UiLCA6
aW50KQorICAgIHdoZW4gImNpbHQiLCAiY3BsdCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVT
ZXQoInNldGwiLCA6aW50KQorICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiCisgICAgICBoYW5k
bGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisgICAgd2hlbiAidGlvIgorICAgICAg
aGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQpCisgICAgd2hlbiAidGlzIgorICAgICAgaGFu
ZGxlWDg2U2V0VGVzdCgic2V0cyIsIDppbnQpCisgICAgd2hlbiAidGl6IgorICAgICAgaGFuZGxl
WDg2U2V0VGVzdCgic2V0eiIsIDppbnQpCisgICAgd2hlbiAidGlueiIKKyAgICAgIGhhbmRsZVg4
NlNldFRlc3QoInNldG56IiwgOmludCkKKyAgICB3aGVuICJ0Ym8iCisgICAgICBoYW5kbGVYODZT
ZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgd2hlbiAidGJzIgorICAgICAgaGFuZGxlWDg2U2V0
VGVzdCgic2V0cyIsIDpieXRlKQorICAgIHdoZW4gInRieiIKKyAgICAgIGhhbmRsZVg4NlNldFRl
c3QoInNldHoiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ym56IgorICAgICAgaGFuZGxlWDg2U2V0VGVz
dCgic2V0bnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJwZWVrIgorICAgICAgJGFzbS5wdXRzICJcdG1v
dmwgI3tvcGVyYW5kc1swXS52YWx1ZSAqIDR9KCVlc3ApLCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgIHdoZW4gInBva2UiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLnZhbHVlICogNH0oJWVz
cCkiCisgICAgd2hlbiAiY2RxaSIKKyAgICAgICRhc20ucHV0cyAiXHRjZHEiCisgICAgd2hlbiAi
aWRpdmkiCisgICAgICAkYXNtLnB1dHMgIlx0aWRpdmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICB3aGVuICJmaWkyZCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91
YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwc2xscSAkMzIsICV4bW03IgorICAg
ICAgJGFzbS5wdXRzICJcdHBvciAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpk
b3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cHNybHEgJDMyLCAleG1tNyIKKyAg
ICAgICRhc20ucHV0cyAiXHRtb3ZzZCAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiQmFkIG9wY29kZTogI3tvcGNvZGV9IgorICAg
IGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisjZGVmaW5l
IENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVm
aW5lIENvbW1vblNsb3dQYXRoc19oCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRl
ICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5o
IgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKIApAQCAtNDEsNiArNDIsMzggQEAgbmFtZXNwYWNlIEpT
QyB7CiAKIG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMgewogCitBTFdBWVNfSU5MSU5FIEV4ZWNT
dGF0ZSogYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyRmlsZSogcmVnaXN0
ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5jdGlvbiog
Y2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgQVNTRVJUKCFjYWxsZWUt
PmlzSG9zdEZ1bmN0aW9uKCkpOworICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxl
ZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKCk7CisKKyAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3Qg
Y2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KKyAg
ICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhleGVjLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykp
CisgICAgICAgIHJldHVybiAwOworCisgICAgQVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworCisgICAgLy8gVG9vIGZldyBh
cmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1lIGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBt
aXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5lZC4KKyAgICBzaXplX3QgZGVsdGEgPSBuZXdD
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwor
ICAgIFJlZ2lzdGVyKiBzcmMgPSBleGVjLT5yZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlciogZHN0
ID0gZXhlYy0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKKworICAgIGludCBpOworICAgIGludCBlbmQg
PSAtRXhlY1N0YXRlOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAg
IGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBzcmNbaV07CisK
KyAgICBlbmQgLT0gZGVsdGE7CisgICAgZm9yICggOyBpID49IGVuZDsgLS1pKQorICAgICAgICBk
c3RbaV0gPSBqc1VuZGVmaW5lZCgpOworCisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gRXhlY1N0
YXRlOjpjcmVhdGUoZHN0KTsKKyAgICBBU1NFUlQoKHZvaWQqKW5ld0V4ZWMgPD0gcmVnaXN0ZXJG
aWxlLT5lbmQoKSk7CisgICAgcmV0dXJuIG5ld0V4ZWM7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9v
bCBvcEluc3RhbmNlT2ZTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1
ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3RvKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNDZWxsKCkg
fHwgIWJhc2VWYWwuaXNDZWxsKCkgfHwgIXByb3RvLmlzQ2VsbCgpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMTA0Nzg3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgorI2luY2x1ZGUg
IkV4ZWN1dGlvbkhhcm5lc3MuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVREcml2
ZXIuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKQEAgLTg0LDcgKzg1LDcgQEAgSW50cmluc2ljIE5h
dGl2ZUV4ZWN1dGFibGU6OmludHJpbnNpYygpIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRp
YyB2b2lkIGpldHRpc29uQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRy
PFQ+JiBjb2RlQmxvY2spCiB7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpICE9
IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5n
SklUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+YWx0
ZXJuYXRpdmUoKSk7CiAgICAgT3duUHRyPFQ+IGNvZGVCbG9ja1RvSmV0dGlzb24gPSBjb2RlQmxv
Y2sucmVsZWFzZSgpOwogICAgIGNvZGVCbG9jayA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8VD4oY29k
ZUJsb2NrVG9KZXR0aXNvbi0+cmVsZWFzZUFsdGVybmF0aXZlKCkpOwpAQCAtMTY3LDkgKzE2OCwz
MCBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpbWl6CiAgICAgcmV0dXJu
IGVycm9yOwogfQogCit2b2lkIEV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGV4ZWMs
IG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJ
VCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKworaW5saW5lIGNv
bnN0IGNoYXIqIHNhbXBsaW5nRGVzY3JpcHRpb24oSklUVHlwZSBqaXRUeXBlKQoreworICAgIHN3
aXRjaCAoaml0VHlwZSkgeworICAgIGNhc2UgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuazoKKyAg
ICAgICAgcmV0dXJuICJJbnRlcnByZXRlciBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBjYXNl
IEpJVENvZGU6OkJhc2VsaW5lSklUOgorICAgICAgICByZXR1cm4gIkJhc2VsaW5lIENvbXBpbGF0
aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6REZHSklUOgorICAgICAgICByZXR1cm4g
IkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiBKU09iamVjdCog
RXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hh
aW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAg
IFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxp
bmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9u
IChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rl
c2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURf
UEFSQU0oaml0VHlwZSk7CkBAIC0yMTAsNyArMjMyLDcgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRh
YmxlOjpjb21waWxlSW50ZXJuYQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFq
aXRDb21waWxlSWZBcHByb3ByaWF0ZShleGVjLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZv
ckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbihleGVjLCBtX2V2
YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAgICAgICByZXR1cm4g
MDsKICNlbmRpZgogCkBAIC0yOTUsOSArMzE3LDE1IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0
YWJsZTo6Y29tcGlsZU9wdGkKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgUHJvZ3JhbUV4
ZWN1dGFibGU6OmppdENvbXBpbGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGJvb2wgcmVzdWx0
ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZXhlYywgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2pp
dENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQpOworfQorCiBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNv
bXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWlu
Tm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNh
bXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUg
Q29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBT
YW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUp
KTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBA
IC0zMzYsNyArMzY0LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50
ZQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlSWZBcHByb3By
aWF0ZShleGVjLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUp
KQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbihleGVjLCBtX3Byb2dyYW1Db2RlQmxvY2ss
IG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgog
CkBAIC00MTIsNyArNDQwLDcgQEAgRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6YgogICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAgIHJlc3VsdCA9
IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4ocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKTsK
ICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29k
ZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQz
OCw2ICs0NjYsMTggQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZU9wdAog
ICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBp
bGVGb3JDYWxsKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBp
bGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYywgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENv
ZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUs
IEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7Cit9CisKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ29uc3Ry
dWN0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5j
dGlvbklmQXBwcm9wcmlhdGUoZXhlYywgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29k
ZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3lt
Ym9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7Cit9CisKIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNvZGVCbG9ja1dpdGhCeXRlY29kZUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
CiB7CiAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKGtpbmQpOwpAQCAtNDgyLDcgKzUyMiw3IEBAIFBhc3NPd25QdHI8RnVuY3Rpb25Db2RlQmxv
Y2s+IEZ1bmN0aW9uRXgKIAogSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZv
ckNhbGxJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWlu
Tm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNh
bXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUg
Q29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBT
YW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUp
KTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC01
MDQsNyArNTQ0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgog
ICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNhbGwtPnNoYXJlZFN5bWJvbFRhYmxl
KCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHBy
b3ByaWF0ZShleGVjLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0
Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSkpCisgICAg
aWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYywgbV9jb2RlQmxvY2tGb3JDYWxs
LCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3lt
Ym9sVGFibGUsIGppdFR5cGUsIENvZGVGb3JDYWxsKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5k
aWYKIApAQCAtNTI0LDcgKzU2NCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNv
bXBpbGVGb3IKIAogSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0
cnVjdEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5O
b2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBD
b21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNh
bXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkp
OwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAg
LTU0Niw3ICs1ODYsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9y
CiAgICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LT5zaGFyZWRTeW1i
b2xUYWJsZSgpOwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlv
bklmQXBwcm9wcmlhdGUoZXhlYywgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZv
ckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9s
VGFibGUsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4
ZWMsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0
Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBD
b2RlRm9yQ29uc3RydWN0KSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTA0Nzg3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEV4ZWN1dGFibGVfaAogCiAjaW5jbHVk
ZSAiQ2FsbERhdGEuaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAi
Tm9kZXMuaCIKQEAgLTM5LDEyICs0MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBE
ZWJ1Z2dlcjsKICAgICBjbGFzcyBFdmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIEZ1bmN0aW9uQ29k
ZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9n
cmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwogCiAgICAgc3RydWN0IEV4
Y2VwdGlvbkluZm87CiAgICAgCi0gICAgZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29k
ZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKICAgICBlbnVtIENvbXBpbGF0aW9uS2luZCB7
IEZpcnN0Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21waWxhdGlvbiB9OwogCiAgICAgaW5saW5l
IGJvb2wgaXNDYWxsKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAgLTMxOSw2ICszMjAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUg
OiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1
dGFibGUgQmFzZTsKIApAQCAtMzM4LDYgKzM0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZShK
U0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlKEV4ZWNTdGF0ZSopOwogI2Vu
ZGlmCiAKICAgICAgICAgRXZhbENvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAtMzg0
LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBQcm9ncmFt
RXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYg
U2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC00MTEsNiArNDE1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRp
bWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoRXhlY1N0
YXRlKik7CiAjZW5kaWYKIAogICAgICAgICBQcm9ncmFtQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRl
Y29kZSgpCkBAIC00NTMsNiArNDU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBG
dW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsK
IApAQCAtNTA4LDYgKzUxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFC
TEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNhbGwoSlNHbG9i
YWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNhbGwoRXhlY1N0YXRlKik7CiAj
ZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ2FsbCgpIGNvbnN0CkBAIC01MzUs
NiArNTQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAg
ICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0
YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoRXhlY1N0YXRlKik7CiAj
ZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ29uc3RydWN0KCkgY29uc3QKQEAg
LTU4Miw2ICs1OTAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgamV0dGlz
b25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdENvbXBpbGVGb3IoRXhlY1N0YXRl
KiBleGVjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAgICAgICAgaml0Q29tcGls
ZUZvckNhbGwoZXhlYyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgICAg
ICBqaXRDb21waWxlRm9yQ29uc3RydWN0KGV4ZWMpOworICAgICAgICB9CiAjZW5kaWYKICAgICAg
ICAgCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVz
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlv
bkhhcm5lc3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEV4ZWN1dGlv
bkhhcm5lc3NfaAorI2RlZmluZSBFeGVjdXRpb25IYXJuZXNzX2gKKworI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkpJVERyaXZlci5oIgor
I2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+CitpbmxpbmUgYm9vbCBwcmVwYXJlRm9yRXhlY3V0
aW9uKEV4ZWNTdGF0ZSogZXhlYywgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJ
VENvZGUmIGppdENvZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAg
ICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAgICAgICBM
TEludDo6Z2V0RW50cnlwb2ludChleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay5nZXQoKSwg
aml0Q29kZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUo
TExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGV4ZWMsIGNvZGVCbG9j
aywgaml0Q29kZSwgaml0VHlwZSk7Cit9CisKK2lubGluZSBib29sIHByZXBhcmVGdW5jdGlvbkZv
ckV4ZWN1dGlvbihFeGVjU3RhdGUqIGV4ZWMsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNv
ZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2Rl
V2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6
OkpJVFR5cGUgaml0VHlwZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworI2lmIEVO
QUJMRShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsK
KyAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAg
ICAgIExMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBraW5k
LCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShraW5kKTsKKyNlbmRpZiAvLyBFTkFCTEUo
TExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYywg
Y29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIHN5bWJvbFRhYmxlLCBq
aXRUeXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklU
KQorCisjZW5kaWYgLy8gRXhlY3V0aW9uSGFybmVzc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
NyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVi
bGljIFdyaXRlQmFycmllcjxVbmtub3duPiB7CiAgICAgICAgIHR5cGVkZWYgV3JpdGVCYXJyaWVy
PFVua25vd24+IEJhc2U7CkBAIC0xMjQsNiArMTI1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
fTsKIAogICAgIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBXYWxrZXI7CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBACiBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIFN0
cnVjdHVyZTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJv
cGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OworICAgIGNsYXNz
IFN0cnVjdHVyZTsKIAogICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcywKQEAgLTE2NCw2ICsxNjUsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAgICAgCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAgICAgICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAgIH07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxMDQ3ODcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rp
b25Qcm90b3R5cGU7CiAgICAgY2xhc3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFs
T2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRp
dmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgbmFtZXNwYWNlIERGRyB7
CkBAIC0xNDAsNiArMTQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAg
ICAgICBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgc3Rh
dGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElk
ZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw4
IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICAsIGtleXdv
cmRzKGFkb3B0UHRyKG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRlcnByZXRlcigwKQog
ICAgICwgaGVhcCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFzc0luZm8oJkpTQXJy
YXk6OnNfaW5mbykKKyAgICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpTRmluYWxPYmplY3Q6
OnNfaW5mbykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxhc3RTY3JhdGNoQnVm
ZmVyKDApCiAjZW5kaWYKQEAgLTIxOCw3ICsyMjAsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFs
RGF0YShHbG9iYWxEYXRhVHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1bmtz
KHRoaXMpKTsKICNlbmRpZgogCi0gICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUodGhpcy0+Y2Fu
VXNlSklUKCkpOworICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKCZsbGludERhdGEsIHRoaXMt
PmNhblVzZUpJVCgpKTsKIAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xsZWN0KCk7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2
aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNiBAQAogI2RlZmluZSBKU0dsb2Jh
bERhdGFfaAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oIgotI2lu
Y2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5j
bHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRl
ICJTdHJvbmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJKSVRTdHVicy5o
IgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRl
ICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUg
IlN0cm9uZy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJUaW1lb3V0Q2hl
Y2tlci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYgKzY2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7
CiAgICAgY2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmE7CiAgICAg
Y2xhc3MgUmVnRXhwQ2FjaGU7CkBAIC0yNDgsNiArMjUwLDEyIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247CisKKyAgICAg
ICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOworICAgICAgICBjb25z
dCBDbGFzc0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CisKKyAgICAgICAgTExJ
bnQ6OkRhdGEgbGxpbnREYXRhOworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgUmV0dXJuQWRk
cmVzc1B0ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBob3N0Q2FsbFJldHVy
blZhbHVlOwpAQCAtMzUyLDYgKzM2MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogI3VuZGVmIHJlZ2lz
dGVyVHlwZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNHbG9iYWxEYXRh
KEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKICAgICAgICAgc3Rh
dGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAgdm9p
ZCBjcmVhdGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBl
OwogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7Cisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBSZWdFeHBD
b25zdHJ1Y3RvcjsKQEAgLTMzNSw2ICszMzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
dm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyosIGludCBjb3VudCk7CiAK
ICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVzZXQgaW50byBpbml0LgogICAg
ICAgICB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CiAgICAgICAgIHZvaWQgcmVzZXQo
SlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAg
ICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9y
OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwpAQCAtMjU5LDYgKzI2MCw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQ
cm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8g
Tm9ib2R5IHNob3VsZCBldmVyIGFzayBhbnkgb2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0aGlu
ZyBhbHJlYWR5IGtub3duIHRvIGJlIGEgSlNPYmplY3QuCiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6
aXNBUElWYWx1ZVdyYXBwZXI7CiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7
CkBAIC0zNzAsNiArMzczLDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5l
U3RvcgogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJpdmF0
ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAg
CiAgICAgICAgIGV4cGxpY2l0IEpTRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNPYmpl
Y3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvciA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3Mg
SklUOwpAQCAtOTYsNiArOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAg
cHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAg
ICAgICAgCiAgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFi
bGVTbG90KTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhY2hlZFN0cnVj
dHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2
aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBKU1N0cmluZzsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAg
ICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKICAgICBKU1N0cmluZyog
anNFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsKQEAgLTI0MSw2ICsyNDIsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRl
KikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIqKSBjb25z
dDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFyKikgY29uc3Q7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAx
MDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkIHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJsZS4KICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8PCAxOwogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEgPDwgMjsKQEAgLTg3LDYg
Kzg5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAg
ICBib29sIGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA8
PSAoMSA8PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAgICAgICBib29sIGlzU2V0
T25GbGFnczIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8PCA4KSk7
IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEwNDc4
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogCiAg
ICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAg
ICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2Jq
ZWN0IEJhc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDEwIEBAIHVuc2lnbmVkIG1heGlt
dW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGkKIAogdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVw
dGg7CiAKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7Citp
bnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2ludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkBAIC0xMzYsNiArMTQwLDEwIEBA
IHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIAogICAgIFNFVChtYXhpbXVtSW5saW5pbmdE
ZXB0aCwgNSk7CiAKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJt
VXAsICAgICAtMTAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFu
eXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CisgICAgU0VU
KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb24sICAgICAgICAgICAgLTEwMCk7CisKICAg
ICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCwgICAgIC0x
MDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdX
YXJtVXAsIC01MDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGlt
aXplQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEwNDc4
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsMTAgQEAgZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZv
ckNvbnN0cgogCiBleHRlcm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERlcHRo
IG9mIGlubGluZSBzdGFjaywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMu
CiAKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVw
OworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVT
b29uOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwog
ZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1V
cDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJM
b25nV2FybVVwOwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9w
dGltaXplQW55dGltZVNvb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
Y29wZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2NvcGVDaGFpbi5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY29wZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFs
T2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0
b3I7CiAgICAgCkBAIC05MSw2ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0
aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToK
KyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAg
ICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zp
c2l0Q2hpbGRyZW47CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAg
IGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5RGF0
YTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBD
bGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9uIDEw
NDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogCiAg
ICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlNDZWxsIHsKQEAgLTc0LDYgKzc1LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBTdHJ1
Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxh
dGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTE2LDYgKzkxNiwxMiBAQAogI2RlZmluZSBFTkFCTEVf
SklUIDEKICNlbmRpZgogCisvKiBPbiBzb21lIG9mIHRoZSBwbGF0Zm9ybXMgd2hlcmUgd2UgaGF2
ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNvIGhhdmUgdGhlIAorICAgbG93LWxldmVsIGludGVycHJl
dGVyLiAqLworI2lmIEVOQUJMRShKSVQpICYmIFBMQVRGT1JNKE1BQykgJiYgVVNFKEpTVkFMVUUz
Ml82NCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5B
QkxFX0RGR19KSVQpICYmIEVOQUJMRShKSVQpCiAvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gWDg2
IGFuZCBYODZfNjQuICBPbmx5IHRlc3RlZCBvbiBNYWMgYW5kIEdOVS9MaW51eC4gKi8KICNpZiAo
Q1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpICYmIChQTEFURk9STShNQUMpIHx8IE9TKExJTlVYKSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2
aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBfX0NGU3RyaW5nICogQ0ZTdHJpCiAvLyBMYW5kaW5nIHRoZSBmaWxlIG1vdmVzIGluIG9uZSBw
YXRjaCwgd2lsbCBmb2xsb3cgb24gd2l0aCBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgbmFtZXNwYWNl
cy4KIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRvcjsK
K2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1
Y3QgSWRlbnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yOwogc3RydWN0IElkZW50aWZpZXJMQ2hh
ckZyb21VQ2hhclRyYW5zbGF0b3I7CiB9CkBAIC03MCw3ICs3MSw4IEBAIGNsYXNzIFN0cmluZ0lt
cGwgewogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xh
dG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAgICAg
ZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7Ci0KKyAgICBmcmllbmQgY2xhc3MgSlNDOjpM
TEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiBwcml2YXRlOgogICAgIGVudW0gQnVmZmVyT3du
ZXJzaGlwIHsKICAgICAgICAgQnVmZmVySW50ZXJuYWwsCg==
</data>
<flag name="commit-queue"
          id="122890"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122172</attachid>
            <date>2012-01-11 22:37:51 -0800</date>
            <delta_ts>2012-01-12 14:24:45 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_14.diff</filename>
            <type>text/plain</type>
            <size>387190</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0Nzg5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxNyBA
QAorMjAxMi0wMS0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV09SSyBJTiBQUk9HUkVTUy4gIEl0IGNhbiBydW4gc2ltcGxlIHByb2dyYW1zIGJ1
dCBvdGhlcndpc2Ugc3RpbGwgbmVlZHMKKyAgICAgICAgc29tZSBsb3ZlLgorICAgICAgICAKKyAg
ICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBjYWxs
aW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExMSW50
LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAgd2ls
bCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIgdXAg
dG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4KKyAg
ICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9mIG91
ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMgY29t
cGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gKKyAg
ICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1cmlu
Zy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVjdCBh
Y2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2ljYWxs
eSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAgICAg
ICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJlc3Qg
b2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGluIHRo
ZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAorICAg
ICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWlyZSBw
cmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorCisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJv
bmdSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtDYWxscyk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxscyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29k
ZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmpldHRpc29u
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAg
KEpTQzo6UHJvZ3JhbUNvZGVCbG9jazo6aml0Q29tcGlsZSk6CisgICAgICAgIChKU0M6OkV2YWxD
b2RlQmxvY2s6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6
aml0Q29tcGlsZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5n
T3Bwb3J0dW5pdHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omhhc09wdGltaXplZFJlcGxh
Y2VtZW50KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRMTEludENhbGxMaW5rSW5mbyk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkRnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6ZG9udEpJVEFueXRpbWVTb29uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpqaXRBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0U29v
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGxpbnRFeGVjdXRlQ291bnRlcik6CisgICAg
ICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246
Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OkxMSW50Q2FsbExpbmtJbmZv
KToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6
CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChK
U0M6OkxMSW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29k
ZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdERpcmVjdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENhbGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdCk6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxp
dGllcy5oOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBoZWFwL0FsbG9jYXRpb25TcGFjZS5o
OgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoK
KyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6RXhlY1N0
YXRlOjpjdXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpp
c09wY29kZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKToKKyAgICAgICAg
KiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
Z2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVy
L1JlZ2lzdGVyRmlsZS5oOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcDog
QWRkZWQuCisgICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRl
KToKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAg
KiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNz
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6Cisg
ICAgICAgIChKU0M6OkpJVENvZGU6OmlzT3B0aW1pemluZ0pJVCk6CisgICAgICAgIChKU0M6OkpJ
VENvZGU6OmlzQmFzZWxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6SklUQ29kZSk6
CisgICAgICAgICogaml0L0pJVERyaXZlci5oOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlSWZB
cHByb3ByaWF0ZSk6CisgICAgICAgIChKU0M6OmppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlh
dGUpOgorICAgICAgICAqIGppdC9KSVRFeGNlcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6aml0
VGhyb3cpOgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklO
RV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAg
ICAgKiBsbGludDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRDb21tb24uaDogQWRkZWQu
CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxM
SW50OjpEYXRhOjpEYXRhKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6On5EYXRhKToKKyAg
ICAgICAgKiBsbGludC9MTEludERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpE
YXRhOjpleGNlcHRpb25JbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6
b3Bjb2RlTWFwKToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnRzLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQpOgorICAgICAgICAo
SlNDOjpMTEludDo6Z2V0RXZhbEVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0
UHJvZ3JhbUVudHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuaDog
QWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBs
bGludC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6Omlu
dGVycHJldGVyVGhyb3cpOgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuVG9UaHJvd0ZvclRo
cm93bkV4Y2VwdGlvbik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93KToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmNhbGxUb1Rocm93KToKKyAgICAgICAgKiBsbGludC9MTEludEV4
Y2VwdGlvbnMuaDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9IRUxQRVJfREVDTCk6CisgICAgICAgIChK
U0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgor
ICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9zdENhbGwpOgorICAgICAgICAoSlNDOjpMTElu
dDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAg
ICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRP
ZmZsaW5lQXNtQ29uZmlnLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6
OmR1bW15KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6
CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNr
VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZXZhbEVu
dHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6cHJvZ3JhbUVudHJ5VGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6IEFkZGVkLgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRlZC4KKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtOiBBZGRlZC4K
KyAgICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtL2FzbS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc3QucmI6IEFkZGVkLgor
ICAgICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxp
bmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYjogQWRkZWQuCisgICAgICAgICogb2Zm
bGluZWFzbS9pbnN0cnVjdGlvbnMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb2Zm
c2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20v
b2Zmc2V0cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9wYXJzZXIucmI6IEFkZGVk
LgorICAgICAgICAqIG9mZmxpbmVhc20vcmVnaXN0ZXJzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBv
ZmZsaW5lYXNtL3NldHRpbmdzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3RyYW5z
Zm9ybS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYucmI6IEFkZGVkLgorICAg
ICAgICAqIHJ1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOiBBZGRlZC4KKyAgICAgICAg
KiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0
aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6Cisg
ICAgICAgIChKU0M6OmpldHRpc29uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1
dGFibGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpzYW1wbGluZ0Rlc2NyaXB0aW9uKToK
KyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6UHJv
Z3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
RXhlY3V0YWJsZTo6YmFzZWxpbmVDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25F
eGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFsKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwpOgorICAgICAgICAq
IHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6
OmppdENvbXBpbGVGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6cHJlcGFyZUZvckV4ZWN1dGlvbik6CisgICAgICAgIChKU0M6
OnByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbik6CisgICAgICAgICogcnVudGltZS9KU0FycmF5
Lmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVu
Y3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChK
U0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xv
YmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNUeXBlSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgor
ICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6Omlu
aXRpYWxpemVPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAg
KiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAgICAgKiB3dGYvUGxhdGZv
cm0uaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisKIDIwMTItMDEtMTEgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBDb2RlQmxvY2s6Om1fZXhl
Y3V0ZUNvdW50ZXIgc2hvdWxkIGJlIHJlbmFtZWQgdG8gQ29kZUJsb2NrOjptX2ppdEV4ZWN1dGVD
b3VudGVyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQko
cmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAw
NiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSwgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTYwLDYgKzYwLDcgQEAgYWxsIDogXAogICAgIFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIFwK
ICAgICBTdHJpbmdQcm90b3R5cGUubHV0LmggXAogICAgIGRvY3MvYnl0ZWNvZGUuaHRtbCBcCisg
ICAgTExJbnRBc3NlbWJseS5oLlBIT05ZIFwKICMKIAogIyBsb29rdXAgdGFibGVzIGZvciBjbGFz
c2VzCkBAIC0xMDQsMyArMTA1LDExIEBAIEhlYWRlckRldGVjdGlvbi5oIDoKIAllY2hvID4gJEAK
IAogZW5kaWYKKworIyBBc3NlbWJseSBmb3IgdGhlIExvd0xldmVsSW50ZXJwcmV0ZXIKKworIyBU
aGlzIGJ1aWxkcyBldmVyeSB0aW1lIGJlY2F1c2UgdGhlcmUgaXMgbm8gZWFzeSB3YXkgdG8gZGVz
Y3JpYmUKKyMgdGhlIGRlcGVuZGVuY2llcyB1c2luZyBtYWtlLiBJbnN0ZWFkLCB0aGUgYXNzZW1i
bGVyIHdpbGwgZGVjaWRlIG9uCisjIGl0cyBvd24gd2hldGhlciBvciBub3QgaXQgZGlkIGFueXRo
aW5nIHRoYXQgd291bGQgbGVhZCB0byBhIGNoYW5nZS4KK0xMSW50QXNzZW1ibHkuaC5QSE9OWToK
KwlydWJ5ICQoSmF2YVNjcmlwdENvcmUpL29mZmxpbmVhc20vYXNtLnJiICQoSmF2YVNjcmlwdENv
cmUpL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtICQoQlVJTFRfUFJPRFVDVFNfRElSKS9K
U0NMTEludE9mZnNldHNFeHRyYWN0b3IgPiBMTEludEFzc2VtYmx5LmgKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNyw2ICs3LDE1IEBACiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQWdncmVn
YXRlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50
IE9mZnNldHMgKi8gPSB7CisJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwQUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJMTEludCBPZmZzZXRzIiAqLzsK
KwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5l
cmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCisJCQkpOworCQkJbmFtZSA9ICJMTEludCBPZmZzZXRz
IjsKKwkJCXByb2R1Y3ROYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CisJCX07CiAJCTY1RkIzRjY2
MDlEMTFFOTEwMEY0OURFQiAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhB
Z2dyZWdhdGVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNjVGQjNGNzcwOUQx
MUVCRDAwRjQ5REVCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRl
VGFyZ2V0ICJEZXJpdmVkIFNvdXJjZXMiICovOwpAQCAtMTQsNiArMjMsOSBAQAogCQkJCTY1RkIz
RjY1MDlEMTFFOTEwMEY0OURFQiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJ
NUQzNURFRTEwQzdDMTQwQjAwODY0OEIyIC8qIEdlbmVyYXRlIERUcmFjZSBoZWFkZXIgKi8sCiAJ
CQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3Vy
Y2VzIjsKIAkJCXByb2R1Y3ROYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCX07CkBAIC00OCw2
ICs2MCwxMCBAQAogCQkwQkFDOTRBMDEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rp
b25WZXJpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkNE
ODM1NzE0ODU4NDUyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMg
LyogVGVtcG9yYXJ5Q2hhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEJGMjhBMjkxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJGMjhBMjgx
MUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovOyB9OworCQkwRjBCODM5QTE0QkNG
NDVEMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJ
bnRFbnRyeXBvaW50cy5jcHAgKi87IH07CisJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBM
TEludEVudHJ5cG9pbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEI4MzlD
MTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuY3BwICovOyB9OworCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRU
aHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0
RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTkxNEJDRjU2MjAw
ODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNB
QjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQUExNEJDRjVCOTAwODg1QjRG
IC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtNTgsOSArNzQsMTMgQEAKIAkJMEYwQjgzQjUxNEJDRjg2MjAw
ODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENh
bGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjYxNEJD
RjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8q
IENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2Fs
bFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJ
bnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTVGMTVG
MTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBD
b21tb25TbG93UGF0aHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjE2RDcyNjE0MkMzOUMwMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTZENzI0MTQyQzM5
QTIwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwICovOyB9OwogCQkwRjIxQzI2ODE0QkU1RjY4MDBB
REM2NEIgLyogSklURHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0MxNEJF
NzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVj
dXRpb25IYXJuZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktp
bmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFD
Mjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0YxNEJFQUE4
MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRl
Y29kZUNvbnZlbnRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEYyNDJEQTcxM0YzQjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NkYxNDcz
OEYzMTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2Rl
QmxvY2tzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEYyQzU1NzAxNDczOEYzNTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkQxNDczOEYyRTAw
MTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICovOyB9OwpAQCAtNzEsNiArOTEsMTkgQEAKIAkJ
MEY0MzE3MzgxNDZCQUM2OTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MzE3MzYxNDZCQUM2NTAwN0Uz
ODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRp
b25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2
ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3
MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNw
cCAqLzsgfTsKKwkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUUx
NEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAv
KiBMTEludEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi87
IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tdW51c2VkLXBhcmFtZXRlciI7IH07
IH07CisJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEEwMTRCQTdGODIw
MEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwICovOyB9OworCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25z
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4
MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2
ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBM
TEludENvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM2
MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQzE0QkJCMTdBMDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAgKi87IH07CisJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBM
b3dMZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
NDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8q
IExMSW50RGF0YS5jcHAgKi87IH07CisJCTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTElu
dERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIg
LyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1
cm5WYWx1ZS5jcHAgKi87IH07CisJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2Fs
bFJldHVyblZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUYwOENG
MTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAwNDcy
QTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjIwMTc0MTQzRkNEMzMwMDY4Qjc3QyAvKiBERkdW
YXJpYWJsZUFjY2Vzc0RhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNjIwMTcyMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0Rh
dGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjYyMDE3NTE0M0ZDRDM3MDA2OEI3N0MgLyogREZHT3BlcmFuZHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjIwMTcxMTQzRkNEMkYwMDY4Qjc3QyAv
KiBERkdPcGVyYW5kcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0zNzEsNyArNDA0LDcgQEAKIAkJODZCOTlBRTMxMTdFNTc4MTAwREY1QTkwIC8q
IFN0cmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODZCOTlBRTExMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QkIwOUMwMTM4RTM4
MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJFMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNo
LmNwcCAqLzsgfTsKIAkJODZCQjA5QzExMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJGMTM4
RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggKi87IH07Ci0JCTg2QzM2RUVBMEVFMTI4OUQw
MEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1i
bGVyLmggKi87IH07CisJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZF
RTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0Yw
IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2QzU2OEREMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxl
ckFSTS5jcHAgKi87IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2Vt
Ymxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLzsgfTsK
IAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERGMTFBMjEzRUUwMDA3
RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IH07CkBAIC03MzEsNiArNzY0LDIwIEBACiAvKiBF
bmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVBy
b3h5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNv
bnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVj
dCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGNDY4
MEE5MTRCQTdGRDkwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSAiTExJbnQgT2Zmc2V0cyI7CisJ
CX07CisJCTBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0
YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlw
cm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODA4RTE0QkE3RTVF
MDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQl9
OwogCQkxNDEyMTRCRTBBNDkxOTBFMDA0ODAyNTUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICov
ID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFs
ID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtNzc2
LDYgKzgyMywxNSBAQAogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4RDE0
QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVz
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQYXRo
ID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMDsKKwkJCWZp
bGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAx
OworCQl9OwogCQk1REJCMTUxMTEzMUQwQjEzMDA1NkFEMzYgLyogQ29weSBTdXBwb3J0IFNjcmlw
dCAqLyA9IHsKIAkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlv
bk1hc2sgPSAxMjsKQEAgLTgxNiw2ICs4NzIsMTAgQEAKIAkJMEJBQzk0OUUxMzM4NzI4NDAwQ0Yx
MzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFyeUNoYW5nZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyog
U2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaXpl
TGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTUxNEJDRjQ1
QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5jcHA7IHBhdGggPSBsbGludC9MTEludEVu
dHJ5cG9pbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTYxNEJD
RjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5oOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBv
aW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NzE0QkNGNDVBMDA4
ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTExJbnRUaHVua3MuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRUaHVua3Mu
aDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlckluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUlu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwcmVzc2lvblJhbmdlSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODI2LDkgKzg4NiwxMyBAQAogCQkw
RjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGhvZENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVz
b2x2ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2xvYmFsUmVzb2x2
ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjgxNEJDRjk1QjAw
ODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAv
KiBMTEludENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
TEludENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE1RjE1
RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbW1vblNsb3dQYXRocy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURHJpdmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVT
cGVjaWFsaXphdGlvbktpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMy
N0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0aW9uSGFybmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUNvbnZlbnRpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0
QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdD
b2RlQmxvY2tzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGR0NvZGVCbG9j
a3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgzOSw2ICs5MDMsMjAgQEAKIAkJ
MEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMaXN0YWJsZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklURXhjZXB0aW9ucy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3
MiAvKiBKSVRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJ
VEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOEYxNEJB
N0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRh
YmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9y
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkwRjQ2ODA5RDE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5jcHA7IHBhdGggPSBsbGludC9MTEludEV4Y2Vw
dGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RTE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IExMSW50RXhjZXB0aW9ucy5oOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludEhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
TExJbnRIZWxwZXJzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVycy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhl
bHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRIZWxwZXJzLmg7
IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29t
bW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50Q29tbW9uLmg7IHBh
dGggPSBsbGludC9MTEludENvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBwYXRo
ID0gbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0
ZXIuY3BwOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbElu
dGVycHJldGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExvd0xldmVsSW50
ZXJwcmV0ZXIuaDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludERhdGEuY3Bw
OyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludERhdGEuaDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIg
LyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyog
REZHQnl0ZUNvZGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdC
eXRlQ29kZUNhY2hlLmg7IHBhdGggPSBkZmcvREZHQnl0ZUNvZGVDYWNoZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRp
b25hbEZpbmFsaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmNvbmRp
dGlvbmFsRmluYWxpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjIwMTZE
MTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Fic3RyYWN0U3RhdGUuY3BwOyBwYXRoID0gZGZnL0RG
R0Fic3RyYWN0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU0MCw2
ICsxNjE4LDEzIEBACiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEMxNEJBN0U1
RTAwQkZFMjcyIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgK
KwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsK
IAkJMTQxMjExMUUwQTQ4NzkzQzAwNDgwMjU1IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CkBAIC0xNTk4LDYgKzE2ODMsNyBAQAogCQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4MDI1NSAv
KiBtaW5pZG9tICovLAogCQkJCTE0QkQ1OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICov
LAogCQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBG
NDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCiAJ
CQkpOwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAg
LTE2MjYsNiArMTcxMiw3IEBACiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFT
Y3JpcHRDb3JlUHJlZml4LmggKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpz
Yy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5oICovLAor
CQkJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLywKIAkJCQkxNDMyRUJENzBB
MzRDQUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAv
KiBhc3NlbWJsZXIgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2Rl
ICovLApAQCAtMTY2NCw2ICsxNzUxLDI4IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2VzVGFi
cyA9IDA7CiAJCX07CisJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLyA9IHsK
KwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYwQjgzOTUxNEJDRjQ1
QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovLAorCQkJCTBGMEI4Mzk2MTRCQ0Y0
NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8sCisJCQkJMEYwQjgzOTcxNEJDRjQ1
QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLywKKwkJCQkwRjBCODM5ODE0QkNGNDVBMDA4
ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLywKKwkJCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIg
LyogTExJbnREYXRhLmNwcCAqLywKKwkJCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJ
bnREYXRhLmggKi8sCisJCQkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9u
LmggKi8sCisJCQkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNv
bmZpZy5oICovLAorCQkJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVy
cHJldGVyLmNwcCAqLywKKwkJCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJ
bnRlcnByZXRlci5oICovLAorCQkJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4
Y2VwdGlvbnMuY3BwICovLAorCQkJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4
Y2VwdGlvbnMuaCAqLywKKwkJCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxw
ZXJzLmNwcCAqLywKKwkJCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJz
LmggKi8sCisJCQkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGxsaW50OworCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKKwkJfTsKIAkJMTQxMjExMDAwQTQ4NzcyNjAwNDgwMjU1IC8qIHRlc3RzICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE2OTYsNiArMTgwNSw4
IEBACiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAv
KiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLywKKwkJCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUy
NzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovLAogCQkJCTBGNDY4MDdGMTRCQTU3MjcwMEJG
RTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLywKIAkJCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUy
NzIgLyogSklURXhjZXB0aW9ucy5oICovLAogCQkJCTBGRDgyRTM3MTQxQUIxNDIwMDE3OUM5NCAv
KiBDb21wYWN0SklUQ29kZU1hcC5oICovLApAQCAtMjExOCw2ICsyMjI5LDggQEAKIAkJN0VGNkUw
QkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKAorCQkJCTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLmggKi8sCisJCQkJMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4
ZWN1dGlvbkhhcm5lc3MuaCAqLywKIAkJCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29t
bW9uU2xvd1BhdGhzLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xp
c3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8s
CkBAIC0yNDc3LDYgKzI1OTAsOCBAQAogCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0
ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBG
MjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8sCisJCQkJ
MEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8sCiAJCQkJ
MEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zm
c2V0LmggKi8sCiAJCQkJMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJ
bmZvLmggKi8sCiAJCQkJMEYwQjgzQjIxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5r
SW5mby5jcHAgKi8sCkBAIC0zMDE1LDcgKzMxMzAsMTYgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3
MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJE
QjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVy
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4
Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAv
KiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0IxNEJCQjE3MjAwQkZF
MjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0Njgw
Q0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVl
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRF
bnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRG
IC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4
ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E5MTRCQ0Y1NjIw
MDg4NUI0RiAvKiBIYW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQUIxNEJD
RjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovLApAQCAt
MzAyNCwxMyArMzE0OCwzNSBAQAogCQkJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRo
b2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4
NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkx
NEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlu
a0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBK
SVREcml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAv
KiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3RDE0QkU3MjdB
MDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQl9OwogLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcy
IC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRh
cmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODA5QTE0QkE3RTVGMDBCRkUy
NzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xM
SW50T2Zmc2V0c0V4dHJhY3RvciIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODA4
QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLywKKwkJCQkwRjQ2ODA4QzE0QkE3RTVFMDBC
RkUyNzIgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkwRjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyog
Q29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5k
ZW5jaWVzID0gKAorCQkJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBl
bmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJ
CQlwcm9kdWN0TmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3RSZWZl
cmVuY2UgPSAwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFj
dG9yICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsK
KwkJfTsKIAkJMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8gPSB7CiAJCQlp
c2EgPSBQQlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQxMjEx
MzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0
aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLzsKQEAgLTMxNTcsMTEgKzMzMDMsMjkgQEAKIAkJCQkxNEJE
NTlCRTBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk5MzJGNUJEQTA4MjJBMUM3
MDA3MzY5NzUgLyoganNjICovLAogCQkJCTY1MTEyMkY3MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0
UmVnRXhwICovLAorCQkJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNl
dHNFeHRyYWN0b3IgKi8sCisJCQkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9m
ZnNldHMgKi8sCiAJCQkpOwogCQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODBBQTE0
QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovID0geworCQkJaXNh
ID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoU1JD
Uk9PVCkvbGxpbnQvTG93TGV2ZWxBc3NlbWJsZXIuYXNtIiwKKwkJCSk7CisJCQluYW1lID0gIkdl
bmVyYXRlIERlcml2ZWQgU291cmNlcyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChCVUlM
VF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmgiLAorCQkJ
KTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQ
YXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9E
VUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9cIlxuXG4vdXNyL2Jpbi9lbnYgcnVieSBcIiR7U1JDUk9P
VH0vb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiXCIgPCBcIiR7U1JDUk9P
VH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc21cIiA+IFwiJHtCVUlMVF9QUk9EVUNUU19E
SVJ9L0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmhcIlxuIjsKKwkJfTsKIAkJMzcx
M0YwMTQxNDI5MDUyNDAwMzYzODdGIC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2
ZS1DIENsYXNzIE5hbWVzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNl
OwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTMzMDIsNiArMzQ2NiwxNCBA
QAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEIxNEJBN0U1RTAwQkZF
MjcyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkwRjQ2ODBB
NzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwor
CQl9OwogCQkxNDEyMTExRDBBNDg3OTNDMDA0ODAyNTUgLyogU291cmNlcyAqLyA9IHsKIAkJCWlz
YSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKQEAgLTM1NTksNyArMzczMSwxNCBAQAogCQkJCTg2NzA0Qjg2MTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg5MTJEQkEzMzcwMEE5RkU3
QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI0MjEyREI4QTgx
MDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0
NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25z
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dM
ZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQyMTRCQkQxNjUw
MEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDQxNEJC
RDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4NUI0RiAvKiBDYWxsTGlu
a0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjQxNEJDRjg2MDAwODg1QjRGIC8q
IE1ldGhvZENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CkBAIC0zNTc2LDYg
KzM3NTUsMTYgQEAKIC8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLworCQkwRjQ2ODBCMjE0QkE4MTE1
MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJ
bnQgT2Zmc2V0cyAqLzsKKwkJCXRhcmdldFByb3h5ID0gMEY0NjgwQjExNEJBODExNTAwQkZFMjcy
IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJMEY0NjgwQjQxNEJBODIxNDAw
QkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXRE
ZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xM
SW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXRhcmdldFByb3h5ID0gMEY0NjgwQjMxNEJBODIx
NDAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKIAkJMTQxMjE0QkYw
QTQ5MTkwRTAwNDgwMjU1IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhUYXJnZXREZXBlbmRlbmN5OwogCQkJdGFyZ2V0ID0gMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1
IC8qIG1pbmlkb20gKi87CkBAIC0zNjA5LDYgKzM3OTgsMTQ4IEBACiAvKiBFbmQgUEJYVGFyZ2V0
RGVwZW5kZW5jeSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNl
Y3Rpb24gKi8KKwkJMEY0NjgwOTYxNEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICovID0geworCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFM
V0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRB
UkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCUdDQ19DX0xBTkdV
QUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CisJCQkJ
R0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX09QVElNSVpBVElPTl9M
RVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJIkRF
QlVHPTEiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOworCQkJCUdDQ19TWU1CT0xTX1BS
SVZBVEVfRVhURVJOID0gTk87CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJz
Lmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0g
Tk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdD
Q19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJ
QUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJ
LiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIs
CisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBM
T1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKwkJCQlQ
Uk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJ
CQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9
IERlYnVnOworCQl9OworCQkwRjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9
IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hT
X1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVC
VUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFO
R1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9
IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4x
XzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0Nf
V0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRf
UkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOwor
CQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3Us
CisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzJChIRUFERVJfU0VBUkNI
X1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43Owor
CQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29z
eDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQlu
YW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2Zp
bGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9
ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7
CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJ
R0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhD
RVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2
bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsK
KwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dB
Uk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxF
ID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAor
CQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJ
CQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1F
TlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOwor
CQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4g
aWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BB
VEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJMEY0NjgwOTkxNEJB
N0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BB
VEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlD
T1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJk
d2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJ
CQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBj
b20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMy
X0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZ
UEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdD
Q19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1th
cmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19E
SVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkp
OworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1F
ID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVB
REVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZz
ZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9u
OworCQl9OworCQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJP
RFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gRGVi
dWc7CisJCX07CisJCTBGNDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9
IFJlbGVhc2U7CisJCX07CisJCTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcg
Ki8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJ
CQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyog
UHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHki
OworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEzQTBBNDg3OTg0
MDA0ODAyNTUgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
IAkJCWJ1aWxkU2V0dGluZ3MgPSB7CkBAIC0zODUwLDYgKzQxODEsMjggQEAKIC8qIEVuZCBYQ0J1
aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxp
c3Qgc2VjdGlvbiAqLworCQkwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ciIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8sCisJ
CQkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwOTgx
NEJBN0U1RTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODA5OTE0QkE3RTVFMDBC
RkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklz
VmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwor
CQl9OworCQkwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovID0geworCQkJaXNh
ID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJ
MEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MEFFMTRCQTdG
RDkwMEJGRTI3MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAv
KiBQcm9maWxpbmcgKi8sCisJCQkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rp
b24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjExMzkw
QTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZl
VGFyZ2V0ICJtaW5pZG9tIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJ
CQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9MaW5rQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3
ICszMSw3IEBACiAjZGVmaW5lIERVTVBfTElOS19TVEFUSVNUSUNTIDAKICNkZWZpbmUgRFVNUF9D
T0RFIDAKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+CisjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
Qnl0ZWNvZGVDb252ZW50aW9uc19oCisjZGVmaW5lIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCisv
LyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZl
cmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6CisvLyAgICAgIDB4ODAwMDAw
MDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRl
ciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgorLy8g
ICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2Fs
bEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1
bmN0aW9uJ3MgY2FsbGZyYW1lLgorLy8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0
aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3Rh
bnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgorc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7CisKKyNlbmRpZiAvLyBCeXRlY29kZUNvbnZlbnRp
b25zX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKICNpbmNs
dWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1
ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNp
bmNsdWRlIDxzdGRpby5oPgpAQCAtODkwLDYgKzg5MSwxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVt
cChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBs
b2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6
IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9i
eV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
KyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKKyAgICAgICAg
ICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0
aW9uX25vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhl
YywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAgICAgIGJyZWFr
OwpAQCAtMTQ0OSw2ICsxNDU4LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soQ29weVBhcnNlZEJs
b2NrVGFnLAogewogICAgIHNldE51bVBhcmFtZXRlcnMob3RoZXIubnVtUGFyYW1ldGVycygpKTsK
ICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsKICAgICAK
ICAgICBpZiAob3RoZXIubV9yYXJlRGF0YSkgewogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVj
ZXNzYXJ5KCk7CkBAIC0xNDk3LDYgKzE1MDcsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3Jp
cHRFeGVjdXRhYmxlKiBvCiAgICAgQVNTRVJUKG1fc291cmNlKTsKICAgICAKICAgICBvcHRpbWl6
ZUFmdGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsKIAogI2lmIERVTVBfQ09ERV9C
TE9DS19TVEFUSVNUSUNTCiAgICAgbGl2ZUNvZGVCbG9ja1NldC5hZGQodGhpcyk7CkBAIC0xNTE0
LDcgKzE1MjUsMTEgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKICNpZiBFTkFCTEUoVkVSQk9T
RV9WQUxVRV9QUk9GSUxFKQogICAgIGR1bXBWYWx1ZVByb2ZpbGVzKCk7CiAjZW5kaWYKLSAgICAK
KworI2lmIEVOQUJMRShMTElOVCkgICAgCisgICAgd2hpbGUgKG1faW5jb21pbmdMTEludENhbGxz
LmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisgICAgICAgIG1faW5jb21p
bmdMTEludENhbGxzLmJlZ2luKCktPnJlbW92ZSgpOworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkK
ICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFdlIG1heSBiZSBkZXN0cm95ZWQgYmVmb3JlIGFueSBD
b2RlQmxvY2tzIHRoYXQgcmVmZXIgdG8gdXMgYXJlIGRlc3Ryb3llZC4KICAgICAvLyBDb25zaWRl
ciB0aGF0IHR3byBDb2RlQmxvY2tzIGJlY29tZSB1bnJlYWNoYWJsZSBhdCB0aGUgc2FtZSB0aW1l
LiBUaGVyZQpAQCAtMTcyNiw4ICsxNzQxLDU1IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseSgKICNlbHNlCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZVVubGlu
a2luZyA9IGZhbHNlOwogI2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogICAg
IAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2ds
b2JhbERhdGEtPmludGVycHJldGVyOworICAgIGlmICghaW50ZXJwcmV0ZXItPmVuYWJsZWQoKSkg
eworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9u
cy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlv
biogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uc1tpXV07CisgICAgICAgICAgICBzd2l0Y2ggKGludGVycHJldGVyLT5nZXRPcGNvZGVJ
RChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkpIHsKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0
X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgICAgICAgICAg
aWYgKEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKSkK
KyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rp
b25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlv
bls1XS51Lm9wZXJhbmQgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAgICAgICBpZiAoSGVhcDo6
aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAg
ICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJl
LmdldCgpKQorICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVj
dGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIo
KTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5jbGVhcigp
OworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uY2xl
YXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSA9IGludGVy
cHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9
IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytp
KSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rp
b25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIEFTU0VS
VChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09
IG9wX3Jlc29sdmVfZ2xvYmFsCisgICAgICAgICAgICAgICAgICAgfHwgaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2Jh
bF9keW5hbWljKTsKKyAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlv
blszXS51LnN0cnVjdHVyZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICBjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAg
ICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kID0gMDsKKyAgICAgICAgfQorICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgIGlmIChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpICYm
ICFIZWFwOjppc01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5jYWxsZWUuZ2V0KCkpKSB7
CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAg
ICAgIHByaW50ZigiQ2xlYXJpbmcgTExJbnQgY2FsbCBmcm9tICVwLlxuIiwgdGhpcyk7CisgICAg
ICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCiAjaWYgRU5B
QkxFKERGR19KSVQpCiAgICAgLy8gQ2hlY2sgaWYgd2UncmUgbm90IGxpdmUuIElmIHdlIGFyZSwg
dGhlbiBqZXR0aXNvbi4KICAgICBpZiAoIShzaG91bGRJbW1lZGlhdGVseUFzc3VtZUxpdmVuZXNz
RHVyaW5nU2NhbigpIHx8IG1fZGZnRGF0YS0+bGl2ZW5lc3NIYXNCZWVuUHJvdmVkKSkgewpAQCAt
MTg0OCwxMCArMTkxMCwxMiBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1Jl
ZmVyCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVjbHMuc2l6ZSgpOyAr
K2kpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9uRGVjbHNbaV0pOwogI2lmIEVO
QUJMRShJTlRFUlBSRVRFUikKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICB2aXNp
dFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbnNbaV1dKTsKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5z
dHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0U3Ry
dWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rp
b25zW2ldXSk7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPmVuYWJsZWQoKSkg
eworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9u
cy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1
cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25z
W2ldXSk7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHZpc2l0U3Ry
dWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rp
b25zW2ldXSk7CisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTIwNjAs
NiArMjEyNCwxMiBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogewogICAgIGlmICgh
IW1fYWx0ZXJuYXRpdmUpCiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPnVubGlua0NhbGxzKCk7Cisj
aWYgRU5BQkxFKExMSU5UKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sbGludENhbGxM
aW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9z
W2ldLmlzTGlua2VkKCkpCisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxp
bmsoKTsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoIShtX2NhbGxMaW5rSW5mb3Muc2l6ZSgpIHx8
IG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaWYg
KCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQpAQCAtMjA3NCwxMCArMjE0NCwzNiBAQCB2b2lk
IENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogCiB2b2lkIENvZGVCbG9jazo6dW5saW5rSW5jb21p
bmdDYWxscygpCiB7CisgICAgd2hpbGUgKG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCkgIT0g
bV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisgICAgICAgIG1faW5jb21pbmdMTEludENhbGxz
LmJlZ2luKCktPnVubGluaygpOwogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcih0aGlz
KTsKICAgICB3aGlsZSAobV9pbmNvbWluZ0NhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0NhbGxz
LmVuZCgpKQogICAgICAgICBtX2luY29taW5nQ2FsbHMuYmVnaW4oKS0+dW5saW5rKCptX2dsb2Jh
bERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogfQorCit1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2Rl
T2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQor
eworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAocmV0dXJuQWRkcmVzcy52YWx1ZSgpID49IGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2JlZ2luKQorICAgICAgICAmJiByZXR1cm5BZGRyZXNz
LnZhbHVlKCkgPD0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZW5kKSkgeworICAgICAgICBF
eGVjU3RhdGUqIGNhbGxlckV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBBU1NF
UlQoY2FsbGVyRXhlYyk7CisgICAgICAgIEFTU0VSVChjYWxsZXJFeGVjLT5jb2RlQmxvY2soKSk7
CisgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShjYWxsZXJFeGVjLT5jb2Rl
QmxvY2soKS0+Z2V0SklUVHlwZSgpKSk7CisgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biA9IGV4ZWMtPmNhbGxlckZyYW1lKCktPmN1cnJlbnRWUEMoKTsKKyAgICAgICAgQVNTRVJUKGlu
c3RydWN0aW9uKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uKTsK
KyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyNlbmRpZgorICAgIGlmICgh
bV9yYXJlRGF0YSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZz
ZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1
cm5JbmRleFZlY3RvcjsKKyAgICBpZiAoIWNhbGxJbmRpY2VzLnNpemUoKSkKKyAgICAgICAgcmV0
dXJuIDE7CisgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29k
ZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2lu
KCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJl
c3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKK30KICNlbmRpZgogCiB2b2lkIENvZGVCbG9j
azo6Y2xlYXJFdmFsQ2FjaGUoKQpAQCAtMjE3MywyNCArMjI2OSw0NSBAQCBib29sIEZ1bmN0aW9u
Q29kZUJsb2NrOjpjYW5Db21waWxlV2l0aERGCiAKIHZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6amV0
dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVK
SVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7
CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8UHJv
Z3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29k
ZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBFdmFsQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7
Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAg
QVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NF
UlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJs
ZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRh
KCkpOwogfQogCiB2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNT
RVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJ
VENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9
PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihv
d25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZUZvcigqZ2xvYmFsRGF0YSgp
LCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOwogfQor
Cit2b2lkIFByb2dyYW1Db2RlQmxvY2s6OmppdENvbXBpbGUoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cisg
ICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgc3RhdGljX2Nhc3Q8UHJvZ3Jh
bUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZXhlYyk7Cit9CisK
K3ZvaWQgRXZhbENvZGVCbG9jazo6aml0Q29tcGlsZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
QVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBB
U1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0
YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShleGVjKTsKK30KKwordm9pZCBG
dW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQVNT
RVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NF
UlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGVGb3IoZXhlYywgbV9pc0NvbnN0
cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKK30KICNlbmRpZgogCiAj
aWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBACiAjaWZuZGVmIENvZGVCbG9ja19oCiAjZGVmaW5lIENvZGVCbG9ja19oCiAKKyNpbmNsdWRl
ICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5j
bHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2Rl
T3JpZ2luLmgiCkBAIC01MCw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSklUV3JpdGVCYXJyaWVyLmgi
CiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKdW1wVGFibGUuaCIKKyNp
bmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5j
bHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQcmVkaWN0aW9uVHJhY2tlci5oIgpAQCAtNjUsMTYg
KzY3LDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0
dWJJbmZvLmgiCiAKLS8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRp
b25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKLS8v
ICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENh
bGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0
ZXJGaWxlLmguCi0vLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNl
cyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJp
ZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCi0vLyAgICAgIDB4NDAwMDAwMDAtMHg3
RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVz
IGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCi1zdGF0aWMgY29uc3QgaW50
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKLQogbmFtZXNwYWNlIEpT
QyB7CiAKLSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAg
ICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAg
ICAgaW5saW5lIGludCB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoaW50IGFyZ3VtZW50c1Jl
Z2lzdGVyKSB7IHJldHVybiBhcmd1bWVudHNSZWdpc3RlciAtIDE7IH0KIApAQCAtODMsNiArODAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgVW5jb25k
aXRpb25hbEZpbmFsaXplciwgcHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgewogICAgICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAg
ICAgICAgIGVudW0gQ29weVBhcnNlZEJsb2NrVGFnIHsgQ29weVBhcnNlZEJsb2NrIH07CiAgICAg
cHJvdGVjdGVkOgpAQCAtMTIzLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgICAgICAgICByZXN1bHQg
PSByZXN1bHQtPmFsdGVybmF0aXZlKCk7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGlu
ZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0
LT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
ICNlbmRpZgpAQCAtMTk0LDE1ICsxOTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHJldHVybiAqKGJpbmFyeVNlYXJjaDxNZXRob2RDYWxsTGlua0luZm8sIHVuc2lnbmVkLCBnZXRN
ZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUluZGV4PihtX21ldGhvZENhbGxMaW5rSW5mb3MuYmVn
aW4oKSwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSwgYnl0ZWNvZGVJbmRleCkpOwogICAg
ICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoUmV0dXJuQWRkcmVzc1B0
ciByZXR1cm5BZGRyZXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fcmFyZURhdGEp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBWZWN0b3I8Q2FsbFJldHVy
bk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2Fs
bFJldHVybkluZGV4VmVjdG9yOwotICAgICAgICAgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICByZXR1cm4gYmluYXJ5U2Vh
cmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJl
dHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRK
SVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0
OwotICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSos
IFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Rm9y
Q2FsbEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKQEAgLTIyMywxMSArMjEzLDE3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBtX2luY29taW5nQ2Fs
bHMucHVzaChpbmNvbWluZyk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAg
IHZvaWQgbGlua0luY29taW5nQ2FsbChMTEludENhbGxMaW5rSW5mbyogaW5jb21pbmcpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLnB1c2goaW5jb21pbmcpOwor
ICAgICAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogICAgICAgICAKICAgICAgICAgdm9p
ZCB1bmxpbmtJbmNvbWluZ0NhbGxzKCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQog
Ci0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElO
VCkKICAgICAgICAgdm9pZCBzZXRKSVRDb2RlTWFwKFBhc3NPd25QdHI8Q29tcGFjdEpJVENvZGVN
YXA+IGppdENvZGVNYXApCiAgICAgICAgIHsKICAgICAgICAgICAgIG1faml0Q29kZU1hcCA9IGpp
dENvZGVNYXA7CkBAIC0yMzYsNyArMjMyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsK
ICAgICAgICAgICAgIHJldHVybiBtX2ppdENvZGVNYXAuZ2V0KCk7CiAgICAgICAgIH0KKyNlbmRp
ZgogICAgICAgICAKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgdm9pZCBjcmVhdGVERkdE
YXRhSWZOZWNlc3NhcnkoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoISFtX2RmZ0RhdGEp
CkBAIC0zMzUsMTIgKzMzMywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogI2VuZGlm
CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KEluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CisgICAgICAgICAgICBB
U1NFUlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICYmIHJldHVybkFk
ZHJlc3MgPCBpbnN0cnVjdGlvbnMoKS5lbmQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2lu
KCk7CiAgICAgICAgIH0KLSNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFy
ZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29t
cGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wg
aXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgeyByZXR1cm4gbV9pc051bWVyaWNDb21wYXJlRnVu
Y3Rpb247IH0KQEAgLTM1NiwxMCArMzUzLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9
CiAgICAgICAgIHZvaWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKQogICAg
ICAgICB7CisjaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpICYmICFFTkFCTEUoTExJTlQpCisg
ICAgICAgICAgICBpZiAoQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQor
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmICghIWFsdGVybmF0aXZlKCkp
CiAgICAgICAgICAgICAgICAgZGlzY2FyZEJ5dGVjb2RlKCk7CiAgICAgICAgICAgICBlbHNlCiAg
ICAgICAgICAgICAgICAgZGlzY2FyZEJ5dGVjb2RlTGF0ZXIoKTsKKyNlbmRpZgogICAgICAgICB9
CiAgICAgICAgIAogI2lmbmRlZiBOREVCVUcKQEAgLTM4NywxNyArMzg4LDE4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBleGVjdXRhYmxlTWVtb3J5
KCkgeyByZXR1cm4gZ2V0SklUQ29kZSgpLmdldEV4ZWN1dGFibGVNZW1vcnkoKTsgfQogICAgICAg
ICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hh
aW5Ob2RlKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKSA9IDA7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlKEV4ZWNTdGF0ZSopID0gMDsKICAgICAgICAgdmly
dHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
Y2FuQ29tcGlsZVdpdGhERkcoKSA9IDA7CiAgICAgICAgIGJvb2wgaGFzT3B0aW1pemVkUmVwbGFj
ZW1lbnQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJ
VENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2Vs
aW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcmVwbGFj
ZW1lbnQoKS0+Z2V0SklUVHlwZSgpID4gZ2V0SklUVHlwZSgpOwogI2lmICFBU1NFUlRfRElTQUJM
RUQKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxh
Y2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwogICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUo
KSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKEpJVENv
ZGU6OmlzQmFzZWxpbmVDb2RlKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSkpOwogICAgICAg
ICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpID09IHRoaXMpOwogICAgICAgICAgICAgfQog
I2VuZGlmCkBAIC00NTYsNyArNDU4LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9p
ZCBjbGVhckV2YWxDYWNoZSgpOwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICB2
b2lkIGFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24odW5zaWduZWQgcHJvcGVydHlBY2Nlc3NJ
bnN0cnVjdGlvbikKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNh
blVzZUpJVCgpKQpAQCAtNDY4LDYgKzQ2OSwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5z
dHJ1Y3Rpb25BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBhZGRMTEludENhbGxMaW5r
SW5mbygpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zLmFwcGVu
ZChMTEludENhbGxMaW5rSW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiAmbV9sbGludENhbGxM
aW5rSW5mb3MubGFzdCgpOworICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAg
ICAgICB2b2lkIHNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKHNpemVfdCBzaXplKSB7IG1f
c3RydWN0dXJlU3R1YkluZm9zLmdyb3coc2l6ZSk7IH0KQEAgLTY3Miw3ICs2NzksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgYWRkRnJlcXVlbnRFeGl0U2l0ZShj
b25zdCBERkc6OkZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAg
ICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAg
ICAgICAgcmV0dXJuIG1fZXhpdFByb2ZpbGUuYWRkKHNpdGUpOwogICAgICAgICB9CiAKQEAgLTc3
Nyw2ICs3ODQsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgY29weVBvc3RQYXJz
ZURhdGFGcm9tKENvZGVCbG9jayogYWx0ZXJuYXRpdmUpOwogICAgICAgICB2b2lkIGNvcHlQb3N0
UGFyc2VEYXRhRnJvbUFsdGVybmF0aXZlKCk7CiAgICAgICAgIAorICAgICAgICAvLyBGdW5jdGlv
bnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gSklUdGluZyBraWNrcyBpbiwgaW4gYSBtaXhlZCBtb2Rl
CisgICAgICAgIC8vIGV4ZWN1dGlvbiB3b3JsZC4KKyAgICAgICAgCisgICAgICAgIHZvaWQgZG9u
dEpJVEFueXRpbWVTb29uKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVD
b3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVT
b29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdEFmdGVyV2FybVVwKCkK
KyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIHZvaWQgaml0U29vbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxp
bnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNv
b247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludDMyX3QgbGxpbnRFeGVjdXRlQ291
bnRlcigpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2xsaW50RXhlY3V0
ZUNvdW50ZXI7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIC8vIEZ1bmN0aW9ucyBmb3Ig
Y29udHJvbGxpbmcgd2hlbiB0aWVyZWQgY29tcGlsYXRpb24ga2lja3MgaW4uIFRoaXMKICAgICAg
ICAgLy8gY29udHJvbHMgYm90aCB3aGVuIHRoZSBvcHRpbWl6aW5nIGNvbXBpbGVyIGlzIGludm9r
ZWQgYW5kIHdoZW4gT1NSCiAgICAgICAgIC8vIGVudHJ5IGhhcHBlbnMuIFR3byB0cmlnZ2VycyBl
eGlzdDogdGhlIGxvb3AgdHJpZ2dlciBhbmQgdGhlIHJldHVybgpAQCAtMTA1Miw5ICsxMDgyLDEx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IG1fc291
cmNlOwogICAgICAgICB1bnNpZ25lZCBtX3NvdXJjZU9mZnNldDsKIAotI2lmIEVOQUJMRShJTlRF
UlBSRVRFUikKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb25zOwogICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0
aW9uczsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxMTEludENh
bGxMaW5rSW5mbywgOD4gbV9sbGludENhbGxMaW5rSW5mb3M7CisgICAgICAgIFNlbnRpbmVsTGlu
a2VkTGlzdDxMTEludENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxs
TGlua0luZm8+ID4gbV9pbmNvbWluZ0xMSW50Q2FsbHM7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklU
KQogICAgICAgICBWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+IG1fc3RydWN0dXJlU3R1YkluZm9z
OwpAQCAtMTA2NSw5ICsxMDk3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlV2l0aEFyaXR5Q2hlY2s7CiAgICAgICAgIFNlbnRpbmVs
TGlua2VkTGlzdDxDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5m
bz4gPiBtX2luY29taW5nQ2FsbHM7CiAjZW5kaWYKLSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBF
TkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICBPd25QdHI8Q29tcGFjdEpJ
VENvZGVNYXA+IG1faml0Q29kZU1hcDsKLSAgICAgICAgCisjZW5kaWYKKyNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICAgICAgc3RydWN0IFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uIHsKICAgICAgICAg
ICAgIFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uKCkgeyB9CiAgICAgICAgICAgICAKQEAgLTExMzAs
MTIgKzExNjMsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgT3duUHRyPENvZGVCbG9j
az4gbV9hbHRlcm5hdGl2ZTsKICAgICAgICAgCisgICAgICAgIGludDMyX3QgbV9sbGludEV4ZWN1
dGVDb3VudGVyOworICAgICAgICAKICAgICAgICAgaW50MzJfdCBtX2ppdEV4ZWN1dGVDb3VudGVy
OwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXI7CiAgICAgICAg
IHVpbnQzMl90IG1fc3BlY3VsYXRpdmVGYWlsQ291bnRlcjsKICAgICAgICAgdWludDhfdCBtX29w
dGltaXphdGlvbkRlbGF5Q291bnRlcjsKICAgICAgICAgdWludDhfdCBtX3Jlb3B0aW1pemF0aW9u
UmV0cnlDb3VudGVyOwotCisgICAgICAgIAogICAgICAgICBzdHJ1Y3QgUmFyZURhdGEgewogICAg
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgcHVibGljOgpAQCAtMTIw
OCw2ICsxMjQzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2
aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5O
b2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFs
IHZvaWQgaml0Q29tcGlsZShFeGVjU3RhdGUqKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sq
IHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygp
OwogI2VuZGlmCkBAIC0xMjQyLDYgKzEyNzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0
YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlKEV4ZWNTdGF0ZSopOwogICAgICAgICB2
aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNh
bkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKQEAgLTEyNzksNiArMTMxNiw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGls
ZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGUoRXhlY1N0
YXRlKik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHJldmlzaW9uIDEwNDc4
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpT
Q2VsbDsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47Cisg
ICAgc3RydWN0IExMSW50Q2FsbExpbmtJbmZvOwogCiAjaWYgRU5BQkxFKEpJVCkKICAgICB0eXBl
ZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RT
dHViUm91dGluZVR5cGU7CkBAIC0xNDEsNiArMTQyLDExIEBAIG5hbWVzcGFjZSBKU0MgewogI2Vu
ZGlmCiAKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb24geworICAgICAgICBJbnN0cnVjdGlvbigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHUuanNDZWxsLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAg
ICAgCiAgICAgICAgIEluc3RydWN0aW9uKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICNpZiAh
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCkBAIC0xNzYsNiArMTgyLDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7
IH0KKyAgICAgICAgCisgICAgICAgIEluc3RydWN0aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxs
TGlua0luZm8pIHsgdS5jYWxsTGlua0luZm8gPSBjYWxsTGlua0luZm87IH0KIAogICAgICAgICB1
bmlvbiB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlOwpAQCAtMTg0LDYgKzE5Miw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFp
bj4gc3RydWN0dXJlQ2hhaW47CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4g
anNDZWxsOwogICAgICAgICAgICAgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVu
YzsKKyAgICAgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm87CisgICAgICAg
ICAgICB2b2lkKiBwb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxs
TGlua0luZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRD
YWxsTGlua0luZm9faAorI2RlZmluZSBMTEludENhbGxMaW5rSW5mb19oCisKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVk
ZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0
IEluc3RydWN0aW9uOworCitzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNS
YXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+IHsKKyAgICBMTEludENhbGxMaW5rSW5m
bygpCisgICAgeworICAgIH0KKyAgICAKKyAgICB+TExJbnRDYWxsTGlua0luZm8oKQorICAgIHsK
KyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9Cisg
ICAgCisgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIGNhbGxlZTsgfQorICAgIAorICAgIHZv
aWQgdW5saW5rKCkKKyAgICB7CisgICAgICAgIGNhbGxlZS5jbGVhcigpOworICAgICAgICBtYWNo
aW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgICAgICBpZiAoaXNP
bkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBXcml0ZUJh
cnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWNo
aW5lQ29kZVRhcmdldDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gTExJ
bnRDYWxsTGlua0luZm9faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
T3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
Y29kZS5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgsIDQpIFwKICAgICAg
ICAgbWFjcm8ob3BfcHV0X2J5X2lkLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uLCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWws
IDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkpIFwKICAgICAgICAg
bWFjcm8ob3BfcHV0X2J5X2lkX2dlbmVyaWMsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfZGVsX2J5
X2lkLCA0KSBcCkBAIC0yMDIsNiArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5
cGVkZWYgZW51bSB7IEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfSURfRU5VTSkgfSBPcGNvZGVJ
RDsKICAgICAjdW5kZWYgT1BDT0RFX0lEX0VOVU0KIAorICAgIGNvbnN0IGludCBtYXhPcGNvZGVM
ZW5ndGggPSA5OwogICAgIGNvbnN0IGludCBudW1PcGNvZGVJRHMgPSBvcF9lbmQgKyAxOwogCiAg
ICAgI2RlZmluZSBPUENPREVfSURfTEVOR1RIUyhpZCwgbGVuZ3RoKSBjb25zdCBpbnQgaWQjI19s
ZW5ndGggPSBsZW5ndGg7CkBAIC0yMTgsNyArMjIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEZPUl9FQUNIX09QQ09ERV9JRChWRVJJRllfT1BDT0RFX0lEKTsKICAgICAjdW5kZWYgVkVS
SUZZX09QQ09ERV9JRAogCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisj
aWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICNp
ZiBDT01QSUxFUihSVkNUKSB8fCBDT01QSUxFUihJTlRFTCkKICAgICB0eXBlZGVmIHZvaWQqIE9w
Y29kZTsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTA0Nzg3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyNjQsOSArMTI2NCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBtX2NvZGVCbG9j
ay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgot
I2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJl
c29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgICAg
IGVtaXRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGRzdC0+aW5kZXgoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFu
dChwcm9wZXJ0eSkpOwpAQCAtMTQxOSw5ICsxNDE3LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9jb2RlQmxvY2stPmFk
ZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBF
TkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgZW1pdE9wY29kZShy
ZXF1aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVz
b2x2ZV9nbG9iYWwpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wRHN0LT5pbmRleCgp
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAg
LTE0NjYsOSArMTQ2Miw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVz
b2wKICNpZiBFTkFCTEUoSklUKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5m
byhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVS
KQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIGVtaXRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hl
Y2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDg2LDkgKzE0ODAsNyBA
QCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TWV0aG9kQ2hlY2soCiAKIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVy
SUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogewotI2lmIEVOQUJMRShJTlRF
UlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihp
bnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBlbWl0T3Bjb2RlKG9wX2dldF9i
eV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0xNTEz
LDkgKzE1MDUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyCiAK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0j
aWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKIAogICAgIGVtaXRP
cGNvZGUob3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5k
ZXgoKSk7CkBAIC0xNTMxLDkgKzE1MjEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFB1dEJ5CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0
UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVn
aXN0ZXJJRCogdmFsdWUpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
Ci0jZW5kaWYKICAgICAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTgyMSw3ICsxODA5LDExIEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCgKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291
bnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNl
dCgpKTsgLy8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNl
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKDApOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAg
IGVtaXRPcGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKQEAgLTE5MjMsNyArMTkxNSwxMSBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7IC8vIGFyZ0Nv
dW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0ZXJPZmZz
ZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0luZm8oKSk7CisjZWxz
ZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAg
ICBlbWl0T3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTA0Nzg3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4MjMsNyArMTgyMyw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9ieV9pZCk7CiAg
ICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDogeworICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6
CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CiAgICAgICAg
ICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFu
ZCk7CiAgICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25b
MV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBt
X2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bMl0u
dS5vcGVyYW5kXTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw4IEBAIGlubGlu
ZSBib29sIGNhbkNvbXBpbGVPcGNvZGUoT3Bjb2RlSUQgb3AKICAgICBjYXNlIG9wX3B1dF9zY29w
ZWRfdmFyOgogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgor
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXI6CiAg
ICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX2ptcDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTA0Nzg3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkRGR09TUkV4aXQuaCIKICNpbmNsdWRlICJERkdSZXBhdGNoLmgiCisjaW5jbHVkZSAiSG9z
dENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIklubGluZUFTTS5oIgogI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKQEAgLTU0NSw0NSArNTQ2LDYg
QEAgc2l6ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cgogICAgIHJldHVybiBK
U1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVS
QVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOwotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJB
VElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqKTsKLQot
I2lmIENQVShYODZfNjQpCi1hc20gKAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiOiIgIlxuIgotICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCi0gICAgIm1vdiAlcjEzLCAl
cmRpXG4iCi0gICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQVShYODYpCi1hc20gKAot
Ii5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lN
Qk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJtb3YgLTQw
KCVlZGkpLCAlZWRpXG4iCi0gICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCi0gICAgImptcCAiIFNZ
TUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0
ZSkgIlxuIgotKTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKQotYXNtICgKLSIudGV4dCIgIlxuIgot
Ii5hbGlnbiAyIiAiXG4iCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi0i
LnRodW1iIiAiXG4iCi0iLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkg
IjoiICJcbiIKLSAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCi0gICAgImNweSByMCwgcjUi
ICJcbiIKLSAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVy
blZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbmRpZgotCi1FbmNvZGVkSlNWYWx1ZSBE
RkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0
ZSogZXhlYykKLXsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEo
KS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKLX0KLQogc3RhdGljIHZvaWQqIGhhbmRsZUhvc3RDYWxs
KEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJG
cmFtZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNw
YWNlLmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0Fs
bG9jYXRpb25TcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3Bh
Y2UgSlNDIHsKIAogY2xhc3MgSGVhcDsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNs
YXNzIE1hcmtlZEJsb2NrOwogCiBjbGFzcyBBbGxvY2F0aW9uU3BhY2UgewpAQCAtNjgsNiArNjks
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaHJpbmsoKTsKICAgICAKIHByaXZhdGU6CisgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICBlbnVtIEFsbG9jYXRp
b25FZmZvcnQgeyBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQsIEFsbG9jYXRpb25DYW5GYWlsIH07CiAg
ICAgCiAgICAgdm9pZCogYWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBKU1Zh
bHVlOwogICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKKyAgICBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXI7CiAgICAgY2xhc3Mg
UmVnaXN0ZXJGaWxlOwogICAgIGNsYXNzIFVTdHJpbmc7CkBAIC0xMjksMTAgKzEzMCwxMSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3Rz
KEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVu
ZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNzIEFsbG9jYXRpb25TcGFj
ZTsKLSAgICAgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwogICAgICAgICBmcmllbmQgY2xh
c3MgQ29kZUJsb2NrOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFz
cyBTbG90VmlzaXRvcjsKIAogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbkV4dHJhQ29z
dCA9IDI1NjsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhFeHRyYUNvc3QgPSAxMDI0
ICogMTAyNDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAko
cmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNs
YXNzIEhlYXA7CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CitjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBXZWFrR0NIYW5kbGU7CiBjbGFzcyBTbG90
VmlzaXRvcjsKIApAQCAtNzksNiArODAsOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5h
bWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQmxvY2soKTsK
IAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAg
IAogICAgIC8vIFsgMzIuLi4gMjU2IF0KICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VT
dGVwID0gTWFya2VkQmxvY2s6OmF0b21TaXplOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJl
Y2lzZUN1dG9mZiA9IDI1NjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDYgKzEx
OSw5IEBAIG5hbWVzcGFjZSBKU0MgIHsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAg
IEluc3RydWN0aW9uKiByZXR1cm5WUEMoKSBjb25zdCB7IHJldHVybiB0aGlzW1JlZ2lzdGVyRmls
ZTo6UmV0dXJuUENdLnZQQygpOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAg
IEluc3RydWN0aW9uKiBjdXJyZW50VlBDKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PElu
c3RydWN0aW9uKj4odGhpc1tSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnRdLnRhZygpKTsgfQor
I2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXRDYWxsZXJGcmFtZShDYWxsRnJhbWUqIGNhbGxlckZy
YW1lKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpDYWxsZXJG
cmFtZV0gPSBjYWxsZXJGcmFtZTsgfQogICAgICAgICB2b2lkIHNldFNjb3BlQ2hhaW4oU2NvcGVD
aGFpbk5vZGUqIHNjb3BlQ2hhaW4pIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdp
c3RlckZpbGU6OlNjb3BlQ2hhaW5dID0gc2NvcGVDaGFpbjsgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAx
MDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAj
ZW5kaWYKIAotI2RlZmluZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQgKEVO
QUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSAmJiAhZGVmaW5lZChfX2xsdm1fXykpCisj
ZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAoKEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpKSAmJiAhZGVmaW5lZChfX2xs
dm1fXykpCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTU0NywxNyArNTQ3LDQxIEBAIElu
dGVycHJldGVyOjpJbnRlcnByZXRlcigpCiB7CiB9CiAKLXZvaWQgSW50ZXJwcmV0ZXI6OmluaXRp
YWxpemUoYm9vbCBjYW5Vc2VKSVQpCitJbnRlcnByZXRlcjo6fkludGVycHJldGVyKCkKIHsKLSNp
ZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgaWYgKG1fZW5hYmxlZCkKKyAgICAgICAgZGVsZXRlW10gbV9vcGNvZGVUYWJsZTsKKyNlbmRp
ZgorfQorCit2b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKExMSW50OjpEYXRhKiBsbGludERh
dGEsIGJvb2wgY2FuVXNlSklUKQoreworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJF
VEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJF
VEVSKQorICAgIC8vIEhhdmluZyBMTEludCBlbmFibGVkLCBidXQgbm90IGJlaW5nIGFibGUgdG8g
dXNlIHRoZSBKSVQsIGFuZCBub3QgaGF2aW5nCisgICAgLy8gYSBjb21wdXRlZCBnb3RvIGludGVy
cHJldGVyLCBpcyBub3Qgc3VwcG9ydGVkLiBOb3QgYmVjYXVzZSB3ZSBjYW5ub3QKKyAgICAvLyBz
dXBwb3J0IGl0LCBidXQgYmVjYXVzZSBJIGRlY2lkZWQgdG8gZHJhdyB0aGUgbGluZSBhdCB0aGUg
bnVtYmVyIG9mCisgICAgLy8gcGVybXV0YXRpb25zIG9mIGV4ZWN1dGlvbiBlbmdpbmVzIHRoYXQg
SSB3YW50ZWQgdGhpcyBjb2RlIHRvIGdyb2suCisgICAgQVNTRVJUKGNhblVzZUpJVCk7CisjZW5k
aWYKICAgICBpZiAoY2FuVXNlSklUKSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29w
Y29kZVRhYmxlID0gbGxpbnREYXRhLT5vcGNvZGVNYXAoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKKyAgICAgICAgICAgIG1fb3Bjb2RlSURUYWJsZS5h
ZGQobV9vcGNvZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsKKyNlbHNlCiAg
ICAgICAgIC8vIElmIHRoZSBKSVQgaXMgcHJlc2VudCwgZG9uJ3QgdXNlIGp1bXAgZGVzdGluYXRp
b25zIGZvciBvcGNvZGVzLgogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1PcGNvZGVJRHM7ICsraSkgewogICAgICAgICAgICAgT3Bjb2RlIG9wY29kZSA9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihpKSk7CiAgICAgICAgICAgICBtX29w
Y29kZVRhYmxlW2ldID0gb3Bjb2RlOwogICAgICAgICB9CisjZW5kaWYKICAgICB9IGVsc2Ugewor
I2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJsZSA9IG5ldyBPcGNvZGVbbnVt
T3Bjb2RlSURzXTsKKyNlbmRpZgogICAgICAgICBwcml2YXRlRXhlY3V0ZShJbml0aWFsaXplQW5k
UmV0dXJuLCAwLCAwKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
T3Bjb2RlSURzOyArK2kpCkBAIC02NjcsOSArNjkxLDExIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1
bXBSZWdpc3RlcnMoQ2FsbEZyYW0KIAogYm9vbCBJbnRlcnByZXRlcjo6aXNPcGNvZGUoT3Bjb2Rl
IG9wY29kZSkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBF
TkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lmICFF
TkFCTEUoTExJTlQpCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybiBvcGNvZGUg
Pj0gMCAmJiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bj
b2RlKSkgPD0gb3BfZW5kOworI2VuZGlmCiAgICAgcmV0dXJuIG9wY29kZSAhPSBIYXNoVHJhaXRz
PE9wY29kZT46OmVtcHR5VmFsdWUoKQogICAgICAgICAmJiAhSGFzaFRyYWl0czxPcGNvZGU+Ojpp
c0RlbGV0ZWRWYWx1ZShvcGNvZGUpCiAgICAgICAgICYmIG1fb3Bjb2RlSURUYWJsZS5jb250YWlu
cyhvcGNvZGUpOwpAQCAtNzI2LDExICs3NTIsMTEgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJw
cmV0ZXI6OnVud2luZENhbAogICAgIC8vIGhhdmUgdG8gc3VidHJhY3QgMS4KICNpZiBFTkFCTEUo
SklUKSAmJiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgaWYgKGNhbGxlckZyYW1lLT5nbG9iYWxE
YXRhKCkuY2FuVXNlSklUKCkpCi0gICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5i
eXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgICAgICBieXRlY29kZU9m
ZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnJl
dHVyblBDKCkpOwogICAgIGVsc2UKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbGlmIEVOQUJM
RShKSVQpCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNh
bGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5
dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbHNlCiAg
ICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+
cmV0dXJuVlBDKCkpIC0gMTsKICNlbmRpZgpAQCAtNTE2NiwxMCArNTE5MiwxMCBAQCB2b2lkIElu
dGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygp
KTsKICNpZiBFTkFCTEUoSklUKQogICAgIGVsc2UKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBj
YWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7Cisg
ICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChj
YWxsRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYKICNlbHNlCi0gICAgYnl0
ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+
cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogICAg
IGxpbmVOdW1iZXIgPSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNl
dChieXRlY29kZU9mZnNldCAtIDEpOwogICAgIHNvdXJjZUlEID0gY2FsbGVyQ29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpT
VmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgog
I2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgogCkBAIC00NSw2
ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsK
ICAgICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsK
ICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKQEAgLTkwLDE5
ICs5MiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEludGVycHJldGVyIHsKICAg
ICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIHB1
YmxpYzoKICAgICAgICAgSW50ZXJwcmV0ZXIoKTsKKyAgICAgICAgfkludGVycHJldGVyKCk7CiAg
ICAgICAgIAotICAgICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQpOworICAgICAg
ICB2b2lkIGluaXRpYWxpemUoTExJbnQ6OkRhdGEqLCBib29sIGNhblVzZUpJVCk7CiAKICAgICAg
ICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKSB7IHJldHVybiBtX3JlZ2lzdGVyRmlsZTsg
fQogICAgICAgICAKICAgICAgICAgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCBpZCkKICAgICAg
ICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwotI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJF
VEVSKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVUYWJsZVtp
ZF07CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIGlkOwpAQCAtMTEyLDcgKzExNiwxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoT3Bjb2RlIG9wY29k
ZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwotI2lmIEVO
QUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICAg
ICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKKyAgICAgICAgICAgIHJldHVybiBtX29w
Y29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRF
UlBSRVRFUikKICAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKICAgICAgICAg
ICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxP
cGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSk7CkBAIC0xMjIsNiArMTI5
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG9wY29kZTsKICNlbmRp
ZgogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGVuYWJsZWQoKQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gbV9lbmFibGVkOworICAgICAgICB9CiAKICAgICAgICAgYm9v
bCBpc09wY29kZShPcGNvZGUpOwogCkBAIC0xODksNyArMjAxLDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSBtX3JlZ2lzdGVyRmlsZTsKICAgICAgICAgCi0jaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAg
ICAgICBPcGNvZGUqIG1fb3Bjb2RlVGFibGU7IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bjb2RlIGZv
ciBjb21waWxpbmcKKyAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29wY29kZUlE
VGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZworI2VsaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgIE9wY29kZSBtX29wY29k
ZVRhYmxlW251bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bjb2RlIGZvciBjb21w
aWxpbmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29wY29kZUlEVGFibGU7
IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZwogI2VuZGlmCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5o
CShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
UmVnaXN0ZXJGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAgICBjbGFzcyBERkdDb2Rl
QmxvY2tzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIFJl
Z2lzdGVyRmlsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlZ2lzdGVyRmlsZSk7
CkBAIC04MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2
YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAg
ICAKICAgICAgICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIqKTsKICAgICAgICAgdm9pZCBy
ZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9pZCBhZGRUb0NvbW1pdHRlZEJ5dGVD
b3VudChsb25nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1
cm5WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0
Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKworI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIklubGluZUFTTS5oIgorCituYW1lc3BhY2UgSlND
IHsKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09Q
VElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVl
IEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRo
RXhlY1N0YXRlKEV4ZWNTdGF0ZSopOworCisjaWYgQ1BVKFg4Nl82NCkKK2FzbSAoCisiLmdsb2Js
ICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RS
SU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJXIxMyks
ICVyMTNcbiIKKyAgICAibW92ICVyMTMsICVyZGlcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklO
R19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCisp
OworI2VsaWYgQ1BVKFg4NikKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0
Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKKyAgICAibW92ICVlZGks
IDQoJWVzcClcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKEFSTV9USFVN
QjIpCithc20gKAorIi50ZXh0IiAiXG4iCisiLmFsaWduIDIiICJcbiIKKyIuZ2xvYmwgIiBTWU1C
T0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lNQk9MKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKKyIudGh1bWIiICJcbiIKKyIudGh1bWJfZnVuYyAiIFRI
VU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklO
RyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJsZHIgcjUsIFtyNSwgIy00
MF0iICJcbiIKKyAgICAiY3B5IHIwLCByNSIgIlxuIgorICAgICJiICIgU1lNQk9MX1NUUklOR19S
RUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOwor
I2VuZGlmCisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxV
RV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhv
c3RDYWxsUmV0dXJuVmFsdWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKyNkZWZp
bmUgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVk
ZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisK
KyNpZiBDQUxMSU5HX0NPTlZFTlRJT05fSVNfU1REQ0FMTAorI2RlZmluZSBIT1NUX0NBTExfUkVU
VVJOX1ZBTFVFX09QVElPTiBDREVDTAorI2Vsc2UKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9W
QUxVRV9PUFRJT04KKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKK2V4dGVybiAiQyIgRW5jb2Rl
ZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSgpOworfQorCisjZW5kaWYgLy8gSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw4IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9w
X3Byb2ZpbGVfd2lsbF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9uZXdfc2NvcGUp
CiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX3Njb3BlKQorICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERF
RklORV9PUChvcF9wdXRfYnlfaW5kZXgpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFs
KQpAQCAtNDg3LDYgKzQ4OSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9w
cmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcmVzb2x2ZV9nbG9i
YWwpCkBAIC02OTAsNyArNjk0LDcgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQ
dHIqIGZ1bgogICAgICAgICBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IG1fY29kZUJsb2NrLT5z
dHJ1Y3R1cmVTdHViSW5mbyhtX21ldGhvZENhbGxDb21waWxhdGlvbkluZm9baV0ucHJvcGVydHlB
Y2Nlc3NJbmRleCkuY2FsbFJldHVybkxvY2F0aW9uOwogICAgIH0KIAotI2lmIEVOQUJMRShERkdf
SklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgaWYgKG1fY2Fu
QmVPcHRpbWl6ZWQpIHsKICAgICAgICAgQ29tcGFjdEpJVENvZGVNYXA6OkVuY29kZXIgaml0Q29k
ZU1hcEVuY29kZXI7CiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBi
eXRlY29kZU9mZnNldCA8IG1fbGFiZWxzLnNpemUoKTsgKytieXRlY29kZU9mZnNldCkgewpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3
ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKSVRDb2RlKCkgeyB9CiAjZW5kaWYK
ICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gSklUVHlwZSB7IEhvc3RDYWxsVGh1bmssIEJhc2Vs
aW5lSklULCBERkdKSVQgfTsKKyAgICAgICAgZW51bSBKSVRUeXBlIHsgTm9uZSwgSG9zdENhbGxU
aHVuaywgSW50ZXJwcmV0ZXJUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OwogICAgICAgICAK
ICAgICAgICAgc3RhdGljIEpJVFR5cGUgYm90dG9tVGllckpJVCgpCiAgICAgICAgIHsKQEAgLTY2
LDggKzY2LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIERGR0pJVDsK
ICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGljIGJvb2wgaXNPcHRpbWl6aW5nSklU
KEpJVFR5cGUgaml0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUg
PT0gREZHSklUOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgYm9vbCBpc0Jh
c2VsaW5lQ29kZShKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBqaXRUeXBlID09IEludGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBCYXNlbGluZUpJVDsK
KyAgICAgICAgfQorICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBKSVRDb2RlKCkK
KyAgICAgICAgICAgIDogbV9qaXRUeXBlKE5vbmUpCiAgICAgICAgIHsKICAgICAgICAgfQogCkBA
IC03NSw2ICs4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgOiBtX3JlZihyZWYp
CiAgICAgICAgICAgICAsIG1faml0VHlwZShqaXRUeXBlKQogICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQoaml0VHlwZSAhPSBOb25lKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
Ym9vbCBvcGVyYXRvciAhKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklURHJpdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRE
cml2ZXIuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVREcml2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDIxIEBACiAjaW5jbHVkZSAi
Qnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNpbmNsdWRlICJK
SVQuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgogaW5saW5lIGJvb2wgaml0Q29tcGls
ZUlmQXBwcm9wcmlhdGUoRXhlY1N0YXRlKiBleGVjLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNv
ZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewor
ICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisgICAgY29kZUJsb2NrLT51bmxpbmtJbmNvbWlu
Z0NhbGxzKCk7CisgICAgCiAgICAgYm9vbCBkZmdDb21waWxlZCA9IGZhbHNlOwogICAgIGlmIChq
aXRUeXBlID09IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAgZGZnQ29tcGlsZWQgPSBERkc6OnRy
eUNvbXBpbGUoZXhlYywgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsKQEAgLTU1LDEwICs2MSw3
IEBAIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEV4ZWMKICAgICAgICAgfQog
ICAgICAgICBqaXRDb2RlID0gSklUOjpjb21waWxlKCZleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVC
bG9jay5nZXQoKSk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotICAgIGlm
ICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQotICAgICAgICBjb2Rl
QmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7Ci0jZW5kaWYKKyAg
ICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7CiAgICAg
Y29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsK
ICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY2LDEwICs2OSwxNSBAQCBpbmxpbmUgYm9vbCBq
aXRDb21waWxlSWZBcHByb3ByaWF0ZShFeGVjCiAKIGlubGluZSBib29sIGppdENvbXBpbGVGdW5j
dGlvbklmQXBwcm9wcmlhdGUoRXhlY1N0YXRlKiBleGVjLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxv
Y2s+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYg
aml0Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBK
SVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CisgICAgaWYgKGppdFR5cGUgPT0gY29kZUJsb2Nr
LT5nZXRKSVRUeXBlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAogICAgIEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBpZiAoIWdsb2JhbERh
dGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9j
ay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBm
YWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0Nv
bXBpbGVkID0gREZHOjp0cnlDb21waWxlRnVuY3Rpb24oZXhlYywgY29kZUJsb2NrLmdldCgpLCBq
aXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwpAQCAtODQsMTEgKzkyLDcgQEAgaW5saW5l
IGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaQogICAgICAgICB9CiAgICAgICAgIGpp
dENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgJmppdENv
ZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQot
ICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQotICAgICAg
ICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7Ci0jZW5k
aWYKLSAgICAKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVu
aXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJp
dHlDaGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY0LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3coSlNHbG9iYWxEYQog
CiBFeGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhl
Y1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIFJldHVybkFkZHJlc3NQ
dHIgZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEs
IGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVj
b2RlT2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2Jh
bERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkt
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1bHRMb2NhdGlvbikpOwogfQogCiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTA0Nzg3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIxNjQsNDUgKzIxNjQsMTMgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2Nv
bnN0cnVjdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSBDYWxsRnJhbWUqIGFyaXR5
Q2hlY2tGb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxl
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCi17Ci0gICAgSlNGdW5jdGlvbiogY2FsbGVl
ID0gYXNGdW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKTsKLSAgICBBU1NFUlQoIWNhbGxlZS0+
aXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVl
LT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7Ci0gICAgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcygpOwotCi0gICAgLy8gVGhpcyBlbnN1cmVzIGVub3VnaCBzcGFjZSBmb3IgdGhlIHdv
cnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1bWVudHMgcGFzc2VkIGJ5IHRoZSBjYWxsZXIu
Ci0gICAgaWYgKCFyZWdpc3RlckZpbGUtPmdyb3coY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIG5l
d0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2NrLT5tX251bUNhbGxlZVJl
Z2lzdGVycykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgQVNTRVJUKGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwotCi0gICAgLy8g
VG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1lIGFuZCBhcmd1bWVudHMsIHRoZW4g
ZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5lZC4KLSAgICBzaXplX3QgZGVs
dGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzOwotICAgIFJlZ2lzdGVyKiBzcmMgPSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpOwotICAg
IFJlZ2lzdGVyKiBkc3QgPSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgZGVsdGE7Ci0KLSAgICBp
bnQgaTsKLSAgICBpbnQgZW5kID0gLUNhbGxGcmFtZTo6b2Zmc2V0Rm9yKGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKTsKLSAgICBmb3IgKGkgPSAtMTsgaSA+PSBlbmQ7IC0taSkKLSAgICAgICAg
ZHN0W2ldID0gc3JjW2ldOwotCi0gICAgZW5kIC09IGRlbHRhOwotICAgIGZvciAoIDsgaSA+PSBl
bmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0ganNVbmRlZmluZWQoKTsKLQotICAgIENhbGxGcmFt
ZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoZHN0KTsKLSAgICBBU1NFUlQoKHZv
aWQqKW5ld0NhbGxGcmFtZSA8PSByZWdpc3RlckZpbGUtPmVuZCgpKTsKLSAgICByZXR1cm4gbmV3
Q2FsbEZyYW1lOwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY2FsbF9hcml0
eUNoZWNrKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKIAogICAg
IENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAgICBDYWxs
RnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1l
LnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOworICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1l
ID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5y
ZWdpc3RlckZpbGUsIENvZGVGb3JDYWxsKTsKICAgICBpZiAoIW5ld0NhbGxGcmFtZSkKICAgICAg
ICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2Fs
bEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2Fs
bEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKQEAgLTIyMTUsNyArMjE4Myw3IEBAIERFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKIAogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFt
ZSA9IGFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29k
ZUZvckNvbnN0cnVjdCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93
UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwg
Q29kZUZvckNvbnN0cnVjdCk7CiAgICAgaWYgKCFuZXdDYWxsRnJhbWUpCiAgICAgICAgIHJldHVy
biB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwg
U1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+
Y2FsbGVyRnJhbWUoKSkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50
ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0lu
dGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDEwIEBACiAj
aWZuZGVmIEpTSW50ZXJmYWNlSklUX2gKICNkZWZpbmUgSlNJbnRlcmZhY2VKSVRfaAogCisjaW5j
bHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNs
dWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNWYWx1
ZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJGaWxl
LmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDb21tb25faAorI2RlZmluZSBMTEludENv
bW1vbl9oCisKKyNkZWZpbmUgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcgMAorCisjZW5kaWYgLy8g
TExJbnRDb21tb25faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJMTEludERhdGEuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkluc3Ry
dWN0aW9uLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9w
Y29kZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworRGF0YTo6RGF0
YSgpCisgICAgOiBtX2V4Y2VwdGlvbkluc3RydWN0aW9ucyhuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bj
b2RlTGVuZ3RoICsgMV0pCisgICAgLCBtX29wY29kZU1hcChuZXcgT3Bjb2RlW251bU9wY29kZUlE
c10pCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyArK2kp
CisgICAgICAgIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUpOworI2RlZmlu
ZSBPUENPREVfRU5UUlkob3Bjb2RlLCBsZW5ndGgpIG1fb3Bjb2RlTWFwW29wY29kZV0gPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF8jI29wY29kZSk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lE
KE9QQ09ERV9FTlRSWSk7CisjdW5kZWYgT1BDT0RFX0VOVFJZCit9CisKK0RhdGE6On5EYXRhKCkK
K3sKKyAgICBkZWxldGVbXSBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBkZWxldGVbXSBt
X29wY29kZU1hcDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAv
LyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnREYXRhX2gKKyNkZWZpbmUgTExJ
bnREYXRhX2gKKworI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2Ug
TExJbnQgeworCisjaWYgRU5BQkxFKExMSU5UKQorY2xhc3MgRGF0YSB7CitwdWJsaWM6CisgICAg
RGF0YSgpOworICAgIH5EYXRhKCk7CisgICAgCisgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbklu
c3RydWN0aW9ucygpCisgICAgeworICAgICAgICByZXR1cm4gbV9leGNlcHRpb25JbnN0cnVjdGlv
bnM7CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBtX29wY29kZU1hcDsKKyAgICB9Citwcml2YXRlOgorICAgIEluc3RydWN0aW9uKiBt
X2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBPcGNvZGUqIG1fb3Bjb2RlTWFwOworfTsKKyNl
bHNlIC8vIEVOQUJMRShMTElOVCkKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV21p
c3Npbmctbm9yZXR1cm4iCisjZW5kaWYKKworY2xhc3MgRGF0YSB7CitwdWJsaWM6CisgICAgSW5z
dHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfTsKKworI2lmIENPTVBJ
TEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisKKyNlbmRp
ZiAvLyBFTkFCTEUoTExJTlQpCisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5k
aWYgLy8gTExJbnREYXRhX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RW50cnlwb2ludHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCisjaW5j
bHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkxM
SW50VGh1bmtzLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpJ
VENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjaykKK3sKKyAg
ICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaWYgKGtpbmQgPT0gQ29k
ZUZvckNhbGwpIHsKKyAgICAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24o
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxs
X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlf
Y2hlY2spKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VS
VChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6
SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2Rl
UmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENv
ZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0
b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IGds
b2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0
b3IpLmNvZGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09
IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0
Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElT
dHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7
Cit9CisKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
SVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgewor
ICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9ldmFsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0
dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsK
K30KKwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpJVENvZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7
CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0
Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVy
VGh1bmspOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RW50cnlwb2ludHNfaAorI2RlZmluZSBMTElu
dEVudHJ5cG9pbnRzX2gKKworI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV2YWxDb2RlQmxvY2s7CitjbGFzcyBKSVRDb2RlOwor
Y2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOworY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKKworbmFtZXNw
YWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCwgSklUQ29kZSYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYg
YXJpdHlDaGVjayk7Cit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENv
ZGUmKTsKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYp
OworCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
RXZhbENvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0RXZhbEVudHJ5cG9p
bnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9ncmFtQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0
Q29kZSkKK3sKKyAgICBnZXRQcm9ncmFtRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsK
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludEVudHJ5
cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4
Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorCisjaW5jbHVkZSAiQ2FsbEZyYW1l
LmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNp
bmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5o
IgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBpbnRlcnByZXRl
clRocm93KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEg
PSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVj
LCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIGV4ZWMtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNl
dChleGVjLCBleGVjLT5yZXR1cm5QQygpKSk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Ro
cm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gZXhl
Yy0+Z2xvYmFsRGF0YSgpLmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKwor
SW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiog
cGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEo
KTsKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0
aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAg
ICAKKyAgICByZXR1cm4gZ2xvYmFsRGF0YS0+bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9u
cygpOworfQorCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9u
KiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0
YSgpOworICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNl
cHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOwor
ICAgIAorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19kdXJpbmdf
Y2FsbF90cmFtcG9saW5lKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25z
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmlu
ZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOwor
CituYW1lc3BhY2UgTExJbnQgeworCisvLyBKdXN0IHRocm93IHRoZSBjdXJyZW50bHkgYWN0aXZl
IGV4Y2VwdGlvbiBpbiB0aGUgY29udGV4dCBvZiB0aGlzIGV4ZWMgc3RhdGUKKy8vIGFuZCBzZXQg
dXAgYWxsIG5lY2Vzc2FyeSBzdGF0ZS4KK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvdyhFeGVjU3RhdGUq
KTsKKworLy8gVGVsbHMgeW91IHdoZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0dXJu
LXRvLXRocm93LCBhZnRlciB5b3UndmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBpbmZvcm1hdGlv
biBuZWVkZWQgdG8gdGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Ro
cm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0aGUgY3VycmVu
dCBQQyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlvdSBh
IFBDCisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNo
IHdoZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFu
ICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBleGNl
cHRpb24gaGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhjZXB0
aW9uIGhhbmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhhdCBQ
QyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVhZCBl
eGNlcHRpb24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5
CisvLyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRl
KiwgSW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8g
YSBjYWxsIHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24q
KTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludEV4Y2Vw
dGlvbnNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVy
cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRI
ZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjEzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJMTEludEhlbHBlcnMuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgor
I2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2lu
Y2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgor
I2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1
ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIK
KyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdGF0aWNT
Y29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5o
IgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJw
cmV0ZXIuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgTExJbnQgeworCisjZGVmaW5lIExMSU5UX09QKGluZGV4KSAoZXhlYy0+cmVnaXN0ZXJz
KClbcGNbaW5kZXhdLnUub3BlcmFuZF0pCisjZGVmaW5lIExMSU5UX09QX0MoaW5kZXgpIChleGVj
LT5yKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9UV08oZmly
c3QsIHNlY29uZCkgZG8geyAgICAgICBcCisgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdm9pZCogYTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdm9pZCogYjsgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICB9IHBhaXI7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICBpbnQ2NF90IGk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIH0gX19ydF91OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmEgPSBmaXJzdDsgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIF9fcnRfdS5wYWlyLmIgPSBzZWNvbmQ7ICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIHJldHVybiBfX3J0X3UuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
fSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5f
VFdPKHBjLCBleGVjKQorCisjZGVmaW5lIExMSU5UX1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYgX190X2ds
b2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7ICAgICAgICBcCisgICAgICAgIF9fdF9nbG9i
YWxEYXRhLmV4Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICBcCisgICAg
ICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAo
VU5MSUtFTFkoZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpIHsgICBcCisgICAgICAgICAg
ICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
fSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfRU5EKCkgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9CUkFOQ0gob3Bjb2RlLCBjb25k
aXRpb24pIGRvIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBib29sIF9fYl9jb25k
aXRpb24gPSAoY29uZGl0aW9uKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBpZiAoX19iX2NvbmRpdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0gcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUp
IC0gMV0udS5vcGVyYW5kOyAgICAgICAgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0g
T1BDT0RFX0xFTkdUSChvcGNvZGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTih2YWx1ZSkg
ZG8geyAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTVmFsdWUgX19yX3JldHVyblZhbHVlID0g
KHZhbHVlKTsgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAg
ICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0gX19yX3JldHVyblZhbHVlOyAgICAgICAg
ICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChleGVjLCBj
YWxsVGFyZ2V0KSBMTElOVF9SRVRVUk5fVFdPKChjYWxsVGFyZ2V0KSwgKGV4ZWMpKQorCisjZGVm
aW5lIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAg
ICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jdF9leGVjID0gKGV4ZWMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2N0
X3BjID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IEpTR2xvYmFsRGF0YSYgX19jdF9nbG9iYWxEYXRhID0gKF9fY3RfZXhlYyktPmdsb2JhbERhdGEo
KTsgICAgICBcCisgICAgICAgIF9fY3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9u
VG9UaHJvdyk7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwo
X19jdF9leGVjLCBjYWxsVG9UaHJvdyhfX2N0X2V4ZWMsIF9fY3RfcGMpKTsgXAorICAgIH0gd2hp
bGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBj
KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jY2Vf
ZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IEluc3RydWN0aW9uKiBfX2NjZV9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VMWShfX2NjZV9leGVjLT5nbG9iYWxEYXRhKCku
ZXhjZXB0aW9uKSkgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9DQUxMX0VORF9J
TVBMKF9fY2NlX2V4ZWMsIGNhbGxUb1Rocm93KF9fY2NlX2V4ZWMsIF9fY2NlX3BjKSk7IFwKKyAg
ICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX1JFVFVSTihleGVjLCBwYywg
Y2FsbFRhcmdldCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUq
IF9fY3JfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBJbnN0cnVjdGlvbiogX19jcl9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICB2b2lkKiBfX2NyX2NhbGxUYXJnZXQgPSAoY2FsbFRh
cmdldCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0NI
RUNLX0VYQ0VQVElPTihfX2NyX2V4ZWMtPmNhbGxlckZyYW1lKCksIF9fY3JfcGMpOyAgXAorICAg
ICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3JfZXhlYywgX19jcl9jYWxsVGFyZ2V0KTsgICAg
ICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCitMTElOVF9IRUxQRVJfREVDTCh0
cmFjZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMldSwgb3AjJXVcbiIs
CisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAg
ICAgICBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLAorICAg
ICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBd
LnUub3Bjb2RlKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2lubGluZSBib29sIHNob3VsZEpJ
VChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gWW91IGNhbiBtb2RpZnkgdGhpcyB0byB0dXJu
IG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0aGUgd29ybGQuCisgICAgcmV0dXJuIGV4
ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50
cnlfb3NyKQoreworICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGV4ZWMtPmNv
ZGVCbG9jaygpLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RX
TygwLCBleGVjKTsKKyAgICB9CisgICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdENvbXBpbGUoZXhl
Yyk7CisgICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdFNvb24oKTsKKyAgICBMTElOVF9SRVRVUk5f
VFdPKGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9m
ZnNldCgwKSwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9hcml0eUNo
ZWNrKQoreworICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGV4ZWMtPmNvZGVC
bG9jaygpLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygw
LCBleGVjKTsKKyAgICB9CisgICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdENvbXBpbGUoZXhlYyk7
CisgICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdFNvb24oKTsKKyAgICBMTElOVF9SRVRVUk5fVFdP
KGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRKSVRDb2RlV2l0aEFyaXR5Q2hlY2soKS5leGVjdXRhYmxl
QWRkcmVzcygpLCBleGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wobG9vcF9vc3IpCit7Cisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAKKyAgICBp
ZiAoIXNob3VsZEpJVChleGVjKSkgeworICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1l
U29vbigpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAgICAK
KyAgICBjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYyk7CisgICAgY29kZUJsb2NrLT5qaXRTb29u
KCk7CisgICAgCisgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6
OkJhc2VsaW5lSklUKTsKKyAgICAKKyAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0
PiBtYXA7CisgICAgY29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRlY29kZShtYXApOworICAgIEJ5
dGVjb2RlQW5kTWFjaGluZU9mZnNldCogbWFwcGluZyA9IGJpbmFyeVNlYXJjaDxCeXRlY29kZUFu
ZE1hY2hpbmVPZmZzZXQsIHVuc2lnbmVkLCBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ6OmdldEJ5
dGVjb2RlSW5kZXg+KG1hcC5iZWdpbigpLCBtYXAuc2l6ZSgpLCBwYyAtIGNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgQVNTRVJUKG1hcHBpbmcpOworICAgIEFTU0VSVCht
YXBwaW5nLT5tX2J5dGVjb2RlSW5kZXggPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBjIC0gY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisgICAgCisgICAgdm9pZCoganVtcFRh
cmdldCA9IGNvZGVCbG9jay0+Z2V0SklUQ29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQo
bWFwcGluZy0+bV9tYWNoaW5lQ29kZU9mZnNldCk7CisgICAgQVNTRVJUKGp1bXBUYXJnZXQpOwor
ICAgIAorICAgIExMSU5UX1JFVFVSTl9UV08oanVtcFRhcmdldCwgZXhlYyk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKHJlcGxhY2UpCit7CisgICAgaWYgKHNob3VsZEpJVChleGVjKSkgeworICAg
ICAgICBleGVjLT5jb2RlQmxvY2soKS0+aml0Q29tcGlsZShleGVjKTsKKyAgICAgICAgZXhlYy0+
Y29kZUJsb2NrKCktPmppdFNvb24oKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZXhlYy0+Y29kZUJs
b2NrKCktPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKQoreworICAgIGlmIChVTkxJS0VMWSgh
ZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5ncm93KCZleGVj
LT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnNdKSkp
IHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmds
b2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Cisg
ICAgICAgIGludGVycHJldGVyVGhyb3coZXhlYyk7CisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJv
d0ZvclRocm93bkV4Y2VwdGlvbihleGVjKTsKKyAgICB9CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0
YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVj
LT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ2FsbCk7
CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgp
OworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVy
Zmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93KGV4ZWMpOworICAgICAg
ICBMTElOVF9SRVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oMSksIGV4ZWMpOworICAgIH0K
KyAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0g
Q29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCku
aW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBpZiAo
IW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAg
IGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3Io
ZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3coZXhlYyk7CisgICAgICAgIExMSU5UX1JF
VFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPigxKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5U
X1JFVFVSTl9UV08oMCwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVh
dGVfYWN0aXZhdGlvbikKK3sKKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBKU0FjdGl2
YXRpb246OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMsIHN0YXRpY19jYXN0PEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSkpOwor
ICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2YXRp
b24pKTsKKyAgICBMTElOVF9SRVRVUk4oSlNWYWx1ZShhY3RpdmF0aW9uKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQoreworICAgIExMSU5UX1JFVFVS
TihKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYykpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKQoreworICAgIEpTRnVu
Y3Rpb24qIGNvbnN0cnVjdG9yID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgCisj
aWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAg
ICBBU1NFUlQoY29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY29u
c3RydWN0b3IsIGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CisjZW5kaWYKKyAg
ICAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBKU1ZhbHVlIHByb3RvID0gTExJTlRf
T1AoMikuanNWYWx1ZSgpOworICAgIGlmIChwcm90by5pc09iamVjdCgpKQorICAgICAgICBzdHJ1
Y3R1cmUgPSBhc09iamVjdChwcm90byktPmluaGVyaXRvcklEKGV4ZWMtPmdsb2JhbERhdGEoKSk7
CisgICAgZWxzZQorICAgICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c2NvcGUoKS0+Z2xv
YmFsT2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpOworICAgIAorICAgIExMSU5UX1JFVFVS
Tihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcykKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRf
T1AoMSkuanNWYWx1ZSgpOworICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBMTElO
VF9SRVRVUk4odjEudG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25ld19vYmplY3QpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSkKK3sK
KyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgYml0d2lzZV9jYXN0PEpTVmFs
dWUqPigmTExJTlRfT1AoMikpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0
cnVjdEFycmF5KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihwY1syXS51
Lm9wZXJhbmQpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25ld19yZWdleHApCit7CisgICAgUmVnRXhwKiByZWdFeHAgPSBleGVjLT5jb2RlQmxvY2so
KS0+cmVnZXhwKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkK
KyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgZmxh
ZyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpOworICAgIExMSU5UX1JFVFVSTihS
ZWdFeHBPYmplY3Q6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUo
KSwgcmVnRXhwKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbighTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihl
eGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OmVxdWFs
KGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QKDIpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNW
YWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1Ao
MikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2xlc3NlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpz
TGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUCgy
KS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZ3JlYXRlcmVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4o
anNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKQor
eworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1i
ZXIoZXhlYykgKyAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKQor
eworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1i
ZXIoZXhlYykgLSAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYykK
K3sKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4
ZWMpOworICAgIExMSU5UX09QKDIpID0ganNOdW1iZXIocmVzdWx0ICsgMSk7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cG9zdF9kZWMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCAtIDEpOwor
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3RvX2pzbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElO
VF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25lZ2F0ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoLUxMSU5UX09Q
KDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfYWRkKQoreworICAgIEpTVmFsdWUgdjEgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7Cisg
ICAgSlNWYWx1ZSB2MiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAgIGlmICh2
MS5pc1N0cmluZygpKSB7CisgICAgICAgIExMSU5UX1JFVFVSTigKKyAgICAgICAgICAgIHYyLmlz
U3RyaW5nKCkKKyAgICAgICAgICAgID8ganNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEpLCBhc1N0
cmluZyh2MikpCisgICAgICAgICAgICA6IGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIu
dG9QcmltaXRpdmVTdHJpbmcoZXhlYykpKTsKKyAgICB9CisgICAgCisgICAgaWYgKHYxLmlzTnVt
YmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHYx
LmFzTnVtYmVyKCkgKyB2Mi5hc051bWJlcigpKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpz
QWRkU2xvd0Nhc2UoZXhlYywgdjEsIHYyKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9tdWwpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUo
KS50b051bWJlcihleGVjKSAqIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAtIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9kaXYpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKSAvIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVt
YmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2QpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVy
KGV4ZWMpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPDwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3JzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNW
YWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIo
ZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b1VJbnQzMihleGVj
KSA+PiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSAmIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9i
aXRvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgp
LnRvSW50MzIoZXhlYykgfCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKQoreworICAgIExMSU5UX1JF
VFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSBeIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9iaXRub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKH5MTElOVF9P
UCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQoreworICAgIEpTVmFsdWUgYmFzZVZhbCA9IExMSU5U
X09QKDIpLmpzVmFsdWUoKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgVHlwZUluZm8gdHlwZUluZm8o
VW5zcGVjaWZpZWRUeXBlKTsKKyAgICBBU1NFUlQoIWJhc2VWYWwuaXNPYmplY3QoKQorICAgICAg
ICAgICB8fCAhKHR5cGVJbmZvID0gYXNPYmplY3QoYmFzZVZhbCktPnN0cnVjdHVyZSgpLT50eXBl
SW5mbygpKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSk7CisjZW5kaWYKKyAgICBMTElOVF9USFJP
VyhjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihleGVjLCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3coZXhlYywg
TExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIExMSU5UX09QKDQp
LmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZikKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1AoMiku
anNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRlZmluZWQp
Cit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4odi5pc0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKExMSU5UX09QKDIpLmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oTExJTlRfT1AoMikuanNWYWx1ZSgpLmlzTnVtYmVyKCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKGlzSlNTdHJpbmcoTExJTlRfT1AoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4o
anNJc09iamVjdFR5cGUoTExJTlRfT1AoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihqc0lzRnVuY3Rpb25UeXBlKExMSU5UX09QKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2luKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29t
bW9uU2xvd1BhdGhzOjpvcEluKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1Ao
MykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSkK
K3sKKyAgICBMTElOVF9SRVRVUk4oQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhl
Yy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKQoreworICAgIExMSU5UX1JFVFVSTigK
KyAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVTa2lwKAorICAgICAgICAgICAgZXhl
YywKKyAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3Bl
cmFuZCksCisgICAgICAgICAgICBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNH
bG9iYWxPYmplY3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0udS5vcGVyYW5kOworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaW50
IG9mZnNldCA9IHBjWzRdLnUub3BlcmFuZDsKKyAgICAKKyAgICBBU1NFUlQoKCFzdHJ1Y3R1cmUp
ID09ICghb2Zmc2V0KSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSBnbG9iYWxPYmplY3QtPnN0
cnVjdHVyZSgpKTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRl
bnRpZmllcihwcm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsK
KyAgICAKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQs
IHNsb3QpKSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBp
ZGVudCk7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAg
JiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgcGNbM10u
dS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7Cisg
ICAgICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIExMSU5UX1JFVFVSTihyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICBMTElO
VF9USFJPVyhjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAgSWRlbnRpZmll
ciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQp
OworICAgIGlmIChwY1szXS51Lm9wZXJhbmQpIHsKKyAgICAgICAgSlNWYWx1ZSBiYXNlID0gSlND
OjpyZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCB0cnVlKTsKKyAg
ICAgICAgaWYgKCFiYXNlKQorICAgICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJ
bnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICAgICAg
TExJTlRfUkVUVVJOKGJhc2UpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oSlNDOjpy
ZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKK3sKKyAg
ICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhl
Yy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIW9i
amVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkKKyAgICAgICAgTExJTlRf
VEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51
c3RyaW5nKCkpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Jlc29sdmVfd2l0aF9iYXNlKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xv
d1BhdGhzOjpvcFJlc29sdmVXaXRoQmFzZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRp
ZmllcihwY1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKK3sKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aFRoaXMoZXhlYywg
ZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1Ao
MSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVz
dWx0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5v
cGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsK
KyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSByZXN1bHQg
PSBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKKyAgICBMTElOVF9PUCgxKSA9IHJlc3VsdDsKKworICAgIGlmIChiYXNlVmFsdWUu
aXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCisgICAgICAgICYmIHNsb3Qu
c2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUKKyAgICAgICAgJiYgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5
cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OlZhbHVlKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwq
IGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3Ry
dWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0
dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpKSB7CisgICAgICAgICAg
ICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVl
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKQoreworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQg
PSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlVmFsdWUpOworICAgIExMSU5UX1JFVFVSTihiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBz
bG90KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpCit7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVy
JiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpT
VmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQo
ZXhlYywgaWRlbnQsIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAg
ICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFz
ZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1
cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUt
PnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkKKyAgICAgICAgICAgICYmIGJh
c2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChz
bG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CisgICAgICAgICAg
ICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpKSB7CisgICAgICAgICAgICAgICAg
ICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKKyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3Vz
SUQoKS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJh
bmQpCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2Rl
ID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAg
ICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgICAgICAgICAgICAgICAg
IHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7
CisgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVD
aGFpbi5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhl
YykpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRf
YnlfaWQpOworICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAg
ICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9kZWxfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IExMSU5UX09QKDIpLmpzVmFs
dWUoKS50b09iamVjdChleGVjKTsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+
bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgY29kZUJsb2Nr
LT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOworICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkK
KyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVs
ZXRlIHByb3BlcnR5LiIpKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRl
KSk7Cit9CisKK2lubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQoreworICAgIGlmIChMSUtFTFkoYmFzZVZh
bHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBpZiAoSlNW
YWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eShleGVj
LCBhc1N0cmluZyhzdWJzY3JpcHQpLT52YWx1ZShleGVjKSkpCisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKyAgICAKKyAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKKyAg
ICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNK
U1N0cmluZyhiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkp
KQorICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMs
IGkpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBh
c0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkKKyAgICAgICAgICAgIHJl
dHVybiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAg
CisgICAgICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGkpOworICAgIH0KKyAgICAKKyAg
ICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7Cisg
ICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVydHkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwo
ZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpCit7CisgICAg
SlNWYWx1ZSBhcmd1bWVudHMgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhcmd1
bWVudHMpIHsKKyAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
ICAgIExMSU5UX09QKDIpID0gYXJndW1lbnRzOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRV
Uk4oZ2V0QnlWYWwoZXhlYywgYXJndW1lbnRzLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSkKK3sKKyAgICBMTElOVF9S
RVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5q
c1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpCit7
CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAg
IAorICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIEpT
VmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdmFs
dWUgPSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7CisgICAgCisgICAgaWYgKExJS0VMWShzdWJzY3Jp
cHQuaXNVSW50MzIoKSkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQz
MigpOworICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1ZSkpIHsKKyAgICAgICAgICAgIEpT
QXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAoanNB
cnJheS0+Y2FuU2V0SW5kZXgoaSkpCisgICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgo
Z2xvYmFsRGF0YSwgaSwgdmFsdWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IEpTQXJyYXk6OnB1dEJ5SW5kZXgoanNBcnJheSwgZXhlYywgaSwgdmFsdWUpOworICAgICAgICAg
ICAgTExJTlRfRU5EKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFz
ZVZhbHVlKQorICAgICAgICAgICAgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNz
SW5kZXgoaSkpIHsKKyAgICAgICAgICAgIEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IGFzQnl0
ZUFycmF5KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKSB7Cisg
ICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzSW50MzIoKSk7
CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5z
ZXRJbmRleChpLCB2YWx1ZS5hc051bWJlcigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMs
IGksIHZhbHVlKTsKKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIElkZW50
aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChleGVjLT5jb2Rl
QmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVy
dHksIHZhbHVlLCBzbG90KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2RlbF9ieV92YWwpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9P
UCgyKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUudG9P
YmplY3QoZXhlYyk7CisgICAgCisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUCgzKS5q
c1ZhbHVlKCk7CisgICAgCisgICAgYm9vbCBjb3VsZERlbGV0ZTsKKyAgICAKKyAgICB1aW50MzJf
dCBpOworICAgIGlmIChzdWJzY3JpcHQuZ2V0VUludDMyKGkpKQorICAgICAgICBjb3VsZERlbGV0
ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNl
T2JqZWN0LCBleGVjLCBpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3Ry
aW5nKGV4ZWMpKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIGNv
dWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFz
ZU9iamVjdCwgZXhlYywgcHJvcGVydHkpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNvdWxkRGVs
ZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJTlRf
VEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIp
KTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpCit7CisgICAgTExJTlRfT1Ao
MSkuanNWYWx1ZSgpLnB1dChleGVjLCBwY1syXS51Lm9wZXJhbmQsIExMSU5UX09QKDMpLmpzVmFs
dWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
dXRfZ2V0dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3Qo
KSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVl
KCkpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZp
ZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNWYWx1ZSgpLmlz
T2JqZWN0KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZUdldHRlcihiYXNl
T2JqLCBleGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfc2V0dGVy
KQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAg
SlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAg
IElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0u
dS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNWYWx1ZSgpLmlzT2JqZWN0KCkp
OworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZVNldHRlcihiYXNlT2JqLCBleGVj
LCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKQoreworICAg
IHVuc2lnbmVkIGNvdW50ID0gcGNbMV0udS5vcGVyYW5kOworICAgIFNjb3BlQ2hhaW5Ob2RlKiB0
bXAgPSBleGVjLT5zY29wZUNoYWluKCk7CisgICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAgIHRt
cCA9IHRtcC0+cG9wKCk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbih0bXApOworICAgIHBjICs9
IHBjWzJdLnUub3BlcmFuZDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2p0cnVlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qdHJ1ZSwgTExJTlRfT1Ao
MSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qZmFsc2UpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pmYWxzZSwgIUxMSU5UX09QKDEp
LmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfamxlc3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzLCBqc0xlc3M8dHJ1ZT4oZXhl
YywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpCit7CisgICAgTExJTlRfQlJBTkNI
KG9wX2pubGVzcywgIWpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2pncmVhdGVyKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlciwganNMZXNzPGZhbHNl
PihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcikKK3sKKyAgICBMTElO
VF9CUkFOQ0gob3Bfam5ncmVhdGVyLCAhanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDEp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2psZXNzZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEsIGpz
TGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpCit7
CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChv
cF9qZ3JlYXRlcmVxLCBqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qbmdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEsICFq
c0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1t
KQoreworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1AoMykuanNWYWx1ZSgpOworICAg
IEFTU0VSVChzY3J1dGluZWUuaXNEb3VibGUoKSk7CisgICAgZG91YmxlIHZhbHVlID0gc2NydXRp
bmVlLmFzRG91YmxlKCk7CisgICAgaW50MzJfdCBpbnRWYWx1ZSA9IHN0YXRpY19jYXN0PGludDMy
X3Q+KHZhbHVlKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAg
ICBpZiAodmFsdWUgPT0gaW50VmFsdWUpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5pbW1lZGlhdGVT
d2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShpbnRWYWx1ZSwg
ZGVmYXVsdE9mZnNldCk7CisgICAgfSBlbHNlCisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hf
c3RyaW5nKQoreworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1AoMykuanNWYWx1ZSgp
OworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlmICghc2Ny
dXRpbmVlLmlzU3RyaW5nKCkpCisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7CisgICAgZWxz
ZSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Cisg
ICAgICAgIHBjICs9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3Bl
cmFuZCkub2Zmc2V0Rm9yVmFsdWUoYXNTdHJpbmcoc2NydXRpbmVlKS0+dmFsdWUoZXhlYykuaW1w
bCgpLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYykKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVUeXBlKCkg
IT0gRnVuY3Rpb25Db2RlCisgICAgICAgICAgIHx8ICFjb2RlQmxvY2stPm5lZWRzRnVsbFNjb3Bl
Q2hhaW4oKQorICAgICAgICAgICB8fCBleGVjLT51bmNoZWNrZWRSKGNvZGVCbG9jay0+YWN0aXZh
dGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfUkVUVVJOKGNvZGVCbG9jay0+
ZnVuY3Rpb25EZWNsKHBjWzJdLnUub3BlcmFuZCktPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFp
bigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApCit7Cisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbMl0udS5v
cGVyYW5kKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVuY3Rpb24tPm1ha2UoZXhlYywgZXhl
Yy0+c2NvcGVDaGFpbigpKTsKKyAgICAKKyAgICBpZiAoIWZ1bmN0aW9uLT5uYW1lKCkuaXNOdWxs
KCkpIHsKKyAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25TY29wZU9iamVjdCA9
IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBmdW5jdGlvbi0+bmFtZSgpLCBmdW5j
LCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBmdW5jLT5zZXRTY29wZShleGVjLT5n
bG9iYWxEYXRhKCksIGZ1bmMtPnNjb3BlKCktPnB1c2goZnVuY3Rpb25TY29wZU9iamVjdCkpOwor
ICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZnVuYyk7Cit9CisKK3N0YXRpYyBIZWxwZXJS
ZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rp
b24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorewor
ICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKworICAgIGV4ZWND
YWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2FsbGVl
LT5zZXRDb2RlQmxvY2soMCk7CisKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAg
ICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRD
YWxsRGF0YShjYWxsZWUsIGNhbGxEYXRhKTsKKyAgICAKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBl
ICE9IENhbGxUeXBlSlMpOworICAgIAorICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVI
b3N0KSB7CisgICAgICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgICAg
IH0KKyAgICAKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSk7CisgICAg
ICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4
ZWMsIGNhbGxlZSkpOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1
Y3QpOworICAgIAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1
Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0
RGF0YSk7CisgICAgCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZUpT
KTsKKyAgICAKKyAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlSG9zdCkgewor
ICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgTExJ
TlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKGNvbnN0cnVj
dFR5cGUgPT0gQ29uc3RydWN0VHlwZU5vbmUpOworICAgIExMSU5UX0NBTExfVEhST1coZXhlYywg
cGMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworfQorCitpbmxp
bmUgSGVscGVyUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0
cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSlNWYWx1ZSBjYWxsZWVB
c1ZhbHVlLCBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gMCkKK3sKKyAgICBKU0Nl
bGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsK
KyAgICBpZiAoIWNhbGxlZUFzRnVuY3Rpb25DZWxsKQorICAgICAgICByZXR1cm4gaGFuZGxlSG9z
dENhbGwoZXhlY0NhbGxlZSwgcGMsIGNhbGxlZUFzVmFsdWUsIGtpbmQpOworICAgIAorICAgIEpT
RnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOworICAg
IGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oY2FsbGVlLT5zY29wZVVuY2hlY2tlZCgpKTsKKyAg
ICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOworICAg
IAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOworICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gMDsKKyAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAg
ICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVz
c0ZvckNhbGwoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5j
dGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRh
YmxlKTsKKyAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21w
aWxlRm9yKGV4ZWNDYWxsZWUsIGNhbGxlZS0+c2NvcGUoKSwga2luZCk7CisgICAgICAgIGlmIChl
cnJvcikKKyAgICAgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlY0NhbGxlZS0+Y2FsbGVyRnJh
bWUoKSwgcGMsIGVycm9yKTsKKyAgICAgICAgY29kZUJsb2NrID0gJmZ1bmN0aW9uRXhlY3V0YWJs
ZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgICAgIEFTU0VSVChjb2RlQmxvY2sp
OworICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8
IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQorICAgICAg
ICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZVdpdGhB
cml0eUNoZWNrRm9yKGtpbmQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUHRyID0g
ZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JD
YWxsKCk7CisgICAgfQorICAgIAorICAgIGlmIChjYWxsTGlua0luZm8pIHsKKyAgICAgICAgRXhl
Y1N0YXRlKiBleGVjQ2FsbGVyID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAg
Y2FsbExpbmtJbmZvLT5jYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0Nh
bGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBj
YWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKKyAgICAgICAgaWYgKGNv
ZGVCbG9jaykKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChjYWxsTGlu
a0luZm8pOworICAgIH0KKyAgICAKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBw
YywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKK30KKworaW5saW5lIEhlbHBlclJldHVy
blR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8v
IC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxs
IGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIElmIHBvc3NpYmxlLCBsaW5r
IHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFj
aGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAor
ICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICAK
KyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAg
IAorICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUu
b3BlcmFuZCk7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxl
ZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMp
OworICAgIAorICAgIEFTU0VSVChwY1s0XS51LmNhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJuIHNl
dFVwQ2FsbChleGVjQ2FsbGVlLCBwYywga2luZCwgY2FsbGVlQXNWYWx1ZSwgcGNbNF0udS5jYWxs
TGlua0luZm8pOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCkKK3sKKyAgICBy
ZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDYWxsKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhl
YywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y2FsbF92YXJhcmdzKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAg
YSBjYWxsIGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4KKyAg
ICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2Fy
eS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNh
bGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFs
dWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2Fs
bGVlID0gbG9hZFZhcmFyZ3MoCisgICAgICAgIGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50
ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLAorICAgICAgICBMTElOVF9PUCgyKS5qc1ZhbHVlKCks
IExMSU5UX09QKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5vcGVyYW5kKTsKKyAgICBMTElOVF9DQUxM
X0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYyk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+dW5jaGVj
a2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxs
ZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIAorICAgIHJldHVybiBzZXRVcENhbGwoZXhl
Y0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCkKK3sKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUg
PSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVl
ID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEg
PSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRD
YWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmls
ZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFp
bihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBDKGJpdHdp
c2VfY2FzdDxJbnN0cnVjdGlvbio+KCZsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOworICAg
IGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKyAgICAKKyAgICBpZiAoIWlzSG9zdEZ1bmN0
aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFsKSkKKyAgICAgICAgcmV0dXJuIHNldFVw
Q2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworICAgIAor
ICAgIGdsb2JhbERhdGEuaG9zdENhbGxSZXR1cm5WYWx1ZSA9IGV2YWwoZXhlY0NhbGxlZSk7Cisg
ICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCit7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygp
LT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIEpTVmFsdWUgYWN0aXZhdGlvblZhbHVlID0g
TExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIGlmICghYWN0aXZhdGlvblZhbHVlKSB7CisgICAg
ICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT5yZWdpc3RlcnMoKVt1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKV0uanNWYWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAo
IWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICBhc0Fy
Z3VtZW50cyh2KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAgfQorICAgICAgICBMTElOVF9FTkQo
KTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0aW9uKGFj
dGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihleGVjLT5nbG9iYWxEYXRh
KCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT5yZWdpc3RlcnMoKVt1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKV0uanNWYWx1ZSgpKQorICAgICAgICBhc0Fy
Z3VtZW50cyh2KS0+ZGlkVGVhck9mZkFjdGl2YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBhY3Rp
dmF0aW9uKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3RlYXJfb2ZmX2FyZ3VtZW50cykKK3sKKyAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCktPnVz
ZXNBcmd1bWVudHMoKSAmJiAhZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4o
KSk7CisgICAgYXNBcmd1bWVudHMoZXhlYy0+cmVnaXN0ZXJzKClbdW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCldLmpzVmFsdWUoKSktPnRlYXJPZmYoZXhlYyk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsICZMTElOVF9PUCgyKSwgcGNbM10udS5v
cGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpCit7
CisgICAgTExJTlRfUkVUVVJOKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b1ByaW1pdGl2ZShleGVj
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKQoreworICAgIEpT
VmFsdWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAodi5pc1VuZGVmaW5lZE9y
TnVsbCgpKSB7CisgICAgICAgIHBjICs9IHBjWzVdLnUub3BlcmFuZDsKKyAgICAgICAgTExJTlRf
RU5EKCk7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVjdHVyZSgpOworICAgIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBzdHJ1Y3R1cmUtPmVudW1l
cmF0aW9uQ2FjaGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlOYW1lSXRlcmF0b3IgfHwganNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4oKSAhPSBzdHJ1Y3R1cmUtPnBy
b3RvdHlwZUNoYWluKGV4ZWMpKQorICAgICAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8pOworICAgIAorICAgIExMSU5UX09Q
KDEpID0gSlNWYWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKKyAgICBMTElOVF9PUCgyKSA9
IEpTVmFsdWUobyk7CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rlcjo6d2l0aEludCgwKTsKKyAg
ICBMTElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJvcGVydHlOYW1lSXRlcmF0b3It
PnNpemUoKSk7CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcG5hbWVzKTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5h
bWUpCit7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChMTElOVF9PUCgyKS5qc1ZhbHVl
KCkpOworICAgIEpTU3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3RyaW5nKExMSU5UX09QKDEpLmpzVmFs
dWUoKSk7CisgICAgaWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhlYywg
cHJvcGVydHktPnZhbHVlKGV4ZWMpKSkpIHsKKyAgICAgICAgLy8gR28gdG8gdGFyZ2V0LgorICAg
ICAgICBwYyArPSBwY1s2XS51Lm9wZXJhbmQ7CisgICAgfSAvLyBFbHNlLCBkb24ndCBjaGFuZ2Ug
dGhlIFBDLCBzbyB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxvb3AuCisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKQoreworICAgIEpTVmFs
dWUgdiA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogbyA9IHYudG9PYmpl
Y3QoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgTExJTlRf
T1AoMSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5w
dXNoKG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3BvcF9zY29wZSkKK3sKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3Bl
Q2hhaW4oKS0+cG9wKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogc2NvcGUgPSBKU1N0YXRpY1Njb3BlT2Jq
ZWN0OjpjcmVhdGUoZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCks
IExMSU5UX09QKDMpLmpzVmFsdWUoKSwgRG9udERlbGV0ZSk7CisgICAgZXhlYy0+c2V0U2NvcGVD
aGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goc2NvcGUpKTsKKyAgICBMTElOVF9SRVRVUk4o
c2NvcGUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpCit7CisgICAgTExJ
TlRfVEhST1coTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKK3sKKyAgICBMTElOVF9USFJPVyhjcmVhdGVS
ZWZlcmVuY2VFcnJvcihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b1N0cmluZyhleGVj
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVidWcpCit7CisgICAgaW50IGRl
YnVnSG9va0lEID0gcGNbMV0udS5vcGVyYW5kOworICAgIGludCBmaXJzdExpbmUgPSBwY1syXS51
Lm9wZXJhbmQ7CisgICAgaW50IGxhc3RMaW5lID0gcGNbM10udS5vcGVyYW5kOworICAgIAorICAg
IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+ZGVidWcoZXhlYywgc3RhdGljX2Nhc3Q8
RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgCisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dp
bGxfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSkt
PndpbGxFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQorewor
ICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSgpKS0+ZGlkRXhlY3V0ZShl
eGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTElu
dEhlbHBlcnNfaAorI2RlZmluZSBMTEludEhlbHBlcnNfaAorCisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0
IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCit0eXBlZGVmIGludDY0X3QgSGVs
cGVyUmV0dXJuVHlwZTsKKworI2RlZmluZSBMTElOVF9IRUxQRVJfREVDTChuYW1lKSBcCisgICAg
ZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50XyMjbmFtZShFeGVjU3RhdGUqIGV4ZWMs
IEluc3RydWN0aW9uKiBwYykKKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2UpOworTExJTlRfSEVM
UEVSX0RFQ0woZW50cnlfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9hcml0eUNo
ZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJl
cGxhY2UpOworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjayk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3Jl
YXRlX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVu
dHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
d19vYmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZlcik7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmV3X3JlZ2V4cCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9lcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbnN0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dy
ZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcHJlX2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2Rl
Yyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9pbmMpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Bvc3RfZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJl
cik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9hZGQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfc3ViKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNo
aWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Vyc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2JpdHhvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2luc3RhbmNlb2YpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9pc19ib29sZWFuKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbik7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Jlc29sdmVfYmFzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3By
b3BlcnR5X2V4aXN0cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jh
c2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2dldF9hcmd1bWVudHNfbGVuZ3RoKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlf
aWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZ2V0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2Fy
Z3VtZW50X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9kZWxfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5k
ZXgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9z
Y29wZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9qZmFsc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2pncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pu
bGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
c3dpdGNoX2ltbSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2NoYXIpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25ld19mdW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHAp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rl
YXJfb2ZmX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2dldF9wbmFtZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3BvcF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdf
c2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2RlYnVnKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCk7CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnRIZWxwZXJzX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25m
aWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9m
ZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50T2ZmbGlu
ZUFzbUNvbmZpZ19oCisjZGVmaW5lIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisKKyNpbmNsdWRl
ICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBDUFUoWDg2KQorI2RlZmluZSBPRkZMSU5FX0FTTV9YODYg
MQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDAKKyNlbmRpZgorCisjaWYgQ1BVKEFS
TXY3KQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5F
X0FTTV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyNkZWZpbmUgT0ZG
TElORV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNT
RVJUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUoQklHX0VORElBTikKKyNkZWZpbmUgT0ZG
TElORV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5E
SUFOIDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKExMSU5UX09TUl9UT19KSVQpCisjZGVmaW5lIE9G
RkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9F
TkFCTEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcKKyNkZWZpbmUg
T0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9B
U01fRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisKKyNlbmRpZiAvLyBMTEludE9mZmxpbmVB
c21Db25maWdfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJBbGxvY2F0aW9uU3BhY2UuaCIK
KyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVk
ZSAiSGVhcC5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklUU3R1YnMu
aCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU3R5cGVJ
bmZvLmgiCisjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkp1bXBUYWJs
ZS5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUgIk1hcmtl
ZFNwYWNlLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFp
bi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgi
CisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1w
bC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBPRkZMSU5FX0FTTV9PRkZTRVRPRihj
bGF6eiwgZmllbGQpIE9CSkVDVF9PRkZTRVRPRihjbGF6eiwgZmllbGQpCisKK2NsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkKiBk
dW1teSgpOworfTsKKworY29uc3QgdW5zaWduZWQqIExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVt
bXkoKQoreworI2luY2x1ZGUgIkxMSW50RGVzaXJlZE9mZnNldHMuaCIKKyAgICByZXR1cm4gZXh0
cmFjdG9yVGFibGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCitpbnQgbWFpbihpbnQsIGNo
YXIqKikKK3sKKyAgICAvLyBPdXQgb2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRpb24sIG1ha2Ugc3Vy
ZSB0aGF0IExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSBpcyBsaXZlLAorICAgIC8vIGFu
ZCB0aGUgZXh0cmFjdG9yVGFibGUgaXMgbGl2ZSwgdG9vLgorICAgIHByaW50ZigiJXBcbiIsIEpT
Qzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpKTsKKyAgICByZXR1cm4gMDsKK30KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50VGh1
bmtzLmgiCisKKyNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5oIgorI2luY2x1ZGUgIkxpbmtCdWZm
ZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgTExJbnQgeworCitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgdm9pZCAoKnRhcmdl
dCkoKSkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CisgICAgCisgICAgLy8gRklYTUU6IHRo
ZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0IG9uIFg4NiwgYnV0IEknbSBub3Qg
c3VyZSBJIGNhcmUuCisgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIo
Yml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAg
ICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6cmVnVDApOworICAgIAorICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZqaXQpOworICAgIHJldHVybiBwYXRjaEJ1ZmZlci5m
aW5hbGl6ZUNvZGUoKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2Fs
bEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJl
dHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZv
ckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQor
eworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2Jh
bERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKTsKK30KKworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2V2YWxfcHJvbG9ndWUpOworfQorCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9i
YWxEYXRhLCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5r
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5r
cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1
bmtzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludFRodW5rc19oCisjZGVmaW5l
IExMSW50VGh1bmtzX2gKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRhOworCituYW1lc3BhY2UgTExJbnQg
eworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNv
bnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFs
RGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlD
aGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50VGh1bmtzX2gKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjI5MyBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjIENyYXNoIGNvdXJzZSBv
biB0aGUgbGFuZ3VhZ2UgdGhhdCB0aGlzIGlzIHdyaXR0ZW4gaW4gKHdoaWNoIEkganVzdCBjYWxs
CisjICJhc3NlbWJseSIgZXZlbiB0aG91Z2ggaXQncyBtb3JlIHRoYW4gdGhhdCk6CisjCisjIC0g
TW9zdGx5IGdhcy1zdHlsZSBvcGVyYW5kIG9yZGVyaW5nLiBUaGUgbGFzdCBvcGVyYW5kIHRlbmRz
IHRvIGJlIHRoZQorIyAgIGRlc3RpbmF0aW9uLiBTbyAiYSA6PSBiIiBpcyB3cml0dGVuIGFzICJt
b3YgYiwgYSIuIEJ1dCB1bmxpa2UgZ2FzLAorIyAgIGNvbXBhcmlzb25zIGFyZSBpbi1vcmRlciwg
c28gImlmIChhIDwgYikiIGlzIHdyaXR0ZW4gYXMKKyMgICAiYmlsdCBhLCBiLCAuLi4iLgorIwor
IyAtICJiIiA9IGJ5dGUsICJoIiA9IDE2LWJpdCB3b3JkLCAiaSIgPSAzMi1iaXQgd29yZCwgInAi
ID0gcG9pbnRlci4KKyMgICBDdXJyZW50bHkgdGhpcyBpcyBqdXN0IDMyLWJpdCBzbyAiaSIgYW5k
ICJwIiBhcmUgaW50ZXJjaGFuZ2VhYmxlCisjICAgZXhjZXB0IHdoZW4gYW4gb3Agc3VwcG9ydHMg
b25lIGJ1dCBub3QgdGhlIG90aGVyLgorIworIyAtIEluIGdlbmVyYWwsIHZhbGlkIG9wZXJhbmRz
IGZvciBtYWNybyBpbnZvY2F0aW9ucyBhbmQgaW5zdHJ1Y3Rpb25zIGFyZQorIyAgIHJlZ2lzdGVy
cyAoZWcgInQwIiksIGFkZHJlc3NlcyAoZWcgIjRbdDBdIiksIGJhc2UtaW5kZXggYWRkcmVzc2Vz
CisjICAgKGVnICI3W3QwLCB0MSwgMl0iKSwgYWJzb2x1dGUgYWRkcmVzc2VzIChlZyAiMHhhMDAw
MDAwMFtdIiksIG9yIGxhYmVscworIyAgIChlZyAiX2ZvbyIgb3IgIi5mb28iKS4gTWFjcm8gaW52
b2NhdGlvbnMgY2FuIGFsc28gdGFrZSBhbm9ueW1vdXMKKyMgICBtYWNyb3MgYXMgb3BlcmFuZHMu
IEluc3RydWN0aW9ucyBjYW5ub3QgdGFrZSBhbm9ueW1vdXMgbWFjcm9zLgorIworIyAtIExhYmVs
cyBtdXN0IGhhdmUgbmFtZXMgdGhhdCBiZWdpbiB3aXRoIGVpdGhlciAiXyIgb3IgIi4iLiAgQSAi
LiIgbGFiZWwKKyMgICBpcyBsb2NhbCBhbmQgZ2V0cyByZW5hbWVkIGJlZm9yZSBjb2RlIGdlbiB0
byBtaW5pbWl6ZSBuYW1lc3BhY2UKKyMgICBwb2xsdXRpb24uIEEgIl8iIGxhYmVsIGlzIGFuIGV4
dGVybiBzeW1ib2wgKGkuZS4gIi5nbG9ibCIpLiBUaGUgIl8iCisjICAgbWF5IG9yIG1heSBub3Qg
YmUgcmVtb3ZlZCBkdXJpbmcgY29kZSBnZW4gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGFzbQor
IyAgIGNvbnZlbnRpb25zIGZvciBDIG5hbWUgbWFuZ2xpbmcgb24gdGhlIHRhcmdldCBwbGF0Zm9y
bSBtYW5kYXRlIGEgIl8iCisjICAgcHJlZml4LgorIworIyAtIEEgIm1hY3JvIiBpcyBhIGxhbWJk
YSBleHByZXNzaW9uLCB3aGljaCBtYXkgYmUgZWl0aGVyIGFub255bW91cyBvcgorIyAgIG5hbWVk
LiBCdXQgdGhpcyBoYXMgY2F2ZWF0cy4gIm1hY3JvIiBjYW4gdGFrZSB6ZXJvIG9yIG1vcmUgYXJn
dW1lbnRzLAorIyAgIHdoaWNoIG1heSBiZSBtYWNyb3Mgb3IgYW55IHZhbGlkIG9wZXJhbmRzLCBi
dXQgaXQgY2FuIG9ubHkgcmV0dXJuCisjICAgY29kZS4gQnV0IHlvdSBjYW4gZG8gVHVyaW5nLWNv
bXBsZXRlIHRoaW5ncyB2aWEgY29udGludWF0aW9uIHBhc3NpbmcKKyMgICBzdHlsZTogIm1hY3Jv
IGZvbyAoYSwgYikgYihhKSBlbmQgZm9vKGZvbywgZm9vKSIuIEFjdHVhbGx5LCBkb24ndCBkbwor
IyAgIHRoYXQsIHNpbmNlIHlvdSdsbCBqdXN0IGNyYXNoIHRoZSBhc3NlbWJsZXIuCisjCisjIC0g
QW4gImlmIiBpcyBhIGNvbmRpdGlvbmFsIG9uIHNldHRpbmdzLiBBbnkgaWRlbnRpZmllciBzdXBw
bGllZCBpbiB0aGUKKyMgICBwcmVkaWNhdGUgb2YgYW4gImlmIiBpcyBhc3N1bWVkIHRvIGJlIGEg
I2RlZmluZSB0aGF0IGlzIGF2YWlsYWJsZQorIyAgIGR1cmluZyBjb2RlIGdlbi4gU28geW91IGNh
bid0IHVzZSAiaWYiIGZvciBjb21wdXRhdGlvbiBpbiBhIG1hY3JvLCBidXQKKyMgICB5b3UgY2Fu
IHVzZSBpdCB0byBzZWxlY3QgZGlmZmVyZW50IHBpZWNlcyBvZiBjb2RlIGZvciBkaWZmZXJlbnQK
KyMgICBwbGF0Zm9ybXMuCisjCisjIC0gQXJndW1lbnRzIHRvIG1hY3JvcyBmb2xsb3cgbGV4aWNh
bCBzY29waW5nIHJhdGhlciB0aGFuIGR5bmFtaWMgc2NvcGluZy4KKyMgICBDb25zdCdzIGFsc28g
Zm9sbG93IGxleGljYWwgc2NvcGluZyBhbmQgbWF5IG92ZXJyaWRlIChoaWRlKSBhcmd1bWVudHMK
KyMgICBvciBvdGhlciBjb25zdHMuIEFsbCB2YXJpYWJsZXMgKGFyZ3VtZW50cyBhbmQgY29uc3Rh
bnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBvcGVyYW5kcy4gQWRkaXRpb25hbGx5LCBhcmd1bWVu
dHMgKGJ1dCBub3QgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBtYWNyb3MuCisKKwor
IyBUaGVzZSBkZWNsYXJhdGlvbnMgbXVzdCBtYXRjaCBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUu
aC4KK2NvbnN0IENhbGxGcmFtZUhlYWRlclNpemUgPSA0OAorY29uc3QgQXJndW1lbnRDb3VudCA9
IC00OAorY29uc3QgQ2FsbGVyRnJhbWUgPSAtNDAKK2NvbnN0IENhbGxlZSA9IC0zMgorY29uc3Qg
U2NvcGVDaGFpbiA9IC0yNAorY29uc3QgUmV0dXJuUEMgPSAtMTYKK2NvbnN0IENvZGVCbG9jayA9
IC04CisKKyMgRGVjbGFyZSBzb21lIGFsaWFzZXMgZm9yIHRoZSByZWdpc3RlcnMgd2Ugd2lsbCB1
c2UuCitjb25zdCBQQyA9IHQ0CisKKyMgT2Zmc2V0cyBuZWVkZWQgZm9yIHJlYXNvbmluZyBhYm91
dCB2YWx1ZSByZXByZXNlbnRhdGlvbi4KK2lmIEJJR19FTkRJQU4KKyAgICBjb25zdCBUYWdPZmZz
ZXQgPSAwCisgICAgY29uc3QgUGF5bG9hZE9mZnNldCA9IDQKK2Vsc2UKKyAgICBjb25zdCBUYWdP
ZmZzZXQgPSA0CisgICAgY29uc3QgUGF5bG9hZE9mZnNldCA9IDAKK2VuZAorCisjIFZhbHVlIHJl
cHJlc2VudGF0aW9uIGNvbnN0YW50cy4KK2NvbnN0IEludDMyVGFnID0gLTEKK2NvbnN0IEJvb2xl
YW5UYWcgPSAtMgorY29uc3QgTnVsbFRhZyA9IC0zCitjb25zdCBVbmRlZmluZWRUYWcgPSAtNAor
Y29uc3QgQ2VsbFRhZyA9IC01Citjb25zdCBFbXB0eVZhbHVlVGFnID0gLTYKK2NvbnN0IERlbGV0
ZWRWYWx1ZVRhZyA9IC03Citjb25zdCBMb3dlc3RUYWcgPSBEZWxldGVkVmFsdWVUYWcKKworIyBU
eXBlIGNvbnN0YW50cy4KK2NvbnN0IFN0cmluZ1R5cGUgPSA1Citjb25zdCBPYmplY3RUeXBlID0g
MTAKKworIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KK2NvbnN0IE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQgPSAxCitjb25zdCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPSAyCitjb25zdCBJbXBsZW1lbnRz
RGVmYXVsdEhhc0luc3RhbmNlID0gOAorCisjIEhlYXAgYWxsb2NhdGlvbiBjb25zdGFudHMuCitj
b25zdCBKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXggPSAxCisKKyMgQnl0ZWNvZGUgb3BlcmFu
ZCBjb25zdGFudHMuCitjb25zdCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAw
MDAKKworIyBDb2RlIHR5cGUgY29uc3RhbnRzLgorY29uc3QgR2xvYmFsQ29kZSA9IDAKK2NvbnN0
IEV2YWxDb2RlID0gMQorY29uc3QgRnVuY3Rpb25Db2RlID0gMgorCisjIFRoZSBpbnRlcnByZXRl
ciBzdGVhbHMgdGhlIHRhZyB3b3JkIG9mIHRoZSBhcmd1bWVudCBjb3VudC4KK2NvbnN0IExMSW50
UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0CisKKyMgVGhpcyBtdXN0IG1hdGNo
IHd0Zi9WZWN0b3IuaC4KK2NvbnN0IFZlY3RvclNpemVPZmZzZXQgPSAwCitjb25zdCBWZWN0b3JC
dWZmZXJPZmZzZXQgPSA0CisKKyMgU3RyaW5nIGZsYWdzLgorY29uc3QgSGFzaEZsYWdzOEJpdEJ1
ZmZlciA9IDY0CisKKyMgVXRpbGl0aWVzCittYWNybyBjcmFzaCgpCisgICAgc3RvcmVpIDAsIDB4
YmJhZGJlZWZbXQorICAgIG1vdmUgMCwgdDAKKyAgICBjYWxsIHQwCitlbmQKKworbWFjcm8gYXNz
ZXJ0KGFzc2VydGlvbikKKyAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBhc3NlcnRpb24o
Lm9rKQorICAgICAgICBjcmFzaCgpCisgICAgLm9rOgorICAgIGVuZAorZW5kCisKK21hY3JvIHBy
ZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChkZXN0aW5hdGlvblJlZ2lzdGVyKQorICAgIGlm
IEFSTXY3CisgICAgICAgIG1vdmUgbHIsIGRlc3RpbmF0aW9uUmVnaXN0ZXIKKyAgICBlbHNpZiBY
ODYKKyAgICAgICAgcG9wIGRlc3RpbmF0aW9uUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVy
cm9yCisgICAgZW5kCitlbmQKKworbWFjcm8gcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1
cm4oc291cmNlUmVnaXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBzb3VyY2VSZWdp
c3RlciwgbHIKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcHVzaCBzb3VyY2VSZWdpc3RlcgorICAg
IGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyBkaXNwYXRjaChhZHZh
bmNlKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNy
byBkaXNwYXRjaEJyYW5jaChwY09mZnNldCkKKyAgICBsb2FkaSBwY09mZnNldCwgdDAKKyAgICBs
c2hpZnRpIDIsIHQwCisgICAgYWRkcCB0MCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3Jv
IGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0
W2Nmcl0sIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBjQ2FsbDIoZnVuY3Rpb24sIGFy
ZzEsIGFyZzIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBt
b3ZlIGFyZzIsIHQxCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAorICAgICAg
ICBwb2tlIGFyZzIsIDEKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2Fs
bCBmdW5jdGlvbgorZW5kCisKK21hY3JvIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGNDYWxsMiho
ZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAor
CittYWNybyB0cmFjZUV4ZWN1dGlvbigpCisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcKKyAgICAg
ICAgY2FsbEhlbHBlcihfbGxpbnRfdHJhY2UpCisgICAgZW5kCitlbmQKKworIyBDYWxsIGEgaGVs
cGVyIGZvciBjYWxsIG9wY29kZXMuCittYWNybyBjYWxsQ2FsbEhlbHBlcihhZHZhbmNlLCBoZWxw
ZXIsIGFjdGlvbikKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQywgdDAKKyAgICBzdG9yZXAgdDAs
IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIGNDYWxsMihoZWxwZXIsIGNmciwg
UEMpCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYWN0aW9uKHQwKQorZW5kCisKK21hY3JvIHNsb3dQ
YXRoRm9yQ2FsbChhZHZhbmNlLCBoZWxwZXIpCisgICAgY2FsbENhbGxIZWxwZXIoCisgICAgICAg
IGFkdmFuY2UsCisgICAgICAgIGhlbHBlciwKKyAgICAgICAgbWFjcm8gKGNhbGxlZSkKKyAgICAg
ICAgICAgIGNhbGwgY2FsbGVlCisgICAgICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAg
ICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklUKGluY3JlbWVudCwgYWN0aW9u
KQorICAgIGlmIEpJVF9FTkFCTEVECisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAor
ICAgICAgICBiYWRkaXMgaW5jcmVtZW50LCBDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRl
clt0MF0sIC5jb250aW51ZQorICAgICAgICBhY3Rpb24oKQorICAgIC5jb250aW51ZToKKyAgICBl
bmQKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgY2hlY2tTd2l0
Y2hUb0pJVCgKKyAgICAgICAgMSwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAgIHN0b3Jl
aSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgICAgICAgICBjQ2FsbDIo
X2xsaW50X2xvb3Bfb3NyLCBjZnIsIFBDKQorICAgICAgICAgICAgbW92ZSB0MSwgY2ZyCisgICAg
ICAgICAgICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAgICAgICAgam1wIHQwCisgICAgICAgIC5y
ZWNvdmVyOgorICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJd
LCBQQworICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxv
Z3VlKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxMCwKKyAgICAgICAgbWFjcm8g
KCkKKyAgICAgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlcGxhY2UpCisgICAgICAgIGVuZCkK
K2VuZAorCittYWNybyBhc3NlcnROb3RDb25zdGFudChpbmRleCkKKyAgICBhc3NlcnQobWFjcm8g
KG9rKSBiaWIgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBvayBlbmQpCitlbmQK
KworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMu
IEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShp
bmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpYWVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0
YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAg
am1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJP
ZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVy
ZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsb2FkcCBUYWdPZmZzZXRbcGF5
bG9hZCwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGlu
ZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBtYXkg
YmUgdGhlIHNhbWUgcmVnaXN0ZXIuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhp
bmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpYWVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0
YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAg
am1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhZworICAg
IGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNl
dFt0YWddLCB0YWcKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGlu
ZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAg
IyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsc2hpZnRpIDMsIGluZGV4CisgICAgYWRkcCBpbmRl
eCwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFt0YWddLCBwYXlsb2FkCisgICAgbG9hZHAg
VGFnT2Zmc2V0W3RhZ10sIHRhZworLmRvbmU6CitlbmQKKworbWFjcm8gbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBwYXlsb2FkLCBzbG93KQorICAgIGJp
YWVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgYmlu
ZXEgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBleHBlY3RlZFRhZywgc2xvdworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5j
b25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2Fk
XSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5k
ZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAj
IHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGJpbmVxIFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwg
OF0sIGV4cGVjdGVkVGFnLCBzbG93CisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBp
bmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKK21hY3JvIHdyaXRlQmFycmllcih0YWcs
IHBheWxvYWQpCisgICAgIyBOb3RoaW5nIHRvIGRvIHNpbmNlIHdlIGRvbid0IGhhdmUgYSBnZW5l
cmF0aW9uYWwgb3IgaW5jcmVtZW50YWwgY29sbGVjdG9yLgorZW5kCisKKworIyBJbmRpY2F0ZSB0
aGUgYmVnaW5uaW5nIG9mIExMSW50LgorX2xsaW50X2JlZ2luOgorICAgIGNyYXNoKCkKKworCisj
IEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVycHJldGVyCisKK21hY3JvIGZ1bmN0aW9uRm9yQ2Fs
bENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwg
dGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0
UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
bV9jb2RlQmxvY2tGb3JDYWxsW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAor
CittYWNybyBmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3Rl
cikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1
bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAg
IGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0
UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJs
b2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YXJn
ZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJl
Z2lzdGVyKQorICAgIHN0b3JlcCBzb3VyY2VSZWdpc3RlciwgQ29kZUJsb2NrW2Nmcl0KK2VuZAor
CittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAgICAj
IE5vdGhpbmcgdG8gZG8hCitlbmQKKworIyBEbyB0aGUgYmFyZSBtaW5pbXVtIHJlcXVpcmVkIHRv
IGV4ZWN1dGUgY29kZS4gU2V0cyB1cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2RlQmxvY2sqCisjIGlu
IHQxLiBNYXkgYWxzbyB0cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KK21hY3JvIHByb2xvZ3Vl
KGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JIZWxwZXIpCisgICAgcHJlc2Vy
dmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIAorICAgICMgU2V0IHVwIHRoZSBjYWxs
IGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgorICAgIHN0b3JlcCB0MiwgUmV0dXJu
UENbY2ZyXQorICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICBpZiBKSVRfRU5BQkxFRAorICAg
ICAgICBiYWRkaXMgNSwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJbdDFdLCAuY29u
dGludWUKKyAgICAgICAgY0NhbGwyKG9zckhlbHBlciwgY2ZyLCBQQykKKyAgICAgICAgbW92ZSB0
MSwgY2ZyCisgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgIGxvYWRwIFJldHVyblBD
W2Nmcl0sIHQyCisgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQor
ICAgICAgICBqbXAgdDAKKyAgICAucmVjb3ZlcjoKKyAgICAgICAgY29kZUJsb2NrR2V0dGVyKHQx
KQorICAgIC5jb250aW51ZToKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tTZXR0ZXIodDEpCisgICAg
CisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlv
bnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0
aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCitlbmQKKworIyBFeHBlY3RzIHRoYXQg
Q29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGlu
ZC4KKyMgTXVzdCBjYWxsIGRpc3BhdGNoKDApIGFmdGVyIGNhbGxpbmcgdGhpcy4KK21hY3JvIGZ1
bmN0aW9uSW5pdGlhbGl6YXRpb24oKQorICAgICMgUHJvZmlsZSB0aGUgYXJndW1lbnRzLiBVbmZv
cnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIGNob2ljZSBidXQgdG8gZG8gdGhpcy4KKyAgICBsb2FkaSBD
b2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIHQwCisgICAgYnRpeiB0MCwgLmFyZ3VtZW50
UHJvZmlsZURvbmUKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2Fy
Z3VtZW50VmFsdWVQcm9maWxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MV0sIHQzCisuYXJndW1l
bnRQcm9maWxlTG9vcDoKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MF0sIHQyCisgICAgc3Rv
cmVpIHQyLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNldFt0M10KKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDBdLCB0MgorICAgIHN0b3JlaSB0MiwgVmFsdWVQcm9maWxl
OjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGFkZHAgc2l6ZW9mIFZhbHVlUHJv
ZmlsZSwgdDMKKyAgICBic3ViaW56IDgsIHQwLCAuYXJndW1lbnRQcm9maWxlTG9vcAorLmFyZ3Vt
ZW50UHJvZmlsZURvbmU6CisgICAgCisgICAgIyBDaGVjayBzdGFjayBoZWlnaHQuCisgICAgbG9h
ZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lzdGVyc1t0MV0sIHQwCisgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MgorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6aW50
ZXJwcmV0ZXJbdDJdLCB0MiAgICMgRklYTUU6IENhbiBnZXQgdG8gdGhlIFJlZ2lzdGVyRmlsZSBm
cm9tIHRoZSBKSVRTdGFja0ZyYW1lCisgICAgbHNoaWZ0aSAzLCB0MAorICAgIGFkZHAgdDAsIGNm
ciwgdDAKKyAgICBicGFlcSBJbnRlcnByZXRlcjo6bV9yZWdpc3RlckZpbGUgKyBSZWdpc3RlckZp
bGU6Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCisKKyAgICAjIFN0YWNrIGhlaWdodCBj
aGVjayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBoZWxwZXIuCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfcmVnaXN0ZXJfZmlsZV9jaGVjaykKKy5zdGFja0hlaWdodE9LOgorZW5kCisKKyMgRXhwZWN0
cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZl
cyBiZWhpbmQuCittYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBoZWxwZXIpCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwgdDAKKyAgICBiaWVx
IHQwLCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJlbAorICAgIGNDYWxs
MihoZWxwZXIsIGNmciwgUEMpICAgIyBUaGlzIGhlbHBlciBoYXMgYSBzaW1wbGUgcHJvdG9jb2w6
IHQwID0gMCA9PiBubyBlcnJvciwgdDAgIT0gMCA9PiBlcnJvcgorICAgIG1vdmUgdDEsIGNmcgor
ICAgIGJ0aXogdDAsIC5jb250aW51ZQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERh
dGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFd
LCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQor
LmNvbnRpbnVlOgorICAgICMgUmVsb2FkIENvZGVCbG9jayBhbmQgUEMsIHNpbmNlIHRoZSBoZWxw
ZXIgY2xvYmJlcmVkIGl0LgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRw
IENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6
SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBD
CisgICAgam1wIGRvbmVMYWJlbAorZW5kCisKK19sbGludF9wcm9ncmFtX3Byb2xvZ3VlOgorICAg
IHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9j
a1NldHRlciwgX2xsaW50X2VudHJ5X29zcikKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9l
dmFsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBu
b3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcikKKyAgICBkaXNwYXRj
aCgwKQorCisKK19sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1
ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVy
LCBfbGxpbnRfZW50cnlfb3NyKQorLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luOgorICAgIGZ1bmN0aW9u
SW5pdGlhbGl6YXRpb24oKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3Ry
dWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5
X29zcikKKy5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6
YXRpb24oKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0
ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2FyaXR5Q2hlY2sp
CisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X2hl
bHBlcl9jYWxsX2FyaXR5Q2hlY2spCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tH
ZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2FyaXR5Q2hl
Y2spCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBf
bGxpbnRfaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQorCisjIEluc3RydWN0aW9uIGltcGxl
bWVudGF0aW9ucworCitfbGxpbnRfb3BfZW50ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1WYXJz
LCB0MgorICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZQorICAgIG1vdmUgVW5kZWZpbmVkVGFnLCB0
MAorICAgIG1vdmUgMCwgdDEKKy5vcEVudGVyTG9vcDoKKyAgICBzdWJpIDEsIHQyCisgICAgc3Rv
cmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MiwgOF0KKyAgICBidGlueiB0MiwgLm9wRW50ZXJMb29wCisub3BFbnRlckRvbmU6
CisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pCisub3BDcmVhdGVB
Y3RpdmF0aW9uRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbml0X2xhenlf
cmVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9y
ZWkgRW1wdHlWYWx1ZVRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIDAsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9j
cmVhdGVfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENy
ZWF0ZUFyZ3VtZW50c0RvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2Fy
Z3VtZW50cykKKy5vcENyZWF0ZUFyZ3VtZW50c0RvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitt
YWNybyBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kZXgsIGNsYXNzSW5mb09mZnNl
dCwgb2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2UsIHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoMSwg
c2NyYXRjaDIsIHNsb3dDYXNlKQorICAgIGNvbnN0IG9mZnNldE9mTXlTaXplQ2xhc3MgPSBKU0ds
b2JhbERhdGE6OmhlYXAgKyBIZWFwOjptX29iamVjdFNwYWNlICsgQWxsb2NhdGlvblNwYWNlOjpt
X21hcmtlZFNwYWNlICsgTWFya2VkU3BhY2U6Om1fcHJlY2lzZVNpemVDbGFzc2VzICsgc2l6ZUNs
YXNzSW5kZXggKiBzaXplb2YgTWFya2VkU3BhY2U6OlNpemVDbGFzcworICAgIAorICAgICMgRklY
TUU6IHdlIGNhbiBnZXQgdGhlIGdsb2JhbCBkYXRhIGluIG9uZSBsb2FkIGZyb20gdGhlIHN0YWNr
LgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoMQorICAgIGxvYWRwIENvZGVCbG9j
azo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAKKyAgICAjIEdldCB0aGUg
b2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4gICAgCisgICAgbG9hZHAgb2Zmc2V0T2ZNeVNpemVD
bGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdLCBy
ZXN1bHQKKyAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UKKyAgICAKKyAgICAjIFJlbW92ZSB0aGUg
b2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAgICBsb2FkcCBbcmVzdWx0XSwgc2NyYXRjaDIK
KyAgICBzdG9yZXAgc2NyYXRjaDEsIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6
U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXQorCisgICAgIyBJbml0aWFsaXplIHRo
ZSBvYmplY3QuCisgICAgbG9hZHAgY2xhc3NJbmZvT2Zmc2V0W3NjcmF0Y2gxXSwgc2NyYXRjaDIK
KyAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCisgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlND
ZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCisgICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX2luaGVy
aXRvcklEW3Jlc3VsdF0KKyAgICBhZGRwIHNpemVvZiBKU09iamVjdCwgcmVzdWx0LCBzY3JhdGNo
MQorICAgIHN0b3JlcCBzY3JhdGNoMSwgb2Zmc2V0T2ZQcm9wZXJ0eVN0b3JhZ2VbcmVzdWx0XQor
ZW5kCisKK19sbGludF9vcF9jcmVhdGVfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYmluZXEgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQxCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjpt
X3R5cGVbdDFdLCBPYmplY3RUeXBlLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGxvYWRwIEpTT2Jq
ZWN0OjptX2luaGVyaXRvcklEW3QwXSwgdDIKKyAgICBidHB6IHQyLCAub3BDcmVhdGVUaGlzU2xv
dworICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgs
IEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywgSlNGaW5hbE9iamVjdDo6bV9w
cm9wZXJ0eVN0b3JhZ2UsIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBs
b2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhd
CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2go
MykKKworLm9wQ3JlYXRlVGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Ny
ZWF0ZV90aGlzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9jYWxsZWU6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxv
YWRPZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQw
CisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBP
YmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252
ZXJ0VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykK
KyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9l
bXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpT
RmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xh
c3NJbmZvLCBKU0ZpbmFsT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZSwgdDEsIHQwLCB0MiwgdDMs
IC5vcE5ld09iamVjdFNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxU
YWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcE5ld09iamVjdFNsb3c6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19vYmplY3QpCisgICAgZGlzcGF0Y2goMikKKworCitf
bGxpbnRfb3BfbmV3X2FycmF5OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfbmV3X2FycmF5KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X25ld19hcnJheV9idWZmZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX25ld19yZWdleHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9uZXdfcmVnZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X21vdjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9h
ZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAg
IHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bfbm90Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDMKKyAg
ICBiaW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90U2xvdworICAgIHhvcmkgMSwgdDMKKyAgICBz
dG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5vdFNsb3c6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAg
ICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0
MiwgdDMsIC5vcEVxU2xvdworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcEVxU2xvdworICAgIGJp
YiB0MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaWVx
IHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2go
NCkKKworLm9wRXFTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9lcSkKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RD
b25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywg
Lm9wRXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQx
CisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0s
IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0
ZQorLm9wRXFOdWxsSW1tZWRpYXRlOgorICAgIGNpZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2ll
cSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIG9yaSB0MiwgdDEKKy5vcEVxTnVsbE5vdEltbWVk
aWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfbmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10s
IHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwg
dDMsIHQxKQorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAor
ICAgIGJpbmVxIHQyLCB0MywgLm9wTmVxU2xvdworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcE5l
cVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wTmVxU2xvdworICAgIGxvYWRpIDRbUENd
LCB0MgorICAgIGNpbmVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zm
c2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgZGlzcGF0Y2goNCkKKworLm9wTmVxU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfbmVxKQorICAgIGRpc3BhdGNoKDQpCisgICAgCisKK19sbGludF9vcF9uZXFfbnVsbDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQ
Q10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisg
ICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcE5lcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsg
VHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQorICAgIGpt
cCAub3BOZXFOdWxsTm90SW1tZWRpYXRlCisub3BOZXFOdWxsSW1tZWRpYXRlOgorICAgIGNpbmVx
IHQxLCBOdWxsVGFnLCB0MgorICAgIGNpbmVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgYW5k
aSB0MiwgdDEKKy5vcE5lcU51bGxOb3RJbW1lZGlhdGU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcs
IFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gc3RyaWN0RXEoZXF1YWxpdHlPcGVy
YXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQw
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGFzc2VydE5vdENv
bnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cK
KyAgICBiaWIgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5v
dFN0cmluZworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAg
YmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5n
VHlwZSwgLnNsb3cKKy5ub3RTdHJpbmc6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxp
dHlPcGVyYXRpb24odDAsIHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0
W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgZGlzcGF0Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlz
cGF0Y2goNCkKK2VuZAorCitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJp
Z2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVscGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9u
c3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0
LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hl
bHBlcl9uc3RyaWN0ZXEpCisKKworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX2xlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2xlc3NlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9n
cmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfZ3JlYXRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVy
ZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQxCisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3Rv
cmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9w
UHJlSW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBk
aXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIElu
dDMyVGFnLCAub3BQcmVEZWNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDEKKyAgICBic3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX3Bvc3RfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQ
b3N0SW5jRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAg
bW92ZSB0MiwgdDMKKyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVp
IEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0KKy5vcFBvc3RJbmNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9wb3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
OFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9z
dERlY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1v
dmUgdDIsIHQzCisgICAgYnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJ
bnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
Cisub3BQb3N0RGVjRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfdG9fanNudW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGFzc2VydE5vdENvbnN0YW50KHQw
KQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MworICAgIGJpZXEgdDIsIEludDMyVGFnLCAub3BUb0pzbnVt
YmVySXNJbnQKKyAgICBiaWFlcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wVG9Kc251bWJlclNsb3cK
Ky5vcFRvSnNudW1iZXJJc0ludDoKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4
XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNo
KDMpCisKKy5vcFRvSnNudW1iZXJTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90
b19qc251bWJlcikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZWdhdGU6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0
MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGJp
bmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3ZmZm
ZmZmZiwgLm9wTmVnYXRlU2xvdworICAgIG5lZ2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRh
Z09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQz
LCA4XQorICAgIGRpc3BhdGNoKDMpCisub3BOZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQxLCBM
b3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKKyAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAgc3Rv
cmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOZWdhdGVTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZWdhdGUpCisgICAgZGlzcGF0Y2goMykKKworCittYWNy
byBiaW5hcnlPcEN1c3RvbVN0b3JlKGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3Bl
cmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0
MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBhc3NlcnROb3RD
b25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcs
IC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBsb2Fk
aSA0W1BDXSwgdDIKKyAgICBpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUodDMsIHQxLCB0MCwgLnNs
b3csIHQyKQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVy
YW5kIGlzIGRlZmluaXRlbHkgbm90IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGNvdWxkIGJl
IGFueXRoaW5nLgorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MywgTG93
ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xv
dworICAgIGNpMmQgdDEsIGZ0MQorICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRP
cDJEb3VibGU6CisgICAgZmlpMmQgdDEsIHQzLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBs
b2FkaSA0W1BDXSwgdDEKKyAgICBmaWkyZCB0MCwgdDIsIGZ0MAorICAgIGRvdWJsZU9wZXJhdGlv
bihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0
KQorCisub3AyTm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IGFuIGlu
dCwgdGhlIHNlY29uZCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90LgorICAgIGxvYWRpIDRbUENd
LCB0MgorICAgIGJpYSB0MywgTG93ZXN0VGFnLCAuc2xvdworICAgIGNpMmQgdDAsIGZ0MAorICAg
IGZpaTJkIHQxLCB0MywgZnQxCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0
b3JlZCBmdDAsIFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNh
bGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworbWFjcm8gYmluYXJ5T3Ao
aW50ZWdlck9wZXJhdGlvbiwgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCisgICAgYmluYXJ5T3BD
dXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywg
aW5kZXgpCisgICAgICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KQor
ICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAg
ICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAg
ICAgICBlbmQsCisgICAgICAgIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorZW5kCisKK19sbGlu
dF9vcF9hZGQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgYWRkZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfYWRkKQorCisKK19sbGludF9vcF9tdWw6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJt
dWxpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkg
bXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbXVsKQorCisKK19s
bGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQs
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfc3ViKQorCisKK19sbGludF9vcF9kaXY6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRh
ZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAK
KyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQorICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQor
ICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdEludAorICAgICAgICAgICAgc3RvcmVp
IGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSBy
aWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgam1wIC5kb25l
CisgICAgICAgIC5ub3RJbnQ6CisgICAgICAgICAgICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRleCwg
OF0KKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9kaXYpCisK
KworX2xsaW50X29wX21vZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX21vZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGJpdE9wKG9wZXJh
dGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgYXNzZXJ0Tm90Q29u
c3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAu
c2xvdworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIK
KyAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xvdykKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtj
ZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAg
IGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3Bh
dGNoKDQpCitlbmQKKworX2xsaW50X29wX2xzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0
LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbHNoaWZ0KQorCisKK19sbGludF9v
cF9yc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX3JzaGlmdCkKKworCitfbGxpbnRfb3BfdXJzaGlmdDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykK
KyAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0CisgICAgICAgICAgICBiaWx0IHJpZ2h0
LCAwLCBzbG93CisgICAgICAgIGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl91cnNoaWZ0KQor
CisKK19sbGludF9vcF9iaXRhbmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5kLAor
ICAgICAgICBfbGxpbnRfaGVscGVyX2JpdGFuZCkKKworCitfbGxpbnRfb3BfYml0eG9yOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCBzbG93KSB4b3JpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXR4
b3IpCisKKworX2xsaW50X29wX2JpdG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRP
cCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdG9yKQorCisKK19sbGludF9vcF9iaXRub3Q6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENd
LCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQxKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MworICAg
IGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wQml0bm90U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9y
ZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2JpdG5vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VT
bG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKKyAgICBkaXNwYXRjaCgy
KQorCisKK19sbGludF9vcF9pbnN0YW5jZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAj
IENoZWNrIHRoYXQgYmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJl
aGF2aW9yLgorICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuCisgICAgbG9h
ZGkgMTJbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFn
c1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIC5vcEluc3RhbmNlb2ZTbG93Cisg
ICAgCisgICAgIyBBY3R1YWxseSBkbyB0aGUgd29yay4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29u
c3RhbnQodDApCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDEpCisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BJbnN0YW5jZW9mU2xvdworICAgIGJpbmVxIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XSwgQ2VsbFRhZywgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDFdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90
eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIAorICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0g
cHJvdG90eXBlLCB0MiA9IHZhbHVlCisgICAgbW92ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxvb3A6
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCisgICAgbG9hZGkgU3RydWN0
dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXQsIHQyCisgICAgYnBlcSB0MiwgdDEsIC5v
cEluc3RhbmNlb2ZEb25lCisgICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZMb29wCisKKyAgICBt
b3ZlIDAsIHQwCisub3BJbnN0YW5jZW9mRG9uZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFn
T2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMs
IDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wSW5zdGFuY2VvZlNsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2luc3RhbmNlb2YpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRf
b3BfdHlwZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfdHlwZW9mKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3VuZGVmaW5l
ZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lz
X3VuZGVmaW5lZCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19ib29sZWFuOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfYm9v
bGVhbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19udW1iZXI6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19udW1iZXIpCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfc3RyaW5nKQorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX2lzX29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX29iamVjdCkKKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9pc19mdW5jdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Z1bmN0aW9uKQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX2luOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfaW4pCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUp
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9za2lwOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9za2lwKQor
ICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gcmVzb2x2ZUdsb2JhbChzbG93KQorICAgICMgT3Bl
cmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUg
bG9hZC4KKyAgICAjIDhbUENdICAgUHJvcGVydHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29k
ZSBibG9jay4KKyAgICAjIDEyW1BDXSAgU3RydWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRv
IDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFs
IG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVj
dFt0MF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnBu
ZXEgdDAsIDEyW1BDXSwgc2xvdworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09i
amVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwg
dDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAg
IHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorZW5kCisKK19sbGludF9vcF9y
ZXNvbHZlX2dsb2JhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgcmVzb2x2ZUdsb2JhbCgu
b3BSZXNvbHZlR2xvYmFsU2xvdykKKyAgICBkaXNwYXRjaCg1KQorCisub3BSZXNvbHZlR2xvYmFs
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCisgICAg
ZGlzcGF0Y2goNSkKKworCisjIEdpdmVzIHlvdSB0aGUgc2NvcGUgaW4gdDAsIHdoaWxlIGFsbG93
aW5nIHlvdSB0byBvcHRpb25hbGx5IHBlcmZvcm0gYWRkaXRpb25hbCBjaGVja3Mgb24gdGhlCisj
IHNjb3BlcyBhcyB0aGV5IGFyZSB0cmF2ZXJzZWQuIHNjb3BlQ2hlY2soKSBpcyBjYWxsZWQgd2l0
aCB0d28gYXJndW1lbnRzOiB0aGUgcmVnaXN0ZXIKKyMgaG9sZGluZyB0aGUgc2NvcGUsIGFuZCBh
IHJlZ2lzdGVyIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHNjcmF0Y2guIE5vdGUgdGhhdCB0aGlzIGRv
ZXMgbm90CisjIHVzZSB0Mywgc28geW91IGNhbiBob2xkIHN0dWZmIGluIHQzIGlmIG5lZWQgYmUu
CittYWNybyBnZXRTY29wZShkZUJydWlqaW5JbmRleE9wZXJhbmQsIHNjb3BlQ2hlY2spCisgICAg
bG9hZHAgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDAKKyAgICBsb2FkaSBkZUJy
dWlqaW5JbmRleE9wZXJhbmQsIHQyCisgICAgCisgICAgYnRpeiB0MiwgLmRvbmUKKyAgICAKKyAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBiaW5lcSBDb2RlQmxvY2s6Om1fY29kZVR5
cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5sb29wCisgICAgYnRieiBDb2RlQmxvY2s6Om1fbmVlZHNG
dWxsU2NvcGVDaGFpblt0MV0sIC5sb29wCisgICAgCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX2Fj
dGl2YXRpb25SZWdpc3Rlclt0MV0sIHQxCisKKyAgICAjIE5lZWQgdG8gY29uZGl0aW9uYWxseSBz
a2lwIG92ZXIgb25lIHNjb3BlLgorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0
eVZhbHVlVGFnLCAubm9BY3RpdmF0aW9uCisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9h
ZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MAorLm5vQWN0aXZhdGlvbjoKKyAgICBzdWJp
IDEsIHQyCisgICAgCisgICAgYnRpeiB0MiwgLmRvbmUKKy5sb29wOgorICAgIHNjb3BlQ2hlY2so
dDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKyAgICBzdWJp
IDEsIHQyCisgICAgYnRpbnogdDIsIC5sb29wCisKKy5kb25lOgorZW5kCisKK19sbGludF9vcF9y
ZXNvbHZlX2dsb2JhbF9keW5hbWljOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBK
SVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6
OmFjdGl2YXRpb25TdHJ1Y3R1cmVbdDNdLCB0MworICAgIGdldFNjb3BlKAorICAgICAgICAyMFtQ
Q10sCisgICAgICAgIG1hY3JvIChzY29wZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGxvYWRwIFNj
b3BlQ2hhaW5Ob2RlOjpvYmplY3Rbc2NvcGVdLCBzY3JhdGNoCisgICAgICAgICAgICBicG5lcSBK
U0NlbGw6Om1fc3RydWN0dXJlW3NjcmF0Y2hdLCB0MywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNT
dXBlclNsb3cKKyAgICAgICAgZW5kKQorICAgIHJlc29sdmVHbG9iYWwoLm9wUmVzb2x2ZUdsb2Jh
bER5bmFtaWNTbG93KQorICAgIGRpc3BhdGNoKDYpCisKKy5vcFJlc29sdmVHbG9iYWxEeW5hbWlj
U3VwZXJTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlKQorICAgIGRp
c3BhdGNoKDYpCisKKy5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCisgICAgZGlzcGF0Y2goNikKKworCitfbGxp
bnRfb3BfZ2V0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgT3BlcmFu
ZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9h
ZC4KKyAgICAjIDhbUENdICAgSW5kZXggb2YgcmVnaXN0ZXIgaW4gdGhlIHNjb3BlLgorICAgICMg
MTJbUENdICBEZSBCcnVpamluIGluZGV4LgorICAgIGdldFNjb3BlKDEyW1BDXSwgbWFjcm8gKHNj
b3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgOFtQQ10s
IHQyCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAg
SlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNl
dFt0MCwgdDIsIDhdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XSwgdDAK
KyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1
dF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBnZXRTY29wZSg4W1BDXSwg
bWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxv
YWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQzLCB0MikKKyAg
ICB3cml0ZUJhcnJpZXIodDMsIHQyKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3Rb
dDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAK
KyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFt0MCwgdDIsIDhdCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRf
Z2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisg
ICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxP
YmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4
XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQxCisgICAgc3RvcmVp
IHQyLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9wdXRfZ2xvYmFsX3Zh
cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkg
OFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1f
cmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MywgOF0sIHQyCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKKyAgICB3cml0ZUJhcnJpZXIo
dDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkg
dDMsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX3Jlc29sdmVfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Jlc29sdmVfYmFzZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX3Ro
aXMpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hp
bmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisgICAgIyBvcGNvZGUuIFdlIGRv
LCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxz
LCBzaW5jZQorICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5
IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKKyAgICAjIHRvIHRha2UgZmFzdCBwYXRo
IG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3
aGF0CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgorICAgIGxvYWRpIDhb
UENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BD
XSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAg
IGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBs
b2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBk
aXNwYXRjaCg4KQorCisub3BHZXRCeUlkU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfZ2V0X2J5X2lkKQorICAgIGRpc3BhdGNoKDgpCisKKworX2xsaW50X29wX2dldF9hcmd1bWVu
dHNfbGVuZ3RoOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5
VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50c0xlbmd0aFNsb3cKKyAgICBsb2FkaSBBcmd1bWVudENv
dW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MgorICAgIHN1YmkgMSwgdDIKKyAgICBzdG9yZWkg
SW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEFyZ3VtZW50c0xlbmd0
aFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3Ro
KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9pZDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJ
ZFNsb3cpCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2Fk
aSAxMltQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwg
dDMKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93
CisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQyLCA4XSwg
dDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MgorICAgIHdyaXRlQmFy
cmllcih0MCwgdDIpCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbdDMsIHQxXQorICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFt0MywgdDFdCisgICAgZGlzcGF0Y2goOCkKKworLm9wUHV0QnlJ
ZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pZCkKKyAgICBkaXNw
YXRjaCg4KQorCisKK21hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BD
XSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAs
IC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
CisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9wUHV0
QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3By
b3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYWRkcCB0MSwgdDMKKyAgICBsb2FkaSBUYWdPZmZz
ZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwg
dDIKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQyKQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3Qz
XQorICAgIGxvYWRpIDI0W1BDXSwgdDEKKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNd
CisgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAgIGRpc3BhdGNoKDgp
CitlbmQKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBwdXRC
eUlkVHJhbnNpdGlvbihtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KSBlbmQpCisK
KworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICBwdXRCeUlkVHJh
bnNpdGlvbigKKyAgICAgICAgbWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykKKyAg
ICAgICAgICAgIGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUg
b2xkU3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KKyAgICAgICAgCisgICAgICAgICAg
ICBsb2FkcCAyOFtQQ10sIHNjcmF0Y2gKKyAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZUNoYWlu
OjptX3ZlY3RvciArIFZlY3RvckJ1ZmZlck9mZnNldFtzY3JhdGNoXSwgc2NyYXRjaAorICAgICAg
ICAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVy
ZV0sIE51bGxUYWcsIC5kb25lCisgICAgICAgIC5sb29wOgorICAgICAgICAgICAgbG9hZGkgU3Ry
dWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9D
ZWxsCisgICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9s
ZFN0cnVjdHVyZQorICAgICAgICAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIHNs
b3cKKyAgICAgICAgICAgIGFkZHAgNCwgc2NyYXRjaAorICAgICAgICAgICAgYmluZXEgU3RydWN0
dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAubG9v
cAorICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kKQorCisKK19sbGludF9vcF9kZWxfYnlfaWQ6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWxf
YnlfaWQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9hZGkg
OFtQQ10sIHQyCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxEYXRhW3QxXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0Miwg
Q2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6Ompz
QXJyYXlDbGFzc0luZm9bdDFdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBicG5lcSBbdDBdLCB0Miwg
Lm9wR2V0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QwXSwgdDMKKyAg
ICBiaWFlcSB0MSwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDBdLCAub3BHZXRCeVZhbFNsb3cK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsg
VGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3Rv
ciArIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKyAgICBiaWVxIHQyLCBFbXB0eVZhbHVl
VGFnLCAub3BHZXRCeVZhbFNsb3cKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4
XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNo
KDQpCisKKy5vcEdldEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0
X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRfYnlf
dmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
aSAxMltQQ10sIHQxCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVU
YWcsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDEsIEludDMyVGFnLCB0MiwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cpCisgICAgYWRk
aSAxLCB0MgorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQx
CisgICAgYmlhZXEgdDIsIHQxLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIG5lZ2kgdDIK
KyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQw
CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEKKyAgICBzdG9yZWkgdDAs
IFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEFyZ3VtZW50QnlWYWxTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQwLCBDZWxsVGFnLCB0MSwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMTZbUENdLCB0
MAorICAgIGJwbmVxIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAub3BHZXRCeVBuYW1l
U2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMjBbUENd
LCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAsIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBs
b2FkaSAyNFtQQ10sIHQwCisgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAorICAgIHN1YmkgMSwg
dDAKKyAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFibGVT
bG90c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVy
dHlTdG9yYWdlW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQwLCA4XSwgdDEKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg3KQorCisub3BHZXRCeVBuYW1l
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3BuYW1lKQorICAgIGRp
c3BhdGNoKDcpCisKKworX2xsaW50X29wX3B1dF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBJbnQzMlRhZywgdDIsIC5vcFB1
dEJ5VmFsU2xvdykKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fZ2xvYmFsRGF0YVt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0Fy
cmF5Q2xhc3NJbmZvW3QwXSwgdDAKKyAgICBicG5lcSBbdDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93
CisgICAgYmlhZXEgdDIsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QxXSwgLm9wUHV0QnlWYWxT
bG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QxXSwgdDAKKyAgICBiaWVxIEFycmF5
U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywg
Lm9wUHV0QnlWYWxFbXB0eQorLm9wUHV0QnlWYWxTdG9yZVJlc3VsdDoKKyAgICBsb2FkaSAxMltQ
Q10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDMpCisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nm
ciwgdDMsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCisg
ICAgd3JpdGVCYXJyaWVyKHQxLCB0MykKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV92
ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0b3JlaSB0MywgQXJyYXlTdG9yYWdl
OjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisK
Ky5vcFB1dEJ5VmFsRW1wdHk6CisgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVz
SW5WZWN0b3JbdDBdCisgICAgYmliIHQyLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXSwgLm9w
UHV0QnlWYWxTdG9yZVJlc3VsdAorICAgIGFkZGkgMSwgdDIsIHQxCisgICAgc3RvcmVpIHQxLCBB
cnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXQorICAgIGptcCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0
CisKKy5vcFB1dEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5
X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9kZWxfYnlfdmFsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X3ZhbCkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaW5kZXg6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaW5kZXgpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dldHRlcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9nZXR0ZXIpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9zZXR0ZXIpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfbG9vcDoKKyAgICBub3AKK19sbGludF9vcF9qbXA6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGRpc3BhdGNoQnJhbmNoKDRbUENdKQorCisKK19sbGludF9vcF9q
bXBfc2NvcGVzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfam1wX3Njb3BlcykKKyAgICBkaXNwYXRjaCgwKQorCisKK21hY3JvIGp1bXBUcnVlT3JG
YWxzZShjb25kaXRpb25PcCwgc2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaWIgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCBCb29sZWFuVGFnLCAuc2xvdworICAgIGNvbmRpdGlvbk9wKFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRh
cmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLnNsb3c6CisgICAgc3ViaSAzICog
NCwgUEMKKyAgICBjYWxsSGVscGVyKHNsb3cpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxp
bnRfb3BfbG9vcF9pZl90cnVlOgorICAgIG5vcAorX2xsaW50X29wX2p0cnVlOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwg
dGFyZ2V0KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9q
dHJ1ZSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKKyAgICBub3AKK19sbGludF9vcF9q
ZmFsc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAg
ICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfamZhbHNlKQorCisKK21hY3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwg
aW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxIYW5kbGVyKFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisu
dGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuaW1tZWRpYXRlOgorICAgIG9y
aSAxLCB0MQorICAgIGltbWVkaWF0ZUhhbmRsZXIodDEsIC50YXJnZXQpCisgICAgZGlzcGF0Y2go
MykKK2VuZAorCitfbGxpbnRfb3BfamVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0Ym56IHZhbHVlLCBN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUs
IHRhcmdldCkgYmllcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKyAgICAKKworX2xsaW50
X29wX2puZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAg
ICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRieiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpbmVxIHZh
bHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorCisKK19sbGludF9vcF9qbmVxX3B0cjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQx
CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJh
bmNoCisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZh
bGxUaHJvdWdoCisub3BKbmVxUHRyQnJhbmNoOgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkK
Ky5vcEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGNvbXBh
cmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUsIGhlbHBlcikKKyAgICBsb2FkaSA0W1BD
XSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQy
LCB0MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQyLCB0MykKKyAg
ICBiaW5lcSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcs
IC5vcDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5qdW1wVGFyZ2V0KQorICAg
IGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgYmlhIHQwLCBMb3dlc3RUYWcsIC5zbG93
CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0
MiwgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MywgZnQxCisgICAgam1wIC5vcDFOb3RJbnRS
ZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQorLm9wMU5v
dEludFJlYWR5OgorICAgIGZpaTJkIHQxLCB0MCwgZnQwCisgICAgZG91YmxlQ29tcGFyZShmdDAs
IGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMk5vdEludDoKKyAgICBj
aTJkIHQxLCBmdDAKKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBmaWkyZCB0Mywg
dDIsIGZ0MQorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRp
c3BhdGNoKDQpCisKKy5qdW1wVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKwor
LnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitf
bGxpbnRfb3BfbG9vcF9pZl9sZXNzOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfamxlc3MpCisKKworX2xsaW50X29wX2pubGVzczoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2pubGVzcykKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyOgor
ICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
b21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCBy
aWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJk
Z3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0
ZXIpCisKKworX2xsaW50X29wX2puZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0
LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJkbHRlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVy
X2puZ3JlYXRlcikKKworCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzZXE6CisgICAgbm9wCitfbGxp
bnRfb3Bfamxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0
IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcSBsZWZ0LCBy
aWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzc2VxKQorCisKK19s
bGludF9vcF9qbmxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0dW4gbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzZXEpCisKKwor
X2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcmVxOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVy
ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3Bf
am5ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5k
LAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdHVuIGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcmVxKQorCisKK19s
bGludF9vcF9sb29wX2hpbnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNo
VG9KSVRGb3JMb29wKCkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zd2l0Y2hfaW1t
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQwCisgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQxCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9pbW1lZGlhdGVTd2l0Y2hKdW1w
VGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyLCB0MywgNF0sIHQyCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcFN3
aXRjaEltbU5vdEludAorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAg
IGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zm
c2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaChTaW1w
bGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDIsIHQwLCA0
XSkKKworLm9wU3dpdGNoSW1tTm90SW50OgorICAgIGJpYiB0MSwgTG93ZXN0VGFnLCAub3BTd2l0
Y2hJbW1TbG93ICAjIEdvIHRvIHNsb3cgcGF0aCBpZiBpdCdzIGEgZG91YmxlLgorLm9wU3dpdGNo
SW1tRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5vcFN3aXRjaElt
bVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9pbW0pCisgICAgZGlz
cGF0Y2goMCkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAg
ICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0
MgorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6OlJhcmVEYXRhOjptX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJP
ZmZzZXRbdDIsIHQzLCA0XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNo
Q2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0MAorICAg
IGJpbmVxIFN0cmluZ0ltcGw6Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJv
dWdoCisgICAgbG9hZHAgU3RyaW5nSW1wbDo6bV9kYXRhOFt0MF0sIHQxCisgICAgYnRpbnogU3Ry
aW5nSW1wbDo6bV9oYXNoQW5kRmxhZ3NbdDBdLCBIYXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0
Y2hDaGFyOEJpdAorICAgIGxvYWRoIFt0MV0sIHQwCisgICAgam1wIC5vcFN3aXRjaENoYXJSZWFk
eQorLm9wU3dpdGNoQ2hhcjhCaXQ6CisgICAgbG9hZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENoYXJS
ZWFkeToKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0
MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0s
IC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJhbmNoKFNpbXBsZUp1bXBU
YWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MiwgdDAsIDRdKQorCisu
b3BTd2l0Y2hDaGFyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKwor
X2xsaW50X29wX3N3aXRjaF9zdHJpbmc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfc3RyaW5nKQorICAgIGRpc3BhdGNoKDApCisKKwor
X2xsaW50X29wX25ld19mdW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQ
Q10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAu
b3BOZXdGdW5jRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuYykKKy5v
cE5ld0Z1bmNEb25lOgorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19mdW5jX2V4
cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25l
d19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGRvQ2FsbChoZWxwZXIpCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRwIExMSW50
Q2FsbExpbmtJbmZvOjpjYWxsZWVbdDFdLCB0MgorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQor
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ2FsbFNsb3cKKyAg
ICBiaW5lcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBs
b2FkaSAxMltQQ10sIHQzCisgICAgYWRkcCAyNCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAg
YWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9h
ZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxl
ZSArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9h
ZE9mZnNldFt0M10KKyAgICBsb2FkaSA4IC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJn
dW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVb
dDNdCisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAg
ICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxs
VGFnLCBTY29wZUNoYWluICsgVGFnT2Zmc2V0W3QzXQorICAgIGNhbGwgTExJbnRDYWxsTGlua0lu
Zm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworLm9w
Q2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhlbHBlcikKK2VuZAorCitfbGxpbnRf
b3BfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJf
Y2FsbCkKKworCitfbGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBkb0NhbGwoX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3QpCisKKworX2xsaW50X29wX2NhbGxfdmFy
YXJnczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIF9sbGlu
dF9oZWxwZXJfY2FsbF92YXJhcmdzKQorCisKK19sbGludF9vcF9jYWxsX2V2YWw6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIAorICAgICMgRXZhbCBpcyBleGVjdXRlZCBpbiBvbmUgb2YgdHdv
IG1vZGVzOgorICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSByZWFsbHkgaW52b2tp
bmcgZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBleGVjdXRpb24gaXMgcGVyZm9t
ZWQgZW50aXJlbHkgaW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBpdAorICAgICMgICAgcmV0dXJucyB0
aGUgUEMgb2YgYSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0aGUgcmV0dXJuIHZhbHVlCisg
ICAgIyAgICB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgICMKKyAgICAjIDIpIFdlIGZpbmQg
dGhhdCB3ZSdyZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwoKSB0aGF0IGlzIG5vdAor
ICAgICMgICAgdGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVscGVyIHJldHVybnMgdGhlIFBDIG9m
IHRoZSB0aGluZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQuCisgICAgIworICAg
ICMgVGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywgd2hpY2ggd291bGQgcmVxdWly
ZSBhIHRvdGFsIG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0ZSB0aGF0IGNhbm5v
dCBiZSBlYXNpbHkgcGFja2VkIGludG8gdHdvCisgICAgIyByZWdpc3RlcnMgKEMgZnVuY3Rpb25z
IGNhbiByZXR1cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5KToKKyAgICAjCisgICAgIyAt
IFRoZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBt
b2RpZmllZAorICAgICMgICBieSB0aGUgaGVscGVyLCBidXQgdGhlIGNvbnZlbnRpb24gaXMgdGhh
dCBpdCByZXR1cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0b3RhbGx5IGNsZWFyIGlmIHRoYXQn
cyBuZWNlc3NhcnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUuCisgICAgIyAgIEJ1dCB0
aGF0J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRlciBzbyB3ZSBzdGljayB3aXRo
IGl0LgorICAgICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBoZWxwZXIgc3VjY2Vzc2Z1
bGx5IGV4ZWN1dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAjICAgdGhlIHJldHVybiB2YWx1ZSwg
b3IgZGlkIG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3IgdXMKKyAgICAjICAg
dG8gY2FsbC4KKyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAgICAjICAgLSBUaGUgSlMgcmV0dXJu
IHZhbHVlICh0d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisgICAgIyAgIC0gVGhlIFBDIHRvIGNh
bGwuCisgICAgIworICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2llciB0byBqdXN0IGFsd2F5
cyBoYXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBhIFBDIHRvIGNhbGwsIGFuZCB0
aGF0IFBDIG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAorICAgICMgcmV0dXJucyB0aGUg
SlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAKKyAgICBzbG93UGF0aEZvckNh
bGwoNCwgX2xsaW50X2hlbHBlcl9jYWxsX2V2YWwpCisKKworX2xsaW50X2dlbmVyaWNfcmV0dXJu
X3BvaW50OgorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitfbGxpbnRfb3BfdGVhcl9vZmZf
YWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0
eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQKKyAgICBiaWVxIFRhZ09mZnNl
dFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVh
dGVkCisub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCisub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0
ZWQ6CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYXJndW1lbnRzOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdWJpIDEsIHQw
ICAgIyBHZXQgdGhlIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcgorICAgIGJpZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3Jl
YXRlZAorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCisu
b3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3Jv
IGRvUmV0dXJuKCkKKyAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgIGxvYWRwIENhbGxl
ckZyYW1lW2Nmcl0sIGNmcgorICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQy
KQorICAgIHJldAorZW5kCisKK19sbGludF9vcF9yZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF9vcF9jYWxsX3B1
dF9yZXN1bHQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAg
IHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcmV0X29i
amVjdF9vcl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklU
Rm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAor
ICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcFJldE9iamVjdE9y
VGhpc05vdE9iamVjdAorICAgIGRvUmV0dXJuKCkKKworLm9wUmV0T2JqZWN0T3JUaGlzTm90T2Jq
ZWN0OgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0
dXJuKCkKKworCitfbGxpbnRfb3BfbWV0aG9kX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICAjIFdlIGlnbm9yZSBtZXRob2QgY2hlY2tzIGFuZCB1c2Ugbm9ybWFsIGdldF9ieV9pZCBv
cHRpbWl6YXRpb25zLgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N0cmNhdDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N0cmNhdCkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF90b19wcmltaXRpdmU6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BUb1ByaW1pdGl2ZUlz
SW1tCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJuZXEgU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5v
cFRvUHJpbWl0aXZlU2xvd0Nhc2UKKy5vcFRvUHJpbWl0aXZlSXNJbW06CisgICAgc3RvcmVpIHQx
LCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb1ByaW1pdGl2ZVNsb3dDYXNlOgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19wcmltaXRpdmUpCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfZ2V0X3BuYW1lczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9wbmFtZXMpCisgICAgZGlzcGF0Y2goMCkgIyBUaGUg
aGVscGVyIGVpdGhlciBhZHZhbmNlcyB0aGUgUEMgb3IganVtcHMgdXMgdG8gc29tZXdoZXJlIGVs
c2UuCisKKworX2xsaW50X29wX25leHRfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkaSAxNltQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQxLCA4XSwgdDAKKyAgICBiaWVxIHQwLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDIsIDhdLCAub3BOZXh0UG5hbWVFbmQKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yOjptX2pzU3RyaW5nc1t0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgOF0sIHQzCisg
ICAgYWRkaSAxLCB0MAorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQor
ICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2Fk
aSA4W1BDXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MworICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGJwbmVxIHQxLCBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIC5vcE5leHRQbmFtZVNsb3cK
KyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFByb3RvdHlwZUNoYWlu
W3QyXSwgdDAKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDBdLCB0MAorICAg
IGJ0cHogW3QwXSwgLm9wTmV4dFBuYW1lVGFyZ2V0Cisub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlw
ZUxvb3A6CisgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W3QxXSwg
TnVsbFRhZywgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5
cGUgKyBQYXlsb2FkT2Zmc2V0W3QxXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QyXSwgdDEKKyAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGFkZHAg
NCwgdDAKKyAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKKy5v
cE5leHRQbmFtZVRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgyNFtQQ10pCisKKy5vcE5leHRQ
bmFtZUVuZDoKKyAgICBkaXNwYXRjaCg3KQorCisub3BOZXh0UG5hbWVTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9uZXh0X3BuYW1lKSAjIFRoaXMgZWl0aGVyIGtlZXBzIHRoZSBQ
QyB3aGVyZSBpdCB3YXMgKGNhdXNpbmcgdXMgdG8gbG9vcCkgb3Igc2V0cyBpdCB0byB0YXJnZXQu
CisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfcHVzaF9zY29wZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfc2NvcGUpCisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9wX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9wX3Njb3BlKQorICAgIGRpc3BhdGNo
KDEpCisKKworX2xsaW50X29wX3B1c2hfbmV3X3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9uZXdfc2NvcGUpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfY2F0Y2g6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMg
VGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAo
YmVjYXVzZSB0aGUKKyAgICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNl
dCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3Mg
dGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRo
ZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRo
ZSB0aHJvd2luZworICAgICMgY29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93
aW5nIHRvIHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6
OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2Fk
cCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERh
dGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9i
YWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0ds
b2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpT
R2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1w
dHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdCisgICAg
bG9hZGkgNFtQQ10sIHQyCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF90aHJvdzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Rocm93KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Ro
cm93X3JlZmVyZW5jZV9lcnJvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF9qc3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENd
LCB0MAorICAgIGFkZGkgMyAqIDQsIFBDLCB0MQorICAgIHN0b3JlaSB0MSwgW3QwXQorICAgIGRp
c3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgUEMKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9v
cF9kZWJ1ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2RlYnVnKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Byb2ZpbGVfd2lsbF9j
YWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidHB6IEpJVFN0YWNrRnJhbWU6OmVuYWJs
ZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENh
bGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0cHogSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFBy
b2ZpbGVyUmVmZXJlbmNlW3NwXSwgLm9wUHJvZmlsZURpZENhbGxEb25lCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERvbmU6
CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhyb3df
ZnJvbV9oZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50
ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMpLCBzbworICAgICMgdGhl
IHRocm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29t
ZSB0byBoZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhy
b3dpbmcgcHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0s
IHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisg
ICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworX2xs
aW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5BZGRy
ZXNzQWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3Bd
LCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAor
ICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKKyMg
TGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBz
dXBwb3J0IGFsbCBvcGNvZGVzLgorIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3
aGVuIHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAorIyBhcyBtdWNoLgorCitt
YWNybyBub3RTdXBwb3J0ZWQoKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGNyYXNo
KCkKKyAgICBlbHNlCisgICAgICAgICMgV2Ugc2hvdWxkIHVzZSB3aGF0ZXZlciB0aGUgc21hbGxl
c3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24gaXMsIGp1c3QgdG8KKyAgICAgICAgIyBlbnN1cmUgdGhh
dCB0aGVyZSBpcyBhIGdhcCBiZXR3ZWVuIGluc3RydWN0aW9uIGxhYmVscy4gSWYgbXVsdGlwbGUK
KyAgICAgICAgIyBzbWFsbGVzdCBpbnN0cnVjdGlvbnMgZXhpc3QsIHdlIHNob3VsZCBwaWNrIHRo
ZSBvbmUgdGhhdCBpcyBtb3N0CisgICAgICAgICMgbGlrZWx5IHJlc3VsdCBpbiBleGVjdXRpb24g
YmVpbmcgaGFsdGVkLiBDdXJyZW50bHkgdGhhdCBpcyB0aGUgYnJlYWsKKyAgICAgICAgIyBpbnN0
cnVjdGlvbiBvbiBhbGwgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBpbnRlcmVzdGVkIGluLiAoQnJlYWsg
aXMgaW50MworICAgICAgICAjIG9uIEludGVsLCB3aGljaCBpcyAxIGJ5dGUsIGFuZCBia3B0IG9u
IEFSTXY3LCB3aGljaCBpcyAyIGJ5dGVzLikKKyAgICAgICAgYnJlYWsKKyAgICBlbmQKK2VuZAor
CitfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxp
bnRfb3BfZ2V0X2J5X2lkX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9n
ZXRfYnlfaWRfY3VzdG9tX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9n
ZXRfYnlfaWRfY3VzdG9tX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9n
ZXRfYnlfaWRfY3VzdG9tX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dl
dF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfZ2V0dGVyX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfZ2V0dGVyX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfZ2V0dGVyX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9p
ZF9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3NlbGY6
CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9zdHJpbmdfbGVuZ3RoOgorICAg
IG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RT
dXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3JlcGxhY2U6CisgICAgbm90U3VwcG9y
dGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uOgorICAgIG5vdFN1cHBvcnRl
ZCgpCisKKworIyBJbmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50LgorX2xsaW50X2VuZDoKKyAgICBj
cmFzaCgpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworI2luY2x1ZGUgIkxMSW50QXNzZW1ibHku
aCIKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTG93
TGV2ZWxJbnRlcnByZXRlcl9oCisjZGVmaW5lIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorCisjaW5j
bHVkZSAiT3Bjb2RlLmgiCisKKyNkZWZpbmUgTExJTlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUs
IGxlbmd0aCkgZXh0ZXJuICJDIiB2b2lkIGxsaW50XyMjb3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hf
T1BDT0RFX0lEKExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wpOworI3VuZGVmIExMSU5UX0lOU1RSVUNU
SU9OX0RFQ0wKKworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2JlZ2luKCk7CitleHRlcm4gIkMiIHZv
aWQgbGxpbnRfZW5kKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgp
OworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2V2YWxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9nZW5lcmljX3JldHVybl9wb2ludCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Ro
cm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJv
d19kdXJpbmdfY2FsbF90cmFtcG9saW5lKCk7CisKKyNlbmRpZiAvLyBMb3dMZXZlbEludGVycHJl
dGVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkzIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitjbGFzcyBTcGVjaWFsUmVnaXN0ZXIKKyAgZGVmIGluaXRpYWxpemUobmFt
ZSkKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAg
QG5hbWUKKyAgZW5kCitlbmQKKworQVJNdjdfREFUQV9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3
KCJpcCIpCitBUk12N19BRERSX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoInIzIikKKworZGVm
IG1vdmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJlbnRseSB3ZSBvbmx5IGhh
bmRsZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1vdi9tb3Z0IGZvciB0aGUg
Y29tcGxleCBvbmVzLgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2CisgICAgJGFzbS5w
dXRzICJtb3Z3IFwjI3t2YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzaWYg
KH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20ucHV0cyAibXZudyBcIyN7
fnZhbHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNlCisgICAgJGFzbS5wdXRz
ICJtb3Z3IFwjI3t2YWx1ZSAmIDB4ZmZmZn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAg
ICBpZiAodmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCisgICAgICAkYXNtLnB1dHMgIm1vdnQgXCMj
e3ZhbHVlID4+IDE2fSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorICBlbmQK
K2VuZAorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5h
bWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICJyMCIKKyAgICB3aGVuICJ0MSIs
ICJhMSIsICJyMSIKKyAgICAgICJyMSIKKyAgICB3aGVuICJ0MiIsICJhMiIKKyAgICAgICJyMiIK
KyAgICB3aGVuICJhMyIKKyAgICAgICJyMyIKKyAgICB3aGVuICJ0MyIKKyAgICAgICJyNCIKKyAg
ICB3aGVuICJ0NCIKKyAgICAgICJyNyIKKyAgICB3aGVuICJjZnIiCisgICAgICAicjUiCisgICAg
ZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJl
UG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1v
cnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0
b3JlV3JhcAorICAgIHlpZWxkCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBk
ZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZyIgorICAg
ICAgImQwIgorICAgIHdoZW4gImZyMSIsCisgICAgICAiZDEiCisgICAgd2hlbiAiZnIyIgorICAg
ICAgImQyIgorICAgIHdoZW4gImZyMyIKKyAgICAgICJkMyIKKyAgICB3aGVuICJmcjQiCisgICAg
ICAiZDQiCisgICAgd2hlbiAiZnI1IgorICAgICAgImQ1IgorICAgIGVsc2UKKyAgICAgIHJhaXNl
CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3Bl
cmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFy
bVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVs
ZCBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgYXJtVjdPcGVyYW5k
CisgICAgcmFpc2UgIkludmFsaWQgaW1tZWRpYXRlICN7dmFsdWV9IiBpZiB2YWx1ZSA8IDAgb3Ig
dmFsdWUgPiAyNTUKKyAgICAiIyR7dmFsdWV9IgorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBh
cmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1l
bW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2Fk
U3RvcmVXcmFwCisgICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCittb2R1bGUgQVJNdjdBZGRy
ZXNzVXRpbGl0aWVzCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICBzZWxmLmFybVY3UHJl
cGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICRhc20ucHV0cyAiXHRsZHIgI3tzZWxmLmFy
bVY3UG9zc2libHlNZW1vcnlPcGVyYW5kfSwgI3tBUk12N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9
IgorICAgIHlpZWxkIEFSTXY3X0RBVEFfUkVHCisgICAgJGFzbS5wdXRzICJcdHN0ciAje0FSTXY3
X0RBVEFfUkVHLmFybVY3T3BlcmFuZH0sICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFu
ZH0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NV
dGlsaXRpZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAg
aWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAgIG1v
dmVJbW1lZGlhdGUob2Zmc2V0LnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgICBlbmQKKyAgZW5k
CisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFs
dWUgPCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgIlsje2Jhc2UuYXJtVjdP
cGVyYW5kfSwgI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgICBlbHNlCisgICAg
ICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje29mZnNldC5hcm1WN09wZXJhbmR9XSIKKyAgICBl
bmQKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGluY2x1ZGUgQVJNdjdBZGRyZXNz
VXRpbGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAg
IGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1ZSwg
QVJNdjdfQUREUl9SRUcpCisgICAgICAkYXNtLnB1dHMgImFkZHcgI3tBUk12N19BRERSX1JFRy5h
cm1WN09wZXJhbmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAgZW5kCisgIAor
ICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgIT0g
MAorICAgICAgIlsje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdP
cGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVsc2UKKyAgICAgICJbI3tiYXNlLmFybVY3
T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVu
ZAorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0Fk
ZHJlc3NVdGlsaXRpZXMKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJh
bmQKKyAgICBtb3ZlSW1tZWRpYXRlKGFkZHJlc3MudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICBl
bmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICJbI3tBUk12N19B
RERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgZW5kCitlbmQKKworCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgzIEBA
CisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMi
CityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2V0dGluZ3Mi
CityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2NsYXNzIEFzc2VtYmxlcgorICBkZWYgaW5pdGlhbGl6
ZShvdXRwKQorICAgIEBvdXRwID0gb3V0cAorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAor
ICBkZWYgZW50ZXJBc20KKyAgICBAb3V0cC5wdXRzICJhc20gKCIKKyAgICBAc3RhdGUgPSA6YXNt
CisgIGVuZAorICAKKyAgZGVmIGxlYXZlQXNtCisgICAgQG91dHAucHV0cyAiKTsiCisgICAgQHN0
YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBpbkFzbQorICAgIGVudGVyQXNtCisgICAgeWll
bGQKKyAgICBsZWF2ZUFzbQorICBlbmQKKyAgCisgIGRlZiBwdXRzKGxpbmUpCisgICAgcmFpc2Ug
dW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAgQG91dHAucHV0cygobGluZSArICJcbiIpLmluc3Bl
Y3QpCisgIGVuZAorICAKKyAgZGVmIGNvbW1lbnQodGV4dCkKKyAgICBAb3V0cC5wdXRzICIvLyAj
e3RleHR9IgorICBlbmQKK2VuZAorCiskYXNtID0gQXNzZW1ibGVyLm5ldygkc3Rkb3V0KQorCith
c21GaWxlID0gQVJHVi5zaGlmdAorb2Zmc2V0c0ZpbGUgPSBBUkdWLnNoaWZ0CisKK2FzdCA9IHBh
cnNlKGxleChJTzo6cmVhZChhc21GaWxlKSkpCitvZmZzZXRzTGlzdCwgY29uZmlnSW5kZXggPSBv
ZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KG9mZnNldHNGaWxlKQorCitmb3JTZXR0aW5ncyhj
b21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KVtjb25maWdJbmRleF0sIGFzdCkgeworICB8
IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgYXNzZXJ0Q29uZmln
dXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICBsb3dMZXZlbEFTVCA9IGxvd0xldmVsQVNULnJl
c29sdmUoKmJ1aWxkT2Zmc2V0c01hcChsb3dMZXZlbEFTVCwgb2Zmc2V0c0xpc3QpKQorICBlbWl0
Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2Vu
ZCkgeworICAgICRhc20uaW5Bc20geworICAgICAgbG93TGV2ZWxBU1QubG93ZXIoYmFja2VuZCkK
KyAgICB9CisgIH0KK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fz
dC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3Qu
cmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3Qu
cmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODA2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBCYXNl
IHV0aWxpdHkgdHlwZXMgZm9yIHRoZSBBU1QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFZhbGlkIG1l
dGhvZHMgZm9yIE5vZGU6CisjCisjIG5vZGUuY2hpbGRyZW4gLT4gUmV0dXJucyBhbiBhcnJheSBv
ZiBpbW1lZGlhdGUgY2hpbGRyZW4uCisjCisjIG5vZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJucyBh
biBhcnJheSBvZiBhbGwgc3RyaWN0IGRlc2NlbmRhbnRzIChjaGlsZHJlbgorIyAgICAgYW5kIGNo
aWxkcmVuIG9mIGNoaWxkcmVuLCB0cmFuc2l0aXZlbHkpLgorIworIyBub2RlLmZsYXR0ZW4gLT4g
UmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5kCisj
ICAgICB0aGUgbm9kZSBpdHNlbGYuCisjCisjIG5vZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVybnMg
YW4gYXJyYXkgY29udGFpbmluZyB0aG9zZSBlbGVtZW50cyBpbgorIyAgICAgbm9kZS5mbGF0dGVu
IHRoYXQgYXJlIG9mIHRoZSBnaXZlbiB0eXBlIChpc19hPyB0eXBlIHJldHVybnMgdHJ1ZSkuCisj
CisjIG5vZGUubWFwQ2hpbGRyZW57fHZ8IC4uLn0gLT4gUmV0dXJucyBhIG5ldyBub2RlIHdpdGgg
YWxsIGNoaWxkcmVuCisjICAgICByZXBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJsb2Nr
LgorIworIyBFeGFtcGxlczoKKyMKKyMgbm9kZS5maWx0ZXIoU2V0dGluZykudW5pcSAtPiBSZXR1
cm5zIGFsbCBvZiB0aGUgc2V0dGluZ3MgdGhhdCB0aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVsc2Ug
YmxvY2tzIGRlcGVuZCBvbi4KKyMKKyMgbm9kZS5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxIC0+
IFJldHVybnMgYWxsIG9mIHRoZSBzdHJ1Y3R1cmUgb2Zmc2V0cworIyAgICAgdGhhdCB0aGUgQVNU
IGRlcGVuZHMgb24uCisKK2NsYXNzIE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3Jp
Z2luCisgIGVuZAorICAKKyAgZGVmIGNvZGVPcmlnaW5TdHJpbmcKKyAgICAibGluZSBudW1iZXIg
I3tAY29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVmIGRlc2NlbmRhbnRzCisgICAgY2hpbGRy
ZW4uY29sbGVjdHt8dnwgdi5mbGF0dGVufS5mbGF0dGVuCisgIGVuZAorICAKKyAgZGVmIGZsYXR0
ZW4KKyAgICBbc2VsZl0gKyBkZXNjZW5kYW50cworICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIodHlw
ZSkKKyAgICBmbGF0dGVuLnNlbGVjdHt8dnwgdi5pc19hPyB0eXBlfQorICBlbmQKK2VuZAorCitj
bGFzcyBOb0NoaWxkcmVuIDwgTm9kZQorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW10KKyAg
ZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNz
IFN0cnVjdE9mZnNldEtleQorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRl
ZiBpbml0aWFsaXplKHN0cnVjdCwgZmllbGQpCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBm
aWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAgZGVmIGhhc2gKKyAgICBAc3RydWN0Lmhhc2ggKyBA
ZmllbGQuaGFzaCAqIDMKKyAgZW5kCisgIAorICBkZWYgZXFsPyhvdGhlcikKKyAgICBAc3RydWN0
ID09IG90aGVyLnN0cnVjdCBhbmQgQGZpZWxkID09IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisg
ICAgCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBBU1Qgbm9kZXMuICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBTdHJ1Y3RPZmZzZXQgPCBO
b0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisgIEBA
bWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JGaWVsZChjb2RlT3JpZ2luLCBzdHJ1Y3Qs
IGZpZWxkKQorICAgIGtleSA9IFN0cnVjdE9mZnNldEtleS5uZXcoc3RydWN0LCBmaWVsZCkKKyAg
ICAKKyAgICB1bmxlc3MgQEBtYXBwaW5nW2tleV0KKyAgICAgIEBAbWFwcGluZ1trZXldID0gU3Ry
dWN0T2Zmc2V0Lm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGVuZAorICAgIEBA
bWFwcGluZ1trZXldCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tzdHJ1Y3R9Ojoje2Zp
ZWxkfSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAgIGlmIEBzdHJ1Y3QgIT0gb3Ro
ZXIuc3RydWN0CisgICAgICByZXR1cm4gQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgICAgZW5k
CisgICAgQGZpZWxkIDw9PiBvdGhlci5maWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2Yg
PCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3Qg
PSBzdHJ1Y3QKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9y
TmFtZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tzdHJ1Y3RdCisg
ICAgICBAQG1hcHBpbmdbc3RydWN0XSA9IFNpemVvZi5uZXcoY29kZU9yaWdpbiwgc3RydWN0KQor
ICAgIGVuZAorICAgIEBAbWFwcGluZ1tzdHJ1Y3RdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAic2l6ZW9mICN7QHN0cnVjdH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAgICBA
c3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlIDwg
Tm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhbHVlID0gdmFs
dWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje3ZhbHVlfSIKKyAgZW5kCisgIAorICBk
ZWYgPT0ob3RoZXIpCisgICAgb3RoZXIuaXNfYT8gSW1tZWRpYXRlIGFuZCBvdGhlci52YWx1ZSA9
PSBAdmFsdWUKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAg
ICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwg
QHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZEltbWVkaWF0ZXMu
bmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAgZW5k
CitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQs
IDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdo
dAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4s
ICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgIigje2xlZnQuZHVtcH0gLSAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3Mg
TXVsSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisg
IGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIE11bEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCks
ICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVt
cH0gKiAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlIDwg
Tm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAg
ZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGNoaWxkXQorICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbgorICAgIE5lZ0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGls
ZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKC0je0BjaGlsZC5kdW1wfSkiCisgIGVu
ZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpu
YW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30K
KyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBt
YXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBSZWdpc3RlcklELm5ldyhjb2Rl
T3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQgPCBO
b0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisg
IGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9y
aWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdb
bmFtZV0gPSBGUFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAg
QEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAor
ZW5kCisKK2NsYXNzIFZhcmlhYmxlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAor
ICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGlu
Z1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gVmFyaWFibGUubmV3KGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MgPCBOb2RlCisgIGF0dHJf
cmVhZGVyIDpiYXNlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBi
YXNlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAg
ICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BiYXNl
LCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZHJlc3MubmV3
KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH1dIgorICBlbmQKK2Vu
ZAorCitjbGFzcyBCYXNlSW5kZXggPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6aW5kZXgs
IDpzY2FsZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwg
aW5kZXgsIHNjYWxlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9
IGJhc2UKKyAgICBAaW5kZXggPSBpbmRleAorICAgIEBzY2FsZSA9IHNjYWxlCisgICAgcmFpc2Ug
dW5sZXNzIFsxLCAyLCA0LCA4XS5tZW1iZXI/IEBzY2FsZQorICAgIEBvZmZzZXQgPSBvZmZzZXQK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBpbmRleCwgQG9mZnNldF0K
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBCYXNlSW5kZXgubmV3KGNvZGVPcmln
aW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAaW5kZXgpLCBAc2NhbGUsICh5aWVsZCBAb2Zmc2V0
KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVt
cH0sICN7aW5kZXguZHVtcH0sICN7c2NhbGV9XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1
dGVBZGRyZXNzIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6YWRkcmVzcworICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgYWRkcmVzcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBhZGRyZXNzID0gYWRkcmVzcworICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7YWRk
cmVzcy5kdW1wfVtdIgorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbiA8IE5vZGUKKyAg
YXR0cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBvcGNvZGUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG9w
Y29kZSA9IG9wY29kZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVm
IGNoaWxkcmVuCisgICAgb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnBy
b2MpCisgICAgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5t
YXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0IiArIG9wY29kZS50b19z
ICsgIiAiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCisgIGVuZAor
ZW5kCisKK2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
XHRlcnJvciIKKyAgZW5kCitlbmQKKworY2xhc3MgQ29uc3REZWNsIDwgTm9kZQorICBhdHRyX3Jl
YWRlciA6dmFyaWFibGUsIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
dmFyaWFibGUsIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhcmlhYmxlID0g
dmFyaWFibGUKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgor
ICAgIFtAdmFyaWFibGUsIEB2YWx1ZV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBDb25zdERlY2wubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAdmFyaWFibGUpLCAoeWllbGQgQHZh
bHVlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJjb25zdCAje0B2YXJpYWJsZS5kdW1w
fSA9ICN7QHZhbHVlLmR1bXB9IgorICBlbmQKK2VuZAorCiskbGFiZWxNYXBwaW5nID0ge30KKwor
Y2xhc3MgTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBu
YW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1l
IGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTGFi
ZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFiZWwubmV3KGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExh
YmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0g
bmFtZQorICBlbmQKKworICBAQHVuaXF1ZU5hbWVDb3VudGVyID0gMAorICAKKyAgZGVmIHNlbGYu
Zm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAg
ICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1h
cHBpbmdbbmFtZV0uaXNfYT8gTG9jYWxMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBp
bmdbbmFtZV0gPSBMb2NhbExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAg
ICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgc2VsZi51bmlxdWUKKyAgICB3
aGlsZSAkbGFiZWxNYXBwaW5nWyJfTCN7QEB1bmlxdWVOYW1lQ291bnRlcn0iXQorICAgICAgQEB1
bmlxdWVOYW1lQ291bnRlciArPSAxCisgICAgZW5kCisgICAgZm9yTmFtZShuaWwsICJfTCN7QEB1
bmlxdWVOYW1lQ291bnRlcn0iKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06
IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFk
ZXIgOmxhYmVsCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAgZGVmIGNo
aWxkcmVuCisgICAgW0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBM
YWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAK
KyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBs
YWJlbC5uYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UgPCBOb0No
aWxkcmVuCisgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAor
ICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVm
IG1hcENoaWxkcmVuCisgICAgTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIFNl
cXVlbmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGlzdAorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgbGlzdCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsaXN0ID0gbGlz
dAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIGxpc3QKKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4oJnByb2MpCisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIEBsaXN0Lm1h
cCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsaXN0LmNvbGxlY3R7fHZ8IHYu
ZHVtcH0uam9pbigiXG4iKQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlIDwgTm9DaGlsZHJlbgor
ICBkZWYgaW5pdGlhbGl6ZQorICAgIHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNl
ID0gVHJ1ZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBl
bmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICJ0cnVlIgorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGlu
aXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IEZhbHNl
Lm5ldworICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAK
KyAgZGVmIHZhbHVlCisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJmYWxz
ZSIKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBUcnVl
Lmluc3RhbmNlCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlQ2xhc3MKKyAgZGVmIGFzTm9kZQor
ICAgIEZhbHNlLmluc3RhbmNlCisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcgPCBOb0NoaWxk
cmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAor
ICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0g
PSBTZXR0aW5nLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tu
YW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFz
cyBBbmQgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICBBbmQubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gYW5kICN7cmlnaHQuZHVt
cH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBPciA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQs
IDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdo
dAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE9yLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxl
ZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0
LmR1bXB9IG9yICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBOb3QgPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
Y2hpbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAY2hpbGQgPSBjaGlsZAorICBlbmQK
KyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRl
ZiBtYXBDaGlsZHJlbgorICAgIE5vdC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKG5vdCAje2NoaWxkLmR1bXB9KSIKKyAgZW5kCitl
bmQKKworY2xhc3MgU2tpcCA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
bikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0
c2tpcCIKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZSA8IE5vZGUKKyAgYXR0cl9yZWFk
ZXIgOnByZWRpY2F0ZSwgOnRoZW5DYXNlCisgIGF0dHJfYWNjZXNzb3IgOmVsc2VDYXNlCisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHRoZW5DYXNlKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQHByZWRpY2F0ZSA9IHByZWRpY2F0ZQorICAgIEB0aGVuQ2Fz
ZSA9IHRoZW5DYXNlCisgICAgQGVsc2VDYXNlID0gU2tpcC5uZXcoY29kZU9yaWdpbikKKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBpZiBAZWxzZUNhc2UKKyAgICAgIFtAcHJlZGljYXRl
LCBAdGhlbkNhc2UsIEBlbHNlQ2FzZV0KKyAgICBlbHNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRo
ZW5DYXNlXQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIElmVGhl
bkVsc2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAcHJlZGljYXRlKSwgKHlpZWxkIEB0aGVuQ2Fz
ZSksICh5aWVsZCBAZWxzZUNhc2UpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImlmICN7
cHJlZGljYXRlLmR1bXB9XG4iICsgdGhlbkNhc2UuZHVtcCArICJcbmVsc2VcbiIgKyBlbHNlQ2Fz
ZS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBNYWNybyA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOm5hbWUsIDp2YXJpYWJsZXMsIDpib2R5CisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAbmFtZSA9IG5hbWUKKyAgICBAdmFyaWFibGVzID0gdmFyaWFibGVzCisgICAgQGJvZHkg
PSBib2R5CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgQHZhcmlhYmxlcyArIFtAYm9k
eV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBNYWNyby5uZXcoY29kZU9yaWdp
biwgQG5hbWUsIEB2YXJpYWJsZXMubWFwe3x2fCB5aWVsZCB2fSwgKHlpZWxkIEBib2R5KSkKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICJtYWNybyAje25hbWV9KCIgKyB2YXJpYWJsZXMuY29s
bGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpICsgIilcbiIgKyBib2R5LmR1bXAgKyAiXG5lbmQi
CisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvQ2FsbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5h
bWUsIDpvcGVyYW5kcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgb3Bl
cmFuZHMpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgICBAb3Bl
cmFuZHMgPSBvcGVyYW5kcworICAgIHJhaXNlIHVubGVzcyBAb3BlcmFuZHMKKyAgICBAb3BlcmFu
ZHMuZWFjaHt8dnwgcmFpc2UgdW5sZXNzIHZ9CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisg
ICAgQG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIE1h
Y3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0I3tuYW1lfSgiICsgb3BlcmFuZHMuY29sbGVjdHt8
dnwgdi5kdW1wfS5qb2luKCIsICIpICsgIikiCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsODAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIng4NiIKKworQkFDS0VORFMgPQorICBbCisgICAiWDg2
IiwKKyAgICJBUk12NyIKKyAgXQorCitXT1JLSU5HX0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIK
KyAgXQorCitCQUNLRU5EX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoJyArIEJBQ0tFTkRTLmpv
aW4oJyl8KCcpICsgJylcXFonKQorCitjbGFzcyBOb2RlCisgIGRlZiBsb3dlcihuYW1lKQorICAg
IHNlbmQoImxvd2VyIiArIG5hbWUpCisgIGVuZAorZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBsb3dl
cigpIGZvciB0aG9zZSBub2RlcyB0aGF0IGFyZSBiYWNrZW5kLWFnbm9zdGljCisKK2RlZiBzYW5p
dGl6ZUxhYmVsTmFtZShuYW1lKQorICAjIFNvbWUgcGxhdGZvcm1zIGRvbid0IHdhbnQgdGhlIGxl
YWRpbmcgIl8iLiBJZiB3ZSBldmVyIHdhbnQgdG8gZG8gc29tZXRoaW5nCisgICMgYWJvdXQgdGhh
dCwgaXQgd291bGQgYmUgaGVyZS4KKyAgbmFtZQorZW5kCisKK2NsYXNzIExhYmVsCisgIGRlZiBs
b3dlcihuYW1lKQorICAgICRhc20ucHV0cyAiLmdsb2JsICN7c2FuaXRpemVMYWJlbE5hbWUoc2Vs
Zi5uYW1lKX0iCisgICAgJGFzbS5wdXRzICIje3Nhbml0aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9
OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAg
ICAkYXNtLnB1dHMgIl9fb2FfI3tzZWxmLm5hbWVbMS4uLTFdfToiCisgIGVuZAorZW5kCisKK2Ns
YXNzIFNraXAKKyAgZGVmIGxvd2VyKG5hbWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNl
CisgIGRlZiBsb3dlcihuYW1lKQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBub2RlIHwKKyAg
ICAgIG5vZGUubG93ZXIobmFtZSkKKyAgICB9CisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zm
c2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjUgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJl
ICJiYWNrZW5kcyIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJl
ICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworZGVmIGVtaXRNYWdpY051bWJlcgor
ICBPRkZTRVRfTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICB8IG51bWJlciB8CisgICAgcHV0cyAi
I3tudW1iZXJ9LCIKKyAgfQorZW5kCisKK29yaWdpbmFsQVNUID0gcGFyc2UobGV4KCRzdGRpbi5y
ZWFkKSkKKworZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKG9yaWdpbmFsQVNUKSB7CisgIHwg
c2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfAorICBvZmZzZXRzTGlzdCA9IGFzdC5maWx0
ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKKyAgc2l6ZXNMaXN0ID0gYXN0LmZpbHRlcihTaXpl
b2YpLnVuaXEuc29ydAorICAKKyAgbGVuZ3RoID0gKE9GRlNFVF9NQUdJQ19OVU1CRVJTLnNpemUg
KyAxKSAqICgxICsgb2Zmc2V0c0xpc3Quc2l6ZSArIHNpemVzTGlzdC5zaXplKQorICAKKyAgcHV0
cyAic3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7Igor
ICBlbWl0TWFnaWNOdW1iZXIKKyAgcHV0cyAiI3tpbmRleH0sIgorICBvZmZzZXRzTGlzdC5lYWNo
IHsKKyAgICB8IG9mZnNldCB8CisgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgcHV0cyAiT0ZGTElO
RV9BU01fT0ZGU0VUT0YoI3tvZmZzZXQuc3RydWN0fSwgI3tvZmZzZXQuZmllbGR9KSwiCisgIH0K
KyAgc2l6ZXNMaXN0LmVhY2ggeworICAgIHwgb2Zmc2V0IHwKKyAgICBlbWl0TWFnaWNOdW1iZXIK
KyAgICBwdXRzICJzaXplb2YoI3tvZmZzZXQuc3RydWN0fSksIgorICB9CisgIHB1dHMgIn07Igor
fQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMu
cmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1
Y3Rpb25zLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vaW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4OCBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
IyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworTUFDUk9fSU5TVFJVQ1RJT05TID0KKyAg
WworICAgImFkZGkiLAorICAgImFuZGkiLAorICAgImxzaGlmdGkiLAorICAgIm11bGkiLAorICAg
Im5lZ2kiLAorICAgIm5vdGkiLAorICAgIm9yaSIsCisgICAicnNoaWZ0aSIsCisgICAidXJzaGlm
dGkiLAorICAgInN1YmkiLAorICAgInhvcmkiLAorICAgImxvYWRpIiwKKyAgICJsb2FkYiIsCisg
ICAibG9hZGgiLAorICAgInN0b3JlaSIsCisgICAic3RvcmViIiwKKyAgICJsb2FkZCIsCisgICAi
bW92ZWQiLAorICAgInN0b3JlZCIsCisgICAiYWRkZCIsCisgICAiZGl2ZCIsCisgICAic3ViZCIs
CisgICAibXVsZCIsCisgICAic3FydGQiLAorICAgImNpMmQiLAorICAgImZpaTJkIiwgIyB1c2Fn
ZTogZmlpMmQgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9z
dCBzaWduaWZpY2FudCBiaXRzPiwgPGZwcj4KKyAgICJmZDJpaSIsICMgdXNhZ2U6IGZkMmlpIDxm
cHI+LCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNp
Z25pZmljYW50IGJpdHM+CisgICAiYmRlcSIsCisgICAiYmRuZXEiLAorICAgImJkZ3QiLAorICAg
ImJkZ3RlcSIsCisgICAiYmRsdCIsCisgICAiYmRsdGVxIiwKKyAgICJiZGVxdW4iLAorICAgImJk
bmVxdW4iLAorICAgImJkZ3R1biIsCisgICAiYmRndGVxdW4iLAorICAgImJkbHR1biIsCisgICAi
YmRsdGVxdW4iLAorICAgImJ0ZDJpIiwKKyAgICJ0ZDJpIiwKKyAgICJiY2QyaSIsCisgICAibW92
ZHoiLAorICAgInBvcCIsCisgICAicHVzaCIsCisgICAibW92ZSIsCisgICAic3hpMnAiLAorICAg
Inp4aTJwIiwKKyAgICJub3AiLAorICAgImJpZXEiLAorICAgImJpbmVxIiwKKyAgICJiaWEiLAor
ICAgImJpYWVxIiwKKyAgICJiaWIiLAorICAgImJpYmVxIiwKKyAgICJiaWd0IiwKKyAgICJiaWd0
ZXEiLAorICAgImJpbHQiLAorICAgImJpbHRlcSIsCisgICAiYmJlcSIsCisgICAiYmJuZXEiLAor
ICAgImJiYSIsCisgICAiYmJhZXEiLAorICAgImJiYiIsCisgICAiYmJiZXEiLAorICAgImJiZ3Qi
LAorICAgImJiZ3RlcSIsCisgICAiYmJsdCIsCisgICAiYmJsdGVxIiwKKyAgICJidGlvIiwKKyAg
ICJidGlzIiwKKyAgICJidGl6IiwKKyAgICJidGlueiIsCisgICAiYnRibyIsCisgICAiYnRicyIs
CisgICAiYnRieiIsCisgICAiYnRibnoiLAorICAgImptcCIsCisgICAiYmFkZGlvIiwKKyAgICJi
YWRkaXMiLAorICAgImJhZGRpeiIsCisgICAiYmFkZGlueiIsCisgICAiYnN1YmlvIiwKKyAgICJi
c3ViaXMiLAorICAgImJzdWJpeiIsCisgICAiYnN1YmlueiIsCisgICAiYm11bGlvIiwKKyAgICJi
bXVsaXMiLAorICAgImJtdWxpeiIsCisgICAiYm11bGlueiIsCisgICAiYm9yaW8iLAorICAgImJv
cmlzIiwKKyAgICJib3JpeiIsCisgICAiYm9yaW56IiwKKyAgICJicmVhayIsCisgICAiY2FsbCIs
CisgICAicmV0IiwKKyAgICJjaWVxIiwKKyAgICJjaW5lcSIsCisgICAiY2lhIiwKKyAgICJjaWFl
cSIsCisgICAiY2liIiwKKyAgICJjaWJlcSIsCisgICAiY2lndCIsCisgICAiY2lndGVxIiwKKyAg
ICJjaWx0IiwKKyAgICJjaWx0ZXEiLAorICAgInRpbyIsCisgICAidGlzIiwKKyAgICJ0aXoiLAor
ICAgInRpbnoiLAorICAgInRibyIsCisgICAidGJzIiwKKyAgICJ0YnoiLAorICAgInRibnoiLAor
ICAgInBlZWsiLAorICAgInBva2UiLAorICAgImJwZXEiLAorICAgImJwbmVxIiwKKyAgICJicGEi
LAorICAgImJwYWVxIiwKKyAgICJicGIiLAorICAgImJwYmVxIiwKKyAgICJicGd0IiwKKyAgICJi
cGd0ZXEiLAorICAgImJwbHQiLAorICAgImJwbHRlcSIsCisgICAiYWRkcCIsCisgICAiYW5kcCIs
CisgICAib3JwIiwKKyAgICJzdWJwIiwKKyAgICJ4b3JwIiwKKyAgICJsb2FkcCIsCisgICAiY3Bl
cSIsCisgICAiY3BuZXEiLAorICAgImNwYSIsCisgICAiY3BhZXEiLAorICAgImNwYiIsCisgICAi
Y3BiZXEiLAorICAgImNwZ3QiLAorICAgImNwZ3RlcSIsCisgICAiY3BsdCIsCisgICAiY3BsdGVx
IiwKKyAgICJzdG9yZXAiLAorICAgImJ0cG8iLAorICAgImJ0cHMiLAorICAgImJ0cHoiLAorICAg
ImJ0cG56IiwKKyAgICJiYWRkcG8iLAorICAgImJhZGRwcyIsCisgICAiYmFkZHB6IiwKKyAgICJi
YWRkcG56IgorICBdCisKK1g4Nl9JTlNUUlVDVElPTlMgPQorICBbCisgICAiY2RxaSIsCisgICAi
aWRpdmkiCisgIF0KKworSU5TVFJVQ1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05TICsgWDg2X0lO
U1RSVUNUSU9OUworCitJTlNUUlVDVElPTl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsg
SU5TVFJVQ1RJT05TLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3Jf
Y29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01BR0lDX05V
TUJFUlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTU2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1
aXJlICJhc3QiCityZXF1aXJlICJvZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cyIKKworT0ZGU0VU
X01BR0lDX05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyBvZmZzZXRzTGlzdChhc3QpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIHNpemVzTGlzdChhc3Qp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBSZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCBzaXplcyB1
c2VkIGJ5IHRoZSBBU1QuICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworCitkZWYgb2Zmc2V0c0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFN0cnVjdE9m
ZnNldCkudW5pcS5zb3J0CitlbmQKKworZGVmIHNpemVzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIo
U2l6ZW9mKS51bmlxLnNvcnQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGFzdCwgZmlsZSkgLT4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjICAgICBbb2Zmc2V0cywgaW5kZXhdICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBQ
YXJzZXMgdGhlIG9mZnNldHMgZnJvbSBhIGZpbGUgYW5kIHJldHVybnMgYSBsaXN0IG9mIG9mZnNl
dHMgYW5kIHRoZSAjCisjIGluZGV4IG9mIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgaXMgdmFsaWQg
aW4gdGhpcyBidWlsZCB0YXJnZXQuICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisKK2RlZiBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUpCisgIGluZGV4
ID0gbmlsCisgIG9mZnNldHMgPSBbXQorICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBuaWwKKyAg
CisgIGRlZiByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICBieXRlcyA9IFtdCisgICAgNC50
aW1lcyB7CisgICAgICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQorICAgIH0KKyAgICAKKyAgICBpZiBl
bmRpYW5uZXNzID09IDpsaXR0bGUKKyAgICAgICMgTGl0dGxlIGVuZGlhbgorICAgICAgKGJ5dGVz
WzBdIDw8IDAgfAorICAgICAgIGJ5dGVzWzFdIDw8IDggfAorICAgICAgIGJ5dGVzWzJdIDw8IDE2
IHwKKyAgICAgICBieXRlc1szXSA8PCAyNCkKKyAgICBlbHNlCisgICAgICAjIEJpZyBlbmRpYW4K
KyAgICAgIChieXRlc1swXSA8PCAyNCB8CisgICAgICAgYnl0ZXNbMV0gPDwgMTYgfAorICAgICAg
IGJ5dGVzWzJdIDw8IDggfAorICAgICAgIGJ5dGVzWzNdIDw8IDApCisgICAgZW5kCisgIGVuZAor
ICAKKyAgWzpsaXR0bGUsIDpiaWddLmVhY2ggeworICAgIHwgZW5kaWFubmVzcyB8CisgICAgbWFn
aWNCeXRlcyA9IFtdCisgICAgTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICAgIHwgbnVtYmVyIHwK
KyAgICAgIGN1cnJlbnRCeXRlcyA9IFtdCisgICAgICA0LnRpbWVzIHsKKyAgICAgICAgY3VycmVu
dEJ5dGVzIDw8IChudW1iZXIgJiAweGZmKQorICAgICAgICBudW1iZXIgPj49IDgKKyAgICAgIH0K
KyAgICAgIGlmIGVuZGlhbm5lc3MgPT0gOmJpZworICAgICAgICBjdXJyZW50Qnl0ZXMucmV2ZXJz
ZSEKKyAgICAgIGVuZAorICAgICAgbWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0ZXMKKyAgICB9Cisg
ICAgCisgICAgRmlsZS5vcGVuKGZpbGUsICJyIikgeworICAgICAgfCBpbnAgfAorICAgICAgd2hl
cmVJbk1hcmtlciA9IDAKKyAgICAgIGxvb3AgeworICAgICAgICBieXRlID0gaW5wLmdldGJ5dGUK
KyAgICAgICAgYnJlYWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgaWYgYnl0ZSA9PSBtYWdpY0J5dGVz
W3doZXJlSW5NYXJrZXJdCisgICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisgICAgICAgICAg
aWYgd2hlcmVJbk1hcmtlciA9PSBtYWdpY0J5dGVzLnNpemUKKyAgICAgICAgICAgICMgV2UgaGF2
ZSBhIG1hdGNoISBJZiB3ZSBoYXZlIG5vdCB5ZXQgcmVhZCB0aGUgZW5kaWFubmVzcyBtYXJrZXIg
YW5kIGluZGV4LAorICAgICAgICAgICAgIyB0aGVuIHJlYWQgdGhvc2Ugbm93OyBvdGhlcndpc2Ug
cmVhZCBhbiBvZmZzZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIG5vdCBpbmRleAor
ICAgICAgICAgICAgICBpbmRleCA9IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICBvZmZzZXRzIDw8IHJlYWRJbnQoZW5kaWFubmVzcywgaW5w
KQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdoZXJlSW5NYXJr
ZXIgPSAwCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICB3aGVyZUluTWFy
a2VyID0gMAorICAgICAgICBlbmQKKyAgICAgIH0KKyAgICB9CisgICAgCisgICAgYnJlYWsgaWYg
aW5kZXgKKyAgfQorICAKKyAgcmFpc2UgdW5sZXNzIGluZGV4CisgIAorICBbb2Zmc2V0cywgaW5k
ZXhdCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgYnVpbGRPZmZz
ZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpIC0+IFtvZmZzZXRzLCBzaXplc10gICAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIEJ1aWxkcyBhIG1hcHBpbmcgYmV0d2VlbiBTdHJ1Y3RP
ZmZzZXQgbm9kZXMgYW5kIHRoZWlyIHZhbHVlcy4gICAgICAgICMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisKK2RlZiBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkK
KyAgb2Zmc2V0c01hcCA9IHt9CisgIHNpemVzTWFwID0ge30KKyAgYXN0T2Zmc2V0c0xpc3QgPSBv
ZmZzZXRzTGlzdChhc3QpCisgIGFzdFNpemVzTGlzdCA9IHNpemVzTGlzdChhc3QpCisgIHJhaXNl
IHVubGVzcyBhc3RPZmZzZXRzTGlzdC5zaXplICsgYXN0U2l6ZXNMaXN0LnNpemUgPT0gb2Zmc2V0
c0xpc3Quc2l6ZQorICBvZmZzZXRzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBz
dHJ1Y3RPZmZzZXQsIGluZGV4IHwKKyAgICBvZmZzZXRzTWFwW3N0cnVjdE9mZnNldF0gPSBvZmZz
ZXRzTGlzdC5zaGlmdAorICB9CisgIHNpemVzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7Cisg
ICAgfCBzaXplb2YsIGluZGV4IHwKKyAgICBzaXplc01hcFtzaXplb2ZdID0gb2Zmc2V0c0xpc3Qu
c2hpZnQKKyAgfQorICBbb2Zmc2V0c01hcCwgc2l6ZXNNYXBdCitlbmQKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1OTEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3Jl
cXVpcmUgImFzdCIKK3JlcXVpcmUgImluc3RydWN0aW9ucyIKK3JlcXVpcmUgInJlZ2lzdGVycyIK
KworY2xhc3MgVG9rZW4KKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4sIDpzdHJpbmcKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cmluZykKKyAgICBAY29kZU9yaWdpbiA9IGNv
ZGVPcmlnaW4KKyAgICBAc3RyaW5nID0gc3RyaW5nCisgIGVuZAorICAKKyAgZGVmID09KG90aGVy
KQorICAgIGlmIG90aGVyLmlzX2E/IFRva2VuCisgICAgICBAc3RyaW5nID09IG90aGVyLnN0cmlu
ZworICAgIGVsc2UKKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIKKyAgICBlbmQKKyAgZW5kCisgIAor
ICBkZWYgPX4ob3RoZXIpCisgICAgQHN0cmluZyA9fiBvdGhlcgorICBlbmQKKyAgCisgIGRlZiB0
b19zCisgICAgIiN7QHN0cmluZy5pbnNwZWN0fSBhdCBsaW5lICN7Y29kZU9yaWdpbn0iCisgIGVu
ZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgY29tbWVudC5lbXB0eT8K
KyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfSIKKyAgICBlbHNlCisgICAgICByYWlz
ZSAiUGFyc2UgZXJyb3I6ICN7dG9fc306ICN7Y29tbWVudFswXX0iCisgICAgZW5kCisgIGVuZAor
ZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBsZXhlci4gVGFr
ZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdG9rZW5zLiAgICAgICAgICAgICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBsZXgoc3RyKQorICByZXN1
bHQgPSBbXQorICBsaW5lTnVtYmVyID0gMQorICB3aGlsZSBub3Qgc3RyLmVtcHR5PworICAgIGNh
c2Ugc3RyCisgICAgd2hlbiAvXEFcIyhbXlxuXSopLworICAgICAgIyBjb21tZW50LCBpZ25vcmUK
KyAgICB3aGVuIC9cQVxuLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAk
JikKKyAgICAgIGxpbmVOdW1iZXIgKz0gMQorICAgIHdoZW4gL1xBW2EtekEtWl0oW2EtekEtWjAt
OV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdo
ZW4gL1xBXC4oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVO
dW1iZXIsICQmKQorICAgIHdoZW4gL1xBXyhbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8
PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEEoWyBcdF0rKS8KKyAgICAg
ICMgd2hpdGVzcGFjZSwgaWdub3JlCisgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSspLworICAg
ICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAgICB3aGVu
IC9cQTAoWzAtN10rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYu
b2N0LnRvX3MpCisgICAgd2hlbiAvXEEoWzAtOV0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5u
ZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEE6Oi8KKyAgICAgIHJlc3VsdCA8PCBUb2tl
bi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFbOixcKFwpXFtcXT1cK1wtKl0vCisg
ICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIGVsc2UKKyAgICAg
IHJhaXNlICJMZXhlciBlcnJvciBhdCBsaW5lIG51bWJlciAje2xpbmVOdW1iZXJ9LCB1bmV4cGVj
dGVkIHNlcXVlbmNlICN7c3RyWzAuLjIwXS5pbnNwZWN0fSIKKyAgICBlbmQKKyAgICBzdHIgPSAk
fi5wb3N0X21hdGNoCisgIGVuZAorICByZXN1bHQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBUb2tlbiBpZGVudGlmaWNhdGlvbi4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworCitkZWYgaXNSZWdpc3Rlcih0b2tlbikKKyAgdG9rZW4gPX4gUkVHSVNURVJfUEFU
VEVSTgorZW5kCisKK2RlZiBpc0luc3RydWN0aW9uKHRva2VuKQorICB0b2tlbiA9fiBJTlNUUlVD
VElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzS2V5d29yZCh0b2tlbikKKyAgdG9rZW4gPX4gL1xB
KCh0cnVlKXwoZmFsc2UpfChpZil8KHRoZW4pfChlbHNlKXwoZWxzaWYpfChlbmQpfChhbmQpfChv
cil8KG5vdCl8KG1hY3JvKXwoY29uc3QpfChzaXplb2YpfChlcnJvcikpXFovIG9yCisgICAgdG9r
ZW4gPX4gUkVHSVNURVJfUEFUVEVSTiBvcgorICAgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRF
Uk4KK2VuZAorCitkZWYgaXNJZGVudGlmaWVyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbYS16QS1a
XShbYS16QS1aMC05X10qKVxaLyBhbmQgbm90IGlzS2V5d29yZCh0b2tlbikKK2VuZAorCitkZWYg
aXNMYWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXyhbYS16QS1aMC05X10qKVxaLworZW5kCisK
K2RlZiBpc0xvY2FsTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQVwuKFthLXpBLVowLTlfXSop
XFovCitlbmQKKworZGVmIGlzVmFyaWFibGUodG9rZW4pCisgIGlzSWRlbnRpZmllcih0b2tlbikg
b3IgaXNSZWdpc3Rlcih0b2tlbikKK2VuZAorCitkZWYgaXNJbnRlZ2VyKHRva2VuKQorICB0b2tl
biA9fiAvXEFbMC05XS8KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyBUaGUgcGFyc2VyLiBUYWtlcyBhbiBhcnJheSBvZiB0b2tlbnMgYW5kIHJldHVybnMgYW4gQVNU
LiBNZXRob2RzICAgICAjCisjIG90aGVyIHRoYW4gcGFyc2UodG9rZW5zKSBhcmUgbm90IGZvciBw
dWJsaWMgY29uc3VtcHRpb24uICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisKK2NsYXNzIFBhcnNlcgorICBkZWYgaW5pdGlhbGl6ZSh0b2tlbnMpCisgICAg
QHRva2VucyA9IHRva2VucworICAgIEBpZHggPSAwCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJy
b3IoKmNvbW1lbnQpCisgICAgaWYgQHRva2Vuc1tAaWR4XQorICAgICAgQHRva2Vuc1tAaWR4XS5w
YXJzZUVycm9yKCpjb21tZW50KQorICAgIGVsc2UKKyAgICAgIGlmIGNvbW1lbnQuZW1wdHk/Cisg
ICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZSIKKyAgICAgIGVsc2UKKyAg
ICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlOiAje2NvbW1lbnRbMF19Igor
ICAgICAgZW5kCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGNvbnN1bWUocmVnZXhwKQorICAg
IGlmIHJlZ2V4cAorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9fiByZWdl
eHAKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAaWR4ID09IEB0b2tlbnMubGVu
Z3RoCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgIGVuZAorICAKKyAgZGVmIHNraXBOZXdMaW5l
CisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICBAaWR4ICs9IDEKKyAgICBl
bmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgaWYgQHRva2Vuc1tA
aWR4XSA9PSAibm90IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZVByZWRpY2F0ZUF0b20K
KyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICBz
a2lwTmV3TGluZQorICAgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgIHBhcnNlRXJy
b3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJl
c3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInRydWUiCisgICAgICByZXN1bHQgPSBU
cnVlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0
b2tlbnNbQGlkeF0gPT0gImZhbHNlIgorICAgICAgcmVzdWx0ID0gRmFsc2UuaW5zdGFuY2UKKyAg
ICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tl
bnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IFNldHRpbmcuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgQGlkeCArPSAxCisgICAgICBy
ZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmIHBhcnNlUHJlZGljYXRlQW5kCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisg
ICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiYW5kIgorICAgICAgY29kZU9yaWdpbiA9IEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQor
ICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgIHJlc3VsdCA9IEFuZC5uZXco
Y29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisg
IAorICBkZWYgcGFyc2VQcmVkaWNhdGUKKyAgICAjIHNvbWUgZXhhbXBsZXMgb2YgcHJlY2VkZW5j
ZToKKyAgICAjIG5vdCBhIGFuZCBiIC0+IChub3QgYSkgYW5kIGIKKyAgICAjIGEgYW5kIGIgb3Ig
YyAtPiAoYSBhbmQgYikgb3IgYworICAgICMgYSBvciBiIGFuZCBjIC0+IGEgb3IgKGIgYW5kIGMp
CisgICAgCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICB3aGlsZSBAdG9rZW5z
W0BpZHhdID09ICJvciIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4KKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFy
c2VQcmVkaWNhdGVBbmQKKyAgICAgIHJlc3VsdCA9IE9yLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQs
IHJpZ2h0KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVZhcmlh
YmxlCisgICAgaWYgaXNSZWdpc3RlcihAdG9rZW5zW0BpZHhdKQorICAgICAgaWYgQHRva2Vuc1tA
aWR4XSA9fiBGUFJfUEFUVEVSTgorICAgICAgICByZXN1bHQgPSBGUFJlZ2lzdGVySUQuZm9yTmFt
ZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAg
ZWxzZQorICAgICAgICByZXN1bHQgPSBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVuZAorICAgIGVsc2lmIGlz
SWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgcmVzdWx0ID0gVmFyaWFibGUuZm9yTmFt
ZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgIGVs
c2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQK
KyAgZW5kCisgIAorICBkZWYgcGFyc2VBZGRyZXNzKG9mZnNldCkKKyAgICBwYXJzZUVycm9yIHVu
bGVzcyBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4KKyAgICAKKyAgICAjIFRocmVlIHBvc3NpYmlsaXRpZXM6CisgICAgIyBbXSAg
ICAgICAtPiBBYnNvbHV0ZUFkZHJlc3MKKyAgICAjIFthXSAgICAgIC0+IEFkZHJlc3MKKyAgICAj
IFthLGJdICAgIC0+IEJhc2VJbmRleCB3aXRoIHNjYWxlID0gMQorICAgICMgW2EsYixjXSAgLT4g
QmFzZUluZGV4CisgICAgCisgICAgQGlkeCArPSAxCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
XSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmV0dXJuIEFic29sdXRlQWRkcmVzcy5uZXcoY29k
ZU9yaWdpbiwgb2Zmc2V0KQorICAgIGVuZAorICAgIGEgPSBwYXJzZVZhcmlhYmxlCisgICAgaWYg
QHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIHJlc3VsdCA9IEFkZHJlc3MubmV3KGNvZGVPcmln
aW4sIGEsIG9mZnNldCkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5z
W0BpZHhdID09ICIsIgorICAgICAgQGlkeCArPSAxCisgICAgICBiID0gcGFyc2VWYXJpYWJsZQor
ICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4
Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCAxLCBvZmZzZXQpCisgICAgICBlbHNlCisgICAgICAgIHBh
cnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBbIjEiLCAiMiIsICI0IiwgIjgiXS5tZW1iZXI/IEB0
b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIGMgPSBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19p
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0Bp
ZHhdID09ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEs
IGIsIGMsIG9mZnNldCkKKyAgICAgIGVuZAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICAgIHJl
c3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUNvbG9uQ29sb24KKyAgICBza2lwTmV3TGluZQor
ICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICBwYXJzZUVycm9y
IHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgIG5hbWVzID0gW0B0b2tlbnNb
QGlkeF0uc3RyaW5nXQorICAgIEBpZHggKz0gMQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0g
Ijo6IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZp
ZXIgQHRva2Vuc1tAaWR4XQorICAgICAgbmFtZXMgPDwgQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAg
ICAgIEBpZHggKz0gMQorICAgIGVuZAorICAgIHJhaXNlIGlmIG5hbWVzLmVtcHR5PworICAgIFtj
b2RlT3JpZ2luLCBuYW1lc10KKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uQXRvbQor
ICAgIHNraXBOZXdMaW5lCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIEBpZHgg
Kz0gMQorICAgICAgTmVnSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2lu
LCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisg
ICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcmVzdWx0CisgICAgZWxzaWYgaXNJbnRlZ2VyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3Vs
dCA9IEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhd
LnN0cmluZy50b19pKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBp
c0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJz
ZUNvbG9uQ29sb24KKyAgICAgIGlmIG5hbWVzLnNpemUgPiAxCisgICAgICAgIFN0cnVjdE9mZnNl
dC5mb3JGaWVsZChjb2RlT3JpZ2luLCBuYW1lc1swLi4tMl0uam9pbignOjonKSwgbmFtZXNbLTFd
KQorICAgICAgZWxzZQorICAgICAgICBWYXJpYWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVz
WzBdKQorICAgICAgZW5kCisgICAgZWxzaWYgaXNSZWdpc3RlciBAdG9rZW5zW0BpZHhdCisgICAg
ICBwYXJzZVZhcmlhYmxlCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIgorICAg
ICAgQGlkeCArPSAxCisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgor
ICAgICAgU2l6ZW9mLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXMuam9pbignOjonKSkKKyAgICBl
bHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhw
cmVzc2lvbk11bAorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9u
QXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICBpZiBAdG9rZW5zW0Bp
ZHhdID09ICIqIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gTXVsSW1tZWRp
YXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJl
c3Npb25BdG9tKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5k
CisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgQHRv
a2Vuc1tAaWR4XSA9PSAiLSIgb3IgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIiBvciBpc0ludGVn
ZXIoQHRva2Vuc1tAaWR4XSkgb3IgaXNWYXJpYWJsZShAdG9rZW5zW0BpZHhdKQorICBlbmQKKyAg
CisgIGRlZiBwYXJzZUV4cHJlc3Npb24KKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBh
cnNlRXhwcmVzc2lvbk11bAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0b2tl
bnNbQGlkeF0gPT0gIi0iCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4
IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICItIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0
ID0gU3ViSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0
LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBl
bmQKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5kKGNv
bW1lbnQpCisgICAgaWYgY291bGRCZUV4cHJlc3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4cHJl
c3Npb24KKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRkcmVz
cyhleHByKQorICAgICAgZWxzZQorICAgICAgICBleHByCisgICAgICBlbmQKKyAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICJbIgorICAgICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCAwKSkKKyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlk
eF0KKyAgICAgIHJlc3VsdCA9IExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4sIExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0Bp
ZHhdLnN0cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlz
TG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVmZXJl
bmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHgg
Kz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50KQor
ICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tpcE5l
d0xpbmUKKyAgICBjb25zdW1lKC9cQVwoXFovKQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAgbG9v
cCB7CisgICAgICBza2lwTmV3TGluZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIo
QHRva2Vuc1tAaWR4XSkKKyAgICAgICAgdmFyaWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlk
eCArPSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0g
IikiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYg
QHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQor
ICAgICAgICAgIHBhcnNlRXJyb3IKKyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIHBh
cnNlRXJyb3IKKyAgICAgIGVuZAorICAgIH0KKyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAorICBk
ZWYgcGFyc2VTZXF1ZW5jZShmaW5hbCwgY29tbWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4gPSBA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAgICAg
IGlmIChAaWR4ID09IEB0b2tlbnMubGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQg
QHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAjIGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNWYXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAgICAg
IHZhcmlhYmxlID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0
b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJv
ciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiPSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAg
IHZhbHVlID0gcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5u
YW1lfSIpCisgICAgICAgIGxpc3QgPDwgQ29uc3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImVy
cm9yIgorICAgICAgICBsaXN0IDw8IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4p
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisg
ICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlk
eCArPSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJl
ZGljYXRlCisgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgc2tp
cE5ld0xpbmUKKyAgICAgICAgaWZUaGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4s
IHByZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAi
d2hpbGUgaW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBsaXN0
IDw8IGlmVGhlbkVsc2UKKyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisg
ICAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRlID0g
cGFyc2VQcmVkaWNhdGUKKyAgICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisg
ICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3
KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChl
bHNpZikpXFovLCAid2hpbGUgaW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQor
ICAgICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlmVGhl
bkVsc2UgPSBlbHNlQ2FzZQorICAgICAgICBlbmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9
PSAiZWxzZSIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VD
YXNlID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNl
IGZvciBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKQorICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAi
ZW5kIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gIm1hY3JvIgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAg
ICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAg
bmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2
YXJpYWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVl
bmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAgICAg
QGlkeCArPSAxCisgICAgICAgIGxpc3QgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZh
cmlhYmxlcywgYm9keSkKKyAgICAgIGVsc2lmIGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQor
ICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5h
bWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYg
KG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vu
c1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwg
YW5kIGl0J3MgdGhlIGxhc3Qgb25lLgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0
b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9u
LgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtd
KQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBJdCdzIGRl
ZmluaXRlbHkgYW4gaW5zdHJ1Y3Rpb24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJhbmQu
CisgICAgICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxz
ZQorICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5k
KCJ3aGlsZSBpbnNpZGUgb2YgaW5zdHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICBpZiAo
bm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5z
W0BpZHhdID1+IGZpbmFsKQorICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0
aW9uIGFuZCBvZiB0aGUgc2VxdWVuY2UuCisgICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSB0
cnVlCisgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICIsIgorICAgICAgICAgICAgICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisg
ICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFs
fSBhZnRlciAje29wZXJhbmRzLmxhc3QuZHVtcH0iKQorICAgICAgICAgICAgZW5kCisgICAgICAg
ICAgfQorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUs
IG9wZXJhbmRzKQorICAgICAgICAgIGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJyZWFr
CisgICAgICAgICAgZW5kCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0
b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdp
bgorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAx
CisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICAgICAgIyBNYWNybyBpbnZv
Y2F0aW9uLgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAg
ICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisg
ICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsb29wIHsK
KyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4
XSA9PSAibWFjcm8iCisgICAgICAgICAgICAgICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQorICAg
ICAgICAgICAgICAgIGNvZGVPcmlnaW5Jbm5lciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgor
ICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBh
cnNlTWFjcm9WYXJpYWJsZXMKKyAgICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgv
XEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1
bWVudCB0byAje25hbWV9IikKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAg
ICAgICBvcGVyYW5kcyA8PCBNYWNyby5uZXcoY29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlhYmxl
cywgYm9keSkKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8
IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIpCisg
ICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0g
IiwiCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBwYXJzZUVycm9yICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcu
aW5zcGVjdH0gd2hpbGUgcGFyc2luZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAg
ICAgICAgICAgIGVuZAorICAgICAgICAgICAgfQorICAgICAgICAgIGVuZAorICAgICAgICAgIGxp
c3QgPDwgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAg
ZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IgIkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFtZX0i
CisgICAgICAgIGVuZAorICAgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlzTG9j
YWxMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI6
IgorICAgICAgICAjIEl0J3MgYSBsYWJlbC4KKyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAg
ICAgICAgbGlzdCA8PCBMYWJlbC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVs
c2UKKyAgICAgICAgICBsaXN0IDw8IExvY2FsTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1l
KQorICAgICAgICBlbmQKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNlCisgICAgICAgIHBh
cnNlRXJyb3IgIkV4cGVjdGluZyB0ZXJtaW5hbCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAgICAg
ZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisgIGVu
ZAorZW5kCisKK2RlZiBwYXJzZSh0b2tlbnMpCisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9rZW5z
KQorICBwYXJzZXIucGFyc2VTZXF1ZW5jZShuaWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK0dQUlMgPQorICBbCisgICAidDAiLAorICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMiLAor
ICAgInQ0IiwKKyAgICJjZnIiLAorICAgImEwIiwKKyAgICJhMSIsCisgICAicjAiLAorICAgInIx
IiwKKyAgICJzcCIKKyAgXQorCitGUFJTID0KKyAgWworICAgImZ0MCIsCisgICAiZnQxIiwKKyAg
ICJmdDIiLAorICAgImZ0MyIsCisgICAiZnQ0IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisgICAi
ZmExIiwKKyAgICJmYTIiLAorICAgImZhMyIsCisgICAiZnIiCisgIF0KKworUkVHSVNURVJTID0g
R1BSUyArIEZQUlMKKworR1BSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJTLmpv
aW4oJyl8KCcpICsgJykpXFxaJykKK0ZQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsg
RlBSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdleHAu
bmV3KCdcXEEoKCcgKyBSRUdJU1RFUlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyMjEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFyc2Vy
IgorcmVxdWlyZSAidHJhbnNmb3JtIgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRp
b25zICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkg
b2Ygc2V0dGluZ3MgbWFwcywgd2hlcmUgYSBzZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMgIworIyBh
IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhc3NlbWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhl
IG1hcCAgICAgICAjCisjIGNvbnRhaW5zIGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBz
ZXR0aW5ncyBuYW1lcyAoc3RyaW5ncykgYW5kICMKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVhbnMg
KHRydWUgZm9yIGVuYWJsZWQsIGZhbHNlIGZvciBkaXNhYmxlZCkuICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9u
cyhhc3QpCisgIHNldHRpbmdzQ29tYmluYXRpb25zID0gW10KKyAgCisgIGRlZiBzZXR0aW5nc0Nv
bWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG1hcFNvRmFyLCByZW1haW5pbmcpCisgICAg
aWYgcmVtYWluaW5nLmVtcHR5PworICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFwU29G
YXIKKyAgICAgIHJldHVybgorICAgIGVuZAorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1
cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gdHJ1ZQorICAgIHNldHRpbmdzQ29tYmluYXRv
cihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICAgIAor
ICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gZmFs
c2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwg
cmVtYWluaW5nWzEuLi0xXSkKKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGlu
Z3NDb21iaW5hdGlvbnMsIHt9LCAoYXN0LmZpbHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7fHZ8
IHYubmFtZX0gKyBbIlg4NiIsICJBUk12NyJdKS51bmlxKQorICAKKyAgc2V0dGluZ3NDb21iaW5h
dGlvbnMKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JTZXR0
aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwg
Li4uIH0gICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBEZXRlcm1pbmVzIGlm
IHRoZSBzZXR0aW5ncyBjb21iaW5hdGlvbiBpcyB2YWxpZCwgYW5kIGlmIHNvLCBjYWxscyAgICAj
CisjIHRoZSBibG9jayB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBj
b2RlLiAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Rl
ZiBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJj
aGl0ZWN0dXJlcyB0aGlzIGNvbWJpbmF0b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWlt
ZWRCYWNrZW5kcyA9IDAKKyAgc2VsZWN0ZWRCYWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2gg
eworICAgIHwgYmFja2VuZCB8CisgICAgaXNTdXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2Jh
Y2tlbmRdCisgICAgcmFpc2UgdW5sZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWlt
ZWRCYWNrZW5kcyArPSBpZiBpc1N1cHBvcnRlZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlz
U3VwcG9ydGVkCisgICAgICBzZWxlY3RlZEJhY2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0K
KyAgCisgIHJldHVybiBpZiBudW1DbGFpbWVkQmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUg
dGhlIEFTVCBkb3duIHRvIGEgbG93LWxldmVsIGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25h
bHMpLgorICBsb3dMZXZlbEFTVCA9IGFzdC5yZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5n
cykKKyAgCisgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJh
Y2tlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNo
VmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAu
Li4gfSAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRT
ZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgc2V0dGluZ3NDb21iaW5hdGlvbnMpIHsgICAgICAgICAj
CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAg
ICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFeGVjdXRlcyB0aGUgZ2l2ZW4g
YmxvY2sgZm9yIGVhY2ggdmFsaWQgc2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlICAjCisjIHNl
dHRpbmdzIG1hcC4gVGhlIGFzdCBwYXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQgICAg
ICAgICAgICAgICMKKyMgKGFzdC5yZXNvbHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBmaXJz
dCBmb3JtIHdpbGwgY2FsbCBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSBmb3IgeW91
LiAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JFYWNoVmFs
aWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgKm9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMp
CisgIHJhaXNlIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEKKyAgCisg
IGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuZW1wdHk/CisgICAgc2V0dGluZ3NDb21i
aW5hdGlvbnMgPSBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBlbHNlCisgICAg
c2V0dGluZ3NDb21iaW5hdGlvbnMgPSBvcHRpb25hbFNldHRpbmdzQ29tYmlhdGlvbnNbMF0KKyAg
ZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucy5lYWNoX3dpdGhfaW5kZXggeworICAgIHwg
Y29uY3JldGVTZXR0aW5ncywgaW5kZXggfAorICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGlu
Z3MsIGFzdCkgeworICAgICAgfCBjb25jcmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJhY2tl
bmQgfAorICAgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQs
IGluZGV4CisgICAgfQorICB9CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFJldHVybnMgdGhlIEMrKyBj
b2RlIHVzZWQgdG8gdGVzdCBpZiB3ZSBhcmUgaW4gYSBjb25maWd1cmF0aW9uIHRoYXQgICMKKyMg
Y29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIGNvbmNyZXRlIHNldHRpbmdzLiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGNw
cFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNldHRp
bmdzLnRvX2EuY29sbGVjdHsKKyAgICB8IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisgICAgICAg
IiIKKyAgICAgZWxzZQorICAgICAgICIhIgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIgKyBw
YWlyWzBdCisgIH0uam9pbigiICYmICIpCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgaXNBU1RFcnJvbmVvdXMoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRlc3RzIHRvIHNl
ZSBpZiB0aGUgQVNUIGNsYWltcyB0aGF0IHRoZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUg
ICMKKyMgdXNlcidzIGNvZGUsIGFmdGVyIHNldHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBu
b2Rlcy4gICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor
ZGVmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAgbm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5Pwor
ZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGFzc2VydENvbmZpZ3Vy
YXRpb24oY29uY3JldGVTZXR0aW5ncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBFbWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdlJ3Jl
IHVzaW5nIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uLiAjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworCitkZWYgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQor
ICBwdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICBwdXRzICIjZWxzZSIK
KyAgcHV0cyAiI2Vycm9yIFwiQ29uZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAgcHV0cyAiI2Vu
ZGlmIgorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGVtaXRDb2Rl
SW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkgeyAgICAgICAg
ICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4uIH0gICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEVtaXRzIGFsbCByZWxl
dmFudCBndWFyZHMgdG8gc2VlIGlmIHRoZSBjb25maWd1cmF0aW9uIGhvbGRzIGFuZCAgICAgICMK
KyMgY2FsbHMgdGhlIGJsb2NrIGlmIHRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBlcnJvbmVvdXMu
ICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVm
IGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkK
KyAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIGlmIGlzQVNU
RXJyb25lb3VzKGFzdCkKKyAgICBwdXRzICIjZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24u
XCIiCisgIGVsc2lmIG5vdCBXT1JLSU5HX0JBQ0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICBw
dXRzICIjZXJyb3IgXCJUaGlzIGJhY2tlbmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVs
c2UKKyAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAor
ICBwdXRzICIjZW5kaWYiCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkgeyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQs
IGluZGV4IHwgLi4uIH0gICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRW1p
dHMgZ3VhcmQgY29kZXMgZm9yIGFsbCB2YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxzIHRo
ZSBibG9jayAgIworIyBmb3IgdGhvc2UgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5k
IG5vdCBlcnJvbmVvdXMuICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworCitkZWYgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkKKyAgZm9yRWFjaFZh
bGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxv
d0xldmVsQVNULCBiYWNrZW5kLCBpbmRleCB8CisgICAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29u
Y3JldGVTZXR0aW5ncykKKyAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwg
YmFja2VuZCwgaW5kZXgKKyAgICBwdXRzICIjZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNTIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMg
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgbm9kZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbnN0cnVjdCBhIG5l
dyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBJZlRoZW5FbHNlIG5vZGVzIGJ5ICAgICAgICMK
KyMgc3Vic3RpdHV0aW5nIGNvbmNyZXRlIGJvb2xlYW4gdmFsdWVzIGZvciBlYWNoIFNldHRpbmcu
ICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xh
c3MgTm9kZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG1hcENoaWxkcmVu
IHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdz
KQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZQorICBkZWYgcmVzb2x2ZVNldHRpbmdz
KHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UKKyAgZGVmIHJl
c29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFNl
dHRpbmcKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZXR0aW5nc1tAbmFt
ZV0uYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZAorICBkZWYgcmVzb2x2ZVNldHRpbmdz
KHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIGFu
ZCBAcmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAor
ZW5kCisKK2NsYXNzIE9yCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBs
ZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgb3IgQHJpZ2h0LnJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBOb3QKKyAg
ZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAobm90IEBjaGlsZC5yZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVu
RWxzZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGlmIEBwcmVkaWNhdGUu
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZQorICAgICAgQHRoZW5DYXNlLnJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbHNlCisgICAgICBAZWxzZUNhc2UucmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKQorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBk
ZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIEBsaXN0
LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGl0ZW0gPSBpdGVtLnJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykKKyAgICAgIGlmIGl0ZW0uaXNfYT8gU2VxdWVuY2UKKyAgICAgICAgbmV3TGlz
dCArPSBpdGVtLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtCisgICAg
ICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisgIGVu
ZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUuZGVtYWNy
b2lmeShtYWNyb3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgbm9kZS5zdWJzdGl0dXRlKG1hcHBpbmcpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGRlbWFjcm9pZnkoKSBjb25z
dHJ1Y3RzIGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IE1hY3JvICAgICAgICMKKyMg
bm9kZXMsIHdoaWxlIHN1YnN0aXR1dGUoKSByZXBsYWNlcyBWYXJpYWJsZSBub2RlcyB3aXRoIHRo
ZSBnaXZlbiAgICAgIworIyBub2RlcyBpbiB0aGUgbWFwcGluZy4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBtYXBD
aGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLmRlbWFjcm9pZnkobWFjcm9z
KQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG1hcENo
aWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShtYXBwaW5n
KQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAg
IG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxh
YmVscyhtYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8KKyAgZGVmIHN1
YnN0aXR1dGUobWFwcGluZykKKyAgICBteU1hcHBpbmcgPSB7fQorICAgIG1hcHBpbmcuZWFjaF9w
YWlyIHsKKyAgICAgIHwga2V5LCB2YWx1ZSB8CisgICAgICB1bmxlc3MgQHZhcmlhYmxlcy5pbmNs
dWRlPyBrZXkKKyAgICAgICAgbXlNYXBwaW5nW2tleV0gPSB2YWx1ZQorICAgICAgZW5kCisgICAg
fQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3Rp
dHV0ZShteU1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZQorICBk
ZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBp
bmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2Ns
YXNzIExvY2FsTGFiZWwKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBpZiBt
YXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgor
ICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgc3Vic3RpdHV0ZShj
b25zdGFudHMpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbXlDb25zdGFudHMgPSBjb25zdGFudHMu
ZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19h
PyBDb25zdERlY2wKKyAgICAgICAgbXlDb25zdGFudHNbaXRlbS52YXJpYWJsZV0gPSBpdGVtLnZh
bHVlLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3Qg
PDwgaXRlbS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZW5kCisgICAgfQorICAgIFNl
cXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKKyAgCisgIGRlZiByZW5hbWVM
YWJlbHMKKyAgICBtYXBwaW5nID0ge30KKyAgICAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwg
aXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAgbWFwcGluZ1tp
dGVtXSA9IExvY2FsTGFiZWwudW5pcXVlCisgICAgICBlbmQKKyAgICB9CisgICAgCisgICAgc3Vi
c3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICBlbmQKKyAgCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3Jv
cykKKyAgICBteU1hY3JvcyA9IG1hY3Jvcy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwg
aXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgIG15TWFjcm9zW2l0ZW0u
bmFtZV0gPSBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxp
c3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAg
ICAgICAjIElnbm9yZS4KKyAgICAgIGVsc2lmIGl0ZW0uaXNfYT8gTWFjcm9DYWxsCisgICAgICAg
IG1hcHBpbmcgPSB7fQorICAgICAgICBteU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisgICAgICAg
IHJhaXNlICJDb3VsZCBub3QgZmluZCBtYWNybyAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVP
cmlnaW5TdHJpbmd9IiB1bmxlc3MgbXlNYWNyb3NbaXRlbS5uYW1lXQorICAgICAgICByYWlzZSAi
QXJndW1lbnQgY291bnQgbWlzbWF0Y2ggZm9yIGNhbGwgdG8gI3tpdGVtLm5hbWV9IGF0ICN7aXRl
bS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIGl0ZW0ub3BlcmFuZHMuc2l6ZSA9PSBteU1hY3Jv
c1tpdGVtLm5hbWVdLnZhcmlhYmxlcy5zaXplCisgICAgICAgIGl0ZW0ub3BlcmFuZHMuc2l6ZS50
aW1lcyB7CisgICAgICAgICAgfCBpZHggfAorICAgICAgICAgIGlmIGl0ZW0ub3BlcmFuZHNbaWR4
XS5pc19hPyBWYXJpYWJsZSBhbmQgbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisg
ICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0u
bmFtZV0gPSBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG1h
cHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAg
ICAgICAgIGVsc2lmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBNYWNybworICAgICAgICAgICAg
bXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gaXRl
bS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0u
dmFyaWFibGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBt
eU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gbmlsCisgICAg
ICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gaXRl
bS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbmV3TGlz
dCArPSBteU1hY3Jvc1tpdGVtLm5hbWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1hY3Jv
aWZ5KG15TXlNYWNyb3MpLnJlbmFtZUxhYmVscy5saXN0CisgICAgICBlbHNlCisgICAgICAgIG5l
d0xpc3QgPDwgaXRlbS5kZW1hY3JvaWZ5KG15TWFjcm9zKQorICAgICAgZW5kCisgICAgfQorICAg
IFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KS5zdWJzdGl0dXRlKHt9KQorICBlbmQK
K2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnJlc29sdmVP
ZmZzZXRzKG9mZnNldHMsIHNpemVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGhhcyBvZmZzZXQg
dmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMgICAgICAgIworIyBvZmZzZXRzLiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZl
T2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxk
IHwKKyAgICAgIGNoaWxkLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIH0KKyAg
ZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0CisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZz
ZXRzLCBzaXplcykKKyAgICBpZiBvZmZzZXRzW3NlbGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNv
ZGVPcmlnaW4sIG9mZnNldHNbc2VsZl0pCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAor
ICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMs
IHNpemVzKQorICAgIGlmIHNpemVzW3NlbGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmln
aW4sIHNpemVzW3NlbGZdKQorICAgIGVsc2UKKyAgICAgIHB1dHMgIkNvdWxkIG5vdCBmaW5kICN7
c2VsZi5pbnNwZWN0fSBpbiAje3NpemVzLmtleXMuaW5zcGVjdH0iCisgICAgICBwdXRzICJzaXpl
cyA9ICN7c2l6ZXMuaW5zcGVjdH0iCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUuZm9sZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBSZXNvbHZlIGNvbnN0YW50IHJlZmVyZW5jZXMgYW5kIGNvbXB1dGUgYXJp
dGhtZXRpYyBleHByZXNzaW9ucy4gICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworCitjbGFzcyBOb2RlCisgIGRlZiBmb2xkCisgICAgbWFwQ2hpbGRyZW4geworICAgICAg
fCBjaGlsZCB8CisgICAgICBjaGlsZC5mb2xkCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBB
ZGRJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJp
Z2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1t
ZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAg
ICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICsgQHJpZ2h0LnZhbHVlKQor
ICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQg
PSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1
bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdo
dC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZh
bHVlIC0gQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzCisg
IGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZv
bGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0
dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3
KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICogQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitj
bGFzcyBOZWdJbW1lZGlhdGUKKyAgZGVmIGZvbGQKKyAgICBAY2hpbGQgPSBAY2hpbGQuZm9sZAor
ICAgIHJldHVybiBzZWxmIHVubGVzcyBAY2hpbGQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRp
YXRlLm5ldyhjb2RlT3JpZ2luLCAtQGNoaWxkLnZhbHVlKQorICBlbmQKK2VuZAorCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnJlc29sdmVBZnRlclNldHRpbmdzKG9m
ZnNldHMsIHNpemVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgQ29tcGlsZSBhc3NlbWJseSBhZ2FpbnN0IGEgc2V0IG9mIG9mZnNldHMuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor
Y2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZShvZmZzZXRzLCBzaXplcykKKyAgICBkZW1hY3JvaWZ5
KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykuZm9sZAorICBlbmQKK2VuZAorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY3MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
Y2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICBjYXNlIG5hbWUK
KyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0MSIsICJhMSIsICJyMSIsICJ0MiIsICJ0MyIK
KyAgICAgIHRydWUKKyAgICB3aGVuICJ0NCIsICJjZnIiCisgICAgICBmYWxzZQorICAgIGVsc2UK
KyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkK
KyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgIGNhc2Uga2lu
ZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWFsIgorICAgICAgd2hlbiA6aGFsZgorICAg
ICAgICAiJWF4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWF4IgorICAgICAgZWxzZQor
ICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAg
ICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkbCIKKyAgICAgIHdoZW4g
OmhhbGYKKyAgICAgICAgIiVkeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkeCIKKyAg
ICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQyIgorICAgICAg
Y2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlY2wiCisgICAgICB3aGVuIDpo
YWxmCisgICAgICAgICIlY3giCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlY3giCisgICAg
ICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MyIKKyAgICAgIGNh
c2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWJsIgorICAgICAgd2hlbiA6aGFs
ZgorICAgICAgICAiJWJ4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWJ4IgorICAgICAg
ZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDQiCisgICAgICBjYXNl
IGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzaWwiCisgICAgICB3aGVuIDpoYWxm
CisgICAgICAgICIlc2kiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlc2kiCisgICAgICBl
bHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJjZnIiCisgICAgICBjYXNl
IGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkaWwiCisgICAgICB3aGVuIDpoYWxm
CisgICAgICAgICIlZGkiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlZGkiCisgICAgICBl
bHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJzcCIKKyAgICAgIGNhc2Ug
a2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNwbCIKKyAgICAgIHdoZW4gOmhhbGYK
KyAgICAgICAgIiVzcCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzcCIKKyAgICAgIGVs
c2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAg
ZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFu
ZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgeDg2T3Bl
cmFuZChraW5kKQorICAgIHJhaXNlIHVubGVzcyBraW5kID09IDpkb3VibGUKKyAgICBjYXNlIG5h
bWUKKyAgICB3aGVuICJmdDAiLCAiZmEwIiwgImZyIgorICAgICAgIiV4bW0wIgorICAgIHdoZW4g
ImZ0MSIsICJmYTEiCisgICAgICAiJXhtbTEiCisgICAgd2hlbiAiZnQyIiwgImZhMiIKKyAgICAg
ICIleG1tMiIKKyAgICB3aGVuICJmdDMiLCAiZmEzIgorICAgICAgIiV4bW0zIgorICAgIHdoZW4g
ImZ0NCIKKyAgICAgICIleG1tNCIKKyAgICB3aGVuICJmdDUiCisgICAgICAiJXhtbTUiCisgICAg
ZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChr
aW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW1t
ZWRpYXRlCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiQje3ZhbHVlfSIKKyAgZW5kCisg
IGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIje3ZhbHVlfSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAor
ICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje29mZnNldC52YWx1ZX0oI3tiYXNl
Lng4Nk9wZXJhbmQoOmludCl9KSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQor
ICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4
CisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4
ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6
aW50KX0sICN7aW5kZXgueDg2T3BlcmFuZCg6aW50KX0sICN7c2NhbGV9KSIKKyAgZW5kCisKKyAg
ZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nm9wZXJhbmQoa2luZCl9IgorICBl
bmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2
CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3th
ZGRyZXNzLnZhbHVlfSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAg
Iioje2FkZHJlc3MudmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZQor
ICBkZWYgeDg2TGFiZWwKKyAgICBzYW5pdGl6ZUxhYmVsTmFtZShuYW1lKQorICBlbmQKKyAgZGVm
IHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgeDg2TGFiZWwKKyAgZW5kCitlbmQKKworY2xhc3Mg
TG9jYWxMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2TGFiZWwKKyAgICAiX19vYV8iK25hbWVbMS4u
LTFdCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICB4ODZMYWJlbAorICBl
bmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbgorICBkZWYgeDg2T3BlcmFuZHMoKmtpbmRzKQor
ICAgIHJhaXNlIHVubGVzcyBraW5kcy5zaXplID09IG9wZXJhbmRzLnNpemUKKyAgICByZXN1bHQg
PSBbXQorICAgIGtpbmRzLnNpemUudGltZXMgeworICAgICAgfCBpZHggfAorICAgICAgcmVzdWx0
IDw8IG9wZXJhbmRzW2lkeF0ueDg2T3BlcmFuZChraW5kc1tpZHhdKQorICAgIH0KKyAgICByZXN1
bHQuam9pbigiLCAiKQorICBlbmQKKworICBkZWYgeDg2U3VmZml4KGtpbmQpCisgICAgY2FzZSBr
aW5kCisgICAgd2hlbiA6Ynl0ZQorICAgICAgImIiCisgICAgd2hlbiA6aGFsZgorICAgICAgInci
CisgICAgd2hlbiA6aW50CisgICAgICAibCIKKyAgICB3aGVuIDpkb3VibGUKKyAgICAgICJzZCIK
KyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVY
ODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG51bU9wZXJhbmRzKQorICAgIGlmIG51
bU9wZXJhbmRzID09IDMKKyAgICAgIGlmIG9wZXJhbmRzWzBdID09IG9wZXJhbmRzWzJdCisgICAg
ICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQp
fSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRz
WzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQp
fSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJcdG1vdiN7eDg2U3VmZml4KGtpbmQp
fSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJh
bmQoa2luZCl9IgorICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAg
ICBlbmQKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wKG9wY29kZSwga2luZCkKKyAgICBo
YW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUpCisg
IGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNoaWZ0KG9wY29kZSwga2luZCkKKyAgICBpZiBvcGVy
YW5kc1swXS5pc19hPyBJbW1lZGlhdGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0ZXJJRC5mb3JO
YW1lKG5pbCwgInQyIikKKyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisg
ICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6aW50KX0sICVlY3giCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICVjbCwgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBoYW5kbGVYODZEb3VibGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAgIGNhc2Ug
bW9kZQorICAgIHdoZW4gOm5vcm1hbAorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpk
b3VibGUpfSIKKyAgICB3aGVuIDpyZXZlcnNlCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmRvdWJsZSl9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlIG1vZGUuaW5zcGVjdAorICAgIGVu
ZAorICAgICRhc20ucHV0cyAiXHRqbmUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgIGVuZAor
ICAKKyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmUob3Bjb2RlU3VmZml4LCBraW5kKQorICAgIGlm
IG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMF0udmFsdWUgPT0gMCBh
bmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIg
b3Igb3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3Vm
Zml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2lmIG9w
ZXJhbmRzWzFdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMCBhbmQg
b3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Ig
b3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4
KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAg
ICRhc20ucHV0cyAiXHRjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKGtpbmQpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50QnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAg
ICBoYW5kbGVYODZJbnRDb21wYXJlKGJyYW5jaE9wY29kZVsxLi4tMV0sIGtpbmQpCisgICAgJGFz
bS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgZW5k
CisgIAorICBkZWYgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZCkKKyAgICBpZiBvcGVy
YW5kLnN1cHBvcnRzOEJpdE9uWDg2CisgICAgICAkYXNtLnB1dHMgIlx0I3tzZXRPcGNvZGV9ICN7
b3BlcmFuZC54ODZPcGVyYW5kKDpieXRlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJsICN7
b3BlcmFuZC54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQo
OmludCl9LCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJcdCN7c2V0T3Bjb2RlfSAlYWwiCisgICAg
ICAkYXNtLnB1dHMgIlx0bW92emJsICVhbCwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hn
bCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmVTZXQoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRs
ZVg4NkludENvbXBhcmUoc2V0T3Bjb2RlWzMuLi0xXSwga2luZCkKKyAgICBoYW5kbGVYODZTZXQo
c2V0T3Bjb2RlLCBvcGVyYW5kc1syXSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2VGVzdChr
aW5kKQorICAgIHZhbHVlID0gb3BlcmFuZHNbMF0KKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAg
ICB3aGVuIDIKKyAgICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAg
IHdoZW4gMworICAgICAgbWFzayA9IG9wZXJhbmRzWzFdCisgICAgZWxzZQorICAgICAgcmFpc2Ug
IkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5kcywgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7
Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAgaWYgbWFzay5pc19hPyBJbW1l
ZGlhdGUgYW5kIG1hc2sudmFsdWUgPT0gLTEKKyAgICAgIGlmIHZhbHVlLmlzX2E/IFJlZ2lzdGVy
SUQKKyAgICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3t2YWx1ZS54
ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2UK
KyAgICAgICAgJGFzbS5wdXRzICJcdGNtcCN7eDg2U3VmZml4KGtpbmQpfSAkMCwgI3t2YWx1ZS54
ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAi
XHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7bWFzay54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1
ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2
QnJhbmNoVGVzdChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQor
ICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kcy5sYXN0Lng4NkxhYmVs
fSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0VGVzdChzZXRPcGNvZGUsIGtpbmQpCisg
ICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJh
bmRzLmxhc3QpCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wQnJhbmNoKG9wY29kZSwgYnJh
bmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwg
a2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hl
biA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1
bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVj
dAorICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0
Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9w
Y29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5kcy5zaXplID09IDQgYW5kIG9wZXJhbmRzWzFdID09
IG9wZXJhbmRzWzJdCisgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNl
CisgICAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcygic3ViI3t4ODZTdWZmaXgoa2luZCl9
Iiwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgZW5kCisgICAgY2FzZSBvcGVyYW5kcy5z
aXplCisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVu
IDMKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNl
IHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0g
I3tqdW1wVGFyZ2V0Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgbG93ZXJYODYKKyAgICAk
YXNtLmNvbW1lbnQgY29kZU9yaWdpblN0cmluZworICAgIGNhc2Ugb3Bjb2RlCisgICAgd2hlbiAi
YWRkaSIsICJhZGRwIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sw
XS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/
IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lz
dGVySUQKKyAgICAgICAgaWYgb3BlcmFuZHNbMF0udmFsdWUgPT0gMAorICAgICAgICAgIHVubGVz
cyBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgJGFzbS5wdXRzICJcdG1v
dmwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICRhc20u
cHV0cyAiXHRsZWFsICN7b3BlcmFuZHNbMF0udmFsdWV9KCN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICBlbmQK
KyAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVn
aXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJ
RAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAg
ICAgICAkYXNtLnB1dHMgIlx0bGVhbCAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwg
MCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje3g4Nk9wZXJh
bmRzKDppbnQsIDppbnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbmQKKyAgICB3aGVuICJhbmRp
IiwgImFuZHAiCisgICAgICBoYW5kbGVYODZPcCgiYW5kbCIsIDppbnQpCisgICAgd2hlbiAibHNo
aWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYWxsIiwgOmludCkKKyAgICB3aGVuICJtdWxp
IgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1l
ZGlhdGUKKyAgICAgICAgJGFzbS5wdXRzICJcdGltdWxsICN7eDg2T3BlcmFuZHMoOmludCwgOmlu
dCwgOmludCl9IgorICAgICAgZWxzZQorICAgICAgICBoYW5kbGVYODZPcCgiaW11bGwiLCA6aW50
KQorICAgICAgZW5kCisgICAgd2hlbiAibmVnaSIKKyAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7
eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm5vdGkiCisgICAgICAkYXNtLnB1dHMgIlx0
bm90bCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAg
aGFuZGxlWDg2T3AoIm9ybCIsIDppbnQpCisgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgIGhhbmRs
ZVg4NlNoaWZ0KCJzYXJsIiwgOmludCkKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgIGhhbmRs
ZVg4NlNoaWZ0KCJzaHJsIiwgOmludCkKKyAgICB3aGVuICJzdWJpIiwgInN1YnAiCisgICAgICBp
ZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAg
ICAgICRhc20ucHV0cyAiXHRuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0s
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIGhh
bmRsZVg4Nk9wKCJzdWJsIiwgOmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gInhvcmkiLCAieG9y
cCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJ4b3JsIiwgOmludCkKKyAgICB3aGVuICJsb2FkaSIsICJz
dG9yZWkiLCAibG9hZHAiLCAic3RvcmVwIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZP
cGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNtLnB1dHMg
Ilx0bW92emJsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImxvYWRoIgorICAgICAgJGFzbS5wdXRzICJc
dG1vdnp3bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJzdG9yZWIiCisgICAgICAkYXNtLnB1dHMgIlx0
bW92YiAje3g4Nk9wZXJhbmRzKDpieXRlLCA6Ynl0ZSl9IgorICAgIHdoZW4gImxvYWRkIiwgIm1v
dmVkIiwgInN0b3JlZCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAje3g4Nk9wZXJhbmRzKDpk
b3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJhZGRkIgorICAgICAgJGFzbS5wdXRzICJcdGFk
ZHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImRpdmQiCisg
ICAgICAkYXNtLnB1dHMgIlx0ZGl2c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0i
CisgICAgd2hlbiAic3ViZCIKKyAgICAgICRhc20ucHV0cyAiXHRzdWJzZCAje3g4Nk9wZXJhbmRz
KDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJtdWxkIgorICAgICAgJGFzbS5wdXRzICJc
dG11bHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInNxcnRk
IgorICAgICAgJGFzbS5wdXRzICJcdHNxcnRzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImNp
MmQiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJi
ZGVxIgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZQorICAgICAgJGFzbS5w
dXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje0xh
YmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkueDg2TGFiZWx9IgorICAg
ICAgJGFzbS5wdXRzICJcdGplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIG9wZXJh
bmRzWzJdKS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICB3
aGVuICJiZG5lcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiam5lIiwgOm5vcm1hbCkK
KyAgICB3aGVuICJiZGd0IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpub3Jt
YWwpCisgICAgd2hlbiAiYmRndGVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYWUi
LCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHQiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2go
ImphIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdGVxIgorICAgICAgaGFuZGxlWDg2RG91Ymxl
QnJhbmNoKCJqYWUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGVxdW4iCisgICAgICBoYW5kbGVY
ODZEb3VibGVCcmFuY2goImplIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZG5lcXVuIgorICAgICAg
aXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZQorICAgICAgaXNFcXVhbCA9IExvY2FsTGFi
ZWwudW5pcXVlCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAg
ICAgJGFzbS5wdXRzICJcdGpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5v
cmRlcmVkKS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tMYWJlbFJlZmVyZW5j
ZS5uZXcoY29kZU9yaWdpbiwgaXNFcXVhbCkueDg2TGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQu
bG93ZXIoIlg4NiIpCisgICAgICAkYXNtLnB1dHMgIlx0am1wICN7b3BlcmFuZHNbMl0ueDg2TGFi
ZWx9IgorICAgICAgaXNFcXVhbC5sb3dlcigiWDg2IikKKyAgICB3aGVuICJiZGd0dW4iCisgICAg
ICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRndGVx
dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpyZXZlcnNlKQorICAgIHdo
ZW4gImJkbHR1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6bm9ybWFsKQor
ICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6
bm9ybWFsKQorICAgIHdoZW4gImJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHRzZDJzaSAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGNtcGwgJDB4ODAwMDAwMDAgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje29wZXJhbmRz
WzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHRz
ZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJjZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2
dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdHRlc3RsICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgICAkYXNtLnB1dHMgIlx0amUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICAkYXNt
LnB1dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTci
CisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje29wZXJhbmRzWzJdLng4Nkxh
YmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqbmUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisg
ICAgd2hlbiAibW92ZHoiCisgICAgICAkYXNtLnB1dHMgIlx0eG9ycGQgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIK
KyAgICB3aGVuICJwb3AiCisgICAgICAkYXNtLnB1dHMgIlx0cG9wICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicHVzaCIKKyAgICAgICRhc20ucHV0cyAiXHRwdXNo
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibW92ZSIsICJzeGky
cCIsICJ6eGkycCIKKyAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1sw
XSBhbmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgIlx0
eG9ybCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMF0gIT0gb3BlcmFuZHNbMV0KKyAg
ICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAg
ICBlbmQKKyAgICB3aGVuICJub3AiCisgICAgICAkYXNtLnB1dHMgIlx0bm9wIgorICAgIHdoZW4g
ImJpZXEiLCAiYnBlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6aW50KQorICAg
IHdoZW4gImJpbmVxIiwgImJwbmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6
aW50KQorICAgIHdoZW4gImJpYSIsICJicGEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImph
IiwgOmludCkKKyAgICB3aGVuICJiaWFlcSIsICJicGFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamFlIiwgOmludCkKKyAgICB3aGVuICJiaWIiLCAiYnBiIgorICAgICAgaGFuZGxlWDg2
SW50QnJhbmNoKCJqYiIsIDppbnQpCisgICAgd2hlbiAiYmliZXEiLCAiYnBiZXEiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDppbnQpCisgICAgd2hlbiAiYmlndCIsICJicGd0Igor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDppbnQpCisgICAgd2hlbiAiYmlndGVxIiwg
ImJwZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmludCkKKyAgICB3aGVu
ICJiaWx0IiwgImJwbHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwgOmludCkKKyAg
ICB3aGVuICJiaWx0ZXEiLCAiYnBsdGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbGUi
LCA6aW50KQorICAgIHdoZW4gImJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwg
OmJ5dGUpCisgICAgd2hlbiAiYmJuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIs
IDpieXRlKQorICAgIHdoZW4gImJiYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6
Ynl0ZSkKKyAgICB3aGVuICJiYmFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwg
OmJ5dGUpCisgICAgd2hlbiAiYmJiIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDpi
eXRlKQorICAgIHdoZW4gImJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6
Ynl0ZSkKKyAgICB3aGVuICJiYmd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDpi
eXRlKQorICAgIHdoZW4gImJiZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwg
OmJ5dGUpCisgICAgd2hlbiAiYmJsdCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6
Ynl0ZSkKKyAgICB3aGVuICJiYmx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsdGVx
IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRpbyIsICJidHBvIgorICAgICAgaGFuZGxlWDg2QnJhbmNo
VGVzdCgiam8iLCA6aW50KQorICAgIHdoZW4gImJ0aXMiLCAiYnRwcyIKKyAgICAgIGhhbmRsZVg4
NkJyYW5jaFRlc3QoImpzIiwgOmludCkKKyAgICB3aGVuICJidGl6IiwgImJ0cHoiCisgICAgICBo
YW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDppbnQpCisgICAgd2hlbiAiYnRpbnoiLCAiYnRwbnoi
CisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6aW50KQorICAgIHdoZW4gImJ0Ym8i
CisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpieXRlKQorICAgIHdoZW4gImJ0YnMi
CisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDpieXRlKQorICAgIHdoZW4gImJ0Ynoi
CisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDpieXRlKQorICAgIHdoZW4gImJ0Ym56
IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmJ5dGUpCisgICAgd2hlbiAiam1w
IgorICAgICAgJGFzbS5wdXRzICJcdGptcCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDpp
bnQpfSIKKyAgICB3aGVuICJiYWRkaW8iLCAiYmFkZHBvIgorICAgICAgaGFuZGxlWDg2T3BCcmFu
Y2goImFkZGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJhZGRpcyIsICJiYWRkcHMiCisgICAg
ICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYmFkZGl6
IiwgImJhZGRweiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImp6IiwgOmludCkK
KyAgICB3aGVuICJiYWRkaW56IiwgImJhZGRwbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgi
YWRkbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbyIKKyAgICAgIGhhbmRsZVg4NlN1
YkJyYW5jaCgiam8iLCA6aW50KQorICAgIHdoZW4gImJzdWJpcyIKKyAgICAgIGhhbmRsZVg4NlN1
YkJyYW5jaCgianMiLCA6aW50KQorICAgIHdoZW4gImJzdWJpeiIKKyAgICAgIGhhbmRsZVg4NlN1
YkJyYW5jaCgianoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbnoiCisgICAgICBoYW5kbGVYODZT
dWJCcmFuY2goImpueiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlvIgorICAgICAgaGFuZGxlWDg2
T3BCcmFuY2goImltdWxsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJibXVsaXMiCisgICAgICBo
YW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJtdWxpeiIK
KyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAi
Ym11bGlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbnoiLCA6aW50KQor
ICAgIHdoZW4gImJvcmlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqbyIsIDpp
bnQpCisgICAgd2hlbiAiYm9yaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpz
IiwgOmludCkKKyAgICB3aGVuICJib3JpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwi
LCAianoiLCA6aW50KQorICAgIHdoZW4gImJvcmlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNo
KCJvcmwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJicmVhayIKKyAgICAgICRhc20ucHV0cyAi
XHRpbnQgJDMiCisgICAgd2hlbiAiY2FsbCIKKyAgICAgICRhc20ucHV0cyAiXHRjYWxsICN7b3Bl
cmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInJldCIKKyAgICAgICRh
c20ucHV0cyAiXHRyZXQiCisgICAgd2hlbiAiY2llcSIsICJjcGVxIgorICAgICAgaGFuZGxlWDg2
SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQpCisgICAgd2hlbiAiY2luZXEiLCAiY3BuZXEiCisg
ICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRuZSIsIDppbnQpCisgICAgd2hlbiAiY2lh
IiwgImNwYSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGEiLCA6aW50KQorICAg
IHdoZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
YWUiLCA6aW50KQorICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAgICBoYW5kbGVYODZJbnRDb21w
YXJlU2V0KCJzZXRiIiwgOmludCkKKyAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAgIGhh
bmRsZVg4NkludENvbXBhcmVTZXQoInNldGJlIiwgOmludCkKKyAgICB3aGVuICJjaWd0IiwgImNw
Z3QiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnIiwgOmludCkKKyAgICB3aGVu
ICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0Z2Ui
LCA6aW50KQorICAgIHdoZW4gImNpbHQiLCAiY3BsdCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBh
cmVTZXQoInNldGwiLCA6aW50KQorICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiCisgICAgICBo
YW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisgICAgd2hlbiAidGlvIgorICAg
ICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQpCisgICAgd2hlbiAidGlzIgorICAgICAg
aGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDppbnQpCisgICAgd2hlbiAidGl6IgorICAgICAgaGFu
ZGxlWDg2U2V0VGVzdCgic2V0eiIsIDppbnQpCisgICAgd2hlbiAidGlueiIKKyAgICAgIGhhbmRs
ZVg4NlNldFRlc3QoInNldG56IiwgOmludCkKKyAgICB3aGVuICJ0Ym8iCisgICAgICBoYW5kbGVY
ODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgd2hlbiAidGJzIgorICAgICAgaGFuZGxlWDg2
U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAgIHdoZW4gInRieiIKKyAgICAgIGhhbmRsZVg4NlNl
dFRlc3QoInNldHoiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ym56IgorICAgICAgaGFuZGxlWDg2U2V0
VGVzdCgic2V0bnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJwZWVrIgorICAgICAgJGFzbS5wdXRzICJc
dG1vdmwgI3tvcGVyYW5kc1swXS52YWx1ZSAqIDR9KCVlc3ApLCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgIHdoZW4gInBva2UiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLnZhbHVlICogNH0o
JWVzcCkiCisgICAgd2hlbiAiY2RxaSIKKyAgICAgICRhc20ucHV0cyAiXHRjZHEiCisgICAgd2hl
biAiaWRpdmkiCisgICAgICAkYXNtLnB1dHMgIlx0aWRpdmwgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICB3aGVuICJmaWkyZCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZkICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwc2xscSAkMzIsICV4bW03Igor
ICAgICAgJGFzbS5wdXRzICJcdHBvciAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpk
b3VibGUpfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cHNybHEgJDMyLCAleG1tNyIK
KyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiQmFkIG9wY29kZTogI3tvcGNvZGV9Igor
ICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisjZGVm
aW5lIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsK
KworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAj
ZGVmaW5lIENvbW1vblNsb3dQYXRoc19oCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNs
dWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVy
cy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKIApAQCAtNDEsNiArNDIsMzggQEAgbmFtZXNwYWNl
IEpTQyB7CiAKIG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMgewogCitBTFdBWVNfSU5MSU5FIEV4
ZWNTdGF0ZSogYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyRmlsZSogcmVn
aXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5jdGlv
biogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgQVNTRVJUKCFjYWxs
ZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOworICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNh
bGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKCk7CisKKyAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29y
c3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4K
KyAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhleGVjLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVy
cykpCisgICAgICAgIHJldHVybiAwOworCisgICAgQVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworCisgICAgLy8gVG9vIGZl
dyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1lIGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBp
biBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5lZC4KKyAgICBzaXplX3QgZGVsdGEgPSBu
ZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
OworICAgIFJlZ2lzdGVyKiBzcmMgPSBleGVjLT5yZWdpc3RlcnMoKTsKKyAgICBSZWdpc3Rlciog
ZHN0ID0gZXhlYy0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKKworICAgIGludCBpOworICAgIGludCBl
bmQgPSAtRXhlY1N0YXRlOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwor
ICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBzcmNbaV07
CisKKyAgICBlbmQgLT0gZGVsdGE7CisgICAgZm9yICggOyBpID49IGVuZDsgLS1pKQorICAgICAg
ICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOworCisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gRXhl
Y1N0YXRlOjpjcmVhdGUoZHN0KTsKKyAgICBBU1NFUlQoKHZvaWQqKW5ld0V4ZWMgPD0gcmVnaXN0
ZXJGaWxlLT5lbmQoKSk7CisgICAgcmV0dXJuIG5ld0V4ZWM7Cit9CisKIEFMV0FZU19JTkxJTkUg
Ym9vbCBvcEluc3RhbmNlT2ZTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNW
YWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3RvKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNDZWxs
KCkgfHwgIWJhc2VWYWwuaXNDZWxsKCkgfHwgIXByb3RvLmlzQ2VsbCgpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMTA0Nzg3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5o
IgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgorI2luY2x1
ZGUgIkV4ZWN1dGlvbkhhcm5lc3MuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVRE
cml2ZXIuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKQEAgLTg0LDcgKzg1LDcgQEAgSW50cmluc2lj
IE5hdGl2ZUV4ZWN1dGFibGU6OmludHJpbnNpYygpIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0
YXRpYyB2b2lkIGpldHRpc29uQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3du
UHRyPFQ+JiBjb2RlQmxvY2spCiB7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgp
ICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6
aW5nSklUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+
YWx0ZXJuYXRpdmUoKSk7CiAgICAgT3duUHRyPFQ+IGNvZGVCbG9ja1RvSmV0dGlzb24gPSBjb2Rl
QmxvY2sucmVsZWFzZSgpOwogICAgIGNvZGVCbG9jayA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8VD4o
Y29kZUJsb2NrVG9KZXR0aXNvbi0+cmVsZWFzZUFsdGVybmF0aXZlKCkpOwpAQCAtMTY3LDkgKzE2
OCwzMCBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpbWl6CiAgICAgcmV0
dXJuIGVycm9yOwogfQogCit2b2lkIEV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGV4
ZWMsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGll
ckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKworaW5saW5l
IGNvbnN0IGNoYXIqIHNhbXBsaW5nRGVzY3JpcHRpb24oSklUQ29kZTo6SklUVHlwZSBqaXRUeXBl
KQoreworICAgIHN3aXRjaCAoaml0VHlwZSkgeworICAgIGNhc2UgSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuazoKKyAgICAgICAgcmV0dXJuICJJbnRlcnByZXRlciBDb21waWxhdGlvbiAoVE9UQUwp
IjsKKyAgICBjYXNlIEpJVENvZGU6OkJhc2VsaW5lSklUOgorICAgICAgICByZXR1cm4gIkJhc2Vs
aW5lIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6REZHSklUOgorICAg
ICAgICByZXR1cm4gIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBkZWZhdWx0OgorICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQor
CiBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4
ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRU
eXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklU
Q29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZH
IENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lv
bihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkK
ICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC0yMTAsNyArMjMyLDcgQEAgSlNPYmplY3Qq
IEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQp
Ci0gICAgaWYgKCFqaXRDb21waWxlSWZBcHByb3ByaWF0ZShleGVjLCBtX2V2YWxDb2RlQmxvY2ss
IG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlv
bihleGVjLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAg
ICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC0yOTUsOSArMzE3LDE1IEBAIEpTT2JqZWN0KiBQ
cm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGkKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3Zv
aWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBpbGUoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZXhlYywgbV9wcm9ncmFtQ29k
ZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCiBKU09iamVjdCogUHJvZ3JhbUV4
ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBs
aW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQg
PyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RB
TCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0
aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0o
aml0VHlwZSk7CkBAIC0zMzYsNyArMzY0LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxl
Ojpjb21waWxlSW50ZQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21w
aWxlSWZBcHByb3ByaWF0ZShleGVjLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNh
bGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbihleGVjLCBtX3Byb2dy
YW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAgICAgICByZXR1cm4g
MDsKICNlbmRpZgogCkBAIC00MTIsNyArNDQwLDcgQEAgRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6YgogICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAg
ICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4ocmVzdWx0LT5hbHRl
cm5hdGl2ZSgpKTsKICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICBBU1NFUlQocmVzdWx0LT5nZXRK
SVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjpp
c0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgIHJldHVybiByZXN1bHQ7
CiB9CiAKQEAgLTQzOCw2ICs0NjYsMTggQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29tcGlsZU9wdAogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBGdW5jdGlvbkV4ZWN1dGFi
bGU6OmppdENvbXBpbGVGb3JDYWxsKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBib29sIHJlc3Vs
dCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYywgbV9jb2RlQmxvY2tGb3JD
YWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1f
c3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21w
aWxlRm9yQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBib29sIHJlc3VsdCA9IGpp
dENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYywgbV9jb2RlQmxvY2tGb3JDb25zdHJ1
Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5
Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5j
dGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja1dpdGhCeXRlY29kZUZvcihDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpCiB7CiAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2Vs
aW5lQ29kZUJsb2NrRm9yKGtpbmQpOwpAQCAtNDgyLDcgKzUyMiw3IEBAIFBhc3NPd25QdHI8RnVu
Y3Rpb25Db2RlQmxvY2s+IEZ1bmN0aW9uRXgKIAogSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBs
aW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQg
PyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RB
TCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0
aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CkBAIC01MDQsNyArNTQ0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNhbGwtPnNoYXJl
ZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1
bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZv
ckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0
VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYywgbV9jb2Rl
QmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5
Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENvZGVGb3JDYWxsKSkKICAgICAgICAgcmV0
dXJuIDA7CiAjZW5kaWYKIApAQCAtNTI0LDcgKzU2NCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvbXBpbGVGb3IKIAogSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29t
cGlsZUZvckNvbnN0cnVjdEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUq
IHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxp
bmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/
ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFM
KSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRp
b24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShq
aXRUeXBlKTsKQEAgLTU0Niw3ICs1ODYsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxl
Ojpjb21waWxlRm9yCiAgICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0
LT5zaGFyZWRTeW1ib2xUYWJsZSgpOwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENv
bXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYywgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Qs
IG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hl
Y2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9y
RXhlY3V0aW9uKGV4ZWMsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25z
dHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxl
LCBqaXRUeXBlLCBDb2RlRm9yQ29uc3RydWN0KSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2
aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEV4ZWN1dGFibGVf
aAogCiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25L
aW5kLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTM5LDEyICs0MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBjbGFzcyBEZWJ1Z2dlcjsKICAgICBjbGFzcyBFdmFsQ29kZUJsb2NrOwogICAgIGNsYXNz
IEZ1bmN0aW9uQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwogCiAg
ICAgc3RydWN0IEV4Y2VwdGlvbkluZm87CiAgICAgCi0gICAgZW51bSBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKICAgICBlbnVtIENvbXBp
bGF0aW9uS2luZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21waWxhdGlvbiB9Owog
CiAgICAgaW5saW5lIGJvb2wgaXNDYWxsKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAg
LTMxOSw2ICszMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgRXZh
bEV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVm
IFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtMzM4LDYgKzM0MCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0
aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlKEV4ZWNT
dGF0ZSopOwogI2VuZGlmCiAKICAgICAgICAgRXZhbENvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNv
ZGUoKQpAQCAtMzg0LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBj
bGFzcyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC00MTEsNiArNDE1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQg
amV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENv
bXBpbGUoRXhlY1N0YXRlKik7CiAjZW5kaWYKIAogICAgICAgICBQcm9ncmFtQ29kZUJsb2NrJiBn
ZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC00NTMsNiArNDU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1
dGFibGUgQmFzZTsKIApAQCAtNTA4LDYgKzUxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZv
ckNhbGwoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNhbGwoRXhl
Y1N0YXRlKik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ2FsbCgpIGNv
bnN0CkBAIC01MzUsNiArNTQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVO
QUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0
KEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoRXhl
Y1N0YXRlKik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ29uc3RydWN0
KCkgY29uc3QKQEAgLTU4Miw2ICs1OTAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICAgICAgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdENvbXBpbGVG
b3IoRXhlY1N0YXRlKiBleGVjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAgICAg
ICAgaml0Q29tcGlsZUZvckNhbGwoZXhlYyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7
CisgICAgICAgICAgICBqaXRDb21waWxlRm9yQ29uc3RydWN0KGV4ZWMpOworICAgICAgICB9CiAj
ZW5kaWYKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3IoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0aW9uSGFybmVzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3
MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIEV4ZWN1dGlvbkhhcm5lc3NfaAorI2RlZmluZSBFeGVjdXRpb25IYXJuZXNzX2gKKworI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkpJ
VERyaXZlci5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+CitpbmxpbmUgYm9vbCBwcmVw
YXJlRm9yRXhlY3V0aW9uKEV4ZWNTdGF0ZSogZXhlYywgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBj
b2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5
cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVy
LgorICAgICAgICBMTEludDo6Z2V0RW50cnlwb2ludChleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVC
bG9jay5nZXQoKSwgaml0Q29kZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRp
ZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGV4
ZWMsIGNvZGVCbG9jaywgaml0Q29kZSwgaml0VHlwZSk7Cit9CisKK2lubGluZSBib29sIHByZXBh
cmVGdW5jdGlvbkZvckV4ZWN1dGlvbihFeGVjU3RhdGUqIGV4ZWMsIE93blB0cjxGdW5jdGlvbkNv
ZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFi
bGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUo
aml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJw
cmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBraW5kLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShraW5kKTsKKyNlbmRp
ZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9w
cmlhdGUoZXhlYywgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIHN5
bWJvbFRhYmxlLCBqaXRUeXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8gRXhlY3V0aW9uSGFybmVzc19oCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEwNDc4NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpA
QCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5Owor
ICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHN0cnVjdCBTcGFyc2VBcnJh
eUVudHJ5IDogcHVibGljIFdyaXRlQmFycmllcjxVbmtub3duPiB7CiAgICAgICAgIHR5cGVkZWYg
V3JpdGVCYXJyaWVyPFVua25vd24+IEJhc2U7CkBAIC0xMjQsNiArMTI1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkg
KzM2LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0Owot
ICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAg
ICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5
OworICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsKICAg
ICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywKQEAgLTE2NCw2ICsxNjUsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3Jp
cHRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0lu
Zm87CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAgIH07
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZp
c2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgSlNBY3RpdmF0aW9uOwogICAgIGNs
YXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgbmFt
ZXNwYWNlIERGRyB7CkBAIC0xNDAsNiArMTQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgICAgIAogICAgICAgICBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAK
ICAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFs
dWUsIGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTQxLDYgKzE0MSw4IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAK
ICAgICAsIGtleXdvcmRzKGFkb3B0UHRyKG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRl
cnByZXRlcigwKQogICAgICwgaGVhcCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFz
c0luZm8oJkpTQXJyYXk6OnNfaW5mbykKKyAgICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpT
RmluYWxPYmplY3Q6OnNfaW5mbykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxh
c3RTY3JhdGNoQnVmZmVyKDApCiAjZW5kaWYKQEAgLTIxOCw3ICsyMjAsNyBAQCBKU0dsb2JhbERh
dGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihu
ZXcgSklUVGh1bmtzKHRoaXMpKTsKICNlbmRpZgogCi0gICAgaW50ZXJwcmV0ZXItPmluaXRpYWxp
emUodGhpcy0+Y2FuVXNlSklUKCkpOworICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKCZsbGlu
dERhdGEsIHRoaXMtPmNhblVzZUpJVCgpKTsKIAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xs
ZWN0KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNiBAQAogI2Rl
ZmluZSBKU0dsb2JhbERhdGFfaAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5j
dGlvbi5oIgotI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNh
Y2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhlYXAu
aCIKLSNpbmNsdWRlICJTdHJvbmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRl
ICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludERhdGEu
aCIKICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5o
IgorI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRl
ICJUaW1lb3V0Q2hlY2tlci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYgKzY2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xh
c3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2Vy
QXJlbmE7CiAgICAgY2xhc3MgUmVnRXhwQ2FjaGU7CkBAIC0yNDgsNiArMjUwLDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRp
b247CisKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOwor
ICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CisK
KyAgICAgICAgTExJbnQ6OkRhdGEgbGxpbnREYXRhOworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAg
ICAgUmV0dXJuQWRkcmVzc1B0ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBo
b3N0Q2FsbFJldHVyblZhbHVlOwpAQCAtMzUyLDYgKzM2MCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
I3VuZGVmIHJlZ2lzdGVyVHlwZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAg
SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsK
ICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsK
ICAgICAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDQ3ODcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0
aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxD
b2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5h
dGl2ZUVycm9yQ29uc3RydWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBj
bGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKQEAgLTMzNSw2ICszMzYsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyosIGlu
dCBjb3VudCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVzZXQgaW50
byBpbml0LgogICAgICAgICB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CiAgICAgICAg
IHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBI
YXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgY2xhc3MgUHJvcGVy
dHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwpAQCAtMjU5LDYgKzI2
MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7CiAKICAgICBwcml2YXRl
OgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAK
ICAgICAgICAgLy8gTm9ib2R5IHNob3VsZCBldmVyIGFzayBhbnkgb2YgdGhlc2UgcXVlc3Rpb25z
IG9uIHNvbWV0aGluZyBhbHJlYWR5IGtub3duIHRvIGJlIGEgSlNPYmplY3QuCiAgICAgICAgIHVz
aW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXI7CiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNH
ZXR0ZXJTZXR0ZXI7CkBAIC0zNzAsNiArMzczLDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxP
YmplY3RfaW5saW5lU3RvcgogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0IEpTRmluYWxPYmplY3QoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgICAgIDogSlNPYmpl
Y3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAg
Y2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAg
Y2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBm
cmllbmQgY2xhc3MgSklUOwpAQCAtOTYsNiArOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVf
dCBudW1DYWNoZWFibGVTbG90KTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBKU1N0cmluZzsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKICAg
ICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsKQEAgLTI0MSw2ICsyNDIsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgcmVzb2x2ZVJv
cGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZTgo
TENoYXIqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFyKikg
Y29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5o
CShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNlcyBN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkIHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJsZS4K
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8PCAx
OwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEgPDwg
MjsKQEAgLTg3LDYgKzg5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHBy
aXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
ICAgIAogICAgICAgICBib29sIGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3QgeyBB
U1NFUlQoZmxhZyA8PSAoMSA8PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAgICAg
ICBib29sIGlzU2V0T25GbGFnczIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+
PSAoMSA8PCA4KSk7IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJl
dmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFi
bGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEyIEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFJl
Z2lzdGVyOwogCiAgICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBK
U05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDEwIEBAIHVu
c2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGkKIAogdW5zaWduZWQgbWF4aW11
bUlubGluaW5nRGVwdGg7CiAKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0
ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1l
U29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogaW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkBAIC0xMzYs
NiArMTQwLDEwIEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIAogICAgIFNFVChtYXhp
bXVtSW5saW5pbmdEZXB0aCwgNSk7CiAKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
SklUQWZ0ZXJXYXJtVXAsICAgICAtMTAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yRG9udEpJVEFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4o
KSk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb24sICAgICAgICAgICAg
LTEwMCk7CisKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldh
cm1VcCwgICAgIC0xMDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1p
emVBZnRlckxvbmdXYXJtVXAsIC01MDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yRG9udE9wdGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1pbigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJl
dmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTAgQEAgZXh0ZXJuIHVuc2lnbmVkIG1heGlt
dW1GdW5jdGlvbkZvckNvbnN0cgogCiBleHRlcm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVw
dGg7IC8vIERlcHRoIG9mIGlubGluZSBzdGFjaywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25l
IGxldmVsLCBldGMuCiAKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJ
VEFmdGVyV2FybVVwOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9u
dEpJVEFueXRpbWVTb29uOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
SklUU29vbjsKKwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1p
emVBZnRlcldhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9w
dGltaXplQWZ0ZXJMb25nV2FybVVwOwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYg
KzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNs
YXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAgY2xh
c3MgU2xvdFZpc2l0b3I7CiAgICAgCkBAIC05MSw2ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9
IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2
ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5
TmFtZUFycmF5RGF0YTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKQEAgLTE5Niw2ICsxOTcs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3Qg
Q2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUlu
Zm8mLCBjb25zdCBDbGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYp
OwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJ
KHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU3Ry
dWN0dXJlOwogCiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlNDZWxsIHsKQEAg
LTc0LDYgKzc1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAog
ICAgICAgICBTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3duQXJyYXlQdHI8V3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTE2LDYgKzkxNiwxMiBAQAogI2Rl
ZmluZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCisvKiBPbiBzb21lIG9mIHRoZSBwbGF0Zm9ybXMg
d2hlcmUgd2UgaGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNvIGhhdmUgdGhlIAorICAgbG93LWxl
dmVsIGludGVycHJldGVyLiAqLworI2lmIEVOQUJMRShKSVQpICYmIFBMQVRGT1JNKE1BQykgJiYg
VVNFKEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyNlbmRpZgorCiAjaWYg
IWRlZmluZWQoRU5BQkxFX0RGR19KSVQpICYmIEVOQUJMRShKSVQpCiAvKiBFbmFibGUgdGhlIERG
RyBKSVQgb24gWDg2IGFuZCBYODZfNjQuICBPbmx5IHRlc3RlZCBvbiBNYWMgYW5kIEdOVS9MaW51
eC4gKi8KICNpZiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpICYmIChQTEFURk9STShNQUMpIHx8
IE9TKExJTlVYKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCB0eXBlZGVm
IGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpCiAvLyBMYW5kaW5nIHRoZSBmaWxlIG1v
dmVzIGluIG9uZSBwYXRjaCwgd2lsbCBmb2xsb3cgb24gd2l0aCBwYXRjaGVzIHRvIGNoYW5nZSB0
aGUgbmFtZXNwYWNlcy4KIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IElkZW50aWZpZXJDU3RyaW5n
VHJhbnNsYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPiBzdHJ1Y3QgSWRlbnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yOwogc3RydWN0IElk
ZW50aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5zbGF0b3I7CiB9CkBAIC03MCw3ICs3MSw4IEBAIGNs
YXNzIFN0cmluZ0ltcGwgewogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kVVRGOENoYXJh
Y3RlcnNUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZlclRyYW5z
bGF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7Ci0KKyAgICBmcmllbmQg
Y2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiBwcml2YXRlOgogICAgIGVu
dW0gQnVmZmVyT3duZXJzaGlwIHsKICAgICAgICAgQnVmZmVySW50ZXJuYWwsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122310</attachid>
            <date>2012-01-12 14:24:45 -0800</date>
            <delta_ts>2012-01-12 22:55:11 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_15.diff</filename>
            <type>text/plain</type>
            <size>393691</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyMSBA
QAorMjAxMi0wMS0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV09SSyBJTiBQUk9HUkVTUy4gIEl0IGNhbiBydW4gc2ltcGxlIHByb2dyYW1zIGJ1
dCBvdGhlcndpc2Ugc3RpbGwgbmVlZHMKKyAgICAgICAgc29tZSBsb3ZlLgorICAgICAgICAKKyAg
ICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBjYWxs
aW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExMSW50
LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAgd2ls
bCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIgdXAg
dG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4KKyAg
ICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9mIG91
ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMgY29t
cGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gKKyAg
ICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1cmlu
Zy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVjdCBh
Y2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2ljYWxs
eSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAgICAg
ICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJlc3Qg
b2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGluIHRo
ZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAorICAg
ICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWlyZSBw
cmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorCisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJv
bmdSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtDYWxscyk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxscyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29k
ZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmpldHRpc29u
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAg
KEpTQzo6UHJvZ3JhbUNvZGVCbG9jazo6aml0Q29tcGlsZSk6CisgICAgICAgIChKU0M6OkV2YWxD
b2RlQmxvY2s6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6
aml0Q29tcGlsZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5n
T3Bwb3J0dW5pdHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omhhc09wdGltaXplZFJlcGxh
Y2VtZW50KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRMTEludENhbGxMaW5rSW5mbyk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkRnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6ZG9udEpJVEFueXRpbWVTb29uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpqaXRBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0U29v
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGxpbnRFeGVjdXRlQ291bnRlcik6CisgICAg
ICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246
Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OkxMSW50Q2FsbExpbmtJbmZv
KToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6
CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChK
U0M6OkxMSW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29k
ZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdERpcmVjdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENhbGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gpOgorICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAgICAg
KiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y3VycmVu
dFZQQyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6fkludGVycHJldGVyKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6aXNPcGNvZGUpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZSk6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGVJRCk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjplbmFibGVkKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3RlckZp
bGUuaDoKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSk6CisgICAgICAg
ICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaDogQWRkZWQuCisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoSlND
OjpKSVRDb2RlOjppc09wdGltaXppbmdKSVQpOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjppc0Jh
c2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAgICAgICAq
IGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUp
OgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToKKyAgICAg
ICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93KToKKyAg
ICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5D
VElPTik6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgICogbGxpbnQ6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50Q29tbW9uLmg6IEFkZGVkLgorICAgICAgICAq
IGxsaW50L0xMSW50RGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6
RGF0YSk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjp+RGF0YSk6CisgICAgICAgICogbGxp
bnQvTExJbnREYXRhLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6ZXhjZXB0
aW9uSW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6Om9wY29kZU1hcCk6
CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpMTEludDo6Z2V0RnVuY3Rpb25FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldEV2YWxFbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldFByb2dyYW1FbnRy
eXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnRzLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpMTEludDo6Z2V0RW50cnlwb2ludCk6CisgICAgICAgICogbGxpbnQvTExJbnRF
eGNlcHRpb25zLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjppbnRlcnByZXRlclRo
cm93KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRp
b24pOgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuVG9UaHJvdyk6CisgICAgICAgIChKU0M6
OkxMSW50OjpjYWxsVG9UaHJvdyk6CisgICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50SGVscGVycy5jcHA6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpMTEludDo6bGxpbnRfdHJhY2Vfb3BlcmFuZCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpsbGludF90cmFjZV92YWx1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9IRUxQRVJf
REVDTCk6CisgICAgICAgIChKU0M6OkxMSW50Ojp0cmFjZUZ1bmN0aW9uUHJvbG9ndWUpOgorICAg
ICAgICAoSlNDOjpMTEludDo6c2hvdWxkSklUKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5
VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6
CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50
L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRPZmZzZXRzRXh0
cmFjdG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBsbGludC9MTEludFRo
dW5rcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhK
dW1wVG8pOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5
VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJp
dHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9y
Q29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnByb2dyYW1F
bnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5oOiBBZGRl
ZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTog
QWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICog
b2ZmbGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZs
aW5lYXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJi
OiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAg
ICAgICogb2ZmbGluZWFzbS9zZXR0aW5ncy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFz
bS90cmFuc2Zvcm0ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaDogQWRkZWQuCisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9u
U2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUu
Y3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2
YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6c2FtcGxpbmdEZXNjcmlw
dGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6CisgICAgICAgIChK
U0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbCk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKToKKyAg
ICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGlvbkhhcm5l
c3MuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnByZXBhcmVGb3JFeGVjdXRpb24pOgorICAgICAg
ICAoSlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRp
b25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6Cisg
ICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorCiAyMDEyLTAx
LTExICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBbGxvdyBhY2Nlc3NvciBnZXQvc2V0IHByb3BlcnR5IHRvIGJlIHNldCB0byB1bmRlZmluZWQK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lv
biAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQko
d29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDExLCAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAs
NiArNjAsNyBAQCBhbGwgOiBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAogICAgIFN0
cmluZ1Byb3RvdHlwZS5sdXQuaCBcCiAgICAgZG9jcy9ieXRlY29kZS5odG1sIFwKKyAgICBMTElu
dEFzc2VtYmx5LmguUEhPTlkgXAogIwogCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNzZXMKQEAg
LTEwNCwzICsxMDUsMTEgQEAgSGVhZGVyRGV0ZWN0aW9uLmggOgogCWVjaG8gPiAkQAogCiBlbmRp
ZgorCisjIEFzc2VtYmx5IGZvciB0aGUgTG93TGV2ZWxJbnRlcnByZXRlcgorCisjIFRoaXMgYnVp
bGRzIGV2ZXJ5IHRpbWUgYmVjYXVzZSB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBkZXNjcmliZQor
IyB0aGUgZGVwZW5kZW5jaWVzIHVzaW5nIG1ha2UuIEluc3RlYWQsIHRoZSBhc3NlbWJsZXIgd2ls
bCBkZWNpZGUgb24KKyMgaXRzIG93biB3aGV0aGVyIG9yIG5vdCBpdCBkaWQgYW55dGhpbmcgdGhh
dCB3b3VsZCBsZWFkIHRvIGEgY2hhbmdlLgorTExJbnRBc3NlbWJseS5oLlBIT05ZOgorCXJ1Ynkg
JChKYXZhU2NyaXB0Q29yZSkvb2ZmbGluZWFzbS9hc20ucmIgJChKYXZhU2NyaXB0Q29yZSkvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJChCVUlMVF9QUk9EVUNUU19ESVIpL0pTQ0xMSW50
T2Zmc2V0c0V4dHJhY3RvciA+IExMSW50QXNzZW1ibHkuaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC03LDYgKzcsMTUgQEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJn
ZXQgc2VjdGlvbiAqLworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJh
dGlvbkxpc3QgPSAwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovOworCQkJYnVp
bGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERl
cml2ZWQgU291cmNlcyAqLywKKwkJCSk7CisJCQluYW1lID0gIkxMSW50IE9mZnNldHMiOworCQkJ
cHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKIAkJNjVGQjNGNjYwOUQxMUU5
MTAwRjQ5REVCIC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEFnZ3JlZ2F0
ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2NUZCM0Y3NzA5RDExRUJEMDBG
NDlERUIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQg
IkRlcml2ZWQgU291cmNlcyIgKi87CkBAIC0xNCw2ICsyMyw5IEBACiAJCQkJNjVGQjNGNjUwOUQx
MUU5MTAwRjQ5REVCIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk1RDM1REVF
MTBDN0MxNDBCMDA4NjQ4QjIgLyogR2VuZXJhdGUgRFRyYWNlIGhlYWRlciAqLywKIAkJCSk7CisJ
CQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8sCisJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwog
CQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJfTsKQEAgLTQ4LDYgKzYwLDEw
IEBACiAJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkFD
OTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCQ0Q4MzU3MTQ4
NTg0NTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1w
b3JhcnlDaGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwQkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMz
MDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4
NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5
cG9pbnRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50
cnlwb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgzOUMxNEJDRjQ2
MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5r
cy5jcHAgKi87IH07CisJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTgx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENv
ZGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYg
LyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0FCMTRCQ0Y1
QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhw
cmVzc2lvblJhbmdlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC01OCw5ICs3NCwxMyBAQAogCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYg
LyogTWV0aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJ
bmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCNjE0QkNGOERGMDA4
ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJu
T2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxM
aW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNUYxNUYxNEI3QTcz
RTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNs
b3dQYXRocy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGMTZENzI2MTQyQzM5QzAwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3
ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAv
KiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3QzE0QkU3Mjc2MDBB
REM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhh
cm5lc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNzkxNEJF
NzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2
NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29u
dmVudGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjI0MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNDJEQTUx
M0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU2RjE0NzM4RjMxMDAx
MjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3Mu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJD
NTU3MDE0NzM4RjM1MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYg
LyogREZHQ29kZUJsb2Nrcy5jcHAgKi87IH07CkBAIC03MSw2ICs5MSwxOSBAQAogCQkwRjQzMTcz
ODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyog
TGlzdGFibGVIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDgwMTRC
QTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJ
VEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovOyB9
OworCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RTE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50
SGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLzsgc2V0dGlu
Z3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby11bnVzZWQtcGFyYW1ldGVyIjsgfTsgfTsKKwkJ
MEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi87
IH07CisJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUQxNEJB
N0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MENBMTRC
QkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29t
bW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzYxNEJCQjE2
OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAv
KiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVy
cHJldGVyLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVs
SW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDIx
NEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnRE
YXRhLmNwcCAqLzsgfTsKKwkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0Yx
NEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0
Q2FsbFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVl
LmNwcCAqLzsgfTsKKwkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJu
VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1RjA4Q0YxNDZDNzYz
MzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBV
bmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAxNzQxNDNGQ0QzMzAwNjhCNzdDIC8qIERGR1ZhcmlhYmxl
QWNjZXNzRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY2MjAxNzIxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjIwMTc1
MTQzRkNEMzcwMDY4Qjc3QyAvKiBERkdPcGVyYW5kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MjAxNzExNDNGQ0QyRjAwNjhCNzdDIC8qIERGR09w
ZXJhbmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTM3MSw3ICs0MDQsNyBAQAogCQk4NkI5OUFFMzExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5n
QnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkI5OUFFMTExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZCQjA5QzAxMzhFMzgxQjAwNTY3
MDJGIC8qIERGR1JlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZCQjA5QkUxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwICov
OyB9OwogCQk4NkJCMDlDMTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkYxMzhFMzgxQjAw
NTY3MDJGIC8qIERGR1JlcGF0Y2guaCAqLzsgfTsKLQkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5
IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAq
LzsgfTsKKwkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEy
ODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFj
cm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZDNTY4REQxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNw
cCAqLzsgfTsKIAkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQ
Uy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4
REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwogCQk4NkM1
NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8q
IE1JUFNBc3NlbWJsZXIuaCAqLzsgfTsKQEAgLTczMSw2ICs3NjQsMjAgQEAKIC8qIEVuZCBQQlhC
dWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2Vj
dGlvbiAqLworCQkwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVBy
b3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVy
UG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwor
CQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwQTkxNEJB
N0ZEOTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9ICJMTEludCBPZmZzZXRzIjsKKwkJfTsKKwkJ
MEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsK
KwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4
NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlw
ZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3
MjsKKwkJCXJlbW90ZUluZm8gPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCX07CiAJCTE0
MTIxNEJFMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3
RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC03NzYsNiArODIz
LDE1IEBACiAvKiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhEMTRCQTdFNUUw
MEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBo
YXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAvdXNy
L3NoYXJlL21hbi9tYW4xLzsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMgPSAo
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCX07
CiAJCTVEQkIxNTExMTMxRDBCMTMwMDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0g
ewogCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDEyOwpAQCAtODE2LDYgKzg3MiwxMCBAQAogCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyog
VGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYXJ5Q2hhbmdlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGlt
aXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpemVMaW1pdHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBMTEludEVudHJ5cG9pbnRzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2lu
dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NjE0QkNGNDVBMDA4
ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBMTEludEVudHJ5cG9pbnRzLmg7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludFRodW5rcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBM
TEludFRodW5rcy5jcHA7IHBhdGggPSBsbGludC9MTEludFRodW5rcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5r
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludFRodW5rcy5oOyBwYXRo
ID0gbGxpbnQvTExJbnRUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYw
QjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvZGVUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIYW5kbGVySW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHByZXNzaW9uUmFuZ2VJbmZvLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjYsOSArODg2LDEzIEBACiAJCTBGMEI4M0Iz
MTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWV0aG9kQ2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbG9iYWxSZXNvbHZlSW5mby5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYg
LyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50
Q2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50Q2Fs
bExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTVGMTVEMTRCN0E3
M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29tbW9uU2xvd1BhdGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQml0VmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVREcml2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXph
dGlvbktpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3QTE0QkU3
MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFeGVjdXRpb25IYXJuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVudGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBERkdDb2RlQmxvY2tzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9j
a3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODM5LDYgKzkwMywyMCBAQAogCQkwRjQzMTcz
NjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExpc3RhYmxlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRFeGNlcHRpb25zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJ
VEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURXhjZXB0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA4RjE0QkE3RTVFMDBC
RkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBp
bmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTExJbnRFeGNlcHRpb25zLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TExJbnRFeGNlcHRpb25zLmg7IHBhdGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50
SGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEhl
bHBlcnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEhlbHBlcnMuaDsgcGF0aCA9
IGxsaW50L0xMSW50SGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7
IHBhdGggPSBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRDb21tb24uaDsgcGF0aCA9IGxs
aW50L0xMSW50Q29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM2
MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHBhdGggPSBsbGlu
dC9MTEludE9mZmxpbmVBc21Db25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7
IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRl
ci5oOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RGF0YS5jcHA7IHBhdGgg
PSBsbGludC9MTEludERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExMSW50RGF0YS5oOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0
Q2FsbFJldHVyblZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENDMTQ2QkU2MDIwMDA0NzJBOSAvKiBERkdCeXRl
Q29kZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0J5dGVDb2Rl
Q2FjaGUuaDsgcGF0aCA9IGRmZy9ERkdCeXRlQ29kZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmlu
YWxpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2MjAxNkQxNDNGQ0Qy
RjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHQWJzdHJhY3RTdGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHQWJzdHJh
Y3RTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQwLDYgKzE2MTgs
MTMgQEAKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUy
NzIgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNl
OworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEy
MTExRTBBNDg3OTNDMDA0ODAyNTUgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEZy
YW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAg
LTE1OTgsNiArMTY4Myw3IEBACiAJCQkJMTQxMjExMjAwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlk
b20gKi8sCiAJCQkJMTRCRDU5QkYwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJ
NjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEYx
NEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKIAkJCSk7CiAJ
CQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTYyNiw2
ICsxNzEyLDcgQEAKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENv
cmVQcmVmaXguaCAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAq
LywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8sCisJCQkJMEY0
NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovLAogCQkJCTE0MzJFQkQ3MEEzNENBRDQw
MDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2Vt
YmxlciAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8sCkBA
IC0xNjY0LDYgKzE3NTEsMjggQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsK
IAkJfTsKKwkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8sCisJCQkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1
QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLywKKwkJCQkwRjBCODM5NzE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRUaHVua3MuY3BwICovLAorCQkJCTBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludFRodW5rcy5oICovLAorCQkJCTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTElu
dERhdGEuY3BwICovLAorCQkJCTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEu
aCAqLywKKwkJCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLywK
KwkJCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgg
Ki8sCisJCQkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIu
Y3BwICovLAorCQkJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJl
dGVyLmggKi8sCisJCQkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5jcHAgKi8sCisJCQkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5oICovLAorCQkJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3Bw
ICovLAorCQkJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLywK
KwkJCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cCAqLywKKwkJCSk7CisJCQluYW1lID0gbGxpbnQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OwogCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAyNTUgLyogdGVzdHMgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTY5Niw2ICsxODA1LDggQEAKIAkJ
MTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RD
YWxsUmV0dXJuVmFsdWUuY3BwICovLAorCQkJCTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBI
b3N0Q2FsbFJldHVyblZhbHVlLmggKi8sCiAJCQkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8q
IEpJVEV4Y2VwdGlvbnMuY3BwICovLAogCQkJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBK
SVRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEZEODJFMzcxNDFBQjE0MjAwMTc5Qzk0IC8qIENvbXBh
Y3RKSVRDb2RlTWFwLmggKi8sCkBAIC0yMTE4LDYgKzIyMjksOCBAQAogCQk3RUY2RTBCQjBFQjdB
MUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXph
dGlvbktpbmQuaCAqLywKKwkJCQkwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9u
SGFybmVzcy5oICovLAogCQkJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93
UGF0aHMuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAg
Ki8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAqLywKQEAgLTI0
NzcsNiArMjU5MCw4IEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYyMUMyN0Ux
NEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLywKKwkJCQkwRjBGQzQ1
ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKIAkJCQkwRjBCODNC
ODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAq
LywKIAkJCQkwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAq
LywKIAkJCQkwRjBCODNCMjE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmNw
cCAqLywKQEAgLTMwMTUsNyArMzEzMCwxNiBAQAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3
QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCNDMxMkRCOEE4MTAw
QTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1
RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50
Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyog
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDRDE0QkJC
MTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9p
bnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAv
KiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRG
IC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4
ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDI0LDEz
ICszMTQ4LDM1IEBACiAJCQkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxM
aW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8q
IEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCOTE0QkNGOTVG
MDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1
dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0
QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3
RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CiAvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhO
YXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlND
TExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0Owor
CQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MDhCMTRCQTdF
NUUwMEJGRTI3MiAvKiBTb3VyY2VzICovLAorCQkJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAv
KiBGcmFtZXdvcmtzICovLAorCQkJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5Rmls
ZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMg
PSAoCisJCQkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kg
Ki8sCisJCQkpOworCQkJbmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1
Y3ROYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9
IDBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87
CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9Owog
CQkxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLyA9IHsKIAkJCWlzYSA9IFBC
WE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDEyMTEzOTBBNDg3
OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgIm1pbmlkb20iICovOwpAQCAtMzE1NywxMSArMzMwMywyOSBAQAogCQkJCTE0QkQ1OUJFMEEz
RThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTkzMkY1QkRBMDgyMkExQzcwMDczNjk3
NSAvKiBqc2MgKi8sCiAJCQkJNjUxMTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAg
Ki8sCisJCQkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJh
Y3RvciAqLywKKwkJCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAq
LywKIAkJCSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MEFBMTRCQTdGRDkw
MEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhT
aGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owor
CQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9s
bGludC9Mb3dMZXZlbEFzc2VtYmxlci5hc20iLAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUg
RGVyaXZlZCBTb3VyY2VzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RV
Q1RTX0RJUikvTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaCIsCisJCQkpOworCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAv
YmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJ
Un0vTExJbnRPZmZzZXRzL1wiXG5cbi91c3IvYmluL2VudiBydWJ5IFwiJHtTUkNST09UfS9vZmZs
aW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmJcIiA8IFwiJHtTUkNST09UfS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbVwiID4gXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJ
bnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaFwiXG4iOworCQl9OwogCQkzNzEzRjAxNDE0
MjkwNTI0MDAzNjM4N0YgLyogQ2hlY2sgRm9yIEluYXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xh
c3MgTmFtZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzMwMiw2ICszNDY2LDE0IEBACiAvKiBF
bmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291
cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyog
U291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGNDY4MEE3MTRCQTdG
QTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJ
CTE0MTIxMTFEMEE0ODc5M0MwMDQ4MDI1NSAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJY
U291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAt
MzU1OSw3ICszNzMxLDE0IEBACiAJCQkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJK
SVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3
QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0
QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
NDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50
ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcy
IC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBENDE0QkJEMjQ5MDBC
RkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBC
ODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYwQjgzQjAxNEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBCODNCNDE0QkNGODYwMDA4ODVCNEYgLyogTWV0aG9k
Q2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKQEAgLTM1NzYsNiArMzc1NSwx
NiBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
UEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3
MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5k
ZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZz
ZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMzE0QkE4MjE0MDBCRkUy
NzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQkxNDEyMTRCRjBBNDkxOTBF
MDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWlu
aWRvbSAqLzsKQEAgLTM2MDksNiArMzc5OCwxNDggQEAKIC8qIEVuZCBQQlhUYXJnZXREZXBlbmRl
bmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAq
LworCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NF
QVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9C
SVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RB
TkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5B
QkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0g
MDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIs
CisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9F
WFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5j
bGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJ
CQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5f
QUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0g
WUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJ
CQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJ
IiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRf
VEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gWUVTOworCQkJCVBST0RVQ1Rf
TkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VS
X0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50
T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7
CisJCX07CisJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFM
V0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRB
UkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZP
Uk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9T
VEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOwor
CQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJ
CQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FC
T1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5f
VFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhF
QURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJ
IiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
IiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJP
RFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJ
CVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
TExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBS
ZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJD
SFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlE
RUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19M
QU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05T
ID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5n
LjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdD
Q19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9V
VF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7
CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWlj
dSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChI
RUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJH
RVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsK
KwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2ODA5OTE0QkE3RTVFMDBC
RkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBO
TzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhB
U0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdp
dGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0Nf
RU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBs
ZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NP
TlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZ
RVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5f
VU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0i
ID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJ
bnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJ
TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChU
QVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VB
UkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChI
RUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07
CisJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05B
TUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJ
fTsKKwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVD
VF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFz
ZTsKKwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUg
PSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0
aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9
OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1
NSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVp
bGRTZXR0aW5ncyA9IHsKQEAgLTM4NTAsNiArNDE4MSwyOCBAQAogLyogRW5kIFhDQnVpbGRDb25m
aWd1cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0
aW9uICovCisJCTBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLyA9
IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25z
ID0gKAorCQkJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2
ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODA5ODE0QkE3RTVF
MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAv
KiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxl
ID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJ
CTBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0Nv
bmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODBB
RDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZF
MjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2Zp
bGluZyAqLywKKwkJCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywK
KwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0
Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEzOTBBNDg3OTg0
MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQg
Im1pbmlkb20iICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxk
Q29uZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcg
QEAKICNkZWZpbmUgRFVNUF9MSU5LX1NUQVRJU1RJQ1MgMAogI2RlZmluZSBEVU1QX0NPREUgMAog
Ci0jaW5jbHVkZSA8TWFjcm9Bc3NlbWJsZXIuaD4KKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5o
IgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVu
dGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCeXRlY29k
ZUNvbnZlbnRpb25zX2gKKyNkZWZpbmUgQnl0ZWNvZGVDb252ZW50aW9uc19oCisKKy8vIFJlZ2lz
dGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1l
YW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKKy8vICAgICAgMHg4MDAwMDAwMC0weEZG
RkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBl
bnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCisvLyAgICAgIDB4
MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUg
cG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24n
cyBjYWxsZnJhbWUuCisvLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5k
aWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29s
IG9uIHRoZSBDb2RlQmxvY2suCitzdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4ID0gMHg0MDAwMDAwMDsKKworI2VuZGlmIC8vIEJ5dGVjb2RlQ29udmVudGlvbnNfaAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAko
cmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgogI2luY2x1ZGUgIkpT
VmFsdWUuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiUmVw
YXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUg
PHN0ZGlvLmg+CkBAIC04OTAsNiArODkxLDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNT
dGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDogeworICAg
ICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAgICAgICAgcHJp
bnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF9nZW5lcmljOiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2Nh
dGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0x
NDQ5LDYgKzE0NTgsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcs
CiB7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1QYXJhbWV0ZXJzKCkpOwogICAgIG9w
dGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogICAgIAogICAgIGlm
IChvdGhlci5tX3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nhcnko
KTsKQEAgLTE0OTcsNiArMTUwNyw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1
dGFibGUqIG8KICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIAogICAgIG9wdGltaXplQWZ0ZXJX
YXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogCiAjaWYgRFVNUF9DT0RFX0JMT0NLX1NU
QVRJU1RJQ1MKICAgICBsaXZlQ29kZUJsb2NrU2V0LmFkZCh0aGlzKTsKQEAgLTE1MTQsNyArMTUy
NSwxMSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2lmIEVOQUJMRShWRVJCT1NFX1ZBTFVF
X1BST0ZJTEUpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNlbmRpZgotICAgIAorCisjaWYg
RU5BQkxFKExMSU5UKSAgICAKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4o
KSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50
Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogI2lmIEVO
QUJMRShKSVQpCiAgICAgLy8gV2UgbWF5IGJlIGRlc3Ryb3llZCBiZWZvcmUgYW55IENvZGVCbG9j
a3MgdGhhdCByZWZlciB0byB1cyBhcmUgZGVzdHJveWVkLgogICAgIC8vIENvbnNpZGVyIHRoYXQg
dHdvIENvZGVCbG9ja3MgYmVjb21lIHVucmVhY2hhYmxlIGF0IHRoZSBzYW1lIHRpbWUuIFRoZXJl
CkBAIC0xNzI2LDggKzE3NDEsNTUgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRp
b25hbGx5KAogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5saW5raW5nID0g
ZmFsc2U7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgCisjaWYg
RU5BQkxFKExMSU5UKQorICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFsRGF0
YS0+aW50ZXJwcmV0ZXI7CisgICAgaWYgKCFpbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAg
ICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUo
KSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJ
bnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25z
W2ldXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cklu
c3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgeworICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6
CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgICAgICAgICBpZiAoSGVh
cDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51
LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzVdLnUu
b3BlcmFuZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtl
ZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgICAgICAg
ICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCkp
CisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzdd
LnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAg
ICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAg
ICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOwor
ICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlID0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZShvcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAg
ICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVtt
X2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgQVNTRVJUKGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3BfcmVz
b2x2ZV9nbG9iYWwKKyAgICAgICAgICAgICAgICAgICB8fCBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFt
aWMpOworICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzNdLnUu
c3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBjdXJJ
bnN0cnVjdGlvbls0XS51Lm9wZXJhbmQgPSAwOworICAgICAgICB9CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhlYXA6
OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgcHJp
bnRmKCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAg
ICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKICNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2UgYXJlLCB0aGVuIGpl
dHRpc29uLgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdT
Y2FuKCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7CkBAIC0xODQ4LDEw
ICsxOTEwLDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXIKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7ICsraSkKICAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAjaWYgRU5BQkxFKElO
VEVSUFJFVEVSKQotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0
dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9u
c1tpXV0pOwotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlv
bnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVz
KHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1d
KTsKKyAgICBpZiAobV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAg
ICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUo
KSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlz
aXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsK
KyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5z
aXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVz
KHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1d
KTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMjA2MCw2ICsyMTI0
LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiB7CiAgICAgaWYgKCEhbV9hbHRl
cm5hdGl2ZSkKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+dW5saW5rQ2FsbHMoKTsKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZv
cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5mb3NbaV0uaXNM
aW5rZWQoKSkKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOwor
ICAgIH0KKyNlbmRpZgogICAgIGlmICghKG1fY2FsbExpbmtJbmZvcy5zaXplKCkgfHwgbV9tZXRo
b2RDYWxsTGlua0luZm9zLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fZ2xv
YmFsRGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0yMDc0LDEwICsyMTQ0LDM1IEBAIHZvaWQgQ29kZUJs
b2NrOjp1bmxpbmtDYWxscygpCiAKIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxz
KCkKIHsKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29t
aW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4o
KS0+dW5saW5rKCk7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRoaXMpOwogICAg
IHdoaWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2FsbHMuZW5kKCkp
CiAgICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigpLT51bmxpbmsoKm1fZ2xvYmFsRGF0YSwg
cmVwYXRjaEJ1ZmZlcik7CiB9CisKK3Vuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQo
RXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit7CisjaWYg
RU5BQkxFKExMSU5UKQorICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0gYml0d2lzZV9j
YXN0PHZvaWQqPigmbGxpbnRfYmVnaW4pCisgICAgICAgICYmIHJldHVybkFkZHJlc3MudmFsdWUo
KSA8PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQpKSB7CisgICAgICAgIEFTU0VSVChl
eGVjLT5jb2RlQmxvY2soKSk7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSA9PSB0
aGlzKTsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUo
KSkpOworICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBleGVjLT5jdXJyZW50VlBD
KCk7CisgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbik7CisgICAgICAgIHJldHVybiBieXRlY29k
ZU9mZnNldChpbnN0cnVjdGlvbik7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CisjZW5kaWYKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiAxOworICAg
IFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0g
bV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7CisgICAgaWYgKCFjYWxsSW5kaWNl
cy5zaXplKCkpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q2Fs
bFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zm
c2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJVENvZGUo
KS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7Cit9CiAj
ZW5kaWYKIAogdm9pZCBDb2RlQmxvY2s6OmNsZWFyRXZhbENhY2hlKCkKQEAgLTIxNzMsMjQgKzIy
NjgsNDUgQEAgYm9vbCBGdW5jdGlvbkNvZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERgogCiB2b2lk
IFByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgp
ICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6
aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkp
OwogICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkp
LT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRXZhbENv
ZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0
SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3Rh
dGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0
aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6
amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxp
bmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgp
KSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8
RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXpl
ZENvZGVGb3IoKmdsb2JhbERhdGEoKSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVj
dCA6IENvZGVGb3JDYWxsKTsKIH0KKwordm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxl
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwor
ICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5q
aXRDb21waWxlKGV4ZWMpOworfQorCit2b2lkIEV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGUoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50
ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAg
c3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBp
bGUoZXhlYyk7Cit9CisKK3ZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgc3Rh
dGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21w
aWxlRm9yKGV4ZWMsIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9y
Q2FsbCk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEwNDc4
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBDb2RlQmxvY2tfaAogI2RlZmluZSBD
b2RlQmxvY2tfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUg
IkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zm
c2V0LmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgpAQCAtNTAsNiArNTEsNyBAQAogI2luY2x1
ZGUgIkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKICNpbmNs
dWRlICJMaW5lSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUHJlZGljdGlv
blRyYWNrZXIuaCIKQEAgLTY1LDE2ICs2NywxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCi0vLyBSZWdpc3RlciBudW1iZXJzIHVz
ZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGlu
ZyB0byB0aGVpciByYW5nZXM6Ci0vLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRp
dmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUg
Y2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgotLy8gICAgICAweDAwMDAwMDAwLTB4M0ZG
RkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxv
Y2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgot
Ly8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQw
MDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJs
b2NrLgotc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAw
MDAwMDA7Ci0KIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNs
YXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGlubGluZSBpbnQgdW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKGludCBhcmd1bWVudHNSZWdpc3RlcikgeyByZXR1cm4gYXJndW1lbnRzUmVnaXN0ZXIg
LSAxOyB9CiAKQEAgLTgzLDYgKzgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29k
ZUJsb2NrIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIsIHB1YmxpYyBXZWFrUmVmZXJl
bmNlSGFydmVzdGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENvcHlQYXJzZWRCbG9ja1RhZyB7IENv
cHlQYXJzZWRCbG9jayB9OwogICAgIHByb3RlY3RlZDoKQEAgLTEyMyw3ICsxMjEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5hbHRlcm5hdGl2ZSgpOwogICAgICAgICAg
ICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBl
KCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6
OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAjZW5kaWYKQEAgLTE5NCwxNSArMTkyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9kQ2FsbExp
bmtJbmZvLCB1bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4obV9t
ZXRob2RDYWxsTGlua0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCks
IGJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAg
ICAgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGlj
ZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKLSAgICAgICAgICAgIGlm
ICghY2FsbEluZGljZXMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAg
ICAgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNl
dCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNh
bGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFs
dWUoKSkpLT5ieXRlY29kZU9mZnNldDsKLSAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldChFeGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAgICAgICB1bnNp
Z25lZCBieXRlY29kZU9mZnNldEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgICAg
ICB7CkBAIC0yMjMsMTEgKzIxMywxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAg
ICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwogICAgICAgICB9CisjaWYg
RU5BQkxFKExMSU5UKQorICAgICAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoTExJbnRDYWxsTGlu
a0luZm8qIGluY29taW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2luY29taW5nTExJbnRD
YWxscy5wdXNoKGluY29taW5nKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkK
ICAgICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5rSW5jb21pbmdDYWxscygpOwotI2VuZGlmCisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShE
RkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIHZvaWQgc2V0SklUQ29kZU1hcChQYXNz
T3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBqaXRDb2RlTWFwKQogICAgICAgICB7CiAgICAgICAg
ICAgICBtX2ppdENvZGVNYXAgPSBqaXRDb2RlTWFwOwpAQCAtMjM2LDcgKzIzMiw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9qaXRDb2RlTWFwLmdl
dCgpOwogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgCisjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgICAgIHZvaWQgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCEhbV9kZmdEYXRhKQpAQCAtMzM1LDEyICszMzMsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAg
ICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJldHVybkFkZHJlc3MgPj0gaW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zKCkuZW5kKCkpOwogICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykg
LSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgICB2
b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5j
dGlvbikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5j
dGlvbjsgfQogICAgICAgICBib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbigpIHsgcmV0dXJu
IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CkBAIC0zNTYsMTAgKzM1MywxNCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2Fy
ZGluZ09wcG9ydHVuaXR5KCkKICAgICAgICAgeworI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5H
KSAmJiAhRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgaWYgKEJ5dGVjb2RlR2VuZXJhdG9yOjpk
dW1wc0dlbmVyYXRlZENvZGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICBpZiAoISFhbHRlcm5hdGl2ZSgpKQogICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZSgp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZUxhdGVy
KCk7CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICAKICNpZm5kZWYgTkRFQlVHCkBAIC0zODcs
MTcgKzM4OCwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY3V0YWJsZU1lbW9yeUhh
bmRsZSogZXhlY3V0YWJsZU1lbW9yeSgpIHsgcmV0dXJuIGdldEpJVENvZGUoKS5nZXRFeGVjdXRh
YmxlTWVtb3J5KCk7IH0KICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXpl
ZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IGpldHRpc29uKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZShFeGVjU3Rh
dGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpID0gMDsK
ICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCkgPSAwOwogICAgICAgICBi
b29sIGhhc09wdGltaXplZFJlcGxhY2VtZW50KCkKICAgICAgICAgewotICAgICAgICAgICAgQVNT
RVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBB
U1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAg
ICBib29sIHJlc3VsdCA9IHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA+IGdldEpJVFR5cGUo
KTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICAgICBpZiAocmVzdWx0KQogICAgICAg
ICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6
REZHSklUKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChyZXBs
YWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAg
ICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXBsYWNlbWVudCgpLT5n
ZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKSA9PSB0
aGlzKTsKICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtNDU2LDcgKzQ1OCw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHZvaWQgY2xlYXJFdmFsQ2FjaGUoKTsKIAotI2lmIEVOQUJMRShJ
TlRFUlBSRVRFUikKICAgICAgICAgdm9pZCBhZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKHVu
c2lnbmVkIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKQEAgLTQ2OCw2ICs0NjksMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25z
LmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAgICAgIGJv
b2wgaGFzR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBMTEludENhbGxMaW5r
SW5mbyogYWRkTExJbnRDYWxsTGlua0luZm8oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xs
aW50Q2FsbExpbmtJbmZvcy5hcHBlbmQoTExJbnRDYWxsTGlua0luZm8oKSk7CisgICAgICAgICAg
ICByZXR1cm4gJm1fbGxpbnRDYWxsTGlua0luZm9zLmxhc3QoKTsKKyAgICAgICAgfQogI2VuZGlm
CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBzZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJ
bmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZvcy5ncm93KHNpemUpOyB9CkBA
IC02NzIsNyArNjc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29s
IGFkZEZyZXF1ZW50RXhpdFNpdGUoY29uc3QgREZHOjpGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJh
c2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShn
ZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBtX2V4aXRQcm9maWxlLmFkZChzaXRl
KTsKICAgICAgICAgfQogCkBAIC03NzcsNiArNzg0LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbShDb2RlQmxvY2sqIGFsdGVybmF0aXZlKTsK
ICAgICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgICAg
ICAKKyAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIEpJVHRpbmcga2lj
a3MgaW4sIGluIGEgbWl4ZWQgbW9kZQorICAgICAgICAvLyBleGVjdXRpb24gd29ybGQuCisgICAg
ICAgIAorICAgICAgICB2b2lkIGRvbnRKSVRBbnl0aW1lU29vbigpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
dm9pZCBqaXRBZnRlcldhcm1VcCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVj
dXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2Fy
bVVwOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdFNvb24oKQorICAgICAg
ICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBp
bnQzMl90IGxsaW50RXhlY3V0ZUNvdW50ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICB9CisgICAgICAgIAogICAg
ICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gdGllcmVkIGNvbXBpbGF0aW9u
IGtpY2tzIGluLiBUaGlzCiAgICAgICAgIC8vIGNvbnRyb2xzIGJvdGggd2hlbiB0aGUgb3B0aW1p
emluZyBjb21waWxlciBpcyBpbnZva2VkIGFuZCB3aGVuIE9TUgogICAgICAgICAvLyBlbnRyeSBo
YXBwZW5zLiBUd28gdHJpZ2dlcnMgZXhpc3Q6IHRoZSBsb29wIHRyaWdnZXIgYW5kIHRoZSByZXR1
cm4KQEAgLTEwNTIsOSArMTA4MiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZz
ZXQ7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4g
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBt
X2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBT
ZWdtZW50ZWRWZWN0b3I8TExJbnRDYWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxsTGlua0luZm9z
OworICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3
U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdMTEludENhbGxzOwog
I2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZv
PiBtX3N0cnVjdHVyZVN0dWJJbmZvczsKQEAgLTEwNjUsOSArMTA5NywxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNo
ZWNrOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1Nl
bnRpbmVsTm9kZTxDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2VuZGlmCi0jaWYg
RU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAg
ICAgICAgT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAgICAgIAor
I2VuZGlmCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFrUmVmZXJlbmNl
VHJhbnNpdGlvbiB7CiAgICAgICAgICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigpIHsgfQog
ICAgICAgICAgICAgCkBAIC0xMTMwLDEyICsxMTYzLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIE93blB0cjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAgIAorICAgICAg
ICBpbnQzMl90IG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAgICAgIGludDMy
X3QgbV9qaXRFeGVjdXRlQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZVN1
Y2Nlc3NDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFpbENvdW50ZXI7
CiAgICAgICAgIHVpbnQ4X3QgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAgICAgIHVp
bnQ4X3QgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKLQorICAgICAgICAKICAgICAgICAg
c3RydWN0IFJhcmVEYXRhIHsKICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgICAgIHB1YmxpYzoKQEAgLTEyMDgsNiArMTI0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChF
eGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlz
b24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGUoRXhlY1N0YXRlKik7CiAgICAg
ICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJv
b2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtMTI0Miw2ICsxMjc4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBj
b21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZShF
eGVjU3RhdGUqKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC0xMjc5
LDYgKzEzMTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZp
cnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5v
ZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBqaXRDb21waWxlKEV4ZWNTdGF0ZSopOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayog
cmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVj
dGlvbi5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogICAgIGNs
YXNzIFN0cnVjdHVyZUNoYWluOworICAgIHN0cnVjdCBMTEludENhbGxMaW5rSW5mbzsKIAogI2lm
IEVOQUJMRShKSVQpCiAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgUG9seW1vcnBo
aWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlOwpAQCAtMTQxLDYgKzE0MiwxMSBA
QCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAgICAgc3RydWN0IEluc3RydWN0aW9uIHsKKyAg
ICAgICAgSW5zdHJ1Y3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB1LmpzQ2VsbC5jbGVh
cigpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihPcGNvZGUgb3Bj
b2RlKQogICAgICAgICB7CiAjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQpA
QCAtMTc2LDYgKzE4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAg
SW5zdHJ1Y3Rpb24oUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYykgeyB1Lmdl
dHRlckZ1bmMgPSBnZXR0ZXJGdW5jOyB9CisgICAgICAgIAorICAgICAgICBJbnN0cnVjdGlvbihM
TEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSB7IHUuY2FsbExpbmtJbmZvID0gY2FsbExp
bmtJbmZvOyB9CiAKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgT3Bjb2RlIG9wY29kZTsK
QEAgLTE4NCw2ICsxOTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFdyaXRlQmFy
cmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IHN0cnVjdHVyZUNoYWluOwogICAgICAgICAgICAgV3Jp
dGVCYXJyaWVyQmFzZTxKU0NlbGw+IGpzQ2VsbDsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jIGdldHRlckZ1bmM7CisgICAgICAgICAgICBMTEludENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvOworICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsKICAgICAgICAgfSB1Owog
ICAgICAgICAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIExMSW50Q2FsbExpbmtJbmZvX2gKKyNkZWZpbmUgTExJbnRDYWxsTGlu
a0luZm9faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworc3RydWN0IExMSW50Q2FsbExp
bmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiB7
CisgICAgTExJbnRDYWxsTGlua0luZm8oKQorICAgIHsKKyAgICB9CisgICAgCisgICAgfkxMSW50
Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAg
ICAgcmVtb3ZlKCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJldHVybiBj
YWxsZWU7IH0KKyAgICAKKyAgICB2b2lkIHVubGluaygpCisgICAgeworICAgICAgICBjYWxsZWUu
Y2xlYXIoKTsKKyAgICAgICAgbWFjaGluZUNvZGVUYXJnZXQgPSBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoKTsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAg
ICB9CisgICAgCisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGNhbGxlZTsKKyAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgbWFjaGluZUNvZGVUYXJnZXQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIExMSW50Q2FsbExpbmtJbmZvX2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMs
NiArMTIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9hcmd1bWVu
dHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkgXAogICAgICAg
ICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAorICAgICAgICBtYWNybyhvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9y
ZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmljLCA5KSBcCiAg
ICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApAQCAtMjAyLDYgKzIwNCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIGVudW0geyBGT1JfRUFDSF9PUENPREVfSUQoT1BD
T0RFX0lEX0VOVU0pIH0gT3Bjb2RlSUQ7CiAgICAgI3VuZGVmIE9QQ09ERV9JRF9FTlVNCiAKKyAg
ICBjb25zdCBpbnQgbWF4T3Bjb2RlTGVuZ3RoID0gOTsKICAgICBjb25zdCBpbnQgbnVtT3Bjb2Rl
SURzID0gb3BfZW5kICsgMTsKIAogICAgICNkZWZpbmUgT1BDT0RFX0lEX0xFTkdUSFMoaWQsIGxl
bmd0aCkgY29uc3QgaW50IGlkIyNfbGVuZ3RoID0gbGVuZ3RoOwpAQCAtMjE4LDcgKzIyMSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoVkVSSUZZX09QQ09E
RV9JRCk7CiAgICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQKIAotI2lmIEVOQUJMRShDT01QVVRF
RF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KSB8fCBFTkFCTEUoTExJTlQpCiAjaWYgQ09NUElMRVIoUlZDVCkgfHwgQ09NUElMRVIoSU5URUwp
CiAgICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJ
KHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCkBAIC0xMjY0LDkgKzEyNjUsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICAg
ICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUo
KSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIG1fY29kZUJsb2Nr
LT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNl
bmRpZgogICAgICAgICBlbWl0T3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE0MTksOSArMTQxOCw3IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgIG1f
Y29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwog
I2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAg
IGVtaXRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJv
cERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHBy
b3BlcnR5KSk7CkBAIC0xNDY2LDkgKzE0NjMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xv
YmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJM
RShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0
aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBlbWl0T3Bjb2RlKHJlcXVp
cmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZl
X2dsb2JhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ4
Niw5ICsxNDgxLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1ldGhvZENoZWNrKAog
CiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSNp
ZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1pdE9w
Y29kZShvcF9nZXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4
KCkpOwpAQCAtMTUxMyw5ICsxNTA2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRBcgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQo
UmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQq
IHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRk
UHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlm
CiAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTUzMSw5ICsxNTIyLDcgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikK
ICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlv
bnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE4MjEsNyAr
MTgxMCwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoCiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMo
KSk7IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMu
cmVnaXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0lu
Zm8oKSk7CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQo
KSkgewogICAgICAgICBlbWl0T3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0xOTIzLDcg
KzE5MTYsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdAogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRz
LnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJ
bmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0
KCkpIHsKICAgICAgICAgZW1pdE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMjE4Myw3
ICsyMTgwLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gKIHsK
ICAgICBtX3VzZXNFeGNlcHRpb25zID0gdHJ1ZTsKICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJM
RShMTElOVCkKKyAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5k
LT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGgg
KyBtX2Jhc2VTY29wZURlcHRoLCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9vcF9jYXRjaCkpIH07CisjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0
YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwg
bV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVs
KCkgfTsKKyNlbmRpZgogI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+Ymlu
ZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1p
Y1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAx
MDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTgyMyw3ICsxODIzLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5
X2lkKTsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CisgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsK
ICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDgg
QEAgaW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNhc2Ugb3Bf
cHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRf
YnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFs
X3ZhcjoKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUgIkRGR1JlcGF0Y2guaCIKKyNpbmNs
dWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW5saW5lQVNNLmgiCiAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgpAQCAtNTQ1LDQ1
ICs1NDYsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyCiAgICAg
cmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
REZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNvZGVkSlNWYWx1ZSBE
RkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0
ZSopOwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKLSAgICAibW92
ICVyMTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKFg4NikK
LWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAi
XG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAg
Im1vdiAtNDAoJWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVzcClcbiIKLSAgICAi
am1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRo
RXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20gKAotIi50ZXh0
IiAiXG4iCi0iLmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICJcbiIKLSIudGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKLSAgICAiY3B5
IHIwLCByNSIgIlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0KLUVuY29kZWRK
U1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUo
RXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xv
YmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQotCiBzdGF0aWMgdm9pZCogaGFuZGxl
SG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUt
PmNhbGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0
aW9uU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxv
Y2F0aW9uU3BhY2UuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQWxsb2NhdGlvblNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogY2xhc3MgTWFya2VkQmxvY2s7CiAKIGNsYXNzIEFsbG9jYXRpb25TcGFjZSB7CkBAIC02
OCw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNocmluaygpOwogICAgIAogcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAgIGVudW0g
QWxsb2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRpb25NdXN0U3VjY2VlZCwgQWxsb2NhdGlvbkNhbkZh
aWwgfTsKICAgICAKICAgICB2b2lkKiBhbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYg
KzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNs
YXNzIEpTVmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAg
ICBjbGFzcyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTEyOSwxMCArMTMw
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lz
dGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQWxsb2Nh
dGlvblNwYWNlOwotICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBDb2RlQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWlu
RXh0cmFDb3N0ID0gMjU2OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4dHJhQ29z
dCA9IDEwMjQgKiAxMDI0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
U3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogY2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIExpdmVPYmplY3RJdGVyYXRv
cjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsKIGNs
YXNzIFNsb3RWaXNpdG9yOwogCkBAIC03OSw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hC
bG9jaygpOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CisgICAgCiAgICAgLy8gWyAzMi4uLiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
cHJlY2lzZVN0ZXAgPSBNYXJrZWRCbG9jazo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBwcmVjaXNlQ3V0b2ZmID0gMjU2OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTksNiArMTE5LDkgQEAgbmFtZXNwYWNlIEpTQyAgewogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikK
ICAgICAgICAgSW5zdHJ1Y3Rpb24qIHJldHVyblZQQygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVn
aXN0ZXJGaWxlOjpSZXR1cm5QQ10udlBDKCk7IH0KICNlbmRpZgorI2lmIEVOQUJMRShMTElOVCkK
KyAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNl
X2Nhc3Q8SW5zdHJ1Y3Rpb24qPih0aGlzW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0udGFn
KCkpOyB9CisjZW5kaWYKIAogICAgICAgICB2b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSog
Y2FsbGVyRnJhbWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6
OkNhbGxlckZyYW1lXSA9IGNhbGxlckZyYW1lOyB9CiAgICAgICAgIHZvaWQgc2V0U2NvcGVDaGFp
bihTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRo
aXMpW1JlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0gPSBzY29wZUNoYWluOyB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJl
dmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRlICJK
SVQuaCIKICNlbmRpZgogCi0jZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FS
T1VORCAoRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpICYmICFkZWZpbmVkKF9fbGx2
bV9fKSkKKyNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EICgoRU5B
QkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkpICYmICFkZWZp
bmVkKF9fbGx2bV9fKSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNTQ3LDE3ICs1NDcs
NDEgQEAgSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKIHsKIH0KIAotdm9pZCBJbnRlcnByZXRl
cjo6aW5pdGlhbGl6ZShib29sIGNhblVzZUpJVCkKK0ludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIo
KQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShM
TElOVCkKKyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICBkZWxldGVbXSBtX29wY29kZVRhYmxl
OworI2VuZGlmCit9CisKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRhdGEq
IGxsaW50RGF0YSwgYm9vbCBjYW5Vc2VKSVQpCit7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
SU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9f
SU5URVJQUkVURVIpCisgICAgLy8gSGF2aW5nIExMSW50IGVuYWJsZWQsIGJ1dCBub3QgYmVpbmcg
YWJsZSB0byB1c2UgdGhlIEpJVCwgYW5kIG5vdCBoYXZpbmcKKyAgICAvLyBhIGNvbXB1dGVkIGdv
dG8gaW50ZXJwcmV0ZXIsIGlzIG5vdCBzdXBwb3J0ZWQuIE5vdCBiZWNhdXNlIHdlIGNhbm5vdAor
ICAgIC8vIHN1cHBvcnQgaXQsIGJ1dCBiZWNhdXNlIEkgZGVjaWRlZCB0byBkcmF3IHRoZSBsaW5l
IGF0IHRoZSBudW1iZXIgb2YKKyAgICAvLyBwZXJtdXRhdGlvbnMgb2YgZXhlY3V0aW9uIGVuZ2lu
ZXMgdGhhdCBJIHdhbnRlZCB0aGlzIGNvZGUgdG8gZ3Jvay4KKyAgICBBU1NFUlQoY2FuVXNlSklU
KTsKKyNlbmRpZgogICAgIGlmIChjYW5Vc2VKSVQpIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAg
ICAgIG1fb3Bjb2RlVGFibGUgPSBsbGludERhdGEtPm9wY29kZU1hcCgpOworICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQorICAgICAgICAgICAgbV9vcGNvZGVJ
RFRhYmxlLmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOwor
I2Vsc2UKICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVzZW50LCBkb24ndCB1c2UganVtcCBk
ZXN0aW5hdGlvbnMgZm9yIG9wY29kZXMuCiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlID0g
Yml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpKTsKICAgICAgICAg
ICAgIG1fb3Bjb2RlVGFibGVbaV0gPSBvcGNvZGU7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0g
ZWxzZSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbmV3IE9w
Y29kZVtudW1PcGNvZGVJRHNdOworI2VuZGlmCiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRp
YWxpemVBbmRSZXR1cm4sIDAsIDApOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKQEAgLTY2Nyw5ICs2OTEsMTEgQEAgdm9pZCBJbnRlcnBy
ZXRlcjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbQogCiBib29sIEludGVycHJldGVyOjppc09wY29k
ZShPcGNvZGUgb3Bjb2RlKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQp
CisjaWYgIUVOQUJMRShMTElOVCkKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJu
IG9wY29kZSA+PSAwICYmIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihvcGNvZGUpKSA8PSBvcF9lbmQ7CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2RlICE9IEhh
c2hUcmFpdHM8T3Bjb2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJhaXRzPE9w
Y29kZT46OmlzRGVsZXRlZFZhbHVlKG9wY29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJRFRhYmxl
LmNvbnRhaW5zKG9wY29kZSk7CkBAIC03MjYsMTEgKzc1MiwxMSBAQCBORVZFUl9JTkxJTkUgYm9v
bCBJbnRlcnByZXRlcjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAxLgogI2lm
IEVOQUJMRShKSVQpICYmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBpZiAoY2FsbGVyRnJhbWUt
Pmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2Rl
QmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5
dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2Fs
bEZyYW1lLT5yZXR1cm5QQygpKTsKICAgICBlbHNlCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0g
Y29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAj
ZWxpZiBFTkFCTEUoSklUKQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29k
ZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29k
ZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygp
KTsKICNlbHNlCiAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0
KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbmRpZgpAQCAtNTE2NiwxMCArNTE5Miwx
MCBAQCB2b2lkIEludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgICAgIGJ5
dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUt
PnJldHVyblZQQygpKTsKICNpZiBFTkFCTEUoSklUKQogICAgIGVsc2UKLSAgICAgICAgYnl0ZWNv
ZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0
dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRl
Y29kZU9mZnNldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYKICNl
bHNlCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0
KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2Rl
QmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsK
ICNlbmRpZgogICAgIGxpbmVOdW1iZXIgPSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCAtIDEpOwogICAgIHNvdXJjZUlEID0gY2FsbGVy
Q29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAx
MDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgog
I2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkxM
SW50RGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5o
IgogCkBAIC00NSw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9u
RXhlY3V0YWJsZTsKICAgICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFt
RXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWluTm9k
ZTsKQEAgLTkwLDE5ICs5MiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEludGVy
cHJldGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQgY2xhc3Mg
SklUOwogICAgIHB1YmxpYzoKICAgICAgICAgSW50ZXJwcmV0ZXIoKTsKKyAgICAgICAgfkludGVy
cHJldGVyKCk7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBjYW5Vc2VK
SVQpOworICAgICAgICB2b2lkIGluaXRpYWxpemUoTExJbnQ6OkRhdGEqLCBib29sIGNhblVzZUpJ
VCk7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKSB7IHJldHVybiBtX3Jl
Z2lzdGVyRmlsZTsgfQogICAgICAgICAKICAgICAgICAgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJ
RCBpZCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwotI2lm
IEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9H
T1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgICAgICByZXR1cm4gbV9v
cGNvZGVUYWJsZVtpZF07CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIGlkOwpAQCAtMTEyLDcg
KzExNiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQo
T3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6
ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShM
TElOVCkKKyAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKKyAgICAgICAgICAg
IHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CisjZWxpZiBFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUp
KTsKICAgICAgICAgICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSk7CkBA
IC0xMjIsNiArMTI5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG9w
Y29kZTsKICNlbmRpZgogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGVuYWJsZWQo
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9lbmFibGVkOworICAgICAgICB9CiAK
ICAgICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCkBAIC0xODksNyArMjAxLDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSBtX3JlZ2lzdGVyRmlsZTsKICAg
ICAgICAgCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxF
KExMSU5UKQorICAgICAgICBPcGNvZGUqIG1fb3Bjb2RlVGFibGU7IC8vIE1hcHMgT3Bjb2RlSUQg
PT4gT3Bjb2RlIGZvciBjb21waWxpbmcKKyAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlE
PiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBp
bGluZworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgIE9w
Y29kZSBtX29wY29kZVRhYmxlW251bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bj
b2RlIGZvciBjb21waWxpbmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29w
Y29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJG
aWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Jl
Z2lzdGVyRmlsZS5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAgICBj
bGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAog
ICAgIGNsYXNzIFJlZ2lzdGVyRmlsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJl
Z2lzdGVyRmlsZSk7CkBAIC04MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9
CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIqKTsKICAg
ICAgICAgdm9pZCByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9pZCBhZGRUb0Nv
bW1pdHRlZEJ5dGVDb3VudChsb25nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUu
aCIKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIklubGluZUFTTS5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVU
VVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7CitleHRlcm4gIkMiIEVu
Y29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0
dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOworCisjaWYgQ1BVKFg4Nl82NCkKK2Fz
bSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4i
CitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1v
diAtNDAoJXIxMyksICVyMTNcbiIKKyAgICAibW92ICVyMTMsICVyZGlcbiIKKyAgICAiam1wICIg
U1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKFg4NikKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NU
UklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKKyAg
ICAibW92ICVlZGksIDQoJWVzcClcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FU
SU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYg
Q1BVKEFSTV9USFVNQjIpCithc20gKAorIi50ZXh0IiAiXG4iCisiLmFsaWduIDIiICJcbiIKKyIu
Z2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVf
U1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKKyIudGh1bWIiICJcbiIKKyIudGh1
bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgor
U1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJsZHIg
cjUsIFtyNSwgIy00MF0iICJcbiIKKyAgICAiY3B5IHIwLCByNSIgIlxuIgorICAgICJiICIgU1lN
Qk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRl
KSAiXG4iCispOworI2VuZGlmCisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxM
X1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUo
RXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xv
YmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1
ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJl
dHVyblZhbHVlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBIb3N0Q2FsbFJldHVyblZh
bHVlX2gKKyNkZWZpbmUgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKKyNpbmNsdWRlICJKU1ZhbHVl
LmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CisKKyNpZiBDQUxMSU5HX0NPTlZFTlRJT05fSVNfU1REQ0FMTAorI2RlZmluZSBI
T1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBDREVDTAorI2Vsc2UKKyNkZWZpbmUgSE9TVF9D
QUxMX1JFVFVSTl9WQUxVRV9PUFRJT04KKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKK2V4dGVy
biAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSgpOworfQorCisjZW5kaWYgLy8gSG9zdENhbGxSZXR1cm5WYWx1ZV9o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEwNDc4NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1
LDYgKzMyNSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
REVGSU5FX09QKG9wX3Byb2ZpbGVfd2lsbF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVz
aF9uZXdfc2NvcGUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX3Njb3BlKQorICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQp
CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaW5kZXgpCiAgICAgICAgIERFRklORV9PUChv
cF9wdXRfYnlfdmFsKQpAQCAtNDg3LDYgKzQ4OSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
cmVzb2x2ZV9nbG9iYWwpCkBAIC02OTAsNyArNjk0LDcgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVD
b21waWxlKENvZGVQdHIqIGZ1bgogICAgICAgICBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IG1f
Y29kZUJsb2NrLT5zdHJ1Y3R1cmVTdHViSW5mbyhtX21ldGhvZENhbGxDb21waWxhdGlvbkluZm9b
aV0ucHJvcGVydHlBY2Nlc3NJbmRleCkuY2FsbFJldHVybkxvY2F0aW9uOwogICAgIH0KIAotI2lm
IEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAg
ICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQpIHsKICAgICAgICAgQ29tcGFjdEpJVENvZGVNYXA6OkVu
Y29kZXIgaml0Q29kZU1hcEVuY29kZXI7CiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IG1fbGFiZWxzLnNpemUoKTsgKytieXRlY29kZU9m
ZnNldCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEw
NDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKSVRDb2RlKCkg
eyB9CiAjZW5kaWYKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gSklUVHlwZSB7IEhvc3RDYWxs
VGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsKKyAgICAgICAgZW51bSBKSVRUeXBlIHsgTm9u
ZSwgSG9zdENhbGxUaHVuaywgSW50ZXJwcmV0ZXJUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9
OwogICAgICAgICAKICAgICAgICAgc3RhdGljIEpJVFR5cGUgYm90dG9tVGllckpJVCgpCiAgICAg
ICAgIHsKQEAgLTY2LDggKzY2LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIERGR0pJVDsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGljIGJvb2wgaXNP
cHRpbWl6aW5nSklUKEpJVFR5cGUgaml0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIGppdFR5cGUgPT0gREZHSklUOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0
aWMgYm9vbCBpc0Jhc2VsaW5lQ29kZShKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBqaXRUeXBlID09IEludGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBC
YXNlbGluZUpJVDsKKyAgICAgICAgfQorICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAg
ICBKSVRDb2RlKCkKKyAgICAgICAgICAgIDogbV9qaXRUeXBlKE5vbmUpCiAgICAgICAgIHsKICAg
ICAgICAgfQogCkBAIC03NSw2ICs4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
OiBtX3JlZihyZWYpCiAgICAgICAgICAgICAsIG1faml0VHlwZShqaXRUeXBlKQogICAgICAgICB7
CisgICAgICAgICAgICBBU1NFUlQoaml0VHlwZSAhPSBOb25lKTsKICAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgYm9vbCBvcGVyYXRvciAhKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklURHJpdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVREcml2ZXIuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVREcml2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDIxIEBA
CiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIK
ICNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCiAKIG5hbWVz
cGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgogaW5saW5lIGJv
b2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoRXhlY1N0YXRlKiBleGVjLCBPd25QdHI8Q29kZUJs
b2NrVHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBq
aXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWV4ZWMtPmdsb2JhbERhdGEoKS5j
YW5Vc2VKSVQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisgICAgY29kZUJsb2NrLT51
bmxpbmtJbmNvbWluZ0NhbGxzKCk7CisgICAgCiAgICAgYm9vbCBkZmdDb21waWxlZCA9IGZhbHNl
OwogICAgIGlmIChqaXRUeXBlID09IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAgZGZnQ29tcGls
ZWQgPSBERkc6OnRyeUNvbXBpbGUoZXhlYywgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsKQEAg
LTU1LDEwICs2MSw3IEBAIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEV4ZWMK
ICAgICAgICAgfQogICAgICAgICBqaXRDb2RlID0gSklUOjpjb21waWxlKCZleGVjLT5nbG9iYWxE
YXRhKCksIGNvZGVCbG9jay5nZXQoKSk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBM
SU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQot
ICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7
Ci0jZW5kaWYKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVu
aXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cigpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY2LDEwICs2OSwxNSBAQCBp
bmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShFeGVjCiAKIGlubGluZSBib29sIGpp
dENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoRXhlY1N0YXRlKiBleGVjLCBPd25QdHI8RnVu
Y3Rpb25Db2RlQmxvY2s+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSomIHN5
bWJvbFRhYmxlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CisgICAgaWYgKGppdFR5cGUg
PT0gY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAog
ICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKICAgICBp
ZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAor
ICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZn
Q29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAg
ICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlRnVuY3Rpb24oZXhlYywgY29kZUJs
b2NrLmdldCgpLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwpAQCAtODQsMTEgKzky
LDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaQogICAgICAgICB9
CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5n
ZXQoKSwgJmppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BDT0RF
X1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29k
ZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVu
aXR5KCk7Ci0jZW5kaWYKLSAgICAKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2Fy
ZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGpp
dENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEwNDc4
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3co
SlNHbG9iYWxEYQogCiBFeGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIFJl
dHVybkFkZHJlc3NQdHIgZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1cm4gZ2VuZXJpY1Rocm93
KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAgICByZXR1cm4gZ2VuZXJp
Y1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1bHRMb2NhdGlvbikpOwog
fQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNp
b24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxNjQsNDUgKzIxNjQsMTMgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
dm9pZCosIG9wX2NvbnN0cnVjdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSBDYWxs
RnJhbWUqIGFyaXR5Q2hlY2tGb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lzdGVyRmlsZSog
cmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCi17Ci0gICAgSlNGdW5j
dGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKTsKLSAgICBBU1NF
UlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxv
Y2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7
Ci0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcygpOwotCi0gICAgLy8gVGhpcyBlbnN1cmVzIGVub3VnaCBzcGFj
ZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1bWVudHMgcGFzc2VkIGJ5
IHRoZSBjYWxsZXIuCi0gICAgaWYgKCFyZWdpc3RlckZpbGUtPmdyb3coY2FsbEZyYW1lLT5yZWdp
c3RlcnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2NrLT5t
X251bUNhbGxlZVJlZ2lzdGVycykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgQVNTRVJUKGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkp
OwotCi0gICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1lIGFuZCBhcmd1
bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5lZC4KLSAg
ICBzaXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzOwotICAgIFJlZ2lzdGVyKiBzcmMgPSBjYWxsRnJhbWUtPnJlZ2lz
dGVycygpOwotICAgIFJlZ2lzdGVyKiBkc3QgPSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgZGVs
dGE7Ci0KLSAgICBpbnQgaTsKLSAgICBpbnQgZW5kID0gLUNhbGxGcmFtZTo6b2Zmc2V0Rm9yKGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKLSAgICBmb3IgKGkgPSAtMTsgaSA+PSBlbmQ7IC0t
aSkKLSAgICAgICAgZHN0W2ldID0gc3JjW2ldOwotCi0gICAgZW5kIC09IGRlbHRhOwotICAgIGZv
ciAoIDsgaSA+PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0ganNVbmRlZmluZWQoKTsKLQot
ICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoZHN0KTsKLSAg
ICBBU1NFUlQoKHZvaWQqKW5ld0NhbGxGcmFtZSA8PSByZWdpc3RlckZpbGUtPmVuZCgpKTsKLSAg
ICByZXR1cm4gbmV3Q2FsbEZyYW1lOwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwg
b3BfY2FsbF9hcml0eUNoZWNrKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0Zy
YW1lKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7
CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1l
LCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOworICAgIENhbGxGcmFtZSog
bmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwg
c3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDYWxsKTsKICAgICBpZiAoIW5ld0NhbGxG
cmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lkKj4oc3Rh
Y2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVTdGFja092ZXJm
bG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKQEAgLTIyMTUsNyArMjE4Myw3
IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKIAogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAgICBDYWxsRnJhbWUq
IG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lz
dGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUg
PSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJl
Z2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7CiAgICAgaWYgKCFuZXdDYWxsRnJhbWUpCiAg
ICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0YWNrRnJhbWUs
IGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9y
KGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDgg
KzI2LDEwIEBACiAjaWZuZGVmIEpTSW50ZXJmYWNlSklUX2gKICNkZWZpbmUgSlNJbnRlcmZhY2VK
SVRfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkpJVENv
ZGUuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5j
bHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAi
UmVnaXN0ZXJGaWxlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRD
b21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRD
b21tb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dENvbW1vbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDb21tb25faAorI2Rl
ZmluZSBMTEludENvbW1vbl9oCisKKyNkZWZpbmUgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcgMAor
I2RlZmluZSBMTElOVF9IRUxQRVJfVFJBQ0lORyAwCisKKyNlbmRpZiAvLyBMTEludENvbW1vbl9o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RGF0
YS5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNp
bmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitEYXRhOjpEYXRhKCkKKyAgICA6IG1f
ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKG5ldyBJbnN0cnVjdGlvblttYXhPcGNvZGVMZW5ndGggKyAx
XSkKKyAgICAsIG1fb3Bjb2RlTWFwKG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXSkKK3sKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IG1heE9wY29kZUxlbmd0aCArIDE7ICsraSkKKyAgICAgICAgbV9l
eGNlcHRpb25JbnN0cnVjdGlvbnNbaV0udS5wb2ludGVyID0gYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSk7CisjZGVmaW5lIE9QQ09ERV9FTlRS
WShvcGNvZGUsIGxlbmd0aCkgbV9vcGNvZGVNYXBbb3Bjb2RlXSA9IGJpdHdpc2VfY2FzdDx2b2lk
Kj4oJmxsaW50XyMjb3Bjb2RlKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0VOVFJZ
KTsKKyN1bmRlZiBPUENPREVfRU5UUlkKK30KKworRGF0YTo6fkRhdGEoKQoreworICAgIGRlbGV0
ZVtdIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIGRlbGV0ZVtdIG1fb3Bjb2RlTWFwOwor
fQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBMTEludERhdGFfaAorI2RlZmluZSBMTEludERhdGFfaAorCisj
aW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKKyNp
ZiBFTkFCTEUoTExJTlQpCitjbGFzcyBEYXRhIHsKK3B1YmxpYzoKKyAgICBEYXRhKCk7CisgICAg
fkRhdGEoKTsKKyAgICAKKyAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICB9Cisg
ICAgCisgICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3Bj
b2RlTWFwOworICAgIH0KK3ByaXZhdGU6CisgICAgSW5zdHJ1Y3Rpb24qIG1fZXhjZXB0aW9uSW5z
dHJ1Y3Rpb25zOworICAgIE9wY29kZSogbV9vcGNvZGVNYXA7Cit9OworI2Vsc2UgLy8gRU5BQkxF
KExMSU5UKQorCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
cHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWlzc2luZy1ub3JldHVy
biIKKyNlbmRpZgorCitjbGFzcyBEYXRhIHsKK3B1YmxpYzoKKyAgICBJbnN0cnVjdGlvbiogZXhj
ZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9OworCisjaWYgQ09NUElMRVIoQ0xBTkcpCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKworI2VuZGlmIC8vIEVOQUJMRShM
TElOVCkKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludERh
dGFfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50
cnlwb2ludHMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgzIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCisKKyNpbmNsdWRlICJKSVRDb2Rl
LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIK
KyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSklUQ29kZSYgaml0Q29k
ZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0eUNoZWNrKQoreworICAgIGlmICghZ2xvYmFs
RGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgewor
ICAgICAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpKSkp
OworICAgICAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaykpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29k
ZUZvckNvbnN0cnVjdCk7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24o
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfcHJvbG9ndWUpKSkpOworICAgICAgICBhcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlfY2hlY2spKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoa2lu
ZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRh
LmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspOworICAgICAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRD
VElTdHViKGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0
cnVjdCk7CisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0
aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVy
VGh1bmspOworICAgIGFyaXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25G
b3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKK30KKwordm9pZCBn
ZXRFdmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENv
ZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGppdENv
ZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVT
ZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lk
Kj4oJmxsaW50X2V2YWxfcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihldmFsRW50cnlU
aHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQorCit2b2lkIGdl
dFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSYgaml0
Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaml0
Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0
ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKHByb2dy
YW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cit9CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgTExJbnRFbnRyeXBvaW50c19oCisjZGVmaW5lIExMSW50RW50cnlwb2ludHNf
aAorCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgRXZhbENvZGVCbG9jazsKK2NsYXNzIEpJVENvZGU7CitjbGFzcyBKU0dsb2Jh
bERhdGE7CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI7CitjbGFzcyBNYWNyb0Fzc2VtYmxl
ckNvZGVSZWY7CitjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOworCituYW1lc3BhY2UgTExJbnQgewor
Cit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kLCBKSVRDb2RlJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0eUNoZWNrKTsK
K3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYpOwordm9pZCBn
ZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBKSVRDb2RlJik7CisKK2lubGluZSB2
b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFdmFsQ29kZUJsb2Nr
KiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRFdmFsRW50cnlwb2ludChnbG9iYWxEYXRh
LCBqaXRDb2RlKTsKK30KKworaW5saW5lIHZvaWQgZ2V0RW50cnlwb2ludChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIFByb2dyYW1Db2RlQmxvY2sqLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAg
IGdldFByb2dyYW1FbnRyeXBvaW50KGdsb2JhbERhdGEsIGppdENvZGUpOworfQorCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50RW50cnlwb2ludHNfaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRp
b25zLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTExJbnRFeGNlcHRpb25zLmgiCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkpJVEV4
Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgIkxvd0xldmVs
SW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3Zv
aWQgaW50ZXJwcmV0ZXJUaHJvdyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJB
Q0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzLlxuIiwgZ2xvYmFsRGF0YS0+
ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2Jh
bERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgZXhlYy0+Y29kZUJsb2NrKCktPmJ5
dGVjb2RlT2Zmc2V0KGV4ZWMsIGV4ZWMtPnJldHVyblBDKCkpKTsKK30KKworSW5zdHJ1Y3Rpb24q
IHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjKQoreworICAg
IHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkubGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9u
cygpOworfQorCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIElu
c3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+
Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJv
d2luZyBleGNlcHRpb24gJXMgKHJldHVyblRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0
aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEs
IGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJuIGdsb2JhbERhdGEtPmxsaW50
RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKwordm9pZCogY2FsbFRvVGhyb3coRXhl
Y1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORwor
ICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChjYWxsVG9UaHJvdykuXG4iLCBnbG9i
YWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhy
b3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNv
ZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAKKyAgICByZXR1cm4gYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7Cit9
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgTExJbnRFeGNlcHRpb25zX2gKKyNkZWZpbmUgTExJbnRFeGNlcHRpb25zX2gK
KworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsK
KworLy8gSnVzdCB0aHJvdyB0aGUgY3VycmVudGx5IGFjdGl2ZSBleGNlcHRpb24gaW4gdGhlIGNv
bnRleHQgb2YgdGhpcyBleGVjIHN0YXRlCisvLyBhbmQgc2V0IHVwIGFsbCBuZWNlc3Nhcnkgc3Rh
dGUuCit2b2lkIGludGVycHJldGVyVGhyb3coRXhlY1N0YXRlKik7CisKKy8vIFRlbGxzIHlvdSB3
aGVyZSB0byBqdW1wIHRvIGlmIHlvdSB3YW50IHRvIHJldHVybi10by10aHJvdywgYWZ0ZXIgeW91
J3ZlIGFscmVhZHkKKy8vIHNldCB1cCBhbGwgaW5mb3JtYXRpb24gbmVlZGVkIHRvIHRocm93IHRo
ZSBleGNlcHRpb24uCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlv
bihFeGVjU3RhdGUqKTsKKworLy8gU2F2ZXMgdGhlIGN1cnJlbnQgUEMgaW4gdGhlIGdsb2JhbCBk
YXRhIGZvciBzYWZlLWtlZXBpbmcsIGFuZCBnaXZlcyB5b3UgYSBQQworLy8gdGhhdCB5b3UgY2Fu
IHRlbGwgdGhlIGludGVycHJldGVyIHRvIGdvIHRvLCB3aGljaCB3aGVuIGFkdmFuY2VkIGJldHdl
ZW4gMQorLy8gYW5kIDkgc2xvdHMgd2lsbCBnaXZlIHlvdSBhbiAiaW5zdHJ1Y3Rpb24iIHRoYXQg
dGhyZWFkcyB0byB0aGUgaW50ZXJwcmV0ZXIncworLy8gZXhjZXB0aW9uIGhhbmRsZXIuIE5vdGUg
dGhhdCBpZiB5b3UgZ2l2ZSBpdCB0aGUgUEMgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZywKKy8vIGl0
J3Mgc21hcnQgZW5vdWdoIHRvIGp1c3QgcmV0dXJuIHRoYXQgUEMgd2l0aG91dCBkb2luZyBhbnl0
aGluZyBlbHNlOyB0aGlzCisvLyBsZXRzIHlvdSB0aHJlYWQgZXhjZXB0aW9uIGhhbmRsaW5nIHRo
cm91Z2ggY29tbW9uIGhlbHBlciBmdW5jdGlvbnMgdXNlZCBieQorLy8gb3RoZXIgaGVscGVycy4K
K0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisK
Ky8vIFVzZSB0aGlzIHdoZW4geW91J3JlIHRocm93aW5nIHRvIGEgY2FsbCB0aHVuay4KK3ZvaWQq
IGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnRFeGNlcHRpb25zX2gKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTMxMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRI
ZWxwZXJzLmgiCisKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJDYWxsRnJhbWUu
aCIKKyNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVy
blZhbHVlLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKSVREcml2ZXIu
aCIKKyNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKKyNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgor
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKKyNpbmNs
dWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludENv
bW1vbi5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxvd0xldmVs
SW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgTExJbnQgeworCisjZGVmaW5lIExMSU5UX09QKGluZGV4KSAoZXhlYy0+dW5j
aGVja2VkUihwY1tpbmRleF0udS5vcGVyYW5kKSkKKyNkZWZpbmUgTExJTlRfT1BfQyhpbmRleCkg
KGV4ZWMtPnIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOX1RX
TyhmaXJzdCwgc2Vjb25kKSBkbyB7ICAgICAgIFwKKyAgICAgICAgdW5pb24geyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB2b2lkKiBhOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB2b2lkKiBiOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gcGFpcjsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGludDY0X3QgaTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgfSBfX3J0X3U7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgX19ydF91LnBhaXIuYSA9IGZpcnN0OyAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgX19ydF91LnBhaXIuYiA9IHNlY29uZDsgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgcmV0dXJuIF9fcnRfdS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9FTkRfSU1QTCgpIExMSU5UX1JF
VFVSTl9UV08ocGMsIGV4ZWMpCisKKyNkZWZpbmUgTExJTlRfVEhST1coZXhjZXB0aW9uVG9UaHJv
dykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBf
X3RfZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsgICAgICAgIFwKKyAgICAgICAgX190
X2dsb2JhbERhdGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgIFwK
KyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBM
TElOVF9DSEVDS19FWENFUFRJT04oKSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IGlmIChVTkxJS0VMWShleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgeyAgIFwKKyAgICAg
ICAgICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9FTkQoKSBkbyB7ICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAg
ICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0JSQU5DSChvcGNvZGUs
IGNvbmRpdGlvbikgZG8geyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGJvb2wgX19i
X2NvbmRpdGlvbiA9IChjb25kaXRpb24pOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIGlmIChfX2JfY29uZGl0aW9uKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwYyArPSBwY1tPUENPREVfTEVOR1RIKG9w
Y29kZSkgLSAxXS51Lm9wZXJhbmQ7ICAgICAgICBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBw
YyArPSBPUENPREVfTEVOR1RIKG9wY29kZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOKHZh
bHVlKSBkbyB7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNWYWx1ZSBfX3JfcmV0dXJuVmFs
dWUgPSAodmFsdWUpOyAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfT1AoMSkgPSBfX3JfcmV0dXJuVmFsdWU7ICAg
ICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0VORF9JTVBMKGV4
ZWMsIGNhbGxUYXJnZXQpIExMSU5UX1JFVFVSTl9UV08oKGNhbGxUYXJnZXQpLCAoZXhlYykpCisK
KyNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgZXhjZXB0aW9uVG9UaHJvdykgZG8g
eyAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2N0X2V4ZWMgPSAoZXhlYyk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24q
IF9fY3RfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgSlNHbG9iYWxEYXRhJiBfX2N0X2dsb2JhbERhdGEgPSAoX19jdF9leGVjKS0+Z2xvYmFs
RGF0YSgpOyAgICAgIFwKKyAgICAgICAgX19jdF9nbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IChleGNl
cHRpb25Ub1Rocm93KTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRf
SU1QTChfX2N0X2V4ZWMsIGNhbGxUb1Rocm93KF9fY3RfZXhlYywgX19jdF9wYykpOyBcCisgICAg
fSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhl
YywgcGMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBf
X2NjZV9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgSW5zdHJ1Y3Rpb24qIF9fY2NlX3BjID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKF9fY2NlX2V4ZWMtPmdsb2JhbERh
dGEoKS5leGNlcHRpb24pKSAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5UX0NBTExf
RU5EX0lNUEwoX19jY2VfZXhlYywgY2FsbFRvVGhyb3coX19jY2VfZXhlYywgX19jY2VfcGMpKTsg
XAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfUkVUVVJOKGV4ZWMs
IHBjLCBjYWxsVGFyZ2V0KSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNT
dGF0ZSogX19jcl9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2NyX3BjID0gKHBjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHZvaWQqIF9fY3JfY2FsbFRhcmdldCA9IChj
YWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NB
TExfQ0hFQ0tfRVhDRVBUSU9OKF9fY3JfZXhlYy0+Y2FsbGVyRnJhbWUoKSwgX19jcl9wYyk7ICBc
CisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jcl9leGVjLCBfX2NyX2NhbGxUYXJnZXQp
OyAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKK2V4dGVybiAiQyIgSGVs
cGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1
Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkKK3sKKyAgICBwcmludGYoIiVw
IC8gJXA6IGV4ZWN1dGluZyBiYyMldSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkXG4iLAorICAg
ICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAg
cGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwKKyAgICAgICAg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9w
Y29kZSksCisgICAgICAgICAgIGZyb21XaGVyZSwKKyAgICAgICAgICAgb3BlcmFuZCwKKyAgICAg
ICAgICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworZXh0
ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSogZXhl
YywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkKK3sKKyAgICBK
U1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQyhvcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciBkZXNjcmlwdG9yOworICAgIGRlc2NyaXB0b3IuYXNJbnQ2NCA9IEpT
VmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMj
JXUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZDogJTA4eDolMDh4IiwKKyAgICAgICAgICAgZXhl
Yy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHBjIC0gZXhlYy0+
Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCksCisgICAgICAgICAgIGV4ZWMtPmds
b2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAg
ICAgICAgICBmcm9tV2hlcmUsCisgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29w
ZXJhbmRdLnUub3BlcmFuZCwKKyAgICAgICAgICAgZGVzY3JpcHRvci5hc0JpdHMudGFnLAorICAg
ICAgICAgICBkZXNjcmlwdG9yLmFzQml0cy5wYXlsb2FkKTsKKyNpZm5kZWYgTkRFQlVHCisgICAg
cHJpbnRmKCI6ICVzIiwgdmFsdWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBwcmludGYo
IlxuIik7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3By
b2xvZ3VlKQoreworICAgIHByaW50ZigiJXAgLyAlcDogaW4gcHJvbG9ndWUuXG4iLCBleGVjLT5j
b2RlQmxvY2soKSwgZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK3N0YXRpYyB2b2lkIHRy
YWNlRnVuY3Rpb25Qcm9sb2d1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGNvbW1lbnQp
Cit7CisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7
CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFi
bGUoKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9ICZleGVjdXRhYmxlLT5nZW5lcmF0ZWRC
eXRlY29kZUZvckNhbGwoKTsKKyAgICBwcmludGYoIiVwIC8gJXA6IGluICVzIG9mIGZ1bmN0aW9u
ICVwLCBleGVjdXRhYmxlICVwOyBudW1WYXJzID0gJXUsIG51bVBhcmFtZXRlcnMgPSAldSwgbnVt
Q2FsbGVlUmVnaXN0ZXJzID0gJXUuXG4iLAorICAgICAgICAgICBjb2RlQmxvY2ssIGV4ZWMsIGNv
bW1lbnQsIGNhbGxlZSwgZXhlY3V0YWJsZSwKKyAgICAgICAgICAgY29kZUJsb2NrLT5tX251bVZh
cnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25f
Zm9yX2NhbGwpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIHByb2xv
Z3VlIik7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3By
b2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xv
Z3VlKGV4ZWMsICJjb25zdHJ1Y3QgcHJvbG9ndWUiKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKK3sKKyAgICB0cmFj
ZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNhbGwgYXJpdHkgY2hlY2siKTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3Ry
dWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IGFyaXR5
IGNoZWNrIik7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNl
KQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV1LCBvcCMldVxuIiwKKyAg
ICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAg
IHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCksCisgICAgICAg
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5v
cGNvZGUpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woc3BlY2lh
bF90cmFjZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBzcGVjaWFsIGNhc2Ug
YmMjJXUsIG9wIyV1LCByZXR1cm4gUEMgaXMgJXBcbiIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVC
bG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBwYyAtIGV4ZWMtPmNvZGVCbG9j
aygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRh
KCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAg
ZXhlYy0+cmV0dXJuUEMoKS52YWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworaW5saW5l
IGJvb2wgc2hvdWxkSklUKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBZb3UgY2FuIG1vZGlm
eSB0aGlzIHRvIHR1cm4gb2ZmIEpJVHRpbmcgd2l0aG91dCByZWJ1aWxkaW5nIHRoZSB3b3JsZC4K
KyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChlbnRyeV9vc3IpCit7CisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAg
ICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgICAgICBM
TElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAgICBleGVjLT5jb2RlQmxvY2soKS0+
aml0Q29tcGlsZShleGVjKTsKKyAgICBleGVjLT5jb2RlQmxvY2soKS0+aml0U29vbigpOworICAg
IExMSU5UX1JFVFVSTl9UV08oZXhlYy0+Y29kZUJsb2NrKCktPmdldEpJVENvZGUoKS5leGVjdXRh
YmxlQWRkcmVzc0F0T2Zmc2V0KDApLCBleGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50
cnlfb3NyX2FyaXR5Q2hlY2spCit7CisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAg
ICAgZXhlYy0+Y29kZUJsb2NrKCktPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgICAgICBMTElO
VF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAgICBleGVjLT5jb2RlQmxvY2soKS0+aml0
Q29tcGlsZShleGVjKTsKKyAgICBleGVjLT5jb2RlQmxvY2soKS0+aml0U29vbigpOworICAgIExM
SU5UX1JFVFVSTl9UV08oZXhlYy0+Y29kZUJsb2NrKCktPmdldEpJVENvZGVXaXRoQXJpdHlDaGVj
aygpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChs
b29wX29zcikKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGNvZGVCbG9jay0+
ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7
CisgICAgfQorICAgIAorICAgIGNvZGVCbG9jay0+aml0Q29tcGlsZShleGVjKTsKKyAgICBjb2Rl
QmxvY2stPmppdFNvb24oKTsKKyAgICAKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBl
KCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIAorICAgIFZlY3RvcjxCeXRlY29kZUFu
ZE1hY2hpbmVPZmZzZXQ+IG1hcDsKKyAgICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2Rl
KG1hcCk7CisgICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2Vh
cmNoPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQsIEJ5dGVjb2RlQW5kTWFjaGlu
ZU9mZnNldDo6Z2V0Qnl0ZWNvZGVJbmRleD4obWFwLmJlZ2luKCksIG1hcC5zaXplKCksIHBjIC0g
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICBBU1NFUlQobWFwcGluZyk7
CisgICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyAgICAKKyAg
ICB2b2lkKiBqdW1wVGFyZ2V0ID0gY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3NBdE9mZnNldChtYXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQo
anVtcFRhcmdldCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOX1RXTyhqdW1wVGFyZ2V0LCBleGVj
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSkKK3sKKyAgICBpZiAoc2hvdWxkSklU
KGV4ZWMpKSB7CisgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5qaXRDb21waWxlKGV4ZWMpOwor
ICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+aml0U29vbigpOworICAgIH0gZWxzZQorICAgICAg
ICBleGVjLT5jb2RlQmxvY2soKS0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spCit7CisjaWYg
TExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIkNoZWNraW5nIHN0YWNrIGhlaWdodCB3
aXRoIGV4ZWMgPSAlcC5cbiIsIGV4ZWMpOworICAgIHByaW50ZigiQ29kZUJsb2NrID0gJXAuXG4i
LCBleGVjLT5jb2RlQmxvY2soKSk7CisgICAgcHJpbnRmKCJOdW0gY2FsbGVlIHJlZ2lzdGVycyA9
ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICBw
cmludGYoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1WYXJzKTsK
KyNlbmRpZgorICAgIGlmIChVTkxJS0VMWSghZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVy
LT5yZWdpc3RlckZpbGUoKS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2so
KS0+bV9udW1DYWxsZWVSZWdpc3RlcnNdKSkpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxl
ckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3coZXhlYyk7
CisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihleGVjKTsKKyAg
ICB9CisgICAgTExJTlRfRU5EX0lNUEwoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93
UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRl
ci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDYWxsKTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAg
ICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAg
IGludGVycHJldGVyVGhyb3coZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lz
ZV9jYXN0PHZvaWQqPigxKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwg
ZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVj
aykKK3sKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hl
Y2tGb3IoZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxl
KCksIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBleGVj
ID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2Vw
dGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0
ZXJUaHJvdyhleGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KDEpLCBleGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQoreworICAgIEpT
QWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRlKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYywgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlYy0+Y29k
ZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihl
eGVjLT5zY29wZUNoYWluKCktPnB1c2goYWN0aXZhdGlvbikpOworICAgIExMSU5UX1JFVFVSTihK
U1ZhbHVlKGFjdGl2YXRpb24pKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0
ZV9hcmd1bWVudHMpCit7CisgICAgTExJTlRfUkVUVVJOKEpTVmFsdWUoQXJndW1lbnRzOjpjcmVh
dGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY3JlYXRlX3RoaXMpCit7CisgICAgSlNGdW5jdGlvbiogY29uc3RydWN0b3IgPSBhc0Z1
bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAg
Q29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIEFTU0VSVChjb25zdHJ1Y3Rvci0+bWV0
aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0YShjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSkg
PT0gQ29uc3RydWN0VHlwZUpTKTsKKyNlbmRpZgorICAgIAorICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlOworICAgIEpTVmFsdWUgcHJvdG8gPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYg
KHByb3RvLmlzT2JqZWN0KCkpCisgICAgICAgIHN0cnVjdHVyZSA9IGFzT2JqZWN0KHByb3RvKS0+
aW5oZXJpdG9ySUQoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBlbHNlCisgICAgICAgIHN0cnVj
dHVyZSA9IGNvbnN0cnVjdG9yLT5zY29wZSgpLT5nbG9iYWxPYmplY3QtPmVtcHR5T2JqZWN0U3Ry
dWN0dXJlKCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4
ZWMsIHN0cnVjdHVyZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29udmVydF90
aGlzKQoreworICAgIEpTVmFsdWUgdjEgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgQVNT
RVJUKHYxLmlzUHJpbWl0aXZlKCkpOworICAgIExMSU5UX1JFVFVSTih2MS50b1RoaXNPYmplY3Qo
ZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVjdCkKK3sKKyAg
ICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYykpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1
Y3RBcnJheShleGVjLCBiaXR3aXNlX2Nhc3Q8SlNWYWx1ZSo+KCZMTElOVF9PUCgyKSksIHBjWzNd
LnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5X2J1
ZmZlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgZXhlYy0+Y29k
ZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKHBjWzJdLnUub3BlcmFuZCksIHBjWzNdLnUub3BlcmFu
ZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCkKK3sKKyAgICBS
ZWdFeHAqIHJlZ0V4cCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZWdleHAocGNbMl0udS5vcGVyYW5k
KTsKKyAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVh
dGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBmbGFnIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25z
dHJ1Y3Rvci4iKSk7CisgICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdFeHApKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25vdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFM
TElOVF9PUCgyKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9lcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6
OmVxdWFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3N0cmljdGVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6
c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3RlcSkKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBM
TElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKGpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKQor
eworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRf
T1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEp
Cit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJ
TlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKExMSU5UX09QKDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSArIDEpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9kZWMpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKExMSU5UX09QKDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAtIDEpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBM
TElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBq
c051bWJlcihyZXN1bHQgKyAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYykKK3sKKyAgICBkb3VibGUg
cmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5U
X09QKDIpID0ganNOdW1iZXIocmVzdWx0IC0gMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVy
KHJlc3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJl
cihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKQoreworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcigtTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4
ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpCit7CisgICAgSlNWYWx1
ZSB2MSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHBy
aW50ZigiVHJ5aW5nIHRvIGFkZCAlcyIsIHYxLmRlc2NyaXB0aW9uKCkpOworICAgIHByaW50Zigi
IHRvICVzLlxuIiwgdjIuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEu
aXNTdHJpbmcoKSkgeworICAgICAgICBMTElOVF9SRVRVUk4oCisgICAgICAgICAgICB2Mi5pc1N0
cmluZygpCisgICAgICAgICAgICA/IGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgYXNTdHJp
bmcodjIpKQorICAgICAgICAgICAgOiBqc1N0cmluZyhleGVjLCBhc1N0cmluZyh2MSksIHYyLnRv
UHJpbWl0aXZlU3RyaW5nKGV4ZWMpKSk7CisgICAgfQorICAgIAorICAgIGlmICh2MS5pc051bWJl
cigpICYmIHYyLmlzTnVtYmVyKCkpCisgICAgICAgIExMSU5UX1JFVFVSTihqc051bWJlcih2MS5h
c051bWJlcigpICsgdjIuYXNOdW1iZXIoKSkpOworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0Fk
ZFNsb3dDYXNlKGV4ZWMsIHYxLCB2MikpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bXVsKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KS50b051bWJlcihleGVjKSAqIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2RpdikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLyBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKQorewor
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcihmbW9kKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRv
TnVtYmVyKGV4ZWMpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPDwgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3JzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1Ao
MikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9V
SW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDIpLmpzVmFsdWUoKS50b1VJbnQz
MihleGVjKSA+PiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKQoreworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSAmIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9iaXRvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMikuanNW
YWx1ZSgpLnRvSW50MzIoZXhlYykgfCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihl
eGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKQoreworICAgIExM
SU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSBe
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKH5M
TElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQoreworICAgIEpTVmFsdWUgYmFzZVZhbCA9
IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgVHlwZUluZm8gdHlw
ZUluZm8oVW5zcGVjaWZpZWRUeXBlKTsKKyAgICBBU1NFUlQoIWJhc2VWYWwuaXNPYmplY3QoKQor
ICAgICAgICAgICB8fCAhKHR5cGVJbmZvID0gYXNPYmplY3QoYmFzZVZhbCktPnN0cnVjdHVyZSgp
LT50eXBlSW5mbygpKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSk7CisjZW5kaWYKKyAgICBMTElO
VF9USFJPVyhjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihleGVjLCAiaW5zdGFuY2VvZiIsIGJhc2VW
YWwpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3co
ZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIExMSU5U
X09QKDQpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVv
ZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRf
T1AoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRl
ZmluZWQpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4odi5pc0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgp
LT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbikKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNCb29sZWFuKExMSU5UX09QKDIpLmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKQoreworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oTExJTlRfT1AoMikuanNWYWx1ZSgpLmlzTnVtYmVyKCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZykKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKGlzSlNTdHJpbmcoTExJTlRfT1AoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oanNJc09iamVjdFR5cGUoTExJTlRfT1AoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihqc0lzRnVuY3Rpb25UeXBlKExMSU5UX09QKDIpLmpzVmFsdWUoKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xl
YW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJ
TlRfT1AoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVz
b2x2ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhl
YywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKQoreworICAgIExMSU5UX1JF
VFVSTigKKyAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVTa2lwKAorICAgICAgICAg
ICAgZXhlYywKKyAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJd
LnUub3BlcmFuZCksCisgICAgICAgICAgICBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQoreworICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVj
dC0+aXNHbG9iYWxPYmplY3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0udS5vcGVyYW5k
OworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7Cisg
ICAgaW50IG9mZnNldCA9IHBjWzRdLnUub3BlcmFuZDsKKyAgICAKKyAgICBBU1NFUlQoKCFzdHJ1
Y3R1cmUpID09ICghb2Zmc2V0KSk7CisgICAgQVNTRVJUKHN0cnVjdHVyZSAhPSBnbG9iYWxPYmpl
Y3QtPnN0cnVjdHVyZSgpKTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9j
ay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2Jq
ZWN0KTsKKyAgICAKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywg
aWRlbnQsIHNsb3QpKSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShl
eGVjLCBpZGVudCk7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xv
YmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAg
ICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAg
cGNbM10udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEo
KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUo
KSk7CisgICAgICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIExMSU5UX1JFVFVSTihyZXN1bHQpOworICAgIH0KKyAgICAKKyAg
ICBMTElOVF9USFJPVyhjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAgSWRl
bnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9w
ZXJhbmQpOworICAgIGlmIChwY1szXS51Lm9wZXJhbmQpIHsKKyAgICAgICAgSlNWYWx1ZSBiYXNl
ID0gSlNDOjpyZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCB0cnVl
KTsKKyAgICAgICAgaWYgKCFiYXNlKQorICAgICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJy
b3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAg
ICAgICAgTExJTlRfUkVUVVJOKGJhc2UpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4o
SlNDOjpyZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykK
K3sKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgp
KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIElkZW50aWZpZXImIGlkZW50
ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBp
ZiAoIW9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkKKyAgICAgICAg
TExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBp
ZGVudC51c3RyaW5nKCkpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29t
bW9uU2xvd1BhdGhzOjpvcFJlc29sdmVXaXRoQmFzZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+
aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKK3sK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aFRoaXMo
ZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJ
TlRfT1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIp
ID0gcmVzdWx0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZ2V0X2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJs
b2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNb
M10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFs
dWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgxKSA9IHJlc3VsdDsKKworICAgIGlmIChiYXNl
VmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCisgICAgICAgICYm
IHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUKKyAgICAgICAgJiYgc2xvdC5jYWNoZWRQcm9w
ZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OlZhbHVlKSB7CisgICAgICAgIAorICAgICAgICBK
U0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlm
ICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAh
c3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpKSB7CisgICAg
ICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAg
ICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihK
U1ZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKQoreworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYg
aWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qg
c2xvdChiYXNlVmFsdWUpOworICAgIExMSU5UX1JFVFVSTihiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlk
ZW50LCBzbG90KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpCit7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVu
dGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOwor
ICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgUHV0
UHJvcGVydHlTbG90IHNsb3QoY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAgYmFzZVZh
bHVlLnB1dChleGVjLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIGlmIChiYXNlVmFsdWUuaXNDZWxs
KCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAgIAorICAgICAgICBK
U0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlm
ICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAh
c3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpCisgICAgICAg
ICAgICAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewor
ICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSkgeworICAgICAg
ICAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJl
LT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOworICAgICAgICAgICAgICAgICAgICBpZiAocGNb
OF0udS5vcGVyYW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Qp
OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwY1sw
XS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNl
dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOworICAgICAgICAg
ICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9m
KEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBwY1s2XS51LnN0cnVjdHVyZS5zZXQoCisg
ICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzddLnUu
c3RydWN0dXJlQ2hhaW4uc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFs
RGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByb3RvdHlw
ZUNoYWluKGV4ZWMpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxp
bnRfb3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQo
CisgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJh
bmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBMTElOVF9P
UCgyKS5qc1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJh
c2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMs
IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpKTsKKyAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5h
YmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihj
b3VsZERlbGV0ZSkpOworfQorCitpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKK3sKKyAgICBpZiAoTElL
RUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAg
ICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJv
cGVydHkoZXhlYywgYXNTdHJpbmcoc3Vic2NyaXB0KS0+dmFsdWUoZXhlYykpKQorICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQz
MigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAg
ICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5H
ZXRJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJ
bmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VW
YWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpCisgICAg
ICAgICAgICByZXR1cm4gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7
CisgICAgICAgIAorICAgICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBpKTsKKyAgICB9
CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmco
ZXhlYykpOworICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5KTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV92YWwpCit7CisgICAgTExJTlRfUkVUVVJO
KGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1
ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFs
KQoreworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAg
IGlmICghYXJndW1lbnRzKSB7CisgICAgICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYyk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOworICAgICAgICBMTElOVF9PUCgyKSA9IGFyZ3VtZW50czsKKyAgICB9CisgICAgCisgICAg
TExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIGFyZ3VtZW50cywgTExJTlRfT1AoMykuanNWYWx1
ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJ
TlRfT1AoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRf
YnlfdmFsKQoreworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERh
dGEoKTsKKyAgICAKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBK
U1ZhbHVlIHZhbHVlID0gTExJTlRfT1AoMykuanNWYWx1ZSgpOworICAgIAorICAgIGlmIChMSUtF
TFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3Jp
cHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUpKSB7CisgICAg
ICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOworICAgICAgICAg
ICAgaWYgKGpzQXJyYXktPmNhblNldEluZGV4KGkpKQorICAgICAgICAgICAgICAgIGpzQXJyYXkt
PnNldEluZGV4KGdsb2JhbERhdGEsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4KGpzQXJyYXksIGV4ZWMsIGksIHZhbHVlKTsK
KyAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICB9CisgICAgICAgIGlmIChpc0pTQnl0
ZUFycmF5KGJhc2VWYWx1ZSkKKyAgICAgICAgICAgICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSkt
PmNhbkFjY2Vzc0luZGV4KGkpKSB7CisgICAgICAgICAgICBKU0J5dGVBcnJheSoganNCeXRlQXJy
YXkgPSBhc0J5dGVBcnJheShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYgKHZhbHVlLmlzSW50
MzIoKSkgeworICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5h
c0ludDMyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5
dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNOdW1iZXIoKSk7CisgICAgICAgICAgICAgICAg
TExJTlRfRU5EKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYmFzZVZhbHVl
LnB1dChleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAK
KyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7
CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qo
ZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBiYXNlVmFsdWUucHV0KGV4
ZWMsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfdmFsKQoreworICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFz
ZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIAorICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJ
TlRfT1AoMykuanNWYWx1ZSgpOworICAgIAorICAgIGJvb2wgY291bGREZWxldGU7CisgICAgCisg
ICAgdWludDMyX3QgaTsKKyAgICBpZiAoc3Vic2NyaXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAg
Y291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoYmFzZU9iamVjdCwgZXhlYywgaSk7CisgICAgZWxzZSB7CisgICAgICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOworICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNj
cmlwdC50b1N0cmluZyhleGVjKSk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVBy
b3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMsIHByb3BlcnR5KTsKKyAgICB9CisgICAgCisgICAgaWYg
KCFjb3VsZERlbGV0ZSAmJiBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAg
ICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBw
cm9wZXJ0eS4iKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0
ZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KQoreworICAg
IExMSU5UX09QKDEpLmpzVmFsdWUoKS5wdXQoZXhlYywgcGNbMl0udS5vcGVyYW5kLCBMTElOVF9P
UCgzKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHV0X2dldHRlcikKK3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgp
LmlzT2JqZWN0KCkpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1Ao
MSkuanNWYWx1ZSgpKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygp
LT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpz
VmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVH
ZXR0ZXIoYmFzZU9iaiwgZXhlYywgaWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUo
KSksIDApOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHV0X3NldHRlcikKK3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0
KCkpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1
ZSgpKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlm
aWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpzVmFsdWUoKS5p
c09iamVjdCgpKTsKKyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVTZXR0ZXIoYmFz
ZU9iaiwgZXhlYywgaWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUoKSksIDApOwor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam1wX3Njb3Bl
cykKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBTY29wZUNo
YWluTm9kZSogdG1wID0gZXhlYy0+c2NvcGVDaGFpbigpOworICAgIHdoaWxlIChjb3VudC0tKQor
ICAgICAgICB0bXAgPSB0bXAtPnBvcCgpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4odG1wKTsK
KyAgICBwYyArPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qdHJ1ZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfanRydWUs
IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pmYWxzZSwg
IUxMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qbGVzcykKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3MsIGpz
TGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcykKK3sKKyAg
ICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzLCAhanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0Mo
MSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfamdyZWF0ZXIpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVhdGVy
LCBqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVy
KQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmdyZWF0ZXIsICFqc0xlc3M8ZmFsc2U+KGV4ZWMs
IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3NlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0go
b3Bfamxlc3NlcSwganNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qbmxlc3NlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzZXEsICFqc0xlc3NFcTx0
cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEpCit7CisgICAg
TExJTlRfQlJBTkNIKG9wX2pncmVhdGVyZXEsIGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9P
UF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9q
bmdyZWF0ZXJlcSwgIWpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3N3aXRjaF9pbW0pCit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUCgzKS5q
c1ZhbHVlKCk7CisgICAgQVNTRVJUKHNjcnV0aW5lZS5pc0RvdWJsZSgpKTsKKyAgICBkb3VibGUg
dmFsdWUgPSBzY3J1dGluZWUuYXNEb3VibGUoKTsKKyAgICBpbnQzMl90IGludFZhbHVlID0gc3Rh
dGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0u
dS5vcGVyYW5kOworICAgIGlmICh2YWx1ZSA9PSBpbnRWYWx1ZSkgeworICAgICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2RlQmxv
Y2stPmltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZh
bHVlKGludFZhbHVlLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGMgKz0g
ZGVmYXVsdE9mZnNldDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3N3aXRjaF9zdHJpbmcpCit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9P
UCgzKS5qc1ZhbHVlKCk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7
CisgICAgaWYgKCFzY3J1dGluZWUuaXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9m
ZnNldDsKKyAgICBlbHNlIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFi
bGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGluZWUpLT52
YWx1ZShleGVjKS5pbXBsKCksIGRlZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKQoreworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9j
ay0+Y29kZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUKKyAgICAgICAgICAgfHwgIWNvZGVCbG9jay0+
bmVlZHNGdWxsU2NvcGVDaGFpbigpCisgICAgICAgICAgIHx8IGV4ZWMtPnVuY2hlY2tlZFIoY29k
ZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9SRVRV
Uk4oY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbMl0udS5vcGVyYW5kKS0+bWFrZShleGVjLCBl
eGVjLT5zY29wZUNoYWluKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19m
dW5jX2V4cCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9u
RXhwcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBmdW5jdGlvbi0+
bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpOworICAgIAorICAgIGlmICghZnVuY3Rpb24t
Pm5hbWUoKS5pc051bGwoKSkgeworICAgICAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBmdW5jdGlv
blNjb3BlT2JqZWN0ID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGZ1bmN0aW9u
LT5uYW1lKCksIGZ1bmMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGZ1bmMtPnNl
dFNjb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuYy0+c2NvcGUoKS0+cHVzaChmdW5jdGlvblNj
b3BlT2JqZWN0KSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihmdW5jKTsKK30KKwor
c3RhdGljIEhlbHBlclJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2Fs
bGVlLCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJh
bWUoKTsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgp
OworCisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOwor
ICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKworICAgIGlmIChraW5kID09IENvZGVG
b3JDYWxsKSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgICAgICBDYWxsVHlwZSBj
YWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxlZSwgY2FsbERhdGEpOworICAgIAorICAgICAgICBB
U1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVKUyk7CisgICAgCisgICAgICAgIGlmIChjYWxsVHlw
ZSA9PSBDYWxsVHlwZUhvc3QpIHsKKyAgICAgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0
dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWND
YWxsZWUpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhl
Y0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpKTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5
cGVOb25lKTsKKyAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUZ1
bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCk7CisgICAgCisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRh
OworICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEoY2Fs
bGVlLCBjb25zdHJ1Y3REYXRhKTsKKyAgICAKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBD
b25zdHJ1Y3RUeXBlSlMpOworICAgIAorICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVj
dFR5cGVIb3N0KSB7CisgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkp
OworICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICAKKyAgICBB
U1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSk7CisgICAgTExJTlRfQ0FM
TF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVl
KSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4
ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBK
U1ZhbHVlIGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSAw
KQoreworICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0aW9uKGNh
bGxlZUFzVmFsdWUpOworICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCisgICAgICAgIHJl
dHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwga2luZCk7
CisgICAgCisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsZWVBc0Z1bmN0
aW9uQ2VsbCk7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihjYWxsZWUtPnNjb3BlVW5j
aGVja2VkKCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVj
dXRhYmxlKCk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOworICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5j
dGlvbigpKQorICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZv
cihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIGVsc2UgeworICAgICAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGV4ZWN1dGFibGUpOworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4
ZWN1dGFibGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29wZSgpLCBraW5kKTsK
KyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjQ2Fs
bGVlLT5jYWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOworICAgICAgICBjb2RlQmxvY2sgPSAmZnVu
Y3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICAgICAgQVNT
RVJUKGNvZGVCbG9jayk7CisgICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSkpCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0
ZWRKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2lu
ZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICB9CisgICAgCisgICAgaWYgKGNhbGxMaW5rSW5mbykg
eworICAgICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZXIgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFt
ZSgpOworICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFs
RGF0YSgpLCBleGVjQ2FsbGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxl
ZSk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+bWFjaGluZUNvZGVUYXJnZXQgPSBjb2RlUHRyOwor
ICAgICAgICBpZiAoY29kZUJsb2NrKQorICAgICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21p
bmdDYWxsKGNhbGxMaW5rSW5mbyk7CisgICAgfQorICAgIAorICAgIExMSU5UX0NBTExfUkVUVVJO
KGV4ZWNDYWxsZWUsIHBjLCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworfQorCitpbmxp
bmUgSGVscGVyUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0
aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIC8vIFRoaXMgbmVl
ZHMgdG86CisgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lLgorICAgIC8vIC0gRmlndXJlIG91
dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gSWYg
cG9zc2libGUsIGxpbmsgdGhlIGNhbGwncyBpbmxpbmUgY2FjaGUuCisgICAgLy8gLSBSZXR1cm4g
YSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwg
ZnJhbWUuCisgICAgCisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSkuanNW
YWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51
Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lz
dGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2Fs
bGVyRnJhbWUoZXhlYyk7CisgICAgCisgICAgQVNTRVJUKHBjWzRdLnUuY2FsbExpbmtJbmZvKTsK
KyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVl
LCBwY1s0XS51LmNhbGxMaW5rSW5mbyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
YWxsKQoreworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0KQoreworICAgIHJldHVybiBn
ZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0cnVjdCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAg
ICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUgd2hpbGUgcmVzcGVjdGluZyB0aGUgdmFyaWFibGUg
YXJndW1lbnRzLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUg
aXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2Rl
IGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFs
dWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUgPSBsb2FkVmFyYXJncygKKyAgICAgICAgZXhlYywgJmV4ZWMtPmds
b2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksCisgICAgICAgIExMSU5UX09Q
KDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpLCBwY1s0XS51Lm9wZXJhbmQpOwor
ICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKTsKKyAgICAKKyAgICBleGVj
Q2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7
CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlYy0+dW5jaGVj
a2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0d2lzZV9jYXN0PGlu
dDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpKTsKKyAgICAKKyAgICBy
ZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1
ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpCit7CisgICAgSlNW
YWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4
ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAgSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAgIGV4ZWND
YWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFuZCk7Cisg
ICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlY0NhbGxlZS0+dW5j
aGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWND
YWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2FsbGVl
LT5zZXRSZXR1cm5QQyhiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbGxpbnRfZ2VuZXJpY19y
ZXR1cm5fcG9pbnQpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CisgICAgZXhl
Yy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0d2lz
ZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX2V2YWwpKTsKKyAgICAK
KyAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFsKSkK
KyAgICAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNh
bGxlZUFzVmFsdWUpOworICAgIAorICAgIGdsb2JhbERhdGEuaG9zdENhbGxSZXR1cm5WYWx1ZSA9
IGV2YWwoZXhlY0NhbGxlZSk7CisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMs
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCit7CisgICAgQVNT
RVJUKGV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIEpTVmFs
dWUgYWN0aXZhdGlvblZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIGlmICghYWN0
aXZhdGlvblZhbHVlKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT5yZWdpc3RlcnMo
KVt1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKV0uanNWYWx1ZSgp
KSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkK
KyAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAg
fQorICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0
aW9uID0gYXNBY3RpdmF0aW9uKGFjdGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVh
ck9mZihleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT5yZWdp
c3RlcnMoKVt1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKV0uanNW
YWx1ZSgpKQorICAgICAgICBhc0FyZ3VtZW50cyh2KS0+ZGlkVGVhck9mZkFjdGl2YXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBhY3RpdmF0aW9uKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cykKK3sKKyAgICBBU1NFUlQo
ZXhlYy0+Y29kZUJsb2NrKCktPnVzZXNBcmd1bWVudHMoKSAmJiAhZXhlYy0+Y29kZUJsb2NrKCkt
Pm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgYXNBcmd1bWVudHMoZXhlYy0+cmVnaXN0ZXJz
KClbdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCldLmpzVmFsdWUo
KSktPnRlYXJPZmYoZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9zdHJjYXQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsICZM
TElOVF9PUCgyKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90b19wcmltaXRpdmUpCit7CisgICAgTExJTlRfUkVUVVJOKExMSU5UX09QKDIpLmpzVmFs
dWUoKS50b1ByaW1pdGl2ZShleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9n
ZXRfcG5hbWVzKQoreworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAg
ICBpZiAodi5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBjICs9IHBjWzVdLnUub3Bl
cmFuZDsKKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBv
ID0gdi50b09iamVjdChleGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVj
dHVyZSgpOworICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0
b3IgPSBzdHJ1Y3R1cmUtPmVudW1lcmF0aW9uQ2FjaGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlO
YW1lSXRlcmF0b3IgfHwganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hh
aW4oKSAhPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpKQorICAgICAgICBqc1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8p
OworICAgIAorICAgIExMSU5UX09QKDEpID0gSlNWYWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9y
KTsKKyAgICBMTElOVF9PUCgyKSA9IEpTVmFsdWUobyk7CisgICAgTExJTlRfT1AoMykgPSBSZWdp
c3Rlcjo6d2l0aEludCgwKTsKKyAgICBMTElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpz
UHJvcGVydHlOYW1lSXRlcmF0b3ItPnNpemUoKSk7CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xF
TkdUSChvcF9nZXRfcG5hbWVzKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25leHRfcG5hbWUpCit7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVj
dChMTElOVF9PUCgyKS5qc1ZhbHVlKCkpOworICAgIEpTU3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3Ry
aW5nKExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgaWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4
ZWMsIElkZW50aWZpZXIoZXhlYywgcHJvcGVydHktPnZhbHVlKGV4ZWMpKSkpIHsKKyAgICAgICAg
Ly8gR28gdG8gdGFyZ2V0LgorICAgICAgICBwYyArPSBwY1s2XS51Lm9wZXJhbmQ7CisgICAgfSAv
LyBFbHNlLCBkb24ndCBjaGFuZ2UgdGhlIFBDLCBzbyB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxv
b3AuCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNo
X3Njb3BlKQoreworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBK
U09iamVjdCogbyA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4o
ZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSkKK3sKKyAgICBleGVjLT5zZXRT
Y29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cG9wKCkpOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpCit7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogc2Nv
cGUgPSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgY29kZUJsb2NrLT5pZGVudGlm
aWVyKHBjWzJdLnUub3BlcmFuZCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgRG9udERlbGV0ZSk7
CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goc2NvcGUp
KTsKKyAgICBMTElOVF9SRVRVUk4oc2NvcGUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfdGhyb3cpCit7CisgICAgTExJTlRfVEhST1coTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQorewor
ICAgIExMSU5UX1RIUk9XKGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIExMSU5UX09QX0MoMSku
anNWYWx1ZSgpLnRvU3RyaW5nKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9kZWJ1ZykKK3sKKyAgICBpbnQgZGVidWdIb29rSUQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAg
aW50IGZpcnN0TGluZSA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgbGFzdExpbmUgPSBwY1sz
XS51Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5k
ZWJ1ZyhleGVjLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExp
bmUsIGxhc3RMaW5lKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQoreworICAgICgqUHJvZmlsZXI6OmVuYWJs
ZWRQcm9maWxlclJlZmVyZW5jZSgpKS0+d2lsbEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNW
YWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Byb2ZpbGVfZGlkX2NhbGwpCit7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVm
ZXJlbmNlKCkpLT5kaWRFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIExMSW50SGVscGVyc19oCisjZGVmaW5lIExMSW50SGVscGVyc19o
CisKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitj
bGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7
CisKK3R5cGVkZWYgaW50NjRfdCBIZWxwZXJSZXR1cm5UeXBlOworCitleHRlcm4gIkMiIEhlbHBl
clJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbios
IGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlw
ZSBsbGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hl
cmUsIGludCBvcGVyYW5kKTsKKworI2RlZmluZSBMTElOVF9IRUxQRVJfREVDTChuYW1lKSBcCisg
ICAgZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50XyMjbmFtZShFeGVjU3RhdGUqIGV4
ZWMsIEluc3RydWN0aW9uKiBwYykKKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUp
OworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpOwor
TExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7
CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJf
REVDTCh0cmFjZSk7CitMTElOVF9IRUxQRVJfREVDTChzcGVjaWFsX3RyYWNlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGVudHJ5X29zcik7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfYXJpdHlD
aGVjayk7CitMTElOVF9IRUxQRVJfREVDTChsb29wX29zcik7CitMTElOVF9IRUxQRVJfREVDTChy
ZXBsYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Ny
ZWF0ZV9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1l
bnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY29udmVydF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXdfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25ld19yZWdleHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25zdHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9n
cmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9k
ZWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wb3N0X2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1i
ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfYWRkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3N1Yik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xz
aGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl91cnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9iaXR4b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9pbnN0YW5jZW9mKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfYm9vbGVhbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX29iamVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24p
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9yZXNvbHZlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9yZXNvbHZlX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9w
cm9wZXJ0eV9leGlzdHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9i
YXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9nZXRfYXJndW1lbnRzX2xlbmd0aCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5
X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2dldF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9h
cmd1bWVudF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZGVsX2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lu
ZGV4KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wdXRfc2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBf
c2NvcGVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qdHJ1ZSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfamZhbHNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bmxlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3N3aXRjaF9pbW0pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9jaGFyKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfZnVuYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmNfZXhw
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90
ZWFyX29mZl9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNhdCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZlKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9nZXRfcG5hbWVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXh0X3BuYW1l
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wb3Bfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3
X3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9kZWJ1Zyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpOworCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50SGVscGVyc19oCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29u
ZmlnLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludE9mZmxp
bmVBc21Db25maWdfaAorI2RlZmluZSBMTEludE9mZmxpbmVBc21Db25maWdfaAorCisjaW5jbHVk
ZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4NikKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2
IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisjZW5kaWYKKworI2lmIENQVShB
Uk12NykKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElO
RV9BU01fQVJNdjcgMAorI2VuZGlmCisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisjZGVmaW5lIE9G
RkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FT
U0VSVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgQ1BVKEJJR19FTkRJQU4pCisjZGVmaW5lIE9G
RkxJTkVfQVNNX0JJR19FTkRJQU4gMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VO
RElBTiAwCisjZW5kaWYKKworI2lmIEVOQUJMRShMTElOVF9PU1JfVE9fSklUKQorI2RlZmluZSBP
RkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRf
RU5BQkxFRCAwCisjZW5kaWYKKworI2lmIExMSU5UX0VYRUNVVElPTl9UUkFDSU5HCisjZGVmaW5l
IE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVf
QVNNX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNlbmRpZgorCisjZW5kaWYgLy8gTExJbnRPZmZsaW5l
QXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQWxsb2NhdGlvblNwYWNlLmgi
CisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1
ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVFN0dWJz
LmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlN0eXBl
SW5mby5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKdW1wVGFi
bGUuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRlICJNYXJr
ZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgorI2luY2x1ZGUgIlNjb3BlQ2hh
aW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5o
IgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0lt
cGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgT0ZGTElORV9BU01fT0ZGU0VUT0Yo
Y2xhenosIGZpZWxkKSBPQkpFQ1RfT0ZGU0VUT0YoY2xhenosIGZpZWxkKQorCitjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCog
ZHVtbXkoKTsKK307CisKK2NvbnN0IHVuc2lnbmVkKiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KCkKK3sKKyNpbmNsdWRlICJMTEludERlc2lyZWRPZmZzZXRzLmgiCisgICAgcmV0dXJuIGV4
dHJhY3RvclRhYmxlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworaW50IG1haW4oaW50LCBj
aGFyKiopCit7CisgICAgLy8gT3V0IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0aW9uLCBtYWtlIHN1
cmUgdGhhdCBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkgaXMgbGl2ZSwKKyAgICAvLyBh
bmQgdGhlIGV4dHJhY3RvclRhYmxlIGlzIGxpdmUsIHRvby4KKyAgICBwcmludGYoIiVwXG4iLCBK
U0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSk7CisgICAgcmV0dXJuIDA7Cit9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludFRo
dW5rcy5oIgorCisjaW5jbHVkZSAiSlNJbnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRlICJMaW5rQnVm
ZmVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIExMSW50IHsKKworc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIHZvaWQgKCp0YXJn
ZXQpKCkpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIAorICAgIC8vIEZJWE1FOiB0
aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20gbm90
IHN1cmUgSSBjYXJlLgorICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRy
KGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7Cisg
ICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0KTsKKyAgICByZXR1cm4gcGF0Y2hCdWZmZXIu
ZmluYWxpemVDb2RlKCk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNh
bGxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICBy
ZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25G
b3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkK
K3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9i
YWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayk7Cit9CisKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2spOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5l
cmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9ldmFsX3Byb2xvZ3VlKTsKK30KKworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xv
YmFsRGF0YSwgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpMTEludAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVu
a3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVu
a3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRo
dW5rcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRUaHVua3NfaAorI2RlZmlu
ZSBMTEludFRodW5rc19oCisKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsRGF0YTsKKworbmFtZXNwYWNlIExMSW50
IHsKKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5l
cmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JD
b25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2Jh
bERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5
Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludFRodW5rc19oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzMjQgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBDcmFzaCBjb3Vyc2Ug
b24gdGhlIGxhbmd1YWdlIHRoYXQgdGhpcyBpcyB3cml0dGVuIGluICh3aGljaCBJIGp1c3QgY2Fs
bAorIyAiYXNzZW1ibHkiIGV2ZW4gdGhvdWdoIGl0J3MgbW9yZSB0aGFuIHRoYXQpOgorIworIyAt
IE1vc3RseSBnYXMtc3R5bGUgb3BlcmFuZCBvcmRlcmluZy4gVGhlIGxhc3Qgb3BlcmFuZCB0ZW5k
cyB0byBiZSB0aGUKKyMgICBkZXN0aW5hdGlvbi4gU28gImEgOj0gYiIgaXMgd3JpdHRlbiBhcyAi
bW92IGIsIGEiLiBCdXQgdW5saWtlIGdhcywKKyMgICBjb21wYXJpc29ucyBhcmUgaW4tb3JkZXIs
IHNvICJpZiAoYSA8IGIpIiBpcyB3cml0dGVuIGFzCisjICAgImJpbHQgYSwgYiwgLi4uIi4KKyMK
KyMgLSAiYiIgPSBieXRlLCAiaCIgPSAxNi1iaXQgd29yZCwgImkiID0gMzItYml0IHdvcmQsICJw
IiA9IHBvaW50ZXIuCisjICAgQ3VycmVudGx5IHRoaXMgaXMganVzdCAzMi1iaXQgc28gImkiIGFu
ZCAicCIgYXJlIGludGVyY2hhbmdlYWJsZQorIyAgIGV4Y2VwdCB3aGVuIGFuIG9wIHN1cHBvcnRz
IG9uZSBidXQgbm90IHRoZSBvdGhlci4KKyMKKyMgLSBJbiBnZW5lcmFsLCB2YWxpZCBvcGVyYW5k
cyBmb3IgbWFjcm8gaW52b2NhdGlvbnMgYW5kIGluc3RydWN0aW9ucyBhcmUKKyMgICByZWdpc3Rl
cnMgKGVnICJ0MCIpLCBhZGRyZXNzZXMgKGVnICI0W3QwXSIpLCBiYXNlLWluZGV4IGFkZHJlc3Nl
cworIyAgIChlZyAiN1t0MCwgdDEsIDJdIiksIGFic29sdXRlIGFkZHJlc3NlcyAoZWcgIjB4YTAw
MDAwMDBbXSIpLCBvciBsYWJlbHMKKyMgICAoZWcgIl9mb28iIG9yICIuZm9vIikuIE1hY3JvIGlu
dm9jYXRpb25zIGNhbiBhbHNvIHRha2UgYW5vbnltb3VzCisjICAgbWFjcm9zIGFzIG9wZXJhbmRz
LiBJbnN0cnVjdGlvbnMgY2Fubm90IHRha2UgYW5vbnltb3VzIG1hY3Jvcy4KKyMKKyMgLSBMYWJl
bHMgbXVzdCBoYXZlIG5hbWVzIHRoYXQgYmVnaW4gd2l0aCBlaXRoZXIgIl8iIG9yICIuIi4gIEEg
Ii4iIGxhYmVsCisjICAgaXMgbG9jYWwgYW5kIGdldHMgcmVuYW1lZCBiZWZvcmUgY29kZSBnZW4g
dG8gbWluaW1pemUgbmFtZXNwYWNlCisjICAgcG9sbHV0aW9uLiBBICJfIiBsYWJlbCBpcyBhbiBl
eHRlcm4gc3ltYm9sIChpLmUuICIuZ2xvYmwiKS4gVGhlICJfIgorIyAgIG1heSBvciBtYXkgbm90
IGJlIHJlbW92ZWQgZHVyaW5nIGNvZGUgZ2VuIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBhc20K
KyMgICBjb252ZW50aW9ucyBmb3IgQyBuYW1lIG1hbmdsaW5nIG9uIHRoZSB0YXJnZXQgcGxhdGZv
cm0gbWFuZGF0ZSBhICJfIgorIyAgIHByZWZpeC4KKyMKKyMgLSBBICJtYWNybyIgaXMgYSBsYW1i
ZGEgZXhwcmVzc2lvbiwgd2hpY2ggbWF5IGJlIGVpdGhlciBhbm9ueW1vdXMgb3IKKyMgICBuYW1l
ZC4gQnV0IHRoaXMgaGFzIGNhdmVhdHMuICJtYWNybyIgY2FuIHRha2UgemVybyBvciBtb3JlIGFy
Z3VtZW50cywKKyMgICB3aGljaCBtYXkgYmUgbWFjcm9zIG9yIGFueSB2YWxpZCBvcGVyYW5kcywg
YnV0IGl0IGNhbiBvbmx5IHJldHVybgorIyAgIGNvZGUuIEJ1dCB5b3UgY2FuIGRvIFR1cmluZy1j
b21wbGV0ZSB0aGluZ3MgdmlhIGNvbnRpbnVhdGlvbiBwYXNzaW5nCisjICAgc3R5bGU6ICJtYWNy
byBmb28gKGEsIGIpIGIoYSkgZW5kIGZvbyhmb28sIGZvbykiLiBBY3R1YWxseSwgZG9uJ3QgZG8K
KyMgICB0aGF0LCBzaW5jZSB5b3UnbGwganVzdCBjcmFzaCB0aGUgYXNzZW1ibGVyLgorIworIyAt
IEFuICJpZiIgaXMgYSBjb25kaXRpb25hbCBvbiBzZXR0aW5ncy4gQW55IGlkZW50aWZpZXIgc3Vw
cGxpZWQgaW4gdGhlCisjICAgcHJlZGljYXRlIG9mIGFuICJpZiIgaXMgYXNzdW1lZCB0byBiZSBh
ICNkZWZpbmUgdGhhdCBpcyBhdmFpbGFibGUKKyMgICBkdXJpbmcgY29kZSBnZW4uIFNvIHlvdSBj
YW4ndCB1c2UgImlmIiBmb3IgY29tcHV0YXRpb24gaW4gYSBtYWNybywgYnV0CisjICAgeW91IGNh
biB1c2UgaXQgdG8gc2VsZWN0IGRpZmZlcmVudCBwaWVjZXMgb2YgY29kZSBmb3IgZGlmZmVyZW50
CisjICAgcGxhdGZvcm1zLgorIworIyAtIEFyZ3VtZW50cyB0byBtYWNyb3MgZm9sbG93IGxleGlj
YWwgc2NvcGluZyByYXRoZXIgdGhhbiBkeW5hbWljIHNjb3BpbmcuCisjICAgQ29uc3QncyBhbHNv
IGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgYW5kIG1heSBvdmVycmlkZSAoaGlkZSkgYXJndW1lbnRz
CisjICAgb3Igb3RoZXIgY29uc3RzLiBBbGwgdmFyaWFibGVzIChhcmd1bWVudHMgYW5kIGNvbnN0
YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gb3BlcmFuZHMuIEFkZGl0aW9uYWxseSwgYXJndW1l
bnRzIChidXQgbm90IGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gbWFjcm9zLgorCisK
KyMgVGhlc2UgZGVjbGFyYXRpb25zIG11c3QgbWF0Y2ggaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxl
LmguCitjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gNDgKK2NvbnN0IEFyZ3VtZW50Q291bnQg
PSAtNDgKK2NvbnN0IENhbGxlckZyYW1lID0gLTQwCitjb25zdCBDYWxsZWUgPSAtMzIKK2NvbnN0
IFNjb3BlQ2hhaW4gPSAtMjQKK2NvbnN0IFJldHVyblBDID0gLTE2Citjb25zdCBDb2RlQmxvY2sg
PSAtOAorCitjb25zdCBUaGlzQXJndW1lbnRPZmZzZXQgPSAtQ2FsbEZyYW1lSGVhZGVyU2l6ZSAt
IDgKKworIyBEZWNsYXJlIHNvbWUgYWxpYXNlcyBmb3IgdGhlIHJlZ2lzdGVycyB3ZSB3aWxsIHVz
ZS4KK2NvbnN0IFBDID0gdDQKKworIyBPZmZzZXRzIG5lZWRlZCBmb3IgcmVhc29uaW5nIGFib3V0
IHZhbHVlIHJlcHJlc2VudGF0aW9uLgoraWYgQklHX0VORElBTgorICAgIGNvbnN0IFRhZ09mZnNl
dCA9IDAKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gNAorZWxzZQorICAgIGNvbnN0IFRhZ09m
ZnNldCA9IDQKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gMAorZW5kCisKKyMgVmFsdWUgcmVw
cmVzZW50YXRpb24gY29uc3RhbnRzLgorY29uc3QgSW50MzJUYWcgPSAtMQorY29uc3QgQm9vbGVh
blRhZyA9IC0yCitjb25zdCBOdWxsVGFnID0gLTMKK2NvbnN0IFVuZGVmaW5lZFRhZyA9IC00Citj
b25zdCBDZWxsVGFnID0gLTUKK2NvbnN0IEVtcHR5VmFsdWVUYWcgPSAtNgorY29uc3QgRGVsZXRl
ZFZhbHVlVGFnID0gLTcKK2NvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRhZworCisjIFR5
cGUgY29uc3RhbnRzLgorY29uc3QgU3RyaW5nVHlwZSA9IDUKK2NvbnN0IE9iamVjdFR5cGUgPSAx
MAorCisjIFR5cGUgZmxhZ3MgY29uc3RhbnRzLgorY29uc3QgTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCA9IDEKK2NvbnN0IEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDIKK2NvbnN0IEltcGxlbWVudHNE
ZWZhdWx0SGFzSW5zdGFuY2UgPSA4CisKKyMgSGVhcCBhbGxvY2F0aW9uIGNvbnN0YW50cy4KK2Nv
bnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9IDEKKworIyBCeXRlY29kZSBvcGVyYW5k
IGNvbnN0YW50cy4KK2NvbnN0IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAw
MAorCisjIENvZGUgdHlwZSBjb25zdGFudHMuCitjb25zdCBHbG9iYWxDb2RlID0gMAorY29uc3Qg
RXZhbENvZGUgPSAxCitjb25zdCBGdW5jdGlvbkNvZGUgPSAyCisKKyMgVGhlIGludGVycHJldGVy
IHN0ZWFscyB0aGUgdGFnIHdvcmQgb2YgdGhlIGFyZ3VtZW50IGNvdW50LgorY29uc3QgTExJbnRS
ZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQKKworIyBUaGlzIG11c3QgbWF0Y2gg
d3RmL1ZlY3Rvci5oLgorY29uc3QgVmVjdG9yU2l6ZU9mZnNldCA9IDAKK2NvbnN0IFZlY3RvckJ1
ZmZlck9mZnNldCA9IDQKKworIyBTdHJpbmcgZmxhZ3MuCitjb25zdCBIYXNoRmxhZ3M4Qml0QnVm
ZmVyID0gNjQKKworIyBVdGlsaXRpZXMKK21hY3JvIGNyYXNoKCkKKyAgICBzdG9yZWkgMCwgMHhi
YmFkYmVlZltdCisgICAgbW92ZSAwLCB0MAorICAgIGNhbGwgdDAKK2VuZAorCittYWNybyBhc3Nl
cnQoYXNzZXJ0aW9uKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGFzc2VydGlvbigu
b2spCisgICAgICAgIGNyYXNoKCkKKyAgICAub2s6CisgICAgZW5kCitlbmQKKworbWFjcm8gcHJl
c2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIpCisgICAgaWYg
QVJNdjcKKyAgICAgICAgbW92ZSBsciwgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2lmIFg4
NgorICAgICAgICBwb3AgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJy
b3IKKyAgICBlbmQKK2VuZAorCittYWNybyByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVy
bihzb3VyY2VSZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lz
dGVyLCBscgorICAgIGVsc2lmIFg4NgorICAgICAgICBwdXNoIHNvdXJjZVJlZ2lzdGVyCisgICAg
ZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIGRpc3BhdGNoKGFkdmFu
Y2UpCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3Jv
IGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQorICAgIGxvYWRpIHBjT2Zmc2V0LCB0MAorICAgIGxz
aGlmdGkgMiwgdDAKKyAgICBhZGRwIHQwLCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8g
ZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRb
Y2ZyXSwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGNDYWxsMihmdW5jdGlvbiwgYXJn
MSwgYXJnMikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGFyZzEsIHQwCisgICAgICAgIG1v
dmUgYXJnMiwgdDEKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBhcmcxLCAwCisgICAgICAg
IHBva2UgYXJnMiwgMQorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKKyAgICBjYWxs
IGZ1bmN0aW9uCitlbmQKKworIyBUaGlzIGJhcmVseSB3b3Jrcy4gYXJnMyBhbmQgYXJnNCBzaG91
bGQgcHJvYmFibHkgYmUgaW1tZWRpYXRlcy4KK21hY3JvIGNDYWxsNChmdW5jdGlvbiwgYXJnMSwg
YXJnMiwgYXJnMywgYXJnNCkKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGFyZzEsIHQwCisg
ICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICAgICAgbW92ZSBhcmczLCB0MgorICAgICAgICBtb3Zl
IGFyZzQsIHQzCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAorICAgICAgICBw
b2tlIGFyZzIsIDEKKyAgICAgICAgcG9rZSBhcmczLCAyCisgICAgICAgIHBva2UgYXJnNCwgMwor
ICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKKyAgICBjYWxsIGZ1bmN0aW9uCitlbmQK
KworbWFjcm8gY2FsbEhlbHBlcihoZWxwZXIpCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykK
KyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKKyMgRGVidWdnaW5nIG9w
ZXJhdGlvbiBpZiB5b3UnZCBsaWtlIHRvIHByaW50IGFuIG9wZXJhbmQgaW4gdGhlIGluc3RydWN0
aW9uIHN0cmVhbS4KK21hY3JvIHRyYWNlT3BlcmFuZChmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAg
Y0NhbGw0KF9sbGludF90cmFjZV9vcGVyYW5kLCBjZnIsIFBDLCBmcm9tV2hlcmUsIG9wZXJhbmQp
CisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVnZ2luZyBv
cGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCB0aGUgdmFsdWUgb2YgYW4gb3BlcmFuZCBp
biB0aGUgaW5zdHJ1Y3Rpb24KKyMgc3RyZWFtLgorbWFjcm8gdHJhY2VWYWx1ZShmcm9tV2hlcmUs
IG9wZXJhbmQpCisgICAgY0NhbGw0KF9sbGludF90cmFjZV92YWx1ZSwgY2ZyLCBQQywgZnJvbVdo
ZXJlLCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKwor
bWFjcm8gdHJhY2VFeGVjdXRpb24oKQorICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAgICAg
IGNhbGxIZWxwZXIoX2xsaW50X3RyYWNlKQorICAgIGVuZAorZW5kCisKKyMgQ2FsbCBhIGhlbHBl
ciBmb3IgY2FsbCBvcGNvZGVzLgorbWFjcm8gY2FsbENhbGxIZWxwZXIoYWR2YW5jZSwgaGVscGVy
LCBhY3Rpb24pCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMsIHQwCisgICAgc3RvcmVwIHQwLCBB
cmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBD
KQorICAgIG1vdmUgdDEsIGNmcgorICAgIGFjdGlvbih0MCkKK2VuZAorCittYWNybyBzbG93UGF0
aEZvckNhbGwoYWR2YW5jZSwgaGVscGVyKQorICAgIGNhbGxDYWxsSGVscGVyKAorICAgICAgICBh
ZHZhbmNlLAorICAgICAgICBoZWxwZXIsCisgICAgICAgIG1hY3JvIChjYWxsZWUpCisgICAgICAg
ICAgICBjYWxsIGNhbGxlZQorICAgICAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgICAg
ICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVChpbmNyZW1lbnQsIGFjdGlvbikK
KyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAg
ICAgICAgYmFkZGlzIGluY3JlbWVudCwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJb
dDBdLCAuY29udGludWUKKyAgICAgICAgYWN0aW9uKCkKKyAgICAuY29udGludWU6CisgICAgZW5k
CitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGNoZWNrU3dpdGNo
VG9KSVQoCisgICAgICAgIDEsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBzdG9yZWkg
UEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgICAgICAgICAgY0NhbGwyKF9s
bGludF9sb29wX29zciwgY2ZyLCBQQykKKyAgICAgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAg
ICAgICAgYnRweiB0MCwgLnJlY292ZXIKKyAgICAgICAgICAgIGptcCB0MAorICAgICAgICAucmVj
b3ZlcjoKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwg
UEMKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1
ZSgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMTAsCisgICAgICAgIG1hY3JvICgp
CisgICAgICAgICAgICBjYWxsSGVscGVyKF9sbGludF9yZXBsYWNlKQorICAgICAgICBlbmQpCitl
bmQKKworbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoaW5kZXgpCisgICAgYXNzZXJ0KG1hY3JvIChv
aykgYmlsdCBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIG9rIGVuZCkKK2VuZAor
CisjIEluZGV4LCB0YWcsIGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4g
SW5kZXggaXMgbm90CisjIGNoYW5nZWQuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKGlu
ZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0
YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAg
am1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJP
ZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVy
ZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsb2FkcCBUYWdPZmZzZXRbcGF5
bG9hZCwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGlu
ZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBtYXkg
YmUgdGhlIHNhbWUgcmVnaXN0ZXIuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhp
bmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwg
dGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAg
IGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YWcKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbdGFnXSwgdGFnCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBp
bmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAg
ICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbHNoaWZ0aSAzLCBpbmRleAorICAgIGFkZHAgaW5k
ZXgsIHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdGFnXSwgcGF5bG9hZAorICAgIGxvYWRw
IFRhZ09mZnNldFt0YWddLCB0YWcKKy5kb25lOgorZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywgcGF5bG9hZCwgc2xvdykKKyAgICBi
aWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIGV4cGVjdGVkVGFnLCBzbG93CisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQor
LmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxv
YWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBp
bmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAg
ICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgYmluZXEgVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4
LCA4XSwgZXhwZWN0ZWRUYWcsIHNsb3cKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQs
IGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworbWFjcm8gd3JpdGVCYXJyaWVyKHRh
ZywgcGF5bG9hZCkKKyAgICAjIE5vdGhpbmcgdG8gZG8gc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGdl
bmVyYXRpb25hbCBvciBpbmNyZW1lbnRhbCBjb2xsZWN0b3IuCitlbmQKKworCisjIEluZGljYXRl
IHRoZSBiZWdpbm5pbmcgb2YgTExJbnQuCitfbGxpbnRfYmVnaW46CisgICAgY3Jhc2goKQorCisK
KyMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIKKworbWFjcm8gZnVuY3Rpb25Gb3JD
YWxsQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENhbGxlZVtjZnJd
LCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJn
ZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxl
OjptX2NvZGVCbG9ja0ZvckNhbGxbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5k
CisKK21hY3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lz
dGVyKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEpT
RnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisg
ICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdFt0YXJn
ZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2Rl
QmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRh
cmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNl
UmVnaXN0ZXIpCisgICAgc3RvcmVwIHNvdXJjZVJlZ2lzdGVyLCBDb2RlQmxvY2tbY2ZyXQorZW5k
CisKK21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAg
ICMgTm90aGluZyB0byBkbyEKK2VuZAorCisjIERvIHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQg
dG8gZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENvZGVCbG9jayoKKyMg
aW4gdDEuIE1heSBhbHNvIHRyaWdnZXIgcHJvbG9ndWUgZW50cnkgT1NSLgorbWFjcm8gcHJvbG9n
dWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zckhlbHBlciwgdHJhY2VIZWxw
ZXIpCisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIAorICAgICMg
U2V0IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgorICAgIHN0
b3JlcCB0MiwgUmV0dXJuUENbY2ZyXQorICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAgICAg
IGNhbGxIZWxwZXIodHJhY2VIZWxwZXIpCisgICAgZW5kCisgICAgY29kZUJsb2NrR2V0dGVyKHQx
KQorICAgIGlmIEpJVF9FTkFCTEVECisgICAgICAgIGJhZGRpcyA1LCBDb2RlQmxvY2s6Om1fbGxp
bnRFeGVjdXRlQ291bnRlclt0MV0sIC5jb250aW51ZQorICAgICAgICBjQ2FsbDIob3NySGVscGVy
LCBjZnIsIFBDKQorICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgYnRweiB0MCwgLnJlY292
ZXIKKyAgICAgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICAgICAgcmVzdG9yZVJldHVy
bkFkZHJlc3NCZWZvcmVSZXR1cm4odDIpCisgICAgICAgIGptcCB0MAorICAgIC5yZWNvdmVyOgor
ICAgICAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCisgICAgLmNvbnRpbnVlOgorICAgIGVuZAorICAg
IGNvZGVCbG9ja1NldHRlcih0MSkKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgUEMuCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjpJbnN0cnVjdGlvbnM6Om1faW5zdHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwg
UEMKK2VuZAorCisjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdo
YXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgorIyBNdXN0IGNhbGwgZGlzcGF0Y2goMCkgYWZ0
ZXIgY2FsbGluZyB0aGlzLgorbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbigpCisgICAgIyBQ
cm9maWxlIHRoZSBhcmd1bWVudHMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hvaWNlIGJ1
dCB0byBkbyB0aGlzLgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwg
dDAKKyAgICBidGl6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9uZQorICAgIG5lZ2kgdDAKKyAgICBs
c2hpZnRpIDMsIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxl
cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MV0sIHQzCisuYXJndW1lbnRQcm9maWxlTG9vcDoKKyAg
ICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MF0sIHQyCisgICAg
c3RvcmVpIHQyLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNldFt0M10KKyAgICBs
b2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zmc2V0W2NmciwgdDBdLCB0MgorICAg
IHN0b3JlaSB0MiwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3QzXQor
ICAgIGFkZHAgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDMKKyAgICBiYWRkaW56IDgsIHQwLCAuYXJn
dW1lbnRQcm9maWxlTG9vcAorLmFyZ3VtZW50UHJvZmlsZURvbmU6CisgICAgCisgICAgIyBDaGVj
ayBzdGFjayBoZWlnaHQuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lzdGVy
c1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MgorICAg
IGxvYWRwIEpTR2xvYmFsRGF0YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MiAgICMgRklYTUU6IENhbiBn
ZXQgdG8gdGhlIFJlZ2lzdGVyRmlsZSBmcm9tIHRoZSBKSVRTdGFja0ZyYW1lCisgICAgbHNoaWZ0
aSAzLCB0MAorICAgIGFkZHAgdDAsIGNmciwgdDAKKyAgICBicGFlcSBJbnRlcnByZXRlcjo6bV9y
ZWdpc3RlckZpbGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hlaWdodE9L
CisKKyAgICAjIFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBoZWxw
ZXIuCisgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVjaykKKy5zdGFja0hl
aWdodE9LOgorZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2gg
aXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCittYWNybyBmdW5jdGlvbkFyaXR5Q2hl
Y2soZG9uZUxhYmVsLCBoZWxwZXIpCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50
Q291bnRbY2ZyXSwgdDAKKyAgICBiaWVxIHQwLCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0
MV0sIGRvbmVMYWJlbAorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpICAgIyBUaGlzIGhlbHBl
ciBoYXMgYSBzaW1wbGUgcHJvdG9jb2w6IHQwID0gMCA9PiBubyBlcnJvciwgdDAgIT0gMCA9PiBl
cnJvcgorICAgIG1vdmUgdDEsIGNmcgorICAgIGJ0aXogdDAsIC5jb250aW51ZQorICAgIGxvYWRw
IEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0
YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdl
dE1hY2hpbmVQQ0ZvclRocm93W3QxXQorLmNvbnRpbnVlOgorICAgICMgUmVsb2FkIENvZGVCbG9j
ayBhbmQgUEMsIHNpbmNlIHRoZSBoZWxwZXIgY2xvYmJlcmVkIGl0LgorICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0
MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0aW9ucyArIFZl
Y3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCisgICAgam1wIGRvbmVMYWJlbAorZW5kCisKK19sbGlu
dF9wcm9ncmFtX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0
dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50
X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2V2YWxfcHJvbG9n
dWU6CisgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9u
Q29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUp
CisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWU6
CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNv
ZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1
bmN0aW9uX2Zvcl9jYWxsKQorLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luOgorICAgIGZ1bmN0aW9uSW5p
dGlhbGl6YXRpb24oKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0
Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29z
ciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCisuZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKCkKKyAgICBk
aXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2s6
CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNv
ZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2Vf
YXJpdHlDaGVja19mb3JfY2FsbCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9y
Q2FsbEJlZ2luLCBfbGxpbnRfaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKKworCitfbGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZv
ckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGlu
dF9lbnRyeV9vc3JfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0
cnVjdCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4s
IF9sbGludF9oZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spCisKKyMgSW5zdHJ1Y3Rpb24gaW1w
bGVtZW50YXRpb25zCisKK19sbGludF9vcF9lbnRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVZh
cnNbdDJdLCB0MgorICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZQorICAgIG1vdmUgVW5kZWZpbmVk
VGFnLCB0MAorICAgIG1vdmUgMCwgdDEKKy5vcEVudGVyTG9vcDoKKyAgICBzdWJpIDEsIHQyCisg
ICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBidGlueiB0MiwgLm9wRW50ZXJMb29wCisub3BFbnRl
ckRvbmU6CisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRv
bmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pCisub3BD
cmVhdGVBY3RpdmF0aW9uRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbml0
X2xhenlfcmVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVp
IDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9jcmVhdGVfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcs
IC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3Jl
YXRlX2FyZ3VtZW50cykKKy5vcENyZWF0ZUFyZ3VtZW50c0RvbmU6CisgICAgZGlzcGF0Y2goMikK
KworCittYWNybyBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kZXgsIGNsYXNzSW5m
b09mZnNldCwgc3RydWN0dXJlLCByZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2xvd0Nhc2Up
CisgICAgY29uc3Qgb2Zmc2V0T2ZNeVNpemVDbGFzcyA9IEpTR2xvYmFsRGF0YTo6aGVhcCArIEhl
YXA6Om1fb2JqZWN0U3BhY2UgKyBBbGxvY2F0aW9uU3BhY2U6Om1fbWFya2VkU3BhY2UgKyBNYXJr
ZWRTcGFjZTo6bV9wcmVjaXNlU2l6ZUNsYXNzZXMgKyBzaXplQ2xhc3NJbmRleCAqIHNpemVvZiBN
YXJrZWRTcGFjZTo6U2l6ZUNsYXNzCisgICAgCisgICAgIyBGSVhNRTogd2UgY2FuIGdldCB0aGUg
Z2xvYmFsIGRhdGEgaW4gb25lIGxvYWQgZnJvbSB0aGUgc3RhY2suCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHNjcmF0Y2gxCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbc2Ny
YXRjaDFdLCBzY3JhdGNoMQorICAgIAorICAgICMgR2V0IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJl
ZSBsaXN0LiAgICAKKyAgICBsb2FkcCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6
OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0sIHJlc3VsdAorICAgIGJ0cHogcmVz
dWx0LCBzbG93Q2FzZQorICAgIAorICAgICMgUmVtb3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgZnJl
ZSBsaXN0LgorICAgIGxvYWRwIFtyZXN1bHRdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNo
Miwgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJl
ZUNlbGxbc2NyYXRjaDFdCisKKyAgICAjIEluaXRpYWxpemUgdGhlIG9iamVjdC4KKyAgICBsb2Fk
cCBjbGFzc0luZm9PZmZzZXRbc2NyYXRjaDFdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNo
MiwgW3Jlc3VsdF0KKyAgICBzdG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jl
c3VsdF0KKyAgICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0XQorICAg
IGFkZHAgc2l6ZW9mIEpTT2JqZWN0LCByZXN1bHQsIHNjcmF0Y2gxCisgICAgc3RvcmVwIHNjcmF0
Y2gxLCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbcmVzdWx0XQorZW5kCisKK19sbGludF9v
cF9jcmVhdGVfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQw
CisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCBDZWxsVGFnLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisg
ICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBPYmpl
Y3RUeXBlLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGxvYWRwIEpTT2JqZWN0OjptX2luaGVyaXRv
cklEW3QwXSwgdDIKKyAgICBidHB6IHQyLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGFsbG9jYXRl
QmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6
anNGaW5hbE9iamVjdENsYXNzSW5mbywgdDIsIHQwLCB0MSwgdDMsIC5vcENyZWF0ZVRoaXNTbG93
KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBk
aXNwYXRjaCgzKQorCisub3BDcmVhdGVUaGlzU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfY3JlYXRlX3RoaXMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZ2V0X2Nh
bGxlZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9h
ZHAgUGF5bG9hZE9mZnNldCArIENhbGxlZVtjZnJdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jb252ZXJ0X3RoaXM6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ29udmVydFRoaXNTbG93CisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDAKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlw
ZVt0MF0sIE9iamVjdFR5cGUsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGRpc3BhdGNoKDIpCisK
Ky5vcENvbnZlcnRUaGlzU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY29udmVy
dF90aGlzKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX25ld19vYmplY3Q6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRw
IENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2Jq
ZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0dXJlW3QwXSwgdDEKKyAgICBhbGxvY2F0ZUJhc2ljSlNP
YmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxP
YmplY3RDbGFzc0luZm8sIHQxLCB0MCwgdDIsIHQzLCAub3BOZXdPYmplY3RTbG93KQorICAgIGxv
YWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgy
KQorCisub3BOZXdPYmplY3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdf
b2JqZWN0KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX25ld19hcnJheToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheSkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfYXJyYXlfYnVmZmVyOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2FycmF5X2J1
ZmZlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfcmVnZXhwOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X3JlZ2V4cCkK
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9tb3Y6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIs
IHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX25vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYXNzZXJ0Tm90Q29uc3Rh
bnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5v
cE5vdFNsb3cKKyAgICB4b3JpIDEsIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNw
YXRjaCgzKQorCisub3BOb3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ub3Qp
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZXE6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDIsIHQzLCAub3BFcVNsb3cKKyAgICBiaWVx
IHQyLCBDZWxsVGFnLCAub3BFcVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wRXFTbG93
CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2llcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJv
b2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEVxU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
ZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAg
bG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcEVxTnVsbEltbWVkaWF0ZQorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRibnogU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0
MQorICAgIGptcCAub3BFcU51bGxOb3RJbW1lZGlhdGUKKy5vcEVxTnVsbEltbWVkaWF0ZToKKyAg
ICBjaWVxIHQxLCBOdWxsVGFnLCB0MgorICAgIGNpZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKKyAg
ICBvcmkgdDIsIHQxCisub3BFcU51bGxOb3RJbW1lZGlhdGU6CisgICAgc3RvcmVpIEJvb2xlYW5U
YWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25lcToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBhc3NlcnROb3RDb25z
dGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MiwgdDMsIC5vcE5lcVNs
b3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RU
YWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaW5lcSB0MCwgdDEsIHQw
CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3Jl
aSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcE5l
cVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lcSkKKyAgICBkaXNwYXRjaCg0
KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0
YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BO
ZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisg
ICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wTmVxTnVsbE5vdEltbWVkaWF0ZQor
Lm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBjaW5lcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaW5l
cSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIGFuZGkgdDIsIHQxCisub3BOZXFOdWxsTm90SW1t
ZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAg
ICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQor
CisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkg
MTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDIsIHQzLCB0MSkKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDAKKyAgICBiaW5lcSB0MiwgdDMsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5z
bG93CisgICAgYmluZXEgdDIsIENlbGxUYWcsIC5ub3RTdHJpbmcKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwg
dDMKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3Qy
XSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZworICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZv
ICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93Cisubm90U3RyaW5nOgor
ICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDApCisg
ICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93Ogor
ICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50X29w
X3N0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVm
dCwgcmlnaHQsIHJlc3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hl
bHBlcl9zdHJpY3RlcSkKKworCitfbGxpbnRfb3BfbnN0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVm
dCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9oZWxwZXJfbnN0cmljdGVxKQorCisKK19sbGlu
dF9vcF9sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfbGVzcykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9sZXNzZXE6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzZXEpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dyZWF0ZXIpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcmVxKQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX3ByZV9pbmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENd
LCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZUlu
Y1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJhZGRp
byAxLCB0MSwgLm9wUHJlSW5jU2xvdworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcFByZUluY1Nsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3ByZV9pbmMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3Bf
cHJlX2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
YmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdworICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYnN1YmlvIDEsIHQxLCAu
b3BQcmVEZWNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisg
ICAgZGlzcGF0Y2goMikKKworLm9wUHJlRGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfcHJlX2RlYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3N0X2luYzoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQ
Q10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9z
dEluY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdEluY0RvbmUKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYmFkZGlvIDEs
IHQzLCAub3BQb3N0SW5jU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0SW5jRG9uZToKKyAgICBk
aXNwYXRjaCgzKQorCisub3BQb3N0SW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcG9zdF9pbmMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcG9zdF9kZWM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENd
LCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3RE
ZWNTbG93CisgICAgYmllcSB0MCwgdDEsIC5vcFBvc3REZWNEb25lCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBtb3ZlIHQyLCB0MworICAgIGJzdWJpbyAxLCB0
MywgLm9wUG9zdERlY1Nsb3cKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQx
LCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3Jl
aSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorLm9wUG9zdERlY0RvbmU6CisgICAgZGlz
cGF0Y2goMykKKworLm9wUG9zdERlY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3Bvc3RfZGVjKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3RvX2pzbnVtYmVyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDMKKyAg
ICBiaWVxIHQyLCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklzSW50CisgICAgYmlhZXEgdDIsIEVt
cHR5VmFsdWVUYWcsIC5vcFRvSnNudW1iZXJTbG93Cisub3BUb0pzbnVtYmVySXNJbnQ6CisgICAg
c3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb0pzbnVtYmVyU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fanNudW1iZXIpCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0
MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcE5lZ2F0
ZVNyY05vdEludAorICAgIGJ0aXogdDIsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0ZVNsb3cKKyAgICBu
ZWdpIHQyCisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBz
dG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorLm9w
TmVnYXRlU3JjTm90SW50OgorICAgIGJpYSB0MSwgTG93ZXN0VGFnLCAub3BOZWdhdGVTbG93Cisg
ICAgeG9yaSAweDgwMDAwMDAwLCB0MQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMs
IDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0
Y2goMykKKworLm9wTmVnYXRlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmVn
YXRlKQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZShpbnRl
Z2VyT3BlcmF0aW9uQW5kU3RvcmUsIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRp
IDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0
MCkKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MywgSW50
MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBpbnRlZ2VyT3BlcmF0
aW9uQW5kU3RvcmUodDMsIHQxLCB0MCwgLnNsb3csIHQyKQorICAgIGRpc3BhdGNoKDUpCisKKy5v
cDFOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90IGFuIGludCwg
dGhlIHNlY29uZCBvcGVyYW5kIGNvdWxkIGJlIGFueXRoaW5nLgorICAgIGJpYSB0MiwgTG93ZXN0
VGFnLCAuc2xvdworICAgIGJpYiB0MywgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisg
ICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDEsIGZ0MQorICAgIGptcCAu
b3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDEsIHQzLCBm
dDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBmaWkyZCB0MCwg
dDIsIGZ0MAorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBb
Y2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3AyTm90SW50OgorICAgICMgRmlyc3Qg
b3BlcmFuZCBpcyBkZWZpbml0ZWx5IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGlzIGRlZmlu
aXRlbHkgbm90LgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGJpYSB0MywgTG93ZXN0VGFnLCAu
c2xvdworICAgIGNpMmQgdDAsIGZ0MAorICAgIGZpaTJkIHQxLCB0MywgZnQxCisgICAgZG91Ymxl
T3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQyLCA4XQorICAgIGRp
c3BhdGNoKDUpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNo
KDUpCitlbmQKKworbWFjcm8gYmluYXJ5T3AoaW50ZWdlck9wZXJhdGlvbiwgZG91YmxlT3BlcmF0
aW9uLCBoZWxwZXIpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGlu
dDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBpbnRlZ2VyT3Bl
cmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBU
YWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9h
ZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIGRvdWJsZU9wZXJh
dGlvbiwgaGVscGVyKQorZW5kCisKK19sbGludF9vcF9hZGQ6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJhZGRp
byBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgYWRk
ZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYWRkKQorCisKK19sbGlu
dF9vcF9tdWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJtdWxpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfbXVsKQorCisKK19sbGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJz
dWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkg
c3ViZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfc3ViKQorCisKK19s
bGludF9vcF9kaXY6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3Rv
cmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQor
ICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQor
ICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwg
Lm5vdEludAorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4
LCA4XQorICAgICAgICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6CisgICAgICAgICAg
ICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVu
ZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl9kaXYpCisKKworX2xsaW50X29wX21vZDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkKKyAgICBkaXNwYXRj
aCg0KQorCisKK21hY3JvIGJpdE9wKG9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BD
XSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQy
LCB0MywgdDEpCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
CisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywg
LnNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xvdykK
KyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNh
bGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50X29wX2xzaGlm
dDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfbHNoaWZ0KQorCisKK19sbGludF9vcF9yc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkg
bGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3JzaGlmdCkKKworCitfbGxp
bnRfb3BfdXJzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJp
Z2h0CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAgIGVuZCwKKyAgICAg
ICAgX2xsaW50X2hlbHBlcl91cnNoaWZ0KQorCisKK19sbGludF9vcF9iaXRhbmQ6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdGFuZCkK
KworCitfbGxpbnRfb3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQsIHJpZ2h0IGVuZCwK
KyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXR4b3IpCisKKworX2xsaW50X29wX2JpdG9yOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdG9y
KQorCisKK19sbGludF9vcF9iaXRub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQx
KQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDEsIDhdLCB0MworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wQml0bm90
U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQor
ICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMp
CisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2JpdG5vdCkK
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0
YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ2hl
Y2tIYXNJbnN0YW5jZVNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5z
dGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ2hl
Y2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NoZWNrX2hh
c19pbnN0YW5jZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbnN0YW5jZW9mOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIENoZWNrIHRoYXQgYmFzZVZhbCBpbXBsZW1lbnRz
IHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9yLgorICAgICMgRklYTUU6IFRoaXMgc2hv
dWxkIGJlIGRlcHJlY2F0ZWQuCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGFzc2VydE5vdENv
bnN0YW50KHQwKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1f
dHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5z
dGFuY2UsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgCisgICAgIyBBY3R1YWxseSBkbyB0aGUgd29y
ay4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZGkg
NFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYXNzZXJ0Tm90Q29uc3Rh
bnQodDEpCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BJbnN0
YW5jZW9mU2xvdworICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgQ2VsbFRhZywgLm9w
SW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MQor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFu
Y2VvZlNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIAor
ICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCisgICAgbW92
ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxvb3A6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0Ml0sIHQyCisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZz
ZXRbdDJdLCB0MgorICAgIGJwZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQorICAgIGJ0aW56
IHQyLCAub3BJbnN0YW5jZW9mTG9vcAorCisgICAgbW92ZSAwLCB0MAorLm9wSW5zdGFuY2VvZkRv
bmU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5v
cEluc3RhbmNlb2ZTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbnN0YW5jZW9m
KQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3R5cGVvZjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3R5cGVvZikKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9pc191bmRlZmluZWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc191bmRlZmluZWQpCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfaXNfYm9vbGVhbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Jvb2xlYW4pCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfaXNfbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfaXNfbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX2lzX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2lzX3N0cmluZykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19v
YmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9pc19vYmplY3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfZnVuY3Rpb246
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19m
dW5jdGlvbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pbjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX3Jlc29sdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xs
aW50X29wX3Jlc29sdmVfc2tpcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Jlc29sdmVfc2tpcCkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3Jv
IHJlc29sdmVHbG9iYWwoc2xvdykKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAg
ICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIFByb3Bl
cnR5IGlkZW50aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2suCisgICAgIyAxMltQQ10gIFN0
cnVjdHVyZSBwb2ludGVyLCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4K
KyAgICAjIDE2W1BDXSAgT2Zmc2V0IGluIGdsb2JhbCBvYmplY3QsIGluaXRpYWxpemVkIHRvIDAg
YnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAg
IGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cKKyAgICBs
b2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Qw
XSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVp
IHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0KK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIHJlc29sdmVHbG9iYWwoLm9wUmVzb2x2ZUdsb2JhbFNsb3cpCisgICAg
ZGlzcGF0Y2goNSkKKworLm9wUmVzb2x2ZUdsb2JhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworIyBHaXZlcyB5
b3UgdGhlIHNjb3BlIGluIHQwLCB3aGlsZSBhbGxvd2luZyB5b3UgdG8gb3B0aW9uYWxseSBwZXJm
b3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9uIHRoZQorIyBzY29wZXMgYXMgdGhleSBhcmUgdHJhdmVy
c2VkLiBzY29wZUNoZWNrKCkgaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHJlZ2lz
dGVyCisjIGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdpc3RlciB0aGF0IGNhbiBiZSB1c2Vk
IGZvciBzY3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAorIyB1c2UgdDMsIHNvIHlvdSBj
YW4gaG9sZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJlLgorbWFjcm8gZ2V0U2NvcGUoZGVCcnVpamlu
SW5kZXhPcGVyYW5kLCBzY29wZUNoZWNrKQorICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2Fk
T2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0MgorICAg
IAorICAgIGJ0aXogdDIsIC5kb25lCisgICAgCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQx
CisgICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAubG9v
cAorICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9vcAor
ICAgIAorICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0aW9uUmVnaXN0ZXJbdDFdLCB0MQor
CisgICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KKyAgICBi
aWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlvbgor
ICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3Qw
XSwgdDAKKy5ub0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0MgorICAgIAorICAgIGJ0aXogdDIs
IC5kb25lCisubG9vcDoKKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNo
YWluTm9kZTo6bmV4dFt0MF0sIHQwCisgICAgc3ViaSAxLCB0MgorICAgIGJ0aW56IHQyLCAubG9v
cAorCisuZG9uZToKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYzoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtz
cF0sIHQzCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJlW3QzXSwg
dDMKKyAgICBnZXRTY29wZSgKKyAgICAgICAgMjBbUENdLAorICAgICAgICBtYWNybyAoc2NvcGUs
IHNjcmF0Y2gpCisgICAgICAgICAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3Njb3Bl
XSwgc2NyYXRjaAorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVtzY3JhdGNo
XSwgdDMsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93CisgICAgICAgIGVuZCkKKyAg
ICByZXNvbHZlR2xvYmFsKC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdykKKyAgICBkaXNwYXRj
aCg2KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcmVzb2x2ZSkKKyAgICBkaXNwYXRjaCg2KQorCisub3BSZXNvbHZlR2xv
YmFsRHluYW1pY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xv
YmFsKQorICAgIGRpc3BhdGNoKDYpCisKKworX2xsaW50X29wX2dldF9zY29wZWRfdmFyOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMg
NFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIEluZGV4IG9m
IHJlZ2lzdGVyIGluIHRoZSBzY29wZS4KKyAgICAjIDEyW1BDXSAgRGUgQnJ1aWppbiBpbmRleC4K
KyAgICBnZXRTY29wZSgxMltQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxv
YWRpIDRbUENdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRwIFNjb3BlQ2hhaW5O
b2RlOjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0
ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgdDMKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgZ2V0U2NvcGUoOFtQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5k
KQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQxLCB0MywgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQzLCB0MikKKyAg
ICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1Zhcmlh
YmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRb
dDAsIHQyLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmpl
Y3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQw
CisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFt0MCwgdDEsIDhdLCB0MQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhd
CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxv
YWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFs
T2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MSwgdDIsIHQzKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHdyaXRlQmFycmllcih0MiwgdDMp
CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5
bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVz
b2x2ZV9iYXNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfcmVzb2x2ZV9iYXNlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2Vuc3Vy
ZV9wcm9wZXJ0eV9leGlzdHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX3Jlc29sdmVfd2l0aF9iYXNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX3RoaXM6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Ig
bm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKKyAgICAjIG9wY29kZS4gV2UgZG8sIGhvd2V2
ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hhbmdlIGFueXRpbWUgaWYgZmFpbHMsIHNpbmNl
CisgICAgIyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4gQXQgYmVzdCB3ZSBnZXQgbHVja3kgYW5kIHRo
ZSBnZXRfYnlfaWQgd2lsbCBjb250aW51ZQorICAgICMgdG8gdGFrZSBmYXN0IHBhdGggb24gdGhl
IG5ldyBjYWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBzbG93IHBhdGgsIHdoaWNoIGlzIHdoYXQKKyAg
ICAjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCisgICAgbG9hZGkgOFtQQ10sIHQw
CisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0Mgor
ICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0M10sIHQwCisgICAgYnBuZXEg
SlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdworICAgIGxvYWRpIDRb
UENdLCB0MQorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDJdLCB0MworICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbdDAsIHQyXSwgdDIKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4
XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNo
KDgpCisKKy5vcEdldEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRf
YnlfaWQpCisgICAgZGlzcGF0Y2goOCkKKworCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5n
dGg6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRp
IDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRh
ZywgLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdworICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQ
YXlsb2FkT2Zmc2V0W2Nmcl0sIHQyCisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSBJbnQzMlRh
ZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykK
KyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9y
YWdlW3QwXSwgdDMKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1
dEJ5SWRTbG93CisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnKHQyLCB0MCwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQwLCB0MikKKyAgICBzdG9yZWkg
dDAsIFRhZ09mZnNldFt0MywgdDFdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0
MV0KKyAgICBkaXNwYXRjaCg5KQorCisub3BQdXRCeUlkU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfcHV0X2J5X2lkKQorICAgIGRpc3BhdGNoKDkpCisKKworbWFjcm8gcHV0QnlJ
ZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcykKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9h
ZGkgMTJbUENdLCB0MgorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9w
UHV0QnlJZFNsb3cKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9wUHV0QnlJZFNsb3cp
CisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3Rv
cmFnZVt0MF0sIHQzCisgICAgYWRkcCB0MSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZyh0MiwgdDEsIHQyKQorICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgc3RvcmVpIHQx
LCBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgMjRbUENdLCB0MQorICAgIHN0b3JlaSB0MiwgUGF5
bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisg
ICAgZGlzcGF0Y2goOSkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGly
ZWN0OgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gs
IHNsb3cpIGVuZCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgor
ICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAorICAgICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3Jh
dGNoLCBzbG93KQorICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAg
IyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bworICAgICAg
ICAKKyAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAorICAgICAgICAgICAgbG9hZHAg
U3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3NjcmF0Y2hdLCBz
Y3JhdGNoCisgICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZz
ZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAgICAgICAgLmxvb3A6CisgICAgICAg
ICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1
Y3R1cmVdLCBwcm90b0NlbGwKKyAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
cHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUs
IFtzY3JhdGNoXSwgc2xvdworICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCisgICAgICAgICAg
ICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0s
IE51bGxUYWcsIC5sb29wCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQpCisKKworX2xsaW50
X29wX2RlbF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2RlbF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRf
YnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGxvYWRwIEpT
R2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAgIGJw
bmVxIFt0MF0sIHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0b3Jh
Z2VbdDBdLCB0MworICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MF0sIC5v
cEdldEJ5VmFsU2xvdworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIEFycmF5U3RvcmFn
ZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBBcnJheVN0
b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQorICAgIGJpZXEg
dDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAgIHN0b3JlaSB0MiwgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dl
dF9hcmd1bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgSW50MzJUYWcsIHQyLCAub3BHZXRBcmd1bWVudEJ5VmFs
U2xvdykKKyAgICBhZGRpIDEsIHQyCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRP
ZmZzZXRbY2ZyXSwgdDEKKyAgICBiaWFlcSB0MiwgdDEsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93
CisgICAgbmVnaSB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIHQyLCA4XSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MQor
ICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QXJndW1lbnRC
eVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9hcmd1bWVudF9ieV92
YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5X3BuYW1lOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BHZXRCeVBuYW1lU2xvdykKKyAgICBs
b2FkaSAxNltQQ10sIHQwCisgICAgYnBuZXEgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BHZXRCeVBuYW1lU2xvdykKKyAg
ICBsb2FkaSAyMFtQQ10sIHQwCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDAKKyAgICBicG5lcSB0MCwg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDNdLCAub3BHZXRCeVBu
YW1lU2xvdworICAgIGxvYWRpIDI0W1BDXSwgdDAKKyAgICBsb2FkaSBbY2ZyLCB0MCwgOF0sIHQw
CisgICAgc3ViaSAxLCB0MAorICAgIGJpYWVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpt
X251bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkcCBKU09i
amVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDJdLCB0MgorICAgIGxvYWRpIFRhZ09mZnNldFt0Miwg
dDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDIsIHQwLCA4XSwgdDMKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAg
IHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDcpCisK
Ky5vcEdldEJ5UG5hbWVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlf
cG5hbWUpCisgICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfcHV0X2J5X3ZhbDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9h
ZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIEludDMy
VGFnLCB0MiwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QwXSwgdDAKKyAgICBsb2FkcCBKU0ds
b2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDBdLCB0MAorICAgIGJwbmVxIFt0MV0sIHQwLCAu
b3BQdXRCeVZhbFNsb3cKKyAgICBiaWFlcSB0MiwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDFd
LCAub3BQdXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDFdLCB0MAor
ICAgIGJpZXEgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdLCBF
bXB0eVZhbHVlVGFnLCAub3BQdXRCeVZhbEVtcHR5Cisub3BQdXRCeVZhbFN0b3JlUmVzdWx0Ogor
ICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MykKKyAgICBsb2Fk
aSBUYWdPZmZzZXRbY2ZyLCB0MywgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XSwgdDMKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQzKQorICAgIHN0b3JlaSB0MSwgQXJy
YXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdCisgICAgc3RvcmVpIHQz
LCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdCisgICAg
ZGlzcGF0Y2goNCkKKworLm9wUHV0QnlWYWxFbXB0eToKKyAgICBhZGRpIDEsIEFycmF5U3RvcmFn
ZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KKyAgICBiaWIgdDIsIEFycmF5U3RvcmFnZTo6bV9s
ZW5ndGhbdDBdLCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0MiwgdDEKKyAg
ICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdCisgICAgam1wIC5vcFB1dEJ5
VmFsU3RvcmVSZXN1bHQKKworLm9wUHV0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9wdXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2RlbF9i
eV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9kZWxfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9pbmRl
eDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1
dF9ieV9pbmRleCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2V0dGVyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2dl
dHRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfc2V0dGVyOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X3NldHRlcikK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9sb29wOgorICAgIG5vcAorX2xsaW50X29w
X2ptcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0Y2hCcmFuY2goNFtQQ10pCisK
KworX2xsaW50X29wX2ptcF9zY29wZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9qbXBfc2NvcGVzKQorICAgIGRpc3BhdGNoKDApCisKKworbWFj
cm8ganVtcFRydWVPckZhbHNlKGNvbmRpdGlvbk9wLCBzbG93KQorICAgIGxvYWRpIDRbUENdLCB0
MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBCb29sZWFuVGFnLCB0MCwg
LnNsb3cpCisgICAgY29uZGl0aW9uT3AodDAsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKwor
LnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhl
bHBlcihzbG93KQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfdHJ1
ZToKKyAgICBub3AKK19sbGludF9vcF9qdHJ1ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
anVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpbnogdmFs
dWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfanRydWUpCisKKworX2xsaW50
X29wX2xvb3BfaWZfZmFsc2U6CisgICAgbm9wCitfbGxpbnRfb3BfamZhbHNlOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwg
dGFyZ2V0KSBidGl6IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pm
YWxzZSkKKworCittYWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhbmRsZXIp
CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEs
IENlbGxUYWcsIC5pbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwg
dDIKKyAgICBjZWxsSGFuZGxlcihTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9m
bGFnc1t0Ml0sIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNw
YXRjaEJyYW5jaCg4W1BDXSkKKworLmltbWVkaWF0ZToKKyAgICBvcmkgMSwgdDEKKyAgICBpbW1l
ZGlhdGVIYW5kbGVyKHQxLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCitlbmQKKworX2xsaW50
X29wX2plcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAg
ICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJueiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpZXEgdmFs
dWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisgICAgCisKK19sbGludF9vcF9qbmVxX251bGw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVl
LCB0YXJnZXQpIGJ0YnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQs
CisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaW5lcSB2YWx1ZSwgTnVsbFRhZywgdGFy
Z2V0IGVuZCkKKworCitfbGxpbnRfb3Bfam5lcV9wdHI6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wSm5lcVB0ckJyYW5jaAorICAgIGJwZXEgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEsIC5vcEpuZXFQdHJGYWxsVGhyb3VnaAorLm9wSm5l
cVB0ckJyYW5jaDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisub3BKbmVxUHRyRmFsbFRo
cm91Z2g6CisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBjb21wYXJlKGludGVnZXJDb21wYXJl
LCBkb3VibGVDb21wYXJlLCBoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZGkg
OFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDAsIHQxKQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MiwgdDMpCisgICAgYmluZXEgdDAsIEludDMy
VGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AyTm90SW50CisgICAg
aW50ZWdlckNvbXBhcmUodDEsIHQzLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisu
b3AxTm90SW50OgorICAgIGJpYSB0MCwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MiwgTG93
ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xv
dworICAgIGNpMmQgdDMsIGZ0MQorICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRP
cDJEb3VibGU6CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBm
aWkyZCB0MSwgdDAsIGZ0MAorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0
KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDJOb3RJbnQ6CisgICAgY2kyZCB0MSwgZnQwCisgICAg
YmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKyAgICBkb3Vi
bGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisuanVt
cFRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisKKy5zbG93OgorICAgIGNhbGxI
ZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZf
bGVzczoKKyAgICBub3AKK19sbGludF9vcF9qbGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiZGx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2ps
ZXNzKQorCisKK19sbGludF9vcF9qbmxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNv
bXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
ZGd0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9q
bmxlc3MpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcjoKKyAgICBub3AKK19sbGludF9v
cF9qZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0IGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVhdGVyKQorCisKK19sbGludF9v
cF9qbmdyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXF1biBsZWZ0LCBy
aWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXIpCisKKwor
X2xsaW50X29wX2xvb3BfaWZfbGVzc2VxOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzZXE6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3NlcSkKKworCitfbGxpbnRfb3Bfam5sZXNzZXE6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzc2VxKQorCisKK19sbGludF9vcF9sb29wX2lm
X2dyZWF0ZXJlcToKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmRndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2pncmVhdGVyZXEpCisKKworX2xsaW50X29wX2puZ3JlYXRlcmVxOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHR1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3BfbG9vcF9oaW50
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisg
ICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2ltbToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0
Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRwIENv
ZGVCbG9jazo6UmFyZURhdGE6Om1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1
ZmZlck9mZnNldFt0MiwgdDMsIDRdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKKyAg
ICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxl
SnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRj
aEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2goU2ltcGxlSnVtcFRhYmxlOjpicmFu
Y2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyLCB0MCwgNF0pCisKKy5vcFN3aXRjaElt
bU5vdEludDoKKyAgICBiaWIgdDEsIExvd2VzdFRhZywgLm9wU3dpdGNoSW1tU2xvdyAgIyBHbyB0
byBzbG93IHBhdGggaWYgaXQncyBhIGRvdWJsZS4KKy5vcFN3aXRjaEltbUZhbGxUaHJvdWdoOgor
ICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisub3BTd2l0Y2hJbW1TbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfaW1tKQorICAgIGRpc3BhdGNoKDApCisKKworX2xs
aW50X29wX3N3aXRjaF9jaGFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQ
Q10sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQz
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9j
aGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyLCB0MywgNF0s
IHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0
MSwgQ2VsbFRhZywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlw
ZUluZm86Om1fdHlwZVt0MV0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAor
ICAgIGxvYWRwIEpTU3RyaW5nOjptX3ZhbHVlW3QwXSwgdDAKKyAgICBiaW5lcSBTdHJpbmdJbXBs
OjptX2xlbmd0aFt0MF0sIDEsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFN0
cmluZ0ltcGw6Om1fZGF0YThbdDBdLCB0MQorICAgIGJ0aW56IFN0cmluZ0ltcGw6Om1faGFzaEFu
ZEZsYWdzW3QwXSwgSGFzaEZsYWdzOEJpdEJ1ZmZlciwgLm9wU3dpdGNoQ2hhcjhCaXQKKyAgICBs
b2FkaCBbdDFdLCB0MAorICAgIGptcCAub3BTd2l0Y2hDaGFyUmVhZHkKKy5vcFN3aXRjaENoYXI4
Qml0OgorICAgIGxvYWRiIFt0MV0sIHQwCisub3BTd2l0Y2hDaGFyUmVhZHk6CisgICAgc3ViaSBT
aW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJs
ZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hDaGFyRmFs
bFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaChTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNl
dHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDIsIHQwLCA0XSkKKworLm9wU3dpdGNoQ2hhckZhbGxU
aHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zd2l0Y2hf
c3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfc3dpdGNoX3N0cmluZykKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9uZXdfZnVu
YzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGJpbmVx
IFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wTmV3RnVuY0RvbmUKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmMpCisub3BOZXdGdW5jRG9uZToKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfZnVuY19leHA6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuY19leHApCisgICAg
ZGlzcGF0Y2goMykKKworCittYWNybyBkb0NhbGwoaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2Fs
bGVlW3QxXSwgdDIKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENhbGxTbG93CisgICAgYmluZXEgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDIsIC5vcENhbGxTbG93CisgICAgbG9hZGkgMTJbUENdLCB0Mwor
ICAgIGFkZHAgMjQsIFBDCisgICAgbHNoaWZ0aSAzLCB0MworICAgIGFkZHAgY2ZyLCB0MyAgIyB0
MyBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9mIGNmcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1f
c2NvcGVDaGFpblt0Ml0sIHQwCisgICAgc3RvcmVpIHQyLCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0
W3QzXQorICAgIHN0b3JlaSB0MCwgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAg
bG9hZGkgOCAtIDI0W1BDXSwgdDIKKyAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdP
ZmZzZXRbY2ZyXQorICAgIHN0b3JlcCBjZnIsIENhbGxlckZyYW1lW3QzXQorICAgIHN0b3JlaSB0
MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIENlbGxUYWcs
IENhbGxlZSArIFRhZ09mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiAr
IFRhZ09mZnNldFt0M10KKyAgICBtb3ZlIHQzLCBjZnIKKyAgICBjYWxsIExMSW50Q2FsbExpbmtJ
bmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0KKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKy5v
cENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBoZWxwZXIpCitlbmQKKworX2xsaW50
X29wX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRfaGVscGVy
X2NhbGwpCisKKworX2xsaW50X29wX2NvbnN0cnVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY29uc3RydWN0KQorCisKK19sbGludF9vcF9jYWxsX3Zh
cmFyZ3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBfbGxp
bnRfaGVscGVyX2NhbGxfdmFyYXJncykKKworCitfbGxpbnRfb3BfY2FsbF9ldmFsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICAKKyAgICAjIEV2YWwgaXMgZXhlY3V0ZWQgaW4gb25lIG9mIHR3
byBtb2RlczoKKyAgICAjCisgICAgIyAxKSBXZSBmaW5kIHRoYXQgd2UncmUgcmVhbGx5IGludm9r
aW5nIGV2YWwoKSBpbiB3aGljaCBjYXNlIHRoZQorICAgICMgICAgZXhlY3V0aW9uIGlzIHBlcmZv
bWVkIGVudGlyZWx5IGluc2lkZSB0aGUgaGVscGVyLCBhbmQgaXQKKyAgICAjICAgIHJldHVybnMg
dGhlIFBDIG9mIGEgZnVuY3Rpb24gdGhhdCBqdXN0IHJldHVybnMgdGhlIHJldHVybiB2YWx1ZQor
ICAgICMgICAgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAjCisgICAgIyAyKSBXZSBmaW5k
IHRoYXQgd2UncmUgaW52b2tpbmcgc29tZXRoaW5nIGNhbGxlZCBldmFsKCkgdGhhdCBpcyBub3QK
KyAgICAjICAgIHRoZSByZWFsIGV2YWwuIFRoZW4gdGhlIGhlbHBlciByZXR1cm5zIHRoZSBQQyBv
ZiB0aGUgdGhpbmcgdG8KKyAgICAjICAgIGNhbGwsIGFuZCB3ZSBjYWxsIGl0LgorICAgICMKKyAg
ICAjIFRoaXMgYWxsb3dzIHVzIHRvIGhhbmRsZSB0d28gY2FzZXMsIHdoaWNoIHdvdWxkIHJlcXVp
cmUgYSB0b3RhbCBvZgorICAgICMgdXAgdG8gZm91ciBwaWVjZXMgb2Ygc3RhdGUgdGhhdCBjYW5u
b3QgYmUgZWFzaWx5IHBhY2tlZCBpbnRvIHR3bworICAgICMgcmVnaXN0ZXJzIChDIGZ1bmN0aW9u
cyBjYW4gcmV0dXJuIHVwIHRvIHR3byByZWdpc3RlcnMsIGVhc2lseSk6CisgICAgIworICAgICMg
LSBUaGUgY2FsbCBmcmFtZSByZWdpc3Rlci4gVGhpcyBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4g
bW9kaWZpZWQKKyAgICAjICAgYnkgdGhlIGhlbHBlciwgYnV0IHRoZSBjb252ZW50aW9uIGlzIHRo
YXQgaXQgcmV0dXJucyBpdC4gSXQncyBub3QKKyAgICAjICAgdG90YWxseSBjbGVhciBpZiB0aGF0
J3MgbmVjZXNzYXJ5LCBzaW5jZSB0aGUgY2ZyIGlzIGNhbGxlZSBzYXZlLgorICAgICMgICBCdXQg
dGhhdCdzIG91ciBzdHlsZSBpbiB0aGlzIGhlcmUgaW50ZXJwcmV0ZXIgc28gd2Ugc3RpY2sgd2l0
aCBpdC4KKyAgICAjCisgICAgIyAtIEEgYml0IHRvIHNheSBpZiB0aGUgaGVscGVyIHN1Y2Nlc3Nm
dWxseSBleGVjdXRlZCB0aGUgZXZhbCBhbmQgaGFzCisgICAgIyAgIHRoZSByZXR1cm4gdmFsdWUs
IG9yIGRpZCBub3QgZXhlY3V0ZSB0aGUgZXZhbCBidXQgaGFzIGEgUEMgZm9yIHVzCisgICAgIyAg
IHRvIGNhbGwuCisgICAgIworICAgICMgLSBFaXRoZXI6CisgICAgIyAgIC0gVGhlIEpTIHJldHVy
biB2YWx1ZSAodHdvIHJlZ2lzdGVycyksIG9yCisgICAgIworICAgICMgICAtIFRoZSBQQyB0byBj
YWxsLgorICAgICMKKyAgICAjIEl0IHR1cm5zIG91dCB0byBiZSBlYXNpZXIgdG8ganVzdCBhbHdh
eXMgaGF2ZSB0aGlzIHJldHVybiB0aGUgY2ZyCisgICAgIyBhbmQgYSBQQyB0byBjYWxsLCBhbmQg
dGhhdCBQQyBtYXkgYmUgYSBkdW1teSB0aHVuayB0aGF0IGp1c3QKKyAgICAjIHJldHVybnMgdGhl
IEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAgCisgICAgc2xvd1BhdGhGb3JD
YWxsKDQsIF9sbGludF9oZWxwZXJfY2FsbF9ldmFsKQorCisKK19sbGludF9nZW5lcmljX3JldHVy
bl9wb2ludDoKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKworX2xsaW50X29wX3RlYXJfb2Zm
X2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1w
dHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkCisgICAgYmllcSBUYWdPZmZz
ZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3Jl
YXRlZAorLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkOgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQorLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVh
dGVkOgorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3RlYXJfb2ZmX2FyZ3VtZW50czoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3ViaSAxLCB0
MCAgICMgR2V0IHRoZSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIKKyAgICBiaWVxIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFyZ3VtZW50c05vdENy
ZWF0ZWQKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQor
Lm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMikKKworCittYWNy
byBkb1JldHVybigpCisgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICBsb2FkcCBDYWxs
ZXJGcmFtZVtjZnJdLCBjZnIKKyAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0
MikKKyAgICByZXQKK2VuZAorCitfbGxpbnRfb3BfcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0Mgor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigpCisK
KworX2xsaW50X29wX2NhbGxfcHV0X3Jlc3VsdDoKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBz
dG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQyLCA4XQorICAgIHRyYWNlRXhlY3V0aW9uKCkgIyBOZWVkcyB0byBiZSBoZXJl
IGJlY2F1c2UgaXQgd291bGQgY2xvYmJlciB0MSwgdDAKKyAgICBkaXNwYXRjaCgyKQorCisKK19s
bGludF9vcF9yZXRfb2JqZWN0X29yX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNo
ZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9h
ZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFJldE9iamVjdE9yVGhpc05v
dE9iamVjdAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJiYiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwg
Lm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgZG9SZXR1cm4oKQorCisub3BSZXRPYmpl
Y3RPclRoaXNOb3RPYmplY3Q6CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQwCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF9vcF9tZXRob2RfY2hlY2s6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgICMgV2UgaWdub3JlIG1ldGhvZCBjaGVja3MgYW5kIHVzZSBub3Jt
YWwgZ2V0X2J5X2lkIG9wdGltaXphdGlvbnMuCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRf
b3Bfc3RyY2F0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfc3RyY2F0KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3RvX3ByaW1pdGl2
ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkg
NFtQQ10sIHQzCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5v
cFRvUHJpbWl0aXZlSXNJbW0KKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIK
KyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwg
U3RyaW5nVHlwZSwgLm9wVG9QcmltaXRpdmVTbG93Q2FzZQorLm9wVG9QcmltaXRpdmVJc0ltbToK
KyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvUHJpbWl0aXZl
U2xvd0Nhc2U6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RvX3ByaW1pdGl2ZSkKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9nZXRfcG5hbWVzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X3BuYW1lcykKKyAgICBkaXNw
YXRjaCgwKSAjIFRoZSBoZWxwZXIgZWl0aGVyIGFkdmFuY2VzIHRoZSBQQyBvciBqdW1wcyB1cyB0
byBzb21ld2hlcmUgZWxzZS4KKworCitfbGxpbnRfb3BfbmV4dF9wbmFtZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRpIDE2W1BDXSwgdDIKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MAorICAgIGJpZXEgdDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0sIC5vcE5leHRQbmFtZUVuZAorICAgIGxvYWRpIDIwW1BDXSwg
dDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MgorICAgIGxvYWRwIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fanNTdHJpbmdzW3QyXSwgdDMKKyAgICBsb2FkaSBbdDMs
IHQwLCA4XSwgdDMKKyAgICBhZGRpIDEsIHQwCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRh
Z09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XQorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MywgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgYnBu
ZXEgdDEsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9w
TmV4dFBuYW1lU2xvdworICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVk
UHJvdG90eXBlQ2hhaW5bdDJdLCB0MAorICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rv
clt0MF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BOZXh0UG5hbWVUYXJnZXQKKy5vcE5leHRQbmFt
ZUNoZWNrUHJvdG90eXBlTG9vcDoKKyAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBU
YWdPZmZzZXRbdDFdLCBOdWxsVGFnLCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgU3RydWN0
dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDFdLCB0MgorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MQorICAgIGJwbmVxIHQxLCBbdDBdLCAub3BOZXh0UG5hbWVT
bG93CisgICAgYWRkcCA0LCB0MAorICAgIGJ0cG56IFt0MF0sIC5vcE5leHRQbmFtZUNoZWNrUHJv
dG90eXBlTG9vcAorLm9wTmV4dFBuYW1lVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDI0W1BD
XSkKKworLm9wTmV4dFBuYW1lRW5kOgorICAgIGRpc3BhdGNoKDcpCisKKy5vcE5leHRQbmFtZVNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25leHRfcG5hbWUpICMgVGhpcyBlaXRo
ZXIga2VlcHMgdGhlIFBDIHdoZXJlIGl0IHdhcyAoY2F1c2luZyB1cyB0byBsb29wKSBvciBzZXRz
IGl0IHRvIHRhcmdldC4KKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9wdXNoX3Njb3Bl
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVz
aF9zY29wZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3Bfc2NvcGU6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3Bfc2NvcGUp
CisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfcHVzaF9uZXdfc2NvcGU6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX25ld19zY29w
ZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9jYXRjaDoKKyAgICAjIFRoaXMgaXMg
d2hlcmUgd2UgZW5kIHVwIGZyb20gdGhlIEpJVCdzIHRocm93IHRyYW1wb2xpbmUgKGJlY2F1c2Ug
dGhlCisgICAgIyBtYWNoaW5lIGNvZGUgcmV0dXJuIGFkZHJlc3Mgd2lsbCBiZSBzZXQgdG8gX2xs
aW50X29wX2NhdGNoKSwgYW5kIGZyb20KKyAgICAjIHRoZSBpbnRlcnByZXRlcidzIHRocm93IHRy
YW1wb2xpbmUgKHNlZSBfbGxpbnRfdGhyb3dfdHJhbXBvbGluZSkuCisgICAgIyBUaGUgSklUIHRo
cm93aW5nIHByb3RvY29sIGNhbGxzIGZvciB0aGUgY2ZyIHRvIGJlIGluIHQwLiBUaGUgdGhyb3dp
bmcKKyAgICAjIGNvZGUgbXVzdCBoYXZlIGtub3duIHRoYXQgd2Ugd2VyZSB0aHJvd2luZyB0byB0
aGUgaW50ZXJwcmV0ZXIsIGFuZCBoYXZlCisgICAgIyBzZXQgSlNHbG9iYWxEYXRhOjp0YXJnZXRJ
bnRlcnByZXRlclBDRm9yVGhyb3cuCisgICAgbW92ZSB0MCwgY2ZyCisgICAgbG9hZHAgSklUU3Rh
Y2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjp0YXJn
ZXRJbnRlcnByZXRlclBDRm9yVGhyb3dbdDNdLCBQQworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6
ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10sIHQwCisgICAgbG9hZGkgSlNHbG9iYWxEYXRh
OjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdLCB0MQorICAgIHN0b3JlaSAwLCBKU0dsb2JhbERh
dGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIEVtcHR5VmFsdWVU
YWcsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSAgICAgICAKKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0K
KyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHRyYWNlRXhlY3V0aW9u
KCkgICMgVGhpcyBuZWVkcyB0byBiZSBoZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjbG9i
YmVyIHQwLCB0MSwgdDIsIHQzIGFib3ZlLgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29w
X3Rocm93OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfdGhyb3cpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3dfcmVmZXJlbmNl
X2Vycm9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29w
X2pzcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYWRk
aSAzICogNCwgUEMsIHQxCisgICAgc3RvcmVpIHQxLCBbdDBdCisgICAgZGlzcGF0Y2hCcmFuY2go
OFtQQ10pCisKKworX2xsaW50X29wX3NyZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDRbUENdLCBQQworICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX2RlYnVnOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVidWcpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJvZmlsZV93aWxsX2NhbGw6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGJ0cHogSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVm
ZXJlbmNlW3NwXSwgLm9wUHJvZmlsZVdpbGxDYWxsRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCkKKy5vcFByb2ZpbGVXaWxsQ2FsbERvbmU6CisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJvZmlsZV9kaWRfY2FsbDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgYnRweiBKSVRTdGFja0ZyYW1lOjplbmFibGVkUHJvZmlsZXJSZWZlcmVu
Y2Vbc3BdLCAub3BQcm9maWxlRGlkQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcHJvZmlsZV9kaWRfY2FsbCkKKy5vcFByb2ZpbGVEaWRDYWxsRG9uZToKKyAgICBkaXNwYXRj
aCgyKQorCisKK19sbGludF9vcF9lbmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNr
U3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQwCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF90aHJvd19mcm9tX2hlbHBlcl90
cmFtcG9saW5lOgorICAgICMgV2hlbiB0aHJvd2luZyBmcm9tIHRoZSBpbnRlcnByZXRlciAoaS5l
LiB0aHJvd2luZyBmcm9tIExMSW50SGVscGVycyksIHNvCisgICAgIyB0aGUgdGhyb3cgdGFyZ2V0
IGlzIG5vdCBuZWNlc3NhcmlseSBpbnRlcnByZXRlZCBjb2RlLCB3ZSBjb21lIHRvIGhlcmUuCisg
ICAgIyBUaGlzIGVzc2VudGlhbGx5IGVtdWxhdGVzIHRoZSBKSVQncyB0aHJvd2luZyBwcm90b2Nv
bC4KKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2Fk
cCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9i
YWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCitfbGxpbnRfdGhyb3dfZHVy
aW5nX2NhbGxfdHJhbXBvbGluZToKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwo
dDIpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9h
ZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xv
YmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworIyBMYXN0bHksIG1ha2Ug
c3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9w
Y29kZXMuCisjIFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJ
bnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CisjIGFzIG11Y2guCisKK21hY3JvIG5vdFN1cHBv
cnRlZCgpCisgICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgY3Jhc2goKQorICAgIGVsc2UK
KyAgICAgICAgIyBXZSBzaG91bGQgdXNlIHdoYXRldmVyIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBp
bnN0cnVjdGlvbiBpcywganVzdCB0bworICAgICAgICAjIGVuc3VyZSB0aGF0IHRoZXJlIGlzIGEg
Z2FwIGJldHdlZW4gaW5zdHJ1Y3Rpb24gbGFiZWxzLiBJZiBtdWx0aXBsZQorICAgICAgICAjIHNt
YWxsZXN0IGluc3RydWN0aW9ucyBleGlzdCwgd2Ugc2hvdWxkIHBpY2sgdGhlIG9uZSB0aGF0IGlz
IG1vc3QKKyAgICAgICAgIyBsaWtlbHkgcmVzdWx0IGluIGV4ZWN1dGlvbiBiZWluZyBoYWx0ZWQu
IEN1cnJlbnRseSB0aGF0IGlzIHRoZSBicmVhaworICAgICAgICAjIGluc3RydWN0aW9uIG9uIGFs
bCBhcmNoaXRlY3R1cmVzIHdlJ3JlIGludGVyZXN0ZWQgaW4uIChCcmVhayBpcyBpbnQzCisgICAg
ICAgICMgb24gSW50ZWwsIHdoaWNoIGlzIDEgYnl0ZSwgYW5kIGJrcHQgb24gQVJNdjcsIHdoaWNo
IGlzIDIgYnl0ZXMuKQorICAgICAgICBicmVhaworICAgIGVuZAorZW5kCisKK19sbGludF9vcF9n
ZXRfYXJyYXlfbGVuZ3RoOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jdXN0
b21fY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jdXN0
b21fcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jdXN0
b21fc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dlbmVy
aWM6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJfY2hh
aW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJfcHJv
dG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJfc2Vs
ZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3Byb3RvOgorICAg
IG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfc2VsZjoKKyAgICBub3RTdXBw
b3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X3N0cmluZ19sZW5ndGg6CisgICAgbm90U3VwcG9ydGVk
KCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisK
K19sbGludF9vcF9wdXRfYnlfaWRfcmVwbGFjZToKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxp
bnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb246CisgICAgbm90U3VwcG9ydGVkKCkKKworCisjIElu
ZGljYXRlIHRoZSBlbmQgb2YgTExJbnQuCitfbGxpbnRfZW5kOgorICAgIGNyYXNoKCkKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCisjaW5jbHVkZSAiTG93TGV2
ZWxJbnRlcnByZXRlci5oIgorCisjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgorCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMb3dMZXZlbEludGVycHJl
dGVyX2gKKyNkZWZpbmUgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisKKyNpbmNsdWRlICJPcGNvZGUu
aCIKKworI2RlZmluZSBMTElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29kZSwgbGVuZ3RoKSBleHRl
cm4gIkMiIHZvaWQgbGxpbnRfIyNvcGNvZGUoKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoTExJ
TlRfSU5TVFJVQ1RJT05fREVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJVQ1RJT05fREVDTAorCitl
eHRlcm4gIkMiIHZvaWQgbGxpbnRfYmVnaW4oKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9lbmQo
KTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMi
IHZvaWQgbGxpbnRfZXZhbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2dlbmVy
aWNfcmV0dXJuX3BvaW50KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZnJvbV9oZWxw
ZXJfdHJhbXBvbGluZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2R1cmluZ19jYWxs
X3RyYW1wb2xpbmUoKTsKKworI2VuZGlmIC8vIExvd0xldmVsSW50ZXJwcmV0ZXJfaApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxOTMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K2NsYXNzIFNwZWNpYWxSZWdpc3RlcgorICBkZWYgaW5pdGlhbGl6ZShuYW1lKQorICAgIEBuYW1l
ID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBAbmFtZQorICBlbmQK
K2VuZAorCitBUk12N19EQVRBX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoImlwIikKK0FSTXY3
X0FERFJfUkVHID0gU3BlY2lhbFJlZ2lzdGVyLm5ldygicjMiKQorCitkZWYgbW92ZUltbWVkaWF0
ZSh2YWx1ZSwgcmVnaXN0ZXIpCisgICMgQ3VycmVudGx5IHdlIG9ubHkgaGFuZGxlIHRoZSBzaW1w
bGUgY2FzZXMsIGFuZCBmYWxsIGJhY2sgdG8gbW92L21vdnQgZm9yIHRoZSBjb21wbGV4IG9uZXMu
CisgIGlmIHZhbHVlID49IDAgJiYgdmFsdWUgPCAyNTYKKyAgICAkYXNtLnB1dHMgIm1vdncgXCMj
e3ZhbHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNpZiAofnZhbHVlKSA+PSAw
ICYmICh+dmFsdWUpIDwgMjU2CisgICAgJGFzbS5wdXRzICJtdm53IFwjI3t+dmFsdWV9LCAje3Jl
Z2lzdGVyLmFybVY3T3BlcmFuZH0iCisgIGVsc2UKKyAgICAkYXNtLnB1dHMgIm1vdncgXCMje3Zh
bHVlICYgMHhmZmZmfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAgIGlmICh2YWx1ZSAm
IDB4ZmZmZjAwMDApICE9IDAKKyAgICAgICRhc20ucHV0cyAibW92dCBcIyN7dmFsdWUgPj4gMTZ9
LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNz
IFJlZ2lzdGVySUQKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4g
InQwIiwgImEwIiwgInIwIgorICAgICAgInIwIgorICAgIHdoZW4gInQxIiwgImExIiwgInIxIgor
ICAgICAgInIxIgorICAgIHdoZW4gInQyIiwgImEyIgorICAgICAgInIyIgorICAgIHdoZW4gImEz
IgorICAgICAgInIzIgorICAgIHdoZW4gInQzIgorICAgICAgInI0IgorICAgIHdoZW4gInQ0Igor
ICAgICAgInI3IgorICAgIHdoZW4gImNmciIKKyAgICAgICJyNSIKKyAgICBlbHNlCisgICAgICBy
YWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9y
eU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAg
ICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAg
eWllbGQKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJh
bmQKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAiZnIiCisgICAgICAiZDAiCisgICAg
d2hlbiAiZnIxIiwKKyAgICAgICJkMSIKKyAgICB3aGVuICJmcjIiCisgICAgICAiZDIiCisgICAg
d2hlbiAiZnIzIgorICAgICAgImQzIgorICAgIHdoZW4gImZyNCIKKyAgICAgICJkNCIKKyAgICB3
aGVuICJmcjUiCisgICAgICAiZDUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAor
ICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisg
IGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkIHNlbGYKKyAgZW5k
CitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICByYWlzZSAi
SW52YWxpZCBpbW1lZGlhdGUgI3t2YWx1ZX0iIGlmIHZhbHVlIDwgMCBvciB2YWx1ZSA+IDI1NQor
ICAgICIjJHt2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVt
b3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAor
ICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAg
ICB5aWVsZCBzZWxmCisgIGVuZAorZW5kCisKK21vZHVsZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMK
KyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHNlbGYuYXJtVjdQcmVwYXJlUG9zc2libGVN
ZW1vcnlPcGVyYW5kCisgICAgJGFzbS5wdXRzICJcdGxkciAje3NlbGYuYXJtVjdQb3NzaWJseU1l
bW9yeU9wZXJhbmR9LCAje0FSTXY3X0RBVEFfUkVHLmFybVY3T3BlcmFuZH0iCisgICAgeWllbGQg
QVJNdjdfREFUQV9SRUcKKyAgICAkYXNtLnB1dHMgIlx0c3RyICN7QVJNdjdfREFUQV9SRUcuYXJt
VjdPcGVyYW5kfSwgI3tzZWxmLmFybVY3UG9zc2libHlNZW1vcnlPcGVyYW5kfSIKKyAgZW5kCitl
bmQKKworY2xhc3MgQWRkcmVzcworICBpbmNsdWRlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworCisg
IGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFs
dWUgPCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgbW92ZUltbWVkaWF0ZShv
ZmZzZXQudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBh
cm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIHx8
IG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje0FS
TXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH1dIgorICAgIGVsc2UKKyAgICAgICJbI3tiYXNlLmFy
bVY3T3BlcmFuZH0sICN7b2Zmc2V0LmFybVY3T3BlcmFuZH1dIgorICAgIGVuZAorICBlbmQKK2Vu
ZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKwor
ICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZh
bHVlICE9IDAKKyAgICAgIG1vdmVJbW1lZGlhdGUob2Zmc2V0LnZhbHVlLCBBUk12N19BRERSX1JF
RykKKyAgICAgICRhc20ucHV0cyAiYWRkdyAje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH0s
ICN7YmFzZS5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bv
c3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICAiWyN7
QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfSwgI3tpbmRleC5hcm1WN09wZXJhbmR9LCBsc2wg
XCMje3NjYWxlfV0iCisgICAgZWxzZQorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tp
bmRleC5hcm1WN09wZXJhbmR9LCBsc2wgXCMje3NjYWxlfV0iCisgICAgZW5kCisgIGVuZAorZW5k
CisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBpbmNsdWRlIEFSTXY3QWRkcmVzc1V0aWxpdGll
cworICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIG1vdmVJ
bW1lZGlhdGUoYWRkcmVzcy52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgIGVuZAorICAKKyAgZGVm
IGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgIlsje0FSTXY3X0FERFJfUkVHLmFybVY3
T3BlcmFuZH1dIgorICBlbmQKK2VuZAorCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2FzbS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODMgQEAKKyMhL3Vzci9iaW4v
ZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisj
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworJDogPDwg
RmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgIm9m
ZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRy
YW5zZm9ybSIKKworY2xhc3MgQXNzZW1ibGVyCisgIGRlZiBpbml0aWFsaXplKG91dHApCisgICAg
QG91dHAgPSBvdXRwCisgICAgQHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBlbnRlckFz
bQorICAgIEBvdXRwLnB1dHMgImFzbSAoIgorICAgIEBzdGF0ZSA9IDphc20KKyAgZW5kCisgIAor
ICBkZWYgbGVhdmVBc20KKyAgICBAb3V0cC5wdXRzICIpOyIKKyAgICBAc3RhdGUgPSA6Y3BwCisg
IGVuZAorICAKKyAgZGVmIGluQXNtCisgICAgZW50ZXJBc20KKyAgICB5aWVsZAorICAgIGxlYXZl
QXNtCisgIGVuZAorICAKKyAgZGVmIHB1dHMobGluZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0YXRl
ID09IDphc20KKyAgICBAb3V0cC5wdXRzKChsaW5lICsgIlxuIikuaW5zcGVjdCkKKyAgZW5kCisg
IAorICBkZWYgY29tbWVudCh0ZXh0KQorICAgIEBvdXRwLnB1dHMgIi8vICN7dGV4dH0iCisgIGVu
ZAorZW5kCisKKyRhc20gPSBBc3NlbWJsZXIubmV3KCRzdGRvdXQpCisKK2FzbUZpbGUgPSBBUkdW
LnNoaWZ0CitvZmZzZXRzRmlsZSA9IEFSR1Yuc2hpZnQKKworYXN0ID0gcGFyc2UobGV4KElPOjpy
ZWFkKGFzbUZpbGUpKSkKK29mZnNldHNMaXN0LCBjb25maWdJbmRleCA9IG9mZnNldHNBbmRDb25m
aWd1cmF0aW9uSW5kZXgob2Zmc2V0c0ZpbGUpCisKK2ZvclNldHRpbmdzKGNvbXB1dGVTZXR0aW5n
c0NvbWJpbmF0aW9ucyhhc3QpW2NvbmZpZ0luZGV4XSwgYXN0KSB7CisgIHwgY29uY3JldGVTZXR0
aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNy
ZXRlU2V0dGluZ3MpCisgIGxvd0xldmVsQVNUID0gbG93TGV2ZWxBU1QucmVzb2x2ZSgqYnVpbGRP
ZmZzZXRzTWFwKGxvd0xldmVsQVNULCBvZmZzZXRzTGlzdCkpCisgIGVtaXRDb2RlSW5Db25maWd1
cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kKSB7CisgICAgJGFz
bS5pbkFzbSB7CisgICAgICBsb3dMZXZlbEFTVC5sb3dlcihiYWNrZW5kKQorICAgIH0KKyAgfQor
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw4MDYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEJhc2UgdXRpbGl0eSB0eXBl
cyBmb3IgdGhlIEFTVC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgVmFsaWQgbWV0aG9kcyBmb3IgTm9k
ZToKKyMKKyMgbm9kZS5jaGlsZHJlbiAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGltbWVkaWF0ZSBj
aGlsZHJlbi4KKyMKKyMgbm9kZS5kZXNjZW5kZW50cyAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGFs
bCBzdHJpY3QgZGVzY2VuZGFudHMgKGNoaWxkcmVuCisjICAgICBhbmQgY2hpbGRyZW4gb2YgY2hp
bGRyZW4sIHRyYW5zaXRpdmVseSkuCisjCisjIG5vZGUuZmxhdHRlbiAtPiBSZXR1cm5zIGFuIGFy
cmF5IGNvbnRhaW5pbmcgdGhlIHN0cmljdCBkZXNjZW5kYW50cyBhbmQKKyMgICAgIHRoZSBub2Rl
IGl0c2VsZi4KKyMKKyMgbm9kZS5maWx0ZXIodHlwZSkgLT4gUmV0dXJucyBhbiBhcnJheSBjb250
YWluaW5nIHRob3NlIGVsZW1lbnRzIGluCisjICAgICBub2RlLmZsYXR0ZW4gdGhhdCBhcmUgb2Yg
dGhlIGdpdmVuIHR5cGUgKGlzX2E/IHR5cGUgcmV0dXJucyB0cnVlKS4KKyMKKyMgbm9kZS5tYXBD
aGlsZHJlbnt8dnwgLi4ufSAtPiBSZXR1cm5zIGEgbmV3IG5vZGUgd2l0aCBhbGwgY2hpbGRyZW4K
KyMgICAgIHJlcGxhY2VkIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gYmxvY2suCisjCisjIEV4YW1w
bGVzOgorIworIyBub2RlLmZpbHRlcihTZXR0aW5nKS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRo
ZSBzZXR0aW5ncyB0aGF0IHRoZSBBU1QncworIyAgICAgSWZUaGVuRWxzZSBibG9ja3MgZGVwZW5k
IG9uLgorIworIyBub2RlLmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEgLT4gUmV0dXJucyBhbGwg
b2YgdGhlIHN0cnVjdHVyZSBvZmZzZXRzCisjICAgICB0aGF0IHRoZSBBU1QgZGVwZW5kcyBvbi4K
KworY2xhc3MgTm9kZQorICBhdHRyX3JlYWRlciA6Y29kZU9yaWdpbgorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbikKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgZW5kCisg
IAorICBkZWYgY29kZU9yaWdpblN0cmluZworICAgICJsaW5lIG51bWJlciAje0Bjb2RlT3JpZ2lu
fSIKKyAgZW5kCisgIAorICBkZWYgZGVzY2VuZGFudHMKKyAgICBjaGlsZHJlbi5jb2xsZWN0e3x2
fCB2LmZsYXR0ZW59LmZsYXR0ZW4KKyAgZW5kCisgIAorICBkZWYgZmxhdHRlbgorICAgIFtzZWxm
XSArIGRlc2NlbmRhbnRzCisgIGVuZAorICAKKyAgZGVmIGZpbHRlcih0eXBlKQorICAgIGZsYXR0
ZW4uc2VsZWN0e3x2fCB2LmlzX2E/IHR5cGV9CisgIGVuZAorZW5kCisKK2NsYXNzIE5vQ2hpbGRy
ZW4gPCBOb2RlCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbXQorICBlbmQKKyAgCisgIGRl
ZiBtYXBDaGlsZHJlbgorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0
S2V5CisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUo
c3RydWN0LCBmaWVsZCkKKyAgICBAc3RydWN0ID0gc3RydWN0CisgICAgQGZpZWxkID0gZmllbGQK
KyAgZW5kCisgIAorICBkZWYgaGFzaAorICAgIEBzdHJ1Y3QuaGFzaCArIEBmaWVsZC5oYXNoICog
MworICBlbmQKKyAgCisgIGRlZiBlcWw/KG90aGVyKQorICAgIEBzdHJ1Y3QgPT0gb3RoZXIuc3Ry
dWN0IGFuZCBAZmllbGQgPT0gb3RoZXIuZmllbGQKKyAgZW5kCitlbmQKKyAgICAKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIEFTVCBub2Rlcy4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIFN0cnVjdE9mZnNldCA8IE5vQ2hpbGRyZW4KKyAg
YXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9
IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30K
KyAgCisgIGRlZiBzZWxmLmZvckZpZWxkKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAg
a2V5ID0gU3RydWN0T2Zmc2V0S2V5Lm5ldyhzdHJ1Y3QsIGZpZWxkKQorICAgIAorICAgIHVubGVz
cyBAQG1hcHBpbmdba2V5XQorICAgICAgQEBtYXBwaW5nW2tleV0gPSBTdHJ1Y3RPZmZzZXQubmV3
KGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW2tleV0K
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje3N0cnVjdH06OiN7ZmllbGR9IgorICBlbmQK
KyAgCisgIGRlZiA8PT4ob3RoZXIpCisgICAgaWYgQHN0cnVjdCAhPSBvdGhlci5zdHJ1Y3QKKyAg
ICAgIHJldHVybiBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgICBlbmQKKyAgICBAZmllbGQg
PD0+IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZiA8IE5vQ2hpbGRyZW4K
KyAgYXR0cl9yZWFkZXIgOnN0cnVjdAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
c3RydWN0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICBl
bmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmln
aW4sIHN0cnVjdCkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW3N0cnVjdF0KKyAgICAgIEBAbWFwcGlu
Z1tzdHJ1Y3RdID0gU2l6ZW9mLm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgZW5kCisgICAg
QEBtYXBwaW5nW3N0cnVjdF0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJzaXplb2YgI3tA
c3RydWN0fSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAgIEBzdHJ1Y3QgPD0+IG90
aGVyLnN0cnVjdAorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUgPCBOb0NoaWxkcmVuCisg
IGF0dHJfcmVhZGVyIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFs
dWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIiN7dmFsdWV9IgorICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikK
KyAgICBvdGhlci5pc19hPyBJbW1lZGlhdGUgYW5kIG90aGVyLnZhbHVlID09IEB2YWx1ZQorICBl
bmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVm
dCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJp
Z2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVu
ZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQWRkSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdp
biwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiKCN7bGVmdC5kdW1wfSArICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFz
cyBTdWJJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAK
KyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1h
cENoaWxkcmVuCisgICAgU3ViSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0
KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5k
dW1wfSAtICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVz
IDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBs
ZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVu
CisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAg
TXVsSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdo
dCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAqICN7cmlnaHQu
ZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBOZWdJbW1lZGlhdGUgPCBOb2RlCisgIGF0dHJf
cmVhZGVyIDpjaGlsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAY2hpbGQgPSBjaGlsZAorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIFtAY2hpbGRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisg
ICAgTmVnSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIoLSN7QGNoaWxkLmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xh
c3MgUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNl
bGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0K
KyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAg
YXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBA
QG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IEZQUmVn
aXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFt
ZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3Mg
VmFyaWFibGUgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5h
bWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZv
ck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAg
ICBAQG1hcHBpbmdbbmFtZV0gPSBWYXJpYWJsZS5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBl
bmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUK
KyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2Us
IDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGJhc2UsIG9mZnNldCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBiYXNlID0gYmFzZQorICAgIEBvZmZzZXQgPSBv
ZmZzZXQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBvZmZzZXRdCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwg
KHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJh
c2VJbmRleCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2UsIDppbmRleCwgOnNjYWxlLCA6b2Zm
c2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBiYXNlID0gYmFzZQorICAgIEBp
bmRleCA9IGluZGV4CisgICAgQHNjYWxlID0gc2NhbGUKKyAgICByYWlzZSB1bmxlc3MgWzEsIDIs
IDQsIDhdLm1lbWJlcj8gQHNjYWxlCisgICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisg
IGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwgQGluZGV4LCBAb2Zmc2V0XQorICBlbmQKKyAgCisg
IGRlZiBtYXBDaGlsZHJlbgorICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBi
YXNlKSwgKHlpZWxkIEBpbmRleCksIEBzY2FsZSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfSwgI3tpbmRleC5k
dW1wfSwgI3tzY2FsZX1dIgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MgPCBO
b0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDphZGRyZXNzCisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBhZGRyZXNzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGFkZHJlc3Mg
PSBhZGRyZXNzCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3thZGRyZXNzLmR1bXB9W10i
CisgIGVuZAorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uIDwgTm9kZQorICBhdHRyX3JlYWRlciA6
b3Bjb2RlLCA6b3BlcmFuZHMKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG9wY29k
ZSwgb3BlcmFuZHMpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAb3Bjb2RlID0gb3Bjb2Rl
CisgICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAg
ICBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBJbnN0
cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgQG9wY29kZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHQiICsgb3Bjb2RlLnRvX3MgKyAiICIgKyBvcGVy
YW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikKKyAgZW5kCitlbmQKKworY2xhc3Mg
RXJyb3IgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdGVycm9yIgorICBl
bmQKK2VuZAorCitjbGFzcyBDb25zdERlY2wgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDp2YXJpYWJs
ZSwgOnZhbHVlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFs
dWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAdmFyaWFibGUgPSB2YXJpYWJsZQorICAg
IEB2YWx1ZSA9IHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0B2YXJpYWJs
ZSwgQHZhbHVlXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIENvbnN0RGVjbC5u
ZXcoY29kZU9yaWdpbiwgKHlpZWxkIEB2YXJpYWJsZSksICh5aWVsZCBAdmFsdWUpKQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgImNvbnN0ICN7QHZhcmlhYmxlLmR1bXB9ID0gI3tAdmFsdWUu
ZHVtcH0iCisgIGVuZAorZW5kCisKKyRsYWJlbE1hcHBpbmcgPSB7fQorCitjbGFzcyBMYWJlbCA8
IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUK
KyAgZW5kCisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgaWYg
JGxhYmVsTWFwcGluZ1tuYW1lXQorICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAj
e25hbWV9IiB1bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMYWJlbAorICAgIGVsc2UK
KyAgICAgICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkK
KyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwgPCBOb0NoaWxk
cmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAor
CisgIEBAdW5pcXVlTmFtZUNvdW50ZXIgPSAwCisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgaWYgJGxhYmVsTWFwcGluZ1tuYW1lXQorICAgICAgcmFpc2UgIkxh
YmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9IiB1bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5p
c19hPyBMb2NhbExhYmVsCisgICAgZWxzZQorICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExv
Y2FsTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGlu
Z1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBzZWxmLnVuaXF1ZQorICAgIHdoaWxlICRsYWJlbE1h
cHBpbmdbIl9MI3tAQHVuaXF1ZU5hbWVDb3VudGVyfSJdCisgICAgICBAQHVuaXF1ZU5hbWVDb3Vu
dGVyICs9IDEKKyAgICBlbmQKKyAgICBmb3JOYW1lKG5pbCwgIl9MI3tAQHVuaXF1ZU5hbWVDb3Vu
dGVyfSIpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5k
CisKK2NsYXNzIExhYmVsUmVmZXJlbmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBb
QGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExhYmVsUmVmZXJlbmNl
Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxhYmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQor
ICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAg
ZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZSA8IE5vQ2hpbGRyZW4KKyAgYXR0
cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxhYmVsKSkK
KyAgZW5kCisgIAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgIGxhYmVsLm5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UgPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpsaXN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBs
aXN0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxpc3QgPSBsaXN0CisgIGVuZAorICAK
KyAgZGVmIGNoaWxkcmVuCisgICAgbGlzdAorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigm
cHJvYykKKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgQGxpc3QubWFwKCZwcm9jKSkKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxpc3QuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCJc
biIpCisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFs
aXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBUcnVlLm5ldwor
ICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVm
IHZhbHVlCisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgInRydWUiCisgIGVu
ZAorZW5kCisKK2NsYXNzIEZhbHNlIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQorICAg
IHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNlID0gRmFsc2UubmV3CisgIAorICBk
ZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUK
KyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImZhbHNlIgorICBlbmQKK2Vu
ZAorCitjbGFzcyBUcnVlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAgIFRydWUuaW5zdGFuY2UKKyAg
ZW5kCitlbmQKKworY2xhc3MgRmFsc2VDbGFzcworICBkZWYgYXNOb2RlCisgICAgRmFsc2UuaW5z
dGFuY2UKKyAgZW5kCitlbmQKKworY2xhc3MgU2V0dGluZyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9y
ZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBp
bmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVu
bGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFNldHRpbmcubmV3
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZCA8IE5vZGUK
KyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxl
ZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtA
bGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFuZC5uZXco
Y29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBhbmQgI3tyaWdodC5kdW1wfSkiCisgIGVuZAor
ZW5kCisKK2NsYXNzIE9yIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAK
KyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1h
cENoaWxkcmVuCisgICAgT3IubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBA
cmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gb3IgI3ty
aWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE5vdCA8IE5vZGUKKyAgYXR0cl9yZWFk
ZXIgOmNoaWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNo
aWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
CisgICAgTm90Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICIobm90ICN7Y2hpbGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBT
a2lwIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRza2lwIgorICBlbmQK
K2VuZAorCitjbGFzcyBJZlRoZW5FbHNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6cHJlZGljYXRl
LCA6dGhlbkNhc2UKKyAgYXR0cl9hY2Nlc3NvciA6ZWxzZUNhc2UKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgdGhlbkNhc2UpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAcHJlZGljYXRlID0gcHJlZGljYXRlCisgICAgQHRoZW5DYXNlID0gdGhlbkNhc2UK
KyAgICBAZWxzZUNhc2UgPSBTa2lwLm5ldyhjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIGlmIEBlbHNlQ2FzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZSwg
QGVsc2VDYXNlXQorICAgIGVsc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2VdCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgSWZUaGVuRWxzZS5uZXcoY29k
ZU9yaWdpbiwgKHlpZWxkIEBwcmVkaWNhdGUpLCAoeWllbGQgQHRoZW5DYXNlKSwgKHlpZWxkIEBl
bHNlQ2FzZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiaWYgI3twcmVkaWNhdGUuZHVt
cH1cbiIgKyB0aGVuQ2FzZS5kdW1wICsgIlxuZWxzZVxuIiArIGVsc2VDYXNlLmR1bXAgKyAiXG5l
bmQiCisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFt
ZSwgOnZhcmlhYmxlcywgOmJvZHkKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5h
bWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0g
bmFtZQorICAgIEB2YXJpYWJsZXMgPSB2YXJpYWJsZXMKKyAgICBAYm9keSA9IGJvZHkKKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAdmFyaWFibGVzICsgW0Bib2R5XQorICBlbmQKKyAg
CisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQHZh
cmlhYmxlcy5tYXB7fHZ8IHlpZWxkIHZ9LCAoeWllbGQgQGJvZHkpKQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgIm1hY3JvICN7bmFtZX0oIiArIHZhcmlhYmxlcy5jb2xsZWN0e3x2fCB2LmR1
bXB9LmpvaW4oIiwgIikgKyAiKVxuIiArIGJvZHkuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQK
KworY2xhc3MgTWFjcm9DYWxsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOm9wZXJhbmRz
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAgIEBvcGVyYW5kcyA9IG9wZXJh
bmRzCisgICAgcmFpc2UgdW5sZXNzIEBvcGVyYW5kcworICAgIEBvcGVyYW5kcy5lYWNoe3x2fCBy
YWlzZSB1bmxlc3Mgdn0KKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAb3BlcmFuZHMK
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgTWFjcm9DYWxsLm5ldyhj
b2RlT3JpZ2luLCBAbmFtZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICAiXHQje25hbWV9KCIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9Lmpv
aW4oIiwgIikgKyAiKSIKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYmFja2VuZHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4
MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0
IgorcmVxdWlyZSAieDg2IgorCitCQUNLRU5EUyA9CisgIFsKKyAgICJYODYiLAorICAgIkFSTXY3
IgorICBdCisKK1dPUktJTkdfQkFDS0VORFMgPQorICBbCisgICAiWDg2IgorICBdCisKK0JBQ0tF
TkRfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgnICsgQkFDS0VORFMuam9pbignKXwoJykgKyAn
KVxcWicpCisKK2NsYXNzIE5vZGUKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgc2VuZCgibG93ZXIi
ICsgbmFtZSkKKyAgZW5kCitlbmQKKworIyBPdmVycmlkZXMgZm9yIGxvd2VyKCkgZm9yIHRob3Nl
IG5vZGVzIHRoYXQgYXJlIGJhY2tlbmQtYWdub3N0aWMKKworZGVmIHNhbml0aXplTGFiZWxOYW1l
KG5hbWUpCisgICMgU29tZSBwbGF0Zm9ybXMgZG9uJ3Qgd2FudCB0aGUgbGVhZGluZyAiXyIuIElm
IHdlIGV2ZXIgd2FudCB0byBkbyBzb21ldGhpbmcKKyAgIyBhYm91dCB0aGF0LCBpdCB3b3VsZCBi
ZSBoZXJlLgorICBuYW1lCitlbmQKKworY2xhc3MgTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisg
ICAgJGFzbS5wdXRzICIuZ2xvYmwgI3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxmLm5hbWUpfSIKKyAg
ICAkYXNtLnB1dHMgIiN7c2FuaXRpemVMYWJlbE5hbWUoc2VsZi5uYW1lKX06IgorICBlbmQKK2Vu
ZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAgICRhc20ucHV0cyAi
X19vYV8je3NlbGYubmFtZVsxLi4tMV19OiIKKyAgZW5kCitlbmQKKworY2xhc3MgU2tpcAorICBk
ZWYgbG93ZXIobmFtZSkKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIGxvd2Vy
KG5hbWUpCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IG5vZGUgfAorICAgICAgbm9kZS5sb3dl
cihuYW1lKQorICAgIH0KKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9y
LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2Vu
ZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAor
IyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgor
cmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNldHRpbmdzIgor
cmVxdWlyZSAidHJhbnNmb3JtIgorCitkZWYgZW1pdE1hZ2ljTnVtYmVyCisgIE9GRlNFVF9NQUdJ
Q19OVU1CRVJTLmVhY2ggeworICAgIHwgbnVtYmVyIHwKKyAgICBwdXRzICIje251bWJlcn0sIgor
ICB9CitlbmQKKworb3JpZ2luYWxBU1QgPSBwYXJzZShsZXgoJHN0ZGluLnJlYWQpKQorCitlbWl0
Q29kZUluQWxsQ29uZmlndXJhdGlvbnMob3JpZ2luYWxBU1QpIHsKKyAgfCBzZXR0aW5ncywgYXN0
LCBiYWNrZW5kLCBpbmRleCB8CisgIG9mZnNldHNMaXN0ID0gYXN0LmZpbHRlcihTdHJ1Y3RPZmZz
ZXQpLnVuaXEuc29ydAorICBzaXplc0xpc3QgPSBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0
CisgIAorICBsZW5ndGggPSAoT0ZGU0VUX01BR0lDX05VTUJFUlMuc2l6ZSArIDEpICogKDEgKyBv
ZmZzZXRzTGlzdC5zaXplICsgc2l6ZXNMaXN0LnNpemUpCisgIAorICBwdXRzICJzdGF0aWMgY29u
c3QgdW5zaWduZWQgZXh0cmFjdG9yVGFibGVbI3tsZW5ndGh9XSA9IHsiCisgIGVtaXRNYWdpY051
bWJlcgorICBwdXRzICIje2luZGV4fSwiCisgIG9mZnNldHNMaXN0LmVhY2ggeworICAgIHwgb2Zm
c2V0IHwKKyAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICBwdXRzICJPRkZMSU5FX0FTTV9PRkZTRVRP
Rigje29mZnNldC5zdHJ1Y3R9LCAje29mZnNldC5maWVsZH0pLCIKKyAgfQorICBzaXplc0xpc3Qu
ZWFjaCB7CisgICAgfCBvZmZzZXQgfAorICAgIGVtaXRNYWdpY051bWJlcgorICAgIHB1dHMgInNp
emVvZigje29mZnNldC5zdHJ1Y3R9KSwiCisgIH0KKyAgcHV0cyAifTsiCit9CisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlv
bnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTg4IEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCitNQUNST19JTlNUUlVDVElPTlMgPQorICBbCisgICAiYWRkaSIs
CisgICAiYW5kaSIsCisgICAibHNoaWZ0aSIsCisgICAibXVsaSIsCisgICAibmVnaSIsCisgICAi
bm90aSIsCisgICAib3JpIiwKKyAgICJyc2hpZnRpIiwKKyAgICJ1cnNoaWZ0aSIsCisgICAic3Vi
aSIsCisgICAieG9yaSIsCisgICAibG9hZGkiLAorICAgImxvYWRiIiwKKyAgICJsb2FkaCIsCisg
ICAic3RvcmVpIiwKKyAgICJzdG9yZWIiLAorICAgImxvYWRkIiwKKyAgICJtb3ZlZCIsCisgICAi
c3RvcmVkIiwKKyAgICJhZGRkIiwKKyAgICJkaXZkIiwKKyAgICJzdWJkIiwKKyAgICJtdWxkIiwK
KyAgICJzcXJ0ZCIsCisgICAiY2kyZCIsCisgICAiZmlpMmQiLCAjIHVzYWdlOiBmaWkyZCA8Z3By
IHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50
IGJpdHM+LCA8ZnByPgorICAgImZkMmlpIiwgIyB1c2FnZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0
aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0
cz4KKyAgICJiZGVxIiwKKyAgICJiZG5lcSIsCisgICAiYmRndCIsCisgICAiYmRndGVxIiwKKyAg
ICJiZGx0IiwKKyAgICJiZGx0ZXEiLAorICAgImJkZXF1biIsCisgICAiYmRuZXF1biIsCisgICAi
YmRndHVuIiwKKyAgICJiZGd0ZXF1biIsCisgICAiYmRsdHVuIiwKKyAgICJiZGx0ZXF1biIsCisg
ICAiYnRkMmkiLAorICAgInRkMmkiLAorICAgImJjZDJpIiwKKyAgICJtb3ZkeiIsCisgICAicG9w
IiwKKyAgICJwdXNoIiwKKyAgICJtb3ZlIiwKKyAgICJzeGkycCIsCisgICAienhpMnAiLAorICAg
Im5vcCIsCisgICAiYmllcSIsCisgICAiYmluZXEiLAorICAgImJpYSIsCisgICAiYmlhZXEiLAor
ICAgImJpYiIsCisgICAiYmliZXEiLAorICAgImJpZ3QiLAorICAgImJpZ3RlcSIsCisgICAiYmls
dCIsCisgICAiYmlsdGVxIiwKKyAgICJiYmVxIiwKKyAgICJiYm5lcSIsCisgICAiYmJhIiwKKyAg
ICJiYmFlcSIsCisgICAiYmJiIiwKKyAgICJiYmJlcSIsCisgICAiYmJndCIsCisgICAiYmJndGVx
IiwKKyAgICJiYmx0IiwKKyAgICJiYmx0ZXEiLAorICAgImJ0aW8iLAorICAgImJ0aXMiLAorICAg
ImJ0aXoiLAorICAgImJ0aW56IiwKKyAgICJidGJvIiwKKyAgICJidGJzIiwKKyAgICJidGJ6IiwK
KyAgICJidGJueiIsCisgICAiam1wIiwKKyAgICJiYWRkaW8iLAorICAgImJhZGRpcyIsCisgICAi
YmFkZGl6IiwKKyAgICJiYWRkaW56IiwKKyAgICJic3ViaW8iLAorICAgImJzdWJpcyIsCisgICAi
YnN1Yml6IiwKKyAgICJic3ViaW56IiwKKyAgICJibXVsaW8iLAorICAgImJtdWxpcyIsCisgICAi
Ym11bGl6IiwKKyAgICJibXVsaW56IiwKKyAgICJib3JpbyIsCisgICAiYm9yaXMiLAorICAgImJv
cml6IiwKKyAgICJib3JpbnoiLAorICAgImJyZWFrIiwKKyAgICJjYWxsIiwKKyAgICJyZXQiLAor
ICAgImNpZXEiLAorICAgImNpbmVxIiwKKyAgICJjaWEiLAorICAgImNpYWVxIiwKKyAgICJjaWIi
LAorICAgImNpYmVxIiwKKyAgICJjaWd0IiwKKyAgICJjaWd0ZXEiLAorICAgImNpbHQiLAorICAg
ImNpbHRlcSIsCisgICAidGlvIiwKKyAgICJ0aXMiLAorICAgInRpeiIsCisgICAidGlueiIsCisg
ICAidGJvIiwKKyAgICJ0YnMiLAorICAgInRieiIsCisgICAidGJueiIsCisgICAicGVlayIsCisg
ICAicG9rZSIsCisgICAiYnBlcSIsCisgICAiYnBuZXEiLAorICAgImJwYSIsCisgICAiYnBhZXEi
LAorICAgImJwYiIsCisgICAiYnBiZXEiLAorICAgImJwZ3QiLAorICAgImJwZ3RlcSIsCisgICAi
YnBsdCIsCisgICAiYnBsdGVxIiwKKyAgICJhZGRwIiwKKyAgICJhbmRwIiwKKyAgICJvcnAiLAor
ICAgInN1YnAiLAorICAgInhvcnAiLAorICAgImxvYWRwIiwKKyAgICJjcGVxIiwKKyAgICJjcG5l
cSIsCisgICAiY3BhIiwKKyAgICJjcGFlcSIsCisgICAiY3BiIiwKKyAgICJjcGJlcSIsCisgICAi
Y3BndCIsCisgICAiY3BndGVxIiwKKyAgICJjcGx0IiwKKyAgICJjcGx0ZXEiLAorICAgInN0b3Jl
cCIsCisgICAiYnRwbyIsCisgICAiYnRwcyIsCisgICAiYnRweiIsCisgICAiYnRwbnoiLAorICAg
ImJhZGRwbyIsCisgICAiYmFkZHBzIiwKKyAgICJiYWRkcHoiLAorICAgImJhZGRwbnoiCisgIF0K
KworWDg2X0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJjZHFpIiwKKyAgICJpZGl2aSIKKyAgXQor
CitJTlNUUlVDVElPTlMgPSBNQUNST19JTlNUUlVDVElPTlMgKyBYODZfSU5TVFJVQ1RJT05TCisK
K0lOU1RSVUNUSU9OX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMu
am9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRf
ZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworTUFHSUNfTlVNQkVSUyA9IFsgMHhl
YzU3N2FjNywgMHgwZmY1ZTc1NSBdCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vb2Zmc2V0cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTYgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3Jl
cXVpcmUgIm9mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzIgorCitPRkZTRVRfTUFHSUNfTlVNQkVS
UyA9IFsgMHhlYzU3N2FjNywgMHgwZmY1ZTc1NSBdCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIG9mZnNldHNMaXN0KGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgc2l6ZXNMaXN0KGFzdCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIFJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhlIEFT
VC4gICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK
K2RlZiBvZmZzZXRzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNv
cnQKK2VuZAorCitkZWYgc2l6ZXNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTaXplb2YpLnVuaXEu
c29ydAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG9mZnNldHNB
bmRDb25maWd1cmF0aW9uSW5kZXgoYXN0LCBmaWxlKSAtPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgICAgIFtvZmZzZXRzLCBpbmRleF0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFBhcnNlcyB0aGUgb2Zm
c2V0cyBmcm9tIGEgZmlsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgdGhlICMK
KyMgaW5kZXggb2YgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB2YWxpZCBpbiB0aGlzIGJ1aWxk
IHRhcmdldC4gICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVm
IG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgoZmlsZSkKKyAgaW5kZXggPSBuaWwKKyAgb2Zm
c2V0cyA9IFtdCisgIGVuZGlhbm5lc3NNYXJrZXJCeXRlcyA9IG5pbAorICAKKyAgZGVmIHJlYWRJ
bnQoZW5kaWFubmVzcywgaW5wKQorICAgIGJ5dGVzID0gW10KKyAgICA0LnRpbWVzIHsKKyAgICAg
IGJ5dGVzIDw8IGlucC5nZXRieXRlCisgICAgfQorICAgIAorICAgIGlmIGVuZGlhbm5lc3MgPT0g
OmxpdHRsZQorICAgICAgIyBMaXR0bGUgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMCB8Cisg
ICAgICAgYnl0ZXNbMV0gPDwgOCB8CisgICAgICAgYnl0ZXNbMl0gPDwgMTYgfAorICAgICAgIGJ5
dGVzWzNdIDw8IDI0KQorICAgIGVsc2UKKyAgICAgICMgQmlnIGVuZGlhbgorICAgICAgKGJ5dGVz
WzBdIDw8IDI0IHwKKyAgICAgICBieXRlc1sxXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbMl0gPDwg
OCB8CisgICAgICAgYnl0ZXNbM10gPDwgMCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBbOmxpdHRs
ZSwgOmJpZ10uZWFjaCB7CisgICAgfCBlbmRpYW5uZXNzIHwKKyAgICBtYWdpY0J5dGVzID0gW10K
KyAgICBNQUdJQ19OVU1CRVJTLmVhY2ggeworICAgICAgfCBudW1iZXIgfAorICAgICAgY3VycmVu
dEJ5dGVzID0gW10KKyAgICAgIDQudGltZXMgeworICAgICAgICBjdXJyZW50Qnl0ZXMgPDwgKG51
bWJlciAmIDB4ZmYpCisgICAgICAgIG51bWJlciA+Pj0gOAorICAgICAgfQorICAgICAgaWYgZW5k
aWFubmVzcyA9PSA6YmlnCisgICAgICAgIGN1cnJlbnRCeXRlcy5yZXZlcnNlIQorICAgICAgZW5k
CisgICAgICBtYWdpY0J5dGVzICs9IGN1cnJlbnRCeXRlcworICAgIH0KKyAgICAKKyAgICBGaWxl
Lm9wZW4oZmlsZSwgInIiKSB7CisgICAgICB8IGlucCB8CisgICAgICB3aGVyZUluTWFya2VyID0g
MAorICAgICAgbG9vcCB7CisgICAgICAgIGJ5dGUgPSBpbnAuZ2V0Ynl0ZQorICAgICAgICBicmVh
ayB1bmxlc3MgYnl0ZQorICAgICAgICBpZiBieXRlID09IG1hZ2ljQnl0ZXNbd2hlcmVJbk1hcmtl
cl0KKyAgICAgICAgICB3aGVyZUluTWFya2VyICs9IDEKKyAgICAgICAgICBpZiB3aGVyZUluTWFy
a2VyID09IG1hZ2ljQnl0ZXMuc2l6ZQorICAgICAgICAgICAgIyBXZSBoYXZlIGEgbWF0Y2ghIElm
IHdlIGhhdmUgbm90IHlldCByZWFkIHRoZSBlbmRpYW5uZXNzIG1hcmtlciBhbmQgaW5kZXgsCisg
ICAgICAgICAgICAjIHRoZW4gcmVhZCB0aG9zZSBub3c7IG90aGVyd2lzZSByZWFkIGFuIG9mZnNl
dC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgbm90IGluZGV4CisgICAgICAgICAgICAg
IGluZGV4ID0gcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgIG9mZnNldHMgPDwgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAg
ICBlbmQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAg
ICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAg
ICAgIGVuZAorICAgICAgfQorICAgIH0KKyAgICAKKyAgICBicmVhayBpZiBpbmRleAorICB9Cisg
IAorICByYWlzZSB1bmxlc3MgaW5kZXgKKyAgCisgIFtvZmZzZXRzLCBpbmRleF0KK2VuZAorCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBidWlsZE9mZnNldHNNYXAoYXN0LCBv
ZmZzZXRzTGlzdCkgLT4gW29mZnNldHMsIHNpemVzXSAgICAgICAgICAgICAgICAjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgQnVpbGRzIGEgbWFwcGluZyBiZXR3ZWVuIFN0cnVjdE9mZnNldCBub2RlcyBh
bmQgdGhlaXIgdmFsdWVzLiAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKworZGVmIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KQorICBvZmZzZXRzTWFw
ID0ge30KKyAgc2l6ZXNNYXAgPSB7fQorICBhc3RPZmZzZXRzTGlzdCA9IG9mZnNldHNMaXN0KGFz
dCkKKyAgYXN0U2l6ZXNMaXN0ID0gc2l6ZXNMaXN0KGFzdCkKKyAgcmFpc2UgdW5sZXNzIGFzdE9m
ZnNldHNMaXN0LnNpemUgKyBhc3RTaXplc0xpc3Quc2l6ZSA9PSBvZmZzZXRzTGlzdC5zaXplCisg
IG9mZnNldHNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHN0cnVjdE9mZnNldCwg
aW5kZXggfAorICAgIG9mZnNldHNNYXBbc3RydWN0T2Zmc2V0XSA9IG9mZnNldHNMaXN0LnNoaWZ0
CisgIH0KKyAgc2l6ZXNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHNpemVvZiwg
aW5kZXggfAorICAgIHNpemVzTWFwW3NpemVvZl0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9Cisg
IFtvZmZzZXRzTWFwLCBzaXplc01hcF0KK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9wYXJzZXIucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5MSBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0Igor
cmVxdWlyZSAiaW5zdHJ1Y3Rpb25zIgorcmVxdWlyZSAicmVnaXN0ZXJzIgorCitjbGFzcyBUb2tl
bgorICBhdHRyX3JlYWRlciA6Y29kZU9yaWdpbiwgOnN0cmluZworICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgc3RyaW5nKQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICAg
IEBzdHJpbmcgPSBzdHJpbmcKKyAgZW5kCisgIAorICBkZWYgPT0ob3RoZXIpCisgICAgaWYgb3Ro
ZXIuaXNfYT8gVG9rZW4KKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIuc3RyaW5nCisgICAgZWxzZQor
ICAgICAgQHN0cmluZyA9PSBvdGhlcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiA9fihvdGhl
cikKKyAgICBAc3RyaW5nID1+IG90aGVyCisgIGVuZAorICAKKyAgZGVmIHRvX3MKKyAgICAiI3tA
c3RyaW5nLmluc3BlY3R9IGF0IGxpbmUgI3tjb2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYg
cGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgcmFpc2Ug
IlBhcnNlIGVycm9yOiAje3RvX3N9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJQYXJzZSBlcnJv
cjogI3t0b19zfTogI3tjb21tZW50WzBdfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIGxleGVyLiBUYWtlcyBhIHN0cmluZyBh
bmQgcmV0dXJucyBhbiBhcnJheSBvZiB0b2tlbnMuICAgICAgICAgICAgIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGxleChzdHIpCisgIHJlc3VsdCA9IFtdCisgIGxp
bmVOdW1iZXIgPSAxCisgIHdoaWxlIG5vdCBzdHIuZW1wdHk/CisgICAgY2FzZSBzdHIKKyAgICB3
aGVuIC9cQVwjKFteXG5dKikvCisgICAgICAjIGNvbW1lbnQsIGlnbm9yZQorICAgIHdoZW4gL1xB
XG4vCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAgbGlu
ZU51bWJlciArPSAxCisgICAgd2hlbiAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKS8KKyAgICAg
IHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFcLihbYS16
QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisg
ICAgd2hlbiAvXEFfKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhs
aW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQShbIFx0XSspLworICAgICAgIyB3aGl0ZXNwYWNl
LCBpZ25vcmUKKyAgICB3aGVuIC9cQTB4KFswLTlhLWZBLUZdKykvCisgICAgICByZXN1bHQgPDwg
VG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLmhleC50b19zKQorICAgIHdoZW4gL1xBMChbMC03XSsp
LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5vY3QudG9fcykKKyAg
ICB3aGVuIC9cQShbMC05XSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVy
LCAkJikKKyAgICB3aGVuIC9cQTo6LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVt
YmVyLCAkJikKKyAgICB3aGVuIC9cQVs6LFwoXClcW1xdPVwrXC0qXS8KKyAgICAgIHJlc3VsdCA8
PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgZWxzZQorICAgICAgcmFpc2UgIkxleGVy
IGVycm9yIGF0IGxpbmUgbnVtYmVyICN7bGluZU51bWJlcn0sIHVuZXhwZWN0ZWQgc2VxdWVuY2Ug
I3tzdHJbMC4uMjBdLmluc3BlY3R9IgorICAgIGVuZAorICAgIHN0ciA9ICR+LnBvc3RfbWF0Y2gK
KyAgZW5kCisgIHJlc3VsdAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIFRva2VuIGlkZW50aWZpY2F0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Rl
ZiBpc1JlZ2lzdGVyKHRva2VuKQorICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOCitlbmQKKwor
ZGVmIGlzSW5zdHJ1Y3Rpb24odG9rZW4pCisgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4K
K2VuZAorCitkZWYgaXNLZXl3b3JkKHRva2VuKQorICB0b2tlbiA9fiAvXEEoKHRydWUpfChmYWxz
ZSl8KGlmKXwodGhlbil8KGVsc2UpfChlbHNpZil8KGVuZCl8KGFuZCl8KG9yKXwobm90KXwobWFj
cm8pfChjb25zdCl8KHNpemVvZil8KGVycm9yKSlcWi8gb3IKKyAgICB0b2tlbiA9fiBSRUdJU1RF
Ul9QQVRURVJOIG9yCisgICAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2Rl
ZiBpc0lkZW50aWZpZXIodG9rZW4pCisgIHRva2VuID1+IC9cQVthLXpBLVpdKFthLXpBLVowLTlf
XSopXFovIGFuZCBub3QgaXNLZXl3b3JkKHRva2VuKQorZW5kCisKK2RlZiBpc0xhYmVsKHRva2Vu
KQorICB0b2tlbiA9fiAvXEFfKFthLXpBLVowLTlfXSopXFovCitlbmQKKworZGVmIGlzTG9jYWxM
YWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXC4oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitk
ZWYgaXNWYXJpYWJsZSh0b2tlbikKKyAgaXNJZGVudGlmaWVyKHRva2VuKSBvciBpc1JlZ2lzdGVy
KHRva2VuKQorZW5kCisKK2RlZiBpc0ludGVnZXIodG9rZW4pCisgIHRva2VuID1+IC9cQVswLTld
LworZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBwYXJzZXIu
IFRha2VzIGFuIGFycmF5IG9mIHRva2VucyBhbmQgcmV0dXJucyBhbiBBU1QuIE1ldGhvZHMgICAg
ICMKKyMgb3RoZXIgdGhhbiBwYXJzZSh0b2tlbnMpIGFyZSBub3QgZm9yIHB1YmxpYyBjb25zdW1w
dGlvbi4gICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor
Y2xhc3MgUGFyc2VyCisgIGRlZiBpbml0aWFsaXplKHRva2VucykKKyAgICBAdG9rZW5zID0gdG9r
ZW5zCisgICAgQGlkeCA9IDAKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkK
KyAgICBpZiBAdG9rZW5zW0BpZHhdCisgICAgICBAdG9rZW5zW0BpZHhdLnBhcnNlRXJyb3IoKmNv
bW1lbnQpCisgICAgZWxzZQorICAgICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgICAgcmFpc2Ug
IlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlIgorICAgICAgZWxzZQorICAgICAgICByYWlzZSAi
UGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZpbGU6ICN7Y29tbWVudFswXX0iCisgICAgICBlbmQKKyAg
ICBlbmQKKyAgZW5kCisgIAorICBkZWYgY29uc3VtZShyZWdleHApCisgICAgaWYgcmVnZXhwCisg
ICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID1+IHJlZ2V4cAorICAgIGVsc2UK
KyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEBpZHggPT0gQHRva2Vucy5sZW5ndGgKKyAgICBlbmQK
KyAgICBAaWR4ICs9IDEKKyAgZW5kCisgIAorICBkZWYgc2tpcE5ld0xpbmUKKyAgICB3aGlsZSBA
dG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJub3Qi
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIHBhcnNlUHJlZGljYXRlQXRvbQorICAgIGVsc2lmIEB0
b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisg
ICAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRv
a2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxz
aWYgQHRva2Vuc1tAaWR4XSA9PSAidHJ1ZSIKKyAgICAgIHJlc3VsdCA9IFRydWUuaW5zdGFuY2UK
KyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9
PSAiZmFsc2UiCisgICAgICByZXN1bHQgPSBGYWxzZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAx
CisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAg
ICAgcmVzdWx0ID0gU2V0dGluZy5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRv
a2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVs
c2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVk
aWNhdGVBbmQKKyAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICB3aGlsZSBAdG9r
ZW5zW0BpZHhdID09ICJhbmQiCisgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9
IHBhcnNlUHJlZGljYXRlQXRvbQorICAgICAgcmVzdWx0ID0gQW5kLm5ldyhjb2RlT3JpZ2luLCBy
ZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJz
ZVByZWRpY2F0ZQorICAgICMgc29tZSBleGFtcGxlcyBvZiBwcmVjZWRlbmNlOgorICAgICMgbm90
IGEgYW5kIGIgLT4gKG5vdCBhKSBhbmQgYgorICAgICMgYSBhbmQgYiBvciBjIC0+IChhIGFuZCBi
KSBvciBjCisgICAgIyBhIG9yIGIgYW5kIGMgLT4gYSBvciAoYiBhbmQgYykKKyAgICAKKyAgICBy
ZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIm9y
IgorICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlk
eCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUFu
ZAorICAgICAgcmVzdWx0ID0gT3IubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAg
ZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlVmFyaWFibGUKKyAgICBpZiBp
c1JlZ2lzdGVyKEB0b2tlbnNbQGlkeF0pCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID1+IEZQUl9Q
QVRURVJOCisgICAgICAgIHJlc3VsdCA9IEZQUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBlbHNlCisgICAgICAg
IHJlc3VsdCA9IFJlZ2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0
b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgZW5kCisgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0
b2tlbnNbQGlkeF0pCisgICAgICByZXN1bHQgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgZWxzZQorICAgICAgcGFy
c2VFcnJvcgorICAgIGVuZAorICAgIEBpZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisg
IGRlZiBwYXJzZUFkZHJlc3Mob2Zmc2V0KQorICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNb
QGlkeF0gPT0gIlsiCisgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgor
ICAgIAorICAgICMgVGhyZWUgcG9zc2liaWxpdGllczoKKyAgICAjIFtdICAgICAgIC0+IEFic29s
dXRlQWRkcmVzcworICAgICMgW2FdICAgICAgLT4gQWRkcmVzcworICAgICMgW2EsYl0gICAgLT4g
QmFzZUluZGV4IHdpdGggc2NhbGUgPSAxCisgICAgIyBbYSxiLGNdICAtPiBCYXNlSW5kZXgKKyAg
ICAKKyAgICBAaWR4ICs9IDEKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgQGlk
eCArPSAxCisgICAgICByZXR1cm4gQWJzb2x1dGVBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBvZmZz
ZXQpCisgICAgZW5kCisgICAgYSA9IHBhcnNlVmFyaWFibGUKKyAgICBpZiBAdG9rZW5zW0BpZHhd
ID09ICJdIgorICAgICAgcmVzdWx0ID0gQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgYSwgb2Zmc2V0
KQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwi
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIGIgPSBwYXJzZVZhcmlhYmxlCisgICAgICBpZiBAdG9r
ZW5zW0BpZHhdID09ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmln
aW4sIGEsIGIsIDEsIG9mZnNldCkKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvciB1bmxl
c3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIFsiMSIsICIyIiwgIjQiLCAiOCJdLm1lbWJlcj8gQHRva2Vuc1tAaWR4XS5z
dHJpbmcKKyAgICAgICAgYyA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kKKyAgICAgICAgQGlk
eCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisg
ICAgICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgYywgb2Zmc2V0
KQorICAgICAgZW5kCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAor
ICAKKyAgZGVmIHBhcnNlQ29sb25Db2xvbgorICAgIHNraXBOZXdMaW5lCisgICAgY29kZU9yaWdp
biA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRl
bnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgbmFtZXMgPSBbQHRva2Vuc1tAaWR4XS5zdHJpbmdd
CisgICAgQGlkeCArPSAxCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiOjoiCisgICAgICBA
aWR4ICs9IDEKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0Bp
ZHhdCisgICAgICBuYW1lcyA8PCBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgQGlkeCArPSAx
CisgICAgZW5kCisgICAgcmFpc2UgaWYgbmFtZXMuZW1wdHk/CisgICAgW2NvZGVPcmlnaW4sIG5h
bWVzXQorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgc2tpcE5ld0xp
bmUKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICItIgorICAgICAgQGlkeCArPSAxCisgICAgICBO
ZWdJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHBhcnNlRXhwcmVz
c2lvbkF0b20pCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0g
MQorICAgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uCisgICAgICBwYXJzZUVycm9yIHVubGVz
cyBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAg
ICBlbHNpZiBpc0ludGVnZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gSW1tZWRpYXRl
Lm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kp
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBA
dG9rZW5zW0BpZHhdCisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgor
ICAgICAgaWYgbmFtZXMuc2l6ZSA+IDEKKyAgICAgICAgU3RydWN0T2Zmc2V0LmZvckZpZWxkKGNv
ZGVPcmlnaW4sIG5hbWVzWzAuLi0yXS5qb2luKCc6OicpLCBuYW1lc1stMV0pCisgICAgICBlbHNl
CisgICAgICAgIFZhcmlhYmxlLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXNbMF0pCisgICAgICBl
bmQKKyAgICBlbHNpZiBpc1JlZ2lzdGVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHBhcnNlVmFyaWFi
bGUKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJzaXplb2YiCisgICAgICBAaWR4ICs9IDEK
KyAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBTaXplb2Yu
Zm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lcy5qb2luKCc6OicpKQorICAgIGVsc2UKKyAgICAgIHBh
cnNlRXJyb3IKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uTXVsCisg
ICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgd2hp
bGUgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIioiCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBNdWxJbW1lZGlhdGVzLm5ldyhAdG9r
ZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbkF0b20pCisg
ICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1bHQK
KyAgZW5kCisgIAorICBkZWYgY291bGRCZUV4cHJlc3Npb24KKyAgICBAdG9rZW5zW0BpZHhdID09
ICItIiBvciBAdG9rZW5zW0BpZHhdID09ICJzaXplb2YiIG9yIGlzSW50ZWdlcihAdG9rZW5zW0Bp
ZHhdKSBvciBpc1ZhcmlhYmxlKEB0b2tlbnNbQGlkeF0pCisgIGVuZAorICAKKyAgZGVmIHBhcnNl
RXhwcmVzc2lvbgorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9u
TXVsCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKyIgb3IgQHRva2Vuc1tAaWR4XSA9PSAi
LSIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIisiCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICByZXN1bHQgPSBBZGRJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3Jp
Z2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gIi0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBTdWJJbW1lZGlh
dGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVz
c2lvbk11bCkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVuZAor
ICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZU9wZXJhbmQoY29tbWVudCkKKyAgICBp
ZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgICAgZXhwciA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAg
aWYgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgICAgcGFyc2VBZGRyZXNzKGV4cHIpCisgICAg
ICBlbHNlCisgICAgICAgIGV4cHIKKyAgICAgIGVuZAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0g
PT0gIlsiCisgICAgICBwYXJzZUFkZHJlc3MoSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4sIDApKQorICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVz
dWx0ID0gTGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgTGFiZWwu
Zm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkK
KyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNMb2NhbExhYmVsIEB0
b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbiwgTG9jYWxMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAxCisgICAgICBy
ZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yKGNvbW1lbnQpCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICBza2lwTmV3TGluZQorICAgIGNv
bnN1bWUoL1xBXChcWi8pCisgICAgdmFyaWFibGVzID0gW10KKyAgICBsb29wIHsKKyAgICAgIHNr
aXBOZXdMaW5lCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhd
KQorICAgICAgICB2YXJpYWJsZXMgPDwgVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICIsIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFy
c2VFcnJvcgorICAgICAgICBlbmQKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvcgorICAg
ICAgZW5kCisgICAgfQorICAgIHZhcmlhYmxlcworICBlbmQKKyAgCisgIGRlZiBwYXJzZVNlcXVl
bmNlKGZpbmFsLCBjb21tZW50KQorICAgIGZpcnN0Q29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbgorICAgIGxpc3QgPSBbXQorICAgIGxvb3AgeworICAgICAgaWYgKEBpZHggPT0g
QHRva2Vucy5sZW5ndGggYW5kIG5vdCBmaW5hbCkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhd
ID1+IGZpbmFsKQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAi
XG4iCisgICAgICAgICMgaWdub3JlCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiY29uc3QiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVy
cm9yIHVubGVzcyBpc1ZhcmlhYmxlIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgdmFyaWFibGUgPSBW
YXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5z
dHJpbmcpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9r
ZW5zW0BpZHhdID09ICI9IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFsdWUgPSBwYXJz
ZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBjb25zdCAje3ZhcmlhYmxlLm5hbWV9IikKKyAgICAg
ICAgbGlzdCA8PCBDb25zdERlY2wubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgdmFyaWFi
bGUsIHZhbHVlKQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZXJyb3IiCisgICAgICAg
IGxpc3QgPDwgRXJyb3IubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbikKKyAgICAgICAgQGlk
eCArPSAxCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJpZiIKKyAgICAgICAgY29kZU9y
aWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAg
ICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICBza2lwTmV3TGluZQorICAg
ICAgICBpZlRoZW5FbHNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGljYXRlLCBw
YXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBpbnNpZGUg
b2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAgIGxpc3QgPDwgaWZUaGVuRWxz
ZQorICAgICAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJlbHNpZiIKKyAgICAgICAgICBjb2Rl
T3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0
ZQorICAgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgICBza2lw
TmV3TGluZQorICAgICAgICAgIGVsc2VDYXNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwg
cHJlZGljYXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3
aGlsZSBpbnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAgICAgaWZU
aGVuRWxzZS5lbHNlQ2FzZSA9IGVsc2VDYXNlCisgICAgICAgICAgaWZUaGVuRWxzZSA9IGVsc2VD
YXNlCisgICAgICAgIGVuZAorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJlbHNlIgorICAg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBwYXJzZVNl
cXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBlbHNlIGNhc2UgZm9yIFwiaWYgI3tw
cmVkaWNhdGUuZHVtcH1cIiIpCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJlbmQiCisgICAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAi
bWFjcm8iCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIHBhcnNlRXJyb3Ig
dW5sZXNzIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICBuYW1lID0gQHRva2Vu
c1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhcmlhYmxlcyA9IHBh
cnNlTWFjcm9WYXJpYWJsZXMKKyAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFov
LCAid2hpbGUgaW5zaWRlIG9mIG1hY3JvICN7bmFtZX0iKQorICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgbGlzdCA8PCBNYWNyby5uZXcoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBib2R5
KQorICAgICAgZWxzaWYgaXNJbnN0cnVjdGlvbiBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVP
cmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNb
QGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBpZiAobm90IGZpbmFsIGFu
ZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZp
bmFsKQorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLCBhbmQgaXQncyB0aGUg
bGFzdCBvbmUuCisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwg
bmFtZSwgW10pCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9
PSAiXG4iCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAg
bGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAg
QGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICAjIEl0J3MgZGVmaW5pdGVseSBhbiBp
bnN0cnVjdGlvbiwgYW5kIGl0IGhhcyBhdCBsZWFzdCBvbmUgb3BlcmFuZC4KKyAgICAgICAgICBv
cGVyYW5kcyA9IFtdCisgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9IGZhbHNlCisgICAgICAgICAg
bG9vcCB7CisgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lk
ZSBvZiBpbnN0cnVjdGlvbiAje25hbWV9IikKKyAgICAgICAgICAgIGlmIChub3QgZmluYWwgYW5k
IEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmlu
YWwpCisgICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24gYW5kIG9mIHRo
ZSBzZXF1ZW5jZS4KKyAgICAgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9IHRydWUKKyAgICAgICAg
ICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAg
ICAgICAgICAgICMgSGFzIGFub3RoZXIgb3BlcmFuZC4KKyAgICAgICAgICAgICAgQGlkeCArPSAx
CisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAgICAg
IyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbi4KKyAgICAgICAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHBhcnNl
RXJyb3IoIkV4cGVjdGVkIGEgY29tbWEsIG5ld2xpbmUsIG9yICN7ZmluYWx9IGFmdGVyICN7b3Bl
cmFuZHMubGFzdC5kdW1wfSIpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICB9CisgICAgICAg
ICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisg
ICAgICAgICAgaWYgZW5kT2ZTZXF1ZW5jZQorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICBl
bmQKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQor
ICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5h
bWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYg
QHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgICAgICAjIE1hY3JvIGludm9jYXRpb24uCisgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgIHNraXBO
ZXdMaW5lCisgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAg
ICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJtYWNybyIK
KyAgICAgICAgICAgICAgICAjIEl0J3MgYSBtYWNybyBsYW1iZGEhCisgICAgICAgICAgICAgICAg
Y29kZU9yaWdpbklubmVyID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1Zhcmlh
YmxlcworICAgICAgICAgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndo
aWxlIGluc2lkZSBvZiBhbm9ueW1vdXMgbWFjcm8gcGFzc2VkIGFzIGFyZ3VtZW50IHRvICN7bmFt
ZX0iKQorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIG9wZXJhbmRz
IDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luSW5uZXIsIG5pbCwgdmFyaWFibGVzLCBib2R5KQorICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5k
KCJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gY2FsbCB0byAje25hbWV9IikKKyAgICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNb
QGlkeF0gPT0gIikiCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAg
YnJlYWsKKyAgICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHBh
cnNlRXJyb3IgIlVuZXhwZWN0ZWQgI3tAdG9rZW5zW0BpZHhdLnN0cmluZy5pbnNwZWN0fSB3aGls
ZSBwYXJzaW5nIGludm9jYXRpb24gb2YgbWFjcm8gI3tuYW1lfSIKKyAgICAgICAgICAgICAgZW5k
CisgICAgICAgICAgICB9CisgICAgICAgICAgZW5kCisgICAgICAgICAgbGlzdCA8PCBNYWNyb0Nh
bGwubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAgICBlbHNlCisgICAgICAg
ICAgcGFyc2VFcnJvciAiRXhwZWN0ZWQgXCIoXCIgYWZ0ZXIgI3tuYW1lfSIKKyAgICAgICAgZW5k
CisgICAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0gb3IgaXNMb2NhbExhYmVsIEB0b2tl
bnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgor
ICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIjoiCisgICAgICAgICMg
SXQncyBhIGxhYmVsLgorICAgICAgICBpZiBpc0xhYmVsIG5hbWUKKyAgICAgICAgICBsaXN0IDw8
IExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZWxzZQorICAgICAgICAg
IGxpc3QgPDwgTG9jYWxMYWJlbC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVu
ZAorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvciAiRXhw
ZWN0aW5nIHRlcm1pbmFsICN7ZmluYWx9ICN7Y29tbWVudH0iCisgICAgICBlbmQKKyAgICB9Cisg
ICAgU2VxdWVuY2UubmV3KGZpcnN0Q29kZU9yaWdpbiwgbGlzdCkKKyAgZW5kCitlbmQKKworZGVm
IHBhcnNlKHRva2VucykKKyAgcGFyc2VyID0gUGFyc2VyLm5ldyh0b2tlbnMpCisgIHBhcnNlci5w
YXJzZVNlcXVlbmNlKG5pbCwgIiIpCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1OSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworR1BSUyA9Cisg
IFsKKyAgICJ0MCIsCisgICAidDEiLAorICAgInQyIiwKKyAgICJ0MyIsCisgICAidDQiLAorICAg
ImNmciIsCisgICAiYTAiLAorICAgImExIiwKKyAgICJyMCIsCisgICAicjEiLAorICAgInNwIgor
ICBdCisKK0ZQUlMgPQorICBbCisgICAiZnQwIiwKKyAgICJmdDEiLAorICAgImZ0MiIsCisgICAi
ZnQzIiwKKyAgICJmdDQiLAorICAgImZ0NSIsCisgICAiZmEwIiwKKyAgICJmYTEiLAorICAgImZh
MiIsCisgICAiZmEzIiwKKyAgICJmciIKKyAgXQorCitSRUdJU1RFUlMgPSBHUFJTICsgRlBSUwor
CitHUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEdQUlMuam9pbignKXwoJykgKyAn
KSlcXFonKQorRlBSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBGUFJTLmpvaW4oJyl8
KCcpICsgJykpXFxaJykKKworUkVHSVNURVJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyAr
IFJFR0lTVEVSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDIyMSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisj
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWly
ZSAiYXN0IgorcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJ0
cmFuc2Zvcm0iCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGNvbXB1dGVT
ZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIC0+IHNldHRpbmdzQ29tYmlhdGlvbnMgICAgICAgICAg
ICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyBDb21wdXRlcyBhbiBhcnJheSBvZiBzZXR0aW5ncyBt
YXBzLCB3aGVyZSBhIHNldHRpbmdzIG1hcCBjb25zdGl0dXRlcyAjCisjIGEgY29uZmlndXJhdGlv
biBmb3IgdGhlIGFzc2VtYmx5IGNvZGUgYmVpbmcgZ2VuZXJhdGVkLiBUaGUgbWFwICAgICAgICMK
KyMgY29udGFpbnMga2V5IHZhbHVlIHBhaXJzIHdoZXJlIGtleXMgYXJlIHNldHRpbmdzIG5hbWVz
IChzdHJpbmdzKSBhbmQgIworIyB0aGUgdmFsdWVzIGFyZSBib29sZWFucyAodHJ1ZSBmb3IgZW5h
YmxlZCwgZmFsc2UgZm9yIGRpc2FibGVkKS4gICAgICAjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworCitkZWYgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgc2V0
dGluZ3NDb21iaW5hdGlvbnMgPSBbXQorICAKKyAgZGVmIHNldHRpbmdzQ29tYmluYXRvcihzZXR0
aW5nc0NvbWJpbmF0aW9ucywgbWFwU29GYXIsIHJlbWFpbmluZykKKyAgICBpZiByZW1haW5pbmcu
ZW1wdHk/CisgICAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA8PCBtYXBTb0ZhcgorICAgICAgcmV0
dXJuCisgICAgZW5kCisgICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFw
W3JlbWFpbmluZ1swXV0gPSB0cnVlCisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29t
YmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmluZ1sxLi4tMV0pCisgICAgCisgICAgbmV3TWFwID0g
bWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSBmYWxzZQorICAgIHNldHRp
bmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4u
LTFdKQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9u
cywge30sIChhc3QuZmlsdGVyKFNldHRpbmcpLnVuaXEuY29sbGVjdHt8dnwgdi5uYW1lfSArIFsi
WDg2IiwgIkFSTXY3Il0pLnVuaXEpCisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucworZW5kCisK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGZvclNldHRpbmdzKGNvbmNyZXRl
U2V0dGluZ3MsIGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAg
IHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfCAuLi4gfSAgICAgICAg
ICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIERldGVybWluZXMgaWYgdGhlIHNldHRpbmdz
IGNvbWJpbmF0aW9uIGlzIHZhbGlkLCBhbmQgaWYgc28sIGNhbGxzICAgICMKKyMgdGhlIGJsb2Nr
IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSBuZWVkIHRvIGdlbmVyYXRlIGNvZGUuICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGZvclNldHRpbmdz
KGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkKKyAgIyBDaGVjayB3aGljaCBhcmNoaXRlY3R1cmVzIHRo
aXMgY29tYmluYXRvciBjbGFpbXMgdG8gc3VwcG9ydC4KKyAgbnVtQ2xhaW1lZEJhY2tlbmRzID0g
MAorICBzZWxlY3RlZEJhY2tlbmQgPSBuaWwKKyAgQkFDS0VORFMuZWFjaCB7CisgICAgfCBiYWNr
ZW5kIHwKKyAgICBpc1N1cHBvcnRlZCA9IGNvbmNyZXRlU2V0dGluZ3NbYmFja2VuZF0KKyAgICBy
YWlzZSB1bmxlc3MgaXNTdXBwb3J0ZWQgIT0gbmlsCisgICAgbnVtQ2xhaW1lZEJhY2tlbmRzICs9
IGlmIGlzU3VwcG9ydGVkIHRoZW4gMSBlbHNlIDAgZW5kCisgICAgaWYgaXNTdXBwb3J0ZWQKKyAg
ICAgIHNlbGVjdGVkQmFja2VuZCA9IGJhY2tlbmQKKyAgICBlbmQKKyAgfQorICAKKyAgcmV0dXJu
IGlmIG51bUNsYWltZWRCYWNrZW5kcyA+IDEKKyAgCisgICMgUmVzb2x2ZSB0aGUgQVNUIGRvd24g
dG8gYSBsb3ctbGV2ZWwgZm9ybSAobm8gbWFjcm9zIG9yIGNvbmRpdGlvbmFscykuCisgIGxvd0xl
dmVsQVNUID0gYXN0LnJlc29sdmVTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzKQorICAKKyAgeWll
bGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIHNlbGVjdGVkQmFja2VuZAorZW5kCisK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGZvckVhY2hWYWxpZFNldHRpbmdz
Q29tYmluYXRpb24oYXN0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAg
IHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9ICAgICAgICAg
ICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmlu
YXRpb24oYXN0LCBzZXR0aW5nc0NvbWJpbmF0aW9ucykgeyAgICAgICAgICMKKyMgICAgIHwgY29u
Y3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9ICAgICAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIEV4ZWN1dGVzIHRoZSBnaXZlbiBibG9jayBmb3IgZWFj
aCB2YWxpZCBzZXR0aW5ncyBjb21iaW5hdGlvbiBpbiB0aGUgICMKKyMgc2V0dGluZ3MgbWFwLiBU
aGUgYXN0IHBhc3NlZCBpbnRvIHRoZSBibG9jayBpcyByZXNvbHZlZCAgICAgICAgICAgICAgIwor
IyAoYXN0LnJlc29sdmUpIGFnYWluc3QgdGhlIHNldHRpbmdzLiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIGZpcnN0IGZvcm0gd2lsbCBj
YWxsIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIGZvciB5b3UuICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGZvckVhY2hWYWxpZFNldHRpbmdzQ29t
YmluYXRpb24oYXN0LCAqb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucykKKyAgcmFpc2UgaWYg
b3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucy5zaXplID4gMQorICAKKyAgaWYgb3B0aW9uYWxT
ZXR0aW5nc0NvbWJpbmF0aW9ucy5lbXB0eT8KKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IGNv
bXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIGVsc2UKKyAgICBzZXR0aW5nc0NvbWJp
bmF0aW9ucyA9IG9wdGlvbmFsU2V0dGluZ3NDb21iaWF0aW9uc1swXQorICBlbmQKKyAgCisgIHNl
dHRpbmdzQ29tYmluYXRpb25zLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBjb25jcmV0ZVNldHRp
bmdzLCBpbmRleCB8CisgICAgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7Cisg
ICAgICB8IGNvbmNyZXRlU2V0dGluZ3NfLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgICB5
aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICB9
CisgIH0KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBjcHBTZXR0
aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgUmV0dXJucyB0aGUgQysrIGNvZGUgdXNlZCB0byB0
ZXN0IGlmIHdlIGFyZSBpbiBhIGNvbmZpZ3VyYXRpb24gdGhhdCAgIworIyBjb3JyZXNwb25kcyB0
byB0aGUgZ2l2ZW4gY29uY3JldGUgc2V0dGluZ3MuICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgY3BwU2V0dGluZ3NUZXN0
KGNvbmNyZXRlU2V0dGluZ3MpCisgICIjaWYgIiArIGNvbmNyZXRlU2V0dGluZ3MudG9fYS5jb2xs
ZWN0eworICAgIHwgcGFpciB8CisgICAgKGlmIHBhaXJbMV0KKyAgICAgICAiIgorICAgICBlbHNl
CisgICAgICAgIiEiCisgICAgIGVuZCkgKyAiT0ZGTElORV9BU01fIiArIHBhaXJbMF0KKyAgfS5q
b2luKCIgJiYgIikKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBp
c0FTVEVycm9uZW91cyhhc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGVzdHMgdG8gc2VlIGlmIHRoZSBBU1Qg
Y2xhaW1zIHRoYXQgdGhlcmUgaXMgYW4gZXJyb3IgLSBpLmUuIGlmIHRoZSAgIworIyB1c2VyJ3Mg
Y29kZSwgYWZ0ZXIgc2V0dGluZ3MgcmVzb2x1dGlvbiwgaGFzIEVycm9yIG5vZGVzLiAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgaXNBU1RFcnJv
bmVvdXMoYXN0KQorICBub3QgYXN0LmZpbHRlcihFcnJvcikuZW1wdHk/CitlbmQKKworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0
ZVNldHRpbmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIEVtaXRzIGEgY2hlY2sgdGhhdCBhc3NlcnRzIHRoYXQgd2UncmUgdXNpbmcgdGhlIGdp
dmVuIGNvbmZpZ3VyYXRpb24uICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK
K2RlZiBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgIHB1dHMgY3BwU2V0
dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgIHB1dHMgIiNlbHNlIgorICBwdXRzICIjZXJy
b3IgXCJDb25maWd1cmF0aW9uIG1pc21hdGNoLlwiIgorICBwdXRzICIjZW5kaWYiCitlbmQKKwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZW1pdENvZGVJbkNvbmZpZ3VyYXRp
b24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKSB7ICAgICAgICAgICAgIworIyAgICAg
fCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQgfCAuLi4gfSAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRW1pdHMgYWxsIHJlbGV2YW50IGd1YXJkcyB0
byBzZWUgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaG9sZHMgYW5kICAgICAgIworIyBjYWxscyB0aGUg
YmxvY2sgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGVycm9uZW91cy4gICAgICAgICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZW1pdENvZGVJbkNv
bmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKQorICBwdXRzIGNwcFNl
dHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAKKyAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0
KQorICAgIHB1dHMgIiNlcnJvciBcIkludmFsaWQgY29uZmlndXJhdGlvbi5cIiIKKyAgZWxzaWYg
bm90IFdPUktJTkdfQkFDS0VORFMuaW5jbHVkZT8gYmFja2VuZAorICAgIHB1dHMgIiNlcnJvciBc
IlRoaXMgYmFja2VuZCBpcyBub3Qgc3VwcG9ydGVkIHlldC5cIiIKKyAgZWxzZQorICAgIHlpZWxk
IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZAorICBlbmQKKyAgCisgIHB1dHMgIiNlbmRp
ZiIKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBlbWl0Q29kZUlu
QWxsQ29uZmlndXJhdGlvbnMoYXN0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4g
fSAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFbWl0cyBndWFyZCBjb2Rl
cyBmb3IgYWxsIHZhbGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgY2FsbHMgdGhlIGJsb2NrICAjCisj
IGZvciB0aG9zZSBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSB2YWxpZCBhbmQgbm90IGVycm9uZW91
cy4gICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBl
bWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KQorICBmb3JFYWNoVmFsaWRTZXR0aW5nc0Nv
bWJpbmF0aW9uKGFzdCkgeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJh
Y2tlbmQsIGluZGV4IHwKKyAgICBwdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdz
KQorICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRl
eAorICAgIHB1dHMgIiNlbmRpZiIKKyAgfQorZW5kCisKKworCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM1MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
cmVxdWlyZSAiYXN0IgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2Rl
LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGRv
ZXMgbm90IGhhdmUgYW55IElmVGhlbkVsc2Ugbm9kZXMgYnkgICAgICAgIworIyBzdWJzdGl0dXRp
bmcgY29uY3JldGUgYm9vbGVhbiB2YWx1ZXMgZm9yIGVhY2ggU2V0dGluZy4gICAgICAgICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRl
ZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBj
aGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgfQorICBl
bmQKK2VuZAorCitjbGFzcyBUcnVlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisg
ICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZQorICBkZWYgcmVzb2x2ZVNldHRpbmdz
KHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgU2V0dGluZworICBkZWYg
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNldHRpbmdzW0BuYW1lXS5hc05vZGUKKyAg
ZW5kCitlbmQKKworY2xhc3MgQW5kCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisg
ICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgYW5kIEByaWdodC5yZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3Mg
T3IKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQucmVzb2x2ZVNl
dHRpbmdzKHNldHRpbmdzKS52YWx1ZSBvciBAcmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdz
KS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE5vdAorICBkZWYgcmVzb2x2ZVNl
dHRpbmdzKHNldHRpbmdzKQorICAgIChub3QgQGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBJZlRoZW5FbHNlCisgIGRlZiBy
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgaWYgQHByZWRpY2F0ZS5yZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpLnZhbHVlCisgICAgICBAdGhlbkNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRp
bmdzKQorICAgIGVsc2UKKyAgICAgIEBlbHNlQ2FzZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
CisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiByZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpCisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAg
ICB8IGl0ZW0gfAorICAgICAgaXRlbSA9IGl0ZW0ucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQor
ICAgICAgaWYgaXRlbS5pc19hPyBTZXF1ZW5jZQorICAgICAgICBuZXdMaXN0ICs9IGl0ZW0ubGlz
dAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0KKyAgICAgIGVuZAorICAgIH0K
KyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5kCitlbmQKKworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5kZW1hY3JvaWZ5KG1hY3Jvcykg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnN1
YnN0aXR1dGUobWFwcGluZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgZGVtYWNyb2lmeSgpIGNvbnN0cnVjdHMgYSBuZXcg
QVNUIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgTWFjcm8gICAgICAgIworIyBub2Rlcywgd2hpbGUg
c3Vic3RpdHV0ZSgpIHJlcGxhY2VzIFZhcmlhYmxlIG5vZGVzIHdpdGggdGhlIGdpdmVuICAgICAj
CisjIG5vZGVzIGluIHRoZSBtYXBwaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Ns
YXNzIE5vZGUKKyAgZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAgIG1hcENoaWxkcmVuIHsKKyAg
ICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuZGVtYWNyb2lmeShtYWNyb3MpCisgICAgfQorICBl
bmQKKyAgCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbWFwQ2hpbGRyZW4geworICAg
ICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5zdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgfQorICBl
bmQKKyAgCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgbWFwQ2hpbGRyZW4g
eworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5zdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcp
CisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBNYWNybworICBkZWYgc3Vic3RpdHV0ZShtYXBw
aW5nKQorICAgIG15TWFwcGluZyA9IHt9CisgICAgbWFwcGluZy5lYWNoX3BhaXIgeworICAgICAg
fCBrZXksIHZhbHVlIHwKKyAgICAgIHVubGVzcyBAdmFyaWFibGVzLmluY2x1ZGU/IGtleQorICAg
ICAgICBteU1hcHBpbmdba2V5XSA9IHZhbHVlCisgICAgICBlbmQKKyAgICB9CisgICAgbWFwQ2hp
bGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5zdWJzdGl0dXRlKG15TWFwcGlu
ZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlCisgIGRlZiBzdWJzdGl0dXRl
KG1hcHBpbmcpCisgICAgaWYgbWFwcGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAg
IGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJl
bAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0K
KyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVu
ZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBzdWJzdGl0dXRlKGNvbnN0YW50cykKKyAg
ICBuZXdMaXN0ID0gW10KKyAgICBteUNvbnN0YW50cyA9IGNvbnN0YW50cy5kdXAKKyAgICBAbGlz
dC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IENvbnN0RGVjbAor
ICAgICAgICBteUNvbnN0YW50c1tpdGVtLnZhcmlhYmxlXSA9IGl0ZW0udmFsdWUuc3Vic3RpdHV0
ZShteUNvbnN0YW50cykKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtLnN1YnN0
aXR1dGUobXlDb25zdGFudHMpCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNv
ZGVPcmlnaW4sIG5ld0xpc3QpCisgIGVuZAorICAKKyAgZGVmIHJlbmFtZUxhYmVscworICAgIG1h
cHBpbmcgPSB7fQorICAgIAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAg
IGlmIGl0ZW0uaXNfYT8gTG9jYWxMYWJlbAorICAgICAgICBtYXBwaW5nW2l0ZW1dID0gTG9jYWxM
YWJlbC51bmlxdWUKKyAgICAgIGVuZAorICAgIH0KKyAgICAKKyAgICBzdWJzdGl0dXRlTGFiZWxz
KG1hcHBpbmcpCisgIGVuZAorICAKKyAgZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAgIG15TWFj
cm9zID0gbWFjcm9zLmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAg
IGlmIGl0ZW0uaXNfYT8gTWFjcm8KKyAgICAgICAgbXlNYWNyb3NbaXRlbS5uYW1lXSA9IGl0ZW0K
KyAgICAgIGVuZAorICAgIH0KKyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAg
ICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgICMgSWdub3Jl
LgorICAgICAgZWxzaWYgaXRlbS5pc19hPyBNYWNyb0NhbGwKKyAgICAgICAgbWFwcGluZyA9IHt9
CisgICAgICAgIG15TXlNYWNyb3MgPSBteU1hY3Jvcy5kdXAKKyAgICAgICAgcmFpc2UgIkNvdWxk
IG5vdCBmaW5kIG1hY3JvICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30i
IHVubGVzcyBteU1hY3Jvc1tpdGVtLm5hbWVdCisgICAgICAgIHJhaXNlICJBcmd1bWVudCBjb3Vu
dCBtaXNtYXRjaCBmb3IgY2FsbCB0byAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5T
dHJpbmd9IiB1bmxlc3MgaXRlbS5vcGVyYW5kcy5zaXplID09IG15TWFjcm9zW2l0ZW0ubmFtZV0u
dmFyaWFibGVzLnNpemUKKyAgICAgICAgaXRlbS5vcGVyYW5kcy5zaXplLnRpbWVzIHsKKyAgICAg
ICAgICB8IGlkeCB8CisgICAgICAgICAgaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IFZhcmlh
YmxlIGFuZCBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG15
TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG15TWFj
cm9zW2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jv
c1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxzaWYg
aXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IE1hY3JvCisgICAgICAgICAgICBteU15TWFjcm9zW215
TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBpdGVtLm9wZXJhbmRzW2lk
eF0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4
XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlN
YWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBuaWwKKyAgICAgICAgICAgIG1hcHBp
bmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBpdGVtLm9wZXJhbmRzW2lk
eF0KKyAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBuZXdMaXN0ICs9IG15TWFjcm9z
W2l0ZW0ubmFtZV0uYm9keS5zdWJzdGl0dXRlKG1hcHBpbmcpLmRlbWFjcm9pZnkobXlNeU1hY3Jv
cykucmVuYW1lTGFiZWxzLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVt
LmRlbWFjcm9pZnkobXlNYWNyb3MpCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3
KGNvZGVPcmlnaW4sIG5ld0xpc3QpLnN1YnN0aXR1dGUoe30pCisgIGVuZAorZW5kCisKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2ZU9mZnNldHMob2Zmc2V0
cywgc2l6ZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgaGFzIG9mZnNldCB2YWx1ZXMgaW5zdGVh
ZCBvZiBzeW1ib2xpYyAgICAgICAjCisjIG9mZnNldHMuICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNl
dHMsIHNpemVzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hp
bGQucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgfQorICBlbmQKK2VuZAorCitj
bGFzcyBTdHJ1Y3RPZmZzZXQKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQor
ICAgIGlmIG9mZnNldHNbc2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgb2Zm
c2V0c1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisK
K2NsYXNzIFNpemVvZgorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAg
aWYgc2l6ZXNbc2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgc2l6ZXNbc2Vs
Zl0pCisgICAgZWxzZQorICAgICAgcHV0cyAiQ291bGQgbm90IGZpbmQgI3tzZWxmLmluc3BlY3R9
IGluICN7c2l6ZXMua2V5cy5pbnNwZWN0fSIKKyAgICAgIHB1dHMgInNpemVzID0gI3tzaXplcy5p
bnNwZWN0fSIKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5mb2xkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IFJlc29sdmUgY29uc3RhbnQgcmVmZXJlbmNlcyBhbmQgY29tcHV0ZSBhcml0aG1ldGljIGV4cHJl
c3Npb25zLiAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNz
IE5vZGUKKyAgZGVmIGZvbGQKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAg
ICAgIGNoaWxkLmZvbGQKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMK
KyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQu
Zm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICBy
ZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5u
ZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgKyBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisK
K2NsYXNzIFN1YkltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQK
KyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5p
c19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVk
aWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgLSBAcmlnaHQu
dmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAg
ICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVy
biBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxl
c3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwg
QGxlZnQudmFsdWUgKiBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVk
aWF0ZQorICBkZWYgZm9sZAorICAgIEBjaGlsZCA9IEBjaGlsZC5mb2xkCisgICAgcmV0dXJuIHNl
bGYgdW5sZXNzIEBjaGlsZC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVP
cmlnaW4sIC1AY2hpbGQudmFsdWUpCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2ZUFmdGVyU2V0dGluZ3Mob2Zmc2V0cywgc2l6ZXMp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBDb21waWxl
IGFzc2VtYmx5IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisg
IGRlZiByZXNvbHZlKG9mZnNldHMsIHNpemVzKQorICAgIGRlbWFjcm9pZnkoe30pLnJlc29sdmVP
ZmZzZXRzKG9mZnNldHMsIHNpemVzKS5mb2xkCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcx
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitjbGFzcyBSZWdpc3Rl
cklECisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQw
IiwgImEwIiwgInIwIiwgInQxIiwgImExIiwgInIxIiwgInQyIiwgInQzIgorICAgICAgdHJ1ZQor
ICAgIHdoZW4gInQ0IiwgImNmciIKKyAgICAgIGZhbHNlCisgICAgZWxzZQorICAgICAgcmFpc2UK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIGNhc2UgbmFt
ZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVu
IDpieXRlCisgICAgICAgICIlYWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlYXgiCisg
ICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYXgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNl
CisgICAgICBlbmQKKyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgIGNhc2Uga2luZAor
ICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWRsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAg
ICAiJWR4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWR4IgorICAgICAgZWxzZQorICAg
ICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDIiCisgICAgICBjYXNlIGtpbmQKKyAg
ICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVjbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAg
IiVjeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVjeCIKKyAgICAgIGVsc2UKKyAgICAg
ICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQzIgorICAgICAgY2FzZSBraW5kCisgICAg
ICB3aGVuIDpieXRlCisgICAgICAgICIlYmwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIl
YngiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYngiCisgICAgICBlbHNlCisgICAgICAg
IHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0NCIKKyAgICAgIGNhc2Uga2luZAorICAgICAg
d2hlbiA6Ynl0ZQorICAgICAgICAiJXNpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVz
aSIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzaSIKKyAgICAgIGVsc2UKKyAgICAgICAg
cmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gImNmciIKKyAgICAgIGNhc2Uga2luZAorICAgICAg
d2hlbiA6Ynl0ZQorICAgICAgICAiJWRpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVk
aSIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkaSIKKyAgICAgIGVsc2UKKyAgICAgICAg
cmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInNwIgorICAgICAgY2FzZSBraW5kCisgICAgICB3
aGVuIDpieXRlCisgICAgICAgICIlc3BsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNw
IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZXNwIgorICAgICAgZWxzZQorICAgICAgICBy
YWlzZQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisg
IGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisg
ICAgcmFpc2UgdW5sZXNzIGtpbmQgPT0gOmRvdWJsZQorICAgIGNhc2UgbmFtZQorICAgIHdoZW4g
ImZ0MCIsICJmYTAiLCAiZnIiCisgICAgICAiJXhtbTAiCisgICAgd2hlbiAiZnQxIiwgImZhMSIK
KyAgICAgICIleG1tMSIKKyAgICB3aGVuICJmdDIiLCAiZmEyIgorICAgICAgIiV4bW0yIgorICAg
IHdoZW4gImZ0MyIsICJmYTMiCisgICAgICAiJXhtbTMiCisgICAgd2hlbiAiZnQ0IgorICAgICAg
IiV4bW00IgorICAgIHdoZW4gImZ0NSIKKyAgICAgICIleG1tNSIKKyAgICBlbHNlCisgICAgICBy
YWlzZQorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioj
e3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVm
IHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiJCN7dmFsdWV9IgorICBlbmQKKyAgZGVmIHg4NkNhbGxP
cGVyYW5kKGtpbmQpCisgICAgIiN7dmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNz
CisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4
ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6
aW50KX0pIgorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9w
ZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgZGVmIHN1cHBv
cnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2lu
ZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSwgI3tpbmRl
eC54ODZPcGVyYW5kKDppbnQpfSwgI3tzY2FsZX0pIgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9w
ZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2b3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2Ns
YXNzIEFic29sdXRlQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisg
IGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje2FkZHJlc3MudmFsdWV9
IgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7YWRkcmVzcy52
YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgIGRlZiB4ODZMYWJl
bAorICAgIHNhbml0aXplTGFiZWxOYW1lKG5hbWUpCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJh
bmQoa2luZCkKKyAgICB4ODZMYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVm
ZXJlbmNlCisgIGRlZiB4ODZMYWJlbAorICAgICJfX29hXyIrbmFtZVsxLi4tMV0KKyAgZW5kCisg
IGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgIHg4NkxhYmVsCisgIGVuZAorZW5kCisKK2Ns
YXNzIEluc3RydWN0aW9uCisgIGRlZiB4ODZPcGVyYW5kcygqa2luZHMpCisgICAgcmFpc2UgdW5s
ZXNzIGtpbmRzLnNpemUgPT0gb3BlcmFuZHMuc2l6ZQorICAgIHJlc3VsdCA9IFtdCisgICAga2lu
ZHMuc2l6ZS50aW1lcyB7CisgICAgICB8IGlkeCB8CisgICAgICByZXN1bHQgPDwgb3BlcmFuZHNb
aWR4XS54ODZPcGVyYW5kKGtpbmRzW2lkeF0pCisgICAgfQorICAgIHJlc3VsdC5qb2luKCIsICIp
CisgIGVuZAorCisgIGRlZiB4ODZTdWZmaXgoa2luZCkKKyAgICBjYXNlIGtpbmQKKyAgICB3aGVu
IDpieXRlCisgICAgICAiYiIKKyAgICB3aGVuIDpoYWxmCisgICAgICAidyIKKyAgICB3aGVuIDpp
bnQKKyAgICAgICJsIgorICAgIHdoZW4gOmRvdWJsZQorICAgICAgInNkIgorICAgIGVsc2UKKyAg
ICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wV2l0aE51bU9w
ZXJhbmRzKG9wY29kZSwga2luZCwgbnVtT3BlcmFuZHMpCisgICAgaWYgbnVtT3BlcmFuZHMgPT0g
MworICAgICAgaWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRz
ICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRz
WzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMV0gPT0gb3BlcmFu
ZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxz
ZQorICAgICAgICAkYXNtLnB1dHMgIlx0bW92I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisg
ICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtp
bmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVs
c2UKKyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5k
CisgIAorICBkZWYgaGFuZGxlWDg2T3Aob3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0
aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSkKKyAgZW5kCisgIAorICBk
ZWYgaGFuZGxlWDg2U2hpZnQob3Bjb2RlLCBraW5kKQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/
IEltbWVkaWF0ZSBvciBvcGVyYW5kc1swXSA9PSBSZWdpc3RlcklELmZvck5hbWUobmlsLCAidDIi
KQorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAg
ICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgJWVj
eCIKKyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gJWNsLCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoa2luZCl9IgorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4
NkRvdWJsZUJyYW5jaChicmFuY2hPcGNvZGUsIG1vZGUpCisgICAgY2FzZSBtb2RlCisgICAgd2hl
biA6bm9ybWFsCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAg
IHdoZW4gOnJldmVyc2UKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0i
CisgICAgZWxzZQorICAgICAgcmFpc2UgbW9kZS5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5w
dXRzICJcdGpuZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFu
ZGxlWDg2SW50Q29tcGFyZShvcGNvZGVTdWZmaXgsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0u
aXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1sx
XS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZm
aXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzaWYgb3BlcmFuZHNbMV0uaXNf
YT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1sxXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1swXS5p
c19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXgg
PT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJc
dGNtcCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRl
ZiBoYW5kbGVYODZJbnRCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nklu
dENvbXBhcmUoYnJhbmNoT3Bjb2RlWzEuLi0xXSwga2luZCkKKyAgICAkYXNtLnB1dHMgIlx0I3ti
cmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBo
YW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kKQorICAgIGlmIG9wZXJhbmQuc3VwcG9ydHM4
Qml0T25YODYKKyAgICAgICRhc20ucHV0cyAiXHQje3NldE9wY29kZX0gI3tvcGVyYW5kLng4Nk9w
ZXJhbmQoOmJ5dGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgI3tvcGVyYW5kLng4Nk9w
ZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAg
ICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgi
CisgICAgICAkYXNtLnB1dHMgIlx0I3tzZXRPcGNvZGV9ICVhbCIKKyAgICAgICRhc20ucHV0cyAi
XHRtb3Z6YmwgJWFsLCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZC54
ODZPcGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxl
WDg2SW50Q29tcGFyZVNldChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFy
ZShzZXRPcGNvZGVbMy4uLTFdLCBraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9w
ZXJhbmRzWzJdKQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgdmFs
dWUgPSBvcGVyYW5kc1swXQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gMgorICAg
ICAgbWFzayA9IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLTEpCisgICAgd2hlbiAzCisgICAg
ICBtYXNrID0gb3BlcmFuZHNbMV0KKyAgICBlbHNlCisgICAgICByYWlzZSAiRXhwZWN0ZWQgMiBv
ciAzIG9wZXJhbmRzLCBidXQgZ290ICN7b3BlcmFuZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3Ry
aW5nfSIKKyAgICBlbmQKKyAgICAKKyAgICBpZiBtYXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFz
ay52YWx1ZSA9PSAtMQorICAgICAgaWYgdmFsdWUuaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAk
YXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQoa2lu
ZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNt
LnB1dHMgIlx0Y21wI3t4ODZTdWZmaXgoa2luZCl9ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQoa2lu
ZCl9IgorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1
ZmZpeChraW5kKX0gI3ttYXNrLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQo
a2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZCcmFuY2hUZXN0KGJy
YW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgJGFzbS5wdXRz
ICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzLmxhc3QueDg2TGFiZWx9IgorICBlbmQKKyAg
CisgIGRlZiBoYW5kbGVYODZTZXRUZXN0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZU
ZXN0KGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHMubGFzdCkKKyAg
ZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3BCcmFuY2gob3Bjb2RlLCBicmFuY2hPcGNvZGUsIGtp
bmQpCisgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5k
cy5zaXplIC0gMSkKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAgIGp1
bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9IG9w
ZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5kCisg
ICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQueDg2TGFiZWx9Igor
ICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTdWJCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQor
ICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gNCBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0K
KyAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9
LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIGhhbmRs
ZVg4Nk9wV2l0aE51bU9wZXJhbmRzKCJzdWIje3g4NlN1ZmZpeChraW5kKX0iLCBraW5kLCBvcGVy
YW5kcy5zaXplIC0gMSkKKyAgICBlbmQKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVu
IDQKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVt
cFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0
CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQu
eDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBsb3dlclg4NgorICAgICRhc20uY29tbWVudCBj
b2RlT3JpZ2luU3RyaW5nCisgICAgY2FzZSBvcGNvZGUKKyAgICB3aGVuICJhZGRpIiwgImFkZHAi
CisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVk
aWF0ZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAor
ICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAg
ICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCisgICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFd
ID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRzICJcdGxlYWwg
I3tvcGVyYW5kc1swXS52YWx1ZX0oI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7
b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYg
b3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisgICAg
ICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJh
aXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0
cyAiXHRsZWFsICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICAgIGVsc2UKKyAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5k
c1swXQorICAgICAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7eDg2T3BlcmFuZHMoOmludCwgOmlu
dCl9IgorICAgICAgICBlbmQKKyAgICAgIGVuZAorICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAg
ICAgIGhhbmRsZVg4Nk9wKCJhbmRsIiwgOmludCkKKyAgICB3aGVuICJsc2hpZnRpIgorICAgICAg
aGFuZGxlWDg2U2hpZnQoInNhbGwiLCA6aW50KQorICAgIHdoZW4gIm11bGkiCisgICAgICBpZiBv
cGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAg
ICAkYXNtLnB1dHMgIlx0aW11bGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50LCA6aW50KX0iCisg
ICAgICBlbHNlCisgICAgICAgIGhhbmRsZVg4Nk9wKCJpbXVsbCIsIDppbnQpCisgICAgICBlbmQK
KyAgICB3aGVuICJuZWdpIgorICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3t4ODZPcGVyYW5kcyg6
aW50KX0iCisgICAgd2hlbiAibm90aSIKKyAgICAgICRhc20ucHV0cyAiXHRub3RsICN7eDg2T3Bl
cmFuZHMoOmludCl9IgorICAgIHdoZW4gIm9yaSIsICJvcnAiCisgICAgICBoYW5kbGVYODZPcCgi
b3JsIiwgOmludCkKKyAgICB3aGVuICJyc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNh
cmwiLCA6aW50KQorICAgIHdoZW4gInVyc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNo
cmwiLCA6aW50KQorICAgIHdoZW4gInN1YmkiLCAic3VicCIKKyAgICAgIGlmIG9wZXJhbmRzLnNp
emUgPT0gMyBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRz
ICJcdG5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgJGFzbS5w
dXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sy
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgaGFuZGxlWDg2T3AoInN1
YmwiLCA6aW50KQorICAgICAgZW5kCisgICAgd2hlbiAieG9yaSIsICJ4b3JwIgorICAgICAgaGFu
ZGxlWDg2T3AoInhvcmwiLCA6aW50KQorICAgIHdoZW4gImxvYWRpIiwgInN0b3JlaSIsICJsb2Fk
cCIsICJzdG9yZXAiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje3g4Nk9wZXJhbmRzKDppbnQs
IDppbnQpfSIKKyAgICB3aGVuICJsb2FkYiIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgd2hlbiAibG9hZGgiCisgICAgICAkYXNtLnB1dHMgIlx0bW92endsICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZiICN7eDg2T3Bl
cmFuZHMoOmJ5dGUsIDpieXRlKX0iCisgICAgd2hlbiAibG9hZGQiLCAibW92ZWQiLCAic3RvcmVk
IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJs
ZSl9IgorICAgIHdoZW4gImFkZGQiCisgICAgICAkYXNtLnB1dHMgIlx0YWRkc2QgI3t4ODZPcGVy
YW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAiZGl2ZCIKKyAgICAgICRhc20ucHV0
cyAiXHRkaXZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJz
dWJkIgorICAgICAgJGFzbS5wdXRzICJcdHN1YnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRv
dWJsZSl9IgorICAgIHdoZW4gIm11bGQiCisgICAgICAkYXNtLnB1dHMgIlx0bXVsc2QgI3t4ODZP
cGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3FydGQiCisgICAgICAkYXNt
LnB1dHMgIlx0c3FydHNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiY2kyZCIKKyAgICAgICRh
c20ucHV0cyAiXHRjdnRzaTJzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImJkZXEiCisgICAgICBp
c1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlz
ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7TGFiZWxSZWZlcmVuY2Uu
bmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMg
Ilx0amUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgb3BlcmFuZHNbMl0pLng4Nkxh
YmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkbmVxIgor
ICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqbmUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJk
Z3QiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphIiwgOm5vcm1hbCkKKyAgICB3aGVu
ICJiZGd0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIsIDpub3JtYWwpCisg
ICAgd2hlbiAiYmRsdCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6cmV2ZXJz
ZSkKKyAgICB3aGVuICJiZGx0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIs
IDpyZXZlcnNlKQorICAgIHdoZW4gImJkZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5j
aCgiamUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbmVxdW4iCisgICAgICBpc1Vub3JkZXJlZCA9
IExvY2FsTGFiZWwudW5pcXVlCisgICAgICBpc0VxdWFsID0gTG9jYWxMYWJlbC51bmlxdWUKKyAg
ICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMg
Ilx0anAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4Nkxh
YmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3Jp
Z2luLCBpc0VxdWFsKS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikK
KyAgICAgICRhc20ucHV0cyAiXHRqbXAgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICBp
c0VxdWFsLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkZ3R1biIKKyAgICAgIGhhbmRsZVg4NkRv
dWJsZUJyYW5jaCgiamIiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAgIGhh
bmRsZVg4NkRvdWJsZUJyYW5jaCgiamJlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdHVuIgor
ICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRs
dGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3JtYWwpCisgICAg
d2hlbiAiYnRkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgICAkYXNtLnB1dHMgIlx0Y21wbCAkMHg4MDAwMDAwMCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9
IgorICAgIHdoZW4gInRkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgd2hlbiAiYmNkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0
cyAiXHRqZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnRz
aTJzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20u
cHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03
IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAg
JGFzbS5wdXRzICJcdGpuZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJtb3Zk
eiIKKyAgICAgICRhc20ucHV0cyAiXHR4b3JwZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gInBv
cCIKKyAgICAgICRhc20ucHV0cyAiXHRwb3AgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQp
fSIKKyAgICB3aGVuICJwdXNoIgorICAgICAgJGFzbS5wdXRzICJcdHB1c2ggI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgor
ICAgICAgaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdIGFuZCBvcGVyYW5k
c1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHR4b3JsICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgICBlbHNpZiBvcGVyYW5kc1swXSAhPSBvcGVyYW5kc1sxXQorICAgICAgICAkYXNtLnB1
dHMgIlx0bW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgIGVuZAorICAgIHdo
ZW4gIm5vcCIKKyAgICAgICRhc20ucHV0cyAiXHRub3AiCisgICAgd2hlbiAiYmllcSIsICJicGVx
IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDppbnQpCisgICAgd2hlbiAiYmluZXEi
LCAiYnBuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDppbnQpCisgICAgd2hl
biAiYmlhIiwgImJwYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6aW50KQorICAg
IHdoZW4gImJpYWVxIiwgImJwYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6
aW50KQorICAgIHdoZW4gImJpYiIsICJicGIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpi
IiwgOmludCkKKyAgICB3aGVuICJiaWJlcSIsICJicGJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamJlIiwgOmludCkKKyAgICB3aGVuICJiaWd0IiwgImJwZ3QiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImpnIiwgOmludCkKKyAgICB3aGVuICJiaWd0ZXEiLCAiYnBndGVxIgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6aW50KQorICAgIHdoZW4gImJpbHQiLCAiYnBs
dCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6aW50KQorICAgIHdoZW4gImJpbHRl
cSIsICJicGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsZSIsIDppbnQpCisgICAg
d2hlbiAiYmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6Ynl0ZSkKKyAgICB3
aGVuICJiYm5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmJ5dGUpCisgICAg
d2hlbiAiYmJhIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDpieXRlKQorICAgIHdo
ZW4gImJiYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6Ynl0ZSkKKyAgICB3
aGVuICJiYmIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmJ5dGUpCisgICAgd2hl
biAiYmJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRlKQorICAgIHdo
ZW4gImJiZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmJ5dGUpCisgICAgd2hl
biAiYmJndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6Ynl0ZSkKKyAgICB3
aGVuICJiYmx0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDpieXRlKQorICAgIHdo
ZW4gImJibHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6Ynl0ZSkKKyAg
ICB3aGVuICJidGlvIiwgImJ0cG8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpp
bnQpCisgICAgd2hlbiAiYnRpcyIsICJidHBzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgi
anMiLCA6aW50KQorICAgIHdoZW4gImJ0aXoiLCAiYnRweiIKKyAgICAgIGhhbmRsZVg4NkJyYW5j
aFRlc3QoImp6IiwgOmludCkKKyAgICB3aGVuICJidGlueiIsICJidHBueiIKKyAgICAgIGhhbmRs
ZVg4NkJyYW5jaFRlc3QoImpueiIsIDppbnQpCisgICAgd2hlbiAiYnRibyIKKyAgICAgIGhhbmRs
ZVg4NkJyYW5jaFRlc3QoImpvIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRicyIKKyAgICAgIGhhbmRs
ZVg4NkJyYW5jaFRlc3QoImpzIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRieiIKKyAgICAgIGhhbmRs
ZVg4NkJyYW5jaFRlc3QoImp6IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRibnoiCisgICAgICBoYW5k
bGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJqbXAiCisgICAgICAkYXNt
LnB1dHMgIlx0am1wICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdo
ZW4gImJhZGRpbyIsICJiYWRkcG8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJq
byIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlzIiwgImJhZGRwcyIKKyAgICAgIGhhbmRsZVg4Nk9w
QnJhbmNoKCJhZGRsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJiYWRkaXoiLCAiYmFkZHB6Igor
ICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJh
ZGRpbnoiLCAiYmFkZHBueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpueiIs
IDppbnQpCisgICAgd2hlbiAiYnN1YmlvIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbyIs
IDppbnQpCisgICAgd2hlbiAiYnN1YmlzIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqcyIs
IDppbnQpCisgICAgd2hlbiAiYnN1Yml6IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqeiIs
IDppbnQpCisgICAgd2hlbiAiYnN1YmlueiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam56
IiwgOmludCkKKyAgICB3aGVuICJibXVsaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11
bGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJtdWxpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJh
bmNoKCJpbXVsbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm11bGl6IgorICAgICAgaGFuZGxl
WDg2T3BCcmFuY2goImltdWxsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJibXVsaW56IgorICAg
ICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYm9y
aW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpvIiwgOmludCkKKyAgICB3aGVu
ICJib3JpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianMiLCA6aW50KQorICAg
IHdoZW4gImJvcml6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqeiIsIDppbnQp
CisgICAgd2hlbiAiYm9yaW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqbnoi
LCA6aW50KQorICAgIHdoZW4gImJyZWFrIgorICAgICAgJGFzbS5wdXRzICJcdGludCAkMyIKKyAg
ICB3aGVuICJjYWxsIgorICAgICAgJGFzbS5wdXRzICJcdGNhbGwgI3tvcGVyYW5kc1swXS54ODZD
YWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicmV0IgorICAgICAgJGFzbS5wdXRzICJcdHJl
dCIKKyAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0
KCJzZXRlIiwgOmludCkKKyAgICB3aGVuICJjaW5lcSIsICJjcG5lcSIKKyAgICAgIGhhbmRsZVg4
NkludENvbXBhcmVTZXQoInNldG5lIiwgOmludCkKKyAgICB3aGVuICJjaWEiLCAiY3BhIgorICAg
ICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YSIsIDppbnQpCisgICAgd2hlbiAiY2lhZXEi
LCAiY3BhZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRhZSIsIDppbnQpCisg
ICAgd2hlbiAiY2liIiwgImNwYiIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGIi
LCA6aW50KQorICAgIHdoZW4gImNpYmVxIiwgImNwYmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29t
cGFyZVNldCgic2V0YmUiLCA6aW50KQorICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgIGhh
bmRsZVg4NkludENvbXBhcmVTZXQoInNldGciLCA6aW50KQorICAgIHdoZW4gImNpZ3RlcSIsICJj
cGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnZSIsIDppbnQpCisgICAg
d2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bCIs
IDppbnQpCisgICAgd2hlbiAiY2lsdGVxIiwgImNwbHRlcSIKKyAgICAgIGhhbmRsZVg4NkludENv
bXBhcmVTZXQoInNldGxlIiwgOmludCkKKyAgICB3aGVuICJ0aW8iCisgICAgICBoYW5kbGVYODZT
ZXRUZXN0KCJzZXRvIiwgOmludCkKKyAgICB3aGVuICJ0aXMiCisgICAgICBoYW5kbGVYODZTZXRU
ZXN0KCJzZXRzIiwgOmludCkKKyAgICB3aGVuICJ0aXoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0
KCJzZXR6IiwgOmludCkKKyAgICB3aGVuICJ0aW56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgi
c2V0bnoiLCA6aW50KQorICAgIHdoZW4gInRibyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNl
dG8iLCA6Ynl0ZSkKKyAgICB3aGVuICJ0YnMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRz
IiwgOmJ5dGUpCisgICAgd2hlbiAidGJ6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIs
IDpieXRlKQorICAgIHdoZW4gInRibnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIs
IDpieXRlKQorICAgIHdoZW4gInBlZWsiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJh
bmRzWzBdLnZhbHVlICogNH0oJWVzcCksICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgd2hlbiAicG9rZSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0udmFsdWUgKiA0fSglZXNwKSIKKyAgICB3
aGVuICJjZHFpIgorICAgICAgJGFzbS5wdXRzICJcdGNkcSIKKyAgICB3aGVuICJpZGl2aSIKKyAg
ICAgICRhc20ucHV0cyAiXHRpZGl2bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgIHdoZW4gImZpaTJkIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAg
ICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4
bW03IgorICAgICAgJGFzbS5wdXRzICJcdHBzbGxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1
dHMgIlx0cG9yICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAg
IHdoZW4gImZkMmlpIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
ICRhc20ucHV0cyAiXHRtb3ZzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAl
eG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwc3JscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5w
dXRzICJcdG1vdnNkICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAg
IGVsc2UKKyAgICAgIHJhaXNlICJCYWQgb3Bjb2RlOiAje29wY29kZX0iCisgICAgZW5kCisgIGVu
ZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFs
aXphdGlvbktpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKyNkZWZpbmUgQ29kZVNwZWNp
YWxpemF0aW9uS2luZF9oCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIENvZGVTcGVjaWFsaXph
dGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkocmV2
aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQ29tbW9u
U2xvd1BhdGhzX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvZGVTcGVj
aWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVk
ZSAiSlNBcnJheS5oIgogCkBAIC00MSw2ICs0MiwzOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFt
ZXNwYWNlIENvbW1vblNsb3dQYXRocyB7CiAKK0FMV0FZU19JTkxJTkUgRXhlY1N0YXRlKiBhcml0
eUNoZWNrRm9yKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBh
c0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVu
Y3Rpb24oKSk7CisgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1
dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzID0gZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKKwor
ICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5h
cmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgorICAgIGlmICghcmVn
aXN0ZXJGaWxlLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdD
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CisKKyAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAt
LSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJn
dW1lbnRzIHdpdGggdW5kZWZpbmVkLgorICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CisgICAgUmVnaXN0
ZXIqIHNyYyA9IGV4ZWMtPnJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyKiBkc3QgPSBleGVjLT5y
ZWdpc3RlcnMoKSArIGRlbHRhOworCisgICAgaW50IGk7CisgICAgaW50IGVuZCA9IC1FeGVjU3Rh
dGU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgZm9yIChpID0g
LTE7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKKworICAgIGVuZCAt
PSBkZWx0YTsKKyAgICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9IGpz
VW5kZWZpbmVkKCk7CisKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBFeGVjU3RhdGU6OmNyZWF0
ZShkc3QpOworICAgIEFTU0VSVCgodm9pZCopbmV3RXhlYyA8PSByZWdpc3RlckZpbGUtPmVuZCgp
KTsKKyAgICByZXR1cm4gbmV3RXhlYzsKK30KKwogQUxXQVlTX0lOTElORSBib29sIG9wSW5zdGFu
Y2VPZlNsb3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGJhc2VWYWws
IEpTVmFsdWUgcHJvdG8pCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0NlbGwoKSB8fCAhYmFzZVZh
bC5pc0NlbGwoKSB8fCAhcHJvdG8uaXNDZWxsKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCisjaW5jbHVkZSAiRXhlY3V0aW9u
SGFybmVzcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVERyaXZlci5oIgogI2lu
Y2x1ZGUgIlBhcnNlci5oIgpAQCAtODQsNyArODUsNyBAQCBJbnRyaW5zaWMgTmF0aXZlRXhlY3V0
YWJsZTo6aW50cmluc2ljKCkgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIHZvaWQgamV0
dGlzb25Db2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8VD4mIGNvZGVC
bG9jaykKIHsKLSAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJs
b2NrLT5nZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgp
KTsKICAgICBPd25QdHI8VD4gY29kZUJsb2NrVG9KZXR0aXNvbiA9IGNvZGVCbG9jay5yZWxlYXNl
KCk7CiAgICAgY29kZUJsb2NrID0gc3RhdGljX3BvaW50ZXJfY2FzdDxUPihjb2RlQmxvY2tUb0pl
dHRpc29uLT5yZWxlYXNlQWx0ZXJuYXRpdmUoKSk7CkBAIC0xNjcsOSArMTY4LDMwIEBAIEpTT2Jq
ZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXoKICAgICByZXR1cm4gZXJyb3I7CiB9
CiAKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZXhlYywgbV9ldmFsQ29k
ZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCitpbmxpbmUgY29uc3QgY2hhciog
c2FtcGxpbmdEZXNjcmlwdGlvbihKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisgICAgc3dp
dGNoIChqaXRUeXBlKSB7CisgICAgY2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rOgorICAg
ICAgICByZXR1cm4gIkludGVycHJldGVyIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2Ug
SklUQ29kZTo6QmFzZWxpbmVKSVQ6CisgICAgICAgIHJldHVybiAiQmFzZWxpbmUgQ29tcGlsYXRp
b24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6CisgICAgICAgIHJldHVybiAi
REZHIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIEpTT2JqZWN0KiBF
dmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAg
U2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGlu
ZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24g
KFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVz
Y3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9Q
QVJBTShqaXRUeXBlKTsKQEAgLTIxMCw3ICsyMzIsNyBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFi
bGU6OmNvbXBpbGVJbnRlcm5hCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWpp
dENvbXBpbGVJZkFwcHJvcHJpYXRlKGV4ZWMsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9y
Q2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKGV4ZWMsIG1fZXZh
bENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAw
OwogI2VuZGlmCiAKQEAgLTI5NSw5ICszMTcsMTUgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRh
YmxlOjpjb21waWxlT3B0aQogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBQcm9ncmFtRXhl
Y3V0YWJsZTo6aml0Q29tcGlsZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYm9vbCByZXN1bHQg
PSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShleGVjLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0
Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29t
cGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5O
b2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBD
b21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNh
bXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkp
OwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAg
LTMzNiw3ICszNjQsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRl
CiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJp
YXRlKGV4ZWMsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkp
CisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKGV4ZWMsIG1fcHJvZ3JhbUNvZGVCbG9jaywg
bV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAK
QEAgLTQxMiw3ICs0NDAsNyBAQCBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxl
OjpiCiAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgcmVzdWx0ID0g
c3RhdGljX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihyZXN1bHQtPmFsdGVybmF0aXZlKCkpOwog
ICAgIEFTU0VSVChyZXN1bHQpOwotICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBK
SVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2Rl
KHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDM4
LDYgKzQ2NiwxOCBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlT3B0CiAg
ICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGls
ZUZvckNhbGwoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGls
ZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29k
ZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwg
SklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0KTsKK30KKwordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1
Y3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0
aW9uSWZBcHByb3ByaWF0ZShleGVjLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2Rl
Rm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1i
b2xUYWJsZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0KTsKK30KKwogRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y29kZUJsb2NrV2l0aEJ5dGVjb2RlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
IHsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tG
b3Ioa2luZCk7CkBAIC00ODIsNyArNTIyLDcgQEAgUGFzc093blB0cjxGdW5jdGlvbkNvZGVCbG9j
az4gRnVuY3Rpb25FeAogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9y
Q2FsbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5O
b2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBD
b21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNh
bXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkp
OwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTUw
NCw3ICs1NDQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAg
ICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC0+c2hhcmVkU3ltYm9sVGFibGUo
KTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJv
cHJpYXRlKGV4ZWMsIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRD
b2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBp
ZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLCBtX2NvZGVCbG9ja0ZvckNhbGws
IG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1i
b2xUYWJsZSwgaml0VHlwZSwgQ29kZUZvckNhbGwpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRp
ZgogCkBAIC01MjQsNyArNTY0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29t
cGlsZUZvcgogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3Ry
dWN0SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5v
ZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1w
bGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENv
bXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7
CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAt
NTQ2LDcgKzU4Niw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IK
ICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnNoYXJlZFN5bWJv
bFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9u
SWZBcHByb3ByaWF0ZShleGVjLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9y
Q29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xU
YWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhl
YywgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRD
b2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENv
ZGVGb3JDb25zdHJ1Y3QpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxMDQ3ODcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRXhlY3V0YWJsZV9oCiAKICNpbmNsdWRl
ICJDYWxsRGF0YS5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJO
b2Rlcy5oIgpAQCAtMzksMTIgKzQwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIERl
YnVnZ2VyOwogICAgIGNsYXNzIEV2YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgRnVuY3Rpb25Db2Rl
QmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dy
YW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKICAgICBzdHJ1Y3QgRXhj
ZXB0aW9uSW5mbzsKICAgICAKLSAgICBlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2Rl
Rm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogICAgIGVudW0gQ29tcGlsYXRpb25LaW5kIHsg
Rmlyc3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CiAKICAgICBpbmxpbmUg
Ym9vbCBpc0NhbGwoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMzE5LDYgKzMyMCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0
YWJsZSBCYXNlOwogCkBAIC0zMzgsNiArMzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpT
R2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoRXhlY1N0YXRlKik7CiAjZW5k
aWYKIAogICAgICAgICBFdmFsQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC0zODQs
NiArMzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIFByb2dyYW1F
eGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBT
Y3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTQxMSw2ICs0MTUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGlt
aXplZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShFeGVjU3Rh
dGUqKTsKICNlbmRpZgogCiAgICAgICAgIFByb2dyYW1Db2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVj
b2RlKCkKQEAgLTQ1Myw2ICs0NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1
bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwog
CkBAIC01MDgsNiArNTE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJM
RShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ2FsbChKU0dsb2Jh
bERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ2FsbChFeGVjU3RhdGUqKTsKICNl
bmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDYWxsKCkgY29uc3QKQEAgLTUzNSw2
ICs1NDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAg
ICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRh
Jik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNvbnN0cnVjdChFeGVjU3RhdGUqKTsKICNl
bmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3QoKSBjb25zdApAQCAt
NTgyLDYgKzU5MCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBqZXR0aXNv
bk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvcihFeGVjU3RhdGUq
IGV4ZWMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgICAgICBqaXRDb21waWxl
Rm9yQ2FsbChleGVjKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgICAg
IGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoZXhlYyk7CisgICAgICAgIH0KICNlbmRpZgogICAgICAg
ICAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9u
SGFybmVzcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRXhlY3V0aW9u
SGFybmVzc19oCisjZGVmaW5lIEV4ZWN1dGlvbkhhcm5lc3NfaAorCisjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiSklURHJpdmVyLmgiCisj
aW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KK2lubGluZSBib29sIHByZXBhcmVGb3JFeGVjdXRp
b24oRXhlY1N0YXRlKiBleGVjLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklU
Q29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworI2lmIEVOQUJMRShM
TElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAg
ICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExM
SW50OjpnZXRFbnRyeXBvaW50KGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLmdldCgpLCBq
aXRDb2RlKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cigpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmIC8v
IEVOQUJMRShMTElOVCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZXhlYywg
Y29kZUJsb2NrLCBqaXRDb2RlLCBqaXRUeXBlKTsKK30KKworaW5saW5lIGJvb2wgcHJlcGFyZUZ1
bmN0aW9uRm9yRXhlY3V0aW9uKEV4ZWNTdGF0ZSogZXhlYywgT3duUHRyPEZ1bmN0aW9uQ29kZUJs
b2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIm
IGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwg
SklUQ29kZTo6SklUVHlwZSBqaXRUeXBlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7
CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRU
eXBlKSkgeworICAgICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRlcnByZXRl
ci4KKyAgICAgICAgTExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludChleGVjLT5nbG9iYWxEYXRh
KCksIGtpbmQsIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIGNvZGVC
bG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShraW5kKTsKKyNl
bmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVGdW5jdGlvbklmQXBw
cm9wcmlhdGUoZXhlYywgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ss
IHN5bWJvbFRhYmxlLCBqaXRUeXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8gRXhlY3V0aW9uSGFybmVzc19oCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEwNDc4NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5
OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHN0cnVjdCBTcGFyc2VB
cnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmllcjxVbmtub3duPiB7CiAgICAgICAgIHR5cGVk
ZWYgV3JpdGVCYXJyaWVyPFVua25vd24+IEJhc2U7CkBAIC0xMjQsNiArMTI1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDkgKzM2LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0
OwotICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFy
cmF5OworICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsK
ICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywKQEAgLTE2NCw2ICsxNjUsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFz
c0luZm87CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAg
IH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShy
ZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgSlNBY3RpdmF0aW9uOwogICAg
IGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
ICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAg
bmFtZXNwYWNlIERGRyB7CkBAIC0xNDAsNiArMTQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAog
ICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CisgICAgICAgIAogICAgICAgICBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7
CiAKICAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQxLDYgKzE0MSw4IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFU
eXAKICAgICAsIGtleXdvcmRzKGFkb3B0UHRyKG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBp
bnRlcnByZXRlcigwKQogICAgICwgaGVhcCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlD
bGFzc0luZm8oJkpTQXJyYXk6OnNfaW5mbykKKyAgICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8o
JkpTRmluYWxPYmplY3Q6OnNfaW5mbykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVP
Zkxhc3RTY3JhdGNoQnVmZmVyKDApCiAjZW5kaWYKQEAgLTIxOCw3ICsyMjAsNyBAQCBKU0dsb2Jh
bERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0
cihuZXcgSklUVGh1bmtzKHRoaXMpKTsKICNlbmRpZgogCi0gICAgaW50ZXJwcmV0ZXItPmluaXRp
YWxpemUodGhpcy0+Y2FuVXNlSklUKCkpOworICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKCZs
bGludERhdGEsIHRoaXMtPmNhblVzZUpJVCgpKTsKIAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9D
b2xsZWN0KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNiBAQAog
I2RlZmluZSBKU0dsb2JhbERhdGFfaAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxG
dW5jdGlvbi5oIgotI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5j
ZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhl
YXAuaCIKLSNpbmNsdWRlICJTdHJvbmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNs
dWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludERh
dGEuaCIKICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5n
cy5oIgorI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNs
dWRlICJUaW1lb3V0Q2hlY2tlci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYg
KzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAg
Y2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFy
c2VyQXJlbmE7CiAgICAgY2xhc3MgUmVnRXhwQ2FjaGU7CkBAIC0yNDgsNiArMjUwLDEyIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNl
cHRpb247CisKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZv
OworICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87
CisKKyAgICAgICAgTExJbnQ6OkRhdGEgbGxpbnREYXRhOworCiAjaWYgRU5BQkxFKEpJVCkKICAg
ICAgICAgUmV0dXJuQWRkcmVzc1B0ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1
ZSBob3N0Q2FsbFJldHVyblZhbHVlOwpAQCAtMzUyLDYgKzM2MCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogI3VuZGVmIHJlZ2lzdGVyVHlwZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAg
ICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXpl
KTsKICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwo
KTsKICAgICAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDQ3ODcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1
bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9i
YWxDb2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAg
ICBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKQEAgLTMzNSw2ICszMzYsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyos
IGludCBjb3VudCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVzZXQg
aW50byBpbml0LgogICAgICAgICB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CiAgICAg
ICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFz
cyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgY2xhc3MgUHJv
cGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwpAQCAtMjU5LDYg
KzI2MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7CiAKICAgICBwcml2
YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAg
ICAKICAgICAgICAgLy8gTm9ib2R5IHNob3VsZCBldmVyIGFzayBhbnkgb2YgdGhlc2UgcXVlc3Rp
b25zIG9uIHNvbWV0aGluZyBhbHJlYWR5IGtub3duIHRvIGJlIGEgSlNPYmplY3QuCiAgICAgICAg
IHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXI7CiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6
aXNHZXR0ZXJTZXR0ZXI7CkBAIC0zNzAsNiArMzczLDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmlu
YWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKyAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0IEpTRmluYWxPYmplY3QoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgICAgIDogSlNP
YmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElkZW50aWZpZXI7CiAg
ICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAg
ICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciA6IHB1YmxpYyBKU0NlbGwgewogICAgICAg
ICBmcmllbmQgY2xhc3MgSklUOwpAQCAtOTYsNiArOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNp
emVfdCBudW1DYWNoZWFibGVTbG90KTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1N0cmluZzsKKyAgICBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsK
ICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsKQEAgLTI0MSw2ICsyNDIs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgcmVzb2x2
ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2Fz
ZTgoTENoYXIqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFy
KikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5m
by5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNl
cyBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJs
ZS4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8
PCAxOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEg
PDwgMjsKQEAgLTg3LDYgKzg5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgICAgIAogICAgICAgICBib29sIGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3Qg
eyBBU1NFUlQoZmxhZyA8PSAoMSA8PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAg
ICAgICBib29sIGlzU2V0T25GbGFnczIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxh
ZyA+PSAoMSA8PCA4KSk7IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJ
KHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFy
aWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEyIEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IFJlZ2lzdGVyOwogCiAgICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRl
ZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDEwIEBA
IHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGkKIAogdW5zaWduZWQgbWF4
aW11bUlubGluaW5nRGVwdGg7CiAKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklU
QWZ0ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0
aW1lU29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogaW50
MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkBAIC0x
MzYsNiArMTQwLDEwIEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIAogICAgIFNFVCht
YXhpbXVtSW5saW5pbmdEZXB0aCwgNSk7CiAKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9ySklUQWZ0ZXJXYXJtVXAsICAgICAtMTAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yRG9udEpJVEFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
aW4oKSk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb24sICAgICAgICAg
ICAgLTEwMCk7CisKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRl
cldhcm1VcCwgICAgIC0xMDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVBZnRlckxvbmdXYXJtVXAsIC01MDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1pbigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJ
KHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTAgQEAgZXh0ZXJuIHVuc2lnbmVkIG1h
eGltdW1GdW5jdGlvbkZvckNvbnN0cgogCiBleHRlcm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5n
RGVwdGg7IC8vIERlcHRoIG9mIGlubGluZSBzdGFjaywgc28gMSA9IG5vIGlubGluaW5nLCAyID0g
b25lIGxldmVsLCBldGMuCiAKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckpJVEFmdGVyV2FybVVwOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
RG9udEpJVEFueXRpbWVTb29uOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9ySklUU29vbjsKKwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVBZnRlcldhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiAxMDQ3ODcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAg
IGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAg
Y2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCkBAIC05MSw2ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw2ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3Bl
cnR5TmFtZUFycmF5RGF0YTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKQEAgLTE5Niw2ICsx
OTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29u
c3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlw
ZUluZm8mLCBjb25zdCBDbGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYpOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWlu
LmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
U3RydWN0dXJlOwogCiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlNDZWxsIHsK
QEAgLTc0LDYgKzc1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZh
dGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAg
IAogICAgICAgICBTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAg
ICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3duQXJyYXlQdHI8
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEwNDc4NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTE2LDYgKzkxNiwxMiBAQAog
I2RlZmluZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCisvKiBPbiBzb21lIG9mIHRoZSBwbGF0Zm9y
bXMgd2hlcmUgd2UgaGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNvIGhhdmUgdGhlIAorICAgbG93
LWxldmVsIGludGVycHJldGVyLiAqLworI2lmIEVOQUJMRShKSVQpICYmIFBMQVRGT1JNKE1BQykg
JiYgVVNFKEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyNlbmRpZgorCiAj
aWYgIWRlZmluZWQoRU5BQkxFX0RGR19KSVQpICYmIEVOQUJMRShKSVQpCiAvKiBFbmFibGUgdGhl
IERGRyBKSVQgb24gWDg2IGFuZCBYODZfNjQuICBPbmx5IHRlc3RlZCBvbiBNYWMgYW5kIEdOVS9M
aW51eC4gKi8KICNpZiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpICYmIChQTEFURk9STShNQUMp
IHx8IE9TKExJTlVYKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaAkocmV2aXNpb24gMTA0Nzg3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpCiAvLyBMYW5kaW5nIHRoZSBmaWxl
IG1vdmVzIGluIG9uZSBwYXRjaCwgd2lsbCBmb2xsb3cgb24gd2l0aCBwYXRjaGVzIHRvIGNoYW5n
ZSB0aGUgbmFtZXNwYWNlcy4KIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IElkZW50aWZpZXJDU3Ry
aW5nVHJhbnNsYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBzdHJ1Y3QgSWRlbnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yOwogc3RydWN0
IElkZW50aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5zbGF0b3I7CiB9CkBAIC03MCw3ICs3MSw4IEBA
IGNsYXNzIFN0cmluZ0ltcGwgewogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kVVRGOENo
YXJhY3RlcnNUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZlclRy
YW5zbGF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7Ci0KKyAgICBmcmll
bmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiBwcml2YXRlOgogICAg
IGVudW0gQnVmZmVyT3duZXJzaGlwIHsKICAgICAgICAgQnVmZmVySW50ZXJuYWwsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122371</attachid>
            <date>2012-01-12 22:55:11 -0800</date>
            <delta_ts>2012-01-16 18:02:26 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_16.diff</filename>
            <type>text/plain</type>
            <size>395401</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyMSBA
QAorMjAxMi0wMS0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV09SSyBJTiBQUk9HUkVTUy4gIEl0IGNhbiBydW4gc2ltcGxlIHByb2dyYW1zIGJ1
dCBvdGhlcndpc2Ugc3RpbGwgbmVlZHMKKyAgICAgICAgc29tZSBsb3ZlLgorICAgICAgICAKKyAg
ICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBjYWxs
aW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExMSW50
LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAgd2ls
bCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIgdXAg
dG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4KKyAg
ICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9mIG91
ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMgY29t
cGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gKKyAg
ICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1cmlu
Zy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVjdCBh
Y2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2ljYWxs
eSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAgICAg
ICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJlc3Qg
b2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGluIHRo
ZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAorICAg
ICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWlyZSBw
cmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorCisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJv
bmdSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtDYWxscyk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxscyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29k
ZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmpldHRpc29u
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAg
KEpTQzo6UHJvZ3JhbUNvZGVCbG9jazo6aml0Q29tcGlsZSk6CisgICAgICAgIChKU0M6OkV2YWxD
b2RlQmxvY2s6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6
aml0Q29tcGlsZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5n
T3Bwb3J0dW5pdHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omhhc09wdGltaXplZFJlcGxh
Y2VtZW50KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRMTEludENhbGxMaW5rSW5mbyk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkRnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6ZG9udEpJVEFueXRpbWVTb29uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpqaXRBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0U29v
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGxpbnRFeGVjdXRlQ291bnRlcik6CisgICAg
ICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246
Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OkxMSW50Q2FsbExpbmtJbmZv
KToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6
CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChK
U0M6OkxMSW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29k
ZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdERpcmVjdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENhbGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gpOgorICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAgICAg
KiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y3VycmVu
dFZQQyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6fkludGVycHJldGVyKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6aXNPcGNvZGUpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZSk6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGVJRCk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjplbmFibGVkKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3RlckZp
bGUuaDoKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSk6CisgICAgICAg
ICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaDogQWRkZWQuCisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoSlND
OjpKSVRDb2RlOjppc09wdGltaXppbmdKSVQpOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjppc0Jh
c2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAgICAgICAq
IGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUp
OgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToKKyAgICAg
ICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93KToKKyAg
ICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5D
VElPTik6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgICogbGxpbnQ6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50Q29tbW9uLmg6IEFkZGVkLgorICAgICAgICAq
IGxsaW50L0xMSW50RGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6
RGF0YSk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjp+RGF0YSk6CisgICAgICAgICogbGxp
bnQvTExJbnREYXRhLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6ZXhjZXB0
aW9uSW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6Om9wY29kZU1hcCk6
CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpMTEludDo6Z2V0RnVuY3Rpb25FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldEV2YWxFbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldFByb2dyYW1FbnRy
eXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnRzLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpMTEludDo6Z2V0RW50cnlwb2ludCk6CisgICAgICAgICogbGxpbnQvTExJbnRF
eGNlcHRpb25zLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjppbnRlcnByZXRlclRo
cm93KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRp
b24pOgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuVG9UaHJvdyk6CisgICAgICAgIChKU0M6
OkxMSW50OjpjYWxsVG9UaHJvdyk6CisgICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50SGVscGVycy5jcHA6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpMTEludDo6bGxpbnRfdHJhY2Vfb3BlcmFuZCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpsbGludF90cmFjZV92YWx1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9IRUxQRVJf
REVDTCk6CisgICAgICAgIChKU0M6OkxMSW50Ojp0cmFjZUZ1bmN0aW9uUHJvbG9ndWUpOgorICAg
ICAgICAoSlNDOjpMTEludDo6c2hvdWxkSklUKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5
VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6
CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50
L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRPZmZzZXRzRXh0
cmFjdG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBsbGludC9MTEludFRo
dW5rcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhK
dW1wVG8pOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5
VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJp
dHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9y
Q29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnByb2dyYW1F
bnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5oOiBBZGRl
ZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTog
QWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICog
b2ZmbGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZs
aW5lYXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJi
OiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAg
ICAgICogb2ZmbGluZWFzbS9zZXR0aW5ncy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFz
bS90cmFuc2Zvcm0ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaDogQWRkZWQuCisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9u
U2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUu
Y3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2
YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6c2FtcGxpbmdEZXNjcmlw
dGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6CisgICAgICAgIChK
U0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbCk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKToKKyAg
ICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGlvbkhhcm5l
c3MuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnByZXBhcmVGb3JFeGVjdXRpb24pOgorICAgICAg
ICAoSlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRp
b25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6Cisg
ICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorCiAyMDEyLTAx
LTExICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBbGxvdyBhY2Nlc3NvciBnZXQvc2V0IHByb3BlcnR5IHRvIGJlIHNldCB0byB1bmRlZmluZWQK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lv
biAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQko
d29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDExLCAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAs
NiArNjAsNyBAQCBhbGwgOiBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAogICAgIFN0
cmluZ1Byb3RvdHlwZS5sdXQuaCBcCiAgICAgZG9jcy9ieXRlY29kZS5odG1sIFwKKyAgICBMTElu
dEFzc2VtYmx5LmguUEhPTlkgXAogIwogCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNzZXMKQEAg
LTEwNCwzICsxMDUsMTEgQEAgSGVhZGVyRGV0ZWN0aW9uLmggOgogCWVjaG8gPiAkQAogCiBlbmRp
ZgorCisjIEFzc2VtYmx5IGZvciB0aGUgTG93TGV2ZWxJbnRlcnByZXRlcgorCisjIFRoaXMgYnVp
bGRzIGV2ZXJ5IHRpbWUgYmVjYXVzZSB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBkZXNjcmliZQor
IyB0aGUgZGVwZW5kZW5jaWVzIHVzaW5nIG1ha2UuIEluc3RlYWQsIHRoZSBhc3NlbWJsZXIgd2ls
bCBkZWNpZGUgb24KKyMgaXRzIG93biB3aGV0aGVyIG9yIG5vdCBpdCBkaWQgYW55dGhpbmcgdGhh
dCB3b3VsZCBsZWFkIHRvIGEgY2hhbmdlLgorTExJbnRBc3NlbWJseS5oLlBIT05ZOgorCXJ1Ynkg
JChKYXZhU2NyaXB0Q29yZSkvb2ZmbGluZWFzbS9hc20ucmIgJChKYXZhU2NyaXB0Q29yZSkvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJChCVUlMVF9QUk9EVUNUU19ESVIpL0pTQ0xMSW50
T2Zmc2V0c0V4dHJhY3RvciA+IExMSW50QXNzZW1ibHkuaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC03LDYgKzcsMTUgQEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJn
ZXQgc2VjdGlvbiAqLworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJh
dGlvbkxpc3QgPSAwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovOworCQkJYnVp
bGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERl
cml2ZWQgU291cmNlcyAqLywKKwkJCSk7CisJCQluYW1lID0gIkxMSW50IE9mZnNldHMiOworCQkJ
cHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKIAkJNjVGQjNGNjYwOUQxMUU5
MTAwRjQ5REVCIC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEFnZ3JlZ2F0
ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2NUZCM0Y3NzA5RDExRUJEMDBG
NDlERUIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQg
IkRlcml2ZWQgU291cmNlcyIgKi87CkBAIC0xNCw2ICsyMyw5IEBACiAJCQkJNjVGQjNGNjUwOUQx
MUU5MTAwRjQ5REVCIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk1RDM1REVF
MTBDN0MxNDBCMDA4NjQ4QjIgLyogR2VuZXJhdGUgRFRyYWNlIGhlYWRlciAqLywKIAkJCSk7CisJ
CQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8sCisJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwog
CQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJfTsKQEAgLTQ4LDYgKzYwLDEw
IEBACiAJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkFD
OTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCQ0Q4MzU3MTQ4
NTg0NTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1w
b3JhcnlDaGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwQkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMz
MDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4
NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5
cG9pbnRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50
cnlwb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgzOUMxNEJDRjQ2
MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5r
cy5jcHAgKi87IH07CisJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTgx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENv
ZGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYg
LyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0FCMTRCQ0Y1
QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhw
cmVzc2lvblJhbmdlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC01OCw5ICs3NCwxMyBAQAogCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYg
LyogTWV0aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJ
bmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCNjE0QkNGOERGMDA4
ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJu
T2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxM
aW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNUYxNUYxNEI3QTcz
RTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNs
b3dQYXRocy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGMTZENzI2MTQyQzM5QzAwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3
ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAv
KiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3QzE0QkU3Mjc2MDBB
REM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhh
cm5lc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNzkxNEJF
NzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2
NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29u
dmVudGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjI0MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNDJEQTUx
M0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU2RjE0NzM4RjMxMDAx
MjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3Mu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJD
NTU3MDE0NzM4RjM1MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYg
LyogREZHQ29kZUJsb2Nrcy5jcHAgKi87IH07CkBAIC03MSw2ICs5MSwxOSBAQAogCQkwRjQzMTcz
ODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyog
TGlzdGFibGVIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDgwMTRC
QTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJ
VEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovOyB9
OworCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RTE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50
SGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLzsgc2V0dGlu
Z3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby11bnVzZWQtcGFyYW1ldGVyIjsgfTsgfTsKKwkJ
MEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi87
IH07CisJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUQxNEJB
N0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MENBMTRC
QkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29t
bW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzYxNEJCQjE2
OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAv
KiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVy
cHJldGVyLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVs
SW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDIx
NEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnRE
YXRhLmNwcCAqLzsgfTsKKwkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0Yx
NEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0
Q2FsbFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVl
LmNwcCAqLzsgfTsKKwkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJu
VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1RjA4Q0YxNDZDNzYz
MzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBV
bmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAxNzQxNDNGQ0QzMzAwNjhCNzdDIC8qIERGR1ZhcmlhYmxl
QWNjZXNzRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY2MjAxNzIxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjIwMTc1
MTQzRkNEMzcwMDY4Qjc3QyAvKiBERkdPcGVyYW5kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MjAxNzExNDNGQ0QyRjAwNjhCNzdDIC8qIERGR09w
ZXJhbmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTM3MSw3ICs0MDQsNyBAQAogCQk4NkI5OUFFMzExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5n
QnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkI5OUFFMTExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZCQjA5QzAxMzhFMzgxQjAwNTY3
MDJGIC8qIERGR1JlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZCQjA5QkUxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwICov
OyB9OwogCQk4NkJCMDlDMTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkYxMzhFMzgxQjAw
NTY3MDJGIC8qIERGR1JlcGF0Y2guaCAqLzsgfTsKLQkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5
IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAq
LzsgfTsKKwkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEy
ODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFj
cm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZDNTY4REQxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNw
cCAqLzsgfTsKIAkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQ
Uy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4
REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwogCQk4NkM1
NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8q
IE1JUFNBc3NlbWJsZXIuaCAqLzsgfTsKQEAgLTczMSw2ICs3NjQsMjAgQEAKIC8qIEVuZCBQQlhC
dWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2Vj
dGlvbiAqLworCQkwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVBy
b3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVy
UG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwor
CQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwQTkxNEJB
N0ZEOTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9ICJMTEludCBPZmZzZXRzIjsKKwkJfTsKKwkJ
MEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsK
KwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4
NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlw
ZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3
MjsKKwkJCXJlbW90ZUluZm8gPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCX07CiAJCTE0
MTIxNEJFMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3
RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC03NzYsNiArODIz
LDE1IEBACiAvKiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhEMTRCQTdFNUUw
MEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBo
YXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAvdXNy
L3NoYXJlL21hbi9tYW4xLzsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMgPSAo
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCX07
CiAJCTVEQkIxNTExMTMxRDBCMTMwMDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0g
ewogCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDEyOwpAQCAtODE2LDYgKzg3MiwxMCBAQAogCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyog
VGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYXJ5Q2hhbmdlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGlt
aXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpemVMaW1pdHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBMTEludEVudHJ5cG9pbnRzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2lu
dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NjE0QkNGNDVBMDA4
ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBMTEludEVudHJ5cG9pbnRzLmg7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludFRodW5rcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBM
TEludFRodW5rcy5jcHA7IHBhdGggPSBsbGludC9MTEludFRodW5rcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5r
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludFRodW5rcy5oOyBwYXRo
ID0gbGxpbnQvTExJbnRUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYw
QjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvZGVUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIYW5kbGVySW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHByZXNzaW9uUmFuZ2VJbmZvLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjYsOSArODg2LDEzIEBACiAJCTBGMEI4M0Iz
MTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWV0aG9kQ2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbG9iYWxSZXNvbHZlSW5mby5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYg
LyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50
Q2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50Q2Fs
bExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTVGMTVEMTRCN0E3
M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29tbW9uU2xvd1BhdGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQml0VmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVREcml2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXph
dGlvbktpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3QTE0QkU3
MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFeGVjdXRpb25IYXJuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVudGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBERkdDb2RlQmxvY2tzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9j
a3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODM5LDYgKzkwMywyMCBAQAogCQkwRjQzMTcz
NjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExpc3RhYmxlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRFeGNlcHRpb25zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJ
VEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURXhjZXB0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA4RjE0QkE3RTVFMDBC
RkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBp
bmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTExJbnRFeGNlcHRpb25zLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TExJbnRFeGNlcHRpb25zLmg7IHBhdGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50
SGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEhl
bHBlcnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEhlbHBlcnMuaDsgcGF0aCA9
IGxsaW50L0xMSW50SGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7
IHBhdGggPSBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRDb21tb24uaDsgcGF0aCA9IGxs
aW50L0xMSW50Q29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM2
MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHBhdGggPSBsbGlu
dC9MTEludE9mZmxpbmVBc21Db25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7
IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRl
ci5oOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RGF0YS5jcHA7IHBhdGgg
PSBsbGludC9MTEludERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExMSW50RGF0YS5oOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0
Q2FsbFJldHVyblZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENDMTQ2QkU2MDIwMDA0NzJBOSAvKiBERkdCeXRl
Q29kZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0J5dGVDb2Rl
Q2FjaGUuaDsgcGF0aCA9IGRmZy9ERkdCeXRlQ29kZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmlu
YWxpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2MjAxNkQxNDNGQ0Qy
RjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHQWJzdHJhY3RTdGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHQWJzdHJh
Y3RTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQwLDYgKzE2MTgs
MTMgQEAKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUy
NzIgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNl
OworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEy
MTExRTBBNDg3OTNDMDA0ODAyNTUgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEZy
YW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAg
LTE1OTgsNiArMTY4Myw3IEBACiAJCQkJMTQxMjExMjAwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlk
b20gKi8sCiAJCQkJMTRCRDU5QkYwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJ
NjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEYx
NEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKIAkJCSk7CiAJ
CQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTYyNiw2
ICsxNzEyLDcgQEAKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENv
cmVQcmVmaXguaCAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAq
LywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8sCisJCQkJMEY0
NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovLAogCQkJCTE0MzJFQkQ3MEEzNENBRDQw
MDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2Vt
YmxlciAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8sCkBA
IC0xNjY0LDYgKzE3NTEsMjggQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsK
IAkJfTsKKwkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8sCisJCQkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1
QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLywKKwkJCQkwRjBCODM5NzE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRUaHVua3MuY3BwICovLAorCQkJCTBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludFRodW5rcy5oICovLAorCQkJCTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTElu
dERhdGEuY3BwICovLAorCQkJCTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEu
aCAqLywKKwkJCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLywK
KwkJCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgg
Ki8sCisJCQkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIu
Y3BwICovLAorCQkJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJl
dGVyLmggKi8sCisJCQkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5jcHAgKi8sCisJCQkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5oICovLAorCQkJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3Bw
ICovLAorCQkJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLywK
KwkJCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cCAqLywKKwkJCSk7CisJCQluYW1lID0gbGxpbnQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OwogCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAyNTUgLyogdGVzdHMgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTY5Niw2ICsxODA1LDggQEAKIAkJ
MTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RD
YWxsUmV0dXJuVmFsdWUuY3BwICovLAorCQkJCTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBI
b3N0Q2FsbFJldHVyblZhbHVlLmggKi8sCiAJCQkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8q
IEpJVEV4Y2VwdGlvbnMuY3BwICovLAogCQkJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBK
SVRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEZEODJFMzcxNDFBQjE0MjAwMTc5Qzk0IC8qIENvbXBh
Y3RKSVRDb2RlTWFwLmggKi8sCkBAIC0yMTE4LDYgKzIyMjksOCBAQAogCQk3RUY2RTBCQjBFQjdB
MUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXph
dGlvbktpbmQuaCAqLywKKwkJCQkwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9u
SGFybmVzcy5oICovLAogCQkJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93
UGF0aHMuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAg
Ki8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAqLywKQEAgLTI0
NzcsNiArMjU5MCw4IEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYyMUMyN0Ux
NEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLywKKwkJCQkwRjBGQzQ1
ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKIAkJCQkwRjBCODNC
ODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAq
LywKIAkJCQkwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAq
LywKIAkJCQkwRjBCODNCMjE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmNw
cCAqLywKQEAgLTMwMTUsNyArMzEzMCwxNiBAQAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3
QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCNDMxMkRCOEE4MTAw
QTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1
RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50
Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyog
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDRDE0QkJC
MTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9p
bnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAv
KiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRG
IC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4
ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDI0LDEz
ICszMTQ4LDM1IEBACiAJCQkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxM
aW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8q
IEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCOTE0QkNGOTVG
MDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1
dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0
QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3
RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CiAvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhO
YXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlND
TExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0Owor
CQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MDhCMTRCQTdF
NUUwMEJGRTI3MiAvKiBTb3VyY2VzICovLAorCQkJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAv
KiBGcmFtZXdvcmtzICovLAorCQkJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5Rmls
ZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMg
PSAoCisJCQkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kg
Ki8sCisJCQkpOworCQkJbmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1
Y3ROYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9
IDBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87
CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9Owog
CQkxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLyA9IHsKIAkJCWlzYSA9IFBC
WE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDEyMTEzOTBBNDg3
OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgIm1pbmlkb20iICovOwpAQCAtMzE1NywxMSArMzMwMywyOSBAQAogCQkJCTE0QkQ1OUJFMEEz
RThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTkzMkY1QkRBMDgyMkExQzcwMDczNjk3
NSAvKiBqc2MgKi8sCiAJCQkJNjUxMTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAg
Ki8sCisJCQkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJh
Y3RvciAqLywKKwkJCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAq
LywKIAkJCSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MEFBMTRCQTdGRDkw
MEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhT
aGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owor
CQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9s
bGludC9Mb3dMZXZlbEFzc2VtYmxlci5hc20iLAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUg
RGVyaXZlZCBTb3VyY2VzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RV
Q1RTX0RJUikvTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaCIsCisJCQkpOworCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAv
YmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJ
Un0vTExJbnRPZmZzZXRzL1wiXG5cbi91c3IvYmluL2VudiBydWJ5IFwiJHtTUkNST09UfS9vZmZs
aW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmJcIiA8IFwiJHtTUkNST09UfS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbVwiID4gXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJ
bnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaFwiXG4iOworCQl9OwogCQkzNzEzRjAxNDE0
MjkwNTI0MDAzNjM4N0YgLyogQ2hlY2sgRm9yIEluYXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xh
c3MgTmFtZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzMwMiw2ICszNDY2LDE0IEBACiAvKiBF
bmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291
cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyog
U291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGNDY4MEE3MTRCQTdG
QTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJ
CTE0MTIxMTFEMEE0ODc5M0MwMDQ4MDI1NSAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJY
U291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAt
MzU1OSw3ICszNzMxLDE0IEBACiAJCQkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJK
SVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3
QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0
QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
NDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50
ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcy
IC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBENDE0QkJEMjQ5MDBC
RkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBC
ODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYwQjgzQjAxNEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBCODNCNDE0QkNGODYwMDA4ODVCNEYgLyogTWV0aG9k
Q2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKQEAgLTM1NzYsNiArMzc1NSwx
NiBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
UEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3
MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5k
ZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZz
ZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMzE0QkE4MjE0MDBCRkUy
NzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQkxNDEyMTRCRjBBNDkxOTBF
MDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWlu
aWRvbSAqLzsKQEAgLTM2MDksNiArMzc5OCwxNDggQEAKIC8qIEVuZCBQQlhUYXJnZXREZXBlbmRl
bmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAq
LworCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NF
QVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9C
SVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RB
TkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5B
QkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0g
MDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIs
CisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9F
WFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5j
bGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJ
CQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5f
QUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0g
WUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJ
CQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJ
IiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRf
VEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gWUVTOworCQkJCVBST0RVQ1Rf
TkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VS
X0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50
T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7
CisJCX07CisJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFM
V0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRB
UkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZP
Uk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9T
VEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOwor
CQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJ
CQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FC
T1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5f
VFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhF
QURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJ
IiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
IiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJP
RFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJ
CVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
TExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBS
ZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJD
SFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlE
RUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19M
QU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05T
ID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5n
LjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdD
Q19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9V
VF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7
CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWlj
dSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChI
RUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJH
RVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsK
KwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2ODA5OTE0QkE3RTVFMDBC
RkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBO
TzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhB
U0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdp
dGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0Nf
RU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBs
ZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NP
TlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZ
RVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5f
VU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0i
ID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJ
bnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJ
TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChU
QVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VB
UkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChI
RUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07
CisJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05B
TUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJ
fTsKKwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVD
VF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFz
ZTsKKwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUg
PSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0
aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9
OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1
NSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVp
bGRTZXR0aW5ncyA9IHsKQEAgLTM4NTAsNiArNDE4MSwyOCBAQAogLyogRW5kIFhDQnVpbGRDb25m
aWd1cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0
aW9uICovCisJCTBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLyA9
IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25z
ID0gKAorCQkJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2
ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODA5ODE0QkE3RTVF
MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAv
KiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxl
ID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJ
CTBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0Nv
bmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODBB
RDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZF
MjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2Zp
bGluZyAqLywKKwkJCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywK
KwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0
Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEzOTBBNDg3OTg0
MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQg
Im1pbmlkb20iICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxk
Q29uZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcg
QEAKICNkZWZpbmUgRFVNUF9MSU5LX1NUQVRJU1RJQ1MgMAogI2RlZmluZSBEVU1QX0NPREUgMAog
Ci0jaW5jbHVkZSA8TWFjcm9Bc3NlbWJsZXIuaD4KKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5o
IgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVu
dGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCeXRlY29k
ZUNvbnZlbnRpb25zX2gKKyNkZWZpbmUgQnl0ZWNvZGVDb252ZW50aW9uc19oCisKKy8vIFJlZ2lz
dGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1l
YW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKKy8vICAgICAgMHg4MDAwMDAwMC0weEZG
RkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBl
bnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCisvLyAgICAgIDB4
MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUg
cG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24n
cyBjYWxsZnJhbWUuCisvLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5k
aWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29s
IG9uIHRoZSBDb2RlQmxvY2suCitzdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4ID0gMHg0MDAwMDAwMDsKKworI2VuZGlmIC8vIEJ5dGVjb2RlQ29udmVudGlvbnNfaAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAko
cmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgogI2luY2x1ZGUgIkpT
VmFsdWUuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiUmVw
YXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUg
PHN0ZGlvLmg+CkBAIC04OTAsNiArODkxLDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNT
dGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDogeworICAg
ICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAgICAgICAgcHJp
bnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF9nZW5lcmljOiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2Nh
dGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0x
NDQ5LDYgKzE0NTgsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcs
CiB7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1QYXJhbWV0ZXJzKCkpOwogICAgIG9w
dGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogICAgIAogICAgIGlm
IChvdGhlci5tX3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nhcnko
KTsKQEAgLTE0OTcsNiArMTUwNyw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1
dGFibGUqIG8KICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIAogICAgIG9wdGltaXplQWZ0ZXJX
YXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogCiAjaWYgRFVNUF9DT0RFX0JMT0NLX1NU
QVRJU1RJQ1MKICAgICBsaXZlQ29kZUJsb2NrU2V0LmFkZCh0aGlzKTsKQEAgLTE1MTQsNyArMTUy
NSwxMSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2lmIEVOQUJMRShWRVJCT1NFX1ZBTFVF
X1BST0ZJTEUpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNlbmRpZgotICAgIAorCisjaWYg
RU5BQkxFKExMSU5UKSAgICAKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4o
KSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50
Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogI2lmIEVO
QUJMRShKSVQpCiAgICAgLy8gV2UgbWF5IGJlIGRlc3Ryb3llZCBiZWZvcmUgYW55IENvZGVCbG9j
a3MgdGhhdCByZWZlciB0byB1cyBhcmUgZGVzdHJveWVkLgogICAgIC8vIENvbnNpZGVyIHRoYXQg
dHdvIENvZGVCbG9ja3MgYmVjb21lIHVucmVhY2hhYmxlIGF0IHRoZSBzYW1lIHRpbWUuIFRoZXJl
CkBAIC0xNzI2LDggKzE3NDEsNTUgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRp
b25hbGx5KAogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5saW5raW5nID0g
ZmFsc2U7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgCisjaWYg
RU5BQkxFKExMSU5UKQorICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFsRGF0
YS0+aW50ZXJwcmV0ZXI7CisgICAgaWYgKCFpbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAg
ICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUo
KSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJ
bnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25z
W2ldXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cklu
c3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgeworICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6
CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgICAgICAgICBpZiAoSGVh
cDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51
LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzVdLnUu
b3BlcmFuZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtl
ZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgICAgICAg
ICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCkp
CisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzdd
LnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAg
ICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAg
ICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOwor
ICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlID0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZShvcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAg
ICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVtt
X2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgQVNTRVJUKGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3BfcmVz
b2x2ZV9nbG9iYWwKKyAgICAgICAgICAgICAgICAgICB8fCBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFt
aWMpOworICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzNdLnUu
c3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBjdXJJ
bnN0cnVjdGlvbls0XS51Lm9wZXJhbmQgPSAwOworICAgICAgICB9CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhlYXA6
OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgcHJp
bnRmKCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAg
ICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKICNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2UgYXJlLCB0aGVuIGpl
dHRpc29uLgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdT
Y2FuKCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7CkBAIC0xODQ4LDEw
ICsxOTEwLDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXIKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7ICsraSkKICAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAjaWYgRU5BQkxFKElO
VEVSUFJFVEVSKQotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0
dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9u
c1tpXV0pOwotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlv
bnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVz
KHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1d
KTsKKyAgICBpZiAobV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAg
ICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUo
KSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlz
aXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsK
KyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5z
aXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVz
KHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1d
KTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMjA2MCw2ICsyMTI0
LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiB7CiAgICAgaWYgKCEhbV9hbHRl
cm5hdGl2ZSkKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+dW5saW5rQ2FsbHMoKTsKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZv
cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5mb3NbaV0uaXNM
aW5rZWQoKSkKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOwor
ICAgIH0KKyNlbmRpZgogICAgIGlmICghKG1fY2FsbExpbmtJbmZvcy5zaXplKCkgfHwgbV9tZXRo
b2RDYWxsTGlua0luZm9zLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fZ2xv
YmFsRGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0yMDc0LDEwICsyMTQ0LDM1IEBAIHZvaWQgQ29kZUJs
b2NrOjp1bmxpbmtDYWxscygpCiAKIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxz
KCkKIHsKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29t
aW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4o
KS0+dW5saW5rKCk7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRoaXMpOwogICAg
IHdoaWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2FsbHMuZW5kKCkp
CiAgICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigpLT51bmxpbmsoKm1fZ2xvYmFsRGF0YSwg
cmVwYXRjaEJ1ZmZlcik7CiB9CisKK3Vuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQo
RXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit7CisjaWYg
RU5BQkxFKExMSU5UKQorICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0gYml0d2lzZV9j
YXN0PHZvaWQqPigmbGxpbnRfYmVnaW4pCisgICAgICAgICYmIHJldHVybkFkZHJlc3MudmFsdWUo
KSA8PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQpKSB7CisgICAgICAgIEFTU0VSVChl
eGVjLT5jb2RlQmxvY2soKSk7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSA9PSB0
aGlzKTsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUo
KSkpOworICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBleGVjLT5jdXJyZW50VlBD
KCk7CisgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbik7CisgICAgICAgIHJldHVybiBieXRlY29k
ZU9mZnNldChpbnN0cnVjdGlvbik7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CisjZW5kaWYKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiAxOworICAg
IFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0g
bV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7CisgICAgaWYgKCFjYWxsSW5kaWNl
cy5zaXplKCkpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q2Fs
bFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zm
c2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJVENvZGUo
KS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7Cit9CiAj
ZW5kaWYKIAogdm9pZCBDb2RlQmxvY2s6OmNsZWFyRXZhbENhY2hlKCkKQEAgLTIxNzMsMjQgKzIy
NjgsNDUgQEAgYm9vbCBGdW5jdGlvbkNvZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERgogCiB2b2lk
IFByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgp
ICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6
aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkp
OwogICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkp
LT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRXZhbENv
ZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0
SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3Rh
dGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0
aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6
amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxp
bmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgp
KSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8
RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXpl
ZENvZGVGb3IoKmdsb2JhbERhdGEoKSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVj
dCA6IENvZGVGb3JDYWxsKTsKIH0KKwordm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxl
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwor
ICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5q
aXRDb21waWxlKGV4ZWMpOworfQorCit2b2lkIEV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGUoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50
ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAg
c3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBp
bGUoZXhlYyk7Cit9CisKK3ZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgc3Rh
dGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21w
aWxlRm9yKGV4ZWMsIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9y
Q2FsbCk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEwNDg2
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBDb2RlQmxvY2tfaAogI2RlZmluZSBD
b2RlQmxvY2tfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUg
IkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zm
c2V0LmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgpAQCAtNTAsNiArNTEsNyBAQAogI2luY2x1
ZGUgIkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKICNpbmNs
dWRlICJMaW5lSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUHJlZGljdGlv
blRyYWNrZXIuaCIKQEAgLTY1LDE2ICs2NywxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCi0vLyBSZWdpc3RlciBudW1iZXJzIHVz
ZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGlu
ZyB0byB0aGVpciByYW5nZXM6Ci0vLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRp
dmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUg
Y2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgotLy8gICAgICAweDAwMDAwMDAwLTB4M0ZG
RkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxv
Y2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgot
Ly8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQw
MDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJs
b2NrLgotc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAw
MDAwMDA7Ci0KIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNs
YXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGlubGluZSBpbnQgdW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKGludCBhcmd1bWVudHNSZWdpc3RlcikgeyByZXR1cm4gYXJndW1lbnRzUmVnaXN0ZXIg
LSAxOyB9CiAKQEAgLTgzLDYgKzgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29k
ZUJsb2NrIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIsIHB1YmxpYyBXZWFrUmVmZXJl
bmNlSGFydmVzdGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENvcHlQYXJzZWRCbG9ja1RhZyB7IENv
cHlQYXJzZWRCbG9jayB9OwogICAgIHByb3RlY3RlZDoKQEAgLTEyMyw3ICsxMjEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5hbHRlcm5hdGl2ZSgpOwogICAgICAgICAg
ICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBl
KCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6
OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAjZW5kaWYKQEAgLTE5NCwxNSArMTkyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9kQ2FsbExp
bmtJbmZvLCB1bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4obV9t
ZXRob2RDYWxsTGlua0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCks
IGJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAg
ICAgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGlj
ZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKLSAgICAgICAgICAgIGlm
ICghY2FsbEluZGljZXMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAg
ICAgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNl
dCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNh
bGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFs
dWUoKSkpLT5ieXRlY29kZU9mZnNldDsKLSAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldChFeGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAgICAgICB1bnNp
Z25lZCBieXRlY29kZU9mZnNldEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgICAg
ICB7CkBAIC0yMjMsMTEgKzIxMywxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAg
ICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwogICAgICAgICB9CisjaWYg
RU5BQkxFKExMSU5UKQorICAgICAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoTExJbnRDYWxsTGlu
a0luZm8qIGluY29taW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2luY29taW5nTExJbnRD
YWxscy5wdXNoKGluY29taW5nKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkK
ICAgICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5rSW5jb21pbmdDYWxscygpOwotI2VuZGlmCisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShE
RkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIHZvaWQgc2V0SklUQ29kZU1hcChQYXNz
T3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBqaXRDb2RlTWFwKQogICAgICAgICB7CiAgICAgICAg
ICAgICBtX2ppdENvZGVNYXAgPSBqaXRDb2RlTWFwOwpAQCAtMjM2LDcgKzIzMiw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9qaXRDb2RlTWFwLmdl
dCgpOwogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgCisjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgICAgIHZvaWQgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCEhbV9kZmdEYXRhKQpAQCAtMzM1LDEyICszMzMsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAg
ICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJldHVybkFkZHJlc3MgPj0gaW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zKCkuZW5kKCkpOwogICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykg
LSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgICB2
b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5j
dGlvbikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5j
dGlvbjsgfQogICAgICAgICBib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbigpIHsgcmV0dXJu
IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CkBAIC0zNTYsMTAgKzM1MywxNCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2Fy
ZGluZ09wcG9ydHVuaXR5KCkKICAgICAgICAgeworI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5H
KSAmJiAhRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgaWYgKEJ5dGVjb2RlR2VuZXJhdG9yOjpk
dW1wc0dlbmVyYXRlZENvZGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICBpZiAoISFhbHRlcm5hdGl2ZSgpKQogICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZSgp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZUxhdGVy
KCk7CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICAKICNpZm5kZWYgTkRFQlVHCkBAIC0zODcs
MTcgKzM4OCwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY3V0YWJsZU1lbW9yeUhh
bmRsZSogZXhlY3V0YWJsZU1lbW9yeSgpIHsgcmV0dXJuIGdldEpJVENvZGUoKS5nZXRFeGVjdXRh
YmxlTWVtb3J5KCk7IH0KICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXpl
ZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IGpldHRpc29uKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZShFeGVjU3Rh
dGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpID0gMDsK
ICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCkgPSAwOwogICAgICAgICBi
b29sIGhhc09wdGltaXplZFJlcGxhY2VtZW50KCkKICAgICAgICAgewotICAgICAgICAgICAgQVNT
RVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBB
U1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAg
ICBib29sIHJlc3VsdCA9IHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA+IGdldEpJVFR5cGUo
KTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICAgICBpZiAocmVzdWx0KQogICAgICAg
ICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6
REZHSklUKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChyZXBs
YWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAg
ICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXBsYWNlbWVudCgpLT5n
ZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKSA9PSB0
aGlzKTsKICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtNDU2LDcgKzQ1OCw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHZvaWQgY2xlYXJFdmFsQ2FjaGUoKTsKIAotI2lmIEVOQUJMRShJ
TlRFUlBSRVRFUikKICAgICAgICAgdm9pZCBhZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKHVu
c2lnbmVkIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKQEAgLTQ2OCw2ICs0NjksMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25z
LmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAgICAgIGJv
b2wgaGFzR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBMTEludENhbGxMaW5r
SW5mbyogYWRkTExJbnRDYWxsTGlua0luZm8oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xs
aW50Q2FsbExpbmtJbmZvcy5hcHBlbmQoTExJbnRDYWxsTGlua0luZm8oKSk7CisgICAgICAgICAg
ICByZXR1cm4gJm1fbGxpbnRDYWxsTGlua0luZm9zLmxhc3QoKTsKKyAgICAgICAgfQogI2VuZGlm
CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBzZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJ
bmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZvcy5ncm93KHNpemUpOyB9CkBA
IC02NzIsNyArNjc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29s
IGFkZEZyZXF1ZW50RXhpdFNpdGUoY29uc3QgREZHOjpGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJh
c2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShn
ZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBtX2V4aXRQcm9maWxlLmFkZChzaXRl
KTsKICAgICAgICAgfQogCkBAIC03NzcsNiArNzg0LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbShDb2RlQmxvY2sqIGFsdGVybmF0aXZlKTsK
ICAgICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgICAg
ICAKKyAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIEpJVHRpbmcga2lj
a3MgaW4sIGluIGEgbWl4ZWQgbW9kZQorICAgICAgICAvLyBleGVjdXRpb24gd29ybGQuCisgICAg
ICAgIAorICAgICAgICB2b2lkIGRvbnRKSVRBbnl0aW1lU29vbigpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
dm9pZCBqaXRBZnRlcldhcm1VcCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVj
dXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2Fy
bVVwOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdFNvb24oKQorICAgICAg
ICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBp
bnQzMl90IGxsaW50RXhlY3V0ZUNvdW50ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICB9CisgICAgICAgIAogICAg
ICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gdGllcmVkIGNvbXBpbGF0aW9u
IGtpY2tzIGluLiBUaGlzCiAgICAgICAgIC8vIGNvbnRyb2xzIGJvdGggd2hlbiB0aGUgb3B0aW1p
emluZyBjb21waWxlciBpcyBpbnZva2VkIGFuZCB3aGVuIE9TUgogICAgICAgICAvLyBlbnRyeSBo
YXBwZW5zLiBUd28gdHJpZ2dlcnMgZXhpc3Q6IHRoZSBsb29wIHRyaWdnZXIgYW5kIHRoZSByZXR1
cm4KQEAgLTEwNTIsOSArMTA4MiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZz
ZXQ7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4g
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBt
X2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBT
ZWdtZW50ZWRWZWN0b3I8TExJbnRDYWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxsTGlua0luZm9z
OworICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3
U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdMTEludENhbGxzOwog
I2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZv
PiBtX3N0cnVjdHVyZVN0dWJJbmZvczsKQEAgLTEwNjUsOSArMTA5NywxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNo
ZWNrOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1Nl
bnRpbmVsTm9kZTxDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2VuZGlmCi0jaWYg
RU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAg
ICAgICAgT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAgICAgIAor
I2VuZGlmCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFrUmVmZXJlbmNl
VHJhbnNpdGlvbiB7CiAgICAgICAgICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigpIHsgfQog
ICAgICAgICAgICAgCkBAIC0xMTMwLDEyICsxMTYzLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIE93blB0cjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAgIAorICAgICAg
ICBpbnQzMl90IG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAgICAgIGludDMy
X3QgbV9qaXRFeGVjdXRlQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZVN1
Y2Nlc3NDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFpbENvdW50ZXI7
CiAgICAgICAgIHVpbnQ4X3QgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAgICAgIHVp
bnQ4X3QgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKLQorICAgICAgICAKICAgICAgICAg
c3RydWN0IFJhcmVEYXRhIHsKICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgICAgIHB1YmxpYzoKQEAgLTEyMDgsNiArMTI0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChF
eGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlz
b24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGUoRXhlY1N0YXRlKik7CiAgICAg
ICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJv
b2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtMTI0Miw2ICsxMjc4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBj
b21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZShF
eGVjU3RhdGUqKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC0xMjc5
LDYgKzEzMTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZp
cnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5v
ZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBqaXRDb21waWxlKEV4ZWNTdGF0ZSopOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayog
cmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVj
dGlvbi5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogICAgIGNs
YXNzIFN0cnVjdHVyZUNoYWluOworICAgIHN0cnVjdCBMTEludENhbGxMaW5rSW5mbzsKIAogI2lm
IEVOQUJMRShKSVQpCiAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgUG9seW1vcnBo
aWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlOwpAQCAtMTQxLDYgKzE0MiwxMSBA
QCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAgICAgc3RydWN0IEluc3RydWN0aW9uIHsKKyAg
ICAgICAgSW5zdHJ1Y3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB1LmpzQ2VsbC5jbGVh
cigpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihPcGNvZGUgb3Bj
b2RlKQogICAgICAgICB7CiAjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQpA
QCAtMTc2LDYgKzE4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAg
SW5zdHJ1Y3Rpb24oUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYykgeyB1Lmdl
dHRlckZ1bmMgPSBnZXR0ZXJGdW5jOyB9CisgICAgICAgIAorICAgICAgICBJbnN0cnVjdGlvbihM
TEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSB7IHUuY2FsbExpbmtJbmZvID0gY2FsbExp
bmtJbmZvOyB9CiAKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgT3Bjb2RlIG9wY29kZTsK
QEAgLTE4NCw2ICsxOTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFdyaXRlQmFy
cmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IHN0cnVjdHVyZUNoYWluOwogICAgICAgICAgICAgV3Jp
dGVCYXJyaWVyQmFzZTxKU0NlbGw+IGpzQ2VsbDsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jIGdldHRlckZ1bmM7CisgICAgICAgICAgICBMTEludENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvOworICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsKICAgICAgICAgfSB1Owog
ICAgICAgICAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIExMSW50Q2FsbExpbmtJbmZvX2gKKyNkZWZpbmUgTExJbnRDYWxsTGlu
a0luZm9faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworc3RydWN0IExMSW50Q2FsbExp
bmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiB7
CisgICAgTExJbnRDYWxsTGlua0luZm8oKQorICAgIHsKKyAgICB9CisgICAgCisgICAgfkxMSW50
Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAg
ICAgcmVtb3ZlKCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJldHVybiBj
YWxsZWU7IH0KKyAgICAKKyAgICB2b2lkIHVubGluaygpCisgICAgeworICAgICAgICBjYWxsZWUu
Y2xlYXIoKTsKKyAgICAgICAgbWFjaGluZUNvZGVUYXJnZXQgPSBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoKTsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAg
ICB9CisgICAgCisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGNhbGxlZTsKKyAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgbWFjaGluZUNvZGVUYXJnZXQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIExMSW50Q2FsbExpbmtJbmZvX2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMs
NiArMTIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9hcmd1bWVu
dHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkgXAogICAgICAg
ICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAorICAgICAgICBtYWNybyhvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9y
ZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmljLCA5KSBcCiAg
ICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApAQCAtMjAyLDYgKzIwNCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIGVudW0geyBGT1JfRUFDSF9PUENPREVfSUQoT1BD
T0RFX0lEX0VOVU0pIH0gT3Bjb2RlSUQ7CiAgICAgI3VuZGVmIE9QQ09ERV9JRF9FTlVNCiAKKyAg
ICBjb25zdCBpbnQgbWF4T3Bjb2RlTGVuZ3RoID0gOTsKICAgICBjb25zdCBpbnQgbnVtT3Bjb2Rl
SURzID0gb3BfZW5kICsgMTsKIAogICAgICNkZWZpbmUgT1BDT0RFX0lEX0xFTkdUSFMoaWQsIGxl
bmd0aCkgY29uc3QgaW50IGlkIyNfbGVuZ3RoID0gbGVuZ3RoOwpAQCAtMjE4LDcgKzIyMSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoVkVSSUZZX09QQ09E
RV9JRCk7CiAgICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQKIAotI2lmIEVOQUJMRShDT01QVVRF
RF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KSB8fCBFTkFCTEUoTExJTlQpCiAjaWYgQ09NUElMRVIoUlZDVCkgfHwgQ09NUElMRVIoSU5URUwp
CiAgICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJ
KHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCkBAIC0xMjY0LDkgKzEyNjUsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICAg
ICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUo
KSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIG1fY29kZUJsb2Nr
LT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNl
bmRpZgogICAgICAgICBlbWl0T3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE0MTksOSArMTQxOCw3IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgIG1f
Y29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwog
I2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAg
IGVtaXRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJv
cERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHBy
b3BlcnR5KSk7CkBAIC0xNDY2LDkgKzE0NjMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xv
YmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJM
RShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0
aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBlbWl0T3Bjb2RlKHJlcXVp
cmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZl
X2dsb2JhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ4
Niw5ICsxNDgxLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1ldGhvZENoZWNrKAog
CiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSNp
ZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1pdE9w
Y29kZShvcF9nZXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4
KCkpOwpAQCAtMTUxMyw5ICsxNTA2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRBcgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQo
UmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQq
IHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRk
UHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlm
CiAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTUzMSw5ICsxNTIyLDcgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikK
ICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlv
bnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE4MjEsNyAr
MTgxMCwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoCiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMo
KSk7IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMu
cmVnaXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0lu
Zm8oKSk7CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQo
KSkgewogICAgICAgICBlbWl0T3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0xOTIzLDcg
KzE5MTYsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdAogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRz
LnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJ
bmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0
KCkpIHsKICAgICAgICAgZW1pdE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMjE4Myw3
ICsyMTgwLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gKIHsK
ICAgICBtX3VzZXNFeGNlcHRpb25zID0gdHJ1ZTsKICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJM
RShMTElOVCkKKyAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5k
LT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGgg
KyBtX2Jhc2VTY29wZURlcHRoLCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9vcF9jYXRjaCkpIH07CisjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0
YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwg
bV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVs
KCkgfTsKKyNlbmRpZgogI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+Ymlu
ZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1p
Y1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAx
MDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTgyMyw3ICsxODIzLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5
X2lkKTsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CisgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsK
ICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDgg
QEAgaW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNhc2Ugb3Bf
cHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRf
YnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFs
X3ZhcjoKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUgIkRGR1JlcGF0Y2guaCIKKyNpbmNs
dWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW5saW5lQVNNLmgiCiAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgpAQCAtNTQ1LDQ1
ICs1NDYsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyCiAgICAg
cmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
REZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNvZGVkSlNWYWx1ZSBE
RkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0
ZSopOwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKLSAgICAibW92
ICVyMTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKFg4NikK
LWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAi
XG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAg
Im1vdiAtNDAoJWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVzcClcbiIKLSAgICAi
am1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRo
RXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20gKAotIi50ZXh0
IiAiXG4iCi0iLmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICJcbiIKLSIudGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKLSAgICAiY3B5
IHIwLCByNSIgIlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0KLUVuY29kZWRK
U1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUo
RXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xv
YmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQotCiBzdGF0aWMgdm9pZCogaGFuZGxl
SG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUt
PmNhbGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0
aW9uU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxv
Y2F0aW9uU3BhY2UuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQWxsb2NhdGlvblNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogY2xhc3MgTWFya2VkQmxvY2s7CiAKIGNsYXNzIEFsbG9jYXRpb25TcGFjZSB7CkBAIC02
OCw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNocmluaygpOwogICAgIAogcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAgIGVudW0g
QWxsb2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRpb25NdXN0U3VjY2VlZCwgQWxsb2NhdGlvbkNhbkZh
aWwgfTsKICAgICAKICAgICB2b2lkKiBhbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTA0ODYwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgyOSw3ICs4MjksNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dn
CiAgICAgICAgIG1fb2JqZWN0U3BhY2Uuc2V0SGlnaFdhdGVyTWFyayhtYXgocHJvcG9ydGlvbmFs
Qnl0ZXMsIG1fbWluQnl0ZXNQZXJDeWNsZSkpOwogICAgIH0KICAgICBKQVZBU0NSSVBUQ09SRV9H
Q19FTkQoKTsKLQorICAgIAogICAgICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpT
VmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAgICBjbGFz
cyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTEyOSwxMCArMTMwLDExIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9v
dHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZnJp
ZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGlvblNw
YWNlOwotICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBDb2RlQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIFNsb3RWaXNpdG9yOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWluRXh0cmFD
b3N0ID0gMjU2OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4dHJhQ29zdCA9IDEw
MjQgKiAxMDI0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5o
CShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
Y2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKK2Ns
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsKIGNsYXNzIFNs
b3RWaXNpdG9yOwogCkBAIC03OSw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jaygp
OwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgCiAgICAgLy8gWyAzMi4uLiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lz
ZVN0ZXAgPSBNYXJrZWRCbG9jazo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBw
cmVjaXNlQ3V0b2ZmID0gMjU2OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiAr
MTE5LDkgQEAgbmFtZXNwYWNlIEpTQyAgewogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAg
ICAgSW5zdHJ1Y3Rpb24qIHJldHVyblZQQygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJG
aWxlOjpSZXR1cm5QQ10udlBDKCk7IH0KICNlbmRpZgorI2lmIEVOQUJMRShMTElOVCkKKyAgICAg
ICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8
SW5zdHJ1Y3Rpb24qPih0aGlzW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0udGFnKCkpOyB9
CisjZW5kaWYKIAogICAgICAgICB2b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogY2FsbGVy
RnJhbWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OkNhbGxl
ckZyYW1lXSA9IGNhbGxlckZyYW1lOyB9CiAgICAgICAgIHZvaWQgc2V0U2NvcGVDaGFpbihTY29w
ZUNoYWluTm9kZSogc2NvcGVDaGFpbikgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1Jl
Z2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0gPSBzY29wZUNoYWluOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9u
IDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRlICJKSVQuaCIK
ICNlbmRpZgogCi0jZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAo
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkK
KyNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EICgoRU5BQkxFKENP
TVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkpICYmICFkZWZpbmVkKF9f
bGx2bV9fKSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNTQ3LDE3ICs1NDcsNDEgQEAg
SW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKIHsKIH0KIAotdm9pZCBJbnRlcnByZXRlcjo6aW5p
dGlhbGl6ZShib29sIGNhblVzZUpJVCkKK0ludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIoKQogewot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkK
KyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICBkZWxldGVbXSBtX29wY29kZVRhYmxlOworI2Vu
ZGlmCit9CisKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRhdGEqIGxsaW50
RGF0YSwgYm9vbCBjYW5Vc2VKSVQpCit7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQ
UkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQ
UkVURVIpCisgICAgLy8gSGF2aW5nIExMSW50IGVuYWJsZWQsIGJ1dCBub3QgYmVpbmcgYWJsZSB0
byB1c2UgdGhlIEpJVCwgYW5kIG5vdCBoYXZpbmcKKyAgICAvLyBhIGNvbXB1dGVkIGdvdG8gaW50
ZXJwcmV0ZXIsIGlzIG5vdCBzdXBwb3J0ZWQuIE5vdCBiZWNhdXNlIHdlIGNhbm5vdAorICAgIC8v
IHN1cHBvcnQgaXQsIGJ1dCBiZWNhdXNlIEkgZGVjaWRlZCB0byBkcmF3IHRoZSBsaW5lIGF0IHRo
ZSBudW1iZXIgb2YKKyAgICAvLyBwZXJtdXRhdGlvbnMgb2YgZXhlY3V0aW9uIGVuZ2luZXMgdGhh
dCBJIHdhbnRlZCB0aGlzIGNvZGUgdG8gZ3Jvay4KKyAgICBBU1NFUlQoY2FuVXNlSklUKTsKKyNl
bmRpZgogICAgIGlmIChjYW5Vc2VKSVQpIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1f
b3Bjb2RlVGFibGUgPSBsbGludERhdGEtPm9wY29kZU1hcCgpOworICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQorICAgICAgICAgICAgbV9vcGNvZGVJRFRhYmxl
LmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworI2Vsc2UK
ICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0aW5h
dGlvbnMgZm9yIG9wY29kZXMuCiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlID0gYml0d2lz
ZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpKTsKICAgICAgICAgICAgIG1f
b3Bjb2RlVGFibGVbaV0gPSBvcGNvZGU7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0gZWxzZSB7
CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbmV3IE9wY29kZVtu
dW1PcGNvZGVJRHNdOworI2VuZGlmCiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRpYWxpemVB
bmRSZXR1cm4sIDAsIDApOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1PcGNvZGVJRHM7ICsraSkKQEAgLTY2Nyw5ICs2OTEsMTEgQEAgdm9pZCBJbnRlcnByZXRlcjo6
ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbQogCiBib29sIEludGVycHJldGVyOjppc09wY29kZShPcGNv
ZGUgb3Bjb2RlKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lm
IEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYg
IUVOQUJMRShMTElOVCkKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG9wY29k
ZSA+PSAwICYmIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihv
cGNvZGUpKSA8PSBvcF9lbmQ7CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2RlICE9IEhhc2hUcmFp
dHM8T3Bjb2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJhaXRzPE9wY29kZT46
OmlzRGVsZXRlZFZhbHVlKG9wY29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJRFRhYmxlLmNvbnRh
aW5zKG9wY29kZSk7CkBAIC03MjYsMTEgKzc1MiwxMSBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRl
cnByZXRlcjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAxLgogI2lmIEVOQUJM
RShKSVQpICYmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBpZiAoY2FsbGVyRnJhbWUtPmdsb2Jh
bERhdGEoKS5jYW5Vc2VKSVQoKSkKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1l
LT5yZXR1cm5QQygpKTsKICAgICBlbHNlCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJs
b2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZWxpZiBF
TkFCTEUoSklUKQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNl
dChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2Nr
LT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNl
bHNlCiAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxG
cmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbmRpZgpAQCAtNTE2NiwxMCArNTE5MiwxMCBAQCB2
b2lkIEludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVy
blZQQygpKTsKICNpZiBFTkFCTEUoSklUKQogICAgIGVsc2UKLSAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMo
KSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9m
ZnNldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYKICNlbHNlCi0g
ICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxG
cmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRp
ZgogICAgIGxpbmVOdW1iZXIgPSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29k
ZU9mZnNldChieXRlY29kZU9mZnNldCAtIDEpOwogICAgIHNvdXJjZUlEID0gY2FsbGVyQ29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxMDQ4NjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1
ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkxMSW50RGF0
YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgogCkBA
IC00NSw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0
YWJsZTsKICAgICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0Owor
ICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0
YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKQEAg
LTkwLDE5ICs5MiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEludGVycHJldGVy
IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVuZCBjbGFz
cyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQgY2xhc3MgSklUOwog
ICAgIHB1YmxpYzoKICAgICAgICAgSW50ZXJwcmV0ZXIoKTsKKyAgICAgICAgfkludGVycHJldGVy
KCk7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQpOwor
ICAgICAgICB2b2lkIGluaXRpYWxpemUoTExJbnQ6OkRhdGEqLCBib29sIGNhblVzZUpJVCk7CiAK
ICAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKSB7IHJldHVybiBtX3JlZ2lzdGVy
RmlsZTsgfQogICAgICAgICAKICAgICAgICAgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCBpZCkK
ICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwotI2lmIEVOQUJM
RShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lO
VEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVU
YWJsZVtpZF07CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIGlkOwpAQCAtMTEyLDcgKzExNiwx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoT3Bjb2Rl
IG9wY29kZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkK
KyAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKKyAgICAgICAgICAgIHJldHVy
biBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09U
T19JTlRFUlBSRVRFUikKICAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKICAg
ICAgICAgICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSk7CkBAIC0xMjIs
NiArMTI5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG9wY29kZTsK
ICNlbmRpZgogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGVuYWJsZWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9lbmFibGVkOworICAgICAgICB9CiAKICAgICAg
ICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCkBAIC0xODksNyArMjAxLDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSBtX3JlZ2lzdGVyRmlsZTsKICAgICAgICAg
Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5U
KQorICAgICAgICBPcGNvZGUqIG1fb3Bjb2RlVGFibGU7IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bj
b2RlIGZvciBjb21waWxpbmcKKyAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29w
Y29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZwor
I2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgIE9wY29kZSBt
X29wY29kZVRhYmxlW251bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bjb2RlIGZv
ciBjb21waWxpbmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29wY29kZUlE
VGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVy
RmlsZS5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAgICBjbGFzcyBE
RkdDb2RlQmxvY2tzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGNs
YXNzIFJlZ2lzdGVyRmlsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlZ2lzdGVy
RmlsZSk7CkBAIC04MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAg
ICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgICAgICAKICAgICAgICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIqKTsKICAgICAgICAg
dm9pZCByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9pZCBhZGRUb0NvbW1pdHRl
ZEJ5dGVDb3VudChsb25nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENh
bGxSZXR1cm5WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKwor
I2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIklubGluZUFTTS5oIgorI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNWYWx1ZUlubGluZU1ldGhvZHMuaCIKKyNpbmNsdWRl
ICJTY29wZUNoYWluLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitleHRlcm4gIkMiIEVuY29kZWRK
U1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUoKTsKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9P
UFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7CisK
KyNpZiBDUFUoWDg2XzY0KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgorICAgICJtb3YgJXIxMywg
JXJkaVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUoWDg2KQorYXNtICgK
KyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00
MCglZWRpKSwgJWVkaVxuIgorICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgorICAgICJqbXAgIiBT
WU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3Rh
dGUpICJcbiIKKyk7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKK2FzbSAoCisiLnRleHQiICJcbiIK
KyIuYWxpZ24gMiIgIlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgor
Ii50aHVtYiIgIlxuIgorIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICI6IiAiXG4iCisgICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgorICAgICJjcHkgcjAsIHI1
IiAiXG4iCisgICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZW5kaWYKKworZXh0ZXJuICJDIiBFbmNv
ZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVy
blZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0
Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorI2RlZmluZSBIb3N0Q2FsbFJldHVyblZhbHVlX2gK
KworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYu
aCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENBTExJTkdfQ09OVkVOVElPTl9J
U19TVERDQUxMCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIENERUNMCisj
ZWxzZQorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTgorI2VuZGlmCisKK25h
bWVzcGFjZSBKU0MgeworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJO
X1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Cit9CisKKyNlbmRpZiAvLyBI
b3N0Q2FsbFJldHVyblZhbHVlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAko
cmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmlsZV93aWxsX2NhbGwpCiAgICAg
ICAgIERFRklORV9PUChvcF9wdXNoX25ld19zY29wZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1
c2hfc2NvcGUpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Ogor
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVG
SU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pbmRleCkK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCkBAIC00ODcsNiArNDg5LDggQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX3Bvc3RfaW5jKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2RlYykK
ICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9pbmMpCisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9p
ZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2dsb2JhbCkKQEAgLTY5MCw3ICs2OTQsNyBAQCBK
SVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAgICAgICAgIGluZm8uY2Fs
bFJldHVybkxvY2F0aW9uID0gbV9jb2RlQmxvY2stPnN0cnVjdHVyZVN0dWJJbmZvKG1fbWV0aG9k
Q2FsbENvbXBpbGF0aW9uSW5mb1tpXS5wcm9wZXJ0eUFjY2Vzc0luZGV4KS5jYWxsUmV0dXJuTG9j
YXRpb247CiAgICAgfQogCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQp
IHx8IEVOQUJMRShMTElOVCkKICAgICBpZiAobV9jYW5CZU9wdGltaXplZCkgewogICAgICAgICBD
b21wYWN0SklUQ29kZU1hcDo6RW5jb2RlciBqaXRDb2RlTWFwRW5jb2RlcjsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgbV9sYWJlbHMu
c2l6ZSgpOyArK2J5dGVjb2RlT2Zmc2V0KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENvZGUuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEpJVENvZGUoKSB7IH0KICNlbmRpZgogICAgIHB1YmxpYzoKLSAgICAgICAgZW51
bSBKSVRUeXBlIHsgSG9zdENhbGxUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OworICAgICAg
ICBlbnVtIEpJVFR5cGUgeyBOb25lLCBIb3N0Q2FsbFRodW5rLCBJbnRlcnByZXRlclRodW5rLCBC
YXNlbGluZUpJVCwgREZHSklUIH07CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgSklUVHlwZSBi
b3R0b21UaWVySklUKCkKICAgICAgICAgewpAQCAtNjYsOCArNjYsMTkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICByZXR1cm4gREZHSklUOwogICAgICAgICB9CiAgICAgICAgIAorICAg
ICAgICBzdGF0aWMgYm9vbCBpc09wdGltaXppbmdKSVQoSklUVHlwZSBqaXRUeXBlKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBERkdKSVQ7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIHN0YXRpYyBib29sIGlzQmFzZWxpbmVDb2RlKEpJVFR5cGUgaml0VHlw
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gSW50ZXJwcmV0ZXJU
aHVuayB8fCBqaXRUeXBlID09IEJhc2VsaW5lSklUOworICAgICAgICB9CisgICAgICAgIAogI2lm
IEVOQUJMRShKSVQpCiAgICAgICAgIEpJVENvZGUoKQorICAgICAgICAgICAgOiBtX2ppdFR5cGUo
Tm9uZSkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTc1LDYgKzg2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICA6IG1fcmVmKHJlZikKICAgICAgICAgICAgICwgbV9qaXRUeXBl
KGppdFR5cGUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChqaXRUeXBlICE9IE5vbmUp
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yICEoKSBjb25zdApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCShyZXZpc2lvbiAxMDQ4NjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMywxNSArMzMsMjEgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkxMSW50RW50
cnlwb2ludHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVC
bG9ja1R5cGU+CiBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2Rl
LCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CisgICAgaWYgKGppdFR5cGUgPT0gY29kZUJs
b2NrLT5nZXRKSVRUeXBlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAogICAgIGlmICgh
ZXhlYy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29s
IGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklU
KQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZShleGVjLCBjb2RlQmxvY2su
Z2V0KCksIGppdENvZGUpOwpAQCAtNTUsMTAgKzYxLDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGls
ZUlmQXBwcm9wcmlhdGUoRXhlYwogICAgICAgICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNv
bXBpbGUoJmV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLmdldCgpKTsKICAgICB9Ci0jaWYg
IUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRlY29kZUdlbmVyYXRvcjo6ZHVt
cHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNj
YXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgorICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNv
ZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0
Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwogICAgIAogICAgIHJldHVybiB0cnVlOwpA
QCAtNjYsMTAgKzY5LDE1IEBAIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEV4
ZWMKIAogaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYg
aml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNo
YXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkK
IHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgCiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+
Z2xvYmFsRGF0YSgpOwogICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgCisgICAgY29kZUJsb2NrLT51bmxpbmtJbmNvbWluZ0NhbGxzKCk7
CisgICAgCiAgICAgYm9vbCBkZmdDb21waWxlZCA9IGZhbHNlOwogICAgIGlmIChqaXRUeXBlID09
IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAgZGZnQ29tcGlsZWQgPSBERkc6OnRyeUNvbXBpbGVG
dW5jdGlvbihleGVjLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlD
aGVjayk7CkBAIC04NCwxMSArOTIsNyBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25J
ZkFwcHJvcHJpCiAgICAgICAgIH0KICAgICAgICAgaml0Q29kZSA9IEpJVDo6Y29tcGlsZSgmZ2xv
YmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCAmaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKICAgICB9
Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRlY29kZUdlbmVyYXRv
cjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNv
ZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgotICAgIAorICAgIGNvZGVCbG9jay0+
aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2RlQmxvY2stPnNl
dEpJVENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKICAgICAKICAgICByZXR1
cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25z
LmNwcAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRF
eGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBFeGNlcHRpb25I
YW5kbGVyIGdlbmVyaWNUaHJvdyhKU0dsb2JhbERhCiAKIEV4Y2VwdGlvbkhhbmRsZXIgaml0VGhy
b3coSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVjU3RhdGUqIGNhbGxGcmFtZSwgSlNWYWx1
ZSBleGNlcHRpb25WYWx1ZSwgUmV0dXJuQWRkcmVzc1B0ciBmYXVsdExvY2F0aW9uKQogewotICAg
IHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1
ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZmF1bHRMb2NhdGlvbikp
OworICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBleGNlcHRp
b25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1l
LCBmYXVsdExvY2F0aW9uKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2NCw0NSArMjE2NCwxMyBAQCBE
RUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotaW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+
Y2FsbGVlKCkpOwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICBD
b2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0
ZWRCeXRlY29kZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAgICAvLyBUaGlz
IGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJv
IGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+
Z3JvdyhjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5
IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRz
IHdpdGggdW5kZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVnaXN0ZXIqIHNy
YyA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGNhbGxGcmFt
ZS0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGludCBlbmQgPSAtQ2Fs
bEZyYW1lOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZvciAo
aSA9IC0xOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07Ci0KLSAgICBl
bmQgLT0gZGVsdGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0g
PSBqc1VuZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJh
bWU6OmNyZWF0ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1lIDw9IHJlZ2lz
dGVyRmlsZS0+ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0KIERFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklU
X1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBz
dGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJp
dHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2Fs
bCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5
Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwp
OwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25G
cm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJF
U1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsK
IApAQCAtMjIxNSw3ICsyMTgzLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2Nv
bnN0cnVjdAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFt
ZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJh
bWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBDYWxs
RnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxs
RnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBp
ZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2Fs
bDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDEw
NDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgSlNJbnRlcmZhY2VKSVRfaAog
I2RlZmluZSBKU0ludGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25z
LmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVk
ZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2RlZmluZSBMTElOVF9F
WEVDVVRJT05fVFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFDSU5HIDAKKworI2Vu
ZGlmIC8vIExMSW50Q29tbW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTExJbnREYXRhLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRl
ICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNs
dWRlICJPcGNvZGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK0Rh
dGE6OkRhdGEoKQorICAgIDogbV9leGNlcHRpb25JbnN0cnVjdGlvbnMobmV3IEluc3RydWN0aW9u
W21heE9wY29kZUxlbmd0aCArIDFdKQorICAgICwgbV9vcGNvZGVNYXAobmV3IE9wY29kZVtudW1P
cGNvZGVJRHNdKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsg
MTsgKytpKQorICAgICAgICBtX2V4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lKTsK
KyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBtX29wY29kZU1hcFtvcGNvZGVd
ID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUpOworICAgIEZPUl9FQUNIX09Q
Q09ERV9JRChPUENPREVfRU5UUlkpOworI3VuZGVmIE9QQ09ERV9FTlRSWQorfQorCitEYXRhOjp+
RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgZGVs
ZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisj
ZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludERhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RGF0YV9oCisjZGVm
aW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFt
ZXNwYWNlIExMSW50IHsKKworI2lmIEVOQUJMRShMTElOVCkKK2NsYXNzIERhdGEgeworcHVibGlj
OgorICAgIERhdGEoKTsKKyAgICB+RGF0YSgpOworICAgIAorICAgIEluc3RydWN0aW9uKiBleGNl
cHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5z
dHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgfQorcHJpdmF0ZToKKyAgICBJbnN0cnVj
dGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgT3Bjb2RlKiBtX29wY29kZU1hcDsK
K307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQpCisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlmCisKK2NsYXNzIERhdGEgeworcHVibGljOgor
ICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFw
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK307CisKKyNp
ZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgor
CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQK
KworI2VuZGlmIC8vIExMSW50RGF0YV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEVudHJ5cG9pbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIK
KworI2luY2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNs
dWRlICJMTEludFRodW5rcy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKwor
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25FbnRy
eXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2sp
Cit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGlmIChraW5k
ID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1
bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9wcm9sb2d1ZSkpKSk7CisgICAgICAgICAgICBhcml0eUNoZWNrID0gTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxs
X2FyaXR5X2NoZWNrKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgaml0Q29kZSA9IEpJ
VENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5h
Z2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkpKSk7CisgICAgICAgIGFyaXR5Q2hl
Y2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaykpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIGppdENvZGUg
PSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5r
R2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgICAgIGFyaXR5Q2hl
Y2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5r
R2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQo
a2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxE
YXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKSwg
SklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEu
Z2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvciku
Y29kZSgpOworfQorCit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklU
KCkpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZXZhbF9wcm9sb2d1ZSkpKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5n
ZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJU
aHVuayk7Cit9CisKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VK
SVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSkpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxE
YXRhLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRz
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVudHJ5cG9pbnRzX2gKKyNkZWZp
bmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5k
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFdmFsQ29kZUJsb2NrOworY2xhc3MgSklU
Q29kZTsKK2NsYXNzIEpTR2xvYmFsRGF0YTsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjsK
K2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKK2NsYXNzIFByb2dyYW1Db2RlQmxvY2s7CisK
K25hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50KEpTR2xvYmFs
RGF0YSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIEpJVENvZGUmLCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHImIGFyaXR5Q2hlY2spOwordm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEm
LCBKSVRDb2RlJik7Cit2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJ
VENvZGUmKTsKKworaW5saW5lIHZvaWQgZ2V0RW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEV2YWxDb2RlQmxvY2sqLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGdldEV2YWxF
bnRyeXBvaW50KGdsb2JhbERhdGEsIGppdENvZGUpOworfQorCitpbmxpbmUgdm9pZCBnZXRFbnRy
eXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvZ3JhbUNvZGVCbG9jayosIEpJVENv
ZGUmIGppdENvZGUpCit7CisgICAgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0
Q29kZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJ
bnRFbnRyeXBvaW50c19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
eGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKworI2luY2x1ZGUgIkNh
bGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkluc3RydWN0aW9u
LmgiCisjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgi
CisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIExMSW50IHsKKwordm9pZCBpbnRlcnByZXRlclRocm93KEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwor
I2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24g
JXMuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAg
ICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBl
eGVjLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZXhlYywgZXhlYy0+cmV0dXJuUEMoKSkp
OworfQorCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5sbGludERhdGEu
ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93
KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJ
TkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAocmV0dXJuVG9UaHJvdykuXG4i
LCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5l
cmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4
ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAKKyAgICByZXR1
cm4gZ2xvYmFsRGF0YS0+bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworfQorCit2
b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAg
ICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExM
SU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKGNh
bGxUb1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNl
bmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNl
cHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOwor
ICAgIAorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19kdXJpbmdf
Y2FsbF90cmFtcG9saW5lKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25z
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmlu
ZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOwor
CituYW1lc3BhY2UgTExJbnQgeworCisvLyBKdXN0IHRocm93IHRoZSBjdXJyZW50bHkgYWN0aXZl
IGV4Y2VwdGlvbiBpbiB0aGUgY29udGV4dCBvZiB0aGlzIGV4ZWMgc3RhdGUKKy8vIGFuZCBzZXQg
dXAgYWxsIG5lY2Vzc2FyeSBzdGF0ZS4KK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvdyhFeGVjU3RhdGUq
KTsKKworLy8gVGVsbHMgeW91IHdoZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0dXJu
LXRvLXRocm93LCBhZnRlciB5b3UndmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBpbmZvcm1hdGlv
biBuZWVkZWQgdG8gdGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Ro
cm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0aGUgY3VycmVu
dCBQQyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlvdSBh
IFBDCisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNo
IHdoZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFu
ICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBleGNl
cHRpb24gaGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhjZXB0
aW9uIGhhbmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhhdCBQ
QyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVhZCBl
eGNlcHRpb24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5
CisvLyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRl
KiwgSW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8g
YSBjYWxsIHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24q
KTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludEV4Y2Vw
dGlvbnNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVy
cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRI
ZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzM0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJMTEludEhlbHBlcnMuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgor
I2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2lu
Y2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgor
I2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1
ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIK
KyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdGF0aWNT
Y29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5o
IgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgi
CisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMu
aCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKKyNkZWZpbmUgTExJTlRf
T1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRSKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorI2RlZmlu
ZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5vcGVyYW5kKSkKKworI2Rl
ZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsgICAgICAgXAorICAgICAg
ICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
ICAgIHZvaWQqIGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
IHZvaWQqIGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSBwYWly
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50NjRfdCBp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IF9fcnRfdTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5hID0gZmly
c3Q7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5iID0gc2Vjb25k
OyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19ydF91Lmk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5U
X0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykKKworI2RlZmluZSBMTElOVF9U
SFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBKU0dsb2JhbERhdGEmIF9fdF9nbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOyAg
ICAgICAgXAorICAgICAgICBfX3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9U
aHJvdyk7ICAgICAgICAgICAgXAorICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUg
KGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpIGRvIHsgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmdsb2JhbERhdGEoKS5leGNl
cHRpb24pKSB7ICAgXAorICAgICAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5U
X0VORCgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUg
TExJTlRfQlJBTkNIKG9wY29kZSwgY29uZGl0aW9uKSBkbyB7ICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgYm9vbCBfX2JfY29uZGl0aW9uID0gKGNvbmRpdGlvbik7ICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9fYl9jb25kaXRpb24pICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9
IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsgICAgICAgIFwKKyAgICAg
ICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bjb2RlKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2Rl
ZmluZSBMTElOVF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAgICAgXAorICAgICAgICBK
U1ZhbHVlIF9fcl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAorICAgICAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9PUCgxKSA9
IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExM
SU5UX0NBTExfRU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RXTygoY2Fs
bFRhcmdldCksIChleGVjKSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBl
eGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUq
IF9fY3RfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBJbnN0cnVjdGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fY3RfZ2xvYmFsRGF0YSA9
IChfX2N0X2V4ZWMpLT5nbG9iYWxEYXRhKCk7ICAgICAgXAorICAgICAgICBfX2N0X2dsb2JhbERh
dGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3RfZXhlYywgY2FsbFRvVGhyb3coX19jdF9leGVj
LCBfX2N0X3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxM
X0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBFeGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jY2VfcGMgPSAocGMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFko
X19jY2VfZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2Nj
ZV9leGVjLCBfX2NjZV9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJ
TlRfQ0FMTF9SRVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMgPSAo
cGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9pZCog
X19jcl9jYWxsVGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19jcl9leGVjLT5jYWxsZXJG
cmFtZSgpLCBfX2NyX3BjKTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NyX2V4
ZWMsIF9fY3JfY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxz
ZSkKKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhl
Y1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5k
KQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV1LCBvcCMldTogVHJhY2Uo
JWQpOiAlZDogJWRcbiIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAg
ICBleGVjLAorICAgICAgICAgICBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJvbVdoZXJlLAorICAgICAg
ICAgICBvcGVyYW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQpOworICAgIExM
SU5UX0VORCgpOworfQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2Vf
dmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGlu
dCBvcGVyYW5kKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKG9wZXJhbmQpLmpz
VmFsdWUoKTsKKyAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgZGVz
Y3JpcHRvci5hc0ludDY0ID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICBwcmludGYoIiVw
IC8gJXA6IGV4ZWN1dGluZyBiYyMldSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkOiAlMDh4OiUw
OHgiLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAg
ICAgICAgICAgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwK
KyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChw
Y1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGZyb21XaGVyZSwKKyAgICAgICAgICAgb3BlcmFu
ZCwKKyAgICAgICAgICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kLAorICAgICAgICAgICBkZXNjcmlw
dG9yLmFzQml0cy50YWcsCisgICAgICAgICAgIGRlc2NyaXB0b3IuYXNCaXRzLnBheWxvYWQpOwor
I2lmbmRlZiBOREVCVUcKKyAgICBwcmludGYoIjogJXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsK
KyNlbmRpZgorICAgIHByaW50ZigiXG4iKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiBw
cm9sb2d1ZS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAg
IEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7Cisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVG
b3Ioa2luZCk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwgZXhl
Y3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZVJl
Z2lzdGVycyA9ICV1LlxuIiwKKyAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBjb21tZW50LCBj
YWxsZWUsIGV4ZWN1dGFibGUsCisgICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxs
KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBwcm9sb2d1ZSIsIENv
ZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJh
Y2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9u
UHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JDb25zdHJ1Y3QpOwor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNr
X2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBhcml0
eSBjaGVjayIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVu
Y3Rpb25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IGFyaXR5IGNoZWNrIiwgQ29kZUZvckNvbnN0
cnVjdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKQor
eworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV1LCAiLAorICAgICAgICAgICBl
eGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgcGMgLSBleGVj
LT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisjaWZuZGVmIE5ERUJVRwor
ICAgIHByaW50ZigiJXMsICIsIG9wY29kZU5hbWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpXSk7CisjZWxzZQorICAgIHByaW50Zigi
b3AjJXUsICIsIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNb
MF0udS5vcGNvZGUpKTsKKyNlbmRpZgorICAgIHByaW50Zigic2NvcGUgJXBcbiIsIGV4ZWMtPnNj
b3BlQ2hhaW4oKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHNw
ZWNpYWxfdHJhY2UpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBj
YXNlIGJjIyV1LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAorICAgICAgICAgICBleGVjLT5j
b2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgcGMgLSBleGVjLT5jb2Rl
QmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFs
RGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAg
ICAgIGV4ZWMtPnJldHVyblBDKCkudmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2lu
bGluZSBib29sIHNob3VsZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gWW91IGNhbiBt
b2RpZnkgdGhpcyB0byB0dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0aGUgd29y
bGQuCisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKQoreworICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7
CisgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAg
ICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgZXhlYy0+Y29kZUJsb2Nr
KCktPmppdENvbXBpbGUoZXhlYyk7CisgICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdFNvb24oKTsK
KyAgICBMTElOVF9SRVRVUk5fVFdPKGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRKSVRDb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGVudHJ5X29zcl9hcml0eUNoZWNrKQoreworICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7Cisg
ICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAg
TExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgZXhlYy0+Y29kZUJsb2NrKCkt
PmppdENvbXBpbGUoZXhlYyk7CisgICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdFNvb24oKTsKKyAg
ICBMTElOVF9SRVRVUk5fVFdPKGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRKSVRDb2RlV2l0aEFyaXR5
Q2hlY2soKS5leGVjdXRhYmxlQWRkcmVzcygpLCBleGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0wobG9vcF9vc3IpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKKyAgICAKKyAgICBpZiAoIXNob3VsZEpJVChleGVjKSkgeworICAgICAgICBjb2RlQmxv
Y2stPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4
ZWMpOworICAgIH0KKyAgICAKKyAgICBjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYyk7CisgICAg
Y29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgCisgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklU
VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAKKyAgICBWZWN0b3I8Qnl0ZWNv
ZGVBbmRNYWNoaW5lT2Zmc2V0PiBtYXA7CisgICAgY29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRl
Y29kZShtYXApOworICAgIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCogbWFwcGluZyA9IGJpbmFy
eVNlYXJjaDxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQsIHVuc2lnbmVkLCBCeXRlY29kZUFuZE1h
Y2hpbmVPZmZzZXQ6OmdldEJ5dGVjb2RlSW5kZXg+KG1hcC5iZWdpbigpLCBtYXAuc2l6ZSgpLCBw
YyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgQVNTRVJUKG1hcHBp
bmcpOworICAgIEFTU0VSVChtYXBwaW5nLT5tX2J5dGVjb2RlSW5kZXggPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisgICAg
CisgICAgdm9pZCoganVtcFRhcmdldCA9IGNvZGVCbG9jay0+Z2V0SklUQ29kZSgpLmV4ZWN1dGFi
bGVBZGRyZXNzQXRPZmZzZXQobWFwcGluZy0+bV9tYWNoaW5lQ29kZU9mZnNldCk7CisgICAgQVNT
RVJUKGp1bXBUYXJnZXQpOworICAgIAorICAgIExMSU5UX1JFVFVSTl9UV08oanVtcFRhcmdldCwg
ZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpCit7CisgICAgaWYgKHNob3Vs
ZEpJVChleGVjKSkgeworICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+aml0Q29tcGlsZShleGVj
KTsKKyAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdFNvb24oKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKQorewor
I2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDaGVja2luZyBzdGFjayBoZWln
aHQgd2l0aCBleGVjID0gJXAuXG4iLCBleGVjKTsKKyAgICBwcmludGYoIkNvZGVCbG9jayA9ICVw
LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAgIHByaW50ZigiTnVtIGNhbGxlZSByZWdpc3Rl
cnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7Cisg
ICAgcHJpbnRmKCJOdW0gdmFycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtVmFy
cyk7CisjZW5kaWYKKyAgICBpZiAoVU5MSUtFTFkoIWV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnBy
ZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJs
b2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5j
YWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93KGV4
ZWMpOworICAgICAgICBwYyA9IHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oZXhlYyk7
CisgICAgfQorICAgIExMSU5UX0VORF9JTVBMKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9u
U2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJw
cmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ2FsbCk7CisgICAgaWYgKCFuZXdFeGVjKSB7
CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9i
YWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAg
ICAgICBpbnRlcnByZXRlclRocm93KGV4ZWMpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGJp
dHdpc2VfY2FzdDx2b2lkKj4oMSksIGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9SRVRVUk5fVFdP
KDAsIG5ld0V4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0X2Fy
aXR5Q2hlY2spCit7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjph
cml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lz
dGVyRmlsZSgpLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAg
ICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEo
KS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGlu
dGVycHJldGVyVGhyb3coZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9j
YXN0PHZvaWQqPigxKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3
RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikK
K3sKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ3JlYXRpbmcgYW4gYWN0
aXZhdGlvbiFcbiIpOworI2VuZGlmCisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gSlNB
Y3RpdmF0aW9uOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLCBzdGF0aWNfY2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihleGVjLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkp
KTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChhY3Rp
dmF0aW9uKSk7CisgICAgTExJTlRfUkVUVVJOKEpTVmFsdWUoYWN0aXZhdGlvbikpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKK3sKKyAgICBMTElOVF9S
RVRVUk4oSlNWYWx1ZShBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAgICBK
U0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAg
IAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7
CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRh
KGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlm
CisgICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgSlNWYWx1ZSBwcm90byA9IExM
SU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAocHJvdG8uaXNPYmplY3QoKSkKKyAgICAgICAg
c3RydWN0dXJlID0gYXNPYmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRh
KCkpOworICAgIGVsc2UKKyAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCkt
Pmdsb2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAKKyAgICBMTElOVF9S
RVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpCit7CisgICAgSlNWYWx1ZSB2MSA9IExM
SU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQodjEuaXNQcmltaXRpdmUoKSk7CisgICAg
TExJTlRfUkVUVVJOKHYxLnRvVGhpc09iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXdfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0
eU9iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkp
Cit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxK
U1ZhbHVlKj4oJkxMSU5UX09QKDIpKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQoreworICAgIExMSU5UX1JFVFVSTihj
b25zdHJ1Y3RBcnJheShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIocGNb
Ml0udS5vcGVyYW5kKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfcmVnZXhwKQoreworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29kZUJs
b2NrKCktPnJlZ2V4cChwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1ZhbGlk
KCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlk
IGZsYWcgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9SRVRV
Uk4oUmVnRXhwT2JqZWN0OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0
dXJlKCksIHJlZ0V4cCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUxMSU5UX09QKDIpLmpzVmFsdWUoKS50b0Jvb2xl
YW4oZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2VxKQoreworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbmVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6
OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKQoreworICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oIUpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9sZXNzKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPHRydWU+KGV4ZWMs
IExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3Jl
YXRlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczxmYWxzZT4oZXhlYywg
TExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJlX2luYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1
ZSgpLnRvTnVtYmVyKGV4ZWMpICsgMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJlX2RlYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1
ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cG9zdF9pbmMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCArIDEpOwor
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Bvc3RfZGVjKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1
bHQgLSAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVy
KC1MTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2FkZCkKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2MiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAg
IAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUcnlpbmcgdG8gYWRkICVz
IiwgdjEuZGVzY3JpcHRpb24oKSk7CisgICAgcHJpbnRmKCIgdG8gJXMuXG4iLCB2Mi5kZXNjcmlw
dGlvbigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICh2MS5pc1N0cmluZygpKSB7CisgICAgICAg
IExMSU5UX1JFVFVSTigKKyAgICAgICAgICAgIHYyLmlzU3RyaW5nKCkKKyAgICAgICAgICAgID8g
anNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEpLCBhc1N0cmluZyh2MikpCisgICAgICAgICAgICA6
IGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9QcmltaXRpdmVTdHJpbmcoZXhlYykp
KTsKKyAgICB9CisgICAgCisgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkK
KyAgICAgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHYxLmFzTnVtYmVyKCkgKyB2Mi5hc051bWJl
cigpKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpzQWRkU2xvd0Nhc2UoZXhlYywgdjEsIHYy
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICogTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3N1YikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KQorewor
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJl
cihleGVjKSAvIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKGZtb2QoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyksIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbHNoaWZ0KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIDw8IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRv
VUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50
MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpID4+IExMSU5U
X09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9iaXRhbmQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgJiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50
b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3IpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50
MzIoZXhlYykgfCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKQoreworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIF4gTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2JpdG5vdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIofkxMSU5UX09QKDIp
LmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9jaGVja19oYXNfaW5zdGFuY2UpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsID0gTExJTlRfT1Ao
MikuanNWYWx1ZSgpOworI2lmbmRlZiBOREVCVUcKKyAgICBUeXBlSW5mbyB0eXBlSW5mbyhVbnNw
ZWNpZmllZFR5cGUpOworICAgIEFTU0VSVCghYmFzZVZhbC5pc09iamVjdCgpCisgICAgICAgICAg
IHx8ICEodHlwZUluZm8gPSBhc09iamVjdChiYXNlVmFsKS0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKTsKKyNlbmRpZgorICAgIExMSU5UX1RIUk9XKGNy
ZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4ZWMsICJpbnN0YW5jZW9mIiwgYmFzZVZhbCkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZikKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbnN0YW5jZU9mU2xvdyhleGVjLCBMTElO
VF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgTExJTlRfT1AoNCkuanNW
YWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKQoreworICAg
IExMSU5UX1JFVFVSTihqc1R5cGVTdHJpbmdGb3JWYWx1ZShleGVjLCBMTElOVF9PUCgyKS5qc1Zh
bHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCkKK3sK
KyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbih2LmlzQ2VsbCgpID8gdi5hc0NlbGwoKS0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpIDogdi5pc1VuZGVmaW5lZCgpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oTExJTlRfT1AoMikuanNWYWx1ZSgpLmlzQm9vbGVhbigpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihMTElOVF9PUCgyKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4o
aXNKU1N0cmluZyhMTElOVF9PUCgyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pc19vYmplY3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lz
T2JqZWN0VHlwZShMTElOVF9PUCgyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pc19mdW5jdGlvbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpz
SXNGdW5jdGlvblR5cGUoTExJTlRfT1AoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25T
bG93UGF0aHM6Om9wSW4oZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5q
c1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKQorewor
ICAgIExMSU5UX1JFVFVSTihDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZShleGVjLCBleGVjLT5j
b2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApCit7CisgICAgTExJTlRfUkVUVVJOKAorICAg
ICAgICBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVNraXAoCisgICAgICAgICAgICBleGVjLAor
ICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5k
KSwKKyAgICAgICAgICAgIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5pc0dsb2Jh
bE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICAKKyAgICBB
U1NFUlRfVU5VU0VEKHN0cnVjdHVyZSwgc3RydWN0dXJlICE9IGdsb2JhbE9iamVjdC0+c3RydWN0
dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlm
aWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3QpOworICAg
IAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xv
dCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50
KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmICFnbG9iYWxPYmplY3Qt
PnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiBz
bG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICBwY1szXS51LnN0
cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAg
ICAgICAgIHBjWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgTExJTlRfUkVUVVJOKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIExMSU5UX1RI
Uk9XKGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSkKK3sKKyAgICBJZGVudGlmaWVyJiBp
ZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7Cisg
ICAgaWYgKHBjWzNdLnUub3BlcmFuZCkgeworICAgICAgICBKU1ZhbHVlIGJhc2UgPSBKU0M6OnJl
c29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIHRydWUpOworICAgICAg
ICBpZiAoIWJhc2UpCisgICAgICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFs
aWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgICAgICBMTElO
VF9SRVRVUk4oYmFzZSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihKU0M6OnJlc29s
dmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIGZhbHNlKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKQoreworICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIFBy
b3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5j
b2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghb2JqZWN0
LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKQorICAgICAgICBMTElOVF9USFJP
VyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJp
bmcoKSkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cmVzb2x2ZV93aXRoX2Jhc2UpCit7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0
aHM6Om9wUmVzb2x2ZVdpdGhCYXNlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVy
KHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQoreworICAgIEpTVmFs
dWUgcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVXaXRoVGhpcyhleGVjLCBleGVj
LT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7
CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlf
aWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAg
ICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJh
bmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAg
IFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGJh
c2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOworICAgIExMSU5UX09QKDEpID0gcmVzdWx0OworCisgICAgaWYgKGJhc2VWYWx1ZS5pc0Nl
bGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkKKyAgICAgICAgJiYgc2xvdC5zbG90
QmFzZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAmJiBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgp
ID09IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFz
ZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1
cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUt
PnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKKyAgICAgICAgICAgIHBj
WzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCks
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBw
Y1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOwor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCit7CisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNv
ZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZh
bHVlID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VW
YWx1ZSk7CisgICAgTExJTlRfUkVUVVJOKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3Qp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCkKK3sKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlk
ZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBiYXNlVmFsdWUucHV0KGV4
ZWMsIGlkZW50LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAg
ICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFz
ZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1
cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUt
PnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkKKyAgICAgICAgICAgICYmIGJh
c2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChz
bG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CisgICAgICAgICAg
ICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIHN0cnVjdHVyZS0+cHJldmlv
dXNJRCgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IHN0cnVjdHVyZS0+cHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5
cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lk
Kj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAg
ICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4
ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJl
LT5wcmV2aW91c0lEKCkpOworICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBz
bG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAg
ICBwY1s2XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5n
bG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7Cisg
ICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IHN0cnVjdHVyZS0+cHJv
dG90eXBlQ2hhaW4oZXhlYyk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFpbik7Cisg
ICAgICAgICAgICAgICAgICAgIHBjWzddLnUuc3RydWN0dXJlQ2hhaW4uc2V0KAorICAgICAgICAg
ICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLCBjaGFpbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X29wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0
KAorICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVy
YW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gTExJTlRf
T1AoMikuanNWYWx1ZSgpLnRvT2JqZWN0KGV4ZWMpOworICAgIGJvb2wgY291bGREZWxldGUgPSBi
YXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVj
LCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSk7CisgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3Ry
aWN0TW9kZSgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVu
YWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4o
Y291bGREZWxldGUpKTsKK30KKworaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCit7CisgICAgaWYgKExJ
S0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7CisgICAg
ICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blBy
b3BlcnR5KGV4ZWMsIGFzU3RyaW5nKHN1YnNjcmlwdCktPnZhbHVlKGV4ZWMpKSkKKyAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIGlmIChzdWJzY3JpcHQuaXNVSW50
MzIoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAg
ICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2Fu
R2V0SW5kZXgoaSkpCisgICAgICAgICAgICByZXR1cm4gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0
SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNl
VmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKQorICAg
ICAgICAgICAgcmV0dXJuIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkp
OworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgaSk7CisgICAg
fQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5n
KGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBwcm9wZXJ0eSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKQoreworICAgIExMSU5UX1JFVFVS
TihnZXRCeVZhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9i
eV92YWwpCit7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7
CisgICAgaWYgKCFhcmd1bWVudHMpIHsKKyAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpj
cmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CisgICAgICAgIExMSU5UX09QKDIpID0gYXJndW1lbnRzOworICAgIH0KKyAgICAK
KyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgYXJndW1lbnRzLCBMTElOVF9PUCgzKS5q
c1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSkK
K3sKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgp
LCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3B1dF9ieV92YWwpCit7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xv
YmFsRGF0YSgpOworICAgIAorICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygxKS5q
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisg
ICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKKyAgICAgICAgdWludDMyX3Qg
aSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1
ZSkpIHsKKyAgICAgICAgICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1ZSk7
CisgICAgICAgICAgICBpZiAoanNBcnJheS0+Y2FuU2V0SW5kZXgoaSkpCisgICAgICAgICAgICAg
ICAganNBcnJheS0+c2V0SW5kZXgoZ2xvYmFsRGF0YSwgaSwgdmFsdWUpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5kZXgoanNBcnJheSwgZXhlYywg
aSwgdmFsdWUpOworICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgIH0KKyAgICAgICAg
aWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKQorICAgICAgICAgICAgJiYgYXNCeXRlQXJyYXko
YmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAgICAgICAgICAgIEpTQnl0ZUFycmF5
KiBqc0J5dGVBcnJheSA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAo
dmFsdWUuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4
KGksIHZhbHVlLmFzSW50MzIoKSk7CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICAg
ICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5hc051bWJlcigpKTsKKyAgICAg
ICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAg
ICBiYXNlVmFsdWUucHV0KGV4ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgTExJTlRfRU5EKCk7Cisg
ICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3Ry
aW5nKGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VW
YWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpCit7CisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIGJhc2VP
YmplY3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgCisgICAgSlNWYWx1ZSBzdWJz
Y3JpcHQgPSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7CisgICAgCisgICAgYm9vbCBjb3VsZERlbGV0
ZTsKKyAgICAKKyAgICB1aW50MzJfdCBpOworICAgIGlmIChzdWJzY3JpcHQuZ2V0VUludDMyKGkp
KQorICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0
ZVByb3BlcnR5QnlJbmRleChiYXNlT2JqZWN0LCBleGVjLCBpKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHko
ZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUo
KS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgcHJvcGVydHkpOworICAgIH0KKyAg
ICAKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1v
ZGUoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUg
dG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KGNvdWxkRGVsZXRlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5k
ZXgpCit7CisgICAgTExJTlRfT1AoMSkuanNWYWx1ZSgpLnB1dChleGVjLCBwY1syXS51Lm9wZXJh
bmQsIExMSU5UX09QKDMpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgx
KS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVj
dChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+
Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJ
TlRfT1AoMykuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxl
KCktPmRlZmluZUdldHRlcihiYXNlT2JqLCBleGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1Ao
MykuanNWYWx1ZSgpKSwgMCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wdXRfc2V0dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVl
KCkuaXNPYmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9P
UCgxKS5qc1ZhbHVlKCkpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2Nr
KCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMyku
anNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmlu
ZVNldHRlcihiYXNlT2JqLCBleGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1
ZSgpKSwgMCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qbXBfc2NvcGVzKQoreworICAgIHVuc2lnbmVkIGNvdW50ID0gcGNbMV0udS5vcGVyYW5kOwor
ICAgIFNjb3BlQ2hhaW5Ob2RlKiB0bXAgPSBleGVjLT5zY29wZUNoYWluKCk7CisgICAgd2hpbGUg
KGNvdW50LS0pCisgICAgICAgIHRtcCA9IHRtcC0+cG9wKCk7CisgICAgZXhlYy0+c2V0U2NvcGVD
aGFpbih0bXApOworICAgIHBjICs9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKQoreworICAgIExMSU5UX0JSQU5D
SChvcF9qdHJ1ZSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pmYWxzZSkKK3sKKyAgICBMTElOVF9CUkFOQ0go
b3BfamZhbHNlLCAhTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKQoreworICAgIExMSU5UX0JSQU5DSChv
cF9qbGVzcywganNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5s
ZXNzKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmxlc3MsICFqc0xlc3M8dHJ1ZT4oZXhlYywg
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0go
b3BfamdyZWF0ZXIsIGpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qbmdyZWF0ZXIpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlciwgIWpzTGVzczxm
YWxzZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKQoreworICAgIExM
SU5UX0JSQU5DSChvcF9qbGVzc2VxLCBqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2pubGVzc2VxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmxlc3NlcSwg
IWpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJl
cSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXJlcSwganNMZXNzRXE8ZmFsc2U+KGV4
ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyZXEpCit7CisgICAgTExJTlRf
QlJBTkNIKG9wX2puZ3JlYXRlcmVxLCAhanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0Mo
MSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSkKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExM
SU5UX09QKDMpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoc2NydXRpbmVlLmlzRG91YmxlKCkpOwor
ICAgIGRvdWJsZSB2YWx1ZSA9IHNjcnV0aW5lZS5hc0RvdWJsZSgpOworICAgIGludDMyX3QgaW50
VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSk7CisgICAgaW50IGRlZmF1bHRPZmZz
ZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKHZhbHVlID09IGludFZhbHVlKSB7CisgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBj
ICs9IGNvZGVCbG9jay0+aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCku
b2Zmc2V0Rm9yVmFsdWUoaW50VmFsdWUsIGRlZmF1bHRPZmZzZXQpOworICAgIH0gZWxzZQorICAg
ICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0cmluZykKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5l
ZSA9IExMSU5UX09QKDMpLmpzVmFsdWUoKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJd
LnUub3BlcmFuZDsKKyAgICBpZiAoIXNjcnV0aW5lZS5pc1N0cmluZygpKQorICAgICAgICBwYyAr
PSBkZWZhdWx0T2Zmc2V0OworICAgIGVsc2UgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2RlQmxvY2stPnN0cmluZ1N3
aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGFzU3RyaW5nKHNj
cnV0aW5lZSktPnZhbHVlKGV4ZWMpLmltcGwoKSwgZGVmYXVsdE9mZnNldCk7CisgICAgfQorICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmMpCit7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NF
UlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZQorICAgICAgICAgICB8fCAh
Y29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkKKyAgICAgICAgICAgfHwgZXhlYy0+dW5j
aGVja2VkUihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpOworI2lm
IExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGluZyBmdW5jdGlvbiFcbiIp
OworI2VuZGlmCisgICAgTExJTlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzJd
LnUub3BlcmFuZCktPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApCit7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0
aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBKU0Z1
bmN0aW9uKiBmdW5jID0gZnVuY3Rpb24tPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKTsK
KyAgICAKKyAgICBpZiAoIWZ1bmN0aW9uLT5uYW1lKCkuaXNOdWxsKCkpIHsKKyAgICAgICAgSlNT
dGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25TY29wZU9iamVjdCA9IEpTU3RhdGljU2NvcGVPYmpl
Y3Q6OmNyZWF0ZShleGVjLCBmdW5jdGlvbi0+bmFtZSgpLCBmdW5jLCBSZWFkT25seSB8IERvbnRE
ZWxldGUpOworICAgICAgICBmdW5jLT5zZXRTY29wZShleGVjLT5nbG9iYWxEYXRhKCksIGZ1bmMt
PnNjb3BlKCktPnB1c2goZnVuY3Rpb25TY29wZU9iamVjdCkpOworICAgIH0KKyAgICAKKyAgICBM
TElOVF9SRVRVUk4oZnVuYyk7Cit9CisKK3N0YXRpYyBIZWxwZXJSZXR1cm5UeXBlIGhhbmRsZUhv
c3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNh
bGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hh
aW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7
CisKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShjYWxsZWUsIGNh
bGxEYXRhKTsKKyAgICAKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlSlMpOwor
ICAgIAorICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVIb3N0KSB7CisgICAgICAgICAg
ICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxE
YXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZv
aWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgICAgIH0KKyAgICAgICAgCisjaWYg
TExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAgICAgcHJpbnRmKCJDYWxsIGNhbGxlZSBpcyBub3Qg
YSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorCisgICAg
ICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpOworICAgICAgICBMTElOVF9DQUxM
X1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihleGVjLCBjYWxsZWUpKTsK
KyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAKKyAg
ICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1
Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShjYWxsZWUsIGNvbnN0cnVjdERhdGEpOworICAgIAor
ICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGVKUyk7CisgICAgCisgICAg
aWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZUhvc3QpIHsKKyAgICAgICAgZ2xvYmFs
RGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRh
Lm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgIExMSU5UX0NBTExfUkVUVVJO
KGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSk7CisgICAgfQorICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgICAg
IHByaW50ZigiQ29uc3RydWN0b3IgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwgY2Fs
bGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9
PSBDb25zdHJ1Y3RUeXBlTm9uZSk7CisgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3Jl
YXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7Cit9CisKK2lubGluZSBIZWxw
ZXJSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9u
KiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUs
IExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSAwKQoreworICAgIEpTQ2VsbCogY2Fs
bGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOworICAgIGlm
ICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCisgICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChl
eGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwga2luZCk7CisgICAgCisgICAgSlNGdW5jdGlv
biogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgZXhlY0Nh
bGxlZS0+c2V0U2NvcGVDaGFpbihjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCkpOworICAgIEV4ZWN1
dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7CisgICAgCisgICAg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSAwOworICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICBjb2Rl
UHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2Fs
bCgpOworICAgIGVsc2UgeworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhl
Y3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwor
ICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbXBpbGVGb3Io
ZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29wZSgpLCBraW5kKTsKKyAgICAgICAgaWYgKGVycm9yKQor
ICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpLCBw
YywgZXJyb3IpOworICAgICAgICBjb2RlQmxvY2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5l
cmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAg
ICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCisgICAgICAgICAgICBj
b2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlV2l0aEFyaXR5Q2hl
Y2tGb3Ioa2luZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlv
bkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsK
KyAgICB9CisgICAgCisgICAgaWYgKGNhbGxMaW5rSW5mbykgeworICAgICAgICBpZiAoY2FsbExp
bmtJbmZvLT5pc09uTGlzdCgpKQorICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5yZW1vdmUoKTsK
KyAgICAgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVyID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUo
KTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5jYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERh
dGEoKSwgZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUp
OworICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKKyAg
ICAgICAgaWYgKGNvZGVCbG9jaykKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5n
Q2FsbChjYWxsTGlua0luZm8pOworICAgIH0KKyAgICAKKyAgICBMTElOVF9DQUxMX1JFVFVSTihl
eGVjQ2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKK30KKworaW5saW5l
IEhlbHBlclJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlv
biogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICAvLyBUaGlzIG5lZWRz
IHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAvLyAtIEZpZ3VyZSBvdXQg
d2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIElmIHBv
c3NpYmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAgIC8vIC0gUmV0dXJuIGEg
dHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZy
YW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFs
dWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5v
cGVyYW5kOworICAgIAorICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKHBjWzJdLnUub3BlcmFuZCk7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3Rl
ckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxl
ckZyYW1lKGV4ZWMpOworICAgIAorICAgIEFTU0VSVChwY1s0XS51LmNhbGxMaW5rSW5mbyk7Cisg
ICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywga2luZCwgY2FsbGVlQXNWYWx1ZSwg
cGNbNF0udS5jYWxsTGlua0luZm8pOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2Fs
bCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDYWxsKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZ2Vu
ZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY2FsbF92YXJhcmdzKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAg
Ly8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFy
Z3VtZW50cy4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0
IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBh
ZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVl
IGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0
YXRlKiBleGVjQ2FsbGVlID0gbG9hZFZhcmFyZ3MoCisgICAgICAgIGV4ZWMsICZleGVjLT5nbG9i
YWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLAorICAgICAgICBMTElOVF9PUCgy
KS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5vcGVyYW5kKTsKKyAg
ICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYyk7CisgICAgCisgICAgZXhlY0Nh
bGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOwor
ICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWMtPnVuY2hlY2tl
ZFIoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQz
Ml90PihwYyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSk7CisgICAgCisgICAgcmV0
dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKQoreworICAgIEpTVmFs
dWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBleGVjQ2Fs
bGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAg
IGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hl
Y2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2Fs
bGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+
c2V0UmV0dXJuUEMoYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4oJmxsaW50X2dlbmVyaWNfcmV0
dXJuX3BvaW50KSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworICAgIGV4ZWMt
PnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2Vf
Y2FzdDxpbnQzMl90PihwYyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7CisgICAgCisg
ICAgaWYgKCFpc0hvc3RGdW5jdGlvbihjYWxsZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpCisg
ICAgICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxs
ZWVBc1ZhbHVlKTsKKyAgICAKKyAgICBnbG9iYWxEYXRhLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBl
dmFsKGV4ZWNDYWxsZWUpOworICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQoreworICAgIEFTU0VS
VChleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBKU1ZhbHVl
IGFjdGl2YXRpb25WYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFjdGl2
YXRpb25WYWx1ZSkgeworICAgICAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+cmVnaXN0ZXJzKClb
dW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCldLmpzVmFsdWUoKSkg
eworICAgICAgICAgICAgaWYgKCFleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisg
ICAgICAgICAgICAgICAgYXNBcmd1bWVudHModiktPnRlYXJPZmYoZXhlYyk7CisgICAgICAgIH0K
KyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlv
biA9IGFzQWN0aXZhdGlvbihhY3RpdmF0aW9uVmFsdWUpOworICAgIGFjdGl2YXRpb24tPnRlYXJP
ZmYoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+cmVnaXN0
ZXJzKClbdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCldLmpzVmFs
dWUoKSkKKyAgICAgICAgYXNBcmd1bWVudHModiktPmRpZFRlYXJPZmZBY3RpdmF0aW9uKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgYWN0aXZhdGlvbik7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCit7CisgICAgQVNTRVJUKGV4
ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkgJiYgIWV4ZWMtPmNvZGVCbG9jaygpLT5u
ZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIGFzQXJndW1lbnRzKGV4ZWMtPnJlZ2lzdGVycygp
W3VubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpXS5qc1ZhbHVlKCkp
LT50ZWFyT2ZmKGV4ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfc3RyY2F0KQoreworICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhleGVjLCAmTExJ
TlRfT1AoMiksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfdG9fcHJpbWl0aXZlKQoreworICAgIExMSU5UX1JFVFVSTihMTElOVF9PUCgyKS5qc1ZhbHVl
KCkudG9QcmltaXRpdmUoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X3BuYW1lcykKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAg
aWYgKHYuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBwYyArPSBwY1s1XS51Lm9wZXJh
bmQ7CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAKKyAgICBKU09iamVjdCogbyA9
IHYudG9PYmplY3QoZXhlYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvLT5zdHJ1Y3R1
cmUoKTsKKyAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9y
ID0gc3RydWN0dXJlLT5lbnVtZXJhdGlvbkNhY2hlKCk7CisgICAgaWYgKCFqc1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yIHx8IGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmNhY2hlZFByb3RvdHlwZUNoYWlu
KCkgIT0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSkKKyAgICAgICAganNQcm9wZXJ0
eU5hbWVJdGVyYXRvciA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBvKTsK
KyAgICAKKyAgICBMTElOVF9PUCgxKSA9IEpTVmFsdWUoanNQcm9wZXJ0eU5hbWVJdGVyYXRvcik7
CisgICAgTExJTlRfT1AoMikgPSBKU1ZhbHVlKG8pOworICAgIExMSU5UX09QKDMpID0gUmVnaXN0
ZXI6OndpdGhJbnQoMCk7CisgICAgTExJTlRfT1AoNCkgPSBSZWdpc3Rlcjo6d2l0aEludChqc1By
b3BlcnR5TmFtZUl0ZXJhdG9yLT5zaXplKCkpOworICAgIAorICAgIHBjICs9IE9QQ09ERV9MRU5H
VEgob3BfZ2V0X3BuYW1lcyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXh0X3BuYW1lKQoreworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3Qo
TExJTlRfT1AoMikuanNWYWx1ZSgpKTsKKyAgICBKU1N0cmluZyogcHJvcGVydHkgPSBhc1N0cmlu
ZyhMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIGlmIChiYXNlLT5oYXNQcm9wZXJ0eShleGVj
LCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5LT52YWx1ZShleGVjKSkpKSB7CisgICAgICAgIC8v
IEdvIHRvIHRhcmdldC4KKyAgICAgICAgcGMgKz0gcGNbNl0udS5vcGVyYW5kOworICAgIH0gLy8g
RWxzZSwgZG9uJ3QgY2hhbmdlIHRoZSBQQywgc28gdGhlIGludGVycHJldGVyIHdpbGwgcmVsb29w
LgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9z
Y29wZSkKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgSlNP
YmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
OworICAgIAorICAgIExMSU5UX09QKDEpID0gbzsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4
ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChvKSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUpCit7CisgICAgZXhlYy0+c2V0U2Nv
cGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnBvcCgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKQoreworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIHNjb3Bl
ID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmll
cihwY1syXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIERvbnREZWxldGUpOwor
ICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKHNjb3BlKSk7
CisgICAgTExJTlRfUkVUVVJOKHNjb3BlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Rocm93KQoreworICAgIExMSU5UX1RIUk9XKExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKK3sKKyAg
ICBMTElOVF9USFJPVyhjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBMTElOVF9PUF9DKDEpLmpz
VmFsdWUoKS50b1N0cmluZyhleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
ZGVidWcpCit7CisgICAgaW50IGRlYnVnSG9va0lEID0gcGNbMV0udS5vcGVyYW5kOworICAgIGlu
dCBmaXJzdExpbmUgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaW50IGxhc3RMaW5lID0gcGNbM10u
dS5vcGVyYW5kOworICAgIAorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+ZGVi
dWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5l
LCBsYXN0TGluZSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVk
UHJvZmlsZXJSZWZlcmVuY2UoKSktPndpbGxFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFs
dWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
cm9maWxlX2RpZF9jYWxsKQoreworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVy
ZW5jZSgpKS0+ZGlkRXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExM
SU5UX0VORCgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBMTEludEhlbHBlcnNfaAorI2RlZmluZSBMTEludEhlbHBlcnNfaAor
CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgewor
Cit0eXBlZGVmIGludDY0X3QgSGVscGVyUmV0dXJuVHlwZTsKKworZXh0ZXJuICJDIiBIZWxwZXJS
ZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBp
bnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7CitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUg
bGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJl
LCBpbnQgb3BlcmFuZCk7CisKKyNkZWZpbmUgTExJTlRfSEVMUEVSX0RFQ0wobmFtZSkgXAorICAg
IGV4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF8jI25hbWUoRXhlY1N0YXRlKiBleGVj
LCBJbnN0cnVjdGlvbiogcGMpCisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOwor
TExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCk7CitMTElOVF9IRUxQ
RVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RF
Q0wodHJhY2UpOworTExJTlRfSEVMUEVSX0RFQ0woc3BlY2lhbF90cmFjZSk7CitMTElOVF9IRUxQ
RVJfREVDTChlbnRyeV9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2FyaXR5Q2hl
Y2spOworTExJTlRfSEVMUEVSX0RFQ0wobG9vcF9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0wocmVw
bGFjZSk7CitMTElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVh
dGVfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50
cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3RoaXMpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3
X29iamVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5KTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9uZXdfcmVnZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9uc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2xlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3Jl
YXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wcmVfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVj
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYyk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcG9zdF9kZWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVy
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2FkZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9zdWIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rpdik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hp
ZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3JzaGlmdCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfdXJzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Yml0eG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaW5zdGFuY2VvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRlZmluZWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2lzX2Jvb2xlYW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJlcik7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9pc19vYmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cmVzb2x2ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcmVzb2x2ZV9iYXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJv
cGVydHlfZXhpc3RzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFz
ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Z2V0X2FyZ3VtZW50c19sZW5ndGgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9p
ZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9nZXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJn
dW1lbnRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2RlbF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRl
eCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2dldHRlcik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHV0X3NldHRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam1wX3Nj
b3Blcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2pmYWxzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3MpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
amdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcik7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfamxlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5s
ZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9z
d2l0Y2hfaW1tKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfY2hhcik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0cmluZyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmV3X2Z1bmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jX2V4cCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVh
cl9vZmZfYXJndW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X3BuYW1lcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcG9wX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19z
Y29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZGVidWcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKTsKKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludEhlbHBlcnNfaAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
bGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRPZmZsaW5l
QXNtQ29uZmlnX2gKKyNkZWZpbmUgTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKKworI2luY2x1ZGUg
IkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KKworI2lmIENQVShYODYpCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAx
CisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMAorI2VuZGlmCisKKyNpZiBDUFUoQVJN
djcpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVf
QVNNX0FSTXY3IDAKKyNlbmRpZgorCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorI2RlZmluZSBPRkZM
SU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NF
UlRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIENQVShCSUdfRU5ESUFOKQorI2RlZmluZSBPRkZM
SU5FX0FTTV9CSUdfRU5ESUFOIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJ
QU4gMAorI2VuZGlmCisKKyNpZiBFTkFCTEUoTExJTlRfT1NSX1RPX0pJVCkKKyNkZWZpbmUgT0ZG
TElORV9BU01fSklUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fSklUX0VO
QUJMRUQgMAorI2VuZGlmCisKKyNpZiBMTElOVF9FWEVDVVRJT05fVFJBQ0lORworI2RlZmluZSBP
RkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FT
TV9FWEVDVVRJT05fVFJBQ0lORyAwCisjZW5kaWYKKworI2VuZGlmIC8vIExMSW50T2ZmbGluZUFz
bUNvbmZpZ19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkFsbG9jYXRpb25TcGFjZS5oIgor
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRl
ICJIZWFwLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKSVRTdHVicy5o
IgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTdHlwZUlu
Zm8uaCIKKyNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCisjaW5jbHVkZSAiSnVtcFRhYmxl
LmgiCisjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCisjaW5jbHVkZSAiTWFya2Vk
U3BhY2UuaCIKKyNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKKyNpbmNsdWRlICJTY29wZUNoYWlu
LmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIK
KyNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBs
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVmaW5lIE9GRkxJTkVfQVNNX09GRlNFVE9GKGNs
YXp6LCBmaWVsZCkgT0JKRUNUX09GRlNFVE9GKGNsYXp6LCBmaWVsZCkKKworY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQqIGR1
bW15KCk7Cit9OworCitjb25zdCB1bnNpZ25lZCogTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1t
eSgpCit7CisjaW5jbHVkZSAiTExJbnREZXNpcmVkT2Zmc2V0cy5oIgorICAgIHJldHVybiBleHRy
YWN0b3JUYWJsZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK2ludCBtYWluKGludCwgY2hh
cioqKQoreworICAgIC8vIE91dCBvZiBhbiBhYnVuZGFuY2Ugb2YgY2F1dGlvbiwgbWFrZSBzdXJl
IHRoYXQgTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpIGlzIGxpdmUsCisgICAgLy8gYW5k
IHRoZSBleHRyYWN0b3JUYWJsZSBpcyBsaXZlLCB0b28uCisgICAgcHJpbnRmKCIlcFxuIiwgSlND
OjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkpOworICAgIHJldHVybiAwOworfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRUaHVu
a3MuaCIKKworI2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgiCisjaW5jbHVkZSAiTGlua0J1ZmZl
ci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBMTEludCB7CisKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCB2b2lkICgqdGFyZ2V0
KSgpKQoreworICAgIEpTSW50ZXJmYWNlSklUIGppdDsKKyAgICAKKyAgICAvLyBGSVhNRTogdGhl
cmUncyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gaXQgb24gWDg2LCBidXQgSSdtIG5vdCBz
dXJlIEkgY2FyZS4KKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cihi
aXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdldCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDApOworICAg
IGppdC5qdW1wKEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgCisgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwgJmppdCk7CisgICAgcmV0dXJuIHBhdGNoQnVmZmVyLmZp
bmFsaXplQ29kZSgpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxs
RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0
dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9y
Q29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7
CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFs
RGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0
b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5
X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZXZhbF9wcm9sb2d1ZSk7Cit9CisKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2Jh
bERhdGEsIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6TExJbnQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtz
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVu
a3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50VGh1bmtzX2gKKyNkZWZpbmUg
TExJbnRUaHVua3NfaAorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0dsb2JhbERhdGE7CisKK25hbWVzcGFjZSBMTEludCB7
CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29u
c3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxE
YXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNo
ZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnRUaHVua3NfaApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMzI2IEBACisjIENvcHly
aWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyMgQ3Jhc2ggY291cnNlIG9u
IHRoZSBsYW5ndWFnZSB0aGF0IHRoaXMgaXMgd3JpdHRlbiBpbiAod2hpY2ggSSBqdXN0IGNhbGwK
KyMgImFzc2VtYmx5IiBldmVuIHRob3VnaCBpdCdzIG1vcmUgdGhhbiB0aGF0KToKKyMKKyMgLSBN
b3N0bHkgZ2FzLXN0eWxlIG9wZXJhbmQgb3JkZXJpbmcuIFRoZSBsYXN0IG9wZXJhbmQgdGVuZHMg
dG8gYmUgdGhlCisjICAgZGVzdGluYXRpb24uIFNvICJhIDo9IGIiIGlzIHdyaXR0ZW4gYXMgIm1v
diBiLCBhIi4gQnV0IHVubGlrZSBnYXMsCisjICAgY29tcGFyaXNvbnMgYXJlIGluLW9yZGVyLCBz
byAiaWYgKGEgPCBiKSIgaXMgd3JpdHRlbiBhcworIyAgICJiaWx0IGEsIGIsIC4uLiIuCisjCisj
IC0gImIiID0gYnl0ZSwgImgiID0gMTYtYml0IHdvcmQsICJpIiA9IDMyLWJpdCB3b3JkLCAicCIg
PSBwb2ludGVyLgorIyAgIEN1cnJlbnRseSB0aGlzIGlzIGp1c3QgMzItYml0IHNvICJpIiBhbmQg
InAiIGFyZSBpbnRlcmNoYW5nZWFibGUKKyMgICBleGNlcHQgd2hlbiBhbiBvcCBzdXBwb3J0cyBv
bmUgYnV0IG5vdCB0aGUgb3RoZXIuCisjCisjIC0gSW4gZ2VuZXJhbCwgdmFsaWQgb3BlcmFuZHMg
Zm9yIG1hY3JvIGludm9jYXRpb25zIGFuZCBpbnN0cnVjdGlvbnMgYXJlCisjICAgcmVnaXN0ZXJz
IChlZyAidDAiKSwgYWRkcmVzc2VzIChlZyAiNFt0MF0iKSwgYmFzZS1pbmRleCBhZGRyZXNzZXMK
KyMgICAoZWcgIjdbdDAsIHQxLCAyXSIpLCBhYnNvbHV0ZSBhZGRyZXNzZXMgKGVnICIweGEwMDAw
MDAwW10iKSwgb3IgbGFiZWxzCisjICAgKGVnICJfZm9vIiBvciAiLmZvbyIpLiBNYWNybyBpbnZv
Y2F0aW9ucyBjYW4gYWxzbyB0YWtlIGFub255bW91cworIyAgIG1hY3JvcyBhcyBvcGVyYW5kcy4g
SW5zdHJ1Y3Rpb25zIGNhbm5vdCB0YWtlIGFub255bW91cyBtYWNyb3MuCisjCisjIC0gTGFiZWxz
IG11c3QgaGF2ZSBuYW1lcyB0aGF0IGJlZ2luIHdpdGggZWl0aGVyICJfIiBvciAiLiIuICBBICIu
IiBsYWJlbAorIyAgIGlzIGxvY2FsIGFuZCBnZXRzIHJlbmFtZWQgYmVmb3JlIGNvZGUgZ2VuIHRv
IG1pbmltaXplIG5hbWVzcGFjZQorIyAgIHBvbGx1dGlvbi4gQSAiXyIgbGFiZWwgaXMgYW4gZXh0
ZXJuIHN5bWJvbCAoaS5lLiAiLmdsb2JsIikuIFRoZSAiXyIKKyMgICBtYXkgb3IgbWF5IG5vdCBi
ZSByZW1vdmVkIGR1cmluZyBjb2RlIGdlbiBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgYXNtCisj
ICAgY29udmVudGlvbnMgZm9yIEMgbmFtZSBtYW5nbGluZyBvbiB0aGUgdGFyZ2V0IHBsYXRmb3Jt
IG1hbmRhdGUgYSAiXyIKKyMgICBwcmVmaXguCisjCisjIC0gQSAibWFjcm8iIGlzIGEgbGFtYmRh
IGV4cHJlc3Npb24sIHdoaWNoIG1heSBiZSBlaXRoZXIgYW5vbnltb3VzIG9yCisjICAgbmFtZWQu
IEJ1dCB0aGlzIGhhcyBjYXZlYXRzLiAibWFjcm8iIGNhbiB0YWtlIHplcm8gb3IgbW9yZSBhcmd1
bWVudHMsCisjICAgd2hpY2ggbWF5IGJlIG1hY3JvcyBvciBhbnkgdmFsaWQgb3BlcmFuZHMsIGJ1
dCBpdCBjYW4gb25seSByZXR1cm4KKyMgICBjb2RlLiBCdXQgeW91IGNhbiBkbyBUdXJpbmctY29t
cGxldGUgdGhpbmdzIHZpYSBjb250aW51YXRpb24gcGFzc2luZworIyAgIHN0eWxlOiAibWFjcm8g
Zm9vIChhLCBiKSBiKGEpIGVuZCBmb28oZm9vLCBmb28pIi4gQWN0dWFsbHksIGRvbid0IGRvCisj
ICAgdGhhdCwgc2luY2UgeW91J2xsIGp1c3QgY3Jhc2ggdGhlIGFzc2VtYmxlci4KKyMKKyMgLSBB
biAiaWYiIGlzIGEgY29uZGl0aW9uYWwgb24gc2V0dGluZ3MuIEFueSBpZGVudGlmaWVyIHN1cHBs
aWVkIGluIHRoZQorIyAgIHByZWRpY2F0ZSBvZiBhbiAiaWYiIGlzIGFzc3VtZWQgdG8gYmUgYSAj
ZGVmaW5lIHRoYXQgaXMgYXZhaWxhYmxlCisjICAgZHVyaW5nIGNvZGUgZ2VuLiBTbyB5b3UgY2Fu
J3QgdXNlICJpZiIgZm9yIGNvbXB1dGF0aW9uIGluIGEgbWFjcm8sIGJ1dAorIyAgIHlvdSBjYW4g
dXNlIGl0IHRvIHNlbGVjdCBkaWZmZXJlbnQgcGllY2VzIG9mIGNvZGUgZm9yIGRpZmZlcmVudAor
IyAgIHBsYXRmb3Jtcy4KKyMKKyMgLSBBcmd1bWVudHMgdG8gbWFjcm9zIGZvbGxvdyBsZXhpY2Fs
IHNjb3BpbmcgcmF0aGVyIHRoYW4gZHluYW1pYyBzY29waW5nLgorIyAgIENvbnN0J3MgYWxzbyBm
b2xsb3cgbGV4aWNhbCBzY29waW5nIGFuZCBtYXkgb3ZlcnJpZGUgKGhpZGUpIGFyZ3VtZW50cwor
IyAgIG9yIG90aGVyIGNvbnN0cy4gQWxsIHZhcmlhYmxlcyAoYXJndW1lbnRzIGFuZCBjb25zdGFu
dHMpIGNhbiBiZSBib3VuZAorIyAgIHRvIG9wZXJhbmRzLiBBZGRpdGlvbmFsbHksIGFyZ3VtZW50
cyAoYnV0IG5vdCBjb25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAgIHRvIG1hY3Jvcy4KKworCisj
IFRoZXNlIGRlY2xhcmF0aW9ucyBtdXN0IG1hdGNoIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5o
LgorY29uc3QgQ2FsbEZyYW1lSGVhZGVyU2l6ZSA9IDQ4Citjb25zdCBBcmd1bWVudENvdW50ID0g
LTQ4Citjb25zdCBDYWxsZXJGcmFtZSA9IC00MAorY29uc3QgQ2FsbGVlID0gLTMyCitjb25zdCBT
Y29wZUNoYWluID0gLTI0Citjb25zdCBSZXR1cm5QQyA9IC0xNgorY29uc3QgQ29kZUJsb2NrID0g
LTgKKworY29uc3QgVGhpc0FyZ3VtZW50T2Zmc2V0ID0gLUNhbGxGcmFtZUhlYWRlclNpemUgLSA4
CisKKyMgRGVjbGFyZSBzb21lIGFsaWFzZXMgZm9yIHRoZSByZWdpc3RlcnMgd2Ugd2lsbCB1c2Uu
Citjb25zdCBQQyA9IHQ0CisKKyMgT2Zmc2V0cyBuZWVkZWQgZm9yIHJlYXNvbmluZyBhYm91dCB2
YWx1ZSByZXByZXNlbnRhdGlvbi4KK2lmIEJJR19FTkRJQU4KKyAgICBjb25zdCBUYWdPZmZzZXQg
PSAwCisgICAgY29uc3QgUGF5bG9hZE9mZnNldCA9IDQKK2Vsc2UKKyAgICBjb25zdCBUYWdPZmZz
ZXQgPSA0CisgICAgY29uc3QgUGF5bG9hZE9mZnNldCA9IDAKK2VuZAorCisjIFZhbHVlIHJlcHJl
c2VudGF0aW9uIGNvbnN0YW50cy4KK2NvbnN0IEludDMyVGFnID0gLTEKK2NvbnN0IEJvb2xlYW5U
YWcgPSAtMgorY29uc3QgTnVsbFRhZyA9IC0zCitjb25zdCBVbmRlZmluZWRUYWcgPSAtNAorY29u
c3QgQ2VsbFRhZyA9IC01Citjb25zdCBFbXB0eVZhbHVlVGFnID0gLTYKK2NvbnN0IERlbGV0ZWRW
YWx1ZVRhZyA9IC03Citjb25zdCBMb3dlc3RUYWcgPSBEZWxldGVkVmFsdWVUYWcKKworIyBUeXBl
IGNvbnN0YW50cy4KK2NvbnN0IFN0cmluZ1R5cGUgPSA1Citjb25zdCBPYmplY3RUeXBlID0gMTAK
KworIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KK2NvbnN0IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQg
PSAxCitjb25zdCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPSAyCitjb25zdCBJbXBsZW1lbnRzRGVm
YXVsdEhhc0luc3RhbmNlID0gOAorCisjIEhlYXAgYWxsb2NhdGlvbiBjb25zdGFudHMuCitjb25z
dCBKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXggPSAzCisKKyMgQnl0ZWNvZGUgb3BlcmFuZCBj
b25zdGFudHMuCitjb25zdCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDAK
KworIyBDb2RlIHR5cGUgY29uc3RhbnRzLgorY29uc3QgR2xvYmFsQ29kZSA9IDAKK2NvbnN0IEV2
YWxDb2RlID0gMQorY29uc3QgRnVuY3Rpb25Db2RlID0gMgorCisjIFRoZSBpbnRlcnByZXRlciBz
dGVhbHMgdGhlIHRhZyB3b3JkIG9mIHRoZSBhcmd1bWVudCBjb3VudC4KK2NvbnN0IExMSW50UmV0
dXJuUEMgPSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0CisKKyMgVGhpcyBtdXN0IG1hdGNoIHd0
Zi9WZWN0b3IuaC4KK2NvbnN0IFZlY3RvclNpemVPZmZzZXQgPSAwCitjb25zdCBWZWN0b3JCdWZm
ZXJPZmZzZXQgPSA0CisKKyMgU3RyaW5nIGZsYWdzLgorY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZl
ciA9IDY0CisKKyMgVXRpbGl0aWVzCittYWNybyBjcmFzaCgpCisgICAgc3RvcmVpIDAsIDB4YmJh
ZGJlZWZbXQorICAgIG1vdmUgMCwgdDAKKyAgICBjYWxsIHQwCitlbmQKKworbWFjcm8gYXNzZXJ0
KGFzc2VydGlvbikKKyAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBhc3NlcnRpb24oLm9r
KQorICAgICAgICBjcmFzaCgpCisgICAgLm9rOgorICAgIGVuZAorZW5kCisKK21hY3JvIHByZXNl
cnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChkZXN0aW5hdGlvblJlZ2lzdGVyKQorICAgIGlmIEFS
TXY3CisgICAgICAgIG1vdmUgbHIsIGRlc3RpbmF0aW9uUmVnaXN0ZXIKKyAgICBlbHNpZiBYODYK
KyAgICAgICAgcG9wIGRlc3RpbmF0aW9uUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9y
CisgICAgZW5kCitlbmQKKworbWFjcm8gcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4o
c291cmNlUmVnaXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBzb3VyY2VSZWdpc3Rl
ciwgbHIKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcHVzaCBzb3VyY2VSZWdpc3RlcgorICAgIGVs
c2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyBkaXNwYXRjaChhZHZhbmNl
KQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBk
aXNwYXRjaEJyYW5jaChwY09mZnNldCkKKyAgICBsb2FkaSBwY09mZnNldCwgdDAKKyAgICBsc2hp
ZnRpIDIsIHQwCisgICAgYWRkcCB0MCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRp
c3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nm
cl0sIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBjQ2FsbDIoZnVuY3Rpb24sIGFyZzEs
IGFyZzIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBtb3Zl
IGFyZzIsIHQxCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAorICAgICAgICBw
b2tlIGFyZzIsIDEKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBm
dW5jdGlvbgorZW5kCisKKyMgVGhpcyBiYXJlbHkgd29ya3MuIGFyZzMgYW5kIGFyZzQgc2hvdWxk
IHByb2JhYmx5IGJlIGltbWVkaWF0ZXMuCittYWNybyBjQ2FsbDQoZnVuY3Rpb24sIGFyZzEsIGFy
ZzIsIGFyZzMsIGFyZzQpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAg
ICAgICBtb3ZlIGFyZzIsIHQxCisgICAgICAgIG1vdmUgYXJnMywgdDIKKyAgICAgICAgbW92ZSBh
cmc0LCB0MworICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9r
ZSBhcmcyLCAxCisgICAgICAgIHBva2UgYXJnMywgMgorICAgICAgICBwb2tlIGFyZzQsIDMKKyAg
ICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5kCisK
K21hY3JvIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpCisg
ICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVnZ2luZyBvcGVy
YXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlv
biBzdHJlYW0uCittYWNybyB0cmFjZU9wZXJhbmQoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIGND
YWxsNChfbGxpbnRfdHJhY2Vfb3BlcmFuZCwgY2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVyYW5kKQor
ICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcgb3Bl
cmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgdGhlIHZhbHVlIG9mIGFuIG9wZXJhbmQgaW4g
dGhlIGluc3RydWN0aW9uCisjIHN0cmVhbS4KK21hY3JvIHRyYWNlVmFsdWUoZnJvbVdoZXJlLCBv
cGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2VfdmFsdWUsIGNmciwgUEMsIGZyb21XaGVy
ZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKK21h
Y3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBj
YWxsSGVscGVyKF9sbGludF90cmFjZSkKKyAgICBlbmQKK2VuZAorCisjIENhbGwgYSBoZWxwZXIg
Zm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3JvIGNhbGxDYWxsSGVscGVyKGFkdmFuY2UsIGhlbHBlciwg
YWN0aW9uKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDLCB0MAorICAgIHN0b3JlcCB0MCwgQXJn
dW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykK
KyAgICBtb3ZlIHQxLCBjZnIKKyAgICBhY3Rpb24odDApCitlbmQKKworbWFjcm8gc2xvd1BhdGhG
b3JDYWxsKGFkdmFuY2UsIGhlbHBlcikKKyAgICBjYWxsQ2FsbEhlbHBlcigKKyAgICAgICAgYWR2
YW5jZSwKKyAgICAgICAgaGVscGVyLAorICAgICAgICBtYWNybyAoY2FsbGVlKQorICAgICAgICAg
ICAgY2FsbCBjYWxsZWUKKyAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAgICAg
ZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVQoaW5jcmVtZW50LCBhY3Rpb24pCisg
ICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAg
ICAgIGJhZGRpcyBpbmNyZW1lbnQsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3Qw
XSwgLmNvbnRpbnVlCisgICAgICAgIGFjdGlvbigpCisgICAgLmNvbnRpbnVlOgorICAgIGVuZAor
ZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBjaGVja1N3aXRjaFRv
SklUKAorICAgICAgICAxLAorICAgICAgICBtYWNybyAoKQorICAgICAgICAgICAgc3RvcmVpIFBD
LCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICAgICAgICAgIGNDYWxsMihfbGxp
bnRfbG9vcF9vc3IsIGNmciwgUEMpCisgICAgICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAg
ICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgICAgICBqbXAgdDAKKyAgICAgICAgLnJlY292
ZXI6CisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBD
CisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUo
KQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEwLAorICAgICAgICBtYWNybyAoKQor
ICAgICAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVwbGFjZSkKKyAgICAgICAgZW5kKQorZW5k
CisKK21hY3JvIGFzc2VydE5vdENvbnN0YW50KGluZGV4KQorICAgIGFzc2VydChtYWNybyAob2sp
IGJpbHQgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBvayBlbmQpCitlbmQKKwor
IyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIElu
ZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShpbmRl
eCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFn
CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGpt
cCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zm
c2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6
IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9hZHAgVGFnT2Zmc2V0W3BheWxv
YWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRl
eCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQgbWF5IGJl
IHRoZSBzYW1lIHJlZ2lzdGVyLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5k
ZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRh
ZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBq
bXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFnCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0
W3RhZ10sIHRhZworICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5k
ZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAj
IHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxzaGlmdGkgMywgaW5kZXgKKyAgICBhZGRwIGluZGV4
LCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQKKyAgICBsb2FkcCBU
YWdPZmZzZXRbdGFnXSwgdGFnCisuZG9uZToKK2VuZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpCisgICAgYmln
dGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgYmlu
ZXEgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBleHBlY3RlZFRhZywgc2xvdworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5j
b25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2Fk
XSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5k
ZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAj
IHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGJpbmVxIFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwg
OF0sIGV4cGVjdGVkVGFnLCBzbG93CisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBp
bmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKK21hY3JvIHdyaXRlQmFycmllcih0YWcs
IHBheWxvYWQpCisgICAgIyBOb3RoaW5nIHRvIGRvIHNpbmNlIHdlIGRvbid0IGhhdmUgYSBnZW5l
cmF0aW9uYWwgb3IgaW5jcmVtZW50YWwgY29sbGVjdG9yLgorZW5kCisKKworIyBJbmRpY2F0ZSB0
aGUgYmVnaW5uaW5nIG9mIExMSW50LgorX2xsaW50X2JlZ2luOgorICAgIGNyYXNoKCkKKworCisj
IEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVycHJldGVyCisKK21hY3JvIGZ1bmN0aW9uRm9yQ2Fs
bENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwg
dGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0
UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
bV9jb2RlQmxvY2tGb3JDYWxsW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAor
CittYWNybyBmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3Rl
cikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1
bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAg
IGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0
UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJs
b2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YXJn
ZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJl
Z2lzdGVyKQorICAgIHN0b3JlcCBzb3VyY2VSZWdpc3RlciwgQ29kZUJsb2NrW2Nmcl0KK2VuZAor
CittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAgICAj
IE5vdGhpbmcgdG8gZG8hCitlbmQKKworIyBEbyB0aGUgYmFyZSBtaW5pbXVtIHJlcXVpcmVkIHRv
IGV4ZWN1dGUgY29kZS4gU2V0cyB1cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2RlQmxvY2sqCisjIGlu
IHQxLiBNYXkgYWxzbyB0cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KK21hY3JvIHByb2xvZ3Vl
KGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JIZWxwZXIsIHRyYWNlSGVscGVy
KQorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICAKKyAgICAjIFNl
dCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KKyAgICBzdG9y
ZXAgdDIsIFJldHVyblBDW2Nmcl0KKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBj
YWxsSGVscGVyKHRyYWNlSGVscGVyKQorICAgIGVuZAorICAgIGNvZGVCbG9ja0dldHRlcih0MSkK
KyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBiYWRkaXMgNSwgQ29kZUJsb2NrOjptX2xsaW50
RXhlY3V0ZUNvdW50ZXJbdDFdLCAuY29udGludWUKKyAgICAgICAgY0NhbGwyKG9zckhlbHBlciwg
Y2ZyLCBQQykKKyAgICAgICAgbW92ZSB0MSwgY2ZyCisgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVy
CisgICAgICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCisgICAgICAgIHJlc3RvcmVSZXR1cm5B
ZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAgICAgICBqbXAgdDAKKyAgICAucmVjb3ZlcjoKKyAg
ICAgICAgY29kZUJsb2NrR2V0dGVyKHQxKQorICAgIC5jb250aW51ZToKKyAgICBlbmQKKyAgICBj
b2RlQmxvY2tTZXR0ZXIodDEpCisgICAgCisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRw
IENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6
SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBD
CitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0
IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KKyMgTXVzdCBjYWxsIGRpc3BhdGNoKDApIGFmdGVy
IGNhbGxpbmcgdGhpcy4KK21hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oKQorICAgICMgUHJv
ZmlsZSB0aGUgYXJndW1lbnRzLiBVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIGNob2ljZSBidXQg
dG8gZG8gdGhpcy4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIHQw
CisgICAgYnRpeiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKKyAgICBuZWdpIHQwCisgICAgbHNo
aWZ0aSAzLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMg
KyBWZWN0b3JCdWZmZXJPZmZzZXRbdDFdLCB0MworLmFyZ3VtZW50UHJvZmlsZUxvb3A6CisgICAg
bG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDBdLCB0MgorICAgIHN0
b3JlaSB0MiwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbdDNdCisgICAgbG9h
ZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQwXSwgdDIKKyAgICBz
dG9yZWkgdDIsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFt0M10KKyAg
ICBhZGRwIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQzCisgICAgYmFkZGlueiA4LCB0MCwgLmFyZ3Vt
ZW50UHJvZmlsZUxvb3AKKy5hcmd1bWVudFByb2ZpbGVEb25lOgorICAgIAorICAgICMgQ2hlY2sg
c3RhY2sgaGVpZ2h0LgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1DYWxsZWVSZWdpc3RlcnNb
dDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDIKKyAgICBs
b2FkcCBKU0dsb2JhbERhdGE6OmludGVycHJldGVyW3QyXSwgdDIgICAjIEZJWE1FOiBDYW4gZ2V0
IHRvIHRoZSBSZWdpc3RlckZpbGUgZnJvbSB0aGUgSklUU3RhY2tGcmFtZQorICAgIGxzaGlmdGkg
MywgdDAKKyAgICBhZGRwIHQwLCBjZnIsIHQwCisgICAgYnBhZXEgSW50ZXJwcmV0ZXI6Om1fcmVn
aXN0ZXJGaWxlICsgUmVnaXN0ZXJGaWxlOjptX2VuZFt0Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSwor
CisgICAgIyBTdGFjayBoZWlnaHQgY2hlY2sgZmFpbGVkIC0gbmVlZCB0byBjYWxsIGEgaGVscGVy
LgorICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlZ2lzdGVyX2ZpbGVfY2hlY2spCisuc3RhY2tIZWln
aHRPSzoKK2VuZAorCisjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlz
IHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgorbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNr
KGRvbmVMYWJlbCwgaGVscGVyKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENv
dW50W2Nmcl0sIHQwCisgICAgYmllcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFd
LCBkb25lTGFiZWwKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKSAgICMgVGhpcyBoZWxwZXIg
aGFzIGEgc2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4gbm8gZXJyb3IsIHQwICE9IDAgPT4gZXJy
b3IKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBidGl6IHQwLCAuY29udGludWUKKyAgICBsb2FkcCBK
SVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6
OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRN
YWNoaW5lUENGb3JUaHJvd1t0MV0KKy5jb250aW51ZToKKyAgICAjIFJlbG9hZCBDb2RlQmxvY2sg
YW5kIFBDLCBzaW5jZSB0aGUgaGVscGVyIGNsb2JiZXJlZCBpdC4KKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0
b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworICAgIGptcCBkb25lTGFiZWwKK2VuZAorCitfbGxpbnRf
cHJvZ3JhbV9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRl
ciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90
cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9ldmFsX3Byb2xvZ3Vl
OgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNv
ZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQor
ICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgor
ICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2Rl
QmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5j
dGlvbl9mb3JfY2FsbCkKKy5mdW5jdGlvbkZvckNhbGxCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRp
YWxpemF0aW9uKCkKKyAgICBkaXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENv
ZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3Is
IF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQorLmZ1bmN0aW9u
Rm9yQ29uc3RydWN0QmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigpCisgICAgZGlz
cGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrOgor
ICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2Rl
QmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2Fy
aXR5Q2hlY2tfZm9yX2NhbGwpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNh
bGxCZWdpbiwgX2xsaW50X2hlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCisKKworX2xsaW50X2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JD
b25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRf
ZW50cnlfb3NyX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1
Y3QpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBf
bGxpbnRfaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQorCisjIEluc3RydWN0aW9uIGltcGxl
bWVudGF0aW9ucworCitfbGxpbnRfb3BfZW50ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1WYXJz
W3QyXSwgdDIKKyAgICBidGl6IHQyLCAub3BFbnRlckRvbmUKKyAgICBtb3ZlIFVuZGVmaW5lZFRh
ZywgdDAKKyAgICBtb3ZlIDAsIHQxCisub3BFbnRlckxvb3A6CisgICAgc3ViaSAxLCB0MgorICAg
IHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDIsIDhdCisgICAgYnRpbnogdDIsIC5vcEVudGVyTG9vcAorLm9wRW50ZXJE
b25lOgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX2NyZWF0ZV9hY3RpdmF0aW9uOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25l
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQorLm9wQ3Jl
YXRlQWN0aXZhdGlvbkRvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5pdF9s
YXp5X3JlZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
c3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSAw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRf
b3BfY3JlYXRlX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAu
b3BDcmVhdGVBcmd1bWVudHNEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0
ZV9hcmd1bWVudHMpCisub3BDcmVhdGVBcmd1bWVudHNEb25lOgorICAgIGRpc3BhdGNoKDIpCisK
KworbWFjcm8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNpemVDbGFzc0luZGV4LCBjbGFzc0luZm9P
ZmZzZXQsIHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNsb3dDYXNlKQor
ICAgIGNvbnN0IG9mZnNldE9mTXlTaXplQ2xhc3MgPSBKU0dsb2JhbERhdGE6OmhlYXAgKyBIZWFw
OjptX29iamVjdFNwYWNlICsgQWxsb2NhdGlvblNwYWNlOjptX21hcmtlZFNwYWNlICsgTWFya2Vk
U3BhY2U6Om1fcHJlY2lzZVNpemVDbGFzc2VzICsgc2l6ZUNsYXNzSW5kZXggKiBzaXplb2YgTWFy
a2VkU3BhY2U6OlNpemVDbGFzcworICAgIAorICAgICMgRklYTUU6IHdlIGNhbiBnZXQgdGhlIGds
b2JhbCBkYXRhIGluIG9uZSBsb2FkIGZyb20gdGhlIHN0YWNrLgorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCBzY3JhdGNoMQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0
Y2gxXSwgc2NyYXRjaDEKKyAgICAKKyAgICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUg
bGlzdC4gICAgCisgICAgbG9hZHAgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpT
aXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKKyAgICBidHB6IHJlc3Vs
dCwgc2xvd0Nhc2UKKyAgICAKKyAgICAjIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUg
bGlzdC4KKyAgICBsb2FkcCBbcmVzdWx0XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIs
IG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVD
ZWxsW3NjcmF0Y2gxXQorCisgICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgbG9hZHAg
Y2xhc3NJbmZvT2Zmc2V0W3NjcmF0Y2gxXSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIs
IFtyZXN1bHRdCisgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1
bHRdCisgICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0KKyAgICBh
ZGRwIHNpemVvZiBKU09iamVjdCwgcmVzdWx0LCBzY3JhdGNoMQorICAgIHN0b3JlcCBzY3JhdGNo
MSwgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KK2VuZAorCitfbGxpbnRfb3Bf
Y3JlYXRlX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgQ2VsbFRhZywgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAg
IGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgT2JqZWN0
VHlwZSwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9pbmhlcml0b3JJ
RFt0MF0sIHQyCisgICAgYnRweiB0MiwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUJh
c2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6Ompz
RmluYWxPYmplY3RDbGFzc0luZm8sIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykK
KyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlz
cGF0Y2goMykKKworLm9wQ3JlYXRlVGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2NyZWF0ZV90aGlzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9jYWxs
ZWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRw
IFBheWxvYWRPZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQwCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDBdLCBPYmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQorCisu
b3BDb252ZXJ0VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NvbnZlcnRf
dGhpcykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfb2JqZWN0OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVj
dDo6bV9lbXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNpY0pTT2Jq
ZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2Jq
ZWN0Q2xhc3NJbmZvLCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikK
KworLm9wTmV3T2JqZWN0U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X29i
amVjdCkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfYXJyYXk6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXkpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheV9idWZm
ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdleHApCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNw
YXRjaCgzKQorCisKK19sbGludF9vcF9ub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGFzc2VydE5vdENvbnN0YW50
KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MworICAgIGJpbmVxIHQyLCBCb29sZWFuVGFnLCAub3BO
b3RTbG93CisgICAgeG9yaSAxLCB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0
Y2goMykKKworLm9wTm90U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbm90KQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
KHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAub3BFcVNsb3cKKyAgICBiaWVxIHQyLCBD
ZWxsVGFnLCAub3BFcVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wRXFTbG93CisgICAg
bG9hZGkgNFtQQ10sIHQyCisgICAgY2llcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5U
YWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEVxU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZXFfbnVs
bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkg
NFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
CisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcEVxTnVsbEltbWVkaWF0ZQorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRibnogU3RydWN0dXJlOjptX3R5cGVJbmZv
ICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQorICAg
IGptcCAub3BFcU51bGxOb3RJbW1lZGlhdGUKKy5vcEVxTnVsbEltbWVkaWF0ZToKKyAgICBjaWVx
IHQxLCBOdWxsVGFnLCB0MgorICAgIGNpZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKKyAgICBvcmkg
dDIsIHQxCisub3BFcU51bGxOb3RJbW1lZGlhdGU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRh
Z09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQz
LCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25lcToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLm9wTmVxU2xvdworICAgIGJp
ZXEgdDIsIENlbGxUYWcsIC5vcE5lcVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wTmVx
U2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpbmVxIHQwLCB0MSwgdDAKKyAgICBzdG9y
ZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wTmVxU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmVxKQorICAgIGRpc3BhdGNoKDQpCisgICAgCisK
K19sbGludF9vcF9uZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcE5lcU51bGxJbW1l
ZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0YnogU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkLCB0MQorICAgIGptcCAub3BOZXFOdWxsTm90SW1tZWRpYXRlCisub3BOZXFOdWxs
SW1tZWRpYXRlOgorICAgIGNpbmVxIHQxLCBOdWxsVGFnLCB0MgorICAgIGNpbmVxIHQxLCBVbmRl
ZmluZWRUYWcsIHQxCisgICAgYW5kaSB0MiwgdDEKKy5vcE5lcU51bGxOb3RJbW1lZGlhdGU6Cisg
ICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0
MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8g
c3RyaWN0RXEoZXF1YWxpdHlPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQy
CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMs
IHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmlu
ZXEgdDIsIHQzLCAuc2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpbmVx
IHQyLCBDZWxsVGFnLCAubm90U3RyaW5nCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQzCisgICAgYmJuZXEg
U3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUs
IC5ub3RTdHJpbmcKKyAgICBiYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjpt
X3R5cGVbdDNdLCBTdHJpbmdUeXBlLCAuc2xvdworLm5vdFN0cmluZzoKKyAgICBsb2FkaSA0W1BD
XSwgdDIKKyAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIHQwKQorICAgIHN0b3JlaSBCb29s
ZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVy
KGhlbHBlcikKKyAgICBkaXNwYXRjaCg0KQorZW5kCisKK19sbGludF9vcF9zdHJpY3RlcToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1
bHQpIGNpZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9oZWxwZXJfc3RyaWN0ZXEp
CisKKworX2xsaW50X29wX25zdHJpY3RlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc3Ry
aWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpbmVxIGxlZnQsIHJpZ2h0LCByZXN1
bHQgZW5kLCBfbGxpbnRfaGVscGVyX25zdHJpY3RlcSkKKworCitfbGxpbnRfb3BfbGVzczoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3MpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzc2VxKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX2dyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX2dyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2dyZWF0ZXJlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcmVf
aW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5l
cSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVJbmNTbG93CisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBiYWRkaW8gMSwgdDEsIC5vcFBy
ZUluY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBk
aXNwYXRjaCgyKQorCisub3BQcmVJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9wcmVfaW5jKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3ByZV9kZWM6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZURlY1Nsb3cKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJzdWJpbyAxLCB0MSwgLm9wUHJlRGVjU2xvdwor
ICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIp
CisKKy5vcFByZURlY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3ByZV9kZWMp
CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9zdF9pbmM6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3RJbmNTbG93CisgICAg
YmllcSB0MCwgdDEsIC5vcFBvc3RJbmNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDIKKyAgICBtb3ZlIHQyLCB0MworICAgIGJhZGRpbyAxLCB0MywgLm9wUG9zdElu
Y1Nsb3cKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0
b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQorLm9wUG9zdEluY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKwor
Lm9wUG9zdEluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfaW5jKQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Bvc3RfZGVjOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5l
cSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0RGVjU2xvdworICAgIGJp
ZXEgdDAsIHQxLCAub3BQb3N0RGVjRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBic3ViaW8gMSwgdDMsIC5vcFBvc3REZWNT
bG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3REZWNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5v
cFBvc3REZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2RlYykKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF90b19qc251bWJlcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYXNz
ZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0Mgor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgYmllcSB0MiwgSW50
MzJUYWcsIC5vcFRvSnNudW1iZXJJc0ludAorICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAu
b3BUb0pzbnVtYmVyU2xvdworLm9wVG9Kc251bWJlcklzSW50OgorICAgIHN0b3JlaSB0MiwgVGFn
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9Kc251bWJlclNsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3RvX2pzbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX25lZ2F0ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQyCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BOZWdhdGVTcmNOb3RJbnQKKyAg
ICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CisgICAgbmVnaSB0MgorICAgIHN0
b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKy5vcE5lZ2F0ZVNyY05vdElu
dDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xvdworICAgIHhvcmkgMHg4MDAw
MDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5l
Z2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lZ2F0ZSkKKyAgICBkaXNw
YXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFu
ZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisg
ICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQx
KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEg
dDIsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDMsIEludDMyVGFnLCAub3AyTm90
SW50CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHQz
LCB0MSwgdDAsIC5zbG93LCB0MikKKyAgICBkaXNwYXRjaCg1KQorCisub3AxTm90SW50OgorICAg
ICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRoZSBzZWNvbmQgb3Bl
cmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAg
ICBiaWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQzLCBJ
bnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQxLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5
Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQxLCB0MywgZnQxCisub3AxTm90SW50
UmVhZHk6CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgZmlpMmQgdDAsIHQyLCBmdDAKKyAgICBk
b3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDEsIDhdCisg
ICAgZGlzcGF0Y2goNSkKKworLm9wMk5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVm
aW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KKyAg
ICBsb2FkaSA0W1BDXSwgdDIKKyAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNsb3cKKyAgICBjaTJk
IHQwLCBmdDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEs
IGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisu
c2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCg1KQorZW5kCisKK21h
Y3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQor
ICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwg
cmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgaW50ZWdlck9wZXJhdGlvbihsZWZ0LCBy
aWdodCwgc2xvdykKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBp
bmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikK
K2VuZAorCitfbGxpbnRfb3BfYWRkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlP
cCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQs
IHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2FkZCkKKworCitfbGxpbnRfb3BfbXVsOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCBzbG93KSBibXVsaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQpIG11bGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVy
X211bCkKKworCitfbGxpbnRfb3Bfc3ViOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5h
cnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBic3ViaW8gbGVmdCwgcmln
aHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIHN1YmQgbGVmdCwgcmln
aHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3N1YikKKworCitfbGxpbnRfb3BfZGl2Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBt
YWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGNp
MmQgbGVmdCwgZnQwCisgICAgICAgICAgICBjaTJkIHJpZ2h0LCBmdDEKKyAgICAgICAgICAgIGRp
dmQgZnQwLCBmdDEKKyAgICAgICAgICAgIGJjZDJpIGZ0MSwgcmlnaHQsIC5ub3RJbnQKKyAgICAg
ICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAg
ICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAg
ICAgIGptcCAuZG9uZQorICAgICAgICAubm90SW50OgorICAgICAgICAgICAgc3RvcmVkIGZ0MSwg
W2NmciwgaW5kZXgsIDhdCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQsCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCkgZGl2ZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfZGl2KQorCisKK19sbGludF9vcF9tb2Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9tb2QpCisgICAgZGlzcGF0Y2goNCkKKworCittYWNy
byBiaXRPcChvcGVyYXRpb24sIGhlbHBlciwgYWR2YW5jZSkKKyAgICBsb2FkaSAxMltQQ10sIHQy
CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMs
IHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmlu
ZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAg
ICBsb2FkaSA0W1BDXSwgdDIKKyAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xvdykKKyAgICBzdG9y
ZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCisKKy5zbG93OgorICAgIGNhbGxI
ZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCitlbmQKKworX2xsaW50X29wX2xz
aGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfbHNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF9yc2hpZnQ6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHNsb3cpIHJzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3Jz
aGlmdCwKKyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfdXJzaGlmdDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAg
ICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAw
LCBzbG93CisgICAgICAgIGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl91cnNoaWZ0LAorICAg
ICAgICA0KQorCisKK19sbGludF9vcF9iaXRhbmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGFuZGkgbGVmdCwgcmln
aHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdGFuZCwKKyAgICAgICAgNSkKKworCitf
bGxpbnRfb3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAg
ICAgX2xsaW50X2hlbHBlcl9iaXR4b3IsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG9y
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVy
X2JpdG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRub3Q6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFz
c2VydE5vdENvbnN0YW50KHQxKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgdDIK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MworICAgIGJpbmVxIHQyLCBJ
bnQzMlRhZywgLm9wQml0bm90U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2JpdG5vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVja19o
YXNfaW5zdGFuY2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgQ2VsbFRhZywgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBd
LCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgZGlz
cGF0Y2goMikKKworLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9pbnN0YW5jZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIENoZWNrIHRoYXQg
YmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9yLgorICAg
ICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuCisgICAgbG9hZGkgMTJbUENdLCB0
MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAg
YnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxl
bWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgCisgICAgIyBB
Y3R1YWxseSBkbyB0aGUgd29yay4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQ
Q10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisg
ICAgYXNzZXJ0Tm90Q29uc3RhbnQodDEpCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCBDZWxsVGFnLCAub3BJbnN0YW5jZW9mU2xvdworICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQx
LCA4XSwgQ2VsbFRhZywgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdLCB0MQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0Mgor
ICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2Jq
ZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MgorICAgIAorICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0
MiA9IHZhbHVlCisgICAgbW92ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxvb3A6CisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3Rv
dHlwZSArIFBheWxvYWRPZmZzZXRbdDJdLCB0MgorICAgIGJwZXEgdDIsIHQxLCAub3BJbnN0YW5j
ZW9mRG9uZQorICAgIGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcAorCisgICAgbW92ZSAwLCB0
MAorLm9wSW5zdGFuY2VvZkRvbmU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtj
ZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAg
IGRpc3BhdGNoKDUpCisKKy5vcEluc3RhbmNlb2ZTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9pbnN0YW5jZW9mKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3R5cGVv
ZjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3R5
cGVvZikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc191bmRlZmluZWQ6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc191bmRlZmlu
ZWQpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfYm9vbGVhbjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Jvb2xlYW4pCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfbnVtYmVyKQorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX2lzX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3N0cmluZykKKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9pc19vYmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9pc19vYmplY3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfaXNfZnVuY3Rpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9pc19mdW5jdGlvbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9pbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2luKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29sdmU6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlKQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfc2tpcDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfc2tpcCkKKyAgICBkaXNw
YXRjaCgzKQorCisKK21hY3JvIHJlc29sdmVHbG9iYWwoc2xvdykKKyAgICAjIE9wZXJhbmRzIGFy
ZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisg
ICAgIyA4W1BDXSAgIFByb3BlcnR5IGlkZW50aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2su
CisgICAgIyAxMltQQ10gIFN0cnVjdHVyZSBwb2ludGVyLCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5
dGVjb2RlIGdlbmVyYXRvci4KKyAgICAjIDE2W1BDXSAgT2Zmc2V0IGluIGdsb2JhbCBvYmplY3Qs
IGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0
MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJwbmVxIHQxLCAx
MltQQ10sIHNsb3cKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1f
cHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwg
dDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQzCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkg
dDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9n
bG9iYWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHJlc29sdmVHbG9iYWwoLm9wUmVzb2x2
ZUdsb2JhbFNsb3cpCisgICAgZGlzcGF0Y2goNSkKKworLm9wUmVzb2x2ZUdsb2JhbFNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3BhdGNo
KDUpCisKKworIyBHaXZlcyB5b3UgdGhlIHNjb3BlIGluIHQwLCB3aGlsZSBhbGxvd2luZyB5b3Ug
dG8gb3B0aW9uYWxseSBwZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9uIHRoZQorIyBzY29wZXMg
YXMgdGhleSBhcmUgdHJhdmVyc2VkLiBzY29wZUNoZWNrKCkgaXMgY2FsbGVkIHdpdGggdHdvIGFy
Z3VtZW50czogdGhlIHJlZ2lzdGVyCisjIGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdpc3Rl
ciB0aGF0IGNhbiBiZSB1c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAor
IyB1c2UgdDMsIHNvIHlvdSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJlLgorbWFjcm8g
Z2V0U2NvcGUoZGVCcnVpamluSW5kZXhPcGVyYW5kLCBzY29wZUNoZWNrKQorICAgIGxvYWRwIFNj
b3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgZGVCcnVpamluSW5k
ZXhPcGVyYW5kLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisgICAgCisgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQxCisgICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwg
RnVuY3Rpb25Db2RlLCAubG9vcAorICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNjb3Bl
Q2hhaW5bdDFdLCAubG9vcAorICAgIAorICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0aW9u
UmVnaXN0ZXJbdDFdLCB0MQorCisgICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVy
IG9uZSBzY29wZS4KKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRh
ZywgLm5vQWN0aXZhdGlvbgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3Bl
Q2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKy5ub0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0Mgor
ICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisubG9vcDoKKyAgICBzY29wZUNoZWNrKHQwLCB0MSkK
KyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisgICAgc3ViaSAxLCB0Mgor
ICAgIGJ0aW56IHQyLCAubG9vcAorCisuZG9uZToKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9n
bG9iYWxfZHluYW1pYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tG
cmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0
aW9uU3RydWN0dXJlW3QzXSwgdDMKKyAgICBnZXRTY29wZSgKKyAgICAgICAgMjBbUENdLAorICAg
ICAgICBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpCisgICAgICAgICAgICBsb2FkcCBTY29wZUNoYWlu
Tm9kZTo6b2JqZWN0W3Njb3BlXSwgc2NyYXRjaAorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjpt
X3N0cnVjdHVyZVtzY3JhdGNoXSwgdDMsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93
CisgICAgICAgIGVuZCkKKyAgICByZXNvbHZlR2xvYmFsKC5vcFJlc29sdmVHbG9iYWxEeW5hbWlj
U2xvdykKKyAgICBkaXNwYXRjaCg2KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZSkKKyAgICBkaXNwYXRjaCg2
KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3BhdGNoKDYpCisKKworX2xsaW50X29wX2dl
dF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIE9wZXJhbmRzIGFyZSBh
cyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAg
IyA4W1BDXSAgIEluZGV4IG9mIHJlZ2lzdGVyIGluIHRoZSBzY29wZS4KKyAgICAjIDEyW1BDXSAg
RGUgQnJ1aWppbiBpbmRleC4KKyAgICBnZXRTY29wZSgxMltQQ10sIG1hY3JvIChzY29wZSwgc2Ny
YXRjaCkgZW5kKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAg
IGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFi
bGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQy
LCA4XSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0sIHQwCisgICAgc3Rv
cmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfc2NvcGVk
X3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZ2V0U2NvcGUoOFtQQ10sIG1hY3JvIChz
Y29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkaSA0W1BD
XSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MywgdDIpCisgICAgd3JpdGVC
YXJyaWVyKHQzLCB0MikKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAK
KyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgc3Rv
cmVpIHQzLCBUYWdPZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNl
dFt0MCwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92
YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRp
IDRbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVC
bG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0Ojpt
X3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MQorICAgIHN0b3JlaSB0MiwgVGFn
T2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMs
IDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAor
ICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHdy
aXRlQmFycmllcih0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbdDAsIHQxLCA4XQor
ICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfcmVzb2x2ZV9iYXNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9iYXNlKQorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF9iYXNlOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRo
X2Jhc2UpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX3RoaXM6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNv
bHZlX3dpdGhfdGhpcykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfaWQ6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRf
YnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKKyAgICAjIG9w
Y29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hhbmdlIGFueXRp
bWUgaWYgZmFpbHMsIHNpbmNlCisgICAgIyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4gQXQgYmVzdCB3
ZSBnZXQgbHVja3kgYW5kIHRoZSBnZXRfYnlfaWQgd2lsbCBjb250aW51ZQorICAgICMgdG8gdGFr
ZSBmYXN0IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBzbG93IHBhdGgs
IHdoaWNoIGlzIHdoYXQKKyAgICAjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCisg
ICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCisgICAg
bG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0
M10sIHQwCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlk
U2xvdworICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDJdLCB0
MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyXSwgdDIKKyAgICBzdG9yZWkgdDMsIFRh
Z09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XQorICAgIGRpc3BhdGNoKDgpCisKKy5vcEdldEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9nZXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOCkKKworCitfbGxpbnRfb3Bf
Z2V0X2FyZ3VtZW50c19sZW5ndGg6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhb
UENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdworICAgIGxvYWRp
IEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQyCisgICAgc3ViaSAxLCB0Mgor
ICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQy
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QXJn
dW1lbnRzTGVuZ3RoU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3Vt
ZW50c19sZW5ndGgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQ
Q10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQw
LCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZHAgSlNPYmpl
Y3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0
dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MCwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQw
LCB0MikKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDFdCisgICAgc3RvcmVpIHQyLCBQ
YXlsb2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBkaXNwYXRjaCg5KQorCisub3BQdXRCeUlkU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X2lkKQorICAgIGRpc3BhdGNoKDkp
CisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcykKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgMTZbUENdLCB0MQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0
QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0
MywgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRwIEpTT2Jq
ZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYWRkcCB0MSwgdDMKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDEsIHQyKQorICAgIHdyaXRlQmFycmllcih0MSwg
dDIpCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgMjRbUENdLCB0MQor
ICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdCisgICAgZGlzcGF0Y2goOSkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRT
dHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAorICAgICAgICBtYWNybyAo
b2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQorICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxs
ID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9y
IHRoZSBwcm90bworICAgICAgICAKKyAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAor
ICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAg
ICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNo
CisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisg
ICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3Ry
dWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAgICAgICAgLmxvb3A6CisgICAgICAgICAgICBsb2Fk
aSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBw
cm90b0NlbGwKKyAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxs
XSwgb2xkU3RydWN0dXJlCisgICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNo
XSwgc2xvdworICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCisgICAgICAgICAgICBiaW5lcSBT
dHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcs
IC5sb29wCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQpCisKKworX2xsaW50X29wX2RlbF9i
eV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2RlbF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfdmFsOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBs
b2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2dsb2JhbERhdGFbdDFdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGxvYWRwIEpTR2xvYmFsRGF0
YTo6anNBcnJheUNsYXNzSW5mb1t0MV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAgIGJwbmVxIFt0MF0s
IHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDBdLCB0
MworICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MF0sIC5vcEdldEJ5VmFs
U2xvdworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0
b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1f
dmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQorICAgIGJpZXEgdDIsIEVtcHR5
VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlz
cGF0Y2goNCkKKworLm9wR2V0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9nZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9hcmd1bWVu
dF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlW
YWx1ZVRhZywgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZCh0MSwgSW50MzJUYWcsIHQyLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdykKKyAg
ICBhZGRpIDEsIHQyCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2Zy
XSwgdDEKKyAgICBiaWFlcSB0MiwgdDEsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbmVn
aSB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQyLCA4
XSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MQorICAgIHN0b3Jl
aSB0MCwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QXJndW1lbnRCeVZhbFNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BHZXRCeVBuYW1lU2xvdykKKyAgICBsb2FkaSAxNltQ
Q10sIHQwCisgICAgYnBuZXEgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIC5vcEdldEJ5
UG5hbWVTbG93CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BHZXRCeVBuYW1lU2xvdykKKyAgICBsb2FkaSAy
MFtQQ10sIHQwCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDMKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDAKKyAgICBicG5lcSB0MCwgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDNdLCAub3BHZXRCeVBuYW1lU2xvdwor
ICAgIGxvYWRpIDI0W1BDXSwgdDAKKyAgICBsb2FkaSBbY2ZyLCB0MCwgOF0sIHQwCisgICAgc3Vi
aSAxLCB0MAorICAgIGJpYWVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hl
YWJsZVNsb3RzW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9w
cm9wZXJ0eVN0b3JhZ2VbdDJdLCB0MgorICAgIGxvYWRpIFRhZ09mZnNldFt0MiwgdDAsIDhdLCB0
MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDIsIHQwLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0
MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDcpCisKKy5vcEdldEJ5
UG5hbWVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfcG5hbWUpCisg
ICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfcHV0X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZGkgOFtQQ10s
IHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIEludDMyVGFnLCB0Miwg
Lm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRw
IENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6
OmpzQXJyYXlDbGFzc0luZm9bdDBdLCB0MAorICAgIGJwbmVxIFt0MV0sIHQwLCAub3BQdXRCeVZh
bFNsb3cKKyAgICBiaWFlcSB0MiwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDFdLCAub3BQdXRC
eVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDFdLCB0MAorICAgIGJpZXEg
QXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdLCBFbXB0eVZhbHVl
VGFnLCAub3BQdXRCeVZhbEVtcHR5Cisub3BQdXRCeVZhbFN0b3JlUmVzdWx0OgorICAgIGxvYWRp
IDEyW1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MywgdDEsIHQzKQor
ICAgIHdyaXRlQmFycmllcih0MSwgdDMpCisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1f
dmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBzdG9yZWkgdDMsIEFycmF5U3RvcmFn
ZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQor
Cisub3BQdXRCeVZhbEVtcHR5OgorICAgIGFkZGkgMSwgQXJyYXlTdG9yYWdlOjptX251bVZhbHVl
c0luVmVjdG9yW3QwXQorICAgIGJpYiB0MiwgQXJyYXlTdG9yYWdlOjptX2xlbmd0aFt0MF0sIC5v
cFB1dEJ5VmFsU3RvcmVSZXN1bHQKKyAgICBhZGRpIDEsIHQyLCB0MQorICAgIHN0b3JlaSB0MSwg
QXJyYXlTdG9yYWdlOjptX2xlbmd0aFt0MF0KKyAgICBqbXAgLm9wUHV0QnlWYWxTdG9yZVJlc3Vs
dAorCisub3BQdXRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9i
eV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZGVsX2J5X3ZhbDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV92YWwp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2luZGV4OgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X2luZGV4KQor
ICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9nZXR0ZXI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfZ2V0dGVyKQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9zZXR0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfc2V0dGVyKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX2xvb3A6CisgICAgbm9wCitfbGxpbnRfb3Bfam1wOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBkaXNwYXRjaEJyYW5jaCg0W1BDXSkKKworCitfbGxpbnRfb3Bf
am1wX3Njb3BlczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2ptcF9zY29wZXMpCisgICAgZGlzcGF0Y2goMCkKKworCittYWNybyBqdW1wVHJ1ZU9y
RmFsc2UoY29uZGl0aW9uT3AsIHNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEJvb2xlYW5UYWcsIHQwLCAuc2xvdykKKyAgICBj
b25kaXRpb25PcCh0MCwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAg
IGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKHNsb3cpCisg
ICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl90cnVlOgorICAgIG5vcAor
X2xsaW50X29wX2p0cnVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFs
c2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVu
ZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qdHJ1ZSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9m
YWxzZToKKyAgICBub3AKK19sbGludF9vcF9qZmFsc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXog
dmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamZhbHNlKQorCisKK21h
Y3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmlt
bWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxI
YW5kbGVyKFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRh
cmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhb
UENdKQorCisuaW1tZWRpYXRlOgorICAgIG9yaSAxLCB0MQorICAgIGltbWVkaWF0ZUhhbmRsZXIo
dDEsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKK2VuZAorCitfbGxpbnRfb3BfamVxX251bGw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZh
bHVlLCB0YXJnZXQpIGJ0Ym56IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQg
ZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmllcSB2YWx1ZSwgTnVsbFRhZywg
dGFyZ2V0IGVuZCkKKyAgICAKKworX2xsaW50X29wX2puZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRi
eiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFj
cm8gKHZhbHVlLCB0YXJnZXQpIGJpbmVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorCisK
K19sbGludF9vcF9qbmVxX3B0cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNoCisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCisub3BKbmVxUHRyQnJhbmNoOgor
ICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKy5vcEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBk
aXNwYXRjaCg0KQorCisKK21hY3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBh
cmUsIGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWcodDMsIHQyLCB0MykKKyAgICBiaW5lcSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJ
bnQKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFy
ZSh0MSwgdDMsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6Cisg
ICAgYmlhIHQwLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcDFO
b3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0
MywgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAg
ICBmaWkyZCB0MywgdDIsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGZpaTJkIHQxLCB0MCwg
ZnQwCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0
Y2goNCkKKworLm9wMk5vdEludDoKKyAgICBjaTJkIHQxLCBmdDAKKyAgICBiaWEgdDIsIExvd2Vz
dFRhZywgLnNsb3cKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQorICAgIGRvdWJsZUNvbXBhcmUoZnQw
LCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5qdW1wVGFyZ2V0OgorICAg
IGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIp
CisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzOgorICAgIG5v
cAorX2xsaW50X29wX2psZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHQgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3MpCisKKworX2xs
aW50X29wX2pubGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0
IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQs
IHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzcykKKworCitf
bGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXIpCisKKworX2xsaW50X29wX2puZ3JlYXRlcjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcikKKworCitfbGxpbnRfb3BfbG9v
cF9pZl9sZXNzZXE6CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3NlcToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJkbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9qbGVzc2VxKQorCisKK19sbGludF9vcF9qbmxlc3NlcToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgdGFyZ2V0KSBiZGd0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9s
bGludF9oZWxwZXJfam5sZXNzZXEpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcmVxOgor
ICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiZGd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
amdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3Bfam5ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
aWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHRhcmdldCkgYmRsdHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRf
aGVscGVyX2puZ3JlYXRlcmVxKQorCisKK19sbGludF9vcF9sb29wX2hpbnQ6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBkaXNwYXRjaCgx
KQorCisKK19sbGludF9vcF9zd2l0Y2hfaW1tOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSAxMltQQ10sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZGkg
NFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBs
b2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJl
RGF0YTo6bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3Qy
LCB0MywgNF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAg
ICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcFN3aXRjaEltbU5vdEludAorICAgIHN1YmkgU2ltcGxl
SnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJy
YW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRocm91
Z2gKKyAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZm
ZXJPZmZzZXRbdDJdLCB0MgorICAgIGRpc3BhdGNoQnJhbmNoKFt0MiwgdDAsIDRdKQorCisub3BT
d2l0Y2hJbW1Ob3RJbnQ6CisgICAgYmliIHQxLCBMb3dlc3RUYWcsIC5vcFN3aXRjaEltbVNsb3cg
ICMgR28gdG8gc2xvdyBwYXRoIGlmIGl0J3MgYSBkb3VibGUuCisub3BTd2l0Y2hJbW1GYWxsVGhy
b3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLm9wU3dpdGNoSW1tU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX2ltbSkKKyAgICBkaXNwYXRjaCgwKQor
CisKK19sbGludF9vcF9zd2l0Y2hfY2hhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgMTJbUENdLCB0MAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRpIDRb
UENdLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbG9h
ZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURh
dGE6Om1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Miwg
dDMsIDRdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAg
YmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRo
cm91Z2gKKyAgICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MF0sIHQwCisgICAgYmluZXEgU3Ry
aW5nSW1wbDo6bV9sZW5ndGhbdDBdLCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBs
b2FkcCBTdHJpbmdJbXBsOjptX2RhdGE4W3QwXSwgdDEKKyAgICBidGlueiBTdHJpbmdJbXBsOjpt
X2hhc2hBbmRGbGFnc1t0MF0sIEhhc2hGbGFnczhCaXRCdWZmZXIsIC5vcFN3aXRjaENoYXI4Qml0
CisgICAgbG9hZGggW3QxXSwgdDAKKyAgICBqbXAgLm9wU3dpdGNoQ2hhclJlYWR5Cisub3BTd2l0
Y2hDaGFyOEJpdDoKKyAgICBsb2FkYiBbdDFdLCB0MAorLm9wU3dpdGNoQ2hhclJlYWR5OgorICAg
IHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVK
dW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNo
Q2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRz
ICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBkaXNwYXRjaEJyYW5jaChbdDIsIHQw
LCA0XSkKKworLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhb
UENdKQorCisKK19sbGludF9vcF9zd2l0Y2hfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX3N0cmluZykKKyAgICBkaXNwYXRj
aCgwKQorCisKK19sbGludF9vcF9uZXdfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
YnRpeiAxMltQQ10sIC5vcE5ld0Z1bmNVbmNoZWNrZWQKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcE5ld0Z1bmNE
b25lCisub3BOZXdGdW5jVW5jaGVja2VkOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9u
ZXdfZnVuYykKKy5vcE5ld0Z1bmNEb25lOgorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X25ld19mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX25ld19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGRvQ2Fs
bChoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAg
IGxvYWRwIExMSW50Q2FsbExpbmtJbmZvOjpjYWxsZWVbdDFdLCB0MgorICAgIGFzc2VydE5vdENv
bnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9w
Q2FsbFNsb3cKKyAgICBiaW5lcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MiwgLm9wQ2Fs
bFNsb3cKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgYWRkcCAyNCwgUEMKKyAgICBsc2hpZnRp
IDMsIHQzCisgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2Yg
Y2ZyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAKKyAgICBzdG9y
ZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIHQwLCBTY29wZUNo
YWluICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBsb2FkaSA4IC0gMjRbUENdLCB0MgorICAgIHN0
b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgc3RvcmVwIGNmciwg
Q2FsbGVyRnJhbWVbdDNdCisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9m
ZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQorICAg
IHN0b3JlaSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFnT2Zmc2V0W3QzXQorICAgIG1vdmUgdDMs
IGNmcgorICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQor
ICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JD
YWxsKDYsIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY2FsbCkKKworCitfbGxpbnRfb3BfY29uc3Ry
dWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBlcl9jb25z
dHJ1Y3QpCisKKworX2xsaW50X29wX2NhbGxfdmFyYXJnczoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIF9sbGludF9oZWxwZXJfY2FsbF92YXJhcmdzKQorCisK
K19sbGludF9vcF9jYWxsX2V2YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIAorICAgICMg
RXZhbCBpcyBleGVjdXRlZCBpbiBvbmUgb2YgdHdvIG1vZGVzOgorICAgICMKKyAgICAjIDEpIFdl
IGZpbmQgdGhhdCB3ZSdyZSByZWFsbHkgaW52b2tpbmcgZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhl
CisgICAgIyAgICBleGVjdXRpb24gaXMgcGVyZm9tZWQgZW50aXJlbHkgaW5zaWRlIHRoZSBoZWxw
ZXIsIGFuZCBpdAorICAgICMgICAgcmV0dXJucyB0aGUgUEMgb2YgYSBmdW5jdGlvbiB0aGF0IGp1
c3QgcmV0dXJucyB0aGUgcmV0dXJuIHZhbHVlCisgICAgIyAgICB0aGF0IHRoZSBldmFsIHJldHVy
bmVkLgorICAgICMKKyAgICAjIDIpIFdlIGZpbmQgdGhhdCB3ZSdyZSBpbnZva2luZyBzb21ldGhp
bmcgY2FsbGVkIGV2YWwoKSB0aGF0IGlzIG5vdAorICAgICMgICAgdGhlIHJlYWwgZXZhbC4gVGhl
biB0aGUgaGVscGVyIHJldHVybnMgdGhlIFBDIG9mIHRoZSB0aGluZyB0bworICAgICMgICAgY2Fs
bCwgYW5kIHdlIGNhbGwgaXQuCisgICAgIworICAgICMgVGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxl
IHR3byBjYXNlcywgd2hpY2ggd291bGQgcmVxdWlyZSBhIHRvdGFsIG9mCisgICAgIyB1cCB0byBm
b3VyIHBpZWNlcyBvZiBzdGF0ZSB0aGF0IGNhbm5vdCBiZSBlYXNpbHkgcGFja2VkIGludG8gdHdv
CisgICAgIyByZWdpc3RlcnMgKEMgZnVuY3Rpb25zIGNhbiByZXR1cm4gdXAgdG8gdHdvIHJlZ2lz
dGVycywgZWFzaWx5KToKKyAgICAjCisgICAgIyAtIFRoZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBU
aGlzIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBtb2RpZmllZAorICAgICMgICBieSB0aGUgaGVs
cGVyLCBidXQgdGhlIGNvbnZlbnRpb24gaXMgdGhhdCBpdCByZXR1cm5zIGl0LiBJdCdzIG5vdAor
ICAgICMgICB0b3RhbGx5IGNsZWFyIGlmIHRoYXQncyBuZWNlc3NhcnksIHNpbmNlIHRoZSBjZnIg
aXMgY2FsbGVlIHNhdmUuCisgICAgIyAgIEJ1dCB0aGF0J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVy
ZSBpbnRlcnByZXRlciBzbyB3ZSBzdGljayB3aXRoIGl0LgorICAgICMKKyAgICAjIC0gQSBiaXQg
dG8gc2F5IGlmIHRoZSBoZWxwZXIgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIHRoZSBldmFsIGFuZCBo
YXMKKyAgICAjICAgdGhlIHJldHVybiB2YWx1ZSwgb3IgZGlkIG5vdCBleGVjdXRlIHRoZSBldmFs
IGJ1dCBoYXMgYSBQQyBmb3IgdXMKKyAgICAjICAgdG8gY2FsbC4KKyAgICAjCisgICAgIyAtIEVp
dGhlcjoKKyAgICAjICAgLSBUaGUgSlMgcmV0dXJuIHZhbHVlICh0d28gcmVnaXN0ZXJzKSwgb3IK
KyAgICAjCisgICAgIyAgIC0gVGhlIFBDIHRvIGNhbGwuCisgICAgIworICAgICMgSXQgdHVybnMg
b3V0IHRvIGJlIGVhc2llciB0byBqdXN0IGFsd2F5cyBoYXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIK
KyAgICAjIGFuZCBhIFBDIHRvIGNhbGwsIGFuZCB0aGF0IFBDIG1heSBiZSBhIGR1bW15IHRodW5r
IHRoYXQganVzdAorICAgICMgcmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1
cm5lZC4KKyAgICAKKyAgICBzbG93UGF0aEZvckNhbGwoNCwgX2xsaW50X2hlbHBlcl9jYWxsX2V2
YWwpCisKKworX2xsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50OgorICAgIGRpc3BhdGNoQWZ0ZXJD
YWxsKCkKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmlu
ZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZh
dGlvbkNyZWF0ZWQKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRh
ZywgLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkCisub3BUZWFyT2ZmQWN0aXZhdGlvbkNy
ZWF0ZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24p
Cisub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfdGVhcl9vZmZfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBzdWJpIDEsIHQwICAgIyBHZXQgdGhlIHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcgorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVl
VGFnLCAub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZAorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCisub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRl
ZDoKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGRvUmV0dXJuKCkKKyAgICBsb2FkcCBSZXR1
cm5QQ1tjZnJdLCB0MgorICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgorICAgIHJlc3Rv
cmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAgIHJldAorZW5kCisKK19sbGludF9v
cF9yZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGls
b2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0
OgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIs
IDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdHJhY2VF
eGVjdXRpb24oKSAjIE5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSBpdCB3b3VsZCBjbG9iYmVyIHQx
LCB0MAorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQx
CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwg
Q2VsbFRhZywgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJ
bmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QK
KyAgICBkb1JldHVybigpCisKKy5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdDoKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xs
aW50X29wX21ldGhvZF9jaGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBpZ25v
cmUgbWV0aG9kIGNoZWNrcyBhbmQgdXNlIG5vcm1hbCBnZXRfYnlfaWQgb3B0aW1pemF0aW9ucy4K
KyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zdHJjYXQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zdHJjYXQpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9QcmltaXRpdmVJc0ltbQorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNs
b3dDYXNlCisub3BUb1ByaW1pdGl2ZUlzSW1tOgorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
ZGlzcGF0Y2goMykKKworLm9wVG9QcmltaXRpdmVTbG93Q2FzZToKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfdG9fcHJpbWl0aXZlKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X2dldF9wbmFtZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9nZXRfcG5hbWVzKQorICAgIGRpc3BhdGNoKDApICMgVGhlIGhlbHBlciBlaXRoZXIg
YWR2YW5jZXMgdGhlIFBDIG9yIGp1bXBzIHVzIHRvIHNvbWV3aGVyZSBlbHNlLgorCisKK19sbGlu
dF9vcF9uZXh0X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10s
IHQxCisgICAgbG9hZGkgMTZbUENdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MSwgOF0sIHQwCisgICAgYmllcSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgLm9wTmV4
dFBuYW1lRW5kCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MiwgOF0sIHQyCisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9qc1N0
cmluZ3NbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDhdLCB0MworICAgIGFkZGkgMSwgdDAK
KyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgOFtQQ10sIHQzCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAgICBicG5lcSB0MSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0Ml0sIHQwCisgICAg
bG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5v
cE5leHRQbmFtZVRhcmdldAorLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wOgorICAgIGJp
ZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFt0MV0sIE51bGxUYWcsIC5vcE5l
eHRQbmFtZVNsb3cKKyAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9m
ZnNldFt0MV0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQxCisgICAg
YnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBhZGRwIDQsIHQwCisgICAgYnRw
bnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wCisub3BOZXh0UG5hbWVUYXJn
ZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMjRbUENdKQorCisub3BOZXh0UG5hbWVFbmQ6CisgICAg
ZGlzcGF0Y2goNykKKworLm9wTmV4dFBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfbmV4dF9wbmFtZSkgIyBUaGlzIGVpdGhlciBrZWVwcyB0aGUgUEMgd2hlcmUgaXQgd2Fz
IChjYXVzaW5nIHVzIHRvIGxvb3ApIG9yIHNldHMgaXQgdG8gdGFyZ2V0LgorICAgIGRpc3BhdGNo
KDApCisKKworX2xsaW50X29wX3B1c2hfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX3Njb3BlKQorICAgIGRpc3BhdGNoKDIpCisK
KworX2xsaW50X29wX3BvcF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3BvcF9zY29wZSkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGlu
dF9vcF9wdXNoX25ld19zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3B1c2hfbmV3X3Njb3BlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX2NhdGNoOgorICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklU
J3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKKyAgICAjIG1hY2hpbmUgY29kZSByZXR1
cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQorICAg
ICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190
cmFtcG9saW5lKS4KKyAgICAjIFRoZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRo
ZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0aHJvd2luZworICAgICMgY29kZSBtdXN0IGhhdmUga25v
d24gdGhhdCB3ZSB3ZXJlIHRocm93aW5nIHRvIHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKKyAg
ICAjIHNldCBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdy4KKyAgICBt
b3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMK
KyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10s
IFBDCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3Qz
XSwgdDAKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10s
IHQxCisgICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNl
dFt0M10KKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24g
KyBUYWdPZmZzZXRbdDNdICAgICAgIAorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIHN0b3JlaSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgdHJhY2VFeGVjdXRpb24oKSAgIyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUg
YmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIgdDAsIHQxLCB0MiwgdDMgYWJvdmUuCisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3c6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvdykKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3I6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpCisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfanNyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBhZGRpIDMgKiA0LCBQQywgdDEKKyAgICBzdG9yZWkg
dDEsIFt0MF0KKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3JldDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIFBDCisgICAgZGlzcGF0Y2go
MCkKKworCitfbGxpbnRfb3BfZGVidWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9kZWJ1ZykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9wcm9maWxlX3dpbGxfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYnRweiBKSVRT
dGFja0ZyYW1lOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCAub3BQcm9maWxlV2lsbENh
bGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQor
Lm9wUHJvZmlsZVdpbGxDYWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9w
cm9maWxlX2RpZF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidHB6IEpJVFN0YWNr
RnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIC5vcFByb2ZpbGVEaWRDYWxsRG9u
ZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQorLm9wUHJv
ZmlsZURpZENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2VuZDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1JldHVybigpCisK
KworX2xsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmU6CisgICAgIyBXaGVuIHRocm93
aW5nIGZyb20gdGhlIGludGVycHJldGVyIChpLmUuIHRocm93aW5nIGZyb20gTExJbnRIZWxwZXJz
KSwgc28KKyAgICAjIHRoZSB0aHJvdyB0YXJnZXQgaXMgbm90IG5lY2Vzc2FyaWx5IGludGVycHJl
dGVkIGNvZGUsIHdlIGNvbWUgdG8gaGVyZS4KKyAgICAjIFRoaXMgZXNzZW50aWFsbHkgZW11bGF0
ZXMgdGhlIEpJVCdzIHRocm93aW5nIHByb3RvY29sLgorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6
Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9y
VGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRo
cm93W3QxXQorCisKK19sbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lOgorICAgIHBy
ZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1l
OjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZv
clRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JU
aHJvd1t0MV0KKworCisjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0
aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KKyMgVGhlc2Ugb3Bjb2RlcyBzaG91
bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQK
KyMgYXMgbXVjaC4KKworbWFjcm8gbm90U3VwcG9ydGVkKCkKKyAgICBpZiBBU1NFUlRfRU5BQkxF
RAorICAgICAgICBjcmFzaCgpCisgICAgZWxzZQorICAgICAgICAjIFdlIHNob3VsZCB1c2Ugd2hh
dGV2ZXIgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIGluc3RydWN0aW9uIGlzLCBqdXN0IHRvCisgICAg
ICAgICMgZW5zdXJlIHRoYXQgdGhlcmUgaXMgYSBnYXAgYmV0d2VlbiBpbnN0cnVjdGlvbiBsYWJl
bHMuIElmIG11bHRpcGxlCisgICAgICAgICMgc21hbGxlc3QgaW5zdHJ1Y3Rpb25zIGV4aXN0LCB3
ZSBzaG91bGQgcGljayB0aGUgb25lIHRoYXQgaXMgbW9zdAorICAgICAgICAjIGxpa2VseSByZXN1
bHQgaW4gZXhlY3V0aW9uIGJlaW5nIGhhbHRlZC4gQ3VycmVudGx5IHRoYXQgaXMgdGhlIGJyZWFr
CisgICAgICAgICMgaW5zdHJ1Y3Rpb24gb24gYWxsIGFyY2hpdGVjdHVyZXMgd2UncmUgaW50ZXJl
c3RlZCBpbi4gKEJyZWFrIGlzIGludDMKKyAgICAgICAgIyBvbiBJbnRlbCwgd2hpY2ggaXMgMSBi
eXRlLCBhbmQgYmtwdCBvbiBBUk12Nywgd2hpY2ggaXMgMiBieXRlcy4pCisgICAgICAgIGJyZWFr
CisgICAgZW5kCitlbmQKKworX2xsaW50X29wX2dldF9hcnJheV9sZW5ndGg6CisgICAgbm90U3Vw
cG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQo
KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQo
KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQo
KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgp
CisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitf
bGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitf
bGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitf
bGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19s
bGludF9vcF9nZXRfYnlfaWRfcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29w
X2dldF9ieV9pZF9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfc3Ry
aW5nX2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX2dl
bmVyaWM6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9yZXBsYWNl
OgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbjoK
KyAgICBub3RTdXBwb3J0ZWQoKQorCisKKyMgSW5kaWNhdGUgdGhlIGVuZCBvZiBMTEludC4KK19s
bGludF9lbmQ6CisgICAgY3Jhc2goKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVB
c21Db25maWcuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKKyNpbmNsdWRl
ICJMTEludEFzc2VtYmx5LmgiCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorI2RlZmluZSBMb3dMZXZlbEludGVy
cHJldGVyX2gKKworI2luY2x1ZGUgIk9wY29kZS5oIgorCisjZGVmaW5lIExMSU5UX0lOU1RSVUNU
SU9OX0RFQ0wob3Bjb2RlLCBsZW5ndGgpIGV4dGVybiAiQyIgdm9pZCBsbGludF8jI29wY29kZSgp
OworICAgIEZPUl9FQUNIX09QQ09ERV9JRChMTElOVF9JTlNUUlVDVElPTl9ERUNMKTsKKyN1bmRl
ZiBMTElOVF9JTlNUUlVDVElPTl9ERUNMCisKK2V4dGVybiAiQyIgdm9pZCBsbGludF9iZWdpbigp
OworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2VuZCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3By
b2dyYW1fcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9ldmFsX3Byb2xvZ3VlKCk7
CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUoKTsKK2V4
dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKCk7Citl
eHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2soKTsKK2V4
dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKCk7
CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQoKTsKK2V4dGVybiAi
QyIgdm9pZCBsbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lKCk7CitleHRlcm4gIkMi
IHZvaWQgbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSgpOworCisjZW5kaWYgLy8g
TG93TGV2ZWxJbnRlcnByZXRlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9hcm12Ny5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2FybXY3LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MyBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVyCisgIGRl
ZiBpbml0aWFsaXplKG5hbWUpCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFy
bVY3T3BlcmFuZAorICAgIEBuYW1lCisgIGVuZAorZW5kCisKK0FSTXY3X0RBVEFfUkVHID0gU3Bl
Y2lhbFJlZ2lzdGVyLm5ldygiaXAiKQorQVJNdjdfQUREUl9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIu
bmV3KCJyMyIpCisKK2RlZiBtb3ZlSW1tZWRpYXRlKHZhbHVlLCByZWdpc3RlcikKKyAgIyBDdXJy
ZW50bHkgd2Ugb25seSBoYW5kbGUgdGhlIHNpbXBsZSBjYXNlcywgYW5kIGZhbGwgYmFjayB0byBt
b3YvbW92dCBmb3IgdGhlIGNvbXBsZXggb25lcy4KKyAgaWYgdmFsdWUgPj0gMCAmJiB2YWx1ZSA8
IDI1NgorICAgICRhc20ucHV0cyAibW92dyBcIyN7dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3Bl
cmFuZH0iCisgIGVsc2lmICh+dmFsdWUpID49IDAgJiYgKH52YWx1ZSkgPCAyNTYKKyAgICAkYXNt
LnB1dHMgIm12bncgXCMje352YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxz
ZQorICAgICRhc20ucHV0cyAibW92dyBcIyN7dmFsdWUgJiAweGZmZmZ9LCAje3JlZ2lzdGVyLmFy
bVY3T3BlcmFuZH0iCisgICAgaWYgKHZhbHVlICYgMHhmZmZmMDAwMCkgIT0gMAorICAgICAgJGFz
bS5wdXRzICJtb3Z0IFwjI3t2YWx1ZSA+PiAxNn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIK
KyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVy
YW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiCisgICAgICAicjAi
CisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAgICAicjEiCisgICAgd2hlbiAidDIiLCAi
YTIiCisgICAgICAicjIiCisgICAgd2hlbiAiYTMiCisgICAgICAicjMiCisgICAgd2hlbiAidDMi
CisgICAgICAicjQiCisgICAgd2hlbiAidDQiCisgICAgICAicjciCisgICAgd2hlbiAiY2ZyIgor
ICAgICAgInI1IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBh
cm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisg
IGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBG
UFJlZ2lzdGVySUQKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4g
ImZ0MCIsICJmciIKKyAgICAgICJkMCIKKyAgICB3aGVuICJmcjEiLAorICAgICAgImQxIgorICAg
IHdoZW4gImZyMiIKKyAgICAgICJkMiIKKyAgICB3aGVuICJmcjMiCisgICAgICAiZDMiCisgICAg
d2hlbiAiZnI0IgorICAgICAgImQ0IgorICAgIHdoZW4gImZyNSIKKyAgICAgICJkNSIKKyAgICBl
bHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQ
b3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9y
eU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3Rv
cmVXcmFwCisgICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAg
ZGVmIGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJJbnZhbGlkIGltbWVkaWF0ZSAje3ZhbHVlfSIg
aWYgdmFsdWUgPCAwIG9yIHZhbHVlID4gMjU1CisgICAgIiMke3ZhbHVlfSIKKyAgZW5kCisgIAor
ICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVm
IGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAK
KyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkIHNlbGYKKyAgZW5kCitlbmQKKwor
bW9kdWxlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisg
ICAgc2VsZi5hcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICAkYXNtLnB1dHMg
Ilx0bGRyICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFuZH0sICN7QVJNdjdfREFUQV9S
RUcuYXJtVjdPcGVyYW5kfSIKKyAgICB5aWVsZCBBUk12N19EQVRBX1JFRworICAgICRhc20ucHV0
cyAiXHRzdHIgI3tBUk12N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9LCAje3NlbGYuYXJtVjdQb3Nz
aWJseU1lbW9yeU9wZXJhbmR9IgorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGluY2x1
ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVt
b3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+
IDB4ZmZmCisgICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1ZSwgQVJNdjdfQUREUl9SRUcp
CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisg
ICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAg
ICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfV0i
CisgICAgZWxzZQorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tvZmZzZXQuYXJtVjdP
cGVyYW5kfV0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBpbmNs
dWRlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1l
bW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAgICAgbW92ZUltbWVkaWF0
ZShvZmZzZXQudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICAgICAgJGFzbS5wdXRzICJhZGR3ICN7
QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfSwgI3tiYXNlLmFybVY3T3BlcmFuZH0iCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYg
b2Zmc2V0LnZhbHVlICE9IDAKKyAgICAgICJbI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9
LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGV9XSIKKyAgICBlbHNlCisgICAg
ICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7
c2NhbGV9XSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisg
IGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9z
c2libGVNZW1vcnlPcGVyYW5kCisgICAgbW92ZUltbWVkaWF0ZShhZGRyZXNzLnZhbHVlLCBBUk12
N19BRERSX1JFRykKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQK
KyAgICAiWyN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfV0iCisgIGVuZAorZW5kCisKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw4MyBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3Jl
cXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3Jl
cXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitjbGFzcyBBc3NlbWJsZXIK
KyAgZGVmIGluaXRpYWxpemUob3V0cCkKKyAgICBAb3V0cCA9IG91dHAKKyAgICBAc3RhdGUgPSA6
Y3BwCisgIGVuZAorICAKKyAgZGVmIGVudGVyQXNtCisgICAgQG91dHAucHV0cyAiYXNtICgiCisg
ICAgQHN0YXRlID0gOmFzbQorICBlbmQKKyAgCisgIGRlZiBsZWF2ZUFzbQorICAgIEBvdXRwLnB1
dHMgIik7IgorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBkZWYgaW5Bc20KKyAgICBl
bnRlckFzbQorICAgIHlpZWxkCisgICAgbGVhdmVBc20KKyAgZW5kCisgIAorICBkZWYgcHV0cyhs
aW5lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnB1dHMoKGxp
bmUgKyAiXG4iKS5pbnNwZWN0KQorICBlbmQKKyAgCisgIGRlZiBjb21tZW50KHRleHQpCisgICAg
QG91dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgZW5kCitlbmQKKworJGFzbSA9IEFzc2VtYmxlci5u
ZXcoJHN0ZG91dCkKKworYXNtRmlsZSA9IEFSR1Yuc2hpZnQKK29mZnNldHNGaWxlID0gQVJHVi5z
aGlmdAorCithc3QgPSBwYXJzZShsZXgoSU86OnJlYWQoYXNtRmlsZSkpKQorb2Zmc2V0c0xpc3Qs
IGNvbmZpZ0luZGV4ID0gb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChvZmZzZXRzRmlsZSkK
KworZm9yU2V0dGluZ3MoY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdClbY29uZmlnSW5k
ZXhdLCBhc3QpIHsKKyAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8
CisgIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAgbG93TGV2ZWxBU1Qg
PSBsb3dMZXZlbEFTVC5yZXNvbHZlKCpidWlsZE9mZnNldHNNYXAobG93TGV2ZWxBU1QsIG9mZnNl
dHNMaXN0KSkKKyAgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgbG93
TGV2ZWxBU1QsIGJhY2tlbmQpIHsKKyAgICAkYXNtLmluQXNtIHsKKyAgICAgIGxvd0xldmVsQVNU
Lmxvd2VyKGJhY2tlbmQpCisgICAgfQorICB9Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9hc3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxNyBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
IyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgQmFzZSB1dGlsaXR5IHR5cGVzIGZvciB0aGUgQVNULiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKworIyBWYWxpZCBtZXRob2RzIGZvciBOb2RlOgorIworIyBub2RlLmNoaWxkcmVuIC0+IFJl
dHVybnMgYW4gYXJyYXkgb2YgaW1tZWRpYXRlIGNoaWxkcmVuLgorIworIyBub2RlLmRlc2NlbmRl
bnRzIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHN0cmljdCBkZXNjZW5kYW50cyAoY2hpbGRy
ZW4KKyMgICAgIGFuZCBjaGlsZHJlbiBvZiBjaGlsZHJlbiwgdHJhbnNpdGl2ZWx5KS4KKyMKKyMg
bm9kZS5mbGF0dGVuIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgc3RyaWN0IGRl
c2NlbmRhbnRzIGFuZAorIyAgICAgdGhlIG5vZGUgaXRzZWxmLgorIworIyBub2RlLmZpbHRlcih0
eXBlKSAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhvc2UgZWxlbWVudHMgaW4KKyMg
ICAgIG5vZGUuZmxhdHRlbiB0aGF0IGFyZSBvZiB0aGUgZ2l2ZW4gdHlwZSAoaXNfYT8gdHlwZSBy
ZXR1cm5zIHRydWUpLgorIworIyBub2RlLm1hcENoaWxkcmVue3x2fCAuLi59IC0+IFJldHVybnMg
YSBuZXcgbm9kZSB3aXRoIGFsbCBjaGlsZHJlbgorIyAgICAgcmVwbGFjZWQgYWNjb3JkaW5nIHRv
IHRoZSBnaXZlbiBibG9jay4KKyMKKyMgRXhhbXBsZXM6CisjCisjIG5vZGUuZmlsdGVyKFNldHRp
bmcpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHNldHRpbmdzIHRoYXQgdGhlIEFTVCdzCisj
ICAgICBJZlRoZW5FbHNlIGJsb2NrcyBkZXBlbmQgb24uCisjCisjIG5vZGUuZmlsdGVyKFN0cnVj
dE9mZnNldCkudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc3RydWN0dXJlIG9mZnNldHMKKyMg
ICAgIHRoYXQgdGhlIEFTVCBkZXBlbmRzIG9uLgorCitjbGFzcyBOb2RlCisgIGF0dHJfcmVhZGVy
IDpjb2RlT3JpZ2luCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIEBjb2Rl
T3JpZ2luID0gY29kZU9yaWdpbgorICBlbmQKKyAgCisgIGRlZiBjb2RlT3JpZ2luU3RyaW5nCisg
ICAgImxpbmUgbnVtYmVyICN7QGNvZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBkZXNjZW5k
YW50cworICAgIGNoaWxkcmVuLmNvbGxlY3R7fHZ8IHYuZmxhdHRlbn0uZmxhdHRlbgorICBlbmQK
KyAgCisgIGRlZiBmbGF0dGVuCisgICAgW3NlbGZdICsgZGVzY2VuZGFudHMKKyAgZW5kCisgIAor
ICBkZWYgZmlsdGVyKHR5cGUpCisgICAgZmxhdHRlbi5zZWxlY3R7fHZ8IHYuaXNfYT8gdHlwZX0K
KyAgZW5kCitlbmQKKworY2xhc3MgTm9DaGlsZHJlbiA8IE5vZGUKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIFtdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgc2VsZgorICBl
bmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXRLZXkKKyAgYXR0cl9yZWFkZXIgOnN0cnVjdCwg
OmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShzdHJ1Y3QsIGZpZWxkKQorICAgIEBzdHJ1Y3Qg
PSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisgIGRlZiBoYXNoCisgICAg
QHN0cnVjdC5oYXNoICsgQGZpZWxkLmhhc2ggKiAzCisgIGVuZAorICAKKyAgZGVmIGVxbD8ob3Ro
ZXIpCisgICAgQHN0cnVjdCA9PSBvdGhlci5zdHJ1Y3QgYW5kIEBmaWVsZCA9PSBvdGhlci5maWVs
ZAorICBlbmQKK2VuZAorICAgIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
QVNUIG5vZGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3Mg
U3RydWN0T2Zmc2V0IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgICAgQGZpZWxkID0gZmllbGQK
KyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yRmllbGQoY29k
ZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBrZXkgPSBTdHJ1Y3RPZmZzZXRLZXkubmV3KHN0
cnVjdCwgZmllbGQpCisgICAgCisgICAgdW5sZXNzIEBAbWFwcGluZ1trZXldCisgICAgICBAQG1h
cHBpbmdba2V5XSA9IFN0cnVjdE9mZnNldC5uZXcoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkK
KyAgICBlbmQKKyAgICBAQG1hcHBpbmdba2V5XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
IiN7c3RydWN0fTo6I3tmaWVsZH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAgICBp
ZiBAc3RydWN0ICE9IG90aGVyLnN0cnVjdAorICAgICAgcmV0dXJuIEBzdHJ1Y3QgPD0+IG90aGVy
LnN0cnVjdAorICAgIGVuZAorICAgIEBmaWVsZCA8PT4gb3RoZXIuZmllbGQKKyAgZW5kCitlbmQK
KworY2xhc3MgU2l6ZW9mIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0CisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAg
CisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHVubGVzcyBAQG1h
cHBpbmdbc3RydWN0XQorICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBTaXplb2YubmV3KGNvZGVP
cmlnaW4sIHN0cnVjdCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbc3RydWN0XQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgInNpemVvZiAje0BzdHJ1Y3R9IgorICBlbmQKKyAgCisgIGRlZiA8
PT4ob3RoZXIpCisgICAgQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgIGVuZAorZW5kCisKK2Ns
YXNzIEltbWVkaWF0ZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnZhbHVlCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEB2YWx1ZSA9IHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3t2YWx1ZX0i
CisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIG90aGVyLmlzX2E/IEltbWVkaWF0ZSBh
bmQgb3RoZXIudmFsdWUgPT0gQHZhbHVlCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0
ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBBZGRJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJp
Z2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICsgI3tyaWdo
dC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0Cisg
ICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQs
IEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBTdWJJbW1lZGlhdGVz
Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IC0gI3tyaWdodC5kdW1wfSkiCisgIGVu
ZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0
LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmln
aHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5k
CisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBNdWxJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2lu
LCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICIoI3tsZWZ0LmR1bXB9ICogI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNz
IE5lZ0ltbWVkaWF0ZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBj
aGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BjaGlsZF0KKyAg
ZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOZWdJbW1lZGlhdGUubmV3KGNvZGVPcmln
aW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigtI3tAY2hp
bGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgor
ICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFt
ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisg
IEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gUmVn
aXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFt
ZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3Mg
RlBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2Vs
Zi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQor
ICAgICAgQEBtYXBwaW5nW25hbWVdID0gRlBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1l
KQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZSA8IE5vQ2hpbGRyZW4KKyAgYXR0
cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1h
cHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAg
IHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFZhcmlhYmxl
Lm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNz
IDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFzZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgYmFzZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QGJhc2UgPSBiYXNlCisgICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIFtAYmFzZSwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQG9mZnNl
dCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQuZHVtcH1bI3tiYXNlLmR1
bXB9XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6YmFzZSwgOmluZGV4LCA6c2NhbGUsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQGJhc2UgPSBiYXNlCisgICAgQGluZGV4ID0gaW5kZXgKKyAgICBAc2NhbGUgPSBz
Y2FsZQorICAgIHJhaXNlIHVubGVzcyBbMSwgMiwgNCwgOF0ubWVtYmVyPyBAc2NhbGUKKyAgICBA
b2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BiYXNlLCBA
aW5kZXgsIEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQmFzZUlu
ZGV4Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQGluZGV4KSwgQHNjYWxl
LCAoeWllbGQgQG9mZnNldCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQu
ZHVtcH1bI3tiYXNlLmR1bXB9LCAje2luZGV4LmR1bXB9LCAje3NjYWxlfV0iCisgIGVuZAorZW5k
CisKK2NsYXNzIEFic29sdXRlQWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmFk
ZHJlc3MKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGFkZHJlc3MpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICIje2FkZHJlc3MuZHVtcH1bXSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1
Y3Rpb24gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpvcGNvZGUsIDpvcGVyYW5kcworICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgb3Bjb2RlLCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBvcGNvZGUgPSBvcGNvZGUKKyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcwor
ICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVm
IG1hcENoaWxkcmVuKCZwcm9jKQorICAgIEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBAb3Bj
b2RlLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJc
dCIgKyBvcGNvZGUudG9fcyArICIgIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9p
bigiLCAiKQorICBlbmQKK2VuZAorCitjbGFzcyBFcnJvciA8IE5vQ2hpbGRyZW4KKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIlx0ZXJyb3IiCisgIGVuZAorZW5kCisKK2NsYXNzIENvbnN0RGVjbCA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnZhcmlhYmxlLCA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEB2YXJpYWJsZSA9IHZhcmlhYmxlCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAor
ICBkZWYgY2hpbGRyZW4KKyAgICBbQHZhcmlhYmxlLCBAdmFsdWVdCisgIGVuZAorICAKKyAgZGVm
IG1hcENoaWxkcmVuCisgICAgQ29uc3REZWNsLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHZhcmlh
YmxlKSwgKHlpZWxkIEB2YWx1ZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiY29uc3Qg
I3tAdmFyaWFibGUuZHVtcH0gPSAje0B2YWx1ZS5kdW1wfSIKKyAgZW5kCitlbmQKKworJGxhYmVs
TWFwcGluZyA9IHt9CisKK2NsYXNzIExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBzZWxmLmZvck5h
bWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICBy
YWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5n
W25hbWVdLmlzX2E/IExhYmVsCisgICAgZWxzZQorICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9
IExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdb
bmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQK
KworY2xhc3MgTG9jYWxMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisKKyAgQEB1bmlxdWVOYW1lQ291bnRlciA9IDAK
KyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxN
YXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0i
IHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExvY2FsTGFiZWwKKyAgICBlbHNlCisg
ICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTG9jYWxMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFt
ZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIHNl
bGYudW5pcXVlKGNvbW1lbnQpCisgICAgbmV3TmFtZSA9ICJfI3tjb21tZW50fSIKKyAgICBpZiAk
bGFiZWxNYXBwaW5nW25ld05hbWVdCisgICAgICB3aGlsZSAkbGFiZWxNYXBwaW5nW25ld05hbWUg
PSAiXyN7QEB1bmlxdWVOYW1lQ291bnRlcn1fI3tjb21tZW50fSJdCisgICAgICAgIEBAdW5pcXVl
TmFtZUNvdW50ZXIgKz0gMQorICAgICAgZW5kCisgICAgZW5kCisgICAgZm9yTmFtZShuaWwsIG5l
d05hbWUpCisgIGVuZAorICAKKyAgZGVmIGNsZWFuTmFtZQorICAgIGlmIG5hbWUgPX4gL15cLi8K
KyAgICAgICJfIiArIG5hbWVbMS4uLTFdCisgICAgZWxzZQorICAgICAgbmFtZQorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFz
cyBMYWJlbFJlZmVyZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0K
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBMYWJlbFJlZmVyZW5jZS5uZXcoY29k
ZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJl
bC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorZW5k
CisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVy
IDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTG9j
YWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAor
ICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICBsYWJlbC5uYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlIDwgTm9kZQorICBhdHRy
X3JlYWRlciA6bGlzdAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGlzdCkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsaXN0ID0gbGlzdAorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIGxpc3QKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisg
ICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIEBsaXN0Lm1hcCgmcHJvYykpCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICBsaXN0LmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiXG4iKQorICBl
bmQKK2VuZAorCitjbGFzcyBUcnVlIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQorICAg
IHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNlID0gVHJ1ZS5uZXcKKyAgCisgIGRl
ZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1ZQor
ICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJ0cnVlIgorICBlbmQKK2VuZAor
CitjbGFzcyBGYWxzZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihu
aWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IEZhbHNlLm5ldworICAKKyAgZGVmIHNlbGYu
aW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVmIHZhbHVlCisgICAgZmFs
c2UKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJmYWxzZSIKKyAgZW5kCitlbmQKKworY2xh
c3MgVHJ1ZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBUcnVlLmluc3RhbmNlCisgIGVuZAorZW5k
CisKK2NsYXNzIEZhbHNlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAgIEZhbHNlLmluc3RhbmNlCisg
IGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpu
YW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30K
KyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBt
YXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBTZXR0aW5nLm5ldyhjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQgPCBOb2RlCisgIGF0dHJf
cmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxl
ZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAg
QHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEBy
aWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBbmQubmV3KGNvZGVPcmln
aW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIigje2xlZnQuZHVtcH0gYW5kICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitj
bGFzcyBPciA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJl
bgorICAgIE9yLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IG9yICN7cmlnaHQuZHVt
cH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBOb3QgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpjaGls
ZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAY2hpbGQgPSBjaGlsZAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgor
ICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5v
dC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiKG5vdCAje2NoaWxkLmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgU2tpcCA8IE5v
Q2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0c2tpcCIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgSWZUaGVuRWxzZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnByZWRpY2F0ZSwgOnRoZW5D
YXNlCisgIGF0dHJfYWNjZXNzb3IgOmVsc2VDYXNlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBwcmVkaWNhdGUsIHRoZW5DYXNlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QHByZWRpY2F0ZSA9IHByZWRpY2F0ZQorICAgIEB0aGVuQ2FzZSA9IHRoZW5DYXNlCisgICAgQGVs
c2VDYXNlID0gU2tpcC5uZXcoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4K
KyAgICBpZiBAZWxzZUNhc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2UsIEBlbHNlQ2Fz
ZV0KKyAgICBlbHNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNlXQorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4s
ICh5aWVsZCBAcHJlZGljYXRlKSwgKHlpZWxkIEB0aGVuQ2FzZSksICh5aWVsZCBAZWxzZUNhc2Up
KQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImlmICN7cHJlZGljYXRlLmR1bXB9XG4iICsg
dGhlbkNhc2UuZHVtcCArICJcbmVsc2VcbiIgKyBlbHNlQ2FzZS5kdW1wICsgIlxuZW5kIgorICBl
bmQKK2VuZAorCitjbGFzcyBNYWNybyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5hbWUsIDp2YXJp
YWJsZXMsIDpib2R5CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCB2YXJp
YWJsZXMsIGJvZHkpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAg
ICBAdmFyaWFibGVzID0gdmFyaWFibGVzCisgICAgQGJvZHkgPSBib2R5CisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgQHZhcmlhYmxlcyArIFtAYm9keV0KKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBNYWNyby5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEB2YXJpYWJsZXMu
bWFwe3x2fCB5aWVsZCB2fSwgKHlpZWxkIEBib2R5KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICJtYWNybyAje25hbWV9KCIgKyB2YXJpYWJsZXMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2lu
KCIsICIpICsgIilcbiIgKyBib2R5LmR1bXAgKyAiXG5lbmQiCisgIGVuZAorZW5kCisKK2NsYXNz
IE1hY3JvQ2FsbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5hbWUsIDpvcGVyYW5kcworICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcworICAg
IHJhaXNlIHVubGVzcyBAb3BlcmFuZHMKKyAgICBAb3BlcmFuZHMuZWFjaHt8dnwgcmFpc2UgdW5s
ZXNzIHZ9CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgQG9wZXJhbmRzCisgIGVuZAor
ICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdp
biwgQG5hbWUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgIlx0I3tuYW1lfSgiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIp
ICsgIikiCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2JhY2tlbmRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVp
cmUgIng4NiIKKworQkFDS0VORFMgPQorICBbCisgICAiWDg2IiwKKyAgICJBUk12NyIKKyAgXQor
CitXT1JLSU5HX0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIKKyAgXQorCitCQUNLRU5EX1BBVFRF
Uk4gPSBSZWdleHAubmV3KCdcXEEoJyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFonKQor
CitjbGFzcyBOb2RlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIHNlbmQoImxvd2VyIiArIG5hbWUp
CisgIGVuZAorZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBsb3dlcigpIGZvciB0aG9zZSBub2RlcyB0
aGF0IGFyZSBiYWNrZW5kLWFnbm9zdGljCisKK2RlZiBzYW5pdGl6ZUxhYmVsTmFtZShuYW1lKQor
ICAjIFNvbWUgcGxhdGZvcm1zIGRvbid0IHdhbnQgdGhlIGxlYWRpbmcgIl8iLiBJZiB3ZSBldmVy
IHdhbnQgdG8gZG8gc29tZXRoaW5nCisgICMgYWJvdXQgdGhhdCwgaXQgd291bGQgYmUgaGVyZS4K
KyAgbmFtZQorZW5kCisKK2NsYXNzIExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAgICRhc20u
cHV0cyAiLmdsb2JsICN7c2FuaXRpemVMYWJlbE5hbWUoc2VsZi5uYW1lKX0iCisgICAgJGFzbS5w
dXRzICIje3Nhbml0aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9OiIKKyAgZW5kCitlbmQKKworY2xh
c3MgTG9jYWxMYWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHMgIl9fb2FfI3tz
ZWxmLm5hbWVbMS4uLTFdfToiCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAKKyAgZGVmIGxvd2Vy
KG5hbWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBsb3dlcihuYW1lKQor
ICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUubG93ZXIobmFtZSkK
KyAgICB9CisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29m
ZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKKyMhL3Vzci9i
aW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworJDog
PDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUg
Im9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUg
InRyYW5zZm9ybSIKKworZGVmIGVtaXRNYWdpY051bWJlcgorICBPRkZTRVRfTUFHSUNfTlVNQkVS
Uy5lYWNoIHsKKyAgICB8IG51bWJlciB8CisgICAgcHV0cyAiI3tudW1iZXJ9LCIKKyAgfQorZW5k
CisKK29yaWdpbmFsQVNUID0gcGFyc2UobGV4KCRzdGRpbi5yZWFkKSkKKworZW1pdENvZGVJbkFs
bENvbmZpZ3VyYXRpb25zKG9yaWdpbmFsQVNUKSB7CisgIHwgc2V0dGluZ3MsIGFzdCwgYmFja2Vu
ZCwgaW5kZXggfAorICBvZmZzZXRzTGlzdCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlx
LnNvcnQKKyAgc2l6ZXNMaXN0ID0gYXN0LmZpbHRlcihTaXplb2YpLnVuaXEuc29ydAorICAKKyAg
bGVuZ3RoID0gKE9GRlNFVF9NQUdJQ19OVU1CRVJTLnNpemUgKyAxKSAqICgxICsgb2Zmc2V0c0xp
c3Quc2l6ZSArIHNpemVzTGlzdC5zaXplKQorICAKKyAgcHV0cyAic3RhdGljIGNvbnN0IHVuc2ln
bmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICBlbWl0TWFnaWNOdW1iZXIKKyAg
cHV0cyAiI3tpbmRleH0sIgorICBvZmZzZXRzTGlzdC5lYWNoIHsKKyAgICB8IG9mZnNldCB8Cisg
ICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgcHV0cyAiT0ZGTElORV9BU01fT0ZGU0VUT0YoI3tvZmZz
ZXQuc3RydWN0fSwgI3tvZmZzZXQuZmllbGR9KSwiCisgIH0KKyAgc2l6ZXNMaXN0LmVhY2ggewor
ICAgIHwgb2Zmc2V0IHwKKyAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICBwdXRzICJzaXplb2YoI3tv
ZmZzZXQuc3RydWN0fSksIgorICB9CisgIHB1dHMgIn07IgorfQorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworTUFDUk9fSU5TVFJVQ1RJT05TID0KKyAgWworICAgImFkZGkiLAorICAgImFu
ZGkiLAorICAgImxzaGlmdGkiLAorICAgIm11bGkiLAorICAgIm5lZ2kiLAorICAgIm5vdGkiLAor
ICAgIm9yaSIsCisgICAicnNoaWZ0aSIsCisgICAidXJzaGlmdGkiLAorICAgInN1YmkiLAorICAg
InhvcmkiLAorICAgImxvYWRpIiwKKyAgICJsb2FkYiIsCisgICAibG9hZGgiLAorICAgInN0b3Jl
aSIsCisgICAic3RvcmViIiwKKyAgICJsb2FkZCIsCisgICAibW92ZWQiLAorICAgInN0b3JlZCIs
CisgICAiYWRkZCIsCisgICAiZGl2ZCIsCisgICAic3ViZCIsCisgICAibXVsZCIsCisgICAic3Fy
dGQiLAorICAgImNpMmQiLAorICAgImZpaTJkIiwgIyB1c2FnZTogZmlpMmQgPGdwciB3aXRoIGxl
YXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPiwg
PGZwcj4KKyAgICJmZDJpaSIsICMgdXNhZ2U6IGZkMmlpIDxmcHI+LCA8Z3ByIHdpdGggbGVhc3Qg
c2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+CisgICAi
YmRlcSIsCisgICAiYmRuZXEiLAorICAgImJkZ3QiLAorICAgImJkZ3RlcSIsCisgICAiYmRsdCIs
CisgICAiYmRsdGVxIiwKKyAgICJiZGVxdW4iLAorICAgImJkbmVxdW4iLAorICAgImJkZ3R1biIs
CisgICAiYmRndGVxdW4iLAorICAgImJkbHR1biIsCisgICAiYmRsdGVxdW4iLAorICAgImJ0ZDJp
IiwKKyAgICJ0ZDJpIiwKKyAgICJiY2QyaSIsCisgICAibW92ZHoiLAorICAgInBvcCIsCisgICAi
cHVzaCIsCisgICAibW92ZSIsCisgICAic3hpMnAiLAorICAgInp4aTJwIiwKKyAgICJub3AiLAor
ICAgImJpZXEiLAorICAgImJpbmVxIiwKKyAgICJiaWEiLAorICAgImJpYWVxIiwKKyAgICJiaWIi
LAorICAgImJpYmVxIiwKKyAgICJiaWd0IiwKKyAgICJiaWd0ZXEiLAorICAgImJpbHQiLAorICAg
ImJpbHRlcSIsCisgICAiYmJlcSIsCisgICAiYmJuZXEiLAorICAgImJiYSIsCisgICAiYmJhZXEi
LAorICAgImJiYiIsCisgICAiYmJiZXEiLAorICAgImJiZ3QiLAorICAgImJiZ3RlcSIsCisgICAi
YmJsdCIsCisgICAiYmJsdGVxIiwKKyAgICJidGlvIiwKKyAgICJidGlzIiwKKyAgICJidGl6IiwK
KyAgICJidGlueiIsCisgICAiYnRibyIsCisgICAiYnRicyIsCisgICAiYnRieiIsCisgICAiYnRi
bnoiLAorICAgImptcCIsCisgICAiYmFkZGlvIiwKKyAgICJiYWRkaXMiLAorICAgImJhZGRpeiIs
CisgICAiYmFkZGlueiIsCisgICAiYnN1YmlvIiwKKyAgICJic3ViaXMiLAorICAgImJzdWJpeiIs
CisgICAiYnN1YmlueiIsCisgICAiYm11bGlvIiwKKyAgICJibXVsaXMiLAorICAgImJtdWxpeiIs
CisgICAiYm11bGlueiIsCisgICAiYm9yaW8iLAorICAgImJvcmlzIiwKKyAgICJib3JpeiIsCisg
ICAiYm9yaW56IiwKKyAgICJicmVhayIsCisgICAiY2FsbCIsCisgICAicmV0IiwKKyAgICJjaWVx
IiwKKyAgICJjaW5lcSIsCisgICAiY2lhIiwKKyAgICJjaWFlcSIsCisgICAiY2liIiwKKyAgICJj
aWJlcSIsCisgICAiY2lndCIsCisgICAiY2lndGVxIiwKKyAgICJjaWx0IiwKKyAgICJjaWx0ZXEi
LAorICAgInRpbyIsCisgICAidGlzIiwKKyAgICJ0aXoiLAorICAgInRpbnoiLAorICAgInRibyIs
CisgICAidGJzIiwKKyAgICJ0YnoiLAorICAgInRibnoiLAorICAgInBlZWsiLAorICAgInBva2Ui
LAorICAgImJwZXEiLAorICAgImJwbmVxIiwKKyAgICJicGEiLAorICAgImJwYWVxIiwKKyAgICJi
cGIiLAorICAgImJwYmVxIiwKKyAgICJicGd0IiwKKyAgICJicGd0ZXEiLAorICAgImJwbHQiLAor
ICAgImJwbHRlcSIsCisgICAiYWRkcCIsCisgICAiYW5kcCIsCisgICAib3JwIiwKKyAgICJzdWJw
IiwKKyAgICJ4b3JwIiwKKyAgICJsb2FkcCIsCisgICAiY3BlcSIsCisgICAiY3BuZXEiLAorICAg
ImNwYSIsCisgICAiY3BhZXEiLAorICAgImNwYiIsCisgICAiY3BiZXEiLAorICAgImNwZ3QiLAor
ICAgImNwZ3RlcSIsCisgICAiY3BsdCIsCisgICAiY3BsdGVxIiwKKyAgICJzdG9yZXAiLAorICAg
ImJ0cG8iLAorICAgImJ0cHMiLAorICAgImJ0cHoiLAorICAgImJ0cG56IiwKKyAgICJiYWRkcG8i
LAorICAgImJhZGRwcyIsCisgICAiYmFkZHB6IiwKKyAgICJiYWRkcG56IgorICBdCisKK1g4Nl9J
TlNUUlVDVElPTlMgPQorICBbCisgICAiY2RxaSIsCisgICAiaWRpdmkiCisgIF0KKworSU5TVFJV
Q1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05TICsgWDg2X0lOU1RSVUNUSU9OUworCitJTlNUUlVD
VElPTl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgSU5TVFJVQ1RJT05TLmpvaW4oJyl8
KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29m
ZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rv
cl9jb25zdGFudHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01BR0lDX05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcs
IDB4MGZmNWU3NTUgXQorCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L29mZnNldHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vb2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU2IEBACisjIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJv
ZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cyIKKworT0ZGU0VUX01BR0lDX05VTUJFUlMgPSBbIDB4
ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBvZmZzZXRzTGlzdChhc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIHNpemVzTGlzdChhc3QpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBS
ZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCBzaXplcyB1c2VkIGJ5IHRoZSBBU1QuICAgICAg
ICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgb2Zm
c2V0c0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CitlbmQK
KworZGVmIHNpemVzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKK2Vu
ZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBvZmZzZXRzQW5kQ29uZmln
dXJhdGlvbkluZGV4KGFzdCwgZmlsZSkgLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
ICAgICBbb2Zmc2V0cywgaW5kZXhdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBQYXJzZXMgdGhlIG9mZnNldHMgZnJv
bSBhIGZpbGUgYW5kIHJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHRoZSAjCisjIGluZGV4
IG9mIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgaXMgdmFsaWQgaW4gdGhpcyBidWlsZCB0YXJnZXQu
ICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBvZmZzZXRz
QW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUpCisgIGluZGV4ID0gbmlsCisgIG9mZnNldHMgPSBb
XQorICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBuaWwKKyAgCisgIGRlZiByZWFkSW50KGVuZGlh
bm5lc3MsIGlucCkKKyAgICBieXRlcyA9IFtdCisgICAgNC50aW1lcyB7CisgICAgICBieXRlcyA8
PCBpbnAuZ2V0Ynl0ZQorICAgIH0KKyAgICAKKyAgICBpZiBlbmRpYW5uZXNzID09IDpsaXR0bGUK
KyAgICAgICMgTGl0dGxlIGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDAgfAorICAgICAgIGJ5
dGVzWzFdIDw8IDggfAorICAgICAgIGJ5dGVzWzJdIDw8IDE2IHwKKyAgICAgICBieXRlc1szXSA8
PCAyNCkKKyAgICBlbHNlCisgICAgICAjIEJpZyBlbmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAy
NCB8CisgICAgICAgYnl0ZXNbMV0gPDwgMTYgfAorICAgICAgIGJ5dGVzWzJdIDw8IDggfAorICAg
ICAgIGJ5dGVzWzNdIDw8IDApCisgICAgZW5kCisgIGVuZAorICAKKyAgWzpsaXR0bGUsIDpiaWdd
LmVhY2ggeworICAgIHwgZW5kaWFubmVzcyB8CisgICAgbWFnaWNCeXRlcyA9IFtdCisgICAgTUFH
SUNfTlVNQkVSUy5lYWNoIHsKKyAgICAgIHwgbnVtYmVyIHwKKyAgICAgIGN1cnJlbnRCeXRlcyA9
IFtdCisgICAgICA0LnRpbWVzIHsKKyAgICAgICAgY3VycmVudEJ5dGVzIDw8IChudW1iZXIgJiAw
eGZmKQorICAgICAgICBudW1iZXIgPj49IDgKKyAgICAgIH0KKyAgICAgIGlmIGVuZGlhbm5lc3Mg
PT0gOmJpZworICAgICAgICBjdXJyZW50Qnl0ZXMucmV2ZXJzZSEKKyAgICAgIGVuZAorICAgICAg
bWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0ZXMKKyAgICB9CisgICAgCisgICAgRmlsZS5vcGVuKGZp
bGUsICJyIikgeworICAgICAgfCBpbnAgfAorICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAg
IGxvb3AgeworICAgICAgICBieXRlID0gaW5wLmdldGJ5dGUKKyAgICAgICAgYnJlYWsgdW5sZXNz
IGJ5dGUKKyAgICAgICAgaWYgYnl0ZSA9PSBtYWdpY0J5dGVzW3doZXJlSW5NYXJrZXJdCisgICAg
ICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisgICAgICAgICAgaWYgd2hlcmVJbk1hcmtlciA9PSBt
YWdpY0J5dGVzLnNpemUKKyAgICAgICAgICAgICMgV2UgaGF2ZSBhIG1hdGNoISBJZiB3ZSBoYXZl
IG5vdCB5ZXQgcmVhZCB0aGUgZW5kaWFubmVzcyBtYXJrZXIgYW5kIGluZGV4LAorICAgICAgICAg
ICAgIyB0aGVuIHJlYWQgdGhvc2Ugbm93OyBvdGhlcndpc2UgcmVhZCBhbiBvZmZzZXQuCisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGlmIG5vdCBpbmRleAorICAgICAgICAgICAgICBpbmRleCA9
IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICBvZmZzZXRzIDw8IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAgICAgZW5kCisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICAgICAgZW5k
CisgICAgICAgIGVsc2UKKyAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICBlbmQK
KyAgICAgIH0KKyAgICB9CisgICAgCisgICAgYnJlYWsgaWYgaW5kZXgKKyAgfQorICAKKyAgcmFp
c2UgdW5sZXNzIGluZGV4CisgIAorICBbb2Zmc2V0cywgaW5kZXhdCitlbmQKKworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgYnVpbGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xp
c3QpIC0+IFtvZmZzZXRzLCBzaXplc10gICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIEJ1aWxkcyBhIG1hcHBpbmcgYmV0d2VlbiBTdHJ1Y3RPZmZzZXQgbm9kZXMgYW5kIHRoZWly
IHZhbHVlcy4gICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Rl
ZiBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkKKyAgb2Zmc2V0c01hcCA9IHt9Cisg
IHNpemVzTWFwID0ge30KKyAgYXN0T2Zmc2V0c0xpc3QgPSBvZmZzZXRzTGlzdChhc3QpCisgIGFz
dFNpemVzTGlzdCA9IHNpemVzTGlzdChhc3QpCisgIHJhaXNlIHVubGVzcyBhc3RPZmZzZXRzTGlz
dC5zaXplICsgYXN0U2l6ZXNMaXN0LnNpemUgPT0gb2Zmc2V0c0xpc3Quc2l6ZQorICBvZmZzZXRz
TGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBzdHJ1Y3RPZmZzZXQsIGluZGV4IHwK
KyAgICBvZmZzZXRzTWFwW3N0cnVjdE9mZnNldF0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9Cisg
IHNpemVzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBzaXplb2YsIGluZGV4IHwK
KyAgICBzaXplc01hcFtzaXplb2ZdID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQorICBbb2Zmc2V0
c01hcCwgc2l6ZXNNYXBdCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vcGFyc2VyLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OTEgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUg
Imluc3RydWN0aW9ucyIKK3JlcXVpcmUgInJlZ2lzdGVycyIKKworY2xhc3MgVG9rZW4KKyAgYXR0
cl9yZWFkZXIgOmNvZGVPcmlnaW4sIDpzdHJpbmcKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIHN0cmluZykKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgICBAc3RyaW5n
ID0gc3RyaW5nCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIGlmIG90aGVyLmlzX2E/
IFRva2VuCisgICAgICBAc3RyaW5nID09IG90aGVyLnN0cmluZworICAgIGVsc2UKKyAgICAgIEBz
dHJpbmcgPT0gb3RoZXIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgPX4ob3RoZXIpCisgICAg
QHN0cmluZyA9fiBvdGhlcgorICBlbmQKKyAgCisgIGRlZiB0b19zCisgICAgIiN7QHN0cmluZy5p
bnNwZWN0fSBhdCBsaW5lICN7Y29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJy
b3IoKmNvbW1lbnQpCisgICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgIHJhaXNlICJQYXJzZSBl
cnJvcjogI3t0b19zfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9f
c306ICN7Y29tbWVudFswXX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIFRoZSBsZXhlci4gVGFrZXMgYSBzdHJpbmcgYW5kIHJldHVy
bnMgYW4gYXJyYXkgb2YgdG9rZW5zLiAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisKK2RlZiBsZXgoc3RyKQorICByZXN1bHQgPSBbXQorICBsaW5lTnVtYmVy
ID0gMQorICB3aGlsZSBub3Qgc3RyLmVtcHR5PworICAgIGNhc2Ugc3RyCisgICAgd2hlbiAvXEFc
IyhbXlxuXSopLworICAgICAgIyBjb21tZW50LCBpZ25vcmUKKyAgICB3aGVuIC9cQVxuLworICAg
ICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICAgIGxpbmVOdW1iZXIg
Kz0gMQorICAgIHdoZW4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQg
PDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBXC4oW2EtekEtWjAtOV9d
KikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4g
L1xBXyhbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJl
ciwgJCYpCisgICAgd2hlbiAvXEEoWyBcdF0rKS8KKyAgICAgICMgd2hpdGVzcGFjZSwgaWdub3Jl
CisgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5l
dyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAgICB3aGVuIC9cQTAoWzAtN10rKS8KKyAgICAg
IHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYub2N0LnRvX3MpCisgICAgd2hlbiAv
XEEoWzAtOV0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisg
ICAgd2hlbiAvXEE6Oi8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYp
CisgICAgd2hlbiAvXEFbOixcKFwpXFtcXT1cK1wtKl0vCisgICAgICByZXN1bHQgPDwgVG9rZW4u
bmV3KGxpbmVOdW1iZXIsICQmKQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJMZXhlciBlcnJvciBh
dCBsaW5lIG51bWJlciAje2xpbmVOdW1iZXJ9LCB1bmV4cGVjdGVkIHNlcXVlbmNlICN7c3RyWzAu
LjIwXS5pbnNwZWN0fSIKKyAgICBlbmQKKyAgICBzdHIgPSAkfi5wb3N0X21hdGNoCisgIGVuZAor
ICByZXN1bHQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUb2tl
biBpZGVudGlmaWNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgaXNSZWdp
c3Rlcih0b2tlbikKKyAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTgorZW5kCisKK2RlZiBpc0lu
c3RydWN0aW9uKHRva2VuKQorICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKwor
ZGVmIGlzS2V5d29yZCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBKCh0cnVlKXwoZmFsc2UpfChpZil8
KHRoZW4pfChlbHNlKXwoZWxzaWYpfChlbmQpfChhbmQpfChvcil8KG5vdCl8KG1hY3JvKXwoY29u
c3QpfChzaXplb2YpfChlcnJvcikpXFovIG9yCisgICAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVS
TiBvcgorICAgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJZGVu
dGlmaWVyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKVxaLyBh
bmQgbm90IGlzS2V5d29yZCh0b2tlbikKK2VuZAorCitkZWYgaXNMYWJlbCh0b2tlbikKKyAgdG9r
ZW4gPX4gL1xBXyhbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc0xvY2FsTGFiZWwodG9r
ZW4pCisgIHRva2VuID1+IC9cQVwuKFthLXpBLVowLTlfXSopXFovCitlbmQKKworZGVmIGlzVmFy
aWFibGUodG9rZW4pCisgIGlzSWRlbnRpZmllcih0b2tlbikgb3IgaXNSZWdpc3Rlcih0b2tlbikK
K2VuZAorCitkZWYgaXNJbnRlZ2VyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbMC05XS8KK2VuZAor
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgcGFyc2VyLiBUYWtlcyBh
biBhcnJheSBvZiB0b2tlbnMgYW5kIHJldHVybnMgYW4gQVNULiBNZXRob2RzICAgICAjCisjIG90
aGVyIHRoYW4gcGFyc2UodG9rZW5zKSBhcmUgbm90IGZvciBwdWJsaWMgY29uc3VtcHRpb24uICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIFBh
cnNlcgorICBkZWYgaW5pdGlhbGl6ZSh0b2tlbnMpCisgICAgQHRva2VucyA9IHRva2VucworICAg
IEBpZHggPSAwCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYg
QHRva2Vuc1tAaWR4XQorICAgICAgQHRva2Vuc1tAaWR4XS5wYXJzZUVycm9yKCpjb21tZW50KQor
ICAgIGVsc2UKKyAgICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICAgIHJhaXNlICJQYXJzZSBl
cnJvciBhdCBlbmQgb2YgZmlsZSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlBhcnNlIGVy
cm9yIGF0IGVuZCBvZiBmaWxlOiAje2NvbW1lbnRbMF19IgorICAgICAgZW5kCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIGNvbnN1bWUocmVnZXhwKQorICAgIGlmIHJlZ2V4cAorICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9fiByZWdleHAKKyAgICBlbHNlCisgICAgICBw
YXJzZUVycm9yIHVubGVzcyBAaWR4ID09IEB0b2tlbnMubGVuZ3RoCisgICAgZW5kCisgICAgQGlk
eCArPSAxCisgIGVuZAorICAKKyAgZGVmIHNraXBOZXdMaW5lCisgICAgd2hpbGUgQHRva2Vuc1tA
aWR4XSA9PSAiXG4iCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYg
cGFyc2VQcmVkaWNhdGVBdG9tCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibm90IgorICAgICAg
QGlkeCArPSAxCisgICAgICBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICBlbHNpZiBAdG9rZW5zW0Bp
ZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmVz
dWx0ID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlk
eF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gInRydWUiCisgICAgICByZXN1bHQgPSBUcnVlLmluc3RhbmNlCisgICAgICBA
aWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImZhbHNl
IgorICAgICAgcmVzdWx0ID0gRmFsc2UuaW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAgICAg
cmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3Vs
dCA9IFNldHRpbmcuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlk
eF0uc3RyaW5nKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAg
ICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQW5k
CisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4
XSA9PSAiYW5kIgorICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgor
ICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVBy
ZWRpY2F0ZUF0b20KKyAgICAgIHJlc3VsdCA9IEFuZC5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCBy
aWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNh
dGUKKyAgICAjIHNvbWUgZXhhbXBsZXMgb2YgcHJlY2VkZW5jZToKKyAgICAjIG5vdCBhIGFuZCBi
IC0+IChub3QgYSkgYW5kIGIKKyAgICAjIGEgYW5kIGIgb3IgYyAtPiAoYSBhbmQgYikgb3IgYwor
ICAgICMgYSBvciBiIGFuZCBjIC0+IGEgb3IgKGIgYW5kIGMpCisgICAgCisgICAgcmVzdWx0ID0g
cGFyc2VQcmVkaWNhdGVBbmQKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJvciIKKyAgICAg
IGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQor
ICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICAg
IHJlc3VsdCA9IE9yLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAg
IHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVZhcmlhYmxlCisgICAgaWYgaXNSZWdpc3Rl
cihAdG9rZW5zW0BpZHhdKQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9fiBGUFJfUEFUVEVSTgor
ICAgICAgICByZXN1bHQgPSBGUFJlZ2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgZWxzZQorICAgICAgICByZXN1bHQg
PSBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0Bp
ZHhdLnN0cmluZykKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0Bp
ZHhdKQorICAgICAgcmVzdWx0ID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IK
KyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFy
c2VBZGRyZXNzKG9mZnNldCkKKyAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09
ICJbIgorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAKKyAg
ICAjIFRocmVlIHBvc3NpYmlsaXRpZXM6CisgICAgIyBbXSAgICAgICAtPiBBYnNvbHV0ZUFkZHJl
c3MKKyAgICAjIFthXSAgICAgIC0+IEFkZHJlc3MKKyAgICAjIFthLGJdICAgIC0+IEJhc2VJbmRl
eCB3aXRoIHNjYWxlID0gMQorICAgICMgW2EsYixjXSAgLT4gQmFzZUluZGV4CisgICAgCisgICAg
QGlkeCArPSAxCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgcmV0dXJuIEFic29sdXRlQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0KQorICAg
IGVuZAorICAgIGEgPSBwYXJzZVZhcmlhYmxlCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIK
KyAgICAgIHJlc3VsdCA9IEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIGEsIG9mZnNldCkKKyAgICBl
bHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAg
QGlkeCArPSAxCisgICAgICBiID0gcGFyc2VWYXJpYWJsZQorICAgICAgaWYgQHRva2Vuc1tAaWR4
XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBi
LCAxLCBvZmZzZXQpCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tl
bnNbQGlkeF0gPT0gIiwiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVu
bGVzcyBbIjEiLCAiMiIsICI0IiwgIjgiXS5tZW1iZXI/IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisg
ICAgICAgIGMgPSBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICBy
ZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIGMsIG9mZnNldCkKKyAgICAg
IGVuZAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRl
ZiBwYXJzZUNvbG9uQ29sb24KKyAgICBza2lwTmV3TGluZQorICAgIGNvZGVPcmlnaW4gPSBAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIg
QHRva2Vuc1tAaWR4XQorICAgIG5hbWVzID0gW0B0b2tlbnNbQGlkeF0uc3RyaW5nXQorICAgIEBp
ZHggKz0gMQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIjo6IgorICAgICAgQGlkeCArPSAx
CisgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAg
ICAgbmFtZXMgPDwgQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgIEBpZHggKz0gMQorICAgIGVu
ZAorICAgIHJhaXNlIGlmIG5hbWVzLmVtcHR5PworICAgIFtjb2RlT3JpZ2luLCBuYW1lc10KKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHNraXBOZXdMaW5lCisgICAg
aWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgTmVnSW1tZWRp
YXRlLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCBwYXJzZUV4cHJlc3Npb25BdG9t
KQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAgICAg
IHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vu
c1tAaWR4XSA9PSAiKSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYg
aXNJbnRlZ2VyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IEltbWVkaWF0ZS5uZXcoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pKQorICAgICAg
QGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tA
aWR4XQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIGlm
IG5hbWVzLnNpemUgPiAxCisgICAgICAgIFN0cnVjdE9mZnNldC5mb3JGaWVsZChjb2RlT3JpZ2lu
LCBuYW1lc1swLi4tMl0uam9pbignOjonKSwgbmFtZXNbLTFdKQorICAgICAgZWxzZQorICAgICAg
ICBWYXJpYWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzWzBdKQorICAgICAgZW5kCisgICAg
ZWxzaWYgaXNSZWdpc3RlciBAdG9rZW5zW0BpZHhdCisgICAgICBwYXJzZVZhcmlhYmxlCisgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIgorICAgICAgQGlkeCArPSAxCisgICAgICBj
b2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAgU2l6ZW9mLmZvck5hbWUo
Y29kZU9yaWdpbiwgbmFtZXMuam9pbignOjonKSkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9y
CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbk11bAorICAgIHNraXBO
ZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHdoaWxlIEB0b2tl
bnNbQGlkeF0gPT0gIioiCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gTXVsSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4
IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAgZWxz
ZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAor
ICAKKyAgZGVmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgQHRva2Vuc1tAaWR4XSA9PSAiLSIgb3Ig
QHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIiBvciBpc0ludGVnZXIoQHRva2Vuc1tAaWR4XSkgb3Ig
aXNWYXJpYWJsZShAdG9rZW5zW0BpZHhdKQorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Np
b24KKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbk11bAorICAg
IHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVz
dWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVz
dWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIt
IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gU3ViSW1tZWRpYXRlcy5uZXco
QHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwp
CisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1
bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1lbnQpCisgICAgaWYgY291bGRC
ZUV4cHJlc3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRkcmVzcyhleHByKQorICAgICAgZWxzZQor
ICAgICAgICBleHByCisgICAgICBlbmQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJbIgor
ICAgICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCAwKSkKKyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IExh
YmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExhYmVsLmZvck5hbWUo
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBA
aWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0Bp
ZHhdCisgICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4s
IEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0Cisg
ICAgZWxzZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50KQorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb25zdW1lKC9c
QVwoXFovKQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAgbG9vcCB7CisgICAgICBza2lwTmV3TGlu
ZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIGJyZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAg
ICAgdmFyaWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBO
ZXdMaW5lCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIK
KyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IK
KyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IKKyAgICAgIGVuZAor
ICAgIH0KKyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAorICBkZWYgcGFyc2VTZXF1ZW5jZShmaW5h
bCwgY29tbWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4KKyAgICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAgICAgIGlmIChAaWR4ID09IEB0b2tlbnMu
bGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5h
bCkKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAg
ICAgICAjIGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxl
c3MgaXNWYXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUu
Zm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4
XSA9PSAiPSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhbHVlID0gcGFyc2VPcGVyYW5k
KCJ3aGlsZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5uYW1lfSIpCisgICAgICAgIGxpc3Qg
PDwgQ29uc3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1
ZSkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImVycm9yIgorICAgICAgICBsaXN0IDw8
IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4pCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAgICAgIGNvZGVPcmlnaW4gPSBA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBO
ZXdMaW5lCisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgIGNvbnN1
bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWZU
aGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VTZXF1
ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRlIG9mIFwiaWYg
I3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBsaXN0IDw8IGlmVGhlbkVsc2UKKyAgICAg
ICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisgICAgICAgICAgY29kZU9yaWdpbiA9
IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
IHNraXBOZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAg
ICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgICAgc2tpcE5ld0xpbmUK
KyAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0
ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5z
aWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICAgIGlmVGhlbkVsc2Uu
ZWxzZUNhc2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlmVGhlbkVsc2UgPSBlbHNlQ2FzZQorICAg
ICAgICBlbmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiZWxzZSIKKyAgICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gcGFyc2VTZXF1ZW5jZSgv
XEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNlIGZvciBcImlmICN7cHJlZGljYXRl
LmR1bXB9XCIiKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAg
cGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiZW5kIgorICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgor
ICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBp
c0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0u
c3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3Jv
VmFyaWFibGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxl
IGluc2lkZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGxp
c3QgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICAg
IGVsc2lmIGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0g
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0
cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9
PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAg
ICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5kIGl0J3MgdGhlIGxhc3Qgb25l
LgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtd
KQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgor
ICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLgorICAgICAgICAgIGxpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBJdCdzIGRlZmluaXRlbHkgYW4gaW5zdHJ1Y3Rp
b24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJhbmQuCisgICAgICAgICAgb3BlcmFuZHMg
PSBbXQorICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxzZQorICAgICAgICAgIGxvb3Agewor
ICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgaW5z
dHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09
IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAg
ICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uIGFuZCBvZiB0aGUgc2VxdWVu
Y2UuCisgICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSB0cnVlCisgICAgICAgICAgICAgIGJy
ZWFrCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgICAg
ICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgICAgICMgVGhlIGVu
ZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
ICAgICBicmVhaworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBwYXJzZUVycm9yKCJF
eHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFsfSBhZnRlciAje29wZXJhbmRzLmxh
c3QuZHVtcH0iKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgfQorICAgICAgICAgIGxpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAgICAg
IGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgZW5kCisgICAg
ICAgIGVuZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAg
Y29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRv
a2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIEB0b2tlbnNb
QGlkeF0gPT0gIigiCisgICAgICAgICAgIyBNYWNybyBpbnZvY2F0aW9uLgorICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgICAgc2tpcE5l
d0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAgICAg
ICAgICAgICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQorICAgICAgICAgICAgICAgIGNvZGVPcmln
aW5Jbm5lciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAg
ICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNp
ZGUgb2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1bWVudCB0byAje25hbWV9IikKKyAg
ICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBNYWNy
by5uZXcoY29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlhYmxlcywgYm9keSkKKyAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUg
aW5zaWRlIG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICIpIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAgICAg
QGlkeCArPSAxCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9y
ICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5zcGVjdH0gd2hpbGUgcGFyc2lu
ZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAgICAgICAgIGVuZAorICAgICAg
ICAgICAgfQorICAgICAgICAgIGVuZAorICAgICAgICAgIGxpc3QgPDwgTWFjcm9DYWxsLm5ldyhj
b2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNl
RXJyb3IgIkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFtZX0iCisgICAgICAgIGVuZAorICAgICAg
ZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhd
CisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAg
bmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBw
YXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI6IgorICAgICAgICAjIEl0J3MgYSBs
YWJlbC4KKyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAgICAgbGlzdCA8PCBMYWJlbC5m
b3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVsc2UKKyAgICAgICAgICBsaXN0IDw8
IExvY2FsTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbmQKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgIkV4cGVjdGluZyB0
ZXJtaW5hbCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVl
bmNlLm5ldyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisgIGVuZAorZW5kCisKK2RlZiBwYXJzZSh0
b2tlbnMpCisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9rZW5zKQorICBwYXJzZXIucGFyc2VTZXF1
ZW5jZShuaWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3JlZ2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK0dQUlMgPQorICBbCisgICAi
dDAiLAorICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMiLAorICAgInQ0IiwKKyAgICJjZnIiLAor
ICAgImEwIiwKKyAgICJhMSIsCisgICAicjAiLAorICAgInIxIiwKKyAgICJzcCIKKyAgXQorCitG
UFJTID0KKyAgWworICAgImZ0MCIsCisgICAiZnQxIiwKKyAgICJmdDIiLAorICAgImZ0MyIsCisg
ICAiZnQ0IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisgICAiZmExIiwKKyAgICJmYTIiLAorICAg
ImZhMyIsCisgICAiZnIiCisgIF0KKworUkVHSVNURVJTID0gR1BSUyArIEZQUlMKKworR1BSX1BB
VFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykK
K0ZQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgRlBSUy5qb2luKCcpfCgnKSArICcp
KVxcWicpCisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBSRUdJU1RF
UlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vc2V0dGluZ3MucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMjEg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIK
K3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAidHJhbnNmb3Jt
IgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBjb21wdXRlU2V0dGluZ3ND
b21iaW5hdGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25zICAgICAgICAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkgb2Ygc2V0dGluZ3MgbWFwcywgd2hl
cmUgYSBzZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMgIworIyBhIGNvbmZpZ3VyYXRpb24gZm9yIHRo
ZSBhc3NlbWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIG1hcCAgICAgICAjCisjIGNvbnRh
aW5zIGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBzZXR0aW5ncyBuYW1lcyAoc3RyaW5n
cykgYW5kICMKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVhbnMgKHRydWUgZm9yIGVuYWJsZWQsIGZh
bHNlIGZvciBkaXNhYmxlZCkuICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKworZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIHNldHRpbmdzQ29t
YmluYXRpb25zID0gW10KKyAgCisgIGRlZiBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21i
aW5hdGlvbnMsIG1hcFNvRmFyLCByZW1haW5pbmcpCisgICAgaWYgcmVtYWluaW5nLmVtcHR5Pwor
ICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFwU29GYXIKKyAgICAgIHJldHVybgorICAg
IGVuZAorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5p
bmdbMF1dID0gdHJ1ZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9u
cywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFy
LmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gZmFsc2UKKyAgICBzZXR0aW5nc0NvbWJp
bmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAg
ZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIHt9LCAo
YXN0LmZpbHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7fHZ8IHYubmFtZX0gKyBbIlg4NiIsICJB
Uk12NyJdKS51bmlxKQorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMKK2VuZAorCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdz
LCBhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICB8IGNvbmNy
ZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwgLi4uIH0gICAgICAgICAgICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBEZXRlcm1pbmVzIGlmIHRoZSBzZXR0aW5ncyBjb21iaW5h
dGlvbiBpcyB2YWxpZCwgYW5kIGlmIHNvLCBjYWxscyAgICAjCisjIHRoZSBibG9jayB3aXRoIHRo
ZSBpbmZvcm1hdGlvbiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBjb2RlLiAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JTZXR0aW5ncyhjb25jcmV0
ZVNldHRpbmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0aGlzIGNvbWJp
bmF0b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWltZWRCYWNrZW5kcyA9IDAKKyAgc2Vs
ZWN0ZWRCYWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2ggeworICAgIHwgYmFja2VuZCB8Cisg
ICAgaXNTdXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2JhY2tlbmRdCisgICAgcmFpc2UgdW5s
ZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWltZWRCYWNrZW5kcyArPSBpZiBpc1N1
cHBvcnRlZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlzU3VwcG9ydGVkCisgICAgICBzZWxl
Y3RlZEJhY2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0KKyAgCisgIHJldHVybiBpZiBudW1D
bGFpbWVkQmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUgdGhlIEFTVCBkb3duIHRvIGEgbG93
LWxldmVsIGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25hbHMpLgorICBsb3dMZXZlbEFTVCA9
IGFzdC5yZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIHlpZWxkIGNvbmNy
ZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJhY2tlbmQKK2VuZAorCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0
aW9uKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICB8IGNvbmNy
ZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAgICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFz
dCwgc2V0dGluZ3NDb21iaW5hdGlvbnMpIHsgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0
dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBFeGVjdXRlcyB0aGUgZ2l2ZW4gYmxvY2sgZm9yIGVhY2ggdmFsaWQg
c2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlICAjCisjIHNldHRpbmdzIG1hcC4gVGhlIGFzdCBw
YXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQgICAgICAgICAgICAgICMKKyMgKGFzdC5y
ZXNvbHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBmaXJzdCBmb3JtIHdpbGwgY2FsbCBjb21w
dXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSBmb3IgeW91LiAgICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9u
KGFzdCwgKm9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMpCisgIHJhaXNlIGlmIG9wdGlvbmFs
U2V0dGluZ3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEKKyAgCisgIGlmIG9wdGlvbmFsU2V0dGluZ3ND
b21iaW5hdGlvbnMuZW1wdHk/CisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBjb21wdXRlU2V0
dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBlbHNlCisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMg
PSBvcHRpb25hbFNldHRpbmdzQ29tYmlhdGlvbnNbMF0KKyAgZW5kCisgIAorICBzZXR0aW5nc0Nv
bWJpbmF0aW9ucy5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgaW5k
ZXggfAorICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgeworICAgICAgfCBj
b25jcmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgICAgeWllbGQgY29u
Y3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgfQorICB9Citl
bmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgY3BwU2V0dGluZ3NUZXN0
KGNvbmNyZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIFJldHVybnMgdGhlIEMrKyBjb2RlIHVzZWQgdG8gdGVzdCBpZiB3
ZSBhcmUgaW4gYSBjb25maWd1cmF0aW9uIHRoYXQgICMKKyMgY29ycmVzcG9uZHMgdG8gdGhlIGdp
dmVuIGNvbmNyZXRlIHNldHRpbmdzLiAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGNwcFNldHRpbmdzVGVzdChjb25jcmV0
ZVNldHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdzLnRvX2EuY29sbGVjdHsKKyAg
ICB8IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisgICAgICAgIiIKKyAgICAgZWxzZQorICAgICAg
ICIhIgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIgKyBwYWlyWzBdCisgIH0uam9pbigiICYm
ICIpCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgaXNBU1RFcnJv
bmVvdXMoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIFRlc3RzIHRvIHNlZSBpZiB0aGUgQVNUIGNsYWltcyB0
aGF0IHRoZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUgICMKKyMgdXNlcidzIGNvZGUsIGFm
dGVyIHNldHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4gICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGlzQVNURXJyb25lb3VzKGFz
dCkKKyAgbm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5PworZW5kCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5n
cykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBF
bWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBnaXZlbiBjb25m
aWd1cmF0aW9uLiAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgYXNz
ZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICBwdXRzIGNwcFNldHRpbmdzVGVz
dChjb25jcmV0ZVNldHRpbmdzKQorICBwdXRzICIjZWxzZSIKKyAgcHV0cyAiI2Vycm9yIFwiQ29u
ZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAgcHV0cyAiI2VuZGlmIgorZW5kCisKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNy
ZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkgeyAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3Jl
dGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4uIH0gICAgICAgICAgICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIEVtaXRzIGFsbCByZWxldmFudCBndWFyZHMgdG8gc2VlIGlm
IHRoZSBjb25maWd1cmF0aW9uIGhvbGRzIGFuZCAgICAgICMKKyMgY2FsbHMgdGhlIGJsb2NrIGlm
IHRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBlcnJvbmVvdXMuICAgICAgICAgICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0
aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkKKyAgcHV0cyBjcHBTZXR0aW5nc1Rl
c3QoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIGlmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAgICBw
dXRzICIjZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uXCIiCisgIGVsc2lmIG5vdCBXT1JL
SU5HX0JBQ0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICBwdXRzICIjZXJyb3IgXCJUaGlzIGJh
Y2tlbmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UKKyAgICB5aWVsZCBjb25jcmV0
ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICBwdXRzICIjZW5kaWYiCitlbmQK
KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZW1pdENvZGVJbkFsbENvbmZp
Z3VyYXRpb25zKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAg
ICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAg
ICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRW1pdHMgZ3VhcmQgY29kZXMgZm9yIGFs
bCB2YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxzIHRoZSBibG9jayAgIworIyBmb3IgdGhv
c2UgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5kIG5vdCBlcnJvbmVvdXMuICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZW1pdENvZGVJ
bkFsbENvbmZpZ3VyYXRpb25zKGFzdCkKKyAgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlv
bihhc3QpIHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBp
bmRleCB8CisgICAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgICB5
aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICBw
dXRzICIjZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzNTIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUg
ImFzdCIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBo
YXZlIGFueSBJZlRoZW5FbHNlIG5vZGVzIGJ5ICAgICAgICMKKyMgc3Vic3RpdHV0aW5nIGNvbmNy
ZXRlIGJvb2xlYW4gdmFsdWVzIGZvciBlYWNoIFNldHRpbmcuICAgICAgICAgICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAor
ICAgICAgY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIH0KKyAgZW5kCitlbmQK
KworY2xhc3MgVHJ1ZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYK
KyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcKKyAgZGVmIHJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZXR0aW5nc1tAbmFtZV0uYXNOb2RlCisgIGVuZAorZW5k
CisKK2NsYXNzIEFuZAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVm
dC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIGFuZCBAcmlnaHQucmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE9yCisgIGRl
ZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykudmFsdWUgb3IgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUp
LmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBOb3QKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykKKyAgICAobm90IEBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVl
KS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZQorICBkZWYgcmVzb2x2ZVNl
dHRpbmdzKHNldHRpbmdzKQorICAgIGlmIEBwcmVkaWNhdGUucmVzb2x2ZVNldHRpbmdzKHNldHRp
bmdzKS52YWx1ZQorICAgICAgQHRoZW5DYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAg
ICBlbHNlCisgICAgICBAZWxzZUNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVu
ZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNl
dHRpbmdzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVt
IHwKKyAgICAgIGl0ZW0gPSBpdGVtLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgIGlm
IGl0ZW0uaXNfYT8gU2VxdWVuY2UKKyAgICAgICAgbmV3TGlzdCArPSBpdGVtLmxpc3QKKyAgICAg
IGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgU2Vx
dWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUuZGVtYWNyb2lmeShtYWNyb3MpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5zdWJzdGl0dXRl
KG1hcHBpbmcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIGRlbWFjcm9pZnkoKSBjb25zdHJ1Y3RzIGEgbmV3IEFTVCB0aGF0
IGRvZXMgbm90IGhhdmUgYW55IE1hY3JvICAgICAgICMKKyMgbm9kZXMsIHdoaWxlIHN1YnN0aXR1
dGUoKSByZXBsYWNlcyBWYXJpYWJsZSBub2RlcyB3aXRoIHRoZSBnaXZlbiAgICAgIworIyBub2Rl
cyBpbiB0aGUgbWFwcGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2Rl
CisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNo
aWxkIHwKKyAgICAgIGNoaWxkLmRlbWFjcm9pZnkobWFjcm9zKQorICAgIH0KKyAgZW5kCisgIAor
ICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hp
bGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIH0KKyAgZW5kCisgIAor
ICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAg
IHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIH0K
KyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8KKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAg
ICBteU1hcHBpbmcgPSB7fQorICAgIG1hcHBpbmcuZWFjaF9wYWlyIHsKKyAgICAgIHwga2V5LCB2
YWx1ZSB8CisgICAgICB1bmxlc3MgQHZhcmlhYmxlcy5pbmNsdWRlPyBrZXkKKyAgICAgICAgbXlN
YXBwaW5nW2tleV0gPSB2YWx1ZQorICAgICAgZW5kCisgICAgfQorICAgIG1hcENoaWxkcmVuIHsK
KyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShteU1hcHBpbmcpCisgICAg
fQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZQorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5n
KQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisg
ICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVm
IHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBt
YXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAor
CitjbGFzcyBTZXF1ZW5jZQorICBkZWYgc3Vic3RpdHV0ZShjb25zdGFudHMpCisgICAgbmV3TGlz
dCA9IFtdCisgICAgbXlDb25zdGFudHMgPSBjb25zdGFudHMuZHVwCisgICAgQGxpc3QuZWFjaCB7
CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAgICAg
bXlDb25zdGFudHNbaXRlbS52YXJpYWJsZV0gPSBpdGVtLnZhbHVlLnN1YnN0aXR1dGUobXlDb25z
dGFudHMpCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5zdWJzdGl0dXRlKG15
Q29uc3RhbnRzKQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2lu
LCBuZXdMaXN0KQorICBlbmQKKyAgCisgIGRlZiByZW5hbWVMYWJlbHMoY29tbWVudCkKKyAgICBt
YXBwaW5nID0ge30KKyAgICAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAg
ICBpZiBpdGVtLmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAgbWFwcGluZ1tpdGVtXSA9IExvY2Fs
TGFiZWwudW5pcXVlKGlmIGNvbW1lbnQgdGhlbiBjb21tZW50ICsgIl8iIGVsc2UgIiIgZW5kICsg
aXRlbS5jbGVhbk5hbWUpCisgICAgICBlbmQKKyAgICB9CisgICAgCisgICAgc3Vic3RpdHV0ZUxh
YmVscyhtYXBwaW5nKQorICBlbmQKKyAgCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBt
eU1hY3JvcyA9IG1hY3Jvcy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8Cisg
ICAgICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBp
dGVtCisgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7
CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICAjIEln
bm9yZS4KKyAgICAgIGVsc2lmIGl0ZW0uaXNfYT8gTWFjcm9DYWxsCisgICAgICAgIG1hcHBpbmcg
PSB7fQorICAgICAgICBteU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisgICAgICAgIHJhaXNlICJD
b3VsZCBub3QgZmluZCBtYWNybyAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJp
bmd9IiB1bmxlc3MgbXlNYWNyb3NbaXRlbS5uYW1lXQorICAgICAgICByYWlzZSAiQXJndW1lbnQg
Y291bnQgbWlzbWF0Y2ggZm9yIGNhbGwgdG8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3Jp
Z2luU3RyaW5nfSIgdW5sZXNzIGl0ZW0ub3BlcmFuZHMuc2l6ZSA9PSBteU1hY3Jvc1tpdGVtLm5h
bWVdLnZhcmlhYmxlcy5zaXplCisgICAgICAgIGl0ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7Cisg
ICAgICAgICAgfCBpZHggfAorICAgICAgICAgIGlmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBW
YXJpYWJsZSBhbmQgbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAg
ICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBt
eU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlN
YWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVs
c2lmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBNYWNybworICAgICAgICAgICAgbXlNeU1hY3Jv
c1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5k
c1tpZHhdCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVz
W2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBteU15TWFjcm9z
W215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gbmlsCisgICAgICAgICAgICBt
YXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gaXRlbS5vcGVyYW5k
c1tpZHhdCisgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCArPSBteU1h
Y3Jvc1tpdGVtLm5hbWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlN
YWNyb3MpLnJlbmFtZUxhYmVscyhpdGVtLm5hbWUpLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAg
bmV3TGlzdCA8PCBpdGVtLmRlbWFjcm9pZnkobXlNYWNyb3MpCisgICAgICBlbmQKKyAgICB9Cisg
ICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpLnN1YnN0aXR1dGUoe30pCisgIGVu
ZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2
ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgaGFzIG9mZnNl
dCB2YWx1ZXMgaW5zdGVhZCBvZiBzeW1ib2xpYyAgICAgICAjCisjIG9mZnNldHMuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29s
dmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hp
bGQgfAorICAgICAgY2hpbGQucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgfQor
ICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXQKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9m
ZnNldHMsIHNpemVzKQorICAgIGlmIG9mZnNldHNbc2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXco
Y29kZU9yaWdpbiwgb2Zmc2V0c1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5k
CisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZgorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0
cywgc2l6ZXMpCisgICAgaWYgc2l6ZXNbc2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9y
aWdpbiwgc2l6ZXNbc2VsZl0pCisgICAgZWxzZQorICAgICAgcHV0cyAiQ291bGQgbm90IGZpbmQg
I3tzZWxmLmluc3BlY3R9IGluICN7c2l6ZXMua2V5cy5pbnNwZWN0fSIKKyAgICAgIHB1dHMgInNp
emVzID0gI3tzaXplcy5pbnNwZWN0fSIKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQK
KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5mb2xkICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIFJlc29sdmUgY29uc3RhbnQgcmVmZXJlbmNlcyBhbmQgY29tcHV0ZSBh
cml0aG1ldGljIGV4cHJlc3Npb25zLiAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIGZvbGQKKyAgICBtYXBDaGlsZHJlbiB7CisgICAg
ICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLmZvbGQKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNz
IEFkZEltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBA
cmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJ
bW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQor
ICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgKyBAcmlnaHQudmFsdWUp
CisgIGVuZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVm
dCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxm
IHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJp
Z2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQu
dmFsdWUgLSBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMK
KyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQu
Zm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICBy
ZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5u
ZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgKiBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisK
K2NsYXNzIE5lZ0ltbWVkaWF0ZQorICBkZWYgZm9sZAorICAgIEBjaGlsZCA9IEBjaGlsZC5mb2xk
CisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBjaGlsZC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1l
ZGlhdGUubmV3KGNvZGVPcmlnaW4sIC1AY2hpbGQudmFsdWUpCisgIGVuZAorZW5kCisKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2ZUFmdGVyU2V0dGluZ3Mo
b2Zmc2V0cywgc2l6ZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBDb21waWxlIGFzc2VtYmx5IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
CitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlKG9mZnNldHMsIHNpemVzKQorICAgIGRlbWFjcm9p
Znkoe30pLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKS5mb2xkCisgIGVuZAorZW5kCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjcxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIGNhc2UgbmFt
ZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIiwgInQxIiwgImExIiwgInIxIiwgInQyIiwgInQz
IgorICAgICAgdHJ1ZQorICAgIHdoZW4gInQ0IiwgImNmciIKKyAgICAgIGZhbHNlCisgICAgZWxz
ZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgeDg2T3BlcmFuZChraW5k
KQorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgY2FzZSBr
aW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlYWwiCisgICAgICB3aGVuIDpoYWxmCisg
ICAgICAgICIlYXgiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYXgiCisgICAgICBlbHNl
CisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAg
ICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWRsIgorICAgICAgd2hl
biA6aGFsZgorICAgICAgICAiJWR4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWR4Igor
ICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDIiCisgICAg
ICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVjbCIKKyAgICAgIHdoZW4g
OmhhbGYKKyAgICAgICAgIiVjeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVjeCIKKyAg
ICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQzIgorICAgICAg
Y2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlYmwiCisgICAgICB3aGVuIDpo
YWxmCisgICAgICAgICIlYngiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYngiCisgICAg
ICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0NCIKKyAgICAgIGNh
c2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNpbCIKKyAgICAgIHdoZW4gOmhh
bGYKKyAgICAgICAgIiVzaSIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzaSIKKyAgICAg
IGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gImNmciIKKyAgICAgIGNh
c2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWRpbCIKKyAgICAgIHdoZW4gOmhh
bGYKKyAgICAgICAgIiVkaSIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkaSIKKyAgICAg
IGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInNwIgorICAgICAgY2Fz
ZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlc3BsIgorICAgICAgd2hlbiA6aGFs
ZgorICAgICAgICAiJXNwIgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZXNwIgorICAgICAg
ZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAg
ICBlbmQKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVy
YW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgIGRlZiB4ODZP
cGVyYW5kKGtpbmQpCisgICAgcmFpc2UgdW5sZXNzIGtpbmQgPT0gOmRvdWJsZQorICAgIGNhc2Ug
bmFtZQorICAgIHdoZW4gImZ0MCIsICJmYTAiLCAiZnIiCisgICAgICAiJXhtbTAiCisgICAgd2hl
biAiZnQxIiwgImZhMSIKKyAgICAgICIleG1tMSIKKyAgICB3aGVuICJmdDIiLCAiZmEyIgorICAg
ICAgIiV4bW0yIgorICAgIHdoZW4gImZ0MyIsICJmYTMiCisgICAgICAiJXhtbTMiCisgICAgd2hl
biAiZnQ0IgorICAgICAgIiV4bW00IgorICAgIHdoZW4gImZ0NSIKKyAgICAgICIleG1tNSIKKyAg
ICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5k
KGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBJ
bW1lZGlhdGUKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiJCN7dmFsdWV9IgorICBlbmQK
KyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIiN7dmFsdWV9IgorICBlbmQKK2VuZAor
CitjbGFzcyBBZGRyZXNzCisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5k
CisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jh
c2UueDg2T3BlcmFuZCg6aW50KX0pIgorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQp
CisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5k
ZXgKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVm
IHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5k
KDppbnQpfSwgI3tpbmRleC54ODZPcGVyYW5kKDppbnQpfSwgI3tzY2FsZX0pIgorICBlbmQKKwor
ICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2b3BlcmFuZChraW5kKX0iCisg
IGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25Y
ODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIj
e2FkZHJlc3MudmFsdWV9IgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAg
ICAiKiN7YWRkcmVzcy52YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNl
CisgIGRlZiB4ODZMYWJlbAorICAgIHNhbml0aXplTGFiZWxOYW1lKG5hbWUpCisgIGVuZAorICBk
ZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICB4ODZMYWJlbAorICBlbmQKK2VuZAorCitjbGFz
cyBMb2NhbExhYmVsUmVmZXJlbmNlCisgIGRlZiB4ODZMYWJlbAorICAgICJfX29hXyIrbmFtZVsx
Li4tMV0KKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgIHg4NkxhYmVsCisg
IGVuZAorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgIGRlZiB4ODZPcGVyYW5kcygqa2luZHMp
CisgICAgcmFpc2UgdW5sZXNzIGtpbmRzLnNpemUgPT0gb3BlcmFuZHMuc2l6ZQorICAgIHJlc3Vs
dCA9IFtdCisgICAga2luZHMuc2l6ZS50aW1lcyB7CisgICAgICB8IGlkeCB8CisgICAgICByZXN1
bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZPcGVyYW5kKGtpbmRzW2lkeF0pCisgICAgfQorICAgIHJl
c3VsdC5qb2luKCIsICIpCisgIGVuZAorCisgIGRlZiB4ODZTdWZmaXgoa2luZCkKKyAgICBjYXNl
IGtpbmQKKyAgICB3aGVuIDpieXRlCisgICAgICAiYiIKKyAgICB3aGVuIDpoYWxmCisgICAgICAi
dyIKKyAgICB3aGVuIDppbnQKKyAgICAgICJsIgorICAgIHdoZW4gOmRvdWJsZQorICAgICAgInNk
IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRs
ZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgbnVtT3BlcmFuZHMpCisgICAgaWYg
bnVtT3BlcmFuZHMgPT0gMworICAgICAgaWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0KKyAg
ICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2lu
ZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzaWYgb3BlcmFu
ZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2lu
ZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgIlx0bW92I3t4ODZTdWZmaXgoa2lu
ZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3Bl
cmFuZChraW5kKX0iCisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAg
ICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3Aob3Bjb2RlLCBraW5kKQorICAg
IGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSkK
KyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2hpZnQob3Bjb2RlLCBraW5kKQorICAgIGlmIG9w
ZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBvciBvcGVyYW5kc1swXSA9PSBSZWdpc3RlcklELmZv
ck5hbWUobmlsLCAidDIiKQorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDppbnQpfSwgJWVjeCIKKyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gJWNsLCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIGhhbmRsZVg4NkRvdWJsZUJyYW5jaChicmFuY2hPcGNvZGUsIG1vZGUpCisgICAgY2Fz
ZSBtb2RlCisgICAgd2hlbiA6bm9ybWFsCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9IgorICAgIHdoZW4gOnJldmVyc2UKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNk
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0iCisgICAgZWxzZQorICAgICAgcmFpc2UgbW9kZS5pbnNwZWN0CisgICAg
ZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLng4Nkxh
YmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29tcGFyZShvcGNvZGVTdWZmaXgs
IGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1sw
XS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2Rl
U3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAi
XHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0i
CisgICAgZWxzaWYgb3BlcmFuZHNbMV0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1sxXS52
YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3Vm
Zml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAiXHR0
ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisg
ICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdGNtcCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRCcmFuY2goYnJhbmNoT3Bj
b2RlLCBraW5kKQorICAgIGhhbmRsZVg4NkludENvbXBhcmUoYnJhbmNoT3Bjb2RlWzEuLi0xXSwg
a2luZCkKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0ueDg2
TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5k
KQorICAgIGlmIG9wZXJhbmQuc3VwcG9ydHM4Qml0T25YODYKKyAgICAgICRhc20ucHV0cyAiXHQj
e3NldE9wY29kZX0gI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSIKKyAgICAgICRhc20ucHV0
cyAiXHRtb3Z6YmwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJh
bmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgICAkYXNtLnB1dHMgIlx0I3tzZXRPcGNv
ZGV9ICVhbCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgJWFsLCAlZWF4IgorICAgICAgJGFz
bS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICBl
bmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29tcGFyZVNldChzZXRPcGNvZGUsIGtp
bmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShzZXRPcGNvZGVbMy4uLTFdLCBraW5kKQorICAg
IGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRzWzJdKQorICBlbmQKKyAgCisgIGRlZiBo
YW5kbGVYODZUZXN0KGtpbmQpCisgICAgdmFsdWUgPSBvcGVyYW5kc1swXQorICAgIGNhc2Ugb3Bl
cmFuZHMuc2l6ZQorICAgIHdoZW4gMgorICAgICAgbWFzayA9IEltbWVkaWF0ZS5uZXcoY29kZU9y
aWdpbiwgLTEpCisgICAgd2hlbiAzCisgICAgICBtYXNrID0gb3BlcmFuZHNbMV0KKyAgICBlbHNl
CisgICAgICByYWlzZSAiRXhwZWN0ZWQgMiBvciAzIG9wZXJhbmRzLCBidXQgZ290ICN7b3BlcmFu
ZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKyAgICAKKyAgICBpZiBt
YXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQorICAgICAgaWYgdmFsdWUu
aXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtp
bmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgIlx0Y21wI3t4ODZTdWZmaXgoa2luZCl9
ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5kCisgICAgZWxzZQorICAg
ICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3ttYXNrLng4Nk9wZXJhbmQo
a2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBoYW5kbGVYODZCcmFuY2hUZXN0KGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVY
ODZUZXN0KGtpbmQpCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRz
Lmxhc3QueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTZXRUZXN0KHNldE9w
Y29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNl
dE9wY29kZSwgb3BlcmFuZHMubGFzdCkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3BCcmFu
Y2gob3Bjb2RlLCBicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3Bl
cmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXplIC0gMSkKKyAgICBjYXNlIG9wZXJhbmRz
LnNpemUKKyAgICB3aGVuIDQKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdo
ZW4gMworICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFp
c2Ugc2VsZi5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2Rl
fSAje2p1bXBUYXJnZXQueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTdWJC
cmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gNCBhbmQg
b3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgIGVsc2UKKyAgICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKCJzdWIje3g4
NlN1ZmZpeChraW5kKX0iLCBraW5kLCBvcGVyYW5kcy5zaXplIC0gMSkKKyAgICBlbmQKKyAgICBj
YXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5k
c1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAgZWxz
ZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7
YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBs
b3dlclg4NgorICAgICRhc20uY29tbWVudCBjb2RlT3JpZ2luU3RyaW5nCisgICAgY2FzZSBvcGNv
ZGUKKyAgICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMg
YW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3Bl
cmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNb
Ml0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCisg
ICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAk
YXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisg
ICAgICAgICAgJGFzbS5wdXRzICJcdGxlYWwgI3tvcGVyYW5kc1swXS52YWx1ZX0oI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgICAgIGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5k
c1swXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5p
c19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBS
ZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHRsZWFsICgje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5k
c1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgdW5sZXNzIEltbWVk
aWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAgICRhc20ucHV0cyAiXHRh
ZGRsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgICBlbmQKKyAgICAgIGVuZAor
ICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJhbmRsIiwgOmludCkK
KyAgICB3aGVuICJsc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNhbGwiLCA6aW50KQor
ICAgIHdoZW4gIm11bGkiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRz
WzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAkYXNtLnB1dHMgIlx0aW11bGwgI3t4ODZPcGVy
YW5kcyg6aW50LCA6aW50LCA6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIGhhbmRsZVg4Nk9w
KCJpbXVsbCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJuZWdpIgorICAgICAgJGFzbS5w
dXRzICJcdG5lZ2wgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAibm90aSIKKyAgICAg
ICRhc20ucHV0cyAiXHRub3RsICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm9yaSIs
ICJvcnAiCisgICAgICBoYW5kbGVYODZPcCgib3JsIiwgOmludCkKKyAgICB3aGVuICJyc2hpZnRp
IgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNhcmwiLCA6aW50KQorICAgIHdoZW4gInVyc2hpZnRp
IgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNocmwiLCA6aW50KQorICAgIHdoZW4gInN1YmkiLCAi
c3VicCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMV0gPT0gb3Bl
cmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVs
c2UKKyAgICAgICAgaGFuZGxlWDg2T3AoInN1YmwiLCA6aW50KQorICAgICAgZW5kCisgICAgd2hl
biAieG9yaSIsICJ4b3JwIgorICAgICAgaGFuZGxlWDg2T3AoInhvcmwiLCA6aW50KQorICAgIHdo
ZW4gImxvYWRpIiwgInN0b3JlaSIsICJsb2FkcCIsICJzdG9yZXAiCisgICAgICAkYXNtLnB1dHMg
Ilx0bW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICB3aGVuICJsb2FkYiIKKyAg
ICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0s
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGgiCisgICAg
ICAkYXNtLnB1dHMgIlx0bW92endsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9LCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInN0b3JlYiIKKyAgICAg
ICRhc20ucHV0cyAiXHRtb3ZiICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0iCisgICAgd2hl
biAibG9hZGQiLCAibW92ZWQiLCAic3RvcmVkIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNkICN7
eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImFkZGQiCisgICAgICAk
YXNtLnB1dHMgIlx0YWRkc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAg
d2hlbiAiZGl2ZCIKKyAgICAgICRhc20ucHV0cyAiXHRkaXZzZCAje3g4Nk9wZXJhbmRzKDpkb3Vi
bGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJzdWJkIgorICAgICAgJGFzbS5wdXRzICJcdHN1YnNk
ICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gIm11bGQiCisgICAg
ICAkYXNtLnB1dHMgIlx0bXVsc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisg
ICAgd2hlbiAic3FydGQiCisgICAgICAkYXNtLnB1dHMgIlx0c3FydHNkICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0i
CisgICAgd2hlbiAiY2kyZCIKKyAgICAgICRhc20ucHV0cyAiXHRjdnRzaTJzZCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
IgorICAgIHdoZW4gImJkZXEiCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVl
KCJiZGVxIikKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAg
ICAkYXNtLnB1dHMgIlx0anAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9y
ZGVyZWQpLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNl
Lm5ldyhjb2RlT3JpZ2luLCBvcGVyYW5kc1syXSkueDg2TGFiZWx9IgorICAgICAgaXNVbm9yZGVy
ZWQubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRuZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVC
cmFuY2goImpuZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRndCIKKyAgICAgIGhhbmRsZVg4NkRv
dWJsZUJyYW5jaCgiamEiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgIGhhbmRs
ZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0IgorICAgICAg
aGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHRlcSIK
KyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOnJldmVyc2UpCisgICAgd2hlbiAi
YmRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwpCisgICAg
d2hlbiAiYmRuZXF1biIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUoImJk
bmVxdW4iKQorICAgICAgaXNFcXVhbCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAg
ICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMg
Ilx0anAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4Nkxh
YmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3Jp
Z2luLCBpc0VxdWFsKS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikK
KyAgICAgICRhc20ucHV0cyAiXHRqbXAgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICBp
c0VxdWFsLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkZ3R1biIKKyAgICAgIGhhbmRsZVg4NkRv
dWJsZUJyYW5jaCgiamIiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAgIGhh
bmRsZVg4NkRvdWJsZUJyYW5jaCgiamJlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdHVuIgor
ICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRs
dGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3JtYWwpCisgICAg
d2hlbiAiYnRkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgICAkYXNtLnB1dHMgIlx0Y21wbCAkMHg4MDAwMDAwMCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9
IgorICAgIHdoZW4gInRkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgd2hlbiAiYmNkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0
cyAiXHRqZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnRz
aTJzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20u
cHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03
IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAg
JGFzbS5wdXRzICJcdGpuZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJtb3Zk
eiIKKyAgICAgICRhc20ucHV0cyAiXHR4b3JwZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gInBv
cCIKKyAgICAgICRhc20ucHV0cyAiXHRwb3AgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQp
fSIKKyAgICB3aGVuICJwdXNoIgorICAgICAgJGFzbS5wdXRzICJcdHB1c2ggI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgor
ICAgICAgaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdIGFuZCBvcGVyYW5k
c1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHR4b3JsICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgICBlbHNpZiBvcGVyYW5kc1swXSAhPSBvcGVyYW5kc1sxXQorICAgICAgICAkYXNtLnB1
dHMgIlx0bW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgIGVuZAorICAgIHdo
ZW4gIm5vcCIKKyAgICAgICRhc20ucHV0cyAiXHRub3AiCisgICAgd2hlbiAiYmllcSIsICJicGVx
IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDppbnQpCisgICAgd2hlbiAiYmluZXEi
LCAiYnBuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDppbnQpCisgICAgd2hl
biAiYmlhIiwgImJwYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6aW50KQorICAg
IHdoZW4gImJpYWVxIiwgImJwYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6
aW50KQorICAgIHdoZW4gImJpYiIsICJicGIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpi
IiwgOmludCkKKyAgICB3aGVuICJiaWJlcSIsICJicGJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamJlIiwgOmludCkKKyAgICB3aGVuICJiaWd0IiwgImJwZ3QiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImpnIiwgOmludCkKKyAgICB3aGVuICJiaWd0ZXEiLCAiYnBndGVxIgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6aW50KQorICAgIHdoZW4gImJpbHQiLCAiYnBs
dCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6aW50KQorICAgIHdoZW4gImJpbHRl
cSIsICJicGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsZSIsIDppbnQpCisgICAg
d2hlbiAiYmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6Ynl0ZSkKKyAgICB3
aGVuICJiYm5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmJ5dGUpCisgICAg
d2hlbiAiYmJhIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDpieXRlKQorICAgIHdo
ZW4gImJiYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6Ynl0ZSkKKyAgICB3
aGVuICJiYmIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmJ5dGUpCisgICAgd2hl
biAiYmJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRlKQorICAgIHdo
ZW4gImJiZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmJ5dGUpCisgICAgd2hl
biAiYmJndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6Ynl0ZSkKKyAgICB3
aGVuICJiYmx0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDpieXRlKQorICAgIHdo
ZW4gImJibHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6Ynl0ZSkKKyAg
ICB3aGVuICJidGlvIiwgImJ0cG8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpp
bnQpCisgICAgd2hlbiAiYnRpcyIsICJidHBzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgi
anMiLCA6aW50KQorICAgIHdoZW4gImJ0aXoiLCAiYnRweiIKKyAgICAgIGhhbmRsZVg4NkJyYW5j
aFRlc3QoImp6IiwgOmludCkKKyAgICB3aGVuICJidGlueiIsICJidHBueiIKKyAgICAgIGhhbmRs
ZVg4NkJyYW5jaFRlc3QoImpueiIsIDppbnQpCisgICAgd2hlbiAiYnRibyIKKyAgICAgIGhhbmRs
ZVg4NkJyYW5jaFRlc3QoImpvIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRicyIKKyAgICAgIGhhbmRs
ZVg4NkJyYW5jaFRlc3QoImpzIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRieiIKKyAgICAgIGhhbmRs
ZVg4NkJyYW5jaFRlc3QoImp6IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRibnoiCisgICAgICBoYW5k
bGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJqbXAiCisgICAgICAkYXNt
LnB1dHMgIlx0am1wICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdo
ZW4gImJhZGRpbyIsICJiYWRkcG8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJq
byIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlzIiwgImJhZGRwcyIKKyAgICAgIGhhbmRsZVg4Nk9w
QnJhbmNoKCJhZGRsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJiYWRkaXoiLCAiYmFkZHB6Igor
ICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJh
ZGRpbnoiLCAiYmFkZHBueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpueiIs
IDppbnQpCisgICAgd2hlbiAiYnN1YmlvIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbyIs
IDppbnQpCisgICAgd2hlbiAiYnN1YmlzIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqcyIs
IDppbnQpCisgICAgd2hlbiAiYnN1Yml6IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqeiIs
IDppbnQpCisgICAgd2hlbiAiYnN1YmlueiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam56
IiwgOmludCkKKyAgICB3aGVuICJibXVsaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11
bGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJtdWxpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJh
bmNoKCJpbXVsbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm11bGl6IgorICAgICAgaGFuZGxl
WDg2T3BCcmFuY2goImltdWxsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJibXVsaW56IgorICAg
ICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYm9y
aW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpvIiwgOmludCkKKyAgICB3aGVu
ICJib3JpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianMiLCA6aW50KQorICAg
IHdoZW4gImJvcml6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqeiIsIDppbnQp
CisgICAgd2hlbiAiYm9yaW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqbnoi
LCA6aW50KQorICAgIHdoZW4gImJyZWFrIgorICAgICAgJGFzbS5wdXRzICJcdGludCAkMyIKKyAg
ICB3aGVuICJjYWxsIgorICAgICAgJGFzbS5wdXRzICJcdGNhbGwgI3tvcGVyYW5kc1swXS54ODZD
YWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicmV0IgorICAgICAgJGFzbS5wdXRzICJcdHJl
dCIKKyAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0
KCJzZXRlIiwgOmludCkKKyAgICB3aGVuICJjaW5lcSIsICJjcG5lcSIKKyAgICAgIGhhbmRsZVg4
NkludENvbXBhcmVTZXQoInNldG5lIiwgOmludCkKKyAgICB3aGVuICJjaWEiLCAiY3BhIgorICAg
ICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YSIsIDppbnQpCisgICAgd2hlbiAiY2lhZXEi
LCAiY3BhZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRhZSIsIDppbnQpCisg
ICAgd2hlbiAiY2liIiwgImNwYiIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGIi
LCA6aW50KQorICAgIHdoZW4gImNpYmVxIiwgImNwYmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29t
cGFyZVNldCgic2V0YmUiLCA6aW50KQorICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgIGhh
bmRsZVg4NkludENvbXBhcmVTZXQoInNldGciLCA6aW50KQorICAgIHdoZW4gImNpZ3RlcSIsICJj
cGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnZSIsIDppbnQpCisgICAg
d2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bCIs
IDppbnQpCisgICAgd2hlbiAiY2lsdGVxIiwgImNwbHRlcSIKKyAgICAgIGhhbmRsZVg4NkludENv
bXBhcmVTZXQoInNldGxlIiwgOmludCkKKyAgICB3aGVuICJ0aW8iCisgICAgICBoYW5kbGVYODZT
ZXRUZXN0KCJzZXRvIiwgOmludCkKKyAgICB3aGVuICJ0aXMiCisgICAgICBoYW5kbGVYODZTZXRU
ZXN0KCJzZXRzIiwgOmludCkKKyAgICB3aGVuICJ0aXoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0
KCJzZXR6IiwgOmludCkKKyAgICB3aGVuICJ0aW56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgi
c2V0bnoiLCA6aW50KQorICAgIHdoZW4gInRibyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNl
dG8iLCA6Ynl0ZSkKKyAgICB3aGVuICJ0YnMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRz
IiwgOmJ5dGUpCisgICAgd2hlbiAidGJ6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIs
IDpieXRlKQorICAgIHdoZW4gInRibnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIs
IDpieXRlKQorICAgIHdoZW4gInBlZWsiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJh
bmRzWzBdLnZhbHVlICogNH0oJWVzcCksICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgd2hlbiAicG9rZSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0udmFsdWUgKiA0fSglZXNwKSIKKyAgICB3
aGVuICJjZHFpIgorICAgICAgJGFzbS5wdXRzICJcdGNkcSIKKyAgICB3aGVuICJpZGl2aSIKKyAg
ICAgICRhc20ucHV0cyAiXHRpZGl2bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgIHdoZW4gImZpaTJkIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAg
ICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4
bW03IgorICAgICAgJGFzbS5wdXRzICJcdHBzbGxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1
dHMgIlx0cG9yICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAg
IHdoZW4gImZkMmlpIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
ICRhc20ucHV0cyAiXHRtb3ZzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAl
eG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwc3JscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5w
dXRzICJcdG1vdnNkICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAg
IGVsc2UKKyAgICAgIHJhaXNlICJCYWQgb3Bjb2RlOiAje29wY29kZX0iCisgICAgZW5kCisgIGVu
ZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFs
aXphdGlvbktpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKyNkZWZpbmUgQ29kZVNwZWNp
YWxpemF0aW9uS2luZF9oCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIENvZGVTcGVjaWFsaXph
dGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkocmV2
aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xv
d1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQ29tbW9u
U2xvd1BhdGhzX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvZGVTcGVj
aWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVk
ZSAiSlNBcnJheS5oIgogCkBAIC00MSw2ICs0MiwzOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFt
ZXNwYWNlIENvbW1vblNsb3dQYXRocyB7CiAKK0FMV0FZU19JTkxJTkUgRXhlY1N0YXRlKiBhcml0
eUNoZWNrRm9yKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBh
c0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVu
Y3Rpb24oKSk7CisgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1
dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzID0gZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKKwor
ICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5h
cmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgorICAgIGlmICghcmVn
aXN0ZXJGaWxlLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdD
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CisKKyAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAt
LSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJn
dW1lbnRzIHdpdGggdW5kZWZpbmVkLgorICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CisgICAgUmVnaXN0
ZXIqIHNyYyA9IGV4ZWMtPnJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyKiBkc3QgPSBleGVjLT5y
ZWdpc3RlcnMoKSArIGRlbHRhOworCisgICAgaW50IGk7CisgICAgaW50IGVuZCA9IC1FeGVjU3Rh
dGU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgZm9yIChpID0g
LTE7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKKworICAgIGVuZCAt
PSBkZWx0YTsKKyAgICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9IGpz
VW5kZWZpbmVkKCk7CisKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBFeGVjU3RhdGU6OmNyZWF0
ZShkc3QpOworICAgIEFTU0VSVCgodm9pZCopbmV3RXhlYyA8PSByZWdpc3RlckZpbGUtPmVuZCgp
KTsKKyAgICByZXR1cm4gbmV3RXhlYzsKK30KKwogQUxXQVlTX0lOTElORSBib29sIG9wSW5zdGFu
Y2VPZlNsb3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGJhc2VWYWws
IEpTVmFsdWUgcHJvdG8pCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0NlbGwoKSB8fCAhYmFzZVZh
bC5pc0NlbGwoKSB8fCAhcHJvdG8uaXNDZWxsKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCisjaW5jbHVkZSAiRXhlY3V0aW9u
SGFybmVzcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVERyaXZlci5oIgogI2lu
Y2x1ZGUgIlBhcnNlci5oIgpAQCAtODQsNyArODUsNyBAQCBJbnRyaW5zaWMgTmF0aXZlRXhlY3V0
YWJsZTo6aW50cmluc2ljKCkgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIHZvaWQgamV0
dGlzb25Db2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8VD4mIGNvZGVC
bG9jaykKIHsKLSAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJs
b2NrLT5nZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgp
KTsKICAgICBPd25QdHI8VD4gY29kZUJsb2NrVG9KZXR0aXNvbiA9IGNvZGVCbG9jay5yZWxlYXNl
KCk7CiAgICAgY29kZUJsb2NrID0gc3RhdGljX3BvaW50ZXJfY2FzdDxUPihjb2RlQmxvY2tUb0pl
dHRpc29uLT5yZWxlYXNlQWx0ZXJuYXRpdmUoKSk7CkBAIC0xNjcsOSArMTY4LDMwIEBAIEpTT2Jq
ZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXoKICAgICByZXR1cm4gZXJyb3I7CiB9
CiAKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUoRXhlY1N0YXRlKiBleGVjKQorewor
ICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZXhlYywgbV9ldmFsQ29k
ZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCitpbmxpbmUgY29uc3QgY2hhciog
c2FtcGxpbmdEZXNjcmlwdGlvbihKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisgICAgc3dp
dGNoIChqaXRUeXBlKSB7CisgICAgY2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rOgorICAg
ICAgICByZXR1cm4gIkludGVycHJldGVyIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2Ug
SklUQ29kZTo6QmFzZWxpbmVKSVQ6CisgICAgICAgIHJldHVybiAiQmFzZWxpbmUgQ29tcGlsYXRp
b24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6CisgICAgICAgIHJldHVybiAi
REZHIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIEpTT2JqZWN0KiBF
dmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAg
U2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGlu
ZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24g
KFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVz
Y3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9Q
QVJBTShqaXRUeXBlKTsKQEAgLTIxMCw3ICsyMzIsNyBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFi
bGU6OmNvbXBpbGVJbnRlcm5hCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWpp
dENvbXBpbGVJZkFwcHJvcHJpYXRlKGV4ZWMsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9y
Q2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKGV4ZWMsIG1fZXZh
bENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAw
OwogI2VuZGlmCiAKQEAgLTI5NSw5ICszMTcsMTUgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRh
YmxlOjpjb21waWxlT3B0aQogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBQcm9ncmFtRXhl
Y3V0YWJsZTo6aml0Q29tcGlsZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYm9vbCByZXN1bHQg
PSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShleGVjLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0
Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNF
RChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29t
cGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5O
b2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBD
b21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNh
bXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkp
OwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAg
LTMzNiw3ICszNjQsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRl
CiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJp
YXRlKGV4ZWMsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkp
CisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKGV4ZWMsIG1fcHJvZ3JhbUNvZGVCbG9jaywg
bV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAK
QEAgLTQxMiw3ICs0NDAsNyBAQCBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxl
OjpiCiAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgcmVzdWx0ID0g
c3RhdGljX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihyZXN1bHQtPmFsdGVybmF0aXZlKCkpOwog
ICAgIEFTU0VSVChyZXN1bHQpOwotICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBK
SVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2Rl
KHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDM4
LDYgKzQ2NiwxOCBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlT3B0CiAg
ICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGls
ZUZvckNhbGwoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGls
ZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29k
ZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwg
SklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0KTsKK30KKwordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1
Y3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0
aW9uSWZBcHByb3ByaWF0ZShleGVjLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2Rl
Rm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1i
b2xUYWJsZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0KTsKK30KKwogRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y29kZUJsb2NrV2l0aEJ5dGVjb2RlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
IHsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tG
b3Ioa2luZCk7CkBAIC00ODIsNyArNTIyLDcgQEAgUGFzc093blB0cjxGdW5jdGlvbkNvZGVCbG9j
az4gRnVuY3Rpb25FeAogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9y
Q2FsbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5O
b2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBD
b21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNh
bXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkp
OwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTUw
NCw3ICs1NDQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAg
ICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC0+c2hhcmVkU3ltYm9sVGFibGUo
KTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJv
cHJpYXRlKGV4ZWMsIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRD
b2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBp
ZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLCBtX2NvZGVCbG9ja0ZvckNhbGws
IG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1i
b2xUYWJsZSwgaml0VHlwZSwgQ29kZUZvckNhbGwpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRp
ZgogCkBAIC01MjQsNyArNTY0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29t
cGlsZUZvcgogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3Ry
dWN0SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5v
ZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1w
bGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENv
bXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7
CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAt
NTQ2LDcgKzU4Niw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IK
ICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnNoYXJlZFN5bWJv
bFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9u
SWZBcHByb3ByaWF0ZShleGVjLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9y
Q29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xU
YWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhl
YywgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRD
b2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENv
ZGVGb3JDb25zdHJ1Y3QpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxMDQ4NjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRXhlY3V0YWJsZV9oCiAKICNpbmNsdWRl
ICJDYWxsRGF0YS5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJO
b2Rlcy5oIgpAQCAtMzksMTIgKzQwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIERl
YnVnZ2VyOwogICAgIGNsYXNzIEV2YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgRnVuY3Rpb25Db2Rl
QmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dy
YW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKICAgICBzdHJ1Y3QgRXhj
ZXB0aW9uSW5mbzsKICAgICAKLSAgICBlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2Rl
Rm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogICAgIGVudW0gQ29tcGlsYXRpb25LaW5kIHsg
Rmlyc3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CiAKICAgICBpbmxpbmUg
Ym9vbCBpc0NhbGwoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMzE5LDYgKzMyMCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0
YWJsZSBCYXNlOwogCkBAIC0zMzgsNiArMzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpT
R2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoRXhlY1N0YXRlKik7CiAjZW5k
aWYKIAogICAgICAgICBFdmFsQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC0zODQs
NiArMzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIFByb2dyYW1F
eGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBT
Y3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTQxMSw2ICs0MTUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGlt
aXplZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShFeGVjU3Rh
dGUqKTsKICNlbmRpZgogCiAgICAgICAgIFByb2dyYW1Db2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVj
b2RlKCkKQEAgLTQ1Myw2ICs0NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1
bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwog
CkBAIC01MDgsNiArNTE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJM
RShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ2FsbChKU0dsb2Jh
bERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ2FsbChFeGVjU3RhdGUqKTsKICNl
bmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDYWxsKCkgY29uc3QKQEAgLTUzNSw2
ICs1NDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAg
ICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRh
Jik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNvbnN0cnVjdChFeGVjU3RhdGUqKTsKICNl
bmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3QoKSBjb25zdApAQCAt
NTgyLDYgKzU5MCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBqZXR0aXNv
bk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvcihFeGVjU3RhdGUq
IGV4ZWMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgICAgICBqaXRDb21waWxl
Rm9yQ2FsbChleGVjKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgICAg
IGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoZXhlYyk7CisgICAgICAgIH0KICNlbmRpZgogICAgICAg
ICAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9u
SGFybmVzcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRXhlY3V0aW9u
SGFybmVzc19oCisjZGVmaW5lIEV4ZWN1dGlvbkhhcm5lc3NfaAorCisjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiSklURHJpdmVyLmgiCisj
aW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KK2lubGluZSBib29sIHByZXBhcmVGb3JFeGVjdXRp
b24oRXhlY1N0YXRlKiBleGVjLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklU
Q29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworI2lmIEVOQUJMRShM
TElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAg
ICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExM
SW50OjpnZXRFbnRyeXBvaW50KGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLmdldCgpLCBq
aXRDb2RlKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cigpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmIC8v
IEVOQUJMRShMTElOVCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZXhlYywg
Y29kZUJsb2NrLCBqaXRDb2RlLCBqaXRUeXBlKTsKK30KKworaW5saW5lIGJvb2wgcHJlcGFyZUZ1
bmN0aW9uRm9yRXhlY3V0aW9uKEV4ZWNTdGF0ZSogZXhlYywgT3duUHRyPEZ1bmN0aW9uQ29kZUJs
b2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIm
IGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwg
SklUQ29kZTo6SklUVHlwZSBqaXRUeXBlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7
CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRU
eXBlKSkgeworICAgICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRlcnByZXRl
ci4KKyAgICAgICAgTExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludChleGVjLT5nbG9iYWxEYXRh
KCksIGtpbmQsIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIGNvZGVC
bG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShraW5kKTsKKyNl
bmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVGdW5jdGlvbklmQXBw
cm9wcmlhdGUoZXhlYywgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ss
IHN5bWJvbFRhYmxlLCBqaXRUeXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8gRXhlY3V0aW9uSGFybmVzc19oCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEwNDg2MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5
KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5
OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHN0cnVjdCBTcGFyc2VB
cnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmllcjxVbmtub3duPiB7CiAgICAgICAgIHR5cGVk
ZWYgV3JpdGVCYXJyaWVyPFVua25vd24+IEJhc2U7CkBAIC0xMjQsNiArMTI1LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDkgKzM2LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0
OwotICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFy
cmF5OworICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsK
ICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywKQEAgLTE2NCw2ICsxNjUsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVz
Y3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFz
c0luZm87CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAg
IH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShy
ZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgSlNBY3RpdmF0aW9uOwogICAg
IGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
ICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAg
bmFtZXNwYWNlIERGRyB7CkBAIC0xNDAsNiArMTQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAog
ICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CisgICAgICAgIAogICAgICAgICBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7
CiAKICAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQxLDYgKzE0MSw4IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFU
eXAKICAgICAsIGtleXdvcmRzKGFkb3B0UHRyKG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBp
bnRlcnByZXRlcigwKQogICAgICwgaGVhcCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlD
bGFzc0luZm8oJkpTQXJyYXk6OnNfaW5mbykKKyAgICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8o
JkpTRmluYWxPYmplY3Q6OnNfaW5mbykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVP
Zkxhc3RTY3JhdGNoQnVmZmVyKDApCiAjZW5kaWYKQEAgLTIxOCw3ICsyMjAsNyBAQCBKU0dsb2Jh
bERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0
cihuZXcgSklUVGh1bmtzKHRoaXMpKTsKICNlbmRpZgogCi0gICAgaW50ZXJwcmV0ZXItPmluaXRp
YWxpemUodGhpcy0+Y2FuVXNlSklUKCkpOworICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKCZs
bGludERhdGEsIHRoaXMtPmNhblVzZUpJVCgpKTsKIAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9D
b2xsZWN0KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNiBAQAog
I2RlZmluZSBKU0dsb2JhbERhdGFfaAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxG
dW5jdGlvbi5oIgotI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5j
ZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhl
YXAuaCIKLSNpbmNsdWRlICJTdHJvbmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNs
dWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludERh
dGEuaCIKICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5n
cy5oIgorI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNs
dWRlICJUaW1lb3V0Q2hlY2tlci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYg
KzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAg
Y2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFy
c2VyQXJlbmE7CiAgICAgY2xhc3MgUmVnRXhwQ2FjaGU7CkBAIC0yNDgsNiArMjUwLDEyIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNl
cHRpb247CisKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZv
OworICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87
CisKKyAgICAgICAgTExJbnQ6OkRhdGEgbGxpbnREYXRhOworCiAjaWYgRU5BQkxFKEpJVCkKICAg
ICAgICAgUmV0dXJuQWRkcmVzc1B0ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1
ZSBob3N0Q2FsbFJldHVyblZhbHVlOwpAQCAtMzUyLDYgKzM2MCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogI3VuZGVmIHJlZ2lzdGVyVHlwZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAg
ICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXpl
KTsKICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwo
KTsKICAgICAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDQ4NjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1
bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9i
YWxDb2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAg
ICBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKQEAgLTMzNSw2ICszMzYsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyos
IGludCBjb3VudCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVzZXQg
aW50byBpbml0LgogICAgICAgICB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CiAgICAg
ICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFz
cyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgY2xhc3MgUHJv
cGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwpAQCAtMjU5LDYg
KzI2MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEm
LCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7CiAKICAgICBwcml2
YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAg
ICAKICAgICAgICAgLy8gTm9ib2R5IHNob3VsZCBldmVyIGFzayBhbnkgb2YgdGhlc2UgcXVlc3Rp
b25zIG9uIHNvbWV0aGluZyBhbHJlYWR5IGtub3duIHRvIGJlIGEgSlNPYmplY3QuCiAgICAgICAg
IHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXI7CiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6
aXNHZXR0ZXJTZXR0ZXI7CkBAIC0zNzAsNiArMzczLDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmlu
YWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKyAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0IEpTRmluYWxPYmplY3QoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgICAgIDogSlNP
YmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElkZW50aWZpZXI7CiAg
ICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAg
ICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciA6IHB1YmxpYyBKU0NlbGwgewogICAgICAg
ICBmcmllbmQgY2xhc3MgSklUOwpAQCAtOTYsNiArOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhl
Y1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNp
emVfdCBudW1DYWNoZWFibGVTbG90KTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNTdHJpbmcuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1N0cmluZzsKKyAgICBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsK
ICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsKQEAgLTI0MSw2ICsyNDIs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgcmVzb2x2
ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2Fz
ZTgoTENoYXIqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFy
KikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5m
by5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNl
cyBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJs
ZS4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8
PCAxOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEg
PDwgMjsKQEAgLTg3LDYgKzg5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgICAgIAogICAgICAgICBib29sIGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3Qg
eyBBU1NFUlQoZmxhZyA8PSAoMSA8PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAg
ICAgICBib29sIGlzU2V0T25GbGFnczIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxh
ZyA+PSAoMSA8PCA4KSk7IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJ
KHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFy
aWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEyIEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IFJlZ2lzdGVyOwogCiAgICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRl
ZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDEwIEBA
IHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGkKIAogdW5zaWduZWQgbWF4
aW11bUlubGluaW5nRGVwdGg7CiAKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklU
QWZ0ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0
aW1lU29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogaW50
MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkBAIC0x
MzYsNiArMTQwLDEwIEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIAogICAgIFNFVCht
YXhpbXVtSW5saW5pbmdEZXB0aCwgNSk7CiAKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9ySklUQWZ0ZXJXYXJtVXAsICAgICAtMTAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yRG9udEpJVEFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
aW4oKSk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb24sICAgICAgICAg
ICAgLTEwMCk7CisKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRl
cldhcm1VcCwgICAgIC0xMDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVBZnRlckxvbmdXYXJtVXAsIC01MDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1pbigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJ
KHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTAgQEAgZXh0ZXJuIHVuc2lnbmVkIG1h
eGltdW1GdW5jdGlvbkZvckNvbnN0cgogCiBleHRlcm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5n
RGVwdGg7IC8vIERlcHRoIG9mIGlubGluZSBzdGFjaywgc28gMSA9IG5vIGlubGluaW5nLCAyID0g
b25lIGxldmVsLCBldGMuCiAKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckpJVEFmdGVyV2FybVVwOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
RG9udEpJVEFueXRpbWVTb29uOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9ySklUU29vbjsKKwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVBZnRlcldhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDYgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAg
IGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAg
Y2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCkBAIC05MSw2ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NSw2ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3Bl
cnR5TmFtZUFycmF5RGF0YTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKQEAgLTE5Niw2ICsx
OTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29u
c3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlw
ZUluZm8mLCBjb25zdCBDbGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYpOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWlu
LmgJKHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
U3RydWN0dXJlOwogCiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlNDZWxsIHsK
QEAgLTc0LDYgKzc1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZh
dGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAg
IAogICAgICAgICBTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAg
ICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3duQXJyYXlQdHI8
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTE4LDYgKzkxOCwxMiBAQAog
I2RlZmluZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCisvKiBPbiBzb21lIG9mIHRoZSBwbGF0Zm9y
bXMgd2hlcmUgd2UgaGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNvIGhhdmUgdGhlIAorICAgbG93
LWxldmVsIGludGVycHJldGVyLiAqLworI2lmIEVOQUJMRShKSVQpICYmIFBMQVRGT1JNKE1BQykg
JiYgVVNFKEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyNlbmRpZgorCiAj
aWYgIWRlZmluZWQoRU5BQkxFX0RGR19KSVQpICYmIEVOQUJMRShKSVQpCiAvKiBFbmFibGUgdGhl
IERGRyBKSVQgb24gWDg2IGFuZCBYODZfNjQuICBPbmx5IHRlc3RlZCBvbiBNYWMgYW5kIEdOVS9M
aW51eC4gKi8KICNpZiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpICYmIChQTEFURk9STShNQUMp
IHx8IE9TKExJTlVYKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCB0eXBl
ZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpCiAvLyBMYW5kaW5nIHRoZSBmaWxl
IG1vdmVzIGluIG9uZSBwYXRjaCwgd2lsbCBmb2xsb3cgb24gd2l0aCBwYXRjaGVzIHRvIGNoYW5n
ZSB0aGUgbmFtZXNwYWNlcy4KIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IElkZW50aWZpZXJDU3Ry
aW5nVHJhbnNsYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHRlbXBsYXRlIDx0
eXBlbmFtZSBUPiBzdHJ1Y3QgSWRlbnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yOwogc3RydWN0
IElkZW50aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5zbGF0b3I7CiB9CkBAIC03MCw3ICs3MSw4IEBA
IGNsYXNzIFN0cmluZ0ltcGwgewogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kVVRGOENo
YXJhY3RlcnNUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZlclRy
YW5zbGF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7Ci0KKyAgICBmcmll
bmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiBwcml2YXRlOgogICAg
IGVudW0gQnVmZmVyT3duZXJzaGlwIHsKICAgICAgICAgQnVmZmVySW50ZXJuYWwsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122701</attachid>
            <date>2012-01-16 18:02:26 -0800</date>
            <delta_ts>2012-01-17 17:08:31 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_17.diff</filename>
            <type>text/plain</type>
            <size>396043</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyMSBA
QAorMjAxMi0wMS0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV09SSyBJTiBQUk9HUkVTUy4gIEl0IGNhbiBydW4gc2ltcGxlIHByb2dyYW1zIGJ1
dCBvdGhlcndpc2Ugc3RpbGwgbmVlZHMKKyAgICAgICAgc29tZSBsb3ZlLgorICAgICAgICAKKyAg
ICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBjYWxs
aW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExMSW50
LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAgd2ls
bCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIgdXAg
dG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4KKyAg
ICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9mIG91
ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMgY29t
cGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gKKyAg
ICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1cmlu
Zy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVjdCBh
Y2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2ljYWxs
eSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAgICAg
ICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJlc3Qg
b2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGluIHRo
ZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAorICAg
ICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWlyZSBw
cmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorCisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAg
ICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJv
bmdSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtDYWxscyk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxscyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29k
ZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmpldHRpc29u
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAg
KEpTQzo6UHJvZ3JhbUNvZGVCbG9jazo6aml0Q29tcGlsZSk6CisgICAgICAgIChKU0M6OkV2YWxD
b2RlQmxvY2s6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6
aml0Q29tcGlsZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9m
ZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5n
T3Bwb3J0dW5pdHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omhhc09wdGltaXplZFJlcGxh
Y2VtZW50KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRMTEludENhbGxMaW5rSW5mbyk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkRnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6ZG9udEpJVEFueXRpbWVTb29uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpqaXRBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0U29v
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGxpbnRFeGVjdXRlQ291bnRlcik6CisgICAg
ICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246
Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OkxMSW50Q2FsbExpbmtJbmZv
KToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6
CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChK
U0M6OkxMSW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29k
ZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdERpcmVjdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENhbGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gpOgorICAgICAgICAq
IGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAg
ICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT3Bl
cmF0aW9ucy5jcHA6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAgICAg
KiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y3VycmVu
dFZQQyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6fkludGVycHJldGVyKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6aXNPcGNvZGUpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZSk6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGVJRCk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjplbmFibGVkKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3RlckZp
bGUuaDoKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSk6CisgICAgICAg
ICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaDogQWRkZWQuCisgICAgICAgICogaml0L0pJVC5j
cHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAg
IChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6
OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoSlND
OjpKSVRDb2RlOjppc09wdGltaXppbmdKSVQpOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjppc0Jh
c2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAgICAgICAq
IGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUp
OgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToKKyAgICAg
ICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93KToKKyAg
ICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5D
VElPTik6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgICogbGxpbnQ6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50Q29tbW9uLmg6IEFkZGVkLgorICAgICAgICAq
IGxsaW50L0xMSW50RGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6
RGF0YSk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjp+RGF0YSk6CisgICAgICAgICogbGxp
bnQvTExJbnREYXRhLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6ZXhjZXB0
aW9uSW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6Om9wY29kZU1hcCk6
CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpMTEludDo6Z2V0RnVuY3Rpb25FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldEV2YWxFbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldFByb2dyYW1FbnRy
eXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnRzLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpMTEludDo6Z2V0RW50cnlwb2ludCk6CisgICAgICAgICogbGxpbnQvTExJbnRF
eGNlcHRpb25zLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjppbnRlcnByZXRlclRo
cm93KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRp
b24pOgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuVG9UaHJvdyk6CisgICAgICAgIChKU0M6
OkxMSW50OjpjYWxsVG9UaHJvdyk6CisgICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50SGVscGVycy5jcHA6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpMTEludDo6bGxpbnRfdHJhY2Vfb3BlcmFuZCk6CisgICAgICAgIChKU0M6OkxMSW50
OjpsbGludF90cmFjZV92YWx1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9IRUxQRVJf
REVDTCk6CisgICAgICAgIChKU0M6OkxMSW50Ojp0cmFjZUZ1bmN0aW9uUHJvbG9ndWUpOgorICAg
ICAgICAoSlNDOjpMTEludDo6c2hvdWxkSklUKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5
VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6
CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50
L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRPZmZzZXRzRXh0
cmFjdG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBsbGludC9MTEludFRo
dW5rcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhK
dW1wVG8pOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5
VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJp
dHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9y
Q29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnByb2dyYW1F
bnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5oOiBBZGRl
ZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTog
QWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICog
b2ZmbGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZs
aW5lYXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJi
OiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAg
ICAgICogb2ZmbGluZWFzbS9zZXR0aW5ncy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFz
bS90cmFuc2Zvcm0ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaDogQWRkZWQuCisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9u
U2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUu
Y3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2
YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6c2FtcGxpbmdEZXNjcmlw
dGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgor
ICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6CisgICAgICAgIChK
U0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbCk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKToKKyAg
ICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGlvbkhhcm5l
c3MuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnByZXBhcmVGb3JFeGVjdXRpb24pOgorICAgICAg
ICAoSlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRp
b25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6Cisg
ICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorCiAyMDEyLTAx
LTExICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBBbGxvdyBhY2Nlc3NvciBnZXQvc2V0IHByb3BlcnR5IHRvIGJlIHNldCB0byB1bmRlZmluZWQK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lv
biAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQko
d29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDExLCAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAs
NiArNjAsNyBAQCBhbGwgOiBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0LmggXAogICAgIFN0
cmluZ1Byb3RvdHlwZS5sdXQuaCBcCiAgICAgZG9jcy9ieXRlY29kZS5odG1sIFwKKyAgICBMTElu
dEFzc2VtYmx5LmguUEhPTlkgXAogIwogCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNzZXMKQEAg
LTEwNCwzICsxMDUsMTEgQEAgSGVhZGVyRGV0ZWN0aW9uLmggOgogCWVjaG8gPiAkQAogCiBlbmRp
ZgorCisjIEFzc2VtYmx5IGZvciB0aGUgTG93TGV2ZWxJbnRlcnByZXRlcgorCisjIFRoaXMgYnVp
bGRzIGV2ZXJ5IHRpbWUgYmVjYXVzZSB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBkZXNjcmliZQor
IyB0aGUgZGVwZW5kZW5jaWVzIHVzaW5nIG1ha2UuIEluc3RlYWQsIHRoZSBhc3NlbWJsZXIgd2ls
bCBkZWNpZGUgb24KKyMgaXRzIG93biB3aGV0aGVyIG9yIG5vdCBpdCBkaWQgYW55dGhpbmcgdGhh
dCB3b3VsZCBsZWFkIHRvIGEgY2hhbmdlLgorTExJbnRBc3NlbWJseS5oLlBIT05ZOgorCXJ1Ynkg
JChKYXZhU2NyaXB0Q29yZSkvb2ZmbGluZWFzbS9hc20ucmIgJChKYXZhU2NyaXB0Q29yZSkvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJChCVUlMVF9QUk9EVUNUU19ESVIpL0pTQ0xMSW50
T2Zmc2V0c0V4dHJhY3RvciA+IExMSW50QXNzZW1ibHkuaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC03LDYgKzcsMTUgQEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJn
ZXQgc2VjdGlvbiAqLworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJh
dGlvbkxpc3QgPSAwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovOworCQkJYnVp
bGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERl
cml2ZWQgU291cmNlcyAqLywKKwkJCSk7CisJCQluYW1lID0gIkxMSW50IE9mZnNldHMiOworCQkJ
cHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKIAkJNjVGQjNGNjYwOUQxMUU5
MTAwRjQ5REVCIC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEFnZ3JlZ2F0
ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2NUZCM0Y3NzA5RDExRUJEMDBG
NDlERUIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQg
IkRlcml2ZWQgU291cmNlcyIgKi87CkBAIC0xNCw2ICsyMyw5IEBACiAJCQkJNjVGQjNGNjUwOUQx
MUU5MTAwRjQ5REVCIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk1RDM1REVF
MTBDN0MxNDBCMDA4NjQ4QjIgLyogR2VuZXJhdGUgRFRyYWNlIGhlYWRlciAqLywKIAkJCSk7CisJ
CQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8sCisJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwog
CQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJfTsKQEAgLTQ4LDYgKzYwLDEw
IEBACiAJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkFD
OTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCQ0Q4MzU3MTQ4
NTg0NTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1w
b3JhcnlDaGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwQkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMz
MDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4
NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5
cG9pbnRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50
cnlwb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgzOUMxNEJDRjQ2
MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5r
cy5jcHAgKi87IH07CisJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTgx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENv
ZGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYg
LyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0FCMTRCQ0Y1
QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhw
cmVzc2lvblJhbmdlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC01OCw5ICs3NCwxMyBAQAogCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYg
LyogTWV0aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJ
bmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCNjE0QkNGOERGMDA4
ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJu
T2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxM
aW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNUYxNUYxNEI3QTcz
RTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNs
b3dQYXRocy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGMTZENzI2MTQyQzM5QzAwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3
ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAv
KiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3QzE0QkU3Mjc2MDBB
REM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhh
cm5lc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNzkxNEJF
NzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2
NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29u
dmVudGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjI0MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNDJEQTUx
M0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU2RjE0NzM4RjMxMDAx
MjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3Mu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJD
NTU3MDE0NzM4RjM1MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYg
LyogREZHQ29kZUJsb2Nrcy5jcHAgKi87IH07CkBAIC03MSw2ICs5MSwxOSBAQAogCQkwRjQzMTcz
ODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyog
TGlzdGFibGVIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDgwMTRC
QTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJ
VEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovOyB9
OworCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RTE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50
SGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLzsgc2V0dGlu
Z3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby11bnVzZWQtcGFyYW1ldGVyIjsgfTsgfTsKKwkJ
MEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi87
IH07CisJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUQxNEJB
N0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MENBMTRC
QkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29t
bW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzYxNEJCQjE2
OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAv
KiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVy
cHJldGVyLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVs
SW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDIx
NEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnRE
YXRhLmNwcCAqLzsgfTsKKwkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0Yx
NEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0
Q2FsbFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVl
LmNwcCAqLzsgfTsKKwkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJu
VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1RjA4Q0YxNDZDNzYz
MzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBV
bmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAxNzQxNDNGQ0QzMzAwNjhCNzdDIC8qIERGR1ZhcmlhYmxl
QWNjZXNzRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY2MjAxNzIxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjIwMTc1
MTQzRkNEMzcwMDY4Qjc3QyAvKiBERkdPcGVyYW5kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MjAxNzExNDNGQ0QyRjAwNjhCNzdDIC8qIERGR09w
ZXJhbmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTM3MSw3ICs0MDQsNyBAQAogCQk4NkI5OUFFMzExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5n
QnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkI5OUFFMTExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZCQjA5QzAxMzhFMzgxQjAwNTY3
MDJGIC8qIERGR1JlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZCQjA5QkUxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwICov
OyB9OwogCQk4NkJCMDlDMTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkYxMzhFMzgxQjAw
NTY3MDJGIC8qIERGR1JlcGF0Y2guaCAqLzsgfTsKLQkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5
IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAq
LzsgfTsKKwkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEy
ODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFj
cm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZDNTY4REQxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNw
cCAqLzsgfTsKIAkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQ
Uy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4
REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwogCQk4NkM1
NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8q
IE1JUFNBc3NlbWJsZXIuaCAqLzsgfTsKQEAgLTczMSw2ICs3NjQsMjAgQEAKIC8qIEVuZCBQQlhC
dWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2Vj
dGlvbiAqLworCQkwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVBy
b3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVy
UG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwor
CQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwQTkxNEJB
N0ZEOTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9ICJMTEludCBPZmZzZXRzIjsKKwkJfTsKKwkJ
MEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsK
KwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4
NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlw
ZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3
MjsKKwkJCXJlbW90ZUluZm8gPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCX07CiAJCTE0
MTIxNEJFMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3
RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC03NzYsNiArODIz
LDE1IEBACiAvKiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhEMTRCQTdFNUUw
MEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBo
YXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAvdXNy
L3NoYXJlL21hbi9tYW4xLzsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMgPSAo
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCX07
CiAJCTVEQkIxNTExMTMxRDBCMTMwMDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0g
ewogCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDEyOwpAQCAtODE2LDYgKzg3MiwxMCBAQAogCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyog
VGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYXJ5Q2hhbmdlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGlt
aXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpemVMaW1pdHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBMTEludEVudHJ5cG9pbnRzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2lu
dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NjE0QkNGNDVBMDA4
ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBMTEludEVudHJ5cG9pbnRzLmg7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludFRodW5rcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBM
TEludFRodW5rcy5jcHA7IHBhdGggPSBsbGludC9MTEludFRodW5rcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5r
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludFRodW5rcy5oOyBwYXRo
ID0gbGxpbnQvTExJbnRUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYw
QjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvZGVUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIYW5kbGVySW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHByZXNzaW9uUmFuZ2VJbmZvLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjYsOSArODg2LDEzIEBACiAJCTBGMEI4M0Iz
MTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWV0aG9kQ2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbG9iYWxSZXNvbHZlSW5mby5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYg
LyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50
Q2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50Q2Fs
bExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTVGMTVEMTRCN0E3
M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29tbW9uU2xvd1BhdGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQml0VmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVREcml2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXph
dGlvbktpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3QTE0QkU3
MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFeGVjdXRpb25IYXJuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVudGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBERkdDb2RlQmxvY2tzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9j
a3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODM5LDYgKzkwMywyMCBAQAogCQkwRjQzMTcz
NjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExpc3RhYmxlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRFeGNlcHRpb25zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJ
VEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURXhjZXB0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA4RjE0QkE3RTVFMDBC
RkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBp
bmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTExJbnRFeGNlcHRpb25zLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TExJbnRFeGNlcHRpb25zLmg7IHBhdGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50
SGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEhl
bHBlcnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEhlbHBlcnMuaDsgcGF0aCA9
IGxsaW50L0xMSW50SGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7
IHBhdGggPSBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRDb21tb24uaDsgcGF0aCA9IGxs
aW50L0xMSW50Q29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM2
MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHBhdGggPSBsbGlu
dC9MTEludE9mZmxpbmVBc21Db25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7
IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRl
ci5oOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RGF0YS5jcHA7IHBhdGgg
PSBsbGludC9MTEludERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExMSW50RGF0YS5oOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0
Q2FsbFJldHVyblZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENDMTQ2QkU2MDIwMDA0NzJBOSAvKiBERkdCeXRl
Q29kZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0J5dGVDb2Rl
Q2FjaGUuaDsgcGF0aCA9IGRmZy9ERkdCeXRlQ29kZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmlu
YWxpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2MjAxNkQxNDNGQ0Qy
RjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHQWJzdHJhY3RTdGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHQWJzdHJh
Y3RTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQwLDYgKzE2MTgs
MTMgQEAKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUy
NzIgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNl
OworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEy
MTExRTBBNDg3OTNDMDA0ODAyNTUgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEZy
YW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAg
LTE1OTgsNiArMTY4Myw3IEBACiAJCQkJMTQxMjExMjAwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlk
b20gKi8sCiAJCQkJMTRCRDU5QkYwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJ
NjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEYx
NEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKIAkJCSk7CiAJ
CQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTYyNiw2
ICsxNzEyLDcgQEAKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENv
cmVQcmVmaXguaCAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAq
LywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8sCisJCQkJMEY0
NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovLAogCQkJCTE0MzJFQkQ3MEEzNENBRDQw
MDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2Vt
YmxlciAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8sCkBA
IC0xNjY0LDYgKzE3NTEsMjggQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsK
IAkJfTsKKwkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8sCisJCQkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1
QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLywKKwkJCQkwRjBCODM5NzE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRUaHVua3MuY3BwICovLAorCQkJCTBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludFRodW5rcy5oICovLAorCQkJCTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTElu
dERhdGEuY3BwICovLAorCQkJCTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEu
aCAqLywKKwkJCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLywK
KwkJCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgg
Ki8sCisJCQkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIu
Y3BwICovLAorCQkJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJl
dGVyLmggKi8sCisJCQkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5jcHAgKi8sCisJCQkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5oICovLAorCQkJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3Bw
ICovLAorCQkJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLywK
KwkJCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cCAqLywKKwkJCSk7CisJCQluYW1lID0gbGxpbnQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OwogCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAyNTUgLyogdGVzdHMgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTY5Niw2ICsxODA1LDggQEAKIAkJ
MTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RD
YWxsUmV0dXJuVmFsdWUuY3BwICovLAorCQkJCTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBI
b3N0Q2FsbFJldHVyblZhbHVlLmggKi8sCiAJCQkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8q
IEpJVEV4Y2VwdGlvbnMuY3BwICovLAogCQkJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBK
SVRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEZEODJFMzcxNDFBQjE0MjAwMTc5Qzk0IC8qIENvbXBh
Y3RKSVRDb2RlTWFwLmggKi8sCkBAIC0yMTE4LDYgKzIyMjksOCBAQAogCQk3RUY2RTBCQjBFQjdB
MUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXph
dGlvbktpbmQuaCAqLywKKwkJCQkwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9u
SGFybmVzcy5oICovLAogCQkJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93
UGF0aHMuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAg
Ki8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAqLywKQEAgLTI0
NzcsNiArMjU5MCw4IEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYyMUMyN0Ux
NEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLywKKwkJCQkwRjBGQzQ1
ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKIAkJCQkwRjBCODNC
ODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAq
LywKIAkJCQkwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAq
LywKIAkJCQkwRjBCODNCMjE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmNw
cCAqLywKQEAgLTMwMTUsNyArMzEzMCwxNiBAQAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3
QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCNDMxMkRCOEE4MTAw
QTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1
RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50
Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyog
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDRDE0QkJC
MTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9p
bnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAv
KiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRG
IC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4
ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDI0LDEz
ICszMTQ4LDM1IEBACiAJCQkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxM
aW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8q
IEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCOTE0QkNGOTVG
MDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1
dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0
QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3
RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CiAvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhO
YXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlND
TExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0Owor
CQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MDhCMTRCQTdF
NUUwMEJGRTI3MiAvKiBTb3VyY2VzICovLAorCQkJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAv
KiBGcmFtZXdvcmtzICovLAorCQkJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5Rmls
ZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMg
PSAoCisJCQkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kg
Ki8sCisJCQkpOworCQkJbmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1
Y3ROYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9
IDBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87
CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9Owog
CQkxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLyA9IHsKIAkJCWlzYSA9IFBC
WE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDEyMTEzOTBBNDg3
OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgIm1pbmlkb20iICovOwpAQCAtMzE1NywxMSArMzMwMywyOSBAQAogCQkJCTE0QkQ1OUJFMEEz
RThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTkzMkY1QkRBMDgyMkExQzcwMDczNjk3
NSAvKiBqc2MgKi8sCiAJCQkJNjUxMTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAg
Ki8sCisJCQkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJh
Y3RvciAqLywKKwkJCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAq
LywKIAkJCSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MEFBMTRCQTdGRDkw
MEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhT
aGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owor
CQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9s
bGludC9Mb3dMZXZlbEFzc2VtYmxlci5hc20iLAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUg
RGVyaXZlZCBTb3VyY2VzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RV
Q1RTX0RJUikvTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaCIsCisJCQkpOworCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAv
YmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJ
Un0vTExJbnRPZmZzZXRzL1wiXG5cbi91c3IvYmluL2VudiBydWJ5IFwiJHtTUkNST09UfS9vZmZs
aW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmJcIiA8IFwiJHtTUkNST09UfS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbVwiID4gXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJ
bnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaFwiXG4iOworCQl9OwogCQkzNzEzRjAxNDE0
MjkwNTI0MDAzNjM4N0YgLyogQ2hlY2sgRm9yIEluYXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xh
c3MgTmFtZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzMwMiw2ICszNDY2LDE0IEBACiAvKiBF
bmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291
cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyog
U291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGNDY4MEE3MTRCQTdG
QTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJ
CTE0MTIxMTFEMEE0ODc5M0MwMDQ4MDI1NSAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJY
U291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAt
MzU1OSw3ICszNzMxLDE0IEBACiAJCQkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJK
SVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3
QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0
QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
NDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50
ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcy
IC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBENDE0QkJEMjQ5MDBC
RkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBC
ODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYwQjgzQjAxNEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBCODNCNDE0QkNGODYwMDA4ODVCNEYgLyogTWV0aG9k
Q2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKQEAgLTM1NzYsNiArMzc1NSwx
NiBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
UEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3
MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5k
ZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZz
ZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMzE0QkE4MjE0MDBCRkUy
NzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQkxNDEyMTRCRjBBNDkxOTBF
MDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWlu
aWRvbSAqLzsKQEAgLTM2MDksNiArMzc5OCwxNDggQEAKIC8qIEVuZCBQQlhUYXJnZXREZXBlbmRl
bmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAq
LworCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NF
QVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9C
SVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RB
TkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5B
QkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0g
MDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIs
CisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9F
WFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5j
bGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJ
CQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5f
QUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0g
WUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJ
CQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJ
IiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRf
VEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gWUVTOworCQkJCVBST0RVQ1Rf
TkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VS
X0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50
T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7
CisJCX07CisJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFM
V0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRB
UkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZP
Uk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9T
VEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOwor
CQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJ
CQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FC
T1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5f
VFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhF
QURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJ
IiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
IiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJP
RFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJ
CVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
TExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBS
ZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJD
SFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlE
RUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19M
QU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05T
ID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5n
LjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdD
Q19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9V
VF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7
CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWlj
dSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChI
RUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJH
RVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsK
KwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2ODA5OTE0QkE3RTVFMDBC
RkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBO
TzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhB
U0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdp
dGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0Nf
RU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBs
ZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NP
TlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZ
RVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5f
VU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0i
ID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJ
bnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJ
TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChU
QVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VB
UkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChI
RUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07
CisJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05B
TUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJ
fTsKKwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVD
VF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFz
ZTsKKwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUg
PSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0
aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9
OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1
NSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVp
bGRTZXR0aW5ncyA9IHsKQEAgLTM4NTAsNiArNDE4MSwyOCBAQAogLyogRW5kIFhDQnVpbGRDb25m
aWd1cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0
aW9uICovCisJCTBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLyA9
IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25z
ID0gKAorCQkJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2
ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODA5ODE0QkE3RTVF
MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAv
KiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxl
ID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJ
CTBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0Nv
bmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODBB
RDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZF
MjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2Zp
bGluZyAqLywKKwkJCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywK
KwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0
Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEzOTBBNDg3OTg0
MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQg
Im1pbmlkb20iICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxk
Q29uZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcg
QEAKICNkZWZpbmUgRFVNUF9MSU5LX1NUQVRJU1RJQ1MgMAogI2RlZmluZSBEVU1QX0NPREUgMAog
Ci0jaW5jbHVkZSA8TWFjcm9Bc3NlbWJsZXIuaD4KKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5o
IgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVu
dGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCeXRlY29k
ZUNvbnZlbnRpb25zX2gKKyNkZWZpbmUgQnl0ZWNvZGVDb252ZW50aW9uc19oCisKKy8vIFJlZ2lz
dGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1l
YW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKKy8vICAgICAgMHg4MDAwMDAwMC0weEZG
RkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBl
bnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCisvLyAgICAgIDB4
MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUg
cG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24n
cyBjYWxsZnJhbWUuCisvLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5k
aWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29s
IG9uIHRoZSBDb2RlQmxvY2suCitzdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4ID0gMHg0MDAwMDAwMDsKKworI2VuZGlmIC8vIEJ5dGVjb2RlQ29udmVudGlvbnNfaAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAko
cmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgogI2luY2x1ZGUgIkpT
VmFsdWUuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiUmVw
YXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUg
PHN0ZGlvLmg+CkBAIC04OTAsNiArODkxLDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNT
dGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDogeworICAg
ICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAgICAgICAgcHJp
bnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF9nZW5lcmljOiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2Nh
dGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0x
NDQ5LDYgKzE0NTgsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcs
CiB7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1QYXJhbWV0ZXJzKCkpOwogICAgIG9w
dGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogICAgIAogICAgIGlm
IChvdGhlci5tX3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nhcnko
KTsKQEAgLTE0OTcsNiArMTUwNyw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1
dGFibGUqIG8KICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIAogICAgIG9wdGltaXplQWZ0ZXJX
YXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogCiAjaWYgRFVNUF9DT0RFX0JMT0NLX1NU
QVRJU1RJQ1MKICAgICBsaXZlQ29kZUJsb2NrU2V0LmFkZCh0aGlzKTsKQEAgLTE1MTQsNyArMTUy
NSwxMSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2lmIEVOQUJMRShWRVJCT1NFX1ZBTFVF
X1BST0ZJTEUpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNlbmRpZgotICAgIAorCisjaWYg
RU5BQkxFKExMSU5UKSAgICAKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4o
KSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50
Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogI2lmIEVO
QUJMRShKSVQpCiAgICAgLy8gV2UgbWF5IGJlIGRlc3Ryb3llZCBiZWZvcmUgYW55IENvZGVCbG9j
a3MgdGhhdCByZWZlciB0byB1cyBhcmUgZGVzdHJveWVkLgogICAgIC8vIENvbnNpZGVyIHRoYXQg
dHdvIENvZGVCbG9ja3MgYmVjb21lIHVucmVhY2hhYmxlIGF0IHRoZSBzYW1lIHRpbWUuIFRoZXJl
CkBAIC0xNzI2LDggKzE3NDEsNTUgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRp
b25hbGx5KAogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5saW5raW5nID0g
ZmFsc2U7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgCisjaWYg
RU5BQkxFKExMSU5UKQorICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFsRGF0
YS0+aW50ZXJwcmV0ZXI7CisgICAgaWYgKCFpbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAg
ICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUo
KSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJ
bnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25z
W2ldXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cklu
c3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgeworICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6
CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgICAgICAgICBpZiAoSGVh
cDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51
LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzVdLnUu
b3BlcmFuZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtl
ZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgICAgICAg
ICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCkp
CisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzdd
LnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAg
ICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAg
ICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOwor
ICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlID0gaW50ZXJwcmV0ZXIt
PmdldE9wY29kZShvcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAg
ICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVtt
X2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgQVNTRVJUKGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3BfcmVz
b2x2ZV9nbG9iYWwKKyAgICAgICAgICAgICAgICAgICB8fCBpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFt
aWMpOworICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzNdLnUu
c3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAg
IGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBjdXJJ
bnN0cnVjdGlvbls0XS51Lm9wZXJhbmQgPSAwOworICAgICAgICB9CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhlYXA6
OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgcHJp
bnRmKCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAg
ICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKICNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2UgYXJlLCB0aGVuIGpl
dHRpc29uLgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdT
Y2FuKCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7CkBAIC0xODQ4LDEw
ICsxOTEwLDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXIKICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7ICsraSkKICAg
ICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAjaWYgRU5BQkxFKElO
VEVSUFJFVEVSKQotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0
dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9u
c1tpXV0pOwotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlv
bnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVz
KHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1d
KTsKKyAgICBpZiAobV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAg
ICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUo
KSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlz
aXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsK
KyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5z
aXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVz
KHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1d
KTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMjA2MCw2ICsyMTI0
LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiB7CiAgICAgaWYgKCEhbV9hbHRl
cm5hdGl2ZSkKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+dW5saW5rQ2FsbHMoKTsKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZv
cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5mb3NbaV0uaXNM
aW5rZWQoKSkKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOwor
ICAgIH0KKyNlbmRpZgogICAgIGlmICghKG1fY2FsbExpbmtJbmZvcy5zaXplKCkgfHwgbV9tZXRo
b2RDYWxsTGlua0luZm9zLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fZ2xv
YmFsRGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0yMDc0LDEwICsyMTQ0LDM1IEBAIHZvaWQgQ29kZUJs
b2NrOjp1bmxpbmtDYWxscygpCiAKIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxz
KCkKIHsKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29t
aW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4o
KS0+dW5saW5rKCk7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRoaXMpOwogICAg
IHdoaWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2FsbHMuZW5kKCkp
CiAgICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigpLT51bmxpbmsoKm1fZ2xvYmFsRGF0YSwg
cmVwYXRjaEJ1ZmZlcik7CiB9CisKK3Vuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQo
RXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit7CisjaWYg
RU5BQkxFKExMSU5UKQorICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0gYml0d2lzZV9j
YXN0PHZvaWQqPigmbGxpbnRfYmVnaW4pCisgICAgICAgICYmIHJldHVybkFkZHJlc3MudmFsdWUo
KSA8PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQpKSB7CisgICAgICAgIEFTU0VSVChl
eGVjLT5jb2RlQmxvY2soKSk7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSA9PSB0
aGlzKTsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUo
KSkpOworICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBleGVjLT5jdXJyZW50VlBD
KCk7CisgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbik7CisgICAgICAgIHJldHVybiBieXRlY29k
ZU9mZnNldChpbnN0cnVjdGlvbik7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CisjZW5kaWYKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiAxOworICAg
IFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0g
bV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7CisgICAgaWYgKCFjYWxsSW5kaWNl
cy5zaXplKCkpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q2Fs
bFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zm
c2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJVENvZGUo
KS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7Cit9CiAj
ZW5kaWYKIAogdm9pZCBDb2RlQmxvY2s6OmNsZWFyRXZhbENhY2hlKCkKQEAgLTIxNzMsMjQgKzIy
NjgsNDUgQEAgYm9vbCBGdW5jdGlvbkNvZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERgogCiB2b2lk
IFByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgp
ICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6
aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkp
OwogICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkp
LT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRXZhbENv
ZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0
SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3Rh
dGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0
aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6
amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxp
bmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgp
KSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8
RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXpl
ZENvZGVGb3IoKmdsb2JhbERhdGEoKSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVj
dCA6IENvZGVGb3JDYWxsKTsKIH0KKwordm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxl
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwor
ICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5q
aXRDb21waWxlKGV4ZWMpOworfQorCit2b2lkIEV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGUoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50
ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAg
c3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBp
bGUoZXhlYyk7Cit9CisKK3ZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgc3Rh
dGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21w
aWxlRm9yKGV4ZWMsIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9y
Q2FsbCk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEwNDg2
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBDb2RlQmxvY2tfaAogI2RlZmluZSBD
b2RlQmxvY2tfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUg
IkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zm
c2V0LmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgpAQCAtNTAsNiArNTEsNyBAQAogI2luY2x1
ZGUgIkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKICNpbmNs
dWRlICJMaW5lSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUHJlZGljdGlv
blRyYWNrZXIuaCIKQEAgLTY1LDE2ICs2NywxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCi0vLyBSZWdpc3RlciBudW1iZXJzIHVz
ZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGlu
ZyB0byB0aGVpciByYW5nZXM6Ci0vLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRp
dmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUg
Y2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgotLy8gICAgICAweDAwMDAwMDAwLTB4M0ZG
RkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxv
Y2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgot
Ly8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQw
MDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJs
b2NrLgotc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAw
MDAwMDA7Ci0KIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNs
YXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGlubGluZSBpbnQgdW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKGludCBhcmd1bWVudHNSZWdpc3RlcikgeyByZXR1cm4gYXJndW1lbnRzUmVnaXN0ZXIg
LSAxOyB9CiAKQEAgLTgzLDYgKzgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29k
ZUJsb2NrIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIsIHB1YmxpYyBXZWFrUmVmZXJl
bmNlSGFydmVzdGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENvcHlQYXJzZWRCbG9ja1RhZyB7IENv
cHlQYXJzZWRCbG9jayB9OwogICAgIHByb3RlY3RlZDoKQEAgLTEyMyw3ICsxMjEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5hbHRlcm5hdGl2ZSgpOwogICAgICAgICAg
ICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBl
KCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6
OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAjZW5kaWYKQEAgLTE5NCwxNSArMTkyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9kQ2FsbExp
bmtJbmZvLCB1bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4obV9t
ZXRob2RDYWxsTGlua0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCks
IGJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAg
ICAgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGlj
ZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKLSAgICAgICAgICAgIGlm
ICghY2FsbEluZGljZXMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAg
ICAgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNl
dCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNh
bGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFs
dWUoKSkpLT5ieXRlY29kZU9mZnNldDsKLSAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldChFeGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAgICAgICB1bnNp
Z25lZCBieXRlY29kZU9mZnNldEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgICAg
ICB7CkBAIC0yMjMsMTEgKzIxMywxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAg
ICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwogICAgICAgICB9CisjaWYg
RU5BQkxFKExMSU5UKQorICAgICAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoTExJbnRDYWxsTGlu
a0luZm8qIGluY29taW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2luY29taW5nTExJbnRD
YWxscy5wdXNoKGluY29taW5nKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkK
ICAgICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5rSW5jb21pbmdDYWxscygpOwotI2VuZGlmCisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShE
RkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIHZvaWQgc2V0SklUQ29kZU1hcChQYXNz
T3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBqaXRDb2RlTWFwKQogICAgICAgICB7CiAgICAgICAg
ICAgICBtX2ppdENvZGVNYXAgPSBqaXRDb2RlTWFwOwpAQCAtMjM2LDcgKzIzMiw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9qaXRDb2RlTWFwLmdl
dCgpOwogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgCisjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgICAgIHZvaWQgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCEhbV9kZmdEYXRhKQpAQCAtMzM1LDEyICszMzMsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAg
ICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJldHVybkFkZHJlc3MgPj0gaW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zKCkuZW5kKCkpOwogICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykg
LSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgICB2
b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5j
dGlvbikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5j
dGlvbjsgfQogICAgICAgICBib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbigpIHsgcmV0dXJu
IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CkBAIC0zNTYsMTAgKzM1MywxNCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2Fy
ZGluZ09wcG9ydHVuaXR5KCkKICAgICAgICAgeworI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5H
KSAmJiAhRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgaWYgKEJ5dGVjb2RlR2VuZXJhdG9yOjpk
dW1wc0dlbmVyYXRlZENvZGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICBpZiAoISFhbHRlcm5hdGl2ZSgpKQogICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZSgp
OwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZUxhdGVy
KCk7CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICAKICNpZm5kZWYgTkRFQlVHCkBAIC0zODcs
MTcgKzM4OCwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY3V0YWJsZU1lbW9yeUhh
bmRsZSogZXhlY3V0YWJsZU1lbW9yeSgpIHsgcmV0dXJuIGdldEpJVENvZGUoKS5nZXRFeGVjdXRh
YmxlTWVtb3J5KCk7IH0KICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXpl
ZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IGpldHRpc29uKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZShFeGVjU3Rh
dGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpID0gMDsK
ICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCkgPSAwOwogICAgICAgICBi
b29sIGhhc09wdGltaXplZFJlcGxhY2VtZW50KCkKICAgICAgICAgewotICAgICAgICAgICAgQVNT
RVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBB
U1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAg
ICBib29sIHJlc3VsdCA9IHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA+IGdldEpJVFR5cGUo
KTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICAgICBpZiAocmVzdWx0KQogICAgICAg
ICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6
REZHSklUKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChyZXBs
YWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAg
ICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXBsYWNlbWVudCgpLT5n
ZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKSA9PSB0
aGlzKTsKICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtNDU2LDcgKzQ1OCw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHZvaWQgY2xlYXJFdmFsQ2FjaGUoKTsKIAotI2lmIEVOQUJMRShJ
TlRFUlBSRVRFUikKICAgICAgICAgdm9pZCBhZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKHVu
c2lnbmVkIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKQEAgLTQ2OCw2ICs0NjksMTIgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25z
LmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAgICAgIGJv
b2wgaGFzR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBi
eXRlY29kZU9mZnNldCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBMTEludENhbGxMaW5r
SW5mbyogYWRkTExJbnRDYWxsTGlua0luZm8oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xs
aW50Q2FsbExpbmtJbmZvcy5hcHBlbmQoTExJbnRDYWxsTGlua0luZm8oKSk7CisgICAgICAgICAg
ICByZXR1cm4gJm1fbGxpbnRDYWxsTGlua0luZm9zLmxhc3QoKTsKKyAgICAgICAgfQogI2VuZGlm
CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBzZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJ
bmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZvcy5ncm93KHNpemUpOyB9CkBA
IC02NzIsNyArNjc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29s
IGFkZEZyZXF1ZW50RXhpdFNpdGUoY29uc3QgREZHOjpGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJh
c2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShn
ZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBtX2V4aXRQcm9maWxlLmFkZChzaXRl
KTsKICAgICAgICAgfQogCkBAIC03NzcsNiArNzg0LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbShDb2RlQmxvY2sqIGFsdGVybmF0aXZlKTsK
ICAgICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgICAg
ICAKKyAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIEpJVHRpbmcga2lj
a3MgaW4sIGluIGEgbWl4ZWQgbW9kZQorICAgICAgICAvLyBleGVjdXRpb24gd29ybGQuCisgICAg
ICAgIAorICAgICAgICB2b2lkIGRvbnRKSVRBbnl0aW1lU29vbigpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
dm9pZCBqaXRBZnRlcldhcm1VcCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVj
dXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2Fy
bVVwOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdFNvb24oKQorICAgICAg
ICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBp
bnQzMl90IGxsaW50RXhlY3V0ZUNvdW50ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAg
ICByZXR1cm4gbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICB9CisgICAgICAgIAogICAg
ICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gdGllcmVkIGNvbXBpbGF0aW9u
IGtpY2tzIGluLiBUaGlzCiAgICAgICAgIC8vIGNvbnRyb2xzIGJvdGggd2hlbiB0aGUgb3B0aW1p
emluZyBjb21waWxlciBpcyBpbnZva2VkIGFuZCB3aGVuIE9TUgogICAgICAgICAvLyBlbnRyeSBo
YXBwZW5zLiBUd28gdHJpZ2dlcnMgZXhpc3Q6IHRoZSBsb29wIHRyaWdnZXIgYW5kIHRoZSByZXR1
cm4KQEAgLTEwNTIsOSArMTA4MiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZz
ZXQ7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4g
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBt
X2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBT
ZWdtZW50ZWRWZWN0b3I8TExJbnRDYWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxsTGlua0luZm9z
OworICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3
U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdMTEludENhbGxzOwog
I2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZv
PiBtX3N0cnVjdHVyZVN0dWJJbmZvczsKQEAgLTEwNjUsOSArMTA5NywxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNo
ZWNrOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1Nl
bnRpbmVsTm9kZTxDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2VuZGlmCi0jaWYg
RU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAg
ICAgICAgT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAgICAgIAor
I2VuZGlmCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFrUmVmZXJlbmNl
VHJhbnNpdGlvbiB7CiAgICAgICAgICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigpIHsgfQog
ICAgICAgICAgICAgCkBAIC0xMTMwLDEyICsxMTYzLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIE93blB0cjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAgIAorICAgICAg
ICBpbnQzMl90IG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAgICAgIGludDMy
X3QgbV9qaXRFeGVjdXRlQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZVN1
Y2Nlc3NDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFpbENvdW50ZXI7
CiAgICAgICAgIHVpbnQ4X3QgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAgICAgIHVp
bnQ4X3QgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKLQorICAgICAgICAKICAgICAgICAg
c3RydWN0IFJhcmVEYXRhIHsKICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgICAgIHB1YmxpYzoKQEAgLTEyMDgsNiArMTI0Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChF
eGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlz
b24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGUoRXhlY1N0YXRlKik7CiAgICAg
ICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJv
b2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtMTI0Miw2ICsxMjc4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBj
b21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZShF
eGVjU3RhdGUqKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC0xMjc5
LDYgKzEzMTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZp
cnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5v
ZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBqaXRDb21waWxlKEV4ZWNTdGF0ZSopOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayog
cmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVj
dGlvbi5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogICAgIGNs
YXNzIFN0cnVjdHVyZUNoYWluOworICAgIHN0cnVjdCBMTEludENhbGxMaW5rSW5mbzsKIAogI2lm
IEVOQUJMRShKSVQpCiAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgUG9seW1vcnBo
aWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlOwpAQCAtMTQxLDYgKzE0MiwxMSBA
QCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAgICAgc3RydWN0IEluc3RydWN0aW9uIHsKKyAg
ICAgICAgSW5zdHJ1Y3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB1LmpzQ2VsbC5jbGVh
cigpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihPcGNvZGUgb3Bj
b2RlKQogICAgICAgICB7CiAjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQpA
QCAtMTc2LDYgKzE4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAg
SW5zdHJ1Y3Rpb24oUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYykgeyB1Lmdl
dHRlckZ1bmMgPSBnZXR0ZXJGdW5jOyB9CisgICAgICAgIAorICAgICAgICBJbnN0cnVjdGlvbihM
TEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSB7IHUuY2FsbExpbmtJbmZvID0gY2FsbExp
bmtJbmZvOyB9CiAKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgT3Bjb2RlIG9wY29kZTsK
QEAgLTE4NCw2ICsxOTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFdyaXRlQmFy
cmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IHN0cnVjdHVyZUNoYWluOwogICAgICAgICAgICAgV3Jp
dGVCYXJyaWVyQmFzZTxKU0NlbGw+IGpzQ2VsbDsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jIGdldHRlckZ1bmM7CisgICAgICAgICAgICBMTEludENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvOworICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsKICAgICAgICAgfSB1Owog
ICAgICAgICAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIExMSW50Q2FsbExpbmtJbmZvX2gKKyNkZWZpbmUgTExJbnRDYWxsTGlu
a0luZm9faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworc3RydWN0IExMSW50Q2FsbExp
bmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiB7
CisgICAgTExJbnRDYWxsTGlua0luZm8oKQorICAgIHsKKyAgICB9CisgICAgCisgICAgfkxMSW50
Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAg
ICAgcmVtb3ZlKCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJldHVybiBj
YWxsZWU7IH0KKyAgICAKKyAgICB2b2lkIHVubGluaygpCisgICAgeworICAgICAgICBjYWxsZWUu
Y2xlYXIoKTsKKyAgICAgICAgbWFjaGluZUNvZGVUYXJnZXQgPSBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoKTsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAg
ICB9CisgICAgCisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGNhbGxlZTsKKyAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgbWFjaGluZUNvZGVUYXJnZXQ7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIExMSW50Q2FsbExpbmtJbmZvX2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMs
NiArMTIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9hcmd1bWVu
dHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkgXAogICAgICAg
ICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAorICAgICAgICBtYWNybyhvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9y
ZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmljLCA5KSBcCiAg
ICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApAQCAtMjAyLDYgKzIwNCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIGVudW0geyBGT1JfRUFDSF9PUENPREVfSUQoT1BD
T0RFX0lEX0VOVU0pIH0gT3Bjb2RlSUQ7CiAgICAgI3VuZGVmIE9QQ09ERV9JRF9FTlVNCiAKKyAg
ICBjb25zdCBpbnQgbWF4T3Bjb2RlTGVuZ3RoID0gOTsKICAgICBjb25zdCBpbnQgbnVtT3Bjb2Rl
SURzID0gb3BfZW5kICsgMTsKIAogICAgICNkZWZpbmUgT1BDT0RFX0lEX0xFTkdUSFMoaWQsIGxl
bmd0aCkgY29uc3QgaW50IGlkIyNfbGVuZ3RoID0gbGVuZ3RoOwpAQCAtMjE4LDcgKzIyMSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoVkVSSUZZX09QQ09E
RV9JRCk7CiAgICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQKIAotI2lmIEVOQUJMRShDT01QVVRF
RF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KSB8fCBFTkFCTEUoTExJTlQpCiAjaWYgQ09NUElMRVIoUlZDVCkgfHwgQ09NUElMRVIoSU5URUwp
CiAgICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJ
KHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGlu
ZXMuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCkBAIC0xMjY0LDkgKzEyNjUsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICAg
ICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUo
KSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIG1fY29kZUJsb2Nr
LT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNl
bmRpZgogICAgICAgICBlbWl0T3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE0MTksOSArMTQxOCw3IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgIG1f
Y29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwog
I2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAg
IGVtaXRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJv
cERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHBy
b3BlcnR5KSk7CkBAIC0xNDY2LDkgKzE0NjMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xv
YmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJM
RShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0
aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBlbWl0T3Bjb2RlKHJlcXVp
cmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZl
X2dsb2JhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ4
Niw5ICsxNDgxLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1ldGhvZENoZWNrKAog
CiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCog
ZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSNp
ZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1pdE9w
Y29kZShvcF9nZXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4
KCkpOwpAQCAtMTUxMyw5ICsxNTA2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRHZXRBcgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQo
UmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQq
IHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRk
UHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlm
CiAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTUzMSw5ICsxNTIyLDcgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikK
ICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlv
bnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE4MjEsNyAr
MTgxMCwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoCiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMo
KSk7IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMu
cmVnaXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQor
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0lu
Zm8oKSk7CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQo
KSkgewogICAgICAgICBlbWl0T3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0xOTIzLDcg
KzE5MTYsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdAogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRz
LnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJ
bmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0
KCkpIHsKICAgICAgICAgZW1pdE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMjE4Myw3
ICsyMTgwLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gKIHsK
ICAgICBtX3VzZXNFeGNlcHRpb25zID0gdHJ1ZTsKICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJM
RShMTElOVCkKKyAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5k
LT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGgg
KyBtX2Jhc2VTY29wZURlcHRoLCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9vcF9jYXRjaCkpIH07CisjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0
YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwg
bV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVs
KCkgfTsKKyNlbmRpZgogI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+Ymlu
ZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1p
Y1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAx
MDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTgyMyw3ICsxODIzLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5
X2lkKTsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CisgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsK
ICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10u
dS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0
cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51
bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVj
dGlvblsyXS51Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDgg
QEAgaW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNhc2Ugb3Bf
cHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRf
YnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFs
X3ZhcjoKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUgIkRGR1JlcGF0Y2guaCIKKyNpbmNs
dWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW5saW5lQVNNLmgiCiAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgpAQCAtNTQ1LDQ1
ICs1NDYsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyCiAgICAg
cmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
REZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNvZGVkSlNWYWx1ZSBE
RkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0
ZSopOwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKLSAgICAibW92
ICVyMTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKFg4NikK
LWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAi
XG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAg
Im1vdiAtNDAoJWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVzcClcbiIKLSAgICAi
am1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRo
RXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20gKAotIi50ZXh0
IiAiXG4iCi0iLmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICJcbiIKLSIudGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKLSAgICAiY3B5
IHIwLCByNSIgIlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0KLUVuY29kZWRK
U1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUo
RXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xv
YmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQotCiBzdGF0aWMgdm9pZCogaGFuZGxl
SG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUt
PmNhbGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0
aW9uU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxv
Y2F0aW9uU3BhY2UuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQWxsb2NhdGlvblNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogY2xhc3MgTWFya2VkQmxvY2s7CiAKIGNsYXNzIEFsbG9jYXRpb25TcGFjZSB7CkBAIC02
OCw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNocmluaygpOwogICAgIAogcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAgIGVudW0g
QWxsb2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRpb25NdXN0U3VjY2VlZCwgQWxsb2NhdGlvbkNhbkZh
aWwgfTsKICAgICAKICAgICB2b2lkKiBhbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTA0ODYwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgyOSw3ICs4MjksNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dn
CiAgICAgICAgIG1fb2JqZWN0U3BhY2Uuc2V0SGlnaFdhdGVyTWFyayhtYXgocHJvcG9ydGlvbmFs
Qnl0ZXMsIG1fbWluQnl0ZXNQZXJDeWNsZSkpOwogICAgIH0KICAgICBKQVZBU0NSSVBUQ09SRV9H
Q19FTkQoKTsKLQorICAgIAogICAgICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpT
VmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAgICBjbGFz
cyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTEyOSwxMCArMTMwLDExIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9v
dHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZnJp
ZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGlvblNw
YWNlOwotICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBDb2RlQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIFNsb3RWaXNpdG9yOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWluRXh0cmFD
b3N0ID0gMjU2OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4dHJhQ29zdCA9IDEw
MjQgKiAxMDI0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5o
CShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
Y2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKK2Ns
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsKIGNsYXNzIFNs
b3RWaXNpdG9yOwogCkBAIC03OSw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jaygp
OwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgCiAgICAgLy8gWyAzMi4uLiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lz
ZVN0ZXAgPSBNYXJrZWRCbG9jazo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBw
cmVjaXNlQ3V0b2ZmID0gMjU2OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiAr
MTE5LDkgQEAgbmFtZXNwYWNlIEpTQyAgewogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAg
ICAgSW5zdHJ1Y3Rpb24qIHJldHVyblZQQygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJG
aWxlOjpSZXR1cm5QQ10udlBDKCk7IH0KICNlbmRpZgorI2lmIEVOQUJMRShMTElOVCkKKyAgICAg
ICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8
SW5zdHJ1Y3Rpb24qPih0aGlzW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0udGFnKCkpOyB9
CisjZW5kaWYKIAogICAgICAgICB2b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogY2FsbGVy
RnJhbWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OkNhbGxl
ckZyYW1lXSA9IGNhbGxlckZyYW1lOyB9CiAgICAgICAgIHZvaWQgc2V0U2NvcGVDaGFpbihTY29w
ZUNoYWluTm9kZSogc2NvcGVDaGFpbikgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1Jl
Z2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0gPSBzY29wZUNoYWluOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9u
IDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRlICJKSVQuaCIK
ICNlbmRpZgogCi0jZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAo
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkK
KyNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EICgoRU5BQkxFKENP
TVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkpICYmICFkZWZpbmVkKF9f
bGx2bV9fKSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNTQ3LDE3ICs1NDcsNDEgQEAg
SW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKIHsKIH0KIAotdm9pZCBJbnRlcnByZXRlcjo6aW5p
dGlhbGl6ZShib29sIGNhblVzZUpJVCkKK0ludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIoKQogewot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkK
KyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICBkZWxldGVbXSBtX29wY29kZVRhYmxlOworI2Vu
ZGlmCit9CisKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRhdGEqIGxsaW50
RGF0YSwgYm9vbCBjYW5Vc2VKSVQpCit7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQ
UkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQ
UkVURVIpCisgICAgLy8gSGF2aW5nIExMSW50IGVuYWJsZWQsIGJ1dCBub3QgYmVpbmcgYWJsZSB0
byB1c2UgdGhlIEpJVCwgYW5kIG5vdCBoYXZpbmcKKyAgICAvLyBhIGNvbXB1dGVkIGdvdG8gaW50
ZXJwcmV0ZXIsIGlzIG5vdCBzdXBwb3J0ZWQuIE5vdCBiZWNhdXNlIHdlIGNhbm5vdAorICAgIC8v
IHN1cHBvcnQgaXQsIGJ1dCBiZWNhdXNlIEkgZGVjaWRlZCB0byBkcmF3IHRoZSBsaW5lIGF0IHRo
ZSBudW1iZXIgb2YKKyAgICAvLyBwZXJtdXRhdGlvbnMgb2YgZXhlY3V0aW9uIGVuZ2luZXMgdGhh
dCBJIHdhbnRlZCB0aGlzIGNvZGUgdG8gZ3Jvay4KKyAgICBBU1NFUlQoY2FuVXNlSklUKTsKKyNl
bmRpZgogICAgIGlmIChjYW5Vc2VKSVQpIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1f
b3Bjb2RlVGFibGUgPSBsbGludERhdGEtPm9wY29kZU1hcCgpOworICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQorICAgICAgICAgICAgbV9vcGNvZGVJRFRhYmxl
LmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworI2Vsc2UK
ICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0aW5h
dGlvbnMgZm9yIG9wY29kZXMuCiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlID0gYml0d2lz
ZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpKTsKICAgICAgICAgICAgIG1f
b3Bjb2RlVGFibGVbaV0gPSBvcGNvZGU7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0gZWxzZSB7
CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbmV3IE9wY29kZVtu
dW1PcGNvZGVJRHNdOworI2VuZGlmCiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRpYWxpemVB
bmRSZXR1cm4sIDAsIDApOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1PcGNvZGVJRHM7ICsraSkKQEAgLTY2Nyw5ICs2OTEsMTEgQEAgdm9pZCBJbnRlcnByZXRlcjo6
ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbQogCiBib29sIEludGVycHJldGVyOjppc09wY29kZShPcGNv
ZGUgb3Bjb2RlKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lm
IEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYg
IUVOQUJMRShMTElOVCkKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG9wY29k
ZSA+PSAwICYmIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihv
cGNvZGUpKSA8PSBvcF9lbmQ7CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2RlICE9IEhhc2hUcmFp
dHM8T3Bjb2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJhaXRzPE9wY29kZT46
OmlzRGVsZXRlZFZhbHVlKG9wY29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJRFRhYmxlLmNvbnRh
aW5zKG9wY29kZSk7CkBAIC03MjYsMTEgKzc1MiwxMSBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRl
cnByZXRlcjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAxLgogI2lmIEVOQUJM
RShKSVQpICYmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBpZiAoY2FsbGVyRnJhbWUtPmdsb2Jh
bERhdGEoKS5jYW5Vc2VKSVQoKSkKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1l
LT5yZXR1cm5QQygpKTsKICAgICBlbHNlCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJs
b2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZWxpZiBF
TkFCTEUoSklUKQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNl
dChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2Nr
LT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNl
bHNlCiAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxG
cmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbmRpZgpAQCAtNTE2NiwxMCArNTE5MiwxMCBAQCB2
b2lkIEludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVy
blZQQygpKTsKICNpZiBFTkFCTEUoSklUKQogICAgIGVsc2UKLSAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMo
KSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9m
ZnNldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYKICNlbHNlCi0g
ICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxG
cmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRp
ZgogICAgIGxpbmVOdW1iZXIgPSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29k
ZU9mZnNldChieXRlY29kZU9mZnNldCAtIDEpOwogICAgIHNvdXJjZUlEID0gY2FsbGVyQ29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxMDQ4NjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1
ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkxMSW50RGF0
YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgogCkBA
IC00NSw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0
YWJsZTsKICAgICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0Owor
ICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0
YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKQEAg
LTkwLDE5ICs5MiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEludGVycHJldGVy
IHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVuZCBjbGFz
cyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQgY2xhc3MgSklUOwog
ICAgIHB1YmxpYzoKICAgICAgICAgSW50ZXJwcmV0ZXIoKTsKKyAgICAgICAgfkludGVycHJldGVy
KCk7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQpOwor
ICAgICAgICB2b2lkIGluaXRpYWxpemUoTExJbnQ6OkRhdGEqLCBib29sIGNhblVzZUpJVCk7CiAK
ICAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKSB7IHJldHVybiBtX3JlZ2lzdGVy
RmlsZTsgfQogICAgICAgICAKICAgICAgICAgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCBpZCkK
ICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwotI2lmIEVOQUJM
RShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lO
VEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVU
YWJsZVtpZF07CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIGlkOwpAQCAtMTEyLDcgKzExNiwx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoT3Bjb2Rl
IG9wY29kZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkK
KyAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKKyAgICAgICAgICAgIHJldHVy
biBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09U
T19JTlRFUlBSRVRFUikKICAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKICAg
ICAgICAgICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSk7CkBAIC0xMjIs
NiArMTI5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG9wY29kZTsK
ICNlbmRpZgogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGVuYWJsZWQoKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9lbmFibGVkOworICAgICAgICB9CiAKICAgICAg
ICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCkBAIC0xODksNyArMjAxLDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSBtX3JlZ2lzdGVyRmlsZTsKICAgICAgICAg
Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5U
KQorICAgICAgICBPcGNvZGUqIG1fb3Bjb2RlVGFibGU7IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bj
b2RlIGZvciBjb21waWxpbmcKKyAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29w
Y29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZwor
I2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgIE9wY29kZSBt
X29wY29kZVRhYmxlW251bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bjb2RlIGZv
ciBjb21waWxpbmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29wY29kZUlE
VGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVy
RmlsZS5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAgICBjbGFzcyBE
RkdDb2RlQmxvY2tzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGNs
YXNzIFJlZ2lzdGVyRmlsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlZ2lzdGVy
RmlsZSk7CkBAIC04MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAg
ICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgICAgICAKICAgICAgICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIqKTsKICAgICAgICAg
dm9pZCByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9pZCBhZGRUb0NvbW1pdHRl
ZEJ5dGVDb3VudChsb25nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENh
bGxSZXR1cm5WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKwor
I2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIklubGluZUFTTS5oIgorI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNWYWx1ZUlubGluZU1ldGhvZHMuaCIKKyNpbmNsdWRl
ICJTY29wZUNoYWluLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitleHRlcm4gIkMiIEVuY29kZWRK
U1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUoKTsKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9P
UFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7CisK
KyNpZiBDUFUoWDg2XzY0KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgorICAgICJtb3YgJXIxMywg
JXJkaVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUoWDg2KQorYXNtICgK
KyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00
MCglZWRpKSwgJWVkaVxuIgorICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgorICAgICJqbXAgIiBT
WU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3Rh
dGUpICJcbiIKKyk7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKK2FzbSAoCisiLnRleHQiICJcbiIK
KyIuYWxpZ24gMiIgIlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgor
Ii50aHVtYiIgIlxuIgorIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICI6IiAiXG4iCisgICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgorICAgICJjcHkgcjAsIHI1
IiAiXG4iCisgICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZW5kaWYKKworZXh0ZXJuICJDIiBFbmNv
ZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVy
blZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0
Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorI2RlZmluZSBIb3N0Q2FsbFJldHVyblZhbHVlX2gK
KworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYu
aCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENBTExJTkdfQ09OVkVOVElPTl9J
U19TVERDQUxMCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIENERUNMCisj
ZWxzZQorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTgorI2VuZGlmCisKK25h
bWVzcGFjZSBKU0MgeworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJO
X1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Cit9CisKKyNlbmRpZiAvLyBI
b3N0Q2FsbFJldHVyblZhbHVlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAko
cmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
TWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmlsZV93aWxsX2NhbGwpCiAgICAg
ICAgIERFRklORV9PUChvcF9wdXNoX25ld19zY29wZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1
c2hfc2NvcGUpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Ogor
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVG
SU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pbmRleCkK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCkBAIC00ODcsNiArNDg5LDggQEAgdm9p
ZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX3Bvc3RfaW5jKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2RlYykK
ICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9pbmMpCisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9p
ZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2dsb2JhbCkKQEAgLTY5MCw3ICs2OTQsNyBAQCBK
SVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAgICAgICAgIGluZm8uY2Fs
bFJldHVybkxvY2F0aW9uID0gbV9jb2RlQmxvY2stPnN0cnVjdHVyZVN0dWJJbmZvKG1fbWV0aG9k
Q2FsbENvbXBpbGF0aW9uSW5mb1tpXS5wcm9wZXJ0eUFjY2Vzc0luZGV4KS5jYWxsUmV0dXJuTG9j
YXRpb247CiAgICAgfQogCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQp
IHx8IEVOQUJMRShMTElOVCkKICAgICBpZiAobV9jYW5CZU9wdGltaXplZCkgewogICAgICAgICBD
b21wYWN0SklUQ29kZU1hcDo6RW5jb2RlciBqaXRDb2RlTWFwRW5jb2RlcjsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgbV9sYWJlbHMu
c2l6ZSgpOyArK2J5dGVjb2RlT2Zmc2V0KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENvZGUuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEpJVENvZGUoKSB7IH0KICNlbmRpZgogICAgIHB1YmxpYzoKLSAgICAgICAgZW51
bSBKSVRUeXBlIHsgSG9zdENhbGxUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OworICAgICAg
ICBlbnVtIEpJVFR5cGUgeyBOb25lLCBIb3N0Q2FsbFRodW5rLCBJbnRlcnByZXRlclRodW5rLCBC
YXNlbGluZUpJVCwgREZHSklUIH07CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgSklUVHlwZSBi
b3R0b21UaWVySklUKCkKICAgICAgICAgewpAQCAtNjYsOCArNjYsMTkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICByZXR1cm4gREZHSklUOwogICAgICAgICB9CiAgICAgICAgIAorICAg
ICAgICBzdGF0aWMgYm9vbCBpc09wdGltaXppbmdKSVQoSklUVHlwZSBqaXRUeXBlKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBERkdKSVQ7CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIHN0YXRpYyBib29sIGlzQmFzZWxpbmVDb2RlKEpJVFR5cGUgaml0VHlw
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gSW50ZXJwcmV0ZXJU
aHVuayB8fCBqaXRUeXBlID09IEJhc2VsaW5lSklUOworICAgICAgICB9CisgICAgICAgIAogI2lm
IEVOQUJMRShKSVQpCiAgICAgICAgIEpJVENvZGUoKQorICAgICAgICAgICAgOiBtX2ppdFR5cGUo
Tm9uZSkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTc1LDYgKzg2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICA6IG1fcmVmKHJlZikKICAgICAgICAgICAgICwgbV9qaXRUeXBl
KGppdFR5cGUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChqaXRUeXBlICE9IE5vbmUp
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yICEoKSBjb25zdApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCShyZXZpc2lvbiAxMDQ4NjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMywxNSArMzMsMjEgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkxMSW50RW50
cnlwb2ludHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVC
bG9ja1R5cGU+CiBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShFeGVjU3RhdGUq
IGV4ZWMsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2Rl
LCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CisgICAgaWYgKGppdFR5cGUgPT0gY29kZUJs
b2NrLT5nZXRKSVRUeXBlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAogICAgIGlmICgh
ZXhlYy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29s
IGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklU
KQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZShleGVjLCBjb2RlQmxvY2su
Z2V0KCksIGppdENvZGUpOwpAQCAtNTUsMTAgKzYxLDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGls
ZUlmQXBwcm9wcmlhdGUoRXhlYwogICAgICAgICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNv
bXBpbGUoJmV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLmdldCgpKTsKICAgICB9Ci0jaWYg
IUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRlY29kZUdlbmVyYXRvcjo6ZHVt
cHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNj
YXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgorICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNv
ZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0
Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwogICAgIAogICAgIHJldHVybiB0cnVlOwpA
QCAtNjYsMTAgKzY5LDE1IEBAIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEV4
ZWMKIAogaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShFeGVjU3Rh
dGUqIGV4ZWMsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYg
aml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNo
YXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkK
IHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgCiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+
Z2xvYmFsRGF0YSgpOwogICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgCisgICAgY29kZUJsb2NrLT51bmxpbmtJbmNvbWluZ0NhbGxzKCk7
CisgICAgCiAgICAgYm9vbCBkZmdDb21waWxlZCA9IGZhbHNlOwogICAgIGlmIChqaXRUeXBlID09
IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAgZGZnQ29tcGlsZWQgPSBERkc6OnRyeUNvbXBpbGVG
dW5jdGlvbihleGVjLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlD
aGVjayk7CkBAIC04NCwxMSArOTIsNyBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25J
ZkFwcHJvcHJpCiAgICAgICAgIH0KICAgICAgICAgaml0Q29kZSA9IEpJVDo6Y29tcGlsZSgmZ2xv
YmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCAmaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKICAgICB9
Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRlY29kZUdlbmVyYXRv
cjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNv
ZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgotICAgIAorICAgIGNvZGVCbG9jay0+
aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2RlQmxvY2stPnNl
dEpJVENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKICAgICAKICAgICByZXR1
cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25z
LmNwcAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRF
eGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBFeGNlcHRpb25I
YW5kbGVyIGdlbmVyaWNUaHJvdyhKU0dsb2JhbERhCiAKIEV4Y2VwdGlvbkhhbmRsZXIgaml0VGhy
b3coSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVjU3RhdGUqIGNhbGxGcmFtZSwgSlNWYWx1
ZSBleGNlcHRpb25WYWx1ZSwgUmV0dXJuQWRkcmVzc1B0ciBmYXVsdExvY2F0aW9uKQogewotICAg
IHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1
ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZmF1bHRMb2NhdGlvbikp
OworICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBleGNlcHRp
b25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1l
LCBmYXVsdExvY2F0aW9uKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2NCw0NSArMjE2NCwxMyBAQCBE
RUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotaW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+
Y2FsbGVlKCkpOwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICBD
b2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0
ZWRCeXRlY29kZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAgICAvLyBUaGlz
IGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJv
IGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+
Z3JvdyhjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5
IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRz
IHdpdGggdW5kZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVnaXN0ZXIqIHNy
YyA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGNhbGxGcmFt
ZS0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGludCBlbmQgPSAtQ2Fs
bEZyYW1lOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZvciAo
aSA9IC0xOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07Ci0KLSAgICBl
bmQgLT0gZGVsdGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0g
PSBqc1VuZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJh
bWU6OmNyZWF0ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1lIDw9IHJlZ2lz
dGVyRmlsZS0+ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0KIERFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklU
X1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBz
dGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJp
dHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2Fs
bCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5
Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwp
OwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25G
cm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJF
U1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsK
IApAQCAtMjIxNSw3ICsyMTgzLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2Nv
bnN0cnVjdAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFt
ZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJh
bWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBDYWxs
RnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxs
RnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBp
ZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2Fs
bDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDEw
NDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgSlNJbnRlcmZhY2VKSVRfaAog
I2RlZmluZSBKU0ludGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25z
LmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVk
ZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2RlZmluZSBMTElOVF9F
WEVDVVRJT05fVFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFDSU5HIDAKKworI2Vu
ZGlmIC8vIExMSW50Q29tbW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTExJbnREYXRhLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRl
ICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNs
dWRlICJPcGNvZGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK0Rh
dGE6OkRhdGEoKQorICAgIDogbV9leGNlcHRpb25JbnN0cnVjdGlvbnMobmV3IEluc3RydWN0aW9u
W21heE9wY29kZUxlbmd0aCArIDFdKQorICAgICwgbV9vcGNvZGVNYXAobmV3IE9wY29kZVtudW1P
cGNvZGVJRHNdKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsg
MTsgKytpKQorICAgICAgICBtX2V4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lKTsK
KyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBtX29wY29kZU1hcFtvcGNvZGVd
ID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUpOworICAgIEZPUl9FQUNIX09Q
Q09ERV9JRChPUENPREVfRU5UUlkpOworI3VuZGVmIE9QQ09ERV9FTlRSWQorfQorCitEYXRhOjp+
RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgZGVs
ZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisj
ZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludERhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RGF0YV9oCisjZGVm
aW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFt
ZXNwYWNlIExMSW50IHsKKworI2lmIEVOQUJMRShMTElOVCkKK2NsYXNzIERhdGEgeworcHVibGlj
OgorICAgIERhdGEoKTsKKyAgICB+RGF0YSgpOworICAgIAorICAgIEluc3RydWN0aW9uKiBleGNl
cHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5z
dHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgfQorcHJpdmF0ZToKKyAgICBJbnN0cnVj
dGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgT3Bjb2RlKiBtX29wY29kZU1hcDsK
K307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQpCisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlmCisKK2NsYXNzIERhdGEgeworcHVibGljOgor
ICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFw
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK307CisKKyNp
ZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgor
CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQK
KworI2VuZGlmIC8vIExMSW50RGF0YV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEVudHJ5cG9pbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIK
KworI2luY2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNs
dWRlICJMTEludFRodW5rcy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKwor
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25FbnRy
eXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2sp
Cit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGlmIChraW5k
ID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1
bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9wcm9sb2d1ZSkpKSk7CisgICAgICAgICAgICBhcml0eUNoZWNrID0gTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxs
X2FyaXR5X2NoZWNrKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAg
ICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgaml0Q29kZSA9IEpJ
VENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5h
Z2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkpKSk7CisgICAgICAgIGFyaXR5Q2hl
Y2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaykpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIGppdENvZGUg
PSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5r
R2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgICAgIGFyaXR5Q2hl
Y2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5r
R2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQo
a2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxE
YXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKSwg
SklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEu
Z2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvciku
Y29kZSgpOworfQorCit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklU
KCkpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZXZhbF9wcm9sb2d1ZSkpKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5n
ZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJU
aHVuayk7Cit9CisKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VK
SVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSkpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxE
YXRhLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRz
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVudHJ5cG9pbnRzX2gKKyNkZWZp
bmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5k
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFdmFsQ29kZUJsb2NrOworY2xhc3MgSklU
Q29kZTsKK2NsYXNzIEpTR2xvYmFsRGF0YTsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjsK
K2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKK2NsYXNzIFByb2dyYW1Db2RlQmxvY2s7CisK
K25hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50KEpTR2xvYmFs
RGF0YSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIEpJVENvZGUmLCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHImIGFyaXR5Q2hlY2spOwordm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEm
LCBKSVRDb2RlJik7Cit2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJ
VENvZGUmKTsKKworaW5saW5lIHZvaWQgZ2V0RW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIEV2YWxDb2RlQmxvY2sqLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGdldEV2YWxF
bnRyeXBvaW50KGdsb2JhbERhdGEsIGppdENvZGUpOworfQorCitpbmxpbmUgdm9pZCBnZXRFbnRy
eXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvZ3JhbUNvZGVCbG9jayosIEpJVENv
ZGUmIGppdENvZGUpCit7CisgICAgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0
Q29kZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJ
bnRFbnRyeXBvaW50c19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
eGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKworI2luY2x1ZGUgIkNh
bGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkluc3RydWN0aW9u
LmgiCisjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgi
CisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIExMSW50IHsKKwordm9pZCBpbnRlcnByZXRlclRocm93KEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwor
I2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24g
JXMuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAg
ICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBl
eGVjLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZXhlYywgZXhlYy0+cmV0dXJuUEMoKSkp
OworfQorCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5sbGludERhdGEu
ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93
KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJ
TkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAocmV0dXJuVG9UaHJvdykuXG4i
LCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5l
cmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4
ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAKKyAgICByZXR1
cm4gZ2xvYmFsRGF0YS0+bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworfQorCit2
b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAg
ICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExM
SU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKGNh
bGxUb1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNl
bmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNl
cHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOwor
ICAgIAorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19kdXJpbmdf
Y2FsbF90cmFtcG9saW5lKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25z
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmlu
ZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOwor
CituYW1lc3BhY2UgTExJbnQgeworCisvLyBKdXN0IHRocm93IHRoZSBjdXJyZW50bHkgYWN0aXZl
IGV4Y2VwdGlvbiBpbiB0aGUgY29udGV4dCBvZiB0aGlzIGV4ZWMgc3RhdGUKKy8vIGFuZCBzZXQg
dXAgYWxsIG5lY2Vzc2FyeSBzdGF0ZS4KK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvdyhFeGVjU3RhdGUq
KTsKKworLy8gVGVsbHMgeW91IHdoZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0dXJu
LXRvLXRocm93LCBhZnRlciB5b3UndmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBpbmZvcm1hdGlv
biBuZWVkZWQgdG8gdGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Ro
cm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0aGUgY3VycmVu
dCBQQyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlvdSBh
IFBDCisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNo
IHdoZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFu
ICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBleGNl
cHRpb24gaGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhjZXB0
aW9uIGhhbmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhhdCBQ
QyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVhZCBl
eGNlcHRpb24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5
CisvLyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRl
KiwgSW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8g
YSBjYWxsIHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24q
KTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludEV4Y2Vw
dGlvbnNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVy
cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRI
ZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzM0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJMTEludEhlbHBlcnMuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgor
I2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2lu
Y2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgor
I2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1
ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIK
KyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdGF0aWNT
Y29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5o
IgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgi
CisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMu
aCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKKyNkZWZpbmUgTExJTlRf
T1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRSKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorI2RlZmlu
ZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5vcGVyYW5kKSkKKworI2Rl
ZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsgICAgICAgXAorICAgICAg
ICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
ICAgIHZvaWQqIGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
IHZvaWQqIGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSBwYWly
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50NjRfdCBp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IF9fcnRfdTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5hID0gZmly
c3Q7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5iID0gc2Vjb25k
OyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19ydF91Lmk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5U
X0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykKKworI2RlZmluZSBMTElOVF9U
SFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBKU0dsb2JhbERhdGEmIF9fdF9nbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOyAg
ICAgICAgXAorICAgICAgICBfX3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9U
aHJvdyk7ICAgICAgICAgICAgXAorICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUg
KGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpIGRvIHsgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmdsb2JhbERhdGEoKS5leGNl
cHRpb24pKSB7ICAgXAorICAgICAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5U
X0VORCgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUg
TExJTlRfQlJBTkNIKG9wY29kZSwgY29uZGl0aW9uKSBkbyB7ICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgYm9vbCBfX2JfY29uZGl0aW9uID0gKGNvbmRpdGlvbik7ICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9fYl9jb25kaXRpb24pICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9
IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsgICAgICAgIFwKKyAgICAg
ICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bjb2RlKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2Rl
ZmluZSBMTElOVF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAgICAgXAorICAgICAgICBK
U1ZhbHVlIF9fcl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAorICAgICAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9PUCgxKSA9
IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExM
SU5UX0NBTExfRU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RXTygoY2Fs
bFRhcmdldCksIChleGVjKSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBl
eGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUq
IF9fY3RfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBJbnN0cnVjdGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fY3RfZ2xvYmFsRGF0YSA9
IChfX2N0X2V4ZWMpLT5nbG9iYWxEYXRhKCk7ICAgICAgXAorICAgICAgICBfX2N0X2dsb2JhbERh
dGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3RfZXhlYywgY2FsbFRvVGhyb3coX19jdF9leGVj
LCBfX2N0X3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxM
X0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBFeGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jY2VfcGMgPSAocGMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFko
X19jY2VfZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2Nj
ZV9leGVjLCBfX2NjZV9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJ
TlRfQ0FMTF9SRVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMgPSAo
cGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9pZCog
X19jcl9jYWxsVGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19jcl9leGVjLT5jYWxsZXJG
cmFtZSgpLCBfX2NyX3BjKTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NyX2V4
ZWMsIF9fY3JfY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxz
ZSkKKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhl
Y1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5k
KQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV1LCBvcCMldTogVHJhY2Uo
JWQpOiAlZDogJWRcbiIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAg
ICBleGVjLAorICAgICAgICAgICBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJvbVdoZXJlLAorICAgICAg
ICAgICBvcGVyYW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQpOworICAgIExM
SU5UX0VORCgpOworfQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2Vf
dmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGlu
dCBvcGVyYW5kKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKG9wZXJhbmQpLmpz
VmFsdWUoKTsKKyAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgZGVz
Y3JpcHRvci5hc0ludDY0ID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICBwcmludGYoIiVw
IC8gJXA6IGV4ZWN1dGluZyBiYyMldSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkOiAlMDh4OiUw
OHgiLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAg
ICAgICAgICAgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwK
KyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChw
Y1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGZyb21XaGVyZSwKKyAgICAgICAgICAgb3BlcmFu
ZCwKKyAgICAgICAgICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kLAorICAgICAgICAgICBkZXNjcmlw
dG9yLmFzQml0cy50YWcsCisgICAgICAgICAgIGRlc2NyaXB0b3IuYXNCaXRzLnBheWxvYWQpOwor
I2lmbmRlZiBOREVCVUcKKyAgICBwcmludGYoIjogJXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsK
KyNlbmRpZgorICAgIHByaW50ZigiXG4iKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiBw
cm9sb2d1ZS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAg
IEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7Cisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVG
b3Ioa2luZCk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwgZXhl
Y3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZVJl
Z2lzdGVycyA9ICV1LlxuIiwKKyAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBjb21tZW50LCBj
YWxsZWUsIGV4ZWN1dGFibGUsCisgICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxs
KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBwcm9sb2d1ZSIsIENv
ZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJh
Y2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9u
UHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JDb25zdHJ1Y3QpOwor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNr
X2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBhcml0
eSBjaGVjayIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVu
Y3Rpb25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IGFyaXR5IGNoZWNrIiwgQ29kZUZvckNvbnN0
cnVjdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKQor
eworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV1LCAiLAorICAgICAgICAgICBl
eGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgcGMgLSBleGVj
LT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisjaWZuZGVmIE5ERUJVRwor
ICAgIHByaW50ZigiJXMsICIsIG9wY29kZU5hbWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpXSk7CisjZWxzZQorICAgIHByaW50Zigi
b3AjJXUsICIsIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNb
MF0udS5vcGNvZGUpKTsKKyNlbmRpZgorICAgIHByaW50Zigic2NvcGUgJXBcbiIsIGV4ZWMtPnNj
b3BlQ2hhaW4oKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHNw
ZWNpYWxfdHJhY2UpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBj
YXNlIGJjIyV1LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAorICAgICAgICAgICBleGVjLT5j
b2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgcGMgLSBleGVjLT5jb2Rl
QmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFs
RGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAg
ICAgIGV4ZWMtPnJldHVyblBDKCkudmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2lu
bGluZSBib29sIHNob3VsZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gWW91IGNhbiBt
b2RpZnkgdGhpcyB0byB0dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0aGUgd29y
bGQuCisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKQoreworICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7
CisgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAg
ICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgZXhlYy0+Y29kZUJsb2Nr
KCktPmppdENvbXBpbGUoZXhlYyk7CisgICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdFNvb24oKTsK
KyAgICBMTElOVF9SRVRVUk5fVFdPKGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRKSVRDb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGVudHJ5X29zcl9hcml0eUNoZWNrKQoreworICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7Cisg
ICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAg
TExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgZXhlYy0+Y29kZUJsb2NrKCkt
PmppdENvbXBpbGUoZXhlYyk7CisgICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdFNvb24oKTsKKyAg
ICBMTElOVF9SRVRVUk5fVFdPKGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRKSVRDb2RlV2l0aEFyaXR5
Q2hlY2soKS5leGVjdXRhYmxlQWRkcmVzcygpLCBleGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0wobG9vcF9vc3IpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKKyAgICAKKyAgICBpZiAoIXNob3VsZEpJVChleGVjKSkgeworICAgICAgICBjb2RlQmxv
Y2stPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4
ZWMpOworICAgIH0KKyAgICAKKyAgICBjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYyk7CisgICAg
Y29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgCisgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklU
VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAKKyAgICBWZWN0b3I8Qnl0ZWNv
ZGVBbmRNYWNoaW5lT2Zmc2V0PiBtYXA7CisgICAgY29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRl
Y29kZShtYXApOworICAgIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCogbWFwcGluZyA9IGJpbmFy
eVNlYXJjaDxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQsIHVuc2lnbmVkLCBCeXRlY29kZUFuZE1h
Y2hpbmVPZmZzZXQ6OmdldEJ5dGVjb2RlSW5kZXg+KG1hcC5iZWdpbigpLCBtYXAuc2l6ZSgpLCBw
YyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgQVNTRVJUKG1hcHBp
bmcpOworICAgIEFTU0VSVChtYXBwaW5nLT5tX2J5dGVjb2RlSW5kZXggPT0gc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisgICAg
CisgICAgdm9pZCoganVtcFRhcmdldCA9IGNvZGVCbG9jay0+Z2V0SklUQ29kZSgpLmV4ZWN1dGFi
bGVBZGRyZXNzQXRPZmZzZXQobWFwcGluZy0+bV9tYWNoaW5lQ29kZU9mZnNldCk7CisgICAgQVNT
RVJUKGp1bXBUYXJnZXQpOworICAgIAorICAgIExMSU5UX1JFVFVSTl9UV08oanVtcFRhcmdldCwg
ZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpCit7CisgICAgaWYgKHNob3Vs
ZEpJVChleGVjKSkgeworICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+aml0Q29tcGlsZShleGVj
KTsKKyAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdFNvb24oKTsKKyAgICB9IGVsc2UKKyAg
ICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKQorewor
I2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDaGVja2luZyBzdGFjayBoZWln
aHQgd2l0aCBleGVjID0gJXAuXG4iLCBleGVjKTsKKyAgICBwcmludGYoIkNvZGVCbG9jayA9ICVw
LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAgIHByaW50ZigiTnVtIGNhbGxlZSByZWdpc3Rl
cnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7Cisg
ICAgcHJpbnRmKCJOdW0gdmFycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtVmFy
cyk7CisjZW5kaWYKKyAgICBpZiAoVU5MSUtFTFkoIWV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnBy
ZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJs
b2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5j
YWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93KGV4
ZWMpOworICAgICAgICBwYyA9IHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oZXhlYyk7
CisgICAgfQorICAgIExMSU5UX0VORF9JTVBMKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9u
U2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJw
cmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ2FsbCk7CisgICAgaWYgKCFuZXdFeGVjKSB7
CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9i
YWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAg
ICAgICBpbnRlcnByZXRlclRocm93KGV4ZWMpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGJp
dHdpc2VfY2FzdDx2b2lkKj4oMSksIGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9SRVRVUk5fVFdP
KDAsIG5ld0V4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0X2Fy
aXR5Q2hlY2spCit7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjph
cml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lz
dGVyRmlsZSgpLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAg
ICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEo
KS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGlu
dGVycHJldGVyVGhyb3coZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9j
YXN0PHZvaWQqPigxKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3
RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikK
K3sKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ3JlYXRpbmcgYW4gYWN0
aXZhdGlvbiFcbiIpOworI2VuZGlmCisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gSlNB
Y3RpdmF0aW9uOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLCBzdGF0aWNfY2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihleGVjLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkp
KTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChhY3Rp
dmF0aW9uKSk7CisgICAgTExJTlRfUkVUVVJOKEpTVmFsdWUoYWN0aXZhdGlvbikpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKK3sKKyAgICBMTElOVF9S
RVRVUk4oSlNWYWx1ZShBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAgICBK
U0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAg
IAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7
CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRh
KGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlm
CisgICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgSlNWYWx1ZSBwcm90byA9IExM
SU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAocHJvdG8uaXNPYmplY3QoKSkKKyAgICAgICAg
c3RydWN0dXJlID0gYXNPYmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRh
KCkpOworICAgIGVsc2UKKyAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCkt
Pmdsb2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAKKyAgICBMTElOVF9S
RVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpCit7CisgICAgSlNWYWx1ZSB2MSA9IExM
SU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQodjEuaXNQcmltaXRpdmUoKSk7CisgICAg
TExJTlRfUkVUVVJOKHYxLnRvVGhpc09iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXdfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0
eU9iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkp
Cit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxK
U1ZhbHVlKj4oJkxMSU5UX09QKDIpKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQoreworICAgIExMSU5UX1JFVFVSTihj
b25zdHJ1Y3RBcnJheShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIocGNb
Ml0udS5vcGVyYW5kKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfcmVnZXhwKQoreworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29kZUJs
b2NrKCktPnJlZ2V4cChwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1ZhbGlk
KCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlk
IGZsYWcgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9SRVRV
Uk4oUmVnRXhwT2JqZWN0OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0
dXJlKCksIHJlZ0V4cCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvQm9v
bGVhbihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9uZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1
ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbighSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgp
LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2xlc3MpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8dHJ1ZT4oZXhl
YywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKQoreworICAgIExMSU5UX1JFVFVS
Tihqc0Jvb2xlYW4oanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZ3JlYXRlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczxmYWxzZT4o
ZXhlYywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcmVxKQoreworICAgIExMSU5U
X1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3ByZV9pbmMpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09Q
KDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSArIDEpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3ByZV9kZWMpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09Q
KDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAtIDEpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Bvc3RfaW5jKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1
bHQgKyAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJ
TlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0ganNO
dW1iZXIocmVzdWx0IC0gMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKC1MTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2FkZCkKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2MiA9IExMSU5UX09QX0MoMykuanNW
YWx1ZSgpOworICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUcnlp
bmcgdG8gYWRkICVzIiwgdjEuZGVzY3JpcHRpb24oKSk7CisgICAgcHJpbnRmKCIgdG8gJXMuXG4i
LCB2Mi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICh2MS5pc1N0cmluZygp
KSB7CisgICAgICAgIExMSU5UX1JFVFVSTigKKyAgICAgICAgICAgIHYyLmlzU3RyaW5nKCkKKyAg
ICAgICAgICAgID8ganNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEpLCBhc1N0cmluZyh2MikpCisg
ICAgICAgICAgICA6IGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9QcmltaXRpdmVT
dHJpbmcoZXhlYykpKTsKKyAgICB9CisgICAgCisgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIu
aXNOdW1iZXIoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHYxLmFzTnVtYmVyKCkg
KyB2Mi5hc051bWJlcigpKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpzQWRkU2xvd0Nhc2Uo
ZXhlYywgdjEsIHYyKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVy
KGV4ZWMpICogTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1YikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZGl2KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKS50b051bWJlcihleGVjKSAvIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4
ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2QpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhl
YyksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIDw8IExMSU5UX09QX0MoMyku
anNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9yc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIo
ZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvVUludDMyKGV4
ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgJiBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9iaXRvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9JbnQzMihleGVjKSB8IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhl
YykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcikKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSBe
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2JpdG5vdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIofkxM
SU5UX09QKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsID0g
TExJTlRfT1AoMikuanNWYWx1ZSgpOworI2lmbmRlZiBOREVCVUcKKyAgICBUeXBlSW5mbyB0eXBl
SW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VSVCghYmFzZVZhbC5pc09iamVjdCgpCisg
ICAgICAgICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVjdChiYXNlVmFsKS0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKTsKKyNlbmRpZgorICAgIExMSU5U
X1RIUk9XKGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4ZWMsICJpbnN0YW5jZW9mIiwgYmFzZVZh
bCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZikKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbnN0YW5jZU9mU2xvdyhl
eGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgTExJTlRf
T1AoNCkuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9m
KQoreworICAgIExMSU5UX1JFVFVSTihqc1R5cGVTdHJpbmdGb3JWYWx1ZShleGVjLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5k
ZWZpbmVkKQoreworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4odi5pc0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVy
ZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbikKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLmlzQm9vbGVhbigp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS5pc051bWJlcigpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19zdHJpbmcpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihpc0pTU3RyaW5nKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KQoreworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oanNJc09iamVjdFR5cGUoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbikKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUoTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbikKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihleGVjLCBMTElOVF9PUCgyKS5q
c1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Jlc29sdmUpCit7CisgICAgTExJTlRfUkVUVVJOKENvbW1vblNsb3dQYXRoczo6
b3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3Bl
cmFuZCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCkKK3sK
KyAgICBMTElOVF9SRVRVUk4oCisgICAgICAgIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlU2tp
cCgKKyAgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+aWRl
bnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAgICAgICAgICAgcGNbM10udS5vcGVyYW5kKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCkKK3sKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOworICAgIEFTU0VS
VChnbG9iYWxPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkpOworICAgIGludCBwcm9wZXJ0eSA9IHBj
WzJdLnUub3BlcmFuZDsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHBjWzNdLnUuc3RydWN0
dXJlLmdldCgpOworICAgIAorICAgIEFTU0VSVF9VTlVTRUQoc3RydWN0dXJlLCBzdHJ1Y3R1cmUg
IT0gZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgCisgICAgSWRlbnRpZmllciYgaWRl
bnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpOworICAgIFByb3BlcnR5U2xvdCBz
bG90KGdsb2JhbE9iamVjdCk7CisgICAgCisgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2V0UHJvcGVy
dHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkgeworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNs
b3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpOworICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZVZh
bHVlKCkgJiYgIWdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9u
YXJ5KCkKKyAgICAgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBnbG9iYWxPYmplY3QpIHsK
KyAgICAgICAgICAgIHBjWzNdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVj
LT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGdsb2JhbE9iamVj
dC0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgcGNbNF0gPSBzbG90LmNhY2hlZE9mZnNldCgp
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBMTElOVF9SRVRVUk4ocmVzdWx0KTsKKyAg
ICB9CisgICAgCisgICAgTExJTlRfVEhST1coY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihl
eGVjLCBpZGVudCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9iYXNl
KQoreworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZp
ZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAocGNbM10udS5vcGVyYW5kKSB7CisgICAgICAg
IEpTVmFsdWUgYmFzZSA9IEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3Bl
Q2hhaW4oKSwgdHJ1ZSk7CisgICAgICAgIGlmICghYmFzZSkKKyAgICAgICAgICAgIExMSU5UX1RI
Uk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0
cmluZygpKSk7CisgICAgICAgIExMSU5UX1JFVFVSTihiYXNlKTsKKyAgICB9CisgICAgCisgICAg
TExJTlRfUkVUVVJOKEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hh
aW4oKSwgZmFsc2UpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9w
ZXJ0eV9leGlzdHMpCit7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KExMSU5UX09Q
KDEpLmpzVmFsdWUoKSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKKyAgICBJZGVu
dGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3Bl
cmFuZCk7CisgICAgaWYgKCFvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xv
dCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2ln
bm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKK3sKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aEJhc2UoZXhlYywgZXhlYy0+
Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOwor
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0Owor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93
aXRoX3RoaXMpCit7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVz
b2x2ZVdpdGhUaGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUu
b3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAg
ICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5p
ZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwor
CisgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KTsK
KyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgxKSA9IHJlc3VsdDsK
KworICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJs
ZSgpCisgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUKKyAgICAgICAgJiYg
c2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OlZhbHVlKSB7CisgICAg
ICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAg
ICAgCisgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisg
ICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2Fj
aGluZygpKSB7CisgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAg
ICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBz
dHJ1Y3R1cmUpOworICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVu
Z3RoKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Cisg
ICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVy
YW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworICAgIExMSU5UX1JFVFVSTihiYXNlVmFs
dWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wdXRfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1sy
XS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSk7CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCksIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIGlmIChi
YXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CisgICAg
ICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAg
ICAgCisgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisg
ICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2Fj
aGluZygpCisgICAgICAgICAgICAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAgICAg
ICAgICAgCisgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpO
ZXdQcm9wZXJ0eSkgeworICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25h
cnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHko
KSA9PSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJl
dmlvdXNJRCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUu
b3BlcmFuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKKyAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5v
cGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWwpOworICAgICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisg
ICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1Zh
bHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAg
ICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFp
biogY2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpOworICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoY2hhaW4pOworICAgICAgICAgICAgICAgICAgICBwY1s3XS51LnN0cnVj
dHVyZUNoYWluLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEo
KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUg
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAgICAgICAg
ICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAg
ICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXpl
b2YoSlNWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpCit7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU09i
amVjdCogYmFzZU9iamVjdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b09iamVjdChleGVjKTsK
KyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRl
UHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUu
b3BlcmFuZCkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGlmICghY291bGRE
ZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJTlRfVEhST1co
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisKK2lubGluZSBKU1Zh
bHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUg
c3Vic2NyaXB0KQoreworICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNj
cmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFs
dWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eShleGVjLCBhc1N0cmluZyhzdWJzY3JpcHQp
LT52YWx1ZShleGVjKSkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAK
KyAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1
YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpICYm
IGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJu
IGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAg
ICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUp
LT5jYW5BY2Nlc3NJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc0J5dGVBcnJheShiYXNl
VmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBiYXNl
VmFsdWUuZ2V0KGV4ZWMsIGkpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5
KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7CisgICAgcmV0dXJuIGJhc2VWYWx1ZS5n
ZXQoZXhlYywgcHJvcGVydHkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5
X3ZhbCkKK3sKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQoreworICAgIEpTVmFsdWUgYXJndW1lbnRz
ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAgICAg
IGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYyk7
CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBMTElOVF9PUCgyKSA9
IGFyZ3VtZW50czsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMs
IGFyZ3VtZW50cywgTExJTlRfT1AoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpCit7CisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4
ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFsKQoreworICAgIEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0
ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpOworICAgIAorICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMy
KCkpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAg
ICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUpKSB7CisgICAgICAgICAgICBKU0FycmF5KiBqc0Fy
cmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNhblNl
dEluZGV4KGkpKQorICAgICAgICAgICAgICAgIGpzQXJyYXktPnNldEluZGV4KGdsb2JhbERhdGEs
IGksIHZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBKU0FycmF5Ojpw
dXRCeUluZGV4KGpzQXJyYXksIGV4ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIExMSU5UX0VO
RCgpOworICAgICAgICB9CisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkKKyAg
ICAgICAgICAgICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7
CisgICAgICAgICAgICBKU0J5dGVBcnJheSoganNCeXRlQXJyYXkgPSBhc0J5dGVBcnJheShiYXNl
VmFsdWUpOworICAgICAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkgeworICAgICAgICAgICAg
ICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5hc0ludDMyKCkpOworICAgICAgICAg
ICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHZhbHVl
LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwg
dmFsdWUuYXNOdW1iZXIoKSk7CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpLCB2YWx1ZSk7
CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3Bl
cnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZXhlYy0+Y29kZUJsb2NrKCktPmlz
U3RyaWN0TW9kZSgpKTsKKyAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIHByb3BlcnR5LCB2YWx1ZSwg
c2xvdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9k
ZWxfYnlfdmFsKQoreworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMikuanNWYWx1
ZSgpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGV4ZWMp
OworICAgIAorICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1AoMykuanNWYWx1ZSgpOwor
ICAgIAorICAgIGJvb2wgY291bGREZWxldGU7CisgICAgCisgICAgdWludDMyX3QgaTsKKyAgICBp
ZiAoc3Vic2NyaXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYmFzZU9iamVjdCwgZXhl
YywgaSk7CisgICAgZWxzZSB7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAg
ICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7
CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERlbGV0ZSA9
IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4
ZWMsIHByb3BlcnR5KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBleGVj
LT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0
ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgCisg
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KQoreworICAgIExMSU5UX09QKDEpLmpzVmFsdWUo
KS5wdXQoZXhlYywgcGNbMl0udS5vcGVyYW5kLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2dldHRlcikK
K3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIEpT
T2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBJ
ZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUu
b3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsK
KyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVHZXR0ZXIoYmFzZU9iaiwgZXhlYywg
aWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUoKSksIDApOworICAgIExMSU5UX0VO
RCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X3NldHRlcikKK3sKKyAgICBB
U1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIEpTT2JqZWN0KiBi
YXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBJZGVudGlmaWVy
JiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7
CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBiYXNl
T2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVTZXR0ZXIoYmFzZU9iaiwgZXhlYywgaWRlbnQsIGFz
T2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUoKSksIDApOworICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam1wX3Njb3BlcykKK3sKKyAgICB1bnNpZ25lZCBj
b3VudCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBTY29wZUNoYWluTm9kZSogdG1wID0gZXhlYy0+
c2NvcGVDaGFpbigpOworICAgIHdoaWxlIChjb3VudC0tKQorICAgICAgICB0bXAgPSB0bXAtPnBv
cCgpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4odG1wKTsKKyAgICBwYyArPSBwY1syXS51Lm9w
ZXJhbmQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
dHJ1ZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfanRydWUsIExMSU5UX09QX0MoMSkuanNWYWx1
ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFs
c2UpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pmYWxzZSwgIUxMSU5UX09QX0MoMSkuanNWYWx1
ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVz
cykKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3MsIGpzTGVzczx0cnVlPihleGVjLCBMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcykKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5s
ZXNzLCAhanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0
ZXIpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVhdGVyLCBqc0xlc3M8ZmFsc2U+KGV4ZWMs
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKQoreworICAgIExMSU5UX0JSQU5D
SChvcF9qbmdyZWF0ZXIsICFqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfamxlc3NlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3NlcSwganNMZXNzRXE8
dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSkKK3sKKyAgICBM
TElOVF9CUkFOQ0gob3Bfam5sZXNzZXEsICFqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVh
dGVyZXEsIGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pu
Z3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmdyZWF0ZXJlcSwgIWpzTGVzc0Vx
PGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9pbW0pCit7Cisg
ICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJU
KHNjcnV0aW5lZS5pc0RvdWJsZSgpKTsKKyAgICBkb3VibGUgdmFsdWUgPSBzY3J1dGluZWUuYXNE
b3VibGUoKTsKKyAgICBpbnQzMl90IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFs
dWUpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlmICh2
YWx1ZSA9PSBpbnRWYWx1ZSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMt
PmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2RlQmxvY2stPmltbWVkaWF0ZVN3aXRjaEp1
bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGludFZhbHVlLCBkZWZhdWx0
T2Zmc2V0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcp
Cit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7CisgICAg
aW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKCFzY3J1dGluZWUu
aXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBlbHNlIHsKKyAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAg
cGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5v
ZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGluZWUpLT52YWx1ZShleGVjKS5pbXBsKCksIGRl
ZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25ld19mdW5jKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUoKSAhPSBGdW5j
dGlvbkNvZGUKKyAgICAgICAgICAgfHwgIWNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigp
CisgICAgICAgICAgIHx8IGV4ZWMtPnVuY2hlY2tlZFIoY29kZUJsb2NrLT5hY3RpdmF0aW9uUmVn
aXN0ZXIoKSkuanNWYWx1ZSgpKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50
ZigiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKKyNlbmRpZgorICAgIExMSU5UX1JFVFVSTihjb2Rl
QmxvY2stPmZ1bmN0aW9uRGVjbChwY1syXS51Lm9wZXJhbmQpLT5tYWtlKGV4ZWMsIGV4ZWMtPnNj
b3BlQ2hhaW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmNfZXhw
KQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBj
WzJdLnUub3BlcmFuZCk7CisgICAgSlNGdW5jdGlvbiogZnVuYyA9IGZ1bmN0aW9uLT5tYWtlKGV4
ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgCisgICAgaWYgKCFmdW5jdGlvbi0+bmFtZSgp
LmlzTnVsbCgpKSB7CisgICAgICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIGZ1bmN0aW9uU2NvcGVP
YmplY3QgPSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgZnVuY3Rpb24tPm5hbWUo
KSwgZnVuYywgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgZnVuYy0+c2V0U2NvcGUo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jLT5zY29wZSgpLT5wdXNoKGZ1bmN0aW9uU2NvcGVPYmpl
Y3QpKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKGZ1bmMpOworfQorCitzdGF0aWMg
SGVscGVyUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIElu
c3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCkKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwor
ICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisKKyAg
ICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhl
Y0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworCisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwp
IHsKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gZ2V0Q2FsbERhdGEoY2FsbGVlLCBjYWxsRGF0YSk7CisgICAgCisgICAgICAgIEFTU0VSVChj
YWxsVHlwZSAhPSBDYWxsVHlwZUpTKTsKKyAgICAKKyAgICAgICAgaWYgKGNhbGxUeXBlID09IENh
bGxUeXBlSG9zdCkgeworICAgICAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1
ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkp
OworICAgICAgICAgICAgCisgICAgICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVl
LCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwor
ICAgICAgICB9CisgICAgICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgICAgIHBy
aW50ZigiQ2FsbCBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUuZGVzY3Jp
cHRpb24oKSk7CisjZW5kaWYKKworICAgICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGVO
b25lKTsKKyAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUZ1bmN0
aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0gQ29k
ZUZvckNvbnN0cnVjdCk7CisgICAgCisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwor
ICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEoY2FsbGVl
LCBjb25zdHJ1Y3REYXRhKTsKKyAgICAKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25z
dHJ1Y3RUeXBlSlMpOworICAgIAorICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5
cGVIb3N0KSB7CisgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOwor
ICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICAKKyNpZiBMTElO
VF9IRUxQRVJfVFJBQ0lORworICAgICAgICBwcmludGYoIkNvbnN0cnVjdG9yIGNhbGxlZSBpcyBu
b3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorCisg
ICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZU5vbmUpOworICAgIExMSU5U
X0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGNh
bGxlZSkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRl
KiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCwgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlLCBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
ID0gMCkKK3sKKyAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlv
bihjYWxsZWVBc1ZhbHVlKTsKKyAgICBpZiAoIWNhbGxlZUFzRnVuY3Rpb25DZWxsKQorICAgICAg
ICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgcGMsIGNhbGxlZUFzVmFsdWUsIGtp
bmQpOworICAgIAorICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oY2FsbGVlQXNG
dW5jdGlvbkNlbGwpOworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oY2FsbGVlLT5zY29w
ZVVuY2hlY2tlZCgpKTsKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+
ZXhlY3V0YWJsZSgpOworICAgIAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOwor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKKyAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0
RnVuY3Rpb24oKSkKKyAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENv
ZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4
ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rp
b25FeGVjdXRhYmxlLT5jb21waWxlRm9yKGV4ZWNDYWxsZWUsIGNhbGxlZS0+c2NvcGUoKSwga2lu
ZCk7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhl
Y0NhbGxlZS0+Y2FsbGVyRnJhbWUoKSwgcGMsIGVycm9yKTsKKyAgICAgICAgY29kZUJsb2NrID0g
JmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgICAg
IEFTU0VSVChjb2RlQmxvY2spOworICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpKQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2Vu
ZXJhdGVkSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9y
KGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgfQorICAgIAorICAgIGlmIChjYWxsTGlua0lu
Zm8pIHsKKyAgICAgICAgaWYgKGNhbGxMaW5rSW5mby0+aXNPbkxpc3QoKSkKKyAgICAgICAgICAg
IGNhbGxMaW5rSW5mby0+cmVtb3ZlKCk7CisgICAgICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlciA9
IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+Y2FsbGVl
LnNldChleGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4ZWNDYWxsZXItPmNvZGVCbG9jaygpLT5v
d25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5tYWNoaW5l
Q29kZVRhcmdldCA9IGNvZGVQdHI7CisgICAgICAgIGlmIChjb2RlQmxvY2spCisgICAgICAgICAg
ICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbExpbmtJbmZvKTsKKyAgICB9CisgICAg
CisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIGNvZGVQdHIuZXhlY3V0YWJs
ZUFkZHJlc3MoKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKEV4
ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJh
bWUuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGlsZSBpdCBpZiBu
ZWNlc3NhcnkuCisgICAgLy8gLSBJZiBwb3NzaWJsZSwgbGluayB0aGUgY2FsbCdzIGlubGluZSBj
YWNoZS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRv
IGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFz
VmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVj
Q2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5z
ZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWND
YWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsK
KyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICAKKyAgICBBU1NFUlQo
cGNbNF0udS5jYWxsTGlua0luZm8pOworICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwg
cGMsIGtpbmQsIGNhbGxlZUFzVmFsdWUsIHBjWzRdLnUuY2FsbExpbmtJbmZvKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpCit7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4
ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25z
dHJ1Y3QpCit7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ29uc3Ry
dWN0KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncykKK3sKKyAg
ICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZSB3aGlsZSBy
ZXNwZWN0aW5nIHRoZSB2YXJpYWJsZSBhcmd1bWVudHMuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdo
YXQgdG8gY2FsbCBhbmQgY29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBSZXR1cm4g
YSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwg
ZnJhbWUuCisgICAgCisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSkuanNW
YWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAor
ICAgICAgICBleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZp
bGUoKSwKKyAgICAgICAgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVl
KCksIHBjWzRdLnUub3BlcmFuZCk7CisgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhl
YywgcGMpOworICAgIAorICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpD
YWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShl
eGVjKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCku
dGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxf
dmFyYXJncykpOworICAgIAorICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENv
ZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2NhbGxfZXZhbCkKK3sKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKS5q
c1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNd
LnUub3BlcmFuZDsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxE
YXRhKCk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVj
KTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNh
bGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNo
YWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVj
dGlvbio+KCZsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOworICAgIGV4ZWNDYWxsZWUtPnNl
dENvZGVCbG9jaygwKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1l
bnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4ocGMgKyBPUENPREVfTEVOR1RI
KG9wX2NhbGxfZXZhbCkpOworICAgIAorICAgIGlmICghaXNIb3N0RnVuY3Rpb24oY2FsbGVlQXNW
YWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQorICAgICAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxs
ZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7CisgICAgCisgICAgZ2xvYmFsRGF0
YS5ob3N0Q2FsbFJldHVyblZhbHVlID0gZXZhbChleGVjQ2FsbGVlKTsKKyAgICBMTElOVF9DQUxM
X1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZf
YWN0aXZhdGlvbikKK3sKKyAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNj
b3BlQ2hhaW4oKSk7CisgICAgSlNWYWx1ZSBhY3RpdmF0aW9uVmFsdWUgPSBMTElOVF9PUCgxKS5q
c1ZhbHVlKCk7CisgICAgaWYgKCFhY3RpdmF0aW9uVmFsdWUpIHsKKyAgICAgICAgaWYgKEpTVmFs
dWUgdiA9IGV4ZWMtPnJlZ2lzdGVycygpW3VubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sy
XS51Lm9wZXJhbmQpXS5qc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGlmICghZXhlYy0+Y29kZUJs
b2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT50
ZWFyT2ZmKGV4ZWMpOworICAgICAgICB9CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAg
ICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVl
KTsKKyAgICBhY3RpdmF0aW9uLT50ZWFyT2ZmKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgaWYg
KEpTVmFsdWUgdiA9IGV4ZWMtPnJlZ2lzdGVycygpW3VubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rl
cihwY1syXS51Lm9wZXJhbmQpXS5qc1ZhbHVlKCkpCisgICAgICAgIGFzQXJndW1lbnRzKHYpLT5k
aWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGFjdGl2YXRpb24pOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYXJn
dW1lbnRzKQoreworICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygp
ICYmICFleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBhc0Fy
Z3VtZW50cyhleGVjLT5yZWdpc3RlcnMoKVt1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNb
MV0udS5vcGVyYW5kKV0uanNWYWx1ZSgpKS0+dGVhck9mZihleGVjKTsKKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNhdCkKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNTdHJpbmcoZXhlYywgJkxMSU5UX09QKDIpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSkKK3sKKyAgICBMTElOVF9S
RVRVUk4oTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJ
TlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICh2LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAg
ICAgICAgcGMgKz0gcGNbNV0udS5vcGVyYW5kOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9
CisgICAgCisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gby0+c3RydWN0dXJlKCk7CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cioganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IHN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgp
OworICAgIGlmICghanNQcm9wZXJ0eU5hbWVJdGVyYXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLT5jYWNoZWRQcm90b3R5cGVDaGFpbigpICE9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4o
ZXhlYykpCisgICAgICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yOjpjcmVhdGUoZXhlYywgbyk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBKU1ZhbHVl
KGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOworICAgIExMSU5UX09QKDIpID0gSlNWYWx1ZShvKTsK
KyAgICBMTElOVF9PUCgzKSA9IFJlZ2lzdGVyOjp3aXRoSW50KDApOworICAgIExMSU5UX09QKDQp
ID0gUmVnaXN0ZXI6OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAg
ICAKKyAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFtZXMpOworICAgIExMSU5UX0VO
RCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSkKK3sKKyAgICBK
U09iamVjdCogYmFzZSA9IGFzT2JqZWN0KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CisgICAgSlNT
dHJpbmcqIHByb3BlcnR5ID0gYXNTdHJpbmcoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBp
ZiAoYmFzZS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eS0+dmFs
dWUoZXhlYykpKSkgeworICAgICAgICAvLyBHbyB0byB0YXJnZXQuCisgICAgICAgIHBjICs9IHBj
WzZdLnUub3BlcmFuZDsKKyAgICB9IC8vIEVsc2UsIGRvbid0IGNoYW5nZSB0aGUgUEMsIHNvIHRo
ZSBpbnRlcnByZXRlciB3aWxsIHJlbG9vcC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRf
T1AoMSkuanNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKKyAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9IG87Cisg
ICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2gobykpOworICAg
IAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9wX3Nj
b3BlKQoreworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wb3Ao
KSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNo
X25ld19zY29wZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9j
aygpOworICAgIEpTT2JqZWN0KiBzY29wZSA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShl
eGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwgTExJTlRfT1AoMyku
anNWYWx1ZSgpLCBEb250RGVsZXRlKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNj
b3BlQ2hhaW4oKS0+cHVzaChzY29wZSkpOworICAgIExMSU5UX1JFVFVSTihzY29wZSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdykKK3sKKyAgICBMTElOVF9USFJPVyhMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJv
d19yZWZlcmVuY2VfZXJyb3IpCit7CisgICAgTExJTlRfVEhST1coY3JlYXRlUmVmZXJlbmNlRXJy
b3IoZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9TdHJpbmcoZXhlYykpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKQoreworICAgIGludCBkZWJ1Z0hvb2tJRCA9
IHBjWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOwor
ICAgIGludCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5nbG9i
YWxEYXRhKCkuaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lE
PihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIAorICAgIExMSU5UX0VO
RCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7
CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT53aWxsRXhlY3V0
ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKK3sKKyAgICAoKlByb2Zp
bGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPmRpZEV4ZWN1dGUoZXhlYywgTExJTlRf
T1AoMSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhl
bHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRI
ZWxwZXJzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRIZWxwZXJzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRIZWxwZXJzX2gK
KyNkZWZpbmUgTExJbnRIZWxwZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlv
bjsKKworbmFtZXNwYWNlIExMSW50IHsKKwordHlwZWRlZiBpbnQ2NF90IEhlbHBlclJldHVyblR5
cGU7CisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4
ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworZXh0
ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSosIElu
c3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworCisjZGVmaW5lIExMSU5U
X0hFTFBFUl9ERUNMKG5hbWUpIFwKKyAgICBleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxp
bnRfIyNuYW1lKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQorCitMTElOVF9IRUxQ
RVJfREVDTCh0cmFjZV9wcm9sb2d1ZSk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1
ZV9mdW5jdGlvbl9mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9m
dW5jdGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hl
Y2tfZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29u
c3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHNw
ZWNpYWxfdHJhY2UpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGVudHJ5X29zcl9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3Ny
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpOworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0
ZXJfZmlsZV9jaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNr
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Ny
ZWF0ZV90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25ld19hcnJheSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZl
cik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3Rl
cSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2dyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2luYyk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9z
dF9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl90b19qc251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVn
YXRlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX211bCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9kaXYpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9y
c2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2JpdGFuZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3IpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfYml0bm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2Up
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3R5cGVvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVk
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pc19udW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmlu
Zyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pc19mdW5jdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4pOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Jlc29sdmVfc2tpcCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9i
YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jl
c29sdmVfd2l0aF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfaWQpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rl
bF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZ2V0X2J5X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlf
dmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfdmFsKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1
dF9nZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2p0cnVlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2psZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qbmdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfc3dpdGNoX2NoYXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJp
bmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXdfZnVuY19leHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfY2FsbF92YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2
YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfc3RyY2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRp
dmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25leHRfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hf
c2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Rocm93KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3Ip
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wcm9maWxlX3dpbGxfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmls
ZV9kaWRfY2FsbCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8g
TExJbnRIZWxwZXJzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisjZGVmaW5lIExMSW50T2ZmbGlu
ZUFzbUNvbmZpZ19oCisKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBDUFUoWDg2KQor
I2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2
IDAKKyNlbmRpZgorCisjaWYgQ1BVKEFSTXY3KQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAx
CisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UK
KyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUo
QklHX0VORElBTikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2Rl
ZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKExMSU5U
X09TUl9UT19KSVQpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhF
Q1VUSU9OX1RSQUNJTkcKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQor
I2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisK
KyNlbmRpZiAvLyBMTEludE9mZmxpbmVBc21Db25maWdfaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlICJBbGxvY2F0aW9uU3BhY2UuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRl
ICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkludGVycHJldGVy
LmgiCisjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVk
ZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFs
RGF0YS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmcuaCIKKyNpbmNsdWRlICJKU3R5cGVJbmZvLmgiCisjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVj
dC5oIgorI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNv
bmZpZy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJGaWxl
LmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2lu
Y2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmlu
ZSBPRkZMSU5FX0FTTV9PRkZTRVRPRihjbGF6eiwgZmllbGQpIE9CSkVDVF9PRkZTRVRPRihjbGF6
eiwgZmllbGQpCisKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvciB7CitwdWJsaWM6CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkKiBkdW1teSgpOworfTsKKworY29uc3QgdW5zaWduZWQqIExM
SW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKQoreworI2luY2x1ZGUgIkxMSW50RGVzaXJlZE9m
ZnNldHMuaCIKKyAgICByZXR1cm4gZXh0cmFjdG9yVGFibGU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCitpbnQgbWFpbihpbnQsIGNoYXIqKikKK3sKKyAgICAvLyBPdXQgb2YgYW4gYWJ1bmRh
bmNlIG9mIGNhdXRpb24sIG1ha2Ugc3VyZSB0aGF0IExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVt
bXkoKSBpcyBsaXZlLAorICAgIC8vIGFuZCB0aGUgZXh0cmFjdG9yVGFibGUgaXMgbGl2ZSwgdG9v
LgorICAgIHByaW50ZigiJXBcbiIsIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgp
KTsKKyAgICByZXR1cm4gMDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisKKyNpbmNsdWRlICJKU0ludGVyZmFjZUpJ
VC5oIgorI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJl
dGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgdm9pZCAoKnRhcmdldCkoKSkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7
CisgICAgCisgICAgLy8gRklYTUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRv
IGl0IG9uIFg4NiwgYnV0IEknbSBub3Qgc3VyZSBJIGNhcmUuCisgICAgaml0Lm1vdmUoSlNJbnRl
cmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSwgSlNJ
bnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6cmVnVDAp
OworICAgIAorICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZqaXQpOwor
ICAgIHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKK30KKworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9i
YWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsK
K30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVu
a0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3Ry
dWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sK
KyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7
CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2V2
YWxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1
bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKTsK
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludFRodW5rc19oCisjZGVmaW5lIExMSW50VGh1bmtzX2gKKworI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyQ29kZVJlZi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxE
YXRhOworCituYW1lc3BhY2UgTExJbnQgeworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rp
b25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9i
YWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVj
a1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1
bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSop
OworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFs
RGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9y
KEpTR2xvYmFsRGF0YSopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlm
IC8vIExMSW50VGh1bmtzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjM0MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworCisjIENyYXNoIGNvdXJzZSBvbiB0aGUgbGFuZ3VhZ2UgdGhhdCB0aGlzIGlzIHdyaXR0
ZW4gaW4gKHdoaWNoIEkganVzdCBjYWxsCisjICJhc3NlbWJseSIgZXZlbiB0aG91Z2ggaXQncyBt
b3JlIHRoYW4gdGhhdCk6CisjCisjIC0gTW9zdGx5IGdhcy1zdHlsZSBvcGVyYW5kIG9yZGVyaW5n
LiBUaGUgbGFzdCBvcGVyYW5kIHRlbmRzIHRvIGJlIHRoZQorIyAgIGRlc3RpbmF0aW9uLiBTbyAi
YSA6PSBiIiBpcyB3cml0dGVuIGFzICJtb3YgYiwgYSIuIEJ1dCB1bmxpa2UgZ2FzLAorIyAgIGNv
bXBhcmlzb25zIGFyZSBpbi1vcmRlciwgc28gImlmIChhIDwgYikiIGlzIHdyaXR0ZW4gYXMKKyMg
ICAiYmlsdCBhLCBiLCAuLi4iLgorIworIyAtICJiIiA9IGJ5dGUsICJoIiA9IDE2LWJpdCB3b3Jk
LCAiaSIgPSAzMi1iaXQgd29yZCwgInAiID0gcG9pbnRlci4KKyMgICBDdXJyZW50bHkgdGhpcyBp
cyBqdXN0IDMyLWJpdCBzbyAiaSIgYW5kICJwIiBhcmUgaW50ZXJjaGFuZ2VhYmxlCisjICAgZXhj
ZXB0IHdoZW4gYW4gb3Agc3VwcG9ydHMgb25lIGJ1dCBub3QgdGhlIG90aGVyLgorIworIyAtIElu
IGdlbmVyYWwsIHZhbGlkIG9wZXJhbmRzIGZvciBtYWNybyBpbnZvY2F0aW9ucyBhbmQgaW5zdHJ1
Y3Rpb25zIGFyZQorIyAgIHJlZ2lzdGVycyAoZWcgInQwIiksIGFkZHJlc3NlcyAoZWcgIjRbdDBd
IiksIGJhc2UtaW5kZXggYWRkcmVzc2VzCisjICAgKGVnICI3W3QwLCB0MSwgMl0iKSwgYWJzb2x1
dGUgYWRkcmVzc2VzIChlZyAiMHhhMDAwMDAwMFtdIiksIG9yIGxhYmVscworIyAgIChlZyAiX2Zv
byIgb3IgIi5mb28iKS4gTWFjcm8gaW52b2NhdGlvbnMgY2FuIGFsc28gdGFrZSBhbm9ueW1vdXMK
KyMgICBtYWNyb3MgYXMgb3BlcmFuZHMuIEluc3RydWN0aW9ucyBjYW5ub3QgdGFrZSBhbm9ueW1v
dXMgbWFjcm9zLgorIworIyAtIExhYmVscyBtdXN0IGhhdmUgbmFtZXMgdGhhdCBiZWdpbiB3aXRo
IGVpdGhlciAiXyIgb3IgIi4iLiAgQSAiLiIgbGFiZWwKKyMgICBpcyBsb2NhbCBhbmQgZ2V0cyBy
ZW5hbWVkIGJlZm9yZSBjb2RlIGdlbiB0byBtaW5pbWl6ZSBuYW1lc3BhY2UKKyMgICBwb2xsdXRp
b24uIEEgIl8iIGxhYmVsIGlzIGFuIGV4dGVybiBzeW1ib2wgKGkuZS4gIi5nbG9ibCIpLiBUaGUg
Il8iCisjICAgbWF5IG9yIG1heSBub3QgYmUgcmVtb3ZlZCBkdXJpbmcgY29kZSBnZW4gZGVwZW5k
aW5nIG9uIHdoZXRoZXIgdGhlIGFzbQorIyAgIGNvbnZlbnRpb25zIGZvciBDIG5hbWUgbWFuZ2xp
bmcgb24gdGhlIHRhcmdldCBwbGF0Zm9ybSBtYW5kYXRlIGEgIl8iCisjICAgcHJlZml4LgorIwor
IyAtIEEgIm1hY3JvIiBpcyBhIGxhbWJkYSBleHByZXNzaW9uLCB3aGljaCBtYXkgYmUgZWl0aGVy
IGFub255bW91cyBvcgorIyAgIG5hbWVkLiBCdXQgdGhpcyBoYXMgY2F2ZWF0cy4gIm1hY3JvIiBj
YW4gdGFrZSB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLAorIyAgIHdoaWNoIG1heSBiZSBtYWNyb3Mg
b3IgYW55IHZhbGlkIG9wZXJhbmRzLCBidXQgaXQgY2FuIG9ubHkgcmV0dXJuCisjICAgY29kZS4g
QnV0IHlvdSBjYW4gZG8gVHVyaW5nLWNvbXBsZXRlIHRoaW5ncyB2aWEgY29udGludWF0aW9uIHBh
c3NpbmcKKyMgICBzdHlsZTogIm1hY3JvIGZvbyAoYSwgYikgYihhKSBlbmQgZm9vKGZvbywgZm9v
KSIuIEFjdHVhbGx5LCBkb24ndCBkbworIyAgIHRoYXQsIHNpbmNlIHlvdSdsbCBqdXN0IGNyYXNo
IHRoZSBhc3NlbWJsZXIuCisjCisjIC0gQW4gImlmIiBpcyBhIGNvbmRpdGlvbmFsIG9uIHNldHRp
bmdzLiBBbnkgaWRlbnRpZmllciBzdXBwbGllZCBpbiB0aGUKKyMgICBwcmVkaWNhdGUgb2YgYW4g
ImlmIiBpcyBhc3N1bWVkIHRvIGJlIGEgI2RlZmluZSB0aGF0IGlzIGF2YWlsYWJsZQorIyAgIGR1
cmluZyBjb2RlIGdlbi4gU28geW91IGNhbid0IHVzZSAiaWYiIGZvciBjb21wdXRhdGlvbiBpbiBh
IG1hY3JvLCBidXQKKyMgICB5b3UgY2FuIHVzZSBpdCB0byBzZWxlY3QgZGlmZmVyZW50IHBpZWNl
cyBvZiBjb2RlIGZvciBkaWZmZXJlbnQKKyMgICBwbGF0Zm9ybXMuCisjCisjIC0gQXJndW1lbnRz
IHRvIG1hY3JvcyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIHJhdGhlciB0aGFuIGR5bmFtaWMgc2Nv
cGluZy4KKyMgICBDb25zdCdzIGFsc28gZm9sbG93IGxleGljYWwgc2NvcGluZyBhbmQgbWF5IG92
ZXJyaWRlIChoaWRlKSBhcmd1bWVudHMKKyMgICBvciBvdGhlciBjb25zdHMuIEFsbCB2YXJpYWJs
ZXMgKGFyZ3VtZW50cyBhbmQgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBvcGVyYW5k
cy4gQWRkaXRpb25hbGx5LCBhcmd1bWVudHMgKGJ1dCBub3QgY29uc3RhbnRzKSBjYW4gYmUgYm91
bmQKKyMgICB0byBtYWNyb3MuCisKKworIyBUaGVzZSBkZWNsYXJhdGlvbnMgbXVzdCBtYXRjaCBp
bnRlcnByZXRlci9SZWdpc3RlckZpbGUuaC4KK2NvbnN0IENhbGxGcmFtZUhlYWRlclNpemUgPSA0
OAorY29uc3QgQXJndW1lbnRDb3VudCA9IC00OAorY29uc3QgQ2FsbGVyRnJhbWUgPSAtNDAKK2Nv
bnN0IENhbGxlZSA9IC0zMgorY29uc3QgU2NvcGVDaGFpbiA9IC0yNAorY29uc3QgUmV0dXJuUEMg
PSAtMTYKK2NvbnN0IENvZGVCbG9jayA9IC04CisKK2NvbnN0IFRoaXNBcmd1bWVudE9mZnNldCA9
IC1DYWxsRnJhbWVIZWFkZXJTaXplIC0gOAorCisjIERlY2xhcmUgc29tZSBhbGlhc2VzIGZvciB0
aGUgcmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAorCisjIE9mZnNldHMgbmVl
ZGVkIGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRpb24uCitpZiBCSUdfRU5E
SUFOCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSA0
CitlbHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQg
PSAwCitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCitjb25zdCBJbnQz
MlRhZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51bGxUYWcgPSAtMworY29u
c3QgVW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQorY29uc3QgRW1wdHlWYWx1
ZVRhZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29uc3QgTG93ZXN0VGFnID0g
RGVsZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25zdCBTdHJpbmdUeXBlID0g
NQorY29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFncyBjb25zdGFudHMuCitjb25z
dCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVtZW50c0hhc0luc3RhbmNl
ID0gMgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDgKKworIyBIZWFwIGFs
bG9jYXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0g
MworCisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3QgRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNvbnN0YW50cy4KK2NvbnN0
IEdsb2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0IEZ1bmN0aW9uQ29kZSA9
IDIKKworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0aGUgYXJndW1l
bnQgY291bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRhZ09mZnNl
dAorCisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25zdCBWZWN0b3JTaXplT2Zm
c2V0ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisjIFN0cmluZyBmbGFncy4K
K2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxpdGllcworbWFjcm8gY3Jh
c2goKQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3ZlIDAsIHQwCisgICAgY2Fs
bCB0MAorZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAgaWYgQVNTRVJUX0VOQUJM
RUQKKyAgICAgICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAgY3Jhc2goKQorICAgIC5vazoKKyAg
ICBlbmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVzdGlu
YXRpb25SZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlv
blJlZ2lzdGVyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBvcCBkZXN0aW5hdGlvblJlZ2lzdGVy
CisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIHJlc3RvcmVS
ZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQorICAgIGlmIEFSTXY3Cisg
ICAgICAgIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHB1
c2ggc291cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQK
KworbWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQworICAg
IGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHBjT2Zmc2V0
KQorICAgIGxzaGlmdGkgMiwgcGNPZmZzZXQKKyAgICBhZGRwIHBjT2Zmc2V0LCBQQworICAgIGpt
cCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZzZXQpCisgICAgbG9hZGkg
cGNPZmZzZXQsIHQwCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQwKQorZW5kCisKK21h
Y3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zm
c2V0W2Nmcl0sIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBjQ2FsbDIoZnVuY3Rpb24s
IGFyZzEsIGFyZzIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAg
ICBtb3ZlIGFyZzIsIHQxCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAorICAg
ICAgICBwb2tlIGFyZzIsIDEKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAg
Y2FsbCBmdW5jdGlvbgorZW5kCisKKyMgVGhpcyBiYXJlbHkgd29ya3MuIGFyZzMgYW5kIGFyZzQg
c2hvdWxkIHByb2JhYmx5IGJlIGltbWVkaWF0ZXMuCittYWNybyBjQ2FsbDQoZnVuY3Rpb24sIGFy
ZzEsIGFyZzIsIGFyZzMsIGFyZzQpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0
MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgICAgIG1vdmUgYXJnMywgdDIKKyAgICAgICAg
bW92ZSBhcmc0LCB0MworICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAg
ICAgcG9rZSBhcmcyLCAxCisgICAgICAgIHBva2UgYXJnMywgMgorICAgICAgICBwb2tlIGFyZzQs
IDMKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgor
ZW5kCisKK21hY3JvIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGNDYWxsMihoZWxwZXIsIGNmciwg
UEMpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVnZ2lu
ZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVyYW5kIGluIHRoZSBpbnN0
cnVjdGlvbiBzdHJlYW0uCittYWNybyB0cmFjZU9wZXJhbmQoZnJvbVdoZXJlLCBvcGVyYW5kKQor
ICAgIGNDYWxsNChfbGxpbnRfdHJhY2Vfb3BlcmFuZCwgY2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVy
YW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dp
bmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgdGhlIHZhbHVlIG9mIGFuIG9wZXJh
bmQgaW4gdGhlIGluc3RydWN0aW9uCisjIHN0cmVhbS4KK21hY3JvIHRyYWNlVmFsdWUoZnJvbVdo
ZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2VfdmFsdWUsIGNmciwgUEMsIGZy
b21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5k
CisKK21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAg
ICAgICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkKKyAgICBlbmQKK2VuZAorCisjIENhbGwgYSBo
ZWxwZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3JvIGNhbGxDYWxsSGVscGVyKGFkdmFuY2UsIGhl
bHBlciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDLCB0MAorICAgIHN0b3JlcCB0
MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgY0NhbGwyKGhlbHBlciwgY2Zy
LCBQQykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBhY3Rpb24odDApCitlbmQKKworbWFjcm8gc2xv
d1BhdGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikKKyAgICBjYWxsQ2FsbEhlbHBlcigKKyAgICAg
ICAgYWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAorICAgICAgICBtYWNybyAoY2FsbGVlKQorICAg
ICAgICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAg
ICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVQoaW5jcmVtZW50LCBhY3Rp
b24pCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQw
CisgICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3Vu
dGVyW3QwXSwgLmNvbnRpbnVlCisgICAgICAgIGFjdGlvbigpCisgICAgLmNvbnRpbnVlOgorICAg
IGVuZAorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBjaGVja1N3
aXRjaFRvSklUKAorICAgICAgICAxLAorICAgICAgICBtYWNybyAoKQorICAgICAgICAgICAgc3Rv
cmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICAgICAgICAgIGNDYWxs
MihfbGxpbnRfbG9vcF9vc3IsIGNmciwgUEMpCisgICAgICAgICAgICBtb3ZlIHQxLCBjZnIKKyAg
ICAgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgICAgICBqbXAgdDAKKyAgICAgICAg
LnJlY292ZXI6CisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nm
cl0sIFBDCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yRXBp
bG9ndWUoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEwLAorICAgICAgICBtYWNy
byAoKQorICAgICAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVwbGFjZSkKKyAgICAgICAgZW5k
KQorZW5kCisKK21hY3JvIGFzc2VydE5vdENvbnN0YW50KGluZGV4KQorICAgIGFzc2VydChtYWNy
byAob2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBvayBlbmQpCitl
bmQKKworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3Rl
cnMuIEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJs
ZShpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4
XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAor
ICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXls
b2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVm
ZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmls
IGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVl
IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9hZHAgVGFnT2Zmc2V0
W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2Fk
LCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQg
bWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwg
OF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQK
KyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFn
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3RhZ10sIHRhZworICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0
aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwK
KyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxzaGlmdGkgMywgaW5kZXgKKyAgICBhZGRw
IGluZGV4LCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQKKyAgICBs
b2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnCisuZG9uZToKK2VuZAorCittYWNybyBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpCisg
ICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50Cisg
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBleHBlY3RlZFRhZywgc2xvdworICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRv
bmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxv
YWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtw
YXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0
aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwK
KyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGJpbmVxIFRhZ09mZnNldFtwYXlsb2FkLCBp
bmRleCwgOF0sIGV4cGVjdGVkVGFnLCBzbG93CisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXls
b2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKK21hY3JvIHdyaXRlQmFycmll
cih0YWcsIHBheWxvYWQpCisgICAgIyBOb3RoaW5nIHRvIGRvIHNpbmNlIHdlIGRvbid0IGhhdmUg
YSBnZW5lcmF0aW9uYWwgb3IgaW5jcmVtZW50YWwgY29sbGVjdG9yLgorZW5kCisKKworIyBJbmRp
Y2F0ZSB0aGUgYmVnaW5uaW5nIG9mIExMSW50LgorX2xsaW50X2JlZ2luOgorICAgIGNyYXNoKCkK
KworCisjIEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVycHJldGVyCisKK21hY3JvIGZ1bmN0aW9u
Rm9yQ2FsbENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVb
Y2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVb
dGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIK
K2VuZAorCittYWNybyBmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRS
ZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2Fk
cCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3Rl
cgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Rb
dGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9u
Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNv
dXJjZVJlZ2lzdGVyKQorICAgIHN0b3JlcCBzb3VyY2VSZWdpc3RlciwgQ29kZUJsb2NrW2Nmcl0K
K2VuZAorCittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikK
KyAgICAjIE5vdGhpbmcgdG8gZG8hCitlbmQKKworIyBEbyB0aGUgYmFyZSBtaW5pbXVtIHJlcXVp
cmVkIHRvIGV4ZWN1dGUgY29kZS4gU2V0cyB1cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2RlQmxvY2sq
CisjIGluIHQxLiBNYXkgYWxzbyB0cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KK21hY3JvIHBy
b2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JIZWxwZXIsIHRyYWNl
SGVscGVyKQorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICAKKyAg
ICAjIFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KKyAg
ICBzdG9yZXAgdDIsIFJldHVyblBDW2Nmcl0KKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAg
ICAgICBjYWxsSGVscGVyKHRyYWNlSGVscGVyKQorICAgIGVuZAorICAgIGNvZGVCbG9ja0dldHRl
cih0MSkKKyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBiYWRkaXMgNSwgQ29kZUJsb2NrOjpt
X2xsaW50RXhlY3V0ZUNvdW50ZXJbdDFdLCAuY29udGludWUKKyAgICAgICAgY0NhbGwyKG9zckhl
bHBlciwgY2ZyLCBQQykKKyAgICAgICAgbW92ZSB0MSwgY2ZyCisgICAgICAgIGJ0cHogdDAsIC5y
ZWNvdmVyCisgICAgICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCisgICAgICAgIHJlc3RvcmVS
ZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAgICAgICBqbXAgdDAKKyAgICAucmVjb3Zl
cjoKKyAgICAgICAgY29kZUJsb2NrR2V0dGVyKHQxKQorICAgIC5jb250aW51ZToKKyAgICBlbmQK
KyAgICBjb2RlQmxvY2tTZXR0ZXIodDEpCisgICAgCisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAg
IGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVC
bG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0
MF0sIFBDCitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBp
cyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KKyMgTXVzdCBjYWxsIGRpc3BhdGNoKDAp
IGFmdGVyIGNhbGxpbmcgdGhpcy4KK21hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oKQorICAg
ICMgUHJvZmlsZSB0aGUgYXJndW1lbnRzLiBVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIGNob2lj
ZSBidXQgdG8gZG8gdGhpcy4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0
MV0sIHQwCisgICAgYnRpeiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKKyAgICBuZWdpIHQwCisg
ICAgbHNoaWZ0aSAzLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9hcmd1bWVudFZhbHVlUHJv
ZmlsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDFdLCB0MworLmFyZ3VtZW50UHJvZmlsZUxvb3A6
CisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDBdLCB0Mgor
ICAgIHN0b3JlaSB0MiwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbdDNdCisg
ICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQwXSwgdDIK
KyAgICBzdG9yZWkgdDIsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFt0
M10KKyAgICBhZGRwIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQzCisgICAgYmFkZGlueiA4LCB0MCwg
LmFyZ3VtZW50UHJvZmlsZUxvb3AKKy5hcmd1bWVudFByb2ZpbGVEb25lOgorICAgIAorICAgICMg
Q2hlY2sgc3RhY2sgaGVpZ2h0LgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1DYWxsZWVSZWdp
c3RlcnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDIK
KyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmludGVycHJldGVyW3QyXSwgdDIgICAjIEZJWE1FOiBD
YW4gZ2V0IHRvIHRoZSBSZWdpc3RlckZpbGUgZnJvbSB0aGUgSklUU3RhY2tGcmFtZQorICAgIGxz
aGlmdGkgMywgdDAKKyAgICBhZGRwIHQwLCBjZnIsIHQwCisgICAgYnBhZXEgSW50ZXJwcmV0ZXI6
Om1fcmVnaXN0ZXJGaWxlICsgUmVnaXN0ZXJGaWxlOjptX2VuZFt0Ml0sIHQwLCAuc3RhY2tIZWln
aHRPSworCisgICAgIyBTdGFjayBoZWlnaHQgY2hlY2sgZmFpbGVkIC0gbmVlZCB0byBjYWxsIGEg
aGVscGVyLgorICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlZ2lzdGVyX2ZpbGVfY2hlY2spCisuc3Rh
Y2tIZWlnaHRPSzoKK2VuZAorCisjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdo
aWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgorbWFjcm8gZnVuY3Rpb25Bcml0
eUNoZWNrKGRvbmVMYWJlbCwgaGVscGVyKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1
bWVudENvdW50W2Nmcl0sIHQwCisgICAgYmllcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRl
cnNbdDFdLCBkb25lTGFiZWwKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKSAgICMgVGhpcyBo
ZWxwZXIgaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4gbm8gZXJyb3IsIHQwICE9IDAg
PT4gZXJyb3IKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBidGl6IHQwLCAuY29udGludWUKKyAgICBs
b2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2Jh
bERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0
YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKy5jb250aW51ZToKKyAgICAjIFJlbG9hZCBDb2Rl
QmxvY2sgYW5kIFBDLCBzaW5jZSB0aGUgaGVscGVyIGNsb2JiZXJlZCBpdC4KKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3Qx
XSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMg
KyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworICAgIGptcCBkb25lTGFiZWwKK2VuZAorCitf
bGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9j
a0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9s
bGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9ldmFsX3By
b2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5j
dGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xv
Z3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xv
Z3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rp
b25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1
ZV9mdW5jdGlvbl9mb3JfY2FsbCkKKy5mdW5jdGlvbkZvckNhbGxCZWdpbjoKKyAgICBmdW5jdGlv
bkluaXRpYWxpemF0aW9uKCkKKyAgICBkaXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0
cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRy
eV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQorLmZ1
bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigpCisg
ICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rp
b25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfYXJpdHlDaGVjaywgX2xsaW50X3Ry
YWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlv
bkZvckNhbGxCZWdpbiwgX2xsaW50X2hlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCisKKworX2xsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUoZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBf
bGxpbnRfZW50cnlfb3NyX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9j
b25zdHJ1Y3QpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJl
Z2luLCBfbGxpbnRfaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQorCisjIEluc3RydWN0aW9u
IGltcGxlbWVudGF0aW9ucworCitfbGxpbnRfb3BfZW50ZXI6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9u
dW1WYXJzW3QyXSwgdDIKKyAgICBidGl6IHQyLCAub3BFbnRlckRvbmUKKyAgICBtb3ZlIFVuZGVm
aW5lZFRhZywgdDAKKyAgICBtb3ZlIDAsIHQxCisub3BFbnRlckxvb3A6CisgICAgc3ViaSAxLCB0
MgorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgYnRpbnogdDIsIC5vcEVudGVyTG9vcAorLm9w
RW50ZXJEb25lOgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX2NyZWF0ZV9hY3RpdmF0
aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5l
cSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFjdGl2YXRp
b25Eb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQor
Lm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3Bf
aW5pdF9sYXp5X3JlZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0
b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitf
bGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVl
VGFnLCAub3BDcmVhdGVBcmd1bWVudHNEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2NyZWF0ZV9hcmd1bWVudHMpCisub3BDcmVhdGVBcmd1bWVudHNEb25lOgorICAgIGRpc3BhdGNo
KDIpCisKKworbWFjcm8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNpemVDbGFzc0luZGV4LCBjbGFz
c0luZm9PZmZzZXQsIHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNsb3dD
YXNlKQorICAgIGNvbnN0IG9mZnNldE9mTXlTaXplQ2xhc3MgPSBKU0dsb2JhbERhdGE6OmhlYXAg
KyBIZWFwOjptX29iamVjdFNwYWNlICsgQWxsb2NhdGlvblNwYWNlOjptX21hcmtlZFNwYWNlICsg
TWFya2VkU3BhY2U6Om1fcHJlY2lzZVNpemVDbGFzc2VzICsgc2l6ZUNsYXNzSW5kZXggKiBzaXpl
b2YgTWFya2VkU3BhY2U6OlNpemVDbGFzcworICAgIAorICAgICMgRklYTUU6IHdlIGNhbiBnZXQg
dGhlIGdsb2JhbCBkYXRhIGluIG9uZSBsb2FkIGZyb20gdGhlIHN0YWNrLgorICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCBzY3JhdGNoMQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRh
W3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAKKyAgICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhl
IGZyZWUgbGlzdC4gICAgCisgICAgbG9hZHAgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNw
YWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKKyAgICBidHB6
IHJlc3VsdCwgc2xvd0Nhc2UKKyAgICAKKyAgICAjIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhl
IGZyZWUgbGlzdC4KKyAgICBsb2FkcCBbcmVzdWx0XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2Ny
YXRjaDIsIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJz
dEZyZWVDZWxsW3NjcmF0Y2gxXQorCisgICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisgICAg
bG9hZHAgY2xhc3NJbmZvT2Zmc2V0W3NjcmF0Y2gxXSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2Ny
YXRjaDIsIFtyZXN1bHRdCisgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVy
ZVtyZXN1bHRdCisgICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0K
KyAgICBhZGRwIHNpemVvZiBKU09iamVjdCwgcmVzdWx0LCBzY3JhdGNoMQorICAgIHN0b3JlcCBz
Y3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KK2VuZAorCitfbGxp
bnRfb3BfY3JlYXRlX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgQ2VsbFRhZywgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MQorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwg
T2JqZWN0VHlwZSwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9pbmhl
cml0b3JJRFt0MF0sIHQyCisgICAgYnRweiB0MiwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxv
Y2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERh
dGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlz
U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgZGlzcGF0Y2goMykKKworLm9wQ3JlYXRlVGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2NyZWF0ZV90aGlzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dl
dF9jYWxsZWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGxvYWRwIFBheWxvYWRPZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRh
ZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQwCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjpt
X3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgy
KQorCisub3BDb252ZXJ0VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Nv
bnZlcnRfdGhpcykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfb2JqZWN0Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2Jh
bE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNp
Y0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0Zp
bmFsT2JqZWN0Q2xhc3NJbmZvLCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAg
ICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0
Y2goMikKKworLm9wTmV3T2JqZWN0U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
bmV3X29iamVjdCkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfYXJyYXk6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJy
YXkpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJh
eV9idWZmZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdl
eHApCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9ub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBiaW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90
U2xvdworICAgIHhvcmkgMSwgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4
XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNo
KDMpCisKKy5vcE5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25vdCkKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0
MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2Vs
bFRhZywgLm9wRXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxv
YWRpIDRbUENdLCB0MgorICAgIGNpZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BFcVNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2VxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2VxX251bGw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRb
UENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAor
ICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BFcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBq
bXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlCisub3BFcU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0
MSwgTnVsbFRhZywgdDIKKyAgICBjaWVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQy
LCB0MQorLm9wRXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Mywg
OF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVx
IHQyLCBDZWxsVGFnLCAub3BOZXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNs
b3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVp
IEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lcSkKKyAgICBkaXNwYXRjaCg0KQorICAgIAorCitf
bGxpbnRfb3BfbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRp
YXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wTmVxTnVsbE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbElt
bWVkaWF0ZToKKyAgICBjaW5lcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZp
bmVkVGFnLCB0MQorICAgIGFuZGkgdDIsIHQxCisub3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAg
IHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHN0
cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0Mgor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0
MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVx
IHQyLCB0MywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0
MiwgQ2VsbFRhZywgLm5vdFN0cmluZworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MworICAgIGJibmVxIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAu
bm90U3RyaW5nCisgICAgYmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90
eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cKKy5ub3RTdHJpbmc6CisgICAgbG9hZGkgNFtQQ10s
IHQyCisgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVh
blRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlciho
ZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0
KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVscGVyX3N0cmljdGVxKQor
CisKK19sbGludF9vcF9uc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmlj
dEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0
IGVuZCwgX2xsaW50X2hlbHBlcl9uc3RyaWN0ZXEpCisKKworX2xsaW50X29wX2xlc3M6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3NlcSkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9ncmVhdGVyZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2lu
YzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJ
bmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlz
cGF0Y2goMikKKworLm9wUHJlSW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cHJlX2luYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wcmVfZGVjOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVEZWNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBic3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAg
ICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQor
Cisub3BQcmVEZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfZGVjKQor
ICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Bvc3RfaW5jOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5l
cSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0SW5jU2xvdworICAgIGJp
ZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNT
bG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5v
cFBvc3RJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2luYykKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9wb3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVx
IHQwLCB0MSwgLm9wUG9zdERlY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xv
dworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVp
IHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCisub3BQb3N0RGVjRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQ
b3N0RGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9kZWMpCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdG9fanNudW1iZXI6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBiaWVxIHQyLCBJbnQzMlRhZywgLm9w
VG9Kc251bWJlcklzSW50CisgICAgYmlhZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcFRvSnNudW1i
ZXJTbG93Cisub3BUb0pzbnVtYmVySXNJbnQ6CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBk
aXNwYXRjaCgzKQorCisub3BUb0pzbnVtYmVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfdG9fanNudW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVnYXRl
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0
W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIK
KyAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcE5lZ2F0ZVNyY05vdEludAorICAgIGJ0aXogdDIs
IDB4N2ZmZmZmZmYsIC5vcE5lZ2F0ZVNsb3cKKyAgICBuZWdpIHQyCisgICAgc3RvcmVpIEludDMy
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorLm9wTmVnYXRlU3JjTm90SW50OgorICAgIGJp
YSB0MSwgTG93ZXN0VGFnLCAub3BOZWdhdGVTbG93CisgICAgeG9yaSAweDgwMDAwMDAwLCB0MQor
ICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wTmVnYXRlU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmVnYXRlKQorICAgIGRpc3BhdGNoKDMpCisK
KworbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZShpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUsIGRv
dWJsZU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgSW50MzJU
YWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUodDMsIHQxLCB0MCwg
LnNsb3csIHQyKQorICAgIGRpc3BhdGNoKDUpCisKKy5vcDFOb3RJbnQ6CisgICAgIyBGaXJzdCBv
cGVyYW5kIGlzIGRlZmluaXRlbHkgbm90IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGNvdWxk
IGJlIGFueXRoaW5nLgorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0Mywg
TG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAu
c2xvdworICAgIGNpMmQgdDEsIGZ0MQorICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJ
bnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDEsIHQzLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAg
ICBsb2FkaSA0W1BDXSwgdDEKKyAgICBmaWkyZCB0MCwgdDIsIGZ0MAorICAgIGRvdWJsZU9wZXJh
dGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRj
aCg1KQorCisub3AyTm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IGFu
IGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90LgorICAgIGxvYWRpIDRb
UENdLCB0MgorICAgIGJpYSB0MywgTG93ZXN0VGFnLCAuc2xvdworICAgIGNpMmQgdDAsIGZ0MAor
ICAgIGZpaTJkIHQxLCB0MywgZnQxCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAg
IHN0b3JlZCBmdDAsIFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5zbG93OgorICAg
IGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDUpCitlbmQKKworbWFjcm8gYmluYXJ5
T3AoaW50ZWdlck9wZXJhdGlvbiwgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCisgICAgYmluYXJ5
T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xv
dywgaW5kZXgpCisgICAgICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93
KQorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0K
KyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQor
ICAgICAgICBlbmQsCisgICAgICAgIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorZW5kCisKK19s
bGludF9vcF9hZGQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQs
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgYWRkZCBsZWZ0LCByaWdodCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfYWRkKQorCisKK19sbGludF9vcF9tdWw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRh
ZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgY29uc3Qgc2NyYXRjaCA9
IGludDMyVGFnICAgIyBXZSBrbm93IHRoYXQgd2UgY2FuIHJldXNlIHRoZSBpbnQzMlRhZyByZWdp
c3RlciBzaW5jZSBpdCBoYXMgYSBjb25zdGFudC4KKyAgICAgICAgICAgIG1vdmUgcmlnaHQsIHNj
cmF0Y2gKKyAgICAgICAgICAgIGJtdWxpbyBsZWZ0LCBzY3JhdGNoLCBzbG93CisgICAgICAgICAg
ICBidGlueiBzY3JhdGNoLCAuZG9uZQorICAgICAgICAgICAgYmlsdCBsZWZ0LCAwLCAuc2xvdwor
ICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgLnNsb3cKKyAgICAgICAgLmRvbmU6CisgICAgICAg
ICAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAg
ICAgc3RvcmVpIHNjcmF0Y2gsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAg
ZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIG11bGQgbGVmdCwgcmlnaHQgZW5kLAor
ICAgICAgICBfbGxpbnRfaGVscGVyX211bCkKKworCitfbGxpbnRfb3Bfc3ViOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBz
bG93KSBic3ViaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQpIHN1YmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3N1YikK
KworCitfbGxpbnRfb3BfZGl2OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1
c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBp
bmRleCkKKyAgICAgICAgICAgIGNpMmQgbGVmdCwgZnQwCisgICAgICAgICAgICBjaTJkIHJpZ2h0
LCBmdDEKKyAgICAgICAgICAgIGRpdmQgZnQwLCBmdDEKKyAgICAgICAgICAgIGJjZDJpIGZ0MSwg
cmlnaHQsIC5ub3RJbnQKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2Nm
ciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2Zy
LCBpbmRleCwgOF0KKyAgICAgICAgICAgIGptcCAuZG9uZQorICAgICAgICAubm90SW50OgorICAg
ICAgICAgICAgc3RvcmVkIGZ0MSwgW2NmciwgaW5kZXgsIDhdCisgICAgICAgIC5kb25lOgorICAg
ICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgZGl2ZCBsZWZ0LCByaWdodCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfZGl2KQorCisKK19sbGludF9vcF9tb2Q6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9tb2QpCisgICAg
ZGlzcGF0Y2goNCkKKworCittYWNybyBiaXRPcChvcGVyYXRpb24sIGhlbHBlciwgYWR2YW5jZSkK
KyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
KHQwLCB0MiwgdDApCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGJpbmVxIHQy
LCBJbnQzMlRhZywgLnNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBvcGVyYXRpb24odDEs
IHQwLCAuc2xvdykKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKGFkdmFuY2Up
CisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKGFkdmFuY2Up
CitlbmQKKworX2xsaW50X29wX2xzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0
T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdo
dCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbHNoaWZ0LAorICAgICAgICA0KQorCisKK19s
bGludF9vcF9yc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAg
ICAgICBfbGxpbnRfaGVscGVyX3JzaGlmdCwKKyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfdXJz
aGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0CisgICAg
ICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAgIGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl91cnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF9iaXRhbmQ6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHNsb3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdGFu
ZCwKKyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxl
ZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXR4b3IsCisgICAgICAgIDUp
CisKKworX2xsaW50X29wX2JpdG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAor
ICAgICAgICBfbGxpbnRfaGVscGVyX2JpdG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9i
aXRub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQxKQorICAgIGxvYWRpIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhd
LCB0MworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wQml0bm90U2xvdworICAgIG5vdGkgdDMK
KyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2JpdG5vdCkKKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVx
IFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsg
VHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFz
SW5zdGFuY2VTbG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKKyAgICBk
aXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbnN0YW5jZW9mOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICAjIENoZWNrIHRoYXQgYmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0lu
c3RhbmNlIGJlaGF2aW9yLgorICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQu
CisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5m
bzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIC5vcEluc3RhbmNl
b2ZTbG93CisgICAgCisgICAgIyBBY3R1YWxseSBkbyB0aGUgd29yay4KKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNz
ZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDEpCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BJbnN0YW5jZW9mU2xvdworICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgQ2VsbFRhZywgLm9wSW5zdGFuY2VvZlNsb3cKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MQorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIAorICAgICMgUmVnaXN0ZXIgc3Rh
dGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCisgICAgbW92ZSAxLCB0MAorLm9wSW5zdGFu
Y2VvZkxvb3A6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCisgICAgbG9h
ZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDJdLCB0MgorICAgIGJw
ZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQorICAgIGJ0aW56IHQyLCAub3BJbnN0YW5jZW9m
TG9vcAorCisgICAgbW92ZSAwLCB0MAorLm9wSW5zdGFuY2VvZkRvbmU6CisgICAgc3RvcmVpIEJv
b2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEluc3RhbmNlb2ZTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbnN0YW5jZW9mKQorICAgIGRpc3BhdGNoKDUp
CisKKworX2xsaW50X29wX3R5cGVvZjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3R5cGVvZikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9pc191bmRlZmluZWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9pc191bmRlZmluZWQpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bf
aXNfYm9vbGVhbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2lzX2Jvb2xlYW4pCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfbnVt
YmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
aXNfbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3N0cmluZzoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3N0cmlu
ZykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19vYmplY3Q6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19vYmplY3QpCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfZnVuY3Rpb246CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19mdW5jdGlvbikKKyAgICBkaXNw
YXRjaCgzKQorCisKK19sbGludF9vcF9pbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2luKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X3Jlc29sdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9yZXNvbHZlKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfc2tp
cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jl
c29sdmVfc2tpcCkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHJlc29sdmVHbG9iYWwoc2xv
dykKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5h
dGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIFByb3BlcnR5IGlkZW50aWZpZXIgaW5k
ZXggaW4gdGhlIGNvZGUgYmxvY2suCisgICAgIyAxMltQQ10gIFN0cnVjdHVyZSBwb2ludGVyLCBp
bml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAgICAjIDE2W1BDXSAgT2Zm
c2V0IGluIGdsb2JhbCBvYmplY3QsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJh
dG9yLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6
bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MQorICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cKKyAgICBsb2FkaSAxNltQQ10sIHQxCisg
ICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKKyAgICBsb2FkaSBU
YWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwg
OF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KK2VuZAor
CitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHJl
c29sdmVHbG9iYWwoLm9wUmVzb2x2ZUdsb2JhbFNsb3cpCisgICAgZGlzcGF0Y2goNSkKKworLm9w
UmVzb2x2ZUdsb2JhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVf
Z2xvYmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworIyBHaXZlcyB5b3UgdGhlIHNjb3BlIGluIHQw
LCB3aGlsZSBhbGxvd2luZyB5b3UgdG8gb3B0aW9uYWxseSBwZXJmb3JtIGFkZGl0aW9uYWwgY2hl
Y2tzIG9uIHRoZQorIyBzY29wZXMgYXMgdGhleSBhcmUgdHJhdmVyc2VkLiBzY29wZUNoZWNrKCkg
aXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHJlZ2lzdGVyCisjIGhvbGRpbmcgdGhl
IHNjb3BlLCBhbmQgYSByZWdpc3RlciB0aGF0IGNhbiBiZSB1c2VkIGZvciBzY3JhdGNoLiBOb3Rl
IHRoYXQgdGhpcyBkb2VzIG5vdAorIyB1c2UgdDMsIHNvIHlvdSBjYW4gaG9sZCBzdHVmZiBpbiB0
MyBpZiBuZWVkIGJlLgorbWFjcm8gZ2V0U2NvcGUoZGVCcnVpamluSW5kZXhPcGVyYW5kLCBzY29w
ZUNoZWNrKQorICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisg
ICAgbG9hZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5k
b25lCisgICAgCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgYmluZXEgQ29kZUJs
b2NrOjptX2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAubG9vcAorICAgIGJ0YnogQ29kZUJs
b2NrOjptX25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9vcAorICAgIAorICAgIGxvYWRpIENv
ZGVCbG9jazo6bV9hY3RpdmF0aW9uUmVnaXN0ZXJbdDFdLCB0MQorCisgICAgIyBOZWVkIHRvIGNv
bmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KKyAgICBiaWVxIFRhZ09mZnNldFtjZnIs
IHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlvbgorICAgIHNjb3BlQ2hlY2sodDAs
IHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKy5ub0FjdGl2YXRp
b246CisgICAgc3ViaSAxLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisubG9vcDoKKyAg
ICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0s
IHQwCisgICAgc3ViaSAxLCB0MgorICAgIGJ0aW56IHQyLCAubG9vcAorCisuZG9uZToKK2VuZAor
CitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZHAg
SlNHbG9iYWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJlW3QzXSwgdDMKKyAgICBnZXRTY29wZSgK
KyAgICAgICAgMjBbUENdLAorICAgICAgICBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpCisgICAgICAg
ICAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3Njb3BlXSwgc2NyYXRjaAorICAgICAg
ICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVtzY3JhdGNoXSwgdDMsIC5vcFJlc29sdmVH
bG9iYWxEeW5hbWljU3VwZXJTbG93CisgICAgICAgIGVuZCkKKyAgICByZXNvbHZlR2xvYmFsKC5v
cFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdykKKyAgICBkaXNwYXRjaCg2KQorCisub3BSZXNvbHZl
R2xvYmFsRHluYW1pY1N1cGVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVz
b2x2ZSkKKyAgICBkaXNwYXRjaCg2KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3BhdGNo
KDYpCisKKworX2xsaW50X29wX2dldF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlv
biBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIEluZGV4IG9mIHJlZ2lzdGVyIGluIHRoZSBz
Y29wZS4KKyAgICAjIDEyW1BDXSAgRGUgQnJ1aWppbiBpbmRleC4KKyAgICBnZXRTY29wZSgxMltQ
Q10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAg
IGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3RbdDBdLCB0
MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBs
b2FkaSBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3Qw
LCB0MiwgOF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBz
dG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZ2V0
U2NvcGUoOFtQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDEyW1BD
XSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQx
LCB0MywgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQzLCB0MikKKyAgICBsb2FkcCBTY29wZUNoYWlu
Tm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lz
dGVyc1t0MF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0
b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxv
YWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zm
c2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0
MQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bf
cHV0X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0
MQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVy
c1t0MF0sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGxv
YWRpIDRbUENdLCB0MQorICAgIHdyaXRlQmFycmllcih0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBU
YWdPZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFt0MCwgdDEs
IDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9iYXNlOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9iYXNl
KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHM6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9lbnN1
cmVfcHJvcGVydHlfZXhpc3RzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29s
dmVfd2l0aF9iYXNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfcmVzb2x2ZV93aXRoX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9nZXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgV2Ugb25s
eSBkbyBtb25vbW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90
IG1vZGlmeSB0aGUKKyAgICAjIG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUg
Y2FjaGUgdG8gY2hhbmdlIGFueXRpbWUgaWYgZmFpbHMsIHNpbmNlCisgICAgIyBwaW5nLXBvbmdp
bmcgaXMgZnJlZS4gQXQgYmVzdCB3ZSBnZXQgbHVja3kgYW5kIHRoZSBnZXRfYnlfaWQgd2lsbCBj
b250aW51ZQorICAgICMgdG8gdGFrZSBmYXN0IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQgd29y
c3Qgd2UgdGFrZSBzbG93IHBhdGgsIHdoaWNoIGlzIHdoYXQKKyAgICAjIHdlIHdvdWxkIGhhdmUg
YmVlbiBkb2luZyBhbnl3YXkuCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENd
LCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0Mywg
Lm9wR2V0QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRwIEpTT2JqZWN0
OjptX3Byb3BlcnR5U3RvcmFnZVt0M10sIHQwCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0M10sIHQxLCAub3BHZXRCeUlkU2xvdworICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRp
IFRhZ09mZnNldFt0MCwgdDJdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyXSwg
dDIKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0Miwg
UGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDgpCisKKy5vcEdldEJ5SWRT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfaWQpCisgICAgZGlzcGF0
Y2goOCkKKworCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRz
TGVuZ3RoU2xvdworICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0s
IHQyCisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlz
cGF0Y2goNCkKKworLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10s
IHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBi
cG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgbG9h
ZGkgMjBbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MCwgdDIp
CisgICAgd3JpdGVCYXJyaWVyKHQwLCB0MikKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0Mywg
dDFdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBkaXNwYXRjaCg5
KQorCisub3BQdXRCeUlkU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5
X2lkKQorICAgIGRpc3BhdGNoKDkpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRp
b25hbENoZWNrcykKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisg
ICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQz
LCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAg
IGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBh
ZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENd
LCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAg
YWRkcCB0MSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDEsIHQyKQor
ICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbdDNdCisg
ICAgbG9hZGkgMjRbUENdLCB0MQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAg
ICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgZGlzcGF0Y2goOSkKK2Vu
ZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIHB1dEJ5SWRU
cmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKworCitf
bGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgIHB1dEJ5SWRUcmFuc2l0
aW9uKAorICAgICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQorICAgICAg
ICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRT
dHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bworICAgICAgICAKKyAgICAgICAgICAgIGxv
YWRwIDI4W1BDXSwgc2NyYXRjaAorICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnog
c2NyYXRjaCwgb2sgZW5kKQorICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVj
dG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBu
eiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5
cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAgICAgICAgLmxv
b3A6CisgICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9m
ZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgICAgICAgICBicG5lcSBv
bGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdworICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNo
CisgICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29s
ZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQp
CisKKworX2xsaW50X29wX2RlbF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9nZXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQQ10sIHQz
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQor
ICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MV0sIHQyCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxT
bG93KQorICAgIGJwbmVxIFt0MF0sIHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0Fy
cmF5OjptX3N0b3JhZ2VbdDBdLCB0MworICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3ZlY3Rvckxl
bmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRp
IEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAgICBs
b2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0
MQorICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAgIHN0b3Jl
aSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QnlWYWxTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaWVxIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgSW50MzJUYWcsIHQyLCAub3BHZXRB
cmd1bWVudEJ5VmFsU2xvdykKKyAgICBhZGRpIDEsIHQyCisgICAgbG9hZGkgQXJndW1lbnRDb3Vu
dCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDEKKyAgICBiaWFlcSB0MiwgdDEsIC5vcEdldEFyZ3Vt
ZW50QnlWYWxTbG93CisgICAgbmVnaSB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRp
IFRhZ09mZnNldFtjZnIsIHQyLCA4XSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDIsIDhdLCB0MQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3Rv
cmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9w
R2V0QXJndW1lbnRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9h
cmd1bWVudF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5X3Bu
YW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQwCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BHZXRCeVBuYW1l
U2xvdykKKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgYnBuZXEgdDEsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BHZXRCeVBu
YW1lU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQwCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDAKKyAg
ICBicG5lcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDNd
LCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDI0W1BDXSwgdDAKKyAgICBsb2FkaSBbY2Zy
LCB0MCwgOF0sIHQwCisgICAgc3ViaSAxLCB0MAorICAgIGJpYWVxIHQwLCBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAg
ICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDJdLCB0MgorICAgIGxvYWRpIFRh
Z09mZnNldFt0MiwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDIsIHQwLCA4
XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIs
IHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRp
c3BhdGNoKDcpCisKKy5vcEdldEJ5UG5hbWVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9nZXRfYnlfcG5hbWUpCisgICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfcHV0X2J5
X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZhbFNs
b3cpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQodDAsIEludDMyVGFnLCB0MiwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QwXSwgdDAKKyAg
ICBsb2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDBdLCB0MAorICAgIGJwbmVx
IFt0MV0sIHQwLCAub3BQdXRCeVZhbFNsb3cKKyAgICBiaWFlcSB0MiwgSlNBcnJheTo6bV92ZWN0
b3JMZW5ndGhbdDFdLCAub3BQdXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0b3Jh
Z2VbdDFdLCB0MAorICAgIGJpZXEgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0
MCwgdDIsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BQdXRCeVZhbEVtcHR5Cisub3BQdXRCeVZhbFN0
b3JlUmVzdWx0OgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZyh0MywgdDEsIHQzKQorICAgIHdyaXRlQmFycmllcih0MSwgdDMpCisgICAgc3RvcmVp
IHQxLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBz
dG9yZWkgdDMsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0Miwg
OF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BQdXRCeVZhbEVtcHR5OgorICAgIGFkZGkgMSwgQXJy
YXlTdG9yYWdlOjptX251bVZhbHVlc0luVmVjdG9yW3QwXQorICAgIGJpYiB0MiwgQXJyYXlTdG9y
YWdlOjptX2xlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQKKyAgICBhZGRpIDEsIHQy
LCB0MQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX2xlbmd0aFt0MF0KKyAgICBqbXAg
Lm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorCisub3BQdXRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3B1dF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfZGVsX2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2RlbF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0
X2J5X2luZGV4OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfcHV0X2J5X2luZGV4KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9n
ZXR0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9wdXRfZ2V0dGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9zZXR0ZXI6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRf
c2V0dGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xvb3A6CisgICAgbm9wCitf
bGxpbnRfb3Bfam1wOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkaXNwYXRjaEJyYW5jaCg0
W1BDXSkKKworCitfbGxpbnRfb3Bfam1wX3Njb3BlczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2ptcF9zY29wZXMpCisgICAgZGlzcGF0Y2goMCkK
KworCittYWNybyBqdW1wVHJ1ZU9yRmFsc2UoY29uZGl0aW9uT3AsIHNsb3cpCisgICAgbG9hZGkg
NFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEJvb2xlYW5U
YWcsIHQwLCAuc2xvdykKKyAgICBjb25kaXRpb25PcCh0MCwgLnRhcmdldCkKKyAgICBkaXNwYXRj
aCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuc2xvdzoKKyAg
ICBjYWxsSGVscGVyKHNsb3cpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9v
cF9pZl90cnVlOgorICAgIG5vcAorX2xsaW50X29wX2p0cnVlOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBi
dGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qdHJ1ZSkKKwor
CitfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKKyAgICBub3AKK19sbGludF9vcF9qZmFsc2U6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAgbWFjcm8g
KHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfamZhbHNlKQorCisKK21hY3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwgaW1tZWRpYXRl
SGFuZGxlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBi
aW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MgorICAgIGNlbGxIYW5kbGVyKFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJ
bmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0Ogor
ICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuaW1tZWRpYXRlOgorICAgIG9yaSAxLCB0MQor
ICAgIGltbWVkaWF0ZUhhbmRsZXIodDEsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKK2VuZAor
CitfbGxpbnRfb3BfamVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVs
bCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0Ym56IHZhbHVlLCBNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkg
YmllcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKyAgICAKKworX2xsaW50X29wX2puZXFf
bnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNy
byAodmFsdWUsIHRhcmdldCkgYnRieiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpbmVxIHZhbHVlLCBOdWxs
VGFnLCB0YXJnZXQgZW5kKQorCisKK19sbGludF9vcF9qbmVxX3B0cjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmlu
ZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNoCisgICAg
YnBlcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxUaHJvdWdo
Cisub3BKbmVxUHRyQnJhbmNoOgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKy5vcEpuZXFQ
dHJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGNvbXBhcmUoaW50ZWdl
ckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUsIGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAg
ICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCwgdDEp
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQyLCB0MykKKyAgICBiaW5lcSB0
MCwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDJOb3RJ
bnQKKyAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNo
KDQpCisKKy5vcDFOb3RJbnQ6CisgICAgYmlhIHQwLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmli
IHQyLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MiwgSW50MzJU
YWcsIC5zbG93CisgICAgY2kyZCB0MywgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9w
MU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQorLm9wMU5vdEludFJlYWR5
OgorICAgIGZpaTJkIHQxLCB0MCwgZnQwCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1
bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMk5vdEludDoKKyAgICBjaTJkIHQxLCBm
dDAKKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQor
ICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQp
CisKKy5qdW1wVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKworLnNsb3c6Cisg
ICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3Bf
bG9vcF9pZl9sZXNzOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkg
YmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJkbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfamxlc3MpCisKKworX2xsaW50X29wX2pubGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3Rl
cSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0
YXJnZXQpIGJkZ3RlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRf
aGVscGVyX2pubGVzcykKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyOgorICAgIG5vcAor
X2xsaW50X29wX2pncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3QgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXIpCisKKwor
X2xsaW50X29wX2puZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcXVu
IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRl
cikKKworCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzZXE6CisgICAgbm9wCitfbGxpbnRfb3Bfamxl
c3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcSBsZWZ0LCByaWdodCwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzc2VxKQorCisKK19sbGludF9vcF9q
bmxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0dW4gbGVmdCwgcmlnaHQsIHRh
cmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzZXEpCisKKworX2xsaW50X29w
X2xvb3BfaWZfZ3JlYXRlcmVxOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyZXE6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3Bfam5ncmVhdGVy
ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcmVxKQorCisKK19sbGludF9vcF9s
b29wX2hpbnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JM
b29wKCkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zd2l0Y2hfaW1tOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQwCisgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3Jh
cmVEYXRhW3QyXSwgdDIKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9p
bW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyLCB0MywgNF0s
IHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0
MSwgSW50MzJUYWcsIC5vcFN3aXRjaEltbU5vdEludAorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxl
OjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNl
dHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBs
b2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRb
dDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEsIC5vcFN3aXRj
aEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQorCisub3BT
d2l0Y2hJbW1Ob3RJbnQ6CisgICAgYmliIHQxLCBMb3dlc3RUYWcsIC5vcFN3aXRjaEltbVNsb3cg
ICMgR28gdG8gc2xvdyBwYXRoIGlmIGl0J3MgYSBkb3VibGUuCisub3BTd2l0Y2hJbW1GYWxsVGhy
b3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLm9wU3dpdGNoSW1tU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX2ltbSkKKyAgICBkaXNwYXRjaCgwKQor
CisKK19sbGludF9vcF9zd2l0Y2hfY2hhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgMTJbUENdLCB0MAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRpIDRb
UENdLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgYXNz
ZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQor
ICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxl
cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MiwgdDMsIDRdLCB0MgorICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRjaENo
YXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAg
IGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBTdHJp
bmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU1N0cmluZzo6bV92
YWx1ZVt0MF0sIHQwCisgICAgYmluZXEgU3RyaW5nSW1wbDo6bV9sZW5ndGhbdDBdLCAxLCAub3BT
d2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTdHJpbmdJbXBsOjptX2RhdGE4W3QwXSwg
dDEKKyAgICBidGlueiBTdHJpbmdJbXBsOjptX2hhc2hBbmRGbGFnc1t0MF0sIEhhc2hGbGFnczhC
aXRCdWZmZXIsIC5vcFN3aXRjaENoYXI4Qml0CisgICAgbG9hZGggW3QxXSwgdDAKKyAgICBqbXAg
Lm9wU3dpdGNoQ2hhclJlYWR5Cisub3BTd2l0Y2hDaGFyOEJpdDoKKyAgICBsb2FkYiBbdDFdLCB0
MAorLm9wU3dpdGNoQ2hhclJlYWR5OgorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJd
LCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0
b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2lt
cGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIK
KyAgICBsb2FkaSBbdDIsIHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxs
VGhyb3VnaAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoQ2hh
ckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9z
d2l0Y2hfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfc3dpdGNoX3N0cmluZykKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9u
ZXdfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYnRpeiAxMltQQ10sIC5vcE5ld0Z1
bmNVbmNoZWNrZWQKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcE5ld0Z1bmNEb25lCisub3BOZXdGdW5jVW5jaGVj
a2VkOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuYykKKy5vcE5ld0Z1bmNE
b25lOgorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19mdW5jX2V4cDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19mdW5jX2V4
cCkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGRvQ2FsbChoZWxwZXIpCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRwIExMSW50Q2FsbExpbmtJ
bmZvOjpjYWxsZWVbdDFdLCB0MgorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVx
IFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ2FsbFNsb3cKKyAgICBiaW5lcSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBsb2FkaSAxMltQ
Q10sIHQzCisgICAgYWRkcCAyNCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgYWRkcCBjZnIs
IHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9hZHAgSlNGdW5j
dGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxv
YWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0
M10KKyAgICBsb2FkaSA4IC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3Vu
dCArIFRhZ09mZnNldFtjZnJdCisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNdCisgICAg
c3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkg
Q2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBTY29w
ZUNoYWluICsgVGFnT2Zmc2V0W3QzXQorICAgIG1vdmUgdDMsIGNmcgorICAgIGNhbGwgTExJbnRD
YWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxs
KCkKKworLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhlbHBlcikKK2VuZAor
CitfbGxpbnRfb3BfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGlu
dF9oZWxwZXJfY2FsbCkKKworCitfbGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3QpCisKKworX2xsaW50X29w
X2NhbGxfdmFyYXJnczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1BhdGhGb3JDYWxs
KDYsIF9sbGludF9oZWxwZXJfY2FsbF92YXJhcmdzKQorCisKK19sbGludF9vcF9jYWxsX2V2YWw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIAorICAgICMgRXZhbCBpcyBleGVjdXRlZCBpbiBv
bmUgb2YgdHdvIG1vZGVzOgorICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSByZWFs
bHkgaW52b2tpbmcgZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBleGVjdXRpb24g
aXMgcGVyZm9tZWQgZW50aXJlbHkgaW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBpdAorICAgICMgICAg
cmV0dXJucyB0aGUgUEMgb2YgYSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0aGUgcmV0dXJu
IHZhbHVlCisgICAgIyAgICB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgICMKKyAgICAjIDIp
IFdlIGZpbmQgdGhhdCB3ZSdyZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwoKSB0aGF0
IGlzIG5vdAorICAgICMgICAgdGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVscGVyIHJldHVybnMg
dGhlIFBDIG9mIHRoZSB0aGluZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQuCisg
ICAgIworICAgICMgVGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywgd2hpY2ggd291
bGQgcmVxdWlyZSBhIHRvdGFsIG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0ZSB0
aGF0IGNhbm5vdCBiZSBlYXNpbHkgcGFja2VkIGludG8gdHdvCisgICAgIyByZWdpc3RlcnMgKEMg
ZnVuY3Rpb25zIGNhbiByZXR1cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5KToKKyAgICAj
CisgICAgIyAtIFRoZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBtYXkgbm90IGhh
dmUgYmVlbiBtb2RpZmllZAorICAgICMgICBieSB0aGUgaGVscGVyLCBidXQgdGhlIGNvbnZlbnRp
b24gaXMgdGhhdCBpdCByZXR1cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0b3RhbGx5IGNsZWFy
IGlmIHRoYXQncyBuZWNlc3NhcnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUuCisgICAg
IyAgIEJ1dCB0aGF0J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRlciBzbyB3ZSBz
dGljayB3aXRoIGl0LgorICAgICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBoZWxwZXIg
c3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAjICAgdGhlIHJldHVy
biB2YWx1ZSwgb3IgZGlkIG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3IgdXMK
KyAgICAjICAgdG8gY2FsbC4KKyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAgICAjICAgLSBUaGUg
SlMgcmV0dXJuIHZhbHVlICh0d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisgICAgIyAgIC0gVGhl
IFBDIHRvIGNhbGwuCisgICAgIworICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2llciB0byBq
dXN0IGFsd2F5cyBoYXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBhIFBDIHRvIGNh
bGwsIGFuZCB0aGF0IFBDIG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAorICAgICMgcmV0
dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAKKyAgICBzbG93
UGF0aEZvckNhbGwoNCwgX2xsaW50X2hlbHBlcl9jYWxsX2V2YWwpCisKKworX2xsaW50X2dlbmVy
aWNfcmV0dXJuX3BvaW50OgorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitfbGxpbnRfb3Bf
dGVhcl9vZmZfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQKKyAgICBiaWVx
IFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRp
b25Ob3RDcmVhdGVkCisub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCisub3BUZWFyT2ZmQWN0aXZhdGlv
bk5vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYXJn
dW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBz
dWJpIDEsIHQwICAgIyBHZXQgdGhlIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcgorICAgIGJp
ZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQXJndW1l
bnRzTm90Q3JlYXRlZAorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hcmd1
bWVudHMpCisub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgyKQor
CisKK21hY3JvIGRvUmV0dXJuKCkKKyAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgIGxv
YWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgorICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3Jl
UmV0dXJuKHQyKQorICAgIHJldAorZW5kCisKK19sbGludF9vcF9yZXQ6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQ
Q10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0
dXJuKCkKKworCitfbGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIGxvYWRpIDRbUENdLCB0
MgorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdHJhY2VFeGVjdXRpb24oKSAjIE5lZWRzIHRv
IGJlIGhlcmUgYmVjYXVzZSBpdCB3b3VsZCBjbG9iYmVyIHQxLCB0MAorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wUmV0T2JqZWN0
T3JUaGlzTm90T2JqZWN0CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisg
ICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmpl
Y3RUeXBlLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBkb1JldHVybigpCisKKy5v
cFJldE9iamVjdE9yVGhpc05vdE9iamVjdDoKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
aSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX21ldGhvZF9jaGVjazoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNoZWNrcyBhbmQg
dXNlIG5vcm1hbCBnZXRfYnlfaWQgb3B0aW1pemF0aW9ucy4KKyAgICBkaXNwYXRjaCgxKQorCisK
K19sbGludF9vcF9zdHJjYXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9zdHJjYXQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfdG9f
cHJpbWl0aXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2Vs
bFRhZywgLm9wVG9QcmltaXRpdmVJc0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MgorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5
cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisub3BUb1ByaW1pdGl2
ZUlzSW1tOgorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9Q
cmltaXRpdmVTbG93Q2FzZToKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fcHJpbWl0
aXZlKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9wbmFtZXM6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfcG5hbWVzKQor
ICAgIGRpc3BhdGNoKDApICMgVGhlIGhlbHBlciBlaXRoZXIgYWR2YW5jZXMgdGhlIFBDIG9yIGp1
bXBzIHVzIHRvIHNvbWV3aGVyZSBlbHNlLgorCisKK19sbGludF9vcF9uZXh0X3BuYW1lOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZGkgMTZbUENd
LCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQwCisgICAgYmllcSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgLm9wTmV4dFBuYW1lRW5kCisgICAgbG9hZGkg
MjBbUENdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAg
bG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9qc1N0cmluZ3NbdDJdLCB0MworICAgIGxv
YWRpIFt0MywgdDAsIDhdLCB0MworICAgIGFkZGkgMSwgdDAKKyAgICBzdG9yZWkgdDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2Vs
bFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQzLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEK
KyAgICBicG5lcSB0MSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVb
dDJdLCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6
bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0Ml0sIHQwCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46
Om1fdmVjdG9yW3QwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5vcE5leHRQbmFtZVRhcmdldAorLm9w
TmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wOgorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3Rv
dHlwZSArIFRhZ09mZnNldFt0MV0sIE51bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2Fk
cCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQxCisgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5l
eHRQbmFtZVNsb3cKKyAgICBhZGRwIDQsIHQwCisgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1l
Q2hlY2tQcm90b3R5cGVMb29wCisub3BOZXh0UG5hbWVUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFu
Y2goMjRbUENdKQorCisub3BOZXh0UG5hbWVFbmQ6CisgICAgZGlzcGF0Y2goNykKKworLm9wTmV4
dFBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV4dF9wbmFtZSkgIyBU
aGlzIGVpdGhlciBrZWVwcyB0aGUgUEMgd2hlcmUgaXQgd2FzIChjYXVzaW5nIHVzIHRvIGxvb3Ap
IG9yIHNldHMgaXQgdG8gdGFyZ2V0LgorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3B1
c2hfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9wdXNoX3Njb3BlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3BvcF9zY29w
ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bv
cF9zY29wZSkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9wdXNoX25ld19zY29wZToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hf
bmV3X3Njb3BlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2NhdGNoOgorICAgICMg
VGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAo
YmVjYXVzZSB0aGUKKyAgICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNl
dCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3Mg
dGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRo
ZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRo
ZSB0aHJvd2luZworICAgICMgY29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93
aW5nIHRvIHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6
OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2Fk
cCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERh
dGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9i
YWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0ds
b2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpT
R2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1w
dHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAgICAg
IAorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdHJhY2VF
eGVjdXRpb24oKSAgIyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50
IHRvIGNsb2JiZXIgdDAsIHQxLCB0MiwgdDMgYWJvdmUuCisgICAgZGlzcGF0Y2goMikKKworCitf
bGxpbnRfb3BfdGhyb3c6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl90aHJvdykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvd19y
ZWZlcmVuY2VfZXJyb3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpCisgICAgZGlzcGF0Y2goMikKKworCitf
bGxpbnRfb3BfanNyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBhZGRpIDMgKiA0LCBQQywgdDEKKyAgICBzdG9yZWkgdDEsIFtjZnIsIHQwLCA4XQorICAg
IGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkcCBbY2ZyLCB0MCwgOF0sIFBD
CisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfZGVidWc6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWJ1ZykKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9wcm9maWxlX3dpbGxfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgYnRweiBKSVRTdGFja0ZyYW1lOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCAu
b3BQcm9maWxlV2lsbENhbGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2Zp
bGVfd2lsbF9jYWxsKQorLm9wUHJvZmlsZVdpbGxDYWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF9wcm9maWxlX2RpZF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBidHB6IEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIC5vcFBy
b2ZpbGVEaWRDYWxsRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcm9maWxlX2Rp
ZF9jYWxsKQorLm9wUHJvZmlsZURpZENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xs
aW50X29wX2VuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZv
ckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAg
ICBkb1JldHVybigpCisKKworX2xsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmU6Cisg
ICAgIyBXaGVuIHRocm93aW5nIGZyb20gdGhlIGludGVycHJldGVyIChpLmUuIHRocm93aW5nIGZy
b20gTExJbnRIZWxwZXJzKSwgc28KKyAgICAjIHRoZSB0aHJvdyB0YXJnZXQgaXMgbm90IG5lY2Vz
c2FyaWx5IGludGVycHJldGVkIGNvZGUsIHdlIGNvbWUgdG8gaGVyZS4KKyAgICAjIFRoaXMgZXNz
ZW50aWFsbHkgZW11bGF0ZXMgdGhlIEpJVCdzIHRocm93aW5nIHByb3RvY29sLgorICAgIGxvYWRw
IEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0
YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdl
dE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKK19sbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFt
cG9saW5lOgorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICBsb2Fk
cCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERh
dGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJn
ZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCisjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2Ug
Y2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KKyMgVGhl
c2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIg
SklULiBXZSBhc3NlcnQKKyMgYXMgbXVjaC4KKworbWFjcm8gbm90U3VwcG9ydGVkKCkKKyAgICBp
ZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBjcmFzaCgpCisgICAgZWxzZQorICAgICAgICAjIFdl
IHNob3VsZCB1c2Ugd2hhdGV2ZXIgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIGluc3RydWN0aW9uIGlz
LCBqdXN0IHRvCisgICAgICAgICMgZW5zdXJlIHRoYXQgdGhlcmUgaXMgYSBnYXAgYmV0d2VlbiBp
bnN0cnVjdGlvbiBsYWJlbHMuIElmIG11bHRpcGxlCisgICAgICAgICMgc21hbGxlc3QgaW5zdHJ1
Y3Rpb25zIGV4aXN0LCB3ZSBzaG91bGQgcGljayB0aGUgb25lIHRoYXQgaXMgbW9zdAorICAgICAg
ICAjIGxpa2VseSByZXN1bHQgaW4gZXhlY3V0aW9uIGJlaW5nIGhhbHRlZC4gQ3VycmVudGx5IHRo
YXQgaXMgdGhlIGJyZWFrCisgICAgICAgICMgaW5zdHJ1Y3Rpb24gb24gYWxsIGFyY2hpdGVjdHVy
ZXMgd2UncmUgaW50ZXJlc3RlZCBpbi4gKEJyZWFrIGlzIGludDMKKyAgICAgICAgIyBvbiBJbnRl
bCwgd2hpY2ggaXMgMSBieXRlLCBhbmQgYmtwdCBvbiBBUk12Nywgd2hpY2ggaXMgMiBieXRlcy4p
CisgICAgICAgIGJyZWFrCisgICAgZW5kCitlbmQKKworX2xsaW50X29wX2dldF9hcnJheV9sZW5n
dGg6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jaGFpbjoKKyAg
ICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbjoKKyAg
ICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9wcm90bzoKKyAg
ICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9zZWxmOgorICAg
IG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RT
dXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9jaGFpbjoKKyAgICBub3RT
dXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9wcm90bzoKKyAgICBub3RT
dXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9zZWxmOgorICAgIG5vdFN1
cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfcHJvdG86CisgICAgbm90U3VwcG9ydGVk
KCkKKworX2xsaW50X29wX2dldF9ieV9pZF9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19s
bGludF9vcF9nZXRfc3RyaW5nX2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRf
b3BfcHV0X2J5X2lkX2dlbmVyaWM6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1
dF9ieV9pZF9yZXBsYWNlOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCisKKyMgSW5kaWNhdGUgdGhlIGVu
ZCBvZiBMTEludC4KK19sbGludF9lbmQ6CisgICAgY3Jhc2goKQorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVy
LmgiCisKKyNpbmNsdWRlICJMTEludEFzc2VtYmx5LmgiCisKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorI2RlZmlu
ZSBMb3dMZXZlbEludGVycHJldGVyX2gKKworI2luY2x1ZGUgIk9wY29kZS5oIgorCisjZGVmaW5l
IExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wob3Bjb2RlLCBsZW5ndGgpIGV4dGVybiAiQyIgdm9pZCBs
bGludF8jI29wY29kZSgpOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChMTElOVF9JTlNUUlVDVElP
Tl9ERUNMKTsKKyN1bmRlZiBMTElOVF9JTlNUUlVDVElPTl9ERUNMCisKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9iZWdpbigpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2VuZCgpOworZXh0ZXJuICJD
IiB2b2lkIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9l
dmFsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxf
cHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJp
dHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9p
bnQoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5l
KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSgp
OworCisjZW5kaWYgLy8gTG93TGV2ZWxJbnRlcnByZXRlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5
MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgU3BlY2lh
bFJlZ2lzdGVyCisgIGRlZiBpbml0aWFsaXplKG5hbWUpCisgICAgQG5hbWUgPSBuYW1lCisgIGVu
ZAorICAKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIEBuYW1lCisgIGVuZAorZW5kCisKK0FSTXY3
X0RBVEFfUkVHID0gU3BlY2lhbFJlZ2lzdGVyLm5ldygiaXAiKQorQVJNdjdfQUREUl9SRUcgPSBT
cGVjaWFsUmVnaXN0ZXIubmV3KCJyMyIpCisKK2RlZiBtb3ZlSW1tZWRpYXRlKHZhbHVlLCByZWdp
c3RlcikKKyAgIyBDdXJyZW50bHkgd2Ugb25seSBoYW5kbGUgdGhlIHNpbXBsZSBjYXNlcywgYW5k
IGZhbGwgYmFjayB0byBtb3YvbW92dCBmb3IgdGhlIGNvbXBsZXggb25lcy4KKyAgaWYgdmFsdWUg
Pj0gMCAmJiB2YWx1ZSA8IDI1NgorICAgICRhc20ucHV0cyAibW92dyBcIyN7dmFsdWV9LCAje3Jl
Z2lzdGVyLmFybVY3T3BlcmFuZH0iCisgIGVsc2lmICh+dmFsdWUpID49IDAgJiYgKH52YWx1ZSkg
PCAyNTYKKyAgICAkYXNtLnB1dHMgIm12bncgXCMje352YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdP
cGVyYW5kfSIKKyAgZWxzZQorICAgICRhc20ucHV0cyAibW92dyBcIyN7dmFsdWUgJiAweGZmZmZ9
LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgICAgaWYgKHZhbHVlICYgMHhmZmZmMDAwMCkg
IT0gMAorICAgICAgJGFzbS5wdXRzICJtb3Z0IFwjI3t2YWx1ZSA+PiAxNn0sICN7cmVnaXN0ZXIu
YXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRAor
ICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAi
cjAiCisgICAgICAicjAiCisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAgICAicjEiCisg
ICAgd2hlbiAidDIiLCAiYTIiCisgICAgICAicjIiCisgICAgd2hlbiAiYTMiCisgICAgICAicjMi
CisgICAgd2hlbiAidDMiCisgICAgICAicjQiCisgICAgd2hlbiAidDQiCisgICAgICAicjciCisg
ICAgd2hlbiAiY2ZyIgorICAgICAgInI1IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5k
CisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBl
bmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFu
ZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZAorICBlbmQK
K2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2Ug
bmFtZQorICAgIHdoZW4gImZ0MCIsICJmciIKKyAgICAgICJkMCIKKyAgICB3aGVuICJmcjEiLAor
ICAgICAgImQxIgorICAgIHdoZW4gImZyMiIKKyAgICAgICJkMiIKKyAgICB3aGVuICJmcjMiCisg
ICAgICAiZDMiCisgICAgd2hlbiAiZnI0IgorICAgICAgImQ0IgorICAgIHdoZW4gImZyNSIKKyAg
ICAgICJkNSIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRl
ZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJt
VjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBk
ZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCitjbGFz
cyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJJbnZhbGlkIGltbWVk
aWF0ZSAje3ZhbHVlfSIgaWYgdmFsdWUgPCAwIG9yIHZhbHVlID4gMjU1CisgICAgIiMke3ZhbHVl
fSIKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisg
IGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVy
YW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkIHNlbGYK
KyAgZW5kCitlbmQKKworbW9kdWxlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworICBkZWYgYXJtVjdM
b2FkU3RvcmVXcmFwCisgICAgc2VsZi5hcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQK
KyAgICAkYXNtLnB1dHMgIlx0bGRyICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFuZH0s
ICN7QVJNdjdfREFUQV9SRUcuYXJtVjdPcGVyYW5kfSIKKyAgICB5aWVsZCBBUk12N19EQVRBX1JF
RworICAgICRhc20ucHV0cyAiXHRzdHIgI3tBUk12N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9LCAj
e3NlbGYuYXJtVjdQb3NzaWJseU1lbW9yeU9wZXJhbmR9IgorICBlbmQKK2VuZAorCitjbGFzcyBB
ZGRyZXNzCisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisKKyAgZGVmIGFybVY3UHJl
cGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIHx8
IG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1ZSwg
QVJNdjdfQUREUl9SRUcpCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVN
ZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVl
ID4gMHhmZmYKKyAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7QVJNdjdfQUREUl9SRUcu
YXJtVjdPcGVyYW5kfV0iCisgICAgZWxzZQorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwg
I3tvZmZzZXQuYXJtVjdPcGVyYW5kfV0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEJh
c2VJbmRleAorICBpbmNsdWRlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworCisgIGRlZiBhcm1WN1By
ZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAg
ICAgbW92ZUltbWVkaWF0ZShvZmZzZXQudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICAgICAgJGFz
bS5wdXRzICJhZGR3ICN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfSwgI3tiYXNlLmFybVY3
T3BlcmFuZH0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlP
cGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAgICJbI3tBUk12N19BRERSX1JF
Ry5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGV9XSIK
KyAgICBlbHNlCisgICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3Bl
cmFuZH0sIGxzbCBcIyN7c2NhbGV9XSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQWJz
b2x1dGVBZGRyZXNzCisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisgIAorICBkZWYg
YXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgbW92ZUltbWVkaWF0ZShhZGRy
ZXNzLnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJs
ZU1lbW9yeU9wZXJhbmQKKyAgICAiWyN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfV0iCisg
IGVuZAorZW5kCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNt
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5y
YgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5y
YgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MyBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisj
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiskOiA8PCBGaWxlLmRpcm5hbWUo
X19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVp
cmUgInBhcnNlciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitj
bGFzcyBBc3NlbWJsZXIKKyAgZGVmIGluaXRpYWxpemUob3V0cCkKKyAgICBAb3V0cCA9IG91dHAK
KyAgICBAc3RhdGUgPSA6Y3BwCisgIGVuZAorICAKKyAgZGVmIGVudGVyQXNtCisgICAgQG91dHAu
cHV0cyAiYXNtICgiCisgICAgQHN0YXRlID0gOmFzbQorICBlbmQKKyAgCisgIGRlZiBsZWF2ZUFz
bQorICAgIEBvdXRwLnB1dHMgIik7IgorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBk
ZWYgaW5Bc20KKyAgICBlbnRlckFzbQorICAgIHlpZWxkCisgICAgbGVhdmVBc20KKyAgZW5kCisg
IAorICBkZWYgcHV0cyhsaW5lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAg
IEBvdXRwLnB1dHMoKGxpbmUgKyAiXG4iKS5pbnNwZWN0KQorICBlbmQKKyAgCisgIGRlZiBjb21t
ZW50KHRleHQpCisgICAgQG91dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgZW5kCitlbmQKKworJGFz
bSA9IEFzc2VtYmxlci5uZXcoJHN0ZG91dCkKKworYXNtRmlsZSA9IEFSR1Yuc2hpZnQKK29mZnNl
dHNGaWxlID0gQVJHVi5zaGlmdAorCithc3QgPSBwYXJzZShsZXgoSU86OnJlYWQoYXNtRmlsZSkp
KQorb2Zmc2V0c0xpc3QsIGNvbmZpZ0luZGV4ID0gb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRl
eChvZmZzZXRzRmlsZSkKKworZm9yU2V0dGluZ3MoY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25z
KGFzdClbY29uZmlnSW5kZXhdLCBhc3QpIHsKKyAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZl
bEFTVCwgYmFja2VuZCB8CisgIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykK
KyAgbG93TGV2ZWxBU1QgPSBsb3dMZXZlbEFTVC5yZXNvbHZlKCpidWlsZE9mZnNldHNNYXAobG93
TGV2ZWxBU1QsIG9mZnNldHNMaXN0KSkKKyAgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3Jl
dGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQpIHsKKyAgICAkYXNtLmluQXNtIHsKKyAg
ICAgIGxvd0xldmVsQVNULmxvd2VyKGJhY2tlbmQpCisgICAgfQorICB9Cit9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDgxNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgQmFzZSB1dGlsaXR5IHR5cGVzIGZvciB0aGUgQVNU
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKworIyBWYWxpZCBtZXRob2RzIGZvciBOb2RlOgorIworIyBub2Rl
LmNoaWxkcmVuIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgaW1tZWRpYXRlIGNoaWxkcmVuLgorIwor
IyBub2RlLmRlc2NlbmRlbnRzIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHN0cmljdCBkZXNj
ZW5kYW50cyAoY2hpbGRyZW4KKyMgICAgIGFuZCBjaGlsZHJlbiBvZiBjaGlsZHJlbiwgdHJhbnNp
dGl2ZWx5KS4KKyMKKyMgbm9kZS5mbGF0dGVuIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmlu
ZyB0aGUgc3RyaWN0IGRlc2NlbmRhbnRzIGFuZAorIyAgICAgdGhlIG5vZGUgaXRzZWxmLgorIwor
IyBub2RlLmZpbHRlcih0eXBlKSAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhvc2Ug
ZWxlbWVudHMgaW4KKyMgICAgIG5vZGUuZmxhdHRlbiB0aGF0IGFyZSBvZiB0aGUgZ2l2ZW4gdHlw
ZSAoaXNfYT8gdHlwZSByZXR1cm5zIHRydWUpLgorIworIyBub2RlLm1hcENoaWxkcmVue3x2fCAu
Li59IC0+IFJldHVybnMgYSBuZXcgbm9kZSB3aXRoIGFsbCBjaGlsZHJlbgorIyAgICAgcmVwbGFj
ZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBibG9jay4KKyMKKyMgRXhhbXBsZXM6CisjCisjIG5v
ZGUuZmlsdGVyKFNldHRpbmcpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHNldHRpbmdzIHRo
YXQgdGhlIEFTVCdzCisjICAgICBJZlRoZW5FbHNlIGJsb2NrcyBkZXBlbmQgb24uCisjCisjIG5v
ZGUuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc3RydWN0
dXJlIG9mZnNldHMKKyMgICAgIHRoYXQgdGhlIEFTVCBkZXBlbmRzIG9uLgorCitjbGFzcyBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luKQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICBlbmQKKyAgCisgIGRlZiBjb2Rl
T3JpZ2luU3RyaW5nCisgICAgImxpbmUgbnVtYmVyICN7QGNvZGVPcmlnaW59IgorICBlbmQKKyAg
CisgIGRlZiBkZXNjZW5kYW50cworICAgIGNoaWxkcmVuLmNvbGxlY3R7fHZ8IHYuZmxhdHRlbn0u
ZmxhdHRlbgorICBlbmQKKyAgCisgIGRlZiBmbGF0dGVuCisgICAgW3NlbGZdICsgZGVzY2VuZGFu
dHMKKyAgZW5kCisgIAorICBkZWYgZmlsdGVyKHR5cGUpCisgICAgZmxhdHRlbi5zZWxlY3R7fHZ8
IHYuaXNfYT8gdHlwZX0KKyAgZW5kCitlbmQKKworY2xhc3MgTm9DaGlsZHJlbiA8IE5vZGUKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQK
KyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
CisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXRLZXkKKyAgYXR0cl9y
ZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShzdHJ1Y3QsIGZpZWxk
KQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisg
IGRlZiBoYXNoCisgICAgQHN0cnVjdC5oYXNoICsgQGZpZWxkLmhhc2ggKiAzCisgIGVuZAorICAK
KyAgZGVmIGVxbD8ob3RoZXIpCisgICAgQHN0cnVjdCA9PSBvdGhlci5zdHJ1Y3QgYW5kIEBmaWVs
ZCA9PSBvdGhlci5maWVsZAorICBlbmQKK2VuZAorICAgIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgQVNUIG5vZGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKworY2xhc3MgU3RydWN0T2Zmc2V0IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCwg
ZmllbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgICAg
QGZpZWxkID0gZmllbGQKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNl
bGYuZm9yRmllbGQoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBrZXkgPSBTdHJ1Y3RP
ZmZzZXRLZXkubmV3KHN0cnVjdCwgZmllbGQpCisgICAgCisgICAgdW5sZXNzIEBAbWFwcGluZ1tr
ZXldCisgICAgICBAQG1hcHBpbmdba2V5XSA9IFN0cnVjdE9mZnNldC5uZXcoY29kZU9yaWdpbiwg
c3RydWN0LCBmaWVsZCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdba2V5XQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIiN7c3RydWN0fTo6I3tmaWVsZH0iCisgIGVuZAorICAKKyAgZGVmIDw9
PihvdGhlcikKKyAgICBpZiBAc3RydWN0ICE9IG90aGVyLnN0cnVjdAorICAgICAgcmV0dXJuIEBz
dHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICAgIGVuZAorICAgIEBmaWVsZCA8PT4gb3RoZXIuZmll
bGQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRl
ciA6c3RydWN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgIGVuZAorICAKKyAgQEBt
YXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgc3RydWN0KQor
ICAgIHVubGVzcyBAQG1hcHBpbmdbc3RydWN0XQorICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBT
aXplb2YubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbc3Ry
dWN0XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgInNpemVvZiAje0BzdHJ1Y3R9IgorICBl
bmQKKyAgCisgIGRlZiA8PT4ob3RoZXIpCisgICAgQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0Cisg
IGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIg
OnZhbHVlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEB2YWx1ZSA9IHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiI3t2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIG90aGVyLmlz
X2E/IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUgPT0gQHZhbHVlCisgIGVuZAorZW5kCisKK2Ns
YXNzIEFkZEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisg
IAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBBZGRJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxl
ZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0
LmR1bXB9ICsgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0
ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBTdWJJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJp
Z2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IC0gI3tyaWdo
dC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0Cisg
ICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQs
IEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBNdWxJbW1lZGlhdGVz
Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICogI3tyaWdodC5kdW1wfSkiCisgIGVu
ZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0ZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxk
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisg
ICAgW0BjaGlsZF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOZWdJbW1lZGlh
dGUubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIigtI3tAY2hpbGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklE
IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFt
ZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBw
aW5nW25hbWVdID0gUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAg
ICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5k
CitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9
CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBA
bWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gRlBSZWdpc3RlcklELm5ldyhj
b2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZSA8IE5v
Q2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAg
ZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tu
YW1lXSA9IFZhcmlhYmxlLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFw
cGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAor
CitjbGFzcyBBZGRyZXNzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFzZSwgOm9mZnNldAorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisgICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQK
KyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwgQG9mZnNldF0KKyAgZW5kCisgIAorICBk
ZWYgbWFwQ2hpbGRyZW4KKyAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2Up
LCAoeWllbGQgQG9mZnNldCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQu
ZHVtcH1bI3tiYXNlLmR1bXB9XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9k
ZQorICBhdHRyX3JlYWRlciA6YmFzZSwgOmluZGV4LCA6c2NhbGUsIDpvZmZzZXQKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisgICAgQGluZGV4ID0gaW5kZXgK
KyAgICBAc2NhbGUgPSBzY2FsZQorICAgIHJhaXNlIHVubGVzcyBbMSwgMiwgNCwgOF0ubWVtYmVy
PyBAc2NhbGUKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVu
CisgICAgW0BiYXNlLCBAaW5kZXgsIEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxk
cmVuCisgICAgQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQg
QGluZGV4KSwgQHNjYWxlLCAoeWllbGQgQG9mZnNldCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiI3tvZmZzZXQuZHVtcH1bI3tiYXNlLmR1bXB9LCAje2luZGV4LmR1bXB9LCAje3NjYWxl
fV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAg
YXR0cl9yZWFkZXIgOmFkZHJlc3MKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGFk
ZHJlc3MpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje2FkZHJlc3MuZHVtcH1bXSIKKyAgZW5kCitlbmQK
KworY2xhc3MgSW5zdHJ1Y3Rpb24gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpvcGNvZGUsIDpvcGVy
YW5kcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgb3Bjb2RlLCBvcGVyYW5kcykK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBvcGNvZGUgPSBvcGNvZGUKKyAgICBAb3BlcmFu
ZHMgPSBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIG9wZXJhbmRzCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIEluc3RydWN0aW9uLm5ldyhj
b2RlT3JpZ2luLCBAb3Bjb2RlLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICJcdCIgKyBvcGNvZGUudG9fcyArICIgIiArIG9wZXJhbmRzLmNvbGxlY3R7
fHZ8IHYuZHVtcH0uam9pbigiLCAiKQorICBlbmQKK2VuZAorCitjbGFzcyBFcnJvciA8IE5vQ2hp
bGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0ZXJyb3IiCisgIGVuZAorZW5kCisKK2Ns
YXNzIENvbnN0RGVjbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnZhcmlhYmxlLCA6dmFsdWUKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEB2YXJpYWJsZSA9IHZhcmlhYmxlCisgICAgQHZhbHVlID0gdmFs
dWUKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQHZhcmlhYmxlLCBAdmFsdWVdCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQ29uc3REZWNsLm5ldyhjb2RlT3JpZ2lu
LCAoeWllbGQgQHZhcmlhYmxlKSwgKHlpZWxkIEB2YWx1ZSkpCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiY29uc3QgI3tAdmFyaWFibGUuZHVtcH0gPSAje0B2YWx1ZS5kdW1wfSIKKyAgZW5k
CitlbmQKKworJGxhYmVsTWFwcGluZyA9IHt9CisKK2NsYXNzIExhYmVsIDwgTm9DaGlsZHJlbgor
ICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFt
ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisg
IGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5n
W25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVz
cyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExhYmVsCisgICAgZWxzZQorICAgICAgJGxhYmVs
TWFwcGluZ1tuYW1lXSA9IExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAg
ICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9
OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9y
ZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisKKyAgQEB1bmlxdWVO
YW1lQ291bnRlciA9IDAKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkK
KyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xs
aXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExvY2FsTGFi
ZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTG9jYWxMYWJlbC5uZXco
Y29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgIGVu
ZAorICAKKyAgZGVmIHNlbGYudW5pcXVlKGNvbW1lbnQpCisgICAgbmV3TmFtZSA9ICJfI3tjb21t
ZW50fSIKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25ld05hbWVdCisgICAgICB3aGlsZSAkbGFiZWxN
YXBwaW5nW25ld05hbWUgPSAiXyN7QEB1bmlxdWVOYW1lQ291bnRlcn1fI3tjb21tZW50fSJdCisg
ICAgICAgIEBAdW5pcXVlTmFtZUNvdW50ZXIgKz0gMQorICAgICAgZW5kCisgICAgZW5kCisgICAg
Zm9yTmFtZShuaWwsIG5ld05hbWUpCisgIGVuZAorICAKKyAgZGVmIGNsZWFuTmFtZQorICAgIGlm
IG5hbWUgPX4gL15cLi8KKyAgICAgICJfIiArIG5hbWVbMS4uLTFdCisgICAgZWxzZQorICAgICAg
bmFtZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBl
bmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxh
YmVsCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVu
CisgICAgW0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBMYWJlbFJl
ZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVm
IG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5u
YW1lCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UgPCBOb0NoaWxkcmVu
CisgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bGFiZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQK
KyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENo
aWxkcmVuCisgICAgTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBs
YWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNl
IDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGlzdAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgbGlzdCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsaXN0ID0gbGlzdAorICBl
bmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIGxpc3QKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hp
bGRyZW4oJnByb2MpCisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIEBsaXN0Lm1hcCgmcHJv
YykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsaXN0LmNvbGxlY3R7fHZ8IHYuZHVtcH0u
am9pbigiXG4iKQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlIDwgTm9DaGlsZHJlbgorICBkZWYg
aW5pdGlhbGl6ZQorICAgIHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNlID0gVHJ1
ZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAg
CisgIGRlZiB2YWx1ZQorICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJ0cnVl
IgorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxp
emUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IEZhbHNlLm5ldwor
ICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVm
IHZhbHVlCisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJmYWxzZSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgVHJ1ZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBUcnVlLmluc3Rh
bmNlCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAgIEZh
bHNlLmluc3RhbmNlCisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcgPCBOb0NoaWxkcmVuCisg
IGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1l
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAg
QEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkK
KyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBTZXR0
aW5nLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQg
PCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxl
ZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4K
KyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBB
bmQubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gYW5kICN7cmlnaHQuZHVtcH0pIgor
ICBlbmQKK2VuZAorCitjbGFzcyBPciA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdo
dAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBl
bmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisg
IGRlZiBtYXBDaGlsZHJlbgorICAgIE9yLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAo
eWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9
IG9yICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBOb3QgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpjaGlsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgY2hpbGQp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAY2hpbGQgPSBjaGlsZAorICBlbmQKKyAgCisg
IGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIE5vdC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiKG5vdCAje2NoaWxkLmR1bXB9KSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgU2tpcCA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0c2tpcCIK
KyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnBy
ZWRpY2F0ZSwgOnRoZW5DYXNlCisgIGF0dHJfYWNjZXNzb3IgOmVsc2VDYXNlCisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHRoZW5DYXNlKQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQHByZWRpY2F0ZSA9IHByZWRpY2F0ZQorICAgIEB0aGVuQ2FzZSA9IHRo
ZW5DYXNlCisgICAgQGVsc2VDYXNlID0gU2tpcC5uZXcoY29kZU9yaWdpbikKKyAgZW5kCisgIAor
ICBkZWYgY2hpbGRyZW4KKyAgICBpZiBAZWxzZUNhc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhl
bkNhc2UsIEBlbHNlQ2FzZV0KKyAgICBlbHNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNl
XQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIElmVGhlbkVsc2Uu
bmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAcHJlZGljYXRlKSwgKHlpZWxkIEB0aGVuQ2FzZSksICh5
aWVsZCBAZWxzZUNhc2UpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImlmICN7cHJlZGlj
YXRlLmR1bXB9XG4iICsgdGhlbkNhc2UuZHVtcCArICJcbmVsc2VcbiIgKyBlbHNlQ2FzZS5kdW1w
ICsgIlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBNYWNybyA8IE5vZGUKKyAgYXR0cl9yZWFk
ZXIgOm5hbWUsIDp2YXJpYWJsZXMsIDpib2R5CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
bmFtZSA9IG5hbWUKKyAgICBAdmFyaWFibGVzID0gdmFyaWFibGVzCisgICAgQGJvZHkgPSBib2R5
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgQHZhcmlhYmxlcyArIFtAYm9keV0KKyAg
ZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBNYWNyby5uZXcoY29kZU9yaWdpbiwgQG5h
bWUsIEB2YXJpYWJsZXMubWFwe3x2fCB5aWVsZCB2fSwgKHlpZWxkIEBib2R5KSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICJtYWNybyAje25hbWV9KCIgKyB2YXJpYWJsZXMuY29sbGVjdHt8
dnwgdi5kdW1wfS5qb2luKCIsICIpICsgIilcbiIgKyBib2R5LmR1bXAgKyAiXG5lbmQiCisgIGVu
ZAorZW5kCisKK2NsYXNzIE1hY3JvQ2FsbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5hbWUsIDpv
cGVyYW5kcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgICBAb3BlcmFuZHMg
PSBvcGVyYW5kcworICAgIHJhaXNlIHVubGVzcyBAb3BlcmFuZHMKKyAgICBAb3BlcmFuZHMuZWFj
aHt8dnwgcmFpc2UgdW5sZXNzIHZ9CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgQG9w
ZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIE1hY3JvQ2Fs
bC5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIlx0I3tuYW1lfSgiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5k
dW1wfS5qb2luKCIsICIpICsgIikiCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsODAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVp
cmUgImFzdCIKK3JlcXVpcmUgIng4NiIKKworQkFDS0VORFMgPQorICBbCisgICAiWDg2IiwKKyAg
ICJBUk12NyIKKyAgXQorCitXT1JLSU5HX0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIKKyAgXQor
CitCQUNLRU5EX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoJyArIEJBQ0tFTkRTLmpvaW4oJyl8
KCcpICsgJylcXFonKQorCitjbGFzcyBOb2RlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIHNlbmQo
Imxvd2VyIiArIG5hbWUpCisgIGVuZAorZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBsb3dlcigpIGZv
ciB0aG9zZSBub2RlcyB0aGF0IGFyZSBiYWNrZW5kLWFnbm9zdGljCisKK2RlZiBzYW5pdGl6ZUxh
YmVsTmFtZShuYW1lKQorICAjIFNvbWUgcGxhdGZvcm1zIGRvbid0IHdhbnQgdGhlIGxlYWRpbmcg
Il8iLiBJZiB3ZSBldmVyIHdhbnQgdG8gZG8gc29tZXRoaW5nCisgICMgYWJvdXQgdGhhdCwgaXQg
d291bGQgYmUgaGVyZS4KKyAgbmFtZQorZW5kCisKK2NsYXNzIExhYmVsCisgIGRlZiBsb3dlcihu
YW1lKQorICAgICRhc20ucHV0cyAiLmdsb2JsICN7c2FuaXRpemVMYWJlbE5hbWUoc2VsZi5uYW1l
KX0iCisgICAgJGFzbS5wdXRzICIje3Nhbml0aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9OiIKKyAg
ZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNt
LnB1dHMgIl9fb2FfI3tzZWxmLm5hbWVbMS4uLTFdfToiCisgIGVuZAorZW5kCisKK2NsYXNzIFNr
aXAKKyAgZGVmIGxvd2VyKG5hbWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRl
ZiBsb3dlcihuYW1lKQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBub2RlIHwKKyAgICAgIG5v
ZGUubG93ZXIobmFtZSkKKyAgICB9CisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4
dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjUgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNr
ZW5kcyIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZXR0
aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworZGVmIGVtaXRNYWdpY051bWJlcgorICBPRkZT
RVRfTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICB8IG51bWJlciB8CisgICAgcHV0cyAiI3tudW1i
ZXJ9LCIKKyAgfQorZW5kCisKK29yaWdpbmFsQVNUID0gcGFyc2UobGV4KCRzdGRpbi5yZWFkKSkK
KworZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKG9yaWdpbmFsQVNUKSB7CisgIHwgc2V0dGlu
Z3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfAorICBvZmZzZXRzTGlzdCA9IGFzdC5maWx0ZXIoU3Ry
dWN0T2Zmc2V0KS51bmlxLnNvcnQKKyAgc2l6ZXNMaXN0ID0gYXN0LmZpbHRlcihTaXplb2YpLnVu
aXEuc29ydAorICAKKyAgbGVuZ3RoID0gKE9GRlNFVF9NQUdJQ19OVU1CRVJTLnNpemUgKyAxKSAq
ICgxICsgb2Zmc2V0c0xpc3Quc2l6ZSArIHNpemVzTGlzdC5zaXplKQorICAKKyAgcHV0cyAic3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICBlbWl0
TWFnaWNOdW1iZXIKKyAgcHV0cyAiI3tpbmRleH0sIgorICBvZmZzZXRzTGlzdC5lYWNoIHsKKyAg
ICB8IG9mZnNldCB8CisgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgcHV0cyAiT0ZGTElORV9BU01f
T0ZGU0VUT0YoI3tvZmZzZXQuc3RydWN0fSwgI3tvZmZzZXQuZmllbGR9KSwiCisgIH0KKyAgc2l6
ZXNMaXN0LmVhY2ggeworICAgIHwgb2Zmc2V0IHwKKyAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICBw
dXRzICJzaXplb2YoI3tvZmZzZXQuc3RydWN0fSksIgorICB9CisgIHB1dHMgIn07IgorfQorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25z
LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5z
dHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4OCBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworTUFDUk9fSU5TVFJVQ1RJT05TID0KKyAgWworICAg
ImFkZGkiLAorICAgImFuZGkiLAorICAgImxzaGlmdGkiLAorICAgIm11bGkiLAorICAgIm5lZ2ki
LAorICAgIm5vdGkiLAorICAgIm9yaSIsCisgICAicnNoaWZ0aSIsCisgICAidXJzaGlmdGkiLAor
ICAgInN1YmkiLAorICAgInhvcmkiLAorICAgImxvYWRpIiwKKyAgICJsb2FkYiIsCisgICAibG9h
ZGgiLAorICAgInN0b3JlaSIsCisgICAic3RvcmViIiwKKyAgICJsb2FkZCIsCisgICAibW92ZWQi
LAorICAgInN0b3JlZCIsCisgICAiYWRkZCIsCisgICAiZGl2ZCIsCisgICAic3ViZCIsCisgICAi
bXVsZCIsCisgICAic3FydGQiLAorICAgImNpMmQiLAorICAgImZpaTJkIiwgIyB1c2FnZTogZmlp
MmQgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWdu
aWZpY2FudCBiaXRzPiwgPGZwcj4KKyAgICJmZDJpaSIsICMgdXNhZ2U6IGZkMmlpIDxmcHI+LCA8
Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmlj
YW50IGJpdHM+CisgICAiYmRlcSIsCisgICAiYmRuZXEiLAorICAgImJkZ3QiLAorICAgImJkZ3Rl
cSIsCisgICAiYmRsdCIsCisgICAiYmRsdGVxIiwKKyAgICJiZGVxdW4iLAorICAgImJkbmVxdW4i
LAorICAgImJkZ3R1biIsCisgICAiYmRndGVxdW4iLAorICAgImJkbHR1biIsCisgICAiYmRsdGVx
dW4iLAorICAgImJ0ZDJpIiwKKyAgICJ0ZDJpIiwKKyAgICJiY2QyaSIsCisgICAibW92ZHoiLAor
ICAgInBvcCIsCisgICAicHVzaCIsCisgICAibW92ZSIsCisgICAic3hpMnAiLAorICAgInp4aTJw
IiwKKyAgICJub3AiLAorICAgImJpZXEiLAorICAgImJpbmVxIiwKKyAgICJiaWEiLAorICAgImJp
YWVxIiwKKyAgICJiaWIiLAorICAgImJpYmVxIiwKKyAgICJiaWd0IiwKKyAgICJiaWd0ZXEiLAor
ICAgImJpbHQiLAorICAgImJpbHRlcSIsCisgICAiYmJlcSIsCisgICAiYmJuZXEiLAorICAgImJi
YSIsCisgICAiYmJhZXEiLAorICAgImJiYiIsCisgICAiYmJiZXEiLAorICAgImJiZ3QiLAorICAg
ImJiZ3RlcSIsCisgICAiYmJsdCIsCisgICAiYmJsdGVxIiwKKyAgICJidGlvIiwKKyAgICJidGlz
IiwKKyAgICJidGl6IiwKKyAgICJidGlueiIsCisgICAiYnRibyIsCisgICAiYnRicyIsCisgICAi
YnRieiIsCisgICAiYnRibnoiLAorICAgImptcCIsCisgICAiYmFkZGlvIiwKKyAgICJiYWRkaXMi
LAorICAgImJhZGRpeiIsCisgICAiYmFkZGlueiIsCisgICAiYnN1YmlvIiwKKyAgICJic3ViaXMi
LAorICAgImJzdWJpeiIsCisgICAiYnN1YmlueiIsCisgICAiYm11bGlvIiwKKyAgICJibXVsaXMi
LAorICAgImJtdWxpeiIsCisgICAiYm11bGlueiIsCisgICAiYm9yaW8iLAorICAgImJvcmlzIiwK
KyAgICJib3JpeiIsCisgICAiYm9yaW56IiwKKyAgICJicmVhayIsCisgICAiY2FsbCIsCisgICAi
cmV0IiwKKyAgICJjaWVxIiwKKyAgICJjaW5lcSIsCisgICAiY2lhIiwKKyAgICJjaWFlcSIsCisg
ICAiY2liIiwKKyAgICJjaWJlcSIsCisgICAiY2lndCIsCisgICAiY2lndGVxIiwKKyAgICJjaWx0
IiwKKyAgICJjaWx0ZXEiLAorICAgInRpbyIsCisgICAidGlzIiwKKyAgICJ0aXoiLAorICAgInRp
bnoiLAorICAgInRibyIsCisgICAidGJzIiwKKyAgICJ0YnoiLAorICAgInRibnoiLAorICAgInBl
ZWsiLAorICAgInBva2UiLAorICAgImJwZXEiLAorICAgImJwbmVxIiwKKyAgICJicGEiLAorICAg
ImJwYWVxIiwKKyAgICJicGIiLAorICAgImJwYmVxIiwKKyAgICJicGd0IiwKKyAgICJicGd0ZXEi
LAorICAgImJwbHQiLAorICAgImJwbHRlcSIsCisgICAiYWRkcCIsCisgICAiYW5kcCIsCisgICAi
b3JwIiwKKyAgICJzdWJwIiwKKyAgICJ4b3JwIiwKKyAgICJsb2FkcCIsCisgICAiY3BlcSIsCisg
ICAiY3BuZXEiLAorICAgImNwYSIsCisgICAiY3BhZXEiLAorICAgImNwYiIsCisgICAiY3BiZXEi
LAorICAgImNwZ3QiLAorICAgImNwZ3RlcSIsCisgICAiY3BsdCIsCisgICAiY3BsdGVxIiwKKyAg
ICJzdG9yZXAiLAorICAgImJ0cG8iLAorICAgImJ0cHMiLAorICAgImJ0cHoiLAorICAgImJ0cG56
IiwKKyAgICJiYWRkcG8iLAorICAgImJhZGRwcyIsCisgICAiYmFkZHB6IiwKKyAgICJiYWRkcG56
IgorICBdCisKK1g4Nl9JTlNUUlVDVElPTlMgPQorICBbCisgICAiY2RxaSIsCisgICAiaWRpdmki
CisgIF0KKworSU5TVFJVQ1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05TICsgWDg2X0lOU1RSVUNU
SU9OUworCitJTlNUUlVDVElPTl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgSU5TVFJV
Q1RJT05TLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3Rh
bnRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
b2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01BR0lDX05VTUJFUlMg
PSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTU2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJh
c3QiCityZXF1aXJlICJvZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cyIKKworT0ZGU0VUX01BR0lD
X05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBvZmZzZXRzTGlzdChhc3QpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIHNpemVzTGlzdChhc3QpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBSZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCBzaXplcyB1c2VkIGJ5
IHRoZSBBU1QuICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworCitkZWYgb2Zmc2V0c0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCku
dW5pcS5zb3J0CitlbmQKKworZGVmIHNpemVzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU2l6ZW9m
KS51bmlxLnNvcnQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBv
ZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGFzdCwgZmlsZSkgLT4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjICAgICBbb2Zmc2V0cywgaW5kZXhdICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBQYXJzZXMg
dGhlIG9mZnNldHMgZnJvbSBhIGZpbGUgYW5kIHJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5k
IHRoZSAjCisjIGluZGV4IG9mIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgaXMgdmFsaWQgaW4gdGhp
cyBidWlsZCB0YXJnZXQuICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisKK2RlZiBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUpCisgIGluZGV4ID0gbmls
CisgIG9mZnNldHMgPSBbXQorICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBuaWwKKyAgCisgIGRl
ZiByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICBieXRlcyA9IFtdCisgICAgNC50aW1lcyB7
CisgICAgICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQorICAgIH0KKyAgICAKKyAgICBpZiBlbmRpYW5u
ZXNzID09IDpsaXR0bGUKKyAgICAgICMgTGl0dGxlIGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8
IDAgfAorICAgICAgIGJ5dGVzWzFdIDw8IDggfAorICAgICAgIGJ5dGVzWzJdIDw8IDE2IHwKKyAg
ICAgICBieXRlc1szXSA8PCAyNCkKKyAgICBlbHNlCisgICAgICAjIEJpZyBlbmRpYW4KKyAgICAg
IChieXRlc1swXSA8PCAyNCB8CisgICAgICAgYnl0ZXNbMV0gPDwgMTYgfAorICAgICAgIGJ5dGVz
WzJdIDw8IDggfAorICAgICAgIGJ5dGVzWzNdIDw8IDApCisgICAgZW5kCisgIGVuZAorICAKKyAg
WzpsaXR0bGUsIDpiaWddLmVhY2ggeworICAgIHwgZW5kaWFubmVzcyB8CisgICAgbWFnaWNCeXRl
cyA9IFtdCisgICAgTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICAgIHwgbnVtYmVyIHwKKyAgICAg
IGN1cnJlbnRCeXRlcyA9IFtdCisgICAgICA0LnRpbWVzIHsKKyAgICAgICAgY3VycmVudEJ5dGVz
IDw8IChudW1iZXIgJiAweGZmKQorICAgICAgICBudW1iZXIgPj49IDgKKyAgICAgIH0KKyAgICAg
IGlmIGVuZGlhbm5lc3MgPT0gOmJpZworICAgICAgICBjdXJyZW50Qnl0ZXMucmV2ZXJzZSEKKyAg
ICAgIGVuZAorICAgICAgbWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0ZXMKKyAgICB9CisgICAgCisg
ICAgRmlsZS5vcGVuKGZpbGUsICJyIikgeworICAgICAgfCBpbnAgfAorICAgICAgd2hlcmVJbk1h
cmtlciA9IDAKKyAgICAgIGxvb3AgeworICAgICAgICBieXRlID0gaW5wLmdldGJ5dGUKKyAgICAg
ICAgYnJlYWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgaWYgYnl0ZSA9PSBtYWdpY0J5dGVzW3doZXJl
SW5NYXJrZXJdCisgICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisgICAgICAgICAgaWYgd2hl
cmVJbk1hcmtlciA9PSBtYWdpY0J5dGVzLnNpemUKKyAgICAgICAgICAgICMgV2UgaGF2ZSBhIG1h
dGNoISBJZiB3ZSBoYXZlIG5vdCB5ZXQgcmVhZCB0aGUgZW5kaWFubmVzcyBtYXJrZXIgYW5kIGlu
ZGV4LAorICAgICAgICAgICAgIyB0aGVuIHJlYWQgdGhvc2Ugbm93OyBvdGhlcndpc2UgcmVhZCBh
biBvZmZzZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIG5vdCBpbmRleAorICAgICAg
ICAgICAgICBpbmRleCA9IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICBvZmZzZXRzIDw8IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAg
ICAgICAgICAgZW5kCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAw
CisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICB3aGVyZUluTWFya2VyID0g
MAorICAgICAgICBlbmQKKyAgICAgIH0KKyAgICB9CisgICAgCisgICAgYnJlYWsgaWYgaW5kZXgK
KyAgfQorICAKKyAgcmFpc2UgdW5sZXNzIGluZGV4CisgIAorICBbb2Zmc2V0cywgaW5kZXhdCitl
bmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgYnVpbGRPZmZzZXRzTWFw
KGFzdCwgb2Zmc2V0c0xpc3QpIC0+IFtvZmZzZXRzLCBzaXplc10gICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIEJ1aWxkcyBhIG1hcHBpbmcgYmV0d2VlbiBTdHJ1Y3RPZmZzZXQg
bm9kZXMgYW5kIHRoZWlyIHZhbHVlcy4gICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisKK2RlZiBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkKKyAgb2Zm
c2V0c01hcCA9IHt9CisgIHNpemVzTWFwID0ge30KKyAgYXN0T2Zmc2V0c0xpc3QgPSBvZmZzZXRz
TGlzdChhc3QpCisgIGFzdFNpemVzTGlzdCA9IHNpemVzTGlzdChhc3QpCisgIHJhaXNlIHVubGVz
cyBhc3RPZmZzZXRzTGlzdC5zaXplICsgYXN0U2l6ZXNMaXN0LnNpemUgPT0gb2Zmc2V0c0xpc3Qu
c2l6ZQorICBvZmZzZXRzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBzdHJ1Y3RP
ZmZzZXQsIGluZGV4IHwKKyAgICBvZmZzZXRzTWFwW3N0cnVjdE9mZnNldF0gPSBvZmZzZXRzTGlz
dC5zaGlmdAorICB9CisgIHNpemVzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBz
aXplb2YsIGluZGV4IHwKKyAgICBzaXplc01hcFtzaXplb2ZdID0gb2Zmc2V0c0xpc3Quc2hpZnQK
KyAgfQorICBbb2Zmc2V0c01hcCwgc2l6ZXNNYXBdCitlbmQKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1OTEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUg
ImFzdCIKK3JlcXVpcmUgImluc3RydWN0aW9ucyIKK3JlcXVpcmUgInJlZ2lzdGVycyIKKworY2xh
c3MgVG9rZW4KKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4sIDpzdHJpbmcKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cmluZykKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmln
aW4KKyAgICBAc3RyaW5nID0gc3RyaW5nCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAg
IGlmIG90aGVyLmlzX2E/IFRva2VuCisgICAgICBAc3RyaW5nID09IG90aGVyLnN0cmluZworICAg
IGVsc2UKKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYg
PX4ob3RoZXIpCisgICAgQHN0cmluZyA9fiBvdGhlcgorICBlbmQKKyAgCisgIGRlZiB0b19zCisg
ICAgIiN7QHN0cmluZy5pbnNwZWN0fSBhdCBsaW5lICN7Y29kZU9yaWdpbn0iCisgIGVuZAorICAK
KyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAg
IHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiUGFy
c2UgZXJyb3I6ICN7dG9fc306ICN7Y29tbWVudFswXX0iCisgICAgZW5kCisgIGVuZAorZW5kCisK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBsZXhlci4gVGFrZXMgYSBz
dHJpbmcgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdG9rZW5zLiAgICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBsZXgoc3RyKQorICByZXN1bHQgPSBb
XQorICBsaW5lTnVtYmVyID0gMQorICB3aGlsZSBub3Qgc3RyLmVtcHR5PworICAgIGNhc2Ugc3Ry
CisgICAgd2hlbiAvXEFcIyhbXlxuXSopLworICAgICAgIyBjb21tZW50LCBpZ25vcmUKKyAgICB3
aGVuIC9cQVxuLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAg
ICAgIGxpbmVOdW1iZXIgKz0gMQorICAgIHdoZW4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKikv
CisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xB
XC4oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIs
ICQmKQorICAgIHdoZW4gL1xBXyhbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tl
bi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEEoWyBcdF0rKS8KKyAgICAgICMgd2hp
dGVzcGFjZSwgaWdub3JlCisgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSspLworICAgICAgcmVz
dWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAgICB3aGVuIC9cQTAo
WzAtN10rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYub2N0LnRv
X3MpCisgICAgd2hlbiAvXEEoWzAtOV0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGlu
ZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEE6Oi8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXco
bGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFbOixcKFwpXFtcXT1cK1wtKl0vCisgICAgICBy
ZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIGVsc2UKKyAgICAgIHJhaXNl
ICJMZXhlciBlcnJvciBhdCBsaW5lIG51bWJlciAje2xpbmVOdW1iZXJ9LCB1bmV4cGVjdGVkIHNl
cXVlbmNlICN7c3RyWzAuLjIwXS5pbnNwZWN0fSIKKyAgICBlbmQKKyAgICBzdHIgPSAkfi5wb3N0
X21hdGNoCisgIGVuZAorICByZXN1bHQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyBUb2tlbiBpZGVudGlmaWNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworCitkZWYgaXNSZWdpc3Rlcih0b2tlbikKKyAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTgor
ZW5kCisKK2RlZiBpc0luc3RydWN0aW9uKHRva2VuKQorICB0b2tlbiA9fiBJTlNUUlVDVElPTl9Q
QVRURVJOCitlbmQKKworZGVmIGlzS2V5d29yZCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBKCh0cnVl
KXwoZmFsc2UpfChpZil8KHRoZW4pfChlbHNlKXwoZWxzaWYpfChlbmQpfChhbmQpfChvcil8KG5v
dCl8KG1hY3JvKXwoY29uc3QpfChzaXplb2YpfChlcnJvcikpXFovIG9yCisgICAgdG9rZW4gPX4g
UkVHSVNURVJfUEFUVEVSTiBvcgorICAgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2Vu
ZAorCitkZWYgaXNJZGVudGlmaWVyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbYS16QS1aXShbYS16
QS1aMC05X10qKVxaLyBhbmQgbm90IGlzS2V5d29yZCh0b2tlbikKK2VuZAorCitkZWYgaXNMYWJl
bCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXyhbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBp
c0xvY2FsTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQVwuKFthLXpBLVowLTlfXSopXFovCitl
bmQKKworZGVmIGlzVmFyaWFibGUodG9rZW4pCisgIGlzSWRlbnRpZmllcih0b2tlbikgb3IgaXNS
ZWdpc3Rlcih0b2tlbikKK2VuZAorCitkZWYgaXNJbnRlZ2VyKHRva2VuKQorICB0b2tlbiA9fiAv
XEFbMC05XS8KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUg
cGFyc2VyLiBUYWtlcyBhbiBhcnJheSBvZiB0b2tlbnMgYW5kIHJldHVybnMgYW4gQVNULiBNZXRo
b2RzICAgICAjCisjIG90aGVyIHRoYW4gcGFyc2UodG9rZW5zKSBhcmUgbm90IGZvciBwdWJsaWMg
Y29uc3VtcHRpb24uICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisKK2NsYXNzIFBhcnNlcgorICBkZWYgaW5pdGlhbGl6ZSh0b2tlbnMpCisgICAgQHRva2Vu
cyA9IHRva2VucworICAgIEBpZHggPSAwCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNv
bW1lbnQpCisgICAgaWYgQHRva2Vuc1tAaWR4XQorICAgICAgQHRva2Vuc1tAaWR4XS5wYXJzZUVy
cm9yKCpjb21tZW50KQorICAgIGVsc2UKKyAgICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICAg
IHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZSIKKyAgICAgIGVsc2UKKyAgICAgICAg
cmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlOiAje2NvbW1lbnRbMF19IgorICAgICAg
ZW5kCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGNvbnN1bWUocmVnZXhwKQorICAgIGlmIHJl
Z2V4cAorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9fiByZWdleHAKKyAg
ICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAaWR4ID09IEB0b2tlbnMubGVuZ3RoCisg
ICAgZW5kCisgICAgQGlkeCArPSAxCisgIGVuZAorICAKKyAgZGVmIHNraXBOZXdMaW5lCisgICAg
d2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9
PSAibm90IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICBl
bHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3
TGluZQorICAgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAor
ICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInRydWUiCisgICAgICByZXN1bHQgPSBUcnVlLmlu
c3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gImZhbHNlIgorICAgICAgcmVzdWx0ID0gRmFsc2UuaW5zdGFuY2UKKyAgICAgIEBp
ZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlk
eF0KKyAgICAgIHJlc3VsdCA9IFNldHRpbmcuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQK
KyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBh
cnNlUHJlZGljYXRlQW5kCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgd2hp
bGUgQHRva2Vuc1tAaWR4XSA9PSAiYW5kIgorICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAg
cmlnaHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgIHJlc3VsdCA9IEFuZC5uZXcoY29kZU9y
aWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBk
ZWYgcGFyc2VQcmVkaWNhdGUKKyAgICAjIHNvbWUgZXhhbXBsZXMgb2YgcHJlY2VkZW5jZToKKyAg
ICAjIG5vdCBhIGFuZCBiIC0+IChub3QgYSkgYW5kIGIKKyAgICAjIGEgYW5kIGIgb3IgYyAtPiAo
YSBhbmQgYikgb3IgYworICAgICMgYSBvciBiIGFuZCBjIC0+IGEgb3IgKGIgYW5kIGMpCisgICAg
CisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhd
ID09ICJvciIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAg
ICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVk
aWNhdGVBbmQKKyAgICAgIHJlc3VsdCA9IE9yLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0
KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVZhcmlhYmxlCisg
ICAgaWYgaXNSZWdpc3RlcihAdG9rZW5zW0BpZHhdKQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9
fiBGUFJfUEFUVEVSTgorICAgICAgICByZXN1bHQgPSBGUFJlZ2lzdGVySUQuZm9yTmFtZShAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgZWxzZQor
ICAgICAgICByZXN1bHQgPSBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzSWRlbnRp
ZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgcmVzdWx0ID0gVmFyaWFibGUuZm9yTmFtZShAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgIGVsc2UKKyAg
ICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5k
CisgIAorICBkZWYgcGFyc2VBZGRyZXNzKG9mZnNldCkKKyAgICBwYXJzZUVycm9yIHVubGVzcyBA
dG9rZW5zW0BpZHhdID09ICJbIgorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4KKyAgICAKKyAgICAjIFRocmVlIHBvc3NpYmlsaXRpZXM6CisgICAgIyBbXSAgICAgICAt
PiBBYnNvbHV0ZUFkZHJlc3MKKyAgICAjIFthXSAgICAgIC0+IEFkZHJlc3MKKyAgICAjIFthLGJd
ICAgIC0+IEJhc2VJbmRleCB3aXRoIHNjYWxlID0gMQorICAgICMgW2EsYixjXSAgLT4gQmFzZUlu
ZGV4CisgICAgCisgICAgQGlkeCArPSAxCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAg
ICAgIEBpZHggKz0gMQorICAgICAgcmV0dXJuIEFic29sdXRlQWRkcmVzcy5uZXcoY29kZU9yaWdp
biwgb2Zmc2V0KQorICAgIGVuZAorICAgIGEgPSBwYXJzZVZhcmlhYmxlCisgICAgaWYgQHRva2Vu
c1tAaWR4XSA9PSAiXSIKKyAgICAgIHJlc3VsdCA9IEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIGEs
IG9mZnNldCkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhd
ID09ICIsIgorICAgICAgQGlkeCArPSAxCisgICAgICBiID0gcGFyc2VWYXJpYWJsZQorICAgICAg
aWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhj
b2RlT3JpZ2luLCBhLCBiLCAxLCBvZmZzZXQpCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJy
b3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBwYXJzZUVycm9yIHVubGVzcyBbIjEiLCAiMiIsICI0IiwgIjgiXS5tZW1iZXI/IEB0b2tlbnNb
QGlkeF0uc3RyaW5nCisgICAgICAgIGMgPSBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pCisgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09
ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIGMs
IG9mZnNldCkKKyAgICAgIGVuZAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICAgIHJlc3VsdAor
ICBlbmQKKyAgCisgIGRlZiBwYXJzZUNvbG9uQ29sb24KKyAgICBza2lwTmV3TGluZQorICAgIGNv
ZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICBwYXJzZUVycm9yIHVubGVz
cyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgIG5hbWVzID0gW0B0b2tlbnNbQGlkeF0u
c3RyaW5nXQorICAgIEBpZHggKz0gMQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIjo6Igor
ICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRv
a2Vuc1tAaWR4XQorICAgICAgbmFtZXMgPDwgQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgIEBp
ZHggKz0gMQorICAgIGVuZAorICAgIHJhaXNlIGlmIG5hbWVzLmVtcHR5PworICAgIFtjb2RlT3Jp
Z2luLCBuYW1lc10KKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHNr
aXBOZXdMaW5lCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgTmVnSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCBwYXJz
ZUV4cHJlc3Npb25BdG9tKQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICBA
aWR4ICs9IDEKKyAgICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAgcGFyc2VFcnJv
ciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVz
dWx0CisgICAgZWxzaWYgaXNJbnRlZ2VyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IElt
bWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmlu
Zy50b19pKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lkZW50
aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9u
Q29sb24KKyAgICAgIGlmIG5hbWVzLnNpemUgPiAxCisgICAgICAgIFN0cnVjdE9mZnNldC5mb3JG
aWVsZChjb2RlT3JpZ2luLCBuYW1lc1swLi4tMl0uam9pbignOjonKSwgbmFtZXNbLTFdKQorICAg
ICAgZWxzZQorICAgICAgICBWYXJpYWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzWzBdKQor
ICAgICAgZW5kCisgICAgZWxzaWYgaXNSZWdpc3RlciBAdG9rZW5zW0BpZHhdCisgICAgICBwYXJz
ZVZhcmlhYmxlCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIgorICAgICAgQGlk
eCArPSAxCisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAg
U2l6ZW9mLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXMuam9pbignOjonKSkKKyAgICBlbHNlCisg
ICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lv
bk11bAorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uQXRvbQor
ICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICIqIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gTXVsSW1tZWRpYXRlcy5u
ZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25B
dG9tKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5kCisgICAg
cmVzdWx0CisgIGVuZAorICAKKyAgZGVmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgQHRva2Vuc1tA
aWR4XSA9PSAiLSIgb3IgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIiBvciBpc0ludGVnZXIoQHRv
a2Vuc1tAaWR4XSkgb3IgaXNWYXJpYWJsZShAdG9rZW5zW0BpZHhdKQorICBlbmQKKyAgCisgIGRl
ZiBwYXJzZUV4cHJlc3Npb24KKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhw
cmVzc2lvbk11bAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0b2tlbnNbQGlk
eF0gPT0gIi0iCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgcmVzdWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0u
Y29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNpZiBAdG9r
ZW5zW0BpZHhdID09ICItIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gU3Vi
SW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJz
ZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAg
ICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1lbnQp
CisgICAgaWYgY291bGRCZUV4cHJlc3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24K
KyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRkcmVzcyhleHBy
KQorICAgICAgZWxzZQorICAgICAgICBleHByCisgICAgICBlbmQKKyAgICBlbHNpZiBAdG9rZW5z
W0BpZHhdID09ICJbIgorICAgICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luLCAwKSkKKyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0KKyAg
ICAgIHJlc3VsdCA9IExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4s
IExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0
cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzTG9jYWxM
YWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVmZXJlbmNlLm5l
dyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50KQorICAgIGVu
ZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tpcE5ld0xpbmUK
KyAgICBjb25zdW1lKC9cQVwoXFovKQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAgbG9vcCB7Cisg
ICAgICBza2lwTmV3TGluZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAg
QGlkeCArPSAxCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vu
c1tAaWR4XSkKKyAgICAgICAgdmFyaWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAx
CisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vu
c1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAg
ICAgIHBhcnNlRXJyb3IKKyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJy
b3IKKyAgICAgIGVuZAorICAgIH0KKyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAorICBkZWYgcGFy
c2VTZXF1ZW5jZShmaW5hbCwgY29tbWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4gPSBAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4KKyAgICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAgICAgIGlmIChA
aWR4ID09IEB0b2tlbnMubGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQgQHRva2Vu
c1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gIlxuIgorICAgICAgICAjIGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVs
c2lmIEB0b2tlbnNbQGlkeF0gPT0gImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
cGFyc2VFcnJvciB1bmxlc3MgaXNWYXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAgICAgIHZhcmlh
YmxlID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNb
QGlkeF0uc3RyaW5nKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxl
c3MgQHRva2Vuc1tAaWR4XSA9PSAiPSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhbHVl
ID0gcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5uYW1lfSIp
CisgICAgICAgIGxpc3QgPDwgQ29uc3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4s
IHZhcmlhYmxlLCB2YWx1ZSkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImVycm9yIgor
ICAgICAgICBsaXN0IDw8IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4pCisgICAg
ICAgIEBpZHggKz0gMQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAgICAg
IGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAx
CisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRl
CisgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgc2tpcE5ld0xp
bmUKKyAgICAgICAgaWZUaGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRp
Y2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUg
aW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBsaXN0IDw8IGlm
VGhlbkVsc2UKKyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisgICAgICAg
ICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQ
cmVkaWNhdGUKKyAgICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVP
cmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikp
XFovLCAid2hpbGUgaW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAg
ICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlmVGhlbkVsc2Ug
PSBlbHNlQ2FzZQorICAgICAgICBlbmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiZWxz
ZSIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0g
cGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNlIGZvciBc
ImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBl
bHNlCisgICAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiZW5kIgor
ICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gIm1hY3JvIgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwYXJz
ZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgbmFtZSA9
IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YXJpYWJs
ZXMgPSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9c
QWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIGxpc3QgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxl
cywgYm9keSkKKyAgICAgIGVsc2lmIGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAgICAg
ICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBA
dG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgKG5vdCBm
aW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4
XSA9fiBmaW5hbCkKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5kIGl0
J3MgdGhlIGxhc3Qgb25lLgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVP
cmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gIlxuIgorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLgorICAg
ICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBJdCdzIGRlZmluaXRl
bHkgYW4gaW5zdHJ1Y3Rpb24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJhbmQuCisgICAg
ICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxzZQorICAg
ICAgICAgIGxvb3AgeworICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGls
ZSBpbnNpZGUgb2YgaW5zdHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICBpZiAobm90IGZp
bmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhd
ID1+IGZpbmFsKQorICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uIGFu
ZCBvZiB0aGUgc2VxdWVuY2UuCisgICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSB0cnVlCisg
ICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIs
IgorICAgICAgICAgICAgICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAg
ICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICBwYXJzZUVycm9yKCJFeHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFsfSBhZnRl
ciAje29wZXJhbmRzLmxhc3QuZHVtcH0iKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgfQor
ICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJh
bmRzKQorICAgICAgICAgIGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJyZWFrCisgICAg
ICAgICAgZW5kCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNb
QGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAg
ICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICAgICAgIyBNYWNybyBpbnZvY2F0aW9u
LgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAg
ICBza2lwTmV3TGluZQorICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsb29wIHsKKyAgICAg
ICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
bWFjcm8iCisgICAgICAgICAgICAgICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQorICAgICAgICAg
ICAgICAgIGNvZGVPcmlnaW5Jbm5lciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAg
ICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFj
cm9WYXJpYWJsZXMKKyAgICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRc
Wi8sICJ3aGlsZSBpbnNpZGUgb2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1bWVudCB0
byAje25hbWV9IikKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBv
cGVyYW5kcyA8PCBNYWNyby5uZXcoY29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlhYmxlcywgYm9k
eSkKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNl
T3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIpCisgICAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBA
dG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
ICAgICAgIGJyZWFrCisgICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisg
ICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBwYXJzZUVycm9yICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5zcGVj
dH0gd2hpbGUgcGFyc2luZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAgICAg
ICAgIGVuZAorICAgICAgICAgICAgfQorICAgICAgICAgIGVuZAorICAgICAgICAgIGxpc3QgPDwg
TWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgZWxzZQor
ICAgICAgICAgIHBhcnNlRXJyb3IgIkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFtZX0iCisgICAg
ICAgIGVuZAorICAgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlzTG9jYWxMYWJl
bCBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI6IgorICAg
ICAgICAjIEl0J3MgYSBsYWJlbC4KKyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAgICAg
bGlzdCA8PCBMYWJlbC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICBsaXN0IDw8IExvY2FsTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAg
ICAgICBlbmQKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJy
b3IgIkV4cGVjdGluZyB0ZXJtaW5hbCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAgICAgZW5kCisg
ICAgfQorICAgIFNlcXVlbmNlLm5ldyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisgIGVuZAorZW5k
CisKK2RlZiBwYXJzZSh0b2tlbnMpCisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9rZW5zKQorICBw
YXJzZXIucGFyc2VTZXF1ZW5jZShuaWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK0dQ
UlMgPQorICBbCisgICAidDAiLAorICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMiLAorICAgInQ0
IiwKKyAgICJjZnIiLAorICAgImEwIiwKKyAgICJhMSIsCisgICAicjAiLAorICAgInIxIiwKKyAg
ICJzcCIKKyAgXQorCitGUFJTID0KKyAgWworICAgImZ0MCIsCisgICAiZnQxIiwKKyAgICJmdDIi
LAorICAgImZ0MyIsCisgICAiZnQ0IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisgICAiZmExIiwK
KyAgICJmYTIiLAorICAgImZhMyIsCisgICAiZnIiCisgIF0KKworUkVHSVNURVJTID0gR1BSUyAr
IEZQUlMKKworR1BSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJTLmpvaW4oJyl8
KCcpICsgJykpXFxaJykKK0ZQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgRlBSUy5q
b2luKCcpfCgnKSArICcpKVxcWicpCisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdc
XEEoKCcgKyBSRUdJU1RFUlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyMjEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVx
dWlyZSAidHJhbnNmb3JtIgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBj
b21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25zICAg
ICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkgb2Ygc2V0
dGluZ3MgbWFwcywgd2hlcmUgYSBzZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMgIworIyBhIGNvbmZp
Z3VyYXRpb24gZm9yIHRoZSBhc3NlbWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIG1hcCAg
ICAgICAjCisjIGNvbnRhaW5zIGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBzZXR0aW5n
cyBuYW1lcyAoc3RyaW5ncykgYW5kICMKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVhbnMgKHRydWUg
Zm9yIGVuYWJsZWQsIGZhbHNlIGZvciBkaXNhYmxlZCkuICAgICAgIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3Qp
CisgIHNldHRpbmdzQ29tYmluYXRpb25zID0gW10KKyAgCisgIGRlZiBzZXR0aW5nc0NvbWJpbmF0
b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG1hcFNvRmFyLCByZW1haW5pbmcpCisgICAgaWYgcmVt
YWluaW5nLmVtcHR5PworICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFwU29GYXIKKyAg
ICAgIHJldHVybgorICAgIGVuZAorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAg
IG5ld01hcFtyZW1haW5pbmdbMF1dID0gdHJ1ZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0
aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICAgIAorICAgIG5l
d01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gZmFsc2UKKyAg
ICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWlu
aW5nWzEuLi0xXSkKKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21i
aW5hdGlvbnMsIHt9LCAoYXN0LmZpbHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7fHZ8IHYubmFt
ZX0gKyBbIlg4NiIsICJBUk12NyJdKS51bmlxKQorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMK
K2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JTZXR0aW5ncyhj
b25jcmV0ZVNldHRpbmdzLCBhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwgLi4uIH0g
ICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBEZXRlcm1pbmVzIGlmIHRoZSBz
ZXR0aW5ncyBjb21iaW5hdGlvbiBpcyB2YWxpZCwgYW5kIGlmIHNvLCBjYWxscyAgICAjCisjIHRo
ZSBibG9jayB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBjb2RlLiAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JT
ZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0
dXJlcyB0aGlzIGNvbWJpbmF0b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWltZWRCYWNr
ZW5kcyA9IDAKKyAgc2VsZWN0ZWRCYWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2ggeworICAg
IHwgYmFja2VuZCB8CisgICAgaXNTdXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2JhY2tlbmRd
CisgICAgcmFpc2UgdW5sZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWltZWRCYWNr
ZW5kcyArPSBpZiBpc1N1cHBvcnRlZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlzU3VwcG9y
dGVkCisgICAgICBzZWxlY3RlZEJhY2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0KKyAgCisg
IHJldHVybiBpZiBudW1DbGFpbWVkQmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUgdGhlIEFT
VCBkb3duIHRvIGEgbG93LWxldmVsIGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25hbHMpLgor
ICBsb3dMZXZlbEFTVCA9IGFzdC5yZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAg
CisgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJhY2tlbmQK
K2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRT
ZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAg
ICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0aW5n
c0NvbWJpbmF0aW9uKGFzdCwgc2V0dGluZ3NDb21iaW5hdGlvbnMpIHsgICAgICAgICAjCisjICAg
ICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFeGVjdXRlcyB0aGUgZ2l2ZW4gYmxvY2sg
Zm9yIGVhY2ggdmFsaWQgc2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlICAjCisjIHNldHRpbmdz
IG1hcC4gVGhlIGFzdCBwYXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQgICAgICAgICAg
ICAgICMKKyMgKGFzdC5yZXNvbHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBmaXJzdCBmb3Jt
IHdpbGwgY2FsbCBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSBmb3IgeW91LiAgICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JFYWNoVmFsaWRTZXR0
aW5nc0NvbWJpbmF0aW9uKGFzdCwgKm9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMpCisgIHJh
aXNlIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEKKyAgCisgIGlmIG9w
dGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuZW1wdHk/CisgICAgc2V0dGluZ3NDb21iaW5hdGlv
bnMgPSBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBlbHNlCisgICAgc2V0dGlu
Z3NDb21iaW5hdGlvbnMgPSBvcHRpb25hbFNldHRpbmdzQ29tYmlhdGlvbnNbMF0KKyAgZW5kCisg
IAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucy5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgY29uY3Jl
dGVTZXR0aW5ncywgaW5kZXggfAorICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFz
dCkgeworICAgICAgfCBjb25jcmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAor
ICAgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4
CisgICAgfQorICB9CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
Y3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFJldHVybnMgdGhlIEMrKyBjb2RlIHVz
ZWQgdG8gdGVzdCBpZiB3ZSBhcmUgaW4gYSBjb25maWd1cmF0aW9uIHRoYXQgICMKKyMgY29ycmVz
cG9uZHMgdG8gdGhlIGdpdmVuIGNvbmNyZXRlIHNldHRpbmdzLiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGNwcFNldHRp
bmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdzLnRv
X2EuY29sbGVjdHsKKyAgICB8IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisgICAgICAgIiIKKyAg
ICAgZWxzZQorICAgICAgICIhIgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIgKyBwYWlyWzBd
CisgIH0uam9pbigiICYmICIpCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgaXNBU1RFcnJvbmVvdXMoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRlc3RzIHRvIHNlZSBpZiB0
aGUgQVNUIGNsYWltcyB0aGF0IHRoZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUgICMKKyMg
dXNlcidzIGNvZGUsIGFmdGVyIHNldHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4g
ICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGlz
QVNURXJyb25lb3VzKGFzdCkKKyAgbm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5PworZW5kCisK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGFzc2VydENvbmZpZ3VyYXRpb24o
Y29uY3JldGVTZXR0aW5ncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBFbWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdlJ3JlIHVzaW5n
IHRoZSBnaXZlbiBjb25maWd1cmF0aW9uLiAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworCitkZWYgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICBwdXRz
IGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICBwdXRzICIjZWxzZSIKKyAgcHV0
cyAiI2Vycm9yIFwiQ29uZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAgcHV0cyAiI2VuZGlmIgor
ZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGVtaXRDb2RlSW5Db25m
aWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkgeyAgICAgICAgICAgICMK
KyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4uIH0gICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEVtaXRzIGFsbCByZWxldmFudCBn
dWFyZHMgdG8gc2VlIGlmIHRoZSBjb25maWd1cmF0aW9uIGhvbGRzIGFuZCAgICAgICMKKyMgY2Fs
bHMgdGhlIGJsb2NrIGlmIHRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBlcnJvbmVvdXMuICAgICAg
ICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGVtaXRD
b2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkKKyAgcHV0
cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIGlmIGlzQVNURXJyb25l
b3VzKGFzdCkKKyAgICBwdXRzICIjZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uXCIiCisg
IGVsc2lmIG5vdCBXT1JLSU5HX0JBQ0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICBwdXRzICIj
ZXJyb3IgXCJUaGlzIGJhY2tlbmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UKKyAg
ICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICBwdXRz
ICIjZW5kaWYiCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZW1p
dENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4
IHwgLi4uIH0gICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRW1pdHMgZ3Vh
cmQgY29kZXMgZm9yIGFsbCB2YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxzIHRoZSBibG9j
ayAgIworIyBmb3IgdGhvc2UgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5kIG5vdCBl
cnJvbmVvdXMuICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
CitkZWYgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkKKyAgZm9yRWFjaFZhbGlkU2V0
dGluZ3NDb21iaW5hdGlvbihhc3QpIHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVs
QVNULCBiYWNrZW5kLCBpbmRleCB8CisgICAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVT
ZXR0aW5ncykKKyAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2Vu
ZCwgaW5kZXgKKyAgICBwdXRzICIjZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzNTIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK3JlcXVpcmUgImFzdCIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgbm9kZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbnN0cnVjdCBhIG5ldyBBU1Qg
dGhhdCBkb2VzIG5vdCBoYXZlIGFueSBJZlRoZW5FbHNlIG5vZGVzIGJ5ICAgICAgICMKKyMgc3Vi
c3RpdHV0aW5nIGNvbmNyZXRlIGJvb2xlYW4gdmFsdWVzIGZvciBlYWNoIFNldHRpbmcuICAgICAg
ICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9k
ZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG1hcENoaWxkcmVuIHsKKyAg
ICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAg
IH0KKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRp
bmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UKKyAgZGVmIHJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcK
KyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZXR0aW5nc1tAbmFtZV0uYXNO
b2RlCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRp
bmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIGFuZCBAcmln
aHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisK
K2NsYXNzIE9yCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJl
c29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgb3IgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBOb3QKKyAgZGVmIHJl
c29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAobm90IEBjaGlsZC5yZXNvbHZlU2V0dGluZ3Mo
c2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZQor
ICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGlmIEBwcmVkaWNhdGUucmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZQorICAgICAgQHRoZW5DYXNlLnJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykKKyAgICBlbHNlCisgICAgICBAZWxzZUNhc2UucmVzb2x2ZVNldHRpbmdzKHNl
dHRpbmdzKQorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgcmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIEBsaXN0LmVhY2gg
eworICAgICAgfCBpdGVtIHwKKyAgICAgIGl0ZW0gPSBpdGVtLnJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykKKyAgICAgIGlmIGl0ZW0uaXNfYT8gU2VxdWVuY2UKKyAgICAgICAgbmV3TGlzdCArPSBp
dGVtLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtCisgICAgICBlbmQK
KyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisgIGVuZAorZW5k
CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUuZGVtYWNyb2lmeSht
YWNyb3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
bm9kZS5zdWJzdGl0dXRlKG1hcHBpbmcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGRlbWFjcm9pZnkoKSBjb25zdHJ1Y3Rz
IGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IE1hY3JvICAgICAgICMKKyMgbm9kZXMs
IHdoaWxlIHN1YnN0aXR1dGUoKSByZXBsYWNlcyBWYXJpYWJsZSBub2RlcyB3aXRoIHRoZSBnaXZl
biAgICAgIworIyBub2RlcyBpbiB0aGUgbWFwcGluZy4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworCitjbGFzcyBOb2RlCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBtYXBDaGlsZHJl
biB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLmRlbWFjcm9pZnkobWFjcm9zKQorICAg
IH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG1hcENoaWxkcmVu
IHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShtYXBwaW5nKQorICAg
IH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIG1hcENo
aWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxhYmVscyht
YXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8KKyAgZGVmIHN1YnN0aXR1
dGUobWFwcGluZykKKyAgICBteU1hcHBpbmcgPSB7fQorICAgIG1hcHBpbmcuZWFjaF9wYWlyIHsK
KyAgICAgIHwga2V5LCB2YWx1ZSB8CisgICAgICB1bmxlc3MgQHZhcmlhYmxlcy5pbmNsdWRlPyBr
ZXkKKyAgICAgICAgbXlNYXBwaW5nW2tleV0gPSB2YWx1ZQorICAgICAgZW5kCisgICAgfQorICAg
IG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZSht
eU1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZQorICBkZWYgc3Vi
c3RpdHV0ZShtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2Vs
Zl0KKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIExv
Y2FsTGFiZWwKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBpZiBtYXBwaW5n
W3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVu
ZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgc3Vic3RpdHV0ZShjb25zdGFu
dHMpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbXlDb25zdGFudHMgPSBjb25zdGFudHMuZHVwCisg
ICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBDb25z
dERlY2wKKyAgICAgICAgbXlDb25zdGFudHNbaXRlbS52YXJpYWJsZV0gPSBpdGVtLnZhbHVlLnN1
YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRl
bS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNl
Lm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKKyAgCisgIGRlZiByZW5hbWVMYWJlbHMo
Y29tbWVudCkKKyAgICBtYXBwaW5nID0ge30KKyAgICAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAg
IHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAgbWFwcGlu
Z1tpdGVtXSA9IExvY2FsTGFiZWwudW5pcXVlKGlmIGNvbW1lbnQgdGhlbiBjb21tZW50ICsgIl8i
IGVsc2UgIiIgZW5kICsgaXRlbS5jbGVhbk5hbWUpCisgICAgICBlbmQKKyAgICB9CisgICAgCisg
ICAgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICBlbmQKKyAgCisgIGRlZiBkZW1hY3JvaWZ5
KG1hY3JvcykKKyAgICBteU1hY3JvcyA9IG1hY3Jvcy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAg
ICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgIG15TWFjcm9z
W2l0ZW0ubmFtZV0gPSBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdCA9IFtdCisg
ICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNy
bworICAgICAgICAjIElnbm9yZS4KKyAgICAgIGVsc2lmIGl0ZW0uaXNfYT8gTWFjcm9DYWxsCisg
ICAgICAgIG1hcHBpbmcgPSB7fQorICAgICAgICBteU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisg
ICAgICAgIHJhaXNlICJDb3VsZCBub3QgZmluZCBtYWNybyAje2l0ZW0ubmFtZX0gYXQgI3tpdGVt
LmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgbXlNYWNyb3NbaXRlbS5uYW1lXQorICAgICAgICBy
YWlzZSAiQXJndW1lbnQgY291bnQgbWlzbWF0Y2ggZm9yIGNhbGwgdG8gI3tpdGVtLm5hbWV9IGF0
ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIGl0ZW0ub3BlcmFuZHMuc2l6ZSA9PSBt
eU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlcy5zaXplCisgICAgICAgIGl0ZW0ub3BlcmFuZHMu
c2l6ZS50aW1lcyB7CisgICAgICAgICAgfCBpZHggfAorICAgICAgICAgIGlmIGl0ZW0ub3BlcmFu
ZHNbaWR4XS5pc19hPyBWYXJpYWJsZSBhbmQgbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5h
bWVdCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVz
W2lkeF0ubmFtZV0gPSBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAg
ICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5p
bAorICAgICAgICAgIGVsc2lmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBNYWNybworICAgICAg
ICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVd
ID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0u
bmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gbmls
CisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1d
ID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAg
bmV3TGlzdCArPSBteU1hY3Jvc1tpdGVtLm5hbWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5k
ZW1hY3JvaWZ5KG15TXlNYWNyb3MpLnJlbmFtZUxhYmVscyhpdGVtLm5hbWUpLmxpc3QKKyAgICAg
IGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtLmRlbWFjcm9pZnkobXlNYWNyb3MpCisgICAg
ICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpLnN1YnN0
aXR1dGUoe30pCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIG5vZGUucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNU
IHRoYXQgaGFzIG9mZnNldCB2YWx1ZXMgaW5zdGVhZCBvZiBzeW1ib2xpYyAgICAgICAjCisjIG9m
ZnNldHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5v
ZGUKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIG1hcENoaWxkcmVu
IHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywg
c2l6ZXMpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXQKKyAgZGVmIHJl
c29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlmIG9mZnNldHNbc2VsZl0KKyAgICAg
IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0c1tzZWxmXSkKKyAgICBlbHNlCisgICAg
ICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZgorICBkZWYgcmVzb2x2
ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgc2l6ZXNbc2VsZl0KKyAgICAgIEltbWVk
aWF0ZS5uZXcoY29kZU9yaWdpbiwgc2l6ZXNbc2VsZl0pCisgICAgZWxzZQorICAgICAgcHV0cyAi
Q291bGQgbm90IGZpbmQgI3tzZWxmLmluc3BlY3R9IGluICN7c2l6ZXMua2V5cy5pbnNwZWN0fSIK
KyAgICAgIHB1dHMgInNpemVzID0gI3tzaXplcy5pbnNwZWN0fSIKKyAgICAgIHNlbGYKKyAgICBl
bmQKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9k
ZS5mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFJlc29sdmUgY29uc3RhbnQgcmVmZXJlbmNl
cyBhbmQgY29tcHV0ZSBhcml0aG1ldGljIGV4cHJlc3Npb25zLiAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIGZvbGQKKyAgICBtYXBD
aGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLmZvbGQKKyAgICB9CisgIGVu
ZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBs
ZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVz
cyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0Lmlz
X2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUg
KyBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMKKyAgZGVm
IGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAor
ICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4g
c2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29k
ZU9yaWdpbiwgQGxlZnQudmFsdWUgLSBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNz
IE11bEltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBA
cmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJ
bW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQor
ICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgKiBAcmlnaHQudmFsdWUp
CisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0ZQorICBkZWYgZm9sZAorICAgIEBjaGls
ZCA9IEBjaGlsZC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBjaGlsZC5pc19hPyBJbW1l
ZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC1AY2hpbGQudmFsdWUpCisgIGVu
ZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2
ZUFmdGVyU2V0dGluZ3Mob2Zmc2V0cywgc2l6ZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBDb21waWxlIGFzc2VtYmx5IGFnYWluc3QgYSBzZXQgb2Yg
b2Zmc2V0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlKG9mZnNldHMsIHNpemVz
KQorICAgIGRlbWFjcm9pZnkoe30pLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKS5mb2xk
CisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4
Ni5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYu
cmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYu
cmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBzdXBwb3J0czhCaXRPblg4
NgorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIiwgInQxIiwgImExIiwg
InIxIiwgInQyIiwgInQzIgorICAgICAgdHJ1ZQorICAgIHdoZW4gInQ0IiwgImNmciIKKyAgICAg
IGZhbHNlCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYg
eDg2T3BlcmFuZChraW5kKQorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIw
IgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlYWwiCisgICAg
ICB3aGVuIDpoYWxmCisgICAgICAgICIlYXgiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVl
YXgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MSIs
ICJhMSIsICJyMSIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAi
JWRsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWR4IgorICAgICAgd2hlbiA6aW50Cisg
ICAgICAgICIlZWR4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAg
d2hlbiAidDIiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVj
bCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVjeCIKKyAgICAgIHdoZW4gOmludAorICAg
ICAgICAiJWVjeCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdo
ZW4gInQzIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlYmwi
CisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlYngiCisgICAgICB3aGVuIDppbnQKKyAgICAg
ICAgIiVlYngiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVu
ICJ0NCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNpbCIK
KyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVzaSIKKyAgICAgIHdoZW4gOmludAorICAgICAg
ICAiJWVzaSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4g
ImNmciIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWRpbCIK
KyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVkaSIKKyAgICAgIHdoZW4gOmludAorICAgICAg
ICAiJWVkaSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4g
InNwIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlc3BsIgor
ICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNwIgorICAgICAgd2hlbiA6aW50CisgICAgICAg
ICIlZXNwIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZWxzZQor
ICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQor
ICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3Rl
cklECisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgcmFpc2UgdW5sZXNzIGtpbmQgPT0gOmRv
dWJsZQorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIsICJmYTAiLCAiZnIiCisgICAgICAi
JXhtbTAiCisgICAgd2hlbiAiZnQxIiwgImZhMSIKKyAgICAgICIleG1tMSIKKyAgICB3aGVuICJm
dDIiLCAiZmEyIgorICAgICAgIiV4bW0yIgorICAgIHdoZW4gImZ0MyIsICJmYTMiCisgICAgICAi
JXhtbTMiCisgICAgd2hlbiAiZnQ0IgorICAgICAgIiV4bW00IgorICAgIHdoZW4gImZ0NSIKKyAg
ICAgICIleG1tNSIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgZGVm
IHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQK
K2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiJCN7
dmFsdWV9IgorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIiN7dmFsdWV9
IgorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGRlZiBzdXBwb3J0czhCaXRPblg4Ngor
ICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zm
c2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0pIgorICBlbmQKKyAgZGVmIHg4NkNh
bGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAor
CitjbGFzcyBCYXNlSW5kZXgKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBl
bmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7
YmFzZS54ODZPcGVyYW5kKDppbnQpfSwgI3tpbmRleC54ODZPcGVyYW5kKDppbnQpfSwgI3tzY2Fs
ZX0pIgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2b3Bl
cmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBkZWYg
c3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFu
ZChraW5kKQorICAgICIje2FkZHJlc3MudmFsdWV9IgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9w
ZXJhbmQoa2luZCkKKyAgICAiKiN7YWRkcmVzcy52YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNz
IExhYmVsUmVmZXJlbmNlCisgIGRlZiB4ODZMYWJlbAorICAgIHNhbml0aXplTGFiZWxOYW1lKG5h
bWUpCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICB4ODZMYWJlbAorICBl
bmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCisgIGRlZiB4ODZMYWJlbAorICAg
ICJfX29hXyIrbmFtZVsxLi4tMV0KKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQor
ICAgIHg4NkxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgIGRlZiB4ODZP
cGVyYW5kcygqa2luZHMpCisgICAgcmFpc2UgdW5sZXNzIGtpbmRzLnNpemUgPT0gb3BlcmFuZHMu
c2l6ZQorICAgIHJlc3VsdCA9IFtdCisgICAga2luZHMuc2l6ZS50aW1lcyB7CisgICAgICB8IGlk
eCB8CisgICAgICByZXN1bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZPcGVyYW5kKGtpbmRzW2lkeF0p
CisgICAgfQorICAgIHJlc3VsdC5qb2luKCIsICIpCisgIGVuZAorCisgIGRlZiB4ODZTdWZmaXgo
a2luZCkKKyAgICBjYXNlIGtpbmQKKyAgICB3aGVuIDpieXRlCisgICAgICAiYiIKKyAgICB3aGVu
IDpoYWxmCisgICAgICAidyIKKyAgICB3aGVuIDppbnQKKyAgICAgICJsIgorICAgIHdoZW4gOmRv
dWJsZQorICAgICAgInNkIgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAor
ICAKKyAgZGVmIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgbnVtT3Bl
cmFuZHMpCisgICAgaWYgbnVtT3BlcmFuZHMgPT0gMworICAgICAgaWYgb3BlcmFuZHNbMF0gPT0g
b3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAg
ICAgZWxzaWYgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJc
dCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJd
Lng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgIlx0bW92
I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29k
ZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVy
YW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHQje29w
Y29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3Aob3Bj
b2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwg
b3BlcmFuZHMuc2l6ZSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2hpZnQob3Bjb2RlLCBr
aW5kKQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBvciBvcGVyYW5kc1swXSA9
PSBSZWdpc3RlcklELmZvck5hbWUobmlsLCAidDIiKQorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bj
b2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICAgICRhc20ucHV0cyAiXHQje29w
Y29kZX0gJWNsLCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgJGFzbS5w
dXRzICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkRvdWJsZUJyYW5jaChicmFuY2hPcGNvZGUs
IG1vZGUpCisgICAgY2FzZSBtb2RlCisgICAgd2hlbiA6bm9ybWFsCisgICAgICAkYXNtLnB1dHMg
Ilx0dWNvbWlzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gOnJldmVyc2UKKyAgICAgICRhc20u
cHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgZWxzZQorICAgICAgcmFpc2UgbW9k
ZS5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje29w
ZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29tcGFy
ZShvcGNvZGVTdWZmaXgsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRl
IGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3Rl
cklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikKKyAg
ICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZChraW5kKX0iCisgICAgZWxzaWYgb3BlcmFuZHNbMV0uaXNfYT8gSW1tZWRpYXRlIGFu
ZCBvcGVyYW5kc1sxXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklE
IGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikKKyAgICAg
ICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZChraW5kKX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdGNtcCN7eDg2U3VmZml4
KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRC
cmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NkludENvbXBhcmUoYnJhbmNo
T3Bjb2RlWzEuLi0xXSwga2luZCkKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7
b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTZXQoc2V0
T3Bjb2RlLCBvcGVyYW5kKQorICAgIGlmIG9wZXJhbmQuc3VwcG9ydHM4Qml0T25YODYKKyAgICAg
ICRhc20ucHV0cyAiXHQje3NldE9wY29kZX0gI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSIK
KyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSwg
I3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAi
XHR4Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgICAkYXNtLnB1
dHMgIlx0I3tzZXRPcGNvZGV9ICVhbCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgJWFsLCAl
ZWF4IgorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQp
fSwgJWVheCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29tcGFyZVNl
dChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShzZXRPcGNvZGVbMy4u
LTFdLCBraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRzWzJdKQorICBl
bmQKKyAgCisgIGRlZiBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgdmFsdWUgPSBvcGVyYW5kc1sw
XQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gMgorICAgICAgbWFzayA9IEltbWVk
aWF0ZS5uZXcoY29kZU9yaWdpbiwgLTEpCisgICAgd2hlbiAzCisgICAgICBtYXNrID0gb3BlcmFu
ZHNbMV0KKyAgICBlbHNlCisgICAgICByYWlzZSAiRXhwZWN0ZWQgMiBvciAzIG9wZXJhbmRzLCBi
dXQgZ290ICN7b3BlcmFuZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQK
KyAgICAKKyAgICBpZiBtYXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQor
ICAgICAgaWYgdmFsdWUuaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgIlx0dGVz
dCN7eDg2U3VmZml4KGtpbmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4
Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgIlx0Y21wI3t4
ODZTdWZmaXgoa2luZCl9ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5k
CisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tt
YXNrLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVu
ZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZCcmFuY2hUZXN0KGJyYW5jaE9wY29kZSwga2lu
ZCkKKyAgICBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bj
b2RlfSAje29wZXJhbmRzLmxhc3QueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVY
ODZTZXRUZXN0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAg
aGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHMubGFzdCkKKyAgZW5kCisgIAorICBkZWYg
aGFuZGxlWDg2T3BCcmFuY2gob3Bjb2RlLCBicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxl
WDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXplIC0gMSkKKyAg
ICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVy
YW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAg
ZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJc
dCN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRl
ZiBoYW5kbGVYODZTdWJCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGlmIG9wZXJhbmRz
LnNpemUgPT0gNCBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICRhc20ucHV0
cyAiXHRuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1
dHMgIlx0YWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9w
ZXJhbmRzKCJzdWIje3g4NlN1ZmZpeChraW5kKX0iLCBraW5kLCBvcGVyYW5kcy5zaXplIC0gMSkK
KyAgICBlbmQKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAgIGp1bXBU
YXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9IG9wZXJh
bmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5kCisgICAg
JGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQueDg2TGFiZWx9IgorICBl
bmQKKyAgCisgIGRlZiBsb3dlclg4NgorICAgICRhc20uY29tbWVudCBjb2RlT3JpZ2luU3RyaW5n
CisgICAgY2FzZSBvcGNvZGUKKyAgICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAgICBpZiBvcGVy
YW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICBy
YWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1
bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICBpZiBvcGVyYW5kc1sw
XS52YWx1ZSA9PSAwCisgICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJd
CisgICAgICAgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgIGVuZAor
ICAgICAgICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRzICJcdGxlYWwgI3tvcGVyYW5kc1swXS52
YWx1ZX0oI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9
PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVz
cyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVy
YW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHRsZWFsICgje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmlu
dCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAg
ICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAg
ICRhc20ucHV0cyAiXHRhZGRsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgICBl
bmQKKyAgICAgIGVuZAorICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgIGhhbmRsZVg4Nk9w
KCJhbmRsIiwgOmludCkKKyAgICB3aGVuICJsc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQo
InNhbGwiLCA6aW50KQorICAgIHdoZW4gIm11bGkiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09
IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAkYXNtLnB1dHMgIlx0
aW11bGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50LCA6aW50KX0iCisgICAgICBlbHNlCisgICAg
ICAgIGhhbmRsZVg4Nk9wKCJpbXVsbCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJuZWdp
IgorICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hl
biAibm90aSIKKyAgICAgICRhc20ucHV0cyAiXHRub3RsICN7eDg2T3BlcmFuZHMoOmludCl9Igor
ICAgIHdoZW4gIm9yaSIsICJvcnAiCisgICAgICBoYW5kbGVYODZPcCgib3JsIiwgOmludCkKKyAg
ICB3aGVuICJyc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNhcmwiLCA6aW50KQorICAg
IHdoZW4gInVyc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNocmwiLCA6aW50KQorICAg
IHdoZW4gInN1YmkiLCAic3VicCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3Bl
cmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgaGFuZGxlWDg2T3AoInN1YmwiLCA6aW50KQorICAg
ICAgZW5kCisgICAgd2hlbiAieG9yaSIsICJ4b3JwIgorICAgICAgaGFuZGxlWDg2T3AoInhvcmwi
LCA6aW50KQorICAgIHdoZW4gImxvYWRpIiwgInN0b3JlaSIsICJsb2FkcCIsICJzdG9yZXAiCisg
ICAgICAkYXNtLnB1dHMgIlx0bW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICB3
aGVuICJsb2FkYiIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hl
biAibG9hZGgiCisgICAgICAkYXNtLnB1dHMgIlx0bW92endsICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6aGFsZil9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4g
InN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZiICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpi
eXRlKX0iCisgICAgd2hlbiAibG9hZGQiLCAibW92ZWQiLCAic3RvcmVkIgorICAgICAgJGFzbS5w
dXRzICJcdG1vdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4g
ImFkZGQiCisgICAgICAkYXNtLnB1dHMgIlx0YWRkc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6
ZG91YmxlKX0iCisgICAgd2hlbiAiZGl2ZCIKKyAgICAgICRhc20ucHV0cyAiXHRkaXZzZCAje3g4
Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJzdWJkIgorICAgICAgJGFz
bS5wdXRzICJcdHN1YnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdo
ZW4gIm11bGQiCisgICAgICAkYXNtLnB1dHMgIlx0bXVsc2QgI3t4ODZPcGVyYW5kcyg6ZG91Ymxl
LCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3FydGQiCisgICAgICAkYXNtLnB1dHMgIlx0c3FydHNk
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiY2kyZCIKKyAgICAgICRhc20ucHV0cyAiXHRjdnRz
aTJzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImJkZXEiCisgICAgICBpc1Vub3JkZXJlZCA9IExv
Y2FsTGFiZWwudW5pcXVlKCJiZGVxIikKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0anAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29k
ZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAj
e0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBvcGVyYW5kc1syXSkueDg2TGFiZWx9Igor
ICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRuZXEiCisgICAgICBo
YW5kbGVYODZEb3VibGVCcmFuY2goImpuZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRndCIKKyAg
ICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3Rl
cSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOm5vcm1hbCkKKyAgICB3aGVu
ICJiZGx0IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpyZXZlcnNlKQorICAg
IHdoZW4gImJkbHRlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOnJldmVy
c2UpCisgICAgd2hlbiAiYmRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqZSIs
IDpub3JtYWwpCisgICAgd2hlbiAiYmRuZXF1biIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxM
YWJlbC51bmlxdWUoImJkbmVxdW4iKQorICAgICAgaXNFcXVhbCA9IExvY2FsTGFiZWwudW5pcXVl
KCJiZG5lcXVuIikKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisg
ICAgICAkYXNtLnB1dHMgIlx0anAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNV
bm9yZGVyZWQpLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJl
bmNlLm5ldyhjb2RlT3JpZ2luLCBpc0VxdWFsKS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJl
ZC5sb3dlcigiWDg2IikKKyAgICAgICRhc20ucHV0cyAiXHRqbXAgI3tvcGVyYW5kc1syXS54ODZM
YWJlbH0iCisgICAgICBpc0VxdWFsLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkZ3R1biIKKyAg
ICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGd0
ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamJlIiwgOnJldmVyc2UpCisgICAg
d2hlbiAiYmRsdHVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpub3JtYWwp
CisgICAgd2hlbiAiYmRsdGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIs
IDpub3JtYWwpCisgICAgd2hlbiAiYnRkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNp
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0Y21wbCAkMHg4MDAwMDAwMCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7b3BlcmFu
ZHNbMl0ueDg2TGFiZWx9IgorICAgIHdoZW4gInRkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0
dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiYmNkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0
Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdGwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICAgICRhc20ucHV0cyAiXHRqZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgICRh
c20ucHV0cyAiXHRjdnRzaTJzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1t
NyIKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7b3BlcmFuZHNbMl0ueDg2
TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJcdGpuZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIK
KyAgICB3aGVuICJtb3ZkeiIKKyAgICAgICRhc20ucHV0cyAiXHR4b3JwZCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
IgorICAgIHdoZW4gInBvcCIKKyAgICAgICRhc20ucHV0cyAiXHRwb3AgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJwdXNoIgorICAgICAgJGFzbS5wdXRzICJcdHB1
c2ggI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJtb3ZlIiwgInN4
aTJwIiwgInp4aTJwIgorICAgICAgaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRz
WzBdIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAi
XHR4b3JsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNpZiBvcGVyYW5kc1swXSAhPSBvcGVyYW5kc1sxXQor
ICAgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAg
ICAgIGVuZAorICAgIHdoZW4gIm5vcCIKKyAgICAgICRhc20ucHV0cyAiXHRub3AiCisgICAgd2hl
biAiYmllcSIsICJicGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDppbnQpCisg
ICAgd2hlbiAiYmluZXEiLCAiYnBuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIs
IDppbnQpCisgICAgd2hlbiAiYmlhIiwgImJwYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgi
amEiLCA6aW50KQorICAgIHdoZW4gImJpYWVxIiwgImJwYWVxIgorICAgICAgaGFuZGxlWDg2SW50
QnJhbmNoKCJqYWUiLCA6aW50KQorICAgIHdoZW4gImJpYiIsICJicGIiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImpiIiwgOmludCkKKyAgICB3aGVuICJiaWJlcSIsICJicGJlcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmludCkKKyAgICB3aGVuICJiaWd0IiwgImJwZ3Qi
CisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmludCkKKyAgICB3aGVuICJiaWd0ZXEi
LCAiYnBndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6aW50KQorICAgIHdo
ZW4gImJpbHQiLCAiYnBsdCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6aW50KQor
ICAgIHdoZW4gImJpbHRlcSIsICJicGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImps
ZSIsIDppbnQpCisgICAgd2hlbiAiYmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUi
LCA6Ynl0ZSkKKyAgICB3aGVuICJiYm5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5l
IiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIs
IDpieXRlKQorICAgIHdoZW4gImJiYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUi
LCA6Ynl0ZSkKKyAgICB3aGVuICJiYmIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwg
OmJ5dGUpCisgICAgd2hlbiAiYmJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIs
IDpieXRlKQorICAgIHdoZW4gImJiZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwg
OmJ5dGUpCisgICAgd2hlbiAiYmJndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2Ui
LCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIs
IDpieXRlKQorICAgIHdoZW4gImJibHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamx0
ZXEiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGlvIiwgImJ0cG8iCisgICAgICBoYW5kbGVYODZCcmFu
Y2hUZXN0KCJqbyIsIDppbnQpCisgICAgd2hlbiAiYnRpcyIsICJidHBzIgorICAgICAgaGFuZGxl
WDg2QnJhbmNoVGVzdCgianMiLCA6aW50KQorICAgIHdoZW4gImJ0aXoiLCAiYnRweiIKKyAgICAg
IGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6IiwgOmludCkKKyAgICB3aGVuICJidGlueiIsICJidHBu
eiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDppbnQpCisgICAgd2hlbiAiYnRi
byIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRi
cyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRi
eiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRi
bnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJq
bXAiCisgICAgICAkYXNtLnB1dHMgIlx0am1wICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQo
OmludCl9IgorICAgIHdoZW4gImJhZGRpbyIsICJiYWRkcG8iCisgICAgICBoYW5kbGVYODZPcEJy
YW5jaCgiYWRkbCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlzIiwgImJhZGRwcyIKKyAg
ICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJiYWRk
aXoiLCAiYmFkZHB6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianoiLCA6aW50
KQorICAgIHdoZW4gImJhZGRpbnoiLCAiYmFkZHBueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNo
KCJhZGRsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlvIgorICAgICAgaGFuZGxlWDg2
U3ViQnJhbmNoKCJqbyIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlzIgorICAgICAgaGFuZGxlWDg2
U3ViQnJhbmNoKCJqcyIsIDppbnQpCisgICAgd2hlbiAiYnN1Yml6IgorICAgICAgaGFuZGxlWDg2
U3ViQnJhbmNoKCJqeiIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlueiIKKyAgICAgIGhhbmRsZVg4
NlN1YkJyYW5jaCgiam56IiwgOmludCkKKyAgICB3aGVuICJibXVsaW8iCisgICAgICBoYW5kbGVY
ODZPcEJyYW5jaCgiaW11bGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJtdWxpcyIKKyAgICAg
IGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm11bGl6
IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImp6IiwgOmludCkKKyAgICB3aGVu
ICJibXVsaW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpueiIsIDppbnQp
CisgICAgd2hlbiAiYm9yaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpvIiwg
OmludCkKKyAgICB3aGVuICJib3JpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAi
anMiLCA6aW50KQorICAgIHdoZW4gImJvcml6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9y
bCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYm9yaW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFu
Y2goIm9ybCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJyZWFrIgorICAgICAgJGFzbS5wdXRz
ICJcdGludCAkMyIKKyAgICB3aGVuICJjYWxsIgorICAgICAgJGFzbS5wdXRzICJcdGNhbGwgI3tv
cGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicmV0IgorICAgICAg
JGFzbS5wdXRzICJcdHJldCIKKyAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICBoYW5kbGVY
ODZJbnRDb21wYXJlU2V0KCJzZXRlIiwgOmludCkKKyAgICB3aGVuICJjaW5lcSIsICJjcG5lcSIK
KyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldG5lIiwgOmludCkKKyAgICB3aGVuICJj
aWEiLCAiY3BhIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YSIsIDppbnQpCisg
ICAgd2hlbiAiY2lhZXEiLCAiY3BhZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJz
ZXRhZSIsIDppbnQpCisgICAgd2hlbiAiY2liIiwgImNwYiIKKyAgICAgIGhhbmRsZVg4NkludENv
bXBhcmVTZXQoInNldGIiLCA6aW50KQorICAgIHdoZW4gImNpYmVxIiwgImNwYmVxIgorICAgICAg
aGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YmUiLCA6aW50KQorICAgIHdoZW4gImNpZ3QiLCAi
Y3BndCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGciLCA6aW50KQorICAgIHdo
ZW4gImNpZ3RlcSIsICJjcGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRn
ZSIsIDppbnQpCisgICAgd2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAgaGFuZGxlWDg2SW50Q29t
cGFyZVNldCgic2V0bCIsIDppbnQpCisgICAgd2hlbiAiY2lsdGVxIiwgImNwbHRlcSIKKyAgICAg
IGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGxlIiwgOmludCkKKyAgICB3aGVuICJ0aW8iCisg
ICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmludCkKKyAgICB3aGVuICJ0aXMiCisgICAg
ICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmludCkKKyAgICB3aGVuICJ0aXoiCisgICAgICBo
YW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmludCkKKyAgICB3aGVuICJ0aW56IgorICAgICAgaGFu
ZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6aW50KQorICAgIHdoZW4gInRibyIKKyAgICAgIGhhbmRs
ZVg4NlNldFRlc3QoInNldG8iLCA6Ynl0ZSkKKyAgICB3aGVuICJ0YnMiCisgICAgICBoYW5kbGVY
ODZTZXRUZXN0KCJzZXRzIiwgOmJ5dGUpCisgICAgd2hlbiAidGJ6IgorICAgICAgaGFuZGxlWDg2
U2V0VGVzdCgic2V0eiIsIDpieXRlKQorICAgIHdoZW4gInRibnoiCisgICAgICBoYW5kbGVYODZT
ZXRUZXN0KCJzZXRueiIsIDpieXRlKQorICAgIHdoZW4gInBlZWsiCisgICAgICAkYXNtLnB1dHMg
Ilx0bW92bCAje29wZXJhbmRzWzBdLnZhbHVlICogNH0oJWVzcCksICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicG9rZSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Zs
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0udmFsdWUgKiA0
fSglZXNwKSIKKyAgICB3aGVuICJjZHFpIgorICAgICAgJGFzbS5wdXRzICJcdGNkcSIKKyAgICB3
aGVuICJpZGl2aSIKKyAgICAgICRhc20ucHV0cyAiXHRpZGl2bCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgIHdoZW4gImZpaTJkIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5k
KDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHBzbGxxICQzMiwgJXhtbTci
CisgICAgICAkYXNtLnB1dHMgIlx0cG9yICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9IgorICAgIHdoZW4gImZkMmlpIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwc3JscSAkMzIsICV4bW03
IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNkICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQgb3Bjb2RlOiAje29wY29kZX0i
CisgICAgZW5kCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKyNk
ZWZpbmUgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVt
IENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9
OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENvZGVTcGVjaWFsaXphdGlvbktp
bmRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAK
ICNkZWZpbmUgQ29tbW9uU2xvd1BhdGhzX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxw
ZXJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogCkBAIC00MSw2ICs0MiwzOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogbmFtZXNwYWNlIENvbW1vblNsb3dQYXRocyB7CiAKK0FMV0FZU19JTkxJTkUg
RXhlY1N0YXRlKiBhcml0eUNoZWNrRm9yKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJGaWxlKiBy
ZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBKU0Z1bmN0
aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBBU1NFUlQoIWNh
bGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7CisgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAm
Y2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAg
aW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gZXhlYy0+YXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMoKTsKKworICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3
b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVy
LgorICAgIGlmICghcmVnaXN0ZXJGaWxlLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygpICsgbmV3Q29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CisKKyAgICAvLyBUb28g
ZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxs
IGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgorICAgIHNpemVfdCBkZWx0YSA9
IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXM7CisgICAgUmVnaXN0ZXIqIHNyYyA9IGV4ZWMtPnJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVy
KiBkc3QgPSBleGVjLT5yZWdpc3RlcnMoKSArIGRlbHRhOworCisgICAgaW50IGk7CisgICAgaW50
IGVuZCA9IC1FeGVjU3RhdGU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7
CisgICAgZm9yIChpID0gLTE7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9IHNyY1tp
XTsKKworICAgIGVuZCAtPSBkZWx0YTsKKyAgICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkpCisgICAg
ICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7CisKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBF
eGVjU3RhdGU6OmNyZWF0ZShkc3QpOworICAgIEFTU0VSVCgodm9pZCopbmV3RXhlYyA8PSByZWdp
c3RlckZpbGUtPmVuZCgpKTsKKyAgICByZXR1cm4gbmV3RXhlYzsKK30KKwogQUxXQVlTX0lOTElO
RSBib29sIG9wSW5zdGFuY2VPZlNsb3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBK
U1ZhbHVlIGJhc2VWYWwsIEpTVmFsdWUgcHJvdG8pCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0Nl
bGwoKSB8fCAhYmFzZVZhbC5pc0NlbGwoKSB8fCAhcHJvdG8uaXNDZWxsKCkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxMDQ4
NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9y
LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCisjaW5j
bHVkZSAiRXhlY3V0aW9uSGFybmVzcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJ
VERyaXZlci5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgpAQCAtODQsNyArODUsNyBAQCBJbnRyaW5z
aWMgTmF0aXZlRXhlY3V0YWJsZTo6aW50cmluc2ljKCkgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgog
c3RhdGljIHZvaWQgamV0dGlzb25Db2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBP
d25QdHI8VD4mIGNvZGVCbG9jaykKIHsKLSAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBl
KCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGlt
aXppbmdKSVQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQoY29kZUJsb2Nr
LT5hbHRlcm5hdGl2ZSgpKTsKICAgICBPd25QdHI8VD4gY29kZUJsb2NrVG9KZXR0aXNvbiA9IGNv
ZGVCbG9jay5yZWxlYXNlKCk7CiAgICAgY29kZUJsb2NrID0gc3RhdGljX3BvaW50ZXJfY2FzdDxU
Pihjb2RlQmxvY2tUb0pldHRpc29uLT5yZWxlYXNlQWx0ZXJuYXRpdmUoKSk7CkBAIC0xNjcsOSAr
MTY4LDMwIEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXoKICAgICBy
ZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUo
ZXhlYywgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21U
aWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCitpbmxp
bmUgY29uc3QgY2hhciogc2FtcGxpbmdEZXNjcmlwdGlvbihKSVRDb2RlOjpKSVRUeXBlIGppdFR5
cGUpCit7CisgICAgc3dpdGNoIChqaXRUeXBlKSB7CisgICAgY2FzZSBKSVRDb2RlOjpJbnRlcnBy
ZXRlclRodW5rOgorICAgICAgICByZXR1cm4gIkludGVycHJldGVyIENvbXBpbGF0aW9uIChUT1RB
TCkiOworICAgIGNhc2UgSklUQ29kZTo6QmFzZWxpbmVKSVQ6CisgICAgICAgIHJldHVybiAiQmFz
ZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6Cisg
ICAgICAgIHJldHVybiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGRlZmF1bHQ6Cisg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9
CisKIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSog
ZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGpp
dFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBK
SVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJE
RkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVn
aW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklU
KQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTIxMCw3ICsyMzIsNyBAQCBKU09iamVj
dCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJ
VCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGV4ZWMsIG1fZXZhbENvZGVCbG9j
aywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0
aW9uKGV4ZWMsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAg
ICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTI5NSw5ICszMTcsMTUgQEAgSlNPYmplY3Qq
IFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlT3B0aQogICAgIHJldHVybiBlcnJvcjsKIH0KIAor
dm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZShFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShleGVjLCBtX3Byb2dyYW1D
b2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEpTT2JqZWN0KiBQcm9ncmFt
RXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5v
ZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJ
VCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRP
VEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3Jp
cHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJB
TShqaXRUeXBlKTsKQEAgLTMzNiw3ICszNjQsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFi
bGU6OmNvbXBpbGVJbnRlCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENv
bXBpbGVJZkFwcHJvcHJpYXRlKGV4ZWMsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9y
Q2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKGV4ZWMsIG1fcHJv
Z3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVy
biAwOwogI2VuZGlmCiAKQEAgLTQxMiw3ICs0NDAsNyBAQCBGdW5jdGlvbkNvZGVCbG9jayogRnVu
Y3Rpb25FeGVjdXRhYmxlOjpiCiAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAg
ICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihyZXN1bHQtPmFs
dGVybmF0aXZlKCkpOwogICAgIEFTU0VSVChyZXN1bHQpOwotICAgIEFTU0VSVChyZXN1bHQtPmdl
dEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6
OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIApAQCAtNDM4LDYgKzQ2NiwxOCBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxl
Ojpjb21waWxlT3B0CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6aml0Q29tcGlsZUZvckNhbGwoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGJvb2wgcmVz
dWx0ID0gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLCBtX2NvZGVCbG9ja0Zv
ckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywg
bV9zeW1ib2xUYWJsZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENv
bXBpbGVGb3JDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGJvb2wgcmVzdWx0ID0g
aml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLCBtX2NvZGVCbG9ja0ZvckNvbnN0
cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJp
dHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwogRnVuY3Rpb25Db2RlQmxvY2sqIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrV2l0aEJ5dGVjb2RlRm9yKENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKIHsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0gYmFz
ZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CkBAIC00ODIsNyArNTIyLDcgQEAgUGFzc093blB0cjxG
dW5jdGlvbkNvZGVCbG9jaz4gRnVuY3Rpb25FeAogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRh
YmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5v
ZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJ
VCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRP
VEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3Jp
cHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKQEAgLTUwNCw3ICs1NDQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxl
Ojpjb21waWxlRm9yCiAgICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC0+c2hh
cmVkU3ltYm9sVGFibGUoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxl
RnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMsIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2Rl
Rm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBq
aXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLCBtX2Nv
ZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJp
dHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSwgQ29kZUZvckNhbGwpKQogICAgICAgICBy
ZXR1cm4gMDsKICNlbmRpZgogCkBAIC01MjQsNyArNTY0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9k
ZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1w
bGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklU
ID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9U
QUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlw
dGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFN
KGppdFR5cGUpOwpAQCAtNTQ2LDcgKzU4Niw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNvbXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1
Y3QtPnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0
Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVj
dCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlD
aGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25G
b3JFeGVjdXRpb24oZXhlYywgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNv
bnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFi
bGUsIGppdFR5cGUsIENvZGVGb3JDb25zdHJ1Y3QpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRp
ZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShy
ZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRXhlY3V0YWJs
ZV9oCiAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlv
bktpbmQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtMzksMTIgKzQwLDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIERlYnVnZ2VyOwogICAgIGNsYXNzIEV2YWxDb2RlQmxvY2s7CiAgICAgY2xh
c3MgRnVuY3Rpb25Db2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAK
ICAgICBzdHJ1Y3QgRXhjZXB0aW9uSW5mbzsKICAgICAKLSAgICBlbnVtIENvZGVTcGVjaWFsaXph
dGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogICAgIGVudW0gQ29t
cGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07
CiAKICAgICBpbmxpbmUgYm9vbCBpc0NhbGwoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpA
QCAtMzE5LDYgKzMyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBF
dmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVk
ZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC0zMzgsNiArMzQwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25P
cHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoRXhl
Y1N0YXRlKik7CiAjZW5kaWYKIAogICAgICAgICBFdmFsQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRl
Y29kZSgpCkBAIC0zODQsNiArMzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAg
IGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAg
ICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTQxMSw2ICs0MTUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9p
ZCBqZXR0aXNvbk9wdGltaXplZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0
Q29tcGlsZShFeGVjU3RhdGUqKTsKICNlbmRpZgogCiAgICAgICAgIFByb2dyYW1Db2RlQmxvY2sm
IGdlbmVyYXRlZEJ5dGVjb2RlKCkKQEAgLTQ1Myw2ICs0NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxl
IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhl
Y3V0YWJsZSBCYXNlOwogCkBAIC01MDgsNiArNTE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2Rl
Rm9yQ2FsbChKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ2FsbChF
eGVjU3RhdGUqKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDYWxsKCkg
Y29uc3QKQEAgLTUzNSw2ICs1NDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYg
RU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1
Y3QoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNvbnN0cnVjdChF
eGVjU3RhdGUqKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDb25zdHJ1
Y3QoKSBjb25zdApAQCAtNTgyLDYgKzU5MCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgICAgICBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0Q29tcGls
ZUZvcihFeGVjU3RhdGUqIGV4ZWMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAg
ICAgICBqaXRDb21waWxlRm9yQ2FsbChleGVjKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0
KTsKKyAgICAgICAgICAgIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoZXhlYyk7CisgICAgICAgIH0K
ICNlbmRpZgogICAgICAgICAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvcihDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRpb25IYXJuZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgRXhlY3V0aW9uSGFybmVzc19oCisjZGVmaW5lIEV4ZWN1dGlvbkhhcm5lc3NfaAorCisj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAi
SklURHJpdmVyLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KK2lubGluZSBib29sIHBy
ZXBhcmVGb3JFeGVjdXRpb24oRXhlY1N0YXRlKiBleGVjLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4m
IGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQor
eworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0
VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0
ZXIuCisgICAgICAgIExMSW50OjpnZXRFbnRyeXBvaW50KGV4ZWMtPmdsb2JhbERhdGEoKSwgY29k
ZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGpp
dENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUlmQXBw
cm9wcmlhdGUoZXhlYywgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRUeXBlKTsKK30KKworaW5saW5l
IGJvb2wgcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKEV4ZWNTdGF0ZSogZXhlYywgT3duUHRy
PEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHImIGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUq
JiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChKSVRDb2RlOjppc0Jh
c2VsaW5lQ29kZShqaXRUeXBlKSkgeworICAgICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBs
ZXZlbCBpbnRlcnByZXRlci4KKyAgICAgICAgTExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludChl
eGVjLT5nbG9iYWxEYXRhKCksIGtpbmQsIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7
CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5
Q2hlY2spOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShraW5kKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBp
bGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYywgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2Rl
V2l0aEFyaXR5Q2hlY2ssIHN5bWJvbFRhYmxlLCBqaXRUeXBlKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8gRXhlY3V0aW9uSGFy
bmVzc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJl
dmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAg
IHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmllcjxVbmtub3duPiB7
CiAgICAgICAgIHR5cGVkZWYgV3JpdGVCYXJyaWVyPFVua25vd24+IEJhc2U7CkBAIC0xMjQsNiAr
MTI1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEpTQXJyYXkgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwcm90ZWN0
ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24g
MTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNz
IFByb3BlcnR5TmFtZUFycmF5OworICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGVudW0gRW51
bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywKQEAgLTE2
NCw2ICsxNjUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IENs
YXNzSW5mbyogbV9jbGFzc0luZm87CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
c3RydWN0dXJlOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgSlNB
Y3RpdmF0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNv
dXJjZUNvZGU7CiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0xNDAsNiArMTQxLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGlzSG9zdEZ1bmN0aW9uTm9u
SW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVy
KEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMTA0
ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw4IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxE
YXRhKEdsb2JhbERhdGFUeXAKICAgICAsIGtleXdvcmRzKGFkb3B0UHRyKG5ldyBLZXl3b3Jkcyh0
aGlzKSkpCiAgICAgLCBpbnRlcnByZXRlcigwKQogICAgICwgaGVhcCh0aGlzLCBoZWFwU2l6ZSkK
KyAgICAsIGpzQXJyYXlDbGFzc0luZm8oJkpTQXJyYXk6OnNfaW5mbykKKyAgICAsIGpzRmluYWxP
YmplY3RDbGFzc0luZm8oJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKICNpZiBFTkFCTEUoREZHX0pJ
VCkKICAgICAsIHNpemVPZkxhc3RTY3JhdGNoQnVmZmVyKDApCiAjZW5kaWYKQEAgLTIxOCw3ICsy
MjAsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgaml0
U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1bmtzKHRoaXMpKTsKICNlbmRpZgogCi0gICAgaW50
ZXJwcmV0ZXItPmluaXRpYWxpemUodGhpcy0+Y2FuVXNlSklUKCkpOworICAgIGludGVycHJldGVy
LT5pbml0aWFsaXplKCZsbGludERhdGEsIHRoaXMtPmNhblVzZUpJVCgpKTsKIAogICAgIGhlYXAu
bm90aWZ5SXNTYWZlVG9Db2xsZWN0KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMw
LDE1ICszMCwxNiBAQAogI2RlZmluZSBKU0dsb2JhbERhdGFfaAogCiAjaW5jbHVkZSAiQ2FjaGVk
VHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1
ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5o
IgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJTdHJvbmcuaCIKKyNpbmNsdWRlICJJbnRy
aW5zaWMuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNp
bmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1
ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRlcm1p
bmF0b3IuaCIKICNpbmNsdWRlICJUaW1lb3V0Q2hlY2tlci5oIgogI2luY2x1ZGUgIldlYWtSYW5k
b20uaCIKQEAgLTY1LDYgKzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9i
YWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgS2V5d29yZHM7CisgICAg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7
CiAgICAgY2xhc3MgUGFyc2VyQXJlbmE7CiAgICAgY2xhc3MgUmVnRXhwQ2FjaGU7CkBAIC0yNDgs
NiArMjUwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBIZWFwIGhlYXA7CiAKICAgICAg
ICAgSlNWYWx1ZSBleGNlcHRpb247CisKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBq
c0FycmF5Q2xhc3NJbmZvOworICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzRmluYWxP
YmplY3RDbGFzc0luZm87CisKKyAgICAgICAgTExJbnQ6OkRhdGEgbGxpbnREYXRhOworCiAjaWYg
RU5BQkxFKEpJVCkKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciBleGNlcHRpb25Mb2NhdGlvbjsK
ICAgICAgICAgSlNWYWx1ZSBob3N0Q2FsbFJldHVyblZhbHVlOwpAQCAtMzUyLDYgKzM2MCw4IEBA
IG5hbWVzcGFjZSBKU0MgewogI3VuZGVmIHJlZ2lzdGVyVHlwZWRBcnJheUZ1bmN0aW9uCiAKICAg
ICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgICAgICAKICAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFj
a1R5cGUsIEhlYXBTaXplKTsKICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZElu
c3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShy
ZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEdldHRlclNldHRlcjsK
ICAgICBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CiAgICAgY2xhc3MgUHJvZ3Jh
bUNvZGVCbG9jazsKICAgICBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKQEAgLTMzNSw2ICszMzYs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2Jh
bFByb3BlcnR5SW5mbyosIGludCBjb3VudCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gRklY
TUU6IEZvbGQgcmVzZXQgaW50byBpbml0LgogICAgICAgICB2b2lkIGluaXQoSlNPYmplY3QqIHRo
aXNWYWx1ZSk7CiAgICAgICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMDQ4NjAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEdldHRlclNl
dHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQmxvY2s7
CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFy
cmF5OwpAQCAtMjU5LDYgKzI2MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU09iamVj
dChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFn
ZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gTm9ib2R5IHNob3VsZCBldmVyIGFzayBhbnkg
b2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0aGluZyBhbHJlYWR5IGtub3duIHRvIGJlIGEgSlNP
YmplY3QuCiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXI7CiAgICAgICAg
IHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7CkBAIC0zNzAsNiArMzczLDggQEAgQ09NUElM
RV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0IEpTRmluYWxP
YmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3Jh
Z2UpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwNDg2MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogCiAgICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciA6IHB1YmxpYyBK
U0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtOTYsNiArOTcsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5h
bWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKIAogICAgICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1N0cmluZzsKKyAgICBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhK
U0dsb2JhbERhdGEqKTsKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsK
QEAgLTI0MSw2ICsyNDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVz
b2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9w
ZVNsb3dDYXNlKFVDaGFyKikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDgg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDE7
IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIHRvIG1ha2UgZG9jdW1lbnQu
YWxsIHVuZGV0ZWN0YWJsZS4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW1wbGVtZW50c0hh
c0luc3RhbmNlID0gMSA8PCAxOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNI
YXNJbnN0YW5jZSA9IDEgPDwgMjsKQEAgLTg3LDYgKzg5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGlzU2V0T25GbGFnczEodW5zaWdu
ZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA8PSAoMSA8PCA3KSk7IHJldHVybiBtX2ZsYWdz
ICYgZmxhZzsgfQogICAgICAgICBib29sIGlzU2V0T25GbGFnczIodW5zaWduZWQgZmxhZykgY29u
c3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8PCA4KSk7IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+
IDgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
cmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4
LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogCiAgICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHB1YmxpYzoK
ICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTA0ODYwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDYgKzUxLDEwIEBAIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGkK
IAogdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7CiAKK2ludDMyX3QgZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
SklUU29vbjsKKwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVy
V2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9u
Z1dhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55
dGltZVNvb247CkBAIC0xMzYsNiArMTQwLDEwIEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQog
ICAgIAogICAgIFNFVChtYXhpbXVtSW5saW5pbmdEZXB0aCwgNSk7CiAKKyAgICBTRVQoZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXAsICAgICAtMTAwKTsKKyAgICBTRVQoZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGlt
aXRzPGludDMyX3Q+OjptaW4oKSk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJ
VFNvb24sICAgICAgICAgICAgLTEwMCk7CisKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yT3B0aW1pemVBZnRlcldhcm1VcCwgICAgIC0xMDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAsIC01MDAwKTsKICAgICBTRVQoZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVtZXJp
Y19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTAgQEAgZXh0
ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cgogCiBleHRlcm4gdW5zaWduZWQg
bWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERlcHRoIG9mIGlubGluZSBzdGFjaywgc28gMSA9IG5v
IGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMuCiAKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworZXh0ZXJuIGludDMyX3QgZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogZXh0ZXJuIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiAxMDQ4
NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNH
bG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0
OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTY29wZUNoYWlu
SXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCkBAIC05MSw2ICs5Miw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFz
c0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAgICAgfTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEw
NDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5Owog
ICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5RGF0YTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFp
bjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpT
X0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAg
ICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3Rv
dHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29u
c3QgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3
LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogCiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBw
dWJsaWMgSlNDZWxsIHsKQEAgLTc0LDYgKzc1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBT
dHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAg
ICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEwNDg2MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTE4
LDYgKzkxOCwxMiBAQAogI2RlZmluZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCisvKiBPbiBzb21l
IG9mIHRoZSBwbGF0Zm9ybXMgd2hlcmUgd2UgaGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNvIGhh
dmUgdGhlIAorICAgbG93LWxldmVsIGludGVycHJldGVyLiAqLworI2lmIEVOQUJMRShKSVQpICYm
IFBMQVRGT1JNKE1BQykgJiYgVVNFKEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5U
IDEKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0RGR19KSVQpICYmIEVOQUJMRShKSVQp
CiAvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gWDg2IGFuZCBYODZfNjQuICBPbmx5IHRlc3RlZCBv
biBNYWMgYW5kIEdOVS9MaW51eC4gKi8KICNpZiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpICYm
IChQTEFURk9STShNQUMpIHx8IE9TKExJTlVYKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDMs
NiArNDMsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpCiAvLyBM
YW5kaW5nIHRoZSBmaWxlIG1vdmVzIGluIG9uZSBwYXRjaCwgd2lsbCBmb2xsb3cgb24gd2l0aCBw
YXRjaGVzIHRvIGNoYW5nZSB0aGUgbmFtZXNwYWNlcy4KIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0
IElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSWRlbnRpZmllckNoYXJCdWZmZXJUcmFu
c2xhdG9yOwogc3RydWN0IElkZW50aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5zbGF0b3I7CiB9CkBA
IC03MCw3ICs3MSw4IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgIGZyaWVuZCBzdHJ1Y3QgV1RG
OjpIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RG
OjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ0lt
cGw7Ci0KKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
CiBwcml2YXRlOgogICAgIGVudW0gQnVmZmVyT3duZXJzaGlwIHsKICAgICAgICAgQnVmZmVySW50
ZXJuYWwsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122841</attachid>
            <date>2012-01-17 17:08:31 -0800</date>
            <delta_ts>2012-01-17 22:26:11 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_18.diff</filename>
            <type>text/plain</type>
            <size>396358</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyMSBA
QAorMjAxMi0wMS0xMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV09SSyBJTiBQUk9HUkVTUy4gIEl0IGFwcGVhcnMgdG8gd29yaywgYnV0IHRoZSB0
aWVyaW5nIGxvZ2ljIGlzIG5vdAorCWNvbXBsZXRlbHkgZ2x1ZWQgdG9nZXRoZXIgeWV0LgorICAg
ICAgICAKKyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBK
SVQncyBjYWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2Fs
bGVkIExMSW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAg
ICAgICAgd2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5
IHRpZXIgdXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVu
IGhvdC4KKyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBm
b3JtIG9mIG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1i
bHkgaXMgY29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwg
d2hpY2gKKyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBh
cyBhIFR1cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5k
IGRpcmVjdCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAg
KGJhc2ljYWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2Vz
KS4KKyAgICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8g
dGhlIHJlc3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0
aW5nIGluIHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5n
IGFuZAorICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQg
cmVxdWlyZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorCisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVy
Lmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Zmlu
YWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5
VmlzaXRTdHJvbmdSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtD
YWxscyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxscyk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpQ
cm9ncmFtQ29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6
OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKToK
KyAgICAgICAgKEpTQzo6UHJvZ3JhbUNvZGVCbG9jazo6aml0Q29tcGlsZSk6CisgICAgICAgIChK
U0M6OkV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNv
ZGVCbG9jazo6aml0Q29tcGlsZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpi
eXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFuZGxlQnl0ZWNvZGVE
aXNjYXJkaW5nT3Bwb3J0dW5pdHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omhhc09wdGlt
aXplZFJlcGxhY2VtZW50KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRMTEludENhbGxM
aW5rSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkRnJlcXVlbnRFeGl0U2l0ZSk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZG9udEpJVEFueXRpbWVTb29uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpqaXRBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6aml0U29vbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGxpbnRFeGVjdXRlQ291bnRl
cik6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SW5z
dHJ1Y3Rpb246Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludENhbGxMaW5r
SW5mby5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OkxMSW50Q2Fs
bExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxM
aW5rSW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6Cisg
ICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVj
b2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENv
bnN0cnVjdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gpOgor
ICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRp
ZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBk
ZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoK
KyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0
ZTo6Y3VycmVudFZQQyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6fkludGVycHJldGVyKToKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6aXNP
cGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6CisgICAgICAgICog
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Omdl
dE9wY29kZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGVJRCk6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjplbmFibGVkKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9S
ZWdpc3RlckZpbGUuaDoKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSk6
CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaDogQWRkZWQuCisgICAgICAgICog
aml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAo
SlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgorICAg
ICAgICAoSlNDOjpKSVRDb2RlOjppc09wdGltaXppbmdKSVQpOgorICAgICAgICAoSlNDOjpKSVRD
b2RlOjppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgor
ICAgICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBw
cm9wcmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRl
KToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRo
cm93KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVf
U1RVQl9GVU5DVElPTik6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAg
ICogbGxpbnQ6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50Q29tbW9uLmg6IEFkZGVkLgor
ICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTElu
dDo6RGF0YTo6RGF0YSk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjp+RGF0YSk6CisgICAg
ICAgICogbGxpbnQvTExJbnREYXRhLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6RGF0
YTo6ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6Om9w
Y29kZU1hcCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpMTEludDo6Z2V0RnVuY3Rpb25FbnRyeXBvaW50KToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmdldEV2YWxFbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldFBy
b2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnRzLmg6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0RW50cnlwb2ludCk6CisgICAgICAgICogbGxp
bnQvTExJbnRFeGNlcHRpb25zLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjppbnRl
cnByZXRlclRocm93KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3dGb3JUaHJv
d25FeGNlcHRpb24pOgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuVG9UaHJvdyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpjYWxsVG9UaHJvdyk6CisgICAgICAgICogbGxpbnQvTExJbnRFeGNl
cHRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50SGVscGVycy5jcHA6IEFkZGVk
LgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfdHJhY2Vfb3BlcmFuZCk6CisgICAgICAgIChK
U0M6OkxMSW50OjpsbGludF90cmFjZV92YWx1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElO
VF9IRUxQRVJfREVDTCk6CisgICAgICAgIChKU0M6OkxMSW50Ojp0cmFjZUZ1bmN0aW9uUHJvbG9n
dWUpOgorICAgICAgICAoSlNDOjpMTEludDo6c2hvdWxkSklUKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5l
cmljQ2FsbCk6CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6IEFkZGVkLgorICAgICAg
ICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGlu
dC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRP
ZmZzZXRzRXh0cmFjdG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBsbGlu
dC9MTEludFRodW5rcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVU
aHVua1dpdGhKdW1wVG8pOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50
cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0
cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25G
b3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1
bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5r
cy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRk
ZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAg
ICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2Zm
bGluZWFzbTogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisg
ICAgICAgICogb2ZmbGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20v
YXN0LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4K
KyAgICAgICAgKiBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVk
LgorICAgICAgICAqIG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAg
ICAgKiBvZmZsaW5lYXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20v
cGFyc2VyLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRk
ZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9zZXR0aW5ncy5yYjogQWRkZWQuCisgICAgICAgICog
b2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20veDg2
LnJiOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaDog
QWRkZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpT
Qzo6Q29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4
ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAg
IChKU0M6OkV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6c2FtcGxp
bmdEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50
ZXJuYWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6Cisg
ICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdCk6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbCk6Cisg
ICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVy
bmFsKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1
dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnByZXBhcmVGb3JFeGVjdXRpb24p
OgorICAgICAgICAoSlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAg
ICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAg
ICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFy
aWFibGVPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAo
SlNDOjpPcHRpb25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9PcHRp
b25zLmg6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAg
ICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgor
CiAyMDEyLTAxLTExICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4K
IAogICAgICAgICBBbGxvdyBhY2Nlc3NvciBnZXQvc2V0IHByb3BlcnR5IHRvIGJlIHNldCB0byB1
bmRlZmluZWQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDExLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNjAsNiArNjAsNyBAQCBhbGwgOiBcCiAgICAgU3RyaW5nQ29uc3RydWN0b3IubHV0Lmgg
XAogICAgIFN0cmluZ1Byb3RvdHlwZS5sdXQuaCBcCiAgICAgZG9jcy9ieXRlY29kZS5odG1sIFwK
KyAgICBMTEludEFzc2VtYmx5LmguUEhPTlkgXAogIwogCiAjIGxvb2t1cCB0YWJsZXMgZm9yIGNs
YXNzZXMKQEAgLTEwNCwzICsxMDUsMTEgQEAgSGVhZGVyRGV0ZWN0aW9uLmggOgogCWVjaG8gPiAk
QAogCiBlbmRpZgorCisjIEFzc2VtYmx5IGZvciB0aGUgTG93TGV2ZWxJbnRlcnByZXRlcgorCisj
IFRoaXMgYnVpbGRzIGV2ZXJ5IHRpbWUgYmVjYXVzZSB0aGVyZSBpcyBubyBlYXN5IHdheSB0byBk
ZXNjcmliZQorIyB0aGUgZGVwZW5kZW5jaWVzIHVzaW5nIG1ha2UuIEluc3RlYWQsIHRoZSBhc3Nl
bWJsZXIgd2lsbCBkZWNpZGUgb24KKyMgaXRzIG93biB3aGV0aGVyIG9yIG5vdCBpdCBkaWQgYW55
dGhpbmcgdGhhdCB3b3VsZCBsZWFkIHRvIGEgY2hhbmdlLgorTExJbnRBc3NlbWJseS5oLlBIT05Z
OgorCXJ1YnkgJChKYXZhU2NyaXB0Q29yZSkvb2ZmbGluZWFzbS9hc20ucmIgJChKYXZhU2NyaXB0
Q29yZSkvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJChCVUlMVF9QUk9EVUNUU19ESVIp
L0pTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciA+IExMSW50QXNzZW1ibHkuaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC03LDYgKzcsMTUgQEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dy
ZWdhdGVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJ
bnQgT2Zmc2V0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxk
Q29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICov
OworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdl
bmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKKwkJCSk7CisJCQluYW1lID0gIkxMSW50IE9mZnNl
dHMiOworCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKIAkJNjVGQjNG
NjYwOUQxMUU5MTAwRjQ5REVCIC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEFnZ3JlZ2F0ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2NUZCM0Y3NzA5
RDExRUJEMDBGNDlERUIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdh
dGVUYXJnZXQgIkRlcml2ZWQgU291cmNlcyIgKi87CkBAIC0xNCw2ICsyMyw5IEBACiAJCQkJNjVG
QjNGNjUwOUQxMUU5MTAwRjQ5REVCIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKIAkJ
CQk1RDM1REVFMTBDN0MxNDBCMDA4NjQ4QjIgLyogR2VuZXJhdGUgRFRyYWNlIGhlYWRlciAqLywK
IAkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcy
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNv
dXJjZXMiOwogCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJfTsKQEAgLTQ4
LDYgKzYwLDEwIEBACiAJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmlj
dGlvblZlcmlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBC
Q0Q4MzU3MTQ4NTg0NTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAw
MyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwQkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEy
ODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4MzlBMTRC
Q0Y0NUQwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBM
TEludEVudHJ5cG9pbnRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8q
IExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgz
OUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBM
TEludFRodW5rcy5jcHAgKi87IH07CisJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTElu
dFRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTcxNEJDRjUwNzAwODg1
QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBOTE0QkNGNTYy
MDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4
M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBQTE0QkNGNUI5MDA4ODVC
NEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC01OCw5ICs3NCwxMyBAQAogCQkwRjBCODNCNTE0QkNGODYy
MDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9k
Q2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCNjE0
QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYg
LyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBD
YWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBM
TEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNUYx
NUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8q
IENvbW1vblNsb3dQYXRocy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGMTZENzI2MTQyQzM5QzAwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNkQ3MjQxNDJD
MzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCTBGMjFDMjY4MTRCRTVGNjgw
MEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3QzE0
QkU3Mjc2MDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4
ZWN1dGlvbkhhcm5lc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYy
MUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RjE0QkVB
QTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5
dGVjb2RlQ29udmVudGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjI0MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhh
cnZlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU2RjE0
NzM4RjMxMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0Nv
ZGVCbG9ja3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjJDNTU3MDE0NzM4RjM1MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJF
MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi87IH07CkBAIC03MSw2ICs5MSwxOSBAQAog
CQkwRjQzMTczODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQzMTczNjE0NkJBQzY1MDA3
RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2Vw
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODMxNEJBNTczMTAwQkZF
MjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMu
Y3BwICovOyB9OworCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5
RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcy
IC8qIExMSW50SGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAq
Lzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby11bnVzZWQtcGFyYW1ldGVyIjsg
fTsgfTsKKwkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTAxNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAgKi87IH07CisJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlv
bnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBG
NDY4MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8q
IExMSW50Q29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Njgw
QzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENDMTRCQkIxN0Ew
MEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dM
ZXZlbEludGVycHJldGVyLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8q
IExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJl
dGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIg
LyogTExJbnREYXRhLmNwcCAqLzsgfTsKKwkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExM
SW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3
MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJl
dHVyblZhbHVlLmNwcCAqLzsgfTsKKwkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RD
YWxsUmV0dXJuVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1RjA4
Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYwOENFMTQ2Qzc2MkYwMDA0
NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAxNzQxNDNGQ0QzMzAwNjhCNzdDIC8qIERG
R1ZhcmlhYmxlQWNjZXNzRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY2MjAxNzIxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR1ZhcmlhYmxlQWNjZXNz
RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGNjIwMTc1MTQzRkNEMzcwMDY4Qjc3QyAvKiBERkdPcGVyYW5kcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MjAxNzExNDNGQ0QyRjAwNjhCNzdD
IC8qIERGR09wZXJhbmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKQEAgLTM3MSw3ICs0MDQsNyBAQAogCQk4NkI5OUFFMzExN0U1NzgxMDBERjVBOTAg
LyogU3RyaW5nQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkI5OUFFMTExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZCQjA5QzAxMzhF
MzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkUxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0
Y2guY3BwICovOyB9OwogCQk4NkJCMDlDMTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkYx
MzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCAqLzsgfTsKLQkJODZDMzZFRUEwRUUxMjg5
RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3Nl
bWJsZXIuaCAqLzsgfTsKKwkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1i
bGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMz
NkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3
RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REQxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1i
bGVyQVJNLmNwcCAqLzsgfTsKIAkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNz
ZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9
OwogCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAw
MDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCAqLzsgfTsKQEAgLTczMSw2ICs3NjQsMjAgQEAKIC8q
IEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVt
UHJveHkgc2VjdGlvbiAqLworCQkwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFp
bmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJ
Y29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2Jq
ZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0
NjgwQTkxNEJBN0ZEOTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9ICJMTEludCBPZmZzZXRzIjsK
KwkJfTsKKwkJMEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBv
cnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJ
CXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGNDY4MDhFMTRCQTdF
NUUwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJ
CX07CiAJCTE0MTIxNEJFMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0
YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC03
NzYsNiArODIzLDE1IEBACiAvKiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhE
MTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5Rmls
ZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBh
dGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJ
ZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDE7CisJCX07CiAJCTVEQkIxNTExMTMxRDBCMTMwMDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2Ny
aXB0ICovID0gewogCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0
aW9uTWFzayA9IDEyOwpAQCAtODE2LDYgKzg3MiwxMCBAQAogCQkwQkFDOTQ5RTEzMzg3Mjg0MDBD
RjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFu
Z2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYXJ5Q2hhbmdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAv
KiBTaXplTGltaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNp
emVMaW1pdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NTE0QkNG
NDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBMTEludEVudHJ5cG9pbnRzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50
RW50cnlwb2ludHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NjE0
QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBMTEludEVudHJ5cG9pbnRzLmg7IHBhdGggPSBsbGludC9MTEludEVudHJ5
cG9pbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk3MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBMTEludFRodW5rcy5jcHA7IHBhdGggPSBsbGludC9MTEludFRodW5rcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBM
TEludFRodW5rcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludFRodW5r
cy5oOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5kbGVySW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdl
SW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHByZXNzaW9uUmFuZ2VJ
bmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04MjYsOSArODg2LDEzIEBACiAJ
CTBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0aG9kQ2FsbExpbmtJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxS
ZXNvbHZlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbG9iYWxSZXNv
bHZlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNCODE0QkNGOTVC
MDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0
IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IExMSW50Q2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTVG
MTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uU2xvd1BhdGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQml0VmVjdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVREcml2ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVT
cGVjaWFsaXphdGlvbktpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29k
ZVNwZWNpYWxpemF0aW9uS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIx
QzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRpb25IYXJuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRp
b25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVudGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNDJEQTUxM0YzQjFCQjAwN0FE
RDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBERkdDb2RlQmxvY2tzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERG
R0NvZGVCbG9ja3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gREZHQ29kZUJs
b2Nrcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODM5LDYgKzkwMywyMCBAQAog
CQkwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpc3RhYmxlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9u
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRFeGNlcHRpb25z
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwODAxNEJBNTcyNzAwQkZF
MjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SklURXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA4RjE0
QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1
dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0
b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTBGNDY4MDlEMTRCQTdG
ODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTExJbnRFeGNlcHRpb25zLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RXhj
ZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlFMTRCQTdG
ODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTExJbnRFeGNlcHRpb25zLmg7IHBhdGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50SGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBMTEludEhlbHBlcnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50
SGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEhlbHBlcnMu
aDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHA7IHBhdGggPSBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRD
b21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRDb21tb24uaDsg
cGF0aCA9IGxsaW50L0xMSW50Q29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHBh
dGggPSBsbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTG93TGV2ZWxJbnRlcnBy
ZXRlci5jcHA7IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVs
SW50ZXJwcmV0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTG93TGV2ZWxJ
bnRlcnByZXRlci5oOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnRE
YXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RGF0YS5j
cHA7IHBhdGggPSBsbGludC9MTEludERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RGF0YS5oOyBwYXRoID0gbGxpbnQvTExJbnREYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3
MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENDMTQ2QkU2MDIwMDA0NzJBOSAv
KiBERkdCeXRlQ29kZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERG
R0J5dGVDb2RlQ2FjaGUuaDsgcGF0aCA9IGRmZy9ERkdCeXRlQ29kZUNhY2hlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRp
dGlvbmFsRmluYWxpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2MjAx
NkQxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQWJzdHJhY3RTdGF0ZS5jcHA7IHBhdGggPSBkZmcv
REZHQWJzdHJhY3RTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTQw
LDYgKzE2MTgsMTMgQEAKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyog
QmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4QzE0QkE3
RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NC
dWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0g
KAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9
OwogCQkxNDEyMTExRTBBNDg3OTNDMDA0ODAyNTUgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKQEAgLTE1OTgsNiArMTY4Myw3IEBACiAJCQkJMTQxMjExMjAwQTQ4NzkzQzAwNDgwMjU1
IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkg
Ki8sCiAJCQkJNjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJ
MEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywK
IAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtMTYyNiw2ICsxNzEyLDcgQEAKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2
YVNjcmlwdENvcmVQcmVmaXguaCAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyog
anNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8s
CisJCQkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovLAogCQkJCTE0MzJFQkQ3
MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlG
IC8qIGFzc2VtYmxlciAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNv
ZGUgKi8sCkBAIC0xNjY0LDYgKzE3NTEsMjggQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNU
YWJzID0gMDsKIAkJfTsKKwkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjBCODM5NTE0QkNG
NDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8sCisJCQkJMEYwQjgzOTYxNEJD
RjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLywKKwkJCQkwRjBCODM5NzE0QkNG
NDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovLAorCQkJCTBGMEI4Mzk4MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovLAorCQkJCTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3
MiAvKiBMTEludERhdGEuY3BwICovLAorCQkJCTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBM
TEludERhdGEuaCAqLywKKwkJCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21t
b24uaCAqLywKKwkJCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmggKi8sCisJCQkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50
ZXJwcmV0ZXIuY3BwICovLAorCQkJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZl
bEludGVycHJldGVyLmggKi8sCisJCQkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50
RXhjZXB0aW9ucy5jcHAgKi8sCisJCQkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50
RXhjZXB0aW9ucy5oICovLAorCQkJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhl
bHBlcnMuY3BwICovLAorCQkJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBl
cnMuaCAqLywKKwkJCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gbGxpbnQ7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OwogCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAyNTUgLyogdGVzdHMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTY5Niw2ICsxODA1
LDggQEAKIAkJMTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcy
IC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovLAorCQkJCTBGNDY4MEQxMTRCQkM1RjgwMEJG
RTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8sCiAJCQkJMEY0NjgwN0YxNEJBNTcyNzAw
QkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovLAogCQkJCTBGNDY4MDgwMTRCQTU3MjcwMEJG
RTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEZEODJFMzcxNDFBQjE0MjAwMTc5Qzk0
IC8qIENvbXBhY3RKSVRDb2RlTWFwLmggKi8sCkBAIC0yMTE4LDYgKzIyMjksOCBAQAogCQk3RUY2
RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVT
cGVjaWFsaXphdGlvbktpbmQuaCAqLywKKwkJCQkwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyog
RXhlY3V0aW9uSGFybmVzcy5oICovLAogCQkJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBD
b21tb25TbG93UGF0aHMuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJn
TGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAq
LywKQEAgLTI0NzcsNiArMjU5MCw4IEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBi
eXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
MEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLywKKwkJ
CQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKIAkJ
CQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQuaCAqLywKIAkJCQkwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2
ZUluZm8uaCAqLywKIAkJCQkwRjBCODNCMjE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExp
bmtJbmZvLmNwcCAqLywKQEAgLTMwMTUsNyArMzEzMCwxNiBAQAogCQkJCTg2NzA0QjhBMTJEQkEz
MzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCNDMx
MkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxw
ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklU
RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcy
IC8qIExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBC
RkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2
ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFs
dWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTElu
dEVudHJ5cG9pbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVC
NEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRCQ0Y1MDcw
MDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTkxNEJDRjU2
MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0
QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zMDI0LDEzICszMTQ4LDM1IEBACiAJCQkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1l
dGhvZENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjcxNEJDRjhFMTAw
ODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNC
OTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxM
aW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8q
IEpJVERyaXZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRC
IC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdEMTRCRTcy
N0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CiAvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUy
NzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0geworCQkJaXNhID0gUEJYTmF0aXZl
VGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MDlBMTRCQTdFNUYwMEJG
RTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlND
TExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4
MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovLAorCQkJCTBGNDY4MDhDMTRCQTdFNUUw
MEJGRTI3MiAvKiBGcmFtZXdvcmtzICovLAorCQkJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAv
KiBDb3B5RmlsZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBl
bmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KwkJCXByb2R1Y3ROYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdFJl
ZmVyZW5jZSA9IDBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRy
YWN0b3IgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wi
OworCQl9OwogCQkxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDEy
MTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhO
YXRpdmVUYXJnZXQgIm1pbmlkb20iICovOwpAQCAtMzE1NywxMSArMzMwMywyOSBAQAogCQkJCTE0
QkQ1OUJFMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTkzMkY1QkRBMDgyMkEx
QzcwMDczNjk3NSAvKiBqc2MgKi8sCiAJCQkJNjUxMTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRl
c3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zm
c2V0c0V4dHJhY3RvciAqLywKKwkJCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQg
T2Zmc2V0cyAqLywKIAkJCSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MEFB
MTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlp
c2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChT
UkNST09UKS9sbGludC9Mb3dMZXZlbEFzc2VtYmxlci5hc20iLAorCQkJKTsKKwkJCW5hbWUgPSAi
R2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJV
SUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaCIsCisJ
CQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVs
bFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BS
T0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL1wiXG5cbi91c3IvYmluL2VudiBydWJ5IFwiJHtTUkNS
T09UfS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmJcIiA8IFwiJHtTUkNS
T09UfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbVwiID4gXCIke0JVSUxUX1BST0RVQ1RT
X0RJUn0vTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaFwiXG4iOworCQl9OwogCQkz
NzEzRjAxNDE0MjkwNTI0MDAzNjM4N0YgLyogQ2hlY2sgRm9yIEluYXBwcm9wcmlhdGUgT2JqZWN0
aXZlLUMgQ2xhc3MgTmFtZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhh
c2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzMwMiw2ICszNDY2LDE0
IEBACiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4QjE0QkE3RTVFMDBC
RkUyNzIgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwor
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGNDY4
MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CisJCX07CiAJCTE0MTIxMTFEMEE0ODc5M0MwMDQ4MDI1NSAvKiBTb3VyY2VzICovID0gewogCQkJ
aXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OwpAQCAtMzU1OSw3ICszNzMxLDE0IEBACiAJCQkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdC
IC8qIFlhcnJKSVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlG
RTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhB
ODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlv
bnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExv
d0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDIxNEJCRDE2
NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBENDE0
QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3Mu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjAxNEJDRjcxNjAwODg1QjRGIC8qIENhbGxM
aW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBCODNCNDE0QkNGODYwMDA4ODVCNEYg
LyogTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKQEAgLTM1NzYs
NiArMzc1NSwxNiBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTBGNDY4MEIyMTRCQTgx
MTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFy
Z2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBM
TEludCBPZmZzZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMTE0QkE4MTE1MDBCRkUy
NzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkwRjQ2ODBCNDE0QkE4MjE0
MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlND
TExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMzE0QkE4
MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQkxNDEyMTRC
RjBBNDkxOTBFMDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9
IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEyMTExRjBBNDg3OTNDMDA0ODAy
NTUgLyogbWluaWRvbSAqLzsKQEAgLTM2MDksNiArMzc5OCwxNDggQEAKIC8qIEVuZCBQQlhUYXJn
ZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24g
c2VjdGlvbiAqLworCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
QUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFO
REFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0NDX0NfTEFO
R1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJ
CQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9O
X0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQki
REVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZTUJPTFNf
UFJJVkFURV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxl
cnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04g
PSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJ
R0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZB
UklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJ
CQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRz
IiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RF
UExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gWUVTOworCQkJ
CVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsK
KwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19E
SVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1l
ID0gRGVidWc7CisJCX07CisJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJD
SFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlE
RUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19M
QU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05T
ID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5n
LjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdD
Q19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9V
VF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7
CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWlj
dSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMkKEhFQURFUl9TRUFS
Q0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7
CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFj
b3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJ
CW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJv
ZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hT
ID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlF
UzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJ
CQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19F
WENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5s
bHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5P
OworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0Nf
V0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFC
TEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4s
CisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAor
CQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9Z
TUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7
CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAi
LiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hf
UEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2ODA5OTE0
QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJf
UEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJ
CUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0g
ImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsK
KwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9
IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9f
MzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RP
VFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJ
R0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhT
W2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RT
X0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJ
CSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05B
TUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9I
RUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9m
ZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rp
b247CisJCX07CisJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQ
Uk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBE
ZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7
CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1l
ID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGlu
ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsK
KwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAv
KiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29w
eSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTNBMEE0ODc5
ODQwMDQ4MDI1NSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKQEAgLTM4NTAsNiArNDE4MSwyOCBAQAogLyogRW5kIFhD
QnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENDb25maWd1cmF0aW9u
TGlzdCBzZWN0aW9uICovCisJCTBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFj
dG9yIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZp
Z3VyYXRpb25zID0gKAorCQkJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLywK
KwkJCQkwRjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODA5
ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MDk5MTRCQTdFNUUw
MEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9u
SXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247
CisJCX07CisJCTBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi8gPSB7CisJCQlp
c2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJ
CQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwQUUxNEJB
N0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcy
IC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVj
dGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJ
CQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEz
OTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRp
dmVUYXJnZXQgIm1pbmlkb20iICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsK
IAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDcgKzMxLDcgQEAKICNkZWZpbmUgRFVNUF9MSU5LX1NUQVRJU1RJQ1MgMAogI2RlZmluZSBEVU1Q
X0NPREUgMAogCi0jaW5jbHVkZSA8TWFjcm9Bc3NlbWJsZXIuaD4KKyNpbmNsdWRlICJNYWNyb0Fz
c2VtYmxlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlND
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQ29udmVudGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBCeXRlY29kZUNvbnZlbnRpb25zX2gKKyNkZWZpbmUgQnl0ZWNvZGVDb252ZW50aW9uc19oCisK
Ky8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlm
ZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKKy8vICAgICAgMHg4MDAw
MDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2lu
dGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCisv
LyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBD
YWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUg
ZnVuY3Rpb24ncyBjYWxsZnJhbWUuCisvLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9z
aXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25z
dGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCitzdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKKworI2VuZGlmIC8vIEJ5dGVjb2RlQ29udmVu
dGlvbnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmNwcAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgogI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgog
I2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC04OTAsNiArODkxLDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpk
dW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMs
IGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uIik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dDogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAg
ICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF9nZW5lcmljOiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChl
eGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0xNDQ5LDYgKzE0NTgsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2Vk
QmxvY2tUYWcsCiB7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1QYXJhbWV0ZXJzKCkp
OwogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogICAg
IAogICAgIGlmIChvdGhlci5tX3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZO
ZWNlc3NhcnkoKTsKQEAgLTE0OTcsNiArMTUwNyw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNj
cmlwdEV4ZWN1dGFibGUqIG8KICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIAogICAgIG9wdGlt
aXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogCiAjaWYgRFVNUF9DT0RF
X0JMT0NLX1NUQVRJU1RJQ1MKICAgICBsaXZlQ29kZUJsb2NrU2V0LmFkZCh0aGlzKTsKQEAgLTE1
MTQsNyArMTUyNSwxMSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2lmIEVOQUJMRShWRVJC
T1NFX1ZBTFVFX1BST0ZJTEUpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNlbmRpZgotICAg
IAorCisjaWYgRU5BQkxFKExMSU5UKSAgICAKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2Fs
bHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNv
bWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5U
KQogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gV2UgbWF5IGJlIGRlc3Ryb3llZCBiZWZvcmUgYW55
IENvZGVCbG9ja3MgdGhhdCByZWZlciB0byB1cyBhcmUgZGVzdHJveWVkLgogICAgIC8vIENvbnNp
ZGVyIHRoYXQgdHdvIENvZGVCbG9ja3MgYmVjb21lIHVucmVhY2hhYmxlIGF0IHRoZSBzYW1lIHRp
bWUuIFRoZXJlCkBAIC0xNzI2LDggKzE3NDEsNTUgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXpl
VW5jb25kaXRpb25hbGx5KAogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5s
aW5raW5nID0gZmFsc2U7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAg
ICAgCisjaWYgRU5BQkxFKExMSU5UKQorICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1f
Z2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXI7CisgICAgaWYgKCFpbnRlcnByZXRlci0+ZW5hYmxlZCgp
KSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0
aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5z
dHJ1Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgeworICAgICAgICAgICAgY2FzZSBvcF9n
ZXRfYnlfaWQ6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgICAgICAg
ICBpZiAoSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkp
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVj
dGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0
aW9uWzVdLnUub3BlcmFuZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAgICAgIGlmIChIZWFw
Ojppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAg
ICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1
cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3Ry
dWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVh
cigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmNsZWFy
KCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5j
bGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlID0gaW50
ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBzaXpl
ID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVj
dGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgQVNT
RVJUKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkg
PT0gb3BfcmVzb2x2ZV9nbG9iYWwKKyAgICAgICAgICAgICAgICAgICB8fCBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMpOworICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0
aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgIGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAg
ICAgICBjdXJJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQgPSAwOworICAgICAgICB9CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsr
aSkgeworICAgICAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkg
JiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmNhbGxlZS5nZXQoKSkp
IHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAg
ICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20gJXAuXG4iLCB0aGlzKTsKKyAg
ICAgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKICNpZiBF
TkFCTEUoREZHX0pJVCkKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2UgYXJl
LCB0aGVuIGpldHRpc29uLgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5l
c3NEdXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7CkBA
IC0xODQ4LDEwICsxOTEwLDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25n
UmVmZXIKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7
ICsraSkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAjaWYg
RU5BQkxFKElOVEVSUFJFVEVSKQotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZp
c2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uc1tpXV0pOwotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRT
dHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbnNbaV1dKTsKKyAgICBpZiAobV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+ZW5hYmxlZCgp
KSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVj
dHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bnNbaV1dKTsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3Ry
dWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRT
dHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbnNbaV1dKTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMjA2
MCw2ICsyMTI0LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiB7CiAgICAgaWYg
KCEhbV9hbHRlcm5hdGl2ZSkKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+dW5saW5rQ2FsbHMoKTsK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xsaW50Q2Fs
bExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5m
b3NbaV0uaXNMaW5rZWQoKSkKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVu
bGluaygpOworICAgIH0KKyNlbmRpZgogICAgIGlmICghKG1fY2FsbExpbmtJbmZvcy5zaXplKCkg
fHwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0yMDc0LDEwICsyMTQ0LDM1IEBAIHZv
aWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiAKIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtJbmNv
bWluZ0NhbGxzKCkKIHsKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAh
PSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2Fs
bHMuYmVnaW4oKS0+dW5saW5rKCk7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRo
aXMpOwogICAgIHdoaWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2Fs
bHMuZW5kKCkpCiAgICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigpLT51bmxpbmsoKm1fZ2xv
YmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CiB9CisKK3Vuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNv
ZGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Mp
Cit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfYmVnaW4pCisgICAgICAgICYmIHJldHVybkFkZHJl
c3MudmFsdWUoKSA8PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQpKSB7CisgICAgICAg
IEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSk7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxv
Y2soKSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdl
dEpJVFR5cGUoKSkpOworICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBleGVjLT5j
dXJyZW50VlBDKCk7CisgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbik7CisgICAgICAgIHJldHVy
biBieXRlY29kZU9mZnNldChpbnN0cnVjdGlvbik7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CisjZW5kaWYKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVy
biAxOworICAgIFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJ
bmRpY2VzID0gbV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7CisgICAgaWYgKCFj
YWxsSW5kaWNlcy5zaXplKCkpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiBiaW5hcnlT
ZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxs
UmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdl
dEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZz
ZXQ7Cit9CiAjZW5kaWYKIAogdm9pZCBDb2RlQmxvY2s6OmNsZWFyRXZhbENhY2hlKCkKQEAgLTIx
NzMsMjQgKzIyNjgsNDUgQEAgYm9vbCBGdW5jdGlvbkNvZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhE
RgogCiB2b2lkIFByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0
SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6
aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxh
Y2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVj
dXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZv
aWQgRXZhbENvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkg
IT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXpp
bmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7
CiAgICAgc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpl
dHRpc29uT3B0aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBGdW5jdGlvbkNv
ZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0
SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3Rh
dGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNv
bk9wdGltaXplZENvZGVGb3IoKmdsb2JhbERhdGEoKSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZv
ckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKIH0KKwordm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpq
aXRDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2Vt
ZW50KCkpOworICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRh
YmxlKCkpLT5qaXRDb21waWxlKGV4ZWMpOworfQorCit2b2lkIEV2YWxDb2RlQmxvY2s6OmppdENv
bXBpbGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklU
Q29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQo
KSk7CisgICAgc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSkt
PmppdENvbXBpbGUoZXhlYyk7Cit9CisKK3ZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBp
bGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29k
ZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7
CisgICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkp
LT5qaXRDb21waWxlRm9yKGV4ZWMsIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3Qg
OiBDb2RlRm9yQ2FsbCk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlz
aW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBDb2RlQmxvY2tfaAog
I2RlZmluZSBDb2RlQmxvY2tfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgog
I2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5
dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgpAQCAtNTAsNiArNTEsNyBA
QAogI2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
LmgiCiAjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8u
aCIKICNpbmNsdWRlICJMaW5lSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAi
UHJlZGljdGlvblRyYWNrZXIuaCIKQEAgLTY1LDE2ICs2NywxMSBAQAogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCi0vLyBSZWdpc3RlciBu
dW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5n
IGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6Ci0vLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZG
RiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmll
cyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgotLy8gICAgICAweDAwMDAw
MDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50
ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2Fs
bGZyYW1lLgotLy8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMg
ZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0
aGUgQ29kZUJsb2NrLgotc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCA9IDB4NDAwMDAwMDA7Ci0KIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgRXhlY1N0YXRl
OwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGlubGluZSBpbnQgdW5tb2RpZmllZEFy
Z3VtZW50c1JlZ2lzdGVyKGludCBhcmd1bWVudHNSZWdpc3RlcikgeyByZXR1cm4gYXJndW1lbnRz
UmVnaXN0ZXIgLSAxOyB9CiAKQEAgLTgzLDYgKzgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgQ29kZUJsb2NrIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIsIHB1YmxpYyBX
ZWFrUmVmZXJlbmNlSGFydmVzdGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENvcHlQYXJzZWRCbG9j
a1RhZyB7IENvcHlQYXJzZWRCbG9jayB9OwogICAgIHByb3RlY3RlZDoKQEAgLTEyMyw3ICsxMjEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0
aXZlKCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5hbHRlcm5hdGl2ZSgpOwog
ICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5n
ZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJU
KEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAjZW5kaWYKQEAgLTE5NCwxNSArMTkyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0
aG9kQ2FsbExpbmtJbmZvLCB1bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJ
bmRleD4obV9tZXRob2RDYWxsTGlua0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZv
cy5zaXplKCksIGJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICAgICAgICAgIHJldHVybiAx
OwotICAgICAgICAgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYg
Y2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKLSAgICAg
ICAgICAgIGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAx
OwotICAgICAgICAgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJl
Z2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFk
ZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKLSAgICAgICAgfQorICAgICAgICB1bnNp
Z25lZCBieXRlY29kZU9mZnNldChFeGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAg
ICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4
KQogICAgICAgICB7CkBAIC0yMjMsMTEgKzIxMywxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgewogICAgICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwogICAgICAg
ICB9CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoTExJ
bnRDYWxsTGlua0luZm8qIGluY29taW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2luY29t
aW5nTExJbnRDYWxscy5wdXNoKGluY29taW5nKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJM
RShMTElOVCkKICAgICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5rSW5jb21pbmdDYWxscygpOwot
I2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAotI2lmIEVOQUJMRShERkdfSklUKQorI2lm
IEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIHZvaWQgc2V0SklUQ29k
ZU1hcChQYXNzT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBqaXRDb2RlTWFwKQogICAgICAgICB7
CiAgICAgICAgICAgICBtX2ppdENvZGVNYXAgPSBqaXRDb2RlTWFwOwpAQCAtMjM2LDcgKzIzMiw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9qaXRD
b2RlTWFwLmdldCgpOwogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgCisjaWYgRU5BQkxFKERG
R19KSVQpCiAgICAgICAgIHZvaWQgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCkKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKCEhbV9kZmdEYXRhKQpAQCAtMzM1LDEyICszMzMsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVS
KQogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChJbnN0cnVjdGlvbiogcmV0dXJuQWRk
cmVzcykKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJldHVybkFkZHJlc3MgPj0gaW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKSAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zKCkuZW5k
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJu
QWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgICAgICB9Ci0jZW5kaWYKIAog
ICAgICAgICB2b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0Nv
bXBhcmVGdW5jdGlvbikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0Nv
bXBhcmVGdW5jdGlvbjsgfQogICAgICAgICBib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbigp
IHsgcmV0dXJuIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CkBAIC0zNTYsMTAgKzM1Mywx
NCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgICAgICB2b2lkIGhhbmRsZUJ5dGVj
b2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCkKICAgICAgICAgeworI2lmICFFTkFCTEUoT1BDT0RF
X1NBTVBMSU5HKSAmJiAhRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgaWYgKEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICBpZiAoISFhbHRlcm5hdGl2ZSgpKQogICAgICAgICAgICAgICAgIGRpc2NhcmRC
eXRlY29kZSgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRl
Y29kZUxhdGVyKCk7CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICAKICNpZm5kZWYgTkRFQlVH
CkBAIC0zODcsMTcgKzM4OCwxOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY3V0YWJs
ZU1lbW9yeUhhbmRsZSogZXhlY3V0YWJsZU1lbW9yeSgpIHsgcmV0dXJuIGdldEpJVENvZGUoKS5n
ZXRFeGVjdXRhYmxlTWVtb3J5KCk7IH0KICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGls
ZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopID0gMDsKICAgICAgICAgdmly
dHVhbCB2b2lkIGpldHRpc29uKCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGls
ZShFeGVjU3RhdGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVu
dCgpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCkgPSAwOwog
ICAgICAgICBib29sIGhhc09wdGltaXplZFJlcGxhY2VtZW50KCkKICAgICAgICAgewotICAgICAg
ICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAg
ICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CiAg
ICAgICAgICAgICBib29sIHJlc3VsdCA9IHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA+IGdl
dEpJVFR5cGUoKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICAgICBpZiAocmVzdWx0
KQogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0g
SklUQ29kZTo6REZHSklUKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFT
U0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQp
OworICAgICAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXBsYWNl
bWVudCgpLT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1l
bnQoKSA9PSB0aGlzKTsKICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtNDU2LDcgKzQ1OCw2IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgY2xlYXJFdmFsQ2FjaGUoKTsKIAotI2lm
IEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgdm9pZCBhZGRQcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uKHVuc2lnbmVkIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKQEAgLTQ2OCw2ICs0Njks
MTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5z
dHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9CiAg
ICAgICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uQXRCeXRlY29kZU9mZnNldCh1
bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBMTElu
dENhbGxMaW5rSW5mbyogYWRkTExJbnRDYWxsTGlua0luZm8oKQorICAgICAgICB7CisgICAgICAg
ICAgICBtX2xsaW50Q2FsbExpbmtJbmZvcy5hcHBlbmQoTExJbnRDYWxsTGlua0luZm8oKSk7Cisg
ICAgICAgICAgICByZXR1cm4gJm1fbGxpbnRDYWxsTGlua0luZm9zLmxhc3QoKTsKKyAgICAgICAg
fQogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBzZXROdW1iZXJPZlN0cnVj
dHVyZVN0dWJJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZvcy5ncm93KHNp
emUpOyB9CkBAIC02NzIsNyArNjc5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAg
ICAgICBib29sIGFkZEZyZXF1ZW50RXhpdFNpdGUoY29uc3QgREZHOjpGcmVxdWVudEV4aXRTaXRl
JiBzaXRlKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJ
VENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2Vs
aW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBtX2V4aXRQcm9maWxl
LmFkZChzaXRlKTsKICAgICAgICAgfQogCkBAIC03NzcsNiArNzg0LDI5IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbShDb2RlQmxvY2sqIGFsdGVy
bmF0aXZlKTsKICAgICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgp
OwogICAgICAgICAKKyAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIEpJ
VHRpbmcga2lja3MgaW4sIGluIGEgbWl4ZWQgbW9kZQorICAgICAgICAvLyBleGVjdXRpb24gd29y
bGQuCisgICAgICAgIAorICAgICAgICB2b2lkIGRvbnRKSVRBbnl0aW1lU29vbigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgdm9pZCBqaXRBZnRlcldhcm1VcCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
bGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJ
VEFmdGVyV2FybVVwOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdFNvb24o
KQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25z
OjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBpbnQzMl90IGxsaW50RXhlY3V0ZUNvdW50ZXIoKSBjb25zdAorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICB9CisgICAg
ICAgIAogICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gdGllcmVkIGNv
bXBpbGF0aW9uIGtpY2tzIGluLiBUaGlzCiAgICAgICAgIC8vIGNvbnRyb2xzIGJvdGggd2hlbiB0
aGUgb3B0aW1pemluZyBjb21waWxlciBpcyBpbnZva2VkIGFuZCB3aGVuIE9TUgogICAgICAgICAv
LyBlbnRyeSBoYXBwZW5zLiBUd28gdHJpZ2dlcnMgZXhpc3Q6IHRoZSBsb29wIHRyaWdnZXIgYW5k
IHRoZSByZXR1cm4KQEAgLTEwNTIsOSArMTA4MiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9z
b3VyY2VPZmZzZXQ7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1
bnNpZ25lZD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVu
c2lnbmVkPiBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQor
ICAgICAgICBTZWdtZW50ZWRWZWN0b3I8TExJbnRDYWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxs
TGlua0luZm9zOworICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8s
IEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdMTElu
dENhbGxzOwogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVy
ZVN0dWJJbmZvPiBtX3N0cnVjdHVyZVN0dWJJbmZvczsKQEAgLTEwNjUsOSArMTA5NywxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdp
dGhBcml0eUNoZWNrOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBC
YXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2Vu
ZGlmCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShM
TElOVCkKICAgICAgICAgT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0g
ICAgICAgIAorI2VuZGlmCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFr
UmVmZXJlbmNlVHJhbnNpdGlvbiB7CiAgICAgICAgICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlv
bigpIHsgfQogICAgICAgICAgICAgCkBAIC0xMTMwLDEyICsxMTYzLDE0IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIE93blB0cjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAg
IAorICAgICAgICBpbnQzMl90IG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAg
ICAgIGludDMyX3QgbV9qaXRFeGVjdXRlQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVj
dWxhdGl2ZVN1Y2Nlc3NDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFp
bENvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAg
ICAgICAgIHVpbnQ4X3QgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKLQorICAgICAgICAK
ICAgICAgICAgc3RydWN0IFJhcmVEYXRhIHsKICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgICAgIHB1YmxpYzoKQEAgLTEyMDgsNiArMTI0Myw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9w
dGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGUoRXhlY1N0YXRl
Kik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtMTI0Miw2ICsxMjc4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpT
T2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0
Q29tcGlsZShFeGVjU3RhdGUqKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2Vt
ZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlm
CkBAIC0xMjc5LDYgKzEzMTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2Nv
cGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBqaXRDb21waWxlKEV4ZWNTdGF0ZSopOwogICAgICAgICB2aXJ0dWFsIENv
ZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVX
aXRoREZHKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xhc3MgU3RydWN0dXJl
OwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOworICAgIHN0cnVjdCBMTEludENhbGxMaW5rSW5m
bzsKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgdHlwZWRlZiBNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRpbmVUeXBlOwpAQCAtMTQxLDYg
KzE0MiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAgICAgc3RydWN0IEluc3RydWN0
aW9uIHsKKyAgICAgICAgSW5zdHJ1Y3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB1Lmpz
Q2VsbC5jbGVhcigpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihP
cGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVS
UFJFVEVSKQpAQCAtMTc2LDYgKzE4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAK
ICAgICAgICAgSW5zdHJ1Y3Rpb24oUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVu
YykgeyB1LmdldHRlckZ1bmMgPSBnZXR0ZXJGdW5jOyB9CisgICAgICAgIAorICAgICAgICBJbnN0
cnVjdGlvbihMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSB7IHUuY2FsbExpbmtJbmZv
ID0gY2FsbExpbmtJbmZvOyB9CiAKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgT3Bjb2Rl
IG9wY29kZTsKQEAgLTE4NCw2ICsxOTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IHN0cnVjdHVyZUNoYWluOwogICAgICAg
ICAgICAgV3JpdGVCYXJyaWVyQmFzZTxKU0NlbGw+IGpzQ2VsbDsKICAgICAgICAgICAgIFByb3Bl
cnR5U2xvdDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1bmM7CisgICAgICAgICAgICBMTEludENhbGxM
aW5rSW5mbyogY2FsbExpbmtJbmZvOworICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsKICAgICAg
ICAgfSB1OwogICAgICAgICAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50Q2FsbExpbmtJbmZvX2gKKyNkZWZpbmUgTExJ
bnRDYWxsTGlua0luZm9faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk1h
Y3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3Qu
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworc3RydWN0IExM
SW50Q2FsbExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExp
bmtJbmZvPiB7CisgICAgTExJbnRDYWxsTGlua0luZm8oKQorICAgIHsKKyAgICB9CisgICAgCisg
ICAgfkxMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAgICAgIGlmIChpc09uTGlzdCgpKQor
ICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNMaW5rZWQoKSB7
IHJldHVybiBjYWxsZWU7IH0KKyAgICAKKyAgICB2b2lkIHVubGluaygpCisgICAgeworICAgICAg
ICBjYWxsZWUuY2xlYXIoKTsKKyAgICAgICAgbWFjaGluZUNvZGVUYXJnZXQgPSBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoKTsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAgICByZW1v
dmUoKTsKKyAgICB9CisgICAgCisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGNhbGxlZTsK
KyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFjaGluZUNvZGVUYXJnZXQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIExMSW50Q2FsbExpbmtJbmZvX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTA0ODYwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjMsNiArMTIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dl
dF9hcmd1bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkg
XAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAorICAgICAgICBt
YWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8o
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1
dF9ieV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmlj
LCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApAQCAtMjAyLDYgKzIwNCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIGVudW0geyBGT1JfRUFDSF9PUENP
REVfSUQoT1BDT0RFX0lEX0VOVU0pIH0gT3Bjb2RlSUQ7CiAgICAgI3VuZGVmIE9QQ09ERV9JRF9F
TlVNCiAKKyAgICBjb25zdCBpbnQgbWF4T3Bjb2RlTGVuZ3RoID0gOTsKICAgICBjb25zdCBpbnQg
bnVtT3Bjb2RlSURzID0gb3BfZW5kICsgMTsKIAogICAgICNkZWZpbmUgT1BDT0RFX0lEX0xFTkdU
SFMoaWQsIGxlbmd0aCkgY29uc3QgaW50IGlkIyNfbGVuZ3RoID0gbGVuZ3RoOwpAQCAtMjE4LDcg
KzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoVkVS
SUZZX09QQ09ERV9JRCk7CiAgICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQKIAotI2lmIEVOQUJM
RShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lO
VEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAjaWYgQ09NUElMRVIoUlZDVCkgfHwgQ09NUElM
RVIoSU5URUwpCiAgICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHAJKHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICsz
Myw3IEBACiAjaW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCIKICNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJMb3dM
ZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgogI2luY2x1ZGUgIlN0
cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCkBAIC0xMjY0LDkgKzEyNjUsNyBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9u
cygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIG1f
Y29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKTsKLSNlbmRpZgogICAgICAgICBlbWl0T3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/
IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE0MTksOSArMTQxOCw3IEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklU
KQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5z
aXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2Nr
LT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNl
bmRpZgogICAgIGVtaXRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9n
bG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENv
bnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDY2LDkgKzE0NjMsNyBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9j
ay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgot
I2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBlbWl0T3Bj
b2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBv
cF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmlu
ZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkp
OwpAQCAtMTQ4Niw5ICsxNDgxLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1ldGhv
ZENoZWNrKAogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVn
aXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0
eSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3Bl
cnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAg
ICAgZW1pdE9wY29kZShvcF9nZXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChk
c3QtPmluZGV4KCkpOwpAQCAtMTUxMyw5ICsxNTA2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRHZXRBcgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJl
Z2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVC
bG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkp
OwotI2VuZGlmCiAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTUzMSw5ICsxNTIyLDcgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRF
UlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihp
bnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgCiAgICAgZW1pdE9wY29kZShvcF9w
dXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAg
LTE4MjEsNyArMTgxMCwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENh
bGwoCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMoKSk7IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxB
cmd1bWVudHMucmVnaXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxF
KExMSU5UKQorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRD
YWxsTGlua0luZm8oKSk7CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNl
bmRpZgogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9y
ZWRSZXN1bHQoKSkgewogICAgICAgICBlbWl0T3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBA
IC0xOTIzLDcgKzE5MTYsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
b25zdAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxs
QXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJM
RShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50
Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Cisj
ZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25v
cmVkUmVzdWx0KCkpIHsKICAgICAgICAgZW1pdE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpA
QCAtMjE4Myw3ICsyMTgwLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
Q2F0Y2gKIHsKICAgICBtX3VzZXNFeGNlcHRpb25zID0gdHJ1ZTsKICNpZiBFTkFCTEUoSklUKQor
I2lmIEVOQUJMRShMTElOVCkKKyAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgw
LCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Nj
b3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoLCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9vcF9jYXRjaCkpIH07CisjZWxzZQogICAgIEhhbmRsZXJJbmZvIGlu
Zm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygp
LnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2Nh
dGlvbkxhYmVsKCkgfTsKKyNlbmRpZgogI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBz
dGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCks
IG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoIH07CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShy
ZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgyMyw3ICsxODIzLDkgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUo
b3BfZ2V0X2J5X2lkKTsKICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7
CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWw6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1
Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRl
bnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJl
bnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEs
NiArMTExLDggQEAgaW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAg
IGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6
CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9n
ZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bf
am1wOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUgIkRGR1JlcGF0Y2gu
aCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW5saW5lQVNN
LmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgpA
QCAtNTQ1LDQ1ICs1NDYsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJl
U3RyCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNvZGVk
SlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRl
KEV4ZWNTdGF0ZSopOwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9M
X1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIK
LSAgICAibW92ICVyMTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FU
SU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYg
Q1BVKFg4NikKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAi
XG4iCi0gICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVzcClc
biIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20g
KAotIi50ZXh0IiAiXG4iCi0iLmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5H
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICJcbiIKLSIudGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNf
UEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0
Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIK
LSAgICAiY3B5IHIwLCByNSIgIlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9O
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0K
LUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhF
eGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
ZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQotCiBzdGF0aWMgdm9p
ZCogaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4
ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9BbGxvY2F0aW9uU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9BbGxvY2F0aW9uU3BhY2UuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOworY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogY2xhc3MgTWFya2VkQmxvY2s7CiAKIGNsYXNzIEFsbG9jYXRpb25TcGFj
ZSB7CkBAIC02OCw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNocmluaygpOwogICAgIAog
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAog
ICAgIGVudW0gQWxsb2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRpb25NdXN0U3VjY2VlZCwgQWxsb2Nh
dGlvbkNhbkZhaWwgfTsKICAgICAKICAgICB2b2lkKiBhbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6
ZUNsYXNzJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24g
MTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgyOSw3ICs4MjksNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUg
c3dlZXBUb2dnCiAgICAgICAgIG1fb2JqZWN0U3BhY2Uuc2V0SGlnaFdhdGVyTWFyayhtYXgocHJv
cG9ydGlvbmFsQnl0ZXMsIG1fbWluQnl0ZXNQZXJDeWNsZSkpOwogICAgIH0KICAgICBKQVZBU0NS
SVBUQ09SRV9HQ19FTkQoKTsKLQorICAgIAogICAgICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMDQ4NjApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAg
IGNsYXNzIEpTVmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsK
ICAgICBjbGFzcyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTEyOSwxMCAr
MTMwLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJl
Z2lzdGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQWxs
b2NhdGlvblNwYWNlOwotICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
bWluRXh0cmFDb3N0ID0gMjU2OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4dHJh
Q29zdCA9IDEwMjQgKiAxMDI0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRTcGFjZS5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogY2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIExpdmVPYmplY3RJdGVy
YXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsK
IGNsYXNzIFNsb3RWaXNpdG9yOwogCkBAIC03OSw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVh
Y2hCbG9jaygpOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisgICAgCiAgICAgLy8gWyAzMi4uLiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXpl
X3QgcHJlY2lzZVN0ZXAgPSBNYXJrZWRCbG9jazo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBwcmVjaXNlQ3V0b2ZmID0gMjU2OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMTksNiArMTE5LDkgQEAgbmFtZXNwYWNlIEpTQyAgewogI2lmIEVOQUJMRShJTlRFUlBSRVRF
UikKICAgICAgICAgSW5zdHJ1Y3Rpb24qIHJldHVyblZQQygpIGNvbnN0IHsgcmV0dXJuIHRoaXNb
UmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10udlBDKCk7IH0KICNlbmRpZgorI2lmIEVOQUJMRShMTElO
VCkKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdCB7IHJldHVybiBiaXR3
aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPih0aGlzW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0u
dGFnKCkpOyB9CisjZW5kaWYKIAogICAgICAgICB2b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFt
ZSogY2FsbGVyRnJhbWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZp
bGU6OkNhbGxlckZyYW1lXSA9IGNhbGxlckZyYW1lOyB9CiAgICAgICAgIHZvaWQgc2V0U2NvcGVD
aGFpbihTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+
KHRoaXMpW1JlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0gPSBzY29wZUNoYWluOyB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJ
KHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRl
ICJKSVQuaCIKICNlbmRpZgogCi0jZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09S
S0FST1VORCAoRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpICYmICFkZWZpbmVkKF9f
bGx2bV9fKSkKKyNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EICgo
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkpICYmICFk
ZWZpbmVkKF9fbGx2bV9fKSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNTQ3LDE3ICs1
NDcsNDEgQEAgSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKIHsKIH0KIAotdm9pZCBJbnRlcnBy
ZXRlcjo6aW5pdGlhbGl6ZShib29sIGNhblVzZUpJVCkKK0ludGVycHJldGVyOjp+SW50ZXJwcmV0
ZXIoKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJM
RShMTElOVCkKKyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICBkZWxldGVbXSBtX29wY29kZVRh
YmxlOworI2VuZGlmCit9CisKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRh
dGEqIGxsaW50RGF0YSwgYm9vbCBjYW5Vc2VKSVQpCit7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dP
VE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKENPTVBVVEVEX0dP
VE9fSU5URVJQUkVURVIpCisgICAgLy8gSGF2aW5nIExMSW50IGVuYWJsZWQsIGJ1dCBub3QgYmVp
bmcgYWJsZSB0byB1c2UgdGhlIEpJVCwgYW5kIG5vdCBoYXZpbmcKKyAgICAvLyBhIGNvbXB1dGVk
IGdvdG8gaW50ZXJwcmV0ZXIsIGlzIG5vdCBzdXBwb3J0ZWQuIE5vdCBiZWNhdXNlIHdlIGNhbm5v
dAorICAgIC8vIHN1cHBvcnQgaXQsIGJ1dCBiZWNhdXNlIEkgZGVjaWRlZCB0byBkcmF3IHRoZSBs
aW5lIGF0IHRoZSBudW1iZXIgb2YKKyAgICAvLyBwZXJtdXRhdGlvbnMgb2YgZXhlY3V0aW9uIGVu
Z2luZXMgdGhhdCBJIHdhbnRlZCB0aGlzIGNvZGUgdG8gZ3Jvay4KKyAgICBBU1NFUlQoY2FuVXNl
SklUKTsKKyNlbmRpZgogICAgIGlmIChjYW5Vc2VKSVQpIHsKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgICAgIG1fb3Bjb2RlVGFibGUgPSBsbGludERhdGEtPm9wY29kZU1hcCgpOworICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQorICAgICAgICAgICAgbV9vcGNv
ZGVJRFRhYmxlLmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkp
OworI2Vsc2UKICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVzZW50LCBkb24ndCB1c2UganVt
cCBkZXN0aW5hdGlvbnMgZm9yIG9wY29kZXMuCiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2Rl
ID0gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpKTsKICAgICAg
ICAgICAgIG1fb3Bjb2RlVGFibGVbaV0gPSBvcGNvZGU7CiAgICAgICAgIH0KKyNlbmRpZgogICAg
IH0gZWxzZSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbmV3
IE9wY29kZVtudW1PcGNvZGVJRHNdOworI2VuZGlmCiAgICAgICAgIHByaXZhdGVFeGVjdXRlKElu
aXRpYWxpemVBbmRSZXR1cm4sIDAsIDApOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKQEAgLTY2Nyw5ICs2OTEsMTEgQEAgdm9pZCBJbnRl
cnByZXRlcjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbQogCiBib29sIEludGVycHJldGVyOjppc09w
Y29kZShPcGNvZGUgb3Bjb2RlKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJF
VEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJ
TlQpCisjaWYgIUVOQUJMRShMTElOVCkKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0
dXJuIG9wY29kZSA+PSAwICYmIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihvcGNvZGUpKSA8PSBvcF9lbmQ7CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2RlICE9
IEhhc2hUcmFpdHM8T3Bjb2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJhaXRz
PE9wY29kZT46OmlzRGVsZXRlZFZhbHVlKG9wY29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJRFRh
YmxlLmNvbnRhaW5zKG9wY29kZSk7CkBAIC03MjYsMTEgKzc1MiwxMSBAQCBORVZFUl9JTkxJTkUg
Ym9vbCBJbnRlcnByZXRlcjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAxLgog
I2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBpZiAoY2FsbGVyRnJh
bWUtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBj
b2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAg
IGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwg
Y2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICAgICBlbHNlCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7
CiAjZWxpZiBFTkFCTEUoSklUKQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRl
Y29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0g
Y29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5Q
QygpKTsKICNlbHNlCiAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zm
c2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbmRpZgpAQCAtNTE2NiwxMCArNTE5
MiwxMCBAQCB2b2lkIEludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgICAg
IGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJh
bWUtPnJldHVyblZQQygpKTsKICNpZiBFTkFCTEUoSklUKQogICAgIGVsc2UKLSAgICAgICAgYnl0
ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+
cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5i
eXRlY29kZU9mZnNldChjYWxsRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYK
ICNlbHNlCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zm
c2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJD
b2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygp
KTsKICNlbmRpZgogICAgIGxpbmVOdW1iZXIgPSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCAtIDEpOwogICAgIHNvdXJjZUlEID0gY2Fs
bGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lv
biAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5o
IgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUg
IkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmls
ZS5oIgogCkBAIC00NSw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0
aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFs
T2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9n
cmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWlu
Tm9kZTsKQEAgLTkwLDE5ICs5MiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElu
dGVycHJldGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQgY2xh
c3MgSklUOwogICAgIHB1YmxpYzoKICAgICAgICAgSW50ZXJwcmV0ZXIoKTsKKyAgICAgICAgfklu
dGVycHJldGVyKCk7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBjYW5V
c2VKSVQpOworICAgICAgICB2b2lkIGluaXRpYWxpemUoTExJbnQ6OkRhdGEqLCBib29sIGNhblVz
ZUpJVCk7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKSB7IHJldHVybiBt
X3JlZ2lzdGVyRmlsZTsgfQogICAgICAgICAKICAgICAgICAgT3Bjb2RlIGdldE9wY29kZShPcGNv
ZGVJRCBpZCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRF
RF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgICAgICByZXR1cm4g
bV9vcGNvZGVUYWJsZVtpZF07CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIGlkOwpAQCAtMTEy
LDcgKzExNiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2Rl
SUQoT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlh
bGl6ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJM
RShMTElOVCkKKyAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKKyAgICAgICAg
ICAgIHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CisjZWxpZiBFTkFCTEUoQ09N
UFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNv
ZGUpKTsKICAgICAgICAgICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSk7
CkBAIC0xMjIsNiArMTI5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJu
IG9wY29kZTsKICNlbmRpZgogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGVuYWJs
ZWQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9lbmFibGVkOworICAgICAgICB9
CiAKICAgICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCkBAIC0xODksNyArMjAxLDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSBtX3JlZ2lzdGVyRmlsZTsK
ICAgICAgICAgCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5B
QkxFKExMSU5UKQorICAgICAgICBPcGNvZGUqIG1fb3Bjb2RlVGFibGU7IC8vIE1hcHMgT3Bjb2Rl
SUQgPT4gT3Bjb2RlIGZvciBjb21waWxpbmcKKyAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29k
ZUlEPiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNv
bXBpbGluZworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAg
IE9wY29kZSBtX29wY29kZVRhYmxlW251bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQgPT4g
T3Bjb2RlIGZvciBjb21waWxpbmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBt
X29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGlu
ZwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0
ZXJGaWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1JlZ2lzdGVyRmlsZS5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAg
ICBjbGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IAogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFJlZ2lzdGVyRmlsZSk7CkBAIC04MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIqKTsK
ICAgICAgICAgdm9pZCByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9pZCBhZGRU
b0NvbW1pdHRlZEJ5dGVDb3VudChsb25nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFs
dWUuaCIKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIklubGluZUFTTS5oIgor
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNWYWx1ZUlubGluZU1ldGhvZHMuaCIK
KyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitleHRlcm4gIkMi
IEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUoKTsKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVS
Tl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0
YXRlKik7CisKKyNpZiBDUFUoWDg2XzY0KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5H
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgorICAgICJt
b3YgJXIxMywgJXJkaVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUoWDg2
KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAg
ICAibW92IC00MCglZWRpKSwgJWVkaVxuIgorICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgorICAg
ICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdp
dGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKK2FzbSAoCisiLnRl
eHQiICJcbiIKKyIuYWxpZ24gMiIgIlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIlxuIgorIi50aHVtYiIgIlxuIgorIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICI6IiAiXG4iCisgICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgorICAgICJj
cHkgcjAsIHI1IiAiXG4iCisgICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZW5kaWYKKworZXh0ZXJu
ICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0
Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1
ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorI2RlZmluZSBIb3N0Q2FsbFJldHVy
blZhbHVlX2gKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENBTExJTkdfQ09O
VkVOVElPTl9JU19TVERDQUxMCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9O
IENERUNMCisjZWxzZQorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTgorI2Vu
ZGlmCisKK25hbWVzcGFjZSBKU0MgeworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NB
TExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Cit9CisKKyNl
bmRpZiAvLyBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklULmNwcAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDggQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmlsZV93aWxsX2Nh
bGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX25ld19zY29wZSkKICAgICAgICAgREVGSU5F
X09QKG9wX3B1c2hfc2NvcGUpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAg
ICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9i
eV9pbmRleCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCkBAIC00ODcsNiArNDg5
LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX3Bvc3RfaW5jKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
cHJlX2RlYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9pbmMpCisgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2dsb2JhbCkKQEAgLTY5MCw3ICs2
OTQsNyBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAgICAgICAg
IGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gbV9jb2RlQmxvY2stPnN0cnVjdHVyZVN0dWJJbmZv
KG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mb1tpXS5wcm9wZXJ0eUFjY2Vzc0luZGV4KS5jYWxs
UmV0dXJuTG9jYXRpb247CiAgICAgfQogCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxF
KERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICBpZiAobV9jYW5CZU9wdGltaXplZCkgewog
ICAgICAgICBDb21wYWN0SklUQ29kZU1hcDo6RW5jb2RlciBqaXRDb2RlTWFwRW5jb2RlcjsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwg
bV9sYWJlbHMuc2l6ZSgpOyArK2J5dGVjb2RlT2Zmc2V0KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIEpJVENvZGUoKSB7IH0KICNlbmRpZgogICAgIHB1YmxpYzoKLSAg
ICAgICAgZW51bSBKSVRUeXBlIHsgSG9zdENhbGxUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9
OworICAgICAgICBlbnVtIEpJVFR5cGUgeyBOb25lLCBIb3N0Q2FsbFRodW5rLCBJbnRlcnByZXRl
clRodW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CiAgICAgICAgIAogICAgICAgICBzdGF0aWMg
SklUVHlwZSBib3R0b21UaWVySklUKCkKICAgICAgICAgewpAQCAtNjYsOCArNjYsMTkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gREZHSklUOwogICAgICAgICB9CiAgICAg
ICAgIAorICAgICAgICBzdGF0aWMgYm9vbCBpc09wdGltaXppbmdKSVQoSklUVHlwZSBqaXRUeXBl
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBERkdKSVQ7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBib29sIGlzQmFzZWxpbmVDb2RlKEpJVFR5
cGUgaml0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gSW50
ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEJhc2VsaW5lSklUOworICAgICAgICB9CisgICAg
ICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIEpJVENvZGUoKQorICAgICAgICAgICAgOiBt
X2ppdFR5cGUoTm9uZSkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTc1LDYgKzg2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICA6IG1fcmVmKHJlZikKICAgICAgICAgICAgICwg
bV9qaXRUeXBlKGppdFR5cGUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChqaXRUeXBl
ICE9IE5vbmUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yICEo
KSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCShyZXZpc2lv
biAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMywxNSArMzMsMjEgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRv
ci5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUg
IkxMSW50RW50cnlwb2ludHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIENvZGVCbG9ja1R5cGU+CiBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShF
eGVjU3RhdGUqIGV4ZWMsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBKSVRDb2Rl
JiBqaXRDb2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CisgICAgaWYgKGppdFR5cGUg
PT0gY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAog
ICAgIGlmICghZXhlYy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAK
ICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29k
ZTo6REZHSklUKQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZShleGVjLCBj
b2RlQmxvY2suZ2V0KCksIGppdENvZGUpOwpAQCAtNTUsMTAgKzYxLDcgQEAgaW5saW5lIGJvb2wg
aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoRXhlYwogICAgICAgICB9CiAgICAgICAgIGppdENvZGUg
PSBKSVQ6OmNvbXBpbGUoJmV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLmdldCgpKTsKICAg
ICB9Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRlY29kZUdlbmVy
YXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0
ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgorICAgIGNvZGVCbG9jay0+aGFu
ZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2RlQmxvY2stPnNldEpJ
VENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwogICAgIAogICAgIHJldHVy
biB0cnVlOwpAQCAtNjYsMTAgKzY5LDE1IEBAIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJv
cHJpYXRlKEV4ZWMKIAogaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0
ZShFeGVjU3RhdGUqIGV4ZWMsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywg
SklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5
Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUg
aml0VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
ID0gZXhlYy0+Z2xvYmFsRGF0YSgpOwogICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkK
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisgICAgY29kZUJsb2NrLT51bmxpbmtJbmNvbWlu
Z0NhbGxzKCk7CisgICAgCiAgICAgYm9vbCBkZmdDb21waWxlZCA9IGZhbHNlOwogICAgIGlmIChq
aXRUeXBlID09IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAgZGZnQ29tcGlsZWQgPSBERkc6OnRy
eUNvbXBpbGVGdW5jdGlvbihleGVjLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUsIGppdENvZGVX
aXRoQXJpdHlDaGVjayk7CkBAIC04NCwxMSArOTIsNyBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxl
RnVuY3Rpb25JZkFwcHJvcHJpCiAgICAgICAgIH0KICAgICAgICAgaml0Q29kZSA9IEpJVDo6Y29t
cGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCAmaml0Q29kZVdpdGhBcml0eUNoZWNr
KTsKICAgICB9Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRlY29k
ZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+aGFu
ZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgotICAgIAorICAgIGNv
ZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2Rl
QmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKICAgICAK
ICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhj
ZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRF
eGNlcHRpb25zLmNwcAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBF
eGNlcHRpb25IYW5kbGVyIGdlbmVyaWNUaHJvdyhKU0dsb2JhbERhCiAKIEV4Y2VwdGlvbkhhbmRs
ZXIgaml0VGhyb3coSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVjU3RhdGUqIGNhbGxGcmFt
ZSwgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSwgUmV0dXJuQWRkcmVzc1B0ciBmYXVsdExvY2F0aW9u
KQogewotICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBleGNl
cHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZmF1bHRM
b2NhdGlvbikpOworICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgY2FsbEZyYW1l
LCBleGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQo
Y2FsbEZyYW1lLCBmYXVsdExvY2F0aW9uKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE2NCw0NSArMjE2
NCwxMyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNh
bGxGcmFtZS0+Y2FsbGVlKCkpOwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigp
KTsKLSAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgp
LT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAg
ICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJp
byBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lz
dGVyRmlsZS0+Z3JvdyhjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBu
ZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50
cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3Npbmcg
YXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVn
aXN0ZXIqIHNyYyA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9
IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGludCBl
bmQgPSAtQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwot
ICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07
Ci0KLSAgICBlbmQgLT0gZGVsdGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAgICAg
ICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUg
PSBDYWxsRnJhbWU6OmNyZWF0ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1l
IDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0K
IERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAg
U1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZy
YW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBD
b2RlRm9yQ2FsbCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0
aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29k
ZUZvckNhbGwpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dF
eGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVU
VVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZy
YW1lKCkpKTsKIApAQCAtMjIxNSw3ICsyMTgzLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9p
ZCosIG9wX2NvbnN0cnVjdAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1l
LmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0Zv
cihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsK
KyAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVj
a0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0
KTsKICAgICBpZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9u
RnJvbU9wQ2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERS
RVNTLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJl
dmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VK
SVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgSlNJbnRlcmZh
Y2VKSVRfaAogI2RlZmluZSBKU0ludGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNv
bnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgi
CisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAi
TWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBMTEludENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2RlZmlu
ZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFDSU5H
IDAKKworI2VuZGlmIC8vIExMSW50Q29tbW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisK
KyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIu
aCIKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTElu
dCB7CisKK0RhdGE6OkRhdGEoKQorICAgIDogbV9leGNlcHRpb25JbnN0cnVjdGlvbnMobmV3IElu
c3RydWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdKQorICAgICwgbV9vcGNvZGVNYXAobmV3IE9w
Y29kZVtudW1PcGNvZGVJRHNdKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2Rl
TGVuZ3RoICsgMTsgKytpKQorICAgICAgICBtX2V4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBv
aW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFt
cG9saW5lKTsKKyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBtX29wY29kZU1h
cFtvcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUpOworICAgIEZP
Ul9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkpOworI3VuZGVmIE9QQ09ERV9FTlRSWQorfQor
CitEYXRhOjp+RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7
CisgICAgZGVsZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpM
TEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RGF0
YV9oCisjZGVmaW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlv
bjsKKworbmFtZXNwYWNlIExMSW50IHsKKworI2lmIEVOQUJMRShMTElOVCkKK2NsYXNzIERhdGEg
eworcHVibGljOgorICAgIERhdGEoKTsKKyAgICB+RGF0YSgpOworICAgIAorICAgIEluc3RydWN0
aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhj
ZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgp
CisgICAgeworICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgfQorcHJpdmF0ZToKKyAg
ICBJbnN0cnVjdGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgT3Bjb2RlKiBtX29w
Y29kZU1hcDsKK307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQpCisKKyNpZiBDT01QSUxFUihDTEFO
RykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlmCisKK2NsYXNzIERhdGEgewor
cHVibGljOgorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIE9wY29kZSog
b3Bjb2RlTWFwKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0K
K307CisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AK
KyNlbmRpZgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50RGF0YV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlw
b2ludHMuaCIKKworI2luY2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEu
aCIKKyNpbmNsdWRlICJMTEludFRodW5rcy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0
ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVu
Y3Rpb25FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFy
aXR5Q2hlY2spCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAg
IGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAgICBqaXRDb2RlID0gSklUQ29k
ZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRD
b2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9m
dW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSkpKSk7CisgICAgICAgICAgICBhcml0eUNoZWNrID0g
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KworICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgaml0
Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0
ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkpKSk7CisgICAgICAg
IGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaykpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIAorICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAg
IGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxF
bnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgICAg
IGFyaXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsQXJpdHlD
aGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBqaXRDb2RlID0gSklUQ29k
ZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2Vu
ZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgYXJpdHlDaGVjayA9IGds
b2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dl
bmVyYXRvcikuY29kZSgpOworfQorCit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEu
Y2FuVXNlSklUKCkpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihN
YWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZXZhbF9wcm9sb2d1ZSkpKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xv
YmFsRGF0YS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50
ZXJwcmV0ZXJUaHVuayk7Cit9CisKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0
YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9u
KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9wcm9ncmFtX3Byb2xvZ3Vl
KSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29k
ZShnbG9iYWxEYXRhLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRD
b2RlOjpJbnRlcnByZXRlclRodW5rKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2lu
dHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVu
dHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVudHJ5cG9pbnRz
X2gKKyNkZWZpbmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6
YXRpb25LaW5kLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFdmFsQ29kZUJsb2NrOwor
Y2xhc3MgSklUQ29kZTsKK2NsYXNzIEpTR2xvYmFsRGF0YTsKK2NsYXNzIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKK2NsYXNzIFByb2dyYW1Db2Rl
QmxvY2s7CisKK25hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50
KEpTR2xvYmFsRGF0YSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIEpJVENvZGUmLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2spOwordm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0ds
b2JhbERhdGEmLCBKSVRDb2RlJik7Cit2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFs
RGF0YSYsIEpJVENvZGUmKTsKKworaW5saW5lIHZvaWQgZ2V0RW50cnlwb2ludChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEV2YWxDb2RlQmxvY2sqLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAg
IGdldEV2YWxFbnRyeXBvaW50KGdsb2JhbERhdGEsIGppdENvZGUpOworfQorCitpbmxpbmUgdm9p
ZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvZ3JhbUNvZGVCbG9j
ayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoZ2xvYmFs
RGF0YSwgaml0Q29kZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5k
aWYgLy8gTExJbnRFbnRyeXBvaW50c19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKworI2lu
Y2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIklu
c3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxMSW50
Q29tbW9uLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBpbnRlcnByZXRlclRocm93KEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFs
RGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBl
eGNlcHRpb24gJXMuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7Cisj
ZW5kaWYKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhj
ZXB0aW9uLCBleGVjLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZXhlYywgZXhlYy0+cmV0
dXJuUEMoKSkpOworfQorCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2Vw
dGlvbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5s
bGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1
cm5Ub1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVM
UEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAocmV0dXJuVG9U
aHJvdykuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYK
KyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9u
LCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAK
KyAgICByZXR1cm4gZ2xvYmFsRGF0YS0+bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygp
OworfQorCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBw
YykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgp
OworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRp
b24gJXMgKGNhbGxUb1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlv
bigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxE
YXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJl
Z2luKCkpOworICAgIAorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJv
d19kdXJpbmdfY2FsbF90cmFtcG9saW5lKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxM
SW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRp
b25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
eGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNf
aAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3Ry
dWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisvLyBKdXN0IHRocm93IHRoZSBjdXJyZW50
bHkgYWN0aXZlIGV4Y2VwdGlvbiBpbiB0aGUgY29udGV4dCBvZiB0aGlzIGV4ZWMgc3RhdGUKKy8v
IGFuZCBzZXQgdXAgYWxsIG5lY2Vzc2FyeSBzdGF0ZS4KK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvdyhF
eGVjU3RhdGUqKTsKKworLy8gVGVsbHMgeW91IHdoZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQg
dG8gcmV0dXJuLXRvLXRocm93LCBhZnRlciB5b3UndmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBp
bmZvcm1hdGlvbiBuZWVkZWQgdG8gdGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiBy
ZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0
aGUgY3VycmVudCBQQyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdp
dmVzIHlvdSBhIFBDCisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28g
dG8sIHdoaWNoIHdoZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdp
dmUgeW91IGFuICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidz
CisvLyBleGNlcHRpb24gaGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBm
b3IgZXhjZXB0aW9uIGhhbmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1
cm4gdGhhdCBQQyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91
IHRocmVhZCBleGNlcHRpb24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9u
cyB1c2VkIGJ5CisvLyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3co
RXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhy
b3dpbmcgdG8gYSBjYWxsIHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5z
dHJ1Y3Rpb24qKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBM
TEludEV4Y2VwdGlvbnNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzM5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEhlbHBlcnMuaCIKKworI2luY2x1ZGUgIkFyZ3Vt
ZW50cy5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRo
cy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgorI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5o
IgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAi
SlNTdGF0aWNTY29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAi
SlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTExJbnRFeGNl
cHRpb25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9w
ZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKKyNkZWZp
bmUgTExJTlRfT1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRSKHBjW2luZGV4XS51Lm9wZXJhbmQp
KQorI2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5vcGVyYW5k
KSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsgICAgICAg
XAorICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgICAgIHZvaWQqIGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgICAgIHZvaWQqIGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgfSBwYWlyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
aW50NjRfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IF9fcnRf
dTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFp
ci5hID0gZmlyc3Q7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5i
ID0gc2Vjb25kOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19ydF91Lmk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVm
aW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykKKworI2RlZmlu
ZSBMTElOVF9USFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fdF9nbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFs
RGF0YSgpOyAgICAgICAgXAorICAgICAgICBfX3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhj
ZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgXAorICAgICAgICBwYyA9IHJldHVyblRvVGhyb3co
ZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9F
TkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpIGRvIHsg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmdsb2JhbERh
dGEoKS5leGNlcHRpb24pKSB7ICAgXAorICAgICAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4
ZWMsIHBjKTsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVm
aW5lIExMSU5UX0VORCgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VO
RF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
KyNkZWZpbmUgTExJTlRfQlJBTkNIKG9wY29kZSwgY29uZGl0aW9uKSBkbyB7ICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgYm9vbCBfX2JfY29uZGl0aW9uID0gKGNvbmRpdGlvbik7ICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9fYl9jb25k
aXRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgIHBjICs9IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsgICAgICAg
IFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bjb2RlKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxz
ZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAgICAgXAor
ICAgICAgICBKU1ZhbHVlIF9fcl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAorICAgICAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElO
VF9PUCgxKSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRf
SU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisj
ZGVmaW5lIExMSU5UX0NBTExfRU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJO
X1RXTygoY2FsbFRhcmdldCksIChleGVjKSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4
ZWMsIHBjLCBleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBF
eGVjU3RhdGUqIF9fY3RfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fY3RfZ2xv
YmFsRGF0YSA9IChfX2N0X2V4ZWMpLT5nbG9iYWxEYXRhKCk7ICAgICAgXAorICAgICAgICBfX2N0
X2dsb2JhbERhdGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3RfZXhlYywgY2FsbFRvVGhyb3co
X19jdF9leGVjLCBfX2N0X3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBM
TElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jY2VfcGMg
PSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAo
VU5MSUtFTFkoX19jY2VfZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9U
aHJvdyhfX2NjZV9leGVjLCBfX2NjZV9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNk
ZWZpbmUgTExJTlRfQ0FMTF9SRVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9f
Y3JfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgdm9pZCogX19jcl9jYWxsVGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19jcl9leGVj
LT5jYWxsZXJGcmFtZSgpLCBfX2NyX3BjKTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1Q
TChfX2NyX2V4ZWMsIF9fY3JfY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdo
aWxlIChmYWxzZSkKKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29w
ZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGlu
dCBvcGVyYW5kKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV1LCBvcCMl
dTogVHJhY2UoJWQpOiAlZDogJWRcbiIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAor
ICAgICAgICAgICBleGVjLAorICAgICAgICAgICBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJvbVdoZXJl
LAorICAgICAgICAgICBvcGVyYW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQp
OworICAgIExMSU5UX0VORCgpOworfQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxp
bnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9t
V2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKG9w
ZXJhbmQpLmpzVmFsdWUoKTsKKyAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yIGRlc2NyaXB0b3I7
CisgICAgZGVzY3JpcHRvci5hc0ludDY0ID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICBw
cmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMldSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVk
OiAlMDh4OiUwOHgiLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAg
ZXhlYywKKyAgICAgICAgICAgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRP
cGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGZyb21XaGVyZSwKKyAgICAgICAg
ICAgb3BlcmFuZCwKKyAgICAgICAgICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kLAorICAgICAgICAg
ICBkZXNjcmlwdG9yLmFzQml0cy50YWcsCisgICAgICAgICAgIGRlc2NyaXB0b3IuYXNCaXRzLnBh
eWxvYWQpOworI2lmbmRlZiBOREVCVUcKKyAgICBwcmludGYoIjogJXMiLCB2YWx1ZS5kZXNjcmlw
dGlvbigpKTsKKyNlbmRpZgorICAgIHByaW50ZigiXG4iKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpCit7CisgICAgcHJpbnRmKCIlcCAv
ICVwOiBpbiBwcm9sb2d1ZS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKKyAgICBMTElO
VF9FTkQoKTsKK30KKworc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkp
OworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRh
YmxlKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJhdGVk
Qnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlv
biAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51
bUNhbGxlZVJlZ2lzdGVycyA9ICV1LlxuIiwKKyAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBj
b21tZW50LCBjYWxsZWUsIGV4ZWN1dGFibGUsCisgICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1W
YXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJl
Z2lzdGVycyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9u
X2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBwcm9s
b2d1ZSIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFj
ZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JDb25z
dHJ1Y3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9h
cml0eUNoZWNrX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAi
Y2FsbCBhcml0eSBjaGVjayIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQoreworICAg
IHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IGFyaXR5IGNoZWNrIiwgQ29k
ZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KHRyYWNlKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV1LCAiLAorICAg
ICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAg
cGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisjaWZuZGVm
IE5ERUJVRworICAgIHByaW50ZigiJXMsICIsIG9wY29kZU5hbWVzW2V4ZWMtPmdsb2JhbERhdGEo
KS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpXSk7CisjZWxzZQorICAg
IHByaW50Zigib3AjJXUsICIsIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQocGNbMF0udS5vcGNvZGUpKTsKKyNlbmRpZgorICAgIHByaW50Zigic2NvcGUgJXBcbiIs
IGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKHNwZWNpYWxfdHJhY2UpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcg
c3BlY2lhbCBjYXNlIGJjIyV1LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAorICAgICAgICAg
ICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgcGMgLSBl
eGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwKKyAgICAgICAgICAgZXhl
Yy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSks
CisgICAgICAgICAgIGV4ZWMtPnJldHVyblBDKCkudmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK2lubGluZSBib29sIHNob3VsZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8g
WW91IGNhbiBtb2RpZnkgdGhpcyB0byB0dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWlsZGlu
ZyB0aGUgd29ybGQuCisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKQoreworICAgIGlmICghc2hvdWxkSklU
KGV4ZWMpKSB7CisgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5kb250SklUQW55dGltZVNvb24o
KTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgZXhlYy0+
Y29kZUJsb2NrKCktPmppdENvbXBpbGUoZXhlYyk7CisgICAgZXhlYy0+Y29kZUJsb2NrKCktPmpp
dFNvb24oKTsKKyAgICBMTElOVF9SRVRVUk5fVFdPKGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRKSVRD
b2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGVudHJ5X29zcl9hcml0eUNoZWNrKQoreworICAgIGlmICghc2hvdWxkSklUKGV4
ZWMpKSB7CisgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5kb250SklUQW55dGltZVNvb24oKTsK
KyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgZXhlYy0+Y29k
ZUJsb2NrKCktPmppdENvbXBpbGUoZXhlYyk7CisgICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdFNv
b24oKTsKKyAgICBMTElOVF9SRVRVUk5fVFdPKGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRKSVRDb2Rl
V2l0aEFyaXR5Q2hlY2soKS5leGVjdXRhYmxlQWRkcmVzcygpLCBleGVjKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0wobG9vcF9vc3IpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVj
LT5jb2RlQmxvY2soKTsKKyAgICAKKyAgICBpZiAoIXNob3VsZEpJVChleGVjKSkgeworICAgICAg
ICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgICAgICBMTElOVF9SRVRVUk5f
VFdPKDAsIGV4ZWMpOworICAgIH0KKyAgICAKKyAgICBjb2RlQmxvY2stPmppdENvbXBpbGUoZXhl
Yyk7CisgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgCisgICAgQVNTRVJUKGNvZGVCbG9j
ay0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAKKyAgICBWZWN0
b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiBtYXA7CisgICAgY29kZUJsb2NrLT5qaXRDb2Rl
TWFwKCktPmRlY29kZShtYXApOworICAgIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCogbWFwcGlu
ZyA9IGJpbmFyeVNlYXJjaDxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQsIHVuc2lnbmVkLCBCeXRl
Y29kZUFuZE1hY2hpbmVPZmZzZXQ6OmdldEJ5dGVjb2RlSW5kZXg+KG1hcC5iZWdpbigpLCBtYXAu
c2l6ZSgpLCBwYyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgQVNT
RVJUKG1hcHBpbmcpOworICAgIEFTU0VSVChtYXBwaW5nLT5tX2J5dGVjb2RlSW5kZXggPT0gc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
KSk7CisgICAgCisgICAgdm9pZCoganVtcFRhcmdldCA9IGNvZGVCbG9jay0+Z2V0SklUQ29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQobWFwcGluZy0+bV9tYWNoaW5lQ29kZU9mZnNldCk7
CisgICAgQVNTRVJUKGp1bXBUYXJnZXQpOworICAgIAorICAgIExMSU5UX1JFVFVSTl9UV08oanVt
cFRhcmdldCwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpCit7CisgICAg
aWYgKHNob3VsZEpJVChleGVjKSkgeworICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+aml0Q29t
cGlsZShleGVjKTsKKyAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdFNvb24oKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmRvbnRKSVRBbnl0aW1lU29vbigpOwor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxlX2No
ZWNrKQoreworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDaGVja2luZyBz
dGFjayBoZWlnaHQgd2l0aCBleGVjID0gJXAuXG4iLCBleGVjKTsKKyAgICBwcmludGYoIkNvZGVC
bG9jayA9ICVwLlxuIiwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAgIHByaW50ZigiTnVtIGNhbGxl
ZSByZWdpc3RlcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lz
dGVycyk7CisgICAgcHJpbnRmKCJOdW0gdmFycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCkt
Pm1fbnVtVmFycyk7CisjZW5kaWYKKyAgICBpZiAoVU5MSUtFTFkoIWV4ZWMtPmdsb2JhbERhdGEo
KS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbZXhl
Yy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7CisgICAgICAgIGV4ZWMg
PSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0
aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRl
clRocm93KGV4ZWMpOworICAgICAgICBwYyA9IHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRp
b24oZXhlYyk7CisgICAgfQorICAgIExMSU5UX0VORF9JTVBMKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVj
ID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5nbG9iYWxEYXRh
KCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ2FsbCk7CisgICAgaWYgKCFu
ZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBl
eGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4
ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93KGV4ZWMpOworICAgICAgICBMTElOVF9SRVRV
Uk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oMSksIGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9S
RVRVUk5fVFdPKDAsIG5ld0V4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29u
c3RydWN0X2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xv
d1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0
ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBpZiAoIW5ld0V4ZWMp
IHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmds
b2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Cisg
ICAgICAgIGludGVycHJldGVyVGhyb3coZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08o
Yml0d2lzZV9jYXN0PHZvaWQqPigxKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9U
V08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0
aXZhdGlvbikKK3sKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ3JlYXRp
bmcgYW4gYWN0aXZhdGlvbiFcbiIpOworI2VuZGlmCisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0
aW9uID0gSlNBY3RpdmF0aW9uOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLCBzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjLT5jb2RlQmxvY2soKS0+b3duZXJFeGVj
dXRhYmxlKCkpKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+
cHVzaChhY3RpdmF0aW9uKSk7CisgICAgTExJTlRfUkVUVVJOKEpTVmFsdWUoYWN0aXZhdGlvbikp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKK3sKKyAg
ICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpTVmFsdWUoQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgZXhl
Yy0+dW5jaGVja2VkUihwY1sxXS51Lm9wZXJhbmQpID0gYXJndW1lbnRzOworICAgIGV4ZWMtPnVu
Y2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpID0g
YXJndW1lbnRzOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY3JlYXRlX3RoaXMpCit7CisgICAgSlNGdW5jdGlvbiogY29uc3RydWN0b3IgPSBhc0Z1bmN0
aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgQ29u
c3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIEFTU0VSVChjb25zdHJ1Y3Rvci0+bWV0aG9k
VGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0YShjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSkgPT0g
Q29uc3RydWN0VHlwZUpTKTsKKyNlbmRpZgorICAgIAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
OworICAgIEpTVmFsdWUgcHJvdG8gPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKHBy
b3RvLmlzT2JqZWN0KCkpCisgICAgICAgIHN0cnVjdHVyZSA9IGFzT2JqZWN0KHByb3RvKS0+aW5o
ZXJpdG9ySUQoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBlbHNlCisgICAgICAgIHN0cnVjdHVy
ZSA9IGNvbnN0cnVjdG9yLT5zY29wZSgpLT5nbG9iYWxPYmplY3QtPmVtcHR5T2JqZWN0U3RydWN0
dXJlKCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMs
IHN0cnVjdHVyZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29udmVydF90aGlz
KQoreworICAgIEpTVmFsdWUgdjEgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJU
KHYxLmlzUHJpbWl0aXZlKCkpOworICAgIExMSU5UX1JFVFVSTih2MS50b1RoaXNPYmplY3QoZXhl
YykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVjdCkKK3sKKyAgICBM
TElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYykpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmV3X2FycmF5KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RB
cnJheShleGVjLCBiaXR3aXNlX2Nhc3Q8SlNWYWx1ZSo+KCZMTElOVF9PUCgyKSksIHBjWzNdLnUu
b3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZl
cikKK3sKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgZXhlYy0+Y29kZUJs
b2NrKCktPmNvbnN0YW50QnVmZmVyKHBjWzJdLnUub3BlcmFuZCksIHBjWzNdLnUub3BlcmFuZCkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCkKK3sKKyAgICBSZWdF
eHAqIHJlZ0V4cCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZWdleHAocGNbMl0udS5vcGVyYW5kKTsK
KyAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVT
eW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBmbGFnIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1
Y3Rvci4iKSk7CisgICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdFeHApKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25vdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2VxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6
ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKQoreworICAgIExMSU5U
X1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3N0cmljdGVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1
ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVx
KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OnN0cmljdEVxdWFsKGV4
ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xl
c3NlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPHRydWU+KGV4ZWMs
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2dyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPGZhbHNl
PihleGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKQoreworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKyAx
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKQoreworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSAx
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYykKK3sKKyAgICBkb3Vi
bGUgcmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExM
SU5UX09QKDIpID0ganNOdW1iZXIocmVzdWx0ICsgMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKHJlc3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9kZWMpCit7
CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVj
KTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCAtIDEpOworICAgIExMSU5UX1JF
VFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rv
X2pzbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bmVnYXRlKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcigtTExJTlRfT1AoMikuanNWYWx1
ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQp
Cit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFs
dWUgdjIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyNpZiBMTElOVF9IRUxQRVJf
VFJBQ0lORworICAgIHByaW50ZigiVHJ5aW5nIHRvIGFkZCAlcyIsIHYxLmRlc2NyaXB0aW9uKCkp
OworICAgIHByaW50ZigiIHRvICVzLlxuIiwgdjIuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAg
ICAKKyAgICBpZiAodjEuaXNTdHJpbmcoKSkgeworICAgICAgICBMTElOVF9SRVRVUk4oCisgICAg
ICAgICAgICB2Mi5pc1N0cmluZygpCisgICAgICAgICAgICA/IGpzU3RyaW5nKGV4ZWMsIGFzU3Ry
aW5nKHYxKSwgYXNTdHJpbmcodjIpKQorICAgICAgICAgICAgOiBqc1N0cmluZyhleGVjLCBhc1N0
cmluZyh2MSksIHYyLnRvUHJpbWl0aXZlU3RyaW5nKGV4ZWMpKSk7CisgICAgfQorICAgIAorICAg
IGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCisgICAgICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcih2MS5hc051bWJlcigpICsgdjIuYXNOdW1iZXIoKSkpOworICAgIAorICAgIExM
SU5UX1JFVFVSTihqc0FkZFNsb3dDYXNlKGV4ZWMsIHYxLCB2MikpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbXVsKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAqIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVt
YmVyKGV4ZWMpIC0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RpdikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLyBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbW9kKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihmbW9kKExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051
bWJlcihleGVjKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCkKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQz
MihleGVjKSA8PCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KQoreworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpID4+IExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl91cnNoaWZ0KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSA+PiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50
b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKQor
eworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0lu
dDMyKGV4ZWMpICYgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3IpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
TnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgfCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9iaXR4b3IpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvSW50MzIoZXhlYykgXiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMy
KGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKH5MTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVj
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQor
eworICAgIEpTVmFsdWUgYmFzZVZhbCA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyNpZm5kZWYg
TkRFQlVHCisgICAgVHlwZUluZm8gdHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKTsKKyAgICBBU1NF
UlQoIWJhc2VWYWwuaXNPYmplY3QoKQorICAgICAgICAgICB8fCAhKHR5cGVJbmZvID0gYXNPYmpl
Y3QoYmFzZVZhbCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpKS5pbXBsZW1lbnRzSGFzSW5zdGFu
Y2UoKSk7CisjZW5kaWYKKyAgICBMTElOVF9USFJPVyhjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihl
eGVjLCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2luc3RhbmNlb2YpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93
UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3coZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQpLmpzVmFsdWUoKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNU
eXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCkKK3sKKyAgICBKU1ZhbHVlIHYg
PSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKHYu
aXNDZWxsKCkgPyB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKCkgOiB2LmlzVW5kZWZpbmVkKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2lzX2Jvb2xlYW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaXNfbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfc3RyaW5nKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oaXNKU1N0cmlu
ZyhMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2lzX29iamVjdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNPYmplY3RU
eXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfZnVuY3Rpb24pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVu
Y3Rpb25UeXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfaW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93
UGF0aHM6Om9wSW4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSkKK3sK
KyAgICBMTElOVF9SRVRVUk4oQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+
Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKQoreworICAgIExMSU5UX1JFVFVSTigKKyAg
ICAgICAgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVTa2lwKAorICAgICAgICAgICAgZXhlYywK
KyAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFu
ZCksCisgICAgICAgICAgICBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9i
YWxPYmplY3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0udS5vcGVyYW5kOworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgCisgICAg
QVNTRVJUX1VOVVNFRChzdHJ1Y3R1cmUsIHN0cnVjdHVyZSAhPSBnbG9iYWxPYmplY3QtPnN0cnVj
dHVyZSgpKTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRp
Zmllcihwcm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsKKyAg
ICAKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNs
b3QpKSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVu
dCk7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYg
c2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgcGNbM10udS5z
dHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAg
ICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIExMSU5UX1JFVFVSTihyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9U
SFJPVyhjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAgSWRlbnRpZmllciYg
aWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOwor
ICAgIGlmIChwY1szXS51Lm9wZXJhbmQpIHsKKyAgICAgICAgSlNWYWx1ZSBiYXNlID0gSlNDOjpy
ZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCB0cnVlKTsKKyAgICAg
ICAgaWYgKCFiYXNlKQorICAgICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZh
bGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICAgICAgTExJ
TlRfUkVUVVJOKGJhc2UpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oSlNDOjpyZXNv
bHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKK3sKKyAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+
Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIW9iamVj
dC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkKKyAgICAgICAgTExJTlRfVEhS
T1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3Ry
aW5nKCkpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfd2l0aF9iYXNlKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1Bh
dGhzOjpvcFJlc29sdmVXaXRoQmFzZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmll
cihwY1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKK3sKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aFRoaXMoZXhlYywgZXhl
Yy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5
X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Cisg
ICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVy
YW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwor
ICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOworICAgIExMSU5UX09QKDEpID0gcmVzdWx0OworCisgICAgaWYgKGJhc2VWYWx1ZS5p
c0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkKKyAgICAgICAgJiYgc2xvdC5z
bG90QmFzZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAmJiBzbG90LmNhY2hlZFByb3BlcnR5VHlw
ZSgpID09IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCog
YmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1
Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKKyAgICAgICAgICAg
IHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRh
KCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAg
ICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUp
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCit7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9
IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJh
c2VWYWx1ZSk7CisgICAgTExJTlRfUkVUVVJOKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNs
b3QpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCkKK3sKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXIm
IGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBiYXNlVmFsdWUucHV0
KGV4ZWMsIGlkZW50LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAg
ICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCog
YmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1
Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkKKyAgICAgICAgICAgICYm
IGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlm
IChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CisgICAgICAg
ICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIHN0cnVjdHVyZS0+cHJl
dmlvdXNJRCgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IHN0cnVjdHVyZS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVQcm90
b3R5cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkp
OworICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9v
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOworICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAg
ICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0
dXJlLT5wcmV2aW91c0lEKCkpOworICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQg
PSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAg
ICAgICBwY1s2XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVj
LT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7
CisgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IHN0cnVjdHVyZS0+
cHJvdG90eXBlQ2hhaW4oZXhlYyk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFpbik7
CisgICAgICAgICAgICAgICAgICAgIHBjWzddLnUuc3RydWN0dXJlQ2hhaW4uc2V0KAorICAgICAg
ICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhl
Y3V0YWJsZSgpLCBjaGFpbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X29wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUu
c2V0KAorICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgcGNbNV0udS5v
cGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7CisgICAgYm9vbCBjb3VsZERlbGV0
ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3Qs
IGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpKTsKKyAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVj
LCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihjb3VsZERlbGV0ZSkpOworfQorCitpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKK3sKKyAgICBp
ZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsK
KyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0
T3duUHJvcGVydHkoZXhlYywgYXNTdHJpbmcoc3Vic2NyaXB0KS0+dmFsdWUoZXhlYykpKQorICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgaWYgKHN1YnNjcmlwdC5p
c1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsK
KyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUp
LT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc1N0cmluZyhiYXNlVmFsdWUp
LT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5
KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkp
CisgICAgICAgICAgICByZXR1cm4gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhl
YywgaSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBpKTsK
KyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9T
dHJpbmcoZXhlYykpOworICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5KTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV92YWwpCit7CisgICAgTExJTlRf
UkVUVVJOKGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3Vt
ZW50X2J5X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IExMSU5UX09QKDIpLmpzVmFs
dWUoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykgeworICAgICAgICBhcmd1bWVudHMgPSBBcmd1bWVu
dHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpOworICAgICAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICAgICAgTExJTlRfT1AoMikgPSBhcmd1bWVudHM7CisgICAgICAg
IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3Bl
cmFuZCkpID0gYXJndW1lbnRzOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlW
YWwoZXhlYywgYXJndW1lbnRzLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKQoreworICAgIExMSU5UX1JFVFVSTihn
ZXRCeVZhbChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCkKK3sKKyAgICBK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAg
SlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUg
PSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBpZiAoTElLRUxZKHN1YnNjcmlw
dC5pc1VJbnQzMigpKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMy
KCk7CisgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgeworICAgICAgICAgICAgSlNB
cnJheSoganNBcnJheSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChqc0Fy
cmF5LT5jYW5TZXRJbmRleChpKSkKKyAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRleChn
bG9iYWxEYXRhLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
SlNBcnJheTo6cHV0QnlJbmRleChqc0FycmF5LCBleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgICAg
ICBMTElOVF9FTkQoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNl
VmFsdWUpCisgICAgICAgICAgICAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJ
bmRleChpKSkgeworICAgICAgICAgICAgSlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRl
QXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAg
ICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNJbnQzMigpKTsK
KyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmICh2YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNl
dEluZGV4KGksIHZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywg
aSwgdmFsdWUpOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSWRlbnRp
ZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYykpOworICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGV4ZWMtPmNvZGVC
bG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0
eSwgdmFsdWUsIHNsb3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZGVsX2J5X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRv
T2JqZWN0KGV4ZWMpOworICAgIAorICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCk7CisgICAgCisgICAgYm9vbCBjb3VsZERlbGV0ZTsKKyAgICAKKyAgICB1aW50
MzJfdCBpOworICAgIGlmIChzdWJzY3JpcHQuZ2V0VUludDMyKGkpKQorICAgICAgICBjb3VsZERl
bGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChi
YXNlT2JqZWN0LCBleGVjLCBpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CisgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRv
U3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAg
IGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHko
YmFzZU9iamVjdCwgZXhlYywgcHJvcGVydHkpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNvdWxk
RGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJ
TlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5
LiIpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpCit7CisgICAgTExJTlRf
T1AoMSkuanNWYWx1ZSgpLnB1dChleGVjLCBwY1syXS51Lm9wZXJhbmQsIExMSU5UX09QKDMpLmpz
VmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wdXRfZ2V0dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmpl
Y3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1Zh
bHVlKCkpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50
aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNWYWx1ZSgp
LmlzT2JqZWN0KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZUdldHRlcihi
YXNlT2JqLCBleGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfc2V0
dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7Cisg
ICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOwor
ICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNb
Ml0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNWYWx1ZSgpLmlzT2JqZWN0
KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZVNldHRlcihiYXNlT2JqLCBl
eGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKQorewor
ICAgIHVuc2lnbmVkIGNvdW50ID0gcGNbMV0udS5vcGVyYW5kOworICAgIFNjb3BlQ2hhaW5Ob2Rl
KiB0bXAgPSBleGVjLT5zY29wZUNoYWluKCk7CisgICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAg
IHRtcCA9IHRtcC0+cG9wKCk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbih0bXApOworICAgIHBj
ICs9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2p0cnVlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qdHJ1ZSwgTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2pmYWxzZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamZhbHNlLCAhTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2psZXNzKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzcywganNMZXNzPHRy
dWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKQoreworICAgIExMSU5U
X0JSQU5DSChvcF9qbmxlc3MsICFqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXIsIGpzTGVz
czxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpCit7Cisg
ICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlciwgIWpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbGVz
c2VxLCBqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVz
c2VxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmxlc3NlcSwgIWpzTGVzc0VxPHRydWU+KGV4
ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9C
UkFOQ0gob3BfamdyZWF0ZXJlcSwganNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfam5ncmVhdGVyZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRl
cmVxLCAhanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dp
dGNoX2ltbSkKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QKDMpLmpzVmFsdWUo
KTsKKyAgICBBU1NFUlQoc2NydXRpbmVlLmlzRG91YmxlKCkpOworICAgIGRvdWJsZSB2YWx1ZSA9
IHNjcnV0aW5lZS5hc0RvdWJsZSgpOworICAgIGludDMyX3QgaW50VmFsdWUgPSBzdGF0aWNfY2Fz
dDxpbnQzMl90Pih2YWx1ZSk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJh
bmQ7CisgICAgaWYgKHZhbHVlID09IGludFZhbHVlKSB7CisgICAgICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+aW1t
ZWRpYXRlU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoaW50
VmFsdWUsIGRlZmF1bHRPZmZzZXQpOworICAgIH0gZWxzZQorICAgICAgICBwYyArPSBkZWZhdWx0
T2Zmc2V0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
c3dpdGNoX3N0cmluZykKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QKDMpLmpz
VmFsdWUoKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBp
ZiAoIXNjcnV0aW5lZS5pc1N0cmluZygpKQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0Owor
ICAgIGVsc2UgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9j
aygpOworICAgICAgICBwYyArPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShwY1sx
XS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGFzU3RyaW5nKHNjcnV0aW5lZSktPnZhbHVlKGV4
ZWMpLmltcGwoKSwgZGVmYXVsdE9mZnNldCk7CisgICAgfQorICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmMpCit7CisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2Rl
VHlwZSgpICE9IEZ1bmN0aW9uQ29kZQorICAgICAgICAgICB8fCAhY29kZUJsb2NrLT5uZWVkc0Z1
bGxTY29wZUNoYWluKCkKKyAgICAgICAgICAgfHwgZXhlYy0+dW5jaGVja2VkUihjb2RlQmxvY2st
PmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpOworI2lmIExMSU5UX0hFTFBFUl9UUkFD
SU5HCisgICAgcHJpbnRmKCJDcmVhdGluZyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJ
TlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzJdLnUub3BlcmFuZCktPm1ha2Uo
ZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uZXdfZnVuY19leHApCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2Rl
QmxvY2soKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5m
dW5jdGlvbkV4cHIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVu
Y3Rpb24tPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICAKKyAgICBpZiAoIWZ1
bmN0aW9uLT5uYW1lKCkuaXNOdWxsKCkpIHsKKyAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCog
ZnVuY3Rpb25TY29wZU9iamVjdCA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBm
dW5jdGlvbi0+bmFtZSgpLCBmdW5jLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBm
dW5jLT5zZXRTY29wZShleGVjLT5nbG9iYWxEYXRhKCksIGZ1bmMtPnNjb3BlKCktPnB1c2goZnVu
Y3Rpb25TY29wZU9iamVjdCkpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZnVuYyk7
Cit9CisKK3N0YXRpYyBIZWxwZXJSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSog
ZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNh
bGxlckZyYW1lKCk7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2Jh
bERhdGEoKTsKKworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFp
bigpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CisKKyAgICBpZiAoa2luZCA9
PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShjYWxsZWUsIGNhbGxEYXRhKTsKKyAgICAKKyAg
ICAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlSlMpOworICAgIAorICAgICAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGVIb3N0KSB7CisgICAgICAgICAgICBnbG9iYWxEYXRhLT5ob3N0
Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlv
bihleGVjQ2FsbGVlKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIExMSU5UX0NBTExfUkVU
VVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSk7CisgICAgICAgIH0KKyAgICAgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJ
TkcKKyAgICAgICAgcHJpbnRmKCJDYWxsIGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIs
IGNhbGxlZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorCisgICAgICAgIEFTU0VSVChjYWxsVHlw
ZSA9PSBDYWxsVHlwZU5vbmUpOworICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBj
cmVhdGVOb3RBRnVuY3Rpb25FcnJvcihleGVjLCBjYWxsZWUpKTsKKyAgICB9CisKKyAgICBBU1NF
UlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAKKyAgICBDb25zdHJ1Y3REYXRhIGNv
bnN0cnVjdERhdGE7CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3Ry
dWN0RGF0YShjYWxsZWUsIGNvbnN0cnVjdERhdGEpOworICAgIAorICAgIEFTU0VSVChjb25zdHJ1
Y3RUeXBlICE9IENvbnN0cnVjdFR5cGVKUyk7CisgICAgCisgICAgaWYgKGNvbnN0cnVjdFR5cGUg
PT0gQ29uc3RydWN0VHlwZUhvc3QpIHsKKyAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1
cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihl
eGVjQ2FsbGVlKSk7CisgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgfQor
ICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgICAgIHByaW50ZigiQ29uc3RydWN0
b3IgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkp
OworI2VuZGlmCisKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9u
ZSk7CisgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUNvbnN0cnVjdG9y
RXJyb3IoZXhlYywgY2FsbGVlKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIHNldFVw
Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExpbmtJbmZv
KiBjYWxsTGlua0luZm8gPSAwKQoreworICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwg
PSBnZXRKU0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOworICAgIGlmICghY2FsbGVlQXNGdW5jdGlv
bkNlbGwpCisgICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2Fs
bGVlQXNWYWx1ZSwga2luZCk7CisgICAgCisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5j
dGlvbihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFp
bihjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRh
YmxlID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIGNvZGVQdHI7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOworICAgIGlmIChleGVj
dXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+
Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIGVsc2Ugewor
ICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19j
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOworICAgICAgICBKU09iamVjdCog
ZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVl
LT5zY29wZSgpLCBraW5kKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgTExJTlRf
Q0FMTF9USFJPVyhleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOworICAgICAg
ICBjb2RlQmxvY2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihr
aW5kKTsKKyAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgICAgIGlmIChleGVjQ2FsbGVl
LT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25F
eGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVy
YXRlZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICB9CisgICAgCisgICAg
aWYgKGNhbGxMaW5rSW5mbykgeworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLT5pc09uTGlzdCgp
KQorICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5yZW1vdmUoKTsKKyAgICAgICAgRXhlY1N0YXRl
KiBleGVjQ2FsbGVyID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgY2FsbExp
bmtJbmZvLT5jYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+
Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlu
a0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKKyAgICAgICAgaWYgKGNvZGVCbG9j
aykKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChjYWxsTGlua0luZm8p
OworICAgIH0KKyAgICAKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgY29k
ZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUg
Z2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0
IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBj
b21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIElmIHBvc3NpYmxlLCBsaW5rIHRoZSBj
YWxsJ3MgaW5saW5lIGNhY2hlLgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBj
b2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpT
VmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBF
eGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIAorICAg
IGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFu
ZCk7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBj
YWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAg
IAorICAgIEFTU0VSVChwY1s0XS51LmNhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJuIHNldFVwQ2Fs
bChleGVjQ2FsbGVlLCBwYywga2luZCwgY2FsbGVlQXNWYWx1ZSwgcGNbNF0udS5jYWxsTGlua0lu
Zm8pOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCkKK3sKKyAgICByZXR1cm4g
Z2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDYWxsKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMs
IENvZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92
YXJhcmdzKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAgYSBjYWxs
IGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4KKyAgICAvLyAt
IEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAg
ICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5k
IHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBM
TElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUg
PSBsb2FkVmFyYXJncygKKyAgICAgICAgZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnBy
ZXRlci0+cmVnaXN0ZXJGaWxlKCksCisgICAgICAgIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5vcGVyYW5kKTsKKyAgICBMTElOVF9DQUxM
X0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYyk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+dW5jaGVj
a2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxs
ZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIoUmVnaXN0ZXJG
aWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90PihwYyArIE9Q
Q09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSk7CisgICAgCisgICAgcmV0dXJuIHNldFVwQ2Fs
bChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKQoreworICAgIEpTVmFsdWUgY2FsbGVlQXNW
YWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWND
YWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUt
PnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0
ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29w
ZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMo
Yml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4oJmxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7
CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworICAgIGV4ZWMtPnVuY2hlY2tlZFIo
UmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90
PihwYyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7CisgICAgCisgICAgaWYgKCFpc0hv
c3RGdW5jdGlvbihjYWxsZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpCisgICAgICAgIHJldHVy
biBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsK
KyAgICAKKyAgICBnbG9iYWxEYXRhLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBldmFsKGV4ZWNDYWxs
ZWUpOworICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9j
YXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQoreworICAgIEFTU0VSVChleGVjLT5jb2Rl
QmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBKU1ZhbHVlIGFjdGl2YXRpb25W
YWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFjdGl2YXRpb25WYWx1ZSkg
eworICAgICAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKSB7CisgICAgICAgICAg
ICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAg
ICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAgfQorICAgICAgICBMTElO
VF9FTkQoKTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0
aW9uKGFjdGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihleGVjLT5nbG9i
YWxEYXRhKCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpCisgICAgICAg
IGFzQXJndW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IGFjdGl2YXRpb24pOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQoreworICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2so
KS0+dXNlc0FyZ3VtZW50cygpICYmICFleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVD
aGFpbigpKTsKKyAgICBhc0FyZ3VtZW50cyhleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpLT50ZWFyT2ZmKGV4ZWMp
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0
KQoreworICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhleGVjLCAmTExJTlRfT1AoMiksIHBjWzNd
LnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZl
KQoreworICAgIExMSU5UX1JFVFVSTihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1ByaW1pdGl2
ZShleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKQorewor
ICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAodi5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBjICs9IHBjWzVdLnUub3BlcmFuZDsKKyAgICAgICAg
TExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChl
eGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVjdHVyZSgpOworICAgIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBzdHJ1Y3R1cmUt
PmVudW1lcmF0aW9uQ2FjaGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlOYW1lSXRlcmF0b3IgfHwg
anNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4oKSAhPSBzdHJ1Y3R1
cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpKQorICAgICAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9y
ID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8pOworICAgIAorICAgIExM
SU5UX09QKDEpID0gSlNWYWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKKyAgICBMTElOVF9P
UCgyKSA9IEpTVmFsdWUobyk7CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rlcjo6d2l0aEludCgw
KTsKKyAgICBMTElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJvcGVydHlOYW1lSXRl
cmF0b3ItPnNpemUoKSk7CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcG5h
bWVzKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
eHRfcG5hbWUpCit7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChMTElOVF9PUCgyKS5q
c1ZhbHVlKCkpOworICAgIEpTU3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3RyaW5nKExMSU5UX09QKDEp
LmpzVmFsdWUoKSk7CisgICAgaWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIo
ZXhlYywgcHJvcGVydHktPnZhbHVlKGV4ZWMpKSkpIHsKKyAgICAgICAgLy8gR28gdG8gdGFyZ2V0
LgorICAgICAgICBwYyArPSBwY1s2XS51Lm9wZXJhbmQ7CisgICAgfSAvLyBFbHNlLCBkb24ndCBj
aGFuZ2UgdGhlIFBDLCBzbyB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxvb3AuCisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKQoreworICAg
IEpTVmFsdWUgdiA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogbyA9IHYu
dG9PYmplY3QoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAg
TExJTlRfT1AoMSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFp
bigpLT5wdXNoKG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3BvcF9zY29wZSkKK3sKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMt
PnNjb3BlQ2hhaW4oKS0+cG9wKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogc2NvcGUgPSBKU1N0YXRpY1Nj
b3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3Bl
cmFuZCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgRG9udERlbGV0ZSk7CisgICAgZXhlYy0+c2V0
U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goc2NvcGUpKTsKKyAgICBMTElOVF9S
RVRVUk4oc2NvcGUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpCit7Cisg
ICAgTExJTlRfVEhST1coTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQoreworICAgIExMSU5UX1RIUk9X
KGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvU3Ry
aW5nKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1ZykKK3sKKyAg
ICBpbnQgZGVidWdIb29rSUQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgaW50IGZpcnN0TGluZSA9
IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgbGFzdExpbmUgPSBwY1szXS51Lm9wZXJhbmQ7Cisg
ICAgCisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5kZWJ1ZyhleGVjLCBzdGF0
aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsK
KyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3By
b2ZpbGVfd2lsbF9jYWxsKQoreworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVy
ZW5jZSgpKS0+d2lsbEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2Nh
bGwpCit7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT5kaWRF
eGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIExMSW50SGVscGVyc19oCisjZGVmaW5lIExMSW50SGVscGVyc19oCisKKyNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7
CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKK3R5cGVkZWYgaW50
NjRfdCBIZWxwZXJSZXR1cm5UeXBlOworCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxp
bnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUs
IGludCBvcGVyYW5kKTsKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV92
YWx1ZShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5k
KTsKKworI2RlZmluZSBMTElOVF9IRUxQRVJfREVDTChuYW1lKSBcCisgICAgZXh0ZXJuICJDIiBI
ZWxwZXJSZXR1cm5UeXBlIGxsaW50XyMjbmFtZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9u
KiBwYykKKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpOworTExJTlRfSEVMUEVS
X0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RF
Q0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJf
REVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNl
X2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZSk7CitM
TElOVF9IRUxQRVJfREVDTChzcGVjaWFsX3RyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5
X29zcik7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfYXJpdHlDaGVjayk7CitMTElOVF9I
RUxQRVJfREVDTChsb29wX29zcik7CitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0
X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9u
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y29udmVydF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfb2JqZWN0KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25ld19hcnJheV9idWZmZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdl
eHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3Rl
cSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3ByZV9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9kZWMpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0
X2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25lZ2F0ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3N1Yik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9tb2QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNo
aWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2JpdG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y2hlY2tfaGFzX2luc3RhbmNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9m
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX3VuZGVmaW5lZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVh
bik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pc19zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX29iamVj
dCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2luKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Jlc29sdmVfZ2xvYmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZl
X2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRz
X2xlbmd0aCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dl
dF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHV0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5
X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
dXRfc2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qdHJ1ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZh
bHNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcyk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfam5sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcik7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfam5ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9pbW0pOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9jaGFyKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9zd2l0Y2hfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVu
Yyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmNfZXhwKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3Qp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY2FsbF9ldmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29m
Zl9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVu
dHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNhdCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfdG9fcHJpbWl0aXZlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5h
bWVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXh0X3BuYW1lKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bf
c2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhy
b3dfcmVmZXJlbmNlX2Vycm9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1Zyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
TExJbnQKKworI2VuZGlmIC8vIExMSW50SGVscGVyc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmln
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludE9mZmxpbmVBc21Db25maWdfaAor
I2RlZmluZSBMTEludE9mZmxpbmVBc21Db25maWdfaAorCisjaW5jbHVkZSAiTExJbnRDb21tb24u
aCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorCisjaWYgQ1BVKFg4NikKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDEKKyNlbHNlCisjZGVm
aW5lIE9GRkxJTkVfQVNNX1g4NiAwCisjZW5kaWYKKworI2lmIENQVShBUk12NykKKyNkZWZpbmUg
T0ZGTElORV9BU01fQVJNdjcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMAor
I2VuZGlmCisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VS
VF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDAK
KyNlbmRpZgorCisjaWYgQ1BVKEJJR19FTkRJQU4pCisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19F
TkRJQU4gMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAwCisjZW5kaWYK
KworI2lmIEVOQUJMRShMTElOVF9PU1JfVE9fSklUKQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRf
RU5BQkxFRCAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAwCisjZW5k
aWYKKworI2lmIExMSU5UX0VYRUNVVElPTl9UUkFDSU5HCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VY
RUNVVElPTl9UUkFDSU5HIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9U
UkFDSU5HIDAKKyNlbmRpZgorCisjZW5kaWYgLy8gTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQWxsb2NhdGlvblNwYWNlLmgiCisjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkhlYXAuaCIKKyNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAi
SlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgor
I2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5o
IgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlN0eXBlSW5mby5oIgorI2luY2x1
ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRl
ICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorI2lu
Y2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKyNpbmNsdWRl
ICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlZh
bHVlUHJvZmlsZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKworbmFtZXNw
YWNlIEpTQyB7CisKKyNkZWZpbmUgT0ZGTElORV9BU01fT0ZGU0VUT0YoY2xhenosIGZpZWxkKSBP
QkpFQ1RfT0ZGU0VUT0YoY2xhenosIGZpZWxkKQorCitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3IgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCogZHVtbXkoKTsKK307CisK
K2NvbnN0IHVuc2lnbmVkKiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkKK3sKKyNpbmNs
dWRlICJMTEludERlc2lyZWRPZmZzZXRzLmgiCisgICAgcmV0dXJuIGV4dHJhY3RvclRhYmxlOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworaW50IG1haW4oaW50LCBjaGFyKiopCit7CisgICAg
Ly8gT3V0IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0aW9uLCBtYWtlIHN1cmUgdGhhdCBMTEludE9m
ZnNldHNFeHRyYWN0b3I6OmR1bW15KCkgaXMgbGl2ZSwKKyAgICAvLyBhbmQgdGhlIGV4dHJhY3Rv
clRhYmxlIGlzIGxpdmUsIHRvby4KKyAgICBwcmludGYoIiVwXG4iLCBKU0M6OkxMSW50T2Zmc2V0
c0V4dHJhY3Rvcjo6ZHVtbXkoKSk7CisgICAgcmV0dXJuIDA7Cit9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludFRodW5rcy5oIgorCisjaW5j
bHVkZSAiSlNJbnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVk
ZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExM
SW50IHsKKworc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIHZvaWQgKCp0YXJnZXQpKCkpCit7CisgICAg
SlNJbnRlcmZhY2VKSVQgaml0OworICAgIAorICAgIC8vIEZJWE1FOiB0aGVyZSdzIHByb2JhYmx5
IGEgYmV0dGVyIHdheSB0byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20gbm90IHN1cmUgSSBjYXJlLgor
ICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2
b2lkKj4odGFyZ2V0KSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgaml0Lmp1bXAoSlNJ
bnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpn
bG9iYWxEYXRhLCAmaml0KTsKKyAgICByZXR1cm4gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7
Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2Vu
ZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9n
dWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRy
eVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4g
Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZv
ckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQor
eworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9m
dW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGds
b2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spOworfQor
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhn
bG9iYWxEYXRhLCBsbGludF9ldmFsX3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkK
K3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRf
cHJvZ3JhbV9wcm9sb2d1ZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgTExJbnRUaHVua3NfaAorI2RlZmluZSBMTEludFRodW5rc19o
CisKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEpTR2xvYmFsRGF0YTsKKworbmFtZXNwYWNlIExMSW50IHsKKworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxE
YXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRo
dW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0
aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVu
a0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFt
RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludFRodW5rc19oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzMzggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBDcmFzaCBjb3Vyc2Ugb24gdGhlIGxhbmd1YWdl
IHRoYXQgdGhpcyBpcyB3cml0dGVuIGluICh3aGljaCBJIGp1c3QgY2FsbAorIyAiYXNzZW1ibHki
IGV2ZW4gdGhvdWdoIGl0J3MgbW9yZSB0aGFuIHRoYXQpOgorIworIyAtIE1vc3RseSBnYXMtc3R5
bGUgb3BlcmFuZCBvcmRlcmluZy4gVGhlIGxhc3Qgb3BlcmFuZCB0ZW5kcyB0byBiZSB0aGUKKyMg
ICBkZXN0aW5hdGlvbi4gU28gImEgOj0gYiIgaXMgd3JpdHRlbiBhcyAibW92IGIsIGEiLiBCdXQg
dW5saWtlIGdhcywKKyMgICBjb21wYXJpc29ucyBhcmUgaW4tb3JkZXIsIHNvICJpZiAoYSA8IGIp
IiBpcyB3cml0dGVuIGFzCisjICAgImJpbHQgYSwgYiwgLi4uIi4KKyMKKyMgLSAiYiIgPSBieXRl
LCAiaCIgPSAxNi1iaXQgd29yZCwgImkiID0gMzItYml0IHdvcmQsICJwIiA9IHBvaW50ZXIuCisj
ICAgQ3VycmVudGx5IHRoaXMgaXMganVzdCAzMi1iaXQgc28gImkiIGFuZCAicCIgYXJlIGludGVy
Y2hhbmdlYWJsZQorIyAgIGV4Y2VwdCB3aGVuIGFuIG9wIHN1cHBvcnRzIG9uZSBidXQgbm90IHRo
ZSBvdGhlci4KKyMKKyMgLSBJbiBnZW5lcmFsLCB2YWxpZCBvcGVyYW5kcyBmb3IgbWFjcm8gaW52
b2NhdGlvbnMgYW5kIGluc3RydWN0aW9ucyBhcmUKKyMgICByZWdpc3RlcnMgKGVnICJ0MCIpLCBh
ZGRyZXNzZXMgKGVnICI0W3QwXSIpLCBiYXNlLWluZGV4IGFkZHJlc3NlcworIyAgIChlZyAiN1t0
MCwgdDEsIDJdIiksIGFic29sdXRlIGFkZHJlc3NlcyAoZWcgIjB4YTAwMDAwMDBbXSIpLCBvciBs
YWJlbHMKKyMgICAoZWcgIl9mb28iIG9yICIuZm9vIikuIE1hY3JvIGludm9jYXRpb25zIGNhbiBh
bHNvIHRha2UgYW5vbnltb3VzCisjICAgbWFjcm9zIGFzIG9wZXJhbmRzLiBJbnN0cnVjdGlvbnMg
Y2Fubm90IHRha2UgYW5vbnltb3VzIG1hY3Jvcy4KKyMKKyMgLSBMYWJlbHMgbXVzdCBoYXZlIG5h
bWVzIHRoYXQgYmVnaW4gd2l0aCBlaXRoZXIgIl8iIG9yICIuIi4gIEEgIi4iIGxhYmVsCisjICAg
aXMgbG9jYWwgYW5kIGdldHMgcmVuYW1lZCBiZWZvcmUgY29kZSBnZW4gdG8gbWluaW1pemUgbmFt
ZXNwYWNlCisjICAgcG9sbHV0aW9uLiBBICJfIiBsYWJlbCBpcyBhbiBleHRlcm4gc3ltYm9sIChp
LmUuICIuZ2xvYmwiKS4gVGhlICJfIgorIyAgIG1heSBvciBtYXkgbm90IGJlIHJlbW92ZWQgZHVy
aW5nIGNvZGUgZ2VuIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBhc20KKyMgICBjb252ZW50aW9u
cyBmb3IgQyBuYW1lIG1hbmdsaW5nIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0gbWFuZGF0ZSBhICJf
IgorIyAgIHByZWZpeC4KKyMKKyMgLSBBICJtYWNybyIgaXMgYSBsYW1iZGEgZXhwcmVzc2lvbiwg
d2hpY2ggbWF5IGJlIGVpdGhlciBhbm9ueW1vdXMgb3IKKyMgICBuYW1lZC4gQnV0IHRoaXMgaGFz
IGNhdmVhdHMuICJtYWNybyIgY2FuIHRha2UgemVybyBvciBtb3JlIGFyZ3VtZW50cywKKyMgICB3
aGljaCBtYXkgYmUgbWFjcm9zIG9yIGFueSB2YWxpZCBvcGVyYW5kcywgYnV0IGl0IGNhbiBvbmx5
IHJldHVybgorIyAgIGNvZGUuIEJ1dCB5b3UgY2FuIGRvIFR1cmluZy1jb21wbGV0ZSB0aGluZ3Mg
dmlhIGNvbnRpbnVhdGlvbiBwYXNzaW5nCisjICAgc3R5bGU6ICJtYWNybyBmb28gKGEsIGIpIGIo
YSkgZW5kIGZvbyhmb28sIGZvbykiLiBBY3R1YWxseSwgZG9uJ3QgZG8KKyMgICB0aGF0LCBzaW5j
ZSB5b3UnbGwganVzdCBjcmFzaCB0aGUgYXNzZW1ibGVyLgorIworIyAtIEFuICJpZiIgaXMgYSBj
b25kaXRpb25hbCBvbiBzZXR0aW5ncy4gQW55IGlkZW50aWZpZXIgc3VwcGxpZWQgaW4gdGhlCisj
ICAgcHJlZGljYXRlIG9mIGFuICJpZiIgaXMgYXNzdW1lZCB0byBiZSBhICNkZWZpbmUgdGhhdCBp
cyBhdmFpbGFibGUKKyMgICBkdXJpbmcgY29kZSBnZW4uIFNvIHlvdSBjYW4ndCB1c2UgImlmIiBm
b3IgY29tcHV0YXRpb24gaW4gYSBtYWNybywgYnV0CisjICAgeW91IGNhbiB1c2UgaXQgdG8gc2Vs
ZWN0IGRpZmZlcmVudCBwaWVjZXMgb2YgY29kZSBmb3IgZGlmZmVyZW50CisjICAgcGxhdGZvcm1z
LgorIworIyAtIEFyZ3VtZW50cyB0byBtYWNyb3MgZm9sbG93IGxleGljYWwgc2NvcGluZyByYXRo
ZXIgdGhhbiBkeW5hbWljIHNjb3BpbmcuCisjICAgQ29uc3QncyBhbHNvIGZvbGxvdyBsZXhpY2Fs
IHNjb3BpbmcgYW5kIG1heSBvdmVycmlkZSAoaGlkZSkgYXJndW1lbnRzCisjICAgb3Igb3RoZXIg
Y29uc3RzLiBBbGwgdmFyaWFibGVzIChhcmd1bWVudHMgYW5kIGNvbnN0YW50cykgY2FuIGJlIGJv
dW5kCisjICAgdG8gb3BlcmFuZHMuIEFkZGl0aW9uYWxseSwgYXJndW1lbnRzIChidXQgbm90IGNv
bnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gbWFjcm9zLgorCisKKyMgVGhlc2UgZGVjbGFy
YXRpb25zIG11c3QgbWF0Y2ggaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmguCitjb25zdCBDYWxs
RnJhbWVIZWFkZXJTaXplID0gNDgKK2NvbnN0IEFyZ3VtZW50Q291bnQgPSAtNDgKK2NvbnN0IENh
bGxlckZyYW1lID0gLTQwCitjb25zdCBDYWxsZWUgPSAtMzIKK2NvbnN0IFNjb3BlQ2hhaW4gPSAt
MjQKK2NvbnN0IFJldHVyblBDID0gLTE2Citjb25zdCBDb2RlQmxvY2sgPSAtOAorCitjb25zdCBU
aGlzQXJndW1lbnRPZmZzZXQgPSAtQ2FsbEZyYW1lSGVhZGVyU2l6ZSAtIDgKKworIyBEZWNsYXJl
IHNvbWUgYWxpYXNlcyBmb3IgdGhlIHJlZ2lzdGVycyB3ZSB3aWxsIHVzZS4KK2NvbnN0IFBDID0g
dDQKKworIyBPZmZzZXRzIG5lZWRlZCBmb3IgcmVhc29uaW5nIGFib3V0IHZhbHVlIHJlcHJlc2Vu
dGF0aW9uLgoraWYgQklHX0VORElBTgorICAgIGNvbnN0IFRhZ09mZnNldCA9IDAKKyAgICBjb25z
dCBQYXlsb2FkT2Zmc2V0ID0gNAorZWxzZQorICAgIGNvbnN0IFRhZ09mZnNldCA9IDQKKyAgICBj
b25zdCBQYXlsb2FkT2Zmc2V0ID0gMAorZW5kCisKKyMgVmFsdWUgcmVwcmVzZW50YXRpb24gY29u
c3RhbnRzLgorY29uc3QgSW50MzJUYWcgPSAtMQorY29uc3QgQm9vbGVhblRhZyA9IC0yCitjb25z
dCBOdWxsVGFnID0gLTMKK2NvbnN0IFVuZGVmaW5lZFRhZyA9IC00Citjb25zdCBDZWxsVGFnID0g
LTUKK2NvbnN0IEVtcHR5VmFsdWVUYWcgPSAtNgorY29uc3QgRGVsZXRlZFZhbHVlVGFnID0gLTcK
K2NvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRhZworCisjIFR5cGUgY29uc3RhbnRzLgor
Y29uc3QgU3RyaW5nVHlwZSA9IDUKK2NvbnN0IE9iamVjdFR5cGUgPSAxMAorCisjIFR5cGUgZmxh
Z3MgY29uc3RhbnRzLgorY29uc3QgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDEKK2NvbnN0IElt
cGxlbWVudHNIYXNJbnN0YW5jZSA9IDIKK2NvbnN0IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFu
Y2UgPSA4CisKKyMgSGVhcCBhbGxvY2F0aW9uIGNvbnN0YW50cy4KK2NvbnN0IEpTRmluYWxPYmpl
Y3RTaXplQ2xhc3NJbmRleCA9IDMKKworIyBCeXRlY29kZSBvcGVyYW5kIGNvbnN0YW50cy4KK2Nv
bnN0IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMAorCisjIENvZGUgdHlw
ZSBjb25zdGFudHMuCitjb25zdCBHbG9iYWxDb2RlID0gMAorY29uc3QgRXZhbENvZGUgPSAxCitj
b25zdCBGdW5jdGlvbkNvZGUgPSAyCisKKyMgVGhlIGludGVycHJldGVyIHN0ZWFscyB0aGUgdGFn
IHdvcmQgb2YgdGhlIGFyZ3VtZW50IGNvdW50LgorY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3Vt
ZW50Q291bnQgKyBUYWdPZmZzZXQKKworIyBUaGlzIG11c3QgbWF0Y2ggd3RmL1ZlY3Rvci5oLgor
Y29uc3QgVmVjdG9yU2l6ZU9mZnNldCA9IDAKK2NvbnN0IFZlY3RvckJ1ZmZlck9mZnNldCA9IDQK
KworIyBTdHJpbmcgZmxhZ3MuCitjb25zdCBIYXNoRmxhZ3M4Qml0QnVmZmVyID0gNjQKKworIyBV
dGlsaXRpZXMKK21hY3JvIGNyYXNoKCkKKyAgICBzdG9yZWkgMCwgMHhiYmFkYmVlZltdCisgICAg
bW92ZSAwLCB0MAorICAgIGNhbGwgdDAKK2VuZAorCittYWNybyBhc3NlcnQoYXNzZXJ0aW9uKQor
ICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGFzc2VydGlvbigub2spCisgICAgICAgIGNy
YXNoKCkKKyAgICAub2s6CisgICAgZW5kCitlbmQKKworbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRy
ZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAg
bW92ZSBsciwgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2lmIFg4NgorICAgICAgICBwb3Ag
ZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2Vu
ZAorCittYWNybyByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihzb3VyY2VSZWdpc3Rl
cikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgorICAgIGVs
c2lmIFg4NgorICAgICAgICBwdXNoIHNvdXJjZVJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBl
cnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCisgICAgYWRkcCBh
ZHZhbmNlICogNCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNo
V2l0aE9mZnNldChwY09mZnNldCkKKyAgICBsc2hpZnRpIDIsIHBjT2Zmc2V0CisgICAgYWRkcCBw
Y09mZnNldCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoKHBj
T2Zmc2V0KQorICAgIGxvYWRpIHBjT2Zmc2V0LCB0MAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9m
ZnNldCh0MCkKK2VuZAorCittYWNybyBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAgbG9hZGkgQXJn
dW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFj
cm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1v
dmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgIGVsc2lmIFg4NgorICAgICAg
ICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisgICAgZWxzZQorICAgICAgICBl
cnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCisjIFRoaXMgYmFyZWx5IHdv
cmtzLiBhcmczIGFuZCBhcmc0IHNob3VsZCBwcm9iYWJseSBiZSBpbW1lZGlhdGVzLgorbWFjcm8g
Y0NhbGw0KGZ1bmN0aW9uLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KQorICAgIGlmIEFSTXY3Cisg
ICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgICAgICBtb3Zl
IGFyZzMsIHQyCisgICAgICAgIG1vdmUgYXJnNCwgdDMKKyAgICBlbHNpZiBYODYKKyAgICAgICAg
cG9rZSBhcmcxLCAwCisgICAgICAgIHBva2UgYXJnMiwgMQorICAgICAgICBwb2tlIGFyZzMsIDIK
KyAgICAgICAgcG9rZSBhcmc0LCAzCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAor
ICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCittYWNybyBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBj
Q2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2Zy
CitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgYW4g
b3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtLgorbWFjcm8gdHJhY2VPcGVyYW5kKGZy
b21XaGVyZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX29wZXJhbmQsIGNmciwg
UEMsIGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNm
cgorZW5kCisKKyMgRGVidWdnaW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBsaWtlIHRvIHByaW50IHRo
ZSB2YWx1ZSBvZiBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbgorIyBzdHJlYW0uCittYWNy
byB0cmFjZVZhbHVlKGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNl
X3ZhbHVlLCBjZnIsIFBDLCBmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAg
ICBtb3ZlIHQxLCBjZnIKK2VuZAorCittYWNybyB0cmFjZUV4ZWN1dGlvbigpCisgICAgaWYgRVhF
Q1VUSU9OX1RSQUNJTkcKKyAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfdHJhY2UpCisgICAgZW5k
CitlbmQKKworIyBDYWxsIGEgaGVscGVyIGZvciBjYWxsIG9wY29kZXMuCittYWNybyBjYWxsQ2Fs
bEhlbHBlcihhZHZhbmNlLCBoZWxwZXIsIGFjdGlvbikKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQ
QywgdDAKKyAgICBzdG9yZXAgdDAsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAg
IGNDYWxsMihoZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYWN0aW9uKHQw
KQorZW5kCisKK21hY3JvIHNsb3dQYXRoRm9yQ2FsbChhZHZhbmNlLCBoZWxwZXIpCisgICAgY2Fs
bENhbGxIZWxwZXIoCisgICAgICAgIGFkdmFuY2UsCisgICAgICAgIGhlbHBlciwKKyAgICAgICAg
bWFjcm8gKGNhbGxlZSkKKyAgICAgICAgICAgIGNhbGwgY2FsbGVlCisgICAgICAgICAgICBkaXNw
YXRjaEFmdGVyQ2FsbCgpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRv
SklUKGluY3JlbWVudCwgYWN0aW9uKQorICAgIGlmIEpJVF9FTkFCTEVECisgICAgICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCB0MAorICAgICAgICBiYWRkaXMgaW5jcmVtZW50LCBDb2RlQmxvY2s6
Om1fbGxpbnRFeGVjdXRlQ291bnRlclt0MF0sIC5jb250aW51ZQorICAgICAgICBhY3Rpb24oKQor
ICAgIC5jb250aW51ZToKKyAgICBlbmQKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9y
TG9vcCgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMSwKKyAgICAgICAgbWFjcm8g
KCkKKyAgICAgICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJd
CisgICAgICAgICAgICBjQ2FsbDIoX2xsaW50X2xvb3Bfb3NyLCBjZnIsIFBDKQorICAgICAgICAg
ICAgbW92ZSB0MSwgY2ZyCisgICAgICAgICAgICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAgICAg
ICAgam1wIHQwCisgICAgICAgIC5yZWNvdmVyOgorICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRD
b3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hl
Y2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAg
ICAxMCwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3Jl
cGxhY2UpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBhc3NlcnROb3RDb25zdGFudChpbmRl
eCkKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWx0IGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCwgb2sgZW5kKQorZW5kCisKKyMgSW5kZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBi
ZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QKKyMgY2hhbmdlZC4KK21hY3JvIGxv
YWRDb25zdGFudE9yVmFyaWFibGUoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5k
ZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBp
bmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJl
Z2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhl
cmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+
PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxs
IGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgor
ICAgIGxvYWRwIFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRwIFBh
eWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAorCisj
IEluZGV4IGFuZCBwYXlsb2FkIG1heSBiZSB0aGUgc2FtZSByZWdpc3Rlci4KK21hY3JvIGxvYWRD
b25zdGFudE9yVmFyaWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmlndGVxIGlu
ZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFn
T2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHRhZworICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lz
dGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFt0YWddLCB0YWcKKyAgICAjIFRoZXJlIGlzIGEgYml0
IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0
byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsc2hpZnRp
IDMsIGluZGV4CisgICAgYWRkcCBpbmRleCwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFt0
YWddLCBwYXlsb2FkCisgICAgbG9hZHAgVGFnT2Zmc2V0W3RhZ10sIHRhZworLmRvbmU6CitlbmQK
KworbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFn
LCBwYXlsb2FkLCBzbG93KQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXgsIC5jb25zdGFudAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgZXhw
ZWN0ZWRUYWcsIHNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBw
YXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBW
ZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0
IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0
byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBiaW5lcSBU
YWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBleHBlY3RlZFRhZywgc2xvdworICAgIGxvYWRw
IFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAor
CittYWNybyB3cml0ZUJhcnJpZXIodGFnLCBwYXlsb2FkKQorICAgICMgTm90aGluZyB0byBkbyBz
aW5jZSB3ZSBkb24ndCBoYXZlIGEgZ2VuZXJhdGlvbmFsIG9yIGluY3JlbWVudGFsIGNvbGxlY3Rv
ci4KK2VuZAorCisKKyMgSW5kaWNhdGUgdGhlIGJlZ2lubmluZyBvZiBMTEludC4KK19sbGludF9i
ZWdpbjoKKyAgICBjcmFzaCgpCisKKworIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRl
cgorCittYWNybyBmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIp
CisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5j
dGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBs
b2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rl
cl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2Rl
QmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdl
dFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lz
dGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29k
ZUJsb2NrRm9yQ29uc3RydWN0W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAor
CittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlv
bkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAgICBzdG9yZXAgc291cmNlUmVnaXN0
ZXIsIENvZGVCbG9ja1tjZnJdCitlbmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0
ZXIoc291cmNlUmVnaXN0ZXIpCisgICAgIyBOb3RoaW5nIHRvIGRvIQorZW5kCisKKyMgRG8gdGhl
IGJhcmUgbWluaW11bSByZXF1aXJlZCB0byBleGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBs
ZWF2ZSB0aGUgQ29kZUJsb2NrKgorIyBpbiB0MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBl
bnRyeSBPU1IuCittYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRl
ciwgb3NySGVscGVyLCB0cmFjZUhlbHBlcikKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRl
ckNhbGwodDIpCisgICAgCisgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlm
IHdlIHNob3VsZCBPU1IuCisgICAgc3RvcmVwIHQyLCBSZXR1cm5QQ1tjZnJdCisgICAgaWYgRVhF
Q1VUSU9OX1RSQUNJTkcKKyAgICAgICAgY2FsbEhlbHBlcih0cmFjZUhlbHBlcikKKyAgICBlbmQK
KyAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgYmFk
ZGlzIDUsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3QxXSwgLmNvbnRpbnVlCisg
ICAgICAgIGNDYWxsMihvc3JIZWxwZXIsIGNmciwgUEMpCisgICAgICAgIG1vdmUgdDEsIGNmcgor
ICAgICAgICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0
MgorICAgICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICAgICAg
am1wIHQwCisgICAgLnJlY292ZXI6CisgICAgICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICAu
Y29udGludWU6CisgICAgZW5kCisgICAgY29kZUJsb2NrU2V0dGVyKHQxKQorICAgIAorICAgICMg
U2V0IHVwIHRoZSBQQy4KKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwg
dDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBW
ZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9j
ayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCisjIE11
c3QgY2FsbCBkaXNwYXRjaCgwKSBhZnRlciBjYWxsaW5nIHRoaXMuCittYWNybyBmdW5jdGlvbklu
aXRpYWxpemF0aW9uKCkKKyAgICAjIFByb2ZpbGUgdGhlIGFyZ3VtZW50cy4gVW5mb3J0dW5hdGVs
eSwgd2UgaGF2ZSBubyBjaG9pY2UgYnV0IHRvIGRvIHRoaXMuCisgICAgbG9hZGkgQ29kZUJsb2Nr
OjptX251bVBhcmFtZXRlcnNbdDFdLCB0MAorICAgIGJ0aXogdDAsIC5hcmd1bWVudFByb2ZpbGVE
b25lCisgICAgbmVnaSB0MAorICAgIGxzaGlmdGkgMywgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QxXSwgdDMKKy5h
cmd1bWVudFByb2ZpbGVMb29wOgorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09m
ZnNldFtjZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRz
ICsgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MF0sIHQyCisgICAgc3RvcmVpIHQyLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0
cyArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgYWRkcCBzaXplb2YgVmFsdWVQcm9maWxlLCB0Mwor
ICAgIGJhZGRpbnogOCwgdDAsIC5hcmd1bWVudFByb2ZpbGVMb29wCisuYXJndW1lbnRQcm9maWxl
RG9uZToKKyAgICAKKyAgICAjIENoZWNrIHN0YWNrIGhlaWdodC4KKyAgICBsb2FkaSBDb2RlQmxv
Y2s6Om1fbnVtQ2FsbGVlUmVnaXN0ZXJzW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
Z2xvYmFsRGF0YVt0MV0sIHQyCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjppbnRlcnByZXRlclt0
Ml0sIHQyICAgIyBGSVhNRTogQ2FuIGdldCB0byB0aGUgUmVnaXN0ZXJGaWxlIGZyb20gdGhlIEpJ
VFN0YWNrRnJhbWUKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MCwgY2ZyLCB0MAorICAg
IGJwYWVxIEludGVycHJldGVyOjptX3JlZ2lzdGVyRmlsZSArIFJlZ2lzdGVyRmlsZTo6bV9lbmRb
dDJdLCB0MCwgLnN0YWNrSGVpZ2h0T0sKKworICAgICMgU3RhY2sgaGVpZ2h0IGNoZWNrIGZhaWxl
ZCAtIG5lZWQgdG8gY2FsbCBhIGhlbHBlci4KKyAgICBjYWxsSGVscGVyKF9sbGludF9yZWdpc3Rl
cl9maWxlX2NoZWNrKQorLnN0YWNrSGVpZ2h0T0s6CitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29k
ZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4K
K21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIGhlbHBlcikKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGJpZXEgdDAsIENvZGVC
bG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCisgICAgY0NhbGwyKGhlbHBlciwg
Y2ZyLCBQQykgICAjIFRoaXMgaGVscGVyIGhhcyBhIHNpbXBsZSBwcm90b2NvbDogdDAgPSAwID0+
IG5vIGVycm9yLCB0MCAhPSAwID0+IGVycm9yCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYnRpeiB0
MCwgLmNvbnRpbnVlCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQx
CisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAg
am1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisuY29udGludWU6
CisgICAgIyBSZWxvYWQgQ29kZUJsb2NrIGFuZCBQQywgc2luY2UgdGhlIGhlbHBlciBjbG9iYmVy
ZWQgaXQuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2luc3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpJbnN0cnVjdGlv
bnM6Om1faW5zdHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKKyAgICBqbXAg
ZG9uZUxhYmVsCitlbmQKKworX2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6CisgICAgcHJvbG9ndWUo
bm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBf
bGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2goMCkK
KworCitfbGxpbnRfZXZhbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVC
bG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3Is
IF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2Rl
QmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBf
bGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCisuZnVuY3Rpb25Gb3JDYWxs
QmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigpCisgICAgZGlzcGF0Y2goMCkKKyAg
ICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWU6CisgICAgcHJvbG9n
dWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2Nr
U2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdCkKKy5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgorICAgIGZ1bmN0aW9u
SW5pdGlhbGl6YXRpb24oKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2Rl
QmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Fy
aXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQorICAgIGZ1bmN0aW9u
QXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9sbGludF9oZWxwZXJfY2FsbF9hcml0
eUNoZWNrKQorCisKK19sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrOgor
ICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlv
bkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9hcml0eUNoZWNrLCBfbGxpbnRfdHJh
Y2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVj
aykKKworIyBJbnN0cnVjdGlvbiBpbXBsZW1lbnRhdGlvbnMKKworX2xsaW50X29wX2VudGVyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBs
b2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFyc1t0Ml0sIHQyCisgICAgYnRpeiB0MiwgLm9wRW50ZXJE
b25lCisgICAgbW92ZSBVbmRlZmluZWRUYWcsIHQwCisgICAgbW92ZSAwLCB0MQorLm9wRW50ZXJM
b29wOgorICAgIHN1YmkgMSwgdDIKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQyLCA4
XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGJ0aW56IHQy
LCAub3BFbnRlckxvb3AKKy5vcEVudGVyRG9uZToKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGlu
dF9vcF9jcmVhdGVfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFn
LCAub3BDcmVhdGVBY3RpdmF0aW9uRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9j
cmVhdGVfYWN0aXZhdGlvbikKKy5vcENyZWF0ZUFjdGl2YXRpb25Eb25lOgorICAgIGRpc3BhdGNo
KDIpCisKKworX2xsaW50X29wX2luaXRfbGF6eV9yZWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAg
IGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NyZWF0ZV9hcmd1bWVudHM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQXJndW1lbnRzRG9uZQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQorLm9wQ3JlYXRlQXJndW1lbnRz
RG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChz
aXplQ2xhc3NJbmRleCwgY2xhc3NJbmZvT2Zmc2V0LCBzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRj
aDEsIHNjcmF0Y2gyLCBzbG93Q2FzZSkKKyAgICBjb25zdCBvZmZzZXRPZk15U2l6ZUNsYXNzID0g
SlNHbG9iYWxEYXRhOjpoZWFwICsgSGVhcDo6bV9vYmplY3RTcGFjZSArIEFsbG9jYXRpb25TcGFj
ZTo6bV9tYXJrZWRTcGFjZSArIE1hcmtlZFNwYWNlOjptX3ByZWNpc2VTaXplQ2xhc3NlcyArIHNp
emVDbGFzc0luZGV4ICogc2l6ZW9mIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MKKyAgICAKKyAgICAj
IEZJWE1FOiB3ZSBjYW4gZ2V0IHRoZSBnbG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRoZSBz
dGFjay4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2NyYXRjaDEKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fZ2xvYmFsRGF0YVtzY3JhdGNoMV0sIHNjcmF0Y2gxCisgICAgCisgICAgIyBHZXQg
dGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuICAgIAorICAgIGxvYWRwIG9mZnNldE9mTXlT
aXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gx
XSwgcmVzdWx0CisgICAgYnRweiByZXN1bHQsIHNsb3dDYXNlCisgICAgCisgICAgIyBSZW1vdmUg
dGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCisgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0
Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3Bh
Y2U6OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0KKworICAgICMgSW5pdGlhbGl6
ZSB0aGUgb2JqZWN0LgorICAgIGxvYWRwIGNsYXNzSW5mb09mZnNldFtzY3JhdGNoMV0sIHNjcmF0
Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gyLCBbcmVzdWx0XQorICAgIHN0b3JlcCBzdHJ1Y3R1cmUs
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQorICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9p
bmhlcml0b3JJRFtyZXN1bHRdCisgICAgYWRkcCBzaXplb2YgSlNPYmplY3QsIHJlc3VsdCwgc2Ny
YXRjaDEKKyAgICBzdG9yZXAgc2NyYXRjaDEsIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVty
ZXN1bHRdCitlbmQKKworX2xsaW50X29wX2NyZWF0ZV90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENyZWF0ZVRoaXNTbG93Cisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlw
ZUluZm86Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9h
ZHAgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbdDBdLCB0MgorICAgIGJ0cHogdDIsIC5vcENyZWF0
ZVRoaXNTbG93CisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xh
c3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MiwgdDAsIHQx
LCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVp
IENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcENyZWF0ZVRoaXNTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfdGhpcykKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9nZXRfY2FsbGVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0ICsgQ2FsbGVlW2Nmcl0sIHQx
CisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0
MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50
X29wX2NvbnZlcnRfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0
VGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNT
bG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ29udmVydFRoaXNTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9jb252ZXJ0X3RoaXMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxp
bnRfb3BfbmV3X29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQw
CisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fZW1wdHlPYmplY3RTdHJ1Y3R1cmVbdDBdLCB0
MQorICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgs
IEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywgdDEsIHQwLCB0MiwgdDMsIC5v
cE5ld09iamVjdFNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcs
IFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQxLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcE5ld09iamVjdFNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX25ld19vYmplY3QpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxp
bnRfb3BfbmV3X2FycmF5OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfbmV3X2FycmF5KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25l
d19hcnJheV9idWZmZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX25ld19yZWdleHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9uZXdfcmVnZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX21v
djoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHN0
b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bfbm90OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwg
dDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmluZXEgdDIs
IEJvb2xlYW5UYWcsIC5vcE5vdFNsb3cKKyAgICB4b3JpIDEsIHQzCisgICAgc3RvcmVpIHQyLCBU
YWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOb3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9ub3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZXE6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcEVxU2xv
dworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcEVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFn
LCAub3BFcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaWVxIHQwLCB0MSwgdDAKKyAg
ICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wRXFTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9lcSkKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRp
YXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJueiBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQsIHQxCisgICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0ZQorLm9wRXFOdWxsSW1t
ZWRpYXRlOgorICAgIGNpZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2llcSB0MSwgVW5kZWZpbmVk
VGFnLCB0MQorICAgIG9yaSB0MiwgdDEKKy5vcEVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9y
ZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVx
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkg
OFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAu
b3BOZXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wTmVxU2xvdworICAgIGJpYiB0Miwg
TG93ZXN0VGFnLCAub3BOZXFTbG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2luZXEgdDAs
IHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAg
ICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQor
Cisub3BOZXFTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXEpCisgICAgZGlz
cGF0Y2goNCkKKyAgICAKKworX2xsaW50X29wX25lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnRO
b3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRh
ZywgLm9wTmVxTnVsbEltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MQorICAgIHRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0
MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5vcE5lcU51bGxOb3RJbW1l
ZGlhdGUKKy5vcE5lcU51bGxJbW1lZGlhdGU6CisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyCisg
ICAgY2luZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKKyAgICBhbmRpIHQyLCB0MQorLm9wTmVxTnVs
bE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMs
IDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0
Y2goMykKKworCittYWNybyBzdHJpY3RFcShlcXVhbGl0eU9wZXJhdGlvbiwgaGVscGVyKQorICAg
IGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAs
IHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcs
IC5zbG93CisgICAgYmluZXEgdDIsIENlbGxUYWcsIC5ub3RTdHJpbmcKKyAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qx
XSwgdDMKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZworICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93Cisubm90U3RyaW5n
OgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDAp
CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3Jl
aSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93
OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50
X29wX3N0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAo
bGVmdCwgcmlnaHQsIHJlc3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50
X2hlbHBlcl9zdHJpY3RlcSkKKworCitfbGxpbnRfb3BfbnN0cmljdGVxOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEg
bGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9oZWxwZXJfbnN0cmljdGVxKQorCisKK19s
bGludF9vcF9sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfbGVzcykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9sZXNzZXE6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzZXEp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dyZWF0ZXIpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcmVxKQorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX3ByZV9pbmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBy
ZUluY1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJh
ZGRpbyAxLCB0MSwgLm9wUHJlSW5jU2xvdworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcFByZUluY1Nsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3ByZV9pbmMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRf
b3BfcHJlX2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdwor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYnN1YmlvIDEsIHQx
LCAub3BQcmVEZWNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlRGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcHJlX2RlYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3N0X2lu
YzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkg
NFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9w
UG9zdEluY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdEluY0RvbmUKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYmFkZGlv
IDEsIHQzLCAub3BQb3N0SW5jU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
c3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0SW5jRG9uZToKKyAg
ICBkaXNwYXRjaCgzKQorCisub3BQb3N0SW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfcG9zdF9pbmMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcG9zdF9kZWM6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRb
UENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBv
c3REZWNTbG93CisgICAgYmllcSB0MCwgdDEsIC5vcFBvc3REZWNEb25lCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBtb3ZlIHQyLCB0MworICAgIGJzdWJpbyAx
LCB0MywgLm9wUG9zdERlY1Nsb3cKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIs
IHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0
b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorLm9wUG9zdERlY0RvbmU6CisgICAg
ZGlzcGF0Y2goMykKKworLm9wUG9zdERlY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3Bvc3RfZGVjKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3RvX2pzbnVtYmVy
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0
W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmll
cSB0MiwgSW50MzJUYWcsIC5vcFRvSnNudW1iZXJJc0ludAorICAgIGJpYWVxIHQyLCBFbXB0eVZh
bHVlVGFnLCAub3BUb0pzbnVtYmVyU2xvdworLm9wVG9Kc251bWJlcklzSW50OgorICAgIHN0b3Jl
aSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9Kc251bWJlclNsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RvX2pzbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX25lZ2F0ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BOZWdhdGVTcmNO
b3RJbnQKKyAgICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CisgICAgbmVnaSB0
MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVp
IHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKy5vcE5lZ2F0
ZVNyY05vdEludDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xvdworICAgIHhv
cmkgMHg4MDAwMDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQor
ICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMp
CisKKy5vcE5lZ2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lZ2F0ZSkK
KyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9w
ZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQ
Q10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisg
ICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDMsIEludDMyVGFn
LCAub3AyTm90SW50CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50ZWdlck9wZXJhdGlvbkFu
ZFN0b3JlKHQzLCB0MSwgdDAsIC5zbG93LCB0MikKKyAgICBkaXNwYXRjaCg1KQorCisub3AxTm90
SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRoZSBz
ZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEgdDIsIExvd2VzdFRhZywg
LnNsb3cKKyAgICBiaWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJp
bmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQxLCBmdDEKKyAgICBqbXAgLm9wMU5v
dEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQxLCB0MywgZnQxCisu
b3AxTm90SW50UmVhZHk6CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgZmlpMmQgdDAsIHQyLCBm
dDAKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2Nmciwg
dDEsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wMk5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJh
bmQgaXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5
IG5vdC4KKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNsb3cK
KyAgICBjaTJkIHQwLCBmdDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorICAgIGRvdWJsZU9wZXJh
dGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRj
aCg1KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCg1KQor
ZW5kCisKK21hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlvbiwg
aGVscGVyKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRh
ZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgaW50ZWdlck9wZXJhdGlv
bihsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zm
c2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZz
ZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBkb3VibGVPcGVyYXRpb24s
IGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfYWRkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVm
dCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQgbGVm
dCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2FkZCkKKworCitfbGxpbnRfb3Bf
bXVsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAg
ICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAg
ICAgIGNvbnN0IHNjcmF0Y2ggPSBpbnQzMlRhZyAgICMgV2Uga25vdyB0aGF0IHdlIGNhbiByZXVz
ZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEgY29uc3RhbnQuCisgICAgICAg
ICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoCisgICAgICAgICAgICBibXVsaW8gbGVmdCwgc2NyYXRj
aCwgc2xvdworICAgICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRvbmUKKyAgICAgICAgICAgIGJp
bHQgbGVmdCwgMCwgLnNsb3cKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIC5zbG93CisgICAg
ICAgIC5kb25lOgorICAgICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBp
bmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBtdWxk
IGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9tdWwpCisKKworX2xsaW50
X29wX3N1YjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1YmlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9zdWIpCisKKworX2xsaW50X29wX2RpdjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBs
ZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjaTJkIGxlZnQsIGZ0MAorICAg
ICAgICAgICAgY2kyZCByaWdodCwgZnQxCisgICAgICAgICAgICBkaXZkIGZ0MCwgZnQxCisgICAg
ICAgICAgICBiY2QyaSBmdDEsIHJpZ2h0LCAubm90SW50CisgICAgICAgICAgICBzdG9yZWkgaW50
MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHJpZ2h0
LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBqbXAgLmRvbmUKKyAg
ICAgICAgLm5vdEludDoKKyAgICAgICAgICAgIHN0b3JlZCBmdDEsIFtjZnIsIGluZGV4LCA4XQor
ICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQp
IGRpdmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2RpdikKKworCitf
bGxpbnRfb3BfbW9kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfbW9kKQorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8gYml0T3Aob3BlcmF0aW9u
LCBoZWxwZXIsIGFkdmFuY2UpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywg
LnNsb3cKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgbG9hZGkgNFtQQ10sIHQy
CisgICAgb3BlcmF0aW9uKHQxLCB0MCwgLnNsb3cpCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAg
ICBkaXNwYXRjaChhZHZhbmNlKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAg
ICBkaXNwYXRjaChhZHZhbmNlKQorZW5kCisKK19sbGludF9vcF9sc2hpZnQ6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cp
IGxzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2xzaGlmdCwK
KyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfcnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSByc2hpZnRpIGxl
ZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9yc2hpZnQsCisgICAgICAgIDQp
CisKKworX2xsaW50X29wX3Vyc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9w
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICB1cnNoaWZ0
aSBsZWZ0LCByaWdodAorICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdworICAgICAgICBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfdXJzaGlmdCwKKyAgICAgICAgNCkKKworCitfbGxp
bnRfb3BfYml0YW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBhbmRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9iaXRhbmQsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdHhvcjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgc2xvdykgeG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
Yml0eG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRvcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgb3Jp
IGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXRvciwKKyAgICAgICAg
NSkKKworCitfbGxpbnRfb3BfYml0bm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBhc3NlcnROb3RDb25zdGFudCh0
MSkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQxLCA4XSwgdDMKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcEJpdG5v
dFNsb3cKKyAgICBub3RpIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0K
KyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgz
KQorCisub3BCaXRub3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9iaXRub3Qp
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBhc3NlcnROb3RDb25z
dGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENo
ZWNrSGFzSW5zdGFuY2VTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0hhc0lu
c3RhbmNlLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdworICAgIGRpc3BhdGNoKDIpCisKKy5vcENo
ZWNrSGFzSW5zdGFuY2VTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jaGVja19o
YXNfaW5zdGFuY2UpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5zdGFuY2VvZjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBDaGVjayB0aGF0IGJhc2VWYWwgaW1wbGVtZW50
cyB0aGUgZGVmYXVsdCBIYXNJbnN0YW5jZSBiZWhhdmlvci4KKyAgICAjIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSBkZXByZWNhdGVkLgorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBhc3NlcnROb3RD
b25zdGFudCh0MCkKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIAorICAgICMgQWN0dWFsbHkgZG8gdGhlIHdv
cmsuCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNs
b3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJiIFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJ
bnN0YW5jZW9mU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgCisg
ICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3Zl
IDEsIHQwCisub3BJbnN0YW5jZW9mTG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QyXSwgdDIKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNl
dFt0Ml0sIHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRpbnog
dDIsIC5vcEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9mRG9u
ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9w
SW5zdGFuY2VvZlNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luc3RhbmNlb2Yp
CisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9pc19udW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9pc19udW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRf
b3BfaXNfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX29i
amVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2lzX29iamVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19mdW5jdGlvbjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Z1
bmN0aW9uKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2luOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfcmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcmVzb2x2ZV9za2lwKQorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8g
cmVzb2x2ZUdsb2JhbChzbG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAg
IyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgUHJvcGVy
dHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAjIDEyW1BDXSAgU3Ry
dWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgor
ICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBi
eSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYnBuZXEgdDEsIDEyW1BDXSwgc2xvdworICAgIGxv
YWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBd
LCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkg
dDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XQorZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgcmVzb2x2ZUdsb2JhbCgub3BSZXNvbHZlR2xvYmFsU2xvdykKKyAgICBk
aXNwYXRjaCg1KQorCisub3BSZXNvbHZlR2xvYmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCisgICAgZGlzcGF0Y2goNSkKKworCisjIEdpdmVzIHlv
dSB0aGUgc2NvcGUgaW4gdDAsIHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25hbGx5IHBlcmZv
cm0gYWRkaXRpb25hbCBjaGVja3Mgb24gdGhlCisjIHNjb3BlcyBhcyB0aGV5IGFyZSB0cmF2ZXJz
ZWQuIHNjb3BlQ2hlY2soKSBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgcmVnaXN0
ZXIKKyMgaG9sZGluZyB0aGUgc2NvcGUsIGFuZCBhIHJlZ2lzdGVyIHRoYXQgY2FuIGJlIHVzZWQg
Zm9yIHNjcmF0Y2guIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90CisjIHVzZSB0Mywgc28geW91IGNh
biBob2xkIHN0dWZmIGluIHQzIGlmIG5lZWQgYmUuCittYWNybyBnZXRTY29wZShkZUJydWlqaW5J
bmRleE9wZXJhbmQsIHNjb3BlQ2hlY2spCisgICAgbG9hZHAgU2NvcGVDaGFpbiArIFBheWxvYWRP
ZmZzZXRbY2ZyXSwgdDAKKyAgICBsb2FkaSBkZUJydWlqaW5JbmRleE9wZXJhbmQsIHQyCisgICAg
CisgICAgYnRpeiB0MiwgLmRvbmUKKyAgICAKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEK
KyAgICBiaW5lcSBDb2RlQmxvY2s6Om1fY29kZVR5cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5sb29w
CisgICAgYnRieiBDb2RlQmxvY2s6Om1fbmVlZHNGdWxsU2NvcGVDaGFpblt0MV0sIC5sb29wCisg
ICAgCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX2FjdGl2YXRpb25SZWdpc3Rlclt0MV0sIHQxCisK
KyAgICAjIE5lZWQgdG8gY29uZGl0aW9uYWxseSBza2lwIG92ZXIgb25lIHNjb3BlLgorICAgIGJp
ZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAubm9BY3RpdmF0aW9uCisg
ICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBd
LCB0MAorLm5vQWN0aXZhdGlvbjoKKyAgICBzdWJpIDEsIHQyCisgICAgCisgICAgYnRpeiB0Miwg
LmRvbmUKKy5sb29wOgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hh
aW5Ob2RlOjpuZXh0W3QwXSwgdDAKKyAgICBzdWJpIDEsIHQyCisgICAgYnRpbnogdDIsIC5sb29w
CisKKy5kb25lOgorZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3Nw
XSwgdDMKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmFjdGl2YXRpb25TdHJ1Y3R1cmVbdDNdLCB0
MworICAgIGdldFNjb3BlKAorICAgICAgICAyMFtQQ10sCisgICAgICAgIG1hY3JvIChzY29wZSwg
c2NyYXRjaCkKKyAgICAgICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3Rbc2NvcGVd
LCBzY3JhdGNoCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3NjcmF0Y2hd
LCB0MywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3cKKyAgICAgICAgZW5kKQorICAg
IHJlc29sdmVHbG9iYWwoLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93KQorICAgIGRpc3BhdGNo
KDYpCisKKy5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9yZXNvbHZlKQorICAgIGRpc3BhdGNoKDYpCisKKy5vcFJlc29sdmVHbG9i
YWxEeW5hbWljU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9nbG9i
YWwpCisgICAgZGlzcGF0Y2goNikKKworCitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0
W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgSW5kZXggb2Yg
cmVnaXN0ZXIgaW4gdGhlIHNjb3BlLgorICAgICMgMTJbUENdICBEZSBCcnVpamluIGluZGV4Lgor
ICAgIGdldFNjb3BlKDEyW1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9h
ZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZHAgU2NvcGVDaGFpbk5v
ZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3Rl
cnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBnZXRTY29wZSg4W1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQp
CisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQz
LCB0MikKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDMsIHQyKQorICAg
IGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFi
bGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFt0
MCwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVj
dFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAK
KyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W3QwLCB0MSwgOF0sIHQxCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0K
KyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxP
YmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQx
LCB0MiwgdDMpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQyLCB0MykK
KyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXls
b2FkT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNv
bHZlX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9yZXNvbHZlX2Jhc2UpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZW5zdXJl
X3Byb3BlcnR5X2V4aXN0czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKKyAgICBkaXNwYXRj
aCg0KQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBu
b3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQorICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZl
ciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UK
KyAgICAjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhl
IGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCisgICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUg
bmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAorICAg
ICMgd2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisg
ICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKKyAgICBicG5lcSBK
U0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgbG9hZGkgNFtQ
Q10sIHQxCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0Ml0sIHQzCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFt0MCwgdDJdLCB0MgorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhd
CisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2go
OCkKKworLm9wR2V0QnlJZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9i
eV9pZCkKKyAgICBkaXNwYXRjaCg4KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0
aDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkg
NFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFn
LCAub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93CisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBh
eWxvYWRPZmZzZXRbY2ZyXSwgdDIKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIEludDMyVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQor
ICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3Jh
Z2VbdDBdLCB0MworICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0
QnlJZFNsb3cKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDIsIHQwLCB0MikKKyAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQorICAgIHN0b3JlaSB0
MCwgVGFnT2Zmc2V0W3QzLCB0MV0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQx
XQorICAgIGRpc3BhdGNoKDkpCisKKy5vcFB1dEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9wdXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOSkKKworCittYWNybyBwdXRCeUlk
VHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2Fk
aSAxMltQQ10sIHQyCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQ
dXRCeUlkU2xvdworICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykK
KyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9y
YWdlW3QwXSwgdDMKKyAgICBhZGRwIHQxLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnKHQyLCB0MSwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKKyAgICBzdG9yZWkgdDEs
IFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSAyNFtQQ10sIHQxCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAg
ICBkaXNwYXRjaCg5KQorZW5kCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Q6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwg
c2xvdykgZW5kKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6Cisg
ICAgcHV0QnlJZFRyYW5zaXRpb24oCisgICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0
Y2gsIHNsb3cpCisgICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAj
IFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAgICAg
IAorICAgICAgICAgICAgbG9hZHAgMjhbUENdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQo
bWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBsb2FkcCBTdHJ1
Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGFzc2Vy
dChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICAgICAgICAgIGJpZXEgU3Ry
dWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAu
ZG9uZQorICAgICAgICAubG9vcDoKKyAgICAgICAgICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90
b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAgICAgICAg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAg
ICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCBzbG93CisgICAgICAgICAg
ICBhZGRwIDQsIHNjcmF0Y2gKKyAgICAgICAgICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5
cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKKyAgICAgICAgLmRv
bmU6CisgICAgICAgIGVuZCkKKworCitfbGxpbnRfb3BfZGVsX2J5X2lkOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X2lkKQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAg
IGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0s
IHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAu
b3BHZXRCeVZhbFNsb3cpCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZv
W3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgSW50MzJUYWcs
IHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAgYnBuZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFsU2xv
dworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MF0sIHQzCisgICAgYmlhZXEgdDEsIEpT
QXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0Mywg
dDEsIDhdLCB0MgorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zm
c2V0W3QzLCB0MSwgOF0sIHQxCisgICAgYmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlW
YWxTbG93CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkg
dDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRC
eVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV92YWwpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgMTJbUENdLCB0MQor
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJn
dW1lbnRCeVZhbFNsb3cKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgSW50
MzJUYWcsIHQyLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdykKKyAgICBhZGRpIDEsIHQyCisgICAg
bG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDEKKyAgICBiaWFlcSB0
MiwgdDEsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbmVnaSB0MgorICAgIGxvYWRpIDRb
UENdLCB0MworICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNldFtjZnIsIHQy
LCA4XSwgdDAKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDIsIDhdLCB0MQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNCkKKwor
Lm9wR2V0QXJndW1lbnRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dl
dF9hcmd1bWVudF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5
X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQwCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BHZXRCeVBu
YW1lU2xvdykKKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgYnBuZXEgdDEsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BHZXRC
eVBuYW1lU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQwCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDAK
KyAgICBicG5lcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVb
dDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDI0W1BDXSwgdDAKKyAgICBsb2FkaSBb
Y2ZyLCB0MCwgOF0sIHQwCisgICAgc3ViaSAxLCB0MAorICAgIGJpYWVxIHQwLCBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cK
KyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDJdLCB0MgorICAgIGxvYWRp
IFRhZ09mZnNldFt0MiwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDIsIHQw
LCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAg
IGRpc3BhdGNoKDcpCisKKy5vcEdldEJ5UG5hbWVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9nZXRfYnlfcG5hbWUpCisgICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfcHV0
X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZh
bFNsb3cpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDAsIEludDMyVGFnLCB0MiwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QwXSwgdDAK
KyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDBdLCB0MAorICAgIGJw
bmVxIFt0MV0sIHQwLCAub3BQdXRCeVZhbFNsb3cKKyAgICBiaWFlcSB0MiwgSlNBcnJheTo6bV92
ZWN0b3JMZW5ndGhbdDFdLCAub3BQdXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0
b3JhZ2VbdDFdLCB0MAorICAgIGJpZXEgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNl
dFt0MCwgdDIsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BQdXRCeVZhbEVtcHR5Cisub3BQdXRCeVZh
bFN0b3JlUmVzdWx0OgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZyh0MywgdDEsIHQzKQorICAgIHdyaXRlQmFycmllcih0MSwgdDMpCisgICAgc3Rv
cmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0KKyAg
ICBzdG9yZWkgdDMsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0
MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BQdXRCeVZhbEVtcHR5OgorICAgIGFkZGkgMSwg
QXJyYXlTdG9yYWdlOjptX251bVZhbHVlc0luVmVjdG9yW3QwXQorICAgIGJpYiB0MiwgQXJyYXlT
dG9yYWdlOjptX2xlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQKKyAgICBhZGRpIDEs
IHQyLCB0MQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX2xlbmd0aFt0MF0KKyAgICBq
bXAgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorCisub3BQdXRCeVZhbFNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfZGVsX2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2RlbF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
cHV0X2J5X2luZGV4OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcHV0X2J5X2luZGV4KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1
dF9nZXR0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9wdXRfZ2V0dGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9zZXR0
ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9w
dXRfc2V0dGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xvb3A6CisgICAgbm9w
CitfbGxpbnRfb3Bfam1wOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkaXNwYXRjaEJyYW5j
aCg0W1BDXSkKKworCitfbGxpbnRfb3Bfam1wX3Njb3BlczoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2ptcF9zY29wZXMpCisgICAgZGlzcGF0Y2go
MCkKKworCittYWNybyBqdW1wVHJ1ZU9yRmFsc2UoY29uZGl0aW9uT3AsIHNsb3cpCisgICAgbG9h
ZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEJvb2xl
YW5UYWcsIHQwLCAuc2xvdykKKyAgICBjb25kaXRpb25PcCh0MCwgLnRhcmdldCkKKyAgICBkaXNw
YXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuc2xvdzoK
KyAgICBjYWxsSGVscGVyKHNsb3cpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3Bf
bG9vcF9pZl90cnVlOgorICAgIG5vcAorX2xsaW50X29wX2p0cnVlOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0
KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qdHJ1ZSkK
KworCitfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKKyAgICBub3AKK19sbGludF9vcF9qZmFsc2U6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAgbWFj
cm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfamZhbHNlKQorCisKK21hY3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwgaW1tZWRp
YXRlSGFuZGxlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAg
ICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxIYW5kbGVyKFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0
OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuaW1tZWRpYXRlOgorICAgIG9yaSAxLCB0
MQorICAgIGltbWVkaWF0ZUhhbmRsZXIodDEsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKK2Vu
ZAorCitfbGxpbnRfb3BfamVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFs
TnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0Ym56IHZhbHVlLCBNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdl
dCkgYmllcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKyAgICAKKworX2xsaW50X29wX2pu
ZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBt
YWNybyAodmFsdWUsIHRhcmdldCkgYnRieiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpbmVxIHZhbHVlLCBO
dWxsVGFnLCB0YXJnZXQgZW5kKQorCisKK19sbGludF9vcF9qbmVxX3B0cjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAg
YmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNoCisg
ICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxUaHJv
dWdoCisub3BKbmVxUHRyQnJhbmNoOgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKy5vcEpu
ZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGNvbXBhcmUoaW50
ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUsIGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDIK
KyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCwg
dDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQyLCB0MykKKyAgICBiaW5l
cSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDJO
b3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3Bh
dGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgYmlhIHQwLCBMb3dlc3RUYWcsIC5zbG93CisgICAg
YmliIHQyLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MiwgSW50
MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MywgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQor
Lm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQorLm9wMU5vdEludFJl
YWR5OgorICAgIGZpaTJkIHQxLCB0MCwgZnQwCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwg
Lmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMk5vdEludDoKKyAgICBjaTJkIHQx
LCBmdDAKKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBmaWkyZCB0MywgdDIsIGZ0
MQorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNo
KDQpCisKKy5qdW1wVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKworLnNsb3c6
CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRf
b3BfbG9vcF9pZl9sZXNzOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJkbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfamxlc3MpCisKKworX2xsaW50X29wX2pubGVzczoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJp
Z3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX2pubGVzcykKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyOgorICAgIG5v
cAorX2xsaW50X29wX2pncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJl
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3QgbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXIpCisK
KworX2xsaW50X29wX2puZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFy
ZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRl
cXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3Jl
YXRlcikKKworCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzZXE6CisgICAgbm9wCitfbGxpbnRfb3Bf
amxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcSBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzc2VxKQorCisKK19sbGludF9v
cF9qbmxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0dW4gbGVmdCwgcmlnaHQs
IHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzZXEpCisKKworX2xsaW50
X29wX2xvb3BfaWZfZ3JlYXRlcmVxOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyZXE6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3Bfam5ncmVh
dGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdHVuIGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcmVxKQorCisKK19sbGludF9v
cF9sb29wX2hpbnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRG
b3JMb29wKCkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zd2l0Y2hfaW1tOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10s
IHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQy
CisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MyAgICMgRklYTUU6IHdvdWxkIGJl
IG5pY2UgdG8gcGVlcGhvbGUgdGhpcyEKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjpt
X2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0Mgor
ICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJ
bnQKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwg
U2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5v
cFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hP
ZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDMKKyAgICBsb2FkaSBbdDMsIHQwLCA0
XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRpc3BhdGNo
QnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoSW1tTm90SW50OgorICAgIGJpYiB0MSwg
TG93ZXN0VGFnLCAub3BTd2l0Y2hJbW1TbG93ICAjIEdvIHRvIHNsb3cgcGF0aCBpZiBpdCdzIGEg
ZG91YmxlLgorLm9wU3dpdGNoSW1tRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQ
Q10pCisKKy5vcFN3aXRjaEltbVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3
aXRjaF9pbW0pCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA0W1BD
XSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwg
dDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQzCisgICAgbG9hZHAgQ29kZUJs
b2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
b3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNT
dHJpbmc6Om1fdmFsdWVbdDBdLCB0MAorICAgIGJpbmVxIFN0cmluZ0ltcGw6Om1fbGVuZ3RoW3Qw
XSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU3RyaW5nSW1wbDo6bV9k
YXRhOFt0MF0sIHQxCisgICAgYnRpbnogU3RyaW5nSW1wbDo6bV9oYXNoQW5kRmxhZ3NbdDBdLCBI
YXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0Y2hDaGFyOEJpdAorICAgIGxvYWRoIFt0MV0sIHQw
CisgICAgam1wIC5vcFN3aXRjaENoYXJSZWFkeQorLm9wU3dpdGNoQ2hhcjhCaXQ6CisgICAgbG9h
ZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENoYXJSZWFkeToKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJs
ZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZz
ZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAg
IGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNl
dFt0Ml0sIHQyCisgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCisgICAgYnRpeiB0MSwgLm9wU3dp
dGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCisKKy5v
cFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitf
bGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9zdHJpbmcpCisgICAgZGlzcGF0Y2goMCkKKworCitf
bGxpbnRfb3BfbmV3X2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0aXogMTJbUENd
LCAub3BOZXdGdW5jVW5jaGVja2VkCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFn
T2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BOZXdGdW5jRG9uZQorLm9wTmV3
RnVuY1VuY2hlY2tlZDoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmMpCisu
b3BOZXdGdW5jRG9uZToKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfZnVuY19l
eHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9u
ZXdfZnVuY19leHApCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBkb0NhbGwoaGVscGVyKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBMTElu
dENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkK
KyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENhbGxTbG93Cisg
ICAgYmluZXEgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIsIC5vcENhbGxTbG93CisgICAg
bG9hZGkgMTJbUENdLCB0MworICAgIGFkZHAgMjQsIFBDCisgICAgbHNoaWZ0aSAzLCB0MworICAg
IGFkZHAgY2ZyLCB0MyAgIyB0MyBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9mIGNmcgorICAgIGxv
YWRwIEpTRnVuY3Rpb246Om1fc2NvcGVDaGFpblt0Ml0sIHQwCisgICAgc3RvcmVpIHQyLCBDYWxs
ZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSB0MCwgU2NvcGVDaGFpbiArIFBheWxv
YWRPZmZzZXRbdDNdCisgICAgbG9hZGkgOCAtIDI0W1BDXSwgdDIKKyAgICBzdG9yZWkgUEMsIEFy
Z3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlcCBjZnIsIENhbGxlckZyYW1l
W3QzXQorICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCisg
ICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10KKyAgICBzdG9yZWkgQ2Vs
bFRhZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10KKyAgICBtb3ZlIHQzLCBjZnIKKyAgICBj
YWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0KKyAgICBkaXNwYXRj
aEFmdGVyQ2FsbCgpCisKKy5vcENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBoZWxw
ZXIpCitlbmQKKworX2xsaW50X29wX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRv
Q2FsbChfbGxpbnRfaGVscGVyX2NhbGwpCisKKworX2xsaW50X29wX2NvbnN0cnVjdDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY29uc3RydWN0KQorCisK
K19sbGludF9vcF9jYWxsX3ZhcmFyZ3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHNsb3dQ
YXRoRm9yQ2FsbCg2LCBfbGxpbnRfaGVscGVyX2NhbGxfdmFyYXJncykKKworCitfbGxpbnRfb3Bf
Y2FsbF9ldmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAKKyAgICAjIEV2YWwgaXMgZXhl
Y3V0ZWQgaW4gb25lIG9mIHR3byBtb2RlczoKKyAgICAjCisgICAgIyAxKSBXZSBmaW5kIHRoYXQg
d2UncmUgcmVhbGx5IGludm9raW5nIGV2YWwoKSBpbiB3aGljaCBjYXNlIHRoZQorICAgICMgICAg
ZXhlY3V0aW9uIGlzIHBlcmZvbWVkIGVudGlyZWx5IGluc2lkZSB0aGUgaGVscGVyLCBhbmQgaXQK
KyAgICAjICAgIHJldHVybnMgdGhlIFBDIG9mIGEgZnVuY3Rpb24gdGhhdCBqdXN0IHJldHVybnMg
dGhlIHJldHVybiB2YWx1ZQorICAgICMgICAgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAj
CisgICAgIyAyKSBXZSBmaW5kIHRoYXQgd2UncmUgaW52b2tpbmcgc29tZXRoaW5nIGNhbGxlZCBl
dmFsKCkgdGhhdCBpcyBub3QKKyAgICAjICAgIHRoZSByZWFsIGV2YWwuIFRoZW4gdGhlIGhlbHBl
ciByZXR1cm5zIHRoZSBQQyBvZiB0aGUgdGhpbmcgdG8KKyAgICAjICAgIGNhbGwsIGFuZCB3ZSBj
YWxsIGl0LgorICAgICMKKyAgICAjIFRoaXMgYWxsb3dzIHVzIHRvIGhhbmRsZSB0d28gY2FzZXMs
IHdoaWNoIHdvdWxkIHJlcXVpcmUgYSB0b3RhbCBvZgorICAgICMgdXAgdG8gZm91ciBwaWVjZXMg
b2Ygc3RhdGUgdGhhdCBjYW5ub3QgYmUgZWFzaWx5IHBhY2tlZCBpbnRvIHR3bworICAgICMgcmVn
aXN0ZXJzIChDIGZ1bmN0aW9ucyBjYW4gcmV0dXJuIHVwIHRvIHR3byByZWdpc3RlcnMsIGVhc2ls
eSk6CisgICAgIworICAgICMgLSBUaGUgY2FsbCBmcmFtZSByZWdpc3Rlci4gVGhpcyBtYXkgb3Ig
bWF5IG5vdCBoYXZlIGJlZW4gbW9kaWZpZWQKKyAgICAjICAgYnkgdGhlIGhlbHBlciwgYnV0IHRo
ZSBjb252ZW50aW9uIGlzIHRoYXQgaXQgcmV0dXJucyBpdC4gSXQncyBub3QKKyAgICAjICAgdG90
YWxseSBjbGVhciBpZiB0aGF0J3MgbmVjZXNzYXJ5LCBzaW5jZSB0aGUgY2ZyIGlzIGNhbGxlZSBz
YXZlLgorICAgICMgICBCdXQgdGhhdCdzIG91ciBzdHlsZSBpbiB0aGlzIGhlcmUgaW50ZXJwcmV0
ZXIgc28gd2Ugc3RpY2sgd2l0aCBpdC4KKyAgICAjCisgICAgIyAtIEEgYml0IHRvIHNheSBpZiB0
aGUgaGVscGVyIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCB0aGUgZXZhbCBhbmQgaGFzCisgICAgIyAg
IHRoZSByZXR1cm4gdmFsdWUsIG9yIGRpZCBub3QgZXhlY3V0ZSB0aGUgZXZhbCBidXQgaGFzIGEg
UEMgZm9yIHVzCisgICAgIyAgIHRvIGNhbGwuCisgICAgIworICAgICMgLSBFaXRoZXI6CisgICAg
IyAgIC0gVGhlIEpTIHJldHVybiB2YWx1ZSAodHdvIHJlZ2lzdGVycyksIG9yCisgICAgIworICAg
ICMgICAtIFRoZSBQQyB0byBjYWxsLgorICAgICMKKyAgICAjIEl0IHR1cm5zIG91dCB0byBiZSBl
YXNpZXIgdG8ganVzdCBhbHdheXMgaGF2ZSB0aGlzIHJldHVybiB0aGUgY2ZyCisgICAgIyBhbmQg
YSBQQyB0byBjYWxsLCBhbmQgdGhhdCBQQyBtYXkgYmUgYSBkdW1teSB0aHVuayB0aGF0IGp1c3QK
KyAgICAjIHJldHVybnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAg
CisgICAgc2xvd1BhdGhGb3JDYWxsKDQsIF9sbGludF9oZWxwZXJfY2FsbF9ldmFsKQorCisKK19s
bGludF9nZW5lcmljX3JldHVybl9wb2ludDoKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKwor
X2xsaW50X29wX3RlYXJfb2ZmX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVk
CisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJP
ZmZBY3RpdmF0aW9uTm90Q3JlYXRlZAorLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkOgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQorLm9wVGVhck9m
ZkFjdGl2YXRpb25Ob3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Rl
YXJfb2ZmX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgc3ViaSAxLCB0MCAgICMgR2V0IHRoZSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0
ZXIKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVh
ck9mZkFyZ3VtZW50c05vdENyZWF0ZWQKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGVh
cl9vZmZfYXJndW1lbnRzKQorLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAgZGlz
cGF0Y2goMikKKworCittYWNybyBkb1JldHVybigpCisgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwg
dDIKKyAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKKyAgICByZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybih0MikKKyAgICByZXQKK2VuZAorCitfbGxpbnRfb3BfcmV0OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAg
IGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkK
KyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX2NhbGxfcHV0X3Jlc3VsdDoKKyAgICBsb2Fk
aSA0W1BDXSwgdDIKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHRyYWNlRXhlY3V0aW9uKCkg
IyBOZWVkcyB0byBiZSBoZXJlIGJlY2F1c2UgaXQgd291bGQgY2xvYmJlciB0MSwgdDAKKyAgICBk
aXNwYXRjaCgyKQorCisKK19sbGludF9vcF9yZXRfb2JqZWN0X29yX3RoaXM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5v
cFJldE9iamVjdE9yVGhpc05vdE9iamVjdAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QyXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgZG9SZXR1
cm4oKQorCisub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3Q6CisgICAgbG9hZGkgOFtQQ10sIHQw
CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF9vcF9tZXRo
b2RfY2hlY2s6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgV2UgaWdub3JlIG1ldGhvZCBj
aGVja3MgYW5kIHVzZSBub3JtYWwgZ2V0X2J5X2lkIG9wdGltaXphdGlvbnMuCisgICAgZGlzcGF0
Y2goMSkKKworCitfbGxpbnRfb3Bfc3RyY2F0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3RyY2F0KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX3RvX3ByaW1pdGl2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MiwgdDEsIHQwKQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BUb1ByaW1pdGl2ZUlzSW1tCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJuZXEgU3RydWN0dXJl
OjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5vcFRvUHJp
bWl0aXZlU2xvd0Nhc2UKKy5vcFRvUHJpbWl0aXZlSXNJbW06CisgICAgc3RvcmVpIHQxLCBUYWdP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Mywg
OF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb1ByaW1pdGl2ZVNsb3dDYXNlOgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl90b19wcmltaXRpdmUpCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfZ2V0X3BuYW1lczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2dldF9wbmFtZXMpCisgICAgZGlzcGF0Y2goMCkgIyBUaGUgaGVscGVy
IGVpdGhlciBhZHZhbmNlcyB0aGUgUEMgb3IganVtcHMgdXMgdG8gc29tZXdoZXJlIGVsc2UuCisK
KworX2xsaW50X29wX25leHRfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDEyW1BDXSwgdDEKKyAgICBsb2FkaSAxNltQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XSwgdDAKKyAgICBiaWVxIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
LCAub3BOZXh0UG5hbWVFbmQKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OjptX2pzU3RyaW5nc1t0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgOF0sIHQzCisgICAgYWRk
aSAxLCB0MAorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxv
YWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA4W1BD
XSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MworICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGJwbmVxIHQxLCBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBs
b2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFByb3RvdHlwZUNoYWluW3QyXSwg
dDAKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDBdLCB0MAorICAgIGJ0cHog
W3QwXSwgLm9wTmV4dFBuYW1lVGFyZ2V0Cisub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3A6
CisgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W3QxXSwgTnVsbFRh
ZywgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQ
YXlsb2FkT2Zmc2V0W3QxXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwg
dDEKKyAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGFkZHAgNCwgdDAK
KyAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKKy5vcE5leHRQ
bmFtZVRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgyNFtQQ10pCisKKy5vcE5leHRQbmFtZUVu
ZDoKKyAgICBkaXNwYXRjaCg3KQorCisub3BOZXh0UG5hbWVTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9uZXh0X3BuYW1lKSAjIFRoaXMgZWl0aGVyIGtlZXBzIHRoZSBQQyB3aGVy
ZSBpdCB3YXMgKGNhdXNpbmcgdXMgdG8gbG9vcCkgb3Igc2V0cyBpdCB0byB0YXJnZXQuCisgICAg
ZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfcHVzaF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfc2NvcGUpCisgICAgZGlzcGF0
Y2goMikKKworCitfbGxpbnRfb3BfcG9wX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9wX3Njb3BlKQorICAgIGRpc3BhdGNoKDEpCisK
KworX2xsaW50X29wX3B1c2hfbmV3X3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9uZXdfc2NvcGUpCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfY2F0Y2g6CisgICAgIyBUaGlzIGlzIHdoZXJlIHdlIGVuZCB1cCBmcm9t
IHRoZSBKSVQncyB0aHJvdyB0cmFtcG9saW5lIChiZWNhdXNlIHRoZQorICAgICMgbWFjaGluZSBj
b2RlIHJldHVybiBhZGRyZXNzIHdpbGwgYmUgc2V0IHRvIF9sbGludF9vcF9jYXRjaCksIGFuZCBm
cm9tCisgICAgIyB0aGUgaW50ZXJwcmV0ZXIncyB0aHJvdyB0cmFtcG9saW5lIChzZWUgX2xsaW50
X3Rocm93X3RyYW1wb2xpbmUpLgorICAgICMgVGhlIEpJVCB0aHJvd2luZyBwcm90b2NvbCBjYWxs
cyBmb3IgdGhlIGNmciB0byBiZSBpbiB0MC4gVGhlIHRocm93aW5nCisgICAgIyBjb2RlIG11c3Qg
aGF2ZSBrbm93biB0aGF0IHdlIHdlcmUgdGhyb3dpbmcgdG8gdGhlIGludGVycHJldGVyLCBhbmQg
aGF2ZQorICAgICMgc2V0IEpTR2xvYmFsRGF0YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93
LgorICAgIG1vdmUgdDAsIGNmcgorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFb
c3BdLCB0MworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRo
cm93W3QzXSwgUEMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRP
ZmZzZXRbdDNdLCB0MAorICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zm
c2V0W3QzXSwgdDEKKyAgICBzdG9yZWkgMCwgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXls
b2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBKU0dsb2JhbERhdGE6OmV4
Y2VwdGlvbiArIFRhZ09mZnNldFt0M10gICAgICAgCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAg
c3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBUYWdP
ZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB0cmFjZUV4ZWN1dGlvbigpICAjIFRoaXMgbmVlZHMgdG8g
YmUgaGVyZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY2xvYmJlciB0MCwgdDEsIHQyLCB0MyBh
Ym92ZS4KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvdzoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rocm93KQorICAgIGRpc3Bh
dGNoKDIpCisKKworX2xsaW50X29wX3Rocm93X3JlZmVyZW5jZV9lcnJvcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rocm93X3JlZmVyZW5jZV9l
cnJvcikKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9qc3I6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFkZGkgMyAqIDQsIFBDLCB0MQorICAg
IHN0b3JlaSB0MSwgW2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKwor
X2xsaW50X29wX3NyZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGxvYWRwIFtjZnIsIHQwLCA4XSwgUEMKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGlu
dF9vcF9kZWJ1ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2RlYnVnKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Byb2ZpbGVfd2ls
bF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidHB6IEpJVFN0YWNrRnJhbWU6OmVu
YWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2ls
bENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2Nh
bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0cHogSklUU3RhY2tGcmFtZTo6ZW5hYmxl
ZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgLm9wUHJvZmlsZURpZENhbGxEb25lCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERv
bmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENd
LCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhy
b3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUg
aW50ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMpLCBzbworICAgICMg
dGhlIHRocm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2Ug
Y29tZSB0byBoZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3Mg
dGhyb3dpbmcgcHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtz
cF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQw
CisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKwor
X2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5B
ZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFb
c3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0
MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisK
KyMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24n
dCBzdXBwb3J0IGFsbCBvcGNvZGVzLgorIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlz
ZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAorIyBhcyBtdWNoLgor
CittYWNybyBub3RTdXBwb3J0ZWQoKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGNy
YXNoKCkKKyAgICBlbHNlCisgICAgICAgICMgV2Ugc2hvdWxkIHVzZSB3aGF0ZXZlciB0aGUgc21h
bGxlc3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24gaXMsIGp1c3QgdG8KKyAgICAgICAgIyBlbnN1cmUg
dGhhdCB0aGVyZSBpcyBhIGdhcCBiZXR3ZWVuIGluc3RydWN0aW9uIGxhYmVscy4gSWYgbXVsdGlw
bGUKKyAgICAgICAgIyBzbWFsbGVzdCBpbnN0cnVjdGlvbnMgZXhpc3QsIHdlIHNob3VsZCBwaWNr
IHRoZSBvbmUgdGhhdCBpcyBtb3N0CisgICAgICAgICMgbGlrZWx5IHJlc3VsdCBpbiBleGVjdXRp
b24gYmVpbmcgaGFsdGVkLiBDdXJyZW50bHkgdGhhdCBpcyB0aGUgYnJlYWsKKyAgICAgICAgIyBp
bnN0cnVjdGlvbiBvbiBhbGwgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBpbnRlcmVzdGVkIGluLiAoQnJl
YWsgaXMgaW50MworICAgICAgICAjIG9uIEludGVsLCB3aGljaCBpcyAxIGJ5dGUsIGFuZCBia3B0
IG9uIEFSTXY3LCB3aGljaCBpcyAyIGJ5dGVzLikKKyAgICAgICAgYnJlYWsKKyAgICBlbmQKK2Vu
ZAorCitfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitf
bGxpbnRfb3BfZ2V0X2J5X2lkX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9v
cF9nZXRfYnlfaWRfY3VzdG9tX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9v
cF9nZXRfYnlfaWRfY3VzdG9tX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9v
cF9nZXRfYnlfaWRfY3VzdG9tX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29w
X2dldF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfZ2V0dGVyX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfZ2V0dGVyX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfZ2V0dGVyX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9i
eV9pZF9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3Nl
bGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9zdHJpbmdfbGVuZ3RoOgor
ICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBu
b3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3JlcGxhY2U6CisgICAgbm90U3Vw
cG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uOgorICAgIG5vdFN1cHBv
cnRlZCgpCisKKworIyBJbmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50LgorX2xsaW50X2VuZDoKKyAg
ICBjcmFzaCgpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgor
I2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworI2luY2x1ZGUgIkxMSW50QXNzZW1i
bHkuaCIKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
TG93TGV2ZWxJbnRlcnByZXRlcl9oCisjZGVmaW5lIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorCisj
aW5jbHVkZSAiT3Bjb2RlLmgiCisKKyNkZWZpbmUgTExJTlRfSU5TVFJVQ1RJT05fREVDTChvcGNv
ZGUsIGxlbmd0aCkgZXh0ZXJuICJDIiB2b2lkIGxsaW50XyMjb3Bjb2RlKCk7CisgICAgRk9SX0VB
Q0hfT1BDT0RFX0lEKExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wpOworI3VuZGVmIExMSU5UX0lOU1RS
VUNUSU9OX0RFQ0wKKworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2JlZ2luKCk7CitleHRlcm4gIkMi
IHZvaWQgbGxpbnRfZW5kKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1
ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2V2YWxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIg
dm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIg
dm9pZCBsbGludF9nZW5lcmljX3JldHVybl9wb2ludCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50
X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90
aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKCk7CisKKyNlbmRpZiAvLyBMb3dMZXZlbEludGVy
cHJldGVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJi
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcu
cmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkzIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitjbGFzcyBTcGVjaWFsUmVnaXN0ZXIKKyAgZGVmIGluaXRpYWxpemUo
bmFtZSkKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgYXJtVjdPcGVyYW5kCisg
ICAgQG5hbWUKKyAgZW5kCitlbmQKKworQVJNdjdfREFUQV9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIu
bmV3KCJpcCIpCitBUk12N19BRERSX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoInIzIikKKwor
ZGVmIG1vdmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJlbnRseSB3ZSBvbmx5
IGhhbmRsZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1vdi9tb3Z0IGZvciB0
aGUgY29tcGxleCBvbmVzLgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2CisgICAgJGFz
bS5wdXRzICJtb3Z3IFwjI3t2YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxz
aWYgKH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20ucHV0cyAibXZudyBc
IyN7fnZhbHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNlCisgICAgJGFzbS5w
dXRzICJtb3Z3IFwjI3t2YWx1ZSAmIDB4ZmZmZn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIK
KyAgICBpZiAodmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCisgICAgICAkYXNtLnB1dHMgIm1vdnQg
XCMje3ZhbHVlID4+IDE2fSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorICBl
bmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNl
IG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICJyMCIKKyAgICB3aGVuICJ0
MSIsICJhMSIsICJyMSIKKyAgICAgICJyMSIKKyAgICB3aGVuICJ0MiIsICJhMiIKKyAgICAgICJy
MiIKKyAgICB3aGVuICJhMyIKKyAgICAgICJyMyIKKyAgICB3aGVuICJ0MyIKKyAgICAgICJyNCIK
KyAgICB3aGVuICJ0NCIKKyAgICAgICJyNyIKKyAgICB3aGVuICJjZnIiCisgICAgICAicjUiCisg
ICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVw
YXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVN
ZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9h
ZFN0b3JlV3JhcAorICAgIHlpZWxkCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAor
ICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZyIgor
ICAgICAgImQwIgorICAgIHdoZW4gImZyMSIsCisgICAgICAiZDEiCisgICAgd2hlbiAiZnIyIgor
ICAgICAgImQyIgorICAgIHdoZW4gImZyMyIKKyAgICAgICJkMyIKKyAgICB3aGVuICJmcjQiCisg
ICAgICAiZDQiCisgICAgd2hlbiAiZnI1IgorICAgICAgImQ1IgorICAgIGVsc2UKKyAgICAgIHJh
aXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5
T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAg
IGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5
aWVsZCBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgYXJtVjdPcGVy
YW5kCisgICAgcmFpc2UgIkludmFsaWQgaW1tZWRpYXRlICN7dmFsdWV9IiBpZiB2YWx1ZSA8IDAg
b3IgdmFsdWUgPiAyNTUKKyAgICAiIyR7dmFsdWV9IgorICBlbmQKKyAgCisgIGRlZiBhcm1WN1By
ZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJs
ZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdM
b2FkU3RvcmVXcmFwCisgICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCittb2R1bGUgQVJNdjdB
ZGRyZXNzVXRpbGl0aWVzCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICBzZWxmLmFybVY3
UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICRhc20ucHV0cyAiXHRsZHIgI3tzZWxm
LmFybVY3UG9zc2libHlNZW1vcnlPcGVyYW5kfSwgI3tBUk12N19EQVRBX1JFRy5hcm1WN09wZXJh
bmR9IgorICAgIHlpZWxkIEFSTXY3X0RBVEFfUkVHCisgICAgJGFzbS5wdXRzICJcdHN0ciAje0FS
TXY3X0RBVEFfUkVHLmFybVY3T3BlcmFuZH0sICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVtb3J5T3Bl
cmFuZH0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJl
c3NVdGlsaXRpZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisg
ICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAg
IG1vdmVJbW1lZGlhdGUob2Zmc2V0LnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQu
dmFsdWUgPCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgIlsje2Jhc2UuYXJt
VjdPcGVyYW5kfSwgI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgICBlbHNlCisg
ICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje29mZnNldC5hcm1WN09wZXJhbmR9XSIKKyAg
ICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGluY2x1ZGUgQVJNdjdBZGRy
ZXNzVXRpbGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAor
ICAgIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1
ZSwgQVJNdjdfQUREUl9SRUcpCisgICAgICAkYXNtLnB1dHMgImFkZHcgI3tBUk12N19BRERSX1JF
Ry5hcm1WN09wZXJhbmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAgZW5kCisg
IAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUg
IT0gMAorICAgICAgIlsje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJt
VjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVsc2UKKyAgICAgICJbI3tiYXNlLmFy
bVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAg
IGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgaW5jbHVkZSBBUk12
N0FkZHJlc3NVdGlsaXRpZXMKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9w
ZXJhbmQKKyAgICBtb3ZlSW1tZWRpYXRlKGFkZHJlc3MudmFsdWUsIEFSTXY3X0FERFJfUkVHKQor
ICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICJbI3tBUk12
N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgZW5kCitlbmQKKworCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgz
IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2Vu
ZHMiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2V0dGlu
Z3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2NsYXNzIEFzc2VtYmxlcgorICBkZWYgaW5pdGlh
bGl6ZShvdXRwKQorICAgIEBvdXRwID0gb3V0cAorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisg
IAorICBkZWYgZW50ZXJBc20KKyAgICBAb3V0cC5wdXRzICJhc20gKCIKKyAgICBAc3RhdGUgPSA6
YXNtCisgIGVuZAorICAKKyAgZGVmIGxlYXZlQXNtCisgICAgQG91dHAucHV0cyAiKTsiCisgICAg
QHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBpbkFzbQorICAgIGVudGVyQXNtCisgICAg
eWllbGQKKyAgICBsZWF2ZUFzbQorICBlbmQKKyAgCisgIGRlZiBwdXRzKGxpbmUpCisgICAgcmFp
c2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAgQG91dHAucHV0cygobGluZSArICJcbiIpLmlu
c3BlY3QpCisgIGVuZAorICAKKyAgZGVmIGNvbW1lbnQodGV4dCkKKyAgICBAb3V0cC5wdXRzICIv
LyAje3RleHR9IgorICBlbmQKK2VuZAorCiskYXNtID0gQXNzZW1ibGVyLm5ldygkc3Rkb3V0KQor
Cithc21GaWxlID0gQVJHVi5zaGlmdAorb2Zmc2V0c0ZpbGUgPSBBUkdWLnNoaWZ0CisKK2FzdCA9
IHBhcnNlKGxleChJTzo6cmVhZChhc21GaWxlKSkpCitvZmZzZXRzTGlzdCwgY29uZmlnSW5kZXgg
PSBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KG9mZnNldHNGaWxlKQorCitmb3JTZXR0aW5n
cyhjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KVtjb25maWdJbmRleF0sIGFzdCkgewor
ICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgYXNzZXJ0Q29u
ZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICBsb3dMZXZlbEFTVCA9IGxvd0xldmVsQVNU
LnJlc29sdmUoKmJ1aWxkT2Zmc2V0c01hcChsb3dMZXZlbEFTVCwgb2Zmc2V0c0xpc3QpKQorICBl
bWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFj
a2VuZCkgeworICAgICRhc20uaW5Bc20geworICAgICAgbG93TGV2ZWxBU1QubG93ZXIoYmFja2Vu
ZCkKKyAgICB9CisgIH0KK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L2FzdC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
c3QucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
c3QucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODE3IEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBC
YXNlIHV0aWxpdHkgdHlwZXMgZm9yIHRoZSBBU1QuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFZhbGlk
IG1ldGhvZHMgZm9yIE5vZGU6CisjCisjIG5vZGUuY2hpbGRyZW4gLT4gUmV0dXJucyBhbiBhcnJh
eSBvZiBpbW1lZGlhdGUgY2hpbGRyZW4uCisjCisjIG5vZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJu
cyBhbiBhcnJheSBvZiBhbGwgc3RyaWN0IGRlc2NlbmRhbnRzIChjaGlsZHJlbgorIyAgICAgYW5k
IGNoaWxkcmVuIG9mIGNoaWxkcmVuLCB0cmFuc2l0aXZlbHkpLgorIworIyBub2RlLmZsYXR0ZW4g
LT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5k
CisjICAgICB0aGUgbm9kZSBpdHNlbGYuCisjCisjIG5vZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVy
bnMgYW4gYXJyYXkgY29udGFpbmluZyB0aG9zZSBlbGVtZW50cyBpbgorIyAgICAgbm9kZS5mbGF0
dGVuIHRoYXQgYXJlIG9mIHRoZSBnaXZlbiB0eXBlIChpc19hPyB0eXBlIHJldHVybnMgdHJ1ZSku
CisjCisjIG5vZGUubWFwQ2hpbGRyZW57fHZ8IC4uLn0gLT4gUmV0dXJucyBhIG5ldyBub2RlIHdp
dGggYWxsIGNoaWxkcmVuCisjICAgICByZXBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJs
b2NrLgorIworIyBFeGFtcGxlczoKKyMKKyMgbm9kZS5maWx0ZXIoU2V0dGluZykudW5pcSAtPiBS
ZXR1cm5zIGFsbCBvZiB0aGUgc2V0dGluZ3MgdGhhdCB0aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVs
c2UgYmxvY2tzIGRlcGVuZCBvbi4KKyMKKyMgbm9kZS5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlx
IC0+IFJldHVybnMgYWxsIG9mIHRoZSBzdHJ1Y3R1cmUgb2Zmc2V0cworIyAgICAgdGhhdCB0aGUg
QVNUIGRlcGVuZHMgb24uCisKK2NsYXNzIE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4K
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgQGNvZGVPcmlnaW4gPSBjb2Rl
T3JpZ2luCisgIGVuZAorICAKKyAgZGVmIGNvZGVPcmlnaW5TdHJpbmcKKyAgICAibGluZSBudW1i
ZXIgI3tAY29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVmIGRlc2NlbmRhbnRzCisgICAgY2hp
bGRyZW4uY29sbGVjdHt8dnwgdi5mbGF0dGVufS5mbGF0dGVuCisgIGVuZAorICAKKyAgZGVmIGZs
YXR0ZW4KKyAgICBbc2VsZl0gKyBkZXNjZW5kYW50cworICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIo
dHlwZSkKKyAgICBmbGF0dGVuLnNlbGVjdHt8dnwgdi5pc19hPyB0eXBlfQorICBlbmQKK2VuZAor
CitjbGFzcyBOb0NoaWxkcmVuIDwgTm9kZQorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW10K
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2Ns
YXNzIFN0cnVjdE9mZnNldEtleQorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisg
IGRlZiBpbml0aWFsaXplKHN0cnVjdCwgZmllbGQpCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAg
IEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAgZGVmIGhhc2gKKyAgICBAc3RydWN0Lmhhc2gg
KyBAZmllbGQuaGFzaCAqIDMKKyAgZW5kCisgIAorICBkZWYgZXFsPyhvdGhlcikKKyAgICBAc3Ry
dWN0ID09IG90aGVyLnN0cnVjdCBhbmQgQGZpZWxkID09IG90aGVyLmZpZWxkCisgIGVuZAorZW5k
CisgICAgCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBBU1Qgbm9kZXMuICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBTdHJ1Y3RPZmZzZXQg
PCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisg
IEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JGaWVsZChjb2RlT3JpZ2luLCBzdHJ1
Y3QsIGZpZWxkKQorICAgIGtleSA9IFN0cnVjdE9mZnNldEtleS5uZXcoc3RydWN0LCBmaWVsZCkK
KyAgICAKKyAgICB1bmxlc3MgQEBtYXBwaW5nW2tleV0KKyAgICAgIEBAbWFwcGluZ1trZXldID0g
U3RydWN0T2Zmc2V0Lm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGVuZAorICAg
IEBAbWFwcGluZ1trZXldCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tzdHJ1Y3R9Ojoj
e2ZpZWxkfSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAgIGlmIEBzdHJ1Y3QgIT0g
b3RoZXIuc3RydWN0CisgICAgICByZXR1cm4gQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgICAg
ZW5kCisgICAgQGZpZWxkIDw9PiBvdGhlci5maWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXpl
b2YgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1
Y3QgPSBzdHJ1Y3QKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYu
Zm9yTmFtZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tzdHJ1Y3Rd
CisgICAgICBAQG1hcHBpbmdbc3RydWN0XSA9IFNpemVvZi5uZXcoY29kZU9yaWdpbiwgc3RydWN0
KQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tzdHJ1Y3RdCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAic2l6ZW9mICN7QHN0cnVjdH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAg
ICBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRl
IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhbHVlID0g
dmFsdWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje3ZhbHVlfSIKKyAgZW5kCisgIAor
ICBkZWYgPT0ob3RoZXIpCisgICAgb3RoZXIuaXNfYT8gSW1tZWRpYXRlIGFuZCBvdGhlci52YWx1
ZSA9PSBAdmFsdWUKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAg
YXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQK
KyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVm
dCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZEltbWVkaWF0
ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxl
ZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSBy
aWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBl
bmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmln
aW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIigje2xlZnQuZHVtcH0gLSAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xh
c3MgTXVsSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAg
CisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbgorICAgIE11bEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVm
dCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQu
ZHVtcH0gKiAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRl
IDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGNoaWxkXQorICBlbmQKKyAgCisgIGRl
ZiBtYXBDaGlsZHJlbgorICAgIE5lZ0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBj
aGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKC0je0BjaGlsZC5kdW1wfSkiCisg
IGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVy
IDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0g
e30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3Mg
QEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBSZWdpc3RlcklELm5ldyhj
b2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQg
PCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1l
CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBp
bmdbbmFtZV0gPSBGUFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisg
ICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVu
ZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFt
ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9Cisg
IAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFw
cGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gVmFyaWFibGUubmV3KGNvZGVPcmln
aW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpiYXNlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBiYXNlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UK
KyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0Bi
YXNlLCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZHJlc3Mu
bmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH1dIgorICBlbmQK
K2VuZAorCitjbGFzcyBCYXNlSW5kZXggPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6aW5k
ZXgsIDpzY2FsZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFz
ZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFz
ZSA9IGJhc2UKKyAgICBAaW5kZXggPSBpbmRleAorICAgIEBzY2FsZSA9IHNjYWxlCisgICAgcmFp
c2UgdW5sZXNzIFsxLCAyLCA0LCA4XS5tZW1iZXI/IEBzY2FsZQorICAgIEBvZmZzZXQgPSBvZmZz
ZXQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBpbmRleCwgQG9mZnNl
dF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBCYXNlSW5kZXgubmV3KGNvZGVP
cmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAaW5kZXgpLCBAc2NhbGUsICh5aWVsZCBAb2Zm
c2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2Uu
ZHVtcH0sICN7aW5kZXguZHVtcH0sICN7c2NhbGV9XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJz
b2x1dGVBZGRyZXNzIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6YWRkcmVzcworICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYWRkcmVzcykKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBhZGRyZXNzID0gYWRkcmVzcworICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7
YWRkcmVzcy5kdW1wfVtdIgorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbiA8IE5vZGUK
KyAgYXR0cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBvcGNvZGUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QG9wY29kZSA9IG9wY29kZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4o
JnByb2MpCisgICAgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5k
cy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0IiArIG9wY29kZS50
b19zICsgIiAiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCisgIGVu
ZAorZW5kCisKK2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiXHRlcnJvciIKKyAgZW5kCitlbmQKKworY2xhc3MgQ29uc3REZWNsIDwgTm9kZQorICBhdHRy
X3JlYWRlciA6dmFyaWFibGUsIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgdmFyaWFibGUsIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhcmlhYmxl
ID0gdmFyaWFibGUKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJl
bgorICAgIFtAdmFyaWFibGUsIEB2YWx1ZV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICBDb25zdERlY2wubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAdmFyaWFibGUpLCAoeWllbGQg
QHZhbHVlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJjb25zdCAje0B2YXJpYWJsZS5k
dW1wfSA9ICN7QHZhbHVlLmR1bXB9IgorICBlbmQKK2VuZAorCiskbGFiZWxNYXBwaW5nID0ge30K
KworY2xhc3MgTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2lu
LCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBu
YW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8g
TGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFiZWwubmV3KGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2Nh
bExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1l
ID0gbmFtZQorICBlbmQKKworICBAQHVuaXF1ZU5hbWVDb3VudGVyID0gMAorICAKKyAgZGVmIHNl
bGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0K
KyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJl
bE1hcHBpbmdbbmFtZV0uaXNfYT8gTG9jYWxMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1h
cHBpbmdbbmFtZV0gPSBMb2NhbExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAor
ICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgc2VsZi51bmlxdWUoY29t
bWVudCkKKyAgICBuZXdOYW1lID0gIl8je2NvbW1lbnR9IgorICAgIGlmICRsYWJlbE1hcHBpbmdb
bmV3TmFtZV0KKyAgICAgIHdoaWxlICRsYWJlbE1hcHBpbmdbbmV3TmFtZSA9ICJfI3tAQHVuaXF1
ZU5hbWVDb3VudGVyfV8je2NvbW1lbnR9Il0KKyAgICAgICAgQEB1bmlxdWVOYW1lQ291bnRlciAr
PSAxCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBmb3JOYW1lKG5pbCwgbmV3TmFtZSkKKyAgZW5k
CisgIAorICBkZWYgY2xlYW5OYW1lCisgICAgaWYgbmFtZSA9fiAvXlwuLworICAgICAgIl8iICsg
bmFtZVsxLi4tMV0KKyAgICBlbHNlCisgICAgICBuYW1lCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJl
bmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFi
ZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisg
IGRlZiBtYXBDaGlsZHJlbgorICAgIExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAoeWll
bGQgQGxhYmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5hbWUKKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgTG9j
YWxMYWJlbFJlZmVyZW5jZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmxhYmVsCisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0Bs
YWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBMb2NhbExhYmVsUmVmZXJl
bmNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxhYmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFt
ZQorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUK
KyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsaXN0
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsaXN0KQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQGxpc3QgPSBsaXN0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAg
bGlzdAorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBTZXF1ZW5jZS5u
ZXcoY29kZU9yaWdpbiwgQGxpc3QubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgIGxpc3QuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCJcbiIpCisgIGVuZAorZW5kCisKK2Ns
YXNzIFRydWUgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIobmlsKQor
ICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBUcnVlLm5ldworICAKKyAgZGVmIHNlbGYuaW5zdGFu
Y2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVmIHZhbHVlCisgICAgdHJ1ZQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgInRydWUiCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNl
IDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQorICAgIHN1cGVyKG5pbCkKKyAgZW5kCisg
IAorICBAQGluc3RhbmNlID0gRmFsc2UubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAg
IEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICBmYWxzZQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgImZhbHNlIgorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlQ2xhc3MK
KyAgZGVmIGFzTm9kZQorICAgIFRydWUuaW5zdGFuY2UKKyAgZW5kCitlbmQKKworY2xhc3MgRmFs
c2VDbGFzcworICBkZWYgYXNOb2RlCisgICAgRmFsc2UuaW5zdGFuY2UKKyAgZW5kCitlbmQKKwor
Y2xhc3MgU2V0dGluZyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNl
bGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0K
KyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFNldHRpbmcubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisg
ICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBu
YW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQs
IDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdo
dAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFuZC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBs
ZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVm
dC5kdW1wfSBhbmQgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE9yIDwgTm9k
ZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0g
bGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAg
W0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgT3IubmV3
KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gb3IgI3tyaWdodC5kdW1wfSkiCisgIGVuZAor
ZW5kCisKK2NsYXNzIE5vdCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBjaGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBA
cmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTm90Lm5ldyhjb2RlT3Jp
Z2luLCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIobm90ICN7
Y2hpbGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwIDwgTm9DaGlsZHJlbgorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiXHRza2lwIgorICBlbmQKK2VuZAorCitjbGFzcyBJZlRoZW5F
bHNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6cHJlZGljYXRlLCA6dGhlbkNhc2UKKyAgYXR0cl9h
Y2Nlc3NvciA6ZWxzZUNhc2UKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHByZWRp
Y2F0ZSwgdGhlbkNhc2UpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAcHJlZGljYXRlID0g
cHJlZGljYXRlCisgICAgQHRoZW5DYXNlID0gdGhlbkNhc2UKKyAgICBAZWxzZUNhc2UgPSBTa2lw
Lm5ldyhjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIGlmIEBlbHNl
Q2FzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZSwgQGVsc2VDYXNlXQorICAgIGVsc2UK
KyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2VdCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVm
IG1hcENoaWxkcmVuCisgICAgSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBwcmVk
aWNhdGUpLCAoeWllbGQgQHRoZW5DYXNlKSwgKHlpZWxkIEBlbHNlQ2FzZSkpCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICAiaWYgI3twcmVkaWNhdGUuZHVtcH1cbiIgKyB0aGVuQ2FzZS5kdW1w
ICsgIlxuZWxzZVxuIiArIGVsc2VDYXNlLmR1bXAgKyAiXG5lbmQiCisgIGVuZAorZW5kCisKK2Ns
YXNzIE1hY3JvIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOnZhcmlhYmxlcywgOmJvZHkK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAgIEB2YXJpYWJsZXMg
PSB2YXJpYWJsZXMKKyAgICBAYm9keSA9IGJvZHkKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4K
KyAgICBAdmFyaWFibGVzICsgW0Bib2R5XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgor
ICAgIE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQHZhcmlhYmxlcy5tYXB7fHZ8IHlpZWxk
IHZ9LCAoeWllbGQgQGJvZHkpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIm1hY3JvICN7
bmFtZX0oIiArIHZhcmlhYmxlcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKVxu
IiArIGJvZHkuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm9DYWxsIDwg
Tm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBuYW1lID0gbmFtZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgICAgcmFpc2UgdW5sZXNz
IEBvcGVyYW5kcworICAgIEBvcGVyYW5kcy5lYWNoe3x2fCByYWlzZSB1bmxlc3Mgdn0KKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFw
Q2hpbGRyZW4oJnByb2MpCisgICAgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQG9w
ZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHQje25hbWV9
KCIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKSIKKyAgZW5k
CitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMu
cmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2Vu
ZHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9i
YWNrZW5kcy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAieDg2IgorCitC
QUNLRU5EUyA9CisgIFsKKyAgICJYODYiLAorICAgIkFSTXY3IgorICBdCisKK1dPUktJTkdfQkFD
S0VORFMgPQorICBbCisgICAiWDg2IgorICBdCisKK0JBQ0tFTkRfUEFUVEVSTiA9IFJlZ2V4cC5u
ZXcoJ1xcQSgnICsgQkFDS0VORFMuam9pbignKXwoJykgKyAnKVxcWicpCisKK2NsYXNzIE5vZGUK
KyAgZGVmIGxvd2VyKG5hbWUpCisgICAgc2VuZCgibG93ZXIiICsgbmFtZSkKKyAgZW5kCitlbmQK
KworIyBPdmVycmlkZXMgZm9yIGxvd2VyKCkgZm9yIHRob3NlIG5vZGVzIHRoYXQgYXJlIGJhY2tl
bmQtYWdub3N0aWMKKworZGVmIHNhbml0aXplTGFiZWxOYW1lKG5hbWUpCisgICMgU29tZSBwbGF0
Zm9ybXMgZG9uJ3Qgd2FudCB0aGUgbGVhZGluZyAiXyIuIElmIHdlIGV2ZXIgd2FudCB0byBkbyBz
b21ldGhpbmcKKyAgIyBhYm91dCB0aGF0LCBpdCB3b3VsZCBiZSBoZXJlLgorICBuYW1lCitlbmQK
KworY2xhc3MgTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzICIuZ2xvYmwg
I3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxmLm5hbWUpfSIKKyAgICAkYXNtLnB1dHMgIiN7c2FuaXRp
emVMYWJlbE5hbWUoc2VsZi5uYW1lKX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVs
CisgIGRlZiBsb3dlcihuYW1lKQorICAgICRhc20ucHV0cyAiX19vYV8je3NlbGYubmFtZVsxLi4t
MV19OiIKKyAgZW5kCitlbmQKKworY2xhc3MgU2tpcAorICBkZWYgbG93ZXIobmFtZSkKKyAgZW5k
CitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgQGxpc3QuZWFj
aCB7CisgICAgICB8IG5vZGUgfAorICAgICAgbm9kZS5sb3dlcihuYW1lKQorICAgIH0KKyAgZW5k
CitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVf
b2Zmc2V0X2V4dHJhY3Rvci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rv
ci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQor
CisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiskOiA8PCBGaWxlLmRpcm5h
bWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAib2Zmc2V0cyIKK3Jl
cXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgor
CitkZWYgZW1pdE1hZ2ljTnVtYmVyCisgIE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVhY2ggeworICAg
IHwgbnVtYmVyIHwKKyAgICBwdXRzICIje251bWJlcn0sIgorICB9CitlbmQKKworb3JpZ2luYWxB
U1QgPSBwYXJzZShsZXgoJHN0ZGluLnJlYWQpKQorCitlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlv
bnMob3JpZ2luYWxBU1QpIHsKKyAgfCBzZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8Cisg
IG9mZnNldHNMaXN0ID0gYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorICBzaXpl
c0xpc3QgPSBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CisgIAorICBsZW5ndGggPSAoT0ZG
U0VUX01BR0lDX05VTUJFUlMuc2l6ZSArIDEpICogKDEgKyBvZmZzZXRzTGlzdC5zaXplICsgc2l6
ZXNMaXN0LnNpemUpCisgIAorICBwdXRzICJzdGF0aWMgY29uc3QgdW5zaWduZWQgZXh0cmFjdG9y
VGFibGVbI3tsZW5ndGh9XSA9IHsiCisgIGVtaXRNYWdpY051bWJlcgorICBwdXRzICIje2luZGV4
fSwiCisgIG9mZnNldHNMaXN0LmVhY2ggeworICAgIHwgb2Zmc2V0IHwKKyAgICBlbWl0TWFnaWNO
dW1iZXIKKyAgICBwdXRzICJPRkZMSU5FX0FTTV9PRkZTRVRPRigje29mZnNldC5zdHJ1Y3R9LCAj
e29mZnNldC5maWVsZH0pLCIKKyAgfQorICBzaXplc0xpc3QuZWFjaCB7CisgICAgfCBvZmZzZXQg
fAorICAgIGVtaXRNYWdpY051bWJlcgorICAgIHB1dHMgInNpemVvZigje29mZnNldC5zdHJ1Y3R9
KSwiCisgIH0KKyAgcHV0cyAifTsiCit9CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTg4IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitN
QUNST19JTlNUUlVDVElPTlMgPQorICBbCisgICAiYWRkaSIsCisgICAiYW5kaSIsCisgICAibHNo
aWZ0aSIsCisgICAibXVsaSIsCisgICAibmVnaSIsCisgICAibm90aSIsCisgICAib3JpIiwKKyAg
ICJyc2hpZnRpIiwKKyAgICJ1cnNoaWZ0aSIsCisgICAic3ViaSIsCisgICAieG9yaSIsCisgICAi
bG9hZGkiLAorICAgImxvYWRiIiwKKyAgICJsb2FkaCIsCisgICAic3RvcmVpIiwKKyAgICJzdG9y
ZWIiLAorICAgImxvYWRkIiwKKyAgICJtb3ZlZCIsCisgICAic3RvcmVkIiwKKyAgICJhZGRkIiwK
KyAgICJkaXZkIiwKKyAgICJzdWJkIiwKKyAgICJtdWxkIiwKKyAgICJzcXJ0ZCIsCisgICAiY2ky
ZCIsCisgICAiZmlpMmQiLCAjIHVzYWdlOiBmaWkyZCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNh
bnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+LCA8ZnByPgorICAgImZk
MmlpIiwgIyB1c2FnZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBi
aXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4KKyAgICJiZGVxIiwKKyAgICJi
ZG5lcSIsCisgICAiYmRndCIsCisgICAiYmRndGVxIiwKKyAgICJiZGx0IiwKKyAgICJiZGx0ZXEi
LAorICAgImJkZXF1biIsCisgICAiYmRuZXF1biIsCisgICAiYmRndHVuIiwKKyAgICJiZGd0ZXF1
biIsCisgICAiYmRsdHVuIiwKKyAgICJiZGx0ZXF1biIsCisgICAiYnRkMmkiLAorICAgInRkMmki
LAorICAgImJjZDJpIiwKKyAgICJtb3ZkeiIsCisgICAicG9wIiwKKyAgICJwdXNoIiwKKyAgICJt
b3ZlIiwKKyAgICJzeGkycCIsCisgICAienhpMnAiLAorICAgIm5vcCIsCisgICAiYmllcSIsCisg
ICAiYmluZXEiLAorICAgImJpYSIsCisgICAiYmlhZXEiLAorICAgImJpYiIsCisgICAiYmliZXEi
LAorICAgImJpZ3QiLAorICAgImJpZ3RlcSIsCisgICAiYmlsdCIsCisgICAiYmlsdGVxIiwKKyAg
ICJiYmVxIiwKKyAgICJiYm5lcSIsCisgICAiYmJhIiwKKyAgICJiYmFlcSIsCisgICAiYmJiIiwK
KyAgICJiYmJlcSIsCisgICAiYmJndCIsCisgICAiYmJndGVxIiwKKyAgICJiYmx0IiwKKyAgICJi
Ymx0ZXEiLAorICAgImJ0aW8iLAorICAgImJ0aXMiLAorICAgImJ0aXoiLAorICAgImJ0aW56IiwK
KyAgICJidGJvIiwKKyAgICJidGJzIiwKKyAgICJidGJ6IiwKKyAgICJidGJueiIsCisgICAiam1w
IiwKKyAgICJiYWRkaW8iLAorICAgImJhZGRpcyIsCisgICAiYmFkZGl6IiwKKyAgICJiYWRkaW56
IiwKKyAgICJic3ViaW8iLAorICAgImJzdWJpcyIsCisgICAiYnN1Yml6IiwKKyAgICJic3ViaW56
IiwKKyAgICJibXVsaW8iLAorICAgImJtdWxpcyIsCisgICAiYm11bGl6IiwKKyAgICJibXVsaW56
IiwKKyAgICJib3JpbyIsCisgICAiYm9yaXMiLAorICAgImJvcml6IiwKKyAgICJib3JpbnoiLAor
ICAgImJyZWFrIiwKKyAgICJjYWxsIiwKKyAgICJyZXQiLAorICAgImNpZXEiLAorICAgImNpbmVx
IiwKKyAgICJjaWEiLAorICAgImNpYWVxIiwKKyAgICJjaWIiLAorICAgImNpYmVxIiwKKyAgICJj
aWd0IiwKKyAgICJjaWd0ZXEiLAorICAgImNpbHQiLAorICAgImNpbHRlcSIsCisgICAidGlvIiwK
KyAgICJ0aXMiLAorICAgInRpeiIsCisgICAidGlueiIsCisgICAidGJvIiwKKyAgICJ0YnMiLAor
ICAgInRieiIsCisgICAidGJueiIsCisgICAicGVlayIsCisgICAicG9rZSIsCisgICAiYnBlcSIs
CisgICAiYnBuZXEiLAorICAgImJwYSIsCisgICAiYnBhZXEiLAorICAgImJwYiIsCisgICAiYnBi
ZXEiLAorICAgImJwZ3QiLAorICAgImJwZ3RlcSIsCisgICAiYnBsdCIsCisgICAiYnBsdGVxIiwK
KyAgICJhZGRwIiwKKyAgICJhbmRwIiwKKyAgICJvcnAiLAorICAgInN1YnAiLAorICAgInhvcnAi
LAorICAgImxvYWRwIiwKKyAgICJjcGVxIiwKKyAgICJjcG5lcSIsCisgICAiY3BhIiwKKyAgICJj
cGFlcSIsCisgICAiY3BiIiwKKyAgICJjcGJlcSIsCisgICAiY3BndCIsCisgICAiY3BndGVxIiwK
KyAgICJjcGx0IiwKKyAgICJjcGx0ZXEiLAorICAgInN0b3JlcCIsCisgICAiYnRwbyIsCisgICAi
YnRwcyIsCisgICAiYnRweiIsCisgICAiYnRwbnoiLAorICAgImJhZGRwbyIsCisgICAiYmFkZHBz
IiwKKyAgICJiYWRkcHoiLAorICAgImJhZGRwbnoiCisgIF0KKworWDg2X0lOU1RSVUNUSU9OUyA9
CisgIFsKKyAgICJjZHFpIiwKKyAgICJpZGl2aSIKKyAgXQorCitJTlNUUlVDVElPTlMgPSBNQUNS
T19JTlNUUlVDVElPTlMgKyBYODZfSU5TVFJVQ1RJT05TCisKK0lOU1RSVUNUSU9OX1BBVFRFUk4g
PSBSZWdleHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbignKXwoJykgKyAnKSlcXFon
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rv
cl9jb25zdGFudHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5y
YgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgwZmY1ZTc1NSBd
CisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJi
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0
cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIm9mZnNldF9leHRyYWN0
b3JfY29uc3RhbnRzIgorCitPRkZTRVRfTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgw
ZmY1ZTc1NSBdCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG9mZnNldHNM
aXN0KGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgc2l6ZXNMaXN0KGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFJldHVybnMgYSBsaXN0
IG9mIG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhlIEFTVC4gICAgICAgICAgICAgICAgICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBvZmZzZXRzTGlzdChhc3Qp
CisgIGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKK2VuZAorCitkZWYgc2l6ZXNM
aXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTaXplb2YpLnVuaXEuc29ydAorZW5kCisKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgo
YXN0LCBmaWxlKSAtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgIFtvZmZzZXRz
LCBpbmRleF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIFBhcnNlcyB0aGUgb2Zmc2V0cyBmcm9tIGEgZmlsZSBhbmQg
cmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgdGhlICMKKyMgaW5kZXggb2YgdGhlIGNvbmZp
Z3VyYXRpb24gdGhhdCBpcyB2YWxpZCBpbiB0aGlzIGJ1aWxkIHRhcmdldC4gICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIG9mZnNldHNBbmRDb25maWd1cmF0
aW9uSW5kZXgoZmlsZSkKKyAgaW5kZXggPSBuaWwKKyAgb2Zmc2V0cyA9IFtdCisgIGVuZGlhbm5l
c3NNYXJrZXJCeXRlcyA9IG5pbAorICAKKyAgZGVmIHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQor
ICAgIGJ5dGVzID0gW10KKyAgICA0LnRpbWVzIHsKKyAgICAgIGJ5dGVzIDw8IGlucC5nZXRieXRl
CisgICAgfQorICAgIAorICAgIGlmIGVuZGlhbm5lc3MgPT0gOmxpdHRsZQorICAgICAgIyBMaXR0
bGUgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMCB8CisgICAgICAgYnl0ZXNbMV0gPDwgOCB8
CisgICAgICAgYnl0ZXNbMl0gPDwgMTYgfAorICAgICAgIGJ5dGVzWzNdIDw8IDI0KQorICAgIGVs
c2UKKyAgICAgICMgQmlnIGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDI0IHwKKyAgICAgICBi
eXRlc1sxXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbMl0gPDwgOCB8CisgICAgICAgYnl0ZXNbM10g
PDwgMCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBbOmxpdHRsZSwgOmJpZ10uZWFjaCB7CisgICAg
fCBlbmRpYW5uZXNzIHwKKyAgICBtYWdpY0J5dGVzID0gW10KKyAgICBNQUdJQ19OVU1CRVJTLmVh
Y2ggeworICAgICAgfCBudW1iZXIgfAorICAgICAgY3VycmVudEJ5dGVzID0gW10KKyAgICAgIDQu
dGltZXMgeworICAgICAgICBjdXJyZW50Qnl0ZXMgPDwgKG51bWJlciAmIDB4ZmYpCisgICAgICAg
IG51bWJlciA+Pj0gOAorICAgICAgfQorICAgICAgaWYgZW5kaWFubmVzcyA9PSA6YmlnCisgICAg
ICAgIGN1cnJlbnRCeXRlcy5yZXZlcnNlIQorICAgICAgZW5kCisgICAgICBtYWdpY0J5dGVzICs9
IGN1cnJlbnRCeXRlcworICAgIH0KKyAgICAKKyAgICBGaWxlLm9wZW4oZmlsZSwgInIiKSB7Cisg
ICAgICB8IGlucCB8CisgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgbG9vcCB7CisgICAg
ICAgIGJ5dGUgPSBpbnAuZ2V0Ynl0ZQorICAgICAgICBicmVhayB1bmxlc3MgYnl0ZQorICAgICAg
ICBpZiBieXRlID09IG1hZ2ljQnl0ZXNbd2hlcmVJbk1hcmtlcl0KKyAgICAgICAgICB3aGVyZUlu
TWFya2VyICs9IDEKKyAgICAgICAgICBpZiB3aGVyZUluTWFya2VyID09IG1hZ2ljQnl0ZXMuc2l6
ZQorICAgICAgICAgICAgIyBXZSBoYXZlIGEgbWF0Y2ghIElmIHdlIGhhdmUgbm90IHlldCByZWFk
IHRoZSBlbmRpYW5uZXNzIG1hcmtlciBhbmQgaW5kZXgsCisgICAgICAgICAgICAjIHRoZW4gcmVh
ZCB0aG9zZSBub3c7IG90aGVyd2lzZSByZWFkIGFuIG9mZnNldC4KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgbm90IGluZGV4CisgICAgICAgICAgICAgIGluZGV4ID0gcmVhZEludChlbmRp
YW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIG9mZnNldHMgPDwg
cmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxz
ZQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICAgIGVuZAorICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBicmVhayBpZiBpbmRleAorICB9CisgIAorICByYWlzZSB1bmxlc3MgaW5k
ZXgKKyAgCisgIFtvZmZzZXRzLCBpbmRleF0KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkgLT4gW29mZnNl
dHMsIHNpemVzXSAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQnVpbGRzIGEg
bWFwcGluZyBiZXR3ZWVuIFN0cnVjdE9mZnNldCBub2RlcyBhbmQgdGhlaXIgdmFsdWVzLiAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGJ1aWxkT2Zmc2V0
c01hcChhc3QsIG9mZnNldHNMaXN0KQorICBvZmZzZXRzTWFwID0ge30KKyAgc2l6ZXNNYXAgPSB7
fQorICBhc3RPZmZzZXRzTGlzdCA9IG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0U2l6ZXNMaXN0ID0g
c2l6ZXNMaXN0KGFzdCkKKyAgcmFpc2UgdW5sZXNzIGFzdE9mZnNldHNMaXN0LnNpemUgKyBhc3RT
aXplc0xpc3Quc2l6ZSA9PSBvZmZzZXRzTGlzdC5zaXplCisgIG9mZnNldHNMaXN0KGFzdCkuZWFj
aF93aXRoX2luZGV4IHsKKyAgICB8IHN0cnVjdE9mZnNldCwgaW5kZXggfAorICAgIG9mZnNldHNN
YXBbc3RydWN0T2Zmc2V0XSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgc2l6ZXNMaXN0KGFz
dCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHNpemVvZiwgaW5kZXggfAorICAgIHNpemVzTWFw
W3NpemVvZl0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIFtvZmZzZXRzTWFwLCBzaXplc01h
cF0KK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIu
cmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2Vy
LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFy
c2VyLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiaW5zdHJ1Y3Rpb25z
IgorcmVxdWlyZSAicmVnaXN0ZXJzIgorCitjbGFzcyBUb2tlbgorICBhdHRyX3JlYWRlciA6Y29k
ZU9yaWdpbiwgOnN0cmluZworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RyaW5n
KQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICAgIEBzdHJpbmcgPSBzdHJpbmcKKyAg
ZW5kCisgIAorICBkZWYgPT0ob3RoZXIpCisgICAgaWYgb3RoZXIuaXNfYT8gVG9rZW4KKyAgICAg
IEBzdHJpbmcgPT0gb3RoZXIuc3RyaW5nCisgICAgZWxzZQorICAgICAgQHN0cmluZyA9PSBvdGhl
cgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiA9fihvdGhlcikKKyAgICBAc3RyaW5nID1+IG90
aGVyCisgIGVuZAorICAKKyAgZGVmIHRvX3MKKyAgICAiI3tAc3RyaW5nLmluc3BlY3R9IGF0IGxp
bmUgI3tjb2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkK
KyAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9
IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfTogI3tjb21tZW50
WzBdfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgVGhlIGxleGVyLiBUYWtlcyBhIHN0cmluZyBhbmQgcmV0dXJucyBhbiBhcnJheSBv
ZiB0b2tlbnMuICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KworZGVmIGxleChzdHIpCisgIHJlc3VsdCA9IFtdCisgIGxpbmVOdW1iZXIgPSAxCisgIHdoaWxl
IG5vdCBzdHIuZW1wdHk/CisgICAgY2FzZSBzdHIKKyAgICB3aGVuIC9cQVwjKFteXG5dKikvCisg
ICAgICAjIGNvbW1lbnQsIGlnbm9yZQorICAgIHdoZW4gL1xBXG4vCisgICAgICByZXN1bHQgPDwg
VG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAgbGluZU51bWJlciArPSAxCisgICAgd2hl
biAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXco
bGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFcLihbYS16QS1aMC05X10qKS8KKyAgICAgIHJl
c3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFfKFthLXpBLVow
LTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3
aGVuIC9cQShbIFx0XSspLworICAgICAgIyB3aGl0ZXNwYWNlLCBpZ25vcmUKKyAgICB3aGVuIC9c
QTB4KFswLTlhLWZBLUZdKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIs
ICQmLmhleC50b19zKQorICAgIHdoZW4gL1xBMChbMC03XSspLworICAgICAgcmVzdWx0IDw8IFRv
a2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5vY3QudG9fcykKKyAgICB3aGVuIC9cQShbMC05XSspLwor
ICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQTo6
LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9c
QVs6LFwoXClcW1xdPVwrXC0qXS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJl
ciwgJCYpCisgICAgZWxzZQorICAgICAgcmFpc2UgIkxleGVyIGVycm9yIGF0IGxpbmUgbnVtYmVy
ICN7bGluZU51bWJlcn0sIHVuZXhwZWN0ZWQgc2VxdWVuY2UgI3tzdHJbMC4uMjBdLmluc3BlY3R9
IgorICAgIGVuZAorICAgIHN0ciA9ICR+LnBvc3RfbWF0Y2gKKyAgZW5kCisgIHJlc3VsdAorZW5k
CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRva2VuIGlkZW50aWZpY2F0
aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBpc1JlZ2lzdGVyKHRva2VuKQor
ICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOCitlbmQKKworZGVmIGlzSW5zdHJ1Y3Rpb24odG9r
ZW4pCisgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNLZXl3b3Jk
KHRva2VuKQorICB0b2tlbiA9fiAvXEEoKHRydWUpfChmYWxzZSl8KGlmKXwodGhlbil8KGVsc2Up
fChlbHNpZil8KGVuZCl8KGFuZCl8KG9yKXwobm90KXwobWFjcm8pfChjb25zdCl8KHNpemVvZil8
KGVycm9yKSlcWi8gb3IKKyAgICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOIG9yCisgICAgdG9r
ZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0lkZW50aWZpZXIodG9rZW4p
CisgIHRva2VuID1+IC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopXFovIGFuZCBub3QgaXNLZXl3
b3JkKHRva2VuKQorZW5kCisKK2RlZiBpc0xhYmVsKHRva2VuKQorICB0b2tlbiA9fiAvXEFfKFth
LXpBLVowLTlfXSopXFovCitlbmQKKworZGVmIGlzTG9jYWxMYWJlbCh0b2tlbikKKyAgdG9rZW4g
PX4gL1xBXC4oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNWYXJpYWJsZSh0b2tlbikK
KyAgaXNJZGVudGlmaWVyKHRva2VuKSBvciBpc1JlZ2lzdGVyKHRva2VuKQorZW5kCisKK2RlZiBp
c0ludGVnZXIodG9rZW4pCisgIHRva2VuID1+IC9cQVswLTldLworZW5kCisKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBwYXJzZXIuIFRha2VzIGFuIGFycmF5IG9mIHRv
a2VucyBhbmQgcmV0dXJucyBhbiBBU1QuIE1ldGhvZHMgICAgICMKKyMgb3RoZXIgdGhhbiBwYXJz
ZSh0b2tlbnMpIGFyZSBub3QgZm9yIHB1YmxpYyBjb25zdW1wdGlvbi4gICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgUGFyc2VyCisgIGRlZiBp
bml0aWFsaXplKHRva2VucykKKyAgICBAdG9rZW5zID0gdG9rZW5zCisgICAgQGlkeCA9IDAKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBpZiBAdG9rZW5zW0BpZHhd
CisgICAgICBAdG9rZW5zW0BpZHhdLnBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgZWxzZQorICAg
ICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBv
ZiBmaWxlIgorICAgICAgZWxzZQorICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9m
IGZpbGU6ICN7Y29tbWVudFswXX0iCisgICAgICBlbmQKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgY29uc3VtZShyZWdleHApCisgICAgaWYgcmVnZXhwCisgICAgICBwYXJzZUVycm9yIHVubGVz
cyBAdG9rZW5zW0BpZHhdID1+IHJlZ2V4cAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIEBpZHggPT0gQHRva2Vucy5sZW5ndGgKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgZW5k
CisgIAorICBkZWYgc2tpcE5ld0xpbmUKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJcbiIK
KyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0
ZUF0b20KKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJub3QiCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIHBhcnNlUHJlZGljYXRlQXRvbQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisg
ICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByZXN1bHQgPSBwYXJzZVBy
ZWRpY2F0ZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAg
ICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAi
dHJ1ZSIKKyAgICAgIHJlc3VsdCA9IFRydWUuaW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZmFsc2UiCisgICAgICByZXN1
bHQgPSBGYWxzZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBl
bHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gU2V0dGluZy5m
b3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisg
ICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBbmQKKyAgICByZXN1bHQg
PSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJhbmQiCisg
ICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9
IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQXRvbQor
ICAgICAgcmVzdWx0ID0gQW5kLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVu
ZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZQorICAgICMgc29t
ZSBleGFtcGxlcyBvZiBwcmVjZWRlbmNlOgorICAgICMgbm90IGEgYW5kIGIgLT4gKG5vdCBhKSBh
bmQgYgorICAgICMgYSBhbmQgYiBvciBjIC0+IChhIGFuZCBiKSBvciBjCisgICAgIyBhIG9yIGIg
YW5kIGMgLT4gYSBvciAoYiBhbmQgYykKKyAgICAKKyAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0
ZUFuZAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIm9yIgorICAgICAgY29kZU9yaWdpbiA9
IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3
TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAgICAgcmVzdWx0ID0gT3Iu
bmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVu
ZAorICAKKyAgZGVmIHBhcnNlVmFyaWFibGUKKyAgICBpZiBpc1JlZ2lzdGVyKEB0b2tlbnNbQGlk
eF0pCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID1+IEZQUl9QQVRURVJOCisgICAgICAgIHJlc3Vs
dCA9IEZQUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vu
c1tAaWR4XS5zdHJpbmcpCisgICAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IFJlZ2lzdGVySUQu
Zm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQor
ICAgICAgZW5kCisgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICBy
ZXN1bHQgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vu
c1tAaWR4XS5zdHJpbmcpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICAg
IEBpZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUFkZHJlc3Mob2Zm
c2V0KQorICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgY29k
ZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIAorICAgICMgVGhyZWUgcG9z
c2liaWxpdGllczoKKyAgICAjIFtdICAgICAgIC0+IEFic29sdXRlQWRkcmVzcworICAgICMgW2Fd
ICAgICAgLT4gQWRkcmVzcworICAgICMgW2EsYl0gICAgLT4gQmFzZUluZGV4IHdpdGggc2NhbGUg
PSAxCisgICAgIyBbYSxiLGNdICAtPiBCYXNlSW5kZXgKKyAgICAKKyAgICBAaWR4ICs9IDEKKyAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXR1cm4g
QWJzb2x1dGVBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXQpCisgICAgZW5kCisgICAgYSA9
IHBhcnNlVmFyaWFibGUKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgcmVzdWx0
ID0gQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgYSwgb2Zmc2V0KQorICAgIGVsc2UKKyAgICAgIHBh
cnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIGIgPSBwYXJzZVZhcmlhYmxlCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAg
ICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIDEsIG9mZnNldCkK
KyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAi
LCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIFsiMSIsICIy
IiwgIjQiLCAiOCJdLm1lbWJlcj8gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgYyA9IEB0
b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAgIHJlc3VsdCA9IEJhc2VJ
bmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgYywgb2Zmc2V0KQorICAgICAgZW5kCisgICAgZW5k
CisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQ29sb25D
b2xvbgorICAgIHNraXBOZXdMaW5lCisgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbgorICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhd
CisgICAgbmFtZXMgPSBbQHRva2Vuc1tAaWR4XS5zdHJpbmddCisgICAgQGlkeCArPSAxCisgICAg
d2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiOjoiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICBuYW1lcyA8PCBA
dG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgICAgcmFpc2Ug
aWYgbmFtZXMuZW1wdHk/CisgICAgW2NvZGVPcmlnaW4sIG5hbWVzXQorICBlbmQKKyAgCisgIGRl
ZiBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgc2tpcE5ld0xpbmUKKyAgICBpZiBAdG9rZW5zW0Bp
ZHhdID09ICItIgorICAgICAgQGlkeCArPSAxCisgICAgICBOZWdJbW1lZGlhdGUubmV3KEB0b2tl
bnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHBhcnNlRXhwcmVzc2lvbkF0b20pCisgICAgZWxzaWYg
QHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0ID0gcGFy
c2VFeHByZXNzaW9uCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIp
IgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0ludGVnZXIgQHRv
a2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kpCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICBj
b2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAgaWYgbmFtZXMuc2l6ZSA+
IDEKKyAgICAgICAgU3RydWN0T2Zmc2V0LmZvckZpZWxkKGNvZGVPcmlnaW4sIG5hbWVzWzAuLi0y
XS5qb2luKCc6OicpLCBuYW1lc1stMV0pCisgICAgICBlbHNlCisgICAgICAgIFZhcmlhYmxlLmZv
ck5hbWUoY29kZU9yaWdpbiwgbmFtZXNbMF0pCisgICAgICBlbmQKKyAgICBlbHNpZiBpc1JlZ2lz
dGVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHBhcnNlVmFyaWFibGUKKyAgICBlbHNpZiBAdG9rZW5z
W0BpZHhdID09ICJzaXplb2YiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIGNvZGVPcmlnaW4sIG5h
bWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBTaXplb2YuZm9yTmFtZShjb2RlT3JpZ2luLCBu
YW1lcy5qb2luKCc6OicpKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uTXVsCisgICAgc2tpcE5ld0xpbmUKKyAgICBy
ZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAi
KiIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICByZXN1bHQgPSBNdWxJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3Jp
Z2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbkF0b20pCisgICAgICBlbHNlCisgICAgICAgIHJh
aXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgY291
bGRCZUV4cHJlc3Npb24KKyAgICBAdG9rZW5zW0BpZHhdID09ICItIiBvciBAdG9rZW5zW0BpZHhd
ID09ICJzaXplb2YiIG9yIGlzSW50ZWdlcihAdG9rZW5zW0BpZHhdKSBvciBpc1ZhcmlhYmxlKEB0
b2tlbnNbQGlkeF0pCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbgorICAgIHNraXBO
ZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uTXVsCisgICAgd2hpbGUgQHRva2Vu
c1tAaWR4XSA9PSAiKyIgb3IgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIGlmIEB0b2tlbnNb
QGlkeF0gPT0gIisiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBBZGRJbW1l
ZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhw
cmVzc2lvbk11bCkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICByZXN1bHQgPSBTdWJJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHgg
LSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkKKyAgICAgIGVsc2UK
KyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAg
CisgIGRlZiBwYXJzZU9wZXJhbmQoY29tbWVudCkKKyAgICBpZiBjb3VsZEJlRXhwcmVzc2lvbgor
ICAgICAgZXhwciA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
WyIKKyAgICAgICAgcGFyc2VBZGRyZXNzKGV4cHIpCisgICAgICBlbHNlCisgICAgICAgIGV4cHIK
KyAgICAgIGVuZAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICBwYXJzZUFk
ZHJlc3MoSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIDApKQorICAgIGVs
c2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTGFiZWxSZWZlcmVuY2Uu
bmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcmVzdWx0CisgICAgZWxzaWYgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJl
c3VsdCA9IExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwg
TG9jYWxMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4
XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAg
ICBwYXJzZUVycm9yKGNvbW1lbnQpCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlTWFj
cm9WYXJpYWJsZXMKKyAgICBza2lwTmV3TGluZQorICAgIGNvbnN1bWUoL1xBXChcWi8pCisgICAg
dmFyaWFibGVzID0gW10KKyAgICBsb29wIHsKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICBpZiBA
dG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgYnJlYWsKKyAg
ICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICB2YXJpYWJsZXMg
PDwgVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlk
eF0uc3RyaW5nKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
ICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvcgorICAgICAgICBlbmQK
KyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvcgorICAgICAgZW5kCisgICAgfQorICAgIHZh
cmlhYmxlcworICBlbmQKKyAgCisgIGRlZiBwYXJzZVNlcXVlbmNlKGZpbmFsLCBjb21tZW50KQor
ICAgIGZpcnN0Q29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIGxpc3Qg
PSBbXQorICAgIGxvb3AgeworICAgICAgaWYgKEBpZHggPT0gQHRva2Vucy5sZW5ndGggYW5kIG5v
dCBmaW5hbCkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICBi
cmVhaworICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICMgaWdub3Jl
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiY29uc3Qi
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc1ZhcmlhYmxl
IEB0b2tlbnNbQGlkeF0KKyAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI9IgorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFsdWUgPSBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lk
ZSBvZiBjb25zdCAje3ZhcmlhYmxlLm5hbWV9IikKKyAgICAgICAgbGlzdCA8PCBDb25zdERlY2wu
bmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgICAgZWxz
aWYgQHRva2Vuc1tAaWR4XSA9PSAiZXJyb3IiCisgICAgICAgIGxpc3QgPDwgRXJyb3IubmV3KEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbikKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICJpZiIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAg
ICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4p
fChcbikpXFovKQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBpZlRoZW5FbHNlID0gSWZU
aGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGljYXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxz
ZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5k
dW1wfVwiIikpCisgICAgICAgIGxpc3QgPDwgaWZUaGVuRWxzZQorICAgICAgICB3aGlsZSBAdG9r
ZW5zW0BpZHhdID09ICJlbHNpZiIKKyAgICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgc2tpcE5ld0xpbmUK
KyAgICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgICAgIGNvbnN1bWUo
L1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIGVs
c2VDYXNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGljYXRlLCBwYXJzZVNlcXVl
bmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAj
e3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IGVs
c2VDYXNlCisgICAgICAgICAgaWZUaGVuRWxzZSA9IGVsc2VDYXNlCisgICAgICAgIGVuZAorICAg
ICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJlbHNlIgorICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndo
aWxlIGluc2lkZSBvZiBlbHNlIGNhc2UgZm9yIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpCisg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yIHVu
bGVzcyBAdG9rZW5zW0BpZHhdID09ICJlbmQiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
IGVuZAorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAgICAgIGNvZGVP
cmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIHNraXBOZXdMaW5lCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllcihA
dG9rZW5zW0BpZHhdKQorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAg
ICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIG1h
Y3JvICN7bmFtZX0iKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgbGlzdCA8PCBNYWNyby5u
ZXcoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgICAgZWxzaWYgaXNJbnN0
cnVjdGlvbiBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6
ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICAgICMgWmVy
byBvcGVyYW5kIGluc3RydWN0aW9uLCBhbmQgaXQncyB0aGUgbGFzdCBvbmUuCisgICAgICAgICAg
bGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAg
YnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgIyBa
ZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAjIEl0J3MgZGVmaW5pdGVseSBhbiBpbnN0cnVjdGlvbiwgYW5kIGl0IGhh
cyBhdCBsZWFzdCBvbmUgb3BlcmFuZC4KKyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAg
ICAgZW5kT2ZTZXF1ZW5jZSA9IGZhbHNlCisgICAgICAgICAgbG9vcCB7CisgICAgICAgICAgICBv
cGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBpbnN0cnVjdGlvbiAje25h
bWV9IikKKyAgICAgICAgICAgIGlmIChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXpl
KSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgICAgICAgICMg
VGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24gYW5kIG9mIHRoZSBzZXF1ZW5jZS4KKyAgICAgICAg
ICAgICAgZW5kT2ZTZXF1ZW5jZSA9IHRydWUKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAg
ICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAgICMgSGFzIGFub3Ro
ZXIgb3BlcmFuZC4KKyAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0
cnVjdGlvbi4KKyAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIGEgY29t
bWEsIG5ld2xpbmUsIG9yICN7ZmluYWx9IGFmdGVyICN7b3BlcmFuZHMubGFzdC5kdW1wfSIpCisg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICB9CisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgICAgaWYgZW5kT2ZTZXF1
ZW5jZQorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAg
ICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0g
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0
cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIK
KyAgICAgICAgICAjIE1hY3JvIGludm9jYXRpb24uCisgICAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgaWYg
QHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAg
ICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAgICAgICAgICAjIEl0
J3MgYSBtYWNybyBsYW1iZGEhCisgICAgICAgICAgICAgICAgY29kZU9yaWdpbklubmVyID0gQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgICAgICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICAgICAgICAg
IGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBhbm9ueW1v
dXMgbWFjcm8gcGFzc2VkIGFzIGFyZ3VtZW50IHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IE1hY3JvLm5ldyhjb2RlT3Jp
Z2luSW5uZXIsIG5pbCwgdmFyaWFibGVzLCBib2R5KQorICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgbWFj
cm8gY2FsbCB0byAje25hbWV9IikKKyAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgIHNr
aXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IgIlVuZXhwZWN0ZWQg
I3tAdG9rZW5zW0BpZHhdLnN0cmluZy5pbnNwZWN0fSB3aGlsZSBwYXJzaW5nIGludm9jYXRpb24g
b2YgbWFjcm8gI3tuYW1lfSIKKyAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICB9CisgICAg
ICAgICAgZW5kCisgICAgICAgICAgbGlzdCA8PCBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIG5h
bWUsIG9wZXJhbmRzKQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0
ZWQgXCIoXCIgYWZ0ZXIgI3tuYW1lfSIKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBpc0xhYmVs
IEB0b2tlbnNbQGlkeF0gb3IgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29k
ZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vu
c1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIEB0b2tlbnNbQGlkeF0gPT0gIjoiCisgICAgICAgICMgSXQncyBhIGxhYmVsLgorICAgICAg
ICBpZiBpc0xhYmVsIG5hbWUKKyAgICAgICAgICBsaXN0IDw8IExhYmVsLmZvck5hbWUoY29kZU9y
aWdpbiwgbmFtZSkKKyAgICAgICAgZWxzZQorICAgICAgICAgIGxpc3QgPDwgTG9jYWxMYWJlbC5m
b3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVuZAorICAgICAgICBAaWR4ICs9IDEK
KyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0aW5nIHRlcm1pbmFsICN7Zmlu
YWx9ICN7Y29tbWVudH0iCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGZpcnN0
Q29kZU9yaWdpbiwgbGlzdCkKKyAgZW5kCitlbmQKKworZGVmIHBhcnNlKHRva2VucykKKyAgcGFy
c2VyID0gUGFyc2VyLm5ldyh0b2tlbnMpCisgIHBhcnNlci5wYXJzZVNlcXVlbmNlKG5pbCwgIiIp
CitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJz
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lz
dGVycy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3JlZ2lzdGVycy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworR1BSUyA9CisgIFsKKyAgICJ0MCIsCisgICAidDEi
LAorICAgInQyIiwKKyAgICJ0MyIsCisgICAidDQiLAorICAgImNmciIsCisgICAiYTAiLAorICAg
ImExIiwKKyAgICJyMCIsCisgICAicjEiLAorICAgInNwIgorICBdCisKK0ZQUlMgPQorICBbCisg
ICAiZnQwIiwKKyAgICJmdDEiLAorICAgImZ0MiIsCisgICAiZnQzIiwKKyAgICJmdDQiLAorICAg
ImZ0NSIsCisgICAiZmEwIiwKKyAgICJmYTEiLAorICAgImZhMiIsCisgICAiZmEzIiwKKyAgICJm
ciIKKyAgXQorCitSRUdJU1RFUlMgPSBHUFJTICsgRlBSUworCitHUFJfUEFUVEVSTiA9IFJlZ2V4
cC5uZXcoJ1xcQSgoJyArIEdQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQorRlBSX1BBVFRFUk4g
PSBSZWdleHAubmV3KCdcXEEoKCcgKyBGUFJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKKworUkVH
SVNURVJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIFJFR0lTVEVSUy5qb2luKCcpfCgn
KSArICcpKVxcWicpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0
aW5ncy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9z
ZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyMSBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiYmFj
a2VuZHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhh
c3QpIC0+IHNldHRpbmdzQ29tYmlhdGlvbnMgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBDb21wdXRlcyBhbiBhcnJheSBvZiBzZXR0aW5ncyBtYXBzLCB3aGVyZSBhIHNldHRpbmdz
IG1hcCBjb25zdGl0dXRlcyAjCisjIGEgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFzc2VtYmx5IGNv
ZGUgYmVpbmcgZ2VuZXJhdGVkLiBUaGUgbWFwICAgICAgICMKKyMgY29udGFpbnMga2V5IHZhbHVl
IHBhaXJzIHdoZXJlIGtleXMgYXJlIHNldHRpbmdzIG5hbWVzIChzdHJpbmdzKSBhbmQgIworIyB0
aGUgdmFsdWVzIGFyZSBib29sZWFucyAodHJ1ZSBmb3IgZW5hYmxlZCwgZmFsc2UgZm9yIGRpc2Fi
bGVkKS4gICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgY29t
cHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBb
XQorICAKKyAgZGVmIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbWFw
U29GYXIsIHJlbWFpbmluZykKKyAgICBpZiByZW1haW5pbmcuZW1wdHk/CisgICAgICBzZXR0aW5n
c0NvbWJpbmF0aW9ucyA8PCBtYXBTb0ZhcgorICAgICAgcmV0dXJuCisgICAgZW5kCisgICAgCisg
ICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSB0cnVl
CisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJl
bWFpbmluZ1sxLi4tMV0pCisgICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3
TWFwW3JlbWFpbmluZ1swXV0gPSBmYWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5n
c0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICBlbmQKKyAgCisgIHNl
dHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywge30sIChhc3QuZmlsdGVyKFNl
dHRpbmcpLnVuaXEuY29sbGVjdHt8dnwgdi5uYW1lfSArIFsiWDg2IiwgIkFSTXY3Il0pLnVuaXEp
CisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucworZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgeyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywg
bG93TGV2ZWxBU1QsIGJhY2tlbmQgfCAuLi4gfSAgICAgICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIERldGVybWluZXMgaWYgdGhlIHNldHRpbmdzIGNvbWJpbmF0aW9uIGlzIHZhbGlk
LCBhbmQgaWYgc28sIGNhbGxzICAgICMKKyMgdGhlIGJsb2NrIHdpdGggdGhlIGluZm9ybWF0aW9u
IHlvdSBuZWVkIHRvIGdlbmVyYXRlIGNvZGUuICAgICAgICAgICAgIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFz
dCkKKyAgIyBDaGVjayB3aGljaCBhcmNoaXRlY3R1cmVzIHRoaXMgY29tYmluYXRvciBjbGFpbXMg
dG8gc3VwcG9ydC4KKyAgbnVtQ2xhaW1lZEJhY2tlbmRzID0gMAorICBzZWxlY3RlZEJhY2tlbmQg
PSBuaWwKKyAgQkFDS0VORFMuZWFjaCB7CisgICAgfCBiYWNrZW5kIHwKKyAgICBpc1N1cHBvcnRl
ZCA9IGNvbmNyZXRlU2V0dGluZ3NbYmFja2VuZF0KKyAgICByYWlzZSB1bmxlc3MgaXNTdXBwb3J0
ZWQgIT0gbmlsCisgICAgbnVtQ2xhaW1lZEJhY2tlbmRzICs9IGlmIGlzU3VwcG9ydGVkIHRoZW4g
MSBlbHNlIDAgZW5kCisgICAgaWYgaXNTdXBwb3J0ZWQKKyAgICAgIHNlbGVjdGVkQmFja2VuZCA9
IGJhY2tlbmQKKyAgICBlbmQKKyAgfQorICAKKyAgcmV0dXJuIGlmIG51bUNsYWltZWRCYWNrZW5k
cyA+IDEKKyAgCisgICMgUmVzb2x2ZSB0aGUgQVNUIGRvd24gdG8gYSBsb3ctbGV2ZWwgZm9ybSAo
bm8gbWFjcm9zIG9yIGNvbmRpdGlvbmFscykuCisgIGxvd0xldmVsQVNUID0gYXN0LnJlc29sdmVT
ZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzKQorICAKKyAgeWllbGQgY29uY3JldGVTZXR0aW5ncywg
bG93TGV2ZWxBU1QsIHNlbGVjdGVkQmFja2VuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywg
YXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCBzZXR0aW5nc0Nv
bWJpbmF0aW9ucykgeyAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBi
YWNrZW5kLCBpbmRleCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIEV4ZWN1dGVzIHRoZSBnaXZlbiBibG9jayBmb3IgZWFjaCB2YWxpZCBzZXR0aW5ncyBjb21i
aW5hdGlvbiBpbiB0aGUgICMKKyMgc2V0dGluZ3MgbWFwLiBUaGUgYXN0IHBhc3NlZCBpbnRvIHRo
ZSBibG9jayBpcyByZXNvbHZlZCAgICAgICAgICAgICAgIworIyAoYXN0LnJlc29sdmUpIGFnYWlu
c3QgdGhlIHNldHRpbmdzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgVGhlIGZpcnN0IGZvcm0gd2lsbCBjYWxsIGNvbXB1dGVTZXR0aW5nc0Nv
bWJpbmF0aW9ucyhhc3QpIGZvciB5b3UuICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKworZGVmIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCAqb3B0aW9u
YWxTZXR0aW5nc0NvbWJpbmF0aW9ucykKKyAgcmFpc2UgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJp
bmF0aW9ucy5zaXplID4gMQorICAKKyAgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucy5l
bXB0eT8KKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0
aW9ucyhhc3QpCisgIGVsc2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IG9wdGlvbmFsU2V0
dGluZ3NDb21iaWF0aW9uc1swXQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zLmVh
Y2hfd2l0aF9pbmRleCB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBpbmRleCB8CisgICAgZm9y
U2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7CisgICAgICB8IGNvbmNyZXRlU2V0dGlu
Z3NfLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdz
LCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICB9CisgIH0KK2VuZAorCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0
aW5ncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgUmV0dXJucyB0aGUgQysrIGNvZGUgdXNlZCB0byB0ZXN0IGlmIHdlIGFyZSBpbiBhIGNv
bmZpZ3VyYXRpb24gdGhhdCAgIworIyBjb3JyZXNwb25kcyB0byB0aGUgZ2l2ZW4gY29uY3JldGUg
c2V0dGluZ3MuICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworCitkZWYgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisg
ICIjaWYgIiArIGNvbmNyZXRlU2V0dGluZ3MudG9fYS5jb2xsZWN0eworICAgIHwgcGFpciB8Cisg
ICAgKGlmIHBhaXJbMV0KKyAgICAgICAiIgorICAgICBlbHNlCisgICAgICAgIiEiCisgICAgIGVu
ZCkgKyAiT0ZGTElORV9BU01fIiArIHBhaXJbMF0KKyAgfS5qb2luKCIgJiYgIikKK2VuZAorCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBpc0FTVEVycm9uZW91cyhhc3QpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgVGVzdHMgdG8gc2VlIGlmIHRoZSBBU1QgY2xhaW1zIHRoYXQgdGhlcmUgaXMg
YW4gZXJyb3IgLSBpLmUuIGlmIHRoZSAgIworIyB1c2VyJ3MgY29kZSwgYWZ0ZXIgc2V0dGluZ3Mg
cmVzb2x1dGlvbiwgaGFzIEVycm9yIG5vZGVzLiAgICAgICAgICAgICAjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICBub3QgYXN0
LmZpbHRlcihFcnJvcikuZW1wdHk/CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEVtaXRzIGEgY2hlY2sg
dGhhdCBhc3NlcnRzIHRoYXQgd2UncmUgdXNpbmcgdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24uICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBhc3NlcnRDb25maWd1cmF0
aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgIHB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0
dGluZ3MpCisgIHB1dHMgIiNlbHNlIgorICBwdXRzICIjZXJyb3IgXCJDb25maWd1cmF0aW9uIG1p
c21hdGNoLlwiIgorICBwdXRzICIjZW5kaWYiCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywg
YXN0LCBiYWNrZW5kKSB7ICAgICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBh
c3QsIGJhY2tlbmQgfCAuLi4gfSAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgRW1pdHMgYWxsIHJlbGV2YW50IGd1YXJkcyB0byBzZWUgaWYgdGhlIGNvbmZpZ3Vy
YXRpb24gaG9sZHMgYW5kICAgICAgIworIyBjYWxscyB0aGUgYmxvY2sgaWYgdGhlIGNvbmZpZ3Vy
YXRpb24gaXMgbm90IGVycm9uZW91cy4gICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworCitkZWYgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVT
ZXR0aW5ncywgYXN0LCBiYWNrZW5kKQorICBwdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNl
dHRpbmdzKQorICAKKyAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAgIHB1dHMgIiNlcnJvciBc
IkludmFsaWQgY29uZmlndXJhdGlvbi5cIiIKKyAgZWxzaWYgbm90IFdPUktJTkdfQkFDS0VORFMu
aW5jbHVkZT8gYmFja2VuZAorICAgIHB1dHMgIiNlcnJvciBcIlRoaXMgYmFja2VuZCBpcyBub3Qg
c3VwcG9ydGVkIHlldC5cIiIKKyAgZWxzZQorICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGFz
dCwgYmFja2VuZAorICBlbmQKKyAgCisgIHB1dHMgIiNlbmRpZiIKK2VuZAorCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0
KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRl
U2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAgICAgICAgICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBFbWl0cyBndWFyZCBjb2RlcyBmb3IgYWxsIHZhbGlkIGNvbmZp
Z3VyYXRpb25zLCBhbmQgY2FsbHMgdGhlIGJsb2NrICAjCisjIGZvciB0aG9zZSBjb25maWd1cmF0
aW9ucyB0aGF0IGFyZSB2YWxpZCBhbmQgbm90IGVycm9uZW91cy4gICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBlbWl0Q29kZUluQWxsQ29uZmlndXJh
dGlvbnMoYXN0KQorICBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworICAg
IHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICBw
dXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAgIHlpZWxkIGNvbmNyZXRl
U2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgIHB1dHMgIiNlbmRpZiIK
KyAgfQorZW5kCisKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90
cmFuc2Zvcm0ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vdHJhbnNmb3JtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vdHJhbnNmb3JtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1MiBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorCisjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IElmVGhl
bkVsc2Ugbm9kZXMgYnkgICAgICAgIworIyBzdWJzdGl0dXRpbmcgY29uY3JldGUgYm9vbGVhbiB2
YWx1ZXMgZm9yIGVhY2ggU2V0dGluZy4gICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5y
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVl
CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAor
CitjbGFzcyBGYWxzZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYK
KyAgZW5kCitlbmQKKworY2xhc3MgU2V0dGluZworICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRp
bmdzKQorICAgIHNldHRpbmdzW0BuYW1lXS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5k
CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykudmFsdWUgYW5kIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
LnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgT3IKKyAgZGVmIHJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1
ZSBvciBAcmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVu
ZAorZW5kCisKK2NsYXNzIE5vdAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAg
IChub3QgQGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBl
bmQKK2VuZAorCitjbGFzcyBJZlRoZW5FbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgaWYgQHByZWRpY2F0ZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlCisg
ICAgICBAdGhlbkNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVsc2UKKyAgICAg
IEBlbHNlQ2FzZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZW5kCisgIGVuZAorZW5k
CisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAg
bmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaXRl
bSA9IGl0ZW0ucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgaWYgaXRlbS5pc19hPyBT
ZXF1ZW5jZQorICAgICAgICBuZXdMaXN0ICs9IGl0ZW0ubGlzdAorICAgICAgZWxzZQorICAgICAg
ICBuZXdMaXN0IDw8IGl0ZW0KKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29k
ZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgbm9kZS5kZW1hY3JvaWZ5KG1hY3JvcykgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnN1YnN0aXR1dGUobWFwcGluZykgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgZGVtYWNyb2lmeSgpIGNvbnN0cnVjdHMgYSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2
ZSBhbnkgTWFjcm8gICAgICAgIworIyBub2Rlcywgd2hpbGUgc3Vic3RpdHV0ZSgpIHJlcGxhY2Vz
IFZhcmlhYmxlIG5vZGVzIHdpdGggdGhlIGdpdmVuICAgICAjCisjIG5vZGVzIGluIHRoZSBtYXBw
aW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIGRlbWFj
cm9pZnkobWFjcm9zKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAg
Y2hpbGQuZGVtYWNyb2lmeShtYWNyb3MpCisgICAgfQorICBlbmQKKyAgCisgIGRlZiBzdWJzdGl0
dXRlKG1hcHBpbmcpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBj
aGlsZC5zdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgfQorICBlbmQKKyAgCisgIGRlZiBzdWJzdGl0
dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8Cisg
ICAgICBjaGlsZC5zdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAor
CitjbGFzcyBNYWNybworICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG15TWFwcGluZyA9
IHt9CisgICAgbWFwcGluZy5lYWNoX3BhaXIgeworICAgICAgfCBrZXksIHZhbHVlIHwKKyAgICAg
IHVubGVzcyBAdmFyaWFibGVzLmluY2x1ZGU/IGtleQorICAgICAgICBteU1hcHBpbmdba2V5XSA9
IHZhbHVlCisgICAgICBlbmQKKyAgICB9CisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGls
ZCB8CisgICAgICBjaGlsZC5zdWJzdGl0dXRlKG15TWFwcGluZykKKyAgICB9CisgIGVuZAorZW5k
CisKK2NsYXNzIFZhcmlhYmxlCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgaWYgbWFw
cGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAg
ICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbAorICBkZWYgc3Vic3RpdHV0ZUxh
YmVscyhtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2VsZl0K
KyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVl
bmNlCisgIGRlZiBzdWJzdGl0dXRlKGNvbnN0YW50cykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBt
eUNvbnN0YW50cyA9IGNvbnN0YW50cy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRl
bSB8CisgICAgICBpZiBpdGVtLmlzX2E/IENvbnN0RGVjbAorICAgICAgICBteUNvbnN0YW50c1tp
dGVtLnZhcmlhYmxlXSA9IGl0ZW0udmFsdWUuc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAg
IGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisg
ICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisg
IGVuZAorICAKKyAgZGVmIHJlbmFtZUxhYmVscyhjb21tZW50KQorICAgIG1hcHBpbmcgPSB7fQor
ICAgIAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNf
YT8gTG9jYWxMYWJlbAorICAgICAgICBtYXBwaW5nW2l0ZW1dID0gTG9jYWxMYWJlbC51bmlxdWUo
aWYgY29tbWVudCB0aGVuIGNvbW1lbnQgKyAiXyIgZWxzZSAiIiBlbmQgKyBpdGVtLmNsZWFuTmFt
ZSkKKyAgICAgIGVuZAorICAgIH0KKyAgICAKKyAgICBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcp
CisgIGVuZAorICAKKyAgZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAgIG15TWFjcm9zID0gbWFj
cm9zLmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0u
aXNfYT8gTWFjcm8KKyAgICAgICAgbXlNYWNyb3NbaXRlbS5uYW1lXSA9IGl0ZW0KKyAgICAgIGVu
ZAorICAgIH0KKyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRl
bSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgICMgSWdub3JlLgorICAgICAg
ZWxzaWYgaXRlbS5pc19hPyBNYWNyb0NhbGwKKyAgICAgICAgbWFwcGluZyA9IHt9CisgICAgICAg
IG15TXlNYWNyb3MgPSBteU1hY3Jvcy5kdXAKKyAgICAgICAgcmFpc2UgIkNvdWxkIG5vdCBmaW5k
IG1hY3JvICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBt
eU1hY3Jvc1tpdGVtLm5hbWVdCisgICAgICAgIHJhaXNlICJBcmd1bWVudCBjb3VudCBtaXNtYXRj
aCBmb3IgY2FsbCB0byAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1
bmxlc3MgaXRlbS5vcGVyYW5kcy5zaXplID09IG15TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVz
LnNpemUKKyAgICAgICAgaXRlbS5vcGVyYW5kcy5zaXplLnRpbWVzIHsKKyAgICAgICAgICB8IGlk
eCB8CisgICAgICAgICAgaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IFZhcmlhYmxlIGFuZCBt
eU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG15TXlNYWNyb3Nb
bXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG15TWFjcm9zW2l0ZW0u
b3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5h
bWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxzaWYgaXRlbS5vcGVy
YW5kc1tpZHhdLmlzX2E/IE1hY3JvCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0
ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBpdGVtLm9wZXJhbmRzW2lkeF0KKyAgICAg
ICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9
IG5pbAorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRl
bS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBuaWwKKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNy
b3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBpdGVtLm9wZXJhbmRzW2lkeF0KKyAgICAg
ICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBuZXdMaXN0ICs9IG15TWFjcm9zW2l0ZW0ubmFt
ZV0uYm9keS5zdWJzdGl0dXRlKG1hcHBpbmcpLmRlbWFjcm9pZnkobXlNeU1hY3JvcykucmVuYW1l
TGFiZWxzKGl0ZW0ubmFtZSkubGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0
ZW0uZGVtYWNyb2lmeShteU1hY3JvcykKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5u
ZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkuc3Vic3RpdHV0ZSh7fSkKKyAgZW5kCitlbmQKKworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZlT2Zmc2V0cyhvZmZz
ZXRzLCBzaXplcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBoYXMgb2Zmc2V0IHZhbHVlcyBpbnN0
ZWFkIG9mIHN5bWJvbGljICAgICAgICMKKyMgb2Zmc2V0cy4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zm
c2V0cywgc2l6ZXMpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBj
aGlsZC5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICB9CisgIGVuZAorZW5kCisK
K2NsYXNzIFN0cnVjdE9mZnNldAorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMp
CisgICAgaWYgb2Zmc2V0c1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBv
ZmZzZXRzW3NlbGZdKQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQK
KworY2xhc3MgU2l6ZW9mCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAg
ICBpZiBzaXplc1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBzaXplc1tz
ZWxmXSkKKyAgICBlbHNlCisgICAgICBwdXRzICJDb3VsZCBub3QgZmluZCAje3NlbGYuaW5zcGVj
dH0gaW4gI3tzaXplcy5rZXlzLmluc3BlY3R9IgorICAgICAgcHV0cyAic2l6ZXMgPSAje3NpemVz
Lmluc3BlY3R9IgorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLmZvbGQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgUmVzb2x2ZSBjb25zdGFudCByZWZlcmVuY2VzIGFuZCBjb21wdXRlIGFyaXRobWV0aWMgZXhw
cmVzc2lvbnMuICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xh
c3MgTm9kZQorICBkZWYgZm9sZAorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAor
ICAgICAgY2hpbGQuZm9sZAorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRl
cworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdo
dC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAg
IHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRl
Lm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSArIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQK
KworY2xhc3MgU3ViSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9s
ZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0
LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1t
ZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAtIEByaWdo
dC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcworICBkZWYgZm9sZAor
ICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0
dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVu
bGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2lu
LCBAbGVmdC52YWx1ZSAqIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1t
ZWRpYXRlCisgIGRlZiBmb2xkCisgICAgQGNoaWxkID0gQGNoaWxkLmZvbGQKKyAgICByZXR1cm4g
c2VsZiB1bmxlc3MgQGNoaWxkLmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29k
ZU9yaWdpbiwgLUBjaGlsZC52YWx1ZSkKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZlQWZ0ZXJTZXR0aW5ncyhvZmZzZXRzLCBzaXpl
cykgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbXBp
bGUgYXNzZW1ibHkgYWdhaW5zdCBhIHNldCBvZiBvZmZzZXRzLiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUK
KyAgZGVmIHJlc29sdmUob2Zmc2V0cywgc2l6ZXMpCisgICAgZGVtYWNyb2lmeSh7fSkucmVzb2x2
ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpLmZvbGQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
NzMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2NsYXNzIFJlZ2lz
dGVySUQKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAi
dDAiLCAiYTAiLCAicjAiLCAidDEiLCAiYTEiLCAicjEiLCAidDIiLCAidDMiCisgICAgICB0cnVl
CisgICAgd2hlbiAidDQiLCAiY2ZyIgorICAgICAgZmFsc2UKKyAgICBlbHNlCisgICAgICByYWlz
ZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgY2FzZSBu
YW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdo
ZW4gOmJ5dGUKKyAgICAgICAgIiVhbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVheCIK
KyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVheCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFp
c2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQxIiwgImExIiwgInIxIgorICAgICAgY2FzZSBraW5k
CisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlZGwiCisgICAgICB3aGVuIDpoYWxmCisgICAg
ICAgICIlZHgiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlZHgiCisgICAgICBlbHNlCisg
ICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MiIKKyAgICAgIGNhc2Uga2luZAor
ICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWNsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAg
ICAiJWN4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWN4IgorICAgICAgZWxzZQorICAg
ICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDMiCisgICAgICBjYXNlIGtpbmQKKyAg
ICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVibCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAg
IiVieCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVieCIKKyAgICAgIGVsc2UKKyAgICAg
ICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQ0IgorICAgICAgY2FzZSBraW5kCisgICAg
ICB3aGVuIDpieXRlCisgICAgICAgICIlc2lsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAi
JXNpIgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZXNpIgorICAgICAgZWxzZQorICAgICAg
ICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAiY2ZyIgorICAgICAgY2FzZSBraW5kCisgICAg
ICB3aGVuIDpieXRlCisgICAgICAgICIlZGlsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAi
JWRpIgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWRpIgorICAgICAgZWxzZQorICAgICAg
ICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAic3AiCisgICAgICBjYXNlIGtpbmQKKyAgICAg
IHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzcGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIl
c3AiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlc3AiCisgICAgICBlbHNlCisgICAgICAg
IHJhaXNlCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQK
KyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9Igor
ICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkK
KyAgICByYWlzZSB1bmxlc3Mga2luZCA9PSA6ZG91YmxlCisgICAgY2FzZSBuYW1lCisgICAgd2hl
biAiZnQwIiwgImZhMCIsICJmciIKKyAgICAgICIleG1tMCIKKyAgICB3aGVuICJmdDEiLCAiZmEx
IgorICAgICAgIiV4bW0xIgorICAgIHdoZW4gImZ0MiIsICJmYTIiCisgICAgICAiJXhtbTIiCisg
ICAgd2hlbiAiZnQzIiwgImZhMyIKKyAgICAgICIleG1tMyIKKyAgICB3aGVuICJmdDQiCisgICAg
ICAiJXhtbTQiCisgICAgd2hlbiAiZnQ1IgorICAgICAgIiV4bW01IgorICAgIGVsc2UKKyAgICAg
IHJhaXNlCisgICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAi
KiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBk
ZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIkI3t2YWx1ZX0iCisgIGVuZAorICBkZWYgeDg2Q2Fs
bE9wZXJhbmQoa2luZCkKKyAgICAiI3t2YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJl
c3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVm
IHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5k
KDppbnQpfSkiCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2
T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgc3Vw
cG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChr
aW5kKQorICAgICIje29mZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9LCAje2lu
ZGV4Lng4Nk9wZXJhbmQoOmludCl9LCAje3NjYWxlfSkiCisgIGVuZAorCisgIGRlZiB4ODZDYWxs
T3BlcmFuZChraW5kKQorICAgICIqI3t4ODZvcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUK
KyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7YWRkcmVzcy52YWx1
ZX0iCisgIGVuZAorCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3thZGRyZXNz
LnZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAgZGVmIHg4Nkxh
YmVsCisgICAgc2FuaXRpemVMYWJlbE5hbWUobmFtZSkKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3Bl
cmFuZChraW5kKQorICAgIHg4NkxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxS
ZWZlcmVuY2UKKyAgZGVmIHg4NkxhYmVsCisgICAgIl9fb2FfIituYW1lWzEuLi0xXQorICBlbmQK
KyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgeDg2TGFiZWwKKyAgZW5kCitlbmQKKwor
Y2xhc3MgSW5zdHJ1Y3Rpb24KKyAgZGVmIHg4Nk9wZXJhbmRzKCpraW5kcykKKyAgICByYWlzZSB1
bmxlc3Mga2luZHMuc2l6ZSA9PSBvcGVyYW5kcy5zaXplCisgICAgcmVzdWx0ID0gW10KKyAgICBr
aW5kcy5zaXplLnRpbWVzIHsKKyAgICAgIHwgaWR4IHwKKyAgICAgIHJlc3VsdCA8PCBvcGVyYW5k
c1tpZHhdLng4Nk9wZXJhbmQoa2luZHNbaWR4XSkKKyAgICB9CisgICAgcmVzdWx0LmpvaW4oIiwg
IikKKyAgZW5kCisKKyAgZGVmIHg4NlN1ZmZpeChraW5kKQorICAgIGNhc2Uga2luZAorICAgIHdo
ZW4gOmJ5dGUKKyAgICAgICJiIgorICAgIHdoZW4gOmhhbGYKKyAgICAgICJ3IgorICAgIHdoZW4g
OmludAorICAgICAgImwiCisgICAgd2hlbiA6ZG91YmxlCisgICAgICAic2QiCisgICAgZWxzZQor
ICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3BXaXRoTnVt
T3BlcmFuZHMob3Bjb2RlLCBraW5kLCBudW1PcGVyYW5kcykKKyAgICBpZiBudW1PcGVyYW5kcyA9
PSAzCisgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1
dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFu
ZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNpZiBvcGVyYW5kc1sxXSA9PSBvcGVy
YW5kc1syXQorICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBl
bHNlCisgICAgICAgICRhc20ucHV0cyAiXHRtb3Yje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
a2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5kCisgICAg
ZWxzZQorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoa2luZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcChvcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2T3BX
aXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXplKQorICBlbmQKKyAgCisg
IGRlZiBoYW5kbGVYODZTaGlmdChvcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNf
YT8gSW1tZWRpYXRlIG9yIG9wZXJhbmRzWzBdID09IFJlZ2lzdGVySUQuZm9yTmFtZShuaWwsICJ0
MiIpCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAg
ICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAl
ZWN4IgorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAlY2wsICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZChraW5kKX0iCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKGJyYW5jaE9wY29kZSwgbW9kZSkKKyAgICBjYXNlIG1vZGUKKyAgICB3
aGVuIDpub3JtYWwKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisg
ICAgd2hlbiA6cmV2ZXJzZQorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUp
fSIKKyAgICBlbHNlCisgICAgICByYWlzZSBtb2RlLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNt
LnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICBlbmQK
KyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlKG9wY29kZVN1ZmZpeCwga2luZCkKKyAgICBp
ZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDAg
YW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUi
IG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1
ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNpZiBv
cGVyYW5kc1sxXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzFdLnZhbHVlID09IDAgYW5k
IG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9y
IG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZp
eChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAg
ICAkYXNtLnB1dHMgIlx0Y21wI3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZChraW5kKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludEJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisg
ICAgaGFuZGxlWDg2SW50Q29tcGFyZShicmFuY2hPcGNvZGVbMS4uLTFdLCBraW5kKQorICAgICRh
c20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgIGVu
ZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmQpCisgICAgaWYgb3Bl
cmFuZC5zdXBwb3J0czhCaXRPblg4NgorICAgICAgJGFzbS5wdXRzICJcdCN7c2V0T3Bjb2RlfSAj
e29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAj
e29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5k
KDppbnQpfSwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHQje3NldE9wY29kZX0gJWFsIgorICAg
ICAgJGFzbS5wdXRzICJcdG1vdnpibCAlYWwsICVlYXgiCisgICAgICAkYXNtLnB1dHMgIlx0eGNo
Z2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlU2V0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5k
bGVYODZJbnRDb21wYXJlKHNldE9wY29kZVszLi4tMV0sIGtpbmQpCisgICAgaGFuZGxlWDg2U2V0
KHNldE9wY29kZSwgb3BlcmFuZHNbMl0pCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlRlc3Qo
a2luZCkKKyAgICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisg
ICAgd2hlbiAyCisgICAgICBtYXNrID0gSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtMSkKKyAg
ICB3aGVuIDMKKyAgICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICAgIGVsc2UKKyAgICAgIHJhaXNl
ICJFeHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMsIGJ1dCBnb3QgI3tvcGVyYW5kcy5zaXplfSBhdCAj
e2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICAgIAorICAgIGlmIG1hc2suaXNfYT8gSW1t
ZWRpYXRlIGFuZCBtYXNrLnZhbHVlID09IC0xCisgICAgICBpZiB2YWx1ZS5pc19hPyBSZWdpc3Rl
cklECisgICAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7dmFsdWUu
eDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNl
CisgICAgICAgICRhc20ucHV0cyAiXHRjbXAje3g4NlN1ZmZpeChraW5kKX0gJDAsICN7dmFsdWUu
eDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMg
Ilx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje21hc2sueDg2T3BlcmFuZChraW5kKX0sICN7dmFs
dWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4
NkJyYW5jaFRlc3QoYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkK
KyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHMubGFzdC54ODZMYWJl
bH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldFRlc3Qoc2V0T3Bjb2RlLCBraW5kKQor
ICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVy
YW5kcy5sYXN0KQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcEJyYW5jaChvcGNvZGUsIGJy
YW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUs
IGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdo
ZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgd2hlbiAzCisgICAgICBq
dW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICByYWlzZSBzZWxmLmluc3Bl
Y3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7anVtcFRhcmdl
dC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlN1YkJyYW5jaChicmFuY2hP
cGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSA0IGFuZCBvcGVyYW5kc1sxXSA9
PSBvcGVyYW5kc1syXQorICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxz
ZQorICAgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMoInN1YiN7eDg2U3VmZml4KGtpbmQp
fSIsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGVuZAorICAgIGNhc2Ugb3BlcmFuZHMu
c2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgd2hl
biAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICByYWlz
ZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9
ICN7anVtcFRhcmdldC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGxvd2VyWDg2CisgICAg
JGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICBjYXNlIG9wY29kZQorICAgIHdoZW4g
ImFkZGkiLCAiYWRkcCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNb
MF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19h
PyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdp
c3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAgICAgICB1bmxl
c3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICRhc20ucHV0cyAiXHRt
b3ZsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAkYXNt
LnB1dHMgIlx0bGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgZW5k
CisgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJl
Z2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVy
SUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAg
ICAgICAgJGFzbS5wdXRzICJcdGxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0s
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWws
IDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3t4ODZPcGVy
YW5kcyg6aW50LCA6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAgd2hlbiAiYW5k
aSIsICJhbmRwIgorICAgICAgaGFuZGxlWDg2T3AoImFuZGwiLCA6aW50KQorICAgIHdoZW4gImxz
aGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2FsbCIsIDppbnQpCisgICAgd2hlbiAibXVs
aSIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1t
ZWRpYXRlCisgICAgICAgICRhc20ucHV0cyAiXHRpbXVsbCAje3g4Nk9wZXJhbmRzKDppbnQsIDpp
bnQsIDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgIyBGSVhNRTogY291bGQgZG8gc29tZSBw
ZWVwaG9sZSBpbiBjYXNlIHRoZSBsZWZ0IG9wZXJhbmQgaXMgaW1tZWRpYXRlIGFuZCBpdCdzCisg
ICAgICAgICMgYSBwb3dlciBvZiB0d28uCisgICAgICAgIGhhbmRsZVg4Nk9wKCJpbXVsbCIsIDpp
bnQpCisgICAgICBlbmQKKyAgICB3aGVuICJuZWdpIgorICAgICAgJGFzbS5wdXRzICJcdG5lZ2wg
I3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAibm90aSIKKyAgICAgICRhc20ucHV0cyAi
XHRub3RsICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm9yaSIsICJvcnAiCisgICAg
ICBoYW5kbGVYODZPcCgib3JsIiwgOmludCkKKyAgICB3aGVuICJyc2hpZnRpIgorICAgICAgaGFu
ZGxlWDg2U2hpZnQoInNhcmwiLCA6aW50KQorICAgIHdoZW4gInVyc2hpZnRpIgorICAgICAgaGFu
ZGxlWDg2U2hpZnQoInNocmwiLCA6aW50KQorICAgIHdoZW4gInN1YmkiLCAic3VicCIKKyAgICAg
IGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAg
ICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQp
fSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAg
aGFuZGxlWDg2T3AoInN1YmwiLCA6aW50KQorICAgICAgZW5kCisgICAgd2hlbiAieG9yaSIsICJ4
b3JwIgorICAgICAgaGFuZGxlWDg2T3AoInhvcmwiLCA6aW50KQorICAgIHdoZW4gImxvYWRpIiwg
InN0b3JlaSIsICJsb2FkcCIsICJzdG9yZXAiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje3g4
Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICB3aGVuICJsb2FkYiIKKyAgICAgICRhc20ucHV0
cyAiXHRtb3Z6YmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGgiCisgICAgICAkYXNtLnB1dHMg
Ilx0bW92endsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAi
XHRtb3ZiICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0iCisgICAgd2hlbiAibG9hZGQiLCAi
bW92ZWQiLCAic3RvcmVkIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNkICN7eDg2T3BlcmFuZHMo
OmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImFkZGQiCisgICAgICAkYXNtLnB1dHMgIlx0
YWRkc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAiZGl2ZCIK
KyAgICAgICRhc20ucHV0cyAiXHRkaXZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUp
fSIKKyAgICB3aGVuICJzdWJkIgorICAgICAgJGFzbS5wdXRzICJcdHN1YnNkICN7eDg2T3BlcmFu
ZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gIm11bGQiCisgICAgICAkYXNtLnB1dHMg
Ilx0bXVsc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3Fy
dGQiCisgICAgICAkYXNtLnB1dHMgIlx0c3FydHNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAi
Y2kyZCIKKyAgICAgICRhc20ucHV0cyAiXHRjdnRzaTJzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4g
ImJkZXEiCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZGVxIikKKyAg
ICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMg
Ilx0anAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4Nkxh
YmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3Jp
Z2luLCBvcGVyYW5kc1syXSkueDg2TGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4
NiIpCisgICAgd2hlbiAiYmRuZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpuZSIs
IDpub3JtYWwpCisgICAgd2hlbiAiYmRndCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgi
amEiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJy
YW5jaCgiamFlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0IgorICAgICAgaGFuZGxlWDg2RG91
YmxlQnJhbmNoKCJqYSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHRlcSIKKyAgICAgIGhhbmRs
ZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRlcXVuIgorICAg
ICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRuZXF1
biIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4iKQorICAg
ICAgaXNFcXVhbCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgICRhc20ucHV0
cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0anAgI3tMYWJl
bFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4NkxhYmVsfSIKKyAgICAg
ICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc0VxdWFs
KS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICAgICRhc20u
cHV0cyAiXHRqbXAgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICBpc0VxdWFsLmxvd2Vy
KCJYODYiKQorICAgIHdoZW4gImJkZ3R1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgi
amIiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJs
ZUJyYW5jaCgiamJlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdHVuIgorICAgICAgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKCJqYiIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRsdGVxdW4iCisgICAg
ICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYnRkMmki
CisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1
dHMgIlx0Y21wbCAkMHg4MDAwMDAwMCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgICAgJGFzbS5wdXRzICJcdGplICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgIHdoZW4g
InRkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hl
biAiYmNkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAkYXNtLnB1dHMgIlx0dGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje29w
ZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnRzaTJzZCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHR1Y29t
aXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFz
bS5wdXRzICJcdGpwICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJc
dGpuZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJtb3ZkeiIKKyAgICAgICRh
c20ucHV0cyAiXHR4b3JwZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gInBvcCIKKyAgICAgICRh
c20ucHV0cyAiXHRwb3AgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVu
ICJwdXNoIgorICAgICAgJGFzbS5wdXRzICJcdHB1c2ggI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgaWYgSW1t
ZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBS
ZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHR4b3JsICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNp
ZiBvcGVyYW5kc1swXSAhPSBvcGVyYW5kc1sxXQorICAgICAgICAkYXNtLnB1dHMgIlx0bW92bCAj
e3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgIGVuZAorICAgIHdoZW4gIm5vcCIKKyAg
ICAgICRhc20ucHV0cyAiXHRub3AiCisgICAgd2hlbiAiYmllcSIsICJicGVxIgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqZSIsIDppbnQpCisgICAgd2hlbiAiYmluZXEiLCAiYnBuZXEiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDppbnQpCisgICAgd2hlbiAiYmlhIiwgImJw
YSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6aW50KQorICAgIHdoZW4gImJpYWVx
IiwgImJwYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6aW50KQorICAgIHdo
ZW4gImJpYiIsICJicGIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmludCkKKyAg
ICB3aGVuICJiaWJlcSIsICJicGJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwg
OmludCkKKyAgICB3aGVuICJiaWd0IiwgImJwZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpnIiwgOmludCkKKyAgICB3aGVuICJiaWd0ZXEiLCAiYnBndGVxIgorICAgICAgaGFuZGxlWDg2
SW50QnJhbmNoKCJqZ2UiLCA6aW50KQorICAgIHdoZW4gImJpbHQiLCAiYnBsdCIKKyAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiamwiLCA6aW50KQorICAgIHdoZW4gImJpbHRlcSIsICJicGx0ZXEi
CisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsZSIsIDppbnQpCisgICAgd2hlbiAiYmJlcSIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYm5lcSIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhIgor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDpieXRlKQorICAgIHdoZW4gImJiYWVxIgor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmIiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiZXEiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRlKQorICAgIHdoZW4gImJiZ3QiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJndGVxIgor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0Igor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDpieXRlKQorICAgIHdoZW4gImJibHRlcSIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGlv
IiwgImJ0cG8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDppbnQpCisgICAgd2hl
biAiYnRpcyIsICJidHBzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6aW50KQor
ICAgIHdoZW4gImJ0aXoiLCAiYnRweiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6Iiwg
OmludCkKKyAgICB3aGVuICJidGlueiIsICJidHBueiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRl
c3QoImpueiIsIDppbnQpCisgICAgd2hlbiAiYnRibyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRl
c3QoImpvIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRicyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRl
c3QoImpzIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRieiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRl
c3QoImp6IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRibnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hU
ZXN0KCJqbnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJqbXAiCisgICAgICAkYXNtLnB1dHMgIlx0am1w
ICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJhZGRpbyIs
ICJiYWRkcG8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbyIsIDppbnQpCisg
ICAgd2hlbiAiYmFkZGlzIiwgImJhZGRwcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRs
IiwgImpzIiwgOmludCkKKyAgICB3aGVuICJiYWRkaXoiLCAiYmFkZHB6IgorICAgICAgaGFuZGxl
WDg2T3BCcmFuY2goImFkZGwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJhZGRpbnoiLCAiYmFk
ZHBueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpueiIsIDppbnQpCisgICAg
d2hlbiAiYnN1YmlvIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbyIsIDppbnQpCisgICAg
d2hlbiAiYnN1YmlzIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqcyIsIDppbnQpCisgICAg
d2hlbiAiYnN1Yml6IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqeiIsIDppbnQpCisgICAg
d2hlbiAiYnN1YmlueiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam56IiwgOmludCkKKyAg
ICB3aGVuICJibXVsaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAiam8iLCA6
aW50KQorICAgIHdoZW4gImJtdWxpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIs
ICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm11bGl6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2go
ImltdWxsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJibXVsaW56IgorICAgICAgaGFuZGxlWDg2
T3BCcmFuY2goImltdWxsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYm9yaW8iCisgICAgICBo
YW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJib3JpcyIKKyAg
ICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJvcml6
IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAi
Ym9yaW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqbnoiLCA6aW50KQorICAg
IHdoZW4gImJyZWFrIgorICAgICAgJGFzbS5wdXRzICJcdGludCAkMyIKKyAgICB3aGVuICJjYWxs
IgorICAgICAgJGFzbS5wdXRzICJcdGNhbGwgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6
aW50KX0iCisgICAgd2hlbiAicmV0IgorICAgICAgJGFzbS5wdXRzICJcdHJldCIKKyAgICB3aGVu
ICJjaWVxIiwgImNwZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRlIiwgOmlu
dCkKKyAgICB3aGVuICJjaW5lcSIsICJjcG5lcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVT
ZXQoInNldG5lIiwgOmludCkKKyAgICB3aGVuICJjaWEiLCAiY3BhIgorICAgICAgaGFuZGxlWDg2
SW50Q29tcGFyZVNldCgic2V0YSIsIDppbnQpCisgICAgd2hlbiAiY2lhZXEiLCAiY3BhZXEiCisg
ICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRhZSIsIDppbnQpCisgICAgd2hlbiAiY2li
IiwgImNwYiIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGIiLCA6aW50KQorICAg
IHdoZW4gImNpYmVxIiwgImNwYmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
YmUiLCA6aW50KQorICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgIGhhbmRsZVg4NkludENv
bXBhcmVTZXQoInNldGciLCA6aW50KQorICAgIHdoZW4gImNpZ3RlcSIsICJjcGd0ZXEiCisgICAg
ICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnZSIsIDppbnQpCisgICAgd2hlbiAiY2lsdCIs
ICJjcGx0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bCIsIDppbnQpCisgICAg
d2hlbiAiY2lsdGVxIiwgImNwbHRlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNl
dGxlIiwgOmludCkKKyAgICB3aGVuICJ0aW8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRv
IiwgOmludCkKKyAgICB3aGVuICJ0aXMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwg
OmludCkKKyAgICB3aGVuICJ0aXoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmlu
dCkKKyAgICB3aGVuICJ0aW56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6aW50
KQorICAgIHdoZW4gInRibyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6Ynl0ZSkK
KyAgICB3aGVuICJ0YnMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmJ5dGUpCisg
ICAgd2hlbiAidGJ6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDpieXRlKQorICAg
IHdoZW4gInRibnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDpieXRlKQorICAg
IHdoZW4gInBlZWsiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzBdLnZhbHVl
ICogNH0oJWVzcCksICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAi
cG9rZSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
aW50KX0sICN7b3BlcmFuZHNbMV0udmFsdWUgKiA0fSglZXNwKSIKKyAgICB3aGVuICJjZHFpIgor
ICAgICAgJGFzbS5wdXRzICJcdGNkcSIKKyAgICB3aGVuICJpZGl2aSIKKyAgICAgICRhc20ucHV0
cyAiXHRpZGl2bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImZp
aTJkIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpp
bnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0
cyAiXHRtb3ZkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAg
JGFzbS5wdXRzICJcdHBzbGxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cG9yICV4
bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImZkMmlp
IgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAi
XHRtb3ZzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAg
ICRhc20ucHV0cyAiXHRwc3JscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNk
ICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAg
IHJhaXNlICJCYWQgb3Bjb2RlOiAje29wY29kZX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lh
bGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKyNkZWZpbmUgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZF9oCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBD
b2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkocmV2aXNpb24gMTA0ODYw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQ29tbW9uU2xvd1BhdGhzX2gK
IAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktp
bmQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5o
IgogCkBAIC00MSw2ICs0MiwzOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIENvbW1v
blNsb3dQYXRocyB7CiAKK0FMV0FZU19JTkxJTkUgRXhlY1N0YXRlKiBhcml0eUNoZWNrRm9yKEV4
ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGV4
ZWMtPmNhbGxlZSgpKTsKKyAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7Cisg
ICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2Vu
ZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzID0gZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKKworICAgIC8vIFRoaXMg
ZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8g
YXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgorICAgIGlmICghcmVnaXN0ZXJGaWxlLT5n
cm93KGV4ZWMtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBu
ZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSk7CisKKyAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwg
ZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGgg
dW5kZWZpbmVkLgorICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CisgICAgUmVnaXN0ZXIqIHNyYyA9IGV4
ZWMtPnJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyKiBkc3QgPSBleGVjLT5yZWdpc3RlcnMoKSAr
IGRlbHRhOworCisgICAgaW50IGk7CisgICAgaW50IGVuZCA9IC1FeGVjU3RhdGU6Om9mZnNldEZv
cihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgZm9yIChpID0gLTE7IGkgPj0gZW5k
OyAtLWkpCisgICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKKworICAgIGVuZCAtPSBkZWx0YTsKKyAg
ICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7
CisKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBFeGVjU3RhdGU6OmNyZWF0ZShkc3QpOworICAg
IEFTU0VSVCgodm9pZCopbmV3RXhlYyA8PSByZWdpc3RlckZpbGUtPmVuZCgpKTsKKyAgICByZXR1
cm4gbmV3RXhlYzsKK30KKwogQUxXQVlTX0lOTElORSBib29sIG9wSW5zdGFuY2VPZlNsb3coRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGJhc2VWYWwsIEpTVmFsdWUgcHJv
dG8pCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0NlbGwoKSB8fCAhYmFzZVZhbC5pc0NlbGwoKSB8
fCAhcHJvdG8uaXNDZWxsKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCisjaW5jbHVkZSAiRXhlY3V0aW9uSGFybmVzcy5oIgog
I2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVERyaXZlci5oIgogI2luY2x1ZGUgIlBhcnNl
ci5oIgpAQCAtODQsNyArODUsNyBAQCBJbnRyaW5zaWMgTmF0aXZlRXhlY3V0YWJsZTo6aW50cmlu
c2ljKCkgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIHZvaWQgamV0dGlzb25Db2RlQmxv
Y2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8VD4mIGNvZGVCbG9jaykKIHsKLSAg
ICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQp
OworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5nZXRKSVRU
eXBlKCkpKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKICAgICBPd25Q
dHI8VD4gY29kZUJsb2NrVG9KZXR0aXNvbiA9IGNvZGVCbG9jay5yZWxlYXNlKCk7CiAgICAgY29k
ZUJsb2NrID0gc3RhdGljX3BvaW50ZXJfY2FzdDxUPihjb2RlQmxvY2tUb0pldHRpc29uLT5yZWxl
YXNlQWx0ZXJuYXRpdmUoKSk7CkBAIC0xNjcsOSArMTY4LDMwIEBAIEpTT2JqZWN0KiBFdmFsRXhl
Y3V0YWJsZTo6Y29tcGlsZU9wdGltaXoKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRXZh
bEV4ZWN1dGFibGU6OmppdENvbXBpbGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGJvb2wgcmVz
dWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZXhlYywgbV9ldmFsQ29kZUJsb2NrLCBtX2pp
dENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQpOworfQorCitpbmxpbmUgY29uc3QgY2hhciogc2FtcGxpbmdEZXNj
cmlwdGlvbihKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisgICAgc3dpdGNoIChqaXRUeXBl
KSB7CisgICAgY2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rOgorICAgICAgICByZXR1cm4g
IkludGVycHJldGVyIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6QmFz
ZWxpbmVKSVQ6CisgICAgICAgIHJldHVybiAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSI7
CisgICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6CisgICAgICAgIHJldHVybiAiREZHIENvbXBpbGF0
aW9uIChUT1RBTCkiOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJs
ZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3Bl
Q2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdp
b24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNl
bGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOwor
ICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0
VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBl
KTsKQEAgLTIxMCw3ICsyMzIsNyBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJ
bnRlcm5hCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFw
cHJvcHJpYXRlKGV4ZWMsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlw
ZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKGV4ZWMsIG1fZXZhbENvZGVCbG9jaywg
bV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAK
QEAgLTI5NSw5ICszMTcsMTUgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxl
T3B0aQogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6aml0
Q29tcGlsZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxl
SWZBcHByb3ByaWF0ZShleGVjLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGws
IEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7Cit9CisKIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFs
KEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2Rl
OjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24o
aml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAo
VE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lm
ICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTMzNiw3ICszNjQs
NyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlCiAgICAgfQogCiAj
aWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGV4ZWMsIG1f
cHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFw
cmVwYXJlRm9yRXhlY3V0aW9uKGV4ZWMsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9y
Q2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTQxMiw3ICs0
NDAsNyBAQCBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpiCiAgICAgd2hp
bGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8
RnVuY3Rpb25Db2RlQmxvY2sqPihyZXN1bHQtPmFsdGVybmF0aXZlKCkpOwogICAgIEFTU0VSVChy
ZXN1bHQpOwotICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNl
bGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0
SklUVHlwZSgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDM4LDYgKzQ2NiwxOCBA
QCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlT3B0CiAgICAgcmV0dXJuIGVy
cm9yOwogfQogCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0aW9uSWZB
cHByb3ByaWF0ZShleGVjLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1f
aml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgSklUQ29kZTo6Ym90
dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwor
dm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1Y3QoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3By
aWF0ZShleGVjLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0
LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgSklU
Q29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
KTsKK30KKwogRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2Nr
V2l0aEJ5dGVjb2RlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBGdW5j
dGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CkBA
IC00ODIsNyArNTIyLDcgQEAgUGFzc093blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4gRnVuY3Rpb25F
eAogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFs
KEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2Rl
OjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24o
aml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAo
VE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lm
ICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTUwNCw3ICs1NDQsNyBA
QCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAgICAgbV9zeW1ib2xU
YWJsZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC0+c2hhcmVkU3ltYm9sVGFibGUoKTsKIAogI2lmIEVO
QUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMs
IG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdp
dGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVG
dW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZv
ckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0
VHlwZSwgQ29kZUZvckNhbGwpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC01MjQs
NyArNTY0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogCiBK
U09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwo
RXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6
OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihq
aXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChU
T1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24g
c2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYg
IUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtNTQ2LDcgKzU4Niw3
IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBtX3N5bWJv
bFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAK
ICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0
ZShleGVjLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBt
X2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlw
ZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYywgbV9jb2RlQmxv
Y2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3Ry
dWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENvZGVGb3JDb25zdHJ1
Y3QpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDYgKzI3LDcgQEAKICNkZWZpbmUgRXhlY3V0YWJsZV9oCiAKICNpbmNsdWRlICJDYWxsRGF0YS5o
IgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAt
MzksMTIgKzQwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIERlYnVnZ2VyOwogICAg
IGNsYXNzIEV2YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7CisgICAg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7
CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKICAgICBzdHJ1Y3QgRXhjZXB0aW9uSW5mbzsK
ICAgICAKLSAgICBlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29k
ZUZvckNvbnN0cnVjdCB9OwogICAgIGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxh
dGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CiAKICAgICBpbmxpbmUgYm9vbCBpc0NhbGwo
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMzE5LDYgKzMyMCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwog
CkBAIC0zMzgsNiArMzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJM
RShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYp
OworICAgICAgICB2b2lkIGppdENvbXBpbGUoRXhlY1N0YXRlKik7CiAjZW5kaWYKIAogICAgICAg
ICBFdmFsQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC0zODQsNiArMzg3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIDog
cHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRh
YmxlIEJhc2U7CiAKQEAgLTQxMSw2ICs0MTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGUoSlNH
bG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShFeGVjU3RhdGUqKTsKICNlbmRp
ZgogCiAgICAgICAgIFByb2dyYW1Db2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkKQEAgLTQ1
Myw2ICs0NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0
YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJ
VDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJs
aWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC01MDgsNiAr
NTE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAg
ICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ2FsbChKU0dsb2JhbERhdGEmKTsKKyAg
ICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ2FsbChFeGVjU3RhdGUqKTsKICNlbmRpZgogCiAgICAg
ICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDYWxsKCkgY29uc3QKQEAgLTUzNSw2ICs1NDIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBq
ZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRhJik7CisgICAgICAg
IHZvaWQgaml0Q29tcGlsZUZvckNvbnN0cnVjdChFeGVjU3RhdGUqKTsKICNlbmRpZgogCiAgICAg
ICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3QoKSBjb25zdApAQCAtNTgyLDYgKzU5MCwx
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBqZXR0aXNvbk9wdGltaXplZENv
ZGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvcihFeGVjU3RhdGUqIGV4ZWMsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGtpbmQg
PT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgICAgICBqaXRDb21waWxlRm9yQ2FsbChleGVj
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBB
U1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgICAgIGppdENvbXBpbGVG
b3JDb25zdHJ1Y3QoZXhlYyk7CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICAKICAgICAgICAg
Ym9vbCBpc0dlbmVyYXRlZEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFy
bmVzcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRXhlY3V0aW9uSGFybmVzc19oCisj
ZGVmaW5lIEV4ZWN1dGlvbkhhcm5lc3NfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisK
KyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiSklURHJpdmVyLmgiCisjaW5jbHVkZSAiTExJ
bnRFbnRyeXBvaW50cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUg
Q29kZUJsb2NrVHlwZT4KK2lubGluZSBib29sIHByZXBhcmVGb3JFeGVjdXRpb24oRXhlY1N0YXRl
KiBleGVjLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29k
ZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBp
ZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQg
b2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRFbnRy
eXBvaW50KGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsKKyAg
ICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cigpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZXhlYywgY29kZUJsb2NrLCBq
aXRDb2RlLCBqaXRUeXBlKTsKK30KKworaW5saW5lIGJvb2wgcHJlcGFyZUZ1bmN0aW9uRm9yRXhl
Y3V0aW9uKEV4ZWNTdGF0ZSogZXhlYywgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29kZUJs
b2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGppdENvZGVXaXRo
QXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6SklU
VHlwZSBqaXRUeXBlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisjaWYgRU5BQkxF
KExMSU5UKQorICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkgeworICAg
ICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRlcnByZXRlci4KKyAgICAgICAg
TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludChleGVjLT5nbG9iYWxEYXRhKCksIGtpbmQsIGpp
dENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklU
Q29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShraW5kKTsKKyNlbmRpZiAvLyBFTkFC
TEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhl
YywgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIHN5bWJvbFRhYmxl
LCBqaXRUeXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUo
SklUKQorCisjZW5kaWYgLy8gRXhlY3V0aW9uSGFybmVzc19oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiAr
MjgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDog
cHVibGljIFdyaXRlQmFycmllcjxVbmtub3duPiB7CiAgICAgICAgIHR5cGVkZWYgV3JpdGVCYXJy
aWVyPFVua25vd24+IEJhc2U7CkBAIC0xMjQsNiArMTI1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgfTsKIAogICAgIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNz
IFN0cnVjdHVyZTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
UHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OworICAgIGNs
YXNzIFN0cnVjdHVyZTsKIAogICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcywKQEAgLTE2NCw2ICsxNjUsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAgICAg
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAgIH07CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxMDQ4
NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVu
Y3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEpTR2xv
YmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBO
YXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgbmFtZXNwYWNlIERG
RyB7CkBAIC0xNDAsNiArMTQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAog
ICAgICAgICBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAg
c3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0
IElkZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0
MSw4IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICAsIGtl
eXdvcmRzKGFkb3B0UHRyKG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRlcnByZXRlcigw
KQogICAgICwgaGVhcCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFzc0luZm8oJkpT
QXJyYXk6OnNfaW5mbykKKyAgICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpTRmluYWxPYmpl
Y3Q6OnNfaW5mbykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxhc3RTY3JhdGNo
QnVmZmVyKDApCiAjZW5kaWYKQEAgLTIxOCw3ICsyMjAsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xv
YmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1
bmtzKHRoaXMpKTsKICNlbmRpZgogCi0gICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUodGhpcy0+
Y2FuVXNlSklUKCkpOworICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKCZsbGludERhdGEsIHRo
aXMtPmNhblVzZUpJVCgpKTsKIAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xsZWN0KCk7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAko
cmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNiBAQAogI2RlZmluZSBKU0ds
b2JhbERhdGFfaAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oIgot
I2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAj
aW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNs
dWRlICJTdHJvbmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJKSVRTdHVi
cy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNs
dWRlICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1
ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJUaW1lb3V0
Q2hlY2tlci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYgKzY2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmpl
Y3Q7CiAgICAgY2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmE7CiAg
ICAgY2xhc3MgUmVnRXhwQ2FjaGU7CkBAIC0yNDgsNiArMjUwLDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247CisKKyAg
ICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOworICAgICAgICBj
b25zdCBDbGFzc0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CisKKyAgICAgICAg
TExJbnQ6OkRhdGEgbGxpbnREYXRhOworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgUmV0dXJu
QWRkcmVzc1B0ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBob3N0Q2FsbFJl
dHVyblZhbHVlOwpAQCAtMzUyLDYgKzM2MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogI3VuZGVmIHJl
Z2lzdGVyVHlwZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNHbG9iYWxE
YXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKICAgICAgICAg
c3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAg
dm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90
eXBlOwogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7
CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBSZWdF
eHBDb25zdHJ1Y3RvcjsKQEAgLTMzNSw2ICszMzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyosIGludCBjb3VudCk7
CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVzZXQgaW50byBpbml0Lgog
ICAgICAgICB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CiAgICAgICAgIHZvaWQgcmVz
ZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7
CiAgICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlw
dG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwpAQCAtMjU5LDYgKzI2MCw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
LCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7CiAKICAgICBwcml2YXRlOgorICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAg
Ly8gTm9ib2R5IHNob3VsZCBldmVyIGFzayBhbnkgb2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0
aGluZyBhbHJlYWR5IGtub3duIHRvIGJlIGEgSlNPYmplY3QuCiAgICAgICAgIHVzaW5nIEpTQ2Vs
bDo6aXNBUElWYWx1ZVdyYXBwZXI7CiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0
ZXI7CkBAIC0zNzAsNiArMzczLDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5s
aW5lU3RvcgogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJp
dmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAg
ICAgCiAgICAgICAgIGV4cGxpY2l0IEpTRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFs
RGF0YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmgJKHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNP
YmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvciA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xh
c3MgSklUOwpAQCAtOTYsNiArOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAgICAgCiAgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNo
ZWFibGVTbG90KTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhY2hlZFN0
cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAko
cmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBKU1N0cmluZzsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAK
ICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKICAgICBKU1N0cmlu
ZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsKQEAgLTI0MSw2ICsyNDIsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0
YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIqKSBj
b25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFyKikgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lv
biAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkIHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJsZS4KICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8PCAxOwogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEgPDwgMjsKQEAgLTg3
LDYgKzg5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAg
ICAgICBib29sIGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxh
ZyA8PSAoMSA8PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAgICAgICBib29sIGlz
U2V0T25GbGFnczIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8PCA4
KSk7IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEw
NDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEyIEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFJlZ2lzdGVyOwog
CiAgICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFs
T2JqZWN0IEJhc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmNwcAkocmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDEwIEBAIHVuc2lnbmVkIG1h
eGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGkKIAogdW5zaWduZWQgbWF4aW11bUlubGluaW5n
RGVwdGg7CiAKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7
CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2lu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogaW50MzJfdCBleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkBAIC0xMzYsNiArMTQwLDEw
IEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIAogICAgIFNFVChtYXhpbXVtSW5saW5p
bmdEZXB0aCwgNSk7CiAKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJX
YXJtVXAsICAgICAtMTAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJ
VEFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CisgICAg
U0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb24sICAgICAgICAgICAgLTEwMCk7CisK
ICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCwgICAg
IC0xMDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxv
bmdXYXJtVXAsIC01MDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9w
dGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEw
NDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNiArMzcsMTAgQEAgZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlv
bkZvckNvbnN0cgogCiBleHRlcm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERl
cHRoIG9mIGlubGluZSBzdGFjaywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBl
dGMuCiAKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2Fy
bVVwOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRp
bWVTb29uOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsK
KwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldh
cm1VcDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0
ZXJMb25nV2FybVVwOwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9u
dE9wdGltaXplQW55dGltZVNvb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY29wZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiAxMDQ4NjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY29wZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xv
YmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZp
c2l0b3I7CiAgICAgCkBAIC05MSw2ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
dGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0
ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAg
CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW47CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5
RGF0YTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZv
IHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25z
dCBDbGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYpOwogICAgICAg
ICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9u
IDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWlu
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU3RydWN0dXJlOwog
CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlNDZWxsIHsKQEAgLTc0LDYgKzc1
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBT
dHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgJKHJldmlzaW9uIDEwNDg2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxh
dGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTE4LDYgKzkxOCwxMiBAQAogI2RlZmluZSBFTkFC
TEVfSklUIDEKICNlbmRpZgogCisvKiBPbiBzb21lIG9mIHRoZSBwbGF0Zm9ybXMgd2hlcmUgd2Ug
aGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNvIGhhdmUgdGhlIAorICAgbG93LWxldmVsIGludGVy
cHJldGVyLiAqLworI2lmIEVOQUJMRShKSVQpICYmIFBMQVRGT1JNKE1BQykgJiYgVVNFKEpTVkFM
VUUzMl82NCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQo
RU5BQkxFX0RGR19KSVQpICYmIEVOQUJMRShKSVQpCiAvKiBFbmFibGUgdGhlIERGRyBKSVQgb24g
WDg2IGFuZCBYODZfNjQuICBPbmx5IHRlc3RlZCBvbiBNYWMgYW5kIEdOVS9MaW51eC4gKi8KICNp
ZiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpICYmIChQTEFURk9STShNQUMpIHx8IE9TKExJTlVY
KSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAko
cmV2aXNpb24gMTA0ODYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCB0eXBlZGVmIGNvbnN0IHN0
cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpCiAvLyBMYW5kaW5nIHRoZSBmaWxlIG1vdmVzIGluIG9u
ZSBwYXRjaCwgd2lsbCBmb2xsb3cgb24gd2l0aCBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgbmFtZXNw
YWNlcy4KIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRv
cjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBz
dHJ1Y3QgSWRlbnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yOwogc3RydWN0IElkZW50aWZpZXJM
Q2hhckZyb21VQ2hhclRyYW5zbGF0b3I7CiB9CkBAIC03MCw3ICs3MSw4IEBAIGNsYXNzIFN0cmlu
Z0ltcGwgewogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFu
c2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAg
ICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7Ci0KKyAgICBmcmllbmQgY2xhc3MgSlND
OjpMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiBwcml2YXRlOgogICAgIGVudW0gQnVmZmVy
T3duZXJzaGlwIHsKICAgICAgICAgQnVmZmVySW50ZXJuYWwsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122872</attachid>
            <date>2012-01-17 22:26:11 -0800</date>
            <delta_ts>2012-01-18 17:16:01 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_19.diff</filename>
            <type>text/plain</type>
            <size>404336</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MjQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzNyBA
QAorMjAxMi0wMS0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV09SSyBJTiBQUk9HUkVTUy4gIEl0IGFwcGVhcnMgdG8gd29yaywgYnV0IHRoZSB0
aWVyaW5nIGxvZ2ljIGlzIG5vdAorCWNvbXBsZXRlbHkgZ2x1ZWQgdG9nZXRoZXIgeWV0LgorICAg
ICAgICAKKyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBK
SVQncyBjYWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2Fs
bGVkIExMSW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAg
ICAgICAgd2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5
IHRpZXIgdXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVu
IGhvdC4KKyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBm
b3JtIG9mIG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1i
bHkgaXMgY29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwg
d2hpY2gKKyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBh
cyBhIFR1cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5k
IGRpcmVjdCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAg
KGJhc2ljYWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2Vz
KS4KKyAgICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8g
dGhlIHJlc3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0
aW5nIGluIHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5n
IGFuZAorICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQg
cmVxdWlyZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAg
ICAgICAKKyAgICAgICAgQXMgYW4gYWRkaXRpb25hbCBjaGFuZ2UsIHRoaXMgcGF0Y2ggbWFrZXMg
Ynl0ZWNvZGUgZHVtcGluZyBhbmQgSlNWYWx1ZQorICAgICAgICBkdW1waW5nIHdvcmsgaW4gcmVs
ZWFzZSBidWlsZHMsIHNpbmNlIGRlYnVnZ2luZyBzb21lIG9mIHRoZSBuYXN0aWVyCisgICAgICAg
IGFzcGVjdHMgb2YgdGhpcyBwYXRjaCB3b3VsZCBoYXZlIGJlZW4gaW1wb3NzaWJsZSB3aXRob3V0
IHRoYXQuIEFuZCBJCisgICAgICAgIGRvbid0IGJlbGlldmUgdGhhdCB3ZSBjYXJlIGFib3V0IHRo
ZSBtaW5pc2N1bGUgY29kZSBibG9hdCB0aGF0IHRoaXMKKyAgICAgICAgaW50cm9kdWNlcy4KKwor
ICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvTGlua0J1ZmZl
ci5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDogQWRkZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpkdW1wKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZp
bmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzdHJvbmds
eVZpc2l0U3Ryb25nUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5saW5r
Q2FsbHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
UHJvZ3JhbUNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2Nr
OjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbik6
CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmppdENvbXBpbGUpOgorICAgICAgICAo
SlNDOjpFdmFsQ29kZUJsb2NrOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25D
b2RlQmxvY2s6OmppdENvbXBpbGUpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5lVmVyc2lvbik6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6bGlua0luY29taW5nQ2FsbCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmhhbmRsZUJ5dGVjb2Rl
RGlzY2FyZGluZ09wcG9ydHVuaXR5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNPcHRp
bWl6ZWRSZXBsYWNlbWVudCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTExJbnRDYWxs
TGlua0luZm8pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1ZW50RXhpdFNpdGUp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29vbik6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50RXhlY3V0ZUNvdW50
ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6CisgICAgICAgIChKU0M6Oklu
c3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNvZGUvTExJbnRDYWxsTGlu
a0luZm8uaDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpMTEludENh
bGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjp+TExJbnRDYWxs
TGlua0luZm8pOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6aXNMaW5rZWQpOgor
ICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6dW5saW5rKToKKyAgICAgICAgKiBieXRl
Y29kZS9PcGNvZGUuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6c2V0RHVtcHNHZW5lcmF0ZWRD
b2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29k
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dERpcmVjdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENh
bGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gpOgorICAgICAgICAqIGRm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAgICAgKiBo
ZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Y3VycmVudFZQ
Qyk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6fkludGVycHJldGVyKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6aXNPcGNvZGUpOgorICAg
ICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6CisgICAgICAgICogaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZSk6Cisg
ICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGVJRCk6CisgICAgICAgIChKU0M6Oklu
dGVycHJldGVyOjplbmFibGVkKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUu
aDoKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSk6CisgICAgICAgICog
aml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaDogQWRkZWQuCisgICAgICAgICogaml0L0pJVC5jcHA6
CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChK
U0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OnBy
aXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoSlNDOjpK
SVRDb2RlOjppc09wdGltaXppbmdKSVQpOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjppc0Jhc2Vs
aW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAgICAgICAqIGpp
dC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUpOgor
ICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToKKyAgICAgICAg
KiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93KToKKyAgICAg
ICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElP
Tik6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgICogbGxpbnQ6IEFk
ZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50Q29tbW9uLmg6IEFkZGVkLgorICAgICAgICAqIGxs
aW50L0xMSW50RGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6RGF0
YSk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjp+RGF0YSk6CisgICAgICAgICogbGxpbnQv
TExJbnREYXRhLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6ZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6Om9wY29kZU1hcCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlND
OjpMTEludDo6Z2V0RnVuY3Rpb25FbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6Omdl
dEV2YWxFbnRyeXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldFByb2dyYW1FbnRyeXBv
aW50KToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnRzLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0RW50cnlwb2ludCk6CisgICAgICAgICogbGxpbnQvTExJbnRFeGNl
cHRpb25zLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjppbnRlcnByZXRlclRocm93
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24p
OgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuVG9UaHJvdyk6CisgICAgICAgIChKU0M6OkxM
SW50OjpjYWxsVG9UaHJvdyk6CisgICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6IEFk
ZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50SGVscGVycy5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDOjpMTEludDo6bGxpbnRfdHJhY2Vfb3BlcmFuZCk6CisgICAgICAgIChKU0M6OkxMSW50Ojps
bGludF90cmFjZV92YWx1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpMTElOVF9IRUxQRVJfREVD
TCk6CisgICAgICAgIChKU0M6OkxMSW50Ojp0cmFjZUZ1bmN0aW9uUHJvbG9ndWUpOgorICAgICAg
ICAoSlNDOjpMTEludDo6c2hvdWxkSklUKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFs
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRPZmZzZXRzRXh0cmFj
dG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5r
cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1w
VG8pOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlD
aGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmV2
YWxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnByb2dyYW1FbnRy
eVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5oOiBBZGRlZC4K
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTogQWRk
ZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICogb2Zm
bGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBv
ZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9zZXR0aW5ncy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS90
cmFuc2Zvcm0ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBBZGRlZC4K
KyAgICAgICAgKiBydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaDogQWRkZWQuCisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xv
d1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3Bw
OgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2YWxF
eGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6c2FtcGxpbmdEZXNjcmlwdGlv
bik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6CisgICAgICAgIChKU0M6
OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbCk6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3Mu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OnByZXBhcmVGb3JFeGVjdXRpb24pOgorICAgICAgICAo
SlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
Y3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dGVhck9mZik6CisgICAg
ICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmlu
Zy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmRlc2NyaXB0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRp
b25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6Cisg
ICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL3RleHQvU3RyaW5nSW1wbC5oOgorCiAyMDEyLTAx
LTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAgRmFjdG9y
ZWQgb3V0IHNvbWUgY29kZSBpbnRvIGEgaGVscGVyIGZ1bmN0aW9uLgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEwNTIxNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MCw2ICs2MCw3IEBAIGFsbCA6
IFwKICAgICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU3RyaW5nUHJvdG90eXBlLmx1
dC5oIFwKICAgICBkb2NzL2J5dGVjb2RlLmh0bWwgXAorICAgIExMSW50QXNzZW1ibHkuaC5QSE9O
WSBcCiAjCiAKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwpAQCAtMTA0LDMgKzEwNSwxMSBA
QCBIZWFkZXJEZXRlY3Rpb24uaCA6CiAJZWNobyA+ICRACiAKIGVuZGlmCisKKyMgQXNzZW1ibHkg
Zm9yIHRoZSBMb3dMZXZlbEludGVycHJldGVyCisKKyMgVGhpcyBidWlsZHMgZXZlcnkgdGltZSBi
ZWNhdXNlIHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGRlc2NyaWJlCisjIHRoZSBkZXBlbmRlbmNp
ZXMgdXNpbmcgbWFrZS4gSW5zdGVhZCwgdGhlIGFzc2VtYmxlciB3aWxsIGRlY2lkZSBvbgorIyBp
dHMgb3duIHdoZXRoZXIgb3Igbm90IGl0IGRpZCBhbnl0aGluZyB0aGF0IHdvdWxkIGxlYWQgdG8g
YSBjaGFuZ2UuCitMTEludEFzc2VtYmx5LmguUEhPTlk6CisJcnVieSAkKEphdmFTY3JpcHRDb3Jl
KS9vZmZsaW5lYXNtL2FzbS5yYiAkKEphdmFTY3JpcHRDb3JlKS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9y
ID4gTExJbnRBc3NlbWJseS5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTA1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxNSBAQAog
CW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCisJ
CTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovID0geworCQkJaXNh
ID0gUEJYQWdncmVnYXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4
MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFn
Z3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJ
CQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICov
LAorCQkJKTsKKwkJCW5hbWUgPSAiTExJbnQgT2Zmc2V0cyI7CisJCQlwcm9kdWN0TmFtZSA9ICJE
ZXJpdmVkIFNvdXJjZXMiOworCQl9OwogCQk2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyogRGVy
aXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OwogCQkJYnVp
bGRDb25maWd1cmF0aW9uTGlzdCA9IDY1RkIzRjc3MDlEMTFFQkQwMEY0OURFQiAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVyaXZlZCBTb3VyY2Vz
IiAqLzsKQEAgLTE0LDYgKzIzLDkgQEAKIAkJCQk2NUZCM0Y2NTA5RDExRTkxMDBGNDlERUIgLyog
R2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTVEMzVERUUxMEM3QzE0MEIwMDg2NDhC
MiAvKiBHZW5lcmF0ZSBEVHJhY2UgaGVhZGVyICovLAogCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9
ICgKKwkJCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LywKKwkJCSk7CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlwcm9kdWN0TmFtZSA9
ICJEZXJpdmVkIFNvdXJjZXMiOwogCQl9OwpAQCAtNDgsNiArNjAsMTAgQEAKIAkJMEJBQzk0QTAx
MzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQUM5NDlFMTMzODcyODQwMENG
MTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJDRDgzNTcxNDg1ODQ1MjAwRUEyMDAzIC8q
IFRlbXBvcmFyeUNoYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEJDRDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCRjI4QTI5
MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXpl
TGltaXRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50
cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovOyB9
OworCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTYxNEJDRjQ1
QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLzsgfTsKKwkJ
MEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYg
LyogTExJbnRUaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E1MTRCQ0Y1MDQw
MDg4NUI0RiAvKiBDb2RlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTgx
NEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4
cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZv
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU4
LDkgKzc0LDEzIEBACiAJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlu
a0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCNzE0QkNGOEUx
MDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxS
ZXNvbHZlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2Rl
T2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBGQzQ1ODE0QkQxNUYx
MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29t
bW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNkQ3MjYxNDJD
MzlDMDAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9y
LmNwcCAqLzsgfTsKIAkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNjYxNEJF
NUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRp
b25IYXJuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdEMTRCRTcy
N0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyog
Q29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNv
bnZlbnRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjQyREE3MTNG
M0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMg
LyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTZGMTQ3MzhGMzEwMDEyMUU0RiAvKiBERkdDb2Rl
QmxvY2tzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTcwMTQ3MzhGMzUwMDEy
MUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tz
LmNwcCAqLzsgfTsKQEAgLTcxLDYgKzkxLDE5IEBACiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5
MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2
ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8q
IEpJVEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA3RjE0
QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MEEzMTRC
QTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlGMTRCQTdG
ODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9G
TEFHUyA9ICItV25vLXVudXNlZC1wYXJhbWV0ZXIiOyB9OyB9OworCQkwRjQ2ODBBNTE0QkE3RjhE
MDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0
NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTgx
NEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8q
IExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQjE0QkJCMTcy
MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovOyB9
OworCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzgxNEJC
QjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIg
LyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovOyB9Owor
CQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIg
LyogTExJbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Njgw
RDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovOyB9OworCQkw
RjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDExNEJCQzVGODAw
QkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5j
b25kaXRpb25hbEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjYyMDE3NDE0M0ZDRDMzMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYyMDE3MjE0M0ZD
RDJGMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAxNzUxNDNGQ0QzNzAwNjhCNzdD
IC8qIERGR09wZXJhbmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjYyMDE3MTE0M0ZDRDJGMDA2OEI3N0MgLyogREZHT3BlcmFuZHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzc1LDcgKzQwOCw3
IEBACiAJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUUxMTE3RTU3ODEw
MERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRj
aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJC
MDlCRTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87IH07CiAJCTg2QkIwOUMx
MTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVw
YXRjaC5oICovOyB9OwotCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2
RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyB9OworCQk4NkMzNkVF
QTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBN
YWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhE
RDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9OwogCQk4NkM1
NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3
RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3
RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5o
ICovOyB9OwpAQCAtNzM1LDYgKzc2OCwyMCBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTBGNDY4
MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlp
c2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5
MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAx
OworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzI7CisJ
CQlyZW1vdGVJbmZvID0gIkxMSW50IE9mZnNldHMiOworCQl9OworCQkwRjQ2ODBCMzE0QkE4MjE0
MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29u
dGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMw
MkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90
ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyOworCQkJcmVtb3RlSW5m
byA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJMTQxMjE0QkUwQTQ5MTkwRTAw
NDgwMjU1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRh
aW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJB
QUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTc4MCw2ICs4MjcsMTUgQEAKIC8qIEVuZCBQ
QlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5RmlsZXNC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlG
aWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEv
OworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKIAkJNURCQjE1MTExMzFE
MEIxMzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhD
b3B5RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7CkBAIC04MjAsNiAr
ODc2LDEwIEBACiAJCTBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlv
blZlcmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFJlc3Ry
aWN0aW9uVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJDRDgzNTQx
NDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUZW1wb3JhcnlDaGFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5
cG9pbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RW50
cnlwb2ludHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RW50cnlw
b2ludHMuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50VGh1bmtzLmNwcDsg
cGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50VGh1bmtzLmg7IHBhdGggPSBsbGludC9MTEludFRo
dW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBNTE0QkNGNTA0MDA4
ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29k
ZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTgxNEJDRjU1RTAw
ODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0FBMTRC
Q0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTgzMCw5ICs4OTAsMTMgQEAKIAkJMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRG
IC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZXRob2RDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYw
QjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbFJlc29sdmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zm
c2V0VG9CeXRlY29kZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRDYWxsTGlua0luZm8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENv
bW1vblNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25T
bG93UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNkQ3MjQxNDJDMzlB
MjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIx
QzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpJVERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBF
eGVjdXRpb25IYXJuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1
dGlvbkhhcm5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0UxNEJF
QUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVDb252ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZl
c3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrUmVmZXJlbmNlSGFy
dmVzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZEMTQ3MzhGMkUw
MDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC04NDMsNiArOTA3LDIwIEBACiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5
MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDdG
MTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRFeGNlcHRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTElu
dE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRG
aWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0g
MDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0
aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEV4Y2Vw
dGlvbnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMu
aDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50SGVscGVycy5jcHA7IHBhdGgg
PSBsbGludC9MTEludEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50SGVscGVycy5oOyBwYXRoID0gbGxpbnQvTExJbnRIZWxw
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEExMTRCQTdGODIwMEJG
RTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgcGF0aCA9IGxsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMTEludENvbW1vbi5oOyBwYXRoID0gbGxpbnQvTExJbnRDb21tb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcy
IC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBMTEludE9mZmxpbmVBc21Db25maWcuaDsgcGF0aCA9IGxsaW50L0xMSW50T2ZmbGluZUFz
bUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNzE0QkJCMTY5
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmNwcDsgcGF0aCA9IGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmg7IHBhdGggPSBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnREYXRhLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RGF0
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENGMTRCQkIzRDEwMEJG
RTI3MiAvKiBMTEludERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJ
bnREYXRhLmg7IHBhdGggPSBsbGludC9MTEludERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSG9zdENhbGxSZXR1cm5W
YWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQxMTRCQkM1Rjgw
MEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5dGVDb2RlQ2FjaGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNvZGVDYWNoZS5oOyBwYXRoID0g
ZGZnL0RGR0J5dGVDb2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1
RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5jb25kaXRpb25hbEZpbmFsaXplci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYyMDE2RDE0M0ZDRDJGMDA2OEI3N0MgLyogREZH
QWJzdHJhY3RTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBE
RkdBYnN0cmFjdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NDUsNiArMTYyMywxMyBAQAogLyogRW5kIFBC
WEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtz
ICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFFMEE0ODc5M0MwMDQ4
MDI1NSAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhh
c2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTYwMyw2ICsxNjg4LDcg
QEAKIAkJCQkxNDEyMTEyMDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLywKIAkJCQkxNEJE
NTlCRjBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2QTRD
MDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIg
LyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0
czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjMxLDYgKzE3MTcsNyBAQAogCQkJ
CUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovLAog
CQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhD
MDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLywKKwkJCQkwRjQ2ODA5QzE0QkE3RjREMDBC
RkUyNzIgLyogbGxpbnQgKi8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAq
LywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCTk2
OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKQEAgLTE2NjksNiArMTc1Niwy
OCBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkwRjQ2ODA5
QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJ
CWNoaWxkcmVuID0gKAorCQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5
cG9pbnRzLmNwcCAqLywKKwkJCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRy
eXBvaW50cy5oICovLAorCQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5r
cy5jcHAgKi8sCisJCQkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmgg
Ki8sCisJCQkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8sCisJ
CQkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovLAorCQkJCTBGNDY4
MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovLAorCQkJCTBGNDY4MEM2MTRC
QkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLywKKwkJCQkwRjQ2ODBD
NzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8sCisJCQkJMEY0
NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLywKKwkJCQkw
RjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLywKKwkJCQkw
RjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8sCisJCQkJMEY0
NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8sCisJCQkJMEY0Njgw
QTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovLAorCQkJCTBGNDY4MEExMTRC
QTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovLAorCQkJKTsKKwkJ
CW5hbWUgPSBsbGludDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTE0MTIx
MTAwMEE0ODc3MjYwMDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCkBAIC0xNzAxLDYgKzE4MTAsOCBAQAogCQkxNDI5RDkyQzBFRDIyRDcw
MDBCODk2MTkgLyogaml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5j
cHAgKi8sCisJCQkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFs
dWUuaCAqLywKIAkJCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5j
cHAgKi8sCiAJCQkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAq
LywKIAkJCQkwRkQ4MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAq
LywKQEAgLTIxMjMsNiArMjIzNCw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBy
dW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkw
RjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovLAor
CQkJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8sCiAJ
CQkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovLAogCQkJ
CUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUx
MjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLApAQCAtMjQ4Myw2ICsyNTk2LDggQEAK
IAkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIg
LyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovLAorCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1
NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovLAogCQkJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0
RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovLAogCQkJCTBGMEI4M0I2
MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovLAogCQkJCTBGMEI4M0Iy
MTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3BwICovLApAQCAtMzAyMSw3
ICszMTM2LDE2IEBACiAJCQkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJu
LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5
bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3
RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEEzMTRCQTdG
OEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4
MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21tb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21D
b25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBM
b3dMZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBEMzE0QkJEMTY3
MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBENTE0QkJE
MjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8u
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNz
aW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTMwMzAsNyArMzE1NCwxMSBAQAogCQkJ
CTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBGQzQ1
QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRC
IC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRBMTRD
M0NEMjkwMDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
N0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGN0IyOTRDMTRDM0NENDMwMDdDM0RCMSAvKiBERkdCeXRlQ29kZUNhY2hlLmggaW4g
SGVhZGVycyAqLywKQEAgLTMwNDEsNiArMzE2OSwyNCBAQAogLyogRW5kIFBCWEhlYWRlcnNCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8K
KwkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAq
LyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxp
c3QgPSAwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIgKi87CisJCQli
dWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAq
LywKKwkJCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkw
RjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxk
UnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4MEIyMTRCQTgx
MTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBK
U0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0TmFtZSA9IEpTQ0xMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAwRjQ2ODA4RjE0QkE3RTVFMDBCRkUy
NzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29t
LmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKIAkJMTQxMjExMUYwQTQ4NzkzQzAwNDgw
MjU1IC8qIG1pbmlkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CiAJCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLzsKQEAgLTMx
NjcsMTEgKzMzMTMsMjkgQEAKIAkJCQkxNEJENTlCRTBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFw
aSAqLywKIAkJCQk5MzJGNUJEQTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAogCQkJCTY1MTEy
MkY3MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4MDhFMTRCQTdF
NUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCisJCQkJMEY0NjgwQTkx
NEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8sCiAJCQkpOwogCQl9OwogLyogRW5k
IFBCWFByb2plY3Qgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhh
c2Ugc2VjdGlvbiAqLworCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVy
aXZlZCBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwor
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJ
CWlucHV0UGF0aHMgPSAoCisJCQkJIiQoU1JDUk9PVCkvbGxpbnQvTG93TGV2ZWxBc3NlbWJsZXIu
YXNtIiwKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CisJCQlv
dXRwdXRQYXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cy9M
TEludERlc2lyZWRPZmZzZXRzLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0
ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9cIlxuXG4v
dXNyL2Jpbi9lbnYgcnVieSBcIiR7U1JDUk9PVH0vb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRf
ZXh0cmFjdG9yLnJiXCIgPCBcIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c21cIiA+IFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRP
ZmZzZXRzLmhcIlxuIjsKKwkJfTsKIAkJMzcxM0YwMTQxNDI5MDUyNDAwMzYzODdGIC8qIENoZWNr
IEZvciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzICovID0gewogCQkJaXNh
ID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKQEAgLTMzMTIsNiArMzQ3NiwxNCBAQAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24g
Ki8KKwkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CisJCQlmaWxlcyA9ICgKKwkJCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRDBBNDg3OTNDMDA0ODAy
NTUgLyogU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTM1NjksNyArMzc0MSwxNCBAQAogCQkJ
CTg2NzA0Qjg2MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTg2NzA0Qjg5MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50
SGVscGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIg
LyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MDgzMTRCQTU3
MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4
MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJu
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8q
IExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUMxNEJDRjQ2
MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4M0Iw
MTRCQ0Y3MTYwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYwQjgzQjQxNEJDRjg2MDAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CkBAIC0zNTg2LDYgKzM3NjUsMTYgQEAKIC8qIEVuZCBQQlhTb3VyY2Vz
QnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2Vj
dGlvbiAqLworCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5j
eSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2
ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLzsKKwkJCXRhcmdldFByb3h5
ID0gMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsK
KwkJfTsKKwkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kg
Ki8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMEY0Njgw
OEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXRh
cmdldFByb3h5ID0gMEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLzsKKwkJfTsKIAkJMTQxMjE0QkYwQTQ5MTkwRTAwNDgwMjU1IC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwogCQkJdGFyZ2V0
ID0gMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi87CkBAIC0zNjE5LDYgKzM4
MDgsMTQ4IEBACiAvKiBFbmQgUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMEY0NjgwOTYxNEJBN0U1RTAw
QkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POwor
CQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9T
VFJJUCA9IE5POworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0ND
X0RZTkFNSUNfTk9fUElDID0gTk87CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZ
RVM7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NFU1NP
Ul9ERUZJTklUSU9OUyA9ICgKKwkJCQkJIkRFQlVHPTEiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwK
KwkJCQkpOworCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gTk87CisJCQkJR0NDX1ZF
UlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJO
XzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lO
R19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVT
OworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJD
SF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
IiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJT05M
WV9BQ1RJVkVfQVJDSCA9IFlFUzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSki
OworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0g
Ii4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNI
X1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODA5NzE0QkE3
RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMg
PSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlf
UEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJm
LXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlH
Q0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5h
cHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklU
X0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMg
PSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dB
Uk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9
Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikv
TExJbnRPZmZzZXRzJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hf
REVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9O
QU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFU
SFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9T
RUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0Njgw
OTgxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRD
b25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VT
RVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOwor
CQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFU
ID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5
OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lP
TiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRf
VE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BS
T1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJ
CQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BB
VEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RV
Q1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAor
CQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNU
X05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNF
Ul9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTElu
dE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2Zp
bGluZzsKKwkJfTsKKwkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNI
U19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURF
QlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xB
TkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMg
PSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcu
MV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0ND
X1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VU
X1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsK
KwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1
LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhF
QURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdF
VCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtS
T09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOwor
CQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBBRDE0QkE3RkQ5MDBC
RkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBj
b3B5IjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MEFFMTRCQTdGRDkw
MEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJj
ZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4MEFGMTRC
QTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2
ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkw
RjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05B
TUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9u
OworCQl9OwogCQkxNDEyMTEzQTBBNDg3OTg0MDA0ODAyNTUgLyogRGVidWcgKi8gPSB7CiAJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CkBAIC0zODYw
LDYgKzQxOTEsMjggQEAKIC8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkwRjQ2ODA5QTE0QkE3
RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3Vy
YXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODA5NjE0QkE3
RTVFMDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcyIC8q
IFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2ZpbGluZyAq
LywKKwkJCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7
CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUy
NzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxM
SW50IE9mZnNldHMiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1
aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8qIERl
YnVnICovLAorCQkJCTBGNDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovLAorCQkJ
CTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY0NjgwQjAx
NEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJv
ZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLyA9IHsKIAkJCWlz
YSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHJldmlz
aW9uIDEwNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAjZGVmaW5lIERVTVBfTElOS19T
VEFUSVNUSUNTIDAKICNkZWZpbmUgRFVNUF9DT0RFIDAKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1i
bGVyLmg+CisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQnl0ZWNvZGVDb252ZW50aW9uc19oCisjZGVmaW5l
IEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCisvLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0
ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVp
ciByYW5nZXM6CisvLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNl
cyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFt
ZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgorLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZv
cndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMg
YW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgorLy8gICAgICAw
eDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNw
ZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgorc3Rh
dGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7CisK
KyNlbmRpZiAvLyBCeXRlY29kZUNvbnZlbnRpb25zX2gKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEwNTIxNikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
U3RhdGljU2NvcGVPYmplY3QuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTG93
TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRl
ICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtNTksOCArNjAs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAjZW5kaWYKIAotI2lm
ICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQogc3RhdGljIFVT
dHJpbmcgZXNjYXBlUXVvdGVzKGNvbnN0IFVTdHJpbmcmIHN0cikKIHsKICAgICBVU3RyaW5nIHJl
c3VsdCA9IHN0cjsKQEAgLTM1OCwxMCArMzU3LDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4
ZWNTdGF0ZSogZXhlYykgY28KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc3RydWN0aW9u
cygpLnNpemUoKTsgaSArPSBvcGNvZGVMZW5ndGhzW2V4ZWMtPmludGVycHJldGVyKCktPmdldE9w
Y29kZUlEKGluc3RydWN0aW9ucygpW2ldLnUub3Bjb2RlKV0pCiAgICAgICAgICsraW5zdHJ1Y3Rp
b25Db3VudDsKIAotICAgIHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQg
JXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpXG5cbiIsCisgICAgcHJp
bnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVyKHMp
OyAlZCBjYWxsZWUgcmVnaXN0ZXIocyk7ICVkIHZhcmlhYmxlKHMpXG5cbiIsCiAgICAgICAgIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9uQ291bnQpLAogICAgICAgICBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKSwKLSAgICAgICAgdGhpcywgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJl
Z2lzdGVycyk7CisgICAgICAgIHRoaXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdp
c3RlcnMsIG1fbnVtVmFycyk7CiAKICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVy
YXRvciBiZWdpbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgVmVjdG9yPEluc3RydWN0
aW9uPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW5zdHJ1Y3Rpb25zKCkuZW5kKCk7CkBAIC04OTAs
NiArODg5LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAg
ICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90
cmFuc2l0aW9uIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDogeworICAgICAgICAgICAgcHJpbnRQdXRC
eUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Iik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywg
bG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsIik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9nZW5lcmljOiB7
CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlf
aWRfZ2VuZXJpYyIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjgxLDggKzEyODgsNiBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgfQogfQogCi0jZW5k
aWYgLy8gIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotCiAjaWYg
RFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJQ1MKIHN0YXRpYyBIYXNoU2V0PENvZGVCbG9jayo+IGxp
dmVDb2RlQmxvY2tTZXQ7CiAjZW5kaWYKQEAgLTE0NDksNiArMTQ1NCw3IEBAIENvZGVCbG9jazo6
Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywKIHsKICAgICBzZXROdW1QYXJhbWV0ZXJzKG90
aGVyLm51bVBhcmFtZXRlcnMoKSk7CiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOworICAgIGpp
dEFmdGVyV2FybVVwKCk7CiAgICAgCiAgICAgaWYgKG90aGVyLm1fcmFyZURhdGEpIHsKICAgICAg
ICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwpAQCAtMTQ5Nyw2ICsxNTAzLDcgQEAgQ29k
ZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgIEFTU0VSVChtX3NvdXJj
ZSk7CiAgICAgCiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOworICAgIGppdEFmdGVyV2FybVVw
KCk7CiAKICNpZiBEVU1QX0NPREVfQkxPQ0tfU1RBVElTVElDUwogICAgIGxpdmVDb2RlQmxvY2tT
ZXQuYWRkKHRoaXMpOwpAQCAtMTUxNCw3ICsxNTIxLDExIEBAIENvZGVCbG9jazo6fkNvZGVCbG9j
aygpCiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJPRklMRSkKICAgICBkdW1wVmFsdWVQcm9m
aWxlcygpOwogI2VuZGlmCi0gICAgCisKKyNpZiBFTkFCTEUoTExJTlQpICAgIAorICAgIHdoaWxl
IChtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVu
ZCgpKQorICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpLT5yZW1vdmUoKTsKKyNl
bmRpZiAvLyBFTkFCTEUoTExJTlQpCiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBXZSBtYXkgYmUg
ZGVzdHJveWVkIGJlZm9yZSBhbnkgQ29kZUJsb2NrcyB0aGF0IHJlZmVyIHRvIHVzIGFyZSBkZXN0
cm95ZWQuCiAgICAgLy8gQ29uc2lkZXIgdGhhdCB0d28gQ29kZUJsb2NrcyBiZWNvbWUgdW5yZWFj
aGFibGUgYXQgdGhlIHNhbWUgdGltZS4gVGhlcmUKQEAgLTE3MjYsOCArMTczNyw1NSBAQCB2b2lk
IENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAjZWxzZQogICAgIHN0YXRpYyBj
b25zdCBib29sIHZlcmJvc2VVbmxpbmtpbmcgPSBmYWxzZTsKICNlbmRpZgotI2VuZGlmCisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKICAgICAKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW50ZXJwcmV0
ZXIqIGludGVycHJldGVyID0gbV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlcjsKKyAgICBpZiAoIWlu
dGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgewor
ICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygp
W21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgc3dpdGNoIChp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpKSB7Cisg
ICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkOgorICAgICAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0
XS51LnN0cnVjdHVyZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAg
ICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kID0gMDsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
OgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAg
ICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0
dXJlLmdldCgpKQorICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0
cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgSGVh
cDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9u
WzRdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25b
Nl0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3
XS51LnN0cnVjdHVyZUNoYWluLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rp
b25bMF0udS5vcGNvZGUgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgp
LCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cklu
c3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tp
XV07CisgICAgICAgICAgICBBU1NFUlQoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3Ry
dWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbAorICAgICAgICAgICAgICAg
ICAgIHx8IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29k
ZSkgPT0gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CisgICAgICAgICAgICBpZiAoSGVhcDo6
aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1
cmUuY2xlYXIoKTsKKyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9IDA7
CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGxpbnRDYWxs
TGlua0luZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAobV9sbGludENhbGxMaW5r
SW5mb3NbaV0uaXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQobV9sbGludENhbGxMaW5rSW5m
b3NbaV0uY2FsbGVlLmdldCgpKSkgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5r
aW5nKQorICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IGNhbGwgZnJv
bSAlcC5cbiIsIHRoaXMpOworICAgICAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ld
LnVubGluaygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKKwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8vIENoZWNrIGlmIHdlJ3Jl
IG5vdCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAgICAgaWYgKCEoc2hvdWxkSW1t
ZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBtX2RmZ0RhdGEtPmxpdmVuZXNz
SGFzQmVlblByb3ZlZCkpIHsKQEAgLTE4NDgsMTAgKzE5MDYsMTIgQEAgdm9pZCBDb2RlQmxvY2s6
OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9m
dW5jdGlvbkRlY2xzLnNpemUoKTsgKytpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9mdW5j
dGlvbkRlY2xzW2ldKTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCi0gICAgZm9yIChzaXplX3Qg
c2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNp
emU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMo
KVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7Ci0gICAgZm9yIChzaXplX3Qgc2l6
ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsg
KytpKQotICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21f
Z2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIGlmIChtX2dsb2JhbERhdGEtPmlu
dGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAg
ICAgICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0g
bV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kp
CisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21f
Z2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIH0KICNlbmRpZgogCiAjaWYgRU5B
QkxFKERGR19KSVQpCkBAIC0yMDYwLDYgKzIxMjAsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlu
a0NhbGxzKCkKIHsKICAgICBpZiAoISFtX2FsdGVybmF0aXZlKQogICAgICAgICBtX2FsdGVybmF0
aXZlLT51bmxpbmtDYWxscygpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlm
IChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpKQorICAgICAgICAgICAgbV9sbGlu
dENhbGxMaW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgfQorI2VuZGlmCiAgICAgaWYgKCEobV9j
YWxsTGlua0luZm9zLnNpemUoKSB8fCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKQEAgLTIw
NzQsMTAgKzIxNDAsMzUgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIAogdm9pZCBD
b2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMoKQogeworICAgIHdoaWxlIChtX2luY29taW5n
TExJbnRDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQorICAgICAg
ICBtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpLT51bmxpbmsoKTsKICAgICBSZXBhdGNoQnVm
ZmVyIHJlcGF0Y2hCdWZmZXIodGhpcyk7CiAgICAgd2hpbGUgKG1faW5jb21pbmdDYWxscy5iZWdp
bigpICE9IG1faW5jb21pbmdDYWxscy5lbmQoKSkKICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLmJl
Z2luKCktPnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKIH0KKwordW5zaWdu
ZWQgQ29kZUJsb2NrOjpieXRlY29kZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMsIFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcykKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKHJldHVy
bkFkZHJlc3MudmFsdWUoKSA+PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9iZWdpbikKKyAg
ICAgICAgJiYgcmV0dXJuQWRkcmVzcy52YWx1ZSgpIDw9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X2VuZCkpIHsKKyAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAgICAgICAg
QVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpID09IHRoaXMpOworICAgICAgICBBU1NFUlQoSklUQ29k
ZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CisgICAgICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiA9IGV4ZWMtPmN1cnJlbnRWUEMoKTsKKyAgICAgICAgQVNTRVJUKGluc3RydWN0
aW9uKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uKTsKKyAgICB9
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyNlbmRpZgorICAgIGlmICghbV9yYXJl
RGF0YSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5
dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRl
eFZlY3RvcjsKKyAgICBpZiAoIWNhbGxJbmRpY2VzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIDE7
CisgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNl
dCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNh
bGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFs
dWUoKSkpLT5ieXRlY29kZU9mZnNldDsKK30KICNlbmRpZgogCiB2b2lkIENvZGVCbG9jazo6Y2xl
YXJFdmFsQ2FjaGUoKQpAQCAtMjE3MywyNCArMjI2NCw0NSBAQCBib29sIEZ1bmN0aW9uQ29kZUJs
b2NrOjpjYW5Db21waWxlV2l0aERGCiAKIHZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6amV0dGlzb24o
KQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwor
ICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAg
QVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4
ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xv
YmFsRGF0YSgpKTsKIH0KIAogdm9pZCBFdmFsQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAg
QVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJU
KEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhp
cyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93
bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwog
fQogCiB2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdl
dEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6
OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBs
YWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4
ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZUZvcigqZ2xvYmFsRGF0YSgpLCBtX2lz
Q29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOwogfQorCit2b2lk
IFByb2dyYW1Db2RlQmxvY2s6OmppdENvbXBpbGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEFT
U0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNT
RVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1
dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZXhlYyk7Cit9CisKK3ZvaWQg
RXZhbENvZGVCbG9jazo6aml0Q29tcGlsZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQVNTRVJU
KGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQo
dGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+
KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShleGVjKTsKK30KKwordm9pZCBGdW5jdGlv
bkNvZGVCbG9jazo6aml0Q29tcGlsZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgQVNTRVJUKGdl
dEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhp
cyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
Pihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGVGb3IoZXhlYywgbV9pc0NvbnN0cnVjdG9y
ID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKK30KICNlbmRpZgogCiAjaWYgRU5B
QkxFKFZBTFVFX1BST0ZJTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTA1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAj
aWZuZGVmIENvZGVCbG9ja19oCiAjZGVmaW5lIENvZGVCbG9ja19oCiAKKyNpbmNsdWRlICJCeXRl
Y29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAi
Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2lu
LmgiCkBAIC01MCw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSklUV3JpdGVCYXJyaWVyLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRl
ICJMTEludENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAi
Tm9kZXMuaCIKICNpbmNsdWRlICJQcmVkaWN0aW9uVHJhY2tlci5oIgpAQCAtNjUsMTYgKzY3LDEx
IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZv
LmgiCiAKLS8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhh
dmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKLS8vICAgICAg
MHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFt
ZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxl
LmguCi0vLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9t
IHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0
aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCi0vLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZG
RiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRo
ZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCi1zdGF0aWMgY29uc3QgaW50IEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKLQogbmFtZXNwYWNlIEpTQyB7CiAK
LSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFz
cyBFeGVjU3RhdGU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgaW5s
aW5lIGludCB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoaW50IGFyZ3VtZW50c1JlZ2lzdGVy
KSB7IHJldHVybiBhcmd1bWVudHNSZWdpc3RlciAtIDE7IH0KIApAQCAtODMsNiArODAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgVW5jb25kaXRpb25h
bEZpbmFsaXplciwgcHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgewogICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAg
IGVudW0gQ29weVBhcnNlZEJsb2NrVGFnIHsgQ29weVBhcnNlZEJsb2NrIH07CiAgICAgcHJvdGVj
dGVkOgpAQCAtMTIzLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgd2hp
bGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1
bHQtPmFsdGVybmF0aXZlKCk7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAgICAg
ICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7
CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRK
SVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICNlbmRp
ZgpAQCAtMTM0LDExICsxMzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMg
dm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEVf
T1BDT0RFX1NBTVBMSU5HCiAgICAgICAgIHZvaWQgZHVtcChFeGVjU3RhdGUqKSBjb25zdDsKICAg
ICAgICAgdm9pZCBwcmludFN0cnVjdHVyZXMoY29uc3QgSW5zdHJ1Y3Rpb24qKSBjb25zdDsKICAg
ICAgICAgdm9pZCBwcmludFN0cnVjdHVyZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVj
dGlvbiosIGludCBvcGVyYW5kKSBjb25zdDsKLSNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNTdHJp
Y3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KIApAQCAtMTk0LDE1ICsx
OTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJj
aDxNZXRob2RDYWxsTGlua0luZm8sIHVuc2lnbmVkLCBnZXRNZXRob2RDYWxsTGlua0luZm9CeXRl
Y29kZUluZGV4PihtX21ldGhvZENhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlu
a0luZm9zLnNpemUoKSwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIDE7Ci0gICAgICAgICAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZz
ZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOwot
ICAgICAgICAgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIDE7Ci0gICAgICAgICAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGlj
ZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0
dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OwotICAgICAgICB9CisgICAgICAg
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSosIFJldHVybkFkZHJlc3NQdHIpOwog
CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Rm9yQ2FsbEF0SW5kZXgodW5zaWduZWQg
aW5kZXgpCiAgICAgICAgIHsKQEAgLTIyMywxMSArMjExLDE3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB7CiAgICAgICAgICAgICBtX2luY29taW5nQ2FsbHMucHVzaChpbmNvbWluZyk7CiAg
ICAgICAgIH0KKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHZvaWQgbGlua0luY29taW5nQ2Fs
bChMTEludENhbGxMaW5rSW5mbyogaW5jb21pbmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
aW5jb21pbmdMTEludENhbGxzLnB1c2goaW5jb21pbmcpOworICAgICAgICB9CisjZW5kaWYgLy8g
RU5BQkxFKExMSU5UKQogICAgICAgICAKICAgICAgICAgdm9pZCB1bmxpbmtJbmNvbWluZ0NhbGxz
KCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi0jaWYgRU5BQkxFKERGR19KSVQp
CisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgdm9pZCBzZXRK
SVRDb2RlTWFwKFBhc3NPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IGppdENvZGVNYXApCiAgICAg
ICAgIHsKICAgICAgICAgICAgIG1faml0Q29kZU1hcCA9IGppdENvZGVNYXA7CkBAIC0yMzYsNyAr
MjMwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBt
X2ppdENvZGVNYXAuZ2V0KCk7CiAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAKKyNpZiBFTkFC
TEUoREZHX0pJVCkKICAgICAgICAgdm9pZCBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKQogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoISFtX2RmZ0RhdGEpCkBAIC0zMzUsMTIgKzMzMSwxMSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSU5URVJQ
UkVURVIpCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uKiByZXR1
cm5BZGRyZXNzKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocmV0dXJuQWRkcmVzcyA+
PSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICYmIHJldHVybkFkZHJlc3MgPCBpbnN0cnVjdGlvbnMo
KS5lbmQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihy
ZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgICAgIH0KLSNlbmRp
ZgogCiAgICAgICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1l
cmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1l
cmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0
aW9uKCkgeyByZXR1cm4gbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KQEAgLTM1NiwxNSAr
MzUxLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIHZvaWQgaGFuZGxl
Qnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKQogICAgICAgICB7CisjaWYgIUVOQUJMRShP
UENPREVfU0FNUExJTkcpICYmICFFTkFCTEUoTExJTlQpCisgICAgICAgICAgICBpZiAoQnl0ZWNv
ZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIGlmICghIWFsdGVybmF0aXZlKCkpCiAgICAgICAgICAgICAgICAgZGlz
Y2FyZEJ5dGVjb2RlKCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZGlzY2Fy
ZEJ5dGVjb2RlTGF0ZXIoKTsKKyNlbmRpZgogICAgICAgICB9CiAgICAgICAgIAotI2lmbmRlZiBO
REVCVUcKICAgICAgICAgYm9vbCB1c2VzT3Bjb2RlKE9wY29kZUlEKTsKLSNlbmRpZgogCiAgICAg
ICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQoKSB7IHJldHVybiBtX2luc3RydWN0aW9uQ291
bnQ7IH0KICAgICAgICAgdm9pZCBzZXRJbnN0cnVjdGlvbkNvdW50KHVuc2lnbmVkIGluc3RydWN0
aW9uQ291bnQpIHsgbV9pbnN0cnVjdGlvbkNvdW50ID0gaW5zdHJ1Y3Rpb25Db3VudDsgfQpAQCAt
Mzg3LDE3ICszODQsMTggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFibGVNZW1v
cnlIYW5kbGUqIGV4ZWN1dGFibGVNZW1vcnkoKSB7IHJldHVybiBnZXRKSVRDb2RlKCkuZ2V0RXhl
Y3V0YWJsZU1lbW9yeSgpOyB9CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRp
bWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBqZXR0aXNvbigpID0gMDsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGUoRXhl
Y1N0YXRlKikgPSAwOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpID0gMDsKICAgICAg
ICAgYm9vbCBoYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpCiAgICAgICAgIHsKLSAgICAgICAgICAg
IEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAg
ICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAg
ICAgICAgYm9vbCByZXN1bHQgPSByZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPiBnZXRKSVRU
eXBlKCk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAgICAgaWYgKHJlc3VsdCkKICAg
ICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENv
ZGU6OkRGR0pJVCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQo
cmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVwbGFjZW1lbnQo
KS0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCkg
PT0gdGhpcyk7CiAgICAgICAgICAgICB9CiAjZW5kaWYKQEAgLTQ1Niw3ICs0NTQsNiBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGNsZWFyRXZhbENhY2hlKCk7CiAKLSNpZiBFTkFC
TEUoSU5URVJQUkVURVIpCiAgICAgICAgIHZvaWQgYWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bih1bnNpZ25lZCBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKQogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCkBAIC00NjgsNiArNDY1LDEyIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0
aW9ucy5hcHBlbmQoZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKTsKICAgICAgICAgfQogICAgICAg
ICBib29sIGhhc0dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbkF0Qnl0ZWNvZGVPZmZzZXQodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgTExJbnRDYWxs
TGlua0luZm8qIGFkZExMSW50Q2FsbExpbmtJbmZvKCkKKyAgICAgICAgeworICAgICAgICAgICAg
bV9sbGludENhbGxMaW5rSW5mb3MuYXBwZW5kKExMSW50Q2FsbExpbmtJbmZvKCkpOworICAgICAg
ICAgICAgcmV0dXJuICZtX2xsaW50Q2FsbExpbmtJbmZvcy5sYXN0KCk7CisgICAgICAgIH0KICNl
bmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgc2V0TnVtYmVyT2ZTdHJ1Y3R1cmVT
dHViSW5mb3Moc2l6ZV90IHNpemUpIHsgbV9zdHJ1Y3R1cmVTdHViSW5mb3MuZ3JvdyhzaXplKTsg
fQpAQCAtNjcyLDcgKzY3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAg
Ym9vbCBhZGRGcmVxdWVudEV4aXRTaXRlKGNvbnN0IERGRzo6RnJlcXVlbnRFeGl0U2l0ZSYgc2l0
ZSkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2Rl
OjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNv
ZGUoZ2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gbV9leGl0UHJvZmlsZS5hZGQo
c2l0ZSk7CiAgICAgICAgIH0KIApAQCAtNzc3LDYgKzc4MCwyOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZyb20oQ29kZUJsb2NrKiBhbHRlcm5hdGl2
ZSk7CiAgICAgICAgIHZvaWQgY29weVBvc3RQYXJzZURhdGFGcm9tQWx0ZXJuYXRpdmUoKTsKICAg
ICAgICAgCisgICAgICAgIC8vIEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiBKSVR0aW5n
IGtpY2tzIGluLCBpbiBhIG1peGVkIG1vZGUKKyAgICAgICAgLy8gZXhlY3V0aW9uIHdvcmxkLgor
ICAgICAgICAKKyAgICAgICAgdm9pZCBkb250SklUQW55dGltZVNvb24oKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHZvaWQgaml0QWZ0ZXJXYXJtVXAoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50
RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRl
cldhcm1VcDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRTb29uKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgaW50MzJfdCBsbGludEV4ZWN1dGVDb3VudGVyKCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgfQorICAgICAgICAK
ICAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIHRpZXJlZCBjb21waWxh
dGlvbiBraWNrcyBpbi4gVGhpcwogICAgICAgICAvLyBjb250cm9scyBib3RoIHdoZW4gdGhlIG9w
dGltaXppbmcgY29tcGlsZXIgaXMgaW52b2tlZCBhbmQgd2hlbiBPU1IKICAgICAgICAgLy8gZW50
cnkgaGFwcGVucy4gVHdvIHRyaWdnZXJzIGV4aXN0OiB0aGUgbG9vcCB0cmlnZ2VyIGFuZCB0aGUg
cmV0dXJuCkBAIC05ODEsNyArMTAwNyw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IHRhbGx5RnJlcXVlbnRFeGl0U2l0ZXMoKSB7IH0KICNlbmRpZgogICAgICAgICAKLSNpZiAhZGVm
aW5lZChOREVCVUcpIHx8IEVOQUJMRShPUENPREVfU0FNUExJTkcpCiAgICAgICAgIHZvaWQgZHVt
cChFeGVjU3RhdGUqLCBjb25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYg
YmVnaW4sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJikgY29uc3Q7CiAKICAg
ICAgICAgQ1N0cmluZyByZWdpc3Rlck5hbWUoRXhlY1N0YXRlKiwgaW50IHIpIGNvbnN0OwpAQCAt
OTkxLDcgKzEwMTYsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBwcmludEdldEJ5
SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0
X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50Q2Fs
bE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3Rf
aXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRQdXRC
eUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25z
dF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKLSNlbmRpZgogICAgICAgICB2b2lk
IHZpc2l0U3RydWN0dXJlcyhTbG90VmlzaXRvciYsIEluc3RydWN0aW9uKiB2UEMpIGNvbnN0Owog
ICAgICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTEwNTIsOSArMTA3NiwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsKICAg
ICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIp
CiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsK
ICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnM7Cisj
aWYgRU5BQkxFKExMSU5UKQorICAgICAgICBTZWdtZW50ZWRWZWN0b3I8TExJbnRDYWxsTGlua0lu
Zm8sIDg+IG1fbGxpbnRDYWxsTGlua0luZm9zOworICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8
TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZv
PiA+IG1faW5jb21pbmdMTEludENhbGxzOwogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAg
ICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0cnVjdHVyZVN0dWJJbmZvczsKQEAgLTEw
NjUsOSArMTA5MSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNoZWNrOwogICAgICAgICBTZW50aW5lbExpbmtlZExp
c3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+ID4gbV9p
bmNvbWluZ0NhbGxzOwogI2VuZGlmCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERG
R19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgT3duUHRyPENvbXBhY3RKSVRDb2RlTWFw
PiBtX2ppdENvZGVNYXA7Ci0gICAgICAgIAorI2VuZGlmCisjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgICAgIHN0cnVjdCBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbiB7CiAgICAgICAgICAgICBXZWFr
UmVmZXJlbmNlVHJhbnNpdGlvbigpIHsgfQogICAgICAgICAgICAgCkBAIC0xMTMwLDEyICsxMTU3
LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93blB0cjxDb2RlQmxvY2s+IG1fYWx0
ZXJuYXRpdmU7CiAgICAgICAgIAorICAgICAgICBpbnQzMl90IG1fbGxpbnRFeGVjdXRlQ291bnRl
cjsKKyAgICAgICAgCiAgICAgICAgIGludDMyX3QgbV9qaXRFeGVjdXRlQ291bnRlcjsKICAgICAg
ICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyOwogICAgICAgICB1aW50MzJf
dCBtX3NwZWN1bGF0aXZlRmFpbENvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9vcHRpbWl6YXRp
b25EZWxheUNvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9yZW9wdGltaXphdGlvblJldHJ5Q291
bnRlcjsKLQorICAgICAgICAKICAgICAgICAgc3RydWN0IFJhcmVEYXRhIHsKICAgICAgICAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHB1YmxpYzoKQEAgLTEyMDgsNiArMTIz
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBK
U09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGpp
dENvbXBpbGUoRXhlY1N0YXRlKik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNl
bWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRp
ZgpAQCAtMTI0Miw2ICsxMjcyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNj
b3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZShFeGVjU3RhdGUqKTsKICAgICAgICAgdmlydHVhbCBD
b2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxl
V2l0aERGRygpOwogI2VuZGlmCkBAIC0xMjc5LDYgKzEzMTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6
ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpl
dHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlKEV4ZWNTdGF0ZSopOwog
ICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVh
bCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMDUyMTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0NlbGw7CiAg
ICAgY2xhc3MgU3RydWN0dXJlOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOworICAgIHN0cnVj
dCBMTEludENhbGxMaW5rSW5mbzsKIAogI2lmIEVOQUJMRShKSVQpCiAgICAgdHlwZWRlZiBNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0U3R1YlJvdXRp
bmVUeXBlOwpAQCAtMTQ1LDYgKzE0NiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAg
ICAgc3RydWN0IEluc3RydWN0aW9uIHsKKyAgICAgICAgSW5zdHJ1Y3Rpb24oKQorICAgICAgICB7
CisgICAgICAgICAgICB1LmpzQ2VsbC5jbGVhcigpOworICAgICAgICB9CisgICAgICAgIAogICAg
ICAgICBJbnN0cnVjdGlvbihPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAjaWYgIUVOQUJMRShD
T01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQpAQCAtMTgwLDYgKzE4Niw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB9CiAKICAgICAgICAgSW5zdHJ1Y3Rpb24oUHJvcGVydHlTbG90OjpHZXRW
YWx1ZUZ1bmMgZ2V0dGVyRnVuYykgeyB1LmdldHRlckZ1bmMgPSBnZXR0ZXJGdW5jOyB9CisgICAg
ICAgIAorICAgICAgICBJbnN0cnVjdGlvbihMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
KSB7IHUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZvOyB9CiAKICAgICAgICAgdW5pb24gewog
ICAgICAgICAgICAgT3Bjb2RlIG9wY29kZTsKQEAgLTE4OCw2ICsxOTYsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IHN0cnVj
dHVyZUNoYWluOwogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxKU0NlbGw+IGpzQ2VsbDsK
ICAgICAgICAgICAgIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1bmM7CisgICAg
ICAgICAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvOworICAgICAgICAgICAgdm9p
ZCogcG9pbnRlcjsKICAgICAgICAgfSB1OwogICAgICAgICAKICAgICBwcml2YXRlOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZv
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRD
YWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50Q2FsbExpbmtJ
bmZvX2gKKyNkZWZpbmUgTExJbnRDYWxsTGlua0luZm9faAorCisjaW5jbHVkZSAiSlNGdW5jdGlv
bi5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9T
ZW50aW5lbExpbmtlZExpc3QuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVj
dGlvbjsKKworc3RydWN0IExMSW50Q2FsbExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VudGlu
ZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiB7CisgICAgTExJbnRDYWxsTGlua0luZm8oKQorICAg
IHsKKyAgICB9CisgICAgCisgICAgfkxMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAgICAg
IGlmIChpc09uTGlzdCgpKQorICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgfQorICAgIAorICAg
IGJvb2wgaXNMaW5rZWQoKSB7IHJldHVybiBjYWxsZWU7IH0KKyAgICAKKyAgICB2b2lkIHVubGlu
aygpCisgICAgeworICAgICAgICBjYWxsZWUuY2xlYXIoKTsKKyAgICAgICAgbWFjaGluZUNvZGVU
YXJnZXQgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkp
CisgICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgV3JpdGVCYXJyaWVyPEpT
RnVuY3Rpb24+IGNhbGxlZTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFjaGluZUNvZGVU
YXJnZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIExMSW50Q2FsbExp
bmtJbmZvX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAko
cmV2aXNpb24gMTA1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIG1hY3JvKG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3Jv
KG9wX3B1dF9ieV9pZCwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
biwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QsIDkp
IFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCiAg
ICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9w
X3B1dF9ieV9pZF9nZW5lcmljLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkg
XApAQCAtMjAyLDYgKzIwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIGVu
dW0geyBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0lEX0VOVU0pIH0gT3Bjb2RlSUQ7CiAgICAg
I3VuZGVmIE9QQ09ERV9JRF9FTlVNCiAKKyAgICBjb25zdCBpbnQgbWF4T3Bjb2RlTGVuZ3RoID0g
OTsKICAgICBjb25zdCBpbnQgbnVtT3Bjb2RlSURzID0gb3BfZW5kICsgMTsKIAogICAgICNkZWZp
bmUgT1BDT0RFX0lEX0xFTkdUSFMoaWQsIGxlbmd0aCkgY29uc3QgaW50IGlkIyNfbGVuZ3RoID0g
bGVuZ3RoOwpAQCAtMjE4LDcgKzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGT1Jf
RUFDSF9PUENPREVfSUQoVkVSSUZZX09QQ09ERV9JRCk7CiAgICAgI3VuZGVmIFZFUklGWV9PUENP
REVfSUQKIAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJM
RShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAjaWYgQ09NUElM
RVIoUlZDVCkgfHwgQ09NUElMRVIoSU5URUwpCiAgICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CiAj
ZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDEwNTIxNikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRpb25PcHRp
bWl6ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVDaGFp
bi5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCkBA
IC0xMTYsMjYgKzExNywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBleHBlY3RlZCBieSB0aGUg
Y2FsbGVlLgogKi8KIAotI2lmbmRlZiBOREVCVUcKIHN0YXRpYyBib29sIHNfZHVtcHNHZW5lcmF0
ZWRDb2RlID0gZmFsc2U7Ci0jZW5kaWYKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6c2V0RHVt
cHNHZW5lcmF0ZWRDb2RlKGJvb2wgZHVtcHNHZW5lcmF0ZWRDb2RlKQogewotI2lmbmRlZiBOREVC
VUcKICAgICBzX2R1bXBzR2VuZXJhdGVkQ29kZSA9IGR1bXBzR2VuZXJhdGVkQ29kZTsKLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKGR1bXBzR2VuZXJhdGVkQ29kZSk7Ci0jZW5kaWYKIH0KIAogYm9v
bCBCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkKIHsKLSNpZm5kZWYgTkRF
QlVHCiAgICAgcmV0dXJuIHNfZHVtcHNHZW5lcmF0ZWRDb2RlOwotI2Vsc2UKLSAgICByZXR1cm4g
ZmFsc2U7Ci0jZW5kaWYKIH0KIAogSlNPYmplY3QqIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
ZSgpCkBAIC0xNDgsMTAgKzEzOSw4IEBAIEpTT2JqZWN0KiBCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGUoKQogCiAgICAgbV9jb2RlQmxvY2stPnNldEluc3RydWN0aW9uQ291bnQobV9jb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKHNf
ZHVtcHNHZW5lcmF0ZWRDb2RlKQogICAgICAgICBtX2NvZGVCbG9jay0+ZHVtcChtX3Njb3BlQ2hh
aW4tPmdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKTsKLSNlbmRpZgogCiAgICAgaWYgKChtX2Nv
ZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiAhbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hh
aW4oKSAmJiAhbV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSkgfHwgbV9jb2RlVHlwZSA9PSBF
dmFsQ29kZSkKICAgICAgICAgc3ltYm9sVGFibGUoKS5jbGVhcigpOwpAQCAtMTI2NCw5ICsxMjUz
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJM
RShKSVQpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVj
dGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAg
ICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygp
LnNpemUoKSk7Ci0jZW5kaWYKICAgICAgICAgZW1pdE9wY29kZShyZXF1aXJlc0R5bmFtaWNDaGVj
a3MgPyBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDE5LDkgKzE0MDYs
NyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxF
KEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVC
bG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
Ci0jZW5kaWYKICAgICBlbWl0T3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChh
ZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ2Niw5ICsxNDUxLDcgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9jb2Rl
QmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAjZW5k
aWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJl
c29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgZW1p
dE9wY29kZShyZXF1aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWlj
IDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wRHN0
LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVy
dHkpKTsKQEAgLTE0ODYsOSArMTQ2OSw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRN
ZXRob2RDaGVjaygKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlk
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHkpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQ
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYK
IAogICAgIGVtaXRPcGNvZGUob3BfZ2V0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoZHN0LT5pbmRleCgpKTsKQEAgLTE1MTMsOSArMTQ5NCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0QXIKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9j
b2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE1MzEsOSArMTUxMCw3IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnkKIAogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUo
SU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIAogICAgIGVtaXRPcGNvZGUo
b3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7
CkBAIC0xODIxLDcgKzE3OTgsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDYWxsKAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVu
YwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChj
YWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVO
QUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExM
SW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7
CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBp
Z25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgZW1pdE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQp
OwpAQCAtMTkyMyw3ICsxOTA0LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0Q29uc3QKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1
bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
Y2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hZGRM
TEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDAp
OworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlmIChkc3QgIT0g
aWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIGVtaXRPcGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0
KTsKQEAgLTIxODMsNyArMjE2OCwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdENhdGNoCiB7CiAgICAgbV91c2VzRXhjZXB0aW9ucyA9IHRydWU7CiAjaWYgRU5BQkxFKEpJ
VCkKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSGFuZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPmJp
bmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFt
aWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfY2F0Y2gpKSB9OworI2Vsc2UKICAgICBIYW5kbGVySW5m
byBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlv
bnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoLCBDb2Rl
TG9jYXRpb25MYWJlbCgpIH07CisjZW5kaWYKICNlbHNlCiAgICAgSGFuZGxlckluZm8gaW5mbyA9
IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCB9OwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNw
cAkocmV2aXNpb24gMTA1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4NDYsNyArMTg0Niw5IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgIE5FWFRfT1BD
T0RFKG9wX2dldF9ieV9pZCk7CiAgICAgICAgIH0KIAotICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZDogeworICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fbm9ybWFsOiB7CiAgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudElu
c3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdl
dChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIHVuc2lnbmVk
IGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtj
dXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kXTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTA1MjE2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTExLDYgKzExMSw4IEBAIGlubGluZSBib29sIGNhbkNvbXBpbGVPcGNvZGUoT3Bjb2RlSUQgb3AK
ICAgICBjYXNlIG9wX3B1dF9zY29wZWRfdmFyOgogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAg
IGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGly
ZWN0OgorICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgIGNhc2Ug
b3BfZ2V0X2dsb2JhbF92YXI6CiAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNl
IG9wX2ptcDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAkocmV2aXNpb24gMTA1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKICNpbmNsdWRlICJERkdSZXBh
dGNoLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkdldHRl
clNldHRlci5oIgogI2luY2x1ZGUgIklubGluZUFTTS5oIgogI2luY2x1ZGUgIkludGVycHJldGVy
LmgiCkBAIC01NjQsNDUgKzU2NSw2IEBAIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNv
bXBhcmVTdHIKICAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKLUVu
Y29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVj
U3RhdGUoRXhlY1N0YXRlKik7Ci0KLSNpZiBDUFUoWDg2XzY0KQotYXNtICgKLSIuZ2xvYmwgIiBT
WU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkco
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglcjEzKSwgJXIx
M1xuIgotICAgICJtb3YgJXIxMywgJXJkaVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JF
TE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0j
ZWxpZiBDUFUoWDg2KQotYXNtICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkg
IjoiICJcbiIKLSAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgotICAgICJtb3YgJWVkaSwgNCgl
ZXNwKVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikK
LWFzbSAoCi0iLnRleHQiICJcbiIKLSIuYWxpZ24gMiIgIlxuIgotIi5nbG9ibCAiIFNZTUJPTF9T
VFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkgIlxuIgotIi50aHVtYiIgIlxuIgotIi50aHVtYl9mdW5jICIgVEhVTUJf
RlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgImxkciByNSwgW3I1LCAjLTQwXSIg
IlxuIgotICAgICJjcHkgcjAsIHI1IiAiXG4iCi0gICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9D
QVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZW5k
aWYKLQotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVl
V2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Ci19Ci0KIHN0YXRp
YyB2b2lkKiBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgY2Fs
bGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVj
ID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5oCShyZXZpc2lvbiAxMDUyMTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEhlYXA7CitjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBNYXJrZWRCbG9jazsKIAogY2xhc3MgQWxsb2NhdGlv
blNwYWNlIHsKQEAgLTY4LDYgKzY5LDggQEAgcHVibGljOgogICAgIHZvaWQgc2hyaW5rKCk7CiAg
ICAgCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgCiAgICAgZW51bSBBbGxvY2F0aW9uRWZmb3J0IHsgQWxsb2NhdGlvbk11c3RTdWNjZWVkLCBB
bGxvY2F0aW9uQ2FuRmFpbCB9OwogICAgIAogICAgIHZvaWQqIGFsbG9jYXRlKE1hcmtlZFNwYWNl
OjpTaXplQ2xhc3MmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZp
c2lvbiAxMDUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODI5LDcgKzgyOSw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRv
Z2dsZSBzd2VlcFRvZ2cKICAgICAgICAgbV9vYmplY3RTcGFjZS5zZXRIaWdoV2F0ZXJNYXJrKG1h
eChwcm9wb3J0aW9uYWxCeXRlcywgbV9taW5CeXRlc1BlckN5Y2xlKSk7CiAgICAgfQogICAgIEpB
VkFTQ1JJUFRDT1JFX0dDX0VORCgpOwotCisgICAgCiAgICAgKCptX2FjdGl2aXR5Q2FsbGJhY2sp
KCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDEwNTIx
NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpA
QCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7
CiAgICAgY2xhc3MgSlNWYWx1ZTsKICAgICBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CisgICAg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVm
ZmVyOwogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZTsKICAgICBjbGFzcyBVU3RyaW5nOwpAQCAtMTI5
LDEwICsxMzAsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZ2V0Q29uc2VydmF0
aXZlUmVnaXN0ZXJSb290cyhIYXNoU2V0PEpTQ2VsbCo+JiByb290cyk7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBBbGxvY2F0aW9uU3BhY2U7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKICAg
ICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOworICAg
ICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHNp
emVfdCBtaW5FeHRyYUNvc3QgPSAyNTY7CiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4
RXh0cmFDb3N0ID0gMTAyNCAqIDEwMjQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDEwNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiBjbGFzcyBIZWFwOwogY2xhc3MgSlNDZWxsOwogY2xhc3MgTGl2ZU9iamVj
dEl0ZXJhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgV2Vha0dDSGFu
ZGxlOwogY2xhc3MgU2xvdFZpc2l0b3I7CiAKQEAgLTc5LDYgKzgwLDggQEAgcHVibGljOgogICAg
IHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUg
Zm9yRWFjaEJsb2NrKCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKyAgICAKICAgICAvLyBbIDMyLi4uIDI1NiBdCiAgICAgc3RhdGljIGNvbnN0
IHNpemVfdCBwcmVjaXNlU3RlcCA9IE1hcmtlZEJsb2NrOjphdG9tU2l6ZTsKICAgICBzdGF0aWMg
Y29uc3Qgc2l6ZV90IHByZWNpc2VDdXRvZmYgPSAyNTY7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAxMDUyMTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExOSw2ICsxMTksOSBAQCBuYW1lc3BhY2UgSlNDICB7CiAjaWYgRU5BQkxFKElOVEVS
UFJFVEVSKQogICAgICAgICBJbnN0cnVjdGlvbiogcmV0dXJuVlBDKCkgY29uc3QgeyByZXR1cm4g
dGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKTsgfQogI2VuZGlmCisjaWYgRU5BQkxF
KExMSU5UKQorICAgICAgICBJbnN0cnVjdGlvbiogY3VycmVudFZQQygpIGNvbnN0IHsgcmV0dXJu
IGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KHRoaXNbUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENv
dW50XS50YWcoKSk7IH0KKyNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0Q2FsbGVyRnJhbWUoQ2Fs
bEZyYW1lKiBjYWxsZXJGcmFtZSkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lz
dGVyRmlsZTo6Q2FsbGVyRnJhbWVdID0gY2FsbGVyRnJhbWU7IH0KICAgICAgICAgdm9pZCBzZXRT
Y29wZUNoYWluKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKSB7IHN0YXRpY19jYXN0PFJlZ2lz
dGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluXSA9IHNjb3BlQ2hhaW47IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAkocmV2aXNpb24gMTA1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQAogI2lu
Y2x1ZGUgIkpJVC5oIgogI2VuZGlmCiAKLSNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09U
T19XT1JLQVJPVU5EIChFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgJiYgIWRlZmlu
ZWQoX19sbHZtX18pKQorI2RlZmluZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9V
TkQgKChFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkg
JiYgIWRlZmluZWQoX19sbHZtX18pKQogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC01NDcs
MTcgKzU0Nyw0MSBAQCBJbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIoKQogewogfQogCi12b2lkIElu
dGVycHJldGVyOjppbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKQorSW50ZXJwcmV0ZXI6On5JbnRl
cnByZXRlcigpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYg
RU5BQkxFKExMSU5UKQorICAgIGlmIChtX2VuYWJsZWQpCisgICAgICAgIGRlbGV0ZVtdIG1fb3Bj
b2RlVGFibGU7CisjZW5kaWYKK30KKwordm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShMTElu
dDo6RGF0YSogbGxpbnREYXRhLCBib29sIGNhblVzZUpJVCkKK3sKKyNpZiBFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikKKyAgICAvLyBIYXZpbmcgTExJbnQgZW5hYmxlZCwgYnV0IG5v
dCBiZWluZyBhYmxlIHRvIHVzZSB0aGUgSklULCBhbmQgbm90IGhhdmluZworICAgIC8vIGEgY29t
cHV0ZWQgZ290byBpbnRlcnByZXRlciwgaXMgbm90IHN1cHBvcnRlZC4gTm90IGJlY2F1c2Ugd2Ug
Y2Fubm90CisgICAgLy8gc3VwcG9ydCBpdCwgYnV0IGJlY2F1c2UgSSBkZWNpZGVkIHRvIGRyYXcg
dGhlIGxpbmUgYXQgdGhlIG51bWJlciBvZgorICAgIC8vIHBlcm11dGF0aW9ucyBvZiBleGVjdXRp
b24gZW5naW5lcyB0aGF0IEkgd2FudGVkIHRoaXMgY29kZSB0byBncm9rLgorICAgIEFTU0VSVChj
YW5Vc2VKSVQpOworI2VuZGlmCiAgICAgaWYgKGNhblVzZUpJVCkgeworI2lmIEVOQUJMRShMTElO
VCkKKyAgICAgICAgbV9vcGNvZGVUYWJsZSA9IGxsaW50RGF0YS0+b3Bjb2RlTWFwKCk7CisgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpCisgICAgICAgICAgICBt
X29wY29kZUlEVGFibGUuYWRkKG1fb3Bjb2RlVGFibGVbaV0sIHN0YXRpY19jYXN0PE9wY29kZUlE
PihpKSk7CisjZWxzZQogICAgICAgICAvLyBJZiB0aGUgSklUIGlzIHByZXNlbnQsIGRvbid0IHVz
ZSBqdW1wIGRlc3RpbmF0aW9ucyBmb3Igb3Bjb2Rlcy4KICAgICAgICAgCiAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpIHsKICAgICAgICAgICAgIE9wY29kZSBv
cGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaSkpOwog
ICAgICAgICAgICAgbV9vcGNvZGVUYWJsZVtpXSA9IG9wY29kZTsKICAgICAgICAgfQorI2VuZGlm
CiAgICAgfSBlbHNlIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bjb2RlVGFibGUg
PSBuZXcgT3Bjb2RlW251bU9wY29kZUlEc107CisjZW5kaWYKICAgICAgICAgcHJpdmF0ZUV4ZWN1
dGUoSW5pdGlhbGl6ZUFuZFJldHVybiwgMCwgMCk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQpAQCAtNjY3LDkgKzY5MSwxMSBAQCB2b2lk
IEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtCiAKIGJvb2wgSW50ZXJwcmV0ZXI6
OmlzT3Bjb2RlKE9wY29kZSBvcGNvZGUpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJM
RShMTElOVCkKKyNpZiAhRU5BQkxFKExMSU5UKQogICAgIGlmICghbV9lbmFibGVkKQogICAgICAg
ICByZXR1cm4gb3Bjb2RlID49IDAgJiYgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KG9wY29kZSkpIDw9IG9wX2VuZDsKKyNlbmRpZgogICAgIHJldHVybiBvcGNv
ZGUgIT0gSGFzaFRyYWl0czxPcGNvZGU+OjplbXB0eVZhbHVlKCkKICAgICAgICAgJiYgIUhhc2hU
cmFpdHM8T3Bjb2RlPjo6aXNEZWxldGVkVmFsdWUob3Bjb2RlKQogICAgICAgICAmJiBtX29wY29k
ZUlEVGFibGUuY29udGFpbnMob3Bjb2RlKTsKQEAgLTcyNiwxMSArNzUyLDExIEBAIE5FVkVSX0lO
TElORSBib29sIEludGVycHJldGVyOjp1bndpbmRDYWwKICAgICAvLyBoYXZlIHRvIHN1YnRyYWN0
IDEuCiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIGlmIChjYWxs
ZXJGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQotICAgICAgICBieXRlY29kZU9mZnNl
dCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAg
ICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZy
YW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogICAgIGVsc2UKICAgICAgICAgYnl0ZWNvZGVP
ZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkp
IC0gMTsKICNlbGlmIEVOQUJMRShKSVQpCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZz
ZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJl
dHVyblBDKCkpOwogI2Vsc2UKICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNv
ZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAxOwogI2VuZGlmCkBAIC01MTcwLDEw
ICs1MTk2LDEwIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcihDYWwKICAg
ICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNh
bGxGcmFtZS0+cmV0dXJuVlBDKCkpOwogI2lmIEVOQUJMRShKSVQpCiAgICAgZWxzZQotICAgICAg
ICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZy
YW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNl
bmRpZgogI2Vsc2UKLSAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNv
ZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9IGNh
bGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLCBjYWxsRnJhbWUtPnJldHVy
blBDKCkpOwogI2VuZGlmCiAgICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVCbG9jay0+bGluZU51
bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAgc291cmNlSUQg
PSBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHJl
dmlzaW9uIDEwNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSlND
ZWxsLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5j
bHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUmVnaXN0
ZXJGaWxlLmgiCiAKQEAgLTQ1LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
RnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3MgSlNH
bG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IFByb2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNzIFNjb3Bl
Q2hhaW5Ob2RlOwpAQCAtOTAsMTkgKzkyLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgSW50ZXJwcmV0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgogICAgICAgICBJbnRlcnByZXRlcigpOworICAgICAg
ICB+SW50ZXJwcmV0ZXIoKTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgaW5pdGlhbGl6ZShib29s
IGNhblVzZUpJVCk7CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZShMTEludDo6RGF0YSosIGJvb2wg
Y2FuVXNlSklUKTsKIAogICAgICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSgpIHsgcmV0
dXJuIG1fcmVnaXN0ZXJGaWxlOyB9CiAgICAgICAgIAogICAgICAgICBPcGNvZGUgZ2V0T3Bjb2Rl
KE9wY29kZUlEIGlkKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0aWFsaXpl
ZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENP
TVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgICAgIHJl
dHVybiBtX29wY29kZVRhYmxlW2lkXTsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4gaWQ7CkBA
IC0xMTIsNyArMTE2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPcGNvZGVJRCBnZXRP
cGNvZGVJRChPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9p
bml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYg
RU5BQkxFKExMSU5UKQorICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOworICAg
ICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKKyNlbGlmIEVOQUJM
RShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2Rl
KG9wY29kZSkpOwogICAgICAgICAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNv
ZGUpKTsKQEAgLTEyMiw2ICsxMjksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBy
ZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wg
ZW5hYmxlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2VuYWJsZWQ7CisgICAg
ICAgIH0KIAogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKQEAgLTE4OSw3ICsyMDEs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlIG1fcmVnaXN0ZXJG
aWxlOwogICAgICAgICAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNp
ZiBFTkFCTEUoTExJTlQpCisgICAgICAgIE9wY29kZSogbV9vcGNvZGVUYWJsZTsgLy8gTWFwcyBP
cGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZworICAgICAgICBIYXNoTWFwPE9wY29kZSwg
T3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9y
IGRlY29tcGlsaW5nCisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKICAg
ICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2RlSURzXTsgLy8gTWFwcyBPcGNvZGVJ
RCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2Rl
SUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29t
cGlsaW5nCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9S
ZWdpc3RlckZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHJldmlzaW9uIDEwNTIxNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzks
NiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3Rz
OwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogCiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoUmVnaXN0ZXJGaWxlKTsKQEAgLTgxLDYgKzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGdyb3dTbG93Q2FzZShSZWdpc3Rl
ciopOwogICAgICAgICB2b2lkIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwogICAgICAgICB2b2lk
IGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1
cm5WYWx1ZS5oIgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSW5saW5lQVNN
LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1ZhbHVlSW5saW5lTWV0aG9k
cy5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2V4dGVy
biAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSgpOworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExf
UkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShF
eGVjU3RhdGUqKTsKKworI2lmIENQVShYODZfNjQpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9T
VFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0
Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCisg
ICAgIm1vdiAlcjEzLCAlcmRpXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElP
TihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQ
VShYODYpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxu
IgorICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4iCisgICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4i
CisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZh
bHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorYXNtICgK
KyIudGV4dCIgIlxuIgorIi5hbGlnbiAyIiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiXG4iCisiLnRodW1iIiAiXG4iCisiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BB
UkFNKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCisg
ICAgImNweSByMCwgcjUiICJcbiIKKyAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbmRpZgorCitl
eHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVy
blZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisjZGVmaW5lIEhvc3RDYWxs
UmV0dXJuVmFsdWVfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIk1hY3JvQXNz
ZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ0FMTElO
R19DT05WRU5USU9OX0lTX1NURENBTEwKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9P
UFRJT04gQ0RFQ0wKKyNlbHNlCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9O
CisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhP
U1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKK30K
KworI2VuZGlmIC8vIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMDUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsOCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dp
bGxfY2FsbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcHVzaF9zY29wZSkKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
OgogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3Bf
cHV0X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKQEAgLTQ4Nyw2
ICs0ODksOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfcG9zdF9pbmMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wcmVfZGVjKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2luYykKKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3Zh
bCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsKQpAQCAtNTI2
LDYgKzUzMCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAKIEpJVENv
ZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaykK
IHsKKyAgICBwcmludGYoIkNvbXBpbGluZyBKSVQgY29kZSFcbiIpOworICAgIAogI2lmIEVOQUJM
RShWQUxVRV9QUk9GSUxFUikKICAgICBtX2NhbkJlT3B0aW1pemVkID0gbV9jb2RlQmxvY2stPmNh
bkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKQEAgLTY5MCw3ICs2OTYsNyBAQCBKSVRDb2RlIEpJ
VDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAgICAgICAgIGluZm8uY2FsbFJldHVybkxv
Y2F0aW9uID0gbV9jb2RlQmxvY2stPnN0cnVjdHVyZVN0dWJJbmZvKG1fbWV0aG9kQ2FsbENvbXBp
bGF0aW9uSW5mb1tpXS5wcm9wZXJ0eUFjY2Vzc0luZGV4KS5jYWxsUmV0dXJuTG9jYXRpb247CiAg
ICAgfQogCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJM
RShMTElOVCkKICAgICBpZiAobV9jYW5CZU9wdGltaXplZCkgewogICAgICAgICBDb21wYWN0SklU
Q29kZU1hcDo6RW5jb2RlciBqaXRDb2RlTWFwRW5jb2RlcjsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgbV9sYWJlbHMuc2l6ZSgpOyAr
K2J5dGVjb2RlT2Zmc2V0KSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENv
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAko
cmV2aXNpb24gMTA1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEpJVENvZGUoKSB7IH0KICNlbmRpZgogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBKSVRUeXBl
IHsgSG9zdENhbGxUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OworICAgICAgICBlbnVtIEpJ
VFR5cGUgeyBOb25lLCBIb3N0Q2FsbFRodW5rLCBJbnRlcnByZXRlclRodW5rLCBCYXNlbGluZUpJ
VCwgREZHSklUIH07CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgSklUVHlwZSBib3R0b21UaWVy
SklUKCkKICAgICAgICAgewpAQCAtNjYsOCArNjYsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICByZXR1cm4gREZHSklUOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBzdGF0
aWMgYm9vbCBpc09wdGltaXppbmdKSVQoSklUVHlwZSBqaXRUeXBlKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBERkdKSVQ7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIHN0YXRpYyBib29sIGlzQmFzZWxpbmVDb2RlKEpJVFR5cGUgaml0VHlwZSkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gSW50ZXJwcmV0ZXJUaHVuayB8fCBq
aXRUeXBlID09IEJhc2VsaW5lSklUOworICAgICAgICB9CisgICAgICAgIAogI2lmIEVOQUJMRShK
SVQpCiAgICAgICAgIEpJVENvZGUoKQorICAgICAgICAgICAgOiBtX2ppdFR5cGUoTm9uZSkKICAg
ICAgICAgewogICAgICAgICB9CiAKQEAgLTc1LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICA6IG1fcmVmKHJlZikKICAgICAgICAgICAgICwgbV9qaXRUeXBlKGppdFR5cGUp
CiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChqaXRUeXBlICE9IE5vbmUpOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yICEoKSBjb25zdApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCShyZXZpc2lvbiAxMDUyMTYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMywx
NSArMzMsMjEgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkRG
R0RyaXZlci5oIgogI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMu
aCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+
CiBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShFeGVjU3RhdGUqIGV4ZWMsIE93
blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBKSVRDb2Rl
OjpKSVRUeXBlIGppdFR5cGUpCiB7CisgICAgaWYgKGppdFR5cGUgPT0gY29kZUJsb2NrLT5nZXRK
SVRUeXBlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAogICAgIGlmICghZXhlYy0+Z2xv
YmFsRGF0YSgpLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBj
b2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBp
bGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAgICAg
ICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZShleGVjLCBjb2RlQmxvY2suZ2V0KCksIGpp
dENvZGUpOwpAQCAtNTUsMTAgKzYxLDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUoRXhlYwogICAgICAgICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmV4
ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLmdldCgpKTsKICAgICB9Ci0jaWYgIUVOQUJMRShP
UENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0
ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bw
b3J0dW5pdHkoKTsKLSNlbmRpZgorICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJk
aW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwogICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtNjYsMTAg
KzY5LDE1IEBAIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEV4ZWMKIAogaW5s
aW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShFeGVjU3RhdGUqIGV4ZWMs
IE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJv
bFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAgICBp
ZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgCiAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0
YSgpOwogICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgCisgICAgY29kZUJsb2NrLT51bmxpbmtJbmNvbWluZ0NhbGxzKCk7CisgICAgCiAg
ICAgYm9vbCBkZmdDb21waWxlZCA9IGZhbHNlOwogICAgIGlmIChqaXRUeXBlID09IEpJVENvZGU6
OkRGR0pJVCkKICAgICAgICAgZGZnQ29tcGlsZWQgPSBERkc6OnRyeUNvbXBpbGVGdW5jdGlvbihl
eGVjLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CkBA
IC04NCwxMSArOTIsNyBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJp
CiAgICAgICAgIH0KICAgICAgICAgaml0Q29kZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwg
Y29kZUJsb2NrLmdldCgpLCAmaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKICAgICB9Ci0jaWYgIUVO
QUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNH
ZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJk
aW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgotICAgIAorICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0
ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUo
aml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkocmV2
aXNpb24gMTA1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBFeGNlcHRpb25IYW5kbGVyIGdl
bmVyaWNUaHJvdyhKU0dsb2JhbERhCiAKIEV4Y2VwdGlvbkhhbmRsZXIgaml0VGhyb3coSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVjU3RhdGUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBleGNlcHRp
b25WYWx1ZSwgUmV0dXJuQWRkcmVzc1B0ciBmYXVsdExvY2F0aW9uKQogewotICAgIHJldHVybiBn
ZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSwgY2FsbEZy
YW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZmF1bHRMb2NhdGlvbikpOworICAgIHJl
dHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSwg
Y2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLCBmYXVsdExv
Y2F0aW9uKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1
YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMu
Y3BwCShyZXZpc2lvbiAxMDUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3MCw0NSArMjE3MCwxMyBAQCBERUZJTkVfU1RV
Ql9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
aW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVn
aXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKLXsK
LSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkp
OwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICBDb2RlQmxvY2sq
IG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29k
ZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAgICAvLyBUaGlzIGVuc3VyZXMg
ZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50
cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhjYWxs
RnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdD
b2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJh
bWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5k
ZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
IC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVnaXN0ZXIqIHNyYyA9IGNhbGxG
cmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGNhbGxGcmFtZS0+cmVnaXN0
ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGludCBlbmQgPSAtQ2FsbEZyYW1lOjpv
ZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZvciAoaSA9IC0xOyBp
ID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07Ci0KLSAgICBlbmQgLT0gZGVs
dGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBqc1VuZGVm
aW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0
ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1lIDw9IHJlZ2lzdGVyRmlsZS0+
ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNU
SU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZS
QU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1l
LmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0Zv
cihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CisgICAg
Q2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3Io
Y2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOwogICAgIGlm
ICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxs
PHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0
ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKIApAQCAtMjIy
MSw3ICsyMTg5LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAog
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAg
IENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNr
RnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBDYWxsRnJhbWUqIG5l
d0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0
YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBpZiAoIW5ld0Nh
bGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lkKj4o
c3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVTdGFja092
ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDEwNTIxNikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgSlNJbnRlcmZhY2VKSVRfaAogI2RlZmluZSBK
U0ludGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5j
bHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmcuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIK
ICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENv
bW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2RlZmluZSBMTElOVF9FWEVDVVRJT05f
VFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFDSU5HIDAKKworI2VuZGlmIC8vIExM
SW50Q29tbW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTExJbnREYXRhLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJJbnN0cnVj
dGlvbi5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGNv
ZGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK0RhdGE6OkRhdGEo
KQorICAgIDogbV9leGNlcHRpb25JbnN0cnVjdGlvbnMobmV3IEluc3RydWN0aW9uW21heE9wY29k
ZUxlbmd0aCArIDFdKQorICAgICwgbV9vcGNvZGVNYXAobmV3IE9wY29kZVtudW1PcGNvZGVJRHNd
KQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQor
ICAgICAgICBtX2V4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lKTsKKyNkZWZpbmUg
T1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBtX29wY29kZU1hcFtvcGNvZGVdID0gYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUpOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChP
UENPREVfRU5UUlkpOworI3VuZGVmIE9QQ09ERV9FTlRSWQorfQorCitEYXRhOjp+RGF0YSgpCit7
CisgICAgZGVsZXRlW10gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgZGVsZXRlW10gbV9v
cGNvZGVNYXA7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8g
RU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RGF0YV9oCisjZGVmaW5lIExMSW50
RGF0YV9oCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExM
SW50IHsKKworI2lmIEVOQUJMRShMTElOVCkKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIERh
dGEoKTsKKyAgICB+RGF0YSgpOworICAgIAorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0
cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
OworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgfQorcHJpdmF0ZToKKyAgICBJbnN0cnVjdGlvbiogbV9l
eGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgT3Bjb2RlKiBtX29wY29kZU1hcDsKK307CisjZWxz
ZSAvLyBFTkFCTEUoTExJTlQpCisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNz
aW5nLW5vcmV0dXJuIgorI2VuZGlmCisKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIEluc3Ry
dWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK307CisKKyNpZiBDT01QSUxF
UihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorCisjZW5kaWYg
Ly8gRU5BQkxFKExMSU5UKQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlm
IC8vIExMSW50RGF0YV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEVudHJ5cG9pbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
ODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKworI2luY2x1
ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJMTElu
dFRodW5rcy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKSVRD
b2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2spCit7CisgICAg
aWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGlmIChraW5kID09IENvZGVG
b3JDYWxsKSB7CisgICAgICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1i
bGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9w
cm9sb2d1ZSkpKSk7CisgICAgICAgICAgICBhcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQo
a2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhv
c3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJl
ZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkpKSk7CisgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eV9jaGVjaykpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2Rl
KGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9y
KSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgICAgIGFyaXR5Q2hlY2sgPSBnbG9i
YWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9y
KS5jb2RlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBD
b2RlRm9yQ29uc3RydWN0KTsKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENU
SVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1
YihmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpOwor
fQorCit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklU
Q29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAg
ICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfZXZhbF9wcm9sb2d1ZSkpKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHVi
KGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cit9
CisKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
SVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgewor
ICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENU
SVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVudHJ5cG9pbnRzX2gKKyNkZWZpbmUgTExJbnRF
bnRyeXBvaW50c19oCisKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBFdmFsQ29kZUJsb2NrOworY2xhc3MgSklUQ29kZTsKK2Ns
YXNzIEpTR2xvYmFsRGF0YTsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjsKK2NsYXNzIE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjsKK2NsYXNzIFByb2dyYW1Db2RlQmxvY2s7CisKK25hbWVzcGFj
ZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQsIEpJVENvZGUmLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFy
aXR5Q2hlY2spOwordm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBKSVRDb2Rl
Jik7Cit2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsK
KworaW5saW5lIHZvaWQgZ2V0RW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEV2
YWxDb2RlQmxvY2sqLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGdldEV2YWxFbnRyeXBvaW50
KGdsb2JhbERhdGEsIGppdENvZGUpOworfQorCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvZ3JhbUNvZGVCbG9jayosIEpJVENvZGUmIGppdENv
ZGUpCit7CisgICAgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnRFbnRyeXBv
aW50c19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNl
cHRpb25zLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5o
IgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5j
bHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVk
ZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExM
SW50IHsKKwordm9pZCBpbnRlcnByZXRlclRocm93KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5U
X0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMuXG4iLCBn
bG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmlj
VGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBleGVjLT5jb2Rl
QmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZXhlYywgZXhlYy0+cmV0dXJuUEMoKSkpOworfQorCitJ
bnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5sbGludERhdGEuZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zKCk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0
ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBw
cmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAocmV0dXJuVG9UaHJvdykuXG4iLCBnbG9iYWxE
YXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3co
Z2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVC
bG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAKKyAgICByZXR1cm4gZ2xvYmFs
RGF0YS0+bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworfQorCit2b2lkKiBjYWxs
VG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hFTFBF
Ul9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKGNhbGxUb1Rocm93
KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAg
IGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBj
IC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAg
IHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFt
cG9saW5lKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmluZSBMTEludEV4
Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3Bh
Y2UgTExJbnQgeworCisvLyBKdXN0IHRocm93IHRoZSBjdXJyZW50bHkgYWN0aXZlIGV4Y2VwdGlv
biBpbiB0aGUgY29udGV4dCBvZiB0aGlzIGV4ZWMgc3RhdGUKKy8vIGFuZCBzZXQgdXAgYWxsIG5l
Y2Vzc2FyeSBzdGF0ZS4KK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvdyhFeGVjU3RhdGUqKTsKKworLy8g
VGVsbHMgeW91IHdoZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0dXJuLXRvLXRocm93
LCBhZnRlciB5b3UndmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQg
dG8gdGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhy
b3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0aGUgY3VycmVudCBQQyBpbiB0
aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlvdSBhIFBDCisvLyB0
aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4gYWR2
YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0cnVj
dGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBleGNlcHRpb24gaGFu
ZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhjZXB0aW9uIGhhbmRs
aW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhhdCBQQyB3aXRob3V0
IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVhZCBleGNlcHRpb24g
aGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5CisvLyBvdGhl
ciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1
Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxsIHRo
dW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludEV4Y2VwdGlvbnNfaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJMTEludEhlbHBlcnMuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUg
IkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkhv
c3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUg
IkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTQnl0
ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRl
ICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVj
dC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCisjaW5jbHVk
ZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKKyNkZWZpbmUgTExJTlRfT1AoaW5kZXgp
IChleGVjLT51bmNoZWNrZWRSKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorI2RlZmluZSBMTElOVF9P
UF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5vcGVyYW5kKSkKKworI2RlZmluZSBMTElO
VF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsgICAgICAgXAorICAgICAgICB1bmlvbiB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgc3RydWN0
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQq
IGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGI7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSBwYWlyOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50NjRfdCBpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IF9fcnRfdTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5hID0gZmlyc3Q7ICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5iID0gc2Vjb25kOyAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19ydF91Lmk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORF9JTVBM
KCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykKKworI2RlZmluZSBMTElOVF9USFJPVyhleGNl
cHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0ds
b2JhbERhdGEmIF9fdF9nbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOyAgICAgICAgXAor
ICAgICAgICBfX3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAg
ICAgICAgICAgXAorICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQor
CisjZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpIGRvIHsgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSB7
ICAgXAorICAgICAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORCgpIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQlJB
TkNIKG9wY29kZSwgY29uZGl0aW9uKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgYm9vbCBfX2JfY29uZGl0aW9uID0gKGNvbmRpdGlvbik7ICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9fYl9jb25kaXRpb24pICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IHBjW09QQ09E
RV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsgICAgICAgIFwKKyAgICAgICAgZWxzZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bjb2RlKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElO
VF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9f
cl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9PUCgxKSA9IF9fcl9yZXR1
cm5WYWx1ZTsgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExf
RU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RXTygoY2FsbFRhcmdldCks
IChleGVjKSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBleGNlcHRpb25U
b1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3RfZXhl
YyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJ
bnN0cnVjdGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fY3RfZ2xvYmFsRGF0YSA9IChfX2N0X2V4
ZWMpLT5nbG9iYWxEYXRhKCk7ICAgICAgXAorICAgICAgICBfX2N0X2dsb2JhbERhdGEuZXhjZXB0
aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElO
VF9DQUxMX0VORF9JTVBMKF9fY3RfZXhlYywgY2FsbFRvVGhyb3coX19jdF9leGVjLCBfX2N0X3Bj
KSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0NIRUNLX0VY
Q0VQVElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBF
eGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jY2VfcGMgPSAocGMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoX19jY2VfZXhl
Yy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
TExJTlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2NjZV9leGVjLCBf
X2NjZV9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9S
RVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgRXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMgPSAocGMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9pZCogX19jcl9jYWxs
VGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19jcl9leGVjLT5jYWxsZXJGcmFtZSgpLCBf
X2NyX3BjKTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NyX2V4ZWMsIF9fY3Jf
Y2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworZXh0
ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBl
eGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAg
IHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV1LCBvcCMldTogVHJhY2UoJWQpOiAlZDog
JWRcbiIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAor
ICAgICAgICAgICBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
LAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJvbVdoZXJlLAorICAgICAgICAgICBvcGVy
YW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQpOworICAgIExMSU5UX0VORCgp
OworfQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5k
KQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKG9wZXJhbmQpLmpzVmFsdWUoKTsK
KyAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgZGVzY3JpcHRvci5h
c0ludDY0ID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4
ZWN1dGluZyBiYyMldSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkOiAlMDh4OiUwOHgiLAorICAg
ICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAg
cGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwKKyAgICAgICAg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9w
Y29kZSksCisgICAgICAgICAgIGZyb21XaGVyZSwKKyAgICAgICAgICAgb3BlcmFuZCwKKyAgICAg
ICAgICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kLAorICAgICAgICAgICBkZXNjcmlwdG9yLmFzQml0
cy50YWcsCisgICAgICAgICAgIGRlc2NyaXB0b3IuYXNCaXRzLnBheWxvYWQpOworI2lmbmRlZiBO
REVCVUcKKyAgICBwcmludGYoIjogJXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgor
ICAgIHByaW50ZigiXG4iKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0wodHJhY2VfcHJvbG9ndWUpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiBwcm9sb2d1ZS5c
biIsIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworc3Rh
dGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hh
ciogY29tbWVudCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEpTRnVuY3Rp
b24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7
CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAl
cDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZVJlZ2lzdGVycyA9
ICV1LlxuIiwKKyAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBjb21tZW50LCBjYWxsZWUsIGV4
ZWN1dGFibGUsCisgICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAg
IHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBwcm9sb2d1ZSIsIENvZGVGb3JDYWxs
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9n
dWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUo
ZXhlYywgImNvbnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxs
KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBhcml0eSBjaGVjayIs
IENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
dHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9s
b2d1ZShleGVjLCAiY29uc3RydWN0IGFyaXR5IGNoZWNrIiwgQ29kZUZvckNvbnN0cnVjdCk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKQoreworICAgIHBy
aW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV1LCAiLAorICAgICAgICAgICBleGVjLT5jb2Rl
QmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgcGMgLSBleGVjLT5jb2RlQmxv
Y2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50
ZigiJXMsICIsIG9wY29kZU5hbWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpXSk7CisjZWxzZQorICAgIHByaW50Zigib3AjJXUsICIs
IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNv
ZGUpKTsKKyNlbmRpZgorICAgIHByaW50Zigic2NvcGUgJXBcbiIsIGV4ZWMtPnNjb3BlQ2hhaW4o
KSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJh
Y2UpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV1
LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2so
KSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGV4ZWMt
PnJldHVyblBDKCkudmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2lubGluZSBib29s
IHNob3VsZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gWW91IGNhbiBtb2RpZnkgdGhp
cyB0byB0dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0aGUgd29ybGQuCisgICAg
cmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woZW50cnlfb3NyKQoreworICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAg
IGV4ZWMtPmNvZGVCbG9jaygpLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRf
UkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdENv
bXBpbGUoZXhlYyk7CisgICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdFNvb24oKTsKKyAgICBMTElO
VF9SRVRVUk5fVFdPKGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29z
cl9hcml0eUNoZWNrKQoreworICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGV4
ZWMtPmNvZGVCbG9jaygpLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVU
VVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdENvbXBp
bGUoZXhlYyk7CisgICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdFNvb24oKTsKKyAgICBMTElOVF9S
RVRVUk5fVFdPKGV4ZWMtPmNvZGVCbG9jaygpLT5nZXRKSVRDb2RlV2l0aEFyaXR5Q2hlY2soKS5l
eGVjdXRhYmxlQWRkcmVzcygpLCBleGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wobG9vcF9v
c3IpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAg
ICAKKyAgICBpZiAoIXNob3VsZEpJVChleGVjKSkgeworICAgICAgICBjb2RlQmxvY2stPmRvbnRK
SVRBbnl0aW1lU29vbigpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAg
IH0KKyAgICAKKyAgICBjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYyk7CisgICAgY29kZUJsb2Nr
LT5qaXRTb29uKCk7CisgICAgCisgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpID09
IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAKKyAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNo
aW5lT2Zmc2V0PiBtYXA7CisgICAgY29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRlY29kZShtYXAp
OworICAgIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCogbWFwcGluZyA9IGJpbmFyeVNlYXJjaDxC
eXRlY29kZUFuZE1hY2hpbmVPZmZzZXQsIHVuc2lnbmVkLCBCeXRlY29kZUFuZE1hY2hpbmVPZmZz
ZXQ6OmdldEJ5dGVjb2RlSW5kZXg+KG1hcC5iZWdpbigpLCBtYXAuc2l6ZSgpLCBwYyAtIGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgQVNTRVJUKG1hcHBpbmcpOworICAg
IEFTU0VSVChtYXBwaW5nLT5tX2J5dGVjb2RlSW5kZXggPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisgICAgCisgICAgdm9p
ZCoganVtcFRhcmdldCA9IGNvZGVCbG9jay0+Z2V0SklUQ29kZSgpLmV4ZWN1dGFibGVBZGRyZXNz
QXRPZmZzZXQobWFwcGluZy0+bV9tYWNoaW5lQ29kZU9mZnNldCk7CisgICAgQVNTRVJUKGp1bXBU
YXJnZXQpOworICAgIAorICAgIExMSU5UX1JFVFVSTl9UV08oanVtcFRhcmdldCwgZXhlYyk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpCit7CisgICAgaWYgKHNob3VsZEpJVChleGVj
KSkgeworICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+aml0Q29tcGlsZShleGVjKTsKKyAgICAg
ICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdFNvb24oKTsKKyAgICB9IGVsc2UKKyAgICAgICAgZXhl
Yy0+Y29kZUJsb2NrKCktPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKQoreworI2lmIExMSU5U
X0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDaGVja2luZyBzdGFjayBoZWlnaHQgd2l0aCBl
eGVjID0gJXAuXG4iLCBleGVjKTsKKyAgICBwcmludGYoIkNvZGVCbG9jayA9ICVwLlxuIiwgZXhl
Yy0+Y29kZUJsb2NrKCkpOworICAgIHByaW50ZigiTnVtIGNhbGxlZSByZWdpc3RlcnMgPSAldS5c
biIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgcHJpbnRm
KCJOdW0gdmFycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtVmFycyk7CisjZW5k
aWYKKyAgICBpZiAoVU5MSUtFTFkoIWV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVn
aXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1f
bnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFt
ZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93KGV4ZWMpOworICAg
ICAgICBwYyA9IHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oZXhlYyk7CisgICAgfQor
ICAgIExMSU5UX0VORF9JTVBMKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxs
X2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhz
Ojphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJl
Z2lzdGVyRmlsZSgpLCBDb2RlRm9yQ2FsbCk7CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAg
IGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCku
ZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRl
cnByZXRlclRocm93KGV4ZWMpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGJpdHdpc2VfY2Fz
dDx2b2lkKj4oMSksIGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9SRVRVUk5fVFdPKDAsIG5ld0V4
ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2sp
Cit7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNr
Rm9yKGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgp
LCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9
IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRp
b24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVy
VGhyb3coZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQq
PigxKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKK3sKKyNpZiBM
TElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ3JlYXRpbmcgYW4gYWN0aXZhdGlvbiwg
ZXhlYyA9ICVwIVxuIiwgZXhlYyk7CisjZW5kaWYKKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRp
b24gPSBKU0FjdGl2YXRpb246OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMsIHN0YXRp
Y19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1
dGFibGUoKSkpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5w
dXNoKGFjdGl2YXRpb24pKTsKKyAgICBMTElOVF9SRVRVUk4oSlNWYWx1ZShhY3RpdmF0aW9uKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQoreworICAg
IEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBleGVj
LT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFuZCkgPSBhcmd1bWVudHM7CisgICAgZXhlYy0+dW5j
aGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkgPSBh
cmd1bWVudHM7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9jcmVhdGVfdGhpcykKK3sKKyAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGFzRnVuY3Rp
b24oZXhlYy0+Y2FsbGVlKCkpOworICAgIAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBDb25z
dHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tZXRob2RU
YWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBD
b25zdHJ1Y3RUeXBlSlMpOworI2VuZGlmCisgICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7
CisgICAgSlNWYWx1ZSBwcm90byA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAocHJv
dG8uaXNPYmplY3QoKSkKKyAgICAgICAgc3RydWN0dXJlID0gYXNPYmplY3QocHJvdG8pLT5pbmhl
cml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGVsc2UKKyAgICAgICAgc3RydWN0dXJl
ID0gY29uc3RydWN0b3ItPnNjb3BlKCktPmdsb2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1
cmUoKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywg
c3RydWN0dXJlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMp
Cit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQo
djEuaXNQcmltaXRpdmUoKSk7CisgICAgTExJTlRfUkVUVVJOKHYxLnRvVGhpc09iamVjdChleGVj
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfb2JqZWN0KQoreworICAgIExM
SU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFy
cmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4oJkxMSU5UX09QKDIpKSwgcGNbM10udS5v
cGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVy
KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RBcnJheShleGVjLCBleGVjLT5jb2RlQmxv
Y2soKS0+Y29uc3RhbnRCdWZmZXIocGNbMl0udS5vcGVyYW5kKSwgcGNbM10udS5vcGVyYW5kKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfcmVnZXhwKQoreworICAgIFJlZ0V4
cCogcmVnRXhwID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlZ2V4cChwY1syXS51Lm9wZXJhbmQpOwor
ICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVN5
bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIGZsYWcgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVj
dG9yLiIpKTsKKyAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2JqZWN0OjpjcmVhdGUoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4cCkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbm90KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUxMSU5U
X09QX0MoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpl
cXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVl
OjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEp
Cit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhl
YywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVz
c2VxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8dHJ1ZT4oZXhlYywg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcikKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKGpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Z3JlYXRlcmVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8ZmFsc2U+
KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSArIDEp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9kZWMpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAtIDEp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKQoreworICAgIGRvdWJs
ZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJ
TlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQgKyAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYykKK3sK
KyAgICBkb3VibGUgcmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
OworICAgIExMSU5UX09QKDIpID0ganNOdW1iZXIocmVzdWx0IC0gMSk7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKHJlc3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9f
anNudW1iZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZWdhdGUpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKC1MTElOVF9PUCgyKS5qc1ZhbHVl
KCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2FkZCkK
K3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1
ZSB2MiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorI2lmIExMSU5UX0hFTFBFUl9U
UkFDSU5HCisgICAgcHJpbnRmKCJUcnlpbmcgdG8gYWRkICVzIiwgdjEuZGVzY3JpcHRpb24oKSk7
CisgICAgcHJpbnRmKCIgdG8gJXMuXG4iLCB2Mi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAg
IAorICAgIGlmICh2MS5pc1N0cmluZygpKSB7CisgICAgICAgIExMSU5UX1JFVFVSTigKKyAgICAg
ICAgICAgIHYyLmlzU3RyaW5nKCkKKyAgICAgICAgICAgID8ganNTdHJpbmcoZXhlYywgYXNTdHJp
bmcodjEpLCBhc1N0cmluZyh2MikpCisgICAgICAgICAgICA6IGpzU3RyaW5nKGV4ZWMsIGFzU3Ry
aW5nKHYxKSwgdjIudG9QcmltaXRpdmVTdHJpbmcoZXhlYykpKTsKKyAgICB9CisgICAgCisgICAg
aWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKKyAgICAgICAgTExJTlRfUkVUVVJO
KGpzTnVtYmVyKHYxLmFzTnVtYmVyKCkgKyB2Mi5hc051bWJlcigpKSk7CisgICAgCisgICAgTExJ
TlRfUkVUVVJOKGpzQWRkU2xvd0Nhc2UoZXhlYywgdjEsIHYyKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9tdWwpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICogTExJTlRfT1BfQygzKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1YikKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1i
ZXIoZXhlYykgLSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KQoreworICAgIExMSU5UX1JFVFVSTihqc051
bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAvIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9tb2QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVt
YmVyKGV4ZWMpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KQorewor
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMy
KGV4ZWMpIDw8IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
TnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Vyc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRv
VUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50
MzIoZXhlYykgJiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSB8IExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2JpdHhvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9JbnQzMihleGVjKSBeIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIo
ZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCkKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIofkxMSU5UX09QKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpCit7
CisgICAgSlNWYWx1ZSBiYXNlVmFsID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworI2lmbmRlZiBO
REVCVUcKKyAgICBUeXBlSW5mbyB0eXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VS
VCghYmFzZVZhbC5pc09iamVjdCgpCisgICAgICAgICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVj
dChiYXNlVmFsKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5j
ZSgpKTsKKyNlbmRpZgorICAgIExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4
ZWMsICJpbnN0YW5jZW9mIiwgYmFzZVZhbCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaW5zdGFuY2VvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQ
YXRoczo6b3BJbnN0YW5jZU9mU2xvdyhleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoNCkuanNWYWx1ZSgpKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKQoreworICAgIExMSU5UX1JFVFVSTihqc1R5
cGVTdHJpbmdGb3JWYWx1ZShleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKQoreworICAgIEpTVmFsdWUgdiA9
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4odi5p
c0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLmlzQm9vbGVhbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9pc19udW1iZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKS5pc051bWJlcigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9pc19zdHJpbmcpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihpc0pTU3RyaW5n
KExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaXNfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc09iamVjdFR5
cGUoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9pc19mdW5jdGlvbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5j
dGlvblR5cGUoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQ
YXRoczo6b3BJbihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKQorewor
ICAgIExMSU5UX1JFVFVSTihDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZShleGVjLCBleGVjLT5j
b2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApCit7CisgICAgTExJTlRfUkVUVVJOKAorICAg
ICAgICBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVNraXAoCisgICAgICAgICAgICBleGVjLAor
ICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5k
KSwKKyAgICAgICAgICAgIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5pc0dsb2Jh
bE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICAKKyAgICBB
U1NFUlRfVU5VU0VEKHN0cnVjdHVyZSwgc3RydWN0dXJlICE9IGdsb2JhbE9iamVjdC0+c3RydWN0
dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlm
aWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3QpOworICAg
IAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xv
dCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50
KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmICFnbG9iYWxPYmplY3Qt
PnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiBz
bG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICBwY1szXS51LnN0
cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAg
ICAgICAgIHBjWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgTExJTlRfUkVUVVJOKHJlc3VsdCk7CisgICAgfQorICAgIAorICAgIExMSU5UX1RI
Uk9XKGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSkKK3sKKyAgICBJZGVudGlmaWVyJiBp
ZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7Cisg
ICAgaWYgKHBjWzNdLnUub3BlcmFuZCkgeworICAgICAgICBKU1ZhbHVlIGJhc2UgPSBKU0M6OnJl
c29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIHRydWUpOworICAgICAg
ICBpZiAoIWJhc2UpCisgICAgICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFs
aWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgICAgICBMTElO
VF9SRVRVUk4oYmFzZSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihKU0M6OnJlc29s
dmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIGZhbHNlKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKQoreworICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIFBy
b3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5j
b2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghb2JqZWN0
LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKQorICAgICAgICBMTElOVF9USFJP
VyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJp
bmcoKSkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cmVzb2x2ZV93aXRoX2Jhc2UpCit7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0
aHM6Om9wUmVzb2x2ZVdpdGhCYXNlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVy
KHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQoreworICAgIEpTVmFs
dWUgcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVXaXRoVGhpcyhleGVjLCBleGVj
LT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7
CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlf
aWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAg
ICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJh
bmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7Cisg
ICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0g
YmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgTExJTlRfT1AoMSkgPSByZXN1bHQ7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlz
Q2VsbCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKQorICAgICAgICAmJiBzbG90LnNs
b3RCYXNlKCkgPT0gYmFzZVZhbHVlCisgICAgICAgICYmIHNsb3QuY2FjaGVkUHJvcGVydHlUeXBl
KCkgPT0gUHJvcGVydHlTbG90OjpWYWx1ZSkgeworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBi
YXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVj
dHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVy
ZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgeworICAgICAgICAgICAg
cGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEo
KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAg
IHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKK3sKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0g
Y29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFz
ZVZhbHVlKTsKKyAgICBMTElOVF9SRVRVUk4oYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xv
dCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKQoreworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYg
aWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQo
ZXhlYywgaWRlbnQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCisgICAg
ICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKSkgeworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBi
YXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVj
dHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVy
ZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKQorICAgICAgICAgICAgJiYg
YmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYg
KHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgc3RydWN0dXJlLT5wcmV2
aW91c0lEKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gc3RydWN0dXJlLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZVByb3Rv
dHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCisgICAgICAgICAgICAg
ICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAg
ICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1
cmUtPnByZXZpb3VzSUQoKSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9
IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAg
ICAgIHBjWzZdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMt
Pmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsK
KyAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5w
cm90b3R5cGVDaGFpbihleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsK
KyAgICAgICAgICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAg
ICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCksIGNoYWluKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5z
ZXQoCisgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9w
ZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKS50b09iamVjdChleGVjKTsKKyAgICBib29sIGNvdWxkRGVsZXRl
ID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwg
ZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCkpOworICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOworICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQoreworICAgIGlm
IChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgewor
ICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRP
d25Qcm9wZXJ0eShleGVjLCBhc1N0cmluZyhzdWJzY3JpcHQpLT52YWx1ZShleGVjKSkpCisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBpZiAoc3Vic2NyaXB0Lmlz
VUludDMyKCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwor
ICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSkt
PmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGJhc2VWYWx1ZSkt
PmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXko
YmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkK
KyAgICAgICAgICAgIHJldHVybiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5nZXRJbmRleChleGVj
LCBpKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGkpOwor
ICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0
cmluZyhleGVjKSk7CisgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVydHkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9S
RVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1l
bnRfYnlfdmFsKQoreworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gTExJTlRfT1AoMikuanNWYWx1
ZSgpOworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAgICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50
czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYyk7CisgICAgICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOworICAgICAgICBMTElOVF9PUCgyKSA9IGFyZ3VtZW50czsKKyAgICAgICAg
ZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVy
YW5kKSkgPSBhcmd1bWVudHM7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihnZXRCeVZh
bChleGVjLCBhcmd1bWVudHMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpCit7CisgICAgTExJTlRfUkVUVVJOKGdl
dEJ5VmFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFsKQoreworICAgIEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUg
c3Vic2NyaXB0ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0
LmlzVUludDMyKCkpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIo
KTsKKyAgICAgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUpKSB7CisgICAgICAgICAgICBKU0Fy
cmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYgKGpzQXJy
YXktPmNhblNldEluZGV4KGkpKQorICAgICAgICAgICAgICAgIGpzQXJyYXktPnNldEluZGV4KGds
b2JhbERhdGEsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBK
U0FycmF5OjpwdXRCeUluZGV4KGpzQXJyYXksIGV4ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgICAg
IExMSU5UX0VORCgpOworICAgICAgICB9CisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VW
YWx1ZSkKKyAgICAgICAgICAgICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0lu
ZGV4KGkpKSB7CisgICAgICAgICAgICBKU0J5dGVBcnJheSoganNCeXRlQXJyYXkgPSBhc0J5dGVB
cnJheShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkgeworICAg
ICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5hc0ludDMyKCkpOwor
ICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0
SW5kZXgoaSwgdmFsdWUuYXNOdW1iZXIoKSk7CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBp
LCB2YWx1ZSk7CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlm
aWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7CisgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZXhlYy0+Y29kZUJs
b2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIHByb3BlcnR5
LCB2YWx1ZSwgc2xvdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9kZWxfYnlfdmFsKQoreworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUudG9P
YmplY3QoZXhlYyk7CisgICAgCisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKTsKKyAgICAKKyAgICBib29sIGNvdWxkRGVsZXRlOworICAgIAorICAgIHVpbnQz
Ml90IGk7CisgICAgaWYgKHN1YnNjcmlwdC5nZXRVSW50MzIoaSkpCisgICAgICAgIGNvdWxkRGVs
ZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KGJh
c2VPYmplY3QsIGV4ZWMsIGkpOworICAgIGVsc2UgeworICAgICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9T
dHJpbmcoZXhlYykpOworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAg
Y291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShi
YXNlT2JqZWN0LCBleGVjLCBwcm9wZXJ0eSk7CisgICAgfQorICAgIAorICAgIGlmICghY291bGRE
ZWxldGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElO
VF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHku
IikpOworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCkKK3sKKyAgICBMTElOVF9P
UCgxKS5qc1ZhbHVlKCkucHV0KGV4ZWMsIHBjWzJdLnUub3BlcmFuZCwgTExJTlRfT1AoMykuanNW
YWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3B1dF9nZXR0ZXIpCit7CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVj
dCgpKTsKKyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFs
dWUoKSk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRp
ZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCku
aXNPYmplY3QoKSk7CisgICAgYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lR2V0dGVyKGJh
c2VPYmosIGV4ZWMsIGlkZW50LCBhc09iamVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0
ZXIpCit7CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAg
ICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7Cisg
ICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1sy
XS51Lm9wZXJhbmQpOworICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3Qo
KSk7CisgICAgYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lU2V0dGVyKGJhc2VPYmosIGV4
ZWMsIGlkZW50LCBhc09iamVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpCit7Cisg
ICAgdW5zaWduZWQgY291bnQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgU2NvcGVDaGFpbk5vZGUq
IHRtcCA9IGV4ZWMtPnNjb3BlQ2hhaW4oKTsKKyAgICB3aGlsZSAoY291bnQtLSkKKyAgICAgICAg
dG1wID0gdG1wLT5wb3AoKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKHRtcCk7CisgICAgcGMg
Kz0gcGNbMl0udS5vcGVyYW5kOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfanRydWUpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2p0cnVlLCBMTElOVF9P
UF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfamZhbHNlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZmFsc2UsICFMTElOVF9P
UF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfamxlc3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzLCBqc0xlc3M8dHJ1
ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpCit7CisgICAgTExJTlRf
QlJBTkNIKG9wX2pubGVzcywgIWpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFs
dWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2pncmVhdGVyKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlciwganNMZXNz
PGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcikKK3sKKyAg
ICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyLCAhanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNz
ZXEsIGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNz
ZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhl
YywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JS
QU5DSChvcF9qZ3JlYXRlcmVxLCBqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVy
ZXEsICFqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0
Y2hfaW1tKQoreworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1AoMykuanNWYWx1ZSgp
OworICAgIEFTU0VSVChzY3J1dGluZWUuaXNEb3VibGUoKSk7CisgICAgZG91YmxlIHZhbHVlID0g
c2NydXRpbmVlLmFzRG91YmxlKCk7CisgICAgaW50MzJfdCBpbnRWYWx1ZSA9IHN0YXRpY19jYXN0
PGludDMyX3Q+KHZhbHVlKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFu
ZDsKKyAgICBpZiAodmFsdWUgPT0gaW50VmFsdWUpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5pbW1l
ZGlhdGVTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShpbnRW
YWx1ZSwgZGVmYXVsdE9mZnNldCk7CisgICAgfSBlbHNlCisgICAgICAgIHBjICs9IGRlZmF1bHRP
ZmZzZXQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9z
d2l0Y2hfc3RyaW5nKQoreworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1AoMykuanNW
YWx1ZSgpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlm
ICghc2NydXRpbmVlLmlzU3RyaW5nKCkpCisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7Cisg
ICAgZWxzZSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2Nr
KCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKHBjWzFd
LnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoYXNTdHJpbmcoc2NydXRpbmVlKS0+dmFsdWUoZXhl
YykuaW1wbCgpLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYykKK3sKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVU
eXBlKCkgIT0gRnVuY3Rpb25Db2RlCisgICAgICAgICAgIHx8ICFjb2RlQmxvY2stPm5lZWRzRnVs
bFNjb3BlQ2hhaW4oKQorICAgICAgICAgICB8fCBleGVjLT51bmNoZWNrZWRSKGNvZGVCbG9jay0+
YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJ
TkcKKyAgICBwcmludGYoIkNyZWF0aW5nIGZ1bmN0aW9uIVxuIik7CisjZW5kaWYKKyAgICBMTElO
VF9SRVRVUk4oY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbMl0udS5vcGVyYW5kKS0+bWFrZShl
eGVjLCBleGVjLT5zY29wZUNoYWluKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X25ld19mdW5jX2V4cCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVC
bG9jaygpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1
bmN0aW9uRXhwcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBmdW5j
dGlvbi0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpOworICAgIAorICAgIGlmICghZnVu
Y3Rpb24tPm5hbWUoKS5pc051bGwoKSkgeworICAgICAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBm
dW5jdGlvblNjb3BlT2JqZWN0ID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGZ1
bmN0aW9uLT5uYW1lKCksIGZ1bmMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGZ1
bmMtPnNldFNjb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuYy0+c2NvcGUoKS0+cHVzaChmdW5j
dGlvblNjb3BlT2JqZWN0KSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihmdW5jKTsK
K30KKworc3RhdGljIEhlbHBlclJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBl
eGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2Fs
bGVyRnJhbWUoKTsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFs
RGF0YSgpOworCisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWlu
KCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKworICAgIGlmIChraW5kID09
IENvZGVGb3JDYWxsKSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgICAgICBDYWxs
VHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxlZSwgY2FsbERhdGEpOworICAgIAorICAg
ICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVKUyk7CisgICAgCisgICAgICAgIGlmIChj
YWxsVHlwZSA9PSBDYWxsVHlwZUhvc3QpIHsKKyAgICAgICAgICAgIGdsb2JhbERhdGEtPmhvc3RD
YWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9u
KGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRV
Uk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpKTsKKyAgICAgICAgfQorICAgICAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lO
RworICAgICAgICBwcmludGYoIkNhbGwgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwg
Y2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBl
ID09IENhbGxUeXBlTm9uZSk7CisgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNy
ZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgIH0KKworICAgIEFTU0VS
VChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIAorICAgIENvbnN0cnVjdERhdGEgY29u
c3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1
Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0RGF0YSk7CisgICAgCisgICAgQVNTRVJUKGNvbnN0cnVj
dFR5cGUgIT0gQ29uc3RydWN0VHlwZUpTKTsKKyAgICAKKyAgICBpZiAoY29uc3RydWN0VHlwZSA9
PSBDb25zdHJ1Y3RUeXBlSG9zdCkgeworICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVy
blZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4
ZWNDYWxsZWUpKTsKKyAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICB9Cisg
ICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAgICAgcHJpbnRmKCJDb25zdHJ1Y3Rv
ciBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7
CisjZW5kaWYKKworICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVOb25l
KTsKKyAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JF
cnJvcihleGVjLCBjYWxsZWUpKTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUgc2V0VXBD
YWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSwgTExJbnRDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbyA9IDApCit7CisgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9
IGdldEpTRnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSk7CisgICAgaWYgKCFjYWxsZWVBc0Z1bmN0aW9u
Q2VsbCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIHBjLCBjYWxs
ZWVBc1ZhbHVlLCBraW5kKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0
aW9uKGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWlu
KGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKSk7CisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFi
bGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgY29kZVB0cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CisgICAgaWYgKGV4ZWN1
dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5n
ZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgZWxzZSB7Cisg
ICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nh
c3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAgICAgIEpTT2JqZWN0KiBl
cnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVjQ2FsbGVlLCBjYWxsZWUt
PnNjb3BlKCksIGtpbmQpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBMTElOVF9D
QUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCksIHBjLCBlcnJvcik7CisgICAgICAg
IGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtp
bmQpOworICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICAgICAgaWYgKGV4ZWNDYWxsZWUt
PmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4
ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihraW5kKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJh
dGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIH0KKyAgICAKKyAgICBp
ZiAoY2FsbExpbmtJbmZvKSB7CisgICAgICAgIGlmIChjYWxsTGlua0luZm8tPmlzT25MaXN0KCkp
CisgICAgICAgICAgICBjYWxsTGlua0luZm8tPnJlbW92ZSgpOworICAgICAgICBFeGVjU3RhdGUq
IGV4ZWNDYWxsZXIgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBjYWxsTGlu
a0luZm8tPmNhbGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBleGVjQ2FsbGVyLT5j
b2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAgICAgIGNhbGxMaW5r
SW5mby0+bWFjaGluZUNvZGVUYXJnZXQgPSBjb2RlUHRyOworICAgICAgICBpZiAoY29kZUJsb2Nr
KQorICAgICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKGNhbGxMaW5rSW5mbyk7
CisgICAgfQorICAgIAorICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCBjb2Rl
UHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJuVHlwZSBn
ZW5lcmljQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQg
dXAgYSBjYWxsIGZyYW1lLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNv
bXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gSWYgcG9zc2libGUsIGxpbmsgdGhlIGNh
bGwncyBpbmxpbmUgY2FjaGUuCisgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNv
ZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCisgICAgCisgICAgSlNW
YWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4
ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAg
ZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5k
KTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNh
bGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAg
CisgICAgQVNTRVJUKHBjWzRdLnUuY2FsbExpbmtJbmZvKTsKKyAgICByZXR1cm4gc2V0VXBDYWxs
KGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCBwY1s0XS51LmNhbGxMaW5rSW5m
byk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKQoreworICAgIHJldHVybiBn
ZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfY29uc3RydWN0KQoreworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywg
Q29kZUZvckNvbnN0cnVjdCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX3Zh
cmFyZ3MpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwg
ZnJhbWUgd2hpbGUgcmVzcGVjdGluZyB0aGUgdmFyaWFibGUgYXJndW1lbnRzLgorICAgIC8vIC0g
RmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAg
IC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQg
dGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9
IGxvYWRWYXJhcmdzKAorICAgICAgICBleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJl
dGVyLT5yZWdpc3RlckZpbGUoKSwKKyAgICAgICAgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpLCBwY1s0XS51Lm9wZXJhbmQpOworICAgIExMSU5UX0NBTExf
Q0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNr
ZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxl
ZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZp
bGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BD
T0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpKTsKKyAgICAKKyAgICByZXR1cm4gc2V0VXBDYWxs
KGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpCit7CisgICAgSlNWYWx1ZSBjYWxsZWVBc1Zh
bHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0Nh
bGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFuZCk7CisgICAgZXhlY0NhbGxlZS0+
c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3Rl
ckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3Bl
Q2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRSZXR1cm5QQyhi
aXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsK
KyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CisgICAgZXhlYy0+dW5jaGVja2VkUihS
ZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+
KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX2V2YWwpKTsKKyAgICAKKyAgICBpZiAoIWlzSG9z
dEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFsKSkKKyAgICAgICAgcmV0dXJu
IHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOwor
ICAgIAorICAgIGdsb2JhbERhdGEuaG9zdENhbGxSZXR1cm5WYWx1ZSA9IGV2YWwoZXhlY0NhbGxl
ZSk7CisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCit7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVC
bG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIEpTVmFsdWUgYWN0aXZhdGlvblZh
bHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIGlmICghYWN0aXZhdGlvblZhbHVlKSB7
CisgICAgICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpIHsKKyAgICAgICAgICAg
IGlmICghZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAg
IGFzQXJndW1lbnRzKHYpLT50ZWFyT2ZmKGV4ZWMpOworICAgICAgICB9CisgICAgICAgIExMSU5U
X0VORCgpOworICAgIH0KKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRp
b24oYWN0aXZhdGlvblZhbHVlKTsKKyAgICBhY3RpdmF0aW9uLT50ZWFyT2ZmKGV4ZWMtPmdsb2Jh
bERhdGEoKSk7CisgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmll
ZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSkKKyAgICAgICAg
YXNBcmd1bWVudHModiktPmRpZFRlYXJPZmZBY3RpdmF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwg
YWN0aXZhdGlvbik7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCit7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygp
LT51c2VzQXJndW1lbnRzKCkgJiYgIWV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNo
YWluKCkpOworICAgIGFzQXJndW1lbnRzKGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3Vt
ZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSktPnRlYXJPZmYoZXhlYyk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQp
Cit7CisgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsICZMTElOVF9PUCgyKSwgcGNbM10u
dS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUp
Cit7CisgICAgTExJTlRfUkVUVVJOKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvUHJpbWl0aXZl
KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpCit7Cisg
ICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICh2LmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcGMgKz0gcGNbNV0udS5vcGVyYW5kOworICAgICAgICBM
TElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4
ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gby0+c3RydWN0dXJlKCk7CisgICAgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IHN0cnVjdHVyZS0+
ZW51bWVyYXRpb25DYWNoZSgpOworICAgIGlmICghanNQcm9wZXJ0eU5hbWVJdGVyYXRvciB8fCBq
c1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQcm90b3R5cGVDaGFpbigpICE9IHN0cnVjdHVy
ZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCisgICAgICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3Ig
PSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywgbyk7CisgICAgCisgICAgTExJ
TlRfT1AoMSkgPSBKU1ZhbHVlKGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOworICAgIExMSU5UX09Q
KDIpID0gSlNWYWx1ZShvKTsKKyAgICBMTElOVF9PUCgzKSA9IFJlZ2lzdGVyOjp3aXRoSW50KDAp
OworICAgIExMSU5UX09QKDQpID0gUmVnaXN0ZXI6OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVy
YXRvci0+c2l6ZSgpKTsKKyAgICAKKyAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFt
ZXMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4
dF9wbmFtZSkKK3sKKyAgICBKU09iamVjdCogYmFzZSA9IGFzT2JqZWN0KExMSU5UX09QKDIpLmpz
VmFsdWUoKSk7CisgICAgSlNTdHJpbmcqIHByb3BlcnR5ID0gYXNTdHJpbmcoTExJTlRfT1AoMSku
anNWYWx1ZSgpKTsKKyAgICBpZiAoYmFzZS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihl
eGVjLCBwcm9wZXJ0eS0+dmFsdWUoZXhlYykpKSkgeworICAgICAgICAvLyBHbyB0byB0YXJnZXQu
CisgICAgICAgIHBjICs9IHBjWzZdLnUub3BlcmFuZDsKKyAgICB9IC8vIEVsc2UsIGRvbid0IGNo
YW5nZSB0aGUgUEMsIHNvIHRoZSBpbnRlcnByZXRlciB3aWxsIHJlbG9vcC4KKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpCit7CisgICAg
SlNWYWx1ZSB2ID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBvID0gdi50
b09iamVjdChleGVjKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBM
TElOVF9PUCgxKSA9IG87CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWlu
KCktPnB1c2gobykpOworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcG9wX3Njb3BlKQoreworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+
c2NvcGVDaGFpbigpLT5wb3AoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBzY29wZSA9IEpTU3RhdGljU2Nv
cGVPYmplY3Q6OmNyZWF0ZShleGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVy
YW5kKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpLCBEb250RGVsZXRlKTsKKyAgICBleGVjLT5zZXRT
Y29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChzY29wZSkpOworICAgIExMSU5UX1JF
VFVSTihzY29wZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdykKK3sKKyAg
ICBMTElOVF9USFJPVyhMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpCit7CisgICAgTExJTlRfVEhST1co
Y3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9TdHJp
bmcoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKQoreworICAg
IGludCBkZWJ1Z0hvb2tJRCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZmlyc3RMaW5lID0g
cGNbMl0udS5vcGVyYW5kOworICAgIGludCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKKyAg
ICAKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRp
Y19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOwor
ICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJv
ZmlsZV93aWxsX2NhbGwpCit7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJl
bmNlKCkpLT53aWxsRXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2Fs
bCkKK3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPmRpZEV4
ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgTExJbnRIZWxwZXJzX2gKKyNkZWZpbmUgTExJbnRIZWxwZXJzX2gKKworI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsK
K3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKwordHlwZWRlZiBpbnQ2
NF90IEhlbHBlclJldHVyblR5cGU7CisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGlu
dF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwg
aW50IG9wZXJhbmQpOworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3Zh
bHVlKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQp
OworCisjZGVmaW5lIExMSU5UX0hFTFBFUl9ERUNMKG5hbWUpIFwKKyAgICBleHRlcm4gIkMiIEhl
bHBlclJldHVyblR5cGUgbGxpbnRfIyNuYW1lKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24q
IHBjKQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZSk7CitMTElOVF9IRUxQRVJf
REVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVD
TCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9E
RUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2Vf
YXJpdHlDaGVja19mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2UpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlf
b3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9hcml0eUNoZWNrKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGxvb3Bfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpOworTExJTlRf
SEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3Rf
YXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24p
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
b252ZXJ0X3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbmV3X2FycmF5X2J1ZmZlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4
cCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9lcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9zdHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVx
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9sZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJlX2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcG9zdF9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3Rf
ZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmVnYXRlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
c3ViKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX21vZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hp
ZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfYml0b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
aGVja19oYXNfaW5zdGFuY2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2Yp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZik7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfdW5kZWZpbmVkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFu
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2lzX3N0cmluZyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfaW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcmVzb2x2ZV9nbG9iYWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVf
YmFzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9nZXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNf
bGVuZ3RoKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wdXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlf
dmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1
dF9zZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFs
c2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbmxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2psZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qbmdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2NoYXIpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3N3aXRjaF9zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5j
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jYWxsX2V2YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2Zm
X2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50
cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl90b19wcmltaXRpdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFt
ZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9z
Y29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJv
d19yZWZlcmVuY2VfZXJyb3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpM
TEludAorCisjZW5kaWYgLy8gTExJbnRIZWxwZXJzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisj
ZGVmaW5lIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisKKyNpbmNsdWRlICJMTEludENvbW1vbi5o
IgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CisKKyNpZiBDUFUoWDg2KQorI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMQorI2Vsc2UKKyNkZWZp
bmUgT0ZGTElORV9BU01fWDg2IDAKKyNlbmRpZgorCisjaWYgQ1BVKEFSTXY3KQorI2RlZmluZSBP
RkZMSU5FX0FTTV9BUk12NyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCisj
ZW5kaWYKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJU
X0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMAor
I2VuZGlmCisKKyNpZiBDUFUoQklHX0VORElBTikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VO
RElBTiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDAKKyNlbmRpZgor
CisjaWYgRU5BQkxFKExMSU5UX09TUl9UT19KSVQpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9F
TkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRp
ZgorCisjaWYgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhF
Q1VUSU9OX1RSQUNJTkcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RS
QUNJTkcgMAorI2VuZGlmCisKKyNlbmRpZiAvLyBMTEludE9mZmxpbmVBc21Db25maWdfaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisKKyNpbmNsdWRlICJBbGxvY2F0aW9uU3BhY2UuaCIKKyNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSGVhcC5oIgorI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJK
U0FycmF5LmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgi
CisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU3R5cGVJbmZvLmgiCisjaW5jbHVk
ZSAiSlNWYXJpYWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUg
IkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5j
bHVkZSAiUmVnaXN0ZXJGaWxlLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorI2luY2x1ZGUg
IlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiVmFs
dWVQcm9maWxlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworI2RlZmluZSBPRkZMSU5FX0FTTV9PRkZTRVRPRihjbGF6eiwgZmllbGQpIE9C
SkVDVF9PRkZTRVRPRihjbGF6eiwgZmllbGQpCisKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
ciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkKiBkdW1teSgpOworfTsKKwor
Y29uc3QgdW5zaWduZWQqIExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKQoreworI2luY2x1
ZGUgIkxMSW50RGVzaXJlZE9mZnNldHMuaCIKKyAgICByZXR1cm4gZXh0cmFjdG9yVGFibGU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCitpbnQgbWFpbihpbnQsIGNoYXIqKikKK3sKKyAgICAv
LyBPdXQgb2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRpb24sIG1ha2Ugc3VyZSB0aGF0IExMSW50T2Zm
c2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSBpcyBsaXZlLAorICAgIC8vIGFuZCB0aGUgZXh0cmFjdG9y
VGFibGUgaXMgbGl2ZSwgdG9vLgorICAgIHByaW50ZigiJXBcbiIsIEpTQzo6TExJbnRPZmZzZXRz
RXh0cmFjdG9yOjpkdW1teSgpKTsKKyAgICByZXR1cm4gMDsKK30KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisKKyNpbmNs
dWRlICJKU0ludGVyZmFjZUpJVC5oIgorI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRl
ICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJ
bnQgeworCitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgdm9pZCAoKnRhcmdldCkoKSkKK3sKKyAgICBK
U0ludGVyZmFjZUpJVCBqaXQ7CisgICAgCisgICAgLy8gRklYTUU6IHRoZXJlJ3MgcHJvYmFibHkg
YSBiZXR0ZXIgd2F5IHRvIGRvIGl0IG9uIFg4NiwgYnV0IEknbSBub3Qgc3VyZSBJIGNhcmUuCisg
ICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZv
aWQqPih0YXJnZXQpKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICBqaXQuanVtcChKU0lu
dGVyZmFjZUpJVDo6cmVnVDApOworICAgIAorICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmds
b2JhbERhdGEsICZqaXQpOworICAgIHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsK
K30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5l
cmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1
ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5
VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9y
Q2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7
CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1
bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xv
YmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7Cit9CisK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGds
b2JhbERhdGEsIGxsaW50X2V2YWxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQor
eworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9w
cm9ncmFtX3Byb2xvZ3VlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBMTEludFRodW5rc19oCisjZGVmaW5lIExMSW50VGh1bmtzX2gK
KworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgSlNHbG9iYWxEYXRhOworCituYW1lc3BhY2UgTExJbnQgeworCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERh
dGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1
bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rp
b25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5r
R2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1F
bnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50VGh1bmtzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMzOCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjIENyYXNoIGNvdXJzZSBvbiB0aGUgbGFuZ3VhZ2Ug
dGhhdCB0aGlzIGlzIHdyaXR0ZW4gaW4gKHdoaWNoIEkganVzdCBjYWxsCisjICJhc3NlbWJseSIg
ZXZlbiB0aG91Z2ggaXQncyBtb3JlIHRoYW4gdGhhdCk6CisjCisjIC0gTW9zdGx5IGdhcy1zdHls
ZSBvcGVyYW5kIG9yZGVyaW5nLiBUaGUgbGFzdCBvcGVyYW5kIHRlbmRzIHRvIGJlIHRoZQorIyAg
IGRlc3RpbmF0aW9uLiBTbyAiYSA6PSBiIiBpcyB3cml0dGVuIGFzICJtb3YgYiwgYSIuIEJ1dCB1
bmxpa2UgZ2FzLAorIyAgIGNvbXBhcmlzb25zIGFyZSBpbi1vcmRlciwgc28gImlmIChhIDwgYiki
IGlzIHdyaXR0ZW4gYXMKKyMgICAiYmlsdCBhLCBiLCAuLi4iLgorIworIyAtICJiIiA9IGJ5dGUs
ICJoIiA9IDE2LWJpdCB3b3JkLCAiaSIgPSAzMi1iaXQgd29yZCwgInAiID0gcG9pbnRlci4KKyMg
ICBDdXJyZW50bHkgdGhpcyBpcyBqdXN0IDMyLWJpdCBzbyAiaSIgYW5kICJwIiBhcmUgaW50ZXJj
aGFuZ2VhYmxlCisjICAgZXhjZXB0IHdoZW4gYW4gb3Agc3VwcG9ydHMgb25lIGJ1dCBub3QgdGhl
IG90aGVyLgorIworIyAtIEluIGdlbmVyYWwsIHZhbGlkIG9wZXJhbmRzIGZvciBtYWNybyBpbnZv
Y2F0aW9ucyBhbmQgaW5zdHJ1Y3Rpb25zIGFyZQorIyAgIHJlZ2lzdGVycyAoZWcgInQwIiksIGFk
ZHJlc3NlcyAoZWcgIjRbdDBdIiksIGJhc2UtaW5kZXggYWRkcmVzc2VzCisjICAgKGVnICI3W3Qw
LCB0MSwgMl0iKSwgYWJzb2x1dGUgYWRkcmVzc2VzIChlZyAiMHhhMDAwMDAwMFtdIiksIG9yIGxh
YmVscworIyAgIChlZyAiX2ZvbyIgb3IgIi5mb28iKS4gTWFjcm8gaW52b2NhdGlvbnMgY2FuIGFs
c28gdGFrZSBhbm9ueW1vdXMKKyMgICBtYWNyb3MgYXMgb3BlcmFuZHMuIEluc3RydWN0aW9ucyBj
YW5ub3QgdGFrZSBhbm9ueW1vdXMgbWFjcm9zLgorIworIyAtIExhYmVscyBtdXN0IGhhdmUgbmFt
ZXMgdGhhdCBiZWdpbiB3aXRoIGVpdGhlciAiXyIgb3IgIi4iLiAgQSAiLiIgbGFiZWwKKyMgICBp
cyBsb2NhbCBhbmQgZ2V0cyByZW5hbWVkIGJlZm9yZSBjb2RlIGdlbiB0byBtaW5pbWl6ZSBuYW1l
c3BhY2UKKyMgICBwb2xsdXRpb24uIEEgIl8iIGxhYmVsIGlzIGFuIGV4dGVybiBzeW1ib2wgKGku
ZS4gIi5nbG9ibCIpLiBUaGUgIl8iCisjICAgbWF5IG9yIG1heSBub3QgYmUgcmVtb3ZlZCBkdXJp
bmcgY29kZSBnZW4gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGFzbQorIyAgIGNvbnZlbnRpb25z
IGZvciBDIG5hbWUgbWFuZ2xpbmcgb24gdGhlIHRhcmdldCBwbGF0Zm9ybSBtYW5kYXRlIGEgIl8i
CisjICAgcHJlZml4LgorIworIyAtIEEgIm1hY3JvIiBpcyBhIGxhbWJkYSBleHByZXNzaW9uLCB3
aGljaCBtYXkgYmUgZWl0aGVyIGFub255bW91cyBvcgorIyAgIG5hbWVkLiBCdXQgdGhpcyBoYXMg
Y2F2ZWF0cy4gIm1hY3JvIiBjYW4gdGFrZSB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLAorIyAgIHdo
aWNoIG1heSBiZSBtYWNyb3Mgb3IgYW55IHZhbGlkIG9wZXJhbmRzLCBidXQgaXQgY2FuIG9ubHkg
cmV0dXJuCisjICAgY29kZS4gQnV0IHlvdSBjYW4gZG8gVHVyaW5nLWNvbXBsZXRlIHRoaW5ncyB2
aWEgY29udGludWF0aW9uIHBhc3NpbmcKKyMgICBzdHlsZTogIm1hY3JvIGZvbyAoYSwgYikgYihh
KSBlbmQgZm9vKGZvbywgZm9vKSIuIEFjdHVhbGx5LCBkb24ndCBkbworIyAgIHRoYXQsIHNpbmNl
IHlvdSdsbCBqdXN0IGNyYXNoIHRoZSBhc3NlbWJsZXIuCisjCisjIC0gQW4gImlmIiBpcyBhIGNv
bmRpdGlvbmFsIG9uIHNldHRpbmdzLiBBbnkgaWRlbnRpZmllciBzdXBwbGllZCBpbiB0aGUKKyMg
ICBwcmVkaWNhdGUgb2YgYW4gImlmIiBpcyBhc3N1bWVkIHRvIGJlIGEgI2RlZmluZSB0aGF0IGlz
IGF2YWlsYWJsZQorIyAgIGR1cmluZyBjb2RlIGdlbi4gU28geW91IGNhbid0IHVzZSAiaWYiIGZv
ciBjb21wdXRhdGlvbiBpbiBhIG1hY3JvLCBidXQKKyMgICB5b3UgY2FuIHVzZSBpdCB0byBzZWxl
Y3QgZGlmZmVyZW50IHBpZWNlcyBvZiBjb2RlIGZvciBkaWZmZXJlbnQKKyMgICBwbGF0Zm9ybXMu
CisjCisjIC0gQXJndW1lbnRzIHRvIG1hY3JvcyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIHJhdGhl
ciB0aGFuIGR5bmFtaWMgc2NvcGluZy4KKyMgICBDb25zdCdzIGFsc28gZm9sbG93IGxleGljYWwg
c2NvcGluZyBhbmQgbWF5IG92ZXJyaWRlIChoaWRlKSBhcmd1bWVudHMKKyMgICBvciBvdGhlciBj
b25zdHMuIEFsbCB2YXJpYWJsZXMgKGFyZ3VtZW50cyBhbmQgY29uc3RhbnRzKSBjYW4gYmUgYm91
bmQKKyMgICB0byBvcGVyYW5kcy4gQWRkaXRpb25hbGx5LCBhcmd1bWVudHMgKGJ1dCBub3QgY29u
c3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBtYWNyb3MuCisKKworIyBUaGVzZSBkZWNsYXJh
dGlvbnMgbXVzdCBtYXRjaCBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaC4KK2NvbnN0IENhbGxG
cmFtZUhlYWRlclNpemUgPSA0OAorY29uc3QgQXJndW1lbnRDb3VudCA9IC00OAorY29uc3QgQ2Fs
bGVyRnJhbWUgPSAtNDAKK2NvbnN0IENhbGxlZSA9IC0zMgorY29uc3QgU2NvcGVDaGFpbiA9IC0y
NAorY29uc3QgUmV0dXJuUEMgPSAtMTYKK2NvbnN0IENvZGVCbG9jayA9IC04CisKK2NvbnN0IFRo
aXNBcmd1bWVudE9mZnNldCA9IC1DYWxsRnJhbWVIZWFkZXJTaXplIC0gOAorCisjIERlY2xhcmUg
c29tZSBhbGlhc2VzIGZvciB0aGUgcmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0
NAorCisjIE9mZnNldHMgbmVlZGVkIGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50
YXRpb24uCitpZiBCSUdfRU5ESUFOCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0
IFBheWxvYWRPZmZzZXQgPSA0CitlbHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNv
bnN0IFBheWxvYWRPZmZzZXQgPSAwCitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25z
dGFudHMuCitjb25zdCBJbnQzMlRhZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0
IE51bGxUYWcgPSAtMworY29uc3QgVW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAt
NQorY29uc3QgRW1wdHlWYWx1ZVRhZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNwor
Y29uc3QgTG93ZXN0VGFnID0gRGVsZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitj
b25zdCBTdHJpbmdUeXBlID0gNQorY29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFn
cyBjb25zdGFudHMuCitjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1w
bGVtZW50c0hhc0luc3RhbmNlID0gMgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5j
ZSA9IDgKKworIyBIZWFwIGFsbG9jYXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVj
dFNpemVDbGFzc0luZGV4ID0gMworCisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29u
c3QgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBl
IGNvbnN0YW50cy4KK2NvbnN0IEdsb2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2Nv
bnN0IEZ1bmN0aW9uQ29kZSA9IDIKKworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcg
d29yZCBvZiB0aGUgYXJndW1lbnQgY291bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJndW1l
bnRDb3VudCArIFRhZ09mZnNldAorCisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitj
b25zdCBWZWN0b3JTaXplT2Zmc2V0ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAor
CisjIFN0cmluZyBmbGFncy4KK2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0
aWxpdGllcworbWFjcm8gY3Jhc2goKQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBt
b3ZlIDAsIHQwCisgICAgY2FsbCB0MAorZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisg
ICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAgY3Jh
c2goKQorICAgIC5vazoKKyAgICBlbmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJl
c3NBZnRlckNhbGwoZGVzdGluYXRpb25SZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBt
b3ZlIGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBvcCBk
ZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5k
CisKK21hY3JvIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVy
KQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAgZWxz
aWYgWDg2CisgICAgICAgIHB1c2ggc291cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVy
cm9yCisgICAgZW5kCitlbmQKKworbWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRwIGFk
dmFuY2UgKiA0LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2hX
aXRoT2Zmc2V0KHBjT2Zmc2V0KQorICAgIGxzaGlmdGkgMiwgcGNPZmZzZXQKKyAgICBhZGRwIHBj
T2Zmc2V0LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNP
ZmZzZXQpCisgICAgbG9hZGkgcGNPZmZzZXQsIHQwCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zm
c2V0KHQwKQorZW5kCisKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBBcmd1
bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNy
byBjQ2FsbDIoZnVuY3Rpb24sIGFyZzEsIGFyZzIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92
ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgZWxzaWYgWDg2CisgICAgICAg
IHBva2UgYXJnMSwgMAorICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICBlbHNlCisgICAgICAgIGVy
cm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5kCisKKyMgVGhpcyBiYXJlbHkgd29y
a3MuIGFyZzMgYW5kIGFyZzQgc2hvdWxkIHByb2JhYmx5IGJlIGltbWVkaWF0ZXMuCittYWNybyBj
Q2FsbDQoZnVuY3Rpb24sIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpCisgICAgaWYgQVJNdjcKKyAg
ICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgICAgIG1vdmUg
YXJnMywgdDIKKyAgICAgICAgbW92ZSBhcmc0LCB0MworICAgIGVsc2lmIFg4NgorICAgICAgICBw
b2tlIGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisgICAgICAgIHBva2UgYXJnMywgMgor
ICAgICAgICBwb2tlIGFyZzQsIDMKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisg
ICAgY2FsbCBmdW5jdGlvbgorZW5kCisKK21hY3JvIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGND
YWxsMihoZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIK
K2VuZAorCisjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBv
cGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uCittYWNybyB0cmFjZU9wZXJhbmQoZnJv
bVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2Vfb3BlcmFuZCwgY2ZyLCBQ
QywgZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2Zy
CitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgdGhl
IHZhbHVlIG9mIGFuIG9wZXJhbmQgaW4gdGhlIGluc3RydWN0aW9uCisjIHN0cmVhbS4KK21hY3Jv
IHRyYWNlVmFsdWUoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2Vf
dmFsdWUsIGNmciwgUEMsIGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAg
IG1vdmUgdDEsIGNmcgorZW5kCisKK21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBpZiBFWEVD
VVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkKKyAgICBlbmQK
K2VuZAorCisjIENhbGwgYSBoZWxwZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3JvIGNhbGxDYWxs
SGVscGVyKGFkdmFuY2UsIGhlbHBlciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBD
LCB0MAorICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAg
Y0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBhY3Rpb24odDAp
CitlbmQKKworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikKKyAgICBjYWxs
Q2FsbEhlbHBlcigKKyAgICAgICAgYWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAorICAgICAgICBt
YWNybyAoY2FsbGVlKQorICAgICAgICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAgICAgIGRpc3Bh
dGNoQWZ0ZXJDYWxsKCkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9K
SVQoaW5jcmVtZW50LCBhY3Rpb24pCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQwCisgICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENvZGVCbG9jazo6
bV9sbGludEV4ZWN1dGVDb3VudGVyW3QwXSwgLmNvbnRpbnVlCisgICAgICAgIGFjdGlvbigpCisg
ICAgLmNvbnRpbnVlOgorICAgIGVuZAorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JM
b29wKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxLAorICAgICAgICBtYWNybyAo
KQorICAgICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0K
KyAgICAgICAgICAgIGNDYWxsMihfbGxpbnRfbG9vcF9vc3IsIGNmciwgUEMpCisgICAgICAgICAg
ICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgICAg
ICBqbXAgdDAKKyAgICAgICAgLnJlY292ZXI6CisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENv
dW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVj
a1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAg
IDEwLAorICAgICAgICBtYWNybyAoKQorICAgICAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVw
bGFjZSkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGFzc2VydE5vdENvbnN0YW50KGluZGV4
KQorICAgIGFzc2VydChtYWNybyAob2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4LCBvayBlbmQpCitlbmQKKworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJl
IGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9h
ZENvbnN0YW50T3JWYXJpYWJsZShpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRl
eCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09m
ZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGlu
ZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVn
aXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVy
ZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwg
YmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisg
ICAgbG9hZHAgVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5
bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMg
SW5kZXggYW5kIHBheWxvYWQgbWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLgorbWFjcm8gbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5k
ZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBp
bmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdGFnCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0
ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3RhZ10sIHRhZworICAgICMgVGhlcmUgaXMgYSBiaXQg
b2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRv
ICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxzaGlmdGkg
MywgaW5kZXgKKyAgICBhZGRwIGluZGV4LCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3Rh
Z10sIHBheWxvYWQKKyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnCisuZG9uZToKK2VuZAor
CittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcs
IHBheWxvYWQsIHNsb3cpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCwgLmNvbnN0YW50CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBleHBl
Y3RlZFRhZywgc2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBh
eWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZl
Y3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQg
b2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRv
ICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGJpbmVxIFRh
Z09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIGV4cGVjdGVkVGFnLCBzbG93CisgICAgbG9hZHAg
UGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisK
K21hY3JvIHdyaXRlQmFycmllcih0YWcsIHBheWxvYWQpCisgICAgIyBOb3RoaW5nIHRvIGRvIHNp
bmNlIHdlIGRvbid0IGhhdmUgYSBnZW5lcmF0aW9uYWwgb3IgaW5jcmVtZW50YWwgY29sbGVjdG9y
LgorZW5kCisKKworIyBJbmRpY2F0ZSB0aGUgYmVnaW5uaW5nIG9mIExMSW50LgorX2xsaW50X2Jl
Z2luOgorICAgIGNyYXNoKCkKKworCisjIEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVycHJldGVy
CisKK21hY3JvIGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikK
KyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0
aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxv
YWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsW3RhcmdldFJlZ2lzdGVy
XSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVC
bG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0
UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0
ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2Rl
QmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisK
K21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1bmN0aW9u
Q29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgIHN0b3JlcCBzb3VyY2VSZWdpc3Rl
ciwgQ29kZUJsb2NrW2Nmcl0KK2VuZAorCittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRl
cihzb3VyY2VSZWdpc3RlcikKKyAgICAjIE5vdGhpbmcgdG8gZG8hCitlbmQKKworIyBEbyB0aGUg
YmFyZSBtaW5pbXVtIHJlcXVpcmVkIHRvIGV4ZWN1dGUgY29kZS4gU2V0cyB1cCB0aGUgUEMsIGxl
YXZlIHRoZSBDb2RlQmxvY2sqCisjIGluIHQxLiBNYXkgYWxzbyB0cmlnZ2VyIHByb2xvZ3VlIGVu
dHJ5IE9TUi4KK21hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVy
LCBvc3JIZWxwZXIsIHRyYWNlSGVscGVyKQorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYg
d2Ugc2hvdWxkIE9TUi4KKyAgICBzdG9yZXAgdDIsIFJldHVyblBDW2Nmcl0KKyAgICBpZiBFWEVD
VVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKHRyYWNlSGVscGVyKQorICAgIGVuZAor
ICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBiYWRk
aXMgNSwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJbdDFdLCAuY29udGludWUKKyAg
ICAgICAgY0NhbGwyKG9zckhlbHBlciwgY2ZyLCBQQykKKyAgICAgICAgbW92ZSB0MSwgY2ZyCisg
ICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQy
CisgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAgICAgICBq
bXAgdDAKKyAgICAucmVjb3ZlcjoKKyAgICAgICAgY29kZUJsb2NrR2V0dGVyKHQxKQorICAgIC5j
b250aW51ZToKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tTZXR0ZXIodDEpCisgICAgCisgICAgIyBT
ZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0
MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0aW9ucyArIFZl
Y3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2Nr
IGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KKyMgTXVz
dCBjYWxsIGRpc3BhdGNoKDApIGFmdGVyIGNhbGxpbmcgdGhpcy4KK21hY3JvIGZ1bmN0aW9uSW5p
dGlhbGl6YXRpb24oKQorICAgICMgUHJvZmlsZSB0aGUgYXJndW1lbnRzLiBVbmZvcnR1bmF0ZWx5
LCB3ZSBoYXZlIG5vIGNob2ljZSBidXQgdG8gZG8gdGhpcy4KKyAgICBsb2FkaSBDb2RlQmxvY2s6
Om1fbnVtUGFyYW1ldGVyc1t0MV0sIHQwCisgICAgYnRpeiB0MCwgLmFyZ3VtZW50UHJvZmlsZURv
bmUKKyAgICBuZWdpIHQwCisgICAgbHNoaWZ0aSAzLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6
bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDFdLCB0MworLmFy
Z3VtZW50UHJvZmlsZUxvb3A6CisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zm
c2V0W2NmciwgdDBdLCB0MgorICAgIHN0b3JlaSB0MiwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMg
KyBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRz
ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBhZGRwIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQzCisg
ICAgYmFkZGlueiA4LCB0MCwgLmFyZ3VtZW50UHJvZmlsZUxvb3AKKy5hcmd1bWVudFByb2ZpbGVE
b25lOgorICAgIAorICAgICMgQ2hlY2sgc3RhY2sgaGVpZ2h0LgorICAgIGxvYWRpIENvZGVCbG9j
azo6bV9udW1DYWxsZWVSZWdpc3RlcnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxEYXRhW3QxXSwgdDIKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmludGVycHJldGVyW3Qy
XSwgdDIgICAjIEZJWE1FOiBDYW4gZ2V0IHRvIHRoZSBSZWdpc3RlckZpbGUgZnJvbSB0aGUgSklU
U3RhY2tGcmFtZQorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQwLCBjZnIsIHQwCisgICAg
YnBhZXEgSW50ZXJwcmV0ZXI6Om1fcmVnaXN0ZXJGaWxlICsgUmVnaXN0ZXJGaWxlOjptX2VuZFt0
Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSworCisgICAgIyBTdGFjayBoZWlnaHQgY2hlY2sgZmFpbGVk
IC0gbmVlZCB0byBjYWxsIGEgaGVscGVyLgorICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlZ2lzdGVy
X2ZpbGVfY2hlY2spCisuc3RhY2tIZWlnaHRPSzoKK2VuZAorCisjIEV4cGVjdHMgdGhhdCBDb2Rl
QmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgor
bWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgaGVscGVyKQorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisgICAgYmllcSB0MCwgQ29kZUJs
b2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKKyAgICBjQ2FsbDIoaGVscGVyLCBj
ZnIsIFBDKSAgICMgVGhpcyBoZWxwZXIgaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4g
bm8gZXJyb3IsIHQwICE9IDAgPT4gZXJyb3IKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBidGl6IHQw
LCAuY29udGludWUKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEK
KyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBq
bXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKy5jb250aW51ZToK
KyAgICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIFBDLCBzaW5jZSB0aGUgaGVscGVyIGNsb2JiZXJl
ZCBpdC4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9u
czo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworICAgIGptcCBk
b25lTGFiZWwKK2VuZAorCitfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShu
b3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9s
bGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQor
CisKK19sbGludF9ldmFsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJs
b2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwg
X2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVC
bG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9s
bGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKKy5mdW5jdGlvbkZvckNhbGxC
ZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKCkKKyAgICBkaXNwYXRjaCgwKQorICAg
IAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1
ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tT
ZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9m
b3JfY29uc3RydWN0KQorLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46CisgICAgZnVuY3Rpb25J
bml0aWFsaXphdGlvbigpCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVC
bG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfYXJp
dHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCisgICAgZnVuY3Rpb25B
cml0eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X2hlbHBlcl9jYWxsX2FyaXR5
Q2hlY2spCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2s6Cisg
ICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9u
Q29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2FyaXR5Q2hlY2ssIF9sbGludF90cmFj
ZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5j
dGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfbGxpbnRfaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNr
KQorCisjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9ucworCitfbGxpbnRfb3BfZW50ZXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxv
YWRpIENvZGVCbG9jazo6bV9udW1WYXJzW3QyXSwgdDIKKyAgICBidGl6IHQyLCAub3BFbnRlckRv
bmUKKyAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAKKyAgICBtb3ZlIDAsIHQxCisub3BFbnRlckxv
b3A6CisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgYnRpbnogdDIs
IC5vcEVudGVyTG9vcAorLm9wRW50ZXJEb25lOgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50
X29wX2NyZWF0ZV9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcs
IC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Ny
ZWF0ZV9hY3RpdmF0aW9uKQorLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmU6CisgICAgZGlzcGF0Y2go
MikKKworCitfbGxpbnRfb3BfaW5pdF9sYXp5X3JlZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XQorICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBcmd1bWVudHNEb25lCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCisub3BDcmVhdGVBcmd1bWVudHNE
b25lOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFjcm8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNp
emVDbGFzc0luZGV4LCBjbGFzc0luZm9PZmZzZXQsIHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNo
MSwgc2NyYXRjaDIsIHNsb3dDYXNlKQorICAgIGNvbnN0IG9mZnNldE9mTXlTaXplQ2xhc3MgPSBK
U0dsb2JhbERhdGE6OmhlYXAgKyBIZWFwOjptX29iamVjdFNwYWNlICsgQWxsb2NhdGlvblNwYWNl
OjptX21hcmtlZFNwYWNlICsgTWFya2VkU3BhY2U6Om1fcHJlY2lzZVNpemVDbGFzc2VzICsgc2l6
ZUNsYXNzSW5kZXggKiBzaXplb2YgTWFya2VkU3BhY2U6OlNpemVDbGFzcworICAgIAorICAgICMg
RklYTUU6IHdlIGNhbiBnZXQgdGhlIGdsb2JhbCBkYXRhIGluIG9uZSBsb2FkIGZyb20gdGhlIHN0
YWNrLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoMQorICAgIGxvYWRwIENvZGVC
bG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAKKyAgICAjIEdldCB0
aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4gICAgCisgICAgbG9hZHAgb2Zmc2V0T2ZNeVNp
emVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFd
LCByZXN1bHQKKyAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UKKyAgICAKKyAgICAjIFJlbW92ZSB0
aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAgICBsb2FkcCBbcmVzdWx0XSwgc2NyYXRj
aDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFj
ZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXQorCisgICAgIyBJbml0aWFsaXpl
IHRoZSBvYmplY3QuCisgICAgbG9hZHAgY2xhc3NJbmZvT2Zmc2V0W3NjcmF0Y2gxXSwgc2NyYXRj
aDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCisgICAgc3RvcmVwIHN0cnVjdHVyZSwg
SlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCisgICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX2lu
aGVyaXRvcklEW3Jlc3VsdF0KKyAgICBhZGRwIHNpemVvZiBKU09iamVjdCwgcmVzdWx0LCBzY3Jh
dGNoMQorICAgIHN0b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Jl
c3VsdF0KK2VuZAorCitfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2Fk
cCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFt0MF0sIHQyCisgICAgYnRweiB0MiwgLm9wQ3JlYXRl
VGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFz
c0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIHQyLCB0MCwgdDEs
IHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkg
Q2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wQ3JlYXRlVGhpc1Nsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV90aGlzKQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRPZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEK
KyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRf
b3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRU
aGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Ns
b3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAK
KyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQx
CisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwg
SlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MSwgdDAsIHQyLCB0MywgLm9w
TmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywg
VGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3T2JqZWN0U2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3
X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX25ld19hcnJheV9idWZmZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX25ld19yZWdleHApCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbW92
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgc3Rv
cmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9ub3Q6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0
MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBiaW5lcSB0Miwg
Qm9vbGVhblRhZywgLm9wTm90U2xvdworICAgIHhvcmkgMSwgdDMKKyAgICBzdG9yZWkgdDIsIFRh
Z09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9lcToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0
MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93
CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcs
IC5vcEVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpZXEgdDAsIHQxLCB0MAorICAg
IHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BFcVNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2VxKQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX2VxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BFcU51bGxJbW1lZGlh
dGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0Ym56IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlCisub3BFcU51bGxJbW1l
ZGlhdGU6CisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaWVxIHQxLCBVbmRlZmluZWRU
YWcsIHQxCisgICAgb3JpIHQyLCB0MQorLm9wRXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3Jl
aSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZXE6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5v
cE5lcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFTbG93CisgICAgYmliIHQyLCBM
b3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaW5lcSB0MCwg
dDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisK
Ky5vcE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lcSkKKyAgICBkaXNw
YXRjaCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5v
dENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFn
LCAub3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3Qx
XSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wTmVxTnVsbE5vdEltbWVk
aWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBjaW5lcSB0MSwgTnVsbFRhZywgdDIKKyAg
ICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIGFuZGkgdDIsIHQxCisub3BOZXFOdWxs
Tm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0Mywg
OF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRj
aCgzKQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBoZWxwZXIpCisgICAg
bG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwg
dDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywg
LnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmluZworICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFd
LCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cKKy5ub3RTdHJpbmc6
CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkK
KyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6
CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRf
b3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChs
ZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRf
aGVscGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBs
ZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9uc3RyaWN0ZXEpCisKKworX2xs
aW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xlc3NlcToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3NlcSkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcikKKyAgICBkaXNwYXRj
aCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEpCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJl
SW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYmFk
ZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5jU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9v
cF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVEZWNTbG93Cisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBic3ViaW8gMSwgdDEs
IC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0K
KyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Bvc3RfaW5j
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0
W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQ
b3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBiYWRkaW8g
MSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBz
dG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNEb25lOgorICAg
IGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9wb3N0X2RlYzoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQ
Q10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9z
dERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYnN1YmlvIDEs
IHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0RGVjRG9uZToKKyAgICBk
aXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdG9fanNudW1iZXI6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRb
UENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBiaWVx
IHQyLCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklzSW50CisgICAgYmlhZXEgdDIsIEVtcHR5VmFs
dWVUYWcsIC5vcFRvSnNudW1iZXJTbG93Cisub3BUb0pzbnVtYmVySXNJbnQ6CisgICAgc3RvcmVp
IHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb0pzbnVtYmVyU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fanNudW1iZXIpCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDIKKyAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcE5lZ2F0ZVNyY05v
dEludAorICAgIGJ0aXogdDIsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0ZVNsb3cKKyAgICBuZWdpIHQy
CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkg
dDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorLm9wTmVnYXRl
U3JjTm90SW50OgorICAgIGJpYSB0MSwgTG93ZXN0VGFnLCAub3BOZWdhdGVTbG93CisgICAgeG9y
aSAweDgwMDAwMDAwLCB0MQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisg
ICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykK
KworLm9wTmVnYXRlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmVnYXRlKQor
ICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZShpbnRlZ2VyT3Bl
cmF0aW9uQW5kU3RvcmUsIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BD
XSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQy
LCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAg
ICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MywgSW50MzJUYWcs
IC5vcDJOb3RJbnQKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBpbnRlZ2VyT3BlcmF0aW9uQW5k
U3RvcmUodDMsIHQxLCB0MCwgLnNsb3csIHQyKQorICAgIGRpc3BhdGNoKDUpCisKKy5vcDFOb3RJ
bnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90IGFuIGludCwgdGhlIHNl
Y29uZCBvcGVyYW5kIGNvdWxkIGJlIGFueXRoaW5nLgorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAu
c2xvdworICAgIGJpYiB0MywgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisgICAgYmlu
ZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDEsIGZ0MQorICAgIGptcCAub3AxTm90
SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDEsIHQzLCBmdDEKKy5v
cDFOb3RJbnRSZWFkeToKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBmaWkyZCB0MCwgdDIsIGZ0
MAorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0
MSwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3AyTm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFu
ZCBpcyBkZWZpbml0ZWx5IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGlzIGRlZmluaXRlbHkg
bm90LgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGJpYSB0MywgTG93ZXN0VGFnLCAuc2xvdwor
ICAgIGNpMmQgdDAsIGZ0MAorICAgIGZpaTJkIHQxLCB0MywgZnQxCisgICAgZG91YmxlT3BlcmF0
aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNo
KDUpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDUpCitl
bmQKKworbWFjcm8gYmluYXJ5T3AoaW50ZWdlck9wZXJhdGlvbiwgZG91YmxlT3BlcmF0aW9uLCBo
ZWxwZXIpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFn
LCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBpbnRlZ2VyT3BlcmF0aW9u
KGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZz
ZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNl
dFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIGRvdWJsZU9wZXJhdGlvbiwg
aGVscGVyKQorZW5kCisKK19sbGludF9vcF9hZGQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJhZGRpbyBsZWZ0
LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgYWRkZCBsZWZ0
LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYWRkKQorCisKK19sbGludF9vcF9t
dWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAg
ICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAg
ICAgY29uc3Qgc2NyYXRjaCA9IGludDMyVGFnICAgIyBXZSBrbm93IHRoYXQgd2UgY2FuIHJldXNl
IHRoZSBpbnQzMlRhZyByZWdpc3RlciBzaW5jZSBpdCBoYXMgYSBjb25zdGFudC4KKyAgICAgICAg
ICAgIG1vdmUgcmlnaHQsIHNjcmF0Y2gKKyAgICAgICAgICAgIGJtdWxpbyBsZWZ0LCBzY3JhdGNo
LCBzbG93CisgICAgICAgICAgICBidGlueiBzY3JhdGNoLCAuZG9uZQorICAgICAgICAgICAgYmls
dCBsZWZ0LCAwLCAuc2xvdworICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgLnNsb3cKKyAgICAg
ICAgLmRvbmU6CisgICAgICAgICAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGlu
ZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFBheWxvYWRPZmZzZXRbY2ZyLCBp
bmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIG11bGQg
bGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX211bCkKKworCitfbGxpbnRf
b3Bfc3ViOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBic3ViaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQpIHN1YmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX3N1YikKKworCitfbGxpbnRfb3BfZGl2OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxl
ZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGNpMmQgbGVmdCwgZnQwCisgICAg
ICAgICAgICBjaTJkIHJpZ2h0LCBmdDEKKyAgICAgICAgICAgIGRpdmQgZnQwLCBmdDEKKyAgICAg
ICAgICAgIGJjZDJpIGZ0MSwgcmlnaHQsIC5ub3RJbnQKKyAgICAgICAgICAgIHN0b3JlaSBpbnQz
MlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQs
IFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIGptcCAuZG9uZQorICAg
ICAgICAubm90SW50OgorICAgICAgICAgICAgc3RvcmVkIGZ0MSwgW2NmciwgaW5kZXgsIDhdCisg
ICAgICAgIC5kb25lOgorICAgICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkg
ZGl2ZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfZGl2KQorCisKK19s
bGludF9vcF9tb2Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9tb2QpCisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBiaXRPcChvcGVyYXRpb24s
IGhlbHBlciwgYWR2YW5jZSkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10s
IHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAu
c2xvdworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIK
KyAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xvdykKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtj
ZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAg
IGRpc3BhdGNoKGFkdmFuY2UpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAg
IGRpc3BhdGNoKGFkdmFuY2UpCitlbmQKKworX2xsaW50X29wX2xzaGlmdDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykg
bHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbHNoaWZ0LAor
ICAgICAgICA0KQorCisKK19sbGludF9vcF9yc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkgbGVm
dCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3JzaGlmdCwKKyAgICAgICAgNCkK
KworCitfbGxpbnRfb3BfdXJzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3Ao
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHVyc2hpZnRp
IGxlZnQsIHJpZ2h0CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAgIGVu
ZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl91cnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGlu
dF9vcF9iaXRhbmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2JpdGFuZCwKKyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0eG9yOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCBzbG93KSB4b3JpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9i
aXR4b3IsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG9yOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBvcmkg
bGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdG9yLAorICAgICAgICA1
KQorCisKK19sbGludF9vcF9iaXRub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQx
KQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDEsIDhdLCB0MworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wQml0bm90
U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQor
ICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMp
CisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2JpdG5vdCkK
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0
YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ2hl
Y2tIYXNJbnN0YW5jZVNsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5z
dGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ2hl
Y2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NoZWNrX2hh
c19pbnN0YW5jZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbnN0YW5jZW9mOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIENoZWNrIHRoYXQgYmFzZVZhbCBpbXBsZW1lbnRz
IHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9yLgorICAgICMgRklYTUU6IFRoaXMgc2hv
dWxkIGJlIGRlcHJlY2F0ZWQuCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGFzc2VydE5vdENv
bnN0YW50KHQwKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1f
dHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5z
dGFuY2UsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgCisgICAgIyBBY3R1YWxseSBkbyB0aGUgd29y
ay4KKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BJbnN0YW5jZW9mU2xv
dykKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKKyAgICBiYmIgU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcElu
c3RhbmNlb2ZTbG93CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BJbnN0YW5jZW9mU2xvdykKKyAgICAKKyAg
ICAjIFJlZ2lzdGVyIHN0YXRlOiB0MSA9IHByb3RvdHlwZSwgdDIgPSB2YWx1ZQorICAgIG1vdmUg
MSwgdDAKKy5vcEluc3RhbmNlb2ZMb29wOgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDJdLCB0MgorICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0
W3QyXSwgdDIKKyAgICBicGVxIHQyLCB0MSwgLm9wSW5zdGFuY2VvZkRvbmUKKyAgICBidGlueiB0
MiwgLm9wSW5zdGFuY2VvZkxvb3AKKworICAgIG1vdmUgMCwgdDAKKy5vcEluc3RhbmNlb2ZEb25l
OgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9y
ZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3BJ
bnN0YW5jZW9mU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW5zdGFuY2VvZikK
KyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF90eXBlb2Y6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90eXBlb2YpCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfaXNfdW5kZWZpbmVkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfdW5kZWZpbmVkKQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX2lzX2Jvb2xlYW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19ib29sZWFuKQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX2lzX251bWJlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2lzX251bWJlcikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9pc19zdHJpbmc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9pc19zdHJpbmcpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfb2Jq
ZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
aXNfb2JqZWN0KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX2Z1bmN0aW9uOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfZnVu
Y3Rpb24pCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaW46CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbikKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9yZXNvbHZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9yZXNvbHZlX3NraXA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9yZXNvbHZlX3NraXApCisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBy
ZXNvbHZlR2xvYmFsKHNsb3cpCisgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAj
IDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgorICAgICMgOFtQQ10gICBQcm9wZXJ0
eSBpZGVudGlmaWVyIGluZGV4IGluIHRoZSBjb2RlIGJsb2NrLgorICAgICMgMTJbUENdICBTdHJ1
Y3R1cmUgcG9pbnRlciwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisg
ICAgIyAxNltQQ10gIE9mZnNldCBpbiBnbG9iYWwgb2JqZWN0LCBpbml0aWFsaXplZCB0byAwIGJ5
IGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBicG5lcSB0MSwgMTJbUENdLCBzbG93CisgICAgbG9h
ZGkgMTZbUENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0s
IHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFt0MCwgdDEsIDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0
MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdCitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICByZXNvbHZlR2xvYmFsKC5vcFJlc29sdmVHbG9iYWxTbG93KQorICAgIGRp
c3BhdGNoKDUpCisKKy5vcFJlc29sdmVHbG9iYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNwYXRjaCg1KQorCisKKyMgR2l2ZXMgeW91
IHRoZSBzY29wZSBpbiB0MCwgd2hpbGUgYWxsb3dpbmcgeW91IHRvIG9wdGlvbmFsbHkgcGVyZm9y
bSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0aGUKKyMgc2NvcGVzIGFzIHRoZXkgYXJlIHRyYXZlcnNl
ZC4gc2NvcGVDaGVjaygpIGlzIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSByZWdpc3Rl
cgorIyBob2xkaW5nIHRoZSBzY29wZSwgYW5kIGEgcmVnaXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBm
b3Igc2NyYXRjaC4gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QKKyMgdXNlIHQzLCBzbyB5b3UgY2Fu
IGhvbGQgc3R1ZmYgaW4gdDMgaWYgbmVlZCBiZS4KK21hY3JvIGdldFNjb3BlKGRlQnJ1aWppbklu
ZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2FkcCBTY29wZUNoYWluICsgUGF5bG9hZE9m
ZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIKKyAgICAK
KyAgICBidGl6IHQyLCAuZG9uZQorICAgIAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQor
ICAgIGJpbmVxIENvZGVCbG9jazo6bV9jb2RlVHlwZVt0MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AK
KyAgICBidGJ6IENvZGVCbG9jazo6bV9uZWVkc0Z1bGxTY29wZUNoYWluW3QxXSwgLmxvb3AKKyAg
ICAKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEKKwor
ICAgICMgTmVlZCB0byBjb25kaXRpb25hbGx5IHNraXAgb3ZlciBvbmUgc2NvcGUuCisgICAgYmll
cSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2YXRpb24KKyAg
ICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0s
IHQwCisubm9BY3RpdmF0aW9uOgorICAgIHN1YmkgMSwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAu
ZG9uZQorLmxvb3A6CisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFp
bk5vZGU6Om5leHRbdDBdLCB0MAorICAgIHN1YmkgMSwgdDIKKyAgICBidGlueiB0MiwgLmxvb3AK
KworLmRvbmU6CitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3Bd
LCB0MworICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0aXZhdGlvblN0cnVjdHVyZVt0M10sIHQz
CisgICAgZ2V0U2NvcGUoCisgICAgICAgIDIwW1BDXSwKKyAgICAgICAgbWFjcm8gKHNjb3BlLCBz
Y3JhdGNoKQorICAgICAgICAgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFtzY29wZV0s
IHNjcmF0Y2gKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0s
IHQzLCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdworICAgICAgICBlbmQpCisgICAg
cmVzb2x2ZUdsb2JhbCgub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3cpCisgICAgZGlzcGF0Y2go
NikKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2Jh
bER5bmFtaWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2Jh
bCkKKyAgICBkaXNwYXRjaCg2KQorCisKK19sbGludF9vcF9nZXRfc2NvcGVkX3ZhcjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRb
UENdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgorICAgICMgOFtQQ10gICBJbmRleCBvZiBy
ZWdpc3RlciBpbiB0aGUgc2NvcGUuCisgICAgIyAxMltQQ10gIERlIEJydWlqaW4gaW5kZXguCisg
ICAgZ2V0U2NvcGUoMTJbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkcCBTY29wZUNoYWluTm9k
ZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVy
c1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIHQzCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2Nm
ciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGdldFNjb3BlKDhbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkK
KyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDMs
IHQyKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHdyaXRlQmFycmllcih0MywgdDIpCisgICAg
bG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJs
ZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W3Qw
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0
W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAor
ICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbdDAsIHQxLCA4XSwgdDEKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQor
ICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9i
amVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEs
IHQyLCB0MykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDIsIHQzKQor
ICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxv
YWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29s
dmVfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3Jlc29sdmVfYmFzZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9lbnN1cmVf
cHJvcGVydHlfZXhpc3RzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9yZXNvbHZlX3dpdGhfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5v
dywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVy
LCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQor
ICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUg
Z2V0X2J5X2lkIHdpbGwgY29udGludWUKKyAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBu
ZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisgICAg
IyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAg
ICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAgIGJwbmVxIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg4
KQorCisub3BHZXRCeUlkU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5
X2lkKQorICAgIGRpc3BhdGNoKDgpCisKKworX2xsaW50X29wX2dldF9hcmd1bWVudHNfbGVuZ3Ro
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0
W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcs
IC5vcEdldEFyZ3VtZW50c0xlbmd0aFNsb3cKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5
bG9hZE9mZnNldFtjZnJdLCB0MgorICAgIHN1YmkgMSwgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcs
IFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIs
IHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEFyZ3VtZW50c0xlbmd0aFNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisg
ICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFn
ZVt0MF0sIHQzCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRC
eUlkU2xvdworICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZyh0MiwgdDAsIHQyKQorICAgIHdyaXRlQmFycmllcih0MCwgdDIpCisgICAgc3RvcmVpIHQw
LCBUYWdPZmZzZXRbdDMsIHQxXQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MywgdDFd
CisgICAgZGlzcGF0Y2goOSkKKworLm9wUHV0QnlJZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3B1dF9ieV9pZCkKKyAgICBkaXNwYXRjaCg5KQorCisKK21hY3JvIHB1dEJ5SWRU
cmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRp
IDEyW1BDXSwgdDIKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1
dEJ5SWRTbG93CisgICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMsIC5vcFB1dEJ5SWRTbG93KQor
ICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3Jh
Z2VbdDBdLCB0MworICAgIGFkZHAgdDEsIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWcodDIsIHQxLCB0MikKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQyKQorICAgIHN0b3JlaSB0MSwg
VGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIDI0W1BDXSwgdDEKKyAgICBzdG9yZWkgdDIsIFBheWxv
YWRPZmZzZXRbdDNdCisgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAg
IGRpc3BhdGNoKDkpCitlbmQKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dDoKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBz
bG93KSBlbmQpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAg
ICBwdXRCeUlkVHJhbnNpdGlvbigKKyAgICAgICAgbWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRj
aCwgc2xvdykKKyAgICAgICAgICAgIGNvbnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICMg
UmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KKyAgICAgICAg
CisgICAgICAgICAgICBsb2FkcCAyOFtQQ10sIHNjcmF0Y2gKKyAgICAgICAgICAgIGFzc2VydCht
YWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICAgICAgICAgIGxvYWRwIFN0cnVj
dHVyZUNoYWluOjptX3ZlY3RvcltzY3JhdGNoXSwgc2NyYXRjaAorICAgICAgICAgICAgYXNzZXJ0
KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgICAgICAgICAgYmllcSBTdHJ1
Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5k
b25lCisgICAgICAgIC5sb29wOgorICAgICAgICAgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3Rv
dHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAgICAgICAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQorICAg
ICAgICAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIHNsb3cKKyAgICAgICAgICAg
IGFkZHAgNCwgc2NyYXRjaAorICAgICAgICAgICAgYmluZXEgU3RydWN0dXJlOjptX3Byb3RvdHlw
ZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAubG9vcAorICAgICAgICAuZG9u
ZToKKyAgICAgICAgZW5kKQorCisKK19sbGludF9vcF9kZWxfYnlfaWQ6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWxfYnlfaWQpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAg
bG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QxXSwg
dDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MiwgQ2VsbFRhZywgdDAsIC5v
cEdldEJ5VmFsU2xvdykKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9b
dDFdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBJbnQzMlRhZywg
dDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBicG5lcSBbdDBdLCB0MiwgLm9wR2V0QnlWYWxTbG93
CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QwXSwgdDMKKyAgICBiaWFlcSB0MSwgSlNB
cnJheTo6bV92ZWN0b3JMZW5ndGhbdDBdLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QzLCB0
MSwgOF0sIHQyCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZz
ZXRbdDMsIHQxLCA4XSwgdDEKKyAgICBiaWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRCeVZh
bFNsb3cKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0
MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEJ5
VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3ZhbCkKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxMltQQ10sIHQxCisg
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1
bWVudEJ5VmFsU2xvdworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBJbnQz
MlRhZywgdDIsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93KQorICAgIGFkZGkgMSwgdDIKKyAgICBs
b2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQorICAgIGJpYWVxIHQy
LCB0MSwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAgICBuZWdpIHQyCisgICAgbG9hZGkgNFtQ
Q10sIHQzCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDIs
IDhdLCB0MAorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MiwgOF0sIHQxCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBz
dG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg0KQorCisu
b3BHZXRBcmd1bWVudEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0
X2FyZ3VtZW50X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlf
cG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEdldEJ5UG5h
bWVTbG93KQorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICBicG5lcSB0MSwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5
UG5hbWVTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAor
ICAgIGJwbmVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0
M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkgMjRbUENdLCB0MAorICAgIGxvYWRpIFtj
ZnIsIHQwLCA4XSwgdDAKKyAgICBzdWJpIDEsIHQwCisgICAgYmlhZXEgdDAsIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6Om1fbnVtQ2FjaGVhYmxlU2xvdHNbdDNdLCAub3BHZXRCeVBuYW1lU2xvdwor
ICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0Ml0sIHQyCisgICAgbG9hZGkg
VGFnT2Zmc2V0W3QyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MiwgdDAs
IDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
ZGlzcGF0Y2goNykKKworLm9wR2V0QnlQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2dldF9ieV9wbmFtZSkKKyAgICBkaXNwYXRjaCg3KQorCisKK19sbGludF9vcF9wdXRf
YnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFs
U2xvdykKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MCwgSW50MzJUYWcsIHQyLCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDBdLCB0MAor
ICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MF0sIHQwCisgICAgYnBu
ZXEgW3QxXSwgdDAsIC5vcFB1dEJ5VmFsU2xvdworICAgIGJpYWVxIHQyLCBKU0FycmF5OjptX3Zl
Y3Rvckxlbmd0aFt0MV0sIC5vcFB1dEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3Rv
cmFnZVt0MV0sIHQwCisgICAgYmllcSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0
W3QwLCB0MiwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFB1dEJ5VmFsRW1wdHkKKy5vcFB1dEJ5VmFs
U3RvcmVSZXN1bHQ6CisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnKHQzLCB0MSwgdDMpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MykKKyAgICBzdG9y
ZWkgdDEsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XQorICAg
IHN0b3JlaSB0MywgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDAsIHQy
LCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcFB1dEJ5VmFsRW1wdHk6CisgICAgYWRkaSAxLCBB
cnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCisgICAgYmliIHQyLCBBcnJheVN0
b3JhZ2U6Om1fbGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorICAgIGFkZGkgMSwg
dDIsIHQxCisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXQorICAgIGpt
cCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisKKy5vcFB1dEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9kZWxfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfZGVsX2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9w
dXRfYnlfaW5kZXg6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9wdXRfYnlfaW5kZXgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0
X2dldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3B1dF9nZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X3NldHRl
cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1
dF9zZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbG9vcDoKKyAgICBub3AK
K19sbGludF9vcF9qbXA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRpc3BhdGNoQnJhbmNo
KDRbUENdKQorCisKK19sbGludF9vcF9qbXBfc2NvcGVzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfam1wX3Njb3BlcykKKyAgICBkaXNwYXRjaCgw
KQorCisKK21hY3JvIGp1bXBUcnVlT3JGYWxzZShjb25kaXRpb25PcCwgc2xvdykKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQm9vbGVh
blRhZywgdDAsIC5zbG93KQorICAgIGNvbmRpdGlvbk9wKHQwLCAudGFyZ2V0KQorICAgIGRpc3Bh
dGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5zbG93Ogor
ICAgIGNhbGxIZWxwZXIoc2xvdykKKyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9vcF9s
b29wX2lmX3RydWU6CisgICAgbm9wCitfbGxpbnRfb3BfanRydWU6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQp
IGJ0aW56IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2p0cnVlKQor
CisKK19sbGludF9vcF9sb29wX2lmX2ZhbHNlOgorICAgIG5vcAorX2xsaW50X29wX2pmYWxzZToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAganVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNy
byAodmFsdWUsIHRhcmdldCkgYnRpeiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9qZmFsc2UpCisKKworbWFjcm8gZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlh
dGVIYW5kbGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAg
IGJpbmVxIHQxLCBDZWxsVGFnLCAuaW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQyCisgICAgY2VsbEhhbmRsZXIoU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlw
ZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6
CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5pbW1lZGlhdGU6CisgICAgb3JpIDEsIHQx
CisgICAgaW1tZWRpYXRlSGFuZGxlcih0MSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorZW5k
CisKK19sbGludF9vcF9qZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxO
dWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRibnogdmFsdWUsIE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0
KSBiaWVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorICAgIAorCitfbGxpbnRfb3Bfam5l
cV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1h
Y3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJ6IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0
YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmluZXEgdmFsdWUsIE51
bGxUYWcsIHRhcmdldCBlbmQpCisKKworX2xsaW50X29wX2puZXFfcHRyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcEpuZXFQdHJCcmFuY2gKKyAg
ICBicGVxIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxLCAub3BKbmVxUHRyRmFsbFRocm91
Z2gKKy5vcEpuZXFQdHJCcmFuY2g6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorLm9wSm5l
cVB0ckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8gY29tcGFyZShpbnRl
Z2VyQ29tcGFyZSwgZG91YmxlQ29tcGFyZSwgaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0Mgor
ICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwLCB0
MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MywgdDIsIHQzKQorICAgIGJpbmVx
IHQwLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMk5v
dEludAorICAgIGludGVnZXJDb21wYXJlKHQxLCB0MywgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0
Y2goNCkKKworLm9wMU5vdEludDoKKyAgICBiaWEgdDAsIExvd2VzdFRhZywgLnNsb3cKKyAgICBi
aWIgdDIsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQyLCBJbnQz
MlRhZywgLnNsb3cKKyAgICBjaTJkIHQzLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisu
b3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQzLCB0MiwgZnQxCisub3AxTm90SW50UmVh
ZHk6CisgICAgZmlpMmQgdDEsIHQwLCBmdDAKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAu
anVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisub3AyTm90SW50OgorICAgIGNpMmQgdDEs
IGZ0MAorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGZpaTJkIHQzLCB0MiwgZnQx
CisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2go
NCkKKworLmp1bXBUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorCisuc2xvdzoK
KyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9v
cF9sb29wX2lmX2xlc3M6CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3M6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmRsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9qbGVzcykKKworCitfbGxpbnRfb3Bfam5sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmln
dGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHRhcmdldCkgYmRndGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfam5sZXNzKQorCisKK19sbGludF9vcF9sb29wX2lmX2dyZWF0ZXI6CisgICAgbm9w
CitfbGxpbnRfb3BfamdyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUo
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndCBsZWZ0
LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcikKKwor
CitfbGxpbnRfb3Bfam5ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJl
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVx
dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5ncmVh
dGVyKQorCisKK19sbGludF9vcF9sb29wX2lmX2xlc3NlcToKKyAgICBub3AKK19sbGludF9vcF9q
bGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxIGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2psZXNzZXEpCisKKworX2xsaW50X29w
X2pubGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3R1biBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmxlc3NlcSkKKworCitfbGxpbnRf
b3BfbG9vcF9pZl9ncmVhdGVyZXE6CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXJlcToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcmVxKQorCisKK19sbGludF9vcF9qbmdyZWF0
ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0dW4gbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5ncmVhdGVyZXEpCisKKworX2xsaW50X29w
X2xvb3BfaGludDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZv
ckxvb3AoKQorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N3aXRjaF9pbW06CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwg
dDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIK
KyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQzICAgIyBGSVhNRTogd291bGQgYmUg
bmljZSB0byBwZWVwaG9sZSB0aGlzIQorICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1f
aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisg
ICAgYWRkcCB0MywgdDIKKyAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcFN3aXRjaEltbU5vdElu
dAorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBT
aW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9w
U3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9m
ZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDRd
LCB0MQorICAgIGJ0aXogdDEsIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0Y2hC
cmFuY2hXaXRoT2Zmc2V0KHQxKQorCisub3BTd2l0Y2hJbW1Ob3RJbnQ6CisgICAgYmliIHQxLCBM
b3dlc3RUYWcsIC5vcFN3aXRjaEltbVNsb3cgICMgR28gdG8gc2xvdyBwYXRoIGlmIGl0J3MgYSBk
b3VibGUuCisub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BD
XSkKKworLm9wU3dpdGNoSW1tU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dp
dGNoX2ltbSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9zd2l0Y2hfY2hhcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDRbUENd
LCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0
MgorICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6OlJhcmVEYXRhOjptX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJP
ZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5v
cFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MQorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU1N0
cmluZzo6bV92YWx1ZVt0MF0sIHQwCisgICAgYmluZXEgU3RyaW5nSW1wbDo6bV9sZW5ndGhbdDBd
LCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTdHJpbmdJbXBsOjptX2Rh
dGE4W3QwXSwgdDEKKyAgICBidGlueiBTdHJpbmdJbXBsOjptX2hhc2hBbmRGbGFnc1t0MF0sIEhh
c2hGbGFnczhCaXRCdWZmZXIsIC5vcFN3aXRjaENoYXI4Qml0CisgICAgbG9hZGggW3QxXSwgdDAK
KyAgICBqbXAgLm9wU3dpdGNoQ2hhclJlYWR5Cisub3BTd2l0Y2hDaGFyOEJpdDoKKyAgICBsb2Fk
YiBbdDFdLCB0MAorLm9wU3dpdGNoQ2hhclJlYWR5OgorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxl
OjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNl
dHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAg
bG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0
W3QyXSwgdDIKKyAgICBsb2FkaSBbdDIsIHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0
Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9w
U3dpdGNoQ2hhckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19s
bGludF9vcF9zd2l0Y2hfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX3N0cmluZykKKyAgICBkaXNwYXRjaCgwKQorCisKK19s
bGludF9vcF9uZXdfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYnRpeiAxMltQQ10s
IC5vcE5ld0Z1bmNVbmNoZWNrZWQKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdP
ZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcE5ld0Z1bmNEb25lCisub3BOZXdG
dW5jVW5jaGVja2VkOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuYykKKy5v
cE5ld0Z1bmNEb25lOgorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19mdW5jX2V4
cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25l
d19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGRvQ2FsbChoZWxwZXIpCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRwIExMSW50
Q2FsbExpbmtJbmZvOjpjYWxsZWVbdDFdLCB0MgorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQor
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ2FsbFNsb3cKKyAg
ICBiaW5lcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBs
b2FkaSAxMltQQ10sIHQzCisgICAgYWRkcCAyNCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAg
YWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9h
ZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxl
ZSArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9h
ZE9mZnNldFt0M10KKyAgICBsb2FkaSA4IC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJn
dW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVb
dDNdCisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAg
ICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxs
VGFnLCBTY29wZUNoYWluICsgVGFnT2Zmc2V0W3QzXQorICAgIG1vdmUgdDMsIGNmcgorICAgIGNh
bGwgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQorICAgIGRpc3BhdGNo
QWZ0ZXJDYWxsKCkKKworLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhlbHBl
cikKK2VuZAorCitfbGxpbnRfb3BfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9D
YWxsKF9sbGludF9oZWxwZXJfY2FsbCkKKworCitfbGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3QpCisKKwor
X2xsaW50X29wX2NhbGxfdmFyYXJnczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1Bh
dGhGb3JDYWxsKDYsIF9sbGludF9oZWxwZXJfY2FsbF92YXJhcmdzKQorCisKK19sbGludF9vcF9j
YWxsX2V2YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIAorICAgICMgRXZhbCBpcyBleGVj
dXRlZCBpbiBvbmUgb2YgdHdvIG1vZGVzOgorICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3
ZSdyZSByZWFsbHkgaW52b2tpbmcgZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBl
eGVjdXRpb24gaXMgcGVyZm9tZWQgZW50aXJlbHkgaW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBpdAor
ICAgICMgICAgcmV0dXJucyB0aGUgUEMgb2YgYSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0
aGUgcmV0dXJuIHZhbHVlCisgICAgIyAgICB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgICMK
KyAgICAjIDIpIFdlIGZpbmQgdGhhdCB3ZSdyZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2
YWwoKSB0aGF0IGlzIG5vdAorICAgICMgICAgdGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVscGVy
IHJldHVybnMgdGhlIFBDIG9mIHRoZSB0aGluZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNh
bGwgaXQuCisgICAgIworICAgICMgVGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywg
d2hpY2ggd291bGQgcmVxdWlyZSBhIHRvdGFsIG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBv
ZiBzdGF0ZSB0aGF0IGNhbm5vdCBiZSBlYXNpbHkgcGFja2VkIGludG8gdHdvCisgICAgIyByZWdp
c3RlcnMgKEMgZnVuY3Rpb25zIGNhbiByZXR1cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5
KToKKyAgICAjCisgICAgIyAtIFRoZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBt
YXkgbm90IGhhdmUgYmVlbiBtb2RpZmllZAorICAgICMgICBieSB0aGUgaGVscGVyLCBidXQgdGhl
IGNvbnZlbnRpb24gaXMgdGhhdCBpdCByZXR1cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0b3Rh
bGx5IGNsZWFyIGlmIHRoYXQncyBuZWNlc3NhcnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNh
dmUuCisgICAgIyAgIEJ1dCB0aGF0J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRl
ciBzbyB3ZSBzdGljayB3aXRoIGl0LgorICAgICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRo
ZSBoZWxwZXIgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAjICAg
dGhlIHJldHVybiB2YWx1ZSwgb3IgZGlkIG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQ
QyBmb3IgdXMKKyAgICAjICAgdG8gY2FsbC4KKyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAgICAj
ICAgLSBUaGUgSlMgcmV0dXJuIHZhbHVlICh0d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisgICAg
IyAgIC0gVGhlIFBDIHRvIGNhbGwuCisgICAgIworICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVh
c2llciB0byBqdXN0IGFsd2F5cyBoYXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBh
IFBDIHRvIGNhbGwsIGFuZCB0aGF0IFBDIG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAor
ICAgICMgcmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAK
KyAgICBzbG93UGF0aEZvckNhbGwoNCwgX2xsaW50X2hlbHBlcl9jYWxsX2V2YWwpCisKKworX2xs
aW50X2dlbmVyaWNfcmV0dXJuX3BvaW50OgorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitf
bGxpbnRfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQK
KyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9m
ZkFjdGl2YXRpb25Ob3RDcmVhdGVkCisub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCisub3BUZWFyT2Zm
QWN0aXZhdGlvbk5vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdGVh
cl9vZmZfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBzdWJpIDEsIHQwICAgIyBHZXQgdGhlIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rl
cgorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFy
T2ZmQXJndW1lbnRzTm90Q3JlYXRlZAorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFy
X29mZl9hcmd1bWVudHMpCisub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICBkaXNw
YXRjaCgyKQorCisKK21hY3JvIGRvUmV0dXJuKCkKKyAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0
MgorICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgorICAgIHJlc3RvcmVSZXR1cm5BZGRy
ZXNzQmVmb3JlUmV0dXJuKHQyKQorICAgIHJldAorZW5kCisKK19sbGludF9vcF9yZXQ6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAg
bG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQor
ICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIGxvYWRp
IDRbUENdLCB0MgorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdHJhY2VFeGVjdXRpb24oKSAj
IE5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSBpdCB3b3VsZCBjbG9iYmVyIHQxLCB0MAorICAgIGRp
c3BhdGNoKDIpCisKKworX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9w
UmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDJdLCBPYmplY3RUeXBlLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBkb1JldHVy
bigpCisKKy5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdDoKKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX21ldGhv
ZF9jaGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNo
ZWNrcyBhbmQgdXNlIG5vcm1hbCBnZXRfYnlfaWQgb3B0aW1pemF0aW9ucy4KKyAgICBkaXNwYXRj
aCgxKQorCisKK19sbGludF9vcF9zdHJjYXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zdHJjYXQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfdG9fcHJpbWl0aXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQy
LCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFRvUHJpbWl0aXZlSXNJbW0KKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm9wVG9Qcmlt
aXRpdmVTbG93Q2FzZQorLm9wVG9QcmltaXRpdmVJc0ltbToKKyAgICBzdG9yZWkgdDEsIFRhZ09m
ZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4
XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvUHJpbWl0aXZlU2xvd0Nhc2U6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3RvX3ByaW1pdGl2ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9nZXRfcG5hbWVzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfZ2V0X3BuYW1lcykKKyAgICBkaXNwYXRjaCgwKSAjIFRoZSBoZWxwZXIg
ZWl0aGVyIGFkdmFuY2VzIHRoZSBQQyBvciBqdW1wcyB1cyB0byBzb21ld2hlcmUgZWxzZS4KKwor
CitfbGxpbnRfb3BfbmV4dF9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
MTJbUENdLCB0MQorICAgIGxvYWRpIDE2W1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdLCB0MAorICAgIGJpZXEgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0s
IC5vcE5leHRQbmFtZUVuZAorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDIsIDhdLCB0MgorICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
Om1fanNTdHJpbmdzW3QyXSwgdDMKKyAgICBsb2FkaSBbdDMsIHQwLCA4XSwgdDMKKyAgICBhZGRp
IDEsIHQwCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9h
ZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQor
ICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDhbUENd
LCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGxv
YWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0
MAorICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCisgICAgYnRweiBb
dDBdLCAub3BOZXh0UG5hbWVUYXJnZXQKKy5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcDoK
KyAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbdDFdLCBOdWxsVGFn
LCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBh
eWxvYWRPZmZzZXRbdDFdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0
MQorICAgIGJwbmVxIHQxLCBbdDBdLCAub3BOZXh0UG5hbWVTbG93CisgICAgYWRkcCA0LCB0MAor
ICAgIGJ0cG56IFt0MF0sIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcAorLm9wTmV4dFBu
YW1lVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDI0W1BDXSkKKworLm9wTmV4dFBuYW1lRW5k
OgorICAgIGRpc3BhdGNoKDcpCisKKy5vcE5leHRQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX25leHRfcG5hbWUpICMgVGhpcyBlaXRoZXIga2VlcHMgdGhlIFBDIHdoZXJl
IGl0IHdhcyAoY2F1c2luZyB1cyB0byBsb29wKSBvciBzZXRzIGl0IHRvIHRhcmdldC4KKyAgICBk
aXNwYXRjaCgwKQorCisKK19sbGludF9vcF9wdXNoX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9zY29wZSkKKyAgICBkaXNwYXRj
aCgyKQorCisKK19sbGludF9vcF9wb3Bfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3Bfc2NvcGUpCisgICAgZGlzcGF0Y2goMSkKKwor
CitfbGxpbnRfb3BfcHVzaF9uZXdfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX25ld19zY29wZSkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9jYXRjaDoKKyAgICAjIFRoaXMgaXMgd2hlcmUgd2UgZW5kIHVwIGZyb20g
dGhlIEpJVCdzIHRocm93IHRyYW1wb2xpbmUgKGJlY2F1c2UgdGhlCisgICAgIyBtYWNoaW5lIGNv
ZGUgcmV0dXJuIGFkZHJlc3Mgd2lsbCBiZSBzZXQgdG8gX2xsaW50X29wX2NhdGNoKSwgYW5kIGZy
b20KKyAgICAjIHRoZSBpbnRlcnByZXRlcidzIHRocm93IHRyYW1wb2xpbmUgKHNlZSBfbGxpbnRf
dGhyb3dfdHJhbXBvbGluZSkuCisgICAgIyBUaGUgSklUIHRocm93aW5nIHByb3RvY29sIGNhbGxz
IGZvciB0aGUgY2ZyIHRvIGJlIGluIHQwLiBUaGUgdGhyb3dpbmcKKyAgICAjIGNvZGUgbXVzdCBo
YXZlIGtub3duIHRoYXQgd2Ugd2VyZSB0aHJvd2luZyB0byB0aGUgaW50ZXJwcmV0ZXIsIGFuZCBo
YXZlCisgICAgIyBzZXQgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cu
CisgICAgbW92ZSB0MCwgY2ZyCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtz
cF0sIHQzCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhy
b3dbdDNdLCBQQworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9m
ZnNldFt0M10sIHQwCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZz
ZXRbdDNdLCB0MQorICAgIHN0b3JlaSAwLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxv
YWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIEpTR2xvYmFsRGF0YTo6ZXhj
ZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSAgICAgICAKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBz
dG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFRhZ09m
ZnNldFtjZnIsIHQyLCA4XQorICAgIHRyYWNlRXhlY3V0aW9uKCkgICMgVGhpcyBuZWVkcyB0byBi
ZSBoZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjbG9iYmVyIHQwLCB0MSwgdDIsIHQzIGFi
b3ZlLgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93OgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGhyb3cpCisgICAgZGlzcGF0
Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vy
cm9yKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2pzcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYWRkaSAzICogNCwgUEMsIHQxCisgICAg
c3RvcmVpIHQxLCBbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitf
bGxpbnRfb3Bfc3JldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgbG9hZHAgW2NmciwgdDAsIDhdLCBQQworICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50
X29wX2RlYnVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfZGVidWcpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJvZmlsZV93aWxs
X2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0cHogSklUU3RhY2tGcmFtZTo6ZW5h
YmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgLm9wUHJvZmlsZVdpbGxDYWxsRG9uZQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCkKKy5vcFByb2ZpbGVXaWxs
Q2FsbERvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJvZmlsZV9kaWRfY2Fs
bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYnRweiBKSVRTdGFja0ZyYW1lOjplbmFibGVk
UHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCAub3BQcm9maWxlRGlkQ2FsbERvbmUKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKKy5vcFByb2ZpbGVEaWRDYWxsRG9u
ZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9lbmQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF90aHJv
d19mcm9tX2hlbHBlcl90cmFtcG9saW5lOgorICAgICMgV2hlbiB0aHJvd2luZyBmcm9tIHRoZSBp
bnRlcnByZXRlciAoaS5lLiB0aHJvd2luZyBmcm9tIExMSW50SGVscGVycyksIHNvCisgICAgIyB0
aGUgdGhyb3cgdGFyZ2V0IGlzIG5vdCBuZWNlc3NhcmlseSBpbnRlcnByZXRlZCBjb2RlLCB3ZSBj
b21lIHRvIGhlcmUuCisgICAgIyBUaGlzIGVzc2VudGlhbGx5IGVtdWxhdGVzIHRoZSBKSVQncyB0
aHJvd2luZyBwcm90b2NvbC4KKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3Nw
XSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAK
KyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCitf
bGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZToKKyAgICBwcmVzZXJ2ZVJldHVybkFk
ZHJlc3NBZnRlckNhbGwodDIpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtz
cF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQw
CisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKwor
IyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0
IHN1cHBvcnQgYWxsIG9wY29kZXMuCisjIFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNl
IHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CisjIGFzIG11Y2guCisK
K21hY3JvIG5vdFN1cHBvcnRlZCgpCisgICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgY3Jh
c2goKQorICAgIGVsc2UKKyAgICAgICAgIyBXZSBzaG91bGQgdXNlIHdoYXRldmVyIHRoZSBzbWFs
bGVzdCBwb3NzaWJsZSBpbnN0cnVjdGlvbiBpcywganVzdCB0bworICAgICAgICAjIGVuc3VyZSB0
aGF0IHRoZXJlIGlzIGEgZ2FwIGJldHdlZW4gaW5zdHJ1Y3Rpb24gbGFiZWxzLiBJZiBtdWx0aXBs
ZQorICAgICAgICAjIHNtYWxsZXN0IGluc3RydWN0aW9ucyBleGlzdCwgd2Ugc2hvdWxkIHBpY2sg
dGhlIG9uZSB0aGF0IGlzIG1vc3QKKyAgICAgICAgIyBsaWtlbHkgcmVzdWx0IGluIGV4ZWN1dGlv
biBiZWluZyBoYWx0ZWQuIEN1cnJlbnRseSB0aGF0IGlzIHRoZSBicmVhaworICAgICAgICAjIGlu
c3RydWN0aW9uIG9uIGFsbCBhcmNoaXRlY3R1cmVzIHdlJ3JlIGludGVyZXN0ZWQgaW4uIChCcmVh
ayBpcyBpbnQzCisgICAgICAgICMgb24gSW50ZWwsIHdoaWNoIGlzIDEgYnl0ZSwgYW5kIGJrcHQg
b24gQVJNdjcsIHdoaWNoIGlzIDIgYnl0ZXMuKQorICAgICAgICBicmVhaworICAgIGVuZAorZW5k
CisKK19sbGludF9vcF9nZXRfYXJyYXlfbGVuZ3RoOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19s
bGludF9vcF9nZXRfYnlfaWRfY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29w
X2dldF9ieV9pZF9jdXN0b21fY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29w
X2dldF9ieV9pZF9jdXN0b21fcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29w
X2dldF9ieV9pZF9jdXN0b21fc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2dlbmVyaWM6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9i
eV9pZF9nZXR0ZXJfY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9i
eV9pZF9nZXR0ZXJfcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9i
eV9pZF9nZXR0ZXJfc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfc2Vs
ZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X3N0cmluZ19sZW5ndGg6Cisg
ICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9nZW5lcmljOgorICAgIG5v
dFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfcmVwbGFjZToKKyAgICBub3RTdXBw
b3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb246CisgICAgbm90U3VwcG9y
dGVkKCkKKworCisjIEluZGljYXRlIHRoZSBlbmQgb2YgTExJbnQuCitfbGxpbnRfZW5kOgorICAg
IGNyYXNoKCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCisj
aW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCisjaW5jbHVkZSAiTExJbnRBc3NlbWJs
eS5oIgorCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBM
b3dMZXZlbEludGVycHJldGVyX2gKKyNkZWZpbmUgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisKKyNp
bmNsdWRlICJPcGNvZGUuaCIKKworI2RlZmluZSBMTElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29k
ZSwgbGVuZ3RoKSBleHRlcm4gIkMiIHZvaWQgbGxpbnRfIyNvcGNvZGUoKTsKKyAgICBGT1JfRUFD
SF9PUENPREVfSUQoTExJTlRfSU5TVFJVQ1RJT05fREVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJV
Q1RJT05fREVDTAorCitleHRlcm4gIkMiIHZvaWQgbGxpbnRfYmVnaW4oKTsKK2V4dGVybiAiQyIg
dm9pZCBsbGludF9lbmQoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9wcm9ncmFtX3Byb2xvZ3Vl
KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZXZhbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2
b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQg
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQg
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2
b2lkIGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
dGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Ro
cm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUoKTsKKworI2VuZGlmIC8vIExvd0xldmVsSW50ZXJw
cmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5y
YgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK2NsYXNzIFNwZWNpYWxSZWdpc3RlcgorICBkZWYgaW5pdGlhbGl6ZShu
YW1lKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBhcm1WN09wZXJhbmQKKyAg
ICBAbmFtZQorICBlbmQKK2VuZAorCitBUk12N19EQVRBX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5u
ZXcoImlwIikKK0FSTXY3X0FERFJfUkVHID0gU3BlY2lhbFJlZ2lzdGVyLm5ldygicjMiKQorCitk
ZWYgbW92ZUltbWVkaWF0ZSh2YWx1ZSwgcmVnaXN0ZXIpCisgICMgQ3VycmVudGx5IHdlIG9ubHkg
aGFuZGxlIHRoZSBzaW1wbGUgY2FzZXMsIGFuZCBmYWxsIGJhY2sgdG8gbW92L21vdnQgZm9yIHRo
ZSBjb21wbGV4IG9uZXMuCisgIGlmIHZhbHVlID49IDAgJiYgdmFsdWUgPCAyNTYKKyAgICAkYXNt
LnB1dHMgIm1vdncgXCMje3ZhbHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNp
ZiAofnZhbHVlKSA+PSAwICYmICh+dmFsdWUpIDwgMjU2CisgICAgJGFzbS5wdXRzICJtdm53IFwj
I3t+dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgIGVsc2UKKyAgICAkYXNtLnB1
dHMgIm1vdncgXCMje3ZhbHVlICYgMHhmZmZmfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9Igor
ICAgIGlmICh2YWx1ZSAmIDB4ZmZmZjAwMDApICE9IDAKKyAgICAgICRhc20ucHV0cyAibW92dCBc
IyN7dmFsdWUgPj4gMTZ9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgICAgZW5kCisgIGVu
ZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2Ug
bmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgInIwIgorICAgIHdoZW4gInQx
IiwgImExIiwgInIxIgorICAgICAgInIxIgorICAgIHdoZW4gInQyIiwgImEyIgorICAgICAgInIy
IgorICAgIHdoZW4gImEzIgorICAgICAgInIzIgorICAgIHdoZW4gInQzIgorICAgICAgInI0Igor
ICAgIHdoZW4gInQ0IgorICAgICAgInI3IgorICAgIHdoZW4gImNmciIKKyAgICAgICJyNSIKKyAg
ICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBh
cmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1l
bW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2Fk
U3RvcmVXcmFwCisgICAgeWllbGQKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisg
IGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAiZnIiCisg
ICAgICAiZDAiCisgICAgd2hlbiAiZnIxIiwKKyAgICAgICJkMSIKKyAgICB3aGVuICJmcjIiCisg
ICAgICAiZDIiCisgICAgd2hlbiAiZnIzIgorICAgICAgImQzIgorICAgIHdoZW4gImZyNCIKKyAg
ICAgICJkNCIKKyAgICB3aGVuICJmcjUiCisgICAgICAiZDUiCisgICAgZWxzZQorICAgICAgcmFp
c2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlP
cGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAg
YXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlp
ZWxkIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiBhcm1WN09wZXJh
bmQKKyAgICByYWlzZSAiSW52YWxpZCBpbW1lZGlhdGUgI3t2YWx1ZX0iIGlmIHZhbHVlIDwgMCBv
ciB2YWx1ZSA+IDI1NQorICAgICIjJHt2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJl
cGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxl
TWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xv
YWRTdG9yZVdyYXAKKyAgICB5aWVsZCBzZWxmCisgIGVuZAorZW5kCisKK21vZHVsZSBBUk12N0Fk
ZHJlc3NVdGlsaXRpZXMKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHNlbGYuYXJtVjdQ
cmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgJGFzbS5wdXRzICJcdGxkciAje3NlbGYu
YXJtVjdQb3NzaWJseU1lbW9yeU9wZXJhbmR9LCAje0FSTXY3X0RBVEFfUkVHLmFybVY3T3BlcmFu
ZH0iCisgICAgeWllbGQgQVJNdjdfREFUQV9SRUcKKyAgICAkYXNtLnB1dHMgIlx0c3RyICN7QVJN
djdfREFUQV9SRUcuYXJtVjdPcGVyYW5kfSwgI3tzZWxmLmFybVY3UG9zc2libHlNZW1vcnlPcGVy
YW5kfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBpbmNsdWRlIEFSTXY3QWRkcmVz
c1V0aWxpdGllcworCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAg
ICBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAg
bW92ZUltbWVkaWF0ZShvZmZzZXQudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52
YWx1ZSA8IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICAiWyN7YmFzZS5hcm1W
N09wZXJhbmR9LCAje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH1dIgorICAgIGVsc2UKKyAg
ICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7b2Zmc2V0LmFybVY3T3BlcmFuZH1dIgorICAg
IGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgaW5jbHVkZSBBUk12N0FkZHJl
c3NVdGlsaXRpZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisg
ICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAgIG1vdmVJbW1lZGlhdGUob2Zmc2V0LnZhbHVl
LCBBUk12N19BRERSX1JFRykKKyAgICAgICRhc20ucHV0cyAiYWRkdyAje0FSTXY3X0FERFJfUkVH
LmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSAh
PSAwCisgICAgICAiWyN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfSwgI3tpbmRleC5hcm1W
N09wZXJhbmR9LCBsc2wgXCMje3NjYWxlfV0iCisgICAgZWxzZQorICAgICAgIlsje2Jhc2UuYXJt
VjdPcGVyYW5kfSwgI3tpbmRleC5hcm1WN09wZXJhbmR9LCBsc2wgXCMje3NjYWxlfV0iCisgICAg
ZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBpbmNsdWRlIEFSTXY3
QWRkcmVzc1V0aWxpdGllcworICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3Bl
cmFuZAorICAgIG1vdmVJbW1lZGlhdGUoYWRkcmVzcy52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisg
IGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgIlsje0FSTXY3
X0FERFJfUkVHLmFybVY3T3BlcmFuZH1dIgorICBlbmQKK2VuZAorCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODMg
QEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNrZW5k
cyIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZXR0aW5n
cyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworY2xhc3MgQXNzZW1ibGVyCisgIGRlZiBpbml0aWFs
aXplKG91dHApCisgICAgQG91dHAgPSBvdXRwCisgICAgQHN0YXRlID0gOmNwcAorICBlbmQKKyAg
CisgIGRlZiBlbnRlckFzbQorICAgIEBvdXRwLnB1dHMgImFzbSAoIgorICAgIEBzdGF0ZSA9IDph
c20KKyAgZW5kCisgIAorICBkZWYgbGVhdmVBc20KKyAgICBAb3V0cC5wdXRzICIpOyIKKyAgICBA
c3RhdGUgPSA6Y3BwCisgIGVuZAorICAKKyAgZGVmIGluQXNtCisgICAgZW50ZXJBc20KKyAgICB5
aWVsZAorICAgIGxlYXZlQXNtCisgIGVuZAorICAKKyAgZGVmIHB1dHMobGluZSkKKyAgICByYWlz
ZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wdXRzKChsaW5lICsgIlxuIikuaW5z
cGVjdCkKKyAgZW5kCisgIAorICBkZWYgY29tbWVudCh0ZXh0KQorICAgIEBvdXRwLnB1dHMgIi8v
ICN7dGV4dH0iCisgIGVuZAorZW5kCisKKyRhc20gPSBBc3NlbWJsZXIubmV3KCRzdGRvdXQpCisK
K2FzbUZpbGUgPSBBUkdWLnNoaWZ0CitvZmZzZXRzRmlsZSA9IEFSR1Yuc2hpZnQKKworYXN0ID0g
cGFyc2UobGV4KElPOjpyZWFkKGFzbUZpbGUpKSkKK29mZnNldHNMaXN0LCBjb25maWdJbmRleCA9
IG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgob2Zmc2V0c0ZpbGUpCisKK2ZvclNldHRpbmdz
KGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpW2NvbmZpZ0luZGV4XSwgYXN0KSB7Cisg
IHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICBhc3NlcnRDb25m
aWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgIGxvd0xldmVsQVNUID0gbG93TGV2ZWxBU1Qu
cmVzb2x2ZSgqYnVpbGRPZmZzZXRzTWFwKGxvd0xldmVsQVNULCBvZmZzZXRzTGlzdCkpCisgIGVt
aXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNr
ZW5kKSB7CisgICAgJGFzbS5pbkFzbSB7CisgICAgICBsb3dMZXZlbEFTVC5sb3dlcihiYWNrZW5k
KQorICAgIH0KKyAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXN0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fz
dC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fz
dC5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MTcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEJh
c2UgdXRpbGl0eSB0eXBlcyBmb3IgdGhlIEFTVC4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgVmFsaWQg
bWV0aG9kcyBmb3IgTm9kZToKKyMKKyMgbm9kZS5jaGlsZHJlbiAtPiBSZXR1cm5zIGFuIGFycmF5
IG9mIGltbWVkaWF0ZSBjaGlsZHJlbi4KKyMKKyMgbm9kZS5kZXNjZW5kZW50cyAtPiBSZXR1cm5z
IGFuIGFycmF5IG9mIGFsbCBzdHJpY3QgZGVzY2VuZGFudHMgKGNoaWxkcmVuCisjICAgICBhbmQg
Y2hpbGRyZW4gb2YgY2hpbGRyZW4sIHRyYW5zaXRpdmVseSkuCisjCisjIG5vZGUuZmxhdHRlbiAt
PiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHN0cmljdCBkZXNjZW5kYW50cyBhbmQK
KyMgICAgIHRoZSBub2RlIGl0c2VsZi4KKyMKKyMgbm9kZS5maWx0ZXIodHlwZSkgLT4gUmV0dXJu
cyBhbiBhcnJheSBjb250YWluaW5nIHRob3NlIGVsZW1lbnRzIGluCisjICAgICBub2RlLmZsYXR0
ZW4gdGhhdCBhcmUgb2YgdGhlIGdpdmVuIHR5cGUgKGlzX2E/IHR5cGUgcmV0dXJucyB0cnVlKS4K
KyMKKyMgbm9kZS5tYXBDaGlsZHJlbnt8dnwgLi4ufSAtPiBSZXR1cm5zIGEgbmV3IG5vZGUgd2l0
aCBhbGwgY2hpbGRyZW4KKyMgICAgIHJlcGxhY2VkIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gYmxv
Y2suCisjCisjIEV4YW1wbGVzOgorIworIyBub2RlLmZpbHRlcihTZXR0aW5nKS51bmlxIC0+IFJl
dHVybnMgYWxsIG9mIHRoZSBzZXR0aW5ncyB0aGF0IHRoZSBBU1QncworIyAgICAgSWZUaGVuRWxz
ZSBibG9ja3MgZGVwZW5kIG9uLgorIworIyBub2RlLmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEg
LT4gUmV0dXJucyBhbGwgb2YgdGhlIHN0cnVjdHVyZSBvZmZzZXRzCisjICAgICB0aGF0IHRoZSBB
U1QgZGVwZW5kcyBvbi4KKworY2xhc3MgTm9kZQorICBhdHRyX3JlYWRlciA6Y29kZU9yaWdpbgor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVP
cmlnaW4KKyAgZW5kCisgIAorICBkZWYgY29kZU9yaWdpblN0cmluZworICAgICJsaW5lIG51bWJl
ciAje0Bjb2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYgZGVzY2VuZGFudHMKKyAgICBjaGls
ZHJlbi5jb2xsZWN0e3x2fCB2LmZsYXR0ZW59LmZsYXR0ZW4KKyAgZW5kCisgIAorICBkZWYgZmxh
dHRlbgorICAgIFtzZWxmXSArIGRlc2NlbmRhbnRzCisgIGVuZAorICAKKyAgZGVmIGZpbHRlcih0
eXBlKQorICAgIGZsYXR0ZW4uc2VsZWN0e3x2fCB2LmlzX2E/IHR5cGV9CisgIGVuZAorZW5kCisK
K2NsYXNzIE5vQ2hpbGRyZW4gPCBOb2RlCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbXQor
ICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xh
c3MgU3RydWN0T2Zmc2V0S2V5CisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAg
ZGVmIGluaXRpYWxpemUoc3RydWN0LCBmaWVsZCkKKyAgICBAc3RydWN0ID0gc3RydWN0CisgICAg
QGZpZWxkID0gZmllbGQKKyAgZW5kCisgIAorICBkZWYgaGFzaAorICAgIEBzdHJ1Y3QuaGFzaCAr
IEBmaWVsZC5oYXNoICogMworICBlbmQKKyAgCisgIGRlZiBlcWw/KG90aGVyKQorICAgIEBzdHJ1
Y3QgPT0gb3RoZXIuc3RydWN0IGFuZCBAZmllbGQgPT0gb3RoZXIuZmllbGQKKyAgZW5kCitlbmQK
KyAgICAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEFTVCBub2Rlcy4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIFN0cnVjdE9mZnNldCA8
IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAg
QEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvckZpZWxkKGNvZGVPcmlnaW4sIHN0cnVj
dCwgZmllbGQpCisgICAga2V5ID0gU3RydWN0T2Zmc2V0S2V5Lm5ldyhzdHJ1Y3QsIGZpZWxkKQor
ICAgIAorICAgIHVubGVzcyBAQG1hcHBpbmdba2V5XQorICAgICAgQEBtYXBwaW5nW2tleV0gPSBT
dHJ1Y3RPZmZzZXQubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAgZW5kCisgICAg
QEBtYXBwaW5nW2tleV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje3N0cnVjdH06OiN7
ZmllbGR9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIpCisgICAgaWYgQHN0cnVjdCAhPSBv
dGhlci5zdHJ1Y3QKKyAgICAgIHJldHVybiBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgICBl
bmQKKyAgICBAZmllbGQgPD0+IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVv
ZiA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVjdAorICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVj
dCA9IHN0cnVjdAorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5m
b3JOYW1lKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW3N0cnVjdF0K
KyAgICAgIEBAbWFwcGluZ1tzdHJ1Y3RdID0gU2l6ZW9mLm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3Qp
CisgICAgZW5kCisgICAgQEBtYXBwaW5nW3N0cnVjdF0KKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICJzaXplb2YgI3tAc3RydWN0fSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAg
IEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUg
PCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgdmFsdWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAdmFsdWUgPSB2
YWx1ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7dmFsdWV9IgorICBlbmQKKyAgCisg
IGRlZiA9PShvdGhlcikKKyAgICBvdGhlci5pc19hPyBJbW1lZGlhdGUgYW5kIG90aGVyLnZhbHVl
ID09IEB2YWx1ZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVzIDwgTm9kZQorICBh
dHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAor
ICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0
LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQWRkSW1tZWRpYXRl
cy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSArICN7cmlnaHQuZHVtcH0pIgorICBl
bmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVm
dCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJp
Z2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVu
ZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgU3ViSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdp
biwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiKCN7bGVmdC5kdW1wfSAtICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFz
cyBNdWxJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAK
KyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1h
cENoaWxkcmVuCisgICAgTXVsSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0
KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5k
dW1wfSAqICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBOZWdJbW1lZGlhdGUg
PCBOb2RlCisgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgY2hpbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAY2hpbGQgPSBjaGlsZAor
ICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAY2hpbGRdCisgIGVuZAorICAKKyAgZGVm
IG1hcENoaWxkcmVuCisgICAgTmVnSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNo
aWxkKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoLSN7QGNoaWxkLmR1bXB9KSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIg
Om5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7
fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBA
QG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFJlZ2lzdGVySUQubmV3KGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRCA8
IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUK
KyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2Rl
T3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGlu
Z1tuYW1lXSA9IEZQUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAg
ICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5k
CitlbmQKKworY2xhc3MgVmFyaWFibGUgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1l
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAg
CisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBw
aW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBWYXJpYWJsZS5uZXcoY29kZU9yaWdp
biwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcyA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOmJhc2UsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGJhc2UsIG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBiYXNlID0gYmFzZQor
ICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJh
c2UsIEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQWRkcmVzcy5u
ZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfV0iCisgIGVuZAor
ZW5kCisKK2NsYXNzIEJhc2VJbmRleCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2UsIDppbmRl
eCwgOnNjYWxlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBiYXNl
ID0gYmFzZQorICAgIEBpbmRleCA9IGluZGV4CisgICAgQHNjYWxlID0gc2NhbGUKKyAgICByYWlz
ZSB1bmxlc3MgWzEsIDIsIDQsIDhdLm1lbWJlcj8gQHNjYWxlCisgICAgQG9mZnNldCA9IG9mZnNl
dAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwgQGluZGV4LCBAb2Zmc2V0
XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEJhc2VJbmRleC5uZXcoY29kZU9y
aWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBpbmRleCksIEBzY2FsZSwgKHlpZWxkIEBvZmZz
ZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5k
dW1wfSwgI3tpbmRleC5kdW1wfSwgI3tzY2FsZX1dIgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNv
bHV0ZUFkZHJlc3MgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDphZGRyZXNzCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBhZGRyZXNzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQGFkZHJlc3MgPSBhZGRyZXNzCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3th
ZGRyZXNzLmR1bXB9W10iCisgIGVuZAorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uIDwgTm9kZQor
ICBhdHRyX3JlYWRlciA6b3Bjb2RlLCA6b3BlcmFuZHMKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIG9wY29kZSwgb3BlcmFuZHMpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
b3Bjb2RlID0gb3Bjb2RlCisgICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAgZW5kCisgIAorICBk
ZWYgY2hpbGRyZW4KKyAgICBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigm
cHJvYykKKyAgICBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgQG9wY29kZSwgQG9wZXJhbmRz
Lm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHQiICsgb3Bjb2RlLnRv
X3MgKyAiICIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikKKyAgZW5k
CitlbmQKKworY2xhc3MgRXJyb3IgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICJcdGVycm9yIgorICBlbmQKK2VuZAorCitjbGFzcyBDb25zdERlY2wgPCBOb2RlCisgIGF0dHJf
cmVhZGVyIDp2YXJpYWJsZSwgOnZhbHVlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCB2YXJpYWJsZSwgdmFsdWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAdmFyaWFibGUg
PSB2YXJpYWJsZQorICAgIEB2YWx1ZSA9IHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVu
CisgICAgW0B2YXJpYWJsZSwgQHZhbHVlXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgor
ICAgIENvbnN0RGVjbC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEB2YXJpYWJsZSksICh5aWVsZCBA
dmFsdWUpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImNvbnN0ICN7QHZhcmlhYmxlLmR1
bXB9ID0gI3tAdmFsdWUuZHVtcH0iCisgIGVuZAorZW5kCisKKyRsYWJlbE1hcHBpbmcgPSB7fQor
CitjbGFzcyBMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgaWYgJGxhYmVsTWFwcGluZ1tuYW1lXQorICAgICAgcmFpc2UgIkxhYmVsIG5h
bWUgY29sbGlzaW9uOiAje25hbWV9IiB1bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBM
YWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBMYWJlbC5uZXcoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2Fs
TGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUg
PSBuYW1lCisgIGVuZAorCisgIEBAdW5pcXVlTmFtZUNvdW50ZXIgPSAwCisgIAorICBkZWYgc2Vs
Zi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgaWYgJGxhYmVsTWFwcGluZ1tuYW1lXQor
ICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9IiB1bmxlc3MgJGxhYmVs
TWFwcGluZ1tuYW1lXS5pc19hPyBMb2NhbExhYmVsCisgICAgZWxzZQorICAgICAgJGxhYmVsTWFw
cGluZ1tuYW1lXSA9IExvY2FsTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisg
ICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBzZWxmLnVuaXF1ZShjb21t
ZW50KQorICAgIG5ld05hbWUgPSAiXyN7Y29tbWVudH0iCisgICAgaWYgJGxhYmVsTWFwcGluZ1tu
ZXdOYW1lXQorICAgICAgd2hpbGUgJGxhYmVsTWFwcGluZ1tuZXdOYW1lID0gIl8je0BAdW5pcXVl
TmFtZUNvdW50ZXJ9XyN7Y29tbWVudH0iXQorICAgICAgICBAQHVuaXF1ZU5hbWVDb3VudGVyICs9
IDEKKyAgICAgIGVuZAorICAgIGVuZAorICAgIGZvck5hbWUobmlsLCBuZXdOYW1lKQorICBlbmQK
KyAgCisgIGRlZiBjbGVhbk5hbWUKKyAgICBpZiBuYW1lID1+IC9eXC4vCisgICAgICAiXyIgKyBu
YW1lWzEuLi0xXQorICAgIGVsc2UKKyAgICAgIG5hbWUKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVu
Y2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJl
bAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAg
ZGVmIG1hcENoaWxkcmVuCisgICAgTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVs
ZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBMb2Nh
bExhYmVsUmVmZXJlbmNlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxh
YmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExvY2FsTGFiZWxSZWZlcmVu
Y2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1l
CisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQor
ICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxpc3QK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxpc3QpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAbGlzdCA9IGxpc3QKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBs
aXN0CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIFNlcXVlbmNlLm5l
dyhjb2RlT3JpZ2luLCBAbGlzdC5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgbGlzdC5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIlxuIikKKyAgZW5kCitlbmQKKworY2xh
c3MgVHJ1ZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisg
IGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IFRydWUubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5j
ZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICB0cnVlCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAidHJ1ZSIKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2Ug
PCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAg
CisgIEBAaW5zdGFuY2UgPSBGYWxzZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAg
QEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIGZhbHNlCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICAiZmFsc2UiCisgIGVuZAorZW5kCisKK2NsYXNzIFRydWVDbGFzcwor
ICBkZWYgYXNOb2RlCisgICAgVHJ1ZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBGYWxz
ZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBGYWxzZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitj
bGFzcyBTZXR0aW5nIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2Vs
Zi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQor
ICAgICAgQEBtYXBwaW5nW25hbWVdID0gU2V0dGluZy5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAg
ICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5h
bWUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwg
OnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAor
ICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQW5kLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxl
ZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0
LmR1bXB9IGFuZCAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgT3IgPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBs
ZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBb
QGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBPci5uZXco
Y29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBvciAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitl
bmQKKworY2xhc3MgTm90IDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEBy
aWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOb3QubmV3KGNvZGVPcmln
aW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIihub3QgI3tj
aGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAgPCBOb0NoaWxkcmVuCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICJcdHNraXAiCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVs
c2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpwcmVkaWNhdGUsIDp0aGVuQ2FzZQorICBhdHRyX2Fj
Y2Vzc29yIDplbHNlQ2FzZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgcHJlZGlj
YXRlLCB0aGVuQ2FzZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBwcmVkaWNhdGUgPSBw
cmVkaWNhdGUKKyAgICBAdGhlbkNhc2UgPSB0aGVuQ2FzZQorICAgIEBlbHNlQ2FzZSA9IFNraXAu
bmV3KGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgaWYgQGVsc2VD
YXNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNlLCBAZWxzZUNhc2VdCisgICAgZWxzZQor
ICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZV0KKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHByZWRp
Y2F0ZSksICh5aWVsZCBAdGhlbkNhc2UpLCAoeWllbGQgQGVsc2VDYXNlKSkKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICJpZiAje3ByZWRpY2F0ZS5kdW1wfVxuIiArIHRoZW5DYXNlLmR1bXAg
KyAiXG5lbHNlXG4iICsgZWxzZUNhc2UuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xh
c3MgTWFjcm8gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6dmFyaWFibGVzLCA6Ym9keQor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQHZhcmlhYmxlcyA9
IHZhcmlhYmxlcworICAgIEBib2R5ID0gYm9keQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgor
ICAgIEB2YXJpYWJsZXMgKyBbQGJvZHldCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisg
ICAgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAdmFyaWFibGVzLm1hcHt8dnwgeWllbGQg
dn0sICh5aWVsZCBAYm9keSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAibWFjcm8gI3tu
YW1lfSgiICsgdmFyaWFibGVzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpXG4i
ICsgYm9keS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBNYWNyb0NhbGwgPCBO
b2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6b3BlcmFuZHMKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QG5hbWUgPSBuYW1lCisgICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAgICByYWlzZSB1bmxlc3Mg
QG9wZXJhbmRzCisgICAgQG9wZXJhbmRzLmVhY2h7fHZ8IHJhaXNlIHVubGVzcyB2fQorICBlbmQK
KyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbigmcHJvYykKKyAgICBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAb3Bl
cmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdCN7bmFtZX0o
IiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpIgorICBlbmQK
K2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5k
cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Jh
Y2tlbmRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJ4ODYiCisKK0JB
Q0tFTkRTID0KKyAgWworICAgIlg4NiIsCisgICAiQVJNdjciCisgIF0KKworV09SS0lOR19CQUNL
RU5EUyA9CisgIFsKKyAgICJYODYiCisgIF0KKworQkFDS0VORF9QQVRURVJOID0gUmVnZXhwLm5l
dygnXFxBKCcgKyBCQUNLRU5EUy5qb2luKCcpfCgnKSArICcpXFxaJykKKworY2xhc3MgTm9kZQor
ICBkZWYgbG93ZXIobmFtZSkKKyAgICBzZW5kKCJsb3dlciIgKyBuYW1lKQorICBlbmQKK2VuZAor
CisjIE92ZXJyaWRlcyBmb3IgbG93ZXIoKSBmb3IgdGhvc2Ugbm9kZXMgdGhhdCBhcmUgYmFja2Vu
ZC1hZ25vc3RpYworCitkZWYgc2FuaXRpemVMYWJlbE5hbWUobmFtZSkKKyAgIyBTb21lIHBsYXRm
b3JtcyBkb24ndCB3YW50IHRoZSBsZWFkaW5nICJfIi4gSWYgd2UgZXZlciB3YW50IHRvIGRvIHNv
bWV0aGluZworICAjIGFib3V0IHRoYXQsIGl0IHdvdWxkIGJlIGhlcmUuCisgIG5hbWUKK2VuZAor
CitjbGFzcyBMYWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHMgIi5nbG9ibCAj
e3Nhbml0aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9IgorICAgICRhc20ucHV0cyAiI3tzYW5pdGl6
ZUxhYmVsTmFtZShzZWxmLm5hbWUpfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwK
KyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzICJMX29mZmxpbmVhc21fI3tzZWxmLm5h
bWVbMS4uLTFdfToiCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAKKyAgZGVmIGxvd2VyKG5hbWUp
CisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIEBs
aXN0LmVhY2ggeworICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUubG93ZXIobmFtZSkKKyAgICB9
CisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9l
eHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKKyMhL3Vzci9iaW4vZW52
IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworJDogPDwgRmls
ZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgIm9mZnNl
dHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5z
Zm9ybSIKKworZGVmIGVtaXRNYWdpY051bWJlcgorICBPRkZTRVRfTUFHSUNfTlVNQkVSUy5lYWNo
IHsKKyAgICB8IG51bWJlciB8CisgICAgcHV0cyAiI3tudW1iZXJ9LCIKKyAgfQorZW5kCisKK29y
aWdpbmFsQVNUID0gcGFyc2UobGV4KCRzdGRpbi5yZWFkKSkKKworZW1pdENvZGVJbkFsbENvbmZp
Z3VyYXRpb25zKG9yaWdpbmFsQVNUKSB7CisgIHwgc2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5k
ZXggfAorICBvZmZzZXRzTGlzdCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQK
KyAgc2l6ZXNMaXN0ID0gYXN0LmZpbHRlcihTaXplb2YpLnVuaXEuc29ydAorICAKKyAgbGVuZ3Ro
ID0gKE9GRlNFVF9NQUdJQ19OVU1CRVJTLnNpemUgKyAxKSAqICgxICsgb2Zmc2V0c0xpc3Quc2l6
ZSArIHNpemVzTGlzdC5zaXplKQorICAKKyAgcHV0cyAic3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4
dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICBlbWl0TWFnaWNOdW1iZXIKKyAgcHV0cyAi
I3tpbmRleH0sIgorICBvZmZzZXRzTGlzdC5lYWNoIHsKKyAgICB8IG9mZnNldCB8CisgICAgZW1p
dE1hZ2ljTnVtYmVyCisgICAgcHV0cyAiT0ZGTElORV9BU01fT0ZGU0VUT0YoI3tvZmZzZXQuc3Ry
dWN0fSwgI3tvZmZzZXQuZmllbGR9KSwiCisgIH0KKyAgc2l6ZXNMaXN0LmVhY2ggeworICAgIHwg
b2Zmc2V0IHwKKyAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICBwdXRzICJzaXplb2YoI3tvZmZzZXQu
c3RydWN0fSksIgorICB9CisgIHB1dHMgIn07IgorfQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE4OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworTUFDUk9fSU5TVFJVQ1RJT05TID0KKyAgWworICAgImFkZGkiLAorICAgImFuZGkiLAor
ICAgImxzaGlmdGkiLAorICAgIm11bGkiLAorICAgIm5lZ2kiLAorICAgIm5vdGkiLAorICAgIm9y
aSIsCisgICAicnNoaWZ0aSIsCisgICAidXJzaGlmdGkiLAorICAgInN1YmkiLAorICAgInhvcmki
LAorICAgImxvYWRpIiwKKyAgICJsb2FkYiIsCisgICAibG9hZGgiLAorICAgInN0b3JlaSIsCisg
ICAic3RvcmViIiwKKyAgICJsb2FkZCIsCisgICAibW92ZWQiLAorICAgInN0b3JlZCIsCisgICAi
YWRkZCIsCisgICAiZGl2ZCIsCisgICAic3ViZCIsCisgICAibXVsZCIsCisgICAic3FydGQiLAor
ICAgImNpMmQiLAorICAgImZpaTJkIiwgIyB1c2FnZTogZmlpMmQgPGdwciB3aXRoIGxlYXN0IHNp
Z25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPiwgPGZwcj4K
KyAgICJmZDJpaSIsICMgdXNhZ2U6IGZkMmlpIDxmcHI+LCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlm
aWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+CisgICAiYmRlcSIs
CisgICAiYmRuZXEiLAorICAgImJkZ3QiLAorICAgImJkZ3RlcSIsCisgICAiYmRsdCIsCisgICAi
YmRsdGVxIiwKKyAgICJiZGVxdW4iLAorICAgImJkbmVxdW4iLAorICAgImJkZ3R1biIsCisgICAi
YmRndGVxdW4iLAorICAgImJkbHR1biIsCisgICAiYmRsdGVxdW4iLAorICAgImJ0ZDJpIiwKKyAg
ICJ0ZDJpIiwKKyAgICJiY2QyaSIsCisgICAibW92ZHoiLAorICAgInBvcCIsCisgICAicHVzaCIs
CisgICAibW92ZSIsCisgICAic3hpMnAiLAorICAgInp4aTJwIiwKKyAgICJub3AiLAorICAgImJp
ZXEiLAorICAgImJpbmVxIiwKKyAgICJiaWEiLAorICAgImJpYWVxIiwKKyAgICJiaWIiLAorICAg
ImJpYmVxIiwKKyAgICJiaWd0IiwKKyAgICJiaWd0ZXEiLAorICAgImJpbHQiLAorICAgImJpbHRl
cSIsCisgICAiYmJlcSIsCisgICAiYmJuZXEiLAorICAgImJiYSIsCisgICAiYmJhZXEiLAorICAg
ImJiYiIsCisgICAiYmJiZXEiLAorICAgImJiZ3QiLAorICAgImJiZ3RlcSIsCisgICAiYmJsdCIs
CisgICAiYmJsdGVxIiwKKyAgICJidGlvIiwKKyAgICJidGlzIiwKKyAgICJidGl6IiwKKyAgICJi
dGlueiIsCisgICAiYnRibyIsCisgICAiYnRicyIsCisgICAiYnRieiIsCisgICAiYnRibnoiLAor
ICAgImptcCIsCisgICAiYmFkZGlvIiwKKyAgICJiYWRkaXMiLAorICAgImJhZGRpeiIsCisgICAi
YmFkZGlueiIsCisgICAiYnN1YmlvIiwKKyAgICJic3ViaXMiLAorICAgImJzdWJpeiIsCisgICAi
YnN1YmlueiIsCisgICAiYm11bGlvIiwKKyAgICJibXVsaXMiLAorICAgImJtdWxpeiIsCisgICAi
Ym11bGlueiIsCisgICAiYm9yaW8iLAorICAgImJvcmlzIiwKKyAgICJib3JpeiIsCisgICAiYm9y
aW56IiwKKyAgICJicmVhayIsCisgICAiY2FsbCIsCisgICAicmV0IiwKKyAgICJjaWVxIiwKKyAg
ICJjaW5lcSIsCisgICAiY2lhIiwKKyAgICJjaWFlcSIsCisgICAiY2liIiwKKyAgICJjaWJlcSIs
CisgICAiY2lndCIsCisgICAiY2lndGVxIiwKKyAgICJjaWx0IiwKKyAgICJjaWx0ZXEiLAorICAg
InRpbyIsCisgICAidGlzIiwKKyAgICJ0aXoiLAorICAgInRpbnoiLAorICAgInRibyIsCisgICAi
dGJzIiwKKyAgICJ0YnoiLAorICAgInRibnoiLAorICAgInBlZWsiLAorICAgInBva2UiLAorICAg
ImJwZXEiLAorICAgImJwbmVxIiwKKyAgICJicGEiLAorICAgImJwYWVxIiwKKyAgICJicGIiLAor
ICAgImJwYmVxIiwKKyAgICJicGd0IiwKKyAgICJicGd0ZXEiLAorICAgImJwbHQiLAorICAgImJw
bHRlcSIsCisgICAiYWRkcCIsCisgICAiYW5kcCIsCisgICAib3JwIiwKKyAgICJzdWJwIiwKKyAg
ICJ4b3JwIiwKKyAgICJsb2FkcCIsCisgICAiY3BlcSIsCisgICAiY3BuZXEiLAorICAgImNwYSIs
CisgICAiY3BhZXEiLAorICAgImNwYiIsCisgICAiY3BiZXEiLAorICAgImNwZ3QiLAorICAgImNw
Z3RlcSIsCisgICAiY3BsdCIsCisgICAiY3BsdGVxIiwKKyAgICJzdG9yZXAiLAorICAgImJ0cG8i
LAorICAgImJ0cHMiLAorICAgImJ0cHoiLAorICAgImJ0cG56IiwKKyAgICJiYWRkcG8iLAorICAg
ImJhZGRwcyIsCisgICAiYmFkZHB6IiwKKyAgICJiYWRkcG56IgorICBdCisKK1g4Nl9JTlNUUlVD
VElPTlMgPQorICBbCisgICAiY2RxaSIsCisgICAiaWRpdmkiCisgIF0KKworSU5TVFJVQ1RJT05T
ID0gTUFDUk9fSU5TVFJVQ1RJT05TICsgWDg2X0lOU1RSVUNUSU9OUworCitJTlNUUlVDVElPTl9Q
QVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgSU5TVFJVQ1RJT05TLmpvaW4oJyl8KCcpICsg
JykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9l
eHRyYWN0b3JfY29uc3RhbnRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25z
dGFudHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK01BR0lDX05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZm
NWU3NTUgXQorCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNl
dHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zm
c2V0cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L29mZnNldHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU2IEBACisjIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJvZmZzZXRf
ZXh0cmFjdG9yX2NvbnN0YW50cyIKKworT0ZGU0VUX01BR0lDX05VTUJFUlMgPSBbIDB4ZWM1Nzdh
YzcsIDB4MGZmNWU3NTUgXQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBv
ZmZzZXRzTGlzdChhc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIHNpemVzTGlzdChhc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBSZXR1cm5z
IGEgbGlzdCBvZiBvZmZzZXRzIGFuZCBzaXplcyB1c2VkIGJ5IHRoZSBBU1QuICAgICAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgb2Zmc2V0c0xp
c3QoYXN0KQorICBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CitlbmQKKworZGVm
IHNpemVzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKK2VuZAorCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBvZmZzZXRzQW5kQ29uZmlndXJhdGlv
bkluZGV4KGFzdCwgZmlsZSkgLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICBb
b2Zmc2V0cywgaW5kZXhdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBQYXJzZXMgdGhlIG9mZnNldHMgZnJvbSBhIGZp
bGUgYW5kIHJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHRoZSAjCisjIGluZGV4IG9mIHRo
ZSBjb25maWd1cmF0aW9uIHRoYXQgaXMgdmFsaWQgaW4gdGhpcyBidWlsZCB0YXJnZXQuICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBvZmZzZXRzQW5kQ29u
ZmlndXJhdGlvbkluZGV4KGZpbGUpCisgIGluZGV4ID0gbmlsCisgIG9mZnNldHMgPSBbXQorICBl
bmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBuaWwKKyAgCisgIGRlZiByZWFkSW50KGVuZGlhbm5lc3Ms
IGlucCkKKyAgICBieXRlcyA9IFtdCisgICAgNC50aW1lcyB7CisgICAgICBieXRlcyA8PCBpbnAu
Z2V0Ynl0ZQorICAgIH0KKyAgICAKKyAgICBpZiBlbmRpYW5uZXNzID09IDpsaXR0bGUKKyAgICAg
ICMgTGl0dGxlIGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDAgfAorICAgICAgIGJ5dGVzWzFd
IDw8IDggfAorICAgICAgIGJ5dGVzWzJdIDw8IDE2IHwKKyAgICAgICBieXRlc1szXSA8PCAyNCkK
KyAgICBlbHNlCisgICAgICAjIEJpZyBlbmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAyNCB8Cisg
ICAgICAgYnl0ZXNbMV0gPDwgMTYgfAorICAgICAgIGJ5dGVzWzJdIDw8IDggfAorICAgICAgIGJ5
dGVzWzNdIDw8IDApCisgICAgZW5kCisgIGVuZAorICAKKyAgWzpsaXR0bGUsIDpiaWddLmVhY2gg
eworICAgIHwgZW5kaWFubmVzcyB8CisgICAgbWFnaWNCeXRlcyA9IFtdCisgICAgTUFHSUNfTlVN
QkVSUy5lYWNoIHsKKyAgICAgIHwgbnVtYmVyIHwKKyAgICAgIGN1cnJlbnRCeXRlcyA9IFtdCisg
ICAgICA0LnRpbWVzIHsKKyAgICAgICAgY3VycmVudEJ5dGVzIDw8IChudW1iZXIgJiAweGZmKQor
ICAgICAgICBudW1iZXIgPj49IDgKKyAgICAgIH0KKyAgICAgIGlmIGVuZGlhbm5lc3MgPT0gOmJp
ZworICAgICAgICBjdXJyZW50Qnl0ZXMucmV2ZXJzZSEKKyAgICAgIGVuZAorICAgICAgbWFnaWNC
eXRlcyArPSBjdXJyZW50Qnl0ZXMKKyAgICB9CisgICAgCisgICAgRmlsZS5vcGVuKGZpbGUsICJy
IikgeworICAgICAgfCBpbnAgfAorICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgIGxvb3Ag
eworICAgICAgICBieXRlID0gaW5wLmdldGJ5dGUKKyAgICAgICAgYnJlYWsgdW5sZXNzIGJ5dGUK
KyAgICAgICAgaWYgYnl0ZSA9PSBtYWdpY0J5dGVzW3doZXJlSW5NYXJrZXJdCisgICAgICAgICAg
d2hlcmVJbk1hcmtlciArPSAxCisgICAgICAgICAgaWYgd2hlcmVJbk1hcmtlciA9PSBtYWdpY0J5
dGVzLnNpemUKKyAgICAgICAgICAgICMgV2UgaGF2ZSBhIG1hdGNoISBJZiB3ZSBoYXZlIG5vdCB5
ZXQgcmVhZCB0aGUgZW5kaWFubmVzcyBtYXJrZXIgYW5kIGluZGV4LAorICAgICAgICAgICAgIyB0
aGVuIHJlYWQgdGhvc2Ugbm93OyBvdGhlcndpc2UgcmVhZCBhbiBvZmZzZXQuCisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIGlmIG5vdCBpbmRleAorICAgICAgICAgICAgICBpbmRleCA9IHJlYWRJ
bnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBvZmZz
ZXRzIDw8IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAgICAgZW5kCisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICAgICAgZW5kCisgICAg
ICAgIGVsc2UKKyAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICBlbmQKKyAgICAg
IH0KKyAgICB9CisgICAgCisgICAgYnJlYWsgaWYgaW5kZXgKKyAgfQorICAKKyAgcmFpc2UgdW5s
ZXNzIGluZGV4CisgIAorICBbb2Zmc2V0cywgaW5kZXhdCitlbmQKKworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgYnVpbGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpIC0+
IFtvZmZzZXRzLCBzaXplc10gICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEJ1
aWxkcyBhIG1hcHBpbmcgYmV0d2VlbiBTdHJ1Y3RPZmZzZXQgbm9kZXMgYW5kIHRoZWlyIHZhbHVl
cy4gICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBidWls
ZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkKKyAgb2Zmc2V0c01hcCA9IHt9CisgIHNpemVz
TWFwID0ge30KKyAgYXN0T2Zmc2V0c0xpc3QgPSBvZmZzZXRzTGlzdChhc3QpCisgIGFzdFNpemVz
TGlzdCA9IHNpemVzTGlzdChhc3QpCisgIHJhaXNlIHVubGVzcyBhc3RPZmZzZXRzTGlzdC5zaXpl
ICsgYXN0U2l6ZXNMaXN0LnNpemUgPT0gb2Zmc2V0c0xpc3Quc2l6ZQorICBvZmZzZXRzTGlzdChh
c3QpLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBzdHJ1Y3RPZmZzZXQsIGluZGV4IHwKKyAgICBv
ZmZzZXRzTWFwW3N0cnVjdE9mZnNldF0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIHNpemVz
TGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBzaXplb2YsIGluZGV4IHwKKyAgICBz
aXplc01hcFtzaXplb2ZdID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQorICBbb2Zmc2V0c01hcCwg
c2l6ZXNNYXBdCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
cGFyc2VyLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3BhcnNlci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OTEgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImluc3Ry
dWN0aW9ucyIKK3JlcXVpcmUgInJlZ2lzdGVycyIKKworY2xhc3MgVG9rZW4KKyAgYXR0cl9yZWFk
ZXIgOmNvZGVPcmlnaW4sIDpzdHJpbmcKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IHN0cmluZykKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgICBAc3RyaW5nID0gc3Ry
aW5nCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIGlmIG90aGVyLmlzX2E/IFRva2Vu
CisgICAgICBAc3RyaW5nID09IG90aGVyLnN0cmluZworICAgIGVsc2UKKyAgICAgIEBzdHJpbmcg
PT0gb3RoZXIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgPX4ob3RoZXIpCisgICAgQHN0cmlu
ZyA9fiBvdGhlcgorICBlbmQKKyAgCisgIGRlZiB0b19zCisgICAgIiN7QHN0cmluZy5pbnNwZWN0
fSBhdCBsaW5lICN7Y29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNv
bW1lbnQpCisgICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjog
I3t0b19zfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc306ICN7
Y29tbWVudFswXX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIFRoZSBsZXhlci4gVGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYW4g
YXJyYXkgb2YgdG9rZW5zLiAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisKK2RlZiBsZXgoc3RyKQorICByZXN1bHQgPSBbXQorICBsaW5lTnVtYmVyID0gMQor
ICB3aGlsZSBub3Qgc3RyLmVtcHR5PworICAgIGNhc2Ugc3RyCisgICAgd2hlbiAvXEFcIyhbXlxu
XSopLworICAgICAgIyBjb21tZW50LCBpZ25vcmUKKyAgICB3aGVuIC9cQVxuLworICAgICAgcmVz
dWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICAgIGxpbmVOdW1iZXIgKz0gMQor
ICAgIHdoZW4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9r
ZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBXC4oW2EtekEtWjAtOV9dKikvCisg
ICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBXyhb
YS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYp
CisgICAgd2hlbiAvXEEoWyBcdF0rKS8KKyAgICAgICMgd2hpdGVzcGFjZSwgaWdub3JlCisgICAg
d2hlbiAvXEEweChbMC05YS1mQS1GXSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5l
TnVtYmVyLCAkJi5oZXgudG9fcykKKyAgICB3aGVuIC9cQTAoWzAtN10rKS8KKyAgICAgIHJlc3Vs
dCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYub2N0LnRvX3MpCisgICAgd2hlbiAvXEEoWzAt
OV0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hl
biAvXEE6Oi8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAg
d2hlbiAvXEFbOixcKFwpXFtcXT1cK1wtKl0vCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxp
bmVOdW1iZXIsICQmKQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJMZXhlciBlcnJvciBhdCBsaW5l
IG51bWJlciAje2xpbmVOdW1iZXJ9LCB1bmV4cGVjdGVkIHNlcXVlbmNlICN7c3RyWzAuLjIwXS5p
bnNwZWN0fSIKKyAgICBlbmQKKyAgICBzdHIgPSAkfi5wb3N0X21hdGNoCisgIGVuZAorICByZXN1
bHQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUb2tlbiBpZGVu
dGlmaWNhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgaXNSZWdpc3Rlcih0
b2tlbikKKyAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTgorZW5kCisKK2RlZiBpc0luc3RydWN0
aW9uKHRva2VuKQorICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlz
S2V5d29yZCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBKCh0cnVlKXwoZmFsc2UpfChpZil8KHRoZW4p
fChlbHNlKXwoZWxzaWYpfChlbmQpfChhbmQpfChvcil8KG5vdCl8KG1hY3JvKXwoY29uc3QpfChz
aXplb2YpfChlcnJvcikpXFovIG9yCisgICAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTiBvcgor
ICAgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJZGVudGlmaWVy
KHRva2VuKQorICB0b2tlbiA9fiAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKVxaLyBhbmQgbm90
IGlzS2V5d29yZCh0b2tlbikKK2VuZAorCitkZWYgaXNMYWJlbCh0b2tlbikKKyAgdG9rZW4gPX4g
L1xBXyhbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc0xvY2FsTGFiZWwodG9rZW4pCisg
IHRva2VuID1+IC9cQVwuKFthLXpBLVowLTlfXSopXFovCitlbmQKKworZGVmIGlzVmFyaWFibGUo
dG9rZW4pCisgIGlzSWRlbnRpZmllcih0b2tlbikgb3IgaXNSZWdpc3Rlcih0b2tlbikKK2VuZAor
CitkZWYgaXNJbnRlZ2VyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbMC05XS8KK2VuZAorCisjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgcGFyc2VyLiBUYWtlcyBhbiBhcnJh
eSBvZiB0b2tlbnMgYW5kIHJldHVybnMgYW4gQVNULiBNZXRob2RzICAgICAjCisjIG90aGVyIHRo
YW4gcGFyc2UodG9rZW5zKSBhcmUgbm90IGZvciBwdWJsaWMgY29uc3VtcHRpb24uICAgICAgICAg
ICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIFBhcnNlcgor
ICBkZWYgaW5pdGlhbGl6ZSh0b2tlbnMpCisgICAgQHRva2VucyA9IHRva2VucworICAgIEBpZHgg
PSAwCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgQHRva2Vu
c1tAaWR4XQorICAgICAgQHRva2Vuc1tAaWR4XS5wYXJzZUVycm9yKCpjb21tZW50KQorICAgIGVs
c2UKKyAgICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBh
dCBlbmQgb2YgZmlsZSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0
IGVuZCBvZiBmaWxlOiAje2NvbW1lbnRbMF19IgorICAgICAgZW5kCisgICAgZW5kCisgIGVuZAor
ICAKKyAgZGVmIGNvbnN1bWUocmVnZXhwKQorICAgIGlmIHJlZ2V4cAorICAgICAgcGFyc2VFcnJv
ciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9fiByZWdleHAKKyAgICBlbHNlCisgICAgICBwYXJzZUVy
cm9yIHVubGVzcyBAaWR4ID09IEB0b2tlbnMubGVuZ3RoCisgICAgZW5kCisgICAgQGlkeCArPSAx
CisgIGVuZAorICAKKyAgZGVmIHNraXBOZXdMaW5lCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9
PSAiXG4iCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQ
cmVkaWNhdGVBdG9tCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibm90IgorICAgICAgQGlkeCAr
PSAxCisgICAgICBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmVzdWx0ID0g
cGFyc2VQcmVkaWNhdGUKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0g
IikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gInRydWUiCisgICAgICByZXN1bHQgPSBUcnVlLmluc3RhbmNlCisgICAgICBAaWR4ICs9
IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImZhbHNlIgorICAg
ICAgcmVzdWx0ID0gRmFsc2UuaW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0
CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IFNl
dHRpbmcuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3Ry
aW5nKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJz
ZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQW5kCisgICAg
cmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAi
YW5kIgorICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAg
QGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0
ZUF0b20KKyAgICAgIHJlc3VsdCA9IEFuZC5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkK
KyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGUKKyAg
ICAjIHNvbWUgZXhhbXBsZXMgb2YgcHJlY2VkZW5jZToKKyAgICAjIG5vdCBhIGFuZCBiIC0+IChu
b3QgYSkgYW5kIGIKKyAgICAjIGEgYW5kIGIgb3IgYyAtPiAoYSBhbmQgYikgb3IgYworICAgICMg
YSBvciBiIGFuZCBjIC0+IGEgb3IgKGIgYW5kIGMpCisgICAgCisgICAgcmVzdWx0ID0gcGFyc2VQ
cmVkaWNhdGVBbmQKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJvciIKKyAgICAgIGNvZGVP
cmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAgICAg
c2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICAgIHJlc3Vs
dCA9IE9yLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJlc3Vs
dAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVZhcmlhYmxlCisgICAgaWYgaXNSZWdpc3RlcihAdG9r
ZW5zW0BpZHhdKQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9fiBGUFJfUEFUVEVSTgorICAgICAg
ICByZXN1bHQgPSBGUFJlZ2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4s
IEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBSZWdp
c3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0
cmluZykKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQor
ICAgICAgcmVzdWx0ID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4s
IEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBl
bmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VBZGRy
ZXNzKG9mZnNldCkKKyAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJbIgor
ICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAKKyAgICAjIFRo
cmVlIHBvc3NpYmlsaXRpZXM6CisgICAgIyBbXSAgICAgICAtPiBBYnNvbHV0ZUFkZHJlc3MKKyAg
ICAjIFthXSAgICAgIC0+IEFkZHJlc3MKKyAgICAjIFthLGJdICAgIC0+IEJhc2VJbmRleCB3aXRo
IHNjYWxlID0gMQorICAgICMgW2EsYixjXSAgLT4gQmFzZUluZGV4CisgICAgCisgICAgQGlkeCAr
PSAxCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIEBpZHggKz0gMQorICAgICAg
cmV0dXJuIEFic29sdXRlQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0KQorICAgIGVuZAor
ICAgIGEgPSBwYXJzZVZhcmlhYmxlCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAg
IHJlc3VsdCA9IEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIGEsIG9mZnNldCkKKyAgICBlbHNlCisg
ICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgQGlkeCAr
PSAxCisgICAgICBiID0gcGFyc2VWYXJpYWJsZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
XSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCAxLCBv
ZmZzZXQpCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlk
eF0gPT0gIiwiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBb
IjEiLCAiMiIsICI0IiwgIjgiXS5tZW1iZXI/IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAg
IGMgPSBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICByZXN1bHQg
PSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIGMsIG9mZnNldCkKKyAgICAgIGVuZAor
ICAgIGVuZAorICAgIEBpZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJz
ZUNvbG9uQ29sb24KKyAgICBza2lwTmV3TGluZQorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4KKyAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vu
c1tAaWR4XQorICAgIG5hbWVzID0gW0B0b2tlbnNbQGlkeF0uc3RyaW5nXQorICAgIEBpZHggKz0g
MQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIjo6IgorICAgICAgQGlkeCArPSAxCisgICAg
ICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgbmFt
ZXMgPDwgQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICAg
IHJhaXNlIGlmIG5hbWVzLmVtcHR5PworICAgIFtjb2RlT3JpZ2luLCBuYW1lc10KKyAgZW5kCisg
IAorICBkZWYgcGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHNraXBOZXdMaW5lCisgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgTmVnSW1tZWRpYXRlLm5l
dyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAg
IGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3Vs
dCA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4
XSA9PSAiKSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJbnRl
Z2VyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pKQorICAgICAgQGlkeCAr
PSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQor
ICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIGlmIG5hbWVz
LnNpemUgPiAxCisgICAgICAgIFN0cnVjdE9mZnNldC5mb3JGaWVsZChjb2RlT3JpZ2luLCBuYW1l
c1swLi4tMl0uam9pbignOjonKSwgbmFtZXNbLTFdKQorICAgICAgZWxzZQorICAgICAgICBWYXJp
YWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzWzBdKQorICAgICAgZW5kCisgICAgZWxzaWYg
aXNSZWdpc3RlciBAdG9rZW5zW0BpZHhdCisgICAgICBwYXJzZVZhcmlhYmxlCisgICAgZWxzaWYg
QHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIgorICAgICAgQGlkeCArPSAxCisgICAgICBjb2RlT3Jp
Z2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAgU2l6ZW9mLmZvck5hbWUoY29kZU9y
aWdpbiwgbmFtZXMuam9pbignOjonKSkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbk11bAorICAgIHNraXBOZXdMaW5l
CisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlk
eF0gPT0gIioiCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgcmVzdWx0ID0gTXVsSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0u
Y29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAgZWxzZQorICAg
ICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAg
ZGVmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgQHRva2Vuc1tAaWR4XSA9PSAiLSIgb3IgQHRva2Vu
c1tAaWR4XSA9PSAic2l6ZW9mIiBvciBpc0ludGVnZXIoQHRva2Vuc1tAaWR4XSkgb3IgaXNWYXJp
YWJsZShAdG9rZW5zW0BpZHhdKQorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb24KKyAg
ICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbk11bAorICAgIHdoaWxl
IEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICBpZiBA
dG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0g
QWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBw
YXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICItIgorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gU3ViSW1tZWRpYXRlcy5uZXcoQHRva2Vu
c1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAg
ICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1bHQKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1lbnQpCisgICAgaWYgY291bGRCZUV4cHJl
c3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIGlmIEB0b2tlbnNbQGlk
eF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRkcmVzcyhleHByKQorICAgICAgZWxzZQorICAgICAg
ICBleHByCisgICAgICBlbmQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAg
cGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCAwKSkK
KyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IExhYmVsUmVm
ZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExhYmVsLmZvck5hbWUoQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4ICs9
IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhdCisg
ICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tl
bnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxz
ZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50KQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBw
YXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb25zdW1lKC9cQVwoXFov
KQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAgbG9vcCB7CisgICAgICBza2lwTmV3TGluZQorICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGJy
ZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgdmFy
aWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9r
ZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5l
CisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IKKyAgICAg
ICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IKKyAgICAgIGVuZAorICAgIH0K
KyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAorICBkZWYgcGFyc2VTZXF1ZW5jZShmaW5hbCwgY29t
bWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAg
ICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAgICAgIGlmIChAaWR4ID09IEB0b2tlbnMubGVuZ3Ro
IGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAg
ICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAj
IGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0g
ImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNW
YXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZm9yTmFt
ZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAi
PSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhbHVlID0gcGFyc2VPcGVyYW5kKCJ3aGls
ZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5uYW1lfSIpCisgICAgICAgIGxpc3QgPDwgQ29u
c3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAg
ICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImVycm9yIgorICAgICAgICBsaXN0IDw8IEVycm9y
Lm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4pCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5l
CisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgIGNvbnN1bWUoL1xB
KCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWZUaGVuRWxz
ZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgv
XEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRlIG9mIFwiaWYgI3twcmVk
aWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBsaXN0IDw8IGlmVGhlbkVsc2UKKyAgICAgICAgd2hp
bGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisgICAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIHNraXBO
ZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgICBj
b25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAg
ICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFy
c2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRlIG9m
IFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICAgIGlmVGhlbkVsc2UuZWxzZUNh
c2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlmVGhlbkVsc2UgPSBlbHNlQ2FzZQorICAgICAgICBl
bmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiZWxzZSIKKyAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRc
Wi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNlIGZvciBcImlmICN7cHJlZGljYXRlLmR1bXB9
XCIiKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiZW5kIgorICAgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgorICAgICAg
ICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50
aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5n
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFi
bGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lk
ZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGxpc3QgPDwg
TWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICAgIGVsc2lm
IGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZwor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9r
ZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAg
ICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5kIGl0J3MgdGhlIGxhc3Qgb25lLgorICAg
ICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAg
ICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAg
ICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICBlbHNlCisgICAgICAgICAgIyBJdCdzIGRlZmluaXRlbHkgYW4gaW5zdHJ1Y3Rpb24sIGFu
ZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJhbmQuCisgICAgICAgICAgb3BlcmFuZHMgPSBbXQor
ICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxzZQorICAgICAgICAgIGxvb3AgeworICAgICAg
ICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgaW5zdHJ1Y3Rp
b24gI3tuYW1lfSIpCisgICAgICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tl
bnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICAg
ICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uIGFuZCBvZiB0aGUgc2VxdWVuY2UuCisg
ICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSB0cnVlCisgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgICAgICAjIEhh
cyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0
aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICBi
cmVhaworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3Rl
ZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFsfSBhZnRlciAje29wZXJhbmRzLmxhc3QuZHVt
cH0iKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgfQorICAgICAgICAgIGxpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAgICAgIGlmIGVu
ZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgZW5kCisgICAgICAgIGVu
ZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9y
aWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tA
aWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gIigiCisgICAgICAgICAgIyBNYWNybyBpbnZvY2F0aW9uLgorICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAg
ICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUK
KyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAgICAgICAgICAg
ICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQorICAgICAgICAgICAgICAgIGNvZGVPcmlnaW5Jbm5l
ciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICAgICAg
ICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2Yg
YW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1bWVudCB0byAje25hbWV9IikKKyAgICAgICAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBNYWNyby5uZXco
Y29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlhYmxlcywgYm9keSkKKyAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRl
IG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgor
ICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAg
ICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9yICJVbmV4
cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5zcGVjdH0gd2hpbGUgcGFyc2luZyBpbnZv
Y2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAg
fQorICAgICAgICAgIGVuZAorICAgICAgICAgIGxpc3QgPDwgTWFjcm9DYWxsLm5ldyhjb2RlT3Jp
Z2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3Ig
IkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFtZX0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYg
aXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAg
ICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9
IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVy
cm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI6IgorICAgICAgICAjIEl0J3MgYSBsYWJlbC4K
KyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAgICAgbGlzdCA8PCBMYWJlbC5mb3JOYW1l
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVsc2UKKyAgICAgICAgICBsaXN0IDw8IExvY2Fs
TGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbmQKKyAgICAgICAgQGlk
eCArPSAxCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgIkV4cGVjdGluZyB0ZXJtaW5h
bCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5l
dyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisgIGVuZAorZW5kCisKK2RlZiBwYXJzZSh0b2tlbnMp
CisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9rZW5zKQorICBwYXJzZXIucGFyc2VTZXF1ZW5jZShu
aWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jl
Z2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK0dQUlMgPQorICBbCisgICAidDAiLAor
ICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMiLAorICAgInQ0IiwKKyAgICJjZnIiLAorICAgImEw
IiwKKyAgICJhMSIsCisgICAicjAiLAorICAgInIxIiwKKyAgICJzcCIKKyAgXQorCitGUFJTID0K
KyAgWworICAgImZ0MCIsCisgICAiZnQxIiwKKyAgICJmdDIiLAorICAgImZ0MyIsCisgICAiZnQ0
IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisgICAiZmExIiwKKyAgICJmYTIiLAorICAgImZhMyIs
CisgICAiZnIiCisgIF0KKworUkVHSVNURVJTID0gR1BSUyArIEZQUlMKKworR1BSX1BBVFRFUk4g
PSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKK0ZQUl9Q
QVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgRlBSUy5qb2luKCcpfCgnKSArICcpKVxcWicp
CisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBSRUdJU1RFUlMuam9p
bignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vc2V0dGluZ3MucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMjEgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVp
cmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBjb21wdXRlU2V0dGluZ3NDb21iaW5h
dGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25zICAgICAgICAgICAgICAjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkgb2Ygc2V0dGluZ3MgbWFwcywgd2hlcmUgYSBz
ZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMgIworIyBhIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhc3Nl
bWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIG1hcCAgICAgICAjCisjIGNvbnRhaW5zIGtl
eSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBzZXR0aW5ncyBuYW1lcyAoc3RyaW5ncykgYW5k
ICMKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVhbnMgKHRydWUgZm9yIGVuYWJsZWQsIGZhbHNlIGZv
ciBkaXNhYmxlZCkuICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor
ZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIHNldHRpbmdzQ29tYmluYXRp
b25zID0gW10KKyAgCisgIGRlZiBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlv
bnMsIG1hcFNvRmFyLCByZW1haW5pbmcpCisgICAgaWYgcmVtYWluaW5nLmVtcHR5PworICAgICAg
c2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFwU29GYXIKKyAgICAgIHJldHVybgorICAgIGVuZAor
ICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1d
ID0gdHJ1ZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3
TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAor
ICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gZmFsc2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0b3Io
c2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgZW5kCisg
IAorICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIHt9LCAoYXN0LmZp
bHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7fHZ8IHYubmFtZX0gKyBbIlg4NiIsICJBUk12NyJd
KS51bmlxKQorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMKK2VuZAorCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3Qp
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0
dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwgLi4uIH0gICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBEZXRlcm1pbmVzIGlmIHRoZSBzZXR0aW5ncyBjb21iaW5hdGlvbiBp
cyB2YWxpZCwgYW5kIGlmIHNvLCBjYWxscyAgICAjCisjIHRoZSBibG9jayB3aXRoIHRoZSBpbmZv
cm1hdGlvbiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBjb2RlLiAgICAgICAgICAgICMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRp
bmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0aGlzIGNvbWJpbmF0b3Ig
Y2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWltZWRCYWNrZW5kcyA9IDAKKyAgc2VsZWN0ZWRC
YWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2ggeworICAgIHwgYmFja2VuZCB8CisgICAgaXNT
dXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2JhY2tlbmRdCisgICAgcmFpc2UgdW5sZXNzIGlz
U3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWltZWRCYWNrZW5kcyArPSBpZiBpc1N1cHBvcnRl
ZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlzU3VwcG9ydGVkCisgICAgICBzZWxlY3RlZEJh
Y2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0KKyAgCisgIHJldHVybiBpZiBudW1DbGFpbWVk
QmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUgdGhlIEFTVCBkb3duIHRvIGEgbG93LWxldmVs
IGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25hbHMpLgorICBsb3dMZXZlbEFTVCA9IGFzdC5y
ZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIHlpZWxkIGNvbmNyZXRlU2V0
dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJhY2tlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFz
dCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0
dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgc2V0
dGluZ3NDb21iaW5hdGlvbnMpIHsgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3Ms
IGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAgICAgICAgICMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyBFeGVjdXRlcyB0aGUgZ2l2ZW4gYmxvY2sgZm9yIGVhY2ggdmFsaWQgc2V0dGlu
Z3MgY29tYmluYXRpb24gaW4gdGhlICAjCisjIHNldHRpbmdzIG1hcC4gVGhlIGFzdCBwYXNzZWQg
aW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQgICAgICAgICAgICAgICMKKyMgKGFzdC5yZXNvbHZl
KSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIFRoZSBmaXJzdCBmb3JtIHdpbGwgY2FsbCBjb21wdXRlU2V0
dGluZ3NDb21iaW5hdGlvbnMoYXN0KSBmb3IgeW91LiAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisKK2RlZiBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwg
Km9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMpCisgIHJhaXNlIGlmIG9wdGlvbmFsU2V0dGlu
Z3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEKKyAgCisgIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5h
dGlvbnMuZW1wdHk/CisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBjb21wdXRlU2V0dGluZ3ND
b21iaW5hdGlvbnMoYXN0KQorICBlbHNlCisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBvcHRp
b25hbFNldHRpbmdzQ29tYmlhdGlvbnNbMF0KKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0
aW9ucy5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgaW5kZXggfAor
ICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgeworICAgICAgfCBjb25jcmV0
ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgICAgeWllbGQgY29uY3JldGVT
ZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgfQorICB9CitlbmQKKwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgY3BwU2V0dGluZ3NUZXN0KGNvbmNy
ZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIFJldHVybnMgdGhlIEMrKyBjb2RlIHVzZWQgdG8gdGVzdCBpZiB3ZSBhcmUg
aW4gYSBjb25maWd1cmF0aW9uIHRoYXQgICMKKyMgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIGNv
bmNyZXRlIHNldHRpbmdzLiAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRp
bmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdzLnRvX2EuY29sbGVjdHsKKyAgICB8IHBh
aXIgfAorICAgIChpZiBwYWlyWzFdCisgICAgICAgIiIKKyAgICAgZWxzZQorICAgICAgICIhIgor
ICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIgKyBwYWlyWzBdCisgIH0uam9pbigiICYmICIpCitl
bmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgaXNBU1RFcnJvbmVvdXMo
YXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIFRlc3RzIHRvIHNlZSBpZiB0aGUgQVNUIGNsYWltcyB0aGF0IHRo
ZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUgICMKKyMgdXNlcidzIGNvZGUsIGFmdGVyIHNl
dHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4gICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAg
bm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5PworZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFbWl0cyBh
IGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBnaXZlbiBjb25maWd1cmF0
aW9uLiAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgYXNzZXJ0Q29u
ZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICBwdXRzIGNwcFNldHRpbmdzVGVzdChjb25j
cmV0ZVNldHRpbmdzKQorICBwdXRzICIjZWxzZSIKKyAgcHV0cyAiI2Vycm9yIFwiQ29uZmlndXJh
dGlvbiBtaXNtYXRjaC5cIiIKKyAgcHV0cyAiI2VuZGlmIgorZW5kCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0
dGluZ3MsIGFzdCwgYmFja2VuZCkgeyAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0
aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4uIH0gICAgICAgICAgICAgICAgICAgICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIEVtaXRzIGFsbCByZWxldmFudCBndWFyZHMgdG8gc2VlIGlmIHRoZSBj
b25maWd1cmF0aW9uIGhvbGRzIGFuZCAgICAgICMKKyMgY2FsbHMgdGhlIGJsb2NrIGlmIHRoZSBj
b25maWd1cmF0aW9uIGlzIG5vdCBlcnJvbmVvdXMuICAgICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNv
bmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkKKyAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29u
Y3JldGVTZXR0aW5ncykKKyAgCisgIGlmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAgICBwdXRzICIj
ZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uXCIiCisgIGVsc2lmIG5vdCBXT1JLSU5HX0JB
Q0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICBwdXRzICIjZXJyb3IgXCJUaGlzIGJhY2tlbmQg
aXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UKKyAgICB5aWVsZCBjb25jcmV0ZVNldHRp
bmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICBwdXRzICIjZW5kaWYiCitlbmQKKworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRp
b25zKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgfCBj
b25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgRW1pdHMgZ3VhcmQgY29kZXMgZm9yIGFsbCB2YWxp
ZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxzIHRoZSBibG9jayAgIworIyBmb3IgdGhvc2UgY29u
ZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5kIG5vdCBlcnJvbmVvdXMuICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZW1pdENvZGVJbkFsbENv
bmZpZ3VyYXRpb25zKGFzdCkKKyAgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3Qp
IHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleCB8
CisgICAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgICB5aWVsZCBj
b25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICBwdXRzICIj
ZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNTIg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIK
KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFu
eSBJZlRoZW5FbHNlIG5vZGVzIGJ5ICAgICAgICMKKyMgc3Vic3RpdHV0aW5nIGNvbmNyZXRlIGJv
b2xlYW4gdmFsdWVzIGZvciBlYWNoIFNldHRpbmcuICAgICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAg
Y2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xh
c3MgVHJ1ZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5k
CitlbmQKKworY2xhc3MgRmFsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAg
ICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcKKyAgZGVmIHJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykKKyAgICBzZXR0aW5nc1tAbmFtZV0uYXNOb2RlCisgIGVuZAorZW5kCisKK2Ns
YXNzIEFuZAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIGFuZCBAcmlnaHQucmVzb2x2ZVNldHRpbmdzKHNl
dHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE9yCisgIGRlZiByZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykudmFsdWUgb3IgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9k
ZQorICBlbmQKK2VuZAorCitjbGFzcyBOb3QKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykKKyAgICAobm90IEBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05v
ZGUKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZQorICBkZWYgcmVzb2x2ZVNldHRpbmdz
KHNldHRpbmdzKQorICAgIGlmIEBwcmVkaWNhdGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52
YWx1ZQorICAgICAgQHRoZW5DYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbHNl
CisgICAgICBAZWxzZUNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVuZAorICBl
bmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdz
KQorICAgIG5ld0xpc3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAg
ICAgIGl0ZW0gPSBpdGVtLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgIGlmIGl0ZW0u
aXNfYT8gU2VxdWVuY2UKKyAgICAgICAgbmV3TGlzdCArPSBpdGVtLmxpc3QKKyAgICAgIGVsc2UK
KyAgICAgICAgbmV3TGlzdCA8PCBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2Uu
bmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIG5vZGUuZGVtYWNyb2lmeShtYWNyb3MpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5zdWJzdGl0dXRlKG1hcHBp
bmcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIGRlbWFjcm9pZnkoKSBjb25zdHJ1Y3RzIGEgbmV3IEFTVCB0aGF0IGRvZXMg
bm90IGhhdmUgYW55IE1hY3JvICAgICAgICMKKyMgbm9kZXMsIHdoaWxlIHN1YnN0aXR1dGUoKSBy
ZXBsYWNlcyBWYXJpYWJsZSBub2RlcyB3aXRoIHRoZSBnaXZlbiAgICAgIworIyBub2RlcyBpbiB0
aGUgbWFwcGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRl
ZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwK
KyAgICAgIGNoaWxkLmRlbWFjcm9pZnkobWFjcm9zKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYg
c3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAor
ICAgICAgY2hpbGQuc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYg
c3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hp
bGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIH0KKyAgZW5k
CitlbmQKKworY2xhc3MgTWFjcm8KKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBteU1h
cHBpbmcgPSB7fQorICAgIG1hcHBpbmcuZWFjaF9wYWlyIHsKKyAgICAgIHwga2V5LCB2YWx1ZSB8
CisgICAgICB1bmxlc3MgQHZhcmlhYmxlcy5pbmNsdWRlPyBrZXkKKyAgICAgICAgbXlNYXBwaW5n
W2tleV0gPSB2YWx1ZQorICAgICAgZW5kCisgICAgfQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAg
IHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShteU1hcHBpbmcpCisgICAgfQorICBl
bmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZQorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAg
IGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBz
ZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIHN1YnN0
aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5n
W3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFz
cyBTZXF1ZW5jZQorICBkZWYgc3Vic3RpdHV0ZShjb25zdGFudHMpCisgICAgbmV3TGlzdCA9IFtd
CisgICAgbXlDb25zdGFudHMgPSBjb25zdGFudHMuZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAg
ICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAgICAgbXlDb25z
dGFudHNbaXRlbS52YXJpYWJsZV0gPSBpdGVtLnZhbHVlLnN1YnN0aXR1dGUobXlDb25zdGFudHMp
CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5zdWJzdGl0dXRlKG15Q29uc3Rh
bnRzKQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdM
aXN0KQorICBlbmQKKyAgCisgIGRlZiByZW5hbWVMYWJlbHMoY29tbWVudCkKKyAgICBtYXBwaW5n
ID0ge30KKyAgICAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBp
dGVtLmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAgbWFwcGluZ1tpdGVtXSA9IExvY2FsTGFiZWwu
dW5pcXVlKGlmIGNvbW1lbnQgdGhlbiBjb21tZW50ICsgIl8iIGVsc2UgIiIgZW5kICsgaXRlbS5j
bGVhbk5hbWUpCisgICAgICBlbmQKKyAgICB9CisgICAgCisgICAgc3Vic3RpdHV0ZUxhYmVscyht
YXBwaW5nKQorICBlbmQKKyAgCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBteU1hY3Jv
cyA9IG1hY3Jvcy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBp
ZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBpdGVtCisg
ICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAg
ICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICAjIElnbm9yZS4K
KyAgICAgIGVsc2lmIGl0ZW0uaXNfYT8gTWFjcm9DYWxsCisgICAgICAgIG1hcHBpbmcgPSB7fQor
ICAgICAgICBteU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisgICAgICAgIHJhaXNlICJDb3VsZCBu
b3QgZmluZCBtYWNybyAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1
bmxlc3MgbXlNYWNyb3NbaXRlbS5uYW1lXQorICAgICAgICByYWlzZSAiQXJndW1lbnQgY291bnQg
bWlzbWF0Y2ggZm9yIGNhbGwgdG8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3Ry
aW5nfSIgdW5sZXNzIGl0ZW0ub3BlcmFuZHMuc2l6ZSA9PSBteU1hY3Jvc1tpdGVtLm5hbWVdLnZh
cmlhYmxlcy5zaXplCisgICAgICAgIGl0ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAg
ICAgfCBpZHggfAorICAgICAgICAgIGlmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBWYXJpYWJs
ZSBhbmQgbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAgICBteU15
TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jv
c1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3Nb
aXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2lmIGl0
ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBNYWNybworICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1h
Y3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhd
CisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0u
bmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFj
cm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gbmlsCisgICAgICAgICAgICBtYXBwaW5n
W215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gaXRlbS5vcGVyYW5kc1tpZHhd
CisgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCArPSBteU1hY3Jvc1tp
dGVtLm5hbWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNyb3Mp
LnJlbmFtZUxhYmVscyhpdGVtLm5hbWUpLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlz
dCA8PCBpdGVtLmRlbWFjcm9pZnkobXlNYWNyb3MpCisgICAgICBlbmQKKyAgICB9CisgICAgU2Vx
dWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpLnN1YnN0aXR1dGUoe30pCisgIGVuZAorZW5k
CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2ZU9mZnNl
dHMob2Zmc2V0cywgc2l6ZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgaGFzIG9mZnNldCB2YWx1
ZXMgaW5zdGVhZCBvZiBzeW1ib2xpYyAgICAgICAjCisjIG9mZnNldHMuICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVPZmZz
ZXRzKG9mZnNldHMsIHNpemVzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAor
ICAgICAgY2hpbGQucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgfQorICBlbmQK
K2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXQKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMs
IHNpemVzKQorICAgIGlmIG9mZnNldHNbc2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9y
aWdpbiwgb2Zmc2V0c1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVu
ZAorZW5kCisKK2NsYXNzIFNpemVvZgorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6
ZXMpCisgICAgaWYgc2l6ZXNbc2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwg
c2l6ZXNbc2VsZl0pCisgICAgZWxzZQorICAgICAgcHV0cyAiQ291bGQgbm90IGZpbmQgI3tzZWxm
Lmluc3BlY3R9IGluICN7c2l6ZXMua2V5cy5pbnNwZWN0fSIKKyAgICAgIHB1dHMgInNpemVzID0g
I3tzaXplcy5pbnNwZWN0fSIKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5mb2xkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIFJlc29sdmUgY29uc3RhbnQgcmVmZXJlbmNlcyBhbmQgY29tcHV0ZSBhcml0aG1l
dGljIGV4cHJlc3Npb25zLiAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisKK2NsYXNzIE5vZGUKKyAgZGVmIGZvbGQKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNo
aWxkIHwKKyAgICAgIGNoaWxkLmZvbGQKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZElt
bWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQg
PSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlh
dGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIElt
bWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgKyBAcmlnaHQudmFsdWUpCisgIGVu
ZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBs
ZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVz
cyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0Lmlz
X2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUg
LSBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMKKyAgZGVm
IGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAor
ICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4g
c2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29k
ZU9yaWdpbiwgQGxlZnQudmFsdWUgKiBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNz
IE5lZ0ltbWVkaWF0ZQorICBkZWYgZm9sZAorICAgIEBjaGlsZCA9IEBjaGlsZC5mb2xkCisgICAg
cmV0dXJuIHNlbGYgdW5sZXNzIEBjaGlsZC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUu
bmV3KGNvZGVPcmlnaW4sIC1AY2hpbGQudmFsdWUpCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2ZUFmdGVyU2V0dGluZ3Mob2Zmc2V0
cywgc2l6ZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyBDb21waWxlIGFzc2VtYmx5IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFz
cyBOb2RlCisgIGRlZiByZXNvbHZlKG9mZnNldHMsIHNpemVzKQorICAgIGRlbWFjcm9pZnkoe30p
LnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKS5mb2xkCisgIGVuZAorZW5kCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjczIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitjbGFz
cyBSZWdpc3RlcklECisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIGNhc2UgbmFtZQorICAg
IHdoZW4gInQwIiwgImEwIiwgInIwIiwgInQxIiwgImExIiwgInIxIiwgInQyIiwgInQzIgorICAg
ICAgdHJ1ZQorICAgIHdoZW4gInQ0IiwgImNmciIKKyAgICAgIGZhbHNlCisgICAgZWxzZQorICAg
ICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAg
IGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgY2FzZSBraW5kCisg
ICAgICB3aGVuIDpieXRlCisgICAgICAgICIlYWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAg
ICIlYXgiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYXgiCisgICAgICBlbHNlCisgICAg
ICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgIGNh
c2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWRsIgorICAgICAgd2hlbiA6aGFs
ZgorICAgICAgICAiJWR4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWR4IgorICAgICAg
ZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDIiCisgICAgICBjYXNl
IGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVjbCIKKyAgICAgIHdoZW4gOmhhbGYK
KyAgICAgICAgIiVjeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVjeCIKKyAgICAgIGVs
c2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQzIgorICAgICAgY2FzZSBr
aW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlYmwiCisgICAgICB3aGVuIDpoYWxmCisg
ICAgICAgICIlYngiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYngiCisgICAgICBlbHNl
CisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0NCIKKyAgICAgIGNhc2Uga2lu
ZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAg
ICAgICAgIiVzaSIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzaSIKKyAgICAgIGVsc2UK
KyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gImNmciIKKyAgICAgIGNhc2Uga2lu
ZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWRpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAg
ICAgICAgIiVkaSIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkaSIKKyAgICAgIGVsc2UK
KyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInNwIgorICAgICAgY2FzZSBraW5k
CisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlc3BsIgorICAgICAgd2hlbiA6aGFsZgorICAg
ICAgICAiJXNwIgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZXNwIgorICAgICAgZWxzZQor
ICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQK
KyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtp
bmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgIGRlZiB4ODZPcGVyYW5k
KGtpbmQpCisgICAgcmFpc2UgdW5sZXNzIGtpbmQgPT0gOmRvdWJsZQorICAgIGNhc2UgbmFtZQor
ICAgIHdoZW4gImZ0MCIsICJmYTAiLCAiZnIiCisgICAgICAiJXhtbTAiCisgICAgd2hlbiAiZnQx
IiwgImZhMSIKKyAgICAgICIleG1tMSIKKyAgICB3aGVuICJmdDIiLCAiZmEyIgorICAgICAgIiV4
bW0yIgorICAgIHdoZW4gImZ0MyIsICJmYTMiCisgICAgICAiJXhtbTMiCisgICAgd2hlbiAiZnQ0
IgorICAgICAgIiV4bW00IgorICAgIHdoZW4gImZ0NSIKKyAgICAgICIleG1tNSIKKyAgICBlbHNl
CisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQp
CisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlh
dGUKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiJCN7dmFsdWV9IgorICBlbmQKKyAgZGVm
IHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIiN7dmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFz
cyBBZGRyZXNzCisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAg
CisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2
T3BlcmFuZCg6aW50KX0pIgorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAg
Iioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAg
ZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9w
ZXJhbmQoa2luZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQp
fSwgI3tpbmRleC54ODZPcGVyYW5kKDppbnQpfSwgI3tzY2FsZX0pIgorICBlbmQKKworICBkZWYg
eDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2b3BlcmFuZChraW5kKX0iCisgIGVuZAor
ZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAg
ICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje2FkZHJl
c3MudmFsdWV9IgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7
YWRkcmVzcy52YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgIGRl
ZiB4ODZMYWJlbAorICAgIHNhbml0aXplTGFiZWxOYW1lKG5hbWUpCisgIGVuZAorICBkZWYgeDg2
Q2FsbE9wZXJhbmQoa2luZCkKKyAgICB4ODZMYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBMb2Nh
bExhYmVsUmVmZXJlbmNlCisgIGRlZiB4ODZMYWJlbAorICAgICJMX29mZmxpbmVhc21fIituYW1l
WzEuLi0xXQorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgeDg2TGFiZWwK
KyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24KKyAgZGVmIHg4Nk9wZXJhbmRzKCpraW5k
cykKKyAgICByYWlzZSB1bmxlc3Mga2luZHMuc2l6ZSA9PSBvcGVyYW5kcy5zaXplCisgICAgcmVz
dWx0ID0gW10KKyAgICBraW5kcy5zaXplLnRpbWVzIHsKKyAgICAgIHwgaWR4IHwKKyAgICAgIHJl
c3VsdCA8PCBvcGVyYW5kc1tpZHhdLng4Nk9wZXJhbmQoa2luZHNbaWR4XSkKKyAgICB9CisgICAg
cmVzdWx0LmpvaW4oIiwgIikKKyAgZW5kCisKKyAgZGVmIHg4NlN1ZmZpeChraW5kKQorICAgIGNh
c2Uga2luZAorICAgIHdoZW4gOmJ5dGUKKyAgICAgICJiIgorICAgIHdoZW4gOmhhbGYKKyAgICAg
ICJ3IgorICAgIHdoZW4gOmludAorICAgICAgImwiCisgICAgd2hlbiA6ZG91YmxlCisgICAgICAi
c2QiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFu
ZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBudW1PcGVyYW5kcykKKyAgICBp
ZiBudW1PcGVyYW5kcyA9PSAzCisgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQor
ICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChr
aW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNpZiBvcGVy
YW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChr
aW5kKX0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiXHRtb3Yje3g4NlN1ZmZpeChr
aW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9Igor
ICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcChvcGNvZGUsIGtpbmQpCisg
ICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXpl
KQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTaGlmdChvcGNvZGUsIGtpbmQpCisgICAgaWYg
b3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIG9yIG9wZXJhbmRzWzBdID09IFJlZ2lzdGVySUQu
Zm9yTmFtZShuaWwsICJ0MiIpCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmludCl9LCAlZWN4IgorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAlY2wsICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICBlbmQKKyAgZW5kCisg
IAorICBkZWYgaGFuZGxlWDg2RG91YmxlQnJhbmNoKGJyYW5jaE9wY29kZSwgbW9kZSkKKyAgICBj
YXNlIG1vZGUKKyAgICB3aGVuIDpub3JtYWwKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0iCisgICAgd2hlbiA6cmV2ZXJzZQorICAgICAgJGFzbS5wdXRzICJcdHVjb21p
c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDpkb3VibGUpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSBtb2RlLmluc3BlY3QKKyAg
ICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0ueDg2
TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlKG9wY29kZVN1ZmZp
eCwga2luZCkKKyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRz
WzBdLnZhbHVlID09IDAgYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNv
ZGVTdWZmaXggPT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRz
ICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQp
fSIKKyAgICBlbHNpZiBvcGVyYW5kc1sxXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzFd
LnZhbHVlID09IDAgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVT
dWZmaXggPT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJc
dHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0Y21wI3t4ODZTdWZmaXgoa2luZCl9ICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5k
KX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludEJyYW5jaChicmFuY2hP
cGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShicmFuY2hPcGNvZGVbMS4uLTFd
LCBraW5kKQorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS54
ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJh
bmQpCisgICAgaWYgb3BlcmFuZC5zdXBwb3J0czhCaXRPblg4NgorICAgICAgJGFzbS5wdXRzICJc
dCN7c2V0T3Bjb2RlfSAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9IgorICAgICAgJGFzbS5w
dXRzICJcdG1vdnpibCAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmQueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3Bl
cmFuZC54ODZPcGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHQje3NldE9w
Y29kZX0gJWFsIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAlYWwsICVlYXgiCisgICAgICAk
YXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAg
IGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlU2V0KHNldE9wY29kZSwg
a2luZCkKKyAgICBoYW5kbGVYODZJbnRDb21wYXJlKHNldE9wY29kZVszLi4tMV0sIGtpbmQpCisg
ICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHNbMl0pCisgIGVuZAorICAKKyAgZGVm
IGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgICAgY2FzZSBv
cGVyYW5kcy5zaXplCisgICAgd2hlbiAyCisgICAgICBtYXNrID0gSW1tZWRpYXRlLm5ldyhjb2Rl
T3JpZ2luLCAtMSkKKyAgICB3aGVuIDMKKyAgICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICAgIGVs
c2UKKyAgICAgIHJhaXNlICJFeHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMsIGJ1dCBnb3QgI3tvcGVy
YW5kcy5zaXplfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICAgIAorICAgIGlm
IG1hc2suaXNfYT8gSW1tZWRpYXRlIGFuZCBtYXNrLnZhbHVlID09IC0xCisgICAgICBpZiB2YWx1
ZS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgo
a2luZCl9ICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChraW5k
KX0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiXHRjbXAje3g4NlN1ZmZpeChraW5k
KX0gJDAsICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNlCisg
ICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje21hc2sueDg2T3BlcmFu
ZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIGhhbmRsZVg4NkJyYW5jaFRlc3QoYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRs
ZVg4NlRlc3Qoa2luZCkKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFu
ZHMubGFzdC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldFRlc3Qoc2V0
T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICBoYW5kbGVYODZTZXQo
c2V0T3Bjb2RlLCBvcGVyYW5kcy5sYXN0KQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcEJy
YW5jaChvcGNvZGUsIGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhOdW1P
cGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGNhc2Ugb3BlcmFu
ZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAg
d2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICBy
YWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNv
ZGV9ICN7anVtcFRhcmdldC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlN1
YkJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSA0IGFu
ZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgZWxzZQorICAgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMoInN1YiN7
eDg2U3VmZml4KGtpbmQpfSIsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGVuZAorICAg
IGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJh
bmRzWzNdCisgICAgd2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBl
bHNlCisgICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0
I3ticmFuY2hPcGNvZGV9ICN7anVtcFRhcmdldC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVm
IGxvd2VyWDg2CisgICAgJGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICBjYXNlIG9w
Y29kZQorICAgIHdoZW4gImFkZGkiLCAiYWRkcCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0g
MyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVzcyBv
cGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5k
c1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAK
KyAgICAgICAgICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAg
ICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UK
KyAgICAgICAgICAkYXNtLnB1dHMgIlx0bGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQp
fSIKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJh
bmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFd
LmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/
IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJcdGxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICB1bmxlc3MgSW1t
ZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgJGFzbS5wdXRzICJc
dGFkZGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZW5k
CisgICAgd2hlbiAiYW5kaSIsICJhbmRwIgorICAgICAgaGFuZGxlWDg2T3AoImFuZGwiLCA6aW50
KQorICAgIHdoZW4gImxzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2FsbCIsIDppbnQp
CisgICAgd2hlbiAibXVsaSIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFu
ZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICRhc20ucHV0cyAiXHRpbXVsbCAje3g4Nk9w
ZXJhbmRzKDppbnQsIDppbnQsIDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgIyBGSVhNRTog
Y291bGQgZG8gc29tZSBwZWVwaG9sZSBpbiBjYXNlIHRoZSBsZWZ0IG9wZXJhbmQgaXMgaW1tZWRp
YXRlIGFuZCBpdCdzCisgICAgICAgICMgYSBwb3dlciBvZiB0d28uCisgICAgICAgIGhhbmRsZVg4
Nk9wKCJpbXVsbCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJuZWdpIgorICAgICAgJGFz
bS5wdXRzICJcdG5lZ2wgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAibm90aSIKKyAg
ICAgICRhc20ucHV0cyAiXHRub3RsICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm9y
aSIsICJvcnAiCisgICAgICBoYW5kbGVYODZPcCgib3JsIiwgOmludCkKKyAgICB3aGVuICJyc2hp
ZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNhcmwiLCA6aW50KQorICAgIHdoZW4gInVyc2hp
ZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNocmwiLCA6aW50KQorICAgIHdoZW4gInN1Ymki
LCAic3VicCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMV0gPT0g
b3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
IGVsc2UKKyAgICAgICAgaGFuZGxlWDg2T3AoInN1YmwiLCA6aW50KQorICAgICAgZW5kCisgICAg
d2hlbiAieG9yaSIsICJ4b3JwIgorICAgICAgaGFuZGxlWDg2T3AoInhvcmwiLCA6aW50KQorICAg
IHdoZW4gImxvYWRpIiwgInN0b3JlaSIsICJsb2FkcCIsICJzdG9yZXAiCisgICAgICAkYXNtLnB1
dHMgIlx0bW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICB3aGVuICJsb2FkYiIK
KyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRl
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGgiCisg
ICAgICAkYXNtLnB1dHMgIlx0bW92endsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInN0b3JlYiIKKyAg
ICAgICRhc20ucHV0cyAiXHRtb3ZiICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0iCisgICAg
d2hlbiAibG9hZGQiLCAibW92ZWQiLCAic3RvcmVkIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNk
ICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImFkZGQiCisgICAg
ICAkYXNtLnB1dHMgIlx0YWRkc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisg
ICAgd2hlbiAiZGl2ZCIKKyAgICAgICRhc20ucHV0cyAiXHRkaXZzZCAje3g4Nk9wZXJhbmRzKDpk
b3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJzdWJkIgorICAgICAgJGFzbS5wdXRzICJcdHN1
YnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gIm11bGQiCisg
ICAgICAkYXNtLnB1dHMgIlx0bXVsc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0i
CisgICAgd2hlbiAic3FydGQiCisgICAgICAkYXNtLnB1dHMgIlx0c3FydHNkICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0iCisgICAgd2hlbiAiY2kyZCIKKyAgICAgICRhc20ucHV0cyAiXHRjdnRzaTJzZCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9IgorICAgIHdoZW4gImJkZXEiCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5p
cXVlKCJiZGVxIikKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisg
ICAgICAkYXNtLnB1dHMgIlx0anAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNV
bm9yZGVyZWQpLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJl
bmNlLm5ldyhjb2RlT3JpZ2luLCBvcGVyYW5kc1syXSkueDg2TGFiZWx9IgorICAgICAgaXNVbm9y
ZGVyZWQubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRuZXEiCisgICAgICBoYW5kbGVYODZEb3Vi
bGVCcmFuY2goImpuZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRndCIKKyAgICAgIGhhbmRsZVg4
NkRvdWJsZUJyYW5jaCgiamEiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgIGhh
bmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0IgorICAg
ICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHRl
cSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOnJldmVyc2UpCisgICAgd2hl
biAiYmRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwpCisg
ICAgd2hlbiAiYmRuZXF1biIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUo
ImJkbmVxdW4iKQorICAgICAgaXNFcXVhbCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikK
KyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91
YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1
dHMgIlx0anAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4
NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2Rl
T3JpZ2luLCBpc0VxdWFsKS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2
IikKKyAgICAgICRhc20ucHV0cyAiXHRqbXAgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAg
ICBpc0VxdWFsLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkZ3R1biIKKyAgICAgIGhhbmRsZVg4
NkRvdWJsZUJyYW5jaCgiamIiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAg
IGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamJlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdHVu
IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpub3JtYWwpCisgICAgd2hlbiAi
YmRsdGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3JtYWwpCisg
ICAgd2hlbiAiYnRkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgICAkYXNtLnB1dHMgIlx0Y21wbCAkMHg4MDAwMDAwMCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7b3BlcmFuZHNbMl0ueDg2TGFi
ZWx9IgorICAgIHdoZW4gInRkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgd2hlbiAiYmNkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20u
cHV0cyAiXHRqZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRj
dnRzaTJzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRh
c20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4
bW03IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAg
ICAgJGFzbS5wdXRzICJcdGpuZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJt
b3ZkeiIKKyAgICAgICRhc20ucHV0cyAiXHR4b3JwZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4g
InBvcCIKKyAgICAgICRhc20ucHV0cyAiXHRwb3AgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICB3aGVuICJwdXNoIgorICAgICAgJGFzbS5wdXRzICJcdHB1c2ggI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJw
IgorICAgICAgaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdIGFuZCBvcGVy
YW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHR4b3JsICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgICBlbHNpZiBvcGVyYW5kc1swXSAhPSBvcGVyYW5kc1sxXQorICAgICAgICAkYXNt
LnB1dHMgIlx0bW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgIGVuZAorICAg
IHdoZW4gIm5vcCIKKyAgICAgICRhc20ucHV0cyAiXHRub3AiCisgICAgd2hlbiAiYmllcSIsICJi
cGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDppbnQpCisgICAgd2hlbiAiYmlu
ZXEiLCAiYnBuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDppbnQpCisgICAg
d2hlbiAiYmlhIiwgImJwYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6aW50KQor
ICAgIHdoZW4gImJpYWVxIiwgImJwYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUi
LCA6aW50KQorICAgIHdoZW4gImJpYiIsICJicGIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpiIiwgOmludCkKKyAgICB3aGVuICJiaWJlcSIsICJicGJlcSIKKyAgICAgIGhhbmRsZVg4Nklu
dEJyYW5jaCgiamJlIiwgOmludCkKKyAgICB3aGVuICJiaWd0IiwgImJwZ3QiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImpnIiwgOmludCkKKyAgICB3aGVuICJiaWd0ZXEiLCAiYnBndGVxIgor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6aW50KQorICAgIHdoZW4gImJpbHQiLCAi
YnBsdCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6aW50KQorICAgIHdoZW4gImJp
bHRlcSIsICJicGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsZSIsIDppbnQpCisg
ICAgd2hlbiAiYmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6Ynl0ZSkKKyAg
ICB3aGVuICJiYm5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmJ5dGUpCisg
ICAgd2hlbiAiYmJhIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDpieXRlKQorICAg
IHdoZW4gImJiYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6Ynl0ZSkKKyAg
ICB3aGVuICJiYmIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmJ5dGUpCisgICAg
d2hlbiAiYmJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRlKQorICAg
IHdoZW4gImJiZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmJ5dGUpCisgICAg
d2hlbiAiYmJndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6Ynl0ZSkKKyAg
ICB3aGVuICJiYmx0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDpieXRlKQorICAg
IHdoZW4gImJibHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6Ynl0ZSkK
KyAgICB3aGVuICJidGlvIiwgImJ0cG8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIs
IDppbnQpCisgICAgd2hlbiAiYnRpcyIsICJidHBzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVz
dCgianMiLCA6aW50KQorICAgIHdoZW4gImJ0aXoiLCAiYnRweiIKKyAgICAgIGhhbmRsZVg4NkJy
YW5jaFRlc3QoImp6IiwgOmludCkKKyAgICB3aGVuICJidGlueiIsICJidHBueiIKKyAgICAgIGhh
bmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDppbnQpCisgICAgd2hlbiAiYnRibyIKKyAgICAgIGhh
bmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRicyIKKyAgICAgIGhh
bmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRieiIKKyAgICAgIGhh
bmRsZVg4NkJyYW5jaFRlc3QoImp6IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRibnoiCisgICAgICBo
YW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJqbXAiCisgICAgICAk
YXNtLnB1dHMgIlx0am1wICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAg
IHdoZW4gImJhZGRpbyIsICJiYWRkcG8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIs
ICJqbyIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlzIiwgImJhZGRwcyIKKyAgICAgIGhhbmRsZVg4
Nk9wQnJhbmNoKCJhZGRsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJiYWRkaXoiLCAiYmFkZHB6
IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianoiLCA6aW50KQorICAgIHdoZW4g
ImJhZGRpbnoiLCAiYmFkZHBueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpu
eiIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlvIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJq
byIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlzIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJq
cyIsIDppbnQpCisgICAgd2hlbiAiYnN1Yml6IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJq
eiIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlueiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgi
am56IiwgOmludCkKKyAgICB3aGVuICJibXVsaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgi
aW11bGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJtdWxpcyIKKyAgICAgIGhhbmRsZVg4Nk9w
QnJhbmNoKCJpbXVsbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm11bGl6IgorICAgICAgaGFu
ZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJibXVsaW56Igor
ICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAi
Ym9yaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpvIiwgOmludCkKKyAgICB3
aGVuICJib3JpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianMiLCA6aW50KQor
ICAgIHdoZW4gImJvcml6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqeiIsIDpp
bnQpCisgICAgd2hlbiAiYm9yaW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJq
bnoiLCA6aW50KQorICAgIHdoZW4gImJyZWFrIgorICAgICAgJGFzbS5wdXRzICJcdGludCAkMyIK
KyAgICB3aGVuICJjYWxsIgorICAgICAgJGFzbS5wdXRzICJcdGNhbGwgI3tvcGVyYW5kc1swXS54
ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicmV0IgorICAgICAgJGFzbS5wdXRzICJc
dHJldCIKKyAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJl
U2V0KCJzZXRlIiwgOmludCkKKyAgICB3aGVuICJjaW5lcSIsICJjcG5lcSIKKyAgICAgIGhhbmRs
ZVg4NkludENvbXBhcmVTZXQoInNldG5lIiwgOmludCkKKyAgICB3aGVuICJjaWEiLCAiY3BhIgor
ICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YSIsIDppbnQpCisgICAgd2hlbiAiY2lh
ZXEiLCAiY3BhZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRhZSIsIDppbnQp
CisgICAgd2hlbiAiY2liIiwgImNwYiIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNl
dGIiLCA6aW50KQorICAgIHdoZW4gImNpYmVxIiwgImNwYmVxIgorICAgICAgaGFuZGxlWDg2SW50
Q29tcGFyZVNldCgic2V0YmUiLCA6aW50KQorICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAg
IGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGciLCA6aW50KQorICAgIHdoZW4gImNpZ3RlcSIs
ICJjcGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnZSIsIDppbnQpCisg
ICAgd2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
bCIsIDppbnQpCisgICAgd2hlbiAiY2lsdGVxIiwgImNwbHRlcSIKKyAgICAgIGhhbmRsZVg4Nklu
dENvbXBhcmVTZXQoInNldGxlIiwgOmludCkKKyAgICB3aGVuICJ0aW8iCisgICAgICBoYW5kbGVY
ODZTZXRUZXN0KCJzZXRvIiwgOmludCkKKyAgICB3aGVuICJ0aXMiCisgICAgICBoYW5kbGVYODZT
ZXRUZXN0KCJzZXRzIiwgOmludCkKKyAgICB3aGVuICJ0aXoiCisgICAgICBoYW5kbGVYODZTZXRU
ZXN0KCJzZXR6IiwgOmludCkKKyAgICB3aGVuICJ0aW56IgorICAgICAgaGFuZGxlWDg2U2V0VGVz
dCgic2V0bnoiLCA6aW50KQorICAgIHdoZW4gInRibyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3Qo
InNldG8iLCA6Ynl0ZSkKKyAgICB3aGVuICJ0YnMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJz
ZXRzIiwgOmJ5dGUpCisgICAgd2hlbiAidGJ6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0
eiIsIDpieXRlKQorICAgIHdoZW4gInRibnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRu
eiIsIDpieXRlKQorICAgIHdoZW4gInBlZWsiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29w
ZXJhbmRzWzBdLnZhbHVlICogNH0oJWVzcCksICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgd2hlbiAicG9rZSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0udmFsdWUgKiA0fSglZXNwKSIKKyAg
ICB3aGVuICJjZHFpIgorICAgICAgJGFzbS5wdXRzICJcdGNkcSIKKyAgICB3aGVuICJpZGl2aSIK
KyAgICAgICRhc20ucHV0cyAiXHRpZGl2bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgIHdoZW4gImZpaTJkIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIK
KyAgICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0s
ICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHBzbGxxICQzMiwgJXhtbTciCisgICAgICAkYXNt
LnB1dHMgIlx0cG9yICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9Igor
ICAgIHdoZW4gImZkMmlpIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICAgICRhc20ucHV0cyAiXHRtb3ZzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwc3JscSAkMzIsICV4bW03IgorICAgICAgJGFz
bS5wdXRzICJcdG1vdnNkICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQgb3Bjb2RlOiAje29wY29kZX0iCisgICAgZW5kCisg
IGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVj
aWFsaXphdGlvbktpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKyNkZWZpbmUgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZF9oCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIENvZGVTcGVjaWFs
aXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAko
cmV2aXNpb24gMTA1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQ29t
bW9uU2xvd1BhdGhzX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvZGVT
cGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5j
bHVkZSAiSlNBcnJheS5oIgogCkBAIC00MSw2ICs0MiwzOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
bmFtZXNwYWNlIENvbW1vblNsb3dQYXRocyB7CiAKK0FMV0FZU19JTkxJTkUgRXhlY1N0YXRlKiBh
cml0eUNoZWNrRm9yKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUg
PSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0
RnVuY3Rpb24oKSk7CisgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4
ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzID0gZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsK
KworICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNj
ZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgorICAgIGlmICgh
cmVnaXN0ZXJGaWxlLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBu
ZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CisKKyAgICAvLyBUb28gZmV3IGFyZ3VtZW50
cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3Npbmcg
YXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgorICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CisgICAgUmVn
aXN0ZXIqIHNyYyA9IGV4ZWMtPnJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyKiBkc3QgPSBleGVj
LT5yZWdpc3RlcnMoKSArIGRlbHRhOworCisgICAgaW50IGk7CisgICAgaW50IGVuZCA9IC1FeGVj
U3RhdGU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgZm9yIChp
ID0gLTE7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKKworICAgIGVu
ZCAtPSBkZWx0YTsKKyAgICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9
IGpzVW5kZWZpbmVkKCk7CisKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBFeGVjU3RhdGU6OmNy
ZWF0ZShkc3QpOworICAgIEFTU0VSVCgodm9pZCopbmV3RXhlYyA8PSByZWdpc3RlckZpbGUtPmVu
ZCgpKTsKKyAgICByZXR1cm4gbmV3RXhlYzsKK30KKwogQUxXQVlTX0lOTElORSBib29sIG9wSW5z
dGFuY2VPZlNsb3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGJhc2VW
YWwsIEpTVmFsdWUgcHJvdG8pCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0NlbGwoKSB8fCAhYmFz
ZVZhbC5pc0NlbGwoKSB8fCAhcHJvdG8uaXNDZWxsKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxMDUyMTYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCisjaW5jbHVkZSAiRXhlY3V0
aW9uSGFybmVzcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVERyaXZlci5oIgog
I2luY2x1ZGUgIlBhcnNlci5oIgpAQCAtODQsNyArODUsNyBAQCBJbnRyaW5zaWMgTmF0aXZlRXhl
Y3V0YWJsZTo6aW50cmluc2ljKCkgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIHZvaWQg
amV0dGlzb25Db2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8VD4mIGNv
ZGVCbG9jaykKIHsKLSAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgIT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29k
ZUJsb2NrLT5nZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2
ZSgpKTsKICAgICBPd25QdHI8VD4gY29kZUJsb2NrVG9KZXR0aXNvbiA9IGNvZGVCbG9jay5yZWxl
YXNlKCk7CiAgICAgY29kZUJsb2NrID0gc3RhdGljX3BvaW50ZXJfY2FzdDxUPihjb2RlQmxvY2tU
b0pldHRpc29uLT5yZWxlYXNlQWx0ZXJuYXRpdmUoKSk7CkBAIC0xNjcsOSArMTY4LDMwIEBAIEpT
T2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXoKICAgICByZXR1cm4gZXJyb3I7
CiB9CiAKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUoRXhlY1N0YXRlKiBleGVjKQor
eworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZXhlYywgbV9ldmFs
Q29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOwor
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCitpbmxpbmUgY29uc3QgY2hh
ciogc2FtcGxpbmdEZXNjcmlwdGlvbihKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisgICAg
c3dpdGNoIChqaXRUeXBlKSB7CisgICAgY2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rOgor
ICAgICAgICByZXR1cm4gIkludGVycHJldGVyIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNh
c2UgSklUQ29kZTo6QmFzZWxpbmVKSVQ6CisgICAgICAgIHJldHVybiAiQmFzZWxpbmUgQ29tcGls
YXRpb24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6CisgICAgICAgIHJldHVy
biAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIEpTT2JqZWN0
KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVD
aGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0g
ICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNl
bGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRp
b24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5n
RGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNF
RF9QQVJBTShqaXRUeXBlKTsKQEAgLTIxMCw3ICsyMzIsNyBAQCBKU09iamVjdCogRXZhbEV4ZWN1
dGFibGU6OmNvbXBpbGVJbnRlcm5hCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAo
IWppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGV4ZWMsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2Rl
Rm9yQ2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKGV4ZWMsIG1f
ZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVy
biAwOwogI2VuZGlmCiAKQEAgLTI5NSw5ICszMTcsMTUgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVj
dXRhYmxlOjpjb21waWxlT3B0aQogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBQcm9ncmFt
RXhlY3V0YWJsZTo6aml0Q29tcGlsZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYm9vbCByZXN1
bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShleGVjLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1f
aml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6
Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hh
aW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24g
c2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGlu
ZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAg
IFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlw
ZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsK
QEAgLTMzNiw3ICszNjQsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJ
bnRlCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJv
cHJpYXRlKGV4ZWMsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlw
ZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKGV4ZWMsIG1fcHJvZ3JhbUNvZGVCbG9j
aywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlm
CiAKQEAgLTQxMiw3ICs0NDAsNyBAQCBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRh
YmxlOjpiCiAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgcmVzdWx0
ID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihyZXN1bHQtPmFsdGVybmF0aXZlKCkp
OwogICAgIEFTU0VSVChyZXN1bHQpOwotICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9
PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVD
b2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAt
NDM4LDYgKzQ2NiwxOCBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlT3B0
CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29t
cGlsZUZvckNhbGwoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29t
cGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0
Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJs
ZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0KTsKK30KKwordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25z
dHJ1Y3QoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1
bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRD
b2RlRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9z
eW1ib2xUYWJsZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0KTsKK30KKwogRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y29kZUJsb2NrV2l0aEJ5dGVjb2RlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCkKIHsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxv
Y2tGb3Ioa2luZCk7CkBAIC00ODIsNyArNTIyLDcgQEAgUGFzc093blB0cjxGdW5jdGlvbkNvZGVC
bG9jaz4gRnVuY3Rpb25FeAogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxl
Rm9yQ2FsbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hh
aW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24g
c2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGlu
ZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAg
IFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlw
ZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAg
LTUwNCw3ICs1NDQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9y
CiAgICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC0+c2hhcmVkU3ltYm9sVGFi
bGUoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFw
cHJvcHJpYXRlKGV4ZWMsIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9q
aXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAg
ICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLCBtX2NvZGVCbG9ja0ZvckNh
bGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9z
eW1ib2xUYWJsZSwgaml0VHlwZSwgQ29kZUZvckNhbGwpKQogICAgICAgICByZXR1cm4gMDsKICNl
bmRpZgogCkBAIC01MjQsNyArNTY0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29tcGlsZUZvcgogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29u
c3RydWN0SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFp
bk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBz
YW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5l
IENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAg
U2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBl
KSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpA
QCAtNTQ2LDcgKzU4Niw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVG
b3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnNoYXJlZFN5
bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0
aW9uSWZBcHByb3ByaWF0ZShleGVjLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2Rl
Rm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1i
b2xUYWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24o
ZXhlYywgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9q
aXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUs
IENvZGVGb3JDb25zdHJ1Y3QpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxMDUy
MTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRXhlY3V0YWJsZV9oCiAKICNpbmNs
dWRlICJDYWxsRGF0YS5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRl
ICJOb2Rlcy5oIgpAQCAtMzksMTIgKzQwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IERlYnVnZ2VyOwogICAgIGNsYXNzIEV2YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgRnVuY3Rpb25D
b2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFBy
b2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKICAgICBzdHJ1Y3Qg
RXhjZXB0aW9uSW5mbzsKICAgICAKLSAgICBlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBD
b2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogICAgIGVudW0gQ29tcGlsYXRpb25LaW5k
IHsgRmlyc3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CiAKICAgICBpbmxp
bmUgYm9vbCBpc0NhbGwoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMzE5LDYgKzMy
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJs
ZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhl
Y3V0YWJsZSBCYXNlOwogCkBAIC0zMzgsNiArMzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2Rl
KEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoRXhlY1N0YXRlKik7CiAj
ZW5kaWYKIAogICAgICAgICBFdmFsQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC0z
ODQsNiArMzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIFByb2dy
YW1FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRl
ZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTQxMSw2ICs0MTUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9w
dGltaXplZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShFeGVj
U3RhdGUqKTsKICNlbmRpZgogCiAgICAgICAgIFByb2dyYW1Db2RlQmxvY2smIGdlbmVyYXRlZEJ5
dGVjb2RlKCkKQEAgLTQ1Myw2ICs0NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNl
OwogCkBAIC01MDgsNiArNTE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVO
QUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ2FsbChKU0ds
b2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ2FsbChFeGVjU3RhdGUqKTsK
ICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDYWxsKCkgY29uc3QKQEAgLTUz
NSw2ICs1NDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkK
ICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxE
YXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNvbnN0cnVjdChFeGVjU3RhdGUqKTsK
ICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3QoKSBjb25zdApA
QCAtNTgyLDYgKzU5MCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBqZXR0
aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvcihFeGVjU3Rh
dGUqIGV4ZWMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgICAgICBqaXRDb21w
aWxlRm9yQ2FsbChleGVjKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAg
ICAgIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoZXhlYyk7CisgICAgICAgIH0KICNlbmRpZgogICAg
ICAgICAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJu
ZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRXhlY3V0
aW9uSGFybmVzc19oCisjZGVmaW5lIEV4ZWN1dGlvbkhhcm5lc3NfaAorCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiSklURHJpdmVyLmgi
CisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVt
cGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KK2lubGluZSBib29sIHByZXBhcmVGb3JFeGVj
dXRpb24oRXhlY1N0YXRlKiBleGVjLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywg
SklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworI2lmIEVOQUJM
RShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAg
ICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAg
IExMSW50OjpnZXRFbnRyeXBvaW50KGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLmdldCgp
LCBqaXRDb2RlKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cigpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlm
IC8vIEVOQUJMRShMTElOVCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZXhl
YywgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRUeXBlKTsKK30KKworaW5saW5lIGJvb2wgcHJlcGFy
ZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKEV4ZWNTdGF0ZSogZXhlYywgT3duUHRyPEZ1bmN0aW9uQ29k
ZUJsb2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHImIGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJs
ZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
Cit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShq
aXRUeXBlKSkgeworICAgICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRlcnBy
ZXRlci4KKyAgICAgICAgTExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludChleGVjLT5nbG9iYWxE
YXRhKCksIGtpbmQsIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIGNv
ZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShraW5kKTsK
KyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVGdW5jdGlvbklm
QXBwcm9wcmlhdGUoZXhlYywgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hl
Y2ssIHN5bWJvbFRhYmxlLCBqaXRUeXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8gRXhlY3V0aW9uSGFybmVzc19oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCShyZXZp
c2lvbiAxMDUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJy
YXkgPSBhZG9wdEFycmF5UHRyKG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bcmVnaXN0ZXJBcnJh
eVNpemVdKTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMgPSByZWdp
c3RlckFycmF5LmdldCgpICsgcmVnaXN0ZXJPZmZzZXQ7Ci0KKyAgICAgICAgCiAgICAgICAgIC8v
IENvcHkgYWxsIGFyZ3VtZW50cyB0aGF0IGNhbiBiZSBjYXB0dXJlZCBieSBuYW1lIG9yIGJ5IHRo
ZSBhcmd1bWVudHMgb2JqZWN0LgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbnVtQ2Fw
dHVyZWRBcmdzOyArK2kpIHsKICAgICAgICAgICAgIGludCBpbmRleCA9IENhbGxGcmFtZTo6YXJn
dW1lbnRPZmZzZXQoaSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCShyZXZpc2lvbiAxMDUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgSlNBcnJheTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAKICAgICBzdHJ1Y3QgU3BhcnNlQXJyYXlFbnRyeSA6IHB1YmxpYyBXcml0ZUJhcnJpZXI8VW5r
bm93bj4gewogICAgICAgICB0eXBlZGVmIFdyaXRlQmFycmllcjxVbmtub3duPiBCYXNlOwpAQCAt
MTI0LDYgKzEyNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBKU0Fy
cmF5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgV2Fsa2VyOwogCiAgICAg
cHJvdGVjdGVkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJl
dmlzaW9uIDEwNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiwxMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKLSAgICBjbGFzcyBTdHJ1Y3R1cmU7CisgICAgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAg
ICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKKyAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBl
bnVtIEVudW1lcmF0aW9uTW9kZSB7CiAgICAgICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMs
CkBAIC0xNjQsNiArMTY1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBj
b25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX3N0cnVjdHVyZTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTA1MjE2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNs
YXNzIEpTQWN0aXZhdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBj
bGFzcyBTb3VyY2VDb2RlOwogICAgIG5hbWVzcGFjZSBERkcgewpAQCAtMTQwLDYgKzE0MSw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRp
YyBKU1ZhbHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVu
dGlmaWVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAJKHJldmlzaW9uIDEwNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsOCBA
QCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgLCBrZXl3b3Jk
cyhhZG9wdFB0cihuZXcgS2V5d29yZHModGhpcykpKQogICAgICwgaW50ZXJwcmV0ZXIoMCkKICAg
ICAsIGhlYXAodGhpcywgaGVhcFNpemUpCisgICAgLCBqc0FycmF5Q2xhc3NJbmZvKCZKU0FycmF5
OjpzX2luZm8pCisgICAgLCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvKCZKU0ZpbmFsT2JqZWN0Ojpz
X2luZm8pCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLCBzaXplT2ZMYXN0U2NyYXRjaEJ1ZmZl
cigwKQogI2VuZGlmCkBAIC0yMTgsNyArMjIwLDcgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERh
dGEoR2xvYmFsRGF0YVR5cAogICAgIGppdFN0dWJzID0gYWRvcHRQdHIobmV3IEpJVFRodW5rcyh0
aGlzKSk7CiAjZW5kaWYKIAotICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKHRoaXMtPmNhblVz
ZUpJVCgpKTsKKyAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSgmbGxpbnREYXRhLCB0aGlzLT5j
YW5Vc2VKSVQoKSk7CiAKICAgICBoZWFwLm5vdGlmeUlzU2FmZVRvQ29sbGVjdCgpOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlz
aW9uIDEwNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTYgQEAKICNkZWZpbmUgSlNHbG9iYWxE
YXRhX2gKIAogI2luY2x1ZGUgIkNhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaCIKLSNpbmNs
dWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2VDYWNoZS5oIgogI2luY2x1
ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCi0jaW5jbHVkZSAi
U3Ryb25nLmgiCisjaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIK
ICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAi
TnVtZXJpY1N0cmluZ3MuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKKyNpbmNsdWRlICJT
dHJvbmcuaCIKICNpbmNsdWRlICJUZXJtaW5hdG9yLmgiCiAjaW5jbHVkZSAiVGltZW91dENoZWNr
ZXIuaCIKICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCkBAIC02NSw2ICs2Niw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0Owog
ICAgIGNsYXNzIEtleXdvcmRzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFBhcnNlckFyZW5hOwogICAgIGNs
YXNzIFJlZ0V4cENhY2hlOwpAQCAtMjQ4LDYgKzI1MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgSGVhcCBoZWFwOwogCiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uOworCisgICAgICAg
IGNvbnN0IENsYXNzSW5mbyogY29uc3QganNBcnJheUNsYXNzSW5mbzsKKyAgICAgICAgY29uc3Qg
Q2xhc3NJbmZvKiBjb25zdCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOworCisgICAgICAgIExMSW50
OjpEYXRhIGxsaW50RGF0YTsKKwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFJldHVybkFkZHJl
c3NQdHIgZXhjZXB0aW9uTG9jYXRpb247CiAgICAgICAgIEpTVmFsdWUgaG9zdENhbGxSZXR1cm5W
YWx1ZTsKQEAgLTM1Miw2ICszNjAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICN1bmRlZiByZWdpc3Rl
clR5cGVkQXJyYXlGdW5jdGlvbgogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTR2xvYmFsRGF0YShH
bG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CiAgICAgICAgIHN0YXRp
YyBKU0dsb2JhbERhdGEqJiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAgICAgIHZvaWQg
Y3JlYXRlTmF0aXZlVGh1bmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTA1MjE2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQs
NiArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsK
ICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgR2xvYmFsQ29kZUJsb2NrOworICAg
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgUmVnRXhwQ29u
c3RydWN0b3I7CkBAIC0zMzUsNiArMzM2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8q
LCBpbnQgY291bnQpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBGb2xkIHJlc2V0
IGludG8gaW5pdC4KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0KEpTT2JqZWN0
KiB0aGlzVmFsdWUpOwogICAgICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTA1
MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBHZXR0
ZXJTZXR0ZXI7CiAgICAgY2xhc3MgSGFzaEVudHJ5OwogICAgIGNsYXNzIEludGVybmFsRnVuY3Rp
b247CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE1hcmtlZEJs
b2NrOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5h
bWVBcnJheTsKQEAgLTI3MSw2ICsyNzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNP
YmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0
b3JhZ2UpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIE5vYm9keSBzaG91bGQgZXZlciBhc2sg
YW55IG9mIHRoZXNlIHF1ZXN0aW9ucyBvbiBzb21ldGhpbmcgYWxyZWFkeSBrbm93biB0byBiZSBh
IEpTT2JqZWN0LgogICAgICAgICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyOwogICAg
ICAgICB1c2luZyBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyOwpAQCAtMzgzLDYgKzM4Niw4IEBAIENP
TVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0Zp
bmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVT
dG9yYWdlKQogICAgICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAxMDUyMTYpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBJZGVudGlmaWVyOwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTk2LDYgKzk3LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVy
dHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7CiAKICAgICAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDEwNTIxNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNTdHJpbmc7CisgICAg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJp
bmcoSlNHbG9iYWxEYXRhKik7CiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRl
Kik7CkBAIC0yNDEsNiArMjQyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAog
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNv
bnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2U4KExDaGFyKikgY29uc3Q7CiAg
ICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hhciopIGNvbnN0OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNpb24gMTA1MjE2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQgPSAxOyAvLyBXZWJDb3JlIHVzZXMgTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCB0byBtYWtlIGRvY3VtZW50LmFsbCB1bmRldGVjdGFibGUuCiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDEgPDwgMTsKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgT3ZlcnJpZGVzSGFzSW5zdGFuY2UgPSAxIDw8IDI7CkBAIC04Nyw2ICs4OSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9v
bCBpc1NldE9uRmxhZ3MxKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPD0gKDEg
PDwgNykpOyByZXR1cm4gbV9mbGFncyAmIGZsYWc7IH0KICAgICAgICAgYm9vbCBpc1NldE9uRmxh
Z3MyKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1
cm4gbV9mbGFnczIgJiAoZmxhZyA+PiA4KTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24gMTA1MjE2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiwxMCAr
MTE2LDkgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoRQogICAgIHJl
dHVybiBKU05vdEFuT2JqZWN0OjpjcmVhdGUoZXhlYyk7CiB9CiAKLSNpZm5kZWYgTkRFQlVHCiBj
aGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiB7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBz
aXplID0gNjQ7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0gMTI4OwogICAgIHN0YXRp
YyBjaGFyIGRlc2NyaXB0aW9uW3NpemVdOwogCiAgICAgaWYgKCEqdGhpcykKQEAgLTEyOCwxNCAr
MTI3LDE0IEBAIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKICAgICAgICAgc25wcmludGYo
ZGVzY3JpcHRpb24sIHNpemUsICJJbnQzMjogJWQiLCBhc0ludDMyKCkpOwogICAgIGVsc2UgaWYg
KGlzRG91YmxlKCkpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzbnByaW50ZihkZXNj
cmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlbHgiLCBhc0RvdWJsZSgpLCByZWludGVycHJl
dERvdWJsZVRvSW50cHRyKGFzRG91YmxlKCkpKTsKKyAgICAgICAgc25wcmludGYoZGVzY3JpcHRp
b24sIHNpemUsICJEb3VibGU6ICVseCwgJWxmIiwgcmVpbnRlcnByZXREb3VibGVUb0ludHB0cihh
c0RvdWJsZSgpKSwgYXNEb3VibGUoKSk7CiAjZWxzZQogICAgICAgICB1bmlvbiB7CiAgICAgICAg
ICAgICBkb3VibGUgYXNEb3VibGU7CiAgICAgICAgICAgICB1aW50MzJfdCBhc1R3b0ludDMyc1sy
XTsKICAgICAgICAgfSB1OwogICAgICAgICB1LmFzRG91YmxlID0gYXNEb3VibGUoKTsKLSAgICAg
ICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVsZiwgJTA4eDolMDh4Iiwg
YXNEb3VibGUoKSwgdS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSk7CisgICAgICAg
IHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlMDh4OiUwOHgsICVsZiIsIHUu
YXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0sIGFzRG91YmxlKCkpOwogI2VuZGlmCiAg
ICAgfSBlbHNlIGlmIChpc0NlbGwoKSkKICAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNp
emUsICJDZWxsOiAlcCIsIGFzQ2VsbCgpKTsKQEAgLTE1Miw3ICsxNTEsNiBAQCBjaGFyKiBKU1Zh
bHVlOjpkZXNjcmlwdGlvbigpCiAKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9Ci0jZW5kaWYK
IAogLy8gVGhpcyBpbiB0aGUgVG9JbnQzMiBvcGVyYXRpb24gaXMgZGVmaW5lZCBpbiBzZWN0aW9u
IDkuNSBvZiB0aGUgRUNNQS0yNjIgc3BlYy4KIC8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBp
cyBpZGVudGljYWwgdG8gVG9VSW50MzIgb3RoZXIgdGhhbiB0byBpbnRlcnByZXRhdGlvbgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2aXNpb24gMTA1MjE2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzMsOSArMjMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTQ2VsbCog
YXNDZWxsKCkgY29uc3Q7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZENh
bGxlZSgpOwogCi0jaWZuZGVmIE5ERUJVRwogICAgICAgICBjaGFyKiBkZXNjcmlwdGlvbigpOwot
I2VuZGlmCiAKICAgICBwcml2YXRlOgogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gSlNWYWx1
ZShXcml0ZUJhcnJpZXJCYXNlPFQ+KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEwNTIxNikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsMTAgKzM4LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogCiAgICAgY2xhc3MgSlNW
YXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgZnJpZW5k
IGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24g
MTA1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUxLDYgKzUxLDEwIEBAIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZv
ckNvbnN0cnVjdElubGkKIAogdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7CiAKK2ludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2ludDMyX3QgZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9ySklUU29vbjsKKwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVG
b3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JP
cHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
RG9udE9wdGltaXplQW55dGltZVNvb247CkBAIC0xMzYsNiArMTQwLDEwIEBAIHZvaWQgaW5pdGlh
bGl6ZU9wdGlvbnMoKQogICAgIAogICAgIFNFVChtYXhpbXVtSW5saW5pbmdEZXB0aCwgNSk7CiAK
KyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXAsICAgICAtMTAw
KTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uLCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CisgICAgU0VUKGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvckpJVFNvb24sICAgICAgICAgICAgLTEwMCk7CisKICAgICBTRVQoZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCwgICAgIC0xMDAwKTsKICAgICBT
RVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAsIC01MDAw
KTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNv
b24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKQEAgLTE4OCw2ICsxOTYs
OCBAQCB2b2lkIGluaXRpYWxpemVPcHRpb25zKCkKICAgICBpZiAoY3B1c1RvVXNlIDwgMSkKICAg
ICAgICAgY3B1c1RvVXNlID0gMTsKICAgICAKKyAgICBjcHVzVG9Vc2UgPSAxOworICAgIAogICAg
IFNFVChudW1iZXJPZkdDTWFya2VycywgY3B1c1RvVXNlKTsKIAogICAgIEFTU0VSVChleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiA8PSBleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxMDUyMTYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3
LDEwIEBAIGV4dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHIKIAogZXh0ZXJu
IHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOyAvLyBEZXB0aCBvZiBpbmxpbmUgc3RhY2ss
IHNvIDEgPSBubyBpbmxpbmluZywgMiA9IG9uZSBsZXZlbCwgZXRjLgogCitleHRlcm4gaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2V4dGVybiBpbnQzMl90
IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2V4dGVybiBpbnQz
Ml90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisKIGV4dGVybiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBleHRlcm4gaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGV4dGVy
biBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29u
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2
aXNpb24gMTA1MjE2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFp
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFz
cyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
U2NvcGVDaGFpbkl0ZXJhdG9yOwogICAgIGNsYXNzIFNsb3RWaXNpdG9yOwogICAgIApAQCAtOTEs
NiArOTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEg
Y29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuOwogICAg
IH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShy
ZXZpc2lvbiAxMDUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5h
bWVBcnJheTsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7CiAgICAgY2xhc3MgU3Ry
dWN0dXJlQ2hhaW47CkBAIC0xOTYsNiArMTk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2
YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAg
ICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3Qg
Q2xhc3NJbmZvKik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmKTsKICAgICAgICAg
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAx
MDUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKIAog
ICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluIDogcHVibGljIEpTQ2VsbCB7CkBAIC03NCw2ICs3NSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgU3Ry
dWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bs
YXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9y
bS5oCShyZXZpc2lvbiAxMDUyMTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxOCw2ICs5MTgsMTIgQEAKICNkZWZpbmUgRU5BQkxF
X0pJVCAxCiAjZW5kaWYKIAorLyogT24gc29tZSBvZiB0aGUgcGxhdGZvcm1zIHdoZXJlIHdlIGhh
dmUgYSBKSVQsIHdlIHdhbnQgdG8gYWxzbyBoYXZlIHRoZSAKKyAgIGxvdy1sZXZlbCBpbnRlcnBy
ZXRlci4gKi8KKyNpZiBFTkFCTEUoSklUKSAmJiBQTEFURk9STShNQUMpICYmIFVTRShKU1ZBTFVF
MzJfNjQpCisjZGVmaW5lIEVOQUJMRV9MTElOVCAxCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVO
QUJMRV9ERkdfSklUKSAmJiBFTkFCTEUoSklUKQogLyogRW5hYmxlIHRoZSBERkcgSklUIG9uIFg4
NiBhbmQgWDg2XzY0LiAgT25seSB0ZXN0ZWQgb24gTWFjIGFuZCBHTlUvTGludXguICovCiAjaWYg
KENQVShYODYpIHx8IENQVShYODZfNjQpKSAmJiAoUExBVEZPUk0oTUFDKSB8fCBPUyhMSU5VWCkp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJl
dmlzaW9uIDEwNTIxNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJ
bXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgX19DRlN0cmluZyAqIENGU3RyaQogLy8gTGFuZGluZyB0aGUgZmlsZSBtb3ZlcyBpbiBvbmUg
cGF0Y2gsIHdpbGwgZm9sbG93IG9uIHdpdGggcGF0Y2hlcyB0byBjaGFuZ2UgdGhlIG5hbWVzcGFj
ZXMuCiBuYW1lc3BhY2UgSlNDIHsKIHN0cnVjdCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5zbGF0b3I7
CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3Ry
dWN0IElkZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjsKIHN0cnVjdCBJZGVudGlmaWVyTENo
YXJGcm9tVUNoYXJUcmFuc2xhdG9yOwogfQpAQCAtNzAsNyArNzEsOCBAQCBjbGFzcyBTdHJpbmdJ
bXBsIHsKICAgICBmcmllbmQgc3RydWN0IFdURjo6SGFzaEFuZFVURjhDaGFyYWN0ZXJzVHJhbnNs
YXRvcjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6VUNoYXJCdWZmZXJUcmFuc2xhdG9yOwogICAg
IGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmdJbXBsOwotCisgICAgZnJpZW5kIGNsYXNzIEpTQzo6
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogcHJpdmF0ZToKICAgICBlbnVtIEJ1ZmZlck93
bmVyc2hpcCB7CiAgICAgICAgIEJ1ZmZlckludGVybmFsLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123042</attachid>
            <date>2012-01-18 17:16:01 -0800</date>
            <delta_ts>2012-01-18 19:46:45 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier27_patch_1.diff</filename>
            <type>text/plain</type>
            <size>407179</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDI0NCBA
QAotMjAxMi0wMS0xOCAgUm9sYW5kIFRha2FjcyAgPHRha2Fjcy5yb2xhbmRAc3R1ZC51LXN6ZWdl
ZC5odT4KKzIwMTItMDEtMTcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAg
ICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIFdPUksgSU4gUFJPR1JFU1MuICBJdCBhcHBlYXJzIHRvIHdvcmssIGJ1dCB0
aGUgdGllcmluZyBsb2dpYyBpcyBub3QKKwljb21wbGV0ZWx5IGdsdWVkIHRvZ2V0aGVyIHlldC4K
KyAgICAgICAgCisgICAgICAgIEltcGxlbWVudGVkIGFuIGludGVycHJldGVyIHRoYXQgdXNlcyB0
aGUgSklUJ3MgY2FsbGluZyBjb252ZW50aW9uLiBUaGlzCisgICAgICAgIGludGVycHJldGVyIGlz
IGNhbGxlZCBMTEludCwgb3IgdGhlIExvdyBMZXZlbCBJbnRlcnByZXRlci4gSlNDIHdpbGwgbm93
CisgICAgICAgIHdpbGwgc3RhcnQgYnkgZXhlY3V0aW5nIGNvZGUgaW4gTExJbnQgYW5kIHdpbGwg
b25seSB0aWVyIHVwIHRvIHRoZSBvbGQKKyAgICAgICAgSklUIGFmdGVyIHRoZSBjb2RlIGlzIHBy
b3ZlbiBob3QuCisgICAgICAgIAorICAgICAgICBMTEludCBpcyB3cml0dGVuIGluIGEgbW9kaWZp
ZWQgZm9ybSBvZiBvdXIgbWFjcm8gYXNzZW1ibHkuIFRoaXMgbmV3IG1hY3JvCisgICAgICAgIGFz
c2VtYmx5IGlzIGNvbXBpbGVkIGJ5IGFuIG9mZmxpbmUgYXNzZW1ibGVyIChzZWUgb2ZmbGluZWFz
bSksIHdoaWNoCisgICAgICAgIGltcGxlbWVudHMgbWFueSBtb2Rlcm4gY29udmVuaWVuY2VzIHN1
Y2ggYXMgYSBUdXJpbmctY29tcGxldGUgQ1BTLWJhc2VkCisgICAgICAgIG1hY3JvIGxhbmd1YWdl
IGFuZCBkaXJlY3QgYWNjZXNzIHRvIHJlbGV2YW50IEMrKyB0eXBlIGluZm9ybWF0aW9uCisgICAg
ICAgIChiYXNpY2FsbHkgb2Zmc2V0cyBvZiBmaWVsZHMgYW5kIHNpemVzIG9mIHN0cnVjdHMvY2xh
c3NlcykuCisgICAgICAgIAorICAgICAgICBDb2RlIGV4ZWN1dGluZyBpbiBMTEludCBhcHBlYXJz
IHRvIHRoZSByZXN0IG9mIHRoZSBKU0Mgd29ybGQgImFzIGlmIiBpdAorICAgICAgICB3ZXJlIGV4
ZWN1dGluZyBpbiB0aGUgb2xkIEpJVC4gSGVuY2UsIHRoaW5ncyBsaWtlIGV4Y2VwdGlvbiBoYW5k
bGluZyBhbmQKKyAgICAgICAgY3Jvc3MtZXhlY3V0aW9uLWVuZ2luZSBjYWxscyBqdXN0IHdvcmsg
YW5kIHJlcXVpcmUgcHJldHR5IG11Y2ggbm8KKyAgICAgICAgYWRkaXRpb25hbCBvdmVyaGVhZC4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgaW50ZXJwcmV0ZXIgaXMgMi0yLjV4IGZhc3RlciB0aGFu
IG91ciBvbGQgaW50ZXJwcmV0ZXIgb24gU3VuU3BpZGVyLAorICAgICAgICBWOCwgYW5kIEtyYWtl
bi4gVGhpcyBpcyB0aGUgImZpcnN0IGF0dGVtcHQiIHBlcmZvcm1hbmNlIC0gbm8gd29yayBoYXMg
YmVlbgorICAgICAgICBkb25lIHRvIGRpYWdub3NlIGFueSBwb3RlbnRpYWwgYm90dGxlbmVja3Mu
IE1hbnkgb2J2aW91cyBvbmVzIGV4aXN0LCBsaWtlCisgICAgICAgIHJlZHVjaW5nIHRoZSBudW1i
ZXIgb2YgaW5zdHJ1Y3Rpb25zIGltcGxlbWVudGVkIGFzIHNsb3cgY2FsbHMgdG8gQysrIGNvZGUK
KyAgICAgICAgYW5kIG1ha2luZyBwcm9wZXJ0eSBhY2Nlc3MgY2FjaGluZyBtb3JlIGFnZ3Jlc3Np
dmUuCisgICAgICAgIAorICAgICAgICBBcyBhbiBhZGRpdGlvbmFsIGNoYW5nZSwgdGhpcyBwYXRj
aCBtYWtlcyBieXRlY29kZSBkdW1waW5nIGFuZCBKU1ZhbHVlCisgICAgICAgIGR1bXBpbmcgd29y
ayBpbiByZWxlYXNlIGJ1aWxkcywgc2luY2UgZGVidWdnaW5nIHNvbWUgb2YgdGhlIG5hc3RpZXIK
KyAgICAgICAgYXNwZWN0cyBvZiB0aGlzIHBhdGNoIHdvdWxkIGhhdmUgYmVlbiBpbXBvc3NpYmxl
IHdpdGhvdXQgdGhhdC4gQW5kIEkKKyAgICAgICAgZG9uJ3QgYmVsaWV2ZSB0aGF0IHdlIGNhcmUg
YWJvdXQgdGhlIG1pbmlzY3VsZSBjb2RlIGJsb2F0IHRoYXQgdGhpcworICAgICAgICBpbnRyb2R1
Y2VzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9M
aW5rQnVmZmVyLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp1bmxpbmtDYWxscyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5saW5rSW5jb21pbmdD
YWxscyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OkV2YWxD
b2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6Ompl
dHRpc29uKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUNvZGVCbG9jazo6aml0Q29tcGlsZSk6Cisg
ICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFuZGxl
Qnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
Omhhc09wdGltaXplZFJlcGxhY2VtZW50KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRM
TEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkRnJlcXVlbnRF
eGl0U2l0ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZG9udEpJVEFueXRpbWVTb29uKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6aml0U29vbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGxpbnRFeGVj
dXRlQ291bnRlcik6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAg
KEpTQzo6SW5zdHJ1Y3Rpb246Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9MTElu
dENhbGxMaW5rSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86
OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5M
TEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xp
bmtlZCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAg
ICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dl
bmVyYXRlZENvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5l
cmF0ZWRDb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoVGhpcyk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0RGlyZWN0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3Ry
dWN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaCk6CisgICAg
ICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5o
OgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBoZWFwL0FsbG9jYXRpb25TcGFjZS5oOgorICAg
ICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAg
ICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpj
dXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjppc09wY29k
ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUpOgorICAgICAg
ICAoSlNDOjpJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKToKKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bj
b2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAg
KEpTQzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lz
dGVyRmlsZS5oOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKToKKyAg
ICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAg
IChKU0M6OkpJVENvZGU6OmlzT3B0aW1pemluZ0pJVCk6CisgICAgICAgIChKU0M6OkpJVENvZGU6
OmlzQmFzZWxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6SklUQ29kZSk6CisgICAg
ICAgICogaml0L0pJVERyaXZlci5oOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlSWZBcHByb3By
aWF0ZSk6CisgICAgICAgIChKU0M6OmppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUpOgor
ICAgICAgICAqIGppdC9KSVRFeGNlcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6aml0VGhyb3cp
OgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVC
X0ZVTkNUSU9OKToKKyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiBs
bGludDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRDb21tb24uaDogQWRkZWQuCisgICAg
ICAgICogbGxpbnQvTExJbnREYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpE
YXRhOjpEYXRhKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6On5EYXRhKToKKyAgICAgICAg
KiBsbGludC9MTEludERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpl
eGNlcHRpb25JbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6b3Bjb2Rl
TWFwKToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnRzLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkxMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpM
TEludDo6Z2V0RXZhbEVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0UHJvZ3Jh
bUVudHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuaDogQWRkZWQu
CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9M
TEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJl
dGVyVGhyb3cpOgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuVG9UaHJvd0ZvclRocm93bkV4
Y2VwdGlvbik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93KToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmNhbGxUb1Rocm93KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlv
bnMuaDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hF
TFBFUl9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6
CisgICAgICAgIChKU0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoSlNDOjpMTEludDo6
Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9zdENhbGwpOgorICAgICAg
ICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWND
YWxsKToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRkZWQuCisgICAgICAgICog
bGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludE9mZnNl
dHNFeHRyYWN0b3I6OmR1bW15KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsaW50L0xM
SW50VGh1bmtzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbyk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRyeVRo
dW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0
RW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNh
bGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpM
TEludDo6ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6cHJv
Z3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRlZC4K
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDogQWRkZWQuCisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBBZGRlZC4KKyAgICAg
ICAgKiBvZmZsaW5lYXNtL2FzbS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc3Qu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYjogQWRkZWQuCisg
ICAgICAgICogb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmI6IEFkZGVkLgorICAgICAgICAqIG9m
ZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20vb2Zmc2V0cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9wYXJz
ZXIucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcmVnaXN0ZXJzLnJiOiBBZGRlZC4K
KyAgICAgICAgKiBvZmZsaW5lYXNtL3NldHRpbmdzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZs
aW5lYXNtL3RyYW5zZm9ybS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYucmI6
IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOiBBZGRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAoSlNDOjpD
b21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmpldHRpc29uQ29kZUJsb2NrKToKKyAgICAgICAgKEpT
Qzo6RXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpzYW1wbGluZ0Rl
c2NyaXB0aW9uKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5h
bCk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAg
ICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbCk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6YmFzZWxpbmVDb2RlQmxvY2tGb3IpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDYWxsKToKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ29uc3RydWN0KToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwp
OgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0aW9u
SGFybmVzcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6cHJlcGFyZUZvckV4ZWN1dGlvbik6Cisg
ICAgICAgIChKU0M6OnByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0FjdGl2YXRpb24uaDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjp0ZWFyT2Zm
KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2Vs
bC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERh
dGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgICog
cnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6ZGVzY3JpcHRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJp
YWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6Ok9wdGlvbnM6OmluaXRpYWxpemVPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnMuaDoKKyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAg
ICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisK
KzEyLTAxLTE4ICBSb2xhbmQgVGFrYWNzICA8dGFrYWNzLnJvbGFuZEBzdHVkLnUtc3plZ2VkLmh1
PgogCiAgICAgICAgIENyb3NzLXBsYXRmb3JtIHByb2Nlc3NvciBjb3JlIGNvdW50ZXIgZml4CiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjU0MApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEw
NTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MCw2ICs2
MCw3IEBAIGFsbCA6IFwKICAgICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU3RyaW5n
UHJvdG90eXBlLmx1dC5oIFwKICAgICBkb2NzL2J5dGVjb2RlLmh0bWwgXAorICAgIExMSW50QXNz
ZW1ibHkuaC5QSE9OWSBcCiAjCiAKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwpAQCAtMTA0
LDMgKzEwNSwxMSBAQCBIZWFkZXJEZXRlY3Rpb24uaCA6CiAJZWNobyA+ICRACiAKIGVuZGlmCisK
KyMgQXNzZW1ibHkgZm9yIHRoZSBMb3dMZXZlbEludGVycHJldGVyCisKKyMgVGhpcyBidWlsZHMg
ZXZlcnkgdGltZSBiZWNhdXNlIHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGRlc2NyaWJlCisjIHRo
ZSBkZXBlbmRlbmNpZXMgdXNpbmcgbWFrZS4gSW5zdGVhZCwgdGhlIGFzc2VtYmxlciB3aWxsIGRl
Y2lkZSBvbgorIyBpdHMgb3duIHdoZXRoZXIgb3Igbm90IGl0IGRpZCBhbnl0aGluZyB0aGF0IHdv
dWxkIGxlYWQgdG8gYSBjaGFuZ2UuCitMTEludEFzc2VtYmx5LmguUEhPTlk6CisJcnVieSAkKEph
dmFTY3JpcHRDb3JlKS9vZmZsaW5lYXNtL2FzbS5yYiAkKEphdmFTY3JpcHRDb3JlKS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yID4gTExJbnRBc3NlbWJseS5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcs
NiArNywxNSBAQAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBz
ZWN0aW9uICovCisJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICov
ID0geworCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9u
TGlzdCA9IDBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi87CisJCQlidWlsZFBo
YXNlcyA9ICgKKwkJCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZl
ZCBTb3VyY2VzICovLAorCQkJKTsKKwkJCW5hbWUgPSAiTExJbnQgT2Zmc2V0cyI7CisJCQlwcm9k
dWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOworCQl9OwogCQk2NUZCM0Y2NjA5RDExRTkxMDBG
NDlERUIgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYQWdncmVnYXRlVGFy
Z2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDY1RkIzRjc3MDlEMTFFQkQwMEY0OURF
QiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVy
aXZlZCBTb3VyY2VzIiAqLzsKQEAgLTE0LDYgKzIzLDkgQEAKIAkJCQk2NUZCM0Y2NTA5RDExRTkx
MDBGNDlERUIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTVEMzVERUUxMEM3
QzE0MEIwMDg2NDhCMiAvKiBHZW5lcmF0ZSBEVHJhY2UgaGVhZGVyICovLAogCQkJKTsKKwkJCWRl
cGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0
RGVwZW5kZW5jeSAqLywKKwkJCSk7CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlw
cm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQl9OwpAQCAtNDgsNiArNjAsMTAgQEAK
IAkJMEJBQzk0QTAxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQUM5NDlF
MTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJDRDgzNTcxNDg1ODQ1
MjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEJDRDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFy
eUNoYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCRjI4QTI4MTFBMzNEQzMwMDYz
OEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRG
IC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2lu
dHMuY3BwICovOyB9OworCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBv
aW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYw
QjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBCODM5QzE0QkNGNDYzMDA4
ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNw
cCAqLzsgfTsKKwkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5ODE0QkNG
NDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4
M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBI
YW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQUIxNEJDRjVCQjAw
ODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNz
aW9uUmFuZ2VJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTU4LDkgKzc0LDEzIEBACiAJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBN
ZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBC
ODNCNzE0QkNGOEUxMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0
RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJu
T2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZz
ZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBG
QzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE1RjE1RjE0QjdBNzNFMDA1
REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1Bh
dGhzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYxNkQ3MjYxNDJDMzlDMDAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEg
LyogQml0VmVjdG9yLmNwcCAqLzsgfTsKIAkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJ
VERyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0
QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVz
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
MjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3OTE0QkU3Mjcz
MDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAv
KiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50
aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0MkRBNTEzRjNC
MUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTZGMTQ3MzhGMzEwMDEyMUU0
RiAvKiBERkdDb2RlQmxvY2tzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTcw
MTQ3MzhGMzUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBE
RkdDb2RlQmxvY2tzLmNwcCAqLzsgfTsKQEAgLTcxLDYgKzkxLDE5IEBACiAJCTBGNDMxNzM4MTQ2
QkFDNjkwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0
YWJsZUhhbmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwODAxNEJBNTcy
NzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhj
ZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi87IH07CisJ
CTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlFMTRCQTdGODIwMEJG
RTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxw
ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovOyBzZXR0aW5ncyA9
IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLXVudXNlZC1wYXJhbWV0ZXIiOyB9OyB9OworCQkwRjQ2
ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRIZWxwZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2
ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsK
KwkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RDE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0ExNEJCQjE2
QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2
ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNjE0QkJCMTY5MDBC
RkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExv
d0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0
ZXIuY3BwICovOyB9OworCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRl
cnByZXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBEMjE0QkJE
MTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEu
Y3BwICovOyB9OworCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRjE0QkJC
M0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxs
UmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3Bw
ICovOyB9OworCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Njgw
RDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAw
NDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjYyMDE3NDE0M0ZDRDMzMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nl
c3NEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjYyMDE3MjE0M0ZDRDJGMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAxNzUxNDNG
Q0QzNzAwNjhCNzdDIC8qIERGR09wZXJhbmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYyMDE3MTE0M0ZDRDJGMDA2OEI3N0MgLyogREZHT3BlcmFu
ZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
Mzc1LDcgKzQwOCw3IEBACiAJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZm
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5
QUUxMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYg
LyogREZHUmVwYXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkJCMDlCRTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87IH07
CiAJCTg2QkIwOUMxMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1Njcw
MkYgLyogREZHUmVwYXRjaC5oICovOyB9OwotCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyog
TWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyB9
OworCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQw
MEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fz
c2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NkM1NjhERDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICov
OyB9OwogCQk4NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTEx
QTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07CiAJCTg2QzU2OEUy
MTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQ
U0Fzc2VtYmxlci5oICovOyB9OwpAQCAtNzM4LDYgKzc3MSwyMCBAQAogLyogRW5kIFBCWEJ1aWxk
RmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9u
ICovCisJCTBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0
YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlw
cm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0QkE3RkQ5
MDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gIkxMSW50IE9mZnNldHMiOworCQl9OworCQkwRjQ2
ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJ
aXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2
OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0g
MTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyOwor
CQkJcmVtb3RlSW5mbyA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJMTQxMjE0
QkUwQTQ5MTkwRTAwNDgwMjU1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlz
YSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkw
RkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTc4Myw2ICs4MzAsMTUg
QEAKIC8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1RTAwQkZF
MjcyIC8qIENvcHlGaWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7
CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hh
cmUvbWFuL21hbjEvOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJ
CSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKIAkJ
NURCQjE1MTExMzFEMEIxMzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7
CkBAIC04MjMsNiArODc5LDEwIEBACiAJCTBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJl
YWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEJDRDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhcnlDaGFuZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IExMSW50RW50cnlwb2ludHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0
RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IExMSW50RW50cnlwb2ludHMuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExM
SW50VGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50
VGh1bmtzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50VGh1bmtzLmg7IHBhdGggPSBs
bGludC9MTEludFRodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNB
NTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29kZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgz
QTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgzMyw5ICs4OTMsMTMgQEAKIAkJMEYwQjgzQjMxNEJD
Rjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNZXRob2RDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbFJlc29sdmVJbmZvLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBD
YWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxs
TGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRDYWxsTGlu
a0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3QTczQTAw
NURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb21tb25TbG93UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYx
NkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdBMTRCRTcyNzMw
MEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEV4ZWN1dGlvbkhhcm5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVDb252ZW50aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1Jl
ZmVyZW5jZUhhcnZlc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFr
UmVmZXJlbmNlSGFydmVzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1
NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDYsNiArOTEwLDIwIEBACiAJCTBGNDMxNzM2MTQ2
QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhj
ZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRFeGNlcHRpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3
MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1
ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8q
IExMSW50RXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBMTEludEV4Y2VwdGlvbnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8q
IExMSW50RXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTElu
dEV4Y2VwdGlvbnMuaDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxw
ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50SGVscGVy
cy5jcHA7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50SGVscGVycy5oOyBwYXRoID0gbGxp
bnQvTExJbnRIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEEx
MTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgcGF0
aCA9IGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENvbW1vbi5oOyBwYXRoID0gbGxpbnQv
TExJbnRDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzYxNEJC
QjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMTEludE9mZmxpbmVBc21Db25maWcuaDsgcGF0aCA9IGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmNwcDsgcGF0
aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmg7
IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnREYXRhLmNwcDsgcGF0aCA9IGxs
aW50L0xMSW50RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENG
MTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTExJbnREYXRhLmg7IHBhdGggPSBsbGludC9MTEludERhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxs
UmV0dXJuVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSG9z
dENhbGxSZXR1cm5WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4
MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5dGVDb2Rl
Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNvZGVDYWNo
ZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVDb2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5jb25kaXRpb25hbEZpbmFs
aXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYyMDE2RDE0M0ZDRDJGMDA2
OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdBYnN0cmFjdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdBYnN0cmFjdFN0
YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NTEsNiArMTYyOSwxMyBA
QAogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFt
ZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAv
KiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFF
MEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3
b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTYw
OSw2ICsxNjk0LDcgQEAKIAkJCQkxNDEyMTEyMDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAq
LywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk2NTEx
MjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RjE0QkE3
RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAogCQkJKTsKIAkJCW5h
bWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjM5LDYgKzE3
MjUsNyBAQAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVBy
ZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAog
CQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLywKKwkJCQkwRjQ2ODA5
QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3
QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVy
ICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKQEAgLTE2
NzcsNiArMTc2NCwyOCBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9
OworCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLywKKwkJCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYg
LyogTExJbnRFbnRyeXBvaW50cy5oICovLAorCQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludFRodW5rcy5jcHAgKi8sCisJCQkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExM
SW50VGh1bmtzLmggKi8sCisJCQkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0
YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICov
LAorCQkJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovLAorCQkJ
CTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLywK
KwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAg
Ki8sCisJCQkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIu
aCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNw
cCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmgg
Ki8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8s
CisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovLAorCQkJ
CTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICov
LAorCQkJKTsKKwkJCW5hbWUgPSBsbGludDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CiAJCTE0MTIxMTAwMEE0ODc3MjYwMDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNzA5LDYgKzE4MTgsOCBAQAogCQkxNDI5
RDkyQzBFRDIyRDcwMDBCODk2MTkgLyogaml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxS
ZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RD
YWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklU
RXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4
Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJ
VENvZGVNYXAuaCAqLywKQEAgLTIxMzIsNiArMjI0Myw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMw
MDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oICovLAorCQkJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJu
ZXNzLmggKi8sCiAJCQkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRo
cy5oICovLAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywK
IAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLApAQCAtMjQ5Miw2
ICsyNjA1LDggQEAKIAkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3RTE0QkVB
QTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovLAorCQkJCTBGMEZDNDU4MTRC
RDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovLAogCQkJCTBGMEI4M0I4MTRC
Q0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovLAog
CQkJCTBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovLAog
CQkJCTBGMEI4M0IyMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3BwICov
LApAQCAtMzAzMCw3ICszMTQ1LDE2IEBACiAJCQkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8q
IFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZF
N0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRC
N0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
NDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21t
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTElu
dE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENEMTRCQkIxN0Qw
MEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2
ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRo
dW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENv
ZGVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyog
SGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0
RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTMwMzksNyArMzE2
MywxMSBAQAogCQkJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0lu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9i
YWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1
QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25I
YXJuZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyog
Q29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0YxNEJF
QUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGN0IyOTRBMTRDM0NEMjkwMDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRDMTRDM0NENDMwMDdDM0RCMSAvKiBERkdCeXRlQ29k
ZUNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNTIsNiArMzE4MCwyNCBAQAogLyogRW5kIFBC
WEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0
IHNlY3Rpb24gKi8KKwkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0
c0V4dHJhY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29u
ZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ciIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIg
LyogU291cmNlcyAqLywKKwkJCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3Jr
cyAqLywKKwkJCQkwRjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovLAorCQkJ
KTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBG
NDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsK
KwkJCW5hbWUgPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0TmFtZSA9IEpT
Q0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAwRjQ2ODA4RjE0
QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJcHJvZHVj
dFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKIAkJMTQxMjExMUYw
QTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJn
ZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9t
IiAqLzsKQEAgLTMxNzgsMTEgKzMzMjQsMjkgQEAKIAkJCQkxNEJENTlCRTBBM0U4RjkwMDBCQUY1
OUMgLyogdGVzdGFwaSAqLywKIAkJCQk5MzJGNUJEQTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICov
LAogCQkJCTY1MTEyMkY3MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBG
NDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCisJ
CQkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8sCiAJCQkpOwog
CQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTaGVsbFNj
cmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyog
R2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRC
dWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0g
KAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoU1JDUk9PVCkvbGxpbnQvTG93TGV2
ZWxBc3NlbWJsZXIuYXNtIiwKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIERlcml2ZWQgU291
cmNlcyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xM
SW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJ
CXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zm
c2V0cy9cIlxuXG4vdXNyL2Jpbi9lbnYgcnVieSBcIiR7U1JDUk9PVH0vb2ZmbGluZWFzbS9nZW5l
cmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiXCIgPCBcIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc21cIiA+IFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9M
TEludERlc2lyZWRPZmZzZXRzLmhcIlxuIjsKKwkJfTsKIAkJMzcxM0YwMTQxNDI5MDUyNDAwMzYz
ODdGIC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzICov
ID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKQEAgLTMzMjMsNiArMzQ4NywxNCBAQAogLyogRW5kIFBCWFNoZWxs
U2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8g
PSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIg
LyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRDBB
NDg3OTNDMDA0ODAyNTUgLyogU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWls
ZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTM1ODAsNyArMzc1
MiwxNCBAQAogCQkJCTg2NzA0Qjg2MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg2NzA0Qjg5MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5
bnRheENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZF
MjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBODE0QkE3
RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERh
dGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhv
c3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUExNEJDRjQ1
RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYw
QjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYwQjgzQjQxNEJDRjg2MDAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5m
by5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNjlFODZDMzE0QzZFNTUxMDAyQzJDNjIgLyogTnVt
YmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM1OTgsNiArMzc3NywxNiBAQAogLyog
RW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVGFyZ2V0
RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJ
CXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovOwor
CQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovOworCQl9OworCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFy
Z2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0
YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFj
dG9yICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQkxNDEyMTRCRjBBNDkxOTBFMDA0ODAyNTUg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CiAJCQl0YXJnZXQgPSAxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLzsK
QEAgLTM2MzEsNiArMzgyMCwxNDggQEAKIC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkwRjQ2
ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VS
X1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJ
CQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBn
bnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5BQkxFX09CSkNf
RVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlH
Q0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIk
KGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBO
TzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7
CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FS
Tl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVU
VVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJ
CSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJ
CQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVS
X1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0g
MTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gWUVTOworCQkJCVBST0RVQ1RfTkFNRSA9ICIk
KFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9T
RUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAk
KEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJ
CTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFS
Q0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklU
KSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9G
T1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9
IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19W
RVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FS
Tl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJ
TkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlF
UzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFS
Q0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRf
UFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkp
OworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1F
ID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVB
REVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZz
ZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOwor
CQl9OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFM
V0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRB
UkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZP
Uk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9T
VEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOwor
CQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJ
CQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FC
T1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5f
VFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhF
QURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJ
IiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VB
UkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43
OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1h
Y29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9E
VUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJ
CQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyog
UHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlB
UkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAg
PSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7
CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09C
SkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxl
cnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04g
PSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJ
R0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZB
UklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJ
CQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRz
IiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RF
UExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFN
RSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhT
ID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VB
UkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4
MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVy
aXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0
NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0g
IkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsK
KwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNU
X05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxp
bmc7CisJCX07CisJCTBGNDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovID0g
eworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0gewor
CQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFt
ZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1NSAvKiBEZWJ1
ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5n
cyA9IHsKQEAgLTM4NzIsNiArNDIwMywyOCBAQAogLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9u
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJ
CTBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLyA9IHsKKwkJCWlz
YSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJ
CTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODA5NzE0QkE3
RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIg
LyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0
aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFD
MTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3Jl
Z2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRp
b25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODBBRDE0QkE3RkQ5
MDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJl
bGVhc2UgKi8sCisJCQkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywK
KwkJCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJ
CQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJh
dGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUg
LyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20i
ICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJh
dGlvbnMgPSAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuaAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNkZWZp
bmUgRFVNUF9MSU5LX1NUQVRJU1RJQ1MgMAogI2RlZmluZSBEVU1QX0NPREUgMAogCi0jaW5jbHVk
ZSA8TWFjcm9Bc3NlbWJsZXIuaD4KKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNv
bnZlbnRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCeXRlY29kZUNvbnZlbnRp
b25zX2gKKyNkZWZpbmUgQnl0ZWNvZGVDb252ZW50aW9uc19oCisKKy8vIFJlZ2lzdGVyIG51bWJl
cnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNj
b3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKKy8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBO
ZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGlu
IHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCisvLyAgICAgIDB4MDAwMDAwMDAt
MHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBh
cmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJh
bWUuCisvLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9t
IDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBD
b2RlQmxvY2suCitzdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0g
MHg0MDAwMDAwMDsKKworI2VuZGlmIC8vIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24g
MTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIK
KyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+
CkBAIC01OSw4ICs2MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogdXNpbmcgbmFtZXNwYWNlIERGRzsK
ICNlbmRpZgogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5H
KQotCiBzdGF0aWMgVVN0cmluZyBlc2NhcGVRdW90ZXMoY29uc3QgVVN0cmluZyYgc3RyKQogewog
ICAgIFVTdHJpbmcgcmVzdWx0ID0gc3RyOwpAQCAtMzU4LDEwICszNTcsMTAgQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjKSBjbwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBpICs9IG9wY29kZUxlbmd0aHNbZXhlYy0+aW50ZXJw
cmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbaV0udS5vcGNvZGUpXSkKICAgICAg
ICAgKytpbnN0cnVjdGlvbkNvdW50OwogCi0gICAgcHJpbnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7
ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocylc
blxuIiwKKyAgICBwcmludGYoIiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAl
ZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocylcblxu
IiwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25Db3VudCks
CiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNpemUo
KSAqIHNpemVvZihJbnN0cnVjdGlvbikpLAotICAgICAgICB0aGlzLCBtX251bVBhcmFtZXRlcnMs
IG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgdGhpcywgbV9udW1QYXJhbWV0ZXJzLCBt
X251bUNhbGxlZVJlZ2lzdGVycywgbV9udW1WYXJzKTsKIAogICAgIFZlY3RvcjxJbnN0cnVjdGlv
bj46OmNvbnN0X2l0ZXJhdG9yIGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICBW
ZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBpbnN0cnVjdGlvbnMoKS5l
bmQoKTsKQEAgLTg5MCw2ICs4ODksMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRl
KiBleGVjLCBjbwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0
LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7CisgICAgICAg
ICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3QiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CisgICAgICAgICAgICBwcmludFB1
dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwi
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX2dlbmVyaWM6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInB1dF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyODEs
OCArMTI4OCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAg
ICB9CiB9CiAKLSNlbmRpZiAvLyAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRShPUENPREVfU0FN
UExJTkcpCi0KICNpZiBEVU1QX0NPREVfQkxPQ0tfU1RBVElTVElDUwogc3RhdGljIEhhc2hTZXQ8
Q29kZUJsb2NrKj4gbGl2ZUNvZGVCbG9ja1NldDsKICNlbmRpZgpAQCAtMTQ0OSw2ICsxNDU0LDcg
QEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLAogewogICAgIHNldE51
bVBhcmFtZXRlcnMob3RoZXIubnVtUGFyYW1ldGVycygpKTsKICAgICBvcHRpbWl6ZUFmdGVyV2Fy
bVVwKCk7CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsKICAgICAKICAgICBpZiAob3RoZXIubV9yYXJl
RGF0YSkgewogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0xNDk3LDYg
KzE1MDMsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAg
QVNTRVJUKG1fc291cmNlKTsKICAgICAKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAg
aml0QWZ0ZXJXYXJtVXAoKTsKIAogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNTCiAgICAg
bGl2ZUNvZGVCbG9ja1NldC5hZGQodGhpcyk7CkBAIC0xNTE0LDcgKzE1MjEsMTEgQEAgQ29kZUJs
b2NrOjp+Q29kZUJsb2NrKCkKICNpZiBFTkFCTEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxFKQogICAg
IGR1bXBWYWx1ZVByb2ZpbGVzKCk7CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShMTElOVCkg
ICAgCisgICAgd2hpbGUgKG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWlu
Z0xMSW50Q2FsbHMuZW5kKCkpCisgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCkt
PnJlbW92ZSgpOworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKICNpZiBFTkFCTEUoSklUKQogICAg
IC8vIFdlIG1heSBiZSBkZXN0cm95ZWQgYmVmb3JlIGFueSBDb2RlQmxvY2tzIHRoYXQgcmVmZXIg
dG8gdXMgYXJlIGRlc3Ryb3llZC4KICAgICAvLyBDb25zaWRlciB0aGF0IHR3byBDb2RlQmxvY2tz
IGJlY29tZSB1bnJlYWNoYWJsZSBhdCB0aGUgc2FtZSB0aW1lLiBUaGVyZQpAQCAtMTcyNiw4ICsx
NzM3LDU1IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICNlbHNl
CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZVVubGlua2luZyA9IGZhbHNlOwogI2VuZGlm
Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogICAgIAorI2lmIEVOQUJMRShMTElOVCkK
KyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJldGVy
OworICAgIGlmICghaW50ZXJwcmV0ZXItPmVuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHNpemVf
dCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAm
aW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV07CisgICAgICAg
ICAgICBzd2l0Y2ggKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51
Lm9wY29kZSkpIHsKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0
XS51LnN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVj
dHVyZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAg
Y3VySW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgICAgICAgICAg
ICAgaWYgKEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgp
KQorICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls2
XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJr
ZWQoY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3Ry
dWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1
Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVj
dHVyZUNoYWluLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bMF0udS5v
cGNvZGUgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAo
c2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsg
aSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9u
ID0gJmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV07CisgICAg
ICAgICAgICBBU1NFUlQoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBd
LnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbAorICAgICAgICAgICAgICAgICAgIHx8IGlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3Bf
cmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CisgICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9u
WzNdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzNdLnUuc3Ry
dWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGN1
ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBjdXJJbnN0
cnVjdGlvbls0XS51Lm9wZXJhbmQgPSAwOworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAg
ICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhlYXA6Omlz
TWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRm
KCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAgICAg
ICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKICNpZiBFTkFCTEUoREZHX0pJ
VCkKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2UgYXJlLCB0aGVuIGpldHRp
c29uLgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2Fu
KCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7CkBAIC0xODQ4LDEwICsx
OTA2LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXIKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7ICsraSkKICAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAjaWYgRU5BQkxFKElOVEVS
UFJFVEVSKQotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0dXJl
cyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tp
XV0pOwotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMu
c2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZp
c2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsK
KyAgICBpZiAobV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAgICAg
IGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwg
aSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRv
ciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKKyAg
ICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXpl
KCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZp
c2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsK
KyAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMjA2MCw2ICsyMTIwLDEy
IEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiB7CiAgICAgaWYgKCEhbV9hbHRlcm5h
dGl2ZSkKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+dW5saW5rQ2FsbHMoKTsKKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5z
aXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5mb3NbaV0uaXNMaW5r
ZWQoKSkKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOworICAg
IH0KKyNlbmRpZgogICAgIGlmICghKG1fY2FsbExpbmtJbmZvcy5zaXplKCkgfHwgbV9tZXRob2RD
YWxsTGlua0luZm9zLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fZ2xvYmFs
RGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0yMDc0LDEwICsyMTQwLDM1IEBAIHZvaWQgQ29kZUJsb2Nr
Ojp1bmxpbmtDYWxscygpCiAKIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKCkK
IHsKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5n
TExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+
dW5saW5rKCk7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRoaXMpOwogICAgIHdo
aWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2FsbHMuZW5kKCkpCiAg
ICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigpLT51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVw
YXRjaEJ1ZmZlcik7CiB9CisKK3Vuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhl
Y1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit7CisjaWYgRU5B
QkxFKExMSU5UKQorICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfYmVnaW4pCisgICAgICAgICYmIHJldHVybkFkZHJlc3MudmFsdWUoKSA8
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQpKSB7CisgICAgICAgIEFTU0VSVChleGVj
LT5jb2RlQmxvY2soKSk7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSA9PSB0aGlz
KTsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkp
OworICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBleGVjLT5jdXJyZW50VlBDKCk7
CisgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbik7CisgICAgICAgIHJldHVybiBieXRlY29kZU9m
ZnNldChpbnN0cnVjdGlvbik7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CisjZW5kaWYKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiAxOworICAgIFZl
Y3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0gbV9y
YXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7CisgICAgaWYgKCFjYWxsSW5kaWNlcy5z
aXplKCkpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0
PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5v
ZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7Cit9CiAjZW5k
aWYKIAogdm9pZCBDb2RlQmxvY2s6OmNsZWFyRXZhbENhY2hlKCkKQEAgLTIxNzMsMjQgKzIyNjQs
NDUgQEAgYm9vbCBGdW5jdGlvbkNvZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERgogCiB2b2lkIFBy
b2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9
IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5n
SklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwog
ICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5q
ZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRXZhbENvZGVC
bG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklU
VHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGlj
X2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1p
emVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6amV0
dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVK
SVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7
CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENv
ZGVGb3IoKmdsb2JhbERhdGEoKSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6
IENvZGVGb3JDYWxsKTsKIH0KKwordm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAg
IHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRD
b21waWxlKGV4ZWMpOworfQorCit2b2lkIEV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgc3Rh
dGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUo
ZXhlYyk7Cit9CisKK3ZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGUoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgc3RhdGlj
X2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxl
Rm9yKGV4ZWMsIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2Fs
bCk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEwNTMwOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBDb2RlQmxvY2tfaAogI2RlZmluZSBDb2Rl
QmxvY2tfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkNh
bGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0
LmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgpAQCAtNTAsNiArNTEsNyBAQAogI2luY2x1ZGUg
IkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKICNpbmNsdWRl
ICJMaW5lSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUHJlZGljdGlvblRy
YWNrZXIuaCIKQEAgLTY1LDE2ICs2NywxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCi0vLyBSZWdpc3RlciBudW1iZXJzIHVzZWQg
aW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0
byB0aGVpciByYW5nZXM6Ci0vLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUg
aW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2Fs
bCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgotLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZG
RkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2Fs
IHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgotLy8g
ICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAw
MDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2Nr
Lgotc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAw
MDA7Ci0KIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNz
IERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIAogICAgIGlubGluZSBpbnQgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lz
dGVyKGludCBhcmd1bWVudHNSZWdpc3RlcikgeyByZXR1cm4gYXJndW1lbnRzUmVnaXN0ZXIgLSAx
OyB9CiAKQEAgLTgzLDYgKzgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIsIHB1YmxpYyBXZWFrUmVmZXJlbmNl
SGFydmVzdGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENvcHlQYXJzZWRCbG9ja1RhZyB7IENvcHlQ
YXJzZWRCbG9jayB9OwogICAgIHByb3RlY3RlZDoKQEAgLTEyMyw3ICsxMjEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5hbHRlcm5hdGl2ZSgpOwogICAgICAgICAgICAg
QVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkg
PT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6Omlz
QmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICB9CiAjZW5kaWYKQEAgLTEzNCwxMSArMTMyLDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAotI2lmICFk
ZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFX09QQ09ERV9TQU1QTElORwogICAgICAgICB2b2lkIGR1
bXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmVzKGNvbnN0
IEluc3RydWN0aW9uKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmUoY29uc3Qg
Y2hhciogbmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBpbnQgb3BlcmFuZCkgY29uc3Q7Ci0jZW5k
aWYKIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJp
Y3RNb2RlOyB9CiAKQEAgLTE5NCwxNSArMTkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9kQ2FsbExpbmtJbmZvLCB1bnNpZ25lZCwg
Z2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4obV9tZXRob2RDYWxsTGlua0luZm9z
LmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCksIGJ5dGVjb2RlSW5kZXgpKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX3JhcmVE
YXRhKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgVmVjdG9yPENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5t
X2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKLSAgICAgICAgICAgIGlmICghY2FsbEluZGljZXMuc2l6
ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgcmV0dXJuIGJpbmFy
eVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCwgdW5zaWduZWQsIGdldENh
bGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwg
Z2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9m
ZnNldDsKLSAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChFeGVjU3Rh
dGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7CkBAIC0yMjMsMTEgKzIx
MSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgbV9pbmNvbWlu
Z0NhbGxzLnB1c2goaW5jb21pbmcpOwogICAgICAgICB9CisjaWYgRU5BQkxFKExMSU5UKQorICAg
ICAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoTExJbnRDYWxsTGlua0luZm8qIGluY29taW5nKQor
ICAgICAgICB7CisgICAgICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5wdXNoKGluY29taW5n
KTsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKICAgICAgICAgCiAgICAgICAg
IHZvaWQgdW5saW5rSW5jb21pbmdDYWxscygpOwotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKIAotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUo
TExJTlQpCiAgICAgICAgIHZvaWQgc2V0SklUQ29kZU1hcChQYXNzT3duUHRyPENvbXBhY3RKSVRD
b2RlTWFwPiBqaXRDb2RlTWFwKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2ppdENvZGVNYXAg
PSBqaXRDb2RlTWFwOwpAQCAtMjM2LDcgKzIzMCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gbV9qaXRDb2RlTWFwLmdldCgpOwogICAgICAgICB9Cisj
ZW5kaWYKICAgICAgICAgCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHZvaWQgY3JlYXRl
REZHRGF0YUlmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCEhbV9kZmdE
YXRhKQpAQCAtMzM1LDEyICszMzEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICNl
bmRpZgogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldChJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKHJldHVybkFkZHJlc3MgPj0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSAmJiByZXR1
cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zKCkuZW5kKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5i
ZWdpbigpOwogICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgICB2b2lkIHNldElzTnVtZXJpY0Nv
bXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVtZXJp
Y0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgICAgICBi
b29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbigpIHsgcmV0dXJuIG1faXNOdW1lcmljQ29tcGFy
ZUZ1bmN0aW9uOyB9CkBAIC0zNTYsMTUgKzM1MSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgfQogICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCkK
ICAgICAgICAgeworI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKSAmJiAhRU5BQkxFKExMSU5U
KQorICAgICAgICAgICAgaWYgKEJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAoISFhbHRlcm5hdGl2
ZSgpKQogICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZSgpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZUxhdGVyKCk7CisjZW5kaWYKICAgICAg
ICAgfQogICAgICAgICAKLSNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGJvb2wgdXNlc09wY29kZShP
cGNvZGVJRCk7Ci0jZW5kaWYKIAogICAgICAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50KCkg
eyByZXR1cm4gbV9pbnN0cnVjdGlvbkNvdW50OyB9CiAgICAgICAgIHZvaWQgc2V0SW5zdHJ1Y3Rp
b25Db3VudCh1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50KSB7IG1faW5zdHJ1Y3Rpb25Db3VudCA9
IGluc3RydWN0aW9uQ291bnQ7IH0KQEAgLTM4NywxNyArMzg0LDE4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgeyBy
ZXR1cm4gZ2V0SklUQ29kZSgpLmdldEV4ZWN1dGFibGVNZW1vcnkoKTsgfQogICAgICAgICB2aXJ0
dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2Rl
KikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKSA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBqaXRDb21waWxlKEV4ZWNTdGF0ZSopID0gMDsKICAgICAgICAgdmlydHVhbCBD
b2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29t
cGlsZVdpdGhERkcoKSA9IDA7CiAgICAgICAgIGJvb2wgaGFzT3B0aW1pemVkUmVwbGFjZW1lbnQo
KQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6
OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29k
ZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcmVwbGFjZW1lbnQo
KS0+Z2V0SklUVHlwZSgpID4gZ2V0SklUVHlwZSgpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAg
ICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50
KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwogICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBK
SVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6Omlz
QmFzZWxpbmVDb2RlKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAg
ICAgIEFTU0VSVChyZXBsYWNlbWVudCgpID09IHRoaXMpOwogICAgICAgICAgICAgfQogI2VuZGlm
CkBAIC00NTYsMTggKzQ1NCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGNs
ZWFyRXZhbENhY2hlKCk7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIHZvaWQg
YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbih1bnNpZ25lZCBwcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNl
SklUKCkpCi0gICAgICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5hcHBl
bmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBtX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKTsKICAgICAg
ICAgfQogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbih1bnNpZ25lZCBn
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9n
bG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik7CisgICAgICAgICAg
ICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbik7CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rp
b25BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBhZGRMTEludENhbGxMaW5rSW5mbygp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zLmFwcGVuZChMTElu
dENhbGxMaW5rSW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiAmbV9sbGludENhbGxMaW5rSW5m
b3MubGFzdCgpOworICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2
b2lkIHNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKHNpemVfdCBzaXplKSB7IG1fc3RydWN0
dXJlU3R1YkluZm9zLmdyb3coc2l6ZSk7IH0KQEAgLTQ3Niw4ICs0NzcsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbmZvKHVuc2lnbmVkIGdsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fZ2xvYmFs
RGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3Mu
YXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOworICAg
ICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGds
b2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOwogICAgICAgICB9CiAgICAgICAgIEdsb2JhbFJlc29s
dmVJbmZvJiBnbG9iYWxSZXNvbHZlSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJuIG1fZ2xvYmFsUmVz
b2x2ZUluZm9zW2luZGV4XTsgfQogICAgICAgICBib29sIGhhc0dsb2JhbFJlc29sdmVJbmZvQXRC
eXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CkBAIC02NzIsNyArNjcyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGFkZEZyZXF1ZW50RXhp
dFNpdGUoY29uc3QgREZHOjpGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAg
ICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsK
ICAgICAgICAgICAgIHJldHVybiBtX2V4aXRQcm9maWxlLmFkZChzaXRlKTsKICAgICAgICAgfQog
CkBAIC03NzcsNiArNzc3LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGNvcHlQ
b3N0UGFyc2VEYXRhRnJvbShDb2RlQmxvY2sqIGFsdGVybmF0aXZlKTsKICAgICAgICAgdm9pZCBj
b3B5UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgICAgICAKKyAgICAgICAgLy8g
RnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIEpJVHRpbmcga2lja3MgaW4sIGluIGEgbWl4
ZWQgbW9kZQorICAgICAgICAvLyBleGVjdXRpb24gd29ybGQuCisgICAgICAgIAorICAgICAgICB2
b2lkIGRvbnRKSVRBbnl0aW1lU29vbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRF
eGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRB
bnl0aW1lU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRBZnRlcldh
cm1VcCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9w
dGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB2b2lkIGppdFNvb24oKQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVG
b3JKSVRTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQzMl90IGxsaW50RXhl
Y3V0ZUNvdW50ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9sbGlu
dEV4ZWN1dGVDb3VudGVyOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICAvLyBGdW5jdGlv
bnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gdGllcmVkIGNvbXBpbGF0aW9uIGtpY2tzIGluLiBUaGlz
CiAgICAgICAgIC8vIGNvbnRyb2xzIGJvdGggd2hlbiB0aGUgb3B0aW1pemluZyBjb21waWxlciBp
cyBpbnZva2VkIGFuZCB3aGVuIE9TUgogICAgICAgICAvLyBlbnRyeSBoYXBwZW5zLiBUd28gdHJp
Z2dlcnMgZXhpc3Q6IHRoZSBsb29wIHRyaWdnZXIgYW5kIHRoZSByZXR1cm4KQEAgLTk4MSw3ICsx
MDA0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgdGFsbHlGcmVxdWVudEV4aXRT
aXRlcygpIHsgfQogI2VuZGlmCiAgICAgICAgIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5B
QkxFKE9QQ09ERV9TQU1QTElORykKICAgICAgICAgdm9pZCBkdW1wKEV4ZWNTdGF0ZSosIGNvbnN0
IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiBiZWdpbiwgVmVjdG9yPEluc3Ry
dWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImKSBjb25zdDsKIAogICAgICAgICBDU3RyaW5nIHJlZ2lz
dGVyTmFtZShFeGVjU3RhdGUqLCBpbnQgcikgY29uc3Q7CkBAIC05OTEsNyArMTAxMyw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZSosIGlu
dCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBj
aGFyKiBvcCkgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRDYWxsT3AoRXhlY1N0YXRlKiwgaW50
IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNo
YXIqIG9wKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFB1dEJ5SWRPcChFeGVjU3RhdGUqLCBp
bnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3Qg
Y2hhciogb3ApIGNvbnN0OwotI2VuZGlmCiAgICAgICAgIHZvaWQgdmlzaXRTdHJ1Y3R1cmVzKFNs
b3RWaXNpdG9yJiwgSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3Q7CiAgICAgICAgIAogI2lmIEVOQUJM
RShERkdfSklUKQpAQCAtMTA1Miw5ICsxMDczLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IG1fc291cmNlOwogICAgICAgICB1bnNpZ25lZCBtX3Nv
dXJjZU9mZnNldDsKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgVmVjdG9yPHVu
c2lnbmVkPiBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zOwogICAgICAgICBWZWN0b3I8dW5z
aWduZWQ+IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uczsKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgICAgIFNlZ21lbnRlZFZlY3RvcjxMTEludENhbGxMaW5rSW5mbywgOD4gbV9sbGludENhbGxM
aW5rSW5mb3M7CisgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxMTEludENhbGxMaW5rSW5mbywg
QmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0xMSW50
Q2FsbHM7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBWZWN0b3I8U3RydWN0dXJl
U3R1YkluZm8+IG1fc3RydWN0dXJlU3R1YkluZm9zOwpAQCAtMTA2NSw5ICsxMDg4LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlV2l0
aEFyaXR5Q2hlY2s7CiAgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxDYWxsTGlua0luZm8sIEJh
c2ljUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5nQ2FsbHM7CiAjZW5k
aWYKLSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExM
SU5UKQogICAgICAgICBPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IG1faml0Q29kZU1hcDsKLSAg
ICAgICAgCisjZW5kaWYKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgc3RydWN0IFdlYWtS
ZWZlcmVuY2VUcmFuc2l0aW9uIHsKICAgICAgICAgICAgIFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9u
KCkgeyB9CiAgICAgICAgICAgICAKQEAgLTExMzAsMTIgKzExNTQsMTQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgT3duUHRyPENvZGVCbG9jaz4gbV9hbHRlcm5hdGl2ZTsKICAgICAgICAg
CisgICAgICAgIGludDMyX3QgbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICAKICAgICAg
ICAgaW50MzJfdCBtX2ppdEV4ZWN1dGVDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1
bGF0aXZlU3VjY2Vzc0NvdW50ZXI7CiAgICAgICAgIHVpbnQzMl90IG1fc3BlY3VsYXRpdmVGYWls
Q291bnRlcjsKICAgICAgICAgdWludDhfdCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcjsKICAg
ICAgICAgdWludDhfdCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwotCisgICAgICAgIAog
ICAgICAgICBzdHJ1Y3QgUmFyZURhdGEgewogICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICAgICAgcHVibGljOgpAQCAtMTIwOCw2ICsxMjM0LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0
aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZShFeGVjU3RhdGUq
KTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC0xMjQyLDYgKzEyNjks
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNP
YmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRD
b21waWxlKEV4ZWNTdGF0ZSopOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1l
bnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYK
QEAgLTEyNzksNiArMTMwNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29w
ZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGppdENvbXBpbGUoRXhlY1N0YXRlKik7CiAgICAgICAgIHZpcnR1YWwgQ29k
ZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdp
dGhERkcoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RydWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luc3RydWN0aW9uLmgJKHJldmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTQ2VsbDsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7
CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CisgICAgc3RydWN0IExMSW50Q2FsbExpbmtJbmZv
OwogCiAjaWYgRU5BQkxFKEpJVCkKICAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBQ
b2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5cGU7CkBAIC0xNDUsNiAr
MTQ2LDExIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rp
b24geworICAgICAgICBJbnN0cnVjdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuanND
ZWxsLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIEluc3RydWN0aW9uKE9w
Y29kZSBvcGNvZGUpCiAgICAgICAgIHsKICNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQ
UkVURVIpCkBAIC0xODAsNiArMTg2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAog
ICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5j
KSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7IH0KKyAgICAgICAgCisgICAgICAgIEluc3Ry
dWN0aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pIHsgdS5jYWxsTGlua0luZm8g
PSBjYWxsTGlua0luZm87IH0KIAogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBPcGNvZGUg
b3Bjb2RlOwpAQCAtMTg4LDYgKzE5Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
V3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3RydWN0dXJlQ2hhaW47CiAgICAgICAg
ICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxsOwogICAgICAgICAgICAgUHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKKyAgICAgICAgICAgIExMSW50Q2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm87CisgICAgICAgICAgICB2b2lkKiBwb2ludGVyOwogICAgICAg
ICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDYWxsTGlua0luZm9faAorI2RlZmluZSBMTElu
dENhbGxMaW5rSW5mb19oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOworCitzdHJ1Y3QgTExJ
bnRDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlu
a0luZm8+IHsKKyAgICBMTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgIH0KKyAgICAKKyAg
ICB+TExJbnRDYWxsTGlua0luZm8oKQorICAgIHsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisg
ICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0xpbmtlZCgpIHsg
cmV0dXJuIGNhbGxlZTsgfQorICAgIAorICAgIHZvaWQgdW5saW5rKCkKKyAgICB7CisgICAgICAg
IGNhbGxlZS5jbGVhcigpOworICAgICAgICBtYWNoaW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1i
bGVyQ29kZVB0cigpOworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92
ZSgpOworICAgIH0KKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOwor
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWNoaW5lQ29kZVRhcmdldDsKK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gTExJbnRDYWxsTGlua0luZm9faAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMDUzMDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyMyw2ICsxMjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfZ2V0
X2FyZ3VtZW50c19sZW5ndGgsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkLCA5KSBc
CiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uLCA5KSBcCisgICAgICAgIG1h
Y3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwgOSkgXAorICAgICAgICBtYWNybyhv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0
X2J5X2lkX3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX2dlbmVyaWMs
IDkpIFwKICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBcCkBAIC0yMDIsNiArMjA0LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgZW51bSB7IEZPUl9FQUNIX09QQ09E
RV9JRChPUENPREVfSURfRU5VTSkgfSBPcGNvZGVJRDsKICAgICAjdW5kZWYgT1BDT0RFX0lEX0VO
VU0KIAorICAgIGNvbnN0IGludCBtYXhPcGNvZGVMZW5ndGggPSA5OwogICAgIGNvbnN0IGludCBu
dW1PcGNvZGVJRHMgPSBvcF9lbmQgKyAxOwogCiAgICAgI2RlZmluZSBPUENPREVfSURfTEVOR1RI
UyhpZCwgbGVuZ3RoKSBjb25zdCBpbnQgaWQjI19sZW5ndGggPSBsZW5ndGg7CkBAIC0yMTgsNyAr
MjIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9JRChWRVJJ
RllfT1BDT0RFX0lEKTsKICAgICAjdW5kZWYgVkVSSUZZX09QQ09ERV9JRAogCi0jaWYgRU5BQkxF
KENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICNpZiBDT01QSUxFUihSVkNUKSB8fCBDT01QSUxF
UihJTlRFTCkKICAgICB0eXBlZGVmIHZvaWQqIE9wY29kZTsKICNlbHNlCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkxvd0xl
dmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSAiU3Ry
b25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKQEAgLTExNiwyNiArMTE3LDE2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGV4cGVjdGVkIGJ5IHRoZSBjYWxsZWUuCiAqLwogCi0jaWZu
ZGVmIE5ERUJVRwogc3RhdGljIGJvb2wgc19kdW1wc0dlbmVyYXRlZENvZGUgPSBmYWxzZTsKLSNl
bmRpZgogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUoYm9v
bCBkdW1wc0dlbmVyYXRlZENvZGUpCiB7Ci0jaWZuZGVmIE5ERUJVRwogICAgIHNfZHVtcHNHZW5l
cmF0ZWRDb2RlID0gZHVtcHNHZW5lcmF0ZWRDb2RlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
ZHVtcHNHZW5lcmF0ZWRDb2RlKTsKLSNlbmRpZgogfQogCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9y
OjpkdW1wc0dlbmVyYXRlZENvZGUoKQogewotI2lmbmRlZiBOREVCVUcKICAgICByZXR1cm4gc19k
dW1wc0dlbmVyYXRlZENvZGU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQog
CiBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKQEAgLTE0OCwxMCArMTM5
LDggQEAgSlNPYmplY3QqIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAKICAgICBtX2Nv
ZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25Db3VudChtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpKTsKIAotI2lmbmRlZiBOREVCVUcKICAgICBpZiAoc19kdW1wc0dlbmVyYXRlZENvZGUp
CiAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCkpOwotI2VuZGlmCiAKICAgICBpZiAoKG1fY29kZVR5cGUgPT0gRnVuY3Rpb25D
b2RlICYmICFtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpICYmICFtX2NvZGVCbG9j
ay0+dXNlc0FyZ3VtZW50cygpKSB8fCBtX2NvZGVUeXBlID09IEV2YWxDb2RlKQogICAgICAgICBz
eW1ib2xUYWJsZSgpLmNsZWFyKCk7CkBAIC0xMjY0LDkgKzEyNTMsNyBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgbV9j
b2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAj
ZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRH
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgog
ICAgICAgICBlbWl0T3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRk
Q29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE0MTksOSArMTQwNiw3IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgIG1fY29kZUJs
b2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlm
Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNv
bHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIGVtaXRP
cGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6
IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+
aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5
KSk7CkBAIC0xNDY2LDkgKzE0NTEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVz
b2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRF
UlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGlu
c3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBlbWl0T3Bjb2RlKHJlcXVpcmVzRHlu
YW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2Jh
bCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ4Niw5ICsx
NDY5LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1ldGhvZENoZWNrKAogCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSNpZiBFTkFC
TEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1pdE9wY29kZShv
cF9nZXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwpA
QCAtMTUxMyw5ICsxNDk0LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRBcgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQoUmVnaXN0
ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVl
KQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAg
ICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJh
c2UtPmluZGV4KCkpOwpAQCAtMTUzMSw5ICsxNTEwLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQdXRCeQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBt
X2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5z
aXplKCkpOwotI2VuZGlmCiAgICAgCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE4MjEsNyArMTc5OCwx
MSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoCiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7IC8v
IGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0
ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0luZm8oKSk7
CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewog
ICAgICAgICBlbWl0T3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0xOTIzLDcgKzE5MDQs
MTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdAogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAv
LyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lz
dGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkp
OworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsK
ICAgICAgICAgZW1pdE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMjE4Myw3ICsyMTY4
LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gKIHsKICAgICBt
X3VzZXNFeGNlcHRpb25zID0gdHJ1ZTsKICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShMTElO
VCkKKyAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5k
KDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jh
c2VTY29wZURlcHRoLCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF9vcF9jYXRjaCkpIH07CisjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5i
aW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5h
bWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKCkgfTsK
KyNlbmRpZgogI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAw
KSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3Bl
RGVwdGggKyBtX2Jhc2VTY29wZURlcHRoIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMDUzMDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTg0Niw3ICsxODQ2LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X2lkKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CisgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAg
ICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9
IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5oCShyZXZpc2lvbiAxMDUzMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDggQEAgaW5s
aW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNhc2Ugb3BfcHV0X3Nj
b3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6
CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoK
ICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxMDUz
MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUgIkRGR1JlcGF0Y2guaCIKKyNpbmNsdWRlICJI
b3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVk
ZSAiSW5saW5lQVNNLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTU2NCw0NSArNTY1
LDYgQEAgc2l6ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cgogICAgIHJldHVy
biBKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSks
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIERGR19P
UEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOwotRW5jb2RlZEpTVmFsdWUgREZHX09Q
RVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqKTsK
LQotI2lmIENQVShYODZfNjQpCi1hc20gKAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiOiIgIlxuIgotICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCi0gICAgIm1vdiAlcjEz
LCAlcmRpXG4iCi0gICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQVShYODYpCi1hc20g
KAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgot
U1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJtb3Yg
LTQwKCVlZGkpLCAlZWRpXG4iCi0gICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCi0gICAgImptcCAi
IFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNT
dGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKQotYXNtICgKLSIudGV4dCIgIlxu
IgotIi5hbGlnbiAyIiAiXG4iCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4i
Ci0iLnRodW1iIiAiXG4iCi0iLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIjoiICJcbiIKLSAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCi0gICAgImNweSByMCwg
cjUiICJcbiIKLSAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbmRpZgotCi1FbmNvZGVkSlNWYWx1
ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNT
dGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERh
dGEoKS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKLX0KLQogc3RhdGljIHZvaWQqIGhhbmRsZUhvc3RD
YWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxs
ZXJGcmFtZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNw
YWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlv
blNwYWNlLmgJKHJldmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0FsbG9jYXRpb25TcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogY2xhc3MgSGVhcDsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IGNsYXNzIE1hcmtlZEJsb2NrOwogCiBjbGFzcyBBbGxvY2F0aW9uU3BhY2UgewpAQCAtNjgsNiAr
NjksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaHJpbmsoKTsKICAgICAKIHByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICBlbnVtIEFsbG9j
YXRpb25FZmZvcnQgeyBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQsIEFsbG9jYXRpb25DYW5GYWlsIH07
CiAgICAgCiAgICAgdm9pZCogYWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDEwNTMwOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Mjks
NyArODI5LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZwogICAg
ICAgICBtX29iamVjdFNwYWNlLnNldEhpZ2hXYXRlck1hcmsobWF4KHByb3BvcnRpb25hbEJ5dGVz
LCBtX21pbkJ5dGVzUGVyQ3ljbGUpKTsKICAgICB9CiAgICAgSkFWQVNDUklQVENPUkVfR0NfRU5E
KCk7Ci0KKyAgICAKICAgICAoKm1fYWN0aXZpdHlDYWxsYmFjaykoKTsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBKU1ZhbHVl
OwogICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXI7CiAgICAgY2xhc3MgUmVn
aXN0ZXJGaWxlOwogICAgIGNsYXNzIFVTdHJpbmc7CkBAIC0xMjksMTAgKzEzMCwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhh
c2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBj
bGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNzIEFsbG9jYXRpb25TcGFjZTsK
LSAgICAgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwogICAgICAgICBmcmllbmQgY2xhc3Mg
Q29kZUJsb2NrOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBT
bG90VmlzaXRvcjsKIAogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbkV4dHJhQ29zdCA9
IDI1NjsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhFeHRyYUNvc3QgPSAxMDI0ICog
MTAyNDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkocmV2
aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDcgKzMwMSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbigKICNlbmRpZgogCiAgICAgQVNTRVJUKEhlYXA6OmlzTWFya2Vk
KGNlbGwpKTsKLQorICAgIAogICAgIGlmIChpc0pTU3RyaW5nKGNlbGwpKSB7CiAgICAgICAgIEpT
U3RyaW5nOjp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0b3Ip
OwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlLmgJKHJldmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiBjbGFzcyBIZWFwOwogY2xhc3MgSlNDZWxsOwogY2xhc3MgTGl2ZU9iamVjdEl0ZXJh
dG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgV2Vha0dDSGFuZGxlOwog
Y2xhc3MgU2xvdFZpc2l0b3I7CiAKQEAgLTc5LDYgKzgwLDggQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFj
aEJsb2NrKCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKyAgICAKICAgICAvLyBbIDMyLi4uIDI1NiBdCiAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBwcmVjaXNlU3RlcCA9IE1hcmtlZEJsb2NrOjphdG9tU2l6ZTsKICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IHByZWNpc2VDdXRvZmYgPSAyNTY7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAxMDUzMDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExOSw2ICsxMTksOSBAQCBuYW1lc3BhY2UgSlNDICB7CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVS
KQogICAgICAgICBJbnN0cnVjdGlvbiogcmV0dXJuVlBDKCkgY29uc3QgeyByZXR1cm4gdGhpc1tS
ZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKTsgfQogI2VuZGlmCisjaWYgRU5BQkxFKExMSU5U
KQorICAgICAgICBJbnN0cnVjdGlvbiogY3VycmVudFZQQygpIGNvbnN0IHsgcmV0dXJuIGJpdHdp
c2VfY2FzdDxJbnN0cnVjdGlvbio+KHRoaXNbUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50XS50
YWcoKSk7IH0KKyNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1l
KiBjYWxsZXJGcmFtZSkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmls
ZTo6Q2FsbGVyRnJhbWVdID0gY2FsbGVyRnJhbWU7IH0KICAgICAgICAgdm9pZCBzZXRTY29wZUNo
YWluKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4o
dGhpcylbUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluXSA9IHNjb3BlQ2hhaW47IH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAko
cmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQAogI2luY2x1ZGUg
IkpJVC5oIgogI2VuZGlmCiAKLSNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JL
QVJPVU5EIChFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgJiYgIWRlZmluZWQoX19s
bHZtX18pKQorI2RlZmluZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQgKChF
TkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkgJiYgIWRl
ZmluZWQoX19sbHZtX18pKQogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC01NDcsMTcgKzU0
Nyw0MSBAQCBJbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIoKQogewogfQogCi12b2lkIEludGVycHJl
dGVyOjppbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKQorSW50ZXJwcmV0ZXI6On5JbnRlcnByZXRl
cigpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxF
KExMSU5UKQorICAgIGlmIChtX2VuYWJsZWQpCisgICAgICAgIGRlbGV0ZVtdIG1fb3Bjb2RlVGFi
bGU7CisjZW5kaWYKK30KKwordm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShMTEludDo6RGF0
YSogbGxpbnREYXRhLCBib29sIGNhblVzZUpJVCkKK3sKKyNpZiBFTkFCTEUoQ09NUFVURURfR09U
T19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoQ09NUFVURURfR09U
T19JTlRFUlBSRVRFUikKKyAgICAvLyBIYXZpbmcgTExJbnQgZW5hYmxlZCwgYnV0IG5vdCBiZWlu
ZyBhYmxlIHRvIHVzZSB0aGUgSklULCBhbmQgbm90IGhhdmluZworICAgIC8vIGEgY29tcHV0ZWQg
Z290byBpbnRlcnByZXRlciwgaXMgbm90IHN1cHBvcnRlZC4gTm90IGJlY2F1c2Ugd2UgY2Fubm90
CisgICAgLy8gc3VwcG9ydCBpdCwgYnV0IGJlY2F1c2UgSSBkZWNpZGVkIHRvIGRyYXcgdGhlIGxp
bmUgYXQgdGhlIG51bWJlciBvZgorICAgIC8vIHBlcm11dGF0aW9ucyBvZiBleGVjdXRpb24gZW5n
aW5lcyB0aGF0IEkgd2FudGVkIHRoaXMgY29kZSB0byBncm9rLgorICAgIEFTU0VSVChjYW5Vc2VK
SVQpOworI2VuZGlmCiAgICAgaWYgKGNhblVzZUpJVCkgeworI2lmIEVOQUJMRShMTElOVCkKKyAg
ICAgICAgbV9vcGNvZGVUYWJsZSA9IGxsaW50RGF0YS0+b3Bjb2RlTWFwKCk7CisgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpCisgICAgICAgICAgICBtX29wY29k
ZUlEVGFibGUuYWRkKG1fb3Bjb2RlVGFibGVbaV0sIHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7
CisjZWxzZQogICAgICAgICAvLyBJZiB0aGUgSklUIGlzIHByZXNlbnQsIGRvbid0IHVzZSBqdW1w
IGRlc3RpbmF0aW9ucyBmb3Igb3Bjb2Rlcy4KICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpIHsKICAgICAgICAgICAgIE9wY29kZSBvcGNvZGUg
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaSkpOwogICAgICAg
ICAgICAgbV9vcGNvZGVUYWJsZVtpXSA9IG9wY29kZTsKICAgICAgICAgfQorI2VuZGlmCiAgICAg
fSBlbHNlIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bjb2RlVGFibGUgPSBuZXcg
T3Bjb2RlW251bU9wY29kZUlEc107CisjZW5kaWYKICAgICAgICAgcHJpdmF0ZUV4ZWN1dGUoSW5p
dGlhbGl6ZUFuZFJldHVybiwgMCwgMCk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IG51bU9wY29kZUlEczsgKytpKQpAQCAtNjY3LDkgKzY5MSwxMSBAQCB2b2lkIEludGVy
cHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtCiAKIGJvb2wgSW50ZXJwcmV0ZXI6OmlzT3Bj
b2RlKE9wY29kZSBvcGNvZGUpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVU
RVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElO
VCkKKyNpZiAhRU5BQkxFKExMSU5UKQogICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1
cm4gb3Bjb2RlID49IDAgJiYgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KG9wY29kZSkpIDw9IG9wX2VuZDsKKyNlbmRpZgogICAgIHJldHVybiBvcGNvZGUgIT0g
SGFzaFRyYWl0czxPcGNvZGU+OjplbXB0eVZhbHVlKCkKICAgICAgICAgJiYgIUhhc2hUcmFpdHM8
T3Bjb2RlPjo6aXNEZWxldGVkVmFsdWUob3Bjb2RlKQogICAgICAgICAmJiBtX29wY29kZUlEVGFi
bGUuY29udGFpbnMob3Bjb2RlKTsKQEAgLTcyNiwxMSArNzUyLDExIEBAIE5FVkVSX0lOTElORSBi
b29sIEludGVycHJldGVyOjp1bndpbmRDYWwKICAgICAvLyBoYXZlIHRvIHN1YnRyYWN0IDEuCiAj
aWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIGlmIChjYWxsZXJGcmFt
ZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQotICAgICAgICBieXRlY29kZU9mZnNldCA9IGNv
ZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAg
Ynl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBj
YWxsRnJhbWUtPnJldHVyblBDKCkpOwogICAgIGVsc2UKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQg
PSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsK
ICNlbGlmIEVOQUJMRShKSVQpCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBj
b2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBD
KCkpOwogI2Vsc2UKICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZz
ZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAxOwogI2VuZGlmCkBAIC01MTcwLDEwICs1MTk2
LDEwIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcihDYWwKICAgICAgICAg
Ynl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFt
ZS0+cmV0dXJuVlBDKCkpOwogI2lmIEVOQUJMRShKSVQpCiAgICAgZWxzZQotICAgICAgICBieXRl
Y29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5y
ZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5
dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2VuZGlm
CiAjZWxzZQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9m
ZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVy
Q29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5Q
QygpKTsKICNlbmRpZgogICAgIGxpbmVOdW1iZXIgPSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1i
ZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCAtIDEpOwogICAgIHNvdXJjZUlEID0g
Y2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZp
c2lvbiAxMDUzMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ2Vs
bC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1
ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVy
RmlsZS5oIgogCkBAIC00NSw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1
bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xv
YmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQ
cm9ncmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNo
YWluTm9kZTsKQEAgLTkwLDE5ICs5MiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEludGVycHJldGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOwogICAgIHB1YmxpYzoKICAgICAgICAgSW50ZXJwcmV0ZXIoKTsKKyAgICAgICAg
fkludGVycHJldGVyKCk7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBj
YW5Vc2VKSVQpOworICAgICAgICB2b2lkIGluaXRpYWxpemUoTExJbnQ6OkRhdGEqLCBib29sIGNh
blVzZUpJVCk7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKSB7IHJldHVy
biBtX3JlZ2lzdGVyRmlsZTsgfQogICAgICAgICAKICAgICAgICAgT3Bjb2RlIGdldE9wY29kZShP
cGNvZGVJRCBpZCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQp
OwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgICAgICByZXR1
cm4gbV9vcGNvZGVUYWJsZVtpZF07CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIGlkOwpAQCAt
MTEyLDcgKzExNiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bj
b2RlSUQoT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5p
dGlhbGl6ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVO
QUJMRShMTElOVCkKKyAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKKyAgICAg
ICAgICAgIHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CisjZWxpZiBFTkFCTEUo
Q09NUFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShv
cGNvZGUpKTsKICAgICAgICAgICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2Rl
KSk7CkBAIC0xMjIsNiArMTI5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIG9wY29kZTsKICNlbmRpZgogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGVu
YWJsZWQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9lbmFibGVkOworICAgICAg
ICB9CiAKICAgICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCkBAIC0xODksNyArMjAxLDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSBtX3JlZ2lzdGVyRmls
ZTsKICAgICAgICAgCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYg
RU5BQkxFKExMSU5UKQorICAgICAgICBPcGNvZGUqIG1fb3Bjb2RlVGFibGU7IC8vIE1hcHMgT3Bj
b2RlSUQgPT4gT3Bjb2RlIGZvciBjb21waWxpbmcKKyAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9w
Y29kZUlEPiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBk
ZWNvbXBpbGluZworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAg
ICAgIE9wY29kZSBtX29wY29kZVRhYmxlW251bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQg
PT4gT3Bjb2RlIGZvciBjb21waWxpbmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlE
PiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBp
bGluZwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVn
aXN0ZXJGaWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oCShyZXZpc2lvbiAxMDUzMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYg
KzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsK
ICAgICBjbGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIAogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFJlZ2lzdGVyRmlsZSk7CkBAIC04MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIq
KTsKICAgICAgICAgdm9pZCByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9pZCBh
ZGRUb0NvbW1pdHRlZEJ5dGVDb3VudChsb25nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJu
VmFsdWUuaCIKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIklubGluZUFTTS5o
IgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNWYWx1ZUlubGluZU1ldGhvZHMu
aCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitleHRlcm4g
IkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUoKTsKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JF
VFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhl
Y1N0YXRlKik7CisKKyNpZiBDUFUoWDg2XzY0KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RS
SU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgorICAg
ICJtb3YgJXIxMywgJXJkaVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04o
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUo
WDg2KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIK
KyAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgorICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgor
ICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKK2FzbSAoCisi
LnRleHQiICJcbiIKKyIuYWxpZ24gMiIgIlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIlxuIgorIi50aHVtYiIgIlxuIgorIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJB
TShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgorICAg
ICJjcHkgcjAsIHI1IiAiXG4iCisgICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZW5kaWYKKworZXh0
ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRI
b3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1cm5W
YWx1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorI2RlZmluZSBIb3N0Q2FsbFJl
dHVyblZhbHVlX2gKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENBTExJTkdf
Q09OVkVOVElPTl9JU19TVERDQUxMCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BU
SU9OIENERUNMCisjZWxzZQorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTgor
I2VuZGlmCisKK25hbWVzcGFjZSBKU0MgeworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NU
X0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Cit9CisK
KyNlbmRpZiAvLyBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDggQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmlsZV93aWxs
X2NhbGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX25ld19zY29wZSkKICAgICAgICAgREVG
SU5FX09QKG9wX3B1c2hfc2NvcGUpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1
dF9ieV9pbmRleCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCkBAIC00ODcsNiAr
NDg5LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX3Bvc3RfaW5jKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfcHJlX2RlYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9pbmMpCisgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2dsb2JhbCkKQEAgLTUyNiw2
ICs1MzAsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiBKSVRDb2Rl
IEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2spCiB7
CisgICAgcHJpbnRmKCJDb21waWxpbmcgSklUIGNvZGUhXG4iKTsKKyAgICAKICNpZiBFTkFCTEUo
VkFMVUVfUFJPRklMRVIpCiAgICAgbV9jYW5CZU9wdGltaXplZCA9IG1fY29kZUJsb2NrLT5jYW5D
b21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC02OTAsNyArNjk2LDcgQEAgSklUQ29kZSBKSVQ6
OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgogICAgICAgICBpbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbiA9IG1fY29kZUJsb2NrLT5zdHJ1Y3R1cmVTdHViSW5mbyhtX21ldGhvZENhbGxDb21waWxh
dGlvbkluZm9baV0ucHJvcGVydHlBY2Nlc3NJbmRleCkuY2FsbFJldHVybkxvY2F0aW9uOwogICAg
IH0KIAotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUo
TExJTlQpCiAgICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQpIHsKICAgICAgICAgQ29tcGFjdEpJVENv
ZGVNYXA6OkVuY29kZXIgaml0Q29kZU1hcEVuY29kZXI7CiAgICAgICAgIGZvciAodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IG1fbGFiZWxzLnNpemUoKTsgKyti
eXRlY29kZU9mZnNldCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJl
dmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBK
SVRDb2RlKCkgeyB9CiAjZW5kaWYKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gSklUVHlwZSB7
IEhvc3RDYWxsVGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsKKyAgICAgICAgZW51bSBKSVRU
eXBlIHsgTm9uZSwgSG9zdENhbGxUaHVuaywgSW50ZXJwcmV0ZXJUaHVuaywgQmFzZWxpbmVKSVQs
IERGR0pJVCB9OwogICAgICAgICAKICAgICAgICAgc3RhdGljIEpJVFR5cGUgYm90dG9tVGllckpJ
VCgpCiAgICAgICAgIHsKQEAgLTY2LDggKzY2LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmV0dXJuIERGR0pJVDsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGlj
IGJvb2wgaXNPcHRpbWl6aW5nSklUKEpJVFR5cGUgaml0VHlwZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGppdFR5cGUgPT0gREZHSklUOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBzdGF0aWMgYm9vbCBpc0Jhc2VsaW5lQ29kZShKSVRUeXBlIGppdFR5cGUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IEludGVycHJldGVyVGh1bmsgfHwgaml0
VHlwZSA9PSBCYXNlbGluZUpJVDsKKyAgICAgICAgfQorICAgICAgICAKICNpZiBFTkFCTEUoSklU
KQogICAgICAgICBKSVRDb2RlKCkKKyAgICAgICAgICAgIDogbV9qaXRUeXBlKE5vbmUpCiAgICAg
ICAgIHsKICAgICAgICAgfQogCkBAIC03NSw2ICs4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgOiBtX3JlZihyZWYpCiAgICAgICAgICAgICAsIG1faml0VHlwZShqaXRUeXBlKQog
ICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaml0VHlwZSAhPSBOb25lKTsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciAhKCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUg
KzMzLDIxIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdE
cml2ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgog
aW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoRXhlY1N0YXRlKiBleGVjLCBPd25Q
dHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6
SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklU
VHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWV4ZWMtPmdsb2Jh
bERhdGEoKS5jYW5Vc2VKSVQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisgICAgY29k
ZUJsb2NrLT51bmxpbmtJbmNvbWluZ0NhbGxzKCk7CisgICAgCiAgICAgYm9vbCBkZmdDb21waWxl
ZCA9IGZhbHNlOwogICAgIGlmIChqaXRUeXBlID09IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAg
ZGZnQ29tcGlsZWQgPSBERkc6OnRyeUNvbXBpbGUoZXhlYywgY29kZUJsb2NrLmdldCgpLCBqaXRD
b2RlKTsKQEAgLTU1LDEwICs2MSw3IEBAIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJp
YXRlKEV4ZWMKICAgICAgICAgfQogICAgICAgICBqaXRDb2RlID0gSklUOjpjb21waWxlKCZleGVj
LT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay5nZXQoKSk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BD
T0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVk
Q29kZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9y
dHVuaXR5KCk7Ci0jZW5kaWYKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGlu
Z09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cigpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY2LDEwICs2
OSwxNSBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShFeGVjCiAKIGlubGlu
ZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoRXhlY1N0YXRlKiBleGVjLCBP
d25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFyZWRTeW1ib2xU
YWJsZSomIHN5bWJvbFRhYmxlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CisgICAgaWYg
KGppdFR5cGUgPT0gY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIAogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEo
KTsKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAg
IGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpE
RkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlRnVuY3Rpb24oZXhl
YywgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwpAQCAt
ODQsMTEgKzkyLDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaQog
ICAgICAgICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNv
ZGVCbG9jay5nZXQoKSwgJmppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgfQotI2lmICFFTkFC
TEUoT1BDT0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2Vu
ZXJhdGVkQ29kZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGlu
Z09wcG9ydHVuaXR5KCk7Ci0jZW5kaWYKLSAgICAKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVj
b2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGpp
dENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJldmlz
aW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5l
cmljVGhyb3coSlNHbG9iYWxEYQogCiBFeGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9u
VmFsdWUsIFJldHVybkFkZHJlc3NQdHIgZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1cm4gZ2Vu
ZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAgICByZXR1
cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1bHRMb2Nh
dGlvbikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNw
cAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNzAsNDUgKzIxNzAsMTMgQEAgREVGSU5FX1NUVUJf
RlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlu
bGluZSBDYWxsRnJhbWUqIGFyaXR5Q2hlY2tGb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lz
dGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCi17Ci0g
ICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKTsK
LSAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgQ29kZUJsb2NrKiBu
ZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVG
b3Ioa2luZCk7Ci0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOwotCi0gICAgLy8gVGhpcyBlbnN1cmVzIGVu
b3VnaCBzcGFjZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1bWVudHMg
cGFzc2VkIGJ5IHRoZSBjYWxsZXIuCi0gICAgaWYgKCFyZWdpc3RlckZpbGUtPmdyb3coY2FsbEZy
YW1lLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29k
ZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
QVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpOwotCi0gICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1l
IGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVm
aW5lZC4KLSAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAt
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwotICAgIFJlZ2lzdGVyKiBzcmMgPSBjYWxsRnJh
bWUtPnJlZ2lzdGVycygpOwotICAgIFJlZ2lzdGVyKiBkc3QgPSBjYWxsRnJhbWUtPnJlZ2lzdGVy
cygpICsgZGVsdGE7Ci0KLSAgICBpbnQgaTsKLSAgICBpbnQgZW5kID0gLUNhbGxGcmFtZTo6b2Zm
c2V0Rm9yKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKLSAgICBmb3IgKGkgPSAtMTsgaSA+
PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0gc3JjW2ldOwotCi0gICAgZW5kIC09IGRlbHRh
OwotICAgIGZvciAoIDsgaSA+PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0ganNVbmRlZmlu
ZWQoKTsKLQotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUo
ZHN0KTsKLSAgICBBU1NFUlQoKHZvaWQqKW5ld0NhbGxGcmFtZSA8PSByZWdpc3RlckZpbGUtPmVu
ZCgpKTsKLSAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElP
Tih2b2lkKiwgb3BfY2FsbF9hcml0eUNoZWNrKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFN
RShzdGFja0ZyYW1lKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5j
YWxsRnJhbWU7CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3Io
Y2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOworICAgIENh
bGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNh
bGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDYWxsKTsKICAgICBpZiAo
IW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2
b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKQEAgLTIyMjEs
NyArMjE4OSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKIAog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAgICBD
YWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0Zy
YW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgQ2FsbEZyYW1lKiBuZXdD
YWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFj
a0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7CiAgICAgaWYgKCFuZXdDYWxs
RnJhbWUpCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0
YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVy
Zmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxMDUzMDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDggKzI2LDEwIEBACiAjaWZuZGVmIEpTSW50ZXJmYWNlSklUX2gKICNkZWZpbmUgSlNJ
bnRlcmZhY2VKSVRfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1
ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTU3RyaW5n
LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAj
aW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRDb21tb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDb21t
b25faAorI2RlZmluZSBMTEludENvbW1vbl9oCisKKyNkZWZpbmUgTExJTlRfRVhFQ1VUSU9OX1RS
QUNJTkcgMAorI2RlZmluZSBMTElOVF9IRUxQRVJfVFJBQ0lORyAwCisKKyNlbmRpZiAvLyBMTElu
dENvbW1vbl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkxMSW50RGF0YS5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSW5zdHJ1Y3Rp
b24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiT3Bjb2Rl
LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitEYXRhOjpEYXRhKCkK
KyAgICA6IG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKG5ldyBJbnN0cnVjdGlvblttYXhPcGNvZGVM
ZW5ndGggKyAxXSkKKyAgICAsIG1fb3Bjb2RlTWFwKG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXSkK
K3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heE9wY29kZUxlbmd0aCArIDE7ICsraSkKKyAg
ICAgICAgbV9leGNlcHRpb25JbnN0cnVjdGlvbnNbaV0udS5wb2ludGVyID0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSk7CisjZGVmaW5lIE9Q
Q09ERV9FTlRSWShvcGNvZGUsIGxlbmd0aCkgbV9vcGNvZGVNYXBbb3Bjb2RlXSA9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50XyMjb3Bjb2RlKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoT1BD
T0RFX0VOVFJZKTsKKyN1bmRlZiBPUENPREVfRU5UUlkKK30KKworRGF0YTo6fkRhdGEoKQorewor
ICAgIGRlbGV0ZVtdIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIGRlbGV0ZVtdIG1fb3Bj
b2RlTWFwOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludERhdGFfaAorI2RlZmluZSBMTEludERh
dGFfaAorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisK
K25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTElu
dCB7CisKKyNpZiBFTkFCTEUoTExJTlQpCitjbGFzcyBEYXRhIHsKK3B1YmxpYzoKKyAgICBEYXRh
KCk7CisgICAgfkRhdGEoKTsKKyAgICAKKyAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsK
KyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fb3Bjb2RlTWFwOworICAgIH0KK3ByaXZhdGU6CisgICAgSW5zdHJ1Y3Rpb24qIG1fZXhj
ZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIE9wY29kZSogbV9vcGNvZGVNYXA7Cit9OworI2Vsc2Ug
Ly8gRU5BQkxFKExMSU5UKQorCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWlzc2lu
Zy1ub3JldHVybiIKKyNlbmRpZgorCitjbGFzcyBEYXRhIHsKK3B1YmxpYzoKKyAgICBJbnN0cnVj
dGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9OworCisjaWYgQ09NUElMRVIo
Q0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKworI2VuZGlmIC8v
IEVOQUJMRShMTElOVCkKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAv
LyBMTEludERhdGFfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
bnRyeXBvaW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCisKKyNpbmNsdWRl
ICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiTExJbnRU
aHVua3MuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSklUQ29k
ZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0eUNoZWNrKQoreworICAgIGlm
ICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9y
Q2FsbCkgeworICAgICAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNy
b0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJv
bG9ndWUpKSkpOworICAgICAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0
cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
aykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKGtp
bmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0
RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYo
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpKSkpOworICAgICAgICBhcml0eUNoZWNrID0gTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZShn
bG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvciks
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgICAgICBhcml0eUNoZWNrID0gZ2xvYmFs
RGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvciku
Y29kZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0gQ29k
ZUZvckNvbnN0cnVjdCk7CisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElT
dHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspOworICAgIGFyaXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIo
ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKK30K
Kwordm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENv
ZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAg
ICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X2V2YWxfcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihl
dmFsRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQor
Cit2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklU
Q29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAg
ICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkpKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElT
dHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVu
ayk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgTExJbnRFbnRyeXBvaW50c19oCisjZGVmaW5lIExMSW50RW50
cnlwb2ludHNfaAorCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgRXZhbENvZGVCbG9jazsKK2NsYXNzIEpJVENvZGU7CitjbGFz
cyBKU0dsb2JhbERhdGE7CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI7CitjbGFzcyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY7CitjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOworCituYW1lc3BhY2Ug
TExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLCBKSVRDb2RlJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0
eUNoZWNrKTsKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYp
Owordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBKSVRDb2RlJik7CisK
K2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFdmFs
Q29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRFdmFsRW50cnlwb2ludChn
bG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworaW5saW5lIHZvaWQgZ2V0RW50cnlwb2ludChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFByb2dyYW1Db2RlQmxvY2sqLCBKSVRDb2RlJiBqaXRDb2Rl
KQoreworICAgIGdldFByb2dyYW1FbnRyeXBvaW50KGdsb2JhbERhdGEsIGppdENvZGUpOworfQor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50RW50cnlwb2lu
dHNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0
aW9ucy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIK
KyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1
ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUg
Ikxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTElu
dCB7CisKK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvdyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9I
RUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzLlxuIiwgZ2xv
YmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Ro
cm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgZXhlYy0+Y29kZUJs
b2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGV4ZWMsIGV4ZWMtPnJldHVyblBDKCkpKTsKK30KKworSW5z
dHJ1Y3Rpb24qIHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVj
KQoreworICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkubGxpbnREYXRhLmV4Y2VwdGlvbklu
c3RydWN0aW9ucygpOworfQorCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUq
IGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEg
PSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJp
bnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKHJldHVyblRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0
YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGds
b2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxv
Y2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJuIGdsb2JhbERh
dGEtPmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKwordm9pZCogY2FsbFRv
VGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJf
VFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChjYWxsVG9UaHJvdyku
XG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBn
ZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAt
IGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAKKyAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBv
bGluZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgTExJbnRFeGNlcHRpb25zX2gKKyNkZWZpbmUgTExJbnRFeGNl
cHRpb25zX2gKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNl
IExMSW50IHsKKworLy8gSnVzdCB0aHJvdyB0aGUgY3VycmVudGx5IGFjdGl2ZSBleGNlcHRpb24g
aW4gdGhlIGNvbnRleHQgb2YgdGhpcyBleGVjIHN0YXRlCisvLyBhbmQgc2V0IHVwIGFsbCBuZWNl
c3Nhcnkgc3RhdGUuCit2b2lkIGludGVycHJldGVyVGhyb3coRXhlY1N0YXRlKik7CisKKy8vIFRl
bGxzIHlvdSB3aGVyZSB0byBqdW1wIHRvIGlmIHlvdSB3YW50IHRvIHJldHVybi10by10aHJvdywg
YWZ0ZXIgeW91J3ZlIGFscmVhZHkKKy8vIHNldCB1cCBhbGwgaW5mb3JtYXRpb24gbmVlZGVkIHRv
IHRocm93IHRoZSBleGNlcHRpb24uCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvd0ZvclRocm93
bkV4Y2VwdGlvbihFeGVjU3RhdGUqKTsKKworLy8gU2F2ZXMgdGhlIGN1cnJlbnQgUEMgaW4gdGhl
IGdsb2JhbCBkYXRhIGZvciBzYWZlLWtlZXBpbmcsIGFuZCBnaXZlcyB5b3UgYSBQQworLy8gdGhh
dCB5b3UgY2FuIHRlbGwgdGhlIGludGVycHJldGVyIHRvIGdvIHRvLCB3aGljaCB3aGVuIGFkdmFu
Y2VkIGJldHdlZW4gMQorLy8gYW5kIDkgc2xvdHMgd2lsbCBnaXZlIHlvdSBhbiAiaW5zdHJ1Y3Rp
b24iIHRoYXQgdGhyZWFkcyB0byB0aGUgaW50ZXJwcmV0ZXIncworLy8gZXhjZXB0aW9uIGhhbmRs
ZXIuIE5vdGUgdGhhdCBpZiB5b3UgZ2l2ZSBpdCB0aGUgUEMgZm9yIGV4Y2VwdGlvbiBoYW5kbGlu
ZywKKy8vIGl0J3Mgc21hcnQgZW5vdWdoIHRvIGp1c3QgcmV0dXJuIHRoYXQgUEMgd2l0aG91dCBk
b2luZyBhbnl0aGluZyBlbHNlOyB0aGlzCisvLyBsZXRzIHlvdSB0aHJlYWQgZXhjZXB0aW9uIGhh
bmRsaW5nIHRocm91Z2ggY29tbW9uIGhlbHBlciBmdW5jdGlvbnMgdXNlZCBieQorLy8gb3RoZXIg
aGVscGVycy4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSosIEluc3RydWN0
aW9uKik7CisKKy8vIFVzZSB0aGlzIHdoZW4geW91J3JlIHRocm93aW5nIHRvIGEgY2FsbCB0aHVu
ay4KK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnRFeGNlcHRpb25zX2gKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTM0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTExJbnRIZWxwZXJzLmgiCisKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJD
YWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKKyNpbmNsdWRlICJIb3N0
Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJK
SVREcml2ZXIuaCIKKyNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKKyNpbmNsdWRlICJKU0J5dGVB
cnJheS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAi
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3Qu
aCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRl
ICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorI2luY2x1ZGUg
Ikxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCisjZGVmaW5lIExMSU5UX09QKGluZGV4KSAo
ZXhlYy0+dW5jaGVja2VkUihwY1tpbmRleF0udS5vcGVyYW5kKSkKKyNkZWZpbmUgTExJTlRfT1Bf
QyhpbmRleCkgKGV4ZWMtPnIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisKKyNkZWZpbmUgTExJTlRf
UkVUVVJOX1RXTyhmaXJzdCwgc2Vjb25kKSBkbyB7ICAgICAgIFwKKyAgICAgICAgdW5pb24geyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHN0cnVjdCB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB2b2lkKiBh
OyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB2b2lkKiBiOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gcGFpcjsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGludDY0X3QgaTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSBfX3J0X3U7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX19ydF91LnBhaXIuYSA9IGZpcnN0OyAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgX19ydF91LnBhaXIuYiA9IHNlY29uZDsgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fcnRfdS5pOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9FTkRfSU1QTCgp
IExMSU5UX1JFVFVSTl9UV08ocGMsIGV4ZWMpCisKKyNkZWZpbmUgTExJTlRfVEhST1coZXhjZXB0
aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNHbG9i
YWxEYXRhJiBfX3RfZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsgICAgICAgIFwKKyAg
ICAgICAgX190X2dsb2JhbERhdGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAg
ICAgICAgIFwKKyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKwor
I2RlZmluZSBMTElOVF9DSEVDS19FWENFUFRJT04oKSBkbyB7ICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIGlmIChVTkxJS0VMWShleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgeyAg
IFwKKyAgICAgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9FTkQoKSBkbyB7
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0JSQU5D
SChvcGNvZGUsIGNvbmRpdGlvbikgZG8geyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IGJvb2wgX19iX2NvbmRpdGlvbiA9IChjb25kaXRpb24pOyAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChfX2JfY29uZGl0aW9uKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwYyArPSBwY1tPUENPREVf
TEVOR1RIKG9wY29kZSkgLSAxXS51Lm9wZXJhbmQ7ICAgICAgICBcCisgICAgICAgIGVsc2UgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wY29kZSk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRf
UkVUVVJOKHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNWYWx1ZSBfX3Jf
cmV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfT1AoMSkgPSBfX3JfcmV0dXJu
VmFsdWU7ICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0VO
RF9JTVBMKGV4ZWMsIGNhbGxUYXJnZXQpIExMSU5UX1JFVFVSTl9UV08oKGNhbGxUYXJnZXQpLCAo
ZXhlYykpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgZXhjZXB0aW9uVG9U
aHJvdykgZG8geyAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2N0X2V4ZWMg
PSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5z
dHJ1Y3Rpb24qIF9fY3RfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBfX2N0X2dsb2JhbERhdGEgPSAoX19jdF9leGVj
KS0+Z2xvYmFsRGF0YSgpOyAgICAgIFwKKyAgICAgICAgX19jdF9nbG9iYWxEYXRhLmV4Y2VwdGlv
biA9IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRf
Q0FMTF9FTkRfSU1QTChfX2N0X2V4ZWMsIGNhbGxUb1Rocm93KF9fY3RfZXhlYywgX19jdF9wYykp
OyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9DSEVDS19FWENF
UFRJT04oZXhlYywgcGMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhl
Y1N0YXRlKiBfX2NjZV9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY2NlX3BjID0gKHBjKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKF9fY2NlX2V4ZWMt
Pmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExM
SU5UX0NBTExfRU5EX0lNUEwoX19jY2VfZXhlYywgY2FsbFRvVGhyb3coX19jY2VfZXhlYywgX19j
Y2VfcGMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfUkVU
VVJOKGV4ZWMsIHBjLCBjYWxsVGFyZ2V0KSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIEV4ZWNTdGF0ZSogX19jcl9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2NyX3BjID0gKHBjKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHZvaWQqIF9fY3JfY2FsbFRh
cmdldCA9IChjYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKF9fY3JfZXhlYy0+Y2FsbGVyRnJhbWUoKSwgX19j
cl9wYyk7ICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jcl9leGVjLCBfX2NyX2Nh
bGxUYXJnZXQpOyAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKK2V4dGVy
biAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSogZXhl
YywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkKK3sKKyAgICBw
cmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMldSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVk
XG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAg
ICAgICAgICAgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwK
KyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChw
Y1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGZyb21XaGVyZSwKKyAgICAgICAgICAgb3BlcmFu
ZCwKKyAgICAgICAgICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kKTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkK
K3sKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQyhvcGVyYW5kKS5qc1ZhbHVlKCk7Cisg
ICAgRW5jb2RlZFZhbHVlRGVzY3JpcHRvciBkZXNjcmlwdG9yOworICAgIGRlc2NyaXB0b3IuYXNJ
bnQ2NCA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVj
dXRpbmcgYmMjJXUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZDogJTA4eDolMDh4IiwKKyAgICAg
ICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHBj
IC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCksCisgICAgICAgICAg
IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNv
ZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUsCisgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAg
ICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCwKKyAgICAgICAgICAgZGVzY3JpcHRvci5hc0JpdHMu
dGFnLAorICAgICAgICAgICBkZXNjcmlwdG9yLmFzQml0cy5wYXlsb2FkKTsKKyNpZm5kZWYgTkRF
QlVHCisgICAgcHJpbnRmKCI6ICVzIiwgdmFsdWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAg
ICBwcmludGYoIlxuIik7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KHRyYWNlX3Byb2xvZ3VlKQoreworICAgIHByaW50ZigiJXAgLyAlcDogaW4gcHJvbG9ndWUuXG4i
LCBleGVjLT5jb2RlQmxvY2soKSwgZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK3N0YXRp
YyB2b2lkIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIq
IGNvbW1lbnQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBKU0Z1bmN0aW9u
KiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmpzRXhlY3V0YWJsZSgpOworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gJmV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOwor
ICAgIHByaW50ZigiJXAgLyAlcDogaW4gJXMgb2YgZnVuY3Rpb24gJXAsIGV4ZWN1dGFibGUgJXA7
IG51bVZhcnMgPSAldSwgbnVtUGFyYW1ldGVycyA9ICV1LCBudW1DYWxsZWVSZWdpc3RlcnMgPSAl
dS5cbiIsCisgICAgICAgICAgIGNvZGVCbG9jaywgZXhlYywgY29tbWVudCwgY2FsbGVlLCBleGVj
dXRhYmxlLAorICAgICAgICAgICBjb2RlQmxvY2stPm1fbnVtVmFycywgY29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCksIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworfQorCitMTElO
VF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKK3sKKyAgICB0
cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNhbGwgcHJvbG9ndWUiLCBDb2RlRm9yQ2FsbCk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3Vl
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4
ZWMsICJjb25zdHJ1Y3QgcHJvbG9ndWUiLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkK
K3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNhbGwgYXJpdHkgY2hlY2siLCBD
b2RlRm9yQ2FsbCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRy
YWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9n
dWUoZXhlYywgImNvbnN0cnVjdCBhcml0eSBjaGVjayIsIENvZGVGb3JDb25zdHJ1Y3QpOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZSkKK3sKKyAgICBwcmlu
dGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMldSwgIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJs
b2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHBjIC0gZXhlYy0+Y29kZUJsb2Nr
KCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworI2lmbmRlZiBOREVCVUcKKyAgICBwcmludGYo
IiVzLCAiLCBvcGNvZGVOYW1lc1tleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9w
Y29kZUlEKHBjWzBdLnUub3Bjb2RlKV0pOworI2Vsc2UKKyAgICBwcmludGYoIm9wIyV1LCAiLCBl
eGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2Rl
KSk7CisjZW5kaWYKKyAgICBwcmludGYoInNjb3BlICVwXG4iLCBleGVjLT5zY29wZUNoYWluKCkp
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChzcGVjaWFsX3RyYWNl
KQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIHNwZWNpYWwgY2FzZSBiYyMldSwg
b3AjJXUsIHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCks
CisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmlu
c3RydWN0aW9ucygpLmJlZ2luKCksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRl
cnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBleGVjLT5y
ZXR1cm5QQygpLnZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitpbmxpbmUgYm9vbCBz
aG91bGRKSVQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIFlvdSBjYW4gbW9kaWZ5IHRoaXMg
dG8gdHVybiBvZmYgSklUdGluZyB3aXRob3V0IHJlYnVpbGRpbmcgdGhlIHdvcmxkLgorICAgIHJl
dHVybiBleGVjLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGVudHJ5X29zcikKK3sKKyAgICBpZiAoIXNob3VsZEpJVChleGVjKSkgeworICAgICAgICBl
eGVjLT5jb2RlQmxvY2soKS0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JF
VFVSTl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5qaXRDb21w
aWxlKGV4ZWMpOworICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5qaXRTb29uKCk7CisgICAgTExJTlRf
UkVUVVJOX1RXTyhleGVjLT5jb2RlQmxvY2soKS0+Z2V0SklUQ29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzQXRPZmZzZXQoMCksIGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3Jf
YXJpdHlDaGVjaykKK3sKKyAgICBpZiAoIXNob3VsZEpJVChleGVjKSkgeworICAgICAgICBleGVj
LT5jb2RlQmxvY2soKS0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVS
Tl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5qaXRDb21waWxl
KGV4ZWMpOworICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5qaXRTb29uKCk7CisgICAgTExJTlRfUkVU
VVJOX1RXTyhleGVjLT5jb2RlQmxvY2soKS0+Z2V0SklUQ29kZVdpdGhBcml0eUNoZWNrKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3Ny
KQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAg
CisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklU
QW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9
CisgICAgCisgICAgY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMpOworICAgIGNvZGVCbG9jay0+
aml0U29vbigpOworICAgIAorICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBK
SVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgCisgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGlu
ZU9mZnNldD4gbWFwOworICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgpLT5kZWNvZGUobWFwKTsK
KyAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcgPSBiaW5hcnlTZWFyY2g8Qnl0
ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25lZCwgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0
OjpnZXRCeXRlY29kZUluZGV4PihtYXAuYmVnaW4oKSwgbWFwLnNpemUoKSwgcGMgLSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIEFTU0VSVChtYXBwaW5nKTsKKyAgICBB
U1NFUlQobWFwcGluZy0+bV9ieXRlY29kZUluZGV4ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihw
YyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSkpOworICAgIAorICAgIHZvaWQq
IGp1bXBUYXJnZXQgPSBjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0
T2Zmc2V0KG1hcHBpbmctPm1fbWFjaGluZUNvZGVPZmZzZXQpOworICAgIEFTU0VSVChqdW1wVGFy
Z2V0KTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk5fVFdPKGp1bXBUYXJnZXQsIGV4ZWMpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKQoreworICAgIGlmIChzaG91bGRKSVQoZXhlYykp
IHsKKyAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdENvbXBpbGUoZXhlYyk7CisgICAgICAg
IGV4ZWMtPmNvZGVCbG9jaygpLT5qaXRTb29uKCk7CisgICAgfSBlbHNlCisgICAgICAgIGV4ZWMt
PmNvZGVCbG9jaygpLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjaykKK3sKKyNpZiBMTElOVF9I
RUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0IHdpdGggZXhl
YyA9ICVwLlxuIiwgZXhlYyk7CisgICAgcHJpbnRmKCJDb2RlQmxvY2sgPSAlcC5cbiIsIGV4ZWMt
PmNvZGVCbG9jaygpKTsKKyAgICBwcmludGYoIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4i
LCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgIHByaW50Zigi
TnVtIHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bVZhcnMpOworICAgIHBy
aW50ZigiQ3VycmVudCBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJw
cmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKKyNlbmRpZgorICAgIEFTU0VSVCgmZXhlYy0+
cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSA+IGV4
ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOworICAg
IGlmIChVTkxJS0VMWSghZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZp
bGUoKS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxs
ZWVSZWdpc3RlcnNdKSkpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7Cisg
ICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93
RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3coZXhlYyk7CisgICAgICAgIHBj
ID0gcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihleGVjKTsKKyAgICB9CisgICAgTExJ
TlRfRU5EX0lNUEwoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlD
aGVjaykKK3sKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5
Q2hlY2tGb3IoZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJG
aWxlKCksIENvZGVGb3JDYWxsKTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9
IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRp
b24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVy
VGhyb3coZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQq
PigxKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAg
ICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhl
YywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVG
b3JDb25zdHJ1Y3QpOworICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBleGVjID0gZXhlYy0+
Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0ZXJUaHJvdyhl
eGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KDEpLCBl
eGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQoreworI2lmIExMSU5UX0hF
TFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGluZyBhbiBhY3RpdmF0aW9uLCBleGVjID0g
JXAhXG4iLCBleGVjKTsKKyNlbmRpZgorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpT
QWN0aXZhdGlvbjo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYywgc3RhdGljX2Nhc3Q8
RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlYy0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgp
KSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goYWN0
aXZhdGlvbikpOworICAgIExMSU5UX1JFVFVSTihKU1ZhbHVlKGFjdGl2YXRpb24pKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCit7CisgICAgSlNWYWx1
ZSBhcmd1bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGV4ZWMtPnVuY2hl
Y2tlZFIocGNbMV0udS5vcGVyYW5kKSA9IGFyZ3VtZW50czsKKyAgICBleGVjLT51bmNoZWNrZWRS
KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50
czsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0
ZV90aGlzKQoreworICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0gYXNGdW5jdGlvbihleGVj
LT5jYWxsZWUoKSk7CisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIENvbnN0cnVjdERh
dGEgY29uc3RydWN0RGF0YTsKKyAgICBBU1NFUlQoY29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKCkt
PmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVj
dFR5cGVKUyk7CisjZW5kaWYKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBK
U1ZhbHVlIHByb3RvID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmIChwcm90by5pc09i
amVjdCgpKQorICAgICAgICBzdHJ1Y3R1cmUgPSBhc09iamVjdChwcm90byktPmluaGVyaXRvcklE
KGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgZWxzZQorICAgICAgICBzdHJ1Y3R1cmUgPSBjb25z
dHJ1Y3Rvci0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpOwor
ICAgIAorICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1
cmUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcykKK3sKKyAg
ICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIEFTU0VSVCh2MS5pc1By
aW1pdGl2ZSgpKTsKKyAgICBMTElOVF9SRVRVUk4odjEudG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpCit7CisgICAgTExJTlRfUkVU
VVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25ld19hcnJheSkKK3sKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhl
YywgYml0d2lzZV9jYXN0PEpTVmFsdWUqPigmTExJTlRfT1AoMikpLCBwY1szXS51Lm9wZXJhbmQp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5j
b25zdGFudEJ1ZmZlcihwY1syXS51Lm9wZXJhbmQpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdleHApCit7CisgICAgUmVnRXhwKiByZWdF
eHAgPSBleGVjLT5jb2RlQmxvY2soKS0+cmVnZXhwKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYg
KCFyZWdFeHAtPmlzVmFsaWQoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlU3ludGF4RXJy
b3IoZXhlYywgIkludmFsaWQgZmxhZyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikp
OworICAgIExMSU5UX1JFVFVSTihSZWdFeHBPYmplY3Q6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9ub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9lcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4
ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSkKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKCFKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OnN0cmlj
dEVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3RlcSkKK3sKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xl
YW4oanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3NlcSkK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0
ZXJlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPGZhbHNlPihleGVj
LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKQoreworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKyAxKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKQoreworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYykKK3sKKyAgICBkb3VibGUgcmVz
dWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09Q
KDIpID0ganNOdW1iZXIocmVzdWx0ICsgMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJl
c3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9kZWMpCit7CisgICAg
ZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAg
ICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCAtIDEpOworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVt
YmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRl
KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcigtTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2FkZCkKK3sK
KyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2
MiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFD
SU5HCisgICAgcHJpbnRmKCJUcnlpbmcgdG8gYWRkICVzIiwgdjEuZGVzY3JpcHRpb24oKSk7Cisg
ICAgcHJpbnRmKCIgdG8gJXMuXG4iLCB2Mi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIAor
ICAgIGlmICh2MS5pc1N0cmluZygpKSB7CisgICAgICAgIExMSU5UX1JFVFVSTigKKyAgICAgICAg
ICAgIHYyLmlzU3RyaW5nKCkKKyAgICAgICAgICAgID8ganNTdHJpbmcoZXhlYywgYXNTdHJpbmco
djEpLCBhc1N0cmluZyh2MikpCisgICAgICAgICAgICA6IGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5n
KHYxKSwgdjIudG9QcmltaXRpdmVTdHJpbmcoZXhlYykpKTsKKyAgICB9CisgICAgCisgICAgaWYg
KHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpz
TnVtYmVyKHYxLmFzTnVtYmVyKCkgKyB2Mi5hc051bWJlcigpKSk7CisgICAgCisgICAgTExJTlRf
UkVUVVJOKGpzQWRkU2xvd0Nhc2UoZXhlYywgdjEsIHYyKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9tdWwpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICogTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9O
dW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1YikKK3sKKyAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIo
ZXhlYykgLSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAvIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9tb2QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYyksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVy
KGV4ZWMpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KQoreworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4
ZWMpIDw8IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Vyc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUlu
dDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIo
ZXhlYykgJiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSB8IExMSU5UX09QX0MoMyku
anNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2JpdHhvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9JbnQzMihleGVjKSBeIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhl
YykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCkKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIofkxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKK3sK
KyAgICBKU1ZhbHVlIGJhc2VWYWwgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyNpZm5kZWYg
TkRFQlVHCisgICAgVHlwZUluZm8gdHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKTsKKyAgICBBU1NF
UlQoIWJhc2VWYWwuaXNPYmplY3QoKQorICAgICAgICAgICB8fCAhKHR5cGVJbmZvID0gYXNPYmpl
Y3QoYmFzZVZhbCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpKS5pbXBsZW1lbnRzSGFzSW5zdGFu
Y2UoKSk7CisjZW5kaWYKKyAgICBMTElOVF9USFJPVyhjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihl
eGVjLCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2luc3RhbmNlb2YpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93
UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3coZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQpLmpzVmFsdWUoKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNU
eXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCkKK3sKKyAgICBKU1ZhbHVlIHYg
PSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKHYu
aXNDZWxsKCkgPyB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKCkgOiB2LmlzVW5kZWZpbmVkKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2lzX2Jvb2xlYW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaXNfbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfc3RyaW5nKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oaXNKU1N0cmlu
ZyhMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2lzX29iamVjdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNPYmplY3RU
eXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfZnVuY3Rpb24pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVu
Y3Rpb25UeXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfaW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93
UGF0aHM6Om9wSW4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSkKK3sK
KyAgICBMTElOVF9SRVRVUk4oQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+
Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKQoreworICAgIExMSU5UX1JFVFVSTigKKyAg
ICAgICAgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVTa2lwKAorICAgICAgICAgICAgZXhlYywK
KyAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFu
ZCksCisgICAgICAgICAgICBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9i
YWxPYmplY3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0udS5vcGVyYW5kOworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgCisgICAg
QVNTRVJUX1VOVVNFRChzdHJ1Y3R1cmUsIHN0cnVjdHVyZSAhPSBnbG9iYWxPYmplY3QtPnN0cnVj
dHVyZSgpKTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRp
Zmllcihwcm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsKKyAg
ICAKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNs
b3QpKSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVu
dCk7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYg
c2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgcGNbM10udS5z
dHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAg
ICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIExMSU5UX1JFVFVSTihyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9U
SFJPVyhjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAgSWRlbnRpZmllciYg
aWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOwor
ICAgIGlmIChwY1szXS51Lm9wZXJhbmQpIHsKKyAgICAgICAgSlNWYWx1ZSBiYXNlID0gSlNDOjpy
ZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCB0cnVlKTsKKyAgICAg
ICAgaWYgKCFiYXNlKQorICAgICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZh
bGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICAgICAgTExJ
TlRfUkVUVVJOKGJhc2UpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oSlNDOjpyZXNv
bHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKK3sKKyAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+
Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIW9iamVj
dC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkKKyAgICAgICAgTExJTlRfVEhS
T1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3Ry
aW5nKCkpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfd2l0aF9iYXNlKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1Bh
dGhzOjpvcFJlc29sdmVXaXRoQmFzZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmll
cihwY1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKK3sKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aFRoaXMoZXhlYywgZXhl
Yy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5
X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Cisg
ICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVy
YW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwor
ICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOworICAgIExMSU5UX09QKDEpID0gcmVzdWx0OworCisgICAgaWYgKGJhc2VWYWx1ZS5p
c0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkKKyAgICAgICAgJiYgc2xvdC5z
bG90QmFzZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAmJiBzbG90LmNhY2hlZFByb3BlcnR5VHlw
ZSgpID09IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCog
YmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1
Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKKyAgICAgICAgICAg
IHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRh
KCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAg
ICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUp
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCit7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9
IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJh
c2VWYWx1ZSk7CisgICAgTExJTlRfUkVUVVJOKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNs
b3QpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCkKK3sKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXIm
IGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBpZiAocGNbOF0udS5v
cGVyYW5kKQorICAgICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5wdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIGVs
c2UKKyAgICAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCksIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIGlm
IChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7Cisg
ICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwor
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAg
ICAgICAgCisgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgp
CisgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5
Q2FjaGluZygpCisgICAgICAgICAgICAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90
OjpOZXdQcm9wZXJ0eSkgeworICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rp
b25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSA9PSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+
cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhd
LnUub3BlcmFuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0u
dS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQo
CisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihK
U1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAorICAg
ICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVD
aGFpbiogY2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpOworICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoY2hhaW4pOworICAgICAgICAgICAgICAgICAgICBwY1s3XS51LnN0
cnVjdHVyZUNoYWluLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNv
ZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAgICAg
ICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgZXhlYy0+
Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwor
ICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBz
aXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQp
Cit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBK
U09iamVjdCogYmFzZU9iamVjdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvT2JqZWN0KGV4
ZWMpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5k
ZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNb
M10udS5vcGVyYW5kKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgaWYgKCFj
b3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElOVF9U
SFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikp
OworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKworaW5saW5l
IEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNW
YWx1ZSBzdWJzY3JpcHQpCit7CisgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYg
c3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJh
c2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KGV4ZWMsIGFzU3RyaW5nKHN1YnNj
cmlwdCktPnZhbHVlKGV4ZWMpKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
ICAgIAorICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgeworICAgICAgICB1aW50MzJfdCBp
ID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1
ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICBy
ZXR1cm4gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAor
ICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VW
YWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzQnl0ZUFycmF5
KGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAgcmV0dXJu
IGJhc2VWYWx1ZS5nZXQoZXhlYywgaSk7CisgICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJv
cGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZh
bHVlLmdldChleGVjLCBwcm9wZXJ0eSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9n
ZXRfYnlfdmFsKQoreworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpCit7CisgICAgSlNWYWx1ZSBhcmd1
bWVudHMgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhcmd1bWVudHMpIHsKKyAg
ICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIExMSU5UX09Q
KDIpID0gYXJndW1lbnRzOworICAgICAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAgICB9CisgICAg
CisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIGFyZ3VtZW50cywgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFt
ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1
ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3B1dF9ieV92YWwpCit7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+
Z2xvYmFsRGF0YSgpOworICAgIAorICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygx
KS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAg
CisgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKKyAgICAgICAgdWludDMy
X3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VW
YWx1ZSkpIHsKKyAgICAgICAgICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1
ZSk7CisgICAgICAgICAgICBpZiAoanNBcnJheS0+Y2FuU2V0SW5kZXgoaSkpCisgICAgICAgICAg
ICAgICAganNBcnJheS0+c2V0SW5kZXgoZ2xvYmFsRGF0YSwgaSwgdmFsdWUpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5kZXgoanNBcnJheSwgZXhl
YywgaSwgdmFsdWUpOworICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKQorICAgICAgICAgICAgJiYgYXNCeXRlQXJy
YXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAgICAgICAgICAgIEpTQnl0ZUFy
cmF5KiBqc0J5dGVBcnJheSA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBp
ZiAodmFsdWUuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldElu
ZGV4KGksIHZhbHVlLmFzSW50MzIoKSk7CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAg
ICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5hc051bWJlcigpKTsKKyAg
ICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgTExJTlRfRU5EKCk7
CisgICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRv
U3RyaW5nKGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJh
c2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpCit7CisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCog
YmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICAKKyAgICBKU1ZhbHVl
IHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAgIGJvb2wgY291
bGREZWxldGU7CisgICAgCisgICAgdWludDMyX3QgaTsKKyAgICBpZiAoc3Vic2NyaXB0LmdldFVJ
bnQzMihpKSkKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYmFzZU9iamVjdCwgZXhlYywgaSk7CisgICAgZWxzZSB7
CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBJZGVudGlmaWVyIHBy
b3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7CisgICAgICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMsIHByb3BlcnR5KTsKKyAg
ICB9CisgICAgCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBleGVjLT5jb2RlQmxvY2soKS0+aXNT
dHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAi
VW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0
X2J5X2luZGV4KQoreworICAgIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnB1dChleGVjLCBwY1sy
XS51Lm9wZXJhbmQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIpCit7CisgICAgQVNTRVJU
KExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFzZU9i
aiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRlbnRpZmllciYgaWRl
bnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAg
IEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgYmFzZU9iai0+
bWV0aG9kVGFibGUoKS0+ZGVmaW5lR2V0dGVyKGJhc2VPYmosIGV4ZWMsIGlkZW50LCBhc09iamVj
dChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpCit7CisgICAgQVNTRVJUKExMSU5UX09Q
KDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2Jq
ZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVj
LT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEFTU0VSVChM
TElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgYmFzZU9iai0+bWV0aG9kVGFi
bGUoKS0+ZGVmaW5lU2V0dGVyKGJhc2VPYmosIGV4ZWMsIGlkZW50LCBhc09iamVjdChMTElOVF9P
UCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2ptcF9zY29wZXMpCit7CisgICAgdW5zaWduZWQgY291bnQgPSBwY1sxXS51
Lm9wZXJhbmQ7CisgICAgU2NvcGVDaGFpbk5vZGUqIHRtcCA9IGV4ZWMtPnNjb3BlQ2hhaW4oKTsK
KyAgICB3aGlsZSAoY291bnQtLSkKKyAgICAgICAgdG1wID0gdG1wLT5wb3AoKTsKKyAgICBleGVj
LT5zZXRTY29wZUNoYWluKHRtcCk7CisgICAgcGMgKz0gcGNbMl0udS5vcGVyYW5kOworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpCit7CisgICAg
TExJTlRfQlJBTkNIKG9wX2p0cnVlLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4o
ZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZhbHNlKQoreworICAgIExM
SU5UX0JSQU5DSChvcF9qZmFsc2UsICFMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4o
ZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3MpCit7CisgICAgTExJ
TlRfQlJBTkNIKG9wX2psZXNzLCBqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbmxlc3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzcywgIWpzTGVzczx0
cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKQoreworICAgIExM
SU5UX0JSQU5DSChvcF9qZ3JlYXRlciwganNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2puZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVy
LCAhanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEp
Cit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEsIGpzTGVzc0VxPHRydWU+KGV4ZWMsIExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9w
X2pubGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlcmVxLCBqc0xlc3NF
cTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSkKK3sK
KyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEsICFqc0xlc3NFcTxmYWxzZT4oZXhlYywg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKQoreworICAgIEpTVmFsdWUgc2Ny
dXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHNjcnV0aW5lZS5p
c0RvdWJsZSgpKTsKKyAgICBkb3VibGUgdmFsdWUgPSBzY3J1dGluZWUuYXNEb3VibGUoKTsKKyAg
ICBpbnQzMl90IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpOworICAgIGlu
dCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlmICh2YWx1ZSA9PSBpbnRW
YWx1ZSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgICAgICBwYyArPSBjb2RlQmxvY2stPmltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZShwY1sx
XS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGludFZhbHVlLCBkZWZhdWx0T2Zmc2V0KTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpCit7CisgICAgSlNW
YWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBpbnQgZGVmYXVs
dE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAoIXNjcnV0aW5lZS5pc1N0cmluZygp
KQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIGVsc2UgeworICAgICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2Rl
QmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZh
bHVlKGFzU3RyaW5nKHNjcnV0aW5lZSktPnZhbHVlKGV4ZWMpLmltcGwoKSwgZGVmYXVsdE9mZnNl
dCk7CisgICAgfQorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbmV3X2Z1bmMpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZQor
ICAgICAgICAgICB8fCAhY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkKKyAgICAgICAg
ICAgfHwgZXhlYy0+dW5jaGVja2VkUihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5q
c1ZhbHVlKCkpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGlu
ZyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJTlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVu
Y3Rpb25EZWNsKHBjWzJdLnUub3BlcmFuZCktPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApCit7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbMl0udS5vcGVy
YW5kKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVuY3Rpb24tPm1ha2UoZXhlYywgZXhlYy0+
c2NvcGVDaGFpbigpKTsKKyAgICAKKyAgICBpZiAoIWZ1bmN0aW9uLT5uYW1lKCkuaXNOdWxsKCkp
IHsKKyAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25TY29wZU9iamVjdCA9IEpT
U3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBmdW5jdGlvbi0+bmFtZSgpLCBmdW5jLCBS
ZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBmdW5jLT5zZXRTY29wZShleGVjLT5nbG9i
YWxEYXRhKCksIGZ1bmMtPnNjb3BlKCktPnB1c2goZnVuY3Rpb25TY29wZU9iamVjdCkpOworICAg
IH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZnVuYyk7Cit9CisKK3N0YXRpYyBIZWxwZXJSZXR1
cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24q
IHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKworICAgIGV4ZWNDYWxs
ZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2FsbGVlLT5z
ZXRDb2RlQmxvY2soMCk7CisKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxs
RGF0YShjYWxsZWUsIGNhbGxEYXRhKTsKKyAgICAKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlICE9
IENhbGxUeXBlSlMpOworICAgIAorICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVIb3N0
KSB7CisgICAgICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgICAgIH0K
KyAgICAgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAgICAgcHJpbnRmKCJDYWxs
IGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNjcmlwdGlvbigpKTsK
KyNlbmRpZgorCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpOworICAg
ICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihl
eGVjLCBjYWxsZWUpKTsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3Ry
dWN0KTsKKyAgICAKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQ29uc3Ry
dWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShjYWxsZWUsIGNvbnN0cnVj
dERhdGEpOworICAgIAorICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGVK
Uyk7CisgICAgCisgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZUhvc3QpIHsK
KyAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgIExM
SU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgfQorICAgIAorI2lmIExMSU5UX0hFTFBFUl9U
UkFDSU5HCisgICAgICAgIHByaW50ZigiQ29uc3RydWN0b3IgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0
aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICBBU1NFUlQo
Y29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSk7CisgICAgTExJTlRfQ0FMTF9USFJP
VyhleGVjLCBwYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7Cit9
CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxs
ZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU1ZhbHVl
IGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSAwKQorewor
ICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0aW9uKGNhbGxlZUFz
VmFsdWUpOworICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCisgICAgICAgIHJldHVybiBo
YW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwga2luZCk7CisgICAg
CisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsZWVBc0Z1bmN0aW9uQ2Vs
bCk7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihjYWxsZWUtPnNjb3BlVW5jaGVja2Vk
KCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRhYmxl
KCk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSAwOworICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigp
KQorICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5k
KS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIGVsc2UgeworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+
KGV4ZWN1dGFibGUpOworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFi
bGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29wZSgpLCBraW5kKTsKKyAgICAg
ICAgaWYgKGVycm9yKQorICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjQ2FsbGVlLT5j
YWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOworICAgICAgICBjb2RlQmxvY2sgPSAmZnVuY3Rpb25F
eGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICAgICAgQVNTRVJUKGNv
ZGVCbG9jayk7CisgICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkp
CisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRD
b2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNv
ZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRk
cmVzc0ZvckNhbGwoKTsKKyAgICB9CisgICAgCisgICAgaWYgKGNhbGxMaW5rSW5mbykgeworICAg
ICAgICBpZiAoY2FsbExpbmtJbmZvLT5pc09uTGlzdCgpKQorICAgICAgICAgICAgY2FsbExpbmtJ
bmZvLT5yZW1vdmUoKTsKKyAgICAgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVyID0gZXhlY0NhbGxl
ZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5jYWxsZWUuc2V0KGV4ZWND
YWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0
YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0
ID0gY29kZVB0cjsKKyAgICAgICAgaWYgKGNvZGVCbG9jaykKKyAgICAgICAgICAgIGNvZGVCbG9j
ay0+bGlua0luY29taW5nQ2FsbChjYWxsTGlua0luZm8pOworICAgIH0KKyAgICAKKyAgICBMTElO
VF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygp
KTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBl
eGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAg
ICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAv
LyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4K
KyAgICAvLyAtIElmIHBvc3NpYmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAg
IC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQg
dGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9
IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT51
bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhl
Y0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgCisgICAgQVNTRVJUKHBjWzRdLnUu
Y2FsbExpbmtJbmZvKTsKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5k
LCBjYWxsZWVBc1ZhbHVlLCBwY1s0XS51LmNhbGxMaW5rSW5mbyk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jYWxsKQoreworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywg
Q29kZUZvckNhbGwpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0KQor
eworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0cnVjdCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpCit7CisgICAgLy8gVGhp
cyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUgd2hpbGUgcmVzcGVjdGlu
ZyB0aGUgdmFyaWFibGUgYXJndW1lbnRzLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNh
bGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUg
b2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgor
ICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
OworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAorICAgICAg
ICBleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwK
KyAgICAgICAgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LCBwY1s0XS51Lm9wZXJhbmQpOworICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMs
IHBjKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2Fs
bGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhl
Yyk7CisgICAgZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRh
ZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX3Zh
cmFyZ3MpKTsKKyAgICAKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2Rl
Rm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
YWxsX2V2YWwpCit7CisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSkuanNW
YWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51
Lm9wZXJhbmQ7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0
YSgpOworICAgIAorICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KHBjWzJdLnUub3BlcmFuZCk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7
CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxs
ZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFp
bigpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRSZXR1cm5QQyhiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rp
b24qPigmbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRD
b2RlQmxvY2soMCk7CisgICAgZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50
Q291bnQpLnRhZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChv
cF9jYWxsX2V2YWwpKTsKKyAgICAKKyAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFs
dWUsIGdsb2JhbEZ1bmNFdmFsKSkKKyAgICAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVl
LCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworICAgIAorICAgIGdsb2JhbERhdGEu
aG9zdENhbGxSZXR1cm5WYWx1ZSA9IGV2YWwoZXhlY0NhbGxlZSk7CisgICAgTExJTlRfQ0FMTF9S
RVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2Fj
dGl2YXRpb24pCit7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29w
ZUNoYWluKCkpOworICAgIEpTVmFsdWUgYWN0aXZhdGlvblZhbHVlID0gTExJTlRfT1AoMSkuanNW
YWx1ZSgpOworICAgIGlmICghYWN0aXZhdGlvblZhbHVlKSB7CisgICAgICAgIGlmIChKU1ZhbHVl
IHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51
Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGlmICghZXhlYy0+Y29kZUJsb2Nr
KCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT50ZWFy
T2ZmKGV4ZWMpOworICAgICAgICB9CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICBK
U0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVlKTsK
KyAgICBhY3RpdmF0aW9uLT50ZWFyT2ZmKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgaWYgKEpT
VmFsdWUgdiA9IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBj
WzJdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSkKKyAgICAgICAgYXNBcmd1bWVudHModiktPmRpZFRl
YXJPZmZBY3RpdmF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgYWN0aXZhdGlvbik7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVu
dHMpCit7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkgJiYg
IWV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIGFzQXJndW1l
bnRzKGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUu
b3BlcmFuZCkpLmpzVmFsdWUoKSktPnRlYXJPZmYoZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzU3RyaW5nKGV4ZWMsICZMTElOVF9PUCgyKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpCit7CisgICAgTExJTlRfUkVUVVJO
KExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRf
T1AoMikuanNWYWx1ZSgpOworICAgIGlmICh2LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAg
ICAgcGMgKz0gcGNbNV0udS5vcGVyYW5kOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9Cisg
ICAgCisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gby0+c3RydWN0dXJlKCk7CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciog
anNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IHN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpOwor
ICAgIGlmICghanNQcm9wZXJ0eU5hbWVJdGVyYXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LT5jYWNoZWRQcm90b3R5cGVDaGFpbigpICE9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhl
YykpCisgICAgICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjpjcmVhdGUoZXhlYywgbyk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBKU1ZhbHVlKGpz
UHJvcGVydHlOYW1lSXRlcmF0b3IpOworICAgIExMSU5UX09QKDIpID0gSlNWYWx1ZShvKTsKKyAg
ICBMTElOVF9PUCgzKSA9IFJlZ2lzdGVyOjp3aXRoSW50KDApOworICAgIExMSU5UX09QKDQpID0g
UmVnaXN0ZXI6OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAgICAK
KyAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFtZXMpOworICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSkKK3sKKyAgICBKU09i
amVjdCogYmFzZSA9IGFzT2JqZWN0KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CisgICAgSlNTdHJp
bmcqIHByb3BlcnR5ID0gYXNTdHJpbmcoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBpZiAo
YmFzZS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eS0+dmFsdWUo
ZXhlYykpKSkgeworICAgICAgICAvLyBHbyB0byB0YXJnZXQuCisgICAgICAgIHBjICs9IHBjWzZd
LnUub3BlcmFuZDsKKyAgICB9IC8vIEVsc2UsIGRvbid0IGNoYW5nZSB0aGUgUEMsIHNvIHRoZSBp
bnRlcnByZXRlciB3aWxsIHJlbG9vcC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1Ao
MSkuanNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKKyAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9IG87CisgICAg
ZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2gobykpOworICAgIAor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9wX3Njb3Bl
KQoreworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wb3AoKSk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25l
d19zY29wZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgIEpTT2JqZWN0KiBzY29wZSA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVj
LCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwgTExJTlRfT1AoMykuanNW
YWx1ZSgpLCBEb250RGVsZXRlKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3Bl
Q2hhaW4oKS0+cHVzaChzY29wZSkpOworICAgIExMSU5UX1JFVFVSTihzY29wZSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdykKK3sKKyAgICBMTElOVF9USFJPVyhMTElOVF9P
UF9DKDEpLmpzVmFsdWUoKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19y
ZWZlcmVuY2VfZXJyb3IpCit7CisgICAgTExJTlRfVEhST1coY3JlYXRlUmVmZXJlbmNlRXJyb3Io
ZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9TdHJpbmcoZXhlYykpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKQoreworICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBj
WzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOworICAg
IGludCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5nbG9iYWxE
YXRhKCkuaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihk
ZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIAorICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7Cisg
ICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT53aWxsRXhlY3V0ZShl
eGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVy
OjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPmRpZEV4ZWN1dGUoZXhlYywgTExJTlRfT1Ao
MSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxw
ZXJzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRI
ZWxwZXJzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRIZWxwZXJzX2gKKyNk
ZWZpbmUgTExJbnRIZWxwZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsK
KworbmFtZXNwYWNlIExMSW50IHsKKwordHlwZWRlZiBpbnQ2NF90IEhlbHBlclJldHVyblR5cGU7
CisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNT
dGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworZXh0ZXJu
ICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSosIEluc3Ry
dWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworCisjZGVmaW5lIExMSU5UX0hF
TFBFUl9ERUNMKG5hbWUpIFwKKyAgICBleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRf
IyNuYW1lKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQorCitMTElOVF9IRUxQRVJf
REVDTCh0cmFjZV9wcm9sb2d1ZSk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9m
dW5jdGlvbl9mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5j
dGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tf
Zm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3Ry
dWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNp
YWxfdHJhY2UpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGVudHJ5X29zcl9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3NyKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpOworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJf
ZmlsZV9jaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNrKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0
ZV90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X25ld19hcnJheSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZlcik7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dy
ZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2luYyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcHJlX2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9p
bmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl90b19qc251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRl
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX211bCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9kaXYpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hp
ZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2JpdGFuZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3IpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Yml0bm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3R5cGVvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9pc19udW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9pc19mdW5jdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4pOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfc2tpcCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmVfd2l0aF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfaWQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9i
eV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2J5X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFs
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9n
ZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0
cnVlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2psZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qbmdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
Z3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfc3dpdGNoX2NoYXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfZnVuY19leHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY2FsbF92YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfc3RyY2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25leHRfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2Nv
cGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Ro
cm93KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wcm9maWxlX3dpbGxfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9k
aWRfY2FsbCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJ
bnRIZWxwZXJzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
bGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisjZGVmaW5lIExMSW50T2ZmbGluZUFz
bUNvbmZpZ19oCisKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBDUFUoWDg2KQorI2Rl
ZmluZSBPRkZMSU5FX0FTTV9YODYgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDAK
KyNlbmRpZgorCisjaWYgQ1BVKEFSTXY3KQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAxCisj
ZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UKKyNk
ZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUoQklH
X0VORElBTikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2RlZmlu
ZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKExMSU5UX09T
Ul9UT19KSVQpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVm
aW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhFQ1VU
SU9OX1RSQUNJTkcKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQorI2Vs
c2UKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisKKyNl
bmRpZiAvLyBMTEludE9mZmxpbmVBc21Db25maWdfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJBbGxvY2F0aW9uU3BhY2UuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJF
eGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CisjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAi
SlNDZWxsLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0
YS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIK
KyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcu
aCIKKyNpbmNsdWRlICJKU3R5cGVJbmZvLmgiCisjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5o
IgorI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgi
CisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1
ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBP
RkZMSU5FX0FTTV9PRkZTRVRPRihjbGF6eiwgZmllbGQpIE9CSkVDVF9PRkZTRVRPRihjbGF6eiwg
ZmllbGQpCisKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvciB7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkKiBkdW1teSgpOworfTsKKworY29uc3QgdW5zaWduZWQqIExMSW50
T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKQoreworI2luY2x1ZGUgIkxMSW50RGVzaXJlZE9mZnNl
dHMuaCIKKyAgICByZXR1cm4gZXh0cmFjdG9yVGFibGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCitpbnQgbWFpbihpbnQsIGNoYXIqKikKK3sKKyAgICAvLyBPdXQgb2YgYW4gYWJ1bmRhbmNl
IG9mIGNhdXRpb24sIG1ha2Ugc3VyZSB0aGF0IExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXko
KSBpcyBsaXZlLAorICAgIC8vIGFuZCB0aGUgZXh0cmFjdG9yVGFibGUgaXMgbGl2ZSwgdG9vLgor
ICAgIHByaW50ZigiJXBcbiIsIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpKTsK
KyAgICByZXR1cm4gMDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisKKyNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5o
IgorI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVy
LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgdm9pZCAoKnRhcmdldCkoKSkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7Cisg
ICAgCisgICAgLy8gRklYTUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0
IG9uIFg4NiwgYnV0IEknbSBub3Qgc3VyZSBJIGNhcmUuCisgICAgaml0Lm1vdmUoSlNJbnRlcmZh
Y2VKSVQ6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSwgSlNJbnRl
cmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6cmVnVDApOwor
ICAgIAorICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZqaXQpOworICAg
IHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKK30KKworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxE
YXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
byhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dl
bmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0
QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAg
ICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7Cisg
ICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2V2YWxf
cHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtH
ZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0
ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKTsKK30K
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBM
TEludFRodW5rc19oCisjZGVmaW5lIExMSW50VGh1bmtzX2gKKworI2luY2x1ZGUgIk1hY3JvQXNz
ZW1ibGVyQ29kZVJlZi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRh
OworCituYW1lc3BhY2UgTExJbnQgeworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25G
b3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxE
YXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Ro
dW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0
aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0
YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpT
R2xvYmFsRGF0YSopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8v
IExMSW50VGh1bmtzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjM0OSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworCisjIENyYXNoIGNvdXJzZSBvbiB0aGUgbGFuZ3VhZ2UgdGhhdCB0aGlzIGlzIHdyaXR0ZW4g
aW4gKHdoaWNoIEkganVzdCBjYWxsCisjICJhc3NlbWJseSIgZXZlbiB0aG91Z2ggaXQncyBtb3Jl
IHRoYW4gdGhhdCk6CisjCisjIC0gTW9zdGx5IGdhcy1zdHlsZSBvcGVyYW5kIG9yZGVyaW5nLiBU
aGUgbGFzdCBvcGVyYW5kIHRlbmRzIHRvIGJlIHRoZQorIyAgIGRlc3RpbmF0aW9uLiBTbyAiYSA6
PSBiIiBpcyB3cml0dGVuIGFzICJtb3YgYiwgYSIuIEJ1dCB1bmxpa2UgZ2FzLAorIyAgIGNvbXBh
cmlzb25zIGFyZSBpbi1vcmRlciwgc28gImlmIChhIDwgYikiIGlzIHdyaXR0ZW4gYXMKKyMgICAi
YmlsdCBhLCBiLCAuLi4iLgorIworIyAtICJiIiA9IGJ5dGUsICJoIiA9IDE2LWJpdCB3b3JkLCAi
aSIgPSAzMi1iaXQgd29yZCwgInAiID0gcG9pbnRlci4KKyMgICBDdXJyZW50bHkgdGhpcyBpcyBq
dXN0IDMyLWJpdCBzbyAiaSIgYW5kICJwIiBhcmUgaW50ZXJjaGFuZ2VhYmxlCisjICAgZXhjZXB0
IHdoZW4gYW4gb3Agc3VwcG9ydHMgb25lIGJ1dCBub3QgdGhlIG90aGVyLgorIworIyAtIEluIGdl
bmVyYWwsIHZhbGlkIG9wZXJhbmRzIGZvciBtYWNybyBpbnZvY2F0aW9ucyBhbmQgaW5zdHJ1Y3Rp
b25zIGFyZQorIyAgIHJlZ2lzdGVycyAoZWcgInQwIiksIGFkZHJlc3NlcyAoZWcgIjRbdDBdIiks
IGJhc2UtaW5kZXggYWRkcmVzc2VzCisjICAgKGVnICI3W3QwLCB0MSwgMl0iKSwgYWJzb2x1dGUg
YWRkcmVzc2VzIChlZyAiMHhhMDAwMDAwMFtdIiksIG9yIGxhYmVscworIyAgIChlZyAiX2ZvbyIg
b3IgIi5mb28iKS4gTWFjcm8gaW52b2NhdGlvbnMgY2FuIGFsc28gdGFrZSBhbm9ueW1vdXMKKyMg
ICBtYWNyb3MgYXMgb3BlcmFuZHMuIEluc3RydWN0aW9ucyBjYW5ub3QgdGFrZSBhbm9ueW1vdXMg
bWFjcm9zLgorIworIyAtIExhYmVscyBtdXN0IGhhdmUgbmFtZXMgdGhhdCBiZWdpbiB3aXRoIGVp
dGhlciAiXyIgb3IgIi4iLiAgQSAiLiIgbGFiZWwKKyMgICBpcyBsb2NhbCBhbmQgZ2V0cyByZW5h
bWVkIGJlZm9yZSBjb2RlIGdlbiB0byBtaW5pbWl6ZSBuYW1lc3BhY2UKKyMgICBwb2xsdXRpb24u
IEEgIl8iIGxhYmVsIGlzIGFuIGV4dGVybiBzeW1ib2wgKGkuZS4gIi5nbG9ibCIpLiBUaGUgIl8i
CisjICAgbWF5IG9yIG1heSBub3QgYmUgcmVtb3ZlZCBkdXJpbmcgY29kZSBnZW4gZGVwZW5kaW5n
IG9uIHdoZXRoZXIgdGhlIGFzbQorIyAgIGNvbnZlbnRpb25zIGZvciBDIG5hbWUgbWFuZ2xpbmcg
b24gdGhlIHRhcmdldCBwbGF0Zm9ybSBtYW5kYXRlIGEgIl8iCisjICAgcHJlZml4LgorIworIyAt
IEEgIm1hY3JvIiBpcyBhIGxhbWJkYSBleHByZXNzaW9uLCB3aGljaCBtYXkgYmUgZWl0aGVyIGFu
b255bW91cyBvcgorIyAgIG5hbWVkLiBCdXQgdGhpcyBoYXMgY2F2ZWF0cy4gIm1hY3JvIiBjYW4g
dGFrZSB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLAorIyAgIHdoaWNoIG1heSBiZSBtYWNyb3Mgb3Ig
YW55IHZhbGlkIG9wZXJhbmRzLCBidXQgaXQgY2FuIG9ubHkgcmV0dXJuCisjICAgY29kZS4gQnV0
IHlvdSBjYW4gZG8gVHVyaW5nLWNvbXBsZXRlIHRoaW5ncyB2aWEgY29udGludWF0aW9uIHBhc3Np
bmcKKyMgICBzdHlsZTogIm1hY3JvIGZvbyAoYSwgYikgYihhKSBlbmQgZm9vKGZvbywgZm9vKSIu
IEFjdHVhbGx5LCBkb24ndCBkbworIyAgIHRoYXQsIHNpbmNlIHlvdSdsbCBqdXN0IGNyYXNoIHRo
ZSBhc3NlbWJsZXIuCisjCisjIC0gQW4gImlmIiBpcyBhIGNvbmRpdGlvbmFsIG9uIHNldHRpbmdz
LiBBbnkgaWRlbnRpZmllciBzdXBwbGllZCBpbiB0aGUKKyMgICBwcmVkaWNhdGUgb2YgYW4gImlm
IiBpcyBhc3N1bWVkIHRvIGJlIGEgI2RlZmluZSB0aGF0IGlzIGF2YWlsYWJsZQorIyAgIGR1cmlu
ZyBjb2RlIGdlbi4gU28geW91IGNhbid0IHVzZSAiaWYiIGZvciBjb21wdXRhdGlvbiBpbiBhIG1h
Y3JvLCBidXQKKyMgICB5b3UgY2FuIHVzZSBpdCB0byBzZWxlY3QgZGlmZmVyZW50IHBpZWNlcyBv
ZiBjb2RlIGZvciBkaWZmZXJlbnQKKyMgICBwbGF0Zm9ybXMuCisjCisjIC0gQXJndW1lbnRzIHRv
IG1hY3JvcyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIHJhdGhlciB0aGFuIGR5bmFtaWMgc2NvcGlu
Zy4KKyMgICBDb25zdCdzIGFsc28gZm9sbG93IGxleGljYWwgc2NvcGluZyBhbmQgbWF5IG92ZXJy
aWRlIChoaWRlKSBhcmd1bWVudHMKKyMgICBvciBvdGhlciBjb25zdHMuIEFsbCB2YXJpYWJsZXMg
KGFyZ3VtZW50cyBhbmQgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBvcGVyYW5kcy4g
QWRkaXRpb25hbGx5LCBhcmd1bWVudHMgKGJ1dCBub3QgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQK
KyMgICB0byBtYWNyb3MuCisKKworIyBUaGVzZSBkZWNsYXJhdGlvbnMgbXVzdCBtYXRjaCBpbnRl
cnByZXRlci9SZWdpc3RlckZpbGUuaC4KK2NvbnN0IENhbGxGcmFtZUhlYWRlclNpemUgPSA0OAor
Y29uc3QgQXJndW1lbnRDb3VudCA9IC00OAorY29uc3QgQ2FsbGVyRnJhbWUgPSAtNDAKK2NvbnN0
IENhbGxlZSA9IC0zMgorY29uc3QgU2NvcGVDaGFpbiA9IC0yNAorY29uc3QgUmV0dXJuUEMgPSAt
MTYKK2NvbnN0IENvZGVCbG9jayA9IC04CisKK2NvbnN0IFRoaXNBcmd1bWVudE9mZnNldCA9IC1D
YWxsRnJhbWVIZWFkZXJTaXplIC0gOAorCisjIERlY2xhcmUgc29tZSBhbGlhc2VzIGZvciB0aGUg
cmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAorCisjIE9mZnNldHMgbmVlZGVk
IGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRpb24uCitpZiBCSUdfRU5ESUFO
CisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSA0Citl
bHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSAw
CitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCitjb25zdCBJbnQzMlRh
ZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51bGxUYWcgPSAtMworY29uc3Qg
VW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQorY29uc3QgRW1wdHlWYWx1ZVRh
ZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29uc3QgTG93ZXN0VGFnID0gRGVs
ZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25zdCBTdHJpbmdUeXBlID0gNQor
Y29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFncyBjb25zdGFudHMuCitjb25zdCBN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVtZW50c0hhc0luc3RhbmNlID0g
MgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDgKKworIyBIZWFwIGFsbG9j
YXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0gMwor
CisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3QgRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNvbnN0YW50cy4KK2NvbnN0IEds
b2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0IEZ1bmN0aW9uQ29kZSA9IDIK
KworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0aGUgYXJndW1lbnQg
Y291bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRhZ09mZnNldAor
CisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25zdCBWZWN0b3JTaXplT2Zmc2V0
ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisjIFN0cmluZyBmbGFncy4KK2Nv
bnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxpdGllcworbWFjcm8gY3Jhc2go
KQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3ZlIDAsIHQwCisgICAgY2FsbCB0
MAorZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAgaWYgQVNTRVJUX0VOQUJMRUQK
KyAgICAgICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAgY3Jhc2goKQorICAgIC5vazoKKyAgICBl
bmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVzdGluYXRp
b25SZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJl
Z2lzdGVyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBvcCBkZXN0aW5hdGlvblJlZ2lzdGVyCisg
ICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIHJlc3RvcmVSZXR1
cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQorICAgIGlmIEFSTXY3CisgICAg
ICAgIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHB1c2gg
c291cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKwor
bWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQworICAgIGpt
cCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHBjT2Zmc2V0KQor
ICAgIGxzaGlmdGkgMiwgcGNPZmZzZXQKKyAgICBhZGRwIHBjT2Zmc2V0LCBQQworICAgIGptcCBb
UENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZzZXQpCisgICAgbG9hZGkgcGNP
ZmZzZXQsIHQwCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQwKQorZW5kCisKK21hY3Jv
IGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0
W2Nmcl0sIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBjQ2FsbDIoZnVuY3Rpb24sIGFy
ZzEsIGFyZzIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBt
b3ZlIGFyZzIsIHQxCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAorICAgICAg
ICBwb2tlIGFyZzIsIDEKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2Fs
bCBmdW5jdGlvbgorZW5kCisKKyMgVGhpcyBiYXJlbHkgd29ya3MuIGFyZzMgYW5kIGFyZzQgc2hv
dWxkIHByb2JhYmx5IGJlIGltbWVkaWF0ZXMuCittYWNybyBjQ2FsbDQoZnVuY3Rpb24sIGFyZzEs
IGFyZzIsIGFyZzMsIGFyZzQpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAor
ICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgICAgIG1vdmUgYXJnMywgdDIKKyAgICAgICAgbW92
ZSBhcmc0LCB0MworICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAg
cG9rZSBhcmcyLCAxCisgICAgICAgIHBva2UgYXJnMywgMgorICAgICAgICBwb2tlIGFyZzQsIDMK
KyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5k
CisKK21hY3JvIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMp
CisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVnZ2luZyBv
cGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVj
dGlvbiBzdHJlYW0uCittYWNybyB0cmFjZU9wZXJhbmQoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAg
IGNDYWxsNChfbGxpbnRfdHJhY2Vfb3BlcmFuZCwgY2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVyYW5k
KQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcg
b3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgdGhlIHZhbHVlIG9mIGFuIG9wZXJhbmQg
aW4gdGhlIGluc3RydWN0aW9uCisjIHN0cmVhbS4KK21hY3JvIHRyYWNlVmFsdWUoZnJvbVdoZXJl
LCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2VfdmFsdWUsIGNmciwgUEMsIGZyb21X
aGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisK
K21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAg
ICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkKKyAgICBlbmQKK2VuZAorCisjIENhbGwgYSBoZWxw
ZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3JvIGNhbGxDYWxsSGVscGVyKGFkdmFuY2UsIGhlbHBl
ciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDLCB0MAorICAgIHN0b3JlcCB0MCwg
QXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQ
QykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBhY3Rpb24odDApCitlbmQKKworbWFjcm8gc2xvd1Bh
dGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikKKyAgICBjYWxsQ2FsbEhlbHBlcigKKyAgICAgICAg
YWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAorICAgICAgICBtYWNybyAoY2FsbGVlKQorICAgICAg
ICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAg
ICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVQoaW5jcmVtZW50LCBhY3Rpb24p
CisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisg
ICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVy
W3QwXSwgLmNvbnRpbnVlCisgICAgICAgIGFjdGlvbigpCisgICAgLmNvbnRpbnVlOgorICAgIGVu
ZAorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBjaGVja1N3aXRj
aFRvSklUKAorICAgICAgICAxLAorICAgICAgICBtYWNybyAoKQorICAgICAgICAgICAgc3RvcmVp
IFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICAgICAgICAgIGNDYWxsMihf
bGxpbnRfbG9vcF9vc3IsIGNmciwgUEMpCisgICAgICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAg
ICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgICAgICBqbXAgdDAKKyAgICAgICAgLnJl
Y292ZXI6CisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0s
IFBDCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9n
dWUoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEwLAorICAgICAgICBtYWNybyAo
KQorICAgICAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVwbGFjZSkKKyAgICAgICAgZW5kKQor
ZW5kCisKK21hY3JvIGFzc2VydE5vdENvbnN0YW50KGluZGV4KQorICAgIGFzc2VydChtYWNybyAo
b2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBvayBlbmQpCitlbmQK
KworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMu
IEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShp
bmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwg
dGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAg
IGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2Fk
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhl
cmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0g
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9hZHAgVGFnT2Zmc2V0W3Bh
eWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBp
bmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQgbWF5
IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLiBJbmRleCBtYXkgYmUgY2xvYmJlcmVkLgorbWFjcm8gbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEg
aW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBU
YWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdGFnCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVn
aXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3RhZ10sIHRhZworICAgICMgVGhlcmUgaXMgYSBi
aXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFs
IHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxzaGlm
dGkgMywgaW5kZXgKKyAgICBhZGRwIGluZGV4LCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0
W3RhZ10sIHBheWxvYWQKKyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnCisuZG9uZToKK2Vu
ZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwg
dGFnQ2hlY2ssIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCwgLmNvbnN0YW50CisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhd
KQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBq
bXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9m
ZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJl
OiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtw
YXlsb2FkLCBpbmRleCwgOF0pCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRl
eCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQgbXVzdCBi
ZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QgbXV0YXRlZC4gVXNlCisjIHRoaXMg
aWYgeW91IGtub3cgd2hhdCB0aGUgdGFnIG9mIHRoZSB2YXJpYWJsZSBzaG91bGQgYmUuIERvaW5n
IHRoZSB0YWcKKyMgdGVzdCBhcyBwYXJ0IG9mIGxvYWRpbmcgdGhlIHZhcmlhYmxlIHJlZHVjZXMg
cmVnaXN0ZXIgdXNlLCBidXQgbWF5IG5vdAorIyBiZSBmYXN0ZXIgdGhhbiBkb2luZyBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlIGZvbGxvd2VkIGJ5IGEgYnJhbmNoIG9uIHRoZQorIyB0YWcuCittYWNy
byBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxv
YWQsIHNsb3cpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCisg
ICAgICAgIGluZGV4LAorICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBiaW5lcSBhY3R1YWxUYWcs
IGV4cGVjdGVkVGFnLCBzbG93IGVuZCwKKyAgICAgICAgcGF5bG9hZCkKK2VuZAorCittYWNybyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZChpbmRleCwgcGF5bG9hZCkKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgKKyAgICAgICAgaW5kZXgs
CisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGVuZCwKKyAgICAgICAgcGF5bG9hZCkKK2VuZAor
CittYWNybyB3cml0ZUJhcnJpZXIodGFnLCBwYXlsb2FkKQorICAgICMgTm90aGluZyB0byBkbyBz
aW5jZSB3ZSBkb24ndCBoYXZlIGEgZ2VuZXJhdGlvbmFsIG9yIGluY3JlbWVudGFsIGNvbGxlY3Rv
ci4KK2VuZAorCisKKyMgSW5kaWNhdGUgdGhlIGJlZ2lubmluZyBvZiBMTEludC4KK19sbGludF9i
ZWdpbjoKKyAgICBjcmFzaCgpCisKKworIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRl
cgorCittYWNybyBmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIp
CisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5j
dGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBs
b2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rl
cl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2Rl
QmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdl
dFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lz
dGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29k
ZUJsb2NrRm9yQ29uc3RydWN0W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAor
CittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlv
bkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAgICBzdG9yZXAgc291cmNlUmVnaXN0
ZXIsIENvZGVCbG9ja1tjZnJdCitlbmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0
ZXIoc291cmNlUmVnaXN0ZXIpCisgICAgIyBOb3RoaW5nIHRvIGRvIQorZW5kCisKKyMgRG8gdGhl
IGJhcmUgbWluaW11bSByZXF1aXJlZCB0byBleGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBs
ZWF2ZSB0aGUgQ29kZUJsb2NrKgorIyBpbiB0MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBl
bnRyeSBPU1IuCittYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRl
ciwgb3NySGVscGVyLCB0cmFjZUhlbHBlcikKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRl
ckNhbGwodDIpCisgICAgCisgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlm
IHdlIHNob3VsZCBPU1IuCisgICAgc3RvcmVwIHQyLCBSZXR1cm5QQ1tjZnJdCisgICAgaWYgRVhF
Q1VUSU9OX1RSQUNJTkcKKyAgICAgICAgY2FsbEhlbHBlcih0cmFjZUhlbHBlcikKKyAgICBlbmQK
KyAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgYmFk
ZGlzIDUsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3QxXSwgLmNvbnRpbnVlCisg
ICAgICAgIGNDYWxsMihvc3JIZWxwZXIsIGNmciwgUEMpCisgICAgICAgIG1vdmUgdDEsIGNmcgor
ICAgICAgICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0
MgorICAgICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICAgICAg
am1wIHQwCisgICAgLnJlY292ZXI6CisgICAgICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICAu
Y29udGludWU6CisgICAgZW5kCisgICAgY29kZUJsb2NrU2V0dGVyKHQxKQorICAgIAorICAgICMg
U2V0IHVwIHRoZSBQQy4KKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwg
dDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBW
ZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9j
ayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCisjIE11
c3QgY2FsbCBkaXNwYXRjaCgwKSBhZnRlciBjYWxsaW5nIHRoaXMuCittYWNybyBmdW5jdGlvbklu
aXRpYWxpemF0aW9uKCkKKyAgICAjIFByb2ZpbGUgdGhlIGFyZ3VtZW50cy4gVW5mb3J0dW5hdGVs
eSwgd2UgaGF2ZSBubyBjaG9pY2UgYnV0IHRvIGRvIHRoaXMuCisgICAgbG9hZGkgQ29kZUJsb2Nr
OjptX251bVBhcmFtZXRlcnNbdDFdLCB0MAorICAgIGJ0aXogdDAsIC5hcmd1bWVudFByb2ZpbGVE
b25lCisgICAgbmVnaSB0MAorICAgIGxzaGlmdGkgMywgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QxXSwgdDMKKy5h
cmd1bWVudFByb2ZpbGVMb29wOgorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09m
ZnNldCArIDhbY2ZyLCB0MF0sIHQyCisgICAgc3RvcmVpIHQyLCBWYWx1ZVByb2ZpbGU6Om1fYnVj
a2V0cyArIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXls
b2FkT2Zmc2V0ICsgOFtjZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIsIFZhbHVlUHJvZmlsZTo6
bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBhZGRwIHNpemVvZiBWYWx1ZVByb2Zp
bGUsIHQzCisgICAgYmFkZGlueiA4LCB0MCwgLmFyZ3VtZW50UHJvZmlsZUxvb3AKKy5hcmd1bWVu
dFByb2ZpbGVEb25lOgorICAgIAorICAgICMgQ2hlY2sgc3RhY2sgaGVpZ2h0LgorICAgIGxvYWRp
IENvZGVCbG9jazo6bV9udW1DYWxsZWVSZWdpc3RlcnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVC
bG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDIKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmludGVy
cHJldGVyW3QyXSwgdDIgICAjIEZJWE1FOiBDYW4gZ2V0IHRvIHRoZSBSZWdpc3RlckZpbGUgZnJv
bSB0aGUgSklUU3RhY2tGcmFtZQorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQwLCBjZnIs
IHQwCisgICAgYnBhZXEgSW50ZXJwcmV0ZXI6Om1fcmVnaXN0ZXJGaWxlICsgUmVnaXN0ZXJGaWxl
OjptX2VuZFt0Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSworCisgICAgIyBTdGFjayBoZWlnaHQgY2hl
Y2sgZmFpbGVkIC0gbmVlZCB0byBjYWxsIGEgaGVscGVyLgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X3JlZ2lzdGVyX2ZpbGVfY2hlY2spCisuc3RhY2tIZWlnaHRPSzoKK2VuZAorCisjIEV4cGVjdHMg
dGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMg
YmVoaW5kLgorbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgaGVscGVyKQorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisgICAgYmllcSB0
MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKKyAgICBjQ2FsbDIo
aGVscGVyLCBjZnIsIFBDKSAgICMgVGhpcyBoZWxwZXIgaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0
MCA9IDAgPT4gbm8gZXJyb3IsIHQwICE9IDAgPT4gZXJyb3IKKyAgICBtb3ZlIHQxLCBjZnIKKyAg
ICBidGl6IHQwLCAuY29udGludWUKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRh
W3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwg
dDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKy5j
b250aW51ZToKKyAgICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIFBDLCBzaW5jZSB0aGUgaGVscGVy
IGNsb2JiZXJlZCBpdC4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Oklu
c3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQwor
ICAgIGptcCBkb25lTGFiZWwKK2VuZAorCitfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKKyAgICBw
cm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tT
ZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNw
YXRjaCgwKQorCisKK19sbGludF9ldmFsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0
aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2Vu
dHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9y
Q2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRy
eV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKKy5mdW5jdGlv
bkZvckNhbGxCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKCkKKyAgICBkaXNwYXRj
aCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKKyAg
ICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25D
b2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9m
dW5jdGlvbl9mb3JfY29uc3RydWN0KQorLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46CisgICAg
ZnVuY3Rpb25Jbml0aWFsaXphdGlvbigpCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9y
Q2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRy
eV9vc3JfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCisgICAg
ZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X2hlbHBlcl9j
YWxsX2FyaXR5Q2hlY2spCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlf
Y2hlY2s6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIs
IGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2FyaXR5Q2hlY2ssIF9s
bGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCisgICAgZnVuY3Rpb25Bcml0eUNo
ZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfbGxpbnRfaGVscGVyX2NvbnN0cnVjdF9h
cml0eUNoZWNrKQorCisjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9ucworCitfbGxpbnRfb3Bf
ZW50ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1WYXJzW3QyXSwgdDIKKyAgICBidGl6IHQyLCAu
b3BFbnRlckRvbmUKKyAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAKKyAgICBtb3ZlIDAsIHQxCisu
b3BFbnRlckxvb3A6CisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAg
YnRpbnogdDIsIC5vcEVudGVyTG9vcAorLm9wRW50ZXJEb25lOgorICAgIGRpc3BhdGNoKDEpCisK
KworX2xsaW50X29wX2NyZWF0ZV9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5
VmFsdWVUYWcsIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQorLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmU6CisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5pdF9sYXp5X3JlZzoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRh
Z09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBcmd1bWVudHNEb25lCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCisub3BDcmVhdGVB
cmd1bWVudHNEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFjcm8gYWxsb2NhdGVCYXNpY0pT
T2JqZWN0KHNpemVDbGFzc0luZGV4LCBjbGFzc0luZm9PZmZzZXQsIHN0cnVjdHVyZSwgcmVzdWx0
LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNsb3dDYXNlKQorICAgIGNvbnN0IG9mZnNldE9mTXlTaXpl
Q2xhc3MgPSBKU0dsb2JhbERhdGE6OmhlYXAgKyBIZWFwOjptX29iamVjdFNwYWNlICsgQWxsb2Nh
dGlvblNwYWNlOjptX21hcmtlZFNwYWNlICsgTWFya2VkU3BhY2U6Om1fcHJlY2lzZVNpemVDbGFz
c2VzICsgc2l6ZUNsYXNzSW5kZXggKiBzaXplb2YgTWFya2VkU3BhY2U6OlNpemVDbGFzcworICAg
IAorICAgICMgRklYTUU6IHdlIGNhbiBnZXQgdGhlIGdsb2JhbCBkYXRhIGluIG9uZSBsb2FkIGZy
b20gdGhlIHN0YWNrLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoMQorICAgIGxv
YWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAKKyAg
ICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4gICAgCisgICAgbG9hZHAgb2Zm
c2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxb
c2NyYXRjaDFdLCByZXN1bHQKKyAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UKKyAgICAKKyAgICAj
IFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAgICBsb2FkcCBbcmVzdWx0
XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBN
YXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXQorCisgICAgIyBJ
bml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgbG9hZHAgY2xhc3NJbmZvT2Zmc2V0W3NjcmF0Y2gx
XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCisgICAgc3RvcmVwIHN0
cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCisgICAgc3RvcmVwIDAsIEpTT2Jq
ZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0KKyAgICBhZGRwIHNpemVvZiBKU09iamVjdCwgcmVz
dWx0LCBzY3JhdGNoMQorICAgIHN0b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVydHlT
dG9yYWdlW3Jlc3VsdF0KK2VuZAorCitfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQw
KQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ3JlYXRlVGhp
c1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wQ3JlYXRlVGhpc1Nsb3cK
KyAgICBsb2FkcCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFt0MF0sIHQyCisgICAgYnRweiB0Miwg
Lm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVj
dFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIHQy
LCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wQ3JlYXRlVGhp
c1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV90aGlzKQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRPZmZzZXQgKyBDYWxsZWVb
Y2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKwor
CitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5v
cENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYmJiIFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BDb252
ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0VGhpc1Nsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0
W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVjdHVy
ZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xh
c3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MSwgdDAsIHQy
LCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkg
Q2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3T2JqZWN0U2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheV9idWZmZXIpCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdleHApCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMp
CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9u
b3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRp
IDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBi
aW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90U2xvdworICAgIHhvcmkgMSwgdDMKKyAgICBzdG9y
ZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5vdFNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9l
cToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0Mywg
Lm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93CisgICAgYmliIHQyLCBM
b3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpZXEgdDAsIHQx
LCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBz
dG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisu
b3BFcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2VxKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX2VxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50
KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BFcU51
bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0
Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlCisub3BF
cU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaWVxIHQxLCBV
bmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQyLCB0MQorLm9wRXFOdWxsTm90SW1tZWRpYXRlOgor
ICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkg
dDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEp
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0
MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFTbG93CisgICAg
YmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBj
aW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQy
LCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3Bh
dGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lcSkK
KyAgICBkaXNwYXRjaCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251bGw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAg
IGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
dDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQx
LCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjpt
X2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wTmVxTnVs
bE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBjaW5lcSB0MSwgTnVsbFRh
ZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIGFuZGkgdDIsIHQxCisu
b3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAg
ICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBoZWxw
ZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKKyAgICBiaWIgdDIsIExv
d2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmluZworICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDFdLCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJlcSBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cKKy5u
b3RTdHJpbmc6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVyYXRpb24odDAs
IHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkK
KworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAor
CitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVx
KG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5k
LCBfbGxpbnRfaGVscGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3RyaWN0ZXE6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0
KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9uc3RyaWN0ZXEp
CisKKworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xl
c3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2xlc3NlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcikKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRh
ZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQx
CisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5jU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNwYXRjaCgyKQorCisK
K19sbGludF9vcF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVE
ZWNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBic3Vi
aW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29w
X3Bvc3RfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMy
VGFnLCAub3BQb3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAg
ICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNE
b25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9w
b3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAg
bG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRh
ZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAg
YnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhd
CisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0RGVjRG9u
ZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdG9f
anNudW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykK
KyAgICBiaWVxIHQyLCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklzSW50CisgICAgYmlhZXEgdDIs
IEVtcHR5VmFsdWVUYWcsIC5vcFRvSnNudW1iZXJTbG93Cisub3BUb0pzbnVtYmVySXNJbnQ6Cisg
ICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb0pzbnVtYmVyU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fanNudW1iZXIpCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQwLCB0MSwgdDIpCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BOZWdhdGVTcmNO
b3RJbnQKKyAgICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CisgICAgbmVnaSB0
MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVp
IHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKy5vcE5lZ2F0
ZVNyY05vdEludDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xvdworICAgIHhv
cmkgMHg4MDAwMDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQor
ICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMp
CisKKy5vcE5lZ2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lZ2F0ZSkK
KyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9w
ZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQ
Q10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisg
ICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDMsIEludDMyVGFn
LCAub3AyTm90SW50CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50ZWdlck9wZXJhdGlvbkFu
ZFN0b3JlKHQzLCB0MSwgdDAsIC5zbG93LCB0MikKKyAgICBkaXNwYXRjaCg1KQorCisub3AxTm90
SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRoZSBz
ZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEgdDIsIExvd2VzdFRhZywg
LnNsb3cKKyAgICBiaWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJp
bmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQxLCBmdDEKKyAgICBqbXAgLm9wMU5v
dEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQxLCB0MywgZnQxCisu
b3AxTm90SW50UmVhZHk6CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgZmlpMmQgdDAsIHQyLCBm
dDAKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2Nmciwg
dDEsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wMk5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJh
bmQgaXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5
IG5vdC4KKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNsb3cK
KyAgICBjaTJkIHQwLCBmdDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorICAgIGRvdWJsZU9wZXJh
dGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRj
aCg1KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCg1KQor
ZW5kCisKK21hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlvbiwg
aGVscGVyKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRh
ZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgaW50ZWdlck9wZXJhdGlv
bihsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zm
c2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZz
ZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBkb3VibGVPcGVyYXRpb24s
IGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfYWRkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVm
dCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQgbGVm
dCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2FkZCkKKworCitfbGxpbnRfb3Bf
bXVsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAg
ICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAg
ICAgIGNvbnN0IHNjcmF0Y2ggPSBpbnQzMlRhZyAgICMgV2Uga25vdyB0aGF0IHdlIGNhbiByZXVz
ZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEgY29uc3RhbnQuCisgICAgICAg
ICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoCisgICAgICAgICAgICBibXVsaW8gbGVmdCwgc2NyYXRj
aCwgc2xvdworICAgICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRvbmUKKyAgICAgICAgICAgIGJp
bHQgbGVmdCwgMCwgLnNsb3cKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIC5zbG93CisgICAg
ICAgIC5kb25lOgorICAgICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBp
bmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBtdWxk
IGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9tdWwpCisKKworX2xsaW50
X29wX3N1YjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1YmlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9zdWIpCisKKworX2xsaW50X29wX2RpdjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBs
ZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjaTJkIGxlZnQsIGZ0MAorICAg
ICAgICAgICAgY2kyZCByaWdodCwgZnQxCisgICAgICAgICAgICBkaXZkIGZ0MCwgZnQxCisgICAg
ICAgICAgICBiY2QyaSBmdDEsIHJpZ2h0LCAubm90SW50CisgICAgICAgICAgICBzdG9yZWkgaW50
MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHJpZ2h0
LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBqbXAgLmRvbmUKKyAg
ICAgICAgLm5vdEludDoKKyAgICAgICAgICAgIHN0b3JlZCBmdDEsIFtjZnIsIGluZGV4LCA4XQor
ICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQp
IGRpdmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2RpdikKKworCitf
bGxpbnRfb3BfbW9kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfbW9kKQorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8gYml0T3Aob3BlcmF0aW9u
LCBoZWxwZXIsIGFkdmFuY2UpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywg
LnNsb3cKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgbG9hZGkgNFtQQ10sIHQy
CisgICAgb3BlcmF0aW9uKHQxLCB0MCwgLnNsb3cpCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAg
ICBkaXNwYXRjaChhZHZhbmNlKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAg
ICBkaXNwYXRjaChhZHZhbmNlKQorZW5kCisKK19sbGludF9vcF9sc2hpZnQ6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cp
IGxzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2xzaGlmdCwK
KyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfcnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSByc2hpZnRpIGxl
ZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9yc2hpZnQsCisgICAgICAgIDQp
CisKKworX2xsaW50X29wX3Vyc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9w
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICB1cnNoaWZ0
aSBsZWZ0LCByaWdodAorICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdworICAgICAgICBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfdXJzaGlmdCwKKyAgICAgICAgNCkKKworCitfbGxp
bnRfb3BfYml0YW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBhbmRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9iaXRhbmQsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdHhvcjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgc2xvdykgeG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
Yml0eG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRvcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgb3Jp
IGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXRvciwKKyAgICAgICAg
NSkKKworCitfbGxpbnRfb3BfYml0bm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQxLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3BCaXRub3RTbG93Cisg
ICAgbm90aSB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9w
Qml0bm90U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfYml0bm90KQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQodDEsIENlbGxUYWcsIHQwLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdykKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6bV90
eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0hhc0luc3RhbmNlLCAu
b3BDaGVja0hhc0luc3RhbmNlU2xvdworICAgIGRpc3BhdGNoKDIpCisKKy5vcENoZWNrSGFzSW5z
dGFuY2VTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jaGVja19oYXNfaW5zdGFu
Y2UpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5zdGFuY2VvZjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgIyBDaGVjayB0aGF0IGJhc2VWYWwgaW1wbGVtZW50cyB0aGUgZGVm
YXVsdCBIYXNJbnN0YW5jZSBiZWhhdmlvci4KKyAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBk
ZXByZWNhdGVkLgorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZFVuY2hlY2tlZCh0MSwgdDApCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9m
bGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIC5vcEluc3RhbmNlb2ZTbG93
CisgICAgCisgICAgIyBBY3R1YWxseSBkbyB0aGUgd29yay4KKyAgICBsb2FkaSAxNltQQ10sIHQw
CisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDAsIENlbGxUYWcsIHQxLCAub3BJbnN0YW5jZW9mU2xvdykKKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QxXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUlu
Zm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgbG9hZGkg
OFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcs
IHQyLCAub3BJbnN0YW5jZW9mU2xvdykKKyAgICAKKyAgICAjIFJlZ2lzdGVyIHN0YXRlOiB0MSA9
IHByb3RvdHlwZSwgdDIgPSB2YWx1ZQorICAgIG1vdmUgMSwgdDAKKy5vcEluc3RhbmNlb2ZMb29w
OgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MgorICAgIGxvYWRpIFN0cnVj
dHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QyXSwgdDIKKyAgICBicGVxIHQyLCB0
MSwgLm9wSW5zdGFuY2VvZkRvbmUKKyAgICBidGlueiB0MiwgLm9wSW5zdGFuY2VvZkxvb3AKKwor
ICAgIG1vdmUgMCwgdDAKKy5vcEluc3RhbmNlb2ZEb25lOgorICAgIHN0b3JlaSBCb29sZWFuVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MywgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3BJbnN0YW5jZW9mU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfaW5zdGFuY2VvZikKKyAgICBkaXNwYXRjaCg1KQorCisKK19s
bGludF9vcF90eXBlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl90eXBlb2YpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfdW5k
ZWZpbmVkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfaXNfdW5kZWZpbmVkKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX2Jvb2xl
YW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9p
c19ib29sZWFuKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX251bWJlcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX251bWJl
cikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19zdHJpbmc6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19zdHJpbmcpCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfb2JqZWN0KQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX2lzX2Z1bmN0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfZnVuY3Rpb24pCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfaW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9pbikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9yZXNvbHZl
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVz
b2x2ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX3NraXA6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3Nr
aXApCisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyByZXNvbHZlR2xvYmFsKHNsb3cpCisgICAg
IyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9y
IHRoZSBsb2FkLgorICAgICMgOFtQQ10gICBQcm9wZXJ0eSBpZGVudGlmaWVyIGluZGV4IGluIHRo
ZSBjb2RlIGJsb2NrLgorICAgICMgMTJbUENdICBTdHJ1Y3R1cmUgcG9pbnRlciwgaW5pdGlhbGl6
ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgIyAxNltQQ10gIE9mZnNldCBpbiBn
bG9iYWwgb2JqZWN0LCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFs
T2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAg
ICBicG5lcSB0MSwgMTJbUENdLCBzbG93CisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRw
IEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0
W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0Mwor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCitlbmQKKworX2xsaW50
X29wX3Jlc29sdmVfZ2xvYmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICByZXNvbHZlR2xv
YmFsKC5vcFJlc29sdmVHbG9iYWxTbG93KQorICAgIGRpc3BhdGNoKDUpCisKKy5vcFJlc29sdmVH
bG9iYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkK
KyAgICBkaXNwYXRjaCg1KQorCisKKyMgR2l2ZXMgeW91IHRoZSBzY29wZSBpbiB0MCwgd2hpbGUg
YWxsb3dpbmcgeW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0
aGUKKyMgc2NvcGVzIGFzIHRoZXkgYXJlIHRyYXZlcnNlZC4gc2NvcGVDaGVjaygpIGlzIGNhbGxl
ZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSByZWdpc3RlcgorIyBob2xkaW5nIHRoZSBzY29wZSwg
YW5kIGEgcmVnaXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc2NyYXRjaC4gTm90ZSB0aGF0IHRo
aXMgZG9lcyBub3QKKyMgdXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQgc3R1ZmYgaW4gdDMgaWYgbmVl
ZCBiZS4KK21hY3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykK
KyAgICBsb2FkcCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRp
IGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorICAg
IAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGJpbmVxIENvZGVCbG9jazo6bV9j
b2RlVHlwZVt0MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AKKyAgICBidGJ6IENvZGVCbG9jazo6bV9u
ZWVkc0Z1bGxTY29wZUNoYWluW3QxXSwgLmxvb3AKKyAgICAKKyAgICBsb2FkaSBDb2RlQmxvY2s6
Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEKKworICAgICMgTmVlZCB0byBjb25kaXRpb25h
bGx5IHNraXAgb3ZlciBvbmUgc2NvcGUuCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0s
IEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2YXRpb24KKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAg
ICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisubm9BY3RpdmF0aW9uOgorICAg
IHN1YmkgMSwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorLmxvb3A6CisgICAgc2NvcGVD
aGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MAorICAg
IHN1YmkgMSwgdDIKKyAgICBidGlueiB0MiwgLmxvb3AKKworLmRvbmU6CitlbmQKKworX2xsaW50
X29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRwIEpTR2xvYmFs
RGF0YTo6YWN0aXZhdGlvblN0cnVjdHVyZVt0M10sIHQzCisgICAgZ2V0U2NvcGUoCisgICAgICAg
IDIwW1BDXSwKKyAgICAgICAgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKQorICAgICAgICAgICAgbG9h
ZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGJw
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHlu
YW1pY1N1cGVyU2xvdworICAgICAgICBlbmQpCisgICAgcmVzb2x2ZUdsb2JhbCgub3BSZXNvbHZl
R2xvYmFsRHluYW1pY1Nsb3cpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbER5
bmFtaWNTdXBlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisg
ICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNwYXRjaCg2KQorCisK
K19sbGludF9vcF9nZXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBP
cGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRo
ZSBsb2FkLgorICAgICMgOFtQQ10gICBJbmRleCBvZiByZWdpc3RlciBpbiB0aGUgc2NvcGUuCisg
ICAgIyAxMltQQ10gIERlIEJydWlqaW4gaW5kZXguCisgICAgZ2V0U2NvcGUoMTJbUENdLCBtYWNy
byAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSA4
W1BDXSwgdDIKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBs
b2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFn
T2Zmc2V0W3QwLCB0MiwgOF0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhd
LCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfcHV0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGdldFNjb3BlKDhb
UENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDMsIHQyKQorICAgIGxvYWRpIDRbUENdLCB0
MQorICAgIHdyaXRlQmFycmllcih0MywgdDIpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9i
amVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBd
LCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIs
IFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X2dldF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDEKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0ds
b2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwg
dDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDEKKyAgICBz
dG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3B1dF9nbG9i
YWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2Jq
ZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0
MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0
W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfYmFzZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfYmFzZSkKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZW5zdXJlX3Byb3Bl
cnR5X2V4aXN0cykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhf
YmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3Jlc29sdmVfd2l0aF9iYXNlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29s
dmVfd2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfZ2V0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIG9ubHkgZG8gbW9u
b21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkg
dGhlCisgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRv
IGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorICAgICMgcGluZy1wb25naW5nIGlzIGZy
ZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUK
KyAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRh
a2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9p
bmcgYW55d2F5LgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5
SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9w
ZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0
MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZz
ZXRbdDAsIHQyXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAg
c3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg4KQorCisub3BHZXRCeUlkU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X2lkKQorICAgIGRpc3BhdGNoKDgpCisK
KworX2xsaW50X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50c0xlbmd0aFNs
b3cKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MgorICAg
IHN1YmkgMSwgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQor
ICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQp
CisKKy5vcEdldEFyZ3VtZW50c0xlbmd0aFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X3B1dF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisg
ICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQz
LCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAg
IGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYnBuZXEgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGxvYWRpIDIwW1BD
XSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDAsIHQyKQorICAgIHdy
aXRlQmFycmllcih0MCwgdDIpCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbdDMsIHQxXQorICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MywgdDFdCisgICAgZGlzcGF0Y2goOSkKKworLm9w
UHV0QnlJZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pZCkKKyAg
ICBkaXNwYXRjaCg5KQorCisKK21hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVj
a3MpCisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRp
IDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRh
ZywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBicG5lcSBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgYWRkaXRpb25h
bENoZWNrcyh0MSwgdDMsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAg
ICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGFkZHAgdDEs
IHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQxLCB0MikKKyAgICB3cml0
ZUJhcnJpZXIodDEsIHQyKQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRp
IDI0W1BDXSwgdDEKKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVw
IHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAgIGRpc3BhdGNoKDkpCitlbmQKKworX2xs
aW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBwdXRCeUlkVHJhbnNpdGlv
bihtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KSBlbmQpCisKKworX2xsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICBwdXRCeUlkVHJhbnNpdGlvbigKKyAg
ICAgICAgbWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykKKyAgICAgICAgICAgIGNv
bnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJl
IHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KKyAgICAgICAgCisgICAgICAgICAgICBsb2FkcCAyOFtQ
Q10sIHNjcmF0Y2gKKyAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gs
IG9rIGVuZCkKKyAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvcltzY3Jh
dGNoXSwgc2NyYXRjaAorICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRj
aCwgb2sgZW5kKQorICAgICAgICAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFn
T2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25lCisgICAgICAgIC5sb29wOgorICAg
ICAgICAgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xk
U3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQorICAgICAgICAgICAgYnBuZXEgb2xkU3RydWN0
dXJlLCBbc2NyYXRjaF0sIHNsb3cKKyAgICAgICAgICAgIGFkZHAgNCwgc2NyYXRjaAorICAgICAg
ICAgICAgYmluZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1
cmVdLCBOdWxsVGFnLCAubG9vcAorICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kKQorCisKK19s
bGludF9vcF9kZWxfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9kZWxfYnlfaWQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
Z2V0X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxv
YWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBsb2Fk
cCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDFdLCB0MgorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAg
ICBicG5lcSBbdDBdLCB0MiwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9z
dG9yYWdlW3QwXSwgdDMKKyAgICBiaWFlcSB0MSwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDBd
LCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBBcnJheVN0
b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgQXJy
YXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKyAgICBi
aWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRCeVZhbFNsb3cKKyAgICBzdG9yZWkgdDIsIFRh
Z09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfZ2V0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9nZXRfYXJndW1lbnRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBJbnQzMlRhZywgdDIsIC5vcEdldEFyZ3VtZW50
QnlWYWxTbG93KQorICAgIGFkZGkgMSwgdDIKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5
bG9hZE9mZnNldFtjZnJdLCB0MQorICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJndW1lbnRCeVZh
bFNsb3cKKyAgICBuZWdpIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgVGhpc0Fy
Z3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxvYWRpIFRoaXNB
cmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgc3RvcmVp
IHQwLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudEJ5VmFsU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDE2W1BD
XSwgdDAKKyAgICBicG5lcSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgLm9wR2V0QnlQ
bmFtZVNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDIw
W1BDXSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MworICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAorICAgIGJwbmVxIHQwLCBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0M10sIC5vcEdldEJ5UG5hbWVTbG93Cisg
ICAgbG9hZGkgMjRbUENdLCB0MAorICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAKKyAgICBzdWJp
IDEsIHQwCisgICAgYmlhZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2FjaGVh
YmxlU2xvdHNbdDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRwIEpTT2JqZWN0OjptX3By
b3BlcnR5U3RvcmFnZVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QyLCB0MCwgOF0sIHQx
CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MiwgdDAsIDhdLCB0MworICAgIGxvYWRpIDRbUENd
LCB0MAorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQz
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNykKKworLm9wR2V0QnlQ
bmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9wbmFtZSkKKyAg
ICBkaXNwYXRjaCg3KQorCisKK19sbGludF9vcF9wdXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgSW50MzJUYWcsIHQyLCAu
b3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6
anNBcnJheUNsYXNzSW5mb1t0MF0sIHQwCisgICAgYnBuZXEgW3QxXSwgdDAsIC5vcFB1dEJ5VmFs
U2xvdworICAgIGJpYWVxIHQyLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MV0sIC5vcFB1dEJ5
VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQwCisgICAgYmllcSBB
cnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIEVtcHR5VmFsdWVU
YWcsIC5vcFB1dEJ5VmFsRW1wdHkKKy5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQ6CisgICAgbG9hZGkg
MTJbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MSwgdDMpCisg
ICAgd3JpdGVCYXJyaWVyKHQxLCB0MykKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV92
ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0b3JlaSB0MywgQXJyYXlTdG9yYWdl
OjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisK
Ky5vcFB1dEJ5VmFsRW1wdHk6CisgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVz
SW5WZWN0b3JbdDBdCisgICAgYmliIHQyLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXSwgLm9w
UHV0QnlWYWxTdG9yZVJlc3VsdAorICAgIGFkZGkgMSwgdDIsIHQxCisgICAgc3RvcmVpIHQxLCBB
cnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXQorICAgIGptcCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0
CisKKy5vcFB1dEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5
X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9kZWxfYnlfdmFsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X3ZhbCkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaW5kZXg6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaW5kZXgpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dldHRlcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9nZXR0ZXIpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9zZXR0ZXIpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfbG9vcDoKKyAgICBub3AKK19sbGludF9vcF9qbXA6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGRpc3BhdGNoQnJhbmNoKDRbUENdKQorCisKK19sbGludF9vcF9q
bXBfc2NvcGVzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfam1wX3Njb3BlcykKKyAgICBkaXNwYXRjaCgwKQorCisKK21hY3JvIGp1bXBUcnVlT3JG
YWxzZShjb25kaXRpb25PcCwgc2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQm9vbGVhblRhZywgdDAsIC5zbG93KQorICAgIGNv
bmRpdGlvbk9wKHQwLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAg
ZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoc2xvdykKKyAg
ICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX3RydWU6CisgICAgbm9wCitf
bGxpbnRfb3BfanRydWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxz
ZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aW56IHZhbHVlLCB0YXJnZXQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2p0cnVlKQorCisKK19sbGludF9vcF9sb29wX2lmX2Zh
bHNlOgorICAgIG5vcAorX2xsaW50X29wX2pmYWxzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAganVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpeiB2
YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZmFsc2UpCisKKworbWFj
cm8gZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYW5kbGVyKQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAuaW1t
ZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgY2VsbEhh
bmRsZXIoU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFy
Z2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQ
Q10pCisKKy5pbW1lZGlhdGU6CisgICAgb3JpIDEsIHQxCisgICAgaW1tZWRpYXRlSGFuZGxlcih0
MSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorZW5kCisKK19sbGludF9vcF9qZXFfbnVsbDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFs
dWUsIHRhcmdldCkgYnRibnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBl
bmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaWVxIHZhbHVlLCBOdWxsVGFnLCB0
YXJnZXQgZW5kKQorICAgIAorCitfbGxpbnRfb3Bfam5lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJ6
IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNy
byAodmFsdWUsIHRhcmdldCkgYmluZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisKKwor
X2xsaW50X29wX2puZXFfcHRyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIENlbGxUYWcsIC5vcEpuZXFQdHJCcmFuY2gKKyAgICBicGVxIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQxLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKKy5vcEpuZXFQdHJCcmFuY2g6Cisg
ICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorLm9wSm5lcVB0ckZhbGxUaHJvdWdoOgorICAgIGRp
c3BhdGNoKDQpCisKKworbWFjcm8gY29tcGFyZShpbnRlZ2VyQ29tcGFyZSwgZG91YmxlQ29tcGFy
ZSwgaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MworICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZyh0MywgdDIsIHQzKQorICAgIGJpbmVxIHQwLCBJbnQzMlRhZywgLm9wMU5vdElu
dAorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGludGVnZXJDb21wYXJl
KHQxLCB0MywgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5vdEludDoKKyAg
ICBiaWEgdDAsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wMU5v
dEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQz
LCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAg
IGZpaTJkIHQzLCB0MiwgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgZmlpMmQgdDEsIHQwLCBm
dDAKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRj
aCg0KQorCisub3AyTm90SW50OgorICAgIGNpMmQgdDEsIGZ0MAorICAgIGJpYSB0MiwgTG93ZXN0
VGFnLCAuc2xvdworICAgIGZpaTJkIHQzLCB0MiwgZnQxCisgICAgZG91YmxlQ29tcGFyZShmdDAs
IGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLmp1bXBUYXJnZXQ6CisgICAg
ZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikK
KyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX2xlc3M6CisgICAgbm9w
CitfbGxpbnRfb3Bfamxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdCBsZWZ0LCBy
aWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzcykKKworCitfbGxp
bnRfb3Bfam5sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQg
ZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxdW4gbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzKQorCisKK19s
bGludF9vcF9sb29wX2lmX2dyZWF0ZXI6CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcikKKworCitfbGxpbnRfb3Bfam5ncmVhdGVyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5ncmVhdGVyKQorCisKK19sbGludF9vcF9sb29w
X2lmX2xlc3NlcToKKyAgICBub3AKK19sbGludF9vcF9qbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkg
YmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmRsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX2psZXNzZXEpCisKKworX2xsaW50X29wX2pubGVzc2VxOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJkZ3R1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9qbmxlc3NlcSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyZXE6Cisg
ICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0
LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJkZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9q
Z3JlYXRlcmVxKQorCisKK19sbGludF9vcF9qbmdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJp
bHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
dGFyZ2V0KSBiZGx0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfam5ncmVhdGVyZXEpCisKKworX2xsaW50X29wX2xvb3BfaGludDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGRpc3BhdGNoKDEp
CisKKworX2xsaW50X29wX3N3aXRjaF9pbW06CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQyLCB0MSwgdDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVK
dW1wVGFibGUsIHQzICAgIyBGSVhNRTogd291bGQgYmUgbmljZSB0byBwZWVwaG9sZSB0aGlzIQor
ICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxl
cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgYWRkcCB0MywgdDIKKyAgICBiaW5l
cSB0MSwgSW50MzJUYWcsIC5vcFN3aXRjaEltbU5vdEludAorICAgIHN1YmkgU2ltcGxlSnVtcFRh
YmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9m
ZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAg
ICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEsIC5vcFN3
aXRjaEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQorCisu
b3BTd2l0Y2hJbW1Ob3RJbnQ6CisgICAgYmliIHQxLCBMb3dlc3RUYWcsIC5vcFN3aXRjaEltbVNs
b3cgICMgR28gdG8gc2xvdyBwYXRoIGlmIGl0J3MgYSBkb3VibGUuCisub3BTd2l0Y2hJbW1GYWxs
VGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLm9wU3dpdGNoSW1tU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX2ltbSkKKyAgICBkaXNwYXRjaCgw
KQorCisKK19sbGludF9vcF9zd2l0Y2hfY2hhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6ZW9mIFNpbXBs
ZUp1bXBUYWJsZSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2NoYXJhY3Rl
clN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGFkZHAg
dDMsIHQyCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJibmVxIFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0
Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MF0sIHQwCisg
ICAgYmluZXEgU3RyaW5nSW1wbDo6bV9sZW5ndGhbdDBdLCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRo
cm91Z2gKKyAgICBsb2FkcCBTdHJpbmdJbXBsOjptX2RhdGE4W3QwXSwgdDEKKyAgICBidGlueiBT
dHJpbmdJbXBsOjptX2hhc2hBbmRGbGFnc1t0MF0sIEhhc2hGbGFnczhCaXRCdWZmZXIsIC5vcFN3
aXRjaENoYXI4Qml0CisgICAgbG9hZGggW3QxXSwgdDAKKyAgICBqbXAgLm9wU3dpdGNoQ2hhclJl
YWR5Cisub3BTd2l0Y2hDaGFyOEJpdDoKKyAgICBsb2FkYiBbdDFdLCB0MAorLm9wU3dpdGNoQ2hh
clJlYWR5OgorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVx
IHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3Qy
XSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpi
cmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBsb2FkaSBbdDIs
IHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRp
c3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoOgor
ICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zd2l0Y2hfc3RyaW5nOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNo
X3N0cmluZykKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9uZXdfZnVuYzoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgYnRpeiAxMltQQ10sIC5vcE5ld0Z1bmNVbmNoZWNrZWQKKyAg
ICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5
VmFsdWVUYWcsIC5vcE5ld0Z1bmNEb25lCisub3BOZXdGdW5jVW5jaGVja2VkOgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuYykKKy5vcE5ld0Z1bmNEb25lOgorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX25ld19mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19mdW5jX2V4cCkKKyAgICBkaXNwYXRj
aCgzKQorCisKK21hY3JvIGRvQ2FsbChoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
bG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRwIExMSW50Q2FsbExpbmtJbmZvOjpjYWxsZWVbdDFd
LCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0Mywg
Lm9wQ2FsbFNsb3cpCisgICAgYmluZXEgdDMsIHQyLCAub3BDYWxsU2xvdworICAgIGxvYWRpIDEy
W1BDXSwgdDMKKyAgICBhZGRwIDI0LCBQQworICAgIGxzaGlmdGkgMywgdDMKKyAgICBhZGRwIGNm
ciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBjZnIKKyAgICBsb2FkcCBKU0Z1
bmN0aW9uOjptX3Njb3BlQ2hhaW5bdDJdLCB0MAorICAgIHN0b3JlaSB0MiwgQ2FsbGVlICsgUGF5
bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgdDAsIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0
W3QzXQorICAgIGxvYWRpIDggLSAyNFtQQ10sIHQyCisgICAgc3RvcmVpIFBDLCBBcmd1bWVudENv
dW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBzdG9yZXAgY2ZyLCBDYWxsZXJGcmFtZVt0M10KKyAg
ICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3Jl
aSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNdCisgICAgc3RvcmVpIENlbGxUYWcsIFNj
b3BlQ2hhaW4gKyBUYWdPZmZzZXRbdDNdCisgICAgbW92ZSB0MywgY2ZyCisgICAgY2FsbCBMTElu
dENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdCisgICAgZGlzcGF0Y2hBZnRlckNh
bGwoKQorCisub3BDYWxsU2xvdzoKKyAgICBzbG93UGF0aEZvckNhbGwoNiwgaGVscGVyKQorZW5k
CisKK19sbGludF9vcF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xs
aW50X2hlbHBlcl9jYWxsKQorCisKK19sbGludF9vcF9jb25zdHJ1Y3Q6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRfaGVscGVyX2NvbnN0cnVjdCkKKworCitfbGxpbnRf
b3BfY2FsbF92YXJhcmdzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzbG93UGF0aEZvckNh
bGwoNiwgX2xsaW50X2hlbHBlcl9jYWxsX3ZhcmFyZ3MpCisKKworX2xsaW50X29wX2NhbGxfZXZh
bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgCisgICAgIyBFdmFsIGlzIGV4ZWN1dGVkIGlu
IG9uZSBvZiB0d28gbW9kZXM6CisgICAgIworICAgICMgMSkgV2UgZmluZCB0aGF0IHdlJ3JlIHJl
YWxseSBpbnZva2luZyBldmFsKCkgaW4gd2hpY2ggY2FzZSB0aGUKKyAgICAjICAgIGV4ZWN1dGlv
biBpcyBwZXJmb21lZCBlbnRpcmVseSBpbnNpZGUgdGhlIGhlbHBlciwgYW5kIGl0CisgICAgIyAg
ICByZXR1cm5zIHRoZSBQQyBvZiBhIGZ1bmN0aW9uIHRoYXQganVzdCByZXR1cm5zIHRoZSByZXR1
cm4gdmFsdWUKKyAgICAjICAgIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAgIworICAgICMg
MikgV2UgZmluZCB0aGF0IHdlJ3JlIGludm9raW5nIHNvbWV0aGluZyBjYWxsZWQgZXZhbCgpIHRo
YXQgaXMgbm90CisgICAgIyAgICB0aGUgcmVhbCBldmFsLiBUaGVuIHRoZSBoZWxwZXIgcmV0dXJu
cyB0aGUgUEMgb2YgdGhlIHRoaW5nIHRvCisgICAgIyAgICBjYWxsLCBhbmQgd2UgY2FsbCBpdC4K
KyAgICAjCisgICAgIyBUaGlzIGFsbG93cyB1cyB0byBoYW5kbGUgdHdvIGNhc2VzLCB3aGljaCB3
b3VsZCByZXF1aXJlIGEgdG90YWwgb2YKKyAgICAjIHVwIHRvIGZvdXIgcGllY2VzIG9mIHN0YXRl
IHRoYXQgY2Fubm90IGJlIGVhc2lseSBwYWNrZWQgaW50byB0d28KKyAgICAjIHJlZ2lzdGVycyAo
QyBmdW5jdGlvbnMgY2FuIHJldHVybiB1cCB0byB0d28gcmVnaXN0ZXJzLCBlYXNpbHkpOgorICAg
ICMKKyAgICAjIC0gVGhlIGNhbGwgZnJhbWUgcmVnaXN0ZXIuIFRoaXMgbWF5IG9yIG1heSBub3Qg
aGF2ZSBiZWVuIG1vZGlmaWVkCisgICAgIyAgIGJ5IHRoZSBoZWxwZXIsIGJ1dCB0aGUgY29udmVu
dGlvbiBpcyB0aGF0IGl0IHJldHVybnMgaXQuIEl0J3Mgbm90CisgICAgIyAgIHRvdGFsbHkgY2xl
YXIgaWYgdGhhdCdzIG5lY2Vzc2FyeSwgc2luY2UgdGhlIGNmciBpcyBjYWxsZWUgc2F2ZS4KKyAg
ICAjICAgQnV0IHRoYXQncyBvdXIgc3R5bGUgaW4gdGhpcyBoZXJlIGludGVycHJldGVyIHNvIHdl
IHN0aWNrIHdpdGggaXQuCisgICAgIworICAgICMgLSBBIGJpdCB0byBzYXkgaWYgdGhlIGhlbHBl
ciBzdWNjZXNzZnVsbHkgZXhlY3V0ZWQgdGhlIGV2YWwgYW5kIGhhcworICAgICMgICB0aGUgcmV0
dXJuIHZhbHVlLCBvciBkaWQgbm90IGV4ZWN1dGUgdGhlIGV2YWwgYnV0IGhhcyBhIFBDIGZvciB1
cworICAgICMgICB0byBjYWxsLgorICAgICMKKyAgICAjIC0gRWl0aGVyOgorICAgICMgICAtIFRo
ZSBKUyByZXR1cm4gdmFsdWUgKHR3byByZWdpc3RlcnMpLCBvcgorICAgICMKKyAgICAjICAgLSBU
aGUgUEMgdG8gY2FsbC4KKyAgICAjCisgICAgIyBJdCB0dXJucyBvdXQgdG8gYmUgZWFzaWVyIHRv
IGp1c3QgYWx3YXlzIGhhdmUgdGhpcyByZXR1cm4gdGhlIGNmcgorICAgICMgYW5kIGEgUEMgdG8g
Y2FsbCwgYW5kIHRoYXQgUEMgbWF5IGJlIGEgZHVtbXkgdGh1bmsgdGhhdCBqdXN0CisgICAgIyBy
ZXR1cm5zIHRoZSBKUyB2YWx1ZSB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgIAorICAgIHNs
b3dQYXRoRm9yQ2FsbCg0LCBfbGxpbnRfaGVscGVyX2NhbGxfZXZhbCkKKworCitfbGxpbnRfZ2Vu
ZXJpY19yZXR1cm5fcG9pbnQ6CisgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorCisKK19sbGludF9v
cF90ZWFyX29mZl9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZAorICAgIGJp
ZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZh
dGlvbk5vdENyZWF0ZWQKKy5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZDoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKKy5vcFRlYXJPZmZBY3RpdmF0
aW9uTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF90ZWFyX29mZl9h
cmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IHN1YmkgMSwgdDAgICAjIEdldCB0aGUgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyCisgICAg
YmllcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBcmd1
bWVudHNOb3RDcmVhdGVkCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2Fy
Z3VtZW50cykKKy5vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDIp
CisKKworbWFjcm8gZG9SZXR1cm4oKQorICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCisgICAg
bG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgY2ZyCisgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZv
cmVSZXR1cm4odDIpCisgICAgcmV0CitlbmQKKworX2xsaW50X29wX3JldDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgZG9S
ZXR1cm4oKQorCisKK19sbGludF9vcF9jYWxsX3B1dF9yZXN1bHQ6CisgICAgbG9hZGkgNFtQQ10s
IHQyCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB0cmFjZUV4ZWN1dGlvbigpICMgTmVlZHMg
dG8gYmUgaGVyZSBiZWNhdXNlIGl0IHdvdWxkIGNsb2JiZXIgdDEsIHQwCisgICAgZGlzcGF0Y2go
MikKKworCitfbGxpbnRfb3BfcmV0X29iamVjdF9vcl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BSZXRPYmpl
Y3RPclRoaXNOb3RPYmplY3QKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIK
KyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9i
amVjdFR5cGUsIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAorICAgIGRvUmV0dXJuKCkKKwor
Lm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0OgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3BfbWV0aG9kX2NoZWNr
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIGlnbm9yZSBtZXRob2QgY2hlY2tzIGFu
ZCB1c2Ugbm9ybWFsIGdldF9ieV9pZCBvcHRpbWl6YXRpb25zLgorICAgIGRpc3BhdGNoKDEpCisK
KworX2xsaW50X29wX3N0cmNhdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3N0cmNhdCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF90
b19wcmltaXRpdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0Mgor
ICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0
MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9QcmltaXRpdmVJc0ltbQorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNs
b3dDYXNlCisub3BUb1ByaW1pdGl2ZUlzSW1tOgorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
ZGlzcGF0Y2goMykKKworLm9wVG9QcmltaXRpdmVTbG93Q2FzZToKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfdG9fcHJpbWl0aXZlKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X2dldF9wbmFtZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9nZXRfcG5hbWVzKQorICAgIGRpc3BhdGNoKDApICMgVGhlIGhlbHBlciBlaXRoZXIg
YWR2YW5jZXMgdGhlIFBDIG9yIGp1bXBzIHVzIHRvIHNvbWV3aGVyZSBlbHNlLgorCisKK19sbGlu
dF9vcF9uZXh0X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10s
IHQxCisgICAgbG9hZGkgMTZbUENdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MSwgOF0sIHQwCisgICAgYmllcSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgLm9wTmV4
dFBuYW1lRW5kCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MiwgOF0sIHQyCisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9qc1N0
cmluZ3NbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDhdLCB0MworICAgIGFkZGkgMSwgdDAK
KyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgOFtQQ10sIHQzCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAgICBicG5lcSB0MSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0Ml0sIHQwCisgICAg
bG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5v
cE5leHRQbmFtZVRhcmdldAorLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wOgorICAgIGJp
ZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFt0MV0sIE51bGxUYWcsIC5vcE5l
eHRQbmFtZVNsb3cKKyAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9m
ZnNldFt0MV0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQxCisgICAg
YnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBhZGRwIDQsIHQwCisgICAgYnRw
bnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wCisub3BOZXh0UG5hbWVUYXJn
ZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMjRbUENdKQorCisub3BOZXh0UG5hbWVFbmQ6CisgICAg
ZGlzcGF0Y2goNykKKworLm9wTmV4dFBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfbmV4dF9wbmFtZSkgIyBUaGlzIGVpdGhlciBrZWVwcyB0aGUgUEMgd2hlcmUgaXQgd2Fz
IChjYXVzaW5nIHVzIHRvIGxvb3ApIG9yIHNldHMgaXQgdG8gdGFyZ2V0LgorICAgIGRpc3BhdGNo
KDApCisKKworX2xsaW50X29wX3B1c2hfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX3Njb3BlKQorICAgIGRpc3BhdGNoKDIpCisK
KworX2xsaW50X29wX3BvcF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3BvcF9zY29wZSkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGlu
dF9vcF9wdXNoX25ld19zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3B1c2hfbmV3X3Njb3BlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX2NhdGNoOgorICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklU
J3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKKyAgICAjIG1hY2hpbmUgY29kZSByZXR1
cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQorICAg
ICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190
cmFtcG9saW5lKS4KKyAgICAjIFRoZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRo
ZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0aHJvd2luZworICAgICMgY29kZSBtdXN0IGhhdmUga25v
d24gdGhhdCB3ZSB3ZXJlIHRocm93aW5nIHRvIHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKKyAg
ICAjIHNldCBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdy4KKyAgICBt
b3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMK
KyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10s
IFBDCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3Qz
XSwgdDAKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10s
IHQxCisgICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNl
dFt0M10KKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24g
KyBUYWdPZmZzZXRbdDNdICAgICAgIAorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIHN0b3JlaSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgdHJhY2VFeGVjdXRpb24oKSAgIyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUg
YmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIgdDAsIHQxLCB0MiwgdDMgYWJvdmUuCisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3c6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvdykKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3I6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpCisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfanNyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBhZGRpIDMgKiA0LCBQQywgdDEKKyAgICBzdG9yZWkg
dDEsIFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9v
cF9zcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBs
b2FkcCBbY2ZyLCB0MCwgOF0sIFBDCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfZGVi
dWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9k
ZWJ1ZykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcm9maWxlX3dpbGxfY2FsbDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYnRweiBKSVRTdGFja0ZyYW1lOjplbmFibGVkUHJv
ZmlsZXJSZWZlcmVuY2Vbc3BdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQorLm9wUHJvZmlsZVdpbGxDYWxsRG9u
ZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wcm9maWxlX2RpZF9jYWxsOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidHB6IEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxl
clJlZmVyZW5jZVtzcF0sIC5vcFByb2ZpbGVEaWRDYWxsRG9uZQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQorLm9wUHJvZmlsZURpZENhbGxEb25lOgorICAg
IGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2VuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X3Rocm93X2Zyb21f
aGVscGVyX3RyYW1wb2xpbmU6CisgICAgIyBXaGVuIHRocm93aW5nIGZyb20gdGhlIGludGVycHJl
dGVyIChpLmUuIHRocm93aW5nIGZyb20gTExJbnRIZWxwZXJzKSwgc28KKyAgICAjIHRoZSB0aHJv
dyB0YXJnZXQgaXMgbm90IG5lY2Vzc2FyaWx5IGludGVycHJldGVkIGNvZGUsIHdlIGNvbWUgdG8g
aGVyZS4KKyAgICAjIFRoaXMgZXNzZW50aWFsbHkgZW11bGF0ZXMgdGhlIEpJVCdzIHRocm93aW5n
IHByb3RvY29sLgorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQor
ICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGpt
cCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKK19sbGludF90
aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lOgorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0Fm
dGVyQ2FsbCh0MikKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEK
KyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBq
bXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCisjIExhc3Rs
eSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9y
dCBhbGwgb3Bjb2Rlcy4KKyMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1
c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQKKyMgYXMgbXVjaC4KKworbWFjcm8g
bm90U3VwcG9ydGVkKCkKKyAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBjcmFzaCgpCisg
ICAgZWxzZQorICAgICAgICAjIFdlIHNob3VsZCB1c2Ugd2hhdGV2ZXIgdGhlIHNtYWxsZXN0IHBv
c3NpYmxlIGluc3RydWN0aW9uIGlzLCBqdXN0IHRvCisgICAgICAgICMgZW5zdXJlIHRoYXQgdGhl
cmUgaXMgYSBnYXAgYmV0d2VlbiBpbnN0cnVjdGlvbiBsYWJlbHMuIElmIG11bHRpcGxlCisgICAg
ICAgICMgc21hbGxlc3QgaW5zdHJ1Y3Rpb25zIGV4aXN0LCB3ZSBzaG91bGQgcGljayB0aGUgb25l
IHRoYXQgaXMgbW9zdAorICAgICAgICAjIGxpa2VseSByZXN1bHQgaW4gZXhlY3V0aW9uIGJlaW5n
IGhhbHRlZC4gQ3VycmVudGx5IHRoYXQgaXMgdGhlIGJyZWFrCisgICAgICAgICMgaW5zdHJ1Y3Rp
b24gb24gYWxsIGFyY2hpdGVjdHVyZXMgd2UncmUgaW50ZXJlc3RlZCBpbi4gKEJyZWFrIGlzIGlu
dDMKKyAgICAgICAgIyBvbiBJbnRlbCwgd2hpY2ggaXMgMSBieXRlLCBhbmQgYmtwdCBvbiBBUk12
Nywgd2hpY2ggaXMgMiBieXRlcy4pCisgICAgICAgIGJyZWFrCisgICAgZW5kCitlbmQKKworX2xs
aW50X29wX2dldF9hcnJheV9sZW5ndGg6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29w
X2dldF9ieV9pZF9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX2N1c3RvbV9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX2N1c3RvbV9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX2N1c3RvbV9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dl
dHRlcl9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dl
dHRlcl9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dl
dHRlcl9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfcHJv
dG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9zZWxmOgorICAg
IG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfc3RyaW5nX2xlbmd0aDoKKyAgICBub3RT
dXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX2dlbmVyaWM6CisgICAgbm90U3VwcG9y
dGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9yZXBsYWNlOgorICAgIG5vdFN1cHBvcnRlZCgp
CisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbjoKKyAgICBub3RTdXBwb3J0ZWQoKQor
CisKKyMgSW5kaWNhdGUgdGhlIGVuZCBvZiBMTEludC4KK19sbGludF9lbmQ6CisgICAgY3Jhc2go
KQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRl
ICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKKyNpbmNsdWRlICJMTEludEFzc2VtYmx5LmgiCisK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExvd0xldmVs
SW50ZXJwcmV0ZXJfaAorI2RlZmluZSBMb3dMZXZlbEludGVycHJldGVyX2gKKworI2luY2x1ZGUg
Ik9wY29kZS5oIgorCisjZGVmaW5lIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wob3Bjb2RlLCBsZW5n
dGgpIGV4dGVybiAiQyIgdm9pZCBsbGludF8jI29wY29kZSgpOworICAgIEZPUl9FQUNIX09QQ09E
RV9JRChMTElOVF9JTlNUUlVDVElPTl9ERUNMKTsKKyN1bmRlZiBMTElOVF9JTlNUUlVDVElPTl9E
RUNMCisKK2V4dGVybiAiQyIgdm9pZCBsbGludF9iZWdpbigpOworZXh0ZXJuICJDIiB2b2lkIGxs
aW50X2VuZCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUoKTsKK2V4
dGVybiAiQyIgdm9pZCBsbGludF9ldmFsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
ZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxp
bnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19m
cm9tX2hlbHBlcl90cmFtcG9saW5lKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZHVy
aW5nX2NhbGxfdHJhbXBvbGluZSgpOworCisjZW5kaWYgLy8gTG93TGV2ZWxJbnRlcnByZXRlcl9o
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE5MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVyCisgIGRlZiBpbml0aWFsaXplKG5hbWUpCisg
ICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIEBuYW1l
CisgIGVuZAorZW5kCisKK0FSTXY3X0RBVEFfUkVHID0gU3BlY2lhbFJlZ2lzdGVyLm5ldygiaXAi
KQorQVJNdjdfQUREUl9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyMyIpCisKK2RlZiBtb3Zl
SW1tZWRpYXRlKHZhbHVlLCByZWdpc3RlcikKKyAgIyBDdXJyZW50bHkgd2Ugb25seSBoYW5kbGUg
dGhlIHNpbXBsZSBjYXNlcywgYW5kIGZhbGwgYmFjayB0byBtb3YvbW92dCBmb3IgdGhlIGNvbXBs
ZXggb25lcy4KKyAgaWYgdmFsdWUgPj0gMCAmJiB2YWx1ZSA8IDI1NgorICAgICRhc20ucHV0cyAi
bW92dyBcIyN7dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgIGVsc2lmICh+dmFs
dWUpID49IDAgJiYgKH52YWx1ZSkgPCAyNTYKKyAgICAkYXNtLnB1dHMgIm12bncgXCMje352YWx1
ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzZQorICAgICRhc20ucHV0cyAibW92
dyBcIyN7dmFsdWUgJiAweGZmZmZ9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgICAgaWYg
KHZhbHVlICYgMHhmZmZmMDAwMCkgIT0gMAorICAgICAgJGFzbS5wdXRzICJtb3Z0IFwjI3t2YWx1
ZSA+PiAxNn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAgZW5kCitlbmQK
KworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisg
ICAgd2hlbiAidDAiLCAiYTAiLCAicjAiCisgICAgICAicjAiCisgICAgd2hlbiAidDEiLCAiYTEi
LCAicjEiCisgICAgICAicjEiCisgICAgd2hlbiAidDIiLCAiYTIiCisgICAgICAicjIiCisgICAg
d2hlbiAiYTMiCisgICAgICAicjMiCisgICAgd2hlbiAidDMiCisgICAgICAicjQiCisgICAgd2hl
biAidDQiCisgICAgICAicjciCisgICAgd2hlbiAiY2ZyIgorICAgICAgInI1IgorICAgIGVsc2UK
KyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3Np
YmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3Bl
cmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdy
YXAKKyAgICB5aWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQKKyAgZGVmIGFy
bVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIsICJmciIKKyAgICAgICJk
MCIKKyAgICB3aGVuICJmcjEiLAorICAgICAgImQxIgorICAgIHdoZW4gImZyMiIKKyAgICAgICJk
MiIKKyAgICB3aGVuICJmcjMiCisgICAgICAiZDMiCisgICAgd2hlbiAiZnI0IgorICAgICAgImQ0
IgorICAgIHdoZW4gImZyNSIKKyAgICAgICJkNSIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAg
IGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQK
KyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09w
ZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgeWllbGQgc2Vs
ZgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3T3BlcmFuZAorICAg
IHJhaXNlICJJbnZhbGlkIGltbWVkaWF0ZSAje3ZhbHVlfSIgaWYgdmFsdWUgPCAwIG9yIHZhbHVl
ID4gMjU1CisgICAgIiMke3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9z
c2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlP
cGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3Jl
V3JhcAorICAgIHlpZWxkIHNlbGYKKyAgZW5kCitlbmQKKworbW9kdWxlIEFSTXY3QWRkcmVzc1V0
aWxpdGllcworICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgc2VsZi5hcm1WN1ByZXBhcmVQ
b3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICAkYXNtLnB1dHMgIlx0bGRyICN7c2VsZi5hcm1WN1Bv
c3NpYmx5TWVtb3J5T3BlcmFuZH0sICN7QVJNdjdfREFUQV9SRUcuYXJtVjdPcGVyYW5kfSIKKyAg
ICB5aWVsZCBBUk12N19EQVRBX1JFRworICAgICRhc20ucHV0cyAiXHRzdHIgI3tBUk12N19EQVRB
X1JFRy5hcm1WN09wZXJhbmR9LCAje3NlbGYuYXJtVjdQb3NzaWJseU1lbW9yeU9wZXJhbmR9Igor
ICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRpbGl0
aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9m
ZnNldC52YWx1ZSA8IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICBtb3ZlSW1t
ZWRpYXRlKG9mZnNldC52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlIDwg
LTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFu
ZH0sICN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfV0iCisgICAgZWxzZQorICAgICAgIlsj
e2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tvZmZzZXQuYXJtVjdPcGVyYW5kfV0iCisgICAgZW5kCisg
IGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBpbmNsdWRlIEFSTXY3QWRkcmVzc1V0aWxp
dGllcworCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBv
ZmZzZXQudmFsdWUgIT0gMAorICAgICAgbW92ZUltbWVkaWF0ZShvZmZzZXQudmFsdWUsIEFSTXY3
X0FERFJfUkVHKQorICAgICAgJGFzbS5wdXRzICJhZGR3ICN7QVJNdjdfQUREUl9SRUcuYXJtVjdP
cGVyYW5kfSwgI3tiYXNlLmFybVY3T3BlcmFuZH0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVm
IGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAg
ICAgICJbI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFu
ZH0sIGxzbCBcIyN7c2NhbGV9XSIKKyAgICBlbHNlCisgICAgICAiWyN7YmFzZS5hcm1WN09wZXJh
bmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGV9XSIKKyAgICBlbmQKKyAg
ZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgIGluY2x1ZGUgQVJNdjdBZGRyZXNz
VXRpbGl0aWVzCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisg
ICAgbW92ZUltbWVkaWF0ZShhZGRyZXNzLnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgZW5kCisg
IAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICAiWyN7QVJNdjdfQUREUl9S
RUcuYXJtVjdPcGVyYW5kfV0iCisgIGVuZAorZW5kCisKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MyBAQAorIyEv
dXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVx
dWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVx
dWlyZSAidHJhbnNmb3JtIgorCitjbGFzcyBBc3NlbWJsZXIKKyAgZGVmIGluaXRpYWxpemUob3V0
cCkKKyAgICBAb3V0cCA9IG91dHAKKyAgICBAc3RhdGUgPSA6Y3BwCisgIGVuZAorICAKKyAgZGVm
IGVudGVyQXNtCisgICAgQG91dHAucHV0cyAiYXNtICgiCisgICAgQHN0YXRlID0gOmFzbQorICBl
bmQKKyAgCisgIGRlZiBsZWF2ZUFzbQorICAgIEBvdXRwLnB1dHMgIik7IgorICAgIEBzdGF0ZSA9
IDpjcHAKKyAgZW5kCisgIAorICBkZWYgaW5Bc20KKyAgICBlbnRlckFzbQorICAgIHlpZWxkCisg
ICAgbGVhdmVBc20KKyAgZW5kCisgIAorICBkZWYgcHV0cyhsaW5lKQorICAgIHJhaXNlIHVubGVz
cyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnB1dHMoKGxpbmUgKyAiXG4iKS5pbnNwZWN0KQor
ICBlbmQKKyAgCisgIGRlZiBjb21tZW50KHRleHQpCisgICAgQG91dHAucHV0cyAiLy8gI3t0ZXh0
fSIKKyAgZW5kCitlbmQKKworJGFzbSA9IEFzc2VtYmxlci5uZXcoJHN0ZG91dCkKKworYXNtRmls
ZSA9IEFSR1Yuc2hpZnQKK29mZnNldHNGaWxlID0gQVJHVi5zaGlmdAorCithc3QgPSBwYXJzZShs
ZXgoSU86OnJlYWQoYXNtRmlsZSkpKQorb2Zmc2V0c0xpc3QsIGNvbmZpZ0luZGV4ID0gb2Zmc2V0
c0FuZENvbmZpZ3VyYXRpb25JbmRleChvZmZzZXRzRmlsZSkKKworZm9yU2V0dGluZ3MoY29tcHV0
ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdClbY29uZmlnSW5kZXhdLCBhc3QpIHsKKyAgfCBjb25j
cmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgIGFzc2VydENvbmZpZ3VyYXRp
b24oY29uY3JldGVTZXR0aW5ncykKKyAgbG93TGV2ZWxBU1QgPSBsb3dMZXZlbEFTVC5yZXNvbHZl
KCpidWlsZE9mZnNldHNNYXAobG93TGV2ZWxBU1QsIG9mZnNldHNMaXN0KSkKKyAgZW1pdENvZGVJ
bkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQpIHsK
KyAgICAkYXNtLmluQXNtIHsKKyAgICAgIGxvd0xldmVsQVNULmxvd2VyKGJhY2tlbmQpCisgICAg
fQorICB9Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQmFzZSB1dGls
aXR5IHR5cGVzIGZvciB0aGUgQVNULiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBWYWxpZCBtZXRob2Rz
IGZvciBOb2RlOgorIworIyBub2RlLmNoaWxkcmVuIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgaW1t
ZWRpYXRlIGNoaWxkcmVuLgorIworIyBub2RlLmRlc2NlbmRlbnRzIC0+IFJldHVybnMgYW4gYXJy
YXkgb2YgYWxsIHN0cmljdCBkZXNjZW5kYW50cyAoY2hpbGRyZW4KKyMgICAgIGFuZCBjaGlsZHJl
biBvZiBjaGlsZHJlbiwgdHJhbnNpdGl2ZWx5KS4KKyMKKyMgbm9kZS5mbGF0dGVuIC0+IFJldHVy
bnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgc3RyaWN0IGRlc2NlbmRhbnRzIGFuZAorIyAgICAg
dGhlIG5vZGUgaXRzZWxmLgorIworIyBub2RlLmZpbHRlcih0eXBlKSAtPiBSZXR1cm5zIGFuIGFy
cmF5IGNvbnRhaW5pbmcgdGhvc2UgZWxlbWVudHMgaW4KKyMgICAgIG5vZGUuZmxhdHRlbiB0aGF0
IGFyZSBvZiB0aGUgZ2l2ZW4gdHlwZSAoaXNfYT8gdHlwZSByZXR1cm5zIHRydWUpLgorIworIyBu
b2RlLm1hcENoaWxkcmVue3x2fCAuLi59IC0+IFJldHVybnMgYSBuZXcgbm9kZSB3aXRoIGFsbCBj
aGlsZHJlbgorIyAgICAgcmVwbGFjZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBibG9jay4KKyMK
KyMgRXhhbXBsZXM6CisjCisjIG5vZGUuZmlsdGVyKFNldHRpbmcpLnVuaXEgLT4gUmV0dXJucyBh
bGwgb2YgdGhlIHNldHRpbmdzIHRoYXQgdGhlIEFTVCdzCisjICAgICBJZlRoZW5FbHNlIGJsb2Nr
cyBkZXBlbmQgb24uCisjCisjIG5vZGUuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcSAtPiBSZXR1
cm5zIGFsbCBvZiB0aGUgc3RydWN0dXJlIG9mZnNldHMKKyMgICAgIHRoYXQgdGhlIEFTVCBkZXBl
bmRzIG9uLgorCitjbGFzcyBOb2RlCisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgor
ICBlbmQKKyAgCisgIGRlZiBjb2RlT3JpZ2luU3RyaW5nCisgICAgImxpbmUgbnVtYmVyICN7QGNv
ZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBkZXNjZW5kYW50cworICAgIGNoaWxkcmVuLmNv
bGxlY3R7fHZ8IHYuZmxhdHRlbn0uZmxhdHRlbgorICBlbmQKKyAgCisgIGRlZiBmbGF0dGVuCisg
ICAgW3NlbGZdICsgZGVzY2VuZGFudHMKKyAgZW5kCisgIAorICBkZWYgZmlsdGVyKHR5cGUpCisg
ICAgZmxhdHRlbi5zZWxlY3R7fHZ8IHYuaXNfYT8gdHlwZX0KKyAgZW5kCitlbmQKKworY2xhc3Mg
Tm9DaGlsZHJlbiA8IE5vZGUKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtdCisgIGVuZAor
ICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1
Y3RPZmZzZXRLZXkKKyAgYXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5p
dGlhbGl6ZShzdHJ1Y3QsIGZpZWxkKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQg
PSBmaWVsZAorICBlbmQKKyAgCisgIGRlZiBoYXNoCisgICAgQHN0cnVjdC5oYXNoICsgQGZpZWxk
Lmhhc2ggKiAzCisgIGVuZAorICAKKyAgZGVmIGVxbD8ob3RoZXIpCisgICAgQHN0cnVjdCA9PSBv
dGhlci5zdHJ1Y3QgYW5kIEBmaWVsZCA9PSBvdGhlci5maWVsZAorICBlbmQKK2VuZAorICAgIAor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQVNUIG5vZGVzLiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgU3RydWN0T2Zmc2V0IDwgTm9DaGls
ZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
c3RydWN0ID0gc3RydWN0CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5kCisgIAorICBAQG1hcHBp
bmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yRmllbGQoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVs
ZCkKKyAgICBrZXkgPSBTdHJ1Y3RPZmZzZXRLZXkubmV3KHN0cnVjdCwgZmllbGQpCisgICAgCisg
ICAgdW5sZXNzIEBAbWFwcGluZ1trZXldCisgICAgICBAQG1hcHBpbmdba2V5XSA9IFN0cnVjdE9m
ZnNldC5uZXcoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBlbmQKKyAgICBAQG1hcHBp
bmdba2V5XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7c3RydWN0fTo6I3tmaWVsZH0i
CisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAgICBpZiBAc3RydWN0ICE9IG90aGVyLnN0
cnVjdAorICAgICAgcmV0dXJuIEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICAgIGVuZAorICAg
IEBmaWVsZCA8PT4gb3RoZXIuZmllbGQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mIDwgTm9D
aGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBzdHJ1Y3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3Ry
dWN0CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUo
Y29kZU9yaWdpbiwgc3RydWN0KQorICAgIHVubGVzcyBAQG1hcHBpbmdbc3RydWN0XQorICAgICAg
QEBtYXBwaW5nW3N0cnVjdF0gPSBTaXplb2YubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBl
bmQKKyAgICBAQG1hcHBpbmdbc3RydWN0XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgInNp
emVvZiAje0BzdHJ1Y3R9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIpCisgICAgQHN0cnVj
dCA8PT4gb3RoZXIuc3RydWN0CisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZSA8IE5vQ2hp
bGRyZW4KKyAgYXR0cl9yZWFkZXIgOnZhbHVlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YWx1ZSA9IHZhbHVlCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3t2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmID09
KG90aGVyKQorICAgIG90aGVyLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUgPT0gQHZh
bHVlCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVh
ZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQs
IHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJp
Z2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdo
dF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBZGRJbW1lZGlhdGVzLm5ldyhj
b2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICsgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5k
CisKK2NsYXNzIFN1YkltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmln
aHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAg
ZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAor
ICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBTdWJJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWll
bGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIo
I3tsZWZ0LmR1bXB9IC0gI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE11bElt
bWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRy
ZW4KKyAgICBNdWxJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWll
bGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICog
I3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0ZSA8IE5vZGUK
KyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBj
aGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisgIGVuZAor
ICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BjaGlsZF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hp
bGRyZW4KKyAgICBOZWdJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigtI3tAY2hpbGQuZHVtcH0pIgorICBlbmQKK2Vu
ZAorCitjbGFzcyBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAor
ICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGlu
Z1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdp
biwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklEIDwgTm9DaGls
ZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQK
KyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVd
ID0gRlBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFw
cGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAor
CitjbGFzcyBWYXJpYWJsZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVm
IHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFt
ZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFZhcmlhYmxlLm5ldyhjb2RlT3JpZ2luLCBuYW1l
KQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzIDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6YmFzZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwg
b2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisgICAgQG9m
ZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwgQG9m
ZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBZGRyZXNzLm5ldyhjb2Rl
T3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQG9mZnNldCkpCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICAiI3tvZmZzZXQuZHVtcH1bI3tiYXNlLmR1bXB9XSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgQmFzZUluZGV4IDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFzZSwgOmluZGV4LCA6c2Nh
bGUsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGJhc2UsIGluZGV4
LCBzY2FsZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNl
CisgICAgQGluZGV4ID0gaW5kZXgKKyAgICBAc2NhbGUgPSBzY2FsZQorICAgIHJhaXNlIHVubGVz
cyBbMSwgMiwgNCwgOF0ubWVtYmVyPyBAc2NhbGUKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BiYXNlLCBAaW5kZXgsIEBvZmZzZXRdCisgIGVu
ZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCAo
eWllbGQgQGJhc2UpLCAoeWllbGQgQGluZGV4KSwgQHNjYWxlLCAoeWllbGQgQG9mZnNldCkpCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQuZHVtcH1bI3tiYXNlLmR1bXB9LCAj
e2luZGV4LmR1bXB9LCAje3NjYWxlfV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRk
cmVzcyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmFkZHJlc3MKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGFkZHJlc3MpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
YWRkcmVzcyA9IGFkZHJlc3MKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje2FkZHJlc3Mu
ZHVtcH1bXSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24gPCBOb2RlCisgIGF0dHJf
cmVhZGVyIDpvcGNvZGUsIDpvcGVyYW5kcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgb3Bjb2RlLCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBvcGNvZGUg
PSBvcGNvZGUKKyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQor
ICAgIEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBAb3Bjb2RlLCBAb3BlcmFuZHMubWFwKCZw
cm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdCIgKyBvcGNvZGUudG9fcyArICIg
IiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKQorICBlbmQKK2VuZAor
CitjbGFzcyBFcnJvciA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0ZXJy
b3IiCisgIGVuZAorZW5kCisKK2NsYXNzIENvbnN0RGVjbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIg
OnZhcmlhYmxlLCA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhcmlh
YmxlLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YXJpYWJsZSA9IHZhcmlh
YmxlCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBb
QHZhcmlhYmxlLCBAdmFsdWVdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQ29u
c3REZWNsLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHZhcmlhYmxlKSwgKHlpZWxkIEB2YWx1ZSkp
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiY29uc3QgI3tAdmFyaWFibGUuZHVtcH0gPSAj
e0B2YWx1ZS5kdW1wfSIKKyAgZW5kCitlbmQKKworJGxhYmVsTWFwcGluZyA9IHt9CisKK2NsYXNz
IExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1l
ID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkK
KyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xs
aXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExhYmVsCisg
ICAgZWxzZQorICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExhYmVsLm5ldyhjb2RlT3JpZ2lu
LCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbCA8
IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUK
KyAgZW5kCisKKyAgQEB1bmlxdWVOYW1lQ291bnRlciA9IDAKKyAgCisgIGRlZiBzZWxmLmZvck5h
bWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICBy
YWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5n
W25hbWVdLmlzX2E/IExvY2FsTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25h
bWVdID0gTG9jYWxMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFi
ZWxNYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIHNlbGYudW5pcXVlKGNvbW1lbnQpCisg
ICAgbmV3TmFtZSA9ICJfI3tjb21tZW50fSIKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25ld05hbWVd
CisgICAgICB3aGlsZSAkbGFiZWxNYXBwaW5nW25ld05hbWUgPSAiXyN7QEB1bmlxdWVOYW1lQ291
bnRlcn1fI3tjb21tZW50fSJdCisgICAgICAgIEBAdW5pcXVlTmFtZUNvdW50ZXIgKz0gMQorICAg
ICAgZW5kCisgICAgZW5kCisgICAgZm9yTmFtZShuaWwsIG5ld05hbWUpCisgIGVuZAorICAKKyAg
ZGVmIGNsZWFuTmFtZQorICAgIGlmIG5hbWUgPX4gL15cLi8KKyAgICAgICJfIiArIG5hbWVbMS4u
LTFdCisgICAgZWxzZQorICAgICAgbmFtZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZSA8IE5v
ZGUKKyAgYXR0cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBsYWJlbCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFw
Q2hpbGRyZW4KKyAgICBMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJl
bCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxS
ZWZlcmVuY2UgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
bGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxdCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXco
Y29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBs
YWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAor
ZW5kCisKK2NsYXNzIFNlcXVlbmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGlzdAorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGlzdCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBsaXN0ID0gbGlzdAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIGxpc3QKKyAg
ZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgU2VxdWVuY2UubmV3KGNvZGVP
cmlnaW4sIEBsaXN0Lm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsaXN0
LmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiXG4iKQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVl
IDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQorICAgIHN1cGVyKG5pbCkKKyAgZW5kCisg
IAorICBAQGluc3RhbmNlID0gVHJ1ZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAg
QEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIHRydWUKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICJ0cnVlIgorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZSA8IE5vQ2hp
bGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBp
bnN0YW5jZSA9IEZhbHNlLm5ldworICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGluc3Rh
bmNlCisgIGVuZAorICAKKyAgZGVmIHZhbHVlCisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICJmYWxzZSIKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZUNsYXNzCisgIGRlZiBh
c05vZGUKKyAgICBUcnVlLmluc3RhbmNlCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlQ2xhc3MK
KyAgZGVmIGFzTm9kZQorICAgIEZhbHNlLmluc3RhbmNlCisgIGVuZAorZW5kCisKK2NsYXNzIFNl
dHRpbmcgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUg
PSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5h
bWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBA
QG1hcHBpbmdbbmFtZV0gPSBTZXR0aW5nLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAor
ICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBl
bmQKK2VuZAorCitjbGFzcyBBbmQgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBk
ZWYgbWFwQ2hpbGRyZW4KKyAgICBBbmQubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5
aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0g
YW5kICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBPciA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAg
ICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwg
QHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE9yLm5ldyhjb2RlT3Jp
Z2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgICIoI3tsZWZ0LmR1bXB9IG9yICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitj
bGFzcyBOb3QgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgY2hpbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAY2hpbGQg
PSBjaGlsZAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQor
ICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5vdC5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKG5vdCAje2NoaWxkLmR1
bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgU2tpcCA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgIlx0c2tpcCIKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZSA8IE5v
ZGUKKyAgYXR0cl9yZWFkZXIgOnByZWRpY2F0ZSwgOnRoZW5DYXNlCisgIGF0dHJfYWNjZXNzb3Ig
OmVsc2VDYXNlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHRo
ZW5DYXNlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHByZWRpY2F0ZSA9IHByZWRpY2F0
ZQorICAgIEB0aGVuQ2FzZSA9IHRoZW5DYXNlCisgICAgQGVsc2VDYXNlID0gU2tpcC5uZXcoY29k
ZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBpZiBAZWxzZUNhc2UKKyAg
ICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2UsIEBlbHNlQ2FzZV0KKyAgICBlbHNlCisgICAgICBb
QHByZWRpY2F0ZSwgQHRoZW5DYXNlXQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbgorICAgIElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAcHJlZGljYXRlKSwg
KHlpZWxkIEB0aGVuQ2FzZSksICh5aWVsZCBAZWxzZUNhc2UpKQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgImlmICN7cHJlZGljYXRlLmR1bXB9XG4iICsgdGhlbkNhc2UuZHVtcCArICJcbmVs
c2VcbiIgKyBlbHNlQ2FzZS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBNYWNy
byA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5hbWUsIDp2YXJpYWJsZXMsIDpib2R5CisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgICBAdmFyaWFibGVzID0gdmFyaWFi
bGVzCisgICAgQGJvZHkgPSBib2R5CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgQHZh
cmlhYmxlcyArIFtAYm9keV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBNYWNy
by5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEB2YXJpYWJsZXMubWFwe3x2fCB5aWVsZCB2fSwgKHlp
ZWxkIEBib2R5KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJtYWNybyAje25hbWV9KCIg
KyB2YXJpYWJsZXMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpICsgIilcbiIgKyBib2R5
LmR1bXAgKyAiXG5lbmQiCisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvQ2FsbCA8IE5vZGUKKyAg
YXR0cl9yZWFkZXIgOm5hbWUsIDpvcGVyYW5kcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9
IG5hbWUKKyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcworICAgIHJhaXNlIHVubGVzcyBAb3BlcmFu
ZHMKKyAgICBAb3BlcmFuZHMuZWFjaHt8dnwgcmFpc2UgdW5sZXNzIHZ9CisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgQG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
KCZwcm9jKQorICAgIE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEBvcGVyYW5kcy5t
YXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0I3tuYW1lfSgiICsgb3Bl
cmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpICsgIikiCisgIGVuZAorZW5kCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMu
cmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIng4NiIKKworQkFDS0VORFMg
PQorICBbCisgICAiWDg2IiwKKyAgICJBUk12NyIKKyAgXQorCitXT1JLSU5HX0JBQ0tFTkRTID0K
KyAgWworICAgIlg4NiIKKyAgXQorCitCQUNLRU5EX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEo
JyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFonKQorCitjbGFzcyBOb2RlCisgIGRlZiBs
b3dlcihuYW1lKQorICAgIHNlbmQoImxvd2VyIiArIG5hbWUpCisgIGVuZAorZW5kCisKKyMgT3Zl
cnJpZGVzIGZvciBsb3dlcigpIGZvciB0aG9zZSBub2RlcyB0aGF0IGFyZSBiYWNrZW5kLWFnbm9z
dGljCisKK2RlZiBzYW5pdGl6ZUxhYmVsTmFtZShuYW1lKQorICAjIFNvbWUgcGxhdGZvcm1zIGRv
bid0IHdhbnQgdGhlIGxlYWRpbmcgIl8iLiBJZiB3ZSBldmVyIHdhbnQgdG8gZG8gc29tZXRoaW5n
CisgICMgYWJvdXQgdGhhdCwgaXQgd291bGQgYmUgaGVyZS4KKyAgbmFtZQorZW5kCisKK2NsYXNz
IExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAgICRhc20ucHV0cyAiLmdsb2JsICN7c2FuaXRp
emVMYWJlbE5hbWUoc2VsZi5uYW1lKX0iCisgICAgJGFzbS5wdXRzICIje3Nhbml0aXplTGFiZWxO
YW1lKHNlbGYubmFtZSl9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbAorICBkZWYg
bG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHMgIkxfb2ZmbGluZWFzbV8je3NlbGYubmFtZVsxLi4t
MV19OiIKKyAgZW5kCitlbmQKKworY2xhc3MgU2tpcAorICBkZWYgbG93ZXIobmFtZSkKKyAgZW5k
CitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgQGxpc3QuZWFj
aCB7CisgICAgICB8IG5vZGUgfAorICAgICAgbm9kZS5sb3dlcihuYW1lKQorICAgIH0KKyAgZW5k
CitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVf
b2Zmc2V0X2V4dHJhY3Rvci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rv
ci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQor
CisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiskOiA8PCBGaWxlLmRpcm5h
bWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAib2Zmc2V0cyIKK3Jl
cXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgor
CitkZWYgZW1pdE1hZ2ljTnVtYmVyCisgIE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVhY2ggeworICAg
IHwgbnVtYmVyIHwKKyAgICBwdXRzICIje251bWJlcn0sIgorICB9CitlbmQKKworb3JpZ2luYWxB
U1QgPSBwYXJzZShsZXgoJHN0ZGluLnJlYWQpKQorCitlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlv
bnMob3JpZ2luYWxBU1QpIHsKKyAgfCBzZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8Cisg
IG9mZnNldHNMaXN0ID0gYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorICBzaXpl
c0xpc3QgPSBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CisgIAorICBsZW5ndGggPSAoT0ZG
U0VUX01BR0lDX05VTUJFUlMuc2l6ZSArIDEpICogKDEgKyBvZmZzZXRzTGlzdC5zaXplICsgc2l6
ZXNMaXN0LnNpemUpCisgIAorICBwdXRzICJzdGF0aWMgY29uc3QgdW5zaWduZWQgZXh0cmFjdG9y
VGFibGVbI3tsZW5ndGh9XSA9IHsiCisgIGVtaXRNYWdpY051bWJlcgorICBwdXRzICIje2luZGV4
fSwiCisgIG9mZnNldHNMaXN0LmVhY2ggeworICAgIHwgb2Zmc2V0IHwKKyAgICBlbWl0TWFnaWNO
dW1iZXIKKyAgICBwdXRzICJPRkZMSU5FX0FTTV9PRkZTRVRPRigje29mZnNldC5zdHJ1Y3R9LCAj
e29mZnNldC5maWVsZH0pLCIKKyAgfQorICBzaXplc0xpc3QuZWFjaCB7CisgICAgfCBvZmZzZXQg
fAorICAgIGVtaXRNYWdpY051bWJlcgorICAgIHB1dHMgInNpemVvZigje29mZnNldC5zdHJ1Y3R9
KSwiCisgIH0KKyAgcHV0cyAifTsiCit9CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTg4IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitN
QUNST19JTlNUUlVDVElPTlMgPQorICBbCisgICAiYWRkaSIsCisgICAiYW5kaSIsCisgICAibHNo
aWZ0aSIsCisgICAibXVsaSIsCisgICAibmVnaSIsCisgICAibm90aSIsCisgICAib3JpIiwKKyAg
ICJyc2hpZnRpIiwKKyAgICJ1cnNoaWZ0aSIsCisgICAic3ViaSIsCisgICAieG9yaSIsCisgICAi
bG9hZGkiLAorICAgImxvYWRiIiwKKyAgICJsb2FkaCIsCisgICAic3RvcmVpIiwKKyAgICJzdG9y
ZWIiLAorICAgImxvYWRkIiwKKyAgICJtb3ZlZCIsCisgICAic3RvcmVkIiwKKyAgICJhZGRkIiwK
KyAgICJkaXZkIiwKKyAgICJzdWJkIiwKKyAgICJtdWxkIiwKKyAgICJzcXJ0ZCIsCisgICAiY2ky
ZCIsCisgICAiZmlpMmQiLCAjIHVzYWdlOiBmaWkyZCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNh
bnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+LCA8ZnByPgorICAgImZk
MmlpIiwgIyB1c2FnZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBi
aXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4KKyAgICJiZGVxIiwKKyAgICJi
ZG5lcSIsCisgICAiYmRndCIsCisgICAiYmRndGVxIiwKKyAgICJiZGx0IiwKKyAgICJiZGx0ZXEi
LAorICAgImJkZXF1biIsCisgICAiYmRuZXF1biIsCisgICAiYmRndHVuIiwKKyAgICJiZGd0ZXF1
biIsCisgICAiYmRsdHVuIiwKKyAgICJiZGx0ZXF1biIsCisgICAiYnRkMmkiLAorICAgInRkMmki
LAorICAgImJjZDJpIiwKKyAgICJtb3ZkeiIsCisgICAicG9wIiwKKyAgICJwdXNoIiwKKyAgICJt
b3ZlIiwKKyAgICJzeGkycCIsCisgICAienhpMnAiLAorICAgIm5vcCIsCisgICAiYmllcSIsCisg
ICAiYmluZXEiLAorICAgImJpYSIsCisgICAiYmlhZXEiLAorICAgImJpYiIsCisgICAiYmliZXEi
LAorICAgImJpZ3QiLAorICAgImJpZ3RlcSIsCisgICAiYmlsdCIsCisgICAiYmlsdGVxIiwKKyAg
ICJiYmVxIiwKKyAgICJiYm5lcSIsCisgICAiYmJhIiwKKyAgICJiYmFlcSIsCisgICAiYmJiIiwK
KyAgICJiYmJlcSIsCisgICAiYmJndCIsCisgICAiYmJndGVxIiwKKyAgICJiYmx0IiwKKyAgICJi
Ymx0ZXEiLAorICAgImJ0aW8iLAorICAgImJ0aXMiLAorICAgImJ0aXoiLAorICAgImJ0aW56IiwK
KyAgICJidGJvIiwKKyAgICJidGJzIiwKKyAgICJidGJ6IiwKKyAgICJidGJueiIsCisgICAiam1w
IiwKKyAgICJiYWRkaW8iLAorICAgImJhZGRpcyIsCisgICAiYmFkZGl6IiwKKyAgICJiYWRkaW56
IiwKKyAgICJic3ViaW8iLAorICAgImJzdWJpcyIsCisgICAiYnN1Yml6IiwKKyAgICJic3ViaW56
IiwKKyAgICJibXVsaW8iLAorICAgImJtdWxpcyIsCisgICAiYm11bGl6IiwKKyAgICJibXVsaW56
IiwKKyAgICJib3JpbyIsCisgICAiYm9yaXMiLAorICAgImJvcml6IiwKKyAgICJib3JpbnoiLAor
ICAgImJyZWFrIiwKKyAgICJjYWxsIiwKKyAgICJyZXQiLAorICAgImNpZXEiLAorICAgImNpbmVx
IiwKKyAgICJjaWEiLAorICAgImNpYWVxIiwKKyAgICJjaWIiLAorICAgImNpYmVxIiwKKyAgICJj
aWd0IiwKKyAgICJjaWd0ZXEiLAorICAgImNpbHQiLAorICAgImNpbHRlcSIsCisgICAidGlvIiwK
KyAgICJ0aXMiLAorICAgInRpeiIsCisgICAidGlueiIsCisgICAidGJvIiwKKyAgICJ0YnMiLAor
ICAgInRieiIsCisgICAidGJueiIsCisgICAicGVlayIsCisgICAicG9rZSIsCisgICAiYnBlcSIs
CisgICAiYnBuZXEiLAorICAgImJwYSIsCisgICAiYnBhZXEiLAorICAgImJwYiIsCisgICAiYnBi
ZXEiLAorICAgImJwZ3QiLAorICAgImJwZ3RlcSIsCisgICAiYnBsdCIsCisgICAiYnBsdGVxIiwK
KyAgICJhZGRwIiwKKyAgICJhbmRwIiwKKyAgICJvcnAiLAorICAgInN1YnAiLAorICAgInhvcnAi
LAorICAgImxvYWRwIiwKKyAgICJjcGVxIiwKKyAgICJjcG5lcSIsCisgICAiY3BhIiwKKyAgICJj
cGFlcSIsCisgICAiY3BiIiwKKyAgICJjcGJlcSIsCisgICAiY3BndCIsCisgICAiY3BndGVxIiwK
KyAgICJjcGx0IiwKKyAgICJjcGx0ZXEiLAorICAgInN0b3JlcCIsCisgICAiYnRwbyIsCisgICAi
YnRwcyIsCisgICAiYnRweiIsCisgICAiYnRwbnoiLAorICAgImJhZGRwbyIsCisgICAiYmFkZHBz
IiwKKyAgICJiYWRkcHoiLAorICAgImJhZGRwbnoiCisgIF0KKworWDg2X0lOU1RSVUNUSU9OUyA9
CisgIFsKKyAgICJjZHFpIiwKKyAgICJpZGl2aSIKKyAgXQorCitJTlNUUlVDVElPTlMgPSBNQUNS
T19JTlNUUlVDVElPTlMgKyBYODZfSU5TVFJVQ1RJT05TCisKK0lOU1RSVUNUSU9OX1BBVFRFUk4g
PSBSZWdleHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbignKXwoJykgKyAnKSlcXFon
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rv
cl9jb25zdGFudHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5y
YgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgwZmY1ZTc1NSBd
CisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJi
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0
cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIm9mZnNldF9leHRyYWN0
b3JfY29uc3RhbnRzIgorCitPRkZTRVRfTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgw
ZmY1ZTc1NSBdCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG9mZnNldHNM
aXN0KGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgc2l6ZXNMaXN0KGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFJldHVybnMgYSBsaXN0
IG9mIG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhlIEFTVC4gICAgICAgICAgICAgICAgICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBvZmZzZXRzTGlzdChhc3Qp
CisgIGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKK2VuZAorCitkZWYgc2l6ZXNM
aXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTaXplb2YpLnVuaXEuc29ydAorZW5kCisKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgo
YXN0LCBmaWxlKSAtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgIFtvZmZzZXRz
LCBpbmRleF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIFBhcnNlcyB0aGUgb2Zmc2V0cyBmcm9tIGEgZmlsZSBhbmQg
cmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgdGhlICMKKyMgaW5kZXggb2YgdGhlIGNvbmZp
Z3VyYXRpb24gdGhhdCBpcyB2YWxpZCBpbiB0aGlzIGJ1aWxkIHRhcmdldC4gICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIG9mZnNldHNBbmRDb25maWd1cmF0
aW9uSW5kZXgoZmlsZSkKKyAgaW5kZXggPSBuaWwKKyAgb2Zmc2V0cyA9IFtdCisgIGVuZGlhbm5l
c3NNYXJrZXJCeXRlcyA9IG5pbAorICAKKyAgZGVmIHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQor
ICAgIGJ5dGVzID0gW10KKyAgICA0LnRpbWVzIHsKKyAgICAgIGJ5dGVzIDw8IGlucC5nZXRieXRl
CisgICAgfQorICAgIAorICAgIGlmIGVuZGlhbm5lc3MgPT0gOmxpdHRsZQorICAgICAgIyBMaXR0
bGUgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMCB8CisgICAgICAgYnl0ZXNbMV0gPDwgOCB8
CisgICAgICAgYnl0ZXNbMl0gPDwgMTYgfAorICAgICAgIGJ5dGVzWzNdIDw8IDI0KQorICAgIGVs
c2UKKyAgICAgICMgQmlnIGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDI0IHwKKyAgICAgICBi
eXRlc1sxXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbMl0gPDwgOCB8CisgICAgICAgYnl0ZXNbM10g
PDwgMCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBbOmxpdHRsZSwgOmJpZ10uZWFjaCB7CisgICAg
fCBlbmRpYW5uZXNzIHwKKyAgICBtYWdpY0J5dGVzID0gW10KKyAgICBNQUdJQ19OVU1CRVJTLmVh
Y2ggeworICAgICAgfCBudW1iZXIgfAorICAgICAgY3VycmVudEJ5dGVzID0gW10KKyAgICAgIDQu
dGltZXMgeworICAgICAgICBjdXJyZW50Qnl0ZXMgPDwgKG51bWJlciAmIDB4ZmYpCisgICAgICAg
IG51bWJlciA+Pj0gOAorICAgICAgfQorICAgICAgaWYgZW5kaWFubmVzcyA9PSA6YmlnCisgICAg
ICAgIGN1cnJlbnRCeXRlcy5yZXZlcnNlIQorICAgICAgZW5kCisgICAgICBtYWdpY0J5dGVzICs9
IGN1cnJlbnRCeXRlcworICAgIH0KKyAgICAKKyAgICBGaWxlLm9wZW4oZmlsZSwgInIiKSB7Cisg
ICAgICB8IGlucCB8CisgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgbG9vcCB7CisgICAg
ICAgIGJ5dGUgPSBpbnAuZ2V0Ynl0ZQorICAgICAgICBicmVhayB1bmxlc3MgYnl0ZQorICAgICAg
ICBpZiBieXRlID09IG1hZ2ljQnl0ZXNbd2hlcmVJbk1hcmtlcl0KKyAgICAgICAgICB3aGVyZUlu
TWFya2VyICs9IDEKKyAgICAgICAgICBpZiB3aGVyZUluTWFya2VyID09IG1hZ2ljQnl0ZXMuc2l6
ZQorICAgICAgICAgICAgIyBXZSBoYXZlIGEgbWF0Y2ghIElmIHdlIGhhdmUgbm90IHlldCByZWFk
IHRoZSBlbmRpYW5uZXNzIG1hcmtlciBhbmQgaW5kZXgsCisgICAgICAgICAgICAjIHRoZW4gcmVh
ZCB0aG9zZSBub3c7IG90aGVyd2lzZSByZWFkIGFuIG9mZnNldC4KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgbm90IGluZGV4CisgICAgICAgICAgICAgIGluZGV4ID0gcmVhZEludChlbmRp
YW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIG9mZnNldHMgPDwg
cmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxz
ZQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICAgIGVuZAorICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBicmVhayBpZiBpbmRleAorICB9CisgIAorICByYWlzZSB1bmxlc3MgaW5k
ZXgKKyAgCisgIFtvZmZzZXRzLCBpbmRleF0KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkgLT4gW29mZnNl
dHMsIHNpemVzXSAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQnVpbGRzIGEg
bWFwcGluZyBiZXR3ZWVuIFN0cnVjdE9mZnNldCBub2RlcyBhbmQgdGhlaXIgdmFsdWVzLiAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGJ1aWxkT2Zmc2V0
c01hcChhc3QsIG9mZnNldHNMaXN0KQorICBvZmZzZXRzTWFwID0ge30KKyAgc2l6ZXNNYXAgPSB7
fQorICBhc3RPZmZzZXRzTGlzdCA9IG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0U2l6ZXNMaXN0ID0g
c2l6ZXNMaXN0KGFzdCkKKyAgcmFpc2UgdW5sZXNzIGFzdE9mZnNldHNMaXN0LnNpemUgKyBhc3RT
aXplc0xpc3Quc2l6ZSA9PSBvZmZzZXRzTGlzdC5zaXplCisgIG9mZnNldHNMaXN0KGFzdCkuZWFj
aF93aXRoX2luZGV4IHsKKyAgICB8IHN0cnVjdE9mZnNldCwgaW5kZXggfAorICAgIG9mZnNldHNN
YXBbc3RydWN0T2Zmc2V0XSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgc2l6ZXNMaXN0KGFz
dCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHNpemVvZiwgaW5kZXggfAorICAgIHNpemVzTWFw
W3NpemVvZl0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIFtvZmZzZXRzTWFwLCBzaXplc01h
cF0KK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIu
cmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2Vy
LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFy
c2VyLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiaW5zdHJ1Y3Rpb25z
IgorcmVxdWlyZSAicmVnaXN0ZXJzIgorCitjbGFzcyBUb2tlbgorICBhdHRyX3JlYWRlciA6Y29k
ZU9yaWdpbiwgOnN0cmluZworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RyaW5n
KQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICAgIEBzdHJpbmcgPSBzdHJpbmcKKyAg
ZW5kCisgIAorICBkZWYgPT0ob3RoZXIpCisgICAgaWYgb3RoZXIuaXNfYT8gVG9rZW4KKyAgICAg
IEBzdHJpbmcgPT0gb3RoZXIuc3RyaW5nCisgICAgZWxzZQorICAgICAgQHN0cmluZyA9PSBvdGhl
cgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiA9fihvdGhlcikKKyAgICBAc3RyaW5nID1+IG90
aGVyCisgIGVuZAorICAKKyAgZGVmIHRvX3MKKyAgICAiI3tAc3RyaW5nLmluc3BlY3R9IGF0IGxp
bmUgI3tjb2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkK
KyAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9
IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfTogI3tjb21tZW50
WzBdfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgVGhlIGxleGVyLiBUYWtlcyBhIHN0cmluZyBhbmQgcmV0dXJucyBhbiBhcnJheSBv
ZiB0b2tlbnMuICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KworZGVmIGxleChzdHIpCisgIHJlc3VsdCA9IFtdCisgIGxpbmVOdW1iZXIgPSAxCisgIHdoaWxl
IG5vdCBzdHIuZW1wdHk/CisgICAgY2FzZSBzdHIKKyAgICB3aGVuIC9cQVwjKFteXG5dKikvCisg
ICAgICAjIGNvbW1lbnQsIGlnbm9yZQorICAgIHdoZW4gL1xBXG4vCisgICAgICByZXN1bHQgPDwg
VG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAgbGluZU51bWJlciArPSAxCisgICAgd2hl
biAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXco
bGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFcLihbYS16QS1aMC05X10qKS8KKyAgICAgIHJl
c3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFfKFthLXpBLVow
LTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3
aGVuIC9cQShbIFx0XSspLworICAgICAgIyB3aGl0ZXNwYWNlLCBpZ25vcmUKKyAgICB3aGVuIC9c
QTB4KFswLTlhLWZBLUZdKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIs
ICQmLmhleC50b19zKQorICAgIHdoZW4gL1xBMChbMC03XSspLworICAgICAgcmVzdWx0IDw8IFRv
a2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5vY3QudG9fcykKKyAgICB3aGVuIC9cQShbMC05XSspLwor
ICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQTo6
LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9c
QVs6LFwoXClcW1xdPVwrXC0qXS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJl
ciwgJCYpCisgICAgZWxzZQorICAgICAgcmFpc2UgIkxleGVyIGVycm9yIGF0IGxpbmUgbnVtYmVy
ICN7bGluZU51bWJlcn0sIHVuZXhwZWN0ZWQgc2VxdWVuY2UgI3tzdHJbMC4uMjBdLmluc3BlY3R9
IgorICAgIGVuZAorICAgIHN0ciA9ICR+LnBvc3RfbWF0Y2gKKyAgZW5kCisgIHJlc3VsdAorZW5k
CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRva2VuIGlkZW50aWZpY2F0
aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBpc1JlZ2lzdGVyKHRva2VuKQor
ICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOCitlbmQKKworZGVmIGlzSW5zdHJ1Y3Rpb24odG9r
ZW4pCisgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNLZXl3b3Jk
KHRva2VuKQorICB0b2tlbiA9fiAvXEEoKHRydWUpfChmYWxzZSl8KGlmKXwodGhlbil8KGVsc2Up
fChlbHNpZil8KGVuZCl8KGFuZCl8KG9yKXwobm90KXwobWFjcm8pfChjb25zdCl8KHNpemVvZil8
KGVycm9yKSlcWi8gb3IKKyAgICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOIG9yCisgICAgdG9r
ZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0lkZW50aWZpZXIodG9rZW4p
CisgIHRva2VuID1+IC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopXFovIGFuZCBub3QgaXNLZXl3
b3JkKHRva2VuKQorZW5kCisKK2RlZiBpc0xhYmVsKHRva2VuKQorICB0b2tlbiA9fiAvXEFfKFth
LXpBLVowLTlfXSopXFovCitlbmQKKworZGVmIGlzTG9jYWxMYWJlbCh0b2tlbikKKyAgdG9rZW4g
PX4gL1xBXC4oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNWYXJpYWJsZSh0b2tlbikK
KyAgaXNJZGVudGlmaWVyKHRva2VuKSBvciBpc1JlZ2lzdGVyKHRva2VuKQorZW5kCisKK2RlZiBp
c0ludGVnZXIodG9rZW4pCisgIHRva2VuID1+IC9cQVswLTldLworZW5kCisKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBwYXJzZXIuIFRha2VzIGFuIGFycmF5IG9mIHRv
a2VucyBhbmQgcmV0dXJucyBhbiBBU1QuIE1ldGhvZHMgICAgICMKKyMgb3RoZXIgdGhhbiBwYXJz
ZSh0b2tlbnMpIGFyZSBub3QgZm9yIHB1YmxpYyBjb25zdW1wdGlvbi4gICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgUGFyc2VyCisgIGRlZiBp
bml0aWFsaXplKHRva2VucykKKyAgICBAdG9rZW5zID0gdG9rZW5zCisgICAgQGlkeCA9IDAKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBpZiBAdG9rZW5zW0BpZHhd
CisgICAgICBAdG9rZW5zW0BpZHhdLnBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgZWxzZQorICAg
ICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBv
ZiBmaWxlIgorICAgICAgZWxzZQorICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9m
IGZpbGU6ICN7Y29tbWVudFswXX0iCisgICAgICBlbmQKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgY29uc3VtZShyZWdleHApCisgICAgaWYgcmVnZXhwCisgICAgICBwYXJzZUVycm9yIHVubGVz
cyBAdG9rZW5zW0BpZHhdID1+IHJlZ2V4cAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIEBpZHggPT0gQHRva2Vucy5sZW5ndGgKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgZW5k
CisgIAorICBkZWYgc2tpcE5ld0xpbmUKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJcbiIK
KyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0
ZUF0b20KKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJub3QiCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIHBhcnNlUHJlZGljYXRlQXRvbQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisg
ICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByZXN1bHQgPSBwYXJzZVBy
ZWRpY2F0ZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAg
ICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAi
dHJ1ZSIKKyAgICAgIHJlc3VsdCA9IFRydWUuaW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZmFsc2UiCisgICAgICByZXN1
bHQgPSBGYWxzZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBl
bHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gU2V0dGluZy5m
b3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisg
ICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBbmQKKyAgICByZXN1bHQg
PSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJhbmQiCisg
ICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9
IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQXRvbQor
ICAgICAgcmVzdWx0ID0gQW5kLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVu
ZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZQorICAgICMgc29t
ZSBleGFtcGxlcyBvZiBwcmVjZWRlbmNlOgorICAgICMgbm90IGEgYW5kIGIgLT4gKG5vdCBhKSBh
bmQgYgorICAgICMgYSBhbmQgYiBvciBjIC0+IChhIGFuZCBiKSBvciBjCisgICAgIyBhIG9yIGIg
YW5kIGMgLT4gYSBvciAoYiBhbmQgYykKKyAgICAKKyAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0
ZUFuZAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIm9yIgorICAgICAgY29kZU9yaWdpbiA9
IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3
TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAgICAgcmVzdWx0ID0gT3Iu
bmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVu
ZAorICAKKyAgZGVmIHBhcnNlVmFyaWFibGUKKyAgICBpZiBpc1JlZ2lzdGVyKEB0b2tlbnNbQGlk
eF0pCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID1+IEZQUl9QQVRURVJOCisgICAgICAgIHJlc3Vs
dCA9IEZQUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vu
c1tAaWR4XS5zdHJpbmcpCisgICAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IFJlZ2lzdGVySUQu
Zm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQor
ICAgICAgZW5kCisgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICBy
ZXN1bHQgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vu
c1tAaWR4XS5zdHJpbmcpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICAg
IEBpZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUFkZHJlc3Mob2Zm
c2V0KQorICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgY29k
ZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIAorICAgICMgVGhyZWUgcG9z
c2liaWxpdGllczoKKyAgICAjIFtdICAgICAgIC0+IEFic29sdXRlQWRkcmVzcworICAgICMgW2Fd
ICAgICAgLT4gQWRkcmVzcworICAgICMgW2EsYl0gICAgLT4gQmFzZUluZGV4IHdpdGggc2NhbGUg
PSAxCisgICAgIyBbYSxiLGNdICAtPiBCYXNlSW5kZXgKKyAgICAKKyAgICBAaWR4ICs9IDEKKyAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXR1cm4g
QWJzb2x1dGVBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXQpCisgICAgZW5kCisgICAgYSA9
IHBhcnNlVmFyaWFibGUKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgcmVzdWx0
ID0gQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgYSwgb2Zmc2V0KQorICAgIGVsc2UKKyAgICAgIHBh
cnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIGIgPSBwYXJzZVZhcmlhYmxlCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAg
ICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIDEsIG9mZnNldCkK
KyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAi
LCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIFsiMSIsICIy
IiwgIjQiLCAiOCJdLm1lbWJlcj8gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgYyA9IEB0
b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAgIHJlc3VsdCA9IEJhc2VJ
bmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgYywgb2Zmc2V0KQorICAgICAgZW5kCisgICAgZW5k
CisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQ29sb25D
b2xvbgorICAgIHNraXBOZXdMaW5lCisgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbgorICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhd
CisgICAgbmFtZXMgPSBbQHRva2Vuc1tAaWR4XS5zdHJpbmddCisgICAgQGlkeCArPSAxCisgICAg
d2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiOjoiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICBuYW1lcyA8PCBA
dG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgICAgcmFpc2Ug
aWYgbmFtZXMuZW1wdHk/CisgICAgW2NvZGVPcmlnaW4sIG5hbWVzXQorICBlbmQKKyAgCisgIGRl
ZiBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgc2tpcE5ld0xpbmUKKyAgICBpZiBAdG9rZW5zW0Bp
ZHhdID09ICItIgorICAgICAgQGlkeCArPSAxCisgICAgICBOZWdJbW1lZGlhdGUubmV3KEB0b2tl
bnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHBhcnNlRXhwcmVzc2lvbkF0b20pCisgICAgZWxzaWYg
QHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0ID0gcGFy
c2VFeHByZXNzaW9uCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIp
IgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0ludGVnZXIgQHRv
a2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kpCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICBj
b2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAgaWYgbmFtZXMuc2l6ZSA+
IDEKKyAgICAgICAgU3RydWN0T2Zmc2V0LmZvckZpZWxkKGNvZGVPcmlnaW4sIG5hbWVzWzAuLi0y
XS5qb2luKCc6OicpLCBuYW1lc1stMV0pCisgICAgICBlbHNlCisgICAgICAgIFZhcmlhYmxlLmZv
ck5hbWUoY29kZU9yaWdpbiwgbmFtZXNbMF0pCisgICAgICBlbmQKKyAgICBlbHNpZiBpc1JlZ2lz
dGVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHBhcnNlVmFyaWFibGUKKyAgICBlbHNpZiBAdG9rZW5z
W0BpZHhdID09ICJzaXplb2YiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIGNvZGVPcmlnaW4sIG5h
bWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBTaXplb2YuZm9yTmFtZShjb2RlT3JpZ2luLCBu
YW1lcy5qb2luKCc6OicpKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uTXVsCisgICAgc2tpcE5ld0xpbmUKKyAgICBy
ZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAi
KiIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICByZXN1bHQgPSBNdWxJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3Jp
Z2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbkF0b20pCisgICAgICBlbHNlCisgICAgICAgIHJh
aXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgY291
bGRCZUV4cHJlc3Npb24KKyAgICBAdG9rZW5zW0BpZHhdID09ICItIiBvciBAdG9rZW5zW0BpZHhd
ID09ICJzaXplb2YiIG9yIGlzSW50ZWdlcihAdG9rZW5zW0BpZHhdKSBvciBpc1ZhcmlhYmxlKEB0
b2tlbnNbQGlkeF0pCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbgorICAgIHNraXBO
ZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uTXVsCisgICAgd2hpbGUgQHRva2Vu
c1tAaWR4XSA9PSAiKyIgb3IgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIGlmIEB0b2tlbnNb
QGlkeF0gPT0gIisiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBBZGRJbW1l
ZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhw
cmVzc2lvbk11bCkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICByZXN1bHQgPSBTdWJJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHgg
LSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkKKyAgICAgIGVsc2UK
KyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAg
CisgIGRlZiBwYXJzZU9wZXJhbmQoY29tbWVudCkKKyAgICBpZiBjb3VsZEJlRXhwcmVzc2lvbgor
ICAgICAgZXhwciA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
WyIKKyAgICAgICAgcGFyc2VBZGRyZXNzKGV4cHIpCisgICAgICBlbHNlCisgICAgICAgIGV4cHIK
KyAgICAgIGVuZAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICBwYXJzZUFk
ZHJlc3MoSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIDApKQorICAgIGVs
c2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTGFiZWxSZWZlcmVuY2Uu
bmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcmVzdWx0CisgICAgZWxzaWYgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJl
c3VsdCA9IExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwg
TG9jYWxMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4
XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAg
ICBwYXJzZUVycm9yKGNvbW1lbnQpCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlTWFj
cm9WYXJpYWJsZXMKKyAgICBza2lwTmV3TGluZQorICAgIGNvbnN1bWUoL1xBXChcWi8pCisgICAg
dmFyaWFibGVzID0gW10KKyAgICBsb29wIHsKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICBpZiBA
dG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgYnJlYWsKKyAg
ICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICB2YXJpYWJsZXMg
PDwgVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlk
eF0uc3RyaW5nKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
ICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvcgorICAgICAgICBlbmQK
KyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvcgorICAgICAgZW5kCisgICAgfQorICAgIHZh
cmlhYmxlcworICBlbmQKKyAgCisgIGRlZiBwYXJzZVNlcXVlbmNlKGZpbmFsLCBjb21tZW50KQor
ICAgIGZpcnN0Q29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIGxpc3Qg
PSBbXQorICAgIGxvb3AgeworICAgICAgaWYgKEBpZHggPT0gQHRva2Vucy5sZW5ndGggYW5kIG5v
dCBmaW5hbCkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICBi
cmVhaworICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICMgaWdub3Jl
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiY29uc3Qi
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc1ZhcmlhYmxl
IEB0b2tlbnNbQGlkeF0KKyAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI9IgorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFsdWUgPSBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lk
ZSBvZiBjb25zdCAje3ZhcmlhYmxlLm5hbWV9IikKKyAgICAgICAgbGlzdCA8PCBDb25zdERlY2wu
bmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgICAgZWxz
aWYgQHRva2Vuc1tAaWR4XSA9PSAiZXJyb3IiCisgICAgICAgIGxpc3QgPDwgRXJyb3IubmV3KEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbikKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICJpZiIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAg
ICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4p
fChcbikpXFovKQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBpZlRoZW5FbHNlID0gSWZU
aGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGljYXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxz
ZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5k
dW1wfVwiIikpCisgICAgICAgIGxpc3QgPDwgaWZUaGVuRWxzZQorICAgICAgICB3aGlsZSBAdG9r
ZW5zW0BpZHhdID09ICJlbHNpZiIKKyAgICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgc2tpcE5ld0xpbmUK
KyAgICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgICAgIGNvbnN1bWUo
L1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIGVs
c2VDYXNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGljYXRlLCBwYXJzZVNlcXVl
bmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAj
e3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IGVs
c2VDYXNlCisgICAgICAgICAgaWZUaGVuRWxzZSA9IGVsc2VDYXNlCisgICAgICAgIGVuZAorICAg
ICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJlbHNlIgorICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndo
aWxlIGluc2lkZSBvZiBlbHNlIGNhc2UgZm9yIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpCisg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yIHVu
bGVzcyBAdG9rZW5zW0BpZHhdID09ICJlbmQiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
IGVuZAorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAgICAgIGNvZGVP
cmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIHNraXBOZXdMaW5lCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllcihA
dG9rZW5zW0BpZHhdKQorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAg
ICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIG1h
Y3JvICN7bmFtZX0iKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgbGlzdCA8PCBNYWNyby5u
ZXcoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgICAgZWxzaWYgaXNJbnN0
cnVjdGlvbiBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6
ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICAgICMgWmVy
byBvcGVyYW5kIGluc3RydWN0aW9uLCBhbmQgaXQncyB0aGUgbGFzdCBvbmUuCisgICAgICAgICAg
bGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAg
YnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgIyBa
ZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAjIEl0J3MgZGVmaW5pdGVseSBhbiBpbnN0cnVjdGlvbiwgYW5kIGl0IGhh
cyBhdCBsZWFzdCBvbmUgb3BlcmFuZC4KKyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAg
ICAgZW5kT2ZTZXF1ZW5jZSA9IGZhbHNlCisgICAgICAgICAgbG9vcCB7CisgICAgICAgICAgICBv
cGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBpbnN0cnVjdGlvbiAje25h
bWV9IikKKyAgICAgICAgICAgIGlmIChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXpl
KSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgICAgICAgICMg
VGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24gYW5kIG9mIHRoZSBzZXF1ZW5jZS4KKyAgICAgICAg
ICAgICAgZW5kT2ZTZXF1ZW5jZSA9IHRydWUKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAg
ICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAgICMgSGFzIGFub3Ro
ZXIgb3BlcmFuZC4KKyAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0
cnVjdGlvbi4KKyAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIGEgY29t
bWEsIG5ld2xpbmUsIG9yICN7ZmluYWx9IGFmdGVyICN7b3BlcmFuZHMubGFzdC5kdW1wfSIpCisg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICB9CisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgICAgaWYgZW5kT2ZTZXF1
ZW5jZQorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAg
ICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0g
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0
cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIK
KyAgICAgICAgICAjIE1hY3JvIGludm9jYXRpb24uCisgICAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgaWYg
QHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAg
ICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAgICAgICAgICAjIEl0
J3MgYSBtYWNybyBsYW1iZGEhCisgICAgICAgICAgICAgICAgY29kZU9yaWdpbklubmVyID0gQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgICAgICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICAgICAgICAg
IGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBhbm9ueW1v
dXMgbWFjcm8gcGFzc2VkIGFzIGFyZ3VtZW50IHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IE1hY3JvLm5ldyhjb2RlT3Jp
Z2luSW5uZXIsIG5pbCwgdmFyaWFibGVzLCBib2R5KQorICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgbWFj
cm8gY2FsbCB0byAje25hbWV9IikKKyAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgIHNr
aXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IgIlVuZXhwZWN0ZWQg
I3tAdG9rZW5zW0BpZHhdLnN0cmluZy5pbnNwZWN0fSB3aGlsZSBwYXJzaW5nIGludm9jYXRpb24g
b2YgbWFjcm8gI3tuYW1lfSIKKyAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICB9CisgICAg
ICAgICAgZW5kCisgICAgICAgICAgbGlzdCA8PCBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIG5h
bWUsIG9wZXJhbmRzKQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0
ZWQgXCIoXCIgYWZ0ZXIgI3tuYW1lfSIKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBpc0xhYmVs
IEB0b2tlbnNbQGlkeF0gb3IgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29k
ZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vu
c1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIEB0b2tlbnNbQGlkeF0gPT0gIjoiCisgICAgICAgICMgSXQncyBhIGxhYmVsLgorICAgICAg
ICBpZiBpc0xhYmVsIG5hbWUKKyAgICAgICAgICBsaXN0IDw8IExhYmVsLmZvck5hbWUoY29kZU9y
aWdpbiwgbmFtZSkKKyAgICAgICAgZWxzZQorICAgICAgICAgIGxpc3QgPDwgTG9jYWxMYWJlbC5m
b3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVuZAorICAgICAgICBAaWR4ICs9IDEK
KyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0aW5nIHRlcm1pbmFsICN7Zmlu
YWx9ICN7Y29tbWVudH0iCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGZpcnN0
Q29kZU9yaWdpbiwgbGlzdCkKKyAgZW5kCitlbmQKKworZGVmIHBhcnNlKHRva2VucykKKyAgcGFy
c2VyID0gUGFyc2VyLm5ldyh0b2tlbnMpCisgIHBhcnNlci5wYXJzZVNlcXVlbmNlKG5pbCwgIiIp
CitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJz
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lz
dGVycy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3JlZ2lzdGVycy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworR1BSUyA9CisgIFsKKyAgICJ0MCIsCisgICAidDEi
LAorICAgInQyIiwKKyAgICJ0MyIsCisgICAidDQiLAorICAgImNmciIsCisgICAiYTAiLAorICAg
ImExIiwKKyAgICJyMCIsCisgICAicjEiLAorICAgInNwIgorICBdCisKK0ZQUlMgPQorICBbCisg
ICAiZnQwIiwKKyAgICJmdDEiLAorICAgImZ0MiIsCisgICAiZnQzIiwKKyAgICJmdDQiLAorICAg
ImZ0NSIsCisgICAiZmEwIiwKKyAgICJmYTEiLAorICAgImZhMiIsCisgICAiZmEzIiwKKyAgICJm
ciIKKyAgXQorCitSRUdJU1RFUlMgPSBHUFJTICsgRlBSUworCitHUFJfUEFUVEVSTiA9IFJlZ2V4
cC5uZXcoJ1xcQSgoJyArIEdQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQorRlBSX1BBVFRFUk4g
PSBSZWdleHAubmV3KCdcXEEoKCcgKyBGUFJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKKworUkVH
SVNURVJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIFJFR0lTVEVSUy5qb2luKCcpfCgn
KSArICcpKVxcWicpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0
aW5ncy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9z
ZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyMSBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiYmFj
a2VuZHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhh
c3QpIC0+IHNldHRpbmdzQ29tYmlhdGlvbnMgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBDb21wdXRlcyBhbiBhcnJheSBvZiBzZXR0aW5ncyBtYXBzLCB3aGVyZSBhIHNldHRpbmdz
IG1hcCBjb25zdGl0dXRlcyAjCisjIGEgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFzc2VtYmx5IGNv
ZGUgYmVpbmcgZ2VuZXJhdGVkLiBUaGUgbWFwICAgICAgICMKKyMgY29udGFpbnMga2V5IHZhbHVl
IHBhaXJzIHdoZXJlIGtleXMgYXJlIHNldHRpbmdzIG5hbWVzIChzdHJpbmdzKSBhbmQgIworIyB0
aGUgdmFsdWVzIGFyZSBib29sZWFucyAodHJ1ZSBmb3IgZW5hYmxlZCwgZmFsc2UgZm9yIGRpc2Fi
bGVkKS4gICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgY29t
cHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBb
XQorICAKKyAgZGVmIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbWFw
U29GYXIsIHJlbWFpbmluZykKKyAgICBpZiByZW1haW5pbmcuZW1wdHk/CisgICAgICBzZXR0aW5n
c0NvbWJpbmF0aW9ucyA8PCBtYXBTb0ZhcgorICAgICAgcmV0dXJuCisgICAgZW5kCisgICAgCisg
ICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSB0cnVl
CisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJl
bWFpbmluZ1sxLi4tMV0pCisgICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3
TWFwW3JlbWFpbmluZ1swXV0gPSBmYWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5n
c0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICBlbmQKKyAgCisgIHNl
dHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywge30sIChhc3QuZmlsdGVyKFNl
dHRpbmcpLnVuaXEuY29sbGVjdHt8dnwgdi5uYW1lfSArIFsiWDg2IiwgIkFSTXY3Il0pLnVuaXEp
CisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucworZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgeyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywg
bG93TGV2ZWxBU1QsIGJhY2tlbmQgfCAuLi4gfSAgICAgICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIERldGVybWluZXMgaWYgdGhlIHNldHRpbmdzIGNvbWJpbmF0aW9uIGlzIHZhbGlk
LCBhbmQgaWYgc28sIGNhbGxzICAgICMKKyMgdGhlIGJsb2NrIHdpdGggdGhlIGluZm9ybWF0aW9u
IHlvdSBuZWVkIHRvIGdlbmVyYXRlIGNvZGUuICAgICAgICAgICAgIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFz
dCkKKyAgIyBDaGVjayB3aGljaCBhcmNoaXRlY3R1cmVzIHRoaXMgY29tYmluYXRvciBjbGFpbXMg
dG8gc3VwcG9ydC4KKyAgbnVtQ2xhaW1lZEJhY2tlbmRzID0gMAorICBzZWxlY3RlZEJhY2tlbmQg
PSBuaWwKKyAgQkFDS0VORFMuZWFjaCB7CisgICAgfCBiYWNrZW5kIHwKKyAgICBpc1N1cHBvcnRl
ZCA9IGNvbmNyZXRlU2V0dGluZ3NbYmFja2VuZF0KKyAgICByYWlzZSB1bmxlc3MgaXNTdXBwb3J0
ZWQgIT0gbmlsCisgICAgbnVtQ2xhaW1lZEJhY2tlbmRzICs9IGlmIGlzU3VwcG9ydGVkIHRoZW4g
MSBlbHNlIDAgZW5kCisgICAgaWYgaXNTdXBwb3J0ZWQKKyAgICAgIHNlbGVjdGVkQmFja2VuZCA9
IGJhY2tlbmQKKyAgICBlbmQKKyAgfQorICAKKyAgcmV0dXJuIGlmIG51bUNsYWltZWRCYWNrZW5k
cyA+IDEKKyAgCisgICMgUmVzb2x2ZSB0aGUgQVNUIGRvd24gdG8gYSBsb3ctbGV2ZWwgZm9ybSAo
bm8gbWFjcm9zIG9yIGNvbmRpdGlvbmFscykuCisgIGxvd0xldmVsQVNUID0gYXN0LnJlc29sdmVT
ZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzKQorICAKKyAgeWllbGQgY29uY3JldGVTZXR0aW5ncywg
bG93TGV2ZWxBU1QsIHNlbGVjdGVkQmFja2VuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywg
YXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCBzZXR0aW5nc0Nv
bWJpbmF0aW9ucykgeyAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBi
YWNrZW5kLCBpbmRleCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIEV4ZWN1dGVzIHRoZSBnaXZlbiBibG9jayBmb3IgZWFjaCB2YWxpZCBzZXR0aW5ncyBjb21i
aW5hdGlvbiBpbiB0aGUgICMKKyMgc2V0dGluZ3MgbWFwLiBUaGUgYXN0IHBhc3NlZCBpbnRvIHRo
ZSBibG9jayBpcyByZXNvbHZlZCAgICAgICAgICAgICAgIworIyAoYXN0LnJlc29sdmUpIGFnYWlu
c3QgdGhlIHNldHRpbmdzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgVGhlIGZpcnN0IGZvcm0gd2lsbCBjYWxsIGNvbXB1dGVTZXR0aW5nc0Nv
bWJpbmF0aW9ucyhhc3QpIGZvciB5b3UuICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKworZGVmIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCAqb3B0aW9u
YWxTZXR0aW5nc0NvbWJpbmF0aW9ucykKKyAgcmFpc2UgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJp
bmF0aW9ucy5zaXplID4gMQorICAKKyAgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucy5l
bXB0eT8KKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0
aW9ucyhhc3QpCisgIGVsc2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IG9wdGlvbmFsU2V0
dGluZ3NDb21iaWF0aW9uc1swXQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zLmVh
Y2hfd2l0aF9pbmRleCB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBpbmRleCB8CisgICAgZm9y
U2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7CisgICAgICB8IGNvbmNyZXRlU2V0dGlu
Z3NfLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdz
LCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICB9CisgIH0KK2VuZAorCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0
aW5ncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgUmV0dXJucyB0aGUgQysrIGNvZGUgdXNlZCB0byB0ZXN0IGlmIHdlIGFyZSBpbiBhIGNv
bmZpZ3VyYXRpb24gdGhhdCAgIworIyBjb3JyZXNwb25kcyB0byB0aGUgZ2l2ZW4gY29uY3JldGUg
c2V0dGluZ3MuICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworCitkZWYgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisg
ICIjaWYgIiArIGNvbmNyZXRlU2V0dGluZ3MudG9fYS5jb2xsZWN0eworICAgIHwgcGFpciB8Cisg
ICAgKGlmIHBhaXJbMV0KKyAgICAgICAiIgorICAgICBlbHNlCisgICAgICAgIiEiCisgICAgIGVu
ZCkgKyAiT0ZGTElORV9BU01fIiArIHBhaXJbMF0KKyAgfS5qb2luKCIgJiYgIikKK2VuZAorCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBpc0FTVEVycm9uZW91cyhhc3QpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgVGVzdHMgdG8gc2VlIGlmIHRoZSBBU1QgY2xhaW1zIHRoYXQgdGhlcmUgaXMg
YW4gZXJyb3IgLSBpLmUuIGlmIHRoZSAgIworIyB1c2VyJ3MgY29kZSwgYWZ0ZXIgc2V0dGluZ3Mg
cmVzb2x1dGlvbiwgaGFzIEVycm9yIG5vZGVzLiAgICAgICAgICAgICAjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICBub3QgYXN0
LmZpbHRlcihFcnJvcikuZW1wdHk/CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEVtaXRzIGEgY2hlY2sg
dGhhdCBhc3NlcnRzIHRoYXQgd2UncmUgdXNpbmcgdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24uICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBhc3NlcnRDb25maWd1cmF0
aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgIHB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0
dGluZ3MpCisgIHB1dHMgIiNlbHNlIgorICBwdXRzICIjZXJyb3IgXCJDb25maWd1cmF0aW9uIG1p
c21hdGNoLlwiIgorICBwdXRzICIjZW5kaWYiCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywg
YXN0LCBiYWNrZW5kKSB7ICAgICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBh
c3QsIGJhY2tlbmQgfCAuLi4gfSAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgRW1pdHMgYWxsIHJlbGV2YW50IGd1YXJkcyB0byBzZWUgaWYgdGhlIGNvbmZpZ3Vy
YXRpb24gaG9sZHMgYW5kICAgICAgIworIyBjYWxscyB0aGUgYmxvY2sgaWYgdGhlIGNvbmZpZ3Vy
YXRpb24gaXMgbm90IGVycm9uZW91cy4gICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworCitkZWYgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVT
ZXR0aW5ncywgYXN0LCBiYWNrZW5kKQorICBwdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNl
dHRpbmdzKQorICAKKyAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAgIHB1dHMgIiNlcnJvciBc
IkludmFsaWQgY29uZmlndXJhdGlvbi5cIiIKKyAgZWxzaWYgbm90IFdPUktJTkdfQkFDS0VORFMu
aW5jbHVkZT8gYmFja2VuZAorICAgIHB1dHMgIiNlcnJvciBcIlRoaXMgYmFja2VuZCBpcyBub3Qg
c3VwcG9ydGVkIHlldC5cIiIKKyAgZWxzZQorICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGFz
dCwgYmFja2VuZAorICBlbmQKKyAgCisgIHB1dHMgIiNlbmRpZiIKK2VuZAorCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0
KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRl
U2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAgICAgICAgICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBFbWl0cyBndWFyZCBjb2RlcyBmb3IgYWxsIHZhbGlkIGNvbmZp
Z3VyYXRpb25zLCBhbmQgY2FsbHMgdGhlIGJsb2NrICAjCisjIGZvciB0aG9zZSBjb25maWd1cmF0
aW9ucyB0aGF0IGFyZSB2YWxpZCBhbmQgbm90IGVycm9uZW91cy4gICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBlbWl0Q29kZUluQWxsQ29uZmlndXJh
dGlvbnMoYXN0KQorICBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworICAg
IHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICBw
dXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAgIHlpZWxkIGNvbmNyZXRl
U2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgIHB1dHMgIiNlbmRpZiIK
KyAgfQorZW5kCisKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90
cmFuc2Zvcm0ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vdHJhbnNmb3JtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vdHJhbnNmb3JtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1MiBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorCisjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IElmVGhl
bkVsc2Ugbm9kZXMgYnkgICAgICAgIworIyBzdWJzdGl0dXRpbmcgY29uY3JldGUgYm9vbGVhbiB2
YWx1ZXMgZm9yIGVhY2ggU2V0dGluZy4gICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5y
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVl
CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAor
CitjbGFzcyBGYWxzZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYK
KyAgZW5kCitlbmQKKworY2xhc3MgU2V0dGluZworICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRp
bmdzKQorICAgIHNldHRpbmdzW0BuYW1lXS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5k
CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykudmFsdWUgYW5kIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
LnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgT3IKKyAgZGVmIHJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1
ZSBvciBAcmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVu
ZAorZW5kCisKK2NsYXNzIE5vdAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAg
IChub3QgQGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBl
bmQKK2VuZAorCitjbGFzcyBJZlRoZW5FbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgaWYgQHByZWRpY2F0ZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlCisg
ICAgICBAdGhlbkNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVsc2UKKyAgICAg
IEBlbHNlQ2FzZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZW5kCisgIGVuZAorZW5k
CisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAg
bmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaXRl
bSA9IGl0ZW0ucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgaWYgaXRlbS5pc19hPyBT
ZXF1ZW5jZQorICAgICAgICBuZXdMaXN0ICs9IGl0ZW0ubGlzdAorICAgICAgZWxzZQorICAgICAg
ICBuZXdMaXN0IDw8IGl0ZW0KKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29k
ZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgbm9kZS5kZW1hY3JvaWZ5KG1hY3JvcykgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnN1YnN0aXR1dGUobWFwcGluZykgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgZGVtYWNyb2lmeSgpIGNvbnN0cnVjdHMgYSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2
ZSBhbnkgTWFjcm8gICAgICAgIworIyBub2Rlcywgd2hpbGUgc3Vic3RpdHV0ZSgpIHJlcGxhY2Vz
IFZhcmlhYmxlIG5vZGVzIHdpdGggdGhlIGdpdmVuICAgICAjCisjIG5vZGVzIGluIHRoZSBtYXBw
aW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIGRlbWFj
cm9pZnkobWFjcm9zKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAg
Y2hpbGQuZGVtYWNyb2lmeShtYWNyb3MpCisgICAgfQorICBlbmQKKyAgCisgIGRlZiBzdWJzdGl0
dXRlKG1hcHBpbmcpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBj
aGlsZC5zdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgfQorICBlbmQKKyAgCisgIGRlZiBzdWJzdGl0
dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8Cisg
ICAgICBjaGlsZC5zdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAor
CitjbGFzcyBNYWNybworICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG15TWFwcGluZyA9
IHt9CisgICAgbWFwcGluZy5lYWNoX3BhaXIgeworICAgICAgfCBrZXksIHZhbHVlIHwKKyAgICAg
IHVubGVzcyBAdmFyaWFibGVzLmluY2x1ZGU/IGtleQorICAgICAgICBteU1hcHBpbmdba2V5XSA9
IHZhbHVlCisgICAgICBlbmQKKyAgICB9CisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGls
ZCB8CisgICAgICBjaGlsZC5zdWJzdGl0dXRlKG15TWFwcGluZykKKyAgICB9CisgIGVuZAorZW5k
CisKK2NsYXNzIFZhcmlhYmxlCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgaWYgbWFw
cGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAg
ICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbAorICBkZWYgc3Vic3RpdHV0ZUxh
YmVscyhtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2VsZl0K
KyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVl
bmNlCisgIGRlZiBzdWJzdGl0dXRlKGNvbnN0YW50cykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBt
eUNvbnN0YW50cyA9IGNvbnN0YW50cy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRl
bSB8CisgICAgICBpZiBpdGVtLmlzX2E/IENvbnN0RGVjbAorICAgICAgICBteUNvbnN0YW50c1tp
dGVtLnZhcmlhYmxlXSA9IGl0ZW0udmFsdWUuc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAg
IGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisg
ICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisg
IGVuZAorICAKKyAgZGVmIHJlbmFtZUxhYmVscyhjb21tZW50KQorICAgIG1hcHBpbmcgPSB7fQor
ICAgIAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNf
YT8gTG9jYWxMYWJlbAorICAgICAgICBtYXBwaW5nW2l0ZW1dID0gTG9jYWxMYWJlbC51bmlxdWUo
aWYgY29tbWVudCB0aGVuIGNvbW1lbnQgKyAiXyIgZWxzZSAiIiBlbmQgKyBpdGVtLmNsZWFuTmFt
ZSkKKyAgICAgIGVuZAorICAgIH0KKyAgICAKKyAgICBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcp
CisgIGVuZAorICAKKyAgZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAgIG15TWFjcm9zID0gbWFj
cm9zLmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0u
aXNfYT8gTWFjcm8KKyAgICAgICAgbXlNYWNyb3NbaXRlbS5uYW1lXSA9IGl0ZW0KKyAgICAgIGVu
ZAorICAgIH0KKyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRl
bSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgICMgSWdub3JlLgorICAgICAg
ZWxzaWYgaXRlbS5pc19hPyBNYWNyb0NhbGwKKyAgICAgICAgbWFwcGluZyA9IHt9CisgICAgICAg
IG15TXlNYWNyb3MgPSBteU1hY3Jvcy5kdXAKKyAgICAgICAgcmFpc2UgIkNvdWxkIG5vdCBmaW5k
IG1hY3JvICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBt
eU1hY3Jvc1tpdGVtLm5hbWVdCisgICAgICAgIHJhaXNlICJBcmd1bWVudCBjb3VudCBtaXNtYXRj
aCBmb3IgY2FsbCB0byAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1
bmxlc3MgaXRlbS5vcGVyYW5kcy5zaXplID09IG15TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVz
LnNpemUKKyAgICAgICAgaXRlbS5vcGVyYW5kcy5zaXplLnRpbWVzIHsKKyAgICAgICAgICB8IGlk
eCB8CisgICAgICAgICAgaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IFZhcmlhYmxlIGFuZCBt
eU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG15TXlNYWNyb3Nb
bXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG15TWFjcm9zW2l0ZW0u
b3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5h
bWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxzaWYgaXRlbS5vcGVy
YW5kc1tpZHhdLmlzX2E/IE1hY3JvCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0
ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBpdGVtLm9wZXJhbmRzW2lkeF0KKyAgICAg
ICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9
IG5pbAorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRl
bS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBuaWwKKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNy
b3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBpdGVtLm9wZXJhbmRzW2lkeF0KKyAgICAg
ICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBuZXdMaXN0ICs9IG15TWFjcm9zW2l0ZW0ubmFt
ZV0uYm9keS5zdWJzdGl0dXRlKG1hcHBpbmcpLmRlbWFjcm9pZnkobXlNeU1hY3JvcykucmVuYW1l
TGFiZWxzKGl0ZW0ubmFtZSkubGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0
ZW0uZGVtYWNyb2lmeShteU1hY3JvcykKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5u
ZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkuc3Vic3RpdHV0ZSh7fSkKKyAgZW5kCitlbmQKKworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZlT2Zmc2V0cyhvZmZz
ZXRzLCBzaXplcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBoYXMgb2Zmc2V0IHZhbHVlcyBpbnN0
ZWFkIG9mIHN5bWJvbGljICAgICAgICMKKyMgb2Zmc2V0cy4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zm
c2V0cywgc2l6ZXMpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBj
aGlsZC5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICB9CisgIGVuZAorZW5kCisK
K2NsYXNzIFN0cnVjdE9mZnNldAorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMp
CisgICAgaWYgb2Zmc2V0c1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBv
ZmZzZXRzW3NlbGZdKQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQK
KworY2xhc3MgU2l6ZW9mCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAg
ICBpZiBzaXplc1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBzaXplc1tz
ZWxmXSkKKyAgICBlbHNlCisgICAgICBwdXRzICJDb3VsZCBub3QgZmluZCAje3NlbGYuaW5zcGVj
dH0gaW4gI3tzaXplcy5rZXlzLmluc3BlY3R9IgorICAgICAgcHV0cyAic2l6ZXMgPSAje3NpemVz
Lmluc3BlY3R9IgorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLmZvbGQgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgUmVzb2x2ZSBjb25zdGFudCByZWZlcmVuY2VzIGFuZCBjb21wdXRlIGFyaXRobWV0aWMgZXhw
cmVzc2lvbnMuICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xh
c3MgTm9kZQorICBkZWYgZm9sZAorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAor
ICAgICAgY2hpbGQuZm9sZAorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRl
cworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdo
dC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAg
IHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRl
Lm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSArIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQK
KworY2xhc3MgU3ViSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9s
ZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0
LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1t
ZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAtIEByaWdo
dC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcworICBkZWYgZm9sZAor
ICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0
dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVu
bGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2lu
LCBAbGVmdC52YWx1ZSAqIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1t
ZWRpYXRlCisgIGRlZiBmb2xkCisgICAgQGNoaWxkID0gQGNoaWxkLmZvbGQKKyAgICByZXR1cm4g
c2VsZiB1bmxlc3MgQGNoaWxkLmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29k
ZU9yaWdpbiwgLUBjaGlsZC52YWx1ZSkKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZlQWZ0ZXJTZXR0aW5ncyhvZmZzZXRzLCBzaXpl
cykgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbXBp
bGUgYXNzZW1ibHkgYWdhaW5zdCBhIHNldCBvZiBvZmZzZXRzLiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUK
KyAgZGVmIHJlc29sdmUob2Zmc2V0cywgc2l6ZXMpCisgICAgZGVtYWNyb2lmeSh7fSkucmVzb2x2
ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpLmZvbGQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
NzMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2NsYXNzIFJlZ2lz
dGVySUQKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAi
dDAiLCAiYTAiLCAicjAiLCAidDEiLCAiYTEiLCAicjEiLCAidDIiLCAidDMiCisgICAgICB0cnVl
CisgICAgd2hlbiAidDQiLCAiY2ZyIgorICAgICAgZmFsc2UKKyAgICBlbHNlCisgICAgICByYWlz
ZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgY2FzZSBu
YW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdo
ZW4gOmJ5dGUKKyAgICAgICAgIiVhbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVheCIK
KyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVheCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFp
c2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQxIiwgImExIiwgInIxIgorICAgICAgY2FzZSBraW5k
CisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlZGwiCisgICAgICB3aGVuIDpoYWxmCisgICAg
ICAgICIlZHgiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlZHgiCisgICAgICBlbHNlCisg
ICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MiIKKyAgICAgIGNhc2Uga2luZAor
ICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWNsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAg
ICAiJWN4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWN4IgorICAgICAgZWxzZQorICAg
ICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDMiCisgICAgICBjYXNlIGtpbmQKKyAg
ICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVibCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAg
IiVieCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVieCIKKyAgICAgIGVsc2UKKyAgICAg
ICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQ0IgorICAgICAgY2FzZSBraW5kCisgICAg
ICB3aGVuIDpieXRlCisgICAgICAgICIlc2lsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAi
JXNpIgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZXNpIgorICAgICAgZWxzZQorICAgICAg
ICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAiY2ZyIgorICAgICAgY2FzZSBraW5kCisgICAg
ICB3aGVuIDpieXRlCisgICAgICAgICIlZGlsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAi
JWRpIgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWRpIgorICAgICAgZWxzZQorICAgICAg
ICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAic3AiCisgICAgICBjYXNlIGtpbmQKKyAgICAg
IHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzcGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIl
c3AiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlc3AiCisgICAgICBlbHNlCisgICAgICAg
IHJhaXNlCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQK
KyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9Igor
ICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkK
KyAgICByYWlzZSB1bmxlc3Mga2luZCA9PSA6ZG91YmxlCisgICAgY2FzZSBuYW1lCisgICAgd2hl
biAiZnQwIiwgImZhMCIsICJmciIKKyAgICAgICIleG1tMCIKKyAgICB3aGVuICJmdDEiLCAiZmEx
IgorICAgICAgIiV4bW0xIgorICAgIHdoZW4gImZ0MiIsICJmYTIiCisgICAgICAiJXhtbTIiCisg
ICAgd2hlbiAiZnQzIiwgImZhMyIKKyAgICAgICIleG1tMyIKKyAgICB3aGVuICJmdDQiCisgICAg
ICAiJXhtbTQiCisgICAgd2hlbiAiZnQ1IgorICAgICAgIiV4bW01IgorICAgIGVsc2UKKyAgICAg
IHJhaXNlCisgICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAi
KiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBk
ZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIkI3t2YWx1ZX0iCisgIGVuZAorICBkZWYgeDg2Q2Fs
bE9wZXJhbmQoa2luZCkKKyAgICAiI3t2YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJl
c3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVm
IHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5k
KDppbnQpfSkiCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2
T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgc3Vw
cG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChr
aW5kKQorICAgICIje29mZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9LCAje2lu
ZGV4Lng4Nk9wZXJhbmQoOmludCl9LCAje3NjYWxlfSkiCisgIGVuZAorCisgIGRlZiB4ODZDYWxs
T3BlcmFuZChraW5kKQorICAgICIqI3t4ODZvcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUK
KyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7YWRkcmVzcy52YWx1
ZX0iCisgIGVuZAorCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3thZGRyZXNz
LnZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAgZGVmIHg4Nkxh
YmVsCisgICAgc2FuaXRpemVMYWJlbE5hbWUobmFtZSkKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3Bl
cmFuZChraW5kKQorICAgIHg4NkxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxS
ZWZlcmVuY2UKKyAgZGVmIHg4NkxhYmVsCisgICAgIkxfb2ZmbGluZWFzbV8iK25hbWVbMS4uLTFd
CisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICB4ODZMYWJlbAorICBlbmQK
K2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbgorICBkZWYgeDg2T3BlcmFuZHMoKmtpbmRzKQorICAg
IHJhaXNlIHVubGVzcyBraW5kcy5zaXplID09IG9wZXJhbmRzLnNpemUKKyAgICByZXN1bHQgPSBb
XQorICAgIGtpbmRzLnNpemUudGltZXMgeworICAgICAgfCBpZHggfAorICAgICAgcmVzdWx0IDw8
IG9wZXJhbmRzW2lkeF0ueDg2T3BlcmFuZChraW5kc1tpZHhdKQorICAgIH0KKyAgICByZXN1bHQu
am9pbigiLCAiKQorICBlbmQKKworICBkZWYgeDg2U3VmZml4KGtpbmQpCisgICAgY2FzZSBraW5k
CisgICAgd2hlbiA6Ynl0ZQorICAgICAgImIiCisgICAgd2hlbiA6aGFsZgorICAgICAgInciCisg
ICAgd2hlbiA6aW50CisgICAgICAibCIKKyAgICB3aGVuIDpkb3VibGUKKyAgICAgICJzZCIKKyAg
ICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZP
cFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG51bU9wZXJhbmRzKQorICAgIGlmIG51bU9w
ZXJhbmRzID09IDMKKyAgICAgIGlmIG9wZXJhbmRzWzBdID09IG9wZXJhbmRzWzJdCisgICAgICAg
ICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwg
I3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRzWzFd
ID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJcdG1vdiN7eDg2U3VmZml4KGtpbmQpfSAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQo
a2luZCl9IgorICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBl
bmQKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wKG9wY29kZSwga2luZCkKKyAgICBoYW5k
bGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUpCisgIGVu
ZAorICAKKyAgZGVmIGhhbmRsZVg4NlNoaWZ0KG9wY29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5k
c1swXS5pc19hPyBJbW1lZGlhdGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0ZXJJRC5mb3JOYW1l
KG5pbCwgInQyIikKKyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAg
ZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
aW50KX0sICVlY3giCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICVjbCwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRl
ZiBoYW5kbGVYODZEb3VibGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAgIGNhc2UgbW9k
ZQorICAgIHdoZW4gOm5vcm1hbAorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSIKKyAgICB3aGVuIDpyZXZlcnNlCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlIG1vZGUuaW5zcGVjdAorICAgIGVuZAor
ICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS54ODZMYWJlbH0i
CisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmUob3Bjb2RlU3VmZml4LCBraW5k
KQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMF0udmFs
dWUgPT0gMCBhbmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZp
eCA9PSAiZSIgb3Igb3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVz
dCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAg
IGVsc2lmIG9wZXJhbmRzWzFdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUg
PT0gMCBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9
PSAiZSIgb3Igb3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7
eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVs
c2UKKyAgICAgICRhc20ucHV0cyAiXHRjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAg
ICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50QnJhbmNoKGJyYW5jaE9wY29kZSwg
a2luZCkKKyAgICBoYW5kbGVYODZJbnRDb21wYXJlKGJyYW5jaE9wY29kZVsxLi4tMV0sIGtpbmQp
CisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLng4NkxhYmVs
fSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZCkKKyAg
ICBpZiBvcGVyYW5kLnN1cHBvcnRzOEJpdE9uWDg2CisgICAgICAkYXNtLnB1dHMgIlx0I3tzZXRP
cGNvZGV9ICN7b3BlcmFuZC54ODZPcGVyYW5kKDpieXRlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0
bW92emJsICN7b3BlcmFuZC54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZC54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kLng4
Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJcdCN7c2V0T3Bjb2RlfSAl
YWwiCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJsICVhbCwgJWVheCIKKyAgICAgICRhc20ucHV0
cyAiXHR4Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmVTZXQoc2V0T3Bjb2RlLCBraW5kKQor
ICAgIGhhbmRsZVg4NkludENvbXBhcmUoc2V0T3Bjb2RlWzMuLi0xXSwga2luZCkKKyAgICBoYW5k
bGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kc1syXSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxl
WDg2VGVzdChraW5kKQorICAgIHZhbHVlID0gb3BlcmFuZHNbMF0KKyAgICBjYXNlIG9wZXJhbmRz
LnNpemUKKyAgICB3aGVuIDIKKyAgICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4s
IC0xKQorICAgIHdoZW4gMworICAgICAgbWFzayA9IG9wZXJhbmRzWzFdCisgICAgZWxzZQorICAg
ICAgcmFpc2UgIkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5kcywgYnV0IGdvdCAje29wZXJhbmRzLnNp
emV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAgaWYgbWFzay5p
c19hPyBJbW1lZGlhdGUgYW5kIG1hc2sudmFsdWUgPT0gLTEKKyAgICAgIGlmIHZhbHVlLmlzX2E/
IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0g
I3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAg
ICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJcdGNtcCN7eDg2U3VmZml4KGtpbmQpfSAkMCwg
I3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRh
c20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7bWFzay54ODZPcGVyYW5kKGtpbmQp
fSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYg
aGFuZGxlWDg2QnJhbmNoVGVzdChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVz
dChraW5kKQorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kcy5sYXN0
Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0VGVzdChzZXRPcGNvZGUs
IGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNv
ZGUsIG9wZXJhbmRzLmxhc3QpCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wQnJhbmNoKG9w
Y29kZSwgYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRz
KG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgY2FzZSBvcGVyYW5kcy5zaXpl
CisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMK
KyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNl
bGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tq
dW1wVGFyZ2V0Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U3ViQnJhbmNo
KGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5kcy5zaXplID09IDQgYW5kIG9wZXJh
bmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRz
WzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICBlbHNlCisgICAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcygic3ViI3t4ODZTdWZm
aXgoa2luZCl9Iiwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgZW5kCisgICAgY2FzZSBv
cGVyYW5kcy5zaXplCisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10K
KyAgICB3aGVuIDMKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAg
ICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5j
aE9wY29kZX0gI3tqdW1wVGFyZ2V0Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgbG93ZXJY
ODYKKyAgICAkYXNtLmNvbW1lbnQgY29kZU9yaWdpblN0cmluZworICAgIGNhc2Ugb3Bjb2RlCisg
ICAgd2hlbiAiYWRkaSIsICJhZGRwIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBv
cGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRz
WzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlz
X2E/IFJlZ2lzdGVySUQKKyAgICAgICAgaWYgb3BlcmFuZHNbMF0udmFsdWUgPT0gMAorICAgICAg
ICAgIHVubGVzcyBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgJGFzbS5w
dXRzICJcdG1vdmwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sy
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICRhc20ucHV0cyAiXHRsZWFsICN7b3BlcmFuZHNbMF0udmFsdWV9KCN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAg
ICAgICBlbmQKKyAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0u
aXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8g
UmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0
ZXJJRAorICAgICAgICAkYXNtLnB1dHMgIlx0bGVhbCAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIHVubGVzcyBJbW1lZGlhdGUu
bmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAj
e3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbmQKKyAgICB3
aGVuICJhbmRpIiwgImFuZHAiCisgICAgICBoYW5kbGVYODZPcCgiYW5kbCIsIDppbnQpCisgICAg
d2hlbiAibHNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYWxsIiwgOmludCkKKyAgICB3
aGVuICJtdWxpIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5p
c19hPyBJbW1lZGlhdGUKKyAgICAgICAgJGFzbS5wdXRzICJcdGltdWxsICN7eDg2T3BlcmFuZHMo
OmludCwgOmludCwgOmludCl9IgorICAgICAgZWxzZQorICAgICAgICAjIEZJWE1FOiBjb3VsZCBk
byBzb21lIHBlZXBob2xlIGluIGNhc2UgdGhlIGxlZnQgb3BlcmFuZCBpcyBpbW1lZGlhdGUgYW5k
IGl0J3MKKyAgICAgICAgIyBhIHBvd2VyIG9mIHR3by4KKyAgICAgICAgaGFuZGxlWDg2T3AoImlt
dWxsIiwgOmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gIm5lZ2kiCisgICAgICAkYXNtLnB1dHMg
Ilx0bmVnbCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJub3RpIgorICAgICAgJGFz
bS5wdXRzICJcdG5vdGwgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAib3JpIiwgIm9y
cCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJvcmwiLCA6aW50KQorICAgIHdoZW4gInJzaGlmdGkiCisg
ICAgICBoYW5kbGVYODZTaGlmdCgic2FybCIsIDppbnQpCisgICAgd2hlbiAidXJzaGlmdGkiCisg
ICAgICBoYW5kbGVYODZTaGlmdCgic2hybCIsIDppbnQpCisgICAgd2hlbiAic3ViaSIsICJzdWJw
IgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5k
c1syXQorICAgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzZQor
ICAgICAgICBoYW5kbGVYODZPcCgic3VibCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJ4
b3JpIiwgInhvcnAiCisgICAgICBoYW5kbGVYODZPcCgieG9ybCIsIDppbnQpCisgICAgd2hlbiAi
bG9hZGkiLCAic3RvcmVpIiwgImxvYWRwIiwgInN0b3JlcCIKKyAgICAgICRhc20ucHV0cyAiXHRt
b3ZsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgIHdoZW4gImxvYWRiIgorICAgICAg
JGFzbS5wdXRzICJcdG1vdnpibCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJsb2FkaCIKKyAgICAgICRh
c20ucHV0cyAiXHRtb3Z6d2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpoYWxmKX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAic3RvcmViIgorICAgICAgJGFz
bS5wdXRzICJcdG1vdmIgI3t4ODZPcGVyYW5kcyg6Ynl0ZSwgOmJ5dGUpfSIKKyAgICB3aGVuICJs
b2FkZCIsICJtb3ZlZCIsICJzdG9yZWQiCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgI3t4ODZP
cGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAiYWRkZCIKKyAgICAgICRhc20u
cHV0cyAiXHRhZGRzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVu
ICJkaXZkIgorICAgICAgJGFzbS5wdXRzICJcdGRpdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwg
OmRvdWJsZSl9IgorICAgIHdoZW4gInN1YmQiCisgICAgICAkYXNtLnB1dHMgIlx0c3Vic2QgI3t4
ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAibXVsZCIKKyAgICAgICRh
c20ucHV0cyAiXHRtdWxzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3
aGVuICJzcXJ0ZCIKKyAgICAgICRhc20ucHV0cyAiXHRzcXJ0c2QgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAg
ICB3aGVuICJjaTJkIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHNpMnNkICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisg
ICAgd2hlbiAiYmRlcSIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUoImJk
ZXEiKQorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRh
c20ucHV0cyAiXHRqcCAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJl
ZCkueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7TGFiZWxSZWZlcmVuY2UubmV3
KGNvZGVPcmlnaW4sIG9wZXJhbmRzWzJdKS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5s
b3dlcigiWDg2IikKKyAgICB3aGVuICJiZG5lcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5j
aCgiam5lIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGd0IgorICAgICAgaGFuZGxlWDg2RG91Ymxl
QnJhbmNoKCJqYSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRndGVxIgorICAgICAgaGFuZGxlWDg2
RG91YmxlQnJhbmNoKCJqYWUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHQiCisgICAgICBoYW5k
bGVYODZEb3VibGVCcmFuY2goImphIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdGVxIgorICAg
ICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYWUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGVx
dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImplIiwgOm5vcm1hbCkKKyAgICB3aGVu
ICJiZG5lcXVuIgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1
biIpCisgICAgICBpc0VxdWFsID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4iKQorICAgICAg
JGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRq
cCAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkueDg2TGFiZWx9
IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4s
IGlzRXF1YWwpLng4NkxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAg
ICAgJGFzbS5wdXRzICJcdGptcCAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgIGlzRXF1
YWwubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRndHVuIgorICAgICAgaGFuZGxlWDg2RG91Ymxl
QnJhbmNoKCJqYiIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkZ3RlcXVuIgorICAgICAgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGx0dW4iCisgICAg
ICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0ZXF1
biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamJlIiwgOm5vcm1hbCkKKyAgICB3aGVu
ICJidGQyaSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
ICRhc20ucHV0cyAiXHRjbXBsICQweDgwMDAwMDAwICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisg
ICAgd2hlbiAidGQyaSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICB3aGVuICJiY2QyaSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQp
fSIKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmlu
dCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJc
dGplICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJcdGN2dHNpMnNk
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgJGFzbS5wdXRz
ICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisg
ICAgICAkYXNtLnB1dHMgIlx0anAgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICAkYXNt
LnB1dHMgIlx0am5lICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgIHdoZW4gIm1vdmR6Igor
ICAgICAgJGFzbS5wdXRzICJcdHhvcnBkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAicG9wIgor
ICAgICAgJGFzbS5wdXRzICJcdHBvcCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgIHdoZW4gInB1c2giCisgICAgICAkYXNtLnB1dHMgIlx0cHVzaCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gIm1vdmUiLCAic3hpMnAiLCAienhpMnAiCisgICAg
ICBpZiBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0gYW5kIG9wZXJhbmRzWzFd
LmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJcdHhvcmwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICAgIGVsc2lmIG9wZXJhbmRzWzBdICE9IG9wZXJhbmRzWzFdCisgICAgICAgICRhc20ucHV0cyAi
XHRtb3ZsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgZW5kCisgICAgd2hlbiAi
bm9wIgorICAgICAgJGFzbS5wdXRzICJcdG5vcCIKKyAgICB3aGVuICJiaWVxIiwgImJwZXEiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmludCkKKyAgICB3aGVuICJiaW5lcSIsICJi
cG5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmludCkKKyAgICB3aGVuICJi
aWEiLCAiYnBhIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDppbnQpCisgICAgd2hl
biAiYmlhZXEiLCAiYnBhZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphZSIsIDppbnQp
CisgICAgd2hlbiAiYmliIiwgImJwYiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6
aW50KQorICAgIHdoZW4gImJpYmVxIiwgImJwYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqYmUiLCA6aW50KQorICAgIHdoZW4gImJpZ3QiLCAiYnBndCIKKyAgICAgIGhhbmRsZVg4Nklu
dEJyYW5jaCgiamciLCA6aW50KQorICAgIHdoZW4gImJpZ3RlcSIsICJicGd0ZXEiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImpnZSIsIDppbnQpCisgICAgd2hlbiAiYmlsdCIsICJicGx0Igor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDppbnQpCisgICAgd2hlbiAiYmlsdGVxIiwg
ImJwbHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamxlIiwgOmludCkKKyAgICB3aGVu
ICJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDpieXRlKQorICAgIHdoZW4g
ImJibmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6Ynl0ZSkKKyAgICB3aGVu
ICJiYmEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphIiwgOmJ5dGUpCisgICAgd2hlbiAi
YmJhZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphZSIsIDpieXRlKQorICAgIHdoZW4g
ImJiYiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6Ynl0ZSkKKyAgICB3aGVuICJi
YmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmJ5dGUpCisgICAgd2hlbiAi
YmJndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamciLCA6Ynl0ZSkKKyAgICB3aGVuICJi
Ymd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnZSIsIDpieXRlKQorICAgIHdoZW4g
ImJibHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwgOmJ5dGUpCisgICAgd2hlbiAi
YmJsdGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbHRlcSIsIDpieXRlKQorICAgIHdo
ZW4gImJ0aW8iLCAiYnRwbyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmludCkK
KyAgICB3aGVuICJidGlzIiwgImJ0cHMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIs
IDppbnQpCisgICAgd2hlbiAiYnRpeiIsICJidHB6IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVz
dCgianoiLCA6aW50KQorICAgIHdoZW4gImJ0aW56IiwgImJ0cG56IgorICAgICAgaGFuZGxlWDg2
QnJhbmNoVGVzdCgiam56IiwgOmludCkKKyAgICB3aGVuICJidGJvIgorICAgICAgaGFuZGxlWDg2
QnJhbmNoVGVzdCgiam8iLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJzIgorICAgICAgaGFuZGxlWDg2
QnJhbmNoVGVzdCgianMiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJ6IgorICAgICAgaGFuZGxlWDg2
QnJhbmNoVGVzdCgianoiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJueiIKKyAgICAgIGhhbmRsZVg4
NkJyYW5jaFRlc3QoImpueiIsIDpieXRlKQorICAgIHdoZW4gImptcCIKKyAgICAgICRhc20ucHV0
cyAiXHRqbXAgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAi
YmFkZGlvIiwgImJhZGRwbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpvIiwg
OmludCkKKyAgICB3aGVuICJiYWRkaXMiLCAiYmFkZHBzIgorICAgICAgaGFuZGxlWDg2T3BCcmFu
Y2goImFkZGwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJhZGRpeiIsICJiYWRkcHoiCisgICAg
ICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlu
eiIsICJiYWRkcG56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam56IiwgOmlu
dCkKKyAgICB3aGVuICJic3ViaW8iCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpvIiwgOmlu
dCkKKyAgICB3aGVuICJic3ViaXMiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpzIiwgOmlu
dCkKKyAgICB3aGVuICJic3ViaXoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImp6IiwgOmlu
dCkKKyAgICB3aGVuICJic3ViaW56IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbnoiLCA6
aW50KQorICAgIHdoZW4gImJtdWxpbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIs
ICJqbyIsIDppbnQpCisgICAgd2hlbiAiYm11bGlzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2go
ImltdWxsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJibXVsaXoiCisgICAgICBoYW5kbGVYODZP
cEJyYW5jaCgiaW11bGwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJtdWxpbnoiCisgICAgICBo
YW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJib3JpbyIK
KyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJv
cmlzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqcyIsIDppbnQpCisgICAgd2hl
biAiYm9yaXoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImp6IiwgOmludCkKKyAg
ICB3aGVuICJib3JpbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpueiIsIDpp
bnQpCisgICAgd2hlbiAiYnJlYWsiCisgICAgICAkYXNtLnB1dHMgIlx0aW50ICQzIgorICAgIHdo
ZW4gImNhbGwiCisgICAgICAkYXNtLnB1dHMgIlx0Y2FsbCAje29wZXJhbmRzWzBdLng4NkNhbGxP
cGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJyZXQiCisgICAgICAkYXNtLnB1dHMgIlx0cmV0Igor
ICAgIHdoZW4gImNpZXEiLCAiY3BlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNl
dGUiLCA6aW50KQorICAgIHdoZW4gImNpbmVxIiwgImNwbmVxIgorICAgICAgaGFuZGxlWDg2SW50
Q29tcGFyZVNldCgic2V0bmUiLCA6aW50KQorICAgIHdoZW4gImNpYSIsICJjcGEiCisgICAgICBo
YW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRhIiwgOmludCkKKyAgICB3aGVuICJjaWFlcSIsICJj
cGFlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGFlIiwgOmludCkKKyAgICB3
aGVuICJjaWIiLCAiY3BiIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YiIsIDpp
bnQpCisgICAgd2hlbiAiY2liZXEiLCAiY3BiZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJl
U2V0KCJzZXRiZSIsIDppbnQpCisgICAgd2hlbiAiY2lndCIsICJjcGd0IgorICAgICAgaGFuZGxl
WDg2SW50Q29tcGFyZVNldCgic2V0ZyIsIDppbnQpCisgICAgd2hlbiAiY2lndGVxIiwgImNwZ3Rl
cSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGdlIiwgOmludCkKKyAgICB3aGVu
ICJjaWx0IiwgImNwbHQiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsIiwgOmlu
dCkKKyAgICB3aGVuICJjaWx0ZXEiLCAiY3BsdGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFy
ZVNldCgic2V0bGUiLCA6aW50KQorICAgIHdoZW4gInRpbyIKKyAgICAgIGhhbmRsZVg4NlNldFRl
c3QoInNldG8iLCA6aW50KQorICAgIHdoZW4gInRpcyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3Qo
InNldHMiLCA6aW50KQorICAgIHdoZW4gInRpeiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNl
dHoiLCA6aW50KQorICAgIHdoZW4gInRpbnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRu
eiIsIDppbnQpCisgICAgd2hlbiAidGJvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIs
IDpieXRlKQorICAgIHdoZW4gInRicyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6
Ynl0ZSkKKyAgICB3aGVuICJ0YnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmJ5
dGUpCisgICAgd2hlbiAidGJueiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmJ5
dGUpCisgICAgd2hlbiAicGVlayIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNb
MF0udmFsdWUgKiA0fSglZXNwKSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICB3aGVuICJwb2tlIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS52YWx1ZSAqIDR9KCVlc3ApIgorICAgIHdoZW4g
ImNkcWkiCisgICAgICAkYXNtLnB1dHMgIlx0Y2RxIgorICAgIHdoZW4gImlkaXZpIgorICAgICAg
JGFzbS5wdXRzICJcdGlkaXZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
d2hlbiAiZmlpMmQiCisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAg
JGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTci
CisgICAgICAkYXNtLnB1dHMgIlx0cHNsbHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAi
XHRwb3IgJXhtbTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hl
biAiZmQyaWkiCisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFz
bS5wdXRzICJcdG1vdnNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03
IgorICAgICAgJGFzbS5wdXRzICJcdHBzcmxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMg
Ilx0bW92c2QgJXhtbTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxz
ZQorICAgICAgcmFpc2UgIkJhZCBvcGNvZGU6ICN7b3Bjb2RlfSIKKyAgICBlbmQKKyAgZW5kCitl
bmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVTcGVjaWFsaXphdGlvbktpbmQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorI2RlZmluZSBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kX2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gQ29kZVNwZWNpYWxpemF0aW9u
S2luZCB7IENvZGVGb3JDYWxsLCBDb2RlRm9yQ29uc3RydWN0IH07CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lv
biAxMDUzMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBDb21tb25TbG93
UGF0aHNfaAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJK
U0FycmF5LmgiCiAKQEAgLTQxLDYgKzQyLDM4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3Bh
Y2UgQ29tbW9uU2xvd1BhdGhzIHsKIAorQUxXQVlTX0lOTElORSBFeGVjU3RhdGUqIGFyaXR5Q2hl
Y2tGb3IoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVu
Y3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlv
bigpKTsKKyAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJs
ZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgPSBleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOworCisgICAg
Ly8gVGhpcyBlbnN1cmVzIGVub3VnaCBzcGFjZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8g
b2YgemVybyBhcmd1bWVudHMgcGFzc2VkIGJ5IHRoZSBjYWxsZXIuCisgICAgaWYgKCFyZWdpc3Rl
ckZpbGUtPmdyb3coZXhlYy0+cmVnaXN0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSArIG5ld0NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpKTsKKworICAgIC8vIFRvbyBmZXcgYXJndW1lbnRzIC0tIGNv
cHkgY2FsbCBmcmFtZSBhbmQgYXJndW1lbnRzLCB0aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1bWVu
dHMgd2l0aCB1bmRlZmluZWQuCisgICAgc2l6ZV90IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKKyAgICBSZWdpc3Rlciog
c3JjID0gZXhlYy0+cmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0ZXIqIGRzdCA9IGV4ZWMtPnJlZ2lz
dGVycygpICsgZGVsdGE7CisKKyAgICBpbnQgaTsKKyAgICBpbnQgZW5kID0gLUV4ZWNTdGF0ZTo6
b2Zmc2V0Rm9yKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKKyAgICBmb3IgKGkgPSAtMTsg
aSA+PSBlbmQ7IC0taSkKKyAgICAgICAgZHN0W2ldID0gc3JjW2ldOworCisgICAgZW5kIC09IGRl
bHRhOworICAgIGZvciAoIDsgaSA+PSBlbmQ7IC0taSkKKyAgICAgICAgZHN0W2ldID0ganNVbmRl
ZmluZWQoKTsKKworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IEV4ZWNTdGF0ZTo6Y3JlYXRlKGRz
dCk7CisgICAgQVNTRVJUKCh2b2lkKiluZXdFeGVjIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOwor
ICAgIHJldHVybiBuZXdFeGVjOworfQorCiBBTFdBWVNfSU5MSU5FIGJvb2wgb3BJbnN0YW5jZU9m
U2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgYmFzZVZhbCwgSlNW
YWx1ZSBwcm90bykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzQ2VsbCgpIHx8ICFiYXNlVmFsLmlz
Q2VsbCgpIHx8ICFwcm90by5pc0NlbGwoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKKyNpbmNsdWRlICJFeGVjdXRpb25IYXJu
ZXNzLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURHJpdmVyLmgiCiAjaW5jbHVk
ZSAiUGFyc2VyLmgiCkBAIC04NCw3ICs4NSw3IEBAIEludHJpbnNpYyBOYXRpdmVFeGVjdXRhYmxl
OjppbnRyaW5zaWMoKSAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdGF0aWMgdm9pZCBqZXR0aXNv
bkNvZGVCbG9jayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxUPiYgY29kZUJsb2Nr
KQogewotICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNl
bGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2st
PmdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwog
ICAgIE93blB0cjxUPiBjb2RlQmxvY2tUb0pldHRpc29uID0gY29kZUJsb2NrLnJlbGVhc2UoKTsK
ICAgICBjb2RlQmxvY2sgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFQ+KGNvZGVCbG9ja1RvSmV0dGlz
b24tPnJlbGVhc2VBbHRlcm5hdGl2ZSgpKTsKQEAgLTE2Nyw5ICsxNjgsMzAgQEAgSlNPYmplY3Qq
IEV2YWxFeGVjdXRhYmxlOjpjb21waWxlT3B0aW1pegogICAgIHJldHVybiBlcnJvcjsKIH0KIAor
dm9pZCBFdmFsRXhlY3V0YWJsZTo6aml0Q29tcGlsZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
Ym9vbCByZXN1bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShleGVjLCBtX2V2YWxDb2RlQmxv
Y2ssIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK2lubGluZSBjb25zdCBjaGFyKiBzYW1w
bGluZ0Rlc2NyaXB0aW9uKEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyAgICBzd2l0Y2gg
KGppdFR5cGUpIHsKKyAgICBjYXNlIEpJVENvZGU6OkludGVycHJldGVyVGh1bms6CisgICAgICAg
IHJldHVybiAiSW50ZXJwcmV0ZXIgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRD
b2RlOjpCYXNlbGluZUpJVDoKKyAgICAgICAgcmV0dXJuICJCYXNlbGluZSBDb21waWxhdGlvbiAo
VE9UQUwpIjsKKyAgICBjYXNlIEpJVENvZGU6OkRGR0pJVDoKKyAgICAgICAgcmV0dXJuICJERkcg
Q29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwogSlNPYmplY3QqIEV2YWxF
eGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9k
ZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1w
bGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklU
ID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9U
QUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlw
dGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFN
KGppdFR5cGUpOwpAQCAtMjEwLDcgKzIzMiw3IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6
Y29tcGlsZUludGVybmEKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29t
cGlsZUlmQXBwcm9wcmlhdGUoZXhlYywgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxs
LCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVjdXRpb24oZXhlYywgbV9ldmFsQ29k
ZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAj
ZW5kaWYKIApAQCAtMjk1LDkgKzMxNywxNSBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6
OmNvbXBpbGVPcHRpCiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIFByb2dyYW1FeGVjdXRh
YmxlOjpqaXRDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBib29sIHJlc3VsdCA9IGpp
dENvbXBpbGVJZkFwcHJvcHJpYXRlKGV4ZWMsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2Rl
Rm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0KTsKK30KKwogSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxl
SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUs
IEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGlu
Z1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBp
bGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxp
bmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAg
ICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtMzM2
LDcgKzM2NCw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGUKICAg
ICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUo
ZXhlYywgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKKyAg
ICBpZiAoIXByZXBhcmVGb3JFeGVjdXRpb24oZXhlYywgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2pp
dENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAt
NDEyLDcgKzQ0MCw3IEBAIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmIK
ICAgICB3aGlsZSAocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKQogICAgICAgICByZXN1bHQgPSBzdGF0
aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSk7CiAgICAg
QVNTRVJUKHJlc3VsdCk7Ci0gICAgQVNTRVJUKHJlc3VsdC0+Z2V0SklUVHlwZSgpID09IEpJVENv
ZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVz
dWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MzgsNiAr
NDY2LDE4IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVPcHQKICAgICBy
ZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9y
Q2FsbChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVu
Y3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMsIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9y
Q2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRD
b2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQp
OworfQorCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdChF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25J
ZkFwcHJvcHJpYXRlKGV4ZWMsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JD
b25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRh
YmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQpOworfQorCiBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tXaXRoQnl0ZWNvZGVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewog
ICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvcihr
aW5kKTsKQEAgLTQ4Miw3ICs1MjIsNyBAQCBQYXNzT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBG
dW5jdGlvbkV4CiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxs
SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUs
IEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGlu
Z1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBp
bGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxp
bmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAg
ICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNTA0LDcg
KzU0NCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBt
X3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDYWxsLT5zaGFyZWRTeW1ib2xUYWJsZSgpOwog
CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlh
dGUoZXhlYywgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVG
b3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUpKQorICAgIGlmICgh
cHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMsIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9q
aXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRh
YmxlLCBqaXRUeXBlLCBDb2RlRm9yQ2FsbCkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAK
QEAgLTUyNCw3ICs1NjQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxl
Rm9yCiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJ
bnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwg
SklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5n
UmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGls
YXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGlu
Z1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAg
ICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC01NDYs
NyArNTg2LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAg
IG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+c2hhcmVkU3ltYm9sVGFi
bGUoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFw
cHJvcHJpYXRlKGV4ZWMsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25z
dHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxl
LCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLCBt
X2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBtX2ppdENvZGVG
b3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSwgQ29kZUZv
ckNvbnN0cnVjdCkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDEwNTMwOSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBFeGVjdXRhYmxlX2gKIAogI2luY2x1ZGUgIkNh
bGxEYXRhLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIk5vZGVz
LmgiCkBAIC0zOSwxMiArNDAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRGVidWdn
ZXI7CiAgICAgY2xhc3MgRXZhbENvZGVCbG9jazsKICAgICBjbGFzcyBGdW5jdGlvbkNvZGVCbG9j
azsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNv
ZGVCbG9jazsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKIAogICAgIHN0cnVjdCBFeGNlcHRp
b25JbmZvOwogICAgIAotICAgIGVudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7IENvZGVGb3JD
YWxsLCBDb2RlRm9yQ29uc3RydWN0IH07CiAgICAgZW51bSBDb21waWxhdGlvbktpbmQgeyBGaXJz
dENvbXBpbGF0aW9uLCBPcHRpbWl6aW5nQ29tcGlsYXRpb24gfTsKIAogICAgIGlubGluZSBib29s
IGlzQ2FsbChDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0zMTksNiArMzIwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDogcHVi
bGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxl
IEJhc2U7CiAKQEAgLTMzOCw2ICszNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAj
aWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGUoSlNHbG9i
YWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShFeGVjU3RhdGUqKTsKICNlbmRpZgog
CiAgICAgICAgIEV2YWxDb2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkKQEAgLTM4NCw2ICsz
ODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1
dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlw
dEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNDExLDYgKzQxNSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVk
Q29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlKEV4ZWNTdGF0ZSop
OwogI2VuZGlmCiAKICAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUo
KQpAQCAtNDUzLDYgKzQ1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rp
b25FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAg
LTUwOCw2ICs1MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDYWxsKEpTR2xvYmFsRGF0
YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDYWxsKEV4ZWNTdGF0ZSopOwogI2VuZGlm
CiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNhbGwoKSBjb25zdApAQCAtNTM1LDYgKzU0
Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAg
ICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmKTsK
KyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ29uc3RydWN0KEV4ZWNTdGF0ZSopOwogI2VuZGlm
CiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNvbnN0cnVjdCgpIGNvbnN0CkBAIC01ODIs
NiArNTkwLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGpldHRpc29uT3B0
aW1pemVkQ29kZUZvckNvbnN0cnVjdChnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yKEV4ZWNTdGF0ZSogZXhl
YywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICAgICAgICAgIGppdENvbXBpbGVGb3JD
YWxsKGV4ZWMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICAgICAgaml0
Q29tcGlsZUZvckNvbnN0cnVjdChleGVjKTsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIAog
ICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJu
ZXNzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRpb25IYXJuZXNzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBFeGVjdXRpb25IYXJu
ZXNzX2gKKyNkZWZpbmUgRXhlY3V0aW9uSGFybmVzc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJKSVREcml2ZXIuaCIKKyNpbmNs
dWRlICJMTEludEVudHJ5cG9pbnRzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgoraW5saW5lIGJvb2wgcHJlcGFyZUZvckV4ZWN1dGlvbihF
eGVjU3RhdGUqIGV4ZWMsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBKSVRDb2Rl
JiBqaXRDb2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisjaWYgRU5BQkxFKExMSU5U
KQorICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkgeworICAgICAgICAv
LyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRlcnByZXRlci4KKyAgICAgICAgTExJbnQ6
OmdldEVudHJ5cG9pbnQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2suZ2V0KCksIGppdENv
ZGUpOworICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYgLy8gRU5B
QkxFKExMSU5UKQorICAgIHJldHVybiBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShleGVjLCBjb2Rl
QmxvY2ssIGppdENvZGUsIGppdFR5cGUpOworfQorCitpbmxpbmUgYm9vbCBwcmVwYXJlRnVuY3Rp
b25Gb3JFeGVjdXRpb24oRXhlY1N0YXRlKiBleGVjLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+
JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0
Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBKSVRD
b2RlOjpKSVRUeXBlIGppdFR5cGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyNp
ZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUp
KSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgor
ICAgICAgICBMTEludDo6Z2V0RnVuY3Rpb25FbnRyeXBvaW50KGV4ZWMtPmdsb2JhbERhdGEoKSwg
a2luZCwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgY29kZUJsb2Nr
LT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGtpbmQpOworI2VuZGlm
IC8vIEVOQUJMRShMTElOVCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3By
aWF0ZShleGVjLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjaywgc3lt
Ym9sVGFibGUsIGppdFR5cGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IEVOQUJMRShKSVQpCisKKyNlbmRpZiAvLyBFeGVjdXRpb25IYXJuZXNzX2gKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDEw
NTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSA9IGFk
b3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPltyZWdpc3RlckFycmF5U2l6ZV0p
OwogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVycyA9IHJlZ2lzdGVyQXJy
YXkuZ2V0KCkgKyByZWdpc3Rlck9mZnNldDsKLQorICAgICAgICAKICAgICAgICAgLy8gQ29weSBh
bGwgYXJndW1lbnRzIHRoYXQgY2FuIGJlIGNhcHR1cmVkIGJ5IG5hbWUgb3IgYnkgdGhlIGFyZ3Vt
ZW50cyBvYmplY3QuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9udW1DYXB0dXJlZEFy
Z3M7ICsraSkgewogICAgICAgICAgICAgaW50IGluZGV4ID0gQ2FsbEZyYW1lOjphcmd1bWVudE9m
ZnNldChpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJl
dmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAg
IHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmllcjxVbmtub3duPiB7
CiAgICAgICAgIHR5cGVkZWYgV3JpdGVCYXJyaWVyPFVua25vd24+IEJhc2U7CkBAIC0xMjQsNiAr
MTI1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEpTQXJyYXkgOiBw
dWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwcm90ZWN0
ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24g
MTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNz
IFByb3BlcnR5TmFtZUFycmF5OworICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGVudW0gRW51
bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywKQEAgLTE2
NSw2ICsxNjYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IENs
YXNzSW5mbyogbV9jbGFzc0luZm87CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1f
c3RydWN0dXJlOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxMDUzMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgSlNB
Y3RpdmF0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNv
dXJjZUNvZGU7CiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0xNDAsNiArMTQxLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29s
IGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgc3RhdGljIEpTVmFs
dWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw4IEBAIEpTR2xv
YmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICAsIGtleXdvcmRzKGFkb3B0
UHRyKG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRlcnByZXRlcigwKQogICAgICwgaGVh
cCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFzc0luZm8oJkpTQXJyYXk6OnNfaW5m
bykKKyAgICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpTRmluYWxPYmplY3Q6OnNfaW5mbykK
ICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxhc3RTY3JhdGNoQnVmZmVyKDApCiAj
ZW5kaWYKQEAgLTIxOCw3ICsyMjAsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9i
YWxEYXRhVHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1bmtzKHRoaXMpKTsK
ICNlbmRpZgogCi0gICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUodGhpcy0+Y2FuVXNlSklUKCkp
OworICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKCZsbGludERhdGEsIHRoaXMtPmNhblVzZUpJ
VCgpKTsKIAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xsZWN0KCk7CiB9CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gMTA1
MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNiBAQAogI2RlZmluZSBKU0dsb2JhbERhdGFfaAog
CiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oIgotI2luY2x1ZGUgIklu
dHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhl
Y3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJTdHJvbmcu
aCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1
ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJOdW1lcmlj
U3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlN0cm9uZy5o
IgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJUaW1lb3V0Q2hlY2tlci5oIgog
I2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYgKzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xh
c3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmE7CiAgICAgY2xhc3MgUmVn
RXhwQ2FjaGU7CkBAIC0yNDgsNiArMjUwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBI
ZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247CisKKyAgICAgICAgY29uc3Qg
Q2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOworICAgICAgICBjb25zdCBDbGFzc0lu
Zm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CisKKyAgICAgICAgTExJbnQ6OkRhdGEg
bGxpbnREYXRhOworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciBl
eGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBob3N0Q2FsbFJldHVyblZhbHVlOwpA
QCAtMzUzLDYgKzM2MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogI3VuZGVmIHJlZ2lzdGVyVHlwZWRB
cnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2JhbERh
dGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKICAgICAgICAgc3RhdGljIEpTR2xv
YmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAgdm9pZCBjcmVhdGVO
YXRpdmVUaHVuaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDUzMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNs
YXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CisgICAgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7
CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBSZWdFeHBDb25zdHJ1Y3Rv
cjsKQEAgLTMzNSw2ICszMzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyosIGludCBj
b3VudCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVzZXQgaW50byBp
bml0LgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNW
YWx1ZSk7CiAgICAgICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMDUzMDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEdldHRlclNldHRl
cjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQmxvY2s7CiAg
ICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5
OwpAQCAtMjcxLDYgKzI3Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU09iamVjdChK
U0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7
CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworICAgICAgICAKICAgICAgICAgLy8gTm9ib2R5IHNob3VsZCBldmVyIGFzayBhbnkgb2Yg
dGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0aGluZyBhbHJlYWR5IGtub3duIHRvIGJlIGEgSlNPYmpl
Y3QuCiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXI7CiAgICAgICAgIHVz
aW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7CkBAIC0zODMsNiArMzg2LDggQEAgQ09NUElMRV9B
U1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0IEpTRmluYWxPYmpl
Y3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAg
ICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2Up
CiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwNTMwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElk
ZW50aWZpZXI7CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogCiAgICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciA6IHB1YmxpYyBKU0Nl
bGwgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtOTYsNiArOTcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVB
cnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKIAogICAgICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIs
NyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1N0cmluZzsKKyAgICBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhKU0ds
b2JhbERhdGEqKTsKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsKQEAg
LTI0MSw2ICsyNDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlz
aXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7CiAg
ICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIqKSBjb25zdDsKICAgICAgICAg
dm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFyKikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAxMDUzMDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIHRv
IG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJsZS4KICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8PCAxOwogICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEgPDwgMjsKQEAgLTg3LDYgKzg5LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGlzU2V0
T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA8PSAoMSA8PCA3KSk7
IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAgICAgICBib29sIGlzU2V0T25GbGFnczIodW5z
aWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8PCA4KSk7IHJldHVybiBtX2Zs
YWdzMiAmIChmbGFnID4+IDgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxMDUzMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDEwICsxMTYsOSBA
QCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiAgICAgcmV0dXJuIEpT
Tm90QW5PYmplY3Q6OmNyZWF0ZShleGVjKTsKIH0KIAotI2lmbmRlZiBOREVCVUcKIGNoYXIqIEpT
VmFsdWU6OmRlc2NyaXB0aW9uKCkKIHsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSA2
NDsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSAxMjg7CiAgICAgc3RhdGljIGNoYXIg
ZGVzY3JpcHRpb25bc2l6ZV07CiAKICAgICBpZiAoISp0aGlzKQpAQCAtMTI4LDE0ICsxMjcsMTQg
QEAgY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogICAgICAgICBzbnByaW50ZihkZXNjcmlw
dGlvbiwgc2l6ZSwgIkludDMyOiAlZCIsIGFzSW50MzIoKSk7CiAgICAgZWxzZSBpZiAoaXNEb3Vi
bGUoKSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9u
LCBzaXplLCAiRG91YmxlOiAlbGYsICVseCIsIGFzRG91YmxlKCksIHJlaW50ZXJwcmV0RG91Ymxl
VG9JbnRwdHIoYXNEb3VibGUoKSkpOworICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6
ZSwgIkRvdWJsZTogJWx4LCAlbGYiLCByZWludGVycHJldERvdWJsZVRvSW50cHRyKGFzRG91Ymxl
KCkpLCBhc0RvdWJsZSgpKTsKICNlbHNlCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIGRv
dWJsZSBhc0RvdWJsZTsKICAgICAgICAgICAgIHVpbnQzMl90IGFzVHdvSW50MzJzWzJdOwogICAg
ICAgICB9IHU7CiAgICAgICAgIHUuYXNEb3VibGUgPSBhc0RvdWJsZSgpOwotICAgICAgICBzbnBy
aW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlMDh4OiUwOHgiLCBhc0RvdWJs
ZSgpLCB1LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdKTsKKyAgICAgICAgc25wcmlu
dGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICUwOHg6JTA4eCwgJWxmIiwgdS5hc1R3b0lu
dDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSwgYXNEb3VibGUoKSk7CiAjZW5kaWYKICAgICB9IGVs
c2UgaWYgKGlzQ2VsbCgpKQogICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkNl
bGw6ICVwIiwgYXNDZWxsKCkpOwpAQCAtMTUyLDcgKzE1MSw2IEBAIGNoYXIqIEpTVmFsdWU6OmRl
c2NyaXB0aW9uKCkKIAogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KLSNlbmRpZgogCiAvLyBU
aGlzIGluIHRoZSBUb0ludDMyIG9wZXJhdGlvbiBpcyBkZWZpbmVkIGluIHNlY3Rpb24gOS41IG9m
IHRoZSBFQ01BLTI2MiBzcGVjLgogLy8gTm90ZSB0aGF0IHRoaXMgb3BlcmF0aW9uIGlzIGlkZW50
aWNhbCB0byBUb1VJbnQzMiBvdGhlciB0aGFuIHRvIGludGVycHJldGF0aW9uCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAxMDUzMDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTIzMyw5ICsyMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNDZWxsKiBhc0NlbGwo
KSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7
CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGNoYXIqIGRlc2NyaXB0aW9uKCk7Ci0jZW5kaWYK
IAogICAgIHByaXZhdGU6CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBKU1ZhbHVlKFdyaXRl
QmFycmllckJhc2U8VD4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
OCwxMCArMzgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAKICAgICBjbGFzcyBKU1ZhcmlhYmxl
T2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBmcmllbmQgY2xhc3Mg
SklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAg
cHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAxMDUzMDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTIsNiArNTIsMTAgQEAgdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3Ry
dWN0SW5saQogCiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsKIAoraW50MzJfdCBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2ludDMyX3QgZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworaW50MzJfdCBleGVjdXRpb25Db3VudGVy
VmFsdWVGb3JKSVRTb29uOworCiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXpl
QWZ0ZXJMb25nV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0
aW1pemVBbnl0aW1lU29vbjsKQEAgLTEzNyw2ICsxNDEsMTAgQEAgdm9pZCBpbml0aWFsaXplT3B0
aW9ucygpCiAgICAgCiAgICAgU0VUKG1heGltdW1JbmxpbmluZ0RlcHRoLCA1KTsKIAorICAgIFNF
VChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcCwgICAgIC0xMDApOworICAg
IFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb24sIHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9ySklUU29vbiwgICAgICAgICAgICAtMTAwKTsKKwogICAgIFNFVChleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwLCAgICAgLTEwMDApOwogICAgIFNFVChleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCwgLTUwMDApOwogICAg
IFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiwgc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOwpAQCAtMTg1LDYgKzE5Myw4IEBAIHZv
aWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIGlmIChjcHVzVG9Vc2UgPCAxKQogICAgICAgICBj
cHVzVG9Vc2UgPSAxOwogICAgIAorICAgIGNwdXNUb1VzZSA9IDE7CisgICAgCiAgICAgU0VUKG51
bWJlck9mR0NNYXJrZXJzLCBjcHVzVG9Vc2UpOwogCiAgICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTAgQEAg
ZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cgogCiBleHRlcm4gdW5zaWdu
ZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERlcHRoIG9mIGlubGluZSBzdGFjaywgc28gMSA9
IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMuCiAKK2V4dGVybiBpbnQzMl90IGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworZXh0ZXJuIGludDMyX3QgZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworZXh0ZXJuIGludDMyX3QgZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogZXh0ZXJuIGludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiAx
MDUzMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
SlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2Jq
ZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTY29wZUNo
YWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCkBAIC05MSw2ICs5Miw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBD
bGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAgICAgfTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9u
IDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5
OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5RGF0YTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVD
aGFpbjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0lu
Zm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9uIDEwNTMwOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogCiAgICAgY2xh
c3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlNDZWxsIHsKQEAgLTc0LDYgKzc1LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmVD
aGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0NlbGwqKTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJl
dmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAko
d29ya2luZyBjb3B5KQpAQCAtOTE4LDYgKzkxOCwxMiBAQAogI2RlZmluZSBFTkFCTEVfSklUIDEK
ICNlbmRpZgogCisvKiBPbiBzb21lIG9mIHRoZSBwbGF0Zm9ybXMgd2hlcmUgd2UgaGF2ZSBhIEpJ
VCwgd2Ugd2FudCB0byBhbHNvIGhhdmUgdGhlIAorICAgbG93LWxldmVsIGludGVycHJldGVyLiAq
LworI2lmIEVOQUJMRShKSVQpICYmIFBMQVRGT1JNKE1BQykgJiYgVVNFKEpTVkFMVUUzMl82NCkK
KyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0RG
R19KSVQpICYmIEVOQUJMRShKSVQpCiAvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gWDg2IGFuZCBY
ODZfNjQuICBPbmx5IHRlc3RlZCBvbiBNYWMgYW5kIEdOVS9MaW51eC4gKi8KICNpZiAoQ1BVKFg4
NikgfHwgQ1BVKFg4Nl82NCkpICYmIChQTEFURk9STShNQUMpIHx8IE9TKExJTlVYKSkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24g
MTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NG
U3RyaW5nICogQ0ZTdHJpCiAvLyBMYW5kaW5nIHRoZSBmaWxlIG1vdmVzIGluIG9uZSBwYXRjaCwg
d2lsbCBmb2xsb3cgb24gd2l0aCBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgbmFtZXNwYWNlcy4KIG5h
bWVzcGFjZSBKU0Mgewogc3RydWN0IElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRvcjsKK2NsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSWRl
bnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yOwogc3RydWN0IElkZW50aWZpZXJMQ2hhckZyb21V
Q2hhclRyYW5zbGF0b3I7CiB9CkBAIC03MCw3ICs3MSw4IEBAIGNsYXNzIFN0cmluZ0ltcGwgewog
ICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yOwog
ICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAgICAgZnJpZW5k
IGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7Ci0KKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgCiBwcml2YXRlOgogICAgIGVudW0gQnVmZmVyT3duZXJzaGlw
IHsKICAgICAgICAgQnVmZmVySW50ZXJuYWwsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123055</attachid>
            <date>2012-01-18 19:46:45 -0800</date>
            <delta_ts>2012-01-18 21:15:55 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_28.diff</filename>
            <type>text/plain</type>
            <size>407103</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDI0NCBA
QAotMjAxMi0wMS0xOCAgUm9sYW5kIFRha2FjcyAgPHRha2Fjcy5yb2xhbmRAc3R1ZC51LXN6ZWdl
ZC5odT4KKzIwMTItMDEtMTcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAg
ICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIFdPUksgSU4gUFJPR1JFU1MuICBJdCBhcHBlYXJzIHRvIHdvcmssIGJ1dCB0
aGUgdGllcmluZyBsb2dpYyBpcyBub3QKKwljb21wbGV0ZWx5IGdsdWVkIHRvZ2V0aGVyIHlldC4K
KyAgICAgICAgCisgICAgICAgIEltcGxlbWVudGVkIGFuIGludGVycHJldGVyIHRoYXQgdXNlcyB0
aGUgSklUJ3MgY2FsbGluZyBjb252ZW50aW9uLiBUaGlzCisgICAgICAgIGludGVycHJldGVyIGlz
IGNhbGxlZCBMTEludCwgb3IgdGhlIExvdyBMZXZlbCBJbnRlcnByZXRlci4gSlNDIHdpbGwgbm93
CisgICAgICAgIHdpbGwgc3RhcnQgYnkgZXhlY3V0aW5nIGNvZGUgaW4gTExJbnQgYW5kIHdpbGwg
b25seSB0aWVyIHVwIHRvIHRoZSBvbGQKKyAgICAgICAgSklUIGFmdGVyIHRoZSBjb2RlIGlzIHBy
b3ZlbiBob3QuCisgICAgICAgIAorICAgICAgICBMTEludCBpcyB3cml0dGVuIGluIGEgbW9kaWZp
ZWQgZm9ybSBvZiBvdXIgbWFjcm8gYXNzZW1ibHkuIFRoaXMgbmV3IG1hY3JvCisgICAgICAgIGFz
c2VtYmx5IGlzIGNvbXBpbGVkIGJ5IGFuIG9mZmxpbmUgYXNzZW1ibGVyIChzZWUgb2ZmbGluZWFz
bSksIHdoaWNoCisgICAgICAgIGltcGxlbWVudHMgbWFueSBtb2Rlcm4gY29udmVuaWVuY2VzIHN1
Y2ggYXMgYSBUdXJpbmctY29tcGxldGUgQ1BTLWJhc2VkCisgICAgICAgIG1hY3JvIGxhbmd1YWdl
IGFuZCBkaXJlY3QgYWNjZXNzIHRvIHJlbGV2YW50IEMrKyB0eXBlIGluZm9ybWF0aW9uCisgICAg
ICAgIChiYXNpY2FsbHkgb2Zmc2V0cyBvZiBmaWVsZHMgYW5kIHNpemVzIG9mIHN0cnVjdHMvY2xh
c3NlcykuCisgICAgICAgIAorICAgICAgICBDb2RlIGV4ZWN1dGluZyBpbiBMTEludCBhcHBlYXJz
IHRvIHRoZSByZXN0IG9mIHRoZSBKU0Mgd29ybGQgImFzIGlmIiBpdAorICAgICAgICB3ZXJlIGV4
ZWN1dGluZyBpbiB0aGUgb2xkIEpJVC4gSGVuY2UsIHRoaW5ncyBsaWtlIGV4Y2VwdGlvbiBoYW5k
bGluZyBhbmQKKyAgICAgICAgY3Jvc3MtZXhlY3V0aW9uLWVuZ2luZSBjYWxscyBqdXN0IHdvcmsg
YW5kIHJlcXVpcmUgcHJldHR5IG11Y2ggbm8KKyAgICAgICAgYWRkaXRpb25hbCBvdmVyaGVhZC4K
KyAgICAgICAgCisgICAgICAgIFRoaXMgaW50ZXJwcmV0ZXIgaXMgMi0yLjV4IGZhc3RlciB0aGFu
IG91ciBvbGQgaW50ZXJwcmV0ZXIgb24gU3VuU3BpZGVyLAorICAgICAgICBWOCwgYW5kIEtyYWtl
bi4gVGhpcyBpcyB0aGUgImZpcnN0IGF0dGVtcHQiIHBlcmZvcm1hbmNlIC0gbm8gd29yayBoYXMg
YmVlbgorICAgICAgICBkb25lIHRvIGRpYWdub3NlIGFueSBwb3RlbnRpYWwgYm90dGxlbmVja3Mu
IE1hbnkgb2J2aW91cyBvbmVzIGV4aXN0LCBsaWtlCisgICAgICAgIHJlZHVjaW5nIHRoZSBudW1i
ZXIgb2YgaW5zdHJ1Y3Rpb25zIGltcGxlbWVudGVkIGFzIHNsb3cgY2FsbHMgdG8gQysrIGNvZGUK
KyAgICAgICAgYW5kIG1ha2luZyBwcm9wZXJ0eSBhY2Nlc3MgY2FjaGluZyBtb3JlIGFnZ3Jlc3Np
dmUuCisgICAgICAgIAorICAgICAgICBBcyBhbiBhZGRpdGlvbmFsIGNoYW5nZSwgdGhpcyBwYXRj
aCBtYWtlcyBieXRlY29kZSBkdW1waW5nIGFuZCBKU1ZhbHVlCisgICAgICAgIGR1bXBpbmcgd29y
ayBpbiByZWxlYXNlIGJ1aWxkcywgc2luY2UgZGVidWdnaW5nIHNvbWUgb2YgdGhlIG5hc3RpZXIK
KyAgICAgICAgYXNwZWN0cyBvZiB0aGlzIHBhdGNoIHdvdWxkIGhhdmUgYmVlbiBpbXBvc3NpYmxl
IHdpdGhvdXQgdGhhdC4gQW5kIEkKKyAgICAgICAgZG9uJ3QgYmVsaWV2ZSB0aGF0IHdlIGNhcmUg
YWJvdXQgdGhlIG1pbmlzY3VsZSBjb2RlIGJsb2F0IHRoYXQgdGhpcworICAgICAgICBpbnRyb2R1
Y2VzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9M
aW5rQnVmZmVyLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojp1bmxpbmtDYWxscyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5saW5rSW5jb21pbmdD
YWxscyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAg
ICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OkV2YWxD
b2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6Ompl
dHRpc29uKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUNvZGVCbG9jazo6aml0Q29tcGlsZSk6Cisg
ICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJs
b2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFuZGxl
Qnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
Omhhc09wdGltaXplZFJlcGxhY2VtZW50KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRM
TEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkRnJlcXVlbnRF
eGl0U2l0ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZG9udEpJVEFueXRpbWVTb29uKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6aml0U29vbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGxpbnRFeGVj
dXRlQ291bnRlcik6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAg
KEpTQzo6SW5zdHJ1Y3Rpb246Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9MTElu
dENhbGxMaW5rSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86
OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5M
TEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xp
bmtlZCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAg
ICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dl
bmVyYXRlZENvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5l
cmF0ZWRDb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoVGhpcyk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0RGlyZWN0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3Ry
dWN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaCk6CisgICAg
ICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5o
OgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBoZWFwL0FsbG9jYXRpb25TcGFjZS5oOgorICAg
ICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAg
ICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpj
dXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAg
ICAgIChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjppc09wY29k
ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUpOgorICAgICAg
ICAoSlNDOjpJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKToKKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bj
b2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAg
KEpTQzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lz
dGVyRmlsZS5oOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcDogQWRkZWQu
CisgICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKToKKyAg
ICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBqaXQv
SklULmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAg
ICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6
OkpJVDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAg
IChKU0M6OkpJVENvZGU6OmlzT3B0aW1pemluZ0pJVCk6CisgICAgICAgIChKU0M6OkpJVENvZGU6
OmlzQmFzZWxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6SklUQ29kZSk6CisgICAg
ICAgICogaml0L0pJVERyaXZlci5oOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlSWZBcHByb3By
aWF0ZSk6CisgICAgICAgIChKU0M6OmppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUpOgor
ICAgICAgICAqIGppdC9KSVRFeGNlcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6aml0VGhyb3cp
OgorICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVC
X0ZVTkNUSU9OKToKKyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiBs
bGludDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRDb21tb24uaDogQWRkZWQuCisgICAg
ICAgICogbGxpbnQvTExJbnREYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpE
YXRhOjpEYXRhKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6On5EYXRhKToKKyAgICAgICAg
KiBsbGludC9MTEludERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpl
eGNlcHRpb25JbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6b3Bjb2Rl
TWFwKToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnRzLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkxMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpM
TEludDo6Z2V0RXZhbEVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0UHJvZ3Jh
bUVudHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuaDogQWRkZWQu
CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9M
TEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJl
dGVyVGhyb3cpOgorICAgICAgICAoSlNDOjpMTEludDo6cmV0dXJuVG9UaHJvd0ZvclRocm93bkV4
Y2VwdGlvbik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93KToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmNhbGxUb1Rocm93KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlv
bnMuaDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hF
TFBFUl9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6
CisgICAgICAgIChKU0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoSlNDOjpMTEludDo6
Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9zdENhbGwpOgorICAgICAg
ICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWND
YWxsKToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRkZWQuCisgICAgICAgICog
bGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludE9mZnNl
dHNFeHRyYWN0b3I6OmR1bW15KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsaW50L0xM
SW50VGh1bmtzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbyk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRyeVRo
dW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0
RW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNh
bGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpM
TEludDo6ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6cHJv
Z3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRlZC4K
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDogQWRkZWQuCisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBBZGRlZC4KKyAgICAg
ICAgKiBvZmZsaW5lYXNtL2FzbS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc3Qu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYjogQWRkZWQuCisg
ICAgICAgICogb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmI6IEFkZGVkLgorICAgICAgICAqIG9m
ZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20vb2Zmc2V0cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9wYXJz
ZXIucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcmVnaXN0ZXJzLnJiOiBBZGRlZC4K
KyAgICAgICAgKiBvZmZsaW5lYXNtL3NldHRpbmdzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZs
aW5lYXNtL3RyYW5zZm9ybS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYucmI6
IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOiBBZGRl
ZC4KKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAoSlNDOjpD
b21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0
YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmpldHRpc29uQ29kZUJsb2NrKToKKyAgICAgICAgKEpT
Qzo6RXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpzYW1wbGluZ0Rl
c2NyaXB0aW9uKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5h
bCk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAg
ICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbCk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6YmFzZWxpbmVDb2RlQmxvY2tGb3IpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDYWxsKToKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ29uc3RydWN0KToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwp
OgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5oOgorICAgICAgICAoSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0aW9u
SGFybmVzcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6cHJlcGFyZUZvckV4ZWN1dGlvbik6Cisg
ICAgICAgIChKU0M6OnByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbik6CisgICAgICAgICogcnVu
dGltZS9KU0FjdGl2YXRpb24uaDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9uOjp0ZWFyT2Zm
KToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2Vs
bC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERh
dGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTU3RyaW5nLmg6CisgICAgICAgICogcnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgICog
cnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6ZGVzY3JpcHRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJp
YWJsZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChK
U0M6Ok9wdGlvbnM6OmluaXRpYWxpemVPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnMuaDoKKyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAg
ICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisK
KzEyLTAxLTE4ICBSb2xhbmQgVGFrYWNzICA8dGFrYWNzLnJvbGFuZEBzdHVkLnUtc3plZ2VkLmh1
PgogCiAgICAgICAgIENyb3NzLXBsYXRmb3JtIHByb2Nlc3NvciBjb3JlIGNvdW50ZXIgZml4CiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjU0MApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEw
NTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmln
aHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MCw2ICs2
MCw3IEBAIGFsbCA6IFwKICAgICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU3RyaW5n
UHJvdG90eXBlLmx1dC5oIFwKICAgICBkb2NzL2J5dGVjb2RlLmh0bWwgXAorICAgIExMSW50QXNz
ZW1ibHkuaC5QSE9OWSBcCiAjCiAKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwpAQCAtMTA0
LDMgKzEwNSwxMSBAQCBIZWFkZXJEZXRlY3Rpb24uaCA6CiAJZWNobyA+ICRACiAKIGVuZGlmCisK
KyMgQXNzZW1ibHkgZm9yIHRoZSBMb3dMZXZlbEludGVycHJldGVyCisKKyMgVGhpcyBidWlsZHMg
ZXZlcnkgdGltZSBiZWNhdXNlIHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGRlc2NyaWJlCisjIHRo
ZSBkZXBlbmRlbmNpZXMgdXNpbmcgbWFrZS4gSW5zdGVhZCwgdGhlIGFzc2VtYmxlciB3aWxsIGRl
Y2lkZSBvbgorIyBpdHMgb3duIHdoZXRoZXIgb3Igbm90IGl0IGRpZCBhbnl0aGluZyB0aGF0IHdv
dWxkIGxlYWQgdG8gYSBjaGFuZ2UuCitMTEludEFzc2VtYmx5LmguUEhPTlk6CisJcnVieSAkKEph
dmFTY3JpcHRDb3JlKS9vZmZsaW5lYXNtL2FzbS5yYiAkKEphdmFTY3JpcHRDb3JlKS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yID4gTExJbnRBc3NlbWJseS5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcs
NiArNywxNSBAQAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBz
ZWN0aW9uICovCisJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICov
ID0geworCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9u
TGlzdCA9IDBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi87CisJCQlidWlsZFBo
YXNlcyA9ICgKKwkJCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZl
ZCBTb3VyY2VzICovLAorCQkJKTsKKwkJCW5hbWUgPSAiTExJbnQgT2Zmc2V0cyI7CisJCQlwcm9k
dWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOworCQl9OwogCQk2NUZCM0Y2NjA5RDExRTkxMDBG
NDlERUIgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYQWdncmVnYXRlVGFy
Z2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDY1RkIzRjc3MDlEMTFFQkQwMEY0OURF
QiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVy
aXZlZCBTb3VyY2VzIiAqLzsKQEAgLTE0LDYgKzIzLDkgQEAKIAkJCQk2NUZCM0Y2NTA5RDExRTkx
MDBGNDlERUIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTVEMzVERUUxMEM3
QzE0MEIwMDg2NDhCMiAvKiBHZW5lcmF0ZSBEVHJhY2UgaGVhZGVyICovLAogCQkJKTsKKwkJCWRl
cGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0
RGVwZW5kZW5jeSAqLywKKwkJCSk7CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlw
cm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQl9OwpAQCAtNDgsNiArNjAsMTAgQEAK
IAkJMEJBQzk0QTAxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQUM5NDlF
MTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJDRDgzNTcxNDg1ODQ1
MjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEJDRDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFy
eUNoYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCRjI4QTI4MTFBMzNEQzMwMDYz
OEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRG
IC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2lu
dHMuY3BwICovOyB9OworCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBv
aW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYw
QjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBCODM5QzE0QkNGNDYzMDA4
ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNw
cCAqLzsgfTsKKwkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5ODE0QkNG
NDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5
cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4
M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBI
YW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQUIxNEJDRjVCQjAw
ODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNz
aW9uUmFuZ2VJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTU4LDkgKzc0LDEzIEBACiAJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBN
ZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBC
ODNCNzE0QkNGOEUxMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0
RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJu
T2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZz
ZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJ
bmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBG
QzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE1RjE1RjE0QjdBNzNFMDA1
REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1Bh
dGhzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYxNkQ3MjYxNDJDMzlDMDAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEg
LyogQml0VmVjdG9yLmNwcCAqLzsgfTsKIAkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJ
VERyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0
QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVz
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
MjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3OTE0QkU3Mjcz
MDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAv
KiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50
aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0MkRBNTEzRjNC
MUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTZGMTQ3MzhGMzEwMDEyMUU0
RiAvKiBERkdDb2RlQmxvY2tzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTcw
MTQ3MzhGMzUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBE
RkdDb2RlQmxvY2tzLmNwcCAqLzsgfTsKQEAgLTcxLDYgKzkxLDE5IEBACiAJCTBGNDMxNzM4MTQ2
QkFDNjkwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0
YWJsZUhhbmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwODAxNEJBNTcy
NzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhj
ZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi87IH07CisJ
CTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlFMTRCQTdGODIwMEJG
RTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxw
ZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovOyBzZXR0aW5ncyA9
IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLXVudXNlZC1wYXJhbWV0ZXIiOyB9OyB9OworCQkwRjQ2
ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRIZWxwZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2
ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsK
KwkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RDE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0ExNEJCQjE2
QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2
ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNjE0QkJCMTY5MDBC
RkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExv
d0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0
ZXIuY3BwICovOyB9OworCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRl
cnByZXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBEMjE0QkJE
MTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEu
Y3BwICovOyB9OworCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRjE0QkJC
M0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxs
UmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3Bw
ICovOyB9OworCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Njgw
RDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAw
NDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjYyMDE3NDE0M0ZDRDMzMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nl
c3NEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjYyMDE3MjE0M0ZDRDJGMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAxNzUxNDNG
Q0QzNzAwNjhCNzdDIC8qIERGR09wZXJhbmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYyMDE3MTE0M0ZDRDJGMDA2OEI3N0MgLyogREZHT3BlcmFu
ZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
Mzc1LDcgKzQwOCw3IEBACiAJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZm
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5
QUUxMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYg
LyogREZHUmVwYXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkJCMDlCRTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87IH07
CiAJCTg2QkIwOUMxMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1Njcw
MkYgLyogREZHUmVwYXRjaC5oICovOyB9OwotCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyog
TWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyB9
OworCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQw
MEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fz
c2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NkM1NjhERDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICov
OyB9OwogCQk4NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTEx
QTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07CiAJCTg2QzU2OEUy
MTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQ
U0Fzc2VtYmxlci5oICovOyB9OwpAQCAtNzM4LDYgKzc3MSwyMCBAQAogLyogRW5kIFBCWEJ1aWxk
RmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9u
ICovCisJCTBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0
YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlw
cm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0QkE3RkQ5
MDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gIkxMSW50IE9mZnNldHMiOworCQl9OworCQkwRjQ2
ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJ
aXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2
OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0g
MTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyOwor
CQkJcmVtb3RlSW5mbyA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJMTQxMjE0
QkUwQTQ5MTkwRTAwNDgwMjU1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlz
YSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkw
RkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTc4Myw2ICs4MzAsMTUg
QEAKIC8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1RTAwQkZF
MjcyIC8qIENvcHlGaWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7
CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hh
cmUvbWFuL21hbjEvOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJ
CSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKIAkJ
NURCQjE1MTExMzFEMEIxMzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7
CkBAIC04MjMsNiArODc5LDEwIEBACiAJCTBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJl
YWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEJDRDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhcnlDaGFuZ2UuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IExMSW50RW50cnlwb2ludHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0
RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IExMSW50RW50cnlwb2ludHMuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExM
SW50VGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50
VGh1bmtzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50VGh1bmtzLmg7IHBhdGggPSBs
bGludC9MTEludFRodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNB
NTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29kZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgz
QTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgzMyw5ICs4OTMsMTMgQEAKIAkJMEYwQjgzQjMxNEJD
Rjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBNZXRob2RDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbFJlc29sdmVJbmZvLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBD
YWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxs
TGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRDYWxsTGlu
a0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3QTczQTAw
NURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb21tb25TbG93UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYx
NkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdBMTRCRTcyNzMw
MEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEV4ZWN1dGlvbkhhcm5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVDb252ZW50aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1Jl
ZmVyZW5jZUhhcnZlc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFr
UmVmZXJlbmNlSGFydmVzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1
NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDYsNiArOTEwLDIwIEBACiAJCTBGNDMxNzM2MTQ2
QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gTGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhj
ZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRFeGNlcHRpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3
MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1
ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJl
ZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8q
IExMSW50RXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBMTEludEV4Y2VwdGlvbnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8q
IExMSW50RXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTElu
dEV4Y2VwdGlvbnMuaDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxw
ZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50SGVscGVy
cy5jcHA7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50SGVscGVycy5oOyBwYXRoID0gbGxp
bnQvTExJbnRIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEEx
MTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgcGF0
aCA9IGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENvbW1vbi5oOyBwYXRoID0gbGxpbnQv
TExJbnRDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzYxNEJC
QjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMTEludE9mZmxpbmVBc21Db25maWcuaDsgcGF0aCA9IGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmNwcDsgcGF0
aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmg7
IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnREYXRhLmNwcDsgcGF0aCA9IGxs
aW50L0xMSW50RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENG
MTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTExJbnREYXRhLmg7IHBhdGggPSBsbGludC9MTEludERhdGEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxs
UmV0dXJuVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSG9z
dENhbGxSZXR1cm5WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4
MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5dGVDb2Rl
Q2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNvZGVDYWNo
ZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVDb2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5jb25kaXRpb25hbEZpbmFs
aXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYyMDE2RDE0M0ZDRDJGMDA2
OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBERkdBYnN0cmFjdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdBYnN0cmFjdFN0
YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NTEsNiArMTYyOSwxMyBA
QAogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFt
ZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAv
KiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFF
MEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3
b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTYw
OSw2ICsxNjk0LDcgQEAKIAkJCQkxNDEyMTEyMDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAq
LywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk2NTEx
MjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RjE0QkE3
RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAogCQkJKTsKIAkJCW5h
bWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjM5LDYgKzE3
MjUsNyBAQAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVBy
ZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAog
CQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLywKKwkJCQkwRjQ2ODA5
QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3
QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVy
ICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKQEAgLTE2
NzcsNiArMTc2NCwyOCBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9
OworCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLywKKwkJCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYg
LyogTExJbnRFbnRyeXBvaW50cy5oICovLAorCQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludFRodW5rcy5jcHAgKi8sCisJCQkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExM
SW50VGh1bmtzLmggKi8sCisJCQkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0
YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICov
LAorCQkJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovLAorCQkJ
CTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLywK
KwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAg
Ki8sCisJCQkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIu
aCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNw
cCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmgg
Ki8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8s
CisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovLAorCQkJ
CTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICov
LAorCQkJKTsKKwkJCW5hbWUgPSBsbGludDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CiAJCTE0MTIxMTAwMEE0ODc3MjYwMDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNzA5LDYgKzE4MTgsOCBAQAogCQkxNDI5
RDkyQzBFRDIyRDcwMDBCODk2MTkgLyogaml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxS
ZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RD
YWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklU
RXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4
Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJ
VENvZGVNYXAuaCAqLywKQEAgLTIxMzIsNiArMjI0Myw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMw
MDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oICovLAorCQkJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJu
ZXNzLmggKi8sCiAJCQkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRo
cy5oICovLAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywK
IAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLApAQCAtMjQ5Miw2
ICsyNjA1LDggQEAKIAkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3RTE0QkVB
QTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovLAorCQkJCTBGMEZDNDU4MTRC
RDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovLAogCQkJCTBGMEI4M0I4MTRC
Q0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovLAog
CQkJCTBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovLAog
CQkJCTBGMEI4M0IyMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3BwICov
LApAQCAtMzAzMCw3ICszMTQ1LDE2IEBACiAJCQkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8q
IFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZF
N0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRC
N0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
NDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21t
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTElu
dE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENEMTRCQkIxN0Qw
MEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2
ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRo
dW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENv
ZGVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyog
SGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0
RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTMwMzksNyArMzE2
MywxMSBAQAogCQkJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0lu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9i
YWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1
QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25I
YXJuZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyog
Q29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0YxNEJF
QUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGN0IyOTRBMTRDM0NEMjkwMDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRDMTRDM0NENDMwMDdDM0RCMSAvKiBERkdCeXRlQ29k
ZUNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTMwNTIsNiArMzE4MCwyNCBAQAogLyogRW5kIFBC
WEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0
IHNlY3Rpb24gKi8KKwkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0
c0V4dHJhY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29u
ZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ciIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIg
LyogU291cmNlcyAqLywKKwkJCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3Jr
cyAqLywKKwkJCQkwRjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovLAorCQkJ
KTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBG
NDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsK
KwkJCW5hbWUgPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0TmFtZSA9IEpT
Q0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAwRjQ2ODA4RjE0
QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJcHJvZHVj
dFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKIAkJMTQxMjExMUYw
QTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJn
ZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9t
IiAqLzsKQEAgLTMxNzgsMTEgKzMzMjQsMjkgQEAKIAkJCQkxNEJENTlCRTBBM0U4RjkwMDBCQUY1
OUMgLyogdGVzdGFwaSAqLywKIAkJCQk5MzJGNUJEQTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICov
LAogCQkJCTY1MTEyMkY3MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBG
NDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCisJ
CQkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8sCiAJCQkpOwog
CQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTaGVsbFNj
cmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyog
R2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRC
dWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0g
KAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoU1JDUk9PVCkvbGxpbnQvTG93TGV2
ZWxBc3NlbWJsZXIuYXNtIiwKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIERlcml2ZWQgU291
cmNlcyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xM
SW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJ
CXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zm
c2V0cy9cIlxuXG4vdXNyL2Jpbi9lbnYgcnVieSBcIiR7U1JDUk9PVH0vb2ZmbGluZWFzbS9nZW5l
cmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiXCIgPCBcIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc21cIiA+IFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9M
TEludERlc2lyZWRPZmZzZXRzLmhcIlxuIjsKKwkJfTsKIAkJMzcxM0YwMTQxNDI5MDUyNDAwMzYz
ODdGIC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzICov
ID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKQEAgLTMzMjMsNiArMzQ4NywxNCBAQAogLyogRW5kIFBCWFNoZWxs
U2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8g
PSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIg
LyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRDBB
NDg3OTNDMDA0ODAyNTUgLyogU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWls
ZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTM1ODAsNyArMzc1
MiwxNCBAQAogCQkJCTg2NzA0Qjg2MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg2NzA0Qjg5MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5
bnRheENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZF
MjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBODE0QkE3
RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERh
dGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhv
c3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUExNEJDRjQ1
RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYw
QjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYwQjgzQjQxNEJDRjg2MDAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5m
by5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNjlFODZDMzE0QzZFNTUxMDAyQzJDNjIgLyogTnVt
YmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM1OTgsNiArMzc3NywxNiBAQAogLyog
RW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVGFyZ2V0
RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJ
CXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovOwor
CQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovOworCQl9OworCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFy
Z2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0
YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFj
dG9yICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQkxNDEyMTRCRjBBNDkxOTBFMDA0ODAyNTUg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CiAJCQl0YXJnZXQgPSAxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLzsK
QEAgLTM2MzEsNiArMzgyMCwxNDggQEAKIC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkwRjQ2
ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VS
X1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJ
CQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBn
bnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5BQkxFX09CSkNf
RVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlH
Q0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIk
KGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBO
TzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7
CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FS
Tl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVU
VVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJ
CSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJ
CQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVS
X1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0g
MTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gWUVTOworCQkJCVBST0RVQ1RfTkFNRSA9ICIk
KFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9T
RUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAk
KEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJ
CTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFS
Q0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklU
KSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9G
T1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9
IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19W
RVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FS
Tl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJ
TkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlF
UzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFS
Q0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRf
UFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkp
OworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1F
ID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVB
REVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZz
ZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOwor
CQl9OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFM
V0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRB
UkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZP
Uk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9T
VEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOwor
CQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJ
CQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FC
T1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5f
VFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhF
QURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJ
IiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VB
UkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43
OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1h
Y29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9E
VUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJ
CQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyog
UHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlB
UkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAg
PSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7
CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09C
SkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxl
cnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04g
PSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJ
R0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZB
UklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJ
CQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRz
IiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RF
UExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFN
RSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhT
ID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VB
UkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4
MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVy
aXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0
NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0g
IkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsK
KwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNU
X05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxp
bmc7CisJCX07CisJCTBGNDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovID0g
eworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0gewor
CQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFt
ZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1NSAvKiBEZWJ1
ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5n
cyA9IHsKQEAgLTM4NzIsNiArNDIwMywyOCBAQAogLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9u
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJ
CTBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLyA9IHsKKwkJCWlz
YSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJ
CTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODA5NzE0QkE3
RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIg
LyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0
aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJ
CWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFD
MTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3Jl
Z2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRp
b25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODBBRDE0QkE3RkQ5
MDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJl
bGVhc2UgKi8sCisJCQkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywK
KwkJCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJ
CQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJh
dGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUg
LyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20i
ICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJh
dGlvbnMgPSAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuaAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNkZWZp
bmUgRFVNUF9MSU5LX1NUQVRJU1RJQ1MgMAogI2RlZmluZSBEVU1QX0NPREUgMAogCi0jaW5jbHVk
ZSA8TWFjcm9Bc3NlbWJsZXIuaD4KKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNv
bnZlbnRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCeXRlY29kZUNvbnZlbnRp
b25zX2gKKyNkZWZpbmUgQnl0ZWNvZGVDb252ZW50aW9uc19oCisKKy8vIFJlZ2lzdGVyIG51bWJl
cnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNj
b3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKKy8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBO
ZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGlu
IHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCisvLyAgICAgIDB4MDAwMDAwMDAt
MHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBh
cmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJh
bWUuCisvLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9t
IDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBD
b2RlQmxvY2suCitzdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0g
MHg0MDAwMDAwMDsKKworI2VuZGlmIC8vIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24g
MTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIK
KyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZl
ci5oIgogI2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+
CkBAIC01OSw4ICs2MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogdXNpbmcgbmFtZXNwYWNlIERGRzsK
ICNlbmRpZgogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5H
KQotCiBzdGF0aWMgVVN0cmluZyBlc2NhcGVRdW90ZXMoY29uc3QgVVN0cmluZyYgc3RyKQogewog
ICAgIFVTdHJpbmcgcmVzdWx0ID0gc3RyOwpAQCAtMzU4LDEwICszNTcsMTAgQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjKSBjbwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBpICs9IG9wY29kZUxlbmd0aHNbZXhlYy0+aW50ZXJw
cmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbaV0udS5vcGNvZGUpXSkKICAgICAg
ICAgKytpbnN0cnVjdGlvbkNvdW50OwogCi0gICAgcHJpbnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7
ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocylc
blxuIiwKKyAgICBwcmludGYoIiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAl
ZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocylcblxu
IiwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25Db3VudCks
CiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNpemUo
KSAqIHNpemVvZihJbnN0cnVjdGlvbikpLAotICAgICAgICB0aGlzLCBtX251bVBhcmFtZXRlcnMs
IG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgdGhpcywgbV9udW1QYXJhbWV0ZXJzLCBt
X251bUNhbGxlZVJlZ2lzdGVycywgbV9udW1WYXJzKTsKIAogICAgIFZlY3RvcjxJbnN0cnVjdGlv
bj46OmNvbnN0X2l0ZXJhdG9yIGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICBW
ZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBpbnN0cnVjdGlvbnMoKS5l
bmQoKTsKQEAgLTg5MCw2ICs4ODksMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRl
KiBleGVjLCBjbwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0
LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7CisgICAgICAg
ICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3QiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CisgICAgICAgICAgICBwcmludFB1
dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwi
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX2dlbmVyaWM6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInB1dF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyODEs
OCArMTI4OCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAg
ICB9CiB9CiAKLSNlbmRpZiAvLyAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRShPUENPREVfU0FN
UExJTkcpCi0KICNpZiBEVU1QX0NPREVfQkxPQ0tfU1RBVElTVElDUwogc3RhdGljIEhhc2hTZXQ8
Q29kZUJsb2NrKj4gbGl2ZUNvZGVCbG9ja1NldDsKICNlbmRpZgpAQCAtMTQ0OSw2ICsxNDU0LDcg
QEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLAogewogICAgIHNldE51
bVBhcmFtZXRlcnMob3RoZXIubnVtUGFyYW1ldGVycygpKTsKICAgICBvcHRpbWl6ZUFmdGVyV2Fy
bVVwKCk7CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsKICAgICAKICAgICBpZiAob3RoZXIubV9yYXJl
RGF0YSkgewogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0xNDk3LDYg
KzE1MDMsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAg
QVNTRVJUKG1fc291cmNlKTsKICAgICAKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAg
aml0QWZ0ZXJXYXJtVXAoKTsKIAogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNTCiAgICAg
bGl2ZUNvZGVCbG9ja1NldC5hZGQodGhpcyk7CkBAIC0xNTE0LDcgKzE1MjEsMTEgQEAgQ29kZUJs
b2NrOjp+Q29kZUJsb2NrKCkKICNpZiBFTkFCTEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxFKQogICAg
IGR1bXBWYWx1ZVByb2ZpbGVzKCk7CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShMTElOVCkg
ICAgCisgICAgd2hpbGUgKG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWlu
Z0xMSW50Q2FsbHMuZW5kKCkpCisgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCkt
PnJlbW92ZSgpOworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKICNpZiBFTkFCTEUoSklUKQogICAg
IC8vIFdlIG1heSBiZSBkZXN0cm95ZWQgYmVmb3JlIGFueSBDb2RlQmxvY2tzIHRoYXQgcmVmZXIg
dG8gdXMgYXJlIGRlc3Ryb3llZC4KICAgICAvLyBDb25zaWRlciB0aGF0IHR3byBDb2RlQmxvY2tz
IGJlY29tZSB1bnJlYWNoYWJsZSBhdCB0aGUgc2FtZSB0aW1lLiBUaGVyZQpAQCAtMTcyNiw4ICsx
NzM3LDU1IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICNlbHNl
CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZVVubGlua2luZyA9IGZhbHNlOwogI2VuZGlm
Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogICAgIAorI2lmIEVOQUJMRShMTElOVCkK
KyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJldGVy
OworICAgIGlmICghaW50ZXJwcmV0ZXItPmVuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHNpemVf
dCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAm
aW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV07CisgICAgICAg
ICAgICBzd2l0Y2ggKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51
Lm9wY29kZSkpIHsKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0
XS51LnN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVj
dHVyZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAg
Y3VySW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgICAgICAgICAg
ICAgaWYgKEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgp
KQorICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls2
XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJr
ZWQoY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3Ry
dWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1
Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVj
dHVyZUNoYWluLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bMF0udS5v
cGNvZGUgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAo
c2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsg
aSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9u
ID0gJmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV07CisgICAg
ICAgICAgICBBU1NFUlQoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBd
LnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbAorICAgICAgICAgICAgICAgICAgIHx8IGlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3Bf
cmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CisgICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9u
WzNdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzNdLnUuc3Ry
dWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGN1
ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBjdXJJbnN0
cnVjdGlvbls0XS51Lm9wZXJhbmQgPSAwOworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAg
ICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhlYXA6Omlz
TWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRm
KCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAgICAg
ICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKICNpZiBFTkFCTEUoREZHX0pJ
VCkKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2UgYXJlLCB0aGVuIGpldHRp
c29uLgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2Fu
KCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7CkBAIC0xODQ4LDEwICsx
OTA2LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXIKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7ICsraSkKICAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAjaWYgRU5BQkxFKElOVEVS
UFJFVEVSKQotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0dXJl
cyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tp
XV0pOwotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMu
c2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZp
c2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsK
KyAgICBpZiAobV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAgICAg
IGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwg
aSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRv
ciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKKyAg
ICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXpl
KCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZp
c2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsK
KyAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMjA2MCw2ICsyMTIwLDEy
IEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiB7CiAgICAgaWYgKCEhbV9hbHRlcm5h
dGl2ZSkKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+dW5saW5rQ2FsbHMoKTsKKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5z
aXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5mb3NbaV0uaXNMaW5r
ZWQoKSkKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOworICAg
IH0KKyNlbmRpZgogICAgIGlmICghKG1fY2FsbExpbmtJbmZvcy5zaXplKCkgfHwgbV9tZXRob2RD
YWxsTGlua0luZm9zLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fZ2xvYmFs
RGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0yMDc0LDEwICsyMTQwLDM1IEBAIHZvaWQgQ29kZUJsb2Nr
Ojp1bmxpbmtDYWxscygpCiAKIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKCkK
IHsKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5n
TExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+
dW5saW5rKCk7CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRoaXMpOwogICAgIHdo
aWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2FsbHMuZW5kKCkpCiAg
ICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigpLT51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVw
YXRjaEJ1ZmZlcik7CiB9CisKK3Vuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhl
Y1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit7CisjaWYgRU5B
QkxFKExMSU5UKQorICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfYmVnaW4pCisgICAgICAgICYmIHJldHVybkFkZHJlc3MudmFsdWUoKSA8
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQpKSB7CisgICAgICAgIEFTU0VSVChleGVj
LT5jb2RlQmxvY2soKSk7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSA9PSB0aGlz
KTsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkp
OworICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBleGVjLT5jdXJyZW50VlBDKCk7
CisgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbik7CisgICAgICAgIHJldHVybiBieXRlY29kZU9m
ZnNldChpbnN0cnVjdGlvbik7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CisjZW5kaWYKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiAxOworICAgIFZl
Y3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0gbV9y
YXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7CisgICAgaWYgKCFjYWxsSW5kaWNlcy5z
aXplKCkpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0
PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5v
ZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7Cit9CiAjZW5k
aWYKIAogdm9pZCBDb2RlQmxvY2s6OmNsZWFyRXZhbENhY2hlKCkKQEAgLTIxNzMsMjQgKzIyNjQs
NDUgQEAgYm9vbCBGdW5jdGlvbkNvZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERgogCiB2b2lkIFBy
b2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9
IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5n
SklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwog
ICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5q
ZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRXZhbENvZGVC
bG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklU
VHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGlj
X2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1p
emVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6amV0
dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVK
SVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7
CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENv
ZGVGb3IoKmdsb2JhbERhdGEoKSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6
IENvZGVGb3JDYWxsKTsKIH0KKwordm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAg
IHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRD
b21waWxlKGV4ZWMpOworfQorCit2b2lkIEV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgc3Rh
dGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUo
ZXhlYyk7Cit9CisKK3ZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGUoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgc3RhdGlj
X2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxl
Rm9yKGV4ZWMsIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2Fs
bCk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEwNTMwOSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBDb2RlQmxvY2tfaAogI2RlZmluZSBDb2Rl
QmxvY2tfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkNh
bGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0
LmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgpAQCAtNTAsNiArNTEsNyBAQAogI2luY2x1ZGUg
IkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKICNpbmNsdWRl
ICJMaW5lSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUHJlZGljdGlvblRy
YWNrZXIuaCIKQEAgLTY1LDE2ICs2NywxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCi0vLyBSZWdpc3RlciBudW1iZXJzIHVzZWQg
aW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0
byB0aGVpciByYW5nZXM6Ci0vLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUg
aW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2Fs
bCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgotLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZG
RkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2Fs
IHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgotLy8g
ICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAw
MDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2Nr
Lgotc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAw
MDA7Ci0KIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNz
IERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIAogICAgIGlubGluZSBpbnQgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lz
dGVyKGludCBhcmd1bWVudHNSZWdpc3RlcikgeyByZXR1cm4gYXJndW1lbnRzUmVnaXN0ZXIgLSAx
OyB9CiAKQEAgLTgzLDYgKzgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIsIHB1YmxpYyBXZWFrUmVmZXJlbmNl
SGFydmVzdGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENvcHlQYXJzZWRCbG9ja1RhZyB7IENvcHlQ
YXJzZWRCbG9jayB9OwogICAgIHByb3RlY3RlZDoKQEAgLTEyMyw3ICsxMjEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5hbHRlcm5hdGl2ZSgpOwogICAgICAgICAgICAg
QVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkg
PT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6Omlz
QmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICB9CiAjZW5kaWYKQEAgLTEzNCwxMSArMTMyLDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAotI2lmICFk
ZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFX09QQ09ERV9TQU1QTElORwogICAgICAgICB2b2lkIGR1
bXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmVzKGNvbnN0
IEluc3RydWN0aW9uKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmUoY29uc3Qg
Y2hhciogbmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBpbnQgb3BlcmFuZCkgY29uc3Q7Ci0jZW5k
aWYKIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJp
Y3RNb2RlOyB9CiAKQEAgLTE5NCwxNSArMTkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9kQ2FsbExpbmtJbmZvLCB1bnNpZ25lZCwg
Z2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4obV9tZXRob2RDYWxsTGlua0luZm9z
LmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCksIGJ5dGVjb2RlSW5kZXgpKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KFJldHVybkFkZHJl
c3NQdHIgcmV0dXJuQWRkcmVzcykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX3JhcmVE
YXRhKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgVmVjdG9yPENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5t
X2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKLSAgICAgICAgICAgIGlmICghY2FsbEluZGljZXMuc2l6
ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgcmV0dXJuIGJpbmFy
eVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCwgdW5zaWduZWQsIGdldENh
bGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwg
Z2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9m
ZnNldDsKLSAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChFeGVjU3Rh
dGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7CkBAIC0yMjMsMTEgKzIx
MSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgbV9pbmNvbWlu
Z0NhbGxzLnB1c2goaW5jb21pbmcpOwogICAgICAgICB9CisjaWYgRU5BQkxFKExMSU5UKQorICAg
ICAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoTExJbnRDYWxsTGlua0luZm8qIGluY29taW5nKQor
ICAgICAgICB7CisgICAgICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5wdXNoKGluY29taW5n
KTsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKICAgICAgICAgCiAgICAgICAg
IHZvaWQgdW5saW5rSW5jb21pbmdDYWxscygpOwotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKIAotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUo
TExJTlQpCiAgICAgICAgIHZvaWQgc2V0SklUQ29kZU1hcChQYXNzT3duUHRyPENvbXBhY3RKSVRD
b2RlTWFwPiBqaXRDb2RlTWFwKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2ppdENvZGVNYXAg
PSBqaXRDb2RlTWFwOwpAQCAtMjM2LDcgKzIzMCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB7CiAgICAgICAgICAgICByZXR1cm4gbV9qaXRDb2RlTWFwLmdldCgpOwogICAgICAgICB9Cisj
ZW5kaWYKICAgICAgICAgCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHZvaWQgY3JlYXRl
REZHRGF0YUlmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCEhbV9kZmdE
YXRhKQpAQCAtMzM1LDEyICszMzEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICNl
bmRpZgogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldChJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAgICAgICAgeworICAgICAgICAg
ICAgQVNTRVJUKHJldHVybkFkZHJlc3MgPj0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSAmJiByZXR1
cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zKCkuZW5kKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5i
ZWdpbigpOwogICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgICB2b2lkIHNldElzTnVtZXJpY0Nv
bXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVtZXJp
Y0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgICAgICBi
b29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbigpIHsgcmV0dXJuIG1faXNOdW1lcmljQ29tcGFy
ZUZ1bmN0aW9uOyB9CkBAIC0zNTYsMTUgKzM1MSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgfQogICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCkK
ICAgICAgICAgeworI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKSAmJiAhRU5BQkxFKExMSU5U
KQorICAgICAgICAgICAgaWYgKEJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAoISFhbHRlcm5hdGl2
ZSgpKQogICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZSgpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZUxhdGVyKCk7CisjZW5kaWYKICAgICAg
ICAgfQogICAgICAgICAKLSNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGJvb2wgdXNlc09wY29kZShP
cGNvZGVJRCk7Ci0jZW5kaWYKIAogICAgICAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50KCkg
eyByZXR1cm4gbV9pbnN0cnVjdGlvbkNvdW50OyB9CiAgICAgICAgIHZvaWQgc2V0SW5zdHJ1Y3Rp
b25Db3VudCh1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50KSB7IG1faW5zdHJ1Y3Rpb25Db3VudCA9
IGluc3RydWN0aW9uQ291bnQ7IH0KQEAgLTM4NywxNyArMzg0LDE4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgeyBy
ZXR1cm4gZ2V0SklUQ29kZSgpLmdldEV4ZWN1dGFibGVNZW1vcnkoKTsgfQogICAgICAgICB2aXJ0
dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2Rl
KikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKSA9IDA7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBqaXRDb21waWxlKEV4ZWNTdGF0ZSopID0gMDsKICAgICAgICAgdmlydHVhbCBD
b2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29t
cGlsZVdpdGhERkcoKSA9IDA7CiAgICAgICAgIGJvb2wgaGFzT3B0aW1pemVkUmVwbGFjZW1lbnQo
KQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6
OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29k
ZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcmVwbGFjZW1lbnQo
KS0+Z2V0SklUVHlwZSgpID4gZ2V0SklUVHlwZSgpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAg
ICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50
KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwogICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBK
SVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6Omlz
QmFzZWxpbmVDb2RlKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAg
ICAgIEFTU0VSVChyZXBsYWNlbWVudCgpID09IHRoaXMpOwogICAgICAgICAgICAgfQogI2VuZGlm
CkBAIC00NTYsMTggKzQ1NCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGNs
ZWFyRXZhbENhY2hlKCk7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIHZvaWQg
YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbih1bnNpZ25lZCBwcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNl
SklUKCkpCi0gICAgICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5hcHBl
bmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBtX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKTsKICAgICAg
ICAgfQogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbih1bnNpZ25lZCBn
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9n
bG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik7CisgICAgICAgICAg
ICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbik7CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rp
b25BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBhZGRMTEludENhbGxMaW5rSW5mbygp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zLmFwcGVuZChMTElu
dENhbGxMaW5rSW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiAmbV9sbGludENhbGxMaW5rSW5m
b3MubGFzdCgpOworICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2
b2lkIHNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKHNpemVfdCBzaXplKSB7IG1fc3RydWN0
dXJlU3R1YkluZm9zLmdyb3coc2l6ZSk7IH0KQEAgLTQ3Niw4ICs0NzcsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbmZvKHVuc2lnbmVkIGdsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fZ2xvYmFs
RGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3Mu
YXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOworICAg
ICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGds
b2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOwogICAgICAgICB9CiAgICAgICAgIEdsb2JhbFJlc29s
dmVJbmZvJiBnbG9iYWxSZXNvbHZlSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJuIG1fZ2xvYmFsUmVz
b2x2ZUluZm9zW2luZGV4XTsgfQogICAgICAgICBib29sIGhhc0dsb2JhbFJlc29sdmVJbmZvQXRC
eXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CkBAIC02NzIsNyArNjcyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGFkZEZyZXF1ZW50RXhp
dFNpdGUoY29uc3QgREZHOjpGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAg
ICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsK
ICAgICAgICAgICAgIHJldHVybiBtX2V4aXRQcm9maWxlLmFkZChzaXRlKTsKICAgICAgICAgfQog
CkBAIC03NzcsNiArNzc3LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGNvcHlQ
b3N0UGFyc2VEYXRhRnJvbShDb2RlQmxvY2sqIGFsdGVybmF0aXZlKTsKICAgICAgICAgdm9pZCBj
b3B5UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgICAgICAKKyAgICAgICAgLy8g
RnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIEpJVHRpbmcga2lja3MgaW4sIGluIGEgbWl4
ZWQgbW9kZQorICAgICAgICAvLyBleGVjdXRpb24gd29ybGQuCisgICAgICAgIAorICAgICAgICB2
b2lkIGRvbnRKSVRBbnl0aW1lU29vbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRF
eGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRB
bnl0aW1lU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRBZnRlcldh
cm1VcCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9w
dGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB2b2lkIGppdFNvb24oKQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVG
b3JKSVRTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQzMl90IGxsaW50RXhl
Y3V0ZUNvdW50ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9sbGlu
dEV4ZWN1dGVDb3VudGVyOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICAvLyBGdW5jdGlv
bnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gdGllcmVkIGNvbXBpbGF0aW9uIGtpY2tzIGluLiBUaGlz
CiAgICAgICAgIC8vIGNvbnRyb2xzIGJvdGggd2hlbiB0aGUgb3B0aW1pemluZyBjb21waWxlciBp
cyBpbnZva2VkIGFuZCB3aGVuIE9TUgogICAgICAgICAvLyBlbnRyeSBoYXBwZW5zLiBUd28gdHJp
Z2dlcnMgZXhpc3Q6IHRoZSBsb29wIHRyaWdnZXIgYW5kIHRoZSByZXR1cm4KQEAgLTk4MSw3ICsx
MDA0LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgdGFsbHlGcmVxdWVudEV4aXRT
aXRlcygpIHsgfQogI2VuZGlmCiAgICAgICAgIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5B
QkxFKE9QQ09ERV9TQU1QTElORykKICAgICAgICAgdm9pZCBkdW1wKEV4ZWNTdGF0ZSosIGNvbnN0
IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiBiZWdpbiwgVmVjdG9yPEluc3Ry
dWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImKSBjb25zdDsKIAogICAgICAgICBDU3RyaW5nIHJlZ2lz
dGVyTmFtZShFeGVjU3RhdGUqLCBpbnQgcikgY29uc3Q7CkBAIC05OTEsNyArMTAxMyw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZSosIGlu
dCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBj
aGFyKiBvcCkgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRDYWxsT3AoRXhlY1N0YXRlKiwgaW50
IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNo
YXIqIG9wKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFB1dEJ5SWRPcChFeGVjU3RhdGUqLCBp
bnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3Qg
Y2hhciogb3ApIGNvbnN0OwotI2VuZGlmCiAgICAgICAgIHZvaWQgdmlzaXRTdHJ1Y3R1cmVzKFNs
b3RWaXNpdG9yJiwgSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3Q7CiAgICAgICAgIAogI2lmIEVOQUJM
RShERkdfSklUKQpAQCAtMTA1Miw5ICsxMDczLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IG1fc291cmNlOwogICAgICAgICB1bnNpZ25lZCBtX3Nv
dXJjZU9mZnNldDsKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgVmVjdG9yPHVu
c2lnbmVkPiBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zOwogICAgICAgICBWZWN0b3I8dW5z
aWduZWQ+IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uczsKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgICAgIFNlZ21lbnRlZFZlY3RvcjxMTEludENhbGxMaW5rSW5mbywgOD4gbV9sbGludENhbGxM
aW5rSW5mb3M7CisgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxMTEludENhbGxMaW5rSW5mbywg
QmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0xMSW50
Q2FsbHM7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBWZWN0b3I8U3RydWN0dXJl
U3R1YkluZm8+IG1fc3RydWN0dXJlU3R1YkluZm9zOwpAQCAtMTA2NSw5ICsxMDg4LDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlV2l0
aEFyaXR5Q2hlY2s7CiAgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxDYWxsTGlua0luZm8sIEJh
c2ljUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5nQ2FsbHM7CiAjZW5k
aWYKLSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExM
SU5UKQogICAgICAgICBPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IG1faml0Q29kZU1hcDsKLSAg
ICAgICAgCisjZW5kaWYKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgc3RydWN0IFdlYWtS
ZWZlcmVuY2VUcmFuc2l0aW9uIHsKICAgICAgICAgICAgIFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9u
KCkgeyB9CiAgICAgICAgICAgICAKQEAgLTExMzAsMTIgKzExNTQsMTQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgT3duUHRyPENvZGVCbG9jaz4gbV9hbHRlcm5hdGl2ZTsKICAgICAgICAg
CisgICAgICAgIGludDMyX3QgbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICAKICAgICAg
ICAgaW50MzJfdCBtX2ppdEV4ZWN1dGVDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1
bGF0aXZlU3VjY2Vzc0NvdW50ZXI7CiAgICAgICAgIHVpbnQzMl90IG1fc3BlY3VsYXRpdmVGYWls
Q291bnRlcjsKICAgICAgICAgdWludDhfdCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcjsKICAg
ICAgICAgdWludDhfdCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwotCisgICAgICAgIAog
ICAgICAgICBzdHJ1Y3QgUmFyZURhdGEgewogICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICAgICAgcHVibGljOgpAQCAtMTIwOCw2ICsxMjM0LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0
aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZShFeGVjU3RhdGUq
KTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC0xMjQyLDYgKzEyNjks
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNP
YmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRD
b21waWxlKEV4ZWNTdGF0ZSopOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1l
bnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYK
QEAgLTEyNzksNiArMTMwNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29w
ZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGppdENvbXBpbGUoRXhlY1N0YXRlKik7CiAgICAgICAgIHZpcnR1YWwgQ29k
ZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdp
dGhERkcoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RydWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luc3RydWN0aW9uLmgJKHJldmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTQ2VsbDsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7
CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CisgICAgc3RydWN0IExMSW50Q2FsbExpbmtJbmZv
OwogCiAjaWYgRU5BQkxFKEpJVCkKICAgICB0eXBlZGVmIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBQ
b2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5cGU7CkBAIC0xNDUsNiAr
MTQ2LDExIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rp
b24geworICAgICAgICBJbnN0cnVjdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuanND
ZWxsLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIEluc3RydWN0aW9uKE9w
Y29kZSBvcGNvZGUpCiAgICAgICAgIHsKICNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQ
UkVURVIpCkBAIC0xODAsNiArMTg2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAog
ICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5j
KSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7IH0KKyAgICAgICAgCisgICAgICAgIEluc3Ry
dWN0aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pIHsgdS5jYWxsTGlua0luZm8g
PSBjYWxsTGlua0luZm87IH0KIAogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBPcGNvZGUg
b3Bjb2RlOwpAQCAtMTg4LDYgKzE5Niw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
V3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3RydWN0dXJlQ2hhaW47CiAgICAgICAg
ICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxsOwogICAgICAgICAgICAgUHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKKyAgICAgICAgICAgIExMSW50Q2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm87CisgICAgICAgICAgICB2b2lkKiBwb2ludGVyOwogICAgICAg
ICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDYWxsTGlua0luZm9faAorI2RlZmluZSBMTElu
dENhbGxMaW5rSW5mb19oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOworCitzdHJ1Y3QgTExJ
bnRDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlu
a0luZm8+IHsKKyAgICBMTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgIH0KKyAgICAKKyAg
ICB+TExJbnRDYWxsTGlua0luZm8oKQorICAgIHsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisg
ICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0xpbmtlZCgpIHsg
cmV0dXJuIGNhbGxlZTsgfQorICAgIAorICAgIHZvaWQgdW5saW5rKCkKKyAgICB7CisgICAgICAg
IGNhbGxlZS5jbGVhcigpOworICAgICAgICBtYWNoaW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1i
bGVyQ29kZVB0cigpOworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92
ZSgpOworICAgIH0KKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOwor
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWNoaW5lQ29kZVRhcmdldDsKK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gTExJbnRDYWxsTGlua0luZm9faAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMDUzMDkpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyMyw2ICsxMjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfZ2V0
X2FyZ3VtZW50c19sZW5ndGgsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkLCA5KSBc
CiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uLCA5KSBcCisgICAgICAgIG1h
Y3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwgOSkgXAorICAgICAgICBtYWNybyhv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0
X2J5X2lkX3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX2dlbmVyaWMs
IDkpIFwKICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBcCkBAIC0yMDIsNiArMjA0LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgZW51bSB7IEZPUl9FQUNIX09QQ09E
RV9JRChPUENPREVfSURfRU5VTSkgfSBPcGNvZGVJRDsKICAgICAjdW5kZWYgT1BDT0RFX0lEX0VO
VU0KIAorICAgIGNvbnN0IGludCBtYXhPcGNvZGVMZW5ndGggPSA5OwogICAgIGNvbnN0IGludCBu
dW1PcGNvZGVJRHMgPSBvcF9lbmQgKyAxOwogCiAgICAgI2RlZmluZSBPUENPREVfSURfTEVOR1RI
UyhpZCwgbGVuZ3RoKSBjb25zdCBpbnQgaWQjI19sZW5ndGggPSBsZW5ndGg7CkBAIC0yMTgsNyAr
MjIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9JRChWRVJJ
RllfT1BDT0RFX0lEKTsKICAgICAjdW5kZWYgVkVSSUZZX09QQ09ERV9JRAogCi0jaWYgRU5BQkxF
KENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICNpZiBDT01QSUxFUihSVkNUKSB8fCBDT01QSUxF
UihJTlRFTCkKICAgICB0eXBlZGVmIHZvaWQqIE9wY29kZTsKICNlbHNlCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDcgQEAKICNpbmNsdWRlICJCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIgogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkxvd0xl
dmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSAiU3Ry
b25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKQEAgLTExNiwyNiArMTE3LDE2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGV4cGVjdGVkIGJ5IHRoZSBjYWxsZWUuCiAqLwogCi0jaWZu
ZGVmIE5ERUJVRwogc3RhdGljIGJvb2wgc19kdW1wc0dlbmVyYXRlZENvZGUgPSBmYWxzZTsKLSNl
bmRpZgogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUoYm9v
bCBkdW1wc0dlbmVyYXRlZENvZGUpCiB7Ci0jaWZuZGVmIE5ERUJVRwogICAgIHNfZHVtcHNHZW5l
cmF0ZWRDb2RlID0gZHVtcHNHZW5lcmF0ZWRDb2RlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
ZHVtcHNHZW5lcmF0ZWRDb2RlKTsKLSNlbmRpZgogfQogCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9y
OjpkdW1wc0dlbmVyYXRlZENvZGUoKQogewotI2lmbmRlZiBOREVCVUcKICAgICByZXR1cm4gc19k
dW1wc0dlbmVyYXRlZENvZGU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQog
CiBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKQEAgLTE0OCwxMCArMTM5
LDggQEAgSlNPYmplY3QqIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAKICAgICBtX2Nv
ZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25Db3VudChtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpKTsKIAotI2lmbmRlZiBOREVCVUcKICAgICBpZiAoc19kdW1wc0dlbmVyYXRlZENvZGUp
CiAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCkpOwotI2VuZGlmCiAKICAgICBpZiAoKG1fY29kZVR5cGUgPT0gRnVuY3Rpb25D
b2RlICYmICFtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpICYmICFtX2NvZGVCbG9j
ay0+dXNlc0FyZ3VtZW50cygpKSB8fCBtX2NvZGVUeXBlID09IEV2YWxDb2RlKQogICAgICAgICBz
eW1ib2xUYWJsZSgpLmNsZWFyKCk7CkBAIC0xMjY0LDkgKzEyNTMsNyBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgbV9j
b2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAj
ZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRH
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgog
ICAgICAgICBlbWl0T3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRk
Q29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE0MTksOSArMTQwNiw3IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgIG1fY29kZUJs
b2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlm
Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNv
bHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIGVtaXRP
cGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6
IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+
aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5
KSk7CkBAIC0xNDY2LDkgKzE0NTEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVz
b2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRF
UlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGlu
c3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBlbWl0T3Bjb2RlKHJlcXVpcmVzRHlu
YW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2Jh
bCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ4Niw5ICsx
NDY5LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1ldGhvZENoZWNrKAogCiBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBS
ZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSNpZiBFTkFC
TEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1pdE9wY29kZShv
cF9nZXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwpA
QCAtMTUxMyw5ICsxNDk0LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRBcgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQoUmVnaXN0
ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVl
KQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAg
ICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJh
c2UtPmluZGV4KCkpOwpAQCAtMTUzMSw5ICsxNTEwLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQdXRCeQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBt
X2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5z
aXplKCkpOwotI2VuZGlmCiAgICAgCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE4MjEsNyArMTc5OCwx
MSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoCiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7IC8v
IGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0
ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0luZm8oKSk7
CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewog
ICAgICAgICBlbWl0T3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0xOTIzLDcgKzE5MDQs
MTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdAogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAv
LyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lz
dGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkp
OworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsK
ICAgICAgICAgZW1pdE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMjE4Myw3ICsyMTY4
LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gKIHsKICAgICBt
X3VzZXNFeGNlcHRpb25zID0gdHJ1ZTsKICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShMTElO
VCkKKyAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5k
KDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jh
c2VTY29wZURlcHRoLCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF9vcF9jYXRjaCkpIH07CisjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5i
aW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5h
bWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKCkgfTsK
KyNlbmRpZgogI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAw
KSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3Bl
RGVwdGggKyBtX2Jhc2VTY29wZURlcHRoIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMDUzMDkp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTg0Niw3ICsxODQ2LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X2lkKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CisgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAg
ICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9
IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5oCShyZXZpc2lvbiAxMDUzMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDggQEAgaW5s
aW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNhc2Ugb3BfcHV0X3Nj
b3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6
CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoK
ICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxMDUz
MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUgIkRGR1JlcGF0Y2guaCIKKyNpbmNsdWRlICJI
b3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVk
ZSAiSW5saW5lQVNNLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTU2NCw0NSArNTY1
LDYgQEAgc2l6ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cgogICAgIHJldHVy
biBKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSks
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIERGR19P
UEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOwotRW5jb2RlZEpTVmFsdWUgREZHX09Q
RVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqKTsK
LQotI2lmIENQVShYODZfNjQpCi1hc20gKAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiOiIgIlxuIgotICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCi0gICAgIm1vdiAlcjEz
LCAlcmRpXG4iCi0gICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQVShYODYpCi1hc20g
KAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgot
U1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJtb3Yg
LTQwKCVlZGkpLCAlZWRpXG4iCi0gICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCi0gICAgImptcCAi
IFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNT
dGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKQotYXNtICgKLSIudGV4dCIgIlxu
IgotIi5hbGlnbiAyIiAiXG4iCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4i
Ci0iLnRodW1iIiAiXG4iCi0iLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIjoiICJcbiIKLSAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCi0gICAgImNweSByMCwg
cjUiICJcbiIKLSAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbmRpZgotCi1FbmNvZGVkSlNWYWx1
ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNT
dGF0ZSogZXhlYykKLXsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERh
dGEoKS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKLX0KLQogc3RhdGljIHZvaWQqIGhhbmRsZUhvc3RD
YWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxs
ZXJGcmFtZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNw
YWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlv
blNwYWNlLmgJKHJldmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0FsbG9jYXRpb25TcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiBuYW1l
c3BhY2UgSlNDIHsKIAogY2xhc3MgSGVhcDsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IGNsYXNzIE1hcmtlZEJsb2NrOwogCiBjbGFzcyBBbGxvY2F0aW9uU3BhY2UgewpAQCAtNjgsNiAr
NjksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaHJpbmsoKTsKICAgICAKIHByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICBlbnVtIEFsbG9j
YXRpb25FZmZvcnQgeyBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQsIEFsbG9jYXRpb25DYW5GYWlsIH07
CiAgICAgCiAgICAgdm9pZCogYWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDEwNTMwOSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04Mjks
NyArODI5LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZwogICAg
ICAgICBtX29iamVjdFNwYWNlLnNldEhpZ2hXYXRlck1hcmsobWF4KHByb3BvcnRpb25hbEJ5dGVz
LCBtX21pbkJ5dGVzUGVyQ3ljbGUpKTsKICAgICB9CiAgICAgSkFWQVNDUklQVENPUkVfR0NfRU5E
KCk7Ci0KKyAgICAKICAgICAoKm1fYWN0aXZpdHlDYWxsYmFjaykoKTsKIH0KIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Niw2ICs0Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBKU1ZhbHVl
OwogICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXI7CiAgICAgY2xhc3MgUmVn
aXN0ZXJGaWxlOwogICAgIGNsYXNzIFVTdHJpbmc7CkBAIC0xMjksMTAgKzEzMCwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhh
c2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBj
bGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNzIEFsbG9jYXRpb25TcGFjZTsK
LSAgICAgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwogICAgICAgICBmcmllbmQgY2xhc3Mg
Q29kZUJsb2NrOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBT
bG90VmlzaXRvcjsKIAogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1pbkV4dHJhQ29zdCA9
IDI1NjsKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtYXhFeHRyYUNvc3QgPSAxMDI0ICog
MTAyNDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkocmV2
aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzAxLDcgKzMwMSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbigKICNlbmRpZgogCiAgICAgQVNTRVJUKEhlYXA6OmlzTWFya2Vk
KGNlbGwpKTsKLQorICAgIAogICAgIGlmIChpc0pTU3RyaW5nKGNlbGwpKSB7CiAgICAgICAgIEpT
U3RyaW5nOjp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0b3Ip
OwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlLmgJKHJldmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiBjbGFzcyBIZWFwOwogY2xhc3MgSlNDZWxsOwogY2xhc3MgTGl2ZU9iamVjdEl0ZXJh
dG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgV2Vha0dDSGFuZGxlOwog
Y2xhc3MgU2xvdFZpc2l0b3I7CiAKQEAgLTc5LDYgKzgwLDggQEAgcHVibGljOgogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1bmN0b3I6OlJldHVyblR5cGUgZm9yRWFj
aEJsb2NrKCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKyAgICAKICAgICAvLyBbIDMyLi4uIDI1NiBdCiAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBwcmVjaXNlU3RlcCA9IE1hcmtlZEJsb2NrOjphdG9tU2l6ZTsKICAgICBzdGF0aWMgY29uc3Qg
c2l6ZV90IHByZWNpc2VDdXRvZmYgPSAyNTY7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAxMDUzMDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAg
LTExOSw2ICsxMTksOSBAQCBuYW1lc3BhY2UgSlNDICB7CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVS
KQogICAgICAgICBJbnN0cnVjdGlvbiogcmV0dXJuVlBDKCkgY29uc3QgeyByZXR1cm4gdGhpc1tS
ZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKTsgfQogI2VuZGlmCisjaWYgRU5BQkxFKExMSU5U
KQorICAgICAgICBJbnN0cnVjdGlvbiogY3VycmVudFZQQygpIGNvbnN0IHsgcmV0dXJuIGJpdHdp
c2VfY2FzdDxJbnN0cnVjdGlvbio+KHRoaXNbUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50XS50
YWcoKSk7IH0KKyNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1l
KiBjYWxsZXJGcmFtZSkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmls
ZTo6Q2FsbGVyRnJhbWVdID0gY2FsbGVyRnJhbWU7IH0KICAgICAgICAgdm9pZCBzZXRTY29wZUNo
YWluKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4o
dGhpcylbUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluXSA9IHNjb3BlQ2hhaW47IH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAko
cmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQAogI2luY2x1ZGUg
IkpJVC5oIgogI2VuZGlmCiAKLSNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JL
QVJPVU5EIChFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgJiYgIWRlZmluZWQoX19s
bHZtX18pKQorI2RlZmluZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQgKChF
TkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkgJiYgIWRl
ZmluZWQoX19sbHZtX18pKQogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC01NDcsMTcgKzU0
Nyw0MSBAQCBJbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIoKQogewogfQogCi12b2lkIEludGVycHJl
dGVyOjppbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKQorSW50ZXJwcmV0ZXI6On5JbnRlcnByZXRl
cigpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxF
KExMSU5UKQorICAgIGlmIChtX2VuYWJsZWQpCisgICAgICAgIGRlbGV0ZVtdIG1fb3Bjb2RlVGFi
bGU7CisjZW5kaWYKK30KKwordm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShMTEludDo6RGF0
YSogbGxpbnREYXRhLCBib29sIGNhblVzZUpJVCkKK3sKKyNpZiBFTkFCTEUoQ09NUFVURURfR09U
T19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoQ09NUFVURURfR09U
T19JTlRFUlBSRVRFUikKKyAgICAvLyBIYXZpbmcgTExJbnQgZW5hYmxlZCwgYnV0IG5vdCBiZWlu
ZyBhYmxlIHRvIHVzZSB0aGUgSklULCBhbmQgbm90IGhhdmluZworICAgIC8vIGEgY29tcHV0ZWQg
Z290byBpbnRlcnByZXRlciwgaXMgbm90IHN1cHBvcnRlZC4gTm90IGJlY2F1c2Ugd2UgY2Fubm90
CisgICAgLy8gc3VwcG9ydCBpdCwgYnV0IGJlY2F1c2UgSSBkZWNpZGVkIHRvIGRyYXcgdGhlIGxp
bmUgYXQgdGhlIG51bWJlciBvZgorICAgIC8vIHBlcm11dGF0aW9ucyBvZiBleGVjdXRpb24gZW5n
aW5lcyB0aGF0IEkgd2FudGVkIHRoaXMgY29kZSB0byBncm9rLgorICAgIEFTU0VSVChjYW5Vc2VK
SVQpOworI2VuZGlmCiAgICAgaWYgKGNhblVzZUpJVCkgeworI2lmIEVOQUJMRShMTElOVCkKKyAg
ICAgICAgbV9vcGNvZGVUYWJsZSA9IGxsaW50RGF0YS0+b3Bjb2RlTWFwKCk7CisgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpCisgICAgICAgICAgICBtX29wY29k
ZUlEVGFibGUuYWRkKG1fb3Bjb2RlVGFibGVbaV0sIHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7
CisjZWxzZQogICAgICAgICAvLyBJZiB0aGUgSklUIGlzIHByZXNlbnQsIGRvbid0IHVzZSBqdW1w
IGRlc3RpbmF0aW9ucyBmb3Igb3Bjb2Rlcy4KICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpIHsKICAgICAgICAgICAgIE9wY29kZSBvcGNvZGUg
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaSkpOwogICAgICAg
ICAgICAgbV9vcGNvZGVUYWJsZVtpXSA9IG9wY29kZTsKICAgICAgICAgfQorI2VuZGlmCiAgICAg
fSBlbHNlIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bjb2RlVGFibGUgPSBuZXcg
T3Bjb2RlW251bU9wY29kZUlEc107CisjZW5kaWYKICAgICAgICAgcHJpdmF0ZUV4ZWN1dGUoSW5p
dGlhbGl6ZUFuZFJldHVybiwgMCwgMCk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IG51bU9wY29kZUlEczsgKytpKQpAQCAtNjY3LDkgKzY5MSwxMSBAQCB2b2lkIEludGVy
cHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtCiAKIGJvb2wgSW50ZXJwcmV0ZXI6OmlzT3Bj
b2RlKE9wY29kZSBvcGNvZGUpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVU
RVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElO
VCkKKyNpZiAhRU5BQkxFKExMSU5UKQogICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1
cm4gb3Bjb2RlID49IDAgJiYgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KG9wY29kZSkpIDw9IG9wX2VuZDsKKyNlbmRpZgogICAgIHJldHVybiBvcGNvZGUgIT0g
SGFzaFRyYWl0czxPcGNvZGU+OjplbXB0eVZhbHVlKCkKICAgICAgICAgJiYgIUhhc2hUcmFpdHM8
T3Bjb2RlPjo6aXNEZWxldGVkVmFsdWUob3Bjb2RlKQogICAgICAgICAmJiBtX29wY29kZUlEVGFi
bGUuY29udGFpbnMob3Bjb2RlKTsKQEAgLTcyNiwxMSArNzUyLDExIEBAIE5FVkVSX0lOTElORSBi
b29sIEludGVycHJldGVyOjp1bndpbmRDYWwKICAgICAvLyBoYXZlIHRvIHN1YnRyYWN0IDEuCiAj
aWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIGlmIChjYWxsZXJGcmFt
ZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQotICAgICAgICBieXRlY29kZU9mZnNldCA9IGNv
ZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAg
Ynl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBj
YWxsRnJhbWUtPnJldHVyblBDKCkpOwogICAgIGVsc2UKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQg
PSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsK
ICNlbGlmIEVOQUJMRShKSVQpCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBj
b2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBD
KCkpOwogI2Vsc2UKICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZz
ZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAxOwogI2VuZGlmCkBAIC01MTcwLDEwICs1MTk2
LDEwIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcihDYWwKICAgICAgICAg
Ynl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFt
ZS0+cmV0dXJuVlBDKCkpOwogI2lmIEVOQUJMRShKSVQpCiAgICAgZWxzZQotICAgICAgICBieXRl
Y29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5y
ZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5
dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2VuZGlm
CiAjZWxzZQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9m
ZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVy
Q29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5Q
QygpKTsKICNlbmRpZgogICAgIGxpbmVOdW1iZXIgPSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1i
ZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCAtIDEpOwogICAgIHNvdXJjZUlEID0g
Y2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZp
c2lvbiAxMDUzMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ2Vs
bC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1
ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVy
RmlsZS5oIgogCkBAIC00NSw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1
bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xv
YmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQ
cm9ncmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNo
YWluTm9kZTsKQEAgLTkwLDE5ICs5MiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEludGVycHJldGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOwogICAgIHB1YmxpYzoKICAgICAgICAgSW50ZXJwcmV0ZXIoKTsKKyAgICAgICAg
fkludGVycHJldGVyKCk7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBj
YW5Vc2VKSVQpOworICAgICAgICB2b2lkIGluaXRpYWxpemUoTExJbnQ6OkRhdGEqLCBib29sIGNh
blVzZUpJVCk7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKSB7IHJldHVy
biBtX3JlZ2lzdGVyRmlsZTsgfQogICAgICAgICAKICAgICAgICAgT3Bjb2RlIGdldE9wY29kZShP
cGNvZGVJRCBpZCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQp
OwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgICAgICByZXR1
cm4gbV9vcGNvZGVUYWJsZVtpZF07CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIGlkOwpAQCAt
MTEyLDcgKzExNiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bj
b2RlSUQoT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5p
dGlhbGl6ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVO
QUJMRShMTElOVCkKKyAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKKyAgICAg
ICAgICAgIHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CisjZWxpZiBFTkFCTEUo
Q09NUFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShv
cGNvZGUpKTsKICAgICAgICAgICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2Rl
KSk7CkBAIC0xMjIsNiArMTI5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIG9wY29kZTsKICNlbmRpZgogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGVu
YWJsZWQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9lbmFibGVkOworICAgICAg
ICB9CiAKICAgICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCkBAIC0xODksNyArMjAxLDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSBtX3JlZ2lzdGVyRmls
ZTsKICAgICAgICAgCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYg
RU5BQkxFKExMSU5UKQorICAgICAgICBPcGNvZGUqIG1fb3Bjb2RlVGFibGU7IC8vIE1hcHMgT3Bj
b2RlSUQgPT4gT3Bjb2RlIGZvciBjb21waWxpbmcKKyAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9w
Y29kZUlEPiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBk
ZWNvbXBpbGluZworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAg
ICAgIE9wY29kZSBtX29wY29kZVRhYmxlW251bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQg
PT4gT3Bjb2RlIGZvciBjb21waWxpbmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlE
PiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBp
bGluZwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVn
aXN0ZXJGaWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oCShyZXZpc2lvbiAxMDUzMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYg
KzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsK
ICAgICBjbGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIAogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFJlZ2lzdGVyRmlsZSk7CkBAIC04MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIq
KTsKICAgICAgICAgdm9pZCByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9pZCBh
ZGRUb0NvbW1pdHRlZEJ5dGVDb3VudChsb25nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJu
VmFsdWUuaCIKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIklubGluZUFTTS5o
IgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNWYWx1ZUlubGluZU1ldGhvZHMu
aCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitleHRlcm4g
IkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUoKTsKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JF
VFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhl
Y1N0YXRlKik7CisKKyNpZiBDUFUoWDg2XzY0KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RS
SU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgorICAg
ICJtb3YgJXIxMywgJXJkaVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04o
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUo
WDg2KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIK
KyAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgorICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgor
ICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKK2FzbSAoCisi
LnRleHQiICJcbiIKKyIuYWxpZ24gMiIgIlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIlxuIgorIi50aHVtYiIgIlxuIgorIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJB
TShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgorICAg
ICJjcHkgcjAsIHI1IiAiXG4iCisgICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZW5kaWYKKworZXh0
ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRI
b3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1cm5W
YWx1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorI2RlZmluZSBIb3N0Q2FsbFJl
dHVyblZhbHVlX2gKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENBTExJTkdf
Q09OVkVOVElPTl9JU19TVERDQUxMCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BU
SU9OIENERUNMCisjZWxzZQorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTgor
I2VuZGlmCisKK25hbWVzcGFjZSBKU0MgeworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NU
X0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Cit9CisK
KyNlbmRpZiAvLyBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDggQEAgdm9pZCBKSVQ6OnBy
aXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmlsZV93aWxs
X2NhbGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX25ld19zY29wZSkKICAgICAgICAgREVG
SU5FX09QKG9wX3B1c2hfc2NvcGUpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1
dF9ieV9pbmRleCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCkBAIC00ODcsNiAr
NDg5LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX3Bvc3RfaW5jKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfcHJlX2RlYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9pbmMpCisgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92YWwp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2dsb2JhbCkKQEAgLTUyNiw2
ICs1MzAsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiBKSVRDb2Rl
IEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2spCiB7
CisgICAgcHJpbnRmKCJDb21waWxpbmcgSklUIGNvZGUhXG4iKTsKKyAgICAKICNpZiBFTkFCTEUo
VkFMVUVfUFJPRklMRVIpCiAgICAgbV9jYW5CZU9wdGltaXplZCA9IG1fY29kZUJsb2NrLT5jYW5D
b21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC02OTAsNyArNjk2LDcgQEAgSklUQ29kZSBKSVQ6
OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgogICAgICAgICBpbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbiA9IG1fY29kZUJsb2NrLT5zdHJ1Y3R1cmVTdHViSW5mbyhtX21ldGhvZENhbGxDb21waWxh
dGlvbkluZm9baV0ucHJvcGVydHlBY2Nlc3NJbmRleCkuY2FsbFJldHVybkxvY2F0aW9uOwogICAg
IH0KIAotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUo
TExJTlQpCiAgICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQpIHsKICAgICAgICAgQ29tcGFjdEpJVENv
ZGVNYXA6OkVuY29kZXIgaml0Q29kZU1hcEVuY29kZXI7CiAgICAgICAgIGZvciAodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IG1fbGFiZWxzLnNpemUoKTsgKyti
eXRlY29kZU9mZnNldCkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJl
dmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBK
SVRDb2RlKCkgeyB9CiAjZW5kaWYKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gSklUVHlwZSB7
IEhvc3RDYWxsVGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsKKyAgICAgICAgZW51bSBKSVRU
eXBlIHsgTm9uZSwgSG9zdENhbGxUaHVuaywgSW50ZXJwcmV0ZXJUaHVuaywgQmFzZWxpbmVKSVQs
IERGR0pJVCB9OwogICAgICAgICAKICAgICAgICAgc3RhdGljIEpJVFR5cGUgYm90dG9tVGllckpJ
VCgpCiAgICAgICAgIHsKQEAgLTY2LDggKzY2LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmV0dXJuIERGR0pJVDsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGlj
IGJvb2wgaXNPcHRpbWl6aW5nSklUKEpJVFR5cGUgaml0VHlwZSkKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIGppdFR5cGUgPT0gREZHSklUOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBzdGF0aWMgYm9vbCBpc0Jhc2VsaW5lQ29kZShKSVRUeXBlIGppdFR5cGUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IEludGVycHJldGVyVGh1bmsgfHwgaml0
VHlwZSA9PSBCYXNlbGluZUpJVDsKKyAgICAgICAgfQorICAgICAgICAKICNpZiBFTkFCTEUoSklU
KQogICAgICAgICBKSVRDb2RlKCkKKyAgICAgICAgICAgIDogbV9qaXRUeXBlKE5vbmUpCiAgICAg
ICAgIHsKICAgICAgICAgfQogCkBAIC03NSw2ICs4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgOiBtX3JlZihyZWYpCiAgICAgICAgICAgICAsIG1faml0VHlwZShqaXRUeXBlKQog
ICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaml0VHlwZSAhPSBOb25lKTsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciAhKCkgY29uc3QKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUg
KzMzLDIxIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdE
cml2ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgog
aW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoRXhlY1N0YXRlKiBleGVjLCBPd25Q
dHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6
SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklU
VHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWV4ZWMtPmdsb2Jh
bERhdGEoKS5jYW5Vc2VKSVQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisgICAgY29k
ZUJsb2NrLT51bmxpbmtJbmNvbWluZ0NhbGxzKCk7CisgICAgCiAgICAgYm9vbCBkZmdDb21waWxl
ZCA9IGZhbHNlOwogICAgIGlmIChqaXRUeXBlID09IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAg
ZGZnQ29tcGlsZWQgPSBERkc6OnRyeUNvbXBpbGUoZXhlYywgY29kZUJsb2NrLmdldCgpLCBqaXRD
b2RlKTsKQEAgLTU1LDEwICs2MSw3IEBAIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJp
YXRlKEV4ZWMKICAgICAgICAgfQogICAgICAgICBqaXRDb2RlID0gSklUOjpjb21waWxlKCZleGVj
LT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay5nZXQoKSk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BD
T0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVk
Q29kZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9y
dHVuaXR5KCk7Ci0jZW5kaWYKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGlu
Z09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cigpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY2LDEwICs2
OSwxNSBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShFeGVjCiAKIGlubGlu
ZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoRXhlY1N0YXRlKiBleGVjLCBP
d25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFyZWRTeW1ib2xU
YWJsZSomIHN5bWJvbFRhYmxlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CisgICAgaWYg
KGppdFR5cGUgPT0gY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIAogICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEo
KTsKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAg
IGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpE
RkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlRnVuY3Rpb24oZXhl
YywgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwpAQCAt
ODQsMTEgKzkyLDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaQog
ICAgICAgICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNv
ZGVCbG9jay5nZXQoKSwgJmppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgfQotI2lmICFFTkFC
TEUoT1BDT0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2Vu
ZXJhdGVkQ29kZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGlu
Z09wcG9ydHVuaXR5KCk7Ci0jZW5kaWYKLSAgICAKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVj
b2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGpp
dENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJldmlz
aW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5l
cmljVGhyb3coSlNHbG9iYWxEYQogCiBFeGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9u
VmFsdWUsIFJldHVybkFkZHJlc3NQdHIgZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1cm4gZ2Vu
ZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAgICByZXR1
cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1bHRMb2Nh
dGlvbikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNw
cAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNzAsNDUgKzIxNzAsMTMgQEAgREVGSU5FX1NUVUJf
RlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlu
bGluZSBDYWxsRnJhbWUqIGFyaXR5Q2hlY2tGb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lz
dGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCi17Ci0g
ICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKTsK
LSAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgQ29kZUJsb2NrKiBu
ZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVG
b3Ioa2luZCk7Ci0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOwotCi0gICAgLy8gVGhpcyBlbnN1cmVzIGVu
b3VnaCBzcGFjZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1bWVudHMg
cGFzc2VkIGJ5IHRoZSBjYWxsZXIuCi0gICAgaWYgKCFyZWdpc3RlckZpbGUtPmdyb3coY2FsbEZy
YW1lLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29k
ZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
QVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpOwotCi0gICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1l
IGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVm
aW5lZC4KLSAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAt
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwotICAgIFJlZ2lzdGVyKiBzcmMgPSBjYWxsRnJh
bWUtPnJlZ2lzdGVycygpOwotICAgIFJlZ2lzdGVyKiBkc3QgPSBjYWxsRnJhbWUtPnJlZ2lzdGVy
cygpICsgZGVsdGE7Ci0KLSAgICBpbnQgaTsKLSAgICBpbnQgZW5kID0gLUNhbGxGcmFtZTo6b2Zm
c2V0Rm9yKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKLSAgICBmb3IgKGkgPSAtMTsgaSA+
PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0gc3JjW2ldOwotCi0gICAgZW5kIC09IGRlbHRh
OwotICAgIGZvciAoIDsgaSA+PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0ganNVbmRlZmlu
ZWQoKTsKLQotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUo
ZHN0KTsKLSAgICBBU1NFUlQoKHZvaWQqKW5ld0NhbGxGcmFtZSA8PSByZWdpc3RlckZpbGUtPmVu
ZCgpKTsKLSAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElP
Tih2b2lkKiwgb3BfY2FsbF9hcml0eUNoZWNrKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFN
RShzdGFja0ZyYW1lKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5j
YWxsRnJhbWU7CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3Io
Y2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOworICAgIENh
bGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNh
bGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDYWxsKTsKICAgICBpZiAo
IW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2
b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKQEAgLTIyMjEs
NyArMjE4OSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKIAog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAgICBD
YWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0Zy
YW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgQ2FsbEZyYW1lKiBuZXdD
YWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFj
a0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7CiAgICAgaWYgKCFuZXdDYWxs
RnJhbWUpCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0
YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVy
Zmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxMDUzMDkpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDggKzI2LDEwIEBACiAjaWZuZGVmIEpTSW50ZXJmYWNlSklUX2gKICNkZWZpbmUgSlNJ
bnRlcmZhY2VKSVRfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1
ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTU3RyaW5n
LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAj
aW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRDb21tb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDb21t
b25faAorI2RlZmluZSBMTEludENvbW1vbl9oCisKKyNkZWZpbmUgTExJTlRfRVhFQ1VUSU9OX1RS
QUNJTkcgMAorI2RlZmluZSBMTElOVF9IRUxQRVJfVFJBQ0lORyAwCisKKyNlbmRpZiAvLyBMTElu
dENvbW1vbl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkxMSW50RGF0YS5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSW5zdHJ1Y3Rp
b24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiT3Bjb2Rl
LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitEYXRhOjpEYXRhKCkK
KyAgICA6IG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKG5ldyBJbnN0cnVjdGlvblttYXhPcGNvZGVM
ZW5ndGggKyAxXSkKKyAgICAsIG1fb3Bjb2RlTWFwKG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXSkK
K3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heE9wY29kZUxlbmd0aCArIDE7ICsraSkKKyAg
ICAgICAgbV9leGNlcHRpb25JbnN0cnVjdGlvbnNbaV0udS5wb2ludGVyID0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSk7CisjZGVmaW5lIE9Q
Q09ERV9FTlRSWShvcGNvZGUsIGxlbmd0aCkgbV9vcGNvZGVNYXBbb3Bjb2RlXSA9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50XyMjb3Bjb2RlKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoT1BD
T0RFX0VOVFJZKTsKKyN1bmRlZiBPUENPREVfRU5UUlkKK30KKworRGF0YTo6fkRhdGEoKQorewor
ICAgIGRlbGV0ZVtdIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIGRlbGV0ZVtdIG1fb3Bj
b2RlTWFwOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludERhdGFfaAorI2RlZmluZSBMTEludERh
dGFfaAorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisK
K25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTElu
dCB7CisKKyNpZiBFTkFCTEUoTExJTlQpCitjbGFzcyBEYXRhIHsKK3B1YmxpYzoKKyAgICBEYXRh
KCk7CisgICAgfkRhdGEoKTsKKyAgICAKKyAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsK
KyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fb3Bjb2RlTWFwOworICAgIH0KK3ByaXZhdGU6CisgICAgSW5zdHJ1Y3Rpb24qIG1fZXhj
ZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIE9wY29kZSogbV9vcGNvZGVNYXA7Cit9OworI2Vsc2Ug
Ly8gRU5BQkxFKExMSU5UKQorCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWlzc2lu
Zy1ub3JldHVybiIKKyNlbmRpZgorCitjbGFzcyBEYXRhIHsKK3B1YmxpYzoKKyAgICBJbnN0cnVj
dGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9Cit9OworCisjaWYgQ09NUElMRVIo
Q0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKworI2VuZGlmIC8v
IEVOQUJMRShMTElOVCkKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAv
LyBMTEludERhdGFfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
bnRyeXBvaW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCisKKyNpbmNsdWRl
ICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiTExJbnRU
aHVua3MuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSklUQ29k
ZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0eUNoZWNrKQoreworICAgIGlm
ICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9y
Q2FsbCkgeworICAgICAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNy
b0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJv
bG9ndWUpKSkpOworICAgICAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0
cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
aykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKGtp
bmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0
RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYo
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpKSkpOworICAgICAgICBhcml0eUNoZWNrID0gTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZShn
bG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvciks
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgICAgICBhcml0eUNoZWNrID0gZ2xvYmFs
RGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvciku
Y29kZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0gQ29k
ZUZvckNvbnN0cnVjdCk7CisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElT
dHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspOworICAgIGFyaXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIo
ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKK30K
Kwordm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENv
ZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAg
ICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X2V2YWxfcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihl
dmFsRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQor
Cit2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklU
Q29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAg
ICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkpKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElT
dHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVu
ayk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgTExJbnRFbnRyeXBvaW50c19oCisjZGVmaW5lIExMSW50RW50
cnlwb2ludHNfaAorCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgRXZhbENvZGVCbG9jazsKK2NsYXNzIEpJVENvZGU7CitjbGFz
cyBKU0dsb2JhbERhdGE7CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI7CitjbGFzcyBNYWNy
b0Fzc2VtYmxlckNvZGVSZWY7CitjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOworCituYW1lc3BhY2Ug
TExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLCBKSVRDb2RlJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0
eUNoZWNrKTsKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYp
Owordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBKSVRDb2RlJik7CisK
K2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFdmFs
Q29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRFdmFsRW50cnlwb2ludChn
bG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworaW5saW5lIHZvaWQgZ2V0RW50cnlwb2ludChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFByb2dyYW1Db2RlQmxvY2sqLCBKSVRDb2RlJiBqaXRDb2Rl
KQoreworICAgIGdldFByb2dyYW1FbnRyeXBvaW50KGdsb2JhbERhdGEsIGppdENvZGUpOworfQor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50RW50cnlwb2lu
dHNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0
aW9ucy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIK
KyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1
ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUg
Ikxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTElu
dCB7CisKK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvdyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9I
RUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzLlxuIiwgZ2xv
YmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Ro
cm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgZXhlYy0+Y29kZUJs
b2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGV4ZWMsIGV4ZWMtPnJldHVyblBDKCkpKTsKK30KKworSW5z
dHJ1Y3Rpb24qIHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVj
KQoreworICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkubGxpbnREYXRhLmV4Y2VwdGlvbklu
c3RydWN0aW9ucygpOworfQorCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUq
IGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEg
PSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJp
bnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKHJldHVyblRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0
YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGds
b2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxv
Y2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJuIGdsb2JhbERh
dGEtPmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKwordm9pZCogY2FsbFRv
VGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJf
VFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChjYWxsVG9UaHJvdyku
XG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBn
ZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAt
IGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAKKyAgICBy
ZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBv
bGluZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgTExJbnRFeGNlcHRpb25zX2gKKyNkZWZpbmUgTExJbnRFeGNl
cHRpb25zX2gKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNl
IExMSW50IHsKKworLy8gSnVzdCB0aHJvdyB0aGUgY3VycmVudGx5IGFjdGl2ZSBleGNlcHRpb24g
aW4gdGhlIGNvbnRleHQgb2YgdGhpcyBleGVjIHN0YXRlCisvLyBhbmQgc2V0IHVwIGFsbCBuZWNl
c3Nhcnkgc3RhdGUuCit2b2lkIGludGVycHJldGVyVGhyb3coRXhlY1N0YXRlKik7CisKKy8vIFRl
bGxzIHlvdSB3aGVyZSB0byBqdW1wIHRvIGlmIHlvdSB3YW50IHRvIHJldHVybi10by10aHJvdywg
YWZ0ZXIgeW91J3ZlIGFscmVhZHkKKy8vIHNldCB1cCBhbGwgaW5mb3JtYXRpb24gbmVlZGVkIHRv
IHRocm93IHRoZSBleGNlcHRpb24uCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvd0ZvclRocm93
bkV4Y2VwdGlvbihFeGVjU3RhdGUqKTsKKworLy8gU2F2ZXMgdGhlIGN1cnJlbnQgUEMgaW4gdGhl
IGdsb2JhbCBkYXRhIGZvciBzYWZlLWtlZXBpbmcsIGFuZCBnaXZlcyB5b3UgYSBQQworLy8gdGhh
dCB5b3UgY2FuIHRlbGwgdGhlIGludGVycHJldGVyIHRvIGdvIHRvLCB3aGljaCB3aGVuIGFkdmFu
Y2VkIGJldHdlZW4gMQorLy8gYW5kIDkgc2xvdHMgd2lsbCBnaXZlIHlvdSBhbiAiaW5zdHJ1Y3Rp
b24iIHRoYXQgdGhyZWFkcyB0byB0aGUgaW50ZXJwcmV0ZXIncworLy8gZXhjZXB0aW9uIGhhbmRs
ZXIuIE5vdGUgdGhhdCBpZiB5b3UgZ2l2ZSBpdCB0aGUgUEMgZm9yIGV4Y2VwdGlvbiBoYW5kbGlu
ZywKKy8vIGl0J3Mgc21hcnQgZW5vdWdoIHRvIGp1c3QgcmV0dXJuIHRoYXQgUEMgd2l0aG91dCBk
b2luZyBhbnl0aGluZyBlbHNlOyB0aGlzCisvLyBsZXRzIHlvdSB0aHJlYWQgZXhjZXB0aW9uIGhh
bmRsaW5nIHRocm91Z2ggY29tbW9uIGhlbHBlciBmdW5jdGlvbnMgdXNlZCBieQorLy8gb3RoZXIg
aGVscGVycy4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSosIEluc3RydWN0
aW9uKik7CisKKy8vIFVzZSB0aGlzIHdoZW4geW91J3JlIHRocm93aW5nIHRvIGEgY2FsbCB0aHVu
ay4KK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnRFeGNlcHRpb25zX2gKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTM0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTExJbnRIZWxwZXJzLmgiCisKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJD
YWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKKyNpbmNsdWRlICJIb3N0
Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJK
SVREcml2ZXIuaCIKKyNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKKyNpbmNsdWRlICJKU0J5dGVB
cnJheS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAi
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3Qu
aCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRl
ICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorI2luY2x1ZGUg
Ikxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCisjZGVmaW5lIExMSU5UX09QKGluZGV4KSAo
ZXhlYy0+dW5jaGVja2VkUihwY1tpbmRleF0udS5vcGVyYW5kKSkKKyNkZWZpbmUgTExJTlRfT1Bf
QyhpbmRleCkgKGV4ZWMtPnIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisKKyNkZWZpbmUgTExJTlRf
UkVUVVJOX1RXTyhmaXJzdCwgc2Vjb25kKSBkbyB7ICAgICAgIFwKKyAgICAgICAgdW5pb24geyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHN0cnVjdCB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB2b2lkKiBh
OyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB2b2lkKiBiOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gcGFpcjsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGludDY0X3QgaTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSBfX3J0X3U7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX19ydF91LnBhaXIuYSA9IGZpcnN0OyAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgX19ydF91LnBhaXIuYiA9IHNlY29uZDsgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fcnRfdS5pOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9FTkRfSU1QTCgp
IExMSU5UX1JFVFVSTl9UV08ocGMsIGV4ZWMpCisKKyNkZWZpbmUgTExJTlRfVEhST1coZXhjZXB0
aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNHbG9i
YWxEYXRhJiBfX3RfZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsgICAgICAgIFwKKyAg
ICAgICAgX190X2dsb2JhbERhdGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAg
ICAgICAgIFwKKyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKwor
I2RlZmluZSBMTElOVF9DSEVDS19FWENFUFRJT04oKSBkbyB7ICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIGlmIChVTkxJS0VMWShleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgeyAg
IFwKKyAgICAgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9FTkQoKSBkbyB7
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0JSQU5D
SChvcGNvZGUsIGNvbmRpdGlvbikgZG8geyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IGJvb2wgX19iX2NvbmRpdGlvbiA9IChjb25kaXRpb24pOyAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChfX2JfY29uZGl0aW9uKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwYyArPSBwY1tPUENPREVf
TEVOR1RIKG9wY29kZSkgLSAxXS51Lm9wZXJhbmQ7ICAgICAgICBcCisgICAgICAgIGVsc2UgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wY29kZSk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRf
UkVUVVJOKHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNWYWx1ZSBfX3Jf
cmV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfT1AoMSkgPSBfX3JfcmV0dXJu
VmFsdWU7ICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0VO
RF9JTVBMKGV4ZWMsIGNhbGxUYXJnZXQpIExMSU5UX1JFVFVSTl9UV08oKGNhbGxUYXJnZXQpLCAo
ZXhlYykpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgZXhjZXB0aW9uVG9U
aHJvdykgZG8geyAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2N0X2V4ZWMg
PSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5z
dHJ1Y3Rpb24qIF9fY3RfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBfX2N0X2dsb2JhbERhdGEgPSAoX19jdF9leGVj
KS0+Z2xvYmFsRGF0YSgpOyAgICAgIFwKKyAgICAgICAgX19jdF9nbG9iYWxEYXRhLmV4Y2VwdGlv
biA9IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRf
Q0FMTF9FTkRfSU1QTChfX2N0X2V4ZWMsIGNhbGxUb1Rocm93KF9fY3RfZXhlYywgX19jdF9wYykp
OyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9DSEVDS19FWENF
UFRJT04oZXhlYywgcGMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhl
Y1N0YXRlKiBfX2NjZV9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY2NlX3BjID0gKHBjKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKF9fY2NlX2V4ZWMt
Pmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExM
SU5UX0NBTExfRU5EX0lNUEwoX19jY2VfZXhlYywgY2FsbFRvVGhyb3coX19jY2VfZXhlYywgX19j
Y2VfcGMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfUkVU
VVJOKGV4ZWMsIHBjLCBjYWxsVGFyZ2V0KSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIEV4ZWNTdGF0ZSogX19jcl9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2NyX3BjID0gKHBjKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHZvaWQqIF9fY3JfY2FsbFRh
cmdldCA9IChjYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKF9fY3JfZXhlYy0+Y2FsbGVyRnJhbWUoKSwgX19j
cl9wYyk7ICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jcl9leGVjLCBfX2NyX2Nh
bGxUYXJnZXQpOyAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKK2V4dGVy
biAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSogZXhl
YywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkKK3sKKyAgICBw
cmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMldSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVk
XG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAg
ICAgICAgICAgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwK
KyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChw
Y1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGZyb21XaGVyZSwKKyAgICAgICAgICAgb3BlcmFu
ZCwKKyAgICAgICAgICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kKTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNT
dGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkK
K3sKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQyhvcGVyYW5kKS5qc1ZhbHVlKCk7Cisg
ICAgRW5jb2RlZFZhbHVlRGVzY3JpcHRvciBkZXNjcmlwdG9yOworICAgIGRlc2NyaXB0b3IuYXNJ
bnQ2NCA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVj
dXRpbmcgYmMjJXUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZDogJTA4eDolMDh4IiwKKyAgICAg
ICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHBj
IC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCksCisgICAgICAgICAg
IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNv
ZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUsCisgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAg
ICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCwKKyAgICAgICAgICAgZGVzY3JpcHRvci5hc0JpdHMu
dGFnLAorICAgICAgICAgICBkZXNjcmlwdG9yLmFzQml0cy5wYXlsb2FkKTsKKyNpZm5kZWYgTkRF
QlVHCisgICAgcHJpbnRmKCI6ICVzIiwgdmFsdWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAg
ICBwcmludGYoIlxuIik7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KHRyYWNlX3Byb2xvZ3VlKQoreworICAgIHByaW50ZigiJXAgLyAlcDogaW4gcHJvbG9ndWUuXG4i
LCBleGVjLT5jb2RlQmxvY2soKSwgZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK3N0YXRp
YyB2b2lkIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIq
IGNvbW1lbnQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBKU0Z1bmN0aW9u
KiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmpzRXhlY3V0YWJsZSgpOworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gJmV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOwor
ICAgIHByaW50ZigiJXAgLyAlcDogaW4gJXMgb2YgZnVuY3Rpb24gJXAsIGV4ZWN1dGFibGUgJXA7
IG51bVZhcnMgPSAldSwgbnVtUGFyYW1ldGVycyA9ICV1LCBudW1DYWxsZWVSZWdpc3RlcnMgPSAl
dS5cbiIsCisgICAgICAgICAgIGNvZGVCbG9jaywgZXhlYywgY29tbWVudCwgY2FsbGVlLCBleGVj
dXRhYmxlLAorICAgICAgICAgICBjb2RlQmxvY2stPm1fbnVtVmFycywgY29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCksIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworfQorCitMTElO
VF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKK3sKKyAgICB0
cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNhbGwgcHJvbG9ndWUiLCBDb2RlRm9yQ2FsbCk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3Vl
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4
ZWMsICJjb25zdHJ1Y3QgcHJvbG9ndWUiLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkK
K3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNhbGwgYXJpdHkgY2hlY2siLCBD
b2RlRm9yQ2FsbCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRy
YWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9n
dWUoZXhlYywgImNvbnN0cnVjdCBhcml0eSBjaGVjayIsIENvZGVGb3JDb25zdHJ1Y3QpOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZSkKK3sKKyAgICBwcmlu
dGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMldSwgIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJs
b2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHBjIC0gZXhlYy0+Y29kZUJsb2Nr
KCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworI2lmbmRlZiBOREVCVUcKKyAgICBwcmludGYo
IiVzLCAiLCBvcGNvZGVOYW1lc1tleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9w
Y29kZUlEKHBjWzBdLnUub3Bjb2RlKV0pOworI2Vsc2UKKyAgICBwcmludGYoIm9wIyV1LCAiLCBl
eGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2Rl
KSk7CisjZW5kaWYKKyAgICBwcmludGYoInNjb3BlICVwXG4iLCBleGVjLT5zY29wZUNoYWluKCkp
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChzcGVjaWFsX3RyYWNl
KQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIHNwZWNpYWwgY2FzZSBiYyMldSwg
b3AjJXUsIHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCks
CisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmlu
c3RydWN0aW9ucygpLmJlZ2luKCksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRl
cnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBleGVjLT5y
ZXR1cm5QQygpLnZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitpbmxpbmUgYm9vbCBz
aG91bGRKSVQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIFlvdSBjYW4gbW9kaWZ5IHRoaXMg
dG8gdHVybiBvZmYgSklUdGluZyB3aXRob3V0IHJlYnVpbGRpbmcgdGhlIHdvcmxkLgorICAgIHJl
dHVybiBleGVjLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGVudHJ5X29zcikKK3sKKyAgICBpZiAoIXNob3VsZEpJVChleGVjKSkgeworICAgICAgICBl
eGVjLT5jb2RlQmxvY2soKS0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JF
VFVSTl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5qaXRDb21w
aWxlKGV4ZWMpOworICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5qaXRTb29uKCk7CisgICAgTExJTlRf
UkVUVVJOX1RXTyhleGVjLT5jb2RlQmxvY2soKS0+Z2V0SklUQ29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzQXRPZmZzZXQoMCksIGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3Jf
YXJpdHlDaGVjaykKK3sKKyAgICBpZiAoIXNob3VsZEpJVChleGVjKSkgeworICAgICAgICBleGVj
LT5jb2RlQmxvY2soKS0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVS
Tl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5qaXRDb21waWxl
KGV4ZWMpOworICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5qaXRTb29uKCk7CisgICAgTExJTlRfUkVU
VVJOX1RXTyhleGVjLT5jb2RlQmxvY2soKS0+Z2V0SklUQ29kZVdpdGhBcml0eUNoZWNrKCkuZXhl
Y3V0YWJsZUFkZHJlc3MoKSwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3Ny
KQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAg
CisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklU
QW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9
CisgICAgCisgICAgY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMpOworICAgIGNvZGVCbG9jay0+
aml0U29vbigpOworICAgIAorICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBK
SVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgCisgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGlu
ZU9mZnNldD4gbWFwOworICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgpLT5kZWNvZGUobWFwKTsK
KyAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcgPSBiaW5hcnlTZWFyY2g8Qnl0
ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25lZCwgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0
OjpnZXRCeXRlY29kZUluZGV4PihtYXAuYmVnaW4oKSwgbWFwLnNpemUoKSwgcGMgLSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIEFTU0VSVChtYXBwaW5nKTsKKyAgICBB
U1NFUlQobWFwcGluZy0+bV9ieXRlY29kZUluZGV4ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihw
YyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSkpOworICAgIAorICAgIHZvaWQq
IGp1bXBUYXJnZXQgPSBjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0
T2Zmc2V0KG1hcHBpbmctPm1fbWFjaGluZUNvZGVPZmZzZXQpOworICAgIEFTU0VSVChqdW1wVGFy
Z2V0KTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk5fVFdPKGp1bXBUYXJnZXQsIGV4ZWMpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKQoreworICAgIGlmIChzaG91bGRKSVQoZXhlYykp
IHsKKyAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmppdENvbXBpbGUoZXhlYyk7CisgICAgICAg
IGV4ZWMtPmNvZGVCbG9jaygpLT5qaXRTb29uKCk7CisgICAgfSBlbHNlCisgICAgICAgIGV4ZWMt
PmNvZGVCbG9jaygpLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjaykKK3sKKyNpZiBMTElOVF9I
RUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0IHdpdGggZXhl
YyA9ICVwLlxuIiwgZXhlYyk7CisgICAgcHJpbnRmKCJDb2RlQmxvY2sgPSAlcC5cbiIsIGV4ZWMt
PmNvZGVCbG9jaygpKTsKKyAgICBwcmludGYoIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4i
LCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgIHByaW50Zigi
TnVtIHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bVZhcnMpOworICAgIHBy
aW50ZigiQ3VycmVudCBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJw
cmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKKyNlbmRpZgorICAgIEFTU0VSVCgmZXhlYy0+
cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSA+IGV4
ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOworICAg
IGlmIChVTkxJS0VMWSghZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZp
bGUoKS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxs
ZWVSZWdpc3RlcnNdKSkpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7Cisg
ICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93
RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3coZXhlYyk7CisgICAgICAgIHBj
ID0gcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihleGVjKTsKKyAgICB9CisgICAgTExJ
TlRfRU5EX0lNUEwoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlD
aGVjaykKK3sKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5
Q2hlY2tGb3IoZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJG
aWxlKCksIENvZGVGb3JDYWxsKTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9
IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRp
b24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVy
VGhyb3coZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQq
PigxKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAg
ICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhl
YywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVG
b3JDb25zdHJ1Y3QpOworICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBleGVjID0gZXhlYy0+
Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0ZXJUaHJvdyhl
eGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KDEpLCBl
eGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQoreworI2lmIExMSU5UX0hF
TFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGluZyBhbiBhY3RpdmF0aW9uLCBleGVjID0g
JXAhXG4iLCBleGVjKTsKKyNlbmRpZgorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpT
QWN0aXZhdGlvbjo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYywgc3RhdGljX2Nhc3Q8
RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlYy0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgp
KSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goYWN0
aXZhdGlvbikpOworICAgIExMSU5UX1JFVFVSTihKU1ZhbHVlKGFjdGl2YXRpb24pKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCit7CisgICAgSlNWYWx1
ZSBhcmd1bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGV4ZWMtPnVuY2hl
Y2tlZFIocGNbMV0udS5vcGVyYW5kKSA9IGFyZ3VtZW50czsKKyAgICBleGVjLT51bmNoZWNrZWRS
KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50
czsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0
ZV90aGlzKQoreworICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0gYXNGdW5jdGlvbihleGVj
LT5jYWxsZWUoKSk7CisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIENvbnN0cnVjdERh
dGEgY29uc3RydWN0RGF0YTsKKyAgICBBU1NFUlQoY29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKCkt
PmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVj
dFR5cGVKUyk7CisjZW5kaWYKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBK
U1ZhbHVlIHByb3RvID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmIChwcm90by5pc09i
amVjdCgpKQorICAgICAgICBzdHJ1Y3R1cmUgPSBhc09iamVjdChwcm90byktPmluaGVyaXRvcklE
KGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgZWxzZQorICAgICAgICBzdHJ1Y3R1cmUgPSBjb25z
dHJ1Y3Rvci0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpOwor
ICAgIAorICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1
cmUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcykKK3sKKyAg
ICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIEFTU0VSVCh2MS5pc1By
aW1pdGl2ZSgpKTsKKyAgICBMTElOVF9SRVRVUk4odjEudG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpCit7CisgICAgTExJTlRfUkVU
VVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25ld19hcnJheSkKK3sKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhl
YywgYml0d2lzZV9jYXN0PEpTVmFsdWUqPigmTExJTlRfT1AoMikpLCBwY1szXS51Lm9wZXJhbmQp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5j
b25zdGFudEJ1ZmZlcihwY1syXS51Lm9wZXJhbmQpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdleHApCit7CisgICAgUmVnRXhwKiByZWdF
eHAgPSBleGVjLT5jb2RlQmxvY2soKS0+cmVnZXhwKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYg
KCFyZWdFeHAtPmlzVmFsaWQoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlU3ludGF4RXJy
b3IoZXhlYywgIkludmFsaWQgZmxhZyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikp
OworICAgIExMSU5UX1JFVFVSTihSZWdFeHBPYmplY3Q6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9ub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9lcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4
ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSkKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKCFKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OnN0cmlj
dEVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3RlcSkKK3sKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xl
YW4oanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3NlcSkK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0
ZXJlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPGZhbHNlPihleGVj
LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKQoreworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKyAxKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKQoreworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYykKK3sKKyAgICBkb3VibGUgcmVz
dWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09Q
KDIpID0ganNOdW1iZXIocmVzdWx0ICsgMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJl
c3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9kZWMpCit7CisgICAg
ZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAg
ICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCAtIDEpOworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVt
YmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRl
KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcigtTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2FkZCkKK3sK
KyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2
MiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFD
SU5HCisgICAgcHJpbnRmKCJUcnlpbmcgdG8gYWRkICVzIiwgdjEuZGVzY3JpcHRpb24oKSk7Cisg
ICAgcHJpbnRmKCIgdG8gJXMuXG4iLCB2Mi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIAor
ICAgIGlmICh2MS5pc1N0cmluZygpKSB7CisgICAgICAgIExMSU5UX1JFVFVSTigKKyAgICAgICAg
ICAgIHYyLmlzU3RyaW5nKCkKKyAgICAgICAgICAgID8ganNTdHJpbmcoZXhlYywgYXNTdHJpbmco
djEpLCBhc1N0cmluZyh2MikpCisgICAgICAgICAgICA6IGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5n
KHYxKSwgdjIudG9QcmltaXRpdmVTdHJpbmcoZXhlYykpKTsKKyAgICB9CisgICAgCisgICAgaWYg
KHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpz
TnVtYmVyKHYxLmFzTnVtYmVyKCkgKyB2Mi5hc051bWJlcigpKSk7CisgICAgCisgICAgTExJTlRf
UkVUVVJOKGpzQWRkU2xvd0Nhc2UoZXhlYywgdjEsIHYyKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9tdWwpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICogTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9O
dW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1YikKK3sKKyAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIo
ZXhlYykgLSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAvIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9tb2QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYyksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVy
KGV4ZWMpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KQoreworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4
ZWMpIDw8IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Vyc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUlu
dDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIo
ZXhlYykgJiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSB8IExMSU5UX09QX0MoMyku
anNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2JpdHhvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9JbnQzMihleGVjKSBeIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhl
YykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCkKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIofkxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKK3sK
KyAgICBKU1ZhbHVlIGJhc2VWYWwgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyNpZm5kZWYg
TkRFQlVHCisgICAgVHlwZUluZm8gdHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKTsKKyAgICBBU1NF
UlQoIWJhc2VWYWwuaXNPYmplY3QoKQorICAgICAgICAgICB8fCAhKHR5cGVJbmZvID0gYXNPYmpl
Y3QoYmFzZVZhbCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpKS5pbXBsZW1lbnRzSGFzSW5zdGFu
Y2UoKSk7CisjZW5kaWYKKyAgICBMTElOVF9USFJPVyhjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihl
eGVjLCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2luc3RhbmNlb2YpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93
UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3coZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQpLmpzVmFsdWUoKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNU
eXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCkKK3sKKyAgICBKU1ZhbHVlIHYg
PSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKHYu
aXNDZWxsKCkgPyB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKCkgOiB2LmlzVW5kZWZpbmVkKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2lzX2Jvb2xlYW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaXNfbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfc3RyaW5nKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oaXNKU1N0cmlu
ZyhMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2lzX29iamVjdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNPYmplY3RU
eXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfZnVuY3Rpb24pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVu
Y3Rpb25UeXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfaW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93
UGF0aHM6Om9wSW4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSkKK3sK
KyAgICBMTElOVF9SRVRVUk4oQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+
Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKQoreworICAgIExMSU5UX1JFVFVSTigKKyAg
ICAgICAgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVTa2lwKAorICAgICAgICAgICAgZXhlYywK
KyAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFu
ZCksCisgICAgICAgICAgICBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNv
ZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9i
YWxPYmplY3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0udS5vcGVyYW5kOworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgCisgICAg
QVNTRVJUX1VOVVNFRChzdHJ1Y3R1cmUsIHN0cnVjdHVyZSAhPSBnbG9iYWxPYmplY3QtPnN0cnVj
dHVyZSgpKTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRp
Zmllcihwcm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsKKyAg
ICAKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNs
b3QpKSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVu
dCk7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2JqZWN0
LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYg
c2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgcGNbM10udS5z
dHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAg
ICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIExMSU5UX1JFVFVSTihyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9U
SFJPVyhjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAgSWRlbnRpZmllciYg
aWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOwor
ICAgIGlmIChwY1szXS51Lm9wZXJhbmQpIHsKKyAgICAgICAgSlNWYWx1ZSBiYXNlID0gSlNDOjpy
ZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCB0cnVlKTsKKyAgICAg
ICAgaWYgKCFiYXNlKQorICAgICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZh
bGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICAgICAgTExJ
TlRfUkVUVVJOKGJhc2UpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oSlNDOjpyZXNv
bHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKK3sKKyAgICBK
U09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBQ
cm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+
Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIW9iamVj
dC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkKKyAgICAgICAgTExJTlRfVEhS
T1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3Ry
aW5nKCkpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfd2l0aF9iYXNlKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1Bh
dGhzOjpvcFJlc29sdmVXaXRoQmFzZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmll
cihwY1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKK3sKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aFRoaXMoZXhlYywgZXhl
Yy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5
X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Cisg
ICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVy
YW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwor
ICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9
IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOworICAgIExMSU5UX09QKDEpID0gcmVzdWx0OworCisgICAgaWYgKGJhc2VWYWx1ZS5p
c0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkKKyAgICAgICAgJiYgc2xvdC5z
bG90QmFzZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAmJiBzbG90LmNhY2hlZFByb3BlcnR5VHlw
ZSgpID09IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCog
YmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0
dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1
Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1
cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKKyAgICAgICAgICAg
IHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRh
KCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAg
ICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUp
OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCit7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9
IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJh
c2VWYWx1ZSk7CisgICAgTExJTlRfUkVUVVJOKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNs
b3QpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCkKK3sKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXIm
IGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBpZiAocGNbOF0udS5v
cGVyYW5kKQorICAgICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5wdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIGVs
c2UKKyAgICAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCksIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIGlm
IChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7Cisg
ICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwor
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAg
ICAgICAgCisgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgp
CisgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5
Q2FjaGluZygpCisgICAgICAgICAgICAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90
OjpOZXdQcm9wZXJ0eSkgeworICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rp
b25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSA9PSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+
cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhd
LnUub3BlcmFuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsK
KyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0u
dS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQo
CisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihK
U1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAorICAg
ICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVD
aGFpbiogY2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpOworICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoY2hhaW4pOworICAgICAgICAgICAgICAgICAgICBwY1s3XS51LnN0
cnVjdHVyZUNoYWluLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNv
ZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAgICAg
ICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgZXhlYy0+
Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwor
ICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBz
aXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQp
Cit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBK
U09iamVjdCogYmFzZU9iamVjdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvT2JqZWN0KGV4
ZWMpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5k
ZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNb
M10udS5vcGVyYW5kKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgaWYgKCFj
b3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElOVF9U
SFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikp
OworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKworaW5saW5l
IEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNW
YWx1ZSBzdWJzY3JpcHQpCit7CisgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYg
c3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJh
c2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KGV4ZWMsIGFzU3RyaW5nKHN1YnNj
cmlwdCktPnZhbHVlKGV4ZWMpKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
ICAgIAorICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgeworICAgICAgICB1aW50MzJfdCBp
ID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1
ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICBy
ZXR1cm4gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAor
ICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VW
YWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzQnl0ZUFycmF5
KGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAgcmV0dXJu
IGJhc2VWYWx1ZS5nZXQoZXhlYywgaSk7CisgICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJv
cGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZh
bHVlLmdldChleGVjLCBwcm9wZXJ0eSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9n
ZXRfYnlfdmFsKQoreworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpCit7CisgICAgSlNWYWx1ZSBhcmd1
bWVudHMgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhcmd1bWVudHMpIHsKKyAg
ICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIExMSU5UX09Q
KDIpID0gYXJndW1lbnRzOworICAgICAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAgICB9CisgICAg
CisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIGFyZ3VtZW50cywgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFt
ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1
ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3B1dF9ieV92YWwpCit7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+
Z2xvYmFsRGF0YSgpOworICAgIAorICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygx
KS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAg
CisgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKKyAgICAgICAgdWludDMy
X3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VW
YWx1ZSkpIHsKKyAgICAgICAgICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1
ZSk7CisgICAgICAgICAgICBpZiAoanNBcnJheS0+Y2FuU2V0SW5kZXgoaSkpCisgICAgICAgICAg
ICAgICAganNBcnJheS0+c2V0SW5kZXgoZ2xvYmFsRGF0YSwgaSwgdmFsdWUpOworICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5kZXgoanNBcnJheSwgZXhl
YywgaSwgdmFsdWUpOworICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKQorICAgICAgICAgICAgJiYgYXNCeXRlQXJy
YXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAgICAgICAgICAgIEpTQnl0ZUFy
cmF5KiBqc0J5dGVBcnJheSA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBp
ZiAodmFsdWUuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldElu
ZGV4KGksIHZhbHVlLmFzSW50MzIoKSk7CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAg
ICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5hc051bWJlcigpKTsKKyAg
ICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgTExJTlRfRU5EKCk7
CisgICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRv
U3RyaW5nKGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJh
c2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpCit7CisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCog
YmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICAKKyAgICBKU1ZhbHVl
IHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAgIGJvb2wgY291
bGREZWxldGU7CisgICAgCisgICAgdWludDMyX3QgaTsKKyAgICBpZiAoc3Vic2NyaXB0LmdldFVJ
bnQzMihpKSkKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgp
LT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYmFzZU9iamVjdCwgZXhlYywgaSk7CisgICAgZWxzZSB7
CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBJZGVudGlmaWVyIHBy
b3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7CisgICAgICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMsIHByb3BlcnR5KTsKKyAg
ICB9CisgICAgCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBleGVjLT5jb2RlQmxvY2soKS0+aXNT
dHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAi
VW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0
X2J5X2luZGV4KQoreworICAgIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnB1dChleGVjLCBwY1sy
XS51Lm9wZXJhbmQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIpCit7CisgICAgQVNTRVJU
KExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFzZU9i
aiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRlbnRpZmllciYgaWRl
bnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAg
IEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgYmFzZU9iai0+
bWV0aG9kVGFibGUoKS0+ZGVmaW5lR2V0dGVyKGJhc2VPYmosIGV4ZWMsIGlkZW50LCBhc09iamVj
dChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpCit7CisgICAgQVNTRVJUKExMSU5UX09Q
KDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2Jq
ZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVj
LT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEFTU0VSVChM
TElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgYmFzZU9iai0+bWV0aG9kVGFi
bGUoKS0+ZGVmaW5lU2V0dGVyKGJhc2VPYmosIGV4ZWMsIGlkZW50LCBhc09iamVjdChMTElOVF9P
UCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2ptcF9zY29wZXMpCit7CisgICAgdW5zaWduZWQgY291bnQgPSBwY1sxXS51
Lm9wZXJhbmQ7CisgICAgU2NvcGVDaGFpbk5vZGUqIHRtcCA9IGV4ZWMtPnNjb3BlQ2hhaW4oKTsK
KyAgICB3aGlsZSAoY291bnQtLSkKKyAgICAgICAgdG1wID0gdG1wLT5wb3AoKTsKKyAgICBleGVj
LT5zZXRTY29wZUNoYWluKHRtcCk7CisgICAgcGMgKz0gcGNbMl0udS5vcGVyYW5kOworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpCit7CisgICAg
TExJTlRfQlJBTkNIKG9wX2p0cnVlLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4o
ZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZhbHNlKQoreworICAgIExM
SU5UX0JSQU5DSChvcF9qZmFsc2UsICFMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4o
ZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3MpCit7CisgICAgTExJ
TlRfQlJBTkNIKG9wX2psZXNzLCBqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbmxlc3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzcywgIWpzTGVzczx0
cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKQoreworICAgIExM
SU5UX0JSQU5DSChvcF9qZ3JlYXRlciwganNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2puZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVy
LCAhanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEp
Cit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEsIGpzTGVzc0VxPHRydWU+KGV4ZWMsIExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9w
X2pubGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlcmVxLCBqc0xlc3NF
cTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSkKK3sK
KyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEsICFqc0xlc3NFcTxmYWxzZT4oZXhlYywg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKQoreworICAgIEpTVmFsdWUgc2Ny
dXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHNjcnV0aW5lZS5p
c0RvdWJsZSgpKTsKKyAgICBkb3VibGUgdmFsdWUgPSBzY3J1dGluZWUuYXNEb3VibGUoKTsKKyAg
ICBpbnQzMl90IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpOworICAgIGlu
dCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlmICh2YWx1ZSA9PSBpbnRW
YWx1ZSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgICAgICBwYyArPSBjb2RlQmxvY2stPmltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZShwY1sx
XS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGludFZhbHVlLCBkZWZhdWx0T2Zmc2V0KTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpCit7CisgICAgSlNW
YWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBpbnQgZGVmYXVs
dE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAoIXNjcnV0aW5lZS5pc1N0cmluZygp
KQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIGVsc2UgeworICAgICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2Rl
QmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZh
bHVlKGFzU3RyaW5nKHNjcnV0aW5lZSktPnZhbHVlKGV4ZWMpLmltcGwoKSwgZGVmYXVsdE9mZnNl
dCk7CisgICAgfQorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbmV3X2Z1bmMpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZQor
ICAgICAgICAgICB8fCAhY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkKKyAgICAgICAg
ICAgfHwgZXhlYy0+dW5jaGVja2VkUihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5q
c1ZhbHVlKCkpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGlu
ZyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJTlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVu
Y3Rpb25EZWNsKHBjWzJdLnUub3BlcmFuZCktPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApCit7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbMl0udS5vcGVy
YW5kKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVuY3Rpb24tPm1ha2UoZXhlYywgZXhlYy0+
c2NvcGVDaGFpbigpKTsKKyAgICAKKyAgICBpZiAoIWZ1bmN0aW9uLT5uYW1lKCkuaXNOdWxsKCkp
IHsKKyAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25TY29wZU9iamVjdCA9IEpT
U3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBmdW5jdGlvbi0+bmFtZSgpLCBmdW5jLCBS
ZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBmdW5jLT5zZXRTY29wZShleGVjLT5nbG9i
YWxEYXRhKCksIGZ1bmMtPnNjb3BlKCktPnB1c2goZnVuY3Rpb25TY29wZU9iamVjdCkpOworICAg
IH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZnVuYyk7Cit9CisKK3N0YXRpYyBIZWxwZXJSZXR1
cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24q
IHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKworICAgIGV4ZWNDYWxs
ZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2FsbGVlLT5z
ZXRDb2RlQmxvY2soMCk7CisKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxs
RGF0YShjYWxsZWUsIGNhbGxEYXRhKTsKKyAgICAKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlICE9
IENhbGxUeXBlSlMpOworICAgIAorICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVIb3N0
KSB7CisgICAgICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgICAgIH0K
KyAgICAgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAgICAgcHJpbnRmKCJDYWxs
IGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNjcmlwdGlvbigpKTsK
KyNlbmRpZgorCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpOworICAg
ICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihl
eGVjLCBjYWxsZWUpKTsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3Ry
dWN0KTsKKyAgICAKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQ29uc3Ry
dWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShjYWxsZWUsIGNvbnN0cnVj
dERhdGEpOworICAgIAorICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGVK
Uyk7CisgICAgCisgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZUhvc3QpIHsK
KyAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgIExM
SU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgfQorICAgIAorI2lmIExMSU5UX0hFTFBFUl9U
UkFDSU5HCisgICAgICAgIHByaW50ZigiQ29uc3RydWN0b3IgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0
aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICBBU1NFUlQo
Y29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSk7CisgICAgTExJTlRfQ0FMTF9USFJP
VyhleGVjLCBwYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7Cit9
CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxs
ZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU1ZhbHVl
IGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSAwKQorewor
ICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0aW9uKGNhbGxlZUFz
VmFsdWUpOworICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCisgICAgICAgIHJldHVybiBo
YW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwga2luZCk7CisgICAg
CisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsZWVBc0Z1bmN0aW9uQ2Vs
bCk7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihjYWxsZWUtPnNjb3BlVW5jaGVja2Vk
KCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRhYmxl
KCk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSAwOworICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigp
KQorICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5k
KS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIGVsc2UgeworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+
KGV4ZWN1dGFibGUpOworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFi
bGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29wZSgpLCBraW5kKTsKKyAgICAg
ICAgaWYgKGVycm9yKQorICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjQ2FsbGVlLT5j
YWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOworICAgICAgICBjb2RlQmxvY2sgPSAmZnVuY3Rpb25F
eGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICAgICAgQVNTRVJUKGNv
ZGVCbG9jayk7CisgICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkp
CisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRD
b2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNv
ZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRk
cmVzc0ZvckNhbGwoKTsKKyAgICB9CisgICAgCisgICAgaWYgKGNhbGxMaW5rSW5mbykgeworICAg
ICAgICBpZiAoY2FsbExpbmtJbmZvLT5pc09uTGlzdCgpKQorICAgICAgICAgICAgY2FsbExpbmtJ
bmZvLT5yZW1vdmUoKTsKKyAgICAgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVyID0gZXhlY0NhbGxl
ZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5jYWxsZWUuc2V0KGV4ZWND
YWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0
YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0
ID0gY29kZVB0cjsKKyAgICAgICAgaWYgKGNvZGVCbG9jaykKKyAgICAgICAgICAgIGNvZGVCbG9j
ay0+bGlua0luY29taW5nQ2FsbChjYWxsTGlua0luZm8pOworICAgIH0KKyAgICAKKyAgICBMTElO
VF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygp
KTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBl
eGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAg
ICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAv
LyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4K
KyAgICAvLyAtIElmIHBvc3NpYmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAg
IC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQg
dGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9
IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT51
bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhl
Y0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgCisgICAgQVNTRVJUKHBjWzRdLnUu
Y2FsbExpbmtJbmZvKTsKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5k
LCBjYWxsZWVBc1ZhbHVlLCBwY1s0XS51LmNhbGxMaW5rSW5mbyk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jYWxsKQoreworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywg
Q29kZUZvckNhbGwpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0KQor
eworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0cnVjdCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpCit7CisgICAgLy8gVGhp
cyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUgd2hpbGUgcmVzcGVjdGlu
ZyB0aGUgdmFyaWFibGUgYXJndW1lbnRzLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNh
bGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUg
b2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgor
ICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
OworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAorICAgICAg
ICBleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwK
KyAgICAgICAgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LCBwY1s0XS51Lm9wZXJhbmQpOworICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMs
IHBjKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2Fs
bGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhl
Yyk7CisgICAgZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRh
ZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX3Zh
cmFyZ3MpKTsKKyAgICAKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2Rl
Rm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
YWxsX2V2YWwpCit7CisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSkuanNW
YWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51
Lm9wZXJhbmQ7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0
YSgpOworICAgIAorICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KHBjWzJdLnUub3BlcmFuZCk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7
CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxs
ZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFp
bigpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRSZXR1cm5QQyhiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rp
b24qPigmbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRD
b2RlQmxvY2soMCk7CisgICAgZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50
Q291bnQpLnRhZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChv
cF9jYWxsX2V2YWwpKTsKKyAgICAKKyAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFs
dWUsIGdsb2JhbEZ1bmNFdmFsKSkKKyAgICAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVl
LCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworICAgIAorICAgIGdsb2JhbERhdGEu
aG9zdENhbGxSZXR1cm5WYWx1ZSA9IGV2YWwoZXhlY0NhbGxlZSk7CisgICAgTExJTlRfQ0FMTF9S
RVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2Fj
dGl2YXRpb24pCit7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29w
ZUNoYWluKCkpOworICAgIEpTVmFsdWUgYWN0aXZhdGlvblZhbHVlID0gTExJTlRfT1AoMSkuanNW
YWx1ZSgpOworICAgIGlmICghYWN0aXZhdGlvblZhbHVlKSB7CisgICAgICAgIGlmIChKU1ZhbHVl
IHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51
Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGlmICghZXhlYy0+Y29kZUJsb2Nr
KCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT50ZWFy
T2ZmKGV4ZWMpOworICAgICAgICB9CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICBK
U0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVlKTsK
KyAgICBhY3RpdmF0aW9uLT50ZWFyT2ZmKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgaWYgKEpT
VmFsdWUgdiA9IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBj
WzJdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSkKKyAgICAgICAgYXNBcmd1bWVudHModiktPmRpZFRl
YXJPZmZBY3RpdmF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgYWN0aXZhdGlvbik7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVu
dHMpCit7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkgJiYg
IWV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIGFzQXJndW1l
bnRzKGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUu
b3BlcmFuZCkpLmpzVmFsdWUoKSktPnRlYXJPZmYoZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzU3RyaW5nKGV4ZWMsICZMTElOVF9PUCgyKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpCit7CisgICAgTExJTlRfUkVUVVJO
KExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRf
T1AoMikuanNWYWx1ZSgpOworICAgIGlmICh2LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAg
ICAgcGMgKz0gcGNbNV0udS5vcGVyYW5kOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9Cisg
ICAgCisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gby0+c3RydWN0dXJlKCk7CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciog
anNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IHN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpOwor
ICAgIGlmICghanNQcm9wZXJ0eU5hbWVJdGVyYXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LT5jYWNoZWRQcm90b3R5cGVDaGFpbigpICE9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhl
YykpCisgICAgICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjpjcmVhdGUoZXhlYywgbyk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBKU1ZhbHVlKGpz
UHJvcGVydHlOYW1lSXRlcmF0b3IpOworICAgIExMSU5UX09QKDIpID0gSlNWYWx1ZShvKTsKKyAg
ICBMTElOVF9PUCgzKSA9IFJlZ2lzdGVyOjp3aXRoSW50KDApOworICAgIExMSU5UX09QKDQpID0g
UmVnaXN0ZXI6OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAgICAK
KyAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFtZXMpOworICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSkKK3sKKyAgICBKU09i
amVjdCogYmFzZSA9IGFzT2JqZWN0KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CisgICAgSlNTdHJp
bmcqIHByb3BlcnR5ID0gYXNTdHJpbmcoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBpZiAo
YmFzZS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eS0+dmFsdWUo
ZXhlYykpKSkgeworICAgICAgICAvLyBHbyB0byB0YXJnZXQuCisgICAgICAgIHBjICs9IHBjWzZd
LnUub3BlcmFuZDsKKyAgICB9IC8vIEVsc2UsIGRvbid0IGNoYW5nZSB0aGUgUEMsIHNvIHRoZSBp
bnRlcnByZXRlciB3aWxsIHJlbG9vcC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1Ao
MSkuanNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKKyAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9IG87CisgICAg
ZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2gobykpOworICAgIAor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9wX3Njb3Bl
KQoreworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wb3AoKSk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25l
d19zY29wZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgIEpTT2JqZWN0KiBzY29wZSA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVj
LCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwgTExJTlRfT1AoMykuanNW
YWx1ZSgpLCBEb250RGVsZXRlKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3Bl
Q2hhaW4oKS0+cHVzaChzY29wZSkpOworICAgIExMSU5UX1JFVFVSTihzY29wZSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdykKK3sKKyAgICBMTElOVF9USFJPVyhMTElOVF9P
UF9DKDEpLmpzVmFsdWUoKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19y
ZWZlcmVuY2VfZXJyb3IpCit7CisgICAgTExJTlRfVEhST1coY3JlYXRlUmVmZXJlbmNlRXJyb3Io
ZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9TdHJpbmcoZXhlYykpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKQoreworICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBj
WzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOworICAg
IGludCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5nbG9iYWxE
YXRhKCkuaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihk
ZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIAorICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7Cisg
ICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT53aWxsRXhlY3V0ZShl
eGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVy
OjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPmRpZEV4ZWN1dGUoZXhlYywgTExJTlRfT1Ao
MSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxw
ZXJzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRI
ZWxwZXJzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRIZWxwZXJzX2gKKyNk
ZWZpbmUgTExJbnRIZWxwZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsK
KworbmFtZXNwYWNlIExMSW50IHsKKwordHlwZWRlZiBpbnQ2NF90IEhlbHBlclJldHVyblR5cGU7
CisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNT
dGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworZXh0ZXJu
ICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSosIEluc3Ry
dWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworCisjZGVmaW5lIExMSU5UX0hF
TFBFUl9ERUNMKG5hbWUpIFwKKyAgICBleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRf
IyNuYW1lKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQorCitMTElOVF9IRUxQRVJf
REVDTCh0cmFjZV9wcm9sb2d1ZSk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9m
dW5jdGlvbl9mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5j
dGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tf
Zm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3Ry
dWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNp
YWxfdHJhY2UpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGVudHJ5X29zcl9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3NyKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpOworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJf
ZmlsZV9jaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNrKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0
ZV90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X25ld19hcnJheSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZlcik7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dy
ZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2luYyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcHJlX2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9p
bmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl90b19qc251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRl
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX211bCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9kaXYpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hp
ZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2JpdGFuZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3IpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Yml0bm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3R5cGVvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9pc19udW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9pc19mdW5jdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4pOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfc2tpcCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmVfd2l0aF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfaWQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9i
eV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2J5X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFs
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9n
ZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0
cnVlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2psZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qbmdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
Z3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfc3dpdGNoX2NoYXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfZnVuY19leHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY2FsbF92YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfc3RyY2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25leHRfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2Nv
cGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Ro
cm93KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wcm9maWxlX3dpbGxfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9k
aWRfY2FsbCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJ
bnRIZWxwZXJzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
bGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisjZGVmaW5lIExMSW50T2ZmbGluZUFz
bUNvbmZpZ19oCisKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBDUFUoWDg2KQorI2Rl
ZmluZSBPRkZMSU5FX0FTTV9YODYgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDAK
KyNlbmRpZgorCisjaWYgQ1BVKEFSTXY3KQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAxCisj
ZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UKKyNk
ZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUoQklH
X0VORElBTikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2RlZmlu
ZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKExMSU5UX09T
Ul9UT19KSVQpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVm
aW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhFQ1VU
SU9OX1RSQUNJTkcKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQorI2Vs
c2UKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisKKyNl
bmRpZiAvLyBMTEludE9mZmxpbmVBc21Db25maWdfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJBbGxvY2F0aW9uU3BhY2UuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJF
eGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CisjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAi
SlNDZWxsLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0
YS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIK
KyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcu
aCIKKyNpbmNsdWRlICJKU3R5cGVJbmZvLmgiCisjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5o
IgorI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgi
CisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1
ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBP
RkZMSU5FX0FTTV9PRkZTRVRPRihjbGF6eiwgZmllbGQpIE9CSkVDVF9PRkZTRVRPRihjbGF6eiwg
ZmllbGQpCisKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvciB7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkKiBkdW1teSgpOworfTsKKworY29uc3QgdW5zaWduZWQqIExMSW50
T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKQoreworI2luY2x1ZGUgIkxMSW50RGVzaXJlZE9mZnNl
dHMuaCIKKyAgICByZXR1cm4gZXh0cmFjdG9yVGFibGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCitpbnQgbWFpbihpbnQsIGNoYXIqKikKK3sKKyAgICAvLyBPdXQgb2YgYW4gYWJ1bmRhbmNl
IG9mIGNhdXRpb24sIG1ha2Ugc3VyZSB0aGF0IExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXko
KSBpcyBsaXZlLAorICAgIC8vIGFuZCB0aGUgZXh0cmFjdG9yVGFibGUgaXMgbGl2ZSwgdG9vLgor
ICAgIHByaW50ZigiJXBcbiIsIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpKTsK
KyAgICByZXR1cm4gMDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisKKyNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5o
IgorI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVy
LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgdm9pZCAoKnRhcmdldCkoKSkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7Cisg
ICAgCisgICAgLy8gRklYTUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0
IG9uIFg4NiwgYnV0IEknbSBub3Qgc3VyZSBJIGNhcmUuCisgICAgaml0Lm1vdmUoSlNJbnRlcmZh
Y2VKSVQ6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSwgSlNJbnRl
cmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6cmVnVDApOwor
ICAgIAorICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZqaXQpOworICAg
IHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKK30KKworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxE
YXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
byhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dl
bmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0
QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAg
ICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7Cisg
ICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2V2YWxf
cHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtH
ZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0
ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKTsKK30K
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBM
TEludFRodW5rc19oCisjZGVmaW5lIExMSW50VGh1bmtzX2gKKworI2luY2x1ZGUgIk1hY3JvQXNz
ZW1ibGVyQ29kZVJlZi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRh
OworCituYW1lc3BhY2UgTExJbnQgeworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25G
b3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxE
YXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Ro
dW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0
aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0
YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpT
R2xvYmFsRGF0YSopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8v
IExMSW50VGh1bmtzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjM0NyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworCisjIENyYXNoIGNvdXJzZSBvbiB0aGUgbGFuZ3VhZ2UgdGhhdCB0aGlzIGlzIHdyaXR0ZW4g
aW4gKHdoaWNoIEkganVzdCBjYWxsCisjICJhc3NlbWJseSIgZXZlbiB0aG91Z2ggaXQncyBtb3Jl
IHRoYW4gdGhhdCk6CisjCisjIC0gTW9zdGx5IGdhcy1zdHlsZSBvcGVyYW5kIG9yZGVyaW5nLiBU
aGUgbGFzdCBvcGVyYW5kIHRlbmRzIHRvIGJlIHRoZQorIyAgIGRlc3RpbmF0aW9uLiBTbyAiYSA6
PSBiIiBpcyB3cml0dGVuIGFzICJtb3YgYiwgYSIuIEJ1dCB1bmxpa2UgZ2FzLAorIyAgIGNvbXBh
cmlzb25zIGFyZSBpbi1vcmRlciwgc28gImlmIChhIDwgYikiIGlzIHdyaXR0ZW4gYXMKKyMgICAi
YmlsdCBhLCBiLCAuLi4iLgorIworIyAtICJiIiA9IGJ5dGUsICJoIiA9IDE2LWJpdCB3b3JkLCAi
aSIgPSAzMi1iaXQgd29yZCwgInAiID0gcG9pbnRlci4KKyMgICBDdXJyZW50bHkgdGhpcyBpcyBq
dXN0IDMyLWJpdCBzbyAiaSIgYW5kICJwIiBhcmUgaW50ZXJjaGFuZ2VhYmxlCisjICAgZXhjZXB0
IHdoZW4gYW4gb3Agc3VwcG9ydHMgb25lIGJ1dCBub3QgdGhlIG90aGVyLgorIworIyAtIEluIGdl
bmVyYWwsIHZhbGlkIG9wZXJhbmRzIGZvciBtYWNybyBpbnZvY2F0aW9ucyBhbmQgaW5zdHJ1Y3Rp
b25zIGFyZQorIyAgIHJlZ2lzdGVycyAoZWcgInQwIiksIGFkZHJlc3NlcyAoZWcgIjRbdDBdIiks
IGJhc2UtaW5kZXggYWRkcmVzc2VzCisjICAgKGVnICI3W3QwLCB0MSwgMl0iKSwgYWJzb2x1dGUg
YWRkcmVzc2VzIChlZyAiMHhhMDAwMDAwMFtdIiksIG9yIGxhYmVscworIyAgIChlZyAiX2ZvbyIg
b3IgIi5mb28iKS4gTWFjcm8gaW52b2NhdGlvbnMgY2FuIGFsc28gdGFrZSBhbm9ueW1vdXMKKyMg
ICBtYWNyb3MgYXMgb3BlcmFuZHMuIEluc3RydWN0aW9ucyBjYW5ub3QgdGFrZSBhbm9ueW1vdXMg
bWFjcm9zLgorIworIyAtIExhYmVscyBtdXN0IGhhdmUgbmFtZXMgdGhhdCBiZWdpbiB3aXRoIGVp
dGhlciAiXyIgb3IgIi4iLiAgQSAiLiIgbGFiZWwKKyMgICBpcyBsb2NhbCBhbmQgZ2V0cyByZW5h
bWVkIGJlZm9yZSBjb2RlIGdlbiB0byBtaW5pbWl6ZSBuYW1lc3BhY2UKKyMgICBwb2xsdXRpb24u
IEEgIl8iIGxhYmVsIGlzIGFuIGV4dGVybiBzeW1ib2wgKGkuZS4gIi5nbG9ibCIpLiBUaGUgIl8i
CisjICAgbWF5IG9yIG1heSBub3QgYmUgcmVtb3ZlZCBkdXJpbmcgY29kZSBnZW4gZGVwZW5kaW5n
IG9uIHdoZXRoZXIgdGhlIGFzbQorIyAgIGNvbnZlbnRpb25zIGZvciBDIG5hbWUgbWFuZ2xpbmcg
b24gdGhlIHRhcmdldCBwbGF0Zm9ybSBtYW5kYXRlIGEgIl8iCisjICAgcHJlZml4LgorIworIyAt
IEEgIm1hY3JvIiBpcyBhIGxhbWJkYSBleHByZXNzaW9uLCB3aGljaCBtYXkgYmUgZWl0aGVyIGFu
b255bW91cyBvcgorIyAgIG5hbWVkLiBCdXQgdGhpcyBoYXMgY2F2ZWF0cy4gIm1hY3JvIiBjYW4g
dGFrZSB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLAorIyAgIHdoaWNoIG1heSBiZSBtYWNyb3Mgb3Ig
YW55IHZhbGlkIG9wZXJhbmRzLCBidXQgaXQgY2FuIG9ubHkgcmV0dXJuCisjICAgY29kZS4gQnV0
IHlvdSBjYW4gZG8gVHVyaW5nLWNvbXBsZXRlIHRoaW5ncyB2aWEgY29udGludWF0aW9uIHBhc3Np
bmcKKyMgICBzdHlsZTogIm1hY3JvIGZvbyAoYSwgYikgYihhKSBlbmQgZm9vKGZvbywgZm9vKSIu
IEFjdHVhbGx5LCBkb24ndCBkbworIyAgIHRoYXQsIHNpbmNlIHlvdSdsbCBqdXN0IGNyYXNoIHRo
ZSBhc3NlbWJsZXIuCisjCisjIC0gQW4gImlmIiBpcyBhIGNvbmRpdGlvbmFsIG9uIHNldHRpbmdz
LiBBbnkgaWRlbnRpZmllciBzdXBwbGllZCBpbiB0aGUKKyMgICBwcmVkaWNhdGUgb2YgYW4gImlm
IiBpcyBhc3N1bWVkIHRvIGJlIGEgI2RlZmluZSB0aGF0IGlzIGF2YWlsYWJsZQorIyAgIGR1cmlu
ZyBjb2RlIGdlbi4gU28geW91IGNhbid0IHVzZSAiaWYiIGZvciBjb21wdXRhdGlvbiBpbiBhIG1h
Y3JvLCBidXQKKyMgICB5b3UgY2FuIHVzZSBpdCB0byBzZWxlY3QgZGlmZmVyZW50IHBpZWNlcyBv
ZiBjb2RlIGZvciBkaWZmZXJlbnQKKyMgICBwbGF0Zm9ybXMuCisjCisjIC0gQXJndW1lbnRzIHRv
IG1hY3JvcyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIHJhdGhlciB0aGFuIGR5bmFtaWMgc2NvcGlu
Zy4KKyMgICBDb25zdCdzIGFsc28gZm9sbG93IGxleGljYWwgc2NvcGluZyBhbmQgbWF5IG92ZXJy
aWRlIChoaWRlKSBhcmd1bWVudHMKKyMgICBvciBvdGhlciBjb25zdHMuIEFsbCB2YXJpYWJsZXMg
KGFyZ3VtZW50cyBhbmQgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBvcGVyYW5kcy4g
QWRkaXRpb25hbGx5LCBhcmd1bWVudHMgKGJ1dCBub3QgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQK
KyMgICB0byBtYWNyb3MuCisKKworIyBUaGVzZSBkZWNsYXJhdGlvbnMgbXVzdCBtYXRjaCBpbnRl
cnByZXRlci9SZWdpc3RlckZpbGUuaC4KK2NvbnN0IENhbGxGcmFtZUhlYWRlclNpemUgPSA0OAor
Y29uc3QgQXJndW1lbnRDb3VudCA9IC00OAorY29uc3QgQ2FsbGVyRnJhbWUgPSAtNDAKK2NvbnN0
IENhbGxlZSA9IC0zMgorY29uc3QgU2NvcGVDaGFpbiA9IC0yNAorY29uc3QgUmV0dXJuUEMgPSAt
MTYKK2NvbnN0IENvZGVCbG9jayA9IC04CisKK2NvbnN0IFRoaXNBcmd1bWVudE9mZnNldCA9IC1D
YWxsRnJhbWVIZWFkZXJTaXplIC0gOAorCisjIERlY2xhcmUgc29tZSBhbGlhc2VzIGZvciB0aGUg
cmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAorCisjIE9mZnNldHMgbmVlZGVk
IGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRpb24uCitpZiBCSUdfRU5ESUFO
CisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSA0Citl
bHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSAw
CitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCitjb25zdCBJbnQzMlRh
ZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51bGxUYWcgPSAtMworY29uc3Qg
VW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQorY29uc3QgRW1wdHlWYWx1ZVRh
ZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29uc3QgTG93ZXN0VGFnID0gRGVs
ZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25zdCBTdHJpbmdUeXBlID0gNQor
Y29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFncyBjb25zdGFudHMuCitjb25zdCBN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVtZW50c0hhc0luc3RhbmNlID0g
MgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDgKKworIyBIZWFwIGFsbG9j
YXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0gMwor
CisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3QgRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNvbnN0YW50cy4KK2NvbnN0IEds
b2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0IEZ1bmN0aW9uQ29kZSA9IDIK
KworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0aGUgYXJndW1lbnQg
Y291bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRhZ09mZnNldAor
CisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25zdCBWZWN0b3JTaXplT2Zmc2V0
ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisjIFN0cmluZyBmbGFncy4KK2Nv
bnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxpdGllcworbWFjcm8gY3Jhc2go
KQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3ZlIDAsIHQwCisgICAgY2FsbCB0
MAorZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAgaWYgQVNTRVJUX0VOQUJMRUQK
KyAgICAgICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAgY3Jhc2goKQorICAgIC5vazoKKyAgICBl
bmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVzdGluYXRp
b25SZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJl
Z2lzdGVyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBvcCBkZXN0aW5hdGlvblJlZ2lzdGVyCisg
ICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIHJlc3RvcmVSZXR1
cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQorICAgIGlmIEFSTXY3CisgICAg
ICAgIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHB1c2gg
c291cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKwor
bWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQworICAgIGpt
cCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHBjT2Zmc2V0KQor
ICAgIGxzaGlmdGkgMiwgcGNPZmZzZXQKKyAgICBhZGRwIHBjT2Zmc2V0LCBQQworICAgIGptcCBb
UENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZzZXQpCisgICAgbG9hZGkgcGNP
ZmZzZXQsIHQwCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQwKQorZW5kCisKK21hY3Jv
IGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0
W2Nmcl0sIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBjQ2FsbDIoZnVuY3Rpb24sIGFy
ZzEsIGFyZzIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBt
b3ZlIGFyZzIsIHQxCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAorICAgICAg
ICBwb2tlIGFyZzIsIDEKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2Fs
bCBmdW5jdGlvbgorZW5kCisKKyMgVGhpcyBiYXJlbHkgd29ya3MuIGFyZzMgYW5kIGFyZzQgc2hv
dWxkIHByb2JhYmx5IGJlIGltbWVkaWF0ZXMuCittYWNybyBjQ2FsbDQoZnVuY3Rpb24sIGFyZzEs
IGFyZzIsIGFyZzMsIGFyZzQpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAor
ICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgICAgIG1vdmUgYXJnMywgdDIKKyAgICAgICAgbW92
ZSBhcmc0LCB0MworICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAg
cG9rZSBhcmcyLCAxCisgICAgICAgIHBva2UgYXJnMywgMgorICAgICAgICBwb2tlIGFyZzQsIDMK
KyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5k
CisKK21hY3JvIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMp
CisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVnZ2luZyBv
cGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVj
dGlvbiBzdHJlYW0uCittYWNybyB0cmFjZU9wZXJhbmQoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAg
IGNDYWxsNChfbGxpbnRfdHJhY2Vfb3BlcmFuZCwgY2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVyYW5k
KQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcg
b3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgdGhlIHZhbHVlIG9mIGFuIG9wZXJhbmQg
aW4gdGhlIGluc3RydWN0aW9uCisjIHN0cmVhbS4KK21hY3JvIHRyYWNlVmFsdWUoZnJvbVdoZXJl
LCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2VfdmFsdWUsIGNmciwgUEMsIGZyb21X
aGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisK
K21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAg
ICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkKKyAgICBlbmQKK2VuZAorCisjIENhbGwgYSBoZWxw
ZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3JvIGNhbGxDYWxsSGVscGVyKGFkdmFuY2UsIGhlbHBl
ciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDLCB0MAorICAgIHN0b3JlcCB0MCwg
QXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQ
QykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBhY3Rpb24odDApCitlbmQKKworbWFjcm8gc2xvd1Bh
dGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikKKyAgICBjYWxsQ2FsbEhlbHBlcigKKyAgICAgICAg
YWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAorICAgICAgICBtYWNybyAoY2FsbGVlKQorICAgICAg
ICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAg
ICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVQoaW5jcmVtZW50LCBhY3Rpb24p
CisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisg
ICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVy
W3QwXSwgLmNvbnRpbnVlCisgICAgICAgIGFjdGlvbigpCisgICAgLmNvbnRpbnVlOgorICAgIGVu
ZAorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBjaGVja1N3aXRj
aFRvSklUKAorICAgICAgICAxLAorICAgICAgICBtYWNybyAoKQorICAgICAgICAgICAgc3RvcmVp
IFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICAgICAgICAgIGNDYWxsMihf
bGxpbnRfbG9vcF9vc3IsIGNmciwgUEMpCisgICAgICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAg
ICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgICAgICBqbXAgdDAKKyAgICAgICAgLnJl
Y292ZXI6CisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0s
IFBDCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9n
dWUoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEwLAorICAgICAgICBtYWNybyAo
KQorICAgICAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVwbGFjZSkKKyAgICAgICAgZW5kKQor
ZW5kCisKK21hY3JvIGFzc2VydE5vdENvbnN0YW50KGluZGV4KQorICAgIGFzc2VydChtYWNybyAo
b2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBvayBlbmQpCitlbmQK
KworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMu
IEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShp
bmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwg
dGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAg
IGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2Fk
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhl
cmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0g
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9hZHAgVGFnT2Zmc2V0W3Bh
eWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBp
bmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQgbWF5
IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLiBJbmRleCBtYXkgYmUgY2xvYmJlcmVkLgorbWFjcm8gbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEg
aW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBU
YWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdGFnCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVn
aXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3RhZ10sIHRhZworICAgICMgVGhlcmUgaXMgYSBi
aXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFs
IHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxzaGlm
dGkgMywgaW5kZXgKKyAgICBhZGRwIGluZGV4LCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0
W3RhZ10sIHBheWxvYWQKKyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnCisuZG9uZToKK2Vu
ZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwg
dGFnQ2hlY2ssIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCwgLmNvbnN0YW50CisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhd
KQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBq
bXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9m
ZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJl
OiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtw
YXlsb2FkLCBpbmRleCwgOF0pCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRl
eCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQgbXVzdCBi
ZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QgbXV0YXRlZC4gVXNlCisjIHRoaXMg
aWYgeW91IGtub3cgd2hhdCB0aGUgdGFnIG9mIHRoZSB2YXJpYWJsZSBzaG91bGQgYmUuIERvaW5n
IHRoZSB0YWcKKyMgdGVzdCBhcyBwYXJ0IG9mIGxvYWRpbmcgdGhlIHZhcmlhYmxlIHJlZHVjZXMg
cmVnaXN0ZXIgdXNlLCBidXQgbWF5IG5vdAorIyBiZSBmYXN0ZXIgdGhhbiBkb2luZyBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlIGZvbGxvd2VkIGJ5IGEgYnJhbmNoIG9uIHRoZQorIyB0YWcuCittYWNy
byBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxv
YWQsIHNsb3cpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCisg
ICAgICAgIGluZGV4LAorICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBiaW5lcSBhY3R1YWxUYWcs
IGV4cGVjdGVkVGFnLCBzbG93IGVuZCwKKyAgICAgICAgcGF5bG9hZCkKK2VuZAorCittYWNybyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZChpbmRleCwgcGF5bG9hZCkKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgKKyAgICAgICAgaW5kZXgs
CisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGVuZCwKKyAgICAgICAgcGF5bG9hZCkKK2VuZAor
CittYWNybyB3cml0ZUJhcnJpZXIodGFnLCBwYXlsb2FkKQorICAgICMgTm90aGluZyB0byBkbyBz
aW5jZSB3ZSBkb24ndCBoYXZlIGEgZ2VuZXJhdGlvbmFsIG9yIGluY3JlbWVudGFsIGNvbGxlY3Rv
ci4KK2VuZAorCisKKyMgSW5kaWNhdGUgdGhlIGJlZ2lubmluZyBvZiBMTEludC4KK19sbGludF9i
ZWdpbjoKKyAgICBjcmFzaCgpCisKKworIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRl
cgorCittYWNybyBmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIp
CisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5j
dGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBs
b2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rl
cl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2Rl
QmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdl
dFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lz
dGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29k
ZUJsb2NrRm9yQ29uc3RydWN0W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAor
CittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlv
bkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAgICBzdG9yZXAgc291cmNlUmVnaXN0
ZXIsIENvZGVCbG9ja1tjZnJdCitlbmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0
ZXIoc291cmNlUmVnaXN0ZXIpCisgICAgIyBOb3RoaW5nIHRvIGRvIQorZW5kCisKKyMgRG8gdGhl
IGJhcmUgbWluaW11bSByZXF1aXJlZCB0byBleGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBs
ZWF2ZSB0aGUgQ29kZUJsb2NrKgorIyBpbiB0MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBl
bnRyeSBPU1IuCittYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRl
ciwgb3NySGVscGVyLCB0cmFjZUhlbHBlcikKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRl
ckNhbGwodDIpCisgICAgCisgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlm
IHdlIHNob3VsZCBPU1IuCisgICAgc3RvcmVwIHQyLCBSZXR1cm5QQ1tjZnJdCisgICAgaWYgRVhF
Q1VUSU9OX1RSQUNJTkcKKyAgICAgICAgY2FsbEhlbHBlcih0cmFjZUhlbHBlcikKKyAgICBlbmQK
KyAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgYmFk
ZGlzIDUsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3QxXSwgLmNvbnRpbnVlCisg
ICAgICAgIGNDYWxsMihvc3JIZWxwZXIsIGNmciwgUEMpCisgICAgICAgIG1vdmUgdDEsIGNmcgor
ICAgICAgICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0
MgorICAgICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICAgICAg
am1wIHQwCisgICAgLnJlY292ZXI6CisgICAgICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICAu
Y29udGludWU6CisgICAgZW5kCisgICAgY29kZUJsb2NrU2V0dGVyKHQxKQorICAgIAorICAgICMg
U2V0IHVwIHRoZSBQQy4KKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwg
dDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBW
ZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9j
ayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCisjIE11
c3QgY2FsbCBkaXNwYXRjaCgwKSBhZnRlciBjYWxsaW5nIHRoaXMuCittYWNybyBmdW5jdGlvbklu
aXRpYWxpemF0aW9uKCkKKyAgICAjIFByb2ZpbGUgdGhlIGFyZ3VtZW50cy4gVW5mb3J0dW5hdGVs
eSwgd2UgaGF2ZSBubyBjaG9pY2UgYnV0IHRvIGRvIHRoaXMuCisgICAgbG9hZGkgQ29kZUJsb2Nr
OjptX251bVBhcmFtZXRlcnNbdDFdLCB0MAorICAgIGJ0aXogdDAsIC5hcmd1bWVudFByb2ZpbGVE
b25lCisgICAgbmVnaSB0MAorICAgIGxzaGlmdGkgMywgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QxXSwgdDMKKy5h
cmd1bWVudFByb2ZpbGVMb29wOgorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09m
ZnNldCArIDhbY2ZyLCB0MF0sIHQyCisgICAgc3RvcmVpIHQyLCBWYWx1ZVByb2ZpbGU6Om1fYnVj
a2V0cyArIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXls
b2FkT2Zmc2V0ICsgOFtjZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIsIFZhbHVlUHJvZmlsZTo6
bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBhZGRwIHNpemVvZiBWYWx1ZVByb2Zp
bGUsIHQzCisgICAgYmFkZGlueiA4LCB0MCwgLmFyZ3VtZW50UHJvZmlsZUxvb3AKKy5hcmd1bWVu
dFByb2ZpbGVEb25lOgorICAgIAorICAgICMgQ2hlY2sgc3RhY2sgaGVpZ2h0LgorICAgIGxvYWRp
IENvZGVCbG9jazo6bV9udW1DYWxsZWVSZWdpc3RlcnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVC
bG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDIKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmludGVy
cHJldGVyW3QyXSwgdDIgICAjIEZJWE1FOiBDYW4gZ2V0IHRvIHRoZSBSZWdpc3RlckZpbGUgZnJv
bSB0aGUgSklUU3RhY2tGcmFtZQorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQwLCBjZnIs
IHQwCisgICAgYnBhZXEgSW50ZXJwcmV0ZXI6Om1fcmVnaXN0ZXJGaWxlICsgUmVnaXN0ZXJGaWxl
OjptX2VuZFt0Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSworCisgICAgIyBTdGFjayBoZWlnaHQgY2hl
Y2sgZmFpbGVkIC0gbmVlZCB0byBjYWxsIGEgaGVscGVyLgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X3JlZ2lzdGVyX2ZpbGVfY2hlY2spCisuc3RhY2tIZWlnaHRPSzoKK2VuZAorCisjIEV4cGVjdHMg
dGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMg
YmVoaW5kLgorbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgaGVscGVyKQorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisgICAgYmllcSB0
MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKKyAgICBjQ2FsbDIo
aGVscGVyLCBjZnIsIFBDKSAgICMgVGhpcyBoZWxwZXIgaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0
MCA9IDAgPT4gbm8gZXJyb3IsIHQwICE9IDAgPT4gZXJyb3IKKyAgICBtb3ZlIHQxLCBjZnIKKyAg
ICBidGl6IHQwLCAuY29udGludWUKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRh
W3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwg
dDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKy5j
b250aW51ZToKKyAgICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIFBDLCBzaW5jZSB0aGUgaGVscGVy
IGNsb2JiZXJlZCBpdC4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Oklu
c3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQwor
ICAgIGptcCBkb25lTGFiZWwKK2VuZAorCitfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKKyAgICBw
cm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tT
ZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNw
YXRjaCgwKQorCisKK19sbGludF9ldmFsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0
aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2Vu
dHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9y
Q2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRy
eV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKKy5mdW5jdGlv
bkZvckNhbGxCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKCkKKyAgICBkaXNwYXRj
aCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKKyAg
ICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25D
b2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9m
dW5jdGlvbl9mb3JfY29uc3RydWN0KQorLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46CisgICAg
ZnVuY3Rpb25Jbml0aWFsaXphdGlvbigpCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9y
Q2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRy
eV9vc3JfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCisgICAg
ZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X2hlbHBlcl9j
YWxsX2FyaXR5Q2hlY2spCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlf
Y2hlY2s6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIs
IGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2FyaXR5Q2hlY2ssIF9s
bGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCisgICAgZnVuY3Rpb25Bcml0eUNo
ZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfbGxpbnRfaGVscGVyX2NvbnN0cnVjdF9h
cml0eUNoZWNrKQorCisjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9ucworCitfbGxpbnRfb3Bf
ZW50ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1WYXJzW3QyXSwgdDIKKyAgICBidGl6IHQyLCAu
b3BFbnRlckRvbmUKKyAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAKKyAgICBtb3ZlIDAsIHQxCisu
b3BFbnRlckxvb3A6CisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAg
YnRpbnogdDIsIC5vcEVudGVyTG9vcAorLm9wRW50ZXJEb25lOgorICAgIGRpc3BhdGNoKDEpCisK
KworX2xsaW50X29wX2NyZWF0ZV9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5
VmFsdWVUYWcsIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQorLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmU6CisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5pdF9sYXp5X3JlZzoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRh
Z09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBcmd1bWVudHNEb25lCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCisub3BDcmVhdGVB
cmd1bWVudHNEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFjcm8gYWxsb2NhdGVCYXNpY0pT
T2JqZWN0KHNpemVDbGFzc0luZGV4LCBjbGFzc0luZm9PZmZzZXQsIHN0cnVjdHVyZSwgcmVzdWx0
LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNsb3dDYXNlKQorICAgIGNvbnN0IG9mZnNldE9mTXlTaXpl
Q2xhc3MgPSBKU0dsb2JhbERhdGE6OmhlYXAgKyBIZWFwOjptX29iamVjdFNwYWNlICsgQWxsb2Nh
dGlvblNwYWNlOjptX21hcmtlZFNwYWNlICsgTWFya2VkU3BhY2U6Om1fcHJlY2lzZVNpemVDbGFz
c2VzICsgc2l6ZUNsYXNzSW5kZXggKiBzaXplb2YgTWFya2VkU3BhY2U6OlNpemVDbGFzcworICAg
IAorICAgICMgRklYTUU6IHdlIGNhbiBnZXQgdGhlIGdsb2JhbCBkYXRhIGluIG9uZSBsb2FkIGZy
b20gdGhlIHN0YWNrLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoMQorICAgIGxv
YWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAKKyAg
ICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4gICAgCisgICAgbG9hZHAgb2Zm
c2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxb
c2NyYXRjaDFdLCByZXN1bHQKKyAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UKKyAgICAKKyAgICAj
IFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAgICBsb2FkcCBbcmVzdWx0
XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBN
YXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXQorCisgICAgIyBJ
bml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgbG9hZHAgY2xhc3NJbmZvT2Zmc2V0W3NjcmF0Y2gx
XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCisgICAgc3RvcmVwIHN0
cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCisgICAgc3RvcmVwIDAsIEpTT2Jq
ZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0KKyAgICBhZGRwIHNpemVvZiBKU09iamVjdCwgcmVz
dWx0LCBzY3JhdGNoMQorICAgIHN0b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVydHlT
dG9yYWdlW3Jlc3VsdF0KK2VuZAorCitfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQw
KQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ3JlYXRlVGhp
c1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wQ3JlYXRlVGhpc1Nsb3cK
KyAgICBsb2FkcCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFt0MF0sIHQyCisgICAgYnRweiB0Miwg
Lm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVj
dFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIHQy
LCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wQ3JlYXRlVGhp
c1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV90aGlzKQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRPZmZzZXQgKyBDYWxsZWVb
Y2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKwor
CitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5v
cENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYmJiIFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BDb252
ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0VGhpc1Nsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0
W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVjdHVy
ZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xh
c3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MSwgdDAsIHQy
LCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkg
Q2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3T2JqZWN0U2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheV9idWZmZXIpCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdleHApCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMp
CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9u
b3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRp
IDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBi
aW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90U2xvdworICAgIHhvcmkgMSwgdDMKKyAgICBzdG9y
ZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5vdFNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9l
cToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0Mywg
Lm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93CisgICAgYmliIHQyLCBM
b3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpZXEgdDAsIHQx
LCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBz
dG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisu
b3BFcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2VxKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX2VxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50
KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BFcU51
bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0
Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlCisub3BF
cU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaWVxIHQxLCBV
bmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQyLCB0MQorLm9wRXFOdWxsTm90SW1tZWRpYXRlOgor
ICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkg
dDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEp
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0
MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFTbG93CisgICAg
YmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBj
aW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQy
LCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3Bh
dGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lcSkK
KyAgICBkaXNwYXRjaCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251bGw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAg
IGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
dDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQx
LCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjpt
X2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wTmVxTnVs
bE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBjaW5lcSB0MSwgTnVsbFRh
ZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIGFuZGkgdDIsIHQxCisu
b3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAg
ICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBoZWxw
ZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKKyAgICBiaWIgdDIsIExv
d2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmluZworICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDFdLCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJlcSBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cKKy5u
b3RTdHJpbmc6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVyYXRpb24odDAs
IHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkK
KworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAor
CitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVx
KG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5k
LCBfbGxpbnRfaGVscGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3RyaWN0ZXE6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0
KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9uc3RyaWN0ZXEp
CisKKworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xl
c3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2xlc3NlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcikKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRh
ZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQx
CisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5jU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNwYXRjaCgyKQorCisK
K19sbGludF9vcF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVE
ZWNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBic3Vi
aW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29w
X3Bvc3RfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMy
VGFnLCAub3BQb3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAg
ICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNE
b25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9w
b3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAg
bG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRh
ZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAg
YnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhd
CisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0RGVjRG9u
ZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdG9f
anNudW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykK
KyAgICBiaWVxIHQyLCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklzSW50CisgICAgYmlhZXEgdDIs
IEVtcHR5VmFsdWVUYWcsIC5vcFRvSnNudW1iZXJTbG93Cisub3BUb0pzbnVtYmVySXNJbnQ6Cisg
ICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb0pzbnVtYmVyU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fanNudW1iZXIpCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQwLCB0MSwgdDIpCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BOZWdhdGVTcmNO
b3RJbnQKKyAgICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CisgICAgbmVnaSB0
MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVp
IHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKy5vcE5lZ2F0
ZVNyY05vdEludDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xvdworICAgIHhv
cmkgMHg4MDAwMDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQor
ICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMp
CisKKy5vcE5lZ2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lZ2F0ZSkK
KyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9w
ZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQ
Q10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisg
ICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDMsIEludDMyVGFn
LCAub3AyTm90SW50CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50ZWdlck9wZXJhdGlvbkFu
ZFN0b3JlKHQzLCB0MSwgdDAsIC5zbG93LCB0MikKKyAgICBkaXNwYXRjaCg1KQorCisub3AxTm90
SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRoZSBz
ZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEgdDIsIExvd2VzdFRhZywg
LnNsb3cKKyAgICBiaWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJp
bmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQxLCBmdDEKKyAgICBqbXAgLm9wMU5v
dEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQxLCB0MywgZnQxCisu
b3AxTm90SW50UmVhZHk6CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgZmlpMmQgdDAsIHQyLCBm
dDAKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2Nmciwg
dDEsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wMk5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJh
bmQgaXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5
IG5vdC4KKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNsb3cK
KyAgICBjaTJkIHQwLCBmdDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorICAgIGRvdWJsZU9wZXJh
dGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRj
aCg1KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCg1KQor
ZW5kCisKK21hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlvbiwg
aGVscGVyKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRh
ZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgaW50ZWdlck9wZXJhdGlv
bihsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zm
c2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZz
ZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBkb3VibGVPcGVyYXRpb24s
IGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfYWRkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVm
dCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQgbGVm
dCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2FkZCkKKworCitfbGxpbnRfb3Bf
bXVsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAg
ICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAg
ICAgIGNvbnN0IHNjcmF0Y2ggPSBpbnQzMlRhZyAgICMgV2Uga25vdyB0aGF0IHdlIGNhbiByZXVz
ZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEgY29uc3RhbnQuCisgICAgICAg
ICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoCisgICAgICAgICAgICBibXVsaW8gbGVmdCwgc2NyYXRj
aCwgc2xvdworICAgICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRvbmUKKyAgICAgICAgICAgIGJp
bHQgbGVmdCwgMCwgLnNsb3cKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIC5zbG93CisgICAg
ICAgIC5kb25lOgorICAgICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBp
bmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBtdWxk
IGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9tdWwpCisKKworX2xsaW50
X29wX3N1YjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1YmlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9zdWIpCisKKworX2xsaW50X29wX2RpdjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBs
ZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjaTJkIGxlZnQsIGZ0MAorICAg
ICAgICAgICAgY2kyZCByaWdodCwgZnQxCisgICAgICAgICAgICBkaXZkIGZ0MCwgZnQxCisgICAg
ICAgICAgICBiY2QyaSBmdDEsIHJpZ2h0LCAubm90SW50CisgICAgICAgICAgICBzdG9yZWkgaW50
MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHJpZ2h0
LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBqbXAgLmRvbmUKKyAg
ICAgICAgLm5vdEludDoKKyAgICAgICAgICAgIHN0b3JlZCBmdDEsIFtjZnIsIGluZGV4LCA4XQor
ICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQp
IGRpdmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2RpdikKKworCitf
bGxpbnRfb3BfbW9kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfbW9kKQorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8gYml0T3Aob3BlcmF0aW9u
LCBoZWxwZXIsIGFkdmFuY2UpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywg
LnNsb3cKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgbG9hZGkgNFtQQ10sIHQy
CisgICAgb3BlcmF0aW9uKHQxLCB0MCwgLnNsb3cpCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAg
ICBkaXNwYXRjaChhZHZhbmNlKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAg
ICBkaXNwYXRjaChhZHZhbmNlKQorZW5kCisKK19sbGludF9vcF9sc2hpZnQ6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cp
IGxzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2xzaGlmdCwK
KyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfcnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSByc2hpZnRpIGxl
ZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9yc2hpZnQsCisgICAgICAgIDQp
CisKKworX2xsaW50X29wX3Vyc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9w
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICB1cnNoaWZ0
aSBsZWZ0LCByaWdodAorICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdworICAgICAgICBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfdXJzaGlmdCwKKyAgICAgICAgNCkKKworCitfbGxp
bnRfb3BfYml0YW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBhbmRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9iaXRhbmQsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdHhvcjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgc2xvdykgeG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
Yml0eG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRvcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgb3Jp
IGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXRvciwKKyAgICAgICAg
NSkKKworCitfbGxpbnRfb3BfYml0bm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQxLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3BCaXRub3RTbG93Cisg
ICAgbm90aSB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9w
Qml0bm90U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfYml0bm90KQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQodDEsIENlbGxUYWcsIHQwLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdykKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6bV90
eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0hhc0luc3RhbmNlLCAu
b3BDaGVja0hhc0luc3RhbmNlU2xvdworICAgIGRpc3BhdGNoKDIpCisKKy5vcENoZWNrSGFzSW5z
dGFuY2VTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jaGVja19oYXNfaW5zdGFu
Y2UpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5zdGFuY2VvZjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgIyBDaGVjayB0aGF0IGJhc2VWYWwgaW1wbGVtZW50cyB0aGUgZGVm
YXVsdCBIYXNJbnN0YW5jZSBiZWhhdmlvci4KKyAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBk
ZXByZWNhdGVkLgorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZFVuY2hlY2tlZCh0MSwgdDApCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9m
bGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIC5vcEluc3RhbmNlb2ZTbG93
CisgICAgCisgICAgIyBBY3R1YWxseSBkbyB0aGUgd29yay4KKyAgICBsb2FkaSAxNltQQ10sIHQw
CisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDAsIENlbGxUYWcsIHQxLCAub3BJbnN0YW5jZW9mU2xvdykKKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QxXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUlu
Zm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgbG9hZGkg
OFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcs
IHQyLCAub3BJbnN0YW5jZW9mU2xvdykKKyAgICAKKyAgICAjIFJlZ2lzdGVyIHN0YXRlOiB0MSA9
IHByb3RvdHlwZSwgdDIgPSB2YWx1ZQorICAgIG1vdmUgMSwgdDAKKy5vcEluc3RhbmNlb2ZMb29w
OgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MgorICAgIGxvYWRpIFN0cnVj
dHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QyXSwgdDIKKyAgICBicGVxIHQyLCB0
MSwgLm9wSW5zdGFuY2VvZkRvbmUKKyAgICBidGlueiB0MiwgLm9wSW5zdGFuY2VvZkxvb3AKKwor
ICAgIG1vdmUgMCwgdDAKKy5vcEluc3RhbmNlb2ZEb25lOgorICAgIHN0b3JlaSBCb29sZWFuVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MywgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3BJbnN0YW5jZW9mU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfaW5zdGFuY2VvZikKKyAgICBkaXNwYXRjaCg1KQorCisKK19s
bGludF9vcF90eXBlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl90eXBlb2YpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfdW5k
ZWZpbmVkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfaXNfdW5kZWZpbmVkKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX2Jvb2xl
YW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9p
c19ib29sZWFuKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX251bWJlcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX251bWJl
cikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19zdHJpbmc6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19zdHJpbmcpCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfb2JqZWN0KQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX2lzX2Z1bmN0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfZnVuY3Rpb24pCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfaW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9pbikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9yZXNvbHZl
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVz
b2x2ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX3NraXA6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3Nr
aXApCisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyByZXNvbHZlR2xvYmFsKHNsb3cpCisgICAg
IyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9y
IHRoZSBsb2FkLgorICAgICMgOFtQQ10gICBQcm9wZXJ0eSBpZGVudGlmaWVyIGluZGV4IGluIHRo
ZSBjb2RlIGJsb2NrLgorICAgICMgMTJbUENdICBTdHJ1Y3R1cmUgcG9pbnRlciwgaW5pdGlhbGl6
ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgIyAxNltQQ10gIE9mZnNldCBpbiBn
bG9iYWwgb2JqZWN0LCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFs
T2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAg
ICBicG5lcSB0MSwgMTJbUENdLCBzbG93CisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRw
IEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0
W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0Mwor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCitlbmQKKworX2xsaW50
X29wX3Jlc29sdmVfZ2xvYmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICByZXNvbHZlR2xv
YmFsKC5vcFJlc29sdmVHbG9iYWxTbG93KQorICAgIGRpc3BhdGNoKDUpCisKKy5vcFJlc29sdmVH
bG9iYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkK
KyAgICBkaXNwYXRjaCg1KQorCisKKyMgR2l2ZXMgeW91IHRoZSBzY29wZSBpbiB0MCwgd2hpbGUg
YWxsb3dpbmcgeW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0
aGUKKyMgc2NvcGVzIGFzIHRoZXkgYXJlIHRyYXZlcnNlZC4gc2NvcGVDaGVjaygpIGlzIGNhbGxl
ZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSByZWdpc3RlcgorIyBob2xkaW5nIHRoZSBzY29wZSwg
YW5kIGEgcmVnaXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc2NyYXRjaC4gTm90ZSB0aGF0IHRo
aXMgZG9lcyBub3QKKyMgdXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQgc3R1ZmYgaW4gdDMgaWYgbmVl
ZCBiZS4KK21hY3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykK
KyAgICBsb2FkcCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRp
IGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorICAg
IAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGJpbmVxIENvZGVCbG9jazo6bV9j
b2RlVHlwZVt0MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AKKyAgICBidGJ6IENvZGVCbG9jazo6bV9u
ZWVkc0Z1bGxTY29wZUNoYWluW3QxXSwgLmxvb3AKKyAgICAKKyAgICBsb2FkaSBDb2RlQmxvY2s6
Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEKKworICAgICMgTmVlZCB0byBjb25kaXRpb25h
bGx5IHNraXAgb3ZlciBvbmUgc2NvcGUuCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0s
IEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2YXRpb24KKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAg
ICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisubm9BY3RpdmF0aW9uOgorICAg
IHN1YmkgMSwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorLmxvb3A6CisgICAgc2NvcGVD
aGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MAorICAg
IHN1YmkgMSwgdDIKKyAgICBidGlueiB0MiwgLmxvb3AKKworLmRvbmU6CitlbmQKKworX2xsaW50
X29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRwIEpTR2xvYmFs
RGF0YTo6YWN0aXZhdGlvblN0cnVjdHVyZVt0M10sIHQzCisgICAgZ2V0U2NvcGUoCisgICAgICAg
IDIwW1BDXSwKKyAgICAgICAgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKQorICAgICAgICAgICAgbG9h
ZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGJw
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHlu
YW1pY1N1cGVyU2xvdworICAgICAgICBlbmQpCisgICAgcmVzb2x2ZUdsb2JhbCgub3BSZXNvbHZl
R2xvYmFsRHluYW1pY1Nsb3cpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbER5
bmFtaWNTdXBlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisg
ICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNwYXRjaCg2KQorCisK
K19sbGludF9vcF9nZXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBP
cGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRo
ZSBsb2FkLgorICAgICMgOFtQQ10gICBJbmRleCBvZiByZWdpc3RlciBpbiB0aGUgc2NvcGUuCisg
ICAgIyAxMltQQ10gIERlIEJydWlqaW4gaW5kZXguCisgICAgZ2V0U2NvcGUoMTJbUENdLCBtYWNy
byAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSA4
W1BDXSwgdDIKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBs
b2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFn
T2Zmc2V0W3QwLCB0MiwgOF0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhd
LCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfcHV0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGdldFNjb3BlKDhb
UENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDMsIHQyKQorICAgIGxvYWRpIDRbUENdLCB0
MQorICAgIHdyaXRlQmFycmllcih0MywgdDIpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9i
amVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBd
LCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIs
IFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X2dldF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDEKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0ds
b2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwg
dDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDEKKyAgICBz
dG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3B1dF9nbG9i
YWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2Jq
ZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0
MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0
W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfYmFzZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfYmFzZSkKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZW5zdXJlX3Byb3Bl
cnR5X2V4aXN0cykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhf
YmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3Jlc29sdmVfd2l0aF9iYXNlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29s
dmVfd2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfZ2V0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIG9ubHkgZG8gbW9u
b21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkg
dGhlCisgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRv
IGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorICAgICMgcGluZy1wb25naW5nIGlzIGZy
ZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUK
KyAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRh
a2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9p
bmcgYW55d2F5LgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5
SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9w
ZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0
MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZz
ZXRbdDAsIHQyXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAg
c3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg4KQorCisub3BHZXRCeUlkU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X2lkKQorICAgIGRpc3BhdGNoKDgpCisK
KworX2xsaW50X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50c0xlbmd0aFNs
b3cKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MgorICAg
IHN1YmkgMSwgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQor
ICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQp
CisKKy5vcEdldEFyZ3VtZW50c0xlbmd0aFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X3B1dF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisg
ICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQz
LCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAg
IGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYnBuZXEgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGxvYWRpIDIwW1BD
XSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDAsIHQyKQorICAgIHdy
aXRlQmFycmllcih0MCwgdDIpCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbdDMsIHQxXQorICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MywgdDFdCisgICAgZGlzcGF0Y2goOSkKKworLm9w
UHV0QnlJZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pZCkKKyAg
ICBkaXNwYXRjaCg5KQorCisKK21hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVj
a3MpCisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRp
IDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRh
ZywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBicG5lcSBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgYWRkaXRpb25h
bENoZWNrcyh0MSwgdDMsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAg
ICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGFkZHAgdDEs
IHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQxLCB0MikKKyAgICB3cml0
ZUJhcnJpZXIodDEsIHQyKQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRp
IDI0W1BDXSwgdDEKKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVw
IHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAgIGRpc3BhdGNoKDkpCitlbmQKKworX2xs
aW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBwdXRCeUlkVHJhbnNpdGlv
bihtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KSBlbmQpCisKKworX2xsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICBwdXRCeUlkVHJhbnNpdGlvbigKKyAg
ICAgICAgbWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykKKyAgICAgICAgICAgIGNv
bnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJl
IHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KKyAgICAgICAgCisgICAgICAgICAgICBsb2FkcCAyOFtQ
Q10sIHNjcmF0Y2gKKyAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gs
IG9rIGVuZCkKKyAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvcltzY3Jh
dGNoXSwgc2NyYXRjaAorICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRj
aCwgb2sgZW5kKQorICAgICAgICAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFn
T2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25lCisgICAgICAgIC5sb29wOgorICAg
ICAgICAgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xk
U3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQorICAgICAgICAgICAgYnBuZXEgb2xkU3RydWN0
dXJlLCBbc2NyYXRjaF0sIHNsb3cKKyAgICAgICAgICAgIGFkZHAgNCwgc2NyYXRjaAorICAgICAg
ICAgICAgYmluZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1
cmVdLCBOdWxsVGFnLCAubG9vcAorICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kKQorCisKK19s
bGludF9vcF9kZWxfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9kZWxfYnlfaWQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
Z2V0X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxv
YWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBsb2Fk
cCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDFdLCB0MgorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAg
ICBicG5lcSBbdDBdLCB0MiwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9z
dG9yYWdlW3QwXSwgdDMKKyAgICBiaWFlcSB0MSwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDBd
LCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBBcnJheVN0
b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgQXJy
YXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKyAgICBi
aWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRCeVZhbFNsb3cKKyAgICBzdG9yZWkgdDIsIFRh
Z09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfZ2V0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9nZXRfYXJndW1lbnRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBJbnQzMlRhZywgdDIsIC5vcEdldEFyZ3VtZW50
QnlWYWxTbG93KQorICAgIGFkZGkgMSwgdDIKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5
bG9hZE9mZnNldFtjZnJdLCB0MQorICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJndW1lbnRCeVZh
bFNsb3cKKyAgICBuZWdpIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgVGhpc0Fy
Z3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxvYWRpIFRoaXNB
cmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgc3RvcmVp
IHQwLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudEJ5VmFsU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDE2W1BD
XSwgdDAKKyAgICBicG5lcSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgLm9wR2V0QnlQ
bmFtZVNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDIw
W1BDXSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MworICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAorICAgIGJwbmVxIHQwLCBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0M10sIC5vcEdldEJ5UG5hbWVTbG93Cisg
ICAgbG9hZGkgMjRbUENdLCB0MAorICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAKKyAgICBzdWJp
IDEsIHQwCisgICAgYmlhZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2FjaGVh
YmxlU2xvdHNbdDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRwIEpTT2JqZWN0OjptX3By
b3BlcnR5U3RvcmFnZVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QyLCB0MCwgOF0sIHQx
CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MiwgdDAsIDhdLCB0MworICAgIGxvYWRpIDRbUENd
LCB0MAorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQz
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNykKKworLm9wR2V0QnlQ
bmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9wbmFtZSkKKyAg
ICBkaXNwYXRjaCg3KQorCisKK19sbGludF9vcF9wdXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgSW50MzJUYWcsIHQyLCAu
b3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6
anNBcnJheUNsYXNzSW5mb1t0MF0sIHQwCisgICAgYnBuZXEgW3QxXSwgdDAsIC5vcFB1dEJ5VmFs
U2xvdworICAgIGJpYWVxIHQyLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MV0sIC5vcFB1dEJ5
VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQwCisgICAgYmllcSBB
cnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIEVtcHR5VmFsdWVU
YWcsIC5vcFB1dEJ5VmFsRW1wdHkKKy5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQ6CisgICAgbG9hZGkg
MTJbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MSwgdDMpCisg
ICAgd3JpdGVCYXJyaWVyKHQxLCB0MykKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV92
ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0b3JlaSB0MywgQXJyYXlTdG9yYWdl
OjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisK
Ky5vcFB1dEJ5VmFsRW1wdHk6CisgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVz
SW5WZWN0b3JbdDBdCisgICAgYmliIHQyLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXSwgLm9w
UHV0QnlWYWxTdG9yZVJlc3VsdAorICAgIGFkZGkgMSwgdDIsIHQxCisgICAgc3RvcmVpIHQxLCBB
cnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXQorICAgIGptcCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0
CisKKy5vcFB1dEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5
X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9kZWxfYnlfdmFsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X3ZhbCkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaW5kZXg6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaW5kZXgpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dldHRlcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9nZXR0ZXIpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9zZXR0ZXIpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfbG9vcDoKKyAgICBub3AKK19sbGludF9vcF9qbXA6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGRpc3BhdGNoQnJhbmNoKDRbUENdKQorCisKK19sbGludF9vcF9q
bXBfc2NvcGVzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfam1wX3Njb3BlcykKKyAgICBkaXNwYXRjaCgwKQorCisKK21hY3JvIGp1bXBUcnVlT3JG
YWxzZShjb25kaXRpb25PcCwgc2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQm9vbGVhblRhZywgdDAsIC5zbG93KQorICAgIGNv
bmRpdGlvbk9wKHQwLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAg
ZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoc2xvdykKKyAg
ICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX3RydWU6CisgICAgbm9wCitf
bGxpbnRfb3BfanRydWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxz
ZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aW56IHZhbHVlLCB0YXJnZXQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2p0cnVlKQorCisKK19sbGludF9vcF9sb29wX2lmX2Zh
bHNlOgorICAgIG5vcAorX2xsaW50X29wX2pmYWxzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAganVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpeiB2
YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZmFsc2UpCisKKworbWFj
cm8gZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYW5kbGVyKQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAuaW1t
ZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgY2VsbEhh
bmRsZXIoU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFy
Z2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQ
Q10pCisKKy5pbW1lZGlhdGU6CisgICAgb3JpIDEsIHQxCisgICAgaW1tZWRpYXRlSGFuZGxlcih0
MSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorZW5kCisKK19sbGludF9vcF9qZXFfbnVsbDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFs
dWUsIHRhcmdldCkgYnRibnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBl
bmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaWVxIHZhbHVlLCBOdWxsVGFnLCB0
YXJnZXQgZW5kKQorICAgIAorCitfbGxpbnRfb3Bfam5lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJ6
IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNy
byAodmFsdWUsIHRhcmdldCkgYmluZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisKKwor
X2xsaW50X29wX2puZXFfcHRyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIENlbGxUYWcsIC5vcEpuZXFQdHJCcmFuY2gKKyAgICBicGVxIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQxLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKKy5vcEpuZXFQdHJCcmFuY2g6Cisg
ICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorLm9wSm5lcVB0ckZhbGxUaHJvdWdoOgorICAgIGRp
c3BhdGNoKDQpCisKKworbWFjcm8gY29tcGFyZShpbnRlZ2VyQ29tcGFyZSwgZG91YmxlQ29tcGFy
ZSwgaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MworICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZyh0MywgdDIsIHQzKQorICAgIGJpbmVxIHQwLCBJbnQzMlRhZywgLm9wMU5vdElu
dAorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGludGVnZXJDb21wYXJl
KHQxLCB0MywgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5vdEludDoKKyAg
ICBiaWEgdDAsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wMU5v
dEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQz
LCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAg
IGZpaTJkIHQzLCB0MiwgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgZmlpMmQgdDEsIHQwLCBm
dDAKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRj
aCg0KQorCisub3AyTm90SW50OgorICAgIGNpMmQgdDEsIGZ0MAorICAgIGJpYSB0MiwgTG93ZXN0
VGFnLCAuc2xvdworICAgIGZpaTJkIHQzLCB0MiwgZnQxCisgICAgZG91YmxlQ29tcGFyZShmdDAs
IGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLmp1bXBUYXJnZXQ6CisgICAg
ZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikK
KyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX2xlc3M6CisgICAgbm9w
CitfbGxpbnRfb3Bfamxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdCBsZWZ0LCBy
aWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzcykKKworCitfbGxp
bnRfb3Bfam5sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQg
ZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxdW4gbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzKQorCisKK19s
bGludF9vcF9sb29wX2lmX2dyZWF0ZXI6CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcikKKworCitfbGxpbnRfb3Bfam5ncmVhdGVyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5ncmVhdGVyKQorCisKK19sbGludF9vcF9sb29w
X2lmX2xlc3NlcToKKyAgICBub3AKK19sbGludF9vcF9qbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkg
YmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmRsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX2psZXNzZXEpCisKKworX2xsaW50X29wX2pubGVzc2VxOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJkZ3R1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9qbmxlc3NlcSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyZXE6Cisg
ICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0
LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJkZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9q
Z3JlYXRlcmVxKQorCisKK19sbGludF9vcF9qbmdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJp
bHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
dGFyZ2V0KSBiZGx0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfam5ncmVhdGVyZXEpCisKKworX2xsaW50X29wX2xvb3BfaGludDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGRpc3BhdGNoKDEp
CisKKworX2xsaW50X29wX3N3aXRjaF9pbW06CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQyLCB0MSwgdDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVK
dW1wVGFibGUsIHQzICAgIyBGSVhNRTogd291bGQgYmUgbmljZSB0byBwZWVwaG9sZSB0aGlzIQor
ICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxl
cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgYWRkcCB0MywgdDIKKyAgICBiaW5l
cSB0MSwgSW50MzJUYWcsIC5vcFN3aXRjaEltbU5vdEludAorICAgIHN1YmkgU2ltcGxlSnVtcFRh
YmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9m
ZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAg
ICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEsIC5vcFN3
aXRjaEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQorCisu
b3BTd2l0Y2hJbW1Ob3RJbnQ6CisgICAgYmliIHQxLCBMb3dlc3RUYWcsIC5vcFN3aXRjaEltbVNs
b3cgICMgR28gdG8gc2xvdyBwYXRoIGlmIGl0J3MgYSBkb3VibGUuCisub3BTd2l0Y2hJbW1GYWxs
VGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLm9wU3dpdGNoSW1tU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX2ltbSkKKyAgICBkaXNwYXRjaCgw
KQorCisKK19sbGludF9vcF9zd2l0Y2hfY2hhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6ZW9mIFNpbXBs
ZUp1bXBUYWJsZSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2NoYXJhY3Rl
clN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGFkZHAg
dDMsIHQyCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJibmVxIFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0
Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MF0sIHQwCisg
ICAgYmluZXEgU3RyaW5nSW1wbDo6bV9sZW5ndGhbdDBdLCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRo
cm91Z2gKKyAgICBsb2FkcCBTdHJpbmdJbXBsOjptX2RhdGE4W3QwXSwgdDEKKyAgICBidGlueiBT
dHJpbmdJbXBsOjptX2hhc2hBbmRGbGFnc1t0MF0sIEhhc2hGbGFnczhCaXRCdWZmZXIsIC5vcFN3
aXRjaENoYXI4Qml0CisgICAgbG9hZGggW3QxXSwgdDAKKyAgICBqbXAgLm9wU3dpdGNoQ2hhclJl
YWR5Cisub3BTd2l0Y2hDaGFyOEJpdDoKKyAgICBsb2FkYiBbdDFdLCB0MAorLm9wU3dpdGNoQ2hh
clJlYWR5OgorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVx
IHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3Qy
XSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpi
cmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBsb2FkaSBbdDIs
IHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRp
c3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoOgor
ICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zd2l0Y2hfc3RyaW5nOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNo
X3N0cmluZykKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9uZXdfZnVuYzoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgYnRpeiAxMltQQ10sIC5vcE5ld0Z1bmNVbmNoZWNrZWQKKyAg
ICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5
VmFsdWVUYWcsIC5vcE5ld0Z1bmNEb25lCisub3BOZXdGdW5jVW5jaGVja2VkOgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuYykKKy5vcE5ld0Z1bmNEb25lOgorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX25ld19mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19mdW5jX2V4cCkKKyAgICBkaXNwYXRj
aCgzKQorCisKK21hY3JvIGRvQ2FsbChoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
bG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRwIExMSW50Q2FsbExpbmtJbmZvOjpjYWxsZWVbdDFd
LCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0Mywg
Lm9wQ2FsbFNsb3cpCisgICAgYmluZXEgdDMsIHQyLCAub3BDYWxsU2xvdworICAgIGxvYWRpIDEy
W1BDXSwgdDMKKyAgICBhZGRwIDI0LCBQQworICAgIGxzaGlmdGkgMywgdDMKKyAgICBhZGRwIGNm
ciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBjZnIKKyAgICBsb2FkcCBKU0Z1
bmN0aW9uOjptX3Njb3BlQ2hhaW5bdDJdLCB0MAorICAgIHN0b3JlaSB0MiwgQ2FsbGVlICsgUGF5
bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgdDAsIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0
W3QzXQorICAgIGxvYWRpIDggLSAyNFtQQ10sIHQyCisgICAgc3RvcmVpIFBDLCBBcmd1bWVudENv
dW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBzdG9yZXAgY2ZyLCBDYWxsZXJGcmFtZVt0M10KKyAg
ICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3Jl
aSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNdCisgICAgc3RvcmVpIENlbGxUYWcsIFNj
b3BlQ2hhaW4gKyBUYWdPZmZzZXRbdDNdCisgICAgbW92ZSB0MywgY2ZyCisgICAgY2FsbCBMTElu
dENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdCisgICAgZGlzcGF0Y2hBZnRlckNh
bGwoKQorCisub3BDYWxsU2xvdzoKKyAgICBzbG93UGF0aEZvckNhbGwoNiwgaGVscGVyKQorZW5k
CisKK19sbGludF9vcF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xs
aW50X2hlbHBlcl9jYWxsKQorCisKK19sbGludF9vcF9jb25zdHJ1Y3Q6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRfaGVscGVyX2NvbnN0cnVjdCkKKworCitfbGxpbnRf
b3BfY2FsbF92YXJhcmdzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzbG93UGF0aEZvckNh
bGwoNiwgX2xsaW50X2hlbHBlcl9jYWxsX3ZhcmFyZ3MpCisKKworX2xsaW50X29wX2NhbGxfZXZh
bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgCisgICAgIyBFdmFsIGlzIGV4ZWN1dGVkIGlu
IG9uZSBvZiB0d28gbW9kZXM6CisgICAgIworICAgICMgMSkgV2UgZmluZCB0aGF0IHdlJ3JlIHJl
YWxseSBpbnZva2luZyBldmFsKCkgaW4gd2hpY2ggY2FzZSB0aGUKKyAgICAjICAgIGV4ZWN1dGlv
biBpcyBwZXJmb21lZCBlbnRpcmVseSBpbnNpZGUgdGhlIGhlbHBlciwgYW5kIGl0CisgICAgIyAg
ICByZXR1cm5zIHRoZSBQQyBvZiBhIGZ1bmN0aW9uIHRoYXQganVzdCByZXR1cm5zIHRoZSByZXR1
cm4gdmFsdWUKKyAgICAjICAgIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAgIworICAgICMg
MikgV2UgZmluZCB0aGF0IHdlJ3JlIGludm9raW5nIHNvbWV0aGluZyBjYWxsZWQgZXZhbCgpIHRo
YXQgaXMgbm90CisgICAgIyAgICB0aGUgcmVhbCBldmFsLiBUaGVuIHRoZSBoZWxwZXIgcmV0dXJu
cyB0aGUgUEMgb2YgdGhlIHRoaW5nIHRvCisgICAgIyAgICBjYWxsLCBhbmQgd2UgY2FsbCBpdC4K
KyAgICAjCisgICAgIyBUaGlzIGFsbG93cyB1cyB0byBoYW5kbGUgdHdvIGNhc2VzLCB3aGljaCB3
b3VsZCByZXF1aXJlIGEgdG90YWwgb2YKKyAgICAjIHVwIHRvIGZvdXIgcGllY2VzIG9mIHN0YXRl
IHRoYXQgY2Fubm90IGJlIGVhc2lseSBwYWNrZWQgaW50byB0d28KKyAgICAjIHJlZ2lzdGVycyAo
QyBmdW5jdGlvbnMgY2FuIHJldHVybiB1cCB0byB0d28gcmVnaXN0ZXJzLCBlYXNpbHkpOgorICAg
ICMKKyAgICAjIC0gVGhlIGNhbGwgZnJhbWUgcmVnaXN0ZXIuIFRoaXMgbWF5IG9yIG1heSBub3Qg
aGF2ZSBiZWVuIG1vZGlmaWVkCisgICAgIyAgIGJ5IHRoZSBoZWxwZXIsIGJ1dCB0aGUgY29udmVu
dGlvbiBpcyB0aGF0IGl0IHJldHVybnMgaXQuIEl0J3Mgbm90CisgICAgIyAgIHRvdGFsbHkgY2xl
YXIgaWYgdGhhdCdzIG5lY2Vzc2FyeSwgc2luY2UgdGhlIGNmciBpcyBjYWxsZWUgc2F2ZS4KKyAg
ICAjICAgQnV0IHRoYXQncyBvdXIgc3R5bGUgaW4gdGhpcyBoZXJlIGludGVycHJldGVyIHNvIHdl
IHN0aWNrIHdpdGggaXQuCisgICAgIworICAgICMgLSBBIGJpdCB0byBzYXkgaWYgdGhlIGhlbHBl
ciBzdWNjZXNzZnVsbHkgZXhlY3V0ZWQgdGhlIGV2YWwgYW5kIGhhcworICAgICMgICB0aGUgcmV0
dXJuIHZhbHVlLCBvciBkaWQgbm90IGV4ZWN1dGUgdGhlIGV2YWwgYnV0IGhhcyBhIFBDIGZvciB1
cworICAgICMgICB0byBjYWxsLgorICAgICMKKyAgICAjIC0gRWl0aGVyOgorICAgICMgICAtIFRo
ZSBKUyByZXR1cm4gdmFsdWUgKHR3byByZWdpc3RlcnMpLCBvcgorICAgICMKKyAgICAjICAgLSBU
aGUgUEMgdG8gY2FsbC4KKyAgICAjCisgICAgIyBJdCB0dXJucyBvdXQgdG8gYmUgZWFzaWVyIHRv
IGp1c3QgYWx3YXlzIGhhdmUgdGhpcyByZXR1cm4gdGhlIGNmcgorICAgICMgYW5kIGEgUEMgdG8g
Y2FsbCwgYW5kIHRoYXQgUEMgbWF5IGJlIGEgZHVtbXkgdGh1bmsgdGhhdCBqdXN0CisgICAgIyBy
ZXR1cm5zIHRoZSBKUyB2YWx1ZSB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgIAorICAgIHNs
b3dQYXRoRm9yQ2FsbCg0LCBfbGxpbnRfaGVscGVyX2NhbGxfZXZhbCkKKworCitfbGxpbnRfZ2Vu
ZXJpY19yZXR1cm5fcG9pbnQ6CisgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorCisKK19sbGludF9v
cF90ZWFyX29mZl9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZAorICAgIGJp
ZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZh
dGlvbk5vdENyZWF0ZWQKKy5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZDoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKKy5vcFRlYXJPZmZBY3RpdmF0
aW9uTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF90ZWFyX29mZl9h
cmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IHN1YmkgMSwgdDAgICAjIEdldCB0aGUgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyCisgICAg
YmllcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBcmd1
bWVudHNOb3RDcmVhdGVkCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2Fy
Z3VtZW50cykKKy5vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDIp
CisKKworbWFjcm8gZG9SZXR1cm4oKQorICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCisgICAg
bG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgY2ZyCisgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZv
cmVSZXR1cm4odDIpCisgICAgcmV0CitlbmQKKworX2xsaW50X29wX3JldDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgZG9S
ZXR1cm4oKQorCisKK19sbGludF9vcF9jYWxsX3B1dF9yZXN1bHQ6CisgICAgbG9hZGkgNFtQQ10s
IHQyCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB0cmFjZUV4ZWN1dGlvbigpICMgTmVlZHMg
dG8gYmUgaGVyZSBiZWNhdXNlIGl0IHdvdWxkIGNsb2JiZXIgdDEsIHQwCisgICAgZGlzcGF0Y2go
MikKKworCitfbGxpbnRfb3BfcmV0X29iamVjdF9vcl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0
MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwg
Q2VsbFRhZywgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJ
bmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QK
KyAgICBkb1JldHVybigpCisKKy5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdDoKKyAgICBsb2Fk
aSA4W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAg
ZG9SZXR1cm4oKQorCisKK19sbGludF9vcF9tZXRob2RfY2hlY2s6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgICMgV2UgaWdub3JlIG1ldGhvZCBjaGVja3MgYW5kIHVzZSBub3JtYWwgZ2V0X2J5
X2lkIG9wdGltaXphdGlvbnMuCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3RyY2F0
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3Ry
Y2F0KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3RvX3ByaW1pdGl2ZToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQz
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGJpbmVxIHQxLCBD
ZWxsVGFnLCAub3BUb1ByaW1pdGl2ZUlzSW1tCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQyCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
dHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2UKKy5vcFRvUHJpbWl0
aXZlSXNJbW06CisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9y
ZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BU
b1ByaW1pdGl2ZVNsb3dDYXNlOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19wcmlt
aXRpdmUpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZ2V0X3BuYW1lczoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9wbmFtZXMp
CisgICAgZGlzcGF0Y2goMCkgIyBUaGUgaGVscGVyIGVpdGhlciBhZHZhbmNlcyB0aGUgUEMgb3Ig
anVtcHMgdXMgdG8gc29tZXdoZXJlIGVsc2UuCisKKworX2xsaW50X29wX25leHRfcG5hbWU6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkaSAxNltQ
Q10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSwgdDAKKyAgICBiaWVx
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCAub3BOZXh0UG5hbWVFbmQKKyAgICBsb2Fk
aSAyMFtQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAg
ICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2pzU3RyaW5nc1t0Ml0sIHQzCisgICAg
bG9hZGkgW3QzLCB0MCwgOF0sIHQzCisgICAgYWRkaSAxLCB0MAorICAgIHN0b3JlaSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBD
ZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDMsIDhdLCB0MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0
MQorICAgIGJwbmVxIHQxLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVy
ZVt0Ml0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OjptX2NhY2hlZFByb3RvdHlwZUNoYWluW3QyXSwgdDAKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFp
bjo6bV92ZWN0b3JbdDBdLCB0MAorICAgIGJ0cHogW3QwXSwgLm9wTmV4dFBuYW1lVGFyZ2V0Cisu
b3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3A6CisgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJv
dG90eXBlICsgVGFnT2Zmc2V0W3QxXSwgTnVsbFRhZywgLm9wTmV4dFBuYW1lU2xvdworICAgIGxv
YWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QxXSwgdDIKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDEKKyAgICBicG5lcSB0MSwgW3QwXSwgLm9w
TmV4dFBuYW1lU2xvdworICAgIGFkZHAgNCwgdDAKKyAgICBidHBueiBbdDBdLCAub3BOZXh0UG5h
bWVDaGVja1Byb3RvdHlwZUxvb3AKKy5vcE5leHRQbmFtZVRhcmdldDoKKyAgICBkaXNwYXRjaEJy
YW5jaCgyNFtQQ10pCisKKy5vcE5leHRQbmFtZUVuZDoKKyAgICBkaXNwYXRjaCg3KQorCisub3BO
ZXh0UG5hbWVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXh0X3BuYW1lKSAj
IFRoaXMgZWl0aGVyIGtlZXBzIHRoZSBQQyB3aGVyZSBpdCB3YXMgKGNhdXNpbmcgdXMgdG8gbG9v
cCkgb3Igc2V0cyBpdCB0byB0YXJnZXQuCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3Bf
cHVzaF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3B1c2hfc2NvcGUpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9wX3Nj
b3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cG9wX3Njb3BlKQorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3B1c2hfbmV3X3Njb3Bl
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVz
aF9uZXdfc2NvcGUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfY2F0Y2g6CisgICAg
IyBUaGlzIGlzIHdoZXJlIHdlIGVuZCB1cCBmcm9tIHRoZSBKSVQncyB0aHJvdyB0cmFtcG9saW5l
IChiZWNhdXNlIHRoZQorICAgICMgbWFjaGluZSBjb2RlIHJldHVybiBhZGRyZXNzIHdpbGwgYmUg
c2V0IHRvIF9sbGludF9vcF9jYXRjaCksIGFuZCBmcm9tCisgICAgIyB0aGUgaW50ZXJwcmV0ZXIn
cyB0aHJvdyB0cmFtcG9saW5lIChzZWUgX2xsaW50X3Rocm93X3RyYW1wb2xpbmUpLgorICAgICMg
VGhlIEpJVCB0aHJvd2luZyBwcm90b2NvbCBjYWxscyBmb3IgdGhlIGNmciB0byBiZSBpbiB0MC4g
VGhlIHRocm93aW5nCisgICAgIyBjb2RlIG11c3QgaGF2ZSBrbm93biB0aGF0IHdlIHdlcmUgdGhy
b3dpbmcgdG8gdGhlIGludGVycHJldGVyLCBhbmQgaGF2ZQorICAgICMgc2V0IEpTR2xvYmFsRGF0
YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93LgorICAgIG1vdmUgdDAsIGNmcgorICAgIGxv
YWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRpIEpTR2xvYmFs
RGF0YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93W3QzXSwgUEMKKyAgICBsb2FkaSBKU0ds
b2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdLCB0MAorICAgIGxvYWRpIEpT
R2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSwgdDEKKyAgICBzdG9yZWkgMCwg
SlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBF
bXB0eVZhbHVlVGFnLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10gICAg
ICAgCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB0cmFj
ZUV4ZWN1dGlvbigpICAjIFRoaXMgbmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIHdlIGRvbid0IHdh
bnQgdG8gY2xvYmJlciB0MCwgdDEsIHQyLCB0MyBhYm92ZS4KKyAgICBkaXNwYXRjaCgyKQorCisK
K19sbGludF9vcF90aHJvdzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Rocm93KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93
X3JlZmVyZW5jZV9lcnJvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKKyAgICBkaXNwYXRjaCgyKQorCisK
K19sbGludF9vcF9qc3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGFkZGkgMyAqIDQsIFBDLCB0MQorICAgIHN0b3JlaSB0MSwgW2NmciwgdDAsIDhdCisg
ICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKworX2xsaW50X29wX3NyZXQ6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFtjZnIsIHQwLCA4XSwg
UEMKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9kZWJ1ZzoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlYnVnKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX3Byb2ZpbGVfd2lsbF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBidHB6IEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0s
IC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJv
ZmlsZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGJ0cHogSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgLm9w
UHJvZmlsZURpZENhbGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVf
ZGlkX2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitf
bGxpbnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklU
Rm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAor
ICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZToK
KyAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcg
ZnJvbSBMTEludEhlbHBlcnMpLCBzbworICAgICMgdGhlIHRocm93IHRhcmdldCBpcyBub3QgbmVj
ZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0byBoZXJlLgorICAgICMgVGhpcyBl
c3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCisgICAgbG9h
ZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxE
YXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFy
Z2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworX2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3Ry
YW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIGxv
YWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFs
RGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRh
cmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKKyMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3
ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgorIyBU
aGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhl
ciBKSVQuIFdlIGFzc2VydAorIyBhcyBtdWNoLgorCittYWNybyBub3RTdXBwb3J0ZWQoKQorICAg
IGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGNyYXNoKCkKKyAgICBlbHNlCisgICAgICAgICMg
V2Ugc2hvdWxkIHVzZSB3aGF0ZXZlciB0aGUgc21hbGxlc3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24g
aXMsIGp1c3QgdG8KKyAgICAgICAgIyBlbnN1cmUgdGhhdCB0aGVyZSBpcyBhIGdhcCBiZXR3ZWVu
IGluc3RydWN0aW9uIGxhYmVscy4gSWYgbXVsdGlwbGUKKyAgICAgICAgIyBzbWFsbGVzdCBpbnN0
cnVjdGlvbnMgZXhpc3QsIHdlIHNob3VsZCBwaWNrIHRoZSBvbmUgdGhhdCBpcyBtb3N0CisgICAg
ICAgICMgbGlrZWx5IHJlc3VsdCBpbiBleGVjdXRpb24gYmVpbmcgaGFsdGVkLiBDdXJyZW50bHkg
dGhhdCBpcyB0aGUgYnJlYWsKKyAgICAgICAgIyBpbnN0cnVjdGlvbiBvbiBhbGwgYXJjaGl0ZWN0
dXJlcyB3ZSdyZSBpbnRlcmVzdGVkIGluLiAoQnJlYWsgaXMgaW50MworICAgICAgICAjIG9uIElu
dGVsLCB3aGljaCBpcyAxIGJ5dGUsIGFuZCBia3B0IG9uIEFSTXY3LCB3aGljaCBpcyAyIGJ5dGVz
LikKKyAgICAgICAgYnJlYWsKKyAgICBlbmQKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2FycmF5X2xl
bmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2NoYWluOgor
ICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX2NoYWluOgor
ICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3Byb3RvOgor
ICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3NlbGY6Cisg
ICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZW5lcmljOgorICAgIG5v
dFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX2NoYWluOgorICAgIG5v
dFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3Byb3RvOgorICAgIG5v
dFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3NlbGY6CisgICAgbm90
U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9wcm90bzoKKyAgICBub3RTdXBwb3J0
ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKwor
X2xsaW50X29wX2dldF9zdHJpbmdfbGVuZ3RoOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGlu
dF9vcF9wdXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
cHV0X2J5X2lkX3JlcGxhY2U6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9i
eV9pZF90cmFuc2l0aW9uOgorICAgIG5vdFN1cHBvcnRlZCgpCisKKworIyBJbmRpY2F0ZSB0aGUg
ZW5kIG9mIExMSW50LgorX2xsaW50X2VuZDoKKyAgICBjcmFzaCgpCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0
ZXIuaCIKKworI2luY2x1ZGUgIkxMSW50QXNzZW1ibHkuaCIKKworCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisjZGVm
aW5lIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKKyNkZWZp
bmUgTExJTlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxlbmd0aCkgZXh0ZXJuICJDIiB2b2lk
IGxsaW50XyMjb3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKExMSU5UX0lOU1RSVUNU
SU9OX0RFQ0wpOworI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wKKworZXh0ZXJuICJDIiB2
b2lkIGxsaW50X2JlZ2luKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW5kKCk7CitleHRlcm4g
IkMiIHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50
X2V2YWxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9nZW5lcmljX3JldHVybl9w
b2ludCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xp
bmUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5l
KCk7CisKKyNlbmRpZiAvLyBMb3dMZXZlbEludGVycHJldGVyX2gKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTkzIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitjbGFzcyBTcGVj
aWFsUmVnaXN0ZXIKKyAgZGVmIGluaXRpYWxpemUobmFtZSkKKyAgICBAbmFtZSA9IG5hbWUKKyAg
ZW5kCisgIAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgQG5hbWUKKyAgZW5kCitlbmQKKworQVJN
djdfREFUQV9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJpcCIpCitBUk12N19BRERSX1JFRyA9
IFNwZWNpYWxSZWdpc3Rlci5uZXcoInIzIikKKworZGVmIG1vdmVJbW1lZGlhdGUodmFsdWUsIHJl
Z2lzdGVyKQorICAjIEN1cnJlbnRseSB3ZSBvbmx5IGhhbmRsZSB0aGUgc2ltcGxlIGNhc2VzLCBh
bmQgZmFsbCBiYWNrIHRvIG1vdi9tb3Z0IGZvciB0aGUgY29tcGxleCBvbmVzLgorICBpZiB2YWx1
ZSA+PSAwICYmIHZhbHVlIDwgMjU2CisgICAgJGFzbS5wdXRzICJtb3Z3IFwjI3t2YWx1ZX0sICN7
cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzaWYgKH52YWx1ZSkgPj0gMCAmJiAofnZhbHVl
KSA8IDI1NgorICAgICRhc20ucHV0cyAibXZudyBcIyN7fnZhbHVlfSwgI3tyZWdpc3Rlci5hcm1W
N09wZXJhbmR9IgorICBlbHNlCisgICAgJGFzbS5wdXRzICJtb3Z3IFwjI3t2YWx1ZSAmIDB4ZmZm
Zn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBpZiAodmFsdWUgJiAweGZmZmYwMDAw
KSAhPSAwCisgICAgICAkYXNtLnB1dHMgIm1vdnQgXCMje3ZhbHVlID4+IDE2fSwgI3tyZWdpc3Rl
ci5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklE
CisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIs
ICJyMCIKKyAgICAgICJyMCIKKyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgICJyMSIK
KyAgICB3aGVuICJ0MiIsICJhMiIKKyAgICAgICJyMiIKKyAgICB3aGVuICJhMyIKKyAgICAgICJy
MyIKKyAgICB3aGVuICJ0MyIKKyAgICAgICJyNCIKKyAgICB3aGVuICJ0NCIKKyAgICAgICJyNyIK
KyAgICB3aGVuICJjZnIiCisgICAgICAicjUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBl
bmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisg
IGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVy
YW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkCisgIGVu
ZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2Fz
ZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZyIgorICAgICAgImQwIgorICAgIHdoZW4gImZyMSIs
CisgICAgICAiZDEiCisgICAgd2hlbiAiZnIyIgorICAgICAgImQyIgorICAgIHdoZW4gImZyMyIK
KyAgICAgICJkMyIKKyAgICB3aGVuICJmcjQiCisgICAgICAiZDQiCisgICAgd2hlbiAiZnI1Igor
ICAgICAgImQ1IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBh
cm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisg
IGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZCBzZWxmCisgIGVuZAorZW5kCisKK2Ns
YXNzIEltbWVkaWF0ZQorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2UgIkludmFsaWQgaW1t
ZWRpYXRlICN7dmFsdWV9IiBpZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAiIyR7dmFs
dWV9IgorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQK
KyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09w
ZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgeWllbGQgc2Vs
ZgorICBlbmQKK2VuZAorCittb2R1bGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisgIGRlZiBhcm1W
N0xvYWRTdG9yZVdyYXAKKyAgICBzZWxmLmFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFu
ZAorICAgICRhc20ucHV0cyAiXHRsZHIgI3tzZWxmLmFybVY3UG9zc2libHlNZW1vcnlPcGVyYW5k
fSwgI3tBUk12N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9IgorICAgIHlpZWxkIEFSTXY3X0RBVEFf
UkVHCisgICAgJGFzbS5wdXRzICJcdHN0ciAje0FSTXY3X0RBVEFfUkVHLmFybVY3T3BlcmFuZH0s
ICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFuZH0iCisgIGVuZAorZW5kCisKK2NsYXNz
IEFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKworICBkZWYgYXJtVjdQ
cmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYg
fHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAgIG1vdmVJbW1lZGlhdGUob2Zmc2V0LnZhbHVl
LCBBUk12N19BRERSX1JFRykKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJs
ZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiB8fCBvZmZzZXQudmFs
dWUgPiAweGZmZgorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tBUk12N19BRERSX1JF
Ry5hcm1WN09wZXJhbmR9XSIKKyAgICBlbHNlCisgICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9
LCAje29mZnNldC5hcm1WN09wZXJhbmR9XSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3Mg
QmFzZUluZGV4CisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisKKyAgZGVmIGFybVY3
UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSAhPSAwCisg
ICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgICAgICAk
YXNtLnB1dHMgImFkZHcgI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9LCAje2Jhc2UuYXJt
VjdPcGVyYW5kfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9y
eU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAgICAgIlsje0FSTXY3X0FERFJf
UkVHLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1d
IgorICAgIGVsc2UKKyAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdP
cGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBB
YnNvbHV0ZUFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKyAgCisgIGRl
ZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBtb3ZlSW1tZWRpYXRlKGFk
ZHJlc3MudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3Np
YmxlTWVtb3J5T3BlcmFuZAorICAgICJbI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIK
KyAgZW5kCitlbmQKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
c20ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNt
LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNt
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgzIEBACisjIS91c3IvYmluL2VudiBydWJ5CisK
KyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFt
ZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJvZmZzZXRzIgorcmVx
dWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisK
K2NsYXNzIEFzc2VtYmxlcgorICBkZWYgaW5pdGlhbGl6ZShvdXRwKQorICAgIEBvdXRwID0gb3V0
cAorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBkZWYgZW50ZXJBc20KKyAgICBAb3V0
cC5wdXRzICJhc20gKCIKKyAgICBAc3RhdGUgPSA6YXNtCisgIGVuZAorICAKKyAgZGVmIGxlYXZl
QXNtCisgICAgQG91dHAucHV0cyAiKTsiCisgICAgQHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisg
IGRlZiBpbkFzbQorICAgIGVudGVyQXNtCisgICAgeWllbGQKKyAgICBsZWF2ZUFzbQorICBlbmQK
KyAgCisgIGRlZiBwdXRzKGxpbmUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisg
ICAgQG91dHAucHV0cygobGluZSArICJcbiIpLmluc3BlY3QpCisgIGVuZAorICAKKyAgZGVmIGNv
bW1lbnQodGV4dCkKKyAgICBAb3V0cC5wdXRzICIvLyAje3RleHR9IgorICBlbmQKK2VuZAorCisk
YXNtID0gQXNzZW1ibGVyLm5ldygkc3Rkb3V0KQorCithc21GaWxlID0gQVJHVi5zaGlmdAorb2Zm
c2V0c0ZpbGUgPSBBUkdWLnNoaWZ0CisKK2FzdCA9IHBhcnNlKGxleChJTzo6cmVhZChhc21GaWxl
KSkpCitvZmZzZXRzTGlzdCwgY29uZmlnSW5kZXggPSBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbklu
ZGV4KG9mZnNldHNGaWxlKQorCitmb3JTZXR0aW5ncyhjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlv
bnMoYXN0KVtjb25maWdJbmRleF0sIGFzdCkgeworICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xl
dmVsQVNULCBiYWNrZW5kIHwKKyAgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdz
KQorICBsb3dMZXZlbEFTVCA9IGxvd0xldmVsQVNULnJlc29sdmUoKmJ1aWxkT2Zmc2V0c01hcChs
b3dMZXZlbEFTVCwgb2Zmc2V0c0xpc3QpKQorICBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25j
cmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCkgeworICAgICRhc20uaW5Bc20gewor
ICAgICAgbG93TGV2ZWxBU1QubG93ZXIoYmFja2VuZCkKKyAgICB9CisgIH0KK30KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsODE3IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBCYXNlIHV0aWxpdHkgdHlwZXMgZm9yIHRoZSBB
U1QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFZhbGlkIG1ldGhvZHMgZm9yIE5vZGU6CisjCisjIG5v
ZGUuY2hpbGRyZW4gLT4gUmV0dXJucyBhbiBhcnJheSBvZiBpbW1lZGlhdGUgY2hpbGRyZW4uCisj
CisjIG5vZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgc3RyaWN0IGRl
c2NlbmRhbnRzIChjaGlsZHJlbgorIyAgICAgYW5kIGNoaWxkcmVuIG9mIGNoaWxkcmVuLCB0cmFu
c2l0aXZlbHkpLgorIworIyBub2RlLmZsYXR0ZW4gLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWlu
aW5nIHRoZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5kCisjICAgICB0aGUgbm9kZSBpdHNlbGYuCisj
CisjIG5vZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aG9z
ZSBlbGVtZW50cyBpbgorIyAgICAgbm9kZS5mbGF0dGVuIHRoYXQgYXJlIG9mIHRoZSBnaXZlbiB0
eXBlIChpc19hPyB0eXBlIHJldHVybnMgdHJ1ZSkuCisjCisjIG5vZGUubWFwQ2hpbGRyZW57fHZ8
IC4uLn0gLT4gUmV0dXJucyBhIG5ldyBub2RlIHdpdGggYWxsIGNoaWxkcmVuCisjICAgICByZXBs
YWNlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJsb2NrLgorIworIyBFeGFtcGxlczoKKyMKKyMg
bm9kZS5maWx0ZXIoU2V0dGluZykudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc2V0dGluZ3Mg
dGhhdCB0aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVsc2UgYmxvY2tzIGRlcGVuZCBvbi4KKyMKKyMg
bm9kZS5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzdHJ1
Y3R1cmUgb2Zmc2V0cworIyAgICAgdGhhdCB0aGUgQVNUIGRlcGVuZHMgb24uCisKK2NsYXNzIE5v
ZGUKKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4pCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgIGVuZAorICAKKyAgZGVmIGNv
ZGVPcmlnaW5TdHJpbmcKKyAgICAibGluZSBudW1iZXIgI3tAY29kZU9yaWdpbn0iCisgIGVuZAor
ICAKKyAgZGVmIGRlc2NlbmRhbnRzCisgICAgY2hpbGRyZW4uY29sbGVjdHt8dnwgdi5mbGF0dGVu
fS5mbGF0dGVuCisgIGVuZAorICAKKyAgZGVmIGZsYXR0ZW4KKyAgICBbc2VsZl0gKyBkZXNjZW5k
YW50cworICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIodHlwZSkKKyAgICBmbGF0dGVuLnNlbGVjdHt8
dnwgdi5pc19hPyB0eXBlfQorICBlbmQKK2VuZAorCitjbGFzcyBOb0NoaWxkcmVuIDwgTm9kZQor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW10KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRy
ZW4KKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldEtleQorICBhdHRy
X3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKHN0cnVjdCwgZmll
bGQpCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAK
KyAgZGVmIGhhc2gKKyAgICBAc3RydWN0Lmhhc2ggKyBAZmllbGQuaGFzaCAqIDMKKyAgZW5kCisg
IAorICBkZWYgZXFsPyhvdGhlcikKKyAgICBAc3RydWN0ID09IG90aGVyLnN0cnVjdCBhbmQgQGZp
ZWxkID09IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisgICAgCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBBU1Qgbm9kZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworCitjbGFzcyBTdHJ1Y3RPZmZzZXQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVy
IDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0
LCBmaWVsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAg
ICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYg
c2VsZi5mb3JGaWVsZChjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGtleSA9IFN0cnVj
dE9mZnNldEtleS5uZXcoc3RydWN0LCBmaWVsZCkKKyAgICAKKyAgICB1bmxlc3MgQEBtYXBwaW5n
W2tleV0KKyAgICAgIEBAbWFwcGluZ1trZXldID0gU3RydWN0T2Zmc2V0Lm5ldyhjb2RlT3JpZ2lu
LCBzdHJ1Y3QsIGZpZWxkKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1trZXldCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICAiI3tzdHJ1Y3R9Ojoje2ZpZWxkfSIKKyAgZW5kCisgIAorICBkZWYg
PD0+KG90aGVyKQorICAgIGlmIEBzdHJ1Y3QgIT0gb3RoZXIuc3RydWN0CisgICAgICByZXR1cm4g
QHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgICAgZW5kCisgICAgQGZpZWxkIDw9PiBvdGhlci5m
aWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVh
ZGVyIDpzdHJ1Y3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgZW5kCisgIAorICBA
QG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBzdHJ1Y3Qp
CisgICAgdW5sZXNzIEBAbWFwcGluZ1tzdHJ1Y3RdCisgICAgICBAQG1hcHBpbmdbc3RydWN0XSA9
IFNpemVvZi5uZXcoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tz
dHJ1Y3RdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAic2l6ZW9mICN7QHN0cnVjdH0iCisg
IGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAgICBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QK
KyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRl
ciA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhbHVlKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgICIje3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYgPT0ob3RoZXIpCisgICAgb3RoZXIu
aXNfYT8gSW1tZWRpYXRlIGFuZCBvdGhlci52YWx1ZSA9PSBAdmFsdWUKKyAgZW5kCitlbmQKKwor
Y2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQK
KyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRl
ZiBtYXBDaGlsZHJlbgorICAgIEFkZEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBA
bGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xl
ZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRp
YXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgor
ICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBA
cmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gLSAje3Jp
Z2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcyA8IE5vZGUKKyAg
YXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQK
KyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVm
dCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE11bEltbWVkaWF0
ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKiAje3JpZ2h0LmR1bXB9KSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hp
bGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4K
KyAgICBbQGNoaWxkXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5lZ0ltbWVk
aWF0ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiKC0je0BjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVy
SUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBu
YW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUo
Y29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1h
cHBpbmdbbmFtZV0gPSBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAor
ICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBl
bmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVy
IDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0g
e30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3Mg
QEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBGUFJlZ2lzdGVySUQubmV3
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlIDwg
Tm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQor
ICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5n
W25hbWVdID0gVmFyaWFibGUubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBt
YXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5k
CisKK2NsYXNzIEFkZHJlc3MgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6b2Zmc2V0Cisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBvZmZzZXQpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BiYXNlLCBAb2Zmc2V0XQorICBlbmQKKyAgCisg
IGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFz
ZSksICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNl
dC5kdW1wfVsje2Jhc2UuZHVtcH1dIgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXggPCBO
b2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6aW5kZXgsIDpzY2FsZSwgOm9mZnNldAorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAaW5kZXggPSBpbmRl
eAorICAgIEBzY2FsZSA9IHNjYWxlCisgICAgcmFpc2UgdW5sZXNzIFsxLCAyLCA0LCA4XS5tZW1i
ZXI/IEBzY2FsZQorICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbQGJhc2UsIEBpbmRleCwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hp
bGRyZW4KKyAgICBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVs
ZCBAaW5kZXgpLCBAc2NhbGUsICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH0sICN7aW5kZXguZHVtcH0sICN7c2Nh
bGV9XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzIDwgTm9DaGlsZHJlbgor
ICBhdHRyX3JlYWRlciA6YWRkcmVzcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
YWRkcmVzcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBhZGRyZXNzID0gYWRkcmVzcwor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7YWRkcmVzcy5kdW1wfVtdIgorICBlbmQKK2Vu
ZAorCitjbGFzcyBJbnN0cnVjdGlvbiA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm9wY29kZSwgOm9w
ZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBvcGNvZGUsIG9wZXJhbmRz
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG9wY29kZSA9IG9wY29kZQorICAgIEBvcGVy
YW5kcyA9IG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgb3BlcmFuZHMK
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgSW5zdHJ1Y3Rpb24ubmV3
KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIlx0IiArIG9wY29kZS50b19zICsgIiAiICsgb3BlcmFuZHMuY29sbGVj
dHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCisgIGVuZAorZW5kCisKK2NsYXNzIEVycm9yIDwgTm9D
aGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRlcnJvciIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgQ29uc3REZWNsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6dmFyaWFibGUsIDp2YWx1ZQor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhcmlhYmxlID0gdmFyaWFibGUKKyAgICBAdmFsdWUgPSB2
YWx1ZQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAdmFyaWFibGUsIEB2YWx1ZV0K
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBDb25zdERlY2wubmV3KGNvZGVPcmln
aW4sICh5aWVsZCBAdmFyaWFibGUpLCAoeWllbGQgQHZhbHVlKSkKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICJjb25zdCAje0B2YXJpYWJsZS5kdW1wfSA9ICN7QHZhbHVlLmR1bXB9IgorICBl
bmQKK2VuZAorCiskbGFiZWxNYXBwaW5nID0ge30KKworY2xhc3MgTGFiZWwgPCBOb0NoaWxkcmVu
CisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBu
YW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAK
KyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBp
bmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5s
ZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFi
ZWxNYXBwaW5nW25hbWVdID0gTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisg
ICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFt
ZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRy
X3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKworICBAQHVuaXF1
ZU5hbWVDb3VudGVyID0gMAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1l
KQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNv
bGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTG9jYWxM
YWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBMb2NhbExhYmVsLm5l
dyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAg
ZW5kCisgIAorICBkZWYgc2VsZi51bmlxdWUoY29tbWVudCkKKyAgICBuZXdOYW1lID0gIl8je2Nv
bW1lbnR9IgorICAgIGlmICRsYWJlbE1hcHBpbmdbbmV3TmFtZV0KKyAgICAgIHdoaWxlICRsYWJl
bE1hcHBpbmdbbmV3TmFtZSA9ICJfI3tAQHVuaXF1ZU5hbWVDb3VudGVyfV8je2NvbW1lbnR9Il0K
KyAgICAgICAgQEB1bmlxdWVOYW1lQ291bnRlciArPSAxCisgICAgICBlbmQKKyAgICBlbmQKKyAg
ICBmb3JOYW1lKG5pbCwgbmV3TmFtZSkKKyAgZW5kCisgIAorICBkZWYgY2xlYW5OYW1lCisgICAg
aWYgbmFtZSA9fiAvXlwuLworICAgICAgIl8iICsgbmFtZVsxLi4tMV0KKyAgICBlbHNlCisgICAg
ICBuYW1lCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisg
IGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6
bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExhYmVs
UmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxhYmVsKSkKKyAgZW5kCisgIAorICBk
ZWYgbmFtZQorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxhYmVs
Lm5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZSA8IE5vQ2hpbGRy
ZW4KKyAgYXR0cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBsYWJlbCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFw
Q2hpbGRyZW4KKyAgICBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQg
QGxhYmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVu
Y2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsaXN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBsaXN0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxpc3QgPSBsaXN0Cisg
IGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgbGlzdAorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbigmcHJvYykKKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgQGxpc3QubWFwKCZw
cm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxpc3QuY29sbGVjdHt8dnwgdi5kdW1w
fS5qb2luKCJcbiIpCisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUgPCBOb0NoaWxkcmVuCisgIGRl
ZiBpbml0aWFsaXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBU
cnVlLm5ldworICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAor
ICAKKyAgZGVmIHZhbHVlCisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgInRy
dWUiCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlh
bGl6ZQorICAgIHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNlID0gRmFsc2UubmV3
CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBk
ZWYgdmFsdWUKKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImZhbHNlIgor
ICBlbmQKK2VuZAorCitjbGFzcyBUcnVlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAgIFRydWUuaW5z
dGFuY2UKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2VDbGFzcworICBkZWYgYXNOb2RlCisgICAg
RmFsc2UuaW5zdGFuY2UKKyAgZW5kCitlbmQKKworY2xhc3MgU2V0dGluZyA8IE5vQ2hpbGRyZW4K
KyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5h
bWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAor
ICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1l
KQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFNl
dHRpbmcubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVd
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFu
ZCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
bGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJl
bgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAg
IEFuZC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBhbmQgI3tyaWdodC5kdW1wfSki
CisgIGVuZAorZW5kCisKK2NsYXNzIE9yIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJp
Z2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0Cisg
IGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAK
KyAgZGVmIG1hcENoaWxkcmVuCisgICAgT3IubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCks
ICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVt
cH0gb3IgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE5vdCA8IE5vZGUKKyAg
YXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBjaGls
ZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisgIGVuZAorICAK
KyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1h
cENoaWxkcmVuCisgICAgTm90Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgICIobm90ICN7Y2hpbGQuZHVtcH0pIgorICBlbmQKK2VuZAor
CitjbGFzcyBTa2lwIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRza2lw
IgorICBlbmQKK2VuZAorCitjbGFzcyBJZlRoZW5FbHNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6
cHJlZGljYXRlLCA6dGhlbkNhc2UKKyAgYXR0cl9hY2Nlc3NvciA6ZWxzZUNhc2UKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgdGhlbkNhc2UpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAcHJlZGljYXRlID0gcHJlZGljYXRlCisgICAgQHRoZW5DYXNlID0g
dGhlbkNhc2UKKyAgICBAZWxzZUNhc2UgPSBTa2lwLm5ldyhjb2RlT3JpZ2luKQorICBlbmQKKyAg
CisgIGRlZiBjaGlsZHJlbgorICAgIGlmIEBlbHNlQ2FzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0
aGVuQ2FzZSwgQGVsc2VDYXNlXQorICAgIGVsc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNh
c2VdCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgSWZUaGVuRWxz
ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBwcmVkaWNhdGUpLCAoeWllbGQgQHRoZW5DYXNlKSwg
KHlpZWxkIEBlbHNlQ2FzZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiaWYgI3twcmVk
aWNhdGUuZHVtcH1cbiIgKyB0aGVuQ2FzZS5kdW1wICsgIlxuZWxzZVxuIiArIGVsc2VDYXNlLmR1
bXAgKyAiXG5lbmQiCisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvIDwgTm9kZQorICBhdHRyX3Jl
YWRlciA6bmFtZSwgOnZhcmlhYmxlcywgOmJvZHkKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBuYW1lID0gbmFtZQorICAgIEB2YXJpYWJsZXMgPSB2YXJpYWJsZXMKKyAgICBAYm9keSA9IGJv
ZHkKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAdmFyaWFibGVzICsgW0Bib2R5XQor
ICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBA
bmFtZSwgQHZhcmlhYmxlcy5tYXB7fHZ8IHlpZWxkIHZ9LCAoeWllbGQgQGJvZHkpKQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgIm1hY3JvICN7bmFtZX0oIiArIHZhcmlhYmxlcy5jb2xsZWN0
e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKVxuIiArIGJvZHkuZHVtcCArICJcbmVuZCIKKyAg
ZW5kCitlbmQKKworY2xhc3MgTWFjcm9DYWxsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwg
Om9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5k
cykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAgIEBvcGVyYW5k
cyA9IG9wZXJhbmRzCisgICAgcmFpc2UgdW5sZXNzIEBvcGVyYW5kcworICAgIEBvcGVyYW5kcy5l
YWNoe3x2fCByYWlzZSB1bmxlc3Mgdn0KKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBA
b3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgTWFjcm9D
YWxsLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiXHQje25hbWV9KCIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2
LmR1bXB9LmpvaW4oIiwgIikgKyAiKSIKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVx
dWlyZSAiYXN0IgorcmVxdWlyZSAieDg2IgorCitCQUNLRU5EUyA9CisgIFsKKyAgICJYODYiLAor
ICAgIkFSTXY3IgorICBdCisKK1dPUktJTkdfQkFDS0VORFMgPQorICBbCisgICAiWDg2IgorICBd
CisKK0JBQ0tFTkRfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgnICsgQkFDS0VORFMuam9pbign
KXwoJykgKyAnKVxcWicpCisKK2NsYXNzIE5vZGUKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgc2Vu
ZCgibG93ZXIiICsgbmFtZSkKKyAgZW5kCitlbmQKKworIyBPdmVycmlkZXMgZm9yIGxvd2VyKCkg
Zm9yIHRob3NlIG5vZGVzIHRoYXQgYXJlIGJhY2tlbmQtYWdub3N0aWMKKworZGVmIHNhbml0aXpl
TGFiZWxOYW1lKG5hbWUpCisgICMgU29tZSBwbGF0Zm9ybXMgZG9uJ3Qgd2FudCB0aGUgbGVhZGlu
ZyAiXyIuIElmIHdlIGV2ZXIgd2FudCB0byBkbyBzb21ldGhpbmcKKyAgIyBhYm91dCB0aGF0LCBp
dCB3b3VsZCBiZSBoZXJlLgorICBuYW1lCitlbmQKKworY2xhc3MgTGFiZWwKKyAgZGVmIGxvd2Vy
KG5hbWUpCisgICAgJGFzbS5wdXRzICIuZ2xvYmwgI3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxmLm5h
bWUpfSIKKyAgICAkYXNtLnB1dHMgIiN7c2FuaXRpemVMYWJlbE5hbWUoc2VsZi5uYW1lKX06Igor
ICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAgICRh
c20ucHV0cyAiTF9vZmZsaW5lYXNtXyN7c2VsZi5uYW1lWzEuLi0xXX06IgorICBlbmQKK2VuZAor
CitjbGFzcyBTa2lwCisgIGRlZiBsb3dlcihuYW1lKQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1
ZW5jZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8
CisgICAgICBub2RlLmxvd2VyKG5hbWUpCisgICAgfQorICBlbmQKK2VuZAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRl
X29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY1IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVx
dWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVx
dWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2RlZiBlbWl0TWFnaWNOdW1i
ZXIKKyAgT0ZGU0VUX01BR0lDX05VTUJFUlMuZWFjaCB7CisgICAgfCBudW1iZXIgfAorICAgIHB1
dHMgIiN7bnVtYmVyfSwiCisgIH0KK2VuZAorCitvcmlnaW5hbEFTVCA9IHBhcnNlKGxleCgkc3Rk
aW4ucmVhZCkpCisKK2VtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhvcmlnaW5hbEFTVCkgewor
ICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAgb2Zmc2V0c0xpc3QgPSBhc3Qu
ZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CisgIHNpemVzTGlzdCA9IGFzdC5maWx0ZXIo
U2l6ZW9mKS51bmlxLnNvcnQKKyAgCisgIGxlbmd0aCA9IChPRkZTRVRfTUFHSUNfTlVNQkVSUy5z
aXplICsgMSkgKiAoMSArIG9mZnNldHNMaXN0LnNpemUgKyBzaXplc0xpc3Quc2l6ZSkKKyAgCisg
IHB1dHMgInN0YXRpYyBjb25zdCB1bnNpZ25lZCBleHRyYWN0b3JUYWJsZVsje2xlbmd0aH1dID0g
eyIKKyAgZW1pdE1hZ2ljTnVtYmVyCisgIHB1dHMgIiN7aW5kZXh9LCIKKyAgb2Zmc2V0c0xpc3Qu
ZWFjaCB7CisgICAgfCBvZmZzZXQgfAorICAgIGVtaXRNYWdpY051bWJlcgorICAgIHB1dHMgIk9G
RkxJTkVfQVNNX09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSksIgor
ICB9CisgIHNpemVzTGlzdC5lYWNoIHsKKyAgICB8IG9mZnNldCB8CisgICAgZW1pdE1hZ2ljTnVt
YmVyCisgICAgcHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0cnVjdH0pLCIKKyAgfQorICBwdXRzICJ9
OyIKK30KKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rp
b25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2lu
c3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxODggQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01BQ1JPX0lOU1RSVUNUSU9OUyA9
CisgIFsKKyAgICJhZGRpIiwKKyAgICJhbmRpIiwKKyAgICJsc2hpZnRpIiwKKyAgICJtdWxpIiwK
KyAgICJuZWdpIiwKKyAgICJub3RpIiwKKyAgICJvcmkiLAorICAgInJzaGlmdGkiLAorICAgInVy
c2hpZnRpIiwKKyAgICJzdWJpIiwKKyAgICJ4b3JpIiwKKyAgICJsb2FkaSIsCisgICAibG9hZGIi
LAorICAgImxvYWRoIiwKKyAgICJzdG9yZWkiLAorICAgInN0b3JlYiIsCisgICAibG9hZGQiLAor
ICAgIm1vdmVkIiwKKyAgICJzdG9yZWQiLAorICAgImFkZGQiLAorICAgImRpdmQiLAorICAgInN1
YmQiLAorICAgIm11bGQiLAorICAgInNxcnRkIiwKKyAgICJjaTJkIiwKKyAgICJmaWkyZCIsICMg
dXNhZ2U6IGZpaTJkIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRo
IG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxmcHI+CisgICAiZmQyaWkiLCAjIHVzYWdlOiBmZDJp
aSA8ZnByPiwgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9z
dCBzaWduaWZpY2FudCBiaXRzPgorICAgImJkZXEiLAorICAgImJkbmVxIiwKKyAgICJiZGd0IiwK
KyAgICJiZGd0ZXEiLAorICAgImJkbHQiLAorICAgImJkbHRlcSIsCisgICAiYmRlcXVuIiwKKyAg
ICJiZG5lcXVuIiwKKyAgICJiZGd0dW4iLAorICAgImJkZ3RlcXVuIiwKKyAgICJiZGx0dW4iLAor
ICAgImJkbHRlcXVuIiwKKyAgICJidGQyaSIsCisgICAidGQyaSIsCisgICAiYmNkMmkiLAorICAg
Im1vdmR6IiwKKyAgICJwb3AiLAorICAgInB1c2giLAorICAgIm1vdmUiLAorICAgInN4aTJwIiwK
KyAgICJ6eGkycCIsCisgICAibm9wIiwKKyAgICJiaWVxIiwKKyAgICJiaW5lcSIsCisgICAiYmlh
IiwKKyAgICJiaWFlcSIsCisgICAiYmliIiwKKyAgICJiaWJlcSIsCisgICAiYmlndCIsCisgICAi
YmlndGVxIiwKKyAgICJiaWx0IiwKKyAgICJiaWx0ZXEiLAorICAgImJiZXEiLAorICAgImJibmVx
IiwKKyAgICJiYmEiLAorICAgImJiYWVxIiwKKyAgICJiYmIiLAorICAgImJiYmVxIiwKKyAgICJi
Ymd0IiwKKyAgICJiYmd0ZXEiLAorICAgImJibHQiLAorICAgImJibHRlcSIsCisgICAiYnRpbyIs
CisgICAiYnRpcyIsCisgICAiYnRpeiIsCisgICAiYnRpbnoiLAorICAgImJ0Ym8iLAorICAgImJ0
YnMiLAorICAgImJ0YnoiLAorICAgImJ0Ym56IiwKKyAgICJqbXAiLAorICAgImJhZGRpbyIsCisg
ICAiYmFkZGlzIiwKKyAgICJiYWRkaXoiLAorICAgImJhZGRpbnoiLAorICAgImJzdWJpbyIsCisg
ICAiYnN1YmlzIiwKKyAgICJic3ViaXoiLAorICAgImJzdWJpbnoiLAorICAgImJtdWxpbyIsCisg
ICAiYm11bGlzIiwKKyAgICJibXVsaXoiLAorICAgImJtdWxpbnoiLAorICAgImJvcmlvIiwKKyAg
ICJib3JpcyIsCisgICAiYm9yaXoiLAorICAgImJvcmlueiIsCisgICAiYnJlYWsiLAorICAgImNh
bGwiLAorICAgInJldCIsCisgICAiY2llcSIsCisgICAiY2luZXEiLAorICAgImNpYSIsCisgICAi
Y2lhZXEiLAorICAgImNpYiIsCisgICAiY2liZXEiLAorICAgImNpZ3QiLAorICAgImNpZ3RlcSIs
CisgICAiY2lsdCIsCisgICAiY2lsdGVxIiwKKyAgICJ0aW8iLAorICAgInRpcyIsCisgICAidGl6
IiwKKyAgICJ0aW56IiwKKyAgICJ0Ym8iLAorICAgInRicyIsCisgICAidGJ6IiwKKyAgICJ0Ym56
IiwKKyAgICJwZWVrIiwKKyAgICJwb2tlIiwKKyAgICJicGVxIiwKKyAgICJicG5lcSIsCisgICAi
YnBhIiwKKyAgICJicGFlcSIsCisgICAiYnBiIiwKKyAgICJicGJlcSIsCisgICAiYnBndCIsCisg
ICAiYnBndGVxIiwKKyAgICJicGx0IiwKKyAgICJicGx0ZXEiLAorICAgImFkZHAiLAorICAgImFu
ZHAiLAorICAgIm9ycCIsCisgICAic3VicCIsCisgICAieG9ycCIsCisgICAibG9hZHAiLAorICAg
ImNwZXEiLAorICAgImNwbmVxIiwKKyAgICJjcGEiLAorICAgImNwYWVxIiwKKyAgICJjcGIiLAor
ICAgImNwYmVxIiwKKyAgICJjcGd0IiwKKyAgICJjcGd0ZXEiLAorICAgImNwbHQiLAorICAgImNw
bHRlcSIsCisgICAic3RvcmVwIiwKKyAgICJidHBvIiwKKyAgICJidHBzIiwKKyAgICJidHB6IiwK
KyAgICJidHBueiIsCisgICAiYmFkZHBvIiwKKyAgICJiYWRkcHMiLAorICAgImJhZGRweiIsCisg
ICAiYmFkZHBueiIKKyAgXQorCitYODZfSU5TVFJVQ1RJT05TID0KKyAgWworICAgImNkcWkiLAor
ICAgImlkaXZpIgorICBdCisKK0lOU1RSVUNUSU9OUyA9IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4
Nl9JTlNUUlVDVElPTlMKKworSU5TVFJVQ1RJT05fUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgo
JyArIElOU1RSVUNUSU9OUy5qb2luKCcpfCgnKSArICcpKVxcWicpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFj
dG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitNQUdJ
Q19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE1NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
cmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMiCisKK09G
RlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgb2Zmc2V0c0xpc3QoYXN0KSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBzaXplc0xpc3Qo
YXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgUmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgc2l6
ZXMgdXNlZCBieSB0aGUgQVNULiAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKworZGVmIG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTdHJ1
Y3RPZmZzZXQpLnVuaXEuc29ydAorZW5kCisKK2RlZiBzaXplc0xpc3QoYXN0KQorICBhc3QuZmls
dGVyKFNpemVvZikudW5pcS5zb3J0CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChhc3QsIGZpbGUpIC0+ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgW29mZnNldHMsIGluZGV4XSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgUGFyc2VzIHRoZSBvZmZzZXRzIGZyb20gYSBmaWxlIGFuZCByZXR1cm5zIGEgbGlzdCBvZiBv
ZmZzZXRzIGFuZCB0aGUgIworIyBpbmRleCBvZiB0aGUgY29uZmlndXJhdGlvbiB0aGF0IGlzIHZh
bGlkIGluIHRoaXMgYnVpbGQgdGFyZ2V0LiAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworCitkZWYgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChmaWxlKQorICBp
bmRleCA9IG5pbAorICBvZmZzZXRzID0gW10KKyAgZW5kaWFubmVzc01hcmtlckJ5dGVzID0gbmls
CisgIAorICBkZWYgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgYnl0ZXMgPSBbXQorICAg
IDQudGltZXMgeworICAgICAgYnl0ZXMgPDwgaW5wLmdldGJ5dGUKKyAgICB9CisgICAgCisgICAg
aWYgZW5kaWFubmVzcyA9PSA6bGl0dGxlCisgICAgICAjIExpdHRsZSBlbmRpYW4KKyAgICAgIChi
eXRlc1swXSA8PCAwIHwKKyAgICAgICBieXRlc1sxXSA8PCA4IHwKKyAgICAgICBieXRlc1syXSA8
PCAxNiB8CisgICAgICAgYnl0ZXNbM10gPDwgMjQpCisgICAgZWxzZQorICAgICAgIyBCaWcgZW5k
aWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMjQgfAorICAgICAgIGJ5dGVzWzFdIDw8IDE2IHwKKyAg
ICAgICBieXRlc1syXSA8PCA4IHwKKyAgICAgICBieXRlc1szXSA8PCAwKQorICAgIGVuZAorICBl
bmQKKyAgCisgIFs6bGl0dGxlLCA6YmlnXS5lYWNoIHsKKyAgICB8IGVuZGlhbm5lc3MgfAorICAg
IG1hZ2ljQnl0ZXMgPSBbXQorICAgIE1BR0lDX05VTUJFUlMuZWFjaCB7CisgICAgICB8IG51bWJl
ciB8CisgICAgICBjdXJyZW50Qnl0ZXMgPSBbXQorICAgICAgNC50aW1lcyB7CisgICAgICAgIGN1
cnJlbnRCeXRlcyA8PCAobnVtYmVyICYgMHhmZikKKyAgICAgICAgbnVtYmVyID4+PSA4CisgICAg
ICB9CisgICAgICBpZiBlbmRpYW5uZXNzID09IDpiaWcKKyAgICAgICAgY3VycmVudEJ5dGVzLnJl
dmVyc2UhCisgICAgICBlbmQKKyAgICAgIG1hZ2ljQnl0ZXMgKz0gY3VycmVudEJ5dGVzCisgICAg
fQorICAgIAorICAgIEZpbGUub3BlbihmaWxlLCAiciIpIHsKKyAgICAgIHwgaW5wIHwKKyAgICAg
IHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICBsb29wIHsKKyAgICAgICAgYnl0ZSA9IGlucC5nZXRi
eXRlCisgICAgICAgIGJyZWFrIHVubGVzcyBieXRlCisgICAgICAgIGlmIGJ5dGUgPT0gbWFnaWNC
eXRlc1t3aGVyZUluTWFya2VyXQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIgKz0gMQorICAgICAg
ICAgIGlmIHdoZXJlSW5NYXJrZXIgPT0gbWFnaWNCeXRlcy5zaXplCisgICAgICAgICAgICAjIFdl
IGhhdmUgYSBtYXRjaCEgSWYgd2UgaGF2ZSBub3QgeWV0IHJlYWQgdGhlIGVuZGlhbm5lc3MgbWFy
a2VyIGFuZCBpbmRleCwKKyAgICAgICAgICAgICMgdGhlbiByZWFkIHRob3NlIG5vdzsgb3RoZXJ3
aXNlIHJlYWQgYW4gb2Zmc2V0LgorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiBub3QgaW5k
ZXgKKyAgICAgICAgICAgICAgaW5kZXggPSByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgb2Zmc2V0cyA8PCByZWFkSW50KGVuZGlhbm5lc3Ms
IGlucCkKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgCisgICAgICAgICAgICB3aGVyZUlu
TWFya2VyID0gMAorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgd2hlcmVJ
bk1hcmtlciA9IDAKKyAgICAgICAgZW5kCisgICAgICB9CisgICAgfQorICAgIAorICAgIGJyZWFr
IGlmIGluZGV4CisgIH0KKyAgCisgIHJhaXNlIHVubGVzcyBpbmRleAorICAKKyAgW29mZnNldHMs
IGluZGV4XQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGJ1aWxk
T2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAtPiBbb2Zmc2V0cywgc2l6ZXNdICAgICAgICAg
ICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBCdWlsZHMgYSBtYXBwaW5nIGJldHdlZW4gU3Ry
dWN0T2Zmc2V0IG5vZGVzIGFuZCB0aGVpciB2YWx1ZXMuICAgICAgICAjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgYnVpbGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xp
c3QpCisgIG9mZnNldHNNYXAgPSB7fQorICBzaXplc01hcCA9IHt9CisgIGFzdE9mZnNldHNMaXN0
ID0gb2Zmc2V0c0xpc3QoYXN0KQorICBhc3RTaXplc0xpc3QgPSBzaXplc0xpc3QoYXN0KQorICBy
YWlzZSB1bmxlc3MgYXN0T2Zmc2V0c0xpc3Quc2l6ZSArIGFzdFNpemVzTGlzdC5zaXplID09IG9m
ZnNldHNMaXN0LnNpemUKKyAgb2Zmc2V0c0xpc3QoYXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAg
IHwgc3RydWN0T2Zmc2V0LCBpbmRleCB8CisgICAgb2Zmc2V0c01hcFtzdHJ1Y3RPZmZzZXRdID0g
b2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQorICBzaXplc0xpc3QoYXN0KS5lYWNoX3dpdGhfaW5kZXgg
eworICAgIHwgc2l6ZW9mLCBpbmRleCB8CisgICAgc2l6ZXNNYXBbc2l6ZW9mXSA9IG9mZnNldHNM
aXN0LnNoaWZ0CisgIH0KKyAgW29mZnNldHNNYXAsIHNpemVzTWFwXQorZW5kCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTkxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CityZXF1aXJlICJhc3QiCityZXF1aXJlICJpbnN0cnVjdGlvbnMiCityZXF1aXJlICJyZWdpc3Rl
cnMiCisKK2NsYXNzIFRva2VuCisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luLCA6c3RyaW5nCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJpbmcpCisgICAgQGNvZGVPcmlnaW4g
PSBjb2RlT3JpZ2luCisgICAgQHN0cmluZyA9IHN0cmluZworICBlbmQKKyAgCisgIGRlZiA9PShv
dGhlcikKKyAgICBpZiBvdGhlci5pc19hPyBUb2tlbgorICAgICAgQHN0cmluZyA9PSBvdGhlci5z
dHJpbmcKKyAgICBlbHNlCisgICAgICBAc3RyaW5nID09IG90aGVyCisgICAgZW5kCisgIGVuZAor
ICAKKyAgZGVmID1+KG90aGVyKQorICAgIEBzdHJpbmcgPX4gb3RoZXIKKyAgZW5kCisgIAorICBk
ZWYgdG9fcworICAgICIje0BzdHJpbmcuaW5zcGVjdH0gYXQgbGluZSAje2NvZGVPcmlnaW59Igor
ICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIGNvbW1lbnQuZW1w
dHk/CisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc30iCisgICAgZWxzZQorICAgICAg
cmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9OiAje2NvbW1lbnRbMF19IgorICAgIGVuZAorICBl
bmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgbGV4ZXIu
IFRha2VzIGEgc3RyaW5nIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRva2Vucy4gICAgICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgbGV4KHN0cikKKyAg
cmVzdWx0ID0gW10KKyAgbGluZU51bWJlciA9IDEKKyAgd2hpbGUgbm90IHN0ci5lbXB0eT8KKyAg
ICBjYXNlIHN0cgorICAgIHdoZW4gL1xBXCMoW15cbl0qKS8KKyAgICAgICMgY29tbWVudCwgaWdu
b3JlCisgICAgd2hlbiAvXEFcbi8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJl
ciwgJCYpCisgICAgICBsaW5lTnVtYmVyICs9IDEKKyAgICB3aGVuIC9cQVthLXpBLVpdKFthLXpB
LVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAg
ICB3aGVuIC9cQVwuKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhs
aW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQV8oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1
bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBKFsgXHRdKykvCisg
ICAgICAjIHdoaXRlc3BhY2UsIGlnbm9yZQorICAgIHdoZW4gL1xBMHgoWzAtOWEtZkEtRl0rKS8K
KyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYuaGV4LnRvX3MpCisgICAg
d2hlbiAvXEEwKFswLTddKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIs
ICQmLm9jdC50b19zKQorICAgIHdoZW4gL1xBKFswLTldKykvCisgICAgICByZXN1bHQgPDwgVG9r
ZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBOjovCisgICAgICByZXN1bHQgPDwg
VG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBWzosXChcKVxbXF09XCtcLSpd
LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICBlbHNlCisg
ICAgICByYWlzZSAiTGV4ZXIgZXJyb3IgYXQgbGluZSBudW1iZXIgI3tsaW5lTnVtYmVyfSwgdW5l
eHBlY3RlZCBzZXF1ZW5jZSAje3N0clswLi4yMF0uaW5zcGVjdH0iCisgICAgZW5kCisgICAgc3Ry
ID0gJH4ucG9zdF9tYXRjaAorICBlbmQKKyAgcmVzdWx0CitlbmQKKworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgVG9rZW4gaWRlbnRpZmljYXRpb24uICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKworZGVmIGlzUmVnaXN0ZXIodG9rZW4pCisgIHRva2VuID1+IFJFR0lTVEVS
X1BBVFRFUk4KK2VuZAorCitkZWYgaXNJbnN0cnVjdGlvbih0b2tlbikKKyAgdG9rZW4gPX4gSU5T
VFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0tleXdvcmQodG9rZW4pCisgIHRva2VuID1+
IC9cQSgodHJ1ZSl8KGZhbHNlKXwoaWYpfCh0aGVuKXwoZWxzZSl8KGVsc2lmKXwoZW5kKXwoYW5k
KXwob3IpfChub3QpfChtYWNybyl8KGNvbnN0KXwoc2l6ZW9mKXwoZXJyb3IpKVxaLyBvcgorICAg
IHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4gb3IKKyAgICB0b2tlbiA9fiBJTlNUUlVDVElPTl9Q
QVRURVJOCitlbmQKKworZGVmIGlzSWRlbnRpZmllcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBW2Et
ekEtWl0oW2EtekEtWjAtOV9dKilcWi8gYW5kIG5vdCBpc0tleXdvcmQodG9rZW4pCitlbmQKKwor
ZGVmIGlzTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQV8oW2EtekEtWjAtOV9dKilcWi8KK2Vu
ZAorCitkZWYgaXNMb2NhbExhYmVsKHRva2VuKQorICB0b2tlbiA9fiAvXEFcLihbYS16QS1aMC05
X10qKVxaLworZW5kCisKK2RlZiBpc1ZhcmlhYmxlKHRva2VuKQorICBpc0lkZW50aWZpZXIodG9r
ZW4pIG9yIGlzUmVnaXN0ZXIodG9rZW4pCitlbmQKKworZGVmIGlzSW50ZWdlcih0b2tlbikKKyAg
dG9rZW4gPX4gL1xBWzAtOV0vCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgVGhlIHBhcnNlci4gVGFrZXMgYW4gYXJyYXkgb2YgdG9rZW5zIGFuZCByZXR1cm5zIGFu
IEFTVC4gTWV0aG9kcyAgICAgIworIyBvdGhlciB0aGFuIHBhcnNlKHRva2VucykgYXJlIG5vdCBm
b3IgcHVibGljIGNvbnN1bXB0aW9uLiAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworCitjbGFzcyBQYXJzZXIKKyAgZGVmIGluaXRpYWxpemUodG9rZW5zKQor
ICAgIEB0b2tlbnMgPSB0b2tlbnMKKyAgICBAaWR4ID0gMAorICBlbmQKKyAgCisgIGRlZiBwYXJz
ZUVycm9yKCpjb21tZW50KQorICAgIGlmIEB0b2tlbnNbQGlkeF0KKyAgICAgIEB0b2tlbnNbQGlk
eF0ucGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBlbHNlCisgICAgICBpZiBjb21tZW50LmVtcHR5
PworICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZpbGUiCisgICAgICBlbHNl
CisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZTogI3tjb21tZW50WzBd
fSIKKyAgICAgIGVuZAorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBjb25zdW1lKHJlZ2V4cCkK
KyAgICBpZiByZWdleHAKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPX4g
cmVnZXhwCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQGlkeCA9PSBAdG9rZW5z
Lmxlbmd0aAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICBlbmQKKyAgCisgIGRlZiBza2lwTmV3
TGluZQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgQGlkeCArPSAxCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQXRvbQorICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gIm5vdCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcGFyc2VQcmVkaWNhdGVB
dG9tCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlCisgICAgICBwYXJz
ZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgQGlkeCArPSAxCisgICAg
ICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJ0cnVlIgorICAgICAgcmVzdWx0
ID0gVHJ1ZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICJmYWxzZSIKKyAgICAgIHJlc3VsdCA9IEZhbHNlLmluc3RhbmNl
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBA
dG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBTZXR0aW5nLmZvck5hbWUoQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBwYXJzZVByZWRpY2F0ZUFuZAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlQXRv
bQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImFuZCIKKyAgICAgIGNvZGVPcmlnaW4gPSBA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xp
bmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgICByZXN1bHQgPSBBbmQu
bmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVu
ZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlCisgICAgIyBzb21lIGV4YW1wbGVzIG9mIHByZWNl
ZGVuY2U6CisgICAgIyBub3QgYSBhbmQgYiAtPiAobm90IGEpIGFuZCBiCisgICAgIyBhIGFuZCBi
IG9yIGMgLT4gKGEgYW5kIGIpIG9yIGMKKyAgICAjIGEgb3IgYiBhbmQgYyAtPiBhIG9yIChiIGFu
ZCBjKQorICAgIAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgd2hpbGUgQHRv
a2Vuc1tAaWR4XSA9PSAib3IiCisgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9
IHBhcnNlUHJlZGljYXRlQW5kCisgICAgICByZXN1bHQgPSBPci5uZXcoY29kZU9yaWdpbiwgcmVz
dWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VW
YXJpYWJsZQorICAgIGlmIGlzUmVnaXN0ZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgIGlmIEB0b2tl
bnNbQGlkeF0gPX4gRlBSX1BBVFRFUk4KKyAgICAgICAgcmVzdWx0ID0gRlBSZWdpc3RlcklELmZv
ck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAg
ICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBlbmQKKyAgICBlbHNp
ZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgIHJlc3VsdCA9IFZhcmlhYmxlLmZv
ck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAg
ICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVz
dWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQWRkcmVzcyhvZmZzZXQpCisgICAgcGFyc2VFcnJv
ciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luCisgICAgCisgICAgIyBUaHJlZSBwb3NzaWJpbGl0aWVzOgorICAgICMg
W10gICAgICAgLT4gQWJzb2x1dGVBZGRyZXNzCisgICAgIyBbYV0gICAgICAtPiBBZGRyZXNzCisg
ICAgIyBbYSxiXSAgICAtPiBCYXNlSW5kZXggd2l0aCBzY2FsZSA9IDEKKyAgICAjIFthLGIsY10g
IC0+IEJhc2VJbmRleAorICAgIAorICAgIEBpZHggKz0gMQorICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gIl0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJldHVybiBBYnNvbHV0ZUFkZHJlc3MubmV3
KGNvZGVPcmlnaW4sIG9mZnNldCkKKyAgICBlbmQKKyAgICBhID0gcGFyc2VWYXJpYWJsZQorICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICByZXN1bHQgPSBBZGRyZXNzLm5ldyhjb2Rl
T3JpZ2luLCBhLCBvZmZzZXQpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRv
a2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgYiA9IHBhcnNlVmFyaWFi
bGUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAgIHJlc3VsdCA9IEJhc2VJ
bmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgMSwgb2Zmc2V0KQorICAgICAgZWxzZQorICAgICAg
ICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgWyIxIiwgIjIiLCAiNCIsICI4Il0ubWVtYmVy
PyBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBjID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcu
dG9faQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vu
c1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2lu
LCBhLCBiLCBjLCBvZmZzZXQpCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAg
ICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VDb2xvbkNvbG9uCisgICAgc2tpcE5ld0xp
bmUKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgcGFyc2VF
cnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICBuYW1lcyA9IFtAdG9r
ZW5zW0BpZHhdLnN0cmluZ10KKyAgICBAaWR4ICs9IDEKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhd
ID09ICI6OiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVu
dGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIG5hbWVzIDw8IEB0b2tlbnNbQGlkeF0uc3RyaW5n
CisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgICByYWlzZSBpZiBuYW1lcy5lbXB0eT8KKyAg
ICBbY29kZU9yaWdpbiwgbmFtZXNdCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbkF0
b20KKyAgICBza2lwTmV3TGluZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICBA
aWR4ICs9IDEKKyAgICAgIE5lZ0ltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9y
aWdpbiwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIo
IgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAg
IHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEK
KyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSW50ZWdlciBAdG9rZW5zW0BpZHhdCisgICAgICBy
ZXN1bHQgPSBJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tA
aWR4XS5zdHJpbmcudG9faSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxz
aWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0g
cGFyc2VDb2xvbkNvbG9uCisgICAgICBpZiBuYW1lcy5zaXplID4gMQorICAgICAgICBTdHJ1Y3RP
ZmZzZXQuZm9yRmllbGQoY29kZU9yaWdpbiwgbmFtZXNbMC4uLTJdLmpvaW4oJzo6JyksIG5hbWVz
Wy0xXSkKKyAgICAgIGVsc2UKKyAgICAgICAgVmFyaWFibGUuZm9yTmFtZShjb2RlT3JpZ2luLCBu
YW1lc1swXSkKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzUmVnaXN0ZXIgQHRva2Vuc1tAaWR4XQor
ICAgICAgcGFyc2VWYXJpYWJsZQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIK
KyAgICAgIEBpZHggKz0gMQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29s
b24KKyAgICAgIFNpemVvZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzLmpvaW4oJzo6JykpCisg
ICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJz
ZUV4cHJlc3Npb25NdWwKKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVz
c2lvbkF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgaWYgQHRva2Vu
c1tAaWR4XSA9PSAiKiIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IE11bElt
bWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VF
eHByZXNzaW9uQXRvbSkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAg
IGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBjb3VsZEJlRXhwcmVzc2lvbgorICAg
IEB0b2tlbnNbQGlkeF0gPT0gIi0iIG9yIEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIgb3IgaXNJ
bnRlZ2VyKEB0b2tlbnNbQGlkeF0pIG9yIGlzVmFyaWFibGUoQHRva2Vuc1tAaWR4XSkKKyAgZW5k
CisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uCisgICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQg
PSBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIrIiBvciBA
dG9rZW5zW0BpZHhdID09ICItIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKyIKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IEFkZEltbWVkaWF0ZXMubmV3KEB0b2tlbnNb
QGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJl
c3VsdCA9IFN1YkltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJl
c3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAg
ICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlT3BlcmFu
ZChjb21tZW50KQorICAgIGlmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgICBleHByID0gcGFyc2VF
eHByZXNzaW9uCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAgICBwYXJzZUFk
ZHJlc3MoZXhwcikKKyAgICAgIGVsc2UKKyAgICAgICAgZXhwcgorICAgICAgZW5kCisgICAgZWxz
aWYgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgIHBhcnNlQWRkcmVzcyhJbW1lZGlhdGUubmV3
KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgMCkpCisgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5z
W0BpZHhdCisgICAgICByZXN1bHQgPSBMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luLCBMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vu
c1tAaWR4XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNp
ZiBpc0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJl
ZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMb2NhbExhYmVsLmZvck5hbWUo
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBA
aWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IoY29tbWVu
dCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgIHNr
aXBOZXdMaW5lCisgICAgY29uc3VtZSgvXEFcKFxaLykKKyAgICB2YXJpYWJsZXMgPSBbXQorICAg
IGxvb3AgeworICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIiki
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgaXNJZGVudGlm
aWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIHZhcmlhYmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1l
KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhd
ID09ICIpIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVs
c2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVs
c2UKKyAgICAgICAgICBwYXJzZUVycm9yCisgICAgICAgIGVuZAorICAgICAgZWxzZQorICAgICAg
ICBwYXJzZUVycm9yCisgICAgICBlbmQKKyAgICB9CisgICAgdmFyaWFibGVzCisgIGVuZAorICAK
KyAgZGVmIHBhcnNlU2VxdWVuY2UoZmluYWwsIGNvbW1lbnQpCisgICAgZmlyc3RDb2RlT3JpZ2lu
ID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgbGlzdCA9IFtdCisgICAgbG9vcCB7Cisg
ICAgICBpZiAoQGlkeCA9PSBAdG9rZW5zLmxlbmd0aCBhbmQgbm90IGZpbmFsKSBvciAoZmluYWwg
YW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgIyBpZ25vcmUKKyAgICAgICAgQGlkeCArPSAx
CisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJjb25zdCIKKyAgICAgICAgQGlkeCArPSAx
CisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzVmFyaWFibGUgQHRva2Vuc1tAaWR4XQorICAg
ICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIj0iCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICB2YWx1ZSA9IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGNvbnN0ICN7dmFyaWFi
bGUubmFtZX0iKQorICAgICAgICBsaXN0IDw8IENvbnN0RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJlcnJvciIKKyAgICAgICAgbGlzdCA8PCBFcnJvci5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImlm
IgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwcmVkaWNhdGUgPSBwYXJz
ZVByZWRpY2F0ZQorICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAg
IHNraXBOZXdMaW5lCisgICAgICAgIGlmVGhlbkVsc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3Jp
Z2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxa
LywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAg
bGlzdCA8PCBpZlRoZW5FbHNlCisgICAgICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImVsc2lm
IgorICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIHByZWRpY2F0
ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFov
KQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgZWxzZUNhc2UgPSBJZlRoZW5FbHNl
Lm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5k
KXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIi
KSkKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNhc2UKKyAgICAgICAgICBp
ZlRoZW5FbHNlID0gZWxzZUNhc2UKKyAgICAgICAgZW5kCisgICAgICAgIGlmIEB0b2tlbnNbQGlk
eF0gPT0gImVsc2UiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgaWZUaGVuRWxzZS5l
bHNlQ2FzZSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGVsc2Ug
Y2FzZSBmb3IgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikKKyAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0g
PT0gImVuZCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAg
ICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAg
ICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICBib2R5ID0gcGFyc2VT
ZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gI3tuYW1lfSIpCisgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICBsaXN0IDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBuYW1l
LCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICBlbHNpZiBpc0luc3RydWN0aW9uIEB0b2tlbnNbQGlk
eF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAg
ICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAg
IGlmIChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0
b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rp
b24sIGFuZCBpdCdzIHRoZSBsYXN0IG9uZS4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBicmVhaworICAgICAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVj
dGlvbi4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1l
LCBbXSkKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgICMgSXQn
cyBkZWZpbml0ZWx5IGFuIGluc3RydWN0aW9uLCBhbmQgaXQgaGFzIGF0IGxlYXN0IG9uZSBvcGVy
YW5kLgorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBlbmRPZlNlcXVlbmNlID0g
ZmFsc2UKKyAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3Bl
cmFuZCgid2hpbGUgaW5zaWRlIG9mIGluc3RydWN0aW9uICN7bmFtZX0iKQorICAgICAgICAgICAg
aWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRv
a2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0
cnVjdGlvbiBhbmQgb2YgdGhlIHNlcXVlbmNlLgorICAgICAgICAgICAgICBlbmRPZlNlcXVlbmNl
ID0gdHJ1ZQorICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgIyBIYXMgYW5vdGhlciBvcGVyYW5kLgorICAgICAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxu
IgorICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uLgorICAgICAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQgYSBjb21tYSwgbmV3bGluZSwgb3IgI3tm
aW5hbH0gYWZ0ZXIgI3tvcGVyYW5kcy5sYXN0LmR1bXB9IikKKyAgICAgICAgICAgIGVuZAorICAg
ICAgICAgIH0KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBu
YW1lLCBvcGVyYW5kcykKKyAgICAgICAgICBpZiBlbmRPZlNlcXVlbmNlCisgICAgICAgICAgICBi
cmVhaworICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmll
ciBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgICAgICMgTWFjcm8g
aW52b2NhdGlvbi4KKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBvcGVyYW5kcyA9IFtd
CisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIp
IgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9v
cCB7CisgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNb
QGlkeF0gPT0gIm1hY3JvIgorICAgICAgICAgICAgICAgICMgSXQncyBhIG1hY3JvIGxhbWJkYSEK
KyAgICAgICAgICAgICAgICBjb2RlT3JpZ2luSW5uZXIgPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4KKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMg
PSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgICAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVu
Y2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGFub255bW91cyBtYWNybyBwYXNzZWQgYXMg
YXJndW1lbnQgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgICAgICAgb3BlcmFuZHMgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJp
YWJsZXMsIGJvZHkpCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvcGVyYW5k
cyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBtYWNybyBjYWxsIHRvICN7bmFtZX0i
KQorICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAg
ICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICIsIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgcGFyc2VFcnJvciAiVW5leHBlY3RlZCAje0B0b2tlbnNbQGlkeF0uc3Ry
aW5nLmluc3BlY3R9IHdoaWxlIHBhcnNpbmcgaW52b2NhdGlvbiBvZiBtYWNybyAje25hbWV9Igor
ICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbmQKKyAgICAgICAg
ICBsaXN0IDw8IE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAg
ICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRlciAje25h
bWV9IgorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XSBvciBp
c0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9
PSAiOiIKKyAgICAgICAgIyBJdCdzIGEgbGFiZWwuCisgICAgICAgIGlmIGlzTGFiZWwgbmFtZQor
ICAgICAgICAgIGxpc3QgPDwgTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAg
ICBlbHNlCisgICAgICAgICAgbGlzdCA8PCBMb2NhbExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzZQorICAgICAg
ICBwYXJzZUVycm9yICJFeHBlY3RpbmcgdGVybWluYWwgI3tmaW5hbH0gI3tjb21tZW50fSIKKyAg
ICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoZmlyc3RDb2RlT3JpZ2luLCBsaXN0KQor
ICBlbmQKK2VuZAorCitkZWYgcGFyc2UodG9rZW5zKQorICBwYXJzZXIgPSBQYXJzZXIubmV3KHRv
a2VucykKKyAgcGFyc2VyLnBhcnNlU2VxdWVuY2UobmlsLCAiIikKK2VuZAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitHUFJTID0KKyAgWworICAgInQwIiwKKyAgICJ0MSIsCisgICAidDIiLAorICAgInQz
IiwKKyAgICJ0NCIsCisgICAiY2ZyIiwKKyAgICJhMCIsCisgICAiYTEiLAorICAgInIwIiwKKyAg
ICJyMSIsCisgICAic3AiCisgIF0KKworRlBSUyA9CisgIFsKKyAgICJmdDAiLAorICAgImZ0MSIs
CisgICAiZnQyIiwKKyAgICJmdDMiLAorICAgImZ0NCIsCisgICAiZnQ1IiwKKyAgICJmYTAiLAor
ICAgImZhMSIsCisgICAiZmEyIiwKKyAgICJmYTMiLAorICAgImZyIgorICBdCisKK1JFR0lTVEVS
UyA9IEdQUlMgKyBGUFJTCisKK0dQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgR1BS
Uy5qb2luKCcpfCgnKSArICcpKVxcWicpCitGUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgo
JyArIEZQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQorCitSRUdJU1RFUl9QQVRURVJOID0gUmVn
ZXhwLm5ldygnXFxBKCgnICsgUkVHSVNURVJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjIxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgInBh
cnNlciIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgLT4gc2V0dGluZ3NDb21i
aWF0aW9ucyAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbXB1dGVzIGFuIGFy
cmF5IG9mIHNldHRpbmdzIG1hcHMsIHdoZXJlIGEgc2V0dGluZ3MgbWFwIGNvbnN0aXR1dGVzICMK
KyMgYSBjb25maWd1cmF0aW9uIGZvciB0aGUgYXNzZW1ibHkgY29kZSBiZWluZyBnZW5lcmF0ZWQu
IFRoZSBtYXAgICAgICAgIworIyBjb250YWlucyBrZXkgdmFsdWUgcGFpcnMgd2hlcmUga2V5cyBh
cmUgc2V0dGluZ3MgbmFtZXMgKHN0cmluZ3MpIGFuZCAjCisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xl
YW5zICh0cnVlIGZvciBlbmFibGVkLCBmYWxzZSBmb3IgZGlzYWJsZWQpLiAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBjb21wdXRlU2V0dGluZ3NDb21iaW5h
dGlvbnMoYXN0KQorICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IFtdCisgIAorICBkZWYgc2V0dGlu
Z3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBtYXBTb0ZhciwgcmVtYWluaW5nKQor
ICAgIGlmIHJlbWFpbmluZy5lbXB0eT8KKyAgICAgIHNldHRpbmdzQ29tYmluYXRpb25zIDw8IG1h
cFNvRmFyCisgICAgICByZXR1cm4KKyAgICBlbmQKKyAgICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zh
ci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IHRydWUKKyAgICBzZXR0aW5nc0NvbWJp
bmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAg
ICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9
IGZhbHNlCisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdN
YXAsIHJlbWFpbmluZ1sxLi4tMV0pCisgIGVuZAorICAKKyAgc2V0dGluZ3NDb21iaW5hdG9yKHNl
dHRpbmdzQ29tYmluYXRpb25zLCB7fSwgKGFzdC5maWx0ZXIoU2V0dGluZykudW5pcS5jb2xsZWN0
e3x2fCB2Lm5hbWV9ICsgWyJYODYiLCAiQVJNdjciXSkudW5pcSkKKyAgCisgIHNldHRpbmdzQ29t
YmluYXRpb25zCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9y
U2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2Vu
ZCB8IC4uLiB9ICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRGV0ZXJtaW5l
cyBpZiB0aGUgc2V0dGluZ3MgY29tYmluYXRpb24gaXMgdmFsaWQsIGFuZCBpZiBzbywgY2FsbHMg
ICAgIworIyB0aGUgYmxvY2sgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91IG5lZWQgdG8gZ2VuZXJh
dGUgY29kZS4gICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
CitkZWYgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KQorICAjIENoZWNrIHdoaWNo
IGFyY2hpdGVjdHVyZXMgdGhpcyBjb21iaW5hdG9yIGNsYWltcyB0byBzdXBwb3J0LgorICBudW1D
bGFpbWVkQmFja2VuZHMgPSAwCisgIHNlbGVjdGVkQmFja2VuZCA9IG5pbAorICBCQUNLRU5EUy5l
YWNoIHsKKyAgICB8IGJhY2tlbmQgfAorICAgIGlzU3VwcG9ydGVkID0gY29uY3JldGVTZXR0aW5n
c1tiYWNrZW5kXQorICAgIHJhaXNlIHVubGVzcyBpc1N1cHBvcnRlZCAhPSBuaWwKKyAgICBudW1D
bGFpbWVkQmFja2VuZHMgKz0gaWYgaXNTdXBwb3J0ZWQgdGhlbiAxIGVsc2UgMCBlbmQKKyAgICBp
ZiBpc1N1cHBvcnRlZAorICAgICAgc2VsZWN0ZWRCYWNrZW5kID0gYmFja2VuZAorICAgIGVuZAor
ICB9CisgIAorICByZXR1cm4gaWYgbnVtQ2xhaW1lZEJhY2tlbmRzID4gMQorICAKKyAgIyBSZXNv
bHZlIHRoZSBBU1QgZG93biB0byBhIGxvdy1sZXZlbCBmb3JtIChubyBtYWNyb3Mgb3IgY29uZGl0
aW9uYWxzKS4KKyAgbG93TGV2ZWxBU1QgPSBhc3QucmVzb2x2ZVNldHRpbmdzKGNvbmNyZXRlU2V0
dGluZ3MpCisgIAorICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgc2VsZWN0
ZWRCYWNrZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9y
RWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4
IHwgLi4uIH0gICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yRWFjaFZh
bGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QsIHNldHRpbmdzQ29tYmluYXRpb25zKSB7ICAgICAg
ICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4u
IH0gICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRXhlY3V0ZXMgdGhlIGdp
dmVuIGJsb2NrIGZvciBlYWNoIHZhbGlkIHNldHRpbmdzIGNvbWJpbmF0aW9uIGluIHRoZSAgIwor
IyBzZXR0aW5ncyBtYXAuIFRoZSBhc3QgcGFzc2VkIGludG8gdGhlIGJsb2NrIGlzIHJlc29sdmVk
ICAgICAgICAgICAgICAjCisjIChhc3QucmVzb2x2ZSkgYWdhaW5zdCB0aGUgc2V0dGluZ3MuICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUg
Zmlyc3QgZm9ybSB3aWxsIGNhbGwgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgZm9y
IHlvdS4gICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZm9yRWFj
aFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QsICpvcHRpb25hbFNldHRpbmdzQ29tYmluYXRp
b25zKQorICByYWlzZSBpZiBvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zLnNpemUgPiAxCisg
IAorICBpZiBvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zLmVtcHR5PworICAgIHNldHRpbmdz
Q29tYmluYXRpb25zID0gY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgZWxzZQor
ICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gb3B0aW9uYWxTZXR0aW5nc0NvbWJpYXRpb25zWzBd
CisgIGVuZAorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMuZWFjaF93aXRoX2luZGV4IHsKKyAg
ICB8IGNvbmNyZXRlU2V0dGluZ3MsIGluZGV4IHwKKyAgICBmb3JTZXR0aW5ncyhjb25jcmV0ZVNl
dHRpbmdzLCBhc3QpIHsKKyAgICAgIHwgY29uY3JldGVTZXR0aW5nc18sIGxvd0xldmVsQVNULCBi
YWNrZW5kIHwKKyAgICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNr
ZW5kLCBpbmRleAorICAgIH0KKyAgfQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBSZXR1cm5zIHRoZSBD
KysgY29kZSB1c2VkIHRvIHRlc3QgaWYgd2UgYXJlIGluIGEgY29uZmlndXJhdGlvbiB0aGF0ICAj
CisjIGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBjb25jcmV0ZSBzZXR0aW5ncy4gICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Rl
ZiBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgIiNpZiAiICsgY29uY3JldGVT
ZXR0aW5ncy50b19hLmNvbGxlY3R7CisgICAgfCBwYWlyIHwKKyAgICAoaWYgcGFpclsxXQorICAg
ICAgICIiCisgICAgIGVsc2UKKyAgICAgICAiISIKKyAgICAgZW5kKSArICJPRkZMSU5FX0FTTV8i
ICsgcGFpclswXQorICB9LmpvaW4oIiAmJiAiKQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIGlzQVNURXJyb25lb3VzKGFzdCkgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUZXN0cyB0
byBzZWUgaWYgdGhlIEFTVCBjbGFpbXMgdGhhdCB0aGVyZSBpcyBhbiBlcnJvciAtIGkuZS4gaWYg
dGhlICAjCisjIHVzZXIncyBjb2RlLCBhZnRlciBzZXR0aW5ncyByZXNvbHV0aW9uLCBoYXMgRXJy
b3Igbm9kZXMuICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisKK2RlZiBpc0FTVEVycm9uZW91cyhhc3QpCisgIG5vdCBhc3QuZmlsdGVyKEVycm9yKS5lbXB0
eT8KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBhc3NlcnRDb25m
aWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgRW1pdHMgYSBjaGVjayB0aGF0IGFzc2VydHMgdGhhdCB3
ZSdyZSB1c2luZyB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbi4gIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKworZGVmIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5n
cykKKyAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgcHV0cyAiI2Vs
c2UiCisgIHB1dHMgIiNlcnJvciBcIkNvbmZpZ3VyYXRpb24gbWlzbWF0Y2guXCIiCisgIHB1dHMg
IiNlbmRpZiIKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBlbWl0
Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpIHsgICAg
ICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCB8IC4uLiB9
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFbWl0cyBhbGwg
cmVsZXZhbnQgZ3VhcmRzIHRvIHNlZSBpZiB0aGUgY29uZmlndXJhdGlvbiBob2xkcyBhbmQgICAg
ICAjCisjIGNhbGxzIHRoZSBibG9jayBpZiB0aGUgY29uZmlndXJhdGlvbiBpcyBub3QgZXJyb25l
b3VzLiAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK
K2RlZiBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tl
bmQpCisgIHB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICBpZiBp
c0FTVEVycm9uZW91cyhhc3QpCisgICAgcHV0cyAiI2Vycm9yIFwiSW52YWxpZCBjb25maWd1cmF0
aW9uLlwiIgorICBlbHNpZiBub3QgV09SS0lOR19CQUNLRU5EUy5pbmNsdWRlPyBiYWNrZW5kCisg
ICAgcHV0cyAiI2Vycm9yIFwiVGhpcyBiYWNrZW5kIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LlwiIgor
ICBlbHNlCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kCisgIGVuZAor
ICAKKyAgcHV0cyAiI2VuZGlmIgorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3QpIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNr
ZW5kLCBpbmRleCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IEVtaXRzIGd1YXJkIGNvZGVzIGZvciBhbGwgdmFsaWQgY29uZmlndXJhdGlvbnMsIGFuZCBjYWxs
cyB0aGUgYmxvY2sgICMKKyMgZm9yIHRob3NlIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHZhbGlk
IGFuZCBub3QgZXJyb25lb3VzLiAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKworZGVmIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3QpCisgIGZvckVh
Y2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdz
LCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXggfAorICAgIHB1dHMgY3BwU2V0dGluZ3NUZXN0
KGNvbmNyZXRlU2V0dGluZ3MpCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxB
U1QsIGJhY2tlbmQsIGluZGV4CisgICAgcHV0cyAiI2VuZGlmIgorICB9CitlbmQKKworCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0u
cmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUyIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIG5vZGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBDb25zdHJ1Y3Qg
YSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgSWZUaGVuRWxzZSBub2RlcyBieSAgICAg
ICAjCisjIHN1YnN0aXR1dGluZyBjb25jcmV0ZSBib29sZWFuIHZhbHVlcyBmb3IgZWFjaCBTZXR0
aW5nLiAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK
K2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBtYXBDaGls
ZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUKKyAgZGVmIHJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlCisgIGRl
ZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFz
cyBTZXR0aW5nCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2V0dGluZ3Nb
QG5hbWVdLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQKKyAgZGVmIHJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1
ZSBhbmQgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBl
bmQKK2VuZAorCitjbGFzcyBPcgorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAg
IChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIG9yIEByaWdodC5yZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgTm90
CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKG5vdCBAY2hpbGQucmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIElm
VGhlbkVsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBpZiBAcHJlZGlj
YXRlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUKKyAgICAgIEB0aGVuQ2FzZS5yZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZWxzZQorICAgICAgQGVsc2VDYXNlLnJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UK
KyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBA
bGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpCisgICAgICBpZiBpdGVtLmlzX2E/IFNlcXVlbmNlCisgICAgICAgIG5l
d0xpc3QgKz0gaXRlbS5saXN0CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbQor
ICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQor
ICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLmRl
bWFjcm9pZnkobWFjcm9zKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIG5vZGUuc3Vic3RpdHV0ZShtYXBwaW5nKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBkZW1hY3JvaWZ5KCkg
Y29uc3RydWN0cyBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBNYWNybyAgICAgICAj
CisjIG5vZGVzLCB3aGlsZSBzdWJzdGl0dXRlKCkgcmVwbGFjZXMgVmFyaWFibGUgbm9kZXMgd2l0
aCB0aGUgZ2l2ZW4gICAgICMKKyMgbm9kZXMgaW4gdGhlIG1hcHBpbmcuICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAg
bWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5kZW1hY3JvaWZ5KG1h
Y3JvcykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBt
YXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobWFw
cGluZykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykK
KyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1
dGVMYWJlbHMobWFwcGluZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvCisgIGRl
ZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbXlNYXBwaW5nID0ge30KKyAgICBtYXBwaW5nLmVh
Y2hfcGFpciB7CisgICAgICB8IGtleSwgdmFsdWUgfAorICAgICAgdW5sZXNzIEB2YXJpYWJsZXMu
aW5jbHVkZT8ga2V5CisgICAgICAgIG15TWFwcGluZ1trZXldID0gdmFsdWUKKyAgICAgIGVuZAor
ICAgIH0KKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1
YnN0aXR1dGUobXlNYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUK
KyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBt
YXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAor
CitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAg
aWYgbWFwcGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNl
bGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHN1YnN0aXR1
dGUoY29uc3RhbnRzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIG15Q29uc3RhbnRzID0gY29uc3Rh
bnRzLmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0u
aXNfYT8gQ29uc3REZWNsCisgICAgICAgIG15Q29uc3RhbnRzW2l0ZW0udmFyaWFibGVdID0gaXRl
bS52YWx1ZS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZWxzZQorICAgICAgICBuZXdM
aXN0IDw8IGl0ZW0uc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgIGVuZAorICAgIH0KKyAg
ICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5kCisgIAorICBkZWYgcmVu
YW1lTGFiZWxzKGNvbW1lbnQpCisgICAgbWFwcGluZyA9IHt9CisgICAgCisgICAgQGxpc3QuZWFj
aCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBMb2NhbExhYmVsCisgICAg
ICAgIG1hcHBpbmdbaXRlbV0gPSBMb2NhbExhYmVsLnVuaXF1ZShpZiBjb21tZW50IHRoZW4gY29t
bWVudCArICJfIiBlbHNlICIiIGVuZCArIGl0ZW0uY2xlYW5OYW1lKQorICAgICAgZW5kCisgICAg
fQorICAgIAorICAgIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgZW5kCisgIAorICBkZWYg
ZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbXlNYWNyb3MgPSBtYWNyb3MuZHVwCisgICAgQGxpc3Qu
ZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAg
ICBteU1hY3Jvc1tpdGVtLm5hbWVdID0gaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIG5ld0xp
c3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0u
aXNfYT8gTWFjcm8KKyAgICAgICAgIyBJZ25vcmUuCisgICAgICBlbHNpZiBpdGVtLmlzX2E/IE1h
Y3JvQ2FsbAorICAgICAgICBtYXBwaW5nID0ge30KKyAgICAgICAgbXlNeU1hY3JvcyA9IG15TWFj
cm9zLmR1cAorICAgICAgICByYWlzZSAiQ291bGQgbm90IGZpbmQgbWFjcm8gI3tpdGVtLm5hbWV9
IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG15TWFjcm9zW2l0ZW0ubmFtZV0K
KyAgICAgICAgcmFpc2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxsIHRvICN7aXRl
bS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVtLm9wZXJhbmRz
LnNpemUgPT0gbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQorICAgICAgICBpdGVt
Lm9wZXJhbmRzLnNpemUudGltZXMgeworICAgICAgICAgIHwgaWR4IHwKKyAgICAgICAgICBpZiBp
dGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gVmFyaWFibGUgYW5kIG15TWFjcm9zW2l0ZW0ub3BlcmFu
ZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVd
LnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVd
CisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0u
bmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gTWFj
cm8KKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNb
aWR4XS5uYW1lXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgbWFwcGluZ1tteU1h
Y3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tp
ZHhdXSA9IG5pbAorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlh
Ymxlc1tpZHhdXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgIGVuZAorICAgICAgICB9
CisgICAgICAgIG5ld0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5LnN1YnN0aXR1dGUo
bWFwcGluZykuZGVtYWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMoaXRlbS5uYW1lKS5s
aXN0CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5kZW1hY3JvaWZ5KG15TWFj
cm9zKQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdM
aXN0KS5zdWJzdGl0dXRlKHt9KQorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBub2RlLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29uc3RydWN0
IGEgbmV3IEFTVCB0aGF0IGhhcyBvZmZzZXQgdmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMgICAg
ICAgIworIyBvZmZzZXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
CitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBt
YXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnJlc29sdmVPZmZzZXRz
KG9mZnNldHMsIHNpemVzKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0
CisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBvZmZzZXRzW3Nl
bGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIG9mZnNldHNbc2VsZl0pCisgICAg
ZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YKKyAg
ZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlmIHNpemVzW3NlbGZdCisg
ICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIHNpemVzW3NlbGZdKQorICAgIGVsc2UKKyAg
ICAgIHB1dHMgIkNvdWxkIG5vdCBmaW5kICN7c2VsZi5pbnNwZWN0fSBpbiAje3NpemVzLmtleXMu
aW5zcGVjdH0iCisgICAgICBwdXRzICJzaXplcyA9ICN7c2l6ZXMuaW5zcGVjdH0iCisgICAgICBz
ZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIG5vZGUuZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBSZXNvbHZlIGNvbnN0YW50
IHJlZmVyZW5jZXMgYW5kIGNvbXB1dGUgYXJpdGhtZXRpYyBleHByZXNzaW9ucy4gICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiBmb2xk
CisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5mb2xkCisg
ICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAg
QGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4g
c2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNz
IEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBs
ZWZ0LnZhbHVlICsgQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlh
dGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJp
Z2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisg
ICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlh
dGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlIC0gQHJpZ2h0LnZhbHVlKQorICBlbmQKK2Vu
ZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5m
b2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxl
ZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJ
bW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICogQHJp
Z2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBOZWdJbW1lZGlhdGUKKyAgZGVmIGZvbGQK
KyAgICBAY2hpbGQgPSBAY2hpbGQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAY2hpbGQu
aXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtQGNoaWxkLnZh
bHVlKQorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBu
b2RlLnJlc29sdmVBZnRlclNldHRpbmdzKG9mZnNldHMsIHNpemVzKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29tcGlsZSBhc3NlbWJseSBhZ2FpbnN0
IGEgc2V0IG9mIG9mZnNldHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZShvZmZz
ZXRzLCBzaXplcykKKyAgICBkZW1hY3JvaWZ5KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBz
aXplcykuZm9sZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3MyBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgc3VwcG9y
dHM4Qml0T25YODYKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0
MSIsICJhMSIsICJyMSIsICJ0MiIsICJ0MyIKKyAgICAgIHRydWUKKyAgICB3aGVuICJ0NCIsICJj
ZnIiCisgICAgICBmYWxzZQorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAor
ICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIs
ICJhMCIsICJyMCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAi
JWFsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWF4IgorICAgICAgd2hlbiA6aW50Cisg
ICAgICAgICIlZWF4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAg
d2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUK
KyAgICAgICAgIiVkbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVkeCIKKyAgICAgIHdo
ZW4gOmludAorICAgICAgICAiJWVkeCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAg
IGVuZAorICAgIHdoZW4gInQyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisg
ICAgICAgICIlY2wiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlY3giCisgICAgICB3aGVu
IDppbnQKKyAgICAgICAgIiVlY3giCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBl
bmQKKyAgICB3aGVuICJ0MyIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAg
ICAgICAiJWJsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWJ4IgorICAgICAgd2hlbiA6
aW50CisgICAgICAgICIlZWJ4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5k
CisgICAgd2hlbiAidDQiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAg
ICAgIiVzaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc2kiCisgICAgICB3aGVuIDpp
bnQKKyAgICAgICAgIiVlc2kiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQK
KyAgICB3aGVuICJjZnIiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAg
ICAgIiVkaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZGkiCisgICAgICB3aGVuIDpp
bnQKKyAgICAgICAgIiVlZGkiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQK
KyAgICB3aGVuICJzcCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAg
ICAiJXNwbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVzcCIKKyAgICAgIHdoZW4gOmlu
dAorICAgICAgICAiJWVzcCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAor
ICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJh
bmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNz
IEZQUmVnaXN0ZXJJRAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIHJhaXNlIHVubGVzcyBr
aW5kID09IDpkb3VibGUKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAiZmEwIiwgImZy
IgorICAgICAgIiV4bW0wIgorICAgIHdoZW4gImZ0MSIsICJmYTEiCisgICAgICAiJXhtbTEiCisg
ICAgd2hlbiAiZnQyIiwgImZhMiIKKyAgICAgICIleG1tMiIKKyAgICB3aGVuICJmdDMiLCAiZmEz
IgorICAgICAgIiV4bW0zIgorICAgIHdoZW4gImZ0NCIKKyAgICAgICIleG1tNCIKKyAgICB3aGVu
ICJmdDUiCisgICAgICAiJXhtbTUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAg
ZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQp
fSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQp
CisgICAgIiQje3ZhbHVlfSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAg
ICIje3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBkZWYgc3VwcG9ydHM4
Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQor
ICAgICIje29mZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9KSIKKyAgZW5kCisg
IGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAg
IHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0
LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0sICN7aW5kZXgueDg2T3BlcmFuZCg6aW50
KX0sICN7c2NhbGV9KSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAg
Iioje3g4Nm9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJl
c3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVm
IHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCisKKyAgZGVm
IHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje2FkZHJlc3MudmFsdWV9IgorICBlbmQKK2Vu
ZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2TGFiZWwKKyAgICBzYW5pdGl6ZUxh
YmVsTmFtZShuYW1lKQorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgeDg2
TGFiZWwKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2
TGFiZWwKKyAgICAiTF9vZmZsaW5lYXNtXyIrbmFtZVsxLi4tMV0KKyAgZW5kCisgIGRlZiB4ODZD
YWxsT3BlcmFuZChraW5kKQorICAgIHg4NkxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIEluc3Ry
dWN0aW9uCisgIGRlZiB4ODZPcGVyYW5kcygqa2luZHMpCisgICAgcmFpc2UgdW5sZXNzIGtpbmRz
LnNpemUgPT0gb3BlcmFuZHMuc2l6ZQorICAgIHJlc3VsdCA9IFtdCisgICAga2luZHMuc2l6ZS50
aW1lcyB7CisgICAgICB8IGlkeCB8CisgICAgICByZXN1bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZP
cGVyYW5kKGtpbmRzW2lkeF0pCisgICAgfQorICAgIHJlc3VsdC5qb2luKCIsICIpCisgIGVuZAor
CisgIGRlZiB4ODZTdWZmaXgoa2luZCkKKyAgICBjYXNlIGtpbmQKKyAgICB3aGVuIDpieXRlCisg
ICAgICAiYiIKKyAgICB3aGVuIDpoYWxmCisgICAgICAidyIKKyAgICB3aGVuIDppbnQKKyAgICAg
ICJsIgorICAgIHdoZW4gOmRvdWJsZQorICAgICAgInNkIgorICAgIGVsc2UKKyAgICAgIHJhaXNl
CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9w
Y29kZSwga2luZCwgbnVtT3BlcmFuZHMpCisgICAgaWYgbnVtT3BlcmFuZHMgPT0gMworICAgICAg
aWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bj
b2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9w
ZXJhbmQoa2luZCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAg
ICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2lu
ZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAg
ICAkYXNtLnB1dHMgIlx0bW92I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICRh
c20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAg
ICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgaGFuZGxlWDg2T3Aob3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJh
bmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxl
WDg2U2hpZnQob3Bjb2RlLCBraW5kKQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0
ZSBvciBvcGVyYW5kc1swXSA9PSBSZWdpc3RlcklELmZvck5hbWUobmlsLCAidDIiKQorICAgICAg
JGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1
dHMgIlx0eGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICAg
ICRhc20ucHV0cyAiXHQje29wY29kZX0gJWNsLCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2lu
ZCl9IgorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
aW50KX0sICVlY3giCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkRvdWJsZUJy
YW5jaChicmFuY2hPcGNvZGUsIG1vZGUpCisgICAgY2FzZSBtb2RlCisgICAgd2hlbiA6bm9ybWFs
CisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gOnJl
dmVyc2UKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgZWxz
ZQorICAgICAgcmFpc2UgbW9kZS5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7
YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYg
aGFuZGxlWDg2SW50Q29tcGFyZShvcGNvZGVTdWZmaXgsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNb
MF0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5k
c1sxXS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVT
dWZmaXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzaWYgb3BlcmFuZHNbMV0u
aXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1sxXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1sw
XS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZm
aXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRz
ICJcdGNtcCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9
LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBoYW5kbGVYODZJbnRCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4
NkludENvbXBhcmUoYnJhbmNoT3Bjb2RlWzEuLi0xXSwga2luZCkKKyAgICAkYXNtLnB1dHMgIlx0
I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRl
ZiBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kKQorICAgIGlmIG9wZXJhbmQuc3VwcG9y
dHM4Qml0T25YODYKKyAgICAgICRhc20ucHV0cyAiXHQje3NldE9wY29kZX0gI3tvcGVyYW5kLng4
Nk9wZXJhbmQoOmJ5dGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgI3tvcGVyYW5kLng4
Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UK
KyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVl
YXgiCisgICAgICAkYXNtLnB1dHMgIlx0I3tzZXRPcGNvZGV9ICVhbCIKKyAgICAgICRhc20ucHV0
cyAiXHRtb3Z6YmwgJWFsLCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFu
ZC54ODZPcGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFu
ZGxlWDg2SW50Q29tcGFyZVNldChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29t
cGFyZShzZXRPcGNvZGVbMy4uLTFdLCBraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUs
IG9wZXJhbmRzWzJdKQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAg
dmFsdWUgPSBvcGVyYW5kc1swXQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gMgor
ICAgICAgbWFzayA9IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLTEpCisgICAgd2hlbiAzCisg
ICAgICBtYXNrID0gb3BlcmFuZHNbMV0KKyAgICBlbHNlCisgICAgICByYWlzZSAiRXhwZWN0ZWQg
MiBvciAzIG9wZXJhbmRzLCBidXQgZ290ICN7b3BlcmFuZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2lu
U3RyaW5nfSIKKyAgICBlbmQKKyAgICAKKyAgICBpZiBtYXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQg
bWFzay52YWx1ZSA9PSAtMQorICAgICAgaWYgdmFsdWUuaXNfYT8gUmVnaXN0ZXJJRAorICAgICAg
ICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQo
a2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAk
YXNtLnB1dHMgIlx0Y21wI3t4ODZTdWZmaXgoa2luZCl9ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQo
a2luZCl9IgorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4
NlN1ZmZpeChraW5kKX0gI3ttYXNrLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJh
bmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZCcmFuY2hUZXN0
KGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgJGFzbS5w
dXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzLmxhc3QueDg2TGFiZWx9IgorICBlbmQK
KyAgCisgIGRlZiBoYW5kbGVYODZTZXRUZXN0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVY
ODZUZXN0KGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHMubGFzdCkK
KyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3BCcmFuY2gob3Bjb2RlLCBicmFuY2hPcGNvZGUs
IGtpbmQpCisgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVy
YW5kcy5zaXplIC0gMSkKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAg
IGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9
IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5k
CisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQueDg2TGFiZWx9
IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTdWJCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5k
KQorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gNCBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNb
Ml0KKyAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmlu
dCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIGhh
bmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKCJzdWIje3g4NlN1ZmZpeChraW5kKX0iLCBraW5kLCBv
cGVyYW5kcy5zaXplIC0gMSkKKyAgICBlbmQKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3
aGVuIDQKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAg
anVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNw
ZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJn
ZXQueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBsb3dlclg4NgorICAgICRhc20uY29tbWVu
dCBjb2RlT3JpZ2luU3RyaW5nCisgICAgY2FzZSBvcGNvZGUKKyAgICB3aGVuICJhZGRpIiwgImFk
ZHAiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IElt
bWVkaWF0ZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJ
RAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAg
ICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCisgICAgICAgICAgdW5sZXNzIG9wZXJhbmRz
WzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRzICJcdGxl
YWwgI3tvcGVyYW5kc1swXS52YWx1ZX0oI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSks
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZWxz
aWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisg
ICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAg
IHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20u
cHV0cyAiXHRsZWFsICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICAgIGVsc2UKKyAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVy
YW5kc1swXQorICAgICAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7eDg2T3BlcmFuZHMoOmludCwg
OmludCl9IgorICAgICAgICBlbmQKKyAgICAgIGVuZAorICAgIHdoZW4gImFuZGkiLCAiYW5kcCIK
KyAgICAgIGhhbmRsZVg4Nk9wKCJhbmRsIiwgOmludCkKKyAgICB3aGVuICJsc2hpZnRpIgorICAg
ICAgaGFuZGxlWDg2U2hpZnQoInNhbGwiLCA6aW50KQorICAgIHdoZW4gIm11bGkiCisgICAgICBp
ZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAg
ICAgICAkYXNtLnB1dHMgIlx0aW11bGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50LCA6aW50KX0i
CisgICAgICBlbHNlCisgICAgICAgICMgRklYTUU6IGNvdWxkIGRvIHNvbWUgcGVlcGhvbGUgaW4g
Y2FzZSB0aGUgbGVmdCBvcGVyYW5kIGlzIGltbWVkaWF0ZSBhbmQgaXQncworICAgICAgICAjIGEg
cG93ZXIgb2YgdHdvLgorICAgICAgICBoYW5kbGVYODZPcCgiaW11bGwiLCA6aW50KQorICAgICAg
ZW5kCisgICAgd2hlbiAibmVnaSIKKyAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7eDg2T3BlcmFu
ZHMoOmludCl9IgorICAgIHdoZW4gIm5vdGkiCisgICAgICAkYXNtLnB1dHMgIlx0bm90bCAje3g4
Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgaGFuZGxlWDg2
T3AoIm9ybCIsIDppbnQpCisgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0
KCJzYXJsIiwgOmludCkKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0
KCJzaHJsIiwgOmludCkKKyAgICB3aGVuICJzdWJpIiwgInN1YnAiCisgICAgICBpZiBvcGVyYW5k
cy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20u
cHV0cyAiXHRuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICRh
c20ucHV0cyAiXHRhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFu
ZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIGhhbmRsZVg4Nk9w
KCJzdWJsIiwgOmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gInhvcmkiLCAieG9ycCIKKyAgICAg
IGhhbmRsZVg4Nk9wKCJ4b3JsIiwgOmludCkKKyAgICB3aGVuICJsb2FkaSIsICJzdG9yZWkiLCAi
bG9hZHAiLCAic3RvcmVwIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZPcGVyYW5kcyg6
aW50LCA6aW50KX0iCisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJs
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgIHdoZW4gImxvYWRoIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnp3bCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICB3aGVuICJzdG9yZWIiCisgICAgICAkYXNtLnB1dHMgIlx0bW92YiAje3g4
Nk9wZXJhbmRzKDpieXRlLCA6Ynl0ZSl9IgorICAgIHdoZW4gImxvYWRkIiwgIm1vdmVkIiwgInN0
b3JlZCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpk
b3VibGUpfSIKKyAgICB3aGVuICJhZGRkIgorICAgICAgJGFzbS5wdXRzICJcdGFkZHNkICN7eDg2
T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImRpdmQiCisgICAgICAkYXNt
LnB1dHMgIlx0ZGl2c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hl
biAic3ViZCIKKyAgICAgICRhc20ucHV0cyAiXHRzdWJzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUs
IDpkb3VibGUpfSIKKyAgICB3aGVuICJtdWxkIgorICAgICAgJGFzbS5wdXRzICJcdG11bHNkICN7
eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInNxcnRkIgorICAgICAg
JGFzbS5wdXRzICJcdHNxcnRzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImNpMmQiCisgICAg
ICAkYXNtLnB1dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJiZGVxIgorICAg
ICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRlcSIpCisgICAgICAkYXNtLnB1
dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7TGFi
ZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS54ODZMYWJlbH0iCisgICAg
ICAkYXNtLnB1dHMgIlx0amUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgb3BlcmFu
ZHNbMl0pLng4NkxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgIHdo
ZW4gImJkbmVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqbmUiLCA6bm9ybWFsKQor
ICAgIHdoZW4gImJkZ3QiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphIiwgOm5vcm1h
bCkKKyAgICB3aGVuICJiZGd0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIs
IDpub3JtYWwpCisgICAgd2hlbiAiYmRsdCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgi
amEiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGx0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVC
cmFuY2goImphZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkZXF1biIKKyAgICAgIGhhbmRsZVg4
NkRvdWJsZUJyYW5jaCgiamUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbmVxdW4iCisgICAgICBp
c1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgIGlzRXF1YWwg
PSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlz
ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7TGFiZWxSZWZlcmVuY2Uu
bmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMg
Ilx0amUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNFcXVhbCkueDg2TGFiZWx9
IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAgICAkYXNtLnB1dHMgIlx0am1w
ICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAgaXNFcXVhbC5sb3dlcigiWDg2IikKKyAg
ICB3aGVuICJiZGd0dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOnJldmVy
c2UpCisgICAgd2hlbiAiYmRndGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpi
ZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHR1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJy
YW5jaCgiamIiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgaGFuZGxlWDg2
RG91YmxlQnJhbmNoKCJqYmUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJ0ZDJpIgorICAgICAgJGFz
bS5wdXRzICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGNtcGwg
JDB4ODAwMDAwMDAgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20u
cHV0cyAiXHRqZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJ0ZDJpIgorICAg
ICAgJGFzbS5wdXRzICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJjZDJpIgor
ICAgICAgJGFzbS5wdXRzICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRz
ICJcdHRlc3RsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tvcGVyYW5kc1syXS54
ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRq
cCAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqbmUgI3tvcGVy
YW5kc1syXS54ODZMYWJlbH0iCisgICAgd2hlbiAibW92ZHoiCisgICAgICAkYXNtLnB1dHMgIlx0
eG9ycGQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJwb3AiCisgICAgICAkYXNtLnB1dHMgIlx0
cG9wICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicHVzaCIKKyAg
ICAgICRhc20ucHV0cyAiXHRwdXNoICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6eGkycCIKKyAgICAgIGlmIEltbWVkaWF0ZS5uZXco
bmlsLCAwKSA9PSBvcGVyYW5kc1swXSBhbmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAor
ICAgICAgICAkYXNtLnB1dHMgIlx0eG9ybCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNb
MF0gIT0gb3BlcmFuZHNbMV0KKyAgICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZPcGVyYW5k
cyg6aW50LCA6aW50KX0iCisgICAgICBlbmQKKyAgICB3aGVuICJub3AiCisgICAgICAkYXNtLnB1
dHMgIlx0bm9wIgorICAgIHdoZW4gImJpZXEiLCAiYnBlcSIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamUiLCA6aW50KQorICAgIHdoZW4gImJpbmVxIiwgImJwbmVxIgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqbmUiLCA6aW50KQorICAgIHdoZW4gImJpYSIsICJicGEiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImphIiwgOmludCkKKyAgICB3aGVuICJiaWFlcSIsICJicGFlcSIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmludCkKKyAgICB3aGVuICJiaWIiLCAi
YnBiIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDppbnQpCisgICAgd2hlbiAiYmli
ZXEiLCAiYnBiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDppbnQpCisgICAg
d2hlbiAiYmlndCIsICJicGd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDppbnQp
CisgICAgd2hlbiAiYmlndGVxIiwgImJwZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgi
amdlIiwgOmludCkKKyAgICB3aGVuICJiaWx0IiwgImJwbHQiCisgICAgICBoYW5kbGVYODZJbnRC
cmFuY2goImpsIiwgOmludCkKKyAgICB3aGVuICJiaWx0ZXEiLCAiYnBsdGVxIgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqbGUiLCA6aW50KQorICAgIHdoZW4gImJiZXEiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImplIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJuZXEiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImpuZSIsIDpieXRlKQorICAgIHdoZW4gImJiYSIKKyAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiamEiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmFlcSIKKyAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiamFlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiIgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqYiIsIDpieXRlKQorICAgIHdoZW4gImJiYmVxIgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqYmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0IgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqZyIsIDpieXRlKQorICAgIHdoZW4gImJiZ3RlcSIKKyAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiamdlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdCIKKyAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiamwiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0ZXEiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImpsdGVxIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRpbyIsICJidHBvIgor
ICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6aW50KQorICAgIHdoZW4gImJ0aXMiLCAi
YnRwcyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmludCkKKyAgICB3aGVuICJi
dGl6IiwgImJ0cHoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDppbnQpCisgICAg
d2hlbiAiYnRpbnoiLCAiYnRwbnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6
aW50KQorICAgIHdoZW4gImJ0Ym8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpi
eXRlKQorICAgIHdoZW4gImJ0YnMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDpi
eXRlKQorICAgIHdoZW4gImJ0YnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDpi
eXRlKQorICAgIHdoZW4gImJ0Ym56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56Iiwg
OmJ5dGUpCisgICAgd2hlbiAiam1wIgorICAgICAgJGFzbS5wdXRzICJcdGptcCAje29wZXJhbmRz
WzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiYWRkaW8iLCAiYmFkZHBvIgor
ICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJh
ZGRpcyIsICJiYWRkcHMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqcyIsIDpp
bnQpCisgICAgd2hlbiAiYmFkZGl6IiwgImJhZGRweiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNo
KCJhZGRsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJiYWRkaW56IiwgImJhZGRwbnoiCisgICAg
ICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJzdWJp
byIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam8iLCA6aW50KQorICAgIHdoZW4gImJzdWJp
cyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianMiLCA6aW50KQorICAgIHdoZW4gImJzdWJp
eiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianoiLCA6aW50KQorICAgIHdoZW4gImJzdWJp
bnoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpueiIsIDppbnQpCisgICAgd2hlbiAiYm11
bGlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpvIiwgOmludCkKKyAgICB3
aGVuICJibXVsaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAianMiLCA6aW50
KQorICAgIHdoZW4gImJtdWxpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJq
eiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJp
bXVsbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJvcmlvIgorICAgICAgaGFuZGxlWDg2T3BC
cmFuY2goIm9ybCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXMiCisgICAgICBoYW5kbGVY
ODZPcEJyYW5jaCgib3JsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJib3JpeiIKKyAgICAgIGhh
bmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJvcmlueiIKKyAg
ICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJicmVh
ayIKKyAgICAgICRhc20ucHV0cyAiXHRpbnQgJDMiCisgICAgd2hlbiAiY2FsbCIKKyAgICAgICRh
c20ucHV0cyAiXHRjYWxsICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAg
IHdoZW4gInJldCIKKyAgICAgICRhc20ucHV0cyAiXHRyZXQiCisgICAgd2hlbiAiY2llcSIsICJj
cGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQpCisgICAgd2hl
biAiY2luZXEiLCAiY3BuZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRuZSIs
IDppbnQpCisgICAgd2hlbiAiY2lhIiwgImNwYSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVT
ZXQoInNldGEiLCA6aW50KQorICAgIHdoZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAgaGFuZGxl
WDg2SW50Q29tcGFyZVNldCgic2V0YWUiLCA6aW50KQorICAgIHdoZW4gImNpYiIsICJjcGIiCisg
ICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiIiwgOmludCkKKyAgICB3aGVuICJjaWJl
cSIsICJjcGJlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGJlIiwgOmludCkK
KyAgICB3aGVuICJjaWd0IiwgImNwZ3QiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJz
ZXRnIiwgOmludCkKKyAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAgaGFuZGxlWDg2
SW50Q29tcGFyZVNldCgic2V0Z2UiLCA6aW50KQorICAgIHdoZW4gImNpbHQiLCAiY3BsdCIKKyAg
ICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGwiLCA6aW50KQorICAgIHdoZW4gImNpbHRl
cSIsICJjcGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDppbnQp
CisgICAgd2hlbiAidGlvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQpCisg
ICAgd2hlbiAidGlzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDppbnQpCisgICAg
d2hlbiAidGl6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDppbnQpCisgICAgd2hl
biAidGlueiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmludCkKKyAgICB3aGVu
ICJ0Ym8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgd2hlbiAi
dGJzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAgIHdoZW4gInRi
eiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ym56
IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJwZWVr
IgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3tvcGVyYW5kc1swXS52YWx1ZSAqIDR9KCVlc3Ap
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInBva2UiCisgICAg
ICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29w
ZXJhbmRzWzFdLnZhbHVlICogNH0oJWVzcCkiCisgICAgd2hlbiAiY2RxaSIKKyAgICAgICRhc20u
cHV0cyAiXHRjZHEiCisgICAgd2hlbiAiaWRpdmkiCisgICAgICAkYXNtLnB1dHMgIlx0aWRpdmwg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJmaWkyZCIKKyAgICAg
ICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAi
XHRwc2xscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHBvciAleG1tNywgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRh
c20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMg
Ilx0cHNybHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAleG1tNywgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiQmFk
IG9wY29kZTogI3tvcGNvZGV9IgorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNw
ZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29kZVNwZWNp
YWxpemF0aW9uS2luZF9oCisjZGVmaW5lIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCituYW1l
c3BhY2UgSlNDIHsKKworZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGws
IENvZGVGb3JDb25zdHJ1Y3QgfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDEwNTMwOSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIENvbW1vblNsb3dQYXRoc19oCiAKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKIApAQCAtNDEs
NiArNDIsMzggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMg
ewogCitBTFdBWVNfSU5MSU5FIEV4ZWNTdGF0ZSogYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4
ZWMsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpCit7CisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUo
KSk7CisgICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOworICAgIENvZGVCbG9j
ayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVj
b2RlRm9yKGtpbmQpOworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMt
PmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CisKKyAgICAvLyBUaGlzIGVuc3VyZXMgZW5v
dWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBw
YXNzZWQgYnkgdGhlIGNhbGxlci4KKyAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhleGVjLT5y
ZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2Nr
LT5tX251bUNhbGxlZVJlZ2lzdGVycykpCisgICAgICAgIHJldHVybiAwOworCisgICAgQVNTRVJU
KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkpOworCisgICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1lIGFuZCBh
cmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5lZC4K
KyAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzOworICAgIFJlZ2lzdGVyKiBzcmMgPSBleGVjLT5yZWdpc3Rl
cnMoKTsKKyAgICBSZWdpc3RlciogZHN0ID0gZXhlYy0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKKwor
ICAgIGludCBpOworICAgIGludCBlbmQgPSAtRXhlY1N0YXRlOjpvZmZzZXRGb3IoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpOworICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQorICAg
ICAgICBkc3RbaV0gPSBzcmNbaV07CisKKyAgICBlbmQgLT0gZGVsdGE7CisgICAgZm9yICggOyBp
ID49IGVuZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOworCisgICAgRXhl
Y1N0YXRlKiBuZXdFeGVjID0gRXhlY1N0YXRlOjpjcmVhdGUoZHN0KTsKKyAgICBBU1NFUlQoKHZv
aWQqKW5ld0V4ZWMgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7CisgICAgcmV0dXJuIG5ld0V4ZWM7
Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBvcEluc3RhbmNlT2ZTbG93KEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3RvKQogewogICAg
IEFTU0VSVCghdmFsdWUuaXNDZWxsKCkgfHwgIWJhc2VWYWwuaXNDZWxsKCkgfHwgIXByb3RvLmlz
Q2VsbCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUg
IkRGR0RyaXZlci5oIgorI2luY2x1ZGUgIkV4ZWN1dGlvbkhhcm5lc3MuaCIKICNpbmNsdWRlICJK
SVQuaCIKICNpbmNsdWRlICJKSVREcml2ZXIuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKQEAgLTg0
LDcgKzg1LDcgQEAgSW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6OmludHJpbnNpYygpIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRpYyB2b2lkIGpldHRpc29uQ29kZUJsb2NrKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPFQ+JiBjb2RlQmxvY2spCiB7Ci0gICAgQVNTRVJUKGNv
ZGVCbG9jay0+Z2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NF
UlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKSk7CiAg
ICAgQVNTRVJUKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgT3duUHRyPFQ+IGNvZGVC
bG9ja1RvSmV0dGlzb24gPSBjb2RlQmxvY2sucmVsZWFzZSgpOwogICAgIGNvZGVCbG9jayA9IHN0
YXRpY19wb2ludGVyX2Nhc3Q8VD4oY29kZUJsb2NrVG9KZXR0aXNvbi0+cmVsZWFzZUFsdGVybmF0
aXZlKCkpOwpAQCAtMTY3LDkgKzE2OCwzMCBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNv
bXBpbGVPcHRpbWl6CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEV2YWxFeGVjdXRhYmxl
OjpqaXRDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENv
bXBpbGVJZkFwcHJvcHJpYXRlKGV4ZWMsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2Fs
bCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0KTsKK30KKworaW5saW5lIGNvbnN0IGNoYXIqIHNhbXBsaW5nRGVzY3JpcHRpb24oSklU
Q29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworICAgIHN3aXRjaCAoaml0VHlwZSkgeworICAgIGNh
c2UgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAgICAgcmV0dXJuICJJbnRlcnByZXRl
ciBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBjYXNlIEpJVENvZGU6OkJhc2VsaW5lSklUOgor
ICAgICAgICByZXR1cm4gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2Ug
SklUQ29kZTo6REZHSklUOgorICAgICAgICByZXR1cm4gIkRGRyBDb21waWxhdGlvbiAoVE9UQUwp
IjsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorfQorCiBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJ
bnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwg
SklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5n
UmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGls
YXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGlu
Z1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAg
ICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC0yMTAs
NyArMjMyLDcgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYQogICAg
IH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlSWZBcHByb3ByaWF0ZShl
eGVjLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlm
ICghcHJlcGFyZUZvckV4ZWN1dGlvbihleGVjLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZv
ckNhbGwsIGppdFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC0yOTUsOSAr
MzE3LDE1IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGkKICAgICBy
ZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBpbGUoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlh
dGUoZXhlYywgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpi
b3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQor
CiBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUq
IGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBq
aXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAi
REZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1Jl
Z2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJ
VCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC0zMzYsNyArMzY0LDcgQEAgSlNPYmpl
Y3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZQogICAgIH0KIAogI2lmIEVOQUJMRShK
SVQpCi0gICAgaWYgKCFqaXRDb21waWxlSWZBcHByb3ByaWF0ZShleGVjLCBtX3Byb2dyYW1Db2Rl
QmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4
ZWN1dGlvbihleGVjLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5
cGUpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC00MTIsNyArNDQwLDcgQEAgRnVu
Y3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6YgogICAgIHdoaWxlIChyZXN1bHQt
PmFsdGVybmF0aXZlKCkpCiAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29k
ZUJsb2NrKj4ocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKTsKICAgICBBU1NFUlQocmVzdWx0KTsKLSAg
ICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwor
ICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkp
OwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQzOCw2ICs0NjYsMTggQEAgSlNPYmplY3Qq
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZU9wdAogICAgIHJldHVybiBlcnJvcjsKIH0KIAor
dm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDYWxsKEV4ZWNTdGF0ZSogZXhl
YykKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUo
ZXhlYywgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JD
YWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQo
KSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgRnVuY3Rp
b25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYywg
bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2Rl
Rm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRv
bVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEZ1
bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja1dpdGhCeXRlY29k
ZUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgRnVuY3Rpb25Db2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwpAQCAtNDgyLDcgKzUy
Miw3IEBAIFBhc3NPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+IEZ1bmN0aW9uRXgKIAogSlNPYmpl
Y3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbChFeGVjU3RhdGUq
IGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBq
aXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAi
REZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1Jl
Z2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJ
VCkKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC01MDQsNyArNTQ0LDcgQEAgSlNPYmplY3Qq
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2Nv
ZGVCbG9ja0ZvckNhbGwtPnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQot
ICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLCBtX2NvZGVCbG9j
a0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVj
aywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JF
eGVjdXRpb24oZXhlYywgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2pp
dENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENvZGVG
b3JDYWxsKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNTI0LDcgKzU2NCw3IEBA
IEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKIAogSlNPYmplY3QqIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKEV4ZWNTdGF0ZSog
ZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGpp
dFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBK
SVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJE
RkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVn
aW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklU
KQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTU0Niw3ICs1ODYsNyBAQCBKU09iamVj
dCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAgICAgbV9zeW1ib2xUYWJsZSA9IG1f
Y29kZUJsb2NrRm9yQ29uc3RydWN0LT5zaGFyZWRTeW1ib2xUYWJsZSgpOwogCiAjaWYgRU5BQkxF
KEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYywgbV9j
b2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9y
Q29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUpKQorICAgIGlm
ICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMsIG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0
eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9yQ29uc3RydWN0KSkKICAgICAg
ICAgcmV0dXJuIDA7CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBA
CiAjZGVmaW5lIEV4ZWN1dGFibGVfaAogCiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIKKyNpbmNsdWRl
ICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTM5LDEyICs0MCwx
MiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1Z2dlcjsKICAgICBjbGFzcyBFdmFs
Q29kZUJsb2NrOwogICAgIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNz
IFNjb3BlQ2hhaW5Ob2RlOwogCiAgICAgc3RydWN0IEV4Y2VwdGlvbkluZm87CiAgICAgCi0gICAg
ZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1
Y3QgfTsKICAgICBlbnVtIENvbXBpbGF0aW9uS2luZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9wdGlt
aXppbmdDb21waWxhdGlvbiB9OwogCiAgICAgaW5saW5lIGJvb2wgaXNDYWxsKENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKQEAgLTMxOSw2ICszMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB9OwogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJs
ZSB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVi
bGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtMzM4LDYg
KzM0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAg
ICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAg
dm9pZCBqaXRDb21waWxlKEV4ZWNTdGF0ZSopOwogI2VuZGlmCiAKICAgICAgICAgRXZhbENvZGVC
bG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAtMzg0LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIH07CiAKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwog
CkBAIC00MTEsNiArNDE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJM
RShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYp
OworICAgICAgICB2b2lkIGppdENvbXBpbGUoRXhlY1N0YXRlKik7CiAjZW5kaWYKIAogICAgICAg
ICBQcm9ncmFtQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC00NTMsNiArNDU4LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAg
ICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNTA4LDYgKzUxNCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpl
dHRpc29uT3B0aW1pemVkQ29kZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQg
aml0Q29tcGlsZUZvckNhbGwoRXhlY1N0YXRlKik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlz
R2VuZXJhdGVkRm9yQ2FsbCgpIGNvbnN0CkBAIC01MzUsNiArNTQyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRp
bWl6ZWRDb2RlRm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENv
bXBpbGVGb3JDb25zdHJ1Y3QoRXhlY1N0YXRlKik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlz
R2VuZXJhdGVkRm9yQ29uc3RydWN0KCkgY29uc3QKQEAgLTU4Miw2ICs1OTAsMTYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3Ry
dWN0KGdsb2JhbERhdGEpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICB2b2lkIGppdENvbXBpbGVGb3IoRXhlY1N0YXRlKiBleGVjLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JD
YWxsKSB7CisgICAgICAgICAgICAgICAgaml0Q29tcGlsZUZvckNhbGwoZXhlYyk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKGtpbmQg
PT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgICAgICBqaXRDb21waWxlRm9yQ29uc3RydWN0
KGV4ZWMpOworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNHZW5l
cmF0ZWRGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIEV4ZWN1dGlvbkhhcm5lc3NfaAorI2RlZmluZSBFeGVj
dXRpb25IYXJuZXNzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxF
KEpJVCkKKworI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2lu
dHMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5
cGU+CitpbmxpbmUgYm9vbCBwcmVwYXJlRm9yRXhlY3V0aW9uKEV4ZWNTdGF0ZSogZXhlYywgT3du
UHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENvZGU6
OkpJVFR5cGUgaml0VHlwZSkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6
OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUg
bG93IGxldmVsIGludGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RW50cnlwb2ludChleGVj
LT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CisgICAgICAgIGNvZGVC
bG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0
dXJuIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGV4ZWMsIGNvZGVCbG9jaywgaml0Q29kZSwgaml0
VHlwZSk7Cit9CisKK2lubGluZSBib29sIHByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihFeGVj
U3RhdGUqIGV4ZWMsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29k
ZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ss
IFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlw
ZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAg
ICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3Rh
cnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRG
dW5jdGlvbkVudHJ5cG9pbnQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBraW5kLCBqaXRDb2RlLCBqaXRD
b2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29k
ZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oa2luZCk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQor
ICAgIHJldHVybiBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMsIGNvZGVCbG9j
aywgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBzeW1ib2xUYWJsZSwgaml0VHlwZSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworI2Vu
ZGlmIC8vIEV4ZWN1dGlvbkhhcm5lc3NfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEy
NCw3ICsxMjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBPd25BcnJheVB0cjxXcml0
ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5ID0gYWRvcHRBcnJheVB0cihuZXcgV3Jp
dGVCYXJyaWVyPFVua25vd24+W3JlZ2lzdGVyQXJyYXlTaXplXSk7CiAgICAgICAgIFdyaXRlQmFy
cmllcjxVbmtub3duPiogcmVnaXN0ZXJzID0gcmVnaXN0ZXJBcnJheS5nZXQoKSArIHJlZ2lzdGVy
T2Zmc2V0OwotCisgICAgICAgIAogICAgICAgICAvLyBDb3B5IGFsbCBhcmd1bWVudHMgdGhhdCBj
YW4gYmUgY2FwdHVyZWQgYnkgbmFtZSBvciBieSB0aGUgYXJndW1lbnRzIG9iamVjdC4KICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX251bUNhcHR1cmVkQXJnczsgKytpKSB7CiAgICAgICAg
ICAgICBpbnQgaW5kZXggPSBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KGkpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24gMTA1MzA5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTQXJyYXk7Cisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgc3RydWN0IFNwYXJzZUFycmF5
RW50cnkgOiBwdWJsaWMgV3JpdGVCYXJyaWVyPFVua25vd24+IHsKICAgICAgICAgdHlwZWRlZiBX
cml0ZUJhcnJpZXI8VW5rbm93bj4gQmFzZTsKQEAgLTEyNCw2ICsxMjUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgSlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFdhbGtlcjsKIAogICAgIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxMDUzMDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSAr
MzYsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0g
ICAgY2xhc3MgU3RydWN0dXJlOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7
CisgICAgY2xhc3MgU3RydWN0dXJlOwogCiAgICAgZW51bSBFbnVtZXJhdGlvbk1vZGUgewogICAg
ICAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLApAQCAtMTY1LDYgKzE2Niw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
SlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlw
dG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5m
bzsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CiAgICAgfTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlz
aW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBKU0FjdGl2YXRpb247CiAgICAgY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAg
IGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgU291cmNlQ29kZTsKICAgICBuYW1l
c3BhY2UgREZHIHsKQEAgLTE0MCw2ICsxNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAg
cHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAg
ICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25J
bmxpbmUoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBhcmd1bWVudHNHZXR0ZXIo
RXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMDUz
MDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDggQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERh
dGEoR2xvYmFsRGF0YVR5cAogICAgICwga2V5d29yZHMoYWRvcHRQdHIobmV3IEtleXdvcmRzKHRo
aXMpKSkKICAgICAsIGludGVycHJldGVyKDApCiAgICAgLCBoZWFwKHRoaXMsIGhlYXBTaXplKQor
ICAgICwganNBcnJheUNsYXNzSW5mbygmSlNBcnJheTo6c19pbmZvKQorICAgICwganNGaW5hbE9i
amVjdENsYXNzSW5mbygmSlNGaW5hbE9iamVjdDo6c19pbmZvKQogI2lmIEVOQUJMRShERkdfSklU
KQogICAgICwgc2l6ZU9mTGFzdFNjcmF0Y2hCdWZmZXIoMCkKICNlbmRpZgpAQCAtMjE4LDcgKzIy
MCw3IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICBqaXRT
dHVicyA9IGFkb3B0UHRyKG5ldyBKSVRUaHVua3ModGhpcykpOwogI2VuZGlmCiAKLSAgICBpbnRl
cnByZXRlci0+aW5pdGlhbGl6ZSh0aGlzLT5jYW5Vc2VKSVQoKSk7CisgICAgaW50ZXJwcmV0ZXIt
PmluaXRpYWxpemUoJmxsaW50RGF0YSwgdGhpcy0+Y2FuVXNlSklUKCkpOwogCiAgICAgaGVhcC5u
b3RpZnlJc1NhZmVUb0NvbGxlY3QoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lvbiAxMDUzMDkpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzAs
MTUgKzMwLDE2IEBACiAjZGVmaW5lIEpTR2xvYmFsRGF0YV9oCiAKICNpbmNsdWRlICJDYWNoZWRU
cmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVk
ZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgi
CiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIlN0cm9uZy5oIgorI2luY2x1ZGUgIkludHJp
bnNpYy5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2lu
Y2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk51bWVyaWNTdHJpbmdzLmgiCiAjaW5jbHVk
ZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVGVybWlu
YXRvci5oIgogI2luY2x1ZGUgIlRpbWVvdXRDaGVja2VyLmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRv
bS5oIgpAQCAtNjUsNiArNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2Jh
bE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBLZXl3b3JkczsKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsK
ICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAgICBjbGFzcyBSZWdFeHBDYWNoZTsKQEAgLTI0OCw2
ICsyNTAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEhlYXAgaGVhcDsKIAogICAgICAg
ICBKU1ZhbHVlIGV4Y2VwdGlvbjsKKworICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpz
QXJyYXlDbGFzc0luZm87CisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QganNGaW5hbE9i
amVjdENsYXNzSW5mbzsKKworICAgICAgICBMTEludDo6RGF0YSBsbGludERhdGE7CisKICNpZiBF
TkFCTEUoSklUKQogICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIGV4Y2VwdGlvbkxvY2F0aW9uOwog
ICAgICAgICBKU1ZhbHVlIGhvc3RDYWxsUmV0dXJuVmFsdWU7CkBAIC0zNTMsNiArMzYxLDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAjdW5kZWYgcmVnaXN0ZXJUeXBlZEFycmF5RnVuY3Rpb24KIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgICAgIAogICAgICAgICBKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNr
VHlwZSwgSGVhcFNpemUpOwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxEYXRhKiYgc2hhcmVkSW5z
dGFuY2VJbnRlcm5hbCgpOwogICAgICAgICB2b2lkIGNyZWF0ZU5hdGl2ZVRodW5rKCk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJl
dmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgR2V0dGVyU2V0dGVyOwog
ICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBjbGFzcyBQcm9ncmFt
Q29kZUJsb2NrOwogICAgIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwpAQCAtMzM1LDYgKzMzNiw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZFN0
YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiwgaW50IGNvdW50KTsKIAogICAgIHByaXZh
dGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAg
IAogICAgICAgICAvLyBGSVhNRTogRm9sZCByZXNldCBpbnRvIGluaXQuCiAgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgaW5pdChKU09iamVjdCogdGhpc1ZhbHVlKTsKICAgICAgICAgdm9p
ZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgR2V0dGVyU2V0dGVyOwogICAgIGNsYXNzIEhhc2hF
bnRyeTsKICAgICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uOworICAgIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRCbG9jazsKICAgICBjbGFzcyBQcm9wZXJ0eURl
c2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CkBAIC0yNzEsNiArMjcyLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVj
dHVyZSosIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKTsKIAogICAgIHByaXZhdGU6Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAg
ICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIgYXNrIGFueSBvZiB0aGVzZSBxdWVzdGlvbnMgb24g
c29tZXRoaW5nIGFscmVhZHkga25vd24gdG8gYmUgYSBKU09iamVjdC4KICAgICAgICAgdXNpbmcg
SlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcjsKICAgICAgICAgdXNpbmcgSlNDZWxsOjppc0dldHRl
clNldHRlcjsKQEAgLTM4Myw2ICszODYsOCBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVj
dF9pbmxpbmVTdG9yCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAg
ICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgICAgICAKICAgICAgICAgZXhwbGljaXQgSlNGaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICAgICAgOiBKU09iamVjdChn
bG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5lU3RvcmFnZSkKICAgICAgICAgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICsz
OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFz
cyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFz
cyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7CkBAIC05Niw2ICs5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9
CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworICAgICAgICAKICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUq
LCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51
bUNhY2hlYWJsZVNsb3QpOwogCiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2Fj
aGVkU3RydWN0dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5oCShyZXZpc2lvbiAxMDUzMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEpTU3RyaW5nOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIAogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSopOwogICAgIEpT
U3RyaW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSopOwpAQCAtMjQxLDYgKzI0Miw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCByZXNvbHZlUm9wZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZl
Um9wZVNsb3dDYXNlOChMQ2hhciopIGNvbnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xv
d0Nhc2UoVUNoYXIqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwog
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMTsgLy8g
V2ViQ29yZSB1c2VzIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgdG8gbWFrZSBkb2N1bWVudC5hbGwg
dW5kZXRlY3RhYmxlLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbXBsZW1lbnRzSGFzSW5z
dGFuY2UgPSAxIDw8IDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE92ZXJyaWRlc0hhc0lu
c3RhbmNlID0gMSA8PCAyOwpAQCAtODcsNiArODksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBm
bGFnKSBjb25zdCB7IEFTU0VSVChmbGFnIDw9ICgxIDw8IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBm
bGFnOyB9CiAgICAgICAgIGJvb2wgaXNTZXRPbkZsYWdzMih1bnNpZ25lZCBmbGFnKSBjb25zdCB7
IEFTU0VSVChmbGFnID49ICgxIDw8IDgpKTsgcmV0dXJuIG1fZmxhZ3MyICYgKGZsYWcgPj4gOCk7
IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJl
dmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsMTAgKzExNiw5IEBAIEpTT2JqZWN0KiBKU1ZhbHVl
OjpzeW50aGVzaXplUHJvdG90eXBlKEUKICAgICByZXR1cm4gSlNOb3RBbk9iamVjdDo6Y3JlYXRl
KGV4ZWMpOwogfQogCi0jaWZuZGVmIE5ERUJVRwogY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24o
KQogewotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZSA9IDY0OworICAgIHN0YXRpYyBjb25z
dCBzaXplX3Qgc2l6ZSA9IDEyODsKICAgICBzdGF0aWMgY2hhciBkZXNjcmlwdGlvbltzaXplXTsK
IAogICAgIGlmICghKnRoaXMpCkBAIC0xMjgsMTQgKzEyNywxNCBAQCBjaGFyKiBKU1ZhbHVlOjpk
ZXNjcmlwdGlvbigpCiAgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiSW50MzI6
ICVkIiwgYXNJbnQzMigpKTsKICAgICBlbHNlIGlmIChpc0RvdWJsZSgpKSB7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVs
ZiwgJWx4IiwgYXNEb3VibGUoKSwgcmVpbnRlcnByZXREb3VibGVUb0ludHB0cihhc0RvdWJsZSgp
KSk7CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbHgsICVs
ZiIsIHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIoYXNEb3VibGUoKSksIGFzRG91YmxlKCkpOwog
I2Vsc2UKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgZG91YmxlIGFzRG91YmxlOwogICAg
ICAgICAgICAgdWludDMyX3QgYXNUd29JbnQzMnNbMl07CiAgICAgICAgIH0gdTsKICAgICAgICAg
dS5hc0RvdWJsZSA9IGFzRG91YmxlKCk7Ci0gICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBz
aXplLCAiRG91YmxlOiAlbGYsICUwOHg6JTA4eCIsIGFzRG91YmxlKCksIHUuYXNUd29JbnQzMnNb
MV0sIHUuYXNUd29JbnQzMnNbMF0pOworICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6
ZSwgIkRvdWJsZTogJTA4eDolMDh4LCAlbGYiLCB1LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdvSW50
MzJzWzBdLCBhc0RvdWJsZSgpKTsKICNlbmRpZgogICAgIH0gZWxzZSBpZiAoaXNDZWxsKCkpCiAg
ICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiQ2VsbDogJXAiLCBhc0NlbGwoKSk7
CkBAIC0xNTIsNyArMTUxLDYgQEAgY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogCiAgICAg
cmV0dXJuIGRlc2NyaXB0aW9uOwogfQotI2VuZGlmCiAKIC8vIFRoaXMgaW4gdGhlIFRvSW50MzIg
b3BlcmF0aW9uIGlzIGRlZmluZWQgaW4gc2VjdGlvbiA5LjUgb2YgdGhlIEVDTUEtMjYyIHNwZWMu
CiAvLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgaWRlbnRpY2FsIHRvIFRvVUludDMyIG90
aGVyIHRoYW4gdG8gaW50ZXJwcmV0YXRpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhbHVlLmgJKHJldmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMzLDkgKzIzMyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBKU0NlbGwqIGFzQ2VsbCgpIGNvbnN0OwogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRDYWxsZWUoKTsKIAotI2lmbmRlZiBOREVCVUcK
ICAgICAgICAgY2hhciogZGVzY3JpcHRpb24oKTsKLSNlbmRpZgogCiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpTVmFsdWUoV3JpdGVCYXJyaWVyQmFzZTxUPik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVj
dC5oCShyZXZpc2lvbiAxMDUzMDkpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCwxMiBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBj
bGFzcyBSZWdpc3RlcjsKIAogICAgIGNsYXNzIEpTVmFyaWFibGVPYmplY3QgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHR5
cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1Miwx
MCBAQCB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpCiAKIHVuc2lnbmVk
IG1heGltdW1JbmxpbmluZ0RlcHRoOwogCitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckpJVEFmdGVyV2FybVVwOworaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklU
QW55dGltZVNvb247CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisK
IGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGlu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7CiBp
bnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwpA
QCAtMTM3LDYgKzE0MSwxMCBAQCB2b2lkIGluaXRpYWxpemVPcHRpb25zKCkKICAgICAKICAgICBT
RVQobWF4aW11bUlubGluaW5nRGVwdGgsIDUpOwogCisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvckpJVEFmdGVyV2FybVVwLCAgICAgLTEwMCk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWluKCkpOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uLCAgICAg
ICAgICAgIC0xMDApOworCiAgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXpl
QWZ0ZXJXYXJtVXAsICAgICAtMTAwMCk7CiAgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ck9wdGltaXplQWZ0ZXJMb25nV2FybVVwLCAtNTAwMCk7CiAgICAgU0VUKGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGlu
dDMyX3Q+OjptaW4oKSk7CkBAIC0xODUsNiArMTkzLDggQEAgdm9pZCBpbml0aWFsaXplT3B0aW9u
cygpCiAgICAgaWYgKGNwdXNUb1VzZSA8IDEpCiAgICAgICAgIGNwdXNUb1VzZSA9IDE7CiAgICAg
CisgICAgY3B1c1RvVXNlID0gMTsKKyAgICAKICAgICBTRVQobnVtYmVyT2ZHQ01hcmtlcnMsIGNw
dXNUb1VzZSk7CiAKICAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGlt
aXplQW55dGltZVNvb24gPD0gZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxv
bmdXYXJtVXApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAko
cmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMCBAQCBleHRlcm4gdW5zaWduZWQgbWF4
aW11bUZ1bmN0aW9uRm9yQ29uc3RyCiAKIGV4dGVybiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdE
ZXB0aDsgLy8gRGVwdGggb2YgaW5saW5lIHN0YWNrLCBzbyAxID0gbm8gaW5saW5pbmcsIDIgPSBv
bmUgbGV2ZWwsIGV0Yy4KIAorZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
SklUQWZ0ZXJXYXJtVXA7CitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JE
b250SklUQW55dGltZVNvb247CitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVG
b3JKSVRTb29uOworCiBleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZUFmdGVyV2FybVVwOwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
T3B0aW1pemVBZnRlckxvbmdXYXJtVXA7CiBleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVy
VmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHJldmlzaW9uIDEwNTMwOSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NiArMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5JdGVyYXRvcjsKICAgICBj
bGFzcyBTbG90VmlzaXRvcjsKICAgICAKQEAgLTkxLDYgKzkyLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAK
ICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbjsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDYgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CiAgICAgY2xhc3MgUHJvcGVy
dHlOYW1lQXJyYXlEYXRhOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOwpAQCAtMTk2LDYgKzE5
Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25z
dCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJv
dG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyopOwogICAgICAgICBTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBj
b25zdCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMTA1MzA5KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiAr
MzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbiA6
IHB1YmxpYyBKU0NlbGwgewpAQCAtNzQsNiArNzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZUNoYWluKEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAg
ICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiA+IG1fdmVjdG9yOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTA1MzA5KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC05
MTgsNiArOTE4LDEyIEBACiAjZGVmaW5lIEVOQUJMRV9KSVQgMQogI2VuZGlmCiAKKy8qIE9uIHNv
bWUgb2YgdGhlIHBsYXRmb3JtcyB3aGVyZSB3ZSBoYXZlIGEgSklULCB3ZSB3YW50IHRvIGFsc28g
aGF2ZSB0aGUgCisgICBsb3ctbGV2ZWwgaW50ZXJwcmV0ZXIuICovCisjaWYgRU5BQkxFKEpJVCkg
JiYgUExBVEZPUk0oTUFDKSAmJiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBFTkFCTEVfTExJ
TlQgMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfREZHX0pJVCkgJiYgRU5BQkxFKEpJ
VCkKIC8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBYODYgYW5kIFg4Nl82NC4gIE9ubHkgdGVzdGVk
IG9uIE1hYyBhbmQgR05VL0xpbnV4LiAqLwogI2lmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSkg
JiYgKFBMQVRGT1JNKE1BQykgfHwgT1MoTElOVVgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAxMDUzMDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw2ICs0Myw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZTdHJpbmcgKiBDRlN0cmkKIC8v
IExhbmRpbmcgdGhlIGZpbGUgbW92ZXMgaW4gb25lIHBhdGNoLCB3aWxsIGZvbGxvdyBvbiB3aXRo
IHBhdGNoZXMgdG8gY2hhbmdlIHRoZSBuYW1lc3BhY2VzLgogbmFtZXNwYWNlIEpTQyB7CiBzdHJ1
Y3QgSWRlbnRpZmllckNTdHJpbmdUcmFuc2xhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJZGVudGlmaWVyQ2hhckJ1ZmZlclRy
YW5zbGF0b3I7CiBzdHJ1Y3QgSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyVHJhbnNsYXRvcjsKIH0K
QEAgLTcwLDcgKzcxLDggQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgZnJpZW5kIHN0cnVjdCBX
VEY6Okhhc2hBbmRVVEY4Q2hhcmFjdGVyc1RyYW5zbGF0b3I7CiAgICAgZnJpZW5kIHN0cnVjdCBX
VEY6OlVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKICAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5n
SW1wbDsKLQorICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAg
ICAKIHByaXZhdGU6CiAgICAgZW51bSBCdWZmZXJPd25lcnNoaXAgewogICAgICAgICBCdWZmZXJJ
bnRlcm5hbCwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123066</attachid>
            <date>2012-01-18 21:15:55 -0800</date>
            <delta_ts>2012-01-19 01:16:31 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_33.diff</filename>
            <type>text/plain</type>
            <size>410493</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1Mzc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDI1MSBA
QAotMjAxMi0wMS0xOCAgUm9sYW5kIFRha2FjcyAgPHRha2Fjcy5yb2xhbmRAc3R1ZC51LXN6ZWdl
ZC5odT4KKzIwMTItMDEtMTggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAg
ICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIFdPUksgSU4gUFJPR1JFU1MuICBJdCBhcHBlYXJzIHRvIHdvcmsgYnV0IG5l
ZWRzIG1vcmUgdGVzdGluZy4KKyAgICAgICAgCisgICAgICAgIEltcGxlbWVudGVkIGFuIGludGVy
cHJldGVyIHRoYXQgdXNlcyB0aGUgSklUJ3MgY2FsbGluZyBjb252ZW50aW9uLiBUaGlzCisgICAg
ICAgIGludGVycHJldGVyIGlzIGNhbGxlZCBMTEludCwgb3IgdGhlIExvdyBMZXZlbCBJbnRlcnBy
ZXRlci4gSlNDIHdpbGwgbm93CisgICAgICAgIHdpbGwgc3RhcnQgYnkgZXhlY3V0aW5nIGNvZGUg
aW4gTExJbnQgYW5kIHdpbGwgb25seSB0aWVyIHVwIHRvIHRoZSBvbGQKKyAgICAgICAgSklUIGFm
dGVyIHRoZSBjb2RlIGlzIHByb3ZlbiBob3QuCisgICAgICAgIAorICAgICAgICBMTEludCBpcyB3
cml0dGVuIGluIGEgbW9kaWZpZWQgZm9ybSBvZiBvdXIgbWFjcm8gYXNzZW1ibHkuIFRoaXMgbmV3
IG1hY3JvCisgICAgICAgIGFzc2VtYmx5IGlzIGNvbXBpbGVkIGJ5IGFuIG9mZmxpbmUgYXNzZW1i
bGVyIChzZWUgb2ZmbGluZWFzbSksIHdoaWNoCisgICAgICAgIGltcGxlbWVudHMgbWFueSBtb2Rl
cm4gY29udmVuaWVuY2VzIHN1Y2ggYXMgYSBUdXJpbmctY29tcGxldGUgQ1BTLWJhc2VkCisgICAg
ICAgIG1hY3JvIGxhbmd1YWdlIGFuZCBkaXJlY3QgYWNjZXNzIHRvIHJlbGV2YW50IEMrKyB0eXBl
IGluZm9ybWF0aW9uCisgICAgICAgIChiYXNpY2FsbHkgb2Zmc2V0cyBvZiBmaWVsZHMgYW5kIHNp
emVzIG9mIHN0cnVjdHMvY2xhc3NlcykuCisgICAgICAgIAorICAgICAgICBDb2RlIGV4ZWN1dGlu
ZyBpbiBMTEludCBhcHBlYXJzIHRvIHRoZSByZXN0IG9mIHRoZSBKU0Mgd29ybGQgImFzIGlmIiBp
dAorICAgICAgICB3ZXJlIGV4ZWN1dGluZyBpbiB0aGUgb2xkIEpJVC4gSGVuY2UsIHRoaW5ncyBs
aWtlIGV4Y2VwdGlvbiBoYW5kbGluZyBhbmQKKyAgICAgICAgY3Jvc3MtZXhlY3V0aW9uLWVuZ2lu
ZSBjYWxscyBqdXN0IHdvcmsgYW5kIHJlcXVpcmUgcHJldHR5IG11Y2ggbm8KKyAgICAgICAgYWRk
aXRpb25hbCBvdmVyaGVhZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaW50ZXJwcmV0ZXIgaXMg
Mi0yLjV4IGZhc3RlciB0aGFuIG91ciBvbGQgaW50ZXJwcmV0ZXIgb24gU3VuU3BpZGVyLAorICAg
ICAgICBWOCwgYW5kIEtyYWtlbi4gVGhpcyBpcyB0aGUgImZpcnN0IGF0dGVtcHQiIHBlcmZvcm1h
bmNlIC0gbm8gd29yayBoYXMgYmVlbgorICAgICAgICBkb25lIHRvIGRpYWdub3NlIGFueSBwb3Rl
bnRpYWwgYm90dGxlbmVja3MuIE1hbnkgb2J2aW91cyBvbmVzIGV4aXN0LCBsaWtlCisgICAgICAg
IHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zIGltcGxlbWVudGVkIGFzIHNsb3cg
Y2FsbHMgdG8gQysrIGNvZGUKKyAgICAgICAgYW5kIG1ha2luZyBwcm9wZXJ0eSBhY2Nlc3MgY2Fj
aGluZyBtb3JlIGFnZ3Jlc3NpdmUuCisgICAgICAgIAorICAgICAgICBBcyBhbiBhZGRpdGlvbmFs
IGNoYW5nZSwgdGhpcyBwYXRjaCBtYWtlcyBieXRlY29kZSBkdW1waW5nIGFuZCBKU1ZhbHVlCisg
ICAgICAgIGR1bXBpbmcgd29yayBpbiByZWxlYXNlIGJ1aWxkcywgc2luY2UgZGVidWdnaW5nIHNv
bWUgb2YgdGhlIG5hc3RpZXIKKyAgICAgICAgYXNwZWN0cyBvZiB0aGlzIHBhdGNoIHdvdWxkIGhh
dmUgYmVlbiBpbXBvc3NpYmxlIHdpdGhvdXQgdGhhdC4gQW5kIEkKKyAgICAgICAgZG9uJ3QgYmVs
aWV2ZSB0aGF0IHdlIGNhcmUgYWJvdXQgdGhlIG1pbmlzY3VsZSBjb2RlIGJsb2F0IHRoYXQgdGhp
cworICAgICAgICBpbnRyb2R1Y2VzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVDb252ZW50aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtDYWxscyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6dW5saW5rSW5jb21pbmdDYWxscyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Ynl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpqZXR0aXNvbik6Cisg
ICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUNvZGVCbG9j
azo6aml0Q29tcGlsZUltcGwpOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpqaXRDb21w
aWxlSW1wbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ29kZUJsb2NrOjpqaXRDb21waWxlSW1w
bCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaW5rSW5j
b21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5p
dHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmppdENvbXBpbGUpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6Omhhc09wdGltaXplZFJlcGxhY2VtZW50KToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjphZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjphZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmFkZExMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjph
ZGRHbG9iYWxSZXNvbHZlSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkRnJlcXVl
bnRFeGl0U2l0ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZG9udEpJVEFueXRpbWVTb29u
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRBZnRlcldhcm1VcCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6aml0U29vbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGxpbnRF
eGVjdXRlQ291bnRlcik6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb246Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9M
TEludENhbGxMaW5rSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0lu
Zm86OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86
On5MTEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpp
c0xpbmtlZCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAg
ICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1w
c0dlbmVyYXRlZENvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNH
ZW5lcmF0ZWRDb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoVGhpcyk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29u
c3RydWN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaCk6Cisg
ICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGll
cy5oOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBoZWFwL0FsbG9jYXRpb25TcGFjZS5oOgor
ICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgor
ICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAg
ICAgICAgKEpTQzo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5o
OgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAoSlNDOjpFeGVj
U3RhdGU6OmN1cnJlbnRWUEMpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcik6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
OmlzT3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZSk6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIpOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6OkludGVycHJldGVy
OjpnZXRPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZW5hYmxlZCk6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUmVnaXN0ZXJGaWxlLmg6CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3Rh
dGUpOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmg6IEFkZGVkLgorICAgICAg
ICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVENvZGUuaDoK
KyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpTQzo6
SklUQ29kZTo6aXNCYXNlbGluZUNvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjpKSVRDb2Rl
KToKKyAgICAgICAgKiBqaXQvSklURHJpdmVyLmg6CisgICAgICAgIChKU0M6OmppdENvbXBpbGVJ
ZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3By
aWF0ZSk6CisgICAgICAgICogaml0L0pJVEV4Y2VwdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpq
aXRUaHJvdyk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6REVG
SU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAg
ICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1vbi5oOiBBZGRl
ZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgor
ICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6
OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRh
OjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAg
IChKU0M6OkxMSW50OjpnZXRFdmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50Ojpn
ZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEVudHJ5cG9pbnQpOgorICAgICAgICAq
IGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6
aW50ZXJwcmV0ZXJUaHJvdyk6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9y
VGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgor
ICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50
RXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX29wZXJhbmQpOgorICAgICAg
ICAoSlNDOjpMTEludDo6bGxpbnRfdHJhY2VfdmFsdWUpOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfSEVMUEVSX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6dHJhY2VGdW5jdGlvblBy
b2xvZ3VlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNob3VsZEpJVCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpnZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpoYW5kbGVIb3N0Q2FsbCk6
CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6
Z2VuZXJpY0NhbGwpOgorICAgICAgICAqIGxsaW50L0xMSW50SGVscGVycy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBsbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaDogQWRkZWQuCisgICAgICAgICog
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxM
SW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAgICAobWFpbik6CisgICAgICAgICog
bGxpbnQvTExJbnRUaHVua3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2Fs
bEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JD
b25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0
aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50
OjpmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkxMSW50OjpldmFsRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxM
SW50Ojpwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgICogbGxpbnQvTExJbnRU
aHVua3MuaDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmg6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc206IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXJtdjcucmI6IEFkZGVk
LgorICAgICAgICAqIG9mZmxpbmVhc20vYXNtLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtL2FzdC5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9iYWNrZW5kcy5yYjogQWRk
ZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYjogQWRkZWQuCisgICAg
ICAgICogb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYjogQWRkZWQuCisg
ICAgICAgICogb2ZmbGluZWFzbS9vZmZzZXRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtL3BhcnNlci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9yZWdpc3RlcnMucmI6
IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2V0dGluZ3MucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L3g4Ni5yYjogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5k
Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAg
IChKU0M6OkNvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zvcik6CisgICAgICAgICogcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6amV0dGlzb25Db2RlQmxvY2spOgorICAg
ICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6CisgICAgICAgIChKU0M6OnNh
bXBsaW5nRGVzY3JpcHRpb24pOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y29tcGls
ZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBpbGUp
OgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6Cisg
ICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwpOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1Y3QpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJ
bnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvcik6CisgICAgICAgICogcnVudGltZS9F
eGVjdXRpb25IYXJuZXNzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpwcmVwYXJlRm9yRXhlY3V0
aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246
OnRlYXJPZmYpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpT
R2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkZXNj
cmlwdGlvbik6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmg6CisgICAgICAgICogcnVudGlt
ZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRp
bWUvT3B0aW9ucy5oOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5o
OgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi9TZW50aW5lbExpbmtl
ZExpc3QuaDoKKyAgICAgICAgKFdURjo6U2VudGluZWxMaW5rZWRMaXN0Ojppc0VtcHR5KToKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisKKzEyLTAxLTE4ICBSb2xhbmQgVGFrYWNz
ICA8dGFrYWNzLnJvbGFuZEBzdHVkLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIENyb3NzLXBsYXRm
b3JtIHByb2Nlc3NvciBjb3JlIGNvdW50ZXIgZml4CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjU0MApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBA
QAotIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MCw2ICs2MCw3IEBAIGFsbCA6IFwKICAgICBTdHJp
bmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU3RyaW5nUHJvdG90eXBlLmx1dC5oIFwKICAgICBk
b2NzL2J5dGVjb2RlLmh0bWwgXAorICAgIExMSW50QXNzZW1ibHkuaC5QSE9OWSBcCiAjCiAKICMg
bG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwpAQCAtMTA0LDMgKzEwNSwxMSBAQCBIZWFkZXJEZXRl
Y3Rpb24uaCA6CiAJZWNobyA+ICRACiAKIGVuZGlmCisKKyMgQXNzZW1ibHkgZm9yIHRoZSBMb3dM
ZXZlbEludGVycHJldGVyCisKKyMgVGhpcyBidWlsZHMgZXZlcnkgdGltZSBiZWNhdXNlIHRoZXJl
IGlzIG5vIGVhc3kgd2F5IHRvIGRlc2NyaWJlCisjIHRoZSBkZXBlbmRlbmNpZXMgdXNpbmcgbWFr
ZS4gSW5zdGVhZCwgdGhlIGFzc2VtYmxlciB3aWxsIGRlY2lkZSBvbgorIyBpdHMgb3duIHdoZXRo
ZXIgb3Igbm90IGl0IGRpZCBhbnl0aGluZyB0aGF0IHdvdWxkIGxlYWQgdG8gYSBjaGFuZ2UuCitM
TEludEFzc2VtYmx5LmguUEhPTlk6CisJcnVieSAkKEphdmFTY3JpcHRDb3JlKS9vZmZsaW5lYXNt
L2FzbS5yYiAkKEphdmFTY3JpcHRDb3JlKS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yID4gTExJbnRBc3Nl
bWJseS5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA1Mzc0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxNSBAQAogCW9iamVjdHMgPSB7
CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCisJCTBGNDY4MEE5MTRC
QTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovID0geworCQkJaXNhID0gUEJYQWdncmVn
YXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MEFDMTRCQTdGRDkw
MEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdl
dCAiTExJbnQgT2Zmc2V0cyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODBBQTE0
QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAorCQkJKTsKKwkJ
CW5hbWUgPSAiTExJbnQgT2Zmc2V0cyI7CisJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJj
ZXMiOworCQl9OwogCQk2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3VyY2Vz
ICovID0gewogCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0
aW9uTGlzdCA9IDY1RkIzRjc3MDlEMTFFQkQwMEY0OURFQiAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVyaXZlZCBTb3VyY2VzIiAqLzsKQEAgLTE0
LDYgKzIzLDkgQEAKIAkJCQk2NUZCM0Y2NTA5RDExRTkxMDBGNDlERUIgLyogR2VuZXJhdGUgRGVy
aXZlZCBTb3VyY2VzICovLAogCQkJCTVEMzVERUUxMEM3QzE0MEIwMDg2NDhCMiAvKiBHZW5lcmF0
ZSBEVHJhY2UgaGVhZGVyICovLAogCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2
ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CiAJ
CQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNv
dXJjZXMiOwogCQl9OwpAQCAtNDgsNiArNjAsMTAgQEAKIAkJMEJBQzk0QTAxMzM4NzI4NDAwQ0Yx
MzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJl
YWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEJDRDgzNTcxNDg1ODQ1MjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNo
YW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJD
RDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYz
OEY4NCAvKiBTaXplTGltaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAq
LzsgfTsKKwkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTUx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovOyB9OworCQkwRjBCODM5
QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8q
IExMSW50RW50cnlwb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTcx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUQxNEJD
RjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVu
a3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBD
b2RlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTgxNEJDRjU1RTAwODg1
QjRGIC8qIEhhbmRsZXJJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5n
ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU4LDkgKzc0LDEzIEBA
CiAJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0IzMTRCQ0Y4
NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyog
R2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4
M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjgx
NEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwRkM0NUEx
NEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyog
TExJbnRDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1RjE1
RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNkQ3MjYxNDJDMzlDMDAwQ0Y3ODRB
IC8qIEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLzsgfTsK
IAkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRC
IC8qIEpJVERyaXZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3QTE0
QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAv
KiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3RTE0
QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0
QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVy
ZW5jZUhhcnZlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMkM1NTZGMTQ3MzhGMzEwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RTE0NzM4
RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTcwMTQ3MzhGMzUwMDEyMUU0RiAvKiBERkdD
b2RlQmxvY2tzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLzsgfTsK
QEAgLTcxLDYgKzkxLDE5IEBACiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBMaXN0YWJs
ZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MjE0QkE1NzJE
MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlv
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA3RjE0QkE1NzI3MDBCRkUy
NzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3
MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2
ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludEhlbHBlcnMuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25v
LXVudXNlZC1wYXJhbWV0ZXIiOyB9OyB9OworCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyog
TExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTcxNEJBN0ZB
MTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZF
MjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRp
b25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBD
NTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyog
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzcxNEJC
QjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovOyB9OworCQkwRjQ2ODBD
RDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcy
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4
MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovOyB9OworCQkwRjQ2ODBEMzE0
QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0
NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDAxNEJCQzVGODAw
QkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovOyB9OworCQkwRjQ2ODBENTE0QkJE
MjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhv
c3RDYWxsUmV0dXJuVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZp
bmFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYyMDE3NDE0
M0ZDRDMzMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYyMDE3MjE0M0ZDRDJGMDA2OEI3N0Mg
LyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAxNzUxNDNGQ0QzNzAwNjhCNzdDIC8qIERGR09wZXJh
bmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYy
MDE3MTE0M0ZDRDJGMDA2OEI3N0MgLyogREZHT3BlcmFuZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzc1LDcgKzQwOCw3IEBACiAJCTg2Qjk5
QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUUxMTE3RTU3ODEwMERGNUE5MCAvKiBT
dHJpbmdCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRTEzOEUzODFC
MDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87IH07CiAJCTg2QkIwOUMxMTM4RTM4MUIwMDU2
NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oICovOyB9
OwotCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQw
MEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyB9OworCQk4NkMzNkVFQTBFRTEyODlEMDBC
M0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2
QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERDExQTIxM0VFMDAw
N0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9OwogCQk4NkM1NjhFMTExQTIxM0VF
MDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9B
c3NlbWJsZXJNSVBTLmggKi87IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBT
QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovOyB9OwpAQCAt
NzM4LDYgKzc3MSwyMCBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTBGNDY4MEIxMTRCQTgxMTUw
MEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250
YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAy
QUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3Rl
R2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzI7CisJCQlyZW1vdGVJbmZv
ID0gIkxMSW50IE9mZnNldHMiOworCQl9OworCQkwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVBy
b3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFBy
b2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3Ry
aW5nID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9IEpTQ0xMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJMTQxMjE0QkUwQTQ5MTkwRTAwNDgwMjU1IC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94
eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9q
ZWN0IG9iamVjdCAqLzsKQEAgLTc4Myw2ICs4MzAsMTUgQEAKIC8qIEVuZCBQQlhDb250YWluZXJJ
dGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNl
Y3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLyA9IHsK
KwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEvOworCQkJZHN0U3Vi
Zm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKIAkJNURCQjE1MTExMzFEMEIxMzAwNTZBRDM2
IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWls
ZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7CkBAIC04MjMsNiArODc5LDEwIEBACiAJ
CTBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFJlc3RyaWN0aW9uVmVyaWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJDRDgzNTQxNDg1ODQxMjAwRUEy
MDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZW1wb3JhcnlDaGFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhB
MjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMuY3Bw
OyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMuaDsgcGF0
aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50VGh1bmtzLmNwcDsgcGF0aCA9IGxsaW50
L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTgx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IExMSW50VGh1bmtzLmg7IHBhdGggPSBsbGludC9MTEludFRodW5rcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29k
ZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVR5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhh
bmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRsZXJJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0
RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTgzMyw5ICs4OTMsMTMgQEAKIAkJMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENh
bGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRob2RDYWxs
TGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjYxNEJDRjhE
RjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdsb2JhbFJlc29sdmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29k
ZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsUmV0dXJuT2Zm
c2V0VG9CeXRlY29kZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBG
QzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRo
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25TbG93UGF0aHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8q
IEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaXRW
ZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIxQzI2NjE0QkU1RjVF
MDBBREM2NEIgLyogSklURHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpJVERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3OTE0QkU3
MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJu
ZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGlvbkhhcm5lc3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRC
IC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnl0ZWNvZGVDb252ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBE
RkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERG
R0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RTE0
NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC04NDYsNiArOTEwLDIwIEBACiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJs
ZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5k
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDdGMTRCQTU3MjcwMEJG
RTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKSVRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRy
YWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJj
b21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpT
Q0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuY3BwOyBw
YXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuaDsgcGF0aCA9IGxs
aW50L0xMSW50RXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50SGVscGVycy5jcHA7IHBhdGggPSBsbGludC9MTElu
dEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMDE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IExMSW50SGVscGVycy5oOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM1MTRCQkIx
NjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBMTEludENvbW1vbi5oOyBwYXRoID0gbGxpbnQvTExJbnRDb21tb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2Zm
bGluZUFzbUNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludE9m
ZmxpbmVBc21Db25maWcuaDsgcGF0aCA9IGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyog
TG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBMb3dMZXZlbEludGVycHJldGVyLmNwcDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDODE0QkJCMTY5
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmg7IHBhdGggPSBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENFMTRCQkIz
RDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTExJbnREYXRhLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTElu
dERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnREYXRhLmg7IHBh
dGggPSBsbGludC9MTEludERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0
NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBI
b3N0Q2FsbFJldHVyblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhv
c3RDYWxsUmV0dXJuVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4
Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5dGVDb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNvZGVDYWNoZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVD
b2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0UxNDZDNzYy
RjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVW5jb25kaXRpb25hbEZpbmFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjYyMDE2RDE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBYnN0cmFjdFN0
YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE1NTEsNiArMTYyOSwxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVu
Y2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCisJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJ
aXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFt
ZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTYwOSw2ICsxNjk0LDcgQEAKIAkJCQkxNDEy
MTEyMDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4Rjkw
MDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyog
dGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjM5LDYgKzE3MjUsNyBAQAogCQkJCUY1QzI5MEU2MDI4
NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4
MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZG
NjBGNyAvKiBjb25maWcuaCAqLywKKwkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxp
bnQgKi8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4
Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQz
QUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKQEAgLTE2NzcsNiArMTc2NCwyOCBAQAogCQkJdGFi
V2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkwRjQ2ODA5QzE0QkE3RjREMDBC
RkUyNzIgLyogbGxpbnQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAq
LywKKwkJCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICov
LAorCQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8sCisJ
CQkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8sCisJCQkJMEY0
NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0Yx
NEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovLAorCQkJCTBGNDY4MEM1MTRCQkIxNjkw
MEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovLAorCQkJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3
MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLywKKwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8sCisJCQkJMEY0NjgwQzgxNEJCQjE2
OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8sCisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50SGVscGVycy5oICovLAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGlu
dDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3MjYw
MDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0xNzA5LDYgKzE4MTgsOCBAQAogCQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkgLyog
aml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2
ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJ
MEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJ
CQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJ
MEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4
MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTIxMzIs
NiArMjI0Myw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3OTE0QkU3
MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovLAorCQkJCTBGMjFDMjdB
MTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8sCiAJCQkJMEYxNUYxNUQx
NEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovLAogCQkJCUJDRjYwNTExMEUy
MDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBC
OUE2NEQgLyogQXJnTGlzdC5oICovLApAQCAtMjQ5Miw2ICsyNjA1LDggQEAKIAkJOTY5QTA3OEYw
RUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVD
b252ZW50aW9ucy5oICovLAorCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENh
bGxMaW5rSW5mby5oICovLAogCQkJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0
dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovLAogCQkJCTBGMEI4M0I2MTRCQ0Y4REYwMDg4
NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovLAogCQkJCTBGMEI4M0IyMTRCQ0Y4NUUwMDg4
NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3BwICovLApAQCAtMzAzMCw3ICszMTQ1LDE2IEBA
CiAJCQkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25T
bG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAv
KiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEE1MTRCQTdGOEQw
MEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRC
QTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2
ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVy
cHJldGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyog
TExJbnREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIg
LyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzOUIxNEJD
RjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
MEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZv
LmggaW4gSGVhZGVycyAqLywKQEAgLTMwMzksNyArMzE2MywxMSBAQAogCQkJCTBGMEI4M0I1MTRC
Q0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBC
ODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjFDMjY4
MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFD
MjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2Rl
Q29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRBMTRDM0NEMjkwMDdDM0RC
MSAvKiBERkdDQ2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NE
MkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0Iy
OTRDMTRDM0NENDMwMDdDM0RCMSAvKiBERkdCeXRlQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywK
QEAgLTMwNTIsNiArMzE4MCwyNCBAQAogLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOEUx
NEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHsKKwkJCWlz
YSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODA5
QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRp
dmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIgKi87CisJCQlidWlsZFBoYXNlcyA9
ICgKKwkJCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLywKKwkJCQkwRjQ2
ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkwRjQ2ODA4RDE0QkE3
RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJ
CQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBKU0NMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0TmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJ
bnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1
Y3QtdHlwZS50b29sIjsKKwkJfTsKIAkJMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlk
b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRp
b25MaXN0ID0gMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24g
bGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLzsKQEAgLTMxNzgsMTEgKzMzMjQs
MjkgQEAKIAkJCQkxNEJENTlCRTBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk5
MzJGNUJEQTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAogCQkJCTY1MTEyMkY3MTQwNDZBNEMw
MDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAv
KiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCisJCQkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZF
MjcyIC8qIExMSW50IE9mZnNldHMgKi8sCiAJCQkpOwogCQl9OwogLyogRW5kIFBCWFByb2plY3Qg
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAq
LworCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2Vz
ICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMg
PSAoCisJCQkJIiQoU1JDUk9PVCkvbGxpbnQvTG93TGV2ZWxBc3NlbWJsZXIuYXNtIiwKKwkJCSk7
CisJCQluYW1lID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CisJCQlvdXRwdXRQYXRocyA9
ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRP
ZmZzZXRzLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1w
IFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9cIlxuXG4vdXNyL2Jpbi9lbnYg
cnVieSBcIiR7U1JDUk9PVH0vb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJi
XCIgPCBcIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc21cIiA+IFwiJHtC
VUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmhcIlxu
IjsKKwkJfTsKIAkJMzcxM0YwMTQxNDI5MDUyNDAwMzYzODdGIC8qIENoZWNrIEZvciBJbmFwcHJv
cHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxT
Y3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTMz
MjMsNiArMzQ4NywxNCBAQAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0Njgw
OEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2Vz
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRDBBNDg3OTNDMDA0ODAyNTUgLyogU291cmNl
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKQEAgLTM1ODAsNyArMzc1MiwxNCBAQAogCQkJCTg2NzA0Qjg2MTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg5
MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNl
cHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MENDMTRCQkIxN0Ew
MEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
NDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlw
b2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8q
IExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4
NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjQxNEJD
Rjg2MDAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGNjlFODZDMzE0QzZFNTUxMDAyQzJDNjIgLyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTM1OTgsNiArMzc3NywxNiBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJ
CTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewor
CQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdG
RDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBC
MTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkw
RjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJ
CWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVF
MDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkg
PSAwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwor
CQl9OwogCQkxNDEyMTRCRjBBNDkxOTBFMDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEyMTEx
RjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLzsKQEAgLTM2MzEsNiArMzgyMCwxNDggQEAK
IC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWls
ZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyog
RGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMg
PSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87
CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19O
T19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlH
Q0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJ
T05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJ
CQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNv
bS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJf
QklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQ
RVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0ND
X1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2Fy
Y2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7
CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9B
UkNIID0gWUVTOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsK
KwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3
MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJ
CUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJ
UCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3lt
IjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVf
T0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBp
bGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lP
TiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURf
VkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJ
CQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNl
dHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5U
X1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJ
CQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGlj
dSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRI
UykiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVF
MDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9
IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9Q
SEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYt
d2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdD
Q19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFw
cGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRf
Q09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9
IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FS
Tl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0q
XSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9M
TEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJ
CQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIk
KFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9T
RUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAk
KEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9
OworCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdB
WVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJE
XzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JN
QVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RB
TkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJ
CQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJ
R0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9V
VF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZ
UEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFE
RVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIk
KEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJD
SF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsK
KwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNv
c3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJ
bmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBE
ZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJ
fTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8q
IFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsK
KwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZF
MjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2Vz
IGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIwMTRC
QTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJp
dmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJ
CTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1NSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKQEAgLTM4NzIsNiArNDIwMywy
OCBAQAogLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
WENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3
MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJ
bnRPZmZzZXRzRXh0cmFjdG9yIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7
CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3
MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAq
LywKKwkJCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBG
NDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1
bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFt
ZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0
cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8sCisJ
CQkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwQUYx
NEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODBCMDE0QkE3RkQ5MDBC
RkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklz
VmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwor
CQl9OwogCQkxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovID0gewogCQkJaXNhID0gWENDb25m
aWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA1Mzc0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNkZWZpbmUgRFVNUF9MSU5LX1NUQVRJU1RJQ1Mg
MAogI2RlZmluZSBEVU1QX0NPREUgMAogCi0jaW5jbHVkZSA8TWFjcm9Bc3NlbWJsZXIuaD4KKyNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUNvbnZlbnRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBCeXRlY29kZUNvbnZlbnRpb25zX2gKKyNkZWZpbmUgQnl0ZWNvZGVD
b252ZW50aW9uc19oCisKKy8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVy
YXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoK
Ky8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhl
IENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVn
aXN0ZXJGaWxlLmguCisvLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5k
aWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9y
YXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCisvLyAgICAgIDB4NDAwMDAwMDAt
MHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRy
aWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCitzdGF0aWMgY29uc3Qg
aW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKKworI2VuZGlmIC8v
IEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTA1Mzc0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYg
KzQyLDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdGF0aWNTY29w
ZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlVTdHJpbmdD
b25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC01OSw4ICs2MCw2IEBAIG5hbWVz
cGFjZSBKU0MgewogdXNpbmcgbmFtZXNwYWNlIERGRzsKICNlbmRpZgogCi0jaWYgIWRlZmluZWQo
TkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotCiBzdGF0aWMgVVN0cmluZyBlc2Nh
cGVRdW90ZXMoY29uc3QgVVN0cmluZyYgc3RyKQogewogICAgIFVTdHJpbmcgcmVzdWx0ID0gc3Ry
OwpAQCAtMzU4LDEwICszNTcsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBl
eGVjKSBjbwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
OyBpICs9IG9wY29kZUxlbmd0aHNbZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5z
dHJ1Y3Rpb25zKClbaV0udS5vcGNvZGUpXSkKICAgICAgICAgKytpbnN0cnVjdGlvbkNvdW50Owog
Ci0gICAgcHJpbnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFy
YW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocylcblxuIiwKKyAgICBwcmludGYoIiVsdSBt
X2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxl
ZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocylcblxuIiwKICAgICAgICAgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25Db3VudCksCiAgICAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNpemUoKSAqIHNpemVvZihJbnN0cnVjdGlvbikp
LAotICAgICAgICB0aGlzLCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsK
KyAgICAgICAgdGhpcywgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycywgbV9u
dW1WYXJzKTsKIAogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGJlZ2lu
ID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBpbnN0cnVjdGlvbnMoKS5lbmQoKTsKQEAgLTg5MCw2ICs4ODksMTQg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAg
cHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24i
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVj
LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QiKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fbm9ybWFsOiB7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwg
aXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwiKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX2dlbmVyaWM6IHsKICAgICAgICAg
ICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9nZW5lcmlj
Iik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyODEsOCArMTI4OCw2IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICB9CiB9CiAKLSNlbmRpZiAvLyAhZGVm
aW5lZChOREVCVUcpIHx8IEVOQUJMRShPUENPREVfU0FNUExJTkcpCi0KICNpZiBEVU1QX0NPREVf
QkxPQ0tfU1RBVElTVElDUwogc3RhdGljIEhhc2hTZXQ8Q29kZUJsb2NrKj4gbGl2ZUNvZGVCbG9j
a1NldDsKICNlbmRpZgpAQCAtMTQ0OSw2ICsxNDU0LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2so
Q29weVBhcnNlZEJsb2NrVGFnLAogewogICAgIHNldE51bVBhcmFtZXRlcnMob3RoZXIubnVtUGFy
YW1ldGVycygpKTsKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJXYXJt
VXAoKTsKICAgICAKICAgICBpZiAob3RoZXIubV9yYXJlRGF0YSkgewogICAgICAgICBjcmVhdGVS
YXJlRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0xNDk3LDYgKzE1MDMsNyBAQCBDb2RlQmxvY2s6OkNv
ZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgQVNTRVJUKG1fc291cmNlKTsKICAgICAK
ICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsKIAogI2lm
IERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNTCiAgICAgbGl2ZUNvZGVCbG9ja1NldC5hZGQodGhp
cyk7CkBAIC0xNTE0LDcgKzE1MjEsMTEgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKICNpZiBF
TkFCTEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxFKQogICAgIGR1bXBWYWx1ZVByb2ZpbGVzKCk7CiAj
ZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShMTElOVCkgICAgCisgICAgd2hpbGUgKG1faW5jb21p
bmdMTEludENhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisgICAg
ICAgIG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCktPnJlbW92ZSgpOworI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFdlIG1heSBiZSBkZXN0cm95ZWQg
YmVmb3JlIGFueSBDb2RlQmxvY2tzIHRoYXQgcmVmZXIgdG8gdXMgYXJlIGRlc3Ryb3llZC4KICAg
ICAvLyBDb25zaWRlciB0aGF0IHR3byBDb2RlQmxvY2tzIGJlY29tZSB1bnJlYWNoYWJsZSBhdCB0
aGUgc2FtZSB0aW1lLiBUaGVyZQpAQCAtMTcyNiw4ICsxNzM3LDU1IEBAIHZvaWQgQ29kZUJsb2Nr
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICNlbHNlCiAgICAgc3RhdGljIGNvbnN0IGJvb2wg
dmVyYm9zZVVubGlua2luZyA9IGZhbHNlOwogI2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFC
TEUoSklUKQogICAgIAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJldGVyOworICAgIGlmICghaW50ZXJwcmV0ZXIt
PmVuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAg
ICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9uc1tpXV07CisgICAgICAgICAgICBzd2l0Y2ggKGludGVycHJldGVy
LT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkpIHsKKyAgICAgICAgICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAg
ICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZSB8fCBIZWFwOjpp
c01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkpCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3Ry
dWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNV0udS5vcGVy
YW5kID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWw6CisgICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGN1
ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAgICAgICAgICAm
JiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bN10udS5z
dHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAg
ICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAg
ICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmNsZWFyKCk7CisgICAg
ICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJl
c29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAg
ICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW21fZ2xv
YmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV07CisgICAgICAgICAgICBBU1NFUlQoaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZl
X2dsb2JhbAorICAgICAgICAgICAgICAgICAgIHx8IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChj
dXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7
CisgICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlIHx8IEhlYXA6
OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0
dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQgPSAw
OworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xsaW50Q2Fs
bExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlu
a0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0lu
Zm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlu
a2luZykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBjYWxsIGZy
b20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tp
XS51bmxpbmsoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBF
TkFCTEUoTExJTlQpCisKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAvLyBDaGVjayBpZiB3ZSdy
ZSBub3QgbGl2ZS4gSWYgd2UgYXJlLCB0aGVuIGpldHRpc29uLgogICAgIGlmICghKHNob3VsZElt
bWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRhLT5saXZlbmVz
c0hhc0JlZW5Qcm92ZWQpKSB7CkBAIC0xODQ4LDEwICsxOTA2LDEyIEBAIHZvaWQgQ29kZUJsb2Nr
OjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXIKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
ZnVuY3Rpb25EZWNscy5zaXplKCk7ICsraSkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZnVu
Y3Rpb25EZWNsc1tpXSk7CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQotICAgIGZvciAoc2l6ZV90
IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBz
aXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25z
KClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOwotICAgIGZvciAoc2l6ZV90IHNp
emUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7
ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVtt
X2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICBpZiAobV9nbG9iYWxEYXRhLT5p
bnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3By
b3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisg
ICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9
IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVtt
X2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShERkdfSklUKQpAQCAtMjA2MCw2ICsyMTIwLDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxp
bmtDYWxscygpCiB7CiAgICAgaWYgKCEhbV9hbHRlcm5hdGl2ZSkKICAgICAgICAgbV9hbHRlcm5h
dGl2ZS0+dW5saW5rQ2FsbHMoKTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICBp
ZiAobV9sbGludENhbGxMaW5rSW5mb3NbaV0uaXNMaW5rZWQoKSkKKyAgICAgICAgICAgIG1fbGxp
bnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOworICAgIH0KKyNlbmRpZgogICAgIGlmICghKG1f
Y2FsbExpbmtJbmZvcy5zaXplKCkgfHwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSkpCiAg
ICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0y
MDc0LDEwICsyMTQwLDM3IEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiAKIHZvaWQg
Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKCkKIHsKKyAgICB3aGlsZSAobV9pbmNvbWlu
Z0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAg
ICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+dW5saW5rKCk7CisgICAgaWYgKG1faW5j
b21pbmdDYWxscy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKICAgICBSZXBhdGNoQnVmZmVy
IHJlcGF0Y2hCdWZmZXIodGhpcyk7CiAgICAgd2hpbGUgKG1faW5jb21pbmdDYWxscy5iZWdpbigp
ICE9IG1faW5jb21pbmdDYWxscy5lbmQoKSkKICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLmJlZ2lu
KCktPnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKIH0KKwordW5zaWduZWQg
Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMsIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcykKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKHJldHVybkFk
ZHJlc3MudmFsdWUoKSA+PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9iZWdpbikKKyAgICAg
ICAgJiYgcmV0dXJuQWRkcmVzcy52YWx1ZSgpIDw9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50
X2VuZCkpIHsKKyAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAgICAgICAgQVNT
RVJUKGV4ZWMtPmNvZGVCbG9jaygpID09IHRoaXMpOworICAgICAgICBBU1NFUlQoSklUQ29kZTo6
aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CisgICAgICAgIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiA9IGV4ZWMtPmN1cnJlbnRWUEMoKTsKKyAgICAgICAgQVNTRVJUKGluc3RydWN0aW9u
KTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uKTsKKyAgICB9Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyNlbmRpZgorICAgIGlmICghbV9yYXJlRGF0
YSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVj
b2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZl
Y3RvcjsKKyAgICBpZiAoIWNhbGxJbmRpY2VzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCwg
dW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNhbGxJ
bmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUo
KSkpLT5ieXRlY29kZU9mZnNldDsKK30KICNlbmRpZgogCiB2b2lkIENvZGVCbG9jazo6Y2xlYXJF
dmFsQ2FjaGUoKQpAQCAtMjE3MywyNCArMjI2Niw0NSBAQCBib29sIEZ1bmN0aW9uQ29kZUJsb2Nr
OjpjYW5Db21waWxlV2l0aERGCiAKIHZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6amV0dGlzb24oKQog
ewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAg
IEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNT
RVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1
dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xvYmFs
RGF0YSgpKTsKIH0KIAogdm9pZCBFdmFsQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNT
RVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJ
VENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9
PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVy
RXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwogfQog
CiB2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJ
VFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6Omlz
T3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNl
bWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1
dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZUZvcigqZ2xvYmFsRGF0YSgpLCBtX2lzQ29u
c3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOwogfQorCit2b2lkIFBy
b2dyYW1Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBB
U1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFT
U0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm9n
cmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShleGVjKTsKK30K
Kwordm9pZCBFdmFsQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsK
KyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZXhlYyk7
Cit9CisKK3ZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVy
VGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENv
bXBpbGVGb3IoZXhlYywgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVG
b3JDYWxsKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTA1
Mzc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaWZuZGVmIENvZGVCbG9ja19oCiAjZGVmaW5l
IENvZGVCbG9ja19oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVk
ZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCkBAIC01MCw2ICs1MSw3IEBACiAjaW5j
bHVkZSAiSklUV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNp
bmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogI2lu
Y2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQcmVkaWN0
aW9uVHJhY2tlci5oIgpAQCAtNjUsMTYgKzY3LDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKLS8vIFJlZ2lzdGVyIG51bWJlcnMg
dXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3Jk
aW5nIHRvIHRoZWlyIHJhbmdlczoKLS8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdh
dGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRo
ZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCi0vLyAgICAgIDB4MDAwMDAwMDAtMHgz
RkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUg
bG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUu
Ci0vLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4
NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2Rl
QmxvY2suCi1zdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0
MDAwMDAwMDsKLQogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAg
Y2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgaW5saW5lIGludCB1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXIoaW50IGFyZ3VtZW50c1JlZ2lzdGVyKSB7IHJldHVybiBhcmd1bWVudHNSZWdpc3Rl
ciAtIDE7IH0KIApAQCAtODMsNiArODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBD
b2RlQmxvY2sgOiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXplciwgcHVibGljIFdlYWtSZWZl
cmVuY2VIYXJ2ZXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gQ29weVBhcnNlZEJsb2NrVGFnIHsg
Q29weVBhcnNlZEJsb2NrIH07CiAgICAgcHJvdGVjdGVkOgpAQCAtMTIzLDcgKzEyMSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkK
ICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQtPmFsdGVybmF0aXZlKCk7CiAgICAgICAg
ICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5
cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29k
ZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMTM0LDExICsxMzIsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0j
aWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEVfT1BDT0RFX1NBTVBMSU5HCiAgICAgICAgIHZv
aWQgZHVtcChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZXMo
Y29uc3QgSW5zdHJ1Y3Rpb24qKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZShj
b25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiosIGludCBvcGVyYW5kKSBjb25zdDsK
LSNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9p
c1N0cmljdE1vZGU7IH0KIApAQCAtMTk0LDE1ICsxOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxNZXRob2RDYWxsTGlua0luZm8sIHVuc2ln
bmVkLCBnZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUluZGV4PihtX21ldGhvZENhbGxMaW5r
SW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSwgYnl0ZWNvZGVJbmRl
eCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1f
cmFyZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBWZWN0b3I8
Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURh
dGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOwotICAgICAgICAgICAgaWYgKCFjYWxsSW5kaWNl
cy5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICByZXR1cm4g
YmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwg
Z2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6
ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVj
b2RlT2Zmc2V0OwotICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEV4
ZWNTdGF0ZSosIFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0Rm9yQ2FsbEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKQEAgLTIyMywx
MSArMjExLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBtX2lu
Y29taW5nQ2FsbHMucHVzaChpbmNvbWluZyk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoTExJTlQp
CisgICAgICAgIHZvaWQgbGlua0luY29taW5nQ2FsbChMTEludENhbGxMaW5rSW5mbyogaW5jb21p
bmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLnB1c2goaW5j
b21pbmcpOworICAgICAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogICAgICAgICAKICAg
ICAgICAgdm9pZCB1bmxpbmtJbmNvbWluZ0NhbGxzKCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFC
TEUoSklUKQogCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVO
QUJMRShMTElOVCkKICAgICAgICAgdm9pZCBzZXRKSVRDb2RlTWFwKFBhc3NPd25QdHI8Q29tcGFj
dEpJVENvZGVNYXA+IGppdENvZGVNYXApCiAgICAgICAgIHsKICAgICAgICAgICAgIG1faml0Q29k
ZU1hcCA9IGppdENvZGVNYXA7CkBAIC0yMzYsNyArMjMwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2ppdENvZGVNYXAuZ2V0KCk7CiAgICAgICAg
IH0KKyNlbmRpZgogICAgICAgICAKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgdm9pZCBj
cmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoISFt
X2RmZ0RhdGEpCkBAIC0zMzUsMTIgKzMzMSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
fQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICYm
IHJldHVybkFkZHJlc3MgPCBpbnN0cnVjdGlvbnMoKS5lbmQoKSk7CiAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9u
cygpLmJlZ2luKCk7CiAgICAgICAgIH0KLSNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0SXNOdW1l
cmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNO
dW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAg
ICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgeyByZXR1cm4gbV9pc051bWVyaWND
b21wYXJlRnVuY3Rpb247IH0KQEAgLTM1NiwxNSArMzUxLDE3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB9CiAgICAgICAgIHZvaWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5p
dHkoKQogICAgICAgICB7CisjaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpICYmICFFTkFCTEUo
TExJTlQpCisgICAgICAgICAgICBpZiAoQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVk
Q29kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmICghIWFsdGVy
bmF0aXZlKCkpCiAgICAgICAgICAgICAgICAgZGlzY2FyZEJ5dGVjb2RlKCk7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgZGlzY2FyZEJ5dGVjb2RlTGF0ZXIoKTsKKyNlbmRpZgog
ICAgICAgICB9CiAgICAgICAgIAotI2lmbmRlZiBOREVCVUcKICAgICAgICAgYm9vbCB1c2VzT3Bj
b2RlKE9wY29kZUlEKTsKLSNlbmRpZgogCiAgICAgICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291
bnQoKSB7IHJldHVybiBtX2luc3RydWN0aW9uQ291bnQ7IH0KICAgICAgICAgdm9pZCBzZXRJbnN0
cnVjdGlvbkNvdW50KHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQpIHsgbV9pbnN0cnVjdGlvbkNv
dW50ID0gaW5zdHJ1Y3Rpb25Db3VudDsgfQpAQCAtMzg3LDE3ICszODQsMjYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGV4ZWN1dGFibGVNZW1vcnko
KSB7IHJldHVybiBnZXRKSVRDb2RlKCkuZ2V0RXhlY3V0YWJsZU1lbW9yeSgpOyB9CiAgICAgICAg
IHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFp
bk5vZGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpID0gMDsKKyAgICAg
ICAgYm9vbCBqaXRDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaml0Q29tcGlsZUltcGwoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpID0gMDsKICAgICAgICAgYm9vbCBo
YXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChn
ZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJU
KEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgYm9v
bCByZXN1bHQgPSByZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPiBnZXRKSVRUeXBlKCk7CiAj
aWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAg
ICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkRGR0pJ
VCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1l
bnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVwbGFjZW1lbnQoKS0+Z2V0SklU
VHlwZSgpKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCkgPT0gdGhpcyk7
CiAgICAgICAgICAgICB9CiAjZW5kaWYKQEAgLTQ1NiwxOCArNDYyLDIxIEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHZvaWQgY2xlYXJFdmFsQ2FjaGUoKTsKIAotI2lmIEVOQUJMRShJTlRF
UlBSRVRFUikKICAgICAgICAgdm9pZCBhZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKHVuc2ln
bmVkIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX3Byb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKTsKKyAg
ICAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBwZW5kKHByb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAgICAgIHZvaWQgYWRkR2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9uKHVuc2lnbmVkIGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAg
ewotICAgICAgICAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAg
ICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5hcHBlbmQoZ2xvYmFsUmVzb2x2ZUlu
c3RydWN0aW9uKTsKKyAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5hcHBl
bmQoZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICBib29sIGhh
c0dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbkF0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgTExJbnRDYWxsTGlua0luZm8q
IGFkZExMSW50Q2FsbExpbmtJbmZvKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludENh
bGxMaW5rSW5mb3MuYXBwZW5kKExMSW50Q2FsbExpbmtJbmZvKCkpOworICAgICAgICAgICAgcmV0
dXJuICZtX2xsaW50Q2FsbExpbmtJbmZvcy5sYXN0KCk7CisgICAgICAgIH0KICNlbmRpZgogI2lm
IEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgc2V0TnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3Mo
c2l6ZV90IHNpemUpIHsgbV9zdHJ1Y3R1cmVTdHViSW5mb3MuZ3JvdyhzaXplKTsgfQpAQCAtNDc2
LDggKzQ4NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkR2xvYmFsUmVz
b2x2ZUluZm8odW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAobV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAg
ICBtX2dsb2JhbFJlc29sdmVJbmZvcy5hcHBlbmQoR2xvYmFsUmVzb2x2ZUluZm8oZ2xvYmFsUmVz
b2x2ZUluc3RydWN0aW9uKSk7CisgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbmZvcy5hcHBl
bmQoR2xvYmFsUmVzb2x2ZUluZm8oZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKSk7CiAgICAgICAg
IH0KICAgICAgICAgR2xvYmFsUmVzb2x2ZUluZm8mIGdsb2JhbFJlc29sdmVJbmZvKGludCBpbmRl
eCkgeyByZXR1cm4gbV9nbG9iYWxSZXNvbHZlSW5mb3NbaW5kZXhdOyB9CiAgICAgICAgIGJvb2wg
aGFzR2xvYmFsUmVzb2x2ZUluZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KTsKQEAgLTY3Miw3ICs2ODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAg
ICAgIGJvb2wgYWRkRnJlcXVlbnRFeGl0U2l0ZShjb25zdCBERkc6OkZyZXF1ZW50RXhpdFNpdGUm
IHNpdGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklU
Q29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxp
bmVDb2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIG1fZXhpdFByb2ZpbGUu
YWRkKHNpdGUpOwogICAgICAgICB9CiAKQEAgLTc3Nyw2ICs3ODUsMjkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgY29weVBvc3RQYXJzZURhdGFGcm9tKENvZGVCbG9jayogYWx0ZXJu
YXRpdmUpOwogICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbUFsdGVybmF0aXZlKCk7
CiAgICAgICAgIAorICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gSklU
dGluZyBraWNrcyBpbiwgaW4gYSBtaXhlZCBtb2RlCisgICAgICAgIC8vIGV4ZWN1dGlvbiB3b3Js
ZC4KKyAgICAgICAgCisgICAgICAgIHZvaWQgZG9udEpJVEFueXRpbWVTb29uKCkKKyAgICAgICAg
eworICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICB2b2lkIGppdEFmdGVyV2FybVVwKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9s
bGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklU
QWZ0ZXJXYXJtVXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0U29vbigp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6
OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGludDMyX3QgbGxpbnRFeGVjdXRlQ291bnRlcigpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIH0KKyAgICAg
ICAgCiAgICAgICAgIC8vIEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiB0aWVyZWQgY29t
cGlsYXRpb24ga2lja3MgaW4uIFRoaXMKICAgICAgICAgLy8gY29udHJvbHMgYm90aCB3aGVuIHRo
ZSBvcHRpbWl6aW5nIGNvbXBpbGVyIGlzIGludm9rZWQgYW5kIHdoZW4gT1NSCiAgICAgICAgIC8v
IGVudHJ5IGhhcHBlbnMuIFR3byB0cmlnZ2VycyBleGlzdDogdGhlIGxvb3AgdHJpZ2dlciBhbmQg
dGhlIHJldHVybgpAQCAtOTY5LDYgKzEwMDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Ym9vbCBtX3Nob3VsZERpc2NhcmRCeXRlY29kZTsKIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAg
dmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEV4ZWNTdGF0ZSopID0gMDsKICAgICAgICAgdmly
dHVhbCB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCk7CiAgICAgICAgIApAQCAtOTgxLDcg
KzEwMTMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCB0YWxseUZyZXF1ZW50RXhp
dFNpdGVzKCkgeyB9CiAjZW5kaWYKICAgICAgICAgCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBF
TkFCTEUoT1BDT0RFX1NBTVBMSU5HKQogICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKiwgY29u
c3QgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImIGJlZ2luLCBWZWN0b3I8SW5z
dHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYpIGNvbnN0OwogCiAgICAgICAgIENTdHJpbmcgcmVn
aXN0ZXJOYW1lKEV4ZWNTdGF0ZSosIGludCByKSBjb25zdDsKQEAgLTk5MSw3ICsxMDIyLDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHJpbnRHZXRCeUlkT3AoRXhlY1N0YXRlKiwg
aW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0
IGNoYXIqIG9wKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludENhbGxPcChFeGVjU3RhdGUqLCBp
bnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3Qg
Y2hhciogb3ApIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50UHV0QnlJZE9wKEV4ZWNTdGF0ZSos
IGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25z
dCBjaGFyKiBvcCkgY29uc3Q7Ci0jZW5kaWYKICAgICAgICAgdm9pZCB2aXNpdFN0cnVjdHVyZXMo
U2xvdFZpc2l0b3ImLCBJbnN0cnVjdGlvbiogdlBDKSBjb25zdDsKICAgICAgICAgCiAjaWYgRU5B
QkxFKERGR19KSVQpCkBAIC0xMDUyLDkgKzEwODIsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9zb3VyY2U7CiAgICAgICAgIHVuc2lnbmVkIG1f
c291cmNlT2Zmc2V0OwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBWZWN0b3I8
dW5zaWduZWQ+IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnM7CiAgICAgICAgIFZlY3Rvcjx1
bnNpZ25lZD4gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zOworI2lmIEVOQUJMRShMTElOVCkK
KyAgICAgICAgU2VnbWVudGVkVmVjdG9yPExMSW50Q2FsbExpbmtJbmZvLCA4PiBtX2xsaW50Q2Fs
bExpbmtJbmZvczsKKyAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PExMSW50Q2FsbExpbmtJbmZv
LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5nTExJ
bnRDYWxsczsKICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFZlY3RvcjxTdHJ1Y3R1
cmVTdHViSW5mbz4gbV9zdHJ1Y3R1cmVTdHViSW5mb3M7CkBAIC0xMDY1LDkgKzEwOTcsMTAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2ppdENvZGVX
aXRoQXJpdHlDaGVjazsKICAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxMaW5rSW5mbywg
QmFzaWNSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdDYWxsczsKICNl
bmRpZgotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUo
TExJTlQpCiAgICAgICAgIE93blB0cjxDb21wYWN0SklUQ29kZU1hcD4gbV9qaXRDb2RlTWFwOwot
ICAgICAgICAKKyNlbmRpZgorI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBzdHJ1Y3QgV2Vh
a1JlZmVyZW5jZVRyYW5zaXRpb24gewogICAgICAgICAgICAgV2Vha1JlZmVyZW5jZVRyYW5zaXRp
b24oKSB7IH0KICAgICAgICAgICAgIApAQCAtMTEzMCwxMiArMTE2MywxNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBPd25QdHI8Q29kZUJsb2NrPiBtX2FsdGVybmF0aXZlOwogICAgICAg
ICAKKyAgICAgICAgaW50MzJfdCBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIAogICAg
ICAgICBpbnQzMl90IG1faml0RXhlY3V0ZUNvdW50ZXI7CiAgICAgICAgIHVpbnQzMl90IG1fc3Bl
Y3VsYXRpdmVTdWNjZXNzQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZUZh
aWxDb3VudGVyOwogICAgICAgICB1aW50OF90IG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyOwog
ICAgICAgICB1aW50OF90IG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXI7Ci0KKyAgICAgICAg
CiAgICAgICAgIHN0cnVjdCBSYXJlRGF0YSB7CiAgICAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgICAgICBwdWJsaWM6CkBAIC0xMjA4LDYgKzEyNDMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVP
cHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChFeGVj
U3RhdGUqKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC0xMjQyLDYg
KzEyNzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1
YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUq
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBqaXRDb21waWxlSW1wbChFeGVjU3RhdGUqKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sq
IHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygp
OwogI2VuZGlmCkBAIC0xMjc5LDYgKzEzMTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90
ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0
YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChFeGVjU3RhdGUqKTsKICAgICAg
ICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBjYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTA1Mzc0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNDZWxsOwogICAgIGNs
YXNzIFN0cnVjdHVyZTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKKyAgICBzdHJ1Y3QgTExJ
bnRDYWxsTGlua0luZm87CiAKICNpZiBFTkFCTEUoSklUKQogICAgIHR5cGVkZWYgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdFN0dWJSb3V0aW5lVHlw
ZTsKQEAgLTE0NSw2ICsxNDYsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHN0
cnVjdCBJbnN0cnVjdGlvbiB7CisgICAgICAgIEluc3RydWN0aW9uKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdS5qc0NlbGwuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAg
SW5zdHJ1Y3Rpb24oT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogI2lmICFFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikKQEAgLTE4MCw2ICsxODYsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgfQogCiAgICAgICAgIEluc3RydWN0aW9uKFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jIGdldHRlckZ1bmMpIHsgdS5nZXR0ZXJGdW5jID0gZ2V0dGVyRnVuYzsgfQorICAgICAgICAK
KyAgICAgICAgSW5zdHJ1Y3Rpb24oTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykgeyB1
LmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsgfQogCiAgICAgICAgIHVuaW9uIHsKICAgICAg
ICAgICAgIE9wY29kZSBvcGNvZGU7CkBAIC0xODgsNiArMTk2LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBzdHJ1Y3R1cmVD
aGFpbjsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8SlNDZWxsPiBqc0NlbGw7CiAgICAg
ICAgICAgICBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jOworICAgICAgICAg
ICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbzsKKyAgICAgICAgICAgIHZvaWQqIHBv
aW50ZXI7CiAgICAgICAgIH0gdTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExp
bmtJbmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENhbGxMaW5rSW5mb19o
CisjZGVmaW5lIExMSW50Q2FsbExpbmtJbmZvX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIK
KyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvU2VudGlu
ZWxMaW5rZWRMaXN0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247
CisKK3N0cnVjdCBMTEludENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9k
ZTxMTEludENhbGxMaW5rSW5mbz4geworICAgIExMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7Cisg
ICAgfQorICAgIAorICAgIH5MTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgICAgICBpZiAo
aXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBib29s
IGlzTGlua2VkKCkgeyByZXR1cm4gY2FsbGVlOyB9CisgICAgCisgICAgdm9pZCB1bmxpbmsoKQor
ICAgIHsKKyAgICAgICAgY2FsbGVlLmNsZWFyKCk7CisgICAgICAgIG1hY2hpbmVDb2RlVGFyZ2V0
ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAg
ICAgICAgICAgcmVtb3ZlKCk7CisgICAgfQorICAgIAorICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0
aW9uPiBjYWxsZWU7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1hY2hpbmVDb2RlVGFyZ2V0
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBMTEludENhbGxMaW5rSW5m
b19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlz
aW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBtYWNybyhvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCwgNCkgXAogICAgICAgICBtYWNybyhvcF9w
dXRfYnlfaWQsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24sIDkp
IFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0LCA5KSBcCisg
ICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCwgOSkgXAogICAgICAg
ICBtYWNybyhvcF9wdXRfYnlfaWRfcmVwbGFjZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRf
YnlfaWRfZ2VuZXJpYywgOSkgXAogICAgICAgICBtYWNybyhvcF9kZWxfYnlfaWQsIDQpIFwKQEAg
LTIwMiw2ICsyMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBlbnVtIHsg
Rk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9JRF9FTlVNKSB9IE9wY29kZUlEOwogICAgICN1bmRl
ZiBPUENPREVfSURfRU5VTQogCisgICAgY29uc3QgaW50IG1heE9wY29kZUxlbmd0aCA9IDk7CiAg
ICAgY29uc3QgaW50IG51bU9wY29kZUlEcyA9IG9wX2VuZCArIDE7CiAKICAgICAjZGVmaW5lIE9Q
Q09ERV9JRF9MRU5HVEhTKGlkLCBsZW5ndGgpIGNvbnN0IGludCBpZCMjX2xlbmd0aCA9IGxlbmd0
aDsKQEAgLTIxOCw3ICsyMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRk9SX0VBQ0hf
T1BDT0RFX0lEKFZFUklGWV9PUENPREVfSUQpOwogICAgICN1bmRlZiBWRVJJRllfT1BDT0RFX0lE
CiAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09N
UFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQogI2lmIENPTVBJTEVSKFJW
Q1QpIHx8IENPTVBJTEVSKElOVEVMKQogICAgIHR5cGVkZWYgdm9pZCogT3Bjb2RlOwogI2Vsc2UK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVy
LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisj
aW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIK
ICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgpAQCAtMTE2
LDI2ICsxMTcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZXhwZWN0ZWQgYnkgdGhlIGNhbGxl
ZS4KICovCiAKLSNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgYm9vbCBzX2R1bXBzR2VuZXJhdGVkQ29k
ZSA9IGZhbHNlOwotI2VuZGlmCiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnNldER1bXBzR2Vu
ZXJhdGVkQ29kZShib29sIGR1bXBzR2VuZXJhdGVkQ29kZSkKIHsKLSNpZm5kZWYgTkRFQlVHCiAg
ICAgc19kdW1wc0dlbmVyYXRlZENvZGUgPSBkdW1wc0dlbmVyYXRlZENvZGU7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShkdW1wc0dlbmVyYXRlZENvZGUpOwotI2VuZGlmCiB9CiAKIGJvb2wgQnl0
ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpCiB7Ci0jaWZuZGVmIE5ERUJVRwog
ICAgIHJldHVybiBzX2R1bXBzR2VuZXJhdGVkQ29kZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNl
OwotI2VuZGlmCiB9CiAKIEpTT2JqZWN0KiBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQpA
QCAtMTQ4LDEwICsxMzksOCBAQCBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
KCkKIAogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVjdGlvbkNvdW50KG1fY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5zaXplKCkpOwogCi0jaWZuZGVmIE5ERUJVRwogICAgIGlmIChzX2R1bXBz
R2VuZXJhdGVkQ29kZSkKICAgICAgICAgbV9jb2RlQmxvY2stPmR1bXAobV9zY29wZUNoYWluLT5n
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7Ci0jZW5kaWYKIAogICAgIGlmICgobV9jb2RlVHlw
ZSA9PSBGdW5jdGlvbkNvZGUgJiYgIW1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkg
JiYgIW1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpIHx8IG1fY29kZVR5cGUgPT0gRXZhbENv
ZGUpCiAgICAgICAgIHN5bWJvbFRhYmxlKCkuY2xlYXIoKTsKQEAgLTEyNjQsOSArMTI1Myw3IEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklU
KQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgbV9j
b2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXpl
KCkpOwotI2VuZGlmCiAgICAgICAgIGVtaXRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8g
b3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQxOSw5ICsxNDA2LDcgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQp
CiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNp
emUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2st
PmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2Vu
ZGlmCiAgICAgZW1pdE9wY29kZShyZXF1aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZlX2ds
b2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChwcm9wRHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29u
c3RhbnQocHJvcGVydHkpKTsKQEAgLTE0NjYsOSArMTQ1MSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgIG1fY29kZUJsb2Nr
LT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0j
aWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZl
SW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIGVtaXRPcGNv
ZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9w
X3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5k
ZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7
CkBAIC0xNDg2LDkgKzE0NjksNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TWV0aG9k
Q2hlY2soCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJZChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
KQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAg
ICBlbWl0T3Bjb2RlKG9wX2dldF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRz
dC0+aW5kZXgoKSk7CkBAIC0xNTEzLDkgKzE0OTQsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdldEFyCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVn
aXN0ZXJJRCogdmFsdWUpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJs
b2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
Ci0jZW5kaWYKIAogICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBAIC0xNTMxLDkgKzE1MTAsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0jaWYgRU5BQkxFKElOVEVS
UFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGlu
c3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICAKICAgICBlbWl0T3Bjb2RlKG9wX3B1
dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAt
MTgyMSw3ICsxNzk4LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2Fs
bCgKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1bmMKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFy
Z3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hZGRMTEludENh
bGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworI2Vu
ZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlmIChkc3QgIT0gaWdub3Jl
ZFJlc3VsdCgpKSB7CiAgICAgICAgIGVtaXRPcGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKQEAg
LTE5MjMsNyArMTkwNCwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENv
bnN0CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMoKSk7IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxB
cmd1bWVudHMucmVnaXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxF
KExMSU5UKQorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRD
YWxsTGlua0luZm8oKSk7CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNl
bmRpZgogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9y
ZWRSZXN1bHQoKSkgewogICAgICAgICBlbWl0T3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBA
IC0yMTgzLDcgKzIxNjgsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
YXRjaAogewogICAgIG1fdXNlc0V4Y2VwdGlvbnMgPSB0cnVlOwogI2lmIEVOQUJMRShKSVQpCisj
aWYgRU5BQkxFKExMSU5UKQorICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAs
IDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2Nv
cGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X29wX2NhdGNoKSkgfTsKKyNlbHNlCiAgICAgSGFuZGxlckluZm8gaW5m
byA9IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0
aW9uTGFiZWwoKSB9OworI2VuZGlmCiAjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0
YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwg
bV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGggfTsKICNlbmRpZgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJl
dmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODQ2LDcgKzE4NDYsOSBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9nZXRfYnlfaWQpOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6IHsK
KyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbDogewogICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVj
dGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoY3Vy
cmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVu
dGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVu
dEluc3RydWN0aW9uWzJdLnUub3BlcmFuZF07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw2
ICsxMTEsOCBAQCBpbmxpbmUgYm9vbCBjYW5Db21waWxlT3Bjb2RlKE9wY29kZUlEIG9wCiAgICAg
Y2FzZSBvcF9wdXRfc2NvcGVkX3ZhcjoKICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICBjYXNl
IG9wX3B1dF9ieV9pZDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoK
KyAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNlIG9wX2dl
dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6CiAgICAgY2FzZSBvcF9q
bXA6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJ
KHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiREZHUmVwYXRjaC5o
IgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0
ZXIuaCIKICNpbmNsdWRlICJJbmxpbmVBU00uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpA
QCAtNTY0LDQ1ICs1NjUsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJl
U3RyCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNvZGVk
SlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRl
KEV4ZWNTdGF0ZSopOwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9M
X1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIK
LSAgICAibW92ICVyMTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FU
SU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYg
Q1BVKFg4NikKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAi
XG4iCi0gICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVzcClc
biIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20g
KAotIi50ZXh0IiAiXG4iCi0iLmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5H
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICJcbiIKLSIudGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNf
UEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0
Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIK
LSAgICAiY3B5IHIwLCByNSIgIlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9O
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0K
LUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhF
eGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
ZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQotCiBzdGF0aWMgdm9p
ZCogaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4
ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9BbGxvY2F0aW9uU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9BbGxvY2F0aW9uU3BhY2UuaAkocmV2aXNpb24gMTA1Mzc0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOworY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogY2xhc3MgTWFya2VkQmxvY2s7CiAKIGNsYXNzIEFsbG9jYXRpb25TcGFj
ZSB7CkBAIC02OCw2ICs2OSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNocmluaygpOwogICAgIAog
cHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAog
ICAgIGVudW0gQWxsb2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRpb25NdXN0U3VjY2VlZCwgQWxsb2Nh
dGlvbkNhbkZhaWwgfTsKICAgICAKICAgICB2b2lkKiBhbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6
ZUNsYXNzJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24g
MTA1Mzc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTgyOSw3ICs4MjksNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUg
c3dlZXBUb2dnCiAgICAgICAgIG1fb2JqZWN0U3BhY2Uuc2V0SGlnaFdhdGVyTWFyayhtYXgocHJv
cG9ydGlvbmFsQnl0ZXMsIG1fbWluQnl0ZXNQZXJDeWNsZSkpOwogICAgIH0KICAgICBKQVZBU0NS
SVBUQ09SRV9HQ19FTkQoKTsKLQorICAgIAogICAgICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMDUzNzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2
LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAg
IGNsYXNzIEpTVmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsK
ICAgICBjbGFzcyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTEyOSwxMCAr
MTMwLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJl
Z2lzdGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKLSAg
ICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQWxs
b2NhdGlvblNwYWNlOwotICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwogCiAgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
bWluRXh0cmFDb3N0ID0gMjU2OwogICAgICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IG1heEV4dHJh
Q29zdCA9IDEwMjQgKiAxMDI0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
U3RhY2suY3BwCShyZXZpc2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDEsNyArMzAxLDcgQEAgQUxXQVlT
X0lOTElORSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKAogI2VuZGlmCiAKICAgICBBU1NFUlQo
SGVhcDo6aXNNYXJrZWQoY2VsbCkpOwotCisgICAgCiAgICAgaWYgKGlzSlNTdHJpbmcoY2VsbCkp
IHsKICAgICAgICAgSlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4oY29uc3RfY2FzdDxKU0NlbGwqPihj
ZWxsKSwgdmlzaXRvcik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMTA1Mzc0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzks
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEhlYXA7CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBM
aXZlT2JqZWN0SXRlcmF0b3I7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBX
ZWFrR0NIYW5kbGU7CiBjbGFzcyBTbG90VmlzaXRvcjsKIApAQCAtNzksNiArODAsOCBAQCBwdWJs
aWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0
dXJuVHlwZSBmb3JFYWNoQmxvY2soKTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAgIC8vIFsgMzIuLi4gMjU2IF0KICAgICBzdGF0
aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VTdGVwID0gTWFya2VkQmxvY2s6OmF0b21TaXplOwogICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZUN1dG9mZiA9IDI1NjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDEwNTM3
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMTE5LDYgKzExOSw5IEBAIG5hbWVzcGFjZSBKU0MgIHsKICNpZiBFTkFC
TEUoSU5URVJQUkVURVIpCiAgICAgICAgIEluc3RydWN0aW9uKiByZXR1cm5WUEMoKSBjb25zdCB7
IHJldHVybiB0aGlzW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdLnZQQygpOyB9CiAjZW5kaWYKKyNp
ZiBFTkFCTEUoTExJTlQpCisgICAgICAgIEluc3RydWN0aW9uKiBjdXJyZW50VlBDKCkgY29uc3Qg
eyByZXR1cm4gYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4odGhpc1tSZWdpc3RlckZpbGU6OkFy
Z3VtZW50Q291bnRdLnRhZygpKTsgfQorI2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXRDYWxsZXJG
cmFtZShDYWxsRnJhbWUqIGNhbGxlckZyYW1lKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhp
cylbUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZV0gPSBjYWxsZXJGcmFtZTsgfQogICAgICAgICB2
b2lkIHNldFNjb3BlQ2hhaW4oU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pIHsgc3RhdGljX2Nh
c3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW5dID0gc2NvcGVDaGFp
bjsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3
IEBACiAjaW5jbHVkZSAiSklULmgiCiAjZW5kaWYKIAotI2RlZmluZSBXVEZfVVNFX0dDQ19DT01Q
VVRFRF9HT1RPX1dPUktBUk9VTkQgKEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSAm
JiAhZGVmaW5lZChfX2xsdm1fXykpCisjZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9f
V09SS0FST1VORCAoKEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUo
TExJTlQpKSAmJiAhZGVmaW5lZChfX2xsdm1fXykpCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAK
QEAgLTU0NywxNyArNTQ3LDQxIEBAIEludGVycHJldGVyOjpJbnRlcnByZXRlcigpCiB7CiB9CiAK
LXZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQpCitJbnRlcnByZXRl
cjo6fkludGVycHJldGVyKCkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRF
UikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fZW5hYmxlZCkKKyAgICAgICAgZGVsZXRl
W10gbV9vcGNvZGVUYWJsZTsKKyNlbmRpZgorfQorCit2b2lkIEludGVycHJldGVyOjppbml0aWFs
aXplKExMSW50OjpEYXRhKiBsbGludERhdGEsIGJvb2wgY2FuVXNlSklUKQoreworI2lmIEVOQUJM
RShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJM
RShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorICAgIC8vIEhhdmluZyBMTEludCBlbmFibGVk
LCBidXQgbm90IGJlaW5nIGFibGUgdG8gdXNlIHRoZSBKSVQsIGFuZCBub3QgaGF2aW5nCisgICAg
Ly8gYSBjb21wdXRlZCBnb3RvIGludGVycHJldGVyLCBpcyBub3Qgc3VwcG9ydGVkLiBOb3QgYmVj
YXVzZSB3ZSBjYW5ub3QKKyAgICAvLyBzdXBwb3J0IGl0LCBidXQgYmVjYXVzZSBJIGRlY2lkZWQg
dG8gZHJhdyB0aGUgbGluZSBhdCB0aGUgbnVtYmVyIG9mCisgICAgLy8gcGVybXV0YXRpb25zIG9m
IGV4ZWN1dGlvbiBlbmdpbmVzIHRoYXQgSSB3YW50ZWQgdGhpcyBjb2RlIHRvIGdyb2suCisgICAg
QVNTRVJUKGNhblVzZUpJVCk7CisjZW5kaWYKICAgICBpZiAoY2FuVXNlSklUKSB7CisjaWYgRU5B
QkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbGxpbnREYXRhLT5vcGNvZGVNYXAo
KTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKKyAgICAg
ICAgICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNvZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8
T3Bjb2RlSUQ+KGkpKTsKKyNlbHNlCiAgICAgICAgIC8vIElmIHRoZSBKSVQgaXMgcHJlc2VudCwg
ZG9uJ3QgdXNlIGp1bXAgZGVzdGluYXRpb25zIGZvciBvcGNvZGVzLgogICAgICAgICAKICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkgewogICAgICAgICAgICAg
T3Bjb2RlIG9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90
PihpKSk7CiAgICAgICAgICAgICBtX29wY29kZVRhYmxlW2ldID0gb3Bjb2RlOwogICAgICAgICB9
CisjZW5kaWYKICAgICB9IGVsc2UgeworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNv
ZGVUYWJsZSA9IG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXTsKKyNlbmRpZgogICAgICAgICBwcml2
YXRlRXhlY3V0ZShJbml0aWFsaXplQW5kUmV0dXJuLCAwLCAwKTsKICAgICAgICAgCiAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpCkBAIC02NjcsOSArNjkxLDEx
IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW0KIAogYm9vbCBJbnRl
cnByZXRlcjo6aXNPcGNvZGUoT3Bjb2RlIG9wY29kZSkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURf
R09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikg
fHwgRU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoTExJTlQpCiAgICAgaWYgKCFtX2VuYWJsZWQp
CiAgICAgICAgIHJldHVybiBvcGNvZGUgPj0gMCAmJiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0
d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSkgPD0gb3BfZW5kOworI2VuZGlmCiAgICAgcmV0
dXJuIG9wY29kZSAhPSBIYXNoVHJhaXRzPE9wY29kZT46OmVtcHR5VmFsdWUoKQogICAgICAgICAm
JiAhSGFzaFRyYWl0czxPcGNvZGU+Ojppc0RlbGV0ZWRWYWx1ZShvcGNvZGUpCiAgICAgICAgICYm
IG1fb3Bjb2RlSURUYWJsZS5jb250YWlucyhvcGNvZGUpOwpAQCAtNzI2LDExICs3NTIsMTEgQEAg
TkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbAogICAgIC8vIGhhdmUgdG8g
c3VidHJhY3QgMS4KICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAg
aWYgKGNhbGxlckZyYW1lLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCkpCi0gICAgICAgIGJ5dGVj
b2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBD
KCkpOworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQo
Y2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAgICAgZWxzZQogICAgICAgICBi
eXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1
cm5WUEMoKSkgLSAxOwogI2VsaWYgRU5BQkxFKEpJVCkKLSAgICBieXRlY29kZU9mZnNldCA9IGNv
ZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRl
Y29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxG
cmFtZS0+cmV0dXJuUEMoKSk7CiAjZWxzZQogICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2Nr
LT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZW5kaWYKQEAg
LTUxNzAsMTAgKzUxOTYsMTAgQEAgdm9pZCBJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVy
KENhbAogICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVP
ZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSk7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBlbHNl
Ci0gICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNl
dChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxl
ckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJu
UEMoKSk7CiAjZW5kaWYKICNlbHNlCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVP
ZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxs
RnJhbWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAgICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVC
bG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAg
ICAgc291cmNlSUQgPSBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJ
RCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAj
aW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5j
bHVkZSAiUmVnaXN0ZXJGaWxlLmgiCiAKQEAgLTQ1LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAg
ICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAg
IGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwpAQCAtOTAsMTkgKzkyLDIxIEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENh
Y2hlZENhbGw7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgogICAgICAgICBJbnRlcnByZXRl
cigpOworICAgICAgICB+SW50ZXJwcmV0ZXIoKTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgaW5p
dGlhbGl6ZShib29sIGNhblVzZUpJVCk7CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZShMTEludDo6
RGF0YSosIGJvb2wgY2FuVXNlSklUKTsKIAogICAgICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVy
RmlsZSgpIHsgcmV0dXJuIG1fcmVnaXN0ZXJGaWxlOyB9CiAgICAgICAgIAogICAgICAgICBPcGNv
ZGUgZ2V0T3Bjb2RlKE9wY29kZUlEIGlkKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
bV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisj
aWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICAg
ICAgICAgICAgIHJldHVybiBtX29wY29kZVRhYmxlW2lkXTsKICNlbHNlCiAgICAgICAgICAgICBy
ZXR1cm4gaWQ7CkBAIC0xMTIsNyArMTE2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBP
cGNvZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAgICAgICAgICAg
ICBBU1NFUlQobV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQ
UkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9w
Y29kZSkpOworICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsK
KyNlbGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgQVNT
RVJUKGlzT3Bjb2RlKG9wY29kZSkpOwogICAgICAgICAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihvcGNvZGUpKTsKQEAgLTEyMiw2ICsxMjksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGJvb2wgZW5hYmxlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2Vu
YWJsZWQ7CisgICAgICAgIH0KIAogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKQEAg
LTE4OSw3ICsyMDEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxl
IG1fcmVnaXN0ZXJGaWxlOwogICAgICAgICAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRF
UlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIE9wY29kZSogbV9vcGNvZGVUYWJs
ZTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZworICAgICAgICBIYXNo
TWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4g
T3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRF
UlBSRVRFUikKICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2RlSURzXTsgLy8g
TWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBIYXNoTWFwPE9w
Y29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2Rl
SUQgZm9yIGRlY29tcGlsaW5nCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnNl
cnZhdGl2ZVJvb3RzOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlIHsKICAgICAgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoUmVnaXN0ZXJGaWxlKTsKQEAgLTgxLDYgKzgyLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGdyb3dTbG93
Q2FzZShSZWdpc3RlciopOwogICAgICAgICB2b2lkIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwog
ICAgICAgICB2b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVl
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVk
ZSAiSW5saW5lQVNNLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1ZhbHVl
SW5saW5lTWV0aG9kcy5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9P
UFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1
ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0
aEV4ZWNTdGF0ZShFeGVjU3RhdGUqKTsKKworI2lmIENQVShYODZfNjQpCithc20gKAorIi5nbG9i
bCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NU
UklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVyMTMp
LCAlcjEzXG4iCisgICAgIm1vdiAlcjEzLCAlcmRpXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJ
TkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgor
KTsKKyNlbGlmIENQVShYODYpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4iCisgICAgIm1vdiAlZWRp
LCA0KCVlc3ApXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0
Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShBUk1fVEhV
TUIyKQorYXNtICgKKyIudGV4dCIgIlxuIgorIi5hbGlnbiAyIiAiXG4iCisiLmdsb2JsICIgU1lN
Qk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCisiLnRodW1iIiAiXG4iCisiLnRodW1iX2Z1bmMgIiBU
SFVNQl9GVU5DX1BBUkFNKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJ
TkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibGRyIHI1LCBbcjUsICMt
NDBdIiAiXG4iCisgICAgImNweSByMCwgcjUiICJcbiIKKyAgICAiYiAiIFNZTUJPTF9TVFJJTkdf
UkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsK
KyNlbmRpZgorCitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFM
VUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5o
b3N0Q2FsbFJldHVyblZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisjZGVm
aW5lIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1
ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgor
CisjaWYgQ0FMTElOR19DT05WRU5USU9OX0lTX1NURENBTEwKKyNkZWZpbmUgSE9TVF9DQUxMX1JF
VFVSTl9WQUxVRV9PUFRJT04gQ0RFQ0wKKyNlbHNlCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5f
VkFMVUVfT1BUSU9OCisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CitleHRlcm4gIkMiIEVuY29k
ZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUoKTsKK30KKworI2VuZGlmIC8vIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsOCBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChv
cF9wcm9maWxlX3dpbGxfY2FsbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfbmV3X3Njb3Bl
KQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9zY29wZSkKKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcHV0X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3Zh
bCkKQEAgLTQ4Nyw2ICs0ODksOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMo
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcG9zdF9pbmMpCiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9wcmVfZGVjKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
cHJlX2luYykKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6Cisg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfcHV0X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xv
YmFsKQpAQCAtNTI2LDYgKzUzMCwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2Fz
ZXMoKQogCiBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRy
eUFyaXR5Q2hlY2spCiB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYo
IkNvbXBpbGluZyBKSVQgY29kZSFcbiIpOworI2VuZGlmCisgICAgCiAjaWYgRU5BQkxFKFZBTFVF
X1BST0ZJTEVSKQogICAgIG1fY2FuQmVPcHRpbWl6ZWQgPSBtX2NvZGVCbG9jay0+Y2FuQ29tcGls
ZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtNjkwLDcgKzY5OCw3IEBAIEpJVENvZGUgSklUOjpwcml2
YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24g
PSBtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8obV9tZXRob2RDYWxsQ29tcGlsYXRpb25J
bmZvW2ldLnByb3BlcnR5QWNjZXNzSW5kZXgpLmNhbGxSZXR1cm5Mb2NhdGlvbjsKICAgICB9CiAK
LSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5U
KQogICAgIGlmIChtX2NhbkJlT3B0aW1pemVkKSB7CiAgICAgICAgIENvbXBhY3RKSVRDb2RlTWFw
OjpFbmNvZGVyIGppdENvZGVNYXBFbmNvZGVyOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBtX2xhYmVscy5zaXplKCk7ICsrYnl0ZWNv
ZGVPZmZzZXQpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCShyZXZpc2lv
biAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSklUQ29k
ZSgpIHsgfQogI2VuZGlmCiAgICAgcHVibGljOgotICAgICAgICBlbnVtIEpJVFR5cGUgeyBIb3N0
Q2FsbFRodW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CisgICAgICAgIGVudW0gSklUVHlwZSB7
IE5vbmUsIEhvc3RDYWxsVGh1bmssIEludGVycHJldGVyVGh1bmssIEJhc2VsaW5lSklULCBERkdK
SVQgfTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKSVRUeXBlIGJvdHRvbVRpZXJKSVQoKQog
ICAgICAgICB7CkBAIC02Niw4ICs2NiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHJldHVybiBERkdKSVQ7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBib29s
IGlzT3B0aW1pemluZ0pJVChKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBqaXRUeXBlID09IERGR0pJVDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
c3RhdGljIGJvb2wgaXNCYXNlbGluZUNvZGUoSklUVHlwZSBqaXRUeXBlKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBJbnRlcnByZXRlclRodW5rIHx8IGppdFR5cGUg
PT0gQmFzZWxpbmVKSVQ7CisgICAgICAgIH0KKyAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAg
ICAgICAgSklUQ29kZSgpCisgICAgICAgICAgICA6IG1faml0VHlwZShOb25lKQogICAgICAgICB7
CiAgICAgICAgIH0KIApAQCAtNzUsNiArODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIDogbV9yZWYocmVmKQogICAgICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKICAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKGppdFR5cGUgIT0gTm9uZSk7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3IgISgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE1ICszMywy
MSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVy
LmgiCiAjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KIGlubGlu
ZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEV4ZWNTdGF0ZSogZXhlYywgT3duUHRyPENv
ZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENvZGU6OkpJVFR5
cGUgaml0VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUo
KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFleGVjLT5nbG9iYWxEYXRh
KCkuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9j
ay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBm
YWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0Nv
bXBpbGVkID0gREZHOjp0cnlDb21waWxlKGV4ZWMsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7
CkBAIC01NSwxMCArNjEsNyBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShF
eGVjCiAgICAgICAgIH0KICAgICAgICAgaml0Q29kZSA9IEpJVDo6Y29tcGlsZSgmZXhlYy0+Z2xv
YmFsRGF0YSgpLCBjb2RlQmxvY2suZ2V0KCkpOwogICAgIH0KLSNpZiAhRU5BQkxFKE9QQ09ERV9T
QU1QTElORykKLSAgICBpZiAoIUJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUo
KSkKLSAgICAgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0
eSgpOwotI2VuZGlmCisgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBv
cnR1bml0eSgpOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC02NiwxMCArNjksMTUg
QEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoRXhlYwogCiBpbmxpbmUgYm9v
bCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKEV4ZWNTdGF0ZSogZXhlYywgT3duUHRy
PEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHImIGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUq
JiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRU
eXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CiAg
ICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29s
IGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklU
KQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZUZ1bmN0aW9uKGV4ZWMsIGNv
ZGVCbG9jay5nZXQoKSwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKQEAgLTg0LDEx
ICs5Miw3IEBAIGlubGluZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmkKICAgICAg
ICAgfQogICAgICAgICBqaXRDb2RlID0gSklUOjpjb21waWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxv
Y2suZ2V0KCksICZqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAgIH0KLSNpZiAhRU5BQkxFKE9Q
Q09ERV9TQU1QTElORykKLSAgICBpZiAoIUJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRl
ZENvZGUoKSkKLSAgICAgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBv
cnR1bml0eSgpOwotI2VuZGlmCi0gICAgCisgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURp
c2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2Rl
LCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAgIAogICAgIHJldHVybiB0cnVlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAx
MDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIEV4Y2VwdGlvbkhhbmRsZXIgZ2VuZXJpY1Ro
cm93KEpTR2xvYmFsRGEKIAogRXhjZXB0aW9uSGFuZGxlciBqaXRUaHJvdyhKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEsIEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVl
LCBSZXR1cm5BZGRyZXNzUHRyIGZhdWx0TG9jYXRpb24pCiB7Ci0gICAgcmV0dXJuIGdlbmVyaWNU
aHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUtPmNv
ZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChmYXVsdExvY2F0aW9uKSk7CisgICAgcmV0dXJuIGdl
bmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJh
bWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUsIGZhdWx0TG9jYXRpb24p
KTsKIH0KIAogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJl
dmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTE1LDcgKzE5MTUsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElP
Tih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNr
RnJhbWUuYXJnc1swXS5pbnQzMigpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAg
ICBwcmludGYoIkVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIg
PSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlD
b3VudGVyID0gJXVcbiIsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2Nr
LT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRl
bGF5Q291bnRlcigpKTsKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9v
cCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0g
JXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9j
ay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291
bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgog
CiAgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewpAQCAtMjE3
MCw0NSArMjE3MCwxMyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0Zv
cihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1
bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpOwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RG
dW5jdGlvbigpKTsKLSAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhl
Y3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KCk7Ci0KLSAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2Fz
ZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBp
ZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJz
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3
IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGlu
IG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5l
d0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7
Ci0gICAgUmVnaXN0ZXIqIHNyYyA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0
ZXIqIGRzdCA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwot
ICAgIGludCBlbmQgPSAtQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpOwotICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0g
PSBzcmNbaV07Ci0KLSAgICBlbmQgLT0gZGVsdGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1p
KQotICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdD
YWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3
Q2FsbEZyYW1lIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJh
bWU7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2sp
CiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSog
bmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0
ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21t
b25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVy
RmlsZSwgQ29kZUZvckNhbGwpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUs
IFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUt
PmNhbGxlckZyYW1lKCkpKTsKIApAQCAtMjIyMSw3ICsyMTg5LDcgQEAgREVGSU5FX1NUVUJfRlVO
Q1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBz
dGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJp
dHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29u
c3RydWN0KTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6
YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9y
Q29uc3RydWN0KTsKICAgICBpZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93
RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JF
VFVSTl9BRERSRVNTLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJG
cmFtZSgpKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VK
SVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNl
SklULmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJ
bnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYg
SlNJbnRlcmZhY2VKSVRfaAogI2RlZmluZSBKU0ludGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJC
eXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJ
VFN0dWJzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBMTEludENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gK
KworI2RlZmluZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0hFTFBF
Ul9UUkFDSU5HIDAKKworI2VuZGlmIC8vIExMSW50Q29tbW9uX2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCisKKyNpZiBFTkFCTEUo
TExJTlQpCisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50
ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBMTEludCB7CisKK0RhdGE6OkRhdGEoKQorICAgIDogbV9leGNlcHRpb25JbnN0cnVjdGlv
bnMobmV3IEluc3RydWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdKQorICAgICwgbV9vcGNvZGVN
YXAobmV3IE9wY29kZVtudW1PcGNvZGVJRHNdKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAgICAgICBtX2V4Y2VwdGlvbkluc3RydWN0aW9u
c1tpXS51LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19mcm9tX2hl
bHBlcl90cmFtcG9saW5lKTsKKyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBt
X29wY29kZU1hcFtvcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUp
OworICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkpOworI3VuZGVmIE9QQ09ERV9F
TlRSWQorfQorCitEYXRhOjp+RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9leGNlcHRpb25JbnN0
cnVjdGlvbnM7CisgICAgZGVsZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IExMSW50RGF0YV9oCisjZGVmaW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRlICJPcGNvZGUuaCIK
KyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJ
bnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKworI2lmIEVOQUJMRShMTElOVCkKK2Ns
YXNzIERhdGEgeworcHVibGljOgorICAgIERhdGEoKTsKKyAgICB+RGF0YSgpOworICAgIAorICAg
IEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9w
Y29kZU1hcCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgfQorcHJp
dmF0ZToKKyAgICBJbnN0cnVjdGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgT3Bj
b2RlKiBtX29wY29kZU1hcDsKK307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQpCisKKyNpZiBDT01Q
SUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlmCisKK2NsYXNz
IERhdGEgeworcHVibGljOgorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAg
IE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KK307CisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwb3AKKyNlbmRpZgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50RGF0YV9oCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxM
SW50RW50cnlwb2ludHMuaCIKKworI2luY2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlICJKU0ds
b2JhbERhdGEuaCIKKyNpbmNsdWRlICJMTEludFRodW5rcy5oIgorI2luY2x1ZGUgIkxvd0xldmVs
SW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3Zv
aWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHImIGFyaXR5Q2hlY2spCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7
CisgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAgICBqaXRDb2Rl
ID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2Vs
Zk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSkpKSk7CisgICAgICAgICAgICBhcml0
eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAg
ICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkpKSk7
CisgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaykpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7
CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlv
bkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7
CisgICAgICAgIGFyaXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JD
YWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBqaXRDb2Rl
ID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRy
eVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgYXJpdHlD
aGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hl
Y2tUaHVua0dlbmVyYXRvcikuY29kZSgpOworfQorCit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWds
b2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RG
dW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihN
YWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZXZhbF9wcm9s
b2d1ZSkpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJ
VENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklU
Q29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cit9CisKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICgh
Z2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9z
dEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9wcm9ncmFt
X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2Rl
ID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0
b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5
cG9pbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVu
dHJ5cG9pbnRzX2gKKyNkZWZpbmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNsdWRlICJDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFdmFsQ29k
ZUJsb2NrOworY2xhc3MgSklUQ29kZTsKK2NsYXNzIEpTR2xvYmFsRGF0YTsKK2NsYXNzIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKK2NsYXNzIFBy
b2dyYW1Db2RlQmxvY2s7CisKK25hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25F
bnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIEpJVENvZGUm
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2spOwordm9pZCBnZXRFdmFsRW50cnlw
b2ludChKU0dsb2JhbERhdGEmLCBKSVRDb2RlJik7Cit2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50
KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKKworaW5saW5lIHZvaWQgZ2V0RW50cnlwb2ludChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEV2YWxDb2RlQmxvY2sqLCBKSVRDb2RlJiBqaXRDb2Rl
KQoreworICAgIGdldEV2YWxFbnRyeXBvaW50KGdsb2JhbERhdGEsIGppdENvZGUpOworfQorCitp
bmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvZ3Jh
bUNvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0UHJvZ3JhbUVudHJ5cG9p
bnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTElu
dAorCisjZW5kaWYgLy8gTExJbnRFbnRyeXBvaW50c19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMu
aCIKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1
ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBpbnRlcnByZXRlclRocm93
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhl
Yy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJU
aHJvd2luZyBleGNlcHRpb24gJXMuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRp
b24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFs
RGF0YS0+ZXhjZXB0aW9uLCBleGVjLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZXhlYywg
ZXhlYy0+cmV0dXJuUEMoKSkpOworfQorCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvd0ZvclRo
cm93bkV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIGV4ZWMtPmdsb2Jh
bERhdGEoKS5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK0luc3RydWN0
aW9uKiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQorewor
ICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYg
TExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAo
cmV0dXJuVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7
CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+
ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
KTsKKyAgICAKKyAgICByZXR1cm4gZ2xvYmFsRGF0YS0+bGxpbnREYXRhLmV4Y2VwdGlvbkluc3Ry
dWN0aW9ucygpOworfQorCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3Ry
dWN0aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xv
YmFsRGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2lu
ZyBleGNlcHRpb24gJXMgKGNhbGxUb1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5k
ZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVj
LCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0
aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKTsKK30KKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4
Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEV4
Y2VwdGlvbnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1N0
ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3Ry
dWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisvLyBKdXN0IHRocm93IHRo
ZSBjdXJyZW50bHkgYWN0aXZlIGV4Y2VwdGlvbiBpbiB0aGUgY29udGV4dCBvZiB0aGlzIGV4ZWMg
c3RhdGUKKy8vIGFuZCBzZXQgdXAgYWxsIG5lY2Vzc2FyeSBzdGF0ZS4KK3ZvaWQgaW50ZXJwcmV0
ZXJUaHJvdyhFeGVjU3RhdGUqKTsKKworLy8gVGVsbHMgeW91IHdoZXJlIHRvIGp1bXAgdG8gaWYg
eW91IHdhbnQgdG8gcmV0dXJuLXRvLXRocm93LCBhZnRlciB5b3UndmUgYWxyZWFkeQorLy8gc2V0
IHVwIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gdGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0luc3Ry
dWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOworCisv
LyBTYXZlcyB0aGUgY3VycmVudCBQQyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGlu
ZywgYW5kIGdpdmVzIHlvdSBhIFBDCisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0
ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90
cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRl
cnByZXRlcidzCisvLyBleGNlcHRpb24gaGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0
IHRoZSBQQyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8g
anVzdCByZXR1cm4gdGhhdCBQQyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8v
IGxldHMgeW91IHRocmVhZCBleGNlcHRpb24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVy
IGZ1bmN0aW9ucyB1c2VkIGJ5CisvLyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVy
blRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5
b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxsIHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0
YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNl
bmRpZiAvLyBMTEludEV4Y2VwdGlvbnNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzc5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEhlbHBlcnMuaCIKKworI2luY2x1
ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1v
blNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVERyaXZlci5o
IgorI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgorI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50Q29t
bW9uLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJ
bnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBMTEludCB7CisKKyNkZWZpbmUgTExJTlRfT1AoaW5kZXgpIChleGVjLT51bmNo
ZWNrZWRSKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorI2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAo
ZXhlYy0+cihwY1tpbmRleF0udS5vcGVyYW5kKSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fVFdP
KGZpcnN0LCBzZWNvbmQpIGRvIHsgICAgICAgXAorICAgICAgICB1bmlvbiB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGE7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGI7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSBwYWlyOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50NjRfdCBpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICB9IF9fcnRfdTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5hID0gZmlyc3Q7ICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBfX3J0X3UucGFpci5iID0gc2Vjb25kOyAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICByZXR1cm4gX19ydF91Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVU
VVJOX1RXTyhwYywgZXhlYykKKworI2RlZmluZSBMTElOVF9USFJPVyhleGNlcHRpb25Ub1Rocm93
KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9f
dF9nbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOyAgICAgICAgXAorICAgICAgICBfX3Rf
Z2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgXAor
ICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
aWYgKFVOTElLRUxZKGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSB7ICAgXAorICAgICAg
ICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORCgpIGRvIHsgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAg
ICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQlJBTkNIKG9wY29kZSwg
Y29uZGl0aW9uKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYm9vbCBfX2Jf
Y29uZGl0aW9uID0gKGNvbmRpdGlvbik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgaWYgKF9fYl9jb25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IHBjW09QQ09ERV9MRU5HVEgob3Bj
b2RlKSAtIDFdLnUub3BlcmFuZDsgICAgICAgIFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBj
ICs9IE9QQ09ERV9MRU5HVEgob3Bjb2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk4odmFs
dWUpIGRvIHsgICAgICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcl9yZXR1cm5WYWx1
ZSA9ICh2YWx1ZSk7ICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAg
ICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9PUCgxKSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAg
ICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfRU5EX0lNUEwoZXhl
YywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RXTygoY2FsbFRhcmdldCksIChleGVjKSkKKwor
I2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBleGNlcHRpb25Ub1Rocm93KSBkbyB7
ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3RfZXhlYyA9IChleGVjKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiog
X19jdF9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBKU0dsb2JhbERhdGEmIF9fY3RfZ2xvYmFsRGF0YSA9IChfX2N0X2V4ZWMpLT5nbG9iYWxE
YXRhKCk7ICAgICAgXAorICAgICAgICBfX2N0X2dsb2JhbERhdGEuZXhjZXB0aW9uID0gKGV4Y2Vw
dGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9J
TVBMKF9fY3RfZXhlYywgY2FsbFRvVGhyb3coX19jdF9leGVjLCBfX2N0X3BjKSk7IFwKKyAgICB9
IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVj
LCBwYykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9f
Y2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBJbnN0cnVjdGlvbiogX19jY2VfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoX19jY2VfZXhlYy0+Z2xvYmFsRGF0
YSgpLmV4Y2VwdGlvbikpICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTExJTlRfQ0FMTF9F
TkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2NjZV9leGVjLCBfX2NjZV9wYykpOyBc
CisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9SRVRVUk4oZXhlYywg
cGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0
YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9pZCogX19jcl9jYWxsVGFyZ2V0ID0gKGNh
bGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0FM
TF9DSEVDS19FWENFUFRJT04oX19jcl9leGVjLT5jYWxsZXJGcmFtZSgpLCBfX2NyX3BjKTsgIFwK
KyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NyX2V4ZWMsIF9fY3JfY2FsbFRhcmdldCk7
ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworZXh0ZXJuICJDIiBIZWxw
ZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVj
dGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIHByaW50ZigiJXAg
LyAlcDogZXhlY3V0aW5nIGJjIyV1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWRcbiIsCisgICAg
ICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBw
YyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLAorICAgICAgICAg
ICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bj
b2RlKSwKKyAgICAgICAgICAgZnJvbVdoZXJlLAorICAgICAgICAgICBvcGVyYW5kLAorICAgICAg
ICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQpOworICAgIExMSU5UX0VORCgpOworfQorCitleHRl
cm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIEpT
VmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKG9wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICBFbmNvZGVk
VmFsdWVEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgZGVzY3JpcHRvci5hc0ludDY0ID0gSlNW
YWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMl
dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkOiAlMDh4OiUwOHgiLAorICAgICAgICAgICBleGVj
LT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgcGMgLSBleGVjLT5j
b2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwKKyAgICAgICAgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAg
ICAgICAgIGZyb21XaGVyZSwKKyAgICAgICAgICAgb3BlcmFuZCwKKyAgICAgICAgICAgcGNbb3Bl
cmFuZF0udS5vcGVyYW5kLAorICAgICAgICAgICBkZXNjcmlwdG9yLmFzQml0cy50YWcsCisgICAg
ICAgICAgIGRlc2NyaXB0b3IuYXNCaXRzLnBheWxvYWQpOworI2lmbmRlZiBOREVCVUcKKyAgICBw
cmludGYoIjogJXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIHByaW50Zigi
XG4iKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJv
bG9ndWUpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiBwcm9sb2d1ZS5cbiIsIGV4ZWMtPmNv
ZGVCbG9jaygpLCBleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworc3RhdGljIHZvaWQgdHJh
Y2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVudCwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9
IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhl
Y3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgcHJpbnRm
KCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9
ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZVJlZ2lzdGVycyA9ICV1LlxuIiwKKyAg
ICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBjb21tZW50LCBjYWxsZWUsIGV4ZWN1dGFibGUsCisg
ICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rp
b25Qcm9sb2d1ZShleGVjLCAiY2FsbCBwcm9sb2d1ZSIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0
cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQoreworICAgIHRy
YWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBhcml0eSBjaGVjayIsIENvZGVGb3JDYWxs
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlD
aGVja19mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAi
Y29uc3RydWN0IGFyaXR5IGNoZWNrIiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKQoreworICAgIHByaW50ZigiJXAgLyAl
cDogZXhlY3V0aW5nIGJjIyV1LCAiLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAg
ICAgICAgICAgZXhlYywKKyAgICAgICAgICAgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKSk7CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50ZigiJXMsICIsIG9w
Y29kZU5hbWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNb
MF0udS5vcGNvZGUpXSk7CisjZWxzZQorICAgIHByaW50Zigib3AjJXUsICIsIGV4ZWMtPmdsb2Jh
bERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpKTsKKyNlbmRp
ZgorICAgIHByaW50Zigic2NvcGUgJXBcbiIsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2UpCit7CisgICAg
cHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV1LCBvcCMldSwgcmV0
dXJuIFBDIGlzICVwXG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAg
ICAgZXhlYywKKyAgICAgICAgICAgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGV4ZWMtPnJldHVyblBDKCku
dmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2lubGluZSBib29sIHNob3VsZEpJVChF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gWW91IGNhbiBtb2RpZnkgdGhpcyB0byB0dXJuIG9m
ZiBKSVR0aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0aGUgd29ybGQuCisgICAgcmV0dXJuIGV4ZWMt
Pmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlf
b3NyKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Cisg
ICAgCisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRlcmVk
IGVudHJ5X29zciB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywgY29kZUJs
b2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91
bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsK
KyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgY29kZUJsb2Nr
LT5qaXRDb21waWxlKGV4ZWMpOworICAgIGNvZGVCbG9jay0+aml0U29vbigpOworICAgIExMSU5U
X1JFVFVSTl9UV08oZXhlYy0+Y29kZUJsb2NrKCktPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRk
cmVzc0F0T2Zmc2V0KDApLCBleGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3Ny
X2FyaXR5Q2hlY2spCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKKyAgICAKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6
IEVudGVyZWQgZW50cnlfb3NyX2FyaXR5Q2hlY2sgd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4i
LCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgor
ICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGNvZGVCbG9jay0+ZG9u
dEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7Cisg
ICAgfQorICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMpKSB7CisjaWYgRU5BQkxF
KEpJVF9WRVJCT1NFX09TUikKKyAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBj
b21waWxlZC5cbiIpOworI2VuZGlmCisgICAgfQorICAgIGNvZGVCbG9jay0+aml0U29vbigpOwor
ICAgIExMSU5UX1JFVFVSTl9UV08oZXhlYy0+Y29kZUJsb2NrKCktPmdldEpJVENvZGVXaXRoQXJp
dHlDaGVjaygpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChsb29wX29zcikKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVC
bG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIl
cDogRW50ZXJlZCBsb29wX29zciB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9j
aywgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisgICAg
aWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGlt
ZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAg
CisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYykpIHsKKyNpZiBFTkFCTEUoSklU
X1ZFUkJPU0VfT1NSKQorICAgICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBp
bGVkLlxuIik7CisjZW5kaWYKKyAgICB9CisgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAg
CisgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5l
SklUKTsKKyAgICAKKyAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiBtYXA7Cisg
ICAgY29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRlY29kZShtYXApOworICAgIEJ5dGVjb2RlQW5k
TWFjaGluZU9mZnNldCogbWFwcGluZyA9IGJpbmFyeVNlYXJjaDxCeXRlY29kZUFuZE1hY2hpbmVP
ZmZzZXQsIHVuc2lnbmVkLCBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ6OmdldEJ5dGVjb2RlSW5k
ZXg+KG1hcC5iZWdpbigpLCBtYXAuc2l6ZSgpLCBwYyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSk7CisgICAgQVNTRVJUKG1hcHBpbmcpOworICAgIEFTU0VSVChtYXBwaW5nLT5t
X2J5dGVjb2RlSW5kZXggPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBjIC0gY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisgICAgCisgICAgdm9pZCoganVtcFRhcmdldCA9IGNv
ZGVCbG9jay0+Z2V0SklUQ29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQobWFwcGluZy0+
bV9tYWNoaW5lQ29kZU9mZnNldCk7CisgICAgQVNTRVJUKGp1bXBUYXJnZXQpOworICAgIAorICAg
IExMSU5UX1JFVFVSTl9UV08oanVtcFRhcmdldCwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKHJlcGxhY2UpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKKyAgICAKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6
IEVudGVyZWQgcmVwbGFjZSB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywg
Y29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisgICAgaWYg
KHNob3VsZEpJVChleGVjKSkgeworICAgICAgICBpZiAoIWNvZGVCbG9jay0+aml0Q29tcGlsZShl
eGVjKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgICAgICBwcmludGYo
IiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICAgICAgfQor
ICAgICAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29kZUJs
b2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjaykKK3sKKyNpZiBMTElOVF9IRUxQRVJfVFJB
Q0lORworICAgIHByaW50ZigiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0IHdpdGggZXhlYyA9ICVwLlxu
IiwgZXhlYyk7CisgICAgcHJpbnRmKCJDb2RlQmxvY2sgPSAlcC5cbiIsIGV4ZWMtPmNvZGVCbG9j
aygpKTsKKyAgICBwcmludGYoIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBleGVjLT5j
b2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgIHByaW50ZigiTnVtIHZhcnMg
PSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bVZhcnMpOworICAgIHByaW50ZigiQ3Vy
cmVudCBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJl
Z2lzdGVyRmlsZSgpLmVuZCgpKTsKKyNlbmRpZgorICAgIEFTU0VSVCgmZXhlYy0+cmVnaXN0ZXJz
KClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSA+IGV4ZWMtPmdsb2Jh
bERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOworICAgIGlmIChVTkxJ
S0VMWSghZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5ncm93
KCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3Rl
cnNdKSkpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4
ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhl
Yyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3coZXhlYyk7CisgICAgICAgIHBjID0gcmV0dXJu
VG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihleGVjKTsKKyAgICB9CisgICAgTExJTlRfRU5EX0lN
UEwoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKK3sK
KyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3Io
ZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENv
ZGVGb3JDYWxsKTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNh
bGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3coZXhl
Yyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPigxKSwgZXhl
Yyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICBFeGVjU3Rh
dGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmV4ZWMt
Pmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDb25zdHJ1
Y3QpOworICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJh
bWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0ZXJUaHJvdyhleGVjKTsKKyAg
ICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KDEpLCBleGVjKTsKKyAg
ICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQoreworI2lmIExMSU5UX0hFTFBFUl9UUkFD
SU5HCisgICAgcHJpbnRmKCJDcmVhdGluZyBhbiBhY3RpdmF0aW9uLCBleGVjID0gJXAhXG4iLCBl
eGVjKTsKKyNlbmRpZgorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlv
bjo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYywgc3RhdGljX2Nhc3Q8RnVuY3Rpb25F
eGVjdXRhYmxlKj4oZXhlYy0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSk7CisgICAg
ZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goYWN0aXZhdGlvbikp
OworICAgIExMSU5UX1JFVFVSTihKU1ZhbHVlKGFjdGl2YXRpb24pKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCit7CisgICAgSlNWYWx1ZSBhcmd1bWVu
dHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYykp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIocGNb
MV0udS5vcGVyYW5kKSA9IGFyZ3VtZW50czsKKyAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKQor
eworICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUo
KSk7CisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIENvbnN0cnVjdERhdGEgY29uc3Ry
dWN0RGF0YTsKKyAgICBBU1NFUlQoY29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKCktPmdldENvbnN0
cnVjdERhdGEoY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7
CisjZW5kaWYKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBKU1ZhbHVlIHBy
b3RvID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmIChwcm90by5pc09iamVjdCgpKQor
ICAgICAgICBzdHJ1Y3R1cmUgPSBhc09iamVjdChwcm90byktPmluaGVyaXRvcklEKGV4ZWMtPmds
b2JhbERhdGEoKSk7CisgICAgZWxzZQorICAgICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+
c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpOworICAgIAorICAg
IExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcykKK3sKKyAgICBKU1ZhbHVl
IHYxID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgp
KTsKKyAgICBMTElOVF9SRVRVUk4odjEudG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0
cnVjdEVtcHR5T2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
d19hcnJheSkKK3sKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgYml0d2lz
ZV9jYXN0PEpTVmFsdWUqPigmTExJTlRfT1AoMikpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIpCit7CisgICAgTExJTlRf
UkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1
ZmZlcihwY1syXS51Lm9wZXJhbmQpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25ld19yZWdleHApCit7CisgICAgUmVnRXhwKiByZWdFeHAgPSBleGVj
LT5jb2RlQmxvY2soKS0+cmVnZXhwKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFyZWdFeHAt
PmlzVmFsaWQoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlU3ludGF4RXJyb3IoZXhlYywg
IkludmFsaWQgZmxhZyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpOworICAgIExM
SU5UX1JFVFVSTihSZWdFeHBPYmplY3Q6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdF
eHBTdHJ1Y3R1cmUoKSwgcmVnRXhwKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
b3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9Cb29sZWFuKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSkK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KCFKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3Rl
cSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4
ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9sZXNzKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNz
PHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3NlcSkKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2dyZWF0ZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xl
c3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSkKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKyAxKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJ
TlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0ganNO
dW1iZXIocmVzdWx0ICsgMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9kZWMpCit7CisgICAgZG91YmxlIHJl
c3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9P
UCgyKSA9IGpzTnVtYmVyKHJlc3VsdCAtIDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihy
ZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKQorewor
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJl
cihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKQoreworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcigtTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIo
ZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2FkZCkKK3sKKyAgICBKU1Zh
bHVlIHYxID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2MiA9IExMSU5U
X09QX0MoMykuanNWYWx1ZSgpOworICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAg
cHJpbnRmKCJUcnlpbmcgdG8gYWRkICVzIiwgdjEuZGVzY3JpcHRpb24oKSk7CisgICAgcHJpbnRm
KCIgdG8gJXMuXG4iLCB2Mi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICh2
MS5pc1N0cmluZygpKSB7CisgICAgICAgIExMSU5UX1JFVFVSTigKKyAgICAgICAgICAgIHYyLmlz
U3RyaW5nKCkKKyAgICAgICAgICAgID8ganNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEpLCBhc1N0
cmluZyh2MikpCisgICAgICAgICAgICA6IGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIu
dG9QcmltaXRpdmVTdHJpbmcoZXhlYykpKTsKKyAgICB9CisgICAgCisgICAgaWYgKHYxLmlzTnVt
YmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHYx
LmFzTnVtYmVyKCkgKyB2Mi5hc051bWJlcigpKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpz
QWRkU2xvd0Nhc2UoZXhlYywgdjEsIHYyKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9tdWwpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLnRvTnVtYmVyKGV4ZWMpICogTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhl
YykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1YikKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZGl2KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAvIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2QpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYyksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KQoreworICAgIExMSU5UX1JF
VFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIDw8IExM
SU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9yc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hp
ZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgp
LnRvVUludDMyKGV4ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgJiBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9iaXRvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSB8IExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcikK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9J
bnQzMihleGVjKSBeIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCkKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNOdW1iZXIofkxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKK3sKKyAgICBKU1Zh
bHVlIGJhc2VWYWwgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyNpZm5kZWYgTkRFQlVHCisg
ICAgVHlwZUluZm8gdHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKTsKKyAgICBBU1NFUlQoIWJhc2VW
YWwuaXNPYmplY3QoKQorICAgICAgICAgICB8fCAhKHR5cGVJbmZvID0gYXNPYmplY3QoYmFzZVZh
bCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSk7Cisj
ZW5kaWYKKyAgICBMTElOVF9USFJPVyhjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihleGVjLCAiaW5z
dGFuY2VvZiIsIGJhc2VWYWwpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3Rh
bmNlb2YpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9w
SW5zdGFuY2VPZlNsb3coZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3R5cGVvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNUeXBlU3RyaW5n
Rm9yVmFsdWUoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCkKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKHYuaXNDZWxsKCkg
PyB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5kZWZp
bmVkKCkgOiB2LmlzVW5kZWZpbmVkKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2lzX2Jvb2xlYW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
aXNfbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNf
c3RyaW5nKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oaXNKU1N0cmluZyhMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX29i
amVjdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNPYmplY3RUeXBlKExMSU5U
X09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNf
ZnVuY3Rpb24pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rpb25UeXBl
KExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9w
SW4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSkKK3sKKyAgICBMTElO
VF9SRVRVUk4oQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+Y29kZUJsb2Nr
KCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcmVzb2x2ZV9za2lwKQoreworICAgIExMSU5UX1JFVFVSTigKKyAgICAgICAgQ29t
bW9uU2xvd1BhdGhzOjpvcFJlc29sdmVTa2lwKAorICAgICAgICAgICAgZXhlYywKKyAgICAgICAg
ICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCksCisgICAg
ICAgICAgICBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfZ2xvYmFsKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+
Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3Qo
KSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0udS5vcGVyYW5kOworICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgCisgICAgQVNTRVJUX1VO
VVNFRChzdHJ1Y3R1cmUsIHN0cnVjdHVyZSAhPSBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsK
KyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9w
ZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAKKyAgICBp
ZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKSB7Cisg
ICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCk7CisgICAg
ICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1
cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgc2xvdC5zbG90
QmFzZSgpID09IGdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgcGNbM10udS5zdHJ1Y3R1cmUu
c2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBw
Y1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IExMSU5UX1JFVFVSTihyZXN1bHQpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9USFJPVyhjcmVh
dGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBl
eGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIGlmIChw
Y1szXS51Lm9wZXJhbmQpIHsKKyAgICAgICAgSlNWYWx1ZSBiYXNlID0gSlNDOjpyZXNvbHZlQmFz
ZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCB0cnVlKTsKKyAgICAgICAgaWYgKCFi
YXNlKQorICAgICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFs
QXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICAgICAgTExJTlRfUkVUVVJO
KGJhc2UpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oSlNDOjpyZXNvbHZlQmFzZShl
eGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKK3sKKyAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChvYmplY3QpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2Nr
KCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIW9iamVjdC0+Z2V0UHJv
cGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRl
RXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVf
d2l0aF9iYXNlKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjpvcFJl
c29sdmVXaXRoQmFzZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51
Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKK3sKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aFRoaXMoZXhlYywgZXhlYy0+Y29kZUJs
b2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0OworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKQorewor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRp
ZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1
ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgIExMSU5UX09QKDEpID0gcmVzdWx0OworCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQor
ICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkKKyAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgp
ID09IGJhc2VWYWx1ZQorICAgICAgICAmJiBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFBy
b3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwg
PSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFz
ZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlz
VW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKKyAgICAgICAgICAgIHBjWzRdLnUu
c3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBwY1s1XS51
Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9j
ay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
TExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7
CisgICAgTExJTlRfUkVUVVJOKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0g
Y29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xv
dChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBpZiAocGNbOF0udS5vcGVyYW5kKQor
ICAgICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIGVsc2UKKyAgICAg
ICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNs
b3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIGlmIChiYXNlVmFs
dWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAgIAor
ICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisg
ICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAg
ICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygp
CisgICAgICAgICAgICAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAgICAgICAgICAg
CisgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9w
ZXJ0eSkgeworICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAm
JiBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBz
dHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJ
RCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFu
ZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUg
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWwpOworICAgICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAg
ICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCksIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
cGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsK
KyAgICAgICAgICAgICAgICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAg
ICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hh
aW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpOworICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoY2hhaW4pOworICAgICAgICAgICAgICAgICAgICBwY1s3XS51LnN0cnVjdHVyZUNo
YWluLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIHBj
WzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNW
YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpCit7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVjdCog
YmFzZU9iamVjdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvT2JqZWN0KGV4ZWMpOworICAg
IGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9w
ZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVy
YW5kKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgaWYgKCFjb3VsZERlbGV0
ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVh
dGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKworaW5saW5lIEpTVmFsdWUg
Z2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJz
Y3JpcHQpCit7CisgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0
LmlzU3RyaW5nKCkpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5h
c0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KGV4ZWMsIGFzU3RyaW5nKHN1YnNjcmlwdCktPnZh
bHVlKGV4ZWMpKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAg
IGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2Ny
aXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNT
dHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICByZXR1cm4gYXNT
dHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAorICAgICAgICBp
ZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNh
bkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzQnl0ZUFycmF5KGJhc2VWYWx1
ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGJhc2VWYWx1
ZS5nZXQoZXhlYywgaSk7CisgICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhl
Yywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZhbHVlLmdldChl
eGVjLCBwcm9wZXJ0eSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFs
KQoreworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpCit7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBM
TElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhcmd1bWVudHMpIHsKKyAgICAgICAgYXJn
dW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKTsKKyAg
ICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIExMSU5UX09QKDIpID0gYXJn
dW1lbnRzOworICAgICAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdp
c3RlcihwY1syXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAgICB9CisgICAgCisgICAgTExJ
TlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIGFyZ3VtZW50cywgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSkKK3sKKyAg
ICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElO
VF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9i
eV92YWwpCit7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0
YSgpOworICAgIAorICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisgICAgaWYg
KExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1
YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1ZSkpIHsK
KyAgICAgICAgICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1ZSk7CisgICAg
ICAgICAgICBpZiAoanNBcnJheS0+Y2FuU2V0SW5kZXgoaSkpCisgICAgICAgICAgICAgICAganNB
cnJheS0+c2V0SW5kZXgoZ2xvYmFsRGF0YSwgaSwgdmFsdWUpOworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5kZXgoanNBcnJheSwgZXhlYywgaSwgdmFs
dWUpOworICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlz
SlNCeXRlQXJyYXkoYmFzZVZhbHVlKQorICAgICAgICAgICAgJiYgYXNCeXRlQXJyYXkoYmFzZVZh
bHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAgICAgICAgICAgIEpTQnl0ZUFycmF5KiBqc0J5
dGVBcnJheSA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAodmFsdWUu
aXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZh
bHVlLmFzSW50MzIoKSk7CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAg
IGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5hc051bWJlcigpKTsKKyAgICAgICAgICAg
ICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBiYXNl
VmFsdWUucHV0KGV4ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQor
ICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4
ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5w
dXQoZXhlYywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpCit7CisgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVj
dCA9IGJhc2VWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICAKKyAgICBKU1ZhbHVlIHN1YnNjcmlw
dCA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAgIGJvb2wgY291bGREZWxldGU7
CisgICAgCisgICAgdWludDMyX3QgaTsKKyAgICBpZiAoc3Vic2NyaXB0LmdldFVJbnQzMihpKSkK
KyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQ
cm9wZXJ0eUJ5SW5kZXgoYmFzZU9iamVjdCwgZXhlYywgaSk7CisgICAgZWxzZSB7CisgICAgICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4
ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMsIHByb3BlcnR5KTsKKyAgICB9CisgICAg
CisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2Rl
KCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRv
IGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihj
b3VsZERlbGV0ZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4
KQoreworICAgIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnB1dChleGVjLCBwY1syXS51Lm9wZXJh
bmQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIpCit7CisgICAgQVNTRVJUKExMSU5UX09Q
KDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2Jq
ZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVj
LT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEFTU0VSVChM
TElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgYmFzZU9iai0+bWV0aG9kVGFi
bGUoKS0+ZGVmaW5lR2V0dGVyKGJhc2VPYmosIGV4ZWMsIGlkZW50LCBhc09iamVjdChMTElOVF9P
UCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpCit7CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFs
dWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5U
X09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxv
Y2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEFTU0VSVChMTElOVF9PUCgz
KS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVm
aW5lU2V0dGVyKGJhc2VPYmosIGV4ZWMsIGlkZW50LCBhc09iamVjdChMTElOVF9PUCgzKS5qc1Zh
bHVlKCkpLCAwKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2ptcF9zY29wZXMpCit7CisgICAgdW5zaWduZWQgY291bnQgPSBwY1sxXS51Lm9wZXJhbmQ7
CisgICAgU2NvcGVDaGFpbk5vZGUqIHRtcCA9IGV4ZWMtPnNjb3BlQ2hhaW4oKTsKKyAgICB3aGls
ZSAoY291bnQtLSkKKyAgICAgICAgdG1wID0gdG1wLT5wb3AoKTsKKyAgICBleGVjLT5zZXRTY29w
ZUNoYWluKHRtcCk7CisgICAgcGMgKz0gcGNbMl0udS5vcGVyYW5kOworICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpCit7CisgICAgTExJTlRfQlJB
TkNIKG9wX2p0cnVlLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZhbHNlKQoreworICAgIExMSU5UX0JSQU5D
SChvcF9qZmFsc2UsICFMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3MpCit7CisgICAgTExJTlRfQlJBTkNI
KG9wX2psZXNzLCBqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bmxlc3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzcywgIWpzTGVzczx0cnVlPihleGVj
LCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKQoreworICAgIExMSU5UX0JSQU5D
SChvcF9qZ3JlYXRlciwganNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2puZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyLCAhanNMZXNz
PGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpCit7CisgICAg
TExJTlRfQlJBTkNIKG9wX2psZXNzZXEsIGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0Mo
MSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfam5sZXNzZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzc2Vx
LCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRl
cmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlcmVxLCBqc0xlc3NFcTxmYWxzZT4o
ZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSkKK3sKKyAgICBMTElO
VF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEsICFqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKQoreworICAgIEpTVmFsdWUgc2NydXRpbmVlID0g
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHNjcnV0aW5lZS5pc0RvdWJsZSgp
KTsKKyAgICBkb3VibGUgdmFsdWUgPSBzY3J1dGluZWUuYXNEb3VibGUoKTsKKyAgICBpbnQzMl90
IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpOworICAgIGludCBkZWZhdWx0
T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlmICh2YWx1ZSA9PSBpbnRWYWx1ZSkgewor
ICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAg
ICBwYyArPSBjb2RlQmxvY2stPmltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJh
bmQpLm9mZnNldEZvclZhbHVlKGludFZhbHVlLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9IGVsc2UK
KyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpCit7CisgICAgSlNWYWx1ZSBzY3J1
dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9
IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAoIXNjcnV0aW5lZS5pc1N0cmluZygpKQorICAgICAg
ICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIGVsc2UgeworICAgICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2RlQmxvY2stPnN0
cmluZ1N3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGFzU3Ry
aW5nKHNjcnV0aW5lZSktPnZhbHVlKGV4ZWMpLmltcGwoKSwgZGVmYXVsdE9mZnNldCk7CisgICAg
fQorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1
bmMpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAg
ICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZQorICAgICAgICAg
ICB8fCAhY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkKKyAgICAgICAgICAgfHwgZXhl
Yy0+dW5jaGVja2VkUihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkp
OworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGluZyBmdW5jdGlv
biFcbiIpOworI2VuZGlmCisgICAgTExJTlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNs
KHBjWzJdLnUub3BlcmFuZCktPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApCit7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbMl0udS5vcGVyYW5kKTsKKyAg
ICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVuY3Rpb24tPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFp
bigpKTsKKyAgICAKKyAgICBpZiAoIWZ1bmN0aW9uLT5uYW1lKCkuaXNOdWxsKCkpIHsKKyAgICAg
ICAgSlNTdGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25TY29wZU9iamVjdCA9IEpTU3RhdGljU2Nv
cGVPYmplY3Q6OmNyZWF0ZShleGVjLCBmdW5jdGlvbi0+bmFtZSgpLCBmdW5jLCBSZWFkT25seSB8
IERvbnREZWxldGUpOworICAgICAgICBmdW5jLT5zZXRTY29wZShleGVjLT5nbG9iYWxEYXRhKCks
IGZ1bmMtPnNjb3BlKCktPnB1c2goZnVuY3Rpb25TY29wZU9iamVjdCkpOworICAgIH0KKyAgICAK
KyAgICBMTElOVF9SRVRVUk4oZnVuYyk7Cit9CisKK3N0YXRpYyBIZWxwZXJSZXR1cm5UeXBlIGhh
bmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1Zh
bHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKworICAgIGV4ZWNDYWxsZWUtPnNldFNj
b3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxv
Y2soMCk7CisKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShjYWxs
ZWUsIGNhbGxEYXRhKTsKKyAgICAKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBl
SlMpOworICAgIAorICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVIb3N0KSB7CisgICAg
ICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2Rl
KGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9j
YXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgICAgIH0KKyAgICAgICAg
CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAgICAgcHJpbnRmKCJDYWxsIGNhbGxlZSBp
cyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgor
CisgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpOworICAgICAgICBMTElO
VF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihleGVjLCBjYWxs
ZWUpKTsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAg
ICAKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQ29uc3RydWN0VHlwZSBj
b25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShjYWxsZWUsIGNvbnN0cnVjdERhdGEpOwor
ICAgIAorICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGVKUyk7CisgICAg
CisgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZUhvc3QpIHsKKyAgICAgICAg
Z2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1
Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgIExMSU5UX0NBTExf
UkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSk7CisgICAgfQorICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisg
ICAgICAgIHByaW50ZigiQ29uc3RydWN0b3IgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xu
IiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICBBU1NFUlQoY29uc3RydWN0
VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSk7CisgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBw
YywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7Cit9CisKK2lubGlu
ZSBIZWxwZXJSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3Ry
dWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFz
VmFsdWUsIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSAwKQoreworICAgIEpTQ2Vs
bCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOwor
ICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCisgICAgICAgIHJldHVybiBoYW5kbGVIb3N0
Q2FsbChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwga2luZCk7CisgICAgCisgICAgSlNG
dW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAg
ZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCkpOworICAg
IEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7CisgICAg
CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSAwOworICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAg
ICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNz
Rm9yQ2FsbCgpOworICAgIGVsc2UgeworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0
aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFi
bGUpOworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbXBp
bGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29wZSgpLCBraW5kKTsKKyAgICAgICAgaWYgKGVy
cm9yKQorICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjQ2FsbGVlLT5jYWxsZXJGcmFt
ZSgpLCBwYywgZXJyb3IpOworICAgICAgICBjb2RlQmxvY2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxl
LT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7
CisgICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwg
c3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCisgICAgICAg
ICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlV2l0aEFy
aXR5Q2hlY2tGb3Ioa2luZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVQdHIgPSBm
dW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNh
bGwoKTsKKyAgICB9CisgICAgCisgICAgaWYgKGNhbGxMaW5rSW5mbykgeworICAgICAgICBpZiAo
Y2FsbExpbmtJbmZvLT5pc09uTGlzdCgpKQorICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5yZW1v
dmUoKTsKKyAgICAgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVyID0gZXhlY0NhbGxlZS0+Y2FsbGVy
RnJhbWUoKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5jYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmds
b2JhbERhdGEoKSwgZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBj
YWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0
cjsKKyAgICAgICAgaWYgKGNvZGVCbG9jaykKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0lu
Y29taW5nQ2FsbChjYWxsTGlua0luZm8pOworICAgIH0KKyAgICAKKyAgICBMTElOVF9DQUxMX1JF
VFVSTihleGVjQ2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKK30KKwor
aW5saW5lIEhlbHBlclJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBJbnN0
cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICAvLyBUaGlz
IG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAvLyAtIEZpZ3Vy
ZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAt
IElmIHBvc3NpYmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAgIC8vIC0gUmV0
dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBj
YWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0Mo
MSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBw
Y1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRS
KFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+
c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgCisgICAgQVNTRVJUKHBjWzRdLnUuY2FsbExpbmtJ
bmZvKTsKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVB
c1ZhbHVlLCBwY1s0XS51LmNhbGxMaW5rSW5mbyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jYWxsKQoreworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNh
bGwpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0KQoreworICAgIHJl
dHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0cnVjdCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0
bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUgd2hpbGUgcmVzcGVjdGluZyB0aGUgdmFy
aWFibGUgYXJndW1lbnRzLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNv
bXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGlu
ZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAg
IEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAor
ICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAorICAgICAgICBleGVjLCAm
ZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwKKyAgICAgICAg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBwY1s0XS51
Lm9wZXJhbmQpOworICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKTsKKyAg
ICAKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNh
bGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAg
ZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0
d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpKTsK
KyAgICAKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwg
Y2FsbGVlQXNWYWx1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwp
Cit7CisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOwor
ICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7
CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAg
IAorICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUu
b3BlcmFuZCk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhl
Y0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVl
OworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAg
ICBleGVjQ2FsbGVlLT5zZXRSZXR1cm5QQyhiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbGxp
bnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2so
MCk7CisgICAgZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRh
ZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX2V2
YWwpKTsKKyAgICAKKyAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2Jh
bEZ1bmNFdmFsKSkKKyAgICAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29k
ZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworICAgIAorICAgIGdsb2JhbERhdGEuaG9zdENhbGxS
ZXR1cm5WYWx1ZSA9IGV2YWwoZXhlY0NhbGxlZSk7CisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhl
Y0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24p
Cit7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkp
OworICAgIEpTVmFsdWUgYWN0aXZhdGlvblZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOwor
ICAgIGlmICghYWN0aXZhdGlvblZhbHVlKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHYgPSBleGVj
LT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQp
KS5qc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGlmICghZXhlYy0+Y29kZUJsb2NrKCktPmlzU3Ry
aWN0TW9kZSgpKQorICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT50ZWFyT2ZmKGV4ZWMp
OworICAgICAgICB9CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICBKU0FjdGl2YXRp
b24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVlKTsKKyAgICBhY3Rp
dmF0aW9uLT50ZWFyT2ZmKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgaWYgKEpTVmFsdWUgdiA9
IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3Bl
cmFuZCkpLmpzVmFsdWUoKSkKKyAgICAgICAgYXNBcmd1bWVudHModiktPmRpZFRlYXJPZmZBY3Rp
dmF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgYWN0aXZhdGlvbik7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCit7Cisg
ICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkgJiYgIWV4ZWMtPmNv
ZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIGFzQXJndW1lbnRzKGV4ZWMt
PnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkp
LmpzVmFsdWUoKSktPnRlYXJPZmYoZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5n
KGV4ZWMsICZMTElOVF9PUCgyKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpCit7CisgICAgTExJTlRfUkVUVVJOKExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dldF9wbmFtZXMpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNW
YWx1ZSgpOworICAgIGlmICh2LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcGMgKz0g
cGNbNV0udS5vcGVyYW5kOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAg
SlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gby0+c3RydWN0dXJlKCk7CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0
eU5hbWVJdGVyYXRvciA9IHN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpOworICAgIGlmICgh
anNQcm9wZXJ0eU5hbWVJdGVyYXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQ
cm90b3R5cGVDaGFpbigpICE9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCisgICAg
ICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVh
dGUoZXhlYywgbyk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBKU1ZhbHVlKGpzUHJvcGVydHlO
YW1lSXRlcmF0b3IpOworICAgIExMSU5UX09QKDIpID0gSlNWYWx1ZShvKTsKKyAgICBMTElOVF9P
UCgzKSA9IFJlZ2lzdGVyOjp3aXRoSW50KDApOworICAgIExMSU5UX09QKDQpID0gUmVnaXN0ZXI6
OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAgICAKKyAgICBwYyAr
PSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFtZXMpOworICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSkKK3sKKyAgICBKU09iamVjdCogYmFz
ZSA9IGFzT2JqZWN0KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CisgICAgSlNTdHJpbmcqIHByb3Bl
cnR5ID0gYXNTdHJpbmcoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBpZiAoYmFzZS0+aGFz
UHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eS0+dmFsdWUoZXhlYykpKSkg
eworICAgICAgICAvLyBHbyB0byB0YXJnZXQuCisgICAgICAgIHBjICs9IHBjWzZdLnUub3BlcmFu
ZDsKKyAgICB9IC8vIEVsc2UsIGRvbid0IGNoYW5nZSB0aGUgUEMsIHNvIHRoZSBpbnRlcnByZXRl
ciB3aWxsIHJlbG9vcC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3B1c2hfc2NvcGUpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMSkuanNWYWx1
ZSgpOworICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKKyAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9IG87CisgICAgZXhlYy0+c2V0
U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2gobykpOworICAgIAorICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9wX3Njb3BlKQoreworICAg
IGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wb3AoKSk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSkK
K3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpT
T2JqZWN0KiBzY29wZSA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBjb2RlQmxv
Y2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpLCBE
b250RGVsZXRlKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+
cHVzaChzY29wZSkpOworICAgIExMSU5UX1JFVFVSTihzY29wZSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl90aHJvdykKK3sKKyAgICBMTElOVF9USFJPVyhMTElOVF9PUF9DKDEpLmpz
VmFsdWUoKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2Vf
ZXJyb3IpCit7CisgICAgTExJTlRfVEhST1coY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCkudG9TdHJpbmcoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2RlYnVnKQoreworICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBjWzFdLnUub3Bl
cmFuZDsKKyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOworICAgIGludCBsYXN0
TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50
ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJ
RCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7CisgICAgKCpQcm9m
aWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT53aWxsRXhlY3V0ZShleGVjLCBMTElO
VF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVk
UHJvZmlsZXJSZWZlcmVuY2UoKSktPmRpZEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1
ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRIZWxwZXJzX2gKKyNkZWZpbmUgTExJ
bnRIZWxwZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNw
YWNlIExMSW50IHsKKwordHlwZWRlZiBpbnQ2NF90IEhlbHBlclJldHVyblR5cGU7CisKK2V4dGVy
biAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSosIElu
c3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworZXh0ZXJuICJDIiBIZWxw
ZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwg
aW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworCisjZGVmaW5lIExMSU5UX0hFTFBFUl9ERUNM
KG5hbWUpIFwKKyAgICBleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfIyNuYW1lKEV4
ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFj
ZV9wcm9sb2d1ZSk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9m
b3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwp
OworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKHRyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2Up
OworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5
X29zcl9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3NyKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKHJlcGxhY2UpOworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVj
ayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Ny
ZWF0ZV9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25ld19vYmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJh
eSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZlcik7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9s
ZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2luYyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcHJlX2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9pbmMpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl90b19qc251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9kaXYpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbHNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2JpdGFuZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3IpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2JpdHhvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5
cGVvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19udW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZyk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19mdW5jdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4pOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Jlc29sdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVf
c2tpcCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVz
b2x2ZV93aXRoX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90
aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfaWQpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wdXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X2J5X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFsKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wdXRfYnlfaW5kZXgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2ptcF9zY29wZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2psZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2pncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0
ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2pubGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVx
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfc3dpdGNoX2ltbSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNo
X2NoYXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXdfZnVuY19leHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2Fs
bF92YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
c3RyY2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X25leHRfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHVzaF9uZXdfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2RlYnVnKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxl
X3dpbGxfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCk7
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnRIZWxwZXJz
X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNv
bmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9m
ZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisjZGVmaW5lIExMSW50T2ZmbGluZUFzbUNvbmZpZ19o
CisKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBDUFUoWDg2KQorI2RlZmluZSBPRkZM
SU5FX0FTTV9YODYgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDAKKyNlbmRpZgor
CisjaWYgQ1BVKEFSTXY3KQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAxCisjZWxzZQorI2Rl
ZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZG
TElORV9BU01fQVNTRVJUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUoQklHX0VORElBTikK
KyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5F
X0FTTV9CSUdfRU5ESUFOIDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKExMSU5UX09TUl9UT19KSVQp
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhFQ1VUSU9OX1RSQUNJ
TkcKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQorI2Vsc2UKKyNkZWZp
bmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisKKyNlbmRpZiAvLyBM
TEludE9mZmxpbmVBc21Db25maWdfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJBbGxvY2F0
aW9uU3BhY2UuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxl
LmgiCisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVk
ZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDZWxsLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRl
ICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNs
dWRlICJKU3R5cGVJbmZvLmgiCisjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgorI2luY2x1
ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCisjaW5jbHVk
ZSAiU2NvcGVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0cnVj
dHVyZUNoYWluLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSW1wbC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBPRkZMSU5FX0FT
TV9PRkZTRVRPRihjbGF6eiwgZmllbGQpIE9CSkVDVF9PRkZTRVRPRihjbGF6eiwgZmllbGQpCisK
K2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkKiBkdW1teSgpOworfTsKKworY29uc3QgdW5zaWduZWQqIExMSW50T2Zmc2V0c0V4
dHJhY3Rvcjo6ZHVtbXkoKQoreworI2luY2x1ZGUgIkxMSW50RGVzaXJlZE9mZnNldHMuaCIKKyAg
ICByZXR1cm4gZXh0cmFjdG9yVGFibGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCitpbnQg
bWFpbihpbnQsIGNoYXIqKikKK3sKKyAgICAvLyBPdXQgb2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRp
b24sIG1ha2Ugc3VyZSB0aGF0IExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSBpcyBsaXZl
LAorICAgIC8vIGFuZCB0aGUgZXh0cmFjdG9yVGFibGUgaXMgbGl2ZSwgdG9vLgorICAgIHByaW50
ZigiJXBcbiIsIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpKTsKKyAgICByZXR1
cm4gMDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtz
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRo
dW5rcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkxMSW50VGh1bmtzLmgiCisKKyNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5oIgorI2luY2x1
ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
dm9pZCAoKnRhcmdldCkoKSkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CisgICAgCisgICAg
Ly8gRklYTUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0IG9uIFg4Niwg
YnV0IEknbSBub3Qgc3VyZSBJIGNhcmUuCisgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRy
dXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSwgSlNJbnRlcmZhY2VKSVQ6
OnJlZ1QwKTsKKyAgICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6cmVnVDApOworICAgIAorICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZqaXQpOworICAgIHJldHVybiBw
YXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1
bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
KQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxE
YXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKK30KKworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRo
SnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKTsK
K30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVj
a1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4g
Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50
cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJu
IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2V2YWxfcHJvbG9ndWUp
OworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3Io
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0
aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKTsKK30KKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludFRodW5r
c19oCisjZGVmaW5lIExMSW50VGh1bmtzX2gKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRhOworCituYW1l
c3BhY2UgTExJbnQgeworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50
cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBm
dW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0
YSopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50VGh1
bmtzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjM0
NyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisj
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjIENy
YXNoIGNvdXJzZSBvbiB0aGUgbGFuZ3VhZ2UgdGhhdCB0aGlzIGlzIHdyaXR0ZW4gaW4gKHdoaWNo
IEkganVzdCBjYWxsCisjICJhc3NlbWJseSIgZXZlbiB0aG91Z2ggaXQncyBtb3JlIHRoYW4gdGhh
dCk6CisjCisjIC0gTW9zdGx5IGdhcy1zdHlsZSBvcGVyYW5kIG9yZGVyaW5nLiBUaGUgbGFzdCBv
cGVyYW5kIHRlbmRzIHRvIGJlIHRoZQorIyAgIGRlc3RpbmF0aW9uLiBTbyAiYSA6PSBiIiBpcyB3
cml0dGVuIGFzICJtb3YgYiwgYSIuIEJ1dCB1bmxpa2UgZ2FzLAorIyAgIGNvbXBhcmlzb25zIGFy
ZSBpbi1vcmRlciwgc28gImlmIChhIDwgYikiIGlzIHdyaXR0ZW4gYXMKKyMgICAiYmlsdCBhLCBi
LCAuLi4iLgorIworIyAtICJiIiA9IGJ5dGUsICJoIiA9IDE2LWJpdCB3b3JkLCAiaSIgPSAzMi1i
aXQgd29yZCwgInAiID0gcG9pbnRlci4KKyMgICBDdXJyZW50bHkgdGhpcyBpcyBqdXN0IDMyLWJp
dCBzbyAiaSIgYW5kICJwIiBhcmUgaW50ZXJjaGFuZ2VhYmxlCisjICAgZXhjZXB0IHdoZW4gYW4g
b3Agc3VwcG9ydHMgb25lIGJ1dCBub3QgdGhlIG90aGVyLgorIworIyAtIEluIGdlbmVyYWwsIHZh
bGlkIG9wZXJhbmRzIGZvciBtYWNybyBpbnZvY2F0aW9ucyBhbmQgaW5zdHJ1Y3Rpb25zIGFyZQor
IyAgIHJlZ2lzdGVycyAoZWcgInQwIiksIGFkZHJlc3NlcyAoZWcgIjRbdDBdIiksIGJhc2UtaW5k
ZXggYWRkcmVzc2VzCisjICAgKGVnICI3W3QwLCB0MSwgMl0iKSwgYWJzb2x1dGUgYWRkcmVzc2Vz
IChlZyAiMHhhMDAwMDAwMFtdIiksIG9yIGxhYmVscworIyAgIChlZyAiX2ZvbyIgb3IgIi5mb28i
KS4gTWFjcm8gaW52b2NhdGlvbnMgY2FuIGFsc28gdGFrZSBhbm9ueW1vdXMKKyMgICBtYWNyb3Mg
YXMgb3BlcmFuZHMuIEluc3RydWN0aW9ucyBjYW5ub3QgdGFrZSBhbm9ueW1vdXMgbWFjcm9zLgor
IworIyAtIExhYmVscyBtdXN0IGhhdmUgbmFtZXMgdGhhdCBiZWdpbiB3aXRoIGVpdGhlciAiXyIg
b3IgIi4iLiAgQSAiLiIgbGFiZWwKKyMgICBpcyBsb2NhbCBhbmQgZ2V0cyByZW5hbWVkIGJlZm9y
ZSBjb2RlIGdlbiB0byBtaW5pbWl6ZSBuYW1lc3BhY2UKKyMgICBwb2xsdXRpb24uIEEgIl8iIGxh
YmVsIGlzIGFuIGV4dGVybiBzeW1ib2wgKGkuZS4gIi5nbG9ibCIpLiBUaGUgIl8iCisjICAgbWF5
IG9yIG1heSBub3QgYmUgcmVtb3ZlZCBkdXJpbmcgY29kZSBnZW4gZGVwZW5kaW5nIG9uIHdoZXRo
ZXIgdGhlIGFzbQorIyAgIGNvbnZlbnRpb25zIGZvciBDIG5hbWUgbWFuZ2xpbmcgb24gdGhlIHRh
cmdldCBwbGF0Zm9ybSBtYW5kYXRlIGEgIl8iCisjICAgcHJlZml4LgorIworIyAtIEEgIm1hY3Jv
IiBpcyBhIGxhbWJkYSBleHByZXNzaW9uLCB3aGljaCBtYXkgYmUgZWl0aGVyIGFub255bW91cyBv
cgorIyAgIG5hbWVkLiBCdXQgdGhpcyBoYXMgY2F2ZWF0cy4gIm1hY3JvIiBjYW4gdGFrZSB6ZXJv
IG9yIG1vcmUgYXJndW1lbnRzLAorIyAgIHdoaWNoIG1heSBiZSBtYWNyb3Mgb3IgYW55IHZhbGlk
IG9wZXJhbmRzLCBidXQgaXQgY2FuIG9ubHkgcmV0dXJuCisjICAgY29kZS4gQnV0IHlvdSBjYW4g
ZG8gVHVyaW5nLWNvbXBsZXRlIHRoaW5ncyB2aWEgY29udGludWF0aW9uIHBhc3NpbmcKKyMgICBz
dHlsZTogIm1hY3JvIGZvbyAoYSwgYikgYihhKSBlbmQgZm9vKGZvbywgZm9vKSIuIEFjdHVhbGx5
LCBkb24ndCBkbworIyAgIHRoYXQsIHNpbmNlIHlvdSdsbCBqdXN0IGNyYXNoIHRoZSBhc3NlbWJs
ZXIuCisjCisjIC0gQW4gImlmIiBpcyBhIGNvbmRpdGlvbmFsIG9uIHNldHRpbmdzLiBBbnkgaWRl
bnRpZmllciBzdXBwbGllZCBpbiB0aGUKKyMgICBwcmVkaWNhdGUgb2YgYW4gImlmIiBpcyBhc3N1
bWVkIHRvIGJlIGEgI2RlZmluZSB0aGF0IGlzIGF2YWlsYWJsZQorIyAgIGR1cmluZyBjb2RlIGdl
bi4gU28geW91IGNhbid0IHVzZSAiaWYiIGZvciBjb21wdXRhdGlvbiBpbiBhIG1hY3JvLCBidXQK
KyMgICB5b3UgY2FuIHVzZSBpdCB0byBzZWxlY3QgZGlmZmVyZW50IHBpZWNlcyBvZiBjb2RlIGZv
ciBkaWZmZXJlbnQKKyMgICBwbGF0Zm9ybXMuCisjCisjIC0gQXJndW1lbnRzIHRvIG1hY3JvcyBm
b2xsb3cgbGV4aWNhbCBzY29waW5nIHJhdGhlciB0aGFuIGR5bmFtaWMgc2NvcGluZy4KKyMgICBD
b25zdCdzIGFsc28gZm9sbG93IGxleGljYWwgc2NvcGluZyBhbmQgbWF5IG92ZXJyaWRlIChoaWRl
KSBhcmd1bWVudHMKKyMgICBvciBvdGhlciBjb25zdHMuIEFsbCB2YXJpYWJsZXMgKGFyZ3VtZW50
cyBhbmQgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBvcGVyYW5kcy4gQWRkaXRpb25h
bGx5LCBhcmd1bWVudHMgKGJ1dCBub3QgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBt
YWNyb3MuCisKKworIyBUaGVzZSBkZWNsYXJhdGlvbnMgbXVzdCBtYXRjaCBpbnRlcnByZXRlci9S
ZWdpc3RlckZpbGUuaC4KK2NvbnN0IENhbGxGcmFtZUhlYWRlclNpemUgPSA0OAorY29uc3QgQXJn
dW1lbnRDb3VudCA9IC00OAorY29uc3QgQ2FsbGVyRnJhbWUgPSAtNDAKK2NvbnN0IENhbGxlZSA9
IC0zMgorY29uc3QgU2NvcGVDaGFpbiA9IC0yNAorY29uc3QgUmV0dXJuUEMgPSAtMTYKK2NvbnN0
IENvZGVCbG9jayA9IC04CisKK2NvbnN0IFRoaXNBcmd1bWVudE9mZnNldCA9IC1DYWxsRnJhbWVI
ZWFkZXJTaXplIC0gOAorCisjIERlY2xhcmUgc29tZSBhbGlhc2VzIGZvciB0aGUgcmVnaXN0ZXJz
IHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAorCisjIE9mZnNldHMgbmVlZGVkIGZvciByZWFz
b25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRpb24uCitpZiBCSUdfRU5ESUFOCisgICAgY29u
c3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSA0CitlbHNlCisgICAg
Y29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSAwCitlbmQKKwor
IyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCitjb25zdCBJbnQzMlRhZyA9IC0xCitj
b25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51bGxUYWcgPSAtMworY29uc3QgVW5kZWZpbmVk
VGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQorY29uc3QgRW1wdHlWYWx1ZVRhZyA9IC02Citj
b25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29uc3QgTG93ZXN0VGFnID0gRGVsZXRlZFZhbHVl
VGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25zdCBTdHJpbmdUeXBlID0gNQorY29uc3QgT2Jq
ZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFncyBjb25zdGFudHMuCitjb25zdCBNYXNxdWVyYWRl
c0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMgorY29uc3Qg
SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDgKKworIyBIZWFwIGFsbG9jYXRpb24gY29u
c3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0gMworCisjIEJ5dGVj
b2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3QgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgg
PSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNvbnN0YW50cy4KK2NvbnN0IEdsb2JhbENvZGUg
PSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0IEZ1bmN0aW9uQ29kZSA9IDIKKworIyBUaGUg
aW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0aGUgYXJndW1lbnQgY291bnQuCitj
b25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRhZ09mZnNldAorCisjIFRoaXMg
bXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25zdCBWZWN0b3JTaXplT2Zmc2V0ID0gMAorY29u
c3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisjIFN0cmluZyBmbGFncy4KK2NvbnN0IEhhc2hG
bGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxpdGllcworbWFjcm8gY3Jhc2goKQorICAgIHN0
b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3ZlIDAsIHQwCisgICAgY2FsbCB0MAorZW5kCisK
K21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAg
YXNzZXJ0aW9uKC5vaykKKyAgICAgICAgY3Jhc2goKQorICAgIC5vazoKKyAgICBlbmQKK2VuZAor
CittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVzdGluYXRpb25SZWdpc3Rl
cikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVyCisg
ICAgZWxzaWYgWDg2CisgICAgICAgIHBvcCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzZQor
ICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIHJlc3RvcmVSZXR1cm5BZGRyZXNz
QmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUg
c291cmNlUmVnaXN0ZXIsIGxyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHB1c2ggc291cmNlUmVn
aXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKworbWFjcm8gZGlz
cGF0Y2goYWR2YW5jZSkKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQworICAgIGptcCBbUENdCitl
bmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHBjT2Zmc2V0KQorICAgIGxzaGlm
dGkgMiwgcGNPZmZzZXQKKyAgICBhZGRwIHBjT2Zmc2V0LCBQQworICAgIGptcCBbUENdCitlbmQK
KworbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZzZXQpCisgICAgbG9hZGkgcGNPZmZzZXQsIHQw
CisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQwKQorZW5kCisKK21hY3JvIGRpc3BhdGNo
QWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBD
CisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBjQ2FsbDIoZnVuY3Rpb24sIGFyZzEsIGFyZzIp
CisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIs
IHQxCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAorICAgICAgICBwb2tlIGFy
ZzIsIDEKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlv
bgorZW5kCisKKyMgVGhpcyBiYXJlbHkgd29ya3MuIGFyZzMgYW5kIGFyZzQgc2hvdWxkIHByb2Jh
Ymx5IGJlIGltbWVkaWF0ZXMuCittYWNybyBjQ2FsbDQoZnVuY3Rpb24sIGFyZzEsIGFyZzIsIGFy
ZzMsIGFyZzQpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBt
b3ZlIGFyZzIsIHQxCisgICAgICAgIG1vdmUgYXJnMywgdDIKKyAgICAgICAgbW92ZSBhcmc0LCB0
MworICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcy
LCAxCisgICAgICAgIHBva2UgYXJnMywgMgorICAgICAgICBwb2tlIGFyZzQsIDMKKyAgICBlbHNl
CisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5kCisKK21hY3Jv
IGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpCisgICAgbW92
ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVnZ2luZyBvcGVyYXRpb24g
aWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJl
YW0uCittYWNybyB0cmFjZU9wZXJhbmQoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChf
bGxpbnRfdHJhY2Vfb3BlcmFuZCwgY2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1v
dmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9u
IGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgdGhlIHZhbHVlIG9mIGFuIG9wZXJhbmQgaW4gdGhlIGlu
c3RydWN0aW9uCisjIHN0cmVhbS4KK21hY3JvIHRyYWNlVmFsdWUoZnJvbVdoZXJlLCBvcGVyYW5k
KQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2VfdmFsdWUsIGNmciwgUEMsIGZyb21XaGVyZSwgb3Bl
cmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKK21hY3JvIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVs
cGVyKF9sbGludF90cmFjZSkKKyAgICBlbmQKK2VuZAorCisjIENhbGwgYSBoZWxwZXIgZm9yIGNh
bGwgb3Bjb2Rlcy4KK21hY3JvIGNhbGxDYWxsSGVscGVyKGFkdmFuY2UsIGhlbHBlciwgYWN0aW9u
KQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDLCB0MAorICAgIHN0b3JlcCB0MCwgQXJndW1lbnRD
b3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBt
b3ZlIHQxLCBjZnIKKyAgICBhY3Rpb24odDApCitlbmQKKworbWFjcm8gc2xvd1BhdGhGb3JDYWxs
KGFkdmFuY2UsIGhlbHBlcikKKyAgICBjYWxsQ2FsbEhlbHBlcigKKyAgICAgICAgYWR2YW5jZSwK
KyAgICAgICAgaGVscGVyLAorICAgICAgICBtYWNybyAoY2FsbGVlKQorICAgICAgICAgICAgY2Fs
bCBjYWxsZWUKKyAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAgICAgZW5kKQor
ZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVQoaW5jcmVtZW50LCBhY3Rpb24pCisgICAgaWYg
SklUX0VOQUJMRUQKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgICAgIGJh
ZGRpcyBpbmNyZW1lbnQsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3QwXSwgLmNv
bnRpbnVlCisgICAgICAgIGFjdGlvbigpCisgICAgLmNvbnRpbnVlOgorICAgIGVuZAorZW5kCisK
K21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAor
ICAgICAgICAxLAorICAgICAgICBtYWNybyAoKQorICAgICAgICAgICAgc3RvcmVpIFBDLCBBcmd1
bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICAgICAgICAgIGNDYWxsMihfbGxpbnRfbG9v
cF9vc3IsIGNmciwgUEMpCisgICAgICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgICAgIGJ0
cHogdDAsIC5yZWNvdmVyCisgICAgICAgICAgICBqbXAgdDAKKyAgICAgICAgLnJlY292ZXI6Cisg
ICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAg
ICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAg
IGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEwLAorICAgICAgICBtYWNybyAoKQorICAgICAg
ICAgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVwbGFjZSkKKyAgICAgICAgZW5kKQorZW5kCisKK21h
Y3JvIGFzc2VydE5vdENvbnN0YW50KGluZGV4KQorICAgIGFzc2VydChtYWNybyAob2spIGJpbHQg
aW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBvayBlbmQpCitlbmQKKworIyBJbmRl
eCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlz
IG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShpbmRleCwgdGFn
LCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgs
IC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9u
ZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3Bh
eWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRo
ZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAor
ICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9hZHAgVGFnT2Zmc2V0W3BheWxvYWQsIGlu
ZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0s
IHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQgbWF5IGJlIHRoZSBz
YW1lIHJlZ2lzdGVyLiBJbmRleCBtYXkgYmUgY2xvYmJlcmVkLgorbWFjcm8gbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRb
Y2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwg
OF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdGFnCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsg
VmVjdG9yQnVmZmVyT2Zmc2V0W3RhZ10sIHRhZworICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZp
bCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1
ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxzaGlmdGkgMywgaW5k
ZXgKKyAgICBhZGRwIGluZGV4LCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBh
eWxvYWQKKyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnCisuZG9uZToKK2VuZAorCittYWNy
byBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFnQ2hlY2ss
IHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwg
LmNvbnN0YW50CisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdKQorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUK
Ky5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRw
IENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXls
b2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUg
aW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAg
ICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtwYXlsb2FkLCBp
bmRleCwgOF0pCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBh
eWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJl
bnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QgbXV0YXRlZC4gVXNlCisjIHRoaXMgaWYgeW91IGtu
b3cgd2hhdCB0aGUgdGFnIG9mIHRoZSB2YXJpYWJsZSBzaG91bGQgYmUuIERvaW5nIHRoZSB0YWcK
KyMgdGVzdCBhcyBwYXJ0IG9mIGxvYWRpbmcgdGhlIHZhcmlhYmxlIHJlZHVjZXMgcmVnaXN0ZXIg
dXNlLCBidXQgbWF5IG5vdAorIyBiZSBmYXN0ZXIgdGhhbiBkb2luZyBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlIGZvbGxvd2VkIGJ5IGEgYnJhbmNoIG9uIHRoZQorIyB0YWcuCittYWNybyBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cp
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCisgICAgICAgIGlu
ZGV4LAorICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBiaW5lcSBhY3R1YWxUYWcsIGV4cGVjdGVk
VGFnLCBzbG93IGVuZCwKKyAgICAgICAgcGF5bG9hZCkKK2VuZAorCittYWNybyBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZChpbmRleCwgcGF5bG9hZCkKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgKKyAgICAgICAgaW5kZXgsCisgICAgICAg
IG1hY3JvIChhY3R1YWxUYWcpIGVuZCwKKyAgICAgICAgcGF5bG9hZCkKK2VuZAorCittYWNybyB3
cml0ZUJhcnJpZXIodGFnLCBwYXlsb2FkKQorICAgICMgTm90aGluZyB0byBkbyBzaW5jZSB3ZSBk
b24ndCBoYXZlIGEgZ2VuZXJhdGlvbmFsIG9yIGluY3JlbWVudGFsIGNvbGxlY3Rvci4KK2VuZAor
CisKKyMgSW5kaWNhdGUgdGhlIGJlZ2lubmluZyBvZiBMTEludC4KK19sbGludF9iZWdpbjoKKyAg
ICBjcmFzaCgpCisKKworIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlcgorCittYWNy
byBmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9h
ZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9l
eGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBGdW5j
dGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdl
dFJlZ2lzdGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0
ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVy
CisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFy
Z2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9y
Q29uc3RydWN0W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBu
b3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkNvZGVCbG9j
a1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAgICBzdG9yZXAgc291cmNlUmVnaXN0ZXIsIENvZGVC
bG9ja1tjZnJdCitlbmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNl
UmVnaXN0ZXIpCisgICAgIyBOb3RoaW5nIHRvIGRvIQorZW5kCisKKyMgRG8gdGhlIGJhcmUgbWlu
aW11bSByZXF1aXJlZCB0byBleGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBsZWF2ZSB0aGUg
Q29kZUJsb2NrKgorIyBpbiB0MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1Iu
CittYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NySGVs
cGVyLCB0cmFjZUhlbHBlcikKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIp
CisgICAgCisgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3Vs
ZCBPU1IuCisgICAgc3RvcmVwIHQyLCBSZXR1cm5QQ1tjZnJdCisgICAgaWYgRVhFQ1VUSU9OX1RS
QUNJTkcKKyAgICAgICAgY2FsbEhlbHBlcih0cmFjZUhlbHBlcikKKyAgICBlbmQKKyAgICBjb2Rl
QmxvY2tHZXR0ZXIodDEpCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgYmFkZGlzIDUsIENv
ZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3QxXSwgLmNvbnRpbnVlCisgICAgICAgIGND
YWxsMihvc3JIZWxwZXIsIGNmciwgUEMpCisgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAgICBi
dHB6IHQwLCAucmVjb3ZlcgorICAgICAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgICAg
ICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICAgICAgam1wIHQwCisg
ICAgLnJlY292ZXI6CisgICAgICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICAuY29udGludWU6
CisgICAgZW5kCisgICAgY29kZUJsb2NrU2V0dGVyKHQxKQorICAgIAorICAgICMgU2V0IHVwIHRo
ZSBQQy4KKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZm
ZXJPZmZzZXRbdDBdLCBQQworZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0
MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCisjIE11c3QgY2FsbCBk
aXNwYXRjaCgwKSBhZnRlciBjYWxsaW5nIHRoaXMuCittYWNybyBmdW5jdGlvbkluaXRpYWxpemF0
aW9uKCkKKyAgICAjIFByb2ZpbGUgdGhlIGFyZ3VtZW50cy4gVW5mb3J0dW5hdGVseSwgd2UgaGF2
ZSBubyBjaG9pY2UgYnV0IHRvIGRvIHRoaXMuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVBh
cmFtZXRlcnNbdDFdLCB0MAorICAgIGJ0aXogdDAsIC5hcmd1bWVudFByb2ZpbGVEb25lCisgICAg
bmVnaSB0MAorICAgIGxzaGlmdGkgMywgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1l
bnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QxXSwgdDMKKy5hcmd1bWVudFBy
b2ZpbGVMb29wOgorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNldCArIDhb
Y2ZyLCB0MF0sIHQyCisgICAgc3RvcmVpIHQyLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRh
Z09mZnNldFt0M10KKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zmc2V0
ICsgOFtjZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRz
ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBhZGRwIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQzCisg
ICAgYmFkZGlueiA4LCB0MCwgLmFyZ3VtZW50UHJvZmlsZUxvb3AKKy5hcmd1bWVudFByb2ZpbGVE
b25lOgorICAgIAorICAgICMgQ2hlY2sgc3RhY2sgaGVpZ2h0LgorICAgIGxvYWRpIENvZGVCbG9j
azo6bV9udW1DYWxsZWVSZWdpc3RlcnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxEYXRhW3QxXSwgdDIKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmludGVycHJldGVyW3Qy
XSwgdDIgICAjIEZJWE1FOiBDYW4gZ2V0IHRvIHRoZSBSZWdpc3RlckZpbGUgZnJvbSB0aGUgSklU
U3RhY2tGcmFtZQorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQwLCBjZnIsIHQwCisgICAg
YnBhZXEgSW50ZXJwcmV0ZXI6Om1fcmVnaXN0ZXJGaWxlICsgUmVnaXN0ZXJGaWxlOjptX2VuZFt0
Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSworCisgICAgIyBTdGFjayBoZWlnaHQgY2hlY2sgZmFpbGVk
IC0gbmVlZCB0byBjYWxsIGEgaGVscGVyLgorICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlZ2lzdGVy
X2ZpbGVfY2hlY2spCisuc3RhY2tIZWlnaHRPSzoKK2VuZAorCisjIEV4cGVjdHMgdGhhdCBDb2Rl
QmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgor
bWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgaGVscGVyKQorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisgICAgYmllcSB0MCwgQ29kZUJs
b2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKKyAgICBjQ2FsbDIoaGVscGVyLCBj
ZnIsIFBDKSAgICMgVGhpcyBoZWxwZXIgaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4g
bm8gZXJyb3IsIHQwICE9IDAgPT4gZXJyb3IKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBidGl6IHQw
LCAuY29udGludWUKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEK
KyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBq
bXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKy5jb250aW51ZToK
KyAgICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIFBDLCBzaW5jZSB0aGUgaGVscGVyIGNsb2JiZXJl
ZCBpdC4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9u
czo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworICAgIGptcCBk
b25lTGFiZWwKK2VuZAorCitfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShu
b3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9s
bGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQor
CisKK19sbGludF9ldmFsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJs
b2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwg
X2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVC
bG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9s
bGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKKy5mdW5jdGlvbkZvckNhbGxC
ZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKCkKKyAgICBkaXNwYXRjaCgwKQorICAg
IAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1
ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tT
ZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9m
b3JfY29uc3RydWN0KQorLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46CisgICAgZnVuY3Rpb25J
bml0aWFsaXphdGlvbigpCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVC
bG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfYXJp
dHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCisgICAgZnVuY3Rpb25B
cml0eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X2hlbHBlcl9jYWxsX2FyaXR5
Q2hlY2spCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2s6Cisg
ICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9u
Q29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2FyaXR5Q2hlY2ssIF9sbGludF90cmFj
ZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5j
dGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfbGxpbnRfaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNr
KQorCisjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9ucworCitfbGxpbnRfb3BfZW50ZXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxv
YWRpIENvZGVCbG9jazo6bV9udW1WYXJzW3QyXSwgdDIKKyAgICBidGl6IHQyLCAub3BFbnRlckRv
bmUKKyAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAKKyAgICBtb3ZlIDAsIHQxCisub3BFbnRlckxv
b3A6CisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgYnRpbnogdDIs
IC5vcEVudGVyTG9vcAorLm9wRW50ZXJEb25lOgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50
X29wX2NyZWF0ZV9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcs
IC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Ny
ZWF0ZV9hY3RpdmF0aW9uKQorLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmU6CisgICAgZGlzcGF0Y2go
MikKKworCitfbGxpbnRfb3BfaW5pdF9sYXp5X3JlZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XQorICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBcmd1bWVudHNEb25lCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCisub3BDcmVhdGVBcmd1bWVudHNE
b25lOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFjcm8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNp
emVDbGFzc0luZGV4LCBjbGFzc0luZm9PZmZzZXQsIHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNo
MSwgc2NyYXRjaDIsIHNsb3dDYXNlKQorICAgIGNvbnN0IG9mZnNldE9mTXlTaXplQ2xhc3MgPSBK
U0dsb2JhbERhdGE6OmhlYXAgKyBIZWFwOjptX29iamVjdFNwYWNlICsgQWxsb2NhdGlvblNwYWNl
OjptX21hcmtlZFNwYWNlICsgTWFya2VkU3BhY2U6Om1fcHJlY2lzZVNpemVDbGFzc2VzICsgc2l6
ZUNsYXNzSW5kZXggKiBzaXplb2YgTWFya2VkU3BhY2U6OlNpemVDbGFzcworICAgIAorICAgICMg
RklYTUU6IHdlIGNhbiBnZXQgdGhlIGdsb2JhbCBkYXRhIGluIG9uZSBsb2FkIGZyb20gdGhlIHN0
YWNrLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoMQorICAgIGxvYWRwIENvZGVC
bG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAKKyAgICAjIEdldCB0
aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4gICAgCisgICAgbG9hZHAgb2Zmc2V0T2ZNeVNp
emVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFd
LCByZXN1bHQKKyAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UKKyAgICAKKyAgICAjIFJlbW92ZSB0
aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAgICBsb2FkcCBbcmVzdWx0XSwgc2NyYXRj
aDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFj
ZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXQorCisgICAgIyBJbml0aWFsaXpl
IHRoZSBvYmplY3QuCisgICAgbG9hZHAgY2xhc3NJbmZvT2Zmc2V0W3NjcmF0Y2gxXSwgc2NyYXRj
aDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCisgICAgc3RvcmVwIHN0cnVjdHVyZSwg
SlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCisgICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX2lu
aGVyaXRvcklEW3Jlc3VsdF0KKyAgICBhZGRwIHNpemVvZiBKU09iamVjdCwgcmVzdWx0LCBzY3Jh
dGNoMQorICAgIHN0b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Jl
c3VsdF0KK2VuZAorCitfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2Fk
cCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFt0MF0sIHQyCisgICAgYnRweiB0MiwgLm9wQ3JlYXRl
VGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFz
c0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIHQyLCB0MCwgdDEs
IHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkg
Q2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wQ3JlYXRlVGhpc1Nsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV90aGlzKQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRPZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEK
KyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRf
b3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRU
aGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Ns
b3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAK
KyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQx
CisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwg
SlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MSwgdDAsIHQyLCB0MywgLm9w
TmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywg
VGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3T2JqZWN0U2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3
X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX25ld19hcnJheV9idWZmZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX25ld19yZWdleHApCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbW92
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgc3Rv
cmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9ub3Q6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0
MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBiaW5lcSB0Miwg
Qm9vbGVhblRhZywgLm9wTm90U2xvdworICAgIHhvcmkgMSwgdDMKKyAgICBzdG9yZWkgdDIsIFRh
Z09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9lcToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0
MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93
CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcs
IC5vcEVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpZXEgdDAsIHQxLCB0MAorICAg
IHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BFcVNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2VxKQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX2VxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BFcU51bGxJbW1lZGlh
dGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0Ym56IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlCisub3BFcU51bGxJbW1l
ZGlhdGU6CisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaWVxIHQxLCBVbmRlZmluZWRU
YWcsIHQxCisgICAgb3JpIHQyLCB0MQorLm9wRXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3Jl
aSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZXE6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5v
cE5lcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFTbG93CisgICAgYmliIHQyLCBM
b3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaW5lcSB0MCwg
dDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisK
Ky5vcE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lcSkKKyAgICBkaXNw
YXRjaCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5v
dENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFn
LCAub3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3Qx
XSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wTmVxTnVsbE5vdEltbWVk
aWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBjaW5lcSB0MSwgTnVsbFRhZywgdDIKKyAg
ICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIGFuZGkgdDIsIHQxCisub3BOZXFOdWxs
Tm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0Mywg
OF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRj
aCgzKQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBoZWxwZXIpCisgICAg
bG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwg
dDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywg
LnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmluZworICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFd
LCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cKKy5ub3RTdHJpbmc6
CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkK
KyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6
CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRf
b3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChs
ZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRf
aGVscGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBs
ZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9uc3RyaWN0ZXEpCisKKworX2xs
aW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xlc3NlcToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3NlcSkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcikKKyAgICBkaXNwYXRj
aCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEpCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJl
SW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYmFk
ZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5jU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9v
cF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVEZWNTbG93Cisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBic3ViaW8gMSwgdDEs
IC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0K
KyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Bvc3RfaW5j
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0
W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQ
b3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBiYWRkaW8g
MSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBz
dG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNEb25lOgorICAg
IGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9wb3N0X2RlYzoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQ
Q10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9z
dERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYnN1YmlvIDEs
IHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0RGVjRG9uZToKKyAgICBk
aXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdG9fanNudW1iZXI6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRb
UENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBiaWVx
IHQyLCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklzSW50CisgICAgYmlhZXEgdDIsIEVtcHR5VmFs
dWVUYWcsIC5vcFRvSnNudW1iZXJTbG93Cisub3BUb0pzbnVtYmVySXNJbnQ6CisgICAgc3RvcmVp
IHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb0pzbnVtYmVyU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fanNudW1iZXIpCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQw
LCB0MSwgdDIpCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BOZWdhdGVTcmNOb3RJbnQKKyAg
ICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CisgICAgbmVnaSB0MgorICAgIHN0
b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKy5vcE5lZ2F0ZVNyY05vdElu
dDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xvdworICAgIHhvcmkgMHg4MDAw
MDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5l
Z2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lZ2F0ZSkKKyAgICBkaXNw
YXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFu
ZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisg
ICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQx
KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEg
dDIsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDMsIEludDMyVGFnLCAub3AyTm90
SW50CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHQz
LCB0MSwgdDAsIC5zbG93LCB0MikKKyAgICBkaXNwYXRjaCg1KQorCisub3AxTm90SW50OgorICAg
ICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRoZSBzZWNvbmQgb3Bl
cmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAg
ICBiaWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQzLCBJ
bnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQxLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5
Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQxLCB0MywgZnQxCisub3AxTm90SW50
UmVhZHk6CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgZmlpMmQgdDAsIHQyLCBmdDAKKyAgICBk
b3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDEsIDhdCisg
ICAgZGlzcGF0Y2goNSkKKworLm9wMk5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVm
aW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KKyAg
ICBsb2FkaSA0W1BDXSwgdDIKKyAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNsb3cKKyAgICBjaTJk
IHQwLCBmdDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEs
IGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisu
c2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCg1KQorZW5kCisKK21h
Y3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQor
ICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwg
cmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgaW50ZWdlck9wZXJhdGlvbihsZWZ0LCBy
aWdodCwgc2xvdykKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBp
bmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikK
K2VuZAorCitfbGxpbnRfb3BfYWRkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlP
cCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQs
IHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2FkZCkKKworCitfbGxpbnRfb3BfbXVsOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNy
byAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGNvbnN0
IHNjcmF0Y2ggPSBpbnQzMlRhZyAgICMgV2Uga25vdyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgaW50
MzJUYWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEgY29uc3RhbnQuCisgICAgICAgICAgICBtb3Zl
IHJpZ2h0LCBzY3JhdGNoCisgICAgICAgICAgICBibXVsaW8gbGVmdCwgc2NyYXRjaCwgc2xvdwor
ICAgICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRvbmUKKyAgICAgICAgICAgIGJpbHQgbGVmdCwg
MCwgLnNsb3cKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIC5zbG93CisgICAgICAgIC5kb25l
OgorICAgICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0K
KyAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhd
CisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBtdWxkIGxlZnQsIHJp
Z2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9tdWwpCisKKworX2xsaW50X29wX3N1YjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgc2xvdykgYnN1YmlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hl
bHBlcl9zdWIpCisKKworX2xsaW50X29wX2RpdjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
YmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdo
dCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjaTJkIGxlZnQsIGZ0MAorICAgICAgICAgICAg
Y2kyZCByaWdodCwgZnQxCisgICAgICAgICAgICBkaXZkIGZ0MCwgZnQxCisgICAgICAgICAgICBi
Y2QyaSBmdDEsIHJpZ2h0LCAubm90SW50CisgICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRh
Z09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2Fk
T2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBqbXAgLmRvbmUKKyAgICAgICAgLm5v
dEludDoKKyAgICAgICAgICAgIHN0b3JlZCBmdDEsIFtjZnIsIGluZGV4LCA4XQorICAgICAgICAu
ZG9uZToKKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGRpdmQgbGVm
dCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2RpdikKKworCitfbGxpbnRfb3Bf
bW9kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
bW9kKQorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8gYml0T3Aob3BlcmF0aW9uLCBoZWxwZXIs
IGFkdmFuY2UpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKKyAg
ICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgb3Bl
cmF0aW9uKHQxLCB0MCwgLnNsb3cpCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0Miwg
OF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRj
aChhZHZhbmNlKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRj
aChhZHZhbmNlKQorZW5kCisKK19sbGludF9vcF9sc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGxzaGlmdGkg
bGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2xzaGlmdCwKKyAgICAgICAg
NCkKKworCitfbGxpbnRfb3BfcnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRP
cCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSByc2hpZnRpIGxlZnQsIHJpZ2h0
IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9yc2hpZnQsCisgICAgICAgIDQpCisKKworX2xs
aW50X29wX3Vyc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICB1cnNoaWZ0aSBsZWZ0LCBy
aWdodAorICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdworICAgICAgICBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfdXJzaGlmdCwKKyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfYml0
YW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCBzbG93KSBhbmRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hl
bHBlcl9iaXRhbmQsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdHhvcjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xv
dykgeG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0eG9yLAor
ICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgb3JpIGxlZnQsIHJp
Z2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXRvciwKKyAgICAgICAgNSkKKworCitf
bGxpbnRfb3BfYml0bm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0
MiwgdDMpCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3BCaXRub3RTbG93CisgICAgbm90aSB0
MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wQml0bm90U2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfYml0bm90KQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDEsIENlbGxUYWcsIHQwLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdykKKyAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0hhc0luc3RhbmNlLCAub3BDaGVja0hh
c0luc3RhbmNlU2xvdworICAgIGRpc3BhdGNoKDIpCisKKy5vcENoZWNrSGFzSW5zdGFuY2VTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpCisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5zdGFuY2VvZjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgIyBDaGVjayB0aGF0IGJhc2VWYWwgaW1wbGVtZW50cyB0aGUgZGVmYXVsdCBIYXNJ
bnN0YW5jZSBiZWhhdmlvci4KKyAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkZXByZWNhdGVk
LgorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZFVuY2hlY2tlZCh0MSwgdDApCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQw
CisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0s
IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgCisg
ICAgIyBBY3R1YWxseSBkbyB0aGUgd29yay4KKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgbG9h
ZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxU
YWcsIHQxLCAub3BJbnN0YW5jZW9mU2xvdykKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QxXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlw
ZVt0Ml0sIE9iamVjdFR5cGUsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgbG9hZGkgOFtQQ10sIHQw
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BJ
bnN0YW5jZW9mU2xvdykKKyAgICAKKyAgICAjIFJlZ2lzdGVyIHN0YXRlOiB0MSA9IHByb3RvdHlw
ZSwgdDIgPSB2YWx1ZQorICAgIG1vdmUgMSwgdDAKKy5vcEluc3RhbmNlb2ZMb29wOgorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MgorICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9w
cm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QyXSwgdDIKKyAgICBicGVxIHQyLCB0MSwgLm9wSW5z
dGFuY2VvZkRvbmUKKyAgICBidGlueiB0MiwgLm9wSW5zdGFuY2VvZkxvb3AKKworICAgIG1vdmUg
MCwgdDAKKy5vcEluc3RhbmNlb2ZEb25lOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0K
KyAgICBkaXNwYXRjaCg1KQorCisub3BJbnN0YW5jZW9mU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfaW5zdGFuY2VvZikKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF90
eXBlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl90eXBlb2YpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfdW5kZWZpbmVkOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfdW5k
ZWZpbmVkKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX2Jvb2xlYW46CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19ib29sZWFu
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX251bWJlcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX251bWJlcikKKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19zdHJpbmc6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19zdHJpbmcpCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfaXNfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfb2JqZWN0KQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX2lzX2Z1bmN0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfaXNfZnVuY3Rpb24pCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfaW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9pbikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9yZXNvbHZlOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZSkKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX3NraXA6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3NraXApCisgICAg
ZGlzcGF0Y2goNCkKKworCittYWNybyByZXNvbHZlR2xvYmFsKHNsb3cpCisgICAgIyBPcGVyYW5k
cyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2Fk
LgorICAgICMgOFtQQ10gICBQcm9wZXJ0eSBpZGVudGlmaWVyIGluZGV4IGluIHRoZSBjb2RlIGJs
b2NrLgorICAgICMgMTJbUENdICBTdHJ1Y3R1cmUgcG9pbnRlciwgaW5pdGlhbGl6ZWQgdG8gMCBi
eSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgIyAxNltQQ10gIE9mZnNldCBpbiBnbG9iYWwgb2Jq
ZWN0LCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3Qw
XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBicG5lcSB0
MSwgMTJbUENdLCBzbG93CisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0
OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwg
OF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MworICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCitlbmQKKworX2xsaW50X29wX3Jlc29s
dmVfZ2xvYmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICByZXNvbHZlR2xvYmFsKC5vcFJl
c29sdmVHbG9iYWxTbG93KQorICAgIGRpc3BhdGNoKDUpCisKKy5vcFJlc29sdmVHbG9iYWxTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNw
YXRjaCg1KQorCisKKyMgR2l2ZXMgeW91IHRoZSBzY29wZSBpbiB0MCwgd2hpbGUgYWxsb3dpbmcg
eW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0aGUKKyMgc2Nv
cGVzIGFzIHRoZXkgYXJlIHRyYXZlcnNlZC4gc2NvcGVDaGVjaygpIGlzIGNhbGxlZCB3aXRoIHR3
byBhcmd1bWVudHM6IHRoZSByZWdpc3RlcgorIyBob2xkaW5nIHRoZSBzY29wZSwgYW5kIGEgcmVn
aXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc2NyYXRjaC4gTm90ZSB0aGF0IHRoaXMgZG9lcyBu
b3QKKyMgdXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQgc3R1ZmYgaW4gdDMgaWYgbmVlZCBiZS4KK21h
Y3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2Fk
cCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIGRlQnJ1aWpp
bkluZGV4T3BlcmFuZCwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorICAgIAorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGJpbmVxIENvZGVCbG9jazo6bV9jb2RlVHlwZVt0
MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AKKyAgICBidGJ6IENvZGVCbG9jazo6bV9uZWVkc0Z1bGxT
Y29wZUNoYWluW3QxXSwgLmxvb3AKKyAgICAKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZh
dGlvblJlZ2lzdGVyW3QxXSwgdDEKKworICAgICMgTmVlZCB0byBjb25kaXRpb25hbGx5IHNraXAg
b3ZlciBvbmUgc2NvcGUuCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFs
dWVUYWcsIC5ub0FjdGl2YXRpb24KKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBT
Y29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisubm9BY3RpdmF0aW9uOgorICAgIHN1YmkgMSwg
dDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorLmxvb3A6CisgICAgc2NvcGVDaGVjayh0MCwg
dDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MAorICAgIHN1YmkgMSwg
dDIKKyAgICBidGlueiB0MiwgLmxvb3AKKworLmRvbmU6CitlbmQKKworX2xsaW50X29wX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0
YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0
aXZhdGlvblN0cnVjdHVyZVt0M10sIHQzCisgICAgZ2V0U2NvcGUoCisgICAgICAgIDIwW1BDXSwK
KyAgICAgICAgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKQorICAgICAgICAgICAgbG9hZHAgU2NvcGVD
aGFpbk5vZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGJwbmVxIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVy
U2xvdworICAgICAgICBlbmQpCisgICAgcmVzb2x2ZUdsb2JhbCgub3BSZXNvbHZlR2xvYmFsRHlu
YW1pY1Nsb3cpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBl
clNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0
Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNwYXRjaCg2KQorCisKK19sbGludF9v
cF9nZXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBPcGVyYW5kcyBh
cmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgor
ICAgICMgOFtQQ10gICBJbmRleCBvZiByZWdpc3RlciBpbiB0aGUgc2NvcGUuCisgICAgIyAxMltQ
Q10gIERlIEJydWlqaW4gaW5kZXguCisgICAgZ2V0U2NvcGUoMTJbUENdLCBtYWNybyAoc2NvcGUs
IHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIK
KyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1Zh
cmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3Qw
LCB0MiwgOF0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdLCB0MAorICAg
IHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X3Nj
b3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGdldFNjb3BlKDhbUENdLCBtYWNy
byAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MSwgdDMsIHQyKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHdy
aXRlQmFycmllcih0MywgdDIpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0s
IHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAg
IHN0b3JlaSB0MywgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRP
ZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9nbG9i
YWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBs
b2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVj
dDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0
MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDEKKyAgICBzdG9yZWkgdDIs
IFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwg
dDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W3QwLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfYmFzZSkKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0
cykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfYmFzZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVf
d2l0aF9iYXNlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF90
aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cmVzb2x2ZV93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5
X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMg
Z2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisgICAg
IyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBh
bnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJl
c3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKKyAgICAjIHRv
IHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBw
YXRoLCB3aGljaCBpcyB3aGF0CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5
LgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQor
ICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3Jh
Z2VbdDNdLCB0MAorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0
QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQy
XSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAgc3RvcmVpIHQz
LCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBkaXNwYXRjaCg4KQorCisub3BHZXRCeUlkU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X2lkKQorICAgIGRpc3BhdGNoKDgpCisKKworX2xsaW50
X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50c0xlbmd0aFNsb3cKKyAgICBs
b2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MgorICAgIHN1YmkgMSwg
dDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdl
dEFyZ3VtZW50c0xlbmd0aFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9h
cmd1bWVudHNfbGVuZ3RoKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9p
ZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkg
MTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFn
LCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRwIEpT
T2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYnBuZXEgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDAsIHQyKQorICAgIHdyaXRlQmFycmll
cih0MCwgdDIpCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbdDMsIHQxXQorICAgIHN0b3JlaSB0
MiwgUGF5bG9hZE9mZnNldFt0MywgdDFdCisgICAgZGlzcGF0Y2goOSkKKworLm9wUHV0QnlJZFNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pZCkKKyAgICBkaXNwYXRj
aCg5KQorCisKK21hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwg
dDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5v
cFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBicG5lcSBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgYWRkaXRpb25hbENoZWNrcyh0
MSwgdDMsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAgICBsb2FkcCBK
U09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGFkZHAgdDEsIHQzCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQxLCB0MikKKyAgICB3cml0ZUJhcnJpZXIo
dDEsIHQyKQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIDI0W1BDXSwg
dDEKKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVwIHQxLCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXQorICAgIGRpc3BhdGNoKDkpCitlbmQKKworX2xsaW50X29wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihtYWNybyAo
b2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KSBlbmQpCisKKworX2xsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICBwdXRCeUlkVHJhbnNpdGlvbigKKyAgICAgICAgbWFj
cm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykKKyAgICAgICAgICAgIGNvbnN0IHByb3Rv
Q2VsbCA9IG9sZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lzdGVy
IGZvciB0aGUgcHJvdG8KKyAgICAgICAgCisgICAgICAgICAgICBsb2FkcCAyOFtQQ10sIHNjcmF0
Y2gKKyAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkK
KyAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvcltzY3JhdGNoXSwgc2Ny
YXRjaAorICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5k
KQorICAgICAgICAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29s
ZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25lCisgICAgICAgIC5sb29wOgorICAgICAgICAgICAg
bG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3RydWN0dXJl
XSwgcHJvdG9DZWxsCisgICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3Rv
Q2VsbF0sIG9sZFN0cnVjdHVyZQorICAgICAgICAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2Ny
YXRjaF0sIHNsb3cKKyAgICAgICAgICAgIGFkZHAgNCwgc2NyYXRjaAorICAgICAgICAgICAgYmlu
ZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxs
VGFnLCAubG9vcAorICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kKQorCisKK19sbGludF9vcF9k
ZWxfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9kZWxfYnlfaWQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5X3Zh
bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisg
ICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRwIENvZGVC
bG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBsb2FkcCBKU0dsb2Jh
bERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDFdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBicG5lcSBb
dDBdLCB0MiwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3Qw
XSwgdDMKKyAgICBiaWFlcSB0MSwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDBdLCAub3BHZXRC
eVZhbFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1f
dmVjdG9yICsgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgQXJyYXlTdG9yYWdl
OjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKyAgICBiaWVxIHQyLCBF
bXB0eVZhbHVlVGFnLCAub3BHZXRCeVZhbFNsb3cKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAg
IGRpc3BhdGNoKDQpCisKKy5vcEdldEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfZ2V0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYXJn
dW1lbnRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBF
bXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQxLCBJbnQzMlRhZywgdDIsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93
KQorICAgIGFkZGkgMSwgdDIKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNl
dFtjZnJdLCB0MQorICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAg
ICBuZWdpIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zm
c2V0ICsgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9m
ZnNldCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgc3RvcmVpIHQwLCBUYWdP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Mywg
OF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudEJ5VmFsU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9nZXRfYnlfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwg
Q2VsbFRhZywgdDEsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAg
ICBicG5lcSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgLm9wR2V0QnlQbmFtZVNsb3cK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDAK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MworICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAorICAgIGJwbmVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkg
MjRbUENdLCB0MAorICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAKKyAgICBzdWJpIDEsIHQwCisg
ICAgYmlhZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2FjaGVhYmxlU2xvdHNb
dDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3Rv
cmFnZVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QyLCB0MCwgOF0sIHQxCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFt0MiwgdDAsIDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNykKKworLm9wR2V0QnlQbmFtZVNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9wbmFtZSkKKyAgICBkaXNwYXRj
aCg3KQorCisKK19sbGludF9vcF9wdXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwg
Q2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgSW50MzJUYWcsIHQyLCAub3BQdXRCeVZh
bFNsb3cpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2dsb2JhbERhdGFbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNs
YXNzSW5mb1t0MF0sIHQwCisgICAgYnBuZXEgW3QxXSwgdDAsIC5vcFB1dEJ5VmFsU2xvdworICAg
IGJpYWVxIHQyLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MV0sIC5vcFB1dEJ5VmFsU2xvdwor
ICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQwCisgICAgYmllcSBBcnJheVN0b3Jh
Z2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFB1
dEJ5VmFsRW1wdHkKKy5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQ6CisgICAgbG9hZGkgMTJbUENdLCB0
MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MSwgdDMpCisgICAgd3JpdGVC
YXJyaWVyKHQxLCB0MykKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBU
YWdPZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0b3JlaSB0MywgQXJyYXlTdG9yYWdlOjptX3ZlY3Rv
ciArIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcFB1dEJ5
VmFsRW1wdHk6CisgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3Jb
dDBdCisgICAgYmliIHQyLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxT
dG9yZVJlc3VsdAorICAgIGFkZGkgMSwgdDIsIHQxCisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3Jh
Z2U6Om1fbGVuZ3RoW3QwXQorICAgIGptcCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisKKy5vcFB1
dEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X3ZhbCkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9kZWxfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X3ZhbCkKKyAgICBkaXNw
YXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaW5kZXg6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaW5kZXgpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9nZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfcHV0X3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9zZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfbG9vcDoKKyAgICBub3AKK19sbGludF9vcF9qbXA6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGRpc3BhdGNoQnJhbmNoKDRbUENdKQorCisKK19sbGludF9vcF9qbXBfc2NvcGVz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfam1w
X3Njb3BlcykKKyAgICBkaXNwYXRjaCgwKQorCisKK21hY3JvIGp1bXBUcnVlT3JGYWxzZShjb25k
aXRpb25PcCwgc2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MSwgQm9vbGVhblRhZywgdDAsIC5zbG93KQorICAgIGNvbmRpdGlvbk9w
KHQwLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hC
cmFuY2goOFtQQ10pCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoc2xvdykKKyAgICBkaXNwYXRj
aCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX3RydWU6CisgICAgbm9wCitfbGxpbnRfb3Bf
anRydWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAg
ICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aW56IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2p0cnVlKQorCisKK19sbGludF9vcF9sb29wX2lmX2ZhbHNlOgorICAg
IG5vcAorX2xsaW50X29wX2pmYWxzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAganVtcFRy
dWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpeiB2YWx1ZSwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZmFsc2UpCisKKworbWFjcm8gZXF1YWxO
dWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYW5kbGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAuaW1tZWRpYXRlCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgY2VsbEhhbmRsZXIoU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQorICAg
IGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5p
bW1lZGlhdGU6CisgICAgb3JpIDEsIHQxCisgICAgaW1tZWRpYXRlSGFuZGxlcih0MSwgLnRhcmdl
dCkKKyAgICBkaXNwYXRjaCgzKQorZW5kCisKK19sbGludF9vcF9qZXFfbnVsbDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdl
dCkgYnRibnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisgICAg
ICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaWVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5k
KQorICAgIAorCitfbGxpbnRfb3Bfam5lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJ6IHZhbHVlLCBN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUs
IHRhcmdldCkgYmluZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisKKworX2xsaW50X29w
X2puZXFfcHRyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxU
YWcsIC5vcEpuZXFQdHJCcmFuY2gKKyAgICBicGVxIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQxLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKKy5vcEpuZXFQdHJCcmFuY2g6CisgICAgZGlzcGF0
Y2hCcmFuY2goMTJbUENdKQorLm9wSm5lcVB0ckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoKDQp
CisKKworbWFjcm8gY29tcGFyZShpbnRlZ2VyQ29tcGFyZSwgZG91YmxlQ29tcGFyZSwgaGVscGVy
KQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDIsIHQwLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Zyh0MywgdDIsIHQzKQorICAgIGJpbmVxIHQwLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAgIGJp
bmVxIHQyLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGludGVnZXJDb21wYXJlKHQxLCB0Mywg
Lmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5vdEludDoKKyAgICBiaWEgdDAs
IExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRv
dWJsZQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQzLCBmdDEKKyAg
ICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQz
LCB0MiwgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgZmlpMmQgdDEsIHQwLCBmdDAKKyAgICBk
b3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisu
b3AyTm90SW50OgorICAgIGNpMmQgdDEsIGZ0MAorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xv
dworICAgIGZpaTJkIHQzLCB0MiwgZnQxCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1
bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLmp1bXBUYXJnZXQ6CisgICAgZGlzcGF0Y2hC
cmFuY2goMTJbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNw
YXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX2xlc3M6CisgICAgbm9wCitfbGxpbnRf
b3Bfamxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdCBsZWZ0LCByaWdodCwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzcykKKworCitfbGxpbnRfb3Bfam5s
ZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxdW4gbGVmdCwgcmlnaHQsIHRh
cmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzKQorCisKK19sbGludF9vcF9s
b29wX2lmX2dyZWF0ZXI6CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXI6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFy
Z2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmRndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9qZ3JlYXRlcikKKworCitfbGxpbnRfb3Bfam5ncmVhdGVyOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRh
cmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfam5ncmVhdGVyKQorCisKK19sbGludF9vcF9sb29wX2lmX2xlc3Nl
cToKKyAgICBub3AKK19sbGludF9vcF9qbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVxIGxl
ZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmRsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVy
X2psZXNzZXEpCisKKworX2xsaW50X29wX2pubGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBs
ZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJkZ3R1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl9qbmxlc3NlcSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyZXE6CisgICAgbm9wCitf
bGxpbnRfb3BfamdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcSBs
ZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcmVx
KQorCisKK19sbGludF9vcF9qbmdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
ZGx0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5n
cmVhdGVyZXEpCisKKworX2xsaW50X29wX2xvb3BfaGludDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGRpc3BhdGNoKDEpCisKKworX2xs
aW50X29wX3N3aXRjaF9pbW06CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BD
XSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQy
LCB0MSwgdDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUs
IHQzICAgIyBGSVhNRTogd291bGQgYmUgbmljZSB0byBwZWVwaG9sZSB0aGlzIQorICAgIGxvYWRw
IENvZGVCbG9jazo6UmFyZURhdGE6Om1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgYWRkcCB0MywgdDIKKyAgICBiaW5lcSB0MSwgSW50
MzJUYWcsIC5vcFN3aXRjaEltbU5vdEludAorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5b
dDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBW
ZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBsb2FkcCBT
aW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0
MworICAgIGxvYWRpIFt0MywgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEsIC5vcFN3aXRjaEltbUZh
bGxUaHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQorCisub3BTd2l0Y2hJ
bW1Ob3RJbnQ6CisgICAgYmliIHQxLCBMb3dlc3RUYWcsIC5vcFN3aXRjaEltbVNsb3cgICMgR28g
dG8gc2xvdyBwYXRoIGlmIGl0J3MgYSBkb3VibGUuCisub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaDoK
KyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLm9wU3dpdGNoSW1tU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX2ltbSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19s
bGludF9vcF9zd2l0Y2hfY2hhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJb
UENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDIsIHQxLCB0MCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJs
ZSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2NoYXJhY3RlclN3aXRjaEp1
bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisg
ICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFs
bFRocm91Z2gKKyAgICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MF0sIHQwCisgICAgYmluZXEg
U3RyaW5nSW1wbDo6bV9sZW5ndGhbdDBdLCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAg
ICBsb2FkcCBTdHJpbmdJbXBsOjptX2RhdGE4W3QwXSwgdDEKKyAgICBidGlueiBTdHJpbmdJbXBs
OjptX2hhc2hBbmRGbGFnc1t0MF0sIEhhc2hGbGFnczhCaXRCdWZmZXIsIC5vcFN3aXRjaENoYXI4
Qml0CisgICAgbG9hZGggW3QxXSwgdDAKKyAgICBqbXAgLm9wU3dpdGNoQ2hhclJlYWR5Cisub3BT
d2l0Y2hDaGFyOEJpdDoKKyAgICBsb2FkYiBbdDFdLCB0MAorLm9wU3dpdGNoQ2hhclJlYWR5Ogor
ICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1w
bGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dp
dGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZz
ZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBsb2FkaSBbdDIsIHQwLCA0XSwg
dDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJh
bmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoOgorICAgIGRpc3Bh
dGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zd2l0Y2hfc3RyaW5nOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX3N0cmluZykK
KyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9uZXdfZnVuYzoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYnRpeiAxMltQQ10sIC5vcE5ld0Z1bmNVbmNoZWNrZWQKKyAgICBsb2FkaSA0
W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcs
IC5vcE5ld0Z1bmNEb25lCisub3BOZXdGdW5jVW5jaGVja2VkOgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9uZXdfZnVuYykKKy5vcE5ld0Z1bmNEb25lOgorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX25ld19mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCgzKQorCisK
K21hY3JvIGRvQ2FsbChoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgMTZb
UENdLCB0MQorICAgIGxvYWRwIExMSW50Q2FsbExpbmtJbmZvOjpjYWxsZWVbdDFdLCB0MgorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wQ2FsbFNs
b3cpCisgICAgYmluZXEgdDMsIHQyLCAub3BDYWxsU2xvdworICAgIGxvYWRpIDEyW1BDXSwgdDMK
KyAgICBhZGRwIDI0LCBQQworICAgIGxzaGlmdGkgMywgdDMKKyAgICBhZGRwIGNmciwgdDMgICMg
dDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBjZnIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjpt
X3Njb3BlQ2hhaW5bdDJdLCB0MAorICAgIHN0b3JlaSB0MiwgQ2FsbGVlICsgUGF5bG9hZE9mZnNl
dFt0M10KKyAgICBzdG9yZWkgdDAsIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAg
IGxvYWRpIDggLSAyNFtQQ10sIHQyCisgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFn
T2Zmc2V0W2Nmcl0KKyAgICBzdG9yZXAgY2ZyLCBDYWxsZXJGcmFtZVt0M10KKyAgICBzdG9yZWkg
dDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFn
LCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNdCisgICAgc3RvcmVpIENlbGxUYWcsIFNjb3BlQ2hhaW4g
KyBUYWdPZmZzZXRbdDNdCisgICAgbW92ZSB0MywgY2ZyCisgICAgY2FsbCBMTEludENhbGxMaW5r
SW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdCisgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorCisu
b3BDYWxsU2xvdzoKKyAgICBzbG93UGF0aEZvckNhbGwoNiwgaGVscGVyKQorZW5kCisKK19sbGlu
dF9vcF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBl
cl9jYWxsKQorCisKK19sbGludF9vcF9jb25zdHJ1Y3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGRvQ2FsbChfbGxpbnRfaGVscGVyX2NvbnN0cnVjdCkKKworCitfbGxpbnRfb3BfY2FsbF92
YXJhcmdzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzbG93UGF0aEZvckNhbGwoNiwgX2xs
aW50X2hlbHBlcl9jYWxsX3ZhcmFyZ3MpCisKKworX2xsaW50X29wX2NhbGxfZXZhbDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgCisgICAgIyBFdmFsIGlzIGV4ZWN1dGVkIGluIG9uZSBvZiB0
d28gbW9kZXM6CisgICAgIworICAgICMgMSkgV2UgZmluZCB0aGF0IHdlJ3JlIHJlYWxseSBpbnZv
a2luZyBldmFsKCkgaW4gd2hpY2ggY2FzZSB0aGUKKyAgICAjICAgIGV4ZWN1dGlvbiBpcyBwZXJm
b21lZCBlbnRpcmVseSBpbnNpZGUgdGhlIGhlbHBlciwgYW5kIGl0CisgICAgIyAgICByZXR1cm5z
IHRoZSBQQyBvZiBhIGZ1bmN0aW9uIHRoYXQganVzdCByZXR1cm5zIHRoZSByZXR1cm4gdmFsdWUK
KyAgICAjICAgIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAgIworICAgICMgMikgV2UgZmlu
ZCB0aGF0IHdlJ3JlIGludm9raW5nIHNvbWV0aGluZyBjYWxsZWQgZXZhbCgpIHRoYXQgaXMgbm90
CisgICAgIyAgICB0aGUgcmVhbCBldmFsLiBUaGVuIHRoZSBoZWxwZXIgcmV0dXJucyB0aGUgUEMg
b2YgdGhlIHRoaW5nIHRvCisgICAgIyAgICBjYWxsLCBhbmQgd2UgY2FsbCBpdC4KKyAgICAjCisg
ICAgIyBUaGlzIGFsbG93cyB1cyB0byBoYW5kbGUgdHdvIGNhc2VzLCB3aGljaCB3b3VsZCByZXF1
aXJlIGEgdG90YWwgb2YKKyAgICAjIHVwIHRvIGZvdXIgcGllY2VzIG9mIHN0YXRlIHRoYXQgY2Fu
bm90IGJlIGVhc2lseSBwYWNrZWQgaW50byB0d28KKyAgICAjIHJlZ2lzdGVycyAoQyBmdW5jdGlv
bnMgY2FuIHJldHVybiB1cCB0byB0d28gcmVnaXN0ZXJzLCBlYXNpbHkpOgorICAgICMKKyAgICAj
IC0gVGhlIGNhbGwgZnJhbWUgcmVnaXN0ZXIuIFRoaXMgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVu
IG1vZGlmaWVkCisgICAgIyAgIGJ5IHRoZSBoZWxwZXIsIGJ1dCB0aGUgY29udmVudGlvbiBpcyB0
aGF0IGl0IHJldHVybnMgaXQuIEl0J3Mgbm90CisgICAgIyAgIHRvdGFsbHkgY2xlYXIgaWYgdGhh
dCdzIG5lY2Vzc2FyeSwgc2luY2UgdGhlIGNmciBpcyBjYWxsZWUgc2F2ZS4KKyAgICAjICAgQnV0
IHRoYXQncyBvdXIgc3R5bGUgaW4gdGhpcyBoZXJlIGludGVycHJldGVyIHNvIHdlIHN0aWNrIHdp
dGggaXQuCisgICAgIworICAgICMgLSBBIGJpdCB0byBzYXkgaWYgdGhlIGhlbHBlciBzdWNjZXNz
ZnVsbHkgZXhlY3V0ZWQgdGhlIGV2YWwgYW5kIGhhcworICAgICMgICB0aGUgcmV0dXJuIHZhbHVl
LCBvciBkaWQgbm90IGV4ZWN1dGUgdGhlIGV2YWwgYnV0IGhhcyBhIFBDIGZvciB1cworICAgICMg
ICB0byBjYWxsLgorICAgICMKKyAgICAjIC0gRWl0aGVyOgorICAgICMgICAtIFRoZSBKUyByZXR1
cm4gdmFsdWUgKHR3byByZWdpc3RlcnMpLCBvcgorICAgICMKKyAgICAjICAgLSBUaGUgUEMgdG8g
Y2FsbC4KKyAgICAjCisgICAgIyBJdCB0dXJucyBvdXQgdG8gYmUgZWFzaWVyIHRvIGp1c3QgYWx3
YXlzIGhhdmUgdGhpcyByZXR1cm4gdGhlIGNmcgorICAgICMgYW5kIGEgUEMgdG8gY2FsbCwgYW5k
IHRoYXQgUEMgbWF5IGJlIGEgZHVtbXkgdGh1bmsgdGhhdCBqdXN0CisgICAgIyByZXR1cm5zIHRo
ZSBKUyB2YWx1ZSB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgIAorICAgIHNsb3dQYXRoRm9y
Q2FsbCg0LCBfbGxpbnRfaGVscGVyX2NhbGxfZXZhbCkKKworCitfbGxpbnRfZ2VuZXJpY19yZXR1
cm5fcG9pbnQ6CisgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorCisKK19sbGludF9vcF90ZWFyX29m
Zl9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVt
cHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZAorICAgIGJpZXEgVGFnT2Zm
c2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENy
ZWF0ZWQKKy5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZDoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKKy5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3Jl
YXRlZDoKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF90ZWFyX29mZl9hcmd1bWVudHM6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN1YmkgMSwg
dDAgICAjIEdldCB0aGUgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyCisgICAgYmllcSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBcmd1bWVudHNOb3RD
cmVhdGVkCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cykK
Ky5vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFj
cm8gZG9SZXR1cm4oKQorICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCisgICAgbG9hZHAgQ2Fs
bGVyRnJhbWVbY2ZyXSwgY2ZyCisgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4o
dDIpCisgICAgcmV0CitlbmQKKworX2xsaW50X29wX3JldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgZG9SZXR1cm4oKQor
CisKK19sbGludF9vcF9jYWxsX3B1dF9yZXN1bHQ6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAg
c3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB0cmFjZUV4ZWN1dGlvbigpICMgTmVlZHMgdG8gYmUgaGVy
ZSBiZWNhdXNlIGl0IHdvdWxkIGNsb2JiZXIgdDEsIHQwCisgICAgZGlzcGF0Y2goMikKKworCitf
bGxpbnRfb3BfcmV0X29iamVjdF9vcl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
aGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywg
Lm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5
cGVbdDJdLCBPYmplY3RUeXBlLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBkb1Jl
dHVybigpCisKKy5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdDoKKyAgICBsb2FkaSA4W1BDXSwg
dDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgZG9SZXR1cm4o
KQorCisKK19sbGludF9vcF9tZXRob2RfY2hlY2s6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
ICMgV2UgaWdub3JlIG1ldGhvZCBjaGVja3MgYW5kIHVzZSBub3JtYWwgZ2V0X2J5X2lkIG9wdGlt
aXphdGlvbnMuCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3RyY2F0OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3RyY2F0KQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3RvX3ByaW1pdGl2ZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
b3BUb1ByaW1pdGl2ZUlzSW1tCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQy
CisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0s
IFN0cmluZ1R5cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2UKKy5vcFRvUHJpbWl0aXZlSXNJbW06
CisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb1ByaW1pdGl2
ZVNsb3dDYXNlOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19wcmltaXRpdmUpCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZ2V0X3BuYW1lczoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9wbmFtZXMpCisgICAgZGlz
cGF0Y2goMCkgIyBUaGUgaGVscGVyIGVpdGhlciBhZHZhbmNlcyB0aGUgUEMgb3IganVtcHMgdXMg
dG8gc29tZXdoZXJlIGVsc2UuCisKKworX2xsaW50X29wX25leHRfcG5hbWU6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkaSAxNltQQ10sIHQyCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSwgdDAKKyAgICBiaWVxIHQwLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDIsIDhdLCAub3BOZXh0UG5hbWVFbmQKKyAgICBsb2FkaSAyMFtQQ10s
IHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICBsb2FkcCBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2pzU3RyaW5nc1t0Ml0sIHQzCisgICAgbG9hZGkgW3Qz
LCB0MCwgOF0sIHQzCisgICAgYWRkaSAxLCB0MAorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBU
YWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDMsIDhdLCB0MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGJw
bmVxIHQxLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIC5v
cE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hl
ZFByb3RvdHlwZUNoYWluW3QyXSwgdDAKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0
b3JbdDBdLCB0MAorICAgIGJ0cHogW3QwXSwgLm9wTmV4dFBuYW1lVGFyZ2V0Cisub3BOZXh0UG5h
bWVDaGVja1Byb3RvdHlwZUxvb3A6CisgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsg
VGFnT2Zmc2V0W3QxXSwgTnVsbFRhZywgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRwIFN0cnVj
dHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QxXSwgdDIKKyAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QyXSwgdDEKKyAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1l
U2xvdworICAgIGFkZHAgNCwgdDAKKyAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1By
b3RvdHlwZUxvb3AKKy5vcE5leHRQbmFtZVRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgyNFtQ
Q10pCisKKy5vcE5leHRQbmFtZUVuZDoKKyAgICBkaXNwYXRjaCg3KQorCisub3BOZXh0UG5hbWVT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXh0X3BuYW1lKSAjIFRoaXMgZWl0
aGVyIGtlZXBzIHRoZSBQQyB3aGVyZSBpdCB3YXMgKGNhdXNpbmcgdXMgdG8gbG9vcCkgb3Igc2V0
cyBpdCB0byB0YXJnZXQuCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfcHVzaF9zY29w
ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1
c2hfc2NvcGUpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9wX3Njb3BlOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9wX3Njb3Bl
KQorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3B1c2hfbmV3X3Njb3BlOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9uZXdfc2Nv
cGUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfY2F0Y2g6CisgICAgIyBUaGlzIGlz
IHdoZXJlIHdlIGVuZCB1cCBmcm9tIHRoZSBKSVQncyB0aHJvdyB0cmFtcG9saW5lIChiZWNhdXNl
IHRoZQorICAgICMgbWFjaGluZSBjb2RlIHJldHVybiBhZGRyZXNzIHdpbGwgYmUgc2V0IHRvIF9s
bGludF9vcF9jYXRjaCksIGFuZCBmcm9tCisgICAgIyB0aGUgaW50ZXJwcmV0ZXIncyB0aHJvdyB0
cmFtcG9saW5lIChzZWUgX2xsaW50X3Rocm93X3RyYW1wb2xpbmUpLgorICAgICMgVGhlIEpJVCB0
aHJvd2luZyBwcm90b2NvbCBjYWxscyBmb3IgdGhlIGNmciB0byBiZSBpbiB0MC4gVGhlIHRocm93
aW5nCisgICAgIyBjb2RlIG11c3QgaGF2ZSBrbm93biB0aGF0IHdlIHdlcmUgdGhyb3dpbmcgdG8g
dGhlIGludGVycHJldGVyLCBhbmQgaGF2ZQorICAgICMgc2V0IEpTR2xvYmFsRGF0YTo6dGFyZ2V0
SW50ZXJwcmV0ZXJQQ0ZvclRocm93LgorICAgIG1vdmUgdDAsIGNmcgorICAgIGxvYWRwIEpJVFN0
YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6dGFy
Z2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93W3QzXSwgUEMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6
OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdLCB0MAorICAgIGxvYWRpIEpTR2xvYmFsRGF0
YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSwgdDEKKyAgICBzdG9yZWkgMCwgSlNHbG9iYWxE
YXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBFbXB0eVZhbHVl
VGFnLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10gICAgICAgCisgICAg
bG9hZGkgNFtQQ10sIHQyCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB0cmFjZUV4ZWN1dGlv
bigpICAjIFRoaXMgbmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY2xv
YmJlciB0MCwgdDEsIHQyLCB0MyBhYm92ZS4KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9v
cF90aHJvdzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3Rocm93KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93X3JlZmVyZW5j
ZV9lcnJvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9v
cF9qc3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFk
ZGkgMyAqIDQsIFBDLCB0MQorICAgIHN0b3JlaSB0MSwgW2NmciwgdDAsIDhdCisgICAgZGlzcGF0
Y2hCcmFuY2goOFtQQ10pCisKKworX2xsaW50X29wX3NyZXQ6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFtjZnIsIHQwLCA4XSwgUEMKKyAgICBk
aXNwYXRjaCgwKQorCisKK19sbGludF9vcF9kZWJ1ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlYnVnKQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX3Byb2ZpbGVfd2lsbF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBi
dHB6IEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIC5vcFByb2Zp
bGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV93aWxs
X2NhbGwpCisub3BQcm9maWxlV2lsbENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xs
aW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0cHog
SklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgLm9wUHJvZmlsZURp
ZENhbGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwp
Cisub3BQcm9maWxlRGlkQ2FsbERvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3Bf
ZW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9n
dWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0
dXJuKCkKKworCitfbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdo
ZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTElu
dEhlbHBlcnMpLCBzbworICAgICMgdGhlIHRocm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkg
aW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0byBoZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxs
eSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3Rh
Y2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxs
RnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGlu
ZVBDRm9yVGhyb3dbdDFdCisKKworX2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6
CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0
YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2Fs
bEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hp
bmVQQ0ZvclRocm93W3QxXQorCisKKyMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGlu
ayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgorIyBUaGVzZSBvcGNv
ZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdl
IGFzc2VydAorIyBhcyBtdWNoLgorCittYWNybyBub3RTdXBwb3J0ZWQoKQorICAgIGlmIEFTU0VS
VF9FTkFCTEVECisgICAgICAgIGNyYXNoKCkKKyAgICBlbHNlCisgICAgICAgICMgV2Ugc2hvdWxk
IHVzZSB3aGF0ZXZlciB0aGUgc21hbGxlc3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24gaXMsIGp1c3Qg
dG8KKyAgICAgICAgIyBlbnN1cmUgdGhhdCB0aGVyZSBpcyBhIGdhcCBiZXR3ZWVuIGluc3RydWN0
aW9uIGxhYmVscy4gSWYgbXVsdGlwbGUKKyAgICAgICAgIyBzbWFsbGVzdCBpbnN0cnVjdGlvbnMg
ZXhpc3QsIHdlIHNob3VsZCBwaWNrIHRoZSBvbmUgdGhhdCBpcyBtb3N0CisgICAgICAgICMgbGlr
ZWx5IHJlc3VsdCBpbiBleGVjdXRpb24gYmVpbmcgaGFsdGVkLiBDdXJyZW50bHkgdGhhdCBpcyB0
aGUgYnJlYWsKKyAgICAgICAgIyBpbnN0cnVjdGlvbiBvbiBhbGwgYXJjaGl0ZWN0dXJlcyB3ZSdy
ZSBpbnRlcmVzdGVkIGluLiAoQnJlYWsgaXMgaW50MworICAgICAgICAjIG9uIEludGVsLCB3aGlj
aCBpcyAxIGJ5dGUsIGFuZCBia3B0IG9uIEFSTXY3LCB3aGljaCBpcyAyIGJ5dGVzLikKKyAgICAg
ICAgYnJlYWsKKyAgICBlbmQKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAg
ICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2NoYWluOgorICAgIG5vdFN1
cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX2NoYWluOgorICAgIG5vdFN1
cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3Byb3RvOgorICAgIG5vdFN1
cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3NlbGY6CisgICAgbm90U3Vw
cG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRl
ZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX2NoYWluOgorICAgIG5vdFN1cHBvcnRl
ZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3Byb3RvOgorICAgIG5vdFN1cHBvcnRl
ZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3NlbGY6CisgICAgbm90U3VwcG9ydGVk
KCkKKworX2xsaW50X29wX2dldF9ieV9pZF9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitf
bGxpbnRfb3BfZ2V0X2J5X2lkX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29w
X2dldF9zdHJpbmdfbGVuZ3RoOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRf
YnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lk
X3JlcGxhY2U6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFu
c2l0aW9uOgorICAgIG5vdFN1cHBvcnRlZCgpCisKKworIyBJbmRpY2F0ZSB0aGUgZW5kIG9mIExM
SW50LgorX2xsaW50X2VuZDoKKyAgICBjcmFzaCgpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50
T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKwor
I2luY2x1ZGUgIkxMSW50QXNzZW1ibHkuaCIKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisjZGVmaW5lIExvd0xl
dmVsSW50ZXJwcmV0ZXJfaAorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKKyNkZWZpbmUgTExJTlRf
SU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxlbmd0aCkgZXh0ZXJuICJDIiB2b2lkIGxsaW50XyMj
b3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wp
OworI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wKKworZXh0ZXJuICJDIiB2b2lkIGxsaW50
X2JlZ2luKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW5kKCk7CitleHRlcm4gIkMiIHZvaWQg
bGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2V2YWxfcHJv
bG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1
ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9n
dWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
aygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlf
Y2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9nZW5lcmljX3JldHVybl9wb2ludCgpOwor
ZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUoKTsKK2V4
dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKCk7CisKKyNl
bmRpZiAvLyBMb3dMZXZlbEludGVycHJldGVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FybXY3LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkzIEBACisj
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitjbGFzcyBTcGVjaWFsUmVnaXN0
ZXIKKyAgZGVmIGluaXRpYWxpemUobmFtZSkKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAor
ICBkZWYgYXJtVjdPcGVyYW5kCisgICAgQG5hbWUKKyAgZW5kCitlbmQKKworQVJNdjdfREFUQV9S
RUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJpcCIpCitBUk12N19BRERSX1JFRyA9IFNwZWNpYWxS
ZWdpc3Rlci5uZXcoInIzIikKKworZGVmIG1vdmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQor
ICAjIEN1cnJlbnRseSB3ZSBvbmx5IGhhbmRsZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBi
YWNrIHRvIG1vdi9tb3Z0IGZvciB0aGUgY29tcGxleCBvbmVzLgorICBpZiB2YWx1ZSA+PSAwICYm
IHZhbHVlIDwgMjU2CisgICAgJGFzbS5wdXRzICJtb3Z3IFwjI3t2YWx1ZX0sICN7cmVnaXN0ZXIu
YXJtVjdPcGVyYW5kfSIKKyAgZWxzaWYgKH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1Ngor
ICAgICRhc20ucHV0cyAibXZudyBcIyN7fnZhbHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9
IgorICBlbHNlCisgICAgJGFzbS5wdXRzICJtb3Z3IFwjI3t2YWx1ZSAmIDB4ZmZmZn0sICN7cmVn
aXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBpZiAodmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCisg
ICAgICAkYXNtLnB1dHMgIm1vdnQgXCMje3ZhbHVlID4+IDE2fSwgI3tyZWdpc3Rlci5hcm1WN09w
ZXJhbmR9IgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBh
cm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAg
ICAgICJyMCIKKyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgICJyMSIKKyAgICB3aGVu
ICJ0MiIsICJhMiIKKyAgICAgICJyMiIKKyAgICB3aGVuICJhMyIKKyAgICAgICJyMyIKKyAgICB3
aGVuICJ0MyIKKyAgICAgICJyNCIKKyAgICB3aGVuICJ0NCIKKyAgICAgICJyNyIKKyAgICB3aGVu
ICJjZnIiCisgICAgICAicjUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5k
CisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAK
KyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVu
ZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkCisgIGVuZAorZW5kCisK
K2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisg
ICAgd2hlbiAiZnQwIiwgImZyIgorICAgICAgImQwIgorICAgIHdoZW4gImZyMSIsCisgICAgICAi
ZDEiCisgICAgd2hlbiAiZnIyIgorICAgICAgImQyIgorICAgIHdoZW4gImZyMyIKKyAgICAgICJk
MyIKKyAgICB3aGVuICJmcjQiCisgICAgICAiZDQiCisgICAgd2hlbiAiZnI1IgorICAgICAgImQ1
IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3
UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3Np
YmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1W
N0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZCBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVk
aWF0ZQorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2UgIkludmFsaWQgaW1tZWRpYXRlICN7
dmFsdWV9IiBpZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAiIyR7dmFsdWV9IgorICBl
bmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisg
IAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAg
ZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgeWllbGQgc2VsZgorICBlbmQK
K2VuZAorCittb2R1bGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisgIGRlZiBhcm1WN0xvYWRTdG9y
ZVdyYXAKKyAgICBzZWxmLmFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICRh
c20ucHV0cyAiXHRsZHIgI3tzZWxmLmFybVY3UG9zc2libHlNZW1vcnlPcGVyYW5kfSwgI3tBUk12
N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9IgorICAgIHlpZWxkIEFSTXY3X0RBVEFfUkVHCisgICAg
JGFzbS5wdXRzICJcdHN0ciAje0FSTXY3X0RBVEFfUkVHLmFybVY3T3BlcmFuZH0sICN7c2VsZi5h
cm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFuZH0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MK
KyAgaW5jbHVkZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9z
c2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0
LnZhbHVlID4gMHhmZmYKKyAgICAgIG1vdmVJbW1lZGlhdGUob2Zmc2V0LnZhbHVlLCBBUk12N19B
RERSX1JFRykKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9w
ZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZm
ZgorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tBUk12N19BRERSX1JFRy5hcm1WN09w
ZXJhbmR9XSIKKyAgICBlbHNlCisgICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje29mZnNl
dC5hcm1WN09wZXJhbmR9XSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4
CisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBv
c3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICBtb3Zl
SW1tZWRpYXRlKG9mZnNldC52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgICAgICAkYXNtLnB1dHMg
ImFkZHcgI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5k
fSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQK
KyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAgICAgIlsje0FSTXY3X0FERFJfUkVHLmFybVY3
T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVs
c2UKKyAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwg
bHNsIFwjI3tzY2FsZX1dIgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFk
ZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKyAgCisgIGRlZiBhcm1WN1By
ZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBtb3ZlSW1tZWRpYXRlKGFkZHJlc3MudmFs
dWUsIEFSTXY3X0FERFJfUkVHKQorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5
T3BlcmFuZAorICAgICJbI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgZW5kCitl
bmQKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDgzIEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVf
XykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFy
c2VyIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2NsYXNzIEFz
c2VtYmxlcgorICBkZWYgaW5pdGlhbGl6ZShvdXRwKQorICAgIEBvdXRwID0gb3V0cAorICAgIEBz
dGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBkZWYgZW50ZXJBc20KKyAgICBAb3V0cC5wdXRzICJh
c20gKCIKKyAgICBAc3RhdGUgPSA6YXNtCisgIGVuZAorICAKKyAgZGVmIGxlYXZlQXNtCisgICAg
QG91dHAucHV0cyAiKTsiCisgICAgQHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBpbkFz
bQorICAgIGVudGVyQXNtCisgICAgeWllbGQKKyAgICBsZWF2ZUFzbQorICBlbmQKKyAgCisgIGRl
ZiBwdXRzKGxpbmUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAgQG91dHAu
cHV0cygobGluZSArICJcbiIpLmluc3BlY3QpCisgIGVuZAorICAKKyAgZGVmIGNvbW1lbnQodGV4
dCkKKyAgICBAb3V0cC5wdXRzICIvLyAje3RleHR9IgorICBlbmQKK2VuZAorCiskYXNtID0gQXNz
ZW1ibGVyLm5ldygkc3Rkb3V0KQorCithc21GaWxlID0gQVJHVi5zaGlmdAorb2Zmc2V0c0ZpbGUg
PSBBUkdWLnNoaWZ0CisKK2FzdCA9IHBhcnNlKGxleChJTzo6cmVhZChhc21GaWxlKSkpCitvZmZz
ZXRzTGlzdCwgY29uZmlnSW5kZXggPSBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KG9mZnNl
dHNGaWxlKQorCitmb3JTZXR0aW5ncyhjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KVtj
b25maWdJbmRleF0sIGFzdCkgeworICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBi
YWNrZW5kIHwKKyAgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICBsb3dM
ZXZlbEFTVCA9IGxvd0xldmVsQVNULnJlc29sdmUoKmJ1aWxkT2Zmc2V0c01hcChsb3dMZXZlbEFT
VCwgb2Zmc2V0c0xpc3QpKQorICBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRp
bmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCkgeworICAgICRhc20uaW5Bc20geworICAgICAgbG93
TGV2ZWxBU1QubG93ZXIoYmFja2VuZCkKKyAgICB9CisgIH0KK30KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODE3IEBA
CisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBCYXNlIHV0aWxpdHkgdHlwZXMgZm9yIHRoZSBBU1QuICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworCisjIFZhbGlkIG1ldGhvZHMgZm9yIE5vZGU6CisjCisjIG5vZGUuY2hpbGRy
ZW4gLT4gUmV0dXJucyBhbiBhcnJheSBvZiBpbW1lZGlhdGUgY2hpbGRyZW4uCisjCisjIG5vZGUu
ZGVzY2VuZGVudHMgLT4gUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgc3RyaWN0IGRlc2NlbmRhbnRz
IChjaGlsZHJlbgorIyAgICAgYW5kIGNoaWxkcmVuIG9mIGNoaWxkcmVuLCB0cmFuc2l0aXZlbHkp
LgorIworIyBub2RlLmZsYXR0ZW4gLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBz
dHJpY3QgZGVzY2VuZGFudHMgYW5kCisjICAgICB0aGUgbm9kZSBpdHNlbGYuCisjCisjIG5vZGUu
ZmlsdGVyKHR5cGUpIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aG9zZSBlbGVtZW50
cyBpbgorIyAgICAgbm9kZS5mbGF0dGVuIHRoYXQgYXJlIG9mIHRoZSBnaXZlbiB0eXBlIChpc19h
PyB0eXBlIHJldHVybnMgdHJ1ZSkuCisjCisjIG5vZGUubWFwQ2hpbGRyZW57fHZ8IC4uLn0gLT4g
UmV0dXJucyBhIG5ldyBub2RlIHdpdGggYWxsIGNoaWxkcmVuCisjICAgICByZXBsYWNlZCBhY2Nv
cmRpbmcgdG8gdGhlIGdpdmVuIGJsb2NrLgorIworIyBFeGFtcGxlczoKKyMKKyMgbm9kZS5maWx0
ZXIoU2V0dGluZykudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc2V0dGluZ3MgdGhhdCB0aGUg
QVNUJ3MKKyMgICAgIElmVGhlbkVsc2UgYmxvY2tzIGRlcGVuZCBvbi4KKyMKKyMgbm9kZS5maWx0
ZXIoU3RydWN0T2Zmc2V0KS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzdHJ1Y3R1cmUgb2Zm
c2V0cworIyAgICAgdGhhdCB0aGUgQVNUIGRlcGVuZHMgb24uCisKK2NsYXNzIE5vZGUKKyAgYXR0
cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisg
ICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgIGVuZAorICAKKyAgZGVmIGNvZGVPcmlnaW5T
dHJpbmcKKyAgICAibGluZSBudW1iZXIgI3tAY29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVm
IGRlc2NlbmRhbnRzCisgICAgY2hpbGRyZW4uY29sbGVjdHt8dnwgdi5mbGF0dGVufS5mbGF0dGVu
CisgIGVuZAorICAKKyAgZGVmIGZsYXR0ZW4KKyAgICBbc2VsZl0gKyBkZXNjZW5kYW50cworICBl
bmQKKyAgCisgIGRlZiBmaWx0ZXIodHlwZSkKKyAgICBmbGF0dGVuLnNlbGVjdHt8dnwgdi5pc19h
PyB0eXBlfQorICBlbmQKK2VuZAorCitjbGFzcyBOb0NoaWxkcmVuIDwgTm9kZQorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgW10KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBz
ZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldEtleQorICBhdHRyX3JlYWRlciA6
c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKHN0cnVjdCwgZmllbGQpCisgICAg
QHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAgZGVmIGhh
c2gKKyAgICBAc3RydWN0Lmhhc2ggKyBAZmllbGQuaGFzaCAqIDMKKyAgZW5kCisgIAorICBkZWYg
ZXFsPyhvdGhlcikKKyAgICBAc3RydWN0ID09IG90aGVyLnN0cnVjdCBhbmQgQGZpZWxkID09IG90
aGVyLmZpZWxkCisgIGVuZAorZW5kCisgICAgCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBBU1Qgbm9kZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
CitjbGFzcyBTdHJ1Y3RPZmZzZXQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3Qs
IDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQg
PSBmaWVsZAorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JG
aWVsZChjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGtleSA9IFN0cnVjdE9mZnNldEtl
eS5uZXcoc3RydWN0LCBmaWVsZCkKKyAgICAKKyAgICB1bmxlc3MgQEBtYXBwaW5nW2tleV0KKyAg
ICAgIEBAbWFwcGluZ1trZXldID0gU3RydWN0T2Zmc2V0Lm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3Qs
IGZpZWxkKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1trZXldCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiI3tzdHJ1Y3R9Ojoje2ZpZWxkfSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVy
KQorICAgIGlmIEBzdHJ1Y3QgIT0gb3RoZXIuc3RydWN0CisgICAgICByZXR1cm4gQHN0cnVjdCA8
PT4gb3RoZXIuc3RydWN0CisgICAgZW5kCisgICAgQGZpZWxkIDw9PiBvdGhlci5maWVsZAorICBl
bmQKK2VuZAorCitjbGFzcyBTaXplb2YgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1
Y3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgZW5kCisgIAorICBAQG1hcHBpbmcg
PSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgdW5s
ZXNzIEBAbWFwcGluZ1tzdHJ1Y3RdCisgICAgICBAQG1hcHBpbmdbc3RydWN0XSA9IFNpemVvZi5u
ZXcoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tzdHJ1Y3RdCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAic2l6ZW9mICN7QHN0cnVjdH0iCisgIGVuZAorICAK
KyAgZGVmIDw9PihvdGhlcikKKyAgICBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgZW5kCitl
bmQKKworY2xhc3MgSW1tZWRpYXRlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6dmFsdWUK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhbHVlKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIj
e3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYgPT0ob3RoZXIpCisgICAgb3RoZXIuaXNfYT8gSW1t
ZWRpYXRlIGFuZCBvdGhlci52YWx1ZSA9PSBAdmFsdWUKKyAgZW5kCitlbmQKKworY2xhc3MgQWRk
SW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbgorICAgIEFkZEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5
aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0g
KyAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcyA8IE5v
ZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9
IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIFN1Yklt
bWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gLSAje3JpZ2h0LmR1bXB9
KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFk
ZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwg
cmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmln
aHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0
XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE11bEltbWVkaWF0ZXMubmV3KGNv
ZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKiAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQK
KworY2xhc3MgTmVnSW1tZWRpYXRlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGNo
aWxkXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5lZ0ltbWVkaWF0ZS5uZXco
Y29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
KC0je0BjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQgPCBOb0No
aWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVu
ZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdp
biwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFt
ZV0gPSBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFw
cGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAor
CitjbGFzcyBGUFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisg
IGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5n
W25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBGUFJlZ2lzdGVySUQubmV3KGNvZGVPcmln
aW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlIDwgTm9DaGlsZHJl
bgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAg
CisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5h
bWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0g
VmFyaWFibGUubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25h
bWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNz
IEFkZHJlc3MgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6b2Zmc2V0CisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgW0BiYXNlLCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVs
ZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsj
e2Jhc2UuZHVtcH1dIgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXggPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpiYXNlLCA6aW5kZXgsIDpzY2FsZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAaW5kZXggPSBpbmRleAorICAgIEBz
Y2FsZSA9IHNjYWxlCisgICAgcmFpc2UgdW5sZXNzIFsxLCAyLCA0LCA4XS5tZW1iZXI/IEBzY2Fs
ZQorICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBb
QGJhc2UsIEBpbmRleCwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAaW5kZXgp
LCBAc2NhbGUsICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIj
e29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH0sICN7aW5kZXguZHVtcH0sICN7c2NhbGV9XSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzIDwgTm9DaGlsZHJlbgorICBhdHRyX3Jl
YWRlciA6YWRkcmVzcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYWRkcmVzcykK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBhZGRyZXNzID0gYWRkcmVzcworICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIiN7YWRkcmVzcy5kdW1wfVtdIgorICBlbmQKK2VuZAorCitjbGFz
cyBJbnN0cnVjdGlvbiA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBvcGNvZGUsIG9wZXJhbmRzKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQG9wY29kZSA9IG9wY29kZQorICAgIEBvcGVyYW5kcyA9IG9w
ZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgb3BlcmFuZHMKKyAgZW5kCisg
IAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmln
aW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIlx0IiArIG9wY29kZS50b19zICsgIiAiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5k
dW1wfS5qb2luKCIsICIpCisgIGVuZAorZW5kCisKK2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRlcnJvciIKKyAgZW5kCitlbmQKKworY2xhc3MgQ29u
c3REZWNsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6dmFyaWFibGUsIDp2YWx1ZQorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQHZhcmlhYmxlID0gdmFyaWFibGUKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBl
bmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAdmFyaWFibGUsIEB2YWx1ZV0KKyAgZW5kCisg
IAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBDb25zdERlY2wubmV3KGNvZGVPcmlnaW4sICh5aWVs
ZCBAdmFyaWFibGUpLCAoeWllbGQgQHZhbHVlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICJjb25zdCAje0B2YXJpYWJsZS5kdW1wfSA9ICN7QHZhbHVlLmR1bXB9IgorICBlbmQKK2VuZAor
CiskbGFiZWxNYXBwaW5nID0ge30KKworY2xhc3MgTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJf
cmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIHNl
bGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0K
KyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJl
bE1hcHBpbmdbbmFtZV0uaXNfYT8gTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5n
W25hbWVdID0gTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVs
TWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBl
bmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKworICBAQHVuaXF1ZU5hbWVDb3Vu
dGVyID0gMAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlm
ICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjog
I3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTG9jYWxMYWJlbAorICAg
IGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBMb2NhbExhYmVsLm5ldyhjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAor
ICBkZWYgc2VsZi51bmlxdWUoY29tbWVudCkKKyAgICBuZXdOYW1lID0gIl8je2NvbW1lbnR9Igor
ICAgIGlmICRsYWJlbE1hcHBpbmdbbmV3TmFtZV0KKyAgICAgIHdoaWxlICRsYWJlbE1hcHBpbmdb
bmV3TmFtZSA9ICJfI3tAQHVuaXF1ZU5hbWVDb3VudGVyfV8je2NvbW1lbnR9Il0KKyAgICAgICAg
QEB1bmlxdWVOYW1lQ291bnRlciArPSAxCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBmb3JOYW1l
KG5pbCwgbmV3TmFtZSkKKyAgZW5kCisgIAorICBkZWYgY2xlYW5OYW1lCisgICAgaWYgbmFtZSA9
fiAvXlwuLworICAgICAgIl8iICsgbmFtZVsxLi4tMV0KKyAgICBlbHNlCisgICAgICBuYW1lCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5k
CisKK2NsYXNzIExhYmVsUmVmZXJlbmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBb
QGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExhYmVsUmVmZXJlbmNl
Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxhYmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQor
ICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAg
ZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZSA8IE5vQ2hpbGRyZW4KKyAgYXR0
cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxhYmVsKSkK
KyAgZW5kCisgIAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgIGxhYmVsLm5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UgPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpsaXN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBs
aXN0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxpc3QgPSBsaXN0CisgIGVuZAorICAK
KyAgZGVmIGNoaWxkcmVuCisgICAgbGlzdAorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigm
cHJvYykKKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgQGxpc3QubWFwKCZwcm9jKSkKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxpc3QuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCJc
biIpCisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFs
aXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBUcnVlLm5ldwor
ICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVm
IHZhbHVlCisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgInRydWUiCisgIGVu
ZAorZW5kCisKK2NsYXNzIEZhbHNlIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQorICAg
IHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNlID0gRmFsc2UubmV3CisgIAorICBk
ZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUK
KyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImZhbHNlIgorICBlbmQKK2Vu
ZAorCitjbGFzcyBUcnVlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAgIFRydWUuaW5zdGFuY2UKKyAg
ZW5kCitlbmQKKworY2xhc3MgRmFsc2VDbGFzcworICBkZWYgYXNOb2RlCisgICAgRmFsc2UuaW5z
dGFuY2UKKyAgZW5kCitlbmQKKworY2xhc3MgU2V0dGluZyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9y
ZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBp
bmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVu
bGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFNldHRpbmcubmV3
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZCA8IE5vZGUK
KyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxl
ZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtA
bGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFuZC5uZXco
Y29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBhbmQgI3tyaWdodC5kdW1wfSkiCisgIGVuZAor
ZW5kCisKK2NsYXNzIE9yIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAK
KyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1h
cENoaWxkcmVuCisgICAgT3IubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBA
cmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gb3IgI3ty
aWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE5vdCA8IE5vZGUKKyAgYXR0cl9yZWFk
ZXIgOmNoaWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNo
aWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
CisgICAgTm90Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICIobm90ICN7Y2hpbGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBT
a2lwIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRza2lwIgorICBlbmQK
K2VuZAorCitjbGFzcyBJZlRoZW5FbHNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6cHJlZGljYXRl
LCA6dGhlbkNhc2UKKyAgYXR0cl9hY2Nlc3NvciA6ZWxzZUNhc2UKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgdGhlbkNhc2UpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAcHJlZGljYXRlID0gcHJlZGljYXRlCisgICAgQHRoZW5DYXNlID0gdGhlbkNhc2UK
KyAgICBAZWxzZUNhc2UgPSBTa2lwLm5ldyhjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIGlmIEBlbHNlQ2FzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZSwg
QGVsc2VDYXNlXQorICAgIGVsc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2VdCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgSWZUaGVuRWxzZS5uZXcoY29k
ZU9yaWdpbiwgKHlpZWxkIEBwcmVkaWNhdGUpLCAoeWllbGQgQHRoZW5DYXNlKSwgKHlpZWxkIEBl
bHNlQ2FzZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiaWYgI3twcmVkaWNhdGUuZHVt
cH1cbiIgKyB0aGVuQ2FzZS5kdW1wICsgIlxuZWxzZVxuIiArIGVsc2VDYXNlLmR1bXAgKyAiXG5l
bmQiCisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFt
ZSwgOnZhcmlhYmxlcywgOmJvZHkKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5h
bWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0g
bmFtZQorICAgIEB2YXJpYWJsZXMgPSB2YXJpYWJsZXMKKyAgICBAYm9keSA9IGJvZHkKKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAdmFyaWFibGVzICsgW0Bib2R5XQorICBlbmQKKyAg
CisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQHZh
cmlhYmxlcy5tYXB7fHZ8IHlpZWxkIHZ9LCAoeWllbGQgQGJvZHkpKQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgIm1hY3JvICN7bmFtZX0oIiArIHZhcmlhYmxlcy5jb2xsZWN0e3x2fCB2LmR1
bXB9LmpvaW4oIiwgIikgKyAiKVxuIiArIGJvZHkuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQK
KworY2xhc3MgTWFjcm9DYWxsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOm9wZXJhbmRz
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAgIEBvcGVyYW5kcyA9IG9wZXJh
bmRzCisgICAgcmFpc2UgdW5sZXNzIEBvcGVyYW5kcworICAgIEBvcGVyYW5kcy5lYWNoe3x2fCBy
YWlzZSB1bmxlc3Mgdn0KKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAb3BlcmFuZHMK
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgTWFjcm9DYWxsLm5ldyhj
b2RlT3JpZ2luLCBAbmFtZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICAiXHQje25hbWV9KCIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9Lmpv
aW4oIiwgIikgKyAiKSIKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYmFja2VuZHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4
MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0
IgorcmVxdWlyZSAieDg2IgorCitCQUNLRU5EUyA9CisgIFsKKyAgICJYODYiLAorICAgIkFSTXY3
IgorICBdCisKK1dPUktJTkdfQkFDS0VORFMgPQorICBbCisgICAiWDg2IgorICBdCisKK0JBQ0tF
TkRfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgnICsgQkFDS0VORFMuam9pbignKXwoJykgKyAn
KVxcWicpCisKK2NsYXNzIE5vZGUKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgc2VuZCgibG93ZXIi
ICsgbmFtZSkKKyAgZW5kCitlbmQKKworIyBPdmVycmlkZXMgZm9yIGxvd2VyKCkgZm9yIHRob3Nl
IG5vZGVzIHRoYXQgYXJlIGJhY2tlbmQtYWdub3N0aWMKKworZGVmIHNhbml0aXplTGFiZWxOYW1l
KG5hbWUpCisgICMgU29tZSBwbGF0Zm9ybXMgZG9uJ3Qgd2FudCB0aGUgbGVhZGluZyAiXyIuIElm
IHdlIGV2ZXIgd2FudCB0byBkbyBzb21ldGhpbmcKKyAgIyBhYm91dCB0aGF0LCBpdCB3b3VsZCBi
ZSBoZXJlLgorICBuYW1lCitlbmQKKworY2xhc3MgTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisg
ICAgJGFzbS5wdXRzICIuZ2xvYmwgI3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxmLm5hbWUpfSIKKyAg
ICAkYXNtLnB1dHMgIiN7c2FuaXRpemVMYWJlbE5hbWUoc2VsZi5uYW1lKX06IgorICBlbmQKK2Vu
ZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAgICRhc20ucHV0cyAi
TF9vZmZsaW5lYXNtXyN7c2VsZi5uYW1lWzEuLi0xXX06IgorICBlbmQKK2VuZAorCitjbGFzcyBT
a2lwCisgIGRlZiBsb3dlcihuYW1lKQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBk
ZWYgbG93ZXIobmFtZSkKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBu
b2RlLmxvd2VyKG5hbWUpCisgICAgfQorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9l
eHRyYWN0b3IucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY1IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMg
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFj
a2VuZHMiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2V0
dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2RlZiBlbWl0TWFnaWNOdW1iZXIKKyAgT0ZG
U0VUX01BR0lDX05VTUJFUlMuZWFjaCB7CisgICAgfCBudW1iZXIgfAorICAgIHB1dHMgIiN7bnVt
YmVyfSwiCisgIH0KK2VuZAorCitvcmlnaW5hbEFTVCA9IHBhcnNlKGxleCgkc3RkaW4ucmVhZCkp
CisKK2VtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhvcmlnaW5hbEFTVCkgeworICB8IHNldHRp
bmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAgb2Zmc2V0c0xpc3QgPSBhc3QuZmlsdGVyKFN0
cnVjdE9mZnNldCkudW5pcS5zb3J0CisgIHNpemVzTGlzdCA9IGFzdC5maWx0ZXIoU2l6ZW9mKS51
bmlxLnNvcnQKKyAgCisgIGxlbmd0aCA9IChPRkZTRVRfTUFHSUNfTlVNQkVSUy5zaXplICsgMSkg
KiAoMSArIG9mZnNldHNMaXN0LnNpemUgKyBzaXplc0xpc3Quc2l6ZSkKKyAgCisgIHB1dHMgInN0
YXRpYyBjb25zdCB1bnNpZ25lZCBleHRyYWN0b3JUYWJsZVsje2xlbmd0aH1dID0geyIKKyAgZW1p
dE1hZ2ljTnVtYmVyCisgIHB1dHMgIiN7aW5kZXh9LCIKKyAgb2Zmc2V0c0xpc3QuZWFjaCB7Cisg
ICAgfCBvZmZzZXQgfAorICAgIGVtaXRNYWdpY051bWJlcgorICAgIHB1dHMgIk9GRkxJTkVfQVNN
X09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSksIgorICB9CisgIHNp
emVzTGlzdC5lYWNoIHsKKyAgICB8IG9mZnNldCB8CisgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAg
cHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0cnVjdH0pLCIKKyAgfQorICBwdXRzICJ9OyIKK30KKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9u
cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2lu
c3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxODggQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01BQ1JPX0lOU1RSVUNUSU9OUyA9CisgIFsKKyAg
ICJhZGRpIiwKKyAgICJhbmRpIiwKKyAgICJsc2hpZnRpIiwKKyAgICJtdWxpIiwKKyAgICJuZWdp
IiwKKyAgICJub3RpIiwKKyAgICJvcmkiLAorICAgInJzaGlmdGkiLAorICAgInVyc2hpZnRpIiwK
KyAgICJzdWJpIiwKKyAgICJ4b3JpIiwKKyAgICJsb2FkaSIsCisgICAibG9hZGIiLAorICAgImxv
YWRoIiwKKyAgICJzdG9yZWkiLAorICAgInN0b3JlYiIsCisgICAibG9hZGQiLAorICAgIm1vdmVk
IiwKKyAgICJzdG9yZWQiLAorICAgImFkZGQiLAorICAgImRpdmQiLAorICAgInN1YmQiLAorICAg
Im11bGQiLAorICAgInNxcnRkIiwKKyAgICJjaTJkIiwKKyAgICJmaWkyZCIsICMgdXNhZ2U6IGZp
aTJkIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2ln
bmlmaWNhbnQgYml0cz4sIDxmcHI+CisgICAiZmQyaWkiLCAjIHVzYWdlOiBmZDJpaSA8ZnByPiwg
PGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZp
Y2FudCBiaXRzPgorICAgImJkZXEiLAorICAgImJkbmVxIiwKKyAgICJiZGd0IiwKKyAgICJiZGd0
ZXEiLAorICAgImJkbHQiLAorICAgImJkbHRlcSIsCisgICAiYmRlcXVuIiwKKyAgICJiZG5lcXVu
IiwKKyAgICJiZGd0dW4iLAorICAgImJkZ3RlcXVuIiwKKyAgICJiZGx0dW4iLAorICAgImJkbHRl
cXVuIiwKKyAgICJidGQyaSIsCisgICAidGQyaSIsCisgICAiYmNkMmkiLAorICAgIm1vdmR6IiwK
KyAgICJwb3AiLAorICAgInB1c2giLAorICAgIm1vdmUiLAorICAgInN4aTJwIiwKKyAgICJ6eGky
cCIsCisgICAibm9wIiwKKyAgICJiaWVxIiwKKyAgICJiaW5lcSIsCisgICAiYmlhIiwKKyAgICJi
aWFlcSIsCisgICAiYmliIiwKKyAgICJiaWJlcSIsCisgICAiYmlndCIsCisgICAiYmlndGVxIiwK
KyAgICJiaWx0IiwKKyAgICJiaWx0ZXEiLAorICAgImJiZXEiLAorICAgImJibmVxIiwKKyAgICJi
YmEiLAorICAgImJiYWVxIiwKKyAgICJiYmIiLAorICAgImJiYmVxIiwKKyAgICJiYmd0IiwKKyAg
ICJiYmd0ZXEiLAorICAgImJibHQiLAorICAgImJibHRlcSIsCisgICAiYnRpbyIsCisgICAiYnRp
cyIsCisgICAiYnRpeiIsCisgICAiYnRpbnoiLAorICAgImJ0Ym8iLAorICAgImJ0YnMiLAorICAg
ImJ0YnoiLAorICAgImJ0Ym56IiwKKyAgICJqbXAiLAorICAgImJhZGRpbyIsCisgICAiYmFkZGlz
IiwKKyAgICJiYWRkaXoiLAorICAgImJhZGRpbnoiLAorICAgImJzdWJpbyIsCisgICAiYnN1Ymlz
IiwKKyAgICJic3ViaXoiLAorICAgImJzdWJpbnoiLAorICAgImJtdWxpbyIsCisgICAiYm11bGlz
IiwKKyAgICJibXVsaXoiLAorICAgImJtdWxpbnoiLAorICAgImJvcmlvIiwKKyAgICJib3JpcyIs
CisgICAiYm9yaXoiLAorICAgImJvcmlueiIsCisgICAiYnJlYWsiLAorICAgImNhbGwiLAorICAg
InJldCIsCisgICAiY2llcSIsCisgICAiY2luZXEiLAorICAgImNpYSIsCisgICAiY2lhZXEiLAor
ICAgImNpYiIsCisgICAiY2liZXEiLAorICAgImNpZ3QiLAorICAgImNpZ3RlcSIsCisgICAiY2ls
dCIsCisgICAiY2lsdGVxIiwKKyAgICJ0aW8iLAorICAgInRpcyIsCisgICAidGl6IiwKKyAgICJ0
aW56IiwKKyAgICJ0Ym8iLAorICAgInRicyIsCisgICAidGJ6IiwKKyAgICJ0Ym56IiwKKyAgICJw
ZWVrIiwKKyAgICJwb2tlIiwKKyAgICJicGVxIiwKKyAgICJicG5lcSIsCisgICAiYnBhIiwKKyAg
ICJicGFlcSIsCisgICAiYnBiIiwKKyAgICJicGJlcSIsCisgICAiYnBndCIsCisgICAiYnBndGVx
IiwKKyAgICJicGx0IiwKKyAgICJicGx0ZXEiLAorICAgImFkZHAiLAorICAgImFuZHAiLAorICAg
Im9ycCIsCisgICAic3VicCIsCisgICAieG9ycCIsCisgICAibG9hZHAiLAorICAgImNwZXEiLAor
ICAgImNwbmVxIiwKKyAgICJjcGEiLAorICAgImNwYWVxIiwKKyAgICJjcGIiLAorICAgImNwYmVx
IiwKKyAgICJjcGd0IiwKKyAgICJjcGd0ZXEiLAorICAgImNwbHQiLAorICAgImNwbHRlcSIsCisg
ICAic3RvcmVwIiwKKyAgICJidHBvIiwKKyAgICJidHBzIiwKKyAgICJidHB6IiwKKyAgICJidHBu
eiIsCisgICAiYmFkZHBvIiwKKyAgICJiYWRkcHMiLAorICAgImJhZGRweiIsCisgICAiYmFkZHBu
eiIKKyAgXQorCitYODZfSU5TVFJVQ1RJT05TID0KKyAgWworICAgImNkcWkiLAorICAgImlkaXZp
IgorICBdCisKK0lOU1RSVUNUSU9OUyA9IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVD
VElPTlMKKworSU5TVFJVQ1RJT05fUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIElOU1RS
VUNUSU9OUy5qb2luKCcpfCgnKSArICcpKVxcWicpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0
YW50cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitNQUdJQ19OVU1CRVJT
ID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE1NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAi
YXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMiCisKK09GRlNFVF9NQUdJ
Q19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgb2Zmc2V0c0xpc3QoYXN0KSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBzaXplc0xpc3QoYXN0KSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgUmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgc2l6ZXMgdXNlZCBi
eSB0aGUgQVNULiAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKworZGVmIG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQp
LnVuaXEuc29ydAorZW5kCisKK2RlZiBzaXplc0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFNpemVv
ZikudW5pcS5zb3J0CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
b2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChhc3QsIGZpbGUpIC0+ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyAgICAgW29mZnNldHMsIGluZGV4XSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUGFyc2Vz
IHRoZSBvZmZzZXRzIGZyb20gYSBmaWxlIGFuZCByZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFu
ZCB0aGUgIworIyBpbmRleCBvZiB0aGUgY29uZmlndXJhdGlvbiB0aGF0IGlzIHZhbGlkIGluIHRo
aXMgYnVpbGQgdGFyZ2V0LiAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworCitkZWYgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChmaWxlKQorICBpbmRleCA9IG5p
bAorICBvZmZzZXRzID0gW10KKyAgZW5kaWFubmVzc01hcmtlckJ5dGVzID0gbmlsCisgIAorICBk
ZWYgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgYnl0ZXMgPSBbXQorICAgIDQudGltZXMg
eworICAgICAgYnl0ZXMgPDwgaW5wLmdldGJ5dGUKKyAgICB9CisgICAgCisgICAgaWYgZW5kaWFu
bmVzcyA9PSA6bGl0dGxlCisgICAgICAjIExpdHRsZSBlbmRpYW4KKyAgICAgIChieXRlc1swXSA8
PCAwIHwKKyAgICAgICBieXRlc1sxXSA8PCA4IHwKKyAgICAgICBieXRlc1syXSA8PCAxNiB8Cisg
ICAgICAgYnl0ZXNbM10gPDwgMjQpCisgICAgZWxzZQorICAgICAgIyBCaWcgZW5kaWFuCisgICAg
ICAoYnl0ZXNbMF0gPDwgMjQgfAorICAgICAgIGJ5dGVzWzFdIDw8IDE2IHwKKyAgICAgICBieXRl
c1syXSA8PCA4IHwKKyAgICAgICBieXRlc1szXSA8PCAwKQorICAgIGVuZAorICBlbmQKKyAgCisg
IFs6bGl0dGxlLCA6YmlnXS5lYWNoIHsKKyAgICB8IGVuZGlhbm5lc3MgfAorICAgIG1hZ2ljQnl0
ZXMgPSBbXQorICAgIE1BR0lDX05VTUJFUlMuZWFjaCB7CisgICAgICB8IG51bWJlciB8CisgICAg
ICBjdXJyZW50Qnl0ZXMgPSBbXQorICAgICAgNC50aW1lcyB7CisgICAgICAgIGN1cnJlbnRCeXRl
cyA8PCAobnVtYmVyICYgMHhmZikKKyAgICAgICAgbnVtYmVyID4+PSA4CisgICAgICB9CisgICAg
ICBpZiBlbmRpYW5uZXNzID09IDpiaWcKKyAgICAgICAgY3VycmVudEJ5dGVzLnJldmVyc2UhCisg
ICAgICBlbmQKKyAgICAgIG1hZ2ljQnl0ZXMgKz0gY3VycmVudEJ5dGVzCisgICAgfQorICAgIAor
ICAgIEZpbGUub3BlbihmaWxlLCAiciIpIHsKKyAgICAgIHwgaW5wIHwKKyAgICAgIHdoZXJlSW5N
YXJrZXIgPSAwCisgICAgICBsb29wIHsKKyAgICAgICAgYnl0ZSA9IGlucC5nZXRieXRlCisgICAg
ICAgIGJyZWFrIHVubGVzcyBieXRlCisgICAgICAgIGlmIGJ5dGUgPT0gbWFnaWNCeXRlc1t3aGVy
ZUluTWFya2VyXQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIgKz0gMQorICAgICAgICAgIGlmIHdo
ZXJlSW5NYXJrZXIgPT0gbWFnaWNCeXRlcy5zaXplCisgICAgICAgICAgICAjIFdlIGhhdmUgYSBt
YXRjaCEgSWYgd2UgaGF2ZSBub3QgeWV0IHJlYWQgdGhlIGVuZGlhbm5lc3MgbWFya2VyIGFuZCBp
bmRleCwKKyAgICAgICAgICAgICMgdGhlbiByZWFkIHRob3NlIG5vdzsgb3RoZXJ3aXNlIHJlYWQg
YW4gb2Zmc2V0LgorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiBub3QgaW5kZXgKKyAgICAg
ICAgICAgICAgaW5kZXggPSByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgb2Zmc2V0cyA8PCByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAg
ICAgICAgICAgIGVuZAorICAgICAgICAgICAgCisgICAgICAgICAgICB3aGVyZUluTWFya2VyID0g
MAorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgd2hlcmVJbk1hcmtlciA9
IDAKKyAgICAgICAgZW5kCisgICAgICB9CisgICAgfQorICAgIAorICAgIGJyZWFrIGlmIGluZGV4
CisgIH0KKyAgCisgIHJhaXNlIHVubGVzcyBpbmRleAorICAKKyAgW29mZnNldHMsIGluZGV4XQor
ZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGJ1aWxkT2Zmc2V0c01h
cChhc3QsIG9mZnNldHNMaXN0KSAtPiBbb2Zmc2V0cywgc2l6ZXNdICAgICAgICAgICAgICAgICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBCdWlsZHMgYSBtYXBwaW5nIGJldHdlZW4gU3RydWN0T2Zmc2V0
IG5vZGVzIGFuZCB0aGVpciB2YWx1ZXMuICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworCitkZWYgYnVpbGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpCisgIG9m
ZnNldHNNYXAgPSB7fQorICBzaXplc01hcCA9IHt9CisgIGFzdE9mZnNldHNMaXN0ID0gb2Zmc2V0
c0xpc3QoYXN0KQorICBhc3RTaXplc0xpc3QgPSBzaXplc0xpc3QoYXN0KQorICByYWlzZSB1bmxl
c3MgYXN0T2Zmc2V0c0xpc3Quc2l6ZSArIGFzdFNpemVzTGlzdC5zaXplID09IG9mZnNldHNMaXN0
LnNpemUKKyAgb2Zmc2V0c0xpc3QoYXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgc3RydWN0
T2Zmc2V0LCBpbmRleCB8CisgICAgb2Zmc2V0c01hcFtzdHJ1Y3RPZmZzZXRdID0gb2Zmc2V0c0xp
c3Quc2hpZnQKKyAgfQorICBzaXplc0xpc3QoYXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAgIHwg
c2l6ZW9mLCBpbmRleCB8CisgICAgc2l6ZXNNYXBbc2l6ZW9mXSA9IG9mZnNldHNMaXN0LnNoaWZ0
CisgIH0KKyAgW29mZnNldHNNYXAsIHNpemVzTWFwXQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTkxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJl
ICJhc3QiCityZXF1aXJlICJpbnN0cnVjdGlvbnMiCityZXF1aXJlICJyZWdpc3RlcnMiCisKK2Ns
YXNzIFRva2VuCisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luLCA6c3RyaW5nCisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJpbmcpCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3Jp
Z2luCisgICAgQHN0cmluZyA9IHN0cmluZworICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAg
ICBpZiBvdGhlci5pc19hPyBUb2tlbgorICAgICAgQHN0cmluZyA9PSBvdGhlci5zdHJpbmcKKyAg
ICBlbHNlCisgICAgICBAc3RyaW5nID09IG90aGVyCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVm
ID1+KG90aGVyKQorICAgIEBzdHJpbmcgPX4gb3RoZXIKKyAgZW5kCisgIAorICBkZWYgdG9fcwor
ICAgICIje0BzdHJpbmcuaW5zcGVjdH0gYXQgbGluZSAje2NvZGVPcmlnaW59IgorICBlbmQKKyAg
CisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAg
ICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc30iCisgICAgZWxzZQorICAgICAgcmFpc2UgIlBh
cnNlIGVycm9yOiAje3RvX3N9OiAje2NvbW1lbnRbMF19IgorICAgIGVuZAorICBlbmQKK2VuZAor
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgbGV4ZXIuIFRha2VzIGEg
c3RyaW5nIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRva2Vucy4gICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgbGV4KHN0cikKKyAgcmVzdWx0ID0g
W10KKyAgbGluZU51bWJlciA9IDEKKyAgd2hpbGUgbm90IHN0ci5lbXB0eT8KKyAgICBjYXNlIHN0
cgorICAgIHdoZW4gL1xBXCMoW15cbl0qKS8KKyAgICAgICMgY29tbWVudCwgaWdub3JlCisgICAg
d2hlbiAvXEFcbi8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisg
ICAgICBsaW5lTnVtYmVyICs9IDEKKyAgICB3aGVuIC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSop
LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9c
QVwuKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVy
LCAkJikKKyAgICB3aGVuIC9cQV8oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9r
ZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBKFsgXHRdKykvCisgICAgICAjIHdo
aXRlc3BhY2UsIGlnbm9yZQorICAgIHdoZW4gL1xBMHgoWzAtOWEtZkEtRl0rKS8KKyAgICAgIHJl
c3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYuaGV4LnRvX3MpCisgICAgd2hlbiAvXEEw
KFswLTddKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLm9jdC50
b19zKQorICAgIHdoZW4gL1xBKFswLTldKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxp
bmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBOjovCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3
KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBWzosXChcKVxbXF09XCtcLSpdLworICAgICAg
cmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICBlbHNlCisgICAgICByYWlz
ZSAiTGV4ZXIgZXJyb3IgYXQgbGluZSBudW1iZXIgI3tsaW5lTnVtYmVyfSwgdW5leHBlY3RlZCBz
ZXF1ZW5jZSAje3N0clswLi4yMF0uaW5zcGVjdH0iCisgICAgZW5kCisgICAgc3RyID0gJH4ucG9z
dF9tYXRjaAorICBlbmQKKyAgcmVzdWx0CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgVG9rZW4gaWRlbnRpZmljYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKworZGVmIGlzUmVnaXN0ZXIodG9rZW4pCisgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4K
K2VuZAorCitkZWYgaXNJbnN0cnVjdGlvbih0b2tlbikKKyAgdG9rZW4gPX4gSU5TVFJVQ1RJT05f
UEFUVEVSTgorZW5kCisKK2RlZiBpc0tleXdvcmQodG9rZW4pCisgIHRva2VuID1+IC9cQSgodHJ1
ZSl8KGZhbHNlKXwoaWYpfCh0aGVuKXwoZWxzZSl8KGVsc2lmKXwoZW5kKXwoYW5kKXwob3IpfChu
b3QpfChtYWNybyl8KGNvbnN0KXwoc2l6ZW9mKXwoZXJyb3IpKVxaLyBvcgorICAgIHRva2VuID1+
IFJFR0lTVEVSX1BBVFRFUk4gb3IKKyAgICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitl
bmQKKworZGVmIGlzSWRlbnRpZmllcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBW2EtekEtWl0oW2Et
ekEtWjAtOV9dKilcWi8gYW5kIG5vdCBpc0tleXdvcmQodG9rZW4pCitlbmQKKworZGVmIGlzTGFi
ZWwodG9rZW4pCisgIHRva2VuID1+IC9cQV8oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYg
aXNMb2NhbExhYmVsKHRva2VuKQorICB0b2tlbiA9fiAvXEFcLihbYS16QS1aMC05X10qKVxaLwor
ZW5kCisKK2RlZiBpc1ZhcmlhYmxlKHRva2VuKQorICBpc0lkZW50aWZpZXIodG9rZW4pIG9yIGlz
UmVnaXN0ZXIodG9rZW4pCitlbmQKKworZGVmIGlzSW50ZWdlcih0b2tlbikKKyAgdG9rZW4gPX4g
L1xBWzAtOV0vCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGhl
IHBhcnNlci4gVGFrZXMgYW4gYXJyYXkgb2YgdG9rZW5zIGFuZCByZXR1cm5zIGFuIEFTVC4gTWV0
aG9kcyAgICAgIworIyBvdGhlciB0aGFuIHBhcnNlKHRva2VucykgYXJlIG5vdCBmb3IgcHVibGlj
IGNvbnN1bXB0aW9uLiAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworCitjbGFzcyBQYXJzZXIKKyAgZGVmIGluaXRpYWxpemUodG9rZW5zKQorICAgIEB0b2tl
bnMgPSB0b2tlbnMKKyAgICBAaWR4ID0gMAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpj
b21tZW50KQorICAgIGlmIEB0b2tlbnNbQGlkeF0KKyAgICAgIEB0b2tlbnNbQGlkeF0ucGFyc2VF
cnJvcigqY29tbWVudCkKKyAgICBlbHNlCisgICAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAg
ICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZpbGUiCisgICAgICBlbHNlCisgICAgICAg
IHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZTogI3tjb21tZW50WzBdfSIKKyAgICAg
IGVuZAorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBjb25zdW1lKHJlZ2V4cCkKKyAgICBpZiBy
ZWdleHAKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPX4gcmVnZXhwCisg
ICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQGlkeCA9PSBAdG9rZW5zLmxlbmd0aAor
ICAgIGVuZAorICAgIEBpZHggKz0gMQorICBlbmQKKyAgCisgIGRlZiBza2lwTmV3TGluZQorICAg
IHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgQGlkeCArPSAxCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQXRvbQorICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gIm5vdCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5l
d0xpbmUKKyAgICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlCisgICAgICBwYXJzZUVycm9yIHVu
bGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQK
KyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJ0cnVlIgorICAgICAgcmVzdWx0ID0gVHJ1ZS5p
bnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5z
W0BpZHhdID09ICJmYWxzZSIKKyAgICAgIHJlc3VsdCA9IEZhbHNlLmluc3RhbmNlCisgICAgICBA
aWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0Bp
ZHhdCisgICAgICByZXN1bHQgPSBTZXR0aW5nLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0
CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBw
YXJzZVByZWRpY2F0ZUFuZAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlQXRvbQorICAgIHdo
aWxlIEB0b2tlbnNbQGlkeF0gPT0gImFuZCIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAg
IHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgICByZXN1bHQgPSBBbmQubmV3KGNvZGVP
cmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAg
ZGVmIHBhcnNlUHJlZGljYXRlCisgICAgIyBzb21lIGV4YW1wbGVzIG9mIHByZWNlZGVuY2U6Cisg
ICAgIyBub3QgYSBhbmQgYiAtPiAobm90IGEpIGFuZCBiCisgICAgIyBhIGFuZCBiIG9yIGMgLT4g
KGEgYW5kIGIpIG9yIGMKKyAgICAjIGEgb3IgYiBhbmQgYyAtPiBhIG9yIChiIGFuZCBjKQorICAg
IAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4
XSA9PSAib3IiCisgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisg
ICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJl
ZGljYXRlQW5kCisgICAgICByZXN1bHQgPSBPci5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdo
dCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VWYXJpYWJsZQor
ICAgIGlmIGlzUmVnaXN0ZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0g
PX4gRlBSX1BBVFRFUk4KKyAgICAgICAgcmVzdWx0ID0gRlBSZWdpc3RlcklELmZvck5hbWUoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVsc2UK
KyAgICAgICAgcmVzdWx0ID0gUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBlbmQKKyAgICBlbHNpZiBpc0lkZW50
aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgIHJlc3VsdCA9IFZhcmlhYmxlLmZvck5hbWUoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICBlbHNlCisg
ICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVu
ZAorICAKKyAgZGVmIHBhcnNlQWRkcmVzcyhvZmZzZXQpCisgICAgcGFyc2VFcnJvciB1bmxlc3Mg
QHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgCisgICAgIyBUaHJlZSBwb3NzaWJpbGl0aWVzOgorICAgICMgW10gICAgICAg
LT4gQWJzb2x1dGVBZGRyZXNzCisgICAgIyBbYV0gICAgICAtPiBBZGRyZXNzCisgICAgIyBbYSxi
XSAgICAtPiBCYXNlSW5kZXggd2l0aCBzY2FsZSA9IDEKKyAgICAjIFthLGIsY10gIC0+IEJhc2VJ
bmRleAorICAgIAorICAgIEBpZHggKz0gMQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisg
ICAgICBAaWR4ICs9IDEKKyAgICAgIHJldHVybiBBYnNvbHV0ZUFkZHJlc3MubmV3KGNvZGVPcmln
aW4sIG9mZnNldCkKKyAgICBlbmQKKyAgICBhID0gcGFyc2VWYXJpYWJsZQorICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gIl0iCisgICAgICByZXN1bHQgPSBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBh
LCBvZmZzZXQpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4
XSA9PSAiLCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgYiA9IHBhcnNlVmFyaWFibGUKKyAgICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXco
Y29kZU9yaWdpbiwgYSwgYiwgMSwgb2Zmc2V0KQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVy
cm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgcGFyc2VFcnJvciB1bmxlc3MgWyIxIiwgIjIiLCAiNCIsICI4Il0ubWVtYmVyPyBAdG9rZW5z
W0BpZHhdLnN0cmluZworICAgICAgICBjID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faQorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9
PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCBj
LCBvZmZzZXQpCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQK
KyAgZW5kCisgIAorICBkZWYgcGFyc2VDb2xvbkNvbG9uCisgICAgc2tpcE5ld0xpbmUKKyAgICBj
b2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgcGFyc2VFcnJvciB1bmxl
c3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICBuYW1lcyA9IFtAdG9rZW5zW0BpZHhd
LnN0cmluZ10KKyAgICBAaWR4ICs9IDEKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICI6OiIK
KyAgICAgIEBpZHggKz0gMQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0
b2tlbnNbQGlkeF0KKyAgICAgIG5hbWVzIDw8IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICBA
aWR4ICs9IDEKKyAgICBlbmQKKyAgICByYWlzZSBpZiBuYW1lcy5lbXB0eT8KKyAgICBbY29kZU9y
aWdpbiwgbmFtZXNdCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICBz
a2lwTmV3TGluZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICBAaWR4ICs9IDEK
KyAgICAgIE5lZ0ltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcGFy
c2VFeHByZXNzaW9uQXRvbSkKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAg
QGlkeCArPSAxCisgICAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIHBhcnNlRXJy
b3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJl
c3VsdAorICAgIGVsc2lmIGlzSW50ZWdlciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBJ
bW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJp
bmcudG9faSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVu
dGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xv
bkNvbG9uCisgICAgICBpZiBuYW1lcy5zaXplID4gMQorICAgICAgICBTdHJ1Y3RPZmZzZXQuZm9y
RmllbGQoY29kZU9yaWdpbiwgbmFtZXNbMC4uLTJdLmpvaW4oJzo6JyksIG5hbWVzWy0xXSkKKyAg
ICAgIGVsc2UKKyAgICAgICAgVmFyaWFibGUuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lc1swXSkK
KyAgICAgIGVuZAorICAgIGVsc2lmIGlzUmVnaXN0ZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcGFy
c2VWYXJpYWJsZQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIKKyAgICAgIEBp
ZHggKz0gMQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAg
IFNpemVvZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzLmpvaW4oJzo6JykpCisgICAgZWxzZQor
ICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Np
b25NdWwKKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbkF0b20K
KyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9
PSAiKiIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IE11bEltbWVkaWF0ZXMu
bmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9u
QXRvbSkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVuZAorICAg
IHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgIEB0b2tlbnNb
QGlkeF0gPT0gIi0iIG9yIEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIgb3IgaXNJbnRlZ2VyKEB0
b2tlbnNbQGlkeF0pIG9yIGlzVmFyaWFibGUoQHRva2Vuc1tAaWR4XSkKKyAgZW5kCisgIAorICBk
ZWYgcGFyc2VFeHByZXNzaW9uCisgICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBwYXJzZUV4
cHJlc3Npb25NdWwKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIrIiBvciBAdG9rZW5zW0Bp
ZHhdID09ICItIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKyIKKyAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIHJlc3VsdCA9IEFkZEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFd
LmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IFN1
YkltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFy
c2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisg
ICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlT3BlcmFuZChjb21tZW50
KQorICAgIGlmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgICBleHByID0gcGFyc2VFeHByZXNzaW9u
CisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAgICBwYXJzZUFkZHJlc3MoZXhw
cikKKyAgICAgIGVsc2UKKyAgICAgICAgZXhwcgorICAgICAgZW5kCisgICAgZWxzaWYgQHRva2Vu
c1tAaWR4XSA9PSAiWyIKKyAgICAgIHBhcnNlQWRkcmVzcyhJbW1lZGlhdGUubmV3KEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbiwgMCkpCisgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdCisg
ICAgICByZXN1bHQgPSBMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCBMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5z
dHJpbmcpKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0xvY2Fs
TGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJlZmVyZW5jZS5u
ZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMb2NhbExhYmVsLmZvck5hbWUoQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4ICs9IDEK
KyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IoY29tbWVudCkKKyAgICBl
bmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgIHNraXBOZXdMaW5l
CisgICAgY29uc3VtZSgvXEFcKFxaLykKKyAgICB2YXJpYWJsZXMgPSBbXQorICAgIGxvb3Agewor
ICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tl
bnNbQGlkeF0pCisgICAgICAgIHZhcmlhYmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgor
ICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICBwYXJzZUVycm9yCisgICAgICAgIGVuZAorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVy
cm9yCisgICAgICBlbmQKKyAgICB9CisgICAgdmFyaWFibGVzCisgIGVuZAorICAKKyAgZGVmIHBh
cnNlU2VxdWVuY2UoZmluYWwsIGNvbW1lbnQpCisgICAgZmlyc3RDb2RlT3JpZ2luID0gQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luCisgICAgbGlzdCA9IFtdCisgICAgbG9vcCB7CisgICAgICBpZiAo
QGlkeCA9PSBAdG9rZW5zLmxlbmd0aCBhbmQgbm90IGZpbmFsKSBvciAoZmluYWwgYW5kIEB0b2tl
bnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBAdG9rZW5zW0Bp
ZHhdID09ICJcbiIKKyAgICAgICAgIyBpZ25vcmUKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBl
bHNpZiBAdG9rZW5zW0BpZHhdID09ICJjb25zdCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAg
IHBhcnNlRXJyb3IgdW5sZXNzIGlzVmFyaWFibGUgQHRva2Vuc1tAaWR4XQorICAgICAgICB2YXJp
YWJsZSA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5z
W0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIEB0b2tlbnNbQGlkeF0gPT0gIj0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YWx1
ZSA9IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGNvbnN0ICN7dmFyaWFibGUubmFtZX0i
KQorICAgICAgICBsaXN0IDw8IENvbnN0RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCB2YXJpYWJsZSwgdmFsdWUpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJlcnJvciIK
KyAgICAgICAgbGlzdCA8PCBFcnJvci5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luKQorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImlmIgorICAgICAg
ICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0
ZQorICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgIHNraXBOZXdM
aW5lCisgICAgICAgIGlmVGhlbkVsc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVk
aWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxl
IGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgbGlzdCA8PCBp
ZlRoZW5FbHNlCisgICAgICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImVsc2lmIgorICAgICAg
ICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNl
UHJlZGljYXRlCisgICAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAg
ICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgZWxzZUNhc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2Rl
T3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYp
KVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAg
ICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNhc2UKKyAgICAgICAgICBpZlRoZW5FbHNl
ID0gZWxzZUNhc2UKKyAgICAgICAgZW5kCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gImVs
c2UiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9
IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGVsc2UgY2FzZSBmb3Ig
XCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
ZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gImVuZCIK
KyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBAdG9rZW5zW0Bp
ZHhdID09ICJtYWNybyIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIG5hbWUg
PSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFyaWFi
bGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgv
XEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gI3tuYW1lfSIpCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBsaXN0IDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJs
ZXMsIGJvZHkpCisgICAgICBlbHNpZiBpc0luc3RydWN0aW9uIEB0b2tlbnNbQGlkeF0KKyAgICAg
ICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0g
QHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIChub3Qg
ZmluYWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlk
eF0gPX4gZmluYWwpCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24sIGFuZCBp
dCdzIHRoZSBsYXN0IG9uZS4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2Rl
T3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5z
W0BpZHhdID09ICJcbiIKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbi4KKyAg
ICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgICMgSXQncyBkZWZpbml0
ZWx5IGFuIGluc3RydWN0aW9uLCBhbmQgaXQgaGFzIGF0IGxlYXN0IG9uZSBvcGVyYW5kLgorICAg
ICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gZmFsc2UKKyAg
ICAgICAgICBsb29wIHsKKyAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hp
bGUgaW5zaWRlIG9mIGluc3RydWN0aW9uICN7bmFtZX0iKQorICAgICAgICAgICAgaWYgKG5vdCBm
aW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4
XSA9fiBmaW5hbCkKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbiBh
bmQgb2YgdGhlIHNlcXVlbmNlLgorICAgICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gdHJ1ZQor
ICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAi
LCIKKyAgICAgICAgICAgICAgIyBIYXMgYW5vdGhlciBvcGVyYW5kLgorICAgICAgICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAg
ICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uLgorICAgICAgICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQgYSBjb21tYSwgbmV3bGluZSwgb3IgI3tmaW5hbH0gYWZ0
ZXIgI3tvcGVyYW5kcy5sYXN0LmR1bXB9IikKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgIH0K
KyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVy
YW5kcykKKyAgICAgICAgICBpZiBlbmRPZlNlcXVlbmNlCisgICAgICAgICAgICBicmVhaworICAg
ICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5z
W0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAg
ICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgICAgICMgTWFjcm8gaW52b2NhdGlv
bi4KKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9vcCB7CisgICAg
ICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0g
Im1hY3JvIgorICAgICAgICAgICAgICAgICMgSXQncyBhIG1hY3JvIGxhbWJkYSEKKyAgICAgICAg
ICAgICAgICBjb2RlT3JpZ2luSW5uZXIgPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAg
ICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1h
Y3JvVmFyaWFibGVzCisgICAgICAgICAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5k
XFovLCAid2hpbGUgaW5zaWRlIG9mIGFub255bW91cyBtYWNybyBwYXNzZWQgYXMgYXJndW1lbnQg
dG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAg
b3BlcmFuZHMgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJpYWJsZXMsIGJv
ZHkpCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJz
ZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBtYWNybyBjYWxsIHRvICN7bmFtZX0iKQorICAgICAg
ICAgICAgICBlbmQKKyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYg
QHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
ICAgICAgICBicmVhaworICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgor
ICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgcGFyc2VFcnJvciAiVW5leHBlY3RlZCAje0B0b2tlbnNbQGlkeF0uc3RyaW5nLmluc3Bl
Y3R9IHdoaWxlIHBhcnNpbmcgaW52b2NhdGlvbiBvZiBtYWNybyAje25hbWV9IgorICAgICAgICAg
ICAgICBlbmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbmQKKyAgICAgICAgICBsaXN0IDw8
IE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgIGVsc2UK
KyAgICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9IgorICAg
ICAgICBlbmQKKyAgICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XSBvciBpc0xvY2FsTGFi
ZWwgQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiOiIKKyAg
ICAgICAgIyBJdCdzIGEgbGFiZWwuCisgICAgICAgIGlmIGlzTGFiZWwgbmFtZQorICAgICAgICAg
IGxpc3QgPDwgTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbHNlCisg
ICAgICAgICAgbGlzdCA8PCBMb2NhbExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAg
ICAgICAgZW5kCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVy
cm9yICJFeHBlY3RpbmcgdGVybWluYWwgI3tmaW5hbH0gI3tjb21tZW50fSIKKyAgICAgIGVuZAor
ICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoZmlyc3RDb2RlT3JpZ2luLCBsaXN0KQorICBlbmQKK2Vu
ZAorCitkZWYgcGFyc2UodG9rZW5zKQorICBwYXJzZXIgPSBQYXJzZXIubmV3KHRva2VucykKKyAg
cGFyc2VyLnBhcnNlU2VxdWVuY2UobmlsLCAiIikKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDU5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitH
UFJTID0KKyAgWworICAgInQwIiwKKyAgICJ0MSIsCisgICAidDIiLAorICAgInQzIiwKKyAgICJ0
NCIsCisgICAiY2ZyIiwKKyAgICJhMCIsCisgICAiYTEiLAorICAgInIwIiwKKyAgICJyMSIsCisg
ICAic3AiCisgIF0KKworRlBSUyA9CisgIFsKKyAgICJmdDAiLAorICAgImZ0MSIsCisgICAiZnQy
IiwKKyAgICJmdDMiLAorICAgImZ0NCIsCisgICAiZnQ1IiwKKyAgICJmYTAiLAorICAgImZhMSIs
CisgICAiZmEyIiwKKyAgICJmYTMiLAorICAgImZyIgorICBdCisKK1JFR0lTVEVSUyA9IEdQUlMg
KyBGUFJTCisKK0dQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgR1BSUy5qb2luKCcp
fCgnKSArICcpKVxcWicpCitGUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMu
am9pbignKXwoJykgKyAnKSlcXFonKQorCitSRUdJU1RFUl9QQVRURVJOID0gUmVnZXhwLm5ldygn
XFxBKCgnICsgUkVHSVNURVJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjIxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CityZXF1aXJlICJhc3QiCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgInBhcnNlciIKK3Jl
cXVpcmUgInRyYW5zZm9ybSIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
Y29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgLT4gc2V0dGluZ3NDb21iaWF0aW9ucyAg
ICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbXB1dGVzIGFuIGFycmF5IG9mIHNl
dHRpbmdzIG1hcHMsIHdoZXJlIGEgc2V0dGluZ3MgbWFwIGNvbnN0aXR1dGVzICMKKyMgYSBjb25m
aWd1cmF0aW9uIGZvciB0aGUgYXNzZW1ibHkgY29kZSBiZWluZyBnZW5lcmF0ZWQuIFRoZSBtYXAg
ICAgICAgIworIyBjb250YWlucyBrZXkgdmFsdWUgcGFpcnMgd2hlcmUga2V5cyBhcmUgc2V0dGlu
Z3MgbmFtZXMgKHN0cmluZ3MpIGFuZCAjCisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xlYW5zICh0cnVl
IGZvciBlbmFibGVkLCBmYWxzZSBmb3IgZGlzYWJsZWQpLiAgICAgICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0
KQorICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IFtdCisgIAorICBkZWYgc2V0dGluZ3NDb21iaW5h
dG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBtYXBTb0ZhciwgcmVtYWluaW5nKQorICAgIGlmIHJl
bWFpbmluZy5lbXB0eT8KKyAgICAgIHNldHRpbmdzQ29tYmluYXRpb25zIDw8IG1hcFNvRmFyCisg
ICAgICByZXR1cm4KKyAgICBlbmQKKyAgICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAg
ICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IHRydWUKKyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0
dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgICAKKyAgICBu
ZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IGZhbHNlCisg
ICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFp
bmluZ1sxLi4tMV0pCisgIGVuZAorICAKKyAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29t
YmluYXRpb25zLCB7fSwgKGFzdC5maWx0ZXIoU2V0dGluZykudW5pcS5jb2xsZWN0e3x2fCB2Lm5h
bWV9ICsgWyJYODYiLCAiQVJNdjciXSkudW5pcSkKKyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25z
CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yU2V0dGluZ3Mo
Y29uY3JldGVTZXR0aW5ncywgYXN0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8IC4uLiB9
ICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRGV0ZXJtaW5lcyBpZiB0aGUg
c2V0dGluZ3MgY29tYmluYXRpb24gaXMgdmFsaWQsIGFuZCBpZiBzbywgY2FsbHMgICAgIworIyB0
aGUgYmxvY2sgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91IG5lZWQgdG8gZ2VuZXJhdGUgY29kZS4g
ICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZm9y
U2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KQorICAjIENoZWNrIHdoaWNoIGFyY2hpdGVj
dHVyZXMgdGhpcyBjb21iaW5hdG9yIGNsYWltcyB0byBzdXBwb3J0LgorICBudW1DbGFpbWVkQmFj
a2VuZHMgPSAwCisgIHNlbGVjdGVkQmFja2VuZCA9IG5pbAorICBCQUNLRU5EUy5lYWNoIHsKKyAg
ICB8IGJhY2tlbmQgfAorICAgIGlzU3VwcG9ydGVkID0gY29uY3JldGVTZXR0aW5nc1tiYWNrZW5k
XQorICAgIHJhaXNlIHVubGVzcyBpc1N1cHBvcnRlZCAhPSBuaWwKKyAgICBudW1DbGFpbWVkQmFj
a2VuZHMgKz0gaWYgaXNTdXBwb3J0ZWQgdGhlbiAxIGVsc2UgMCBlbmQKKyAgICBpZiBpc1N1cHBv
cnRlZAorICAgICAgc2VsZWN0ZWRCYWNrZW5kID0gYmFja2VuZAorICAgIGVuZAorICB9CisgIAor
ICByZXR1cm4gaWYgbnVtQ2xhaW1lZEJhY2tlbmRzID4gMQorICAKKyAgIyBSZXNvbHZlIHRoZSBB
U1QgZG93biB0byBhIGxvdy1sZXZlbCBmb3JtIChubyBtYWNyb3Mgb3IgY29uZGl0aW9uYWxzKS4K
KyAgbG93TGV2ZWxBU1QgPSBhc3QucmVzb2x2ZVNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MpCisg
IAorICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgc2VsZWN0ZWRCYWNrZW5k
CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yRWFjaFZhbGlk
U2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0g
ICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yRWFjaFZhbGlkU2V0dGlu
Z3NDb21iaW5hdGlvbihhc3QsIHNldHRpbmdzQ29tYmluYXRpb25zKSB7ICAgICAgICAgIworIyAg
ICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAg
ICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRXhlY3V0ZXMgdGhlIGdpdmVuIGJsb2Nr
IGZvciBlYWNoIHZhbGlkIHNldHRpbmdzIGNvbWJpbmF0aW9uIGluIHRoZSAgIworIyBzZXR0aW5n
cyBtYXAuIFRoZSBhc3QgcGFzc2VkIGludG8gdGhlIGJsb2NrIGlzIHJlc29sdmVkICAgICAgICAg
ICAgICAjCisjIChhc3QucmVzb2x2ZSkgYWdhaW5zdCB0aGUgc2V0dGluZ3MuICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgZmlyc3QgZm9y
bSB3aWxsIGNhbGwgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgZm9yIHlvdS4gICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZm9yRWFjaFZhbGlkU2V0
dGluZ3NDb21iaW5hdGlvbihhc3QsICpvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zKQorICBy
YWlzZSBpZiBvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zLnNpemUgPiAxCisgIAorICBpZiBv
cHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zLmVtcHR5PworICAgIHNldHRpbmdzQ29tYmluYXRp
b25zID0gY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgZWxzZQorICAgIHNldHRp
bmdzQ29tYmluYXRpb25zID0gb3B0aW9uYWxTZXR0aW5nc0NvbWJpYXRpb25zWzBdCisgIGVuZAor
ICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IGNvbmNy
ZXRlU2V0dGluZ3MsIGluZGV4IHwKKyAgICBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBh
c3QpIHsKKyAgICAgIHwgY29uY3JldGVTZXR0aW5nc18sIGxvd0xldmVsQVNULCBiYWNrZW5kIHwK
KyAgICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRl
eAorICAgIH0KKyAgfQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBSZXR1cm5zIHRoZSBDKysgY29kZSB1
c2VkIHRvIHRlc3QgaWYgd2UgYXJlIGluIGEgY29uZmlndXJhdGlvbiB0aGF0ICAjCisjIGNvcnJl
c3BvbmRzIHRvIHRoZSBnaXZlbiBjb25jcmV0ZSBzZXR0aW5ncy4gICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBjcHBTZXR0
aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgIiNpZiAiICsgY29uY3JldGVTZXR0aW5ncy50
b19hLmNvbGxlY3R7CisgICAgfCBwYWlyIHwKKyAgICAoaWYgcGFpclsxXQorICAgICAgICIiCisg
ICAgIGVsc2UKKyAgICAgICAiISIKKyAgICAgZW5kKSArICJPRkZMSU5FX0FTTV8iICsgcGFpclsw
XQorICB9LmpvaW4oIiAmJiAiKQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIGlzQVNURXJyb25lb3VzKGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUZXN0cyB0byBzZWUgaWYg
dGhlIEFTVCBjbGFpbXMgdGhhdCB0aGVyZSBpcyBhbiBlcnJvciAtIGkuZS4gaWYgdGhlICAjCisj
IHVzZXIncyBjb2RlLCBhZnRlciBzZXR0aW5ncyByZXNvbHV0aW9uLCBoYXMgRXJyb3Igbm9kZXMu
ICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBp
c0FTVEVycm9uZW91cyhhc3QpCisgIG5vdCBhc3QuZmlsdGVyKEVycm9yKS5lbXB0eT8KK2VuZAor
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBhc3NlcnRDb25maWd1cmF0aW9u
KGNvbmNyZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgRW1pdHMgYSBjaGVjayB0aGF0IGFzc2VydHMgdGhhdCB3ZSdyZSB1c2lu
ZyB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbi4gIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKworZGVmIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAgcHV0
cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgcHV0cyAiI2Vsc2UiCisgIHB1
dHMgIiNlcnJvciBcIkNvbmZpZ3VyYXRpb24gbWlzbWF0Y2guXCIiCisgIHB1dHMgIiNlbmRpZiIK
K2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBlbWl0Q29kZUluQ29u
ZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpIHsgICAgICAgICAgICAj
CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCB8IC4uLiB9ICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFbWl0cyBhbGwgcmVsZXZhbnQg
Z3VhcmRzIHRvIHNlZSBpZiB0aGUgY29uZmlndXJhdGlvbiBob2xkcyBhbmQgICAgICAjCisjIGNh
bGxzIHRoZSBibG9jayBpZiB0aGUgY29uZmlndXJhdGlvbiBpcyBub3QgZXJyb25lb3VzLiAgICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBlbWl0
Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpCisgIHB1
dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICBpZiBpc0FTVEVycm9u
ZW91cyhhc3QpCisgICAgcHV0cyAiI2Vycm9yIFwiSW52YWxpZCBjb25maWd1cmF0aW9uLlwiIgor
ICBlbHNpZiBub3QgV09SS0lOR19CQUNLRU5EUy5pbmNsdWRlPyBiYWNrZW5kCisgICAgcHV0cyAi
I2Vycm9yIFwiVGhpcyBiYWNrZW5kIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LlwiIgorICBlbHNlCisg
ICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kCisgIGVuZAorICAKKyAgcHV0
cyAiI2VuZGlmIgorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGVt
aXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRl
eCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEVtaXRzIGd1
YXJkIGNvZGVzIGZvciBhbGwgdmFsaWQgY29uZmlndXJhdGlvbnMsIGFuZCBjYWxscyB0aGUgYmxv
Y2sgICMKKyMgZm9yIHRob3NlIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHZhbGlkIGFuZCBub3Qg
ZXJyb25lb3VzLiAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KworZGVmIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3QpCisgIGZvckVhY2hWYWxpZFNl
dHRpbmdzQ29tYmluYXRpb24oYXN0KSB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZl
bEFTVCwgYmFja2VuZCwgaW5kZXggfAorICAgIHB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRl
U2V0dGluZ3MpCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tl
bmQsIGluZGV4CisgICAgcHV0cyAiI2VuZGlmIgorICB9CitlbmQKKworCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzUyIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCityZXF1aXJlICJhc3QiCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIG5vZGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNU
IHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgSWZUaGVuRWxzZSBub2RlcyBieSAgICAgICAjCisjIHN1
YnN0aXR1dGluZyBjb25jcmV0ZSBib29sZWFuIHZhbHVlcyBmb3IgZWFjaCBTZXR0aW5nLiAgICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5v
ZGUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBtYXBDaGlsZHJlbiB7Cisg
ICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAg
ICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlCisgIGRlZiByZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5n
CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2V0dGluZ3NbQG5hbWVdLmFz
Tm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykKKyAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBhbmQgQHJp
Z2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAor
CitjbGFzcyBPcgorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5y
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIG9yIEByaWdodC5yZXNvbHZlU2V0dGluZ3Mo
c2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgTm90CisgIGRlZiBy
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKG5vdCBAY2hpbGQucmVzb2x2ZVNldHRpbmdz
KHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UK
KyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBpZiBAcHJlZGljYXRlLnJlc29s
dmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUKKyAgICAgIEB0aGVuQ2FzZS5yZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpCisgICAgZWxzZQorICAgICAgQGVsc2VDYXNlLnJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHJl
c29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNo
IHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpCisgICAgICBpZiBpdGVtLmlzX2E/IFNlcXVlbmNlCisgICAgICAgIG5ld0xpc3QgKz0g
aXRlbS5saXN0CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbQorICAgICAgZW5k
CisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKK2Vu
ZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLmRlbWFjcm9pZnko
bWFjcm9zKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IG5vZGUuc3Vic3RpdHV0ZShtYXBwaW5nKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBkZW1hY3JvaWZ5KCkgY29uc3RydWN0
cyBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBNYWNybyAgICAgICAjCisjIG5vZGVz
LCB3aGlsZSBzdWJzdGl0dXRlKCkgcmVwbGFjZXMgVmFyaWFibGUgbm9kZXMgd2l0aCB0aGUgZ2l2
ZW4gICAgICMKKyMgbm9kZXMgaW4gdGhlIG1hcHBpbmcuICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKworY2xhc3MgTm9kZQorICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbWFwQ2hpbGRy
ZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5kZW1hY3JvaWZ5KG1hY3JvcykKKyAg
ICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBtYXBDaGlsZHJl
biB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobWFwcGluZykKKyAg
ICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBtYXBD
aGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGVMYWJlbHMo
bWFwcGluZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvCisgIGRlZiBzdWJzdGl0
dXRlKG1hcHBpbmcpCisgICAgbXlNYXBwaW5nID0ge30KKyAgICBtYXBwaW5nLmVhY2hfcGFpciB7
CisgICAgICB8IGtleSwgdmFsdWUgfAorICAgICAgdW5sZXNzIEB2YXJpYWJsZXMuaW5jbHVkZT8g
a2V5CisgICAgICAgIG15TWFwcGluZ1trZXldID0gdmFsdWUKKyAgICAgIGVuZAorICAgIH0KKyAg
ICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUo
bXlNYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUKKyAgZGVmIHN1
YnN0aXR1dGUobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3Nl
bGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBM
b2NhbExhYmVsCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgaWYgbWFwcGlu
Z1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBl
bmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHN1YnN0aXR1dGUoY29uc3Rh
bnRzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIG15Q29uc3RhbnRzID0gY29uc3RhbnRzLmR1cAor
ICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gQ29u
c3REZWNsCisgICAgICAgIG15Q29uc3RhbnRzW2l0ZW0udmFyaWFibGVdID0gaXRlbS52YWx1ZS5z
dWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0
ZW0uc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5j
ZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5kCisgIAorICBkZWYgcmVuYW1lTGFiZWxz
KGNvbW1lbnQpCisgICAgbWFwcGluZyA9IHt9CisgICAgCisgICAgQGxpc3QuZWFjaCB7CisgICAg
ICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBMb2NhbExhYmVsCisgICAgICAgIG1hcHBp
bmdbaXRlbV0gPSBMb2NhbExhYmVsLnVuaXF1ZShpZiBjb21tZW50IHRoZW4gY29tbWVudCArICJf
IiBlbHNlICIiIGVuZCArIGl0ZW0uY2xlYW5OYW1lKQorICAgICAgZW5kCisgICAgfQorICAgIAor
ICAgIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgZW5kCisgIAorICBkZWYgZGVtYWNyb2lm
eShtYWNyb3MpCisgICAgbXlNYWNyb3MgPSBtYWNyb3MuZHVwCisgICAgQGxpc3QuZWFjaCB7Cisg
ICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICBteU1hY3Jv
c1tpdGVtLm5hbWVdID0gaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3QgPSBbXQor
ICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gTWFj
cm8KKyAgICAgICAgIyBJZ25vcmUuCisgICAgICBlbHNpZiBpdGVtLmlzX2E/IE1hY3JvQ2FsbAor
ICAgICAgICBtYXBwaW5nID0ge30KKyAgICAgICAgbXlNeU1hY3JvcyA9IG15TWFjcm9zLmR1cAor
ICAgICAgICByYWlzZSAiQ291bGQgbm90IGZpbmQgbWFjcm8gI3tpdGVtLm5hbWV9IGF0ICN7aXRl
bS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG15TWFjcm9zW2l0ZW0ubmFtZV0KKyAgICAgICAg
cmFpc2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxsIHRvICN7aXRlbS5uYW1lfSBh
dCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVtLm9wZXJhbmRzLnNpemUgPT0g
bXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQorICAgICAgICBpdGVtLm9wZXJhbmRz
LnNpemUudGltZXMgeworICAgICAgICAgIHwgaWR4IHwKKyAgICAgICAgICBpZiBpdGVtLm9wZXJh
bmRzW2lkeF0uaXNfYT8gVmFyaWFibGUgYW5kIG15TWFjcm9zW2l0ZW0ub3BlcmFuZHNbaWR4XS5u
YW1lXQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxl
c1tpZHhdLm5hbWVdID0gbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAg
ICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBu
aWwKKyAgICAgICAgICBlbHNpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gTWFjcm8KKyAgICAg
ICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1l
XSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVt
Lm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9IG5p
bAorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhd
XSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAg
IG5ld0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5LnN1YnN0aXR1dGUobWFwcGluZyku
ZGVtYWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMoaXRlbS5uYW1lKS5saXN0CisgICAg
ICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5kZW1hY3JvaWZ5KG15TWFjcm9zKQorICAg
ICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KS5zdWJz
dGl0dXRlKHt9KQorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBub2RlLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29uc3RydWN0IGEgbmV3IEFT
VCB0aGF0IGhhcyBvZmZzZXQgdmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMgICAgICAgIworIyBv
ZmZzZXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBO
b2RlCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBtYXBDaGlsZHJl
biB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnJlc29sdmVPZmZzZXRzKG9mZnNldHMs
IHNpemVzKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0CisgIGRlZiBy
ZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBvZmZzZXRzW3NlbGZdCisgICAg
ICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIG9mZnNldHNbc2VsZl0pCisgICAgZWxzZQorICAg
ICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YKKyAgZGVmIHJlc29s
dmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlmIHNpemVzW3NlbGZdCisgICAgICBJbW1l
ZGlhdGUubmV3KGNvZGVPcmlnaW4sIHNpemVzW3NlbGZdKQorICAgIGVsc2UKKyAgICAgIHB1dHMg
IkNvdWxkIG5vdCBmaW5kICN7c2VsZi5pbnNwZWN0fSBpbiAje3NpemVzLmtleXMuaW5zcGVjdH0i
CisgICAgICBwdXRzICJzaXplcyA9ICN7c2l6ZXMuaW5zcGVjdH0iCisgICAgICBzZWxmCisgICAg
ZW5kCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5v
ZGUuZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBSZXNvbHZlIGNvbnN0YW50IHJlZmVyZW5j
ZXMgYW5kIGNvbXB1dGUgYXJpdGhtZXRpYyBleHByZXNzaW9ucy4gICAgICAjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiBmb2xkCisgICAgbWFw
Q2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5mb2xkCisgICAgfQorICBl
bmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBA
bGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxl
c3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5p
c19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVl
ICsgQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzCisgIGRl
ZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQK
KyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJu
IHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNv
ZGVPcmlnaW4sIEBsZWZ0LnZhbHVlIC0gQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFz
cyBNdWxJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAg
QHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8g
SW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUK
KyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICogQHJpZ2h0LnZhbHVl
KQorICBlbmQKK2VuZAorCitjbGFzcyBOZWdJbW1lZGlhdGUKKyAgZGVmIGZvbGQKKyAgICBAY2hp
bGQgPSBAY2hpbGQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAY2hpbGQuaXNfYT8gSW1t
ZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtQGNoaWxkLnZhbHVlKQorICBl
bmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnJlc29s
dmVBZnRlclNldHRpbmdzKG9mZnNldHMsIHNpemVzKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgQ29tcGlsZSBhc3NlbWJseSBhZ2FpbnN0IGEgc2V0IG9m
IG9mZnNldHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZShvZmZzZXRzLCBzaXpl
cykKKyAgICBkZW1hY3JvaWZ5KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykuZm9s
ZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94
ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2
LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgc3VwcG9ydHM4Qml0T25Y
ODYKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0MSIsICJhMSIs
ICJyMSIsICJ0MiIsICJ0MyIKKyAgICAgIHRydWUKKyAgICB3aGVuICJ0NCIsICJjZnIiCisgICAg
ICBmYWxzZQorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVm
IHg4Nk9wZXJhbmQoa2luZCkKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJy
MCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWFsIgorICAg
ICAgd2hlbiA6aGFsZgorICAgICAgICAiJWF4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIl
ZWF4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDEi
LCAiYTEiLCAicjEiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAg
IiVkbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVkeCIKKyAgICAgIHdoZW4gOmludAor
ICAgICAgICAiJWVkeCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAg
IHdoZW4gInQyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIl
Y2wiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlY3giCisgICAgICB3aGVuIDppbnQKKyAg
ICAgICAgIiVlY3giCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3
aGVuICJ0MyIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWJs
IgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWJ4IgorICAgICAgd2hlbiA6aW50CisgICAg
ICAgICIlZWJ4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hl
biAidDQiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzaWwi
CisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc2kiCisgICAgICB3aGVuIDppbnQKKyAgICAg
ICAgIiVlc2kiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVu
ICJjZnIiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkaWwi
CisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZGkiCisgICAgICB3aGVuIDppbnQKKyAgICAg
ICAgIiVlZGkiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVu
ICJzcCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNwbCIK
KyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVzcCIKKyAgICAgIHdoZW4gOmludAorICAgICAg
ICAiJWVzcCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVsc2UK
KyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkK
KyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0
ZXJJRAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIHJhaXNlIHVubGVzcyBraW5kID09IDpk
b3VibGUKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAiZmEwIiwgImZyIgorICAgICAg
IiV4bW0wIgorICAgIHdoZW4gImZ0MSIsICJmYTEiCisgICAgICAiJXhtbTEiCisgICAgd2hlbiAi
ZnQyIiwgImZhMiIKKyAgICAgICIleG1tMiIKKyAgICB3aGVuICJmdDMiLCAiZmEzIgorICAgICAg
IiV4bW0zIgorICAgIHdoZW4gImZ0NCIKKyAgICAgICIleG1tNCIKKyAgICB3aGVuICJmdDUiCisg
ICAgICAiJXhtbTUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIGRl
ZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5k
CitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiQj
e3ZhbHVlfSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIje3ZhbHVl
fSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYK
KyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje29m
ZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9KSIKKyAgZW5kCisgIGRlZiB4ODZD
YWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQK
KworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAg
ZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgj
e2Jhc2UueDg2T3BlcmFuZCg6aW50KX0sICN7aW5kZXgueDg2T3BlcmFuZCg6aW50KX0sICN7c2Nh
bGV9KSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nm9w
ZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVm
IHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJh
bmQoa2luZCkKKyAgICAiI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxP
cGVyYW5kKGtpbmQpCisgICAgIioje2FkZHJlc3MudmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFz
cyBMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2TGFiZWwKKyAgICBzYW5pdGl6ZUxhYmVsTmFtZShu
YW1lKQorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgeDg2TGFiZWwKKyAg
ZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2TGFiZWwKKyAg
ICAiTF9vZmZsaW5lYXNtXyIrbmFtZVsxLi4tMV0KKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFu
ZChraW5kKQorICAgIHg4NkxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisg
IGRlZiB4ODZPcGVyYW5kcygqa2luZHMpCisgICAgcmFpc2UgdW5sZXNzIGtpbmRzLnNpemUgPT0g
b3BlcmFuZHMuc2l6ZQorICAgIHJlc3VsdCA9IFtdCisgICAga2luZHMuc2l6ZS50aW1lcyB7Cisg
ICAgICB8IGlkeCB8CisgICAgICByZXN1bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZPcGVyYW5kKGtp
bmRzW2lkeF0pCisgICAgfQorICAgIHJlc3VsdC5qb2luKCIsICIpCisgIGVuZAorCisgIGRlZiB4
ODZTdWZmaXgoa2luZCkKKyAgICBjYXNlIGtpbmQKKyAgICB3aGVuIDpieXRlCisgICAgICAiYiIK
KyAgICB3aGVuIDpoYWxmCisgICAgICAidyIKKyAgICB3aGVuIDppbnQKKyAgICAgICJsIgorICAg
IHdoZW4gOmRvdWJsZQorICAgICAgInNkIgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5k
CisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2lu
ZCwgbnVtT3BlcmFuZHMpCisgICAgaWYgbnVtT3BlcmFuZHMgPT0gMworICAgICAgaWYgb3BlcmFu
ZHNbMF0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2lu
ZCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFz
bS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29w
ZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1
dHMgIlx0bW92I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5k
KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICRhc20ucHV0cyAi
XHQje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sy
XS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0
cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxl
WDg2T3Aob3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29k
ZSwga2luZCwgb3BlcmFuZHMuc2l6ZSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2hpZnQo
b3Bjb2RlLCBraW5kKQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBvciBvcGVy
YW5kc1swXSA9PSBSZWdpc3RlcklELmZvck5hbWUobmlsLCAidDIiKQorICAgICAgJGFzbS5wdXRz
ICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0eGNo
Z2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICAgICRhc20ucHV0
cyAiXHQje29wY29kZX0gJWNsLCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAg
ICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVl
Y3giCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkRvdWJsZUJyYW5jaChicmFu
Y2hPcGNvZGUsIG1vZGUpCisgICAgY2FzZSBtb2RlCisgICAgd2hlbiA6bm9ybWFsCisgICAgICAk
YXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gOnJldmVyc2UKKyAg
ICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgZWxzZQorICAgICAg
cmFpc2UgbW9kZS5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bj
b2RlfSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2
SW50Q29tcGFyZShvcGNvZGVTdWZmaXgsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8g
SW1tZWRpYXRlIGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1sxXS5pc19h
PyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0g
Im5lIikKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzaWYgb3BlcmFuZHNbMV0uaXNfYT8gSW1t
ZWRpYXRlIGFuZCBvcGVyYW5kc1sxXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1swXS5pc19hPyBS
ZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5l
IikKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdGNtcCN7
eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5k
bGVYODZJbnRCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NkludENvbXBh
cmUoYnJhbmNoT3Bjb2RlWzEuLi0xXSwga2luZCkKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hP
cGNvZGV9ICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVY
ODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kKQorICAgIGlmIG9wZXJhbmQuc3VwcG9ydHM4Qml0T25Y
ODYKKyAgICAgICRhc20ucHV0cyAiXHQje3NldE9wY29kZX0gI3tvcGVyYW5kLng4Nk9wZXJhbmQo
OmJ5dGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgI3tvcGVyYW5kLng4Nk9wZXJhbmQo
OmJ5dGUpfSwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgICRh
c20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAg
ICAkYXNtLnB1dHMgIlx0I3tzZXRPcGNvZGV9ICVhbCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6
YmwgJWFsLCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZC54ODZPcGVy
YW5kKDppbnQpfSwgJWVheCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50
Q29tcGFyZVNldChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShzZXRP
cGNvZGVbMy4uLTFdLCBraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRz
WzJdKQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgdmFsdWUgPSBv
cGVyYW5kc1swXQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gMgorICAgICAgbWFz
ayA9IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLTEpCisgICAgd2hlbiAzCisgICAgICBtYXNr
ID0gb3BlcmFuZHNbMV0KKyAgICBlbHNlCisgICAgICByYWlzZSAiRXhwZWN0ZWQgMiBvciAzIG9w
ZXJhbmRzLCBidXQgZ290ICN7b3BlcmFuZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIK
KyAgICBlbmQKKyAgICAKKyAgICBpZiBtYXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1
ZSA9PSAtMQorICAgICAgaWYgdmFsdWUuaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1
dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9LCAj
e3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMg
Ilx0Y21wI3t4ODZTdWZmaXgoa2luZCl9ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9Igor
ICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChr
aW5kKX0gI3ttYXNrLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZCcmFuY2hUZXN0KGJyYW5jaE9w
Y29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgJGFzbS5wdXRzICJcdCN7
YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzLmxhc3QueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRl
ZiBoYW5kbGVYODZTZXRUZXN0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0KGtp
bmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHMubGFzdCkKKyAgZW5kCisg
IAorICBkZWYgaGFuZGxlWDg2T3BCcmFuY2gob3Bjb2RlLCBicmFuY2hPcGNvZGUsIGtpbmQpCisg
ICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXpl
IC0gMSkKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAgIGp1bXBUYXJn
ZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRz
WzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5kCisgICAgJGFz
bS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQueDg2TGFiZWx9IgorICBlbmQK
KyAgCisgIGRlZiBoYW5kbGVYODZTdWJCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGlm
IG9wZXJhbmRzLnNpemUgPT0gNCBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAg
ICRhc20ucHV0cyAiXHRuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAkYXNtLnB1dHMgIlx0YWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29w
ZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIGhhbmRsZVg4Nk9w
V2l0aE51bU9wZXJhbmRzKCJzdWIje3g4NlN1ZmZpeChraW5kKX0iLCBraW5kLCBvcGVyYW5kcy5z
aXplIC0gMSkKKyAgICBlbmQKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAg
ICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdl
dCA9IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAg
ZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQueDg2TGFi
ZWx9IgorICBlbmQKKyAgCisgIGRlZiBsb3dlclg4NgorICAgICRhc20uY29tbWVudCBjb2RlT3Jp
Z2luU3RyaW5nCisgICAgY2FzZSBvcGNvZGUKKyAgICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAg
ICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQor
ICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAg
ICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICBpZiBv
cGVyYW5kc1swXS52YWx1ZSA9PSAwCisgICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9w
ZXJhbmRzWzJdCisgICAgICAgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
ICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRzICJcdGxlYWwgI3tvcGVy
YW5kc1swXS52YWx1ZX0oI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFu
ZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgb3BlcmFu
ZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJh
aXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVu
bGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHRs
ZWFsICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVs
c2UKKyAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQor
ICAgICAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9Igor
ICAgICAgICBlbmQKKyAgICAgIGVuZAorICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgIGhh
bmRsZVg4Nk9wKCJhbmRsIiwgOmludCkKKyAgICB3aGVuICJsc2hpZnRpIgorICAgICAgaGFuZGxl
WDg2U2hpZnQoInNhbGwiLCA6aW50KQorICAgIHdoZW4gIm11bGkiCisgICAgICBpZiBvcGVyYW5k
cy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAkYXNt
LnB1dHMgIlx0aW11bGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50LCA6aW50KX0iCisgICAgICBl
bHNlCisgICAgICAgICMgRklYTUU6IGNvdWxkIGRvIHNvbWUgcGVlcGhvbGUgaW4gY2FzZSB0aGUg
bGVmdCBvcGVyYW5kIGlzIGltbWVkaWF0ZSBhbmQgaXQncworICAgICAgICAjIGEgcG93ZXIgb2Yg
dHdvLgorICAgICAgICBoYW5kbGVYODZPcCgiaW11bGwiLCA6aW50KQorICAgICAgZW5kCisgICAg
d2hlbiAibmVnaSIKKyAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7eDg2T3BlcmFuZHMoOmludCl9
IgorICAgIHdoZW4gIm5vdGkiCisgICAgICAkYXNtLnB1dHMgIlx0bm90bCAje3g4Nk9wZXJhbmRz
KDppbnQpfSIKKyAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgaGFuZGxlWDg2T3AoIm9ybCIs
IDppbnQpCisgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYXJsIiwg
OmludCkKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzaHJsIiwg
OmludCkKKyAgICB3aGVuICJzdWJpIiwgInN1YnAiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09
IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiXHRu
ZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICRhc20ucHV0cyAi
XHRhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIGhhbmRsZVg4Nk9wKCJzdWJsIiwg
OmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gInhvcmkiLCAieG9ycCIKKyAgICAgIGhhbmRsZVg4
Nk9wKCJ4b3JsIiwgOmludCkKKyAgICB3aGVuICJsb2FkaSIsICJzdG9yZWkiLCAibG9hZHAiLCAi
c3RvcmVwIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50
KX0iCisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJsICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgIHdoZW4gImxvYWRoIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnp3bCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICB3aGVuICJzdG9yZWIiCisgICAgICAkYXNtLnB1dHMgIlx0bW92YiAje3g4Nk9wZXJhbmRz
KDpieXRlLCA6Ynl0ZSl9IgorICAgIHdoZW4gImxvYWRkIiwgIm1vdmVkIiwgInN0b3JlZCIKKyAg
ICAgICRhc20ucHV0cyAiXHRtb3ZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIK
KyAgICB3aGVuICJhZGRkIgorICAgICAgJGFzbS5wdXRzICJcdGFkZHNkICN7eDg2T3BlcmFuZHMo
OmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImRpdmQiCisgICAgICAkYXNtLnB1dHMgIlx0
ZGl2c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3ViZCIK
KyAgICAgICRhc20ucHV0cyAiXHRzdWJzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUp
fSIKKyAgICB3aGVuICJtdWxkIgorICAgICAgJGFzbS5wdXRzICJcdG11bHNkICN7eDg2T3BlcmFu
ZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInNxcnRkIgorICAgICAgJGFzbS5wdXRz
ICJcdHNxcnRzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImNpMmQiCisgICAgICAkYXNtLnB1
dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJiZGVxIgorICAgICAgaXNVbm9y
ZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRlcSIpCisgICAgICAkYXNtLnB1dHMgIlx0dWNv
bWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7TGFiZWxSZWZlcmVu
Y2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1
dHMgIlx0amUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgb3BlcmFuZHNbMl0pLng4
NkxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkbmVx
IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqbmUiLCA6bm9ybWFsKQorICAgIHdoZW4g
ImJkZ3QiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphIiwgOm5vcm1hbCkKKyAgICB3
aGVuICJiZGd0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIsIDpub3JtYWwp
CisgICAgd2hlbiAiYmRsdCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6cmV2
ZXJzZSkKKyAgICB3aGVuICJiZGx0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImph
ZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJy
YW5jaCgiamUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbmVxdW4iCisgICAgICBpc1Vub3JkZXJl
ZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgIGlzRXF1YWwgPSBMb2NhbExh
YmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVP
cmlnaW4sIGlzVW5vcmRlcmVkKS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tM
YWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNFcXVhbCkueDg2TGFiZWx9IgorICAgICAg
aXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAgICAkYXNtLnB1dHMgIlx0am1wICN7b3BlcmFu
ZHNbMl0ueDg2TGFiZWx9IgorICAgICAgaXNFcXVhbC5sb3dlcigiWDg2IikKKyAgICB3aGVuICJi
ZGd0dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOnJldmVyc2UpCisgICAg
d2hlbiAiYmRndGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpyZXZl
cnNlKQorICAgIHdoZW4gImJkbHR1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIi
LCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJh
bmNoKCJqYmUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJc
dGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGNtcGwgJDB4ODAwMDAw
MDAgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRq
ZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJ0ZDJpIgorICAgICAgJGFzbS5w
dXRzICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJjZDJpIgorICAgICAgJGFz
bS5wdXRzICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdHRlc3Rs
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0i
CisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpp
bnQpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje29wZXJh
bmRzWzJdLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqbmUgI3tvcGVyYW5kc1syXS54
ODZMYWJlbH0iCisgICAgd2hlbiAibW92ZHoiCisgICAgICAkYXNtLnB1dHMgIlx0eG9ycGQgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDpkb3VibGUpfSIKKyAgICB3aGVuICJwb3AiCisgICAgICAkYXNtLnB1dHMgIlx0cG9wICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicHVzaCIKKyAgICAgICRhc20u
cHV0cyAiXHRwdXNoICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAi
bW92ZSIsICJzeGkycCIsICJ6eGkycCIKKyAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9
PSBvcGVyYW5kc1swXSBhbmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAk
YXNtLnB1dHMgIlx0eG9ybCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMF0gIT0gb3Bl
cmFuZHNbMV0KKyAgICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6
aW50KX0iCisgICAgICBlbmQKKyAgICB3aGVuICJub3AiCisgICAgICAkYXNtLnB1dHMgIlx0bm9w
IgorICAgIHdoZW4gImJpZXEiLCAiYnBlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUi
LCA6aW50KQorICAgIHdoZW4gImJpbmVxIiwgImJwbmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqbmUiLCA6aW50KQorICAgIHdoZW4gImJpYSIsICJicGEiCisgICAgICBoYW5kbGVYODZJ
bnRCcmFuY2goImphIiwgOmludCkKKyAgICB3aGVuICJiaWFlcSIsICJicGFlcSIKKyAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmludCkKKyAgICB3aGVuICJiaWIiLCAiYnBiIgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDppbnQpCisgICAgd2hlbiAiYmliZXEiLCAiYnBi
ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDppbnQpCisgICAgd2hlbiAiYmln
dCIsICJicGd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDppbnQpCisgICAgd2hl
biAiYmlndGVxIiwgImJwZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmlu
dCkKKyAgICB3aGVuICJiaWx0IiwgImJwbHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImps
IiwgOmludCkKKyAgICB3aGVuICJiaWx0ZXEiLCAiYnBsdGVxIgorICAgICAgaGFuZGxlWDg2SW50
QnJhbmNoKCJqbGUiLCA6aW50KQorICAgIHdoZW4gImJiZXEiCisgICAgICBoYW5kbGVYODZJbnRC
cmFuY2goImplIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJuZXEiCisgICAgICBoYW5kbGVYODZJbnRC
cmFuY2goImpuZSIsIDpieXRlKQorICAgIHdoZW4gImJiYSIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamEiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamFlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiIgorICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqYiIsIDpieXRlKQorICAgIHdoZW4gImJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqYmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0IgorICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqZyIsIDpieXRlKQorICAgIHdoZW4gImJiZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamdlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdCIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamwiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRC
cmFuY2goImpsdGVxIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRpbyIsICJidHBvIgorICAgICAgaGFu
ZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6aW50KQorICAgIHdoZW4gImJ0aXMiLCAiYnRwcyIKKyAg
ICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmludCkKKyAgICB3aGVuICJidGl6IiwgImJ0
cHoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDppbnQpCisgICAgd2hlbiAiYnRp
bnoiLCAiYnRwbnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6aW50KQorICAg
IHdoZW4gImJ0Ym8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpieXRlKQorICAg
IHdoZW4gImJ0YnMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDpieXRlKQorICAg
IHdoZW4gImJ0YnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDpieXRlKQorICAg
IHdoZW4gImJ0Ym56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmJ5dGUpCisg
ICAgd2hlbiAiam1wIgorICAgICAgJGFzbS5wdXRzICJcdGptcCAje29wZXJhbmRzWzBdLng4NkNh
bGxPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiYWRkaW8iLCAiYmFkZHBvIgorICAgICAgaGFu
ZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJhZGRpcyIsICJi
YWRkcHMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqcyIsIDppbnQpCisgICAg
d2hlbiAiYmFkZGl6IiwgImJhZGRweiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwg
Imp6IiwgOmludCkKKyAgICB3aGVuICJiYWRkaW56IiwgImJhZGRwbnoiCisgICAgICBoYW5kbGVY
ODZPcEJyYW5jaCgiYWRkbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbyIKKyAgICAg
IGhhbmRsZVg4NlN1YkJyYW5jaCgiam8iLCA6aW50KQorICAgIHdoZW4gImJzdWJpcyIKKyAgICAg
IGhhbmRsZVg4NlN1YkJyYW5jaCgianMiLCA6aW50KQorICAgIHdoZW4gImJzdWJpeiIKKyAgICAg
IGhhbmRsZVg4NlN1YkJyYW5jaCgianoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbnoiCisgICAg
ICBoYW5kbGVYODZTdWJCcmFuY2goImpueiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlvIgorICAg
ICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJibXVs
aXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAianMiLCA6aW50KQorICAgIHdo
ZW4gImJtdWxpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqeiIsIDppbnQp
CisgICAgd2hlbiAiYm11bGlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJq
bnoiLCA6aW50KQorICAgIHdoZW4gImJvcmlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9y
bCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5j
aCgib3JsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJib3JpeiIKKyAgICAgIGhhbmRsZVg4Nk9w
QnJhbmNoKCJvcmwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJvcmlueiIKKyAgICAgIGhhbmRs
ZVg4Nk9wQnJhbmNoKCJvcmwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJicmVhayIKKyAgICAg
ICRhc20ucHV0cyAiXHRpbnQgJDMiCisgICAgd2hlbiAiY2FsbCIKKyAgICAgICRhc20ucHV0cyAi
XHRjYWxsICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInJl
dCIKKyAgICAgICRhc20ucHV0cyAiXHRyZXQiCisgICAgd2hlbiAiY2llcSIsICJjcGVxIgorICAg
ICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQpCisgICAgd2hlbiAiY2luZXEi
LCAiY3BuZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRuZSIsIDppbnQpCisg
ICAgd2hlbiAiY2lhIiwgImNwYSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGEi
LCA6aW50KQorICAgIHdoZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAgaGFuZGxlWDg2SW50Q29t
cGFyZVNldCgic2V0YWUiLCA6aW50KQorICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAgICBoYW5k
bGVYODZJbnRDb21wYXJlU2V0KCJzZXRiIiwgOmludCkKKyAgICB3aGVuICJjaWJlcSIsICJjcGJl
cSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGJlIiwgOmludCkKKyAgICB3aGVu
ICJjaWd0IiwgImNwZ3QiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnIiwgOmlu
dCkKKyAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFy
ZVNldCgic2V0Z2UiLCA6aW50KQorICAgIHdoZW4gImNpbHQiLCAiY3BsdCIKKyAgICAgIGhhbmRs
ZVg4NkludENvbXBhcmVTZXQoInNldGwiLCA6aW50KQorICAgIHdoZW4gImNpbHRlcSIsICJjcGx0
ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisgICAgd2hl
biAidGlvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQpCisgICAgd2hlbiAi
dGlzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDppbnQpCisgICAgd2hlbiAidGl6
IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDppbnQpCisgICAgd2hlbiAidGlueiIK
KyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmludCkKKyAgICB3aGVuICJ0Ym8iCisg
ICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgd2hlbiAidGJzIgorICAg
ICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAgIHdoZW4gInRieiIKKyAgICAg
IGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ym56IgorICAgICAg
aGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJwZWVrIgorICAgICAg
JGFzbS5wdXRzICJcdG1vdmwgI3tvcGVyYW5kc1swXS52YWx1ZSAqIDR9KCVlc3ApLCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInBva2UiCisgICAgICAkYXNtLnB1
dHMgIlx0bW92bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFd
LnZhbHVlICogNH0oJWVzcCkiCisgICAgd2hlbiAiY2RxaSIKKyAgICAgICRhc20ucHV0cyAiXHRj
ZHEiCisgICAgd2hlbiAiaWRpdmkiCisgICAgICAkYXNtLnB1dHMgIlx0aWRpdmwgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJmaWkyZCIKKyAgICAgICRhc20ucHV0
cyAiXHRtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwc2xscSAk
MzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHBvciAleG1tNywgI3tvcGVyYW5kc1syXS54
ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRhc20ucHV0cyAi
XHRtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cHNybHEg
JDMyLCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAleG1tNywgI3tvcGVyYW5kc1sy
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiQmFkIG9wY29kZTog
I3tvcGNvZGV9IgorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29kZVNwZWNpYWxpemF0aW9u
S2luZF9oCisjZGVmaW5lIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCituYW1lc3BhY2UgSlND
IHsKKworZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JD
b25zdHJ1Y3QgfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw3IEBACiAjZGVmaW5lIENvbW1vblNsb3dQYXRoc19oCiAKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKIApAQCAtNDEsNiArNDIsMzgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMgewogCitBTFdB
WVNfSU5MSU5FIEV4ZWNTdGF0ZSogYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lz
dGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7Cisg
ICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAg
QVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOworICAgIENvZGVCbG9jayogbmV3Q29k
ZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtp
bmQpOworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKCk7CisKKyAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNl
IGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkg
dGhlIGNhbGxlci4KKyAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhleGVjLT5yZWdpc3RlcnMo
KSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2NrLT5tX251bUNh
bGxlZVJlZ2lzdGVycykpCisgICAgICAgIHJldHVybiAwOworCisgICAgQVNTRVJUKGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworCisg
ICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1lIGFuZCBhcmd1bWVudHMs
IHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5lZC4KKyAgICBzaXpl
X3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzOworICAgIFJlZ2lzdGVyKiBzcmMgPSBleGVjLT5yZWdpc3RlcnMoKTsKKyAg
ICBSZWdpc3RlciogZHN0ID0gZXhlYy0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKKworICAgIGludCBp
OworICAgIGludCBlbmQgPSAtRXhlY1N0YXRlOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpOworICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3Rb
aV0gPSBzcmNbaV07CisKKyAgICBlbmQgLT0gZGVsdGE7CisgICAgZm9yICggOyBpID49IGVuZDsg
LS1pKQorICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOworCisgICAgRXhlY1N0YXRlKiBu
ZXdFeGVjID0gRXhlY1N0YXRlOjpjcmVhdGUoZHN0KTsKKyAgICBBU1NFUlQoKHZvaWQqKW5ld0V4
ZWMgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7CisgICAgcmV0dXJuIG5ld0V4ZWM7Cit9CisKIEFM
V0FZU19JTkxJTkUgYm9vbCBvcEluc3RhbmNlT2ZTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSwgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3RvKQogewogICAgIEFTU0VSVCgh
dmFsdWUuaXNDZWxsKCkgfHwgIWJhc2VWYWwuaXNDZWxsKCkgfHwgIXByb3RvLmlzQ2VsbCgpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2
aXNpb24gMTA1Mzc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCeXRlY29k
ZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0RyaXZl
ci5oIgorI2luY2x1ZGUgIkV4ZWN1dGlvbkhhcm5lc3MuaCIKICNpbmNsdWRlICJKSVQuaCIKICNp
bmNsdWRlICJKSVREcml2ZXIuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKQEAgLTg0LDcgKzg1LDcg
QEAgSW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6OmludHJpbnNpYygpIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KIHN0YXRpYyB2b2lkIGpldHRpc29uQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgT3duUHRyPFQ+JiBjb2RlQmxvY2spCiB7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+
Z2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29k
ZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJU
KGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgT3duUHRyPFQ+IGNvZGVCbG9ja1RvSmV0
dGlzb24gPSBjb2RlQmxvY2sucmVsZWFzZSgpOwogICAgIGNvZGVCbG9jayA9IHN0YXRpY19wb2lu
dGVyX2Nhc3Q8VD4oY29kZUJsb2NrVG9KZXR0aXNvbi0+cmVsZWFzZUFsdGVybmF0aXZlKCkpOwpA
QCAtMTY3LDkgKzE2OCwzMCBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVPcHRp
bWl6CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEV2YWxFeGVjdXRhYmxlOjpqaXRDb21w
aWxlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJZkFw
cHJvcHJpYXRlKGV4ZWMsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29k
ZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsK
K30KKworaW5saW5lIGNvbnN0IGNoYXIqIHNhbXBsaW5nRGVzY3JpcHRpb24oSklUQ29kZTo6SklU
VHlwZSBqaXRUeXBlKQoreworICAgIHN3aXRjaCAoaml0VHlwZSkgeworICAgIGNhc2UgSklUQ29k
ZTo6SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAgICAgcmV0dXJuICJJbnRlcnByZXRlciBDb21waWxh
dGlvbiAoVE9UQUwpIjsKKyAgICBjYXNlIEpJVENvZGU6OkJhc2VsaW5lSklUOgorICAgICAgICBy
ZXR1cm4gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6
REZHSklUOgorICAgICAgICByZXR1cm4gIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBk
ZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorfQorCiBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChF
eGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6
SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGpp
dFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRP
VEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBz
YW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAh
RU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC0yMTAsNyArMjMyLDcg
QEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYQogICAgIH0KIAogI2lm
IEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlSWZBcHByb3ByaWF0ZShleGVjLCBtX2V2
YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFy
ZUZvckV4ZWN1dGlvbihleGVjLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGpp
dFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC0yOTUsOSArMzE3LDE1IEBA
IEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGkKICAgICByZXR1cm4gZXJy
b3I7CiB9CiAKK3ZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBpbGUoRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZXhlYywg
bV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVy
SklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCiBKU09iamVj
dCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNj
b3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQog
ewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBp
bGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1w
bGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBV
TlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC0zMzYsNyArMzY0LDcgQEAgSlNPYmplY3QqIFByb2dy
YW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAg
aWYgKCFqaXRDb21waWxlSWZBcHByb3ByaWF0ZShleGVjLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1f
aml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbihl
eGVjLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAg
ICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC00MTIsNyArNDQwLDcgQEAgRnVuY3Rpb25Db2Rl
QmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6YgogICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0
aXZlKCkpCiAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4o
cmVzdWx0LT5hbHRlcm5hdGl2ZSgpKTsKICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICBBU1NFUlQo
cmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VS
VChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKQEAgLTQzOCw2ICs0NjYsMTggQEAgSlNPYmplY3QqIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y29tcGlsZU9wdAogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBGdW5j
dGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDYWxsKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYywgbV9j
b2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFy
aXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgRnVuY3Rpb25FeGVjdXRh
YmxlOjpqaXRDb21waWxlRm9yQ29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBib29s
IHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYywgbV9jb2RlQmxv
Y2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3Ry
dWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQo
KSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEZ1bmN0aW9uQ29k
ZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja1dpdGhCeXRlY29kZUZvcihDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVC
bG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwpAQCAtNDgyLDcgKzUyMiw3IEBAIFBh
c3NPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+IEZ1bmN0aW9uRXgKIAogSlNPYmplY3QqIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNj
b3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQog
ewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBp
bGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1w
bGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CkBAIC01MDQsNyArNTQ0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0Zv
ckNhbGwtPnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICgh
aml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLCBtX2NvZGVCbG9ja0ZvckNhbGws
IG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1i
b2xUYWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24o
ZXhlYywgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JD
YWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENvZGVGb3JDYWxsKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNTI0LDcgKzU2NCw3IEBAIEpTT2JqZWN0
KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKIAogSlNPYmplY3QqIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2Nv
cGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7
Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpC
YXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGls
YXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBs
aW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVO
VVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTU0Niw3ICs1ODYsNyBAQCBKU09iamVjdCogRnVuY3Rp
b25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAgICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJsb2Nr
Rm9yQ29uc3RydWN0LT5zaGFyZWRTeW1ib2xUYWJsZSgpOwogCiAjaWYgRU5BQkxFKEpJVCkKLSAg
ICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYywgbV9jb2RlQmxvY2tG
b3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0
V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFy
ZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2pp
dENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBt
X3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9yQ29uc3RydWN0KSkKICAgICAgICAgcmV0dXJu
IDA7CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaAkocmV2aXNpb24gMTA1Mzc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5l
IEV4ZWN1dGFibGVfaAogCiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIKKyNpbmNsdWRlICJDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTM5LDEyICs0MCwxMiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1Z2dlcjsKICAgICBjbGFzcyBFdmFsQ29kZUJsb2Nr
OwogICAgIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFNjb3BlQ2hh
aW5Ob2RlOwogCiAgICAgc3RydWN0IEV4Y2VwdGlvbkluZm87CiAgICAgCi0gICAgZW51bSBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKICAg
ICBlbnVtIENvbXBpbGF0aW9uS2luZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21w
aWxhdGlvbiB9OwogCiAgICAgaW5saW5lIGJvb2wgaXNDYWxsKENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKQEAgLTMxOSw2ICszMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAg
ICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAg
ICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtMzM4LDYgKzM0MCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lk
IGpldHRpc29uT3B0aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRD
b21waWxlKEV4ZWNTdGF0ZSopOwogI2VuZGlmCiAKICAgICAgICAgRXZhbENvZGVCbG9jayYgZ2Vu
ZXJhdGVkQnl0ZWNvZGUoKQpAQCAtMzg0LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IH07CiAKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRh
YmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBw
dWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC00MTEs
NiArNDE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAg
ICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAg
ICB2b2lkIGppdENvbXBpbGUoRXhlY1N0YXRlKik7CiAjZW5kaWYKIAogICAgICAgICBQcm9ncmFt
Q29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC00NTMsNiArNDU4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0
RXhlY3V0YWJsZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVm
IFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNTA4LDYgKzUxNCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0
aW1pemVkQ29kZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGls
ZUZvckNhbGwoRXhlY1N0YXRlKik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVk
Rm9yQ2FsbCgpIGNvbnN0CkBAIC01MzUsNiArNTQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2Rl
Rm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JD
b25zdHJ1Y3QoRXhlY1N0YXRlKik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVk
Rm9yQ29uc3RydWN0KCkgY29uc3QKQEAgLTU4Miw2ICs1OTAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICAgICAgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KGdsb2Jh
bERhdGEpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lk
IGppdENvbXBpbGVGb3IoRXhlY1N0YXRlKiBleGVjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7Cisg
ICAgICAgICAgICAgICAgaml0Q29tcGlsZUZvckNhbGwoZXhlYyk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZv
ckNvbnN0cnVjdCk7CisgICAgICAgICAgICBqaXRDb21waWxlRm9yQ29uc3RydWN0KGV4ZWMpOwor
ICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3Io
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIEV4ZWN1dGlvbkhhcm5lc3NfaAorI2RlZmluZSBFeGVjdXRpb25IYXJu
ZXNzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKwor
I2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+Citpbmxp
bmUgYm9vbCBwcmVwYXJlRm9yRXhlY3V0aW9uKEV4ZWNTdGF0ZSogZXhlYywgT3duUHRyPENvZGVC
bG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENvZGU6OkpJVFR5cGUg
aml0VHlwZSkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxp
bmVDb2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVs
IGludGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RW50cnlwb2ludChleGVjLT5nbG9iYWxE
YXRhKCksIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0
SklUQ29kZShqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGppdENv
bXBpbGVJZkFwcHJvcHJpYXRlKGV4ZWMsIGNvZGVCbG9jaywgaml0Q29kZSwgaml0VHlwZSk7Cit9
CisKK2lubGluZSBib29sIHByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihFeGVjU3RhdGUqIGV4
ZWMsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29k
ZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5
bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklU
Q29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGlu
IHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRGdW5jdGlvbkVu
dHJ5cG9pbnQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBraW5kLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFy
aXR5Q2hlY2spOworICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgaml0Q29k
ZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2Vsc2UKKyAg
ICBVTlVTRURfUEFSQU0oa2luZCk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorICAgIHJldHVy
biBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMsIGNvZGVCbG9jaywgaml0Q29k
ZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBzeW1ib2xUYWJsZSwgaml0VHlwZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIEV4
ZWN1dGlvbkhhcm5lc3NfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FjdGl2YXRpb24uaAkocmV2aXNpb24gMTA1Mzc0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8
VW5rbm93bj4gPiByZWdpc3RlckFycmF5ID0gYWRvcHRBcnJheVB0cihuZXcgV3JpdGVCYXJyaWVy
PFVua25vd24+W3JlZ2lzdGVyQXJyYXlTaXplXSk7CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtu
b3duPiogcmVnaXN0ZXJzID0gcmVnaXN0ZXJBcnJheS5nZXQoKSArIHJlZ2lzdGVyT2Zmc2V0Owot
CisgICAgICAgIAogICAgICAgICAvLyBDb3B5IGFsbCBhcmd1bWVudHMgdGhhdCBjYW4gYmUgY2Fw
dHVyZWQgYnkgbmFtZSBvciBieSB0aGUgYXJndW1lbnRzIG9iamVjdC4KICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBtX251bUNhcHR1cmVkQXJnczsgKytpKSB7CiAgICAgICAgICAgICBpbnQg
aW5kZXggPSBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KGkpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24gMTA1Mzc0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsy
OCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTQXJyYXk7CisgICAgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgc3RydWN0IFNwYXJzZUFycmF5RW50cnkgOiBw
dWJsaWMgV3JpdGVCYXJyaWVyPFVua25vd24+IHsKICAgICAgICAgdHlwZWRlZiBXcml0ZUJhcnJp
ZXI8VW5rbm93bj4gQmFzZTsKQEAgLTEyNCw2ICsxMjUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICB9OwogCiAgICAgY2xhc3MgSlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5k
IGNsYXNzIFdhbGtlcjsKIAogICAgIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsMTAgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0gICAgY2xhc3Mg
U3RydWN0dXJlOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQ
cm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CisgICAgY2xh
c3MgU3RydWN0dXJlOwogCiAgICAgZW51bSBFbnVtZXJhdGlvbk1vZGUgewogICAgICAgICBFeGNs
dWRlRG9udEVudW1Qcm9wZXJ0aWVzLApAQCAtMTY1LDYgKzE2Niw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3Qq
LCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAK
ICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworICAgICAgICAKICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsKICAgICAg
ICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CiAgICAgfTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDEwNTM3
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5j
dGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBKU0FjdGl2YXRpb247CiAgICAgY2xhc3MgSlNHbG9i
YWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5h
dGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgU291cmNlQ29kZTsKICAgICBuYW1lc3BhY2UgREZH
IHsKQEAgLTE0MCw2ICsxNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToK
KyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBj
b25zdDsKIAogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRl
KiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMDUzNzQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNDEsNiArMTQxLDggQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFs
RGF0YVR5cAogICAgICwga2V5d29yZHMoYWRvcHRQdHIobmV3IEtleXdvcmRzKHRoaXMpKSkKICAg
ICAsIGludGVycHJldGVyKDApCiAgICAgLCBoZWFwKHRoaXMsIGhlYXBTaXplKQorICAgICwganNB
cnJheUNsYXNzSW5mbygmSlNBcnJheTo6c19pbmZvKQorICAgICwganNGaW5hbE9iamVjdENsYXNz
SW5mbygmSlNGaW5hbE9iamVjdDo6c19pbmZvKQogI2lmIEVOQUJMRShERkdfSklUKQogICAgICwg
c2l6ZU9mTGFzdFNjcmF0Y2hCdWZmZXIoMCkKICNlbmRpZgpAQCAtMjE4LDcgKzIyMCw3IEBAIEpT
R2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICBqaXRTdHVicyA9IGFk
b3B0UHRyKG5ldyBKSVRUaHVua3ModGhpcykpOwogI2VuZGlmCiAKLSAgICBpbnRlcnByZXRlci0+
aW5pdGlhbGl6ZSh0aGlzLT5jYW5Vc2VKSVQoKSk7CisgICAgaW50ZXJwcmV0ZXItPmluaXRpYWxp
emUoJmxsaW50RGF0YSwgdGhpcy0+Y2FuVXNlSklUKCkpOwogCiAgICAgaGVhcC5ub3RpZnlJc1Nh
ZmVUb0NvbGxlY3QoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5oCShyZXZpc2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTUgKzMwLDE2
IEBACiAjZGVmaW5lIEpTR2xvYmFsRGF0YV9oCiAKICNpbmNsdWRlICJDYWNoZWRUcmFuc2NlbmRl
bnRhbEZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiRGF0ZUlu
c3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVk
ZSAiSGVhcC5oIgotI2luY2x1ZGUgIlN0cm9uZy5oIgorI2luY2x1ZGUgIkludHJpbnNpYy5oIgog
I2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxM
SW50RGF0YS5oIgogI2luY2x1ZGUgIk51bWVyaWNTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU21hbGxT
dHJpbmdzLmgiCisjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVGVybWluYXRvci5oIgog
I2luY2x1ZGUgIlRpbWVvdXRDaGVja2VyLmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgpAQCAt
NjUsNiArNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsK
ICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBLZXl3b3JkczsKKyAgICBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFz
cyBQYXJzZXJBcmVuYTsKICAgICBjbGFzcyBSZWdFeHBDYWNoZTsKQEAgLTI0OCw2ICsyNTAsMTIg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEhlYXAgaGVhcDsKIAogICAgICAgICBKU1ZhbHVl
IGV4Y2VwdGlvbjsKKworICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzQXJyYXlDbGFz
c0luZm87CisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QganNGaW5hbE9iamVjdENsYXNz
SW5mbzsKKworICAgICAgICBMTEludDo6RGF0YSBsbGludERhdGE7CisKICNpZiBFTkFCTEUoSklU
KQogICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIGV4Y2VwdGlvbkxvY2F0aW9uOwogICAgICAgICBK
U1ZhbHVlIGhvc3RDYWxsUmV0dXJuVmFsdWU7CkBAIC0zNTMsNiArMzYxLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAjdW5kZWYgcmVnaXN0ZXJUeXBlZEFycmF5RnVuY3Rpb24KIAogICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAog
ICAgICAgICBKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSwgSGVh
cFNpemUpOwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxEYXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRl
cm5hbCgpOwogICAgICAgICB2b2lkIGNyZWF0ZU5hdGl2ZVRodW5rKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDEw
NTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgR2V0dGVyU2V0dGVyOwogICAgIGNsYXNz
IEdsb2JhbENvZGVCbG9jazsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAg
Y2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2Nr
OwogICAgIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwpAQCAtMzM1LDYgKzMzNiw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZFN0YXRpY0dsb2Jh
bHMoR2xvYmFsUHJvcGVydHlJbmZvKiwgaW50IGNvdW50KTsKIAogICAgIHByaXZhdGU6CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAg
ICAvLyBGSVhNRTogRm9sZCByZXNldCBpbnRvIGluaXQuCiAgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgaW5pdChKU09iamVjdCogdGhpc1ZhbHVlKTsKICAgICAgICAgdm9pZCByZXNldChK
U1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
T2JqZWN0LmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgR2V0dGVyU2V0dGVyOwogICAgIGNsYXNzIEhhc2hFbnRyeTsKICAg
ICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICBjbGFzcyBNYXJrZWRCbG9jazsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7
CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CkBAIC0yNzEsNiArMjcyLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFBy
b3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBO
b2JvZHkgc2hvdWxkIGV2ZXIgYXNrIGFueSBvZiB0aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5n
IGFscmVhZHkga25vd24gdG8gYmUgYSBKU09iamVjdC4KICAgICAgICAgdXNpbmcgSlNDZWxsOjpp
c0FQSVZhbHVlV3JhcHBlcjsKICAgICAgICAgdXNpbmcgSlNDZWxsOjppc0dldHRlclNldHRlcjsK
QEAgLTM4Myw2ICszODYsOCBAQCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVT
dG9yCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBwcml2YXRl
OgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAK
ICAgICAgICAgZXhwbGljaXQgSlNGaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUsIG1faW5saW5lU3RvcmFnZSkKICAgICAgICAgewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aAkocmV2aXNpb24gMTA1Mzc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBKU09iamVj
dDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBK
SVQ7CkBAIC05Niw2ICs5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBw
cml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAg
ICAgICAKICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqLCBQcm9wZXJ0
eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJs
ZVNsb3QpOwogCiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FjaGVkU3RydWN0
dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZp
c2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIEpTU3RyaW5nOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAg
IEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSopOwogICAgIEpTU3RyaW5nKiBq
c0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSopOwpAQCAtMjQxLDYgKzI0Miw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNv
bHZlUm9wZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dD
YXNlOChMQ2hhciopIGNvbnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2UoVUNo
YXIqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUlu
Zm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJ
bmZvLmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMTsgLy8gV2ViQ29yZSB1
c2VzIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgdG8gbWFrZSBkb2N1bWVudC5hbGwgdW5kZXRlY3Rh
YmxlLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPSAx
IDw8IDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE92ZXJyaWRlc0hhc0luc3RhbmNlID0g
MSA8PCAyOwpAQCAtODcsNiArODksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBmbGFnKSBjb25z
dCB7IEFTU0VSVChmbGFnIDw9ICgxIDw8IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBmbGFnOyB9CiAg
ICAgICAgIGJvb2wgaXNTZXRPbkZsYWdzMih1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChm
bGFnID49ICgxIDw8IDgpKTsgcmV0dXJuIG1fZmxhZ3MyICYgKGZsYWcgPj4gOCk7IH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDEw
NTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTYsMTAgKzExNiw5IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVz
aXplUHJvdG90eXBlKEUKICAgICByZXR1cm4gSlNOb3RBbk9iamVjdDo6Y3JlYXRlKGV4ZWMpOwog
fQogCi0jaWZuZGVmIE5ERUJVRwogY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogewotICAg
IHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZSA9IDY0OworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
c2l6ZSA9IDEyODsKICAgICBzdGF0aWMgY2hhciBkZXNjcmlwdGlvbltzaXplXTsKIAogICAgIGlm
ICghKnRoaXMpCkBAIC0xMjgsMTQgKzEyNywxNCBAQCBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlv
bigpCiAgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiSW50MzI6ICVkIiwgYXNJ
bnQzMigpKTsKICAgICBlbHNlIGlmIChpc0RvdWJsZSgpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkK
LSAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVsZiwgJWx4Iiwg
YXNEb3VibGUoKSwgcmVpbnRlcnByZXREb3VibGVUb0ludHB0cihhc0RvdWJsZSgpKSk7CisgICAg
ICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbHgsICVsZiIsIHJlaW50
ZXJwcmV0RG91YmxlVG9JbnRwdHIoYXNEb3VibGUoKSksIGFzRG91YmxlKCkpOwogI2Vsc2UKICAg
ICAgICAgdW5pb24gewogICAgICAgICAgICAgZG91YmxlIGFzRG91YmxlOwogICAgICAgICAgICAg
dWludDMyX3QgYXNUd29JbnQzMnNbMl07CiAgICAgICAgIH0gdTsKICAgICAgICAgdS5hc0RvdWJs
ZSA9IGFzRG91YmxlKCk7Ci0gICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91
YmxlOiAlbGYsICUwOHg6JTA4eCIsIGFzRG91YmxlKCksIHUuYXNUd29JbnQzMnNbMV0sIHUuYXNU
d29JbnQzMnNbMF0pOworICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJs
ZTogJTA4eDolMDh4LCAlbGYiLCB1LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdLCBh
c0RvdWJsZSgpKTsKICNlbmRpZgogICAgIH0gZWxzZSBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHNu
cHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiQ2VsbDogJXAiLCBhc0NlbGwoKSk7CkBAIC0xNTIs
NyArMTUxLDYgQEAgY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogCiAgICAgcmV0dXJuIGRl
c2NyaXB0aW9uOwogfQotI2VuZGlmCiAKIC8vIFRoaXMgaW4gdGhlIFRvSW50MzIgb3BlcmF0aW9u
IGlzIGRlZmluZWQgaW4gc2VjdGlvbiA5LjUgb2YgdGhlIEVDTUEtMjYyIHNwZWMuCiAvLyBOb3Rl
IHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgaWRlbnRpY2FsIHRvIFRvVUludDMyIG90aGVyIHRoYW4g
dG8gaW50ZXJwcmV0YXRpb24KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
bHVlLmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMzLDkgKzIzMyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBKU0NlbGwqIGFzQ2VsbCgpIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBib29sIGlzVmFsaWRDYWxsZWUoKTsKIAotI2lmbmRlZiBOREVCVUcKICAgICAgICAg
Y2hhciogZGVzY3JpcHRpb24oKTsKLSNlbmRpZgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdGVt
cGxhdGUgPGNsYXNzIFQ+IEpTVmFsdWUoV3JpdGVCYXJyaWVyQmFzZTxUPik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCShyZXZp
c2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxl
T2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICszOCwxMiBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBSZWdp
c3RlcjsKIAogICAgIGNsYXNzIEpTVmFyaWFibGVPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNO
b25GaW5hbE9iamVjdCBCYXNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5jcHAJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxMCBAQCB1bnNp
Z25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxpCiAKIHVuc2lnbmVkIG1heGltdW1J
bmxpbmluZ0RlcHRoOwogCitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVy
V2FybVVwOworaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNv
b247CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisKIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGludDMyX3QgZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7CiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwpAQCAtMTM3LDYg
KzE0MSwxMCBAQCB2b2lkIGluaXRpYWxpemVPcHRpb25zKCkKICAgICAKICAgICBTRVQobWF4aW11
bUlubGluaW5nRGVwdGgsIDUpOwogCisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJ
VEFmdGVyV2FybVVwLCAgICAgLTEwMCk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckRvbnRKSVRBbnl0aW1lU29vbiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkp
OworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uLCAgICAgICAgICAgIC0x
MDApOworCiAgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJt
VXAsICAgICAtMTAwMCk7CiAgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXpl
QWZ0ZXJMb25nV2FybVVwLCAtNTAwMCk7CiAgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
aW4oKSk7CkBAIC0xODUsNiArMTkzLDggQEAgdm9pZCBpbml0aWFsaXplT3B0aW9ucygpCiAgICAg
aWYgKGNwdXNUb1VzZSA8IDEpCiAgICAgICAgIGNwdXNUb1VzZSA9IDE7CiAgICAgCisgICAgY3B1
c1RvVXNlID0gMTsKKyAgICAKICAgICBTRVQobnVtYmVyT2ZHQ01hcmtlcnMsIGNwdXNUb1VzZSk7
CiAKICAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGlt
ZVNvb24gPD0gZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24g
MTA1Mzc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMCBAQCBleHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0
aW9uRm9yQ29uc3RyCiAKIGV4dGVybiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsgLy8g
RGVwdGggb2YgaW5saW5lIHN0YWNrLCBzbyAxID0gbm8gaW5saW5pbmcsIDIgPSBvbmUgbGV2ZWws
IGV0Yy4KIAorZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJX
YXJtVXA7CitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55
dGltZVNvb247CitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29u
OworCiBleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVy
V2FybVVwOwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVB
ZnRlckxvbmdXYXJtVXA7CiBleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JE
b250T3B0aW1pemVBbnl0aW1lU29vbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1Njb3BlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY29wZUNoYWluLmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNH
bG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5JdGVyYXRvcjsKICAgICBjbGFzcyBTbG90
VmlzaXRvcjsKICAgICAKQEAgLTkxLDYgKzkyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2
YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAg
ICAKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJp
ZGVzVmlzaXRDaGlsZHJlbjsKICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTA1Mzc0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJy
YXlEYXRhOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOwpAQCAtMTk2LDYgKzE5Nyw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0lu
Zm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVj
dHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBj
b25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyopOwogICAgICAgICBTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBjb25zdCBTdHJ1
Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNo
YWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlQ2hhaW4uaAkocmV2aXNpb24gMTA1Mzc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbiA6IHB1YmxpYyBK
U0NlbGwgewpAQCAtNzQsNiArNzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZUNoYWluKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVy
ZSopOwogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgICBPd25B
cnJheVB0cjxXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiA+IG1fdmVjdG9yOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTA1Mzc0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MTgsNiArOTE4
LDE4IEBACiAjZGVmaW5lIEVOQUJMRV9KSVQgMQogI2VuZGlmCiAKKy8qIE9uIHNvbWUgb2YgdGhl
IHBsYXRmb3JtcyB3aGVyZSB3ZSBoYXZlIGEgSklULCB3ZSB3YW50IHRvIGFsc28gaGF2ZSB0aGUg
CisgICBsb3ctbGV2ZWwgaW50ZXJwcmV0ZXIuICovCisjaWYgIWRlZmluZWQoRU5BQkxFX0xMSU5U
KSAmJiBFTkFCTEUoSklUKSAmJiBQTEFURk9STShNQUMpICYmIFVTRShKU1ZBTFVFMzJfNjQpCisj
ZGVmaW5lIEVOQUJMRV9MTElOVCAxCisjZW5kaWYKKworLyogSWYgd2UgaGF2ZSBMTEludCBlbmFi
bGVkIGFuZCB0aGUgSklUIGVuYWJsZWQsIHdlIGFsc28gZW5hYmxlIE9TUmluZyBmcm9tCisgICBM
TEludCB0byB0aGUgSklULiAqLworI2lmICFkZWZpbmVkKEVOQUJMRV9PU1JfVE9fSklUKSAmJiBF
TkFCTEUoSklUKSAmJiBFTkFCTEUoTExJTlQpCisjZGVmaW5lIEVOQUJMRV9MTElOVF9PU1JfVE9f
SklUIDEKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0RGR19KSVQpICYmIEVOQUJMRShK
SVQpCiAvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gWDg2IGFuZCBYODZfNjQuICBPbmx5IHRlc3Rl
ZCBvbiBNYWMgYW5kIEdOVS9MaW51eC4gKi8KICNpZiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkp
ICYmIChQTEFURk9STShNQUMpIHx8IE9TKExJTlVYKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAkocmV2aXNpb24gMTA1Mzc0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAkod29ya2luZyBj
b3B5KQpAQCAtODYsNiArODYsOCBAQCBwdWJsaWM6CiAKICAgICBpdGVyYXRvciBiZWdpbigpOwog
ICAgIGl0ZXJhdG9yIGVuZCgpOworICAgIAorICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIGJl
Z2luKCkgPT0gZW5kKCk7IH0KIAogcHJpdmF0ZToKICAgICBSYXdOb2RlIG1faGVhZFNlbnRpbmVs
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCShy
ZXZpc2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5n
SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHR5cGVkZWYgY29uc3Qgc3Ry
dWN0IF9fQ0ZTdHJpbmcgKiBDRlN0cmkKIC8vIExhbmRpbmcgdGhlIGZpbGUgbW92ZXMgaW4gb25l
IHBhdGNoLCB3aWxsIGZvbGxvdyBvbiB3aXRoIHBhdGNoZXMgdG8gY2hhbmdlIHRoZSBuYW1lc3Bh
Y2VzLgogbmFtZXNwYWNlIEpTQyB7CiBzdHJ1Y3QgSWRlbnRpZmllckNTdHJpbmdUcmFuc2xhdG9y
OworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0
cnVjdCBJZGVudGlmaWVyQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiBzdHJ1Y3QgSWRlbnRpZmllckxD
aGFyRnJvbVVDaGFyVHJhbnNsYXRvcjsKIH0KQEAgLTcwLDcgKzcxLDggQEAgY2xhc3MgU3RyaW5n
SW1wbCB7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6Okhhc2hBbmRVVEY4Q2hhcmFjdGVyc1RyYW5z
bGF0b3I7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6OlVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKICAg
ICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKLQorICAgIGZyaWVuZCBjbGFzcyBKU0M6
OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKIHByaXZhdGU6CiAgICAgZW51bSBCdWZmZXJP
d25lcnNoaXAgewogICAgICAgICBCdWZmZXJJbnRlcm5hbCwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123089</attachid>
            <date>2012-01-19 01:16:31 -0800</date>
            <delta_ts>2012-01-22 21:46:33 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_34.diff</filename>
            <type>text/plain</type>
            <size>416629</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1Mzc3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDI1MSBA
QAotMjAxMi0wMS0xOCAgUm9sYW5kIFRha2FjcyAgPHRha2Fjcy5yb2xhbmRAc3R1ZC51LXN6ZWdl
ZC5odT4KKzIwMTItMDEtMTggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAg
ICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAg
ICAgCisgICAgICAgIFdPUksgSU4gUFJPR1JFU1MuICBJdCBhcHBlYXJzIHRvIHdvcmsgYnV0IG5l
ZWRzIG1vcmUgdGVzdGluZy4KKyAgICAgICAgCisgICAgICAgIEltcGxlbWVudGVkIGFuIGludGVy
cHJldGVyIHRoYXQgdXNlcyB0aGUgSklUJ3MgY2FsbGluZyBjb252ZW50aW9uLiBUaGlzCisgICAg
ICAgIGludGVycHJldGVyIGlzIGNhbGxlZCBMTEludCwgb3IgdGhlIExvdyBMZXZlbCBJbnRlcnBy
ZXRlci4gSlNDIHdpbGwgbm93CisgICAgICAgIHdpbGwgc3RhcnQgYnkgZXhlY3V0aW5nIGNvZGUg
aW4gTExJbnQgYW5kIHdpbGwgb25seSB0aWVyIHVwIHRvIHRoZSBvbGQKKyAgICAgICAgSklUIGFm
dGVyIHRoZSBjb2RlIGlzIHByb3ZlbiBob3QuCisgICAgICAgIAorICAgICAgICBMTEludCBpcyB3
cml0dGVuIGluIGEgbW9kaWZpZWQgZm9ybSBvZiBvdXIgbWFjcm8gYXNzZW1ibHkuIFRoaXMgbmV3
IG1hY3JvCisgICAgICAgIGFzc2VtYmx5IGlzIGNvbXBpbGVkIGJ5IGFuIG9mZmxpbmUgYXNzZW1i
bGVyIChzZWUgb2ZmbGluZWFzbSksIHdoaWNoCisgICAgICAgIGltcGxlbWVudHMgbWFueSBtb2Rl
cm4gY29udmVuaWVuY2VzIHN1Y2ggYXMgYSBUdXJpbmctY29tcGxldGUgQ1BTLWJhc2VkCisgICAg
ICAgIG1hY3JvIGxhbmd1YWdlIGFuZCBkaXJlY3QgYWNjZXNzIHRvIHJlbGV2YW50IEMrKyB0eXBl
IGluZm9ybWF0aW9uCisgICAgICAgIChiYXNpY2FsbHkgb2Zmc2V0cyBvZiBmaWVsZHMgYW5kIHNp
emVzIG9mIHN0cnVjdHMvY2xhc3NlcykuCisgICAgICAgIAorICAgICAgICBDb2RlIGV4ZWN1dGlu
ZyBpbiBMTEludCBhcHBlYXJzIHRvIHRoZSByZXN0IG9mIHRoZSBKU0Mgd29ybGQgImFzIGlmIiBp
dAorICAgICAgICB3ZXJlIGV4ZWN1dGluZyBpbiB0aGUgb2xkIEpJVC4gSGVuY2UsIHRoaW5ncyBs
aWtlIGV4Y2VwdGlvbiBoYW5kbGluZyBhbmQKKyAgICAgICAgY3Jvc3MtZXhlY3V0aW9uLWVuZ2lu
ZSBjYWxscyBqdXN0IHdvcmsgYW5kIHJlcXVpcmUgcHJldHR5IG11Y2ggbm8KKyAgICAgICAgYWRk
aXRpb25hbCBvdmVyaGVhZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaW50ZXJwcmV0ZXIgaXMg
Mi0yLjV4IGZhc3RlciB0aGFuIG91ciBvbGQgaW50ZXJwcmV0ZXIgb24gU3VuU3BpZGVyLAorICAg
ICAgICBWOCwgYW5kIEtyYWtlbi4gVGhpcyBpcyB0aGUgImZpcnN0IGF0dGVtcHQiIHBlcmZvcm1h
bmNlIC0gbm8gd29yayBoYXMgYmVlbgorICAgICAgICBkb25lIHRvIGRpYWdub3NlIGFueSBwb3Rl
bnRpYWwgYm90dGxlbmVja3MuIE1hbnkgb2J2aW91cyBvbmVzIGV4aXN0LCBsaWtlCisgICAgICAg
IHJlZHVjaW5nIHRoZSBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zIGltcGxlbWVudGVkIGFzIHNsb3cg
Y2FsbHMgdG8gQysrIGNvZGUKKyAgICAgICAgYW5kIG1ha2luZyBwcm9wZXJ0eSBhY2Nlc3MgY2Fj
aGluZyBtb3JlIGFnZ3Jlc3NpdmUuCisgICAgICAgIAorICAgICAgICBBcyBhbiBhZGRpdGlvbmFs
IGNoYW5nZSwgdGhpcyBwYXRjaCBtYWtlcyBieXRlY29kZSBkdW1waW5nIGFuZCBKU1ZhbHVlCisg
ICAgICAgIGR1bXBpbmcgd29yayBpbiByZWxlYXNlIGJ1aWxkcywgc2luY2UgZGVidWdnaW5nIHNv
bWUgb2YgdGhlIG5hc3RpZXIKKyAgICAgICAgYXNwZWN0cyBvZiB0aGlzIHBhdGNoIHdvdWxkIGhh
dmUgYmVlbiBpbXBvc3NpYmxlIHdpdGhvdXQgdGhhdC4gQW5kIEkKKyAgICAgICAgZG9uJ3QgYmVs
aWV2ZSB0aGF0IHdlIGNhcmUgYWJvdXQgdGhlIG1pbmlzY3VsZSBjb2RlIGJsb2F0IHRoYXQgdGhp
cworICAgICAgICBpbnRyb2R1Y2VzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNv
ZGVDb252ZW50aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3Bw
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6fkNvZGVCbG9jayk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkpOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcmVuY2VzKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtDYWxscyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6dW5saW5rSW5jb21pbmdDYWxscyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Ynl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpqZXR0aXNvbik6Cisg
ICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUNvZGVCbG9j
azo6aml0Q29tcGlsZUltcGwpOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpqaXRDb21w
aWxlSW1wbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ29kZUJsb2NrOjpqaXRDb21waWxlSW1w
bCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaW5rSW5j
b21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5p
dHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmppdENvbXBpbGUpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6Omhhc09wdGltaXplZFJlcGxhY2VtZW50KToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjphZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjphZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmFkZExMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjph
ZGRHbG9iYWxSZXNvbHZlSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkRnJlcXVl
bnRFeGl0U2l0ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZG9udEpJVEFueXRpbWVTb29u
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRBZnRlcldhcm1VcCk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6aml0U29vbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGxpbnRF
eGVjdXRlQ291bnRlcik6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAg
ICAgKEpTQzo6SW5zdHJ1Y3Rpb246Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9M
TEludENhbGxMaW5rSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0lu
Zm86OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86
On5MTEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjpp
c0xpbmtlZCk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAg
ICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1w
c0dlbmVyYXRlZENvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNH
ZW5lcmF0ZWRDb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoVGhpcyk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29u
c3RydWN0KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaCk6Cisg
ICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGll
cy5oOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBoZWFwL0FsbG9jYXRpb25TcGFjZS5oOgor
ICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgor
ICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAg
ICAgICAgKEpTQzo6dmlzaXRDaGlsZHJlbik6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5o
OgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAoSlNDOjpFeGVj
U3RhdGU6OmN1cnJlbnRWUEMpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcik6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjppbml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
OmlzT3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZSk6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIpOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6OkludGVycHJldGVy
OjpnZXRPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZW5hYmxlZCk6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvUmVnaXN0ZXJGaWxlLmg6CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3Rh
dGUpOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmg6IEFkZGVkLgorICAgICAg
ICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBh
c3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVENvZGUuaDoK
KyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpTQzo6
SklUQ29kZTo6aXNCYXNlbGluZUNvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjpKSVRDb2Rl
KToKKyAgICAgICAgKiBqaXQvSklURHJpdmVyLmg6CisgICAgICAgIChKU0M6OmppdENvbXBpbGVJ
ZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3By
aWF0ZSk6CisgICAgICAgICogaml0L0pJVEV4Y2VwdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpq
aXRUaHJvdyk6CisgICAgICAgICogaml0L0pJVFN0dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6REVG
SU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAg
ICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1vbi5oOiBBZGRl
ZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6
TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgor
ICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6
OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRh
OjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAg
IChKU0M6OkxMSW50OjpnZXRFdmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50Ojpn
ZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEVudHJ5cG9pbnQpOgorICAgICAgICAq
IGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6
aW50ZXJwcmV0ZXJUaHJvdyk6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9y
VGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgor
ICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50
RXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX29wZXJhbmQpOgorICAgICAg
ICAoSlNDOjpMTEludDo6bGxpbnRfdHJhY2VfdmFsdWUpOgorICAgICAgICAoSlNDOjpMTEludDo6
TExJTlRfSEVMUEVSX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6dHJhY2VGdW5jdGlvblBy
b2xvZ3VlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNob3VsZEpJVCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpnZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpoYW5kbGVIb3N0Q2FsbCk6
CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6
Z2VuZXJpY0NhbGwpOgorICAgICAgICAqIGxsaW50L0xMSW50SGVscGVycy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBsbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaDogQWRkZWQuCisgICAgICAgICog
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxM
SW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAgICAobWFpbik6CisgICAgICAgICog
bGxpbnQvTExJbnRUaHVua3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2Fs
bEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JD
b25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0
aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50
OjpmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkxMSW50OjpldmFsRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxM
SW50Ojpwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgICogbGxpbnQvTExJbnRU
aHVua3MuaDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOiBBZGRlZC4K
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmg6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc206IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXJtdjcucmI6IEFkZGVk
LgorICAgICAgICAqIG9mZmxpbmVhc20vYXNtLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtL2FzdC5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9iYWNrZW5kcy5yYjogQWRk
ZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYjogQWRkZWQuCisgICAg
ICAgICogb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYjogQWRkZWQuCisg
ICAgICAgICogb2ZmbGluZWFzbS9vZmZzZXRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtL3BhcnNlci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9yZWdpc3RlcnMucmI6
IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2V0dGluZ3MucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L3g4Ni5yYjogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5k
Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAg
IChKU0M6OkNvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zvcik6CisgICAgICAgICogcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6amV0dGlzb25Db2RlQmxvY2spOgorICAg
ICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6CisgICAgICAgIChKU0M6OnNh
bXBsaW5nRGVzY3JpcHRpb24pOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y29tcGls
ZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBpbGUp
OgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6Cisg
ICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwpOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1Y3QpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJ
bnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvcik6CisgICAgICAgICogcnVudGltZS9F
eGVjdXRpb25IYXJuZXNzLmg6IEFkZGVkLgorICAgICAgICAoSlNDOjpwcmVwYXJlRm9yRXhlY3V0
aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246
OnRlYXJPZmYpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpT
R2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTdHJpbmcuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkZXNj
cmlwdGlvbik6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmg6CisgICAgICAgICogcnVudGlt
ZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRp
bWUvT3B0aW9ucy5oOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5o
OgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi9TZW50aW5lbExpbmtl
ZExpc3QuaDoKKyAgICAgICAgKFdURjo6U2VudGluZWxMaW5rZWRMaXN0Ojppc0VtcHR5KToKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisKKzEyLTAxLTE4ICBSb2xhbmQgVGFrYWNz
ICA8dGFrYWNzLnJvbGFuZEBzdHVkLnUtc3plZ2VkLmh1PgogCiAgICAgICAgIENyb3NzLXBsYXRm
b3JtIHByb2Nlc3NvciBjb3JlIGNvdW50ZXIgZml4CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjU0MApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBA
QAotIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MCw2ICs2MCw3IEBAIGFsbCA6IFwKICAgICBTdHJp
bmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU3RyaW5nUHJvdG90eXBlLmx1dC5oIFwKICAgICBk
b2NzL2J5dGVjb2RlLmh0bWwgXAorICAgIExMSW50QXNzZW1ibHkuaC5QSE9OWSBcCiAjCiAKICMg
bG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwpAQCAtMTA0LDMgKzEwNSwxMSBAQCBIZWFkZXJEZXRl
Y3Rpb24uaCA6CiAJZWNobyA+ICRACiAKIGVuZGlmCisKKyMgQXNzZW1ibHkgZm9yIHRoZSBMb3dM
ZXZlbEludGVycHJldGVyCisKKyMgVGhpcyBidWlsZHMgZXZlcnkgdGltZSBiZWNhdXNlIHRoZXJl
IGlzIG5vIGVhc3kgd2F5IHRvIGRlc2NyaWJlCisjIHRoZSBkZXBlbmRlbmNpZXMgdXNpbmcgbWFr
ZS4gSW5zdGVhZCwgdGhlIGFzc2VtYmxlciB3aWxsIGRlY2lkZSBvbgorIyBpdHMgb3duIHdoZXRo
ZXIgb3Igbm90IGl0IGRpZCBhbnl0aGluZyB0aGF0IHdvdWxkIGxlYWQgdG8gYSBjaGFuZ2UuCitM
TEludEFzc2VtYmx5LmguUEhPTlk6CisJcnVieSAkKEphdmFTY3JpcHRDb3JlKS9vZmZsaW5lYXNt
L2FzbS5yYiAkKEphdmFTY3JpcHRDb3JlKS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yID4gTExJbnRBc3Nl
bWJseS5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA1Mzc0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxNSBAQAogCW9iamVjdHMgPSB7
CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCisJCTBGNDY4MEE5MTRC
QTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovID0geworCQkJaXNhID0gUEJYQWdncmVn
YXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MEFDMTRCQTdGRDkw
MEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdl
dCAiTExJbnQgT2Zmc2V0cyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODBBQTE0
QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAorCQkJKTsKKwkJ
CW5hbWUgPSAiTExJbnQgT2Zmc2V0cyI7CisJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJj
ZXMiOworCQl9OwogCQk2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3VyY2Vz
ICovID0gewogCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0
aW9uTGlzdCA9IDY1RkIzRjc3MDlEMTFFQkQwMEY0OURFQiAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVyaXZlZCBTb3VyY2VzIiAqLzsKQEAgLTE0
LDYgKzIzLDkgQEAKIAkJCQk2NUZCM0Y2NTA5RDExRTkxMDBGNDlERUIgLyogR2VuZXJhdGUgRGVy
aXZlZCBTb3VyY2VzICovLAogCQkJCTVEMzVERUUxMEM3QzE0MEIwMDg2NDhCMiAvKiBHZW5lcmF0
ZSBEVHJhY2UgaGVhZGVyICovLAogCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2
ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CiAJ
CQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNv
dXJjZXMiOwogCQl9OwpAQCAtNDgsNiArNjAsMTAgQEAKIAkJMEJBQzk0QTAxMzM4NzI4NDAwQ0Yx
MzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJl
YWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEJDRDgzNTcxNDg1ODQ1MjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNo
YW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJD
RDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYz
OEY4NCAvKiBTaXplTGltaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAq
LzsgfTsKKwkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTUx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovOyB9OworCQkwRjBCODM5
QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8q
IExMSW50RW50cnlwb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTcx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUQxNEJD
RjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVu
a3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBD
b2RlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTgxNEJDRjU1RTAwODg1
QjRGIC8qIEhhbmRsZXJJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5n
ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU4LDkgKzc0LDEzIEBA
CiAJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0IzMTRCQ0Y4
NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyog
R2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4
M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjgx
NEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwRkM0NUEx
NEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyog
TExJbnRDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1RjE1
RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNkQ3MjYxNDJDMzlDMDAwQ0Y3ODRB
IC8qIEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLzsgfTsK
IAkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRC
IC8qIEpJVERyaXZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3QTE0
QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAv
KiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3RTE0
QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0
QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVy
ZW5jZUhhcnZlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMkM1NTZGMTQ3MzhGMzEwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RTE0NzM4
RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTcwMTQ3MzhGMzUwMDEyMUU0RiAvKiBERkdD
b2RlQmxvY2tzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLzsgfTsK
QEAgLTcxLDYgKzkxLDE5IEBACiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBMaXN0YWJs
ZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MjE0QkE1NzJE
MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlv
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA3RjE0QkE1NzI3MDBCRkUy
NzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3
MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2
ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludEhlbHBlcnMuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25v
LXVudXNlZC1wYXJhbWV0ZXIiOyB9OyB9OworCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyog
TExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTcxNEJBN0ZB
MTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZF
MjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRp
b25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBD
NTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyog
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzcxNEJC
QjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovOyB9OworCQkwRjQ2ODBD
RDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcy
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4
MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovOyB9OworCQkwRjQ2ODBEMzE0
QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0
NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDAxNEJCQzVGODAw
QkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovOyB9OworCQkwRjQ2ODBENTE0QkJE
MjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhv
c3RDYWxsUmV0dXJuVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZp
bmFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYyMDE3NDE0
M0ZDRDMzMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYyMDE3MjE0M0ZDRDJGMDA2OEI3N0Mg
LyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAxNzUxNDNGQ0QzNzAwNjhCNzdDIC8qIERGR09wZXJh
bmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYy
MDE3MTE0M0ZDRDJGMDA2OEI3N0MgLyogREZHT3BlcmFuZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzc1LDcgKzQwOCw3IEBACiAJCTg2Qjk5
QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUUxMTE3RTU3ODEwMERGNUE5MCAvKiBT
dHJpbmdCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRTEzOEUzODFC
MDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87IH07CiAJCTg2QkIwOUMxMTM4RTM4MUIwMDU2
NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oICovOyB9
OwotCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQw
MEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyB9OworCQk4NkMzNkVFQTBFRTEyODlEMDBC
M0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2
QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERDExQTIxM0VFMDAw
N0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9OwogCQk4NkM1NjhFMTExQTIxM0VF
MDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9B
c3NlbWJsZXJNSVBTLmggKi87IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBT
QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovOyB9OwpAQCAt
NzM4LDYgKzc3MSwyMCBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTBGNDY4MEIxMTRCQTgxMTUw
MEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250
YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAy
QUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3Rl
R2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzI7CisJCQlyZW1vdGVJbmZv
ID0gIkxMSW50IE9mZnNldHMiOworCQl9OworCQkwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVBy
b3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFBy
b2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3Ry
aW5nID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9IEpTQ0xMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJMTQxMjE0QkUwQTQ5MTkwRTAwNDgwMjU1IC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94
eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9q
ZWN0IG9iamVjdCAqLzsKQEAgLTc4Myw2ICs4MzAsMTUgQEAKIC8qIEVuZCBQQlhDb250YWluZXJJ
dGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNl
Y3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLyA9IHsK
KwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEvOworCQkJZHN0U3Vi
Zm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKIAkJNURCQjE1MTExMzFEMEIxMzAwNTZBRDM2
IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWls
ZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7CkBAIC04MjMsNiArODc5LDEwIEBACiAJ
CTBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFJlc3RyaWN0aW9uVmVyaWZp
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJDRDgzNTQxNDg1ODQxMjAwRUEy
MDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUZW1wb3JhcnlDaGFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhB
MjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMuY3Bw
OyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMuaDsgcGF0
aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50VGh1bmtzLmNwcDsgcGF0aCA9IGxsaW50
L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTgx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IExMSW50VGh1bmtzLmg7IHBhdGggPSBsbGludC9MTEludFRodW5rcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29k
ZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVR5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhh
bmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRsZXJJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0
RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTgzMyw5ICs4OTMsMTMgQEAKIAkJMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENh
bGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRob2RDYWxs
TGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjYxNEJDRjhE
RjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEdsb2JhbFJlc29sdmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29k
ZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsUmV0dXJuT2Zm
c2V0VG9CeXRlY29kZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBG
QzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRo
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25TbG93UGF0aHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8q
IEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaXRW
ZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIxQzI2NjE0QkU1RjVF
MDBBREM2NEIgLyogSklURHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpJVERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3OTE0QkU3
MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJu
ZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGlvbkhhcm5lc3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRC
IC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQnl0ZWNvZGVDb252ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBE
RkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERG
R0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RTE0
NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBA
IC04NDYsNiArOTEwLDIwIEBACiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJs
ZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5k
bGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDdGMTRCQTU3MjcwMEJG
RTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKSVRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRy
YWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJj
b21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpT
Q0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuY3BwOyBw
YXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuaDsgcGF0aCA9IGxs
aW50L0xMSW50RXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50SGVscGVycy5jcHA7IHBhdGggPSBsbGludC9MTElu
dEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMDE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IExMSW50SGVscGVycy5oOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM1MTRCQkIx
NjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBMTEludENvbW1vbi5oOyBwYXRoID0gbGxpbnQvTExJbnRDb21tb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2Zm
bGluZUFzbUNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludE9m
ZmxpbmVBc21Db25maWcuaDsgcGF0aCA9IGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyog
TG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBMb3dMZXZlbEludGVycHJldGVyLmNwcDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDODE0QkJCMTY5
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmg7IHBhdGggPSBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENFMTRCQkIz
RDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTExJbnREYXRhLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTElu
dERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnREYXRhLmg7IHBh
dGggPSBsbGludC9MTEludERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0
NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBI
b3N0Q2FsbFJldHVyblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhv
c3RDYWxsUmV0dXJuVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4
Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5dGVDb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNvZGVDYWNoZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVD
b2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0UxNDZDNzYy
RjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVW5jb25kaXRpb25hbEZpbmFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjYyMDE2RDE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBYnN0cmFjdFN0
YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE1NTEsNiArMTYyOSwxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVu
Y2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCisJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJ
aXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFt
ZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTYwOSw2ICsxNjk0LDcgQEAKIAkJCQkxNDEy
MTEyMDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4Rjkw
MDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyog
dGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjM5LDYgKzE3MjUsNyBAQAogCQkJCUY1QzI5MEU2MDI4
NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4
MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZG
NjBGNyAvKiBjb25maWcuaCAqLywKKwkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxp
bnQgKi8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4
Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQz
QUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKQEAgLTE2NzcsNiArMTc2NCwyOCBAQAogCQkJdGFi
V2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkwRjQ2ODA5QzE0QkE3RjREMDBC
RkUyNzIgLyogbGxpbnQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAq
LywKKwkJCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICov
LAorCQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8sCisJ
CQkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8sCisJCQkJMEY0
NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0Yx
NEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovLAorCQkJCTBGNDY4MEM1MTRCQkIxNjkw
MEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovLAorCQkJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3
MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLywKKwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8sCisJCQkJMEY0NjgwQzgxNEJCQjE2
OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8sCisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50SGVscGVycy5oICovLAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGlu
dDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3MjYw
MDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0xNzA5LDYgKzE4MTgsOCBAQAogCQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkgLyog
aml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2
ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJ
MEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJ
CQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJ
MEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4
MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTIxMzIs
NiArMjI0Myw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3OTE0QkU3
MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovLAorCQkJCTBGMjFDMjdB
MTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8sCiAJCQkJMEYxNUYxNUQx
NEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovLAogCQkJCUJDRjYwNTExMEUy
MDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBC
OUE2NEQgLyogQXJnTGlzdC5oICovLApAQCAtMjQ5Miw2ICsyNjA1LDggQEAKIAkJOTY5QTA3OEYw
RUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVD
b252ZW50aW9ucy5oICovLAorCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENh
bGxMaW5rSW5mby5oICovLAogCQkJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0
dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovLAogCQkJCTBGMEI4M0I2MTRCQ0Y4REYwMDg4
NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovLAogCQkJCTBGMEI4M0IyMTRCQ0Y4NUUwMDg4
NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3BwICovLApAQCAtMzAzMCw3ICszMTQ1LDE2IEBA
CiAJCQkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25T
bG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAv
KiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEE1MTRCQTdGOEQw
MEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRC
QTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2
ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVy
cHJldGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyog
TExJbnREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIg
LyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzOUIxNEJD
RjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
MEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZv
LmggaW4gSGVhZGVycyAqLywKQEAgLTMwMzksNyArMzE2MywxMSBAQAogCQkJCTBGMEI4M0I1MTRC
Q0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBC
ODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjFDMjY4
MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFD
MjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2Rl
Q29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRBMTRDM0NEMjkwMDdDM0RC
MSAvKiBERkdDQ2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NE
MkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0Iy
OTRDMTRDM0NENDMwMDdDM0RCMSAvKiBERkdCeXRlQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywK
QEAgLTMwNTIsNiArMzE4MCwyNCBAQAogLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOEUx
NEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHsKKwkJCWlz
YSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODA5
QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRp
dmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIgKi87CisJCQlidWlsZFBoYXNlcyA9
ICgKKwkJCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLywKKwkJCQkwRjQ2
ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkwRjQ2ODA4RDE0QkE3
RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJ
CQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBKU0NMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0TmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJ
bnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1
Y3QtdHlwZS50b29sIjsKKwkJfTsKIAkJMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlk
b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRp
b25MaXN0ID0gMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24g
bGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLzsKQEAgLTMxNzgsMTEgKzMzMjQs
MjkgQEAKIAkJCQkxNEJENTlCRTBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk5
MzJGNUJEQTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAogCQkJCTY1MTEyMkY3MTQwNDZBNEMw
MDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAv
KiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCisJCQkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZF
MjcyIC8qIExMSW50IE9mZnNldHMgKi8sCiAJCQkpOwogCQl9OwogLyogRW5kIFBCWFByb2plY3Qg
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAq
LworCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2Vz
ICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMg
PSAoCisJCQkJIiQoU1JDUk9PVCkvbGxpbnQvTG93TGV2ZWxBc3NlbWJsZXIuYXNtIiwKKwkJCSk7
CisJCQluYW1lID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CisJCQlvdXRwdXRQYXRocyA9
ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRP
ZmZzZXRzLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1w
IFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9cIlxuXG4vdXNyL2Jpbi9lbnYg
cnVieSBcIiR7U1JDUk9PVH0vb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJi
XCIgPCBcIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc21cIiA+IFwiJHtC
VUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmhcIlxu
IjsKKwkJfTsKIAkJMzcxM0YwMTQxNDI5MDUyNDAwMzYzODdGIC8qIENoZWNrIEZvciBJbmFwcHJv
cHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxT
Y3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTMz
MjMsNiArMzQ4NywxNCBAQAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0Njgw
OEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2Vz
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRDBBNDg3OTNDMDA0ODAyNTUgLyogU291cmNl
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKQEAgLTM1ODAsNyArMzc1MiwxNCBAQAogCQkJCTg2NzA0Qjg2MTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg5
MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNl
cHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MENDMTRCQkIxN0Ew
MEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
NDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlw
b2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8q
IExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4
NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjQxNEJD
Rjg2MDAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGNjlFODZDMzE0QzZFNTUxMDAyQzJDNjIgLyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTM1OTgsNiArMzc3NywxNiBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJ
CTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewor
CQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdG
RDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBC
MTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkw
RjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJ
CWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVF
MDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkg
PSAwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwor
CQl9OwogCQkxNDEyMTRCRjBBNDkxOTBFMDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEyMTEx
RjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLzsKQEAgLTM2MzEsNiArMzgyMCwxNDggQEAK
IC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWls
ZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyog
RGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMg
PSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87
CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19O
T19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlH
Q0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJ
T05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJ
CQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNv
bS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJf
QklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQ
RVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0ND
X1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2Fy
Y2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7
CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9B
UkNIID0gWUVTOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsK
KwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3
MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJ
CUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJ
UCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3lt
IjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVf
T0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBp
bGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lP
TiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURf
VkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJ
CQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNl
dHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5U
X1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJ
CQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGlj
dSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRI
UykiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVF
MDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9
IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9Q
SEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYt
d2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdD
Q19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFw
cGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRf
Q09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9
IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FS
Tl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0q
XSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9M
TEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJ
CQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIk
KFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9T
RUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAk
KEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9
OworCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdB
WVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJE
XzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JN
QVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RB
TkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJ
CQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJ
R0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9V
VF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZ
UEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFE
RVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIk
KEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJD
SF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsK
KwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNv
c3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJ
bmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBE
ZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJ
fTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8q
IFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsK
KwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZF
MjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2Vz
IGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIwMTRC
QTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJp
dmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJ
CTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1NSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKQEAgLTM4NzIsNiArNDIwMywy
OCBAQAogLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
WENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3
MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJ
bnRPZmZzZXRzRXh0cmFjdG9yIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7
CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3
MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAq
LywKKwkJCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBG
NDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1
bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFt
ZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0
cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8sCisJ
CQkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwQUYx
NEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODBCMDE0QkE3RkQ5MDBC
RkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklz
VmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwor
CQl9OwogCQkxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovID0gewogCQkJaXNhID0gWENDb25m
aWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA1Mzc0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNkZWZpbmUgRFVNUF9MSU5LX1NUQVRJU1RJQ1Mg
MAogI2RlZmluZSBEVU1QX0NPREUgMAogCi0jaW5jbHVkZSA8TWFjcm9Bc3NlbWJsZXIuaD4KKyNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUNvbnZlbnRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBCeXRlY29kZUNvbnZlbnRpb25zX2gKKyNkZWZpbmUgQnl0ZWNvZGVD
b252ZW50aW9uc19oCisKKy8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVy
YXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoK
Ky8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhl
IENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVn
aXN0ZXJGaWxlLmguCisvLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5k
aWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9y
YXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCisvLyAgICAgIDB4NDAwMDAwMDAt
MHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRy
aWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCitzdGF0aWMgY29uc3Qg
aW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKKworI2VuZGlmIC8v
IEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTA1Mzc0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYg
KzQyLDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdGF0aWNTY29w
ZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlVTdHJpbmdD
b25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC01OSw4ICs2MCw2IEBAIG5hbWVz
cGFjZSBKU0MgewogdXNpbmcgbmFtZXNwYWNlIERGRzsKICNlbmRpZgogCi0jaWYgIWRlZmluZWQo
TkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotCiBzdGF0aWMgVVN0cmluZyBlc2Nh
cGVRdW90ZXMoY29uc3QgVVN0cmluZyYgc3RyKQogewogICAgIFVTdHJpbmcgcmVzdWx0ID0gc3Ry
OwpAQCAtMzU4LDEwICszNTcsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBl
eGVjKSBjbwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
OyBpICs9IG9wY29kZUxlbmd0aHNbZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5z
dHJ1Y3Rpb25zKClbaV0udS5vcGNvZGUpXSkKICAgICAgICAgKytpbnN0cnVjdGlvbkNvdW50Owog
Ci0gICAgcHJpbnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFy
YW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocylcblxuIiwKKyAgICBwcmludGYoIiVsdSBt
X2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxl
ZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocylcblxuIiwKICAgICAgICAgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25Db3VudCksCiAgICAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNpemUoKSAqIHNpemVvZihJbnN0cnVjdGlvbikp
LAotICAgICAgICB0aGlzLCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsK
KyAgICAgICAgdGhpcywgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycywgbV9u
dW1WYXJzKTsKIAogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGJlZ2lu
ID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25z
dF9pdGVyYXRvciBlbmQgPSBpbnN0cnVjdGlvbnMoKS5lbmQoKTsKQEAgLTg5MCw2ICs4ODksMTQg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAg
cHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24i
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVj
LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QiKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fbm9ybWFsOiB7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwg
aXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwiKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX2dlbmVyaWM6IHsKICAgICAgICAg
ICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9nZW5lcmlj
Iik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyODEsOCArMTI4OCw2IEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICB9CiB9CiAKLSNlbmRpZiAvLyAhZGVm
aW5lZChOREVCVUcpIHx8IEVOQUJMRShPUENPREVfU0FNUExJTkcpCi0KICNpZiBEVU1QX0NPREVf
QkxPQ0tfU1RBVElTVElDUwogc3RhdGljIEhhc2hTZXQ8Q29kZUJsb2NrKj4gbGl2ZUNvZGVCbG9j
a1NldDsKICNlbmRpZgpAQCAtMTQ0OSw2ICsxNDU0LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2so
Q29weVBhcnNlZEJsb2NrVGFnLAogewogICAgIHNldE51bVBhcmFtZXRlcnMob3RoZXIubnVtUGFy
YW1ldGVycygpKTsKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJXYXJt
VXAoKTsKICAgICAKICAgICBpZiAob3RoZXIubV9yYXJlRGF0YSkgewogICAgICAgICBjcmVhdGVS
YXJlRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0xNDk3LDYgKzE1MDMsNyBAQCBDb2RlQmxvY2s6OkNv
ZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgQVNTRVJUKG1fc291cmNlKTsKICAgICAK
ICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsKIAogI2lm
IERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNTCiAgICAgbGl2ZUNvZGVCbG9ja1NldC5hZGQodGhp
cyk7CkBAIC0xNTE0LDcgKzE1MjEsMTEgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKICNpZiBF
TkFCTEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxFKQogICAgIGR1bXBWYWx1ZVByb2ZpbGVzKCk7CiAj
ZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShMTElOVCkgICAgCisgICAgd2hpbGUgKG1faW5jb21p
bmdMTEludENhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisgICAg
ICAgIG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCktPnJlbW92ZSgpOworI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFdlIG1heSBiZSBkZXN0cm95ZWQg
YmVmb3JlIGFueSBDb2RlQmxvY2tzIHRoYXQgcmVmZXIgdG8gdXMgYXJlIGRlc3Ryb3llZC4KICAg
ICAvLyBDb25zaWRlciB0aGF0IHR3byBDb2RlQmxvY2tzIGJlY29tZSB1bnJlYWNoYWJsZSBhdCB0
aGUgc2FtZSB0aW1lLiBUaGVyZQpAQCAtMTcyNiw4ICsxNzM3LDU1IEBAIHZvaWQgQ29kZUJsb2Nr
OjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICNlbHNlCiAgICAgc3RhdGljIGNvbnN0IGJvb2wg
dmVyYm9zZVVubGlua2luZyA9IGZhbHNlOwogI2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFC
TEUoSklUKQogICAgIAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnRlcnByZXRlciogaW50ZXJw
cmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJldGVyOworICAgIGlmICghaW50ZXJwcmV0ZXIt
PmVuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAg
ICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9uc1tpXV07CisgICAgICAgICAgICBzd2l0Y2ggKGludGVycHJldGVy
LT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkpIHsKKyAgICAgICAgICAg
IGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAg
ICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZSB8fCBIZWFwOjpp
c01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkpCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3Ry
dWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNV0udS5vcGVy
YW5kID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWw6CisgICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGN1
ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAgICAgICAgICAm
JiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bN10udS5z
dHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAg
ICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAg
ICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmNsZWFyKCk7CisgICAg
ICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPSBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJl
c29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAg
ICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW21fZ2xv
YmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV07CisgICAgICAgICAgICBBU1NFUlQoaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZl
X2dsb2JhbAorICAgICAgICAgICAgICAgICAgIHx8IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChj
dXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7
CisgICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlIHx8IEhlYXA6
OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0
dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQgPSAw
OworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xsaW50Q2Fs
bExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlu
a0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0lu
Zm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlu
a2luZykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBjYWxsIGZy
b20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tp
XS51bmxpbmsoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBF
TkFCTEUoTExJTlQpCisKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAvLyBDaGVjayBpZiB3ZSdy
ZSBub3QgbGl2ZS4gSWYgd2UgYXJlLCB0aGVuIGpldHRpc29uLgogICAgIGlmICghKHNob3VsZElt
bWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRhLT5saXZlbmVz
c0hhc0JlZW5Qcm92ZWQpKSB7CkBAIC0xODQ4LDEwICsxOTA2LDEyIEBAIHZvaWQgQ29kZUJsb2Nr
OjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXIKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
ZnVuY3Rpb25EZWNscy5zaXplKCk7ICsraSkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZnVu
Y3Rpb25EZWNsc1tpXSk7CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQotICAgIGZvciAoc2l6ZV90
IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBz
aXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25z
KClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOwotICAgIGZvciAoc2l6ZV90IHNp
emUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7
ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVtt
X2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICBpZiAobV9nbG9iYWxEYXRhLT5p
bnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3By
b3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisg
ICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9
IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVtt
X2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShERkdfSklUKQpAQCAtMjA2MCw2ICsyMTIwLDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxp
bmtDYWxscygpCiB7CiAgICAgaWYgKCEhbV9hbHRlcm5hdGl2ZSkKICAgICAgICAgbV9hbHRlcm5h
dGl2ZS0+dW5saW5rQ2FsbHMoKTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICBp
ZiAobV9sbGludENhbGxMaW5rSW5mb3NbaV0uaXNMaW5rZWQoKSkKKyAgICAgICAgICAgIG1fbGxp
bnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOworICAgIH0KKyNlbmRpZgogICAgIGlmICghKG1f
Y2FsbExpbmtJbmZvcy5zaXplKCkgfHwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSkpCiAg
ICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0y
MDc0LDEwICsyMTQwLDM3IEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiAKIHZvaWQg
Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKCkKIHsKKyAgICB3aGlsZSAobV9pbmNvbWlu
Z0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAg
ICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+dW5saW5rKCk7CisgICAgaWYgKG1faW5j
b21pbmdDYWxscy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKICAgICBSZXBhdGNoQnVmZmVy
IHJlcGF0Y2hCdWZmZXIodGhpcyk7CiAgICAgd2hpbGUgKG1faW5jb21pbmdDYWxscy5iZWdpbigp
ICE9IG1faW5jb21pbmdDYWxscy5lbmQoKSkKICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLmJlZ2lu
KCktPnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKIH0KKwordW5zaWduZWQg
Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMsIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcykKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKHJldHVybkFk
ZHJlc3MudmFsdWUoKSA+PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9iZWdpbikKKyAgICAg
ICAgJiYgcmV0dXJuQWRkcmVzcy52YWx1ZSgpIDw9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50
X2VuZCkpIHsKKyAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAgICAgICAgQVNT
RVJUKGV4ZWMtPmNvZGVCbG9jaygpID09IHRoaXMpOworICAgICAgICBBU1NFUlQoSklUQ29kZTo6
aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CisgICAgICAgIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiA9IGV4ZWMtPmN1cnJlbnRWUEMoKTsKKyAgICAgICAgQVNTRVJUKGluc3RydWN0aW9u
KTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uKTsKKyAgICB9Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyNlbmRpZgorICAgIGlmICghbV9yYXJlRGF0
YSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVj
b2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZl
Y3RvcjsKKyAgICBpZiAoIWNhbGxJbmRpY2VzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCwg
dW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNhbGxJ
bmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUo
KSkpLT5ieXRlY29kZU9mZnNldDsKK30KICNlbmRpZgogCiB2b2lkIENvZGVCbG9jazo6Y2xlYXJF
dmFsQ2FjaGUoKQpAQCAtMjE3MywyNCArMjI2Niw0NSBAQCBib29sIEZ1bmN0aW9uQ29kZUJsb2Nr
OjpjYW5Db21waWxlV2l0aERGCiAKIHZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6amV0dGlzb24oKQog
ewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAg
IEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNT
RVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1
dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xvYmFs
RGF0YSgpKTsKIH0KIAogdm9pZCBFdmFsQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNT
RVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJ
VENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9
PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVy
RXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwogfQog
CiB2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJ
VFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6Omlz
T3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNl
bWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1
dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZUZvcigqZ2xvYmFsRGF0YSgpLCBtX2lzQ29u
c3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOwogfQorCit2b2lkIFBy
b2dyYW1Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBB
U1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFT
U0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm9n
cmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShleGVjKTsKK30K
Kwordm9pZCBFdmFsQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsK
KyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZXhlYyk7
Cit9CisKK3ZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVy
VGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENv
bXBpbGVGb3IoZXhlYywgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVG
b3JDYWxsKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTA1
Mzc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaWZuZGVmIENvZGVCbG9ja19oCiAjZGVmaW5l
IENvZGVCbG9ja19oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVk
ZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCkBAIC01MCw2ICs1MSw3IEBACiAjaW5j
bHVkZSAiSklUV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNp
bmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogI2lu
Y2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQcmVkaWN0
aW9uVHJhY2tlci5oIgpAQCAtNjUsMTYgKzY3LDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKLS8vIFJlZ2lzdGVyIG51bWJlcnMg
dXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3Jk
aW5nIHRvIHRoZWlyIHJhbmdlczoKLS8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdh
dGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRo
ZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCi0vLyAgICAgIDB4MDAwMDAwMDAtMHgz
RkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUg
bG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUu
Ci0vLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4
NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2Rl
QmxvY2suCi1zdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0
MDAwMDAwMDsKLQogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAg
Y2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgaW5saW5lIGludCB1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXIoaW50IGFyZ3VtZW50c1JlZ2lzdGVyKSB7IHJldHVybiBhcmd1bWVudHNSZWdpc3Rl
ciAtIDE7IH0KIApAQCAtODMsNiArODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBD
b2RlQmxvY2sgOiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXplciwgcHVibGljIFdlYWtSZWZl
cmVuY2VIYXJ2ZXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gQ29weVBhcnNlZEJsb2NrVGFnIHsg
Q29weVBhcnNlZEJsb2NrIH07CiAgICAgcHJvdGVjdGVkOgpAQCAtMTIzLDcgKzEyMSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkK
ICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQtPmFsdGVybmF0aXZlKCk7CiAgICAgICAg
ICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5
cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29k
ZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMTM0LDExICsxMzIsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0j
aWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEVfT1BDT0RFX1NBTVBMSU5HCiAgICAgICAgIHZv
aWQgZHVtcChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZXMo
Y29uc3QgSW5zdHJ1Y3Rpb24qKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZShj
b25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiosIGludCBvcGVyYW5kKSBjb25zdDsK
LSNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9p
c1N0cmljdE1vZGU7IH0KIApAQCAtMTk0LDE1ICsxOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxNZXRob2RDYWxsTGlua0luZm8sIHVuc2ln
bmVkLCBnZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUluZGV4PihtX21ldGhvZENhbGxMaW5r
SW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSwgYnl0ZWNvZGVJbmRl
eCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1f
cmFyZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBWZWN0b3I8
Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURh
dGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOwotICAgICAgICAgICAgaWYgKCFjYWxsSW5kaWNl
cy5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICByZXR1cm4g
YmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwg
Z2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6
ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVj
b2RlT2Zmc2V0OwotICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEV4
ZWNTdGF0ZSosIFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0Rm9yQ2FsbEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKQEAgLTIyMywx
MSArMjExLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBtX2lu
Y29taW5nQ2FsbHMucHVzaChpbmNvbWluZyk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoTExJTlQp
CisgICAgICAgIHZvaWQgbGlua0luY29taW5nQ2FsbChMTEludENhbGxMaW5rSW5mbyogaW5jb21p
bmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLnB1c2goaW5j
b21pbmcpOworICAgICAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogICAgICAgICAKICAg
ICAgICAgdm9pZCB1bmxpbmtJbmNvbWluZ0NhbGxzKCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFC
TEUoSklUKQogCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVO
QUJMRShMTElOVCkKICAgICAgICAgdm9pZCBzZXRKSVRDb2RlTWFwKFBhc3NPd25QdHI8Q29tcGFj
dEpJVENvZGVNYXA+IGppdENvZGVNYXApCiAgICAgICAgIHsKICAgICAgICAgICAgIG1faml0Q29k
ZU1hcCA9IGppdENvZGVNYXA7CkBAIC0yMzYsNyArMjMwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2ppdENvZGVNYXAuZ2V0KCk7CiAgICAgICAg
IH0KKyNlbmRpZgogICAgICAgICAKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgdm9pZCBj
cmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoISFt
X2RmZ0RhdGEpCkBAIC0zMzUsMTIgKzMzMSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
fQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CisgICAg
ICAgICAgICBBU1NFUlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICYm
IHJldHVybkFkZHJlc3MgPCBpbnN0cnVjdGlvbnMoKS5lbmQoKSk7CiAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9u
cygpLmJlZ2luKCk7CiAgICAgICAgIH0KLSNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0SXNOdW1l
cmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNO
dW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAg
ICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgeyByZXR1cm4gbV9pc051bWVyaWND
b21wYXJlRnVuY3Rpb247IH0KQEAgLTM1NiwxNSArMzUxLDE3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB9CiAgICAgICAgIHZvaWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5p
dHkoKQogICAgICAgICB7CisjaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpICYmICFFTkFCTEUo
TExJTlQpCisgICAgICAgICAgICBpZiAoQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVk
Q29kZSgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGlmICghIWFsdGVy
bmF0aXZlKCkpCiAgICAgICAgICAgICAgICAgZGlzY2FyZEJ5dGVjb2RlKCk7CiAgICAgICAgICAg
ICBlbHNlCiAgICAgICAgICAgICAgICAgZGlzY2FyZEJ5dGVjb2RlTGF0ZXIoKTsKKyNlbmRpZgog
ICAgICAgICB9CiAgICAgICAgIAotI2lmbmRlZiBOREVCVUcKICAgICAgICAgYm9vbCB1c2VzT3Bj
b2RlKE9wY29kZUlEKTsKLSNlbmRpZgogCiAgICAgICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291
bnQoKSB7IHJldHVybiBtX2luc3RydWN0aW9uQ291bnQ7IH0KICAgICAgICAgdm9pZCBzZXRJbnN0
cnVjdGlvbkNvdW50KHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQpIHsgbV9pbnN0cnVjdGlvbkNv
dW50ID0gaW5zdHJ1Y3Rpb25Db3VudDsgfQpAQCAtMzg3LDE3ICszODQsMjYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGV4ZWN1dGFibGVNZW1vcnko
KSB7IHJldHVybiBnZXRKSVRDb2RlKCkuZ2V0RXhlY3V0YWJsZU1lbW9yeSgpOyB9CiAgICAgICAg
IHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFp
bk5vZGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpID0gMDsKKyAgICAg
ICAgYm9vbCBqaXRDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaml0Q29tcGlsZUltcGwoZXhlYyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpID0gMDsKICAgICAgICAgYm9vbCBo
YXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChn
ZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJU
KEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgYm9v
bCByZXN1bHQgPSByZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPiBnZXRKSVRUeXBlKCk7CiAj
aWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAg
ICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkRGR0pJ
VCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1l
bnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVwbGFjZW1lbnQoKS0+Z2V0SklU
VHlwZSgpKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCkgPT0gdGhpcyk7
CiAgICAgICAgICAgICB9CiAjZW5kaWYKQEAgLTQ1NiwxOCArNDYyLDIxIEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHZvaWQgY2xlYXJFdmFsQ2FjaGUoKTsKIAotI2lmIEVOQUJMRShJTlRF
UlBSRVRFUikKICAgICAgICAgdm9pZCBhZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKHVuc2ln
bmVkIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX3Byb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKTsKKyAg
ICAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBwZW5kKHByb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAgICAgIHZvaWQgYWRkR2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9uKHVuc2lnbmVkIGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAg
ewotICAgICAgICAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAg
ICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5hcHBlbmQoZ2xvYmFsUmVzb2x2ZUlu
c3RydWN0aW9uKTsKKyAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5hcHBl
bmQoZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICBib29sIGhh
c0dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbkF0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgTExJbnRDYWxsTGlua0luZm8q
IGFkZExMSW50Q2FsbExpbmtJbmZvKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludENh
bGxMaW5rSW5mb3MuYXBwZW5kKExMSW50Q2FsbExpbmtJbmZvKCkpOworICAgICAgICAgICAgcmV0
dXJuICZtX2xsaW50Q2FsbExpbmtJbmZvcy5sYXN0KCk7CisgICAgICAgIH0KICNlbmRpZgogI2lm
IEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgc2V0TnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3Mo
c2l6ZV90IHNpemUpIHsgbV9zdHJ1Y3R1cmVTdHViSW5mb3MuZ3JvdyhzaXplKTsgfQpAQCAtNDc2
LDggKzQ4NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkR2xvYmFsUmVz
b2x2ZUluZm8odW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAobV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAg
ICBtX2dsb2JhbFJlc29sdmVJbmZvcy5hcHBlbmQoR2xvYmFsUmVzb2x2ZUluZm8oZ2xvYmFsUmVz
b2x2ZUluc3RydWN0aW9uKSk7CisgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbmZvcy5hcHBl
bmQoR2xvYmFsUmVzb2x2ZUluZm8oZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKSk7CiAgICAgICAg
IH0KICAgICAgICAgR2xvYmFsUmVzb2x2ZUluZm8mIGdsb2JhbFJlc29sdmVJbmZvKGludCBpbmRl
eCkgeyByZXR1cm4gbV9nbG9iYWxSZXNvbHZlSW5mb3NbaW5kZXhdOyB9CiAgICAgICAgIGJvb2wg
aGFzR2xvYmFsUmVzb2x2ZUluZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KTsKQEAgLTUyMyw2ICs1MzEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBB
U1NFUlQocmVzdWx0LT5tX2J5dGVjb2RlT2Zmc2V0ICE9IC0xKTsKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KKyAgICAgICAgUHJlZGljdGVkVHlwZSB2YWx1ZVByb2ZpbGVQ
cmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gdmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgdW5zaWduZWQgdG90YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMoKQogICAgICAg
ICB7CkBAIC02NzIsNyArNjg0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAg
ICBib29sIGFkZEZyZXF1ZW50RXhpdFNpdGUoY29uc3QgREZHOjpGcmVxdWVudEV4aXRTaXRlJiBz
aXRlKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENv
ZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5l
Q29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBtX2V4aXRQcm9maWxlLmFk
ZChzaXRlKTsKICAgICAgICAgfQogCkBAIC03NzcsNiArNzg5LDI5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbShDb2RlQmxvY2sqIGFsdGVybmF0
aXZlKTsKICAgICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwog
ICAgICAgICAKKyAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIEpJVHRp
bmcga2lja3MgaW4sIGluIGEgbWl4ZWQgbW9kZQorICAgICAgICAvLyBleGVjdXRpb24gd29ybGQu
CisgICAgICAgIAorICAgICAgICB2b2lkIGRvbnRKSVRBbnl0aW1lU29vbigpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgdm9pZCBqaXRBZnRlcldhcm1VcCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxp
bnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFm
dGVyV2FybVVwOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdFNvb24oKQor
ICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICBpbnQzMl90IGxsaW50RXhlY3V0ZUNvdW50ZXIoKSBjb25zdAorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICB9CisgICAgICAg
IAogICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gdGllcmVkIGNvbXBp
bGF0aW9uIGtpY2tzIGluLiBUaGlzCiAgICAgICAgIC8vIGNvbnRyb2xzIGJvdGggd2hlbiB0aGUg
b3B0aW1pemluZyBjb21waWxlciBpcyBpbnZva2VkIGFuZCB3aGVuIE9TUgogICAgICAgICAvLyBl
bnRyeSBoYXBwZW5zLiBUd28gdHJpZ2dlcnMgZXhpc3Q6IHRoZSBsb29wIHRyaWdnZXIgYW5kIHRo
ZSByZXR1cm4KQEAgLTk2OSw2ICsxMDA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJv
b2wgbV9zaG91bGREaXNjYXJkQnl0ZWNvZGU7CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZp
cnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChFeGVjU3RhdGUqKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwogICAgICAgICAKQEAgLTk4MSw3ICsx
MDE3LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgdGFsbHlGcmVxdWVudEV4aXRT
aXRlcygpIHsgfQogI2VuZGlmCiAgICAgICAgIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5B
QkxFKE9QQ09ERV9TQU1QTElORykKICAgICAgICAgdm9pZCBkdW1wKEV4ZWNTdGF0ZSosIGNvbnN0
IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiBiZWdpbiwgVmVjdG9yPEluc3Ry
dWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImKSBjb25zdDsKIAogICAgICAgICBDU3RyaW5nIHJlZ2lz
dGVyTmFtZShFeGVjU3RhdGUqLCBpbnQgcikgY29uc3Q7CkBAIC05OTEsNyArMTAyNiw2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZSosIGlu
dCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBj
aGFyKiBvcCkgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRDYWxsT3AoRXhlY1N0YXRlKiwgaW50
IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNo
YXIqIG9wKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFB1dEJ5SWRPcChFeGVjU3RhdGUqLCBp
bnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3Qg
Y2hhciogb3ApIGNvbnN0OwotI2VuZGlmCiAgICAgICAgIHZvaWQgdmlzaXRTdHJ1Y3R1cmVzKFNs
b3RWaXNpdG9yJiwgSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3Q7CiAgICAgICAgIAogI2lmIEVOQUJM
RShERkdfSklUKQpAQCAtMTA1Miw5ICsxMDg2LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IG1fc291cmNlOwogICAgICAgICB1bnNpZ25lZCBtX3Nv
dXJjZU9mZnNldDsKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgVmVjdG9yPHVu
c2lnbmVkPiBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zOwogICAgICAgICBWZWN0b3I8dW5z
aWduZWQ+IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uczsKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgICAgIFNlZ21lbnRlZFZlY3RvcjxMTEludENhbGxMaW5rSW5mbywgOD4gbV9sbGludENhbGxM
aW5rSW5mb3M7CisgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxMTEludENhbGxMaW5rSW5mbywg
QmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0xMSW50
Q2FsbHM7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBWZWN0b3I8U3RydWN0dXJl
U3R1YkluZm8+IG1fc3RydWN0dXJlU3R1YkluZm9zOwpAQCAtMTA2NSw5ICsxMTAxLDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlV2l0
aEFyaXR5Q2hlY2s7CiAgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxDYWxsTGlua0luZm8sIEJh
c2ljUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5nQ2FsbHM7CiAjZW5k
aWYKLSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExM
SU5UKQogICAgICAgICBPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IG1faml0Q29kZU1hcDsKLSAg
ICAgICAgCisjZW5kaWYKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgc3RydWN0IFdlYWtS
ZWZlcmVuY2VUcmFuc2l0aW9uIHsKICAgICAgICAgICAgIFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9u
KCkgeyB9CiAgICAgICAgICAgICAKQEAgLTExMzAsMTIgKzExNjcsMTQgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgT3duUHRyPENvZGVCbG9jaz4gbV9hbHRlcm5hdGl2ZTsKICAgICAgICAg
CisgICAgICAgIGludDMyX3QgbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICAKICAgICAg
ICAgaW50MzJfdCBtX2ppdEV4ZWN1dGVDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1
bGF0aXZlU3VjY2Vzc0NvdW50ZXI7CiAgICAgICAgIHVpbnQzMl90IG1fc3BlY3VsYXRpdmVGYWls
Q291bnRlcjsKICAgICAgICAgdWludDhfdCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcjsKICAg
ICAgICAgdWludDhfdCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwotCisgICAgICAgIAog
ICAgICAgICBzdHJ1Y3QgUmFyZURhdGEgewogICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKICAgICAgICAgcHVibGljOgpAQCAtMTIwOCw2ICsxMjQ3LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0
aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoRXhlY1N0
YXRlKik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtMTI0Miw2ICsx
MjgyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFs
IEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
aml0Q29tcGlsZUltcGwoRXhlY1N0YXRlKik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiBy
ZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsK
ICNlbmRpZgpAQCAtMTI3OSw2ICsxMzIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVj
dGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0
ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoRXhlY1N0YXRlKik7CiAgICAgICAg
IHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
Y2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luc3RydWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTQ2VsbDsKICAgICBjbGFz
cyBTdHJ1Y3R1cmU7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CisgICAgc3RydWN0IExMSW50
Q2FsbExpbmtJbmZvOwogCiAjaWYgRU5BQkxFKEpJVCkKICAgICB0eXBlZGVmIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZiBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3RTdHViUm91dGluZVR5cGU7
CkBAIC0xNDUsNiArMTQ2LDExIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICAgICBzdHJ1
Y3QgSW5zdHJ1Y3Rpb24geworICAgICAgICBJbnN0cnVjdGlvbigpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHUuanNDZWxsLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIElu
c3RydWN0aW9uKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICNpZiAhRU5BQkxFKENPTVBVVEVE
X0dPVE9fSU5URVJQUkVURVIpCkBAIC0xODAsNiArMTg2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIH0KIAogICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
YyBnZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7IH0KKyAgICAgICAgCisg
ICAgICAgIEluc3RydWN0aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pIHsgdS5j
YWxsTGlua0luZm8gPSBjYWxsTGlua0luZm87IH0KIAogICAgICAgICB1bmlvbiB7CiAgICAgICAg
ICAgICBPcGNvZGUgb3Bjb2RlOwpAQCAtMTg4LDYgKzE5Niw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3RydWN0dXJlQ2hh
aW47CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxsOwogICAgICAg
ICAgICAgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKKyAgICAgICAgICAg
IExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm87CisgICAgICAgICAgICB2b2lkKiBwb2lu
dGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5r
SW5mby5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDYWxsTGlua0luZm9faAor
I2RlZmluZSBMTEludENhbGxMaW5rSW5mb19oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1NlbnRpbmVs
TGlua2VkTGlzdC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOwor
CitzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8
TExJbnRDYWxsTGlua0luZm8+IHsKKyAgICBMTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAg
IH0KKyAgICAKKyAgICB+TExJbnRDYWxsTGlua0luZm8oKQorICAgIHsKKyAgICAgICAgaWYgKGlz
T25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBp
c0xpbmtlZCgpIHsgcmV0dXJuIGNhbGxlZTsgfQorICAgIAorICAgIHZvaWQgdW5saW5rKCkKKyAg
ICB7CisgICAgICAgIGNhbGxlZS5jbGVhcigpOworICAgICAgICBtYWNoaW5lQ29kZVRhcmdldCA9
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAg
ICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlv
bj4gY2FsbGVlOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWNoaW5lQ29kZVRhcmdldDsK
K307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gTExJbnRDYWxsTGlua0luZm9f
aAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lv
biAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
bWFjcm8ob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0
X2J5X2lkLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uLCA5KSBc
CisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwgOSkgXAorICAg
ICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwKICAgICAgICAg
bWFjcm8ob3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5
X2lkX2dlbmVyaWMsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBcCkBAIC0y
MDIsNiArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgZW51bSB7IEZP
Ul9FQUNIX09QQ09ERV9JRChPUENPREVfSURfRU5VTSkgfSBPcGNvZGVJRDsKICAgICAjdW5kZWYg
T1BDT0RFX0lEX0VOVU0KIAorICAgIGNvbnN0IGludCBtYXhPcGNvZGVMZW5ndGggPSA5OwogICAg
IGNvbnN0IGludCBudW1PcGNvZGVJRHMgPSBvcF9lbmQgKyAxOwogCiAgICAgI2RlZmluZSBPUENP
REVfSURfTEVOR1RIUyhpZCwgbGVuZ3RoKSBjb25zdCBpbnQgaWQjI19sZW5ndGggPSBsZW5ndGg7
CkBAIC0yMTgsNyArMjIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZPUl9FQUNIX09Q
Q09ERV9JRChWRVJJRllfT1BDT0RFX0lEKTsKICAgICAjdW5kZWYgVkVSSUZZX09QQ09ERV9JRAog
Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBV
VEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICNpZiBDT01QSUxFUihSVkNU
KSB8fCBDT01QSUxFUihJTlRFTCkKICAgICB0eXBlZGVmIHZvaWQqIE9wY29kZTsKICNlbHNlCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTA1Mzc0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5o
IgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2lu
Y2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAj
aW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKQEAgLTExNiwy
NiArMTE3LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGV4cGVjdGVkIGJ5IHRoZSBjYWxsZWUu
CiAqLwogCi0jaWZuZGVmIE5ERUJVRwogc3RhdGljIGJvb2wgc19kdW1wc0dlbmVyYXRlZENvZGUg
PSBmYWxzZTsKLSNlbmRpZgogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVy
YXRlZENvZGUoYm9vbCBkdW1wc0dlbmVyYXRlZENvZGUpCiB7Ci0jaWZuZGVmIE5ERUJVRwogICAg
IHNfZHVtcHNHZW5lcmF0ZWRDb2RlID0gZHVtcHNHZW5lcmF0ZWRDb2RlOwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oZHVtcHNHZW5lcmF0ZWRDb2RlKTsKLSNlbmRpZgogfQogCiBib29sIEJ5dGVj
b2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKQogewotI2lmbmRlZiBOREVCVUcKICAg
ICByZXR1cm4gc19kdW1wc0dlbmVyYXRlZENvZGU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsK
LSNlbmRpZgogfQogCiBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKQEAg
LTE0OCwxMCArMTM5LDggQEAgSlNPYmplY3QqIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgp
CiAKICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25Db3VudChtX2NvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIAotI2lmbmRlZiBOREVCVUcKICAgICBpZiAoc19kdW1wc0dl
bmVyYXRlZENvZGUpCiAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wKG1fc2NvcGVDaGFpbi0+Z2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpOwotI2VuZGlmCiAKICAgICBpZiAoKG1fY29kZVR5cGUg
PT0gRnVuY3Rpb25Db2RlICYmICFtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpICYm
ICFtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKSB8fCBtX2NvZGVUeXBlID09IEV2YWxDb2Rl
KQogICAgICAgICBzeW1ib2xUYWJsZSgpLmNsZWFyKCk7CkBAIC0xMjY0LDkgKzEyNTMsNyBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkK
ICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygp
LnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIG1fY29k
ZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KTsKLSNlbmRpZgogICAgICAgICBlbWl0T3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9w
X3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE0MTksOSArMTQwNiw3IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQog
ICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXpl
KCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5h
ZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRp
ZgogICAgIGVtaXRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9i
YWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQocHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0
YW50KHByb3BlcnR5KSk7CkBAIC0xNDY2LDkgKzE0NTEsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+
YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lm
IEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUlu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBlbWl0T3Bjb2Rl
KHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9y
ZXNvbHZlX2dsb2JhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4
KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpA
QCAtMTQ4Niw5ICsxNDY5LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1ldGhvZENo
ZWNrKAogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkK
IHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAg
ZW1pdE9wY29kZShvcF9nZXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3Qt
PmluZGV4KCkpOwpAQCAtMTUxMyw5ICsxNDk0LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZXRBcgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lz
dGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9j
ay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwot
I2VuZGlmCiAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTUzMSw5ICsxNTEwLDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBS
RVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0
cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgCiAgICAgZW1pdE9wY29kZShvcF9wdXRf
YnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE4
MjEsNyArMTc5OCwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwo
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMoKSk7IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1
bWVudHMucmVnaXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExM
SU5UKQorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxs
TGlua0luZm8oKSk7CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRp
ZgogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRS
ZXN1bHQoKSkgewogICAgICAgICBlbWl0T3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0x
OTIzLDcgKzE5MDQsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25z
dAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJn
dW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShM
TElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2Fs
bExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5k
aWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVk
UmVzdWx0KCkpIHsKICAgICAgICAgZW1pdE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAt
MjE4Myw3ICsyMTY4LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0
Y2gKIHsKICAgICBtX3VzZXNFeGNlcHRpb25zID0gdHJ1ZTsKICNpZiBFTkFCTEUoSklUKQorI2lm
IEVOQUJMRShMTElOVCkKKyAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAw
KSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3Bl
RGVwdGggKyBtX2Jhc2VTY29wZURlcHRoLCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8
dm9pZCo+KCZsbGludF9vcF9jYXRjaCkpIH07CisjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8g
PSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNp
emUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlv
bkxhYmVsKCkgfTsKKyNlbmRpZgogI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFy
dC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1f
ZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoIH07CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZp
c2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTk3LDkgKzU5Nyw3IEBAIHByaXZhdGU6CiAgICAg
ewogICAgICAgICBVTlVTRURfUEFSQU0obm9kZUluZGV4KTsKICAgICAgICAgCi0gICAgICAgIFZh
bHVlUHJvZmlsZSogcHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+
dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIEFT
U0VSVChwcm9maWxlKTsKLSAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmls
ZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgICAgIFByZWRpY3RlZFR5cGUgcHJl
ZGljdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxl
UHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogI2lmIERGR19FTkFC
TEUoREVCVUdfVkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCJEeW5hbWljIFtAJXUsIGJjIyV1XSBw
cmVkaWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4LCBieXRlY29kZUluZGV4LCBwcmVkaWN0aW9uVG9T
dHJpbmcocHJlZGljdGlvbikpOwogI2VuZGlmCkBAIC05MjMsNyArOTIxLDcgQEAgdm9pZCBCeXRl
Q29kZVBhcnNlcjo6aGFuZGxlQ2FsbChJbnRlcnByZQogI2lmIERGR19FTkFCTEUoREVCVUdfVkVS
Qk9TRSkKICAgICBwcmludGYoIlNsb3cgY2FzZSBjb3VudCBmb3IgY2FsbCBhdCBAJXp1IGJjIyV1
OiAldS8ldTsgZXhpdCBwcm9maWxlOiAlZC5cbiIsIG1fZ3JhcGguc2l6ZSgpLCBtX2N1cnJlbnRJ
bmRleCwgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5yYXJlQ2FzZVByb2ZpbGVG
b3JCeXRlY29kZU9mZnNldChtX2N1cnJlbnRJbmRleCktPm1fY291bnRlciwgbV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5leGVjdXRpb25FbnRyeUNvdW50KCksIG1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hl
KSk7CiAjZW5kaWYKLSAgICAgICAgICAgIAorICAgIAogICAgIGlmIChtX2dyYXBoLmlzRnVuY3Rp
b25Db25zdGFudChtX2NvZGVCbG9jaywgY2FsbFRhcmdldCkpCiAgICAgICAgIGNhbGxUeXBlID0g
Q29uc3RhbnRGdW5jdGlvbjsKICAgICBlbHNlIGlmICghIW1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJbmZvKG1fY3VycmVudEluZGV4KS5sYXN0U2VlbkNhbGxl
ZQpAQCAtMTAyNiw2ICsxMDI0LDE2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGlu
aW5nKGJvb2wKICAgICBpZiAoIW1pZ2h0SW5saW5lRnVuY3Rpb25Gb3IocHJvZmlsZWRCbG9jaywg
a2luZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKKyAgICAvLyBJZiB0aGUgY29kZSBi
bG9jayBpcyBzdGlsbCBpbnRlcnByZXRlZCwgdGhlbiAoYSkgaXQncyBub3QgaG90IGFuZCAoYikg
aXQgZG9lc24ndAorICAgIC8vIGhhdmUgcHJvZmlsaW5nLiBTbywgd2Ugc2hvdWxkIGV4aXQuCisg
ICAgaWYgKHByb2ZpbGVkQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rKSB7CisgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgYWRk
VG9HcmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZUluZGV4KTsKKyAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpKQorICAgICAgICAgICAg
YWRkVG9HcmFwaChQaGFudG9tLCBnZXQocmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFu
ZChpKSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCiAgICAgLy8gSWYgd2Ug
Z2V0IGhlcmUgdGhlbiBpdCBsb29rcyBsaWtlIHdlIHNob3VsZCBkZWZpbml0ZWx5IGlubGluZSB0
aGlzIGNvZGUuIFByb2NlZWQKICAgICAvLyB3aXRoIHBhcnNpbmcgdGhlIGNvZGUgdG8gZ2V0IGJ5
dGVjb2RlLCBzbyB0aGF0IHdlIGNhbiB0aGVuIHBhcnNlIHRoZSBieXRlY29kZS4KICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IG1fY29kZUJsb2NrQ2FjaGUuZ2V0KENvZGVCbG9ja0tleShleGVj
dXRhYmxlLCBraW5kKSwgZXhwZWN0ZWRGdW5jdGlvbi0+c2NvcGUoKSk7CkBAIC0xODQ2LDcgKzE4
NTQsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAg
ICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwogICAgICAgICB9CiAKLSAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWQ6IHsKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbDogewogICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0g
Z2V0KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUlu
ZGV4IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAg
ICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVu
dGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZF07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDEwNTM3
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExMSw2ICsxMTEsOCBAQCBpbmxpbmUgYm9vbCBjYW5Db21waWxlT3Bjb2Rl
KE9wY29kZUlEIG9wCiAgICAgY2FzZSBvcF9wdXRfc2NvcGVkX3ZhcjoKICAgICBjYXNlIG9wX2dl
dF9ieV9pZDoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bDoKICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92
YXI6CiAgICAgY2FzZSBvcF9qbXA6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29t
bW9uLmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q29tbW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDcgKzM3LDcgQEAKICNkZWZpbmUgREZHX0VO
QUJMRShERkdfRkVBVFVSRSkgKGRlZmluZWQgREZHX0VOQUJMRV8jI0RGR19GRUFUVVJFICYmIERG
R19FTkFCTEVfIyNERkdfRkVBVFVSRSkKIAogLy8gRW1pdCB2YXJpb3VzIGxvZ2dpbmcgaW5mb3Jt
YXRpb24gZm9yIGRlYnVnZ2luZywgaW5jbHVkaW5nIGR1bXBpbmcgdGhlIGRhdGFmbG93IGdyYXBo
cy4KLSNkZWZpbmUgREZHX0VOQUJMRV9ERUJVR19WRVJCT1NFIDAKKyNkZWZpbmUgREZHX0VOQUJM
RV9ERUJVR19WRVJCT1NFIDEKIC8vIEVtaXQgZHVtcHMgZHVyaW5nIHByb3BhZ2F0aW9uLCBpbiBh
ZGRpdGlvbiB0byBqdXN0IGFmdGVyLgogI2RlZmluZSBERkdfRU5BQkxFX0RFQlVHX1BST1BBR0FU
SU9OX1ZFUkJPU0UgMAogLy8gRW1pdCBsb2dnaW5nIGZvciBPU1IgZXhpdCB2YWx1ZSByZWNvdmVy
aWVzIGF0IGV2ZXJ5IG5vZGUsIG5vdCBqdXN0IG5vZGVzIHRoYXQKQEAgLTYyLDcgKzYyLDcgQEAK
IC8vIEVtaXQgYSBicmVha3BvaW50IGludG8gdGhlIHNwZWN1bGF0aW9uIGZhaWx1cmUgY29kZS4K
ICNkZWZpbmUgREZHX0VOQUJMRV9KSVRfQlJFQUtfT05fU1BFQ1VMQVRJT05fRkFJTFVSRSAwCiAv
LyBMb2cgZXZlcnkgc3BlY3VsYXRpb24gZmFpbHVyZS4KLSNkZWZpbmUgREZHX0VOQUJMRV9WRVJC
T1NFX1NQRUNVTEFUSU9OX0ZBSUxVUkUgMAorI2RlZmluZSBERkdfRU5BQkxFX1ZFUkJPU0VfU1BF
Q1VMQVRJT05fRkFJTFVSRSAxCiAvLyBEaXNhYmxlIHRoZSBERkcgSklUIHdpdGhvdXQgaGF2aW5n
IHRvIHRvdWNoIFBsYXRmb3JtLmgKICNkZWZpbmUgREZHX0RFQlVHX0xPQ0FMX0RJU0JBTEUgMAog
Ly8gRW5hYmxlIE9TUiBlbnRyeSBmcm9tIGJhc2VsaW5lIEpJVC4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTA1Mzc0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRG
R09TUkV4aXQuaCIKICNpbmNsdWRlICJERkdSZXBhdGNoLmgiCisjaW5jbHVkZSAiSG9zdENhbGxS
ZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIklubGlu
ZUFTTS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC01NjQsNDUgKzU2NSw2IEBAIHNp
emVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHIKICAgICByZXR1cm4gSlNWYWx1
ZTo6c3RyaWN0RXF1YWwoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVl
OjpkZWNvZGUoZW5jb2RlZE9wMikpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9O
IGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04g
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7Ci0KLSNpZiBD
UFUoWDg2XzY0KQotYXNtICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoi
ICJcbiIKLSAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgotICAgICJtb3YgJXIxMywgJXJkaVxu
IgotICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoWDg2KQotYXNtICgKLSIuZ2xv
YmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9T
VFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglZWRp
KSwgJWVkaVxuIgotICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgotICAgICJqbXAgIiBTWU1CT0xf
U1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJc
biIKLSk7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikKLWFzbSAoCi0iLnRleHQiICJcbiIKLSIuYWxp
Z24gMiIgIlxuIgotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotIi50aHVt
YiIgIlxuIgotIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAi
XG4iCi0gICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgotICAgICJjcHkgcjAsIHI1IiAiXG4i
Ci0gICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZW5kaWYKLQotRW5jb2RlZEpTVmFsdWUgREZHX09Q
RVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4
ZWMpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRhKCkuaG9z
dENhbGxSZXR1cm5WYWx1ZSk7Ci19Ci0KIHN0YXRpYyB2b2lkKiBoYW5kbGVIb3N0Q2FsbChFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5o
CShyZXZpc2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0
aW9uU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKIGNsYXNzIEhlYXA7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBN
YXJrZWRCbG9jazsKIAogY2xhc3MgQWxsb2NhdGlvblNwYWNlIHsKQEAgLTY4LDYgKzY5LDggQEAg
cHVibGljOgogICAgIHZvaWQgc2hyaW5rKCk7CiAgICAgCiBwcml2YXRlOgorICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiAgICAgZW51bSBBbGxvY2F0aW9uRWZm
b3J0IHsgQWxsb2NhdGlvbk11c3RTdWNjZWVkLCBBbGxvY2F0aW9uQ2FuRmFpbCB9OwogICAgIAog
ICAgIHZvaWQqIGFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODI5LDcgKzgyOSw3
IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKICAgICAgICAgbV9v
YmplY3RTcGFjZS5zZXRIaWdoV2F0ZXJNYXJrKG1heChwcm9wb3J0aW9uYWxCeXRlcywgbV9taW5C
eXRlc1BlckN5Y2xlKSk7CiAgICAgfQogICAgIEpBVkFTQ1JJUFRDT1JFX0dDX0VORCgpOwotCisg
ICAgCiAgICAgKCptX2FjdGl2aXR5Q2FsbGJhY2spKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDYsNiArNDYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNWYWx1ZTsKICAgICBj
bGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogICAgIGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyOwogICAgIGNsYXNzIFJlZ2lzdGVyRmls
ZTsKICAgICBjbGFzcyBVU3RyaW5nOwpAQCAtMTI5LDEwICsxMzAsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZ2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cyhIYXNoU2V0PEpT
Q2VsbCo+JiByb290cyk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgTWFy
a2VkQmxvY2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBBbGxvY2F0aW9uU3BhY2U7Ci0gICAgICAg
IGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9j
azsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOworICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0
b3I7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBtaW5FeHRyYUNvc3QgPSAyNTY7CiAg
ICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4RXh0cmFDb3N0ID0gMTAyNCAqIDEwMjQ7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDEw
NTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwMSw3ICszMDEsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oCiAjZW5kaWYKIAogICAgIEFTU0VSVChIZWFwOjppc01hcmtlZChjZWxsKSk7
Ci0KKyAgICAKICAgICBpZiAoaXNKU1N0cmluZyhjZWxsKSkgewogICAgICAgICBKU1N0cmluZzo6
dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAg
ICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5o
CShyZXZpc2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
Y2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKK2Ns
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsKIGNsYXNzIFNs
b3RWaXNpdG9yOwogCkBAIC03OSw2ICs4MCw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jaygp
OwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgCiAgICAgLy8gWyAzMi4uLiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lz
ZVN0ZXAgPSBNYXJrZWRCbG9jazo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBw
cmVjaXNlQ3V0b2ZmID0gMjU2OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTA1Mzc0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiAr
MTE5LDkgQEAgbmFtZXNwYWNlIEpTQyAgewogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAg
ICAgSW5zdHJ1Y3Rpb24qIHJldHVyblZQQygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJG
aWxlOjpSZXR1cm5QQ10udlBDKCk7IH0KICNlbmRpZgorI2lmIEVOQUJMRShMTElOVCkKKyAgICAg
ICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8
SW5zdHJ1Y3Rpb24qPih0aGlzW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0udGFnKCkpOyB9
CisjZW5kaWYKIAogICAgICAgICB2b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogY2FsbGVy
RnJhbWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OkNhbGxl
ckZyYW1lXSA9IGNhbGxlckZyYW1lOyB9CiAgICAgICAgIHZvaWQgc2V0U2NvcGVDaGFpbihTY29w
ZUNoYWluTm9kZSogc2NvcGVDaGFpbikgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1Jl
Z2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0gPSBzY29wZUNoYWluOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9u
IDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRlICJKSVQuaCIK
ICNlbmRpZgogCi0jZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAo
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkK
KyNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EICgoRU5BQkxFKENP
TVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkpICYmICFkZWZpbmVkKF9f
bGx2bV9fKSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNTQ3LDE3ICs1NDcsNDEgQEAg
SW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKIHsKIH0KIAotdm9pZCBJbnRlcnByZXRlcjo6aW5p
dGlhbGl6ZShib29sIGNhblVzZUpJVCkKK0ludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIoKQogewot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkK
KyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICBkZWxldGVbXSBtX29wY29kZVRhYmxlOworI2Vu
ZGlmCit9CisKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRhdGEqIGxsaW50
RGF0YSwgYm9vbCBjYW5Vc2VKSVQpCit7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQ
UkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQ
UkVURVIpCisgICAgLy8gSGF2aW5nIExMSW50IGVuYWJsZWQsIGJ1dCBub3QgYmVpbmcgYWJsZSB0
byB1c2UgdGhlIEpJVCwgYW5kIG5vdCBoYXZpbmcKKyAgICAvLyBhIGNvbXB1dGVkIGdvdG8gaW50
ZXJwcmV0ZXIsIGlzIG5vdCBzdXBwb3J0ZWQuIE5vdCBiZWNhdXNlIHdlIGNhbm5vdAorICAgIC8v
IHN1cHBvcnQgaXQsIGJ1dCBiZWNhdXNlIEkgZGVjaWRlZCB0byBkcmF3IHRoZSBsaW5lIGF0IHRo
ZSBudW1iZXIgb2YKKyAgICAvLyBwZXJtdXRhdGlvbnMgb2YgZXhlY3V0aW9uIGVuZ2luZXMgdGhh
dCBJIHdhbnRlZCB0aGlzIGNvZGUgdG8gZ3Jvay4KKyAgICBBU1NFUlQoY2FuVXNlSklUKTsKKyNl
bmRpZgogICAgIGlmIChjYW5Vc2VKSVQpIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1f
b3Bjb2RlVGFibGUgPSBsbGludERhdGEtPm9wY29kZU1hcCgpOworICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQorICAgICAgICAgICAgbV9vcGNvZGVJRFRhYmxl
LmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworI2Vsc2UK
ICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0aW5h
dGlvbnMgZm9yIG9wY29kZXMuCiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlID0gYml0d2lz
ZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpKTsKICAgICAgICAgICAgIG1f
b3Bjb2RlVGFibGVbaV0gPSBvcGNvZGU7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0gZWxzZSB7
CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbmV3IE9wY29kZVtu
dW1PcGNvZGVJRHNdOworI2VuZGlmCiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRpYWxpemVB
bmRSZXR1cm4sIDAsIDApOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1PcGNvZGVJRHM7ICsraSkKQEAgLTY2Nyw5ICs2OTEsMTEgQEAgdm9pZCBJbnRlcnByZXRlcjo6
ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbQogCiBib29sIEludGVycHJldGVyOjppc09wY29kZShPcGNv
ZGUgb3Bjb2RlKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lm
IEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYg
IUVOQUJMRShMTElOVCkKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG9wY29k
ZSA+PSAwICYmIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihv
cGNvZGUpKSA8PSBvcF9lbmQ7CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2RlICE9IEhhc2hUcmFp
dHM8T3Bjb2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJhaXRzPE9wY29kZT46
OmlzRGVsZXRlZFZhbHVlKG9wY29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJRFRhYmxlLmNvbnRh
aW5zKG9wY29kZSk7CkBAIC03MjYsMTEgKzc1MiwxMSBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRl
cnByZXRlcjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAxLgogI2lmIEVOQUJM
RShKSVQpICYmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBpZiAoY2FsbGVyRnJhbWUtPmdsb2Jh
bERhdGEoKS5jYW5Vc2VKSVQoKSkKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1l
LT5yZXR1cm5QQygpKTsKICAgICBlbHNlCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJs
b2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZWxpZiBF
TkFCTEUoSklUKQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNl
dChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2Nr
LT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNl
bHNlCiAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxG
cmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbmRpZgpAQCAtNTE3MCwxMCArNTE5NiwxMCBAQCB2
b2lkIEludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVy
blZQQygpKTsKICNpZiBFTkFCTEUoSklUKQogICAgIGVsc2UKLSAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMo
KSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9m
ZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogI2Vsc2UK
LSAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2Fs
bEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9j
ay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAj
ZW5kaWYKICAgICBsaW5lTnVtYmVyID0gY2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQgLSAxKTsKICAgICBzb3VyY2VJRCA9IGNhbGxlckNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTA1
Mzc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNp
bmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJMTElu
dERhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIK
IApAQCAtNDUsNiArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvbkV4
ZWN1dGFibGU7CiAgICAgY2xhc3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUV4
ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7
CkBAIC05MCwxOSArOTIsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJbnRlcnBy
ZXRlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkQ2FsbDsKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEpJ
VDsKICAgICBwdWJsaWM6CiAgICAgICAgIEludGVycHJldGVyKCk7CisgICAgICAgIH5JbnRlcnBy
ZXRlcigpOwogICAgICAgICAKLSAgICAgICAgdm9pZCBpbml0aWFsaXplKGJvb2wgY2FuVXNlSklU
KTsKKyAgICAgICAgdm9pZCBpbml0aWFsaXplKExMSW50OjpEYXRhKiwgYm9vbCBjYW5Vc2VKSVQp
OwogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlKCkgeyByZXR1cm4gbV9yZWdp
c3RlckZpbGU7IH0KICAgICAgICAgCiAgICAgICAgIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQg
aWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBF
TkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09U
T19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICAgICAgcmV0dXJuIG1fb3Bj
b2RlVGFibGVbaWRdOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBpZDsKQEAgLTExMiw3ICsx
MTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKE9w
Y29kZSBvcGNvZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVk
KTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJ
TlQpCisgICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7CisgICAgICAgICAgICBy
ZXR1cm4gbV9vcGNvZGVJRFRhYmxlLmdldChvcGNvZGUpOworI2VsaWYgRU5BQkxFKENPTVBVVEVE
X0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7
CiAgICAgICAgICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29kZSkpOwpAQCAt
MTIyLDYgKzEyOSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBvcGNv
ZGU7CiAjZW5kaWYKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBlbmFibGVkKCkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZW5hYmxlZDsKKyAgICAgICAgfQogCiAg
ICAgICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIApAQCAtMTg5LDcgKzIwMSwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlckZpbGUgbV9yZWdpc3RlckZpbGU7CiAgICAg
ICAgIAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShM
TElOVCkKKyAgICAgICAgT3Bjb2RlKiBtX29wY29kZVRhYmxlOyAvLyBNYXBzIE9wY29kZUlEID0+
IE9wY29kZSBmb3IgY29tcGlsaW5nCisgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4g
bV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21waWxp
bmcKKyNlbGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICBPcGNv
ZGUgbV9vcGNvZGVUYWJsZVtudW1PcGNvZGVJRHNdOyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29k
ZSBmb3IgY29tcGlsaW5nCiAgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNv
ZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21waWxpbmcKICNl
bmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmls
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdp
c3RlckZpbGUuaAkocmV2aXNpb24gMTA1Mzc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7CiAgICAgY2xh
c3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAg
ICBjbGFzcyBSZWdpc3RlckZpbGUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWdp
c3RlckZpbGUpOwpAQCAtODEsNiArODIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgZ3Jvd1Nsb3dDYXNlKFJlZ2lzdGVyKik7CiAgICAg
ICAgIHZvaWQgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CiAgICAgICAgIHZvaWQgYWRkVG9Db21t
aXR0ZWRCeXRlQ291bnQobG9uZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hv
c3RDYWxsUmV0dXJuVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgi
CisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJJbmxpbmVBU00uaCIKKyNpbmNs
dWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVNZXRob2RzLmgiCisjaW5j
bHVkZSAiU2NvcGVDaGFpbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworZXh0ZXJuICJDIiBFbmNv
ZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKCk7CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFM
VUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSop
OworCisjaWYgQ1BVKFg4Nl82NCkKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKKyAgICAibW92ICVy
MTMsICVyZGlcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKFg4NikKK2Fz
bSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4i
CitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1v
diAtNDAoJWVkaSksICVlZGlcbiIKKyAgICAibW92ICVlZGksIDQoJWVzcClcbiIKKyAgICAiam1w
ICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhl
Y1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpCithc20gKAorIi50ZXh0IiAi
XG4iCisiLmFsaWduIDIiICJcbiIKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJc
biIKKyIudGh1bWIiICJcbiIKKyIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiOiIgIlxuIgorICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKKyAgICAiY3B5IHIw
LCByNSIgIlxuIgorICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VuZGlmCisKK2V4dGVybiAiQyIg
RW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SG9zdENhbGxSZXR1cm5WYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKyNkZWZpbmUgSG9zdENhbGxSZXR1cm5WYWx1
ZV9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBDQUxMSU5HX0NPTlZFTlRJ
T05fSVNfU1REQ0FMTAorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBDREVD
TAorI2Vsc2UKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04KKyNlbmRpZgor
CituYW1lc3BhY2UgSlNDIHsKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JF
VFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOworfQorCisjZW5kaWYg
Ly8gSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3Byb2ZpbGVfd2lsbF9jYWxsKQog
ICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9uZXdfc2NvcGUpCiAgICAgICAgIERFRklORV9PUChv
cF9wdXNoX3Njb3BlKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAg
IERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaW5k
ZXgpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsKQpAQCAtNDg3LDYgKzQ4OSw4IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9wb3N0X2luYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9k
ZWMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRf
YnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcmVzb2x2ZV9nbG9iYWwpCkBAIC01MjYsNiArNTMwLDEw
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAKIEpJVENvZGUgSklUOjpw
cml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaykKIHsKKyNpZiBF
TkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiQ29tcGlsaW5nIEpJVCBjb2RlIVxu
Iik7CisjZW5kaWYKKyAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiAgICAgbV9jYW5C
ZU9wdGltaXplZCA9IG1fY29kZUJsb2NrLT5jYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBA
IC02OTAsOCArNjk4LDEyIEBAIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBm
dW4KICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBtX2NvZGVCbG9jay0+c3RydWN0
dXJlU3R1YkluZm8obV9tZXRob2RDYWxsQ29tcGlsYXRpb25JbmZvW2ldLnByb3BlcnR5QWNjZXNz
SW5kZXgpLmNhbGxSZXR1cm5Mb2NhdGlvbjsKICAgICB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkK
LSAgICBpZiAobV9jYW5CZU9wdGltaXplZCkgeworI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFC
TEUoTExJTlQpCisgICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgICAgIHx8IHRydWUKKyNlbmRpZgorICAgICAgICApIHsKICAgICAgICAgQ29tcGFjdEpJVENv
ZGVNYXA6OkVuY29kZXIgaml0Q29kZU1hcEVuY29kZXI7CiAgICAgICAgIGZvciAodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IG1fbGFiZWxzLnNpemUoKTsgKyti
eXRlY29kZU9mZnNldCkgewogICAgICAgICAgICAgaWYgKG1fbGFiZWxzW2J5dGVjb2RlT2Zmc2V0
XS5pc1NldCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCShyZXZpc2lvbiAxMDUzNzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw3ICszMSw3IEBACiAvLyBWZXJib3NlIGxvZ2dpbmcgb2YgY29kZSBnZW5lcmF0aW9uCiAjZGVm
aW5lIEVOQUJMRV9KSVRfVkVSQk9TRSAwCiAvLyBWZXJib3NlIGxvZ2dpbmcgZm9yIE9TUi1yZWxh
dGVkIGNvZGUuCi0jZGVmaW5lIEVOQUJMRV9KSVRfVkVSQk9TRV9PU1IgMAorI2RlZmluZSBFTkFC
TEVfSklUX1ZFUkJPU0VfT1NSIDEKIAogLy8gV2UndmUgcnVuIGludG8gc29tZSBwcm9ibGVtcyB3
aGVyZSBjaGFuZ2luZyB0aGUgc2l6ZSBvZiB0aGUgY2xhc3MgSklUIGxlYWRzIHRvCiAvLyBwZXJm
b3JtYW5jZSBmbHVjdHVhdGlvbnMuICBUcnkgZm9yY2luZyBhbGlnbm1lbnQgaW4gYW4gYXR0ZW1w
dCB0byBzdGFiYWxpemUgdGhpcy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5o
CShyZXZpc2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSklUQ29kZSgpIHsgfQogI2VuZGlmCiAgICAgcHVibGljOgotICAgICAgICBlbnVtIEpJVFR5
cGUgeyBIb3N0Q2FsbFRodW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CisgICAgICAgIGVudW0g
SklUVHlwZSB7IE5vbmUsIEhvc3RDYWxsVGh1bmssIEludGVycHJldGVyVGh1bmssIEJhc2VsaW5l
SklULCBERkdKSVQgfTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKSVRUeXBlIGJvdHRvbVRp
ZXJKSVQoKQogICAgICAgICB7CkBAIC02Niw4ICs2NiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIHJldHVybiBERkdKSVQ7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0
YXRpYyBib29sIGlzT3B0aW1pemluZ0pJVChKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IERGR0pJVDsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgc3RhdGljIGJvb2wgaXNCYXNlbGluZUNvZGUoSklUVHlwZSBqaXRUeXBlKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBJbnRlcnByZXRlclRodW5rIHx8
IGppdFR5cGUgPT0gQmFzZWxpbmVKSVQ7CisgICAgICAgIH0KKyAgICAgICAgCiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgSklUQ29kZSgpCisgICAgICAgICAgICA6IG1faml0VHlwZShOb25lKQog
ICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNzUsNiArODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIDogbV9yZWYocmVmKQogICAgICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlw
ZSkKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGppdFR5cGUgIT0gTm9uZSk7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3IgISgpIGNvbnN0CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDE1ICszMywyMSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
REZHRHJpdmVyLmgiCiAjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlw
ZT4KIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEV4ZWNTdGF0ZSogZXhlYywg
T3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENv
ZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdl
dEpJVFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFleGVjLT5n
bG9iYWxEYXRhKCkuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAg
IGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29t
cGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAg
ICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlKGV4ZWMsIGNvZGVCbG9jay5nZXQoKSwg
aml0Q29kZSk7CkBAIC01NSwxMCArNjEsNyBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHBy
b3ByaWF0ZShFeGVjCiAgICAgICAgIH0KICAgICAgICAgaml0Q29kZSA9IEpJVDo6Y29tcGlsZSgm
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2suZ2V0KCkpOwogICAgIH0KLSNpZiAhRU5BQkxF
KE9QQ09ERV9TQU1QTElORykKLSAgICBpZiAoIUJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVy
YXRlZENvZGUoKSkKLSAgICAgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdP
cHBvcnR1bml0eSgpOwotI2VuZGlmCisgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2Nh
cmRpbmdPcHBvcnR1bml0eSgpOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC02Niwx
MCArNjksMTUgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoRXhlYwogCiBp
bmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKEV4ZWNTdGF0ZSogZXhl
YywgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2Rl
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3lt
Ym9sVGFibGUqJiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAg
IGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAKICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxE
YXRhKCk7CiAgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAK
ICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29k
ZTo6REZHSklUKQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZUZ1bmN0aW9u
KGV4ZWMsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsK
QEAgLTg0LDExICs5Miw3IEBAIGlubGluZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9w
cmkKICAgICAgICAgfQogICAgICAgICBqaXRDb2RlID0gSklUOjpjb21waWxlKCZnbG9iYWxEYXRh
LCBjb2RlQmxvY2suZ2V0KCksICZqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAgIH0KLSNpZiAh
RU5BQkxFKE9QQ09ERV9TQU1QTElORykKLSAgICBpZiAoIUJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1w
c0dlbmVyYXRlZENvZGUoKSkKLSAgICAgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2Nh
cmRpbmdPcHBvcnR1bml0eSgpOwotI2VuZGlmCi0gICAgCisgICAgY29kZUJsb2NrLT5oYW5kbGVC
eXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29k
ZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAgIAogICAgIHJldHVybiB0cnVl
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCShy
ZXZpc2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlv
bnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIEV4Y2VwdGlvbkhhbmRsZXIg
Z2VuZXJpY1Rocm93KEpTR2xvYmFsRGEKIAogRXhjZXB0aW9uSGFuZGxlciBqaXRUaHJvdyhKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2Vw
dGlvblZhbHVlLCBSZXR1cm5BZGRyZXNzUHRyIGZhdWx0TG9jYXRpb24pCiB7Ci0gICAgcmV0dXJu
IGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCBjYWxs
RnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChmYXVsdExvY2F0aW9uKSk7CisgICAg
cmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVl
LCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUsIGZhdWx0
TG9jYXRpb24pKTsKIH0KIAogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5jcHAJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
U3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTE1LDcgKzE5MTUsNyBAQCBERUZJTkVfU1RV
Ql9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCA9IHN0YWNrRnJhbWUuYXJnc1swXS5pbnQzMigpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NF
X09TUikKLSAgICBwcmludGYoIkVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0
ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0
aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwg
Y29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGlt
aXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkIG9wdGltaXpl
X2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2ss
IGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlv
blJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsK
ICNlbmRpZgogCiAgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkg
ewpAQCAtMjE3MCw0NSArMjE3MCwxMyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3Bf
Y29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIENhbGxGcmFtZSogYXJp
dHlDaGVja0ZvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZp
bGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxs
ZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpOwotICAgIEFTU0VSVCghY2FsbGVl
LT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxs
ZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKLSAgICBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCk7Ci0KLSAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUg
d29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxl
ci4KLSAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsg
bmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVl
UmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBBU1NFUlQoYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAv
LyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhl
biBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgotICAgIHNpemVfdCBk
ZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXM7Ci0gICAgUmVnaXN0ZXIqIHNyYyA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0g
ICAgUmVnaXN0ZXIqIGRzdCA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKLQotICAg
IGludCBpOwotICAgIGludCBlbmQgPSAtQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMpOwotICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQotICAgICAg
ICBkc3RbaV0gPSBzcmNbaV07Ci0KLSAgICBlbmQgLT0gZGVsdGE7Ci0gICAgZm9yICggOyBpID49
IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZy
YW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShkc3QpOwotICAgIEFTU0VSVCgo
dm9pZCopbmV3Q2FsbEZyYW1lIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOwotICAgIHJldHVybiBu
ZXdDYWxsRnJhbWU7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2Fy
aXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENh
bGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJh
bWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJh
bWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1l
LnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAg
ICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBj
YWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihj
YWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKIApAQCAtMjIyMSw3ICsyMTg5LDcgQEAgREVGSU5F
X1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAogCiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZy
YW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBD
b2RlRm9yQ29uc3RydWN0KTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNs
b3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxl
LCBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBpZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0
dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1l
LCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1l
LT5jYWxsZXJGcmFtZSgpKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJ
bnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pT
SW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAK
ICNpZm5kZWYgSlNJbnRlcmZhY2VKSVRfaAogI2RlZmluZSBKU0ludGVyZmFjZUpJVF9oCiAKKyNp
bmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2lu
Y2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1Zh
bHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlckZp
bGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENvbW1vbl9oCisjZGVmaW5lIExMSW50
Q29tbW9uX2gKKworI2RlZmluZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lORyAwCisjZGVmaW5lIExM
SU5UX0hFTFBFUl9UUkFDSU5HIDAKKworI2VuZGlmIC8vIExMSW50Q29tbW9uX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCisKKyNp
ZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkxv
d0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBMTEludCB7CisKK0RhdGE6OkRhdGEoKQorICAgIDogbV9leGNlcHRpb25J
bnN0cnVjdGlvbnMobmV3IEluc3RydWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdKQorICAgICwg
bV9vcGNvZGVNYXAobmV3IE9wY29kZVtudW1PcGNvZGVJRHNdKQoreworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAgICAgICBtX2V4Y2VwdGlvbklu
c3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJv
d19mcm9tX2hlbHBlcl90cmFtcG9saW5lKTsKKyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwg
bGVuZ3RoKSBtX29wY29kZU1hcFtvcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
IyNvcGNvZGUpOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkpOworI3VuZGVm
IE9QQ09ERV9FTlRSWQorfQorCitEYXRhOjp+RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9leGNl
cHRpb25JbnN0cnVjdGlvbnM7CisgICAgZGVsZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIExMSW50RGF0YV9oCisjZGVmaW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRlICJP
cGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKworI2lmIEVOQUJMRShM
TElOVCkKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIERhdGEoKTsKKyAgICB+RGF0YSgpOwor
ICAgIAorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAgICBP
cGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7Cisg
ICAgfQorcHJpdmF0ZToKKyAgICBJbnN0cnVjdGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7
CisgICAgT3Bjb2RlKiBtX29wY29kZU1hcDsKK307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQpCisK
KyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlm
CisKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0
cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
ICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgIH0KK307CisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50RGF0YV9oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRy
eXBvaW50cy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKworI2luY2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNs
dWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJMTEludFRodW5rcy5oIgorI2luY2x1ZGUg
Ikxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTElu
dCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2spCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVz
ZUpJVCgpKSB7CisgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAg
ICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSkpKSk7CisgICAgICAg
ICAgICBhcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lk
Kj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3Ry
dWN0KTsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9s
b2d1ZSkpKSk7CisgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVj
aykpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChraW5kID09IENvZGVG
b3JDYWxsKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1
YihmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuayk7CisgICAgICAgIGFyaXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVu
Y3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAg
ICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cisg
ICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVj
dEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpOworfQorCit2b2lkIGdldEV2YWxFbnRy
eXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAg
ICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENv
ZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2Vk
Q29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
ZXZhbF9wcm9sb2d1ZSkpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaml0
Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJh
dG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cit9CisKK3ZvaWQgZ2V0UHJvZ3JhbUVu
dHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQorewor
ICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklU
Q29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFn
ZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF9wcm9ncmFtX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1
bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKK30KKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludEVudHJ5cG9pbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludEVudHJ5cG9pbnRzX2gKKyNkZWZpbmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNs
dWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBFdmFsQ29kZUJsb2NrOworY2xhc3MgSklUQ29kZTsKK2NsYXNzIEpTR2xvYmFsRGF0YTsKK2Ns
YXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsK
K2NsYXNzIFByb2dyYW1Db2RlQmxvY2s7CisKK25hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0
RnVuY3Rpb25FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQs
IEpJVENvZGUmLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2spOwordm9pZCBnZXRF
dmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBKSVRDb2RlJik7Cit2b2lkIGdldFByb2dyYW1F
bnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKKworaW5saW5lIHZvaWQgZ2V0RW50
cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEV2YWxDb2RlQmxvY2sqLCBKSVRDb2Rl
JiBqaXRDb2RlKQoreworICAgIGdldEV2YWxFbnRyeXBvaW50KGdsb2JhbERhdGEsIGppdENvZGUp
OworfQorCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgUHJvZ3JhbUNvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0UHJvZ3Jh
bUVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnRFbnRyeXBvaW50c19oCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEV4
Y2VwdGlvbnMuaCIKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgorI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5o
IgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBpbnRlcnBy
ZXRlclRocm93KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAg
cHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24u
ZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhl
YywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBleGVjLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZz
ZXQoZXhlYywgZXhlYy0+cmV0dXJuUEMoKSkpOworfQorCitJbnN0cnVjdGlvbiogcmV0dXJuVG9U
aHJvd0ZvclRocm93bkV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIGV4
ZWMtPmdsb2JhbERhdGEoKS5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisK
K0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24q
IHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRh
KCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2Vw
dGlvbiAlcyAocmV0dXJuVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3Jp
cHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xv
YmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpKTsKKyAgICAKKyAgICByZXR1cm4gZ2xvYmFsRGF0YS0+bGxpbnREYXRhLmV4Y2Vw
dGlvbkluc3RydWN0aW9ucygpOworfQorCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4
ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAm
ZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRm
KCJUaHJvd2luZyBleGNlcHRpb24gJXMgKGNhbGxUb1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4
Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxE
YXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCkt
Pmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KCZsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKTsKK30KKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0
YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisvLyBKdXN0
IHRocm93IHRoZSBjdXJyZW50bHkgYWN0aXZlIGV4Y2VwdGlvbiBpbiB0aGUgY29udGV4dCBvZiB0
aGlzIGV4ZWMgc3RhdGUKKy8vIGFuZCBzZXQgdXAgYWxsIG5lY2Vzc2FyeSBzdGF0ZS4KK3ZvaWQg
aW50ZXJwcmV0ZXJUaHJvdyhFeGVjU3RhdGUqKTsKKworLy8gVGVsbHMgeW91IHdoZXJlIHRvIGp1
bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0dXJuLXRvLXRocm93LCBhZnRlciB5b3UndmUgYWxyZWFk
eQorLy8gc2V0IHVwIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gdGhyb3cgdGhlIGV4Y2VwdGlv
bi4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0
ZSopOworCisvLyBTYXZlcyB0aGUgY3VycmVudCBQQyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNh
ZmUta2VlcGluZywgYW5kIGdpdmVzIHlvdSBhIFBDCisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUg
aW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisvLyBh
bmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRv
IHRoZSBpbnRlcnByZXRlcidzCisvLyBleGNlcHRpb24gaGFuZGxlci4gTm90ZSB0aGF0IGlmIHlv
dSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nLAorLy8gaXQncyBzbWFydCBl
bm91Z2ggdG8ganVzdCByZXR1cm4gdGhhdCBQQyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7
IHRoaXMKKy8vIGxldHMgeW91IHRocmVhZCBleGNlcHRpb24gaGFuZGxpbmcgdGhyb3VnaCBjb21t
b24gaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5CisvLyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rp
b24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRo
aXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxsIHRodW5rLgordm9pZCogY2FsbFRvVGhy
b3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxM
SW50CisKKyNlbmRpZiAvLyBMTEludEV4Y2VwdGlvbnNfaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMzg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEhlbHBlcnMuaCIK
KworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1
ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIK
KyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJ
VERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTQnl0ZUFy
cmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5o
IgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUg
IkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAi
TG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKKyNkZWZpbmUgTExJTlRfT1AoaW5kZXgpIChl
eGVjLT51bmNoZWNrZWRSKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorI2RlZmluZSBMTElOVF9PUF9D
KGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5vcGVyYW5kKSkKKworI2RlZmluZSBMTElOVF9S
RVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsgICAgICAgXAorICAgICAgICB1bmlvbiB7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgc3RydWN0IHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGE7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGI7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSBwYWlyOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50NjRfdCBpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IF9fcnRfdTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5hID0gZmlyc3Q7ICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5iID0gc2Vjb25kOyAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19ydF91Lmk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORF9JTVBMKCkg
TExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykKKworI2RlZmluZSBMTElOVF9USFJPVyhleGNlcHRp
b25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2Jh
bERhdGEmIF9fdF9nbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOyAgICAgICAgXAorICAg
ICAgICBfX3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAg
ICAgICAgXAorICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisj
ZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSB7ICAg
XAorICAgICAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORCgpIGRvIHsg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
OyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQlJBTkNI
KG9wY29kZSwgY29uZGl0aW9uKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
Ym9vbCBfX2JfY29uZGl0aW9uID0gKGNvbmRpdGlvbik7ICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9fYl9jb25kaXRpb24pICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IHBjW09QQ09ERV9M
RU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsgICAgICAgIFwKKyAgICAgICAgZWxzZSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bjb2RlKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9S
RVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcl9y
ZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9PUCgxKSA9IF9fcl9yZXR1cm5W
YWx1ZTsgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfRU5E
X0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RXTygoY2FsbFRhcmdldCksIChl
eGVjKSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBleGNlcHRpb25Ub1Ro
cm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3RfZXhlYyA9
IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0
cnVjdGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fY3RfZ2xvYmFsRGF0YSA9IChfX2N0X2V4ZWMp
LT5nbG9iYWxEYXRhKCk7ICAgICAgXAorICAgICAgICBfX2N0X2dsb2JhbERhdGEuZXhjZXB0aW9u
ID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9D
QUxMX0VORF9JTVBMKF9fY3RfZXhlYywgY2FsbFRvVGhyb3coX19jdF9leGVjLCBfX2N0X3BjKSk7
IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQ
VElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVj
U3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jY2VfcGMgPSAocGMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoX19jY2VfZXhlYy0+
Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTExJ
TlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2NjZV9leGVjLCBfX2Nj
ZV9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9SRVRV
Uk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgRXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMgPSAocGMpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9pZCogX19jcl9jYWxsVGFy
Z2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
TExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19jcl9leGVjLT5jYWxsZXJGcmFtZSgpLCBfX2Ny
X3BjKTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NyX2V4ZWMsIF9fY3JfY2Fs
bFRhcmdldCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworZXh0ZXJu
ICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVj
LCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIHBy
aW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWRc
biIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAg
ICAgICAgICBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLAor
ICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBj
WzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJvbVdoZXJlLAorICAgICAgICAgICBvcGVyYW5k
LAorICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQpOworICAgIExMSU5UX0VORCgpOwor
fQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0
YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQor
eworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKG9wZXJhbmQpLmpzVmFsdWUoKTsKKyAg
ICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgZGVzY3JpcHRvci5hc0lu
dDY0ID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1
dGluZyBiYyMldSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkOiAlMDh4OiUwOHgiLAorICAgICAg
ICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgcGMg
LSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwKKyAgICAgICAgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29k
ZSksCisgICAgICAgICAgIGZyb21XaGVyZSwKKyAgICAgICAgICAgb3BlcmFuZCwKKyAgICAgICAg
ICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kLAorICAgICAgICAgICBkZXNjcmlwdG9yLmFzQml0cy50
YWcsCisgICAgICAgICAgIGRlc2NyaXB0b3IuYXNCaXRzLnBheWxvYWQpOworI2lmbmRlZiBOREVC
VUcKKyAgICBwcmludGYoIjogJXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAg
IHByaW50ZigiXG4iKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
dHJhY2VfcHJvbG9ndWUpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiBwcm9sb2d1ZS5cbiIs
IGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworc3RhdGlj
IHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciog
Y29tbWVudCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEpTRnVuY3Rpb24q
IGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7Cisg
ICAgcHJpbnRmKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsg
bnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZVJlZ2lzdGVycyA9ICV1
LlxuIiwKKyAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBjb21tZW50LCBjYWxsZWUsIGV4ZWN1
dGFibGUsCisgICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHRy
YWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBwcm9sb2d1ZSIsIENvZGVGb3JDYWxsKTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhl
YywgImNvbnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIExMSU5UX0VO
RCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQor
eworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBhcml0eSBjaGVjayIsIENv
ZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJh
Y2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1
ZShleGVjLCAiY29uc3RydWN0IGFyaXR5IGNoZWNrIiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKQoreworICAgIHByaW50
ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV1LCAiLAorICAgICAgICAgICBleGVjLT5jb2RlQmxv
Y2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgcGMgLSBleGVjLT5jb2RlQmxvY2so
KS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50Zigi
JXMsICIsIG9wY29kZU5hbWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQocGNbMF0udS5vcGNvZGUpXSk7CisjZWxzZQorICAgIHByaW50Zigib3AjJXUsICIsIGV4
ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUp
KTsKKyNlbmRpZgorICAgIHByaW50Zigic2NvcGUgJXBcbiIsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2Up
Cit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV1LCBv
cCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwK
KyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGV4ZWMtPnJl
dHVyblBDKCkudmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2lubGluZSBib29sIHNo
b3VsZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gWW91IGNhbiBtb2RpZnkgdGhpcyB0
byB0dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0aGUgd29ybGQuCisgICAgcmV0
dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKTsKK30KKworZW51bSBFbnRyeUtpbmQg
eyBQcm9sb2d1ZSwgQXJpdHlDaGVjayB9Oworc3RhdGljIEhlbHBlclJldHVyblR5cGUgZW50cnlP
U1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBjb25zdCBjaGFyICpuYW1lLCBFbnRyeUtpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUoSklUX1ZF
UkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgJXMgd2l0aCBleGVjdXRlQ291bnRl
ciA9ICVkXG4iLCBjb2RlQmxvY2ssIG5hbWUsIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRl
cigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAg
IGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9U
V08oMCwgZXhlYyk7CisgICAgfQorICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMp
KSB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICAgICAgcHJpbnRmKCIgICAgQ29k
ZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlmCisgICAgfQorICAgIGNvZGVCbG9j
ay0+aml0U29vbigpOworICAgIGlmIChraW5kID09IFByb2xvZ3VlKQorICAgICAgICBMTElOVF9S
RVRVUk5fVFdPKGNvZGVCbG9jay0+Z2V0SklUQ29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZz
ZXQoMCksIGV4ZWMpOworICAgIEFTU0VSVChraW5kID09IEFyaXR5Q2hlY2spOworICAgIExMSU5U
X1JFVFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRDb2RlV2l0aEFyaXR5Q2hlY2soKS5leGVjdXRh
YmxlQWRkcmVzcygpLCBleGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKQor
eworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgZXhlYy0+Y29kZUJsb2NrKCksICJlbnRy
eV9vc3IiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY2FsbCkKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0
aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9y
KENvZGVGb3JDYWxsKSwgImVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCIsIFByb2xvZ3VlKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Qp
Cit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxs
ZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ29uc3Ry
dWN0KSwgImVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0IiwgUHJvbG9ndWUpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVj
aykKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNh
bGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDYWxs
KSwgImVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrIiwgQXJpdHlDaGVjayk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X2FyaXR5Q2hlY2spCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlv
bihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihD
b2RlRm9yQ29uc3RydWN0KSwgImVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5
Q2hlY2siLCBBcml0eUNoZWNrKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wobG9vcF9vc3IpCit7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAKKyNp
ZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgbG9vcF9v
c3Igd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+bGxp
bnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4
ZWMpKSB7CisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAg
IExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIAorICAgIGlmICghY29kZUJs
b2NrLT5qaXRDb21waWxlKGV4ZWMpKSB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAg
ICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlm
CisgICAgfQorICAgIGNvZGVCbG9jay0+aml0U29vbigpOworICAgIAorICAgIEFTU0VSVChjb2Rl
QmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgCisgICAg
VmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gbWFwOworICAgIGNvZGVCbG9jay0+aml0
Q29kZU1hcCgpLT5kZWNvZGUobWFwKTsKKyAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQqIG1h
cHBpbmcgPSBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25lZCwg
Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29kZUluZGV4PihtYXAuYmVnaW4oKSwg
bWFwLnNpemUoKSwgcGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAg
IEFTU0VSVChtYXBwaW5nKTsKKyAgICBBU1NFUlQobWFwcGluZy0+bV9ieXRlY29kZUluZGV4ID09
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwYyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVn
aW4oKSkpOworICAgIAorICAgIHZvaWQqIGp1bXBUYXJnZXQgPSBjb2RlQmxvY2stPmdldEpJVENv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KG1hcHBpbmctPm1fbWFjaGluZUNvZGVPZmZz
ZXQpOworICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk5fVFdP
KGp1bXBUYXJnZXQsIGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKQorewor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgCisjaWYg
RU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkIHJlcGxhY2Ug
d2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+bGxpbnRF
eGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmIChzaG91bGRKSVQoZXhlYykp
IHsKKyAgICAgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYykpIHsKKyNpZiBFTkFC
TEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxy
ZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgY29kZUJsb2Nr
LT5qaXRTb29uKCk7CisgICAgfSBlbHNlCisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRp
bWVTb29uKCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lz
dGVyX2ZpbGVfY2hlY2spCit7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYo
IkNoZWNraW5nIHN0YWNrIGhlaWdodCB3aXRoIGV4ZWMgPSAlcC5cbiIsIGV4ZWMpOworICAgIHBy
aW50ZigiQ29kZUJsb2NrID0gJXAuXG4iLCBleGVjLT5jb2RlQmxvY2soKSk7CisgICAgcHJpbnRm
KCJOdW0gY2FsbGVlIHJlZ2lzdGVycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVt
Q2FsbGVlUmVnaXN0ZXJzKTsKKyAgICBwcmludGYoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5j
b2RlQmxvY2soKS0+bV9udW1WYXJzKTsKKyAgICBwcmludGYoIkN1cnJlbnQgZW5kIGlzIGF0ICVw
LlxuIiwgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5lbmQo
KSk7CisjZW5kaWYKKyAgICBBU1NFUlQoJmV4ZWMtPnJlZ2lzdGVycygpW2V4ZWMtPmNvZGVCbG9j
aygpLT5tX251bUNhbGxlZVJlZ2lzdGVyc10gPiBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0
ZXItPnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWV4ZWMtPmdsb2Jh
bERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJz
KClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7CisgICAgICAg
IGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCku
ZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRl
cnByZXRlclRocm93KGV4ZWMpOworICAgICAgICBwYyA9IHJldHVyblRvVGhyb3dGb3JUaHJvd25F
eGNlcHRpb24oZXhlYyk7CisgICAgfQorICAgIExMSU5UX0VORF9JTVBMKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0YXRlKiBu
ZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5nbG9i
YWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ2FsbCk7CisgICAg
aWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAg
ICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vy
cm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93KGV4ZWMpOworICAgICAgICBMTElO
VF9SRVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oMSksIGV4ZWMpOworICAgIH0KKyAgICBM
TElOVF9SRVRVUk5fVFdPKDAsIG5ld0V4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29t
bW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50
ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBpZiAoIW5l
d0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4
ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhl
Yyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3coZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVS
Tl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPigxKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JF
VFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVh
dGVfYWN0aXZhdGlvbikKK3sKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50Zigi
Q3JlYXRpbmcgYW4gYWN0aXZhdGlvbiwgZXhlYyA9ICVwIVxuIiwgZXhlYyk7CisjZW5kaWYKKyAg
ICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBKU0FjdGl2YXRpb246OmNyZWF0ZShleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMsIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWMt
PmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSkpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hh
aW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2YXRpb24pKTsKKyAgICBMTElOVF9SRVRV
Uk4oSlNWYWx1ZShhY3RpdmF0aW9uKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
cmVhdGVfYXJndW1lbnRzKQoreworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1
bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpKTsKKyAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFuZCkgPSBh
cmd1bWVudHM7CisgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0
ZXIocGNbMV0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAgICBKU0Z1bmN0aW9u
KiBjb25zdHJ1Y3RvciA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIAorI2lmICFB
U1NFUlRfRElTQUJMRUQKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQVNT
RVJUKGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVj
dG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlmCisgICAgCisg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgSlNWYWx1ZSBwcm90byA9IExMSU5UX09QKDIp
LmpzVmFsdWUoKTsKKyAgICBpZiAocHJvdG8uaXNPYmplY3QoKSkKKyAgICAgICAgc3RydWN0dXJl
ID0gYXNPYmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkpOworICAg
IGVsc2UKKyAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCktPmdsb2JhbE9i
amVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oY29u
c3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpCit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QKDEp
LmpzVmFsdWUoKTsKKyAgICBBU1NFUlQodjEuaXNQcmltaXRpdmUoKSk7CisgICAgTExJTlRfUkVU
VVJOKHYxLnRvVGhpc09iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uZXdfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChl
eGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpCit7CisgICAg
TExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4o
JkxMSU5UX09QKDIpKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RB
cnJheShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIocGNbMl0udS5vcGVy
YW5kKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXdfcmVnZXhwKQoreworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29kZUJsb2NrKCktPnJl
Z2V4cChwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCisgICAg
ICAgIExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIGZsYWcgc3Vw
cGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9SRVRVUk4oUmVnRXhw
T2JqZWN0OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJl
Z0V4cCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KQoreworICAgIExMSU5U
X1JFVFVSTihqc0Jvb2xlYW4oIUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVj
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9uZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6ZXF1YWwo
ZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbigh
SlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVz
cykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVlPihleGVjLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVh
dGVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPGZhbHNlPihleGVjLCBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHJlX2luYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNW
YWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICsgMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHJlX2RlYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNW
YWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcG9zdF9pbmMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUo
KS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCArIDEp
OworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Bvc3RfZGVjKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgy
KS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihy
ZXN1bHQgLSAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcikKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoLUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpCit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KTsKKyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVHJ5aW5nIHRv
IGFkZCAlcyIsIHYxLmRlc2NyaXB0aW9uKCkpOworICAgIHByaW50ZigiIHRvICVzLlxuIiwgdjIu
ZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNTdHJpbmcoKSkgewor
ICAgICAgICBMTElOVF9SRVRVUk4oCisgICAgICAgICAgICB2Mi5pc1N0cmluZygpCisgICAgICAg
ICAgICA/IGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgYXNTdHJpbmcodjIpKQorICAgICAg
ICAgICAgOiBqc1N0cmluZyhleGVjLCBhc1N0cmluZyh2MSksIHYyLnRvUHJpbWl0aXZlU3RyaW5n
KGV4ZWMpKSk7CisgICAgfQorICAgIAorICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVt
YmVyKCkpCisgICAgICAgIExMSU5UX1JFVFVSTihqc051bWJlcih2MS5hc051bWJlcigpICsgdjIu
YXNOdW1iZXIoKSkpOworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0FkZFNsb3dDYXNlKGV4ZWMs
IHYxLCB2MikpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKQoreworICAgIExM
SU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVj
KSAqIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rp
dikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYykgLyBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKQoreworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihmbW9kKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpLCBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2xzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA8PCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcnNo
aWZ0KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KS50b0ludDMyKGV4ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KQoreworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSA+
PiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfYml0YW5kKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpICYgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0
b3IpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgp
LnRvSW50MzIoZXhlYykgfCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgXiBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9iaXRub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKH5MTElOVF9P
UF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsID0gTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCk7CisjaWZuZGVmIE5ERUJVRworICAgIFR5cGVJbmZvIHR5cGVJ
bmZvKFVuc3BlY2lmaWVkVHlwZSk7CisgICAgQVNTRVJUKCFiYXNlVmFsLmlzT2JqZWN0KCkKKyAg
ICAgICAgICAgfHwgISh0eXBlSW5mbyA9IGFzT2JqZWN0KGJhc2VWYWwpLT5zdHJ1Y3R1cmUoKS0+
dHlwZUluZm8oKSkuaW1wbGVtZW50c0hhc0luc3RhbmNlKCkpOworI2VuZGlmCisgICAgTExJTlRf
VEhST1coY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoZXhlYywgImluc3RhbmNlb2YiLCBiYXNlVmFs
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9mKQoreworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluc3RhbmNlT2ZTbG93KGV4
ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQyg0KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90
eXBlb2YpCit7CisgICAgTExJTlRfUkVUVVJOKGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c191bmRlZmluZWQpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7
CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbih2LmlzQ2VsbCgpID8gdi5hc0NlbGwoKS0+c3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpIDogdi5pc1VuZGVm
aW5lZCgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkuaXNCb29s
ZWFuKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJlcikKK3sKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLmlzTnVtYmVy
KCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZykKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNCb29sZWFuKGlzSlNTdHJpbmcoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3QpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzT2JqZWN0VHlwZShMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKQoreworICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc0Z1bmN0aW9uVHlwZShMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luKQoreworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluKGV4ZWMsIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpCit7CisgICAgTExJTlRfUkVUVVJOKENvbW1vblNs
b3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBj
WzJdLnUub3BlcmFuZCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVf
c2tpcCkKK3sKKyAgICBMTElOVF9SRVRVUk4oCisgICAgICAgIENvbW1vblNsb3dQYXRoczo6b3BS
ZXNvbHZlU2tpcCgKKyAgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgICBleGVjLT5jb2RlQmxv
Y2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAgICAgICAgICAgcGNbM10udS5v
cGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCkK
K3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOwor
ICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkpOworICAgIGludCBwcm9w
ZXJ0eSA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHBjWzNd
LnUuc3RydWN0dXJlLmdldCgpOworICAgIAorICAgIEFTU0VSVF9VTlVTRUQoc3RydWN0dXJlLCBz
dHJ1Y3R1cmUgIT0gZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgCisgICAgSWRlbnRp
ZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpOworICAgIFByb3Bl
cnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCk7CisgICAgCisgICAgaWYgKGdsb2JhbE9iamVjdC0+
Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkgeworICAgICAgICBKU1ZhbHVlIHJl
c3VsdCA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpOworICAgICAgICBpZiAoc2xvdC5pc0Nh
Y2hlYWJsZVZhbHVlKCkgJiYgIWdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFi
bGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBnbG9iYWxP
YmplY3QpIHsKKyAgICAgICAgICAgIHBjWzNdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAg
ICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGds
b2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgcGNbNF0gPSBzbG90LmNhY2hl
ZE9mZnNldCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBMTElOVF9SRVRVUk4ocmVz
dWx0KTsKKyAgICB9CisgICAgCisgICAgTExJTlRfVEhST1coY3JlYXRlVW5kZWZpbmVkVmFyaWFi
bGVFcnJvcihleGVjLCBpZGVudCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVz
b2x2ZV9iYXNlKQoreworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCkt
PmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAocGNbM10udS5vcGVyYW5kKSB7
CisgICAgICAgIEpTVmFsdWUgYmFzZSA9IEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4
ZWMtPnNjb3BlQ2hhaW4oKSwgdHJ1ZSk7CisgICAgICAgIGlmICghYmFzZSkKKyAgICAgICAgICAg
IExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhlYywg
aWRlbnQudXN0cmluZygpKSk7CisgICAgICAgIExMSU5UX1JFVFVSTihiYXNlKTsKKyAgICB9Cisg
ICAgCisgICAgTExJTlRfUkVUVVJOKEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMt
PnNjb3BlQ2hhaW4oKSwgZmFsc2UpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vu
c3VyZV9wcm9wZXJ0eV9leGlzdHMpCit7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0
KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsK
KyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBj
WzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBp
ZGVudCwgc2xvdCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEds
b2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKK3sKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aEJhc2UoZXhl
YywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRf
T1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0g
cmVzdWx0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cmVzb2x2ZV93aXRoX3RoaXMpCit7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0
aHM6Om9wUmVzb2x2ZVdpdGhUaGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVy
KHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29k
ZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNl
VmFsdWUpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50
LCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgxKSA9
IHJlc3VsdDsKKworICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5p
c0NhY2hlYWJsZSgpCisgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUKKyAg
ICAgICAgJiYgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OlZhbHVl
KSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2Vs
bCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUo
KTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlv
bmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1By
b3BlcnR5Q2FjaGluZygpKSB7CisgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisg
ICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0
YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5j
YWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1
bWVudHNfbGVuZ3RoKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJs
b2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNb
M10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFs
dWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworICAgIExMSU5UX1JFVFVS
TihiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wdXRfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVj
LT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRp
ZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1Bf
QygxKS5qc1ZhbHVlKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKSk7CisgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAgICAgYXNPYmplY3Qo
YmFzZVZhbHVlKS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgaWRlbnQsIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICBlbHNlCisgICAgICAgIGJhc2VWYWx1ZS5wdXQo
ZXhlYywgaWRlbnQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCisgICAg
ICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKSkgeworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBi
YXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVj
dHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVy
ZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKQorICAgICAgICAgICAgJiYg
YmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYg
KHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgc3RydWN0dXJlLT5wcmV2
aW91c0lEKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gc3RydWN0dXJlLT5wcm9wZXJ0
eVN0b3JhZ2VDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZVByb3Rv
dHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCisgICAgICAgICAgICAg
ICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAg
ICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1
cmUtPnByZXZpb3VzSUQoKSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9
IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAg
ICAgIHBjWzZdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMt
Pmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsK
KyAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5w
cm90b3R5cGVDaGFpbihleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsK
KyAgICAgICAgICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAg
ICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCksIGNoYWluKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5z
ZXQoCisgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9w
ZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKS50b09iamVjdChleGVjKTsKKyAgICBib29sIGNvdWxkRGVsZXRl
ID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwg
ZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCkpOworICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOworICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQoreworICAgIGlm
IChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgewor
ICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRP
d25Qcm9wZXJ0eShleGVjLCBhc1N0cmluZyhzdWJzY3JpcHQpLT52YWx1ZShleGVjKSkpCisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBpZiAoc3Vic2NyaXB0Lmlz
VUludDMyKCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOwor
ICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSkt
PmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGJhc2VWYWx1ZSkt
PmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXko
YmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkK
KyAgICAgICAgICAgIHJldHVybiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5nZXRJbmRleChleGVj
LCBpKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGkpOwor
ICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0
cmluZyhleGVjKSk7CisgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVydHkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9S
RVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1l
bnRfYnlfdmFsKQoreworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gTExJTlRfT1AoMikuanNWYWx1
ZSgpOworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAgICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50
czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYyk7CisgICAgICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOworICAgICAgICBMTElOVF9PUCgyKSA9IGFyZ3VtZW50czsKKyAgICAgICAg
ZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVy
YW5kKSkgPSBhcmd1bWVudHM7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihnZXRCeVZh
bChleGVjLCBhcmd1bWVudHMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpCit7CisgICAgTExJTlRfUkVUVVJOKGdl
dEJ5VmFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFsKQoreworICAgIEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUg
c3Vic2NyaXB0ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0
LmlzVUludDMyKCkpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIo
KTsKKyAgICAgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUpKSB7CisgICAgICAgICAgICBKU0Fy
cmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYgKGpzQXJy
YXktPmNhblNldEluZGV4KGkpKQorICAgICAgICAgICAgICAgIGpzQXJyYXktPnNldEluZGV4KGds
b2JhbERhdGEsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBK
U0FycmF5OjpwdXRCeUluZGV4KGpzQXJyYXksIGV4ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgICAg
IExMSU5UX0VORCgpOworICAgICAgICB9CisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VW
YWx1ZSkKKyAgICAgICAgICAgICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0lu
ZGV4KGkpKSB7CisgICAgICAgICAgICBKU0J5dGVBcnJheSoganNCeXRlQXJyYXkgPSBhc0J5dGVB
cnJheShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkgeworICAg
ICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5hc0ludDMyKCkpOwor
ICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0
SW5kZXgoaSwgdmFsdWUuYXNOdW1iZXIoKSk7CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBp
LCB2YWx1ZSk7CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlm
aWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7CisgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZXhlYy0+Y29kZUJs
b2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIHByb3BlcnR5
LCB2YWx1ZSwgc2xvdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9kZWxfYnlfdmFsKQoreworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUudG9P
YmplY3QoZXhlYyk7CisgICAgCisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKTsKKyAgICAKKyAgICBib29sIGNvdWxkRGVsZXRlOworICAgIAorICAgIHVpbnQz
Ml90IGk7CisgICAgaWYgKHN1YnNjcmlwdC5nZXRVSW50MzIoaSkpCisgICAgICAgIGNvdWxkRGVs
ZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KGJh
c2VPYmplY3QsIGV4ZWMsIGkpOworICAgIGVsc2UgeworICAgICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9T
dHJpbmcoZXhlYykpOworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAg
Y291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShi
YXNlT2JqZWN0LCBleGVjLCBwcm9wZXJ0eSk7CisgICAgfQorICAgIAorICAgIGlmICghY291bGRE
ZWxldGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElO
VF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHku
IikpOworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCkKK3sKKyAgICBMTElOVF9P
UF9DKDEpLmpzVmFsdWUoKS5wdXQoZXhlYywgcGNbMl0udS5vcGVyYW5kLCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wdXRfZ2V0dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNP
YmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5q
c1ZhbHVlKCkpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlk
ZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNWYWx1
ZSgpLmlzT2JqZWN0KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZUdldHRl
cihiYXNlT2JqLCBleGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgpKSwg
MCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRf
c2V0dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7
CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkp
OworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIo
cGNbMl0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNWYWx1ZSgpLmlzT2Jq
ZWN0KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZVNldHRlcihiYXNlT2Jq
LCBleGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKQor
eworICAgIHVuc2lnbmVkIGNvdW50ID0gcGNbMV0udS5vcGVyYW5kOworICAgIFNjb3BlQ2hhaW5O
b2RlKiB0bXAgPSBleGVjLT5zY29wZUNoYWluKCk7CisgICAgd2hpbGUgKGNvdW50LS0pCisgICAg
ICAgIHRtcCA9IHRtcC0+cG9wKCk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbih0bXApOworICAg
IHBjICs9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2p0cnVlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qdHJ1ZSwgTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2pmYWxzZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamZhbHNlLCAhTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2psZXNzKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzcywganNMZXNz
PHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKQoreworICAgIExM
SU5UX0JSQU5DSChvcF9qbmxlc3MsICFqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9qZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXIsIGpz
TGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSku
anNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpCit7
CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlciwgIWpzTGVzczxmYWxzZT4oZXhlYywgTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9q
bGVzc2VxLCBqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pu
bGVzc2VxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmxlc3NlcSwgIWpzTGVzc0VxPHRydWU+
KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSkKK3sKKyAgICBMTElO
VF9CUkFOQ0gob3BfamdyZWF0ZXJlcSwganNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfam5ncmVhdGVyZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3Jl
YXRlcmVxLCAhanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBM
TElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
c3dpdGNoX2ltbSkKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QX0MoMykuanNW
YWx1ZSgpOworICAgIEFTU0VSVChzY3J1dGluZWUuaXNEb3VibGUoKSk7CisgICAgZG91YmxlIHZh
bHVlID0gc2NydXRpbmVlLmFzRG91YmxlKCk7CisgICAgaW50MzJfdCBpbnRWYWx1ZSA9IHN0YXRp
Y19jYXN0PGludDMyX3Q+KHZhbHVlKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUu
b3BlcmFuZDsKKyAgICBpZiAodmFsdWUgPT0gaW50VmFsdWUpIHsKKyAgICAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2Nr
LT5pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1
ZShpbnRWYWx1ZSwgZGVmYXVsdE9mZnNldCk7CisgICAgfSBlbHNlCisgICAgICAgIHBjICs9IGRl
ZmF1bHRPZmZzZXQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9zd2l0Y2hfc3RyaW5nKQoreworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7
CisgICAgaWYgKCFzY3J1dGluZWUuaXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9m
ZnNldDsKKyAgICBlbHNlIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFi
bGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGluZWUpLT52
YWx1ZShleGVjKS5pbXBsKCksIGRlZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKQoreworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9j
ay0+Y29kZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUKKyAgICAgICAgICAgfHwgIWNvZGVCbG9jay0+
bmVlZHNGdWxsU2NvcGVDaGFpbigpCisgICAgICAgICAgIHx8IGV4ZWMtPnVuY2hlY2tlZFIoY29k
ZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKKyNpZiBMTElOVF9IRUxQ
RVJfVFJBQ0lORworICAgIHByaW50ZigiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKKyNlbmRpZgor
ICAgIExMSU5UX1JFVFVSTihjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1syXS51Lm9wZXJhbmQp
LT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbmV3X2Z1bmNfZXhwKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVC
bG9jay0+ZnVuY3Rpb25FeHByKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNGdW5jdGlvbiogZnVu
YyA9IGZ1bmN0aW9uLT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgCisgICAg
aWYgKCFmdW5jdGlvbi0+bmFtZSgpLmlzTnVsbCgpKSB7CisgICAgICAgIEpTU3RhdGljU2NvcGVP
YmplY3QqIGZ1bmN0aW9uU2NvcGVPYmplY3QgPSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUo
ZXhlYywgZnVuY3Rpb24tPm5hbWUoKSwgZnVuYywgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAg
ICAgICAgZnVuYy0+c2V0U2NvcGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jLT5zY29wZSgpLT5w
dXNoKGZ1bmN0aW9uU2NvcGVPYmplY3QpKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJO
KGZ1bmMpOworfQorCitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxsZWUsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2Fs
bGVlLT5jYWxsZXJGcmFtZSgpOworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVj
LT5nbG9iYWxEYXRhKCk7CisKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNj
b3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworCisgICAgaWYg
KGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAg
ICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoY2FsbGVlLCBjYWxsRGF0YSk7Cisg
ICAgCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZUpTKTsKKyAgICAKKyAgICAg
ICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSG9zdCkgeworICAgICAgICAgICAgZ2xvYmFsRGF0
YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUu
ZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBMTElOVF9D
QUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkpOworICAgICAgICB9CisgICAgICAgIAorI2lmIExMSU5UX0hFTFBF
Ul9UUkFDSU5HCisgICAgICAgIHByaW50ZigiQ2FsbCBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246
ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgICAgICBBU1NFUlQo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKTsKKyAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVj
LCBwYywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CisgICAgfQorCisg
ICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgCisgICAgQ29uc3RydWN0
RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdl
dENvbnN0cnVjdERhdGEoY2FsbGVlLCBjb25zdHJ1Y3REYXRhKTsKKyAgICAKKyAgICBBU1NFUlQo
Y29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlSlMpOworICAgIAorICAgIGlmIChjb25zdHJ1
Y3RUeXBlID09IENvbnN0cnVjdFR5cGVIb3N0KSB7CisgICAgICAgIGdsb2JhbERhdGEtPmhvc3RD
YWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVu
Y3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVl
LCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwor
ICAgIH0KKyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgICAgICBwcmludGYoIkNv
bnN0cnVjdG9yIGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNjcmlw
dGlvbigpKTsKKyNlbmRpZgorCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0
VHlwZU5vbmUpOworICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFDb25z
dHJ1Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJuVHlw
ZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCwgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlLCBMTEludENhbGxM
aW5rSW5mbyogY2FsbExpbmtJbmZvID0gMCkKK3sKKyAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rp
b25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKKyAgICBpZiAoIWNhbGxlZUFz
RnVuY3Rpb25DZWxsKQorICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwg
cGMsIGNhbGxlZUFzVmFsdWUsIGtpbmQpOworICAgIAorICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9
IGFzRnVuY3Rpb24oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOworICAgIGV4ZWNDYWxsZWUtPnNldFNj
b3BlQ2hhaW4oY2FsbGVlLT5zY29wZVVuY2hlY2tlZCgpKTsKKyAgICBFeGVjdXRhYmxlQmFzZSog
ZXhlY3V0YWJsZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOworICAgIAorICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciBjb2RlUHRyOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKKyAgICBp
ZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgY29kZVB0ciA9IGV4ZWN1
dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICBl
bHNlIHsKKyAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICAgICAgSlNP
YmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21waWxlRm9yKGV4ZWNDYWxsZWUs
IGNhbGxlZS0+c2NvcGUoKSwga2luZCk7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAg
IExMSU5UX0NBTExfVEhST1coZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKSwgcGMsIGVycm9yKTsK
KyAgICAgICAgY29kZUJsb2NrID0gJmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNv
ZGVGb3Ioa2luZCk7CisgICAgICAgIEFTU0VSVChjb2RlQmxvY2spOworICAgICAgICBpZiAoZXhl
Y0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVf
dD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1
bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxl
LT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgfQorICAg
IAorICAgIGlmIChjYWxsTGlua0luZm8pIHsKKyAgICAgICAgaWYgKGNhbGxMaW5rSW5mby0+aXNP
bkxpc3QoKSkKKyAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+cmVtb3ZlKCk7CisgICAgICAgIEV4
ZWNTdGF0ZSogZXhlY0NhbGxlciA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgICAg
IGNhbGxMaW5rSW5mby0+Y2FsbGVlLnNldChleGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4ZWND
YWxsZXItPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAgICAg
Y2FsbExpbmtJbmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9IGNvZGVQdHI7CisgICAgICAgIGlmIChj
b2RlQmxvY2spCisgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbExp
bmtJbmZvKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwg
cGMsIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1
cm5UeXBlIGdlbmVyaWNDYWxsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAv
LyAtIFNldCB1cCBhIGNhbGwgZnJhbWUuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2Fs
bCBhbmQgY29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBJZiBwb3NzaWJsZSwgbGlu
ayB0aGUgY2FsbCdzIGlubGluZSBjYWNoZS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1h
Y2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAK
KyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAg
ICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOwor
ICAgIAorICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJd
LnUub3BlcmFuZCk7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNh
bGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4
ZWMpOworICAgIAorICAgIEFTU0VSVChwY1s0XS51LmNhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJu
IHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywga2luZCwgY2FsbGVlQXNWYWx1ZSwgcGNbNF0udS5j
YWxsTGlua0luZm8pOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCkKK3sKKyAg
ICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDYWxsKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwo
ZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY2FsbF92YXJhcmdzKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQg
dXAgYSBjYWxsIGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4K
KyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vz
c2FyeS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRv
IGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFz
VmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4
ZWNDYWxsZWUgPSBsb2FkVmFyYXJncygKKyAgICAgICAgZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEo
KS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksCisgICAgICAgIExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5vcGVyYW5kKTsKKyAgICBM
TElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYyk7CisgICAgCisgICAgZXhlY0NhbGxl
ZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAg
IGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIo
UmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90
PihwYyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSk7CisgICAgCisgICAgcmV0dXJu
IHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKQoreworICAgIEpTVmFsdWUg
Y2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3Rh
dGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBleGVjQ2FsbGVl
LT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4
ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tl
ZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVl
LT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0
UmV0dXJuUEMoYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4oJmxsaW50X2dlbmVyaWNfcmV0dXJu
X3BvaW50KSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworICAgIGV4ZWMtPnVu
Y2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2Fz
dDxpbnQzMl90PihwYyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7CisgICAgCisgICAg
aWYgKCFpc0hvc3RGdW5jdGlvbihjYWxsZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpCisgICAg
ICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVB
c1ZhbHVlKTsKKyAgICAKKyAgICBnbG9iYWxEYXRhLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBldmFs
KGV4ZWNDYWxsZWUpOworICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQoreworICAgIEFTU0VSVChl
eGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBKU1ZhbHVlIGFj
dGl2YXRpb25WYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFjdGl2YXRp
b25WYWx1ZSkgeworICAgICAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1v
ZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKSB7Cisg
ICAgICAgICAgICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAg
ICAgICAgICAgICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAgfQorICAg
ICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0g
YXNBY3RpdmF0aW9uKGFjdGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihl
eGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRS
KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkp
CisgICAgICAgIGFzQXJndW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIGFjdGl2YXRpb24pOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQoreworICAgIEFTU0VSVChleGVjLT5j
b2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygpICYmICFleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNG
dWxsU2NvcGVDaGFpbigpKTsKKyAgICBhc0FyZ3VtZW50cyhleGVjLT51bmNoZWNrZWRSKHVubW9k
aWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpLT50ZWFy
T2ZmKGV4ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfc3RyY2F0KQoreworICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhleGVjLCAmTExJTlRfT1Ao
MiksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9f
cHJpbWl0aXZlKQoreworICAgIExMSU5UX1JFVFVSTihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50
b1ByaW1pdGl2ZShleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5h
bWVzKQoreworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAo
di5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBjICs9IHBjWzVdLnUub3BlcmFuZDsK
KyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBvID0gdi50
b09iamVjdChleGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVjdHVyZSgp
OworICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBz
dHJ1Y3R1cmUtPmVudW1lcmF0aW9uQ2FjaGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlOYW1lSXRl
cmF0b3IgfHwganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4oKSAh
PSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpKQorICAgICAgICBqc1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8pOworICAg
IAorICAgIExMSU5UX09QKDEpID0gSlNWYWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKKyAg
ICBMTElOVF9PUCgyKSA9IEpTVmFsdWUobyk7CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rlcjo6
d2l0aEludCgwKTsKKyAgICBMTElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJvcGVy
dHlOYW1lSXRlcmF0b3ItPnNpemUoKSk7CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChv
cF9nZXRfcG5hbWVzKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25leHRfcG5hbWUpCit7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChMTElO
VF9PUCgyKS5qc1ZhbHVlKCkpOworICAgIEpTU3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3RyaW5nKExM
SU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgaWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgcHJvcGVydHktPnZhbHVlKGV4ZWMpKSkpIHsKKyAgICAgICAgLy8gR28g
dG8gdGFyZ2V0LgorICAgICAgICBwYyArPSBwY1s2XS51Lm9wZXJhbmQ7CisgICAgfSAvLyBFbHNl
LCBkb24ndCBjaGFuZ2UgdGhlIFBDLCBzbyB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxvb3AuCisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3Bl
KQoreworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVj
dCogbyA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgCisgICAgTExJTlRfT1AoMSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+
c2NvcGVDaGFpbigpLT5wdXNoKG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSkKK3sKKyAgICBleGVjLT5zZXRTY29wZUNo
YWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cG9wKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpCit7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogc2NvcGUgPSBK
U1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBj
WzJdLnUub3BlcmFuZCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgRG9udERlbGV0ZSk7CisgICAg
ZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goc2NvcGUpKTsKKyAg
ICBMTElOVF9SRVRVUk4oc2NvcGUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhy
b3cpCit7CisgICAgTExJTlRfVEhST1coTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQoreworICAgIExM
SU5UX1RIUk9XKGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1
ZSgpLnRvU3RyaW5nKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1
ZykKK3sKKyAgICBpbnQgZGVidWdIb29rSUQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgaW50IGZp
cnN0TGluZSA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgbGFzdExpbmUgPSBwY1szXS51Lm9w
ZXJhbmQ7CisgICAgCisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5kZWJ1Zyhl
eGVjLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxh
c3RMaW5lKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQoreworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9m
aWxlclJlZmVyZW5jZSgpKS0+d2lsbEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1ZSgp
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2Zp
bGVfZGlkX2NhbGwpCit7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNl
KCkpLT5kaWRFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIExMSW50SGVscGVyc19oCisjZGVmaW5lIExMSW50SGVscGVyc19oCisKKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBF
eGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKK3R5
cGVkZWYgaW50NjRfdCBIZWxwZXJSZXR1cm5UeXBlOworCitleHRlcm4gIkMiIEhlbHBlclJldHVy
blR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBm
cm9tV2hlcmUsIGludCBvcGVyYW5kKTsKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGlu
dF90cmFjZV92YWx1ZShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGlu
dCBvcGVyYW5kKTsKKworI2RlZmluZSBMTElOVF9IRUxQRVJfREVDTChuYW1lKSBcCisgICAgZXh0
ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50XyMjbmFtZShFeGVjU3RhdGUqIGV4ZWMsIElu
c3RydWN0aW9uKiBwYykKKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpOworTExJ
TlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRf
SEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElO
VF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0
cmFjZSk7CitMTElOVF9IRUxQRVJfREVDTChzcGVjaWFsX3RyYWNlKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGVudHJ5X29zcik7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9y
X2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChsb29wX29zcik7CitMTElOVF9IRUxQ
RVJfREVDTChyZXBsYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2sp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVh
dGVfYXJndW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29udmVydF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25ld19yZWdleHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25v
dCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25lcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25zdHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVz
cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3ByZV9kZWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
dG9fanNudW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfYWRkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1Yik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
ZGl2KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2QpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2xzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9i
aXRhbmQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG9yKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9iaXR4b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9pbnN0YW5jZW9mKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBl
b2YpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNf
bnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19zdHJpbmcpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2lzX29iamVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNf
ZnVuY3Rpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9yZXNvbHZlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3Nr
aXApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmVfd2l0aF9iYXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhp
cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHV0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2dldF9hcmd1bWVudF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9i
eV9wbmFtZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHV0X2J5X2luZGV4KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfc2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qbXBfc2NvcGVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qdHJ1ZSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfamZhbHNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9qZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVy
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbmxlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3N3aXRjaF9pbW0pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9j
aGFyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3
X2Z1bmNfZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxf
dmFyYXJncyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0
cmNhdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXh0X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3B1c2hfbmV3X3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9kZWJ1Zyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93
aWxsX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpOwor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50SGVscGVyc19o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25m
aWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZs
aW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBM
TEludE9mZmxpbmVBc21Db25maWdfaAorI2RlZmluZSBMTEludE9mZmxpbmVBc21Db25maWdfaAor
CisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4NikKKyNkZWZpbmUgT0ZGTElO
RV9BU01fWDg2IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisjZW5kaWYKKwor
I2lmIENQVShBUk12NykKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMQorI2Vsc2UKKyNkZWZp
bmUgT0ZGTElORV9BU01fQVJNdjcgMAorI2VuZGlmCisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX0FTU0VSVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgQ1BVKEJJR19FTkRJQU4pCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9B
U01fQklHX0VORElBTiAwCisjZW5kaWYKKworI2lmIEVOQUJMRShMTElOVF9PU1JfVE9fSklUKQor
I2RlZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5F
X0FTTV9KSVRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIExMSU5UX0VYRUNVVElPTl9UUkFDSU5H
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDEKKyNlbHNlCisjZGVmaW5l
IE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNlbmRpZgorCisjZW5kaWYgLy8gTExJ
bnRPZmZsaW5lQXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludE9mZnNldHNFeHRyYWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQWxsb2NhdGlv
blNwYWNlLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5o
IgorI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUg
IkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgor
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVk
ZSAiSlN0eXBlSW5mby5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKKyNpbmNsdWRl
ICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNs
dWRlICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgorI2luY2x1ZGUg
IlNjb3BlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmVDaGFpbi5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0
L1N0cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgT0ZGTElORV9BU01f
T0ZGU0VUT0YoY2xhenosIGZpZWxkKSBPQkpFQ1RfT0ZGU0VUT0YoY2xhenosIGZpZWxkKQorCitj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCogZHVtbXkoKTsKK307CisKK2NvbnN0IHVuc2lnbmVkKiBMTEludE9mZnNldHNFeHRy
YWN0b3I6OmR1bW15KCkKK3sKKyNpbmNsdWRlICJMTEludERlc2lyZWRPZmZzZXRzLmgiCisgICAg
cmV0dXJuIGV4dHJhY3RvclRhYmxlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworaW50IG1h
aW4oaW50LCBjaGFyKiopCit7CisgICAgLy8gT3V0IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0aW9u
LCBtYWtlIHN1cmUgdGhhdCBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkgaXMgbGl2ZSwK
KyAgICAvLyBhbmQgdGhlIGV4dHJhY3RvclRhYmxlIGlzIGxpdmUsIHRvby4KKyAgICBwcmludGYo
IiVwXG4iLCBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSk7CisgICAgcmV0dXJu
IDA7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVu
a3MuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJMTEludFRodW5rcy5oIgorCisjaW5jbHVkZSAiSlNJbnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRl
ICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIHZv
aWQgKCp0YXJnZXQpKCkpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIAorICAgIC8v
IEZJWE1FOiB0aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0byBkbyBpdCBvbiBYODYsIGJ1
dCBJJ20gbm90IHN1cmUgSSBjYXJlLgorICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVz
dGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSksIEpTSW50ZXJmYWNlSklUOjpy
ZWdUMCk7CisgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0KTsKKyAgICByZXR1cm4gcGF0
Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5j
dGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkK
K3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRf
ZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0
YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1
bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayk7Cit9
CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tU
aHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfYXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5
VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9ldmFsX3Byb2xvZ3VlKTsK
K30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhK
dW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSk7Cit9CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpMTEludAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRUaHVua3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRUaHVua3Nf
aAorI2RlZmluZSBMTEludFRodW5rc19oCisKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsRGF0YTsKKworbmFtZXNw
YWNlIExMSW50IHsKKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5
VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRv
cihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0
cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEq
KTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludFRodW5r
c19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzNTcg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBDcmFz
aCBjb3Vyc2Ugb24gdGhlIGxhbmd1YWdlIHRoYXQgdGhpcyBpcyB3cml0dGVuIGluICh3aGljaCBJ
IGp1c3QgY2FsbAorIyAiYXNzZW1ibHkiIGV2ZW4gdGhvdWdoIGl0J3MgbW9yZSB0aGFuIHRoYXQp
OgorIworIyAtIE1vc3RseSBnYXMtc3R5bGUgb3BlcmFuZCBvcmRlcmluZy4gVGhlIGxhc3Qgb3Bl
cmFuZCB0ZW5kcyB0byBiZSB0aGUKKyMgICBkZXN0aW5hdGlvbi4gU28gImEgOj0gYiIgaXMgd3Jp
dHRlbiBhcyAibW92IGIsIGEiLiBCdXQgdW5saWtlIGdhcywKKyMgICBjb21wYXJpc29ucyBhcmUg
aW4tb3JkZXIsIHNvICJpZiAoYSA8IGIpIiBpcyB3cml0dGVuIGFzCisjICAgImJpbHQgYSwgYiwg
Li4uIi4KKyMKKyMgLSAiYiIgPSBieXRlLCAiaCIgPSAxNi1iaXQgd29yZCwgImkiID0gMzItYml0
IHdvcmQsICJwIiA9IHBvaW50ZXIuCisjICAgQ3VycmVudGx5IHRoaXMgaXMganVzdCAzMi1iaXQg
c28gImkiIGFuZCAicCIgYXJlIGludGVyY2hhbmdlYWJsZQorIyAgIGV4Y2VwdCB3aGVuIGFuIG9w
IHN1cHBvcnRzIG9uZSBidXQgbm90IHRoZSBvdGhlci4KKyMKKyMgLSBJbiBnZW5lcmFsLCB2YWxp
ZCBvcGVyYW5kcyBmb3IgbWFjcm8gaW52b2NhdGlvbnMgYW5kIGluc3RydWN0aW9ucyBhcmUKKyMg
ICByZWdpc3RlcnMgKGVnICJ0MCIpLCBhZGRyZXNzZXMgKGVnICI0W3QwXSIpLCBiYXNlLWluZGV4
IGFkZHJlc3NlcworIyAgIChlZyAiN1t0MCwgdDEsIDJdIiksIGFic29sdXRlIGFkZHJlc3NlcyAo
ZWcgIjB4YTAwMDAwMDBbXSIpLCBvciBsYWJlbHMKKyMgICAoZWcgIl9mb28iIG9yICIuZm9vIiku
IE1hY3JvIGludm9jYXRpb25zIGNhbiBhbHNvIHRha2UgYW5vbnltb3VzCisjICAgbWFjcm9zIGFz
IG9wZXJhbmRzLiBJbnN0cnVjdGlvbnMgY2Fubm90IHRha2UgYW5vbnltb3VzIG1hY3Jvcy4KKyMK
KyMgLSBMYWJlbHMgbXVzdCBoYXZlIG5hbWVzIHRoYXQgYmVnaW4gd2l0aCBlaXRoZXIgIl8iIG9y
ICIuIi4gIEEgIi4iIGxhYmVsCisjICAgaXMgbG9jYWwgYW5kIGdldHMgcmVuYW1lZCBiZWZvcmUg
Y29kZSBnZW4gdG8gbWluaW1pemUgbmFtZXNwYWNlCisjICAgcG9sbHV0aW9uLiBBICJfIiBsYWJl
bCBpcyBhbiBleHRlcm4gc3ltYm9sIChpLmUuICIuZ2xvYmwiKS4gVGhlICJfIgorIyAgIG1heSBv
ciBtYXkgbm90IGJlIHJlbW92ZWQgZHVyaW5nIGNvZGUgZ2VuIGRlcGVuZGluZyBvbiB3aGV0aGVy
IHRoZSBhc20KKyMgICBjb252ZW50aW9ucyBmb3IgQyBuYW1lIG1hbmdsaW5nIG9uIHRoZSB0YXJn
ZXQgcGxhdGZvcm0gbWFuZGF0ZSBhICJfIgorIyAgIHByZWZpeC4KKyMKKyMgLSBBICJtYWNybyIg
aXMgYSBsYW1iZGEgZXhwcmVzc2lvbiwgd2hpY2ggbWF5IGJlIGVpdGhlciBhbm9ueW1vdXMgb3IK
KyMgICBuYW1lZC4gQnV0IHRoaXMgaGFzIGNhdmVhdHMuICJtYWNybyIgY2FuIHRha2UgemVybyBv
ciBtb3JlIGFyZ3VtZW50cywKKyMgICB3aGljaCBtYXkgYmUgbWFjcm9zIG9yIGFueSB2YWxpZCBv
cGVyYW5kcywgYnV0IGl0IGNhbiBvbmx5IHJldHVybgorIyAgIGNvZGUuIEJ1dCB5b3UgY2FuIGRv
IFR1cmluZy1jb21wbGV0ZSB0aGluZ3MgdmlhIGNvbnRpbnVhdGlvbiBwYXNzaW5nCisjICAgc3R5
bGU6ICJtYWNybyBmb28gKGEsIGIpIGIoYSkgZW5kIGZvbyhmb28sIGZvbykiLiBBY3R1YWxseSwg
ZG9uJ3QgZG8KKyMgICB0aGF0LCBzaW5jZSB5b3UnbGwganVzdCBjcmFzaCB0aGUgYXNzZW1ibGVy
LgorIworIyAtIEFuICJpZiIgaXMgYSBjb25kaXRpb25hbCBvbiBzZXR0aW5ncy4gQW55IGlkZW50
aWZpZXIgc3VwcGxpZWQgaW4gdGhlCisjICAgcHJlZGljYXRlIG9mIGFuICJpZiIgaXMgYXNzdW1l
ZCB0byBiZSBhICNkZWZpbmUgdGhhdCBpcyBhdmFpbGFibGUKKyMgICBkdXJpbmcgY29kZSBnZW4u
IFNvIHlvdSBjYW4ndCB1c2UgImlmIiBmb3IgY29tcHV0YXRpb24gaW4gYSBtYWNybywgYnV0Cisj
ICAgeW91IGNhbiB1c2UgaXQgdG8gc2VsZWN0IGRpZmZlcmVudCBwaWVjZXMgb2YgY29kZSBmb3Ig
ZGlmZmVyZW50CisjICAgcGxhdGZvcm1zLgorIworIyAtIEFyZ3VtZW50cyB0byBtYWNyb3MgZm9s
bG93IGxleGljYWwgc2NvcGluZyByYXRoZXIgdGhhbiBkeW5hbWljIHNjb3BpbmcuCisjICAgQ29u
c3QncyBhbHNvIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgYW5kIG1heSBvdmVycmlkZSAoaGlkZSkg
YXJndW1lbnRzCisjICAgb3Igb3RoZXIgY29uc3RzLiBBbGwgdmFyaWFibGVzIChhcmd1bWVudHMg
YW5kIGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gb3BlcmFuZHMuIEFkZGl0aW9uYWxs
eSwgYXJndW1lbnRzIChidXQgbm90IGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gbWFj
cm9zLgorCisKKyMgVGhlc2UgZGVjbGFyYXRpb25zIG11c3QgbWF0Y2ggaW50ZXJwcmV0ZXIvUmVn
aXN0ZXJGaWxlLmguCitjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gNDgKK2NvbnN0IEFyZ3Vt
ZW50Q291bnQgPSAtNDgKK2NvbnN0IENhbGxlckZyYW1lID0gLTQwCitjb25zdCBDYWxsZWUgPSAt
MzIKK2NvbnN0IFNjb3BlQ2hhaW4gPSAtMjQKK2NvbnN0IFJldHVyblBDID0gLTE2Citjb25zdCBD
b2RlQmxvY2sgPSAtOAorCitjb25zdCBUaGlzQXJndW1lbnRPZmZzZXQgPSAtQ2FsbEZyYW1lSGVh
ZGVyU2l6ZSAtIDgKKworIyBEZWNsYXJlIHNvbWUgYWxpYXNlcyBmb3IgdGhlIHJlZ2lzdGVycyB3
ZSB3aWxsIHVzZS4KK2NvbnN0IFBDID0gdDQKKworIyBPZmZzZXRzIG5lZWRlZCBmb3IgcmVhc29u
aW5nIGFib3V0IHZhbHVlIHJlcHJlc2VudGF0aW9uLgoraWYgQklHX0VORElBTgorICAgIGNvbnN0
IFRhZ09mZnNldCA9IDAKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gNAorZWxzZQorICAgIGNv
bnN0IFRhZ09mZnNldCA9IDQKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gMAorZW5kCisKKyMg
VmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgorY29uc3QgSW50MzJUYWcgPSAtMQorY29u
c3QgQm9vbGVhblRhZyA9IC0yCitjb25zdCBOdWxsVGFnID0gLTMKK2NvbnN0IFVuZGVmaW5lZFRh
ZyA9IC00Citjb25zdCBDZWxsVGFnID0gLTUKK2NvbnN0IEVtcHR5VmFsdWVUYWcgPSAtNgorY29u
c3QgRGVsZXRlZFZhbHVlVGFnID0gLTcKK2NvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRh
ZworCisjIFR5cGUgY29uc3RhbnRzLgorY29uc3QgU3RyaW5nVHlwZSA9IDUKK2NvbnN0IE9iamVj
dFR5cGUgPSAxMAorCisjIFR5cGUgZmxhZ3MgY29uc3RhbnRzLgorY29uc3QgTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCA9IDEKK2NvbnN0IEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDIKK2NvbnN0IElt
cGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSA4CisKKyMgSGVhcCBhbGxvY2F0aW9uIGNvbnN0
YW50cy4KK2NvbnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9IDMKKworIyBCeXRlY29k
ZSBvcGVyYW5kIGNvbnN0YW50cy4KK2NvbnN0IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0g
MHg0MDAwMDAwMAorCisjIENvZGUgdHlwZSBjb25zdGFudHMuCitjb25zdCBHbG9iYWxDb2RlID0g
MAorY29uc3QgRXZhbENvZGUgPSAxCitjb25zdCBGdW5jdGlvbkNvZGUgPSAyCisKKyMgVGhlIGlu
dGVycHJldGVyIHN0ZWFscyB0aGUgdGFnIHdvcmQgb2YgdGhlIGFyZ3VtZW50IGNvdW50LgorY29u
c3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQKKworIyBUaGlzIG11
c3QgbWF0Y2ggd3RmL1ZlY3Rvci5oLgorY29uc3QgVmVjdG9yU2l6ZU9mZnNldCA9IDAKK2NvbnN0
IFZlY3RvckJ1ZmZlck9mZnNldCA9IDQKKworIyBTdHJpbmcgZmxhZ3MuCitjb25zdCBIYXNoRmxh
Z3M4Qml0QnVmZmVyID0gNjQKKworIyBVdGlsaXRpZXMKK21hY3JvIGNyYXNoKCkKKyAgICBzdG9y
ZWkgMCwgMHhiYmFkYmVlZltdCisgICAgbW92ZSAwLCB0MAorICAgIGNhbGwgdDAKK2VuZAorCitt
YWNybyBhc3NlcnQoYXNzZXJ0aW9uKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGFz
c2VydGlvbigub2spCisgICAgICAgIGNyYXNoKCkKKyAgICAub2s6CisgICAgZW5kCitlbmQKKwor
bWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIp
CisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBsciwgZGVzdGluYXRpb25SZWdpc3RlcgorICAg
IGVsc2lmIFg4NgorICAgICAgICBwb3AgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2UKKyAg
ICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyByZXN0b3JlUmV0dXJuQWRkcmVzc0Jl
Zm9yZVJldHVybihzb3VyY2VSZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIHNv
dXJjZVJlZ2lzdGVyLCBscgorICAgIGVsc2lmIFg4NgorICAgICAgICBwdXNoIHNvdXJjZVJlZ2lz
dGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIGRpc3Bh
dGNoKGFkdmFuY2UpCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMKKyAgICBqbXAgW1BDXQorZW5k
CisKK21hY3JvIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldChwY09mZnNldCkKKyAgICBsc2hpZnRp
IDIsIHBjT2Zmc2V0CisgICAgYWRkcCBwY09mZnNldCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisK
K21hY3JvIGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQorICAgIGxvYWRpIHBjT2Zmc2V0LCB0MAor
ICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MCkKK2VuZAorCittYWNybyBkaXNwYXRjaEFm
dGVyQ2FsbCgpCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQwor
ICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQor
ICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0
MQorICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcy
LCAxCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24K
K2VuZAorCisjIFRoaXMgYmFyZWx5IHdvcmtzLiBhcmczIGFuZCBhcmc0IHNob3VsZCBwcm9iYWJs
eSBiZSBpbW1lZGlhdGVzLgorbWFjcm8gY0NhbGw0KGZ1bmN0aW9uLCBhcmcxLCBhcmcyLCBhcmcz
LCBhcmc0KQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92
ZSBhcmcyLCB0MQorICAgICAgICBtb3ZlIGFyZzMsIHQyCisgICAgICAgIG1vdmUgYXJnNCwgdDMK
KyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBhcmcxLCAwCisgICAgICAgIHBva2UgYXJnMiwg
MQorICAgICAgICBwb2tlIGFyZzMsIDIKKyAgICAgICAgcG9rZSBhcmc0LCAzCisgICAgZWxzZQor
ICAgICAgICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCittYWNybyBj
YWxsSGVscGVyKGhlbHBlcikKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUg
dDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlm
IHlvdSdkIGxpa2UgdG8gcHJpbnQgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFt
LgorbWFjcm8gdHJhY2VPcGVyYW5kKGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xs
aW50X3RyYWNlX29wZXJhbmQsIGNmciwgUEMsIGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3Zl
IHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKKyMgRGVidWdnaW5nIG9wZXJhdGlvbiBp
ZiB5b3UnZCBsaWtlIHRvIHByaW50IHRoZSB2YWx1ZSBvZiBhbiBvcGVyYW5kIGluIHRoZSBpbnN0
cnVjdGlvbgorIyBzdHJlYW0uCittYWNybyB0cmFjZVZhbHVlKGZyb21XaGVyZSwgb3BlcmFuZCkK
KyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX3ZhbHVlLCBjZnIsIFBDLCBmcm9tV2hlcmUsIG9wZXJh
bmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCittYWNybyB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcKKyAgICAgICAgY2FsbEhlbHBl
cihfbGxpbnRfdHJhY2UpCisgICAgZW5kCitlbmQKKworIyBDYWxsIGEgaGVscGVyIGZvciBjYWxs
IG9wY29kZXMuCittYWNybyBjYWxsQ2FsbEhlbHBlcihhZHZhbmNlLCBoZWxwZXIsIGFjdGlvbikK
KyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQywgdDAKKyAgICBzdG9yZXAgdDAsIEFyZ3VtZW50Q291
bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpCisgICAgbW92
ZSB0MSwgY2ZyCisgICAgYWN0aW9uKHQwKQorZW5kCisKK21hY3JvIHNsb3dQYXRoRm9yQ2FsbChh
ZHZhbmNlLCBoZWxwZXIpCisgICAgY2FsbENhbGxIZWxwZXIoCisgICAgICAgIGFkdmFuY2UsCisg
ICAgICAgIGhlbHBlciwKKyAgICAgICAgbWFjcm8gKGNhbGxlZSkKKyAgICAgICAgICAgIGNhbGwg
Y2FsbGVlCisgICAgICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAgICAgIGVuZCkKK2Vu
ZAorCittYWNybyBjaGVja1N3aXRjaFRvSklUKGluY3JlbWVudCwgYWN0aW9uKQorICAgIGlmIEpJ
VF9FTkFCTEVECisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgICAgICBiYWRk
aXMgaW5jcmVtZW50LCBDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRlclt0MF0sIC5jb250
aW51ZQorICAgICAgICBhY3Rpb24oKQorICAgIC5jb250aW51ZToKKyAgICBlbmQKK2VuZAorCitt
YWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAg
ICAgICAgMSwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAgIHN0b3JlaSBQQywgQXJndW1l
bnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgICAgICAgICBjQ2FsbDIoX2xsaW50X2xvb3Bf
b3NyLCBjZnIsIFBDKQorICAgICAgICAgICAgbW92ZSB0MSwgY2ZyCisgICAgICAgICAgICBidHB6
IHQwLCAucmVjb3ZlcgorICAgICAgICAgICAgam1wIHQwCisgICAgICAgIC5yZWNvdmVyOgorICAg
ICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgICAg
ICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBj
aGVja1N3aXRjaFRvSklUKAorICAgICAgICAxMCwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAg
ICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlcGxhY2UpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNy
byBhc3NlcnROb3RDb25zdGFudChpbmRleCkKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWx0IGlu
ZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgb2sgZW5kKQorZW5kCisKKyMgSW5kZXgs
IHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBu
b3QKKyMgY2hhbmdlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUoaW5kZXgsIHRhZywg
cGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAu
Y29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUK
Ky5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRw
IENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXls
b2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUg
aW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAg
ICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxvYWRwIFRhZ09mZnNldFtwYXlsb2FkLCBpbmRl
eCwgOF0sIHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBw
YXlsb2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4IGFuZCBwYXlsb2FkIG1heSBiZSB0aGUgc2Ft
ZSByZWdpc3Rlci4gSW5kZXggbWF5IGJlIGNsb2JiZXJlZC4KK21hY3JvIGxvYWRDb25zdGFudE9y
VmFyaWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nm
ciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhd
LCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHRhZworICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZl
Y3RvckJ1ZmZlck9mZnNldFt0YWddLCB0YWcKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwg
aGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUg
LSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsc2hpZnRpIDMsIGluZGV4
CisgICAgYWRkcCBpbmRleCwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFt0YWddLCBwYXls
b2FkCisgICAgbG9hZHAgVGFnT2Zmc2V0W3RhZ10sIHRhZworLmRvbmU6CitlbmQKKworbWFjcm8g
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oaW5kZXgsIHRhZ0NoZWNrLCBw
YXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5j
b25zdGFudAorICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSkKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisu
Y29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9h
ZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGlu
ZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAg
IyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbcGF5bG9hZCwgaW5k
ZXgsIDhdKQorICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXls
b2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4IGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50
IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90IG11dGF0ZWQuIFVzZQorIyB0aGlzIGlmIHlvdSBrbm93
IHdoYXQgdGhlIHRhZyBvZiB0aGUgdmFyaWFibGUgc2hvdWxkIGJlLiBEb2luZyB0aGUgdGFnCisj
IHRlc3QgYXMgcGFydCBvZiBsb2FkaW5nIHRoZSB2YXJpYWJsZSByZWR1Y2VzIHJlZ2lzdGVyIHVz
ZSwgYnV0IG1heSBub3QKKyMgYmUgZmFzdGVyIHRoYW4gZG9pbmcgbG9hZENvbnN0YW50T3JWYXJp
YWJsZSBmb2xsb3dlZCBieSBhIGJyYW5jaCBvbiB0aGUKKyMgdGFnLgorbWFjcm8gbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBwYXlsb2FkLCBzbG93KQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKAorICAgICAgICBpbmRl
eCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykgYmluZXEgYWN0dWFsVGFnLCBleHBlY3RlZFRh
Zywgc2xvdyBlbmQsCisgICAgICAgIHBheWxvYWQpCitlbmQKKworbWFjcm8gbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQoaW5kZXgsIHBheWxvYWQpCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCisgICAgICAgIGluZGV4LAorICAgICAgICBt
YWNybyAoYWN0dWFsVGFnKSBlbmQsCisgICAgICAgIHBheWxvYWQpCitlbmQKKworbWFjcm8gd3Jp
dGVCYXJyaWVyKHRhZywgcGF5bG9hZCkKKyAgICAjIE5vdGhpbmcgdG8gZG8gc2luY2Ugd2UgZG9u
J3QgaGF2ZSBhIGdlbmVyYXRpb25hbCBvciBpbmNyZW1lbnRhbCBjb2xsZWN0b3IuCitlbmQKKwor
CisjIEluZGljYXRlIHRoZSBiZWdpbm5pbmcgb2YgTExJbnQuCitfbGxpbnRfYmVnaW46CisgICAg
Y3Jhc2goKQorCisKKyMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIKKworbWFjcm8g
ZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRw
IENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhl
Y3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgRnVuY3Rp
b25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGxbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRS
ZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVy
KHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3Rlcgor
ICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdl
dFJlZ2lzdGVyCisgICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNv
bnN0cnVjdFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gbm90
RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25Db2RlQmxvY2tT
ZXR0ZXIoc291cmNlUmVnaXN0ZXIpCisgICAgc3RvcmVwIHNvdXJjZVJlZ2lzdGVyLCBDb2RlQmxv
Y2tbY2ZyXQorZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJl
Z2lzdGVyKQorICAgICMgTm90aGluZyB0byBkbyEKK2VuZAorCisjIERvIHRoZSBiYXJlIG1pbmlt
dW0gcmVxdWlyZWQgdG8gZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENv
ZGVCbG9jayoKKyMgaW4gdDEuIE1heSBhbHNvIHRyaWdnZXIgcHJvbG9ndWUgZW50cnkgT1NSLgor
bWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zckhlbHBl
ciwgdHJhY2VIZWxwZXIpCisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQor
ICAgIAorICAgICMgU2V0IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQg
T1NSLgorICAgIHN0b3JlcCB0MiwgUmV0dXJuUENbY2ZyXQorICAgIGlmIEVYRUNVVElPTl9UUkFD
SU5HCisgICAgICAgIGNhbGxIZWxwZXIodHJhY2VIZWxwZXIpCisgICAgZW5kCisgICAgY29kZUJs
b2NrR2V0dGVyKHQxKQorICAgIGlmIEpJVF9FTkFCTEVECisgICAgICAgIGJhZGRpcyA1LCBDb2Rl
QmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRlclt0MV0sIC5jb250aW51ZQorICAgICAgICBjQ2Fs
bDIob3NySGVscGVyLCBjZnIsIFBDKQorICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgYnRw
eiB0MCwgLnJlY292ZXIKKyAgICAgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICAgICAg
cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4odDIpCisgICAgICAgIGptcCB0MAorICAg
IC5yZWNvdmVyOgorICAgICAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCisgICAgLmNvbnRpbnVlOgor
ICAgIGVuZAorICAgIGNvZGVCbG9ja1NldHRlcih0MSkKKyAgICAKKyAgICAjIFNldCB1cCB0aGUg
UEMuCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjpJbnN0cnVjdGlvbnM6Om1faW5zdHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3QwXSwgUEMKK2VuZAorCisjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEs
IHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgorIyBNdXN0IGNhbGwgZGlz
cGF0Y2goMCkgYWZ0ZXIgY2FsbGluZyB0aGlzLgorbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlv
bihwcm9maWxlQXJnU2tpcCkKKyAgICAjIFByb2ZpbGUgdGhlIGFyZ3VtZW50cy4gVW5mb3J0dW5h
dGVseSwgd2UgaGF2ZSBubyBjaG9pY2UgYnV0IHRvIGRvIHRoaXMuIFRoaXMKKyAgICAjIGNvZGUg
aXMgcHJldHR5IGhvcnJlbmRvdXMgYmVjYXVzZSBvZiB0aGUgZGlmZmVyZW5jZSBpbiBvcmRlcmlu
ZyBiZXR3ZWVuCisgICAgIyBhcmd1bWVudHMgYW5kIHZhbHVlIHByb2ZpbGVzLCB0aGUgZGVzaXJl
IHRvIGhhdmUgYSBzaW1wbGUgbG9vcC1kb3duLXRvLXplcm8KKyAgICAjIGxvb3AsIGFuZCB0aGUg
ZGVzaXJlIHRvIHVzZSBvbmx5IHRocmVlIHJlZ2lzdGVycyBzbyBhcyB0byBwcmVzZXJ2ZSB0aGUg
UEMgYW5kCisgICAgIyB0aGUgY29kZSBibG9jay4gSXQgaXMgbGlrZWx5IHRoYXQgdGhpcyBjb2Rl
IHNob3VsZCBiZSByZXdyaXR0ZW4gaW4gYSBtb3JlCisgICAgIyBvcHRpbWFsIHdheSBmb3IgYXJj
aGl0ZWN0dXJlcyB0aGF0IGhhdmUgbW9yZSB0aGFuIGZpdmUgcmVnaXN0ZXJzIGF2YWlsYWJsZQor
ICAgICMgZm9yIGFyYml0cmFyeSB1c2UgaW4gdGhlIGludGVycHJldGVyLgorICAgIGxvYWRpIENv
ZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgdDAKKyAgICBhZGRpIC1wcm9maWxlQXJnU2tp
cCwgdDAgIyBVc2UgYWRkaSBiZWNhdXNlIHRoYXQncyB3aGF0IGhhcyB0aGUgcGVlcGhvbGUKKyAg
ICBhc3NlcnQobWFjcm8gKG9rKSBiaWd0ZXEgdDAsIDAsIG9rIGVuZCkKKyAgICBidGl6IHQwLCAu
YXJndW1lbnRQcm9maWxlRG9uZQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9hcmd1bWVudFZhbHVl
UHJvZmlsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDFdLCB0MworICAgIG11bGkgc2l6ZW9mIFZh
bHVlUHJvZmlsZSwgdDAsIHQyICMgQWFhYWFoaGhoISBOZWVkIHN0cmVuZ3RoIHJlZHVjdGlvbiEK
KyAgICBuZWdpIHQwCisgICAgbHNoaWZ0aSAzLCB0MAorICAgIGFkZHAgdDIsIHQzCisuYXJndW1l
bnRQcm9maWxlTG9vcDoKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXQg
KyA4IC0gcHJvZmlsZUFyZ1NraXAgKiA4W2NmciwgdDBdLCB0MgorICAgIHN1YnAgc2l6ZW9mIFZh
bHVlUHJvZmlsZSwgdDMKKyAgICBzdG9yZWkgdDIsIHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZh
bHVlUHJvZmlsZSArIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3QzXQorICAg
IGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXQgKyA4IC0gcHJvZmlsZUFy
Z1NraXAgKiA4W2NmciwgdDBdLCB0MgorICAgIHN0b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBz
aXplb2YgVmFsdWVQcm9maWxlICsgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zm
c2V0W3QzXQorICAgIGJhZGRpbnogOCwgdDAsIC5hcmd1bWVudFByb2ZpbGVMb29wCisuYXJndW1l
bnRQcm9maWxlRG9uZToKKyAgICAKKyAgICAjIENoZWNrIHN0YWNrIGhlaWdodC4KKyAgICBsb2Fk
aSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVnaXN0ZXJzW3QxXSwgdDAKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQyCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjppbnRl
cnByZXRlclt0Ml0sIHQyICAgIyBGSVhNRTogQ2FuIGdldCB0byB0aGUgUmVnaXN0ZXJGaWxlIGZy
b20gdGhlIEpJVFN0YWNrRnJhbWUKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MCwgY2Zy
LCB0MAorICAgIGJwYWVxIEludGVycHJldGVyOjptX3JlZ2lzdGVyRmlsZSArIFJlZ2lzdGVyRmls
ZTo6bV9lbmRbdDJdLCB0MCwgLnN0YWNrSGVpZ2h0T0sKKworICAgICMgU3RhY2sgaGVpZ2h0IGNo
ZWNrIGZhaWxlZCAtIG5lZWQgdG8gY2FsbCBhIGhlbHBlci4KKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9yZWdpc3Rlcl9maWxlX2NoZWNrKQorLnN0YWNrSGVpZ2h0T0s6CitlbmQKKworIyBFeHBlY3Rz
IHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVz
IGJlaGluZC4KK21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIGhlbHBlcikKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGJpZXEg
dDAsIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCisgICAgY0NhbGwy
KGhlbHBlciwgY2ZyLCBQQykgICAjIFRoaXMgaGVscGVyIGhhcyBhIHNpbXBsZSBwcm90b2NvbDog
dDAgPSAwID0+IG5vIGVycm9yLCB0MCAhPSAwID0+IGVycm9yCisgICAgbW92ZSB0MSwgY2ZyCisg
ICAgYnRpeiB0MCwgLmNvbnRpbnVlCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0
YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0s
IHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisu
Y29udGludWU6CisgICAgIyBSZWxvYWQgQ29kZUJsb2NrIGFuZCBQQywgc2luY2UgdGhlIGhlbHBl
ciBjbG9iYmVyZWQgaXQuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpJ
bnN0cnVjdGlvbnM6Om1faW5zdHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMK
KyAgICBqbXAgZG9uZUxhYmVsCitlbmQKKworX2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6CisgICAg
cHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2Nr
U2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgZGlz
cGF0Y2goMCkKKworCitfbGxpbnRfZXZhbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5j
dGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9l
bnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19s
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZv
ckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50
cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25f
Zm9yX2NhbGwpCisuZnVuY3Rpb25Gb3JDYWxsQmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXph
dGlvbigwKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJs
b2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY29uc3RydWN0LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdCkKKy5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlh
bGl6YXRpb24oMSkKKyAgICBkaXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2Nr
R2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkK
KyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfbGxpbnRfaGVs
cGVyX2NhbGxfYXJpdHlDaGVjaykKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9h
cml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dl
dHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29u
c3RydWN0KQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdp
biwgX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKKworIyBJbnN0cnVjdGlvbiBp
bXBsZW1lbnRhdGlvbnMKKworX2xsaW50X29wX2VudGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVt
VmFyc1t0Ml0sIHQyCisgICAgYnRpeiB0MiwgLm9wRW50ZXJEb25lCisgICAgbW92ZSBVbmRlZmlu
ZWRUYWcsIHQwCisgICAgbW92ZSAwLCB0MQorLm9wRW50ZXJMb29wOgorICAgIHN1YmkgMSwgdDIK
KyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGJ0aW56IHQyLCAub3BFbnRlckxvb3AKKy5vcEVu
dGVyRG9uZToKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9jcmVhdGVfYWN0aXZhdGlv
bjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBY3RpdmF0aW9u
RG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKKy5v
cENyZWF0ZUFjdGl2YXRpb25Eb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2lu
aXRfbGF6eV9yZWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9y
ZWkgMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xs
aW50X29wX2NyZWF0ZV9hcmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRh
ZywgLm9wQ3JlYXRlQXJndW1lbnRzRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9j
cmVhdGVfYXJndW1lbnRzKQorLm9wQ3JlYXRlQXJndW1lbnRzRG9uZToKKyAgICBkaXNwYXRjaCgy
KQorCisKK21hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJbmRleCwgY2xhc3NJ
bmZvT2Zmc2V0LCBzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBzbG93Q2Fz
ZSkKKyAgICBjb25zdCBvZmZzZXRPZk15U2l6ZUNsYXNzID0gSlNHbG9iYWxEYXRhOjpoZWFwICsg
SGVhcDo6bV9vYmplY3RTcGFjZSArIEFsbG9jYXRpb25TcGFjZTo6bV9tYXJrZWRTcGFjZSArIE1h
cmtlZFNwYWNlOjptX3ByZWNpc2VTaXplQ2xhc3NlcyArIHNpemVDbGFzc0luZGV4ICogc2l6ZW9m
IE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MKKyAgICAKKyAgICAjIEZJWE1FOiB3ZSBjYW4gZ2V0IHRo
ZSBnbG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRoZSBzdGFjay4KKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgc2NyYXRjaDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVtz
Y3JhdGNoMV0sIHNjcmF0Y2gxCisgICAgCisgICAgIyBHZXQgdGhlIG9iamVjdCBmcm9tIHRoZSBm
cmVlIGxpc3QuICAgIAorICAgIGxvYWRwIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFj
ZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXSwgcmVzdWx0CisgICAgYnRweiBy
ZXN1bHQsIHNsb3dDYXNlCisgICAgCisgICAgIyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBm
cmVlIGxpc3QuCisgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0
Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmlyc3RG
cmVlQ2VsbFtzY3JhdGNoMV0KKworICAgICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgorICAgIGxv
YWRwIGNsYXNzSW5mb09mZnNldFtzY3JhdGNoMV0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0
Y2gyLCBbcmVzdWx0XQorICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
cmVzdWx0XQorICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCisg
ICAgYWRkcCBzaXplb2YgSlNPYmplY3QsIHJlc3VsdCwgc2NyYXRjaDEKKyAgICBzdG9yZXAgc2Ny
YXRjaDEsIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVtyZXN1bHRdCitlbmQKKworX2xsaW50
X29wX2NyZWF0ZV90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIENlbGxUYWcsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEK
KyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIE9i
amVjdFR5cGUsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1faW5oZXJp
dG9ySURbdDBdLCB0MgorICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgYWxsb2Nh
dGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRh
Ojpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhpc1Ns
b3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAg
IGRpc3BhdGNoKDMpCisKKy5vcENyZWF0ZVRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9jcmVhdGVfdGhpcykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9nZXRf
Y2FsbGVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBs
b2FkcCBQYXlsb2FkT2Zmc2V0ICsgQ2FsbGVlW2Nmcl0sIHQxCisgICAgc3RvcmVpIENlbGxUYWcs
IFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NvbnZlcnRfdGhpczoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MAorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90
eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNTbG93CisgICAgZGlzcGF0Y2goMikK
KworLm9wQ29udmVydFRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jb252
ZXJ0X3RoaXMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X29iamVjdDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxP
YmplY3Q6Om1fZW1wdHlPYmplY3RTdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGFsbG9jYXRlQmFzaWNK
U09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5h
bE9iamVjdENsYXNzSW5mbywgdDEsIHQwLCB0MiwgdDMsIC5vcE5ld09iamVjdFNsb3cpCisgICAg
bG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4
XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNo
KDIpCisKKy5vcE5ld09iamVjdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25l
d19vYmplY3QpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X2FycmF5OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2FycmF5
KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19hcnJheV9idWZmZXI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXlf
YnVmZmVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19yZWdleHA6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfcmVnZXhw
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX21vdjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bfbm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5vcE5vdFNs
b3cKKyAgICB4b3JpIDEsIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgz
KQorCisub3BOb3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ub3QpCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAs
IHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcEVxU2xvdworICAgIGJpZXEgdDIsIENlbGxU
YWcsIC5vcEVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cKKyAgICBsb2Fk
aSA0W1BDXSwgdDIKKyAgICBjaWVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywg
VGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wRXFTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9lcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9lcV9udWxsOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BD
XSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAg
ICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBU
eXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1w
IC5vcEVxTnVsbE5vdEltbWVkaWF0ZQorLm9wRXFOdWxsSW1tZWRpYXRlOgorICAgIGNpZXEgdDEs
IE51bGxUYWcsIHQyCisgICAgY2llcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIG9yaSB0Miwg
dDEKKy5vcEVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zm
c2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhd
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVxOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93CisgICAgYmllcSB0
MiwgQ2VsbFRhZywgLm9wTmVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFTbG93
CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2luZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBC
b29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BOZXFTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXEpCisgICAgZGlzcGF0Y2goNCkKKyAgICAKKworX2xs
aW50X29wX25lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBs
b2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbEltbWVkaWF0
ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRieiBTdHJ1Y3R1
cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQsIHQxCisgICAgam1wIC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKKy5vcE5lcU51bGxJbW1l
ZGlhdGU6CisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2luZXEgdDEsIFVuZGVmaW5l
ZFRhZywgdDEKKyAgICBhbmRpIHQyLCB0MQorLm9wTmVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBz
dG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBzdHJp
Y3RFcShlcXVhbGl0eU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEp
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0
MiwgdDMsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmluZXEgdDIs
IENlbGxUYWcsIC5ub3RTdHJpbmcKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwg
dDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKKyAgICBiYm5lcSBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5v
dFN0cmluZworICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlw
ZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93Cisubm90U3RyaW5nOgorICAgIGxvYWRpIDRbUENdLCB0
MgorICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDApCisgICAgc3RvcmVpIEJvb2xlYW5U
YWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVs
cGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50X29wX3N0cmljdGVxOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkg
Y2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9zdHJpY3RlcSkKKwor
CitfbGxpbnRfb3BfbnN0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RF
cShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBl
bmQsIF9sbGludF9oZWxwZXJfbnN0cmljdGVxKQorCisKK19sbGludF9vcF9sZXNzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzcykKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzZXEpCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2dyZWF0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
Z3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfZ3JlYXRlcmVxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3ByZV9pbmM6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZUluY1Nsb3cKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJhZGRpbyAxLCB0MSwgLm9wUHJlSW5j
U2xvdworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3Bh
dGNoKDIpCisKKy5vcFByZUluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3By
ZV9pbmMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJlX2RlYzoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNTbG93CisgICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKwor
Lm9wUHJlRGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2RlYykKKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3N0X2luYzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdEluY1Nsb3cKKyAgICBiaWVx
IHQwLCB0MSwgLm9wUG9zdEluY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYmFkZGlvIDEsIHQzLCAub3BQb3N0SW5jU2xv
dworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVp
IHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCisub3BQb3N0SW5jRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQ
b3N0SW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9pbmMpCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcG9zdF9kZWM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3REZWNTbG93CisgICAgYmllcSB0
MCwgdDEsIC5vcFBvc3REZWNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDIKKyAgICBtb3ZlIHQyLCB0MworICAgIGJzdWJpbyAxLCB0MywgLm9wUG9zdERlY1Nsb3cK
KyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0
MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQorLm9wUG9zdERlY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKworLm9wUG9z
dERlY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfZGVjKQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX3RvX2pzbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmllcSB0MiwgSW50MzJUYWcsIC5vcFRv
SnNudW1iZXJJc0ludAorICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BUb0pzbnVtYmVy
U2xvdworLm9wVG9Kc251bWJlcklzSW50OgorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlz
cGF0Y2goMykKKworLm9wVG9Kc251bWJlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3RvX2pzbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25lZ2F0ZToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQ
Q10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQorICAgIGJpbmVx
IHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3ZmZmZmZm
ZiwgLm9wTmVnYXRlU2xvdworICAgIG5lZ2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09m
ZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4
XQorICAgIGRpc3BhdGNoKDMpCisub3BOZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQxLCBMb3dl
c3RUYWcsIC5vcE5lZ2F0ZVNsb3cKKyAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAgc3RvcmVp
IHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOZWdhdGVTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9uZWdhdGUpCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBi
aW5hcnlPcEN1c3RvbVN0b3JlKGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0
aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMU5v
dEludAorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGxvYWRpIDRbUENd
LCB0MgorICAgIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0MywgdDEsIHQwLCAuc2xvdywgdDIp
CisgICAgZGlzcGF0Y2goNSkKKworLm9wMU5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMg
ZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291bGQgYmUgYW55dGhp
bmcuCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQzLCBMb3dlc3RUYWcs
IC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAg
Y2kyZCB0MSwgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJs
ZToKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGxvYWRpIDRb
UENdLCB0MQorICAgIGZpaTJkIHQwLCB0MiwgZnQwCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwg
ZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5v
cDJOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50LCB0aGUg
c2Vjb25kIG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QuCisgICAgbG9hZGkgNFtQQ10sIHQyCisg
ICAgYmlhIHQzLCBMb3dlc3RUYWcsIC5zbG93CisgICAgY2kyZCB0MCwgZnQwCisgICAgZmlpMmQg
dDEsIHQzLCBmdDEKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0
MCwgW2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBl
cihoZWxwZXIpCisgICAgZGlzcGF0Y2goNSkKK2VuZAorCittYWNybyBiaW5hcnlPcChpbnRlZ2Vy
T3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBiaW5hcnlPcEN1c3RvbVN0
b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkK
KyAgICAgICAgICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAg
ICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAg
ICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgIGVu
ZCwKKyAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCitlbmQKKworX2xsaW50X29wX2Fk
ZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgc2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9hZGQpCisKKworX2xsaW50X29wX211bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCBy
aWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjb25zdCBzY3JhdGNoID0gaW50MzJUYWcg
ICAjIFdlIGtub3cgdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIGludDMyVGFnIHJlZ2lzdGVyIHNpbmNl
IGl0IGhhcyBhIGNvbnN0YW50LgorICAgICAgICAgICAgbW92ZSByaWdodCwgc2NyYXRjaAorICAg
ICAgICAgICAgYm11bGlvIGxlZnQsIHNjcmF0Y2gsIHNsb3cKKyAgICAgICAgICAgIGJ0aW56IHNj
cmF0Y2gsIC5kb25lCisgICAgICAgICAgICBiaWx0IGxlZnQsIDAsIC5zbG93CisgICAgICAgICAg
ICBiaWx0IHJpZ2h0LCAwLCAuc2xvdworICAgICAgICAuZG9uZToKKyAgICAgICAgICAgIHN0b3Jl
aSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkg
c2NyYXRjaCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9s
bGludF9oZWxwZXJfbXVsKQorCisKK19sbGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJp
byBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgc3Vi
ZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfc3ViKQorCisKK19sbGlu
dF9vcF9kaXY6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUo
CisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAg
ICAgICAgICAgY2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQorICAg
ICAgICAgICAgZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5v
dEludAorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwg
OF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4
XQorICAgICAgICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6CisgICAgICAgICAgICBz
dG9yZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCwK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAg
ICAgX2xsaW50X2hlbHBlcl9kaXYpCisKKworX2xsaW50X29wX21vZDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkKKyAgICBkaXNwYXRjaCg0
KQorCisKK21hY3JvIGJpdE9wKG9wZXJhdGlvbiwgaGVscGVyLCBhZHZhbmNlKQorICAgIGxvYWRp
IDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0
MCkKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIEludDMyVGFn
LCAuc2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIG9wZXJhdGlvbih0MSwgdDAsIC5zbG93
KQorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKKworLnNsb3c6
CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKK2VuZAorCitf
bGxpbnRfb3BfbHNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl9sc2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX3Jz
aGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgc2xvdykgcnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfcnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF91cnNoaWZ0OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCBzbG93KQorICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKKyAgICAgICAgICAgIGJp
bHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3Vy
c2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX2JpdGFuZDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5k
aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0YW5kLAorICAgICAg
ICA1KQorCisKK19sbGludF9vcF9iaXR4b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJp
dE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmlnaHQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdHhvciwKKyAgICAgICAgNSkKKworCitfbGxp
bnRfb3BfYml0b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9s
bGludF9oZWxwZXJfYml0b3IsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG5vdDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGJpbmVxIHQy
LCBJbnQzMlRhZywgLm9wQml0bm90U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRh
Z09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2JpdG5vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVj
a19oYXNfaW5zdGFuY2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0
MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9w
Q2hlY2tIYXNJbnN0YW5jZVNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0
MF0sIEltcGxlbWVudHNIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBk
aXNwYXRjaCgyKQorCisub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xs
aW50X29wX2luc3RhbmNlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgQ2hlY2sgdGhh
dCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisg
ICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAxMltQQ10s
IHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDEsIHQwKQor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJl
OjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhh
c0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIAorICAgICMgQWN0dWFsbHkgZG8gdGhl
IHdvcmsuCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2Vv
ZlNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJiIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAu
b3BJbnN0YW5jZW9mU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAg
CisgICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBt
b3ZlIDEsIHQwCisub3BJbnN0YW5jZW9mTG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QyXSwgdDIKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9m
ZnNldFt0Ml0sIHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRp
bnogdDIsIC5vcEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9m
RG9uZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
c3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKwor
Lm9wSW5zdGFuY2VvZlNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luc3RhbmNl
b2YpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9pc19udW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9pc19udW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfaXNfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lz
X29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2lzX29iamVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19mdW5jdGlv
bjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lz
X2Z1bmN0aW9uKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2luOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfcmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9za2lwKQorICAgIGRpc3BhdGNoKDQpCisKKworbWFj
cm8gcmVzb2x2ZUdsb2JhbChzbG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6Cisg
ICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgUHJv
cGVydHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAjIDEyW1BDXSAg
U3RydWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9y
LgorICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8g
MCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYnBuZXEgdDEsIDEyW1BDXSwgc2xvdworICAg
IGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2Vb
dDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9y
ZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQorZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgcmVzb2x2ZUdsb2JhbCgub3BSZXNvbHZlR2xvYmFsU2xvdykKKyAg
ICBkaXNwYXRjaCg1KQorCisub3BSZXNvbHZlR2xvYmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCisgICAgZGlzcGF0Y2goNSkKKworCisjIEdpdmVz
IHlvdSB0aGUgc2NvcGUgaW4gdDAsIHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25hbGx5IHBl
cmZvcm0gYWRkaXRpb25hbCBjaGVja3Mgb24gdGhlCisjIHNjb3BlcyBhcyB0aGV5IGFyZSB0cmF2
ZXJzZWQuIHNjb3BlQ2hlY2soKSBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgcmVn
aXN0ZXIKKyMgaG9sZGluZyB0aGUgc2NvcGUsIGFuZCBhIHJlZ2lzdGVyIHRoYXQgY2FuIGJlIHVz
ZWQgZm9yIHNjcmF0Y2guIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90CisjIHVzZSB0Mywgc28geW91
IGNhbiBob2xkIHN0dWZmIGluIHQzIGlmIG5lZWQgYmUuCittYWNybyBnZXRTY29wZShkZUJydWlq
aW5JbmRleE9wZXJhbmQsIHNjb3BlQ2hlY2spCisgICAgbG9hZHAgU2NvcGVDaGFpbiArIFBheWxv
YWRPZmZzZXRbY2ZyXSwgdDAKKyAgICBsb2FkaSBkZUJydWlqaW5JbmRleE9wZXJhbmQsIHQyCisg
ICAgCisgICAgYnRpeiB0MiwgLmRvbmUKKyAgICAKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDEKKyAgICBiaW5lcSBDb2RlQmxvY2s6Om1fY29kZVR5cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5s
b29wCisgICAgYnRieiBDb2RlQmxvY2s6Om1fbmVlZHNGdWxsU2NvcGVDaGFpblt0MV0sIC5sb29w
CisgICAgCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX2FjdGl2YXRpb25SZWdpc3Rlclt0MV0sIHQx
CisKKyAgICAjIE5lZWQgdG8gY29uZGl0aW9uYWxseSBza2lwIG92ZXIgb25lIHNjb3BlLgorICAg
IGJpZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAubm9BY3RpdmF0aW9u
CisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRb
dDBdLCB0MAorLm5vQWN0aXZhdGlvbjoKKyAgICBzdWJpIDEsIHQyCisgICAgCisgICAgYnRpeiB0
MiwgLmRvbmUKKy5sb29wOgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3Bl
Q2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKyAgICBzdWJpIDEsIHQyCisgICAgYnRpbnogdDIsIC5s
b29wCisKKy5kb25lOgorZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRh
W3NwXSwgdDMKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmFjdGl2YXRpb25TdHJ1Y3R1cmVbdDNd
LCB0MworICAgIGdldFNjb3BlKAorICAgICAgICAyMFtQQ10sCisgICAgICAgIG1hY3JvIChzY29w
ZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3Rbc2Nv
cGVdLCBzY3JhdGNoCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3NjcmF0
Y2hdLCB0MywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3cKKyAgICAgICAgZW5kKQor
ICAgIHJlc29sdmVHbG9iYWwoLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93KQorICAgIGRpc3Bh
dGNoKDYpCisKKy5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlKQorICAgIGRpc3BhdGNoKDYpCisKKy5vcFJlc29sdmVH
bG9iYWxEeW5hbWljU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9n
bG9iYWwpCisgICAgZGlzcGF0Y2goNikKKworCitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAg
IyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgSW5kZXgg
b2YgcmVnaXN0ZXIgaW4gdGhlIHNjb3BlLgorICAgICMgMTJbUENdICBEZSBCcnVpamluIGluZGV4
LgorICAgIGdldFNjb3BlKDEyW1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAg
bG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZHAgU2NvcGVDaGFp
bk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdp
c3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNl
dFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQor
ICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9zY29wZWRfdmFyOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBnZXRTY29wZSg4W1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBl
bmQpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEs
IHQzLCB0MikKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDMsIHQyKQor
ICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFy
aWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNl
dFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0KKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAg
bG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9i
amVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwg
dDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W3QwLCB0MSwgOF0sIHQxCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0Mywg
OF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9i
YWxPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQxLCB0MiwgdDMpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQyLCB0
MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQ
YXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9y
ZXNvbHZlX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9yZXNvbHZlX2Jhc2UpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZW5z
dXJlX3Byb3BlcnR5X2V4aXN0czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKKyAgICBkaXNw
YXRjaCg0KQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQor
ICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZv
ciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQorICAgICMgb3Bjb2RlLiBXZSBkbywgaG93
ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2lu
Y2UKKyAgICAjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQg
dGhlIGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCisgICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0
aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAor
ICAgICMgd2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQodDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQy
CisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKKyAgICBicG5l
cSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgbG9hZGkg
NFtQQ10sIHQxCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0Ml0sIHQzCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFt0MCwgdDJdLCB0MgorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0
Y2goOCkKKworLm9wR2V0QnlJZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dl
dF9ieV9pZCkKKyAgICBkaXNwYXRjaCg4KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRzX2xl
bmd0aDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9h
ZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVl
VGFnLCAub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93CisgICAgbG9hZGkgQXJndW1lbnRDb3VudCAr
IFBheWxvYWRPZmZzZXRbY2ZyXSwgdDIKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIEludDMy
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93
KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0
b3JhZ2VbdDBdLCB0MworICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9w
UHV0QnlJZFNsb3cKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWcodDIsIHQwLCB0MikKKyAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQorICAgIHN0b3Jl
aSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMs
IHQxXQorICAgIGRpc3BhdGNoKDkpCisKKy5vcFB1dEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9wdXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOSkKKworCittYWNybyBwdXRC
eUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBs
b2FkaSAxMltQQ10sIHQyCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAu
b3BQdXRCeUlkU2xvdworICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xv
dykKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlT
dG9yYWdlW3QwXSwgdDMKKyAgICBhZGRwIHQxLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnKHQyLCB0MSwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKKyAgICBzdG9yZWkg
dDEsIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSAyNFtQQ10sIHQxCisgICAgc3RvcmVpIHQyLCBQ
YXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0K
KyAgICBkaXNwYXRjaCg5KQorZW5kCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Q6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRj
aCwgc2xvdykgZW5kKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6
CisgICAgcHV0QnlJZFRyYW5zaXRpb24oCisgICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNj
cmF0Y2gsIHNsb3cpCisgICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUg
ICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAg
ICAgIAorICAgICAgICAgICAgbG9hZHAgMjhbUENdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3Nl
cnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBsb2FkcCBT
dHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGFz
c2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICAgICAgICAgIGJpZXEg
U3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFn
LCAuZG9uZQorICAgICAgICAubG9vcDoKKyAgICAgICAgICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9w
cm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAgICAg
ICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUK
KyAgICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCBzbG93CisgICAgICAg
ICAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICAgICAgICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90
b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKKyAgICAgICAg
LmRvbmU6CisgICAgICAgIGVuZCkKKworCitfbGxpbnRfb3BfZGVsX2J5X2lkOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X2lkKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0Mgor
ICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0
MV0sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcsIHQw
LCAub3BHZXRCeVZhbFNsb3cpCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJ
bmZvW3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgSW50MzJU
YWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAgYnBuZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFs
U2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MF0sIHQzCisgICAgYmlhZXEgdDEs
IEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0
MywgdDEsIDhdLCB0MgorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2Fk
T2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisgICAgYmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0
QnlWYWxTbG93CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9y
ZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BH
ZXRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV92YWwpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgMTJbUENdLCB0
MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0
QXJndW1lbnRCeVZhbFNsb3cKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwg
SW50MzJUYWcsIHQyLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdykKKyAgICBhZGRpIDEsIHQyCisg
ICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDEKKyAgICBiaWFl
cSB0MiwgdDEsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbmVnaSB0MgorICAgIGxvYWRp
IDRbUENdLCB0MworICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNldFtjZnIs
IHQyLCA4XSwgdDAKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zmc2V0
W2NmciwgdDIsIDhdLCB0MQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisg
ICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNCkK
KworLm9wR2V0QXJndW1lbnRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2dldF9hcmd1bWVudF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0
X2J5X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQwCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BHZXRC
eVBuYW1lU2xvdykKKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgYnBuZXEgdDEsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkgOFtQQ10sIHQw
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BH
ZXRCeVBuYW1lU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQwCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwg
dDAKKyAgICBicG5lcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1
cmVbdDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDI0W1BDXSwgdDAKKyAgICBsb2Fk
aSBbY2ZyLCB0MCwgOF0sIHQwCisgICAgc3ViaSAxLCB0MAorICAgIGJpYWVxIHQwLCBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9wR2V0QnlQbmFtZVNs
b3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDJdLCB0MgorICAgIGxv
YWRpIFRhZ09mZnNldFt0MiwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDIs
IHQwLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQor
ICAgIGRpc3BhdGNoKDcpCisKKy5vcEdldEJ5UG5hbWVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9nZXRfYnlfcG5hbWUpCisgICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3Bf
cHV0X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRC
eVZhbFNsb3cpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQodDAsIEludDMyVGFnLCB0MiwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QwXSwg
dDAKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDBdLCB0MAorICAg
IGJwbmVxIFt0MV0sIHQwLCAub3BQdXRCeVZhbFNsb3cKKyAgICBiaWFlcSB0MiwgSlNBcnJheTo6
bV92ZWN0b3JMZW5ndGhbdDFdLCAub3BQdXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5Ojpt
X3N0b3JhZ2VbdDFdLCB0MAorICAgIGJpZXEgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09m
ZnNldFt0MCwgdDIsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BQdXRCeVZhbEVtcHR5Cisub3BQdXRC
eVZhbFN0b3JlUmVzdWx0OgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZyh0MywgdDEsIHQzKQorICAgIHdyaXRlQmFycmllcih0MSwgdDMpCisgICAg
c3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0K
KyAgICBzdG9yZWkgdDMsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3Qw
LCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BQdXRCeVZhbEVtcHR5OgorICAgIGFkZGkg
MSwgQXJyYXlTdG9yYWdlOjptX251bVZhbHVlc0luVmVjdG9yW3QwXQorICAgIGJpYiB0MiwgQXJy
YXlTdG9yYWdlOjptX2xlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQKKyAgICBhZGRp
IDEsIHQyLCB0MQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX2xlbmd0aFt0MF0KKyAg
ICBqbXAgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorCisub3BQdXRCeVZhbFNsb3c6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfZGVsX2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2RlbF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfcHV0X2J5X2luZGV4OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfcHV0X2J5X2luZGV4KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X3B1dF9nZXR0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9wdXRfZ2V0dGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9z
ZXR0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9wdXRfc2V0dGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xvb3A6CisgICAg
bm9wCitfbGxpbnRfb3Bfam1wOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkaXNwYXRjaEJy
YW5jaCg0W1BDXSkKKworCitfbGxpbnRfb3Bfam1wX3Njb3BlczoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2ptcF9zY29wZXMpCisgICAgZGlzcGF0
Y2goMCkKKworCittYWNybyBqdW1wVHJ1ZU9yRmFsc2UoY29uZGl0aW9uT3AsIHNsb3cpCisgICAg
bG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEJv
b2xlYW5UYWcsIHQwLCAuc2xvdykKKyAgICBjb25kaXRpb25PcCh0MCwgLnRhcmdldCkKKyAgICBk
aXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuc2xv
dzoKKyAgICBjYWxsSGVscGVyKHNsb3cpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRf
b3BfbG9vcF9pZl90cnVlOgorICAgIG5vcAorX2xsaW50X29wX2p0cnVlOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFy
Z2V0KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qdHJ1
ZSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKKyAgICBub3AKK19sbGludF9vcF9qZmFs
c2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAg
bWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9s
bGludF9oZWxwZXJfamZhbHNlKQorCisKK21hY3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwgaW1t
ZWRpYXRlSGFuZGxlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAK
KyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxIYW5kbGVyKFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFy
Z2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuaW1tZWRpYXRlOgorICAgIG9yaSAx
LCB0MQorICAgIGltbWVkaWF0ZUhhbmRsZXIodDEsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykK
K2VuZAorCitfbGxpbnRfb3BfamVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVx
dWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0Ym56IHZhbHVlLCBNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRh
cmdldCkgYmllcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKyAgICAKKworX2xsaW50X29w
X2puZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAg
ICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRieiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpbmVxIHZhbHVl
LCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorCisKK19sbGludF9vcF9qbmVxX3B0cjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisg
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNo
CisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxU
aHJvdWdoCisub3BKbmVxUHRyQnJhbmNoOgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKy5v
cEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGNvbXBhcmUo
aW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUsIGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwg
dDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQyLCB0MykKKyAgICBi
aW5lcSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5v
cDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5qdW1wVGFyZ2V0KQorICAgIGRp
c3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgYmlhIHQwLCBMb3dlc3RUYWcsIC5zbG93Cisg
ICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0Miwg
SW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MywgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFk
eQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQorLm9wMU5vdElu
dFJlYWR5OgorICAgIGZpaTJkIHQxLCB0MCwgZnQwCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0
MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMk5vdEludDoKKyAgICBjaTJk
IHQxLCBmdDAKKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBmaWkyZCB0MywgdDIs
IGZ0MQorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3Bh
dGNoKDQpCisKKy5qdW1wVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKworLnNs
b3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxp
bnRfb3BfbG9vcF9pZl9sZXNzOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRh
cmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJkbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9s
bGludF9oZWxwZXJfamxlc3MpCisKKworX2xsaW50X29wX2pubGVzczoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2pubGVzcykKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyOgorICAg
IG5vcAorX2xsaW50X29wX2pncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21w
YXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3Qg
bGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXIp
CisKKworX2xsaW50X29wX2puZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29t
cGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCBy
aWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJk
bHRlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pu
Z3JlYXRlcikKKworCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzZXE6CisgICAgbm9wCitfbGxpbnRf
b3Bfamxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVu
ZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcSBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzc2VxKQorCisKK19sbGlu
dF9vcF9qbmxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0dW4gbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzZXEpCisKKworX2xs
aW50X29wX2xvb3BfaWZfZ3JlYXRlcmVxOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyZXE6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3Bfam5n
cmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdHVuIGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcmVxKQorCisKK19sbGlu
dF9vcF9sb29wX2hpbnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9K
SVRGb3JMb29wKCkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zd2l0Y2hfaW1tOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgNFtQ
Q10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0s
IHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MyAgICMgRklYTUU6IHdvdWxk
IGJlIG5pY2UgdG8gcGVlcGhvbGUgdGhpcyEKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRh
OjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0
MgorICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BTd2l0Y2hJbW1O
b3RJbnQKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0
MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0s
IC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFu
Y2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDMKKyAgICBsb2FkaSBbdDMsIHQw
LCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRpc3Bh
dGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoSW1tTm90SW50OgorICAgIGJpYiB0
MSwgTG93ZXN0VGFnLCAub3BTd2l0Y2hJbW1TbG93ICAjIEdvIHRvIHNsb3cgcGF0aCBpZiBpdCdz
IGEgZG91YmxlLgorLm9wU3dpdGNoSW1tRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2go
OFtQQ10pCisKKy5vcFN3aXRjaEltbVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3N3aXRjaF9pbW0pCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA0
W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3Qy
XSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQzCisgICAgbG9hZHAgQ29k
ZUJsb2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVm
ZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVxIHQxLCBDZWxsVGFn
LCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90
eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAg
SlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0MAorICAgIGJpbmVxIFN0cmluZ0ltcGw6Om1fbGVuZ3Ro
W3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU3RyaW5nSW1wbDo6
bV9kYXRhOFt0MF0sIHQxCisgICAgYnRpbnogU3RyaW5nSW1wbDo6bV9oYXNoQW5kRmxhZ3NbdDBd
LCBIYXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0Y2hDaGFyOEJpdAorICAgIGxvYWRoIFt0MV0s
IHQwCisgICAgam1wIC5vcFN3aXRjaENoYXJSZWFkeQorLm9wU3dpdGNoQ2hhcjhCaXQ6CisgICAg
bG9hZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENoYXJSZWFkeToKKyAgICBzdWJpIFNpbXBsZUp1bXBU
YWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hP
ZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAor
ICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9m
ZnNldFt0Ml0sIHQyCisgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCisgICAgYnRpeiB0MSwgLm9w
U3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCisK
Ky5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKwor
CitfbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9zdHJpbmcpCisgICAgZGlzcGF0Y2goMCkKKwor
CitfbGxpbnRfb3BfbmV3X2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0aXogMTJb
UENdLCAub3BOZXdGdW5jVW5jaGVja2VkCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BOZXdGdW5jRG9uZQorLm9w
TmV3RnVuY1VuY2hlY2tlZDoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmMp
Cisub3BOZXdGdW5jRG9uZToKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfZnVu
Y19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9uZXdfZnVuY19leHApCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBkb0NhbGwoaGVscGVy
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBM
TEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93KQorICAgIGJpbmVxIHQzLCB0
MiwgLm9wQ2FsbFNsb3cKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgYWRkcCAyNCwgUEMKKyAg
ICBsc2hpZnRpIDMsIHQzCisgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcg
dmFsdWUgb2YgY2ZyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAK
KyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIHQw
LCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBsb2FkaSA4IC0gMjRbUENdLCB0
MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgc3Rv
cmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNdCisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsg
UGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0
W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFnT2Zmc2V0W3QzXQorICAg
IG1vdmUgdDMsIGNmcgorICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFy
Z2V0W3QxXQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworLm9wQ2FsbFNsb3c6CisgICAgc2xv
d1BhdGhGb3JDYWxsKDYsIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfY2FsbDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY2FsbCkKKworCitfbGxpbnRf
b3BfY29uc3RydWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hl
bHBlcl9jb25zdHJ1Y3QpCisKKworX2xsaW50X29wX2NhbGxfdmFyYXJnczoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIF9sbGludF9oZWxwZXJfY2FsbF92YXJh
cmdzKQorCisKK19sbGludF9vcF9jYWxsX2V2YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IAorICAgICMgRXZhbCBpcyBleGVjdXRlZCBpbiBvbmUgb2YgdHdvIG1vZGVzOgorICAgICMKKyAg
ICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSByZWFsbHkgaW52b2tpbmcgZXZhbCgpIGluIHdoaWNo
IGNhc2UgdGhlCisgICAgIyAgICBleGVjdXRpb24gaXMgcGVyZm9tZWQgZW50aXJlbHkgaW5zaWRl
IHRoZSBoZWxwZXIsIGFuZCBpdAorICAgICMgICAgcmV0dXJucyB0aGUgUEMgb2YgYSBmdW5jdGlv
biB0aGF0IGp1c3QgcmV0dXJucyB0aGUgcmV0dXJuIHZhbHVlCisgICAgIyAgICB0aGF0IHRoZSBl
dmFsIHJldHVybmVkLgorICAgICMKKyAgICAjIDIpIFdlIGZpbmQgdGhhdCB3ZSdyZSBpbnZva2lu
ZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwoKSB0aGF0IGlzIG5vdAorICAgICMgICAgdGhlIHJlYWwg
ZXZhbC4gVGhlbiB0aGUgaGVscGVyIHJldHVybnMgdGhlIFBDIG9mIHRoZSB0aGluZyB0bworICAg
ICMgICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQuCisgICAgIworICAgICMgVGhpcyBhbGxvd3MgdXMg
dG8gaGFuZGxlIHR3byBjYXNlcywgd2hpY2ggd291bGQgcmVxdWlyZSBhIHRvdGFsIG9mCisgICAg
IyB1cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0ZSB0aGF0IGNhbm5vdCBiZSBlYXNpbHkgcGFja2Vk
IGludG8gdHdvCisgICAgIyByZWdpc3RlcnMgKEMgZnVuY3Rpb25zIGNhbiByZXR1cm4gdXAgdG8g
dHdvIHJlZ2lzdGVycywgZWFzaWx5KToKKyAgICAjCisgICAgIyAtIFRoZSBjYWxsIGZyYW1lIHJl
Z2lzdGVyLiBUaGlzIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBtb2RpZmllZAorICAgICMgICBi
eSB0aGUgaGVscGVyLCBidXQgdGhlIGNvbnZlbnRpb24gaXMgdGhhdCBpdCByZXR1cm5zIGl0LiBJ
dCdzIG5vdAorICAgICMgICB0b3RhbGx5IGNsZWFyIGlmIHRoYXQncyBuZWNlc3NhcnksIHNpbmNl
IHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUuCisgICAgIyAgIEJ1dCB0aGF0J3Mgb3VyIHN0eWxlIGlu
IHRoaXMgaGVyZSBpbnRlcnByZXRlciBzbyB3ZSBzdGljayB3aXRoIGl0LgorICAgICMKKyAgICAj
IC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBoZWxwZXIgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIHRoZSBl
dmFsIGFuZCBoYXMKKyAgICAjICAgdGhlIHJldHVybiB2YWx1ZSwgb3IgZGlkIG5vdCBleGVjdXRl
IHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3IgdXMKKyAgICAjICAgdG8gY2FsbC4KKyAgICAjCisg
ICAgIyAtIEVpdGhlcjoKKyAgICAjICAgLSBUaGUgSlMgcmV0dXJuIHZhbHVlICh0d28gcmVnaXN0
ZXJzKSwgb3IKKyAgICAjCisgICAgIyAgIC0gVGhlIFBDIHRvIGNhbGwuCisgICAgIworICAgICMg
SXQgdHVybnMgb3V0IHRvIGJlIGVhc2llciB0byBqdXN0IGFsd2F5cyBoYXZlIHRoaXMgcmV0dXJu
IHRoZSBjZnIKKyAgICAjIGFuZCBhIFBDIHRvIGNhbGwsIGFuZCB0aGF0IFBDIG1heSBiZSBhIGR1
bW15IHRodW5rIHRoYXQganVzdAorICAgICMgcmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUg
ZXZhbCByZXR1cm5lZC4KKyAgICAKKyAgICBzbG93UGF0aEZvckNhbGwoNCwgX2xsaW50X2hlbHBl
cl9jYWxsX2V2YWwpCisKKworX2xsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50OgorICAgIGRpc3Bh
dGNoQWZ0ZXJDYWxsKCkKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQx
CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFy
T2ZmQWN0aXZhdGlvbkNyZWF0ZWQKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1w
dHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkCisub3BUZWFyT2ZmQWN0
aXZhdGlvbkNyZWF0ZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2Fj
dGl2YXRpb24pCisub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdWJpIDEsIHQwICAgIyBHZXQgdGhlIHVubW9k
aWZpZWRBcmd1bWVudHNSZWdpc3RlcgorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBF
bXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZAorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCisub3BUZWFyT2ZmQXJndW1lbnRz
Tm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGRvUmV0dXJuKCkKKyAgICBs
b2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgor
ICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAgIHJldAorZW5kCisK
K19sbGludF9vcF9yZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9K
SVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3BfY2FsbF9w
dXRfcmVzdWx0OgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0
W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgdHJhY2VFeGVjdXRpb24oKSAjIE5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSBpdCB3b3VsZCBj
bG9iYmVyIHQxLCB0MAorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3JldF9vYmplY3Rf
b3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVw
aWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFJldE9iamVjdE9yVGhpc05v
dE9iamVjdAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJiYiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwg
Lm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgZG9SZXR1cm4oKQorCisub3BSZXRPYmpl
Y3RPclRoaXNOb3RPYmplY3Q6CisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3BfbWV0
aG9kX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIGlnbm9yZSBtZXRob2Qg
Y2hlY2tzIGFuZCB1c2Ugbm9ybWFsIGdldF9ieV9pZCBvcHRpbWl6YXRpb25zLgorICAgIGRpc3Bh
dGNoKDEpCisKKworX2xsaW50X29wX3N0cmNhdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N0cmNhdCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF90b19wcmltaXRpdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhb
UENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9QcmltaXRpdmVJc0ltbQor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJibmVxIFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1By
aW1pdGl2ZVNsb3dDYXNlCisub3BUb1ByaW1pdGl2ZUlzSW1tOgorICAgIHN0b3JlaSB0MSwgVGFn
T2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMs
IDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9QcmltaXRpdmVTbG93Q2FzZToKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfdG9fcHJpbWl0aXZlKQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX2dldF9wbmFtZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9nZXRfcG5hbWVzKQorICAgIGRpc3BhdGNoKDApICMgVGhlIGhlbHBl
ciBlaXRoZXIgYWR2YW5jZXMgdGhlIFBDIG9yIGp1bXBzIHVzIHRvIHNvbWV3aGVyZSBlbHNlLgor
CisKK19sbGludF9vcF9uZXh0X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSAxMltQQ10sIHQxCisgICAgbG9hZGkgMTZbUENdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MSwgOF0sIHQwCisgICAgYmllcSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4
XSwgLm9wTmV4dFBuYW1lRW5kCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6bV9qc1N0cmluZ3NbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDhdLCB0MworICAgIGFk
ZGkgMSwgdDAKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBs
b2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhd
CisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgOFtQ
Q10sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAgICBicG5lcSB0MSwgSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93CisgICAg
bG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0Ml0s
IHQwCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKKyAgICBidHB6
IFt0MF0sIC5vcE5leHRQbmFtZVRhcmdldAorLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29w
OgorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFt0MV0sIE51bGxU
YWcsIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsg
UGF5bG9hZE9mZnNldFt0MV0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0s
IHQxCisgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBhZGRwIDQsIHQw
CisgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wCisub3BOZXh0
UG5hbWVUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMjRbUENdKQorCisub3BOZXh0UG5hbWVF
bmQ6CisgICAgZGlzcGF0Y2goNykKKworLm9wTmV4dFBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfbmV4dF9wbmFtZSkgIyBUaGlzIGVpdGhlciBrZWVwcyB0aGUgUEMgd2hl
cmUgaXQgd2FzIChjYXVzaW5nIHVzIHRvIGxvb3ApIG9yIHNldHMgaXQgdG8gdGFyZ2V0LgorICAg
IGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3B1c2hfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX3Njb3BlKQorICAgIGRpc3Bh
dGNoKDIpCisKKworX2xsaW50X29wX3BvcF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3BvcF9zY29wZSkKKyAgICBkaXNwYXRjaCgxKQor
CisKK19sbGludF9vcF9wdXNoX25ld19zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfbmV3X3Njb3BlKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX2NhdGNoOgorICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJv
bSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKKyAgICAjIG1hY2hpbmUg
Y29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQg
ZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGlu
dF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRoZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wgY2Fs
bHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0aHJvd2luZworICAgICMgY29kZSBtdXN0
IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93aW5nIHRvIHRoZSBpbnRlcnByZXRlciwgYW5k
IGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJv
dy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRh
W3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JU
aHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2Fk
T2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09m
ZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5
bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpl
eGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAgICAgIAorICAgIGxvYWRpIDRbUENdLCB0MgorICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdHJhY2VFeGVjdXRpb24oKSAgIyBUaGlzIG5lZWRzIHRv
IGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIgdDAsIHQxLCB0MiwgdDMg
YWJvdmUuCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3c6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvdykKKyAgICBkaXNw
YXRjaCgyKQorCisKK19sbGludF9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3I6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvd19yZWZlcmVuY2Vf
ZXJyb3IpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfanNyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBhZGRpIDMgKiA0LCBQQywgdDEKKyAg
ICBzdG9yZWkgdDEsIFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisK
K19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBsb2FkcCBbY2ZyLCB0MCwgOF0sIFBDCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxp
bnRfb3BfZGVidWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9kZWJ1ZykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcm9maWxlX3dp
bGxfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYnRweiBKSVRTdGFja0ZyYW1lOjpl
bmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQorLm9wUHJvZmlsZVdp
bGxDYWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wcm9maWxlX2RpZF9j
YWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidHB6IEpJVFN0YWNrRnJhbWU6OmVuYWJs
ZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIC5vcFByb2ZpbGVEaWRDYWxsRG9uZQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQorLm9wUHJvZmlsZURpZENhbGxE
b25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2VuZDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X3Ro
cm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmU6CisgICAgIyBXaGVuIHRocm93aW5nIGZyb20gdGhl
IGludGVycHJldGVyIChpLmUuIHRocm93aW5nIGZyb20gTExJbnRIZWxwZXJzKSwgc28KKyAgICAj
IHRoZSB0aHJvdyB0YXJnZXQgaXMgbm90IG5lY2Vzc2FyaWx5IGludGVycHJldGVkIGNvZGUsIHdl
IGNvbWUgdG8gaGVyZS4KKyAgICAjIFRoaXMgZXNzZW50aWFsbHkgZW11bGF0ZXMgdGhlIEpJVCdz
IHRocm93aW5nIHByb3RvY29sLgorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFb
c3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0
MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisK
K19sbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lOgorICAgIHByZXNlcnZlUmV0dXJu
QWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRh
W3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwg
dDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKwor
CisjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9u
J3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KKyMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJp
c2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQKKyMgYXMgbXVjaC4K
KworbWFjcm8gbm90U3VwcG9ydGVkKCkKKyAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBj
cmFzaCgpCisgICAgZWxzZQorICAgICAgICAjIFdlIHNob3VsZCB1c2Ugd2hhdGV2ZXIgdGhlIHNt
YWxsZXN0IHBvc3NpYmxlIGluc3RydWN0aW9uIGlzLCBqdXN0IHRvCisgICAgICAgICMgZW5zdXJl
IHRoYXQgdGhlcmUgaXMgYSBnYXAgYmV0d2VlbiBpbnN0cnVjdGlvbiBsYWJlbHMuIElmIG11bHRp
cGxlCisgICAgICAgICMgc21hbGxlc3QgaW5zdHJ1Y3Rpb25zIGV4aXN0LCB3ZSBzaG91bGQgcGlj
ayB0aGUgb25lIHRoYXQgaXMgbW9zdAorICAgICAgICAjIGxpa2VseSByZXN1bHQgaW4gZXhlY3V0
aW9uIGJlaW5nIGhhbHRlZC4gQ3VycmVudGx5IHRoYXQgaXMgdGhlIGJyZWFrCisgICAgICAgICMg
aW5zdHJ1Y3Rpb24gb24gYWxsIGFyY2hpdGVjdHVyZXMgd2UncmUgaW50ZXJlc3RlZCBpbi4gKEJy
ZWFrIGlzIGludDMKKyAgICAgICAgIyBvbiBJbnRlbCwgd2hpY2ggaXMgMSBieXRlLCBhbmQgYmtw
dCBvbiBBUk12Nywgd2hpY2ggaXMgMiBieXRlcy4pCisgICAgICAgIGJyZWFrCisgICAgZW5kCitl
bmQKKworX2xsaW50X29wX2dldF9hcnJheV9sZW5ndGg6CisgICAgbm90U3VwcG9ydGVkKCkKKwor
X2xsaW50X29wX2dldF9ieV9pZF9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRf
b3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRf
b3BfZ2V0X2J5X2lkX2N1c3RvbV9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRf
b3BfZ2V0X2J5X2lkX2N1c3RvbV9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9v
cF9nZXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0
X2J5X2lkX2dldHRlcl9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0
X2J5X2lkX2dldHRlcl9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0
X2J5X2lkX2dldHRlcl9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9z
ZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfc3RyaW5nX2xlbmd0aDoK
KyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX2dlbmVyaWM6CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9yZXBsYWNlOgorICAgIG5vdFN1
cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbjoKKyAgICBub3RTdXBw
b3J0ZWQoKQorCisKKyMgSW5kaWNhdGUgdGhlIGVuZCBvZiBMTEludC4KK19sbGludF9lbmQ6Cisg
ICAgY3Jhc2goKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIK
KyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKKyNpbmNsdWRlICJMTEludEFzc2Vt
Ymx5LmgiCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IExvd0xldmVsSW50ZXJwcmV0ZXJfaAorI2RlZmluZSBMb3dMZXZlbEludGVycHJldGVyX2gKKwor
I2luY2x1ZGUgIk9wY29kZS5oIgorCisjZGVmaW5lIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wob3Bj
b2RlLCBsZW5ndGgpIGV4dGVybiAiQyIgdm9pZCBsbGludF8jI29wY29kZSgpOworICAgIEZPUl9F
QUNIX09QQ09ERV9JRChMTElOVF9JTlNUUlVDVElPTl9ERUNMKTsKKyN1bmRlZiBMTElOVF9JTlNU
UlVDVElPTl9ERUNMCisKK2V4dGVybiAiQyIgdm9pZCBsbGludF9iZWdpbigpOworZXh0ZXJuICJD
IiB2b2lkIGxsaW50X2VuZCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Byb2dyYW1fcHJvbG9n
dWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9ldmFsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMi
IHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZv
aWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMi
IHZvaWQgbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGlu
dF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
dGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSgpOworCisjZW5kaWYgLy8gTG93TGV2ZWxJbnRl
cnByZXRlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5y
YgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVyCisgIGRlZiBpbml0aWFsaXpl
KG5hbWUpCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFybVY3T3BlcmFuZAor
ICAgIEBuYW1lCisgIGVuZAorZW5kCisKK0FSTXY3X0RBVEFfUkVHID0gU3BlY2lhbFJlZ2lzdGVy
Lm5ldygiaXAiKQorQVJNdjdfQUREUl9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyMyIpCisK
K2RlZiBtb3ZlSW1tZWRpYXRlKHZhbHVlLCByZWdpc3RlcikKKyAgIyBDdXJyZW50bHkgd2Ugb25s
eSBoYW5kbGUgdGhlIHNpbXBsZSBjYXNlcywgYW5kIGZhbGwgYmFjayB0byBtb3YvbW92dCBmb3Ig
dGhlIGNvbXBsZXggb25lcy4KKyAgaWYgdmFsdWUgPj0gMCAmJiB2YWx1ZSA8IDI1NgorICAgICRh
c20ucHV0cyAibW92dyBcIyN7dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgIGVs
c2lmICh+dmFsdWUpID49IDAgJiYgKH52YWx1ZSkgPCAyNTYKKyAgICAkYXNtLnB1dHMgIm12bncg
XCMje352YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzZQorICAgICRhc20u
cHV0cyAibW92dyBcIyN7dmFsdWUgJiAweGZmZmZ9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0i
CisgICAgaWYgKHZhbHVlICYgMHhmZmZmMDAwMCkgIT0gMAorICAgICAgJGFzbS5wdXRzICJtb3Z0
IFwjI3t2YWx1ZSA+PiAxNn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAg
ZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2Fz
ZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiCisgICAgICAicjAiCisgICAgd2hlbiAi
dDEiLCAiYTEiLCAicjEiCisgICAgICAicjEiCisgICAgd2hlbiAidDIiLCAiYTIiCisgICAgICAi
cjIiCisgICAgd2hlbiAiYTMiCisgICAgICAicjMiCisgICAgd2hlbiAidDMiCisgICAgICAicjQi
CisgICAgd2hlbiAidDQiCisgICAgICAicjciCisgICAgd2hlbiAiY2ZyIgorICAgICAgInI1Igor
ICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJl
cGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxl
TWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xv
YWRTdG9yZVdyYXAKKyAgICB5aWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQK
KyAgZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIsICJmciIK
KyAgICAgICJkMCIKKyAgICB3aGVuICJmcjEiLAorICAgICAgImQxIgorICAgIHdoZW4gImZyMiIK
KyAgICAgICJkMiIKKyAgICB3aGVuICJmcjMiCisgICAgICAiZDMiCisgICAgd2hlbiAiZnI0Igor
ICAgICAgImQ0IgorICAgIHdoZW4gImZyNSIKKyAgICAgICJkNSIKKyAgICBlbHNlCisgICAgICBy
YWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9y
eU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAg
ICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAg
eWllbGQgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3T3Bl
cmFuZAorICAgIHJhaXNlICJJbnZhbGlkIGltbWVkaWF0ZSAje3ZhbHVlfSIgaWYgdmFsdWUgPCAw
IG9yIHZhbHVlID4gMjU1CisgICAgIiMke3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQ
cmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2li
bGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3
TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkIHNlbGYKKyAgZW5kCitlbmQKKworbW9kdWxlIEFSTXY3
QWRkcmVzc1V0aWxpdGllcworICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgc2VsZi5hcm1W
N1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICAkYXNtLnB1dHMgIlx0bGRyICN7c2Vs
Zi5hcm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFuZH0sICN7QVJNdjdfREFUQV9SRUcuYXJtVjdPcGVy
YW5kfSIKKyAgICB5aWVsZCBBUk12N19EQVRBX1JFRworICAgICRhc20ucHV0cyAiXHRzdHIgI3tB
Uk12N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9LCAje3NlbGYuYXJtVjdQb3NzaWJseU1lbW9yeU9w
ZXJhbmR9IgorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGluY2x1ZGUgQVJNdjdBZGRy
ZXNzVXRpbGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAor
ICAgIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAg
ICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0
LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAgICJbI3tiYXNlLmFy
bVY3T3BlcmFuZH0sICN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfV0iCisgICAgZWxzZQor
ICAgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tvZmZzZXQuYXJtVjdPcGVyYW5kfV0iCisg
ICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBpbmNsdWRlIEFSTXY3QWRk
cmVzc1V0aWxpdGllcworCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQK
KyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAgICAgbW92ZUltbWVkaWF0ZShvZmZzZXQudmFs
dWUsIEFSTXY3X0FERFJfUkVHKQorICAgICAgJGFzbS5wdXRzICJhZGR3ICN7QVJNdjdfQUREUl9S
RUcuYXJtVjdPcGVyYW5kfSwgI3tiYXNlLmFybVY3T3BlcmFuZH0iCisgICAgZW5kCisgIGVuZAor
ICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVl
ICE9IDAKKyAgICAgICJbI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFy
bVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGV9XSIKKyAgICBlbHNlCisgICAgICAiWyN7YmFzZS5h
cm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGV9XSIKKyAg
ICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgIGluY2x1ZGUgQVJN
djdBZGRyZXNzVXRpbGl0aWVzCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlP
cGVyYW5kCisgICAgbW92ZUltbWVkaWF0ZShhZGRyZXNzLnZhbHVlLCBBUk12N19BRERSX1JFRykK
KyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICAiWyN7QVJN
djdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfV0iCisgIGVuZAorZW5kCisKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4
MyBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tl
bmRzIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNldHRp
bmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitjbGFzcyBBc3NlbWJsZXIKKyAgZGVmIGluaXRp
YWxpemUob3V0cCkKKyAgICBAb3V0cCA9IG91dHAKKyAgICBAc3RhdGUgPSA6Y3BwCisgIGVuZAor
ICAKKyAgZGVmIGVudGVyQXNtCisgICAgQG91dHAucHV0cyAiYXNtICgiCisgICAgQHN0YXRlID0g
OmFzbQorICBlbmQKKyAgCisgIGRlZiBsZWF2ZUFzbQorICAgIEBvdXRwLnB1dHMgIik7IgorICAg
IEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBkZWYgaW5Bc20KKyAgICBlbnRlckFzbQorICAg
IHlpZWxkCisgICAgbGVhdmVBc20KKyAgZW5kCisgIAorICBkZWYgcHV0cyhsaW5lKQorICAgIHJh
aXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnB1dHMoKGxpbmUgKyAiXG4iKS5p
bnNwZWN0KQorICBlbmQKKyAgCisgIGRlZiBjb21tZW50KHRleHQpCisgICAgQG91dHAucHV0cyAi
Ly8gI3t0ZXh0fSIKKyAgZW5kCitlbmQKKworJGFzbSA9IEFzc2VtYmxlci5uZXcoJHN0ZG91dCkK
KworYXNtRmlsZSA9IEFSR1Yuc2hpZnQKK29mZnNldHNGaWxlID0gQVJHVi5zaGlmdAorCithc3Qg
PSBwYXJzZShsZXgoSU86OnJlYWQoYXNtRmlsZSkpKQorb2Zmc2V0c0xpc3QsIGNvbmZpZ0luZGV4
ID0gb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChvZmZzZXRzRmlsZSkKKworZm9yU2V0dGlu
Z3MoY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdClbY29uZmlnSW5kZXhdLCBhc3QpIHsK
KyAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgIGFzc2VydENv
bmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAgbG93TGV2ZWxBU1QgPSBsb3dMZXZlbEFT
VC5yZXNvbHZlKCpidWlsZE9mZnNldHNNYXAobG93TGV2ZWxBU1QsIG9mZnNldHNMaXN0KSkKKyAg
ZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJh
Y2tlbmQpIHsKKyAgICAkYXNtLmluQXNtIHsKKyAgICAgIGxvd0xldmVsQVNULmxvd2VyKGJhY2tl
bmQpCisgICAgfQorICB9Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hc3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXN0LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXN0LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
QmFzZSB1dGlsaXR5IHR5cGVzIGZvciB0aGUgQVNULiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBWYWxp
ZCBtZXRob2RzIGZvciBOb2RlOgorIworIyBub2RlLmNoaWxkcmVuIC0+IFJldHVybnMgYW4gYXJy
YXkgb2YgaW1tZWRpYXRlIGNoaWxkcmVuLgorIworIyBub2RlLmRlc2NlbmRlbnRzIC0+IFJldHVy
bnMgYW4gYXJyYXkgb2YgYWxsIHN0cmljdCBkZXNjZW5kYW50cyAoY2hpbGRyZW4KKyMgICAgIGFu
ZCBjaGlsZHJlbiBvZiBjaGlsZHJlbiwgdHJhbnNpdGl2ZWx5KS4KKyMKKyMgbm9kZS5mbGF0dGVu
IC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgc3RyaWN0IGRlc2NlbmRhbnRzIGFu
ZAorIyAgICAgdGhlIG5vZGUgaXRzZWxmLgorIworIyBub2RlLmZpbHRlcih0eXBlKSAtPiBSZXR1
cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhvc2UgZWxlbWVudHMgaW4KKyMgICAgIG5vZGUuZmxh
dHRlbiB0aGF0IGFyZSBvZiB0aGUgZ2l2ZW4gdHlwZSAoaXNfYT8gdHlwZSByZXR1cm5zIHRydWUp
LgorIworIyBub2RlLm1hcENoaWxkcmVue3x2fCAuLi59IC0+IFJldHVybnMgYSBuZXcgbm9kZSB3
aXRoIGFsbCBjaGlsZHJlbgorIyAgICAgcmVwbGFjZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBi
bG9jay4KKyMKKyMgRXhhbXBsZXM6CisjCisjIG5vZGUuZmlsdGVyKFNldHRpbmcpLnVuaXEgLT4g
UmV0dXJucyBhbGwgb2YgdGhlIHNldHRpbmdzIHRoYXQgdGhlIEFTVCdzCisjICAgICBJZlRoZW5F
bHNlIGJsb2NrcyBkZXBlbmQgb24uCisjCisjIG5vZGUuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5p
cSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc3RydWN0dXJlIG9mZnNldHMKKyMgICAgIHRoYXQgdGhl
IEFTVCBkZXBlbmRzIG9uLgorCitjbGFzcyBOb2RlCisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2lu
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIEBjb2RlT3JpZ2luID0gY29k
ZU9yaWdpbgorICBlbmQKKyAgCisgIGRlZiBjb2RlT3JpZ2luU3RyaW5nCisgICAgImxpbmUgbnVt
YmVyICN7QGNvZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBkZXNjZW5kYW50cworICAgIGNo
aWxkcmVuLmNvbGxlY3R7fHZ8IHYuZmxhdHRlbn0uZmxhdHRlbgorICBlbmQKKyAgCisgIGRlZiBm
bGF0dGVuCisgICAgW3NlbGZdICsgZGVzY2VuZGFudHMKKyAgZW5kCisgIAorICBkZWYgZmlsdGVy
KHR5cGUpCisgICAgZmxhdHRlbi5zZWxlY3R7fHZ8IHYuaXNfYT8gdHlwZX0KKyAgZW5kCitlbmQK
KworY2xhc3MgTm9DaGlsZHJlbiA8IE5vZGUKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtd
CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgc2VsZgorICBlbmQKK2VuZAorCitj
bGFzcyBTdHJ1Y3RPZmZzZXRLZXkKKyAgYXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgIAor
ICBkZWYgaW5pdGlhbGl6ZShzdHJ1Y3QsIGZpZWxkKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAg
ICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisgIGRlZiBoYXNoCisgICAgQHN0cnVjdC5oYXNo
ICsgQGZpZWxkLmhhc2ggKiAzCisgIGVuZAorICAKKyAgZGVmIGVxbD8ob3RoZXIpCisgICAgQHN0
cnVjdCA9PSBvdGhlci5zdHJ1Y3QgYW5kIEBmaWVsZCA9PSBvdGhlci5maWVsZAorICBlbmQKK2Vu
ZAorICAgIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQVNUIG5vZGVzLiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgU3RydWN0T2Zmc2V0
IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5kCisgIAor
ICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yRmllbGQoY29kZU9yaWdpbiwgc3Ry
dWN0LCBmaWVsZCkKKyAgICBrZXkgPSBTdHJ1Y3RPZmZzZXRLZXkubmV3KHN0cnVjdCwgZmllbGQp
CisgICAgCisgICAgdW5sZXNzIEBAbWFwcGluZ1trZXldCisgICAgICBAQG1hcHBpbmdba2V5XSA9
IFN0cnVjdE9mZnNldC5uZXcoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBlbmQKKyAg
ICBAQG1hcHBpbmdba2V5XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7c3RydWN0fTo6
I3tmaWVsZH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAgICBpZiBAc3RydWN0ICE9
IG90aGVyLnN0cnVjdAorICAgICAgcmV0dXJuIEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICAg
IGVuZAorICAgIEBmaWVsZCA8PT4gb3RoZXIuZmllbGQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6
ZW9mIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0CisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3Ry
dWN0ID0gc3RydWN0CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxm
LmZvck5hbWUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHVubGVzcyBAQG1hcHBpbmdbc3RydWN0
XQorICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBTaXplb2YubmV3KGNvZGVPcmlnaW4sIHN0cnVj
dCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbc3RydWN0XQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgInNpemVvZiAje0BzdHJ1Y3R9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIpCisg
ICAgQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0
ZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnZhbHVlCisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YWx1ZSA9
IHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3t2YWx1ZX0iCisgIGVuZAorICAK
KyAgZGVmID09KG90aGVyKQorICAgIG90aGVyLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFs
dWUgPT0gQHZhbHVlCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMgPCBOb2RlCisg
IGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0
CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxl
ZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBZGRJbW1lZGlh
dGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICsgI3tyaWdodC5kdW1wfSkiCisg
IGVuZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDps
ZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0g
cmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAg
ZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBTdWJJbW1lZGlhdGVzLm5ldyhjb2RlT3Jp
Z2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgICIoI3tsZWZ0LmR1bXB9IC0gI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2Ns
YXNzIE11bEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisg
IAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBNdWxJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxl
ZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0
LmR1bXB9ICogI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0
ZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxk
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BjaGlsZF0KKyAgZW5kCisgIAorICBk
ZWYgbWFwQ2hpbGRyZW4KKyAgICBOZWdJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBA
Y2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigtI3tAY2hpbGQuZHVtcH0pIgor
ICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRl
ciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9
IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNz
IEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gUmVnaXN0ZXJJRC5uZXco
Y29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklE
IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFt
ZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBw
aW5nW25hbWVdID0gRlBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAor
ICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBl
bmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5h
bWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQor
ICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1h
cHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFZhcmlhYmxlLm5ldyhjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzIDwgTm9kZQorICBh
dHRyX3JlYWRlciA6YmFzZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgYmFzZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNl
CisgICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtA
YmFzZSwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBZGRyZXNz
Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQG9mZnNldCkpCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQuZHVtcH1bI3tiYXNlLmR1bXB9XSIKKyAgZW5k
CitlbmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFzZSwgOmlu
ZGV4LCA6c2NhbGUsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGJh
c2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGJh
c2UgPSBiYXNlCisgICAgQGluZGV4ID0gaW5kZXgKKyAgICBAc2NhbGUgPSBzY2FsZQorICAgIHJh
aXNlIHVubGVzcyBbMSwgMiwgNCwgOF0ubWVtYmVyPyBAc2NhbGUKKyAgICBAb2Zmc2V0ID0gb2Zm
c2V0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BiYXNlLCBAaW5kZXgsIEBvZmZz
ZXRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQmFzZUluZGV4Lm5ldyhjb2Rl
T3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQGluZGV4KSwgQHNjYWxlLCAoeWllbGQgQG9m
ZnNldCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQuZHVtcH1bI3tiYXNl
LmR1bXB9LCAje2luZGV4LmR1bXB9LCAje3NjYWxlfV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFi
c29sdXRlQWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmFkZHJlc3MKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGFkZHJlc3MpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIj
e2FkZHJlc3MuZHVtcH1bXSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24gPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpvcGNvZGUsIDpvcGVyYW5kcworICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgb3Bjb2RlLCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBvcGNvZGUgPSBvcGNvZGUKKyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcworICBlbmQKKyAgCisg
IGRlZiBjaGlsZHJlbgorICAgIG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
KCZwcm9jKQorICAgIEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBAb3Bjb2RlLCBAb3BlcmFu
ZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdCIgKyBvcGNvZGUu
dG9fcyArICIgIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKQorICBl
bmQKK2VuZAorCitjbGFzcyBFcnJvciA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgIlx0ZXJyb3IiCisgIGVuZAorZW5kCisKK2NsYXNzIENvbnN0RGVjbCA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOnZhcmlhYmxlLCA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YXJpYWJs
ZSA9IHZhcmlhYmxlCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbQHZhcmlhYmxlLCBAdmFsdWVdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
CisgICAgQ29uc3REZWNsLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHZhcmlhYmxlKSwgKHlpZWxk
IEB2YWx1ZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiY29uc3QgI3tAdmFyaWFibGUu
ZHVtcH0gPSAje0B2YWx1ZS5kdW1wfSIKKyAgZW5kCitlbmQKKworJGxhYmVsTWFwcGluZyA9IHt9
CisKK2NsYXNzIExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdp
biwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwg
bmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/
IExhYmVsCisgICAgZWxzZQorICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExhYmVsLm5ldyhj
b2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTG9j
YWxMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFt
ZSA9IG5hbWUKKyAgZW5kCisKKyAgQEB1bmlxdWVOYW1lQ291bnRlciA9IDAKKyAgCisgIGRlZiBz
ZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVd
CisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFi
ZWxNYXBwaW5nW25hbWVdLmlzX2E/IExvY2FsTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxN
YXBwaW5nW25hbWVdID0gTG9jYWxMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQK
KyAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIHNlbGYudW5pcXVlKGNv
bW1lbnQpCisgICAgbmV3TmFtZSA9ICJfI3tjb21tZW50fSIKKyAgICBpZiAkbGFiZWxNYXBwaW5n
W25ld05hbWVdCisgICAgICB3aGlsZSAkbGFiZWxNYXBwaW5nW25ld05hbWUgPSAiXyN7QEB1bmlx
dWVOYW1lQ291bnRlcn1fI3tjb21tZW50fSJdCisgICAgICAgIEBAdW5pcXVlTmFtZUNvdW50ZXIg
Kz0gMQorICAgICAgZW5kCisgICAgZW5kCisgICAgZm9yTmFtZShuaWwsIG5ld05hbWUpCisgIGVu
ZAorICAKKyAgZGVmIGNsZWFuTmFtZQorICAgIGlmIG5hbWUgPX4gL15cLi8KKyAgICAgICJfIiAr
IG5hbWVbMS4uLTFdCisgICAgZWxzZQorICAgICAgbmFtZQorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVy
ZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBsYWJlbCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsYWJlbCA9IGxh
YmVsCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0KKyAgZW5kCisgIAor
ICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIExv
Y2FsTGFiZWxSZWZlcmVuY2UgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtA
bGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTG9jYWxMYWJlbFJlZmVy
ZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5h
bWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1l
CisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGlz
dAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGlzdCkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBsaXN0ID0gbGlzdAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IGxpc3QKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgU2VxdWVuY2Uu
bmV3KGNvZGVPcmlnaW4sIEBsaXN0Lm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICBsaXN0LmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiXG4iKQorICBlbmQKK2VuZAorCitj
bGFzcyBUcnVlIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQorICAgIHN1cGVyKG5pbCkK
KyAgZW5kCisgIAorICBAQGluc3RhbmNlID0gVHJ1ZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3Rh
bmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIHRydWUKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICJ0cnVlIgorICBlbmQKK2VuZAorCitjbGFzcyBGYWxz
ZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAor
ICAKKyAgQEBpbnN0YW5jZSA9IEZhbHNlLm5ldworICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UKKyAg
ICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVmIHZhbHVlCisgICAgZmFsc2UKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICJmYWxzZSIKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZUNsYXNz
CisgIGRlZiBhc05vZGUKKyAgICBUcnVlLmluc3RhbmNlCisgIGVuZAorZW5kCisKK2NsYXNzIEZh
bHNlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAgIEZhbHNlLmluc3RhbmNlCisgIGVuZAorZW5kCisK
K2NsYXNzIFNldHRpbmcgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBz
ZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVd
CisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBTZXR0aW5nLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
bmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0
LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmln
aHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5k
CisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBbmQubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBA
bGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xl
ZnQuZHVtcH0gYW5kICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBPciA8IE5v
ZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9
IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE9yLm5l
dyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IG9yICN7cmlnaHQuZHVtcH0pIgorICBlbmQK
K2VuZAorCitjbGFzcyBOb3QgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAY2hpbGQgPSBjaGlsZAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwg
QHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5vdC5uZXcoY29kZU9y
aWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKG5vdCAj
e2NoaWxkLmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgU2tpcCA8IE5vQ2hpbGRyZW4KKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgIlx0c2tpcCIKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVu
RWxzZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnByZWRpY2F0ZSwgOnRoZW5DYXNlCisgIGF0dHJf
YWNjZXNzb3IgOmVsc2VDYXNlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBwcmVk
aWNhdGUsIHRoZW5DYXNlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHByZWRpY2F0ZSA9
IHByZWRpY2F0ZQorICAgIEB0aGVuQ2FzZSA9IHRoZW5DYXNlCisgICAgQGVsc2VDYXNlID0gU2tp
cC5uZXcoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBpZiBAZWxz
ZUNhc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2UsIEBlbHNlQ2FzZV0KKyAgICBlbHNl
CisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNlXQorICAgIGVuZAorICBlbmQKKyAgCisgIGRl
ZiBtYXBDaGlsZHJlbgorICAgIElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAcHJl
ZGljYXRlKSwgKHlpZWxkIEB0aGVuQ2FzZSksICh5aWVsZCBAZWxzZUNhc2UpKQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgImlmICN7cHJlZGljYXRlLmR1bXB9XG4iICsgdGhlbkNhc2UuZHVt
cCArICJcbmVsc2VcbiIgKyBlbHNlQ2FzZS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2VuZAorCitj
bGFzcyBNYWNybyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5hbWUsIDp2YXJpYWJsZXMsIDpib2R5
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgICBAdmFyaWFibGVz
ID0gdmFyaWFibGVzCisgICAgQGJvZHkgPSBib2R5CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVu
CisgICAgQHZhcmlhYmxlcyArIFtAYm9keV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICBNYWNyby5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEB2YXJpYWJsZXMubWFwe3x2fCB5aWVs
ZCB2fSwgKHlpZWxkIEBib2R5KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJtYWNybyAj
e25hbWV9KCIgKyB2YXJpYWJsZXMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpICsgIilc
biIgKyBib2R5LmR1bXAgKyAiXG5lbmQiCisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvQ2FsbCA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5hbWUsIDpvcGVyYW5kcworICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAbmFtZSA9IG5hbWUKKyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcworICAgIHJhaXNlIHVubGVz
cyBAb3BlcmFuZHMKKyAgICBAb3BlcmFuZHMuZWFjaHt8dnwgcmFpc2UgdW5sZXNzIHZ9CisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgQG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIG1h
cENoaWxkcmVuKCZwcm9jKQorICAgIE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEBv
cGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0I3tuYW1l
fSgiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpICsgIikiCisgIGVu
ZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRz
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tl
bmRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YmFja2VuZHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIng4NiIKKwor
QkFDS0VORFMgPQorICBbCisgICAiWDg2IiwKKyAgICJBUk12NyIKKyAgXQorCitXT1JLSU5HX0JB
Q0tFTkRTID0KKyAgWworICAgIlg4NiIKKyAgXQorCitCQUNLRU5EX1BBVFRFUk4gPSBSZWdleHAu
bmV3KCdcXEEoJyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFonKQorCitjbGFzcyBOb2Rl
CisgIGRlZiBsb3dlcihuYW1lKQorICAgIHNlbmQoImxvd2VyIiArIG5hbWUpCisgIGVuZAorZW5k
CisKKyMgT3ZlcnJpZGVzIGZvciBsb3dlcigpIGZvciB0aG9zZSBub2RlcyB0aGF0IGFyZSBiYWNr
ZW5kLWFnbm9zdGljCisKK2RlZiBzYW5pdGl6ZUxhYmVsTmFtZShuYW1lKQorICAjIFNvbWUgcGxh
dGZvcm1zIGRvbid0IHdhbnQgdGhlIGxlYWRpbmcgIl8iLiBJZiB3ZSBldmVyIHdhbnQgdG8gZG8g
c29tZXRoaW5nCisgICMgYWJvdXQgdGhhdCwgaXQgd291bGQgYmUgaGVyZS4KKyAgbmFtZQorZW5k
CisKK2NsYXNzIExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAgICRhc20ucHV0cyAiLmdsb2Js
ICN7c2FuaXRpemVMYWJlbE5hbWUoc2VsZi5uYW1lKX0iCisgICAgJGFzbS5wdXRzICIje3Nhbml0
aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJl
bAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHMgIkxfb2ZmbGluZWFzbV8je3NlbGYu
bmFtZVsxLi4tMV19OiIKKyAgZW5kCitlbmQKKworY2xhc3MgU2tpcAorICBkZWYgbG93ZXIobmFt
ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAg
QGxpc3QuZWFjaCB7CisgICAgICB8IG5vZGUgfAorICAgICAgbm9kZS5sb3dlcihuYW1lKQorICAg
IH0KKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
Z2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0
X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAorIyEvdXNyL2Jpbi9l
bnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiskOiA8PCBG
aWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAib2Zm
c2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJh
bnNmb3JtIgorCitkZWYgZW1pdE1hZ2ljTnVtYmVyCisgIE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVh
Y2ggeworICAgIHwgbnVtYmVyIHwKKyAgICBwdXRzICIje251bWJlcn0sIgorICB9CitlbmQKKwor
b3JpZ2luYWxBU1QgPSBwYXJzZShsZXgoJHN0ZGluLnJlYWQpKQorCitlbWl0Q29kZUluQWxsQ29u
ZmlndXJhdGlvbnMob3JpZ2luYWxBU1QpIHsKKyAgfCBzZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBp
bmRleCB8CisgIG9mZnNldHNMaXN0ID0gYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29y
dAorICBzaXplc0xpc3QgPSBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CisgIAorICBsZW5n
dGggPSAoT0ZGU0VUX01BR0lDX05VTUJFUlMuc2l6ZSArIDEpICogKDEgKyBvZmZzZXRzTGlzdC5z
aXplICsgc2l6ZXNMaXN0LnNpemUpCisgIAorICBwdXRzICJzdGF0aWMgY29uc3QgdW5zaWduZWQg
ZXh0cmFjdG9yVGFibGVbI3tsZW5ndGh9XSA9IHsiCisgIGVtaXRNYWdpY051bWJlcgorICBwdXRz
ICIje2luZGV4fSwiCisgIG9mZnNldHNMaXN0LmVhY2ggeworICAgIHwgb2Zmc2V0IHwKKyAgICBl
bWl0TWFnaWNOdW1iZXIKKyAgICBwdXRzICJPRkZMSU5FX0FTTV9PRkZTRVRPRigje29mZnNldC5z
dHJ1Y3R9LCAje29mZnNldC5maWVsZH0pLCIKKyAgfQorICBzaXplc0xpc3QuZWFjaCB7CisgICAg
fCBvZmZzZXQgfAorICAgIGVtaXRNYWdpY051bWJlcgorICAgIHB1dHMgInNpemVvZigje29mZnNl
dC5zdHJ1Y3R9KSwiCisgIH0KKyAgcHV0cyAifTsiCit9CisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTg4IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitNQUNST19JTlNUUlVDVElPTlMgPQorICBbCisgICAiYWRkaSIsCisgICAiYW5kaSIs
CisgICAibHNoaWZ0aSIsCisgICAibXVsaSIsCisgICAibmVnaSIsCisgICAibm90aSIsCisgICAi
b3JpIiwKKyAgICJyc2hpZnRpIiwKKyAgICJ1cnNoaWZ0aSIsCisgICAic3ViaSIsCisgICAieG9y
aSIsCisgICAibG9hZGkiLAorICAgImxvYWRiIiwKKyAgICJsb2FkaCIsCisgICAic3RvcmVpIiwK
KyAgICJzdG9yZWIiLAorICAgImxvYWRkIiwKKyAgICJtb3ZlZCIsCisgICAic3RvcmVkIiwKKyAg
ICJhZGRkIiwKKyAgICJkaXZkIiwKKyAgICJzdWJkIiwKKyAgICJtdWxkIiwKKyAgICJzcXJ0ZCIs
CisgICAiY2kyZCIsCisgICAiZmlpMmQiLCAjIHVzYWdlOiBmaWkyZCA8Z3ByIHdpdGggbGVhc3Qg
c2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+LCA8ZnBy
PgorICAgImZkMmlpIiwgIyB1c2FnZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0aCBsZWFzdCBzaWdu
aWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4KKyAgICJiZGVx
IiwKKyAgICJiZG5lcSIsCisgICAiYmRndCIsCisgICAiYmRndGVxIiwKKyAgICJiZGx0IiwKKyAg
ICJiZGx0ZXEiLAorICAgImJkZXF1biIsCisgICAiYmRuZXF1biIsCisgICAiYmRndHVuIiwKKyAg
ICJiZGd0ZXF1biIsCisgICAiYmRsdHVuIiwKKyAgICJiZGx0ZXF1biIsCisgICAiYnRkMmkiLAor
ICAgInRkMmkiLAorICAgImJjZDJpIiwKKyAgICJtb3ZkeiIsCisgICAicG9wIiwKKyAgICJwdXNo
IiwKKyAgICJtb3ZlIiwKKyAgICJzeGkycCIsCisgICAienhpMnAiLAorICAgIm5vcCIsCisgICAi
YmllcSIsCisgICAiYmluZXEiLAorICAgImJpYSIsCisgICAiYmlhZXEiLAorICAgImJpYiIsCisg
ICAiYmliZXEiLAorICAgImJpZ3QiLAorICAgImJpZ3RlcSIsCisgICAiYmlsdCIsCisgICAiYmls
dGVxIiwKKyAgICJiYmVxIiwKKyAgICJiYm5lcSIsCisgICAiYmJhIiwKKyAgICJiYmFlcSIsCisg
ICAiYmJiIiwKKyAgICJiYmJlcSIsCisgICAiYmJndCIsCisgICAiYmJndGVxIiwKKyAgICJiYmx0
IiwKKyAgICJiYmx0ZXEiLAorICAgImJ0aW8iLAorICAgImJ0aXMiLAorICAgImJ0aXoiLAorICAg
ImJ0aW56IiwKKyAgICJidGJvIiwKKyAgICJidGJzIiwKKyAgICJidGJ6IiwKKyAgICJidGJueiIs
CisgICAiam1wIiwKKyAgICJiYWRkaW8iLAorICAgImJhZGRpcyIsCisgICAiYmFkZGl6IiwKKyAg
ICJiYWRkaW56IiwKKyAgICJic3ViaW8iLAorICAgImJzdWJpcyIsCisgICAiYnN1Yml6IiwKKyAg
ICJic3ViaW56IiwKKyAgICJibXVsaW8iLAorICAgImJtdWxpcyIsCisgICAiYm11bGl6IiwKKyAg
ICJibXVsaW56IiwKKyAgICJib3JpbyIsCisgICAiYm9yaXMiLAorICAgImJvcml6IiwKKyAgICJi
b3JpbnoiLAorICAgImJyZWFrIiwKKyAgICJjYWxsIiwKKyAgICJyZXQiLAorICAgImNpZXEiLAor
ICAgImNpbmVxIiwKKyAgICJjaWEiLAorICAgImNpYWVxIiwKKyAgICJjaWIiLAorICAgImNpYmVx
IiwKKyAgICJjaWd0IiwKKyAgICJjaWd0ZXEiLAorICAgImNpbHQiLAorICAgImNpbHRlcSIsCisg
ICAidGlvIiwKKyAgICJ0aXMiLAorICAgInRpeiIsCisgICAidGlueiIsCisgICAidGJvIiwKKyAg
ICJ0YnMiLAorICAgInRieiIsCisgICAidGJueiIsCisgICAicGVlayIsCisgICAicG9rZSIsCisg
ICAiYnBlcSIsCisgICAiYnBuZXEiLAorICAgImJwYSIsCisgICAiYnBhZXEiLAorICAgImJwYiIs
CisgICAiYnBiZXEiLAorICAgImJwZ3QiLAorICAgImJwZ3RlcSIsCisgICAiYnBsdCIsCisgICAi
YnBsdGVxIiwKKyAgICJhZGRwIiwKKyAgICJhbmRwIiwKKyAgICJvcnAiLAorICAgInN1YnAiLAor
ICAgInhvcnAiLAorICAgImxvYWRwIiwKKyAgICJjcGVxIiwKKyAgICJjcG5lcSIsCisgICAiY3Bh
IiwKKyAgICJjcGFlcSIsCisgICAiY3BiIiwKKyAgICJjcGJlcSIsCisgICAiY3BndCIsCisgICAi
Y3BndGVxIiwKKyAgICJjcGx0IiwKKyAgICJjcGx0ZXEiLAorICAgInN0b3JlcCIsCisgICAiYnRw
byIsCisgICAiYnRwcyIsCisgICAiYnRweiIsCisgICAiYnRwbnoiLAorICAgImJhZGRwbyIsCisg
ICAiYmFkZHBzIiwKKyAgICJiYWRkcHoiLAorICAgImJhZGRwbnoiCisgIF0KKworWDg2X0lOU1RS
VUNUSU9OUyA9CisgIFsKKyAgICJjZHFpIiwKKyAgICJpZGl2aSIKKyAgXQorCitJTlNUUlVDVElP
TlMgPSBNQUNST19JTlNUUlVDVElPTlMgKyBYODZfSU5TVFJVQ1RJT05TCisKK0lOU1RSVUNUSU9O
X1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbignKXwoJykg
KyAnKSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0
X2V4dHJhY3Rvcl9jb25zdGFudHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2Nv
bnN0YW50cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgw
ZmY1ZTc1NSBdCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zm
c2V0cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9v
ZmZzZXRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vb2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTYgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIm9mZnNl
dF9leHRyYWN0b3JfY29uc3RhbnRzIgorCitPRkZTRVRfTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3
N2FjNywgMHgwZmY1ZTc1NSBdCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IG9mZnNldHNMaXN0KGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgc2l6ZXNMaXN0KGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFJldHVy
bnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhlIEFTVC4gICAgICAgICAg
ICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBvZmZzZXRz
TGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKK2VuZAorCitk
ZWYgc2l6ZXNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTaXplb2YpLnVuaXEuc29ydAorZW5kCisK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG9mZnNldHNBbmRDb25maWd1cmF0
aW9uSW5kZXgoYXN0LCBmaWxlKSAtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAg
IFtvZmZzZXRzLCBpbmRleF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFBhcnNlcyB0aGUgb2Zmc2V0cyBmcm9tIGEg
ZmlsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgdGhlICMKKyMgaW5kZXggb2Yg
dGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB2YWxpZCBpbiB0aGlzIGJ1aWxkIHRhcmdldC4gICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIG9mZnNldHNBbmRD
b25maWd1cmF0aW9uSW5kZXgoZmlsZSkKKyAgaW5kZXggPSBuaWwKKyAgb2Zmc2V0cyA9IFtdCisg
IGVuZGlhbm5lc3NNYXJrZXJCeXRlcyA9IG5pbAorICAKKyAgZGVmIHJlYWRJbnQoZW5kaWFubmVz
cywgaW5wKQorICAgIGJ5dGVzID0gW10KKyAgICA0LnRpbWVzIHsKKyAgICAgIGJ5dGVzIDw8IGlu
cC5nZXRieXRlCisgICAgfQorICAgIAorICAgIGlmIGVuZGlhbm5lc3MgPT0gOmxpdHRsZQorICAg
ICAgIyBMaXR0bGUgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMCB8CisgICAgICAgYnl0ZXNb
MV0gPDwgOCB8CisgICAgICAgYnl0ZXNbMl0gPDwgMTYgfAorICAgICAgIGJ5dGVzWzNdIDw8IDI0
KQorICAgIGVsc2UKKyAgICAgICMgQmlnIGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDI0IHwK
KyAgICAgICBieXRlc1sxXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbMl0gPDwgOCB8CisgICAgICAg
Ynl0ZXNbM10gPDwgMCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBbOmxpdHRsZSwgOmJpZ10uZWFj
aCB7CisgICAgfCBlbmRpYW5uZXNzIHwKKyAgICBtYWdpY0J5dGVzID0gW10KKyAgICBNQUdJQ19O
VU1CRVJTLmVhY2ggeworICAgICAgfCBudW1iZXIgfAorICAgICAgY3VycmVudEJ5dGVzID0gW10K
KyAgICAgIDQudGltZXMgeworICAgICAgICBjdXJyZW50Qnl0ZXMgPDwgKG51bWJlciAmIDB4ZmYp
CisgICAgICAgIG51bWJlciA+Pj0gOAorICAgICAgfQorICAgICAgaWYgZW5kaWFubmVzcyA9PSA6
YmlnCisgICAgICAgIGN1cnJlbnRCeXRlcy5yZXZlcnNlIQorICAgICAgZW5kCisgICAgICBtYWdp
Y0J5dGVzICs9IGN1cnJlbnRCeXRlcworICAgIH0KKyAgICAKKyAgICBGaWxlLm9wZW4oZmlsZSwg
InIiKSB7CisgICAgICB8IGlucCB8CisgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgbG9v
cCB7CisgICAgICAgIGJ5dGUgPSBpbnAuZ2V0Ynl0ZQorICAgICAgICBicmVhayB1bmxlc3MgYnl0
ZQorICAgICAgICBpZiBieXRlID09IG1hZ2ljQnl0ZXNbd2hlcmVJbk1hcmtlcl0KKyAgICAgICAg
ICB3aGVyZUluTWFya2VyICs9IDEKKyAgICAgICAgICBpZiB3aGVyZUluTWFya2VyID09IG1hZ2lj
Qnl0ZXMuc2l6ZQorICAgICAgICAgICAgIyBXZSBoYXZlIGEgbWF0Y2ghIElmIHdlIGhhdmUgbm90
IHlldCByZWFkIHRoZSBlbmRpYW5uZXNzIG1hcmtlciBhbmQgaW5kZXgsCisgICAgICAgICAgICAj
IHRoZW4gcmVhZCB0aG9zZSBub3c7IG90aGVyd2lzZSByZWFkIGFuIG9mZnNldC4KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgbm90IGluZGV4CisgICAgICAgICAgICAgIGluZGV4ID0gcmVh
ZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIG9m
ZnNldHMgPDwgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbmQKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgICBlbmQKKyAg
ICAgICAgZWxzZQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICAgIGVuZAorICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICBicmVhayBpZiBpbmRleAorICB9CisgIAorICByYWlzZSB1
bmxlc3MgaW5kZXgKKyAgCisgIFtvZmZzZXRzLCBpbmRleF0KK2VuZAorCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkg
LT4gW29mZnNldHMsIHNpemVzXSAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
QnVpbGRzIGEgbWFwcGluZyBiZXR3ZWVuIFN0cnVjdE9mZnNldCBub2RlcyBhbmQgdGhlaXIgdmFs
dWVzLiAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGJ1
aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KQorICBvZmZzZXRzTWFwID0ge30KKyAgc2l6
ZXNNYXAgPSB7fQorICBhc3RPZmZzZXRzTGlzdCA9IG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0U2l6
ZXNMaXN0ID0gc2l6ZXNMaXN0KGFzdCkKKyAgcmFpc2UgdW5sZXNzIGFzdE9mZnNldHNMaXN0LnNp
emUgKyBhc3RTaXplc0xpc3Quc2l6ZSA9PSBvZmZzZXRzTGlzdC5zaXplCisgIG9mZnNldHNMaXN0
KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHN0cnVjdE9mZnNldCwgaW5kZXggfAorICAg
IG9mZnNldHNNYXBbc3RydWN0T2Zmc2V0XSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgc2l6
ZXNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHNpemVvZiwgaW5kZXggfAorICAg
IHNpemVzTWFwW3NpemVvZl0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIFtvZmZzZXRzTWFw
LCBzaXplc01hcF0KK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9wYXJzZXIucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vcGFyc2VyLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vcGFyc2VyLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5MSBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiaW5z
dHJ1Y3Rpb25zIgorcmVxdWlyZSAicmVnaXN0ZXJzIgorCitjbGFzcyBUb2tlbgorICBhdHRyX3Jl
YWRlciA6Y29kZU9yaWdpbiwgOnN0cmluZworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgc3RyaW5nKQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICAgIEBzdHJpbmcgPSBz
dHJpbmcKKyAgZW5kCisgIAorICBkZWYgPT0ob3RoZXIpCisgICAgaWYgb3RoZXIuaXNfYT8gVG9r
ZW4KKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIuc3RyaW5nCisgICAgZWxzZQorICAgICAgQHN0cmlu
ZyA9PSBvdGhlcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiA9fihvdGhlcikKKyAgICBAc3Ry
aW5nID1+IG90aGVyCisgIGVuZAorICAKKyAgZGVmIHRvX3MKKyAgICAiI3tAc3RyaW5nLmluc3Bl
Y3R9IGF0IGxpbmUgI3tjb2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigq
Y29tbWVudCkKKyAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgcmFpc2UgIlBhcnNlIGVycm9y
OiAje3RvX3N9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfTog
I3tjb21tZW50WzBdfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgVGhlIGxleGVyLiBUYWtlcyBhIHN0cmluZyBhbmQgcmV0dXJucyBh
biBhcnJheSBvZiB0b2tlbnMuICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKworZGVmIGxleChzdHIpCisgIHJlc3VsdCA9IFtdCisgIGxpbmVOdW1iZXIgPSAx
CisgIHdoaWxlIG5vdCBzdHIuZW1wdHk/CisgICAgY2FzZSBzdHIKKyAgICB3aGVuIC9cQVwjKFte
XG5dKikvCisgICAgICAjIGNvbW1lbnQsIGlnbm9yZQorICAgIHdoZW4gL1xBXG4vCisgICAgICBy
ZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAgbGluZU51bWJlciArPSAx
CisgICAgd2hlbiAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBU
b2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFcLihbYS16QS1aMC05X10qKS8K
KyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFf
KFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAk
JikKKyAgICB3aGVuIC9cQShbIFx0XSspLworICAgICAgIyB3aGl0ZXNwYWNlLCBpZ25vcmUKKyAg
ICB3aGVuIC9cQTB4KFswLTlhLWZBLUZdKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxp
bmVOdW1iZXIsICQmLmhleC50b19zKQorICAgIHdoZW4gL1xBMChbMC03XSspLworICAgICAgcmVz
dWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5vY3QudG9fcykKKyAgICB3aGVuIC9cQShb
MC05XSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3
aGVuIC9cQTo6LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAg
ICB3aGVuIC9cQVs6LFwoXClcW1xdPVwrXC0qXS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXco
bGluZU51bWJlciwgJCYpCisgICAgZWxzZQorICAgICAgcmFpc2UgIkxleGVyIGVycm9yIGF0IGxp
bmUgbnVtYmVyICN7bGluZU51bWJlcn0sIHVuZXhwZWN0ZWQgc2VxdWVuY2UgI3tzdHJbMC4uMjBd
Lmluc3BlY3R9IgorICAgIGVuZAorICAgIHN0ciA9ICR+LnBvc3RfbWF0Y2gKKyAgZW5kCisgIHJl
c3VsdAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRva2VuIGlk
ZW50aWZpY2F0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBpc1JlZ2lzdGVy
KHRva2VuKQorICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOCitlbmQKKworZGVmIGlzSW5zdHJ1
Y3Rpb24odG9rZW4pCisgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYg
aXNLZXl3b3JkKHRva2VuKQorICB0b2tlbiA9fiAvXEEoKHRydWUpfChmYWxzZSl8KGlmKXwodGhl
bil8KGVsc2UpfChlbHNpZil8KGVuZCl8KGFuZCl8KG9yKXwobm90KXwobWFjcm8pfChjb25zdCl8
KHNpemVvZil8KGVycm9yKSlcWi8gb3IKKyAgICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOIG9y
CisgICAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0lkZW50aWZp
ZXIodG9rZW4pCisgIHRva2VuID1+IC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopXFovIGFuZCBu
b3QgaXNLZXl3b3JkKHRva2VuKQorZW5kCisKK2RlZiBpc0xhYmVsKHRva2VuKQorICB0b2tlbiA9
fiAvXEFfKFthLXpBLVowLTlfXSopXFovCitlbmQKKworZGVmIGlzTG9jYWxMYWJlbCh0b2tlbikK
KyAgdG9rZW4gPX4gL1xBXC4oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNWYXJpYWJs
ZSh0b2tlbikKKyAgaXNJZGVudGlmaWVyKHRva2VuKSBvciBpc1JlZ2lzdGVyKHRva2VuKQorZW5k
CisKK2RlZiBpc0ludGVnZXIodG9rZW4pCisgIHRva2VuID1+IC9cQVswLTldLworZW5kCisKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBwYXJzZXIuIFRha2VzIGFuIGFy
cmF5IG9mIHRva2VucyBhbmQgcmV0dXJucyBhbiBBU1QuIE1ldGhvZHMgICAgICMKKyMgb3RoZXIg
dGhhbiBwYXJzZSh0b2tlbnMpIGFyZSBub3QgZm9yIHB1YmxpYyBjb25zdW1wdGlvbi4gICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgUGFyc2Vy
CisgIGRlZiBpbml0aWFsaXplKHRva2VucykKKyAgICBAdG9rZW5zID0gdG9rZW5zCisgICAgQGlk
eCA9IDAKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBpZiBAdG9r
ZW5zW0BpZHhdCisgICAgICBAdG9rZW5zW0BpZHhdLnBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAg
ZWxzZQorICAgICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9y
IGF0IGVuZCBvZiBmaWxlIgorICAgICAgZWxzZQorICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3Ig
YXQgZW5kIG9mIGZpbGU6ICN7Y29tbWVudFswXX0iCisgICAgICBlbmQKKyAgICBlbmQKKyAgZW5k
CisgIAorICBkZWYgY29uc3VtZShyZWdleHApCisgICAgaWYgcmVnZXhwCisgICAgICBwYXJzZUVy
cm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID1+IHJlZ2V4cAorICAgIGVsc2UKKyAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIEBpZHggPT0gQHRva2Vucy5sZW5ndGgKKyAgICBlbmQKKyAgICBAaWR4ICs9
IDEKKyAgZW5kCisgIAorICBkZWYgc2tpcE5ld0xpbmUKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhd
ID09ICJcbiIKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJz
ZVByZWRpY2F0ZUF0b20KKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJub3QiCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHBhcnNlUHJlZGljYXRlQXRvbQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0g
PT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByZXN1bHQg
PSBwYXJzZVByZWRpY2F0ZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9
PSAiKSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAidHJ1ZSIKKyAgICAgIHJlc3VsdCA9IFRydWUuaW5zdGFuY2UKKyAgICAgIEBpZHgg
Kz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZmFsc2UiCisg
ICAgICByZXN1bHQgPSBGYWxzZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1
bHQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0g
U2V0dGluZy5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5z
dHJpbmcpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBh
cnNlRXJyb3IKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBbmQKKyAg
ICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09
ICJhbmQiCisgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAg
ICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGlj
YXRlQXRvbQorICAgICAgcmVzdWx0ID0gQW5kLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0
KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZQor
ICAgICMgc29tZSBleGFtcGxlcyBvZiBwcmVjZWRlbmNlOgorICAgICMgbm90IGEgYW5kIGIgLT4g
KG5vdCBhKSBhbmQgYgorICAgICMgYSBhbmQgYiBvciBjIC0+IChhIGFuZCBiKSBvciBjCisgICAg
IyBhIG9yIGIgYW5kIGMgLT4gYSBvciAoYiBhbmQgYykKKyAgICAKKyAgICByZXN1bHQgPSBwYXJz
ZVByZWRpY2F0ZUFuZAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIm9yIgorICAgICAgY29k
ZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAg
ICBza2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAgICAgcmVz
dWx0ID0gT3IubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5kCisgICAgcmVz
dWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlVmFyaWFibGUKKyAgICBpZiBpc1JlZ2lzdGVyKEB0
b2tlbnNbQGlkeF0pCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID1+IEZQUl9QQVRURVJOCisgICAg
ICAgIHJlc3VsdCA9IEZQUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdp
biwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IFJl
Z2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0u
c3RyaW5nKQorICAgICAgZW5kCisgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0p
CisgICAgICByZXN1bHQgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdp
biwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAg
IGVuZAorICAgIEBpZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUFk
ZHJlc3Mob2Zmc2V0KQorICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIlsi
CisgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIAorICAgICMg
VGhyZWUgcG9zc2liaWxpdGllczoKKyAgICAjIFtdICAgICAgIC0+IEFic29sdXRlQWRkcmVzcwor
ICAgICMgW2FdICAgICAgLT4gQWRkcmVzcworICAgICMgW2EsYl0gICAgLT4gQmFzZUluZGV4IHdp
dGggc2NhbGUgPSAxCisgICAgIyBbYSxiLGNdICAtPiBCYXNlSW5kZXgKKyAgICAKKyAgICBAaWR4
ICs9IDEKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgQGlkeCArPSAxCisgICAg
ICByZXR1cm4gQWJzb2x1dGVBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXQpCisgICAgZW5k
CisgICAgYSA9IHBhcnNlVmFyaWFibGUKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAg
ICAgcmVzdWx0ID0gQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgYSwgb2Zmc2V0KQorICAgIGVsc2UK
KyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIGIgPSBwYXJzZVZhcmlhYmxlCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIDEs
IG9mZnNldCkKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tA
aWR4XSA9PSAiLCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNz
IFsiMSIsICIyIiwgIjQiLCAiOCJdLm1lbWJlcj8gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAg
ICAgYyA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAgIHJlc3Vs
dCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgYywgb2Zmc2V0KQorICAgICAgZW5k
CisgICAgZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBh
cnNlQ29sb25Db2xvbgorICAgIHNraXBOZXdMaW5lCisgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbgorICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9r
ZW5zW0BpZHhdCisgICAgbmFtZXMgPSBbQHRva2Vuc1tAaWR4XS5zdHJpbmddCisgICAgQGlkeCAr
PSAxCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiOjoiCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICBu
YW1lcyA8PCBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgQGlkeCArPSAxCisgICAgZW5kCisg
ICAgcmFpc2UgaWYgbmFtZXMuZW1wdHk/CisgICAgW2NvZGVPcmlnaW4sIG5hbWVzXQorICBlbmQK
KyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgc2tpcE5ld0xpbmUKKyAgICBpZiBA
dG9rZW5zW0BpZHhdID09ICItIgorICAgICAgQGlkeCArPSAxCisgICAgICBOZWdJbW1lZGlhdGUu
bmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHBhcnNlRXhwcmVzc2lvbkF0b20pCisg
ICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVz
dWx0ID0gcGFyc2VFeHByZXNzaW9uCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0Bp
ZHhdID09ICIpIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lu
dGVnZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gSW1tZWRpYXRlLm5ldyhAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kpCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhd
CisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAgaWYgbmFt
ZXMuc2l6ZSA+IDEKKyAgICAgICAgU3RydWN0T2Zmc2V0LmZvckZpZWxkKGNvZGVPcmlnaW4sIG5h
bWVzWzAuLi0yXS5qb2luKCc6OicpLCBuYW1lc1stMV0pCisgICAgICBlbHNlCisgICAgICAgIFZh
cmlhYmxlLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXNbMF0pCisgICAgICBlbmQKKyAgICBlbHNp
ZiBpc1JlZ2lzdGVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHBhcnNlVmFyaWFibGUKKyAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICJzaXplb2YiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIGNvZGVP
cmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBTaXplb2YuZm9yTmFtZShjb2Rl
T3JpZ2luLCBuYW1lcy5qb2luKCc6OicpKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAg
ICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uTXVsCisgICAgc2tpcE5ld0xp
bmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgd2hpbGUgQHRva2Vuc1tA
aWR4XSA9PSAiKiIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICByZXN1bHQgPSBNdWxJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAx
XS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbkF0b20pCisgICAgICBlbHNlCisg
ICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAor
ICBkZWYgY291bGRCZUV4cHJlc3Npb24KKyAgICBAdG9rZW5zW0BpZHhdID09ICItIiBvciBAdG9r
ZW5zW0BpZHhdID09ICJzaXplb2YiIG9yIGlzSW50ZWdlcihAdG9rZW5zW0BpZHhdKSBvciBpc1Zh
cmlhYmxlKEB0b2tlbnNbQGlkeF0pCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbgor
ICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uTXVsCisgICAgd2hp
bGUgQHRva2Vuc1tAaWR4XSA9PSAiKyIgb3IgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIGlm
IEB0b2tlbnNbQGlkeF0gPT0gIisiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQg
PSBBZGRJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQs
IHBhcnNlRXhwcmVzc2lvbk11bCkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBTdWJJbW1lZGlhdGVzLm5ldyhAdG9r
ZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkKKyAg
ICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAor
ICBlbmQKKyAgCisgIGRlZiBwYXJzZU9wZXJhbmQoY29tbWVudCkKKyAgICBpZiBjb3VsZEJlRXhw
cmVzc2lvbgorICAgICAgZXhwciA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAgaWYgQHRva2Vuc1tA
aWR4XSA9PSAiWyIKKyAgICAgICAgcGFyc2VBZGRyZXNzKGV4cHIpCisgICAgICBlbHNlCisgICAg
ICAgIGV4cHIKKyAgICAgIGVuZAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAg
ICBwYXJzZUFkZHJlc3MoSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIDAp
KQorICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTGFiZWxS
ZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgTGFiZWwuZm9yTmFtZShAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHgg
Kz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlkeF0K
KyAgICAgIHJlc3VsdCA9IExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbiwgTG9jYWxMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRv
a2Vuc1tAaWR4XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBl
bHNlCisgICAgICBwYXJzZUVycm9yKGNvbW1lbnQpCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVm
IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICBza2lwTmV3TGluZQorICAgIGNvbnN1bWUoL1xBXChc
Wi8pCisgICAgdmFyaWFibGVzID0gW10KKyAgICBsb29wIHsKKyAgICAgIHNraXBOZXdMaW5lCisg
ICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
YnJlYWsKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICB2
YXJpYWJsZXMgPDwgVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0
b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xp
bmUKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvcgorICAg
ICAgICBlbmQKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvcgorICAgICAgZW5kCisgICAg
fQorICAgIHZhcmlhYmxlcworICBlbmQKKyAgCisgIGRlZiBwYXJzZVNlcXVlbmNlKGZpbmFsLCBj
b21tZW50KQorICAgIGZpcnN0Q29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgor
ICAgIGxpc3QgPSBbXQorICAgIGxvb3AgeworICAgICAgaWYgKEBpZHggPT0gQHRva2Vucy5sZW5n
dGggYW5kIG5vdCBmaW5hbCkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQor
ICAgICAgICBicmVhaworICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAg
ICMgaWdub3JlCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9
PSAiY29uc3QiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBp
c1ZhcmlhYmxlIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mb3JO
YW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09
ICI9IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFsdWUgPSBwYXJzZU9wZXJhbmQoIndo
aWxlIGluc2lkZSBvZiBjb25zdCAje3ZhcmlhYmxlLm5hbWV9IikKKyAgICAgICAgbGlzdCA8PCBD
b25zdERlY2wubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQor
ICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZXJyb3IiCisgICAgICAgIGxpc3QgPDwgRXJy
b3IubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbikKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJpZiIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xp
bmUKKyAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgY29uc3VtZSgv
XEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBpZlRoZW5F
bHNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGljYXRlLCBwYXJzZVNlcXVlbmNl
KC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAje3By
ZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAgIGxpc3QgPDwgaWZUaGVuRWxzZQorICAgICAgICB3
aGlsZSBAdG9rZW5zW0BpZHhdID09ICJlbHNpZiIKKyAgICAgICAgICBjb2RlT3JpZ2luID0gQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgc2tp
cE5ld0xpbmUKKyAgICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgICAg
IGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgICBza2lwTmV3TGluZQorICAg
ICAgICAgIGVsc2VDYXNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGljYXRlLCBw
YXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBpbnNpZGUg
b2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNl
Q2FzZSA9IGVsc2VDYXNlCisgICAgICAgICAgaWZUaGVuRWxzZSA9IGVsc2VDYXNlCisgICAgICAg
IGVuZAorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJlbHNlIgorICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBwYXJzZVNlcXVlbmNlKC9cQWVu
ZFxaLywgIndoaWxlIGluc2lkZSBvZiBlbHNlIGNhc2UgZm9yIFwiaWYgI3twcmVkaWNhdGUuZHVt
cH1cIiIpCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJz
ZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJlbmQiCisgICAgICAgICAgQGlkeCArPSAx
CisgICAgICAgIGVuZAorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAg
ICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRl
bnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJp
bmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJp
YWJsZXMKKyAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5z
aWRlIG9mIG1hY3JvICN7bmFtZX0iKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgbGlzdCA8
PCBNYWNyby5uZXcoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgICAgZWxz
aWYgaXNJbnN0cnVjdGlvbiBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5n
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0
b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAg
ICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLCBhbmQgaXQncyB0aGUgbGFzdCBvbmUuCisg
ICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAg
ICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgbGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAjIEl0J3MgZGVmaW5pdGVseSBhbiBpbnN0cnVjdGlvbiwg
YW5kIGl0IGhhcyBhdCBsZWFzdCBvbmUgb3BlcmFuZC4KKyAgICAgICAgICBvcGVyYW5kcyA9IFtd
CisgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9IGZhbHNlCisgICAgICAgICAgbG9vcCB7CisgICAg
ICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBpbnN0cnVj
dGlvbiAje25hbWV9IikKKyAgICAgICAgICAgIGlmIChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRv
a2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAg
ICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24gYW5kIG9mIHRoZSBzZXF1ZW5jZS4K
KyAgICAgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9IHRydWUKKyAgICAgICAgICAgICAgYnJlYWsK
KyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAgICMg
SGFzIGFub3RoZXIgb3BlcmFuZC4KKyAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAg
ICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9m
IHRoZSBpbnN0cnVjdGlvbi4KKyAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHBhcnNlRXJyb3IoIkV4cGVj
dGVkIGEgY29tbWEsIG5ld2xpbmUsIG9yICN7ZmluYWx9IGFmdGVyICN7b3BlcmFuZHMubGFzdC5k
dW1wfSIpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICB9CisgICAgICAgICAgbGlzdCA8PCBJ
bnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgICAgaWYg
ZW5kT2ZTZXF1ZW5jZQorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICBlbmQKKyAgICAgICAg
ZW5kCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2Rl
T3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5z
W0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4
XSA9PSAiKCIKKyAgICAgICAgICAjIE1hY3JvIGludm9jYXRpb24uCisgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAg
ICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAgICBza2lwTmV3TGlu
ZQorICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAgICAg
ICAgICAjIEl0J3MgYSBtYWNybyBsYW1iZGEhCisgICAgICAgICAgICAgICAgY29kZU9yaWdpbklu
bmVyID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgICAgICAgQGlkeCArPSAx
CisgICAgICAgICAgICAgICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAg
ICAgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBv
ZiBhbm9ueW1vdXMgbWFjcm8gcGFzc2VkIGFzIGFyZ3VtZW50IHRvICN7bmFtZX0iKQorICAgICAg
ICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IE1hY3JvLm5l
dyhjb2RlT3JpZ2luSW5uZXIsIG5pbCwgdmFyaWFibGVzLCBib2R5KQorICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNp
ZGUgb2YgbWFjcm8gY2FsbCB0byAje25hbWV9IikKKyAgICAgICAgICAgICAgZW5kCisgICAgICAg
ICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIiki
CisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAg
ICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IgIlVu
ZXhwZWN0ZWQgI3tAdG9rZW5zW0BpZHhdLnN0cmluZy5pbnNwZWN0fSB3aGlsZSBwYXJzaW5nIGlu
dm9jYXRpb24gb2YgbWFjcm8gI3tuYW1lfSIKKyAgICAgICAgICAgICAgZW5kCisgICAgICAgICAg
ICB9CisgICAgICAgICAgZW5kCisgICAgICAgICAgbGlzdCA8PCBNYWNyb0NhbGwubmV3KGNvZGVP
cmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJv
ciAiRXhwZWN0ZWQgXCIoXCIgYWZ0ZXIgI3tuYW1lfSIKKyAgICAgICAgZW5kCisgICAgICBlbHNp
ZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0gb3IgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlkeF0KKyAg
ICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1l
ID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIjoiCisgICAgICAgICMgSXQncyBhIGxhYmVs
LgorICAgICAgICBpZiBpc0xhYmVsIG5hbWUKKyAgICAgICAgICBsaXN0IDw8IExhYmVsLmZvck5h
bWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZWxzZQorICAgICAgICAgIGxpc3QgPDwgTG9j
YWxMYWJlbC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVuZAorICAgICAgICBA
aWR4ICs9IDEKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0aW5nIHRlcm1p
bmFsICN7ZmluYWx9ICN7Y29tbWVudH0iCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2Uu
bmV3KGZpcnN0Q29kZU9yaWdpbiwgbGlzdCkKKyAgZW5kCitlbmQKKworZGVmIHBhcnNlKHRva2Vu
cykKKyAgcGFyc2VyID0gUGFyc2VyLm5ldyh0b2tlbnMpCisgIHBhcnNlci5wYXJzZVNlcXVlbmNl
KG5pbCwgIiIpCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
cmVnaXN0ZXJzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3JlZ2lzdGVycy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworR1BSUyA9CisgIFsKKyAgICJ0MCIs
CisgICAidDEiLAorICAgInQyIiwKKyAgICJ0MyIsCisgICAidDQiLAorICAgImNmciIsCisgICAi
YTAiLAorICAgImExIiwKKyAgICJyMCIsCisgICAicjEiLAorICAgInNwIgorICBdCisKK0ZQUlMg
PQorICBbCisgICAiZnQwIiwKKyAgICJmdDEiLAorICAgImZ0MiIsCisgICAiZnQzIiwKKyAgICJm
dDQiLAorICAgImZ0NSIsCisgICAiZmEwIiwKKyAgICJmYTEiLAorICAgImZhMiIsCisgICAiZmEz
IiwKKyAgICJmciIKKyAgXQorCitSRUdJU1RFUlMgPSBHUFJTICsgRlBSUworCitHUFJfUEFUVEVS
TiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEdQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQorRlBS
X1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBGUFJTLmpvaW4oJyl8KCcpICsgJykpXFxa
JykKKworUkVHSVNURVJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIFJFR0lTVEVSUy5q
b2luKCcpfCgnKSArICcpKVxcWicpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9zZXR0aW5ncy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyMSBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVx
dWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGNvbXB1dGVTZXR0aW5nc0NvbWJp
bmF0aW9ucyhhc3QpIC0+IHNldHRpbmdzQ29tYmlhdGlvbnMgICAgICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBDb21wdXRlcyBhbiBhcnJheSBvZiBzZXR0aW5ncyBtYXBzLCB3aGVyZSBh
IHNldHRpbmdzIG1hcCBjb25zdGl0dXRlcyAjCisjIGEgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFz
c2VtYmx5IGNvZGUgYmVpbmcgZ2VuZXJhdGVkLiBUaGUgbWFwICAgICAgICMKKyMgY29udGFpbnMg
a2V5IHZhbHVlIHBhaXJzIHdoZXJlIGtleXMgYXJlIHNldHRpbmdzIG5hbWVzIChzdHJpbmdzKSBh
bmQgIworIyB0aGUgdmFsdWVzIGFyZSBib29sZWFucyAodHJ1ZSBmb3IgZW5hYmxlZCwgZmFsc2Ug
Zm9yIGRpc2FibGVkKS4gICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
CitkZWYgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgc2V0dGluZ3NDb21iaW5h
dGlvbnMgPSBbXQorICAKKyAgZGVmIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0
aW9ucywgbWFwU29GYXIsIHJlbWFpbmluZykKKyAgICBpZiByZW1haW5pbmcuZW1wdHk/CisgICAg
ICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA8PCBtYXBTb0ZhcgorICAgICAgcmV0dXJuCisgICAgZW5k
CisgICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1sw
XV0gPSB0cnVlCisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBu
ZXdNYXAsIHJlbWFpbmluZ1sxLi4tMV0pCisgICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVw
CisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSBmYWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRv
cihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICBlbmQK
KyAgCisgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywge30sIChhc3Qu
ZmlsdGVyKFNldHRpbmcpLnVuaXEuY29sbGVjdHt8dnwgdi5uYW1lfSArIFsiWDg2IiwgIkFSTXY3
Il0pLnVuaXEpCisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucworZW5kCisKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFz
dCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVT
ZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfCAuLi4gfSAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIERldGVybWluZXMgaWYgdGhlIHNldHRpbmdzIGNvbWJpbmF0aW9u
IGlzIHZhbGlkLCBhbmQgaWYgc28sIGNhbGxzICAgICMKKyMgdGhlIGJsb2NrIHdpdGggdGhlIGlu
Zm9ybWF0aW9uIHlvdSBuZWVkIHRvIGdlbmVyYXRlIGNvZGUuICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0
dGluZ3MsIGFzdCkKKyAgIyBDaGVjayB3aGljaCBhcmNoaXRlY3R1cmVzIHRoaXMgY29tYmluYXRv
ciBjbGFpbXMgdG8gc3VwcG9ydC4KKyAgbnVtQ2xhaW1lZEJhY2tlbmRzID0gMAorICBzZWxlY3Rl
ZEJhY2tlbmQgPSBuaWwKKyAgQkFDS0VORFMuZWFjaCB7CisgICAgfCBiYWNrZW5kIHwKKyAgICBp
c1N1cHBvcnRlZCA9IGNvbmNyZXRlU2V0dGluZ3NbYmFja2VuZF0KKyAgICByYWlzZSB1bmxlc3Mg
aXNTdXBwb3J0ZWQgIT0gbmlsCisgICAgbnVtQ2xhaW1lZEJhY2tlbmRzICs9IGlmIGlzU3VwcG9y
dGVkIHRoZW4gMSBlbHNlIDAgZW5kCisgICAgaWYgaXNTdXBwb3J0ZWQKKyAgICAgIHNlbGVjdGVk
QmFja2VuZCA9IGJhY2tlbmQKKyAgICBlbmQKKyAgfQorICAKKyAgcmV0dXJuIGlmIG51bUNsYWlt
ZWRCYWNrZW5kcyA+IDEKKyAgCisgICMgUmVzb2x2ZSB0aGUgQVNUIGRvd24gdG8gYSBsb3ctbGV2
ZWwgZm9ybSAobm8gbWFjcm9zIG9yIGNvbmRpdGlvbmFscykuCisgIGxvd0xldmVsQVNUID0gYXN0
LnJlc29sdmVTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzKQorICAKKyAgeWllbGQgY29uY3JldGVT
ZXR0aW5ncywgbG93TGV2ZWxBU1QsIHNlbGVjdGVkQmFja2VuZAorZW5kCisKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24o
YXN0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVT
ZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCBz
ZXR0aW5nc0NvbWJpbmF0aW9ucykgeyAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5n
cywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIEV4ZWN1dGVzIHRoZSBnaXZlbiBibG9jayBmb3IgZWFjaCB2YWxpZCBzZXR0
aW5ncyBjb21iaW5hdGlvbiBpbiB0aGUgICMKKyMgc2V0dGluZ3MgbWFwLiBUaGUgYXN0IHBhc3Nl
ZCBpbnRvIHRoZSBibG9jayBpcyByZXNvbHZlZCAgICAgICAgICAgICAgIworIyAoYXN0LnJlc29s
dmUpIGFnYWluc3QgdGhlIHNldHRpbmdzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIGZpcnN0IGZvcm0gd2lsbCBjYWxsIGNvbXB1dGVT
ZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIGZvciB5b3UuICAgIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKworZGVmIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0
LCAqb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucykKKyAgcmFpc2UgaWYgb3B0aW9uYWxTZXR0
aW5nc0NvbWJpbmF0aW9ucy5zaXplID4gMQorICAKKyAgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJp
bmF0aW9ucy5lbXB0eT8KKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IGNvbXB1dGVTZXR0aW5n
c0NvbWJpbmF0aW9ucyhhc3QpCisgIGVsc2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IG9w
dGlvbmFsU2V0dGluZ3NDb21iaWF0aW9uc1swXQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmlu
YXRpb25zLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBpbmRleCB8
CisgICAgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7CisgICAgICB8IGNvbmNy
ZXRlU2V0dGluZ3NfLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgICB5aWVsZCBjb25jcmV0
ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICB9CisgIH0KK2VuZAor
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBjcHBTZXR0aW5nc1Rlc3QoY29u
Y3JldGVTZXR0aW5ncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgUmV0dXJucyB0aGUgQysrIGNvZGUgdXNlZCB0byB0ZXN0IGlmIHdlIGFy
ZSBpbiBhIGNvbmZpZ3VyYXRpb24gdGhhdCAgIworIyBjb3JyZXNwb25kcyB0byB0aGUgZ2l2ZW4g
Y29uY3JldGUgc2V0dGluZ3MuICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0
dGluZ3MpCisgICIjaWYgIiArIGNvbmNyZXRlU2V0dGluZ3MudG9fYS5jb2xsZWN0eworICAgIHwg
cGFpciB8CisgICAgKGlmIHBhaXJbMV0KKyAgICAgICAiIgorICAgICBlbHNlCisgICAgICAgIiEi
CisgICAgIGVuZCkgKyAiT0ZGTElORV9BU01fIiArIHBhaXJbMF0KKyAgfS5qb2luKCIgJiYgIikK
K2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBpc0FTVEVycm9uZW91
cyhhc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgVGVzdHMgdG8gc2VlIGlmIHRoZSBBU1QgY2xhaW1zIHRoYXQg
dGhlcmUgaXMgYW4gZXJyb3IgLSBpLmUuIGlmIHRoZSAgIworIyB1c2VyJ3MgY29kZSwgYWZ0ZXIg
c2V0dGluZ3MgcmVzb2x1dGlvbiwgaGFzIEVycm9yIG5vZGVzLiAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgaXNBU1RFcnJvbmVvdXMoYXN0KQor
ICBub3QgYXN0LmZpbHRlcihFcnJvcikuZW1wdHk/CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEVtaXRz
IGEgY2hlY2sgdGhhdCBhc3NlcnRzIHRoYXQgd2UncmUgdXNpbmcgdGhlIGdpdmVuIGNvbmZpZ3Vy
YXRpb24uICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBhc3NlcnRD
b25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgIHB1dHMgY3BwU2V0dGluZ3NUZXN0KGNv
bmNyZXRlU2V0dGluZ3MpCisgIHB1dHMgIiNlbHNlIgorICBwdXRzICIjZXJyb3IgXCJDb25maWd1
cmF0aW9uIG1pc21hdGNoLlwiIgorICBwdXRzICIjZW5kaWYiCitlbmQKKworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVT
ZXR0aW5ncywgYXN0LCBiYWNrZW5kKSB7ICAgICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNl
dHRpbmdzLCBhc3QsIGJhY2tlbmQgfCAuLi4gfSAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgRW1pdHMgYWxsIHJlbGV2YW50IGd1YXJkcyB0byBzZWUgaWYgdGhl
IGNvbmZpZ3VyYXRpb24gaG9sZHMgYW5kICAgICAgIworIyBjYWxscyB0aGUgYmxvY2sgaWYgdGhl
IGNvbmZpZ3VyYXRpb24gaXMgbm90IGVycm9uZW91cy4gICAgICAgICAgICAgICAjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24o
Y29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKQorICBwdXRzIGNwcFNldHRpbmdzVGVzdChj
b25jcmV0ZVNldHRpbmdzKQorICAKKyAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAgIHB1dHMg
IiNlcnJvciBcIkludmFsaWQgY29uZmlndXJhdGlvbi5cIiIKKyAgZWxzaWYgbm90IFdPUktJTkdf
QkFDS0VORFMuaW5jbHVkZT8gYmFja2VuZAorICAgIHB1dHMgIiNlcnJvciBcIlRoaXMgYmFja2Vu
ZCBpcyBub3Qgc3VwcG9ydGVkIHlldC5cIiIKKyAgZWxzZQorICAgIHlpZWxkIGNvbmNyZXRlU2V0
dGluZ3MsIGFzdCwgYmFja2VuZAorICBlbmQKKyAgCisgIHB1dHMgIiNlbmRpZiIKK2VuZAorCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBlbWl0Q29kZUluQWxsQ29uZmlndXJh
dGlvbnMoYXN0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICB8
IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAg
ICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFbWl0cyBndWFyZCBjb2RlcyBmb3IgYWxsIHZh
bGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgY2FsbHMgdGhlIGJsb2NrICAjCisjIGZvciB0aG9zZSBj
b25maWd1cmF0aW9ucyB0aGF0IGFyZSB2YWxpZCBhbmQgbm90IGVycm9uZW91cy4gICAgICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBlbWl0Q29kZUluQWxs
Q29uZmlndXJhdGlvbnMoYXN0KQorICBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFz
dCkgeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4
IHwKKyAgICBwdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAgIHlpZWxk
IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgIHB1dHMg
IiNlbmRpZiIKKyAgfQorZW5kCisKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS90cmFuc2Zvcm0ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1
MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0
IgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUg
YW55IElmVGhlbkVsc2Ugbm9kZXMgYnkgICAgICAgIworIyBzdWJzdGl0dXRpbmcgY29uY3JldGUg
Ym9vbGVhbiB2YWx1ZXMgZm9yIGVhY2ggU2V0dGluZy4gICAgICAgICAgICAgICAjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAg
ICBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgfQorICBlbmQKK2VuZAorCitj
bGFzcyBUcnVlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBl
bmQKK2VuZAorCitjbGFzcyBGYWxzZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQor
ICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgU2V0dGluZworICBkZWYgcmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKQorICAgIHNldHRpbmdzW0BuYW1lXS5hc05vZGUKKyAgZW5kCitlbmQKKwor
Y2xhc3MgQW5kCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJl
c29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgYW5kIEByaWdodC5yZXNvbHZlU2V0dGluZ3Mo
c2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgT3IKKyAgZGVmIHJl
c29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRp
bmdzKS52YWx1ZSBvciBAcmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNO
b2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE5vdAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRp
bmdzKQorICAgIChub3QgQGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFz
Tm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBJZlRoZW5FbHNlCisgIGRlZiByZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpCisgICAgaWYgQHByZWRpY2F0ZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
LnZhbHVlCisgICAgICBAdGhlbkNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVs
c2UKKyAgICAgIEBlbHNlQ2FzZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZW5kCisg
IGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAor
ICAgICAgaXRlbSA9IGl0ZW0ucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgaWYgaXRl
bS5pc19hPyBTZXF1ZW5jZQorICAgICAgICBuZXdMaXN0ICs9IGl0ZW0ubGlzdAorICAgICAgZWxz
ZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0KKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5j
ZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgbm9kZS5kZW1hY3JvaWZ5KG1hY3JvcykgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnN1YnN0aXR1dGUobWFw
cGluZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgZGVtYWNyb2lmeSgpIGNvbnN0cnVjdHMgYSBuZXcgQVNUIHRoYXQgZG9l
cyBub3QgaGF2ZSBhbnkgTWFjcm8gICAgICAgIworIyBub2Rlcywgd2hpbGUgc3Vic3RpdHV0ZSgp
IHJlcGxhY2VzIFZhcmlhYmxlIG5vZGVzIHdpdGggdGhlIGdpdmVuICAgICAjCisjIG5vZGVzIGlu
IHRoZSBtYXBwaW5nLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAg
ZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQg
fAorICAgICAgY2hpbGQuZGVtYWNyb2lmeShtYWNyb3MpCisgICAgfQorICBlbmQKKyAgCisgIGRl
ZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8
CisgICAgICBjaGlsZC5zdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgfQorICBlbmQKKyAgCisgIGRl
ZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBj
aGlsZCB8CisgICAgICBjaGlsZC5zdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgfQorICBl
bmQKK2VuZAorCitjbGFzcyBNYWNybworICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG15
TWFwcGluZyA9IHt9CisgICAgbWFwcGluZy5lYWNoX3BhaXIgeworICAgICAgfCBrZXksIHZhbHVl
IHwKKyAgICAgIHVubGVzcyBAdmFyaWFibGVzLmluY2x1ZGU/IGtleQorICAgICAgICBteU1hcHBp
bmdba2V5XSA9IHZhbHVlCisgICAgICBlbmQKKyAgICB9CisgICAgbWFwQ2hpbGRyZW4geworICAg
ICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5zdWJzdGl0dXRlKG15TWFwcGluZykKKyAgICB9Cisg
IGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisg
ICAgaWYgbWFwcGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAg
IHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbAorICBkZWYgc3Vi
c3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBp
bmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2Ns
YXNzIFNlcXVlbmNlCisgIGRlZiBzdWJzdGl0dXRlKGNvbnN0YW50cykKKyAgICBuZXdMaXN0ID0g
W10KKyAgICBteUNvbnN0YW50cyA9IGNvbnN0YW50cy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAg
ICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IENvbnN0RGVjbAorICAgICAgICBteUNv
bnN0YW50c1tpdGVtLnZhcmlhYmxlXSA9IGl0ZW0udmFsdWUuc3Vic3RpdHV0ZShteUNvbnN0YW50
cykKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtLnN1YnN0aXR1dGUobXlDb25z
dGFudHMpCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5l
d0xpc3QpCisgIGVuZAorICAKKyAgZGVmIHJlbmFtZUxhYmVscyhjb21tZW50KQorICAgIG1hcHBp
bmcgPSB7fQorICAgIAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlm
IGl0ZW0uaXNfYT8gTG9jYWxMYWJlbAorICAgICAgICBtYXBwaW5nW2l0ZW1dID0gTG9jYWxMYWJl
bC51bmlxdWUoaWYgY29tbWVudCB0aGVuIGNvbW1lbnQgKyAiXyIgZWxzZSAiIiBlbmQgKyBpdGVt
LmNsZWFuTmFtZSkKKyAgICAgIGVuZAorICAgIH0KKyAgICAKKyAgICBzdWJzdGl0dXRlTGFiZWxz
KG1hcHBpbmcpCisgIGVuZAorICAKKyAgZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAgIG15TWFj
cm9zID0gbWFjcm9zLmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAg
IGlmIGl0ZW0uaXNfYT8gTWFjcm8KKyAgICAgICAgbXlNYWNyb3NbaXRlbS5uYW1lXSA9IGl0ZW0K
KyAgICAgIGVuZAorICAgIH0KKyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAg
ICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgICMgSWdub3Jl
LgorICAgICAgZWxzaWYgaXRlbS5pc19hPyBNYWNyb0NhbGwKKyAgICAgICAgbWFwcGluZyA9IHt9
CisgICAgICAgIG15TXlNYWNyb3MgPSBteU1hY3Jvcy5kdXAKKyAgICAgICAgcmFpc2UgIkNvdWxk
IG5vdCBmaW5kIG1hY3JvICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30i
IHVubGVzcyBteU1hY3Jvc1tpdGVtLm5hbWVdCisgICAgICAgIHJhaXNlICJBcmd1bWVudCBjb3Vu
dCBtaXNtYXRjaCBmb3IgY2FsbCB0byAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5T
dHJpbmd9IiB1bmxlc3MgaXRlbS5vcGVyYW5kcy5zaXplID09IG15TWFjcm9zW2l0ZW0ubmFtZV0u
dmFyaWFibGVzLnNpemUKKyAgICAgICAgaXRlbS5vcGVyYW5kcy5zaXplLnRpbWVzIHsKKyAgICAg
ICAgICB8IGlkeCB8CisgICAgICAgICAgaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IFZhcmlh
YmxlIGFuZCBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG15
TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG15TWFj
cm9zW2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jv
c1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxzaWYg
aXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IE1hY3JvCisgICAgICAgICAgICBteU15TWFjcm9zW215
TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBpdGVtLm9wZXJhbmRzW2lk
eF0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4
XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlN
YWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBuaWwKKyAgICAgICAgICAgIG1hcHBp
bmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBpdGVtLm9wZXJhbmRzW2lk
eF0KKyAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBuZXdMaXN0ICs9IG15TWFjcm9z
W2l0ZW0ubmFtZV0uYm9keS5zdWJzdGl0dXRlKG1hcHBpbmcpLmRlbWFjcm9pZnkobXlNeU1hY3Jv
cykucmVuYW1lTGFiZWxzKGl0ZW0ubmFtZSkubGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdM
aXN0IDw8IGl0ZW0uZGVtYWNyb2lmeShteU1hY3JvcykKKyAgICAgIGVuZAorICAgIH0KKyAgICBT
ZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkuc3Vic3RpdHV0ZSh7fSkKKyAgZW5kCitl
bmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZlT2Zm
c2V0cyhvZmZzZXRzLCBzaXplcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBoYXMgb2Zmc2V0IHZh
bHVlcyBpbnN0ZWFkIG9mIHN5bWJvbGljICAgICAgICMKKyMgb2Zmc2V0cy4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZU9m
ZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8
CisgICAgICBjaGlsZC5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICB9CisgIGVu
ZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldAorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0
cywgc2l6ZXMpCisgICAgaWYgb2Zmc2V0c1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2Rl
T3JpZ2luLCBvZmZzZXRzW3NlbGZdKQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAg
ZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBz
aXplcykKKyAgICBpZiBzaXplc1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2lu
LCBzaXplc1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBwdXRzICJDb3VsZCBub3QgZmluZCAje3Nl
bGYuaW5zcGVjdH0gaW4gI3tzaXplcy5rZXlzLmluc3BlY3R9IgorICAgICAgcHV0cyAic2l6ZXMg
PSAje3NpemVzLmluc3BlY3R9IgorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLmZvbGQgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgUmVzb2x2ZSBjb25zdGFudCByZWZlcmVuY2VzIGFuZCBjb21wdXRlIGFyaXRo
bWV0aWMgZXhwcmVzc2lvbnMuICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKworY2xhc3MgTm9kZQorICBkZWYgZm9sZAorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwg
Y2hpbGQgfAorICAgICAgY2hpbGQuZm9sZAorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgQWRk
SW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdo
dCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVk
aWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAg
SW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSArIEByaWdodC52YWx1ZSkKKyAg
ZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0g
QGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5s
ZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQu
aXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1
ZSAtIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcworICBk
ZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xk
CisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVy
biBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhj
b2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAqIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xh
c3MgTmVnSW1tZWRpYXRlCisgIGRlZiBmb2xkCisgICAgQGNoaWxkID0gQGNoaWxkLmZvbGQKKyAg
ICByZXR1cm4gc2VsZiB1bmxlc3MgQGNoaWxkLmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0
ZS5uZXcoY29kZU9yaWdpbiwgLUBjaGlsZC52YWx1ZSkKKyAgZW5kCitlbmQKKworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZlQWZ0ZXJTZXR0aW5ncyhvZmZz
ZXRzLCBzaXplcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIENvbXBpbGUgYXNzZW1ibHkgYWdhaW5zdCBhIHNldCBvZiBvZmZzZXRzLiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Ns
YXNzIE5vZGUKKyAgZGVmIHJlc29sdmUob2Zmc2V0cywgc2l6ZXMpCisgICAgZGVtYWNyb2lmeSh7
fSkucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpLmZvbGQKKyAgZW5kCitlbmQKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2NzMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2Ns
YXNzIFJlZ2lzdGVySUQKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgY2FzZSBuYW1lCisg
ICAgd2hlbiAidDAiLCAiYTAiLCAicjAiLCAidDEiLCAiYTEiLCAicjEiLCAidDIiLCAidDMiCisg
ICAgICB0cnVlCisgICAgd2hlbiAidDQiLCAiY2ZyIgorICAgICAgZmFsc2UKKyAgICBlbHNlCisg
ICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisg
ICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiCisgICAgICBjYXNlIGtpbmQK
KyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVhbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAg
ICAgIiVheCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVheCIKKyAgICAgIGVsc2UKKyAg
ICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQxIiwgImExIiwgInIxIgorICAgICAg
Y2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlZGwiCisgICAgICB3aGVuIDpo
YWxmCisgICAgICAgICIlZHgiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlZHgiCisgICAg
ICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MiIKKyAgICAgIGNh
c2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWNsIgorICAgICAgd2hlbiA6aGFs
ZgorICAgICAgICAiJWN4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWN4IgorICAgICAg
ZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDMiCisgICAgICBjYXNl
IGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVibCIKKyAgICAgIHdoZW4gOmhhbGYK
KyAgICAgICAgIiVieCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVieCIKKyAgICAgIGVs
c2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQ0IgorICAgICAgY2FzZSBr
aW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlc2lsIgorICAgICAgd2hlbiA6aGFsZgor
ICAgICAgICAiJXNpIgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZXNpIgorICAgICAgZWxz
ZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAiY2ZyIgorICAgICAgY2FzZSBr
aW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlZGlsIgorICAgICAgd2hlbiA6aGFsZgor
ICAgICAgICAiJWRpIgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWRpIgorICAgICAgZWxz
ZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAic3AiCisgICAgICBjYXNlIGtp
bmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzcGwiCisgICAgICB3aGVuIDpoYWxmCisg
ICAgICAgICIlc3AiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlc3AiCisgICAgICBlbHNl
CisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVu
ZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQo
a2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQKKyAgZGVmIHg4Nk9wZXJh
bmQoa2luZCkKKyAgICByYWlzZSB1bmxlc3Mga2luZCA9PSA6ZG91YmxlCisgICAgY2FzZSBuYW1l
CisgICAgd2hlbiAiZnQwIiwgImZhMCIsICJmciIKKyAgICAgICIleG1tMCIKKyAgICB3aGVuICJm
dDEiLCAiZmExIgorICAgICAgIiV4bW0xIgorICAgIHdoZW4gImZ0MiIsICJmYTIiCisgICAgICAi
JXhtbTIiCisgICAgd2hlbiAiZnQzIiwgImZhMyIKKyAgICAgICIleG1tMyIKKyAgICB3aGVuICJm
dDQiCisgICAgICAiJXhtbTQiCisgICAgd2hlbiAiZnQ1IgorICAgICAgIiV4bW01IgorICAgIGVs
c2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2lu
ZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVk
aWF0ZQorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIkI3t2YWx1ZX0iCisgIGVuZAorICBk
ZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiI3t2YWx1ZX0iCisgIGVuZAorZW5kCisKK2Ns
YXNzIEFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAg
ICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54
ODZPcGVyYW5kKDppbnQpfSkiCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAg
ICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAor
ICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2
T3BlcmFuZChraW5kKQorICAgICIje29mZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmlu
dCl9LCAje2luZGV4Lng4Nk9wZXJhbmQoOmludCl9LCAje3NjYWxlfSkiCisgIGVuZAorCisgIGRl
ZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZvcGVyYW5kKGtpbmQpfSIKKyAgZW5k
CitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgIGRlZiBzdXBwb3J0czhCaXRPblg4Ngor
ICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7YWRk
cmVzcy52YWx1ZX0iCisgIGVuZAorCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIq
I3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAg
ZGVmIHg4NkxhYmVsCisgICAgc2FuaXRpemVMYWJlbE5hbWUobmFtZSkKKyAgZW5kCisgIGRlZiB4
ODZDYWxsT3BlcmFuZChraW5kKQorICAgIHg4NkxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIExv
Y2FsTGFiZWxSZWZlcmVuY2UKKyAgZGVmIHg4NkxhYmVsCisgICAgIkxfb2ZmbGluZWFzbV8iK25h
bWVbMS4uLTFdCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICB4ODZMYWJl
bAorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbgorICBkZWYgeDg2T3BlcmFuZHMoKmtp
bmRzKQorICAgIHJhaXNlIHVubGVzcyBraW5kcy5zaXplID09IG9wZXJhbmRzLnNpemUKKyAgICBy
ZXN1bHQgPSBbXQorICAgIGtpbmRzLnNpemUudGltZXMgeworICAgICAgfCBpZHggfAorICAgICAg
cmVzdWx0IDw8IG9wZXJhbmRzW2lkeF0ueDg2T3BlcmFuZChraW5kc1tpZHhdKQorICAgIH0KKyAg
ICByZXN1bHQuam9pbigiLCAiKQorICBlbmQKKworICBkZWYgeDg2U3VmZml4KGtpbmQpCisgICAg
Y2FzZSBraW5kCisgICAgd2hlbiA6Ynl0ZQorICAgICAgImIiCisgICAgd2hlbiA6aGFsZgorICAg
ICAgInciCisgICAgd2hlbiA6aW50CisgICAgICAibCIKKyAgICB3aGVuIDpkb3VibGUKKyAgICAg
ICJzZCIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBo
YW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG51bU9wZXJhbmRzKQorICAg
IGlmIG51bU9wZXJhbmRzID09IDMKKyAgICAgIGlmIG9wZXJhbmRzWzBdID09IG9wZXJhbmRzWzJd
CisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2lmIG9w
ZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0g
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5k
KGtpbmQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJcdG1vdiN7eDg2U3VmZml4
KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4
Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0i
CisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5k
KX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wKG9wY29kZSwga2luZCkK
KyAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNp
emUpCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNoaWZ0KG9wY29kZSwga2luZCkKKyAgICBp
ZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0ZXJJ
RC5mb3JOYW1lKG5pbCwgInQyIikKKyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5k
KX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICVjbCwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hn
bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBoYW5kbGVYODZEb3VibGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAg
IGNhc2UgbW9kZQorICAgIHdoZW4gOm5vcm1hbAorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2Qg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDpkb3VibGUpfSIKKyAgICB3aGVuIDpyZXZlcnNlCisgICAgICAkYXNtLnB1dHMgIlx0dWNv
bWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlIG1vZGUuaW5zcGVjdAor
ICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS54
ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmUob3Bjb2RlU3Vm
Zml4LCBraW5kKQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFu
ZHNbMF0udmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9w
Y29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1
dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2lu
ZCl9IgorICAgIGVsc2lmIG9wZXJhbmRzWzFdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNb
MV0udmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29k
ZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMg
Ilx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHRjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50QnJhbmNoKGJyYW5j
aE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZJbnRDb21wYXJlKGJyYW5jaE9wY29kZVsxLi4t
MV0sIGtpbmQpCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJd
Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3Bl
cmFuZCkKKyAgICBpZiBvcGVyYW5kLnN1cHBvcnRzOEJpdE9uWDg2CisgICAgICAkYXNtLnB1dHMg
Ilx0I3tzZXRPcGNvZGV9ICN7b3BlcmFuZC54ODZPcGVyYW5kKDpieXRlKX0iCisgICAgICAkYXNt
LnB1dHMgIlx0bW92emJsICN7b3BlcmFuZC54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZC54
ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tv
cGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJcdCN7c2V0
T3Bjb2RlfSAlYWwiCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJsICVhbCwgJWVheCIKKyAgICAg
ICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmVTZXQoc2V0T3Bjb2Rl
LCBraW5kKQorICAgIGhhbmRsZVg4NkludENvbXBhcmUoc2V0T3Bjb2RlWzMuLi0xXSwga2luZCkK
KyAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kc1syXSkKKyAgZW5kCisgIAorICBk
ZWYgaGFuZGxlWDg2VGVzdChraW5kKQorICAgIHZhbHVlID0gb3BlcmFuZHNbMF0KKyAgICBjYXNl
IG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDIKKyAgICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNv
ZGVPcmlnaW4sIC0xKQorICAgIHdoZW4gMworICAgICAgbWFzayA9IG9wZXJhbmRzWzFdCisgICAg
ZWxzZQorICAgICAgcmFpc2UgIkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5kcywgYnV0IGdvdCAje29w
ZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAg
aWYgbWFzay5pc19hPyBJbW1lZGlhdGUgYW5kIG1hc2sudmFsdWUgPT0gLTEKKyAgICAgIGlmIHZh
bHVlLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZp
eChraW5kKX0gI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJcdGNtcCN7eDg2U3VmZml4KGtp
bmQpfSAkMCwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UK
KyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7bWFzay54ODZPcGVy
YW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisg
IAorICBkZWYgaGFuZGxlWDg2QnJhbmNoVGVzdChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFu
ZGxlWDg2VGVzdChraW5kKQorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVy
YW5kcy5sYXN0Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0VGVzdChz
ZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgIGhhbmRsZVg4NlNl
dChzZXRPcGNvZGUsIG9wZXJhbmRzLmxhc3QpCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9w
QnJhbmNoKG9wY29kZSwgYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51
bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgY2FzZSBvcGVy
YW5kcy5zaXplCisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAg
ICB3aGVuIDMKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAg
IHJhaXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9w
Y29kZX0gI3tqdW1wVGFyZ2V0Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2
U3ViQnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5kcy5zaXplID09IDQg
YW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGFkZGwg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICBlbHNlCisgICAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcygic3Vi
I3t4ODZTdWZmaXgoa2luZCl9Iiwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgZW5kCisg
ICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3Bl
cmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAg
IGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAi
XHQje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBk
ZWYgbG93ZXJYODYKKyAgICAkYXNtLmNvbW1lbnQgY29kZU9yaWdpblN0cmluZworICAgIGNhc2Ug
b3Bjb2RlCisgICAgd2hlbiAiYWRkaSIsICJhZGRwIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9
PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgcmFpc2UgdW5sZXNz
IG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJh
bmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgaWYgb3BlcmFuZHNbMF0udmFsdWUgPT0g
MAorICAgICAgICAgIHVubGVzcyBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAg
ICAgJGFzbS5wdXRzICJcdG1vdmwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICRhc20ucHV0cyAiXHRsZWFsICN7b3BlcmFuZHNbMF0udmFsdWV9KCN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3Bl
cmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNb
MV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNf
YT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgIlx0bGVhbCAoI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIHVubGVzcyBJ
bW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAkYXNtLnB1dHMg
Ilx0YWRkbCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgICAgZW5kCisgICAgICBl
bmQKKyAgICB3aGVuICJhbmRpIiwgImFuZHAiCisgICAgICBoYW5kbGVYODZPcCgiYW5kbCIsIDpp
bnQpCisgICAgd2hlbiAibHNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYWxsIiwgOmlu
dCkKKyAgICB3aGVuICJtdWxpIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVy
YW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgJGFzbS5wdXRzICJcdGltdWxsICN7eDg2
T3BlcmFuZHMoOmludCwgOmludCwgOmludCl9IgorICAgICAgZWxzZQorICAgICAgICAjIEZJWE1F
OiBjb3VsZCBkbyBzb21lIHBlZXBob2xlIGluIGNhc2UgdGhlIGxlZnQgb3BlcmFuZCBpcyBpbW1l
ZGlhdGUgYW5kIGl0J3MKKyAgICAgICAgIyBhIHBvd2VyIG9mIHR3by4KKyAgICAgICAgaGFuZGxl
WDg2T3AoImltdWxsIiwgOmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gIm5lZ2kiCisgICAgICAk
YXNtLnB1dHMgIlx0bmVnbCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJub3RpIgor
ICAgICAgJGFzbS5wdXRzICJcdG5vdGwgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAi
b3JpIiwgIm9ycCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJvcmwiLCA6aW50KQorICAgIHdoZW4gInJz
aGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2FybCIsIDppbnQpCisgICAgd2hlbiAidXJz
aGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2hybCIsIDppbnQpCisgICAgd2hlbiAic3Vi
aSIsICJzdWJwIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9
PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAg
ICAgZWxzZQorICAgICAgICBoYW5kbGVYODZPcCgic3VibCIsIDppbnQpCisgICAgICBlbmQKKyAg
ICB3aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICBoYW5kbGVYODZPcCgieG9ybCIsIDppbnQpCisg
ICAgd2hlbiAibG9hZGkiLCAic3RvcmVpIiwgImxvYWRwIiwgInN0b3JlcCIKKyAgICAgICRhc20u
cHV0cyAiXHRtb3ZsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgIHdoZW4gImxvYWRi
IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5
dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJsb2FkaCIK
KyAgICAgICRhc20ucHV0cyAiXHRtb3Z6d2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpoYWxm
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAic3RvcmViIgor
ICAgICAgJGFzbS5wdXRzICJcdG1vdmIgI3t4ODZPcGVyYW5kcyg6Ynl0ZSwgOmJ5dGUpfSIKKyAg
ICB3aGVuICJsb2FkZCIsICJtb3ZlZCIsICJzdG9yZWQiCisgICAgICAkYXNtLnB1dHMgIlx0bW92
c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAiYWRkZCIKKyAg
ICAgICRhc20ucHV0cyAiXHRhZGRzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIK
KyAgICB3aGVuICJkaXZkIgorICAgICAgJGFzbS5wdXRzICJcdGRpdnNkICN7eDg2T3BlcmFuZHMo
OmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInN1YmQiCisgICAgICAkYXNtLnB1dHMgIlx0
c3Vic2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAibXVsZCIK
KyAgICAgICRhc20ucHV0cyAiXHRtdWxzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUp
fSIKKyAgICB3aGVuICJzcXJ0ZCIKKyAgICAgICRhc20ucHV0cyAiXHRzcXJ0c2QgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSIKKyAgICB3aGVuICJjaTJkIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHNpMnNkICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91
YmxlKX0iCisgICAgd2hlbiAiYmRlcSIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51
bmlxdWUoImJkZXEiKQorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIK
KyAgICAgICRhc20ucHV0cyAiXHRqcCAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBp
c1Vub3JkZXJlZCkueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7TGFiZWxSZWZl
cmVuY2UubmV3KGNvZGVPcmlnaW4sIG9wZXJhbmRzWzJdKS54ODZMYWJlbH0iCisgICAgICBpc1Vu
b3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICB3aGVuICJiZG5lcSIKKyAgICAgIGhhbmRsZVg4NkRv
dWJsZUJyYW5jaCgiam5lIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGd0IgorICAgICAgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKCJqYSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRndGVxIgorICAgICAg
aGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYWUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHQiCisg
ICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRs
dGVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYWUiLCA6cmV2ZXJzZSkKKyAgICB3
aGVuICJiZGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImplIiwgOm5vcm1hbCkK
KyAgICB3aGVuICJiZG5lcXVuIgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1
ZSgiYmRuZXF1biIpCisgICAgICBpc0VxdWFsID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4i
KQorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpk
b3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20u
cHV0cyAiXHRqcCAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCku
eDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNv
ZGVPcmlnaW4sIGlzRXF1YWwpLng4NkxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJY
ODYiKQorICAgICAgJGFzbS5wdXRzICJcdGptcCAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAg
ICAgIGlzRXF1YWwubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRndHVuIgorICAgICAgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKCJqYiIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkZ3RlcXVuIgorICAg
ICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGx0
dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOm5vcm1hbCkKKyAgICB3aGVu
ICJiZGx0ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamJlIiwgOm5vcm1hbCkK
KyAgICB3aGVuICJidGQyaSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQp
fSIKKyAgICAgICRhc20ucHV0cyAiXHRjbXBsICQweDgwMDAwMDAwICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tvcGVyYW5kc1syXS54ODZM
YWJlbH0iCisgICAgd2hlbiAidGQyaSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICB3aGVuICJiY2QyaSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0bCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFz
bS5wdXRzICJcdGplICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJc
dGN2dHNpMnNkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAg
JGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwg
JXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0anAgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisg
ICAgICAkYXNtLnB1dHMgIlx0am5lICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgIHdoZW4g
Im1vdmR6IgorICAgICAgJGFzbS5wdXRzICJcdHhvcnBkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hl
biAicG9wIgorICAgICAgJGFzbS5wdXRzICJcdHBvcCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgIHdoZW4gInB1c2giCisgICAgICAkYXNtLnB1dHMgIlx0cHVzaCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gIm1vdmUiLCAic3hpMnAiLCAienhp
MnAiCisgICAgICBpZiBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0gYW5kIG9w
ZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJcdHhvcmwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRzWzBdICE9IG9wZXJhbmRzWzFdCisgICAgICAgICRh
c20ucHV0cyAiXHRtb3ZsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgZW5kCisg
ICAgd2hlbiAibm9wIgorICAgICAgJGFzbS5wdXRzICJcdG5vcCIKKyAgICB3aGVuICJiaWVxIiwg
ImJwZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmludCkKKyAgICB3aGVuICJi
aW5lcSIsICJicG5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmludCkKKyAg
ICB3aGVuICJiaWEiLCAiYnBhIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDppbnQp
CisgICAgd2hlbiAiYmlhZXEiLCAiYnBhZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImph
ZSIsIDppbnQpCisgICAgd2hlbiAiYmliIiwgImJwYiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamIiLCA6aW50KQorICAgIHdoZW4gImJpYmVxIiwgImJwYmVxIgorICAgICAgaGFuZGxlWDg2
SW50QnJhbmNoKCJqYmUiLCA6aW50KQorICAgIHdoZW4gImJpZ3QiLCAiYnBndCIKKyAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiamciLCA6aW50KQorICAgIHdoZW4gImJpZ3RlcSIsICJicGd0ZXEi
CisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnZSIsIDppbnQpCisgICAgd2hlbiAiYmlsdCIs
ICJicGx0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDppbnQpCisgICAgd2hlbiAi
YmlsdGVxIiwgImJwbHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamxlIiwgOmludCkK
KyAgICB3aGVuICJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDpieXRlKQor
ICAgIHdoZW4gImJibmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6Ynl0ZSkK
KyAgICB3aGVuICJiYmEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphIiwgOmJ5dGUpCisg
ICAgd2hlbiAiYmJhZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphZSIsIDpieXRlKQor
ICAgIHdoZW4gImJiYiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6Ynl0ZSkKKyAg
ICB3aGVuICJiYmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmJ5dGUpCisg
ICAgd2hlbiAiYmJndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamciLCA6Ynl0ZSkKKyAg
ICB3aGVuICJiYmd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnZSIsIDpieXRlKQor
ICAgIHdoZW4gImJibHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwgOmJ5dGUpCisg
ICAgd2hlbiAiYmJsdGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbHRlcSIsIDpieXRl
KQorICAgIHdoZW4gImJ0aW8iLCAiYnRwbyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpv
IiwgOmludCkKKyAgICB3aGVuICJidGlzIiwgImJ0cHMiCisgICAgICBoYW5kbGVYODZCcmFuY2hU
ZXN0KCJqcyIsIDppbnQpCisgICAgd2hlbiAiYnRpeiIsICJidHB6IgorICAgICAgaGFuZGxlWDg2
QnJhbmNoVGVzdCgianoiLCA6aW50KQorICAgIHdoZW4gImJ0aW56IiwgImJ0cG56IgorICAgICAg
aGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmludCkKKyAgICB3aGVuICJidGJvIgorICAgICAg
aGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJzIgorICAgICAg
aGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJ6IgorICAgICAg
aGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJueiIKKyAgICAg
IGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDpieXRlKQorICAgIHdoZW4gImptcCIKKyAgICAg
ICRhc20ucHV0cyAiXHRqbXAgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisg
ICAgd2hlbiAiYmFkZGlvIiwgImJhZGRwbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRs
IiwgImpvIiwgOmludCkKKyAgICB3aGVuICJiYWRkaXMiLCAiYmFkZHBzIgorICAgICAgaGFuZGxl
WDg2T3BCcmFuY2goImFkZGwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJhZGRpeiIsICJiYWRk
cHoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqeiIsIDppbnQpCisgICAgd2hl
biAiYmFkZGlueiIsICJiYWRkcG56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAi
am56IiwgOmludCkKKyAgICB3aGVuICJic3ViaW8iCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2go
ImpvIiwgOmludCkKKyAgICB3aGVuICJic3ViaXMiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2go
ImpzIiwgOmludCkKKyAgICB3aGVuICJic3ViaXoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2go
Imp6IiwgOmludCkKKyAgICB3aGVuICJic3ViaW56IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNo
KCJqbnoiLCA6aW50KQorICAgIHdoZW4gImJtdWxpbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNo
KCJpbXVsbCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYm11bGlzIgorICAgICAgaGFuZGxlWDg2
T3BCcmFuY2goImltdWxsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJibXVsaXoiCisgICAgICBo
YW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJtdWxpbnoi
CisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAiam56IiwgOmludCkKKyAgICB3aGVu
ICJib3JpbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAiam8iLCA6aW50KQorICAg
IHdoZW4gImJvcmlzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqcyIsIDppbnQp
CisgICAgd2hlbiAiYm9yaXoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImp6Iiwg
OmludCkKKyAgICB3aGVuICJib3JpbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwg
ImpueiIsIDppbnQpCisgICAgd2hlbiAiYnJlYWsiCisgICAgICAkYXNtLnB1dHMgIlx0aW50ICQz
IgorICAgIHdoZW4gImNhbGwiCisgICAgICAkYXNtLnB1dHMgIlx0Y2FsbCAje29wZXJhbmRzWzBd
Lng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJyZXQiCisgICAgICAkYXNtLnB1dHMg
Ilx0cmV0IgorICAgIHdoZW4gImNpZXEiLCAiY3BlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBh
cmVTZXQoInNldGUiLCA6aW50KQorICAgIHdoZW4gImNpbmVxIiwgImNwbmVxIgorICAgICAgaGFu
ZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bmUiLCA6aW50KQorICAgIHdoZW4gImNpYSIsICJjcGEi
CisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRhIiwgOmludCkKKyAgICB3aGVuICJj
aWFlcSIsICJjcGFlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGFlIiwgOmlu
dCkKKyAgICB3aGVuICJjaWIiLCAiY3BiIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgi
c2V0YiIsIDppbnQpCisgICAgd2hlbiAiY2liZXEiLCAiY3BiZXEiCisgICAgICBoYW5kbGVYODZJ
bnRDb21wYXJlU2V0KCJzZXRiZSIsIDppbnQpCisgICAgd2hlbiAiY2lndCIsICJjcGd0IgorICAg
ICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZyIsIDppbnQpCisgICAgd2hlbiAiY2lndGVx
IiwgImNwZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGdlIiwgOmludCkK
KyAgICB3aGVuICJjaWx0IiwgImNwbHQiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJz
ZXRsIiwgOmludCkKKyAgICB3aGVuICJjaWx0ZXEiLCAiY3BsdGVxIgorICAgICAgaGFuZGxlWDg2
SW50Q29tcGFyZVNldCgic2V0bGUiLCA6aW50KQorICAgIHdoZW4gInRpbyIKKyAgICAgIGhhbmRs
ZVg4NlNldFRlc3QoInNldG8iLCA6aW50KQorICAgIHdoZW4gInRpcyIKKyAgICAgIGhhbmRsZVg4
NlNldFRlc3QoInNldHMiLCA6aW50KQorICAgIHdoZW4gInRpeiIKKyAgICAgIGhhbmRsZVg4NlNl
dFRlc3QoInNldHoiLCA6aW50KQorICAgIHdoZW4gInRpbnoiCisgICAgICBoYW5kbGVYODZTZXRU
ZXN0KCJzZXRueiIsIDppbnQpCisgICAgd2hlbiAidGJvIgorICAgICAgaGFuZGxlWDg2U2V0VGVz
dCgic2V0byIsIDpieXRlKQorICAgIHdoZW4gInRicyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3Qo
InNldHMiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0YnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJz
ZXR6IiwgOmJ5dGUpCisgICAgd2hlbiAidGJueiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNl
dG56IiwgOmJ5dGUpCisgICAgd2hlbiAicGVlayIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7
b3BlcmFuZHNbMF0udmFsdWUgKiA0fSglZXNwKSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICB3aGVuICJwb2tlIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS52YWx1ZSAqIDR9KCVlc3ApIgor
ICAgIHdoZW4gImNkcWkiCisgICAgICAkYXNtLnB1dHMgIlx0Y2RxIgorICAgIHdoZW4gImlkaXZp
IgorICAgICAgJGFzbS5wdXRzICJcdGlkaXZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgd2hlbiAiZmlpMmQiCisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
IgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQp
fSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cHNsbHEgJDMyLCAleG1tNyIKKyAgICAgICRh
c20ucHV0cyAiXHRwb3IgJXhtbTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0i
CisgICAgd2hlbiAiZmQyaWkiCisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgICAgJGFzbS5wdXRzICJcdG1vdnNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHBzcmxxICQzMiwgJXhtbTciCisgICAgICAk
YXNtLnB1dHMgIlx0bW92c2QgJXhtbTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgZWxzZQorICAgICAgcmFpc2UgIkJhZCBvcGNvZGU6ICN7b3Bjb2RlfSIKKyAgICBlbmQK
KyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNw
ZWNpYWxpemF0aW9uS2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorI2RlZmluZSBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kX2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gQ29kZVNwZWNp
YWxpemF0aW9uS2luZCB7IENvZGVGb3JDYWxsLCBDb2RlRm9yQ29uc3RydWN0IH07CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
CShyZXZpc2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBD
b21tb25TbG93UGF0aHNfaAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29k
ZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNp
bmNsdWRlICJKU0FycmF5LmgiCiAKQEAgLTQxLDYgKzQyLDM4IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKIAorQUxXQVlTX0lOTElORSBFeGVjU3RhdGUq
IGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmls
ZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxl
ZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIEFTU0VSVCghY2FsbGVlLT5pc0hv
c3RGdW5jdGlvbigpKTsKKyAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpz
RXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgPSBleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygp
OworCisgICAgLy8gVGhpcyBlbnN1cmVzIGVub3VnaCBzcGFjZSBmb3IgdGhlIHdvcnN0IGNhc2Ug
c2NlbmFyaW8gb2YgemVybyBhcmd1bWVudHMgcGFzc2VkIGJ5IHRoZSBjYWxsZXIuCisgICAgaWYg
KCFyZWdpc3RlckZpbGUtPmdyb3coZXhlYy0+cmVnaXN0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpKQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8
IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKworICAgIC8vIFRvbyBmZXcgYXJndW1l
bnRzIC0tIGNvcHkgY2FsbCBmcmFtZSBhbmQgYXJndW1lbnRzLCB0aGVuIGZpbGwgaW4gbWlzc2lu
ZyBhcmd1bWVudHMgd2l0aCB1bmRlZmluZWQuCisgICAgc2l6ZV90IGRlbHRhID0gbmV3Q29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKKyAgICBS
ZWdpc3Rlciogc3JjID0gZXhlYy0+cmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0ZXIqIGRzdCA9IGV4
ZWMtPnJlZ2lzdGVycygpICsgZGVsdGE7CisKKyAgICBpbnQgaTsKKyAgICBpbnQgZW5kID0gLUV4
ZWNTdGF0ZTo6b2Zmc2V0Rm9yKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKKyAgICBmb3Ig
KGkgPSAtMTsgaSA+PSBlbmQ7IC0taSkKKyAgICAgICAgZHN0W2ldID0gc3JjW2ldOworCisgICAg
ZW5kIC09IGRlbHRhOworICAgIGZvciAoIDsgaSA+PSBlbmQ7IC0taSkKKyAgICAgICAgZHN0W2ld
ID0ganNVbmRlZmluZWQoKTsKKworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IEV4ZWNTdGF0ZTo6
Y3JlYXRlKGRzdCk7CisgICAgQVNTRVJUKCh2b2lkKiluZXdFeGVjIDw9IHJlZ2lzdGVyRmlsZS0+
ZW5kKCkpOworICAgIHJldHVybiBuZXdFeGVjOworfQorCiBBTFdBWVNfSU5MSU5FIGJvb2wgb3BJ
bnN0YW5jZU9mU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgYmFz
ZVZhbCwgSlNWYWx1ZSBwcm90bykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzQ2VsbCgpIHx8ICFi
YXNlVmFsLmlzQ2VsbCgpIHx8ICFwcm90by5pc0NlbGwoKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKKyNpbmNsdWRlICJFeGVj
dXRpb25IYXJuZXNzLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURHJpdmVyLmgi
CiAjaW5jbHVkZSAiUGFyc2VyLmgiCkBAIC04NCw3ICs4NSw3IEBAIEludHJpbnNpYyBOYXRpdmVF
eGVjdXRhYmxlOjppbnRyaW5zaWMoKSAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdGF0aWMgdm9p
ZCBqZXR0aXNvbkNvZGVCbG9jayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxUPiYg
Y29kZUJsb2NrKQogewotICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSAhPSBKSVRD
b2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChj
b2RlQmxvY2stPmdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0
aXZlKCkpOwogICAgIE93blB0cjxUPiBjb2RlQmxvY2tUb0pldHRpc29uID0gY29kZUJsb2NrLnJl
bGVhc2UoKTsKICAgICBjb2RlQmxvY2sgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFQ+KGNvZGVCbG9j
a1RvSmV0dGlzb24tPnJlbGVhc2VBbHRlcm5hdGl2ZSgpKTsKQEAgLTE2Nyw5ICsxNjgsMzAgQEAg
SlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlT3B0aW1pegogICAgIHJldHVybiBlcnJv
cjsKIH0KIAordm9pZCBFdmFsRXhlY3V0YWJsZTo6aml0Q29tcGlsZShFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShleGVjLCBtX2V2
YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7
CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK2lubGluZSBjb25zdCBj
aGFyKiBzYW1wbGluZ0Rlc2NyaXB0aW9uKEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyAg
ICBzd2l0Y2ggKGppdFR5cGUpIHsKKyAgICBjYXNlIEpJVENvZGU6OkludGVycHJldGVyVGh1bms6
CisgICAgICAgIHJldHVybiAiSW50ZXJwcmV0ZXIgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAg
Y2FzZSBKSVRDb2RlOjpCYXNlbGluZUpJVDoKKyAgICAgICAgcmV0dXJuICJCYXNlbGluZSBDb21w
aWxhdGlvbiAoVE9UQUwpIjsKKyAgICBjYXNlIEpJVENvZGU6OkRGR0pJVDoKKyAgICAgICAgcmV0
dXJuICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwogSlNPYmpl
Y3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29w
ZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsK
LSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJh
c2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxh
dGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxp
bmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5V
U0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtMjEwLDcgKzIzMiw3IEBAIEpTT2JqZWN0KiBFdmFsRXhl
Y3V0YWJsZTo6Y29tcGlsZUludGVybmEKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlm
ICghaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZXhlYywgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENv
ZGVGb3JDYWxsLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVjdXRpb24oZXhlYywg
bV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAgICAgcmV0
dXJuIDA7CiAjZW5kaWYKIApAQCAtMjk1LDkgKzMxNywxNSBAQCBKU09iamVjdCogUHJvZ3JhbUV4
ZWN1dGFibGU6OmNvbXBpbGVPcHRpCiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIFByb2dy
YW1FeGVjdXRhYmxlOjpqaXRDb21waWxlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBib29sIHJl
c3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGV4ZWMsIG1fcHJvZ3JhbUNvZGVCbG9jaywg
bV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwogSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxl
Ojpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVD
aGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lv
biBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2Vs
aW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7Cisg
ICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRU
eXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUp
OwpAQCAtMzM2LDcgKzM2NCw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGls
ZUludGUKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUlmQXBw
cm9wcmlhdGUoZXhlYywgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRU
eXBlKSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVjdXRpb24oZXhlYywgbV9wcm9ncmFtQ29kZUJs
b2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5k
aWYKIApAQCAtNDEyLDcgKzQ0MCw3IEBAIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1
dGFibGU6OmIKICAgICB3aGlsZSAocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKQogICAgICAgICByZXN1
bHQgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KHJlc3VsdC0+YWx0ZXJuYXRpdmUo
KSk7CiAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgQVNTRVJUKHJlc3VsdC0+Z2V0SklUVHlwZSgp
ID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGlu
ZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBA
IC00MzgsNiArNDY2LDE4IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVP
cHQKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRD
b21waWxlRm9yQ2FsbChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRD
b21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMsIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9q
aXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRh
YmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQpOworfQorCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNv
bnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxl
RnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2pp
dENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBt
X3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVT
RUQocmVzdWx0LCByZXN1bHQpOworfQorCiBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVj
dXRhYmxlOjpjb2RlQmxvY2tXaXRoQnl0ZWNvZGVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQogewogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVC
bG9ja0ZvcihraW5kKTsKQEAgLTQ4Miw3ICs1MjIsNyBAQCBQYXNzT3duUHRyPEZ1bmN0aW9uQ29k
ZUJsb2NrPiBGdW5jdGlvbkV4CiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBp
bGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVD
aGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lv
biBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2Vs
aW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7Cisg
ICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRU
eXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpA
QCAtNTA0LDcgKzU0NCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVG
b3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDYWxsLT5zaGFyZWRTeW1ib2xU
YWJsZSgpOwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklm
QXBwcm9wcmlhdGUoZXhlYywgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBt
X2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUpKQor
ICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMsIG1fY29kZUJsb2NrRm9y
Q2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBt
X3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9yQ2FsbCkpCiAgICAgICAgIHJldHVybiAwOwog
I2VuZGlmCiAKQEAgLTUyNCw3ICs1NjQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxl
Ojpjb21waWxlRm9yCiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JD
b25zdHJ1Y3RJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNo
YWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxp
bmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAg
ICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5
cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7
CkBAIC01NDYsNyArNTg2LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGls
ZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+c2hhcmVk
U3ltYm9sVGFibGUoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVu
Y3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENv
ZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5
bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlv
bihleGVjLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBt
X2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlw
ZSwgQ29kZUZvckNvbnN0cnVjdCkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDEw
NTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBFeGVjdXRhYmxlX2gKIAogI2lu
Y2x1ZGUgIkNhbGxEYXRhLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1
ZGUgIk5vZGVzLmgiCkBAIC0zOSwxMiArNDAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgRGVidWdnZXI7CiAgICAgY2xhc3MgRXZhbENvZGVCbG9jazsKICAgICBjbGFzcyBGdW5jdGlv
bkNvZGVCbG9jazsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
UHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKIAogICAgIHN0cnVj
dCBFeGNlcHRpb25JbmZvOwogICAgIAotICAgIGVudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7
IENvZGVGb3JDYWxsLCBDb2RlRm9yQ29uc3RydWN0IH07CiAgICAgZW51bSBDb21waWxhdGlvbktp
bmQgeyBGaXJzdENvbXBpbGF0aW9uLCBPcHRpbWl6aW5nQ29tcGlsYXRpb24gfTsKIAogICAgIGlu
bGluZSBib29sIGlzQ2FsbChDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0zMTksNiAr
MzIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEV2YWxFeGVjdXRh
YmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRF
eGVjdXRhYmxlIEJhc2U7CiAKQEAgLTMzOCw2ICszNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENv
ZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShFeGVjU3RhdGUqKTsK
ICNlbmRpZgogCiAgICAgICAgIEV2YWxDb2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkKQEAg
LTM4NCw2ICszODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgUHJv
Z3JhbUV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBl
ZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNDExLDYgKzQxNSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29u
T3B0aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlKEV4
ZWNTdGF0ZSopOwogI2VuZGlmCiAKICAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayYgZ2VuZXJhdGVk
Qnl0ZWNvZGUoKQpAQCAtNDUzLDYgKzQ1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAg
ICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJh
c2U7CiAKQEAgLTUwOCw2ICs1MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYg
RU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDYWxsKEpT
R2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDYWxsKEV4ZWNTdGF0ZSop
OwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNhbGwoKSBjb25zdApAQCAt
NTM1LDYgKzU0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklU
KQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChKU0dsb2Jh
bERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ29uc3RydWN0KEV4ZWNTdGF0ZSop
OwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNvbnN0cnVjdCgpIGNvbnN0
CkBAIC01ODIsNiArNTkwLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGpl
dHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChnbG9iYWxEYXRhKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yKEV4ZWNT
dGF0ZSogZXhlYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICAgICAgICAgIGppdENv
bXBpbGVGb3JDYWxsKGV4ZWMpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAg
ICAgICAgaml0Q29tcGlsZUZvckNvbnN0cnVjdChleGVjKTsKKyAgICAgICAgfQogI2VuZGlmCiAg
ICAgICAgIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yKENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhh
cm5lc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRpb25IYXJuZXNzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRpb25IYXJuZXNzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzIgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBFeGVj
dXRpb25IYXJuZXNzX2gKKyNkZWZpbmUgRXhlY3V0aW9uSGFybmVzc19oCisKKyNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJKSVREcml2ZXIu
aCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0
ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgoraW5saW5lIGJvb2wgcHJlcGFyZUZvckV4
ZWN1dGlvbihFeGVjU3RhdGUqIGV4ZWMsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2Nr
LCBKSVRDb2RlJiBqaXRDb2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisjaWYgRU5B
QkxFKExMSU5UKQorICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkgewor
ICAgICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRlcnByZXRlci4KKyAgICAg
ICAgTExJbnQ6OmdldEVudHJ5cG9pbnQoZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2suZ2V0
KCksIGppdENvZGUpOworICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5k
aWYgLy8gRU5BQkxFKExMSU5UKQorICAgIHJldHVybiBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShl
eGVjLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdFR5cGUpOworfQorCitpbmxpbmUgYm9vbCBwcmVw
YXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oRXhlY1N0YXRlKiBleGVjLCBPd25QdHI8RnVuY3Rpb25D
b2RlQmxvY2s+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRh
YmxlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2Rl
KGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVy
cHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RnVuY3Rpb25FbnRyeXBvaW50KGV4ZWMtPmdsb2Jh
bERhdGEoKSwga2luZCwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAg
Y29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7Cisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGtpbmQp
OworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUZ1bmN0aW9u
SWZBcHByb3ByaWF0ZShleGVjLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlD
aGVjaywgc3ltYm9sVGFibGUsIGppdFR5cGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIEVOQUJMRShKSVQpCisKKyNlbmRpZiAvLyBFeGVjdXRpb25IYXJuZXNzX2gKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJl
dmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJB
cnJheSA9IGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPltyZWdpc3RlckFy
cmF5U2l6ZV0pOwogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVycyA9IHJl
Z2lzdGVyQXJyYXkuZ2V0KCkgKyByZWdpc3Rlck9mZnNldDsKLQorICAgICAgICAKICAgICAgICAg
Ly8gQ29weSBhbGwgYXJndW1lbnRzIHRoYXQgY2FuIGJlIGNhcHR1cmVkIGJ5IG5hbWUgb3IgYnkg
dGhlIGFyZ3VtZW50cyBvYmplY3QuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9udW1D
YXB0dXJlZEFyZ3M7ICsraSkgewogICAgICAgICAgICAgaW50IGluZGV4ID0gQ2FsbEZyYW1lOjph
cmd1bWVudE9mZnNldChpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIAogICAgIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmllcjxV
bmtub3duPiB7CiAgICAgICAgIHR5cGVkZWYgV3JpdGVCYXJyaWVyPFVua25vd24+IEJhc2U7CkBA
IC0xMjQsNiArMTI1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEpT
QXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAg
ICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAko
cmV2aXNpb24gMTA1Mzc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwog
ICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OworICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAg
IGVudW0gRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGll
cywKQEAgLTE2NSw2ICsxNjYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAg
IGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fc3RydWN0dXJlOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAg
Y2xhc3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAg
IGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0xNDAsNiArMTQxLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgc3Rh
dGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElk
ZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMTA1Mzc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw4
IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICAsIGtleXdv
cmRzKGFkb3B0UHRyKG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRlcnByZXRlcigwKQog
ICAgICwgaGVhcCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFzc0luZm8oJkpTQXJy
YXk6OnNfaW5mbykKKyAgICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpTRmluYWxPYmplY3Q6
OnNfaW5mbykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxhc3RTY3JhdGNoQnVm
ZmVyKDApCiAjZW5kaWYKQEAgLTIxOCw3ICsyMjAsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFs
RGF0YShHbG9iYWxEYXRhVHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1bmtz
KHRoaXMpKTsKICNlbmRpZgogCi0gICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUodGhpcy0+Y2Fu
VXNlSklUKCkpOworICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKCZsbGludERhdGEsIHRoaXMt
PmNhblVzZUpJVCgpKTsKIAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xsZWN0KCk7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2
aXNpb24gMTA1Mzc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNiBAQAogI2RlZmluZSBKU0dsb2Jh
bERhdGFfaAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oIgotI2lu
Y2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5j
bHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRl
ICJTdHJvbmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJKSVRTdHVicy5o
IgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRl
ICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUg
IlN0cm9uZy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJUaW1lb3V0Q2hl
Y2tlci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYgKzY2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7
CiAgICAgY2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmE7CiAgICAg
Y2xhc3MgUmVnRXhwQ2FjaGU7CkBAIC0yNDgsNiArMjUwLDEyIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247CisKKyAgICAg
ICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOworICAgICAgICBjb25z
dCBDbGFzc0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CisKKyAgICAgICAgTExJ
bnQ6OkRhdGEgbGxpbnREYXRhOworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgUmV0dXJuQWRk
cmVzc1B0ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBob3N0Q2FsbFJldHVy
blZhbHVlOwpAQCAtMzUzLDYgKzM2MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogI3VuZGVmIHJlZ2lz
dGVyVHlwZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNHbG9iYWxEYXRh
KEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKICAgICAgICAgc3Rh
dGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAgdm9p
ZCBjcmVhdGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBl
OwogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7Cisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBSZWdFeHBD
b25zdHJ1Y3RvcjsKQEAgLTMzNSw2ICszMzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5m
byosIGludCBjb3VudCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVz
ZXQgaW50byBpbml0LgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluaXQoSlNPYmpl
Y3QqIHRoaXNWYWx1ZSk7CiAgICAgICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAx
MDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEdl
dHRlclNldHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJuYWxGdW5j
dGlvbjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2Vk
QmxvY2s7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5
TmFtZUFycmF5OwpAQCAtMjcxLDYgKzI3Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBK
U09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5l
U3RvcmFnZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gTm9ib2R5IHNob3VsZCBldmVyIGFz
ayBhbnkgb2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0aGluZyBhbHJlYWR5IGtub3duIHRvIGJl
IGEgSlNPYmplY3QuCiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXI7CiAg
ICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7CkBAIC0zODMsNiArMzg2LDggQEAg
Q09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0IEpT
RmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX2lubGlu
ZVN0b3JhZ2UpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwNTM3NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciA6IHB1
YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtOTYsNiArOTcsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9w
ZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKIAogICAgICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTA1Mzc0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1N0cmluZzsKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBKU1N0cmluZyoganNFbXB0eVN0
cmluZyhKU0dsb2JhbERhdGEqKTsKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3Rh
dGUqKTsKQEAgLTI0MSw2ICsyNDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0
ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAg
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikg
Y29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIqKSBjb25zdDsK
ICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFyKikgY29uc3Q7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAxMDUz
NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkIHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJsZS4KICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8PCAxOwogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEgPDwgMjsKQEAgLTg3LDYgKzg5
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBi
b29sIGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA8PSAo
MSA8PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAgICAgICBib29sIGlzU2V0T25G
bGFnczIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8PCA4KSk7IHJl
dHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDEw
ICsxMTYsOSBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiAgICAg
cmV0dXJuIEpTTm90QW5PYmplY3Q6OmNyZWF0ZShleGVjKTsKIH0KIAotI2lmbmRlZiBOREVCVUcK
IGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIHsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IHNpemUgPSA2NDsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSAxMjg7CiAgICAgc3Rh
dGljIGNoYXIgZGVzY3JpcHRpb25bc2l6ZV07CiAKICAgICBpZiAoISp0aGlzKQpAQCAtMTI4LDE0
ICsxMjcsMTQgQEAgY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogICAgICAgICBzbnByaW50
ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkludDMyOiAlZCIsIGFzSW50MzIoKSk7CiAgICAgZWxzZSBp
ZiAoaXNEb3VibGUoKSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHNucHJpbnRmKGRl
c2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICVseCIsIGFzRG91YmxlKCksIHJlaW50ZXJw
cmV0RG91YmxlVG9JbnRwdHIoYXNEb3VibGUoKSkpOworICAgICAgICBzbnByaW50ZihkZXNjcmlw
dGlvbiwgc2l6ZSwgIkRvdWJsZTogJWx4LCAlbGYiLCByZWludGVycHJldERvdWJsZVRvSW50cHRy
KGFzRG91YmxlKCkpLCBhc0RvdWJsZSgpKTsKICNlbHNlCiAgICAgICAgIHVuaW9uIHsKICAgICAg
ICAgICAgIGRvdWJsZSBhc0RvdWJsZTsKICAgICAgICAgICAgIHVpbnQzMl90IGFzVHdvSW50MzJz
WzJdOwogICAgICAgICB9IHU7CiAgICAgICAgIHUuYXNEb3VibGUgPSBhc0RvdWJsZSgpOwotICAg
ICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlMDh4OiUwOHgi
LCBhc0RvdWJsZSgpLCB1LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdKTsKKyAgICAg
ICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICUwOHg6JTA4eCwgJWxmIiwg
dS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSwgYXNEb3VibGUoKSk7CiAjZW5kaWYK
ICAgICB9IGVsc2UgaWYgKGlzQ2VsbCgpKQogICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwg
c2l6ZSwgIkNlbGw6ICVwIiwgYXNDZWxsKCkpOwpAQCAtMTUyLDcgKzE1MSw2IEBAIGNoYXIqIEpT
VmFsdWU6OmRlc2NyaXB0aW9uKCkKIAogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KLSNlbmRp
ZgogCiAvLyBUaGlzIGluIHRoZSBUb0ludDMyIG9wZXJhdGlvbiBpcyBkZWZpbmVkIGluIHNlY3Rp
b24gOS41IG9mIHRoZSBFQ01BLTI2MiBzcGVjLgogLy8gTm90ZSB0aGF0IHRoaXMgb3BlcmF0aW9u
IGlzIGlkZW50aWNhbCB0byBUb1VJbnQzMiBvdGhlciB0aGFuIHRvIGludGVycHJldGF0aW9uCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAxMDUz
NzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIzMyw5ICsyMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNDZWxs
KiBhc0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlk
Q2FsbGVlKCk7CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGNoYXIqIGRlc2NyaXB0aW9uKCk7
Ci0jZW5kaWYKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBKU1Zh
bHVlKFdyaXRlQmFycmllckJhc2U8VD4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMTA1Mzc0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCwxMCArMzgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAKICAgICBjbGFzcyBK
U1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBmcmll
bmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lv
biAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTAgQEAgdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9u
Rm9yQ29uc3RydWN0SW5saQogCiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsKIAoraW50
MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2ludDMyX3QgZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworaW50MzJfdCBleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVG
b3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKQEAgLTEzNyw2ICsxNDEsMTAgQEAgdm9pZCBpbml0
aWFsaXplT3B0aW9ucygpCiAgICAgCiAgICAgU0VUKG1heGltdW1JbmxpbmluZ0RlcHRoLCA1KTsK
IAorICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcCwgICAgIC0x
MDApOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb24s
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKKyAgICBTRVQoZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9ySklUU29vbiwgICAgICAgICAgICAtMTAwKTsKKwogICAgIFNFVChleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwLCAgICAgLTEwMDApOwogICAg
IFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCwgLTUw
MDApOwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1l
U29vbiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOwpAQCAtMTg1LDYgKzE5
Myw4IEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIGlmIChjcHVzVG9Vc2UgPCAxKQog
ICAgICAgICBjcHVzVG9Vc2UgPSAxOwogICAgIAorICAgIGNwdXNUb1VzZSA9IDE7CisgICAgCiAg
ICAgU0VUKG51bWJlck9mR0NNYXJrZXJzLCBjcHVzVG9Vc2UpOwogCiAgICAgQVNTRVJUKGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uIDw9IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiAr
MzcsMTAgQEAgZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cgogCiBleHRl
cm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERlcHRoIG9mIGlubGluZSBzdGFj
aywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMuCiAKK2V4dGVybiBpbnQz
Ml90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworZXh0ZXJuIGludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworZXh0ZXJuIGlu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogZXh0ZXJuIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGV4dGVybiBpbnQz
Ml90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogZXh0
ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNv
b247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShy
ZXZpc2lvbiAxMDUzNzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNo
YWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNs
YXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFz
cyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCkBAIC05
MSw2ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFU
QSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAg
ICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJ
KHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5
TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5RGF0YTsKICAgICBjbGFzcyBT
dHJ1Y3R1cmVDaGFpbjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHBy
aXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
ICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25z
dCBDbGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYpOwogICAgICAg
ICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9u
IDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWlu
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU3RydWN0dXJlOwog
CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlNDZWxsIHsKQEAgLTc0LDYgKzc1
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBT
dHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxh
dGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTE4LDYgKzkxOCwxOCBAQAogI2RlZmluZSBFTkFC
TEVfSklUIDEKICNlbmRpZgogCisvKiBPbiBzb21lIG9mIHRoZSBwbGF0Zm9ybXMgd2hlcmUgd2Ug
aGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNvIGhhdmUgdGhlIAorICAgbG93LWxldmVsIGludGVy
cHJldGVyLiAqLworI2lmICFkZWZpbmVkKEVOQUJMRV9MTElOVCkgJiYgRU5BQkxFKEpJVCkgJiYg
UExBVEZPUk0oTUFDKSAmJiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBFTkFCTEVfTExJTlQg
MQorI2VuZGlmCisKKy8qIElmIHdlIGhhdmUgTExJbnQgZW5hYmxlZCBhbmQgdGhlIEpJVCBlbmFi
bGVkLCB3ZSBhbHNvIGVuYWJsZSBPU1JpbmcgZnJvbQorICAgTExJbnQgdG8gdGhlIEpJVC4gKi8K
KyNpZiAhZGVmaW5lZChFTkFCTEVfT1NSX1RPX0pJVCkgJiYgRU5BQkxFKEpJVCkgJiYgRU5BQkxF
KExMSU5UKQorI2RlZmluZSBFTkFCTEVfTExJTlRfT1NSX1RPX0pJVCAxCisjZW5kaWYKKwogI2lm
ICFkZWZpbmVkKEVOQUJMRV9ERkdfSklUKSAmJiBFTkFCTEUoSklUKQogLyogRW5hYmxlIHRoZSBE
RkcgSklUIG9uIFg4NiBhbmQgWDg2XzY0LiAgT25seSB0ZXN0ZWQgb24gTWFjIGFuZCBHTlUvTGlu
dXguICovCiAjaWYgKENQVShYODYpIHx8IENQVShYODZfNjQpKSAmJiAoUExBVEZPUk0oTUFDKSB8
fCBPUyhMSU5VWCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlu
a2VkTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGlu
ZWxMaW5rZWRMaXN0LmgJKHJldmlzaW9uIDEwNTM3NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDgg
QEAgcHVibGljOgogCiAgICAgaXRlcmF0b3IgYmVnaW4oKTsKICAgICBpdGVyYXRvciBlbmQoKTsK
KyAgICAKKyAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBiZWdpbigpID09IGVuZCgpOyB9CiAK
IHByaXZhdGU6CiAgICAgUmF3Tm9kZSBtX2hlYWRTZW50aW5lbDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gMTA1Mzc0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5
KQpAQCAtNDMsNiArNDMsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZT
dHJpCiAvLyBMYW5kaW5nIHRoZSBmaWxlIG1vdmVzIGluIG9uZSBwYXRjaCwgd2lsbCBmb2xsb3cg
b24gd2l0aCBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgbmFtZXNwYWNlcy4KIG5hbWVzcGFjZSBKU0Mg
ewogc3RydWN0IElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSWRlbnRpZmllckNoYXJC
dWZmZXJUcmFuc2xhdG9yOwogc3RydWN0IElkZW50aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5zbGF0
b3I7CiB9CkBAIC03MCw3ICs3MSw4IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgIGZyaWVuZCBz
dHJ1Y3QgV1RGOjpIYXNoQW5kVVRGOENoYXJhY3RlcnNUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBz
dHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21p
Y1N0cmluZ0ltcGw7Ci0KKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0
b3I7CisgICAgCiBwcml2YXRlOgogICAgIGVudW0gQnVmZmVyT3duZXJzaGlwIHsKICAgICAgICAg
QnVmZmVySW50ZXJuYWwsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123518</attachid>
            <date>2012-01-22 21:46:33 -0800</date>
            <delta_ts>2012-01-23 15:23:27 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_35.diff</filename>
            <type>text/plain</type>
            <size>431321</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1NTkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3NyBA
QAorMjAxMi0wMS0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV09SSyBJTiBQUk9HUkVTUy4gIEl0IGFwcGVhcnMgdG8gd29yayBidXQgbmVlZHMg
bW9yZSB0ZXN0aW5nLgorICAgICAgICAKKyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0
ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBjYWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAg
aW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExMSW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVy
LiBKU0Mgd2lsbCBub3cKKyAgICAgICAgd2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBM
TEludCBhbmQgd2lsbCBvbmx5IHRpZXIgdXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIg
dGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4KKyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0
ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9mIG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFj
cm8KKyAgICAgICAgYXNzZW1ibHkgaXMgY29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIg
KHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gKKyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBj
b252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAg
bWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVjdCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5m
b3JtYXRpb24KKyAgICAgICAgKGJhc2ljYWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMg
b2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAgICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGlu
IExMSW50IGFwcGVhcnMgdG8gdGhlIHJlc3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0Cisg
ICAgICAgIHdlcmUgZXhlY3V0aW5nIGluIHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2Ug
ZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAorICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNh
bGxzIGp1c3Qgd29yayBhbmQgcmVxdWlyZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlv
bmFsIG92ZXJoZWFkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIu
NXggZmFzdGVyIHRoYW4gb3VyIG9sZCBpbnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAg
IFY4LCBhbmQgS3Jha2VuLiBUaGlzIGlzIHRoZSAiZmlyc3QgYXR0ZW1wdCIgcGVyZm9ybWFuY2Ug
LSBubyB3b3JrIGhhcyBiZWVuCisgICAgICAgIGRvbmUgdG8gZGlhZ25vc2UgYW55IHBvdGVudGlh
bCBib3R0bGVuZWNrcy4gTWFueSBvYnZpb3VzIG9uZXMgZXhpc3QsIGxpa2UKKyAgICAgICAgcmVk
dWNpbmcgdGhlIG51bWJlciBvZiBpbnN0cnVjdGlvbnMgaW1wbGVtZW50ZWQgYXMgc2xvdyBjYWxs
cyB0byBDKysgY29kZQorICAgICAgICBhbmQgbWFraW5nIHByb3BlcnR5IGFjY2VzcyBjYWNoaW5n
IG1vcmUgYWdncmVzc2l2ZS4KKyAgICAgICAgCisgICAgICAgIEFzIGFuIGFkZGl0aW9uYWwgY2hh
bmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5kIEpTVmFsdWUKKyAgICAg
ICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBkZWJ1Z2dpbmcgc29tZSBv
ZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0Y2ggd291bGQgaGF2ZSBi
ZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAgICBkb24ndCBiZWxpZXZl
IHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxvYXQgdGhhdCB0aGlzCisg
ICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUNv
bnZlbnRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNw
cDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAg
ICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0
KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5j
b25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ry
b25nUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5saW5rQ2FsbHMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUNv
ZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpqZXR0aXNv
bik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAg
IChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6
RXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUltcGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNv
ZGVCbG9jazo6aml0Q29tcGlsZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5lVmVyc2lvbik6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bGlua0luY29taW5nQ2FsbCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmhhbmRsZUJ5dGVj
b2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRD
b21waWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNPcHRpbWl6ZWRSZXBsYWNlbWVu
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRMTEludENhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVzb2x2ZUluZm8pOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpsaWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6Omxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6bGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFk
ZEZyZXF1ZW50RXhpdFNpdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0
aW1lU29vbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmxsaW50RXhlY3V0ZUNvdW50ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAg
ICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6Cisg
ICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNv
ZGUvTExJbnRDYWxsTGlua0luZm8uaDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50Q2FsbExp
bmtJbmZvOjpMTEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJ
bmZvOjp+TExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5m
bzo6aXNMaW5rZWQpOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6dW5saW5rKToK
KyAgICAgICAgKiBieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChK
U0M6Ok1ldGhvZENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29k
ZS9PcGNvZGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6
OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6c2V0RHVtcHNHZW5lcmF0ZWRDb2RlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVj
dFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gpOgorICAgICAgICAqIGRmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omdl
dFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAg
ICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0
Q29tcGlsZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBoZWFwL0FsbG9jYXRpb25TcGFjZS5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAg
ICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAg
ICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxG
cmFtZS5oOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmN1cnJlbnRWUEMpOgorICAgICAgICAq
IGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
On5JbnRlcnByZXRlcik6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjppbml0aWFsaXplKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpy
ZXRyaWV2ZUxhc3RDYWxsZXIpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGUpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZW5h
YmxlZCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmg6CisgICAgICAgICog
aml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Z2V0SG9z
dENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJl
dHVyblZhbHVlLmg6IEFkZGVkLgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6
CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNPcHRp
bWl6aW5nSklUKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNCYXNlbGluZUNvZGUpOgorICAg
ICAgICAoSlNDOjpKSVRDb2RlOjpKSVRDb2RlKToKKyAgICAgICAgKiBqaXQvSklURHJpdmVyLmg6
CisgICAgICAgIChKU0M6OmppdENvbXBpbGVJZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKEpTQzo6
aml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZSk6CisgICAgICAgICogaml0L0pJVEV4Y2Vw
dGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpqaXRUaHJvdyk6CisgICAgICAgICogaml0L0pJVFN0
dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAq
IGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAg
KiBsbGludC9MTEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6
CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50
L0xMSW50RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZ1
bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFdmFsRW50cnlwb2lu
dCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAg
ICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldEVudHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6aW50ZXJwcmV0ZXJUaHJvdyk6CisgICAgICAgIChK
U0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhy
b3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAg
KiBsbGludC9MTEludEhlbHBlcnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6Omxs
aW50X3RyYWNlX29wZXJhbmQpOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfdHJhY2VfdmFs
dWUpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfSEVMUEVSX0RFQ0wpOgorICAgICAgICAo
SlNDOjpMTEludDo6dHJhY2VGdW5jdGlvblByb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnNob3VsZEpJVCk6CisgICAgICAgIChKU0M6OkxMSW50OjplbnRyeU9TUik6CisgICAgICAgIChK
U0M6OkxMSW50OjpyZXNvbHZlR2xvYmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFs
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRPZmZzZXRzRXh0cmFj
dG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5r
cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1w
VG8pOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlD
aGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmV2
YWxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnByb2dyYW1FbnRy
eVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5oOiBBZGRlZC4K
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTogQWRk
ZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICogb2Zm
bGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBv
ZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9zZXR0aW5ncy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS90
cmFuc2Zvcm0ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBBZGRlZC4K
KyAgICAgICAgKiBydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaDogQWRkZWQuCisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xv
d1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3Bw
OgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2YWxF
eGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6c2FtcGxpbmdEZXNjcmlwdGlv
bik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6CisgICAgICAgIChKU0M6
OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbCk6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3Mu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OnByZXBhcmVGb3JFeGVjdXRpb24pOgorICAgICAgICAo
SlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
Y3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dGVhck9mZik6CisgICAg
ICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmlu
Zy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmRlc2NyaXB0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRp
b25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6Cisg
ICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oOgorICAgICAg
ICAoV1RGOjpTZW50aW5lbExpbmtlZExpc3Q6OmlzRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0
L1N0cmluZ0ltcGwuaDoKKwogMjAxMi0wMS0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgogCiAgICAgICAgIEJ1aWxkIGZpeCBmb3Igbm9uLURGRyBwbGF0Zm9ybXMgdGhhdCBlcnJv
ciBvdXQgb24gd2Fybi11bnVzZWQtcGFyYW1ldGVyLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEwNTU4NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEs
NCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIw
MDgsIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwog
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MCw2ICs2MCw3IEBAIGFsbCA6IFwKICAgICBT
dHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU3RyaW5nUHJvdG90eXBlLmx1dC5oIFwKICAg
ICBkb2NzL2J5dGVjb2RlLmh0bWwgXAorICAgIExMSW50QXNzZW1ibHkuaC5QSE9OWSBcCiAjCiAK
ICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwpAQCAtMTA0LDMgKzEwNSwxMSBAQCBIZWFkZXJE
ZXRlY3Rpb24uaCA6CiAJZWNobyA+ICRACiAKIGVuZGlmCisKKyMgQXNzZW1ibHkgZm9yIHRoZSBM
b3dMZXZlbEludGVycHJldGVyCisKKyMgVGhpcyBidWlsZHMgZXZlcnkgdGltZSBiZWNhdXNlIHRo
ZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGRlc2NyaWJlCisjIHRoZSBkZXBlbmRlbmNpZXMgdXNpbmcg
bWFrZS4gSW5zdGVhZCwgdGhlIGFzc2VtYmxlciB3aWxsIGRlY2lkZSBvbgorIyBpdHMgb3duIHdo
ZXRoZXIgb3Igbm90IGl0IGRpZCBhbnl0aGluZyB0aGF0IHdvdWxkIGxlYWQgdG8gYSBjaGFuZ2Uu
CitMTEludEFzc2VtYmx5LmguUEhPTlk6CisJcnVieSAkKEphdmFTY3JpcHRDb3JlKS9vZmZsaW5l
YXNtL2FzbS5yYiAkKEphdmFTY3JpcHRDb3JlKS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yID4gTExJbnRB
c3NlbWJseS5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA1
NTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxNSBAQAogCW9iamVjdHMg
PSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCisJCTBGNDY4MEE5
MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovID0geworCQkJaXNhID0gUEJYQWdn
cmVnYXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MEFDMTRCQTdG
RDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRh
cmdldCAiTExJbnQgT2Zmc2V0cyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODBB
QTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAorCQkJKTsK
KwkJCW5hbWUgPSAiTExJbnQgT2Zmc2V0cyI7CisJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNv
dXJjZXMiOworCQl9OwogCQk2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3Vy
Y2VzICovID0gewogCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1
cmF0aW9uTGlzdCA9IDY1RkIzRjc3MDlEMTFFQkQwMEY0OURFQiAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVyaXZlZCBTb3VyY2VzIiAqLzsKQEAg
LTE0LDYgKzIzLDkgQEAKIAkJCQk2NUZCM0Y2NTA5RDExRTkxMDBGNDlERUIgLyogR2VuZXJhdGUg
RGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTVEMzVERUUxMEM3QzE0MEIwMDg2NDhCMiAvKiBHZW5l
cmF0ZSBEVHJhY2UgaGVhZGVyICovLAogCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkw
RjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7
CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVk
IFNvdXJjZXMiOwogCQl9OwpAQCAtNDgsNiArNjAsMTAgQEAKIAkJMEJBQzk0QTAxMzM4NzI4NDAw
Q0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBU
aHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJDRDgzNTcxNDg1ODQ1MjAwRUEyMDAzIC8qIFRlbXBvcmFy
eUNoYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEJDRDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCRjI4QTI5MTFBMzNEQzMw
MDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNw
cCAqLzsgfTsKKwkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgz
OTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovOyB9OworCQkwRjBC
ODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRG
IC8qIExMSW50RW50cnlwb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3Mu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgz
OTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUQx
NEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRU
aHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAv
KiBDb2RlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTgxNEJDRjU1RTAw
ODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25S
YW5nZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU4LDkgKzc0LDEz
IEBACiAJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0IzMTRC
Q0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYg
LyogR2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5m
by5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
MEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNl
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgz
QjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwRkM0
NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQg
LyogTExJbnRDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1Bh
dGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1
RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNkQ3MjYxNDJDMzlDMDAwQ0Y3
ODRBIC8qIEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLzsg
fTsKIAkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNjYxNEJFNUY1RTAwQURD
NjRCIC8qIEpJVERyaXZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3
QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0
QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNp
YWxpemF0aW9uS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3
RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjQyREE3MTNGM0IxRTgwMDdB
REQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1Jl
ZmVyZW5jZUhhcnZlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGMkM1NTZGMTQ3MzhGMzEwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RTE0
NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTcwMTQ3MzhGMzUwMDEyMUU0RiAvKiBE
RkdDb2RlQmxvY2tzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLzsg
fTsKQEAgLTcxLDYgKzkxLDE5IEBACiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBMaXN0
YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MjE0QkE1
NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2Vw
dGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA3RjE0QkE1NzI3MDBC
RkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MEEzMTRCQTdGOEQwMEJG
RTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlv
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlGMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludEhlbHBlcnMuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICIt
V25vLXVudXNlZC1wYXJhbWV0ZXIiOyB9OyB9OworCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIg
LyogTExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTcxNEJB
N0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIg
LyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTgxNEJBN0ZBQjAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNl
cHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29t
bW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2
ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIg
LyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzcx
NEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovOyB9OworCQkwRjQ2
ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzgxNEJCQjE2OTAwQkZF
MjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnRE
YXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovOyB9OworCQkwRjQ2ODBE
MzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnRE
YXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDAxNEJCQzVG
ODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovOyB9OworCQkwRjQ2ODBENTE0
QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8q
IEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25h
bEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYyMDE3
NDE0M0ZDRDMzMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYyMDE3MjE0M0ZDRDJGMDA2OEI3
N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAxNzUxNDNGQ0QzNzAwNjhCNzdDIC8qIERGR09w
ZXJhbmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjYyMDE3MTE0M0ZDRDJGMDA2OEI3N0MgLyogREZHT3BlcmFuZHMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzgzLDcgKzQxNiw3IEBACiAJCTg2
Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUUxMTE3RTU3ODEwMERGNUE5MCAv
KiBTdHJpbmdCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRTEzOEUz
ODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87IH07CiAJCTg2QkIwOUMxMTM4RTM4MUIw
MDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oICov
OyB9OwotCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4
OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyB9OworCQk4NkMzNkVFQTBFRTEyODlE
MDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2Vt
Ymxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERDExQTIxM0VF
MDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9OwogCQk4NkM1NjhFMTExQTIx
M0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFj
cm9Bc3NlbWJsZXJNSVBTLmggKi87IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBN
SVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovOyB9OwpA
QCAtNzUyLDYgKzc4NSwyMCBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTBGNDY4MEIxMTRCQTgx
MTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhD
b250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhG
QzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVt
b3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzI7CisJCQlyZW1vdGVJ
bmZvID0gIkxMSW50IE9mZnNldHMiOworCQl9OworCQkwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIg
LyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRl
bVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8q
IFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElE
U3RyaW5nID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9IEpTQ0xM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJMTQxMjE0QkUwQTQ5MTkwRTAwNDgwMjU1IC8q
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Q
cm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQ
cm9qZWN0IG9iamVjdCAqLzsKQEAgLTc5Nyw2ICs4NDQsMTUgQEAKIC8qIEVuZCBQQlhDb250YWlu
ZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLyA9
IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEvOworCQkJZHN0
U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKIAkJNURCQjE1MTExMzFEMEIxMzAwNTZB
RDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb3B5RmlsZXNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7CkBAIC04MzcsNiArODkzLDEwIEBA
CiAJCTBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFJlc3RyaWN0aW9uVmVy
aWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJDRDgzNTQxNDg1ODQxMjAw
RUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUZW1wb3JhcnlDaGFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJG
MjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMu
Y3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMuaDsg
cGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50VGh1bmtzLmNwcDsgcGF0aCA9IGxs
aW50L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgz
OTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExMSW50VGh1bmtzLmg7IHBhdGggPSBsbGludC9MTEludFRodW5rcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyog
Q29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVR5cGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8q
IEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRsZXJJ
bmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0FBMTRCQ0Y1QjkwMDg4
NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTg0Nyw5ICs5MDcsMTMgQEAKIAkJMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhv
ZENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRob2RD
YWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjYxNEJD
RjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdsb2JhbFJlc29sdmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsUmV0dXJu
T2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQ
YXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25TbG93UGF0aHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRB
IC8qIEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBC
aXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIxQzI2NjE0QkU1
RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpJVERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3OTE0
QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25I
YXJuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGlvbkhhcm5l
c3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0UxNEJFQUE4MDAwQURD
NjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQnl0ZWNvZGVDb252ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAv
KiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IERGR0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2
RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC04NjAsNiArOTI0LDIwIEBACiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0
YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVI
YW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDdGMTRCQTU3Mjcw
MEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNF
eHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9
ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9
IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJ
UjsgfTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuY3Bw
OyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuaDsgcGF0aCA9
IGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50SGVscGVycy5jcHA7IHBhdGggPSBsbGludC9M
TEludEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMDE0
QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IExMSW50SGVscGVycy5oOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBM
TEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM1MTRC
QkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBMTEludENvbW1vbi5oOyBwYXRoID0gbGxpbnQvTExJbnRDb21tb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50
T2ZmbGluZUFzbUNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTElu
dE9mZmxpbmVBc21Db25maWcuaDsgcGF0aCA9IGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIg
LyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmNwcDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDODE0QkJC
MTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmg7IHBhdGggPSBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENFMTRC
QkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTExJbnREYXRhLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBM
TEludERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnREYXRhLmg7
IHBhdGggPSBsbGludC9MTEludERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAv
KiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEhvc3RDYWxsUmV0dXJuVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1
RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5dGVDb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNvZGVDYWNoZS5oOyBwYXRoID0gZGZnL0RGR0J5
dGVDb2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0UxNDZD
NzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVW5jb25kaXRpb25hbEZpbmFsaXplci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjYyMDE2RDE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RT
dGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBYnN0cmFj
dFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NzksNiArMTY1NywxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZl
cmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0
aW9uICovCisJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovID0gewor
CQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBG
cmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTYzNyw2ICsxNzIyLDcgQEAKIAkJCQkx
NDEyMTEyMDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4
RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQg
LyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJ
bnRPZmZzZXRzRXh0cmFjdG9yICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjY3LDYgKzE3NTMsNyBAQAogCQkJCUY1QzI5MEU2
MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEy
RDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYw
MUZGNjBGNyAvKiBjb25maWcuaCAqLywKKwkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyog
bGxpbnQgKi8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5
Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVE
MUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKQEAgLTE3MDUsNiArMTc5MiwyOCBAQAogCQkJ
dGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkwRjQ2ODA5QzE0QkE3RjRE
MDBCRkUyNzIgLyogbGxpbnQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNw
cCAqLywKKwkJCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5o
ICovLAorCQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8s
CisJCQkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8sCisJCQkJ
MEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8sCisJCQkJMEY0Njgw
Q0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovLAorCQkJCTBGNDY4MEM1MTRCQkIx
NjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovLAorCQkJCTBGNDY4MEM2MTRCQkIxNjkwMEJG
RTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLywKKwkJCQkwRjQ2ODBDNzE0QkJCMTY5
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8sCisJCQkJMEY0NjgwQzgxNEJC
QjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLywKKwkJCQkwRjQ2ODA5RDE0
QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLywKKwkJCQkwRjQ2ODA5RTE0
QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8sCisJCQkJMEY0NjgwOUYxNEJB
N0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8sCisJCQkJMEY0NjgwQTAxNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovLAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJG
RTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBs
bGludDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3
MjYwMDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCkBAIC0xNzM3LDYgKzE4NDYsOCBAQAogCQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkg
Lyogaml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkw
RjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJ
CQkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywK
IAkJCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJ
CQkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkw
RkQ4MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTIx
NjYsNiArMjI3Nyw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3OTE0
QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovLAorCQkJCTBGMjFD
MjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8sCiAJCQkJMEYxNUYx
NUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovLAogCQkJCUJDRjYwNTEx
MEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4
MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLApAQCAtMjUyNSw2ICsyNjM4LDggQEAKIAkJOTY5QTA3
OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNv
ZGVDb252ZW50aW9ucy5oICovLAorCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTElu
dENhbGxMaW5rSW5mby5oICovLAogCQkJCTBGOTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxs
TGlua1N0YXR1cy5jcHAgKi8sCiAJCQkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxM
aW5rU3RhdHVzLmggKi8sCiAJCQkJMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRT
dGF0dXMuY3BwICovLApAQCAtMzA3Niw3ICszMTkxLDE2IEBACiAJCQkJODY3MDRCOEExMkRCQTMz
NzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI0MzEy
REI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRF
eGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIg
LyogTExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENCMTRCQkIxNzIwMEJG
RTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4
MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50
RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0
RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTcxNEJDRjUwNzAw
ODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBOTE0QkNGNTYy
MDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRC
Q0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKQEAg
LTMwODUsNyArMzIwOSwxMSBAQAogCQkJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRo
b2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4
NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkx
NEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlu
a0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBK
SVREcml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAv
KiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3RDE0QkU3MjdB
MDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGN0IyOTRBMTRDM0NEMjkwMDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBh
YmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRDMTRDM0NENDMwMDdDM0RCMSAv
KiBERkdCeXRlQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMDMsNiArMzIzMSwyNCBA
QAogLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
TmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpT
Q0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsK
KwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zm
c2V0c0V4dHJhY3RvciIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODA4QjE0QkE3
RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLywKKwkJCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIg
LyogRnJhbWV3b3JrcyAqLywKKwkJCQkwRjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZp
bGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVz
ID0gKAorCQkJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJKTsKKwkJCW5hbWUgPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9k
dWN0TmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2Ug
PSAwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICov
OworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsK
IAkJMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8gPSB7CiAJCQlpc2EgPSBQ
QlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQxMjExMzkwQTQ4
Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFy
Z2V0ICJtaW5pZG9tIiAqLzsKQEAgLTMyMjksMTEgKzMzNzUsMjkgQEAKIAkJCQkxNEJENTlCRTBB
M0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk5MzJGNUJEQTA4MjJBMUM3MDA3MzY5
NzUgLyoganNjICovLAogCQkJCTY1MTEyMkY3MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhw
ICovLAorCQkJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRy
YWN0b3IgKi8sCisJCQkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMg
Ki8sCiAJCQkpOwogCQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODBBQTE0QkE3RkQ5
MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJY
U2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
KwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoU1JDUk9PVCkv
bGxpbnQvTG93TGV2ZWxBc3NlbWJsZXIuYXNtIiwKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRl
IERlcml2ZWQgU291cmNlcyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9E
VUNUU19ESVIpL0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmgiLAorCQkJKTsKKwkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0g
L2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19E
SVJ9L0xMSW50T2Zmc2V0cy9cIlxuXG4vdXNyL2Jpbi9lbnYgcnVieSBcIiR7U1JDUk9PVH0vb2Zm
bGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiXCIgPCBcIiR7U1JDUk9PVH0vbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc21cIiA+IFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xM
SW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmhcIlxuIjsKKwkJfTsKIAkJMzcxM0YwMTQx
NDI5MDUyNDAwMzYzODdGIC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1DIENs
YXNzIE5hbWVzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTMzNzQsNiArMzUzOCwxNCBAQAogLyog
RW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNv
dXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8q
IFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkwRjQ2ODBBNzE0QkE3
RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9Owog
CQkxNDEyMTExRDBBNDg3OTNDMDA0ODAyNTUgLyogU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBC
WFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAg
LTM2MzIsNyArMzgwNCwxNCBAQAogCQkJCTg2NzA0Qjg2MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJy
SklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg5MTJEQkEzMzcwMEE5RkU3QiAvKiBZ
YXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI0MjEyREI4QTgxMDBBOUZF
N0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTQx
NEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbElu
dGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3
MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDQxNEJCRDI0OTAw
QkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYw
QjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjQxNEJDRjg2MDAwODg1QjRGIC8qIE1ldGhv
ZENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNjlFODZDMzE0QzZFNTUxMDAy
QzJDNjIgLyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM2NTQsNiArMzgz
MywxNiBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTBGNDY4MEIyMTRCQTgxMTUwMEJG
RTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVw
ZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBP
ZmZzZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUy
NzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVu
ZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMzE0QkE4MjE0MDBC
RkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQkxNDEyMTRCRjBBNDkx
OTBFMDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRh
cmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyog
bWluaWRvbSAqLzsKQEAgLTM2ODcsNiArMzg3NiwxNDggQEAKIC8qIEVuZCBQQlhUYXJnZXREZXBl
bmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlv
biAqLworCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlT
X1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82
NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0NDX0NfTEFOR1VBR0Vf
U1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0Nf
RU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVM
ID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9
MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZTUJPTFNfUFJJVkFU
RV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2
bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsK
KwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dB
Uk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxF
ID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAor
CQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJ
CQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1F
TlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gWUVTOworCQkJCVBST0RV
Q1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlV
U0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xM
SW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gRGVi
dWc7CisJCX07CisJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RB
TkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19J
TkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFH
RV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVT
OworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsK
KwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJO
X0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRV
Uk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJ
IkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJ
CQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMkKEhFQURFUl9TRUFSQ0hfUEFU
SFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJ
UFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4Owor
CQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUg
PSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5n
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQo
QVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJ
CQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0Nf
Q19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJ
T05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNs
YW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJ
CUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9B
Qk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZ
RVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJ
CWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQki
JChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9U
QVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJ
U0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3Ug
JChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
IjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2ODA5OTE0QkE3RTVF
MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMg
PSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlf
UEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJm
LXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlH
Q0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5h
cHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklU
X0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMg
PSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dB
Uk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9
Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikv
TExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJ
CQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAi
JChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJf
U0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMg
JChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJ
CX07CisJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNU
X05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsK
KwkJfTsKKwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJP
RFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUmVs
ZWFzZTsKKwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9
IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5h
bWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9k
dWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJ
CQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTNBMEE0ODc5ODQwMDQ4
MDI1NSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKQEAgLTM5MjgsNiArNDI1OSwyOCBAQAogLyogRW5kIFhDQnVpbGRD
b25maWd1cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBz
ZWN0aW9uICovCisJCTBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAq
LyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRp
b25zID0gKAorCQkJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLywKKwkJCQkw
RjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODA5ODE0QkE3
RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3
MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNp
YmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07
CisJCTBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3Qg
Zm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi8gPSB7CisJCQlpc2EgPSBY
Q0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2
ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwQUUxNEJBN0ZEOTAw
QkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFBy
b2ZpbGluZyAqLywKKwkJCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAq
LywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZh
dWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEzOTBBNDg3
OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJn
ZXQgIm1pbmlkb20iICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1
aWxkQ29uZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA1NTg0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMx
LDcgQEAKICNkZWZpbmUgRFVNUF9MSU5LX1NUQVRJU1RJQ1MgMAogI2RlZmluZSBEVU1QX0NPREUg
MAogCi0jaW5jbHVkZSA8TWFjcm9Bc3NlbWJsZXIuaD4KKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29u
dmVudGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCeXRl
Y29kZUNvbnZlbnRpb25zX2gKKyNkZWZpbmUgQnl0ZWNvZGVDb252ZW50aW9uc19oCisKKy8vIFJl
Z2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50
IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKKy8vICAgICAgMHg4MDAwMDAwMC0w
eEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFy
ZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCisvLyAgICAg
IDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJh
bWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rp
b24ncyBjYWxsZnJhbWUuCisvLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUg
aW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBw
b29sIG9uIHRoZSBDb2RlQmxvY2suCitzdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4ID0gMHg0MDAwMDAwMDsKKworI2VuZGlmIC8vIEJ5dGVjb2RlQ29udmVudGlvbnNf
aAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a1N0YXR1cy5jcHAJKHJldmlzaW9uIDEwNTU4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE1ICsyNywz
NiBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKKyNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAor
Q2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2Nr
KiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworI2lmIEVOQUJMRShM
TElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKyAgICBMTEludENhbGxMaW5rSW5m
byogY2FsbExpbmtJbmZvID0gaW5zdHJ1Y3Rpb25bNF0udS5jYWxsTGlua0luZm87CisgICAgCisg
ICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0
KCksIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsK
KyNlbmRpZgorfQorCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAjaWYg
RU5BQkxFKEpJVCkKLSAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoCi0gICAgICAgIHByb2ZpbGVk
QmxvY2stPmdldENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KS5sYXN0U2VlbkNhbGxlZS5nZXQo
KSwKLSAgICAgICAgcHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRl
eCkpOworICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZDYWxsTGlua0luZm9zKCkpCisg
ICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5k
ZXgpOworICAgIAorICAgIGlmIChwcm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShieXRl
Y29kZUluZGV4KSkKKyAgICAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIHRydWUpOworICAg
IAorICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5m
byhieXRlY29kZUluZGV4KS5sYXN0U2VlbkNhbGxlZS5nZXQoKTsKKyAgICBpZiAoIXRhcmdldCkK
KyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJ
bmRleCk7CisgICAgCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldCwgZmFsc2UpOwog
I2Vsc2UKICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFsc2UpOwogI2VuZGlmCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAko
cmV2aXNpb24gMTA1NTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE1ICs0NywxNyBAQCBwdWJsaWM6CiAg
ICAgCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCk7CiAgICAgCi0gICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0
dXJuICEhbV9jYWxsVGFyZ2V0OyB9CisgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEh
bV9jYWxsVGFyZ2V0IHx8IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKLSAgICBib29sIG9w
ZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2NhbGxUYXJnZXQ7IH0KKyAgICBib29sIG9wZXJh
dG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRh
a2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAK
ICAgICBKU0Z1bmN0aW9uKiBjYWxsVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0
OyB9CiAgICAgCiBwcml2YXRlOgorICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJv
bUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgIAogICAgIEpT
RnVuY3Rpb24qIG1fY2FsbFRhcmdldDsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7CiB9
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJ
KHJldmlzaW9uIDEwNTU4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKICNpbmNsdWRlICJK
U1ZhbHVlLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlJl
cGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNsdWRl
IDxzdGRpby5oPgpAQCAtNTksOCArNjAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIHVzaW5nIG5hbWVz
cGFjZSBERkc7CiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09E
RV9TQU1QTElORykKLQogc3RhdGljIFVTdHJpbmcgZXNjYXBlUXVvdGVzKGNvbnN0IFVTdHJpbmcm
IHN0cikKIHsKICAgICBVU3RyaW5nIHJlc3VsdCA9IHN0cjsKQEAgLTM1OCwxMCArMzU3LDEwIEBA
IHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykgY28KICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGluc3RydWN0aW9ucygpLnNpemUoKTsgaSArPSBvcGNvZGVMZW5ndGhzW2V4
ZWMtPmludGVycHJldGVyKCktPmdldE9wY29kZUlEKGluc3RydWN0aW9ucygpW2ldLnUub3Bjb2Rl
KV0pCiAgICAgICAgICsraW5zdHJ1Y3Rpb25Db3VudDsKIAotICAgIHByaW50ZigiJWx1IG1faW5z
dHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJl
Z2lzdGVyKHMpXG5cbiIsCisgICAgcHJpbnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRl
cyBhdCAlcDsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocyk7ICVkIHZhcmlh
YmxlKHMpXG5cbiIsCiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0
aW9uQ291bnQpLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlv
bnMoKS5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKSwKLSAgICAgICAgdGhpcywgbV9udW1Q
YXJhbWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgICAgIHRoaXMsIG1fbnVtUGFy
YW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMsIG1fbnVtVmFycyk7CiAKICAgICBWZWN0b3I8
SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciBiZWdpbiA9IGluc3RydWN0aW9ucygpLmJlZ2lu
KCk7CiAgICAgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW5zdHJ1
Y3Rpb25zKCkuZW5kKCk7CkBAIC04OTgsNiArODk3LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1w
KEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uIik7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDog
eworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAgICAg
ICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRp
b25fbm9ybWFsIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF9nZW5lcmljOiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVj
LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIpOwogICAgICAgICAgICAgYnJlYWs7
CkBAIC0xMjkxLDggKzEyOTgsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4
ZWMsIGNvCiAgICAgfQogfQogCi0jZW5kaWYgLy8gIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUo
T1BDT0RFX1NBTVBMSU5HKQotCiAjaWYgRFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJQ1MKIHN0YXRp
YyBIYXNoU2V0PENvZGVCbG9jayo+IGxpdmVDb2RlQmxvY2tTZXQ7CiAjZW5kaWYKQEAgLTE0NTks
NiArMTQ2NCw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywKIHsK
ICAgICBzZXROdW1QYXJhbWV0ZXJzKG90aGVyLm51bVBhcmFtZXRlcnMoKSk7CiAgICAgb3B0aW1p
emVBZnRlcldhcm1VcCgpOworICAgIGppdEFmdGVyV2FybVVwKCk7CiAgICAgCiAgICAgaWYgKG90
aGVyLm1fcmFyZURhdGEpIHsKICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwpA
QCAtMTUwNyw2ICsxNTEzLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJs
ZSogbwogICAgIEFTU0VSVChtX3NvdXJjZSk7CiAgICAgCiAgICAgb3B0aW1pemVBZnRlcldhcm1V
cCgpOworICAgIGppdEFmdGVyV2FybVVwKCk7CiAKICNpZiBEVU1QX0NPREVfQkxPQ0tfU1RBVElT
VElDUwogICAgIGxpdmVDb2RlQmxvY2tTZXQuYWRkKHRoaXMpOwpAQCAtMTUyNCw3ICsxNTMxLDEx
IEBAIENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJP
RklMRSkKICAgICBkdW1wVmFsdWVQcm9maWxlcygpOwogI2VuZGlmCi0gICAgCisKKyNpZiBFTkFC
TEUoTExJTlQpICAgIAorICAgIHdoaWxlIChtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpICE9
IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQorICAgICAgICBtX2luY29taW5nTExJbnRDYWxs
cy5iZWdpbigpLT5yZW1vdmUoKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAjaWYgRU5BQkxF
KEpJVCkKICAgICAvLyBXZSBtYXkgYmUgZGVzdHJveWVkIGJlZm9yZSBhbnkgQ29kZUJsb2NrcyB0
aGF0IHJlZmVyIHRvIHVzIGFyZSBkZXN0cm95ZWQuCiAgICAgLy8gQ29uc2lkZXIgdGhhdCB0d28g
Q29kZUJsb2NrcyBiZWNvbWUgdW5yZWFjaGFibGUgYXQgdGhlIHNhbWUgdGltZS4gVGhlcmUKQEAg
LTE3MzYsOCArMTc0Nyw1NyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFs
bHkoCiAjZWxzZQogICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VVbmxpbmtpbmcgPSBmYWxz
ZTsKICNlbmRpZgotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAgICAKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9nbG9iYWxEYXRhLT5p
bnRlcnByZXRlcjsKKyAgICBpZiAoIWludGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAg
Zm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3Ry
dWN0aW9uID0gJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1d
OworICAgICAgICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1
Y3Rpb25bMF0udS5vcGNvZGUpKSB7CisgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAg
ICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICAgICAgICAgIGlmICghY3VySW5z
dHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25b
NF0udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAg
ICAgICAgICAgIGN1ckluc3RydWN0aW9uWzVdLnUub3BlcmFuZCA9IDA7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAg
ICAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVj
dHVyZS5nZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5z
dHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhl
YXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlv
bls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9u
WzZdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25b
N10udS5zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0
aW9uWzBdLnUub3Bjb2RlID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUo
KSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJ
bnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNb
aV1dOworICAgICAgICAgICAgQVNTRVJUKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0
cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3BfcmVzb2x2ZV9nbG9iYWwKKyAgICAgICAgICAgICAg
ICAgICB8fCBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNv
ZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpOworICAgICAgICAgICAgaWYgKCFjdXJJ
bnN0cnVjdGlvblszXS51LnN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlv
blszXS51LnN0cnVjdHVyZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICBjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAg
ICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kID0gMDsKKyAgICAgICAgfQorICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgIGlmIChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpICYm
ICFIZWFwOjppc01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5jYWxsZWUuZ2V0KCkpKSB7
CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAg
ICAgIHByaW50ZigiQ2xlYXJpbmcgTExJbnQgY2FsbCBmcm9tICVwLlxuIiwgdGhpcyk7CisgICAg
ICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoISFtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNh
bGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5D
YWxsZWUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxh
c3RTZWVuQ2FsbGVlLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYgLy8gRU5BQkxF
KExMSU5UKQorCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLy8gQ2hlY2sgaWYgd2UncmUgbm90
IGxpdmUuIElmIHdlIGFyZSwgdGhlbiBqZXR0aXNvbi4KICAgICBpZiAoIShzaG91bGRJbW1lZGlh
dGVseUFzc3VtZUxpdmVuZXNzRHVyaW5nU2NhbigpIHx8IG1fZGZnRGF0YS0+bGl2ZW5lc3NIYXNC
ZWVuUHJvdmVkKSkgewpAQCAtMTg1OCwxMCArMTkxOCwxMiBAQCB2b2lkIENvZGVCbG9jazo6c3Ry
b25nbHlWaXNpdFN0cm9uZ1JlZmVyCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0
aW9uRGVjbHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9u
RGVjbHNbaV0pOwogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKLSAgICBmb3IgKHNpemVfdCBzaXpl
ID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsg
KytpKQotICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21f
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKLSAgICBmb3IgKHNpemVfdCBzaXplID0g
bV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kp
Ci0gICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+aW50ZXJw
cmV0ZXItPmVuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAg
ICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2ds
b2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAg
ICAgICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUo
REZHX0pJVCkKQEAgLTIwNzAsNiArMjEzMiwxMiBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2Fs
bHMoKQogewogICAgIGlmICghIW1fYWx0ZXJuYXRpdmUpCiAgICAgICAgIG1fYWx0ZXJuYXRpdmUt
PnVubGlua0NhbGxzKCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1f
bGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkpCisgICAgICAgICAgICBtX2xsaW50Q2Fs
bExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoIShtX2NhbGxM
aW5rSW5mb3Muc2l6ZSgpIHx8IG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCkpKQogICAgICAg
ICByZXR1cm47CiAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQpAQCAtMjA4NCwx
MCArMjE1MiwzNyBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogCiB2b2lkIENvZGVC
bG9jazo6dW5saW5rSW5jb21pbmdDYWxscygpCiB7CisgICAgd2hpbGUgKG1faW5jb21pbmdMTElu
dENhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisgICAgICAgIG1f
aW5jb21pbmdMTEludENhbGxzLmJlZ2luKCktPnVubGluaygpOworICAgIGlmIChtX2luY29taW5n
Q2FsbHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBh
dGNoQnVmZmVyKHRoaXMpOwogICAgIHdoaWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAhPSBt
X2luY29taW5nQ2FsbHMuZW5kKCkpCiAgICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigpLT51
bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CiB9CisKK3Vuc2lnbmVkIENvZGVC
bG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChyZXR1cm5BZGRyZXNz
LnZhbHVlKCkgPj0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfYmVnaW4pCisgICAgICAgICYm
IHJldHVybkFkZHJlc3MudmFsdWUoKSA8PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQp
KSB7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSk7CisgICAgICAgIEFTU0VSVChl
eGVjLT5jb2RlQmxvY2soKSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFz
ZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOworICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24gPSBleGVjLT5jdXJyZW50VlBDKCk7CisgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbik7Cisg
ICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldChpbnN0cnVjdGlvbik7CisgICAgfQorI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisjZW5kaWYKKyAgICBpZiAoIW1fcmFyZURhdGEpCisg
ICAgICAgIHJldHVybiAxOworICAgIFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9m
ZnNldD4mIGNhbGxJbmRpY2VzID0gbV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7
CisgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCisgICAgICAgIHJldHVybiAxOworICAgIHJl
dHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2ln
bmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNl
cy5zaXplKCksIGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+
Ynl0ZWNvZGVPZmZzZXQ7Cit9CiAjZW5kaWYKIAogdm9pZCBDb2RlQmxvY2s6OmNsZWFyRXZhbENh
Y2hlKCkKQEAgLTIxODMsMjQgKzIyNzgsNDUgQEAgYm9vbCBGdW5jdGlvbkNvZGVCbG9jazo6Y2Fu
Q29tcGlsZVdpdGhERgogCiB2b2lkIFByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAg
ICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NF
UlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0
aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxl
Kj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEo
KSk7CiB9CiAKIHZvaWQgRXZhbENvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChn
ZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2Rl
Ojppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVw
bGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1
dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9p
ZCBGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBl
KCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGlt
aXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQo
KSk7CiAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxl
KCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGVGb3IoKmdsb2JhbERhdGEoKSwgbV9pc0NvbnN0cnVj
dG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKIH0KKwordm9pZCBQcm9ncmFt
Q29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7Cisg
ICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAg
ICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZ2xvYmFs
RGF0YSk7Cit9CisKK3ZvaWQgRXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkp
LT5qaXRDb21waWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpq
aXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdl
dEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhp
cyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVj
dXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlRm9yKGdsb2JhbERhdGEsIG1f
aXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7Cit9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEwNTU4NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NiArMzAsNyBAQAogI2lmbmRlZiBDb2RlQmxvY2tfaAogI2RlZmluZSBDb2RlQmxvY2tfaAogCisj
aW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5o
IgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVk
ZSAiQ29kZU9yaWdpbi5oIgpAQCAtNTAsNiArNTEsNyBAQAogI2luY2x1ZGUgIkpJVFdyaXRlQmFy
cmllci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSnVtcFRhYmxl
LmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJMaW5lSW5mby5o
IgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUHJlZGljdGlvblRyYWNrZXIuaCIKQEAg
LTY1LDE2ICs2NywxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlICJTdHJ1
Y3R1cmVTdHViSW5mby5oIgogCi0vLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUg
b3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5n
ZXM6Ci0vLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9t
IHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2Vl
IFJlZ2lzdGVyRmlsZS5oLgotLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRz
IGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRl
bXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgotLy8gICAgICAweDQwMDAw
MDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkg
ZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgotc3RhdGljIGNv
bnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7Ci0KIG5hbWVz
cGFjZSBKU0MgewogCi0gICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIERGR0NvZGVCbG9j
a3M7CisgICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIAogICAgIGlubGluZSBpbnQgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGludCBhcmd1
bWVudHNSZWdpc3RlcikgeyByZXR1cm4gYXJndW1lbnRzUmVnaXN0ZXIgLSAxOyB9CiAKQEAgLTgz
LDYgKzgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGlj
IFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIsIHB1YmxpYyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyIHsK
ICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBK
SVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVi
bGljOgogICAgICAgICBlbnVtIENvcHlQYXJzZWRCbG9ja1RhZyB7IENvcHlQYXJzZWRCbG9jayB9
OwogICAgIHByb3RlY3RlZDoKQEAgLTEyMyw3ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAgICAgICAgICAg
cmVzdWx0ID0gcmVzdWx0LT5hbHRlcm5hdGl2ZSgpOwogICAgICAgICAgICAgQVNTRVJUKHJlc3Vs
dCk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2Rl
KHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
ICAgICB9CiAjZW5kaWYKQEAgLTEzNCwxMSArMTMyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAotI2lmICFkZWZpbmVkKE5ERUJV
RykgfHwgRU5BQkxFX09QQ09ERV9TQU1QTElORwogICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRl
KikgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmVzKGNvbnN0IEluc3RydWN0aW9u
KikgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmUoY29uc3QgY2hhciogbmFtZSwg
Y29uc3QgSW5zdHJ1Y3Rpb24qLCBpbnQgb3BlcmFuZCkgY29uc3Q7Ci0jZW5kaWYKIAogICAgICAg
ICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAK
QEAgLTE5NCwxNSArMTkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4g
KihiaW5hcnlTZWFyY2g8TWV0aG9kQ2FsbExpbmtJbmZvLCB1bnNpZ25lZCwgZ2V0TWV0aG9kQ2Fs
bExpbmtJbmZvQnl0ZWNvZGVJbmRleD4obV9tZXRob2RDYWxsTGlua0luZm9zLmJlZ2luKCksIG1f
bWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCksIGJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAg
ICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5J
bmRleFZlY3RvcjsKLSAgICAgICAgICAgIGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxs
UmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZz
ZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgp
Lm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKLSAgICAg
ICAgfQorICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChFeGVjU3RhdGUqLCBSZXR1cm5B
ZGRyZXNzUHRyKTsKIAogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldEZvckNhbGxBdElu
ZGV4KHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7CkBAIC0yMjMsMTEgKzIxMSwxNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2go
aW5jb21pbmcpOwogICAgICAgICB9CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICB2b2lkIGxp
bmtJbmNvbWluZ0NhbGwoTExJbnRDYWxsTGlua0luZm8qIGluY29taW5nKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5wdXNoKGluY29taW5nKTsKKyAgICAgICAg
fQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKICAgICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5r
SW5jb21pbmdDYWxscygpOwotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAotI2lmIEVO
QUJMRShERkdfSklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAg
ICAgIHZvaWQgc2V0SklUQ29kZU1hcChQYXNzT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBqaXRD
b2RlTWFwKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2ppdENvZGVNYXAgPSBqaXRDb2RlTWFw
OwpAQCAtMjM2LDcgKzIzMCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAg
ICAgICByZXR1cm4gbV9qaXRDb2RlTWFwLmdldCgpOwogICAgICAgICB9CisjZW5kaWYKICAgICAg
ICAgCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHZvaWQgY3JlYXRlREZHRGF0YUlmTmVj
ZXNzYXJ5KCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCEhbV9kZmdEYXRhKQpAQCAtMzM1
LDEyICszMzEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYg
RU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChJbnN0
cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJl
dHVybkFkZHJlc3MgPj0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSAmJiByZXR1cm5BZGRyZXNzIDwg
aW5zdHJ1Y3Rpb25zKCkuZW5kKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PElu
c3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAg
ICAgICB9Ci0jZW5kaWYKIAogICAgICAgICB2b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlv
bihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5j
dGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgICAgICBib29sIGlzTnVtZXJp
Y0NvbXBhcmVGdW5jdGlvbigpIHsgcmV0dXJuIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9
CkBAIC0zNTYsMTUgKzM1MSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgICAg
ICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCkKICAgICAgICAgewor
I2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKSAmJiAhRU5BQkxFKExMSU5UKQorICAgICAgICAg
ICAgaWYgKEJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAoISFhbHRlcm5hdGl2ZSgpKQogICAgICAg
ICAgICAgICAgIGRpc2NhcmRCeXRlY29kZSgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgICAgIGRpc2NhcmRCeXRlY29kZUxhdGVyKCk7CisjZW5kaWYKICAgICAgICAgfQogICAgICAg
ICAKLSNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGJvb2wgdXNlc09wY29kZShPcGNvZGVJRCk7Ci0j
ZW5kaWYKIAogICAgICAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50KCkgeyByZXR1cm4gbV9p
bnN0cnVjdGlvbkNvdW50OyB9CiAgICAgICAgIHZvaWQgc2V0SW5zdHJ1Y3Rpb25Db3VudCh1bnNp
Z25lZCBpbnN0cnVjdGlvbkNvdW50KSB7IG1faW5zdHJ1Y3Rpb25Db3VudCA9IGluc3RydWN0aW9u
Q291bnQ7IH0KQEAgLTM4NywxNyArMzg0LDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBF
eGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgeyByZXR1cm4gZ2V0SklU
Q29kZSgpLmdldEV4ZWN1dGFibGVNZW1vcnkoKTsgfQogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0
KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKikgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKSA9IDA7CisgICAgICAgIGJvb2wgaml0Q29tcGls
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChn
ZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykgeworICAgICAgICAgICAg
ICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGppdENv
bXBpbGVJbXBsKGdsb2JhbERhdGEpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgPSAwOwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKSA9IDA7CiAgICAgICAgIGJvb2wgaGFz
T3B0aW1pemVkUmVwbGFjZW1lbnQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0
SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChK
SVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIGJvb2wg
cmVzdWx0ID0gcmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID4gZ2V0SklUVHlwZSgpOwogI2lm
ICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAg
ICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQp
OwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50
KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAg
ICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlcGxhY2VtZW50KCktPmdldEpJVFR5
cGUoKSkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpID09IHRoaXMpOwog
ICAgICAgICAgICAgfQogI2VuZGlmCkBAIC00NTYsMTggKzQ2MiwyMSBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICB2b2lkIGNsZWFyRXZhbENhY2hlKCk7CiAKLSNpZiBFTkFCTEUoSU5URVJQ
UkVURVIpCiAgICAgICAgIHZvaWQgYWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbih1bnNpZ25l
ZCBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
IW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9wcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CisgICAg
ICAgICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbih1bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsK
LSAgICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAg
ICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbik7CisgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5k
KGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBoYXNH
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBh
ZGRMTEludENhbGxMaW5rSW5mbygpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRDYWxs
TGlua0luZm9zLmFwcGVuZChMTEludENhbGxMaW5rSW5mbygpKTsKKyAgICAgICAgICAgIHJldHVy
biAmbV9sbGludENhbGxMaW5rSW5mb3MubGFzdCgpOworICAgICAgICB9CiAjZW5kaWYKICNpZiBF
TkFCTEUoSklUKQogICAgICAgICB2b2lkIHNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKHNp
emVfdCBzaXplKSB7IG1fc3RydWN0dXJlU3R1YkluZm9zLmdyb3coc2l6ZSk7IH0KQEAgLTQ3Niw4
ICs0ODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29s
dmVJbmZvKHVuc2lnbmVkIGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAg
ICAgICAgICAgaWYgKG1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAg
bV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29s
dmVJbnN0cnVjdGlvbikpOworICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5k
KEdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOwogICAgICAgICB9
CiAgICAgICAgIEdsb2JhbFJlc29sdmVJbmZvJiBnbG9iYWxSZXNvbHZlSW5mbyhpbnQgaW5kZXgp
IHsgcmV0dXJuIG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2luZGV4XTsgfQogICAgICAgICBib29sIGhh
c0dsb2JhbFJlc29sdmVJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCk7CkBAIC01MjgsNiArNTM2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJv
ZmlsZSA9PSByZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQor
ICAgICAgICBQcmVkaWN0ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9m
ZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2
YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPmNvbXB1dGVVcGRh
dGVkUHJlZGljdGlvbigpOworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCB0
b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpCiAgICAgICAgIHsKQEAgLTU1NCwxMiArNTY2LDE2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VT
bG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgh
bnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29k
ZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiB2
YWx1ZSA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0
aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25z
OjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgYm9vbCBjb3VsZFRha2VTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJl
Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsK
ICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZU1p
bmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50
cnlDb3VudCA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAg
fQpAQCAtNTc4LDEyICs1OTQsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAg
ICBib29sIGxpa2VseVRvVGFrZVNwZWNpYWxGYXN0Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lh
bEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gc3BlY2lhbEZh
c3RDYXNlQ291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQg
JiYgc3RhdGljX2Nhc3Q8ZG91YmxlPihzcGVjaWFsRmFzdENhc2VDb3VudCkgLyBtX2V4ZWN1dGlv
bkVudHJ5Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dD
YXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1i
ZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICB1bnNpZ25lZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNp
Z25lZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRl
Y29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2ln
bmVkIHZhbHVlID0gc2xvd0Nhc2VDb3VudCAtIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNTky
LDYgKzYxMiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtl
bHlUb1Rha2VBbnlTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVD
YXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwog
ICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENh
c2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAg
ICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgKyBzcGVjaWFsRmFzdENh
c2VDb3VudDsKQEAgLTY3Nyw3ICs2OTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAg
ICAgICAgIGJvb2wgYWRkRnJlcXVlbnRFeGl0U2l0ZShjb25zdCBERkc6OkZyZXF1ZW50RXhpdFNp
dGUmIHNpdGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFz
ZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIG1fZXhpdFByb2Zp
bGUuYWRkKHNpdGUpOwogICAgICAgICB9CiAKQEAgLTc4Miw2ICs4MDQsMjkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgY29weVBvc3RQYXJzZURhdGFGcm9tKENvZGVCbG9jayogYWx0
ZXJuYXRpdmUpOwogICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbUFsdGVybmF0aXZl
KCk7CiAgICAgICAgIAorICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4g
SklUdGluZyBraWNrcyBpbiwgaW4gYSBtaXhlZCBtb2RlCisgICAgICAgIC8vIGV4ZWN1dGlvbiB3
b3JsZC4KKyAgICAgICAgCisgICAgICAgIHZvaWQgZG9udEpJVEFueXRpbWVTb29uKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICB2b2lkIGppdEFmdGVyV2FybVVwKCkKKyAgICAgICAgeworICAgICAgICAgICAg
bV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
SklUQWZ0ZXJXYXJtVXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0U29v
bigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlv
bnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGludDMyX3QgbGxpbnRFeGVjdXRlQ291bnRlcigpIGNvbnN0CisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIH0KKyAg
ICAgICAgCiAgICAgICAgIC8vIEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiB0aWVyZWQg
Y29tcGlsYXRpb24ga2lja3MgaW4uIFRoaXMKICAgICAgICAgLy8gY29udHJvbHMgYm90aCB3aGVu
IHRoZSBvcHRpbWl6aW5nIGNvbXBpbGVyIGlzIGludm9rZWQgYW5kIHdoZW4gT1NSCiAgICAgICAg
IC8vIGVudHJ5IGhhcHBlbnMuIFR3byB0cmlnZ2VycyBleGlzdDogdGhlIGxvb3AgdHJpZ2dlciBh
bmQgdGhlIHJldHVybgpAQCAtOTc0LDYgKzEwMTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgYm9vbCBtX3Nob3VsZERpc2NhcmRCeXRlY29kZTsKIAogICAgIHByb3RlY3RlZDoKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCk7CiAgICAgICAgIApAQCAt
OTg2LDcgKzEwMzIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCB0YWxseUZyZXF1
ZW50RXhpdFNpdGVzKCkgeyB9CiAjZW5kaWYKICAgICAgICAgCi0jaWYgIWRlZmluZWQoTkRFQlVH
KSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQogICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRl
KiwgY29uc3QgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImIGJlZ2luLCBWZWN0
b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYpIGNvbnN0OwogCiAgICAgICAgIENTdHJp
bmcgcmVnaXN0ZXJOYW1lKEV4ZWNTdGF0ZSosIGludCByKSBjb25zdDsKQEAgLTk5Niw3ICsxMDQx
LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHJpbnRHZXRCeUlkT3AoRXhlY1N0
YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYs
IGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludENhbGxPcChFeGVjU3Rh
dGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwg
Y29uc3QgY2hhciogb3ApIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50UHV0QnlJZE9wKEV4ZWNT
dGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3Im
LCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7Ci0jZW5kaWYKICAgICAgICAgdm9pZCB2aXNpdFN0cnVj
dHVyZXMoU2xvdFZpc2l0b3ImLCBJbnN0cnVjdGlvbiogdlBDKSBjb25zdDsKICAgICAgICAgCiAj
aWYgRU5BQkxFKERGR19KSVQpCkBAIC0xMDU3LDkgKzExMDEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9zb3VyY2U7CiAgICAgICAgIHVuc2ln
bmVkIG1fc291cmNlT2Zmc2V0OwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBW
ZWN0b3I8dW5zaWduZWQ+IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnM7CiAgICAgICAgIFZl
Y3Rvcjx1bnNpZ25lZD4gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zOworI2lmIEVOQUJMRShM
TElOVCkKKyAgICAgICAgU2VnbWVudGVkVmVjdG9yPExMSW50Q2FsbExpbmtJbmZvLCA4PiBtX2xs
aW50Q2FsbExpbmtJbmZvczsKKyAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PExMSW50Q2FsbExp
bmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4gPiBtX2luY29t
aW5nTExJbnRDYWxsczsKICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFZlY3RvcjxT
dHJ1Y3R1cmVTdHViSW5mbz4gbV9zdHJ1Y3R1cmVTdHViSW5mb3M7CkBAIC0xMDcwLDkgKzExMTYs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2pp
dENvZGVXaXRoQXJpdHlDaGVjazsKICAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxMaW5r
SW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdDYWxs
czsKICNlbmRpZgotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8fCBF
TkFCTEUoTExJTlQpCiAgICAgICAgIE93blB0cjxDb21wYWN0SklUQ29kZU1hcD4gbV9qaXRDb2Rl
TWFwOwotICAgICAgICAKKyNlbmRpZgorI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBzdHJ1
Y3QgV2Vha1JlZmVyZW5jZVRyYW5zaXRpb24gewogICAgICAgICAgICAgV2Vha1JlZmVyZW5jZVRy
YW5zaXRpb24oKSB7IH0KICAgICAgICAgICAgIApAQCAtMTEzNSwxMiArMTE4MiwxNCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBPd25QdHI8Q29kZUJsb2NrPiBtX2FsdGVybmF0aXZlOwog
ICAgICAgICAKKyAgICAgICAgaW50MzJfdCBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAg
IAogICAgICAgICBpbnQzMl90IG1faml0RXhlY3V0ZUNvdW50ZXI7CiAgICAgICAgIHVpbnQzMl90
IG1fc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxh
dGl2ZUZhaWxDb3VudGVyOwogICAgICAgICB1aW50OF90IG1fb3B0aW1pemF0aW9uRGVsYXlDb3Vu
dGVyOwogICAgICAgICB1aW50OF90IG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXI7Ci0KKyAg
ICAgICAgCiAgICAgICAgIHN0cnVjdCBSYXJlRGF0YSB7CiAgICAgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgICAgICBwdWJsaWM6CkBAIC0xMjEzLDYgKzEyNjIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNv
bXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1w
bChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50
KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBA
IC0xMjQ3LDYgKzEyOTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVD
aGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVh
bCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21w
aWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC0xMjg0LDYgKzEzMzUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRp
bWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2Jh
bERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZp
c2lvbiAxMDU1ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0
YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE3ICsyNyw0MyBAQAogI2luY2x1ZGUgIkdl
dEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkxvd0xl
dmVsSW50ZXJwcmV0ZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0dldEJ5SWRTdGF0dXMgR2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQoreworI2lmIEVOQUJMRShM
TElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKyAgICAKKyAgICBpZiAoaW5zdHJ1
Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfbWV0aG9kX2NoZWNrKQorICAgICAgICBpbnN0
cnVjdGlvbisrOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51
LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIEdl
dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAg
ICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmds
b2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RG
b3VuZCk7CisgICAgCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoU2ltcGxlRGlyZWN0LCBTdHJ1
Y3R1cmVTZXQoc3RydWN0dXJlKSwgb2Zmc2V0KTsKKyNlbHNlCisgICAgcmV0dXJuIEdldEJ5SWRT
dGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyNlbmRpZgor
fQorCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkK
IHsKICNpZiBFTkFCTEUoSklUKQorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZTdHJ1
Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmls
ZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAgIC8vIEZpcnN0IGNoZWNr
IGlmIGl0IG1ha2VzIGVpdGhlciBjYWxscywgaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIHN1
cGVyIGNhcmVmdWwsIG9yCiAgICAgLy8gaWYgaXQncyBub3Qgc2V0IGF0IGFsbCwgaW4gd2hpY2gg
Y2FzZSB3ZSBwdW50LgogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVk
QmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1YkluZm8uc2Vl
bikKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJl
U2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmls
ZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgIAogICAgIFBvbHltb3JwaGljQWNj
ZXNzU3RydWN0dXJlTGlzdCogbGlzdDsKICAgICBpbnQgbGlzdFNpemU7CkBAIC02OCw3ICs5NCw3
IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICBHZXRCeUlk
U3RhdHVzIHJlc3VsdDsKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICBj
YXNlIGFjY2Vzc191bnNldDoKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1h
dGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVG
cm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAK
ICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZjogewogICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQo
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuaAkocmV2aXNpb24gMTA1NTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsOCBAQCBwdWJsaWM6
CiAgICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCiBw
cml2YXRlOgorICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoQ29kZUJs
b2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYpOworICAgIAogICAgIFN0
YXRlIG1fc3RhdGU7CiAgICAgU3RydWN0dXJlU2V0IG1fc3RydWN0dXJlU2V0OwogICAgIHNpemVf
dCBtX29mZnNldDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVj
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0
cnVjdGlvbi5oCShyZXZpc2lvbiAxMDU1ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogICAg
IGNsYXNzIFN0cnVjdHVyZUNoYWluOworICAgIHN0cnVjdCBMTEludENhbGxMaW5rSW5mbzsKICAg
ICBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE0Niw2ICsxNDcs
MTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlvbiB7
CisgICAgICAgIEluc3RydWN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgdS5qc0NlbGwu
Y2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oT3Bjb2Rl
IG9wY29kZSkKICAgICAgICAgewogI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRF
UikKQEAgLTE4Miw2ICsxODgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBJbnN0cnVj
dGlvbihQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVu
YyA9IGdldHRlckZ1bmM7IH0KICAgICAgICAgCisgICAgICAgIEluc3RydWN0aW9uKExMSW50Q2Fs
bExpbmtJbmZvKiBjYWxsTGlua0luZm8pIHsgdS5jYWxsTGlua0luZm8gPSBjYWxsTGlua0luZm87
IH0KKyAgICAgICAgCiAgICAgICAgIEluc3RydWN0aW9uKFZhbHVlUHJvZmlsZSogcHJvZmlsZSkg
eyB1LnByb2ZpbGUgPSBwcm9maWxlOyB9CiAKICAgICAgICAgdW5pb24gewpAQCAtMTkxLDcgKzE5
OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1
Y3R1cmVDaGFpbj4gc3RydWN0dXJlQ2hhaW47CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNl
PEpTQ2VsbD4ganNDZWxsOwogICAgICAgICAgICAgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMg
Z2V0dGVyRnVuYzsKKyAgICAgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm87
CiAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7CisgICAgICAgICAgICB2b2lkKiBw
b2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxM
aW5rSW5mby5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDYWxsTGlua0luZm9f
aAorI2RlZmluZSBMTEludENhbGxMaW5rSW5mb19oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1NlbnRp
bmVsTGlua2VkTGlzdC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9u
OworCitzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5v
ZGU8TExJbnRDYWxsTGlua0luZm8+IHsKKyAgICBMTEludENhbGxMaW5rSW5mbygpCisgICAgewor
ICAgIH0KKyAgICAKKyAgICB+TExJbnRDYWxsTGlua0luZm8oKQorICAgIHsKKyAgICAgICAgaWYg
KGlzT25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgYm9v
bCBpc0xpbmtlZCgpIHsgcmV0dXJuIGNhbGxlZTsgfQorICAgIAorICAgIHZvaWQgdW5saW5rKCkK
KyAgICB7CisgICAgICAgIGNhbGxlZS5jbGVhcigpOworICAgICAgICBtYWNoaW5lQ29kZVRhcmdl
dCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAg
ICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5j
dGlvbj4gY2FsbGVlOworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBsYXN0U2VlbkNhbGxl
ZTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFjaGluZUNvZGVUYXJnZXQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIExMSW50Q2FsbExpbmtJbmZvX2gKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2Fs
bExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDU1ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw5IEBAIG5hbWVzcGFjZSBKU0MgewogTWV0aG9kQ2FsbExpbmtTdGF0dXMgTWV0aG9k
Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4KQogewogI2lmIEVOQUJMRShKSVQpCisgICAgLy8gTk9URTogVGhp
cyBkb2VzIG5vdCBoYXZlIGFuIExMSW50IGZhbGwtYmFjayBiZWNhdXNlIExMSW50IGRvZXMgbm90
IGRvIGFueSBtZXRob2QKKyAgICAvLyBjYWxsIGxpbmsgY2FjaGluZy4KKyAgICAKICAgICBNZXRo
b2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGwgPSBwcm9maWxlZEJsb2NrLT5nZXRNZXRob2RDYWxs
TGlua0luZm8oYnl0ZWNvZGVJbmRleCk7CiAgICAgCiAgICAgaWYgKCFtZXRob2RDYWxsLnNlZW4g
fHwgIW1ldGhvZENhbGwuY2FjaGVkU3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTA1NTg0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9hcmd1bWVudHNfbGVuZ3Ro
LCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkgXAogICAgICAgICBtYWNybyhv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9yZXBsYWNlLCA5
KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmljLCA5KSBcCiAgICAgICAgIG1h
Y3JvKG9wX2RlbF9ieV9pZCwgNCkgXApAQCAtMjAyLDYgKzIwNCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB0eXBlZGVmIGVudW0geyBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0lEX0VO
VU0pIH0gT3Bjb2RlSUQ7CiAgICAgI3VuZGVmIE9QQ09ERV9JRF9FTlVNCiAKKyAgICBjb25zdCBp
bnQgbWF4T3Bjb2RlTGVuZ3RoID0gOTsKICAgICBjb25zdCBpbnQgbnVtT3Bjb2RlSURzID0gb3Bf
ZW5kICsgMTsKIAogICAgICNkZWZpbmUgT1BDT0RFX0lEX0xFTkdUSFMoaWQsIGxlbmd0aCkgY29u
c3QgaW50IGlkIyNfbGVuZ3RoID0gbGVuZ3RoOwpAQCAtMjE4LDcgKzIyMSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoVkVSSUZZX09QQ09ERV9JRCk7CiAg
ICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQKIAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lO
VEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFC
TEUoTExJTlQpCiAjaWYgQ09NUElMRVIoUlZDVCkgfHwgQ09NUElMRVIoSU5URUwpCiAgICAgdHlw
ZWRlZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTA1NTg0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNywyNCArMjcsNjMgQEAKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKK1B1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21M
TEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElk
ZW50aWZpZXImIGlkZW50KQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0
ZWNvZGVJbmRleDsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25bNF0u
dS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUpCisgICAgICAgIHJldHVybiBQ
dXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAKKyAg
ICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkKSB7Cisg
ICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xv
YmFsRGF0YSgpLCBpZGVudCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAg
ICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RG
b3VuZCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVSZXBs
YWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIEFTU0VSVChp
bnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3QKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpOworICAgIFN0cnVjdHVy
ZUNoYWluKiBjaGFpbiA9IGluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCk7Cisg
ICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7CisgICAgQVNTRVJUKGNoYWluKTsKKyAgICAKKyAgICBz
aXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERh
dGEoKSwgaWRlbnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAK
KyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVUcmFuc2l0aW9uLCBzdHJ1Y3R1cmUsIG5l
d1N0cnVjdHVyZSwgY2hhaW4sIG9mZnNldCk7CisjZWxzZQorICAgIHJldHVybiBQdXRCeUlkU3Rh
dHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyNlbmRpZgorfQorCiBQdXRC
eUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJs
b2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICNpZiBF
TkFCTEUoSklUKQorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZTdHJ1Y3R1cmVTdHVi
SW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywg
Ynl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAgIGlmIChwcm9maWxlZEJsb2NrLT5saWtl
bHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRT
dGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOwogICAgIAogICAgIFN0cnVj
dHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJbmZvKGJ5dGVj
b2RlSW5kZXgpOwogICAgIGlmICghc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmV0dXJuIFB1dEJ5
SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1
cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7
CiAgICAgCiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nl
c3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAs
IDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmls
ZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAgICBjYXNlIGFjY2Vz
c19wdXRfYnlfaWRfcmVwbGFjZTogewogICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3R1YkluZm8u
dS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEw
NTU4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDggQEAgcHVibGljOgogICAgIHNpemVfdCBvZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBzdGF0
aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAg
IFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVy
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMDU1ODQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1p
emVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlNjb3BlQ2hhaW4u
aCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgpAQCAt
MTE2LDI2ICsxMTcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZXhwZWN0ZWQgYnkgdGhlIGNh
bGxlZS4KICovCiAKLSNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgYm9vbCBzX2R1bXBzR2VuZXJhdGVk
Q29kZSA9IGZhbHNlOwotI2VuZGlmCiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnNldER1bXBz
R2VuZXJhdGVkQ29kZShib29sIGR1bXBzR2VuZXJhdGVkQ29kZSkKIHsKLSNpZm5kZWYgTkRFQlVH
CiAgICAgc19kdW1wc0dlbmVyYXRlZENvZGUgPSBkdW1wc0dlbmVyYXRlZENvZGU7Ci0jZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShkdW1wc0dlbmVyYXRlZENvZGUpOwotI2VuZGlmCiB9CiAKIGJvb2wg
Qnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpCiB7Ci0jaWZuZGVmIE5ERUJV
RwogICAgIHJldHVybiBzX2R1bXBzR2VuZXJhdGVkQ29kZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZh
bHNlOwotI2VuZGlmCiB9CiAKIEpTT2JqZWN0KiBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUo
KQpAQCAtMTQ4LDEwICsxMzksOCBAQCBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRlKCkKIAogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVjdGlvbkNvdW50KG1fY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogCi0jaWZuZGVmIE5ERUJVRwogICAgIGlmIChzX2R1
bXBzR2VuZXJhdGVkQ29kZSkKICAgICAgICAgbV9jb2RlQmxvY2stPmR1bXAobV9zY29wZUNoYWlu
LT5nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7Ci0jZW5kaWYKIAogICAgIGlmICgobV9jb2Rl
VHlwZSA9PSBGdW5jdGlvbkNvZGUgJiYgIW1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWlu
KCkgJiYgIW1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpIHx8IG1fY29kZVR5cGUgPT0gRXZh
bENvZGUpCiAgICAgICAgIHN5bWJvbFRhYmxlKCkuY2xlYXIoKTsKQEAgLTEyNzYsOSArMTI2NSw3
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUo
SklUKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAg
bV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5z
aXplKCkpOwotI2VuZGlmCiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9m
aWxlZE9wY29kZShyZXF1aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZlX2dsb2JhbF9keW5h
bWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZHN0LT5pbmRleCgpKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50
KHByb3BlcnR5KSk7CkBAIC0xNDQwLDkgKzE0MjcsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRk
R2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVO
QUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3Ry
dWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBWYWx1ZVByb2ZpbGUq
IHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3Bf
cmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDkwLDkgKzE0NzUsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBt
X2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
ICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xv
YmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAg
ICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5h
bWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFs
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNTExLDkgKzE0
OTQsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TWV0aG9kQ2hlY2soCiAKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJl
Z2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogewotI2lmIEVOQUJM
RShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBWYWx1ZVByb2ZpbGUq
IHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2J5X2lkKTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKQEAgLTE1MzksOSArMTUyMCw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXIKIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVU
RVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE1NTcsOSAr
MTUzNiw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnkKIAogUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKFJlZ2lzdGVySUQq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsK
LSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIAogICAg
IGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFz
ZS0+aW5kZXgoKSk7CkBAIC0xODQ4LDcgKzE4MjUsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRDYWxsKAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRl
eCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9m
ZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2Rl
QmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAg
aWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9m
aWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0xOTUyLDcg
KzE5MzMsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdAogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRz
LnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkK
KyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJ
bmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0
KCkpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2Rl
KG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0yMjEzLDcgKzIxOTgsMTEgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaAogewogICAgIG1fdXNlc0V4Y2VwdGlvbnMgPSB0
cnVlOwogI2lmIEVOQUJMRShKSVQpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIEhhbmRsZXJJbmZv
IGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9u
cygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVM
b2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX2NhdGNoKSkgfTsKKyNl
bHNlCiAgICAgSGFuZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+Ymlu
ZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9i
YXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0aW9uTGFiZWwoKSB9OworI2VuZGlmCiAjZWxzZQogICAg
IEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCks
IGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3Bl
RGVwdGggfTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEwNTU4NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDQs
OSArNjA0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShub2RlSW5k
ZXgpOwogICAgICAgICAKLSAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZUluZGV4KTsKLSAgICAgICAgQVNTRVJUKHByb2ZpbGUpOwotICAgICAgICBQcmVkaWN0
ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsK
KyAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVJbmRleCk7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgICAgICBwcmlu
dGYoIkR5bmFtaWMgW0AldSwgYmMjJXVdIHByZWRpY3Rpb246ICVzXG4iLCBub2RlSW5kZXgsIGJ5
dGVjb2RlSW5kZXgsIHByZWRpY3Rpb25Ub1N0cmluZyhwcmVkaWN0aW9uKSk7CiAjZW5kaWYKQEAg
LTEwMzksNiArMTAzNywxNiBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhi
b29sCiAgICAgaWYgKCFtaWdodElubGluZUZ1bmN0aW9uRm9yKHByb2ZpbGVkQmxvY2ssIGtpbmQp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCisgICAgLy8gSWYgdGhlIGNvZGUgYmxvY2sg
aXMgc3RpbGwgaW50ZXJwcmV0ZWQsIHRoZW4gKGEpIGl0J3Mgbm90IGhvdCBhbmQgKGIpIGl0IGRv
ZXNuJ3QKKyAgICAvLyBoYXZlIHByb2ZpbGluZy4gU28sIHdlIHNob3VsZCBleGl0LgorICAgIGlm
IChwcm9maWxlZEJsb2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVu
aykgeworICAgICAgICBhZGRUb0dyYXBoKEZvcmNlT1NSRXhpdCk7CisgICAgICAgIGFkZFRvR3Jh
cGgoUGhhbnRvbSwgY2FsbFRhcmdldE5vZGVJbmRleCk7CisgICAgICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7ICsraSkKKyAgICAgICAgICAgIGFkZFRv
R3JhcGgoUGhhbnRvbSwgZ2V0KHJlZ2lzdGVyT2Zmc2V0ICsgYXJndW1lbnRUb09wZXJhbmQoaSkp
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAogICAgIC8vIElmIHdlIGdldCBo
ZXJlIHRoZW4gaXQgbG9va3MgbGlrZSB3ZSBzaG91bGQgZGVmaW5pdGVseSBpbmxpbmUgdGhpcyBj
b2RlLiBQcm9jZWVkCiAgICAgLy8gd2l0aCBwYXJzaW5nIHRoZSBjb2RlIHRvIGdldCBieXRlY29k
ZSwgc28gdGhhdCB3ZSBjYW4gdGhlbiBwYXJzZSB0aGUgYnl0ZWNvZGUuCiAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBtX2NvZGVCbG9ja0NhY2hlLmdldChDb2RlQmxvY2tLZXkoZXhlY3V0YWJs
ZSwga2luZCksIGV4cGVjdGVkRnVuY3Rpb24tPnNjb3BlKCkpOwpAQCAtMTgxMCw3ICsxODE4LDkg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkOiB7CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBi
YXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmll
clJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMDU1ODQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTEsNiArMTExLDggQEAgaW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNv
ZGVJRCBvcAogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlf
aWQ6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAg
ICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgog
ICAgIGNhc2Ugb3Bfam1wOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JF
eGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTA1NTg0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw2ICs0OCwxMyBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICB1
aW50MzJfdCBleGl0SW5kZXggPSBnbG9iYWxEYXRhLT5vc3JFeGl0SW5kZXg7CiAgICAgT1NSRXhp
dCYgZXhpdCA9IGNvZGVCbG9jay0+b3NyRXhpdChleGl0SW5kZXgpOwogICAgIAorICAgIC8vIE1h
a2Ugc3VyZSBhbGwgY29kZSBpcyBKSVQgY29tcGlsZWQuCisgICAgZm9yIChDb2RlT3JpZ2luIGNv
ZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7
IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVyKSB7CisgICAg
ICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKQorICAgICAgICAgICAgLT5iYXNlbGluZUNvZGVCbG9j
a0Zvcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+aXNDYWxsID8gQ29kZUZvckNhbGwgOiBD
b2RlRm9yQ29uc3RydWN0KQorICAgICAgICAgICAgLT5qaXRDb21waWxlKCpnbG9iYWxEYXRhKTsK
KyAgICB9CisgICAgCiAgICAgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkgPSAwOwogICAg
IGlmIChleGl0Lm1fcmVjb3ZlcnlJbmRleCkKICAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2Nr
LT5zcGVjdWxhdGlvblJlY292ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4IC0gMSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEw
NTU4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiREZHUmVwYXRjaC5oIgorI2luY2x1ZGUg
Ikhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNs
dWRlICJJbmxpbmVBU00uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNTY0LDQ1ICs1
NjUsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyCiAgICAgcmV0
dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ax
KSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgREZH
X09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNvZGVkSlNWYWx1ZSBERkdf
T1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSop
OwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKLSAgICAibW92ICVy
MTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKFg4NikKLWFz
bSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4i
Ci1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1v
diAtNDAoJWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVzcClcbiIKLSAgICAiam1w
ICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhl
Y1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20gKAotIi50ZXh0IiAi
XG4iCi0iLmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJc
biIKLSIudGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKLSAgICAiY3B5IHIw
LCByNSIgIlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0KLUVuY29kZWRKU1Zh
bHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhl
Y1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFs
RGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQotCiBzdGF0aWMgdm9pZCogaGFuZGxlSG9z
dENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNh
bGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9u
U3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0
aW9uU3BhY2UuaAkocmV2aXNpb24gMTA1NTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvQWxsb2NhdGlvblNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogY2xhc3MgTWFya2VkQmxvY2s7CiAKIGNsYXNzIEFsbG9jYXRpb25TcGFjZSB7CkBAIC02Nyw2
ICs2OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNocmluaygpOwogICAgIAogcHJpdmF0ZToKKyAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAgIGVudW0gQWxs
b2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRpb25DYW5GYWlsLCBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQg
fTsKIAogICAgIHZvaWQqIGFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMDU1ODQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODM3LDcg
KzgzNyw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKICAgICAg
ICAgc2V0SGlnaFdhdGVyTWFyayhtYXgocHJvcG9ydGlvbmFsQnl0ZXMsIG1fbWluQnl0ZXNQZXJD
eWNsZSkpOwogICAgIH0KICAgICBKQVZBU0NSSVBUQ09SRV9HQ19FTkQoKTsKLQorICAgIAogICAg
ICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGVhcC5oCShyZXZpc2lvbiAxMDU1ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTVmFsdWU7CiAgICAgY2xhc3MgTGl2
ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBj
bGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAgICBjbGFzcyBSZWdpc3RlckZpbGU7CiAgICAg
Y2xhc3MgVVN0cmluZzsKQEAgLTEzNiwxMSArMTM3LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYg
cm9vdHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2Nr
OwogICAgICAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGlvblNwYWNlOworICAgICAgICBmcmllbmQg
Y2xhc3MgQ29kZUJsb2NrOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBCdW1wU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKLSAgICAg
ICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKIAogICAgICAgICBzaXplX3Qgd2F0ZXJNYXJrKCk7
CiAgICAgICAgIHNpemVfdCBoaWdoV2F0ZXJNYXJrKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDEwNTU4NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICsz
MDQsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oCiAjZW5kaWYK
IAogICAgIEFTU0VSVChIZWFwOjppc01hcmtlZChjZWxsKSk7Ci0KKyAgICAKICAgICBpZiAoaXNK
U1N0cmluZyhjZWxsKSkgewogICAgICAgICBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihjb25zdF9j
YXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxMDU1ODQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSGVhcDsKIGNsYXNzIEpT
Q2VsbDsKIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsKIGNsYXNzIFNsb3RWaXNpdG9yOwogCkBAIC03Nyw2
ICs3OCw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFt
ZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jaygpOwogCiBwcml2YXRlOgorICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiAgICAgLy8gWyAzMi4uLiAy
NTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZVN0ZXAgPSBNYXJrZWRCbG9jazo6
YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlQ3V0b2ZmID0gMjU2OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAko
cmV2aXNpb24gMTA1NTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Nh
bGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiArMTE5LDkgQEAgbmFtZXNwYWNlIEpT
QyAgewogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgSW5zdHJ1Y3Rpb24qIHJldHVy
blZQQygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10udlBDKCk7
IH0KICNlbmRpZgorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJl
bnRWUEMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPih0aGlzW1Jl
Z2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0udGFnKCkpOyB9CisjZW5kaWYKIAogICAgICAgICB2
b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogY2FsbGVyRnJhbWUpIHsgc3RhdGljX2Nhc3Q8
UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXSA9IGNhbGxlckZyYW1l
OyB9CiAgICAgICAgIHZvaWQgc2V0U2NvcGVDaGFpbihTY29wZUNoYWluTm9kZSogc2NvcGVDaGFp
bikgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6U2NvcGVDaGFp
bl0gPSBzY29wZUNoYWluOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEwNTU4NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNlbmRpZgogCi0jZGVmaW5lIFdU
Rl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAoRU5BQkxFKENPTVBVVEVEX0dPVE9f
SU5URVJQUkVURVIpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKKyNkZWZpbmUgV1RGX1VTRV9HQ0Nf
Q09NUFVURURfR09UT19XT1JLQVJPVU5EICgoRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVU
RVIpIHx8IEVOQUJMRShMTElOVCkpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKIAogdXNpbmcgbmFt
ZXNwYWNlIHN0ZDsKIApAQCAtNTQ3LDE3ICs1NDcsNDEgQEAgSW50ZXJwcmV0ZXI6OkludGVycHJl
dGVyKCkKIHsKIH0KIAotdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShib29sIGNhblVzZUpJ
VCkKK0ludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIoKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9H
T1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAobV9lbmFibGVkKQor
ICAgICAgICBkZWxldGVbXSBtX29wY29kZVRhYmxlOworI2VuZGlmCit9CisKK3ZvaWQgSW50ZXJw
cmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRhdGEqIGxsaW50RGF0YSwgYm9vbCBjYW5Vc2VKSVQp
Cit7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElO
VCkKKyNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisgICAgLy8gSGF2aW5n
IExMSW50IGVuYWJsZWQsIGJ1dCBub3QgYmVpbmcgYWJsZSB0byB1c2UgdGhlIEpJVCwgYW5kIG5v
dCBoYXZpbmcKKyAgICAvLyBhIGNvbXB1dGVkIGdvdG8gaW50ZXJwcmV0ZXIsIGlzIG5vdCBzdXBw
b3J0ZWQuIE5vdCBiZWNhdXNlIHdlIGNhbm5vdAorICAgIC8vIHN1cHBvcnQgaXQsIGJ1dCBiZWNh
dXNlIEkgZGVjaWRlZCB0byBkcmF3IHRoZSBsaW5lIGF0IHRoZSBudW1iZXIgb2YKKyAgICAvLyBw
ZXJtdXRhdGlvbnMgb2YgZXhlY3V0aW9uIGVuZ2luZXMgdGhhdCBJIHdhbnRlZCB0aGlzIGNvZGUg
dG8gZ3Jvay4KKyAgICBBU1NFUlQoY2FuVXNlSklUKTsKKyNlbmRpZgogICAgIGlmIChjYW5Vc2VK
SVQpIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bjb2RlVGFibGUgPSBsbGludERh
dGEtPm9wY29kZU1hcCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlE
czsgKytpKQorICAgICAgICAgICAgbV9vcGNvZGVJRFRhYmxlLmFkZChtX29wY29kZVRhYmxlW2ld
LCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworI2Vsc2UKICAgICAgICAgLy8gSWYgdGhlIEpJ
VCBpcyBwcmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0aW5hdGlvbnMgZm9yIG9wY29kZXMuCiAg
ICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKSB7
CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNf
Y2FzdDx1aW50cHRyX3Q+KGkpKTsKICAgICAgICAgICAgIG1fb3Bjb2RlVGFibGVbaV0gPSBvcGNv
ZGU7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKExMSU5UKQor
ICAgICAgICBtX29wY29kZVRhYmxlID0gbmV3IE9wY29kZVtudW1PcGNvZGVJRHNdOworI2VuZGlm
CiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRpYWxpemVBbmRSZXR1cm4sIDAsIDApOwogICAg
ICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKQEAg
LTY2Nyw5ICs2OTEsMTEgQEAgdm9pZCBJbnRlcnByZXRlcjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJh
bQogCiBib29sIEludGVycHJldGVyOjppc09wY29kZShPcGNvZGUgb3Bjb2RlKQogewotI2lmIEVO
QUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RP
X0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJMRShMTElOVCkKICAgICBp
ZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG9wY29kZSA+PSAwICYmIHN0YXRpY19jYXN0
PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKSA8PSBvcF9lbmQ7Cisj
ZW5kaWYKICAgICByZXR1cm4gb3Bjb2RlICE9IEhhc2hUcmFpdHM8T3Bjb2RlPjo6ZW1wdHlWYWx1
ZSgpCiAgICAgICAgICYmICFIYXNoVHJhaXRzPE9wY29kZT46OmlzRGVsZXRlZFZhbHVlKG9wY29k
ZSkKICAgICAgICAgJiYgbV9vcGNvZGVJRFRhYmxlLmNvbnRhaW5zKG9wY29kZSk7CkBAIC03MjYs
MTEgKzc1MiwxMSBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6dW53aW5kQ2FsCiAg
ICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAxLgogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShJTlRF
UlBSRVRFUikKICAgICBpZiAoY2FsbGVyRnJhbWUtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkK
LSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxG
cmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5i
eXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICAgICBl
bHNlCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChj
YWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZWxpZiBFTkFCTEUoSklUKQotICAgIGJ5dGVj
b2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBD
KCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxs
ZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbHNlCiAgICAgYnl0ZWNvZGVPZmZz
ZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0g
MTsKICNlbmRpZgpAQCAtNTE3MCwxMCArNTE5NiwxMCBAQCB2b2lkIEludGVycHJldGVyOjpyZXRy
aWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJs
b2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKTsKICNpZiBFTkFCTEUo
SklUKQogICAgIGVsc2UKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2Fs
bEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogI2Vsc2UKLSAgICBieXRlY29kZU9mZnNldCA9
IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsK
KyAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2Fs
bGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYKICAgICBsaW5lTnVtYmVy
ID0gY2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQgLSAxKTsKICAgICBzb3VyY2VJRCA9IGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCktPnNvdXJjZUlEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTA1NTg0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJP
cGNvZGUuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKIApAQCAtNDUsNiArNDYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3Mg
SlNGdW5jdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgY2xhc3Mg
UmVnaXN0ZXI7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CkBAIC05MCwxOSArOTIsMjEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJbnRlcnByZXRlciB7CiAgICAgICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBm
cmllbmQgY2xhc3MgQ2FjaGVkQ2FsbDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBwdWJsaWM6CiAgICAg
ICAgIEludGVycHJldGVyKCk7CisgICAgICAgIH5JbnRlcnByZXRlcigpOwogICAgICAgICAKLSAg
ICAgICAgdm9pZCBpbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKTsKKyAgICAgICAgdm9pZCBpbml0
aWFsaXplKExMSW50OjpEYXRhKiwgYm9vbCBjYW5Vc2VKSVQpOwogCiAgICAgICAgIFJlZ2lzdGVy
RmlsZSYgcmVnaXN0ZXJGaWxlKCkgeyByZXR1cm4gbV9yZWdpc3RlckZpbGU7IH0KICAgICAgICAg
CiAgICAgICAgIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19J
TlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5B
QkxFKExMSU5UKQogICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlVGFibGVbaWRdOwogI2Vsc2UK
ICAgICAgICAgICAgIHJldHVybiBpZDsKQEAgLTExMiw3ICsxMTYsMTAgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKE9wY29kZSBvcGNvZGUpCiAgICAgICAg
IHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgICAgICBBU1NF
UlQoaXNPcGNvZGUob3Bjb2RlKSk7CisgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVJRFRhYmxl
LmdldChvcGNvZGUpOworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAg
ICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7CiAgICAgICAgICAgICBpZiAoIW1f
ZW5hYmxlZCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJp
dHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29kZSkpOwpAQCAtMTIyLDYgKzEyOSwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBvcGNvZGU7CiAjZW5kaWYKICAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgYm9vbCBlbmFibGVkKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIG1fZW5hYmxlZDsKKyAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNPcGNvZGUo
T3Bjb2RlKTsKIApAQCAtMTg5LDcgKzIwMSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICBSZWdpc3RlckZpbGUgbV9yZWdpc3RlckZpbGU7CiAgICAgICAgIAotI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgT3Bjb2Rl
KiBtX29wY29kZVRhYmxlOyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5n
CisgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBN
YXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21waWxpbmcKKyNlbGlmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICBPcGNvZGUgbV9vcGNvZGVUYWJsZVtudW1P
cGNvZGVJRHNdOyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCiAgICAg
ICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9w
Y29kZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21waWxpbmcKICNlbmRpZgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkocmV2aXNpb24g
MTA1NTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmls
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBSZWdpc3RlckZpbGUg
ewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWdpc3RlckZpbGUpOwpAQCAtODEsNiAr
ODIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAg
IGJvb2wgZ3Jvd1Nsb3dDYXNlKFJlZ2lzdGVyKik7CiAgICAgICAgIHZvaWQgcmVsZWFzZUV4Y2Vz
c0NhcGFjaXR5KCk7CiAgICAgICAgIHZvaWQgYWRkVG9Db21taXR0ZWRCeXRlQ291bnQobG9uZyk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5W
YWx1ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RD
YWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisKKyNpbmNsdWRlICJDYWxsRnJh
bWUuaCIKKyNpbmNsdWRlICJJbmxpbmVBU00uaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTVmFsdWVJbmxpbmVNZXRob2RzLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExf
UkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7CitleHRlcm4gIkMi
IEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxs
UmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOworCisjaWYgQ1BVKFg4Nl82NCkK
K2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAi
XG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAg
Im1vdiAtNDAoJXIxMyksICVyMTNcbiIKKyAgICAibW92ICVyMTMsICVyZGlcbiIKKyAgICAiam1w
ICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhl
Y1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKFg4NikKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9M
X1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIK
KyAgICAibW92ICVlZGksIDQoJWVzcClcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxP
Q0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2Vs
aWYgQ1BVKEFSTV9USFVNQjIpCithc20gKAorIi50ZXh0IiAiXG4iCisiLmFsaWduIDIiICJcbiIK
KyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJ
REVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKKyIudGh1bWIiICJcbiIKKyIu
dGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxu
IgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJs
ZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKKyAgICAiY3B5IHIwLCByNSIgIlxuIgorICAgICJiICIg
U1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKSAiXG4iCispOworI2VuZGlmCisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9D
QUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3Rh
dGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+
Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5W
YWx1ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2Fs
bFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBIb3N0Q2FsbFJldHVy
blZhbHVlX2gKKyNkZWZpbmUgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKKyNpbmNsdWRlICJKU1Zh
bHVlLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisKKyNpZiBDQUxMSU5HX0NPTlZFTlRJT05fSVNfU1REQ0FMTAorI2RlZmlu
ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBDREVDTAorI2Vsc2UKKyNkZWZpbmUgSE9T
VF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04KKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKK2V4
dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSgpOworfQorCisjZW5kaWYgLy8gSG9zdENhbGxSZXR1cm5WYWx1
ZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEwNTU4NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzI1LDYgKzMyNSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAg
ICAgREVGSU5FX09QKG9wX3Byb2ZpbGVfd2lsbF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3Bf
cHVzaF9uZXdfc2NvcGUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX3Njb3BlKQorICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlf
aWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaW5kZXgpCiAgICAgICAgIERFRklORV9P
UChvcF9wdXRfYnlfdmFsKQpAQCAtNDg3LDYgKzQ4OSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykK
ICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfcmVzb2x2ZV9nbG9iYWwpCkBAIC01MjYsNiArNTMwLDEwIEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVNsb3dDYXNlcygpCiAKIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRy
KiBmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaykKIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NS
KQorICAgIHByaW50ZigiQ29tcGlsaW5nIEpJVCBjb2RlIVxuIik7CisjZW5kaWYKKyAgICAKICNp
ZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiAgICAgbV9jYW5CZU9wdGltaXplZCA9IG1fY29kZUJs
b2NrLT5jYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC02OTAsOCArNjk4LDEyIEBAIEpJ
VENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAgICAgICAgaW5mby5jYWxs
UmV0dXJuTG9jYXRpb24gPSBtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8obV9tZXRob2RD
YWxsQ29tcGlsYXRpb25JbmZvW2ldLnByb3BlcnR5QWNjZXNzSW5kZXgpLmNhbGxSZXR1cm5Mb2Nh
dGlvbjsKICAgICB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAobV9jYW5CZU9wdGlt
aXplZCkgeworI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1f
Y2FuQmVPcHRpbWl6ZWQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHx8IHRydWUKKyNlbmRp
ZgorICAgICAgICApIHsKICAgICAgICAgQ29tcGFjdEpJVENvZGVNYXA6OkVuY29kZXIgaml0Q29k
ZU1hcEVuY29kZXI7CiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBi
eXRlY29kZU9mZnNldCA8IG1fbGFiZWxzLnNpemUoKTsgKytieXRlY29kZU9mZnNldCkgewogICAg
ICAgICAgICAgaWYgKG1fbGFiZWxzW2J5dGVjb2RlT2Zmc2V0XS5pc1NldCgpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEwNTU4NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKSVRDb2RlKCkgeyB9CiAjZW5kaWYKICAgICBw
dWJsaWM6Ci0gICAgICAgIGVudW0gSklUVHlwZSB7IEhvc3RDYWxsVGh1bmssIEJhc2VsaW5lSklU
LCBERkdKSVQgfTsKKyAgICAgICAgZW51bSBKSVRUeXBlIHsgTm9uZSwgSG9zdENhbGxUaHVuaywg
SW50ZXJwcmV0ZXJUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OwogICAgICAgICAKICAgICAg
ICAgc3RhdGljIEpJVFR5cGUgYm90dG9tVGllckpJVCgpCiAgICAgICAgIHsKQEAgLTY2LDggKzY2
LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIERGR0pJVDsKICAgICAg
ICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGljIGJvb2wgaXNPcHRpbWl6aW5nSklUKEpJVFR5
cGUgaml0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gREZH
SklUOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgYm9vbCBpc0Jhc2VsaW5l
Q29kZShKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBqaXRU
eXBlID09IEludGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBCYXNlbGluZUpJVDsKKyAgICAg
ICAgfQorICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBKSVRDb2RlKCkKKyAgICAg
ICAgICAgIDogbV9qaXRUeXBlKE5vbmUpCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03NSw2
ICs4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgOiBtX3JlZihyZWYpCiAgICAg
ICAgICAgICAsIG1faml0VHlwZShqaXRUeXBlKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NF
UlQoaml0VHlwZSAhPSBOb25lKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBv
cGVyYXRvciAhKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJp
dmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIu
aAkocmV2aXNpb24gMTA1NTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDIxIEBACiAjaW5jbHVkZSAiQnl0ZWNv
ZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIK
KyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgogaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBw
cm9wcmlhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4m
IGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQog
eworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxs
cygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlw
ZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21w
aWxlKGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CkBAIC01NSwxMCArNjEs
NyBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShKU0dsCiAgICAgICAgIH0K
ICAgICAgICAgaml0Q29kZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdl
dCgpKTsKICAgICB9Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRl
Y29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+
aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgorICAgIGNvZGVC
bG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2RlQmxv
Y2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwogICAgIAog
ICAgIHJldHVybiB0cnVlOwpAQCAtNjYsOSArNjksMTQgQEAgaW5saW5lIGJvb2wgaml0Q29tcGls
ZUlmQXBwcm9wcmlhdGUoSlNHbAogCiBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFw
cHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJs
b2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIm
IGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwg
SklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9j
ay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWds
b2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNv
ZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGls
ZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAg
IGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlRnVuY3Rpb24oZ2xvYmFsRGF0YSwgY29kZUJs
b2NrLmdldCgpLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwpAQCAtODMsMTEgKzkx
LDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaQogICAgICAgICB9
CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5n
ZXQoKSwgJmppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BDT0RF
X1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29k
ZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVu
aXR5KCk7Ci0jZW5kaWYKLSAgICAKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2Fy
ZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGpp
dENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEwNTU4
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3co
SlNHbG9iYWxEYQogCiBFeGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIFJl
dHVybkFkZHJlc3NQdHIgZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1cm4gZ2VuZXJpY1Rocm93
KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAgICByZXR1cm4gZ2VuZXJp
Y1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1bHRMb2NhdGlvbikpOwog
fQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNp
b24gMTA1NTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5MTUsNyArMTkxNSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZv
aWQsIG9wdGltaXplX2Zyb20KICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gc3RhY2tGcmFt
ZS5hcmdzWzBdLmludDMyKCk7CiAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIHBy
aW50ZigiRW50ZXJlZCBvcHRpbWl6ZV9mcm9tX2xvb3Agd2l0aCBleGVjdXRlQ291bnRlciA9ICVk
LCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50
ZXIgPSAldVxuIiwgY29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLCBjb2RlQmxvY2stPnJl
b3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCksIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlD
b3VudGVyKCkpOworICAgIHByaW50ZigiJXA6IEVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdp
dGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwg
b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5q
aXRFeGVjdXRlQ291bnRlcigpLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVy
KCksIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOwogI2VuZGlmCiAKICAg
ICBpZiAoY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpKSB7CkBAIC0yMTcwLDQ1
ICsyMTcwLDEzIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1pbmxpbmUgQ2FsbEZyYW1lKiBhcml0eUNoZWNrRm9yKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQotewotICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rp
b24oY2FsbEZyYW1lLT5jYWxsZWUoKSk7Ci0gICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0
aW9uKCkpOwotICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRh
YmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOwotICAgIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsK
LQotICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNj
ZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgotICAgIGlmICgh
cmVnaXN0ZXJGaWxlLT5ncm93KGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBuZXdDb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKLQotICAgIC8vIFRvbyBmZXcgYXJn
dW1lbnRzIC0tIGNvcHkgY2FsbCBmcmFtZSBhbmQgYXJndW1lbnRzLCB0aGVuIGZpbGwgaW4gbWlz
c2luZyBhcmd1bWVudHMgd2l0aCB1bmRlZmluZWQuCi0gICAgc2l6ZV90IGRlbHRhID0gbmV3Q29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKLSAg
ICBSZWdpc3Rlciogc3JjID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKTsKLSAgICBSZWdpc3Rlciog
ZHN0ID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIGRlbHRhOwotCi0gICAgaW50IGk7Ci0gICAg
aW50IGVuZCA9IC1DYWxsRnJhbWU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyk7Ci0gICAgZm9yIChpID0gLTE7IGkgPj0gZW5kOyAtLWkpCi0gICAgICAgIGRzdFtpXSA9IHNy
Y1tpXTsKLQotICAgIGVuZCAtPSBkZWx0YTsKLSAgICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkpCi0g
ICAgICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxG
cmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGRzdCk7Ci0gICAgQVNTRVJUKCh2b2lkKiluZXdDYWxs
RnJhbWUgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7Ci0gICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsK
LX0KLQogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxfYXJpdHlDaGVjaykKIHsK
ICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogCi0gICAgQ2FsbEZyYW1lKiBuZXdD
YWxsRnJhbWUgPSBhcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZp
bGUsIENvZGVGb3JDYWxsKTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNs
b3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxl
LCBDb2RlRm9yQ2FsbCk7CiAgICAgaWYgKCFuZXdDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiB0
aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RV
Ql9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2Fs
bGVyRnJhbWUoKSkpOwogCkBAIC0yMjIxLDcgKzIxODksNyBAQCBERUZJTkVfU1RVQl9GVU5DVElP
Tih2b2lkKiwgb3BfY29uc3RydWN0CiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNr
RnJhbWUuY2FsbEZyYW1lOwogCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBhcml0eUNo
ZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDb25zdHJ1
Y3QpOworICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1BhdGhzOjphcml0
eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDb25z
dHJ1Y3QpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNl
cHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJO
X0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1l
KCkpKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQu
aAkocmV2aXNpb24gMTA1NTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVy
ZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiwxMCBAQAogI2lmbmRlZiBKU0lu
dGVyZmFjZUpJVF9oCiAjZGVmaW5lIEpTSW50ZXJmYWNlSklUX2gKIAorI2luY2x1ZGUgIkJ5dGVj
b2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklUU3R1
YnMuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNs
dWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIExMSW50Q29tbW9uX2gKKyNkZWZpbmUgTExJbnRDb21tb25faAorCisj
ZGVmaW5lIExMSU5UX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNkZWZpbmUgTExJTlRfSEVMUEVSX1RS
QUNJTkcgMAorCisjZW5kaWYgLy8gTExJbnRDb21tb25faAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKKworI2lmIEVOQUJMRShMTElO
VCkKKworI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnBy
ZXRlci5oIgorI2luY2x1ZGUgIk9wY29kZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IExMSW50IHsKKworRGF0YTo6RGF0YSgpCisgICAgOiBtX2V4Y2VwdGlvbkluc3RydWN0aW9ucyhu
ZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsgMV0pCisgICAgLCBtX29wY29kZU1hcChu
ZXcgT3Bjb2RlW251bU9wY29kZUlEc10pCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhP
cGNvZGVMZW5ndGggKyAxOyArK2kpCisgICAgICAgIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ld
LnUucG9pbnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2Zyb21faGVscGVy
X3RyYW1wb2xpbmUpOworI2RlZmluZSBPUENPREVfRU5UUlkob3Bjb2RlLCBsZW5ndGgpIG1fb3Bj
b2RlTWFwW29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF8jI29wY29kZSk7Cisg
ICAgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9FTlRSWSk7CisjdW5kZWYgT1BDT0RFX0VOVFJZ
Cit9CisKK0RhdGE6On5EYXRhKCkKK3sKKyAgICBkZWxldGVbXSBtX2V4Y2VwdGlvbkluc3RydWN0
aW9uczsKKyAgICBkZWxldGVbXSBtX29wY29kZU1hcDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJ
bnREYXRhX2gKKyNkZWZpbmUgTExJbnREYXRhX2gKKworI2luY2x1ZGUgIk9wY29kZS5oIgorI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3Ry
dWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisjaWYgRU5BQkxFKExMSU5UKQorY2xhc3Mg
RGF0YSB7CitwdWJsaWM6CisgICAgRGF0YSgpOworICAgIH5EYXRhKCk7CisgICAgCisgICAgSW5z
dHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAgeworICAgICAgICByZXR1cm4g
bV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bjb2Rl
TWFwKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX29wY29kZU1hcDsKKyAgICB9Citwcml2YXRl
OgorICAgIEluc3RydWN0aW9uKiBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBPcGNvZGUq
IG1fb3Bjb2RlTWFwOworfTsKKyNlbHNlIC8vIEVOQUJMRShMTElOVCkKKworI2lmIENPTVBJTEVS
KENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBpZ25vcmVkICItV21pc3Npbmctbm9yZXR1cm4iCisjZW5kaWYKKworY2xhc3MgRGF0
YSB7CitwdWJsaWM6CisgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCisg
ICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgT3Bj
b2RlKiBvcGNvZGVNYXAoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgfQorfTsKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHBvcAorI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnREYXRhX2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRF
bnRyeXBvaW50cy5oIgorCisjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUgIkpTR2xvYmFs
RGF0YS5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRl
cnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBn
ZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQsIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciYgYXJpdHlDaGVjaykKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAg
ICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgIGppdENvZGUgPSBK
SVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgICAgIGFyaXR5Q2hl
Y2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAg
ICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSkpKTsKKyAg
ICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAg
ICAgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9y
Q2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAg
ICAgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxB
cml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGppdENvZGUgPSBK
SVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1
bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBhcml0eUNoZWNr
ID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1Ro
dW5rR2VuZXJhdG9yKS5jb2RlKCk7Cit9CisKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFs
RGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0
aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9ldmFsX3Byb2xvZ3Vl
KSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29k
ZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKTsKK30KKwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9i
YWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVu
Y3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Byb2dyYW1fcHJv
bG9ndWUpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGppdENvZGUgPSBK
SVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciks
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
TExJbnQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2lu
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRy
eXBvaW50cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RW50cnlw
b2ludHNfaAorI2RlZmluZSBMTEludEVudHJ5cG9pbnRzX2gKKworI2luY2x1ZGUgIkNvZGVTcGVj
aWFsaXphdGlvbktpbmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV2YWxDb2RlQmxv
Y2s7CitjbGFzcyBKSVRDb2RlOworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOworY2xhc3MgUHJvZ3Jh
bUNvZGVCbG9jazsKKworbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5
cG9pbnQoSlNHbG9iYWxEYXRhJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgSklUQ29kZSYsIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjayk7Cit2b2lkIGdldEV2YWxFbnRyeXBvaW50
KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNH
bG9iYWxEYXRhJiwgSklUQ29kZSYpOworCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXZhbENvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7
CisgICAgZ2V0RXZhbEVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK2lubGlu
ZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9ncmFtQ29k
ZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRQcm9ncmFtRW50cnlwb2ludChn
bG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisK
KyNlbmRpZiAvLyBMTEludEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgor
CisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVk
ZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAi
TExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGludGVycHJldGVyVGhyb3coRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5n
bG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93
aW5nIGV4Y2VwdGlvbiAlcy5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigp
KTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRh
LT5leGNlcHRpb24sIGV4ZWMtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChleGVjLCBleGVj
LT5yZXR1cm5QQygpKSk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3du
RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0
YSgpLmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKworSW5zdHJ1Y3Rpb24q
IHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAg
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElO
VF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChyZXR1
cm5Ub1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNl
bmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNl
cHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOwor
ICAgIAorICAgIHJldHVybiBnbG9iYWxEYXRhLT5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rp
b25zKCk7Cit9CisKK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rp
b24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxE
YXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4
Y2VwdGlvbiAlcyAoY2FsbFRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2Ny
aXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGds
b2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50
X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6TExJbnQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4
Y2VwdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludEV4Y2VwdGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RXhjZXB0
aW9uc19oCisjZGVmaW5lIExMSW50RXhjZXB0aW9uc19oCisKKyNpbmNsdWRlIDx3dGYvU3RkTGli
RXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3Qg
SW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKKy8vIEp1c3QgdGhyb3cgdGhlIGN1
cnJlbnRseSBhY3RpdmUgZXhjZXB0aW9uIGluIHRoZSBjb250ZXh0IG9mIHRoaXMgZXhlYyBzdGF0
ZQorLy8gYW5kIHNldCB1cCBhbGwgbmVjZXNzYXJ5IHN0YXRlLgordm9pZCBpbnRlcnByZXRlclRo
cm93KEV4ZWNTdGF0ZSopOworCisvLyBUZWxscyB5b3Ugd2hlcmUgdG8ganVtcCB0byBpZiB5b3Ug
d2FudCB0byByZXR1cm4tdG8tdGhyb3csIGFmdGVyIHlvdSd2ZSBhbHJlYWR5CisvLyBzZXQgdXAg
YWxsIGluZm9ybWF0aW9uIG5lZWRlZCB0byB0aHJvdyB0aGUgZXhjZXB0aW9uLgorSW5zdHJ1Y3Rp
b24qIHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0YXRlKik7CisKKy8vIFNh
dmVzIHRoZSBjdXJyZW50IFBDIGluIHRoZSBnbG9iYWwgZGF0YSBmb3Igc2FmZS1rZWVwaW5nLCBh
bmQgZ2l2ZXMgeW91IGEgUEMKKy8vIHRoYXQgeW91IGNhbiB0ZWxsIHRoZSBpbnRlcnByZXRlciB0
byBnbyB0bywgd2hpY2ggd2hlbiBhZHZhbmNlZCBiZXR3ZWVuIDEKKy8vIGFuZCA5IHNsb3RzIHdp
bGwgZ2l2ZSB5b3UgYW4gImluc3RydWN0aW9uIiB0aGF0IHRocmVhZHMgdG8gdGhlIGludGVycHJl
dGVyJ3MKKy8vIGV4Y2VwdGlvbiBoYW5kbGVyLiBOb3RlIHRoYXQgaWYgeW91IGdpdmUgaXQgdGhl
IFBDIGZvciBleGNlcHRpb24gaGFuZGxpbmcsCisvLyBpdCdzIHNtYXJ0IGVub3VnaCB0byBqdXN0
IHJldHVybiB0aGF0IFBDIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxzZTsgdGhpcworLy8gbGV0
cyB5b3UgdGhyZWFkIGV4Y2VwdGlvbiBoYW5kbGluZyB0aHJvdWdoIGNvbW1vbiBoZWxwZXIgZnVu
Y3Rpb25zIHVzZWQgYnkKKy8vIG90aGVyIGhlbHBlcnMuCitJbnN0cnVjdGlvbiogcmV0dXJuVG9U
aHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOworCisvLyBVc2UgdGhpcyB3aGVuIHlvdSdy
ZSB0aHJvd2luZyB0byBhIGNhbGwgdGh1bmsuCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUq
LCBJbnN0cnVjdGlvbiopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlm
IC8vIExMSW50RXhjZXB0aW9uc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0MjQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50SGVscGVycy5oIgorCisjaW5jbHVkZSAi
QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uU2xv
d1BhdGhzLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiSklURHJpdmVyLmgiCisj
aW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKKyNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24u
aCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVy
cHJldGVyLmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIExMSW50IHsKKworI2RlZmluZSBMTElOVF9PUChpbmRleCkgKGV4ZWMtPnVuY2hlY2tl
ZFIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisjZGVmaW5lIExMSU5UX09QX0MoaW5kZXgpIChleGVj
LT5yKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9UV08oZmly
c3QsIHNlY29uZCkgZG8geyAgICAgICBcCisgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdm9pZCogYTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdm9pZCogYjsgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICB9IHBhaXI7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICBpbnQ2NF90IGk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIH0gX19ydF91OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmEgPSBmaXJzdDsgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIF9fcnRfdS5wYWlyLmIgPSBzZWNvbmQ7ICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIHJldHVybiBfX3J0X3UuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
fSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5f
VFdPKHBjLCBleGVjKQorCisjZGVmaW5lIExMSU5UX1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYgX190X2ds
b2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7ICAgICAgICBcCisgICAgICAgIF9fdF9nbG9i
YWxEYXRhLmV4Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICBcCisgICAg
ICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAo
VU5MSUtFTFkoZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpIHsgICBcCisgICAgICAgICAg
ICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
fSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfRU5EKCkgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9CUkFOQ0gob3Bjb2RlLCBjb25k
aXRpb24pIGRvIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBib29sIF9fYl9jb25k
aXRpb24gPSAoY29uZGl0aW9uKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBpZiAoX19iX2NvbmRpdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0gcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUp
IC0gMV0udS5vcGVyYW5kOyAgICAgICAgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0g
T1BDT0RFX0xFTkdUSChvcGNvZGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTih2YWx1ZSkg
ZG8geyAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTVmFsdWUgX19yX3JldHVyblZhbHVlID0g
KHZhbHVlKTsgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAg
ICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0gX19yX3JldHVyblZhbHVlOyAgICAgICAg
ICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wY29k
ZSwgdmFsdWUpIGRvIHsgICAgICAgICAgICAgICBcCisgICAgICAgIEpTVmFsdWUgX19ycF9yZXR1
cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgTExJTlRfT1AoMSkgPSBfX3JwX3JldHVyblZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUucHJvZmlsZS0+bV9i
dWNrZXRzWzBdID0gXAorICAgICAgICAgICAgSlNWYWx1ZTo6ZW5jb2RlKF9fcnBfcmV0dXJuVmFs
dWUpOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
KyNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0KSBMTElOVF9SRVRV
Uk5fVFdPKChjYWxsVGFyZ2V0KSwgKGV4ZWMpKQorCisjZGVmaW5lIExMSU5UX0NBTExfVEhST1co
ZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICBcCisgICAgICAg
IEV4ZWNTdGF0ZSogX19jdF9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2N0X3BjID0gKHBjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYgX19jdF9n
bG9iYWxEYXRhID0gKF9fY3RfZXhlYyktPmdsb2JhbERhdGEoKTsgICAgICBcCisgICAgICAgIF9f
Y3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jdF9leGVjLCBjYWxsVG9UaHJv
dyhfX2N0X2V4ZWMsIF9fY3RfcGMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5l
IExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKSBkbyB7ICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jY2VfZXhlYyA9IChleGVjKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2NjZV9w
YyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlm
IChVTkxJS0VMWShfX2NjZV9leGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY2NlX2V4ZWMsIGNhbGxU
b1Rocm93KF9fY2NlX2V4ZWMsIF9fY2NlX3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKwor
I2RlZmluZSBMTElOVF9DQUxMX1JFVFVSTihleGVjLCBwYywgY2FsbFRhcmdldCkgZG8geyAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3JfZXhlYyA9IChleGVjKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiog
X19jcl9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICB2b2lkKiBfX2NyX2NhbGxUYXJnZXQgPSAoY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihfX2NyX2V4
ZWMtPmNhbGxlckZyYW1lKCksIF9fY3JfcGMpOyAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9J
TVBMKF9fY3JfZXhlYywgX19jcl9jYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgXAorICAgIH0g
d2hpbGUgKGZhbHNlKQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2Vf
b3BlcmFuZChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwg
aW50IG9wZXJhbmQpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXUsIG9w
IyV1OiBUcmFjZSglZCk6ICVkOiAlZFxuIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCks
CisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmlu
c3RydWN0aW9ucygpLmJlZ2luKCksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRl
cnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBmcm9tV2hl
cmUsCisgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFu
ZCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBs
bGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZy
b21XaGVyZSwgaW50IG9wZXJhbmQpCit7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0Mo
b3BlcmFuZCkuanNWYWx1ZSgpOworICAgIEVuY29kZWRWYWx1ZURlc2NyaXB0b3IgZGVzY3JpcHRv
cjsKKyAgICBkZXNjcmlwdG9yLmFzSW50NjQgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOworICAg
IHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV1LCBvcCMldTogVHJhY2UoJWQpOiAlZDog
JWQ6ICUwOHg6JTA4eCIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAg
ICBleGVjLAorICAgICAgICAgICBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJvbVdoZXJlLAorICAgICAg
ICAgICBvcGVyYW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQsCisgICAgICAg
ICAgIGRlc2NyaXB0b3IuYXNCaXRzLnRhZywKKyAgICAgICAgICAgZGVzY3JpcHRvci5hc0JpdHMu
cGF5bG9hZCk7CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50ZigiOiAlcyIsIHZhbHVlLmRlc2Ny
aXB0aW9uKCkpOworI2VuZGlmCisgICAgcHJpbnRmKCJcbiIpOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZSkKK3sKKyAgICBwcmludGYoIiVw
IC8gJXA6IGluIHByb2xvZ3VlLlxuIiwgZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMpOworICAgIExM
SU5UX0VORCgpOworfQorCitzdGF0aWMgdm9pZCB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBjaGFyKiBjb21tZW50LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpCit7CisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUo
KSk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1
dGFibGUoKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9ICZleGVjdXRhYmxlLT5nZW5lcmF0
ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICBwcmludGYoIiVwIC8gJXA6IGluICVzIG9mIGZ1bmN0
aW9uICVwLCBleGVjdXRhYmxlICVwOyBudW1WYXJzID0gJXUsIG51bVBhcmFtZXRlcnMgPSAldSwg
bnVtQ2FsbGVlUmVnaXN0ZXJzID0gJXUuXG4iLAorICAgICAgICAgICBjb2RlQmxvY2ssIGV4ZWMs
IGNvbW1lbnQsIGNhbGxlZSwgZXhlY3V0YWJsZSwKKyAgICAgICAgICAgY29kZUJsb2NrLT5tX251
bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVl
UmVnaXN0ZXJzKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rp
b25fZm9yX2NhbGwpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIHBy
b2xvZ3VlIiwgQ29kZUZvckNhbGwpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQoreworICAgIHRy
YWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IHByb2xvZ3VlIiwgQ29kZUZvckNv
bnN0cnVjdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNl
X2FyaXR5Q2hlY2tfZm9yX2NhbGwpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMs
ICJjYWxsIGFyaXR5IGNoZWNrIiwgQ29kZUZvckNhbGwpOworICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCit7Cisg
ICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjb25zdHJ1Y3QgYXJpdHkgY2hlY2siLCBD
b2RlRm9yQ29uc3RydWN0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0wodHJhY2UpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXUsICIsCisg
ICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAg
ICBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyNpZm5k
ZWYgTkRFQlVHCisgICAgcHJpbnRmKCIlcywgIiwgb3Bjb2RlTmFtZXNbZXhlYy0+Z2xvYmFsRGF0
YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSldKTsKKyNlbHNlCisg
ICAgcHJpbnRmKCJvcCMldSwgIiwgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRP
cGNvZGVJRChwY1swXS51Lm9wY29kZSkpOworI2VuZGlmCisgICAgcHJpbnRmKCJzY29wZSAlcFxu
IiwgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woc3BlY2lhbF90cmFjZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1dGlu
ZyBzcGVjaWFsIGNhc2UgYmMjJXUsIG9wIyV1LCByZXR1cm4gUEMgaXMgJXBcbiIsCisgICAgICAg
ICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBwYyAt
IGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLAorICAgICAgICAgICBl
eGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2Rl
KSwKKyAgICAgICAgICAgZXhlYy0+cmV0dXJuUEMoKS52YWx1ZSgpKTsKKyAgICBMTElOVF9FTkQo
KTsKK30KKworaW5saW5lIGJvb2wgc2hvdWxkSklUKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAv
LyBZb3UgY2FuIG1vZGlmeSB0aGlzIHRvIHR1cm4gb2ZmIEpJVHRpbmcgd2l0aG91dCByZWJ1aWxk
aW5nIHRoZSB3b3JsZC4KKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgp
OworfQorCitlbnVtIEVudHJ5S2luZCB7IFByb2xvZ3VlLCBBcml0eUNoZWNrIH07CitzdGF0aWMg
SGVscGVyUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBw
YywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUsIEVudHJ5S2luZCBraW5k
KQoreworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJl
ZCAlcyB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywgbmFtZSwgY29kZUJs
b2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91
bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsK
KyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgaWYgKCFjb2Rl
QmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRf
VkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50ZigiICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGls
ZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICBp
ZiAoa2luZCA9PSBQcm9sb2d1ZSkKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2st
PmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KDApLCBleGVjKTsKKyAgICBB
U1NFUlQoa2luZCA9PSBBcml0eUNoZWNrKTsKKyAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9j
ay0+Z2V0SklUQ29kZVdpdGhBcml0eUNoZWNrKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZXhlYyk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcikKK3sKKyAgICByZXR1cm4gZW50cnlP
U1IoZXhlYywgcGMsIGV4ZWMtPmNvZGVCbG9jaygpLCAiZW50cnlfb3NyIiwgUHJvbG9ndWUpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwpCit7Cisg
ICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSkt
PmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ2FsbCksICJlbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQoreworICAgIHJldHVybiBlbnRy
eU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUo
KS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNvbnN0cnVjdCksICJlbnRyeV9vc3JfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdCIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
ZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAgcmV0dXJuIGVu
dHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJs
ZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ2FsbCksICJlbnRyeV9vc3JfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOworfQorCitMTElOVF9IRUxQRVJf
REVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAg
IHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5q
c0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNvbnN0cnVjdCksICJl
bnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrIiwgQXJpdHlDaGVjayk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3NyKQoreworICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgCisjaWYgRU5BQkxFKEpJVF9WRVJCT1NF
X09TUikKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkIGxvb3Bfb3NyIHdpdGggZXhlY3V0ZUNvdW50
ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7
CisjZW5kaWYKKyAgICAKKyAgICBpZiAoIXNob3VsZEpJVChleGVjKSkgeworICAgICAgICBjb2Rl
QmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAs
IGV4ZWMpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNvZGVCbG9jay0+aml0Q29tcGlsZShleGVj
LT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICAgICAg
cHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlmCisgICAg
fQorICAgIGNvZGVCbG9jay0+aml0U29vbigpOworICAgIAorICAgIEFTU0VSVChjb2RlQmxvY2st
PmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgCisgICAgVmVjdG9y
PEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gbWFwOworICAgIGNvZGVCbG9jay0+aml0Q29kZU1h
cCgpLT5kZWNvZGUobWFwKTsKKyAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcg
PSBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25lZCwgQnl0ZWNv
ZGVBbmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29kZUluZGV4PihtYXAuYmVnaW4oKSwgbWFwLnNp
emUoKSwgcGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIEFTU0VS
VChtYXBwaW5nKTsKKyAgICBBU1NFUlQobWFwcGluZy0+bV9ieXRlY29kZUluZGV4ID09IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihwYyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSkp
OworICAgIAorICAgIHZvaWQqIGp1bXBUYXJnZXQgPSBjb2RlQmxvY2stPmdldEpJVENvZGUoKS5l
eGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KG1hcHBpbmctPm1fbWFjaGluZUNvZGVPZmZzZXQpOwor
ICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk5fVFdPKGp1bXBU
YXJnZXQsIGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKQoreworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgCisjaWYgRU5BQkxF
KEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkIHJlcGxhY2Ugd2l0aCBl
eGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRl
Q291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmIChzaG91bGRKSVQoZXhlYykpIHsKKyAg
ICAgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgewor
I2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgICAgICBwcmludGYoIiAgICBDb2Rl
IHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBj
b2RlQmxvY2stPmppdFNvb24oKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29kZUJsb2NrLT5kb250
SklUQW55dGltZVNvb24oKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0wocmVnaXN0ZXJfZmlsZV9jaGVjaykKK3sKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAg
IHByaW50ZigiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0IHdpdGggZXhlYyA9ICVwLlxuIiwgZXhlYyk7
CisgICAgcHJpbnRmKCJDb2RlQmxvY2sgPSAlcC5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAg
ICBwcmludGYoIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2so
KS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgIHByaW50ZigiTnVtIHZhcnMgPSAldS5cbiIs
IGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bVZhcnMpOworICAgIHByaW50ZigiQ3VycmVudCBlbmQg
aXMgYXQgJXAuXG4iLCBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmls
ZSgpLmVuZCgpKTsKKyNlbmRpZgorICAgIEFTU0VSVCgmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+
Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSA+IGV4ZWMtPmdsb2JhbERhdGEoKS5p
bnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOworICAgIGlmIChVTkxJS0VMWSghZXhl
Yy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5ncm93KCZleGVjLT5y
ZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnNdKSkpIHsK
KyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2Jh
bERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAg
ICAgIGludGVycHJldGVyVGhyb3coZXhlYyk7CisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvd0Zv
clRocm93bkV4Y2VwdGlvbihleGVjKTsKKyAgICB9CisgICAgTExJTlRfRU5EX0lNUEwoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICBFeGVj
U3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmV4
ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDYWxs
KTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1l
KCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092
ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3coZXhlYyk7CisgICAg
ICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPigxKSwgZXhlYyk7CisgICAg
fQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICBFeGVjU3RhdGUqIG5ld0V4
ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmV4ZWMtPmdsb2JhbERh
dGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDb25zdHJ1Y3QpOworICAg
IGlmICghbmV3RXhlYykgeworICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAg
ICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dF
cnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0ZXJUaHJvdyhleGVjKTsKKyAgICAgICAgTExJ
TlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KDEpLCBleGVjKTsKKyAgICB9CisgICAg
TExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQoreworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAg
cHJpbnRmKCJDcmVhdGluZyBhbiBhY3RpdmF0aW9uLCBleGVjID0gJXAhXG4iLCBleGVjKTsKKyNl
bmRpZgorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYywgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4oZXhlYy0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSk7CisgICAgZXhlYy0+c2V0
U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goYWN0aXZhdGlvbikpOworICAgIExM
SU5UX1JFVFVSTihKU1ZhbHVlKGFjdGl2YXRpb24pKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCit7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1Zh
bHVlKEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYykpOworICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIocGNbMV0udS5vcGVy
YW5kKSA9IGFyZ3VtZW50czsKKyAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVu
dHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKQoreworICAgIEpT
RnVuY3Rpb24qIGNvbnN0cnVjdG9yID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAg
CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsK
KyAgICBBU1NFUlQoY29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEo
Y29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CisjZW5kaWYK
KyAgICAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBKU1ZhbHVlIHByb3RvID0gTExJ
TlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmIChwcm90by5pc09iamVjdCgpKQorICAgICAgICBz
dHJ1Y3R1cmUgPSBhc09iamVjdChwcm90byktPmluaGVyaXRvcklEKGV4ZWMtPmdsb2JhbERhdGEo
KSk7CisgICAgZWxzZQorICAgICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c2NvcGUoKS0+
Z2xvYmFsT2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpOworICAgIAorICAgIExMSU5UX1JF
VFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcykKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJ
TlRfT1AoMSkuanNWYWx1ZSgpOworICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBM
TElOVF9SRVRVUk4odjEudG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25ld19vYmplY3QpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSkK
K3sKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgYml0d2lzZV9jYXN0PEpT
VmFsdWUqPigmTExJTlRfT1AoMikpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGNv
bnN0cnVjdEFycmF5KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihwY1sy
XS51Lm9wZXJhbmQpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25ld19yZWdleHApCit7CisgICAgUmVnRXhwKiByZWdFeHAgPSBleGVjLT5jb2RlQmxv
Y2soKS0+cmVnZXhwKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQo
KSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQg
ZmxhZyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpOworICAgIExMSU5UX1JFVFVS
TihSZWdFeHBPYmplY3Q6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxH
bG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1
cmUoKSwgcmVnRXhwKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9Cb29s
ZWFuKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSkKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25lcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVl
OjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSkKK3sKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9sZXNzKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPHRydWU+KGV4
ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3NlcSkKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgp
LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2dyZWF0ZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8ZmFsc2U+
KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSkKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wcmVfaW5jKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9P
UCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKyAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wcmVfZGVjKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9P
UCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wb3N0X2luYykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJTlRfT1AoMiku
anNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0ganNOdW1iZXIocmVz
dWx0ICsgMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9kZWMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExM
SU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpz
TnVtYmVyKHJlc3VsdCAtIDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKQoreworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKQoreworICAgIExMSU5UX1JF
VFVSTihqc051bWJlcigtTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2FkZCkKK3sKKyAgICBKU1ZhbHVlIHYxID0g
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2MiA9IExMSU5UX09QX0MoMyku
anNWYWx1ZSgpOworICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJU
cnlpbmcgdG8gYWRkICVzIiwgdjEuZGVzY3JpcHRpb24oKSk7CisgICAgcHJpbnRmKCIgdG8gJXMu
XG4iLCB2Mi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICh2MS5pc1N0cmlu
ZygpKSB7CisgICAgICAgIExMSU5UX1JFVFVSTigKKyAgICAgICAgICAgIHYyLmlzU3RyaW5nKCkK
KyAgICAgICAgICAgID8ganNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEpLCBhc1N0cmluZyh2Mikp
CisgICAgICAgICAgICA6IGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9QcmltaXRp
dmVTdHJpbmcoZXhlYykpKTsKKyAgICB9CisgICAgCisgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYg
djIuaXNOdW1iZXIoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHYxLmFzTnVtYmVy
KCkgKyB2Mi5hc051bWJlcigpKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpzQWRkU2xvd0Nh
c2UoZXhlYywgdjEsIHYyKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVt
YmVyKGV4ZWMpICogTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1YikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZGl2KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKSAvIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVy
KGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2QpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIo
ZXhlYyksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KQoreworICAgIExMSU5UX1JFVFVSTihqc051
bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIDw8IExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9yc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50
MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvVUludDMy
KGV4ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
TnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgJiBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9iaXRvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9JbnQzMihleGVjKSB8IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIo
ZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcikKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVj
KSBeIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIo
fkxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKK3sKKyAgICBKU1ZhbHVlIGJhc2VW
YWwgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgVHlwZUlu
Zm8gdHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKTsKKyAgICBBU1NFUlQoIWJhc2VWYWwuaXNPYmpl
Y3QoKQorICAgICAgICAgICB8fCAhKHR5cGVJbmZvID0gYXNPYmplY3QoYmFzZVZhbCktPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSk7CisjZW5kaWYKKyAg
ICBMTElOVF9USFJPVyhjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihleGVjLCAiaW5zdGFuY2VvZiIs
IGJhc2VWYWwpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5zdGFuY2VP
ZlNsb3coZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDQpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3R5cGVvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNUeXBlU3RyaW5nRm9yVmFsdWUo
ZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX3VuZGVmaW5lZCkKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKHYuaXNDZWxsKCkgPyB2LmFzQ2Vs
bCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkgOiB2
LmlzVW5kZWZpbmVkKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Jvb2xl
YW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KS5pc0Jvb2xlYW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVy
KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
aXNOdW1iZXIoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKQor
eworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oaXNKU1N0cmluZyhMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX29iamVjdCkKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNPYmplY3RUeXBlKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24p
Cit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rpb25UeXBlKExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4pCit7
CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW4oZXhlYywg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSkKK3sKKyAgICBMTElOVF9SRVRVUk5f
UFJPRklMRUQob3BfcmVzb2x2ZSwgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhl
Yy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKQoreworICAgIExMSU5UX1JFVFVSTl9Q
Uk9GSUxFRCgKKyAgICAgICAgb3BfcmVzb2x2ZV9za2lwLAorICAgICAgICBDb21tb25TbG93UGF0
aHM6Om9wUmVzb2x2ZVNraXAoCisgICAgICAgICAgICBleGVjLAorICAgICAgICAgICAgZXhlYy0+
Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwKKyAgICAgICAgICAgIHBj
WzNdLnUub3BlcmFuZCkpOworfQorCitzdGF0aWMgSlNWYWx1ZSByZXNvbHZlR2xvYmFsKEV4ZWNT
dGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNH
bG9iYWxPYmplY3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0udS5vcGVyYW5kOworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgCisg
ICAgQVNTRVJUX1VOVVNFRChzdHJ1Y3R1cmUsIHN0cnVjdHVyZSAhPSBnbG9iYWxPYmplY3QtPnN0
cnVjdHVyZSgpKTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRl
bnRpZmllcihwcm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsK
KyAgICAKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQs
IHNsb3QpKSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBp
ZGVudCk7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAg
JiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgcGNbM10u
dS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7Cisg
ICAgICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIGV4ZWMtPmdsb2Jh
bERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlk
ZW50KTsKKyAgICByZXR1cm4gSlNWYWx1ZSgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcmVzb2x2ZV9nbG9iYWwpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29s
dmVfZ2xvYmFsLCByZXNvbHZlR2xvYmFsKGV4ZWMsIHBjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQoreworICAgIExMSU5UX1JFVFVSTl9Q
Uk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljLCByZXNvbHZlR2xvYmFsKGV4ZWMsIHBj
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Zvcl9yZXNvbHZlX2ds
b2JhbF9keW5hbWljKQoreworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2ds
b2JhbF9keW5hbWljLCBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZShleGVjLCBleGVjLT5jb2Rl
QmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBl
eGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIGlmIChw
Y1szXS51Lm9wZXJhbmQpIHsKKyAgICAgICAgSlNWYWx1ZSBiYXNlID0gSlNDOjpyZXNvbHZlQmFz
ZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCB0cnVlKTsKKyAgICAgICAgaWYgKCFi
YXNlKQorICAgICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFs
QXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICAgICAgTExJTlRfUkVUVVJO
KGJhc2UpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2
ZV9iYXNlLCBKU0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCks
IGZhbHNlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlf
ZXhpc3RzKQoreworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChMTElOVF9PUCgxKS5q
c1ZhbHVlKCkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CisgICAgSWRlbnRpZmll
ciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQp
OworICAgIGlmICghb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKQor
ICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50
KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpCit7CisgICAgSlNWYWx1ZSByZXN1
bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhCYXNlKGV4ZWMsIGV4ZWMtPmNvZGVC
bG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICAv
LyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5nLCBidXQgd2UgZG9uJ3Qg
ZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4KKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQoreworICAgIEpT
VmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVXaXRoVGhpcyhleGVjLCBl
eGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgx
KSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1
bHQ7CisgICAgLy8gRklYTUU6IHRlY2huaWNhbGx5IHNob3VsZCBoYXZlIHByb2ZpbGluZywgYnV0
IHdlIGRvbid0IGRvIGl0IGJlY2F1c2UgdGhlIERGRyB3b24ndCB1c2UgaXQuCisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfaWQpCit7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVy
JiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpT
VmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgUHJvcGVydHlT
bG90IHNsb3QoYmFzZVZhbHVlKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdl
dChleGVjLCBpZGVudCwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
TExJTlRfT1AoMSkgPSByZXN1bHQ7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCisgICAg
ICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKQorICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0g
YmFzZVZhbHVlCisgICAgICAgICYmIHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVy
dHlTbG90OjpWYWx1ZSkgeworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJh
c2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2Vs
bC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNh
Y2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8o
KS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgeworICAgICAgICAgICAgcGNbNF0udS5zdHJ1
Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHBjWzVdLnUub3Bl
cmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgIH0K
KyAgICB9CisgICAgCisgICAgcGNbT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfaWQpIC0gMV0udS5w
cm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVu
Z3RoKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Cisg
ICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVy
YW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworICAgIExMSU5UX1JFVFVSTihiYXNlVmFs
dWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wdXRfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1sy
XS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSk7CisgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAgICAgYXNPYmplY3QoYmFzZVZhbHVl
KS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgaWRlbnQsIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpLCBzbG90KTsKKyAgICBlbHNlCisgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaWRl
bnQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKKyAgICAKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCisgICAgICAgICYmIHNs
b3QuaXNDYWNoZWFibGUoKSkgeworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9
IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNl
Q2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNV
bmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUlu
Zm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKQorICAgICAgICAgICAgJiYgYmFzZUNlbGwg
PT0gc2xvdC5iYXNlKCkpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNsb3QudHlw
ZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgc3RydWN0dXJlLT5wcmV2aW91c0lEKCkt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGJlY2F1
c2Ugc29tZSBvZiB0aGUgbWV0aG9kcyB3ZSBjYWxsCisgICAgICAgICAgICAgICAgICAgIC8vIGJl
bG93IG1heSBHQy4KKyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworCisgICAgICAgICAgICAgICAgICAg
IG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKKyAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQo
KS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNl
dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOworICAgICAgICAg
ICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9m
KEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBwY1s2XS51LnN0cnVjdHVyZS5zZXQoCisg
ICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVy
ZUNoYWluKiBjaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChjaGFpbik7CisgICAgICAgICAgICAgICAgICAgIHBjWzddLnUu
c3RydWN0dXJlQ2hhaW4uc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFs
RGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjaGFpbik7CisgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAg
ICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOworICAgICAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBw
Y1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7
CisgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAg
ICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0
cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRP
ZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2RlbF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9j
aygpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
dG9PYmplY3QoZXhlYyk7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMsIGNvZGVCbG9jay0+aWRl
bnRpZmllcihwY1szXS51Lm9wZXJhbmQpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsK
KyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAg
ICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBw
cm9wZXJ0eS4iKSk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOwor
fQorCitpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFz
ZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKK3sKKyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5p
c0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUg
cmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkoZXhlYywgYXNT
dHJpbmcoc3Vic2NyaXB0KS0+dmFsdWUoZXhlYykpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisgICAgCisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAg
IHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNTdHJp
bmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAg
ICAgICAgICAgIHJldHVybiBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsK
KyAgICAgICAgCisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRl
QXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpCisgICAgICAgICAgICByZXR1cm4g
YXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBpKTsKKyAgICB9CisgICAgCisgICAgSWRl
bnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYykpOworICAgIHJl
dHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5KTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dldF9ieV92YWwpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX2dl
dF9ieV92YWwsIGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2Fy
Z3VtZW50X2J5X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IExMSU5UX09QKDIpLmpz
VmFsdWUoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykgeworICAgICAgICBhcmd1bWVudHMgPSBBcmd1
bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpOworICAgICAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgTExJTlRfT1AoMikgPSBhcmd1bWVudHM7CisgICAg
ICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUu
b3BlcmFuZCkpID0gYXJndW1lbnRzOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZ2V0
QnlWYWwoZXhlYywgYXJndW1lbnRzLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKQoreworICAgIExMSU5UX1JFVFVS
TihnZXRCeVZhbChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFs
dWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCkKK3sKKyAg
ICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBKU1Zh
bHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdmFs
dWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBpZiAoTElLRUxZKHN1YnNj
cmlwdC5pc1VJbnQzMigpKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUlu
dDMyKCk7CisgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgeworICAgICAgICAgICAg
SlNBcnJheSoganNBcnJheSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChq
c0FycmF5LT5jYW5TZXRJbmRleChpKSkKKyAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRl
eChnbG9iYWxEYXRhLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgSlNBcnJheTo6cHV0QnlJbmRleChqc0FycmF5LCBleGVjLCBpLCB2YWx1ZSk7CisgICAgICAg
ICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShi
YXNlVmFsdWUpCisgICAgICAgICAgICAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nl
c3NJbmRleChpKSkgeworICAgICAgICAgICAgSlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNC
eXRlQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpIHsK
KyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNJbnQzMigp
KTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXkt
PnNldEluZGV4KGksIHZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VO
RCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhl
YywgaSwgdmFsdWUpOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSWRl
bnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYykpOworICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGV4ZWMtPmNv
ZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBwcm9w
ZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZGVsX2J5X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5U
X09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVl
LnRvT2JqZWN0KGV4ZWMpOworICAgIAorICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCk7CisgICAgCisgICAgYm9vbCBjb3VsZERlbGV0ZTsKKyAgICAKKyAgICB1
aW50MzJfdCBpOworICAgIGlmIChzdWJzY3JpcHQuZ2V0VUludDMyKGkpKQorICAgICAgICBjb3Vs
ZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRl
eChiYXNlT2JqZWN0LCBleGVjLCBpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgTExJTlRfQ0hFQ0tf
RVhDRVBUSU9OKCk7CisgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0
LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
ICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVy
dHkoYmFzZU9iamVjdCwgZXhlYywgcHJvcGVydHkpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNv
dWxkRGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAg
TExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3Bl
cnR5LiIpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpCit7CisgICAgTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCkucHV0KGV4ZWMsIHBjWzJdLnUub3BlcmFuZCwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHV0X2dldHRlcikKK3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgp
LmlzT2JqZWN0KCkpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1Ao
MSkuanNWYWx1ZSgpKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygp
LT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpz
VmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVH
ZXR0ZXIoYmFzZU9iaiwgZXhlYywgaWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUo
KSksIDApOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHV0X3NldHRlcikKK3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0
KCkpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1
ZSgpKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlm
aWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpzVmFsdWUoKS5p
c09iamVjdCgpKTsKKyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVTZXR0ZXIoYmFz
ZU9iaiwgZXhlYywgaWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUoKSksIDApOwor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam1wX3Njb3Bl
cykKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBTY29wZUNo
YWluTm9kZSogdG1wID0gZXhlYy0+c2NvcGVDaGFpbigpOworICAgIHdoaWxlIChjb3VudC0tKQor
ICAgICAgICB0bXAgPSB0bXAtPnBvcCgpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4odG1wKTsK
KyAgICBwYyArPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qdHJ1ZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfanRydWUs
IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pmYWxzZSwg
IUxMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qbGVzcykKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3MsIGpz
TGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcykKK3sKKyAg
ICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzLCAhanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0Mo
MSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfamdyZWF0ZXIpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVhdGVy
LCBqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVy
KQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmdyZWF0ZXIsICFqc0xlc3M8ZmFsc2U+KGV4ZWMs
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3NlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0go
b3Bfamxlc3NlcSwganNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qbmxlc3NlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzZXEsICFqc0xlc3NFcTx0
cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEpCit7CisgICAg
TExJTlRfQlJBTkNIKG9wX2pncmVhdGVyZXEsIGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9q
bmdyZWF0ZXJlcSwgIWpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3N3aXRjaF9pbW0pCit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoc2NydXRpbmVlLmlzRG91YmxlKCkpOworICAgIGRvdWJs
ZSB2YWx1ZSA9IHNjcnV0aW5lZS5hc0RvdWJsZSgpOworICAgIGludDMyX3QgaW50VmFsdWUgPSBz
dGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1sy
XS51Lm9wZXJhbmQ7CisgICAgaWYgKHZhbHVlID09IGludFZhbHVlKSB7CisgICAgICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVC
bG9jay0+aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9y
VmFsdWUoaW50VmFsdWUsIGRlZmF1bHRPZmZzZXQpOworICAgIH0gZWxzZQorICAgICAgICBwYyAr
PSBkZWZhdWx0T2Zmc2V0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfc3dpdGNoX3N0cmluZykKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5U
X09QX0MoMykuanNWYWx1ZSgpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVy
YW5kOworICAgIGlmICghc2NydXRpbmVlLmlzU3RyaW5nKCkpCisgICAgICAgIHBjICs9IGRlZmF1
bHRPZmZzZXQ7CisgICAgZWxzZSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVt
cFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoYXNTdHJpbmcoc2NydXRpbmVl
KS0+dmFsdWUoZXhlYykuaW1wbCgpLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYykKK3sKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2Rl
QmxvY2stPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlCisgICAgICAgICAgIHx8ICFjb2RlQmxv
Y2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKQorICAgICAgICAgICB8fCBleGVjLT51bmNoZWNrZWRS
KGNvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CisjaWYgTExJTlRf
SEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIkNyZWF0aW5nIGZ1bmN0aW9uIVxuIik7CisjZW5k
aWYKKyAgICBMTElOVF9SRVRVUk4oY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbMl0udS5vcGVy
YW5kKS0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25ld19mdW5jX2V4cCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBj
b2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTRnVuY3Rpb24q
IGZ1bmMgPSBmdW5jdGlvbi0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpOworICAgIAor
ICAgIGlmICghZnVuY3Rpb24tPm5hbWUoKS5pc051bGwoKSkgeworICAgICAgICBKU1N0YXRpY1Nj
b3BlT2JqZWN0KiBmdW5jdGlvblNjb3BlT2JqZWN0ID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3Jl
YXRlKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKCksIGZ1bmMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7
CisgICAgICAgIGZ1bmMtPnNldFNjb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuYy0+c2NvcGUo
KS0+cHVzaChmdW5jdGlvblNjb3BlT2JqZWN0KSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JF
VFVSTihmdW5jKTsKK30KKworc3RhdGljIEhlbHBlclJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwo
RXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgY2FsbGVlLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZXhl
Y0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAm
ZXhlYy0+Z2xvYmFsRGF0YSgpOworCisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVj
LT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKworICAg
IGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwor
ICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxlZSwgY2FsbERhdGEp
OworICAgIAorICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVKUyk7CisgICAgCisg
ICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUhvc3QpIHsKKyAgICAgICAgICAgIGdsb2Jh
bERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0
aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTExJ
TlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICAgICAgfQorICAgICAgICAKKyNpZiBMTElOVF9I
RUxQRVJfVFJBQ0lORworICAgICAgICBwcmludGYoIkNhbGwgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0
aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICAgICAgQVNT
RVJUKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSk7CisgICAgICAgIExMSU5UX0NBTExfVEhST1co
ZXhlYywgcGMsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgIH0K
KworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIAorICAgIENvbnN0
cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUg
PSBnZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0RGF0YSk7CisgICAgCisgICAgQVNT
RVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZUpTKTsKKyAgICAKKyAgICBpZiAoY29u
c3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlSG9zdCkgeworICAgICAgICBnbG9iYWxEYXRhLT5o
b3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZl
LmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0Nh
bGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
KTsKKyAgICB9CisgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAgICAgcHJpbnRm
KCJDb25zdHJ1Y3RvciBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUuZGVz
Y3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlID09IENvbnN0
cnVjdFR5cGVOb25lKTsKKyAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RB
Q29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKK30KKworaW5saW5lIEhlbHBlclJldHVy
blR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSwgTExJbnRD
YWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCit7CisgICAgSlNDZWxsKiBjYWxsZWVBc0Z1
bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSk7CisgICAgaWYgKCFjYWxs
ZWVBc0Z1bmN0aW9uQ2VsbCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxs
ZWUsIHBjLCBjYWxsZWVBc1ZhbHVlLCBraW5kKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBjYWxs
ZWUgPSBhc0Z1bmN0aW9uKGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBleGVjQ2FsbGVlLT5z
ZXRTY29wZUNoYWluKGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKSk7CisgICAgRXhlY3V0YWJsZUJh
c2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAgICAKKyAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgY29kZVB0cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7Cisg
ICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGNvZGVQdHIgPSBl
eGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7Cisg
ICAgZWxzZSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAgICAg
IEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVjQ2Fs
bGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAg
ICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCksIHBjLCBlcnJv
cik7CisgICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5
dGVjb2RlRm9yKGtpbmQpOworICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICAgICAgaWYg
KGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxz
aXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIGNvZGVQdHIg
PSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0Zvcihr
aW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIH0K
KyAgICAKKyAgICBpZiAoY2FsbExpbmtJbmZvKSB7CisgICAgICAgIGlmIChjYWxsTGlua0luZm8t
PmlzT25MaXN0KCkpCisgICAgICAgICAgICBjYWxsTGlua0luZm8tPnJlbW92ZSgpOworICAgICAg
ICBFeGVjU3RhdGUqIGV4ZWNDYWxsZXIgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAg
ICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBl
eGVjQ2FsbGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAg
ICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERh
dGEoKSwgZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUp
OworICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKKyAg
ICAgICAgaWYgKGNvZGVCbG9jaykKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5n
Q2FsbChjYWxsTGlua0luZm8pOworICAgIH0KKyAgICAKKyAgICBMTElOVF9DQUxMX1JFVFVSTihl
eGVjQ2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKK30KKworaW5saW5l
IEhlbHBlclJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlv
biogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICAvLyBUaGlzIG5lZWRz
IHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAvLyAtIEZpZ3VyZSBvdXQg
d2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIElmIHBv
c3NpYmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAgIC8vIC0gUmV0dXJuIGEg
dHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZy
YW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51
Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lz
dGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2Fs
bGVyRnJhbWUoZXhlYyk7CisgICAgCisgICAgQVNTRVJUKHBjWzRdLnUuY2FsbExpbmtJbmZvKTsK
KyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVl
LCBwY1s0XS51LmNhbGxMaW5rSW5mbyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
YWxsKQoreworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0KQoreworICAgIHJldHVybiBn
ZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0cnVjdCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAg
ICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUgd2hpbGUgcmVzcGVjdGluZyB0aGUgdmFyaWFibGUg
YXJndW1lbnRzLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUg
aXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2Rl
IGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFs
dWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4
ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAorICAgICAgICBleGVjLCAmZXhlYy0+
Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwKKyAgICAgICAgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBwY1s0XS51Lm9wZXJh
bmQpOworICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKTsKKyAgICAKKyAg
ICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFz
VmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlYy0+
dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0d2lzZV9j
YXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpKTsKKyAgICAK
KyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVl
QXNWYWx1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpCit7Cisg
ICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIAor
ICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAg
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAg
IGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFu
ZCk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlY0NhbGxl
ZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAg
IGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVj
Q2FsbGVlLT5zZXRSZXR1cm5QQyhiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbGxpbnRfZ2Vu
ZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7Cisg
ICAgZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0g
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX2V2YWwpKTsK
KyAgICAKKyAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNF
dmFsKSkKKyAgICAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNh
bGwsIGNhbGxlZUFzVmFsdWUpOworICAgIAorICAgIGdsb2JhbERhdGEuaG9zdENhbGxSZXR1cm5W
YWx1ZSA9IGV2YWwoZXhlY0NhbGxlZSk7CisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxl
ZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCit7Cisg
ICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAg
IEpTVmFsdWUgYWN0aXZhdGlvblZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIGlm
ICghYWN0aXZhdGlvblZhbHVlKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNo
ZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1Zh
bHVlKCkpIHsKKyAgICAgICAgICAgIGlmICghZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9k
ZSgpKQorICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT50ZWFyT2ZmKGV4ZWMpOworICAg
ICAgICB9CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICBKU0FjdGl2YXRpb24qIGFj
dGl2YXRpb24gPSBhc0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVlKTsKKyAgICBhY3RpdmF0aW9u
LT50ZWFyT2ZmKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMt
PnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkp
LmpzVmFsdWUoKSkKKyAgICAgICAgYXNBcmd1bWVudHModiktPmRpZFRlYXJPZmZBY3RpdmF0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgYWN0aXZhdGlvbik7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCit7CisgICAgQVNT
RVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkgJiYgIWV4ZWMtPmNvZGVCbG9j
aygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIGFzQXJndW1lbnRzKGV4ZWMtPnVuY2hl
Y2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpLmpzVmFs
dWUoKSktPnRlYXJPZmYoZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9zdHJjYXQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMs
ICZMTElOVF9PUCgyKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl90b19wcmltaXRpdmUpCit7CisgICAgTExJTlRfUkVUVVJOKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2dldF9wbmFtZXMpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgp
OworICAgIGlmICh2LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcGMgKz0gcGNbNV0u
dS5vcGVyYW5kOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSlNPYmpl
Y3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gby0+
c3RydWN0dXJlKCk7CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJ
dGVyYXRvciA9IHN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpOworICAgIGlmICghanNQcm9w
ZXJ0eU5hbWVJdGVyYXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQcm90b3R5
cGVDaGFpbigpICE9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCisgICAgICAgIGpz
UHJvcGVydHlOYW1lSXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhl
Yywgbyk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBKU1ZhbHVlKGpzUHJvcGVydHlOYW1lSXRl
cmF0b3IpOworICAgIExMSU5UX09QKDIpID0gSlNWYWx1ZShvKTsKKyAgICBMTElOVF9PUCgzKSA9
IFJlZ2lzdGVyOjp3aXRoSW50KDApOworICAgIExMSU5UX09QKDQpID0gUmVnaXN0ZXI6OndpdGhJ
bnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAgICAKKyAgICBwYyArPSBPUENP
REVfTEVOR1RIKG9wX2dldF9wbmFtZXMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSkKK3sKKyAgICBKU09iamVjdCogYmFzZSA9IGFz
T2JqZWN0KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CisgICAgSlNTdHJpbmcqIHByb3BlcnR5ID0g
YXNTdHJpbmcoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBpZiAoYmFzZS0+aGFzUHJvcGVy
dHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eS0+dmFsdWUoZXhlYykpKSkgeworICAg
ICAgICAvLyBHbyB0byB0YXJnZXQuCisgICAgICAgIHBjICs9IHBjWzZdLnUub3BlcmFuZDsKKyAg
ICB9IC8vIEVsc2UsIGRvbid0IGNoYW5nZSB0aGUgUEMsIHNvIHRoZSBpbnRlcnByZXRlciB3aWxs
IHJlbG9vcC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3B1c2hfc2NvcGUpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOwor
ICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKKyAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9IG87CisgICAgZXhlYy0+c2V0U2NvcGVD
aGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2gobykpOworICAgIAorICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9wX3Njb3BlKQoreworICAgIGV4ZWMt
PnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wb3AoKSk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSkKK3sKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0
KiBzY29wZSA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBjb2RlQmxvY2stPmlk
ZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpLCBEb250RGVs
ZXRlKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChz
Y29wZSkpOworICAgIExMSU5UX1JFVFVSTihzY29wZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl90aHJvdykKK3sKKyAgICBMTElOVF9USFJPVyhMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3Ip
Cit7CisgICAgTExJTlRfVEhST1coY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgTExJTlRfT1Bf
QygxKS5qc1ZhbHVlKCkudG9TdHJpbmcoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2RlYnVnKQoreworICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBjWzFdLnUub3BlcmFuZDsK
KyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOworICAgIGludCBsYXN0TGluZSA9
IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0
ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZp
cnN0TGluZSwgbGFzdExpbmUpOworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7CisgICAgKCpQcm9maWxlcjo6
ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT53aWxsRXhlY3V0ZShleGVjLCBMTElOVF9PUCgx
KS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJvZmls
ZXJSZWZlcmVuY2UoKSktPmRpZEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRIZWxwZXJzX2gKKyNkZWZpbmUgTExJbnRIZWxw
ZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExM
SW50IHsKKwordHlwZWRlZiBpbnQ2NF90IEhlbHBlclJldHVyblR5cGU7CisKK2V4dGVybiAiQyIg
SGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSosIEluc3RydWN0
aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworZXh0ZXJuICJDIiBIZWxwZXJSZXR1
cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZy
b21XaGVyZSwgaW50IG9wZXJhbmQpOworCisjZGVmaW5lIExMSU5UX0hFTFBFUl9ERUNMKG5hbWUp
IFwKKyAgICBleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfIyNuYW1lKEV4ZWNTdGF0
ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9s
b2d1ZSk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2Fs
bCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpOworTExJ
TlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hF
TFBFUl9ERUNMKHRyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2UpOworTExJ
TlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9m
dW5jdGlvbl9mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3NyKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpOworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJf
ZmlsZV9jaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNrKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0
ZV90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X25ld19hcnJheSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZlcik7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dy
ZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2luYyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcHJlX2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9p
bmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl90b19qc251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRl
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX211bCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9kaXYpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hp
ZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2JpdGFuZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3IpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Yml0bm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3R5cGVvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9pc19udW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9pc19mdW5jdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4pOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfc2tpcCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmVfd2l0aF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfaWQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9i
eV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2J5X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFs
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9n
ZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0
cnVlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2psZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qbmdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
Z3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfc3dpdGNoX2NoYXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfZnVuY19leHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY2FsbF92YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfc3RyY2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25leHRfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2Nv
cGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Ro
cm93KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wcm9maWxlX3dpbGxfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9k
aWRfY2FsbCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJ
bnRIZWxwZXJzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
bGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisjZGVmaW5lIExMSW50T2ZmbGluZUFz
bUNvbmZpZ19oCisKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBDUFUoWDg2KQorI2Rl
ZmluZSBPRkZMSU5FX0FTTV9YODYgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDAK
KyNlbmRpZgorCisjaWYgQ1BVKEFSTXY3KQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAxCisj
ZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UKKyNk
ZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUoQklH
X0VORElBTikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2RlZmlu
ZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKExMSU5UX09T
Ul9UT19KSVQpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVm
aW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhFQ1VU
SU9OX1RSQUNJTkcKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQorI2Vs
c2UKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisKKyNl
bmRpZiAvLyBMTEludE9mZmxpbmVBc21Db25maWdfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRl
ICJBbGxvY2F0aW9uU3BhY2UuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJF
eGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CisjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAi
SlNDZWxsLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0
YS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIK
KyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcu
aCIKKyNpbmNsdWRlICJKU3R5cGVJbmZvLmgiCisjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5o
IgorI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgi
CisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1
ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBP
RkZMSU5FX0FTTV9PRkZTRVRPRihjbGF6eiwgZmllbGQpIE9CSkVDVF9PRkZTRVRPRihjbGF6eiwg
ZmllbGQpCisKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvciB7CitwdWJsaWM6CisgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkKiBkdW1teSgpOworfTsKKworY29uc3QgdW5zaWduZWQqIExMSW50
T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKQoreworI2luY2x1ZGUgIkxMSW50RGVzaXJlZE9mZnNl
dHMuaCIKKyAgICByZXR1cm4gZXh0cmFjdG9yVGFibGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCitpbnQgbWFpbihpbnQsIGNoYXIqKikKK3sKKyAgICAvLyBPdXQgb2YgYW4gYWJ1bmRhbmNl
IG9mIGNhdXRpb24sIG1ha2Ugc3VyZSB0aGF0IExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXko
KSBpcyBsaXZlLAorICAgIC8vIGFuZCB0aGUgZXh0cmFjdG9yVGFibGUgaXMgbGl2ZSwgdG9vLgor
ICAgIHByaW50ZigiJXBcbiIsIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpKTsK
KyAgICByZXR1cm4gMDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisKKyNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5o
IgorI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVy
LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgdm9pZCAoKnRhcmdldCkoKSkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7Cisg
ICAgCisgICAgLy8gRklYTUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0
IG9uIFg4NiwgYnV0IEknbSBub3Qgc3VyZSBJIGNhcmUuCisgICAgaml0Lm1vdmUoSlNJbnRlcmZh
Y2VKSVQ6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSwgSlNJbnRl
cmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6cmVnVDApOwor
ICAgIAorICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZqaXQpOworICAg
IHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKK30KKworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxE
YXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
byhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dl
bmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0
QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAg
ICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7Cisg
ICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2V2YWxf
cHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtH
ZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0
ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKTsKK30K
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBM
TEludFRodW5rc19oCisjZGVmaW5lIExMSW50VGh1bmtzX2gKKworI2luY2x1ZGUgIk1hY3JvQXNz
ZW1ibGVyQ29kZVJlZi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRh
OworCituYW1lc3BhY2UgTExJbnQgeworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25G
b3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxE
YXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Ro
dW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0
aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0
YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpT
R2xvYmFsRGF0YSopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8v
IExMSW50VGh1bmtzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjM3NCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworCisjIENyYXNoIGNvdXJzZSBvbiB0aGUgbGFuZ3VhZ2UgdGhhdCB0aGlzIGlzIHdyaXR0ZW4g
aW4gKHdoaWNoIEkganVzdCBjYWxsCisjICJhc3NlbWJseSIgZXZlbiB0aG91Z2ggaXQncyBtb3Jl
IHRoYW4gdGhhdCk6CisjCisjIC0gTW9zdGx5IGdhcy1zdHlsZSBvcGVyYW5kIG9yZGVyaW5nLiBU
aGUgbGFzdCBvcGVyYW5kIHRlbmRzIHRvIGJlIHRoZQorIyAgIGRlc3RpbmF0aW9uLiBTbyAiYSA6
PSBiIiBpcyB3cml0dGVuIGFzICJtb3YgYiwgYSIuIEJ1dCB1bmxpa2UgZ2FzLAorIyAgIGNvbXBh
cmlzb25zIGFyZSBpbi1vcmRlciwgc28gImlmIChhIDwgYikiIGlzIHdyaXR0ZW4gYXMKKyMgICAi
YmlsdCBhLCBiLCAuLi4iLgorIworIyAtICJiIiA9IGJ5dGUsICJoIiA9IDE2LWJpdCB3b3JkLCAi
aSIgPSAzMi1iaXQgd29yZCwgInAiID0gcG9pbnRlci4KKyMgICBDdXJyZW50bHkgdGhpcyBpcyBq
dXN0IDMyLWJpdCBzbyAiaSIgYW5kICJwIiBhcmUgaW50ZXJjaGFuZ2VhYmxlCisjICAgZXhjZXB0
IHdoZW4gYW4gb3Agc3VwcG9ydHMgb25lIGJ1dCBub3QgdGhlIG90aGVyLgorIworIyAtIEluIGdl
bmVyYWwsIHZhbGlkIG9wZXJhbmRzIGZvciBtYWNybyBpbnZvY2F0aW9ucyBhbmQgaW5zdHJ1Y3Rp
b25zIGFyZQorIyAgIHJlZ2lzdGVycyAoZWcgInQwIiksIGFkZHJlc3NlcyAoZWcgIjRbdDBdIiks
IGJhc2UtaW5kZXggYWRkcmVzc2VzCisjICAgKGVnICI3W3QwLCB0MSwgMl0iKSwgYWJzb2x1dGUg
YWRkcmVzc2VzIChlZyAiMHhhMDAwMDAwMFtdIiksIG9yIGxhYmVscworIyAgIChlZyAiX2ZvbyIg
b3IgIi5mb28iKS4gTWFjcm8gaW52b2NhdGlvbnMgY2FuIGFsc28gdGFrZSBhbm9ueW1vdXMKKyMg
ICBtYWNyb3MgYXMgb3BlcmFuZHMuIEluc3RydWN0aW9ucyBjYW5ub3QgdGFrZSBhbm9ueW1vdXMg
bWFjcm9zLgorIworIyAtIExhYmVscyBtdXN0IGhhdmUgbmFtZXMgdGhhdCBiZWdpbiB3aXRoIGVp
dGhlciAiXyIgb3IgIi4iLiAgQSAiLiIgbGFiZWwKKyMgICBpcyBsb2NhbCBhbmQgZ2V0cyByZW5h
bWVkIGJlZm9yZSBjb2RlIGdlbiB0byBtaW5pbWl6ZSBuYW1lc3BhY2UKKyMgICBwb2xsdXRpb24u
IEEgIl8iIGxhYmVsIGlzIGFuIGV4dGVybiBzeW1ib2wgKGkuZS4gIi5nbG9ibCIpLiBUaGUgIl8i
CisjICAgbWF5IG9yIG1heSBub3QgYmUgcmVtb3ZlZCBkdXJpbmcgY29kZSBnZW4gZGVwZW5kaW5n
IG9uIHdoZXRoZXIgdGhlIGFzbQorIyAgIGNvbnZlbnRpb25zIGZvciBDIG5hbWUgbWFuZ2xpbmcg
b24gdGhlIHRhcmdldCBwbGF0Zm9ybSBtYW5kYXRlIGEgIl8iCisjICAgcHJlZml4LgorIworIyAt
IEEgIm1hY3JvIiBpcyBhIGxhbWJkYSBleHByZXNzaW9uLCB3aGljaCBtYXkgYmUgZWl0aGVyIGFu
b255bW91cyBvcgorIyAgIG5hbWVkLiBCdXQgdGhpcyBoYXMgY2F2ZWF0cy4gIm1hY3JvIiBjYW4g
dGFrZSB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLAorIyAgIHdoaWNoIG1heSBiZSBtYWNyb3Mgb3Ig
YW55IHZhbGlkIG9wZXJhbmRzLCBidXQgaXQgY2FuIG9ubHkgcmV0dXJuCisjICAgY29kZS4gQnV0
IHlvdSBjYW4gZG8gVHVyaW5nLWNvbXBsZXRlIHRoaW5ncyB2aWEgY29udGludWF0aW9uIHBhc3Np
bmcKKyMgICBzdHlsZTogIm1hY3JvIGZvbyAoYSwgYikgYihhKSBlbmQgZm9vKGZvbywgZm9vKSIu
IEFjdHVhbGx5LCBkb24ndCBkbworIyAgIHRoYXQsIHNpbmNlIHlvdSdsbCBqdXN0IGNyYXNoIHRo
ZSBhc3NlbWJsZXIuCisjCisjIC0gQW4gImlmIiBpcyBhIGNvbmRpdGlvbmFsIG9uIHNldHRpbmdz
LiBBbnkgaWRlbnRpZmllciBzdXBwbGllZCBpbiB0aGUKKyMgICBwcmVkaWNhdGUgb2YgYW4gImlm
IiBpcyBhc3N1bWVkIHRvIGJlIGEgI2RlZmluZSB0aGF0IGlzIGF2YWlsYWJsZQorIyAgIGR1cmlu
ZyBjb2RlIGdlbi4gU28geW91IGNhbid0IHVzZSAiaWYiIGZvciBjb21wdXRhdGlvbiBpbiBhIG1h
Y3JvLCBidXQKKyMgICB5b3UgY2FuIHVzZSBpdCB0byBzZWxlY3QgZGlmZmVyZW50IHBpZWNlcyBv
ZiBjb2RlIGZvciBkaWZmZXJlbnQKKyMgICBwbGF0Zm9ybXMuCisjCisjIC0gQXJndW1lbnRzIHRv
IG1hY3JvcyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIHJhdGhlciB0aGFuIGR5bmFtaWMgc2NvcGlu
Zy4KKyMgICBDb25zdCdzIGFsc28gZm9sbG93IGxleGljYWwgc2NvcGluZyBhbmQgbWF5IG92ZXJy
aWRlIChoaWRlKSBhcmd1bWVudHMKKyMgICBvciBvdGhlciBjb25zdHMuIEFsbCB2YXJpYWJsZXMg
KGFyZ3VtZW50cyBhbmQgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBvcGVyYW5kcy4g
QWRkaXRpb25hbGx5LCBhcmd1bWVudHMgKGJ1dCBub3QgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQK
KyMgICB0byBtYWNyb3MuCisKKworIyBUaGVzZSBkZWNsYXJhdGlvbnMgbXVzdCBtYXRjaCBpbnRl
cnByZXRlci9SZWdpc3RlckZpbGUuaC4KK2NvbnN0IENhbGxGcmFtZUhlYWRlclNpemUgPSA0OAor
Y29uc3QgQXJndW1lbnRDb3VudCA9IC00OAorY29uc3QgQ2FsbGVyRnJhbWUgPSAtNDAKK2NvbnN0
IENhbGxlZSA9IC0zMgorY29uc3QgU2NvcGVDaGFpbiA9IC0yNAorY29uc3QgUmV0dXJuUEMgPSAt
MTYKK2NvbnN0IENvZGVCbG9jayA9IC04CisKK2NvbnN0IFRoaXNBcmd1bWVudE9mZnNldCA9IC1D
YWxsRnJhbWVIZWFkZXJTaXplIC0gOAorCisjIERlY2xhcmUgc29tZSBhbGlhc2VzIGZvciB0aGUg
cmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAorCisjIE9mZnNldHMgbmVlZGVk
IGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRpb24uCitpZiBCSUdfRU5ESUFO
CisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSA0Citl
bHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSAw
CitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCitjb25zdCBJbnQzMlRh
ZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51bGxUYWcgPSAtMworY29uc3Qg
VW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQorY29uc3QgRW1wdHlWYWx1ZVRh
ZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29uc3QgTG93ZXN0VGFnID0gRGVs
ZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25zdCBTdHJpbmdUeXBlID0gNQor
Y29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFncyBjb25zdGFudHMuCitjb25zdCBN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVtZW50c0hhc0luc3RhbmNlID0g
MgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDgKKworIyBIZWFwIGFsbG9j
YXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0gMwor
CisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3QgRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNvbnN0YW50cy4KK2NvbnN0IEds
b2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0IEZ1bmN0aW9uQ29kZSA9IDIK
KworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0aGUgYXJndW1lbnQg
Y291bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRhZ09mZnNldAor
CisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25zdCBWZWN0b3JTaXplT2Zmc2V0
ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisjIFN0cmluZyBmbGFncy4KK2Nv
bnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxpdGllcworbWFjcm8gY3Jhc2go
KQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3ZlIDAsIHQwCisgICAgY2FsbCB0
MAorZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAgaWYgQVNTRVJUX0VOQUJMRUQK
KyAgICAgICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAgY3Jhc2goKQorICAgIC5vazoKKyAgICBl
bmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVzdGluYXRp
b25SZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJl
Z2lzdGVyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBvcCBkZXN0aW5hdGlvblJlZ2lzdGVyCisg
ICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIHJlc3RvcmVSZXR1
cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQorICAgIGlmIEFSTXY3CisgICAg
ICAgIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHB1c2gg
c291cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKwor
bWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQworICAgIGpt
cCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHBjT2Zmc2V0KQor
ICAgIGxzaGlmdGkgMiwgcGNPZmZzZXQKKyAgICBhZGRwIHBjT2Zmc2V0LCBQQworICAgIGptcCBb
UENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZzZXQpCisgICAgbG9hZGkgcGNP
ZmZzZXQsIHQwCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQwKQorZW5kCisKK21hY3Jv
IGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0
W2Nmcl0sIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBjQ2FsbDIoZnVuY3Rpb24sIGFy
ZzEsIGFyZzIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBt
b3ZlIGFyZzIsIHQxCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAorICAgICAg
ICBwb2tlIGFyZzIsIDEKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2Fs
bCBmdW5jdGlvbgorZW5kCisKKyMgVGhpcyBiYXJlbHkgd29ya3MuIGFyZzMgYW5kIGFyZzQgc2hv
dWxkIHByb2JhYmx5IGJlIGltbWVkaWF0ZXMuCittYWNybyBjQ2FsbDQoZnVuY3Rpb24sIGFyZzEs
IGFyZzIsIGFyZzMsIGFyZzQpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAor
ICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgICAgIG1vdmUgYXJnMywgdDIKKyAgICAgICAgbW92
ZSBhcmc0LCB0MworICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAg
cG9rZSBhcmcyLCAxCisgICAgICAgIHBva2UgYXJnMywgMgorICAgICAgICBwb2tlIGFyZzQsIDMK
KyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5k
CisKK21hY3JvIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMp
CisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVnZ2luZyBv
cGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVj
dGlvbiBzdHJlYW0uCittYWNybyB0cmFjZU9wZXJhbmQoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAg
IGNDYWxsNChfbGxpbnRfdHJhY2Vfb3BlcmFuZCwgY2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVyYW5k
KQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcg
b3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgdGhlIHZhbHVlIG9mIGFuIG9wZXJhbmQg
aW4gdGhlIGluc3RydWN0aW9uCisjIHN0cmVhbS4KK21hY3JvIHRyYWNlVmFsdWUoZnJvbVdoZXJl
LCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2VfdmFsdWUsIGNmciwgUEMsIGZyb21X
aGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisK
K21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAg
ICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkKKyAgICBlbmQKK2VuZAorCisjIENhbGwgYSBoZWxw
ZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3JvIGNhbGxDYWxsSGVscGVyKGFkdmFuY2UsIGhlbHBl
ciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDLCB0MAorICAgIHN0b3JlcCB0MCwg
QXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQ
QykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBhY3Rpb24odDApCitlbmQKKworbWFjcm8gc2xvd1Bh
dGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikKKyAgICBjYWxsQ2FsbEhlbHBlcigKKyAgICAgICAg
YWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAorICAgICAgICBtYWNybyAoY2FsbGVlKQorICAgICAg
ICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAg
ICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVQoaW5jcmVtZW50LCBhY3Rpb24p
CisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisg
ICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVy
W3QwXSwgLmNvbnRpbnVlCisgICAgICAgIGFjdGlvbigpCisgICAgLmNvbnRpbnVlOgorICAgIGVu
ZAorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBjaGVja1N3aXRj
aFRvSklUKAorICAgICAgICAxLAorICAgICAgICBtYWNybyAoKQorICAgICAgICAgICAgc3RvcmVp
IFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICAgICAgICAgIGNDYWxsMihf
bGxpbnRfbG9vcF9vc3IsIGNmciwgUEMpCisgICAgICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAg
ICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgICAgICBqbXAgdDAKKyAgICAgICAgLnJl
Y292ZXI6CisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0s
IFBDCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9n
dWUoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEwLAorICAgICAgICBtYWNybyAo
KQorICAgICAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVwbGFjZSkKKyAgICAgICAgZW5kKQor
ZW5kCisKK21hY3JvIGFzc2VydE5vdENvbnN0YW50KGluZGV4KQorICAgIGFzc2VydChtYWNybyAo
b2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBvayBlbmQpCitlbmQK
KworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMu
IEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShp
bmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwg
dGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAg
IGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2Fk
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhl
cmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0g
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9hZHAgVGFnT2Zmc2V0W3Bh
eWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBp
bmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQgbWF5
IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLiBJbmRleCBtYXkgYmUgY2xvYmJlcmVkLgorbWFjcm8gbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEg
aW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBU
YWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdGFnCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVn
aXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3RhZ10sIHRhZworICAgICMgVGhlcmUgaXMgYSBi
aXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFs
IHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxzaGlm
dGkgMywgaW5kZXgKKyAgICBhZGRwIGluZGV4LCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0
W3RhZ10sIHBheWxvYWQKKyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnCisuZG9uZToKK2Vu
ZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwg
dGFnQ2hlY2ssIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCwgLmNvbnN0YW50CisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhd
KQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBq
bXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9m
ZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJl
OiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtw
YXlsb2FkLCBpbmRleCwgOF0pCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRl
eCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQgbXVzdCBi
ZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QgbXV0YXRlZC4gVXNlCisjIHRoaXMg
aWYgeW91IGtub3cgd2hhdCB0aGUgdGFnIG9mIHRoZSB2YXJpYWJsZSBzaG91bGQgYmUuIERvaW5n
IHRoZSB0YWcKKyMgdGVzdCBhcyBwYXJ0IG9mIGxvYWRpbmcgdGhlIHZhcmlhYmxlIHJlZHVjZXMg
cmVnaXN0ZXIgdXNlLCBidXQgbWF5IG5vdAorIyBiZSBmYXN0ZXIgdGhhbiBkb2luZyBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlIGZvbGxvd2VkIGJ5IGEgYnJhbmNoIG9uIHRoZQorIyB0YWcuCittYWNy
byBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxv
YWQsIHNsb3cpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCisg
ICAgICAgIGluZGV4LAorICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBiaW5lcSBhY3R1YWxUYWcs
IGV4cGVjdGVkVGFnLCBzbG93IGVuZCwKKyAgICAgICAgcGF5bG9hZCkKK2VuZAorCittYWNybyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZChpbmRleCwgcGF5bG9hZCkKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgKKyAgICAgICAgaW5kZXgs
CisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGVuZCwKKyAgICAgICAgcGF5bG9hZCkKK2VuZAor
CittYWNybyB3cml0ZUJhcnJpZXIodGFnLCBwYXlsb2FkKQorICAgICMgTm90aGluZyB0byBkbyBz
aW5jZSB3ZSBkb24ndCBoYXZlIGEgZ2VuZXJhdGlvbmFsIG9yIGluY3JlbWVudGFsIGNvbGxlY3Rv
ci4KK2VuZAorCittYWNybyB2YWx1ZVByb2ZpbGUodGFnLCBwYXlsb2FkLCBwcm9maWxlKQorICAg
IHN0b3JlaSB0YWcsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3Byb2ZpbGVd
CisgICAgc3RvcmVpIHBheWxvYWQsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9m
ZnNldFtwcm9maWxlXQorZW5kCisKKworIyBJbmRpY2F0ZSB0aGUgYmVnaW5uaW5nIG9mIExMSW50
LgorX2xsaW50X2JlZ2luOgorICAgIGNyYXNoKCkKKworCisjIEVudHJ5cG9pbnRzIGludG8gdGhl
IGludGVycHJldGVyCisKK21hY3JvIGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlcih0YXJn
ZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBs
b2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdp
c3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsW3Rh
cmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkZvckNv
bnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVb
Y2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVb
dGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdp
c3RlcgorZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lz
dGVyKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21h
Y3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgIHN0b3JlcCBz
b3VyY2VSZWdpc3RlciwgQ29kZUJsb2NrW2Nmcl0KK2VuZAorCittYWNybyBub3RGdW5jdGlvbkNv
ZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAgICAjIE5vdGhpbmcgdG8gZG8hCitlbmQK
KworIyBEbyB0aGUgYmFyZSBtaW5pbXVtIHJlcXVpcmVkIHRvIGV4ZWN1dGUgY29kZS4gU2V0cyB1
cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2RlQmxvY2sqCisjIGluIHQxLiBNYXkgYWxzbyB0cmlnZ2Vy
IHByb2xvZ3VlIGVudHJ5IE9TUi4KK21hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29k
ZUJsb2NrU2V0dGVyLCBvc3JIZWxwZXIsIHRyYWNlSGVscGVyKQorICAgIHByZXNlcnZlUmV0dXJu
QWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgY2FsbCBmcmFtZSBh
bmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KKyAgICBzdG9yZXAgdDIsIFJldHVyblBDW2Nmcl0K
KyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKHRyYWNlSGVscGVy
KQorICAgIGVuZAorICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICBpZiBKSVRfRU5BQkxFRAor
ICAgICAgICBiYWRkaXMgNSwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJbdDFdLCAu
Y29udGludWUKKyAgICAgICAgY0NhbGwyKG9zckhlbHBlciwgY2ZyLCBQQykKKyAgICAgICAgbW92
ZSB0MSwgY2ZyCisgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgIGxvYWRwIFJldHVy
blBDW2Nmcl0sIHQyCisgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQy
KQorICAgICAgICBqbXAgdDAKKyAgICAucmVjb3ZlcjoKKyAgICAgICAgY29kZUJsb2NrR2V0dGVy
KHQxKQorICAgIC5jb250aW51ZToKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tTZXR0ZXIodDEpCisg
ICAgCisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVj
dGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3Ry
dWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCitlbmQKKworIyBFeHBlY3RzIHRo
YXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJl
aGluZC4KKyMgTXVzdCBjYWxsIGRpc3BhdGNoKDApIGFmdGVyIGNhbGxpbmcgdGhpcy4KK21hY3Jv
IGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1NraXApCisgICAgIyBQcm9maWxlIHRo
ZSBhcmd1bWVudHMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hvaWNlIGJ1dCB0byBkbyB0
aGlzLiBUaGlzCisgICAgIyBjb2RlIGlzIHByZXR0eSBob3JyZW5kb3VzIGJlY2F1c2Ugb2YgdGhl
IGRpZmZlcmVuY2UgaW4gb3JkZXJpbmcgYmV0d2VlbgorICAgICMgYXJndW1lbnRzIGFuZCB2YWx1
ZSBwcm9maWxlcywgdGhlIGRlc2lyZSB0byBoYXZlIGEgc2ltcGxlIGxvb3AtZG93bi10by16ZXJv
CisgICAgIyBsb29wLCBhbmQgdGhlIGRlc2lyZSB0byB1c2Ugb25seSB0aHJlZSByZWdpc3RlcnMg
c28gYXMgdG8gcHJlc2VydmUgdGhlIFBDIGFuZAorICAgICMgdGhlIGNvZGUgYmxvY2suIEl0IGlz
IGxpa2VseSB0aGF0IHRoaXMgY29kZSBzaG91bGQgYmUgcmV3cml0dGVuIGluIGEgbW9yZQorICAg
ICMgb3B0aW1hbCB3YXkgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBoYXZlIG1vcmUgdGhhbiBmaXZl
IHJlZ2lzdGVycyBhdmFpbGFibGUKKyAgICAjIGZvciBhcmJpdHJhcnkgdXNlIGluIHRoZSBpbnRl
cnByZXRlci4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIHQwCisg
ICAgYWRkaSAtcHJvZmlsZUFyZ1NraXAsIHQwICMgVXNlIGFkZGkgYmVjYXVzZSB0aGF0J3Mgd2hh
dCBoYXMgdGhlIHBlZXBob2xlCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHQwLCAwLCBv
ayBlbmQpCisgICAgYnRpeiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QxXSwg
dDMKKyAgICBtdWxpIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0MiAjIEFhYWFhaGhoaCEgTmVl
ZCBzdHJlbmd0aCByZWR1Y3Rpb24hCisgICAgbmVnaSB0MAorICAgIGxzaGlmdGkgMywgdDAKKyAg
ICBhZGRwIHQyLCB0MworLmFyZ3VtZW50UHJvZmlsZUxvb3A6CisgICAgbG9hZGkgVGhpc0FyZ3Vt
ZW50T2Zmc2V0ICsgVGFnT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwg
dDIKKyAgICBzdWJwIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQzCisgICAgc3RvcmVpIHQyLCBwcm9m
aWxlQXJnU2tpcCAqIHNpemVvZiBWYWx1ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0
cyArIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2Fk
T2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkg
dDIsIHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVlUHJvZmlsZTo6
bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBiYWRkaW56IDgsIHQwLCAuYXJndW1l
bnRQcm9maWxlTG9vcAorLmFyZ3VtZW50UHJvZmlsZURvbmU6CisgICAgCisgICAgIyBDaGVjayBz
dGFjayBoZWlnaHQuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lzdGVyc1t0
MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MgorICAgIGxv
YWRwIEpTR2xvYmFsRGF0YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MiAgICMgRklYTUU6IENhbiBnZXQg
dG8gdGhlIFJlZ2lzdGVyRmlsZSBmcm9tIHRoZSBKSVRTdGFja0ZyYW1lCisgICAgbHNoaWZ0aSAz
LCB0MAorICAgIGFkZHAgdDAsIGNmciwgdDAKKyAgICBicGFlcSBJbnRlcnByZXRlcjo6bV9yZWdp
c3RlckZpbGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCisK
KyAgICAjIFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBoZWxwZXIu
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVjaykKKy5zdGFja0hlaWdo
dE9LOgorZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMg
d2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCittYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2so
ZG9uZUxhYmVsLCBoZWxwZXIpCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291
bnRbY2ZyXSwgdDAKKyAgICBiaWVxIHQwLCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0s
IGRvbmVMYWJlbAorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpICAgIyBUaGlzIGhlbHBlciBo
YXMgYSBzaW1wbGUgcHJvdG9jb2w6IHQwID0gMCA9PiBubyBlcnJvciwgdDAgIT0gMCA9PiBlcnJv
cgorICAgIG1vdmUgdDEsIGNmcgorICAgIGJ0aXogdDAsIC5jb250aW51ZQorICAgIGxvYWRwIEpJ
VFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6
Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1h
Y2hpbmVQQ0ZvclRocm93W3QxXQorLmNvbnRpbnVlOgorICAgICMgUmVsb2FkIENvZGVCbG9jayBh
bmQgUEMsIHNpbmNlIHRoZSBoZWxwZXIgY2xvYmJlcmVkIGl0LgorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAor
ICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0aW9ucyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFt0MF0sIFBDCisgICAgam1wIGRvbmVMYWJlbAorZW5kCisKK19sbGludF9w
cm9ncmFtX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVy
LCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3Ry
YWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2V2YWxfcHJvbG9ndWU6
CisgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisg
ICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWU6Cisg
ICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVC
bG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCwgX2xsaW50X3Ry
YWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQorLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luOgor
ICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKKyAgICBkaXNwYXRjaCgwKQorICAgIAorCitf
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShmdW5j
dGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIs
IF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCwgX2xsaW50X3RyYWNlX3By
b2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCisuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdp
bjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCisgICAgZGlzcGF0Y2goMCkKKyAgICAK
KworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1
bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9s
bGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNl
X2FyaXR5Q2hlY2tfZm9yX2NhbGwpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZv
ckNhbGxCZWdpbiwgX2xsaW50X2hlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCisKKworX2xsaW50X2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25G
b3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxp
bnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaywgX2xsaW50X3Ry
YWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1
bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9sbGludF9oZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hl
Y2spCisKKyMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25zCisKK19sbGludF9vcF9lbnRlcjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAg
bG9hZGkgQ29kZUJsb2NrOjptX251bVZhcnNbdDJdLCB0MgorICAgIGJ0aXogdDIsIC5vcEVudGVy
RG9uZQorICAgIG1vdmUgVW5kZWZpbmVkVGFnLCB0MAorICAgIG1vdmUgMCwgdDEKKy5vcEVudGVy
TG9vcDoKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0Miwg
OF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBidGlueiB0
MiwgLm9wRW50ZXJMb29wCisub3BFbnRlckRvbmU6CisgICAgZGlzcGF0Y2goMSkKKworCitfbGxp
bnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRh
ZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
Y3JlYXRlX2FjdGl2YXRpb24pCisub3BDcmVhdGVBY3RpdmF0aW9uRG9uZToKKyAgICBkaXNwYXRj
aCgyKQorCisKK19sbGludF9vcF9pbml0X2xhenlfcmVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jcmVhdGVfYXJndW1lbnRzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKKy5vcENyZWF0ZUFyZ3VtZW50
c0RvbmU6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qo
c2l6ZUNsYXNzSW5kZXgsIGNsYXNzSW5mb09mZnNldCwgc3RydWN0dXJlLCByZXN1bHQsIHNjcmF0
Y2gxLCBzY3JhdGNoMiwgc2xvd0Nhc2UpCisgICAgY29uc3Qgb2Zmc2V0T2ZNeVNpemVDbGFzcyA9
IEpTR2xvYmFsRGF0YTo6aGVhcCArIEhlYXA6Om1fb2JqZWN0U3BhY2UgKyBBbGxvY2F0aW9uU3Bh
Y2U6Om1fbWFya2VkU3BhY2UgKyBNYXJrZWRTcGFjZTo6bV9wcmVjaXNlU2l6ZUNsYXNzZXMgKyBz
aXplQ2xhc3NJbmRleCAqIHNpemVvZiBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzCisgICAgCisgICAg
IyBGSVhNRTogd2UgY2FuIGdldCB0aGUgZ2xvYmFsIGRhdGEgaW4gb25lIGxvYWQgZnJvbSB0aGUg
c3RhY2suCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gxCisgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2dsb2JhbERhdGFbc2NyYXRjaDFdLCBzY3JhdGNoMQorICAgIAorICAgICMgR2V0
IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LiAgICAKKyAgICBsb2FkcCBvZmZzZXRPZk15
U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtzY3JhdGNo
MV0sIHJlc3VsdAorICAgIGJ0cHogcmVzdWx0LCBzbG93Q2FzZQorICAgIAorICAgICMgUmVtb3Zl
IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LgorICAgIGxvYWRwIFtyZXN1bHRdLCBzY3Jh
dGNoMgorICAgIHN0b3JlcCBzY3JhdGNoMiwgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNw
YWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdCisKKyAgICAjIEluaXRpYWxp
emUgdGhlIG9iamVjdC4KKyAgICBsb2FkcCBjbGFzc0luZm9PZmZzZXRbc2NyYXRjaDFdLCBzY3Jh
dGNoMgorICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3VsdF0KKyAgICBzdG9yZXAgc3RydWN0dXJl
LCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0KKyAgICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1f
aW5oZXJpdG9ySURbcmVzdWx0XQorICAgIGFkZHAgc2l6ZW9mIEpTT2JqZWN0LCByZXN1bHQsIHNj
cmF0Y2gxCisgICAgc3RvcmVwIHNjcmF0Y2gxLCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2Vb
cmVzdWx0XQorZW5kCisKK19sbGludF9vcF9jcmVhdGVfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAg
YmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDcmVhdGVUaGlzU2xvdwor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX3R5cGVbdDFdLCBPYmplY3RUeXBlLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGxv
YWRwIEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3QwXSwgdDIKKyAgICBidHB6IHQyLCAub3BDcmVh
dGVUaGlzU2xvdworICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNs
YXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywgdDIsIHQwLCB0
MSwgdDMsIC5vcENyZWF0ZVRoaXNTbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3Jl
aSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BDcmVhdGVUaGlzU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX3RoaXMpCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfZ2V0X2NhbGxlZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldCArIENhbGxlZVtjZnJdLCB0
MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkg
dDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9jb252ZXJ0X3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENd
LCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ29udmVy
dFRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIE9iamVjdFR5cGUsIC5vcENvbnZlcnRUaGlz
U2xvdworICAgIGRpc3BhdGNoKDIpCisKKy5vcENvbnZlcnRUaGlzU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfY29udmVydF90aGlzKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xs
aW50X29wX25ld19vYmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0
MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0dXJlW3QwXSwg
dDEKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4
LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIHQxLCB0MCwgdDIsIHQzLCAu
b3BOZXdPYmplY3RTbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BOZXdPYmplY3RTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfb2JqZWN0KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xs
aW50X29wX25ld19hcnJheToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX25ld19hcnJheSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9u
ZXdfYXJyYXlfYnVmZmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfbmV3X2FycmF5X2J1ZmZlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9uZXdfcmVnZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfbmV3X3JlZ2V4cCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9t
b3Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBz
dG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25vdDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10s
IHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDIsIHQzKQorICAgIGJpbmVxIHQy
LCBCb29sZWFuVGFnLCAub3BOb3RTbG93CisgICAgeG9yaSAxLCB0MworICAgIHN0b3JlaSB0Miwg
VGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wTm90U2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfbm90KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2VxOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10s
IHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAub3BFcVNs
b3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BFcVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRh
ZywgLm9wRXFTbG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2llcSB0MCwgdDEsIHQwCisg
ICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEVxU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZXEpCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcEVxTnVsbEltbWVk
aWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRibnogU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkLCB0MQorICAgIGptcCAub3BFcU51bGxOb3RJbW1lZGlhdGUKKy5vcEVxTnVsbElt
bWVkaWF0ZToKKyAgICBjaWVxIHQxLCBOdWxsVGFnLCB0MgorICAgIGNpZXEgdDEsIFVuZGVmaW5l
ZFRhZywgdDEKKyAgICBvcmkgdDIsIHQxCisub3BFcU51bGxOb3RJbW1lZGlhdGU6CisgICAgc3Rv
cmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5
bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25l
cToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0Mywg
Lm9wTmVxU2xvdworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcE5lcVNsb3cKKyAgICBiaWIgdDIs
IExvd2VzdFRhZywgLm9wTmVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpbmVxIHQw
LCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkK
KworLm9wTmVxU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmVxKQorICAgIGRp
c3BhdGNoKDQpCisgICAgCisKK19sbGludF9vcF9uZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0
Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxU
YWcsIC5vcE5lcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDEKKyAgICB0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQorICAgIGptcCAub3BOZXFOdWxsTm90SW1t
ZWRpYXRlCisub3BOZXFOdWxsSW1tZWRpYXRlOgorICAgIGNpbmVxIHQxLCBOdWxsVGFnLCB0Mgor
ICAgIGNpbmVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgYW5kaSB0MiwgdDEKKy5vcE5lcU51
bGxOb3RJbW1lZGlhdGU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQz
LCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3Bh
dGNoKDMpCisKKworbWFjcm8gc3RyaWN0RXEoZXF1YWxpdHlPcGVyYXRpb24sIGhlbHBlcikKKyAg
ICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQw
LCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAuc2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFn
LCAuc2xvdworICAgIGJpbmVxIHQyLCBDZWxsVGFnLCAubm90U3RyaW5nCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MV0sIHQzCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlw
ZVt0Ml0sIFN0cmluZ1R5cGUsIC5ub3RTdHJpbmcKKyAgICBiYmVxIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDNdLCBTdHJpbmdUeXBlLCAuc2xvdworLm5vdFN0cmlu
ZzoKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIHQw
KQorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9y
ZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisuc2xv
dzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCg0KQorZW5kCisKK19sbGlu
dF9vcF9zdHJpY3RlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc3RyaWN0RXEobWFjcm8g
KGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGlu
dF9oZWxwZXJfc3RyaWN0ZXEpCisKKworX2xsaW50X29wX25zdHJpY3RlcToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpbmVx
IGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVscGVyX25zdHJpY3RlcSkKKworCitf
bGxpbnRfb3BfbGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2xlc3MpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbGVzc2VxOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzc2Vx
KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dyZWF0ZXI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX2dyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dyZWF0ZXJlcSkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9wcmVfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQ
cmVJbmNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBi
YWRkaW8gMSwgdDEsIC5vcFByZUluY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVJbmNTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfaW5jKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50
X29wX3ByZV9kZWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZURlY1Nsb3cK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJzdWJpbyAxLCB0
MSwgLm9wUHJlRGVjU2xvdworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcFByZURlY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3ByZV9kZWMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9zdF9p
bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRp
IDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5v
cFBvc3RJbmNTbG93CisgICAgYmllcSB0MCwgdDEsIC5vcFBvc3RJbmNEb25lCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBtb3ZlIHQyLCB0MworICAgIGJhZGRp
byAxLCB0MywgLm9wUG9zdEluY1Nsb3cKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAg
IHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorLm9wUG9zdEluY0RvbmU6Cisg
ICAgZGlzcGF0Y2goMykKKworLm9wUG9zdEluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3Bvc3RfaW5jKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Bvc3RfZGVj
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0
W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQ
b3N0RGVjU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0RGVjRG9uZQorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBic3ViaW8g
MSwgdDMsIC5vcFBvc3REZWNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBz
dG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3REZWNEb25lOgorICAg
IGRpc3BhdGNoKDMpCisKKy5vcFBvc3REZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9wb3N0X2RlYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF90b19qc251bWJl
cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkg
NFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDIsIHQzKQorICAgIGJp
ZXEgdDIsIEludDMyVGFnLCAub3BUb0pzbnVtYmVySXNJbnQKKyAgICBiaWFlcSB0MiwgRW1wdHlW
YWx1ZVRhZywgLm9wVG9Kc251bWJlclNsb3cKKy5vcFRvSnNudW1iZXJJc0ludDoKKyAgICBzdG9y
ZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvSnNudW1iZXJTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19qc251bWJlcikKKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9uZWdhdGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhb
UENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDAsIHQxLCB0MikKKyAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcE5lZ2F0ZVNyY05vdEludAor
ICAgIGJ0aXogdDIsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0ZVNsb3cKKyAgICBuZWdpIHQyCisgICAg
c3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorLm9wTmVnYXRlU3JjTm90
SW50OgorICAgIGJpYSB0MSwgTG93ZXN0VGFnLCAub3BOZWdhdGVTbG93CisgICAgeG9yaSAweDgw
MDAwMDAwLCB0MQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3Rv
cmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9w
TmVnYXRlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmVnYXRlKQorICAgIGRp
c3BhdGNoKDMpCisKKworbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZShpbnRlZ2VyT3BlcmF0aW9u
QW5kU3RvcmUsIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0Mywg
dDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5l
cSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5vcDJO
b3RJbnQKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUo
dDMsIHQxLCB0MCwgLnNsb3csIHQyKQorICAgIGRpc3BhdGNoKDUpCisKKy5vcDFOb3RJbnQ6Cisg
ICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90IGFuIGludCwgdGhlIHNlY29uZCBv
cGVyYW5kIGNvdWxkIGJlIGFueXRoaW5nLgorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xvdwor
ICAgIGJpYiB0MywgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisgICAgYmluZXEgdDMs
IEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDEsIGZ0MQorICAgIGptcCAub3AxTm90SW50UmVh
ZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDEsIHQzLCBmdDEKKy5vcDFOb3RJ
bnRSZWFkeToKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBmaWkyZCB0MCwgdDIsIGZ0MAorICAg
IGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MSwgOF0K
KyAgICBkaXNwYXRjaCg1KQorCisub3AyTm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBk
ZWZpbml0ZWx5IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90Lgor
ICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGJpYSB0MywgTG93ZXN0VGFnLCAuc2xvdworICAgIGNp
MmQgdDAsIGZ0MAorICAgIGZpaTJkIHQxLCB0MywgZnQxCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0
MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDUpCisK
Ky5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDUpCitlbmQKKwor
bWFjcm8gYmluYXJ5T3AoaW50ZWdlck9wZXJhdGlvbiwgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIp
CisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0
LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKGxlZnQs
IHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2Zy
LCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIs
IGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVy
KQorZW5kCisKK19sbGludF9vcF9hZGQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFy
eU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJhZGRpbyBsZWZ0LCByaWdo
dCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgYWRkZCBsZWZ0LCByaWdo
dCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYWRkKQorCisKK19sbGludF9vcF9tdWw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1h
Y3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgY29u
c3Qgc2NyYXRjaCA9IGludDMyVGFnICAgIyBXZSBrbm93IHRoYXQgd2UgY2FuIHJldXNlIHRoZSBp
bnQzMlRhZyByZWdpc3RlciBzaW5jZSBpdCBoYXMgYSBjb25zdGFudC4KKyAgICAgICAgICAgIG1v
dmUgcmlnaHQsIHNjcmF0Y2gKKyAgICAgICAgICAgIGJtdWxpbyBsZWZ0LCBzY3JhdGNoLCBzbG93
CisgICAgICAgICAgICBidGlueiBzY3JhdGNoLCAuZG9uZQorICAgICAgICAgICAgYmlsdCBsZWZ0
LCAwLCAuc2xvdworICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgLnNsb3cKKyAgICAgICAgLmRv
bmU6CisgICAgICAgICAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4
XQorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwg
OF0KKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIG11bGQgbGVmdCwg
cmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX211bCkKKworCitfbGxpbnRfb3Bfc3Vi
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCBzbG93KSBic3ViaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQpIHN1YmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRf
aGVscGVyX3N1YikKKworCitfbGxpbnRfb3BfZGl2OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJp
Z2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGNpMmQgbGVmdCwgZnQwCisgICAgICAgICAg
ICBjaTJkIHJpZ2h0LCBmdDEKKyAgICAgICAgICAgIGRpdmQgZnQwLCBmdDEKKyAgICAgICAgICAg
IGJjZDJpIGZ0MSwgcmlnaHQsIC5ub3RJbnQKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywg
VGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxv
YWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIGptcCAuZG9uZQorICAgICAgICAu
bm90SW50OgorICAgICAgICAgICAgc3RvcmVkIGZ0MSwgW2NmciwgaW5kZXgsIDhdCisgICAgICAg
IC5kb25lOgorICAgICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgZGl2ZCBs
ZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfZGl2KQorCisKK19sbGludF9v
cF9tb2Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9tb2QpCisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBiaXRPcChvcGVyYXRpb24sIGhlbHBl
ciwgYWR2YW5jZSkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdwor
ICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBv
cGVyYXRpb24odDEsIHQwLCAuc2xvdykKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQy
LCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3Bh
dGNoKGFkdmFuY2UpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3Bh
dGNoKGFkdmFuY2UpCitlbmQKKworX2xsaW50X29wX2xzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0
aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbHNoaWZ0LAorICAgICAg
ICA0KQorCisKK19sbGludF9vcF9yc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJp
dE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkgbGVmdCwgcmln
aHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3JzaGlmdCwKKyAgICAgICAgNCkKKworCitf
bGxpbnRfb3BfdXJzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQs
IHJpZ2h0CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAgIGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl91cnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF9i
aXRhbmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHNsb3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRf
aGVscGVyX2JpdGFuZCwKKyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0eG9yOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBz
bG93KSB4b3JpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXR4b3Is
CisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBvcmkgbGVmdCwg
cmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdG9yLAorICAgICAgICA1KQorCisK
K19sbGludF9vcF9iaXRub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEs
IHQyLCB0MykKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcEJpdG5vdFNsb3cKKyAgICBub3Rp
IHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BCaXRub3RT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9iaXRub3QpCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MSwgQ2VsbFRhZywgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93KQorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZv
ICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNr
SGFzSW5zdGFuY2VTbG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ2hlY2tIYXNJbnN0YW5jZVNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbnN0YW5jZW9mOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICAjIENoZWNrIHRoYXQgYmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhh
c0luc3RhbmNlIGJlaGF2aW9yLgorICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0
ZWQuCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkVW5jaGVja2VkKHQxLCB0MCkKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwg
dDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3Qw
XSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICAK
KyAgICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICBs
b2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2Vs
bFRhZywgdDEsIC5vcEluc3RhbmNlb2ZTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDFdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90
eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5v
cEluc3RhbmNlb2ZTbG93KQorICAgIAorICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90
eXBlLCB0MiA9IHZhbHVlCisgICAgbW92ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxvb3A6CisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCisgICAgbG9hZGkgU3RydWN0dXJlOjpt
X3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDJdLCB0MgorICAgIGJwZXEgdDIsIHQxLCAub3BJ
bnN0YW5jZW9mRG9uZQorICAgIGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcAorCisgICAgbW92
ZSAwLCB0MAorLm9wSW5zdGFuY2VvZkRvbmU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09m
ZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4
XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEluc3RhbmNlb2ZTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9pbnN0YW5jZW9mKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29w
X3R5cGVvZjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3R5cGVvZikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc191bmRlZmluZWQ6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc191
bmRlZmluZWQpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfYm9vbGVhbjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Jvb2xl
YW4pCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfbnVtYmVyOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfbnVtYmVyKQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3N0cmluZykKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9pc19vYmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19vYmplY3QpCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfaXNfZnVuY3Rpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9pc19mdW5jdGlvbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9pbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2luKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29sdmU6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlKQor
ICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29sdmVfc2tpcDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfc2tpcCkKKyAg
ICBkaXNwYXRjaCg1KQorCisKK21hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKKyAgICAj
IE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3Ig
dGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIFByb3BlcnR5IGlkZW50aWZpZXIgaW5kZXggaW4gdGhl
IGNvZGUgYmxvY2suCisgICAgIyAxMltQQ10gIFN0cnVjdHVyZSBwb2ludGVyLCBpbml0aWFsaXpl
ZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAgICAjIDE2W1BDXSAgT2Zmc2V0IGluIGds
b2JhbCBvYmplY3QsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxP
YmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAg
IGJwbmVxIHQxLCAxMltQQ10sIHNsb3cKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAg
SlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRb
dDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQzCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0K
KyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAoc2l6
ZSAtIDEpICogNFtQQ10sIHQwCisgICAgdmFsdWVQcm9maWxlKHQyLCB0MywgdDApCitlbmQKKwor
X2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICByZXNv
bHZlR2xvYmFsKDYsIC5vcFJlc29sdmVHbG9iYWxTbG93KQorICAgIGRpc3BhdGNoKDYpCisKKy5v
cFJlc29sdmVHbG9iYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZl
X2dsb2JhbCkKKyAgICBkaXNwYXRjaCg2KQorCisKKyMgR2l2ZXMgeW91IHRoZSBzY29wZSBpbiB0
MCwgd2hpbGUgYWxsb3dpbmcgeW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlvbmFsIGNo
ZWNrcyBvbiB0aGUKKyMgc2NvcGVzIGFzIHRoZXkgYXJlIHRyYXZlcnNlZC4gc2NvcGVDaGVjaygp
IGlzIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSByZWdpc3RlcgorIyBob2xkaW5nIHRo
ZSBzY29wZSwgYW5kIGEgcmVnaXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc2NyYXRjaC4gTm90
ZSB0aGF0IHRoaXMgZG9lcyBub3QKKyMgdXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQgc3R1ZmYgaW4g
dDMgaWYgbmVlZCBiZS4KK21hY3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2Nv
cGVDaGVjaykKKyAgICBsb2FkcCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAor
ICAgIGxvYWRpIGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAu
ZG9uZQorICAgIAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGJpbmVxIENvZGVC
bG9jazo6bV9jb2RlVHlwZVt0MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AKKyAgICBidGJ6IENvZGVC
bG9jazo6bV9uZWVkc0Z1bGxTY29wZUNoYWluW3QxXSwgLmxvb3AKKyAgICAKKyAgICBsb2FkaSBD
b2RlQmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEKKworICAgICMgTmVlZCB0byBj
b25kaXRpb25hbGx5IHNraXAgb3ZlciBvbmUgc2NvcGUuCisgICAgYmllcSBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2YXRpb24KKyAgICBzY29wZUNoZWNrKHQw
LCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisubm9BY3RpdmF0
aW9uOgorICAgIHN1YmkgMSwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorLmxvb3A6Cisg
ICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBd
LCB0MAorICAgIHN1YmkgMSwgdDIKKyAgICBidGlueiB0MiwgLmxvb3AKKworLmRvbmU6CitlbmQK
KworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRw
IEpTR2xvYmFsRGF0YTo6YWN0aXZhdGlvblN0cnVjdHVyZVt0M10sIHQzCisgICAgZ2V0U2NvcGUo
CisgICAgICAgIDIwW1BDXSwKKyAgICAgICAgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKQorICAgICAg
ICAgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0Y2gKKyAgICAg
ICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZl
R2xvYmFsRHluYW1pY1N1cGVyU2xvdworICAgICAgICBlbmQpCisgICAgcmVzb2x2ZUdsb2JhbCg3
LCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3cpCisgICAgZGlzcGF0Y2goNykKKworLm9wUmVz
b2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCisgICAgZGlzcGF0Y2goNykKKwor
Lm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQorICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29w
X2dldF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIE9wZXJhbmRzIGFy
ZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisg
ICAgIyA4W1BDXSAgIEluZGV4IG9mIHJlZ2lzdGVyIGluIHRoZSBzY29wZS4KKyAgICAjIDEyW1BD
XSAgRGUgQnJ1aWppbiBpbmRleC4KKyAgICBnZXRTY29wZSgxMltQQ10sIG1hY3JvIChzY29wZSwg
c2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0Mgor
ICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFy
aWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAs
IHQyLCA4XSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0sIHQwCisgICAg
c3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxl
KHQzLCB0MCwgdDEpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfcHV0X3Njb3BlZF92
YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGdldFNjb3BlKDhbUENdLCBtYWNybyAoc2Nv
cGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MSwgdDMsIHQyKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHdyaXRlQmFy
cmllcih0MywgdDIpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisg
ICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIHN0b3Jl
aSB0MywgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
dDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFy
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0
W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9y
ZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDEKKyAgICBzdG9yZWkgdDIsIFRhZ09m
ZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4
XQorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MykKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9h
ZHAgSlNHbG9iYWxPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJy
aWVyKHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9yZXNvbHZlX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2Jhc2UpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxp
bnRfb3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX2Jhc2U6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkK
KyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfdGhpczoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0
aF90aGlzKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBj
YWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQorICAgICMgb3Bjb2RlLiBX
ZSBkbywgaG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBm
YWlscywgc2luY2UKKyAgICAjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBs
dWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCisgICAgIyB0byB0YWtlIGZhc3Qg
cGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2gg
aXMgd2hhdAorICAgICMgd2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBsb2FkaSAy
MFtQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAK
KyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93Cisg
ICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0Ml0sIHQzCisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDJdLCB0MgorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgbG9hZGkgMzJbUENdLCB0MQorICAgIHZhbHVlUHJvZmlsZSh0MywgdDIsIHQxKQorICAgIGRp
c3BhdGNoKDkpCisKKy5vcEdldEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9nZXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOSkKKworCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50
c19sZW5ndGg6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlW
YWx1ZVRhZywgLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdworICAgIGxvYWRpIEFyZ3VtZW50Q291
bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQyCisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSBJ
bnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QXJndW1lbnRzTGVuZ3Ro
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlk
U2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVy
dHlTdG9yYWdlW3QwXSwgdDMKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEs
IC5vcFB1dEJ5SWRTbG93CisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUyUmVnKHQyLCB0MCwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQwLCB0MikKKyAgICBz
dG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDFdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0
W3QzLCB0MV0KKyAgICBkaXNwYXRjaCg5KQorCisub3BQdXRCeUlkU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X2lkKQorICAgIGRpc3BhdGNoKDkpCisKKworbWFjcm8g
cHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcykKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisg
ICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9wUHV0QnlJ
ZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3Bl
cnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYWRkcCB0MSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZyh0MiwgdDEsIHQyKQorICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgc3Rv
cmVpIHQxLCBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgMjRbUENdLCB0MQorICAgIHN0b3JlaSB0
MiwgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdCisgICAgZGlzcGF0Y2goOSkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0OgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNj
cmF0Y2gsIHNsb3cpIGVuZCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAorICAgICAgICBtYWNybyAob2xkU3RydWN0dXJl
LCBzY3JhdGNoLCBzbG93KQorICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0
dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bwor
ICAgICAgICAKKyAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAorICAgICAgICAgICAg
YXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgICAgICAgICAgbG9h
ZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgICAgICAg
ICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBi
aWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVs
bFRhZywgLmRvbmUKKyAgICAgICAgLmxvb3A6CisgICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6
Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAg
ICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0
dXJlCisgICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdworICAg
ICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCisgICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1f
cHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisgICAg
ICAgIC5kb25lOgorICAgICAgICBlbmQpCisKKworX2xsaW50X29wX2RlbF9ieV9pZDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV9pZCkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfdmFsOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwg
dDIKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERh
dGFbdDFdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQyLCBDZWxsVGFn
LCB0MCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNs
YXNzSW5mb1t0MV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIElu
dDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAgIGJwbmVxIFt0MF0sIHQyLCAub3BHZXRC
eVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDBdLCB0MworICAgIGJpYWVx
IHQxLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xvdworICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZz
ZXRbdDMsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5
bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQorICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5v
cEdldEJ5VmFsU2xvdworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgbG9hZGkgMTZbUENdLCB0
MAorICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQwKQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEdl
dEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3ZhbCkKKyAg
ICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxMltQQ10sIHQx
CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRB
cmd1bWVudEJ5VmFsU2xvdworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBJ
bnQzMlRhZywgdDIsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93KQorICAgIGFkZGkgMSwgdDIKKyAg
ICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQorICAgIGJpYWVx
IHQyLCB0MSwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAgICBuZWdpIHQyCisgICAgbG9hZGkg
NFtQQ10sIHQzCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2Nmciwg
dDIsIDhdLCB0MAorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MiwgOF0sIHQxCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAg
ICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg0KQor
Cisub3BHZXRBcmd1bWVudEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
Z2V0X2FyZ3VtZW50X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRf
YnlfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEdldEJ5
UG5hbWVTbG93KQorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICBicG5lcSB0MSwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdl
dEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0
MAorICAgIGJwbmVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVy
ZVt0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkgMjRbUENdLCB0MAorICAgIGxvYWRp
IFtjZnIsIHQwLCA4XSwgdDAKKyAgICBzdWJpIDEsIHQwCisgICAgYmlhZXEgdDAsIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2FjaGVhYmxlU2xvdHNbdDNdLCAub3BHZXRCeVBuYW1lU2xv
dworICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0Ml0sIHQyCisgICAgbG9h
ZGkgVGFnT2Zmc2V0W3QyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0Miwg
dDAsIDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisg
ICAgZGlzcGF0Y2goNykKKworLm9wR2V0QnlQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2dldF9ieV9wbmFtZSkKKyAgICBkaXNwYXRjaCg3KQorCisKK19sbGludF9vcF9w
dXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5
VmFsU2xvdykKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MCwgSW50MzJUYWcsIHQyLCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDBdLCB0
MAorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MF0sIHQwCisgICAg
YnBuZXEgW3QxXSwgdDAsIC5vcFB1dEJ5VmFsU2xvdworICAgIGJpYWVxIHQyLCBKU0FycmF5Ojpt
X3ZlY3Rvckxlbmd0aFt0MV0sIC5vcFB1dEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1f
c3RvcmFnZVt0MV0sIHQwCisgICAgYmllcSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zm
c2V0W3QwLCB0MiwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFB1dEJ5VmFsRW1wdHkKKy5vcFB1dEJ5
VmFsU3RvcmVSZXN1bHQ6CisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUyUmVnKHQzLCB0MSwgdDMpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MykKKyAgICBz
dG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XQor
ICAgIHN0b3JlaSB0MywgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDAs
IHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcFB1dEJ5VmFsRW1wdHk6CisgICAgYWRkaSAx
LCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCisgICAgYmliIHQyLCBBcnJh
eVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorICAgIGFkZGkg
MSwgdDIsIHQxCisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXQorICAg
IGptcCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisKKy5vcFB1dEJ5VmFsU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9kZWxfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfZGVsX2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9wdXRfYnlfaW5kZXg6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9wdXRfYnlfaW5kZXgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
cHV0X2dldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3B1dF9nZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X3Nl
dHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3B1dF9zZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbG9vcDoKKyAgICBu
b3AKK19sbGludF9vcF9qbXA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRpc3BhdGNoQnJh
bmNoKDRbUENdKQorCisKK19sbGludF9vcF9qbXBfc2NvcGVzOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfam1wX3Njb3BlcykKKyAgICBkaXNwYXRj
aCgwKQorCisKK21hY3JvIGp1bXBUcnVlT3JGYWxzZShjb25kaXRpb25PcCwgc2xvdykKKyAgICBs
b2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQm9v
bGVhblRhZywgdDAsIC5zbG93KQorICAgIGNvbmRpdGlvbk9wKHQwLCAudGFyZ2V0KQorICAgIGRp
c3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5zbG93
OgorICAgIGNhbGxIZWxwZXIoc2xvdykKKyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9v
cF9sb29wX2lmX3RydWU6CisgICAgbm9wCitfbGxpbnRfb3BfanRydWU6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJn
ZXQpIGJ0aW56IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2p0cnVl
KQorCisKK19sbGludF9vcF9sb29wX2lmX2ZhbHNlOgorICAgIG5vcAorX2xsaW50X29wX2pmYWxz
ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAganVtcFRydWVPckZhbHNlKAorICAgICAgICBt
YWNybyAodmFsdWUsIHRhcmdldCkgYnRpeiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9qZmFsc2UpCisKKworbWFjcm8gZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1l
ZGlhdGVIYW5kbGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAor
ICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAuaW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQyCisgICAgY2VsbEhhbmRsZXIoU3RydWN0dXJlOjptX3R5cGVJbmZvICsg
VHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJn
ZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5pbW1lZGlhdGU6CisgICAgb3JpIDEs
IHQxCisgICAgaW1tZWRpYXRlSGFuZGxlcih0MSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQor
ZW5kCisKK19sbGludF9vcF9qZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1
YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRibnogdmFsdWUsIE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFy
Z2V0KSBiaWVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorICAgIAorCitfbGxpbnRfb3Bf
am5lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAg
IG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJ6IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmluZXEgdmFsdWUs
IE51bGxUYWcsIHRhcmdldCBlbmQpCisKKworX2xsaW50X29wX2puZXFfcHRyOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcEpuZXFQdHJCcmFuY2gK
KyAgICBicGVxIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxLCAub3BKbmVxUHRyRmFsbFRo
cm91Z2gKKy5vcEpuZXFQdHJCcmFuY2g6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorLm9w
Sm5lcVB0ckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8gY29tcGFyZShp
bnRlZ2VyQ29tcGFyZSwgZG91YmxlQ29tcGFyZSwgaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0
MgorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQw
LCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MywgdDIsIHQzKQorICAgIGJp
bmVxIHQwLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9w
Mk5vdEludAorICAgIGludGVnZXJDb21wYXJlKHQxLCB0MywgLmp1bXBUYXJnZXQpCisgICAgZGlz
cGF0Y2goNCkKKworLm9wMU5vdEludDoKKyAgICBiaWEgdDAsIExvd2VzdFRhZywgLnNsb3cKKyAg
ICBiaWIgdDIsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQyLCBJ
bnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQzLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5
Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQzLCB0MiwgZnQxCisub3AxTm90SW50
UmVhZHk6CisgICAgZmlpMmQgdDEsIHQwLCBmdDAKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQx
LCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisub3AyTm90SW50OgorICAgIGNpMmQg
dDEsIGZ0MAorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGZpaTJkIHQzLCB0Miwg
ZnQxCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0
Y2goNCkKKworLmp1bXBUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorCisuc2xv
dzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGlu
dF9vcF9sb29wX2lmX2xlc3M6CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3M6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFy
Z2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmRsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9qbGVzcykKKworCitfbGxpbnRfb3Bfam5sZXNzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkg
YmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmRndGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9s
bGludF9oZWxwZXJfam5sZXNzKQorCisKK19sbGludF9vcF9sb29wX2lmX2dyZWF0ZXI6CisgICAg
bm9wCitfbGxpbnRfb3BfamdyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBh
cmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndCBs
ZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcikK
KworCitfbGxpbnRfb3Bfam5ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21w
YXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQsIHJp
Z2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRs
dGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5n
cmVhdGVyKQorCisKK19sbGludF9vcF9sb29wX2lmX2xlc3NlcToKKyAgICBub3AKK19sbGludF9v
cF9qbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5k
LAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxIGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2psZXNzZXEpCisKKworX2xsaW50
X29wX2pubGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVu
ZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3R1biBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmxlc3NlcSkKKworCitfbGxp
bnRfb3BfbG9vcF9pZl9ncmVhdGVyZXE6CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXJlcToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVu
ZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcmVxKQorCisKK19sbGludF9vcF9qbmdy
ZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0dW4gbGVmdCwgcmlnaHQsIHRh
cmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5ncmVhdGVyZXEpCisKKworX2xsaW50
X29wX2xvb3BfaGludDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJ
VEZvckxvb3AoKQorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N3aXRjaF9pbW06Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA0W1BD
XSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwg
dDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQzICAgIyBGSVhNRTogd291bGQg
YmUgbmljZSB0byBwZWVwaG9sZSB0aGlzIQorICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6
Om1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQy
CisgICAgYWRkcCB0MywgdDIKKyAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcFN3aXRjaEltbU5v
dEludAorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQw
LCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwg
Lm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5j
aE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAs
IDRdLCB0MQorICAgIGJ0aXogdDEsIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0
Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQorCisub3BTd2l0Y2hJbW1Ob3RJbnQ6CisgICAgYmliIHQx
LCBMb3dlc3RUYWcsIC5vcFN3aXRjaEltbVNsb3cgICMgR28gdG8gc2xvdyBwYXRoIGlmIGl0J3Mg
YSBkb3VibGUuCisub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4
W1BDXSkKKworLm9wU3dpdGNoSW1tU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
c3dpdGNoX2ltbSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9zd2l0Y2hfY2hhcjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDRb
UENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJd
LCB0MgorICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6OlJhcmVEYXRhOjptX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZm
ZXJPZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEgdDEsIENlbGxUYWcs
IC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MQorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5
cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBK
U1N0cmluZzo6bV92YWx1ZVt0MF0sIHQwCisgICAgYmluZXEgU3RyaW5nSW1wbDo6bV9sZW5ndGhb
dDBdLCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTdHJpbmdJbXBsOjpt
X2RhdGE4W3QwXSwgdDEKKyAgICBidGlueiBTdHJpbmdJbXBsOjptX2hhc2hBbmRGbGFnc1t0MF0s
IEhhc2hGbGFnczhCaXRCdWZmZXIsIC5vcFN3aXRjaENoYXI4Qml0CisgICAgbG9hZGggW3QxXSwg
dDAKKyAgICBqbXAgLm9wU3dpdGNoQ2hhclJlYWR5Cisub3BTd2l0Y2hDaGFyOEJpdDoKKyAgICBs
b2FkYiBbdDFdLCB0MAorLm9wU3dpdGNoQ2hhclJlYWR5OgorICAgIHN1YmkgU2ltcGxlSnVtcFRh
YmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9m
ZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisg
ICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zm
c2V0W3QyXSwgdDIKKyAgICBsb2FkaSBbdDIsIHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BT
d2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKwor
Lm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisK
K19sbGludF9vcF9zd2l0Y2hfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX3N0cmluZykKKyAgICBkaXNwYXRjaCgwKQorCisK
K19sbGludF9vcF9uZXdfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYnRpeiAxMltQ
Q10sIC5vcE5ld0Z1bmNVbmNoZWNrZWQKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBU
YWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcE5ld0Z1bmNEb25lCisub3BO
ZXdGdW5jVW5jaGVja2VkOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuYykK
Ky5vcE5ld0Z1bmNEb25lOgorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19mdW5j
X2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X25ld19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGRvQ2FsbChoZWxwZXIp
CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRwIExM
SW50Q2FsbExpbmtJbmZvOjpjYWxsZWVbdDFdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wQ2FsbFNsb3cpCisgICAgYmluZXEgdDMsIHQy
LCAub3BDYWxsU2xvdworICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBhZGRwIDI0LCBQQworICAg
IGxzaGlmdGkgMywgdDMKKyAgICBhZGRwIGNmciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2
YWx1ZSBvZiBjZnIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX3Njb3BlQ2hhaW5bdDJdLCB0MAor
ICAgIHN0b3JlaSB0MiwgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgdDAs
IFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGxvYWRpIDggLSAyNFtQQ10sIHQy
CisgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBzdG9y
ZXAgY2ZyLCBDYWxsZXJGcmFtZVt0M10KKyAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQ
YXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRb
dDNdCisgICAgc3RvcmVpIENlbGxUYWcsIFNjb3BlQ2hhaW4gKyBUYWdPZmZzZXRbdDNdCisgICAg
bW92ZSB0MywgY2ZyCisgICAgY2FsbCBMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJn
ZXRbdDFdCisgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorCisub3BDYWxsU2xvdzoKKyAgICBzbG93
UGF0aEZvckNhbGwoNiwgaGVscGVyKQorZW5kCisKK19sbGludF9vcF9jYWxsOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBlcl9jYWxsKQorCisKK19sbGludF9v
cF9jb25zdHJ1Y3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRfaGVs
cGVyX2NvbnN0cnVjdCkKKworCitfbGxpbnRfb3BfY2FsbF92YXJhcmdzOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBzbG93UGF0aEZvckNhbGwoNiwgX2xsaW50X2hlbHBlcl9jYWxsX3ZhcmFy
Z3MpCisKKworX2xsaW50X29wX2NhbGxfZXZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
CisgICAgIyBFdmFsIGlzIGV4ZWN1dGVkIGluIG9uZSBvZiB0d28gbW9kZXM6CisgICAgIworICAg
ICMgMSkgV2UgZmluZCB0aGF0IHdlJ3JlIHJlYWxseSBpbnZva2luZyBldmFsKCkgaW4gd2hpY2gg
Y2FzZSB0aGUKKyAgICAjICAgIGV4ZWN1dGlvbiBpcyBwZXJmb21lZCBlbnRpcmVseSBpbnNpZGUg
dGhlIGhlbHBlciwgYW5kIGl0CisgICAgIyAgICByZXR1cm5zIHRoZSBQQyBvZiBhIGZ1bmN0aW9u
IHRoYXQganVzdCByZXR1cm5zIHRoZSByZXR1cm4gdmFsdWUKKyAgICAjICAgIHRoYXQgdGhlIGV2
YWwgcmV0dXJuZWQuCisgICAgIworICAgICMgMikgV2UgZmluZCB0aGF0IHdlJ3JlIGludm9raW5n
IHNvbWV0aGluZyBjYWxsZWQgZXZhbCgpIHRoYXQgaXMgbm90CisgICAgIyAgICB0aGUgcmVhbCBl
dmFsLiBUaGVuIHRoZSBoZWxwZXIgcmV0dXJucyB0aGUgUEMgb2YgdGhlIHRoaW5nIHRvCisgICAg
IyAgICBjYWxsLCBhbmQgd2UgY2FsbCBpdC4KKyAgICAjCisgICAgIyBUaGlzIGFsbG93cyB1cyB0
byBoYW5kbGUgdHdvIGNhc2VzLCB3aGljaCB3b3VsZCByZXF1aXJlIGEgdG90YWwgb2YKKyAgICAj
IHVwIHRvIGZvdXIgcGllY2VzIG9mIHN0YXRlIHRoYXQgY2Fubm90IGJlIGVhc2lseSBwYWNrZWQg
aW50byB0d28KKyAgICAjIHJlZ2lzdGVycyAoQyBmdW5jdGlvbnMgY2FuIHJldHVybiB1cCB0byB0
d28gcmVnaXN0ZXJzLCBlYXNpbHkpOgorICAgICMKKyAgICAjIC0gVGhlIGNhbGwgZnJhbWUgcmVn
aXN0ZXIuIFRoaXMgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVuIG1vZGlmaWVkCisgICAgIyAgIGJ5
IHRoZSBoZWxwZXIsIGJ1dCB0aGUgY29udmVudGlvbiBpcyB0aGF0IGl0IHJldHVybnMgaXQuIEl0
J3Mgbm90CisgICAgIyAgIHRvdGFsbHkgY2xlYXIgaWYgdGhhdCdzIG5lY2Vzc2FyeSwgc2luY2Ug
dGhlIGNmciBpcyBjYWxsZWUgc2F2ZS4KKyAgICAjICAgQnV0IHRoYXQncyBvdXIgc3R5bGUgaW4g
dGhpcyBoZXJlIGludGVycHJldGVyIHNvIHdlIHN0aWNrIHdpdGggaXQuCisgICAgIworICAgICMg
LSBBIGJpdCB0byBzYXkgaWYgdGhlIGhlbHBlciBzdWNjZXNzZnVsbHkgZXhlY3V0ZWQgdGhlIGV2
YWwgYW5kIGhhcworICAgICMgICB0aGUgcmV0dXJuIHZhbHVlLCBvciBkaWQgbm90IGV4ZWN1dGUg
dGhlIGV2YWwgYnV0IGhhcyBhIFBDIGZvciB1cworICAgICMgICB0byBjYWxsLgorICAgICMKKyAg
ICAjIC0gRWl0aGVyOgorICAgICMgICAtIFRoZSBKUyByZXR1cm4gdmFsdWUgKHR3byByZWdpc3Rl
cnMpLCBvcgorICAgICMKKyAgICAjICAgLSBUaGUgUEMgdG8gY2FsbC4KKyAgICAjCisgICAgIyBJ
dCB0dXJucyBvdXQgdG8gYmUgZWFzaWVyIHRvIGp1c3QgYWx3YXlzIGhhdmUgdGhpcyByZXR1cm4g
dGhlIGNmcgorICAgICMgYW5kIGEgUEMgdG8gY2FsbCwgYW5kIHRoYXQgUEMgbWF5IGJlIGEgZHVt
bXkgdGh1bmsgdGhhdCBqdXN0CisgICAgIyByZXR1cm5zIHRoZSBKUyB2YWx1ZSB0aGF0IHRoZSBl
dmFsIHJldHVybmVkLgorICAgIAorICAgIHNsb3dQYXRoRm9yQ2FsbCg0LCBfbGxpbnRfaGVscGVy
X2NhbGxfZXZhbCkKKworCitfbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQ6CisgICAgZGlzcGF0
Y2hBZnRlckNhbGwoKQorCisKK19sbGludF9vcF90ZWFyX29mZl9hY3RpdmF0aW9uOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEK
KyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJP
ZmZBY3RpdmF0aW9uQ3JlYXRlZAorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0
eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQKKy5vcFRlYXJPZmZBY3Rp
dmF0aW9uQ3JlYXRlZDoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGVhcl9vZmZfYWN0
aXZhdGlvbikKKy5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF90ZWFyX29mZl9hcmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN1YmkgMSwgdDAgICAjIEdldCB0aGUgdW5tb2Rp
ZmllZEFyZ3VtZW50c1JlZ2lzdGVyCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVt
cHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cykKKy5vcFRlYXJPZmZBcmd1bWVudHNO
b3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFjcm8gZG9SZXR1cm4oKQorICAgIGxv
YWRwIFJldHVyblBDW2Nmcl0sIHQyCisgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgY2ZyCisg
ICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4odDIpCisgICAgcmV0CitlbmQKKwor
X2xsaW50X29wX3JldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJ
VEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQyLCB0MSwgdDApCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF9vcF9jYWxsX3B1
dF9yZXN1bHQ6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAg
c3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB2YWx1ZVByb2ZpbGUodDEsIHQwLCB0MykKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpICMgTmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIGl0IHdvdWxkIGNsb2JiZXIg
dDEsIHQwCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmV0X29iamVjdF9vcl90aGlz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUo
KQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQx
LCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJiIFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BSZXRP
YmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBkb1JldHVybigpCisKKy5vcFJldE9iamVjdE9yVGhp
c05vdE9iamVjdDoKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQyLCB0MSwgdDApCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF9vcF9tZXRob2RfY2hl
Y2s6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgV2UgaWdub3JlIG1ldGhvZCBjaGVja3Mg
YW5kIHVzZSBub3JtYWwgZ2V0X2J5X2lkIG9wdGltaXphdGlvbnMuCisgICAgZGlzcGF0Y2goMSkK
KworCitfbGxpbnRfb3Bfc3RyY2F0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfc3RyY2F0KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X3RvX3ByaW1pdGl2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQy
CisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEs
IHQwKQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BUb1ByaW1pdGl2ZUlzSW1tCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5vcFRvUHJpbWl0aXZl
U2xvd0Nhc2UKKy5vcFRvUHJpbWl0aXZlSXNJbW06CisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAg
ICBkaXNwYXRjaCgzKQorCisub3BUb1ByaW1pdGl2ZVNsb3dDYXNlOgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl90b19wcmltaXRpdmUpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRf
b3BfZ2V0X3BuYW1lczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2dldF9wbmFtZXMpCisgICAgZGlzcGF0Y2goMCkgIyBUaGUgaGVscGVyIGVpdGhl
ciBhZHZhbmNlcyB0aGUgUEMgb3IganVtcHMgdXMgdG8gc29tZXdoZXJlIGVsc2UuCisKKworX2xs
aW50X29wX25leHRfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BD
XSwgdDEKKyAgICBsb2FkaSAxNltQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQxLCA4XSwgdDAKKyAgICBiaWVxIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCAub3BO
ZXh0UG5hbWVFbmQKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQyLCA4XSwgdDIKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2pz
U3RyaW5nc1t0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgOF0sIHQzCisgICAgYWRkaSAxLCB0
MAorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDRb
UENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBz
dG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA4W1BDXSwgdDMK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MworICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGJwbmVxIHQxLCBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFByb3RvdHlwZUNoYWluW3QyXSwgdDAKKyAg
ICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDBdLCB0MAorICAgIGJ0cHogW3QwXSwg
Lm9wTmV4dFBuYW1lVGFyZ2V0Cisub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3A6CisgICAg
YmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W3QxXSwgTnVsbFRhZywgLm9w
TmV4dFBuYW1lU2xvdworICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2Fk
T2Zmc2V0W3QxXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDEKKyAg
ICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGFkZHAgNCwgdDAKKyAgICBi
dHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKKy5vcE5leHRQbmFtZVRh
cmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgyNFtQQ10pCisKKy5vcE5leHRQbmFtZUVuZDoKKyAg
ICBkaXNwYXRjaCg3KQorCisub3BOZXh0UG5hbWVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9uZXh0X3BuYW1lKSAjIFRoaXMgZWl0aGVyIGtlZXBzIHRoZSBQQyB3aGVyZSBpdCB3
YXMgKGNhdXNpbmcgdXMgdG8gbG9vcCkgb3Igc2V0cyBpdCB0byB0YXJnZXQuCisgICAgZGlzcGF0
Y2goMCkKKworCitfbGxpbnRfb3BfcHVzaF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfc2NvcGUpCisgICAgZGlzcGF0Y2goMikK
KworCitfbGxpbnRfb3BfcG9wX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcG9wX3Njb3BlKQorICAgIGRpc3BhdGNoKDEpCisKKworX2xs
aW50X29wX3B1c2hfbmV3X3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcHVzaF9uZXdfc2NvcGUpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfY2F0Y2g6CisgICAgIyBUaGlzIGlzIHdoZXJlIHdlIGVuZCB1cCBmcm9tIHRoZSBK
SVQncyB0aHJvdyB0cmFtcG9saW5lIChiZWNhdXNlIHRoZQorICAgICMgbWFjaGluZSBjb2RlIHJl
dHVybiBhZGRyZXNzIHdpbGwgYmUgc2V0IHRvIF9sbGludF9vcF9jYXRjaCksIGFuZCBmcm9tCisg
ICAgIyB0aGUgaW50ZXJwcmV0ZXIncyB0aHJvdyB0cmFtcG9saW5lIChzZWUgX2xsaW50X3Rocm93
X3RyYW1wb2xpbmUpLgorICAgICMgVGhlIEpJVCB0aHJvd2luZyBwcm90b2NvbCBjYWxscyBmb3Ig
dGhlIGNmciB0byBiZSBpbiB0MC4gVGhlIHRocm93aW5nCisgICAgIyBjb2RlIG11c3QgaGF2ZSBr
bm93biB0aGF0IHdlIHdlcmUgdGhyb3dpbmcgdG8gdGhlIGludGVycHJldGVyLCBhbmQgaGF2ZQor
ICAgICMgc2V0IEpTR2xvYmFsRGF0YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93LgorICAg
IG1vdmUgdDAsIGNmcgorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0
MworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93W3Qz
XSwgUEMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRb
dDNdLCB0MAorICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3Qz
XSwgdDEKKyAgICBzdG9yZWkgMCwgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zm
c2V0W3QzXQorICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlv
biArIFRhZ09mZnNldFt0M10gICAgICAgCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0KKyAgICB0cmFjZUV4ZWN1dGlvbigpICAjIFRoaXMgbmVlZHMgdG8gYmUgaGVy
ZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY2xvYmJlciB0MCwgdDEsIHQyLCB0MyBhYm92ZS4K
KyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvdzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rocm93KQorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX3Rocm93X3JlZmVyZW5jZV9lcnJvcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikK
KyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9qc3I6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFkZGkgMyAqIDQsIFBDLCB0MQorICAgIHN0b3Jl
aSB0MSwgW2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKworX2xsaW50
X29wX3NyZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGxvYWRwIFtjZnIsIHQwLCA4XSwgUEMKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9k
ZWJ1ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2RlYnVnKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Byb2ZpbGVfd2lsbF9jYWxs
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidHB6IEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQ
cm9maWxlclJlZmVyZW5jZVtzcF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENhbGxE
b25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0cHogSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2Zp
bGVyUmVmZXJlbmNlW3NwXSwgLm9wUHJvZmlsZURpZENhbGxEb25lCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERvbmU6Cisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhyb3dfZnJv
bV9oZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJw
cmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMpLCBzbworICAgICMgdGhlIHRo
cm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0
byBoZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dp
bmcgcHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQx
CisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAg
am1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworX2xsaW50
X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNz
QWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0
MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAg
IGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKKyMgTGFz
dGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBw
b3J0IGFsbCBvcGNvZGVzLgorIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVu
IHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAorIyBhcyBtdWNoLgorCittYWNy
byBub3RTdXBwb3J0ZWQoKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGNyYXNoKCkK
KyAgICBlbHNlCisgICAgICAgICMgV2Ugc2hvdWxkIHVzZSB3aGF0ZXZlciB0aGUgc21hbGxlc3Qg
cG9zc2libGUgaW5zdHJ1Y3Rpb24gaXMsIGp1c3QgdG8KKyAgICAgICAgIyBlbnN1cmUgdGhhdCB0
aGVyZSBpcyBhIGdhcCBiZXR3ZWVuIGluc3RydWN0aW9uIGxhYmVscy4gSWYgbXVsdGlwbGUKKyAg
ICAgICAgIyBzbWFsbGVzdCBpbnN0cnVjdGlvbnMgZXhpc3QsIHdlIHNob3VsZCBwaWNrIHRoZSBv
bmUgdGhhdCBpcyBtb3N0CisgICAgICAgICMgbGlrZWx5IHJlc3VsdCBpbiBleGVjdXRpb24gYmVp
bmcgaGFsdGVkLiBDdXJyZW50bHkgdGhhdCBpcyB0aGUgYnJlYWsKKyAgICAgICAgIyBpbnN0cnVj
dGlvbiBvbiBhbGwgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBpbnRlcmVzdGVkIGluLiAoQnJlYWsgaXMg
aW50MworICAgICAgICAjIG9uIEludGVsLCB3aGljaCBpcyAxIGJ5dGUsIGFuZCBia3B0IG9uIEFS
TXY3LCB3aGljaCBpcyAyIGJ5dGVzLikKKyAgICAgICAgYnJlYWsKKyAgICBlbmQKK2VuZAorCitf
bGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRf
b3BfZ2V0X2J5X2lkX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfY3VzdG9tX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfY3VzdG9tX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfY3VzdG9tX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9i
eV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRf
Z2V0dGVyX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRf
Z2V0dGVyX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRf
Z2V0dGVyX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9w
cm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3NlbGY6Cisg
ICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9zdHJpbmdfbGVuZ3RoOgorICAgIG5v
dFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBw
b3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3JlcGxhY2U6CisgICAgbm90U3VwcG9ydGVk
KCkKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uOgorICAgIG5vdFN1cHBvcnRlZCgp
CisKKworIyBJbmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50LgorX2xsaW50X2VuZDoKKyAgICBjcmFz
aCgpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1
ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworI2luY2x1ZGUgIkxMSW50QXNzZW1ibHkuaCIK
KworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTG93TGV2
ZWxJbnRlcnByZXRlcl9oCisjZGVmaW5lIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorCisjaW5jbHVk
ZSAiT3Bjb2RlLmgiCisKKyNkZWZpbmUgTExJTlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxl
bmd0aCkgZXh0ZXJuICJDIiB2b2lkIGxsaW50XyMjb3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hfT1BD
T0RFX0lEKExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wpOworI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9O
X0RFQ0wKKworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2JlZ2luKCk7CitleHRlcm4gIkMiIHZvaWQg
bGxpbnRfZW5kKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOwor
ZXh0ZXJuICJDIiB2b2lkIGxsaW50X2V2YWxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBs
bGludF9nZW5lcmljX3JldHVybl9wb2ludCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93
X2Zyb21faGVscGVyX3RyYW1wb2xpbmUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19k
dXJpbmdfY2FsbF90cmFtcG9saW5lKCk7CisKKyNlbmRpZiAvLyBMb3dMZXZlbEludGVycHJldGVy
X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTkzIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitjbGFzcyBTcGVjaWFsUmVnaXN0ZXIKKyAgZGVmIGluaXRpYWxpemUobmFtZSkK
KyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgQG5h
bWUKKyAgZW5kCitlbmQKKworQVJNdjdfREFUQV9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJp
cCIpCitBUk12N19BRERSX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoInIzIikKKworZGVmIG1v
dmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJlbnRseSB3ZSBvbmx5IGhhbmRs
ZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1vdi9tb3Z0IGZvciB0aGUgY29t
cGxleCBvbmVzLgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2CisgICAgJGFzbS5wdXRz
ICJtb3Z3IFwjI3t2YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzaWYgKH52
YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20ucHV0cyAibXZudyBcIyN7fnZh
bHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNlCisgICAgJGFzbS5wdXRzICJt
b3Z3IFwjI3t2YWx1ZSAmIDB4ZmZmZn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBp
ZiAodmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCisgICAgICAkYXNtLnB1dHMgIm1vdnQgXCMje3Zh
bHVlID4+IDE2fSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorICBlbmQKK2Vu
ZAorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUK
KyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICJyMCIKKyAgICB3aGVuICJ0MSIsICJh
MSIsICJyMSIKKyAgICAgICJyMSIKKyAgICB3aGVuICJ0MiIsICJhMiIKKyAgICAgICJyMiIKKyAg
ICB3aGVuICJhMyIKKyAgICAgICJyMyIKKyAgICB3aGVuICJ0MyIKKyAgICAgICJyNCIKKyAgICB3
aGVuICJ0NCIKKyAgICAgICJyNyIKKyAgICB3aGVuICJjZnIiCisgICAgICAicjUiCisgICAgZWxz
ZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9z
c2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlP
cGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3Jl
V3JhcAorICAgIHlpZWxkCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYg
YXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZyIgorICAgICAg
ImQwIgorICAgIHdoZW4gImZyMSIsCisgICAgICAiZDEiCisgICAgd2hlbiAiZnIyIgorICAgICAg
ImQyIgorICAgIHdoZW4gImZyMyIKKyAgICAgICJkMyIKKyAgICB3aGVuICJmcjQiCisgICAgICAi
ZDQiCisgICAgd2hlbiAiZnI1IgorICAgICAgImQ1IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFu
ZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3
T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZCBz
ZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgYXJtVjdPcGVyYW5kCisg
ICAgcmFpc2UgIkludmFsaWQgaW1tZWRpYXRlICN7dmFsdWV9IiBpZiB2YWx1ZSA8IDAgb3IgdmFs
dWUgPiAyNTUKKyAgICAiIyR7dmFsdWV9IgorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQ
b3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9y
eU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3Rv
cmVXcmFwCisgICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCittb2R1bGUgQVJNdjdBZGRyZXNz
VXRpbGl0aWVzCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICBzZWxmLmFybVY3UHJlcGFy
ZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICRhc20ucHV0cyAiXHRsZHIgI3tzZWxmLmFybVY3
UG9zc2libHlNZW1vcnlPcGVyYW5kfSwgI3tBUk12N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9Igor
ICAgIHlpZWxkIEFSTXY3X0RBVEFfUkVHCisgICAgJGFzbS5wdXRzICJcdHN0ciAje0FSTXY3X0RB
VEFfUkVHLmFybVY3T3BlcmFuZH0sICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFuZH0i
CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NVdGls
aXRpZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYg
b2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAgIG1vdmVJ
bW1lZGlhdGUob2Zmc2V0LnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgICBlbmQKKyAgZW5kCisg
IAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUg
PCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVy
YW5kfSwgI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgICBlbHNlCisgICAgICAi
WyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje29mZnNldC5hcm1WN09wZXJhbmR9XSIKKyAgICBlbmQK
KyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRp
bGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlm
IG9mZnNldC52YWx1ZSAhPSAwCisgICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1ZSwgQVJN
djdfQUREUl9SRUcpCisgICAgICAkYXNtLnB1dHMgImFkZHcgI3tBUk12N19BRERSX1JFRy5hcm1W
N09wZXJhbmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAor
ICAgICAgIlsje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVy
YW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVsc2UKKyAgICAgICJbI3tiYXNlLmFybVY3T3Bl
cmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVuZAor
ICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJl
c3NVdGlsaXRpZXMKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQK
KyAgICBtb3ZlSW1tZWRpYXRlKGFkZHJlc3MudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICBlbmQK
KyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICJbI3tBUk12N19BRERS
X1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgZW5kCitlbmQKKworCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgzIEBACisj
IS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCity
ZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2V0dGluZ3MiCity
ZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2NsYXNzIEFzc2VtYmxlcgorICBkZWYgaW5pdGlhbGl6ZShv
dXRwKQorICAgIEBvdXRwID0gb3V0cAorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBk
ZWYgZW50ZXJBc20KKyAgICBAb3V0cC5wdXRzICJhc20gKCIKKyAgICBAc3RhdGUgPSA6YXNtCisg
IGVuZAorICAKKyAgZGVmIGxlYXZlQXNtCisgICAgQG91dHAucHV0cyAiKTsiCisgICAgQHN0YXRl
ID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBpbkFzbQorICAgIGVudGVyQXNtCisgICAgeWllbGQK
KyAgICBsZWF2ZUFzbQorICBlbmQKKyAgCisgIGRlZiBwdXRzKGxpbmUpCisgICAgcmFpc2UgdW5s
ZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAgQG91dHAucHV0cygobGluZSArICJcbiIpLmluc3BlY3Qp
CisgIGVuZAorICAKKyAgZGVmIGNvbW1lbnQodGV4dCkKKyAgICBAb3V0cC5wdXRzICIvLyAje3Rl
eHR9IgorICBlbmQKK2VuZAorCiskYXNtID0gQXNzZW1ibGVyLm5ldygkc3Rkb3V0KQorCithc21G
aWxlID0gQVJHVi5zaGlmdAorb2Zmc2V0c0ZpbGUgPSBBUkdWLnNoaWZ0CisKK2FzdCA9IHBhcnNl
KGxleChJTzo6cmVhZChhc21GaWxlKSkpCitvZmZzZXRzTGlzdCwgY29uZmlnSW5kZXggPSBvZmZz
ZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KG9mZnNldHNGaWxlKQorCitmb3JTZXR0aW5ncyhjb21w
dXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KVtjb25maWdJbmRleF0sIGFzdCkgeworICB8IGNv
bmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgYXNzZXJ0Q29uZmlndXJh
dGlvbihjb25jcmV0ZVNldHRpbmdzKQorICBsb3dMZXZlbEFTVCA9IGxvd0xldmVsQVNULnJlc29s
dmUoKmJ1aWxkT2Zmc2V0c01hcChsb3dMZXZlbEFTVCwgb2Zmc2V0c0xpc3QpKQorICBlbWl0Q29k
ZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCkg
eworICAgICRhc20uaW5Bc20geworICAgICAgbG93TGV2ZWxBU1QubG93ZXIoYmFja2VuZCkKKyAg
ICB9CisgIH0KK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODE3IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBCYXNlIHV0
aWxpdHkgdHlwZXMgZm9yIHRoZSBBU1QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFZhbGlkIG1ldGhv
ZHMgZm9yIE5vZGU6CisjCisjIG5vZGUuY2hpbGRyZW4gLT4gUmV0dXJucyBhbiBhcnJheSBvZiBp
bW1lZGlhdGUgY2hpbGRyZW4uCisjCisjIG5vZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJucyBhbiBh
cnJheSBvZiBhbGwgc3RyaWN0IGRlc2NlbmRhbnRzIChjaGlsZHJlbgorIyAgICAgYW5kIGNoaWxk
cmVuIG9mIGNoaWxkcmVuLCB0cmFuc2l0aXZlbHkpLgorIworIyBub2RlLmZsYXR0ZW4gLT4gUmV0
dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5kCisjICAg
ICB0aGUgbm9kZSBpdHNlbGYuCisjCisjIG5vZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVybnMgYW4g
YXJyYXkgY29udGFpbmluZyB0aG9zZSBlbGVtZW50cyBpbgorIyAgICAgbm9kZS5mbGF0dGVuIHRo
YXQgYXJlIG9mIHRoZSBnaXZlbiB0eXBlIChpc19hPyB0eXBlIHJldHVybnMgdHJ1ZSkuCisjCisj
IG5vZGUubWFwQ2hpbGRyZW57fHZ8IC4uLn0gLT4gUmV0dXJucyBhIG5ldyBub2RlIHdpdGggYWxs
IGNoaWxkcmVuCisjICAgICByZXBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJsb2NrLgor
IworIyBFeGFtcGxlczoKKyMKKyMgbm9kZS5maWx0ZXIoU2V0dGluZykudW5pcSAtPiBSZXR1cm5z
IGFsbCBvZiB0aGUgc2V0dGluZ3MgdGhhdCB0aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVsc2UgYmxv
Y2tzIGRlcGVuZCBvbi4KKyMKKyMgbm9kZS5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxIC0+IFJl
dHVybnMgYWxsIG9mIHRoZSBzdHJ1Y3R1cmUgb2Zmc2V0cworIyAgICAgdGhhdCB0aGUgQVNUIGRl
cGVuZHMgb24uCisKK2NsYXNzIE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2lu
CisgIGVuZAorICAKKyAgZGVmIGNvZGVPcmlnaW5TdHJpbmcKKyAgICAibGluZSBudW1iZXIgI3tA
Y29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVmIGRlc2NlbmRhbnRzCisgICAgY2hpbGRyZW4u
Y29sbGVjdHt8dnwgdi5mbGF0dGVufS5mbGF0dGVuCisgIGVuZAorICAKKyAgZGVmIGZsYXR0ZW4K
KyAgICBbc2VsZl0gKyBkZXNjZW5kYW50cworICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIodHlwZSkK
KyAgICBmbGF0dGVuLnNlbGVjdHt8dnwgdi5pc19hPyB0eXBlfQorICBlbmQKK2VuZAorCitjbGFz
cyBOb0NoaWxkcmVuIDwgTm9kZQorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW10KKyAgZW5k
CisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFN0
cnVjdE9mZnNldEtleQorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBp
bml0aWFsaXplKHN0cnVjdCwgZmllbGQpCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVs
ZCA9IGZpZWxkCisgIGVuZAorICAKKyAgZGVmIGhhc2gKKyAgICBAc3RydWN0Lmhhc2ggKyBAZmll
bGQuaGFzaCAqIDMKKyAgZW5kCisgIAorICBkZWYgZXFsPyhvdGhlcikKKyAgICBAc3RydWN0ID09
IG90aGVyLnN0cnVjdCBhbmQgQGZpZWxkID09IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisgICAg
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBBU1Qgbm9kZXMuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBTdHJ1Y3RPZmZzZXQgPCBOb0No
aWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisgIEBAbWFw
cGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JGaWVsZChjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZp
ZWxkKQorICAgIGtleSA9IFN0cnVjdE9mZnNldEtleS5uZXcoc3RydWN0LCBmaWVsZCkKKyAgICAK
KyAgICB1bmxlc3MgQEBtYXBwaW5nW2tleV0KKyAgICAgIEBAbWFwcGluZ1trZXldID0gU3RydWN0
T2Zmc2V0Lm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGVuZAorICAgIEBAbWFw
cGluZ1trZXldCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tzdHJ1Y3R9Ojoje2ZpZWxk
fSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAgIGlmIEBzdHJ1Y3QgIT0gb3RoZXIu
c3RydWN0CisgICAgICByZXR1cm4gQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgICAgZW5kCisg
ICAgQGZpZWxkIDw9PiBvdGhlci5maWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YgPCBO
b0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBz
dHJ1Y3QKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFt
ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tzdHJ1Y3RdCisgICAg
ICBAQG1hcHBpbmdbc3RydWN0XSA9IFNpemVvZi5uZXcoY29kZU9yaWdpbiwgc3RydWN0KQorICAg
IGVuZAorICAgIEBAbWFwcGluZ1tzdHJ1Y3RdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
c2l6ZW9mICN7QHN0cnVjdH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAgICBAc3Ry
dWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlIDwgTm9D
aGlsZHJlbgorICBhdHRyX3JlYWRlciA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhbHVlID0gdmFsdWUK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYg
PT0ob3RoZXIpCisgICAgb3RoZXIuaXNfYT8gSW1tZWRpYXRlIGFuZCBvdGhlci52YWx1ZSA9PSBA
dmFsdWUKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9y
ZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVm
dCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBA
cmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJp
Z2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZEltbWVkaWF0ZXMubmV3
KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitl
bmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpy
aWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAor
ICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAg
CisgIGRlZiBtYXBDaGlsZHJlbgorICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5
aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
Iigje2xlZnQuZHVtcH0gLSAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTXVs
SW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbgorICAgIE11bEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5
aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0g
KiAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlIDwgTm9k
ZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGNoaWxkXQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIE5lZ0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkp
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKC0je0BjaGlsZC5kdW1wfSkiCisgIGVuZAor
ZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1l
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAg
CisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBw
aW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBSZWdpc3RlcklELm5ldyhjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQgPCBOb0No
aWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVu
ZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdp
biwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFt
ZV0gPSBGUFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBt
YXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5k
CisKK2NsYXNzIFZhcmlhYmxlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBk
ZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tu
YW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gVmFyaWFibGUubmV3KGNvZGVPcmlnaW4sIG5h
bWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MgPCBOb2RlCisgIGF0dHJfcmVh
ZGVyIDpiYXNlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNl
LCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBA
b2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BiYXNlLCBA
b2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZHJlc3MubmV3KGNv
ZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH1dIgorICBlbmQKK2VuZAor
CitjbGFzcyBCYXNlSW5kZXggPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6aW5kZXgsIDpz
Y2FsZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwgaW5k
ZXgsIHNjYWxlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJh
c2UKKyAgICBAaW5kZXggPSBpbmRleAorICAgIEBzY2FsZSA9IHNjYWxlCisgICAgcmFpc2UgdW5s
ZXNzIFsxLCAyLCA0LCA4XS5tZW1iZXI/IEBzY2FsZQorICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAg
ZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBpbmRleCwgQG9mZnNldF0KKyAg
ZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4s
ICh5aWVsZCBAYmFzZSksICh5aWVsZCBAaW5kZXgpLCBAc2NhbGUsICh5aWVsZCBAb2Zmc2V0KSkK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH0s
ICN7aW5kZXguZHVtcH0sICN7c2NhbGV9XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVB
ZGRyZXNzIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6YWRkcmVzcworICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgYWRkcmVzcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBhZGRyZXNzID0gYWRkcmVzcworICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7YWRkcmVz
cy5kdW1wfVtdIgorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbiA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBvcGNvZGUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG9wY29k
ZSA9IG9wY29kZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIGNo
aWxkcmVuCisgICAgb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2Mp
CisgICAgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5tYXAo
JnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0IiArIG9wY29kZS50b19zICsg
IiAiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCisgIGVuZAorZW5k
CisKK2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRl
cnJvciIKKyAgZW5kCitlbmQKKworY2xhc3MgQ29uc3REZWNsIDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6dmFyaWFibGUsIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFy
aWFibGUsIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhcmlhYmxlID0gdmFy
aWFibGUKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IFtAdmFyaWFibGUsIEB2YWx1ZV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBD
b25zdERlY2wubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAdmFyaWFibGUpLCAoeWllbGQgQHZhbHVl
KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJjb25zdCAje0B2YXJpYWJsZS5kdW1wfSA9
ICN7QHZhbHVlLmR1bXB9IgorICBlbmQKK2VuZAorCiskbGFiZWxNYXBwaW5nID0ge30KKworY2xh
c3MgTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5h
bWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1l
KQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNv
bGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTGFiZWwK
KyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFiZWwubmV3KGNvZGVPcmln
aW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVs
IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFt
ZQorICBlbmQKKworICBAQHVuaXF1ZU5hbWVDb3VudGVyID0gMAorICAKKyAgZGVmIHNlbGYuZm9y
TmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAg
IHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBp
bmdbbmFtZV0uaXNfYT8gTG9jYWxMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdb
bmFtZV0gPSBMb2NhbExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRs
YWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgc2VsZi51bmlxdWUoY29tbWVudCkK
KyAgICBuZXdOYW1lID0gIl8je2NvbW1lbnR9IgorICAgIGlmICRsYWJlbE1hcHBpbmdbbmV3TmFt
ZV0KKyAgICAgIHdoaWxlICRsYWJlbE1hcHBpbmdbbmV3TmFtZSA9ICJfI3tAQHVuaXF1ZU5hbWVD
b3VudGVyfV8je2NvbW1lbnR9Il0KKyAgICAgICAgQEB1bmlxdWVOYW1lQ291bnRlciArPSAxCisg
ICAgICBlbmQKKyAgICBlbmQKKyAgICBmb3JOYW1lKG5pbCwgbmV3TmFtZSkKKyAgZW5kCisgIAor
ICBkZWYgY2xlYW5OYW1lCisgICAgaWYgbmFtZSA9fiAvXlwuLworICAgICAgIl8iICsgbmFtZVsx
Li4tMV0KKyAgICBlbHNlCisgICAgICBuYW1lCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlIDwg
Tm9kZQorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAg
ZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbgorICAgIExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxh
YmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJl
bFJlZmVyZW5jZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0K
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBMb2NhbExhYmVsUmVmZXJlbmNlLm5l
dyhjb2RlT3JpZ2luLCAoeWllbGQgQGxhYmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQorICAg
IGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAgZW5k
CitlbmQKKworY2xhc3MgU2VxdWVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsaXN0CisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsaXN0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQGxpc3QgPSBsaXN0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgbGlzdAor
ICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBTZXF1ZW5jZS5uZXcoY29k
ZU9yaWdpbiwgQGxpc3QubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxp
c3QuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCJcbiIpCisgIGVuZAorZW5kCisKK2NsYXNzIFRy
dWUgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIobmlsKQorICBlbmQK
KyAgCisgIEBAaW5zdGFuY2UgPSBUcnVlLm5ldworICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UKKyAg
ICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVmIHZhbHVlCisgICAgdHJ1ZQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgInRydWUiCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlIDwgTm9D
aGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQorICAgIHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBA
QGluc3RhbmNlID0gRmFsc2UubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5z
dGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgImZhbHNlIgorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlQ2xhc3MKKyAgZGVm
IGFzTm9kZQorICAgIFRydWUuaW5zdGFuY2UKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2VDbGFz
cworICBkZWYgYXNOb2RlCisgICAgRmFsc2UuaW5zdGFuY2UKKyAgZW5kCitlbmQKKworY2xhc3Mg
U2V0dGluZyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFt
ZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9y
TmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAg
IEBAbWFwcGluZ1tuYW1lXSA9IFNldHRpbmcubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5k
CisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisg
IGVuZAorZW5kCisKK2NsYXNzIEFuZCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdo
dAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBl
bmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisg
IGRlZiBtYXBDaGlsZHJlbgorICAgIEFuZC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwg
KHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1w
fSBhbmQgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE9yIDwgTm9kZQorICBh
dHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAor
ICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0
LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgT3IubmV3KGNvZGVP
cmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgIigje2xlZnQuZHVtcH0gb3IgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisK
K2NsYXNzIE5vdCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBjaGls
ZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRd
CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTm90Lm5ldyhjb2RlT3JpZ2luLCAo
eWllbGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIobm90ICN7Y2hpbGQu
ZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwIDwgTm9DaGlsZHJlbgorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiXHRza2lwIgorICBlbmQKK2VuZAorCitjbGFzcyBJZlRoZW5FbHNlIDwg
Tm9kZQorICBhdHRyX3JlYWRlciA6cHJlZGljYXRlLCA6dGhlbkNhc2UKKyAgYXR0cl9hY2Nlc3Nv
ciA6ZWxzZUNhc2UKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwg
dGhlbkNhc2UpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAcHJlZGljYXRlID0gcHJlZGlj
YXRlCisgICAgQHRoZW5DYXNlID0gdGhlbkNhc2UKKyAgICBAZWxzZUNhc2UgPSBTa2lwLm5ldyhj
b2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIGlmIEBlbHNlQ2FzZQor
ICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZSwgQGVsc2VDYXNlXQorICAgIGVsc2UKKyAgICAg
IFtAcHJlZGljYXRlLCBAdGhlbkNhc2VdCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIG1hcENo
aWxkcmVuCisgICAgSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBwcmVkaWNhdGUp
LCAoeWllbGQgQHRoZW5DYXNlKSwgKHlpZWxkIEBlbHNlQ2FzZSkpCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICAiaWYgI3twcmVkaWNhdGUuZHVtcH1cbiIgKyB0aGVuQ2FzZS5kdW1wICsgIlxu
ZWxzZVxuIiArIGVsc2VDYXNlLmR1bXAgKyAiXG5lbmQiCisgIGVuZAorZW5kCisKK2NsYXNzIE1h
Y3JvIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOnZhcmlhYmxlcywgOmJvZHkKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAgIEB2YXJpYWJsZXMgPSB2YXJp
YWJsZXMKKyAgICBAYm9keSA9IGJvZHkKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBA
dmFyaWFibGVzICsgW0Bib2R5XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE1h
Y3JvLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQHZhcmlhYmxlcy5tYXB7fHZ8IHlpZWxkIHZ9LCAo
eWllbGQgQGJvZHkpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIm1hY3JvICN7bmFtZX0o
IiArIHZhcmlhYmxlcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKVxuIiArIGJv
ZHkuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm9DYWxsIDwgTm9kZQor
ICBhdHRyX3JlYWRlciA6bmFtZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1l
ID0gbmFtZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgICAgcmFpc2UgdW5sZXNzIEBvcGVy
YW5kcworICAgIEBvcGVyYW5kcy5lYWNoe3x2fCByYWlzZSB1bmxlc3Mgdn0KKyAgZW5kCisgIAor
ICBkZWYgY2hpbGRyZW4KKyAgICBAb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRy
ZW4oJnByb2MpCisgICAgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQG9wZXJhbmRz
Lm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHQje25hbWV9KCIgKyBv
cGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKSIKKyAgZW5kCitlbmQK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5k
cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAieDg2IgorCitCQUNLRU5E
UyA9CisgIFsKKyAgICJYODYiLAorICAgIkFSTXY3IgorICBdCisKK1dPUktJTkdfQkFDS0VORFMg
PQorICBbCisgICAiWDg2IgorICBdCisKK0JBQ0tFTkRfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xc
QSgnICsgQkFDS0VORFMuam9pbignKXwoJykgKyAnKVxcWicpCisKK2NsYXNzIE5vZGUKKyAgZGVm
IGxvd2VyKG5hbWUpCisgICAgc2VuZCgibG93ZXIiICsgbmFtZSkKKyAgZW5kCitlbmQKKworIyBP
dmVycmlkZXMgZm9yIGxvd2VyKCkgZm9yIHRob3NlIG5vZGVzIHRoYXQgYXJlIGJhY2tlbmQtYWdu
b3N0aWMKKworZGVmIHNhbml0aXplTGFiZWxOYW1lKG5hbWUpCisgICMgU29tZSBwbGF0Zm9ybXMg
ZG9uJ3Qgd2FudCB0aGUgbGVhZGluZyAiXyIuIElmIHdlIGV2ZXIgd2FudCB0byBkbyBzb21ldGhp
bmcKKyAgIyBhYm91dCB0aGF0LCBpdCB3b3VsZCBiZSBoZXJlLgorICBuYW1lCitlbmQKKworY2xh
c3MgTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzICIuZ2xvYmwgI3tzYW5p
dGl6ZUxhYmVsTmFtZShzZWxmLm5hbWUpfSIKKyAgICAkYXNtLnB1dHMgIiN7c2FuaXRpemVMYWJl
bE5hbWUoc2VsZi5uYW1lKX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRl
ZiBsb3dlcihuYW1lKQorICAgICRhc20ucHV0cyAiTF9vZmZsaW5lYXNtXyN7c2VsZi5uYW1lWzEu
Li0xXX06IgorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwCisgIGRlZiBsb3dlcihuYW1lKQorICBl
bmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBAbGlzdC5l
YWNoIHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBub2RlLmxvd2VyKG5hbWUpCisgICAgfQorICBl
bmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0
ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFj
dG9yLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisjIS91c3IvYmluL2VudiBydWJ5
CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGly
bmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJvZmZzZXRzIgor
cmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zvcm0i
CisKK2RlZiBlbWl0TWFnaWNOdW1iZXIKKyAgT0ZGU0VUX01BR0lDX05VTUJFUlMuZWFjaCB7Cisg
ICAgfCBudW1iZXIgfAorICAgIHB1dHMgIiN7bnVtYmVyfSwiCisgIH0KK2VuZAorCitvcmlnaW5h
bEFTVCA9IHBhcnNlKGxleCgkc3RkaW4ucmVhZCkpCisKK2VtaXRDb2RlSW5BbGxDb25maWd1cmF0
aW9ucyhvcmlnaW5hbEFTVCkgeworICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwK
KyAgb2Zmc2V0c0xpc3QgPSBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CisgIHNp
emVzTGlzdCA9IGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKKyAgCisgIGxlbmd0aCA9IChP
RkZTRVRfTUFHSUNfTlVNQkVSUy5zaXplICsgMSkgKiAoMSArIG9mZnNldHNMaXN0LnNpemUgKyBz
aXplc0xpc3Quc2l6ZSkKKyAgCisgIHB1dHMgInN0YXRpYyBjb25zdCB1bnNpZ25lZCBleHRyYWN0
b3JUYWJsZVsje2xlbmd0aH1dID0geyIKKyAgZW1pdE1hZ2ljTnVtYmVyCisgIHB1dHMgIiN7aW5k
ZXh9LCIKKyAgb2Zmc2V0c0xpc3QuZWFjaCB7CisgICAgfCBvZmZzZXQgfAorICAgIGVtaXRNYWdp
Y051bWJlcgorICAgIHB1dHMgIk9GRkxJTkVfQVNNX09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0s
ICN7b2Zmc2V0LmZpZWxkfSksIgorICB9CisgIHNpemVzTGlzdC5lYWNoIHsKKyAgICB8IG9mZnNl
dCB8CisgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgcHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0cnVj
dH0pLCIKKyAgfQorICBwdXRzICJ9OyIKK30KKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxODggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K01BQ1JPX0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJhZGRpIiwKKyAgICJhbmRpIiwKKyAgICJs
c2hpZnRpIiwKKyAgICJtdWxpIiwKKyAgICJuZWdpIiwKKyAgICJub3RpIiwKKyAgICJvcmkiLAor
ICAgInJzaGlmdGkiLAorICAgInVyc2hpZnRpIiwKKyAgICJzdWJpIiwKKyAgICJ4b3JpIiwKKyAg
ICJsb2FkaSIsCisgICAibG9hZGIiLAorICAgImxvYWRoIiwKKyAgICJzdG9yZWkiLAorICAgInN0
b3JlYiIsCisgICAibG9hZGQiLAorICAgIm1vdmVkIiwKKyAgICJzdG9yZWQiLAorICAgImFkZGQi
LAorICAgImRpdmQiLAorICAgInN1YmQiLAorICAgIm11bGQiLAorICAgInNxcnRkIiwKKyAgICJj
aTJkIiwKKyAgICJmaWkyZCIsICMgdXNhZ2U6IGZpaTJkIDxncHIgd2l0aCBsZWFzdCBzaWduaWZp
Y2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxmcHI+CisgICAi
ZmQyaWkiLCAjIHVzYWdlOiBmZDJpaSA8ZnByPiwgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50
IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPgorICAgImJkZXEiLAorICAg
ImJkbmVxIiwKKyAgICJiZGd0IiwKKyAgICJiZGd0ZXEiLAorICAgImJkbHQiLAorICAgImJkbHRl
cSIsCisgICAiYmRlcXVuIiwKKyAgICJiZG5lcXVuIiwKKyAgICJiZGd0dW4iLAorICAgImJkZ3Rl
cXVuIiwKKyAgICJiZGx0dW4iLAorICAgImJkbHRlcXVuIiwKKyAgICJidGQyaSIsCisgICAidGQy
aSIsCisgICAiYmNkMmkiLAorICAgIm1vdmR6IiwKKyAgICJwb3AiLAorICAgInB1c2giLAorICAg
Im1vdmUiLAorICAgInN4aTJwIiwKKyAgICJ6eGkycCIsCisgICAibm9wIiwKKyAgICJiaWVxIiwK
KyAgICJiaW5lcSIsCisgICAiYmlhIiwKKyAgICJiaWFlcSIsCisgICAiYmliIiwKKyAgICJiaWJl
cSIsCisgICAiYmlndCIsCisgICAiYmlndGVxIiwKKyAgICJiaWx0IiwKKyAgICJiaWx0ZXEiLAor
ICAgImJiZXEiLAorICAgImJibmVxIiwKKyAgICJiYmEiLAorICAgImJiYWVxIiwKKyAgICJiYmIi
LAorICAgImJiYmVxIiwKKyAgICJiYmd0IiwKKyAgICJiYmd0ZXEiLAorICAgImJibHQiLAorICAg
ImJibHRlcSIsCisgICAiYnRpbyIsCisgICAiYnRpcyIsCisgICAiYnRpeiIsCisgICAiYnRpbnoi
LAorICAgImJ0Ym8iLAorICAgImJ0YnMiLAorICAgImJ0YnoiLAorICAgImJ0Ym56IiwKKyAgICJq
bXAiLAorICAgImJhZGRpbyIsCisgICAiYmFkZGlzIiwKKyAgICJiYWRkaXoiLAorICAgImJhZGRp
bnoiLAorICAgImJzdWJpbyIsCisgICAiYnN1YmlzIiwKKyAgICJic3ViaXoiLAorICAgImJzdWJp
bnoiLAorICAgImJtdWxpbyIsCisgICAiYm11bGlzIiwKKyAgICJibXVsaXoiLAorICAgImJtdWxp
bnoiLAorICAgImJvcmlvIiwKKyAgICJib3JpcyIsCisgICAiYm9yaXoiLAorICAgImJvcmlueiIs
CisgICAiYnJlYWsiLAorICAgImNhbGwiLAorICAgInJldCIsCisgICAiY2llcSIsCisgICAiY2lu
ZXEiLAorICAgImNpYSIsCisgICAiY2lhZXEiLAorICAgImNpYiIsCisgICAiY2liZXEiLAorICAg
ImNpZ3QiLAorICAgImNpZ3RlcSIsCisgICAiY2lsdCIsCisgICAiY2lsdGVxIiwKKyAgICJ0aW8i
LAorICAgInRpcyIsCisgICAidGl6IiwKKyAgICJ0aW56IiwKKyAgICJ0Ym8iLAorICAgInRicyIs
CisgICAidGJ6IiwKKyAgICJ0Ym56IiwKKyAgICJwZWVrIiwKKyAgICJwb2tlIiwKKyAgICJicGVx
IiwKKyAgICJicG5lcSIsCisgICAiYnBhIiwKKyAgICJicGFlcSIsCisgICAiYnBiIiwKKyAgICJi
cGJlcSIsCisgICAiYnBndCIsCisgICAiYnBndGVxIiwKKyAgICJicGx0IiwKKyAgICJicGx0ZXEi
LAorICAgImFkZHAiLAorICAgImFuZHAiLAorICAgIm9ycCIsCisgICAic3VicCIsCisgICAieG9y
cCIsCisgICAibG9hZHAiLAorICAgImNwZXEiLAorICAgImNwbmVxIiwKKyAgICJjcGEiLAorICAg
ImNwYWVxIiwKKyAgICJjcGIiLAorICAgImNwYmVxIiwKKyAgICJjcGd0IiwKKyAgICJjcGd0ZXEi
LAorICAgImNwbHQiLAorICAgImNwbHRlcSIsCisgICAic3RvcmVwIiwKKyAgICJidHBvIiwKKyAg
ICJidHBzIiwKKyAgICJidHB6IiwKKyAgICJidHBueiIsCisgICAiYmFkZHBvIiwKKyAgICJiYWRk
cHMiLAorICAgImJhZGRweiIsCisgICAiYmFkZHBueiIKKyAgXQorCitYODZfSU5TVFJVQ1RJT05T
ID0KKyAgWworICAgImNkcWkiLAorICAgImlkaXZpIgorICBdCisKK0lOU1RSVUNUSU9OUyA9IE1B
Q1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMKKworSU5TVFJVQ1RJT05fUEFUVEVS
TiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIElOU1RSVUNUSU9OUy5qb2luKCcpfCgnKSArICcpKVxc
WicpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFj
dG9yX2NvbnN0YW50cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRz
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitNQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1
IF0KKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMu
cmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZz
ZXRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJh
Y3Rvcl9jb25zdGFudHMiCisKK09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAw
eDBmZjVlNzU1IF0KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgb2Zmc2V0
c0xpc3QoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyBzaXplc0xpc3QoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUmV0dXJucyBhIGxp
c3Qgb2Ygb2Zmc2V0cyBhbmQgc2l6ZXMgdXNlZCBieSB0aGUgQVNULiAgICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIG9mZnNldHNMaXN0KGFz
dCkKKyAgYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorZW5kCisKK2RlZiBzaXpl
c0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CitlbmQKKworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRl
eChhc3QsIGZpbGUpIC0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgW29mZnNl
dHMsIGluZGV4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgUGFyc2VzIHRoZSBvZmZzZXRzIGZyb20gYSBmaWxlIGFu
ZCByZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCB0aGUgIworIyBpbmRleCBvZiB0aGUgY29u
ZmlndXJhdGlvbiB0aGF0IGlzIHZhbGlkIGluIHRoaXMgYnVpbGQgdGFyZ2V0LiAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgb2Zmc2V0c0FuZENvbmZpZ3Vy
YXRpb25JbmRleChmaWxlKQorICBpbmRleCA9IG5pbAorICBvZmZzZXRzID0gW10KKyAgZW5kaWFu
bmVzc01hcmtlckJ5dGVzID0gbmlsCisgIAorICBkZWYgcmVhZEludChlbmRpYW5uZXNzLCBpbnAp
CisgICAgYnl0ZXMgPSBbXQorICAgIDQudGltZXMgeworICAgICAgYnl0ZXMgPDwgaW5wLmdldGJ5
dGUKKyAgICB9CisgICAgCisgICAgaWYgZW5kaWFubmVzcyA9PSA6bGl0dGxlCisgICAgICAjIExp
dHRsZSBlbmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAwIHwKKyAgICAgICBieXRlc1sxXSA8PCA4
IHwKKyAgICAgICBieXRlc1syXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbM10gPDwgMjQpCisgICAg
ZWxzZQorICAgICAgIyBCaWcgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMjQgfAorICAgICAg
IGJ5dGVzWzFdIDw8IDE2IHwKKyAgICAgICBieXRlc1syXSA8PCA4IHwKKyAgICAgICBieXRlc1sz
XSA8PCAwKQorICAgIGVuZAorICBlbmQKKyAgCisgIFs6bGl0dGxlLCA6YmlnXS5lYWNoIHsKKyAg
ICB8IGVuZGlhbm5lc3MgfAorICAgIG1hZ2ljQnl0ZXMgPSBbXQorICAgIE1BR0lDX05VTUJFUlMu
ZWFjaCB7CisgICAgICB8IG51bWJlciB8CisgICAgICBjdXJyZW50Qnl0ZXMgPSBbXQorICAgICAg
NC50aW1lcyB7CisgICAgICAgIGN1cnJlbnRCeXRlcyA8PCAobnVtYmVyICYgMHhmZikKKyAgICAg
ICAgbnVtYmVyID4+PSA4CisgICAgICB9CisgICAgICBpZiBlbmRpYW5uZXNzID09IDpiaWcKKyAg
ICAgICAgY3VycmVudEJ5dGVzLnJldmVyc2UhCisgICAgICBlbmQKKyAgICAgIG1hZ2ljQnl0ZXMg
Kz0gY3VycmVudEJ5dGVzCisgICAgfQorICAgIAorICAgIEZpbGUub3BlbihmaWxlLCAiciIpIHsK
KyAgICAgIHwgaW5wIHwKKyAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICBsb29wIHsKKyAg
ICAgICAgYnl0ZSA9IGlucC5nZXRieXRlCisgICAgICAgIGJyZWFrIHVubGVzcyBieXRlCisgICAg
ICAgIGlmIGJ5dGUgPT0gbWFnaWNCeXRlc1t3aGVyZUluTWFya2VyXQorICAgICAgICAgIHdoZXJl
SW5NYXJrZXIgKz0gMQorICAgICAgICAgIGlmIHdoZXJlSW5NYXJrZXIgPT0gbWFnaWNCeXRlcy5z
aXplCisgICAgICAgICAgICAjIFdlIGhhdmUgYSBtYXRjaCEgSWYgd2UgaGF2ZSBub3QgeWV0IHJl
YWQgdGhlIGVuZGlhbm5lc3MgbWFya2VyIGFuZCBpbmRleCwKKyAgICAgICAgICAgICMgdGhlbiBy
ZWFkIHRob3NlIG5vdzsgb3RoZXJ3aXNlIHJlYWQgYW4gb2Zmc2V0LgorICAgICAgICAgICAgCisg
ICAgICAgICAgICBpZiBub3QgaW5kZXgKKyAgICAgICAgICAgICAgaW5kZXggPSByZWFkSW50KGVu
ZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgb2Zmc2V0cyA8
PCByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAg
CisgICAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICAgIGVuZAorICAgICAgICBl
bHNlCisgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgZW5kCisgICAgICB9Cisg
ICAgfQorICAgIAorICAgIGJyZWFrIGlmIGluZGV4CisgIH0KKyAgCisgIHJhaXNlIHVubGVzcyBp
bmRleAorICAKKyAgW29mZnNldHMsIGluZGV4XQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAtPiBbb2Zm
c2V0cywgc2l6ZXNdICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBCdWlsZHMg
YSBtYXBwaW5nIGJldHdlZW4gU3RydWN0T2Zmc2V0IG5vZGVzIGFuZCB0aGVpciB2YWx1ZXMuICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgYnVpbGRPZmZz
ZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpCisgIG9mZnNldHNNYXAgPSB7fQorICBzaXplc01hcCA9
IHt9CisgIGFzdE9mZnNldHNMaXN0ID0gb2Zmc2V0c0xpc3QoYXN0KQorICBhc3RTaXplc0xpc3Qg
PSBzaXplc0xpc3QoYXN0KQorICByYWlzZSB1bmxlc3MgYXN0T2Zmc2V0c0xpc3Quc2l6ZSArIGFz
dFNpemVzTGlzdC5zaXplID09IG9mZnNldHNMaXN0LnNpemUKKyAgb2Zmc2V0c0xpc3QoYXN0KS5l
YWNoX3dpdGhfaW5kZXggeworICAgIHwgc3RydWN0T2Zmc2V0LCBpbmRleCB8CisgICAgb2Zmc2V0
c01hcFtzdHJ1Y3RPZmZzZXRdID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQorICBzaXplc0xpc3Qo
YXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgc2l6ZW9mLCBpbmRleCB8CisgICAgc2l6ZXNN
YXBbc2l6ZW9mXSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgW29mZnNldHNNYXAsIHNpemVz
TWFwXQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNl
ci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJz
ZXIucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9w
YXJzZXIucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkxIEBACisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJpbnN0cnVjdGlv
bnMiCityZXF1aXJlICJyZWdpc3RlcnMiCisKK2NsYXNzIFRva2VuCisgIGF0dHJfcmVhZGVyIDpj
b2RlT3JpZ2luLCA6c3RyaW5nCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJp
bmcpCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgICAgQHN0cmluZyA9IHN0cmluZwor
ICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBpZiBvdGhlci5pc19hPyBUb2tlbgorICAg
ICAgQHN0cmluZyA9PSBvdGhlci5zdHJpbmcKKyAgICBlbHNlCisgICAgICBAc3RyaW5nID09IG90
aGVyCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmID1+KG90aGVyKQorICAgIEBzdHJpbmcgPX4g
b3RoZXIKKyAgZW5kCisgIAorICBkZWYgdG9fcworICAgICIje0BzdHJpbmcuaW5zcGVjdH0gYXQg
bGluZSAje2NvZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50
KQorICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9f
c30iCisgICAgZWxzZQorICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9OiAje2NvbW1l
bnRbMF19IgorICAgIGVuZAorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyBUaGUgbGV4ZXIuIFRha2VzIGEgc3RyaW5nIGFuZCByZXR1cm5zIGFuIGFycmF5
IG9mIHRva2Vucy4gICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworCitkZWYgbGV4KHN0cikKKyAgcmVzdWx0ID0gW10KKyAgbGluZU51bWJlciA9IDEKKyAgd2hp
bGUgbm90IHN0ci5lbXB0eT8KKyAgICBjYXNlIHN0cgorICAgIHdoZW4gL1xBXCMoW15cbl0qKS8K
KyAgICAgICMgY29tbWVudCwgaWdub3JlCisgICAgd2hlbiAvXEFcbi8KKyAgICAgIHJlc3VsdCA8
PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICBsaW5lTnVtYmVyICs9IDEKKyAgICB3
aGVuIC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5l
dyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVwuKFthLXpBLVowLTlfXSopLworICAgICAg
cmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQV8oW2EtekEt
WjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAg
IHdoZW4gL1xBKFsgXHRdKykvCisgICAgICAjIHdoaXRlc3BhY2UsIGlnbm9yZQorICAgIHdoZW4g
L1xBMHgoWzAtOWEtZkEtRl0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJl
ciwgJCYuaGV4LnRvX3MpCisgICAgd2hlbiAvXEEwKFswLTddKykvCisgICAgICByZXN1bHQgPDwg
VG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLm9jdC50b19zKQorICAgIHdoZW4gL1xBKFswLTldKykv
CisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xB
OjovCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4g
L1xBWzosXChcKVxbXF09XCtcLSpdLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVt
YmVyLCAkJikKKyAgICBlbHNlCisgICAgICByYWlzZSAiTGV4ZXIgZXJyb3IgYXQgbGluZSBudW1i
ZXIgI3tsaW5lTnVtYmVyfSwgdW5leHBlY3RlZCBzZXF1ZW5jZSAje3N0clswLi4yMF0uaW5zcGVj
dH0iCisgICAgZW5kCisgICAgc3RyID0gJH4ucG9zdF9tYXRjaAorICBlbmQKKyAgcmVzdWx0Citl
bmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVG9rZW4gaWRlbnRpZmlj
YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGlzUmVnaXN0ZXIodG9rZW4p
CisgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJbnN0cnVjdGlvbih0
b2tlbikKKyAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0tleXdv
cmQodG9rZW4pCisgIHRva2VuID1+IC9cQSgodHJ1ZSl8KGZhbHNlKXwoaWYpfCh0aGVuKXwoZWxz
ZSl8KGVsc2lmKXwoZW5kKXwoYW5kKXwob3IpfChub3QpfChtYWNybyl8KGNvbnN0KXwoc2l6ZW9m
KXwoZXJyb3IpKVxaLyBvcgorICAgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4gb3IKKyAgICB0
b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzSWRlbnRpZmllcih0b2tl
bikKKyAgdG9rZW4gPX4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKilcWi8gYW5kIG5vdCBpc0tl
eXdvcmQodG9rZW4pCitlbmQKKworZGVmIGlzTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQV8o
W2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNMb2NhbExhYmVsKHRva2VuKQorICB0b2tl
biA9fiAvXEFcLihbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc1ZhcmlhYmxlKHRva2Vu
KQorICBpc0lkZW50aWZpZXIodG9rZW4pIG9yIGlzUmVnaXN0ZXIodG9rZW4pCitlbmQKKworZGVm
IGlzSW50ZWdlcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBWzAtOV0vCitlbmQKKworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIHBhcnNlci4gVGFrZXMgYW4gYXJyYXkgb2Yg
dG9rZW5zIGFuZCByZXR1cm5zIGFuIEFTVC4gTWV0aG9kcyAgICAgIworIyBvdGhlciB0aGFuIHBh
cnNlKHRva2VucykgYXJlIG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9uLiAgICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBQYXJzZXIKKyAgZGVm
IGluaXRpYWxpemUodG9rZW5zKQorICAgIEB0b2tlbnMgPSB0b2tlbnMKKyAgICBAaWR4ID0gMAor
ICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIEB0b2tlbnNbQGlk
eF0KKyAgICAgIEB0b2tlbnNbQGlkeF0ucGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBlbHNlCisg
ICAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5k
IG9mIGZpbGUiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQg
b2YgZmlsZTogI3tjb21tZW50WzBdfSIKKyAgICAgIGVuZAorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBjb25zdW1lKHJlZ2V4cCkKKyAgICBpZiByZWdleHAKKyAgICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIEB0b2tlbnNbQGlkeF0gPX4gcmVnZXhwCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1
bmxlc3MgQGlkeCA9PSBAdG9rZW5zLmxlbmd0aAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICBl
bmQKKyAgCisgIGRlZiBza2lwTmV3TGluZQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIlxu
IgorICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGlj
YXRlQXRvbQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm5vdCIKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIK
KyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJlc3VsdCA9IHBhcnNl
UHJlZGljYXRlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgor
ICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJ0cnVlIgorICAgICAgcmVzdWx0ID0gVHJ1ZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisg
ICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJmYWxzZSIKKyAgICAgIHJl
c3VsdCA9IEZhbHNlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAg
IGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBTZXR0aW5n
LmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykK
KyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJv
cgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZUFuZAorICAgIHJlc3Vs
dCA9IHBhcnNlUHJlZGljYXRlQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImFuZCIK
KyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHgg
Kz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBdG9t
CisgICAgICByZXN1bHQgPSBBbmQubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAg
ZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlCisgICAgIyBz
b21lIGV4YW1wbGVzIG9mIHByZWNlZGVuY2U6CisgICAgIyBub3QgYSBhbmQgYiAtPiAobm90IGEp
IGFuZCBiCisgICAgIyBhIGFuZCBiIG9yIGMgLT4gKGEgYW5kIGIpIG9yIGMKKyAgICAjIGEgb3Ig
YiBhbmQgYyAtPiBhIG9yIChiIGFuZCBjKQorICAgIAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGlj
YXRlQW5kCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAib3IiCisgICAgICBjb2RlT3JpZ2lu
ID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBO
ZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgICByZXN1bHQgPSBP
ci5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VWYXJpYWJsZQorICAgIGlmIGlzUmVnaXN0ZXIoQHRva2Vuc1tA
aWR4XSkKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPX4gRlBSX1BBVFRFUk4KKyAgICAgICAgcmVz
dWx0ID0gRlBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9r
ZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUmVnaXN0ZXJJ
RC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcp
CisgICAgICBlbmQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAg
IHJlc3VsdCA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9r
ZW5zW0BpZHhdLnN0cmluZykKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisg
ICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQWRkcmVzcyhv
ZmZzZXQpCisgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICBj
b2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgCisgICAgIyBUaHJlZSBw
b3NzaWJpbGl0aWVzOgorICAgICMgW10gICAgICAgLT4gQWJzb2x1dGVBZGRyZXNzCisgICAgIyBb
YV0gICAgICAtPiBBZGRyZXNzCisgICAgIyBbYSxiXSAgICAtPiBCYXNlSW5kZXggd2l0aCBzY2Fs
ZSA9IDEKKyAgICAjIFthLGIsY10gIC0+IEJhc2VJbmRleAorICAgIAorICAgIEBpZHggKz0gMQor
ICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJldHVy
biBBYnNvbHV0ZUFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIG9mZnNldCkKKyAgICBlbmQKKyAgICBh
ID0gcGFyc2VWYXJpYWJsZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICByZXN1
bHQgPSBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBhLCBvZmZzZXQpCisgICAgZWxzZQorICAgICAg
cGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgYiA9IHBhcnNlVmFyaWFibGUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisg
ICAgICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgMSwgb2Zmc2V0
KQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09
ICIsIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgWyIxIiwg
IjIiLCAiNCIsICI4Il0ubWVtYmVyPyBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBjID0g
QHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFz
ZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCBjLCBvZmZzZXQpCisgICAgICBlbmQKKyAgICBl
bmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VDb2xv
bkNvbG9uCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luCisgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlk
eF0KKyAgICBuYW1lcyA9IFtAdG9rZW5zW0BpZHhdLnN0cmluZ10KKyAgICBAaWR4ICs9IDEKKyAg
ICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICI6OiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIG5hbWVzIDw8
IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgICByYWlz
ZSBpZiBuYW1lcy5lbXB0eT8KKyAgICBbY29kZU9yaWdpbiwgbmFtZXNdCisgIGVuZAorICAKKyAg
ZGVmIHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICBza2lwTmV3TGluZQorICAgIGlmIEB0b2tlbnNb
QGlkeF0gPT0gIi0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIE5lZ0ltbWVkaWF0ZS5uZXcoQHRv
a2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQgPSBw
YXJzZUV4cHJlc3Npb24KKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0g
IikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSW50ZWdlciBA
dG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faSkKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAg
IGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBpZiBuYW1lcy5zaXpl
ID4gMQorICAgICAgICBTdHJ1Y3RPZmZzZXQuZm9yRmllbGQoY29kZU9yaWdpbiwgbmFtZXNbMC4u
LTJdLmpvaW4oJzo6JyksIG5hbWVzWy0xXSkKKyAgICAgIGVsc2UKKyAgICAgICAgVmFyaWFibGUu
Zm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lc1swXSkKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzUmVn
aXN0ZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcGFyc2VWYXJpYWJsZQorICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gInNpemVvZiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgY29kZU9yaWdpbiwg
bmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIFNpemVvZi5mb3JOYW1lKGNvZGVPcmlnaW4s
IG5hbWVzLmpvaW4oJzo6JykpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICBza2lwTmV3TGluZQorICAg
IHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09
ICIqIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIHJlc3VsdCA9IE11bEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVP
cmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICAgIGVsc2UKKyAgICAgICAg
cmFpc2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBj
b3VsZEJlRXhwcmVzc2lvbgorICAgIEB0b2tlbnNbQGlkeF0gPT0gIi0iIG9yIEB0b2tlbnNbQGlk
eF0gPT0gInNpemVvZiIgb3IgaXNJbnRlZ2VyKEB0b2tlbnNbQGlkeF0pIG9yIGlzVmFyaWFibGUo
QHRva2Vuc1tAaWR4XSkgb3IgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgZW5kCisgIAorICBkZWYg
cGFyc2VFeHByZXNzaW9uCisgICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJl
c3Npb25NdWwKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIrIiBvciBAdG9rZW5zW0BpZHhd
ID09ICItIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKyIKKyAgICAgICAgQGlkeCArPSAx
CisgICAgICAgIHJlc3VsdCA9IEFkZEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNv
ZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzaWYgQHRva2Vu
c1tAaWR4XSA9PSAiLSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IFN1Yklt
bWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VF
eHByZXNzaW9uTXVsKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAg
ZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlT3BlcmFuZChjb21tZW50KQor
ICAgIGlmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgICBleHByID0gcGFyc2VFeHByZXNzaW9uCisg
ICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAgICBwYXJzZUFkZHJlc3MoZXhwcikK
KyAgICAgIGVsc2UKKyAgICAgICAgZXhwcgorICAgICAgZW5kCisgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAiWyIKKyAgICAgIHBhcnNlQWRkcmVzcyhJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgMCkpCisgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAg
ICByZXN1bHQgPSBMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBM
YWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJp
bmcpKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0xvY2FsTGFi
ZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXco
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMb2NhbExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IoY29tbWVudCkKKyAgICBlbmQK
KyAgZW5kCisgIAorICBkZWYgcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgIHNraXBOZXdMaW5lCisg
ICAgY29uc3VtZSgvXEFcKFxaLykKKyAgICB2YXJpYWJsZXMgPSBbXQorICAgIGxvb3AgeworICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNb
QGlkeF0pCisgICAgICAgIHZhcmlhYmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gIiwiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICBwYXJzZUVycm9yCisgICAgICAgIGVuZAorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9y
CisgICAgICBlbmQKKyAgICB9CisgICAgdmFyaWFibGVzCisgIGVuZAorICAKKyAgZGVmIHBhcnNl
U2VxdWVuY2UoZmluYWwsIGNvbW1lbnQpCisgICAgZmlyc3RDb2RlT3JpZ2luID0gQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luCisgICAgbGlzdCA9IFtdCisgICAgbG9vcCB7CisgICAgICBpZiAoQGlk
eCA9PSBAdG9rZW5zLmxlbmd0aCBhbmQgbm90IGZpbmFsKSBvciAoZmluYWwgYW5kIEB0b2tlbnNb
QGlkeF0gPX4gZmluYWwpCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICJcbiIKKyAgICAgICAgIyBpZ25vcmUKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICJjb25zdCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBh
cnNlRXJyb3IgdW5sZXNzIGlzVmFyaWFibGUgQHRva2Vuc1tAaWR4XQorICAgICAgICB2YXJpYWJs
ZSA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0Bp
ZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNz
IEB0b2tlbnNbQGlkeF0gPT0gIj0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YWx1ZSA9
IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGNvbnN0ICN7dmFyaWFibGUubmFtZX0iKQor
ICAgICAgICBsaXN0IDw8IENvbnN0RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCB2
YXJpYWJsZSwgdmFsdWUpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJlcnJvciIKKyAg
ICAgICAgbGlzdCA8PCBFcnJvci5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luKQorICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImlmIgorICAgICAgICBj
b2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQor
ICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgIHNraXBOZXdMaW5l
CisgICAgICAgIGlmVGhlbkVsc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNh
dGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGlu
c2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgbGlzdCA8PCBpZlRo
ZW5FbHNlCisgICAgICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImVsc2lmIgorICAgICAgICAg
IGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJl
ZGljYXRlCisgICAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICAg
IHNraXBOZXdMaW5lCisgICAgICAgICAgZWxzZUNhc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3Jp
Z2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxa
LywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAg
ICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNhc2UKKyAgICAgICAgICBpZlRoZW5FbHNlID0g
ZWxzZUNhc2UKKyAgICAgICAgZW5kCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gImVsc2Ui
CisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IHBh
cnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGVsc2UgY2FzZSBmb3IgXCJp
ZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxz
ZQorICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gImVuZCIKKyAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICJtYWNybyIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdp
bgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIG5hbWUgPSBA
dG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFyaWFibGVz
ID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFl
bmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gI3tuYW1lfSIpCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBsaXN0IDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMs
IGJvZHkpCisgICAgICBlbHNpZiBpc0luc3RydWN0aW9uIEB0b2tlbnNbQGlkeF0KKyAgICAgICAg
Y29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRv
a2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIChub3QgZmlu
YWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0g
PX4gZmluYWwpCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24sIGFuZCBpdCdz
IHRoZSBsYXN0IG9uZS4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3Jp
Z2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0Bp
ZHhdID09ICJcbiIKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbi4KKyAgICAg
ICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgICMgSXQncyBkZWZpbml0ZWx5
IGFuIGluc3RydWN0aW9uLCBhbmQgaXQgaGFzIGF0IGxlYXN0IG9uZSBvcGVyYW5kLgorICAgICAg
ICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gZmFsc2UKKyAgICAg
ICAgICBsb29wIHsKKyAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUg
aW5zaWRlIG9mIGluc3RydWN0aW9uICN7bmFtZX0iKQorICAgICAgICAgICAgaWYgKG5vdCBmaW5h
bCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9
fiBmaW5hbCkKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbiBhbmQg
b2YgdGhlIHNlcXVlbmNlLgorICAgICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gdHJ1ZQorICAg
ICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIK
KyAgICAgICAgICAgICAgIyBIYXMgYW5vdGhlciBvcGVyYW5kLgorICAgICAgICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAg
ICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uLgorICAgICAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
cGFyc2VFcnJvcigiRXhwZWN0ZWQgYSBjb21tYSwgbmV3bGluZSwgb3IgI3tmaW5hbH0gYWZ0ZXIg
I3tvcGVyYW5kcy5sYXN0LmR1bXB9IikKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgIH0KKyAg
ICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5k
cykKKyAgICAgICAgICBpZiBlbmRPZlNlcXVlbmNlCisgICAgICAgICAgICBicmVhaworICAgICAg
ICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0Bp
ZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAg
ICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgICAgICMgTWFjcm8gaW52b2NhdGlvbi4K
KyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAg
c2tpcE5ld0xpbmUKKyAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9vcCB7CisgICAgICAg
ICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm1h
Y3JvIgorICAgICAgICAgICAgICAgICMgSXQncyBhIG1hY3JvIGxhbWJkYSEKKyAgICAgICAgICAg
ICAgICBjb2RlT3JpZ2luSW5uZXIgPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3Jv
VmFyaWFibGVzCisgICAgICAgICAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFov
LCAid2hpbGUgaW5zaWRlIG9mIGFub255bW91cyBtYWNybyBwYXNzZWQgYXMgYXJndW1lbnQgdG8g
I3tuYW1lfSIpCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgb3Bl
cmFuZHMgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJpYWJsZXMsIGJvZHkp
CisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9w
ZXJhbmQoIndoaWxlIGluc2lkZSBvZiBtYWNybyBjYWxsIHRvICN7bmFtZX0iKQorICAgICAgICAg
ICAgICBlbmQKKyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAg
ICAgICBicmVhaworICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAg
ICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgcGFyc2VFcnJvciAiVW5leHBlY3RlZCAje0B0b2tlbnNbQGlkeF0uc3RyaW5nLmluc3BlY3R9
IHdoaWxlIHBhcnNpbmcgaW52b2NhdGlvbiBvZiBtYWNybyAje25hbWV9IgorICAgICAgICAgICAg
ICBlbmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbmQKKyAgICAgICAgICBsaXN0IDw8IE1h
Y3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9IgorICAgICAg
ICBlbmQKKyAgICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XSBvciBpc0xvY2FsTGFiZWwg
QHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiOiIKKyAgICAg
ICAgIyBJdCdzIGEgbGFiZWwuCisgICAgICAgIGlmIGlzTGFiZWwgbmFtZQorICAgICAgICAgIGxp
c3QgPDwgTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbHNlCisgICAg
ICAgICAgbGlzdCA8PCBMb2NhbExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAg
ICAgZW5kCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9y
ICJFeHBlY3RpbmcgdGVybWluYWwgI3tmaW5hbH0gI3tjb21tZW50fSIKKyAgICAgIGVuZAorICAg
IH0KKyAgICBTZXF1ZW5jZS5uZXcoZmlyc3RDb2RlT3JpZ2luLCBsaXN0KQorICBlbmQKK2VuZAor
CitkZWYgcGFyc2UodG9rZW5zKQorICBwYXJzZXIgPSBQYXJzZXIubmV3KHRva2VucykKKyAgcGFy
c2VyLnBhcnNlU2VxdWVuY2UobmlsLCAiIikKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDU5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitHUFJT
ID0KKyAgWworICAgInQwIiwKKyAgICJ0MSIsCisgICAidDIiLAorICAgInQzIiwKKyAgICJ0NCIs
CisgICAiY2ZyIiwKKyAgICJhMCIsCisgICAiYTEiLAorICAgInIwIiwKKyAgICJyMSIsCisgICAi
c3AiCisgIF0KKworRlBSUyA9CisgIFsKKyAgICJmdDAiLAorICAgImZ0MSIsCisgICAiZnQyIiwK
KyAgICJmdDMiLAorICAgImZ0NCIsCisgICAiZnQ1IiwKKyAgICJmYTAiLAorICAgImZhMSIsCisg
ICAiZmEyIiwKKyAgICJmYTMiLAorICAgImZyIgorICBdCisKK1JFR0lTVEVSUyA9IEdQUlMgKyBG
UFJTCisKK0dQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgR1BSUy5qb2luKCcpfCgn
KSArICcpKVxcWicpCitGUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMuam9p
bignKXwoJykgKyAnKSlcXFonKQorCitSRUdJU1RFUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxB
KCgnICsgUkVHSVNURVJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjIxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCity
ZXF1aXJlICJhc3QiCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVp
cmUgInRyYW5zZm9ybSIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgY29t
cHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgLT4gc2V0dGluZ3NDb21iaWF0aW9ucyAgICAg
ICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbXB1dGVzIGFuIGFycmF5IG9mIHNldHRp
bmdzIG1hcHMsIHdoZXJlIGEgc2V0dGluZ3MgbWFwIGNvbnN0aXR1dGVzICMKKyMgYSBjb25maWd1
cmF0aW9uIGZvciB0aGUgYXNzZW1ibHkgY29kZSBiZWluZyBnZW5lcmF0ZWQuIFRoZSBtYXAgICAg
ICAgIworIyBjb250YWlucyBrZXkgdmFsdWUgcGFpcnMgd2hlcmUga2V5cyBhcmUgc2V0dGluZ3Mg
bmFtZXMgKHN0cmluZ3MpIGFuZCAjCisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xlYW5zICh0cnVlIGZv
ciBlbmFibGVkLCBmYWxzZSBmb3IgZGlzYWJsZWQpLiAgICAgICMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisKK2RlZiBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQor
ICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IFtdCisgIAorICBkZWYgc2V0dGluZ3NDb21iaW5hdG9y
KHNldHRpbmdzQ29tYmluYXRpb25zLCBtYXBTb0ZhciwgcmVtYWluaW5nKQorICAgIGlmIHJlbWFp
bmluZy5lbXB0eT8KKyAgICAgIHNldHRpbmdzQ29tYmluYXRpb25zIDw8IG1hcFNvRmFyCisgICAg
ICByZXR1cm4KKyAgICBlbmQKKyAgICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBu
ZXdNYXBbcmVtYWluaW5nWzBdXSA9IHRydWUKKyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGlu
Z3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgICAKKyAgICBuZXdN
YXAgPSBtYXBTb0Zhci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IGZhbHNlCisgICAg
c2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmlu
Z1sxLi4tMV0pCisgIGVuZAorICAKKyAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmlu
YXRpb25zLCB7fSwgKGFzdC5maWx0ZXIoU2V0dGluZykudW5pcS5jb2xsZWN0e3x2fCB2Lm5hbWV9
ICsgWyJYODYiLCAiQVJNdjciXSkudW5pcSkKKyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zCitl
bmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yU2V0dGluZ3MoY29u
Y3JldGVTZXR0aW5ncywgYXN0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8IC4uLiB9ICAg
ICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRGV0ZXJtaW5lcyBpZiB0aGUgc2V0
dGluZ3MgY29tYmluYXRpb24gaXMgdmFsaWQsIGFuZCBpZiBzbywgY2FsbHMgICAgIworIyB0aGUg
YmxvY2sgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91IG5lZWQgdG8gZ2VuZXJhdGUgY29kZS4gICAg
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZm9yU2V0
dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KQorICAjIENoZWNrIHdoaWNoIGFyY2hpdGVjdHVy
ZXMgdGhpcyBjb21iaW5hdG9yIGNsYWltcyB0byBzdXBwb3J0LgorICBudW1DbGFpbWVkQmFja2Vu
ZHMgPSAwCisgIHNlbGVjdGVkQmFja2VuZCA9IG5pbAorICBCQUNLRU5EUy5lYWNoIHsKKyAgICB8
IGJhY2tlbmQgfAorICAgIGlzU3VwcG9ydGVkID0gY29uY3JldGVTZXR0aW5nc1tiYWNrZW5kXQor
ICAgIHJhaXNlIHVubGVzcyBpc1N1cHBvcnRlZCAhPSBuaWwKKyAgICBudW1DbGFpbWVkQmFja2Vu
ZHMgKz0gaWYgaXNTdXBwb3J0ZWQgdGhlbiAxIGVsc2UgMCBlbmQKKyAgICBpZiBpc1N1cHBvcnRl
ZAorICAgICAgc2VsZWN0ZWRCYWNrZW5kID0gYmFja2VuZAorICAgIGVuZAorICB9CisgIAorICBy
ZXR1cm4gaWYgbnVtQ2xhaW1lZEJhY2tlbmRzID4gMQorICAKKyAgIyBSZXNvbHZlIHRoZSBBU1Qg
ZG93biB0byBhIGxvdy1sZXZlbCBmb3JtIChubyBtYWNyb3Mgb3IgY29uZGl0aW9uYWxzKS4KKyAg
bG93TGV2ZWxBU1QgPSBhc3QucmVzb2x2ZVNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MpCisgIAor
ICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgc2VsZWN0ZWRCYWNrZW5kCitl
bmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yRWFjaFZhbGlkU2V0
dGluZ3NDb21iaW5hdGlvbihhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAg
ICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3ND
b21iaW5hdGlvbihhc3QsIHNldHRpbmdzQ29tYmluYXRpb25zKSB7ICAgICAgICAgIworIyAgICAg
fCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAgICAg
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRXhlY3V0ZXMgdGhlIGdpdmVuIGJsb2NrIGZv
ciBlYWNoIHZhbGlkIHNldHRpbmdzIGNvbWJpbmF0aW9uIGluIHRoZSAgIworIyBzZXR0aW5ncyBt
YXAuIFRoZSBhc3QgcGFzc2VkIGludG8gdGhlIGJsb2NrIGlzIHJlc29sdmVkICAgICAgICAgICAg
ICAjCisjIChhc3QucmVzb2x2ZSkgYWdhaW5zdCB0aGUgc2V0dGluZ3MuICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgZmlyc3QgZm9ybSB3
aWxsIGNhbGwgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgZm9yIHlvdS4gICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZm9yRWFjaFZhbGlkU2V0dGlu
Z3NDb21iaW5hdGlvbihhc3QsICpvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zKQorICByYWlz
ZSBpZiBvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zLnNpemUgPiAxCisgIAorICBpZiBvcHRp
b25hbFNldHRpbmdzQ29tYmluYXRpb25zLmVtcHR5PworICAgIHNldHRpbmdzQ29tYmluYXRpb25z
ID0gY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgZWxzZQorICAgIHNldHRpbmdz
Q29tYmluYXRpb25zID0gb3B0aW9uYWxTZXR0aW5nc0NvbWJpYXRpb25zWzBdCisgIGVuZAorICAK
KyAgc2V0dGluZ3NDb21iaW5hdGlvbnMuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IGNvbmNyZXRl
U2V0dGluZ3MsIGluZGV4IHwKKyAgICBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3Qp
IHsKKyAgICAgIHwgY29uY3JldGVTZXR0aW5nc18sIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAg
ICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAor
ICAgIH0KKyAgfQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGNw
cFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBSZXR1cm5zIHRoZSBDKysgY29kZSB1c2Vk
IHRvIHRlc3QgaWYgd2UgYXJlIGluIGEgY29uZmlndXJhdGlvbiB0aGF0ICAjCisjIGNvcnJlc3Bv
bmRzIHRvIHRoZSBnaXZlbiBjb25jcmV0ZSBzZXR0aW5ncy4gICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBjcHBTZXR0aW5n
c1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgIiNpZiAiICsgY29uY3JldGVTZXR0aW5ncy50b19h
LmNvbGxlY3R7CisgICAgfCBwYWlyIHwKKyAgICAoaWYgcGFpclsxXQorICAgICAgICIiCisgICAg
IGVsc2UKKyAgICAgICAiISIKKyAgICAgZW5kKSArICJPRkZMSU5FX0FTTV8iICsgcGFpclswXQor
ICB9LmpvaW4oIiAmJiAiKQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIGlzQVNURXJyb25lb3VzKGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUZXN0cyB0byBzZWUgaWYgdGhl
IEFTVCBjbGFpbXMgdGhhdCB0aGVyZSBpcyBhbiBlcnJvciAtIGkuZS4gaWYgdGhlICAjCisjIHVz
ZXIncyBjb2RlLCBhZnRlciBzZXR0aW5ncyByZXNvbHV0aW9uLCBoYXMgRXJyb3Igbm9kZXMuICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBpc0FT
VEVycm9uZW91cyhhc3QpCisgIG5vdCBhc3QuZmlsdGVyKEVycm9yKS5lbXB0eT8KK2VuZAorCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBhc3NlcnRDb25maWd1cmF0aW9uKGNv
bmNyZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgRW1pdHMgYSBjaGVjayB0aGF0IGFzc2VydHMgdGhhdCB3ZSdyZSB1c2luZyB0
aGUgZ2l2ZW4gY29uZmlndXJhdGlvbi4gIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKworZGVmIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAgcHV0cyBj
cHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgcHV0cyAiI2Vsc2UiCisgIHB1dHMg
IiNlcnJvciBcIkNvbmZpZ3VyYXRpb24gbWlzbWF0Y2guXCIiCisgIHB1dHMgIiNlbmRpZiIKK2Vu
ZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBlbWl0Q29kZUluQ29uZmln
dXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpIHsgICAgICAgICAgICAjCisj
ICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCB8IC4uLiB9ICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFbWl0cyBhbGwgcmVsZXZhbnQgZ3Vh
cmRzIHRvIHNlZSBpZiB0aGUgY29uZmlndXJhdGlvbiBob2xkcyBhbmQgICAgICAjCisjIGNhbGxz
IHRoZSBibG9jayBpZiB0aGUgY29uZmlndXJhdGlvbiBpcyBub3QgZXJyb25lb3VzLiAgICAgICAg
ICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBlbWl0Q29k
ZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpCisgIHB1dHMg
Y3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICBpZiBpc0FTVEVycm9uZW91
cyhhc3QpCisgICAgcHV0cyAiI2Vycm9yIFwiSW52YWxpZCBjb25maWd1cmF0aW9uLlwiIgorICBl
bHNpZiBub3QgV09SS0lOR19CQUNLRU5EUy5pbmNsdWRlPyBiYWNrZW5kCisgICAgcHV0cyAiI2Vy
cm9yIFwiVGhpcyBiYWNrZW5kIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LlwiIgorICBlbHNlCisgICAg
eWllbGQgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kCisgIGVuZAorICAKKyAgcHV0cyAi
I2VuZGlmIgorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGVtaXRD
b2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8
IC4uLiB9ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEVtaXRzIGd1YXJk
IGNvZGVzIGZvciBhbGwgdmFsaWQgY29uZmlndXJhdGlvbnMsIGFuZCBjYWxscyB0aGUgYmxvY2sg
ICMKKyMgZm9yIHRob3NlIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHZhbGlkIGFuZCBub3QgZXJy
b25lb3VzLiAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor
ZGVmIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3QpCisgIGZvckVhY2hWYWxpZFNldHRp
bmdzQ29tYmluYXRpb24oYXN0KSB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFT
VCwgYmFja2VuZCwgaW5kZXggfAorICAgIHB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0
dGluZ3MpCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQs
IGluZGV4CisgICAgcHV0cyAiI2VuZGlmIgorICB9CitlbmQKKworCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzUyIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCityZXF1aXJlICJhc3QiCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IG5vZGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRo
YXQgZG9lcyBub3QgaGF2ZSBhbnkgSWZUaGVuRWxzZSBub2RlcyBieSAgICAgICAjCisjIHN1YnN0
aXR1dGluZyBjb25jcmV0ZSBib29sZWFuIHZhbHVlcyBmb3IgZWFjaCBTZXR0aW5nLiAgICAgICAg
ICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUK
KyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAg
ICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICB9
CisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlCisgIGRlZiByZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nCisg
IGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2V0dGluZ3NbQG5hbWVdLmFzTm9k
ZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykKKyAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBhbmQgQHJpZ2h0
LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitj
bGFzcyBPcgorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIG9yIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgTm90CisgIGRlZiByZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKG5vdCBAY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNl
dHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UKKyAg
ZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBpZiBAcHJlZGljYXRlLnJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykudmFsdWUKKyAgICAgIEB0aGVuQ2FzZS5yZXNvbHZlU2V0dGluZ3Mo
c2V0dGluZ3MpCisgICAgZWxzZQorICAgICAgQGVsc2VDYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHJlc29s
dmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsK
KyAgICAgIHwgaXRlbSB8CisgICAgICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgICBpZiBpdGVtLmlzX2E/IFNlcXVlbmNlCisgICAgICAgIG5ld0xpc3QgKz0gaXRl
bS5saXN0CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbQorICAgICAgZW5kCisg
ICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKK2VuZAor
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLmRlbWFjcm9pZnkobWFj
cm9zKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5v
ZGUuc3Vic3RpdHV0ZShtYXBwaW5nKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBkZW1hY3JvaWZ5KCkgY29uc3RydWN0cyBh
IG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBNYWNybyAgICAgICAjCisjIG5vZGVzLCB3
aGlsZSBzdWJzdGl0dXRlKCkgcmVwbGFjZXMgVmFyaWFibGUgbm9kZXMgd2l0aCB0aGUgZ2l2ZW4g
ICAgICMKKyMgbm9kZXMgaW4gdGhlIG1hcHBpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KworY2xhc3MgTm9kZQorICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbWFwQ2hpbGRyZW4g
eworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5kZW1hY3JvaWZ5KG1hY3JvcykKKyAgICB9
CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBtYXBDaGlsZHJlbiB7
CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobWFwcGluZykKKyAgICB9
CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBtYXBDaGls
ZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGVMYWJlbHMobWFw
cGluZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvCisgIGRlZiBzdWJzdGl0dXRl
KG1hcHBpbmcpCisgICAgbXlNYXBwaW5nID0ge30KKyAgICBtYXBwaW5nLmVhY2hfcGFpciB7Cisg
ICAgICB8IGtleSwgdmFsdWUgfAorICAgICAgdW5sZXNzIEB2YXJpYWJsZXMuaW5jbHVkZT8ga2V5
CisgICAgICAgIG15TWFwcGluZ1trZXldID0gdmFsdWUKKyAgICAgIGVuZAorICAgIH0KKyAgICBt
YXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobXlN
YXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUKKyAgZGVmIHN1YnN0
aXR1dGUobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZd
CisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBMb2Nh
bExhYmVsCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgaWYgbWFwcGluZ1tz
ZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQK
KyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHN1YnN0aXR1dGUoY29uc3RhbnRz
KQorICAgIG5ld0xpc3QgPSBbXQorICAgIG15Q29uc3RhbnRzID0gY29uc3RhbnRzLmR1cAorICAg
IEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gQ29uc3RE
ZWNsCisgICAgICAgIG15Q29uc3RhbnRzW2l0ZW0udmFyaWFibGVdID0gaXRlbS52YWx1ZS5zdWJz
dGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0u
c3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5u
ZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5kCisgIAorICBkZWYgcmVuYW1lTGFiZWxzKGNv
bW1lbnQpCisgICAgbWFwcGluZyA9IHt9CisgICAgCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8
IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBMb2NhbExhYmVsCisgICAgICAgIG1hcHBpbmdb
aXRlbV0gPSBMb2NhbExhYmVsLnVuaXF1ZShpZiBjb21tZW50IHRoZW4gY29tbWVudCArICJfIiBl
bHNlICIiIGVuZCArIGl0ZW0uY2xlYW5OYW1lKQorICAgICAgZW5kCisgICAgfQorICAgIAorICAg
IHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgZW5kCisgIAorICBkZWYgZGVtYWNyb2lmeSht
YWNyb3MpCisgICAgbXlNYWNyb3MgPSBtYWNyb3MuZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAg
ICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICBteU1hY3Jvc1tp
dGVtLm5hbWVdID0gaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3QgPSBbXQorICAg
IEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gTWFjcm8K
KyAgICAgICAgIyBJZ25vcmUuCisgICAgICBlbHNpZiBpdGVtLmlzX2E/IE1hY3JvQ2FsbAorICAg
ICAgICBtYXBwaW5nID0ge30KKyAgICAgICAgbXlNeU1hY3JvcyA9IG15TWFjcm9zLmR1cAorICAg
ICAgICByYWlzZSAiQ291bGQgbm90IGZpbmQgbWFjcm8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5j
b2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG15TWFjcm9zW2l0ZW0ubmFtZV0KKyAgICAgICAgcmFp
c2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxsIHRvICN7aXRlbS5uYW1lfSBhdCAj
e2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVtLm9wZXJhbmRzLnNpemUgPT0gbXlN
YWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQorICAgICAgICBpdGVtLm9wZXJhbmRzLnNp
emUudGltZXMgeworICAgICAgICAgIHwgaWR4IHwKKyAgICAgICAgICBpZiBpdGVtLm9wZXJhbmRz
W2lkeF0uaXNfYT8gVmFyaWFibGUgYW5kIG15TWFjcm9zW2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1l
XQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tp
ZHhdLm5hbWVdID0gbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAg
ICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBuaWwK
KyAgICAgICAgICBlbHNpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gTWFjcm8KKyAgICAgICAg
ICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9
IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5h
bWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9IG5pbAor
ICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9
IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIG5l
d0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5LnN1YnN0aXR1dGUobWFwcGluZykuZGVt
YWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMoaXRlbS5uYW1lKS5saXN0CisgICAgICBl
bHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5kZW1hY3JvaWZ5KG15TWFjcm9zKQorICAgICAg
ZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KS5zdWJzdGl0
dXRlKHt9KQorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyBub2RlLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0
aGF0IGhhcyBvZmZzZXQgdmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMgICAgICAgIworIyBvZmZz
ZXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2Rl
CisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBtYXBDaGlsZHJlbiB7
CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNp
emVzKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0CisgIGRlZiByZXNv
bHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBvZmZzZXRzW3NlbGZdCisgICAgICBJ
bW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIG9mZnNldHNbc2VsZl0pCisgICAgZWxzZQorICAgICAg
c2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YKKyAgZGVmIHJlc29sdmVP
ZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlmIHNpemVzW3NlbGZdCisgICAgICBJbW1lZGlh
dGUubmV3KGNvZGVPcmlnaW4sIHNpemVzW3NlbGZdKQorICAgIGVsc2UKKyAgICAgIHB1dHMgIkNv
dWxkIG5vdCBmaW5kICN7c2VsZi5pbnNwZWN0fSBpbiAje3NpemVzLmtleXMuaW5zcGVjdH0iCisg
ICAgICBwdXRzICJzaXplcyA9ICN7c2l6ZXMuaW5zcGVjdH0iCisgICAgICBzZWxmCisgICAgZW5k
CisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUu
Zm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBSZXNvbHZlIGNvbnN0YW50IHJlZmVyZW5jZXMg
YW5kIGNvbXB1dGUgYXJpdGhtZXRpYyBleHByZXNzaW9ucy4gICAgICAjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiBmb2xkCisgICAgbWFwQ2hp
bGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5mb2xkCisgICAgfQorICBlbmQK
K2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVm
dC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3Mg
QGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19h
PyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICsg
QHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzCisgIGRlZiBm
b2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAg
ICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNl
bGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVP
cmlnaW4sIEBsZWZ0LnZhbHVlIC0gQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBN
dWxJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJp
Z2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1t
ZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAg
ICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICogQHJpZ2h0LnZhbHVlKQor
ICBlbmQKK2VuZAorCitjbGFzcyBOZWdJbW1lZGlhdGUKKyAgZGVmIGZvbGQKKyAgICBAY2hpbGQg
PSBAY2hpbGQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAY2hpbGQuaXNfYT8gSW1tZWRp
YXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtQGNoaWxkLnZhbHVlKQorICBlbmQK
K2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnJlc29sdmVB
ZnRlclNldHRpbmdzKG9mZnNldHMsIHNpemVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgQ29tcGlsZSBhc3NlbWJseSBhZ2FpbnN0IGEgc2V0IG9mIG9m
ZnNldHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZShvZmZzZXRzLCBzaXplcykK
KyAgICBkZW1hY3JvaWZ5KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykuZm9sZAor
ICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYu
cmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJi
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJi
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYK
KyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0MSIsICJhMSIsICJy
MSIsICJ0MiIsICJ0MyIKKyAgICAgIHRydWUKKyAgICB3aGVuICJ0NCIsICJjZnIiCisgICAgICBm
YWxzZQorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHg4
Nk9wZXJhbmQoa2luZCkKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIK
KyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWFsIgorICAgICAg
d2hlbiA6aGFsZgorICAgICAgICAiJWF4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWF4
IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDEiLCAi
YTEiLCAicjEiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVk
bCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVkeCIKKyAgICAgIHdoZW4gOmludAorICAg
ICAgICAiJWVkeCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdo
ZW4gInQyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlY2wi
CisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlY3giCisgICAgICB3aGVuIDppbnQKKyAgICAg
ICAgIiVlY3giCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVu
ICJ0MyIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWJsIgor
ICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWJ4IgorICAgICAgd2hlbiA6aW50CisgICAgICAg
ICIlZWJ4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAi
dDQiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzaWwiCisg
ICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc2kiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAg
IiVlc2kiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJj
ZnIiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkaWwiCisg
ICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZGkiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAg
IiVlZGkiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJz
cCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNwbCIKKyAg
ICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVzcCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAi
JWVzcCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVsc2UKKyAg
ICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAg
ICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJ
RAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIHJhaXNlIHVubGVzcyBraW5kID09IDpkb3Vi
bGUKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAiZmEwIiwgImZyIgorICAgICAgIiV4
bW0wIgorICAgIHdoZW4gImZ0MSIsICJmYTEiCisgICAgICAiJXhtbTEiCisgICAgd2hlbiAiZnQy
IiwgImZhMiIKKyAgICAgICIleG1tMiIKKyAgICB3aGVuICJmdDMiLCAiZmEzIgorICAgICAgIiV4
bW0zIgorICAgIHdoZW4gImZ0NCIKKyAgICAgICIleG1tNCIKKyAgICB3aGVuICJmdDUiCisgICAg
ICAiJXhtbTUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4
ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitl
bmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiQje3Zh
bHVlfSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIje3ZhbHVlfSIK
KyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAg
ICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje29mZnNl
dC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9KSIKKyAgZW5kCisgIGRlZiB4ODZDYWxs
T3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgQmFzZUluZGV4CisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5k
CisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jh
c2UueDg2T3BlcmFuZCg6aW50KX0sICN7aW5kZXgueDg2T3BlcmFuZCg6aW50KX0sICN7c2NhbGV9
KSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nm9wZXJh
bmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIHN1
cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQo
a2luZCkKKyAgICAiI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVy
YW5kKGtpbmQpCisgICAgIioje2FkZHJlc3MudmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBM
YWJlbFJlZmVyZW5jZQorICBkZWYgeDg2TGFiZWwKKyAgICBzYW5pdGl6ZUxhYmVsTmFtZShuYW1l
KQorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgeDg2TGFiZWwKKyAgZW5k
CitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2TGFiZWwKKyAgICAi
TF9vZmZsaW5lYXNtXyIrbmFtZVsxLi4tMV0KKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChr
aW5kKQorICAgIHg4NkxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgIGRl
ZiB4ODZPcGVyYW5kcygqa2luZHMpCisgICAgcmFpc2UgdW5sZXNzIGtpbmRzLnNpemUgPT0gb3Bl
cmFuZHMuc2l6ZQorICAgIHJlc3VsdCA9IFtdCisgICAga2luZHMuc2l6ZS50aW1lcyB7CisgICAg
ICB8IGlkeCB8CisgICAgICByZXN1bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZPcGVyYW5kKGtpbmRz
W2lkeF0pCisgICAgfQorICAgIHJlc3VsdC5qb2luKCIsICIpCisgIGVuZAorCisgIGRlZiB4ODZT
dWZmaXgoa2luZCkKKyAgICBjYXNlIGtpbmQKKyAgICB3aGVuIDpieXRlCisgICAgICAiYiIKKyAg
ICB3aGVuIDpoYWxmCisgICAgICAidyIKKyAgICB3aGVuIDppbnQKKyAgICAgICJsIgorICAgIHdo
ZW4gOmRvdWJsZQorICAgICAgInNkIgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwg
bnVtT3BlcmFuZHMpCisgICAgaWYgbnVtT3BlcmFuZHMgPT0gMworICAgICAgaWYgb3BlcmFuZHNb
MF0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5w
dXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMg
Ilx0bW92I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0s
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICRhc20ucHV0cyAiXHQj
e29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54
ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAi
XHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2
T3Aob3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwg
a2luZCwgb3BlcmFuZHMuc2l6ZSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2hpZnQob3Bj
b2RlLCBraW5kKQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBvciBvcGVyYW5k
c1swXSA9PSBSZWdpc3RlcklELmZvck5hbWUobmlsLCAidDIiKQorICAgICAgJGFzbS5wdXRzICJc
dCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICAgICRhc20ucHV0cyAi
XHQje29wY29kZX0gJWNsLCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAg
JGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3gi
CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkRvdWJsZUJyYW5jaChicmFuY2hP
cGNvZGUsIG1vZGUpCisgICAgY2FzZSBtb2RlCisgICAgd2hlbiA6bm9ybWFsCisgICAgICAkYXNt
LnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gOnJldmVyc2UKKyAgICAg
ICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0s
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgZWxzZQorICAgICAgcmFp
c2UgbW9kZS5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2Rl
fSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50
Q29tcGFyZShvcGNvZGVTdWZmaXgsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1t
ZWRpYXRlIGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBS
ZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5l
IikKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzaWYgb3BlcmFuZHNbMV0uaXNfYT8gSW1tZWRp
YXRlIGFuZCBvcGVyYW5kc1sxXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdp
c3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikK
KyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdGNtcCN7eDg2
U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVY
ODZJbnRCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NkludENvbXBhcmUo
YnJhbmNoT3Bjb2RlWzEuLi0xXSwga2luZCkKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNv
ZGV9ICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZT
ZXQoc2V0T3Bjb2RlLCBvcGVyYW5kKQorICAgIGlmIG9wZXJhbmQuc3VwcG9ydHM4Qml0T25YODYK
KyAgICAgICRhc20ucHV0cyAiXHQje3NldE9wY29kZX0gI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5
dGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5
dGUpfSwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgICRhc20u
cHV0cyAiXHR4Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgICAk
YXNtLnB1dHMgIlx0I3tzZXRPcGNvZGV9ICVhbCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6Ymwg
JWFsLCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5k
KDppbnQpfSwgJWVheCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29t
cGFyZVNldChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShzZXRPcGNv
ZGVbMy4uLTFdLCBraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRzWzJd
KQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgdmFsdWUgPSBvcGVy
YW5kc1swXQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gMgorICAgICAgbWFzayA9
IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLTEpCisgICAgd2hlbiAzCisgICAgICBtYXNrID0g
b3BlcmFuZHNbMV0KKyAgICBlbHNlCisgICAgICByYWlzZSAiRXhwZWN0ZWQgMiBvciAzIG9wZXJh
bmRzLCBidXQgZ290ICN7b3BlcmFuZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAg
ICBlbmQKKyAgICAKKyAgICBpZiBtYXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9
PSAtMQorICAgICAgaWYgdmFsdWUuaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMg
Ilx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9LCAje3Zh
bHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgIlx0
Y21wI3t4ODZTdWZmaXgoa2luZCl9ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAg
ICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5k
KX0gI3ttYXNrLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9Igor
ICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZCcmFuY2hUZXN0KGJyYW5jaE9wY29k
ZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgJGFzbS5wdXRzICJcdCN7YnJh
bmNoT3Bjb2RlfSAje29wZXJhbmRzLmxhc3QueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBo
YW5kbGVYODZTZXRUZXN0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0KGtpbmQp
CisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHMubGFzdCkKKyAgZW5kCisgIAor
ICBkZWYgaGFuZGxlWDg2T3BCcmFuY2gob3Bjb2RlLCBicmFuY2hPcGNvZGUsIGtpbmQpCisgICAg
aGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXplIC0g
MSkKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAgIGp1bXBUYXJnZXQg
PSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJd
CisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5w
dXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQueDg2TGFiZWx9IgorICBlbmQKKyAg
CisgIGRlZiBoYW5kbGVYODZTdWJCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGlmIG9w
ZXJhbmRzLnNpemUgPT0gNCBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICRh
c20ucHV0cyAiXHRuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAk
YXNtLnB1dHMgIlx0YWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIGhhbmRsZVg4Nk9wV2l0
aE51bU9wZXJhbmRzKCJzdWIje3g4NlN1ZmZpeChraW5kKX0iLCBraW5kLCBvcGVyYW5kcy5zaXpl
IC0gMSkKKyAgICBlbmQKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAg
IGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9
IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5k
CisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQueDg2TGFiZWx9
IgorICBlbmQKKyAgCisgIGRlZiBsb3dlclg4NgorICAgICRhc20uY29tbWVudCBjb2RlT3JpZ2lu
U3RyaW5nCisgICAgY2FzZSBvcGNvZGUKKyAgICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAgICBp
ZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAg
ICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICBy
YWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICBpZiBvcGVy
YW5kc1swXS52YWx1ZSA9PSAwCisgICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJh
bmRzWzJdCisgICAgICAgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAg
IGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRzICJcdGxlYWwgI3tvcGVyYW5k
c1swXS52YWx1ZX0oI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNb
Ml0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMu
c2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNl
IHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVz
cyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHRsZWFs
ICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UK
KyAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAg
ICAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAg
ICAgICBlbmQKKyAgICAgIGVuZAorICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgIGhhbmRs
ZVg4Nk9wKCJhbmRsIiwgOmludCkKKyAgICB3aGVuICJsc2hpZnRpIgorICAgICAgaGFuZGxlWDg2
U2hpZnQoInNhbGwiLCA6aW50KQorICAgIHdoZW4gIm11bGkiCisgICAgICBpZiBvcGVyYW5kcy5z
aXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAkYXNtLnB1
dHMgIlx0aW11bGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50LCA6aW50KX0iCisgICAgICBlbHNl
CisgICAgICAgICMgRklYTUU6IGNvdWxkIGRvIHNvbWUgcGVlcGhvbGUgaW4gY2FzZSB0aGUgbGVm
dCBvcGVyYW5kIGlzIGltbWVkaWF0ZSBhbmQgaXQncworICAgICAgICAjIGEgcG93ZXIgb2YgdHdv
LgorICAgICAgICBoYW5kbGVYODZPcCgiaW11bGwiLCA6aW50KQorICAgICAgZW5kCisgICAgd2hl
biAibmVnaSIKKyAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7eDg2T3BlcmFuZHMoOmludCl9Igor
ICAgIHdoZW4gIm5vdGkiCisgICAgICAkYXNtLnB1dHMgIlx0bm90bCAje3g4Nk9wZXJhbmRzKDpp
bnQpfSIKKyAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgaGFuZGxlWDg2T3AoIm9ybCIsIDpp
bnQpCisgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYXJsIiwgOmlu
dCkKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzaHJsIiwgOmlu
dCkKKyAgICB3aGVuICJzdWJpIiwgInN1YnAiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMg
YW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiXHRuZWds
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICRhc20ucHV0cyAiXHRh
ZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIGhhbmRsZVg4Nk9wKCJzdWJsIiwgOmlu
dCkKKyAgICAgIGVuZAorICAgIHdoZW4gInhvcmkiLCAieG9ycCIKKyAgICAgIGhhbmRsZVg4Nk9w
KCJ4b3JsIiwgOmludCkKKyAgICB3aGVuICJsb2FkaSIsICJzdG9yZWkiLCAibG9hZHAiLCAic3Rv
cmVwIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0i
CisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJsICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgIHdoZW4gImxvYWRoIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnp3bCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICB3aGVuICJzdG9yZWIiCisgICAgICAkYXNtLnB1dHMgIlx0bW92YiAje3g4Nk9wZXJhbmRzKDpi
eXRlLCA6Ynl0ZSl9IgorICAgIHdoZW4gImxvYWRkIiwgIm1vdmVkIiwgInN0b3JlZCIKKyAgICAg
ICRhc20ucHV0cyAiXHRtb3ZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAg
ICB3aGVuICJhZGRkIgorICAgICAgJGFzbS5wdXRzICJcdGFkZHNkICN7eDg2T3BlcmFuZHMoOmRv
dWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImRpdmQiCisgICAgICAkYXNtLnB1dHMgIlx0ZGl2
c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3ViZCIKKyAg
ICAgICRhc20ucHV0cyAiXHRzdWJzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIK
KyAgICB3aGVuICJtdWxkIgorICAgICAgJGFzbS5wdXRzICJcdG11bHNkICN7eDg2T3BlcmFuZHMo
OmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInNxcnRkIgorICAgICAgJGFzbS5wdXRzICJc
dHNxcnRzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImNpMmQiCisgICAgICAkYXNtLnB1dHMg
Ilx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJiZGVxIgorICAgICAgaXNVbm9yZGVy
ZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRlcSIpCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlz
ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7TGFiZWxSZWZlcmVuY2Uu
bmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMg
Ilx0amUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgb3BlcmFuZHNbMl0pLng4Nkxh
YmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkbmVxIgor
ICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqbmUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJk
Z3QiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphIiwgOm5vcm1hbCkKKyAgICB3aGVu
ICJiZGd0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIsIDpub3JtYWwpCisg
ICAgd2hlbiAiYmRsdCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6cmV2ZXJz
ZSkKKyAgICB3aGVuICJiZGx0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIs
IDpyZXZlcnNlKQorICAgIHdoZW4gImJkZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5j
aCgiamUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbmVxdW4iCisgICAgICBpc1Vub3JkZXJlZCA9
IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgIGlzRXF1YWwgPSBMb2NhbExhYmVs
LnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmln
aW4sIGlzVW5vcmRlcmVkKS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tMYWJl
bFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNFcXVhbCkueDg2TGFiZWx9IgorICAgICAgaXNV
bm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAgICAkYXNtLnB1dHMgIlx0am1wICN7b3BlcmFuZHNb
Ml0ueDg2TGFiZWx9IgorICAgICAgaXNFcXVhbC5sb3dlcigiWDg2IikKKyAgICB3aGVuICJiZGd0
dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOnJldmVyc2UpCisgICAgd2hl
biAiYmRndGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpyZXZlcnNl
KQorICAgIHdoZW4gImJkbHR1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6
bm9ybWFsKQorICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNo
KCJqYmUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2
dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGNtcGwgJDB4ODAwMDAwMDAg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAj
e29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJ0ZDJpIgorICAgICAgJGFzbS5wdXRz
ICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJjZDJpIgorICAgICAgJGFzbS5w
dXRzICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdHRlc3RsICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisg
ICAgICAkYXNtLnB1dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQp
fSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje29wZXJhbmRz
WzJdLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqbmUgI3tvcGVyYW5kc1syXS54ODZM
YWJlbH0iCisgICAgd2hlbiAibW92ZHoiCisgICAgICAkYXNtLnB1dHMgIlx0eG9ycGQgI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpk
b3VibGUpfSIKKyAgICB3aGVuICJwb3AiCisgICAgICAkYXNtLnB1dHMgIlx0cG9wICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicHVzaCIKKyAgICAgICRhc20ucHV0
cyAiXHRwdXNoICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibW92
ZSIsICJzeGkycCIsICJ6eGkycCIKKyAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBv
cGVyYW5kc1swXSBhbmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNt
LnB1dHMgIlx0eG9ybCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMF0gIT0gb3BlcmFu
ZHNbMV0KKyAgICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50
KX0iCisgICAgICBlbmQKKyAgICB3aGVuICJub3AiCisgICAgICAkYXNtLnB1dHMgIlx0bm9wIgor
ICAgIHdoZW4gImJpZXEiLCAiYnBlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6
aW50KQorICAgIHdoZW4gImJpbmVxIiwgImJwbmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqbmUiLCA6aW50KQorICAgIHdoZW4gImJpYSIsICJicGEiCisgICAgICBoYW5kbGVYODZJbnRC
cmFuY2goImphIiwgOmludCkKKyAgICB3aGVuICJiaWFlcSIsICJicGFlcSIKKyAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiamFlIiwgOmludCkKKyAgICB3aGVuICJiaWIiLCAiYnBiIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDppbnQpCisgICAgd2hlbiAiYmliZXEiLCAiYnBiZXEi
CisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDppbnQpCisgICAgd2hlbiAiYmlndCIs
ICJicGd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDppbnQpCisgICAgd2hlbiAi
YmlndGVxIiwgImJwZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmludCkK
KyAgICB3aGVuICJiaWx0IiwgImJwbHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwg
OmludCkKKyAgICB3aGVuICJiaWx0ZXEiLCAiYnBsdGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqbGUiLCA6aW50KQorICAgIHdoZW4gImJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImplIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImpuZSIsIDpieXRlKQorICAgIHdoZW4gImJiYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamEiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamFlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqYiIsIDpieXRlKQorICAgIHdoZW4gImJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqYmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqZyIsIDpieXRlKQorICAgIHdoZW4gImJiZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamdlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamwiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImpsdGVxIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRpbyIsICJidHBvIgorICAgICAgaGFuZGxl
WDg2QnJhbmNoVGVzdCgiam8iLCA6aW50KQorICAgIHdoZW4gImJ0aXMiLCAiYnRwcyIKKyAgICAg
IGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmludCkKKyAgICB3aGVuICJidGl6IiwgImJ0cHoi
CisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDppbnQpCisgICAgd2hlbiAiYnRpbnoi
LCAiYnRwbnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6aW50KQorICAgIHdo
ZW4gImJ0Ym8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpieXRlKQorICAgIHdo
ZW4gImJ0YnMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDpieXRlKQorICAgIHdo
ZW4gImJ0YnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDpieXRlKQorICAgIHdo
ZW4gImJ0Ym56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmJ5dGUpCisgICAg
d2hlbiAiam1wIgorICAgICAgJGFzbS5wdXRzICJcdGptcCAje29wZXJhbmRzWzBdLng4NkNhbGxP
cGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiYWRkaW8iLCAiYmFkZHBvIgorICAgICAgaGFuZGxl
WDg2T3BCcmFuY2goImFkZGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJhZGRpcyIsICJiYWRk
cHMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqcyIsIDppbnQpCisgICAgd2hl
biAiYmFkZGl6IiwgImJhZGRweiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImp6
IiwgOmludCkKKyAgICB3aGVuICJiYWRkaW56IiwgImJhZGRwbnoiCisgICAgICBoYW5kbGVYODZP
cEJyYW5jaCgiYWRkbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbyIKKyAgICAgIGhh
bmRsZVg4NlN1YkJyYW5jaCgiam8iLCA6aW50KQorICAgIHdoZW4gImJzdWJpcyIKKyAgICAgIGhh
bmRsZVg4NlN1YkJyYW5jaCgianMiLCA6aW50KQorICAgIHdoZW4gImJzdWJpeiIKKyAgICAgIGhh
bmRsZVg4NlN1YkJyYW5jaCgianoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbnoiCisgICAgICBo
YW5kbGVYODZTdWJCcmFuY2goImpueiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlvIgorICAgICAg
aGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJibXVsaXMi
CisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAianMiLCA6aW50KQorICAgIHdoZW4g
ImJtdWxpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqeiIsIDppbnQpCisg
ICAgd2hlbiAiYm11bGlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbnoi
LCA6aW50KQorICAgIHdoZW4gImJvcmlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIs
ICJqbyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgi
b3JsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJib3JpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJh
bmNoKCJvcmwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJvcmlueiIKKyAgICAgIGhhbmRsZVg4
Nk9wQnJhbmNoKCJvcmwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJicmVhayIKKyAgICAgICRh
c20ucHV0cyAiXHRpbnQgJDMiCisgICAgd2hlbiAiY2FsbCIKKyAgICAgICRhc20ucHV0cyAiXHRj
YWxsICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInJldCIK
KyAgICAgICRhc20ucHV0cyAiXHRyZXQiCisgICAgd2hlbiAiY2llcSIsICJjcGVxIgorICAgICAg
aGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQpCisgICAgd2hlbiAiY2luZXEiLCAi
Y3BuZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRuZSIsIDppbnQpCisgICAg
d2hlbiAiY2lhIiwgImNwYSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGEiLCA6
aW50KQorICAgIHdoZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFy
ZVNldCgic2V0YWUiLCA6aW50KQorICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAgICBoYW5kbGVY
ODZJbnRDb21wYXJlU2V0KCJzZXRiIiwgOmludCkKKyAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIK
KyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGJlIiwgOmludCkKKyAgICB3aGVuICJj
aWd0IiwgImNwZ3QiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnIiwgOmludCkK
KyAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNl
dCgic2V0Z2UiLCA6aW50KQorICAgIHdoZW4gImNpbHQiLCAiY3BsdCIKKyAgICAgIGhhbmRsZVg4
NkludENvbXBhcmVTZXQoInNldGwiLCA6aW50KQorICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEi
CisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisgICAgd2hlbiAi
dGlvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQpCisgICAgd2hlbiAidGlz
IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDppbnQpCisgICAgd2hlbiAidGl6Igor
ICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDppbnQpCisgICAgd2hlbiAidGlueiIKKyAg
ICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmludCkKKyAgICB3aGVuICJ0Ym8iCisgICAg
ICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgd2hlbiAidGJzIgorICAgICAg
aGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAgIHdoZW4gInRieiIKKyAgICAgIGhh
bmRsZVg4NlNldFRlc3QoInNldHoiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ym56IgorICAgICAgaGFu
ZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJwZWVrIgorICAgICAgJGFz
bS5wdXRzICJcdG1vdmwgI3tvcGVyYW5kc1swXS52YWx1ZSAqIDR9KCVlc3ApLCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInBva2UiCisgICAgICAkYXNtLnB1dHMg
Ilx0bW92bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLnZh
bHVlICogNH0oJWVzcCkiCisgICAgd2hlbiAiY2RxaSIKKyAgICAgICRhc20ucHV0cyAiXHRjZHEi
CisgICAgd2hlbiAiaWRpdmkiCisgICAgICAkYXNtLnB1dHMgIlx0aWRpdmwgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJmaWkyZCIKKyAgICAgICRhc20ucHV0cyAi
XHRtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwc2xscSAkMzIs
ICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHBvciAleG1tNywgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRhc20ucHV0cyAiXHRt
b3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cHNybHEgJDMy
LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAleG1tNywgI3tvcGVyYW5kc1syXS54
ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiQmFkIG9wY29kZTogI3tv
cGNvZGV9IgorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZF9oCisjZGVmaW5lIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCituYW1lc3BhY2UgSlNDIHsK
KworZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25z
dHJ1Y3QgfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDEwNTU4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsy
Nyw3IEBACiAjZGVmaW5lIENvbW1vblNsb3dQYXRoc19oCiAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKIApAQCAtNDEsNiArNDIsMzggQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMgewogCitBTFdBWVNf
SU5MSU5FIEV4ZWNTdGF0ZSogYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVy
RmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAg
SlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgQVNT
RVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOworICAgIENvZGVCbG9jayogbmV3Q29kZUJs
b2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQp
OworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKCk7CisKKyAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZv
ciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhl
IGNhbGxlci4KKyAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhleGVjLT5yZWdpc3RlcnMoKSAr
IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2NrLT5tX251bUNhbGxl
ZVJlZ2lzdGVycykpCisgICAgICAgIHJldHVybiAwOworCisgICAgQVNTRVJUKGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworCisgICAg
Ly8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1lIGFuZCBhcmd1bWVudHMsIHRo
ZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5lZC4KKyAgICBzaXplX3Qg
ZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzOworICAgIFJlZ2lzdGVyKiBzcmMgPSBleGVjLT5yZWdpc3RlcnMoKTsKKyAgICBS
ZWdpc3RlciogZHN0ID0gZXhlYy0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKKworICAgIGludCBpOwor
ICAgIGludCBlbmQgPSAtRXhlY1N0YXRlOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpOworICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3RbaV0g
PSBzcmNbaV07CisKKyAgICBlbmQgLT0gZGVsdGE7CisgICAgZm9yICggOyBpID49IGVuZDsgLS1p
KQorICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOworCisgICAgRXhlY1N0YXRlKiBuZXdF
eGVjID0gRXhlY1N0YXRlOjpjcmVhdGUoZHN0KTsKKyAgICBBU1NFUlQoKHZvaWQqKW5ld0V4ZWMg
PD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7CisgICAgcmV0dXJuIG5ld0V4ZWM7Cit9CisKIEFMV0FZ
U19JTkxJTkUgYm9vbCBvcEluc3RhbmNlT2ZTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
YWx1ZSwgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3RvKQogewogICAgIEFTU0VSVCghdmFs
dWUuaXNDZWxsKCkgfHwgIWJhc2VWYWwuaXNDZWxsKCkgfHwgIXByb3RvLmlzQ2VsbCgpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNp
b24gMTA1NTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUdl
bmVyYXRvci5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5o
IgorI2luY2x1ZGUgIkV4ZWN1dGlvbkhhcm5lc3MuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNs
dWRlICJKSVREcml2ZXIuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKQEAgLTg0LDcgKzg1LDcgQEAg
SW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6OmludHJpbnNpYygpIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KIHN0YXRpYyB2b2lkIGpldHRpc29uQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgT3duUHRyPFQ+JiBjb2RlQmxvY2spCiB7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0
SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6
aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKGNv
ZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgT3duUHRyPFQ+IGNvZGVCbG9ja1RvSmV0dGlz
b24gPSBjb2RlQmxvY2sucmVsZWFzZSgpOwogICAgIGNvZGVCbG9jayA9IHN0YXRpY19wb2ludGVy
X2Nhc3Q8VD4oY29kZUJsb2NrVG9KZXR0aXNvbi0+cmVsZWFzZUFsdGVybmF0aXZlKCkpOwpAQCAt
MTY3LDkgKzE2OCwzMCBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpbWl6
CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBp
bGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9y
Q2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0KTsKK30KKworaW5saW5lIGNvbnN0IGNoYXIqIHNhbXBsaW5nRGVzY3JpcHRpb24o
SklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworICAgIHN3aXRjaCAoaml0VHlwZSkgeworICAg
IGNhc2UgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAgICAgcmV0dXJuICJJbnRlcnBy
ZXRlciBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBjYXNlIEpJVENvZGU6OkJhc2VsaW5lSklU
OgorICAgICAgICByZXR1cm4gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNh
c2UgSklUQ29kZTo6REZHSklUOgorICAgICAgICByZXR1cm4gIkRGRyBDb21waWxhdGlvbiAoVE9U
QUwpIjsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorfQorCiBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBp
bGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9k
ZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29t
cGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1w
bGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsK
ICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC0y
MTAsNyArMjMyLDcgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYQog
ICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlSWZBcHByb3ByaWF0
ZSgqZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBl
KSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVjdXRpb24oKmdsb2JhbERhdGEsIG1fZXZhbENvZGVC
bG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogI2Vu
ZGlmCiAKQEAgLTI5NSw5ICszMTcsMTUgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpj
b21waWxlT3B0aQogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBQcm9ncmFtRXhlY3V0YWJs
ZTo6aml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1
bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxv
Y2ssIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0
YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNj
b3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdS
ZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJC
YXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIp
OworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24o
aml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRU
eXBlKTsKQEAgLTMzNiw3ICszNjQsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNv
bXBpbGVJbnRlCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJ
ZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZv
ckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xvYmFsRGF0
YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNDEyLDcgKzQ0MCw3IEBAIEZ1bmN0aW9uQ29kZUJs
b2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmIKICAgICB3aGlsZSAocmVzdWx0LT5hbHRlcm5hdGl2
ZSgpKQogICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KHJl
c3VsdC0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgQVNTRVJUKHJl
c3VsdC0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQo
SklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC00MzgsNiArNDY2LDE4IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvbXBpbGVPcHQKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRnVuY3Rp
b25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEp
Cit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGds
b2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2Rl
Rm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0b21UaWVy
SklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJv
cHJpYXRlKGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JD
b25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRh
YmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQpOworfQorCiBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tXaXRoQnl0ZWNvZGVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewog
ICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvcihr
aW5kKTsKQEAgLTQ4Miw3ICs1MjIsNyBAQCBQYXNzT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBG
dW5jdGlvbkV4CiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxs
SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUs
IEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGlu
Z1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBp
bGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxp
bmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAg
ICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNTA0LDcg
KzU0NCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBt
X3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDYWxsLT5zaGFyZWRTeW1ib2xUYWJsZSgpOwog
CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlh
dGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNh
bGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlw
ZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNh
bGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSwgQ29kZUZvckNhbGwpKQog
ICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC01MjQsNyArNTY0LDcgQEAgSlNPYmplY3Qq
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogCiBKU09iamVjdCogRnVuY3Rpb25FeGVj
dXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29w
ZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsK
LSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJh
c2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxh
dGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxp
bmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5V
U0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtNTQ2LDcgKzU4Niw3IEBAIEpTT2JqZWN0KiBGdW5jdGlv
bkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tG
b3JDb25zdHJ1Y3QtPnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAg
IGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9iYWxEYXRhKCks
IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29k
ZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAg
ICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1f
Y29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZv
ckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9y
Q29uc3RydWN0KSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTA1NTg0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEV4ZWN1dGFibGVfaAogCiAjaW5jbHVkZSAiQ2Fs
bERhdGEuaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTm9kZXMu
aCIKQEAgLTM5LDEyICs0MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1Z2dl
cjsKICAgICBjbGFzcyBFdmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2Nr
OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29k
ZUJsb2NrOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwogCiAgICAgc3RydWN0IEV4Y2VwdGlv
bkluZm87CiAgICAgCi0gICAgZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNh
bGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKICAgICBlbnVtIENvbXBpbGF0aW9uS2luZCB7IEZpcnN0
Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21waWxhdGlvbiB9OwogCiAgICAgaW5saW5lIGJvb2wg
aXNDYWxsKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAgLTMxOSw2ICszMjAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUg
QmFzZTsKIApAQCAtMzM4LDYgKzM0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNp
ZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZShKU0dsb2Jh
bERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYpOwogI2VuZGlm
CiAKICAgICAgICAgRXZhbENvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAtMzg0LDYg
KzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBQcm9ncmFtRXhl
Y3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2Ny
aXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC00MTEsNiArNDE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6
ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxE
YXRhJik7CiAjZW5kaWYKIAogICAgICAgICBQcm9ncmFtQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRl
Y29kZSgpCkBAIC00NTMsNiArNDU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBG
dW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsK
IApAQCAtNTA4LDYgKzUxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFC
TEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNhbGwoSlNHbG9i
YWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7
CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ2FsbCgpIGNvbnN0CkBAIC01
MzUsNiArNTQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQp
CiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KEpTR2xvYmFs
RGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRh
Jik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ29uc3RydWN0KCkgY29u
c3QKQEAgLTU4Miw2ICs1OTAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAg
amV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdENvbXBpbGVGb3IoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAg
ICAgICAgaml0Q29tcGlsZUZvckNhbGwoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNv
bnN0cnVjdCk7CisgICAgICAgICAgICBqaXRDb21waWxlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEp
OworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRG
b3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIEV4ZWN1dGlvbkhhcm5lc3NfaAorI2RlZmluZSBFeGVjdXRpb25I
YXJuZXNzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKEpJVCkK
KworI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+Citp
bmxpbmUgYm9vbCBwcmVwYXJlRm9yRXhlY3V0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
T3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENv
ZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENv
ZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0
aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RW50cnlwb2ludChn
bG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUpOworICAgICAgICBjb2RlQmxvY2st
PnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorICAgIHJldHVybiBq
aXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENvZGUsIGpp
dFR5cGUpOworfQorCitpbmxpbmUgYm9vbCBwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBjb2RlQmxv
Y2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhB
cml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBKSVRDb2RlOjpKSVRU
eXBlIGppdFR5cGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAg
ICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAgICAgICBM
TEludDo6Z2V0RnVuY3Rpb25FbnRyeXBvaW50KGdsb2JhbERhdGEsIGtpbmQsIGppdENvZGUsIGpp
dENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRD
b2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShraW5kKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQp
CisgICAgcmV0dXJuIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwg
Y29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIHN5bWJvbFRhYmxlLCBq
aXRUeXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklU
KQorCisjZW5kaWYgLy8gRXhlY3V0aW9uSGFybmVzc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMDU1ODQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMTI0LDcgKzEyNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93bkFycmF5
UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBhZG9wdEFycmF5UHRy
KG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bcmVnaXN0ZXJBcnJheVNpemVdKTsKICAgICAgICAg
V3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMgPSByZWdpc3RlckFycmF5LmdldCgpICsg
cmVnaXN0ZXJPZmZzZXQ7Ci0KKyAgICAgICAgCiAgICAgICAgIC8vIENvcHkgYWxsIGFyZ3VtZW50
cyB0aGF0IGNhbiBiZSBjYXB0dXJlZCBieSBuYW1lIG9yIGJ5IHRoZSBhcmd1bWVudHMgb2JqZWN0
LgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbnVtQ2FwdHVyZWRBcmdzOyArK2kpIHsK
ICAgICAgICAgICAgIGludCBpbmRleCA9IENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoaSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAxMDU1
ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNB
cnJheTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBzdHJ1Y3QgU3Bh
cnNlQXJyYXlFbnRyeSA6IHB1YmxpYyBXcml0ZUJhcnJpZXI8VW5rbm93bj4gewogICAgICAgICB0
eXBlZGVmIFdyaXRlQmFycmllcjxVbmtub3duPiBCYXNlOwpAQCAtMTIyLDYgKzEyMyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBKU0FycmF5IDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogICAgICAgICBmcmllbmQgY2xhc3MgV2Fsa2VyOwogCiAgICAgcHJvdGVjdGVkOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDEwNTU4NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw5ICszNiwxMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0dsb2JhbE9i
amVjdDsKLSAgICBjbGFzcyBTdHJ1Y3R1cmU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5h
bWVBcnJheTsKKyAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBlbnVtIEVudW1lcmF0aW9uTW9k
ZSB7CiAgICAgICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsCkBAIC0xNjUsNiArMTY2LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBjb25zdCBDbGFzc0luZm8qIG1f
Y2xhc3NJbmZvOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsK
ICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aAkocmV2aXNpb24gMTA1NTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEpTQWN0aXZhdGlvbjsK
ICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBTb3VyY2VDb2RlOwog
ICAgIG5hbWVzcGFjZSBERkcgewpAQCAtMTQwLDYgKzE0MSw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5j
dGlvbk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3VtZW50
c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlz
aW9uIDEwNTU4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsOCBAQCBKU0dsb2JhbERhdGE6OkpT
R2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgLCBrZXl3b3JkcyhhZG9wdFB0cihuZXcgS2V5
d29yZHModGhpcykpKQogICAgICwgaW50ZXJwcmV0ZXIoMCkKICAgICAsIGhlYXAodGhpcywgaGVh
cFNpemUpCisgICAgLCBqc0FycmF5Q2xhc3NJbmZvKCZKU0FycmF5OjpzX2luZm8pCisgICAgLCBq
c0ZpbmFsT2JqZWN0Q2xhc3NJbmZvKCZKU0ZpbmFsT2JqZWN0OjpzX2luZm8pCiAjaWYgRU5BQkxF
KERGR19KSVQpCiAgICAgLCBzaXplT2ZMYXN0U2NyYXRjaEJ1ZmZlcigwKQogI2VuZGlmCkBAIC0y
MTgsNyArMjIwLDcgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAog
ICAgIGppdFN0dWJzID0gYWRvcHRQdHIobmV3IEpJVFRodW5rcyh0aGlzKSk7CiAjZW5kaWYKIAot
ICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKHRoaXMtPmNhblVzZUpJVCgpKTsKKyAgICBpbnRl
cnByZXRlci0+aW5pdGlhbGl6ZSgmbGxpbnREYXRhLCB0aGlzLT5jYW5Vc2VKSVQoKSk7CiAKICAg
ICBoZWFwLm5vdGlmeUlzU2FmZVRvQ29sbGVjdCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDEwNTU4NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCwxNSArMzAsMTYgQEAKICNkZWZpbmUgSlNHbG9iYWxEYXRhX2gKIAogI2luY2x1ZGUg
IkNhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJJbnRyaW5zaWMuaCIK
ICNpbmNsdWRlICJEYXRlSW5zdGFuY2VDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxv
Y2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCi0jaW5jbHVkZSAiU3Ryb25nLmgiCisjaW5jbHVk
ZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU1ZhbHVl
LmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTnVtZXJpY1N0cmluZ3MuaCIK
ICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRl
ICJUZXJtaW5hdG9yLmgiCiAjaW5jbHVkZSAiVGltZW91dENoZWNrZXIuaCIKICNpbmNsdWRlICJX
ZWFrUmFuZG9tLmgiCkBAIC02NSw2ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEtleXdvcmRz
OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVj
dXRhYmxlOwogICAgIGNsYXNzIFBhcnNlckFyZW5hOwogICAgIGNsYXNzIFJlZ0V4cENhY2hlOwpA
QCAtMjQ4LDYgKzI1MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSGVhcCBoZWFwOwog
CiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uOworCisgICAgICAgIGNvbnN0IENsYXNzSW5mbyog
Y29uc3QganNBcnJheUNsYXNzSW5mbzsKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBq
c0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOworCisgICAgICAgIExMSW50OjpEYXRhIGxsaW50RGF0YTsK
KwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIgZXhjZXB0aW9uTG9j
YXRpb247CiAgICAgICAgIEpTVmFsdWUgaG9zdENhbGxSZXR1cm5WYWx1ZTsKQEAgLTM1Myw2ICsz
NjEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICN1bmRlZiByZWdpc3RlclR5cGVkQXJyYXlGdW5jdGlv
bgogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSwgVGhy
ZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEqJiBz
aGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAgICAgIHZvaWQgY3JlYXRlTmF0aXZlVGh1bmso
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAkocmV2aXNpb24gMTA1NTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBHZXR0ZXJT
ZXR0ZXI7CiAgICAgY2xhc3MgR2xvYmFsQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogICAgIGNsYXNz
IFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CkBAIC0zMzUs
NiArMzM2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBpbnQgY291bnQpOwogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBGb2xkIHJlc2V0IGludG8gaW5pdC4KICAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpOwogICAg
ICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTA1NTg0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiAr
NDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xh
c3MgSGFzaEVudHJ5OwogICAgIGNsYXNzIEludGVybmFsRnVuY3Rpb247CisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgIGNsYXNzIFBy
b3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKQEAgLTI3MSw2
ICsyNzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNPYmplY3QoSlNHbG9iYWxEYXRh
JiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpOwogCiAgICAgcHJp
dmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAg
ICAgCiAgICAgICAgIC8vIE5vYm9keSBzaG91bGQgZXZlciBhc2sgYW55IG9mIHRoZXNlIHF1ZXN0
aW9ucyBvbiBzb21ldGhpbmcgYWxyZWFkeSBrbm93biB0byBiZSBhIEpTT2JqZWN0LgogICAgICAg
ICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyOwogICAgICAgICB1c2luZyBKU0NlbGw6
OmlzR2V0dGVyU2V0dGVyOwpAQCAtMzgzLDYgKzM4Niw4IEBAIENPTVBJTEVfQVNTRVJUKChKU0Zp
bmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwq
KTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgICAgICA6IEpT
T2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQogICAgICAgICB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAxMDU1ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJZGVudGlmaWVyOwog
ICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAog
ICAgIGNsYXNzIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTk2LDYgKzk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBz
aXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9jYWNoZWRTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgJKHJldmlzaW9uIDEwNTU4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNTdHJpbmc7CisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogCiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7
CiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKik7CkBAIC0yNDEsNiArMjQy
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2b2lk
IHJlc29sdmVSb3BlU2xvd0Nhc2U4KExDaGFyKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2
ZVJvcGVTbG93Q2FzZShVQ2hhciopIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNpb24gMTA1NTg0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICsz
NCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQg
PSAxOyAvLyBXZWJDb3JlIHVzZXMgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCB0byBtYWtlIGRvY3Vt
ZW50LmFsbCB1bmRldGVjdGFibGUuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEltcGxlbWVu
dHNIYXNJbnN0YW5jZSA9IDEgPDwgMTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJp
ZGVzSGFzSW5zdGFuY2UgPSAxIDw8IDI7CkBAIC04Nyw2ICs4OSw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MxKHVu
c2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPD0gKDEgPDwgNykpOyByZXR1cm4gbV9m
bGFncyAmIGZsYWc7IH0KICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MyKHVuc2lnbmVkIGZsYWcp
IGNvbnN0IHsgQVNTRVJUKGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1cm4gbV9mbGFnczIgJiAoZmxh
ZyA+PiA4KTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVl
LmNwcAkocmV2aXNpb24gMTA1NTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiwxMCArMTE2LDkgQEAgSlNPYmplY3Qq
IEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoRQogICAgIHJldHVybiBKU05vdEFuT2JqZWN0
OjpjcmVhdGUoZXhlYyk7CiB9CiAKLSNpZm5kZWYgTkRFQlVHCiBjaGFyKiBKU1ZhbHVlOjpkZXNj
cmlwdGlvbigpCiB7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0gNjQ7CisgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBzaXplID0gMTI4OwogICAgIHN0YXRpYyBjaGFyIGRlc2NyaXB0aW9u
W3NpemVdOwogCiAgICAgaWYgKCEqdGhpcykKQEAgLTEyOCwxNCArMTI3LDE0IEBAIGNoYXIqIEpT
VmFsdWU6OmRlc2NyaXB0aW9uKCkKICAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUs
ICJJbnQzMjogJWQiLCBhc0ludDMyKCkpOwogICAgIGVsc2UgaWYgKGlzRG91YmxlKCkpIHsKICNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRv
dWJsZTogJWxmLCAlbHgiLCBhc0RvdWJsZSgpLCByZWludGVycHJldERvdWJsZVRvSW50cHRyKGFz
RG91YmxlKCkpKTsKKyAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6
ICVseCwgJWxmIiwgcmVpbnRlcnByZXREb3VibGVUb0ludHB0cihhc0RvdWJsZSgpKSwgYXNEb3Vi
bGUoKSk7CiAjZWxzZQogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBkb3VibGUgYXNEb3Vi
bGU7CiAgICAgICAgICAgICB1aW50MzJfdCBhc1R3b0ludDMyc1syXTsKICAgICAgICAgfSB1Owog
ICAgICAgICB1LmFzRG91YmxlID0gYXNEb3VibGUoKTsKLSAgICAgICAgc25wcmludGYoZGVzY3Jp
cHRpb24sIHNpemUsICJEb3VibGU6ICVsZiwgJTA4eDolMDh4IiwgYXNEb3VibGUoKSwgdS5hc1R3
b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSk7CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0
aW9uLCBzaXplLCAiRG91YmxlOiAlMDh4OiUwOHgsICVsZiIsIHUuYXNUd29JbnQzMnNbMV0sIHUu
YXNUd29JbnQzMnNbMF0sIGFzRG91YmxlKCkpOwogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChpc0Nl
bGwoKSkKICAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJDZWxsOiAlcCIsIGFz
Q2VsbCgpKTsKQEAgLTE1Miw3ICsxNTEsNiBAQCBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigp
CiAKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9Ci0jZW5kaWYKIAogLy8gVGhpcyBpbiB0aGUg
VG9JbnQzMiBvcGVyYXRpb24gaXMgZGVmaW5lZCBpbiBzZWN0aW9uIDkuNSBvZiB0aGUgRUNNQS0y
NjIgc3BlYy4KIC8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBpZGVudGljYWwgdG8gVG9V
SW50MzIgb3RoZXIgdGhhbiB0byBpbnRlcnByZXRhdGlvbgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2aXNpb24gMTA1NTg0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMsOSArMjMz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTQ2VsbCogYXNDZWxsKCkgY29uc3Q7CiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZENhbGxlZSgpOwogCi0jaWZuZGVm
IE5ERUJVRwogICAgICAgICBjaGFyKiBkZXNjcmlwdGlvbigpOwotI2VuZGlmCiAKICAgICBwcml2
YXRlOgogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gSlNWYWx1ZShXcml0ZUJhcnJpZXJCYXNl
PFQ+KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zhcmlh
YmxlT2JqZWN0LmgJKHJldmlzaW9uIDEwNTU4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEy
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogICAgIGNsYXNzIFJlZ2lzdGVyOwogCiAgICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHB1YmxpYzoKICAg
ICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTA1NTg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDYgKzUyLDEwIEBAIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGkKIAog
dW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7CiAKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckRvbnRKSVRBbnl0aW1lU29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklU
U29vbjsKKwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2Fy
bVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dh
cm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGlt
ZVNvb247CkBAIC0xMzcsNiArMTQxLDEwIEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAg
IAogICAgIFNFVChtYXhpbXVtSW5saW5pbmdEZXB0aCwgNSk7CiAKKyAgICBTRVQoZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXAsICAgICAtMTAwKTsKKyAgICBTRVQoZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptaW4oKSk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNv
b24sICAgICAgICAgICAgLTEwMCk7CisKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
T3B0aW1pemVBZnRlcldhcm1VcCwgICAgIC0xMDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAsIC01MDAwKTsKICAgICBTRVQoZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1pbigpKTsKQEAgLTE4NSw2ICsxOTMsOCBAQCB2b2lkIGluaXRpYWxp
emVPcHRpb25zKCkKICAgICBpZiAoY3B1c1RvVXNlIDwgMSkKICAgICAgICAgY3B1c1RvVXNlID0g
MTsKICAgICAKKyAgICBjcHVzVG9Vc2UgPSAxOworICAgIAogICAgIFNFVChudW1iZXJPZkdDTWFy
a2VycywgY3B1c1RvVXNlKTsKIAogICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JE
b250T3B0aW1pemVBbnl0aW1lU29vbiA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6
ZUFmdGVyTG9uZ1dhcm1VcCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5oCShyZXZpc2lvbiAxMDU1ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEwIEBAIGV4dGVybiB1bnNp
Z25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHIKIAogZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1J
bmxpbmluZ0RlcHRoOyAvLyBEZXB0aCBvZiBpbmxpbmUgc3RhY2ssIHNvIDEgPSBubyBpbmxpbmlu
ZywgMiA9IG9uZSBsZXZlbCwgZXRjLgogCitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVy
VmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvckpJVFNvb247CisKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVy
VmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gMTA1NTg0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw2ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0
YTsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9y
OwogICAgIGNsYXNzIFNsb3RWaXNpdG9yOwogICAgIApAQCAtOTEsNiArOTIsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuOwogICAgIH07CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMDU1ODQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNiArNDUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAgICBjbGFz
cyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CkBAIC0x
OTYsNiArMTk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlRE
QVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKik7CiAgICAg
ICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFs
RGF0YSYsIGNvbnN0IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAxMDU1ODQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGNsYXNzIFN0cnVjdHVy
ZUNoYWluIDogcHVibGljIEpTQ2VsbCB7CkBAIC03NCw2ICs3NSw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgU3RydWN0dXJlQ2hhaW4oSlNHbG9i
YWxEYXRhJiwgU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxs
Kik7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+ID4gbV92ZWN0
b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAxMDU1
ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTkxOCw2ICs5MTgsMTggQEAKICNkZWZpbmUgRU5BQkxFX0pJVCAxCiAjZW5kaWYKIAor
LyogT24gc29tZSBvZiB0aGUgcGxhdGZvcm1zIHdoZXJlIHdlIGhhdmUgYSBKSVQsIHdlIHdhbnQg
dG8gYWxzbyBoYXZlIHRoZSAKKyAgIGxvdy1sZXZlbCBpbnRlcnByZXRlci4gKi8KKyNpZiAhZGVm
aW5lZChFTkFCTEVfTExJTlQpICYmIEVOQUJMRShKSVQpICYmIFBMQVRGT1JNKE1BQykgJiYgVVNF
KEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyNlbmRpZgorCisvKiBJZiB3
ZSBoYXZlIExMSW50IGVuYWJsZWQgYW5kIHRoZSBKSVQgZW5hYmxlZCwgd2UgYWxzbyBlbmFibGUg
T1NSaW5nIGZyb20KKyAgIExMSW50IHRvIHRoZSBKSVQuICovCisjaWYgIWRlZmluZWQoRU5BQkxF
X0xMSU5UX09TUl9UT19KSVQpICYmIEVOQUJMRShKSVQpICYmIEVOQUJMRShMTElOVCkKKyNkZWZp
bmUgRU5BQkxFX0xMSU5UX09TUl9UT19KSVQgMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFC
TEVfREZHX0pJVCkgJiYgRU5BQkxFKEpJVCkKIC8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBYODYg
YW5kIFg4Nl82NC4gIE9ubHkgdGVzdGVkIG9uIE1hYyBhbmQgR05VL0xpbnV4LiAqLwogI2lmIChD
UFUoWDg2KSB8fCBDUFUoWDg2XzY0KSkgJiYgKFBMQVRGT1JNKE1BQykgfHwgT1MoTElOVVgpKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5o
CShyZXZpc2lvbiAxMDU1ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVs
TGlua2VkTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4IEBAIHB1YmxpYzoKIAog
ICAgIGl0ZXJhdG9yIGJlZ2luKCk7CiAgICAgaXRlcmF0b3IgZW5kKCk7CisgICAgCisgICAgYm9v
bCBpc0VtcHR5KCkgeyByZXR1cm4gYmVnaW4oKSA9PSBlbmQoKTsgfQogCiBwcml2YXRlOgogICAg
IFJhd05vZGUgbV9oZWFkU2VudGluZWw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDEwNTU4NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQz
LDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlN0cmluZyAqIENGU3RyaQogLy8gTGFuZGlu
ZyB0aGUgZmlsZSBtb3ZlcyBpbiBvbmUgcGF0Y2gsIHdpbGwgZm9sbG93IG9uIHdpdGggcGF0Y2hl
cyB0byBjaGFuZ2UgdGhlIG5hbWVzcGFjZXMuCiBuYW1lc3BhY2UgSlNDIHsKIHN0cnVjdCBJZGVu
dGlmaWVyQ1N0cmluZ1RyYW5zbGF0b3I7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElkZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRv
cjsKIHN0cnVjdCBJZGVudGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9yOwogfQpAQCAtNzAs
NyArNzEsOCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICBmcmllbmQgc3RydWN0IFdURjo6SGFz
aEFuZFVURjhDaGFyYWN0ZXJzVHJhbnNsYXRvcjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6VUNo
YXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmdJbXBsOwot
CisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogcHJp
dmF0ZToKICAgICBlbnVtIEJ1ZmZlck93bmVyc2hpcCB7CiAgICAgICAgIEJ1ZmZlckludGVybmFs
LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123633</attachid>
            <date>2012-01-23 15:23:27 -0800</date>
            <delta_ts>2012-01-23 22:59:46 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_36.diff</filename>
            <type>text/plain</type>
            <size>433855</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1NjQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3NyBA
QAorMjAxMi0wMS0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV09SSyBJTiBQUk9HUkVTUy4gIEl0IGFwcGVhcnMgdG8gd29yayBidXQgbmVlZHMg
bW9yZSB0ZXN0aW5nLgorICAgICAgICAKKyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0
ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBjYWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAg
aW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExMSW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVy
LiBKU0Mgd2lsbCBub3cKKyAgICAgICAgd2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBM
TEludCBhbmQgd2lsbCBvbmx5IHRpZXIgdXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIg
dGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4KKyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0
ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9mIG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFj
cm8KKyAgICAgICAgYXNzZW1ibHkgaXMgY29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIg
KHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gKKyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBj
b252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAg
bWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVjdCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5m
b3JtYXRpb24KKyAgICAgICAgKGJhc2ljYWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMg
b2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAgICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGlu
IExMSW50IGFwcGVhcnMgdG8gdGhlIHJlc3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0Cisg
ICAgICAgIHdlcmUgZXhlY3V0aW5nIGluIHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2Ug
ZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAorICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNh
bGxzIGp1c3Qgd29yayBhbmQgcmVxdWlyZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlv
bmFsIG92ZXJoZWFkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIu
NXggZmFzdGVyIHRoYW4gb3VyIG9sZCBpbnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAg
IFY4LCBhbmQgS3Jha2VuLiBUaGlzIGlzIHRoZSAiZmlyc3QgYXR0ZW1wdCIgcGVyZm9ybWFuY2Ug
LSBubyB3b3JrIGhhcyBiZWVuCisgICAgICAgIGRvbmUgdG8gZGlhZ25vc2UgYW55IHBvdGVudGlh
bCBib3R0bGVuZWNrcy4gTWFueSBvYnZpb3VzIG9uZXMgZXhpc3QsIGxpa2UKKyAgICAgICAgcmVk
dWNpbmcgdGhlIG51bWJlciBvZiBpbnN0cnVjdGlvbnMgaW1wbGVtZW50ZWQgYXMgc2xvdyBjYWxs
cyB0byBDKysgY29kZQorICAgICAgICBhbmQgbWFraW5nIHByb3BlcnR5IGFjY2VzcyBjYWNoaW5n
IG1vcmUgYWdncmVzc2l2ZS4KKyAgICAgICAgCisgICAgICAgIEFzIGFuIGFkZGl0aW9uYWwgY2hh
bmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5kIEpTVmFsdWUKKyAgICAg
ICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBkZWJ1Z2dpbmcgc29tZSBv
ZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0Y2ggd291bGQgaGF2ZSBi
ZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAgICBkb24ndCBiZWxpZXZl
IHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxvYXQgdGhhdCB0aGlzCisg
ICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUNv
bnZlbnRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNw
cDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAg
ICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0
KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5j
b25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ry
b25nUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5saW5rQ2FsbHMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUNv
ZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpqZXR0aXNv
bik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAg
IChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6
RXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUltcGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNv
ZGVCbG9jazo6aml0Q29tcGlsZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5lVmVyc2lvbik6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bGlua0luY29taW5nQ2FsbCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmhhbmRsZUJ5dGVj
b2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRD
b21waWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNPcHRpbWl6ZWRSZXBsYWNlbWVu
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRMTEludENhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVzb2x2ZUluZm8pOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpsaWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6Omxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6bGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFk
ZEZyZXF1ZW50RXhpdFNpdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0
aW1lU29vbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmxsaW50RXhlY3V0ZUNvdW50ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAg
ICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6Cisg
ICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNv
ZGUvTExJbnRDYWxsTGlua0luZm8uaDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50Q2FsbExp
bmtJbmZvOjpMTEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJ
bmZvOjp+TExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5m
bzo6aXNMaW5rZWQpOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6dW5saW5rKToK
KyAgICAgICAgKiBieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChK
U0M6Ok1ldGhvZENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29k
ZS9PcGNvZGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6
OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6c2V0RHVtcHNHZW5lcmF0ZWRDb2RlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVj
dFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gpOgorICAgICAgICAqIGRmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omdl
dFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAg
ICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0
Q29tcGlsZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBoZWFwL0FsbG9jYXRpb25TcGFjZS5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAg
ICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAg
ICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxG
cmFtZS5oOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmN1cnJlbnRWUEMpOgorICAgICAgICAq
IGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
On5JbnRlcnByZXRlcik6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjppbml0aWFsaXplKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpy
ZXRyaWV2ZUxhc3RDYWxsZXIpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGUpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZW5h
YmxlZCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmg6CisgICAgICAgICog
aml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Z2V0SG9z
dENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJl
dHVyblZhbHVlLmg6IEFkZGVkLgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6
CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNPcHRp
bWl6aW5nSklUKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNCYXNlbGluZUNvZGUpOgorICAg
ICAgICAoSlNDOjpKSVRDb2RlOjpKSVRDb2RlKToKKyAgICAgICAgKiBqaXQvSklURHJpdmVyLmg6
CisgICAgICAgIChKU0M6OmppdENvbXBpbGVJZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKEpTQzo6
aml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZSk6CisgICAgICAgICogaml0L0pJVEV4Y2Vw
dGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpqaXRUaHJvdyk6CisgICAgICAgICogaml0L0pJVFN0
dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAq
IGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAg
KiBsbGludC9MTEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6
CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50
L0xMSW50RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZ1
bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFdmFsRW50cnlwb2lu
dCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAg
ICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldEVudHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6aW50ZXJwcmV0ZXJUaHJvdyk6CisgICAgICAgIChK
U0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhy
b3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAg
KiBsbGludC9MTEludEhlbHBlcnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6Omxs
aW50X3RyYWNlX29wZXJhbmQpOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfdHJhY2VfdmFs
dWUpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfSEVMUEVSX0RFQ0wpOgorICAgICAgICAo
SlNDOjpMTEludDo6dHJhY2VGdW5jdGlvblByb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnNob3VsZEpJVCk6CisgICAgICAgIChKU0M6OkxMSW50OjplbnRyeU9TUik6CisgICAgICAgIChK
U0M6OkxMSW50OjpyZXNvbHZlR2xvYmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFs
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRPZmZzZXRzRXh0cmFj
dG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5r
cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1w
VG8pOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlD
aGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmV2
YWxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnByb2dyYW1FbnRy
eVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5oOiBBZGRlZC4K
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTogQWRk
ZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICogb2Zm
bGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBv
ZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9zZXR0aW5ncy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS90
cmFuc2Zvcm0ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBBZGRlZC4K
KyAgICAgICAgKiBydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaDogQWRkZWQuCisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xv
d1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3Bw
OgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2YWxF
eGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6c2FtcGxpbmdEZXNjcmlwdGlv
bik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6CisgICAgICAgIChKU0M6
OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbCk6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3Mu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OnByZXBhcmVGb3JFeGVjdXRpb24pOgorICAgICAgICAo
SlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
Y3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dGVhck9mZik6CisgICAg
ICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmlu
Zy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmRlc2NyaXB0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRp
b25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6Cisg
ICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oOgorICAgICAg
ICAoV1RGOjpTZW50aW5lbExpbmtlZExpc3Q6OmlzRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0
L1N0cmluZ0ltcGwuaDoKKwogMjAxMi0wMS0yMyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5j
b20+CiAKICAgICAgICAgRml4IHRoZSBidWlsZCBhZnRlciByMTA1NjM1LgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDEwNTY0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDks
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02MCw2ICs2MCw3IEBAIGFs
bCA6IFwKICAgICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAgU3RyaW5nUHJvdG90eXBl
Lmx1dC5oIFwKICAgICBkb2NzL2J5dGVjb2RlLmh0bWwgXAorICAgIExMSW50QXNzZW1ibHkuaC5Q
SE9OWSBcCiAjCiAKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwpAQCAtMTA0LDMgKzEwNSwx
MSBAQCBIZWFkZXJEZXRlY3Rpb24uaCA6CiAJZWNobyA+ICRACiAKIGVuZGlmCisKKyMgQXNzZW1i
bHkgZm9yIHRoZSBMb3dMZXZlbEludGVycHJldGVyCisKKyMgVGhpcyBidWlsZHMgZXZlcnkgdGlt
ZSBiZWNhdXNlIHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGRlc2NyaWJlCisjIHRoZSBkZXBlbmRl
bmNpZXMgdXNpbmcgbWFrZS4gSW5zdGVhZCwgdGhlIGFzc2VtYmxlciB3aWxsIGRlY2lkZSBvbgor
IyBpdHMgb3duIHdoZXRoZXIgb3Igbm90IGl0IGRpZCBhbnl0aGluZyB0aGF0IHdvdWxkIGxlYWQg
dG8gYSBjaGFuZ2UuCitMTEludEFzc2VtYmx5LmguUEhPTlk6CisJcnVieSAkKEphdmFTY3JpcHRD
b3JlKS9vZmZsaW5lYXNtL2FzbS5yYiAkKEphdmFTY3JpcHRDb3JlKS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvSlNDTExJbnRPZmZzZXRzRXh0cmFj
dG9yID4gTExJbnRBc3NlbWJseS5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
cmV2aXNpb24gMTA1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxNSBA
QAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICov
CisJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovID0geworCQkJ
aXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBG
NDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgK
KwkJCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2Vz
ICovLAorCQkJKTsKKwkJCW5hbWUgPSAiTExJbnQgT2Zmc2V0cyI7CisJCQlwcm9kdWN0TmFtZSA9
ICJEZXJpdmVkIFNvdXJjZXMiOworCQl9OwogCQk2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyog
RGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OwogCQkJ
YnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDY1RkIzRjc3MDlEMTFFQkQwMEY0OURFQiAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVyaXZlZCBTb3Vy
Y2VzIiAqLzsKQEAgLTE0LDYgKzIzLDkgQEAKIAkJCQk2NUZCM0Y2NTA5RDExRTkxMDBGNDlERUIg
LyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTVEMzVERUUxMEM3QzE0MEIwMDg2
NDhCMiAvKiBHZW5lcmF0ZSBEVHJhY2UgaGVhZGVyICovLAogCQkJKTsKKwkJCWRlcGVuZGVuY2ll
cyA9ICgKKwkJCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5j
eSAqLywKKwkJCSk7CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlwcm9kdWN0TmFt
ZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQl9OwpAQCAtNDgsNiArNjAsMTAgQEAKIAkJMEJBQzk0
QTAxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQUM5NDlFMTMzODcyODQw
MENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJDRDgzNTcxNDg1ODQ1MjAwRUEyMDAz
IC8qIFRlbXBvcmFyeUNoYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEJDRDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCRjI4
QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBT
aXplTGltaXRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50
RW50cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICov
OyB9OworCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTYxNEJD
RjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyog
TExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLzsgfTsK
KwkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5ODE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRUaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E1MTRCQ0Y1
MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgz
QTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8q
IEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJ
bmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTU4LDkgKzc0LDEzIEBACiAJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxs
TGlua0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCNzE0QkNG
OEUxMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9i
YWxSZXNvbHZlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9C
eXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVj
b2RlT2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBGQzQ1ODE0QkQx
NUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyog
Q29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNkQ3MjYx
NDJDMzlDMDAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVj
dG9yLmNwcCAqLzsgfTsKIAkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNjYx
NEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVj
dXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdEMTRC
RTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIg
LyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29k
ZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjQyREE3
MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0MkRBNTEzRjNCMUJCMDA3QURE
NEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTZGMTQ3MzhGMzEwMDEyMUU0RiAvKiBERkdD
b2RlQmxvY2tzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTcwMTQ3MzhGMzUw
MDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxv
Y2tzLmNwcCAqLzsgfTsKQEAgLTcxLDYgKzkxLDE5IEBACiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdF
Mzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRs
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA3
RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MEEz
MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBM
TEludEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlGMTRC
QTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxF
Ul9GTEFHUyA9ICItV25vLXVudXNlZC1wYXJhbWV0ZXIiOyB9OyB9OworCQkwRjQ2ODBBNTE0QkE3
RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxw
ZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsKKwkJMEY0Njgw
QTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIg
LyogTExJbnRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcy
IC8qIExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQjE0QkJC
MTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyog
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50
ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICov
OyB9OworCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzgx
NEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUy
NzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovOyB9
OworCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRjE0QkJCM0QxMDBCRkUy
NzIgLyogTExJbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFs
dWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovOyB9Owor
CQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDExNEJCQzVG
ODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyog
VW5jb25kaXRpb25hbEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjYyMDE3NDE0M0ZDRDMzMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYyMDE3MjE0
M0ZDRDJGMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAxNzUxNDNGQ0QzNzAwNjhC
NzdDIC8qIERGR09wZXJhbmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjYyMDE3MTE0M0ZDRDJGMDA2OEI3N0MgLyogREZHT3BlcmFuZHMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzgzLDcgKzQx
Niw3IEBACiAJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUUxMTE3RTU3
ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVw
YXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkJCMDlCRTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87IH07CiAJCTg2QkIw
OUMxMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZH
UmVwYXRjaC5oICovOyB9OwotCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyB9OworCQk4NkMz
NkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAv
KiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFS
TS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1
NjhERDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9OwogCQk4
NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAw
N0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUw
MDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxl
ci5oICovOyB9OwpAQCAtNzUyLDYgKzc4NSwyMCBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTBG
NDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJ
CQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3
RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUg
PSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzI7
CisJCQlyZW1vdGVJbmZvID0gIkxMSW50IE9mZnNldHMiOworCQl9OworCQkwRjQ2ODBCMzE0QkE4
MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJY
Q29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4
RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJl
bW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyOworCQkJcmVtb3Rl
SW5mbyA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJMTQxMjE0QkUwQTQ5MTkw
RTAwNDgwMjU1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENv
bnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZD
MDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTc5Nyw2ICs4NDQsMTUgQEAKIC8qIEVu
ZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5Rmls
ZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENv
cHlGaWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21h
bjEvOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKIAkJNURCQjE1MTEx
MzFEMEIxMzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhDb3B5RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7CkBAIC04Mzcs
NiArODkzLDEwIEBACiAJCTBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmlj
dGlvblZlcmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFJl
c3RyaWN0aW9uVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJDRDgz
NTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZW1wb3JhcnlDaGFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50
RW50cnlwb2ludHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTElu
dEVudHJ5cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RW50
cnlwb2ludHMuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50VGh1bmtzLmNw
cDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50VGh1bmtzLmg7IHBhdGggPSBsbGludC9MTElu
dFRodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBNTE0QkNGNTA0
MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29kZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTgxNEJDRjU1
RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0FB
MTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTg0Nyw5ICs5MDcsMTMgQEAKIAkJMEYwQjgzQjMxNEJDRjg1RTAwODg1
QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNZXRob2RDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbFJlc29sdmVJbmZvLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJu
T2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRDYWxsTGlua0luZm8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8q
IENvbW1vblNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21t
b25TbG93UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNkQ3MjQxNDJD
MzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpJVERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAv
KiBFeGVjdXRpb25IYXJuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4
ZWN1dGlvbkhhcm5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0Ux
NEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVDb252ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhh
cnZlc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrUmVmZXJlbmNl
SGFydmVzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZEMTQ3MzhG
MkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04NjAsNiArOTI0LDIwIEBACiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdF
Mzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4
MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRFeGNlcHRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NM
TEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGlj
aXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4
ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhj
ZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEV4
Y2VwdGlvbnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhj
ZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEV4Y2VwdGlv
bnMuaDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50SGVscGVycy5jcHA7IHBh
dGggPSBsbGludC9MTEludEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50SGVscGVycy5oOyBwYXRoID0gbGxpbnQvTExJbnRI
ZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEExMTRCQTdGODIw
MEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgcGF0aCA9IGxsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENvbW1vbi5oOyBwYXRoID0gbGxpbnQvTExJbnRDb21t
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzYxNEJCQjE2OTAwQkZF
MjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBMTEludE9mZmxpbmVBc21Db25maWcuaDsgcGF0aCA9IGxsaW50L0xMSW50T2ZmbGlu
ZUFzbUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNzE0QkJC
MTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmNwcDsgcGF0aCA9IGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmg7IHBhdGggPSBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnREYXRhLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50
RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENGMTRCQkIzRDEw
MEJGRTI3MiAvKiBMTEludERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TExJbnREYXRhLmg7IHBhdGggPSBsbGludC9MTEludERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFs
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSG9zdENhbGxSZXR1
cm5WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQxMTRCQkM1
RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5dGVDb2RlQ2FjaGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNvZGVDYWNoZS5oOyBwYXRo
ID0gZGZnL0RGR0J5dGVDb2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5jb25kaXRpb25hbEZpbmFsaXplci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYyMDE2RDE0M0ZDRDJGMDA2OEI3N0MgLyog
REZHQWJzdHJhY3RTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBERkdBYnN0cmFjdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NzksNiArMTY1NywxMyBAQAogLyogRW5k
IFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdv
cmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFFMEE0ODc5M0Mw
MDQ4MDI1NSAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxk
UGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTYzNyw2ICsxNzIy
LDcgQEAKIAkJCQkxNDEyMTEyMDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLywKIAkJCQkx
NEJENTlCRjBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2
QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUy
NzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9k
dWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjY3LDYgKzE3NTMsNyBAQAog
CQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICov
LAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVC
QjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLywKKwkJCQkwRjQ2ODA5QzE0QkE3RjRE
MDBCRkUyNzIgLyogbGxpbnQgKi8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQ
SSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJ
CTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKQEAgLTE3MDUsNiArMTc5
MiwyOCBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkwRjQ2
ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmNwcCAqLywKKwkJCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRF
bnRyeXBvaW50cy5oICovLAorCQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRo
dW5rcy5jcHAgKi8sCisJCQkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtz
LmggKi8sCisJCQkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8s
CisJCQkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovLAorCQkJCTBG
NDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovLAorCQkJCTBGNDY4MEM2
MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLywKKwkJCQkwRjQ2
ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8sCisJCQkJ
MEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLywKKwkJ
CQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLywKKwkJ
CQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8sCisJCQkJ
MEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8sCisJCQkJMEY0
NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovLAorCQkJCTBGNDY4MEEx
MTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovLAorCQkJKTsK
KwkJCW5hbWUgPSBsbGludDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTE0
MTIxMTAwMEE0ODc3MjYwMDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNzM3LDYgKzE4NDYsOCBAQAogCQkxNDI5RDkyQzBFRDIy
RDcwMDBCODk2MTkgLyogaml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1
ZS5jcHAgKi8sCisJCQkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJu
VmFsdWUuaCAqLywKIAkJCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9u
cy5jcHAgKi8sCiAJCQkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMu
aCAqLywKIAkJCQkwRkQ4MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAu
aCAqLywKQEAgLTIxNjYsNiArMjI3Nyw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAv
KiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICov
LAorCQkJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8s
CiAJCQkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovLAog
CQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2
MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLApAQCAtMjUyNSw2ICsyNjM4LDgg
QEAKIAkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNh
ID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2
NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovLAorCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4
MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovLAogCQkJCTBGOTMzMjkzMTRDQTdEQzEwMDg1
RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgKi8sCiAJCQkJMEY5MzMyOTQxNENBN0RDMTAwODVG
M0M2IC8qIENhbGxMaW5rU3RhdHVzLmggKi8sCiAJCQkJMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2
IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovLApAQCAtMzA3Niw3ICszMTkxLDE2IEBACiAJCQkJODY3
MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4
Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAv
KiBMTEludEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRCQTU3MkQwMEJG
RTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQTE0QkJC
MTZDMDBCRkUyNzIgLyogTExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENC
MTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRh
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENh
bGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1
QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlEMTRC
Q0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgz
QTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBC
ODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMwODUsNyArMzIwOSwxMSBAQAogCQkJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4
NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I3
MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2Rl
T2Zmc2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyog
TExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjFDMjY4MTRCRTVGNjgw
MEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdDMTRCRTcy
NzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIx
QzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlv
bnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRBMTRDM0NEMjkwMDdDM0RCMSAvKiBERkdD
Q2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RC
MSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRDMTRDM0NE
NDMwMDdDM0RCMSAvKiBERkdCeXRlQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMDMs
NiArMzIzMSwyNCBAQAogLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOEUxNEJBN0U1RTAw
QkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWE5h
dGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODA5QTE0QkE3RTVG
MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQg
IkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkw
RjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLywKKwkJCQkwRjQ2ODA4QzE0QkE3
RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkwRjQ2ODA4RDE0QkE3RTVFMDBCRkUy
NzIgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJ
ZGVwZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJn
ZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBKU0NMTEludE9mZnNldHNFeHRyYWN0
b3I7CisJCQlwcm9kdWN0TmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1
Y3RSZWZlcmVuY2UgPSAwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRz
RXh0cmFjdG9yICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50
b29sIjsKKwkJfTsKIAkJMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8gPSB7
CiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0g
MTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLzsKQEAgLTMyMjksMTEgKzMzNzUsMjkgQEAKIAkJ
CQkxNEJENTlCRTBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk5MzJGNUJEQTA4
MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAogCQkJCTY1MTEyMkY3MTQwNDZBNEMwMDJCMTAxRCAv
KiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTElu
dE9mZnNldHNFeHRyYWN0b3IgKi8sCisJCQkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExM
SW50IE9mZnNldHMgKi8sCiAJCQkpOwogCQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2
ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovID0gewor
CQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJ
IiQoU1JDUk9PVCkvbGxpbnQvTG93TGV2ZWxBc3NlbWJsZXIuYXNtIiwKKwkJCSk7CisJCQluYW1l
ID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQki
JChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmgi
LAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJ
c2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlM
VF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9cIlxuXG4vdXNyL2Jpbi9lbnYgcnVieSBcIiR7
U1JDUk9PVH0vb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiXCIgPCBcIiR7
U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc21cIiA+IFwiJHtCVUlMVF9QUk9E
VUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmhcIlxuIjsKKwkJfTsK
IAkJMzcxM0YwMTQxNDI5MDUyNDAwMzYzODdGIC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9i
amVjdGl2ZS1DIENsYXNzIE5hbWVzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWls
ZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTMzNzQsNiArMzUz
OCwxNCBAQAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEIxNEJBN0U1
RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkw
RjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOworCQl9OwogCQkxNDEyMTExRDBBNDg3OTNDMDA0ODAyNTUgLyogU291cmNlcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0
NzQ4MzY0NzsKQEAgLTM2MzIsNyArMzgwNCwxNCBAQAogCQkJCTg2NzA0Qjg2MTJEQkEzMzcwMEE5
RkU3QiAvKiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg5MTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI0MjEy
REI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNl
cHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAv
KiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQyMTRC
QkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0Njgw
RDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1
bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4NUI0RiAvKiBD
YWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjQxNEJDRjg2MDAwODg1
QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNjlFODZD
MzE0QzZFNTUxMDAyQzJDNjIgLyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTM2NTQsNiArMzgzMywxNiBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTBGNDY4MEIy
MTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0g
UEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3
MiAvKiBMTEludCBPZmZzZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMTE0QkE4MTE1
MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkwRjQ2ODBCNDE0
QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBC
WFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIg
LyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBC
MzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQkx
NDEyMTRCRjBBNDkxOTBFMDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEyMTExRjBBNDg3OTND
MDA0ODAyNTUgLyogbWluaWRvbSAqLzsKQEAgLTM2ODcsNiArMzg3NiwxNDggQEAKIC8qIEVuZCBQ
QlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZpZ3Vy
YXRpb24gc2VjdGlvbiAqLworCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNI
U19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0ND
X0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBO
TzsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1J
WkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAor
CQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZ
TUJPTFNfUFJJVkFURV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5j
b21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZF
UlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7
CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5V
U0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0g
KAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRP
ZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gWUVT
OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1h
Y29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9E
VUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJ
CQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxl
YXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0g
IiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsK
KwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlH
Q0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENF
UFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZt
LmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POwor
CQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FS
Tl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUg
PSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJ
CQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMkKEhFQURF
Ul9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9
IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09U
ID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJ
fTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIg
LyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJ
CUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJ
UCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3lt
IjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVf
T0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBp
bGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lP
TiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURf
VkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJ
CQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNl
dHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hf
REVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9O
QU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFU
SFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9T
RUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2
ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNI
X1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCki
OworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9S
TUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBn
bnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVS
U0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5f
NjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5H
X1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7
CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNI
X1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUyki
LAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9E
VUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJ
VVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9M
TEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFBy
b2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9
IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5h
bWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2Ug
Ki8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJ
CQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFBy
b2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOwor
CQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIwMTRCQTdGRDkwMEJG
RTI3MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJj
ZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTNB
MEE0ODc5ODQwMDQ4MDI1NSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKQEAgLTM5MjgsNiArNDI1OSwyOCBAQAogLyog
RW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENDb25maWd1
cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRz
RXh0cmFjdG9yIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWls
ZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1
ZyAqLywKKwkJCQkwRjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkw
RjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MDk5MTRC
QTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1
cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1
Y3Rpb247CisJCX07CisJCTBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi8gPSB7
CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKKwkJCQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0Njgw
QUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwQUYxNEJBN0ZEOTAw
QkZFMjcyIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyog
UHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9
IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkx
NDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9u
TGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA1NjQ1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDcgKzM0LDcgQEAKICNkZWZpbmUgR0xPQkFMX1RIVU5LX0lEIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigtMSkpCiAjZGVmaW5lIFJFR0VYUF9DT0RF
X0lEIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigtMikpCiAK
LSNpbmNsdWRlIDxNYWNyb0Fzc2VtYmxlci5oPgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgi
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50
aW9ucy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5
dGVjb2RlQ29udmVudGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEJ5dGVjb2Rl
Q29udmVudGlvbnNfaAorI2RlZmluZSBCeXRlY29kZUNvbnZlbnRpb25zX2gKKworLy8gUmVnaXN0
ZXIgbnVtYmVycyB1c2VkIGluIGJ5dGVjb2RlIG9wZXJhdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbWVh
bmluZyBhY2NvcmRpbmcgdG8gdGhlaXIgcmFuZ2VzOgorLy8gICAgICAweDgwMDAwMDAwLTB4RkZG
RkZGRkYgIE5lZ2F0aXZlIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGVu
dHJpZXMgaW4gdGhlIGNhbGwgZnJhbWUsIHNlZSBSZWdpc3RlckZpbGUuaC4KKy8vICAgICAgMHgw
MDAwMDAwMC0weDNGRkZGRkZGICBGb3J3YXJkcyBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBw
b2ludGVyIGFyZSBsb2NhbCB2YXJzIGFuZCB0ZW1wb3JhcmllcyB3aXRoIHRoZSBmdW5jdGlvbidz
IGNhbGxmcmFtZS4KKy8vICAgICAgMHg0MDAwMDAwMC0weDdGRkZGRkZGICBQb3NpdGl2ZSBpbmRp
Y2VzIGZyb20gMHg0MDAwMDAwMCBzcGVjaWZ5IGVudHJpZXMgaW4gdGhlIGNvbnN0YW50IHBvb2wg
b24gdGhlIENvZGVCbG9jay4KK3N0YXRpYyBjb25zdCBpbnQgRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXggPSAweDQwMDAwMDAwOworCisjZW5kaWYgLy8gQnl0ZWNvZGVDb252ZW50aW9uc19oCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmNwcAkocmV2aXNpb24gMTA1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTcgKzI3LDM4IEBA
CiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgor
I2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitDYWxs
TGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHBy
b2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisjaWYgRU5BQkxFKExMSU5U
KQorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0
aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworICAgIExMSW50Q2FsbExpbmtJbmZvKiBj
YWxsTGlua0luZm8gPSBpbnN0cnVjdGlvbls0XS51LmNhbGxMaW5rSW5mbzsKKyAgICAKKyAgICBy
ZXR1cm4gQ2FsbExpbmtTdGF0dXMoY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5nZXQoKSwg
ZmFsc2UpOworI2Vsc2UKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFsc2UpOworI2Vu
ZGlmCit9CisKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKENvZGVC
bG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIHsKICAgICBVTlVT
RURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgp
OwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAgICByZXR1cm4g
Q2FsbExpbmtTdGF0dXMoCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mbyhi
eXRlY29kZUluZGV4KS5sYXN0U2VlbkNhbGxlZS5nZXQoKSwKLSAgICAgICAgcHJvZmlsZWRCbG9j
ay0+Y291bGRUYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpOworICAgIGlmICghcHJvZmlsZWRC
bG9jay0+bnVtYmVyT2ZDYWxsTGlua0luZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJv
bUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIGlmIChwcm9m
aWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKKyAgICAgICAgcmV0
dXJuIENhbGxMaW5rU3RhdHVzKDAsIHRydWUpOworICAgIAorICAgIEpTRnVuY3Rpb24qIHRhcmdl
dCA9IHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KS5sYXN0U2Vl
bkNhbGxlZS5nZXQoKTsKKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVG
cm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgcmV0dXJu
IENhbGxMaW5rU3RhdHVzKHRhcmdldCwgZmFsc2UpOwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbExp
bmtTdGF0dXMoMCwgZmFsc2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24gMTA1NjQ1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDE1ICs0NywxNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIENhbGxMaW5r
U3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAg
ICAgCi0gICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0OyB9Cisg
ICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0IHx8IG1fY291bGRU
YWtlU2xvd1BhdGg7IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJu
ICFtX2NhbGxUYXJnZXQ7IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFp
c1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBKU0Z1bmN0aW9uKiBjYWxsVGFy
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgCiBwcml2YXRlOgorICAg
IHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpOworICAgIAogICAgIEpTRnVuY3Rpb24qIG1fY2FsbFRhcmdldDsK
ICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEwNTY0NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
U3RhdGljU2NvcGVPYmplY3QuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTG93
TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRl
ICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtNTksOCArNjAs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAjZW5kaWYKIAotI2lm
ICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQogc3RhdGljIFVT
dHJpbmcgZXNjYXBlUXVvdGVzKGNvbnN0IFVTdHJpbmcmIHN0cikKIHsKICAgICBVU3RyaW5nIHJl
c3VsdCA9IHN0cjsKQEAgLTM1OCwxMCArMzU3LDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4
ZWNTdGF0ZSogZXhlYykgY28KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc3RydWN0aW9u
cygpLnNpemUoKTsgaSArPSBvcGNvZGVMZW5ndGhzW2V4ZWMtPmludGVycHJldGVyKCktPmdldE9w
Y29kZUlEKGluc3RydWN0aW9ucygpW2ldLnUub3Bjb2RlKV0pCiAgICAgICAgICsraW5zdHJ1Y3Rp
b25Db3VudDsKIAotICAgIHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQg
JXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpXG5cbiIsCisgICAgcHJp
bnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVyKHMp
OyAlZCBjYWxsZWUgcmVnaXN0ZXIocyk7ICVkIHZhcmlhYmxlKHMpXG5cbiIsCiAgICAgICAgIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9uQ291bnQpLAogICAgICAgICBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKSwKLSAgICAgICAgdGhpcywgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJl
Z2lzdGVycyk7CisgICAgICAgIHRoaXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdp
c3RlcnMsIG1fbnVtVmFycyk7CiAKICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVy
YXRvciBiZWdpbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgVmVjdG9yPEluc3RydWN0
aW9uPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW5zdHJ1Y3Rpb25zKCkuZW5kKCk7CkBAIC04OTgs
NiArODk3LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAg
ICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90
cmFuc2l0aW9uIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDogeworICAgICAgICAgICAgcHJpbnRQdXRC
eUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Iik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywg
bG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsIik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9nZW5lcmljOiB7
CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlf
aWRfZ2VuZXJpYyIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjkxLDggKzEyOTgsNiBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgfQogfQogCi0jZW5k
aWYgLy8gIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotCiAjaWYg
RFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJQ1MKIHN0YXRpYyBIYXNoU2V0PENvZGVCbG9jayo+IGxp
dmVDb2RlQmxvY2tTZXQ7CiAjZW5kaWYKQEAgLTE0NTksNiArMTQ2NCw3IEBAIENvZGVCbG9jazo6
Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywKIHsKICAgICBzZXROdW1QYXJhbWV0ZXJzKG90
aGVyLm51bVBhcmFtZXRlcnMoKSk7CiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOworICAgIGpp
dEFmdGVyV2FybVVwKCk7CiAgICAgCiAgICAgaWYgKG90aGVyLm1fcmFyZURhdGEpIHsKICAgICAg
ICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwpAQCAtMTUwNyw2ICsxNTEzLDcgQEAgQ29k
ZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgIEFTU0VSVChtX3NvdXJj
ZSk7CiAgICAgCiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOworICAgIGppdEFmdGVyV2FybVVw
KCk7CiAKICNpZiBEVU1QX0NPREVfQkxPQ0tfU1RBVElTVElDUwogICAgIGxpdmVDb2RlQmxvY2tT
ZXQuYWRkKHRoaXMpOwpAQCAtMTUyNCw3ICsxNTMxLDExIEBAIENvZGVCbG9jazo6fkNvZGVCbG9j
aygpCiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJPRklMRSkKICAgICBkdW1wVmFsdWVQcm9m
aWxlcygpOwogI2VuZGlmCi0gICAgCisKKyNpZiBFTkFCTEUoTExJTlQpICAgIAorICAgIHdoaWxl
IChtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVu
ZCgpKQorICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpLT5yZW1vdmUoKTsKKyNl
bmRpZiAvLyBFTkFCTEUoTExJTlQpCiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBXZSBtYXkgYmUg
ZGVzdHJveWVkIGJlZm9yZSBhbnkgQ29kZUJsb2NrcyB0aGF0IHJlZmVyIHRvIHVzIGFyZSBkZXN0
cm95ZWQuCiAgICAgLy8gQ29uc2lkZXIgdGhhdCB0d28gQ29kZUJsb2NrcyBiZWNvbWUgdW5yZWFj
aGFibGUgYXQgdGhlIHNhbWUgdGltZS4gVGhlcmUKQEAgLTE3MzYsOCArMTc0Nyw1NyBAQCB2b2lk
IENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAjZWxzZQogICAgIHN0YXRpYyBj
b25zdCBib29sIHZlcmJvc2VVbmxpbmtpbmcgPSBmYWxzZTsKICNlbmRpZgotI2VuZGlmCisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKICAgICAKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW50ZXJwcmV0
ZXIqIGludGVycHJldGVyID0gbV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlcjsKKyAgICBpZiAoIWlu
dGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgewor
ICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygp
W21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgc3dpdGNoIChp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpKSB7Cisg
ICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkOgorICAgICAgICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUg
fHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlv
bls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9u
WzVdLnUub3BlcmFuZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAgICAgIGlmIChIZWFwOjpp
c01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUu
Z2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0
aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigp
OworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmNsZWFyKCk7
CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5jbGVh
cigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlID0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBzaXplID0g
bV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlv
bnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgQVNTRVJU
KGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0g
b3BfcmVzb2x2ZV9nbG9iYWwKKyAgICAgICAgICAgICAgICAgICB8fCBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFs
X2R5bmFtaWMpOworICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVy
ZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQoKSkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlvblsz
XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5v
cGVyYW5kID0gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChtX2xs
aW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpICYmICFIZWFwOjppc01hcmtlZChtX2xsaW50
Q2FsbExpbmtJbmZvc1tpXS5jYWxsZWUuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcgTExJ
bnQgY2FsbCBmcm9tICVwLlxuIiwgdGhpcyk7CisgICAgICAgICAgICAgICAgbV9sbGludENhbGxM
aW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoISFt
X2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQo
bV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQorICAgICAgICAg
ICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlLmNsZWFyKCk7Cisg
ICAgICAgIH0KKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCiAjaWYgRU5BQkxFKERG
R19KSVQpCiAgICAgLy8gQ2hlY2sgaWYgd2UncmUgbm90IGxpdmUuIElmIHdlIGFyZSwgdGhlbiBq
ZXR0aXNvbi4KICAgICBpZiAoIShzaG91bGRJbW1lZGlhdGVseUFzc3VtZUxpdmVuZXNzRHVyaW5n
U2NhbigpIHx8IG1fZGZnRGF0YS0+bGl2ZW5lc3NIYXNCZWVuUHJvdmVkKSkgewpAQCAtMTg1OCwx
MCArMTkxOCwxMiBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVjbHMuc2l6ZSgpOyArK2kpCiAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9uRGVjbHNbaV0pOwogI2lmIEVOQUJMRShJ
TlRFUlBSRVRFUikKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICB2aXNpdFN0cnVj
dHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bnNbaV1dKTsKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rp
b25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0dXJl
cyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ld
XSk7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPmVuYWJsZWQoKSkgeworICAg
ICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXpl
KCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZp
c2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7
CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMu
c2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHZpc2l0U3RydWN0dXJl
cyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ld
XSk7CisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTIwNzAsNiArMjEz
MiwxMiBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogewogICAgIGlmICghIW1fYWx0
ZXJuYXRpdmUpCiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPnVubGlua0NhbGxzKCk7CisjaWYgRU5B
QkxFKExMSU5UKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sbGludENhbGxMaW5rSW5m
b3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlz
TGlua2VkKCkpCisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsK
KyAgICB9CisjZW5kaWYKICAgICBpZiAoIShtX2NhbGxMaW5rSW5mb3Muc2l6ZSgpIHx8IG1fbWV0
aG9kQ2FsbExpbmtJbmZvcy5zaXplKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2ds
b2JhbERhdGEtPmNhblVzZUpJVCgpKQpAQCAtMjA4NCwxMCArMjE1MiwzNyBAQCB2b2lkIENvZGVC
bG9jazo6dW5saW5rQ2FsbHMoKQogCiB2b2lkIENvZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxs
cygpCiB7CisgICAgd2hpbGUgKG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCkgIT0gbV9pbmNv
bWluZ0xMSW50Q2FsbHMuZW5kKCkpCisgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLmJlZ2lu
KCktPnVubGluaygpOworICAgIGlmIChtX2luY29taW5nQ2FsbHMuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRoaXMpOwogICAgIHdo
aWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2FsbHMuZW5kKCkpCiAg
ICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigpLT51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVw
YXRjaEJ1ZmZlcik7CiB9CisKK3Vuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhl
Y1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit7CisjaWYgRU5B
QkxFKExMSU5UKQorICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfYmVnaW4pCisgICAgICAgICYmIHJldHVybkFkZHJlc3MudmFsdWUoKSA8
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQpKSB7CisgICAgICAgIEFTU0VSVChleGVj
LT5jb2RlQmxvY2soKSk7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSA9PSB0aGlz
KTsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkp
OworICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBleGVjLT5jdXJyZW50VlBDKCk7
CisgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbik7CisgICAgICAgIHJldHVybiBieXRlY29kZU9m
ZnNldChpbnN0cnVjdGlvbik7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7
CisjZW5kaWYKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiAxOworICAgIFZl
Y3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0gbV9y
YXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7CisgICAgaWYgKCFjYWxsSW5kaWNlcy5z
aXplKCkpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0
PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5v
ZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7Cit9CiAjZW5k
aWYKIAogdm9pZCBDb2RlQmxvY2s6OmNsZWFyRXZhbENhY2hlKCkKQEAgLTIxODMsMjQgKzIyNzgs
NDUgQEAgYm9vbCBGdW5jdGlvbkNvZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERgogCiB2b2lkIFBy
b2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9
IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5n
SklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwog
ICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5q
ZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRXZhbENvZGVC
bG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklU
VHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGlj
X2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1p
emVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6amV0
dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVK
SVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7
CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENv
ZGVGb3IoKmdsb2JhbERhdGEoKSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6
IENvZGVGb3JDYWxsKTsKIH0KKwordm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1w
bChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9
PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNl
bWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25l
ckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZ2xvYmFsRGF0YSk7Cit9CisKK3ZvaWQgRXZhbENv
ZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAg
IEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAg
QVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV2
YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlKGdsb2JhbERhdGEp
OworfQorCit2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJ
bnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxl
KCkpLT5qaXRDb21waWxlRm9yKGdsb2JhbERhdGEsIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JD
b25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWQUxVRV9Q
Uk9GSUxFUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgJKHJldmlzaW9uIDEwNTY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBDb2Rl
QmxvY2tfaAogI2RlZmluZSBDb2RlQmxvY2tfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50
aW9ucy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5P
ZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgpAQCAtNTAs
NiArNTEsNyBAQAogI2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRDYWxs
TGlua0luZm8uaCIKICNpbmNsdWRlICJMaW5lSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAj
aW5jbHVkZSAiUHJlZGljdGlvblRyYWNrZXIuaCIKQEAgLTY1LDE2ICs2NywxMSBAQAogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCi0vLyBS
ZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVu
dCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6Ci0vLyAgICAgIDB4ODAwMDAwMDAt
MHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBh
cmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgotLy8gICAg
ICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZy
YW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0
aW9uJ3MgY2FsbGZyYW1lLgotLy8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZl
IGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQg
cG9vbCBvbiB0aGUgQ29kZUJsb2NrLgotc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7Ci0KIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3Mg
RXhlY1N0YXRlOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgRXhlY1N0YXRl
OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGlubGluZSBpbnQgdW5t
b2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGludCBhcmd1bWVudHNSZWdpc3RlcikgeyByZXR1cm4g
YXJndW1lbnRzUmVnaXN0ZXIgLSAxOyB9CiAKQEAgLTgzLDYgKzgwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIs
IHB1YmxpYyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENvcHlQ
YXJzZWRCbG9ja1RhZyB7IENvcHlQYXJzZWRCbG9jayB9OwogICAgIHByb3RlY3RlZDoKQEAgLTEy
Myw3ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHdoaWxlIChyZXN1bHQt
PmFsdGVybmF0aXZlKCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5hbHRlcm5h
dGl2ZSgpOwogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgICAgICBBU1NFUlQo
cmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAg
ICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7
CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAjZW5kaWYKQEAgLTEzNCwx
MSArMTMyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0
YXRpc3RpY3MoKTsKIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFX09QQ09ERV9TQU1Q
TElORwogICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQg
cHJpbnRTdHJ1Y3R1cmVzKGNvbnN0IEluc3RydWN0aW9uKikgY29uc3Q7CiAgICAgICAgIHZvaWQg
cHJpbnRTdHJ1Y3R1cmUoY29uc3QgY2hhciogbmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBpbnQg
b3BlcmFuZCkgY29uc3Q7Ci0jZW5kaWYKIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAKQEAgLTE5NCwxNSArMTkwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9kQ2Fs
bExpbmtJbmZvLCB1bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4o
bV9tZXRob2RDYWxsTGlua0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXpl
KCksIGJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0KFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAg
ICAgICAgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbElu
ZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKLSAgICAgICAgICAg
IGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAg
ICAgICAgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9m
ZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCks
IGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3Mu
dmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKLSAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldChFeGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAgICAgICB1
bnNpZ25lZCBieXRlY29kZU9mZnNldEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAg
ICAgICB7CkBAIC0yMjMsMTEgKzIxMSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewog
ICAgICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwogICAgICAgICB9Cisj
aWYgRU5BQkxFKExMSU5UKQorICAgICAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoTExJbnRDYWxs
TGlua0luZm8qIGluY29taW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2luY29taW5nTExJ
bnRDYWxscy5wdXNoKGluY29taW5nKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKICAgICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5rSW5jb21pbmdDYWxscygpOwotI2VuZGlm
CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJM
RShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIHZvaWQgc2V0SklUQ29kZU1hcChQ
YXNzT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBqaXRDb2RlTWFwKQogICAgICAgICB7CiAgICAg
ICAgICAgICBtX2ppdENvZGVNYXAgPSBqaXRDb2RlTWFwOwpAQCAtMjM2LDcgKzIzMCw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9qaXRDb2RlTWFw
LmdldCgpOwogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgCisjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgICAgIHZvaWQgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKCEhbV9kZmdEYXRhKQpAQCAtMzM1LDEyICszMzEsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAg
ICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykK
ICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJldHVybkFkZHJlc3MgPj0gaW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKSAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zKCkuZW5kKCkpOwog
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVz
cykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAg
ICB2b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVG
dW5jdGlvbikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVG
dW5jdGlvbjsgfQogICAgICAgICBib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbigpIHsgcmV0
dXJuIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CkBAIC0zNTYsMTUgKzM1MSwxNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlz
Y2FyZGluZ09wcG9ydHVuaXR5KCkKICAgICAgICAgeworI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBM
SU5HKSAmJiAhRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgaWYgKEJ5dGVjb2RlR2VuZXJhdG9y
OjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICBpZiAoISFhbHRlcm5hdGl2ZSgpKQogICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29k
ZSgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZUxh
dGVyKCk7CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICAKLSNpZm5kZWYgTkRFQlVHCiAgICAg
ICAgIGJvb2wgdXNlc09wY29kZShPcGNvZGVJRCk7Ci0jZW5kaWYKIAogICAgICAgICB1bnNpZ25l
ZCBpbnN0cnVjdGlvbkNvdW50KCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbkNvdW50OyB9CiAgICAg
ICAgIHZvaWQgc2V0SW5zdHJ1Y3Rpb25Db3VudCh1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50KSB7
IG1faW5zdHJ1Y3Rpb25Db3VudCA9IGluc3RydWN0aW9uQ291bnQ7IH0KQEAgLTM4NywxNyArMzg0
LDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBl
eGVjdXRhYmxlTWVtb3J5KCkgeyByZXR1cm4gZ2V0SklUQ29kZSgpLmdldEV4ZWN1dGFibGVNZW1v
cnkoKTsgfQogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNT
dGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlz
b24oKSA9IDA7CisgICAgICAgIGJvb2wgaml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuaykgeworICAgICAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkg
PT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGppdENvbXBpbGVJbXBsKGdsb2JhbERhdGEpOwor
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgdmlydHVhbCBDb2Rl
QmxvY2sqIHJlcGxhY2VtZW50KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGls
ZVdpdGhERkcoKSA9IDA7CiAgICAgICAgIGJvb2wgaGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJh
c2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShn
ZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcmVwbGFjZW1lbnQoKS0+
Z2V0SklUVHlwZSgpID4gZ2V0SklUVHlwZSgpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAg
ICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCkt
PmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwogICAgICAgICAgICAgZWxzZSB7Ci0g
ICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRD
b2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFz
ZWxpbmVDb2RlKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgICAg
IEFTU0VSVChyZXBsYWNlbWVudCgpID09IHRoaXMpOwogICAgICAgICAgICAgfQogI2VuZGlmCkBA
IC00NTYsMTggKzQ2MiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGNsZWFy
RXZhbENhY2hlKCk7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIHZvaWQgYWRk
UHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbih1bnNpZ25lZCBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0
aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklU
KCkpCi0gICAgICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5hcHBlbmQo
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBtX3Byb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKTsKICAgICAgICAg
fQogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbih1bnNpZ25lZCBnbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9nbG9i
YWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBt
X2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlv
bik7CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25B
dEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKyNpZiBFTkFCTEUoTExJ
TlQpCisgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBhZGRMTEludENhbGxMaW5rSW5mbygpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zLmFwcGVuZChMTEludENh
bGxMaW5rSW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiAmbV9sbGludENhbGxMaW5rSW5mb3Mu
bGFzdCgpOworICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lk
IHNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKHNpemVfdCBzaXplKSB7IG1fc3RydWN0dXJl
U3R1YkluZm9zLmdyb3coc2l6ZSk7IH0KQEAgLTQ3Niw4ICs0ODUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbmZvKHVuc2lnbmVkIGdsb2JhbFJl
c29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fZ2xvYmFsRGF0
YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBw
ZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOworICAgICAg
ICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbikpOwogICAgICAgICB9CiAgICAgICAgIEdsb2JhbFJlc29sdmVJ
bmZvJiBnbG9iYWxSZXNvbHZlSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJuIG1fZ2xvYmFsUmVzb2x2
ZUluZm9zW2luZGV4XTsgfQogICAgICAgICBib29sIGhhc0dsb2JhbFJlc29sdmVJbmZvQXRCeXRl
Y29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CkBAIC01MjgsNiArNTM2LDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRl
Y29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJvZmlsZSA9PSByZXN1bHQpOwogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQorICAgICAgICBQcmVkaWN0ZWRUeXBlIHZh
bHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCktPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOworICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxl
cygpCiAgICAgICAgIHsKQEAgLTU1NCwxMiArNTY2LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZz
ZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVz
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQg
dmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkt
Pm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRpb25zOjpsaWtlbHlU
b1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAv
IG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRo
cmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBjb3VsZFRha2VTbG93
Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVt
YmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiB2YWx1
ZSA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2Fz
dDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpjb3Vs
ZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQpAQCAtNTc4LDEyICs1OTQsMTYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZVNwZWNp
YWxGYXN0Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFs
RmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50
ZXI7CiAgICAgICAgICAgICByZXR1cm4gc3BlY2lhbEZhc3RDYXNlQ291bnQgPj0gT3B0aW9uczo6
bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPihz
cGVjaWFsRmFzdENhc2VDb3VudCkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6
bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIGJvb2wgbGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkK
ICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCBzbG93
Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3Vu
dCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gc2xvd0Nhc2VDb3Vu
dCAtIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNTkyLDYgKzYxMiw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VBbnlTbG93Q2FzZShpbnQg
Ynl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJl
Q2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgc3Bl
Y2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1
ZSA9IHNsb3dDYXNlQ291bnQgKyBzcGVjaWFsRmFzdENhc2VDb3VudDsKQEAgLTY3Nyw3ICs2OTks
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgYWRkRnJlcXVlbnRF
eGl0U2l0ZShjb25zdCBERkc6OkZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwor
ICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkp
OwogICAgICAgICAgICAgcmV0dXJuIG1fZXhpdFByb2ZpbGUuYWRkKHNpdGUpOwogICAgICAgICB9
CiAKQEAgLTc4Miw2ICs4MDQsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgY29w
eVBvc3RQYXJzZURhdGFGcm9tKENvZGVCbG9jayogYWx0ZXJuYXRpdmUpOwogICAgICAgICB2b2lk
IGNvcHlQb3N0UGFyc2VEYXRhRnJvbUFsdGVybmF0aXZlKCk7CiAgICAgICAgIAorICAgICAgICAv
LyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gSklUdGluZyBraWNrcyBpbiwgaW4gYSBt
aXhlZCBtb2RlCisgICAgICAgIC8vIGV4ZWN1dGlvbiB3b3JsZC4KKyAgICAgICAgCisgICAgICAg
IHZvaWQgZG9udEpJVEFueXRpbWVTb29uKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGlu
dEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJ
VEFueXRpbWVTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdEFmdGVy
V2FybVVwKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0g
T3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0U29vbigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvckpJVFNvb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludDMyX3QgbGxpbnRF
eGVjdXRlQ291bnRlcigpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2xs
aW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIC8vIEZ1bmN0
aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiB0aWVyZWQgY29tcGlsYXRpb24ga2lja3MgaW4uIFRo
aXMKICAgICAgICAgLy8gY29udHJvbHMgYm90aCB3aGVuIHRoZSBvcHRpbWl6aW5nIGNvbXBpbGVy
IGlzIGludm9rZWQgYW5kIHdoZW4gT1NSCiAgICAgICAgIC8vIGVudHJ5IGhhcHBlbnMuIFR3byB0
cmlnZ2VycyBleGlzdDogdGhlIGxvb3AgdHJpZ2dlciBhbmQgdGhlIHJldHVybgpAQCAtOTc0LDYg
KzEwMTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3Nob3VsZERpc2NhcmRC
eXRlY29kZTsKIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBp
bGVJbXBsKEpTR2xvYmFsRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0V2Vh
a1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXpl
VW5jb25kaXRpb25hbGx5KCk7CiAgICAgICAgIApAQCAtOTg2LDcgKzEwMzIsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCB0YWxseUZyZXF1ZW50RXhpdFNpdGVzKCkgeyB9CiAjZW5k
aWYKICAgICAgICAgCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBM
SU5HKQogICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKiwgY29uc3QgVmVjdG9yPEluc3RydWN0
aW9uPjo6Y29uc3RfaXRlcmF0b3ImIGJlZ2luLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9p
dGVyYXRvciYpIGNvbnN0OwogCiAgICAgICAgIENTdHJpbmcgcmVnaXN0ZXJOYW1lKEV4ZWNTdGF0
ZSosIGludCByKSBjb25zdDsKQEAgLTk5Niw3ICsxMDQxLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgcHJpbnRHZXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0
b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsK
ICAgICAgICAgdm9pZCBwcmludENhbGxPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3Rv
cjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0Owog
ICAgICAgICB2b2lkIHByaW50UHV0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVj
dG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7
Ci0jZW5kaWYKICAgICAgICAgdm9pZCB2aXNpdFN0cnVjdHVyZXMoU2xvdFZpc2l0b3ImLCBJbnN0
cnVjdGlvbiogdlBDKSBjb25zdDsKICAgICAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0x
MDU3LDkgKzExMDEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxTb3VyY2VQ
cm92aWRlcj4gbV9zb3VyY2U7CiAgICAgICAgIHVuc2lnbmVkIG1fc291cmNlT2Zmc2V0OwogCi0j
aWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fcHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbnM7CiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9nbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb25zOworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgU2VnbWVudGVk
VmVjdG9yPExMSW50Q2FsbExpbmtJbmZvLCA4PiBtX2xsaW50Q2FsbExpbmtJbmZvczsKKyAgICAg
ICAgU2VudGluZWxMaW5rZWRMaXN0PExMSW50Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVs
Tm9kZTxMTEludENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5nTExJbnRDYWxsczsKICNlbmRpZgog
I2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFZlY3RvcjxTdHJ1Y3R1cmVTdHViSW5mbz4gbV9zdHJ1
Y3R1cmVTdHViSW5mb3M7CkBAIC0xMDcwLDkgKzExMTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2ppdENvZGVXaXRoQXJpdHlDaGVjazsKICAg
ICAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5v
ZGU8Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdDYWxsczsKICNlbmRpZgotI2lmIEVOQUJMRShE
RkdfSklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIE93
blB0cjxDb21wYWN0SklUQ29kZU1hcD4gbV9qaXRDb2RlTWFwOwotICAgICAgICAKKyNlbmRpZgor
I2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBzdHJ1Y3QgV2Vha1JlZmVyZW5jZVRyYW5zaXRp
b24gewogICAgICAgICAgICAgV2Vha1JlZmVyZW5jZVRyYW5zaXRpb24oKSB7IH0KICAgICAgICAg
ICAgIApAQCAtMTEzNSwxMiArMTE4MiwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBP
d25QdHI8Q29kZUJsb2NrPiBtX2FsdGVybmF0aXZlOwogICAgICAgICAKKyAgICAgICAgaW50MzJf
dCBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIAogICAgICAgICBpbnQzMl90IG1faml0
RXhlY3V0ZUNvdW50ZXI7CiAgICAgICAgIHVpbnQzMl90IG1fc3BlY3VsYXRpdmVTdWNjZXNzQ291
bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZUZhaWxDb3VudGVyOwogICAgICAg
ICB1aW50OF90IG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyOwogICAgICAgICB1aW50OF90IG1f
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXI7Ci0KKyAgICAgICAgCiAgICAgICAgIHN0cnVjdCBS
YXJlRGF0YSB7CiAgICAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBw
dWJsaWM6CkBAIC0xMjEzLDYgKzEyNjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRl
KiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAg
ICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBjYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC0xMjQ3LDYgKzEyOTcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNv
bXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1w
bChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50
KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBA
IC0xMjg0LDYgKzEzMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVD
aGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVh
bCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21w
aWxlV2l0aERGRygpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDU2NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDIwICsyNyw0NiBAQAogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKK0dldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21M
TEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElk
ZW50aWZpZXImIGlkZW50KQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0
ZWNvZGVJbmRleDsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxp
bnRfb3BfbWV0aG9kX2NoZWNrKQorICAgICAgICBpbnN0cnVjdGlvbisrOworCisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBp
ZiAoIXN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlv
biwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisgICAgCisgICAgc2l6ZV90IG9m
ZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50
KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAg
ICAKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhTaW1wbGVEaXJlY3QsIFN0cnVjdHVyZVNldChz
dHJ1Y3R1cmUpLCBvZmZzZXQsIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0
dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisjZW5k
aWYKK30KKwogR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9j
ayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRl
bnQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJB
TShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShK
SVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51
bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxM
SW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICAvLyBG
aXJzdCBjaGVjayBpZiBpdCBtYWtlcyBlaXRoZXIgY2FsbHMsIGluIHdoaWNoIGNhc2Ugd2Ugd2Fu
dCB0byBiZSBzdXBlciBjYXJlZnVsLCBvcgogICAgIC8vIGlmIGl0J3Mgbm90IHNldCBhdCBhbGws
IGluIHdoaWNoIGNhc2Ugd2UgcHVudC4KICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8g
PSBwcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0
dWJJbmZvLnNlZW4pCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24s
IFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxM
SW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAKICAgICBQb2x5
bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIGxpc3Q7CiAgICAgaW50IGxpc3RTaXplOwpAQCAt
NjAsMTggKzg2LDE5IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigK
ICAgICB9CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAg
IGlmICghbGlzdC0+bGlzdFtpXS5pc0RpcmVjdCkKLSAgICAgICAgICAgIHJldHVybiBHZXRCeUlk
U3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgICAg
ICByZXR1cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91
bmQsIHRydWUpOwogICAgIH0KICAgICAKICAgICAvLyBOZXh0IGNoZWNrIGlmIGl0IHRha2VzIHNs
b3cgY2FzZSwgaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIGtpbmQgb2YgY2FyZWZ1bC4KICAg
ICBpZiAocHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkp
Ci0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNl
dCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1Bh
dGgsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7CiAgICAgCiAgICAgLy8gRmluYWxs
eSBmaWd1cmUgb3V0IGlmIHdlIGNhbiBkZXJpdmUgYW4gYWNjZXNzIHN0cmF0ZWd5LgogICAgIEdl
dEJ5SWRTdGF0dXMgcmVzdWx0OworICAgIHJlc3VsdC5tX3dhc1NlZW5JbkpJVCA9IHRydWU7CiAg
ICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6
Ci0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNl
dCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVk
QmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3Nf
Z2V0X2J5X2lkX3NlbGY6IHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5m
by51LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CkBAIC0xMzAsNyArMTU3
LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIAogICAg
IHJldHVybiByZXN1bHQ7CiAjZWxzZSAvLyBFTkFCTEUoSklUKQotICAgIHJldHVybiBHZXRCeUlk
U3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgcmV0
dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5k
LCBmYWxzZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMDU2NDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSwxMCArNDksMTEgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAg
Ci0gICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1
Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQpCisgICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwg
Y29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQsIGJvb2wgd2Fz
U2VlbkluSklUKQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1
cmVTZXQoc3RydWN0dXJlU2V0KQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAg
LCBtX3dhc1NlZW5JbkpJVCh3YXNTZWVuSW5KSVQpCiAgICAgewogICAgICAgICBBU1NFUlQoKHN0
YXRlID09IFNpbXBsZURpcmVjdCkgPT0gKG9mZnNldCAhPSBub3RGb3VuZCkpOwogICAgIH0KQEAg
LTcwLDEwICs3MSwxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1
cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsgfQogICAgIHNpemVfdCBvZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAorICAgIGJvb2wgd2FzU2Vlbklu
SklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KKyAgICAKIHByaXZhdGU6Cisg
ICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0
ZTsKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CiAgICAgc2l6ZV90IG1fb2Zmc2V0
OworICAgIGJvb2wgbV93YXNTZWVuSW5KSVQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZp
c2lvbiAxMDU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBKU0NlbGw7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogICAgIGNsYXNzIFN0cnVjdHVy
ZUNoYWluOworICAgIHN0cnVjdCBMTEludENhbGxMaW5rSW5mbzsKICAgICBzdHJ1Y3QgVmFsdWVQ
cm9maWxlOwogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE0Niw2ICsxNDcsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAjZW5kaWYKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlvbiB7CisgICAgICAgIEluc3Ry
dWN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgdS5qc0NlbGwuY2xlYXIoKTsKKyAgICAg
ICAgfQorICAgICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oT3Bjb2RlIG9wY29kZSkKICAgICAg
ICAgewogI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKQEAgLTE4Miw2ICsx
ODgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7
IH0KICAgICAgICAgCisgICAgICAgIEluc3RydWN0aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxs
TGlua0luZm8pIHsgdS5jYWxsTGlua0luZm8gPSBjYWxsTGlua0luZm87IH0KKyAgICAgICAgCiAg
ICAgICAgIEluc3RydWN0aW9uKFZhbHVlUHJvZmlsZSogcHJvZmlsZSkgeyB1LnByb2ZpbGUgPSBw
cm9maWxlOyB9CiAKICAgICAgICAgdW5pb24gewpAQCAtMTkxLDcgKzE5OSw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3Ry
dWN0dXJlQ2hhaW47CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxs
OwogICAgICAgICAgICAgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKKyAg
ICAgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm87CiAgICAgICAgICAgICBW
YWx1ZVByb2ZpbGUqIHByb2ZpbGU7CisgICAgICAgICAgICB2b2lkKiBwb2ludGVyOwogICAgICAg
ICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDYWxsTGlua0luZm9faAorI2RlZmluZSBMTElu
dENhbGxMaW5rSW5mb19oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOworCitzdHJ1Y3QgTExJ
bnRDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlu
a0luZm8+IHsKKyAgICBMTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgIH0KKyAgICAKKyAg
ICB+TExJbnRDYWxsTGlua0luZm8oKQorICAgIHsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisg
ICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0xpbmtlZCgpIHsg
cmV0dXJuIGNhbGxlZTsgfQorICAgIAorICAgIHZvaWQgdW5saW5rKCkKKyAgICB7CisgICAgICAg
IGNhbGxlZS5jbGVhcigpOworICAgICAgICBtYWNoaW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1i
bGVyQ29kZVB0cigpOworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92
ZSgpOworICAgIH0KKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOwor
ICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBsYXN0U2VlbkNhbGxlZTsKKyAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgbWFjaGluZUNvZGVUYXJnZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIExMSW50Q2FsbExpbmtJbmZvX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3Bw
CShyZXZpc2lvbiAxMDU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0
aG9kQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw5IEBAIE1l
dGhvZENhbGxMaW5rU3RhdHVzIE1ldGhvZENhbGxMaW5rU3RhdHUKICAgICBVTlVTRURfUEFSQU0o
cHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lmIEVO
QUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAvLyBOT1RFOiBUaGlzIGRv
ZXMgbm90IGhhdmUgYW4gTExJbnQgZmFsbC1iYWNrIGJlY2F1c2UgTExJbnQgZG9lcyBub3QgZG8g
YW55IG1ldGhvZAorICAgIC8vIGNhbGwgbGluayBjYWNoaW5nLgorICAgIAogICAgIE1ldGhvZENh
bGxMaW5rSW5mbyYgbWV0aG9kQ2FsbCA9IHByb2ZpbGVkQmxvY2stPmdldE1ldGhvZENhbGxMaW5r
SW5mbyhieXRlY29kZUluZGV4KTsKICAgICAKICAgICBpZiAoIW1ldGhvZENhbGwuc2VlbiB8fCAh
bWV0aG9kQ2FsbC5jYWNoZWRTdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMDU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgsIDQp
IFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uLCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX2RpcmVjdCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWwsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkpIFwK
ICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX2dlbmVyaWMsIDkpIFwKICAgICAgICAgbWFjcm8o
b3BfZGVsX2J5X2lkLCA0KSBcCkBAIC0yMDIsNiArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHR5cGVkZWYgZW51bSB7IEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfSURfRU5VTSkg
fSBPcGNvZGVJRDsKICAgICAjdW5kZWYgT1BDT0RFX0lEX0VOVU0KIAorICAgIGNvbnN0IGludCBt
YXhPcGNvZGVMZW5ndGggPSA5OwogICAgIGNvbnN0IGludCBudW1PcGNvZGVJRHMgPSBvcF9lbmQg
KyAxOwogCiAgICAgI2RlZmluZSBPUENPREVfSURfTEVOR1RIUyhpZCwgbGVuZ3RoKSBjb25zdCBp
bnQgaWQjI19sZW5ndGggPSBsZW5ndGg7CkBAIC0yMTgsNyArMjIxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9JRChWRVJJRllfT1BDT0RFX0lEKTsKICAgICAj
dW5kZWYgVkVSSUZZX09QQ09ERV9JRAogCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQ
UkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShM
TElOVCkKICNpZiBDT01QSUxFUihSVkNUKSB8fCBDT01QSUxFUihJTlRFTCkKICAgICB0eXBlZGVm
IHZvaWQqIE9wY29kZTsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDU2NDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDI3ICsyNyw2NiBAQAogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50
KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRp
ZmllciYgaWRlbnQpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29k
ZUluZGV4OworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0
cnVjdHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIFB1dEJ5
SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgIAorICAgIGlm
IChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWQpIHsKKyAgICAg
ICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxE
YXRhKCksIGlkZW50KTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICAgICAg
ICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5k
KTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVJlcGxhY2Us
IHN0cnVjdHVyZSwgMCwgMCwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKGluc3Ry
dWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dAorICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgIAorICAgIFN0cnVjdHVyZSogbmV3U3RydWN0
dXJlID0gaW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgU3RydWN0dXJlQ2hh
aW4qIGNoYWluID0gaW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKTsKKyAgICBB
U1NFUlQobmV3U3RydWN0dXJlKTsKKyAgICBBU1NFUlQoY2hhaW4pOworICAgIAorICAgIHNpemVf
dCBvZmZzZXQgPSBuZXdTdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgp
LCBpZGVudCk7CisgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFB1
dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgIAorICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVRyYW5zaXRpb24sIHN0cnVjdHVyZSwgbmV3U3Ry
dWN0dXJlLCBjaGFpbiwgb2Zmc2V0KTsKKyNlbHNlCisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMo
Tm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworI2VuZGlmCit9CisKIFB1dEJ5SWRT
dGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ss
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQogewogICAgIFVOVVNF
RF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7
CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFM
VUVfUFJPRklMRVIpCisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1iZXJPZlN0cnVjdHVyZVN0
dWJJbmZvcygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2Nr
LCBieXRlY29kZUluZGV4LCBpZGVudCk7CisgICAgCiAgICAgaWYgKHByb2ZpbGVkQmxvY2stPmxp
a2VseVRvVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQogICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBub3RGb3VuZCk7CiAgICAgCiAgICAgU3Ry
dWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm8oYnl0
ZWNvZGVJbmRleCk7CiAgICAgaWYgKCFzdHViSW5mby5zZWVuKQotICAgICAgICByZXR1cm4gUHV0
QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJl
dHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50
KTsKICAgICAKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIGFj
Y2Vzc191bnNldDoKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwg
MCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9m
aWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgICAgIAogICAgIGNhc2UgYWNj
ZXNzX3B1dF9ieV9pZF9yZXBsYWNlOiB7CiAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHViSW5m
by51LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmdldCgKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAkocmV2aXNpb24g
MTA1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
aAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IG9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCiBwcml2YXRlOgorICAgIHN0
YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYpOworICAgIAogICAgIFN0YXRlIG1fc3RhdGU7CiAg
ICAgU3RydWN0dXJlKiBtX29sZFN0cnVjdHVyZTsKICAgICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0
dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDEwNTY0NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRpb25PcHRp
bWl6ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVDaGFp
bi5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCkBA
IC0xMTYsMjYgKzExNywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBleHBlY3RlZCBieSB0aGUg
Y2FsbGVlLgogKi8KIAotI2lmbmRlZiBOREVCVUcKIHN0YXRpYyBib29sIHNfZHVtcHNHZW5lcmF0
ZWRDb2RlID0gZmFsc2U7Ci0jZW5kaWYKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6c2V0RHVt
cHNHZW5lcmF0ZWRDb2RlKGJvb2wgZHVtcHNHZW5lcmF0ZWRDb2RlKQogewotI2lmbmRlZiBOREVC
VUcKICAgICBzX2R1bXBzR2VuZXJhdGVkQ29kZSA9IGR1bXBzR2VuZXJhdGVkQ29kZTsKLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKGR1bXBzR2VuZXJhdGVkQ29kZSk7Ci0jZW5kaWYKIH0KIAogYm9v
bCBCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkKIHsKLSNpZm5kZWYgTkRF
QlVHCiAgICAgcmV0dXJuIHNfZHVtcHNHZW5lcmF0ZWRDb2RlOwotI2Vsc2UKLSAgICByZXR1cm4g
ZmFsc2U7Ci0jZW5kaWYKIH0KIAogSlNPYmplY3QqIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
ZSgpCkBAIC0xNDgsMTAgKzEzOSw4IEBAIEpTT2JqZWN0KiBCeXRlY29kZUdlbmVyYXRvcjo6Z2Vu
ZXJhdGUoKQogCiAgICAgbV9jb2RlQmxvY2stPnNldEluc3RydWN0aW9uQ291bnQobV9jb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKHNf
ZHVtcHNHZW5lcmF0ZWRDb2RlKQogICAgICAgICBtX2NvZGVCbG9jay0+ZHVtcChtX3Njb3BlQ2hh
aW4tPmdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKTsKLSNlbmRpZgogCiAgICAgaWYgKChtX2Nv
ZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiAhbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hh
aW4oKSAmJiAhbV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSkgfHwgbV9jb2RlVHlwZSA9PSBF
dmFsQ29kZSkKICAgICAgICAgc3ltYm9sVGFibGUoKS5jbGVhcigpOwpAQCAtMTI3Niw5ICsxMjY1
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJM
RShKSVQpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVj
dGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAg
ICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygp
LnNpemUoKSk7Ci0jZW5kaWYKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFBy
b2ZpbGVkT3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5
bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChkc3QtPmluZGV4KCkpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3Rh
bnQocHJvcGVydHkpKTsKQEAgLTE0NDAsOSArMTQyNyw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgIG1fY29kZUJsb2NrLT5h
ZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0jaWYg
RU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5z
dHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIFZhbHVlUHJvZmls
ZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShyZXF1aXJlc0R5bmFtaWNDaGVja3MgPyBv
cF9yZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChwcm9wRHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE0OTAsOSArMTQ3NSw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAg
IG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkp
OwogI2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRH
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgog
ICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShyZXF1aXJlc0R5
bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9i
YWwpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wRHN0LT5pbmRleCgpKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE1MTEsOSAr
MTQ5NCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNZXRob2RDaGVjaygKIAogUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwg
UmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7Ci0jaWYgRU5B
QkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKIAogICAgIFZhbHVlUHJvZmls
ZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9nZXRfYnlfaWQpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwpAQCAtMTUzOSw5ICsxNTIwLDcgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBcgogCiBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBS
RVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0
cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9p
ZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTU1Nyw5
ICsxNTM2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJ
RCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQog
ewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgCiAg
ICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChi
YXNlLT5pbmRleCgpKTsKQEAgLTE4NDgsNyArMTgyNSwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdENhbGwoCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmlu
ZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMu
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVy
T2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2Nv
ZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0luZm8oKSk7CisjZWxzZQogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAg
ICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHBy
b2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKQEAgLTE5NTIs
NyArMTkzMywxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoKSk7IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVu
dHMucmVnaXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5U
KQorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlu
a0luZm8oKSk7CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1
bHQoKSkgewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNv
ZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKQEAgLTIyMTMsNyArMjE5OCwxMSBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhdGNoCiB7CiAgICAgbV91c2VzRXhjZXB0aW9ucyA9
IHRydWU7CiAjaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSGFuZGxlcklu
Zm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwgQ29k
ZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfY2F0Y2gpKSB9Owor
I2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5i
aW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBt
X2Jhc2VTY29wZURlcHRoLCBDb2RlTG9jYXRpb25MYWJlbCgpIH07CisjZW5kaWYKICNlbHNlCiAg
ICAgSGFuZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAw
KSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2Nv
cGVEZXB0aCB9OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTA1NjQ1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYw
NCw5ICs2MDQsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgVU5VU0VEX1BBUkFNKG5vZGVJ
bmRleCk7CiAgICAgICAgIAotICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlSW5kZXgpOwotICAgICAgICBBU1NFUlQocHJvZmlsZSk7Ci0gICAgICAgIFByZWRp
Y3RlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigp
OworICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZUluZGV4KTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCiAgICAgICAgIHBy
aW50ZigiRHluYW1pYyBbQCV1LCBiYyMldV0gcHJlZGljdGlvbjogJXNcbiIsIG5vZGVJbmRleCwg
Ynl0ZWNvZGVJbmRleCwgcHJlZGljdGlvblRvU3RyaW5nKHByZWRpY3Rpb24pKTsKICNlbmRpZgpA
QCAtMTAzOSw2ICsxMDM3LDE2IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5n
KGJvb2wKICAgICBpZiAoIW1pZ2h0SW5saW5lRnVuY3Rpb25Gb3IocHJvZmlsZWRCbG9jaywga2lu
ZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKKyAgICAvLyBJZiB0aGUgY29kZSBibG9j
ayBpcyBzdGlsbCBpbnRlcnByZXRlZCwgdGhlbiAoYSkgaXQncyBub3QgaG90IGFuZCAoYikgaXQg
ZG9lc24ndAorICAgIC8vIGhhdmUgcHJvZmlsaW5nLiBTbywgd2Ugc2hvdWxkIGV4aXQuCisgICAg
aWYgKHByb2ZpbGVkQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKSB7CisgICAgICAgIGFkZFRvR3JhcGgoRm9yY2VPU1JFeGl0KTsKKyAgICAgICAgYWRkVG9H
cmFwaChQaGFudG9tLCBjYWxsVGFyZ2V0Tm9kZUluZGV4KTsKKyAgICAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsgKytpKQorICAgICAgICAgICAgYWRk
VG9HcmFwaChQaGFudG9tLCBnZXQocmVnaXN0ZXJPZmZzZXQgKyBhcmd1bWVudFRvT3BlcmFuZChp
KSkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCiAgICAgLy8gSWYgd2UgZ2V0
IGhlcmUgdGhlbiBpdCBsb29rcyBsaWtlIHdlIHNob3VsZCBkZWZpbml0ZWx5IGlubGluZSB0aGlz
IGNvZGUuIFByb2NlZWQKICAgICAvLyB3aXRoIHBhcnNpbmcgdGhlIGNvZGUgdG8gZ2V0IGJ5dGVj
b2RlLCBzbyB0aGF0IHdlIGNhbiB0aGVuIHBhcnNlIHRoZSBieXRlY29kZS4KICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IG1fY29kZUJsb2NrQ2FjaGUuZ2V0KENvZGVCbG9ja0tleShleGVjdXRh
YmxlLCBraW5kKSwgZXhwZWN0ZWRGdW5jdGlvbi0+c2NvcGUoKSk7CkBAIC0xNzQxLDcgKzE3NDks
NyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAg
ICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2N1cnJlbnRJbmRleCk7
CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChtZXRob2RDYWxsU3RhdHVzLmlzU2V0KCkK
LSAgICAgICAgICAgICAgICAmJiAhZ2V0QnlJZFN0YXR1cy5pc1NldCgpCisgICAgICAgICAgICAg
ICAgJiYgIWdldEJ5SWRTdGF0dXMud2FzU2VlbkluSklUKCkKICAgICAgICAgICAgICAgICAmJiAh
bV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRl
eCwgQmFkQ2FjaGUpKSB7CiAgICAgICAgICAgICAgICAgLy8gSXQncyBtb25vbW9ycGhpYyBhcyBm
YXIgYXMgd2UgY2FuIHRlbGwsIHNpbmNlIHRoZSBtZXRob2RfY2hlY2sgd2FzIGxpbmtlZAogICAg
ICAgICAgICAgICAgIC8vIGJ1dCB0aGUgc2xvdyBwYXRoIChpLmUuIHRoZSBub3JtYWwgZ2V0X2J5
X2lkKSBuZXZlciBmaXJlZC4KQEAgLTE4MTAsNyArMTgxOCw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJz
ZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0
X2J5X2lkKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDogeworICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7
CiAgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNd
LnUub3BlcmFuZCk7CiAgICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5z
dHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJO
dW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1
Y3Rpb25bMl0udS5vcGVyYW5kXTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTA1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw4
IEBAIGlubGluZSBib29sIGNhbkNvbXBpbGVPcGNvZGUoT3Bjb2RlSUQgb3AKICAgICBjYXNlIG9w
X3B1dF9zY29wZWRfdmFyOgogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0
X2J5X2lkOgorICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgIGNhc2Ugb3BfZ2V0X2dsb2Jh
bF92YXI6CiAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX2ptcDoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5j
cHAJKHJldmlzaW9uIDEwNTY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMTMgQEAgdm9pZCBj
b21waWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdWludDMyX3QgZXhpdEluZGV4ID0g
Z2xvYmFsRGF0YS0+b3NyRXhpdEluZGV4OwogICAgIE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2st
Pm9zckV4aXQoZXhpdEluZGV4KTsKICAgICAKKyAgICAvLyBNYWtlIHN1cmUgYWxsIGNvZGUgaXMg
SklUIGNvbXBpbGVkLgorICAgIGZvciAoQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gZXhpdC5tX2Nv
ZGVPcmlnaW47IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBjb2RlT3JpZ2luID0gY29kZU9y
aWdpbi5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlcikgeworICAgICAgICBzdGF0aWNfY2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5n
ZXQoKSkKKyAgICAgICAgICAgIC0+YmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUtPmlzQ2FsbCA/IENvZGVGb3JDYWxsIDogQ29kZUZvckNvbnN0cnVjdCkKKyAg
ICAgICAgICAgIC0+aml0Q29tcGlsZSgqZ2xvYmFsRGF0YSk7CisgICAgfQorICAgIAogICAgIFNw
ZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5ID0gMDsKICAgICBpZiAoZXhpdC5tX3JlY292ZXJ5
SW5kZXgpCiAgICAgICAgIHJlY292ZXJ5ID0gJmNvZGVCbG9jay0+c3BlY3VsYXRpb25SZWNvdmVy
eShleGl0Lm1fcmVjb3ZlcnlJbmRleCAtIDEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxMDU2NDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdC5o
IgogI2luY2x1ZGUgIkRGR1JlcGF0Y2guaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVl
LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW5saW5lQVNNLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTU2NCw0NSArNTY1LDYgQEAgc2l6ZV90IERGR19P
UEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cgogICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RF
cXVhbChleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AyKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSgpOwotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqKTsKLQotI2lmIENQVShYODZfNjQp
Ci1hc20gKAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkg
IlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAg
ICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCi0gICAgIm1vdiAlcjEzLCAlcmRpXG4iCi0gICAgImpt
cCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4
ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQVShYODYpCi1hc20gKAotIi5nbG9ibCAiIFNZTUJP
TF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4i
Ci0gICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCi0gICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVM
T0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNl
bGlmIENQVShBUk1fVEhVTUIyKQotYXNtICgKLSIudGV4dCIgIlxuIgotIi5hbGlnbiAyIiAiXG4i
Ci0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1I
SURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi0iLnRodW1iIiAiXG4iCi0i
LnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJc
biIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAi
bGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCi0gICAgImNweSByMCwgcjUiICJcbiIKLSAgICAiYiAi
IFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNT
dGF0ZSkgIlxuIgotKTsKLSNlbmRpZgotCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVy
blZhbHVlKTsKLX0KLQogc3RhdGljIHZvaWQqIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhl
Y0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgJKHJldmlzaW9u
IDEwNTY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgSGVhcDsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1hcmtlZEJsb2Nr
OwogCiBjbGFzcyBBbGxvY2F0aW9uU3BhY2UgewpAQCAtNjcsNiArNjgsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzaHJpbmsoKTsKICAgICAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICBlbnVtIEFsbG9jYXRpb25FZmZvcnQgeyBBbGxv
Y2F0aW9uQ2FuRmFpbCwgQWxsb2NhdGlvbk11c3RTdWNjZWVkIH07CiAKICAgICB2b2lkKiBhbGxv
Y2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAkocmV2aXNpb24gMTA1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzNyw3ICs4MzcsNyBAQCB2b2lkIEhlYXA6
OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnCiAgICAgICAgIHNldEhpZ2hXYXRlck1hcmso
bWF4KHByb3BvcnRpb25hbEJ5dGVzLCBtX21pbkJ5dGVzUGVyQ3ljbGUpKTsKICAgICB9CiAgICAg
SkFWQVNDUklQVENPUkVfR0NfRU5EKCk7Ci0KKyAgICAKICAgICAoKm1fYWN0aXZpdHlDYWxsYmFj
aykoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTA1
NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw2ICs1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0
YTsKICAgICBjbGFzcyBKU1ZhbHVlOwogICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQXJndW1lbnRC
dWZmZXI7CiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlOwogICAgIGNsYXNzIFVTdHJpbmc7CkBAIC0x
MzYsMTEgKzEzNywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2
YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNs
YXNzIEFsbG9jYXRpb25TcGFjZTsKKyAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgZnJpZW5k
IGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQnVtcFNwYWNlOwogICAg
ICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBDb2Rl
QmxvY2s7CiAKICAgICAgICAgc2l6ZV90IHdhdGVyTWFyaygpOwogICAgICAgICBzaXplX3QgaGln
aFdhdGVyTWFyaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2su
Y3BwCShyZXZpc2lvbiAxMDU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
U3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNyArMzA0LDcgQEAgQUxXQVlTX0lOTElO
RSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKAogI2VuZGlmCiAKICAgICBBU1NFUlQoSGVhcDo6
aXNNYXJrZWQoY2VsbCkpOwotCisgICAgCiAgICAgaWYgKGlzSlNTdHJpbmcoY2VsbCkpIHsKICAg
ICAgICAgSlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4oY29uc3RfY2FzdDxKU0NlbGwqPihjZWxsKSwg
dmlzaXRvcik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMTA1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIGNsYXNzIEhlYXA7CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBMaXZlT2Jq
ZWN0SXRlcmF0b3I7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBXZWFrR0NI
YW5kbGU7CiBjbGFzcyBTbG90VmlzaXRvcjsKIApAQCAtNzcsNiArNzgsOCBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlw
ZSBmb3JFYWNoQmxvY2soKTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgIAogICAgIC8vIFsgMzIuLi4gMjU2IF0KICAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IHByZWNpc2VTdGVwID0gTWFya2VkQmxvY2s6OmF0b21TaXplOwogICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgcHJlY2lzZUN1dG9mZiA9IDI1NjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDEwNTY0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE5LDYgKzExOSw5IEBAIG5hbWVzcGFjZSBKU0MgIHsKICNpZiBFTkFCTEUoSU5U
RVJQUkVURVIpCiAgICAgICAgIEluc3RydWN0aW9uKiByZXR1cm5WUEMoKSBjb25zdCB7IHJldHVy
biB0aGlzW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdLnZQQygpOyB9CiAjZW5kaWYKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgICAgIEluc3RydWN0aW9uKiBjdXJyZW50VlBDKCkgY29uc3QgeyByZXR1
cm4gYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4odGhpc1tSZWdpc3RlckZpbGU6OkFyZ3VtZW50
Q291bnRdLnRhZygpKTsgfQorI2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXRDYWxsZXJGcmFtZShD
YWxsRnJhbWUqIGNhbGxlckZyYW1lKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVn
aXN0ZXJGaWxlOjpDYWxsZXJGcmFtZV0gPSBjYWxsZXJGcmFtZTsgfQogICAgICAgICB2b2lkIHNl
dFNjb3BlQ2hhaW4oU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pIHsgc3RhdGljX2Nhc3Q8UmVn
aXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW5dID0gc2NvcGVDaGFpbjsgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCShyZXZpc2lvbiAxMDU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBACiAj
aW5jbHVkZSAiSklULmgiCiAjZW5kaWYKIAotI2RlZmluZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9H
T1RPX1dPUktBUk9VTkQgKEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSAmJiAhZGVm
aW5lZChfX2xsdm1fXykpCisjZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FS
T1VORCAoKEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQp
KSAmJiAhZGVmaW5lZChfX2xsdm1fXykpCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTU0
NywxNyArNTQ3LDQxIEBAIEludGVycHJldGVyOjpJbnRlcnByZXRlcigpCiB7CiB9CiAKLXZvaWQg
SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQpCitJbnRlcnByZXRlcjo6fklu
dGVycHJldGVyKCkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNp
ZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fZW5hYmxlZCkKKyAgICAgICAgZGVsZXRlW10gbV9v
cGNvZGVUYWJsZTsKKyNlbmRpZgorfQorCit2b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKExM
SW50OjpEYXRhKiBsbGludERhdGEsIGJvb2wgY2FuVXNlSklUKQoreworI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorICAgIC8vIEhhdmluZyBMTEludCBlbmFibGVkLCBidXQg
bm90IGJlaW5nIGFibGUgdG8gdXNlIHRoZSBKSVQsIGFuZCBub3QgaGF2aW5nCisgICAgLy8gYSBj
b21wdXRlZCBnb3RvIGludGVycHJldGVyLCBpcyBub3Qgc3VwcG9ydGVkLiBOb3QgYmVjYXVzZSB3
ZSBjYW5ub3QKKyAgICAvLyBzdXBwb3J0IGl0LCBidXQgYmVjYXVzZSBJIGRlY2lkZWQgdG8gZHJh
dyB0aGUgbGluZSBhdCB0aGUgbnVtYmVyIG9mCisgICAgLy8gcGVybXV0YXRpb25zIG9mIGV4ZWN1
dGlvbiBlbmdpbmVzIHRoYXQgSSB3YW50ZWQgdGhpcyBjb2RlIHRvIGdyb2suCisgICAgQVNTRVJU
KGNhblVzZUpJVCk7CisjZW5kaWYKICAgICBpZiAoY2FuVXNlSklUKSB7CisjaWYgRU5BQkxFKExM
SU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbGxpbnREYXRhLT5vcGNvZGVNYXAoKTsKKyAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKKyAgICAgICAgICAg
IG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNvZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8T3Bjb2Rl
SUQ+KGkpKTsKKyNlbHNlCiAgICAgICAgIC8vIElmIHRoZSBKSVQgaXMgcHJlc2VudCwgZG9uJ3Qg
dXNlIGp1bXAgZGVzdGluYXRpb25zIGZvciBvcGNvZGVzLgogICAgICAgICAKICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkgewogICAgICAgICAgICAgT3Bjb2Rl
IG9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihpKSk7
CiAgICAgICAgICAgICBtX29wY29kZVRhYmxlW2ldID0gb3Bjb2RlOwogICAgICAgICB9CisjZW5k
aWYKICAgICB9IGVsc2UgeworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJs
ZSA9IG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXTsKKyNlbmRpZgogICAgICAgICBwcml2YXRlRXhl
Y3V0ZShJbml0aWFsaXplQW5kUmV0dXJuLCAwLCAwKTsKICAgICAgICAgCiAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpCkBAIC02NjcsOSArNjkxLDExIEBAIHZv
aWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW0KIAogYm9vbCBJbnRlcnByZXRl
cjo6aXNPcGNvZGUoT3Bjb2RlIG9wY29kZSkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19J
TlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5B
QkxFKExMSU5UKQorI2lmICFFTkFCTEUoTExJTlQpCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAg
ICAgIHJldHVybiBvcGNvZGUgPj0gMCAmJiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSkgPD0gb3BfZW5kOworI2VuZGlmCiAgICAgcmV0dXJuIG9w
Y29kZSAhPSBIYXNoVHJhaXRzPE9wY29kZT46OmVtcHR5VmFsdWUoKQogICAgICAgICAmJiAhSGFz
aFRyYWl0czxPcGNvZGU+Ojppc0RlbGV0ZWRWYWx1ZShvcGNvZGUpCiAgICAgICAgICYmIG1fb3Bj
b2RlSURUYWJsZS5jb250YWlucyhvcGNvZGUpOwpAQCAtNzI2LDExICs3NTIsMTEgQEAgTkVWRVJf
SU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbAogICAgIC8vIGhhdmUgdG8gc3VidHJh
Y3QgMS4KICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgaWYgKGNh
bGxlckZyYW1lLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCkpCi0gICAgICAgIGJ5dGVjb2RlT2Zm
c2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOwor
ICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVy
RnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAgICAgZWxzZQogICAgICAgICBieXRlY29k
ZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMo
KSkgLSAxOwogI2VsaWYgRU5BQkxFKEpJVCkKLSAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9j
ay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29kZU9m
ZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+
cmV0dXJuUEMoKSk7CiAjZWxzZQogICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRl
Y29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZW5kaWYKQEAgLTUxNzAs
MTAgKzUxOTYsMTAgQEAgdm9pZCBJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKENhbAog
ICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQo
Y2FsbEZyYW1lLT5yZXR1cm5WUEMoKSk7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBlbHNlCi0gICAg
ICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxs
RnJhbWUtPnJldHVyblBDKCkpOworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVC
bG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7
CiAjZW5kaWYKICNlbHNlCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5
dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQg
PSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUt
PnJldHVyblBDKCkpOwogI2VuZGlmCiAgICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVCbG9jay0+
bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAgc291
cmNlSUQgPSBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgJKHJldmlzaW9uIDEwNTY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAi
UmVnaXN0ZXJGaWxlLmgiCiAKQEAgLTQ1LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAg
IGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNz
IFNjb3BlQ2hhaW5Ob2RlOwpAQCAtOTAsMTkgKzkyLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
LSAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZENh
bGw7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgogICAgICAgICBJbnRlcnByZXRlcigpOwor
ICAgICAgICB+SW50ZXJwcmV0ZXIoKTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgaW5pdGlhbGl6
ZShib29sIGNhblVzZUpJVCk7CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZShMTEludDo6RGF0YSos
IGJvb2wgY2FuVXNlSklUKTsKIAogICAgICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSgp
IHsgcmV0dXJuIG1fcmVnaXN0ZXJGaWxlOyB9CiAgICAgICAgIAogICAgICAgICBPcGNvZGUgZ2V0
T3Bjb2RlKE9wY29kZUlEIGlkKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0
aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAg
ICAgIHJldHVybiBtX29wY29kZVRhYmxlW2lkXTsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4g
aWQ7CkBAIC0xMTIsNyArMTE2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPcGNvZGVJ
RCBnZXRPcGNvZGVJRChPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NF
UlQobV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIp
CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkp
OworICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKKyNlbGlm
IEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgQVNTRVJUKGlz
T3Bjb2RlKG9wY29kZSkpOwogICAgICAgICAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihvcGNvZGUpKTsKQEAgLTEyMiw2ICsxMjksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
ICAgICByZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IGJvb2wgZW5hYmxlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2VuYWJsZWQ7
CisgICAgICAgIH0KIAogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKQEAgLTE4OSw3
ICsyMDEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlIG1fcmVn
aXN0ZXJGaWxlOwogICAgICAgICAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRF
UikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIE9wY29kZSogbV9vcGNvZGVUYWJsZTsgLy8g
TWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZworICAgICAgICBIYXNoTWFwPE9w
Y29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2Rl
SUQgZm9yIGRlY29tcGlsaW5nCisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRF
UikKICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2RlSURzXTsgLy8gTWFwcyBP
cGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBIYXNoTWFwPE9wY29kZSwg
T3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9y
IGRlY29tcGlsaW5nCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9SZWdpc3RlckZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHJldmlzaW9uIDEwNTY0NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnNlcnZhdGl2
ZVJvb3RzOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogCiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlIHsKICAgICAgICAgV1RGX01BS0Vf
Tk9OQ09QWUFCTEUoUmVnaXN0ZXJGaWxlKTsKQEAgLTgxLDYgKzgyLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGdyb3dTbG93Q2FzZShS
ZWdpc3RlciopOwogICAgICAgICB2b2lkIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwogICAgICAg
ICB2b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSG9zdENh
bGxSZXR1cm5WYWx1ZS5oIgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSW5s
aW5lQVNNLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1ZhbHVlSW5saW5l
TWV0aG9kcy5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04g
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NU
X0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNT
dGF0ZShFeGVjU3RhdGUqKTsKKworI2lmIENQVShYODZfNjQpCithc20gKAorIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVyMTMpLCAlcjEz
XG4iCisgICAgIm1vdiAlcjEzLCAlcmRpXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVM
T0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNl
bGlmIENQVShYODYpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAi
OiIgIlxuIgorICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4iCisgICAgIm1vdiAlZWRpLCA0KCVl
c3ApXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKQor
YXNtICgKKyIudGV4dCIgIlxuIgorIi5hbGlnbiAyIiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NU
UklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiXG4iCisiLnRodW1iIiAiXG4iCisiLnRodW1iX2Z1bmMgIiBUSFVNQl9G
VU5DX1BBUkFNKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAi
XG4iCisgICAgImNweSByMCwgcjUiICJcbiIKKyAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NB
VElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbmRp
ZgorCitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BU
SU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0Q2Fs
bFJldHVyblZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisjZGVmaW5lIEhv
c3RDYWxsUmV0dXJuVmFsdWVfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIk1h
Y3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYg
Q0FMTElOR19DT05WRU5USU9OX0lTX1NURENBTEwKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9W
QUxVRV9PUFRJT04gQ0RFQ0wKKyNlbHNlCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVf
T1BUSU9OCisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CitleHRlcm4gIkMiIEVuY29kZWRKU1Zh
bHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUo
KTsKK30KKworI2VuZGlmIC8vIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMDU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsOCBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wcm9m
aWxlX3dpbGxfY2FsbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfbmV3X3Njb3BlKQogICAg
ICAgICBERUZJTkVfT1Aob3BfcHVzaF9zY29wZSkKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsOgogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVf
T1Aob3BfcHV0X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKQEAg
LTQ4Nyw2ICs0ODksOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcG9zdF9pbmMpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9wcmVfZGVjKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2lu
YykKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0
X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsKQpA
QCAtNTI2LDYgKzUzMCwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQog
CiBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5
Q2hlY2spCiB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIkNvbXBp
bGluZyBKSVQgY29kZSFcbiIpOworI2VuZGlmCisgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJ
TEVSKQogICAgIG1fY2FuQmVPcHRpbWl6ZWQgPSBtX2NvZGVCbG9jay0+Y2FuQ29tcGlsZVdpdGhE
RkcoKTsKICNlbmRpZgpAQCAtNjkwLDggKzY5OCwxMiBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNv
bXBpbGUoQ29kZVB0ciogZnVuCiAgICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gbV9j
b2RlQmxvY2stPnN0cnVjdHVyZVN0dWJJbmZvKG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mb1tp
XS5wcm9wZXJ0eUFjY2Vzc0luZGV4KS5jYWxsUmV0dXJuTG9jYXRpb247CiAgICAgfQogCi0jaWYg
RU5BQkxFKERGR19KSVQpCi0gICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQpIHsKKyNpZiBFTkFCTEUo
REZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2NhbkJlT3B0aW1pemVkCisjaWYg
RU5BQkxFKExMSU5UKQorICAgICAgICB8fCB0cnVlCisjZW5kaWYKKyAgICAgICAgKSB7CiAgICAg
ICAgIENvbXBhY3RKSVRDb2RlTWFwOjpFbmNvZGVyIGppdENvZGVNYXBFbmNvZGVyOwogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBtX2xh
YmVscy5zaXplKCk7ICsrYnl0ZWNvZGVPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChtX2xhYmVs
c1tieXRlY29kZU9mZnNldF0uaXNTZXQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q29kZS5oCShyZXZpc2lvbiAxMDU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgSklUQ29kZSgpIHsgfQogI2VuZGlmCiAgICAgcHVibGljOgotICAgICAgICBlbnVt
IEpJVFR5cGUgeyBIb3N0Q2FsbFRodW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CisgICAgICAg
IGVudW0gSklUVHlwZSB7IE5vbmUsIEhvc3RDYWxsVGh1bmssIEludGVycHJldGVyVGh1bmssIEJh
c2VsaW5lSklULCBERkdKSVQgfTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKSVRUeXBlIGJv
dHRvbVRpZXJKSVQoKQogICAgICAgICB7CkBAIC02Niw4ICs2NiwxOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiBERkdKSVQ7CiAgICAgICAgIH0KICAgICAgICAgCisgICAg
ICAgIHN0YXRpYyBib29sIGlzT3B0aW1pemluZ0pJVChKSVRUeXBlIGppdFR5cGUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IERGR0pJVDsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgc3RhdGljIGJvb2wgaXNCYXNlbGluZUNvZGUoSklUVHlwZSBqaXRUeXBl
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBJbnRlcnByZXRlclRo
dW5rIHx8IGppdFR5cGUgPT0gQmFzZWxpbmVKSVQ7CisgICAgICAgIH0KKyAgICAgICAgCiAjaWYg
RU5BQkxFKEpJVCkKICAgICAgICAgSklUQ29kZSgpCisgICAgICAgICAgICA6IG1faml0VHlwZShO
b25lKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNzUsNiArODYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIDogbV9yZWYocmVmKQogICAgICAgICAgICAgLCBtX2ppdFR5cGUo
aml0VHlwZSkKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGppdFR5cGUgIT0gTm9uZSk7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3IgISgpIGNvbnN0Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHJldmlzaW9uIDEwNTY0NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDE1ICszMywyMSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5j
bHVkZSAiREZHRHJpdmVyLmgiCiAjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiTExJbnRFbnRy
eXBvaW50cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJs
b2NrVHlwZT4KIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUm
IGppdENvZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9
PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAg
ICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29s
IGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklU
KQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZShnbG9iYWxEYXRhLCBjb2Rl
QmxvY2suZ2V0KCksIGppdENvZGUpOwpAQCAtNTUsMTAgKzYxLDcgQEAgaW5saW5lIGJvb2wgaml0
Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbAogICAgICAgICB9CiAgICAgICAgIGppdENvZGUgPSBK
SVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSk7CiAgICAgfQotI2lmICFF
TkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBz
R2VuZXJhdGVkQ29kZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2Fy
ZGluZ09wcG9ydHVuaXR5KCk7Ci0jZW5kaWYKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2Rl
RGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENv
ZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTY2LDkgKzY5LDE0IEBAIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2wK
IAogaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklU
Q29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hl
Y2ssIFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0
VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29t
aW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYg
KGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6
dHJ5Q29tcGlsZUZ1bmN0aW9uKGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSwg
aml0Q29kZVdpdGhBcml0eUNoZWNrKTsKQEAgLTgzLDExICs5MSw3IEBAIGlubGluZSBib29sIGpp
dENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmkKICAgICAgICAgfQogICAgICAgICBqaXRDb2RlID0g
SklUOjpjb21waWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksICZqaXRDb2RlV2l0aEFy
aXR5Q2hlY2spOwogICAgIH0KLSNpZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLSAgICBpZiAo
IUJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKLSAgICAgICAgY29kZUJs
b2NrLT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwotI2VuZGlmCi0gICAg
CisgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwog
ICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2sp
OwogICAgIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAxMDU2NDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2
NCw3IEBAIEV4Y2VwdGlvbkhhbmRsZXIgZ2VuZXJpY1Rocm93KEpTR2xvYmFsRGEKIAogRXhjZXB0
aW9uSGFuZGxlciBqaXRUaHJvdyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4ZWNTdGF0ZSog
Y2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBSZXR1cm5BZGRyZXNzUHRyIGZhdWx0
TG9jYXRpb24pCiB7Ci0gICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJh
bWUsIGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNl
dChmYXVsdExvY2F0aW9uKSk7CisgICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBj
YWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29k
ZU9mZnNldChjYWxsRnJhbWUsIGZhdWx0TG9jYXRpb24pKTsKIH0KIAogfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDEwNTY0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTE1
LDcgKzE5MTUsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAg
ICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNrRnJhbWUuYXJnc1swXS5pbnQzMigpOwog
CiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmludGYoIkVudGVyZWQgb3B0aW1p
emVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRy
eUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9j
ay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291
bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBwcmlu
dGYoIiVwOiBFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVyID0g
JWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291
bnRlciA9ICV1XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwg
Y29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGlt
aXphdGlvbkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAgaWYgKGNvZGVCbG9jay0+aGFz
T3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewpAQCAtMjE3MCw0NSArMjE3MCwxMyBAQCBERUZJTkVf
U1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotaW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
UmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
LXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVl
KCkpOwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICBDb2RlQmxv
Y2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRl
Y29kZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAgICAvLyBUaGlzIGVuc3Vy
ZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3Vt
ZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3Jvdyhj
YWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBu
ZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwg
ZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGgg
dW5kZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVnaXN0ZXIqIHNyYyA9IGNh
bGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGNhbGxGcmFtZS0+cmVn
aXN0ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGludCBlbmQgPSAtQ2FsbEZyYW1l
OjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZvciAoaSA9IC0x
OyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07Ci0KLSAgICBlbmQgLT0g
ZGVsdGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBqc1Vu
ZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNy
ZWF0ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1lIDw9IHJlZ2lzdGVyRmls
ZS0+ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0KIERFRklORV9TVFVCX0ZV
TkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklUX1NUQUNL
X0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0Zy
YW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVj
a0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7Cisg
ICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tG
b3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOwogICAg
IGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BD
YWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKIApAQCAt
MjIyMSw3ICsyMTg5LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVj
dAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAot
ICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0
YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBDYWxsRnJhbWUq
IG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUs
IHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBpZiAoIW5l
d0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lk
Kj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVTdGFj
a092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDEwNTY0NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgSlNJbnRlcmZhY2VKSVRfaAogI2RlZmlu
ZSBKU0ludGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAj
aW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNT
dHJpbmcuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIu
aCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTElu
dENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2RlZmluZSBMTElOVF9FWEVDVVRJ
T05fVFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFDSU5HIDAKKworI2VuZGlmIC8v
IExMSW50Q29tbW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnREYXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTExJbnREYXRhLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJJbnN0
cnVjdGlvbi5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJP
cGNvZGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK0RhdGE6OkRh
dGEoKQorICAgIDogbV9leGNlcHRpb25JbnN0cnVjdGlvbnMobmV3IEluc3RydWN0aW9uW21heE9w
Y29kZUxlbmd0aCArIDFdKQorICAgICwgbV9vcGNvZGVNYXAobmV3IE9wY29kZVtudW1PcGNvZGVJ
RHNdKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytp
KQorICAgICAgICBtX2V4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPSBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lKTsKKyNkZWZp
bmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBtX29wY29kZU1hcFtvcGNvZGVdID0gYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUpOworICAgIEZPUl9FQUNIX09QQ09ERV9J
RChPUENPREVfRU5UUlkpOworI3VuZGVmIE9QQ09ERV9FTlRSWQorfQorCitEYXRhOjp+RGF0YSgp
Cit7CisgICAgZGVsZXRlW10gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgZGVsZXRlW10g
bV9vcGNvZGVNYXA7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYg
Ly8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RGF0YV9oCisjZGVmaW5lIExM
SW50RGF0YV9oCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0u
aD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNl
IExMSW50IHsKKworI2lmIEVOQUJMRShMTElOVCkKK2NsYXNzIERhdGEgeworcHVibGljOgorICAg
IERhdGEoKTsKKyAgICB+RGF0YSgpOworICAgIAorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25J
bnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rp
b25zOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAg
ICByZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgfQorcHJpdmF0ZToKKyAgICBJbnN0cnVjdGlvbiog
bV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgT3Bjb2RlKiBtX29wY29kZU1hcDsKK307Cisj
ZWxzZSAvLyBFTkFCTEUoTExJTlQpCisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdt
aXNzaW5nLW5vcmV0dXJuIgorI2VuZGlmCisKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIElu
c3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KK307CisKKyNpZiBDT01Q
SUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorCisjZW5k
aWYgLy8gRU5BQkxFKExMSU5UKQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2Vu
ZGlmIC8vIExMSW50RGF0YV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludEVudHJ5cG9pbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKworI2lu
Y2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJM
TEludFRodW5rcy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBK
SVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2spCit7Cisg
ICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGlmIChraW5kID09IENv
ZGVGb3JDYWxsKSB7CisgICAgICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9u
KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9wcm9sb2d1ZSkpKSk7CisgICAgICAgICAgICBhcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
X2NoZWNrKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NF
UlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6
Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29k
ZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkpKSk7CisgICAgICAgIGFyaXR5Q2hlY2sgPSBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaykpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRD
b2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJh
dG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgICAgIGFyaXR5Q2hlY2sgPSBn
bG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJh
dG9yKS5jb2RlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9
PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdl
dENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29k
ZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJ
U3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgp
OworfQorCit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsK
KyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZXZhbF9wcm9sb2d1ZSkpKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElT
dHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7
Cit9CisKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkg
eworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdl
dENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVudHJ5cG9pbnRzX2gKKyNkZWZpbmUgTExJ
bnRFbnRyeXBvaW50c19oCisKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFdmFsQ29kZUJsb2NrOworY2xhc3MgSklUQ29kZTsK
K2NsYXNzIEpTR2xvYmFsRGF0YTsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjsKK2NsYXNz
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKK2NsYXNzIFByb2dyYW1Db2RlQmxvY2s7CisKK25hbWVz
cGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQsIEpJVENvZGUmLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIm
IGFyaXR5Q2hlY2spOwordm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBKSVRD
b2RlJik7Cit2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUm
KTsKKworaW5saW5lIHZvaWQgZ2V0RW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEV2YWxDb2RlQmxvY2sqLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGdldEV2YWxFbnRyeXBv
aW50KGdsb2JhbERhdGEsIGppdENvZGUpOworfQorCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvZ3JhbUNvZGVCbG9jayosIEpJVENvZGUmIGpp
dENvZGUpCit7CisgICAgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7
Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnRFbnRy
eXBvaW50c19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
eGNlcHRpb25zLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKworI2luY2x1ZGUgIkNhbGxGcmFt
ZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisj
aW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5j
bHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IExMSW50IHsKKwordm9pZCBpbnRlcnByZXRlclRocm93KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExM
SU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMuXG4i
LCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5l
cmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBleGVjLT5j
b2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZXhlYywgZXhlYy0+cmV0dXJuUEMoKSkpOworfQor
CitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5sbGludERhdGEuZXhjZXB0
aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4ZWNT
dGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAg
ICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAocmV0dXJuVG9UaHJvdykuXG4iLCBnbG9i
YWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhy
b3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNv
ZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAKKyAgICByZXR1cm4gZ2xv
YmFsRGF0YS0+bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworfQorCit2b2lkKiBj
YWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hF
TFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKGNhbGxUb1Ro
cm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgor
ICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24s
IHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAor
ICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19kdXJpbmdfY2FsbF90
cmFtcG9saW5lKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmluZSBMTElu
dEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1l
c3BhY2UgTExJbnQgeworCisvLyBKdXN0IHRocm93IHRoZSBjdXJyZW50bHkgYWN0aXZlIGV4Y2Vw
dGlvbiBpbiB0aGUgY29udGV4dCBvZiB0aGlzIGV4ZWMgc3RhdGUKKy8vIGFuZCBzZXQgdXAgYWxs
IG5lY2Vzc2FyeSBzdGF0ZS4KK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvdyhFeGVjU3RhdGUqKTsKKwor
Ly8gVGVsbHMgeW91IHdoZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0dXJuLXRvLXRo
cm93LCBhZnRlciB5b3UndmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBpbmZvcm1hdGlvbiBuZWVk
ZWQgdG8gdGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9y
VGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0aGUgY3VycmVudCBQQyBp
biB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlvdSBhIFBDCisv
LyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4g
YWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0
cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBleGNlcHRpb24g
aGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhjZXB0aW9uIGhh
bmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhhdCBQQyB3aXRo
b3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVhZCBleGNlcHRp
b24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5CisvLyBv
dGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiwgSW5z
dHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxs
IHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludEV4Y2VwdGlvbnNf
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJz
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDI0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJMTEludEhlbHBlcnMuaCIKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUg
Ikhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1
ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZhdGlv
bi5oIgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVk
ZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVk
ZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTExJbnRF
eGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUg
Ik9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKKyNk
ZWZpbmUgTExJTlRfT1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRSKHBjW2luZGV4XS51Lm9wZXJh
bmQpKQorI2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5vcGVy
YW5kKSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsgICAg
ICAgXAorICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgICAgIHZvaWQqIGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgICAgIHZvaWQqIGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgfSBwYWlyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgaW50NjRfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IF9f
cnRfdTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3Uu
cGFpci5hID0gZmlyc3Q7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFp
ci5iID0gc2Vjb25kOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19ydF91
Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisj
ZGVmaW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykKKworI2Rl
ZmluZSBMTElOVF9USFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fdF9nbG9iYWxEYXRhID0gZXhlYy0+Z2xv
YmFsRGF0YSgpOyAgICAgICAgXAorICAgICAgICBfX3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAo
ZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgXAorICAgICAgICBwYyA9IHJldHVyblRvVGhy
b3coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElO
VF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpIGRv
IHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmdsb2Jh
bERhdGEoKS5leGNlcHRpb24pKSB7ICAgXAorICAgICAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93
KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9FTkRfSU1QTCgp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisj
ZGVmaW5lIExMSU5UX0VORCgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5U
X0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2Up
CisKKyNkZWZpbmUgTExJTlRfQlJBTkNIKG9wY29kZSwgY29uZGl0aW9uKSBkbyB7ICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgYm9vbCBfX2JfY29uZGl0aW9uID0gKGNvbmRpdGlvbik7
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9fYl9j
b25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIHBjICs9IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsgICAg
ICAgIFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bjb2Rl
KTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChm
YWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAgICAg
XAorICAgICAgICBKU1ZhbHVlIF9fcl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAorICAg
ICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBM
TElOVF9PUCgxKSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAgXAorICAgICAgICBMTElOVF9F
TkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQor
CisjZGVmaW5lIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcGNvZGUsIHZhbHVlKSBkbyB7ICAgICAg
ICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcnBfcmV0dXJuVmFsdWUgPSAodmFsdWUpOyAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0gX19y
cF9yZXR1cm5WYWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwY1tPUENP
REVfTEVOR1RIKG9wY29kZSkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IFwKKyAgICAg
ICAgICAgIEpTVmFsdWU6OmVuY29kZShfX3JwX3JldHVyblZhbHVlKTsgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExf
RU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RXTygoY2FsbFRhcmdldCks
IChleGVjKSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBleGNlcHRpb25U
b1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3RfZXhl
YyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJ
bnN0cnVjdGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fY3RfZ2xvYmFsRGF0YSA9IChfX2N0X2V4
ZWMpLT5nbG9iYWxEYXRhKCk7ICAgICAgXAorICAgICAgICBfX2N0X2dsb2JhbERhdGEuZXhjZXB0
aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElO
VF9DQUxMX0VORF9JTVBMKF9fY3RfZXhlYywgY2FsbFRvVGhyb3coX19jdF9leGVjLCBfX2N0X3Bj
KSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0NIRUNLX0VY
Q0VQVElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBF
eGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jY2VfcGMgPSAocGMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoX19jY2VfZXhl
Yy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
TExJTlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2NjZV9leGVjLCBf
X2NjZV9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9S
RVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgRXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMgPSAocGMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9pZCogX19jcl9jYWxs
VGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19jcl9leGVjLT5jYWxsZXJGcmFtZSgpLCBf
X2NyX3BjKTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NyX2V4ZWMsIF9fY3Jf
Y2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworZXh0
ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBl
eGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAg
IHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV1LCBvcCMldTogVHJhY2UoJWQpOiAlZDog
JWRcbiIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAor
ICAgICAgICAgICBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
LAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJvbVdoZXJlLAorICAgICAgICAgICBvcGVy
YW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQpOworICAgIExMSU5UX0VORCgp
OworfQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhl
Y1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5k
KQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKG9wZXJhbmQpLmpzVmFsdWUoKTsK
KyAgICBFbmNvZGVkVmFsdWVEZXNjcmlwdG9yIGRlc2NyaXB0b3I7CisgICAgZGVzY3JpcHRvci5h
c0ludDY0ID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4
ZWN1dGluZyBiYyMldSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkOiAlMDh4OiUwOHgiLAorICAg
ICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAg
cGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwKKyAgICAgICAg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9w
Y29kZSksCisgICAgICAgICAgIGZyb21XaGVyZSwKKyAgICAgICAgICAgb3BlcmFuZCwKKyAgICAg
ICAgICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kLAorICAgICAgICAgICBkZXNjcmlwdG9yLmFzQml0
cy50YWcsCisgICAgICAgICAgIGRlc2NyaXB0b3IuYXNCaXRzLnBheWxvYWQpOworI2lmbmRlZiBO
REVCVUcKKyAgICBwcmludGYoIjogJXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgor
ICAgIHByaW50ZigiXG4iKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0wodHJhY2VfcHJvbG9ndWUpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiBwcm9sb2d1ZS5c
biIsIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworc3Rh
dGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hh
ciogY29tbWVudCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEpTRnVuY3Rp
b24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7
CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAl
cDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZVJlZ2lzdGVycyA9
ICV1LlxuIiwKKyAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBjb21tZW50LCBjYWxsZWUsIGV4
ZWN1dGFibGUsCisgICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAg
IHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBwcm9sb2d1ZSIsIENvZGVGb3JDYWxs
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9n
dWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUo
ZXhlYywgImNvbnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxs
KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBhcml0eSBjaGVjayIs
IENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
dHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9s
b2d1ZShleGVjLCAiY29uc3RydWN0IGFyaXR5IGNoZWNrIiwgQ29kZUZvckNvbnN0cnVjdCk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKQoreworICAgIHBy
aW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV1LCAiLAorICAgICAgICAgICBleGVjLT5jb2Rl
QmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgcGMgLSBleGVjLT5jb2RlQmxv
Y2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50
ZigiJXMsICIsIG9wY29kZU5hbWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpXSk7CisjZWxzZQorICAgIHByaW50Zigib3AjJXUsICIs
IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNv
ZGUpKTsKKyNlbmRpZgorICAgIHByaW50Zigic2NvcGUgJXBcbiIsIGV4ZWMtPnNjb3BlQ2hhaW4o
KSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJh
Y2UpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV1
LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2so
KSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGV4ZWMt
PnJldHVyblBDKCkudmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2lubGluZSBib29s
IHNob3VsZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gWW91IGNhbiBtb2RpZnkgdGhp
cyB0byB0dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0aGUgd29ybGQuCisgICAg
cmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKTsKK30KKworZW51bSBFbnRyeUtp
bmQgeyBQcm9sb2d1ZSwgQXJpdHlDaGVjayB9Oworc3RhdGljIEhlbHBlclJldHVyblR5cGUgZW50
cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJs
b2NrLCBjb25zdCBjaGFyICpuYW1lLCBFbnRyeUtpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUoSklU
X1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgJXMgd2l0aCBleGVjdXRlQ291
bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIG5hbWUsIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291
bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAg
ICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVS
Tl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4
ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAg
ICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAg
ICB9CisgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgaWYgKGtpbmQgPT0gUHJvbG9ndWUp
CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7CisgICAgQVNTRVJUKGtpbmQgPT0gQXJpdHlD
aGVjayk7CisgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGVXaXRoQXJp
dHlDaGVjaygpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChlbnRyeV9vc3IpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCBleGVjLT5j
b2RlQmxvY2soKSwgImVudHJ5X29zciIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHJldHVybiBlbnRyeU9TUihl
eGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2Vu
ZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9j
YWxsIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1
bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2Rl
Rm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Qi
LCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFz
RnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNv
ZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hl
Y2siLCBBcml0eUNoZWNrKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhl
YywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVy
YXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3RfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOworfQorCitMTElOVF9IRUxQRVJf
REVDTChsb29wX29zcikKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVC
bG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIl
cDogRW50ZXJlZCBsb29wX29zciB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9j
aywgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisgICAg
aWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGlt
ZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAg
CisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgewor
I2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50ZigiICAgIENvZGUgd2Fz
IGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxvY2stPmpp
dFNvb24oKTsKKyAgICAKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0gSklU
Q29kZTo6QmFzZWxpbmVKSVQpOworICAgIAorICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVP
ZmZzZXQ+IG1hcDsKKyAgICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKG1hcCk7Cisg
ICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2VhcmNoPEJ5dGVj
b2RlQW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQsIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldDo6
Z2V0Qnl0ZWNvZGVJbmRleD4obWFwLmJlZ2luKCksIG1hcC5zaXplKCksIHBjIC0gY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICBBU1NFUlQobWFwcGluZyk7CisgICAgQVNT
RVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocGMg
LSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyAgICAKKyAgICB2b2lkKiBq
dW1wVGFyZ2V0ID0gY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9m
ZnNldChtYXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQoanVtcFRhcmdl
dCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOX1RXTyhqdW1wVGFyZ2V0LCBleGVjKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisg
ICAgcHJpbnRmKCIlcDogRW50ZXJlZCByZXBsYWNlIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxu
IiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYK
KyAgICAKKyAgICBpZiAoc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGlmICghY29kZUJsb2Nr
LT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJP
U0VfT1NSKQorICAgICAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxl
ZC5cbiIpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7
CisgICAgfSBlbHNlCisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hl
Y2spCit7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIkNoZWNraW5nIHN0
YWNrIGhlaWdodCB3aXRoIGV4ZWMgPSAlcC5cbiIsIGV4ZWMpOworICAgIHByaW50ZigiQ29kZUJs
b2NrID0gJXAuXG4iLCBleGVjLT5jb2RlQmxvY2soKSk7CisgICAgcHJpbnRmKCJOdW0gY2FsbGVl
IHJlZ2lzdGVycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzKTsKKyAgICBwcmludGYoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+
bV9udW1WYXJzKTsKKyAgICBwcmludGYoIkN1cnJlbnQgZW5kIGlzIGF0ICVwLlxuIiwgZXhlYy0+
Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5lbmQoKSk7CisjZW5kaWYK
KyAgICBBU1NFUlQoJmV4ZWMtPnJlZ2lzdGVycygpW2V4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNh
bGxlZVJlZ2lzdGVyc10gPiBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVy
RmlsZSgpLmVuZCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWV4ZWMtPmdsb2JhbERhdGEoKS5pbnRl
cnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29k
ZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7CisgICAgICAgIGV4ZWMgPSBleGVj
LT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0g
Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93
KGV4ZWMpOworICAgICAgICBwYyA9IHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oZXhl
Yyk7CisgICAgfQorICAgIExMSU5UX0VORF9JTVBMKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29t
bW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50
ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ2FsbCk7CisgICAgaWYgKCFuZXdFeGVj
KSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5n
bG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOwor
ICAgICAgICBpbnRlcnByZXRlclRocm93KGV4ZWMpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdP
KGJpdHdpc2VfY2FzdDx2b2lkKj4oMSksIGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9SRVRVUk5f
VFdPKDAsIG5ld0V4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0
X2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhz
Ojphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJl
Z2lzdGVyRmlsZSgpLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAg
ICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAg
IGludGVycHJldGVyVGhyb3coZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lz
ZV9jYXN0PHZvaWQqPigxKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwg
bmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlv
bikKK3sKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ3JlYXRpbmcgYW4g
YWN0aXZhdGlvbiwgZXhlYyA9ICVwIVxuIiwgZXhlYyk7CisjZW5kaWYKKyAgICBKU0FjdGl2YXRp
b24qIGFjdGl2YXRpb24gPSBKU0FjdGl2YXRpb246OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMsIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWMtPmNvZGVCbG9jaygp
LT5vd25lckV4ZWN1dGFibGUoKSkpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2Nv
cGVDaGFpbigpLT5wdXNoKGFjdGl2YXRpb24pKTsKKyAgICBMTElOVF9SRVRVUk4oSlNWYWx1ZShh
Y3RpdmF0aW9uKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1l
bnRzKQoreworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1bWVudHM6OmNyZWF0
ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKKyAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFuZCkgPSBhcmd1bWVudHM7Cisg
ICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5v
cGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3Rv
ciA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIAorI2lmICFBU1NFUlRfRElTQUJM
RUQKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQVNTRVJUKGNvbnN0cnVj
dG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBjb25zdHJ1
Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlmCisgICAgCisgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmU7CisgICAgSlNWYWx1ZSBwcm90byA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsK
KyAgICBpZiAocHJvdG8uaXNPYmplY3QoKSkKKyAgICAgICAgc3RydWN0dXJlID0gYXNPYmplY3Qo
cHJvdG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGVsc2UKKyAgICAg
ICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCktPmdsb2JhbE9iamVjdC0+ZW1wdHlP
YmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlP
YmplY3QoZXhlYywgc3RydWN0dXJlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
b252ZXJ0X3RoaXMpCit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsK
KyAgICBBU1NFUlQodjEuaXNQcmltaXRpdmUoKSk7CisgICAgTExJTlRfUkVUVVJOKHYxLnRvVGhp
c09iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfb2JqZWN0
KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpCit7CisgICAgTExJTlRfUkVUVVJO
KGNvbnN0cnVjdEFycmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4oJkxMSU5UX09QKDIp
KSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdf
YXJyYXlfYnVmZmVyKQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RBcnJheShleGVjLCBl
eGVjLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIocGNbMl0udS5vcGVyYW5kKSwgcGNbM10u
dS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfcmVnZXhwKQor
eworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlZ2V4cChwY1syXS51
Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCisgICAgICAgIExMSU5UX1RI
Uk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIGZsYWcgc3VwcGxpZWQgdG8gUmVn
RXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2JqZWN0OjpjcmVh
dGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4cCkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oIUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6c3Ry
aWN0RXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcykKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9sZXNzZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NF
cTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKQoreworICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihq
c0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2luYykK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVt
YmVyKGV4ZWMpICsgMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYykK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVt
YmVyKGV4ZWMpIC0gMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9pbmMp
Cit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihl
eGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCArIDEpOworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Bvc3RfZGVjKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQgLSAxKTsK
KyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl90b19qc251bWJlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25lZ2F0ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoLUxMSU5U
X09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9hZGQpCit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QX0MoMikuanNWYWx1
ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyNp
ZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVHJ5aW5nIHRvIGFkZCAlcyIsIHYx
LmRlc2NyaXB0aW9uKCkpOworICAgIHByaW50ZigiIHRvICVzLlxuIiwgdjIuZGVzY3JpcHRpb24o
KSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNTdHJpbmcoKSkgeworICAgICAgICBMTElO
VF9SRVRVUk4oCisgICAgICAgICAgICB2Mi5pc1N0cmluZygpCisgICAgICAgICAgICA/IGpzU3Ry
aW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgYXNTdHJpbmcodjIpKQorICAgICAgICAgICAgOiBqc1N0
cmluZyhleGVjLCBhc1N0cmluZyh2MSksIHYyLnRvUHJpbWl0aXZlU3RyaW5nKGV4ZWMpKSk7Cisg
ICAgfQorICAgIAorICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCisgICAg
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcih2MS5hc051bWJlcigpICsgdjIuYXNOdW1iZXIoKSkp
OworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0FkZFNsb3dDYXNlKGV4ZWMsIHYxLCB2MikpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKQoreworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAqIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9zdWIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1i
ZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RpdikKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhl
YykgLyBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihm
bW9kKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpLCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2xzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9JbnQzMihleGVjKSA8PCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQz
MihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KQoreworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4
ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KQoreworICAgIExMSU5UX1JFVFVSTihqc051
bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSA+PiBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfYml0YW5kKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpICYgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQz
MihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3IpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhl
YykgfCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVy
KExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgXiBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9i
aXRub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKH5MTElOVF9PUF9DKDIpLmpzVmFs
dWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVj
a19oYXNfaW5zdGFuY2UpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsID0gTExJTlRfT1BfQygxKS5q
c1ZhbHVlKCk7CisjaWZuZGVmIE5ERUJVRworICAgIFR5cGVJbmZvIHR5cGVJbmZvKFVuc3BlY2lm
aWVkVHlwZSk7CisgICAgQVNTRVJUKCFiYXNlVmFsLmlzT2JqZWN0KCkKKyAgICAgICAgICAgfHwg
ISh0eXBlSW5mbyA9IGFzT2JqZWN0KGJhc2VWYWwpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKSku
aW1wbGVtZW50c0hhc0luc3RhbmNlKCkpOworI2VuZGlmCisgICAgTExJTlRfVEhST1coY3JlYXRl
SW52YWxpZFBhcmFtRXJyb3IoZXhlYywgImluc3RhbmNlb2YiLCBiYXNlVmFsKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9mKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluc3RhbmNlT2ZTbG93KGV4ZWMsIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQyg0KS5q
c1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRlZmluZWQp
Cit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbih2LmlzQ2VsbCgpID8gdi5hc0NlbGwoKS0+c3RydWN0dXJlKCktPnR5
cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpIDogdi5pc1VuZGVmaW5lZCgpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKQoreworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkuaXNCb29sZWFuKCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJlcikKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLmlzTnVtYmVyKCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZykKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKGlzSlNTdHJpbmcoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihqc0lzT2JqZWN0VHlwZShMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKQoreworICAgIExMSU5UX1JFVFVS
Tihqc0Jvb2xlYW4oanNJc0Z1bmN0aW9uVHlwZShMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Jlc29sdmUpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmUs
IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVu
dGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfc2tpcCkKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQoCisgICAgICAgIG9w
X3Jlc29sdmVfc2tpcCwKKyAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVTa2lwKAor
ICAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlm
aWVyKHBjWzJdLnUub3BlcmFuZCksCisgICAgICAgICAgICBwY1szXS51Lm9wZXJhbmQpKTsKK30K
Kworc3RhdGljIEpTVmFsdWUgcmVzb2x2ZUdsb2JhbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0
aW9uKiBwYykKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpOworICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkpOworICAg
IGludCBwcm9wZXJ0eSA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IHBjWzNdLnUuc3RydWN0dXJlLmdldCgpOworICAgIAorICAgIEFTU0VSVF9VTlVTRUQoc3Ry
dWN0dXJlLCBzdHJ1Y3R1cmUgIT0gZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgCisg
ICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpOwor
ICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCk7CisgICAgCisgICAgaWYgKGdsb2Jh
bE9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkgeworICAgICAgICBK
U1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpOworICAgICAgICBpZiAo
c2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgJiYgIWdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCktPmlz
VW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9
PSBnbG9iYWxPYmplY3QpIHsKKyAgICAgICAgICAgIHBjWzNdLnUuc3RydWN0dXJlLnNldCgKKyAg
ICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCksIGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgcGNbNF0gPSBz
bG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKyAgICAKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0g
Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCk7CisgICAgcmV0dXJuIEpT
VmFsdWUoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQor
eworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbCwgcmVzb2x2ZUds
b2JhbChleGVjLCBwYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9n
bG9iYWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9n
bG9iYWxfZHluYW1pYywgcmVzb2x2ZUdsb2JhbChleGVjLCBwYykpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKK3sKKyAg
ICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYywgQ29tbW9u
U2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIo
cGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2
ZV9iYXNlKQoreworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlk
ZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAocGNbM10udS5vcGVyYW5kKSB7Cisg
ICAgICAgIEpTVmFsdWUgYmFzZSA9IEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMt
PnNjb3BlQ2hhaW4oKSwgdHJ1ZSk7CisgICAgICAgIGlmICghYmFzZSkKKyAgICAgICAgICAgIExM
SU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhlYywgaWRl
bnQudXN0cmluZygpKSk7CisgICAgICAgIExMSU5UX1JFVFVSTihiYXNlKTsKKyAgICB9CisgICAg
CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfYmFzZSwgSlNDOjpyZXNvbHZl
QmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKK3sKKyAgICBKU09i
amVjdCogb2JqZWN0ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29k
ZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIW9iamVjdC0+
Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkKKyAgICAgICAgTExJTlRfVEhST1co
Y3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5n
KCkpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jl
c29sdmVfd2l0aF9iYXNlKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhz
OjpvcFJlc29sdmVXaXRoQmFzZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihw
Y1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgLy8gRklYTUU6IHRlY2huaWNhbGx5
IHNob3VsZCBoYXZlIHByb2ZpbGluZywgYnV0IHdlIGRvbid0IGRvIGl0IGJlY2F1c2UgdGhlIERG
RyB3b24ndCB1c2UgaXQuCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKK3sKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IENvbW1v
blNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aFRoaXMoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlk
ZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0OworICAgIC8vIEZJWE1FOiB0
ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcsIGJ1dCB3ZSBkb24ndCBkbyBpdCBiZWNh
dXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2st
PmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExM
SU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7
CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3Qp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDEpID0gcmVzdWx0
OworCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVh
YmxlKCkKKyAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAm
JiBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAg
ICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7Cisg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAg
ICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkK
KyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlD
YWNoaW5nKCkpIHsKKyAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAg
ICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCks
IHN0cnVjdHVyZSk7CisgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9m
ZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHBj
W09QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X2lkKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBd
ID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKK3sKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50
ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qo
YmFzZVZhbHVlKTsKKyAgICBMTElOVF9SRVRVUk4oYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwg
c2xvdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKQoreworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmll
ciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgIGlmIChwY1s4XS51
Lm9wZXJhbmQpCisgICAgICAgIGFzT2JqZWN0KGJhc2VWYWx1ZSktPnB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIGlkZW50LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAg
ZWxzZQorICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50LCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAg
aWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsK
KyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7
CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5
KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVy
dHlDYWNoaW5nKCkKKyAgICAgICAgICAgICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNs
b3Q6Ok5ld1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGlj
dGlvbmFyeSgpICYmIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpID09IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkgeworICAgICAg
ICAgICAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWUgb2YgdGhlIG1ldGhv
ZHMgd2UgY2FsbAorICAgICAgICAgICAgICAgICAgICAvLyBiZWxvdyBtYXkgR0MuCisgICAgICAg
ICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
b3BfcHV0X2J5X2lkKTsKKworICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVD
aGFpbihleGVjLCBiYXNlQ2VsbCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOworICAg
ICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCks
IHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5v
cGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1
Y3R1cmUpOworICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBzdHJ1
Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
Y2hhaW4pOworICAgICAgICAgICAgICAgICAgICBwY1s3XS51LnN0cnVjdHVyZUNoYWluLnNldCgK
KyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIHBj
WzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNW
YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpCit7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVjdCog
YmFzZU9iamVjdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvT2JqZWN0KGV4ZWMpOworICAg
IGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9w
ZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVy
YW5kKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgaWYgKCFjb3VsZERlbGV0
ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVh
dGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKworaW5saW5lIEpTVmFsdWUg
Z2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJz
Y3JpcHQpCit7CisgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0
LmlzU3RyaW5nKCkpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5h
c0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KGV4ZWMsIGFzU3RyaW5nKHN1YnNjcmlwdCktPnZh
bHVlKGV4ZWMpKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAg
IGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2Ny
aXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNT
dHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICByZXR1cm4gYXNT
dHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAorICAgICAgICBp
ZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNh
bkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzQnl0ZUFycmF5KGJhc2VWYWx1
ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGJhc2VWYWx1
ZS5nZXQoZXhlYywgaSk7CisgICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhl
Yywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZhbHVlLmdldChl
eGVjLCBwcm9wZXJ0eSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFs
KQoreworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9nZXRfYnlfdmFsLCBnZXRCeVZhbChl
eGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpCit7Cisg
ICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFh
cmd1bWVudHMpIHsKKyAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgICAgIExMSU5UX09QKDIpID0gYXJndW1lbnRzOworICAgICAgICBleGVjLT51bmNoZWNrZWRS
KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50
czsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIGFyZ3VtZW50
cywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2dldF9ieV9wbmFtZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJ
TlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpCit7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCk7CisgICAgCisgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsK
KyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAo
aXNKU0FycmF5KGJhc2VWYWx1ZSkpIHsKKyAgICAgICAgICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBh
c0FycmF5KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAoanNBcnJheS0+Y2FuU2V0SW5kZXgo
aSkpCisgICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgoZ2xvYmFsRGF0YSwgaSwgdmFs
dWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5k
ZXgoanNBcnJheSwgZXhlYywgaSwgdmFsdWUpOworICAgICAgICAgICAgTExJTlRfRU5EKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKQorICAgICAgICAg
ICAgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAgICAg
ICAgICAgIEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7
CisgICAgICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAganNC
eXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzSW50MzIoKSk7CisgICAgICAgICAgICAgICAg
TExJTlRfRU5EKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodmFsdWUuaXNOdW1i
ZXIoKSkgeworICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5h
c051bWJlcigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGksIHZhbHVlKTsKKyAgICAg
ICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhl
Yywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RN
b2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92
YWwpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsK
KyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChleGVjKTsKKyAg
ICAKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAg
IAorICAgIGJvb2wgY291bGREZWxldGU7CisgICAgCisgICAgdWludDMyX3QgaTsKKyAgICBpZiAo
c3Vic2NyaXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYmFzZU9iamVjdCwgZXhlYywg
aSk7CisgICAgZWxzZSB7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAg
ICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKSk7Cisg
ICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERlbGV0ZSA9IGJh
c2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMs
IHByb3BlcnR5KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBleGVjLT5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgCisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHV0X2J5X2luZGV4KQoreworICAgIExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
LnB1dChleGVjLCBwY1syXS51Lm9wZXJhbmQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKTsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIp
Cit7CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBK
U09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAg
SWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51
Lm9wZXJhbmQpOworICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7
CisgICAgYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lR2V0dGVyKGJhc2VPYmosIGV4ZWMs
IGlkZW50LCBhc09iamVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpCit7CisgICAg
QVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCog
YmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRlbnRpZmll
ciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQp
OworICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgYmFz
ZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lU2V0dGVyKGJhc2VPYmosIGV4ZWMsIGlkZW50LCBh
c09iamVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpCit7CisgICAgdW5zaWduZWQg
Y291bnQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgU2NvcGVDaGFpbk5vZGUqIHRtcCA9IGV4ZWMt
PnNjb3BlQ2hhaW4oKTsKKyAgICB3aGlsZSAoY291bnQtLSkKKyAgICAgICAgdG1wID0gdG1wLT5w
b3AoKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKHRtcCk7CisgICAgcGMgKz0gcGNbMl0udS5v
cGVyYW5kOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
anRydWUpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2p0cnVlLCBMTElOVF9PUF9DKDEpLmpzVmFs
dWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZh
bHNlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZmFsc2UsICFMTElOVF9PUF9DKDEpLmpzVmFs
dWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxl
c3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzLCBqc0xlc3M8dHJ1ZT4oZXhlYywgTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pu
bGVzcywgIWpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVh
dGVyKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlciwganNMZXNzPGZhbHNlPihleGVj
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFO
Q0gob3Bfam5ncmVhdGVyLCAhanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2psZXNzZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEsIGpzTGVzc0Vx
PHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpCit7CisgICAg
TExJTlRfQlJBTkNIKG9wX2pubGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1Bf
QygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3Jl
YXRlcmVxLCBqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bmdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEsICFqc0xlc3NF
cTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKQorewor
ICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgQVNT
RVJUKHNjcnV0aW5lZS5pc0RvdWJsZSgpKTsKKyAgICBkb3VibGUgdmFsdWUgPSBzY3J1dGluZWUu
YXNEb3VibGUoKTsKKyAgICBpbnQzMl90IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
dmFsdWUpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlm
ICh2YWx1ZSA9PSBpbnRWYWx1ZSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2RlQmxvY2stPmltbWVkaWF0ZVN3aXRj
aEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGludFZhbHVlLCBkZWZh
dWx0T2Zmc2V0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJp
bmcpCit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsK
KyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAoIXNjcnV0
aW5lZS5pc1N0cmluZygpKQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIGVsc2Ug
eworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAg
ICAgICBwYyArPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJh
bmQpLm9mZnNldEZvclZhbHVlKGFzU3RyaW5nKHNjcnV0aW5lZSktPnZhbHVlKGV4ZWMpLmltcGwo
KSwgZGVmYXVsdE9mZnNldCk7CisgICAgfQorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmMpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9
IEZ1bmN0aW9uQ29kZQorICAgICAgICAgICB8fCAhY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNo
YWluKCkKKyAgICAgICAgICAgfHwgZXhlYy0+dW5jaGVja2VkUihjb2RlQmxvY2stPmFjdGl2YXRp
b25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAg
cHJpbnRmKCJDcmVhdGluZyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJTlRfUkVUVVJO
KGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzJdLnUub3BlcmFuZCktPm1ha2UoZXhlYywgZXhl
Yy0+c2NvcGVDaGFpbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVu
Y19leHApCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsK
KyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4
cHIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVuY3Rpb24tPm1h
a2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICAKKyAgICBpZiAoIWZ1bmN0aW9uLT5u
YW1lKCkuaXNOdWxsKCkpIHsKKyAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25T
Y29wZU9iamVjdCA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBmdW5jdGlvbi0+
bmFtZSgpLCBmdW5jLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBmdW5jLT5zZXRT
Y29wZShleGVjLT5nbG9iYWxEYXRhKCksIGZ1bmMtPnNjb3BlKCktPnB1c2goZnVuY3Rpb25TY29w
ZU9iamVjdCkpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZnVuYyk7Cit9CisKK3N0
YXRpYyBIZWxwZXJSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxl
ZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kKQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1l
KCk7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsK
KworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAg
ICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CisKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9y
Q2FsbCkgeworICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YShjYWxsZWUsIGNhbGxEYXRhKTsKKyAgICAKKyAgICAgICAgQVNT
RVJUKGNhbGxUeXBlICE9IENhbGxUeXBlSlMpOworICAgIAorICAgICAgICBpZiAoY2FsbFR5cGUg
PT0gQ2FsbFR5cGVIb3N0KSB7CisgICAgICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVy
blZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2Fs
bGVlKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWND
YWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSk7CisgICAgICAgIH0KKyAgICAgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAg
ICAgcHJpbnRmKCJDYWxsIGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5k
ZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxs
VHlwZU5vbmUpOworICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RB
RnVuY3Rpb25FcnJvcihleGVjLCBjYWxsZWUpKTsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9
PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERh
dGE7CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShj
YWxsZWUsIGNvbnN0cnVjdERhdGEpOworICAgIAorICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9
IENvbnN0cnVjdFR5cGVKUyk7CisgICAgCisgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3Ry
dWN0VHlwZUhvc3QpIHsKKyAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVl
KSk7CisgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJl
dF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgfQorICAgIAorI2lm
IExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgICAgIHByaW50ZigiQ29uc3RydWN0b3IgY2FsbGVl
IGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlm
CisKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSk7CisgICAg
TExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhl
YywgY2FsbGVlKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlu
a0luZm8gPSAwKQoreworICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1
bmN0aW9uKGNhbGxlZUFzVmFsdWUpOworICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCisg
ICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1
ZSwga2luZCk7CisgICAgCisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxs
ZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihjYWxsZWUt
PnNjb3BlVW5jaGVja2VkKCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2Fs
bGVlLT5leGVjdXRhYmxlKCk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQ
dHI7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOworICAgIGlmIChleGVjdXRhYmxlLT5p
c0hvc3RGdW5jdGlvbigpKQorICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVk
SklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIGVsc2UgeworICAgICAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBm
dW5jdGlvbkV4ZWN1dGFibGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29wZSgp
LCBraW5kKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJP
VyhleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOworICAgICAgICBjb2RlQmxv
Y2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAg
ICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSkpCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxl
LT5nZW5lcmF0ZWRKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENv
ZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICB9CisgICAgCisgICAgaWYgKGNhbGxM
aW5rSW5mbykgeworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLT5pc09uTGlzdCgpKQorICAgICAg
ICAgICAgY2FsbExpbmtJbmZvLT5yZW1vdmUoKTsKKyAgICAgICAgRXhlY1N0YXRlKiBleGVjQ2Fs
bGVyID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5j
YWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+Y29kZUJsb2Nr
KCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPmxh
c3RTZWVuQ2FsbGVlLnNldChleGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4ZWNDYWxsZXItPmNv
ZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAgICAgY2FsbExpbmtJ
bmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9IGNvZGVQdHI7CisgICAgICAgIGlmIChjb2RlQmxvY2sp
CisgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbExpbmtJbmZvKTsK
KyAgICB9CisgICAgCisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIGNvZGVQ
dHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIGdl
bmVyaWNDYWxsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1
cCBhIGNhbGwgZnJhbWUuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29t
cGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBJZiBwb3NzaWJsZSwgbGluayB0aGUgY2Fs
bCdzIGlubGluZSBjYWNoZS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29k
ZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1Zh
bHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBF
eGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIAorICAg
IGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFu
ZCk7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBj
YWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAg
IAorICAgIEFTU0VSVChwY1s0XS51LmNhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJuIHNldFVwQ2Fs
bChleGVjQ2FsbGVlLCBwYywga2luZCwgY2FsbGVlQXNWYWx1ZSwgcGNbNF0udS5jYWxsTGlua0lu
Zm8pOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCkKK3sKKyAgICByZXR1cm4g
Z2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDYWxsKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMs
IENvZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92
YXJhcmdzKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAgYSBjYWxs
IGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4KKyAgICAvLyAt
IEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAg
ICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5k
IHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBM
TElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUg
PSBsb2FkVmFyYXJncygKKyAgICAgICAgZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnBy
ZXRlci0+cmVnaXN0ZXJGaWxlKCksCisgICAgICAgIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5vcGVyYW5kKTsKKyAgICBMTElOVF9DQUxM
X0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYyk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+dW5jaGVj
a2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxs
ZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIoUmVnaXN0ZXJG
aWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90PihwYyArIE9Q
Q09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSk7CisgICAgCisgICAgcmV0dXJuIHNldFVwQ2Fs
bChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKQoreworICAgIEpTVmFsdWUgY2FsbGVlQXNW
YWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWND
YWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUt
PnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0
ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29w
ZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMo
Yml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4oJmxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7
CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworICAgIGV4ZWMtPnVuY2hlY2tlZFIo
UmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90
PihwYyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7CisgICAgCisgICAgaWYgKCFpc0hv
c3RGdW5jdGlvbihjYWxsZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpCisgICAgICAgIHJldHVy
biBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsK
KyAgICAKKyAgICBnbG9iYWxEYXRhLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBldmFsKGV4ZWNDYWxs
ZWUpOworICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9j
YXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQoreworICAgIEFTU0VSVChleGVjLT5jb2Rl
QmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBKU1ZhbHVlIGFjdGl2YXRpb25W
YWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFjdGl2YXRpb25WYWx1ZSkg
eworICAgICAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKSB7CisgICAgICAgICAg
ICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAg
ICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAgfQorICAgICAgICBMTElO
VF9FTkQoKTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0
aW9uKGFjdGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihleGVjLT5nbG9i
YWxEYXRhKCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpCisgICAgICAg
IGFzQXJndW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IGFjdGl2YXRpb24pOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQoreworICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2so
KS0+dXNlc0FyZ3VtZW50cygpICYmICFleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVD
aGFpbigpKTsKKyAgICBhc0FyZ3VtZW50cyhleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpLT50ZWFyT2ZmKGV4ZWMp
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0
KQoreworICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhleGVjLCAmTExJTlRfT1AoMiksIHBjWzNd
LnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZl
KQoreworICAgIExMSU5UX1JFVFVSTihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1ByaW1pdGl2
ZShleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKQorewor
ICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAodi5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBjICs9IHBjWzVdLnUub3BlcmFuZDsKKyAgICAgICAg
TExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChl
eGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVjdHVyZSgpOworICAgIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBzdHJ1Y3R1cmUt
PmVudW1lcmF0aW9uQ2FjaGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlOYW1lSXRlcmF0b3IgfHwg
anNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4oKSAhPSBzdHJ1Y3R1
cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpKQorICAgICAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9y
ID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8pOworICAgIAorICAgIExM
SU5UX09QKDEpID0gSlNWYWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKKyAgICBMTElOVF9P
UCgyKSA9IEpTVmFsdWUobyk7CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rlcjo6d2l0aEludCgw
KTsKKyAgICBMTElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJvcGVydHlOYW1lSXRl
cmF0b3ItPnNpemUoKSk7CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcG5h
bWVzKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
eHRfcG5hbWUpCit7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChMTElOVF9PUCgyKS5q
c1ZhbHVlKCkpOworICAgIEpTU3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3RyaW5nKExMSU5UX09QKDEp
LmpzVmFsdWUoKSk7CisgICAgaWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIo
ZXhlYywgcHJvcGVydHktPnZhbHVlKGV4ZWMpKSkpIHsKKyAgICAgICAgLy8gR28gdG8gdGFyZ2V0
LgorICAgICAgICBwYyArPSBwY1s2XS51Lm9wZXJhbmQ7CisgICAgfSAvLyBFbHNlLCBkb24ndCBj
aGFuZ2UgdGhlIFBDLCBzbyB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxvb3AuCisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKQoreworICAg
IEpTVmFsdWUgdiA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogbyA9IHYu
dG9PYmplY3QoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAg
TExJTlRfT1AoMSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFp
bigpLT5wdXNoKG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3BvcF9zY29wZSkKK3sKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMt
PnNjb3BlQ2hhaW4oKS0+cG9wKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogc2NvcGUgPSBKU1N0YXRpY1Nj
b3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3Bl
cmFuZCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgRG9udERlbGV0ZSk7CisgICAgZXhlYy0+c2V0
U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goc2NvcGUpKTsKKyAgICBMTElOVF9S
RVRVUk4oc2NvcGUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpCit7Cisg
ICAgTExJTlRfVEhST1coTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQoreworICAgIExMSU5UX1RIUk9X
KGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvU3Ry
aW5nKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1ZykKK3sKKyAg
ICBpbnQgZGVidWdIb29rSUQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgaW50IGZpcnN0TGluZSA9
IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgbGFzdExpbmUgPSBwY1szXS51Lm9wZXJhbmQ7Cisg
ICAgCisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5kZWJ1ZyhleGVjLCBzdGF0
aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsK
KyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3By
b2ZpbGVfd2lsbF9jYWxsKQoreworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVy
ZW5jZSgpKS0+d2lsbEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2Nh
bGwpCit7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT5kaWRF
eGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIExMSW50SGVscGVyc19oCisjZGVmaW5lIExMSW50SGVscGVyc19oCisKKyNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7
CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKK3R5cGVkZWYgaW50
NjRfdCBIZWxwZXJSZXR1cm5UeXBlOworCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxp
bnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUs
IGludCBvcGVyYW5kKTsKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV92
YWx1ZShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5k
KTsKKworI2RlZmluZSBMTElOVF9IRUxQRVJfREVDTChuYW1lKSBcCisgICAgZXh0ZXJuICJDIiBI
ZWxwZXJSZXR1cm5UeXBlIGxsaW50XyMjbmFtZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9u
KiBwYykKKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpOworTExJTlRfSEVMUEVS
X0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RF
Q0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJf
REVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNl
X2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZSk7CitM
TElOVF9IRUxQRVJfREVDTChzcGVjaWFsX3RyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5
X29zcik7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwpOwor
TExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOworTExJ
TlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2spOwor
TExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlD
aGVjayk7CitMTElOVF9IRUxQRVJfREVDTChsb29wX29zcik7CitMTElOVF9IRUxQRVJfREVDTChy
ZXBsYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Ny
ZWF0ZV9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1l
bnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY29udmVydF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXdfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25ld19yZWdleHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25zdHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9n
cmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9k
ZWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wb3N0X2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1i
ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfYWRkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3N1Yik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xz
aGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl91cnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9iaXR4b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9pbnN0YW5jZW9mKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfYm9vbGVhbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX29iamVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24p
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9yZXNvbHZlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9yZXNvbHZlX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9w
cm9wZXJ0eV9leGlzdHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9i
YXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9nZXRfYXJndW1lbnRzX2xlbmd0aCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5
X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2dldF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9h
cmd1bWVudF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZGVsX2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lu
ZGV4KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wdXRfc2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBf
c2NvcGVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qdHJ1ZSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfamZhbHNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bmxlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3N3aXRjaF9pbW0pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9jaGFyKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfZnVuYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmNfZXhw
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90
ZWFyX29mZl9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNhdCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZlKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9nZXRfcG5hbWVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXh0X3BuYW1l
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wb3Bfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3
X3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9kZWJ1Zyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpOworCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50SGVscGVyc19oCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29u
ZmlnLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludE9mZmxp
bmVBc21Db25maWdfaAorI2RlZmluZSBMTEludE9mZmxpbmVBc21Db25maWdfaAorCisjaW5jbHVk
ZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4NikKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2
IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisjZW5kaWYKKworI2lmIENQVShB
Uk12NykKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElO
RV9BU01fQVJNdjcgMAorI2VuZGlmCisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisjZGVmaW5lIE9G
RkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FT
U0VSVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgQ1BVKEJJR19FTkRJQU4pCisjZGVmaW5lIE9G
RkxJTkVfQVNNX0JJR19FTkRJQU4gMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VO
RElBTiAwCisjZW5kaWYKKworI2lmIEVOQUJMRShMTElOVF9PU1JfVE9fSklUKQorI2RlZmluZSBP
RkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRf
RU5BQkxFRCAwCisjZW5kaWYKKworI2lmIExMSU5UX0VYRUNVVElPTl9UUkFDSU5HCisjZGVmaW5l
IE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVf
QVNNX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNlbmRpZgorCisjZW5kaWYgLy8gTExJbnRPZmZsaW5l
QXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQWxsb2NhdGlvblNwYWNlLmgi
CisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1
ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVFN0dWJz
LmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlN0eXBl
SW5mby5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKdW1wVGFi
bGUuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRlICJNYXJr
ZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgorI2luY2x1ZGUgIlNjb3BlQ2hh
aW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5o
IgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0lt
cGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgT0ZGTElORV9BU01fT0ZGU0VUT0Yo
Y2xhenosIGZpZWxkKSBPQkpFQ1RfT0ZGU0VUT0YoY2xhenosIGZpZWxkKQorCitjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCog
ZHVtbXkoKTsKK307CisKK2NvbnN0IHVuc2lnbmVkKiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KCkKK3sKKyNpbmNsdWRlICJMTEludERlc2lyZWRPZmZzZXRzLmgiCisgICAgcmV0dXJuIGV4
dHJhY3RvclRhYmxlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworaW50IG1haW4oaW50LCBj
aGFyKiopCit7CisgICAgLy8gT3V0IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0aW9uLCBtYWtlIHN1
cmUgdGhhdCBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkgaXMgbGl2ZSwKKyAgICAvLyBh
bmQgdGhlIGV4dHJhY3RvclRhYmxlIGlzIGxpdmUsIHRvby4KKyAgICBwcmludGYoIiVwXG4iLCBK
U0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSk7CisgICAgcmV0dXJuIDA7Cit9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludFRo
dW5rcy5oIgorCisjaW5jbHVkZSAiSlNJbnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRlICJMaW5rQnVm
ZmVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIExMSW50IHsKKworc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIHZvaWQgKCp0YXJn
ZXQpKCkpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIAorICAgIC8vIEZJWE1FOiB0
aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20gbm90
IHN1cmUgSSBjYXJlLgorICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRy
KGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7Cisg
ICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0KTsKKyAgICByZXR1cm4gcGF0Y2hCdWZmZXIu
ZmluYWxpemVDb2RlKCk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNh
bGxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICBy
ZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25G
b3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkK
K3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9i
YWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayk7Cit9CisKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2spOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5l
cmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9ldmFsX3Byb2xvZ3VlKTsKK30KKworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xv
YmFsRGF0YSwgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpMTEludAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVu
a3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVu
a3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRo
dW5rcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRUaHVua3NfaAorI2RlZmlu
ZSBMTEludFRodW5rc19oCisKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsRGF0YTsKKworbmFtZXNwYWNlIExMSW50
IHsKKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5l
cmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JD
b25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2Jh
bERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5
Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludFRodW5rc19oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzNzQgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBDcmFzaCBjb3Vyc2Ug
b24gdGhlIGxhbmd1YWdlIHRoYXQgdGhpcyBpcyB3cml0dGVuIGluICh3aGljaCBJIGp1c3QgY2Fs
bAorIyAiYXNzZW1ibHkiIGV2ZW4gdGhvdWdoIGl0J3MgbW9yZSB0aGFuIHRoYXQpOgorIworIyAt
IE1vc3RseSBnYXMtc3R5bGUgb3BlcmFuZCBvcmRlcmluZy4gVGhlIGxhc3Qgb3BlcmFuZCB0ZW5k
cyB0byBiZSB0aGUKKyMgICBkZXN0aW5hdGlvbi4gU28gImEgOj0gYiIgaXMgd3JpdHRlbiBhcyAi
bW92IGIsIGEiLiBCdXQgdW5saWtlIGdhcywKKyMgICBjb21wYXJpc29ucyBhcmUgaW4tb3JkZXIs
IHNvICJpZiAoYSA8IGIpIiBpcyB3cml0dGVuIGFzCisjICAgImJpbHQgYSwgYiwgLi4uIi4KKyMK
KyMgLSAiYiIgPSBieXRlLCAiaCIgPSAxNi1iaXQgd29yZCwgImkiID0gMzItYml0IHdvcmQsICJw
IiA9IHBvaW50ZXIuCisjICAgQ3VycmVudGx5IHRoaXMgaXMganVzdCAzMi1iaXQgc28gImkiIGFu
ZCAicCIgYXJlIGludGVyY2hhbmdlYWJsZQorIyAgIGV4Y2VwdCB3aGVuIGFuIG9wIHN1cHBvcnRz
IG9uZSBidXQgbm90IHRoZSBvdGhlci4KKyMKKyMgLSBJbiBnZW5lcmFsLCB2YWxpZCBvcGVyYW5k
cyBmb3IgbWFjcm8gaW52b2NhdGlvbnMgYW5kIGluc3RydWN0aW9ucyBhcmUKKyMgICByZWdpc3Rl
cnMgKGVnICJ0MCIpLCBhZGRyZXNzZXMgKGVnICI0W3QwXSIpLCBiYXNlLWluZGV4IGFkZHJlc3Nl
cworIyAgIChlZyAiN1t0MCwgdDEsIDJdIiksIGFic29sdXRlIGFkZHJlc3NlcyAoZWcgIjB4YTAw
MDAwMDBbXSIpLCBvciBsYWJlbHMKKyMgICAoZWcgIl9mb28iIG9yICIuZm9vIikuIE1hY3JvIGlu
dm9jYXRpb25zIGNhbiBhbHNvIHRha2UgYW5vbnltb3VzCisjICAgbWFjcm9zIGFzIG9wZXJhbmRz
LiBJbnN0cnVjdGlvbnMgY2Fubm90IHRha2UgYW5vbnltb3VzIG1hY3Jvcy4KKyMKKyMgLSBMYWJl
bHMgbXVzdCBoYXZlIG5hbWVzIHRoYXQgYmVnaW4gd2l0aCBlaXRoZXIgIl8iIG9yICIuIi4gIEEg
Ii4iIGxhYmVsCisjICAgaXMgbG9jYWwgYW5kIGdldHMgcmVuYW1lZCBiZWZvcmUgY29kZSBnZW4g
dG8gbWluaW1pemUgbmFtZXNwYWNlCisjICAgcG9sbHV0aW9uLiBBICJfIiBsYWJlbCBpcyBhbiBl
eHRlcm4gc3ltYm9sIChpLmUuICIuZ2xvYmwiKS4gVGhlICJfIgorIyAgIG1heSBvciBtYXkgbm90
IGJlIHJlbW92ZWQgZHVyaW5nIGNvZGUgZ2VuIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBhc20K
KyMgICBjb252ZW50aW9ucyBmb3IgQyBuYW1lIG1hbmdsaW5nIG9uIHRoZSB0YXJnZXQgcGxhdGZv
cm0gbWFuZGF0ZSBhICJfIgorIyAgIHByZWZpeC4KKyMKKyMgLSBBICJtYWNybyIgaXMgYSBsYW1i
ZGEgZXhwcmVzc2lvbiwgd2hpY2ggbWF5IGJlIGVpdGhlciBhbm9ueW1vdXMgb3IKKyMgICBuYW1l
ZC4gQnV0IHRoaXMgaGFzIGNhdmVhdHMuICJtYWNybyIgY2FuIHRha2UgemVybyBvciBtb3JlIGFy
Z3VtZW50cywKKyMgICB3aGljaCBtYXkgYmUgbWFjcm9zIG9yIGFueSB2YWxpZCBvcGVyYW5kcywg
YnV0IGl0IGNhbiBvbmx5IHJldHVybgorIyAgIGNvZGUuIEJ1dCB5b3UgY2FuIGRvIFR1cmluZy1j
b21wbGV0ZSB0aGluZ3MgdmlhIGNvbnRpbnVhdGlvbiBwYXNzaW5nCisjICAgc3R5bGU6ICJtYWNy
byBmb28gKGEsIGIpIGIoYSkgZW5kIGZvbyhmb28sIGZvbykiLiBBY3R1YWxseSwgZG9uJ3QgZG8K
KyMgICB0aGF0LCBzaW5jZSB5b3UnbGwganVzdCBjcmFzaCB0aGUgYXNzZW1ibGVyLgorIworIyAt
IEFuICJpZiIgaXMgYSBjb25kaXRpb25hbCBvbiBzZXR0aW5ncy4gQW55IGlkZW50aWZpZXIgc3Vw
cGxpZWQgaW4gdGhlCisjICAgcHJlZGljYXRlIG9mIGFuICJpZiIgaXMgYXNzdW1lZCB0byBiZSBh
ICNkZWZpbmUgdGhhdCBpcyBhdmFpbGFibGUKKyMgICBkdXJpbmcgY29kZSBnZW4uIFNvIHlvdSBj
YW4ndCB1c2UgImlmIiBmb3IgY29tcHV0YXRpb24gaW4gYSBtYWNybywgYnV0CisjICAgeW91IGNh
biB1c2UgaXQgdG8gc2VsZWN0IGRpZmZlcmVudCBwaWVjZXMgb2YgY29kZSBmb3IgZGlmZmVyZW50
CisjICAgcGxhdGZvcm1zLgorIworIyAtIEFyZ3VtZW50cyB0byBtYWNyb3MgZm9sbG93IGxleGlj
YWwgc2NvcGluZyByYXRoZXIgdGhhbiBkeW5hbWljIHNjb3BpbmcuCisjICAgQ29uc3QncyBhbHNv
IGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgYW5kIG1heSBvdmVycmlkZSAoaGlkZSkgYXJndW1lbnRz
CisjICAgb3Igb3RoZXIgY29uc3RzLiBBbGwgdmFyaWFibGVzIChhcmd1bWVudHMgYW5kIGNvbnN0
YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gb3BlcmFuZHMuIEFkZGl0aW9uYWxseSwgYXJndW1l
bnRzIChidXQgbm90IGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gbWFjcm9zLgorCisK
KyMgVGhlc2UgZGVjbGFyYXRpb25zIG11c3QgbWF0Y2ggaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxl
LmguCitjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gNDgKK2NvbnN0IEFyZ3VtZW50Q291bnQg
PSAtNDgKK2NvbnN0IENhbGxlckZyYW1lID0gLTQwCitjb25zdCBDYWxsZWUgPSAtMzIKK2NvbnN0
IFNjb3BlQ2hhaW4gPSAtMjQKK2NvbnN0IFJldHVyblBDID0gLTE2Citjb25zdCBDb2RlQmxvY2sg
PSAtOAorCitjb25zdCBUaGlzQXJndW1lbnRPZmZzZXQgPSAtQ2FsbEZyYW1lSGVhZGVyU2l6ZSAt
IDgKKworIyBEZWNsYXJlIHNvbWUgYWxpYXNlcyBmb3IgdGhlIHJlZ2lzdGVycyB3ZSB3aWxsIHVz
ZS4KK2NvbnN0IFBDID0gdDQKKworIyBPZmZzZXRzIG5lZWRlZCBmb3IgcmVhc29uaW5nIGFib3V0
IHZhbHVlIHJlcHJlc2VudGF0aW9uLgoraWYgQklHX0VORElBTgorICAgIGNvbnN0IFRhZ09mZnNl
dCA9IDAKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gNAorZWxzZQorICAgIGNvbnN0IFRhZ09m
ZnNldCA9IDQKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gMAorZW5kCisKKyMgVmFsdWUgcmVw
cmVzZW50YXRpb24gY29uc3RhbnRzLgorY29uc3QgSW50MzJUYWcgPSAtMQorY29uc3QgQm9vbGVh
blRhZyA9IC0yCitjb25zdCBOdWxsVGFnID0gLTMKK2NvbnN0IFVuZGVmaW5lZFRhZyA9IC00Citj
b25zdCBDZWxsVGFnID0gLTUKK2NvbnN0IEVtcHR5VmFsdWVUYWcgPSAtNgorY29uc3QgRGVsZXRl
ZFZhbHVlVGFnID0gLTcKK2NvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRhZworCisjIFR5
cGUgY29uc3RhbnRzLgorY29uc3QgU3RyaW5nVHlwZSA9IDUKK2NvbnN0IE9iamVjdFR5cGUgPSAx
MAorCisjIFR5cGUgZmxhZ3MgY29uc3RhbnRzLgorY29uc3QgTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCA9IDEKK2NvbnN0IEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDIKK2NvbnN0IEltcGxlbWVudHNE
ZWZhdWx0SGFzSW5zdGFuY2UgPSA4CisKKyMgSGVhcCBhbGxvY2F0aW9uIGNvbnN0YW50cy4KK2Nv
bnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9IDMKKworIyBCeXRlY29kZSBvcGVyYW5k
IGNvbnN0YW50cy4KK2NvbnN0IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAw
MAorCisjIENvZGUgdHlwZSBjb25zdGFudHMuCitjb25zdCBHbG9iYWxDb2RlID0gMAorY29uc3Qg
RXZhbENvZGUgPSAxCitjb25zdCBGdW5jdGlvbkNvZGUgPSAyCisKKyMgVGhlIGludGVycHJldGVy
IHN0ZWFscyB0aGUgdGFnIHdvcmQgb2YgdGhlIGFyZ3VtZW50IGNvdW50LgorY29uc3QgTExJbnRS
ZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQKKworIyBUaGlzIG11c3QgbWF0Y2gg
d3RmL1ZlY3Rvci5oLgorY29uc3QgVmVjdG9yU2l6ZU9mZnNldCA9IDAKK2NvbnN0IFZlY3RvckJ1
ZmZlck9mZnNldCA9IDQKKworIyBTdHJpbmcgZmxhZ3MuCitjb25zdCBIYXNoRmxhZ3M4Qml0QnVm
ZmVyID0gNjQKKworIyBVdGlsaXRpZXMKK21hY3JvIGNyYXNoKCkKKyAgICBzdG9yZWkgMCwgMHhi
YmFkYmVlZltdCisgICAgbW92ZSAwLCB0MAorICAgIGNhbGwgdDAKK2VuZAorCittYWNybyBhc3Nl
cnQoYXNzZXJ0aW9uKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGFzc2VydGlvbigu
b2spCisgICAgICAgIGNyYXNoKCkKKyAgICAub2s6CisgICAgZW5kCitlbmQKKworbWFjcm8gcHJl
c2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIpCisgICAgaWYg
QVJNdjcKKyAgICAgICAgbW92ZSBsciwgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2lmIFg4
NgorICAgICAgICBwb3AgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJy
b3IKKyAgICBlbmQKK2VuZAorCittYWNybyByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVy
bihzb3VyY2VSZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lz
dGVyLCBscgorICAgIGVsc2lmIFg4NgorICAgICAgICBwdXNoIHNvdXJjZVJlZ2lzdGVyCisgICAg
ZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIGRpc3BhdGNoKGFkdmFu
Y2UpCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3Jv
IGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldChwY09mZnNldCkKKyAgICBsc2hpZnRpIDIsIHBjT2Zm
c2V0CisgICAgYWRkcCBwY09mZnNldCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRp
c3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQorICAgIGxvYWRpIHBjT2Zmc2V0LCB0MAorICAgIGRpc3Bh
dGNoQnJhbmNoV2l0aE9mZnNldCh0MCkKK2VuZAorCittYWNybyBkaXNwYXRjaEFmdGVyQ2FsbCgp
CisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgIGptcCBb
UENdCitlbmQKKworbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQorICAgIGlmIEFS
TXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgIGVs
c2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisgICAg
ZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCisj
IFRoaXMgYmFyZWx5IHdvcmtzLiBhcmczIGFuZCBhcmc0IHNob3VsZCBwcm9iYWJseSBiZSBpbW1l
ZGlhdGVzLgorbWFjcm8gY0NhbGw0KGZ1bmN0aW9uLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KQor
ICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0
MQorICAgICAgICBtb3ZlIGFyZzMsIHQyCisgICAgICAgIG1vdmUgYXJnNCwgdDMKKyAgICBlbHNp
ZiBYODYKKyAgICAgICAgcG9rZSBhcmcxLCAwCisgICAgICAgIHBva2UgYXJnMiwgMQorICAgICAg
ICBwb2tlIGFyZzMsIDIKKyAgICAgICAgcG9rZSBhcmc0LCAzCisgICAgZWxzZQorICAgICAgICBl
cnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCittYWNybyBjYWxsSGVscGVy
KGhlbHBlcikKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUgdDAsIFBDCisg
ICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxp
a2UgdG8gcHJpbnQgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtLgorbWFjcm8g
dHJhY2VPcGVyYW5kKGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNl
X29wZXJhbmQsIGNmciwgUEMsIGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQwor
ICAgIG1vdmUgdDEsIGNmcgorZW5kCisKKyMgRGVidWdnaW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBs
aWtlIHRvIHByaW50IHRoZSB2YWx1ZSBvZiBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbgor
IyBzdHJlYW0uCittYWNybyB0cmFjZVZhbHVlKGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBjQ2Fs
bDQoX2xsaW50X3RyYWNlX3ZhbHVlLCBjZnIsIFBDLCBmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAg
bW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCittYWNybyB0cmFjZUV4ZWN1dGlv
bigpCisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcKKyAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRf
dHJhY2UpCisgICAgZW5kCitlbmQKKworIyBDYWxsIGEgaGVscGVyIGZvciBjYWxsIG9wY29kZXMu
CittYWNybyBjYWxsQ2FsbEhlbHBlcihhZHZhbmNlLCBoZWxwZXIsIGFjdGlvbikKKyAgICBhZGRw
IGFkdmFuY2UgKiA0LCBQQywgdDAKKyAgICBzdG9yZXAgdDAsIEFyZ3VtZW50Q291bnQgKyBUYWdP
ZmZzZXRbY2ZyXQorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MSwgY2Zy
CisgICAgYWN0aW9uKHQwKQorZW5kCisKK21hY3JvIHNsb3dQYXRoRm9yQ2FsbChhZHZhbmNlLCBo
ZWxwZXIpCisgICAgY2FsbENhbGxIZWxwZXIoCisgICAgICAgIGFkdmFuY2UsCisgICAgICAgIGhl
bHBlciwKKyAgICAgICAgbWFjcm8gKGNhbGxlZSkKKyAgICAgICAgICAgIGNhbGwgY2FsbGVlCisg
ICAgICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNy
byBjaGVja1N3aXRjaFRvSklUKGluY3JlbWVudCwgYWN0aW9uKQorICAgIGlmIEpJVF9FTkFCTEVE
CisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgICAgICBiYWRkaXMgaW5jcmVt
ZW50LCBDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRlclt0MF0sIC5jb250aW51ZQorICAg
ICAgICBhY3Rpb24oKQorICAgIC5jb250aW51ZToKKyAgICBlbmQKK2VuZAorCittYWNybyBjaGVj
a1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMSwK
KyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCAr
IFRhZ09mZnNldFtjZnJdCisgICAgICAgICAgICBjQ2FsbDIoX2xsaW50X2xvb3Bfb3NyLCBjZnIs
IFBDKQorICAgICAgICAgICAgbW92ZSB0MSwgY2ZyCisgICAgICAgICAgICBidHB6IHQwLCAucmVj
b3ZlcgorICAgICAgICAgICAgam1wIHQwCisgICAgICAgIC5yZWNvdmVyOgorICAgICAgICAgICAg
bG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgICAgICBlbmQpCitl
bmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBjaGVja1N3aXRj
aFRvSklUKAorICAgICAgICAxMCwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAgIGNhbGxI
ZWxwZXIoX2xsaW50X3JlcGxhY2UpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBhc3NlcnRO
b3RDb25zdGFudChpbmRleCkKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWx0IGluZGV4LCBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCwgb2sgZW5kKQorZW5kCisKKyMgSW5kZXgsIHRhZywgYW5k
IHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QKKyMgY2hh
bmdlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUoaW5kZXgsIHRhZywgcGF5bG9hZCkK
KyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQK
KyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFu
dDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9j
azo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5
bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29u
dGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4g
dmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4KSA8PCAzLgorICAgIGxvYWRwIFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHRh
ZworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisu
ZG9uZToKK2VuZAorCisjIEluZGV4IGFuZCBwYXlsb2FkIG1heSBiZSB0aGUgc2FtZSByZWdpc3Rl
ci4gSW5kZXggbWF5IGJlIGNsb2JiZXJlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgs
IDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2Fk
CisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRh
ZworICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZl
ck9mZnNldFt0YWddLCB0YWcKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYg
dGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgs
CisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsc2hpZnRpIDMsIGluZGV4CisgICAgYWRk
cCBpbmRleCwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFt0YWddLCBwYXlsb2FkCisgICAg
bG9hZHAgVGFnT2Zmc2V0W3RhZ10sIHRhZworLmRvbmU6CitlbmQKKworbWFjcm8gbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oaW5kZXgsIHRhZ0NoZWNrLCBwYXlsb2FkKQor
ICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAor
ICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSkKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6
CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxv
YWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRh
aW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZh
bHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCkgPDwgMy4KKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdKQor
ICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisuZG9u
ZToKK2VuZAorCisjIEluZGV4IGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVy
cy4gSW5kZXggaXMgbm90IG11dGF0ZWQuIFVzZQorIyB0aGlzIGlmIHlvdSBrbm93IHdoYXQgdGhl
IHRhZyBvZiB0aGUgdmFyaWFibGUgc2hvdWxkIGJlLiBEb2luZyB0aGUgdGFnCisjIHRlc3QgYXMg
cGFydCBvZiBsb2FkaW5nIHRoZSB2YXJpYWJsZSByZWR1Y2VzIHJlZ2lzdGVyIHVzZSwgYnV0IG1h
eSBub3QKKyMgYmUgZmFzdGVyIHRoYW4gZG9pbmcgbG9hZENvbnN0YW50T3JWYXJpYWJsZSBmb2xs
b3dlZCBieSBhIGJyYW5jaCBvbiB0aGUKKyMgdGFnLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBwYXlsb2FkLCBzbG93KQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKAorICAgICAgICBpbmRleCwKKyAgICAg
ICAgbWFjcm8gKGFjdHVhbFRhZykgYmluZXEgYWN0dWFsVGFnLCBleHBlY3RlZFRhZywgc2xvdyBl
bmQsCisgICAgICAgIHBheWxvYWQpCitlbmQKKworbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWRVbmNoZWNrZWQoaW5kZXgsIHBheWxvYWQpCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRUYWdDdXN0b20oCisgICAgICAgIGluZGV4LAorICAgICAgICBtYWNybyAoYWN0
dWFsVGFnKSBlbmQsCisgICAgICAgIHBheWxvYWQpCitlbmQKKworbWFjcm8gd3JpdGVCYXJyaWVy
KHRhZywgcGF5bG9hZCkKKyAgICAjIE5vdGhpbmcgdG8gZG8gc2luY2Ugd2UgZG9uJ3QgaGF2ZSBh
IGdlbmVyYXRpb25hbCBvciBpbmNyZW1lbnRhbCBjb2xsZWN0b3IuCitlbmQKKworbWFjcm8gdmFs
dWVQcm9maWxlKHRhZywgcGF5bG9hZCwgcHJvZmlsZSkKKyAgICBzdG9yZWkgdGFnLCBWYWx1ZVBy
b2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNldFtwcm9maWxlXQorICAgIHN0b3JlaSBwYXlsb2Fk
LCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbcHJvZmlsZV0KK2VuZAor
CisKKyMgSW5kaWNhdGUgdGhlIGJlZ2lubmluZyBvZiBMTEludC4KK19sbGludF9iZWdpbjoKKyAg
ICBjcmFzaCgpCisKKworIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlcgorCittYWNy
byBmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9h
ZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9l
eGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBGdW5j
dGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdl
dFJlZ2lzdGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0
ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVy
CisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFy
Z2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9y
Q29uc3RydWN0W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBu
b3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkNvZGVCbG9j
a1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAgICBzdG9yZXAgc291cmNlUmVnaXN0ZXIsIENvZGVC
bG9ja1tjZnJdCitlbmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNl
UmVnaXN0ZXIpCisgICAgIyBOb3RoaW5nIHRvIGRvIQorZW5kCisKKyMgRG8gdGhlIGJhcmUgbWlu
aW11bSByZXF1aXJlZCB0byBleGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBsZWF2ZSB0aGUg
Q29kZUJsb2NrKgorIyBpbiB0MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1Iu
CittYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NySGVs
cGVyLCB0cmFjZUhlbHBlcikKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIp
CisgICAgCisgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3Vs
ZCBPU1IuCisgICAgc3RvcmVwIHQyLCBSZXR1cm5QQ1tjZnJdCisgICAgaWYgRVhFQ1VUSU9OX1RS
QUNJTkcKKyAgICAgICAgY2FsbEhlbHBlcih0cmFjZUhlbHBlcikKKyAgICBlbmQKKyAgICBjb2Rl
QmxvY2tHZXR0ZXIodDEpCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgYmFkZGlzIDUsIENv
ZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3QxXSwgLmNvbnRpbnVlCisgICAgICAgIGND
YWxsMihvc3JIZWxwZXIsIGNmciwgUEMpCisgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAgICBi
dHB6IHQwLCAucmVjb3ZlcgorICAgICAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgICAg
ICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICAgICAgam1wIHQwCisg
ICAgLnJlY292ZXI6CisgICAgICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICAuY29udGludWU6
CisgICAgZW5kCisgICAgY29kZUJsb2NrU2V0dGVyKHQxKQorICAgIAorICAgICMgU2V0IHVwIHRo
ZSBQQy4KKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZm
ZXJPZmZzZXRbdDBdLCBQQworZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0
MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCisjIE11c3QgY2FsbCBk
aXNwYXRjaCgwKSBhZnRlciBjYWxsaW5nIHRoaXMuCittYWNybyBmdW5jdGlvbkluaXRpYWxpemF0
aW9uKHByb2ZpbGVBcmdTa2lwKQorICAgICMgUHJvZmlsZSB0aGUgYXJndW1lbnRzLiBVbmZvcnR1
bmF0ZWx5LCB3ZSBoYXZlIG5vIGNob2ljZSBidXQgdG8gZG8gdGhpcy4gVGhpcworICAgICMgY29k
ZSBpcyBwcmV0dHkgaG9ycmVuZG91cyBiZWNhdXNlIG9mIHRoZSBkaWZmZXJlbmNlIGluIG9yZGVy
aW5nIGJldHdlZW4KKyAgICAjIGFyZ3VtZW50cyBhbmQgdmFsdWUgcHJvZmlsZXMsIHRoZSBkZXNp
cmUgdG8gaGF2ZSBhIHNpbXBsZSBsb29wLWRvd24tdG8temVybworICAgICMgbG9vcCwgYW5kIHRo
ZSBkZXNpcmUgdG8gdXNlIG9ubHkgdGhyZWUgcmVnaXN0ZXJzIHNvIGFzIHRvIHByZXNlcnZlIHRo
ZSBQQyBhbmQKKyAgICAjIHRoZSBjb2RlIGJsb2NrLiBJdCBpcyBsaWtlbHkgdGhhdCB0aGlzIGNv
ZGUgc2hvdWxkIGJlIHJld3JpdHRlbiBpbiBhIG1vcmUKKyAgICAjIG9wdGltYWwgd2F5IGZvciBh
cmNoaXRlY3R1cmVzIHRoYXQgaGF2ZSBtb3JlIHRoYW4gZml2ZSByZWdpc3RlcnMgYXZhaWxhYmxl
CisgICAgIyBmb3IgYXJiaXRyYXJ5IHVzZSBpbiB0aGUgaW50ZXJwcmV0ZXIuCisgICAgbG9hZGkg
Q29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCB0MAorICAgIGFkZGkgLXByb2ZpbGVBcmdT
a2lwLCB0MCAjIFVzZSBhZGRpIGJlY2F1c2UgdGhhdCdzIHdoYXQgaGFzIHRoZSBwZWVwaG9sZQor
ICAgIGFzc2VydChtYWNybyAob2spIGJpZ3RlcSB0MCwgMCwgb2sgZW5kKQorICAgIGJ0aXogdDAs
IC5hcmd1bWVudFByb2ZpbGVEb25lCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFs
dWVQcm9maWxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MV0sIHQzCisgICAgbXVsaSBzaXplb2Yg
VmFsdWVQcm9maWxlLCB0MCwgdDIgIyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVkdWN0aW9u
IQorICAgIG5lZ2kgdDAKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MiwgdDMKKy5hcmd1
bWVudFByb2ZpbGVMb29wOgorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNl
dCArIDggLSBwcm9maWxlQXJnU2tpcCAqIDhbY2ZyLCB0MF0sIHQyCisgICAgc3VicCBzaXplb2Yg
VmFsdWVQcm9maWxlLCB0MworICAgIHN0b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBzaXplb2Yg
VmFsdWVQcm9maWxlICsgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbdDNdCisg
ICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldCArIDggLSBwcm9maWxl
QXJnU2tpcCAqIDhbY2ZyLCB0MF0sIHQyCisgICAgc3RvcmVpIHQyLCBwcm9maWxlQXJnU2tpcCAq
IHNpemVvZiBWYWx1ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRP
ZmZzZXRbdDNdCisgICAgYmFkZGlueiA4LCB0MCwgLmFyZ3VtZW50UHJvZmlsZUxvb3AKKy5hcmd1
bWVudFByb2ZpbGVEb25lOgorICAgIAorICAgICMgQ2hlY2sgc3RhY2sgaGVpZ2h0LgorICAgIGxv
YWRpIENvZGVCbG9jazo6bV9udW1DYWxsZWVSZWdpc3RlcnNbdDFdLCB0MAorICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDIKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6Omlu
dGVycHJldGVyW3QyXSwgdDIgICAjIEZJWE1FOiBDYW4gZ2V0IHRvIHRoZSBSZWdpc3RlckZpbGUg
ZnJvbSB0aGUgSklUU3RhY2tGcmFtZQorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQwLCBj
ZnIsIHQwCisgICAgYnBhZXEgSW50ZXJwcmV0ZXI6Om1fcmVnaXN0ZXJGaWxlICsgUmVnaXN0ZXJG
aWxlOjptX2VuZFt0Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSworCisgICAgIyBTdGFjayBoZWlnaHQg
Y2hlY2sgZmFpbGVkIC0gbmVlZCB0byBjYWxsIGEgaGVscGVyLgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X3JlZ2lzdGVyX2ZpbGVfY2hlY2spCisuc3RhY2tIZWlnaHRPSzoKK2VuZAorCisjIEV4cGVj
dHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2
ZXMgYmVoaW5kLgorbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgaGVscGVyKQor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisgICAgYmlh
ZXEgdDAsIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCisgICAgY0Nh
bGwyKGhlbHBlciwgY2ZyLCBQQykgICAjIFRoaXMgaGVscGVyIGhhcyBhIHNpbXBsZSBwcm90b2Nv
bDogdDAgPSAwID0+IG5vIGVycm9yLCB0MCAhPSAwID0+IGVycm9yCisgICAgbW92ZSB0MSwgY2Zy
CisgICAgYnRpeiB0MCwgLmNvbnRpbnVlCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFs
RGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0
MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFd
CisuY29udGludWU6CisgICAgIyBSZWxvYWQgQ29kZUJsb2NrIGFuZCBQQywgc2luY2UgdGhlIGhl
bHBlciBjbG9iYmVyZWQgaXQuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjpJbnN0cnVjdGlvbnM6Om1faW5zdHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwg
UEMKKyAgICBqbXAgZG9uZUxhYmVsCitlbmQKKworX2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6Cisg
ICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJs
b2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAg
ZGlzcGF0Y2goMCkKKworCitfbGxpbnRfZXZhbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RG
dW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGlu
dF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisK
K19sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlv
bkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRf
ZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rp
b25fZm9yX2NhbGwpCisuZnVuY3Rpb25Gb3JDYWxsQmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFs
aXphdGlvbigwKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29k
ZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9m
dW5jdGlvbl9mb3JfY29uc3RydWN0LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdCkKKy5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgorICAgIGZ1bmN0aW9uSW5p
dGlhbGl6YXRpb24oMSkKKyAgICBkaXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJs
b2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY2Fs
bCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfbGxpbnRf
aGVscGVyX2NhbGxfYXJpdHlDaGVjaykKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9j
a0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3Jf
Y29uc3RydWN0KQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RC
ZWdpbiwgX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKKworIyBJbnN0cnVjdGlv
biBpbXBsZW1lbnRhdGlvbnMKKworX2xsaW50X29wX2VudGVyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1f
bnVtVmFyc1t0Ml0sIHQyCisgICAgYnRpeiB0MiwgLm9wRW50ZXJEb25lCisgICAgbW92ZSBVbmRl
ZmluZWRUYWcsIHQwCisgICAgbW92ZSAwLCB0MQorLm9wRW50ZXJMb29wOgorICAgIHN1YmkgMSwg
dDIKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwg
UGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGJ0aW56IHQyLCAub3BFbnRlckxvb3AKKy5v
cEVudGVyRG9uZToKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9jcmVhdGVfYWN0aXZh
dGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmlu
ZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBY3RpdmF0
aW9uRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikK
Ky5vcENyZWF0ZUFjdGl2YXRpb25Eb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29w
X2luaXRfbGF6eV9yZWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBz
dG9yZWkgMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKwor
X2xsaW50X29wX2NyZWF0ZV9hcmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1
ZVRhZywgLm9wQ3JlYXRlQXJndW1lbnRzRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9jcmVhdGVfYXJndW1lbnRzKQorLm9wQ3JlYXRlQXJndW1lbnRzRG9uZToKKyAgICBkaXNwYXRj
aCgyKQorCisKK21hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJbmRleCwgY2xh
c3NJbmZvT2Zmc2V0LCBzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBzbG93
Q2FzZSkKKyAgICBjb25zdCBvZmZzZXRPZk15U2l6ZUNsYXNzID0gSlNHbG9iYWxEYXRhOjpoZWFw
ICsgSGVhcDo6bV9vYmplY3RTcGFjZSArIEFsbG9jYXRpb25TcGFjZTo6bV9tYXJrZWRTcGFjZSAr
IE1hcmtlZFNwYWNlOjptX3ByZWNpc2VTaXplQ2xhc3NlcyArIHNpemVDbGFzc0luZGV4ICogc2l6
ZW9mIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MKKyAgICAKKyAgICAjIEZJWE1FOiB3ZSBjYW4gZ2V0
IHRoZSBnbG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRoZSBzdGFjay4KKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgc2NyYXRjaDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0
YVtzY3JhdGNoMV0sIHNjcmF0Y2gxCisgICAgCisgICAgIyBHZXQgdGhlIG9iamVjdCBmcm9tIHRo
ZSBmcmVlIGxpc3QuICAgIAorICAgIGxvYWRwIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRT
cGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXSwgcmVzdWx0CisgICAgYnRw
eiByZXN1bHQsIHNsb3dDYXNlCisgICAgCisgICAgIyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRo
ZSBmcmVlIGxpc3QuCisgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNj
cmF0Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmly
c3RGcmVlQ2VsbFtzY3JhdGNoMV0KKworICAgICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgorICAg
IGxvYWRwIGNsYXNzSW5mb09mZnNldFtzY3JhdGNoMV0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNj
cmF0Y2gyLCBbcmVzdWx0XQorICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbcmVzdWx0XQorICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRd
CisgICAgYWRkcCBzaXplb2YgSlNPYmplY3QsIHJlc3VsdCwgc2NyYXRjaDEKKyAgICBzdG9yZXAg
c2NyYXRjaDEsIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVtyZXN1bHRdCitlbmQKKworX2xs
aW50X29wX2NyZWF0ZV90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIENlbGxUYWcsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwg
dDEKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0s
IE9iamVjdFR5cGUsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1faW5o
ZXJpdG9ySURbdDBdLCB0MgorICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgYWxs
b2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxE
YXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhp
c1Nsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNl
dFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQor
ICAgIGRpc3BhdGNoKDMpCisKKy5vcENyZWF0ZVRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9jcmVhdGVfdGhpcykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9n
ZXRfY2FsbGVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBsb2FkcCBQYXlsb2FkT2Zmc2V0ICsgQ2FsbGVlW2Nmcl0sIHQxCisgICAgc3RvcmVpIENlbGxU
YWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NvbnZlcnRfdGhpczoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MAorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6
bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNTbG93CisgICAgZGlzcGF0Y2go
MikKKworLm9wQ29udmVydFRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9j
b252ZXJ0X3RoaXMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X29iamVjdDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9i
YWxPYmplY3Q6Om1fZW1wdHlPYmplY3RTdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGFsbG9jYXRlQmFz
aWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNG
aW5hbE9iamVjdENsYXNzSW5mbywgdDEsIHQwLCB0MiwgdDMsIC5vcE5ld09iamVjdFNsb3cpCisg
ICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQx
LCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3Bh
dGNoKDIpCisKKy5vcE5ld09iamVjdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X25ld19vYmplY3QpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X2FycmF5Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Fy
cmF5KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19hcnJheV9idWZmZXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJy
YXlfYnVmZmVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19yZWdleHA6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfcmVn
ZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX21vdjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bfbm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5vcE5v
dFNsb3cKKyAgICB4b3JpIDEsIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRj
aCgzKQorCisub3BOb3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ub3QpCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWco
dDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcEVxU2xvdworICAgIGJpZXEgdDIsIENl
bGxUYWcsIC5vcEVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cKKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBjaWVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRh
ZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wRXFTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9lcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9lcV9udWxs
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0
W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAK
KyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAg
am1wIC5vcEVxTnVsbE5vdEltbWVkaWF0ZQorLm9wRXFOdWxsSW1tZWRpYXRlOgorICAgIGNpZXEg
dDEsIE51bGxUYWcsIHQyCisgICAgY2llcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIG9yaSB0
MiwgdDEKKy5vcEVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFn
T2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMs
IDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVxOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93CisgICAgYmll
cSB0MiwgQ2VsbFRhZywgLm9wTmVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFT
bG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2luZXEgdDAsIHQxLCB0MAorICAgIHN0b3Jl
aSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BOZXFTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXEpCisgICAgZGlzcGF0Y2goNCkKKyAgICAKKwor
X2xsaW50X29wX25lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbEltbWVk
aWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRieiBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQsIHQxCisgICAgam1wIC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKKy5vcE5lcU51bGxJ
bW1lZGlhdGU6CisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2luZXEgdDEsIFVuZGVm
aW5lZFRhZywgdDEKKyAgICBhbmRpIHQyLCB0MQorLm9wTmVxTnVsbE5vdEltbWVkaWF0ZToKKyAg
ICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBz
dHJpY3RFcShlcXVhbGl0eU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0Mywg
dDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5l
cSB0MiwgdDMsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmluZXEg
dDIsIENlbGxUYWcsIC5ub3RTdHJpbmcKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKKyAgICBiYm5lcSBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwg
Lm5vdFN0cmluZworICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
dHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93Cisubm90U3RyaW5nOgorICAgIGxvYWRpIDRbUENd
LCB0MgorICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDApCisgICAgc3RvcmVpIEJvb2xl
YW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIo
aGVscGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50X29wX3N0cmljdGVxOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3Vs
dCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9zdHJpY3RlcSkK
KworCitfbGxpbnRfb3BfbnN0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJp
Y3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwgcmlnaHQsIHJlc3Vs
dCBlbmQsIF9sbGludF9oZWxwZXJfbnN0cmljdGVxKQorCisKK19sbGludF9vcF9sZXNzOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzcykKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzZXEpCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2dyZWF0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfZ3JlYXRlcmVxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3ByZV9p
bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVx
IFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZUluY1Nsb3cKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJhZGRpbyAxLCB0MSwgLm9wUHJl
SW5jU2xvdworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRp
c3BhdGNoKDIpCisKKy5vcFByZUluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3ByZV9pbmMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJlX2RlYzoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdworICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNTbG93Cisg
ICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikK
KworLm9wUHJlRGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2RlYykK
KyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3N0X2luYzoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmlu
ZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdEluY1Nsb3cKKyAgICBi
aWVxIHQwLCB0MSwgLm9wUG9zdEluY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYmFkZGlvIDEsIHQzLCAub3BQb3N0SW5j
U2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0SW5jRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisu
b3BQb3N0SW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9pbmMpCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcG9zdF9kZWM6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVx
IFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3REZWNTbG93CisgICAgYmll
cSB0MCwgdDEsIC5vcFBvc3REZWNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XSwgdDIKKyAgICBtb3ZlIHQyLCB0MworICAgIGJzdWJpbyAxLCB0MywgLm9wUG9zdERlY1Ns
b3cKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XQorLm9wUG9zdERlY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKworLm9w
UG9zdERlY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfZGVjKQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3RvX2pzbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmllcSB0MiwgSW50MzJUYWcsIC5v
cFRvSnNudW1iZXJJc0ludAorICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BUb0pzbnVt
YmVyU2xvdworLm9wVG9Kc251bWJlcklzSW50OgorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
ZGlzcGF0Y2goMykKKworLm9wVG9Kc251bWJlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3RvX2pzbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25lZ2F0
ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkg
NFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQorICAgIGJp
bmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3ZmZm
ZmZmZiwgLm9wTmVnYXRlU2xvdworICAgIG5lZ2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRh
Z09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQz
LCA4XQorICAgIGRpc3BhdGNoKDMpCisub3BOZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQxLCBM
b3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKKyAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAgc3Rv
cmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOZWdhdGVTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZWdhdGUpCisgICAgZGlzcGF0Y2goMykKKworCittYWNy
byBiaW5hcnlPcEN1c3RvbVN0b3JlKGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3Bl
cmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0
MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9w
MU5vdEludAorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGxvYWRpIDRb
UENdLCB0MgorICAgIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0MywgdDEsIHQwLCAuc2xvdywg
dDIpCisgICAgZGlzcGF0Y2goNSkKKworLm9wMU5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQg
aXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291bGQgYmUgYW55
dGhpbmcuCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQzLCBMb3dlc3RU
YWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93Cisg
ICAgY2kyZCB0MSwgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRv
dWJsZToKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGxvYWRp
IDRbUENdLCB0MQorICAgIGZpaTJkIHQwLCB0MiwgZnQwCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0
MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDUpCisK
Ky5vcDJOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50LCB0
aGUgc2Vjb25kIG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QuCisgICAgbG9hZGkgNFtQQ10sIHQy
CisgICAgYmlhIHQzLCBMb3dlc3RUYWcsIC5zbG93CisgICAgY2kyZCB0MCwgZnQwCisgICAgZmlp
MmQgdDEsIHQzLCBmdDEKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVk
IGZ0MCwgW2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLnNsb3c6CisgICAgY2FsbEhl
bHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNSkKK2VuZAorCittYWNybyBiaW5hcnlPcChpbnRl
Z2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBiaW5hcnlPcEN1c3Rv
bVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRl
eCkKKyAgICAgICAgICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCisgICAg
ICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAg
ICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAg
IGVuZCwKKyAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCitlbmQKKworX2xsaW50X29w
X2FkZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgc2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9hZGQpCisKKworX2xsaW50X29wX211bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0
LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjb25zdCBzY3JhdGNoID0gaW50MzJU
YWcgICAjIFdlIGtub3cgdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIGludDMyVGFnIHJlZ2lzdGVyIHNp
bmNlIGl0IGhhcyBhIGNvbnN0YW50LgorICAgICAgICAgICAgbW92ZSByaWdodCwgc2NyYXRjaAor
ICAgICAgICAgICAgYm11bGlvIGxlZnQsIHNjcmF0Y2gsIHNsb3cKKyAgICAgICAgICAgIGJ0aW56
IHNjcmF0Y2gsIC5kb25lCisgICAgICAgICAgICBiaWx0IGxlZnQsIDAsIC5zbG93CisgICAgICAg
ICAgICBiaWx0IHJpZ2h0LCAwLCAuc2xvdworICAgICAgICAuZG9uZToKKyAgICAgICAgICAgIHN0
b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9y
ZWkgc2NyYXRjaCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfbXVsKQorCisKK19sbGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJz
dWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkg
c3ViZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfc3ViKQorCisKK19s
bGludF9vcF9kaXY6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3Rv
cmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQor
ICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQor
ICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwg
Lm5vdEludAorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4
LCA4XQorICAgICAgICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6CisgICAgICAgICAg
ICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVu
ZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl9kaXYpCisKKworX2xsaW50X29wX21vZDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkKKyAgICBkaXNwYXRj
aCg0KQorCisKK21hY3JvIGJpdE9wKG9wZXJhdGlvbiwgaGVscGVyLCBhZHZhbmNlKQorICAgIGxv
YWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQy
LCB0MCkKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIEludDMy
VGFnLCAuc2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIG9wZXJhdGlvbih0MSwgdDAsIC5z
bG93KQorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKKworLnNs
b3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKK2VuZAor
CitfbGxpbnRfb3BfbHNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwK
KyAgICAgICAgX2xsaW50X2hlbHBlcl9sc2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29w
X3JzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgc2xvdykgcnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9s
bGludF9oZWxwZXJfcnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF91cnNoaWZ0Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCBzbG93KQorICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKKyAgICAgICAgICAg
IGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVy
X3Vyc2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX2JpdGFuZDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykg
YW5kaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0YW5kLAorICAg
ICAgICA1KQorCisKK19sbGludF9vcF9iaXR4b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmln
aHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdHhvciwKKyAgICAgICAgNSkKKworCitf
bGxpbnRfb3BfYml0b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfYml0b3IsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG5vdDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGJpbmVx
IHQyLCBJbnQzMlRhZywgLm9wQml0bm90U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIs
IFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2JpdG5vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9j
aGVja19oYXNfaW5zdGFuY2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENd
LCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwg
Lm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFn
c1t0MF0sIEltcGxlbWVudHNIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAg
ICBkaXNwYXRjaCgyKQorCisub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQorICAgIGRpc3BhdGNoKDIpCisKKwor
X2xsaW50X29wX2luc3RhbmNlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgQ2hlY2sg
dGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3Iu
CisgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAxMltQ
Q10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDEsIHQw
KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVs
dEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIAorICAgICMgQWN0dWFsbHkgZG8g
dGhlIHdvcmsuCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFu
Y2VvZlNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJi
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBl
LCAub3BJbnN0YW5jZW9mU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCisg
ICAgCisgICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAg
ICBtb3ZlIDEsIHQwCisub3BJbnN0YW5jZW9mTG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QyXSwgdDIKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9h
ZE9mZnNldFt0Ml0sIHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAg
YnRpbnogdDIsIC5vcEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5j
ZW9mRG9uZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkK
KworLm9wSW5zdGFuY2VvZlNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luc3Rh
bmNlb2YpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNw
YXRjaCgzKQorCisKK19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9pc19udW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19udW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfaXNfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X2lzX29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2lzX29iamVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19mdW5j
dGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2lzX2Z1bmN0aW9uKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2luOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfcmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9za2lwKQorICAgIGRpc3BhdGNoKDUpCisKKwor
bWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZv
bGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhb
UENdICAgUHJvcGVydHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAj
IDEyW1BDXSAgU3RydWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUg
Z2VuZXJhdG9yLgorICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlh
bGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYnBuZXEgdDEsIDEyW1BDXSwg
c2xvdworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0
eVN0b3JhZ2VbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGxvYWRpIChzaXplIC0gMSkgKiA0W1BDXSwgdDAK
KyAgICB2YWx1ZVByb2ZpbGUodDIsIHQzLCB0MCkKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9n
bG9iYWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHJlc29sdmVHbG9iYWwoNiwgLm9wUmVz
b2x2ZUdsb2JhbFNsb3cpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbFNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3Bh
dGNoKDYpCisKKworIyBHaXZlcyB5b3UgdGhlIHNjb3BlIGluIHQwLCB3aGlsZSBhbGxvd2luZyB5
b3UgdG8gb3B0aW9uYWxseSBwZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9uIHRoZQorIyBzY29w
ZXMgYXMgdGhleSBhcmUgdHJhdmVyc2VkLiBzY29wZUNoZWNrKCkgaXMgY2FsbGVkIHdpdGggdHdv
IGFyZ3VtZW50czogdGhlIHJlZ2lzdGVyCisjIGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdp
c3RlciB0aGF0IGNhbiBiZSB1c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5v
dAorIyB1c2UgdDMsIHNvIHlvdSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJlLgorbWFj
cm8gZ2V0U2NvcGUoZGVCcnVpamluSW5kZXhPcGVyYW5kLCBzY29wZUNoZWNrKQorICAgIGxvYWRw
IFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgZGVCcnVpamlu
SW5kZXhPcGVyYW5kLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisgICAgCisgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3Qx
XSwgRnVuY3Rpb25Db2RlLCAubG9vcAorICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNj
b3BlQ2hhaW5bdDFdLCAubG9vcAorICAgIAorICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0
aW9uUmVnaXN0ZXJbdDFdLCB0MQorCisgICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBv
dmVyIG9uZSBzY29wZS4KKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1
ZVRhZywgLm5vQWN0aXZhdGlvbgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNj
b3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKy5ub0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0
MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisubG9vcDoKKyAgICBzY29wZUNoZWNrKHQwLCB0
MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisgICAgc3ViaSAxLCB0
MgorICAgIGJ0aW56IHQyLCAubG9vcAorCisuZG9uZToKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2
ZV9nbG9iYWxfZHluYW1pYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3Rh
Y2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3Rp
dmF0aW9uU3RydWN0dXJlW3QzXSwgdDMKKyAgICBnZXRTY29wZSgKKyAgICAgICAgMjBbUENdLAor
ICAgICAgICBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpCisgICAgICAgICAgICBsb2FkcCBTY29wZUNo
YWluTm9kZTo6b2JqZWN0W3Njb3BlXSwgc2NyYXRjaAorICAgICAgICAgICAgYnBuZXEgSlNDZWxs
OjptX3N0cnVjdHVyZVtzY3JhdGNoXSwgdDMsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJT
bG93CisgICAgICAgIGVuZCkKKyAgICByZXNvbHZlR2xvYmFsKDcsIC5vcFJlc29sdmVHbG9iYWxE
eW5hbWljU2xvdykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1
cGVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2
ZV9nbG9iYWxfZHluYW1pYykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHlu
YW1pY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5
bmFtaWMpCisgICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAg
IyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgSW5kZXgg
b2YgcmVnaXN0ZXIgaW4gdGhlIHNjb3BlLgorICAgICMgMTJbUENdICBEZSBCcnVpamluIGluZGV4
LgorICAgIGdldFNjb3BlKDEyW1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAg
bG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZHAgU2NvcGVDaGFp
bk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdp
c3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNl
dFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQor
ICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICB2YWx1ZVByb2ZpbGUodDMsIHQwLCB0MSkKKyAgICBk
aXNwYXRjaCg1KQorCisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgZ2V0U2NvcGUoOFtQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQor
ICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0Mywg
dDIpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQzLCB0MikKKyAgICBs
b2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxl
T2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbdDAs
IHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3Rb
dDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFt0MCwgdDEsIDhdLCB0MQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisg
ICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgbG9hZGkgMTJbUENd
LCB0MworICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQzKQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6
bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0
MykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0
b3JlaSB0MiwgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZz
ZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfYmFz
ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jl
c29sdmVfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9lbnN1cmVfcHJvcGVy
dHlfZXhpc3RzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9yZXNvbHZlX3dpdGhfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQorICAgIGRpc3BhdGNoKDUpCisK
KworX2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCisgICAgZGlzcGF0
Y2goNSkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5k
IHdlIGRvIG5vdCBtb2RpZnkgdGhlCisgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxv
dyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorICAgICMg
cGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5
X2lkIHdpbGwgY29udGludWUKKyAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2Fj
aGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisgICAgIyB3ZSB3
b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2Vs
bFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2Fk
cCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAgIGJwbmVxIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDEK
KyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W3QwLCB0Ml0sIHQyCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBz
dG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAzMltQQ10sIHQx
CisgICAgdmFsdWVQcm9maWxlKHQzLCB0MiwgdDEpCisgICAgZGlzcGF0Y2goOSkKKworLm9wR2V0
QnlJZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9pZCkKKyAgICBk
aXNwYXRjaCg5KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisg
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1
bWVudHNMZW5ndGhTbG93CisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRb
Y2ZyXSwgdDIKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAg
ICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9wdXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEy
W1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0Mwor
ICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAg
ICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQw
LCB0MikKKyAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0
W3QzLCB0MV0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQorICAgIGRpc3Bh
dGNoKDkpCisKKy5vcFB1dEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9w
dXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOSkKKworCittYWNybyBwdXRCeUlkVHJhbnNpdGlvbihh
ZGRpdGlvbmFsQ2hlY2tzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwg
dDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQy
CisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwor
ICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAy
MFtQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMK
KyAgICBhZGRwIHQxLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwg
dDIpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0
M10KKyAgICBsb2FkaSAyNFtQQ10sIHQxCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3Qz
XQorICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICBkaXNwYXRjaCg5
KQorZW5kCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgcHV0
QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQor
CisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgcHV0QnlJZFRy
YW5zaXRpb24oCisgICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCisg
ICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhl
IG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAgICAgIAorICAgICAgICAg
ICAgbG9hZHAgMjhbUENdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBi
dHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6
bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGFzc2VydChtYWNybyAob2sp
IGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICAgICAgICAgIGJpZXEgU3RydWN0dXJlOjptX3By
b3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorICAgICAg
ICAubG9vcDoKKyAgICAgICAgICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXls
b2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAgICAgICAgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICAgICAgICAgIGJw
bmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCBzbG93CisgICAgICAgICAgICBhZGRwIDQsIHNj
cmF0Y2gKKyAgICAgICAgICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZz
ZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKKyAgICAgICAgLmRvbmU6CisgICAgICAg
IGVuZCkKKworCitfbGxpbnRfb3BfZGVsX2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X2lkKQorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX2dldF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDEyW1BD
XSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQxCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNs
b3cpCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgSW50MzJUYWcsIHQxLCAub3BHZXRC
eVZhbFNsb3cpCisgICAgYnBuZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRw
IEpTQXJyYXk6Om1fc3RvcmFnZVt0MF0sIHQzCisgICAgYmlhZXEgdDEsIEpTQXJyYXk6Om1fdmVj
dG9yTGVuZ3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
bG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0Mgor
ICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwg
OF0sIHQxCisgICAgYmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93CisgICAg
c3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgdmFsdWVQcm9maWxl
KHQyLCB0MSwgdDApCisgICAgZGlzcGF0Y2goNSkKKworLm9wR2V0QnlWYWxTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisKKwor
X2xsaW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93Cisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEludDMyVGFnLCB0MiwgLm9wR2V0
QXJndW1lbnRCeVZhbFNsb3cpCisgICAgYWRkaSAxLCB0MgorICAgIGxvYWRpIEFyZ3VtZW50Q291
bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisgICAgYmlhZXEgdDIsIHQxLCAub3BHZXRBcmd1
bWVudEJ5VmFsU2xvdworICAgIG5lZ2kgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2Fk
aSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisgICAgbG9h
ZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEKKyAg
ICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEFyZ3VtZW50QnlW
YWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFs
KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV9wbmFtZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9h
ZGkgMTZbUENdLCB0MAorICAgIGJwbmVxIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAu
b3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAg
bG9hZGkgMjBbUENdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQz
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAsIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFt
ZVNsb3cKKyAgICBsb2FkaSAyNFtQQ10sIHQwCisgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAor
ICAgIHN1YmkgMSwgdDAKKyAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9u
dW1DYWNoZWFibGVTbG90c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZHAgSlNPYmpl
Y3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQw
LCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAgbG9h
ZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBz
dG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg3KQorCisu
b3BHZXRCeVBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3Bu
YW1lKQorICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX3B1dF9ieV92YWw6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBJbnQzMlRh
ZywgdDIsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9i
YWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QwXSwgdDAKKyAgICBicG5lcSBbdDFdLCB0MCwgLm9w
UHV0QnlWYWxTbG93CisgICAgYmlhZXEgdDIsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QxXSwg
Lm9wUHV0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QxXSwgdDAKKyAg
ICBiaWVxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgRW1w
dHlWYWx1ZVRhZywgLm9wUHV0QnlWYWxFbXB0eQorLm9wUHV0QnlWYWxTdG9yZVJlc3VsdDoKKyAg
ICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQx
LCB0MykKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQzKQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9y
YWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdCisgICAgc3RvcmVpIHQzLCBBcnJh
eVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdCisgICAgZGlzcGF0
Y2goNCkKKworLm9wUHV0QnlWYWxFbXB0eToKKyAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9u
dW1WYWx1ZXNJblZlY3Rvclt0MF0KKyAgICBiaWIgdDIsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhb
dDBdLCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0MiwgdDEKKyAgICBzdG9y
ZWkgdDEsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdCisgICAgam1wIC5vcFB1dEJ5VmFsU3Rv
cmVSZXN1bHQKKworLm9wUHV0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9wdXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2RlbF9ieV92YWw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWxf
YnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9pbmRleDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9p
bmRleCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2V0dGVyOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2dldHRlcikK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfc2V0dGVyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X3NldHRlcikKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9sb29wOgorICAgIG5vcAorX2xsaW50X29wX2ptcDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0Y2hCcmFuY2goNFtQQ10pCisKKworX2xs
aW50X29wX2ptcF9zY29wZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9qbXBfc2NvcGVzKQorICAgIGRpc3BhdGNoKDApCisKKworbWFjcm8ganVt
cFRydWVPckZhbHNlKGNvbmRpdGlvbk9wLCBzbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBCb29sZWFuVGFnLCB0MCwgLnNsb3cp
CisgICAgY29uZGl0aW9uT3AodDAsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRhcmdl
dDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihz
bG93KQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfdHJ1ZToKKyAg
ICBub3AKK19sbGludF9vcF9qdHJ1ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAganVtcFRy
dWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpbnogdmFsdWUsIHRh
cmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfanRydWUpCisKKworX2xsaW50X29wX2xv
b3BfaWZfZmFsc2U6CisgICAgbm9wCitfbGxpbnRfb3BfamZhbHNlOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0
KSBidGl6IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pmYWxzZSkK
KworCittYWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhbmRsZXIpCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxU
YWcsIC5pbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAg
ICBjZWxsSGFuZGxlcihTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0
Ml0sIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJy
YW5jaCg4W1BDXSkKKworLmltbWVkaWF0ZToKKyAgICBvcmkgMSwgdDEKKyAgICBpbW1lZGlhdGVI
YW5kbGVyKHQxLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCitlbmQKKworX2xsaW50X29wX2pl
cV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1h
Y3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJueiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpZXEgdmFsdWUsIE51
bGxUYWcsIHRhcmdldCBlbmQpCisgICAgCisKK19sbGludF9vcF9qbmVxX251bGw6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJn
ZXQpIGJ0YnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisgICAg
ICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaW5lcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVu
ZCkKKworCitfbGxpbnRfb3Bfam5lcV9wdHI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wSm5lcVB0ckJyYW5jaAorICAgIGJwZXEgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDEsIC5vcEpuZXFQdHJGYWxsVGhyb3VnaAorLm9wSm5lcVB0ckJy
YW5jaDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisub3BKbmVxUHRyRmFsbFRocm91Z2g6
CisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBjb21wYXJlKGludGVnZXJDb21wYXJlLCBkb3Vi
bGVDb21wYXJlLCBoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10s
IHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDAsIHQxKQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MiwgdDMpCisgICAgYmluZXEgdDAsIEludDMyVGFnLCAu
b3AxTm90SW50CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AyTm90SW50CisgICAgaW50ZWdl
ckNvbXBhcmUodDEsIHQzLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisub3AxTm90
SW50OgorICAgIGJpYSB0MCwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFn
LCAub3AxTm90SW50T3AyRG91YmxlCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAg
IGNpMmQgdDMsIGZ0MQorICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3Vi
bGU6CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBmaWkyZCB0
MSwgdDAsIGZ0MAorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAg
IGRpc3BhdGNoKDQpCisKKy5vcDJOb3RJbnQ6CisgICAgY2kyZCB0MSwgZnQwCisgICAgYmlhIHQy
LCBMb3dlc3RUYWcsIC5zbG93CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKyAgICBkb3VibGVDb21w
YXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisuanVtcFRhcmdl
dDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIo
aGVscGVyKQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfbGVzczoK
KyAgICBub3AKK19sbGludF9vcF9qbGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29t
cGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0
IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2psZXNzKQor
CisKK19sbGludF9vcF9qbmxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUo
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQs
IHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXF1
biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmxlc3Mp
CisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcjoKKyAgICBub3AKK19sbGludF9vcF9qZ3Jl
YXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVhdGVyKQorCisKK19sbGludF9vcF9qbmdy
ZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXF1biBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXIpCisKKworX2xsaW50
X29wX2xvb3BfaWZfbGVzc2VxOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzZXE6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
dGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfamxlc3NlcSkKKworCitfbGxpbnRfb3Bfam5sZXNzZXE6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAg
ICAgICBfbGxpbnRfaGVscGVyX2pubGVzc2VxKQorCisKK19sbGludF9vcF9sb29wX2lmX2dyZWF0
ZXJlcToKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmln
dGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHRhcmdldCkgYmRndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRf
aGVscGVyX2pncmVhdGVyZXEpCisKKworX2xsaW50X29wX2puZ3JlYXRlcmVxOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRh
cmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJkbHR1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9qbmdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3BfbG9vcF9oaW50OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgZGlz
cGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2ltbToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6ZW9m
IFNpbXBsZUp1bXBUYWJsZSwgdDMgICAjIEZJWE1FOiB3b3VsZCBiZSBuaWNlIHRvIHBlZXBob2xl
IHRoaXMhCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9pbW1lZGlhdGVTd2l0Y2hK
dW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0Mgor
ICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wU3dpdGNoSW1tTm90SW50CisgICAgc3ViaSBTaW1w
bGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6
YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhy
b3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1
ZmZlck9mZnNldFt0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgNF0sIHQxCisgICAgYnRpeiB0
MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQo
dDEpCisKKy5vcFN3aXRjaEltbU5vdEludDoKKyAgICBiaWIgdDEsIExvd2VzdFRhZywgLm9wU3dp
dGNoSW1tU2xvdyAgIyBHbyB0byBzbG93IHBhdGggaWYgaXQncyBhIGRvdWJsZS4KKy5vcFN3aXRj
aEltbUZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisub3BTd2l0Y2hJ
bW1TbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfaW1tKQorICAgIGRp
c3BhdGNoKDApCisKKworX2xsaW50X29wX3N3aXRjaF9jaGFyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXpl
b2YgU2ltcGxlSnVtcFRhYmxlLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1f
Y2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisg
ICAgYWRkcCB0MywgdDIKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wU3dpdGNoQ2hhckZhbGxU
aHJvdWdoCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYmJuZXEg
U3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIFN0cmluZ1R5cGUs
IC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTU3RyaW5nOjptX3ZhbHVlW3Qw
XSwgdDAKKyAgICBiaW5lcSBTdHJpbmdJbXBsOjptX2xlbmd0aFt0MF0sIDEsIC5vcFN3aXRjaENo
YXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFN0cmluZ0ltcGw6Om1fZGF0YThbdDBdLCB0MQorICAg
IGJ0aW56IFN0cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdzW3QwXSwgSGFzaEZsYWdzOEJpdEJ1ZmZl
ciwgLm9wU3dpdGNoQ2hhcjhCaXQKKyAgICBsb2FkaCBbdDFdLCB0MAorICAgIGptcCAub3BTd2l0
Y2hDaGFyUmVhZHkKKy5vcFN3aXRjaENoYXI4Qml0OgorICAgIGxvYWRiIFt0MV0sIHQwCisub3BT
d2l0Y2hDaGFyUmVhZHk6CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisg
ICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVP
ZmZzZXRbdDJdLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTaW1wbGVKdW1w
VGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGxv
YWRpIFt0MiwgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEsIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdo
CisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQorCisub3BTd2l0Y2hDaGFyRmFsbFRo
cm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKworX2xsaW50X29wX3N3aXRjaF9z
dHJpbmc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9zd2l0Y2hfc3RyaW5nKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX25ld19mdW5j
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidGl6IDEyW1BDXSwgLm9wTmV3RnVuY1VuY2hl
Y2tlZAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQxLCA4
XSwgRW1wdHlWYWx1ZVRhZywgLm9wTmV3RnVuY0RvbmUKKy5vcE5ld0Z1bmNVbmNoZWNrZWQ6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19mdW5jKQorLm9wTmV3RnVuY0RvbmU6Cisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmNfZXhwKQorICAg
IGRpc3BhdGNoKDMpCisKKworbWFjcm8gZG9DYWxsKGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAgTExJbnRDYWxsTGlua0luZm86OmNh
bGxlZVt0MV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxU
YWcsIHQzLCAub3BDYWxsU2xvdykKKyAgICBiaW5lcSB0MywgdDIsIC5vcENhbGxTbG93CisgICAg
bG9hZGkgMTJbUENdLCB0MworICAgIGFkZHAgMjQsIFBDCisgICAgbHNoaWZ0aSAzLCB0MworICAg
IGFkZHAgY2ZyLCB0MyAgIyB0MyBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9mIGNmcgorICAgIGxv
YWRwIEpTRnVuY3Rpb246Om1fc2NvcGVDaGFpblt0Ml0sIHQwCisgICAgc3RvcmVpIHQyLCBDYWxs
ZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSB0MCwgU2NvcGVDaGFpbiArIFBheWxv
YWRPZmZzZXRbdDNdCisgICAgbG9hZGkgOCAtIDI0W1BDXSwgdDIKKyAgICBzdG9yZWkgUEMsIEFy
Z3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlcCBjZnIsIENhbGxlckZyYW1l
W3QzXQorICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCisg
ICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10KKyAgICBzdG9yZWkgQ2Vs
bFRhZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10KKyAgICBtb3ZlIHQzLCBjZnIKKyAgICBj
YWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0KKyAgICBkaXNwYXRj
aEFmdGVyQ2FsbCgpCisKKy5vcENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBoZWxw
ZXIpCitlbmQKKworX2xsaW50X29wX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRv
Q2FsbChfbGxpbnRfaGVscGVyX2NhbGwpCisKKworX2xsaW50X29wX2NvbnN0cnVjdDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY29uc3RydWN0KQorCisK
K19sbGludF9vcF9jYWxsX3ZhcmFyZ3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHNsb3dQ
YXRoRm9yQ2FsbCg2LCBfbGxpbnRfaGVscGVyX2NhbGxfdmFyYXJncykKKworCitfbGxpbnRfb3Bf
Y2FsbF9ldmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAKKyAgICAjIEV2YWwgaXMgZXhl
Y3V0ZWQgaW4gb25lIG9mIHR3byBtb2RlczoKKyAgICAjCisgICAgIyAxKSBXZSBmaW5kIHRoYXQg
d2UncmUgcmVhbGx5IGludm9raW5nIGV2YWwoKSBpbiB3aGljaCBjYXNlIHRoZQorICAgICMgICAg
ZXhlY3V0aW9uIGlzIHBlcmZvbWVkIGVudGlyZWx5IGluc2lkZSB0aGUgaGVscGVyLCBhbmQgaXQK
KyAgICAjICAgIHJldHVybnMgdGhlIFBDIG9mIGEgZnVuY3Rpb24gdGhhdCBqdXN0IHJldHVybnMg
dGhlIHJldHVybiB2YWx1ZQorICAgICMgICAgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAj
CisgICAgIyAyKSBXZSBmaW5kIHRoYXQgd2UncmUgaW52b2tpbmcgc29tZXRoaW5nIGNhbGxlZCBl
dmFsKCkgdGhhdCBpcyBub3QKKyAgICAjICAgIHRoZSByZWFsIGV2YWwuIFRoZW4gdGhlIGhlbHBl
ciByZXR1cm5zIHRoZSBQQyBvZiB0aGUgdGhpbmcgdG8KKyAgICAjICAgIGNhbGwsIGFuZCB3ZSBj
YWxsIGl0LgorICAgICMKKyAgICAjIFRoaXMgYWxsb3dzIHVzIHRvIGhhbmRsZSB0d28gY2FzZXMs
IHdoaWNoIHdvdWxkIHJlcXVpcmUgYSB0b3RhbCBvZgorICAgICMgdXAgdG8gZm91ciBwaWVjZXMg
b2Ygc3RhdGUgdGhhdCBjYW5ub3QgYmUgZWFzaWx5IHBhY2tlZCBpbnRvIHR3bworICAgICMgcmVn
aXN0ZXJzIChDIGZ1bmN0aW9ucyBjYW4gcmV0dXJuIHVwIHRvIHR3byByZWdpc3RlcnMsIGVhc2ls
eSk6CisgICAgIworICAgICMgLSBUaGUgY2FsbCBmcmFtZSByZWdpc3Rlci4gVGhpcyBtYXkgb3Ig
bWF5IG5vdCBoYXZlIGJlZW4gbW9kaWZpZWQKKyAgICAjICAgYnkgdGhlIGhlbHBlciwgYnV0IHRo
ZSBjb252ZW50aW9uIGlzIHRoYXQgaXQgcmV0dXJucyBpdC4gSXQncyBub3QKKyAgICAjICAgdG90
YWxseSBjbGVhciBpZiB0aGF0J3MgbmVjZXNzYXJ5LCBzaW5jZSB0aGUgY2ZyIGlzIGNhbGxlZSBz
YXZlLgorICAgICMgICBCdXQgdGhhdCdzIG91ciBzdHlsZSBpbiB0aGlzIGhlcmUgaW50ZXJwcmV0
ZXIgc28gd2Ugc3RpY2sgd2l0aCBpdC4KKyAgICAjCisgICAgIyAtIEEgYml0IHRvIHNheSBpZiB0
aGUgaGVscGVyIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCB0aGUgZXZhbCBhbmQgaGFzCisgICAgIyAg
IHRoZSByZXR1cm4gdmFsdWUsIG9yIGRpZCBub3QgZXhlY3V0ZSB0aGUgZXZhbCBidXQgaGFzIGEg
UEMgZm9yIHVzCisgICAgIyAgIHRvIGNhbGwuCisgICAgIworICAgICMgLSBFaXRoZXI6CisgICAg
IyAgIC0gVGhlIEpTIHJldHVybiB2YWx1ZSAodHdvIHJlZ2lzdGVycyksIG9yCisgICAgIworICAg
ICMgICAtIFRoZSBQQyB0byBjYWxsLgorICAgICMKKyAgICAjIEl0IHR1cm5zIG91dCB0byBiZSBl
YXNpZXIgdG8ganVzdCBhbHdheXMgaGF2ZSB0aGlzIHJldHVybiB0aGUgY2ZyCisgICAgIyBhbmQg
YSBQQyB0byBjYWxsLCBhbmQgdGhhdCBQQyBtYXkgYmUgYSBkdW1teSB0aHVuayB0aGF0IGp1c3QK
KyAgICAjIHJldHVybnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAg
CisgICAgc2xvd1BhdGhGb3JDYWxsKDQsIF9sbGludF9oZWxwZXJfY2FsbF9ldmFsKQorCisKK19s
bGludF9nZW5lcmljX3JldHVybl9wb2ludDoKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKwor
X2xsaW50X29wX3RlYXJfb2ZmX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVk
CisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJP
ZmZBY3RpdmF0aW9uTm90Q3JlYXRlZAorLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkOgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQorLm9wVGVhck9m
ZkFjdGl2YXRpb25Ob3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Rl
YXJfb2ZmX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgc3ViaSAxLCB0MCAgICMgR2V0IHRoZSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0
ZXIKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVh
ck9mZkFyZ3VtZW50c05vdENyZWF0ZWQKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGVh
cl9vZmZfYXJndW1lbnRzKQorLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAgZGlz
cGF0Y2goMikKKworCittYWNybyBkb1JldHVybigpCisgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwg
dDIKKyAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKKyAgICByZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybih0MikKKyAgICByZXQKK2VuZAorCitfbGxpbnRfb3BfcmV0OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAg
IGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkK
KyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX2NhbGxfcHV0X3Jlc3VsdDoKKyAgICBsb2Fk
aSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNl
dFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQor
ICAgIHZhbHVlUHJvZmlsZSh0MSwgdDAsIHQzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkgIyBOZWVk
cyB0byBiZSBoZXJlIGJlY2F1c2UgaXQgd291bGQgY2xvYmJlciB0MSwgdDAKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9yZXRfb2JqZWN0X29yX3RoaXM6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10s
IHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGJpbmVxIHQx
LCBDZWxsVGFnLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlw
ZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVj
dAorICAgIGRvUmV0dXJuKCkKKworLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0OgorICAgIGxv
YWRpIDhbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAg
ICBkb1JldHVybigpCisKKworX2xsaW50X29wX21ldGhvZF9jaGVjazoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNoZWNrcyBhbmQgdXNlIG5vcm1hbCBnZXRf
YnlfaWQgb3B0aW1pemF0aW9ucy4KKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zdHJj
YXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9z
dHJjYXQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwg
dDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEs
IENlbGxUYWcsIC5vcFRvUHJpbWl0aXZlSXNJbW0KKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QwXSwgdDIKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6
bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm9wVG9QcmltaXRpdmVTbG93Q2FzZQorLm9wVG9Qcmlt
aXRpdmVJc0ltbToKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5v
cFRvUHJpbWl0aXZlU2xvd0Nhc2U6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RvX3By
aW1pdGl2ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9nZXRfcG5hbWVzOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X3BuYW1l
cykKKyAgICBkaXNwYXRjaCgwKSAjIFRoZSBoZWxwZXIgZWl0aGVyIGFkdmFuY2VzIHRoZSBQQyBv
ciBqdW1wcyB1cyB0byBzb21ld2hlcmUgZWxzZS4KKworCitfbGxpbnRfb3BfbmV4dF9wbmFtZToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRpIDE2
W1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MAorICAgIGJp
ZXEgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIC5vcE5leHRQbmFtZUVuZAorICAgIGxv
YWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0Mgor
ICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fanNTdHJpbmdzW3QyXSwgdDMKKyAg
ICBsb2FkaSBbdDMsIHQwLCA4XSwgdDMKKyAgICBhZGRpIDEsIHQwCisgICAgc3RvcmVpIHQwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVp
IENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MywgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10s
IHQxCisgICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0
dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0MAorICAgIGxvYWRwIFN0cnVjdHVyZUNo
YWluOjptX3ZlY3Rvclt0MF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BOZXh0UG5hbWVUYXJnZXQK
Ky5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcDoKKyAgICBiaWVxIFN0cnVjdHVyZTo6bV9w
cm90b3R5cGUgKyBUYWdPZmZzZXRbdDFdLCBOdWxsVGFnLCAub3BOZXh0UG5hbWVTbG93CisgICAg
bG9hZHAgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDFdLCB0MgorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MQorICAgIGJwbmVxIHQxLCBbdDBdLCAu
b3BOZXh0UG5hbWVTbG93CisgICAgYWRkcCA0LCB0MAorICAgIGJ0cG56IFt0MF0sIC5vcE5leHRQ
bmFtZUNoZWNrUHJvdG90eXBlTG9vcAorLm9wTmV4dFBuYW1lVGFyZ2V0OgorICAgIGRpc3BhdGNo
QnJhbmNoKDI0W1BDXSkKKworLm9wTmV4dFBuYW1lRW5kOgorICAgIGRpc3BhdGNoKDcpCisKKy5v
cE5leHRQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25leHRfcG5hbWUp
ICMgVGhpcyBlaXRoZXIga2VlcHMgdGhlIFBDIHdoZXJlIGl0IHdhcyAoY2F1c2luZyB1cyB0byBs
b29wKSBvciBzZXRzIGl0IHRvIHRhcmdldC4KKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9v
cF9wdXNoX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcHVzaF9zY29wZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3Bf
c2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9wb3Bfc2NvcGUpCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfcHVzaF9uZXdfc2Nv
cGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9w
dXNoX25ld19zY29wZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9jYXRjaDoKKyAg
ICAjIFRoaXMgaXMgd2hlcmUgd2UgZW5kIHVwIGZyb20gdGhlIEpJVCdzIHRocm93IHRyYW1wb2xp
bmUgKGJlY2F1c2UgdGhlCisgICAgIyBtYWNoaW5lIGNvZGUgcmV0dXJuIGFkZHJlc3Mgd2lsbCBi
ZSBzZXQgdG8gX2xsaW50X29wX2NhdGNoKSwgYW5kIGZyb20KKyAgICAjIHRoZSBpbnRlcnByZXRl
cidzIHRocm93IHRyYW1wb2xpbmUgKHNlZSBfbGxpbnRfdGhyb3dfdHJhbXBvbGluZSkuCisgICAg
IyBUaGUgSklUIHRocm93aW5nIHByb3RvY29sIGNhbGxzIGZvciB0aGUgY2ZyIHRvIGJlIGluIHQw
LiBUaGUgdGhyb3dpbmcKKyAgICAjIGNvZGUgbXVzdCBoYXZlIGtub3duIHRoYXQgd2Ugd2VyZSB0
aHJvd2luZyB0byB0aGUgaW50ZXJwcmV0ZXIsIGFuZCBoYXZlCisgICAgIyBzZXQgSlNHbG9iYWxE
YXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cuCisgICAgbW92ZSB0MCwgY2ZyCisgICAg
bG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZGkgSlNHbG9i
YWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3dbdDNdLCBQQworICAgIGxvYWRpIEpT
R2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10sIHQwCisgICAgbG9hZGkg
SlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdLCB0MQorICAgIHN0b3JlaSAw
LCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVp
IEVtcHR5VmFsdWVUYWcsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSAg
ICAgICAKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHRy
YWNlRXhlY3V0aW9uKCkgICMgVGhpcyBuZWVkcyB0byBiZSBoZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qg
d2FudCB0byBjbG9iYmVyIHQwLCB0MSwgdDIsIHQzIGFib3ZlLgorICAgIGRpc3BhdGNoKDIpCisK
KworX2xsaW50X29wX3Rocm93OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfdGhyb3cpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhy
b3dfcmVmZXJlbmNlX2Vycm9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQorICAgIGRpc3BhdGNoKDIpCisK
KworX2xsaW50X29wX2pzcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgYWRkaSAzICogNCwgUEMsIHQxCisgICAgc3RvcmVpIHQxLCBbY2ZyLCB0MCwgOF0K
KyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3JldDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZHAgW2NmciwgdDAsIDhd
LCBQQworICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX2RlYnVnOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVidWcpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfcHJvZmlsZV93aWxsX2NhbGw6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGJ0cHogSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3Nw
XSwgLm9wUHJvZmlsZVdpbGxDYWxsRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9w
cm9maWxlX3dpbGxfY2FsbCkKKy5vcFByb2ZpbGVXaWxsQ2FsbERvbmU6CisgICAgZGlzcGF0Y2go
MikKKworCitfbGxpbnRfb3BfcHJvZmlsZV9kaWRfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgYnRweiBKSVRTdGFja0ZyYW1lOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCAu
b3BQcm9maWxlRGlkQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmls
ZV9kaWRfY2FsbCkKKy5vcFByb2ZpbGVEaWRDYWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisK
K19sbGludF9vcF9lbmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9K
SVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
CisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5l
OgorICAgICMgV2hlbiB0aHJvd2luZyBmcm9tIHRoZSBpbnRlcnByZXRlciAoaS5lLiB0aHJvd2lu
ZyBmcm9tIExMSW50SGVscGVycyksIHNvCisgICAgIyB0aGUgdGhyb3cgdGFyZ2V0IGlzIG5vdCBu
ZWNlc3NhcmlseSBpbnRlcnByZXRlZCBjb2RlLCB3ZSBjb21lIHRvIGhlcmUuCisgICAgIyBUaGlz
IGVzc2VudGlhbGx5IGVtdWxhdGVzIHRoZSBKSVQncyB0aHJvd2luZyBwcm90b2NvbC4KKyAgICBs
b2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2Jh
bERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0
YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCitfbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxf
dHJhbXBvbGluZToKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpCisgICAg
bG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9i
YWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6
dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworIyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0
IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMuCisj
IFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0
aGVyIEpJVC4gV2UgYXNzZXJ0CisjIGFzIG11Y2guCisKK21hY3JvIG5vdFN1cHBvcnRlZCgpCisg
ICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgY3Jhc2goKQorICAgIGVsc2UKKyAgICAgICAg
IyBXZSBzaG91bGQgdXNlIHdoYXRldmVyIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBpbnN0cnVjdGlv
biBpcywganVzdCB0bworICAgICAgICAjIGVuc3VyZSB0aGF0IHRoZXJlIGlzIGEgZ2FwIGJldHdl
ZW4gaW5zdHJ1Y3Rpb24gbGFiZWxzLiBJZiBtdWx0aXBsZQorICAgICAgICAjIHNtYWxsZXN0IGlu
c3RydWN0aW9ucyBleGlzdCwgd2Ugc2hvdWxkIHBpY2sgdGhlIG9uZSB0aGF0IGlzIG1vc3QKKyAg
ICAgICAgIyBsaWtlbHkgcmVzdWx0IGluIGV4ZWN1dGlvbiBiZWluZyBoYWx0ZWQuIEN1cnJlbnRs
eSB0aGF0IGlzIHRoZSBicmVhaworICAgICAgICAjIGluc3RydWN0aW9uIG9uIGFsbCBhcmNoaXRl
Y3R1cmVzIHdlJ3JlIGludGVyZXN0ZWQgaW4uIChCcmVhayBpcyBpbnQzCisgICAgICAgICMgb24g
SW50ZWwsIHdoaWNoIGlzIDEgYnl0ZSwgYW5kIGJrcHQgb24gQVJNdjcsIHdoaWNoIGlzIDIgYnl0
ZXMuKQorICAgICAgICBicmVhaworICAgIGVuZAorZW5kCisKK19sbGludF9vcF9nZXRfYXJyYXlf
bGVuZ3RoOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY2hhaW46
CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jdXN0b21fY2hhaW46
CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jdXN0b21fcHJvdG86
CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jdXN0b21fc2VsZjoK
KyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dlbmVyaWM6CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJfY2hhaW46CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJfcHJvdG86CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJfc2VsZjoKKyAgICBu
b3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3Byb3RvOgorICAgIG5vdFN1cHBv
cnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQor
CitfbGxpbnRfb3BfZ2V0X3N0cmluZ19sZW5ndGg6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xs
aW50X29wX3B1dF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9v
cF9wdXRfYnlfaWRfcmVwbGFjZToKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb246CisgICAgbm90U3VwcG9ydGVkKCkKKworCisjIEluZGljYXRlIHRo
ZSBlbmQgb2YgTExJbnQuCitfbGxpbnRfZW5kOgorICAgIGNyYXNoKCkKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnBy
ZXRlci5oIgorCisjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgorCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMb3dMZXZlbEludGVycHJldGVyX2gKKyNk
ZWZpbmUgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworI2Rl
ZmluZSBMTElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29kZSwgbGVuZ3RoKSBleHRlcm4gIkMiIHZv
aWQgbGxpbnRfIyNvcGNvZGUoKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoTExJTlRfSU5TVFJV
Q1RJT05fREVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJVQ1RJT05fREVDTAorCitleHRlcm4gIkMi
IHZvaWQgbGxpbnRfYmVnaW4oKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9lbmQoKTsKK2V4dGVy
biAiQyIgdm9pZCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxp
bnRfZXZhbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxs
X2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2dlbmVyaWNfcmV0dXJu
X3BvaW50KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBv
bGluZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xp
bmUoKTsKKworI2VuZGlmIC8vIExvd0xldmVsSW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxOTMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2NsYXNzIFNw
ZWNpYWxSZWdpc3RlcgorICBkZWYgaW5pdGlhbGl6ZShuYW1lKQorICAgIEBuYW1lID0gbmFtZQor
ICBlbmQKKyAgCisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBAbmFtZQorICBlbmQKK2VuZAorCitB
Uk12N19EQVRBX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoImlwIikKK0FSTXY3X0FERFJfUkVH
ID0gU3BlY2lhbFJlZ2lzdGVyLm5ldygicjMiKQorCitkZWYgbW92ZUltbWVkaWF0ZSh2YWx1ZSwg
cmVnaXN0ZXIpCisgICMgQ3VycmVudGx5IHdlIG9ubHkgaGFuZGxlIHRoZSBzaW1wbGUgY2FzZXMs
IGFuZCBmYWxsIGJhY2sgdG8gbW92L21vdnQgZm9yIHRoZSBjb21wbGV4IG9uZXMuCisgIGlmIHZh
bHVlID49IDAgJiYgdmFsdWUgPCAyNTYKKyAgICAkYXNtLnB1dHMgIm1vdncgXCMje3ZhbHVlfSwg
I3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNpZiAofnZhbHVlKSA+PSAwICYmICh+dmFs
dWUpIDwgMjU2CisgICAgJGFzbS5wdXRzICJtdm53IFwjI3t+dmFsdWV9LCAje3JlZ2lzdGVyLmFy
bVY3T3BlcmFuZH0iCisgIGVsc2UKKyAgICAkYXNtLnB1dHMgIm1vdncgXCMje3ZhbHVlICYgMHhm
ZmZmfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAgIGlmICh2YWx1ZSAmIDB4ZmZmZjAw
MDApICE9IDAKKyAgICAgICRhc20ucHV0cyAibW92dCBcIyN7dmFsdWUgPj4gMTZ9LCAje3JlZ2lz
dGVyLmFybVY3T3BlcmFuZH0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVy
SUQKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEw
IiwgInIwIgorICAgICAgInIwIgorICAgIHdoZW4gInQxIiwgImExIiwgInIxIgorICAgICAgInIx
IgorICAgIHdoZW4gInQyIiwgImEyIgorICAgICAgInIyIgorICAgIHdoZW4gImEzIgorICAgICAg
InIzIgorICAgIHdoZW4gInQzIgorICAgICAgInI0IgorICAgIHdoZW4gInQ0IgorICAgICAgInI3
IgorICAgIHdoZW4gImNmciIKKyAgICAgICJyNSIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAg
IGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQK
KyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09w
ZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgeWllbGQKKyAg
ZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBj
YXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAiZnIiCisgICAgICAiZDAiCisgICAgd2hlbiAiZnIx
IiwKKyAgICAgICJkMSIKKyAgICB3aGVuICJmcjIiCisgICAgICAiZDIiCisgICAgd2hlbiAiZnIz
IgorICAgICAgImQzIgorICAgIHdoZW4gImZyNCIKKyAgICAgICJkNCIKKyAgICB3aGVuICJmcjUi
CisgICAgICAiZDUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAor
ICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVm
IGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAK
KyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkIHNlbGYKKyAgZW5kCitlbmQKKwor
Y2xhc3MgSW1tZWRpYXRlCisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICByYWlzZSAiSW52YWxpZCBp
bW1lZGlhdGUgI3t2YWx1ZX0iIGlmIHZhbHVlIDwgMCBvciB2YWx1ZSA+IDI1NQorICAgICIjJHt2
YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFu
ZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3
T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZCBz
ZWxmCisgIGVuZAorZW5kCisKK21vZHVsZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKyAgZGVmIGFy
bVY3TG9hZFN0b3JlV3JhcAorICAgIHNlbGYuYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVy
YW5kCisgICAgJGFzbS5wdXRzICJcdGxkciAje3NlbGYuYXJtVjdQb3NzaWJseU1lbW9yeU9wZXJh
bmR9LCAje0FSTXY3X0RBVEFfUkVHLmFybVY3T3BlcmFuZH0iCisgICAgeWllbGQgQVJNdjdfREFU
QV9SRUcKKyAgICAkYXNtLnB1dHMgIlx0c3RyICN7QVJNdjdfREFUQV9SRUcuYXJtVjdPcGVyYW5k
fSwgI3tzZWxmLmFybVY3UG9zc2libHlNZW1vcnlPcGVyYW5kfSIKKyAgZW5kCitlbmQKKworY2xh
c3MgQWRkcmVzcworICBpbmNsdWRlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworCisgIGRlZiBhcm1W
N1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgPCAtMHhm
ZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgbW92ZUltbWVkaWF0ZShvZmZzZXQudmFs
dWUsIEFSTXY3X0FERFJfUkVHKQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3Np
YmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIHx8IG9mZnNldC52
YWx1ZSA+IDB4ZmZmCisgICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje0FSTXY3X0FERFJf
UkVHLmFybVY3T3BlcmFuZH1dIgorICAgIGVsc2UKKyAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFu
ZH0sICN7b2Zmc2V0LmFybVY3T3BlcmFuZH1dIgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFz
cyBCYXNlSW5kZXgKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKworICBkZWYgYXJt
VjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAK
KyAgICAgIG1vdmVJbW1lZGlhdGUob2Zmc2V0LnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgICAg
ICRhc20ucHV0cyAiYWRkdyAje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH0sICN7YmFzZS5h
cm1WN09wZXJhbmR9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVt
b3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICAiWyN7QVJNdjdfQURE
Ul9SRUcuYXJtVjdPcGVyYW5kfSwgI3tpbmRleC5hcm1WN09wZXJhbmR9LCBsc2wgXCMje3NjYWxl
fV0iCisgICAgZWxzZQorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tpbmRleC5hcm1W
N09wZXJhbmR9LCBsc2wgXCMje3NjYWxlfV0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNz
IEFic29sdXRlQWRkcmVzcworICBpbmNsdWRlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworICAKKyAg
ZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIG1vdmVJbW1lZGlhdGUo
YWRkcmVzcy52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9z
c2libGVNZW1vcnlPcGVyYW5kCisgICAgIlsje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH1d
IgorICBlbmQKK2VuZAorCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L2FzbS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
c20ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
c20ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODMgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkK
KworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJu
YW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgIm9mZnNldHMiCity
ZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIK
KworY2xhc3MgQXNzZW1ibGVyCisgIGRlZiBpbml0aWFsaXplKG91dHApCisgICAgQG91dHAgPSBv
dXRwCisgICAgQHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBlbnRlckFzbQorICAgIEBv
dXRwLnB1dHMgImFzbSAoIgorICAgIEBzdGF0ZSA9IDphc20KKyAgZW5kCisgIAorICBkZWYgbGVh
dmVBc20KKyAgICBAb3V0cC5wdXRzICIpOyIKKyAgICBAc3RhdGUgPSA6Y3BwCisgIGVuZAorICAK
KyAgZGVmIGluQXNtCisgICAgZW50ZXJBc20KKyAgICB5aWVsZAorICAgIGxlYXZlQXNtCisgIGVu
ZAorICAKKyAgZGVmIHB1dHMobGluZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20K
KyAgICBAb3V0cC5wdXRzKChsaW5lICsgIlxuIikuaW5zcGVjdCkKKyAgZW5kCisgIAorICBkZWYg
Y29tbWVudCh0ZXh0KQorICAgIEBvdXRwLnB1dHMgIi8vICN7dGV4dH0iCisgIGVuZAorZW5kCisK
KyRhc20gPSBBc3NlbWJsZXIubmV3KCRzdGRvdXQpCisKK2FzbUZpbGUgPSBBUkdWLnNoaWZ0Citv
ZmZzZXRzRmlsZSA9IEFSR1Yuc2hpZnQKKworYXN0ID0gcGFyc2UobGV4KElPOjpyZWFkKGFzbUZp
bGUpKSkKK29mZnNldHNMaXN0LCBjb25maWdJbmRleCA9IG9mZnNldHNBbmRDb25maWd1cmF0aW9u
SW5kZXgob2Zmc2V0c0ZpbGUpCisKK2ZvclNldHRpbmdzKGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0
aW9ucyhhc3QpW2NvbmZpZ0luZGV4XSwgYXN0KSB7CisgIHwgY29uY3JldGVTZXR0aW5ncywgbG93
TGV2ZWxBU1QsIGJhY2tlbmQgfAorICBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGlu
Z3MpCisgIGxvd0xldmVsQVNUID0gbG93TGV2ZWxBU1QucmVzb2x2ZSgqYnVpbGRPZmZzZXRzTWFw
KGxvd0xldmVsQVNULCBvZmZzZXRzTGlzdCkpCisgIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNv
bmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kKSB7CisgICAgJGFzbS5pbkFzbSB7
CisgICAgICBsb3dMZXZlbEFTVC5sb3dlcihiYWNrZW5kKQorICAgIH0KKyAgfQorfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4MTcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEJhc2UgdXRpbGl0eSB0eXBlcyBmb3IgdGhl
IEFTVC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgVmFsaWQgbWV0aG9kcyBmb3IgTm9kZToKKyMKKyMg
bm9kZS5jaGlsZHJlbiAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGltbWVkaWF0ZSBjaGlsZHJlbi4K
KyMKKyMgbm9kZS5kZXNjZW5kZW50cyAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBzdHJpY3Qg
ZGVzY2VuZGFudHMgKGNoaWxkcmVuCisjICAgICBhbmQgY2hpbGRyZW4gb2YgY2hpbGRyZW4sIHRy
YW5zaXRpdmVseSkuCisjCisjIG5vZGUuZmxhdHRlbiAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRh
aW5pbmcgdGhlIHN0cmljdCBkZXNjZW5kYW50cyBhbmQKKyMgICAgIHRoZSBub2RlIGl0c2VsZi4K
KyMKKyMgbm9kZS5maWx0ZXIodHlwZSkgLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRo
b3NlIGVsZW1lbnRzIGluCisjICAgICBub2RlLmZsYXR0ZW4gdGhhdCBhcmUgb2YgdGhlIGdpdmVu
IHR5cGUgKGlzX2E/IHR5cGUgcmV0dXJucyB0cnVlKS4KKyMKKyMgbm9kZS5tYXBDaGlsZHJlbnt8
dnwgLi4ufSAtPiBSZXR1cm5zIGEgbmV3IG5vZGUgd2l0aCBhbGwgY2hpbGRyZW4KKyMgICAgIHJl
cGxhY2VkIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gYmxvY2suCisjCisjIEV4YW1wbGVzOgorIwor
IyBub2RlLmZpbHRlcihTZXR0aW5nKS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzZXR0aW5n
cyB0aGF0IHRoZSBBU1QncworIyAgICAgSWZUaGVuRWxzZSBibG9ja3MgZGVwZW5kIG9uLgorIwor
IyBub2RlLmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHN0
cnVjdHVyZSBvZmZzZXRzCisjICAgICB0aGF0IHRoZSBBU1QgZGVwZW5kcyBvbi4KKworY2xhc3Mg
Tm9kZQorICBhdHRyX3JlYWRlciA6Y29kZU9yaWdpbgorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbikKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgZW5kCisgIAorICBkZWYg
Y29kZU9yaWdpblN0cmluZworICAgICJsaW5lIG51bWJlciAje0Bjb2RlT3JpZ2lufSIKKyAgZW5k
CisgIAorICBkZWYgZGVzY2VuZGFudHMKKyAgICBjaGlsZHJlbi5jb2xsZWN0e3x2fCB2LmZsYXR0
ZW59LmZsYXR0ZW4KKyAgZW5kCisgIAorICBkZWYgZmxhdHRlbgorICAgIFtzZWxmXSArIGRlc2Nl
bmRhbnRzCisgIGVuZAorICAKKyAgZGVmIGZpbHRlcih0eXBlKQorICAgIGZsYXR0ZW4uc2VsZWN0
e3x2fCB2LmlzX2E/IHR5cGV9CisgIGVuZAorZW5kCisKK2NsYXNzIE5vQ2hpbGRyZW4gPCBOb2Rl
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbgorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0S2V5CisgIGF0
dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUoc3RydWN0LCBm
aWVsZCkKKyAgICBAc3RydWN0ID0gc3RydWN0CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5kCisg
IAorICBkZWYgaGFzaAorICAgIEBzdHJ1Y3QuaGFzaCArIEBmaWVsZC5oYXNoICogMworICBlbmQK
KyAgCisgIGRlZiBlcWw/KG90aGVyKQorICAgIEBzdHJ1Y3QgPT0gb3RoZXIuc3RydWN0IGFuZCBA
ZmllbGQgPT0gb3RoZXIuZmllbGQKKyAgZW5kCitlbmQKKyAgICAKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIEFTVCBub2Rlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisKK2NsYXNzIFN0cnVjdE9mZnNldCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFk
ZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1
Y3QsIGZpZWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAor
ICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRl
ZiBzZWxmLmZvckZpZWxkKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAga2V5ID0gU3Ry
dWN0T2Zmc2V0S2V5Lm5ldyhzdHJ1Y3QsIGZpZWxkKQorICAgIAorICAgIHVubGVzcyBAQG1hcHBp
bmdba2V5XQorICAgICAgQEBtYXBwaW5nW2tleV0gPSBTdHJ1Y3RPZmZzZXQubmV3KGNvZGVPcmln
aW4sIHN0cnVjdCwgZmllbGQpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW2tleV0KKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIje3N0cnVjdH06OiN7ZmllbGR9IgorICBlbmQKKyAgCisgIGRl
ZiA8PT4ob3RoZXIpCisgICAgaWYgQHN0cnVjdCAhPSBvdGhlci5zdHJ1Y3QKKyAgICAgIHJldHVy
biBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgICBlbmQKKyAgICBAZmllbGQgPD0+IG90aGVy
LmZpZWxkCisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZiA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9y
ZWFkZXIgOnN0cnVjdAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0KQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICBlbmQKKyAgCisg
IEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIHN0cnVj
dCkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW3N0cnVjdF0KKyAgICAgIEBAbWFwcGluZ1tzdHJ1Y3Rd
ID0gU2l6ZW9mLm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgZW5kCisgICAgQEBtYXBwaW5n
W3N0cnVjdF0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJzaXplb2YgI3tAc3RydWN0fSIK
KyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAgIEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVj
dAorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVh
ZGVyIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFsdWUpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgIiN7dmFsdWV9IgorICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBvdGhl
ci5pc19hPyBJbW1lZGlhdGUgYW5kIG90aGVyLnZhbHVlID09IEB2YWx1ZQorICBlbmQKK2VuZAor
CitjbGFzcyBBZGRJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAg
ZGVmIG1hcENoaWxkcmVuCisgICAgQWRkSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxk
IEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7
bGVmdC5kdW1wfSArICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1l
ZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNo
aWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
CisgICAgU3ViSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxk
IEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAtICN7
cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzIDwgTm9kZQor
ICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVm
dAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0Bs
ZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTXVsSW1tZWRp
YXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAqICN7cmlnaHQuZHVtcH0pIgor
ICBlbmQKK2VuZAorCitjbGFzcyBOZWdJbW1lZGlhdGUgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpj
aGlsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAY2hpbGQgPSBjaGlsZAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJl
bgorICAgIFtAY2hpbGRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTmVnSW1t
ZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICIoLSN7QGNoaWxkLmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0
ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9
IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFt
ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBA
bWFwcGluZ1tuYW1lXSA9IFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5k
CisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisg
IGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFk
ZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcg
PSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVz
cyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IEZQUmVnaXN0ZXJJRC5u
ZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUg
PCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1l
CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBp
bmdbbmFtZV0gPSBWYXJpYWJsZS5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBA
QG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitl
bmQKKworY2xhc3MgQWRkcmVzcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2UsIDpvZmZzZXQK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGJhc2UsIG9mZnNldCkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBiYXNlID0gYmFzZQorICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAg
ZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBvZmZzZXRdCisgIGVuZAorICAK
KyAgZGVmIG1hcENoaWxkcmVuCisgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBi
YXNlKSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zm
c2V0LmR1bXB9WyN7YmFzZS5kdW1wfV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleCA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2UsIDppbmRleCwgOnNjYWxlLCA6b2Zmc2V0CisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBiYXNlID0gYmFzZQorICAgIEBpbmRleCA9IGlu
ZGV4CisgICAgQHNjYWxlID0gc2NhbGUKKyAgICByYWlzZSB1bmxlc3MgWzEsIDIsIDQsIDhdLm1l
bWJlcj8gQHNjYWxlCisgICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIFtAYmFzZSwgQGluZGV4LCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlp
ZWxkIEBpbmRleCksIEBzY2FsZSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfSwgI3tpbmRleC5kdW1wfSwgI3tz
Y2FsZX1dIgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MgPCBOb0NoaWxkcmVu
CisgIGF0dHJfcmVhZGVyIDphZGRyZXNzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBhZGRyZXNzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGFkZHJlc3MgPSBhZGRyZXNz
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3thZGRyZXNzLmR1bXB9W10iCisgIGVuZAor
ZW5kCisKK2NsYXNzIEluc3RydWN0aW9uIDwgTm9kZQorICBhdHRyX3JlYWRlciA6b3Bjb2RlLCA6
b3BlcmFuZHMKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG9wY29kZSwgb3BlcmFu
ZHMpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAb3Bjb2RlID0gb3Bjb2RlCisgICAgQG9w
ZXJhbmRzID0gb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBvcGVyYW5k
cworICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBJbnN0cnVjdGlvbi5u
ZXcoY29kZU9yaWdpbiwgQG9wY29kZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICAiXHQiICsgb3Bjb2RlLnRvX3MgKyAiICIgKyBvcGVyYW5kcy5jb2xs
ZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikKKyAgZW5kCitlbmQKKworY2xhc3MgRXJyb3IgPCBO
b0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdGVycm9yIgorICBlbmQKK2VuZAor
CitjbGFzcyBDb25zdERlY2wgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDp2YXJpYWJsZSwgOnZhbHVl
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAdmFyaWFibGUgPSB2YXJpYWJsZQorICAgIEB2YWx1ZSA9
IHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0B2YXJpYWJsZSwgQHZhbHVl
XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIENvbnN0RGVjbC5uZXcoY29kZU9y
aWdpbiwgKHlpZWxkIEB2YXJpYWJsZSksICh5aWVsZCBAdmFsdWUpKQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgImNvbnN0ICN7QHZhcmlhYmxlLmR1bXB9ID0gI3tAdmFsdWUuZHVtcH0iCisg
IGVuZAorZW5kCisKKyRsYWJlbE1hcHBpbmcgPSB7fQorCitjbGFzcyBMYWJlbCA8IE5vQ2hpbGRy
ZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisg
IAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgaWYgJGxhYmVsTWFw
cGluZ1tuYW1lXQorICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9IiB1
bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMYWJlbAorICAgIGVsc2UKKyAgICAgICRs
YWJlbE1hcHBpbmdbbmFtZV0gPSBMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQK
KyAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tu
YW1lfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0
dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorCisgIEBAdW5p
cXVlTmFtZUNvdW50ZXIgPSAwCisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5h
bWUpCisgICAgaWYgJGxhYmVsTWFwcGluZ1tuYW1lXQorICAgICAgcmFpc2UgIkxhYmVsIG5hbWUg
Y29sbGlzaW9uOiAje25hbWV9IiB1bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMb2Nh
bExhYmVsCisgICAgZWxzZQorICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExvY2FsTGFiZWwu
bmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQor
ICBlbmQKKyAgCisgIGRlZiBzZWxmLnVuaXF1ZShjb21tZW50KQorICAgIG5ld05hbWUgPSAiXyN7
Y29tbWVudH0iCisgICAgaWYgJGxhYmVsTWFwcGluZ1tuZXdOYW1lXQorICAgICAgd2hpbGUgJGxh
YmVsTWFwcGluZ1tuZXdOYW1lID0gIl8je0BAdW5pcXVlTmFtZUNvdW50ZXJ9XyN7Y29tbWVudH0i
XQorICAgICAgICBAQHVuaXF1ZU5hbWVDb3VudGVyICs9IDEKKyAgICAgIGVuZAorICAgIGVuZAor
ICAgIGZvck5hbWUobmlsLCBuZXdOYW1lKQorICBlbmQKKyAgCisgIGRlZiBjbGVhbk5hbWUKKyAg
ICBpZiBuYW1lID1+IC9eXC4vCisgICAgICAiXyIgKyBuYW1lWzEuLi0xXQorICAgIGVsc2UKKyAg
ICAgIG5hbWUKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIK
KyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVy
IDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTGFi
ZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisg
IGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFi
ZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlIDwgTm9DaGls
ZHJlbgorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAg
ZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbgorICAgIExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVs
ZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1
ZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIGxpc3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGlzdCA9IGxpc3QK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBsaXN0CisgIGVuZAorICAKKyAgZGVmIG1h
cENoaWxkcmVuKCZwcm9jKQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBAbGlzdC5tYXAo
JnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0e3x2fCB2LmR1
bXB9LmpvaW4oIlxuIikKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hpbGRyZW4KKyAg
ZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9
IFRydWUubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5k
CisgIAorICBkZWYgdmFsdWUKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
dHJ1ZSIKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0
aWFsaXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBGYWxzZS5u
ZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisg
IGRlZiB2YWx1ZQorICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiZmFsc2Ui
CisgIGVuZAorZW5kCisKK2NsYXNzIFRydWVDbGFzcworICBkZWYgYXNOb2RlCisgICAgVHJ1ZS5p
bnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZUNsYXNzCisgIGRlZiBhc05vZGUKKyAg
ICBGYWxzZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nIDwgTm9DaGlsZHJl
bgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAg
CisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5h
bWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0g
U2V0dGluZy5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFt
ZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3Mg
QW5kIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxk
cmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisg
ICAgQW5kLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3JpZ2h0LmR1bXB9
KSIKKyAgZW5kCitlbmQKKworY2xhc3MgT3IgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6
cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisg
IAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0
KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5k
dW1wfSBvciAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTm90IDwgTm9kZQor
ICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNo
aWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisg
IAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBOb3QubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5k
CisKK2NsYXNzIFNraXAgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4p
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdHNr
aXAiCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UgPCBOb2RlCisgIGF0dHJfcmVhZGVy
IDpwcmVkaWNhdGUsIDp0aGVuQ2FzZQorICBhdHRyX2FjY2Vzc29yIDplbHNlQ2FzZQorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZSkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBwcmVkaWNhdGUgPSBwcmVkaWNhdGUKKyAgICBAdGhlbkNhc2Ug
PSB0aGVuQ2FzZQorICAgIEBlbHNlQ2FzZSA9IFNraXAubmV3KGNvZGVPcmlnaW4pCisgIGVuZAor
ICAKKyAgZGVmIGNoaWxkcmVuCisgICAgaWYgQGVsc2VDYXNlCisgICAgICBbQHByZWRpY2F0ZSwg
QHRoZW5DYXNlLCBAZWxzZUNhc2VdCisgICAgZWxzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVu
Q2FzZV0KKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBJZlRoZW5F
bHNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHByZWRpY2F0ZSksICh5aWVsZCBAdGhlbkNhc2Up
LCAoeWllbGQgQGVsc2VDYXNlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJpZiAje3By
ZWRpY2F0ZS5kdW1wfVxuIiArIHRoZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsgZWxzZUNhc2Uu
ZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8gPCBOb2RlCisgIGF0dHJf
cmVhZGVyIDpuYW1lLCA6dmFyaWFibGVzLCA6Ym9keQorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQG5hbWUgPSBuYW1lCisgICAgQHZhcmlhYmxlcyA9IHZhcmlhYmxlcworICAgIEBib2R5ID0g
Ym9keQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEB2YXJpYWJsZXMgKyBbQGJvZHld
CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTWFjcm8ubmV3KGNvZGVPcmlnaW4s
IEBuYW1lLCBAdmFyaWFibGVzLm1hcHt8dnwgeWllbGQgdn0sICh5aWVsZCBAYm9keSkpCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFibGVzLmNvbGxl
Y3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpXG4iICsgYm9keS5kdW1wICsgIlxuZW5kIgor
ICBlbmQKK2VuZAorCitjbGFzcyBNYWNyb0NhbGwgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1l
LCA6b3BlcmFuZHMKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJh
bmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQG9wZXJh
bmRzID0gb3BlcmFuZHMKKyAgICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAgQG9wZXJhbmRz
LmVhY2h7fHZ8IHJhaXNlIHVubGVzcyB2fQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IEBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBNYWNy
b0NhbGwubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgICJcdCN7bmFtZX0oIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8
IHYuZHVtcH0uam9pbigiLCAiKSArICIpIgorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDgwIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCity
ZXF1aXJlICJhc3QiCityZXF1aXJlICJ4ODYiCisKK0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIs
CisgICAiQVJNdjciCisgIF0KKworV09SS0lOR19CQUNLRU5EUyA9CisgIFsKKyAgICJYODYiCisg
IF0KKworQkFDS0VORF9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCcgKyBCQUNLRU5EUy5qb2lu
KCcpfCgnKSArICcpXFxaJykKKworY2xhc3MgTm9kZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBz
ZW5kKCJsb3dlciIgKyBuYW1lKQorICBlbmQKK2VuZAorCisjIE92ZXJyaWRlcyBmb3IgbG93ZXIo
KSBmb3IgdGhvc2Ugbm9kZXMgdGhhdCBhcmUgYmFja2VuZC1hZ25vc3RpYworCitkZWYgc2FuaXRp
emVMYWJlbE5hbWUobmFtZSkKKyAgIyBTb21lIHBsYXRmb3JtcyBkb24ndCB3YW50IHRoZSBsZWFk
aW5nICJfIi4gSWYgd2UgZXZlciB3YW50IHRvIGRvIHNvbWV0aGluZworICAjIGFib3V0IHRoYXQs
IGl0IHdvdWxkIGJlIGhlcmUuCisgIG5hbWUKK2VuZAorCitjbGFzcyBMYWJlbAorICBkZWYgbG93
ZXIobmFtZSkKKyAgICAkYXNtLnB1dHMgIi5nbG9ibCAje3Nhbml0aXplTGFiZWxOYW1lKHNlbGYu
bmFtZSl9IgorICAgICRhc20ucHV0cyAiI3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxmLm5hbWUpfToi
CisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAg
JGFzbS5wdXRzICJMX29mZmxpbmVhc21fI3tzZWxmLm5hbWVbMS4uLTFdfToiCisgIGVuZAorZW5k
CisKK2NsYXNzIFNraXAKKyAgZGVmIGxvd2VyKG5hbWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFNl
cXVlbmNlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBub2Rl
IHwKKyAgICAgIG5vZGUubG93ZXIobmFtZSkKKyAgICB9CisgIGVuZAorZW5kCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3Iu
cmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJh
dGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjUgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCity
ZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCity
ZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworZGVmIGVtaXRNYWdpY051
bWJlcgorICBPRkZTRVRfTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICB8IG51bWJlciB8CisgICAg
cHV0cyAiI3tudW1iZXJ9LCIKKyAgfQorZW5kCisKK29yaWdpbmFsQVNUID0gcGFyc2UobGV4KCRz
dGRpbi5yZWFkKSkKKworZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKG9yaWdpbmFsQVNUKSB7
CisgIHwgc2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfAorICBvZmZzZXRzTGlzdCA9IGFz
dC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKKyAgc2l6ZXNMaXN0ID0gYXN0LmZpbHRl
cihTaXplb2YpLnVuaXEuc29ydAorICAKKyAgbGVuZ3RoID0gKE9GRlNFVF9NQUdJQ19OVU1CRVJT
LnNpemUgKyAxKSAqICgxICsgb2Zmc2V0c0xpc3Quc2l6ZSArIHNpemVzTGlzdC5zaXplKQorICAK
KyAgcHV0cyAic3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0g
PSB7IgorICBlbWl0TWFnaWNOdW1iZXIKKyAgcHV0cyAiI3tpbmRleH0sIgorICBvZmZzZXRzTGlz
dC5lYWNoIHsKKyAgICB8IG9mZnNldCB8CisgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgcHV0cyAi
T0ZGTElORV9BU01fT0ZGU0VUT0YoI3tvZmZzZXQuc3RydWN0fSwgI3tvZmZzZXQuZmllbGR9KSwi
CisgIH0KKyAgc2l6ZXNMaXN0LmVhY2ggeworICAgIHwgb2Zmc2V0IHwKKyAgICBlbWl0TWFnaWNO
dW1iZXIKKyAgICBwdXRzICJzaXplb2YoI3tvZmZzZXQuc3RydWN0fSksIgorICB9CisgIHB1dHMg
In07IgorfQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVj
dGlvbnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4OCBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworTUFDUk9fSU5TVFJVQ1RJT05T
ID0KKyAgWworICAgImFkZGkiLAorICAgImFuZGkiLAorICAgImxzaGlmdGkiLAorICAgIm11bGki
LAorICAgIm5lZ2kiLAorICAgIm5vdGkiLAorICAgIm9yaSIsCisgICAicnNoaWZ0aSIsCisgICAi
dXJzaGlmdGkiLAorICAgInN1YmkiLAorICAgInhvcmkiLAorICAgImxvYWRpIiwKKyAgICJsb2Fk
YiIsCisgICAibG9hZGgiLAorICAgInN0b3JlaSIsCisgICAic3RvcmViIiwKKyAgICJsb2FkZCIs
CisgICAibW92ZWQiLAorICAgInN0b3JlZCIsCisgICAiYWRkZCIsCisgICAiZGl2ZCIsCisgICAi
c3ViZCIsCisgICAibXVsZCIsCisgICAic3FydGQiLAorICAgImNpMmQiLAorICAgImZpaTJkIiwg
IyB1c2FnZTogZmlpMmQgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdp
dGggbW9zdCBzaWduaWZpY2FudCBiaXRzPiwgPGZwcj4KKyAgICJmZDJpaSIsICMgdXNhZ2U6IGZk
MmlpIDxmcHI+LCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBt
b3N0IHNpZ25pZmljYW50IGJpdHM+CisgICAiYmRlcSIsCisgICAiYmRuZXEiLAorICAgImJkZ3Qi
LAorICAgImJkZ3RlcSIsCisgICAiYmRsdCIsCisgICAiYmRsdGVxIiwKKyAgICJiZGVxdW4iLAor
ICAgImJkbmVxdW4iLAorICAgImJkZ3R1biIsCisgICAiYmRndGVxdW4iLAorICAgImJkbHR1biIs
CisgICAiYmRsdGVxdW4iLAorICAgImJ0ZDJpIiwKKyAgICJ0ZDJpIiwKKyAgICJiY2QyaSIsCisg
ICAibW92ZHoiLAorICAgInBvcCIsCisgICAicHVzaCIsCisgICAibW92ZSIsCisgICAic3hpMnAi
LAorICAgInp4aTJwIiwKKyAgICJub3AiLAorICAgImJpZXEiLAorICAgImJpbmVxIiwKKyAgICJi
aWEiLAorICAgImJpYWVxIiwKKyAgICJiaWIiLAorICAgImJpYmVxIiwKKyAgICJiaWd0IiwKKyAg
ICJiaWd0ZXEiLAorICAgImJpbHQiLAorICAgImJpbHRlcSIsCisgICAiYmJlcSIsCisgICAiYmJu
ZXEiLAorICAgImJiYSIsCisgICAiYmJhZXEiLAorICAgImJiYiIsCisgICAiYmJiZXEiLAorICAg
ImJiZ3QiLAorICAgImJiZ3RlcSIsCisgICAiYmJsdCIsCisgICAiYmJsdGVxIiwKKyAgICJidGlv
IiwKKyAgICJidGlzIiwKKyAgICJidGl6IiwKKyAgICJidGlueiIsCisgICAiYnRibyIsCisgICAi
YnRicyIsCisgICAiYnRieiIsCisgICAiYnRibnoiLAorICAgImptcCIsCisgICAiYmFkZGlvIiwK
KyAgICJiYWRkaXMiLAorICAgImJhZGRpeiIsCisgICAiYmFkZGlueiIsCisgICAiYnN1YmlvIiwK
KyAgICJic3ViaXMiLAorICAgImJzdWJpeiIsCisgICAiYnN1YmlueiIsCisgICAiYm11bGlvIiwK
KyAgICJibXVsaXMiLAorICAgImJtdWxpeiIsCisgICAiYm11bGlueiIsCisgICAiYm9yaW8iLAor
ICAgImJvcmlzIiwKKyAgICJib3JpeiIsCisgICAiYm9yaW56IiwKKyAgICJicmVhayIsCisgICAi
Y2FsbCIsCisgICAicmV0IiwKKyAgICJjaWVxIiwKKyAgICJjaW5lcSIsCisgICAiY2lhIiwKKyAg
ICJjaWFlcSIsCisgICAiY2liIiwKKyAgICJjaWJlcSIsCisgICAiY2lndCIsCisgICAiY2lndGVx
IiwKKyAgICJjaWx0IiwKKyAgICJjaWx0ZXEiLAorICAgInRpbyIsCisgICAidGlzIiwKKyAgICJ0
aXoiLAorICAgInRpbnoiLAorICAgInRibyIsCisgICAidGJzIiwKKyAgICJ0YnoiLAorICAgInRi
bnoiLAorICAgInBlZWsiLAorICAgInBva2UiLAorICAgImJwZXEiLAorICAgImJwbmVxIiwKKyAg
ICJicGEiLAorICAgImJwYWVxIiwKKyAgICJicGIiLAorICAgImJwYmVxIiwKKyAgICJicGd0IiwK
KyAgICJicGd0ZXEiLAorICAgImJwbHQiLAorICAgImJwbHRlcSIsCisgICAiYWRkcCIsCisgICAi
YW5kcCIsCisgICAib3JwIiwKKyAgICJzdWJwIiwKKyAgICJ4b3JwIiwKKyAgICJsb2FkcCIsCisg
ICAiY3BlcSIsCisgICAiY3BuZXEiLAorICAgImNwYSIsCisgICAiY3BhZXEiLAorICAgImNwYiIs
CisgICAiY3BiZXEiLAorICAgImNwZ3QiLAorICAgImNwZ3RlcSIsCisgICAiY3BsdCIsCisgICAi
Y3BsdGVxIiwKKyAgICJzdG9yZXAiLAorICAgImJ0cG8iLAorICAgImJ0cHMiLAorICAgImJ0cHoi
LAorICAgImJ0cG56IiwKKyAgICJiYWRkcG8iLAorICAgImJhZGRwcyIsCisgICAiYmFkZHB6IiwK
KyAgICJiYWRkcG56IgorICBdCisKK1g4Nl9JTlNUUlVDVElPTlMgPQorICBbCisgICAiY2RxaSIs
CisgICAiaWRpdmkiCisgIF0KKworSU5TVFJVQ1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05TICsg
WDg2X0lOU1RSVUNUSU9OUworCitJTlNUUlVDVElPTl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxB
KCgnICsgSU5TVFJVQ1RJT05TLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRy
YWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01B
R0lDX05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTU2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CityZXF1aXJlICJhc3QiCityZXF1aXJlICJvZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cyIKKwor
T0ZGU0VUX01BR0lDX05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBvZmZzZXRzTGlzdChhc3QpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIHNpemVzTGlz
dChhc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyBSZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCBz
aXplcyB1c2VkIGJ5IHRoZSBBU1QuICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworCitkZWYgb2Zmc2V0c0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFN0
cnVjdE9mZnNldCkudW5pcS5zb3J0CitlbmQKKworZGVmIHNpemVzTGlzdChhc3QpCisgIGFzdC5m
aWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGFzdCwgZmlsZSkgLT4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICBbb2Zmc2V0cywgaW5kZXhdICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBQYXJzZXMgdGhlIG9mZnNldHMgZnJvbSBhIGZpbGUgYW5kIHJldHVybnMgYSBsaXN0IG9m
IG9mZnNldHMgYW5kIHRoZSAjCisjIGluZGV4IG9mIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgaXMg
dmFsaWQgaW4gdGhpcyBidWlsZCB0YXJnZXQuICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisKK2RlZiBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUpCisg
IGluZGV4ID0gbmlsCisgIG9mZnNldHMgPSBbXQorICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBu
aWwKKyAgCisgIGRlZiByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICBieXRlcyA9IFtdCisg
ICAgNC50aW1lcyB7CisgICAgICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQorICAgIH0KKyAgICAKKyAg
ICBpZiBlbmRpYW5uZXNzID09IDpsaXR0bGUKKyAgICAgICMgTGl0dGxlIGVuZGlhbgorICAgICAg
KGJ5dGVzWzBdIDw8IDAgfAorICAgICAgIGJ5dGVzWzFdIDw8IDggfAorICAgICAgIGJ5dGVzWzJd
IDw8IDE2IHwKKyAgICAgICBieXRlc1szXSA8PCAyNCkKKyAgICBlbHNlCisgICAgICAjIEJpZyBl
bmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAyNCB8CisgICAgICAgYnl0ZXNbMV0gPDwgMTYgfAor
ICAgICAgIGJ5dGVzWzJdIDw8IDggfAorICAgICAgIGJ5dGVzWzNdIDw8IDApCisgICAgZW5kCisg
IGVuZAorICAKKyAgWzpsaXR0bGUsIDpiaWddLmVhY2ggeworICAgIHwgZW5kaWFubmVzcyB8Cisg
ICAgbWFnaWNCeXRlcyA9IFtdCisgICAgTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICAgIHwgbnVt
YmVyIHwKKyAgICAgIGN1cnJlbnRCeXRlcyA9IFtdCisgICAgICA0LnRpbWVzIHsKKyAgICAgICAg
Y3VycmVudEJ5dGVzIDw8IChudW1iZXIgJiAweGZmKQorICAgICAgICBudW1iZXIgPj49IDgKKyAg
ICAgIH0KKyAgICAgIGlmIGVuZGlhbm5lc3MgPT0gOmJpZworICAgICAgICBjdXJyZW50Qnl0ZXMu
cmV2ZXJzZSEKKyAgICAgIGVuZAorICAgICAgbWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0ZXMKKyAg
ICB9CisgICAgCisgICAgRmlsZS5vcGVuKGZpbGUsICJyIikgeworICAgICAgfCBpbnAgfAorICAg
ICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgIGxvb3AgeworICAgICAgICBieXRlID0gaW5wLmdl
dGJ5dGUKKyAgICAgICAgYnJlYWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgaWYgYnl0ZSA9PSBtYWdp
Y0J5dGVzW3doZXJlSW5NYXJrZXJdCisgICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisgICAg
ICAgICAgaWYgd2hlcmVJbk1hcmtlciA9PSBtYWdpY0J5dGVzLnNpemUKKyAgICAgICAgICAgICMg
V2UgaGF2ZSBhIG1hdGNoISBJZiB3ZSBoYXZlIG5vdCB5ZXQgcmVhZCB0aGUgZW5kaWFubmVzcyBt
YXJrZXIgYW5kIGluZGV4LAorICAgICAgICAgICAgIyB0aGVuIHJlYWQgdGhvc2Ugbm93OyBvdGhl
cndpc2UgcmVhZCBhbiBvZmZzZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIG5vdCBp
bmRleAorICAgICAgICAgICAgICBpbmRleCA9IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBvZmZzZXRzIDw8IHJlYWRJbnQoZW5kaWFubmVz
cywgaW5wKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdoZXJl
SW5NYXJrZXIgPSAwCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICB3aGVy
ZUluTWFya2VyID0gMAorICAgICAgICBlbmQKKyAgICAgIH0KKyAgICB9CisgICAgCisgICAgYnJl
YWsgaWYgaW5kZXgKKyAgfQorICAKKyAgcmFpc2UgdW5sZXNzIGluZGV4CisgIAorICBbb2Zmc2V0
cywgaW5kZXhdCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgYnVp
bGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpIC0+IFtvZmZzZXRzLCBzaXplc10gICAgICAg
ICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEJ1aWxkcyBhIG1hcHBpbmcgYmV0d2VlbiBT
dHJ1Y3RPZmZzZXQgbm9kZXMgYW5kIHRoZWlyIHZhbHVlcy4gICAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRz
TGlzdCkKKyAgb2Zmc2V0c01hcCA9IHt9CisgIHNpemVzTWFwID0ge30KKyAgYXN0T2Zmc2V0c0xp
c3QgPSBvZmZzZXRzTGlzdChhc3QpCisgIGFzdFNpemVzTGlzdCA9IHNpemVzTGlzdChhc3QpCisg
IHJhaXNlIHVubGVzcyBhc3RPZmZzZXRzTGlzdC5zaXplICsgYXN0U2l6ZXNMaXN0LnNpemUgPT0g
b2Zmc2V0c0xpc3Quc2l6ZQorICBvZmZzZXRzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7Cisg
ICAgfCBzdHJ1Y3RPZmZzZXQsIGluZGV4IHwKKyAgICBvZmZzZXRzTWFwW3N0cnVjdE9mZnNldF0g
PSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIHNpemVzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRl
eCB7CisgICAgfCBzaXplb2YsIGluZGV4IHwKKyAgICBzaXplc01hcFtzaXplb2ZdID0gb2Zmc2V0
c0xpc3Quc2hpZnQKKyAgfQorICBbb2Zmc2V0c01hcCwgc2l6ZXNNYXBdCitlbmQKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1OTEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImluc3RydWN0aW9ucyIKK3JlcXVpcmUgInJlZ2lz
dGVycyIKKworY2xhc3MgVG9rZW4KKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4sIDpzdHJpbmcK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cmluZykKKyAgICBAY29kZU9yaWdp
biA9IGNvZGVPcmlnaW4KKyAgICBAc3RyaW5nID0gc3RyaW5nCisgIGVuZAorICAKKyAgZGVmID09
KG90aGVyKQorICAgIGlmIG90aGVyLmlzX2E/IFRva2VuCisgICAgICBAc3RyaW5nID09IG90aGVy
LnN0cmluZworICAgIGVsc2UKKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIKKyAgICBlbmQKKyAgZW5k
CisgIAorICBkZWYgPX4ob3RoZXIpCisgICAgQHN0cmluZyA9fiBvdGhlcgorICBlbmQKKyAgCisg
IGRlZiB0b19zCisgICAgIiN7QHN0cmluZy5pbnNwZWN0fSBhdCBsaW5lICN7Y29kZU9yaWdpbn0i
CisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgY29tbWVudC5l
bXB0eT8KKyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfSIKKyAgICBlbHNlCisgICAg
ICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc306ICN7Y29tbWVudFswXX0iCisgICAgZW5kCisg
IGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBsZXhl
ci4gVGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdG9rZW5zLiAgICAgICAg
ICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBsZXgoc3RyKQor
ICByZXN1bHQgPSBbXQorICBsaW5lTnVtYmVyID0gMQorICB3aGlsZSBub3Qgc3RyLmVtcHR5Pwor
ICAgIGNhc2Ugc3RyCisgICAgd2hlbiAvXEFcIyhbXlxuXSopLworICAgICAgIyBjb21tZW50LCBp
Z25vcmUKKyAgICB3aGVuIC9cQVxuLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVt
YmVyLCAkJikKKyAgICAgIGxpbmVOdW1iZXIgKz0gMQorICAgIHdoZW4gL1xBW2EtekEtWl0oW2Et
ekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQor
ICAgIHdoZW4gL1xBXC4oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3
KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBXyhbYS16QS1aMC05X10qKS8KKyAgICAgIHJl
c3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEEoWyBcdF0rKS8K
KyAgICAgICMgd2hpdGVzcGFjZSwgaWdub3JlCisgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSsp
LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAg
ICB3aGVuIC9cQTAoWzAtN10rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJl
ciwgJCYub2N0LnRvX3MpCisgICAgd2hlbiAvXEEoWzAtOV0rKS8KKyAgICAgIHJlc3VsdCA8PCBU
b2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEE6Oi8KKyAgICAgIHJlc3VsdCA8
PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFbOixcKFwpXFtcXT1cK1wt
Kl0vCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIGVsc2UK
KyAgICAgIHJhaXNlICJMZXhlciBlcnJvciBhdCBsaW5lIG51bWJlciAje2xpbmVOdW1iZXJ9LCB1
bmV4cGVjdGVkIHNlcXVlbmNlICN7c3RyWzAuLjIwXS5pbnNwZWN0fSIKKyAgICBlbmQKKyAgICBz
dHIgPSAkfi5wb3N0X21hdGNoCisgIGVuZAorICByZXN1bHQKK2VuZAorCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBUb2tlbiBpZGVudGlmaWNhdGlvbi4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworCitkZWYgaXNSZWdpc3Rlcih0b2tlbikKKyAgdG9rZW4gPX4gUkVHSVNU
RVJfUEFUVEVSTgorZW5kCisKK2RlZiBpc0luc3RydWN0aW9uKHRva2VuKQorICB0b2tlbiA9fiBJ
TlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzS2V5d29yZCh0b2tlbikKKyAgdG9rZW4g
PX4gL1xBKCh0cnVlKXwoZmFsc2UpfChpZil8KHRoZW4pfChlbHNlKXwoZWxzaWYpfChlbmQpfChh
bmQpfChvcil8KG5vdCl8KG1hY3JvKXwoY29uc3QpfChzaXplb2YpfChlcnJvcikpXFovIG9yCisg
ICAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTiBvcgorICAgIHRva2VuID1+IElOU1RSVUNUSU9O
X1BBVFRFUk4KK2VuZAorCitkZWYgaXNJZGVudGlmaWVyKHRva2VuKQorICB0b2tlbiA9fiAvXEFb
YS16QS1aXShbYS16QS1aMC05X10qKVxaLyBhbmQgbm90IGlzS2V5d29yZCh0b2tlbikKK2VuZAor
CitkZWYgaXNMYWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXyhbYS16QS1aMC05X10qKVxaLwor
ZW5kCisKK2RlZiBpc0xvY2FsTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQVwuKFthLXpBLVow
LTlfXSopXFovCitlbmQKKworZGVmIGlzVmFyaWFibGUodG9rZW4pCisgIGlzSWRlbnRpZmllcih0
b2tlbikgb3IgaXNSZWdpc3Rlcih0b2tlbikKK2VuZAorCitkZWYgaXNJbnRlZ2VyKHRva2VuKQor
ICB0b2tlbiA9fiAvXEFbMC05XS8KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBUaGUgcGFyc2VyLiBUYWtlcyBhbiBhcnJheSBvZiB0b2tlbnMgYW5kIHJldHVybnMg
YW4gQVNULiBNZXRob2RzICAgICAjCisjIG90aGVyIHRoYW4gcGFyc2UodG9rZW5zKSBhcmUgbm90
IGZvciBwdWJsaWMgY29uc3VtcHRpb24uICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIFBhcnNlcgorICBkZWYgaW5pdGlhbGl6ZSh0b2tlbnMp
CisgICAgQHRva2VucyA9IHRva2VucworICAgIEBpZHggPSAwCisgIGVuZAorICAKKyAgZGVmIHBh
cnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgQHRva2Vuc1tAaWR4XQorICAgICAgQHRva2Vuc1tA
aWR4XS5wYXJzZUVycm9yKCpjb21tZW50KQorICAgIGVsc2UKKyAgICAgIGlmIGNvbW1lbnQuZW1w
dHk/CisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZSIKKyAgICAgIGVs
c2UKKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlOiAje2NvbW1lbnRb
MF19IgorICAgICAgZW5kCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGNvbnN1bWUocmVnZXhw
KQorICAgIGlmIHJlZ2V4cAorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9
fiByZWdleHAKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAaWR4ID09IEB0b2tl
bnMubGVuZ3RoCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgIGVuZAorICAKKyAgZGVmIHNraXBO
ZXdMaW5lCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICBAaWR4ICs9IDEK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAibm90IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZVByZWRpY2F0
ZUF0b20KKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisg
ICAgICBza2lwTmV3TGluZQorICAgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgIHBh
cnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInRydWUiCisgICAgICByZXN1
bHQgPSBUcnVlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVs
c2lmIEB0b2tlbnNbQGlkeF0gPT0gImZhbHNlIgorICAgICAgcmVzdWx0ID0gRmFsc2UuaW5zdGFu
Y2UKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVy
IEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IFNldHRpbmcuZm9yTmFtZShAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgQGlkeCArPSAxCisg
ICAgICByZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAor
ICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQW5kCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVB
dG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiYW5kIgorICAgICAgY29kZU9yaWdpbiA9
IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3
TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgIHJlc3VsdCA9IEFu
ZC5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGUKKyAgICAjIHNvbWUgZXhhbXBsZXMgb2YgcHJl
Y2VkZW5jZToKKyAgICAjIG5vdCBhIGFuZCBiIC0+IChub3QgYSkgYW5kIGIKKyAgICAjIGEgYW5k
IGIgb3IgYyAtPiAoYSBhbmQgYikgb3IgYworICAgICMgYSBvciBiIGFuZCBjIC0+IGEgb3IgKGIg
YW5kIGMpCisgICAgCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICB3aGlsZSBA
dG9rZW5zW0BpZHhdID09ICJvciIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0
ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICAgIHJlc3VsdCA9IE9yLm5ldyhjb2RlT3JpZ2luLCBy
ZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJz
ZVZhcmlhYmxlCisgICAgaWYgaXNSZWdpc3RlcihAdG9rZW5zW0BpZHhdKQorICAgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9fiBGUFJfUEFUVEVSTgorICAgICAgICByZXN1bHQgPSBGUFJlZ2lzdGVySUQu
Zm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQor
ICAgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVuZAorICAgIGVs
c2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgcmVzdWx0ID0gVmFyaWFibGUu
Zm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQor
ICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICBy
ZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VBZGRyZXNzKG9mZnNldCkKKyAgICBwYXJzZUVy
cm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4KKyAgICAKKyAgICAjIFRocmVlIHBvc3NpYmlsaXRpZXM6CisgICAg
IyBbXSAgICAgICAtPiBBYnNvbHV0ZUFkZHJlc3MKKyAgICAjIFthXSAgICAgIC0+IEFkZHJlc3MK
KyAgICAjIFthLGJdICAgIC0+IEJhc2VJbmRleCB3aXRoIHNjYWxlID0gMQorICAgICMgW2EsYixj
XSAgLT4gQmFzZUluZGV4CisgICAgCisgICAgQGlkeCArPSAxCisgICAgaWYgQHRva2Vuc1tAaWR4
XSA9PSAiXSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmV0dXJuIEFic29sdXRlQWRkcmVzcy5u
ZXcoY29kZU9yaWdpbiwgb2Zmc2V0KQorICAgIGVuZAorICAgIGEgPSBwYXJzZVZhcmlhYmxlCisg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIHJlc3VsdCA9IEFkZHJlc3MubmV3KGNv
ZGVPcmlnaW4sIGEsIG9mZnNldCkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBA
dG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgQGlkeCArPSAxCisgICAgICBiID0gcGFyc2VWYXJp
YWJsZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFz
ZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCAxLCBvZmZzZXQpCisgICAgICBlbHNlCisgICAg
ICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBbIjEiLCAiMiIsICI0IiwgIjgiXS5tZW1i
ZXI/IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIGMgPSBAdG9rZW5zW0BpZHhdLnN0cmlu
Zy50b19pCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9r
ZW5zW0BpZHhdID09ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmln
aW4sIGEsIGIsIGMsIG9mZnNldCkKKyAgICAgIGVuZAorICAgIGVuZAorICAgIEBpZHggKz0gMQor
ICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUNvbG9uQ29sb24KKyAgICBza2lwTmV3
TGluZQorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICBwYXJz
ZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgIG5hbWVzID0gW0B0
b2tlbnNbQGlkeF0uc3RyaW5nXQorICAgIEBpZHggKz0gMQorICAgIHdoaWxlIEB0b2tlbnNbQGlk
eF0gPT0gIjo6IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lk
ZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgbmFtZXMgPDwgQHRva2Vuc1tAaWR4XS5zdHJp
bmcKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICAgIHJhaXNlIGlmIG5hbWVzLmVtcHR5Pwor
ICAgIFtjb2RlT3JpZ2luLCBuYW1lc10KKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9u
QXRvbQorICAgIHNraXBOZXdMaW5lCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAg
IEBpZHggKz0gMQorICAgICAgTmVnSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2Rl
T3JpZ2luLCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0g
IigiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbgorICAg
ICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgIEBpZHggKz0g
MQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJbnRlZ2VyIEB0b2tlbnNbQGlkeF0KKyAgICAg
IHJlc3VsdCA9IEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5z
W0BpZHhdLnN0cmluZy50b19pKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBl
bHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMg
PSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIGlmIG5hbWVzLnNpemUgPiAxCisgICAgICAgIFN0cnVj
dE9mZnNldC5mb3JGaWVsZChjb2RlT3JpZ2luLCBuYW1lc1swLi4tMl0uam9pbignOjonKSwgbmFt
ZXNbLTFdKQorICAgICAgZWxzZQorICAgICAgICBWYXJpYWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4s
IG5hbWVzWzBdKQorICAgICAgZW5kCisgICAgZWxzaWYgaXNSZWdpc3RlciBAdG9rZW5zW0BpZHhd
CisgICAgICBwYXJzZVZhcmlhYmxlCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9m
IgorICAgICAgQGlkeCArPSAxCisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25D
b2xvbgorICAgICAgU2l6ZW9mLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXMuam9pbignOjonKSkK
KyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBh
cnNlRXhwcmVzc2lvbk11bAorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHBy
ZXNzaW9uQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICBpZiBAdG9r
ZW5zW0BpZHhdID09ICIqIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gTXVs
SW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJz
ZUV4cHJlc3Npb25BdG9tKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisg
ICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIGNvdWxkQmVFeHByZXNzaW9uCisg
ICAgQHRva2Vuc1tAaWR4XSA9PSAiLSIgb3IgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIiBvciBp
c0ludGVnZXIoQHRva2Vuc1tAaWR4XSkgb3IgaXNWYXJpYWJsZShAdG9rZW5zW0BpZHhdKSBvciBA
dG9rZW5zW0BpZHhdID09ICIoIgorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb24KKyAg
ICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbk11bAorICAgIHdoaWxl
IEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICBpZiBA
dG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0g
QWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBw
YXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICItIgorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gU3ViSW1tZWRpYXRlcy5uZXcoQHRva2Vu
c1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAg
ICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1bHQKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1lbnQpCisgICAgaWYgY291bGRCZUV4cHJl
c3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIGlmIEB0b2tlbnNbQGlk
eF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRkcmVzcyhleHByKQorICAgICAgZWxzZQorICAgICAg
ICBleHByCisgICAgICBlbmQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAg
cGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCAwKSkK
KyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IExhYmVsUmVm
ZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExhYmVsLmZvck5hbWUoQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4ICs9
IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhdCisg
ICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tl
bnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxz
ZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50KQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBw
YXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb25zdW1lKC9cQVwoXFov
KQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAgbG9vcCB7CisgICAgICBza2lwTmV3TGluZQorICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGJy
ZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgdmFy
aWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9r
ZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5l
CisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IKKyAgICAg
ICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IKKyAgICAgIGVuZAorICAgIH0K
KyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAorICBkZWYgcGFyc2VTZXF1ZW5jZShmaW5hbCwgY29t
bWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAg
ICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAgICAgIGlmIChAaWR4ID09IEB0b2tlbnMubGVuZ3Ro
IGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAg
ICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAj
IGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0g
ImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNW
YXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZm9yTmFt
ZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAi
PSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhbHVlID0gcGFyc2VPcGVyYW5kKCJ3aGls
ZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5uYW1lfSIpCisgICAgICAgIGxpc3QgPDwgQ29u
c3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAg
ICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImVycm9yIgorICAgICAgICBsaXN0IDw8IEVycm9y
Lm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4pCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5l
CisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgIGNvbnN1bWUoL1xB
KCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWZUaGVuRWxz
ZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgv
XEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRlIG9mIFwiaWYgI3twcmVk
aWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBsaXN0IDw8IGlmVGhlbkVsc2UKKyAgICAgICAgd2hp
bGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisgICAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIHNraXBO
ZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgICBj
b25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAg
ICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFy
c2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRlIG9m
IFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICAgIGlmVGhlbkVsc2UuZWxzZUNh
c2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlmVGhlbkVsc2UgPSBlbHNlQ2FzZQorICAgICAgICBl
bmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiZWxzZSIKKyAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRc
Wi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNlIGZvciBcImlmICN7cHJlZGljYXRlLmR1bXB9
XCIiKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiZW5kIgorICAgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgorICAgICAg
ICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50
aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5n
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFi
bGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lk
ZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGxpc3QgPDwg
TWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICAgIGVsc2lm
IGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZwor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9r
ZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAg
ICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5kIGl0J3MgdGhlIGxhc3Qgb25lLgorICAg
ICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAg
ICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAg
ICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICBlbHNlCisgICAgICAgICAgIyBJdCdzIGRlZmluaXRlbHkgYW4gaW5zdHJ1Y3Rpb24sIGFu
ZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJhbmQuCisgICAgICAgICAgb3BlcmFuZHMgPSBbXQor
ICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxzZQorICAgICAgICAgIGxvb3AgeworICAgICAg
ICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgaW5zdHJ1Y3Rp
b24gI3tuYW1lfSIpCisgICAgICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tl
bnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICAg
ICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uIGFuZCBvZiB0aGUgc2VxdWVuY2UuCisg
ICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSB0cnVlCisgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgICAgICAjIEhh
cyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0
aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICBi
cmVhaworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3Rl
ZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFsfSBhZnRlciAje29wZXJhbmRzLmxhc3QuZHVt
cH0iKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgfQorICAgICAgICAgIGxpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAgICAgIGlmIGVu
ZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgZW5kCisgICAgICAgIGVu
ZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9y
aWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tA
aWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gIigiCisgICAgICAgICAgIyBNYWNybyBpbnZvY2F0aW9uLgorICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAg
ICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUK
KyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAgICAgICAgICAg
ICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQorICAgICAgICAgICAgICAgIGNvZGVPcmlnaW5Jbm5l
ciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICAgICAg
ICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2Yg
YW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1bWVudCB0byAje25hbWV9IikKKyAgICAgICAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBNYWNyby5uZXco
Y29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlhYmxlcywgYm9keSkKKyAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRl
IG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgor
ICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAg
ICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9yICJVbmV4
cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5zcGVjdH0gd2hpbGUgcGFyc2luZyBpbnZv
Y2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAg
fQorICAgICAgICAgIGVuZAorICAgICAgICAgIGxpc3QgPDwgTWFjcm9DYWxsLm5ldyhjb2RlT3Jp
Z2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3Ig
IkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFtZX0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYg
aXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAg
ICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9
IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVy
cm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI6IgorICAgICAgICAjIEl0J3MgYSBsYWJlbC4K
KyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAgICAgbGlzdCA8PCBMYWJlbC5mb3JOYW1l
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVsc2UKKyAgICAgICAgICBsaXN0IDw8IExvY2Fs
TGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbmQKKyAgICAgICAgQGlk
eCArPSAxCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgIkV4cGVjdGluZyB0ZXJtaW5h
bCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5l
dyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisgIGVuZAorZW5kCisKK2RlZiBwYXJzZSh0b2tlbnMp
CisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9rZW5zKQorICBwYXJzZXIucGFyc2VTZXF1ZW5jZShu
aWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jl
Z2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK0dQUlMgPQorICBbCisgICAidDAiLAor
ICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMiLAorICAgInQ0IiwKKyAgICJjZnIiLAorICAgImEw
IiwKKyAgICJhMSIsCisgICAicjAiLAorICAgInIxIiwKKyAgICJzcCIKKyAgXQorCitGUFJTID0K
KyAgWworICAgImZ0MCIsCisgICAiZnQxIiwKKyAgICJmdDIiLAorICAgImZ0MyIsCisgICAiZnQ0
IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisgICAiZmExIiwKKyAgICJmYTIiLAorICAgImZhMyIs
CisgICAiZnIiCisgIF0KKworUkVHSVNURVJTID0gR1BSUyArIEZQUlMKKworR1BSX1BBVFRFUk4g
PSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKK0ZQUl9Q
QVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgRlBSUy5qb2luKCcpfCgnKSArICcpKVxcWicp
CisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBSRUdJU1RFUlMuam9p
bignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vc2V0dGluZ3MucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMjEgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVp
cmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBjb21wdXRlU2V0dGluZ3NDb21iaW5h
dGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25zICAgICAgICAgICAgICAjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkgb2Ygc2V0dGluZ3MgbWFwcywgd2hlcmUgYSBz
ZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMgIworIyBhIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhc3Nl
bWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIG1hcCAgICAgICAjCisjIGNvbnRhaW5zIGtl
eSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBzZXR0aW5ncyBuYW1lcyAoc3RyaW5ncykgYW5k
ICMKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVhbnMgKHRydWUgZm9yIGVuYWJsZWQsIGZhbHNlIGZv
ciBkaXNhYmxlZCkuICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor
ZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIHNldHRpbmdzQ29tYmluYXRp
b25zID0gW10KKyAgCisgIGRlZiBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlv
bnMsIG1hcFNvRmFyLCByZW1haW5pbmcpCisgICAgaWYgcmVtYWluaW5nLmVtcHR5PworICAgICAg
c2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFwU29GYXIKKyAgICAgIHJldHVybgorICAgIGVuZAor
ICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1d
ID0gdHJ1ZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3
TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAor
ICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gZmFsc2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0b3Io
c2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgZW5kCisg
IAorICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIHt9LCAoYXN0LmZp
bHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7fHZ8IHYubmFtZX0gKyBbIlg4NiIsICJBUk12NyJd
KS51bmlxKQorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMKK2VuZAorCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3Qp
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0
dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwgLi4uIH0gICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBEZXRlcm1pbmVzIGlmIHRoZSBzZXR0aW5ncyBjb21iaW5hdGlvbiBp
cyB2YWxpZCwgYW5kIGlmIHNvLCBjYWxscyAgICAjCisjIHRoZSBibG9jayB3aXRoIHRoZSBpbmZv
cm1hdGlvbiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBjb2RlLiAgICAgICAgICAgICMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRp
bmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0aGlzIGNvbWJpbmF0b3Ig
Y2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWltZWRCYWNrZW5kcyA9IDAKKyAgc2VsZWN0ZWRC
YWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2ggeworICAgIHwgYmFja2VuZCB8CisgICAgaXNT
dXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2JhY2tlbmRdCisgICAgcmFpc2UgdW5sZXNzIGlz
U3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWltZWRCYWNrZW5kcyArPSBpZiBpc1N1cHBvcnRl
ZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlzU3VwcG9ydGVkCisgICAgICBzZWxlY3RlZEJh
Y2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0KKyAgCisgIHJldHVybiBpZiBudW1DbGFpbWVk
QmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUgdGhlIEFTVCBkb3duIHRvIGEgbG93LWxldmVs
IGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25hbHMpLgorICBsb3dMZXZlbEFTVCA9IGFzdC5y
ZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIHlpZWxkIGNvbmNyZXRlU2V0
dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJhY2tlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFz
dCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0
dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgc2V0
dGluZ3NDb21iaW5hdGlvbnMpIHsgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3Ms
IGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAgICAgICAgICMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyBFeGVjdXRlcyB0aGUgZ2l2ZW4gYmxvY2sgZm9yIGVhY2ggdmFsaWQgc2V0dGlu
Z3MgY29tYmluYXRpb24gaW4gdGhlICAjCisjIHNldHRpbmdzIG1hcC4gVGhlIGFzdCBwYXNzZWQg
aW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQgICAgICAgICAgICAgICMKKyMgKGFzdC5yZXNvbHZl
KSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIFRoZSBmaXJzdCBmb3JtIHdpbGwgY2FsbCBjb21wdXRlU2V0
dGluZ3NDb21iaW5hdGlvbnMoYXN0KSBmb3IgeW91LiAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisKK2RlZiBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwg
Km9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMpCisgIHJhaXNlIGlmIG9wdGlvbmFsU2V0dGlu
Z3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEKKyAgCisgIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5h
dGlvbnMuZW1wdHk/CisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBjb21wdXRlU2V0dGluZ3ND
b21iaW5hdGlvbnMoYXN0KQorICBlbHNlCisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBvcHRp
b25hbFNldHRpbmdzQ29tYmlhdGlvbnNbMF0KKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0
aW9ucy5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgaW5kZXggfAor
ICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgeworICAgICAgfCBjb25jcmV0
ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgICAgeWllbGQgY29uY3JldGVT
ZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgfQorICB9CitlbmQKKwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgY3BwU2V0dGluZ3NUZXN0KGNvbmNy
ZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIFJldHVybnMgdGhlIEMrKyBjb2RlIHVzZWQgdG8gdGVzdCBpZiB3ZSBhcmUg
aW4gYSBjb25maWd1cmF0aW9uIHRoYXQgICMKKyMgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIGNv
bmNyZXRlIHNldHRpbmdzLiAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRp
bmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdzLnRvX2EuY29sbGVjdHsKKyAgICB8IHBh
aXIgfAorICAgIChpZiBwYWlyWzFdCisgICAgICAgIiIKKyAgICAgZWxzZQorICAgICAgICIhIgor
ICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIgKyBwYWlyWzBdCisgIH0uam9pbigiICYmICIpCitl
bmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgaXNBU1RFcnJvbmVvdXMo
YXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIFRlc3RzIHRvIHNlZSBpZiB0aGUgQVNUIGNsYWltcyB0aGF0IHRo
ZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUgICMKKyMgdXNlcidzIGNvZGUsIGFmdGVyIHNl
dHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4gICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAg
bm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5PworZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFbWl0cyBh
IGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBnaXZlbiBjb25maWd1cmF0
aW9uLiAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgYXNzZXJ0Q29u
ZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICBwdXRzIGNwcFNldHRpbmdzVGVzdChjb25j
cmV0ZVNldHRpbmdzKQorICBwdXRzICIjZWxzZSIKKyAgcHV0cyAiI2Vycm9yIFwiQ29uZmlndXJh
dGlvbiBtaXNtYXRjaC5cIiIKKyAgcHV0cyAiI2VuZGlmIgorZW5kCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0
dGluZ3MsIGFzdCwgYmFja2VuZCkgeyAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0
aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4uIH0gICAgICAgICAgICAgICAgICAgICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIEVtaXRzIGFsbCByZWxldmFudCBndWFyZHMgdG8gc2VlIGlmIHRoZSBj
b25maWd1cmF0aW9uIGhvbGRzIGFuZCAgICAgICMKKyMgY2FsbHMgdGhlIGJsb2NrIGlmIHRoZSBj
b25maWd1cmF0aW9uIGlzIG5vdCBlcnJvbmVvdXMuICAgICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNv
bmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkKKyAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29u
Y3JldGVTZXR0aW5ncykKKyAgCisgIGlmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAgICBwdXRzICIj
ZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uXCIiCisgIGVsc2lmIG5vdCBXT1JLSU5HX0JB
Q0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICBwdXRzICIjZXJyb3IgXCJUaGlzIGJhY2tlbmQg
aXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UKKyAgICB5aWVsZCBjb25jcmV0ZVNldHRp
bmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICBwdXRzICIjZW5kaWYiCitlbmQKKworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRp
b25zKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgfCBj
b25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgRW1pdHMgZ3VhcmQgY29kZXMgZm9yIGFsbCB2YWxp
ZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxzIHRoZSBibG9jayAgIworIyBmb3IgdGhvc2UgY29u
ZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5kIG5vdCBlcnJvbmVvdXMuICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZW1pdENvZGVJbkFsbENv
bmZpZ3VyYXRpb25zKGFzdCkKKyAgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3Qp
IHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleCB8
CisgICAgcHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgICB5aWVsZCBj
b25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICBwdXRzICIj
ZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNTIg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIK
KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFu
eSBJZlRoZW5FbHNlIG5vZGVzIGJ5ICAgICAgICMKKyMgc3Vic3RpdHV0aW5nIGNvbmNyZXRlIGJv
b2xlYW4gdmFsdWVzIGZvciBlYWNoIFNldHRpbmcuICAgICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAg
Y2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xh
c3MgVHJ1ZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5k
CitlbmQKKworY2xhc3MgRmFsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAg
ICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcKKyAgZGVmIHJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykKKyAgICBzZXR0aW5nc1tAbmFtZV0uYXNOb2RlCisgIGVuZAorZW5kCisKK2Ns
YXNzIEFuZAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIGFuZCBAcmlnaHQucmVzb2x2ZVNldHRpbmdzKHNl
dHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE9yCisgIGRlZiByZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykudmFsdWUgb3IgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9k
ZQorICBlbmQKK2VuZAorCitjbGFzcyBOb3QKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykKKyAgICAobm90IEBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05v
ZGUKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZQorICBkZWYgcmVzb2x2ZVNldHRpbmdz
KHNldHRpbmdzKQorICAgIGlmIEBwcmVkaWNhdGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52
YWx1ZQorICAgICAgQHRoZW5DYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbHNl
CisgICAgICBAZWxzZUNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVuZAorICBl
bmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdz
KQorICAgIG5ld0xpc3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAg
ICAgIGl0ZW0gPSBpdGVtLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgIGlmIGl0ZW0u
aXNfYT8gU2VxdWVuY2UKKyAgICAgICAgbmV3TGlzdCArPSBpdGVtLmxpc3QKKyAgICAgIGVsc2UK
KyAgICAgICAgbmV3TGlzdCA8PCBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2Uu
bmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIG5vZGUuZGVtYWNyb2lmeShtYWNyb3MpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5zdWJzdGl0dXRlKG1hcHBp
bmcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIGRlbWFjcm9pZnkoKSBjb25zdHJ1Y3RzIGEgbmV3IEFTVCB0aGF0IGRvZXMg
bm90IGhhdmUgYW55IE1hY3JvICAgICAgICMKKyMgbm9kZXMsIHdoaWxlIHN1YnN0aXR1dGUoKSBy
ZXBsYWNlcyBWYXJpYWJsZSBub2RlcyB3aXRoIHRoZSBnaXZlbiAgICAgIworIyBub2RlcyBpbiB0
aGUgbWFwcGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRl
ZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwK
KyAgICAgIGNoaWxkLmRlbWFjcm9pZnkobWFjcm9zKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYg
c3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAor
ICAgICAgY2hpbGQuc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYg
c3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hp
bGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIH0KKyAgZW5k
CitlbmQKKworY2xhc3MgTWFjcm8KKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBteU1h
cHBpbmcgPSB7fQorICAgIG1hcHBpbmcuZWFjaF9wYWlyIHsKKyAgICAgIHwga2V5LCB2YWx1ZSB8
CisgICAgICB1bmxlc3MgQHZhcmlhYmxlcy5pbmNsdWRlPyBrZXkKKyAgICAgICAgbXlNYXBwaW5n
W2tleV0gPSB2YWx1ZQorICAgICAgZW5kCisgICAgfQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAg
IHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShteU1hcHBpbmcpCisgICAgfQorICBl
bmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZQorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAg
IGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBz
ZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIHN1YnN0
aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5n
W3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFz
cyBTZXF1ZW5jZQorICBkZWYgc3Vic3RpdHV0ZShjb25zdGFudHMpCisgICAgbmV3TGlzdCA9IFtd
CisgICAgbXlDb25zdGFudHMgPSBjb25zdGFudHMuZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAg
ICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAgICAgbXlDb25z
dGFudHNbaXRlbS52YXJpYWJsZV0gPSBpdGVtLnZhbHVlLnN1YnN0aXR1dGUobXlDb25zdGFudHMp
CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5zdWJzdGl0dXRlKG15Q29uc3Rh
bnRzKQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdM
aXN0KQorICBlbmQKKyAgCisgIGRlZiByZW5hbWVMYWJlbHMoY29tbWVudCkKKyAgICBtYXBwaW5n
ID0ge30KKyAgICAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBp
dGVtLmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAgbWFwcGluZ1tpdGVtXSA9IExvY2FsTGFiZWwu
dW5pcXVlKGlmIGNvbW1lbnQgdGhlbiBjb21tZW50ICsgIl8iIGVsc2UgIiIgZW5kICsgaXRlbS5j
bGVhbk5hbWUpCisgICAgICBlbmQKKyAgICB9CisgICAgCisgICAgc3Vic3RpdHV0ZUxhYmVscyht
YXBwaW5nKQorICBlbmQKKyAgCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBteU1hY3Jv
cyA9IG1hY3Jvcy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBp
ZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBpdGVtCisg
ICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAg
ICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICAjIElnbm9yZS4K
KyAgICAgIGVsc2lmIGl0ZW0uaXNfYT8gTWFjcm9DYWxsCisgICAgICAgIG1hcHBpbmcgPSB7fQor
ICAgICAgICBteU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisgICAgICAgIHJhaXNlICJDb3VsZCBu
b3QgZmluZCBtYWNybyAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1
bmxlc3MgbXlNYWNyb3NbaXRlbS5uYW1lXQorICAgICAgICByYWlzZSAiQXJndW1lbnQgY291bnQg
bWlzbWF0Y2ggZm9yIGNhbGwgdG8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3Ry
aW5nfSIgdW5sZXNzIGl0ZW0ub3BlcmFuZHMuc2l6ZSA9PSBteU1hY3Jvc1tpdGVtLm5hbWVdLnZh
cmlhYmxlcy5zaXplCisgICAgICAgIGl0ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAg
ICAgfCBpZHggfAorICAgICAgICAgIGlmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBWYXJpYWJs
ZSBhbmQgbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAgICBteU15
TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jv
c1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3Nb
aXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2lmIGl0
ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBNYWNybworICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1h
Y3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhd
CisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0u
bmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFj
cm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gbmlsCisgICAgICAgICAgICBtYXBwaW5n
W215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gaXRlbS5vcGVyYW5kc1tpZHhd
CisgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCArPSBteU1hY3Jvc1tp
dGVtLm5hbWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNyb3Mp
LnJlbmFtZUxhYmVscyhpdGVtLm5hbWUpLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlz
dCA8PCBpdGVtLmRlbWFjcm9pZnkobXlNYWNyb3MpCisgICAgICBlbmQKKyAgICB9CisgICAgU2Vx
dWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpLnN1YnN0aXR1dGUoe30pCisgIGVuZAorZW5k
CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2ZU9mZnNl
dHMob2Zmc2V0cywgc2l6ZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgaGFzIG9mZnNldCB2YWx1
ZXMgaW5zdGVhZCBvZiBzeW1ib2xpYyAgICAgICAjCisjIG9mZnNldHMuICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVPZmZz
ZXRzKG9mZnNldHMsIHNpemVzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAor
ICAgICAgY2hpbGQucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgfQorICBlbmQK
K2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXQKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMs
IHNpemVzKQorICAgIGlmIG9mZnNldHNbc2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9y
aWdpbiwgb2Zmc2V0c1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVu
ZAorZW5kCisKK2NsYXNzIFNpemVvZgorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6
ZXMpCisgICAgaWYgc2l6ZXNbc2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwg
c2l6ZXNbc2VsZl0pCisgICAgZWxzZQorICAgICAgcHV0cyAiQ291bGQgbm90IGZpbmQgI3tzZWxm
Lmluc3BlY3R9IGluICN7c2l6ZXMua2V5cy5pbnNwZWN0fSIKKyAgICAgIHB1dHMgInNpemVzID0g
I3tzaXplcy5pbnNwZWN0fSIKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5mb2xkICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIFJlc29sdmUgY29uc3RhbnQgcmVmZXJlbmNlcyBhbmQgY29tcHV0ZSBhcml0aG1l
dGljIGV4cHJlc3Npb25zLiAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisKK2NsYXNzIE5vZGUKKyAgZGVmIGZvbGQKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNo
aWxkIHwKKyAgICAgIGNoaWxkLmZvbGQKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZElt
bWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQg
PSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlh
dGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIElt
bWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgKyBAcmlnaHQudmFsdWUpCisgIGVu
ZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBs
ZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVz
cyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0Lmlz
X2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUg
LSBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMKKyAgZGVm
IGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAor
ICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4g
c2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29k
ZU9yaWdpbiwgQGxlZnQudmFsdWUgKiBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNz
IE5lZ0ltbWVkaWF0ZQorICBkZWYgZm9sZAorICAgIEBjaGlsZCA9IEBjaGlsZC5mb2xkCisgICAg
cmV0dXJuIHNlbGYgdW5sZXNzIEBjaGlsZC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUu
bmV3KGNvZGVPcmlnaW4sIC1AY2hpbGQudmFsdWUpCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2ZUFmdGVyU2V0dGluZ3Mob2Zmc2V0
cywgc2l6ZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyBDb21waWxlIGFzc2VtYmx5IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFz
cyBOb2RlCisgIGRlZiByZXNvbHZlKG9mZnNldHMsIHNpemVzKQorICAgIGRlbWFjcm9pZnkoe30p
LnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKS5mb2xkCisgIGVuZAorZW5kCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjczIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitjbGFz
cyBSZWdpc3RlcklECisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIGNhc2UgbmFtZQorICAg
IHdoZW4gInQwIiwgImEwIiwgInIwIiwgInQxIiwgImExIiwgInIxIiwgInQyIiwgInQzIgorICAg
ICAgdHJ1ZQorICAgIHdoZW4gInQ0IiwgImNmciIKKyAgICAgIGZhbHNlCisgICAgZWxzZQorICAg
ICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAg
IGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgY2FzZSBraW5kCisg
ICAgICB3aGVuIDpieXRlCisgICAgICAgICIlYWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAg
ICIlYXgiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYXgiCisgICAgICBlbHNlCisgICAg
ICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgIGNh
c2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWRsIgorICAgICAgd2hlbiA6aGFs
ZgorICAgICAgICAiJWR4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWR4IgorICAgICAg
ZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDIiCisgICAgICBjYXNl
IGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVjbCIKKyAgICAgIHdoZW4gOmhhbGYK
KyAgICAgICAgIiVjeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVjeCIKKyAgICAgIGVs
c2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQzIgorICAgICAgY2FzZSBr
aW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlYmwiCisgICAgICB3aGVuIDpoYWxmCisg
ICAgICAgICIlYngiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYngiCisgICAgICBlbHNl
CisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0NCIKKyAgICAgIGNhc2Uga2lu
ZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAg
ICAgICAgIiVzaSIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzaSIKKyAgICAgIGVsc2UK
KyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gImNmciIKKyAgICAgIGNhc2Uga2lu
ZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWRpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAg
ICAgICAgIiVkaSIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkaSIKKyAgICAgIGVsc2UK
KyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInNwIgorICAgICAgY2FzZSBraW5k
CisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlc3BsIgorICAgICAgd2hlbiA6aGFsZgorICAg
ICAgICAiJXNwIgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZXNwIgorICAgICAgZWxzZQor
ICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQK
KyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtp
bmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgIGRlZiB4ODZPcGVyYW5k
KGtpbmQpCisgICAgcmFpc2UgdW5sZXNzIGtpbmQgPT0gOmRvdWJsZQorICAgIGNhc2UgbmFtZQor
ICAgIHdoZW4gImZ0MCIsICJmYTAiLCAiZnIiCisgICAgICAiJXhtbTAiCisgICAgd2hlbiAiZnQx
IiwgImZhMSIKKyAgICAgICIleG1tMSIKKyAgICB3aGVuICJmdDIiLCAiZmEyIgorICAgICAgIiV4
bW0yIgorICAgIHdoZW4gImZ0MyIsICJmYTMiCisgICAgICAiJXhtbTMiCisgICAgd2hlbiAiZnQ0
IgorICAgICAgIiV4bW00IgorICAgIHdoZW4gImZ0NSIKKyAgICAgICIleG1tNSIKKyAgICBlbHNl
CisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQp
CisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlh
dGUKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiJCN7dmFsdWV9IgorICBlbmQKKyAgZGVm
IHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIiN7dmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFz
cyBBZGRyZXNzCisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAg
CisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2
T3BlcmFuZCg6aW50KX0pIgorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAg
Iioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAg
ZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9w
ZXJhbmQoa2luZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQp
fSwgI3tpbmRleC54ODZPcGVyYW5kKDppbnQpfSwgI3tzY2FsZX0pIgorICBlbmQKKworICBkZWYg
eDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2b3BlcmFuZChraW5kKX0iCisgIGVuZAor
ZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAg
ICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje2FkZHJl
c3MudmFsdWV9IgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7
YWRkcmVzcy52YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgIGRl
ZiB4ODZMYWJlbAorICAgIHNhbml0aXplTGFiZWxOYW1lKG5hbWUpCisgIGVuZAorICBkZWYgeDg2
Q2FsbE9wZXJhbmQoa2luZCkKKyAgICB4ODZMYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBMb2Nh
bExhYmVsUmVmZXJlbmNlCisgIGRlZiB4ODZMYWJlbAorICAgICJMX29mZmxpbmVhc21fIituYW1l
WzEuLi0xXQorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgeDg2TGFiZWwK
KyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24KKyAgZGVmIHg4Nk9wZXJhbmRzKCpraW5k
cykKKyAgICByYWlzZSB1bmxlc3Mga2luZHMuc2l6ZSA9PSBvcGVyYW5kcy5zaXplCisgICAgcmVz
dWx0ID0gW10KKyAgICBraW5kcy5zaXplLnRpbWVzIHsKKyAgICAgIHwgaWR4IHwKKyAgICAgIHJl
c3VsdCA8PCBvcGVyYW5kc1tpZHhdLng4Nk9wZXJhbmQoa2luZHNbaWR4XSkKKyAgICB9CisgICAg
cmVzdWx0LmpvaW4oIiwgIikKKyAgZW5kCisKKyAgZGVmIHg4NlN1ZmZpeChraW5kKQorICAgIGNh
c2Uga2luZAorICAgIHdoZW4gOmJ5dGUKKyAgICAgICJiIgorICAgIHdoZW4gOmhhbGYKKyAgICAg
ICJ3IgorICAgIHdoZW4gOmludAorICAgICAgImwiCisgICAgd2hlbiA6ZG91YmxlCisgICAgICAi
c2QiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFu
ZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBudW1PcGVyYW5kcykKKyAgICBp
ZiBudW1PcGVyYW5kcyA9PSAzCisgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQor
ICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChr
aW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNpZiBvcGVy
YW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChr
aW5kKX0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiXHRtb3Yje3g4NlN1ZmZpeChr
aW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9Igor
ICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcChvcGNvZGUsIGtpbmQpCisg
ICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXpl
KQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTaGlmdChvcGNvZGUsIGtpbmQpCisgICAgaWYg
b3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIG9yIG9wZXJhbmRzWzBdID09IFJlZ2lzdGVySUQu
Zm9yTmFtZShuaWwsICJ0MiIpCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmludCl9LCAlZWN4IgorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAlY2wsICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICBlbmQKKyAgZW5kCisg
IAorICBkZWYgaGFuZGxlWDg2RG91YmxlQnJhbmNoKGJyYW5jaE9wY29kZSwgbW9kZSkKKyAgICBj
YXNlIG1vZGUKKyAgICB3aGVuIDpub3JtYWwKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0iCisgICAgd2hlbiA6cmV2ZXJzZQorICAgICAgJGFzbS5wdXRzICJcdHVjb21p
c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDpkb3VibGUpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSBtb2RlLmluc3BlY3QKKyAg
ICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0ueDg2
TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlKG9wY29kZVN1ZmZp
eCwga2luZCkKKyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRz
WzBdLnZhbHVlID09IDAgYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNv
ZGVTdWZmaXggPT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRz
ICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQp
fSIKKyAgICBlbHNpZiBvcGVyYW5kc1sxXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzFd
LnZhbHVlID09IDAgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVT
dWZmaXggPT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJc
dHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0Y21wI3t4ODZTdWZmaXgoa2luZCl9ICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5k
KX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludEJyYW5jaChicmFuY2hP
cGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShicmFuY2hPcGNvZGVbMS4uLTFd
LCBraW5kKQorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS54
ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJh
bmQpCisgICAgaWYgb3BlcmFuZC5zdXBwb3J0czhCaXRPblg4NgorICAgICAgJGFzbS5wdXRzICJc
dCN7c2V0T3Bjb2RlfSAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9IgorICAgICAgJGFzbS5w
dXRzICJcdG1vdnpibCAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmQueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3Bl
cmFuZC54ODZPcGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHQje3NldE9w
Y29kZX0gJWFsIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAlYWwsICVlYXgiCisgICAgICAk
YXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAg
IGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlU2V0KHNldE9wY29kZSwg
a2luZCkKKyAgICBoYW5kbGVYODZJbnRDb21wYXJlKHNldE9wY29kZVszLi4tMV0sIGtpbmQpCisg
ICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHNbMl0pCisgIGVuZAorICAKKyAgZGVm
IGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgICAgY2FzZSBv
cGVyYW5kcy5zaXplCisgICAgd2hlbiAyCisgICAgICBtYXNrID0gSW1tZWRpYXRlLm5ldyhjb2Rl
T3JpZ2luLCAtMSkKKyAgICB3aGVuIDMKKyAgICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICAgIGVs
c2UKKyAgICAgIHJhaXNlICJFeHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMsIGJ1dCBnb3QgI3tvcGVy
YW5kcy5zaXplfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICAgIAorICAgIGlm
IG1hc2suaXNfYT8gSW1tZWRpYXRlIGFuZCBtYXNrLnZhbHVlID09IC0xCisgICAgICBpZiB2YWx1
ZS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgo
a2luZCl9ICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChraW5k
KX0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiXHRjbXAje3g4NlN1ZmZpeChraW5k
KX0gJDAsICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNlCisg
ICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje21hc2sueDg2T3BlcmFu
ZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIGhhbmRsZVg4NkJyYW5jaFRlc3QoYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRs
ZVg4NlRlc3Qoa2luZCkKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFu
ZHMubGFzdC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldFRlc3Qoc2V0
T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICBoYW5kbGVYODZTZXQo
c2V0T3Bjb2RlLCBvcGVyYW5kcy5sYXN0KQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcEJy
YW5jaChvcGNvZGUsIGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhOdW1P
cGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGNhc2Ugb3BlcmFu
ZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAg
d2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICBy
YWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNv
ZGV9ICN7anVtcFRhcmdldC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlN1
YkJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSA0IGFu
ZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgZWxzZQorICAgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMoInN1YiN7
eDg2U3VmZml4KGtpbmQpfSIsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGVuZAorICAg
IGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJh
bmRzWzNdCisgICAgd2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBl
bHNlCisgICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0
I3ticmFuY2hPcGNvZGV9ICN7anVtcFRhcmdldC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVm
IGxvd2VyWDg2CisgICAgJGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICBjYXNlIG9w
Y29kZQorICAgIHdoZW4gImFkZGkiLCAiYWRkcCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0g
MyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVzcyBv
cGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5k
c1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAK
KyAgICAgICAgICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAg
ICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UK
KyAgICAgICAgICAkYXNtLnB1dHMgIlx0bGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQp
fSIKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJh
bmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFd
LmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/
IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJcdGxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICB1bmxlc3MgSW1t
ZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgJGFzbS5wdXRzICJc
dGFkZGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZW5k
CisgICAgd2hlbiAiYW5kaSIsICJhbmRwIgorICAgICAgaGFuZGxlWDg2T3AoImFuZGwiLCA6aW50
KQorICAgIHdoZW4gImxzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2FsbCIsIDppbnQp
CisgICAgd2hlbiAibXVsaSIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFu
ZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICRhc20ucHV0cyAiXHRpbXVsbCAje3g4Nk9w
ZXJhbmRzKDppbnQsIDppbnQsIDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgIyBGSVhNRTog
Y291bGQgZG8gc29tZSBwZWVwaG9sZSBpbiBjYXNlIHRoZSBsZWZ0IG9wZXJhbmQgaXMgaW1tZWRp
YXRlIGFuZCBpdCdzCisgICAgICAgICMgYSBwb3dlciBvZiB0d28uCisgICAgICAgIGhhbmRsZVg4
Nk9wKCJpbXVsbCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJuZWdpIgorICAgICAgJGFz
bS5wdXRzICJcdG5lZ2wgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAibm90aSIKKyAg
ICAgICRhc20ucHV0cyAiXHRub3RsICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm9y
aSIsICJvcnAiCisgICAgICBoYW5kbGVYODZPcCgib3JsIiwgOmludCkKKyAgICB3aGVuICJyc2hp
ZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNhcmwiLCA6aW50KQorICAgIHdoZW4gInVyc2hp
ZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNocmwiLCA6aW50KQorICAgIHdoZW4gInN1Ymki
LCAic3VicCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMV0gPT0g
b3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
IGVsc2UKKyAgICAgICAgaGFuZGxlWDg2T3AoInN1YmwiLCA6aW50KQorICAgICAgZW5kCisgICAg
d2hlbiAieG9yaSIsICJ4b3JwIgorICAgICAgaGFuZGxlWDg2T3AoInhvcmwiLCA6aW50KQorICAg
IHdoZW4gImxvYWRpIiwgInN0b3JlaSIsICJsb2FkcCIsICJzdG9yZXAiCisgICAgICAkYXNtLnB1
dHMgIlx0bW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICB3aGVuICJsb2FkYiIK
KyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRl
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGgiCisg
ICAgICAkYXNtLnB1dHMgIlx0bW92endsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInN0b3JlYiIKKyAg
ICAgICRhc20ucHV0cyAiXHRtb3ZiICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0iCisgICAg
d2hlbiAibG9hZGQiLCAibW92ZWQiLCAic3RvcmVkIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNk
ICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImFkZGQiCisgICAg
ICAkYXNtLnB1dHMgIlx0YWRkc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisg
ICAgd2hlbiAiZGl2ZCIKKyAgICAgICRhc20ucHV0cyAiXHRkaXZzZCAje3g4Nk9wZXJhbmRzKDpk
b3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJzdWJkIgorICAgICAgJGFzbS5wdXRzICJcdHN1
YnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gIm11bGQiCisg
ICAgICAkYXNtLnB1dHMgIlx0bXVsc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0i
CisgICAgd2hlbiAic3FydGQiCisgICAgICAkYXNtLnB1dHMgIlx0c3FydHNkICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0iCisgICAgd2hlbiAiY2kyZCIKKyAgICAgICRhc20ucHV0cyAiXHRjdnRzaTJzZCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9IgorICAgIHdoZW4gImJkZXEiCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5p
cXVlKCJiZGVxIikKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisg
ICAgICAkYXNtLnB1dHMgIlx0anAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNV
bm9yZGVyZWQpLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJl
bmNlLm5ldyhjb2RlT3JpZ2luLCBvcGVyYW5kc1syXSkueDg2TGFiZWx9IgorICAgICAgaXNVbm9y
ZGVyZWQubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRuZXEiCisgICAgICBoYW5kbGVYODZEb3Vi
bGVCcmFuY2goImpuZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRndCIKKyAgICAgIGhhbmRsZVg4
NkRvdWJsZUJyYW5jaCgiamEiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgIGhh
bmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0IgorICAg
ICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHRl
cSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOnJldmVyc2UpCisgICAgd2hl
biAiYmRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwpCisg
ICAgd2hlbiAiYmRuZXF1biIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUo
ImJkbmVxdW4iKQorICAgICAgaXNFcXVhbCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikK
KyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91
YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1
dHMgIlx0anAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4
NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2Rl
T3JpZ2luLCBpc0VxdWFsKS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2
IikKKyAgICAgICRhc20ucHV0cyAiXHRqbXAgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAg
ICBpc0VxdWFsLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkZ3R1biIKKyAgICAgIGhhbmRsZVg4
NkRvdWJsZUJyYW5jaCgiamIiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAg
IGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamJlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdHVu
IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpub3JtYWwpCisgICAgd2hlbiAi
YmRsdGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3JtYWwpCisg
ICAgd2hlbiAiYnRkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgICAkYXNtLnB1dHMgIlx0Y21wbCAkMHg4MDAwMDAwMCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7b3BlcmFuZHNbMl0ueDg2TGFi
ZWx9IgorICAgIHdoZW4gInRkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgd2hlbiAiYmNkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20u
cHV0cyAiXHRqZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRj
dnRzaTJzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRh
c20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4
bW03IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAg
ICAgJGFzbS5wdXRzICJcdGpuZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJt
b3ZkeiIKKyAgICAgICRhc20ucHV0cyAiXHR4b3JwZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4g
InBvcCIKKyAgICAgICRhc20ucHV0cyAiXHRwb3AgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICB3aGVuICJwdXNoIgorICAgICAgJGFzbS5wdXRzICJcdHB1c2ggI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJw
IgorICAgICAgaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdIGFuZCBvcGVy
YW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHR4b3JsICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgICBlbHNpZiBvcGVyYW5kc1swXSAhPSBvcGVyYW5kc1sxXQorICAgICAgICAkYXNt
LnB1dHMgIlx0bW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgIGVuZAorICAg
IHdoZW4gIm5vcCIKKyAgICAgICRhc20ucHV0cyAiXHRub3AiCisgICAgd2hlbiAiYmllcSIsICJi
cGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDppbnQpCisgICAgd2hlbiAiYmlu
ZXEiLCAiYnBuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDppbnQpCisgICAg
d2hlbiAiYmlhIiwgImJwYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6aW50KQor
ICAgIHdoZW4gImJpYWVxIiwgImJwYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUi
LCA6aW50KQorICAgIHdoZW4gImJpYiIsICJicGIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpiIiwgOmludCkKKyAgICB3aGVuICJiaWJlcSIsICJicGJlcSIKKyAgICAgIGhhbmRsZVg4Nklu
dEJyYW5jaCgiamJlIiwgOmludCkKKyAgICB3aGVuICJiaWd0IiwgImJwZ3QiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImpnIiwgOmludCkKKyAgICB3aGVuICJiaWd0ZXEiLCAiYnBndGVxIgor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6aW50KQorICAgIHdoZW4gImJpbHQiLCAi
YnBsdCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6aW50KQorICAgIHdoZW4gImJp
bHRlcSIsICJicGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsZSIsIDppbnQpCisg
ICAgd2hlbiAiYmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6Ynl0ZSkKKyAg
ICB3aGVuICJiYm5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmJ5dGUpCisg
ICAgd2hlbiAiYmJhIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDpieXRlKQorICAg
IHdoZW4gImJiYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6Ynl0ZSkKKyAg
ICB3aGVuICJiYmIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmJ5dGUpCisgICAg
d2hlbiAiYmJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRlKQorICAg
IHdoZW4gImJiZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmJ5dGUpCisgICAg
d2hlbiAiYmJndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6Ynl0ZSkKKyAg
ICB3aGVuICJiYmx0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDpieXRlKQorICAg
IHdoZW4gImJibHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6Ynl0ZSkK
KyAgICB3aGVuICJidGlvIiwgImJ0cG8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIs
IDppbnQpCisgICAgd2hlbiAiYnRpcyIsICJidHBzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVz
dCgianMiLCA6aW50KQorICAgIHdoZW4gImJ0aXoiLCAiYnRweiIKKyAgICAgIGhhbmRsZVg4NkJy
YW5jaFRlc3QoImp6IiwgOmludCkKKyAgICB3aGVuICJidGlueiIsICJidHBueiIKKyAgICAgIGhh
bmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDppbnQpCisgICAgd2hlbiAiYnRibyIKKyAgICAgIGhh
bmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRicyIKKyAgICAgIGhh
bmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRieiIKKyAgICAgIGhh
bmRsZVg4NkJyYW5jaFRlc3QoImp6IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRibnoiCisgICAgICBo
YW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJqbXAiCisgICAgICAk
YXNtLnB1dHMgIlx0am1wICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAg
IHdoZW4gImJhZGRpbyIsICJiYWRkcG8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIs
ICJqbyIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlzIiwgImJhZGRwcyIKKyAgICAgIGhhbmRsZVg4
Nk9wQnJhbmNoKCJhZGRsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJiYWRkaXoiLCAiYmFkZHB6
IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianoiLCA6aW50KQorICAgIHdoZW4g
ImJhZGRpbnoiLCAiYmFkZHBueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpu
eiIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlvIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJq
byIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlzIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJq
cyIsIDppbnQpCisgICAgd2hlbiAiYnN1Yml6IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJq
eiIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlueiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgi
am56IiwgOmludCkKKyAgICB3aGVuICJibXVsaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgi
aW11bGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJtdWxpcyIKKyAgICAgIGhhbmRsZVg4Nk9w
QnJhbmNoKCJpbXVsbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm11bGl6IgorICAgICAgaGFu
ZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJibXVsaW56Igor
ICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAi
Ym9yaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpvIiwgOmludCkKKyAgICB3
aGVuICJib3JpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianMiLCA6aW50KQor
ICAgIHdoZW4gImJvcml6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqeiIsIDpp
bnQpCisgICAgd2hlbiAiYm9yaW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJq
bnoiLCA6aW50KQorICAgIHdoZW4gImJyZWFrIgorICAgICAgJGFzbS5wdXRzICJcdGludCAkMyIK
KyAgICB3aGVuICJjYWxsIgorICAgICAgJGFzbS5wdXRzICJcdGNhbGwgI3tvcGVyYW5kc1swXS54
ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicmV0IgorICAgICAgJGFzbS5wdXRzICJc
dHJldCIKKyAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJl
U2V0KCJzZXRlIiwgOmludCkKKyAgICB3aGVuICJjaW5lcSIsICJjcG5lcSIKKyAgICAgIGhhbmRs
ZVg4NkludENvbXBhcmVTZXQoInNldG5lIiwgOmludCkKKyAgICB3aGVuICJjaWEiLCAiY3BhIgor
ICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YSIsIDppbnQpCisgICAgd2hlbiAiY2lh
ZXEiLCAiY3BhZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRhZSIsIDppbnQp
CisgICAgd2hlbiAiY2liIiwgImNwYiIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNl
dGIiLCA6aW50KQorICAgIHdoZW4gImNpYmVxIiwgImNwYmVxIgorICAgICAgaGFuZGxlWDg2SW50
Q29tcGFyZVNldCgic2V0YmUiLCA6aW50KQorICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAg
IGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGciLCA6aW50KQorICAgIHdoZW4gImNpZ3RlcSIs
ICJjcGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnZSIsIDppbnQpCisg
ICAgd2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
bCIsIDppbnQpCisgICAgd2hlbiAiY2lsdGVxIiwgImNwbHRlcSIKKyAgICAgIGhhbmRsZVg4Nklu
dENvbXBhcmVTZXQoInNldGxlIiwgOmludCkKKyAgICB3aGVuICJ0aW8iCisgICAgICBoYW5kbGVY
ODZTZXRUZXN0KCJzZXRvIiwgOmludCkKKyAgICB3aGVuICJ0aXMiCisgICAgICBoYW5kbGVYODZT
ZXRUZXN0KCJzZXRzIiwgOmludCkKKyAgICB3aGVuICJ0aXoiCisgICAgICBoYW5kbGVYODZTZXRU
ZXN0KCJzZXR6IiwgOmludCkKKyAgICB3aGVuICJ0aW56IgorICAgICAgaGFuZGxlWDg2U2V0VGVz
dCgic2V0bnoiLCA6aW50KQorICAgIHdoZW4gInRibyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3Qo
InNldG8iLCA6Ynl0ZSkKKyAgICB3aGVuICJ0YnMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJz
ZXRzIiwgOmJ5dGUpCisgICAgd2hlbiAidGJ6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0
eiIsIDpieXRlKQorICAgIHdoZW4gInRibnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRu
eiIsIDpieXRlKQorICAgIHdoZW4gInBlZWsiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29w
ZXJhbmRzWzBdLnZhbHVlICogNH0oJWVzcCksICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgd2hlbiAicG9rZSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0udmFsdWUgKiA0fSglZXNwKSIKKyAg
ICB3aGVuICJjZHFpIgorICAgICAgJGFzbS5wdXRzICJcdGNkcSIKKyAgICB3aGVuICJpZGl2aSIK
KyAgICAgICRhc20ucHV0cyAiXHRpZGl2bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgIHdoZW4gImZpaTJkIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIK
KyAgICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0s
ICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHBzbGxxICQzMiwgJXhtbTciCisgICAgICAkYXNt
LnB1dHMgIlx0cG9yICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9Igor
ICAgIHdoZW4gImZkMmlpIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICAgICRhc20ucHV0cyAiXHRtb3ZzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwc3JscSAkMzIsICV4bW03IgorICAgICAgJGFz
bS5wdXRzICJcdG1vdnNkICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQgb3Bjb2RlOiAje29wY29kZX0iCisgICAgZW5kCisg
IGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVj
aWFsaXphdGlvbktpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKyNkZWZpbmUgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZF9oCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIENvZGVTcGVjaWFs
aXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAko
cmV2aXNpb24gMTA1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQ29t
bW9uU2xvd1BhdGhzX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvZGVT
cGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5j
bHVkZSAiSlNBcnJheS5oIgogCkBAIC00MSw2ICs0MiwzOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
bmFtZXNwYWNlIENvbW1vblNsb3dQYXRocyB7CiAKK0FMV0FZU19JTkxJTkUgRXhlY1N0YXRlKiBh
cml0eUNoZWNrRm9yKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUg
PSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0
RnVuY3Rpb24oKSk7CisgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4
ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgaW50IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzID0gZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsK
KworICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNj
ZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgorICAgIGlmICgh
cmVnaXN0ZXJGaWxlLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBu
ZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CisKKyAgICAvLyBUb28gZmV3IGFyZ3VtZW50
cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3Npbmcg
YXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgorICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CisgICAgUmVn
aXN0ZXIqIHNyYyA9IGV4ZWMtPnJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyKiBkc3QgPSBleGVj
LT5yZWdpc3RlcnMoKSArIGRlbHRhOworCisgICAgaW50IGk7CisgICAgaW50IGVuZCA9IC1FeGVj
U3RhdGU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgZm9yIChp
ID0gLTE7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKKworICAgIGVu
ZCAtPSBkZWx0YTsKKyAgICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9
IGpzVW5kZWZpbmVkKCk7CisKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBFeGVjU3RhdGU6OmNy
ZWF0ZShkc3QpOworICAgIEFTU0VSVCgodm9pZCopbmV3RXhlYyA8PSByZWdpc3RlckZpbGUtPmVu
ZCgpKTsKKyAgICByZXR1cm4gbmV3RXhlYzsKK30KKwogQUxXQVlTX0lOTElORSBib29sIG9wSW5z
dGFuY2VPZlNsb3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGJhc2VW
YWwsIEpTVmFsdWUgcHJvdG8pCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0NlbGwoKSB8fCAhYmFz
ZVZhbC5pc0NlbGwoKSB8fCAhcHJvdG8uaXNDZWxsKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxMDU2NDUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCisjaW5jbHVkZSAiRXhlY3V0
aW9uSGFybmVzcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVERyaXZlci5oIgog
I2luY2x1ZGUgIlBhcnNlci5oIgpAQCAtODQsNyArODUsNyBAQCBJbnRyaW5zaWMgTmF0aXZlRXhl
Y3V0YWJsZTo6aW50cmluc2ljKCkgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIHZvaWQg
amV0dGlzb25Db2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8VD4mIGNv
ZGVCbG9jaykKIHsKLSAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgIT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29k
ZUJsb2NrLT5nZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2
ZSgpKTsKICAgICBPd25QdHI8VD4gY29kZUJsb2NrVG9KZXR0aXNvbiA9IGNvZGVCbG9jay5yZWxl
YXNlKCk7CiAgICAgY29kZUJsb2NrID0gc3RhdGljX3BvaW50ZXJfY2FzdDxUPihjb2RlQmxvY2tU
b0pldHRpc29uLT5yZWxlYXNlQWx0ZXJuYXRpdmUoKSk7CkBAIC0xNjcsOSArMTY4LDMwIEBAIEpT
T2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXoKICAgICByZXR1cm4gZXJyb3I7
CiB9CiAKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xv
YmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0
b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCitp
bmxpbmUgY29uc3QgY2hhciogc2FtcGxpbmdEZXNjcmlwdGlvbihKSVRDb2RlOjpKSVRUeXBlIGpp
dFR5cGUpCit7CisgICAgc3dpdGNoIChqaXRUeXBlKSB7CisgICAgY2FzZSBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rOgorICAgICAgICByZXR1cm4gIkludGVycHJldGVyIENvbXBpbGF0aW9uIChU
T1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6QmFzZWxpbmVKSVQ6CisgICAgICAgIHJldHVybiAi
QmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6
CisgICAgICAgIHJldHVybiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGRlZmF1bHQ6
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
Cit9CisKIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0
ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBl
IGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9
PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6
ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5n
UmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUo
SklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTIxMCw3ICsyMzIsNyBAQCBKU09i
amVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hCiAgICAgfQogCiAjaWYgRU5BQkxF
KEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRhLCBtX2V2
YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFy
ZUZvckV4ZWN1dGlvbigqZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JD
YWxsLCBqaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtMjk1LDkgKzMx
NywxNSBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpCiAgICAgcmV0
dXJuIGVycm9yOwogfQogCit2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpqaXRDb21waWxlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJZkFw
cHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2Fs
bCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0KTsKK30KKwogSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJu
YWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENv
ZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lv
bihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9u
IChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdp
b24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAj
aWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtMzM2LDcgKzM2
NCw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGUKICAgICB9CiAK
ICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoKmdsb2Jh
bERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCisg
ICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKCpnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxv
Y2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRp
ZgogCkBAIC00MTIsNyArNDQwLDcgQEAgRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6YgogICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAgIHJlc3Vs
dCA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4ocmVzdWx0LT5hbHRlcm5hdGl2ZSgp
KTsKICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkg
PT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5l
Q29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAg
LTQzOCw2ICs0NjYsMTggQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZU9w
dAogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENv
bXBpbGVGb3JDYWxsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3Vs
dCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxv
Y2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hl
Y2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpq
aXRDb21waWxlRm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBi
b29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwg
bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2Rl
Rm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRv
bVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEZ1
bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja1dpdGhCeXRlY29k
ZUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgRnVuY3Rpb25Db2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwpAQCAtNDgyLDcgKzUy
Miw3IEBAIFBhc3NPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+IEZ1bmN0aW9uRXgKIAogSlNPYmpl
Y3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbChFeGVjU3RhdGUq
IGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBq
aXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAi
REZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1Jl
Z2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJ
VCkKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC01MDQsNyArNTQ0LDcgQEAgSlNPYmplY3Qq
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2Nv
ZGVCbG9ja0ZvckNhbGwtPnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQot
ICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9iYWxEYXRh
KCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2Fs
bFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBh
cmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9y
Q2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBt
X3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9yQ2FsbCkpCiAgICAgICAgIHJldHVybiAwOwog
I2VuZGlmCiAKQEAgLTUyNCw3ICs1NjQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxl
Ojpjb21waWxlRm9yCiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JD
b25zdHJ1Y3RJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNo
YWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxp
bmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAg
ICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5
cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7
CkBAIC01NDYsNyArNTg2LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGls
ZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+c2hhcmVk
U3ltYm9sVGFibGUoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVu
Y3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDb25z
dHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFy
aXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZ1bmN0
aW9uRm9yRXhlY3V0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1
Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5
Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENvZGVGb3JDb25zdHJ1Y3QpKQogICAgICAg
ICByZXR1cm4gMDsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxMDU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAK
ICNkZWZpbmUgRXhlY3V0YWJsZV9oCiAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgorI2luY2x1ZGUg
IkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtMzksMTIgKzQwLDEy
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIERlYnVnZ2VyOwogICAgIGNsYXNzIEV2YWxD
b2RlQmxvY2s7CiAgICAgY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3Mg
U2NvcGVDaGFpbk5vZGU7CiAKICAgICBzdHJ1Y3QgRXhjZXB0aW9uSW5mbzsKICAgICAKLSAgICBl
bnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVj
dCB9OwogICAgIGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxhdGlvbiwgT3B0aW1p
emluZ0NvbXBpbGF0aW9uIH07CiAKICAgICBpbmxpbmUgYm9vbCBpc0NhbGwoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQpAQCAtMzE5LDYgKzMyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IH07CiAKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxl
IHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJs
aWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC0zMzgsNiAr
MzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAg
ICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2
b2lkIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBFdmFsQ29k
ZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC0zODQsNiArMzg3LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIDogcHVibGljIFNj
cmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7
CiAKQEAgLTQxMSw2ICs0MTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5B
QkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGUoSlNHbG9iYWxEYXRh
Jik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAg
ICAgICAgIFByb2dyYW1Db2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkKQEAgLTQ1Myw2ICs0
NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC01MDgsNiArNTE0LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZv
aWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ2FsbChKU0dsb2JhbERhdGEmKTsKKyAgICAgICAg
dm9pZCBqaXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAg
IGJvb2wgaXNHZW5lcmF0ZWRGb3JDYWxsKCkgY29uc3QKQEAgLTUzNSw2ICs1NDIsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0
aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZv
aWQgaml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAg
ICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3QoKSBjb25zdApAQCAtNTgyLDYgKzU5MCwx
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBqZXR0aXNvbk9wdGltaXplZENv
ZGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvcihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgICAgICBqaXRDb21waWxlRm9y
Q2FsbChnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAg
ICAgIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CisgICAgICAgIH0KICNlbmRp
ZgogICAgICAgICAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvcihDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRp
b25IYXJuZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
RXhlY3V0aW9uSGFybmVzc19oCisjZGVmaW5lIEV4ZWN1dGlvbkhhcm5lc3NfaAorCisjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiSklURHJp
dmVyLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCituYW1lc3BhY2UgSlNDIHsK
KwordGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KK2lubGluZSBib29sIHByZXBhcmVG
b3JFeGVjdXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlw
ZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBl
KQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUo
aml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJw
cmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRFbnRyeXBvaW50KGdsb2JhbERhdGEsIGNvZGVCbG9j
ay5nZXQoKSwgaml0Q29kZSk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2Rl
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVJZkFwcHJvcHJp
YXRlKGdsb2JhbERhdGEsIGNvZGVCbG9jaywgaml0Q29kZSwgaml0VHlwZSk7Cit9CisKK2lubGlu
ZSBib29sIHByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29k
ZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5
bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklU
Q29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGlu
IHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRGdW5jdGlvbkVu
dHJ5cG9pbnQoZ2xvYmFsRGF0YSwga2luZCwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNr
KTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJp
dHlDaGVjayk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKGtpbmQpOworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKyAgICByZXR1cm4gaml0Q29t
cGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENvZGUs
IGppdENvZGVXaXRoQXJpdHlDaGVjaywgc3ltYm9sVGFibGUsIGppdFR5cGUpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKKyNlbmRpZiAvLyBFeGVj
dXRpb25IYXJuZXNzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
Y3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDEwNTY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVu
a25vd24+ID4gcmVnaXN0ZXJBcnJheSA9IGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxV
bmtub3duPltyZWdpc3RlckFycmF5U2l6ZV0pOwogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93
bj4qIHJlZ2lzdGVycyA9IHJlZ2lzdGVyQXJyYXkuZ2V0KCkgKyByZWdpc3Rlck9mZnNldDsKLQor
ICAgICAgICAKICAgICAgICAgLy8gQ29weSBhbGwgYXJndW1lbnRzIHRoYXQgY2FuIGJlIGNhcHR1
cmVkIGJ5IG5hbWUgb3IgYnkgdGhlIGFyZ3VtZW50cyBvYmplY3QuCiAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbV9udW1DYXB0dXJlZEFyZ3M7ICsraSkgewogICAgICAgICAgICAgaW50IGlu
ZGV4ID0gQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEwNTY0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgs
NyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVi
bGljIFdyaXRlQmFycmllcjxVbmtub3duPiB7CiAgICAgICAgIHR5cGVkZWYgV3JpdGVCYXJyaWVy
PFVua25vd24+IEJhc2U7CkBAIC0xMjIsNiArMTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
fTsKIAogICAgIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBXYWxrZXI7CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTA1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBACiBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIFN0
cnVjdHVyZTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJv
cGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OworICAgIGNsYXNz
IFN0cnVjdHVyZTsKIAogICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhjbHVk
ZURvbnRFbnVtUHJvcGVydGllcywKQEAgLTE2NSw2ICsxNjYsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0Kiwg
RXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAgICAgCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAgICAgICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAgIH07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxMDU2NDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rp
b25Qcm90b3R5cGU7CiAgICAgY2xhc3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFs
T2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRp
dmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgbmFtZXNwYWNlIERGRyB7
CkBAIC0xNDAsNiArMTQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29u
c3Q7CiAKICAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSos
IEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMTA1NjQ1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQxLDYgKzE0MSw4IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERh
dGFUeXAKICAgICAsIGtleXdvcmRzKGFkb3B0UHRyKG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAg
LCBpbnRlcnByZXRlcigwKQogICAgICwgaGVhcCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJy
YXlDbGFzc0luZm8oJkpTQXJyYXk6OnNfaW5mbykKKyAgICAsIGpzRmluYWxPYmplY3RDbGFzc0lu
Zm8oJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIHNp
emVPZkxhc3RTY3JhdGNoQnVmZmVyKDApCiAjZW5kaWYKQEAgLTIxNiw3ICsyMTgsNyBAQCBKU0ds
b2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgaml0U3R1YnMgPSBhZG9w
dFB0cihuZXcgSklUVGh1bmtzKHRoaXMpKTsKICNlbmRpZgogCi0gICAgaW50ZXJwcmV0ZXItPmlu
aXRpYWxpemUodGhpcy0+Y2FuVXNlSklUKCkpOworICAgIGludGVycHJldGVyLT5pbml0aWFsaXpl
KCZsbGludERhdGEsIHRoaXMtPmNhblVzZUpJVCgpKTsKIAogICAgIGhlYXAubm90aWZ5SXNTYWZl
VG9Db2xsZWN0KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuaAkocmV2aXNpb24gMTA1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNiBA
QAogI2RlZmluZSBKU0dsb2JhbERhdGFfaAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50
YWxGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0
YW5jZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUg
IkhlYXAuaCIKLSNpbmNsdWRlICJTdHJvbmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNp
bmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTElu
dERhdGEuaCIKICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3Ry
aW5ncy5oIgorI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNp
bmNsdWRlICJUaW1lb3V0Q2hlY2tlci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1
LDYgKzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAg
ICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3Mg
UGFyc2VyQXJlbmE7CiAgICAgY2xhc3MgUmVnRXhwQ2FjaGU7CkBAIC0yNDEsNiArMjQzLDEyIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBl
eGNlcHRpb247CisKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJ
bmZvOworICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0lu
Zm87CisKKyAgICAgICAgTExJbnQ6OkRhdGEgbGxpbnREYXRhOworCiAjaWYgRU5BQkxFKEpJVCkK
ICAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNW
YWx1ZSBob3N0Q2FsbFJldHVyblZhbHVlOwpAQCAtMzQ2LDYgKzM1NCw4IEBAIG5hbWVzcGFjZSBK
U0MgewogI3VuZGVmIHJlZ2lzdGVyVHlwZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgor
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAg
ICAgICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBT
aXplKTsKICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJu
YWwoKTsKICAgICAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDU2
NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBH
bG9iYWxDb2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNs
YXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsK
ICAgICBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKQEAgLTMzNSw2ICszMzYsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRTdGF0aWNHbG9iYWxz
KEdsb2JhbFByb3BlcnR5SW5mbyosIGludCBjb3VudCk7CiAKICAgICBwcml2YXRlOgorICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAg
Ly8gRklYTUU6IEZvbGQgcmVzZXQgaW50byBpbml0LgogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CiAgICAgICAgIHZvaWQgcmVzZXQoSlNW
YWx1ZSBwcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNP
YmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09i
amVjdC5oCShyZXZpc2lvbiAxMDU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAg
Y2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAgICAgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwog
ICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwpAQCAtMjcxLDYgKzI3Miw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9w
ZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gTm9i
b2R5IHNob3VsZCBldmVyIGFzayBhbnkgb2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0aGluZyBh
bHJlYWR5IGtub3duIHRvIGJlIGEgSlNPYmplY3QuCiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNB
UElWYWx1ZVdyYXBwZXI7CiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7CkBA
IC0zODMsNiArMzg2LDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3Rv
cgogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJpdmF0ZToK
KyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAg
ICAgICAgIGV4cGxpY2l0IEpTRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwg
c3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJ
KHJldmlzaW9uIDEwNTY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNPYmplY3Q7
CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvciA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgSklU
OwpAQCAtOTYsNiArOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJp
dmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAg
ICAgCiAgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlO
YW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVT
bG90KTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhY2hlZFN0cnVjdHVy
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNp
b24gMTA1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAko
d29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBKU1N0cmluZzsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBK
U1N0cmluZyoganNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKICAgICBKU1N0cmluZyoganNF
bXB0eVN0cmluZyhFeGVjU3RhdGUqKTsKQEAgLTI0MSw2ICsyNDIsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzb2x2
ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2Fz
ZTgoTENoYXIqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFy
KikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5m
by5oCShyZXZpc2lvbiAxMDU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNl
cyBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJs
ZS4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8
PCAxOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEg
PDwgMjsKQEAgLTg3LDYgKzg5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgICAgIAogICAgICAgICBib29sIGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3Qg
eyBBU1NFUlQoZmxhZyA8PSAoMSA8PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAg
ICAgICBib29sIGlzU2V0T25GbGFnczIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxh
ZyA+PSAoMSA8PCA4KSk7IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxMDU2
NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE2LDEwICsxMTYsOSBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6
ZVByb3RvdHlwZShFCiAgICAgcmV0dXJuIEpTTm90QW5PYmplY3Q6OmNyZWF0ZShleGVjKTsKIH0K
IAotI2lmbmRlZiBOREVCVUcKIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIHsKLSAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSA2NDsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNp
emUgPSAxMjg7CiAgICAgc3RhdGljIGNoYXIgZGVzY3JpcHRpb25bc2l6ZV07CiAKICAgICBpZiAo
ISp0aGlzKQpAQCAtMTI4LDE0ICsxMjcsMTQgQEAgY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24o
KQogICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkludDMyOiAlZCIsIGFzSW50
MzIoKSk7CiAgICAgZWxzZSBpZiAoaXNEb3VibGUoKSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0g
ICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICVseCIsIGFz
RG91YmxlKCksIHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIoYXNEb3VibGUoKSkpOworICAgICAg
ICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWx4LCAlbGYiLCByZWludGVy
cHJldERvdWJsZVRvSW50cHRyKGFzRG91YmxlKCkpLCBhc0RvdWJsZSgpKTsKICNlbHNlCiAgICAg
ICAgIHVuaW9uIHsKICAgICAgICAgICAgIGRvdWJsZSBhc0RvdWJsZTsKICAgICAgICAgICAgIHVp
bnQzMl90IGFzVHdvSW50MzJzWzJdOwogICAgICAgICB9IHU7CiAgICAgICAgIHUuYXNEb3VibGUg
PSBhc0RvdWJsZSgpOwotICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJs
ZTogJWxmLCAlMDh4OiUwOHgiLCBhc0RvdWJsZSgpLCB1LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdv
SW50MzJzWzBdKTsKKyAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6
ICUwOHg6JTA4eCwgJWxmIiwgdS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSwgYXNE
b3VibGUoKSk7CiAjZW5kaWYKICAgICB9IGVsc2UgaWYgKGlzQ2VsbCgpKQogICAgICAgICBzbnBy
aW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkNlbGw6ICVwIiwgYXNDZWxsKCkpOwpAQCAtMTUyLDcg
KzE1MSw2IEBAIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIAogICAgIHJldHVybiBkZXNj
cmlwdGlvbjsKIH0KLSNlbmRpZgogCiAvLyBUaGlzIGluIHRoZSBUb0ludDMyIG9wZXJhdGlvbiBp
cyBkZWZpbmVkIGluIHNlY3Rpb24gOS41IG9mIHRoZSBFQ01BLTI2MiBzcGVjLgogLy8gTm90ZSB0
aGF0IHRoaXMgb3BlcmF0aW9uIGlzIGlkZW50aWNhbCB0byBUb1VJbnQzMiBvdGhlciB0aGFuIHRv
IGludGVycHJldGF0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1
ZS5oCShyZXZpc2lvbiAxMDU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMyw5ICsyMzMsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgSlNDZWxsKiBhc0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGNo
YXIqIGRlc2NyaXB0aW9uKCk7Ci0jZW5kaWYKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHRlbXBs
YXRlIDxjbGFzcyBUPiBKU1ZhbHVlKFdyaXRlQmFycmllckJhc2U8VD4pOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNp
b24gMTA1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9i
amVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTIgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUmVnaXN0
ZXI7CiAKICAgICBjbGFzcyBKU1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmpl
Y3QgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9u
RmluYWxPYmplY3QgQmFzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuY3BwCShyZXZpc2lvbiAxMDU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTAgQEAgdW5zaWdu
ZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saQogCiB1bnNpZ25lZCBtYXhpbXVtSW5s
aW5pbmdEZXB0aDsKIAoraW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldh
cm1VcDsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29u
OworaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBpbnQzMl90IGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogaW50MzJfdCBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKQEAgLTEzNyw2ICsx
NDEsMTAgQEAgdm9pZCBpbml0aWFsaXplT3B0aW9ucygpCiAgICAgCiAgICAgU0VUKG1heGltdW1J
bmxpbmluZ0RlcHRoLCA1KTsKIAorICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRB
ZnRlcldhcm1VcCwgICAgIC0xMDApOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JE
b250SklUQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsK
KyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbiwgICAgICAgICAgICAtMTAw
KTsKKwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVw
LCAgICAgLTEwMDApOwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFm
dGVyTG9uZ1dhcm1VcCwgLTUwMDApOwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JE
b250T3B0aW1pemVBbnl0aW1lU29vbiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWlu
KCkpOwpAQCAtMTg1LDYgKzE5Myw4IEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIGlm
IChjcHVzVG9Vc2UgPCAxKQogICAgICAgICBjcHVzVG9Vc2UgPSAxOwogICAgIAorICAgIGNwdXNU
b1VzZSA9IDE7CisgICAgCiAgICAgU0VUKG51bWJlck9mR0NNYXJrZXJzLCBjcHVzVG9Vc2UpOwog
CiAgICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVT
b29uIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEw
NTY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNiArMzcsMTAgQEAgZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlv
bkZvckNvbnN0cgogCiBleHRlcm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERl
cHRoIG9mIGlubGluZSBzdGFjaywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBl
dGMuCiAKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2Fy
bVVwOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRp
bWVTb29uOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsK
KwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldh
cm1VcDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0
ZXJMb25nV2FybVVwOwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9u
dE9wdGltaXplQW55dGltZVNvb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY29wZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiAxMDU2NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TY29wZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xv
YmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZp
c2l0b3I7CiAgICAgCkBAIC05MSw2ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
dGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0
ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAg
CiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRl
c1Zpc2l0Q2hpbGRyZW47CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEwNTY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5
RGF0YTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZv
IHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29u
c3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYpOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0
dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFp
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmgJKHJldmlzaW9uIDEwNTY0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIAog
bmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAg
Y2xhc3MgU3RydWN0dXJlOwogCiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlND
ZWxsIHsKQEAgLTc0LDYgKzc1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
KTsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3duQXJy
YXlQdHI8V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEwNTY0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTE4LDYgKzkxOCwx
OCBAQAogI2RlZmluZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCisvKiBPbiBzb21lIG9mIHRoZSBw
bGF0Zm9ybXMgd2hlcmUgd2UgaGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNvIGhhdmUgdGhlIAor
ICAgbG93LWxldmVsIGludGVycHJldGVyLiAqLworI2lmICFkZWZpbmVkKEVOQUJMRV9MTElOVCkg
JiYgRU5BQkxFKEpJVCkgJiYgUExBVEZPUk0oTUFDKSAmJiBVU0UoSlNWQUxVRTMyXzY0KQorI2Rl
ZmluZSBFTkFCTEVfTExJTlQgMQorI2VuZGlmCisKKy8qIElmIHdlIGhhdmUgTExJbnQgZW5hYmxl
ZCBhbmQgdGhlIEpJVCBlbmFibGVkLCB3ZSBhbHNvIGVuYWJsZSBPU1JpbmcgZnJvbQorICAgTExJ
bnQgdG8gdGhlIEpJVC4gKi8KKyNpZiAhZGVmaW5lZChFTkFCTEVfTExJTlRfT1NSX1RPX0pJVCkg
JiYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKExMSU5UKQorI2RlZmluZSBFTkFCTEVfTExJTlRfT1NS
X1RPX0pJVCAxCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9ERkdfSklUKSAmJiBFTkFC
TEUoSklUKQogLyogRW5hYmxlIHRoZSBERkcgSklUIG9uIFg4NiBhbmQgWDg2XzY0LiAgT25seSB0
ZXN0ZWQgb24gTWFjIGFuZCBHTlUvTGludXguICovCiAjaWYgKENQVShYODYpIHx8IENQVShYODZf
NjQpKSAmJiAoUExBVEZPUk0oTUFDKSB8fCBPUyhMSU5VWCkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJKHJldmlzaW9uIDEwNTY0NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTg2LDYgKzg2LDggQEAgcHVibGljOgogCiAgICAgaXRlcmF0b3IgYmVnaW4o
KTsKICAgICBpdGVyYXRvciBlbmQoKTsKKyAgICAKKyAgICBib29sIGlzRW1wdHkoKSB7IHJldHVy
biBiZWdpbigpID09IGVuZCgpOyB9CiAKIHByaXZhdGU6CiAgICAgUmF3Tm9kZSBtX2hlYWRTZW50
aW5lbDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAkocmV2aXNpb24gMTA1NjQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0
cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCB0eXBlZGVmIGNvbnN0
IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpCiAvLyBMYW5kaW5nIHRoZSBmaWxlIG1vdmVzIGlu
IG9uZSBwYXRjaCwgd2lsbCBmb2xsb3cgb24gd2l0aCBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgbmFt
ZXNwYWNlcy4KIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IElkZW50aWZpZXJDU3RyaW5nVHJhbnNs
YXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBU
PiBzdHJ1Y3QgSWRlbnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yOwogc3RydWN0IElkZW50aWZp
ZXJMQ2hhckZyb21VQ2hhclRyYW5zbGF0b3I7CiB9CkBAIC03Miw3ICs3Myw4IEBAIGNsYXNzIFN0
cmluZ0ltcGwgewogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpTdWJzdHJpbmdUcmFuc2xhdG9yOwog
ICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAgICAgZnJpZW5k
IGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7Ci0KKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgCiBwcml2YXRlOgogICAgIGVudW0gQnVmZmVyT3duZXJzaGlw
IHsKICAgICAgICAgQnVmZmVySW50ZXJuYWwsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123701</attachid>
            <date>2012-01-23 22:59:46 -0800</date>
            <delta_ts>2012-01-24 12:32:11 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_37.diff</filename>
            <type>text/plain</type>
            <size>435148</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1Njk2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3NyBA
QAorMjAxMi0wMS0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV09SSyBJTiBQUk9HUkVTUy4gIEl0IGFwcGVhcnMgdG8gd29yayBidXQgbmVlZHMg
bW9yZSB0ZXN0aW5nLgorICAgICAgICAKKyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0
ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBjYWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAg
aW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExMSW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVy
LiBKU0Mgd2lsbCBub3cKKyAgICAgICAgd2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBM
TEludCBhbmQgd2lsbCBvbmx5IHRpZXIgdXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIg
dGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4KKyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0
ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9mIG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFj
cm8KKyAgICAgICAgYXNzZW1ibHkgaXMgY29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIg
KHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gKKyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBj
b252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAg
bWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVjdCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5m
b3JtYXRpb24KKyAgICAgICAgKGJhc2ljYWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMg
b2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAgICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGlu
IExMSW50IGFwcGVhcnMgdG8gdGhlIHJlc3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0Cisg
ICAgICAgIHdlcmUgZXhlY3V0aW5nIGluIHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2Ug
ZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAorICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNh
bGxzIGp1c3Qgd29yayBhbmQgcmVxdWlyZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlv
bmFsIG92ZXJoZWFkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIu
NXggZmFzdGVyIHRoYW4gb3VyIG9sZCBpbnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAg
IFY4LCBhbmQgS3Jha2VuLiBUaGlzIGlzIHRoZSAiZmlyc3QgYXR0ZW1wdCIgcGVyZm9ybWFuY2Ug
LSBubyB3b3JrIGhhcyBiZWVuCisgICAgICAgIGRvbmUgdG8gZGlhZ25vc2UgYW55IHBvdGVudGlh
bCBib3R0bGVuZWNrcy4gTWFueSBvYnZpb3VzIG9uZXMgZXhpc3QsIGxpa2UKKyAgICAgICAgcmVk
dWNpbmcgdGhlIG51bWJlciBvZiBpbnN0cnVjdGlvbnMgaW1wbGVtZW50ZWQgYXMgc2xvdyBjYWxs
cyB0byBDKysgY29kZQorICAgICAgICBhbmQgbWFraW5nIHByb3BlcnR5IGFjY2VzcyBjYWNoaW5n
IG1vcmUgYWdncmVzc2l2ZS4KKyAgICAgICAgCisgICAgICAgIEFzIGFuIGFkZGl0aW9uYWwgY2hh
bmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5kIEpTVmFsdWUKKyAgICAg
ICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBkZWJ1Z2dpbmcgc29tZSBv
ZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0Y2ggd291bGQgaGF2ZSBi
ZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAgICBkb24ndCBiZWxpZXZl
IHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxvYXQgdGhhdCB0aGlzCisg
ICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUNv
bnZlbnRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNw
cDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAg
ICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0
KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5j
b25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ry
b25nUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5saW5rQ2FsbHMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUNv
ZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpqZXR0aXNv
bik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAg
IChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6
RXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUltcGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNv
ZGVCbG9jazo6aml0Q29tcGlsZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5lVmVyc2lvbik6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bGlua0luY29taW5nQ2FsbCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmhhbmRsZUJ5dGVj
b2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRD
b21waWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNPcHRpbWl6ZWRSZXBsYWNlbWVu
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRMTEludENhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVzb2x2ZUluZm8pOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpsaWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6Omxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6bGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFk
ZEZyZXF1ZW50RXhpdFNpdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0
aW1lU29vbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmxsaW50RXhlY3V0ZUNvdW50ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAg
ICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6Cisg
ICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNv
ZGUvTExJbnRDYWxsTGlua0luZm8uaDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50Q2FsbExp
bmtJbmZvOjpMTEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJ
bmZvOjp+TExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5m
bzo6aXNMaW5rZWQpOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6dW5saW5rKToK
KyAgICAgICAgKiBieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChK
U0M6Ok1ldGhvZENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29k
ZS9PcGNvZGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6
OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6c2V0RHVtcHNHZW5lcmF0ZWRDb2RlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVj
dFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gpOgorICAgICAgICAqIGRmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omdl
dFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAg
ICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0
Q29tcGlsZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBoZWFwL0FsbG9jYXRpb25TcGFjZS5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAg
ICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAg
ICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxG
cmFtZS5oOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmN1cnJlbnRWUEMpOgorICAgICAgICAq
IGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
On5JbnRlcnByZXRlcik6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjppbml0aWFsaXplKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpy
ZXRyaWV2ZUxhc3RDYWxsZXIpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGUpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZW5h
YmxlZCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmg6CisgICAgICAgICog
aml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Z2V0SG9z
dENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJl
dHVyblZhbHVlLmg6IEFkZGVkLgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6
CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNPcHRp
bWl6aW5nSklUKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNCYXNlbGluZUNvZGUpOgorICAg
ICAgICAoSlNDOjpKSVRDb2RlOjpKSVRDb2RlKToKKyAgICAgICAgKiBqaXQvSklURHJpdmVyLmg6
CisgICAgICAgIChKU0M6OmppdENvbXBpbGVJZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKEpTQzo6
aml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZSk6CisgICAgICAgICogaml0L0pJVEV4Y2Vw
dGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpqaXRUaHJvdyk6CisgICAgICAgICogaml0L0pJVFN0
dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAq
IGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAg
KiBsbGludC9MTEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6
CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50
L0xMSW50RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZ1
bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFdmFsRW50cnlwb2lu
dCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAg
ICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldEVudHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6aW50ZXJwcmV0ZXJUaHJvdyk6CisgICAgICAgIChK
U0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhy
b3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAg
KiBsbGludC9MTEludEhlbHBlcnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6Omxs
aW50X3RyYWNlX29wZXJhbmQpOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfdHJhY2VfdmFs
dWUpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfSEVMUEVSX0RFQ0wpOgorICAgICAgICAo
SlNDOjpMTEludDo6dHJhY2VGdW5jdGlvblByb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnNob3VsZEpJVCk6CisgICAgICAgIChKU0M6OkxMSW50OjplbnRyeU9TUik6CisgICAgICAgIChK
U0M6OkxMSW50OjpyZXNvbHZlR2xvYmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFs
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRPZmZzZXRzRXh0cmFj
dG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5r
cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1w
VG8pOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlD
aGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmV2
YWxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnByb2dyYW1FbnRy
eVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5oOiBBZGRlZC4K
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTogQWRk
ZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICogb2Zm
bGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBv
ZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9zZXR0aW5ncy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS90
cmFuc2Zvcm0ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBBZGRlZC4K
KyAgICAgICAgKiBydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaDogQWRkZWQuCisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xv
d1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3Bw
OgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2YWxF
eGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6c2FtcGxpbmdEZXNjcmlwdGlv
bik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6CisgICAgICAgIChKU0M6
OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbCk6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3Mu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OnByZXBhcmVGb3JFeGVjdXRpb24pOgorICAgICAgICAo
SlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
Y3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dGVhck9mZik6CisgICAg
ICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmlu
Zy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmRlc2NyaXB0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRp
b25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6Cisg
ICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oOgorICAgICAg
ICAoV1RGOjpTZW50aW5lbExpbmtlZExpc3Q6OmlzRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0
L1N0cmluZ0ltcGwuaDoKKwogMjAxMi0wMS0yMyAgTHVrZSBNYWNwaGVyc29uICAgPG1hY3BoZXJz
b25AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDU2
NzYuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2
aXNpb24gMTA1Njk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAwNiwg
MjAwNywgMjAwOCwgMjAwOSwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSwgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTYwLDYgKzYwLDcgQEAgYWxsIDogXAogICAgIFN0cmluZ0NvbnN0cnVjdG9yLmx1dC5oIFwKICAg
ICBTdHJpbmdQcm90b3R5cGUubHV0LmggXAogICAgIGRvY3MvYnl0ZWNvZGUuaHRtbCBcCisgICAg
TExJbnRBc3NlbWJseS5oLlBIT05ZIFwKICMKIAogIyBsb29rdXAgdGFibGVzIGZvciBjbGFzc2Vz
CkBAIC0xMDQsMyArMTA1LDExIEBAIEhlYWRlckRldGVjdGlvbi5oIDoKIAllY2hvID4gJEAKIAog
ZW5kaWYKKworIyBBc3NlbWJseSBmb3IgdGhlIExvd0xldmVsSW50ZXJwcmV0ZXIKKworIyBUaGlz
IGJ1aWxkcyBldmVyeSB0aW1lIGJlY2F1c2UgdGhlcmUgaXMgbm8gZWFzeSB3YXkgdG8gZGVzY3Jp
YmUKKyMgdGhlIGRlcGVuZGVuY2llcyB1c2luZyBtYWtlLiBJbnN0ZWFkLCB0aGUgYXNzZW1ibGVy
IHdpbGwgZGVjaWRlIG9uCisjIGl0cyBvd24gd2hldGhlciBvciBub3QgaXQgZGlkIGFueXRoaW5n
IHRoYXQgd291bGQgbGVhZCB0byBhIGNoYW5nZS4KK0xMSW50QXNzZW1ibHkuaC5QSE9OWToKKwly
dWJ5ICQoSmF2YVNjcmlwdENvcmUpL29mZmxpbmVhc20vYXNtLnJiICQoSmF2YVNjcmlwdENvcmUp
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtICQoQlVJTFRfUFJPRFVDVFNfRElSKS9KU0NM
TEludE9mZnNldHNFeHRyYWN0b3IgTExJbnRBc3NlbWJseS5oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA1Njk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTcsNiArNywxNSBAQAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRh
cmdldCBzZWN0aW9uICovCisJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZz
ZXRzICovID0geworCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1
cmF0aW9uTGlzdCA9IDBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi87CisJCQli
dWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUg
RGVyaXZlZCBTb3VyY2VzICovLAorCQkJKTsKKwkJCW5hbWUgPSAiTExJbnQgT2Zmc2V0cyI7CisJ
CQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOworCQl9OwogCQk2NUZCM0Y2NjA5RDEx
RTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYQWdncmVn
YXRlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDY1RkIzRjc3MDlEMTFFQkQw
MEY0OURFQiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdl
dCAiRGVyaXZlZCBTb3VyY2VzIiAqLzsKQEAgLTE0LDYgKzIzLDkgQEAKIAkJCQk2NUZCM0Y2NTA5
RDExRTkxMDBGNDlERUIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTVEMzVE
RUUxMEM3QzE0MEIwMDg2NDhCMiAvKiBHZW5lcmF0ZSBEVHJhY2UgaGVhZGVyICovLAogCQkJKTsK
KwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJY
VGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7
CiAJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQl9OwpAQCAtNDgsNiArNjAs
MTAgQEAKIAkJMEJBQzk0QTAxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVy
aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBC
QUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJDRDgzNTcx
NDg1ODQ1MjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJDRDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRl
bXBvcmFyeUNoYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCRjI4QTI4MTFBMzNE
QzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUExNEJDRjQ1RDAw
ODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50
cnlwb2ludHMuY3BwICovOyB9OworCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRF
bnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBCODM5QzE0QkNG
NDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1
bmtzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5
ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyog
Q29kZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0
RiAvKiBIYW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQUIxNEJD
RjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBF
eHByZXNzaW9uUmFuZ2VJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKQEAgLTU4LDkgKzc0LDEzIEBACiAJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0
RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlu
a0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I2MTRCQ0Y4REYw
MDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxs
UmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1
cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2Fs
bExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE1RjE1RjE0QjdB
NzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9u
U2xvd1BhdGhzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEYxNkQ3MjYxNDJDMzlDMDAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE2RDcyNDE0MkMzOUEyMDBD
Rjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLzsgfTsKIAkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRC
IC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdDMTRCRTcyNzYw
MEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9u
SGFybmVzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3OTE0
QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdGMTRCRUFBODIwMEFE
QzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVD
b252ZW50aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0MkRB
NTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTZGMTQ3MzhGMzEw
MDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nr
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
MkM1NTcwMTQ3MzhGMzUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0
RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLzsgfTsKQEAgLTcxLDYgKzkxLDE5IEBACiAJCTBGNDMx
NzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAv
KiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwODAx
NEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi87
IH07CisJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlFMTRCQTdG
ODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJ
bnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovOyBzZXR0
aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLXVudXNlZC1wYXJhbWV0ZXIiOyB9OyB9Owor
CQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMDE0QkE3RjgyMDBCRkUy
NzIgLyogTExJbnRIZWxwZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAq
LzsgfTsKKwkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RDE0
QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0Ex
NEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRD
b21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNjE0QkJC
MTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcy
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50
ZXJwcmV0ZXIuY3BwICovOyB9OworCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2
ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBE
MjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTElu
dERhdGEuY3BwICovOyB9OworCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBD
RjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhv
c3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFs
dWUuY3BwICovOyB9OworCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1
cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVGMDhDRjE0NkM3
NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8q
IFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjYyMDE3NDE0M0ZDRDMzMDA2OEI3N0MgLyogREZHVmFyaWFi
bGVBY2Nlc3NEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjYyMDE3MjE0M0ZDRDJGMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAx
NzUxNDNGQ0QzNzAwNjhCNzdDIC8qIERGR09wZXJhbmRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYyMDE3MTE0M0ZDRDJGMDA2OEI3N0MgLyogREZH
T3BlcmFuZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMzgzLDcgKzQxNiw3IEBACiAJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJp
bmdCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2Qjk5QUUxMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1
NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkJCMDlCRTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAg
Ki87IH07CiAJCTg2QkIwOUMxMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFC
MDA1NjcwMkYgLyogREZHUmVwYXRjaC5oICovOyB9OwotCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RG
NTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5o
ICovOyB9OworCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVF
MTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBN
YWNyb0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkM1NjhERDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0u
Y3BwICovOyB9OwogCQk4NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJN
SVBTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1
NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07CiAJCTg2
QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAg
LyogTUlQU0Fzc2VtYmxlci5oICovOyB9OwpAQCAtNzUyLDYgKzc4NSwyMCBAQAogLyogRW5kIFBC
WEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBz
ZWN0aW9uICovCisJCTBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVt
UHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWlu
ZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87
CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0
QkE3RkQ5MDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gIkxMSW50IE9mZnNldHMiOworCQl9Owor
CQkwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0g
eworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0g
MDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlU
eXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZF
MjcyOworCQkJcmVtb3RlSW5mbyA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJ
MTQxMjE0QkUwQTQ5MTkwRTAwNDgwMjU1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsK
IAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4
NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTc5Nyw2ICs4
NDQsMTUgQEAKIC8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1
RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxk
UGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91
c3Ivc2hhcmUvbWFuL21hbjEvOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9
ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJ
fTsKIAkJNURCQjE1MTExMzFEMEIxMzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8g
PSB7CiAJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMTI7CkBAIC04MzcsNiArODkzLDEwIEBACiAJCTBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAv
KiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEJDRDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhcnlDaGFuZ2UuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVM
aW1pdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4
NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBv
aW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk2MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IExMSW50RW50cnlwb2ludHMuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRG
IC8qIExMSW50VGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IExMSW50VGh1bmtzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1
bmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50VGh1bmtzLmg7IHBh
dGggPSBsbGludC9MTEludFRodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ29kZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0Nyw5ICs5MDcsMTMgQEAKIAkJMEYwQjgz
QjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZXRob2RDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJ
bmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbFJlc29sdmVJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0
RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJ
bnRDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRD
YWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3
QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb21tb25TbG93UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVERyaXZlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdBMTRC
RTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEV4ZWN1dGlvbkhhcm5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVDb252ZW50aW9ucy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyog
V2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJs
b2Nrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NjAsNiArOTI0LDIwIEBACiAJCTBGNDMx
NzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRFeGNl
cHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDhGMTRCQTdFNUUw
MEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7
IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291
cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25z
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMTEludEV4Y2VwdGlvbnMuaDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJ
bnRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50
SGVscGVycy5jcHA7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50SGVscGVycy5oOyBwYXRo
ID0gbGxpbnQvTExJbnRIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cDsgcGF0aCA9IGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENvbW1vbi5oOyBwYXRoID0g
bGxpbnQvTExJbnRDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0Njgw
QzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludE9mZmxpbmVBc21Db25maWcuaDsgcGF0aCA9IGxs
aW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmNw
cDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnBy
ZXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMb3dMZXZlbEludGVycHJl
dGVyLmg7IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnREYXRhLmNwcDsgcGF0
aCA9IGxsaW50L0xMSW50RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTExJbnREYXRhLmg7IHBhdGggPSBsbGludC9MTEludERhdGEuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhv
c3RDYWxsUmV0dXJuVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5
dGVDb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNv
ZGVDYWNoZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVDb2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5jb25kaXRpb25h
bEZpbmFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYyMDE2RDE0M0ZD
RDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBERkdBYnN0cmFjdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdBYnN0
cmFjdFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NzksNiArMTY1
NywxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhDMTRCQTdFNUUwMEJG
RTI3MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkp
OworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0
MTIxMTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpA
QCAtMTYzNyw2ICsxNzIyLDcgQEAKIAkJCQkxNDEyMTEyMDBBNDg3OTNDMDA0ODAyNTUgLyogbWlu
aWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJ
CQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4
RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAogCQkJKTsK
IAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjY3
LDYgKzE3NTMsNyBAQAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0
Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3Bw
ICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLywKKwkJCQkw
RjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FE
NDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNz
ZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywK
QEAgLTE3MDUsNiArMTc5MiwyOCBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAw
OwogCQl9OworCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8gPSB7CisJCQlp
c2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4
NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLywKKwkJCQkwRjBCODM5NjE0QkNGNDVBMDA4
ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovLAorCQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4
NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8sCisJCQkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRG
IC8qIExMSW50VGh1bmtzLmggKi8sCisJCQkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExM
SW50RGF0YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0
YS5oICovLAorCQkJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICov
LAorCQkJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcu
aCAqLywKKwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRl
ci5jcHAgKi8sCisJCQkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuaCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRp
b25zLmNwcCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRp
b25zLmggKi8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5j
cHAgKi8sCisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICov
LAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGludDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3MjYwMDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNzM3LDYgKzE4NDYsOCBAQAog
CQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkgLyogaml0ICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9z
dENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8q
IEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIg
LyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8q
IEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29t
cGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTIxNjYsNiArMjI3Nyw4IEBACiAJCTdFRjZFMEJCMEVC
N0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oICovLAorCQkJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRp
b25IYXJuZXNzLmggKi8sCiAJCQkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNs
b3dQYXRocy5oICovLAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNw
cCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLApAQCAt
MjUyNSw2ICsyNjM4LDggQEAKIAkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2Rl
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3
RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovLAorCQkJCTBGMEZD
NDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovLAogCQkJCTBGOTMz
MjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgKi8sCiAJCQkJMEY5MzMy
OTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggKi8sCiAJCQkJMEY5MzMyOTUx
NENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovLApAQCAtMzA3Niw3ICszMTkx
LDE2IEBACiAJCQkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENo
ZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBD
b21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEEzMTRCQTdGOEQwMEJG
RTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEE1MTRC
QTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4
MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21tb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZl
bEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUy
NzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBENTE0QkJEMjRCMDBC
RkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQjgz
OUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFu
Z2VJbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTMwODUsNyArMzIwOSwxMSBAQAogCQkJCTBGMEI4
M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5P
ZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBGQzQ1QTE0QkQx
NUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5
dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRBMTRDM0NEMjkw
MDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRC
MTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGN0IyOTRDMTRDM0NENDMwMDdDM0RCMSAvKiBERkdCeXRlQ29kZUNhY2hlLmggaW4gSGVhZGVy
cyAqLywKQEAgLTMxMDMsNiArMzIzMSwyNCBAQAogLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0
NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHsK
KwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAw
RjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIgKi87CisJCQlidWlsZFBo
YXNlcyA9ICgKKwkJCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLywKKwkJ
CQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkwRjQ2ODA4
RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMg
PSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4MEIyMTRCQTgxMTUwMEJG
RTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBKU0NMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0TmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyog
SlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxl
LnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKIAkJMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8q
IG1pbmlkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZp
Z3VyYXRpb25MaXN0ID0gMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLzsKQEAgLTMyMjksMTEg
KzMzNzUsMjkgQEAKIAkJCQkxNEJENTlCRTBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywK
IAkJCQk5MzJGNUJEQTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAogCQkJCTY1MTEyMkY3MTQw
NDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4MDhFMTRCQTdFNUUwMEJG
RTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCisJCQkJMEY0NjgwQTkxNEJBN0ZE
OTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8sCiAJCQkpOwogCQl9OwogLyogRW5kIFBCWFBy
b2plY3Qgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2Vj
dGlvbiAqLworCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBT
b3VyY2VzICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0
UGF0aHMgPSAoCisJCQkJIiQoU1JDUk9PVCkvbGxpbnQvTG93TGV2ZWxBc3NlbWJsZXIuYXNtIiwK
KwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CisJCQlvdXRwdXRQ
YXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cy9MTEludERl
c2lyZWRPZmZzZXRzLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1r
ZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9cIlxuXG4vdXNyL2Jp
bi9lbnYgcnVieSBcIiR7U1JDUk9PVH0vb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFj
dG9yLnJiXCIgXCIke1NSQ1JPT1R9L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtXCIgXCIk
e0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaFwi
XG4iOworCQl9OwogCQkzNzEzRjAxNDE0MjkwNTI0MDAzNjM4N0YgLyogQ2hlY2sgRm9yIEluYXBw
cm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xhc3MgTmFtZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVs
bFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAt
MzM3NCw2ICszNTM4LDE0IEBACiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2
ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJj
ZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVz
ID0gKAorCQkJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFEMEE0ODc5M0MwMDQ4MDI1NSAvKiBTb3Vy
Y2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzYzMiw3ICszODA0LDE0IEBACiAJCQkJODY3MDRCODYx
MkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRC
ODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4
Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQ0MxNEJCQjE3
QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRy
eXBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYg
LyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjAxNEJDRjcxNjAw
ODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBCODNCNDE0
QkNGODYwMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUY2OUU4NkMzMTRDNkU1NTEwMDJDMkM2MiAvKiBOdW1iZXJPZkNvcmVzLmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMzY1NCw2ICszODMzLDE2IEBACiAvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8K
KwkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7
CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMEY0NjgwQTkxNEJB
N0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi87CisJCQl0YXJnZXRQcm94eSA9IDBGNDY4
MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJ
CTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewor
CQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MDhFMTRCQTdF
NUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQl0YXJnZXRQcm94
eSA9IDBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87
CisJCX07CiAJCTE0MTIxNEJGMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJCXRhcmdldCA9IDE0MTIx
MTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovOwpAQCAtMzY4Nyw2ICszODc2LDE0OCBA
QAogLyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBYQ0J1
aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAv
KiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNI
UyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBO
TzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19EWU5BTUlD
X05PX1BJQyA9IE5POworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJ
CUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5J
VElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsK
KwkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5POworCQkJCUdDQ19WRVJTSU9OID0g
Y29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18z
Ml9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9U
WVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlH
Q0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNb
YXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNf
RElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJ
KTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCU9OTFlfQUNUSVZF
X0FSQ0ggPSBZRVM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlT
REtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUyki
OworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwOTcxNEJBN0U1RTAwQkZF
MjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJ
CQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NU
UklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRz
eW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJM
RV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29t
cGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJT
SU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOwor
CQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNF
RF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgK
KwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zm
c2V0cyQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1F
TlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOwor
CQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4g
aWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BB
VEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4MDk4MTRCQTdF
NUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhT
ID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZ
X1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2Fy
Zi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJ
R0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20u
YXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJ
VF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVT
ID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19X
QVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNo
PSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIp
L0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOwor
CQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0g
IiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVS
X1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRz
ICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJ
CX07CisJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFM
V0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRB
UkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZP
Uk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9T
VEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOwor
CQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJ
CQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FC
T1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5f
VFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhF
QURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJ
IiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VB
UkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43
OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1h
Y29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9E
VUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJ
CQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8q
IERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJ
CQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIg
LyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHki
OworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODBBRjE0QkE3RkQ5MDBC
RkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJj
ZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJMEY0NjgwQjAx
NEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRl
cml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsK
IAkJMTQxMjExM0EwQTQ4Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewpAQCAtMzkyOCw2ICs0MjU5
LDI4IEBACiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOUExNEJBN0U1RjAwQkZF
MjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NM
TEludE9mZnNldHNFeHRyYWN0b3IiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlz
dDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwOTYxNEJBN0U1RTAwQkZF
MjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNl
ICovLAorCQkJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJ
MEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25O
YW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJMTEludCBPZmZz
ZXRzIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZp
Z3VyYXRpb25zID0gKAorCQkJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLywK
KwkJCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODBB
RjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MEIwMTRCQTdGRDkw
MEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9u
SXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247
CisJCX07CiAJCTE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi8gPSB7CiAJCQlpc2EgPSBYQ0Nv
bmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShyZXZpc2lvbiAxMDU2
OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2RlZmluZSBHTE9CQUxfVEhVTktfSUQgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0xKSkKICNkZWZpbmUg
UkVHRVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KC0yKSkKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+CisjaW5jbHVkZSAiTWFjcm9B
c3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgQnl0ZWNvZGVDb252ZW50aW9uc19oCisjZGVmaW5lIEJ5dGVjb2RlQ29udmVudGlvbnNfaAor
CisvLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRp
ZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6CisvLyAgICAgIDB4ODAw
MDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9p
bnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgor
Ly8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUg
Q2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhl
IGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgorLy8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBv
c2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29u
c3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgorc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7CisKKyNlbmRpZiAvLyBCeXRlY29kZUNvbnZl
bnRpb25zX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
U3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDU2OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywx
NyArMjcsMzggQEAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENv
ZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CisgICAgTExJbnRDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGluc3RydWN0aW9uWzRdLnUuY2FsbExpbmtJbmZvOwor
ICAgIAorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyhjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2Fs
bGVlLmdldCgpLCBmYWxzZSk7CisjZWxzZQorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygwLCBm
YWxzZSk7CisjZW5kaWYKK30KKwogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQog
ewogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0
ZWNvZGVJbmRleCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQot
ICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygKLSAgICAgICAgcHJvZmlsZWRCbG9jay0+Z2V0Q2Fs
bExpbmtJbmZvKGJ5dGVjb2RlSW5kZXgpLmxhc3RTZWVuQ2FsbGVlLmdldCgpLAotICAgICAgICBw
cm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSk7CisgICAgaWYg
KCFwcm9maWxlZEJsb2NrLT5udW1iZXJPZkNhbGxMaW5rSW5mb3MoKSkKKyAgICAgICAgcmV0dXJu
IGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisgICAgCisg
ICAgaWYgKHByb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQor
ICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgdHJ1ZSk7CisgICAgCisgICAgSlNGdW5j
dGlvbiogdGFyZ2V0ID0gcHJvZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJbmZvKGJ5dGVjb2RlSW5k
ZXgpLmxhc3RTZWVuQ2FsbGVlLmdldCgpOworICAgIGlmICghdGFyZ2V0KQorICAgICAgICByZXR1
cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KTsKKyAgICAK
KyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXModGFyZ2V0LCBmYWxzZSk7CiAjZWxzZQogICAgIHJl
dHVybiBDYWxsTGlua1N0YXR1cygwLCBmYWxzZSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCShyZXZpc2lvbiAxMDU2
OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDcsMTUgKzQ3LDE3IEBAIHB1YmxpYzoKICAgICAKICAgICBzdGF0
aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4KTsKICAgICAKLSAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxU
YXJnZXQ7IH0KKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxUYXJnZXQg
fHwgbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29u
c3QgeyByZXR1cm4gIW1fY2FsbFRhcmdldDsgfQorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3Qg
eyByZXR1cm4gIWlzU2V0KCk7IH0KICAgICAKICAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoKCkg
Y29uc3QgeyByZXR1cm4gbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIAogICAgIEpTRnVuY3Rp
b24qIGNhbGxUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQ7IH0KICAgICAKIHBy
aXZhdGU6CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoQ29kZUJs
b2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisgICAgCiAgICAgSlNGdW5jdGlvbiogbV9j
YWxsVGFyZ2V0OwogICAgIGJvb2wgbV9jb3VsZFRha2VTbG93UGF0aDsKIH07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTA1
Njk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNp
bmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5o
IgogI2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBA
IC01OSw4ICs2MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogdXNpbmcgbmFtZXNwYWNlIERGRzsKICNl
bmRpZgogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQot
CiBzdGF0aWMgVVN0cmluZyBlc2NhcGVRdW90ZXMoY29uc3QgVVN0cmluZyYgc3RyKQogewogICAg
IFVTdHJpbmcgcmVzdWx0ID0gc3RyOwpAQCAtMzU4LDEwICszNTcsMTAgQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjKSBjbwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBpICs9IG9wY29kZUxlbmd0aHNbZXhlYy0+aW50ZXJwcmV0
ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbaV0udS5vcGNvZGUpXSkKICAgICAgICAg
KytpbnN0cnVjdGlvbkNvdW50OwogCi0gICAgcHJpbnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVs
dSBieXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocylcblxu
IiwKKyAgICBwcmludGYoIiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBw
YXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocylcblxuIiwK
ICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25Db3VudCksCiAg
ICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNpemUoKSAq
IHNpemVvZihJbnN0cnVjdGlvbikpLAotICAgICAgICB0aGlzLCBtX251bVBhcmFtZXRlcnMsIG1f
bnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgdGhpcywgbV9udW1QYXJhbWV0ZXJzLCBtX251
bUNhbGxlZVJlZ2lzdGVycywgbV9udW1WYXJzKTsKIAogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46
OmNvbnN0X2l0ZXJhdG9yIGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICBWZWN0
b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBpbnN0cnVjdGlvbnMoKS5lbmQo
KTsKQEAgLTg5OCw2ICs4OTcsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBl
eGVjLCBjbwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAi
cHV0X2J5X2lkX3RyYW5zaXRpb24iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Cisg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7CisgICAgICAgICAg
ICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3QiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CisgICAgICAgICAgICBwcmludFB1dEJ5
SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwiKTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X2dlbmVyaWM6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgInB1dF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyOTEsOCAr
MTI5OCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICB9
CiB9CiAKLSNlbmRpZiAvLyAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRShPUENPREVfU0FNUExJ
TkcpCi0KICNpZiBEVU1QX0NPREVfQkxPQ0tfU1RBVElTVElDUwogc3RhdGljIEhhc2hTZXQ8Q29k
ZUJsb2NrKj4gbGl2ZUNvZGVCbG9ja1NldDsKICNlbmRpZgpAQCAtMTQ1OSw2ICsxNDY0LDcgQEAg
Q29kZUJsb2NrOjpDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLAogewogICAgIHNldE51bVBh
cmFtZXRlcnMob3RoZXIubnVtUGFyYW1ldGVycygpKTsKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVw
KCk7CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsKICAgICAKICAgICBpZiAob3RoZXIubV9yYXJlRGF0
YSkgewogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0xNTA3LDYgKzE1
MTMsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgQVNT
RVJUKG1fc291cmNlKTsKICAgICAKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgaml0
QWZ0ZXJXYXJtVXAoKTsKIAogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNTCiAgICAgbGl2
ZUNvZGVCbG9ja1NldC5hZGQodGhpcyk7CkBAIC0xNTI0LDcgKzE1MzEsMTEgQEAgQ29kZUJsb2Nr
Ojp+Q29kZUJsb2NrKCkKICNpZiBFTkFCTEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxFKQogICAgIGR1
bXBWYWx1ZVByb2ZpbGVzKCk7CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShMTElOVCkgICAg
CisgICAgd2hpbGUgKG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xM
SW50Q2FsbHMuZW5kKCkpCisgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCktPnJl
bW92ZSgpOworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKICNpZiBFTkFCTEUoSklUKQogICAgIC8v
IFdlIG1heSBiZSBkZXN0cm95ZWQgYmVmb3JlIGFueSBDb2RlQmxvY2tzIHRoYXQgcmVmZXIgdG8g
dXMgYXJlIGRlc3Ryb3llZC4KICAgICAvLyBDb25zaWRlciB0aGF0IHR3byBDb2RlQmxvY2tzIGJl
Y29tZSB1bnJlYWNoYWJsZSBhdCB0aGUgc2FtZSB0aW1lLiBUaGVyZQpAQCAtMTczNiw4ICsxNzQ3
LDU3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICNlbHNlCiAg
ICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZVVubGlua2luZyA9IGZhbHNlOwogI2VuZGlmCi0j
ZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogICAgIAorI2lmIEVOQUJMRShMTElOVCkKKyAg
ICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJldGVyOwor
ICAgIGlmICghaW50ZXJwcmV0ZXItPmVuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBz
aXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5z
dHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV07CisgICAgICAgICAg
ICBzd2l0Y2ggKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9w
Y29kZSkpIHsKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51
LnN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVy
ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGN1
ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3Vy
SW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgICAgICAgICAgICAg
aWYgKEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKQor
ICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls2XS51
LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQo
Y3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0
dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1
cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVy
ZUNoYWluLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNv
ZGUgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAoc2l6
ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8
IHNpemU7ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0g
Jmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV07CisgICAgICAg
ICAgICBBU1NFUlQoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUu
b3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbAorICAgICAgICAgICAgICAgICAgIHx8IGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3BfcmVz
b2x2ZV9nbG9iYWxfZHluYW1pYyk7CisgICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzNd
LnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0
dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGN1cklu
c3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBjdXJJbnN0cnVj
dGlvbls0XS51Lm9wZXJhbmQgPSAwOworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICAg
ICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhlYXA6OmlzTWFy
a2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJD
bGVhcmluZyBMTEludCBjYWxsIGZyb20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBt
X2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmICghIW1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlICYmICFIZWFw
Ojppc01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5nZXQoKSkp
CisgICAgICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUu
Y2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKICNp
ZiBFTkFCTEUoREZHX0pJVCkKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2Ug
YXJlLCB0aGVuIGpldHRpc29uLgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2
ZW5lc3NEdXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7
CkBAIC0xODU4LDEwICsxOTE4LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ry
b25nUmVmZXIKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXpl
KCk7ICsraSkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAj
aWYgRU5BQkxFKElOVEVSUFJFVEVSKQotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAg
IHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9uc1tpXV0pOwotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29s
dmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlz
aXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbnNbaV1dKTsKKyAgICBpZiAobV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+ZW5hYmxl
ZCgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0
cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbnNbaV1dKTsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUlu
c3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlz
aXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbnNbaV1dKTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAt
MjA3MCw2ICsyMTMyLDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiB7CiAgICAg
aWYgKCEhbV9hbHRlcm5hdGl2ZSkKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+dW5saW5rQ2FsbHMo
KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xsaW50
Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9sbGludENhbGxMaW5r
SW5mb3NbaV0uaXNMaW5rZWQoKSkKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ld
LnVubGluaygpOworICAgIH0KKyNlbmRpZgogICAgIGlmICghKG1fY2FsbExpbmtJbmZvcy5zaXpl
KCkgfHwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKICAg
ICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0yMDg0LDEwICsyMTUyLDM3IEBA
IHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiAKIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtJ
bmNvbWluZ0NhbGxzKCkKIHsKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4o
KSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50
Q2FsbHMuYmVnaW4oKS0+dW5saW5rKCk7CisgICAgaWYgKG1faW5jb21pbmdDYWxscy5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybjsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIodGhp
cyk7CiAgICAgd2hpbGUgKG1faW5jb21pbmdDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdDYWxs
cy5lbmQoKSkKICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLmJlZ2luKCktPnVubGluaygqbV9nbG9i
YWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKIH0KKwordW5zaWduZWQgQ29kZUJsb2NrOjpieXRlY29k
ZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykK
K3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKHJldHVybkFkZHJlc3MudmFsdWUoKSA+PSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9iZWdpbikKKyAgICAgICAgJiYgcmV0dXJuQWRkcmVz
cy52YWx1ZSgpIDw9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2VuZCkpIHsKKyAgICAgICAg
QVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9j
aygpID09IHRoaXMpOworICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0
SklUVHlwZSgpKSk7CisgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGV4ZWMtPmN1
cnJlbnRWUEMoKTsKKyAgICAgICAgQVNTRVJUKGluc3RydWN0aW9uKTsKKyAgICAgICAgcmV0dXJu
IGJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKKyNlbmRpZgorICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgcmV0dXJu
IDE7CisgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbElu
ZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKKyAgICBpZiAoIWNh
bGxJbmRpY2VzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGJpbmFyeVNl
YXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxS
ZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0
SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNl
dDsKK30KICNlbmRpZgogCiB2b2lkIENvZGVCbG9jazo6Y2xlYXJFdmFsQ2FjaGUoKQpAQCAtMjE4
MywyNCArMjI3OCw0NSBAQCBib29sIEZ1bmN0aW9uQ29kZUJsb2NrOjpjYW5Db21waWxlV2l0aERG
CiAKIHZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRK
SVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFj
ZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1
dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9p
ZCBFdmFsQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAh
PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemlu
Z0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsK
ICAgICBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0
dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwogfQogCiB2b2lkIEZ1bmN0aW9uQ29k
ZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2Rl
OjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRK
SVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29u
T3B0aW1pemVkQ29kZUZvcigqZ2xvYmFsRGF0YSgpLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9y
Q29uc3RydWN0IDogQ29kZUZvckNhbGwpOwogfQorCit2b2lkIFByb2dyYW1Db2RlQmxvY2s6Ompp
dENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0
SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlz
ID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0
YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShnbG9iYWxEYXRhKTsKK30KKwor
dm9pZCBFdmFsQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEpCit7CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKTsKKyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUo
Z2xvYmFsRGF0YSk7Cit9CisKK3ZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBs
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2Vt
ZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25l
ckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGVGb3IoZ2xvYmFsRGF0YSwgbV9pc0NvbnN0cnVjdG9y
ID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKK30KICNlbmRpZgogCiAjaWYgRU5B
QkxFKFZBTFVFX1BST0ZJTEVSKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTA1Njk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAj
aWZuZGVmIENvZGVCbG9ja19oCiAjZGVmaW5lIENvZGVCbG9ja19oCiAKKyNpbmNsdWRlICJCeXRl
Y29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAi
Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2lu
LmgiCkBAIC01MCw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSklUV3JpdGVCYXJyaWVyLmgiCiAjaW5j
bHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRl
ICJMTEludENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAi
Tm9kZXMuaCIKICNpbmNsdWRlICJQcmVkaWN0aW9uVHJhY2tlci5oIgpAQCAtNjUsMTYgKzY3LDEx
IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZv
LmgiCiAKLS8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhh
dmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKLS8vICAgICAg
MHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFt
ZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxl
LmguCi0vLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9t
IHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0
aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCi0vLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZG
RiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRo
ZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCi1zdGF0aWMgY29uc3QgaW50IEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKLQogbmFtZXNwYWNlIEpTQyB7CiAK
LSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFz
cyBFeGVjU3RhdGU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgaW5s
aW5lIGludCB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoaW50IGFyZ3VtZW50c1JlZ2lzdGVy
KSB7IHJldHVybiBhcmd1bWVudHNSZWdpc3RlciAtIDE7IH0KIApAQCAtODMsNiArODAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgVW5jb25kaXRpb25h
bEZpbmFsaXplciwgcHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgewogICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAg
IGVudW0gQ29weVBhcnNlZEJsb2NrVGFnIHsgQ29weVBhcnNlZEJsb2NrIH07CiAgICAgcHJvdGVj
dGVkOgpAQCAtMTIzLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgd2hp
bGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1
bHQtPmFsdGVybmF0aXZlKCk7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAgICAg
ICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7
CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRK
SVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICNlbmRp
ZgpAQCAtMTM0LDExICsxMzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMg
dm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEVf
T1BDT0RFX1NBTVBMSU5HCiAgICAgICAgIHZvaWQgZHVtcChFeGVjU3RhdGUqKSBjb25zdDsKICAg
ICAgICAgdm9pZCBwcmludFN0cnVjdHVyZXMoY29uc3QgSW5zdHJ1Y3Rpb24qKSBjb25zdDsKICAg
ICAgICAgdm9pZCBwcmludFN0cnVjdHVyZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVj
dGlvbiosIGludCBvcGVyYW5kKSBjb25zdDsKLSNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNTdHJp
Y3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KIApAQCAtMTk0LDE1ICsx
OTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJj
aDxNZXRob2RDYWxsTGlua0luZm8sIHVuc2lnbmVkLCBnZXRNZXRob2RDYWxsTGlua0luZm9CeXRl
Y29kZUluZGV4PihtX21ldGhvZENhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlu
a0luZm9zLnNpemUoKSwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIDE7Ci0gICAgICAgICAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZz
ZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOwot
ICAgICAgICAgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIDE7Ci0gICAgICAgICAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGlj
ZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0
dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OwotICAgICAgICB9CisgICAgICAg
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSosIFJldHVybkFkZHJlc3NQdHIpOwog
CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Rm9yQ2FsbEF0SW5kZXgodW5zaWduZWQg
aW5kZXgpCiAgICAgICAgIHsKQEAgLTIyMywxMSArMjExLDE3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB7CiAgICAgICAgICAgICBtX2luY29taW5nQ2FsbHMucHVzaChpbmNvbWluZyk7CiAg
ICAgICAgIH0KKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHZvaWQgbGlua0luY29taW5nQ2Fs
bChMTEludENhbGxMaW5rSW5mbyogaW5jb21pbmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
aW5jb21pbmdMTEludENhbGxzLnB1c2goaW5jb21pbmcpOworICAgICAgICB9CisjZW5kaWYgLy8g
RU5BQkxFKExMSU5UKQogICAgICAgICAKICAgICAgICAgdm9pZCB1bmxpbmtJbmNvbWluZ0NhbGxz
KCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi0jaWYgRU5BQkxFKERGR19KSVQp
CisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgdm9pZCBzZXRK
SVRDb2RlTWFwKFBhc3NPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IGppdENvZGVNYXApCiAgICAg
ICAgIHsKICAgICAgICAgICAgIG1faml0Q29kZU1hcCA9IGppdENvZGVNYXA7CkBAIC0yMzYsNyAr
MjMwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBt
X2ppdENvZGVNYXAuZ2V0KCk7CiAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAKKyNpZiBFTkFC
TEUoREZHX0pJVCkKICAgICAgICAgdm9pZCBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKQogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoISFtX2RmZ0RhdGEpCkBAIC0zMzUsMTIgKzMzMSwxMSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSU5URVJQ
UkVURVIpCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uKiByZXR1
cm5BZGRyZXNzKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocmV0dXJuQWRkcmVzcyA+
PSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICYmIHJldHVybkFkZHJlc3MgPCBpbnN0cnVjdGlvbnMo
KS5lbmQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihy
ZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgICAgIH0KLSNlbmRp
ZgogCiAgICAgICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1l
cmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1l
cmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0
aW9uKCkgeyByZXR1cm4gbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KQEAgLTM1NiwxNSAr
MzUxLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgICAgIHZvaWQgaGFuZGxl
Qnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKQogICAgICAgICB7CisjaWYgIUVOQUJMRShP
UENPREVfU0FNUExJTkcpICYmICFFTkFCTEUoTExJTlQpCisgICAgICAgICAgICBpZiAoQnl0ZWNv
ZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIGlmICghIWFsdGVybmF0aXZlKCkpCiAgICAgICAgICAgICAgICAgZGlz
Y2FyZEJ5dGVjb2RlKCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZGlzY2Fy
ZEJ5dGVjb2RlTGF0ZXIoKTsKKyNlbmRpZgogICAgICAgICB9CiAgICAgICAgIAotI2lmbmRlZiBO
REVCVUcKICAgICAgICAgYm9vbCB1c2VzT3Bjb2RlKE9wY29kZUlEKTsKLSNlbmRpZgogCiAgICAg
ICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQoKSB7IHJldHVybiBtX2luc3RydWN0aW9uQ291
bnQ7IH0KICAgICAgICAgdm9pZCBzZXRJbnN0cnVjdGlvbkNvdW50KHVuc2lnbmVkIGluc3RydWN0
aW9uQ291bnQpIHsgbV9pbnN0cnVjdGlvbkNvdW50ID0gaW5zdHJ1Y3Rpb25Db3VudDsgfQpAQCAt
Mzg3LDE3ICszODQsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFibGVNZW1v
cnlIYW5kbGUqIGV4ZWN1dGFibGVNZW1vcnkoKSB7IHJldHVybiBnZXRKSVRDb2RlKCkuZ2V0RXhl
Y3V0YWJsZU1lbW9yeSgpOyB9CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRp
bWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBqZXR0aXNvbigpID0gMDsKKyAgICAgICAgYm9vbCBqaXRDb21waWxlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGdldEpJVFR5cGUoKSAh
PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGdl
dEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaml0Q29tcGlsZUltcGwoZ2xv
YmFsRGF0YSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICB2
aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBjYW5Db21waWxlV2l0aERGRygpID0gMDsKICAgICAgICAgYm9vbCBoYXNPcHRpbWl6ZWRSZXBs
YWNlbWVudCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFz
ZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgYm9vbCByZXN1bHQgPSByZXBs
YWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPiBnZXRKSVRUeXBlKCk7CiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgICAgICBBU1NFUlQocmVw
bGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CiAgICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlw
ZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoSklU
Q29kZTo6aXNCYXNlbGluZUNvZGUocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpKSk7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCkgPT0gdGhpcyk7CiAgICAgICAgICAgICB9
CiAjZW5kaWYKQEAgLTQ1NiwxOCArNDYyLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHZvaWQgY2xlYXJFdmFsQ2FjaGUoKTsKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAg
ICAgdm9pZCBhZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKHVuc2lnbmVkIHByb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRh
LT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKTsKKyAgICAgICAgICAgIG1fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBwZW5kKHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24p
OwogICAgICAgICB9CiAgICAgICAgIHZvaWQgYWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKHVu
c2lnbmVkIGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAg
aWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9ucy5hcHBlbmQoZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKTsKKyAg
ICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5hcHBlbmQoZ2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICBib29sIGhhc0dsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbkF0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOworI2lm
IEVOQUJMRShMTElOVCkKKyAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGFkZExMSW50Q2FsbExp
bmtJbmZvKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3MuYXBw
ZW5kKExMSW50Q2FsbExpbmtJbmZvKCkpOworICAgICAgICAgICAgcmV0dXJuICZtX2xsaW50Q2Fs
bExpbmtJbmZvcy5sYXN0KCk7CisgICAgICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAg
ICAgICAgIHZvaWQgc2V0TnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3Moc2l6ZV90IHNpemUpIHsg
bV9zdHJ1Y3R1cmVTdHViSW5mb3MuZ3JvdyhzaXplKTsgfQpAQCAtNDc2LDggKzQ4NSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkR2xvYmFsUmVzb2x2ZUluZm8odW5zaWdu
ZWQgZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
bV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX2dsb2JhbFJlc29s
dmVJbmZvcy5hcHBlbmQoR2xvYmFsUmVzb2x2ZUluZm8oZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
KSk7CisgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbmZvcy5hcHBlbmQoR2xvYmFsUmVzb2x2
ZUluZm8oZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKSk7CiAgICAgICAgIH0KICAgICAgICAgR2xv
YmFsUmVzb2x2ZUluZm8mIGdsb2JhbFJlc29sdmVJbmZvKGludCBpbmRleCkgeyByZXR1cm4gbV9n
bG9iYWxSZXNvbHZlSW5mb3NbaW5kZXhdOyB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2
ZUluZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTUyOCw2
ICs1MzYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJ5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSkpIC0gMV0udS5wcm9maWxlID09IHJlc3Vs
dCk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CisgICAgICAgIFByZWRp
Y3RlZFR5cGUgdmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRl
Y29kZU9mZnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHZhbHVlUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9u
KCk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIHRvdGFsTnVtYmVyT2ZW
YWx1ZVByb2ZpbGVzKCkKICAgICAgICAgewpAQCAtNTU0LDEyICs1NjYsMTYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZVNsb3dDYXNlKGludCBi
eXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVD
YXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB1bnNpZ25lZCB2YWx1ZSA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49IE9wdGlv
bnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJs
ZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFr
ZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGNv
dWxkVGFrZVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAg
ICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHJhcmVDYXNlUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAg
cmV0dXJuIHZhbHVlID49IE9wdGlvbnM6OmNvdWxkVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYm
IHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9w
dGlvbnM6OmNvdWxkVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CkBAIC01NzgsMTIg
KzU5NCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5
VG9UYWtlU3BlY2lhbEZhc3RDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAg
ICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3Vu
dCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiBzcGVjaWFsRmFzdENhc2VDb3VudCA+
PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2Fz
dDxkb3VibGU+KHNwZWNpYWxGYXN0Q2FzZUNvdW50KSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+
PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UoaW50IGJ5dGVj
b2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQ
cm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVu
c2lnbmVkIHNsb3dDYXNlQ291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxG
YXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBz
bG93Q2FzZUNvdW50IC0gc3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBAIC01OTIsNiArNjEyLDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZUFueVNs
b3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFu
dW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB1bnNpZ25lZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1
bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVu
c2lnbmVkIHZhbHVlID0gc2xvd0Nhc2VDb3VudCArIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAt
Njc3LDcgKzY5OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBh
ZGRGcmVxdWVudEV4aXRTaXRlKGNvbnN0IERGRzo6RnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkKICAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNl
bGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0
SklUVHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gbV9leGl0UHJvZmlsZS5hZGQoc2l0ZSk7
CiAgICAgICAgIH0KIApAQCAtNzgyLDYgKzgwNCwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZyb20oQ29kZUJsb2NrKiBhbHRlcm5hdGl2ZSk7CiAg
ICAgICAgIHZvaWQgY29weVBvc3RQYXJzZURhdGFGcm9tQWx0ZXJuYXRpdmUoKTsKICAgICAgICAg
CisgICAgICAgIC8vIEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiBKSVR0aW5nIGtpY2tz
IGluLCBpbiBhIG1peGVkIG1vZGUKKyAgICAgICAgLy8gZXhlY3V0aW9uIHdvcmxkLgorICAgICAg
ICAKKyAgICAgICAgdm9pZCBkb250SklUQW55dGltZVNvb24oKQorICAgICAgICB7CisgICAgICAg
ICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JEb250SklUQW55dGltZVNvb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZv
aWQgaml0QWZ0ZXJXYXJtVXAoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0
ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1V
cDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRTb29uKCkKKyAgICAgICAg
eworICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9ySklUU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50
MzJfdCBsbGludEV4ZWN1dGVDb3VudGVyKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAg
cmV0dXJuIG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgfQorICAgICAgICAKICAgICAg
ICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIHRpZXJlZCBjb21waWxhdGlvbiBr
aWNrcyBpbi4gVGhpcwogICAgICAgICAvLyBjb250cm9scyBib3RoIHdoZW4gdGhlIG9wdGltaXpp
bmcgY29tcGlsZXIgaXMgaW52b2tlZCBhbmQgd2hlbiBPU1IKICAgICAgICAgLy8gZW50cnkgaGFw
cGVucy4gVHdvIHRyaWdnZXJzIGV4aXN0OiB0aGUgbG9vcCB0cmlnZ2VyIGFuZCB0aGUgcmV0dXJu
CkBAIC05NzQsNiArMTAxOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fc2hv
dWxkRGlzY2FyZEJ5dGVjb2RlOwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIHZv
aWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgdmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKICAgICAgICAgCkBAIC05ODYsNyArMTAzMiw2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHRhbGx5RnJlcXVlbnRFeGl0U2l0ZXMo
KSB7IH0KICNlbmRpZgogICAgICAgICAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRShP
UENPREVfU0FNUExJTkcpCiAgICAgICAgIHZvaWQgZHVtcChFeGVjU3RhdGUqLCBjb25zdCBWZWN0
b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYgYmVnaW4sIFZlY3RvcjxJbnN0cnVjdGlv
bj46OmNvbnN0X2l0ZXJhdG9yJikgY29uc3Q7CiAKICAgICAgICAgQ1N0cmluZyByZWdpc3Rlck5h
bWUoRXhlY1N0YXRlKiwgaW50IHIpIGNvbnN0OwpAQCAtOTk2LDcgKzEwNDEsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCBwcmludEdldEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9j
YXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciog
b3ApIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50Q2FsbE9wKEV4ZWNTdGF0ZSosIGludCBsb2Nh
dGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBv
cCkgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxv
Y2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIq
IG9wKSBjb25zdDsKLSNlbmRpZgogICAgICAgICB2b2lkIHZpc2l0U3RydWN0dXJlcyhTbG90Vmlz
aXRvciYsIEluc3RydWN0aW9uKiB2UEMpIGNvbnN0OwogICAgICAgICAKICNpZiBFTkFCTEUoREZH
X0pJVCkKQEAgLTEwNTcsOSArMTEwMSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVm
UHRyPFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VP
ZmZzZXQ7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25l
ZD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVuc2lnbmVk
PiBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAg
ICBTZWdtZW50ZWRWZWN0b3I8TExJbnRDYWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxsTGlua0lu
Zm9zOworICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2lj
UmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdMTEludENhbGxz
OwogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJ
bmZvPiBtX3N0cnVjdHVyZVN0dWJJbmZvczsKQEAgLTEwNzAsOSArMTExNiwxMCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0
eUNoZWNrOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jh
d1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2VuZGlmCi0j
aWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkK
ICAgICAgICAgT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAgICAg
IAorI2VuZGlmCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFrUmVmZXJl
bmNlVHJhbnNpdGlvbiB7CiAgICAgICAgICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigpIHsg
fQogICAgICAgICAgICAgCkBAIC0xMTM1LDEyICsxMTgyLDE0IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIE93blB0cjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAgIAorICAg
ICAgICBpbnQzMl90IG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAgICAgIGlu
dDMyX3QgbV9qaXRFeGVjdXRlQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2
ZVN1Y2Nlc3NDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFpbENvdW50
ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAgICAg
IHVpbnQ4X3QgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKLQorICAgICAgICAKICAgICAg
ICAgc3RydWN0IFJhcmVEYXRhIHsKICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiAgICAgICAgIHB1YmxpYzoKQEAgLTEyMTMsNiArMTI2Miw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXpl
ZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0
dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0
YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAg
dmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKQEAgLTEyNDcsNiArMTI5
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBK
U09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGpp
dENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayog
cmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7
CiAjZW5kaWYKQEAgLTEyODQsNiArMTMzNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3Rh
dGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAg
ICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBi
b29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEwNTY5NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMjAgKzI3LDQ2IEBACiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5o
IgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpj
b21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJl
Z2luKCkgKyBieXRlY29kZUluZGV4OworICAgIAorICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9w
Y29kZSA9PSBsbGludF9vcF9tZXRob2RfY2hlY2spCisgICAgICAgIGluc3RydWN0aW9uKys7CisK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdl
dCgpOworICAgIGlmICghc3RydWN0dXJlKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhO
b0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAg
ICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERh
dGEoKSwgaWRlbnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVy
biBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwg
ZmFsc2UpOworICAgIAorICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZURpcmVjdCwgU3Ry
dWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCwgZmFsc2UpOworI2Vsc2UKKyAgICByZXR1cm4g
R2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZh
bHNlKTsKKyNlbmRpZgorfQorCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVu
dGlmaWVyJiBpZGVudCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAg
VU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAj
aWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmls
ZWRCbG9jay0+bnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNv
bXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAg
IAogICAgIC8vIEZpcnN0IGNoZWNrIGlmIGl0IG1ha2VzIGVpdGhlciBjYWxscywgaW4gd2hpY2gg
Y2FzZSB3ZSB3YW50IHRvIGJlIHN1cGVyIGNhcmVmdWwsIG9yCiAgICAgLy8gaWYgaXQncyBub3Qg
c2V0IGF0IGFsbCwgaW4gd2hpY2ggY2FzZSB3ZSBwdW50LgogICAgIFN0cnVjdHVyZVN0dWJJbmZv
JiBzdHViSW5mbyA9IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwog
ICAgIGlmICghc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9J
bmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNv
bXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAg
IAogICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogbGlzdDsKICAgICBpbnQgbGlz
dFNpemU7CkBAIC02MCwxOCArODYsMTkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yKAogICAgIH0KICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kp
IHsKICAgICAgICAgaWYgKCFsaXN0LT5saXN0W2ldLmlzRGlyZWN0KQotICAgICAgICAgICAgcmV0
dXJuIEdldEJ5SWRTdGF0dXMoTWFrZXNDYWxscywgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsK
KyAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNl
dCgpLCBub3RGb3VuZCwgdHJ1ZSk7CiAgICAgfQogICAgIAogICAgIC8vIE5leHQgY2hlY2sgaWYg
aXQgdGFrZXMgc2xvdyBjYXNlLCBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUga2luZCBvZiBj
YXJlZnVsLgogICAgIGlmIChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRl
Y29kZUluZGV4KSkKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwg
U3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMo
VGFrZXNTbG93UGF0aCwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsKICAgICAKICAg
ICAvLyBGaW5hbGx5IGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGRlcml2ZSBhbiBhY2Nlc3Mgc3RyYXRl
Z3kuCiAgICAgR2V0QnlJZFN0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fd2FzU2VlbkluSklU
ID0gdHJ1ZTsKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIGFj
Y2Vzc191bnNldDoKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwg
U3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJ
bnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAgICBj
YXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZjogewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKQEAg
LTEzMCw3ICsxNTcsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3Io
CiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlIC8vIEVOQUJMRShKSVQpCi0gICAgcmV0
dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5k
KTsKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQo
KSwgbm90Rm91bmQsIGZhbHNlKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHJldmlz
aW9uIDEwNTY5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3Rh
dHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEwICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgewog
ICAgIH0KICAgICAKLSAgICBHZXRCeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBTdHJ1Y3R1
cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6ZV90IG9mZnNldCkKKyAgICBHZXRCeUlkU3RhdHVzKFN0
YXRlIHN0YXRlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6ZV90IG9mZnNl
dCwgYm9vbCB3YXNTZWVuSW5KSVQpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAgICAgICAg
LCBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQpCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0
KQorICAgICAgICAsIG1fd2FzU2VlbkluSklUKHdhc1NlZW5JbkpJVCkKICAgICB7CiAgICAgICAg
IEFTU0VSVCgoc3RhdGUgPT0gU2ltcGxlRGlyZWN0KSA9PSAob2Zmc2V0ICE9IG5vdEZvdW5kKSk7
CiAgICAgfQpAQCAtNzAsMTAgKzcxLDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJ1Y3R1cmVT
ZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9CiAgICAg
c2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCisgICAgYm9v
bCB3YXNTZWVuSW5KSVQoKSBjb25zdCB7IHJldHVybiBtX3dhc1NlZW5JbkpJVDsgfQorICAgIAog
cHJpdmF0ZToKKyAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVC
bG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKICAgICBT
dGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKICAgICBzaXpl
X3QgbV9vZmZzZXQ7CisgICAgYm9vbCBtX3dhc1NlZW5JbkpJVDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0
aW9uLmgJKHJldmlzaW9uIDEwNTY5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbnN0cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIEpTQ2VsbDsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgY2xh
c3MgU3RydWN0dXJlQ2hhaW47CisgICAgc3RydWN0IExMSW50Q2FsbExpbmtJbmZvOwogICAgIHN0
cnVjdCBWYWx1ZVByb2ZpbGU7CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTQ2LDYgKzE0NywxMSBA
QCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAgICAgc3RydWN0IEluc3RydWN0aW9uIHsKKyAg
ICAgICAgSW5zdHJ1Y3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB1LmpzQ2VsbC5jbGVh
cigpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihPcGNvZGUgb3Bj
b2RlKQogICAgICAgICB7CiAjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQpA
QCAtMTgyLDYgKzE4OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEluc3RydWN0aW9u
KFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1bmMpIHsgdS5nZXR0ZXJGdW5jID0g
Z2V0dGVyRnVuYzsgfQogICAgICAgICAKKyAgICAgICAgSW5zdHJ1Y3Rpb24oTExJbnRDYWxsTGlu
a0luZm8qIGNhbGxMaW5rSW5mbykgeyB1LmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsgfQor
ICAgICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBwcm9maWxlKSB7IHUu
cHJvZmlsZSA9IHByb2ZpbGU7IH0KIAogICAgICAgICB1bmlvbiB7CkBAIC0xOTEsNyArMTk5LDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVy
ZUNoYWluPiBzdHJ1Y3R1cmVDaGFpbjsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8SlND
ZWxsPiBqc0NlbGw7CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0
ZXJGdW5jOworICAgICAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbzsKICAg
ICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZTsKKyAgICAgICAgICAgIHZvaWQqIHBvaW50
ZXI7CiAgICAgICAgIH0gdTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJ
bmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENhbGxMaW5rSW5mb19oCisj
ZGVmaW5lIExMSW50Q2FsbExpbmtJbmZvX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvU2VudGluZWxM
aW5rZWRMaXN0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisK
K3N0cnVjdCBMTEludENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxM
TEludENhbGxMaW5rSW5mbz4geworICAgIExMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAg
fQorICAgIAorICAgIH5MTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgICAgICBpZiAoaXNP
bkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBib29sIGlz
TGlua2VkKCkgeyByZXR1cm4gY2FsbGVlOyB9CisgICAgCisgICAgdm9pZCB1bmxpbmsoKQorICAg
IHsKKyAgICAgICAgY2FsbGVlLmNsZWFyKCk7CisgICAgICAgIG1hY2hpbmVDb2RlVGFyZ2V0ID0g
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAg
ICAgICAgcmVtb3ZlKCk7CisgICAgfQorICAgIAorICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9u
PiBjYWxsZWU7CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGxhc3RTZWVuQ2FsbGVlOwor
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWNoaW5lQ29kZVRhcmdldDsKK307CisKK30gLy8g
bmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gTExJbnRDYWxsTGlua0luZm9faAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlu
a1N0YXR1cy5jcHAJKHJldmlzaW9uIDEwNTY5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYg
KzM1LDkgQEAgTWV0aG9kQ2FsbExpbmtTdGF0dXMgTWV0aG9kQ2FsbExpbmtTdGF0dQogICAgIFVO
VVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRl
eCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIC8vIE5P
VEU6IFRoaXMgZG9lcyBub3QgaGF2ZSBhbiBMTEludCBmYWxsLWJhY2sgYmVjYXVzZSBMTEludCBk
b2VzIG5vdCBkbyBhbnkgbWV0aG9kCisgICAgLy8gY2FsbCBsaW5rIGNhY2hpbmcuCisgICAgCiAg
ICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RDYWxsID0gcHJvZmlsZWRCbG9jay0+Z2V0TWV0
aG9kQ2FsbExpbmtJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIAogICAgIGlmICghbWV0aG9kQ2Fs
bC5zZWVuIHx8ICFtZXRob2RDYWxsLmNhY2hlZFN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDEwNTY5NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYg
KzEyMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9nZXRfYXJndW1lbnRz
X2xlbmd0aCwgNCkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWQsIDkpIFwKICAgICAgICAg
bWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24sIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0LCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbCwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfcmVw
bGFjZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfZ2VuZXJpYywgOSkgXAogICAg
ICAgICBtYWNybyhvcF9kZWxfYnlfaWQsIDQpIFwKQEAgLTIwMiw2ICsyMDQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBlbnVtIHsgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09E
RV9JRF9FTlVNKSB9IE9wY29kZUlEOwogICAgICN1bmRlZiBPUENPREVfSURfRU5VTQogCisgICAg
Y29uc3QgaW50IG1heE9wY29kZUxlbmd0aCA9IDk7CiAgICAgY29uc3QgaW50IG51bU9wY29kZUlE
cyA9IG9wX2VuZCArIDE7CiAKICAgICAjZGVmaW5lIE9QQ09ERV9JRF9MRU5HVEhTKGlkLCBsZW5n
dGgpIGNvbnN0IGludCBpZCMjX2xlbmd0aCA9IGxlbmd0aDsKQEAgLTIxOCw3ICsyMjEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKFZFUklGWV9PUENPREVf
SUQpOwogICAgICN1bmRlZiBWRVJJRllfT1BDT0RFX0lECiAKLSNpZiBFTkFCTEUoQ09NUFVURURf
R09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikg
fHwgRU5BQkxFKExMSU5UKQogI2lmIENPTVBJTEVSKFJWQ1QpIHx8IENPTVBJTEVSKElOVEVMKQog
ICAgIHR5cGVkZWYgdm9pZCogT3Bjb2RlOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEwNTY5NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMjcgKzI3LDY2IEBACiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5o
IgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1
dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4o
KSArIGJ5dGVjb2RlSW5kZXg7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0
aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOworICAgIGlmICghc3RydWN0dXJlKQorICAgICAgICBy
ZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7Cisg
ICAgCisgICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9p
ZCkgeworICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxv
Y2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgICAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5k
KQorICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwg
MCwgbm90Rm91bmQpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2lt
cGxlUmVwbGFjZSwgc3RydWN0dXJlLCAwLCAwLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICBB
U1NFUlQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0CisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxs
aW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgCisgICAgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBpbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdl
dCgpOworICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUpOworICAgIEFTU0VSVChjaGFpbik7CisgICAg
CisgICAgc2l6ZV90IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5n
bG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAg
ICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7
CisgICAgCisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3RydWN0
dXJlLCBuZXdTdHJ1Y3R1cmUsIGNoYWluLCBvZmZzZXQpOworI2Vsc2UKKyAgICByZXR1cm4gUHV0
QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisjZW5kaWYKK30K
KwogUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRl
Y29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYm
IEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9m
U3RydWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHBy
b2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICBpZiAocHJvZmls
ZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCiAgICAgICAgIHJl
dHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKICAg
ICAKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRT
dHViSW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsK
KyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJ
bmRleCwgaWRlbnQpOwogICAgIAogICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewog
ICAgIGNhc2UgYWNjZXNzX3Vuc2V0OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0lu
Zm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJv
bUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAg
ICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6IHsKICAgICAgICAgc2l6ZV90IG9mZnNl
dCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0KApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5o
CShyZXZpc2lvbiAxMDU2OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKICAg
ICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKIHByaXZh
dGU6CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sq
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUg
bV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOwogICAgIFN0cnVjdHVyZSog
bV9uZXdTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTA1Njk2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJCYXRjaGVkVHJh
bnNpdGlvbk9wdGltaXplci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRl
ICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVT
dHJpbmcuaCIKQEAgLTExNiwyNiArMTE3LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGV4cGVj
dGVkIGJ5IHRoZSBjYWxsZWUuCiAqLwogCi0jaWZuZGVmIE5ERUJVRwogc3RhdGljIGJvb2wgc19k
dW1wc0dlbmVyYXRlZENvZGUgPSBmYWxzZTsKLSNlbmRpZgogCiB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUoYm9vbCBkdW1wc0dlbmVyYXRlZENvZGUpCiB7Ci0j
aWZuZGVmIE5ERUJVRwogICAgIHNfZHVtcHNHZW5lcmF0ZWRDb2RlID0gZHVtcHNHZW5lcmF0ZWRD
b2RlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZHVtcHNHZW5lcmF0ZWRDb2RlKTsKLSNlbmRp
ZgogfQogCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKQogewot
I2lmbmRlZiBOREVCVUcKICAgICByZXR1cm4gc19kdW1wc0dlbmVyYXRlZENvZGU7Ci0jZWxzZQot
ICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCiBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKCkKQEAgLTE0OCwxMCArMTM5LDggQEAgSlNPYmplY3QqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSgpCiAKICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25Db3Vu
dChtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIAotI2lmbmRlZiBOREVCVUcK
ICAgICBpZiAoc19kdW1wc0dlbmVyYXRlZENvZGUpCiAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1w
KG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpOwotI2VuZGlmCiAKICAg
ICBpZiAoKG1fY29kZVR5cGUgPT0gRnVuY3Rpb25Db2RlICYmICFtX2NvZGVCbG9jay0+bmVlZHNG
dWxsU2NvcGVDaGFpbigpICYmICFtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKSB8fCBtX2Nv
ZGVUeXBlID09IEV2YWxDb2RlKQogICAgICAgICBzeW1ib2xUYWJsZSgpLmNsZWFyKCk7CkBAIC0x
Mjc2LDkgKzEyNjUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29s
CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJ
bmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVU
RVIpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2Zp
bGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2
ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ0MCw5ICsxNDI3LDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9j
b2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAj
ZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKHJlcXVpcmVzRHluYW1p
Y0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ5MCw5ICsxNDc1
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJM
RShKSVQpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9u
cygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2Rl
QmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkp
OwotI2VuZGlmCiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2Rl
KHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9y
ZXNvbHZlX2dsb2JhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4
KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpA
QCAtMTUxMSw5ICsxNDk0LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1ldGhvZENo
ZWNrKAogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkK
IHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2dldF9ieV9pZCk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0xNTM5LDkgKzE1
MjAsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyCiAKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0jaWYgRU5B
QkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKIAogICAgIGVtaXRPcGNvZGUo
b3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7
CkBAIC0xNTU3LDkgKzE1MzYsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFB1dEJ5CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJ
ZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJ
RCogdmFsdWUpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5h
ZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5k
aWYKICAgICAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTg0OCw3ICsxODI1LDExIEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCgKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2Fs
bEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsg
Ly8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKG1fY29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKDApOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFZhbHVl
UHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQp
OwpAQCAtMTk1Miw3ICsxOTMzLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0Q29uc3QKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1
bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
Y2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hZGRM
TEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDAp
OworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlmIChkc3QgIT0g
aWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQ
cm9maWxlZE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMjIxMyw3ICsyMTk4LDExIEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gKIHsKICAgICBtX3VzZXNF
eGNlcHRpb25zID0gdHJ1ZTsKICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShMTElOVCkKKyAg
ICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDAp
LCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29w
ZURlcHRoLCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9j
YXRjaCkpIH07CisjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAs
IDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2Nv
cGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKCkgfTsKKyNlbmRp
ZgogI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5k
LT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGgg
KyBtX2Jhc2VTY29wZURlcHRoIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMDU2OTYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjA0LDkgKzYwNCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBVTlVTRURf
UEFSQU0obm9kZUluZGV4KTsKICAgICAgICAgCi0gICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIEFTU0VSVChwcm9maWxlKTsKLSAg
ICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKCk7CisgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkK
ICAgICAgICAgcHJpbnRmKCJEeW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwg
bm9kZUluZGV4LCBieXRlY29kZUluZGV4LCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikp
OwogI2VuZGlmCkBAIC0xMDM5LDYgKzEwMzcsMTYgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlSW5saW5pbmcoYm9vbAogICAgIGlmICghbWlnaHRJbmxpbmVGdW5jdGlvbkZvcihwcm9maWxl
ZEJsb2NrLCBraW5kKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAorICAgIC8vIElmIHRo
ZSBjb2RlIGJsb2NrIGlzIHN0aWxsIGludGVycHJldGVkLCB0aGVuIChhKSBpdCdzIG5vdCBob3Qg
YW5kIChiKSBpdCBkb2Vzbid0CisgICAgLy8gaGF2ZSBwcm9maWxpbmcuIFNvLCB3ZSBzaG91bGQg
ZXhpdC4KKyAgICBpZiAocHJvZmlsZWRCbG9jay0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspIHsKKyAgICAgICAgYWRkVG9HcmFwaChGb3JjZU9TUkV4aXQpOworICAg
ICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGNhbGxUYXJnZXROb2RlSW5kZXgpOworICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOyArK2kpCisgICAg
ICAgICAgICBhZGRUb0dyYXBoKFBoYW50b20sIGdldChyZWdpc3Rlck9mZnNldCArIGFyZ3VtZW50
VG9PcGVyYW5kKGkpKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKICAgICAv
LyBJZiB3ZSBnZXQgaGVyZSB0aGVuIGl0IGxvb2tzIGxpa2Ugd2Ugc2hvdWxkIGRlZmluaXRlbHkg
aW5saW5lIHRoaXMgY29kZS4gUHJvY2VlZAogICAgIC8vIHdpdGggcGFyc2luZyB0aGUgY29kZSB0
byBnZXQgYnl0ZWNvZGUsIHNvIHRoYXQgd2UgY2FuIHRoZW4gcGFyc2UgdGhlIGJ5dGVjb2RlLgog
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2tDYWNoZS5nZXQoQ29kZUJsb2Nr
S2V5KGV4ZWN1dGFibGUsIGtpbmQpLCBleHBlY3RlZEZ1bmN0aW9uLT5zY29wZSgpKTsKQEAgLTE3
NDEsNyArMTc0OSw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQK
ICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fY3Vy
cmVudEluZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG1ldGhvZENhbGxTdGF0
dXMuaXNTZXQoKQotICAgICAgICAgICAgICAgICYmICFnZXRCeUlkU3RhdHVzLmlzU2V0KCkKKyAg
ICAgICAgICAgICAgICAmJiAhZ2V0QnlJZFN0YXR1cy53YXNTZWVuSW5KSVQoKQogICAgICAgICAg
ICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1f
Y3VycmVudEluZGV4LCBCYWRDYWNoZSkpIHsKICAgICAgICAgICAgICAgICAvLyBJdCdzIG1vbm9t
b3JwaGljIGFzIGZhciBhcyB3ZSBjYW4gdGVsbCwgc2luY2UgdGhlIG1ldGhvZF9jaGVjayB3YXMg
bGlua2VkCiAgICAgICAgICAgICAgICAgLy8gYnV0IHRoZSBzbG93IHBhdGggKGkuZS4gdGhlIG5v
cm1hbCBnZXRfYnlfaWQpIG5ldmVyIGZpcmVkLgpAQCAtMTgxMCw3ICsxODE4LDkgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9nZXRfYnlfaWQpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
OiB7CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWw6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMDU2OTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTEsNiArMTExLDggQEAgaW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAog
ICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAg
Y2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBv
cF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ug
b3Bfam1wOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTA1Njk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwx
MyBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICB1aW50MzJfdCBl
eGl0SW5kZXggPSBnbG9iYWxEYXRhLT5vc3JFeGl0SW5kZXg7CiAgICAgT1NSRXhpdCYgZXhpdCA9
IGNvZGVCbG9jay0+b3NyRXhpdChleGl0SW5kZXgpOwogICAgIAorICAgIC8vIE1ha2Ugc3VyZSBh
bGwgY29kZSBpcyBKSVQgY29tcGlsZWQuCisgICAgZm9yIChDb2RlT3JpZ2luIGNvZGVPcmlnaW4g
PSBleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGNvZGVPcmln
aW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVyKSB7CisgICAgICAgIHN0YXRp
Y19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5l
eGVjdXRhYmxlLmdldCgpKQorICAgICAgICAgICAgLT5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZS0+aXNDYWxsID8gQ29kZUZvckNhbGwgOiBDb2RlRm9yQ29u
c3RydWN0KQorICAgICAgICAgICAgLT5qaXRDb21waWxlKCpnbG9iYWxEYXRhKTsKKyAgICB9Cisg
ICAgCiAgICAgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkgPSAwOwogICAgIGlmIChleGl0
Lm1fcmVjb3ZlcnlJbmRleCkKICAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5zcGVjdWxh
dGlvblJlY292ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4IC0gMSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEwNTY5NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJE
RkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiREZHUmVwYXRjaC5oIgorI2luY2x1ZGUgIkhvc3RDYWxs
UmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbmxp
bmVBU00uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNTY0LDQ1ICs1NjUsNiBAQCBz
aXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyCiAgICAgcmV0dXJuIEpTVmFs
dWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElP
TiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9O
IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOwotCi0jaWYg
Q1BVKFg4Nl82NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6
IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKLSAgICAibW92ICVyMTMsICVyZGlc
biIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKFg4NikKLWFzbSAoCi0iLmds
b2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xf
U1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJWVk
aSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVzcClcbiIKLSAgICAiam1wICIgU1lNQk9M
X1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAi
XG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20gKAotIi50ZXh0IiAiXG4iCi0iLmFs
aWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLSIudGh1
bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIg
IlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKLSAgICAiY3B5IHIwLCByNSIgIlxu
IgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0KLUVuY29kZWRKU1ZhbHVlIERGR19P
UEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBl
eGVjKQotewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhv
c3RDYWxsUmV0dXJuVmFsdWUpOwotfQotCiBzdGF0aWMgdm9pZCogaGFuZGxlSG9zdENhbGwoRXhl
Y1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1l
KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2Uu
aAkocmV2aXNpb24gMTA1Njk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2Nh
dGlvblNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBK
U0MgewogCiBjbGFzcyBIZWFwOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3Mg
TWFya2VkQmxvY2s7CiAKIGNsYXNzIEFsbG9jYXRpb25TcGFjZSB7CkBAIC02Nyw2ICs2OCw4IEBA
IHB1YmxpYzoKICAgICB2b2lkIHNocmluaygpOwogICAgIAogcHJpdmF0ZToKKyAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAgIGVudW0gQWxsb2NhdGlvbkVm
Zm9ydCB7IEFsbG9jYXRpb25DYW5GYWlsLCBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQgfTsKIAogICAg
IHZvaWQqIGFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMDU2OTYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODM3LDcgKzgzNyw3IEBA
IHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKICAgICAgICAgc2V0SGln
aFdhdGVyTWFyayhtYXgocHJvcG9ydGlvbmFsQnl0ZXMsIG1fbWluQnl0ZXNQZXJDeWNsZSkpOwog
ICAgIH0KICAgICBKQVZBU0NSSVBUQ09SRV9HQ19FTkQoKTsKLQorICAgIAogICAgICgqbV9hY3Rp
dml0eUNhbGxiYWNrKSgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShy
ZXZpc2lvbiAxMDU2OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
SlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTVmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0
ZXJhdG9yOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJr
ZWRBcmd1bWVudEJ1ZmZlcjsKICAgICBjbGFzcyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0
cmluZzsKQEAgLTEzNiwxMSArMTM3LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAg
ICBmcmllbmQgY2xhc3MgQWxsb2NhdGlvblNwYWNlOworICAgICAgICBmcmllbmQgY2xhc3MgQ29k
ZUJsb2NrOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAg
ICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBCdW1w
U3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKLSAgICAgICAgZnJpZW5k
IGNsYXNzIENvZGVCbG9jazsKIAogICAgICAgICBzaXplX3Qgd2F0ZXJNYXJrKCk7CiAgICAgICAg
IHNpemVfdCBoaWdoV2F0ZXJNYXJrKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDEwNTY5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICszMDQsNyBAQCBB
TFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oCiAjZW5kaWYKIAogICAgIEFT
U0VSVChIZWFwOjppc01hcmtlZChjZWxsKSk7Ci0KKyAgICAKICAgICBpZiAoaXNKU1N0cmluZyhj
ZWxsKSkgewogICAgICAgICBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2Vs
bCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxMDU2OTYpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2
ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNs
YXNzIExpdmVPYmplY3RJdGVyYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNs
YXNzIFdlYWtHQ0hhbmRsZTsKIGNsYXNzIFNsb3RWaXNpdG9yOwogCkBAIC03Nyw2ICs3OCw4IEBA
IHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9y
OjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jaygpOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiAgICAgLy8gWyAzMi4uLiAyNTYgXQogICAg
IHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZVN0ZXAgPSBNYXJrZWRCbG9jazo6YXRvbVNpemU7
CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlQ3V0b2ZmID0gMjU2OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24g
MTA1Njk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiArMTE5LDkgQEAgbmFtZXNwYWNlIEpTQyAgewogI2lm
IEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgSW5zdHJ1Y3Rpb24qIHJldHVyblZQQygpIGNv
bnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10udlBDKCk7IH0KICNlbmRp
ZgorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBj
b25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPih0aGlzW1JlZ2lzdGVyRmls
ZTo6QXJndW1lbnRDb3VudF0udGFnKCkpOyB9CisjZW5kaWYKIAogICAgICAgICB2b2lkIHNldENh
bGxlckZyYW1lKENhbGxGcmFtZSogY2FsbGVyRnJhbWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIq
Pih0aGlzKVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXSA9IGNhbGxlckZyYW1lOyB9CiAgICAg
ICAgIHZvaWQgc2V0U2NvcGVDaGFpbihTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikgeyBzdGF0
aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0gPSBzY29w
ZUNoYWluOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEwNTY5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcg
KzY5LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNlbmRpZgogCi0jZGVmaW5lIFdURl9VU0VfR0ND
X0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAoRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVU
RVIpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKKyNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURf
R09UT19XT1JLQVJPVU5EICgoRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVO
QUJMRShMTElOVCkpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKIApAQCAtNTQ3LDE3ICs1NDcsNDEgQEAgSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKIHsK
IH0KIAotdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShib29sIGNhblVzZUpJVCkKK0ludGVy
cHJldGVyOjp+SW50ZXJwcmV0ZXIoKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVS
UFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICBk
ZWxldGVbXSBtX29wY29kZVRhYmxlOworI2VuZGlmCit9CisKK3ZvaWQgSW50ZXJwcmV0ZXI6Omlu
aXRpYWxpemUoTExJbnQ6OkRhdGEqIGxsaW50RGF0YSwgYm9vbCBjYW5Vc2VKSVQpCit7CisjaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAh
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisgICAgLy8gSGF2aW5nIExMSW50IGVu
YWJsZWQsIGJ1dCBub3QgYmVpbmcgYWJsZSB0byB1c2UgdGhlIEpJVCwgYW5kIG5vdCBoYXZpbmcK
KyAgICAvLyBhIGNvbXB1dGVkIGdvdG8gaW50ZXJwcmV0ZXIsIGlzIG5vdCBzdXBwb3J0ZWQuIE5v
dCBiZWNhdXNlIHdlIGNhbm5vdAorICAgIC8vIHN1cHBvcnQgaXQsIGJ1dCBiZWNhdXNlIEkgZGVj
aWRlZCB0byBkcmF3IHRoZSBsaW5lIGF0IHRoZSBudW1iZXIgb2YKKyAgICAvLyBwZXJtdXRhdGlv
bnMgb2YgZXhlY3V0aW9uIGVuZ2luZXMgdGhhdCBJIHdhbnRlZCB0aGlzIGNvZGUgdG8gZ3Jvay4K
KyAgICBBU1NFUlQoY2FuVXNlSklUKTsKKyNlbmRpZgogICAgIGlmIChjYW5Vc2VKSVQpIHsKKyNp
ZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bjb2RlVGFibGUgPSBsbGludERhdGEtPm9wY29k
ZU1hcCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQor
ICAgICAgICAgICAgbV9vcGNvZGVJRFRhYmxlLmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNf
Y2FzdDxPcGNvZGVJRD4oaSkpOworI2Vsc2UKICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVz
ZW50LCBkb24ndCB1c2UganVtcCBkZXN0aW5hdGlvbnMgZm9yIG9wY29kZXMuCiAgICAgICAgIAog
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAg
ICAgICBPcGNvZGUgb3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KGkpKTsKICAgICAgICAgICAgIG1fb3Bjb2RlVGFibGVbaV0gPSBvcGNvZGU7CiAgICAg
ICAgIH0KKyNlbmRpZgogICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBt
X29wY29kZVRhYmxlID0gbmV3IE9wY29kZVtudW1PcGNvZGVJRHNdOworI2VuZGlmCiAgICAgICAg
IHByaXZhdGVFeGVjdXRlKEluaXRpYWxpemVBbmRSZXR1cm4sIDAsIDApOwogICAgICAgICAKICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKQEAgLTY2Nyw5ICs2
OTEsMTEgQEAgdm9pZCBJbnRlcnByZXRlcjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbQogCiBib29s
IEludGVycHJldGVyOjppc09wY29kZShPcGNvZGUgb3Bjb2RlKQogewotI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJF
VEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJMRShMTElOVCkKICAgICBpZiAoIW1fZW5h
YmxlZCkKICAgICAgICAgcmV0dXJuIG9wY29kZSA+PSAwICYmIHN0YXRpY19jYXN0PE9wY29kZUlE
PihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKSA8PSBvcF9lbmQ7CisjZW5kaWYKICAg
ICByZXR1cm4gb3Bjb2RlICE9IEhhc2hUcmFpdHM8T3Bjb2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAg
ICAgICYmICFIYXNoVHJhaXRzPE9wY29kZT46OmlzRGVsZXRlZFZhbHVlKG9wY29kZSkKICAgICAg
ICAgJiYgbV9vcGNvZGVJRFRhYmxlLmNvbnRhaW5zKG9wY29kZSk7CkBAIC03MjYsMTEgKzc1Miwx
MSBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2
ZSB0byBzdWJ0cmFjdCAxLgogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShJTlRFUlBSRVRFUikK
ICAgICBpZiAoY2FsbGVyRnJhbWUtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkKLSAgICAgICAg
Ynl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0
dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9m
ZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICAgICBlbHNlCiAgICAg
ICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUt
PnJldHVyblZQQygpKSAtIDE7CiAjZWxpZiBFTkFCTEUoSklUKQotICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAg
IGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwg
Y2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbHNlCiAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2Rl
QmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbmRp
ZgpAQCAtNTE3MCwxMCArNTE5NiwxMCBAQCB2b2lkIEludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RD
YWxsZXIoQ2FsCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRl
Y29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKTsKICNpZiBFTkFCTEUoSklUKQogICAg
IGVsc2UKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2Rl
T2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0g
Y2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5y
ZXR1cm5QQygpKTsKICNlbmRpZgogI2Vsc2UKLSAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNv
ZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRl
Y29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUs
IGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYKICAgICBsaW5lTnVtYmVyID0gY2FsbGVy
Q29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQgLSAx
KTsKICAgICBzb3VyY2VJRCA9IGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNv
dXJjZUlEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTA1Njk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIK
ICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKIApAQCAtNDUsNiArNDYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgSlNGdW5jdGlv
bjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7
CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CkBAIC05MCwxOSArOTIsMjEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBJbnRlcnByZXRlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwotICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xh
c3MgQ2FjaGVkQ2FsbDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBwdWJsaWM6CiAgICAgICAgIEludGVy
cHJldGVyKCk7CisgICAgICAgIH5JbnRlcnByZXRlcigpOwogICAgICAgICAKLSAgICAgICAgdm9p
ZCBpbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKTsKKyAgICAgICAgdm9pZCBpbml0aWFsaXplKExM
SW50OjpEYXRhKiwgYm9vbCBjYW5Vc2VKSVQpOwogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVn
aXN0ZXJGaWxlKCkgeyByZXR1cm4gbV9yZWdpc3RlckZpbGU7IH0KICAgICAgICAgCiAgICAgICAg
IE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFT
U0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRF
UikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5U
KQogICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlVGFibGVbaWRdOwogI2Vsc2UKICAgICAgICAg
ICAgIHJldHVybiBpZDsKQEAgLTExMiw3ICsxMTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIE9wY29kZUlEIGdldE9wY29kZUlEKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19J
TlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgICAgICBBU1NFUlQoaXNPcGNv
ZGUob3Bjb2RlKSk7CisgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVJRFRhYmxlLmdldChvcGNv
ZGUpOworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgICAg
ICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7CiAgICAgICAgICAgICBpZiAoIW1fZW5hYmxlZCkK
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2Fz
dDx1aW50cHRyX3Q+KG9wY29kZSkpOwpAQCAtMTIyLDYgKzEyOSwxMSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiBvcGNvZGU7CiAjZW5kaWYKICAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgYm9vbCBlbmFibGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IG1fZW5hYmxlZDsKKyAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsK
IApAQCAtMTg5LDcgKzIwMSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3Rl
ckZpbGUgbV9yZWdpc3RlckZpbGU7CiAgICAgICAgIAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RP
X0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgT3Bjb2RlKiBtX29wY29k
ZVRhYmxlOyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCisgICAgICAg
IEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29k
ZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21waWxpbmcKKyNlbGlmIEVOQUJMRShDT01QVVRFRF9HT1RP
X0lOVEVSUFJFVEVSKQogICAgICAgICBPcGNvZGUgbV9vcGNvZGVUYWJsZVtudW1PcGNvZGVJRHNd
OyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCiAgICAgICAgIEhhc2hN
YXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBP
cGNvZGVJRCBmb3IgZGVjb21waWxpbmcKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkocmV2aXNpb24gMTA1Njk2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
Q29uc2VydmF0aXZlUm9vdHM7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBSZWdpc3RlckZpbGUgewogICAgICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWdpc3RlckZpbGUpOwpAQCAtODEsNiArODIsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgZ3Jv
d1Nsb3dDYXNlKFJlZ2lzdGVyKik7CiAgICAgICAgIHZvaWQgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5
KCk7CiAgICAgICAgIHZvaWQgYWRkVG9Db21taXR0ZWRCeXRlQ291bnQobG9uZyk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJu
VmFsdWUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNp
bmNsdWRlICJJbmxpbmVBU00uaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpT
VmFsdWVJbmxpbmVNZXRob2RzLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZB
TFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7CitleHRlcm4gIkMiIEVuY29kZWRK
U1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFs
dWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOworCisjaWYgQ1BVKFg4Nl82NCkKK2FzbSAoCisi
Lmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1C
T0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAo
JXIxMyksICVyMTNcbiIKKyAgICAibW92ICVyMTMsICVyZGlcbiIKKyAgICAiam1wICIgU1lNQk9M
X1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAi
XG4iCispOworI2VsaWYgQ1BVKFg4NikKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKKyAgICAibW92
ICVlZGksIDQoJWVzcClcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKEFS
TV9USFVNQjIpCithc20gKAorIi50ZXh0IiAiXG4iCisiLmFsaWduIDIiICJcbiIKKyIuZ2xvYmwg
IiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lNQk9M
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKKyIudGh1bWIiICJcbiIKKyIudGh1bWJfZnVu
YyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9M
X1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJsZHIgcjUsIFty
NSwgIy00MF0iICJcbiIKKyAgICAiY3B5IHIwLCByNSIgIlxuIgorICAgICJiICIgU1lNQk9MX1NU
UklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4i
CispOworI2VuZGlmCisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVS
Tl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0
YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZh
bHVlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBIb3N0Q2FsbFJldHVyblZhbHVlX2gK
KyNkZWZpbmUgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3Jt
Lmg+CisKKyNpZiBDQUxMSU5HX0NPTlZFTlRJT05fSVNfU1REQ0FMTAorI2RlZmluZSBIT1NUX0NB
TExfUkVUVVJOX1ZBTFVFX09QVElPTiBDREVDTAorI2Vsc2UKKyNkZWZpbmUgSE9TVF9DQUxMX1JF
VFVSTl9WQUxVRV9PUFRJT04KKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKK2V4dGVybiAiQyIg
RW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSgpOworfQorCisjZW5kaWYgLy8gSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEwNTY5NikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMy
NSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5F
X09QKG9wX3Byb2ZpbGVfd2lsbF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9uZXdf
c2NvcGUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX3Njb3BlKQorICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAgICAg
ICAgIERFRklORV9PUChvcF9wdXRfYnlfaW5kZXgpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRf
YnlfdmFsKQpAQCAtNDg3LDYgKzQ4OSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dD
YXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wcmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcmVzb2x2
ZV9nbG9iYWwpCkBAIC01MjYsNiArNTMwLDEwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNs
b3dDYXNlcygpCiAKIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5jdGlv
bkVudHJ5QXJpdHlDaGVjaykKIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHBy
aW50ZigiQ29tcGlsaW5nIEpJVCBjb2RlIVxuIik7CisjZW5kaWYKKyAgICAKICNpZiBFTkFCTEUo
VkFMVUVfUFJPRklMRVIpCiAgICAgbV9jYW5CZU9wdGltaXplZCA9IG1fY29kZUJsb2NrLT5jYW5D
b21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC02OTAsOCArNjk4LDEyIEBAIEpJVENvZGUgSklU
Ojpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9j
YXRpb24gPSBtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8obV9tZXRob2RDYWxsQ29tcGls
YXRpb25JbmZvW2ldLnByb3BlcnR5QWNjZXNzSW5kZXgpLmNhbGxSZXR1cm5Mb2NhdGlvbjsKICAg
ICB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAobV9jYW5CZU9wdGltaXplZCkgewor
I2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fY2FuQmVPcHRp
bWl6ZWQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHx8IHRydWUKKyNlbmRpZgorICAgICAg
ICApIHsKICAgICAgICAgQ29tcGFjdEpJVENvZGVNYXA6OkVuY29kZXIgaml0Q29kZU1hcEVuY29k
ZXI7CiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9m
ZnNldCA8IG1fbGFiZWxzLnNpemUoKTsgKytieXRlY29kZU9mZnNldCkgewogICAgICAgICAgICAg
aWYgKG1fbGFiZWxzW2J5dGVjb2RlT2Zmc2V0XS5pc1NldCgpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEwNTY5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBKSVRDb2RlKCkgeyB9CiAjZW5kaWYKICAgICBwdWJsaWM6Ci0g
ICAgICAgIGVudW0gSklUVHlwZSB7IEhvc3RDYWxsVGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQg
fTsKKyAgICAgICAgZW51bSBKSVRUeXBlIHsgTm9uZSwgSG9zdENhbGxUaHVuaywgSW50ZXJwcmV0
ZXJUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OwogICAgICAgICAKICAgICAgICAgc3RhdGlj
IEpJVFR5cGUgYm90dG9tVGllckpJVCgpCiAgICAgICAgIHsKQEAgLTY2LDggKzY2LDE5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIERGR0pJVDsKICAgICAgICAgfQogICAg
ICAgICAKKyAgICAgICAgc3RhdGljIGJvb2wgaXNPcHRpbWl6aW5nSklUKEpJVFR5cGUgaml0VHlw
ZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gREZHSklUOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgYm9vbCBpc0Jhc2VsaW5lQ29kZShKSVRU
eXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IElu
dGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBCYXNlbGluZUpJVDsKKyAgICAgICAgfQorICAg
ICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBKSVRDb2RlKCkKKyAgICAgICAgICAgIDog
bV9qaXRUeXBlKE5vbmUpCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03NSw2ICs4Niw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgOiBtX3JlZihyZWYpCiAgICAgICAgICAgICAs
IG1faml0VHlwZShqaXRUeXBlKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaml0VHlw
ZSAhPSBOb25lKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciAh
KCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkocmV2aXNp
b24gMTA1Njk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDIxIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRl
ICJMTEludEVudHJ5cG9pbnRzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBDb2RlQmxvY2tUeXBlPgogaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9j
aywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlm
IChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAg
IAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRD
b2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlKGdsb2Jh
bERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CkBAIC01NSwxMCArNjEsNyBAQCBpbmxp
bmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShKU0dsCiAgICAgICAgIH0KICAgICAgICAg
aml0Q29kZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpKTsKICAg
ICB9Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRlY29kZUdlbmVy
YXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0
ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgorICAgIGNvZGVCbG9jay0+aGFu
ZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2RlQmxvY2stPnNldEpJ
VENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwogICAgIAogICAgIHJldHVy
biB0cnVlOwpAQCAtNjYsOSArNjksMTQgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUoSlNHbAogCiBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29k
ZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGppdENvZGVX
aXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6
SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklU
VHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEu
Y2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+
dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxz
ZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBp
bGVkID0gREZHOjp0cnlDb21waWxlRnVuY3Rpb24oZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgp
LCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwpAQCAtODMsMTEgKzkxLDcgQEAgaW5s
aW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaQogICAgICAgICB9CiAgICAgICAg
IGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgJmpp
dENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5H
KQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQotICAg
ICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7Ci0j
ZW5kaWYKLSAgICAKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9y
dHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRo
QXJpdHlDaGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEwNTY5NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTY0LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3coSlNHbG9iYWxE
YQogCiBFeGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
RXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIFJldHVybkFkZHJl
c3NQdHIgZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERh
dGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5
dGVjb2RlT2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGds
b2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1bHRMb2NhdGlvbikpOwogfQogCiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTA1Njk2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE5MTUsNyArMTkxNSw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGlt
aXplX2Zyb20KICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gc3RhY2tGcmFtZS5hcmdzWzBd
LmludDMyKCk7CiAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50ZigiRW50
ZXJlZCBvcHRpbWl6ZV9mcm9tX2xvb3Agd2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCByZW9wdGlt
aXphdGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAldVxu
IiwgY29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudGVyKCksIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkp
OworICAgIHByaW50ZigiJXA6IEVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0
ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0
aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5qaXRFeGVjdXRl
Q291bnRlcigpLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCksIGNvZGVC
bG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOwogI2VuZGlmCiAKICAgICBpZiAoY29k
ZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpKSB7CkBAIC0yMTcwLDQ1ICsyMTcwLDEz
IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1pbmxpbmUgQ2FsbEZyYW1lKiBhcml0eUNoZWNrRm9yKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQotewotICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oY2FsbEZy
YW1lLT5jYWxsZWUoKSk7Ci0gICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwot
ICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdl
bmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOwotICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKLQotICAgIC8v
IFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9m
IHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgotICAgIGlmICghcmVnaXN0ZXJG
aWxlLT5ncm93KGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm51bVBhcmFt
ZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0Nv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKLQotICAgIC8vIFRvbyBmZXcgYXJndW1lbnRzIC0t
IGNvcHkgY2FsbCBmcmFtZSBhbmQgYXJndW1lbnRzLCB0aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1
bWVudHMgd2l0aCB1bmRlZmluZWQuCi0gICAgc2l6ZV90IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKLSAgICBSZWdpc3Rl
ciogc3JjID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKTsKLSAgICBSZWdpc3RlciogZHN0ID0gY2Fs
bEZyYW1lLT5yZWdpc3RlcnMoKSArIGRlbHRhOwotCi0gICAgaW50IGk7Ci0gICAgaW50IGVuZCA9
IC1DYWxsRnJhbWU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7Ci0gICAg
Zm9yIChpID0gLTE7IGkgPj0gZW5kOyAtLWkpCi0gICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKLQot
ICAgIGVuZCAtPSBkZWx0YTsKLSAgICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkpCi0gICAgICAgIGRz
dFtpXSA9IGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENh
bGxGcmFtZTo6Y3JlYXRlKGRzdCk7Ci0gICAgQVNTRVJUKCh2b2lkKiluZXdDYWxsRnJhbWUgPD0g
cmVnaXN0ZXJGaWxlLT5lbmQoKSk7Ci0gICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKLX0KLQogREVG
SU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxfYXJpdHlDaGVjaykKIHsKICAgICBTVFVC
X0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUg
PSBhcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVG
b3JDYWxsKTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6
YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9y
Q2FsbCk7CiAgICAgaWYgKCFuZXdDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2Vw
dGlvbkZyb21PcENhbGw8dm9pZCo+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5f
QUREUkVTUywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUo
KSkpOwogCkBAIC0yMjIxLDcgKzIxODksNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwg
b3BfY29uc3RydWN0CiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2Fs
bEZyYW1lOwogCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBhcml0eUNoZWNrRm9yKGNh
bGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDb25zdHJ1Y3QpOworICAg
IENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9y
KGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDb25zdHJ1Y3QpOwog
ICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9t
T3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1Ms
IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNp
b24gMTA1Njk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiwxMCBAQAogI2lmbmRlZiBKU0ludGVyZmFjZUpJ
VF9oCiAjZGVmaW5lIEpTSW50ZXJmYWNlSklUX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVu
dGlvbnMuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNp
bmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJNYWNy
b0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIExMSW50Q29tbW9uX2gKKyNkZWZpbmUgTExJbnRDb21tb25faAorCisjZGVmaW5lIExM
SU5UX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNkZWZpbmUgTExJTlRfSEVMUEVSX1RSQUNJTkcgMAor
CisjZW5kaWYgLy8gTExJbnRDb21tb25faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2lu
Y2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgor
I2luY2x1ZGUgIk9wY29kZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsK
KworRGF0YTo6RGF0YSgpCisgICAgOiBtX2V4Y2VwdGlvbkluc3RydWN0aW9ucyhuZXcgSW5zdHJ1
Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsgMV0pCisgICAgLCBtX29wY29kZU1hcChuZXcgT3Bjb2Rl
W251bU9wY29kZUlEc10pCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5n
dGggKyAxOyArK2kpCisgICAgICAgIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRl
ciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xp
bmUpOworI2RlZmluZSBPUENPREVfRU5UUlkob3Bjb2RlLCBsZW5ndGgpIG1fb3Bjb2RlTWFwW29w
Y29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF8jI29wY29kZSk7CisgICAgRk9SX0VB
Q0hfT1BDT0RFX0lEKE9QQ09ERV9FTlRSWSk7CisjdW5kZWYgT1BDT0RFX0VOVFJZCit9CisKK0Rh
dGE6On5EYXRhKCkKK3sKKyAgICBkZWxldGVbXSBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAg
ICBkZWxldGVbXSBtX29wY29kZU1hcDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50
CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnREYXRhX2gK
KyNkZWZpbmUgTExJbnREYXRhX2gKKworI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgPHd0
Zi9QbGF0Zm9ybS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOwor
CituYW1lc3BhY2UgTExJbnQgeworCisjaWYgRU5BQkxFKExMSU5UKQorY2xhc3MgRGF0YSB7Citw
dWJsaWM6CisgICAgRGF0YSgpOworICAgIH5EYXRhKCk7CisgICAgCisgICAgSW5zdHJ1Y3Rpb24q
IGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAgeworICAgICAgICByZXR1cm4gbV9leGNlcHRp
b25JbnN0cnVjdGlvbnM7CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX29wY29kZU1hcDsKKyAgICB9Citwcml2YXRlOgorICAgIElu
c3RydWN0aW9uKiBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBPcGNvZGUqIG1fb3Bjb2Rl
TWFwOworfTsKKyNlbHNlIC8vIEVOQUJMRShMTElOVCkKKworI2lmIENPTVBJTEVSKENMQU5HKQor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkICItV21pc3Npbmctbm9yZXR1cm4iCisjZW5kaWYKKworY2xhc3MgRGF0YSB7CitwdWJs
aWM6CisgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAgeworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBvcGNv
ZGVNYXAoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfTsK
KworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2Vu
ZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpM
TEludAorCisjZW5kaWYgLy8gTExJbnREYXRhX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50
cy5oIgorCisjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgor
I2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5o
IgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlv
bkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlD
aGVjaykKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaWYg
KGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpI
b3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVS
ZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBqaXRDb2Rl
ID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2Vs
Zk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgYXJp
dHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgaml0
Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5
VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICAgICAgYXJp
dHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNr
VGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFT
U0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGppdENvZGUgPSBKSVRDb2RlKGds
b2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0
b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBhcml0eUNoZWNrID0gZ2xvYmFs
RGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJh
dG9yKS5jb2RlKCk7Cit9CisKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5V
c2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVy
Q29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9ldmFsX3Byb2xvZ3VlKSkpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxE
YXRhLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnBy
ZXRlclRodW5rKTsKK30KKwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNh
blVzZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGds
b2JhbERhdGEuZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlw
b2ludHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RW50cnlwb2ludHNfaAor
I2RlZmluZSBMTEludEVudHJ5cG9pbnRzX2gKKworI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlv
bktpbmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV2YWxDb2RlQmxvY2s7CitjbGFz
cyBKSVRDb2RlOworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOworY2xhc3MgUHJvZ3JhbUNvZGVCbG9j
azsKKworbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNH
bG9iYWxEYXRhJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgSklUQ29kZSYsIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciYgYXJpdHlDaGVjayk7Cit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFs
RGF0YSYsIEpJVENvZGUmKTsKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRh
JiwgSklUQ29kZSYpOworCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgRXZhbENvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0
RXZhbEVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK2lubGluZSB2b2lkIGdl
dEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9ncmFtQ29kZUJsb2NrKiwg
SklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRQcm9ncmFtRW50cnlwb2ludChnbG9iYWxEYXRh
LCBqaXRDb2RlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAv
LyBMTEludEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorCisjaW5jbHVk
ZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW5zdHJ1
Y3Rpb24uaCIKKyNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTExJbnRDb21t
b24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGludGVycHJldGVyVGhyb3coRXhlY1N0YXRlKiBl
eGVjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRh
KCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2Vw
dGlvbiAlcy5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRp
ZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRp
b24sIGV4ZWMtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChleGVjLCBleGVjLT5yZXR1cm5Q
QygpKSk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmxsaW50
RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRv
VGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJf
VFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93
KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAg
IGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBj
IC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAg
IHJldHVybiBnbG9iYWxEYXRhLT5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9
CisKK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQor
eworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7Cisj
aWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAl
cyAoY2FsbFRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkp
OworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEt
PmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4o
KSk7CisgICAgCisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2R1
cmluZ19jYWxsX3RyYW1wb2xpbmUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2Vw
dGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RXhjZXB0aW9uc19oCisj
ZGVmaW5lIExMSW50RXhjZXB0aW9uc19oCisKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rp
b247CisKK25hbWVzcGFjZSBMTEludCB7CisKKy8vIEp1c3QgdGhyb3cgdGhlIGN1cnJlbnRseSBh
Y3RpdmUgZXhjZXB0aW9uIGluIHRoZSBjb250ZXh0IG9mIHRoaXMgZXhlYyBzdGF0ZQorLy8gYW5k
IHNldCB1cCBhbGwgbmVjZXNzYXJ5IHN0YXRlLgordm9pZCBpbnRlcnByZXRlclRocm93KEV4ZWNT
dGF0ZSopOworCisvLyBUZWxscyB5b3Ugd2hlcmUgdG8ganVtcCB0byBpZiB5b3Ugd2FudCB0byBy
ZXR1cm4tdG8tdGhyb3csIGFmdGVyIHlvdSd2ZSBhbHJlYWR5CisvLyBzZXQgdXAgYWxsIGluZm9y
bWF0aW9uIG5lZWRlZCB0byB0aHJvdyB0aGUgZXhjZXB0aW9uLgorSW5zdHJ1Y3Rpb24qIHJldHVy
blRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0YXRlKik7CisKKy8vIFNhdmVzIHRoZSBj
dXJyZW50IFBDIGluIHRoZSBnbG9iYWwgZGF0YSBmb3Igc2FmZS1rZWVwaW5nLCBhbmQgZ2l2ZXMg
eW91IGEgUEMKKy8vIHRoYXQgeW91IGNhbiB0ZWxsIHRoZSBpbnRlcnByZXRlciB0byBnbyB0bywg
d2hpY2ggd2hlbiBhZHZhbmNlZCBiZXR3ZWVuIDEKKy8vIGFuZCA5IHNsb3RzIHdpbGwgZ2l2ZSB5
b3UgYW4gImluc3RydWN0aW9uIiB0aGF0IHRocmVhZHMgdG8gdGhlIGludGVycHJldGVyJ3MKKy8v
IGV4Y2VwdGlvbiBoYW5kbGVyLiBOb3RlIHRoYXQgaWYgeW91IGdpdmUgaXQgdGhlIFBDIGZvciBl
eGNlcHRpb24gaGFuZGxpbmcsCisvLyBpdCdzIHNtYXJ0IGVub3VnaCB0byBqdXN0IHJldHVybiB0
aGF0IFBDIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxzZTsgdGhpcworLy8gbGV0cyB5b3UgdGhy
ZWFkIGV4Y2VwdGlvbiBoYW5kbGluZyB0aHJvdWdoIGNvbW1vbiBoZWxwZXIgZnVuY3Rpb25zIHVz
ZWQgYnkKKy8vIG90aGVyIGhlbHBlcnMuCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhFeGVj
U3RhdGUqLCBJbnN0cnVjdGlvbiopOworCisvLyBVc2UgdGhpcyB3aGVuIHlvdSdyZSB0aHJvd2lu
ZyB0byBhIGNhbGwgdGh1bmsuCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVj
dGlvbiopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50
RXhjZXB0aW9uc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxw
ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRI
ZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludEhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0MjQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkxMSW50SGVscGVycy5oIgorCisjaW5jbHVkZSAiQXJndW1lbnRz
LmgiCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgi
CisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorI2luY2x1ZGUgIkludGVycHJldGVy
LmgiCisjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiSklURHJpdmVyLmgiCisjaW5jbHVkZSAi
SlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKKyNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aCIKKyNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmcu
aCIKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNs
dWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgi
CisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExM
SW50IHsKKworI2RlZmluZSBMTElOVF9PUChpbmRleCkgKGV4ZWMtPnVuY2hlY2tlZFIocGNbaW5k
ZXhdLnUub3BlcmFuZCkpCisjZGVmaW5lIExMSU5UX09QX0MoaW5kZXgpIChleGVjLT5yKHBjW2lu
ZGV4XS51Lm9wZXJhbmQpKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9UV08oZmlyc3QsIHNlY29u
ZCkgZG8geyAgICAgICBcCisgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICAgICAgdm9pZCogYTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICAgICAgdm9pZCogYjsgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgICAgICB9IHBhaXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICBpbnQ2NF90IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIH0gX19ydF91OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIF9fcnRfdS5wYWlyLmEgPSBmaXJzdDsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IF9fcnRfdS5wYWlyLmIgPSBzZWNvbmQ7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJl
dHVybiBfX3J0X3UuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAo
ZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCBl
eGVjKQorCisjZGVmaW5lIExMSU5UX1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYgX190X2dsb2JhbERhdGEg
PSBleGVjLT5nbG9iYWxEYXRhKCk7ICAgICAgICBcCisgICAgICAgIF9fdF9nbG9iYWxEYXRhLmV4
Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICBcCisgICAgICAgIHBjID0g
cmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFko
ZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpIHsgICBcCisgICAgICAgICAgICBwYyA9IHJl
dHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5U
X0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAo
ZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfRU5EKCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdo
aWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9CUkFOQ0gob3Bjb2RlLCBjb25kaXRpb24pIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBib29sIF9fYl9jb25kaXRpb24gPSAo
Y29uZGl0aW9uKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBpZiAoX19iX2NvbmRpdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgcGMgKz0gcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5v
cGVyYW5kOyAgICAgICAgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0gT1BDT0RFX0xF
TkdUSChvcGNvZGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9F
TkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTih2YWx1ZSkgZG8geyAgICAg
ICAgICAgICAgICBcCisgICAgICAgIEpTVmFsdWUgX19yX3JldHVyblZhbHVlID0gKHZhbHVlKTsg
ICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBc
CisgICAgICAgIExMSU5UX09QKDEpID0gX19yX3JldHVyblZhbHVlOyAgICAgICAgICBcCisgICAg
ICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGls
ZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wY29kZSwgdmFsdWUp
IGRvIHsgICAgICAgICAgICAgICBcCisgICAgICAgIEpTVmFsdWUgX19ycF9yZXR1cm5WYWx1ZSA9
ICh2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRf
T1AoMSkgPSBfX3JwX3JldHVyblZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBd
ID0gXAorICAgICAgICAgICAgSlNWYWx1ZTo6ZW5jb2RlKF9fcnBfcmV0dXJuVmFsdWUpOyAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUg
TExJTlRfQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0KSBMTElOVF9SRVRVUk5fVFdPKChj
YWxsVGFyZ2V0KSwgKGV4ZWMpKQorCisjZGVmaW5lIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMs
IGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0
ZSogX19jdF9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIEluc3RydWN0aW9uKiBfX2N0X3BjID0gKHBjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYgX19jdF9nbG9iYWxEYXRh
ID0gKF9fY3RfZXhlYyktPmdsb2JhbERhdGEoKTsgICAgICBcCisgICAgICAgIF9fY3RfZ2xvYmFs
RGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jdF9leGVjLCBjYWxsVG9UaHJvdyhfX2N0X2V4
ZWMsIF9fY3RfcGMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NB
TExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIEV4ZWNTdGF0ZSogX19jY2VfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2NjZV9wYyA9IChwYyk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VM
WShfX2NjZV9leGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY2NlX2V4ZWMsIGNhbGxUb1Rocm93KF9f
Y2NlX2V4ZWMsIF9fY2NlX3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBM
TElOVF9DQUxMX1JFVFVSTihleGVjLCBwYywgY2FsbFRhcmdldCkgZG8geyAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3JfZXhlYyA9IChleGVjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jcl9wYyA9
IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2b2lk
KiBfX2NyX2NhbGxUYXJnZXQgPSAoY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihfX2NyX2V4ZWMtPmNhbGxl
ckZyYW1lKCksIF9fY3JfcGMpOyAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3Jf
ZXhlYywgX19jcl9jYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZh
bHNlKQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChF
eGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJh
bmQpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXUsIG9wIyV1OiBUcmFj
ZSglZCk6ICVkOiAlZFxuIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAg
ICAgIGV4ZWMsCisgICAgICAgICAgIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9u
cygpLmJlZ2luKCksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUsCisgICAg
ICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFj
ZV92YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwg
aW50IG9wZXJhbmQpCit7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0Mob3BlcmFuZCku
anNWYWx1ZSgpOworICAgIEVuY29kZWRWYWx1ZURlc2NyaXB0b3IgZGVzY3JpcHRvcjsKKyAgICBk
ZXNjcmlwdG9yLmFzSW50NjQgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOworICAgIHByaW50Zigi
JXAgLyAlcDogZXhlY3V0aW5nIGJjIyV1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWQ6ICUwOHg6
JTA4eCIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAor
ICAgICAgICAgICBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
LAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJvbVdoZXJlLAorICAgICAgICAgICBvcGVy
YW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQsCisgICAgICAgICAgIGRlc2Ny
aXB0b3IuYXNCaXRzLnRhZywKKyAgICAgICAgICAgZGVzY3JpcHRvci5hc0JpdHMucGF5bG9hZCk7
CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50ZigiOiAlcyIsIHZhbHVlLmRlc2NyaXB0aW9uKCkp
OworI2VuZGlmCisgICAgcHJpbnRmKCJcbiIpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGlu
IHByb2xvZ3VlLlxuIiwgZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMpOworICAgIExMSU5UX0VORCgp
OworfQorCitzdGF0aWMgdm9pZCB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBjaGFyKiBjb21tZW50LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7Cisg
ICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9ICZleGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29k
ZUZvcihraW5kKTsKKyAgICBwcmludGYoIiVwIC8gJXA6IGluICVzIG9mIGZ1bmN0aW9uICVwLCBl
eGVjdXRhYmxlICVwOyBudW1WYXJzID0gJXUsIG51bVBhcmFtZXRlcnMgPSAldSwgbnVtQ2FsbGVl
UmVnaXN0ZXJzID0gJXUuXG4iLAorICAgICAgICAgICBjb2RlQmxvY2ssIGV4ZWMsIGNvbW1lbnQs
IGNhbGxlZSwgZXhlY3V0YWJsZSwKKyAgICAgICAgICAgY29kZUJsb2NrLT5tX251bVZhcnMsIGNv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJz
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2Nh
bGwpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIHByb2xvZ3VlIiwg
Q29kZUZvckNhbGwpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0
cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rp
b25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IHByb2xvZ3VlIiwgQ29kZUZvckNvbnN0cnVjdCk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hl
Y2tfZm9yX2NhbGwpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIGFy
aXR5IGNoZWNrIiwgQ29kZUZvckNhbGwpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgdHJhY2VG
dW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjb25zdHJ1Y3QgYXJpdHkgY2hlY2siLCBDb2RlRm9yQ29u
c3RydWN0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2Up
Cit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXUsICIsCisgICAgICAgICAg
IGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBwYyAtIGV4
ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyNpZm5kZWYgTkRFQlVH
CisgICAgcHJpbnRmKCIlcywgIiwgb3Bjb2RlTmFtZXNbZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSldKTsKKyNlbHNlCisgICAgcHJpbnRm
KCJvcCMldSwgIiwgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChw
Y1swXS51Lm9wY29kZSkpOworI2VuZGlmCisgICAgcHJpbnRmKCJzY29wZSAlcFxuIiwgZXhlYy0+
c2NvcGVDaGFpbigpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
c3BlY2lhbF90cmFjZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBzcGVjaWFs
IGNhc2UgYmMjJXUsIG9wIyV1LCByZXR1cm4gUEMgaXMgJXBcbiIsCisgICAgICAgICAgIGV4ZWMt
PmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBwYyAtIGV4ZWMtPmNv
ZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLAorICAgICAgICAgICBleGVjLT5nbG9i
YWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAg
ICAgICAgZXhlYy0+cmV0dXJuUEMoKS52YWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
aW5saW5lIGJvb2wgc2hvdWxkSklUKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBZb3UgY2Fu
IG1vZGlmeSB0aGlzIHRvIHR1cm4gb2ZmIEpJVHRpbmcgd2l0aG91dCByZWJ1aWxkaW5nIHRoZSB3
b3JsZC4KKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpOworfQorCitl
bnVtIEVudHJ5S2luZCB7IFByb2xvZ3VlLCBBcml0eUNoZWNrIH07CitzdGF0aWMgSGVscGVyUmV0
dXJuVHlwZSBlbnRyeU9TUihFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUsIEVudHJ5S2luZCBraW5kKQoreworI2lm
IEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCAlcyB3aXRo
IGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywgbmFtZSwgY29kZUJsb2NrLT5sbGlu
dEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhl
YykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAg
TExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgaWYgKCFjb2RlQmxvY2stPmpp
dENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9P
U1IpCisgICAgICAgIHByaW50ZigiICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsK
KyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICBpZiAoa2luZCA9
PSBQcm9sb2d1ZSkKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KDApLCBleGVjKTsKKyAgICBBU1NFUlQoa2lu
ZCA9PSBBcml0eUNoZWNrKTsKKyAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+Z2V0SklU
Q29kZVdpdGhBcml0eUNoZWNrKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZXhlYyk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcikKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywg
cGMsIGV4ZWMtPmNvZGVCbG9jaygpLCAiZW50cnlfb3NyIiwgUHJvbG9ndWUpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwpCit7CisgICAgcmV0dXJu
IGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0
YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ2FsbCksICJlbnRyeV9vc3JfZnVu
Y3Rpb25fZm9yX2NhbGwiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5
X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVj
LCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJh
dGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNvbnN0cnVjdCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdCIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4
ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5l
cmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ2FsbCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2Nh
bGxfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBl
bnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFi
bGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNvbnN0cnVjdCksICJlbnRyeV9vc3Jf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrIiwgQXJpdHlDaGVjayk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3NyKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgCisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAg
ICBwcmludGYoIiVwOiBFbnRlcmVkIGxvb3Bfb3NyIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxu
IiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYK
KyAgICAKKyAgICBpZiAoIXNob3VsZEpJVChleGVjKSkgeworICAgICAgICBjb2RlQmxvY2stPmRv
bnRKSVRBbnl0aW1lU29vbigpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOwor
ICAgIH0KKyAgICAKKyAgICBpZiAoIWNvZGVCbG9jay0+aml0Q29tcGlsZShleGVjLT5nbG9iYWxE
YXRhKCkpKSB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICAgICAgcHJpbnRmKCIg
ICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlmCisgICAgfQorICAgIGNv
ZGVCbG9jay0+aml0U29vbigpOworICAgIAorICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5
cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgCisgICAgVmVjdG9yPEJ5dGVjb2Rl
QW5kTWFjaGluZU9mZnNldD4gbWFwOworICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgpLT5kZWNv
ZGUobWFwKTsKKyAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcgPSBiaW5hcnlT
ZWFyY2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25lZCwgQnl0ZWNvZGVBbmRNYWNo
aW5lT2Zmc2V0OjpnZXRCeXRlY29kZUluZGV4PihtYXAuYmVnaW4oKSwgbWFwLnNpemUoKSwgcGMg
LSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIEFTU0VSVChtYXBwaW5n
KTsKKyAgICBBU1NFUlQobWFwcGluZy0+bV9ieXRlY29kZUluZGV4ID09IHN0YXRpY19jYXN0PHVu
c2lnbmVkPihwYyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSkpOworICAgIAor
ICAgIHZvaWQqIGp1bXBUYXJnZXQgPSBjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxl
QWRkcmVzc0F0T2Zmc2V0KG1hcHBpbmctPm1fbWFjaGluZUNvZGVPZmZzZXQpOworICAgIEFTU0VS
VChqdW1wVGFyZ2V0KTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk5fVFdPKGp1bXBUYXJnZXQsIGV4
ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKQoreworICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgCisjaWYgRU5BQkxFKEpJVF9WRVJC
T1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkIHJlcGxhY2Ugd2l0aCBleGVjdXRlQ291
bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigp
KTsKKyNlbmRpZgorICAgIAorICAgIGlmIChzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgaWYg
KCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJM
RShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJl
YWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBjb2RlQmxvY2st
PmppdFNvb24oKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGlt
ZVNvb24oKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0
ZXJfZmlsZV9jaGVjaykKK3sKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50Zigi
Q2hlY2tpbmcgc3RhY2sgaGVpZ2h0IHdpdGggZXhlYyA9ICVwLlxuIiwgZXhlYyk7CisgICAgcHJp
bnRmKCJDb2RlQmxvY2sgPSAlcC5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAgICBwcmludGYo
Ik51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1D
YWxsZWVSZWdpc3RlcnMpOworICAgIHByaW50ZigiTnVtIHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNv
ZGVCbG9jaygpLT5tX251bVZhcnMpOworICAgIHByaW50ZigiQ3VycmVudCBlbmQgaXMgYXQgJXAu
XG4iLCBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmVuZCgp
KTsKKyNlbmRpZgorICAgIEFTU0VSVCgmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2Nr
KCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSA+IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRl
ci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOworICAgIGlmIChVTkxJS0VMWSghZXhlYy0+Z2xvYmFs
RGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5ncm93KCZleGVjLT5yZWdpc3RlcnMo
KVtleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnNdKSkpIHsKKyAgICAgICAg
ZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5l
eGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVy
cHJldGVyVGhyb3coZXhlYyk7CisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4
Y2VwdGlvbihleGVjKTsKKyAgICB9CisgICAgTExJTlRfRU5EX0lNUEwoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICBFeGVjU3RhdGUqIG5l
d0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmV4ZWMtPmdsb2Jh
bERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDYWxsKTsKKyAgICBp
ZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAg
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJy
b3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3coZXhlYyk7CisgICAgICAgIExMSU5U
X1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPigxKSwgZXhlYyk7CisgICAgfQorICAgIExM
SU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21t
b25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRl
cnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGlmICghbmV3
RXhlYykgeworICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhl
Yy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVj
KTsKKyAgICAgICAgaW50ZXJwcmV0ZXJUaHJvdyhleGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJO
X1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KDEpLCBleGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVU
VVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0
ZV9hY3RpdmF0aW9uKQoreworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJD
cmVhdGluZyBhbiBhY3RpdmF0aW9uLCBleGVjID0gJXAhXG4iLCBleGVjKTsKKyNlbmRpZgorICAg
IEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRlKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYywgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlYy0+
Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFp
bihleGVjLT5zY29wZUNoYWluKCktPnB1c2goYWN0aXZhdGlvbikpOworICAgIExMSU5UX1JFVFVS
TihKU1ZhbHVlKGFjdGl2YXRpb24pKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Ny
ZWF0ZV9hcmd1bWVudHMpCit7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVlKEFyZ3Vt
ZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYykpOworICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIocGNbMV0udS5vcGVyYW5kKSA9IGFy
Z3VtZW50czsKKyAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rl
cihwY1sxXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKQoreworICAgIEpTRnVuY3Rpb24q
IGNvbnN0cnVjdG9yID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgCisjaWYgIUFT
U0VSVF9ESVNBQkxFRAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBBU1NF
UlQoY29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0
b3IsIGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CisjZW5kaWYKKyAgICAKKyAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBKU1ZhbHVlIHByb3RvID0gTExJTlRfT1AoMiku
anNWYWx1ZSgpOworICAgIGlmIChwcm90by5pc09iamVjdCgpKQorICAgICAgICBzdHJ1Y3R1cmUg
PSBhc09iamVjdChwcm90byktPmluaGVyaXRvcklEKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAg
ZWxzZQorICAgICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c2NvcGUoKS0+Z2xvYmFsT2Jq
ZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpOworICAgIAorICAgIExMSU5UX1JFVFVSTihjb25z
dHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2NvbnZlcnRfdGhpcykKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSku
anNWYWx1ZSgpOworICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBMTElOVF9SRVRV
Uk4odjEudG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X25ld19vYmplY3QpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4
ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSkKK3sKKyAgICBM
TElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgYml0d2lzZV9jYXN0PEpTVmFsdWUqPigm
TExJTlRfT1AoMikpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25ld19hcnJheV9idWZmZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFy
cmF5KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihwY1syXS51Lm9wZXJh
bmQpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
d19yZWdleHApCit7CisgICAgUmVnRXhwKiByZWdFeHAgPSBleGVjLT5jb2RlQmxvY2soKS0+cmVn
ZXhwKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkKKyAgICAg
ICAgTExJTlRfVEhST1coY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgZmxhZyBzdXBw
bGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikpOworICAgIExMSU5UX1JFVFVSTihSZWdFeHBP
YmplY3Q6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmpl
Y3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVn
RXhwKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbighTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSkKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgp
LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25lcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjplcXVhbChl
eGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFK
U1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNz
KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPHRydWU+KGV4ZWMsIExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3NlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0
ZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wcmVfaW5jKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykgKyAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wcmVfZGVjKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wb3N0X2luYykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgp
LnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0ganNOdW1iZXIocmVzdWx0ICsgMSk7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcG9zdF9kZWMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJl
c3VsdCAtIDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKQoreworICAgIExMSU5UX1JFVFVSTihqc051
bWJlcigtTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2FkZCkKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2MiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgp
OworICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUcnlpbmcgdG8g
YWRkICVzIiwgdjEuZGVzY3JpcHRpb24oKSk7CisgICAgcHJpbnRmKCIgdG8gJXMuXG4iLCB2Mi5k
ZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICh2MS5pc1N0cmluZygpKSB7Cisg
ICAgICAgIExMSU5UX1JFVFVSTigKKyAgICAgICAgICAgIHYyLmlzU3RyaW5nKCkKKyAgICAgICAg
ICAgID8ganNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEpLCBhc1N0cmluZyh2MikpCisgICAgICAg
ICAgICA6IGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9QcmltaXRpdmVTdHJpbmco
ZXhlYykpKTsKKyAgICB9CisgICAgCisgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1i
ZXIoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHYxLmFzTnVtYmVyKCkgKyB2Mi5h
c051bWJlcigpKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpzQWRkU2xvd0Nhc2UoZXhlYywg
djEsIHYyKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
ICogTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3N1YikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2
KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKSAvIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2QpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzTnVtYmVyKGZtb2QoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyksIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbHNoaWZ0KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIDw8IExMSU5UX09QX0MoMykuanNWYWx1
ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hp
ZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgp
LnRvSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpID4+
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgJiBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRv
cikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
dG9JbnQzMihleGVjKSB8IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcikKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSBeIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2JpdG5vdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIofkxMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKK3sKKyAgICBKU1ZhbHVlIGJhc2VWYWwgPSBMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgVHlwZUluZm8gdHlwZUlu
Zm8oVW5zcGVjaWZpZWRUeXBlKTsKKyAgICBBU1NFUlQoIWJhc2VWYWwuaXNPYmplY3QoKQorICAg
ICAgICAgICB8fCAhKHR5cGVJbmZvID0gYXNPYmplY3QoYmFzZVZhbCktPnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSk7CisjZW5kaWYKKyAgICBMTElOVF9U
SFJPVyhjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihleGVjLCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3coZXhl
YywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDQpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5
cGVvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lz
X3VuZGVmaW5lZCkKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKHYuaXNDZWxsKCkgPyB2LmFzQ2VsbCgpLT5zdHJ1
Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkgOiB2LmlzVW5kZWZp
bmVkKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Jvb2xlYW4pCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS5pc0Jvb2xl
YW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKQoreworICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkuaXNOdW1iZXIo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKQoreworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oaXNKU1N0cmluZyhMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX29iamVjdCkKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNCb29sZWFuKGpzSXNPYmplY3RUeXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgp
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pCit7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rpb25UeXBlKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4pCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW4oZXhlYywgTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSkKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQo
b3BfcmVzb2x2ZSwgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+Y29kZUJs
b2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKQoreworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRCgK
KyAgICAgICAgb3BfcmVzb2x2ZV9za2lwLAorICAgICAgICBDb21tb25TbG93UGF0aHM6Om9wUmVz
b2x2ZVNraXAoCisgICAgICAgICAgICBleGVjLAorICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2Nr
KCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwKKyAgICAgICAgICAgIHBjWzNdLnUub3Bl
cmFuZCkpOworfQorCitzdGF0aWMgSlNWYWx1ZSByZXNvbHZlR2xvYmFsKEV4ZWNTdGF0ZSogZXhl
YywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9j
ay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmpl
Y3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0udS5vcGVyYW5kOworICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgCisgICAgQVNTRVJU
X1VOVVNFRChzdHJ1Y3R1cmUsIHN0cnVjdHVyZSAhPSBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgp
KTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihw
cm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAKKyAg
ICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKSB7
CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCk7Cisg
ICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2JqZWN0LT5zdHJ1
Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgc2xvdC5z
bG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgcGNbM10udS5zdHJ1Y3R1
cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAg
ICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5l
eGNlcHRpb24gPSBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KTsKKyAg
ICByZXR1cm4gSlNWYWx1ZSgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2
ZV9nbG9iYWwpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFs
LCByZXNvbHZlR2xvYmFsKGV4ZWMsIHBjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQoreworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChv
cF9yZXNvbHZlX2dsb2JhbF9keW5hbWljLCByZXNvbHZlR2xvYmFsKGV4ZWMsIHBjKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5h
bWljKQoreworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbF9keW5h
bWljLCBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+
aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2Rl
QmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIGlmIChwY1szXS51Lm9w
ZXJhbmQpIHsKKyAgICAgICAgSlNWYWx1ZSBiYXNlID0gSlNDOjpyZXNvbHZlQmFzZShleGVjLCBp
ZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCB0cnVlKTsKKyAgICAgICAgaWYgKCFiYXNlKQorICAg
ICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVu
dChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICAgICAgTExJTlRfUkVUVVJOKGJhc2UpOwor
ICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9iYXNlLCBK
U0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIGZhbHNlKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKQor
eworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkp
OworICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQg
PSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIGlm
ICghb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKQorICAgICAgICBM
TElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlk
ZW50LnVzdHJpbmcoKSkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpCit7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21t
b25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhCYXNlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5p
ZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTog
dGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVj
YXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQoreworICAgIEpTVmFsdWUgcmVz
dWx0ID0gQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVXaXRoVGhpcyhleGVjLCBleGVjLT5jb2Rl
QmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAg
Ly8gRklYTUU6IHRlY2huaWNhbGx5IHNob3VsZCBoYXZlIHByb2ZpbGluZywgYnV0IHdlIGRvbid0
IGRvIGl0IGJlY2F1c2UgdGhlIERGRyB3b24ndCB1c2UgaXQuCisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfaWQpCit7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9
IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qo
YmFzZVZhbHVlKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChleGVjLCBp
ZGVudCwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1Ao
MSkgPSByZXN1bHQ7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCisgICAgICAgICYmIHNs
b3QuaXNDYWNoZWFibGUoKQorICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVl
CisgICAgICAgICYmIHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpW
YWx1ZSkgeworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5h
c0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0
dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURp
Y3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJp
dHNQcm9wZXJ0eUNhY2hpbmcoKSkgeworICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0
KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNs
b3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgCisgICAgcGNbT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfaWQpIC0gMV0udS5wcm9maWxlLT5t
X2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKQorewor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRp
ZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworICAgIExMSU5UX1JFVFVSTihiYXNlVmFsdWUuZ2V0KGV4
ZWMsIGlkZW50LCBzbG90KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlf
aWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAg
ICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJh
bmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7Cisg
ICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAg
aWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAgICAgYXNPYmplY3QoYmFzZVZhbHVlKS0+cHV0RGly
ZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgaWRlbnQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBz
bG90KTsKKyAgICBlbHNlCisgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaWRlbnQsIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsK
KyAgICAKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNo
ZWFibGUoKSkgeworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1
ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3Ry
dWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJs
ZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9o
aWJpdHNQcm9wZXJ0eUNhY2hpbmcoKQorICAgICAgICAgICAgJiYgYmFzZUNlbGwgPT0gc2xvdC5i
YXNlKCkpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1
dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXN0cnVj
dHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPnByb3BlcnR5
U3RvcmFnZUNhcGFjaXR5KCkgPT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBv
ZiB0aGUgbWV0aG9kcyB3ZSBjYWxsCisgICAgICAgICAgICAgICAgICAgIC8vIGJlbG93IG1heSBH
Qy4KKyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworCisgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6
ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKKyAgICAgICAgICAgICAgICAgICAgCisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+aXNPYmpl
Y3QoKSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOworICAgICAgICAgICAgICAgICAg
ICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUp
OworICAgICAgICAgICAgICAgICAgICBwY1s2XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAg
ICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBj
aGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CisgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChjaGFpbik7CisgICAgICAgICAgICAgICAgICAgIHBjWzddLnUuc3RydWN0dXJl
Q2hhaW4uc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjaGFpbik7CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAgICAgICAg
ICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9v
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOworICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwY1swXS51Lm9w
Y29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisgICAgICAg
ICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICBleGVj
LT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7
CisgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAq
IHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9p
ZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAg
IEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9PYmplY3Qo
ZXhlYyk7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihw
Y1szXS51Lm9wZXJhbmQpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBpZiAo
IWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5U
X1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4i
KSk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitpbmxp
bmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBK
U1ZhbHVlIHN1YnNjcmlwdCkKK3sKKyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAm
JiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0g
YmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkoZXhlYywgYXNTdHJpbmcoc3Vi
c2NyaXB0KS0+dmFsdWUoZXhlYykpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisgICAgCisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90
IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZh
bHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAg
IHJldHVybiBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAg
CisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFz
ZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpCisgICAgICAgICAgICByZXR1cm4gYXNCeXRlQXJy
YXkoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAorICAgICAgICByZXR1
cm4gYmFzZVZhbHVlLmdldChleGVjLCBpKTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBw
cm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYykpOworICAgIHJldHVybiBiYXNl
VmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2dldF9ieV92YWwpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9ieV92YWws
IGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5
X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsK
KyAgICBpZiAoIWFyZ3VtZW50cykgeworICAgICAgICBhcmd1bWVudHMgPSBBcmd1bWVudHM6OmNy
ZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpOworICAgICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKKyAgICAgICAgTExJTlRfT1AoMikgPSBhcmd1bWVudHM7CisgICAgICAgIGV4ZWMt
PnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkp
ID0gYXJndW1lbnRzOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhl
YywgYXJndW1lbnRzLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKQoreworICAgIExMSU5UX1JFVFVSTihnZXRCeVZh
bChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCkKK3sKKyAgICBKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNj
cmlwdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJ
bnQzMigpKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7Cisg
ICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgeworICAgICAgICAgICAgSlNBcnJheSog
anNBcnJheSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChqc0FycmF5LT5j
YW5TZXRJbmRleChpKSkKKyAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRleChnbG9iYWxE
YXRhLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgSlNBcnJh
eTo6cHV0QnlJbmRleChqc0FycmF5LCBleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBMTElO
VF9FTkQoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUp
CisgICAgICAgICAgICAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChp
KSkgeworICAgICAgICAgICAgSlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXko
YmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAg
ICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNJbnQzMigpKTsKKyAgICAg
ICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2
YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4
KGksIHZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaSwgdmFs
dWUpOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBw
cm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYykpOworICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGV4ZWMtPmNvZGVCbG9jaygp
LT5pc1N0cmljdE1vZGUoKSk7CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0eSwgdmFs
dWUsIHNsb3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZGVsX2J5X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMiku
anNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0
KGV4ZWMpOworICAgIAorICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCk7CisgICAgCisgICAgYm9vbCBjb3VsZERlbGV0ZTsKKyAgICAKKyAgICB1aW50MzJfdCBp
OworICAgIGlmIChzdWJzY3JpcHQuZ2V0VUludDMyKGkpKQorICAgICAgICBjb3VsZERlbGV0ZSA9
IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNlT2Jq
ZWN0LCBleGVjLCBpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5n
KGV4ZWMpKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIGNvdWxk
RGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9i
amVjdCwgZXhlYywgcHJvcGVydHkpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNvdWxkRGVsZXRl
ICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJTlRfVEhS
T1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsK
KyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpCit7CisgICAgTExJTlRfT1BfQygx
KS5qc1ZhbHVlKCkucHV0KGV4ZWMsIHBjWzJdLnUub3BlcmFuZCwgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHV0X2dldHRlcikKK3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0
KCkpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1
ZSgpKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlm
aWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpzVmFsdWUoKS5p
c09iamVjdCgpKTsKKyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVHZXR0ZXIoYmFz
ZU9iaiwgZXhlYywgaWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUoKSksIDApOwor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X3NldHRl
cikKK3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAg
IEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAg
ICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJd
LnUub3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpzVmFsdWUoKS5pc09iamVjdCgp
KTsKKyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVTZXR0ZXIoYmFzZU9iaiwgZXhl
YywgaWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUoKSksIDApOworICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam1wX3Njb3BlcykKK3sKKyAg
ICB1bnNpZ25lZCBjb3VudCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBTY29wZUNoYWluTm9kZSog
dG1wID0gZXhlYy0+c2NvcGVDaGFpbigpOworICAgIHdoaWxlIChjb3VudC0tKQorICAgICAgICB0
bXAgPSB0bXAtPnBvcCgpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4odG1wKTsKKyAgICBwYyAr
PSBwY1syXS51Lm9wZXJhbmQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9qdHJ1ZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfanRydWUsIExMSU5UX09Q
X0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qZmFsc2UpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pmYWxzZSwgIUxMSU5UX09Q
X0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbGVzcykKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3MsIGpzTGVzczx0cnVl
PihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcykKK3sKKyAgICBMTElOVF9C
UkFOQ0gob3Bfam5sZXNzLCAhanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfamdyZWF0ZXIpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVhdGVyLCBqc0xlc3M8
ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFs
dWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKQoreworICAg
IExMSU5UX0JSQU5DSChvcF9qbmdyZWF0ZXIsICFqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfamxlc3NlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3Nl
cSwganNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3Nl
cSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzZXEsICFqc0xlc3NFcTx0cnVlPihleGVj
LCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEpCit7CisgICAgTExJTlRfQlJB
TkNIKG9wX2pncmVhdGVyZXEsIGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2puZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmdyZWF0ZXJl
cSwgIWpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRj
aF9pbW0pCit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KTsKKyAgICBBU1NFUlQoc2NydXRpbmVlLmlzRG91YmxlKCkpOworICAgIGRvdWJsZSB2YWx1ZSA9
IHNjcnV0aW5lZS5hc0RvdWJsZSgpOworICAgIGludDMyX3QgaW50VmFsdWUgPSBzdGF0aWNfY2Fz
dDxpbnQzMl90Pih2YWx1ZSk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJh
bmQ7CisgICAgaWYgKHZhbHVlID09IGludFZhbHVlKSB7CisgICAgICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+aW1t
ZWRpYXRlU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoaW50
VmFsdWUsIGRlZmF1bHRPZmZzZXQpOworICAgIH0gZWxzZQorICAgICAgICBwYyArPSBkZWZhdWx0
T2Zmc2V0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
c3dpdGNoX3N0cmluZykKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QX0MoMyku
anNWYWx1ZSgpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAg
IGlmICghc2NydXRpbmVlLmlzU3RyaW5nKCkpCisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7
CisgICAgZWxzZSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJs
b2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKHBj
WzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoYXNTdHJpbmcoc2NydXRpbmVlKS0+dmFsdWUo
ZXhlYykuaW1wbCgpLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYykKK3sKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNv
ZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlCisgICAgICAgICAgIHx8ICFjb2RlQmxvY2stPm5lZWRz
RnVsbFNjb3BlQ2hhaW4oKQorICAgICAgICAgICB8fCBleGVjLT51bmNoZWNrZWRSKGNvZGVCbG9j
ay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CisjaWYgTExJTlRfSEVMUEVSX1RS
QUNJTkcKKyAgICBwcmludGYoIkNyZWF0aW5nIGZ1bmN0aW9uIVxuIik7CisjZW5kaWYKKyAgICBM
TElOVF9SRVRVUk4oY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbMl0udS5vcGVyYW5kKS0+bWFr
ZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25ld19mdW5jX2V4cCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNv
ZGVCbG9jaygpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2st
PmZ1bmN0aW9uRXhwcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBm
dW5jdGlvbi0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpOworICAgIAorICAgIGlmICgh
ZnVuY3Rpb24tPm5hbWUoKS5pc051bGwoKSkgeworICAgICAgICBKU1N0YXRpY1Njb3BlT2JqZWN0
KiBmdW5jdGlvblNjb3BlT2JqZWN0ID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMs
IGZ1bmN0aW9uLT5uYW1lKCksIGZ1bmMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAg
IGZ1bmMtPnNldFNjb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuYy0+c2NvcGUoKS0+cHVzaChm
dW5jdGlvblNjb3BlT2JqZWN0KSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihmdW5j
KTsKK30KKworc3RhdGljIEhlbHBlclJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRl
KiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+
Y2FsbGVyRnJhbWUoKTsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xv
YmFsRGF0YSgpOworCisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNo
YWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKworICAgIGlmIChraW5k
ID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgICAgICBD
YWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxlZSwgY2FsbERhdGEpOworICAgIAor
ICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVKUyk7CisgICAgCisgICAgICAgIGlm
IChjYWxsVHlwZSA9PSBDYWxsVHlwZUhvc3QpIHsKKyAgICAgICAgICAgIGdsb2JhbERhdGEtPmhv
c3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0
aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTExJTlRfQ0FMTF9S
RVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpKTsKKyAgICAgICAgfQorICAgICAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJB
Q0lORworICAgICAgICBwcmludGYoIkNhbGwgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xu
IiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICAgICAgQVNTRVJUKGNhbGxU
eXBlID09IENhbGxUeXBlTm9uZSk7CisgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMs
IGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgIH0KKworICAgIEFT
U0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIAorICAgIENvbnN0cnVjdERhdGEg
Y29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25z
dHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0RGF0YSk7CisgICAgCisgICAgQVNTRVJUKGNvbnN0
cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZUpTKTsKKyAgICAKKyAgICBpZiAoY29uc3RydWN0VHlw
ZSA9PSBDb25zdHJ1Y3RUeXBlSG9zdCkgeworICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJl
dHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9u
KGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMs
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICB9
CisgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAgICAgcHJpbnRmKCJDb25zdHJ1
Y3RvciBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRpb24o
KSk7CisjZW5kaWYKKworICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVO
b25lKTsKKyAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBQ29uc3RydWN0
b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUgc2V0
VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSwgTExJbnRDYWxsTGlua0lu
Zm8qIGNhbGxMaW5rSW5mbyA9IDApCit7CisgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2Vs
bCA9IGdldEpTRnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSk7CisgICAgaWYgKCFjYWxsZWVBc0Z1bmN0
aW9uQ2VsbCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIHBjLCBj
YWxsZWVBc1ZhbHVlLCBraW5kKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1
bmN0aW9uKGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNo
YWluKGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKSk7CisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1
dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgY29kZVB0cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CisgICAgaWYgKGV4
ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxl
LT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgZWxzZSB7
CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGlj
X2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAgICAgIEpTT2JqZWN0
KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVjQ2FsbGVlLCBjYWxs
ZWUtPnNjb3BlKCksIGtpbmQpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBMTElO
VF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCksIHBjLCBlcnJvcik7CisgICAg
ICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9y
KGtpbmQpOworICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICAgICAgaWYgKGV4ZWNDYWxs
ZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlv
bkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihraW5kKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2Vu
ZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIH0KKyAgICAKKyAg
ICBpZiAoY2FsbExpbmtJbmZvKSB7CisgICAgICAgIGlmIChjYWxsTGlua0luZm8tPmlzT25MaXN0
KCkpCisgICAgICAgICAgICBjYWxsTGlua0luZm8tPnJlbW92ZSgpOworICAgICAgICBFeGVjU3Rh
dGUqIGV4ZWNDYWxsZXIgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBjYWxs
TGlua0luZm8tPmNhbGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBleGVjQ2FsbGVy
LT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAgICAgIGNhbGxM
aW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEoKSwgZXhl
Y0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAg
ICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKKyAgICAgICAgaWYg
KGNvZGVCbG9jaykKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChjYWxs
TGlua0luZm8pOworICAgIH0KKyAgICAKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVl
LCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKK30KKworaW5saW5lIEhlbHBlclJl
dHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAg
IC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBj
YWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIElmIHBvc3NpYmxlLCBs
aW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2Yg
bWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAg
IAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOwor
ICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7
CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNb
Ml0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6
Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUo
ZXhlYyk7CisgICAgCisgICAgQVNTRVJUKHBjWzRdLnUuY2FsbExpbmtJbmZvKTsKKyAgICByZXR1
cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCBwY1s0XS51
LmNhbGxMaW5rSW5mbyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKQorewor
ICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0KQoreworICAgIHJldHVybiBnZW5lcmljQ2Fs
bChleGVjLCBwYywgQ29kZUZvckNvbnN0cnVjdCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jYWxsX3ZhcmFyZ3MpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNl
dCB1cCBhIGNhbGwgZnJhbWUgd2hpbGUgcmVzcGVjdGluZyB0aGUgdmFyaWFibGUgYXJndW1lbnRz
LgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVj
ZXNzYXJ5LgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3Mg
dG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVl
QXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSog
ZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAorICAgICAgICBleGVjLCAmZXhlYy0+Z2xvYmFsRGF0
YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwKKyAgICAgICAgTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBwY1s0XS51Lm9wZXJhbmQpOworICAg
IExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKTsKKyAgICAKKyAgICBleGVjQ2Fs
bGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7Cisg
ICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlYy0+dW5jaGVja2Vk
UihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0d2lzZV9jYXN0PGludDMy
X3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpKTsKKyAgICAKKyAgICByZXR1
cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpCit7CisgICAgSlNWYWx1
ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNT
dGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAgSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAgIGV4ZWNDYWxs
ZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFuZCk7CisgICAg
ZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVj
a2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxs
ZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2FsbGVlLT5z
ZXRSZXR1cm5QQyhiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbGxpbnRfZ2VuZXJpY19yZXR1
cm5fcG9pbnQpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CisgICAgZXhlYy0+
dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0d2lzZV9j
YXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX2V2YWwpKTsKKyAgICAKKyAg
ICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFsKSkKKyAg
ICAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxl
ZUFzVmFsdWUpOworICAgIAorICAgIGdsb2JhbERhdGEuaG9zdENhbGxSZXR1cm5WYWx1ZSA9IGV2
YWwoZXhlY0NhbGxlZSk7CisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCit7CisgICAgQVNTRVJU
KGV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIEpTVmFsdWUg
YWN0aXZhdGlvblZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIGlmICghYWN0aXZh
dGlvblZhbHVlKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVu
bW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpIHsK
KyAgICAgICAgICAgIGlmICghZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAg
ICAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT50ZWFyT2ZmKGV4ZWMpOworICAgICAgICB9Cisg
ICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24g
PSBhc0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVlKTsKKyAgICBhY3RpdmF0aW9uLT50ZWFyT2Zm
KGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnVuY2hlY2tl
ZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpLmpzVmFsdWUo
KSkKKyAgICAgICAgYXNBcmd1bWVudHModiktPmRpZFRlYXJPZmZBY3RpdmF0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgYWN0aXZhdGlvbik7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCit7CisgICAgQVNTRVJUKGV4ZWMt
PmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkgJiYgIWV4ZWMtPmNvZGVCbG9jaygpLT5uZWVk
c0Z1bGxTY29wZUNoYWluKCkpOworICAgIGFzQXJndW1lbnRzKGV4ZWMtPnVuY2hlY2tlZFIodW5t
b2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSktPnRl
YXJPZmYoZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9zdHJjYXQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsICZMTElOVF9P
UCgyKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90
b19wcmltaXRpdmUpCit7CisgICAgTExJTlRfUkVUVVJOKExMSU5UX09QX0MoMikuanNWYWx1ZSgp
LnRvUHJpbWl0aXZlKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9w
bmFtZXMpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlm
ICh2LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcGMgKz0gcGNbNV0udS5vcGVyYW5k
OworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSlNPYmplY3QqIG8gPSB2
LnRvT2JqZWN0KGV4ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gby0+c3RydWN0dXJl
KCk7CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9
IHN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpOworICAgIGlmICghanNQcm9wZXJ0eU5hbWVJ
dGVyYXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQcm90b3R5cGVDaGFpbigp
ICE9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCisgICAgICAgIGpzUHJvcGVydHlO
YW1lSXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywgbyk7Cisg
ICAgCisgICAgTExJTlRfT1AoMSkgPSBKU1ZhbHVlKGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOwor
ICAgIExMSU5UX09QKDIpID0gSlNWYWx1ZShvKTsKKyAgICBMTElOVF9PUCgzKSA9IFJlZ2lzdGVy
Ojp3aXRoSW50KDApOworICAgIExMSU5UX09QKDQpID0gUmVnaXN0ZXI6OndpdGhJbnQoanNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAgICAKKyAgICBwYyArPSBPUENPREVfTEVOR1RI
KG9wX2dldF9wbmFtZXMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbmV4dF9wbmFtZSkKK3sKKyAgICBKU09iamVjdCogYmFzZSA9IGFzT2JqZWN0KExM
SU5UX09QKDIpLmpzVmFsdWUoKSk7CisgICAgSlNTdHJpbmcqIHByb3BlcnR5ID0gYXNTdHJpbmco
TExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBpZiAoYmFzZS0+aGFzUHJvcGVydHkoZXhlYywg
SWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eS0+dmFsdWUoZXhlYykpKSkgeworICAgICAgICAvLyBH
byB0byB0YXJnZXQuCisgICAgICAgIHBjICs9IHBjWzZdLnUub3BlcmFuZDsKKyAgICB9IC8vIEVs
c2UsIGRvbid0IGNoYW5nZSB0aGUgUEMsIHNvIHRoZSBpbnRlcnByZXRlciB3aWxsIHJlbG9vcC4K
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2Nv
cGUpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIEpTT2Jq
ZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsK
KyAgICAKKyAgICBMTElOVF9PUCgxKSA9IG87CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVj
LT5zY29wZUNoYWluKCktPnB1c2gobykpOworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9wX3Njb3BlKQoreworICAgIGV4ZWMtPnNldFNjb3Bl
Q2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wb3AoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSkKK3sKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBzY29wZSA9
IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIo
cGNbMl0udS5vcGVyYW5kKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpLCBEb250RGVsZXRlKTsKKyAg
ICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChzY29wZSkpOwor
ICAgIExMSU5UX1JFVFVSTihzY29wZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90
aHJvdykKK3sKKyAgICBMTElOVF9USFJPVyhMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpCit7CisgICAg
TExJTlRfVEhST1coY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCkudG9TdHJpbmcoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rl
YnVnKQoreworICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBpbnQg
Zmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOworICAgIGludCBsYXN0TGluZSA9IHBjWzNdLnUu
b3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmRlYnVn
KGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwg
bGFzdExpbmUpOworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFBy
b2ZpbGVyUmVmZXJlbmNlKCkpLT53aWxsRXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVl
KCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJv
ZmlsZV9kaWRfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVu
Y2UoKSktPmRpZEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBMTElO
VF9FTkQoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgTExJbnRIZWxwZXJzX2gKKyNkZWZpbmUgTExJbnRIZWxwZXJzX2gKKwor
I2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKwor
dHlwZWRlZiBpbnQ2NF90IEhlbHBlclJldHVyblR5cGU7CisKK2V4dGVybiAiQyIgSGVscGVyUmV0
dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50
IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxs
aW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwg
aW50IG9wZXJhbmQpOworCisjZGVmaW5lIExMSU5UX0hFTFBFUl9ERUNMKG5hbWUpIFwKKyAgICBl
eHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfIyNuYW1lKEV4ZWNTdGF0ZSogZXhlYywg
SW5zdHJ1Y3Rpb24qIHBjKQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZSk7CitM
TElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCk7CitMTElO
VF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpOworTExJTlRfSEVMUEVS
X0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KHRyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2UpOworTExJTlRfSEVMUEVS
X0RFQ0woZW50cnlfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJp
dHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3NyKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKHJlcGxhY2UpOworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVj
ayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Ny
ZWF0ZV9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25ld19vYmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJh
eSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZlcik7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9s
ZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2luYyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcHJlX2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9pbmMpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl90b19qc251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9kaXYpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbHNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2JpdGFuZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3IpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2JpdHhvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5
cGVvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19udW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZyk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19mdW5jdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4pOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Jlc29sdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVf
c2tpcCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVz
b2x2ZV93aXRoX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90
aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfaWQpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wdXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X2J5X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFsKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wdXRfYnlfaW5kZXgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2ptcF9zY29wZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2psZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2pncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0
ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2pubGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVx
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfc3dpdGNoX2ltbSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNo
X2NoYXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXdfZnVuY19leHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2Fs
bF92YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
c3RyY2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X25leHRfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHVzaF9uZXdfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2RlYnVnKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxl
X3dpbGxfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCk7
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnRIZWxwZXJz
X2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNv
bmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9m
ZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisjZGVmaW5lIExMSW50T2ZmbGluZUFzbUNvbmZpZ19o
CisKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBDUFUoWDg2KQorI2RlZmluZSBPRkZM
SU5FX0FTTV9YODYgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDAKKyNlbmRpZgor
CisjaWYgQ1BVKEFSTXY3KQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAxCisjZWxzZQorI2Rl
ZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NFUlRfRElTQUJMRUQK
KyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZG
TElORV9BU01fQVNTRVJUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUoQklHX0VORElBTikK
KyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5F
X0FTTV9CSUdfRU5ESUFOIDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKExMSU5UX09TUl9UT19KSVQp
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhFQ1VUSU9OX1RSQUNJ
TkcKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQorI2Vsc2UKKyNkZWZp
bmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisKKyNlbmRpZiAvLyBM
TEludE9mZmxpbmVBc21Db25maWdfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJBbGxvY2F0
aW9uU3BhY2UuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxl
LmgiCisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVk
ZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDZWxsLmgi
CisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2lu
Y2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRl
ICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNs
dWRlICJKU3R5cGVJbmZvLmgiCisjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgorI2luY2x1
ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2lu
Y2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCisjaW5jbHVk
ZSAiU2NvcGVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0cnVj
dHVyZUNoYWluLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSW1wbC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBPRkZMSU5FX0FT
TV9PRkZTRVRPRihjbGF6eiwgZmllbGQpIE9CSkVDVF9PRkZTRVRPRihjbGF6eiwgZmllbGQpCisK
K2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkKiBkdW1teSgpOworfTsKKworY29uc3QgdW5zaWduZWQqIExMSW50T2Zmc2V0c0V4
dHJhY3Rvcjo6ZHVtbXkoKQoreworI2luY2x1ZGUgIkxMSW50RGVzaXJlZE9mZnNldHMuaCIKKyAg
ICByZXR1cm4gZXh0cmFjdG9yVGFibGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCitpbnQg
bWFpbihpbnQsIGNoYXIqKikKK3sKKyAgICAvLyBPdXQgb2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRp
b24sIG1ha2Ugc3VyZSB0aGF0IExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSBpcyBsaXZl
LAorICAgIC8vIGFuZCB0aGUgZXh0cmFjdG9yVGFibGUgaXMgbGl2ZSwgdG9vLgorICAgIHByaW50
ZigiJXBcbiIsIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpKTsKKyAgICByZXR1
cm4gMDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtz
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRo
dW5rcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkxMSW50VGh1bmtzLmgiCisKKyNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5oIgorI2luY2x1
ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25h
bWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwg
dm9pZCAoKnRhcmdldCkoKSkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CisgICAgCisgICAg
Ly8gRklYTUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0IG9uIFg4Niwg
YnV0IEknbSBub3Qgc3VyZSBJIGNhcmUuCisgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRy
dXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSwgSlNJbnRlcmZhY2VKSVQ6
OnJlZ1QwKTsKKyAgICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6cmVnVDApOworICAgIAorICAg
IExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZqaXQsIEdMT0JBTF9USFVOS19J
RCk7CisgICAgcmV0dXJuIHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOworfQorCitNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRv
KGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKTsKK30KKworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRv
cihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtX
aXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9n
dWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVj
a1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4g
Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfYXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JD
b25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
KQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGlu
dF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxp
bnRfZXZhbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50
cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJu
IGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X3Byb2dyYW1fcHJvbG9n
dWUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIExMSW50VGh1bmtzX2gKKyNkZWZpbmUgTExJbnRUaHVua3NfaAorCisjaW5jbHVkZSAi
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0ds
b2JhbERhdGE7CisKK25hbWVzcGFjZSBMTEludCB7CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBm
dW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihK
U0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0
eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxE
YXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNH
bG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5l
cmF0b3IoSlNHbG9iYWxEYXRhKik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisj
ZW5kaWYgLy8gTExJbnRUaHVua3NfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyMzc0IEBACisjIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisKKyMgQ3Jhc2ggY291cnNlIG9uIHRoZSBsYW5ndWFnZSB0aGF0IHRoaXMgaXMg
d3JpdHRlbiBpbiAod2hpY2ggSSBqdXN0IGNhbGwKKyMgImFzc2VtYmx5IiBldmVuIHRob3VnaCBp
dCdzIG1vcmUgdGhhbiB0aGF0KToKKyMKKyMgLSBNb3N0bHkgZ2FzLXN0eWxlIG9wZXJhbmQgb3Jk
ZXJpbmcuIFRoZSBsYXN0IG9wZXJhbmQgdGVuZHMgdG8gYmUgdGhlCisjICAgZGVzdGluYXRpb24u
IFNvICJhIDo9IGIiIGlzIHdyaXR0ZW4gYXMgIm1vdiBiLCBhIi4gQnV0IHVubGlrZSBnYXMsCisj
ICAgY29tcGFyaXNvbnMgYXJlIGluLW9yZGVyLCBzbyAiaWYgKGEgPCBiKSIgaXMgd3JpdHRlbiBh
cworIyAgICJiaWx0IGEsIGIsIC4uLiIuCisjCisjIC0gImIiID0gYnl0ZSwgImgiID0gMTYtYml0
IHdvcmQsICJpIiA9IDMyLWJpdCB3b3JkLCAicCIgPSBwb2ludGVyLgorIyAgIEN1cnJlbnRseSB0
aGlzIGlzIGp1c3QgMzItYml0IHNvICJpIiBhbmQgInAiIGFyZSBpbnRlcmNoYW5nZWFibGUKKyMg
ICBleGNlcHQgd2hlbiBhbiBvcCBzdXBwb3J0cyBvbmUgYnV0IG5vdCB0aGUgb3RoZXIuCisjCisj
IC0gSW4gZ2VuZXJhbCwgdmFsaWQgb3BlcmFuZHMgZm9yIG1hY3JvIGludm9jYXRpb25zIGFuZCBp
bnN0cnVjdGlvbnMgYXJlCisjICAgcmVnaXN0ZXJzIChlZyAidDAiKSwgYWRkcmVzc2VzIChlZyAi
NFt0MF0iKSwgYmFzZS1pbmRleCBhZGRyZXNzZXMKKyMgICAoZWcgIjdbdDAsIHQxLCAyXSIpLCBh
YnNvbHV0ZSBhZGRyZXNzZXMgKGVnICIweGEwMDAwMDAwW10iKSwgb3IgbGFiZWxzCisjICAgKGVn
ICJfZm9vIiBvciAiLmZvbyIpLiBNYWNybyBpbnZvY2F0aW9ucyBjYW4gYWxzbyB0YWtlIGFub255
bW91cworIyAgIG1hY3JvcyBhcyBvcGVyYW5kcy4gSW5zdHJ1Y3Rpb25zIGNhbm5vdCB0YWtlIGFu
b255bW91cyBtYWNyb3MuCisjCisjIC0gTGFiZWxzIG11c3QgaGF2ZSBuYW1lcyB0aGF0IGJlZ2lu
IHdpdGggZWl0aGVyICJfIiBvciAiLiIuICBBICIuIiBsYWJlbAorIyAgIGlzIGxvY2FsIGFuZCBn
ZXRzIHJlbmFtZWQgYmVmb3JlIGNvZGUgZ2VuIHRvIG1pbmltaXplIG5hbWVzcGFjZQorIyAgIHBv
bGx1dGlvbi4gQSAiXyIgbGFiZWwgaXMgYW4gZXh0ZXJuIHN5bWJvbCAoaS5lLiAiLmdsb2JsIiku
IFRoZSAiXyIKKyMgICBtYXkgb3IgbWF5IG5vdCBiZSByZW1vdmVkIGR1cmluZyBjb2RlIGdlbiBk
ZXBlbmRpbmcgb24gd2hldGhlciB0aGUgYXNtCisjICAgY29udmVudGlvbnMgZm9yIEMgbmFtZSBt
YW5nbGluZyBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtIG1hbmRhdGUgYSAiXyIKKyMgICBwcmVmaXgu
CisjCisjIC0gQSAibWFjcm8iIGlzIGEgbGFtYmRhIGV4cHJlc3Npb24sIHdoaWNoIG1heSBiZSBl
aXRoZXIgYW5vbnltb3VzIG9yCisjICAgbmFtZWQuIEJ1dCB0aGlzIGhhcyBjYXZlYXRzLiAibWFj
cm8iIGNhbiB0YWtlIHplcm8gb3IgbW9yZSBhcmd1bWVudHMsCisjICAgd2hpY2ggbWF5IGJlIG1h
Y3JvcyBvciBhbnkgdmFsaWQgb3BlcmFuZHMsIGJ1dCBpdCBjYW4gb25seSByZXR1cm4KKyMgICBj
b2RlLiBCdXQgeW91IGNhbiBkbyBUdXJpbmctY29tcGxldGUgdGhpbmdzIHZpYSBjb250aW51YXRp
b24gcGFzc2luZworIyAgIHN0eWxlOiAibWFjcm8gZm9vIChhLCBiKSBiKGEpIGVuZCBmb28oZm9v
LCBmb28pIi4gQWN0dWFsbHksIGRvbid0IGRvCisjICAgdGhhdCwgc2luY2UgeW91J2xsIGp1c3Qg
Y3Jhc2ggdGhlIGFzc2VtYmxlci4KKyMKKyMgLSBBbiAiaWYiIGlzIGEgY29uZGl0aW9uYWwgb24g
c2V0dGluZ3MuIEFueSBpZGVudGlmaWVyIHN1cHBsaWVkIGluIHRoZQorIyAgIHByZWRpY2F0ZSBv
ZiBhbiAiaWYiIGlzIGFzc3VtZWQgdG8gYmUgYSAjZGVmaW5lIHRoYXQgaXMgYXZhaWxhYmxlCisj
ICAgZHVyaW5nIGNvZGUgZ2VuLiBTbyB5b3UgY2FuJ3QgdXNlICJpZiIgZm9yIGNvbXB1dGF0aW9u
IGluIGEgbWFjcm8sIGJ1dAorIyAgIHlvdSBjYW4gdXNlIGl0IHRvIHNlbGVjdCBkaWZmZXJlbnQg
cGllY2VzIG9mIGNvZGUgZm9yIGRpZmZlcmVudAorIyAgIHBsYXRmb3Jtcy4KKyMKKyMgLSBBcmd1
bWVudHMgdG8gbWFjcm9zIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgcmF0aGVyIHRoYW4gZHluYW1p
YyBzY29waW5nLgorIyAgIENvbnN0J3MgYWxzbyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIGFuZCBt
YXkgb3ZlcnJpZGUgKGhpZGUpIGFyZ3VtZW50cworIyAgIG9yIG90aGVyIGNvbnN0cy4gQWxsIHZh
cmlhYmxlcyAoYXJndW1lbnRzIGFuZCBjb25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAgIHRvIG9w
ZXJhbmRzLiBBZGRpdGlvbmFsbHksIGFyZ3VtZW50cyAoYnV0IG5vdCBjb25zdGFudHMpIGNhbiBi
ZSBib3VuZAorIyAgIHRvIG1hY3Jvcy4KKworCisjIFRoZXNlIGRlY2xhcmF0aW9ucyBtdXN0IG1h
dGNoIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oLgorY29uc3QgQ2FsbEZyYW1lSGVhZGVyU2l6
ZSA9IDQ4Citjb25zdCBBcmd1bWVudENvdW50ID0gLTQ4Citjb25zdCBDYWxsZXJGcmFtZSA9IC00
MAorY29uc3QgQ2FsbGVlID0gLTMyCitjb25zdCBTY29wZUNoYWluID0gLTI0Citjb25zdCBSZXR1
cm5QQyA9IC0xNgorY29uc3QgQ29kZUJsb2NrID0gLTgKKworY29uc3QgVGhpc0FyZ3VtZW50T2Zm
c2V0ID0gLUNhbGxGcmFtZUhlYWRlclNpemUgLSA4CisKKyMgRGVjbGFyZSBzb21lIGFsaWFzZXMg
Zm9yIHRoZSByZWdpc3RlcnMgd2Ugd2lsbCB1c2UuCitjb25zdCBQQyA9IHQ0CisKKyMgT2Zmc2V0
cyBuZWVkZWQgZm9yIHJlYXNvbmluZyBhYm91dCB2YWx1ZSByZXByZXNlbnRhdGlvbi4KK2lmIEJJ
R19FTkRJQU4KKyAgICBjb25zdCBUYWdPZmZzZXQgPSAwCisgICAgY29uc3QgUGF5bG9hZE9mZnNl
dCA9IDQKK2Vsc2UKKyAgICBjb25zdCBUYWdPZmZzZXQgPSA0CisgICAgY29uc3QgUGF5bG9hZE9m
ZnNldCA9IDAKK2VuZAorCisjIFZhbHVlIHJlcHJlc2VudGF0aW9uIGNvbnN0YW50cy4KK2NvbnN0
IEludDMyVGFnID0gLTEKK2NvbnN0IEJvb2xlYW5UYWcgPSAtMgorY29uc3QgTnVsbFRhZyA9IC0z
Citjb25zdCBVbmRlZmluZWRUYWcgPSAtNAorY29uc3QgQ2VsbFRhZyA9IC01Citjb25zdCBFbXB0
eVZhbHVlVGFnID0gLTYKK2NvbnN0IERlbGV0ZWRWYWx1ZVRhZyA9IC03Citjb25zdCBMb3dlc3RU
YWcgPSBEZWxldGVkVmFsdWVUYWcKKworIyBUeXBlIGNvbnN0YW50cy4KK2NvbnN0IFN0cmluZ1R5
cGUgPSA1Citjb25zdCBPYmplY3RUeXBlID0gMTAKKworIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4K
K2NvbnN0IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxCitjb25zdCBJbXBsZW1lbnRzSGFzSW5z
dGFuY2UgPSAyCitjb25zdCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID0gOAorCisjIEhl
YXAgYWxsb2NhdGlvbiBjb25zdGFudHMuCitjb25zdCBKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5k
ZXggPSAzCisKKyMgQnl0ZWNvZGUgb3BlcmFuZCBjb25zdGFudHMuCitjb25zdCBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDAKKworIyBDb2RlIHR5cGUgY29uc3RhbnRzLgor
Y29uc3QgR2xvYmFsQ29kZSA9IDAKK2NvbnN0IEV2YWxDb2RlID0gMQorY29uc3QgRnVuY3Rpb25D
b2RlID0gMgorCisjIFRoZSBpbnRlcnByZXRlciBzdGVhbHMgdGhlIHRhZyB3b3JkIG9mIHRoZSBh
cmd1bWVudCBjb3VudC4KK2NvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsgVGFn
T2Zmc2V0CisKKyMgVGhpcyBtdXN0IG1hdGNoIHd0Zi9WZWN0b3IuaC4KK2NvbnN0IFZlY3RvclNp
emVPZmZzZXQgPSAwCitjb25zdCBWZWN0b3JCdWZmZXJPZmZzZXQgPSA0CisKKyMgU3RyaW5nIGZs
YWdzLgorY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDY0CisKKyMgVXRpbGl0aWVzCittYWNy
byBjcmFzaCgpCisgICAgc3RvcmVpIDAsIDB4YmJhZGJlZWZbXQorICAgIG1vdmUgMCwgdDAKKyAg
ICBjYWxsIHQwCitlbmQKKworbWFjcm8gYXNzZXJ0KGFzc2VydGlvbikKKyAgICBpZiBBU1NFUlRf
RU5BQkxFRAorICAgICAgICBhc3NlcnRpb24oLm9rKQorICAgICAgICBjcmFzaCgpCisgICAgLm9r
OgorICAgIGVuZAorZW5kCisKK21hY3JvIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChk
ZXN0aW5hdGlvblJlZ2lzdGVyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgbHIsIGRlc3Rp
bmF0aW9uUmVnaXN0ZXIKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9wIGRlc3RpbmF0aW9uUmVn
aXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKworbWFjcm8gcmVz
dG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oc291cmNlUmVnaXN0ZXIpCisgICAgaWYgQVJN
djcKKyAgICAgICAgbW92ZSBzb3VyY2VSZWdpc3RlciwgbHIKKyAgICBlbHNpZiBYODYKKyAgICAg
ICAgcHVzaCBzb3VyY2VSZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQK
K2VuZAorCittYWNybyBkaXNwYXRjaChhZHZhbmNlKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBD
CisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQocGNP
ZmZzZXQpCisgICAgbHNoaWZ0aSAyLCBwY09mZnNldAorICAgIGFkZHAgcGNPZmZzZXQsIFBDCisg
ICAgam1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEJyYW5jaChwY09mZnNldCkKKyAgICBs
b2FkaSBwY09mZnNldCwgdDAKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDApCitlbmQK
KworbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBU
YWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGNDYWxsMihmdW5j
dGlvbiwgYXJnMSwgYXJnMikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGFyZzEsIHQwCisg
ICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBhcmcxLCAw
CisgICAgICAgIHBva2UgYXJnMiwgMQorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQK
KyAgICBjYWxsIGZ1bmN0aW9uCitlbmQKKworIyBUaGlzIGJhcmVseSB3b3Jrcy4gYXJnMyBhbmQg
YXJnNCBzaG91bGQgcHJvYmFibHkgYmUgaW1tZWRpYXRlcy4KK21hY3JvIGNDYWxsNChmdW5jdGlv
biwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCkKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGFy
ZzEsIHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICAgICAgbW92ZSBhcmczLCB0MgorICAg
ICAgICBtb3ZlIGFyZzQsIHQzCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAor
ICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICAgICAgcG9rZSBhcmczLCAyCisgICAgICAgIHBva2Ug
YXJnNCwgMworICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKKyAgICBjYWxsIGZ1bmN0
aW9uCitlbmQKKworbWFjcm8gY2FsbEhlbHBlcihoZWxwZXIpCisgICAgY0NhbGwyKGhlbHBlciwg
Y2ZyLCBQQykKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKKyMgRGVi
dWdnaW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBsaWtlIHRvIHByaW50IGFuIG9wZXJhbmQgaW4gdGhl
IGluc3RydWN0aW9uIHN0cmVhbS4KK21hY3JvIHRyYWNlT3BlcmFuZChmcm9tV2hlcmUsIG9wZXJh
bmQpCisgICAgY0NhbGw0KF9sbGludF90cmFjZV9vcGVyYW5kLCBjZnIsIFBDLCBmcm9tV2hlcmUs
IG9wZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERl
YnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCB0aGUgdmFsdWUgb2YgYW4g
b3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24KKyMgc3RyZWFtLgorbWFjcm8gdHJhY2VWYWx1ZShm
cm9tV2hlcmUsIG9wZXJhbmQpCisgICAgY0NhbGw0KF9sbGludF90cmFjZV92YWx1ZSwgY2ZyLCBQ
QywgZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2Zy
CitlbmQKKworbWFjcm8gdHJhY2VFeGVjdXRpb24oKQorICAgIGlmIEVYRUNVVElPTl9UUkFDSU5H
CisgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3RyYWNlKQorICAgIGVuZAorZW5kCisKKyMgQ2Fs
bCBhIGhlbHBlciBmb3IgY2FsbCBvcGNvZGVzLgorbWFjcm8gY2FsbENhbGxIZWxwZXIoYWR2YW5j
ZSwgaGVscGVyLCBhY3Rpb24pCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMsIHQwCisgICAgc3Rv
cmVwIHQwLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBjQ2FsbDIoaGVscGVy
LCBjZnIsIFBDKQorICAgIG1vdmUgdDEsIGNmcgorICAgIGFjdGlvbih0MCkKK2VuZAorCittYWNy
byBzbG93UGF0aEZvckNhbGwoYWR2YW5jZSwgaGVscGVyKQorICAgIGNhbGxDYWxsSGVscGVyKAor
ICAgICAgICBhZHZhbmNlLAorICAgICAgICBoZWxwZXIsCisgICAgICAgIG1hY3JvIChjYWxsZWUp
CisgICAgICAgICAgICBjYWxsIGNhbGxlZQorICAgICAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwo
KQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVChpbmNyZW1lbnQs
IGFjdGlvbikKKyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgdDAKKyAgICAgICAgYmFkZGlzIGluY3JlbWVudCwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0
ZUNvdW50ZXJbdDBdLCAuY29udGludWUKKyAgICAgICAgYWN0aW9uKCkKKyAgICAuY29udGludWU6
CisgICAgZW5kCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGNo
ZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAg
ICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgICAgICAgICAg
Y0NhbGwyKF9sbGludF9sb29wX29zciwgY2ZyLCBQQykKKyAgICAgICAgICAgIG1vdmUgdDEsIGNm
cgorICAgICAgICAgICAgYnRweiB0MCwgLnJlY292ZXIKKyAgICAgICAgICAgIGptcCB0MAorICAg
ICAgICAucmVjb3ZlcjoKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZz
ZXRbY2ZyXSwgUEMKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRG
b3JFcGlsb2d1ZSgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMTAsCisgICAgICAg
IG1hY3JvICgpCisgICAgICAgICAgICBjYWxsSGVscGVyKF9sbGludF9yZXBsYWNlKQorICAgICAg
ICBlbmQpCitlbmQKKworbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoaW5kZXgpCisgICAgYXNzZXJ0
KG1hY3JvIChvaykgYmlsdCBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIG9rIGVu
ZCkKK2VuZAorCisjIEluZGV4LCB0YWcsIGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJl
Z2lzdGVycy4gSW5kZXggaXMgbm90CisjIGNoYW5nZWQuCittYWNybyBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5k
ZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXls
b2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0
b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9m
IGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAo
dmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsb2FkcCBUYWdP
ZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3Bh
eWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5
bG9hZCBtYXkgYmUgdGhlIHNhbWUgcmVnaXN0ZXIuIEluZGV4IG1heSBiZSBjbG9iYmVyZWQuCitt
YWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2FkKQorICAg
IGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50Ogor
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YWcKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29u
c3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdGFnXSwgdGFnCisgICAgIyBUaGVy
ZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwg
YmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisg
ICAgbHNoaWZ0aSAzLCBpbmRleAorICAgIGFkZHAgaW5kZXgsIHRhZworICAgIGxvYWRwIFBheWxv
YWRPZmZzZXRbdGFnXSwgcGF5bG9hZAorICAgIGxvYWRwIFRhZ09mZnNldFt0YWddLCB0YWcKKy5k
b25lOgorZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9t
KGluZGV4LCB0YWdDaGVjaywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbY2ZyLCBp
bmRleCwgOF0pCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9h
ZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBw
YXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9y
QnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBl
dmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZh
bHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgdGFnQ2hlY2soVGFn
T2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSkKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxv
YWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9h
ZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdCBtdXRhdGVkLiBVc2UK
KyMgdGhpcyBpZiB5b3Uga25vdyB3aGF0IHRoZSB0YWcgb2YgdGhlIHZhcmlhYmxlIHNob3VsZCBi
ZS4gRG9pbmcgdGhlIHRhZworIyB0ZXN0IGFzIHBhcnQgb2YgbG9hZGluZyB0aGUgdmFyaWFibGUg
cmVkdWNlcyByZWdpc3RlciB1c2UsIGJ1dCBtYXkgbm90CisjIGJlIGZhc3RlciB0aGFuIGRvaW5n
IGxvYWRDb25zdGFudE9yVmFyaWFibGUgZm9sbG93ZWQgYnkgYSBicmFuY2ggb24gdGhlCisjIHRh
Zy4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGluZGV4LCBleHBlY3RlZFRh
ZywgcGF5bG9hZCwgc2xvdykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1
c3RvbSgKKyAgICAgICAgaW5kZXgsCisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGJpbmVxIGFj
dHVhbFRhZywgZXhwZWN0ZWRUYWcsIHNsb3cgZW5kLAorICAgICAgICBwYXlsb2FkKQorZW5kCisK
K21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKGluZGV4LCBwYXls
b2FkKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKAorICAgICAg
ICBpbmRleCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykgZW5kLAorICAgICAgICBwYXlsb2Fk
KQorZW5kCisKK21hY3JvIHdyaXRlQmFycmllcih0YWcsIHBheWxvYWQpCisgICAgIyBOb3RoaW5n
IHRvIGRvLCBzaW5jZSB3ZSBkb24ndCBoYXZlIGEgZ2VuZXJhdGlvbmFsIG9yIGluY3JlbWVudGFs
IGNvbGxlY3Rvci4KK2VuZAorCittYWNybyB2YWx1ZVByb2ZpbGUodGFnLCBwYXlsb2FkLCBwcm9m
aWxlKQorICAgIHN0b3JlaSB0YWcsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0
W3Byb2ZpbGVdCisgICAgc3RvcmVpIHBheWxvYWQsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsg
UGF5bG9hZE9mZnNldFtwcm9maWxlXQorZW5kCisKKworIyBJbmRpY2F0ZSB0aGUgYmVnaW5uaW5n
IG9mIExMSW50LgorX2xsaW50X2JlZ2luOgorICAgIGNyYXNoKCkKKworCisjIEVudHJ5cG9pbnRz
IGludG8gdGhlIGludGVycHJldGVyCisKK21hY3JvIGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dl
dHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0
ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0
YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tG
b3JDYWxsW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5j
dGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2Fk
cCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4
ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0
YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHRh
cmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YXJnZXRSZWdpc3Rlcgor
ZW5kCisKK21hY3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAg
IHN0b3JlcCBzb3VyY2VSZWdpc3RlciwgQ29kZUJsb2NrW2Nmcl0KK2VuZAorCittYWNybyBub3RG
dW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAgICAjIE5vdGhpbmcgdG8g
ZG8hCitlbmQKKworIyBEbyB0aGUgYmFyZSBtaW5pbXVtIHJlcXVpcmVkIHRvIGV4ZWN1dGUgY29k
ZS4gU2V0cyB1cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2RlQmxvY2sqCisjIGluIHQxLiBNYXkgYWxz
byB0cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KK21hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dl
dHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JIZWxwZXIsIHRyYWNlSGVscGVyKQorICAgIHByZXNl
cnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgY2Fs
bCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KKyAgICBzdG9yZXAgdDIsIFJldHVy
blBDW2Nmcl0KKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKHRy
YWNlSGVscGVyKQorICAgIGVuZAorICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICBpZiBKSVRf
RU5BQkxFRAorICAgICAgICBiYWRkaXMgNSwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50
ZXJbdDFdLCAuY29udGludWUKKyAgICAgICAgY0NhbGwyKG9zckhlbHBlciwgY2ZyLCBQQykKKyAg
ICAgICAgbW92ZSB0MSwgY2ZyCisgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgIGxv
YWRwIFJldHVyblBDW2Nmcl0sIHQyCisgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3Jl
UmV0dXJuKHQyKQorICAgICAgICBqbXAgdDAKKyAgICAucmVjb3ZlcjoKKyAgICAgICAgY29kZUJs
b2NrR2V0dGVyKHQxKQorICAgIC5jb250aW51ZToKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tTZXR0
ZXIodDEpCisgICAgCisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVCbG9jazo6
bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25z
OjptX2luc3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCitlbmQKKworIyBF
eHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkg
bGVhdmVzIGJlaGluZC4KKyMgTXVzdCBjYWxsIGRpc3BhdGNoKDApIGFmdGVyIGNhbGxpbmcgdGhp
cy4KK21hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1NraXApCisgICAgIyBQ
cm9maWxlIHRoZSBhcmd1bWVudHMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hvaWNlIGJ1
dCB0byBkbyB0aGlzLiBUaGlzCisgICAgIyBjb2RlIGlzIHByZXR0eSBob3JyZW5kb3VzIGJlY2F1
c2Ugb2YgdGhlIGRpZmZlcmVuY2UgaW4gb3JkZXJpbmcgYmV0d2VlbgorICAgICMgYXJndW1lbnRz
IGFuZCB2YWx1ZSBwcm9maWxlcywgdGhlIGRlc2lyZSB0byBoYXZlIGEgc2ltcGxlIGxvb3AtZG93
bi10by16ZXJvCisgICAgIyBsb29wLCBhbmQgdGhlIGRlc2lyZSB0byB1c2Ugb25seSB0aHJlZSBy
ZWdpc3RlcnMgc28gYXMgdG8gcHJlc2VydmUgdGhlIFBDIGFuZAorICAgICMgdGhlIGNvZGUgYmxv
Y2suIEl0IGlzIGxpa2VseSB0aGF0IHRoaXMgY29kZSBzaG91bGQgYmUgcmV3cml0dGVuIGluIGEg
bW9yZQorICAgICMgb3B0aW1hbCB3YXkgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBoYXZlIG1vcmUg
dGhhbiBmaXZlIHJlZ2lzdGVycyBhdmFpbGFibGUKKyAgICAjIGZvciBhcmJpdHJhcnkgdXNlIGlu
IHRoZSBpbnRlcnByZXRlci4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0
MV0sIHQwCisgICAgYWRkaSAtcHJvZmlsZUFyZ1NraXAsIHQwICMgVXNlIGFkZGkgYmVjYXVzZSB0
aGF0J3Mgd2hhdCBoYXMgdGhlIHBlZXBob2xlCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVx
IHQwLCAwLCBvayBlbmQpCisgICAgYnRpeiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zm
c2V0W3QxXSwgdDMKKyAgICBtdWxpIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0MiAjIEFhYWFh
aGhoaCEgTmVlZCBzdHJlbmd0aCByZWR1Y3Rpb24hCisgICAgbmVnaSB0MAorICAgIGxzaGlmdGkg
MywgdDAKKyAgICBhZGRwIHQyLCB0MworLmFyZ3VtZW50UHJvZmlsZUxvb3A6CisgICAgbG9hZGkg
VGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtj
ZnIsIHQwXSwgdDIKKyAgICBzdWJwIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQzCisgICAgc3RvcmVp
IHQyLCBwcm9maWxlQXJnU2tpcCAqIHNpemVvZiBWYWx1ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6
Om1fYnVja2V0cyArIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQg
KyBQYXlsb2FkT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIKKyAg
ICBzdG9yZWkgdDIsIHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVl
UHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBiYWRkaW56IDgsIHQw
LCAuYXJndW1lbnRQcm9maWxlTG9vcAorLmFyZ3VtZW50UHJvZmlsZURvbmU6CisgICAgCisgICAg
IyBDaGVjayBzdGFjayBoZWlnaHQuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJl
Z2lzdGVyc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0
MgorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MiAgICMgRklYTUU6
IENhbiBnZXQgdG8gdGhlIFJlZ2lzdGVyRmlsZSBmcm9tIHRoZSBKSVRTdGFja0ZyYW1lCisgICAg
bHNoaWZ0aSAzLCB0MAorICAgIGFkZHAgdDAsIGNmciwgdDAKKyAgICBicGFlcSBJbnRlcnByZXRl
cjo6bV9yZWdpc3RlckZpbGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hl
aWdodE9LCisKKyAgICAjIFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwg
YSBoZWxwZXIuCisgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVjaykKKy5z
dGFja0hlaWdodE9LOgorZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwg
d2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCittYWNybyBmdW5jdGlvbkFy
aXR5Q2hlY2soZG9uZUxhYmVsLCBoZWxwZXIpCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFy
Z3VtZW50Q291bnRbY2ZyXSwgdDAKKyAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFt
ZXRlcnNbdDFdLCBkb25lTGFiZWwKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKSAgICMgVGhp
cyBoZWxwZXIgaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4gbm8gZXJyb3IsIHQwICE9
IDAgPT4gZXJyb3IKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBidGl6IHQwLCAuY29udGludWUKKyAg
ICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0ds
b2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRh
Ojp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKy5jb250aW51ZToKKyAgICAjIFJlbG9hZCBD
b2RlQmxvY2sgYW5kIFBDLCBzaW5jZSB0aGUgaGVscGVyIGNsb2JiZXJlZCBpdC4KKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25z
W3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlv
bnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworICAgIGptcCBkb25lTGFiZWwKK2VuZAor
CitfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVC
bG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3Is
IF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9ldmFs
X3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RG
dW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3By
b2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3By
b2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVu
Y3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGws
IF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKKy5mdW5jdGlvbkZvckNh
bGxCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCisgICAgZGlzcGF0Y2goMCkK
KyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWU6CisgICAgcHJv
bG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJs
b2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGlu
dF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQorLmZ1bmN0aW9uRm9yQ29u
c3RydWN0QmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigxKQorICAgIGRpc3BhdGNo
KDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjazoKKyAgICBw
cm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2Nr
U2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9s
bGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjaygu
ZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9sbGludF9oZWxwZXJfY2FsbF9hcml0eUNoZWNrKQorCisK
K19sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3Vl
KGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1Nl
dHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ss
IF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCisgICAgZnVuY3Rpb25Bcml0
eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfbGxpbnRfaGVscGVyX2NvbnN0cnVj
dF9hcml0eUNoZWNrKQorCisjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9ucworCitfbGxpbnRf
b3BfZW50ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0MgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1WYXJzW3QyXSwgdDIKKyAgICBidGl6IHQy
LCAub3BFbnRlckRvbmUKKyAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAKKyAgICBtb3ZlIDAsIHQx
Cisub3BFbnRlckxvb3A6CisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0
W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgYnRpbnogdDIsIC5vcEVudGVyTG9vcAorLm9wRW50ZXJEb25lOgorICAgIGRpc3BhdGNoKDEp
CisKKworX2xsaW50X29wX2NyZWF0ZV9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVt
cHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQorLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmU6Cisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5pdF9sYXp5X3JlZzoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcs
IFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBcmd1bWVudHNEb25l
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCisub3BDcmVh
dGVBcmd1bWVudHNEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFjcm8gYWxsb2NhdGVCYXNp
Y0pTT2JqZWN0KHNpemVDbGFzc0luZGV4LCBjbGFzc0luZm9PZmZzZXQsIHN0cnVjdHVyZSwgcmVz
dWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNsb3dDYXNlKQorICAgIGNvbnN0IG9mZnNldE9mTXlT
aXplQ2xhc3MgPSBKU0dsb2JhbERhdGE6OmhlYXAgKyBIZWFwOjptX29iamVjdFNwYWNlICsgQWxs
b2NhdGlvblNwYWNlOjptX21hcmtlZFNwYWNlICsgTWFya2VkU3BhY2U6Om1fcHJlY2lzZVNpemVD
bGFzc2VzICsgc2l6ZUNsYXNzSW5kZXggKiBzaXplb2YgTWFya2VkU3BhY2U6OlNpemVDbGFzcwor
ICAgIAorICAgICMgRklYTUU6IHdlIGNhbiBnZXQgdGhlIGdsb2JhbCBkYXRhIGluIG9uZSBsb2Fk
IGZyb20gdGhlIHN0YWNrLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoMQorICAg
IGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAK
KyAgICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4gICAgCisgICAgbG9hZHAg
b2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNl
bGxbc2NyYXRjaDFdLCByZXN1bHQKKyAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UKKyAgICAKKyAg
ICAjIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAgICBsb2FkcCBbcmVz
dWx0XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIG9mZnNldE9mTXlTaXplQ2xhc3Mg
KyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXQorCisgICAg
IyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgbG9hZHAgY2xhc3NJbmZvT2Zmc2V0W3NjcmF0
Y2gxXSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCisgICAgc3RvcmVw
IHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCisgICAgc3RvcmVwIDAsIEpT
T2JqZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0KKyAgICBhZGRwIHNpemVvZiBKU09iamVjdCwg
cmVzdWx0LCBzY3JhdGNoMQorICAgIHN0b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVy
dHlTdG9yYWdlW3Jlc3VsdF0KK2VuZAorCitfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50
KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ3JlYXRl
VGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wQ3JlYXRlVGhpc1Ns
b3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFt0MF0sIHQyCisgICAgYnRweiB0
MiwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9i
amVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8s
IHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEK
KyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wQ3JlYXRl
VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV90aGlzKQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRPZmZzZXQgKyBDYWxs
ZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisg
ICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikK
KworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcs
IC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYmJiIFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BD
b252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0VGhpc1Nsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAgICBkaXNwYXRjaCgy
KQorCisKK19sbGludF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2Jq
ZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVj
dHVyZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXpl
Q2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MSwgdDAs
IHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9y
ZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3T2JqZWN0U2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkKKyAgICBkaXNwYXRjaCgy
KQorCisKK19sbGludF9vcF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheV9idWZmZXIpCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdleHApCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0Miwg
dDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9ub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAg
ICBiaW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90U2xvdworICAgIHhvcmkgMSwgdDMKKyAgICBz
dG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5vdFNsb3c6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0
MywgLm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93CisgICAgYmliIHQy
LCBMb3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpZXEgdDAs
IHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAg
ICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQor
Cisub3BFcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2VxKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX2VxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0
YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BF
cU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAg
ICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlCisu
b3BFcU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaWVxIHQx
LCBVbmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQyLCB0MQorLm9wRXFOdWxsTm90SW1tZWRpYXRl
OgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9y
ZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0Mywg
dDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5l
cSB0MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFTbG93Cisg
ICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAg
ICBjaW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIs
IHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRp
c3BhdGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25l
cSkKKyAgICBkaXNwYXRjaCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251bGw6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0Mwor
ICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVx
IHQxLCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wTmVx
TnVsbE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBjaW5lcSB0MSwgTnVs
bFRhZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIGFuZGkgdDIsIHQx
Cisub3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0K
KyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBo
ZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKKyAgICBiaWIgdDIs
IExvd2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmluZworICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDFdLCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJ
bmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJlcSBTdHJ1Y3R1
cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cK
Ky5ub3RTdHJpbmc6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVyYXRpb24o
dDAsIHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2go
NCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2Vu
ZAorCitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmlj
dEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQg
ZW5kLCBfbGxpbnRfaGVscGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3RyaWN0ZXE6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVz
dWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9uc3RyaWN0
ZXEpCisKKworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X2xlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2xlc3NlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcikK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQz
MlRhZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQxCisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5jU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQ
cmVEZWNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBi
c3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50
X29wX3Bvc3RfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIElu
dDMyVGFnLCAub3BQb3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMK
KyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBU
YWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJ
bmNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9wb3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQz
MlRhZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisg
ICAgYnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFn
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0RGVj
RG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bf
dG9fanNudW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0
MykKKyAgICBiaWVxIHQyLCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklzSW50CisgICAgYmlhZXEg
dDIsIEVtcHR5VmFsdWVUYWcsIC5vcFRvSnNudW1iZXJTbG93Cisub3BUb0pzbnVtYmVySXNJbnQ6
CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb0pzbnVtYmVy
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fanNudW1iZXIpCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQwLCB0MSwgdDIpCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BOZWdhdGVT
cmNOb3RJbnQKKyAgICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CisgICAgbmVn
aSB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3Rv
cmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKy5vcE5l
Z2F0ZVNyY05vdEludDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xvdworICAg
IHhvcmkgMHg4MDAwMDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4
XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNo
KDMpCisKKy5vcE5lZ2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lZ2F0
ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdl
ck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAx
MltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDAp
CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDMsIEludDMy
VGFnLCAub3AyTm90SW50CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50ZWdlck9wZXJhdGlv
bkFuZFN0b3JlKHQzLCB0MSwgdDAsIC5zbG93LCB0MikKKyAgICBkaXNwYXRjaCg1KQorCisub3Ax
Tm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRo
ZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEgdDIsIExvd2VzdFRh
ZywgLnNsb3cKKyAgICBiaWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAg
IGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQxLCBmdDEKKyAgICBqbXAgLm9w
MU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQxLCB0MywgZnQx
Cisub3AxTm90SW50UmVhZHk6CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgZmlpMmQgdDAsIHQy
LCBmdDAKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2Nm
ciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wMk5vdEludDoKKyAgICAjIEZpcnN0IG9w
ZXJhbmQgaXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0
ZWx5IG5vdC4KKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNs
b3cKKyAgICBjaTJkIHQwLCBmdDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorICAgIGRvdWJsZU9w
ZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNw
YXRjaCg1KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCg1
KQorZW5kCisKK21hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlv
biwgaGVscGVyKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQz
MlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgaW50ZWdlck9wZXJh
dGlvbihsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFn
T2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRP
ZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBkb3VibGVPcGVyYXRp
b24sIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfYWRkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8g
bGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQg
bGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2FkZCkKKworCitfbGxpbnRf
b3BfbXVsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAor
ICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAg
ICAgICAgIGNvbnN0IHNjcmF0Y2ggPSBpbnQzMlRhZyAgICMgV2Uga25vdyB0aGF0IHdlIGNhbiBy
ZXVzZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEgY29uc3RhbnQuCisgICAg
ICAgICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoCisgICAgICAgICAgICBibXVsaW8gbGVmdCwgc2Ny
YXRjaCwgc2xvdworICAgICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRvbmUKKyAgICAgICAgICAg
IGJpbHQgbGVmdCwgMCwgLnNsb3cKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIC5zbG93Cisg
ICAgICAgIC5kb25lOgorICAgICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2Zy
LCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgaW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBt
dWxkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9tdWwpCisKKworX2xs
aW50X29wX3N1YjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1YmlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAg
ICAgX2xsaW50X2hlbHBlcl9zdWIpCisKKworX2xsaW50X29wX2RpdjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFn
LCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjaTJkIGxlZnQsIGZ0MAor
ICAgICAgICAgICAgY2kyZCByaWdodCwgZnQxCisgICAgICAgICAgICBkaXZkIGZ0MCwgZnQxCisg
ICAgICAgICAgICBiY2QyaSBmdDEsIHJpZ2h0LCAubm90SW50CisgICAgICAgICAgICBzdG9yZWkg
aW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHJp
Z2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBqbXAgLmRvbmUK
KyAgICAgICAgLm5vdEludDoKKyAgICAgICAgICAgIHN0b3JlZCBmdDEsIFtjZnIsIGluZGV4LCA4
XQorICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQpIGRpdmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2RpdikKKwor
CitfbGxpbnRfb3BfbW9kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfbW9kKQorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8gYml0T3Aob3BlcmF0
aW9uLCBoZWxwZXIsIGFkdmFuY2UpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhb
UENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQzLCBJbnQzMlRh
ZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgbG9hZGkgNFtQQ10s
IHQyCisgICAgb3BlcmF0aW9uKHQxLCB0MCwgLnNsb3cpCisgICAgc3RvcmVpIHQzLCBUYWdPZmZz
ZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0K
KyAgICBkaXNwYXRjaChhZHZhbmNlKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikK
KyAgICBkaXNwYXRjaChhZHZhbmNlKQorZW5kCisKK19sbGludF9vcF9sc2hpZnQ6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3cpIGxzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2xzaGlm
dCwKKyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfcnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSByc2hpZnRp
IGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9yc2hpZnQsCisgICAgICAg
IDQpCisKKworX2xsaW50X29wX3Vyc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJp
dE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICB1cnNo
aWZ0aSBsZWZ0LCByaWdodAorICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdworICAgICAg
ICBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfdXJzaGlmdCwKKyAgICAgICAgNCkKKworCitf
bGxpbnRfb3BfYml0YW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBhbmRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAg
ICAgX2xsaW50X2hlbHBlcl9iaXRhbmQsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdHhv
cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgc2xvdykgeG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfYml0eG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRvcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykg
b3JpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXRvciwKKyAgICAg
ICAgNSkKKworCitfbGxpbnRfb3BfYml0bm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQxLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3BCaXRub3RTbG93
CisgICAgbm90aSB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
c3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKwor
Lm9wQml0bm90U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfYml0bm90KQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDEsIENlbGxUYWcsIHQwLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdykKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6
bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0hhc0luc3RhbmNl
LCAub3BDaGVja0hhc0luc3RhbmNlU2xvdworICAgIGRpc3BhdGNoKDIpCisKKy5vcENoZWNrSGFz
SW5zdGFuY2VTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jaGVja19oYXNfaW5z
dGFuY2UpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5zdGFuY2VvZjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgIyBDaGVjayB0aGF0IGJhc2VWYWwgaW1wbGVtZW50cyB0aGUg
ZGVmYXVsdCBIYXNJbnN0YW5jZSBiZWhhdmlvci4KKyAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBi
ZSBkZXByZWNhdGVkLgorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZFVuY2hlY2tlZCh0MSwgdDApCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6
bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIC5vcEluc3RhbmNlb2ZT
bG93CisgICAgCisgICAgIyBBY3R1YWxseSBkbyB0aGUgd29yay4KKyAgICBsb2FkaSAxNltQQ10s
IHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQodDAsIENlbGxUYWcsIHQxLCAub3BJbnN0YW5jZW9mU2xvdykKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QxXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlw
ZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgbG9h
ZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxU
YWcsIHQyLCAub3BJbnN0YW5jZW9mU2xvdykKKyAgICAKKyAgICAjIFJlZ2lzdGVyIHN0YXRlOiB0
MSA9IHByb3RvdHlwZSwgdDIgPSB2YWx1ZQorICAgIG1vdmUgMSwgdDAKKy5vcEluc3RhbmNlb2ZM
b29wOgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MgorICAgIGxvYWRpIFN0
cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QyXSwgdDIKKyAgICBicGVxIHQy
LCB0MSwgLm9wSW5zdGFuY2VvZkRvbmUKKyAgICBidGlueiB0MiwgLm9wSW5zdGFuY2VvZkxvb3AK
KworICAgIG1vdmUgMCwgdDAKKy5vcEluc3RhbmNlb2ZEb25lOgorICAgIHN0b3JlaSBCb29sZWFu
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3BJbnN0YW5jZW9mU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW5zdGFuY2VvZikKKyAgICBkaXNwYXRjaCg1KQorCisK
K19sbGludF9vcF90eXBlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl90eXBlb2YpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNf
dW5kZWZpbmVkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfaXNfdW5kZWZpbmVkKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX2Jv
b2xlYW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9pc19ib29sZWFuKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX251bWJlcjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX251
bWJlcikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19zdHJpbmc6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19zdHJpbmcpCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfb2JqZWN0KQorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX2lzX2Z1bmN0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfZnVuY3Rpb24pCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfaW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9pbikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9yZXNv
bHZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cmVzb2x2ZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9yZXNvbHZlX3NraXA6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZl
X3NraXApCisgICAgZGlzcGF0Y2goNSkKKworCittYWNybyByZXNvbHZlR2xvYmFsKHNpemUsIHNs
b3cpCisgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVzdGlu
YXRpb24gZm9yIHRoZSBsb2FkLgorICAgICMgOFtQQ10gICBQcm9wZXJ0eSBpZGVudGlmaWVyIGlu
ZGV4IGluIHRoZSBjb2RlIGJsb2NrLgorICAgICMgMTJbUENdICBTdHJ1Y3R1cmUgcG9pbnRlciwg
aW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgIyAxNltQQ10gIE9m
ZnNldCBpbiBnbG9iYWwgb2JqZWN0LCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVy
YXRvci4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDEKKyAgICBicG5lcSB0MSwgMTJbUENdLCBzbG93CisgICAgbG9hZGkgMTZbUENdLCB0MQor
ICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCisgICAgbG9hZGkg
VGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEs
IDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
bG9hZGkgKHNpemUgLSAxKSAqIDRbUENdLCB0MAorICAgIHZhbHVlUHJvZmlsZSh0MiwgdDMsIHQw
KQorZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgcmVzb2x2ZUdsb2JhbCg2LCAub3BSZXNvbHZlR2xvYmFsU2xvdykKKyAgICBkaXNwYXRj
aCg2KQorCisub3BSZXNvbHZlR2xvYmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcmVzb2x2ZV9nbG9iYWwpCisgICAgZGlzcGF0Y2goNikKKworCisjIEdpdmVzIHlvdSB0aGUg
c2NvcGUgaW4gdDAsIHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25hbGx5IHBlcmZvcm0gYWRk
aXRpb25hbCBjaGVja3Mgb24gdGhlCisjIHNjb3BlcyBhcyB0aGV5IGFyZSB0cmF2ZXJzZWQuIHNj
b3BlQ2hlY2soKSBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgcmVnaXN0ZXIKKyMg
aG9sZGluZyB0aGUgc2NvcGUsIGFuZCBhIHJlZ2lzdGVyIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHNj
cmF0Y2guIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90CisjIHVzZSB0Mywgc28geW91IGNhbiBob2xk
IHN0dWZmIGluIHQzIGlmIG5lZWQgYmUuCittYWNybyBnZXRTY29wZShkZUJydWlqaW5JbmRleE9w
ZXJhbmQsIHNjb3BlQ2hlY2spCisgICAgbG9hZHAgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZzZXRb
Y2ZyXSwgdDAKKyAgICBsb2FkaSBkZUJydWlqaW5JbmRleE9wZXJhbmQsIHQyCisgICAgCisgICAg
YnRpeiB0MiwgLmRvbmUKKyAgICAKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBi
aW5lcSBDb2RlQmxvY2s6Om1fY29kZVR5cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5sb29wCisgICAg
YnRieiBDb2RlQmxvY2s6Om1fbmVlZHNGdWxsU2NvcGVDaGFpblt0MV0sIC5sb29wCisgICAgCisg
ICAgbG9hZGkgQ29kZUJsb2NrOjptX2FjdGl2YXRpb25SZWdpc3Rlclt0MV0sIHQxCisKKyAgICAj
IE5lZWQgdG8gY29uZGl0aW9uYWxseSBza2lwIG92ZXIgb25lIHNjb3BlLgorICAgIGJpZXEgVGFn
T2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAubm9BY3RpdmF0aW9uCisgICAgc2Nv
cGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MAor
Lm5vQWN0aXZhdGlvbjoKKyAgICBzdWJpIDEsIHQyCisgICAgCisgICAgYnRpeiB0MiwgLmRvbmUK
Ky5sb29wOgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2Rl
OjpuZXh0W3QwXSwgdDAKKyAgICBzdWJpIDEsIHQyCisgICAgYnRpbnogdDIsIC5sb29wCisKKy5k
b25lOgorZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMK
KyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmFjdGl2YXRpb25TdHJ1Y3R1cmVbdDNdLCB0MworICAg
IGdldFNjb3BlKAorICAgICAgICAyMFtQQ10sCisgICAgICAgIG1hY3JvIChzY29wZSwgc2NyYXRj
aCkKKyAgICAgICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3Rbc2NvcGVdLCBzY3Jh
dGNoCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3NjcmF0Y2hdLCB0Mywg
Lm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3cKKyAgICAgICAgZW5kKQorICAgIHJlc29s
dmVHbG9iYWwoNywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93KQorICAgIGRpc3BhdGNoKDcp
CisKKy5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQorICAgIGRpc3Bh
dGNoKDcpCisKKy5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKKyAgICBkaXNwYXRjaCg3KQorCisK
K19sbGludF9vcF9nZXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBP
cGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRo
ZSBsb2FkLgorICAgICMgOFtQQ10gICBJbmRleCBvZiByZWdpc3RlciBpbiB0aGUgc2NvcGUuCisg
ICAgIyAxMltQQ10gIERlIEJydWlqaW4gaW5kZXguCisgICAgZ2V0U2NvcGUoMTJbUENdLCBtYWNy
byAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSA4
W1BDXSwgdDIKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBs
b2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFn
T2Zmc2V0W3QwLCB0MiwgOF0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhd
LCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIHZh
bHVlUHJvZmlsZSh0MywgdDAsIHQxKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3B1
dF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBnZXRTY29wZSg4W1BDXSwg
bWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQzLCB0MikKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICB3cml0ZUJhcnJpZXIodDMsIHQyKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3Rb
dDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAK
KyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRf
Z2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisg
ICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxP
YmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4
XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQxCisgICAgc3RvcmVp
IHQyLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgdmFsdWVQcm9maWxlKHQyLCB0
MSwgdDMpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0
MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAg
IHdyaXRlQmFycmllcih0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbdDAsIHQxLCA4
XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9iYXNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9iYXNlKQorICAgIGRpc3BhdGNoKDUp
CisKKworX2xsaW50X29wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHM6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3Rz
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF9iYXNlOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93
aXRoX2Jhc2UpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX3Ro
aXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9y
ZXNvbHZlX3dpdGhfdGhpcykKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9nZXRfYnlf
aWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBn
ZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKKyAgICAj
IG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hhbmdlIGFu
eXRpbWUgaWYgZmFpbHMsIHNpbmNlCisgICAgIyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4gQXQgYmVz
dCB3ZSBnZXQgbHVja3kgYW5kIHRoZSBnZXRfYnlfaWQgd2lsbCBjb250aW51ZQorICAgICMgdG8g
dGFrZSBmYXN0IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBzbG93IHBh
dGgsIHdoaWNoIGlzIHdoYXQKKyAgICAjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXku
CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCisg
ICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFn
ZVt0M10sIHQwCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRC
eUlkU2xvdworICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDJd
LCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyXSwgdDIKKyAgICBzdG9yZWkgdDMs
IFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIs
IHQxLCA4XQorICAgIGxvYWRpIDMyW1BDXSwgdDEKKyAgICB2YWx1ZVByb2ZpbGUodDMsIHQyLCB0
MSkKKyAgICBkaXNwYXRjaCg5KQorCisub3BHZXRCeUlkU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfZ2V0X2J5X2lkKQorICAgIGRpc3BhdGNoKDkpCisKKworX2xsaW50X29wX2dl
dF9hcmd1bWVudHNfbGVuZ3RoOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50c0xlbmd0aFNsb3cKKyAgICBsb2FkaSBB
cmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MgorICAgIHN1YmkgMSwgdDIKKyAg
ICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0Miwg
UGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEFyZ3Vt
ZW50c0xlbmd0aFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9hcmd1bWVu
dHNfbGVuZ3RoKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9pZDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgMTZbUENd
LCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwg
Lm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRwIEpTT2JqZWN0
OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDAsIHQyKQorICAgIHdyaXRlQmFycmllcih0MCwg
dDIpCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbdDMsIHQxXQorICAgIHN0b3JlaSB0MiwgUGF5
bG9hZE9mZnNldFt0MywgdDFdCisgICAgZGlzcGF0Y2goOSkKKworLm9wUHV0QnlJZFNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pZCkKKyAgICBkaXNwYXRjaCg5KQor
CisKK21hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5
SWRTbG93KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0
dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMs
IC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVj
dDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGFkZHAgdDEsIHQzCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQxLCB0MikKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQy
KQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIDI0W1BDXSwgdDEKKyAg
ICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXQorICAgIGRpc3BhdGNoKDkpCitlbmQKKworX2xsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihtYWNybyAob2xkU3Ry
dWN0dXJlLCBzY3JhdGNoLCBzbG93KSBlbmQpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbDoKKyAgICBwdXRCeUlkVHJhbnNpdGlvbigKKyAgICAgICAgbWFjcm8gKG9s
ZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykKKyAgICAgICAgICAgIGNvbnN0IHByb3RvQ2VsbCA9
IG9sZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0
aGUgcHJvdG8KKyAgICAgICAgCisgICAgICAgICAgICBsb2FkcCAyOFtQQ10sIHNjcmF0Y2gKKyAg
ICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICAg
ICAgICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvcltzY3JhdGNoXSwgc2NyYXRjaAor
ICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAg
ICAgICAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVj
dHVyZV0sIE51bGxUYWcsIC5kb25lCisgICAgICAgIC5sb29wOgorICAgICAgICAgICAgbG9hZGkg
U3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJv
dG9DZWxsCisgICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0s
IG9sZFN0cnVjdHVyZQorICAgICAgICAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0s
IHNsb3cKKyAgICAgICAgICAgIGFkZHAgNCwgc2NyYXRjaAorICAgICAgICAgICAgYmluZXEgU3Ry
dWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAu
bG9vcAorICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kKQorCisKK19sbGludF9vcF9kZWxfYnlf
aWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9k
ZWxfYnlfaWQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9h
ZGkgOFtQQ10sIHQyCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6
bV9nbG9iYWxEYXRhW3QxXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6
OmpzQXJyYXlDbGFzc0luZm9bdDFdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBicG5lcSBbdDBdLCB0
MiwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QwXSwgdDMK
KyAgICBiaWFlcSB0MSwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDBdLCAub3BHZXRCeVZhbFNs
b3cKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9y
ICsgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3Zl
Y3RvciArIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKyAgICBiaWVxIHQyLCBFbXB0eVZh
bHVlVGFnLCAub3BHZXRCeVZhbFNsb3cKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQw
LCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGxvYWRp
IDE2W1BDXSwgdDAKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MCkKKyAgICBkaXNwYXRjaCg1
KQorCisub3BHZXRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9i
eV92YWwpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50X2J5X3Zh
bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkg
MTJbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRh
ZywgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MSwgSW50MzJUYWcsIHQyLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdykKKyAgICBhZGRp
IDEsIHQyCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDEK
KyAgICBiaWFlcSB0MiwgdDEsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbmVnaSB0Mgor
ICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09m
ZnNldFtjZnIsIHQyLCA4XSwgdDAKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXls
b2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2Nmciwg
dDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlz
cGF0Y2goNCkKKworLm9wR2V0QXJndW1lbnRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfZ2V0X2J5X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQ
Q10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQx
LCAub3BHZXRCeVBuYW1lU2xvdykKKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgYnBuZXEgdDEs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkg
OFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcs
IHQyLCAub3BHZXRCeVBuYW1lU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQwCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QyXSwgdDAKKyAgICBicG5lcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNo
ZWRTdHJ1Y3R1cmVbdDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDI0W1BDXSwgdDAK
KyAgICBsb2FkaSBbY2ZyLCB0MCwgOF0sIHQwCisgICAgc3ViaSAxLCB0MAorICAgIGJpYWVxIHQw
LCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9wR2V0
QnlQbmFtZVNsb3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDJdLCB0
MgorICAgIGxvYWRpIFRhZ09mZnNldFt0MiwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbdDIsIHQwLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDEs
IFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XQorICAgIGRpc3BhdGNoKDcpCisKKy5vcEdldEJ5UG5hbWVTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfcG5hbWUpCisgICAgZGlzcGF0Y2goNykKKworCitf
bGxpbnRfb3BfcHV0X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQx
LCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQodDAsIEludDMyVGFnLCB0MiwgLm9wUHV0QnlWYWxTbG93KQorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxE
YXRhW3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDBd
LCB0MAorICAgIGJwbmVxIFt0MV0sIHQwLCAub3BQdXRCeVZhbFNsb3cKKyAgICBiaWFlcSB0Miwg
SlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDFdLCAub3BQdXRCeVZhbFNsb3cKKyAgICBsb2FkcCBK
U0FycmF5OjptX3N0b3JhZ2VbdDFdLCB0MAorICAgIGJpZXEgQXJyYXlTdG9yYWdlOjptX3ZlY3Rv
ciArIFRhZ09mZnNldFt0MCwgdDIsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BQdXRCeVZhbEVtcHR5
Cisub3BQdXRCeVZhbFN0b3JlUmVzdWx0OgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MywgdDEsIHQzKQorICAgIHdyaXRlQmFycmllcih0MSwg
dDMpCisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3Qw
LCB0MiwgOF0KKyAgICBzdG9yZWkgdDMsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2Fk
T2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BQdXRCeVZhbEVtcHR5Ogor
ICAgIGFkZGkgMSwgQXJyYXlTdG9yYWdlOjptX251bVZhbHVlc0luVmVjdG9yW3QwXQorICAgIGJp
YiB0MiwgQXJyYXlTdG9yYWdlOjptX2xlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQK
KyAgICBhZGRpIDEsIHQyLCB0MQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX2xlbmd0
aFt0MF0KKyAgICBqbXAgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorCisub3BQdXRCeVZhbFNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV92YWwpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfZGVsX2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfcHV0X2J5X2luZGV4OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X2luZGV4KQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX3B1dF9nZXR0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9wdXRfZ2V0dGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX3B1dF9zZXR0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9wdXRfc2V0dGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xv
b3A6CisgICAgbm9wCitfbGxpbnRfb3Bfam1wOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBk
aXNwYXRjaEJyYW5jaCg0W1BDXSkKKworCitfbGxpbnRfb3Bfam1wX3Njb3BlczoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2ptcF9zY29wZXMpCisg
ICAgZGlzcGF0Y2goMCkKKworCittYWNybyBqdW1wVHJ1ZU9yRmFsc2UoY29uZGl0aW9uT3AsIHNs
b3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQodDEsIEJvb2xlYW5UYWcsIHQwLCAuc2xvdykKKyAgICBjb25kaXRpb25PcCh0MCwgLnRhcmdl
dCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENd
KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKHNsb3cpCisgICAgZGlzcGF0Y2goMCkKK2VuZAor
CitfbGxpbnRfb3BfbG9vcF9pZl90cnVlOgorICAgIG5vcAorX2xsaW50X29wX2p0cnVlOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2
YWx1ZSwgdGFyZ2V0KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hl
bHBlcl9qdHJ1ZSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKKyAgICBub3AKK19sbGlu
dF9vcF9qZmFsc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgK
KyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIHRhcmdldCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfamZhbHNlKQorCisKK21hY3JvIGVxdWFsTnVsbChjZWxsSGFu
ZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxIYW5kbGVyKFN0cnVjdHVyZTo6bV90
eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgz
KQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuaW1tZWRpYXRlOgor
ICAgIG9yaSAxLCB0MQorICAgIGltbWVkaWF0ZUhhbmRsZXIodDEsIC50YXJnZXQpCisgICAgZGlz
cGF0Y2goMykKK2VuZAorCitfbGxpbnRfb3BfamVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0Ym56IHZh
bHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAo
dmFsdWUsIHRhcmdldCkgYmllcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKyAgICAKKwor
X2xsaW50X29wX2puZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxs
KAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRieiB2YWx1ZSwgTWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJp
bmVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorCisKK19sbGludF9vcF9qbmVxX3B0cjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQ
Q10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BKbmVx
UHRyQnJhbmNoCisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5l
cVB0ckZhbGxUaHJvdWdoCisub3BKbmVxUHRyQnJhbmNoOgorICAgIGRpc3BhdGNoQnJhbmNoKDEy
W1BDXSkKKy5vcEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3Jv
IGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUsIGhlbHBlcikKKyAgICBsb2Fk
aSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQyLCB0MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQyLCB0
MykKKyAgICBiaW5lcSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MiwgSW50
MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5qdW1wVGFyZ2V0
KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgYmlhIHQwLCBMb3dlc3RUYWcs
IC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBi
aW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MywgZnQxCisgICAgam1wIC5vcDFO
b3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQor
Lm9wMU5vdEludFJlYWR5OgorICAgIGZpaTJkIHQxLCB0MCwgZnQwCisgICAgZG91YmxlQ29tcGFy
ZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMk5vdEludDoK
KyAgICBjaTJkIHQxLCBmdDAKKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBmaWky
ZCB0MywgdDIsIGZ0MQorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQor
ICAgIGRpc3BhdGNoKDQpCisKKy5qdW1wVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BD
XSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goMCkKK2Vu
ZAorCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfamxlc3MpCisKKworX2xsaW50X29wX2pubGVzczoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAor
ICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzcykKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVh
dGVyOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBs
ZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJkZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
amdyZWF0ZXIpCisKKworX2xsaW50X29wX2puZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRl
cSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0
YXJnZXQpIGJkbHRlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRf
aGVscGVyX2puZ3JlYXRlcikKKworCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzZXE6CisgICAgbm9w
CitfbGxpbnRfb3Bfamxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcSBs
ZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzc2VxKQor
CisKK19sbGludF9vcF9qbmxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFy
ZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQs
IHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0dW4g
bGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzZXEp
CisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcmVxOgorICAgIG5vcAorX2xsaW50X29wX2pn
cmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXEgbGVmdCwgcmlnaHQs
IHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXJlcSkKKworCitfbGxp
bnRfb3Bfam5ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdHVuIGxlZnQs
IHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcmVxKQor
CisKK19sbGludF9vcF9sb29wX2hpbnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNr
U3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zd2l0
Y2hfaW1tOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAg
bG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQor
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJl
RGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MyAgICMgRklY
TUU6IHdvdWxkIGJlIG5pY2UgdG8gcGVlcGhvbGUgdGhpcyEKKyAgICBsb2FkcCBDb2RlQmxvY2s6
OlJhcmVEYXRhOjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BT
d2l0Y2hJbW1Ob3RJbnQKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAg
ICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9m
ZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVtcFRh
YmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDMKKyAgICBsb2Fk
aSBbdDMsIHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAor
ICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoSW1tTm90SW50Ogor
ICAgIGJpYiB0MSwgTG93ZXN0VGFnLCAub3BTd2l0Y2hJbW1TbG93ICAjIEdvIHRvIHNsb3cgcGF0
aCBpZiBpdCdzIGEgZG91YmxlLgorLm9wU3dpdGNoSW1tRmFsbFRocm91Z2g6CisgICAgZGlzcGF0
Y2hCcmFuY2goOFtQQ10pCisKKy5vcFN3aXRjaEltbVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3N3aXRjaF9pbW0pCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3Bfc3dp
dGNoX2NoYXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAg
ICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDAp
CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3Jh
cmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQzCisgICAg
bG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzICsg
VmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVxIHQx
LCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisg
ICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0MAorICAgIGJpbmVxIFN0cmluZ0ltcGw6
Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU3Ry
aW5nSW1wbDo6bV9kYXRhOFt0MF0sIHQxCisgICAgYnRpbnogU3RyaW5nSW1wbDo6bV9oYXNoQW5k
RmxhZ3NbdDBdLCBIYXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0Y2hDaGFyOEJpdAorICAgIGxv
YWRoIFt0MV0sIHQwCisgICAgam1wIC5vcFN3aXRjaENoYXJSZWFkeQorLm9wU3dpdGNoQ2hhcjhC
aXQ6CisgICAgbG9hZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENoYXJSZWFkeToKKyAgICBzdWJpIFNp
bXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxl
OjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENoYXJGYWxs
VGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCisgICAgYnRp
eiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZz
ZXQodDEpCisKKy5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4
W1BDXSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9zdHJpbmcpCisgICAgZGlzcGF0
Y2goMCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGJ0aXogMTJbUENdLCAub3BOZXdGdW5jVW5jaGVja2VkCisgICAgbG9hZGkgNFtQQ10sIHQxCisg
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BOZXdGdW5j
RG9uZQorLm9wTmV3RnVuY1VuY2hlY2tlZDoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
bmV3X2Z1bmMpCisub3BOZXdGdW5jRG9uZToKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9uZXdfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9uZXdfZnVuY19leHApCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBkb0Nh
bGwoaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAg
ICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93KQorICAgIGJp
bmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgYWRkcCAy
NCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5z
IHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWlu
W3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNdCisgICAg
c3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBsb2FkaSA4IC0g
MjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJd
CisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNdCisgICAgc3RvcmVpIHQyLCBBcmd1bWVu
dENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsg
VGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFnT2Zmc2V0
W3QzXQorICAgIG1vdmUgdDMsIGNmcgorICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86Om1hY2hp
bmVDb2RlVGFyZ2V0W3QxXQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworLm9wQ2FsbFNsb3c6
CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfY2FsbDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY2FsbCkKKwor
CitfbGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwo
X2xsaW50X2hlbHBlcl9jb25zdHJ1Y3QpCisKKworX2xsaW50X29wX2NhbGxfdmFyYXJnczoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIF9sbGludF9oZWxwZXJf
Y2FsbF92YXJhcmdzKQorCisKK19sbGludF9vcF9jYWxsX2V2YWw6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIAorICAgICMgRXZhbCBpcyBleGVjdXRlZCBpbiBvbmUgb2YgdHdvIG1vZGVzOgor
ICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSByZWFsbHkgaW52b2tpbmcgZXZhbCgp
IGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBleGVjdXRpb24gaXMgcGVyZm9tZWQgZW50aXJl
bHkgaW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBpdAorICAgICMgICAgcmV0dXJucyB0aGUgUEMgb2Yg
YSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0aGUgcmV0dXJuIHZhbHVlCisgICAgIyAgICB0
aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgICMKKyAgICAjIDIpIFdlIGZpbmQgdGhhdCB3ZSdy
ZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwoKSB0aGF0IGlzIG5vdAorICAgICMgICAg
dGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVscGVyIHJldHVybnMgdGhlIFBDIG9mIHRoZSB0aGlu
ZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQuCisgICAgIworICAgICMgVGhpcyBh
bGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywgd2hpY2ggd291bGQgcmVxdWlyZSBhIHRvdGFs
IG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0ZSB0aGF0IGNhbm5vdCBiZSBlYXNp
bHkgcGFja2VkIGludG8gdHdvCisgICAgIyByZWdpc3RlcnMgKEMgZnVuY3Rpb25zIGNhbiByZXR1
cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5KToKKyAgICAjCisgICAgIyAtIFRoZSBjYWxs
IGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBtb2RpZmllZAor
ICAgICMgICBieSB0aGUgaGVscGVyLCBidXQgdGhlIGNvbnZlbnRpb24gaXMgdGhhdCBpdCByZXR1
cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0b3RhbGx5IGNsZWFyIGlmIHRoYXQncyBuZWNlc3Nh
cnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUuCisgICAgIyAgIEJ1dCB0aGF0J3Mgb3Vy
IHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRlciBzbyB3ZSBzdGljayB3aXRoIGl0LgorICAg
ICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBoZWxwZXIgc3VjY2Vzc2Z1bGx5IGV4ZWN1
dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAjICAgdGhlIHJldHVybiB2YWx1ZSwgb3IgZGlkIG5v
dCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3IgdXMKKyAgICAjICAgdG8gY2FsbC4K
KyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAgICAjICAgLSBUaGUgSlMgcmV0dXJuIHZhbHVlICh0
d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisgICAgIyAgIC0gVGhlIFBDIHRvIGNhbGwuCisgICAg
IworICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2llciB0byBqdXN0IGFsd2F5cyBoYXZlIHRo
aXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBhIFBDIHRvIGNhbGwsIGFuZCB0aGF0IFBDIG1h
eSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAorICAgICMgcmV0dXJucyB0aGUgSlMgdmFsdWUg
dGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAKKyAgICBzbG93UGF0aEZvckNhbGwoNCwgX2xs
aW50X2hlbHBlcl9jYWxsX2V2YWwpCisKKworX2xsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50Ogor
ICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYWN0aXZhdGlv
bjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkg
OFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFn
LCAub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQx
LCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkCisub3BU
ZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rl
YXJfb2ZmX2FjdGl2YXRpb24pCisub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQ6CisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYXJndW1lbnRzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdWJpIDEsIHQwICAgIyBHZXQg
dGhlIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcgorICAgIGJpZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZAorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCisub3BUZWFyT2Zm
QXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGRvUmV0dXJu
KCkKKyAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgIGxvYWRwIENhbGxlckZyYW1lW2Nm
cl0sIGNmcgorICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAgIHJl
dAorZW5kCisKK19sbGludF9vcF9yZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNr
U3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRf
b3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENd
LCB0MworICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdmFsdWVQcm9maWxlKHQxLCB0MCwgdDMp
CisgICAgdHJhY2VFeGVjdXRpb24oKSAjIE5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSBpdCB3b3Vs
ZCBjbG9iYmVyIHQxLCB0MAorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3JldF9vYmpl
Y3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZv
ckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFJldE9iamVjdE9yVGhp
c05vdE9iamVjdAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJi
YiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlw
ZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgZG9SZXR1cm4oKQorCisub3BSZXRP
YmplY3RPclRoaXNOb3RPYmplY3Q6CisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3Bf
bWV0aG9kX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIGlnbm9yZSBtZXRo
b2QgY2hlY2tzIGFuZCB1c2Ugbm9ybWFsIGdldF9ieV9pZCBvcHRpbWl6YXRpb25zLgorICAgIGRp
c3BhdGNoKDEpCisKKworX2xsaW50X29wX3N0cmNhdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N0cmNhdCkKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF90b19wcmltaXRpdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDhbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9QcmltaXRpdmVJc0lt
bQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJibmVxIFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BU
b1ByaW1pdGl2ZVNsb3dDYXNlCisub3BUb1ByaW1pdGl2ZUlzSW1tOgorICAgIHN0b3JlaSB0MSwg
VGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9QcmltaXRpdmVTbG93Q2FzZToKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fcHJpbWl0aXZlKQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX2dldF9wbmFtZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfcG5hbWVzKQorICAgIGRpc3BhdGNoKDApICMgVGhlIGhl
bHBlciBlaXRoZXIgYWR2YW5jZXMgdGhlIFBDIG9yIGp1bXBzIHVzIHRvIHNvbWV3aGVyZSBlbHNl
LgorCisKK19sbGludF9vcF9uZXh0X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSAxMltQQ10sIHQxCisgICAgbG9hZGkgMTZbUENdLCB0MgorICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0sIHQwCisgICAgYmllcSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQy
LCA4XSwgLm9wTmV4dFBuYW1lRW5kCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcjo6bV9qc1N0cmluZ3NbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDhdLCB0MworICAg
IGFkZGkgMSwgdDAKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAg
ICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkg
OFtQQ10sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAgICBicG5lcSB0MSwgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93Cisg
ICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0
Ml0sIHQwCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKKyAgICBi
dHB6IFt0MF0sIC5vcE5leHRQbmFtZVRhcmdldAorLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVM
b29wOgorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFt0MV0sIE51
bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBl
ICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
Ml0sIHQxCisgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBhZGRwIDQs
IHQwCisgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wCisub3BO
ZXh0UG5hbWVUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMjRbUENdKQorCisub3BOZXh0UG5h
bWVFbmQ6CisgICAgZGlzcGF0Y2goNykKKworLm9wTmV4dFBuYW1lU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfbmV4dF9wbmFtZSkgIyBUaGlzIGVpdGhlciBrZWVwcyB0aGUgUEMg
d2hlcmUgaXQgd2FzIChjYXVzaW5nIHVzIHRvIGxvb3ApIG9yIHNldHMgaXQgdG8gdGFyZ2V0Lgor
ICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3B1c2hfc2NvcGU6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX3Njb3BlKQorICAgIGRp
c3BhdGNoKDIpCisKKworX2xsaW50X29wX3BvcF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3BvcF9zY29wZSkKKyAgICBkaXNwYXRjaCgx
KQorCisKK19sbGludF9vcF9wdXNoX25ld19zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfbmV3X3Njb3BlKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX2NhdGNoOgorICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAg
ZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKKyAgICAjIG1hY2hp
bmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBh
bmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2VlIF9s
bGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRoZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wg
Y2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0aHJvd2luZworICAgICMgY29kZSBt
dXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93aW5nIHRvIHRoZSBpbnRlcnByZXRlciwg
YW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JU
aHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxE
YXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENG
b3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXls
b2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRh
Z09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsg
UGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRh
OjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAgICAgIAorICAgIGxvYWRpIDRbUENdLCB0Mgor
ICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwg
VGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdHJhY2VFeGVjdXRpb24oKSAgIyBUaGlzIG5lZWRz
IHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIgdDAsIHQxLCB0Miwg
dDMgYWJvdmUuCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3c6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvdykKKyAgICBk
aXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3I6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvd19yZWZlcmVu
Y2VfZXJyb3IpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfanNyOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBhZGRpIDMgKiA0LCBQQywgdDEK
KyAgICBzdG9yZWkgdDEsIFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQor
CisKK19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBsb2FkcCBbY2ZyLCB0MCwgOF0sIFBDCisgICAgZGlzcGF0Y2goMCkKKworCitf
bGxpbnRfb3BfZGVidWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9kZWJ1ZykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcm9maWxl
X3dpbGxfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYnRweiBKSVRTdGFja0ZyYW1l
OjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQorLm9wUHJvZmls
ZVdpbGxDYWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wcm9maWxlX2Rp
ZF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidHB6IEpJVFN0YWNrRnJhbWU6OmVu
YWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIC5vcFByb2ZpbGVEaWRDYWxsRG9uZQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQorLm9wUHJvZmlsZURpZENh
bGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2VuZDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50
X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmU6CisgICAgIyBXaGVuIHRocm93aW5nIGZyb20g
dGhlIGludGVycHJldGVyIChpLmUuIHRocm93aW5nIGZyb20gTExJbnRIZWxwZXJzKSwgc28KKyAg
ICAjIHRoZSB0aHJvdyB0YXJnZXQgaXMgbm90IG5lY2Vzc2FyaWx5IGludGVycHJldGVkIGNvZGUs
IHdlIGNvbWUgdG8gaGVyZS4KKyAgICAjIFRoaXMgZXNzZW50aWFsbHkgZW11bGF0ZXMgdGhlIEpJ
VCdzIHRocm93aW5nIHByb3RvY29sLgorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERh
dGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFd
LCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQor
CisKK19sbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lOgorICAgIHByZXNlcnZlUmV0
dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxE
YXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3Qx
XSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0K
KworCisjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2Ug
ZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KKyMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIg
YXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQKKyMgYXMgbXVj
aC4KKworbWFjcm8gbm90U3VwcG9ydGVkKCkKKyAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgICAg
ICBjcmFzaCgpCisgICAgZWxzZQorICAgICAgICAjIFdlIHNob3VsZCB1c2Ugd2hhdGV2ZXIgdGhl
IHNtYWxsZXN0IHBvc3NpYmxlIGluc3RydWN0aW9uIGlzLCBqdXN0IHRvCisgICAgICAgICMgZW5z
dXJlIHRoYXQgdGhlcmUgaXMgYSBnYXAgYmV0d2VlbiBpbnN0cnVjdGlvbiBsYWJlbHMuIElmIG11
bHRpcGxlCisgICAgICAgICMgc21hbGxlc3QgaW5zdHJ1Y3Rpb25zIGV4aXN0LCB3ZSBzaG91bGQg
cGljayB0aGUgb25lIHRoYXQgaXMgbW9zdAorICAgICAgICAjIGxpa2VseSByZXN1bHQgaW4gZXhl
Y3V0aW9uIGJlaW5nIGhhbHRlZC4gQ3VycmVudGx5IHRoYXQgaXMgdGhlIGJyZWFrCisgICAgICAg
ICMgaW5zdHJ1Y3Rpb24gb24gYWxsIGFyY2hpdGVjdHVyZXMgd2UncmUgaW50ZXJlc3RlZCBpbi4g
KEJyZWFrIGlzIGludDMKKyAgICAgICAgIyBvbiBJbnRlbCwgd2hpY2ggaXMgMSBieXRlLCBhbmQg
YmtwdCBvbiBBUk12Nywgd2hpY2ggaXMgMiBieXRlcy4pCisgICAgICAgIGJyZWFrCisgICAgZW5k
CitlbmQKKworX2xsaW50X29wX2dldF9hcnJheV9sZW5ndGg6CisgICAgbm90U3VwcG9ydGVkKCkK
KworX2xsaW50X29wX2dldF9ieV9pZF9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxp
bnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxp
bnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxp
bnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGlu
dF9vcF9nZXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2dldHRlcl9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2dldHRlcl9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2dldHRlcl9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9n
ZXRfYnlfaWRfcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9p
ZF9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfc3RyaW5nX2xlbmd0
aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX2dlbmVyaWM6Cisg
ICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9yZXBsYWNlOgorICAgIG5v
dFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbjoKKyAgICBub3RT
dXBwb3J0ZWQoKQorCisKKyMgSW5kaWNhdGUgdGhlIGVuZCBvZiBMTEludC4KK19sbGludF9lbmQ6
CisgICAgY3Jhc2goKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcu
aCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKKyNpbmNsdWRlICJMTEludEFz
c2VtYmx5LmgiCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorI2RlZmluZSBMb3dMZXZlbEludGVycHJldGVyX2gK
KworI2luY2x1ZGUgIk9wY29kZS5oIgorCisjZGVmaW5lIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wo
b3Bjb2RlLCBsZW5ndGgpIGV4dGVybiAiQyIgdm9pZCBsbGludF8jI29wY29kZSgpOworICAgIEZP
Ul9FQUNIX09QQ09ERV9JRChMTElOVF9JTlNUUlVDVElPTl9ERUNMKTsKKyN1bmRlZiBMTElOVF9J
TlNUUlVDVElPTl9ERUNMCisKK2V4dGVybiAiQyIgdm9pZCBsbGludF9iZWdpbigpOworZXh0ZXJu
ICJDIiB2b2lkIGxsaW50X2VuZCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Byb2dyYW1fcHJv
bG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9ldmFsX3Byb2xvZ3VlKCk7CitleHRlcm4g
IkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIg
dm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKCk7CitleHRlcm4gIkMi
IHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIg
dm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKCk7CitleHRlcm4g
IkMiIHZvaWQgbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQoKTsKK2V4dGVybiAiQyIgdm9pZCBs
bGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lKCk7CitleHRlcm4gIkMiIHZvaWQgbGxp
bnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSgpOworCisjZW5kaWYgLy8gTG93TGV2ZWxJ
bnRlcnByZXRlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12
Ny5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12
Ny5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fy
bXY3LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVyCisgIGRlZiBpbml0aWFs
aXplKG5hbWUpCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFybVY3T3BlcmFu
ZAorICAgIEBuYW1lCisgIGVuZAorZW5kCisKK0FSTXY3X0RBVEFfUkVHID0gU3BlY2lhbFJlZ2lz
dGVyLm5ldygiaXAiKQorQVJNdjdfQUREUl9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyMyIp
CisKK2RlZiBtb3ZlSW1tZWRpYXRlKHZhbHVlLCByZWdpc3RlcikKKyAgIyBDdXJyZW50bHkgd2Ug
b25seSBoYW5kbGUgdGhlIHNpbXBsZSBjYXNlcywgYW5kIGZhbGwgYmFjayB0byBtb3YvbW92dCBm
b3IgdGhlIGNvbXBsZXggb25lcy4KKyAgaWYgdmFsdWUgPj0gMCAmJiB2YWx1ZSA8IDI1NgorICAg
ICRhc20ucHV0cyAibW92dyBcIyN7dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisg
IGVsc2lmICh+dmFsdWUpID49IDAgJiYgKH52YWx1ZSkgPCAyNTYKKyAgICAkYXNtLnB1dHMgIm12
bncgXCMje352YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzZQorICAgICRh
c20ucHV0cyAibW92dyBcIyN7dmFsdWUgJiAweGZmZmZ9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFu
ZH0iCisgICAgaWYgKHZhbHVlICYgMHhmZmZmMDAwMCkgIT0gMAorICAgICAgJGFzbS5wdXRzICJt
b3Z0IFwjI3t2YWx1ZSA+PiAxNn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQK
KyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAg
Y2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiCisgICAgICAicjAiCisgICAgd2hl
biAidDEiLCAiYTEiLCAicjEiCisgICAgICAicjEiCisgICAgd2hlbiAidDIiLCAiYTIiCisgICAg
ICAicjIiCisgICAgd2hlbiAiYTMiCisgICAgICAicjMiCisgICAgd2hlbiAidDMiCisgICAgICAi
cjQiCisgICAgd2hlbiAidDQiCisgICAgICAicjciCisgICAgd2hlbiAiY2ZyIgorICAgICAgInI1
IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3
UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3Np
YmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1W
N0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVy
SUQKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIsICJm
ciIKKyAgICAgICJkMCIKKyAgICB3aGVuICJmcjEiLAorICAgICAgImQxIgorICAgIHdoZW4gImZy
MiIKKyAgICAgICJkMiIKKyAgICB3aGVuICJmcjMiCisgICAgICAiZDMiCisgICAgd2hlbiAiZnI0
IgorICAgICAgImQ0IgorICAgIHdoZW4gImZyNSIKKyAgICAgICJkNSIKKyAgICBlbHNlCisgICAg
ICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1l
bW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQK
KyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisg
ICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3
T3BlcmFuZAorICAgIHJhaXNlICJJbnZhbGlkIGltbWVkaWF0ZSAje3ZhbHVlfSIgaWYgdmFsdWUg
PCAwIG9yIHZhbHVlID4gMjU1CisgICAgIiMke3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYgYXJt
VjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9z
c2libGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFy
bVY3TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkIHNlbGYKKyAgZW5kCitlbmQKKworbW9kdWxlIEFS
TXY3QWRkcmVzc1V0aWxpdGllcworICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgc2VsZi5h
cm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICAkYXNtLnB1dHMgIlx0bGRyICN7
c2VsZi5hcm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFuZH0sICN7QVJNdjdfREFUQV9SRUcuYXJtVjdP
cGVyYW5kfSIKKyAgICB5aWVsZCBBUk12N19EQVRBX1JFRworICAgICRhc20ucHV0cyAiXHRzdHIg
I3tBUk12N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9LCAje3NlbGYuYXJtVjdQb3NzaWJseU1lbW9y
eU9wZXJhbmR9IgorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGluY2x1ZGUgQVJNdjdB
ZGRyZXNzVXRpbGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFu
ZAorICAgIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+IDB4ZmZmCisg
ICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgICAgZW5k
CisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zm
c2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAgICJbI3tiYXNl
LmFybVY3T3BlcmFuZH0sICN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfV0iCisgICAgZWxz
ZQorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tvZmZzZXQuYXJtVjdPcGVyYW5kfV0i
CisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBpbmNsdWRlIEFSTXY3
QWRkcmVzc1V0aWxpdGllcworCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJh
bmQKKyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAgICAgbW92ZUltbWVkaWF0ZShvZmZzZXQu
dmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICAgICAgJGFzbS5wdXRzICJhZGR3ICN7QVJNdjdfQURE
Ul9SRUcuYXJtVjdPcGVyYW5kfSwgI3tiYXNlLmFybVY3T3BlcmFuZH0iCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZh
bHVlICE9IDAKKyAgICAgICJbI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9LCAje2luZGV4
LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGV9XSIKKyAgICBlbHNlCisgICAgICAiWyN7YmFz
ZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGV9XSIK
KyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgIGluY2x1ZGUg
QVJNdjdBZGRyZXNzVXRpbGl0aWVzCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1v
cnlPcGVyYW5kCisgICAgbW92ZUltbWVkaWF0ZShhZGRyZXNzLnZhbHVlLCBBUk12N19BRERSX1JF
RykKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICAiWyN7
QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfV0iCisgIGVuZAorZW5kCisKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMDggQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJi
YWNrZW5kcyIKK3JlcXVpcmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVp
cmUgInBhcnNlciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitj
bGFzcyBBc3NlbWJsZXIKKyAgZGVmIGluaXRpYWxpemUob3V0cCkKKyAgICBAb3V0cCA9IG91dHAK
KyAgICBAc3RhdGUgPSA6Y3BwCisgIGVuZAorICAKKyAgZGVmIGVudGVyQXNtCisgICAgQG91dHAu
cHV0cyAiYXNtICgiCisgICAgQHN0YXRlID0gOmFzbQorICBlbmQKKyAgCisgIGRlZiBsZWF2ZUFz
bQorICAgIEBvdXRwLnB1dHMgIik7IgorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBk
ZWYgaW5Bc20KKyAgICBlbnRlckFzbQorICAgIHlpZWxkCisgICAgbGVhdmVBc20KKyAgZW5kCisg
IAorICBkZWYgcHV0cyhsaW5lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAg
IEBvdXRwLnB1dHMoKGxpbmUgKyAiXG4iKS5pbnNwZWN0KQorICBlbmQKKyAgCisgIGRlZiBjb21t
ZW50KHRleHQpCisgICAgQG91dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgZW5kCitlbmQKKworYXNt
RmlsZSA9IEFSR1Yuc2hpZnQKK29mZnNldHNGaWxlID0gQVJHVi5zaGlmdAorb3V0cHV0RmxubSA9
IEFSR1Yuc2hpZnQKKworb2Zmc2V0c0xpc3QsIGNvbmZpZ0luZGV4ID0gb2Zmc2V0c0FuZENvbmZp
Z3VyYXRpb25JbmRleChvZmZzZXRzRmlsZSkKK2lucHV0RGF0YSA9IElPOjpyZWFkKGFzbUZpbGUp
CisKK2lucHV0SGFzaCA9CisgICIvLyBvZmZsaW5lYXNtIGlucHV0IGhhc2g6ICIgKyBEaWdlc3Q6
OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0YSkgKworICAiICIgKyBEaWdlc3Q6OlNIQTEuaGV4ZGln
ZXN0KChvZmZzZXRzTGlzdCArIFtjb25maWdJbmRleF0pLmpvaW4oJyAnKSkKKworaWYgRmlsZVRl
c3QuZXhpc3Q/IG91dHB1dEZsbm0KKyAgRmlsZS5vcGVuKG91dHB1dEZsbm0sICJyIikgeworICAg
IHwgaW5wIHwKKyAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAgIGlmIGZpcnN0TGluZSBhbmQg
Zmlyc3RMaW5lLmNob21wID09IGlucHV0SGFzaAorICAgICAgJHN0ZGVyci5wdXRzICJOb3RoaW5n
IGNoYW5nZWQuIgorICAgICAgZXhpdCAwCisgICAgZW5kCisgIH0KK2VuZAorCitGaWxlLm9wZW4o
b3V0cHV0RmxubSwgInciKSB7CisgIHwgb3V0cCB8CisgICRvdXRwdXQgPSBvdXRwCisgICRvdXRw
dXQucHV0cyBpbnB1dEhhc2gKKyAgCisgICRhc20gPSBBc3NlbWJsZXIubmV3KCRvdXRwdXQpCisg
IAorICBhc3QgPSBwYXJzZShsZXgoaW5wdXREYXRhKSkKKyAgCisgIGZvclNldHRpbmdzKGNvbXB1
dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpW2NvbmZpZ0luZGV4XSwgYXN0KSB7CisgICAgfCBj
b25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgYXNzZXJ0Q29uZmln
dXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICAgIGxvd0xldmVsQVNUID0gbG93TGV2ZWxBU1Qu
cmVzb2x2ZSgqYnVpbGRPZmZzZXRzTWFwKGxvd0xldmVsQVNULCBvZmZzZXRzTGlzdCkpCisgICAg
ZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJh
Y2tlbmQpIHsKKyAgICAgICRhc20uaW5Bc20geworICAgICAgICBsb3dMZXZlbEFTVC5sb3dlcihi
YWNrZW5kKQorICAgICAgfQorICAgIH0KKyAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYXN0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MTcgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIEJhc2UgdXRpbGl0eSB0eXBlcyBmb3IgdGhlIEFTVC4gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisKKyMgVmFsaWQgbWV0aG9kcyBmb3IgTm9kZToKKyMKKyMgbm9kZS5jaGlsZHJlbiAtPiBS
ZXR1cm5zIGFuIGFycmF5IG9mIGltbWVkaWF0ZSBjaGlsZHJlbi4KKyMKKyMgbm9kZS5kZXNjZW5k
ZW50cyAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBzdHJpY3QgZGVzY2VuZGFudHMgKGNoaWxk
cmVuCisjICAgICBhbmQgY2hpbGRyZW4gb2YgY2hpbGRyZW4sIHRyYW5zaXRpdmVseSkuCisjCisj
IG5vZGUuZmxhdHRlbiAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHN0cmljdCBk
ZXNjZW5kYW50cyBhbmQKKyMgICAgIHRoZSBub2RlIGl0c2VsZi4KKyMKKyMgbm9kZS5maWx0ZXIo
dHlwZSkgLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRob3NlIGVsZW1lbnRzIGluCisj
ICAgICBub2RlLmZsYXR0ZW4gdGhhdCBhcmUgb2YgdGhlIGdpdmVuIHR5cGUgKGlzX2E/IHR5cGUg
cmV0dXJucyB0cnVlKS4KKyMKKyMgbm9kZS5tYXBDaGlsZHJlbnt8dnwgLi4ufSAtPiBSZXR1cm5z
IGEgbmV3IG5vZGUgd2l0aCBhbGwgY2hpbGRyZW4KKyMgICAgIHJlcGxhY2VkIGFjY29yZGluZyB0
byB0aGUgZ2l2ZW4gYmxvY2suCisjCisjIEV4YW1wbGVzOgorIworIyBub2RlLmZpbHRlcihTZXR0
aW5nKS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzZXR0aW5ncyB0aGF0IHRoZSBBU1Qncwor
IyAgICAgSWZUaGVuRWxzZSBibG9ja3MgZGVwZW5kIG9uLgorIworIyBub2RlLmZpbHRlcihTdHJ1
Y3RPZmZzZXQpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHN0cnVjdHVyZSBvZmZzZXRzCisj
ICAgICB0aGF0IHRoZSBBU1QgZGVwZW5kcyBvbi4KKworY2xhc3MgTm9kZQorICBhdHRyX3JlYWRl
ciA6Y29kZU9yaWdpbgorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBAY29k
ZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgZW5kCisgIAorICBkZWYgY29kZU9yaWdpblN0cmluZwor
ICAgICJsaW5lIG51bWJlciAje0Bjb2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYgZGVzY2Vu
ZGFudHMKKyAgICBjaGlsZHJlbi5jb2xsZWN0e3x2fCB2LmZsYXR0ZW59LmZsYXR0ZW4KKyAgZW5k
CisgIAorICBkZWYgZmxhdHRlbgorICAgIFtzZWxmXSArIGRlc2NlbmRhbnRzCisgIGVuZAorICAK
KyAgZGVmIGZpbHRlcih0eXBlKQorICAgIGZsYXR0ZW4uc2VsZWN0e3x2fCB2LmlzX2E/IHR5cGV9
CisgIGVuZAorZW5kCisKK2NsYXNzIE5vQ2hpbGRyZW4gPCBOb2RlCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBbXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIHNlbGYKKyAg
ZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0S2V5CisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3Qs
IDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUoc3RydWN0LCBmaWVsZCkKKyAgICBAc3RydWN0
ID0gc3RydWN0CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5kCisgIAorICBkZWYgaGFzaAorICAg
IEBzdHJ1Y3QuaGFzaCArIEBmaWVsZC5oYXNoICogMworICBlbmQKKyAgCisgIGRlZiBlcWw/KG90
aGVyKQorICAgIEBzdHJ1Y3QgPT0gb3RoZXIuc3RydWN0IGFuZCBAZmllbGQgPT0gb3RoZXIuZmll
bGQKKyAgZW5kCitlbmQKKyAgICAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IEFTVCBub2Rlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNz
IFN0cnVjdE9mZnNldCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxk
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxk
CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvckZpZWxkKGNv
ZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAga2V5ID0gU3RydWN0T2Zmc2V0S2V5Lm5ldyhz
dHJ1Y3QsIGZpZWxkKQorICAgIAorICAgIHVubGVzcyBAQG1hcHBpbmdba2V5XQorICAgICAgQEBt
YXBwaW5nW2tleV0gPSBTdHJ1Y3RPZmZzZXQubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQp
CisgICAgZW5kCisgICAgQEBtYXBwaW5nW2tleV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICIje3N0cnVjdH06OiN7ZmllbGR9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIpCisgICAg
aWYgQHN0cnVjdCAhPSBvdGhlci5zdHJ1Y3QKKyAgICAgIHJldHVybiBAc3RydWN0IDw9PiBvdGhl
ci5zdHJ1Y3QKKyAgICBlbmQKKyAgICBAZmllbGQgPD0+IG90aGVyLmZpZWxkCisgIGVuZAorZW5k
CisKK2NsYXNzIFNpemVvZiA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVjdAorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9Cisg
IAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICB1bmxlc3MgQEBt
YXBwaW5nW3N0cnVjdF0KKyAgICAgIEBAbWFwcGluZ1tzdHJ1Y3RdID0gU2l6ZW9mLm5ldyhjb2Rl
T3JpZ2luLCBzdHJ1Y3QpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW3N0cnVjdF0KKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICJzaXplb2YgI3tAc3RydWN0fSIKKyAgZW5kCisgIAorICBkZWYg
PD0+KG90aGVyKQorICAgIEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICBlbmQKK2VuZAorCitj
bGFzcyBJbW1lZGlhdGUgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDp2YWx1ZQorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFsdWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7dmFsdWV9
IgorICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBvdGhlci5pc19hPyBJbW1lZGlhdGUg
YW5kIG90aGVyLnZhbHVlID09IEB2YWx1ZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlh
dGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxk
cmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisg
ICAgQWRkSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEBy
aWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSArICN7cmln
aHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzIDwgTm9kZQorICBh
dHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAor
ICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0
LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgU3ViSW1tZWRpYXRl
cy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAtICN7cmlnaHQuZHVtcH0pIgorICBl
bmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVm
dCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJp
Z2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVu
ZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTXVsSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdp
biwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiKCN7bGVmdC5kdW1wfSAqICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFz
cyBOZWdJbW1lZGlhdGUgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
Y2hpbGQgPSBjaGlsZAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAY2hpbGRdCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTmVnSW1tZWRpYXRlLm5ldyhjb2RlT3Jp
Z2luLCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoLSN7QGNo
aWxkLmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4K
KyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5h
bWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAor
ICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1l
KQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFJl
Z2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25h
bWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNz
IEZQUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNl
bGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0K
KyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IEZQUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFt
ZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUgPCBOb0NoaWxkcmVuCisgIGF0
dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBt
YXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAg
ICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBWYXJpYWJs
ZS5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVz
cyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2UsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIGJhc2UsIG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBiYXNlID0gYmFzZQorICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBbQGJhc2UsIEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
CisgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBvZmZz
ZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5k
dW1wfV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleCA8IE5vZGUKKyAgYXR0cl9yZWFk
ZXIgOmJhc2UsIDppbmRleCwgOnNjYWxlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBiYXNlID0gYmFzZQorICAgIEBpbmRleCA9IGluZGV4CisgICAgQHNjYWxlID0g
c2NhbGUKKyAgICByYWlzZSB1bmxlc3MgWzEsIDIsIDQsIDhdLm1lbWJlcj8gQHNjYWxlCisgICAg
QG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwg
QGluZGV4LCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEJhc2VJ
bmRleC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBpbmRleCksIEBzY2Fs
ZSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0
LmR1bXB9WyN7YmFzZS5kdW1wfSwgI3tpbmRleC5kdW1wfSwgI3tzY2FsZX1dIgorICBlbmQKK2Vu
ZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDph
ZGRyZXNzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBhZGRyZXNzKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQGFkZHJlc3MgPSBhZGRyZXNzCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICAiI3thZGRyZXNzLmR1bXB9W10iCisgIGVuZAorZW5kCisKK2NsYXNzIEluc3Ry
dWN0aW9uIDwgTm9kZQorICBhdHRyX3JlYWRlciA6b3Bjb2RlLCA6b3BlcmFuZHMKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG9wY29kZSwgb3BlcmFuZHMpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAb3Bjb2RlID0gb3Bjb2RlCisgICAgQG9wZXJhbmRzID0gb3BlcmFuZHMK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBvcGVyYW5kcworICBlbmQKKyAgCisgIGRl
ZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgQG9w
Y29kZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
XHQiICsgb3Bjb2RlLnRvX3MgKyAiICIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9Lmpv
aW4oIiwgIikKKyAgZW5kCitlbmQKKworY2xhc3MgRXJyb3IgPCBOb0NoaWxkcmVuCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICJcdGVycm9yIgorICBlbmQKK2VuZAorCitjbGFzcyBDb25zdERlY2wg
PCBOb2RlCisgIGF0dHJfcmVhZGVyIDp2YXJpYWJsZSwgOnZhbHVlCisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAdmFyaWFibGUgPSB2YXJpYWJsZQorICAgIEB2YWx1ZSA9IHZhbHVlCisgIGVuZAorICAK
KyAgZGVmIGNoaWxkcmVuCisgICAgW0B2YXJpYWJsZSwgQHZhbHVlXQorICBlbmQKKyAgCisgIGRl
ZiBtYXBDaGlsZHJlbgorICAgIENvbnN0RGVjbC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEB2YXJp
YWJsZSksICh5aWVsZCBAdmFsdWUpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImNvbnN0
ICN7QHZhcmlhYmxlLmR1bXB9ID0gI3tAdmFsdWUuZHVtcH0iCisgIGVuZAorZW5kCisKKyRsYWJl
bE1hcHBpbmcgPSB7fQorCitjbGFzcyBMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIg
Om5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgc2VsZi5mb3JO
YW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgaWYgJGxhYmVsTWFwcGluZ1tuYW1lXQorICAgICAg
cmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9IiB1bmxlc3MgJGxhYmVsTWFwcGlu
Z1tuYW1lXS5pc19hPyBMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdbbmFtZV0g
PSBMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5n
W25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5k
CisKK2NsYXNzIExvY2FsTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorCisgIEBAdW5pcXVlTmFtZUNvdW50ZXIgPSAw
CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgaWYgJGxhYmVs
TWFwcGluZ1tuYW1lXQorICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9
IiB1bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMb2NhbExhYmVsCisgICAgZWxzZQor
ICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExvY2FsTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5h
bWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBz
ZWxmLnVuaXF1ZShjb21tZW50KQorICAgIG5ld05hbWUgPSAiXyN7Y29tbWVudH0iCisgICAgaWYg
JGxhYmVsTWFwcGluZ1tuZXdOYW1lXQorICAgICAgd2hpbGUgJGxhYmVsTWFwcGluZ1tuZXdOYW1l
ID0gIl8je0BAdW5pcXVlTmFtZUNvdW50ZXJ9XyN7Y29tbWVudH0iXQorICAgICAgICBAQHVuaXF1
ZU5hbWVDb3VudGVyICs9IDEKKyAgICAgIGVuZAorICAgIGVuZAorICAgIGZvck5hbWUobmlsLCBu
ZXdOYW1lKQorICBlbmQKKyAgCisgIGRlZiBjbGVhbk5hbWUKKyAgICBpZiBuYW1lID1+IC9eXC4v
CisgICAgICAiXyIgKyBuYW1lWzEuLi0xXQorICAgIGVsc2UKKyAgICAgIG5hbWUKKyAgICBlbmQK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xh
c3MgTGFiZWxSZWZlcmVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxd
CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTGFiZWxSZWZlcmVuY2UubmV3KGNv
ZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFi
ZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQorICBlbmQKK2Vu
ZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRl
ciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExv
Y2FsTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQK
KyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgbGFiZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZSA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxpc3QpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGlzdCA9IGxpc3QKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBsaXN0CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQor
ICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBAbGlzdC5tYXAoJnByb2MpKQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIlxuIikKKyAg
ZW5kCitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAg
ICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IFRydWUubmV3CisgIAorICBk
ZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUK
KyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAidHJ1ZSIKKyAgZW5kCitlbmQK
KworY2xhc3MgRmFsc2UgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIo
bmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBGYWxzZS5uZXcKKyAgCisgIGRlZiBzZWxm
Lmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiZmFsc2UiCisgIGVuZAorZW5kCisKK2Ns
YXNzIFRydWVDbGFzcworICBkZWYgYXNOb2RlCisgICAgVHJ1ZS5pbnN0YW5jZQorICBlbmQKK2Vu
ZAorCitjbGFzcyBGYWxzZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBGYWxzZS5pbnN0YW5jZQor
ICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9
CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBA
bWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gU2V0dGluZy5uZXcoY29kZU9y
aWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kIDwgTm9kZQorICBhdHRy
X3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBs
ZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAg
IEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBA
cmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQW5kLm5ldyhjb2RlT3Jp
Z2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgT3IgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRy
ZW4KKyAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkp
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBvciAje3JpZ2h0LmR1
bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTm90IDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hp
bGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4K
KyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBO
b3QubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAgPCBO
b0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdHNraXAiCisgIGVuZAorZW5kCisK
K2NsYXNzIElmVGhlbkVsc2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpwcmVkaWNhdGUsIDp0aGVu
Q2FzZQorICBhdHRyX2FjY2Vzc29yIDplbHNlQ2FzZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBwcmVkaWNhdGUgPSBwcmVkaWNhdGUKKyAgICBAdGhlbkNhc2UgPSB0aGVuQ2FzZQorICAgIEBl
bHNlQ2FzZSA9IFNraXAubmV3KGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVu
CisgICAgaWYgQGVsc2VDYXNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNlLCBAZWxzZUNh
c2VdCisgICAgZWxzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZV0KKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2lu
LCAoeWllbGQgQHByZWRpY2F0ZSksICh5aWVsZCBAdGhlbkNhc2UpLCAoeWllbGQgQGVsc2VDYXNl
KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJpZiAje3ByZWRpY2F0ZS5kdW1wfVxuIiAr
IHRoZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsgZWxzZUNhc2UuZHVtcCArICJcbmVuZCIKKyAg
ZW5kCitlbmQKKworY2xhc3MgTWFjcm8gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6dmFy
aWFibGVzLCA6Ym9keQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgdmFy
aWFibGVzLCBib2R5KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisg
ICAgQHZhcmlhYmxlcyA9IHZhcmlhYmxlcworICAgIEBib2R5ID0gYm9keQorICBlbmQKKyAgCisg
IGRlZiBjaGlsZHJlbgorICAgIEB2YXJpYWJsZXMgKyBbQGJvZHldCisgIGVuZAorICAKKyAgZGVm
IG1hcENoaWxkcmVuCisgICAgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAdmFyaWFibGVz
Lm1hcHt8dnwgeWllbGQgdn0sICh5aWVsZCBAYm9keSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFibGVzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9p
bigiLCAiKSArICIpXG4iICsgYm9keS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFz
cyBNYWNyb0NhbGwgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6b3BlcmFuZHMKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAg
ICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAgQG9wZXJhbmRzLmVhY2h7fHZ8IHJhaXNlIHVu
bGVzcyB2fQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEBvcGVyYW5kcworICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBNYWNyb0NhbGwubmV3KGNvZGVPcmln
aW4sIEBuYW1lLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICJcdCN7bmFtZX0oIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAi
KSArICIpIgorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisj
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1
aXJlICJ4ODYiCisKK0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIsCisgICAiQVJNdjciCisgIF0K
KworV09SS0lOR19CQUNLRU5EUyA9CisgIFsKKyAgICJYODYiCisgIF0KKworQkFDS0VORF9QQVRU
RVJOID0gUmVnZXhwLm5ldygnXFxBKCcgKyBCQUNLRU5EUy5qb2luKCcpfCgnKSArICcpXFxaJykK
KworY2xhc3MgTm9kZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBzZW5kKCJsb3dlciIgKyBuYW1l
KQorICBlbmQKK2VuZAorCisjIE92ZXJyaWRlcyBmb3IgbG93ZXIoKSBmb3IgdGhvc2Ugbm9kZXMg
dGhhdCBhcmUgYmFja2VuZC1hZ25vc3RpYworCitkZWYgc2FuaXRpemVMYWJlbE5hbWUobmFtZSkK
KyAgIyBTb21lIHBsYXRmb3JtcyBkb24ndCB3YW50IHRoZSBsZWFkaW5nICJfIi4gSWYgd2UgZXZl
ciB3YW50IHRvIGRvIHNvbWV0aGluZworICAjIGFib3V0IHRoYXQsIGl0IHdvdWxkIGJlIGhlcmUu
CisgIG5hbWUKK2VuZAorCitjbGFzcyBMYWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNt
LnB1dHMgIi5nbG9ibCAje3Nhbml0aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9IgorICAgICRhc20u
cHV0cyAiI3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxmLm5hbWUpfToiCisgIGVuZAorZW5kCisKK2Ns
YXNzIExvY2FsTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzICJMX29mZmxp
bmVhc21fI3tzZWxmLm5hbWVbMS4uLTFdfToiCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAKKyAg
ZGVmIGxvd2VyKG5hbWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBsb3dl
cihuYW1lKQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUubG93
ZXIobmFtZSkKKyAgICB9CisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rv
ci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODcgQEAK
KyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNrZW5kcyIK
K3JlcXVpcmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNl
ciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitpbnB1dEZsbm0g
PSBBUkdWLnNoaWZ0CitvdXRwdXRGbG5tID0gQVJHVi5zaGlmdAorCitkZWYgZW1pdE1hZ2ljTnVt
YmVyCisgIE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVhY2ggeworICAgIHwgbnVtYmVyIHwKKyAgICAk
b3V0cHV0LnB1dHMgIiN7bnVtYmVyfSwiCisgIH0KK2VuZAorCitpbnB1dERhdGEgPSBJTzo6cmVh
ZChpbnB1dEZsbm0pCitpbnB1dEhhc2ggPSBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0
YSkKKworaWYgRmlsZVRlc3QuZXhpc3Q/IG91dHB1dEZsbm0KKyAgRmlsZS5vcGVuKG91dHB1dEZs
bm0sICJyIikgeworICAgIHwgaW5wIHwKKyAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAgIGlm
IGZpcnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09ICIvLyBvZmZsaW5lYXNtIGlucHV0IGhh
c2g6ICN7aW5wdXRIYXNofSIKKyAgICAgICRzdGRlcnIucHV0cyAiTm90aGluZyBjaGFuZ2VkLiIK
KyAgICAgIGV4aXQgMAorICAgIGVuZAorICB9CitlbmQKKworb3JpZ2luYWxBU1QgPSBwYXJzZShs
ZXgoaW5wdXREYXRhKSkKKworRmlsZS5vcGVuKG91dHB1dEZsbm0sICJ3IikgeworICB8IG91dHAg
fAorICAkb3V0cHV0ID0gb3V0cAorICBvdXRwLnB1dHMgIi8vIG9mZmxpbmVhc20gaW5wdXQgaGFz
aDogI3tpbnB1dEhhc2h9IgorICBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMob3JpZ2luYWxB
U1QpIHsKKyAgICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICBvZmZzZXRz
TGlzdCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKKyAgICBzaXplc0xpc3Qg
PSBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CisgICAgCisgICAgbGVuZ3RoID0gKE9GRlNF
VF9NQUdJQ19OVU1CRVJTLnNpemUgKyAxKSAqICgxICsgb2Zmc2V0c0xpc3Quc2l6ZSArIHNpemVz
TGlzdC5zaXplKQorICAgIAorICAgIG91dHAucHV0cyAic3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4
dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICAgIGVtaXRNYWdpY051bWJlcgorICAgIG91
dHAucHV0cyAiI3tpbmRleH0sIgorICAgIG9mZnNldHNMaXN0LmVhY2ggeworICAgICAgfCBvZmZz
ZXQgfAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICBvdXRwLnB1dHMgIk9GRkxJTkVfQVNN
X09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSksIgorICAgIH0KKyAg
ICBzaXplc0xpc3QuZWFjaCB7CisgICAgICB8IG9mZnNldCB8CisgICAgICBlbWl0TWFnaWNOdW1i
ZXIKKyAgICAgIG91dHAucHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0cnVjdH0pLCIKKyAgICB9Cisg
ICAgb3V0cC5wdXRzICJ9OyIKKyAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxODggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01B
Q1JPX0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJhZGRpIiwKKyAgICJhbmRpIiwKKyAgICJsc2hp
ZnRpIiwKKyAgICJtdWxpIiwKKyAgICJuZWdpIiwKKyAgICJub3RpIiwKKyAgICJvcmkiLAorICAg
InJzaGlmdGkiLAorICAgInVyc2hpZnRpIiwKKyAgICJzdWJpIiwKKyAgICJ4b3JpIiwKKyAgICJs
b2FkaSIsCisgICAibG9hZGIiLAorICAgImxvYWRoIiwKKyAgICJzdG9yZWkiLAorICAgInN0b3Jl
YiIsCisgICAibG9hZGQiLAorICAgIm1vdmVkIiwKKyAgICJzdG9yZWQiLAorICAgImFkZGQiLAor
ICAgImRpdmQiLAorICAgInN1YmQiLAorICAgIm11bGQiLAorICAgInNxcnRkIiwKKyAgICJjaTJk
IiwKKyAgICJmaWkyZCIsICMgdXNhZ2U6IGZpaTJkIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2Fu
dCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxmcHI+CisgICAiZmQy
aWkiLCAjIHVzYWdlOiBmZDJpaSA8ZnByPiwgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJp
dHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPgorICAgImJkZXEiLAorICAgImJk
bmVxIiwKKyAgICJiZGd0IiwKKyAgICJiZGd0ZXEiLAorICAgImJkbHQiLAorICAgImJkbHRlcSIs
CisgICAiYmRlcXVuIiwKKyAgICJiZG5lcXVuIiwKKyAgICJiZGd0dW4iLAorICAgImJkZ3RlcXVu
IiwKKyAgICJiZGx0dW4iLAorICAgImJkbHRlcXVuIiwKKyAgICJidGQyaSIsCisgICAidGQyaSIs
CisgICAiYmNkMmkiLAorICAgIm1vdmR6IiwKKyAgICJwb3AiLAorICAgInB1c2giLAorICAgIm1v
dmUiLAorICAgInN4aTJwIiwKKyAgICJ6eGkycCIsCisgICAibm9wIiwKKyAgICJiaWVxIiwKKyAg
ICJiaW5lcSIsCisgICAiYmlhIiwKKyAgICJiaWFlcSIsCisgICAiYmliIiwKKyAgICJiaWJlcSIs
CisgICAiYmlndCIsCisgICAiYmlndGVxIiwKKyAgICJiaWx0IiwKKyAgICJiaWx0ZXEiLAorICAg
ImJiZXEiLAorICAgImJibmVxIiwKKyAgICJiYmEiLAorICAgImJiYWVxIiwKKyAgICJiYmIiLAor
ICAgImJiYmVxIiwKKyAgICJiYmd0IiwKKyAgICJiYmd0ZXEiLAorICAgImJibHQiLAorICAgImJi
bHRlcSIsCisgICAiYnRpbyIsCisgICAiYnRpcyIsCisgICAiYnRpeiIsCisgICAiYnRpbnoiLAor
ICAgImJ0Ym8iLAorICAgImJ0YnMiLAorICAgImJ0YnoiLAorICAgImJ0Ym56IiwKKyAgICJqbXAi
LAorICAgImJhZGRpbyIsCisgICAiYmFkZGlzIiwKKyAgICJiYWRkaXoiLAorICAgImJhZGRpbnoi
LAorICAgImJzdWJpbyIsCisgICAiYnN1YmlzIiwKKyAgICJic3ViaXoiLAorICAgImJzdWJpbnoi
LAorICAgImJtdWxpbyIsCisgICAiYm11bGlzIiwKKyAgICJibXVsaXoiLAorICAgImJtdWxpbnoi
LAorICAgImJvcmlvIiwKKyAgICJib3JpcyIsCisgICAiYm9yaXoiLAorICAgImJvcmlueiIsCisg
ICAiYnJlYWsiLAorICAgImNhbGwiLAorICAgInJldCIsCisgICAiY2llcSIsCisgICAiY2luZXEi
LAorICAgImNpYSIsCisgICAiY2lhZXEiLAorICAgImNpYiIsCisgICAiY2liZXEiLAorICAgImNp
Z3QiLAorICAgImNpZ3RlcSIsCisgICAiY2lsdCIsCisgICAiY2lsdGVxIiwKKyAgICJ0aW8iLAor
ICAgInRpcyIsCisgICAidGl6IiwKKyAgICJ0aW56IiwKKyAgICJ0Ym8iLAorICAgInRicyIsCisg
ICAidGJ6IiwKKyAgICJ0Ym56IiwKKyAgICJwZWVrIiwKKyAgICJwb2tlIiwKKyAgICJicGVxIiwK
KyAgICJicG5lcSIsCisgICAiYnBhIiwKKyAgICJicGFlcSIsCisgICAiYnBiIiwKKyAgICJicGJl
cSIsCisgICAiYnBndCIsCisgICAiYnBndGVxIiwKKyAgICJicGx0IiwKKyAgICJicGx0ZXEiLAor
ICAgImFkZHAiLAorICAgImFuZHAiLAorICAgIm9ycCIsCisgICAic3VicCIsCisgICAieG9ycCIs
CisgICAibG9hZHAiLAorICAgImNwZXEiLAorICAgImNwbmVxIiwKKyAgICJjcGEiLAorICAgImNw
YWVxIiwKKyAgICJjcGIiLAorICAgImNwYmVxIiwKKyAgICJjcGd0IiwKKyAgICJjcGd0ZXEiLAor
ICAgImNwbHQiLAorICAgImNwbHRlcSIsCisgICAic3RvcmVwIiwKKyAgICJidHBvIiwKKyAgICJi
dHBzIiwKKyAgICJidHB6IiwKKyAgICJidHBueiIsCisgICAiYmFkZHBvIiwKKyAgICJiYWRkcHMi
LAorICAgImJhZGRweiIsCisgICAiYmFkZHBueiIKKyAgXQorCitYODZfSU5TVFJVQ1RJT05TID0K
KyAgWworICAgImNkcWkiLAorICAgImlkaXZpIgorICBdCisKK0lOU1RSVUNUSU9OUyA9IE1BQ1JP
X0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMKKworSU5TVFJVQ1RJT05fUEFUVEVSTiA9
IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIElOU1RSVUNUSU9OUy5qb2luKCcpfCgnKSArICcpKVxcWicp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9y
X2NvbnN0YW50cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJi
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitNQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0K
KworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRz
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJhY3Rv
cl9jb25zdGFudHMiCisKK09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBm
ZjVlNzU1IF0KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgb2Zmc2V0c0xp
c3QoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBzaXplc0xpc3QoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUmV0dXJucyBhIGxpc3Qg
b2Ygb2Zmc2V0cyBhbmQgc2l6ZXMgdXNlZCBieSB0aGUgQVNULiAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIG9mZnNldHNMaXN0KGFzdCkK
KyAgYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorZW5kCisKK2RlZiBzaXplc0xp
c3QoYXN0KQorICBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CitlbmQKKworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChh
c3QsIGZpbGUpIC0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgW29mZnNldHMs
IGluZGV4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgUGFyc2VzIHRoZSBvZmZzZXRzIGZyb20gYSBmaWxlIGFuZCBy
ZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCB0aGUgIworIyBpbmRleCBvZiB0aGUgY29uZmln
dXJhdGlvbiB0aGF0IGlzIHZhbGlkIGluIHRoaXMgYnVpbGQgdGFyZ2V0LiAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgb2Zmc2V0c0FuZENvbmZpZ3VyYXRp
b25JbmRleChmaWxlKQorICBpbmRleCA9IG5pbAorICBvZmZzZXRzID0gW10KKyAgZW5kaWFubmVz
c01hcmtlckJ5dGVzID0gbmlsCisgIAorICBkZWYgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisg
ICAgYnl0ZXMgPSBbXQorICAgIDQudGltZXMgeworICAgICAgYnl0ZXMgPDwgaW5wLmdldGJ5dGUK
KyAgICB9CisgICAgCisgICAgaWYgZW5kaWFubmVzcyA9PSA6bGl0dGxlCisgICAgICAjIExpdHRs
ZSBlbmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAwIHwKKyAgICAgICBieXRlc1sxXSA8PCA4IHwK
KyAgICAgICBieXRlc1syXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbM10gPDwgMjQpCisgICAgZWxz
ZQorICAgICAgIyBCaWcgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMjQgfAorICAgICAgIGJ5
dGVzWzFdIDw8IDE2IHwKKyAgICAgICBieXRlc1syXSA8PCA4IHwKKyAgICAgICBieXRlc1szXSA8
PCAwKQorICAgIGVuZAorICBlbmQKKyAgCisgIFs6bGl0dGxlLCA6YmlnXS5lYWNoIHsKKyAgICB8
IGVuZGlhbm5lc3MgfAorICAgIG1hZ2ljQnl0ZXMgPSBbXQorICAgIE1BR0lDX05VTUJFUlMuZWFj
aCB7CisgICAgICB8IG51bWJlciB8CisgICAgICBjdXJyZW50Qnl0ZXMgPSBbXQorICAgICAgNC50
aW1lcyB7CisgICAgICAgIGN1cnJlbnRCeXRlcyA8PCAobnVtYmVyICYgMHhmZikKKyAgICAgICAg
bnVtYmVyID4+PSA4CisgICAgICB9CisgICAgICBpZiBlbmRpYW5uZXNzID09IDpiaWcKKyAgICAg
ICAgY3VycmVudEJ5dGVzLnJldmVyc2UhCisgICAgICBlbmQKKyAgICAgIG1hZ2ljQnl0ZXMgKz0g
Y3VycmVudEJ5dGVzCisgICAgfQorICAgIAorICAgIEZpbGUub3BlbihmaWxlLCAiciIpIHsKKyAg
ICAgIHwgaW5wIHwKKyAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICBsb29wIHsKKyAgICAg
ICAgYnl0ZSA9IGlucC5nZXRieXRlCisgICAgICAgIGJyZWFrIHVubGVzcyBieXRlCisgICAgICAg
IGlmIGJ5dGUgPT0gbWFnaWNCeXRlc1t3aGVyZUluTWFya2VyXQorICAgICAgICAgIHdoZXJlSW5N
YXJrZXIgKz0gMQorICAgICAgICAgIGlmIHdoZXJlSW5NYXJrZXIgPT0gbWFnaWNCeXRlcy5zaXpl
CisgICAgICAgICAgICAjIFdlIGhhdmUgYSBtYXRjaCEgSWYgd2UgaGF2ZSBub3QgeWV0IHJlYWQg
dGhlIGVuZGlhbm5lc3MgbWFya2VyIGFuZCBpbmRleCwKKyAgICAgICAgICAgICMgdGhlbiByZWFk
IHRob3NlIG5vdzsgb3RoZXJ3aXNlIHJlYWQgYW4gb2Zmc2V0LgorICAgICAgICAgICAgCisgICAg
ICAgICAgICBpZiBub3QgaW5kZXgKKyAgICAgICAgICAgICAgaW5kZXggPSByZWFkSW50KGVuZGlh
bm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgb2Zmc2V0cyA8PCBy
ZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgCisg
ICAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICAgIGVuZAorICAgICAgICBlbHNl
CisgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgZW5kCisgICAgICB9CisgICAg
fQorICAgIAorICAgIGJyZWFrIGlmIGluZGV4CisgIH0KKyAgCisgIHJhaXNlIHVubGVzcyBpbmRl
eAorICAKKyAgW29mZnNldHMsIGluZGV4XQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAtPiBbb2Zmc2V0
cywgc2l6ZXNdICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBCdWlsZHMgYSBt
YXBwaW5nIGJldHdlZW4gU3RydWN0T2Zmc2V0IG5vZGVzIGFuZCB0aGVpciB2YWx1ZXMuICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgYnVpbGRPZmZzZXRz
TWFwKGFzdCwgb2Zmc2V0c0xpc3QpCisgIG9mZnNldHNNYXAgPSB7fQorICBzaXplc01hcCA9IHt9
CisgIGFzdE9mZnNldHNMaXN0ID0gb2Zmc2V0c0xpc3QoYXN0KQorICBhc3RTaXplc0xpc3QgPSBz
aXplc0xpc3QoYXN0KQorICByYWlzZSB1bmxlc3MgYXN0T2Zmc2V0c0xpc3Quc2l6ZSArIGFzdFNp
emVzTGlzdC5zaXplID09IG9mZnNldHNMaXN0LnNpemUKKyAgb2Zmc2V0c0xpc3QoYXN0KS5lYWNo
X3dpdGhfaW5kZXggeworICAgIHwgc3RydWN0T2Zmc2V0LCBpbmRleCB8CisgICAgb2Zmc2V0c01h
cFtzdHJ1Y3RPZmZzZXRdID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQorICBzaXplc0xpc3QoYXN0
KS5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgc2l6ZW9mLCBpbmRleCB8CisgICAgc2l6ZXNNYXBb
c2l6ZW9mXSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgW29mZnNldHNNYXAsIHNpemVzTWFw
XQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIu
cmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJz
ZXIucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkxIEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJpbnN0cnVjdGlvbnMi
CityZXF1aXJlICJyZWdpc3RlcnMiCisKK2NsYXNzIFRva2VuCisgIGF0dHJfcmVhZGVyIDpjb2Rl
T3JpZ2luLCA6c3RyaW5nCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJpbmcp
CisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgICAgQHN0cmluZyA9IHN0cmluZworICBl
bmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBpZiBvdGhlci5pc19hPyBUb2tlbgorICAgICAg
QHN0cmluZyA9PSBvdGhlci5zdHJpbmcKKyAgICBlbHNlCisgICAgICBAc3RyaW5nID09IG90aGVy
CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmID1+KG90aGVyKQorICAgIEBzdHJpbmcgPX4gb3Ro
ZXIKKyAgZW5kCisgIAorICBkZWYgdG9fcworICAgICIje0BzdHJpbmcuaW5zcGVjdH0gYXQgbGlu
ZSAje2NvZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQor
ICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc30i
CisgICAgZWxzZQorICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9OiAje2NvbW1lbnRb
MF19IgorICAgIGVuZAorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBUaGUgbGV4ZXIuIFRha2VzIGEgc3RyaW5nIGFuZCByZXR1cm5zIGFuIGFycmF5IG9m
IHRva2Vucy4gICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
CitkZWYgbGV4KHN0cikKKyAgcmVzdWx0ID0gW10KKyAgbGluZU51bWJlciA9IDEKKyAgd2hpbGUg
bm90IHN0ci5lbXB0eT8KKyAgICBjYXNlIHN0cgorICAgIHdoZW4gL1xBXCMoW15cbl0qKS8KKyAg
ICAgICMgY29tbWVudCwgaWdub3JlCisgICAgd2hlbiAvXEFcbi8KKyAgICAgIHJlc3VsdCA8PCBU
b2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICBsaW5lTnVtYmVyICs9IDEKKyAgICB3aGVu
IC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhs
aW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVwuKFthLXpBLVowLTlfXSopLworICAgICAgcmVz
dWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQV8oW2EtekEtWjAt
OV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdo
ZW4gL1xBKFsgXHRdKykvCisgICAgICAjIHdoaXRlc3BhY2UsIGlnbm9yZQorICAgIHdoZW4gL1xB
MHgoWzAtOWEtZkEtRl0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwg
JCYuaGV4LnRvX3MpCisgICAgd2hlbiAvXEEwKFswLTddKykvCisgICAgICByZXN1bHQgPDwgVG9r
ZW4ubmV3KGxpbmVOdW1iZXIsICQmLm9jdC50b19zKQorICAgIHdoZW4gL1xBKFswLTldKykvCisg
ICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBOjov
CisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xB
WzosXChcKVxbXF09XCtcLSpdLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVy
LCAkJikKKyAgICBlbHNlCisgICAgICByYWlzZSAiTGV4ZXIgZXJyb3IgYXQgbGluZSBudW1iZXIg
I3tsaW5lTnVtYmVyfSwgdW5leHBlY3RlZCBzZXF1ZW5jZSAje3N0clswLi4yMF0uaW5zcGVjdH0i
CisgICAgZW5kCisgICAgc3RyID0gJH4ucG9zdF9tYXRjaAorICBlbmQKKyAgcmVzdWx0CitlbmQK
KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVG9rZW4gaWRlbnRpZmljYXRp
b24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGlzUmVnaXN0ZXIodG9rZW4pCisg
IHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJbnN0cnVjdGlvbih0b2tl
bikKKyAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0tleXdvcmQo
dG9rZW4pCisgIHRva2VuID1+IC9cQSgodHJ1ZSl8KGZhbHNlKXwoaWYpfCh0aGVuKXwoZWxzZSl8
KGVsc2lmKXwoZW5kKXwoYW5kKXwob3IpfChub3QpfChtYWNybyl8KGNvbnN0KXwoc2l6ZW9mKXwo
ZXJyb3IpKVxaLyBvcgorICAgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4gb3IKKyAgICB0b2tl
biA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzSWRlbnRpZmllcih0b2tlbikK
KyAgdG9rZW4gPX4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKilcWi8gYW5kIG5vdCBpc0tleXdv
cmQodG9rZW4pCitlbmQKKworZGVmIGlzTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQV8oW2Et
ekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNMb2NhbExhYmVsKHRva2VuKQorICB0b2tlbiA9
fiAvXEFcLihbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc1ZhcmlhYmxlKHRva2VuKQor
ICBpc0lkZW50aWZpZXIodG9rZW4pIG9yIGlzUmVnaXN0ZXIodG9rZW4pCitlbmQKKworZGVmIGlz
SW50ZWdlcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBWzAtOV0vCitlbmQKKworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIHBhcnNlci4gVGFrZXMgYW4gYXJyYXkgb2YgdG9r
ZW5zIGFuZCByZXR1cm5zIGFuIEFTVC4gTWV0aG9kcyAgICAgIworIyBvdGhlciB0aGFuIHBhcnNl
KHRva2VucykgYXJlIG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9uLiAgICAgICAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBQYXJzZXIKKyAgZGVmIGlu
aXRpYWxpemUodG9rZW5zKQorICAgIEB0b2tlbnMgPSB0b2tlbnMKKyAgICBAaWR4ID0gMAorICBl
bmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIEB0b2tlbnNbQGlkeF0K
KyAgICAgIEB0b2tlbnNbQGlkeF0ucGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBlbHNlCisgICAg
ICBpZiBjb21tZW50LmVtcHR5PworICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9m
IGZpbGUiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2Yg
ZmlsZTogI3tjb21tZW50WzBdfSIKKyAgICAgIGVuZAorICAgIGVuZAorICBlbmQKKyAgCisgIGRl
ZiBjb25zdW1lKHJlZ2V4cCkKKyAgICBpZiByZWdleHAKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNz
IEB0b2tlbnNbQGlkeF0gPX4gcmVnZXhwCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1bmxl
c3MgQGlkeCA9PSBAdG9rZW5zLmxlbmd0aAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICBlbmQK
KyAgCisgIGRlZiBza2lwTmV3TGluZQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgor
ICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRl
QXRvbQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm5vdCIKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAg
ICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJlc3VsdCA9IHBhcnNlUHJl
ZGljYXRlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgorICAg
ICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJ0
cnVlIgorICAgICAgcmVzdWx0ID0gVHJ1ZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAg
ICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJmYWxzZSIKKyAgICAgIHJlc3Vs
dCA9IEZhbHNlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVs
c2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBTZXR0aW5nLmZv
ck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAg
ICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgor
ICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZUFuZAorICAgIHJlc3VsdCA9
IHBhcnNlUHJlZGljYXRlQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImFuZCIKKyAg
ICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0g
MQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisg
ICAgICByZXN1bHQgPSBBbmQubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5k
CisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlCisgICAgIyBzb21l
IGV4YW1wbGVzIG9mIHByZWNlZGVuY2U6CisgICAgIyBub3QgYSBhbmQgYiAtPiAobm90IGEpIGFu
ZCBiCisgICAgIyBhIGFuZCBiIG9yIGMgLT4gKGEgYW5kIGIpIG9yIGMKKyAgICAjIGEgb3IgYiBh
bmQgYyAtPiBhIG9yIChiIGFuZCBjKQorICAgIAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRl
QW5kCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAib3IiCisgICAgICBjb2RlT3JpZ2luID0g
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdM
aW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgICByZXN1bHQgPSBPci5u
ZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5k
CisgIAorICBkZWYgcGFyc2VWYXJpYWJsZQorICAgIGlmIGlzUmVnaXN0ZXIoQHRva2Vuc1tAaWR4
XSkKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPX4gRlBSX1BBVFRFUk4KKyAgICAgICAgcmVzdWx0
ID0gRlBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5z
W0BpZHhdLnN0cmluZykKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUmVnaXN0ZXJJRC5m
b3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisg
ICAgICBlbmQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgIHJl
c3VsdCA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5z
W0BpZHhdLnN0cmluZykKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgICAg
QGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQWRkcmVzcyhvZmZz
ZXQpCisgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICBjb2Rl
T3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgCisgICAgIyBUaHJlZSBwb3Nz
aWJpbGl0aWVzOgorICAgICMgW10gICAgICAgLT4gQWJzb2x1dGVBZGRyZXNzCisgICAgIyBbYV0g
ICAgICAtPiBBZGRyZXNzCisgICAgIyBbYSxiXSAgICAtPiBCYXNlSW5kZXggd2l0aCBzY2FsZSA9
IDEKKyAgICAjIFthLGIsY10gIC0+IEJhc2VJbmRleAorICAgIAorICAgIEBpZHggKz0gMQorICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJldHVybiBB
YnNvbHV0ZUFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIG9mZnNldCkKKyAgICBlbmQKKyAgICBhID0g
cGFyc2VWYXJpYWJsZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICByZXN1bHQg
PSBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBhLCBvZmZzZXQpCisgICAgZWxzZQorICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgYiA9IHBhcnNlVmFyaWFibGUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAg
ICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgMSwgb2Zmc2V0KQor
ICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIs
IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgWyIxIiwgIjIi
LCAiNCIsICI4Il0ubWVtYmVyPyBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBjID0gQHRv
a2Vuc1tAaWR4XS5zdHJpbmcudG9faQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUlu
ZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCBjLCBvZmZzZXQpCisgICAgICBlbmQKKyAgICBlbmQK
KyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VDb2xvbkNv
bG9uCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0K
KyAgICBuYW1lcyA9IFtAdG9rZW5zW0BpZHhdLnN0cmluZ10KKyAgICBAaWR4ICs9IDEKKyAgICB3
aGlsZSBAdG9rZW5zW0BpZHhdID09ICI6OiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIG5hbWVzIDw8IEB0
b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgICByYWlzZSBp
ZiBuYW1lcy5lbXB0eT8KKyAgICBbY29kZU9yaWdpbiwgbmFtZXNdCisgIGVuZAorICAKKyAgZGVm
IHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICBza2lwTmV3TGluZQorICAgIGlmIEB0b2tlbnNbQGlk
eF0gPT0gIi0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIE5lZ0ltbWVkaWF0ZS5uZXcoQHRva2Vu
c1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQgPSBwYXJz
ZUV4cHJlc3Npb24KKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiki
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSW50ZWdlciBAdG9r
ZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faSkKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIGNv
ZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBpZiBuYW1lcy5zaXplID4g
MQorICAgICAgICBTdHJ1Y3RPZmZzZXQuZm9yRmllbGQoY29kZU9yaWdpbiwgbmFtZXNbMC4uLTJd
LmpvaW4oJzo6JyksIG5hbWVzWy0xXSkKKyAgICAgIGVsc2UKKyAgICAgICAgVmFyaWFibGUuZm9y
TmFtZShjb2RlT3JpZ2luLCBuYW1lc1swXSkKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzUmVnaXN0
ZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcGFyc2VWYXJpYWJsZQorICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gInNpemVvZiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgY29kZU9yaWdpbiwgbmFt
ZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIFNpemVvZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5h
bWVzLmpvaW4oJzo6JykpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICBza2lwTmV3TGluZQorICAgIHJl
c3VsdCA9IHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIq
IgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIHJlc3VsdCA9IE11bEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmln
aW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFp
c2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBjb3Vs
ZEJlRXhwcmVzc2lvbgorICAgIEB0b2tlbnNbQGlkeF0gPT0gIi0iIG9yIEB0b2tlbnNbQGlkeF0g
PT0gInNpemVvZiIgb3IgaXNJbnRlZ2VyKEB0b2tlbnNbQGlkeF0pIG9yIGlzVmFyaWFibGUoQHRv
a2Vuc1tAaWR4XSkgb3IgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgZW5kCisgIAorICBkZWYgcGFy
c2VFeHByZXNzaW9uCisgICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Np
b25NdWwKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIrIiBvciBAdG9rZW5zW0BpZHhdID09
ICItIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKyIKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIHJlc3VsdCA9IEFkZEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVP
cmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAiLSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IFN1YkltbWVk
aWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHBy
ZXNzaW9uTXVsKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5k
CisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlT3BlcmFuZChjb21tZW50KQorICAg
IGlmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgICBleHByID0gcGFyc2VFeHByZXNzaW9uCisgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAgICBwYXJzZUFkZHJlc3MoZXhwcikKKyAg
ICAgIGVsc2UKKyAgICAgICAgZXhwcgorICAgICAgZW5kCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4
XSA9PSAiWyIKKyAgICAgIHBhcnNlQWRkcmVzcyhJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbiwgMCkpCisgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICBy
ZXN1bHQgPSBMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMYWJl
bC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcp
KQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0xvY2FsTGFiZWwg
QHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMb2NhbExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAgICAg
IHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IoY29tbWVudCkKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgIHNraXBOZXdMaW5lCisgICAg
Y29uc3VtZSgvXEFcKFxaLykKKyAgICB2YXJpYWJsZXMgPSBbXQorICAgIGxvb3AgeworICAgICAg
c2tpcE5ld0xpbmUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlk
eF0pCisgICAgICAgIHZhcmlhYmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICBza2lwTmV3TGluZQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gIiwiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICBw
YXJzZUVycm9yCisgICAgICAgIGVuZAorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yCisg
ICAgICBlbmQKKyAgICB9CisgICAgdmFyaWFibGVzCisgIGVuZAorICAKKyAgZGVmIHBhcnNlU2Vx
dWVuY2UoZmluYWwsIGNvbW1lbnQpCisgICAgZmlyc3RDb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luCisgICAgbGlzdCA9IFtdCisgICAgbG9vcCB7CisgICAgICBpZiAoQGlkeCA9
PSBAdG9rZW5zLmxlbmd0aCBhbmQgbm90IGZpbmFsKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlk
eF0gPX4gZmluYWwpCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJcbiIKKyAgICAgICAgIyBpZ25vcmUKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICJjb25zdCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIGlzVmFyaWFibGUgQHRva2Vuc1tAaWR4XQorICAgICAgICB2YXJpYWJsZSA9
IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhd
LnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0
b2tlbnNbQGlkeF0gPT0gIj0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YWx1ZSA9IHBh
cnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGNvbnN0ICN7dmFyaWFibGUubmFtZX0iKQorICAg
ICAgICBsaXN0IDw8IENvbnN0RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCB2YXJp
YWJsZSwgdmFsdWUpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJlcnJvciIKKyAgICAg
ICAgbGlzdCA8PCBFcnJvci5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luKQorICAgICAgICBA
aWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImlmIgorICAgICAgICBjb2Rl
T3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICBza2lwTmV3TGluZQorICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAg
ICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgIHNraXBOZXdMaW5lCisg
ICAgICAgIGlmVGhlbkVsc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUs
IHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lk
ZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgbGlzdCA8PCBpZlRoZW5F
bHNlCisgICAgICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImVsc2lmIgorICAgICAgICAgIGNv
ZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGlj
YXRlCisgICAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICAgIHNr
aXBOZXdMaW5lCisgICAgICAgICAgZWxzZUNhc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2lu
LCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywg
IndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgICBp
ZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNhc2UKKyAgICAgICAgICBpZlRoZW5FbHNlID0gZWxz
ZUNhc2UKKyAgICAgICAgZW5kCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gImVsc2UiCisg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IHBhcnNl
U2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGVsc2UgY2FzZSBmb3IgXCJpZiAj
e3ByZWRpY2F0ZS5kdW1wfVwiIikKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQor
ICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gImVuZCIKKyAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJtYWNybyIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcGFyc2VFcnJv
ciB1bmxlc3MgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIG5hbWUgPSBAdG9r
ZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFyaWFibGVzID0g
cGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRc
Wi8sICJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gI3tuYW1lfSIpCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBsaXN0IDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMsIGJv
ZHkpCisgICAgICBlbHNpZiBpc0luc3RydWN0aW9uIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29k
ZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vu
c1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIChub3QgZmluYWwg
YW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4g
ZmluYWwpCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24sIGFuZCBpdCdzIHRo
ZSBsYXN0IG9uZS4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2lu
LCBuYW1lLCBbXSkKKyAgICAgICAgICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICJcbiIKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbi4KKyAgICAgICAg
ICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgICMgSXQncyBkZWZpbml0ZWx5IGFu
IGluc3RydWN0aW9uLCBhbmQgaXQgaGFzIGF0IGxlYXN0IG9uZSBvcGVyYW5kLgorICAgICAgICAg
IG9wZXJhbmRzID0gW10KKyAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gZmFsc2UKKyAgICAgICAg
ICBsb29wIHsKKyAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5z
aWRlIG9mIGluc3RydWN0aW9uICN7bmFtZX0iKQorICAgICAgICAgICAgaWYgKG5vdCBmaW5hbCBh
bmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBm
aW5hbCkKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbiBhbmQgb2Yg
dGhlIHNlcXVlbmNlLgorICAgICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gdHJ1ZQorICAgICAg
ICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAg
ICAgICAgICAgICAgIyBIYXMgYW5vdGhlciBvcGVyYW5kLgorICAgICAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICAg
ICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uLgorICAgICAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgcGFy
c2VFcnJvcigiRXhwZWN0ZWQgYSBjb21tYSwgbmV3bGluZSwgb3IgI3tmaW5hbH0gYWZ0ZXIgI3tv
cGVyYW5kcy5sYXN0LmR1bXB9IikKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgIH0KKyAgICAg
ICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykK
KyAgICAgICAgICBpZiBlbmRPZlNlcXVlbmNlCisgICAgICAgICAgICBicmVhaworICAgICAgICAg
IGVuZAorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhd
CisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAg
bmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBp
ZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgICAgICMgTWFjcm8gaW52b2NhdGlvbi4KKyAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAgc2tp
cE5ld0xpbmUKKyAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAg
QGlkeCArPSAxCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9vcCB7CisgICAgICAgICAg
ICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3Jv
IgorICAgICAgICAgICAgICAgICMgSXQncyBhIG1hY3JvIGxhbWJkYSEKKyAgICAgICAgICAgICAg
ICBjb2RlT3JpZ2luSW5uZXIgPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3JvVmFy
aWFibGVzCisgICAgICAgICAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAi
d2hpbGUgaW5zaWRlIG9mIGFub255bW91cyBtYWNybyBwYXNzZWQgYXMgYXJndW1lbnQgdG8gI3tu
YW1lfSIpCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgb3BlcmFu
ZHMgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJpYWJsZXMsIGJvZHkpCisg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJh
bmQoIndoaWxlIGluc2lkZSBvZiBtYWNybyBjYWxsIHRvICN7bmFtZX0iKQorICAgICAgICAgICAg
ICBlbmQKKyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vu
c1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAg
ICBicmVhaworICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAg
ICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cGFyc2VFcnJvciAiVW5leHBlY3RlZCAje0B0b2tlbnNbQGlkeF0uc3RyaW5nLmluc3BlY3R9IHdo
aWxlIHBhcnNpbmcgaW52b2NhdGlvbiBvZiBtYWNybyAje25hbWV9IgorICAgICAgICAgICAgICBl
bmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbmQKKyAgICAgICAgICBsaXN0IDw8IE1hY3Jv
Q2FsbC5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9IgorICAgICAgICBl
bmQKKyAgICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XSBvciBpc0xvY2FsTGFiZWwgQHRv
a2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
CisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiOiIKKyAgICAgICAg
IyBJdCdzIGEgbGFiZWwuCisgICAgICAgIGlmIGlzTGFiZWwgbmFtZQorICAgICAgICAgIGxpc3Qg
PDwgTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbHNlCisgICAgICAg
ICAgbGlzdCA8PCBMb2NhbExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAg
ZW5kCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yICJF
eHBlY3RpbmcgdGVybWluYWwgI3tmaW5hbH0gI3tjb21tZW50fSIKKyAgICAgIGVuZAorICAgIH0K
KyAgICBTZXF1ZW5jZS5uZXcoZmlyc3RDb2RlT3JpZ2luLCBsaXN0KQorICBlbmQKK2VuZAorCitk
ZWYgcGFyc2UodG9rZW5zKQorICBwYXJzZXIgPSBQYXJzZXIubmV3KHRva2VucykKKyAgcGFyc2Vy
LnBhcnNlU2VxdWVuY2UobmlsLCAiIikKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDU5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitHUFJTID0K
KyAgWworICAgInQwIiwKKyAgICJ0MSIsCisgICAidDIiLAorICAgInQzIiwKKyAgICJ0NCIsCisg
ICAiY2ZyIiwKKyAgICJhMCIsCisgICAiYTEiLAorICAgInIwIiwKKyAgICJyMSIsCisgICAic3Ai
CisgIF0KKworRlBSUyA9CisgIFsKKyAgICJmdDAiLAorICAgImZ0MSIsCisgICAiZnQyIiwKKyAg
ICJmdDMiLAorICAgImZ0NCIsCisgICAiZnQ1IiwKKyAgICJmYTAiLAorICAgImZhMSIsCisgICAi
ZmEyIiwKKyAgICJmYTMiLAorICAgImZyIgorICBdCisKK1JFR0lTVEVSUyA9IEdQUlMgKyBGUFJT
CisKK0dQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgR1BSUy5qb2luKCcpfCgnKSAr
ICcpKVxcWicpCitGUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMuam9pbign
KXwoJykgKyAnKSlcXFonKQorCitSRUdJU1RFUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgn
ICsgUkVHSVNURVJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjIxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1
aXJlICJhc3QiCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUg
InRyYW5zZm9ybSIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgY29tcHV0
ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgLT4gc2V0dGluZ3NDb21iaWF0aW9ucyAgICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbXB1dGVzIGFuIGFycmF5IG9mIHNldHRpbmdz
IG1hcHMsIHdoZXJlIGEgc2V0dGluZ3MgbWFwIGNvbnN0aXR1dGVzICMKKyMgYSBjb25maWd1cmF0
aW9uIGZvciB0aGUgYXNzZW1ibHkgY29kZSBiZWluZyBnZW5lcmF0ZWQuIFRoZSBtYXAgICAgICAg
IworIyBjb250YWlucyBrZXkgdmFsdWUgcGFpcnMgd2hlcmUga2V5cyBhcmUgc2V0dGluZ3MgbmFt
ZXMgKHN0cmluZ3MpIGFuZCAjCisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xlYW5zICh0cnVlIGZvciBl
bmFibGVkLCBmYWxzZSBmb3IgZGlzYWJsZWQpLiAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisKK2RlZiBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBz
ZXR0aW5nc0NvbWJpbmF0aW9ucyA9IFtdCisgIAorICBkZWYgc2V0dGluZ3NDb21iaW5hdG9yKHNl
dHRpbmdzQ29tYmluYXRpb25zLCBtYXBTb0ZhciwgcmVtYWluaW5nKQorICAgIGlmIHJlbWFpbmlu
Zy5lbXB0eT8KKyAgICAgIHNldHRpbmdzQ29tYmluYXRpb25zIDw8IG1hcFNvRmFyCisgICAgICBy
ZXR1cm4KKyAgICBlbmQKKyAgICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBuZXdN
YXBbcmVtYWluaW5nWzBdXSA9IHRydWUKKyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3ND
b21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgICAKKyAgICBuZXdNYXAg
PSBtYXBTb0Zhci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IGZhbHNlCisgICAgc2V0
dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmluZ1sx
Li4tMV0pCisgIGVuZAorICAKKyAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRp
b25zLCB7fSwgKGFzdC5maWx0ZXIoU2V0dGluZykudW5pcS5jb2xsZWN0e3x2fCB2Lm5hbWV9ICsg
WyJYODYiLCAiQVJNdjciXSkudW5pcSkKKyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zCitlbmQK
KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yU2V0dGluZ3MoY29uY3Jl
dGVTZXR0aW5ncywgYXN0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAg
ICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8IC4uLiB9ICAgICAg
ICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRGV0ZXJtaW5lcyBpZiB0aGUgc2V0dGlu
Z3MgY29tYmluYXRpb24gaXMgdmFsaWQsIGFuZCBpZiBzbywgY2FsbHMgICAgIworIyB0aGUgYmxv
Y2sgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91IG5lZWQgdG8gZ2VuZXJhdGUgY29kZS4gICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZm9yU2V0dGlu
Z3MoY29uY3JldGVTZXR0aW5ncywgYXN0KQorICAjIENoZWNrIHdoaWNoIGFyY2hpdGVjdHVyZXMg
dGhpcyBjb21iaW5hdG9yIGNsYWltcyB0byBzdXBwb3J0LgorICBudW1DbGFpbWVkQmFja2VuZHMg
PSAwCisgIHNlbGVjdGVkQmFja2VuZCA9IG5pbAorICBCQUNLRU5EUy5lYWNoIHsKKyAgICB8IGJh
Y2tlbmQgfAorICAgIGlzU3VwcG9ydGVkID0gY29uY3JldGVTZXR0aW5nc1tiYWNrZW5kXQorICAg
IHJhaXNlIHVubGVzcyBpc1N1cHBvcnRlZCAhPSBuaWwKKyAgICBudW1DbGFpbWVkQmFja2VuZHMg
Kz0gaWYgaXNTdXBwb3J0ZWQgdGhlbiAxIGVsc2UgMCBlbmQKKyAgICBpZiBpc1N1cHBvcnRlZAor
ICAgICAgc2VsZWN0ZWRCYWNrZW5kID0gYmFja2VuZAorICAgIGVuZAorICB9CisgIAorICByZXR1
cm4gaWYgbnVtQ2xhaW1lZEJhY2tlbmRzID4gMQorICAKKyAgIyBSZXNvbHZlIHRoZSBBU1QgZG93
biB0byBhIGxvdy1sZXZlbCBmb3JtIChubyBtYWNyb3Mgb3IgY29uZGl0aW9uYWxzKS4KKyAgbG93
TGV2ZWxBU1QgPSBhc3QucmVzb2x2ZVNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICB5
aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgc2VsZWN0ZWRCYWNrZW5kCitlbmQK
KworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yRWFjaFZhbGlkU2V0dGlu
Z3NDb21iaW5hdGlvbihhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAg
ICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAg
ICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21i
aW5hdGlvbihhc3QsIHNldHRpbmdzQ29tYmluYXRpb25zKSB7ICAgICAgICAgIworIyAgICAgfCBj
b25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgRXhlY3V0ZXMgdGhlIGdpdmVuIGJsb2NrIGZvciBl
YWNoIHZhbGlkIHNldHRpbmdzIGNvbWJpbmF0aW9uIGluIHRoZSAgIworIyBzZXR0aW5ncyBtYXAu
IFRoZSBhc3QgcGFzc2VkIGludG8gdGhlIGJsb2NrIGlzIHJlc29sdmVkICAgICAgICAgICAgICAj
CisjIChhc3QucmVzb2x2ZSkgYWdhaW5zdCB0aGUgc2V0dGluZ3MuICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgZmlyc3QgZm9ybSB3aWxs
IGNhbGwgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgZm9yIHlvdS4gICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZm9yRWFjaFZhbGlkU2V0dGluZ3ND
b21iaW5hdGlvbihhc3QsICpvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zKQorICByYWlzZSBp
ZiBvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zLnNpemUgPiAxCisgIAorICBpZiBvcHRpb25h
bFNldHRpbmdzQ29tYmluYXRpb25zLmVtcHR5PworICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0g
Y29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgZWxzZQorICAgIHNldHRpbmdzQ29t
YmluYXRpb25zID0gb3B0aW9uYWxTZXR0aW5nc0NvbWJpYXRpb25zWzBdCisgIGVuZAorICAKKyAg
c2V0dGluZ3NDb21iaW5hdGlvbnMuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IGNvbmNyZXRlU2V0
dGluZ3MsIGluZGV4IHwKKyAgICBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpIHsK
KyAgICAgIHwgY29uY3JldGVTZXR0aW5nc18sIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICAg
IHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAg
IH0KKyAgfQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGNwcFNl
dHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBSZXR1cm5zIHRoZSBDKysgY29kZSB1c2VkIHRv
IHRlc3QgaWYgd2UgYXJlIGluIGEgY29uZmlndXJhdGlvbiB0aGF0ICAjCisjIGNvcnJlc3BvbmRz
IHRvIHRoZSBnaXZlbiBjb25jcmV0ZSBzZXR0aW5ncy4gICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBjcHBTZXR0aW5nc1Rl
c3QoY29uY3JldGVTZXR0aW5ncykKKyAgIiNpZiAiICsgY29uY3JldGVTZXR0aW5ncy50b19hLmNv
bGxlY3R7CisgICAgfCBwYWlyIHwKKyAgICAoaWYgcGFpclsxXQorICAgICAgICIiCisgICAgIGVs
c2UKKyAgICAgICAiISIKKyAgICAgZW5kKSArICJPRkZMSU5FX0FTTV8iICsgcGFpclswXQorICB9
LmpvaW4oIiAmJiAiKQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IGlzQVNURXJyb25lb3VzKGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUZXN0cyB0byBzZWUgaWYgdGhlIEFT
VCBjbGFpbXMgdGhhdCB0aGVyZSBpcyBhbiBlcnJvciAtIGkuZS4gaWYgdGhlICAjCisjIHVzZXIn
cyBjb2RlLCBhZnRlciBzZXR0aW5ncyByZXNvbHV0aW9uLCBoYXMgRXJyb3Igbm9kZXMuICAgICAg
ICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBpc0FTVEVy
cm9uZW91cyhhc3QpCisgIG5vdCBhc3QuZmlsdGVyKEVycm9yKS5lbXB0eT8KK2VuZAorCisjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNy
ZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgRW1pdHMgYSBjaGVjayB0aGF0IGFzc2VydHMgdGhhdCB3ZSdyZSB1c2luZyB0aGUg
Z2l2ZW4gY29uZmlndXJhdGlvbi4gIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KworZGVmIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAgJG91dHB1dC5w
dXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAkb3V0cHV0LnB1dHMgIiNl
bHNlIgorICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIkNvbmZpZ3VyYXRpb24gbWlzbWF0Y2guXCIi
CisgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFz
dCwgYmFja2VuZCkgeyAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0
LCBiYWNrZW5kIHwgLi4uIH0gICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIEVtaXRzIGFsbCByZWxldmFudCBndWFyZHMgdG8gc2VlIGlmIHRoZSBjb25maWd1cmF0
aW9uIGhvbGRzIGFuZCAgICAgICMKKyMgY2FsbHMgdGhlIGJsb2NrIGlmIHRoZSBjb25maWd1cmF0
aW9uIGlzIG5vdCBlcnJvbmVvdXMuICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKworZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0
dGluZ3MsIGFzdCwgYmFja2VuZCkKKyAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25j
cmV0ZVNldHRpbmdzKQorICAKKyAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAgICRvdXRwdXQu
cHV0cyAiI2Vycm9yIFwiSW52YWxpZCBjb25maWd1cmF0aW9uLlwiIgorICBlbHNpZiBub3QgV09S
S0lOR19CQUNLRU5EUy5pbmNsdWRlPyBiYWNrZW5kCisgICAgJG91dHB1dC5wdXRzICIjZXJyb3Ig
XCJUaGlzIGJhY2tlbmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UKKyAgICB5aWVs
ZCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICAkb3V0cHV0LnB1
dHMgIiNlbmRpZiIKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBl
bWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KSB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5k
ZXggfCAuLi4gfSAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFbWl0cyBn
dWFyZCBjb2RlcyBmb3IgYWxsIHZhbGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgY2FsbHMgdGhlIGJs
b2NrICAjCisjIGZvciB0aG9zZSBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSB2YWxpZCBhbmQgbm90
IGVycm9uZW91cy4gICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisKK2RlZiBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KQorICBmb3JFYWNoVmFsaWRT
ZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2
ZWxBU1QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0
KGNvbmNyZXRlU2V0dGluZ3MpCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxB
U1QsIGJhY2tlbmQsIGluZGV4CisgICAgJG91dHB1dC5wdXRzICIjZW5kaWYiCisgIH0KK2VuZAor
CisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9y
bS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Ry
YW5zZm9ybS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNTIgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKKworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENv
bnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBJZlRoZW5FbHNlIG5vZGVz
IGJ5ICAgICAgICMKKyMgc3Vic3RpdHV0aW5nIGNvbmNyZXRlIGJvb2xlYW4gdmFsdWVzIGZvciBl
YWNoIFNldHRpbmcuICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAg
IG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZQorICBkZWYgcmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgRmFs
c2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5k
CisKK2NsYXNzIFNldHRpbmcKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBz
ZXR0aW5nc1tAbmFtZV0uYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZAorICBkZWYgcmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpLnZhbHVlIGFuZCBAcmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNO
b2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE9yCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgb3IgQHJpZ2h0
LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitj
bGFzcyBOb3QKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAobm90IEBjaGls
ZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKwor
Y2xhc3MgSWZUaGVuRWxzZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGlm
IEBwcmVkaWNhdGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZQorICAgICAgQHRoZW5D
YXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbHNlCisgICAgICBAZWxzZUNhc2Uu
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBT
ZXF1ZW5jZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG5ld0xpc3QgPSBb
XQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGl0ZW0gPSBpdGVtLnJl
c29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgIGlmIGl0ZW0uaXNfYT8gU2VxdWVuY2UKKyAg
ICAgICAgbmV3TGlzdCArPSBpdGVtLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8
PCBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5l
d0xpc3QpCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IG5vZGUuZGVtYWNyb2lmeShtYWNyb3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgbm9kZS5zdWJzdGl0dXRlKG1hcHBpbmcpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGRlbWFj
cm9pZnkoKSBjb25zdHJ1Y3RzIGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IE1hY3Jv
ICAgICAgICMKKyMgbm9kZXMsIHdoaWxlIHN1YnN0aXR1dGUoKSByZXBsYWNlcyBWYXJpYWJsZSBu
b2RlcyB3aXRoIHRoZSBnaXZlbiAgICAgIworIyBub2RlcyBpbiB0aGUgbWFwcGluZy4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3Jv
cykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLmRlbWFj
cm9pZnkobWFjcm9zKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5n
KQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3Rp
dHV0ZShtYXBwaW5nKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyht
YXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQu
c3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgTWFj
cm8KKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBteU1hcHBpbmcgPSB7fQorICAgIG1h
cHBpbmcuZWFjaF9wYWlyIHsKKyAgICAgIHwga2V5LCB2YWx1ZSB8CisgICAgICB1bmxlc3MgQHZh
cmlhYmxlcy5pbmNsdWRlPyBrZXkKKyAgICAgICAgbXlNYXBwaW5nW2tleV0gPSB2YWx1ZQorICAg
ICAgZW5kCisgICAgfQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAg
Y2hpbGQuc3Vic3RpdHV0ZShteU1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBW
YXJpYWJsZQorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0K
KyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVu
ZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGlu
ZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQor
ICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYg
c3Vic3RpdHV0ZShjb25zdGFudHMpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbXlDb25zdGFudHMg
PSBjb25zdGFudHMuZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAg
aWYgaXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAgICAgbXlDb25zdGFudHNbaXRlbS52YXJpYWJs
ZV0gPSBpdGVtLnZhbHVlLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICBlbHNlCisgICAg
ICAgIG5ld0xpc3QgPDwgaXRlbS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZW5kCisg
ICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKKyAgCisg
IGRlZiByZW5hbWVMYWJlbHMoY29tbWVudCkKKyAgICBtYXBwaW5nID0ge30KKyAgICAKKyAgICBA
bGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IExvY2FsTGFi
ZWwKKyAgICAgICAgbWFwcGluZ1tpdGVtXSA9IExvY2FsTGFiZWwudW5pcXVlKGlmIGNvbW1lbnQg
dGhlbiBjb21tZW50ICsgIl8iIGVsc2UgIiIgZW5kICsgaXRlbS5jbGVhbk5hbWUpCisgICAgICBl
bmQKKyAgICB9CisgICAgCisgICAgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICBlbmQKKyAg
CisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBteU1hY3JvcyA9IG1hY3Jvcy5kdXAKKyAg
ICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3Jv
CisgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBpdGVtCisgICAgICBlbmQKKyAgICB9Cisg
ICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAg
aWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICAjIElnbm9yZS4KKyAgICAgIGVsc2lmIGl0ZW0u
aXNfYT8gTWFjcm9DYWxsCisgICAgICAgIG1hcHBpbmcgPSB7fQorICAgICAgICBteU15TWFjcm9z
ID0gbXlNYWNyb3MuZHVwCisgICAgICAgIHJhaXNlICJDb3VsZCBub3QgZmluZCBtYWNybyAje2l0
ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgbXlNYWNyb3NbaXRl
bS5uYW1lXQorICAgICAgICByYWlzZSAiQXJndW1lbnQgY291bnQgbWlzbWF0Y2ggZm9yIGNhbGwg
dG8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIGl0ZW0u
b3BlcmFuZHMuc2l6ZSA9PSBteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlcy5zaXplCisgICAg
ICAgIGl0ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgfCBpZHggfAorICAgICAg
ICAgIGlmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBWYXJpYWJsZSBhbmQgbXlNYWNyb3NbaXRl
bS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0
ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lk
eF0ubmFtZV0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJs
ZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2lmIGl0ZW0ub3BlcmFuZHNbaWR4XS5p
c19hPyBNYWNybworICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZh
cmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgICBtYXBw
aW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFy
aWFibGVzW2lkeF1dID0gbmlsCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFt
ZV0udmFyaWFibGVzW2lkeF1dID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgZW5kCisg
ICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCArPSBteU1hY3Jvc1tpdGVtLm5hbWVdLmJvZHkuc3Vi
c3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNyb3MpLnJlbmFtZUxhYmVscyhpdGVt
Lm5hbWUpLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtLmRlbWFjcm9p
ZnkobXlNYWNyb3MpCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmln
aW4sIG5ld0xpc3QpLnN1YnN0aXR1dGUoe30pCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBD
b25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgaGFzIG9mZnNldCB2YWx1ZXMgaW5zdGVhZCBvZiBzeW1i
b2xpYyAgICAgICAjCisjIG9mZnNldHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVz
KQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2
ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1
Y3RPZmZzZXQKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlmIG9m
ZnNldHNbc2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0c1tzZWxm
XSkKKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNp
emVvZgorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgc2l6ZXNb
c2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgc2l6ZXNbc2VsZl0pCisgICAg
ZWxzZQorICAgICAgcHV0cyAiQ291bGQgbm90IGZpbmQgI3tzZWxmLmluc3BlY3R9IGluICN7c2l6
ZXMua2V5cy5pbnNwZWN0fSIKKyAgICAgIHB1dHMgInNpemVzID0gI3tzaXplcy5pbnNwZWN0fSIK
KyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgbm9kZS5mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFJlc29sdmUg
Y29uc3RhbnQgcmVmZXJlbmNlcyBhbmQgY29tcHV0ZSBhcml0aG1ldGljIGV4cHJlc3Npb25zLiAg
ICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAg
ZGVmIGZvbGQKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxk
LmZvbGQKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMKKyAgZGVmIGZv
bGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAg
IHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2Vs
ZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9y
aWdpbiwgQGxlZnQudmFsdWUgKyBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFN1
YkltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmln
aHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1l
ZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAg
IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgLSBAcmlnaHQudmFsdWUpCisg
IGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9
IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVu
bGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0
LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFs
dWUgKiBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0ZQorICBk
ZWYgZm9sZAorICAgIEBjaGlsZCA9IEBjaGlsZC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNz
IEBjaGlsZC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC1A
Y2hpbGQudmFsdWUpCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIG5vZGUucmVzb2x2ZUFmdGVyU2V0dGluZ3Mob2Zmc2V0cywgc2l6ZXMpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBDb21waWxlIGFzc2VtYmx5
IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNv
bHZlKG9mZnNldHMsIHNpemVzKQorICAgIGRlbWFjcm9pZnkoe30pLnJlc29sdmVPZmZzZXRzKG9m
ZnNldHMsIHNpemVzKS5mb2xkCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjczIEBACisjIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitjbGFzcyBSZWdpc3RlcklECisgIGRl
ZiBzdXBwb3J0czhCaXRPblg4NgorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwg
InIwIiwgInQxIiwgImExIiwgInIxIiwgInQyIiwgInQzIgorICAgICAgdHJ1ZQorICAgIHdoZW4g
InQ0IiwgImNmciIKKyAgICAgIGZhbHNlCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQK
KyAgZW5kCisgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIGNhc2UgbmFtZQorICAgIHdo
ZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisg
ICAgICAgICIlYWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlYXgiCisgICAgICB3aGVu
IDppbnQKKyAgICAgICAgIiVlYXgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBl
bmQKKyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hl
biA6Ynl0ZQorICAgICAgICAiJWRsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWR4Igor
ICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWR4IgorICAgICAgZWxzZQorICAgICAgICByYWlz
ZQorICAgICAgZW5kCisgICAgd2hlbiAidDIiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4g
OmJ5dGUKKyAgICAgICAgIiVjbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVjeCIKKyAg
ICAgIHdoZW4gOmludAorICAgICAgICAiJWVjeCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UK
KyAgICAgIGVuZAorICAgIHdoZW4gInQzIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpi
eXRlCisgICAgICAgICIlYmwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlYngiCisgICAg
ICB3aGVuIDppbnQKKyAgICAgICAgIiVlYngiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisg
ICAgICBlbmQKKyAgICB3aGVuICJ0NCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0
ZQorICAgICAgICAiJXNpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVzaSIKKyAgICAg
IHdoZW4gOmludAorICAgICAgICAiJWVzaSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAg
ICAgIGVuZAorICAgIHdoZW4gImNmciIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0
ZQorICAgICAgICAiJWRpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVkaSIKKyAgICAg
IHdoZW4gOmludAorICAgICAgICAiJWVkaSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAg
ICAgIGVuZAorICAgIHdoZW4gInNwIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRl
CisgICAgICAgICIlc3BsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNwIgorICAgICAg
d2hlbiA6aW50CisgICAgICAgICIlZXNwIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAg
ICAgZW5kCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4ODZD
YWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQK
KworY2xhc3MgRlBSZWdpc3RlcklECisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgcmFpc2Ug
dW5sZXNzIGtpbmQgPT0gOmRvdWJsZQorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIsICJm
YTAiLCAiZnIiCisgICAgICAiJXhtbTAiCisgICAgd2hlbiAiZnQxIiwgImZhMSIKKyAgICAgICIl
eG1tMSIKKyAgICB3aGVuICJmdDIiLCAiZmEyIgorICAgICAgIiV4bW0yIgorICAgIHdoZW4gImZ0
MyIsICJmYTMiCisgICAgICAiJXhtbTMiCisgICAgd2hlbiAiZnQ0IgorICAgICAgIiV4bW00Igor
ICAgIHdoZW4gImZ0NSIKKyAgICAgICIleG1tNSIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAg
IGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJh
bmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIHg4Nk9wZXJh
bmQoa2luZCkKKyAgICAiJCN7dmFsdWV9IgorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtp
bmQpCisgICAgIiN7dmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGRlZiBz
dXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5k
KGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0pIgor
ICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2lu
ZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgZGVmIHN1cHBvcnRzOEJpdE9u
WDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAi
I3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSwgI3tpbmRleC54ODZPcGVy
YW5kKDppbnQpfSwgI3tzY2FsZX0pIgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2lu
ZCkKKyAgICAiKiN7eDg2b3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29s
dXRlQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAg
IAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje2FkZHJlc3MudmFsdWV9IgorICBlbmQK
KworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7YWRkcmVzcy52YWx1ZX0iCisg
IGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgIGRlZiB4ODZMYWJlbAorICAgIHNh
bml0aXplTGFiZWxOYW1lKG5hbWUpCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkK
KyAgICB4ODZMYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCisg
IGRlZiB4ODZMYWJlbAorICAgICJMX29mZmxpbmVhc21fIituYW1lWzEuLi0xXQorICBlbmQKKyAg
ZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgeDg2TGFiZWwKKyAgZW5kCitlbmQKKworY2xh
c3MgSW5zdHJ1Y3Rpb24KKyAgZGVmIHg4Nk9wZXJhbmRzKCpraW5kcykKKyAgICByYWlzZSB1bmxl
c3Mga2luZHMuc2l6ZSA9PSBvcGVyYW5kcy5zaXplCisgICAgcmVzdWx0ID0gW10KKyAgICBraW5k
cy5zaXplLnRpbWVzIHsKKyAgICAgIHwgaWR4IHwKKyAgICAgIHJlc3VsdCA8PCBvcGVyYW5kc1tp
ZHhdLng4Nk9wZXJhbmQoa2luZHNbaWR4XSkKKyAgICB9CisgICAgcmVzdWx0LmpvaW4oIiwgIikK
KyAgZW5kCisKKyAgZGVmIHg4NlN1ZmZpeChraW5kKQorICAgIGNhc2Uga2luZAorICAgIHdoZW4g
OmJ5dGUKKyAgICAgICJiIgorICAgIHdoZW4gOmhhbGYKKyAgICAgICJ3IgorICAgIHdoZW4gOmlu
dAorICAgICAgImwiCisgICAgd2hlbiA6ZG91YmxlCisgICAgICAic2QiCisgICAgZWxzZQorICAg
ICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3BXaXRoTnVtT3Bl
cmFuZHMob3Bjb2RlLCBraW5kLCBudW1PcGVyYW5kcykKKyAgICBpZiBudW1PcGVyYW5kcyA9PSAz
CisgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1dHMg
Ilx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNb
Ml0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNpZiBvcGVyYW5kc1sxXSA9PSBvcGVyYW5k
c1syXQorICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNl
CisgICAgICAgICRhc20ucHV0cyAiXHRtb3Yje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAg
ICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2lu
ZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5kCisgICAgZWxz
ZQorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
a2luZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBoYW5kbGVYODZPcChvcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2T3BXaXRo
TnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXplKQorICBlbmQKKyAgCisgIGRl
ZiBoYW5kbGVYODZTaGlmdChvcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8g
SW1tZWRpYXRlIG9yIG9wZXJhbmRzWzBdID09IFJlZ2lzdGVySUQuZm9yTmFtZShuaWwsICJ0MiIp
CisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAg
ICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4
IgorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAlY2wsICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZChraW5kKX0iCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2
RG91YmxlQnJhbmNoKGJyYW5jaE9wY29kZSwgbW9kZSkKKyAgICBjYXNlIG1vZGUKKyAgICB3aGVu
IDpub3JtYWwKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAg
d2hlbiA6cmV2ZXJzZQorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIK
KyAgICBlbHNlCisgICAgICByYWlzZSBtb2RlLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1
dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICBlbmQKKyAg
CisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlKG9wY29kZVN1ZmZpeCwga2luZCkKKyAgICBpZiBv
cGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDAgYW5k
IG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9y
IG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZp
eChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNpZiBvcGVy
YW5kc1sxXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzFdLnZhbHVlID09IDAgYW5kIG9w
ZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9yIG9w
Y29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChr
aW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAk
YXNtLnB1dHMgIlx0Y21wI3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZChraW5kKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIGhhbmRsZVg4NkludEJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAg
aGFuZGxlWDg2SW50Q29tcGFyZShicmFuY2hPcGNvZGVbMS4uLTFdLCBraW5kKQorICAgICRhc20u
cHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgIGVuZAor
ICAKKyAgZGVmIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmQpCisgICAgaWYgb3BlcmFu
ZC5zdXBwb3J0czhCaXRPblg4NgorICAgICAgJGFzbS5wdXRzICJcdCN7c2V0T3Bjb2RlfSAje29w
ZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAje29w
ZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDpp
bnQpfSwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHQje3NldE9wY29kZX0gJWFsIgorICAgICAg
JGFzbS5wdXRzICJcdG1vdnpibCAlYWwsICVlYXgiCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wg
I3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBoYW5kbGVYODZJbnRDb21wYXJlU2V0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVY
ODZJbnRDb21wYXJlKHNldE9wY29kZVszLi4tMV0sIGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNl
dE9wY29kZSwgb3BlcmFuZHNbMl0pCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlRlc3Qoa2lu
ZCkKKyAgICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAg
d2hlbiAyCisgICAgICBtYXNrID0gSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtMSkKKyAgICB3
aGVuIDMKKyAgICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJF
eHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMsIGJ1dCBnb3QgI3tvcGVyYW5kcy5zaXplfSBhdCAje2Nv
ZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICAgIAorICAgIGlmIG1hc2suaXNfYT8gSW1tZWRp
YXRlIGFuZCBtYXNrLnZhbHVlID09IC0xCisgICAgICBpZiB2YWx1ZS5pc19hPyBSZWdpc3RlcklE
CisgICAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7dmFsdWUueDg2
T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNlCisg
ICAgICAgICRhc20ucHV0cyAiXHRjbXAje3g4NlN1ZmZpeChraW5kKX0gJDAsICN7dmFsdWUueDg2
T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0
dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje21hc2sueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUu
eDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkJy
YW5jaFRlc3QoYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAg
ICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHMubGFzdC54ODZMYWJlbH0i
CisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldFRlc3Qoc2V0T3Bjb2RlLCBraW5kKQorICAg
IGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5k
cy5sYXN0KQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcEJyYW5jaChvcGNvZGUsIGJyYW5j
aE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtp
bmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4g
NAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgd2hlbiAzCisgICAgICBqdW1w
VGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICByYWlzZSBzZWxmLmluc3BlY3QK
KyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7anVtcFRhcmdldC54
ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlN1YkJyYW5jaChicmFuY2hPcGNv
ZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSA0IGFuZCBvcGVyYW5kc1sxXSA9PSBv
cGVyYW5kc1syXQorICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQor
ICAgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMoInN1YiN7eDg2U3VmZml4KGtpbmQpfSIs
IGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGVuZAorICAgIGNhc2Ugb3BlcmFuZHMuc2l6
ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgd2hlbiAz
CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICByYWlzZSBz
ZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7
anVtcFRhcmdldC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGxvd2VyWDg2CisgICAgJGFz
bS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICBjYXNlIG9wY29kZQorICAgIHdoZW4gImFk
ZGkiLCAiYWRkcCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0u
aXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBS
ZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3Rl
cklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAgICAgICB1bmxlc3Mg
b3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICRhc20ucHV0cyAiXHRtb3Zs
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAkYXNtLnB1
dHMgIlx0bGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgZW5kCisg
ICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lz
dGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQK
KyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAg
ICAgJGFzbS5wdXRzICJcdGxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgZWxzZQorICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDAp
ID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3t4ODZPcGVyYW5k
cyg6aW50LCA6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAgd2hlbiAiYW5kaSIs
ICJhbmRwIgorICAgICAgaGFuZGxlWDg2T3AoImFuZGwiLCA6aW50KQorICAgIHdoZW4gImxzaGlm
dGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2FsbCIsIDppbnQpCisgICAgd2hlbiAibXVsaSIK
KyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRp
YXRlCisgICAgICAgICRhc20ucHV0cyAiXHRpbXVsbCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQs
IDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgIyBGSVhNRTogY291bGQgZG8gc29tZSBwZWVw
aG9sZSBpbiBjYXNlIHRoZSBsZWZ0IG9wZXJhbmQgaXMgaW1tZWRpYXRlIGFuZCBpdCdzCisgICAg
ICAgICMgYSBwb3dlciBvZiB0d28uCisgICAgICAgIGhhbmRsZVg4Nk9wKCJpbXVsbCIsIDppbnQp
CisgICAgICBlbmQKKyAgICB3aGVuICJuZWdpIgorICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3t4
ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAibm90aSIKKyAgICAgICRhc20ucHV0cyAiXHRu
b3RsICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm9yaSIsICJvcnAiCisgICAgICBo
YW5kbGVYODZPcCgib3JsIiwgOmludCkKKyAgICB3aGVuICJyc2hpZnRpIgorICAgICAgaGFuZGxl
WDg2U2hpZnQoInNhcmwiLCA6aW50KQorICAgIHdoZW4gInVyc2hpZnRpIgorICAgICAgaGFuZGxl
WDg2U2hpZnQoInNocmwiLCA6aW50KQorICAgIHdoZW4gInN1YmkiLCAic3VicCIKKyAgICAgIGlm
IG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAg
ICAgJGFzbS5wdXRzICJcdG5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwg
I3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgaGFu
ZGxlWDg2T3AoInN1YmwiLCA6aW50KQorICAgICAgZW5kCisgICAgd2hlbiAieG9yaSIsICJ4b3Jw
IgorICAgICAgaGFuZGxlWDg2T3AoInhvcmwiLCA6aW50KQorICAgIHdoZW4gImxvYWRpIiwgInN0
b3JlaSIsICJsb2FkcCIsICJzdG9yZXAiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje3g4Nk9w
ZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICB3aGVuICJsb2FkYiIKKyAgICAgICRhc20ucHV0cyAi
XHRtb3Z6YmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGgiCisgICAgICAkYXNtLnB1dHMgIlx0
bW92endsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9LCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAiXHRt
b3ZiICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0iCisgICAgd2hlbiAibG9hZGQiLCAibW92
ZWQiLCAic3RvcmVkIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNkICN7eDg2T3BlcmFuZHMoOmRv
dWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImFkZGQiCisgICAgICAkYXNtLnB1dHMgIlx0YWRk
c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAiZGl2ZCIKKyAg
ICAgICRhc20ucHV0cyAiXHRkaXZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIK
KyAgICB3aGVuICJzdWJkIgorICAgICAgJGFzbS5wdXRzICJcdHN1YnNkICN7eDg2T3BlcmFuZHMo
OmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gIm11bGQiCisgICAgICAkYXNtLnB1dHMgIlx0
bXVsc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3FydGQi
CisgICAgICAkYXNtLnB1dHMgIlx0c3FydHNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91
YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiY2ky
ZCIKKyAgICAgICRhc20ucHV0cyAiXHRjdnRzaTJzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImJk
ZXEiCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZGVxIikKKyAgICAg
ICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0s
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0
anAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4NkxhYmVs
fSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2lu
LCBvcGVyYW5kc1syXSkueDg2TGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIp
CisgICAgd2hlbiAiYmRuZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpuZSIsIDpu
b3JtYWwpCisgICAgd2hlbiAiYmRndCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEi
LCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5j
aCgiamFlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0IgorICAgICAgaGFuZGxlWDg2RG91Ymxl
QnJhbmNoKCJqYSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHRlcSIKKyAgICAgIGhhbmRsZVg4
NkRvdWJsZUJyYW5jaCgiamFlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRlcXVuIgorICAgICAg
aGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRuZXF1biIK
KyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4iKQorICAgICAg
aXNFcXVhbCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgICRhc20ucHV0cyAi
XHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0anAgI3tMYWJlbFJl
ZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4NkxhYmVsfSIKKyAgICAgICRh
c20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc0VxdWFsKS54
ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICAgICRhc20ucHV0
cyAiXHRqbXAgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICBpc0VxdWFsLmxvd2VyKCJY
ODYiKQorICAgIHdoZW4gImJkZ3R1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIi
LCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJy
YW5jaCgiamJlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdHVuIgorICAgICAgaGFuZGxlWDg2
RG91YmxlQnJhbmNoKCJqYiIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRsdGVxdW4iCisgICAgICBo
YW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYnRkMmkiCisg
ICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91
YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMg
Ilx0Y21wbCAkMHg4MDAwMDAwMCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAg
ICAgJGFzbS5wdXRzICJcdGplICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgIHdoZW4gInRk
MmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAi
YmNkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAk
YXNtLnB1dHMgIlx0dGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje29wZXJh
bmRzWzJdLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnRzaTJzZCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNk
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFzbS5w
dXRzICJcdGpwICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJcdGpu
ZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJtb3ZkeiIKKyAgICAgICRhc20u
cHV0cyAiXHR4b3JwZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gInBvcCIKKyAgICAgICRhc20u
cHV0cyAiXHRwb3AgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJw
dXNoIgorICAgICAgJGFzbS5wdXRzICJcdHB1c2ggI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgaWYgSW1tZWRp
YXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdp
c3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHR4b3JsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNpZiBv
cGVyYW5kc1swXSAhPSBvcGVyYW5kc1sxXQorICAgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje3g4
Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgIGVuZAorICAgIHdoZW4gIm5vcCIKKyAgICAg
ICRhc20ucHV0cyAiXHRub3AiCisgICAgd2hlbiAiYmllcSIsICJicGVxIgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqZSIsIDppbnQpCisgICAgd2hlbiAiYmluZXEiLCAiYnBuZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDppbnQpCisgICAgd2hlbiAiYmlhIiwgImJwYSIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6aW50KQorICAgIHdoZW4gImJpYWVxIiwg
ImJwYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6aW50KQorICAgIHdoZW4g
ImJpYiIsICJicGIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmludCkKKyAgICB3
aGVuICJiaWJlcSIsICJicGJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmlu
dCkKKyAgICB3aGVuICJiaWd0IiwgImJwZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpn
IiwgOmludCkKKyAgICB3aGVuICJiaWd0ZXEiLCAiYnBndGVxIgorICAgICAgaGFuZGxlWDg2SW50
QnJhbmNoKCJqZ2UiLCA6aW50KQorICAgIHdoZW4gImJpbHQiLCAiYnBsdCIKKyAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiamwiLCA6aW50KQorICAgIHdoZW4gImJpbHRlcSIsICJicGx0ZXEiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsZSIsIDppbnQpCisgICAgd2hlbiAiYmJlcSIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYm5lcSIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhIgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDpieXRlKQorICAgIHdoZW4gImJiYWVxIgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmIiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRlKQorICAgIHdoZW4gImJiZ3QiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJndGVxIgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0IgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDpieXRlKQorICAgIHdoZW4gImJibHRlcSIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGlvIiwg
ImJ0cG8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDppbnQpCisgICAgd2hlbiAi
YnRpcyIsICJidHBzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6aW50KQorICAg
IHdoZW4gImJ0aXoiLCAiYnRweiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6IiwgOmlu
dCkKKyAgICB3aGVuICJidGlueiIsICJidHBueiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3Qo
ImpueiIsIDppbnQpCisgICAgd2hlbiAiYnRibyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3Qo
ImpvIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRicyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3Qo
ImpzIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRieiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3Qo
Imp6IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRibnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0
KCJqbnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJqbXAiCisgICAgICAkYXNtLnB1dHMgIlx0am1wICN7
b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJhZGRpbyIsICJi
YWRkcG8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbyIsIDppbnQpCisgICAg
d2hlbiAiYmFkZGlzIiwgImJhZGRwcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwg
ImpzIiwgOmludCkKKyAgICB3aGVuICJiYWRkaXoiLCAiYmFkZHB6IgorICAgICAgaGFuZGxlWDg2
T3BCcmFuY2goImFkZGwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJhZGRpbnoiLCAiYmFkZHBu
eiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpueiIsIDppbnQpCisgICAgd2hl
biAiYnN1YmlvIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbyIsIDppbnQpCisgICAgd2hl
biAiYnN1YmlzIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqcyIsIDppbnQpCisgICAgd2hl
biAiYnN1Yml6IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqeiIsIDppbnQpCisgICAgd2hl
biAiYnN1YmlueiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam56IiwgOmludCkKKyAgICB3
aGVuICJibXVsaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAiam8iLCA6aW50
KQorICAgIHdoZW4gImJtdWxpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJq
cyIsIDppbnQpCisgICAgd2hlbiAiYm11bGl6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImlt
dWxsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJibXVsaW56IgorICAgICAgaGFuZGxlWDg2T3BC
cmFuY2goImltdWxsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYm9yaW8iCisgICAgICBoYW5k
bGVYODZPcEJyYW5jaCgib3JsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJib3JpcyIKKyAgICAg
IGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJvcml6Igor
ICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYm9y
aW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqbnoiLCA6aW50KQorICAgIHdo
ZW4gImJyZWFrIgorICAgICAgJGFzbS5wdXRzICJcdGludCAkMyIKKyAgICB3aGVuICJjYWxsIgor
ICAgICAgJGFzbS5wdXRzICJcdGNhbGwgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50
KX0iCisgICAgd2hlbiAicmV0IgorICAgICAgJGFzbS5wdXRzICJcdHJldCIKKyAgICB3aGVuICJj
aWVxIiwgImNwZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRlIiwgOmludCkK
KyAgICB3aGVuICJjaW5lcSIsICJjcG5lcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQo
InNldG5lIiwgOmludCkKKyAgICB3aGVuICJjaWEiLCAiY3BhIgorICAgICAgaGFuZGxlWDg2SW50
Q29tcGFyZVNldCgic2V0YSIsIDppbnQpCisgICAgd2hlbiAiY2lhZXEiLCAiY3BhZXEiCisgICAg
ICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRhZSIsIDppbnQpCisgICAgd2hlbiAiY2liIiwg
ImNwYiIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGIiLCA6aW50KQorICAgIHdo
ZW4gImNpYmVxIiwgImNwYmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YmUi
LCA6aW50KQorICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBh
cmVTZXQoInNldGciLCA6aW50KQorICAgIHdoZW4gImNpZ3RlcSIsICJjcGd0ZXEiCisgICAgICBo
YW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnZSIsIDppbnQpCisgICAgd2hlbiAiY2lsdCIsICJj
cGx0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bCIsIDppbnQpCisgICAgd2hl
biAiY2lsdGVxIiwgImNwbHRlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGxl
IiwgOmludCkKKyAgICB3aGVuICJ0aW8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwg
OmludCkKKyAgICB3aGVuICJ0aXMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmlu
dCkKKyAgICB3aGVuICJ0aXoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmludCkK
KyAgICB3aGVuICJ0aW56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6aW50KQor
ICAgIHdoZW4gInRibyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6Ynl0ZSkKKyAg
ICB3aGVuICJ0YnMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmJ5dGUpCisgICAg
d2hlbiAidGJ6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDpieXRlKQorICAgIHdo
ZW4gInRibnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDpieXRlKQorICAgIHdo
ZW4gInBlZWsiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzBdLnZhbHVlICog
NH0oJWVzcCksICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicG9r
ZSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50
KX0sICN7b3BlcmFuZHNbMV0udmFsdWUgKiA0fSglZXNwKSIKKyAgICB3aGVuICJjZHFpIgorICAg
ICAgJGFzbS5wdXRzICJcdGNkcSIKKyAgICB3aGVuICJpZGl2aSIKKyAgICAgICRhc20ucHV0cyAi
XHRpZGl2bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImZpaTJk
IgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQp
fSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAi
XHRtb3ZkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgJGFz
bS5wdXRzICJcdHBzbGxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cG9yICV4bW03
LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImZkMmlpIgor
ICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUp
fSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRt
b3ZzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRh
c20ucHV0cyAiXHRwc3JscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNkICV4
bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIHJh
aXNlICJCYWQgb3Bjb2RlOiAje29wY29kZX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6
YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKyNkZWZpbmUgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9o
CisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2Rl
Rm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkocmV2aXNpb24gMTA1Njk2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQ29tbW9uU2xvd1BhdGhzX2gKIAog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQu
aCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgog
CkBAIC00MSw2ICs0MiwzOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIENvbW1vblNs
b3dQYXRocyB7CiAKK0FMV0FZU19JTkxJTkUgRXhlY1N0YXRlKiBhcml0eUNoZWNrRm9yKEV4ZWNT
dGF0ZSogZXhlYywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGV4ZWMt
PmNhbGxlZSgpKTsKKyAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7CisgICAg
Q29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJh
dGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
ID0gZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKKworICAgIC8vIFRoaXMgZW5z
dXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8gYXJn
dW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgorICAgIGlmICghcmVnaXN0ZXJGaWxlLT5ncm93
KGV4ZWMtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdD
b2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSk7CisKKyAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJh
bWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5k
ZWZpbmVkLgorICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
IC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CisgICAgUmVnaXN0ZXIqIHNyYyA9IGV4ZWMt
PnJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyKiBkc3QgPSBleGVjLT5yZWdpc3RlcnMoKSArIGRl
bHRhOworCisgICAgaW50IGk7CisgICAgaW50IGVuZCA9IC1FeGVjU3RhdGU6Om9mZnNldEZvcihh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgZm9yIChpID0gLTE7IGkgPj0gZW5kOyAt
LWkpCisgICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKKworICAgIGVuZCAtPSBkZWx0YTsKKyAgICBm
b3IgKCA7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7CisK
KyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBFeGVjU3RhdGU6OmNyZWF0ZShkc3QpOworICAgIEFT
U0VSVCgodm9pZCopbmV3RXhlYyA8PSByZWdpc3RlckZpbGUtPmVuZCgpKTsKKyAgICByZXR1cm4g
bmV3RXhlYzsKK30KKwogQUxXQVlTX0lOTElORSBib29sIG9wSW5zdGFuY2VPZlNsb3coRXhlY1N0
YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGJhc2VWYWwsIEpTVmFsdWUgcHJvdG8p
CiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0NlbGwoKSB8fCAhYmFzZVZhbC5pc0NlbGwoKSB8fCAh
cHJvdG8uaXNDZWxsKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxMDU2OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAog
I2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAj
aW5jbHVkZSAiREZHRHJpdmVyLmgiCisjaW5jbHVkZSAiRXhlY3V0aW9uSGFybmVzcy5oIgogI2lu
Y2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVERyaXZlci5oIgogI2luY2x1ZGUgIlBhcnNlci5o
IgpAQCAtODQsNyArODUsNyBAQCBJbnRyaW5zaWMgTmF0aXZlRXhlY3V0YWJsZTo6aW50cmluc2lj
KCkgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIHZvaWQgamV0dGlzb25Db2RlQmxvY2so
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8VD4mIGNvZGVCbG9jaykKIHsKLSAgICBB
U1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwor
ICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5nZXRKSVRUeXBl
KCkpKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKICAgICBPd25QdHI8
VD4gY29kZUJsb2NrVG9KZXR0aXNvbiA9IGNvZGVCbG9jay5yZWxlYXNlKCk7CiAgICAgY29kZUJs
b2NrID0gc3RhdGljX3BvaW50ZXJfY2FzdDxUPihjb2RlQmxvY2tUb0pldHRpc29uLT5yZWxlYXNl
QWx0ZXJuYXRpdmUoKSk7CkBAIC0xNjcsOSArMTY4LDMwIEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0
YWJsZTo6Y29tcGlsZU9wdGltaXoKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRXZhbEV4
ZWN1dGFibGU6OmppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJv
b2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9ldmFsQ29k
ZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCitpbmxpbmUgY29uc3QgY2hhciog
c2FtcGxpbmdEZXNjcmlwdGlvbihKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisgICAgc3dp
dGNoIChqaXRUeXBlKSB7CisgICAgY2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rOgorICAg
ICAgICByZXR1cm4gIkludGVycHJldGVyIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2Ug
SklUQ29kZTo6QmFzZWxpbmVKSVQ6CisgICAgICAgIHJldHVybiAiQmFzZWxpbmUgQ29tcGlsYXRp
b24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6CisgICAgICAgIHJldHVybiAi
REZHIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIEpTT2JqZWN0KiBF
dmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAg
U2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGlu
ZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24g
KFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVz
Y3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9Q
QVJBTShqaXRUeXBlKTsKQEAgLTIxMCw3ICsyMzIsNyBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFi
bGU6OmNvbXBpbGVJbnRlcm5hCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWpp
dENvbXBpbGVJZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0
Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xv
YmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtMjk1LDkgKzMxNywxNSBAQCBKU09iamVjdCog
UHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpCiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2
b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERh
dGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9t
VGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwogSlNP
YmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVj
LCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlw
ZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENv
ZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBD
b21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24o
c2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAg
ICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtMzM2LDcgKzM2NCw3IEBAIEpTT2JqZWN0KiBQ
cm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGUKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQot
ICAgIGlmICghaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoKmdsb2JhbERhdGEsIG1fcHJvZ3JhbUNv
ZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9y
RXhlY3V0aW9uKCpnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNh
bGwsIGppdFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC00MTIsNyArNDQw
LDcgQEAgRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6YgogICAgIHdoaWxl
IChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEZ1
bmN0aW9uQ29kZUJsb2NrKj4ocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKTsKICAgICBBU1NFUlQocmVz
dWx0KTsKLSAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxp
bmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJ
VFR5cGUoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQzOCw2ICs0NjYsMTggQEAg
SlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZU9wdAogICAgIHJldHVybiBlcnJv
cjsKIH0KIAordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDYWxsKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5j
dGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENv
ZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUs
IEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7Cit9CisKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ29uc3Ry
dWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENv
bXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDb25z
dHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFy
aXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEZ1bmN0aW9uQ29kZUJsb2NrKiBG
dW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja1dpdGhCeXRlY29kZUZvcihDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IGJh
c2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwpAQCAtNDgyLDcgKzUyMiw3IEBAIFBhc3NPd25QdHI8
RnVuY3Rpb25Db2RlQmxvY2s+IEZ1bmN0aW9uRXgKIAogSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5O
b2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNh
bXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVK
SVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChU
T1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2Ny
aXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFS
QU0oZXhlYyk7CkBAIC01MDQsNyArNTQ0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNhbGwtPnNo
YXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGls
ZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9y
Q2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBt
X3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9y
Q2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRU
eXBlLCBDb2RlRm9yQ2FsbCkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTUyNCw3
ICs1NjQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAKIEpT
T2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbChF
eGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6
SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGpp
dFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRP
VEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBz
YW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAh
RU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC01NDYsNyArNTg2LDcg
QEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIG1fc3ltYm9s
VGFibGUgPSBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+c2hhcmVkU3ltYm9sVGFibGUoKTsKIAog
I2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZv
ckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9s
VGFibGUsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNv
bnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFi
bGUsIGppdFR5cGUsIENvZGVGb3JDb25zdHJ1Y3QpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRp
ZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShy
ZXZpc2lvbiAxMDU2OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRXhlY3V0YWJs
ZV9oCiAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlv
bktpbmQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIu
aCIKICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtMzksMTIgKzQwLDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIERlYnVnZ2VyOwogICAgIGNsYXNzIEV2YWxDb2RlQmxvY2s7CiAgICAgY2xh
c3MgRnVuY3Rpb25Db2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAK
ICAgICBzdHJ1Y3QgRXhjZXB0aW9uSW5mbzsKICAgICAKLSAgICBlbnVtIENvZGVTcGVjaWFsaXph
dGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogICAgIGVudW0gQ29t
cGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07
CiAKICAgICBpbmxpbmUgYm9vbCBpc0NhbGwoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpA
QCAtMzE5LDYgKzMyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBF
dmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVk
ZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC0zMzgsNiArMzQwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25P
cHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNH
bG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBFdmFsQ29kZUJsb2NrJiBnZW5lcmF0ZWRC
eXRlY29kZSgpCkBAIC0zODQsNiArMzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAog
ICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewor
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoK
ICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTQxMSw2ICs0MTUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAg
dm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQg
aml0Q29tcGlsZShKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIFByb2dyYW1Db2Rl
QmxvY2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkKQEAgLTQ1Myw2ICs0NTgsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRhYmxlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2Ny
aXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC01MDgsNiArNTE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6
ZWRDb2RlRm9yQ2FsbChKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9y
Q2FsbChKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRG
b3JDYWxsKCkgY29uc3QKQEAgLTUzNSw2ICs1NDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVG
b3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNv
bnN0cnVjdChKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0
ZWRGb3JDb25zdHJ1Y3QoKSBjb25zdApAQCAtNTgyLDYgKzU5MCwxNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgICAgICBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoZ2xv
YmFsRGF0YSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZv
aWQgaml0Q29tcGlsZUZvcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZv
ckNhbGwpIHsKKyAgICAgICAgICAgICAgICBqaXRDb21waWxlRm9yQ2FsbChnbG9iYWxEYXRhKTsK
KyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NF
UlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgICAgIGppdENvbXBpbGVGb3JD
b25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICAKICAgICAg
ICAgYm9vbCBpc0dlbmVyYXRlZEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9u
SGFybmVzcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRXhlY3V0aW9uSGFybmVzc19o
CisjZGVmaW5lIEV4ZWN1dGlvbkhhcm5lc3NfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiSklURHJpdmVyLmgiCisjaW5jbHVkZSAi
TExJbnRFbnRyeXBvaW50cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5h
bWUgQ29kZUJsb2NrVHlwZT4KK2lubGluZSBib29sIHByZXBhcmVGb3JFeGVjdXRpb24oSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklU
Q29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworI2lmIEVOQUJMRShM
TElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAg
ICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExM
SW50OjpnZXRFbnRyeXBvaW50KGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7
CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUo
TExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIGNv
ZGVCbG9jaywgaml0Q29kZSwgaml0VHlwZSk7Cit9CisKK2lubGluZSBib29sIHByZXBhcmVGdW5j
dGlvbkZvckV4ZWN1dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxGdW5jdGlv
bkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9s
VGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNv
ZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50
ZXJwcmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQoZ2xvYmFsRGF0
YSwga2luZCwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgY29kZUJs
b2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGtpbmQpOworI2Vu
ZGlmIC8vIEVOQUJMRShMTElOVCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHBy
b3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlD
aGVjaywgc3ltYm9sVGFibGUsIGppdFR5cGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIEVOQUJMRShKSVQpCisKKyNlbmRpZiAvLyBFeGVjdXRpb25IYXJuZXNzX2gKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJl
dmlzaW9uIDEwNTY5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZh
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJB
cnJheSA9IGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPltyZWdpc3RlckFy
cmF5U2l6ZV0pOwogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVycyA9IHJl
Z2lzdGVyQXJyYXkuZ2V0KCkgKyByZWdpc3Rlck9mZnNldDsKLQorICAgICAgICAKICAgICAgICAg
Ly8gQ29weSBhbGwgYXJndW1lbnRzIHRoYXQgY2FuIGJlIGNhcHR1cmVkIGJ5IG5hbWUgb3IgYnkg
dGhlIGFyZ3VtZW50cyBvYmplY3QuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9udW1D
YXB0dXJlZEFyZ3M7ICsraSkgewogICAgICAgICAgICAgaW50IGluZGV4ID0gQ2FsbEZyYW1lOjph
cmd1bWVudE9mZnNldChpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgJKHJldmlzaW9uIDEwNTY5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIAogICAgIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmllcjxV
bmtub3duPiB7CiAgICAgICAgIHR5cGVkZWYgV3JpdGVCYXJyaWVyPFVua25vd24+IEJhc2U7CkBA
IC0xMjIsNiArMTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEpT
QXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAg
ICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAko
cmV2aXNpb24gMTA1Njk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwog
ICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OworICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAg
IGVudW0gRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGll
cywKQEAgLTE2NSw2ICsxNjYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJv
b2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAg
IGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fc3RydWN0dXJlOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxMDU2OTYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMz
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAg
Y2xhc3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAg
IGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0xNDAsNiArMTQxLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlND
ZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgc3Rh
dGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElk
ZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMTA1Njk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw4
IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICAsIGtleXdv
cmRzKGFkb3B0UHRyKG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRlcnByZXRlcigwKQog
ICAgICwgaGVhcCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFzc0luZm8oJkpTQXJy
YXk6OnNfaW5mbykKKyAgICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpTRmluYWxPYmplY3Q6
OnNfaW5mbykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxhc3RTY3JhdGNoQnVm
ZmVyKDApCiAjZW5kaWYKQEAgLTIxNiw3ICsyMTgsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFs
RGF0YShHbG9iYWxEYXRhVHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1bmtz
KHRoaXMpKTsKICNlbmRpZgogCi0gICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUodGhpcy0+Y2Fu
VXNlSklUKCkpOworICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKCZsbGludERhdGEsIHRoaXMt
PmNhblVzZUpJVCgpKTsKIAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xsZWN0KCk7CiB9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2
aXNpb24gMTA1Njk2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNiBAQAogI2RlZmluZSBKU0dsb2Jh
bERhdGFfaAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oIgotI2lu
Y2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5j
bHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRl
ICJTdHJvbmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJKSVRTdHVicy5o
IgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRl
ICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUg
IlN0cm9uZy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJUaW1lb3V0Q2hl
Y2tlci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYgKzY2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7
CiAgICAgY2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmE7CiAgICAg
Y2xhc3MgUmVnRXhwQ2FjaGU7CkBAIC0yNDEsNiArMjQzLDEyIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247CisKKyAgICAg
ICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOworICAgICAgICBjb25z
dCBDbGFzc0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CisKKyAgICAgICAgTExJ
bnQ6OkRhdGEgbGxpbnREYXRhOworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgUmV0dXJuQWRk
cmVzc1B0ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBob3N0Q2FsbFJldHVy
blZhbHVlOwpAQCAtMzQ2LDYgKzM1NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogI3VuZGVmIHJlZ2lz
dGVyVHlwZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNHbG9iYWxEYXRh
KEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKICAgICAgICAgc3Rh
dGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAgdm9p
ZCBjcmVhdGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDU2OTYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBl
OwogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7Cisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUVycm9yQ29u
c3RydWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBSZWdFeHBD
b25zdHJ1Y3RvcjsKQEAgLTMzNSw2ICszMzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5m
byosIGludCBjb3VudCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVz
ZXQgaW50byBpbml0LgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluaXQoSlNPYmpl
Y3QqIHRoaXNWYWx1ZSk7CiAgICAgICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAx
MDU2OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEdl
dHRlclNldHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJuYWxGdW5j
dGlvbjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2Vk
QmxvY2s7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5
TmFtZUFycmF5OwpAQCAtMjcxLDYgKzI3Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBK
U09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5l
U3RvcmFnZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gTm9ib2R5IHNob3VsZCBldmVyIGFz
ayBhbnkgb2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0aGluZyBhbHJlYWR5IGtub3duIHRvIGJl
IGEgSlNPYmplY3QuCiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXI7CiAg
ICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7CkBAIC0zODMsNiArMzg2LDggQEAg
Q09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0IEpT
RmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSkKICAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX2lubGlu
ZVN0b3JhZ2UpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwNTY5NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciA6IHB1
YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtOTYsNiArOTcsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9w
ZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKIAogICAgICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTA1Njk2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAt
MzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1N0cmluZzsKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBKU1N0cmluZyoganNFbXB0eVN0
cmluZyhKU0dsb2JhbERhdGEqKTsKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3Rh
dGUqKTsKQEAgLTI0MSw2ICsyNDIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0
ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAg
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikg
Y29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIqKSBjb25zdDsK
ICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFyKikgY29uc3Q7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAxMDU2
OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkIHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJsZS4KICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8PCAxOwogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEgPDwgMjsKQEAgLTg3LDYgKzg5
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBi
b29sIGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA8PSAo
MSA8PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAgICAgICBib29sIGlzU2V0T25G
bGFnczIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8PCA4KSk7IHJl
dHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxMDU2OTYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDEw
ICsxMTYsOSBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiAgICAg
cmV0dXJuIEpTTm90QW5PYmplY3Q6OmNyZWF0ZShleGVjKTsKIH0KIAotI2lmbmRlZiBOREVCVUcK
IGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIHsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IHNpemUgPSA2NDsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSAxMjg7CiAgICAgc3Rh
dGljIGNoYXIgZGVzY3JpcHRpb25bc2l6ZV07CiAKICAgICBpZiAoISp0aGlzKQpAQCAtMTI4LDE0
ICsxMjcsMTQgQEAgY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogICAgICAgICBzbnByaW50
ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkludDMyOiAlZCIsIGFzSW50MzIoKSk7CiAgICAgZWxzZSBp
ZiAoaXNEb3VibGUoKSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHNucHJpbnRmKGRl
c2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICVseCIsIGFzRG91YmxlKCksIHJlaW50ZXJw
cmV0RG91YmxlVG9JbnRwdHIoYXNEb3VibGUoKSkpOworICAgICAgICBzbnByaW50ZihkZXNjcmlw
dGlvbiwgc2l6ZSwgIkRvdWJsZTogJWx4LCAlbGYiLCByZWludGVycHJldERvdWJsZVRvSW50cHRy
KGFzRG91YmxlKCkpLCBhc0RvdWJsZSgpKTsKICNlbHNlCiAgICAgICAgIHVuaW9uIHsKICAgICAg
ICAgICAgIGRvdWJsZSBhc0RvdWJsZTsKICAgICAgICAgICAgIHVpbnQzMl90IGFzVHdvSW50MzJz
WzJdOwogICAgICAgICB9IHU7CiAgICAgICAgIHUuYXNEb3VibGUgPSBhc0RvdWJsZSgpOwotICAg
ICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlMDh4OiUwOHgi
LCBhc0RvdWJsZSgpLCB1LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdKTsKKyAgICAg
ICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICUwOHg6JTA4eCwgJWxmIiwg
dS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSwgYXNEb3VibGUoKSk7CiAjZW5kaWYK
ICAgICB9IGVsc2UgaWYgKGlzQ2VsbCgpKQogICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwg
c2l6ZSwgIkNlbGw6ICVwIiwgYXNDZWxsKCkpOwpAQCAtMTUyLDcgKzE1MSw2IEBAIGNoYXIqIEpT
VmFsdWU6OmRlc2NyaXB0aW9uKCkKIAogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KLSNlbmRp
ZgogCiAvLyBUaGlzIGluIHRoZSBUb0ludDMyIG9wZXJhdGlvbiBpcyBkZWZpbmVkIGluIHNlY3Rp
b24gOS41IG9mIHRoZSBFQ01BLTI2MiBzcGVjLgogLy8gTm90ZSB0aGF0IHRoaXMgb3BlcmF0aW9u
IGlzIGlkZW50aWNhbCB0byBUb1VJbnQzMiBvdGhlciB0aGFuIHRvIGludGVycHJldGF0aW9uCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAxMDU2
OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIzMyw5ICsyMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNDZWxs
KiBhc0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlk
Q2FsbGVlKCk7CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGNoYXIqIGRlc2NyaXB0aW9uKCk7
Ci0jZW5kaWYKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBKU1Zh
bHVlKFdyaXRlQmFycmllckJhc2U8VD4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMTA1Njk2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCwxMCArMzgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAKICAgICBjbGFzcyBK
U1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBmcmll
bmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lv
biAxMDU2OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTAgQEAgdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9u
Rm9yQ29uc3RydWN0SW5saQogCiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsKIAoraW50
MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2ludDMyX3QgZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworaW50MzJfdCBleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVG
b3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKQEAgLTEzNyw2ICsxNDEsMTAgQEAgdm9pZCBpbml0
aWFsaXplT3B0aW9ucygpCiAgICAgCiAgICAgU0VUKG1heGltdW1JbmxpbmluZ0RlcHRoLCA1KTsK
IAorICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcCwgICAgIC0x
MDApOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb24s
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKKyAgICBTRVQoZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9ySklUU29vbiwgICAgICAgICAgICAtMTAwKTsKKwogICAgIFNFVChleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwLCAgICAgLTEwMDApOwogICAg
IFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCwgLTUw
MDApOwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1l
U29vbiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOwpAQCAtMTg1LDYgKzE5
Myw4IEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIGlmIChjcHVzVG9Vc2UgPCAxKQog
ICAgICAgICBjcHVzVG9Vc2UgPSAxOwogICAgIAorICAgIGNwdXNUb1VzZSA9IDE7CisgICAgCiAg
ICAgU0VUKG51bWJlck9mR0NNYXJrZXJzLCBjcHVzVG9Vc2UpOwogCiAgICAgQVNTRVJUKGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uIDw9IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEwNTY5NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiAr
MzcsMTAgQEAgZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cgogCiBleHRl
cm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERlcHRoIG9mIGlubGluZSBzdGFj
aywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMuCiAKK2V4dGVybiBpbnQz
Ml90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworZXh0ZXJuIGludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworZXh0ZXJuIGlu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogZXh0ZXJuIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGV4dGVybiBpbnQz
Ml90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogZXh0
ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNv
b247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShy
ZXZpc2lvbiAxMDU2OTYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNo
YWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNs
YXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFz
cyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCkBAIC05
MSw2ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFU
QSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAg
ICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJ
KHJldmlzaW9uIDEwNTY5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5
TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5RGF0YTsKICAgICBjbGFzcyBT
dHJ1Y3R1cmVDaGFpbjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHBy
aXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
ICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwg
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25z
dCBDbGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYpOwogICAgICAg
ICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9u
IDEwNTY5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWlu
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU3RydWN0dXJlOwog
CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlNDZWxsIHsKQEAgLTc0LDYgKzc1
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBT
dHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGlj
IHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVy
PFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgJKHJldmlzaW9uIDEwNTY5NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxh
dGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTE4LDYgKzkxOCwxOCBAQAogI2RlZmluZSBFTkFC
TEVfSklUIDEKICNlbmRpZgogCisvKiBPbiBzb21lIG9mIHRoZSBwbGF0Zm9ybXMgd2hlcmUgd2Ug
aGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNvIGhhdmUgdGhlIAorICAgbG93LWxldmVsIGludGVy
cHJldGVyLiAqLworI2lmICFkZWZpbmVkKEVOQUJMRV9MTElOVCkgJiYgRU5BQkxFKEpJVCkgJiYg
UExBVEZPUk0oTUFDKSAmJiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBFTkFCTEVfTExJTlQg
MQorI2VuZGlmCisKKy8qIElmIHdlIGhhdmUgTExJbnQgZW5hYmxlZCBhbmQgdGhlIEpJVCBlbmFi
bGVkLCB3ZSBhbHNvIGVuYWJsZSBPU1JpbmcgZnJvbQorICAgTExJbnQgdG8gdGhlIEpJVC4gKi8K
KyNpZiAhZGVmaW5lZChFTkFCTEVfTExJTlRfT1NSX1RPX0pJVCkgJiYgRU5BQkxFKEpJVCkgJiYg
RU5BQkxFKExMSU5UKQorI2RlZmluZSBFTkFCTEVfTExJTlRfT1NSX1RPX0pJVCAxCisjZW5kaWYK
KwogI2lmICFkZWZpbmVkKEVOQUJMRV9ERkdfSklUKSAmJiBFTkFCTEUoSklUKQogLyogRW5hYmxl
IHRoZSBERkcgSklUIG9uIFg4NiBhbmQgWDg2XzY0LiAgT25seSB0ZXN0ZWQgb24gTWFjIGFuZCBH
TlUvTGludXguICovCiAjaWYgKENQVShYODYpIHx8IENQVShYODZfNjQpKSAmJiAoUExBVEZPUk0o
TUFDKSB8fCBPUyhMSU5VWCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRp
bmVsTGlua2VkTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
U2VudGluZWxMaW5rZWRMaXN0LmgJKHJldmlzaW9uIDEwNTY5NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYg
Kzg2LDggQEAgcHVibGljOgogCiAgICAgaXRlcmF0b3IgYmVnaW4oKTsKICAgICBpdGVyYXRvciBl
bmQoKTsKKyAgICAKKyAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBiZWdpbigpID09IGVuZCgp
OyB9CiAKIHByaXZhdGU6CiAgICAgUmF3Tm9kZSBtX2hlYWRTZW50aW5lbDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gMTA1Njk2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5n
ICogQ0ZTdHJpCiAvLyBMYW5kaW5nIHRoZSBmaWxlIG1vdmVzIGluIG9uZSBwYXRjaCwgd2lsbCBm
b2xsb3cgb24gd2l0aCBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgbmFtZXNwYWNlcy4KIG5hbWVzcGFj
ZSBKU0Mgewogc3RydWN0IElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRvcjsKK2NsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSWRlbnRpZmll
ckNoYXJCdWZmZXJUcmFuc2xhdG9yOwogc3RydWN0IElkZW50aWZpZXJMQ2hhckZyb21VQ2hhclRy
YW5zbGF0b3I7CiB9CkBAIC03Miw3ICs3Myw4IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgIGZy
aWVuZCBzdHJ1Y3QgV1RGOjpTdWJzdHJpbmdUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3Qg
V1RGOjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmlu
Z0ltcGw7Ci0KKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgCiBwcml2YXRlOgogICAgIGVudW0gQnVmZmVyT3duZXJzaGlwIHsKICAgICAgICAgQnVmZmVy
SW50ZXJuYWwsCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123783</attachid>
            <date>2012-01-24 12:32:11 -0800</date>
            <delta_ts>2012-01-24 15:08:07 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>tripletier_patch_38.diff</filename>
            <type>text/plain</type>
            <size>436025</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1NzcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3NyBA
QAorMjAxMi0wMS0yMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV09SSyBJTiBQUk9HUkVTUy4gIEl0IGFwcGVhcnMgdG8gd29yayBidXQgbmVlZHMg
bW9yZSB0ZXN0aW5nLgorICAgICAgICAKKyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0
ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBjYWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAg
aW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExMSW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVy
LiBKU0Mgd2lsbCBub3cKKyAgICAgICAgd2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBM
TEludCBhbmQgd2lsbCBvbmx5IHRpZXIgdXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIg
dGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4KKyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0
ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9mIG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFj
cm8KKyAgICAgICAgYXNzZW1ibHkgaXMgY29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIg
KHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gKKyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBj
b252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAg
bWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVjdCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5m
b3JtYXRpb24KKyAgICAgICAgKGJhc2ljYWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMg
b2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAgICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGlu
IExMSW50IGFwcGVhcnMgdG8gdGhlIHJlc3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0Cisg
ICAgICAgIHdlcmUgZXhlY3V0aW5nIGluIHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2Ug
ZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAorICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNh
bGxzIGp1c3Qgd29yayBhbmQgcmVxdWlyZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlv
bmFsIG92ZXJoZWFkLgorICAgICAgICAKKyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIu
NXggZmFzdGVyIHRoYW4gb3VyIG9sZCBpbnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAg
IFY4LCBhbmQgS3Jha2VuLiBUaGlzIGlzIHRoZSAiZmlyc3QgYXR0ZW1wdCIgcGVyZm9ybWFuY2Ug
LSBubyB3b3JrIGhhcyBiZWVuCisgICAgICAgIGRvbmUgdG8gZGlhZ25vc2UgYW55IHBvdGVudGlh
bCBib3R0bGVuZWNrcy4gTWFueSBvYnZpb3VzIG9uZXMgZXhpc3QsIGxpa2UKKyAgICAgICAgcmVk
dWNpbmcgdGhlIG51bWJlciBvZiBpbnN0cnVjdGlvbnMgaW1wbGVtZW50ZWQgYXMgc2xvdyBjYWxs
cyB0byBDKysgY29kZQorICAgICAgICBhbmQgbWFraW5nIHByb3BlcnR5IGFjY2VzcyBjYWNoaW5n
IG1vcmUgYWdncmVzc2l2ZS4KKyAgICAgICAgCisgICAgICAgIEFzIGFuIGFkZGl0aW9uYWwgY2hh
bmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5kIEpTVmFsdWUKKyAgICAg
ICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBkZWJ1Z2dpbmcgc29tZSBv
ZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0Y2ggd291bGQgaGF2ZSBi
ZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAgICBkb24ndCBiZWxpZXZl
IHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxvYXQgdGhhdCB0aGlzCisg
ICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKiBieXRlY29kZS9CeXRlY29kZUNv
bnZlbnRpb25zLmg6IEFkZGVkLgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNw
cDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAg
ICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0
KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAgICog
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5j
b25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ry
b25nUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5saW5rQ2FsbHMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUNv
ZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpqZXR0aXNv
bik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAg
IChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6
RXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUltcGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNv
ZGVCbG9jazo6aml0Q29tcGlsZUltcGwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5o
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5lVmVyc2lvbik6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6bGlua0luY29taW5nQ2FsbCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmhhbmRsZUJ5dGVj
b2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRD
b21waWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNPcHRpbWl6ZWRSZXBsYWNlbWVu
dCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRMTEludENhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVzb2x2ZUluZm8pOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpsaWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6Omxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6bGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFk
ZEZyZXF1ZW50RXhpdFNpdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0
aW1lU29vbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmxsaW50RXhlY3V0ZUNvdW50ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAg
ICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5oOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6Cisg
ICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgICogYnl0ZWNv
ZGUvTExJbnRDYWxsTGlua0luZm8uaDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50Q2FsbExp
bmtJbmZvOjpMTEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJ
bmZvOjp+TExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5m
bzo6aXNMaW5rZWQpOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6dW5saW5rKToK
KyAgICAgICAgKiBieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChK
U0M6Ok1ldGhvZENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29k
ZS9PcGNvZGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcDoKKyAgICAg
ICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0M6
OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6c2V0RHVtcHNHZW5lcmF0ZWRDb2RlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6CisgICAgICAgIChKU0M6
OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVj
dFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gpOgorICAgICAgICAqIGRmZy9ERkdC
eXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6Omdl
dFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5oOgorICAgICAg
ICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0
Q29tcGlsZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAg
KiBoZWFwL0FsbG9jYXRpb25TcGFjZS5oOgorICAgICAgICAqIGhlYXAvSGVhcC5jcHA6CisgICAg
ICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAg
ICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6dmlzaXRDaGlsZHJlbik6Cisg
ICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxG
cmFtZS5oOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmN1cnJlbnRWUEMpOgorICAgICAgICAq
IGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6
On5JbnRlcnByZXRlcik6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjppbml0aWFsaXplKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpy
ZXRyaWV2ZUxhc3RDYWxsZXIpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGUpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZW5h
YmxlZCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmg6CisgICAgICAgICog
aml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6Z2V0SG9z
dENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJl
dHVyblZhbHVlLmg6IEFkZGVkLgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlND
OjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZh
dGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6
CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNPcHRp
bWl6aW5nSklUKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNCYXNlbGluZUNvZGUpOgorICAg
ICAgICAoSlNDOjpKSVRDb2RlOjpKSVRDb2RlKToKKyAgICAgICAgKiBqaXQvSklURHJpdmVyLmg6
CisgICAgICAgIChKU0M6OmppdENvbXBpbGVJZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKEpTQzo6
aml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZSk6CisgICAgICAgICogaml0L0pJVEV4Y2Vw
dGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpqaXRUaHJvdyk6CisgICAgICAgICogaml0L0pJVFN0
dWJzLmNwcDoKKyAgICAgICAgKEpTQzo6REVGSU5FX1NUVUJfRlVOQ1RJT04pOgorICAgICAgICAq
IGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAg
KiBsbGludC9MTEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6
CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50
L0xMSW50RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZ1
bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFdmFsRW50cnlwb2lu
dCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAg
ICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6
OmdldEVudHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6aW50ZXJwcmV0ZXJUaHJvdyk6CisgICAgICAgIChK
U0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhy
b3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAg
KiBsbGludC9MTEludEhlbHBlcnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6Omxs
aW50X3RyYWNlX29wZXJhbmQpOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfdHJhY2VfdmFs
dWUpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRfSEVMUEVSX0RFQ0wpOgorICAgICAgICAo
SlNDOjpMTEludDo6dHJhY2VGdW5jdGlvblByb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnNob3VsZEpJVCk6CisgICAgICAgIChKU0M6OkxMSW50OjplbnRyeU9TUik6CisgICAgICAgIChK
U0M6OkxMSW50OjpyZXNvbHZlR2xvYmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFs
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnRPZmZzZXRzRXh0cmFj
dG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5r
cy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1w
VG8pOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlD
aGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmV2
YWxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnByb2dyYW1FbnRy
eVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5oOiBBZGRlZC4K
KyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAgICAg
ICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTogQWRk
ZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICogb2Zm
bGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBv
ZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9zZXR0aW5ncy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS90
cmFuc2Zvcm0ucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBBZGRlZC4K
KyAgICAgICAgKiBydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaDogQWRkZWQuCisgICAg
ICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xv
d1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3Bw
OgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2YWxF
eGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6c2FtcGxpbmdEZXNjcmlwdGlv
bik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAg
ICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6CisgICAgICAgIChKU0M6
OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbCk6CisgICAgICAgIChKU0M6
OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3Mu
aDogQWRkZWQuCisgICAgICAgIChKU0M6OnByZXBhcmVGb3JFeGVjdXRpb24pOgorICAgICAgICAo
SlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
Y3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dGVhck9mZik6CisgICAg
ICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
RGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgICogcnVudGltZS9KU1N0cmlu
Zy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUv
SlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmRlc2NyaXB0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRp
b25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6Cisg
ICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1
cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oOgorICAgICAg
ICAoV1RGOjpTZW50aW5lbExpbmtlZExpc3Q6OmlzRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0
L1N0cmluZ0ltcGwuaDoKKwogMjAxMi0wMS0yNCAgS2VuaWNoaSBJc2hpYmFzaGkgIDxiYXNoaUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBBZGQgVWludDhDbGFtcGVkQXJyYXkgc3VwcG9y
dApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlz
aW9uIDEwNTc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcsIDIwMDgsIDIwMDksIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBD
b3B5cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC02
MCw2ICs2MCw3IEBAIGFsbCA6IFwKICAgICBTdHJpbmdDb25zdHJ1Y3Rvci5sdXQuaCBcCiAgICAg
U3RyaW5nUHJvdG90eXBlLmx1dC5oIFwKICAgICBkb2NzL2J5dGVjb2RlLmh0bWwgXAorICAgIExM
SW50QXNzZW1ibHkuaC5QSE9OWSBcCiAjCiAKICMgbG9va3VwIHRhYmxlcyBmb3IgY2xhc3NlcwpA
QCAtMTA0LDMgKzEwNSwxMSBAQCBIZWFkZXJEZXRlY3Rpb24uaCA6CiAJZWNobyA+ICRACiAKIGVu
ZGlmCisKKyMgQXNzZW1ibHkgZm9yIHRoZSBMb3dMZXZlbEludGVycHJldGVyCisKKyMgVGhpcyBi
dWlsZHMgZXZlcnkgdGltZSBiZWNhdXNlIHRoZXJlIGlzIG5vIGVhc3kgd2F5IHRvIGRlc2NyaWJl
CisjIHRoZSBkZXBlbmRlbmNpZXMgdXNpbmcgbWFrZS4gSW5zdGVhZCwgdGhlIGFzc2VtYmxlciB3
aWxsIGRlY2lkZSBvbgorIyBpdHMgb3duIHdoZXRoZXIgb3Igbm90IGl0IGRpZCBhbnl0aGluZyB0
aGF0IHdvdWxkIGxlYWQgdG8gYSBjaGFuZ2UuCitMTEludEFzc2VtYmx5LmguUEhPTlk6CisJcnVi
eSAkKEphdmFTY3JpcHRDb3JlKS9vZmZsaW5lYXNtL2FzbS5yYiAkKEphdmFTY3JpcHRDb3JlKS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvSlNDTExJ
bnRPZmZzZXRzRXh0cmFjdG9yIExMSW50QXNzZW1ibHkuaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDEwNTc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC03LDYgKzcsMTUgQEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJn
ZXQgc2VjdGlvbiAqLworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJh
dGlvbkxpc3QgPSAwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovOworCQkJYnVp
bGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERl
cml2ZWQgU291cmNlcyAqLywKKwkJCSk7CisJCQluYW1lID0gIkxMSW50IE9mZnNldHMiOworCQkJ
cHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKIAkJNjVGQjNGNjYwOUQxMUU5
MTAwRjQ5REVCIC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEFnZ3JlZ2F0
ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2NUZCM0Y3NzA5RDExRUJEMDBG
NDlERUIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQg
IkRlcml2ZWQgU291cmNlcyIgKi87CkBAIC0xNCw2ICsyMyw5IEBACiAJCQkJNjVGQjNGNjUwOUQx
MUU5MTAwRjQ5REVCIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk1RDM1REVF
MTBDN0MxNDBCMDA4NjQ4QjIgLyogR2VuZXJhdGUgRFRyYWNlIGhlYWRlciAqLywKIAkJCSk7CisJ
CQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8sCisJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwog
CQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJfTsKQEAgLTQ4LDYgKzYwLDEw
IEBACiAJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlm
aWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkFD
OTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCQ0Q4MzU3MTQ4
NTg0NTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1w
b3JhcnlDaGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwQkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMz
MDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4
NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5
cG9pbnRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50
cnlwb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgzOUMxNEJDRjQ2
MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5r
cy5jcHAgKi87IH07CisJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTgx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENv
ZGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYg
LyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0FCMTRCQ0Y1
QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhw
cmVzc2lvblJhbmdlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC01OCw5ICs3NCwxMyBAQAogCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYg
LyogTWV0aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJ
bmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCNjE0QkNGOERGMDA4
ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJu
T2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxM
aW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNUYxNUYxNEI3QTcz
RTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNs
b3dQYXRocy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGMTZENzI2MTQyQzM5QzAwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3
ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAv
KiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3QzE0QkU3Mjc2MDBB
REM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhh
cm5lc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNzkxNEJF
NzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2
NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29u
dmVudGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjI0MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNDJEQTUx
M0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU2RjE0NzM4RjMxMDAx
MjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3Mu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJD
NTU3MDE0NzM4RjM1MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYg
LyogREZHQ29kZUJsb2Nrcy5jcHAgKi87IH07CkBAIC03MSw2ICs5MSwxOSBAQAogCQkwRjQzMTcz
ODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyog
TGlzdGFibGVIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDgwMTRC
QTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJ
VEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovOyB9
OworCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RTE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50
SGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLzsgc2V0dGlu
Z3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby11bnVzZWQtcGFyYW1ldGVyIjsgfTsgfTsKKwkJ
MEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi87
IH07CisJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUQxNEJB
N0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MENBMTRC
QkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29t
bW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJ
MEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzYxNEJCQjE2
OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAv
KiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVy
cHJldGVyLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVs
SW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDIx
NEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnRE
YXRhLmNwcCAqLzsgfTsKKwkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0Yx
NEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0
Q2FsbFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVl
LmNwcCAqLzsgfTsKKwkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJu
VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1RjA4Q0YxNDZDNzYz
MzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBV
bmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAxNzQxNDNGQ0QzMzAwNjhCNzdDIC8qIERGR1ZhcmlhYmxl
QWNjZXNzRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY2MjAxNzIxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjIwMTc1
MTQzRkNEMzcwMDY4Qjc3QyAvKiBERkdPcGVyYW5kcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MjAxNzExNDNGQ0QyRjAwNjhCNzdDIC8qIERGR09w
ZXJhbmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTM4Myw3ICs0MTYsNyBAQAogCQk4NkI5OUFFMzExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5n
QnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkI5OUFFMTExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZCQjA5QzAxMzhFMzgxQjAwNTY3
MDJGIC8qIERGR1JlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZCQjA5QkUxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwICov
OyB9OwogCQk4NkJCMDlDMTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkYxMzhFMzgxQjAw
NTY3MDJGIC8qIERGR1JlcGF0Y2guaCAqLzsgfTsKLQkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5
IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAq
LzsgfTsKKwkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEy
ODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFj
cm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZDNTY4REQxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNw
cCAqLzsgfTsKIAkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQ
Uy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4
REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwogCQk4NkM1
NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8q
IE1JUFNBc3NlbWJsZXIuaCAqLzsgfTsKQEAgLTc1Miw2ICs3ODUsMjAgQEAKIC8qIEVuZCBQQlhC
dWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2Vj
dGlvbiAqLworCQkwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVBy
b3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVy
UG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwor
CQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwQTkxNEJB
N0ZEOTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9ICJMTEludCBPZmZzZXRzIjsKKwkJfTsKKwkJ
MEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsK
KwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4
NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlw
ZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3
MjsKKwkJCXJlbW90ZUluZm8gPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCX07CiAJCTE0
MTIxNEJFMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3
RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC03OTcsNiArODQ0
LDE1IEBACiAvKiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhEMTRCQTdFNUUw
MEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBo
YXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAvdXNy
L3NoYXJlL21hbi9tYW4xLzsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMgPSAo
CisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCX07
CiAJCTVEQkIxNTExMTMxRDBCMTMwMDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0g
ewogCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDEyOwpAQCAtODM3LDYgKzg5MywxMCBAQAogCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyog
VGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYXJ5Q2hhbmdlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGlt
aXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpemVMaW1pdHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBMTEludEVudHJ5cG9pbnRzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2lu
dHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NjE0QkNGNDVBMDA4
ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBMTEludEVudHJ5cG9pbnRzLmg7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludFRodW5rcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBM
TEludFRodW5rcy5jcHA7IHBhdGggPSBsbGludC9MTEludFRodW5rcy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5r
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludFRodW5rcy5oOyBwYXRo
ID0gbGxpbnQvTExJbnRUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYw
QjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvZGVUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBIYW5kbGVySW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHByZXNzaW9uUmFuZ2VJbmZvLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDcsOSArOTA3LDEzIEBACiAJCTBGMEI4M0Iz
MTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTWV0aG9kQ2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbG9iYWxSZXNvbHZlSW5mby5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYg
LyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50
Q2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50Q2Fs
bExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTVGMTVEMTRCN0E3
M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29tbW9uU2xvd1BhdGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQml0VmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVREcml2ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXph
dGlvbktpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3QTE0QkU3
MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFeGVjdXRpb25IYXJuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVudGlvbnMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBERkdDb2RlQmxvY2tzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9j
a3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODYwLDYgKzkyNCwyMCBAQAogCQkwRjQzMTcz
NjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IExpc3RhYmxlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRFeGNlcHRpb25zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJ
VEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURXhjZXB0
aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA4RjE0QkE3RTVFMDBC
RkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBp
bmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTExJbnRFeGNlcHRpb25zLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TExJbnRFeGNlcHRpb25zLmg7IHBhdGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50
SGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEhl
bHBlcnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEhlbHBlcnMuaDsgcGF0aCA9
IGxsaW50L0xMSW50SGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7
IHBhdGggPSBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRDb21tb24uaDsgcGF0aCA9IGxs
aW50L0xMSW50Q29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM2
MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHBhdGggPSBsbGlu
dC9MTEludE9mZmxpbmVBc21Db25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7
IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRl
ci5oOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RGF0YS5jcHA7IHBhdGgg
PSBsbGludC9MTEludERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExMSW50RGF0YS5oOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0
Q2FsbFJldHVyblZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENDMTQ2QkU2MDIwMDA0NzJBOSAvKiBERkdCeXRl
Q29kZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0J5dGVDb2Rl
Q2FjaGUuaDsgcGF0aCA9IGRmZy9ERkdCeXRlQ29kZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmlu
YWxpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY2MjAxNkQxNDNGQ0Qy
RjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHQWJzdHJhY3RTdGF0ZS5jcHA7IHBhdGggPSBkZmcvREZHQWJzdHJh
Y3RTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTc5LDYgKzE2NTcs
MTMgQEAKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUy
NzIgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNl
OworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEy
MTExRTBBNDg3OTNDMDA0ODAyNTUgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEZy
YW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAg
LTE2MzcsNiArMTcyMiw3IEBACiAJCQkJMTQxMjExMjAwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlk
b20gKi8sCiAJCQkJMTRCRDU5QkYwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJ
NjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEYx
NEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKIAkJCSk7CiAJ
CQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTY2Nyw2
ICsxNzUzLDcgQEAKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENv
cmVQcmVmaXguaCAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAq
LywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8sCisJCQkJMEY0
NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovLAogCQkJCTE0MzJFQkQ3MEEzNENBRDQw
MDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2Vt
YmxlciAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8sCkBA
IC0xNzA1LDYgKzE3OTIsMjggQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsK
IAkJfTsKKwkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8sCisJCQkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1
QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLywKKwkJCQkwRjBCODM5NzE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRUaHVua3MuY3BwICovLAorCQkJCTBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludFRodW5rcy5oICovLAorCQkJCTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTElu
dERhdGEuY3BwICovLAorCQkJCTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEu
aCAqLywKKwkJCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLywK
KwkJCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgg
Ki8sCisJCQkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIu
Y3BwICovLAorCQkJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJl
dGVyLmggKi8sCisJCQkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5jcHAgKi8sCisJCQkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5oICovLAorCQkJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3Bw
ICovLAorCQkJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLywK
KwkJCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cCAqLywKKwkJCSk7CisJCQluYW1lID0gbGxpbnQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OwogCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAyNTUgLyogdGVzdHMgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTczNyw2ICsxODQ2LDggQEAKIAkJ
MTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RD
YWxsUmV0dXJuVmFsdWUuY3BwICovLAorCQkJCTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBI
b3N0Q2FsbFJldHVyblZhbHVlLmggKi8sCiAJCQkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8q
IEpJVEV4Y2VwdGlvbnMuY3BwICovLAogCQkJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBK
SVRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEZEODJFMzcxNDFBQjE0MjAwMTc5Qzk0IC8qIENvbXBh
Y3RKSVRDb2RlTWFwLmggKi8sCkBAIC0yMTY2LDYgKzIyNzcsOCBAQAogCQk3RUY2RTBCQjBFQjdB
MUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXph
dGlvbktpbmQuaCAqLywKKwkJCQkwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9u
SGFybmVzcy5oICovLAogCQkJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93
UGF0aHMuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAg
Ki8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAqLywKQEAgLTI1
MjUsNiArMjYzOCw4IEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYyMUMyN0Ux
NEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLywKKwkJCQkwRjBGQzQ1
ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKIAkJCQkwRjkzMzI5
MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovLAogCQkJCTBGOTMzMjk0
MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oICovLAogCQkJCTBGOTMzMjk1MTRD
QTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLywKQEAgLTMwNzYsNyArMzE5MSwx
NiBAQAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODY3MDRCNDMxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVj
a2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29t
bW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUy
NzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBBNTE0QkE3
RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4
MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJ
bnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcy
IC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwRDUxNEJCRDI0QjAwQkZF
MjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlC
MTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdl
SW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDg1LDcgKzMyMDksMTEgQEAKIAkJCQkwRjBCODNC
NTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zm
c2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwRkM0NUExNEJEMTVG
NTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIx
QzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJpdmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktp
bmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRl
Y29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QTE0QzNDRDI5MDA3
QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0
QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjdCMjk0QzE0QzNDRDQzMDA3QzNEQjEgLyogREZHQnl0ZUNvZGVDYWNoZS5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0zMTAzLDYgKzMyMzEsMjQgQEAKIC8qIEVuZCBQQlhIZWFkZXJzQnVpbGRQaGFzZSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisJCTBGNDY4
MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7CisJ
CQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0
NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
TmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovOworCQkJYnVpbGRQaGFz
ZXMgPSAoCisJCQkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8sCisJCQkJ
MEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJMEY0NjgwOEQx
NEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0g
KAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUy
NzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CisJCQluYW1lID0gSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdE5hbWUgPSBKU0NMTEludE9mZnNldHNFeHRyYWN0
b3I7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpT
Q0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5w
cm9kdWN0LXR5cGUudG9vbCI7CisJCX07CiAJCTE0MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBt
aW5pZG9tICovID0gewogCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1
cmF0aW9uTGlzdCA9IDE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBjb25maWd1cmF0
aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi87CkBAIC0zMjI5LDExICsz
Mzc1LDI5IEBACiAJCQkJMTRCRDU5QkUwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJ
CQkJOTMyRjVCREEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLywKIAkJCQk2NTExMjJGNzE0MDQ2
QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUy
NzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAorCQkJCTBGNDY4MEE5MTRCQTdGRDkw
MEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovLAogCQkJKTsKIAkJfTsKIC8qIEVuZCBQQlhQcm9q
ZWN0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KKwkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291
cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBh
dGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL2xsaW50L0xvd0xldmVsQXNzZW1ibGVyLmFzbSIsCisJ
CQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMiOworCQkJb3V0cHV0UGF0
aHMgPSAoCisJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMvTExJbnREZXNp
cmVkT2Zmc2V0cy5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2Rp
ciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvXCJcblxuL3Vzci9iaW4v
ZW52IHJ1YnkgXCIke1NSQ1JPT1R9L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rv
ci5yYlwiIFwiJHtTUkNST09UfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbVwiIFwiJHtC
VUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmhcIlxu
IjsKKwkJfTsKIAkJMzcxM0YwMTQxNDI5MDUyNDAwMzYzODdGIC8qIENoZWNrIEZvciBJbmFwcHJv
cHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxT
Y3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTMz
NzQsNiArMzUzOCwxNCBAQAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0Njgw
OEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2Vz
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRDBBNDg3OTNDMDA0ODAyNTUgLyogU291cmNl
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKQEAgLTM2MzIsNyArMzgwNCwxNCBAQAogCQkJCTg2NzA0Qjg2MTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg5
MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNl
cHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MENDMTRCQkIxN0Ew
MEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
NDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlw
b2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8q
IExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4
NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjQxNEJD
Rjg2MDAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGNjlFODZDMzE0QzZFNTUxMDAyQzJDNjIgLyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTM2NTQsNiArMzgzMywxNiBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJ
CTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewor
CQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdG
RDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBC
MTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkw
RjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJ
CWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVF
MDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkg
PSAwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwor
CQl9OwogCQkxNDEyMTRCRjBBNDkxOTBFMDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEyMTEx
RjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLzsKQEAgLTM2ODcsNiArMzg3NiwxNDggQEAK
IC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWls
ZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyog
RGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMg
PSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87
CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19O
T19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlH
Q0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJ
T05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJ
CQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNv
bS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJf
QklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQ
RVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0ND
X1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2Fy
Y2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7
CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9B
UkNIID0gWUVTOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsK
KwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3
MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJ
CUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJ
UCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3lt
IjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVf
T0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBp
bGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lP
TiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURf
VkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJ
CQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNl
dHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5U
X1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJ
CQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGlj
dSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRI
UykiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVF
MDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9
IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9Q
SEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYt
d2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdD
Q19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFw
cGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRf
Q09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9
IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FS
Tl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0q
XSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9M
TEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJ
CQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIk
KFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9T
RUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAk
KEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9
OworCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdB
WVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJE
XzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JN
QVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RB
TkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJ
CQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJ
R0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9V
VF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZ
UEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFE
RVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIk
KEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJD
SF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsK
KwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNv
c3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJ
bmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBE
ZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJ
fTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8q
IFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsK
KwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZF
MjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2Vz
IGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIwMTRC
QTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJp
dmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJ
CTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1NSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKQEAgLTM5MjgsNiArNDI1OSwy
OCBAQAogLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
WENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3
MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJ
bnRPZmZzZXRzRXh0cmFjdG9yIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7
CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3
MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAq
LywKKwkJCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBG
NDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1
bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFt
ZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0
cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8sCisJ
CQkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwQUYx
NEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODBCMDE0QkE3RkQ5MDBC
RkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklz
VmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwor
CQl9OwogCQkxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovID0gewogCQkJaXNhID0gWENDb25m
aWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA1Nzcx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNkZWZpbmUgR0xPQkFMX1RIVU5LX0lEIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigtMSkpCiAjZGVmaW5lIFJF
R0VYUF9DT0RFX0lEIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90
PigtMikpCiAKLSNpbmNsdWRlIDxNYWNyb0Fzc2VtYmxlci5oPgorI2luY2x1ZGUgIk1hY3JvQXNz
ZW1ibGVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVDb252ZW50aW9ucy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IEJ5dGVjb2RlQ29udmVudGlvbnNfaAorI2RlZmluZSBCeXRlY29kZUNvbnZlbnRpb25zX2gKKwor
Ly8gUmVnaXN0ZXIgbnVtYmVycyB1c2VkIGluIGJ5dGVjb2RlIG9wZXJhdGlvbnMgaGF2ZSBkaWZm
ZXJlbnQgbWVhbmluZyBhY2NvcmRpbmcgdG8gdGhlaXIgcmFuZ2VzOgorLy8gICAgICAweDgwMDAw
MDAwLTB4RkZGRkZGRkYgIE5lZ2F0aXZlIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50
ZXIgYXJlIGVudHJpZXMgaW4gdGhlIGNhbGwgZnJhbWUsIHNlZSBSZWdpc3RlckZpbGUuaC4KKy8v
ICAgICAgMHgwMDAwMDAwMC0weDNGRkZGRkZGICBGb3J3YXJkcyBpbmRpY2VzIGZyb20gdGhlIENh
bGxGcmFtZSBwb2ludGVyIGFyZSBsb2NhbCB2YXJzIGFuZCB0ZW1wb3JhcmllcyB3aXRoIHRoZSBm
dW5jdGlvbidzIGNhbGxmcmFtZS4KKy8vICAgICAgMHg0MDAwMDAwMC0weDdGRkZGRkZGICBQb3Np
dGl2ZSBpbmRpY2VzIGZyb20gMHg0MDAwMDAwMCBzcGVjaWZ5IGVudHJpZXMgaW4gdGhlIGNvbnN0
YW50IHBvb2wgb24gdGhlIENvZGVCbG9jay4KK3N0YXRpYyBjb25zdCBpbnQgRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwOworCisjZW5kaWYgLy8gQnl0ZWNvZGVDb252ZW50
aW9uc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTA1NzcxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTcg
KzI3LDM4IEBACiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgorI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisjaWYgRU5B
QkxFKExMSU5UKQorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2st
Pmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworICAgIExMSW50Q2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8gPSBpbnN0cnVjdGlvbls0XS51LmNhbGxMaW5rSW5mbzsKKyAg
ICAKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxl
ZS5nZXQoKSwgZmFsc2UpOworI2Vsc2UKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFs
c2UpOworI2VuZGlmCit9CisKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
Rm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIHsK
ICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVj
b2RlSW5kZXgpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAg
ICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmdldENhbGxM
aW5rSW5mbyhieXRlY29kZUluZGV4KS5sYXN0U2VlbkNhbGxlZS5nZXQoKSwKLSAgICAgICAgcHJv
ZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpOworICAgIGlmICgh
cHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZDYWxsTGlua0luZm9zKCkpCisgICAgICAgIHJldHVybiBj
b21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAg
IGlmIChwcm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKKyAg
ICAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIHRydWUpOworICAgIAorICAgIEpTRnVuY3Rp
b24qIHRhcmdldCA9IHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4
KS5sYXN0U2VlbkNhbGxlZS5nZXQoKTsKKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgcmV0dXJu
IGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisgICAgCisg
ICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldCwgZmFsc2UpOwogI2Vsc2UKICAgICByZXR1
cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFsc2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24gMTA1Nzcx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDE1ICs0NywxNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGlj
IENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCk7CiAgICAgCi0gICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFy
Z2V0OyB9CisgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0IHx8
IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFtX2NhbGxUYXJnZXQ7IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsg
cmV0dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBKU0Z1bmN0aW9u
KiBjYWxsVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgCiBwcml2
YXRlOgorICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9j
ayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgIAogICAgIEpTRnVuY3Rpb24qIG1fY2Fs
bFRhcmdldDsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7CiB9OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEwNTc3
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5j
bHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIK
ICNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAt
NTksOCArNjAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAjZW5k
aWYKIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQog
c3RhdGljIFVTdHJpbmcgZXNjYXBlUXVvdGVzKGNvbnN0IFVTdHJpbmcmIHN0cikKIHsKICAgICBV
U3RyaW5nIHJlc3VsdCA9IHN0cjsKQEAgLTM1OCwxMCArMzU3LDEwIEBAIHZvaWQgQ29kZUJsb2Nr
OjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykgY28KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlu
c3RydWN0aW9ucygpLnNpemUoKTsgaSArPSBvcGNvZGVMZW5ndGhzW2V4ZWMtPmludGVycHJldGVy
KCktPmdldE9wY29kZUlEKGluc3RydWN0aW9ucygpW2ldLnUub3Bjb2RlKV0pCiAgICAgICAgICsr
aW5zdHJ1Y3Rpb25Db3VudDsKIAotICAgIHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUg
Ynl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpXG5cbiIs
CisgICAgcHJpbnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFy
YW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocyk7ICVkIHZhcmlhYmxlKHMpXG5cbiIsCiAg
ICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9uQ291bnQpLAogICAg
ICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkgKiBz
aXplb2YoSW5zdHJ1Y3Rpb24pKSwKLSAgICAgICAgdGhpcywgbV9udW1QYXJhbWV0ZXJzLCBtX251
bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgICAgIHRoaXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1D
YWxsZWVSZWdpc3RlcnMsIG1fbnVtVmFycyk7CiAKICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpj
b25zdF9pdGVyYXRvciBiZWdpbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgVmVjdG9y
PEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW5zdHJ1Y3Rpb25zKCkuZW5kKCk7
CkBAIC04OTgsNiArODk3LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhl
YywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1
dF9ieV9pZF90cmFuc2l0aW9uIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDogeworICAgICAgICAgICAg
cHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlk
T3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsIik7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9n
ZW5lcmljOiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQs
ICJwdXRfYnlfaWRfZ2VuZXJpYyIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjkxLDggKzEy
OTgsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgfQog
fQogCi0jZW5kaWYgLy8gIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5H
KQotCiAjaWYgRFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJQ1MKIHN0YXRpYyBIYXNoU2V0PENvZGVC
bG9jayo+IGxpdmVDb2RlQmxvY2tTZXQ7CiAjZW5kaWYKQEAgLTE0NTksNiArMTQ2NCw3IEBAIENv
ZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywKIHsKICAgICBzZXROdW1QYXJh
bWV0ZXJzKG90aGVyLm51bVBhcmFtZXRlcnMoKSk7CiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgp
OworICAgIGppdEFmdGVyV2FybVVwKCk7CiAgICAgCiAgICAgaWYgKG90aGVyLm1fcmFyZURhdGEp
IHsKICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwpAQCAtMTUwNyw2ICsxNTEz
LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgIEFTU0VS
VChtX3NvdXJjZSk7CiAgICAgCiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOworICAgIGppdEFm
dGVyV2FybVVwKCk7CiAKICNpZiBEVU1QX0NPREVfQkxPQ0tfU1RBVElTVElDUwogICAgIGxpdmVD
b2RlQmxvY2tTZXQuYWRkKHRoaXMpOwpAQCAtMTUyNCw3ICsxNTMxLDExIEBAIENvZGVCbG9jazo6
fkNvZGVCbG9jaygpCiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJPRklMRSkKICAgICBkdW1w
VmFsdWVQcm9maWxlcygpOwogI2VuZGlmCi0gICAgCisKKyNpZiBFTkFCTEUoTExJTlQpICAgIAor
ICAgIHdoaWxlIChtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdMTElu
dENhbGxzLmVuZCgpKQorICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpLT5yZW1v
dmUoKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBX
ZSBtYXkgYmUgZGVzdHJveWVkIGJlZm9yZSBhbnkgQ29kZUJsb2NrcyB0aGF0IHJlZmVyIHRvIHVz
IGFyZSBkZXN0cm95ZWQuCiAgICAgLy8gQ29uc2lkZXIgdGhhdCB0d28gQ29kZUJsb2NrcyBiZWNv
bWUgdW5yZWFjaGFibGUgYXQgdGhlIHNhbWUgdGltZS4gVGhlcmUKQEAgLTE3MzYsOCArMTc0Nyw1
NyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAjZWxzZQogICAg
IHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VVbmxpbmtpbmcgPSBmYWxzZTsKICNlbmRpZgotI2Vu
ZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAgICAKKyNpZiBFTkFCTEUoTExJTlQpCisgICAg
SW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlcjsKKyAg
ICBpZiAoIWludGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6
ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7
ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3Ry
dWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAg
c3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNv
ZGUpKSB7CisgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkOgorICAgICAgICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bNF0udS5z
dHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUu
Z2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjdXJJ
bnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1cklu
c3RydWN0aW9uWzVdLnUub3BlcmFuZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAgICAgIGlm
IChIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5z
dHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1
ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVy
ZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJl
LmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVD
aGFpbi5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2Rl
ID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVf
dCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZp
bnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAg
ICAgQVNTRVJUKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9w
Y29kZSkgPT0gb3BfcmVzb2x2ZV9nbG9iYWwKKyAgICAgICAgICAgICAgICAgICB8fCBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWMpOworICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvblszXS51
LnN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVy
ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjdXJJbnN0
cnVjdGlvblszXS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rp
b25bNF0udS5vcGVyYW5kID0gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAg
IGlmIChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpICYmICFIZWFwOjppc01hcmtl
ZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5jYWxsZWUuZ2V0KCkpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiQ2xl
YXJpbmcgTExJbnQgY2FsbCBmcm9tICVwLlxuIiwgdGhpcyk7CisgICAgICAgICAgICAgICAgbV9s
bGludENhbGxMaW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoISFtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6
aXNNYXJrZWQobV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQor
ICAgICAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlLmNs
ZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCiAjaWYg
RU5BQkxFKERGR19KSVQpCiAgICAgLy8gQ2hlY2sgaWYgd2UncmUgbm90IGxpdmUuIElmIHdlIGFy
ZSwgdGhlbiBqZXR0aXNvbi4KICAgICBpZiAoIShzaG91bGRJbW1lZGlhdGVseUFzc3VtZUxpdmVu
ZXNzRHVyaW5nU2NhbigpIHx8IG1fZGZnRGF0YS0+bGl2ZW5lc3NIYXNCZWVuUHJvdmVkKSkgewpA
QCAtMTg1OCwxMCArMTkxOCwxMiBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9u
Z1JlZmVyCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVjbHMuc2l6ZSgp
OyArK2kpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9uRGVjbHNbaV0pOwogI2lm
IEVOQUJMRShJTlRFUlBSRVRFUikKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICB2
aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJ
bnN0cnVjdGlvbnNbaV1dKTsKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZl
SW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0
U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb25zW2ldXSk7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPmVuYWJsZWQo
KSkgeworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0
aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1
Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zW2ldXSk7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHZpc2l0
U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb25zW2ldXSk7CisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTIw
NzAsNiArMjEzMiwxMiBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogewogICAgIGlm
ICghIW1fYWx0ZXJuYXRpdmUpCiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPnVubGlua0NhbGxzKCk7
CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sbGludENh
bGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0lu
Zm9zW2ldLmlzTGlua2VkKCkpCisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51
bmxpbmsoKTsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoIShtX2NhbGxMaW5rSW5mb3Muc2l6ZSgp
IHx8IG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCkpKQogICAgICAgICByZXR1cm47CiAgICAg
aWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQpAQCAtMjA4NCwxMCArMjE1MiwzNyBAQCB2
b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogCiB2b2lkIENvZGVCbG9jazo6dW5saW5rSW5j
b21pbmdDYWxscygpCiB7CisgICAgd2hpbGUgKG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCkg
IT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisgICAgICAgIG1faW5jb21pbmdMTEludENh
bGxzLmJlZ2luKCktPnVubGluaygpOworICAgIGlmIChtX2luY29taW5nQ2FsbHMuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRoaXMp
OwogICAgIHdoaWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2FsbHMu
ZW5kKCkpCiAgICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigpLT51bmxpbmsoKm1fZ2xvYmFs
RGF0YSwgcmVwYXRjaEJ1ZmZlcik7CiB9CisKK3Vuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVP
ZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit7
CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0gYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfYmVnaW4pCisgICAgICAgICYmIHJldHVybkFkZHJlc3Mu
dmFsdWUoKSA8PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQpKSB7CisgICAgICAgIEFT
U0VSVChleGVjLT5jb2RlQmxvY2soKSk7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2so
KSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJ
VFR5cGUoKSkpOworICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBleGVjLT5jdXJy
ZW50VlBDKCk7CisgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbik7CisgICAgICAgIHJldHVybiBi
eXRlY29kZU9mZnNldChpbnN0cnVjdGlvbik7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oZXhlYyk7CisjZW5kaWYKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiAx
OworICAgIFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRp
Y2VzID0gbV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7CisgICAgaWYgKCFjYWxs
SW5kaWNlcy5zaXplKCkpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiBiaW5hcnlTZWFy
Y2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0
dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJ
VENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7
Cit9CiAjZW5kaWYKIAogdm9pZCBDb2RlQmxvY2s6OmNsZWFyRXZhbENhY2hlKCkKQEAgLTIxODMs
MjQgKzIyNzgsNDUgQEAgYm9vbCBGdW5jdGlvbkNvZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERgog
CiB2b2lkIFByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklU
VHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2Vt
ZW50KCkpOwogICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRh
YmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQg
RXZhbENvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdK
SVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAg
ICAgc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRp
c29uT3B0aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBGdW5jdGlvbkNvZGVC
bG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklU
VHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGlj
X2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9w
dGltaXplZENvZGVGb3IoKmdsb2JhbERhdGEoKSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNv
bnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKIH0KKwordm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqaXRD
b21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdldEpJ
VFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhpcyA9
PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFi
bGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZ2xvYmFsRGF0YSk7Cit9CisKK3Zv
aWQgRXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
KQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVu
ayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlKGds
b2JhbERhdGEpOworfQorCit2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBK
SVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVu
dCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJF
eGVjdXRhYmxlKCkpLT5qaXRDb21waWxlRm9yKGdsb2JhbERhdGEsIG1faXNDb25zdHJ1Y3RvciA/
IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShWQUxVRV9QUk9GSUxFUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgJKHJldmlzaW9uIDEwNTc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lm
bmRlZiBDb2RlQmxvY2tfaAogI2RlZmluZSBDb2RlQmxvY2tfaAogCisjaW5jbHVkZSAiQnl0ZWNv
ZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNh
bGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5o
IgpAQCAtNTAsNiArNTEsNyBAQAogI2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAi
TExJbnRDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJMaW5lSW5mby5oIgogI2luY2x1ZGUgIk5v
ZGVzLmgiCiAjaW5jbHVkZSAiUHJlZGljdGlvblRyYWNrZXIuaCIKQEAgLTY1LDE2ICs2NywxMSBA
QAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5o
IgogCi0vLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZl
IGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6Ci0vLyAgICAgIDB4
ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUg
cG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5o
LgotLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0
aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGgg
dGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgotLy8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYg
IFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUg
Y29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgotc3RhdGljIGNvbnN0IGludCBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7Ci0KIG5hbWVzcGFjZSBKU0MgewogCi0g
ICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3Mg
RXhlY1N0YXRlOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGlubGlu
ZSBpbnQgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGludCBhcmd1bWVudHNSZWdpc3Rlcikg
eyByZXR1cm4gYXJndW1lbnRzUmVnaXN0ZXIgLSAxOyB9CiAKQEAgLTgzLDYgKzgwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXIsIHB1YmxpYyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyIHsKICAgICAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICBl
bnVtIENvcHlQYXJzZWRCbG9ja1RhZyB7IENvcHlQYXJzZWRCbG9jayB9OwogICAgIHByb3RlY3Rl
ZDoKQEAgLTEyMyw3ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHdoaWxl
IChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0
LT5hbHRlcm5hdGl2ZSgpOwogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgICAg
ICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwor
ICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklU
VHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAjZW5kaWYK
QEAgLTEzNCwxMSArMTMyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZv
aWQgZHVtcFN0YXRpc3RpY3MoKTsKIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFX09Q
Q09ERV9TQU1QTElORwogICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAg
ICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmVzKGNvbnN0IEluc3RydWN0aW9uKikgY29uc3Q7CiAgICAg
ICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmUoY29uc3QgY2hhciogbmFtZSwgY29uc3QgSW5zdHJ1Y3Rp
b24qLCBpbnQgb3BlcmFuZCkgY29uc3Q7Ci0jZW5kaWYKIAogICAgICAgICBib29sIGlzU3RyaWN0
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAKQEAgLTE5NCwxNSArMTkw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8
TWV0aG9kQ2FsbExpbmtJbmZvLCB1bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNv
ZGVJbmRleD4obV9tZXRob2RDYWxsTGlua0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJ
bmZvcy5zaXplKCksIGJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0KFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLSAgICAg
ICAgewotICAgICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICAgICAgICAgIHJldHVy
biAxOwotICAgICAgICAgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0
PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKLSAg
ICAgICAgICAgIGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVy
biAxOwotICAgICAgICAgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9C
eXRlY29kZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2Vz
LmJlZ2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVy
bkFkZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKLSAgICAgICAgfQorICAgICAgICB1
bnNpZ25lZCBieXRlY29kZU9mZnNldChFeGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAog
ICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGlu
ZGV4KQogICAgICAgICB7CkBAIC0yMjMsMTEgKzIxMSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgewogICAgICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwogICAg
ICAgICB9CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwo
TExJbnRDYWxsTGlua0luZm8qIGluY29taW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2lu
Y29taW5nTExJbnRDYWxscy5wdXNoKGluY29taW5nKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKICAgICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5rSW5jb21pbmdDYWxscygp
OwotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAotI2lmIEVOQUJMRShERkdfSklUKQor
I2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIHZvaWQgc2V0SklU
Q29kZU1hcChQYXNzT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBqaXRDb2RlTWFwKQogICAgICAg
ICB7CiAgICAgICAgICAgICBtX2ppdENvZGVNYXAgPSBqaXRDb2RlTWFwOwpAQCAtMjM2LDcgKzIz
MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9q
aXRDb2RlTWFwLmdldCgpOwogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgCisjaWYgRU5BQkxF
KERGR19KSVQpCiAgICAgICAgIHZvaWQgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCkKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCEhbV9kZmdEYXRhKQpAQCAtMzM1LDEyICszMzEsMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKElOVEVSUFJF
VEVSKQogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChJbnN0cnVjdGlvbiogcmV0dXJu
QWRkcmVzcykKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJldHVybkFkZHJlc3MgPj0g
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zKCku
ZW5kKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0
dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgICAgICB9Ci0jZW5kaWYK
IAogICAgICAgICB2b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJp
Y0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJp
Y0NvbXBhcmVGdW5jdGlvbjsgfQogICAgICAgICBib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlv
bigpIHsgcmV0dXJuIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CkBAIC0zNTYsMTUgKzM1
MSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogICAgICAgICB2b2lkIGhhbmRsZUJ5
dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCkKICAgICAgICAgeworI2lmICFFTkFCTEUoT1BD
T0RFX1NBTVBMSU5HKSAmJiAhRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgaWYgKEJ5dGVjb2Rl
R2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgICAgICBpZiAoISFhbHRlcm5hdGl2ZSgpKQogICAgICAgICAgICAgICAgIGRpc2Nh
cmRCeXRlY29kZSgpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGRpc2NhcmRC
eXRlY29kZUxhdGVyKCk7CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICAKLSNpZm5kZWYgTkRF
QlVHCiAgICAgICAgIGJvb2wgdXNlc09wY29kZShPcGNvZGVJRCk7Ci0jZW5kaWYKIAogICAgICAg
ICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50KCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbkNvdW50
OyB9CiAgICAgICAgIHZvaWQgc2V0SW5zdHJ1Y3Rpb25Db3VudCh1bnNpZ25lZCBpbnN0cnVjdGlv
bkNvdW50KSB7IG1faW5zdHJ1Y3Rpb25Db3VudCA9IGluc3RydWN0aW9uQ291bnQ7IH0KQEAgLTM4
NywxNyArMzg0LDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeGVjdXRhYmxlTWVtb3J5
SGFuZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgeyByZXR1cm4gZ2V0SklUQ29kZSgpLmdldEV4ZWN1
dGFibGVNZW1vcnkoKTsgfQogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1p
emVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgamV0dGlzb24oKSA9IDA7CisgICAgICAgIGJvb2wgaml0Q29tcGlsZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChnZXRKSVRUeXBlKCkgIT0g
SklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykgeworICAgICAgICAgICAgICAgIEFTU0VSVChnZXRK
SVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGppdENvbXBpbGVJbXBsKGdsb2Jh
bERhdGEpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgdmly
dHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
Y2FuQ29tcGlsZVdpdGhERkcoKSA9IDA7CiAgICAgICAgIGJvb2wgaGFzT3B0aW1pemVkUmVwbGFj
ZW1lbnQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJ
VENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2Vs
aW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcmVwbGFj
ZW1lbnQoKS0+Z2V0SklUVHlwZSgpID4gZ2V0SklUVHlwZSgpOwogI2lmICFBU1NFUlRfRElTQUJM
RUQKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxh
Y2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwogICAgICAgICAgICAg
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUo
KSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKEpJVENv
ZGU6OmlzQmFzZWxpbmVDb2RlKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSkpOwogICAgICAg
ICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpID09IHRoaXMpOwogICAgICAgICAgICAgfQog
I2VuZGlmCkBAIC00NTYsMTggKzQ2MiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2
b2lkIGNsZWFyRXZhbENhY2hlKCk7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAg
IHZvaWQgYWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbih1bnNpZ25lZCBwcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+
Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9u
cy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBtX3Byb3Bl
cnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKTsK
ICAgICAgICAgfQogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbih1bnNp
Z25lZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX2dsb2JhbFJl
c29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik7CisgICAg
ICAgICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5z
dHJ1Y3Rpb25BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBhZGRMTEludENhbGxMaW5r
SW5mbygpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zLmFwcGVu
ZChMTEludENhbGxMaW5rSW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiAmbV9sbGludENhbGxM
aW5rSW5mb3MubGFzdCgpOworICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAg
ICAgICB2b2lkIHNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKHNpemVfdCBzaXplKSB7IG1f
c3RydWN0dXJlU3R1YkluZm9zLmdyb3coc2l6ZSk7IH0KQEAgLTQ3Niw4ICs0ODUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbmZvKHVuc2lnbmVk
IGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKG1f
Z2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZl
SW5mb3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikp
OworICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJ
bmZvKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOwogICAgICAgICB9CiAgICAgICAgIEdsb2Jh
bFJlc29sdmVJbmZvJiBnbG9iYWxSZXNvbHZlSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJuIG1fZ2xv
YmFsUmVzb2x2ZUluZm9zW2luZGV4XTsgfQogICAgICAgICBib29sIGhhc0dsb2JhbFJlc29sdmVJ
bmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CkBAIC00ODgsNiAr
NDk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBhZGRNZXRob2RDYWxsTGlu
a0luZm9zKHVuc2lnbmVkIG4pIHsgQVNTRVJUKG1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpOyBt
X21ldGhvZENhbGxMaW5rSW5mb3MuZ3JvdyhuKTsgfQogICAgICAgICBNZXRob2RDYWxsTGlua0lu
Zm8mIG1ldGhvZENhbGxMaW5rSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExp
bmtJbmZvc1tpbmRleF07IH0KKyAgICAgICAgc2l6ZV90IG51bWJlck9mTWV0aG9kQ2FsbExpbmtJ
bmZvcygpIHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCk7IH0KICNlbmRpZgog
ICAgICAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC01MjgsNiArNTM3LDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRl
Y29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJvZmlsZSA9PSByZXN1bHQpOwogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQorICAgICAgICBQcmVkaWN0ZWRUeXBlIHZh
bHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCktPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOworICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxl
cygpCiAgICAgICAgIHsKQEAgLTU1NCwxMiArNTY3LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZz
ZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVz
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQg
dmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkt
Pm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRpb25zOjpsaWtlbHlU
b1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAv
IG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRo
cmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBjb3VsZFRha2VTbG93
Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVt
YmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiB2YWx1
ZSA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2Fz
dDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpjb3Vs
ZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQpAQCAtNTc4LDEyICs1OTUsMTYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZVNwZWNp
YWxGYXN0Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFs
RmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50
ZXI7CiAgICAgICAgICAgICByZXR1cm4gc3BlY2lhbEZhc3RDYXNlQ291bnQgPj0gT3B0aW9uczo6
bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPihz
cGVjaWFsRmFzdENhc2VDb3VudCkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6
bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIGJvb2wgbGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkK
ICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCBzbG93
Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3Vu
dCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gc2xvd0Nhc2VDb3Vu
dCAtIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNTkyLDYgKzYxMyw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VBbnlTbG93Q2FzZShpbnQg
Ynl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJl
Q2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgc3Bl
Y2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1
ZSA9IHNsb3dDYXNlQ291bnQgKyBzcGVjaWFsRmFzdENhc2VDb3VudDsKQEAgLTY3Nyw3ICs3MDAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgYWRkRnJlcXVlbnRF
eGl0U2l0ZShjb25zdCBERkc6OkZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwor
ICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkp
OwogICAgICAgICAgICAgcmV0dXJuIG1fZXhpdFByb2ZpbGUuYWRkKHNpdGUpOwogICAgICAgICB9
CiAKQEAgLTc4Miw2ICs4MDUsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgY29w
eVBvc3RQYXJzZURhdGFGcm9tKENvZGVCbG9jayogYWx0ZXJuYXRpdmUpOwogICAgICAgICB2b2lk
IGNvcHlQb3N0UGFyc2VEYXRhRnJvbUFsdGVybmF0aXZlKCk7CiAgICAgICAgIAorICAgICAgICAv
LyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gSklUdGluZyBraWNrcyBpbiwgaW4gYSBt
aXhlZCBtb2RlCisgICAgICAgIC8vIGV4ZWN1dGlvbiB3b3JsZC4KKyAgICAgICAgCisgICAgICAg
IHZvaWQgZG9udEpJVEFueXRpbWVTb29uKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGlu
dEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJ
VEFueXRpbWVTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdEFmdGVy
V2FybVVwKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0g
T3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0U29vbigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvckpJVFNvb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludDMyX3QgbGxpbnRF
eGVjdXRlQ291bnRlcigpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2xs
aW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIC8vIEZ1bmN0
aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiB0aWVyZWQgY29tcGlsYXRpb24ga2lja3MgaW4uIFRo
aXMKICAgICAgICAgLy8gY29udHJvbHMgYm90aCB3aGVuIHRoZSBvcHRpbWl6aW5nIGNvbXBpbGVy
IGlzIGludm9rZWQgYW5kIHdoZW4gT1NSCiAgICAgICAgIC8vIGVudHJ5IGhhcHBlbnMuIFR3byB0
cmlnZ2VycyBleGlzdDogdGhlIGxvb3AgdHJpZ2dlciBhbmQgdGhlIHJldHVybgpAQCAtOTc0LDYg
KzEwMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3Nob3VsZERpc2NhcmRC
eXRlY29kZTsKIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBp
bGVJbXBsKEpTR2xvYmFsRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0V2Vh
a1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXpl
VW5jb25kaXRpb25hbGx5KCk7CiAgICAgICAgIApAQCAtOTg2LDcgKzEwMzMsNiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdm9pZCB0YWxseUZyZXF1ZW50RXhpdFNpdGVzKCkgeyB9CiAjZW5k
aWYKICAgICAgICAgCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBM
SU5HKQogICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKiwgY29uc3QgVmVjdG9yPEluc3RydWN0
aW9uPjo6Y29uc3RfaXRlcmF0b3ImIGJlZ2luLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9p
dGVyYXRvciYpIGNvbnN0OwogCiAgICAgICAgIENTdHJpbmcgcmVnaXN0ZXJOYW1lKEV4ZWNTdGF0
ZSosIGludCByKSBjb25zdDsKQEAgLTk5Niw3ICsxMDQyLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgcHJpbnRHZXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0
b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsK
ICAgICAgICAgdm9pZCBwcmludENhbGxPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3Rv
cjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0Owog
ICAgICAgICB2b2lkIHByaW50UHV0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVj
dG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7
Ci0jZW5kaWYKICAgICAgICAgdm9pZCB2aXNpdFN0cnVjdHVyZXMoU2xvdFZpc2l0b3ImLCBJbnN0
cnVjdGlvbiogdlBDKSBjb25zdDsKICAgICAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0x
MDU3LDkgKzExMDIsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxTb3VyY2VQ
cm92aWRlcj4gbV9zb3VyY2U7CiAgICAgICAgIHVuc2lnbmVkIG1fc291cmNlT2Zmc2V0OwogCi0j
aWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fcHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbnM7CiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9nbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb25zOworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgU2VnbWVudGVk
VmVjdG9yPExMSW50Q2FsbExpbmtJbmZvLCA4PiBtX2xsaW50Q2FsbExpbmtJbmZvczsKKyAgICAg
ICAgU2VudGluZWxMaW5rZWRMaXN0PExMSW50Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVs
Tm9kZTxMTEludENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5nTExJbnRDYWxsczsKICNlbmRpZgog
I2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFZlY3RvcjxTdHJ1Y3R1cmVTdHViSW5mbz4gbV9zdHJ1
Y3R1cmVTdHViSW5mb3M7CkBAIC0xMDcwLDkgKzExMTcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2ppdENvZGVXaXRoQXJpdHlDaGVjazsKICAg
ICAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5v
ZGU8Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdDYWxsczsKICNlbmRpZgotI2lmIEVOQUJMRShE
RkdfSklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIE93
blB0cjxDb21wYWN0SklUQ29kZU1hcD4gbV9qaXRDb2RlTWFwOwotICAgICAgICAKKyNlbmRpZgor
I2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBzdHJ1Y3QgV2Vha1JlZmVyZW5jZVRyYW5zaXRp
b24gewogICAgICAgICAgICAgV2Vha1JlZmVyZW5jZVRyYW5zaXRpb24oKSB7IH0KICAgICAgICAg
ICAgIApAQCAtMTEzNSwxMiArMTE4MywxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBP
d25QdHI8Q29kZUJsb2NrPiBtX2FsdGVybmF0aXZlOwogICAgICAgICAKKyAgICAgICAgaW50MzJf
dCBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIAogICAgICAgICBpbnQzMl90IG1faml0
RXhlY3V0ZUNvdW50ZXI7CiAgICAgICAgIHVpbnQzMl90IG1fc3BlY3VsYXRpdmVTdWNjZXNzQ291
bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZUZhaWxDb3VudGVyOwogICAgICAg
ICB1aW50OF90IG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyOwogICAgICAgICB1aW50OF90IG1f
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXI7Ci0KKyAgICAgICAgCiAgICAgICAgIHN0cnVjdCBS
YXJlRGF0YSB7CiAgICAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBw
dWJsaWM6CkBAIC0xMjEzLDYgKzEyNjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRl
KiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAg
ICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBjYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC0xMjQ3LDYgKzEyOTgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNv
bXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1w
bChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50
KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBA
IC0xMjg0LDYgKzEzMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVD
aGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZp
cnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVh
bCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21w
aWxlV2l0aERGRygpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDU3NzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDIwICsyNyw0NiBAQAogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKK0dldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21M
TEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElk
ZW50aWZpZXImIGlkZW50KQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0
ZWNvZGVJbmRleDsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxp
bnRfb3BfbWV0aG9kX2NoZWNrKQorICAgICAgICBpbnN0cnVjdGlvbisrOworCisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBp
ZiAoIXN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlv
biwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisgICAgCisgICAgc2l6ZV90IG9m
ZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50
KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAg
ICAKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhTaW1wbGVEaXJlY3QsIFN0cnVjdHVyZVNldChz
dHJ1Y3R1cmUpLCBvZmZzZXQsIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0
dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisjZW5k
aWYKK30KKwogR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9j
ayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRl
bnQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJB
TShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShK
SVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51
bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxM
SW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICAvLyBG
aXJzdCBjaGVjayBpZiBpdCBtYWtlcyBlaXRoZXIgY2FsbHMsIGluIHdoaWNoIGNhc2Ugd2Ugd2Fu
dCB0byBiZSBzdXBlciBjYXJlZnVsLCBvcgogICAgIC8vIGlmIGl0J3Mgbm90IHNldCBhdCBhbGws
IGluIHdoaWNoIGNhc2Ugd2UgcHVudC4KICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8g
PSBwcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0
dWJJbmZvLnNlZW4pCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24s
IFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxM
SW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAKICAgICBQb2x5
bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIGxpc3Q7CiAgICAgaW50IGxpc3RTaXplOwpAQCAt
NjAsMTggKzg2LDE5IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigK
ICAgICB9CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAg
IGlmICghbGlzdC0+bGlzdFtpXS5pc0RpcmVjdCkKLSAgICAgICAgICAgIHJldHVybiBHZXRCeUlk
U3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgICAg
ICByZXR1cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91
bmQsIHRydWUpOwogICAgIH0KICAgICAKICAgICAvLyBOZXh0IGNoZWNrIGlmIGl0IHRha2VzIHNs
b3cgY2FzZSwgaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIGtpbmQgb2YgY2FyZWZ1bC4KICAg
ICBpZiAocHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkp
Ci0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNl
dCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1Bh
dGgsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7CiAgICAgCiAgICAgLy8gRmluYWxs
eSBmaWd1cmUgb3V0IGlmIHdlIGNhbiBkZXJpdmUgYW4gYWNjZXNzIHN0cmF0ZWd5LgogICAgIEdl
dEJ5SWRTdGF0dXMgcmVzdWx0OworICAgIHJlc3VsdC5tX3dhc1NlZW5JbkpJVCA9IHRydWU7CiAg
ICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6
Ci0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNl
dCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVk
QmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3Nf
Z2V0X2J5X2lkX3NlbGY6IHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5m
by51LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CkBAIC0xMzAsNyArMTU3
LDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIAogICAg
IHJldHVybiByZXN1bHQ7CiAjZWxzZSAvLyBFTkFCTEUoSklUKQotICAgIHJldHVybiBHZXRCeUlk
U3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgcmV0
dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5k
LCBmYWxzZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMDU3NzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OSwxMCArNDksMTEgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAg
Ci0gICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1
Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQpCisgICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwg
Y29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQsIGJvb2wgd2Fz
U2VlbkluSklUKQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1
cmVTZXQoc3RydWN0dXJlU2V0KQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAg
LCBtX3dhc1NlZW5JbkpJVCh3YXNTZWVuSW5KSVQpCiAgICAgewogICAgICAgICBBU1NFUlQoKHN0
YXRlID09IFNpbXBsZURpcmVjdCkgPT0gKG9mZnNldCAhPSBub3RGb3VuZCkpOwogICAgIH0KQEAg
LTcwLDEwICs3MSwxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1
cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsgfQogICAgIHNpemVfdCBvZmZz
ZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAorICAgIGJvb2wgd2FzU2Vlbklu
SklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KKyAgICAKIHByaXZhdGU6Cisg
ICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0
ZTsKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CiAgICAgc2l6ZV90IG1fb2Zmc2V0
OworICAgIGJvb2wgbV93YXNTZWVuSW5KSVQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZp
c2lvbiAxMDU3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBKU0NlbGw7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogICAgIGNsYXNzIFN0cnVjdHVy
ZUNoYWluOworICAgIHN0cnVjdCBMTEludENhbGxMaW5rSW5mbzsKICAgICBzdHJ1Y3QgVmFsdWVQ
cm9maWxlOwogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE0Niw2ICsxNDcsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAjZW5kaWYKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlvbiB7CisgICAgICAgIEluc3Ry
dWN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgdS5qc0NlbGwuY2xlYXIoKTsKKyAgICAg
ICAgfQorICAgICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oT3Bjb2RlIG9wY29kZSkKICAgICAg
ICAgewogI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKQEAgLTE4Miw2ICsx
ODgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNs
b3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7
IH0KICAgICAgICAgCisgICAgICAgIEluc3RydWN0aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxs
TGlua0luZm8pIHsgdS5jYWxsTGlua0luZm8gPSBjYWxsTGlua0luZm87IH0KKyAgICAgICAgCiAg
ICAgICAgIEluc3RydWN0aW9uKFZhbHVlUHJvZmlsZSogcHJvZmlsZSkgeyB1LnByb2ZpbGUgPSBw
cm9maWxlOyB9CiAKICAgICAgICAgdW5pb24gewpAQCAtMTkxLDcgKzE5OSw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3Ry
dWN0dXJlQ2hhaW47CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxs
OwogICAgICAgICAgICAgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKKyAg
ICAgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm87CiAgICAgICAgICAgICBW
YWx1ZVByb2ZpbGUqIHByb2ZpbGU7CisgICAgICAgICAgICB2b2lkKiBwb2ludGVyOwogICAgICAg
ICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDYWxsTGlua0luZm9faAorI2RlZmluZSBMTElu
dENhbGxMaW5rSW5mb19oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5o
PgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOworCitzdHJ1Y3QgTExJ
bnRDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlu
a0luZm8+IHsKKyAgICBMTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgIH0KKyAgICAKKyAg
ICB+TExJbnRDYWxsTGlua0luZm8oKQorICAgIHsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisg
ICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0xpbmtlZCgpIHsg
cmV0dXJuIGNhbGxlZTsgfQorICAgIAorICAgIHZvaWQgdW5saW5rKCkKKyAgICB7CisgICAgICAg
IGNhbGxlZS5jbGVhcigpOworICAgICAgICBtYWNoaW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1i
bGVyQ29kZVB0cigpOworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92
ZSgpOworICAgIH0KKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOwor
ICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBsYXN0U2VlbkNhbGxlZTsKKyAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgbWFjaGluZUNvZGVUYXJnZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIExMSW50Q2FsbExpbmtJbmZvX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3Bw
CShyZXZpc2lvbiAxMDU3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0
aG9kQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwxMSBAQCBN
ZXRob2RDYWxsTGlua1N0YXR1cyBNZXRob2RDYWxsTGlua1N0YXR1CiAgICAgVU5VU0VEX1BBUkFN
KHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBF
TkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgLy8gTk9URTogVGhpcyBk
b2VzIG5vdCBoYXZlIGFuIExMSW50IGZhbGwtYmFjayBiZWNhdXNlIExMSW50IGRvZXMgbm90IGRv
IGFueSBtZXRob2QKKyAgICAvLyBjYWxsIGxpbmsgY2FjaGluZy4KKyAgICBpZiAoIXByb2ZpbGVk
QmxvY2stPm51bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZvcygpKQorICAgICAgICByZXR1cm4gTWV0
aG9kQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAKICAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhv
ZENhbGwgPSBwcm9maWxlZEJsb2NrLT5nZXRNZXRob2RDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRl
eCk7CiAgICAgCiAgICAgaWYgKCFtZXRob2RDYWxsLnNlZW4gfHwgIW1ldGhvZENhbGwuY2FjaGVk
U3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAko
cmV2aXNpb24gMTA1NzcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIG1hY3JvKG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3Jv
KG9wX3B1dF9ieV9pZCwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
biwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QsIDkp
IFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCiAg
ICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9w
X3B1dF9ieV9pZF9nZW5lcmljLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkg
XApAQCAtMjAyLDYgKzIwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIGVu
dW0geyBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0lEX0VOVU0pIH0gT3Bjb2RlSUQ7CiAgICAg
I3VuZGVmIE9QQ09ERV9JRF9FTlVNCiAKKyAgICBjb25zdCBpbnQgbWF4T3Bjb2RlTGVuZ3RoID0g
OTsKICAgICBjb25zdCBpbnQgbnVtT3Bjb2RlSURzID0gb3BfZW5kICsgMTsKIAogICAgICNkZWZp
bmUgT1BDT0RFX0lEX0xFTkdUSFMoaWQsIGxlbmd0aCkgY29uc3QgaW50IGlkIyNfbGVuZ3RoID0g
bGVuZ3RoOwpAQCAtMjE4LDcgKzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGT1Jf
RUFDSF9PUENPREVfSUQoVkVSSUZZX09QQ09ERV9JRCk7CiAgICAgI3VuZGVmIFZFUklGWV9PUENP
REVfSUQKIAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJM
RShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAjaWYgQ09NUElM
RVIoUlZDVCkgfHwgQ09NUElMRVIoSU5URUwpCiAgICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CiAj
ZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
U3RhdHVzLmNwcAkocmV2aXNpb24gMTA1NzcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyNyArMjcsNjYg
QEAKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
KyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgi
CiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK1B1dEJ5
SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2Zp
bGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQorewor
I2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxl
ZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7Cisg
ICAgaWYgKCFzdHJ1Y3R1cmUpCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3Jt
YXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0u
dS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkKSB7CisgICAgICAgIHNpemVfdCBvZmZzZXQg
PSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7Cisg
ICAgICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAs
IG9mZnNldCk7CisgICAgfQorICAgIAorICAgIEFTU0VSVChpbnN0cnVjdGlvblswXS51Lm9wY29k
ZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QKKyAgICAgICAgICAgfHwg
aW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsKTsKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGluc3RydWN0aW9u
WzZdLnUuc3RydWN0dXJlLmdldCgpOworICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IGluc3Ry
dWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCk7CisgICAgQVNTRVJUKG5ld1N0cnVjdHVy
ZSk7CisgICAgQVNTRVJUKGNoYWluKTsKKyAgICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbmV3U3Ry
dWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlm
IChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5m
b3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAKKyAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhTaW1wbGVUcmFuc2l0aW9uLCBzdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY2hhaW4sIG9m
ZnNldCk7CisjZWxzZQorICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAs
IDAsIDAsIG5vdEZvdW5kKTsKKyNlbmRpZgorfQorCiBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRC
bG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJB
TShpZGVudCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAg
IGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAg
ICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwg
aWRlbnQpOworICAgIAogICAgIGlmIChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2Fz
ZShieXRlY29kZUluZGV4KSkKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93
UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOwogICAgIAogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbyA9IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAg
IGlmICghc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21M
TEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgCiAgICAgc3dp
dGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAg
ICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5k
KTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNv
ZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVw
bGFjZTogewogICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFj
ZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEwNTc3MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTkzLDYgKzkzLDggQEAgcHVibGljOgogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX29mZnNldDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1
cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElk
ZW50aWZpZXImKTsKKyAgICAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZSogbV9v
bGRTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCShyZXZpc2lvbiAxMDU3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTG93
TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlICJT
dHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgpAQCAtMTE2LDI2ICsxMTcsMTYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZXhwZWN0ZWQgYnkgdGhlIGNhbGxlZS4KICovCiAKLSNp
Zm5kZWYgTkRFQlVHCiBzdGF0aWMgYm9vbCBzX2R1bXBzR2VuZXJhdGVkQ29kZSA9IGZhbHNlOwot
I2VuZGlmCiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZShi
b29sIGR1bXBzR2VuZXJhdGVkQ29kZSkKIHsKLSNpZm5kZWYgTkRFQlVHCiAgICAgc19kdW1wc0dl
bmVyYXRlZENvZGUgPSBkdW1wc0dlbmVyYXRlZENvZGU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShkdW1wc0dlbmVyYXRlZENvZGUpOwotI2VuZGlmCiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0
b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpCiB7Ci0jaWZuZGVmIE5ERUJVRwogICAgIHJldHVybiBz
X2R1bXBzR2VuZXJhdGVkQ29kZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9
CiAKIEpTT2JqZWN0KiBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQpAQCAtMTQ4LDEwICsx
MzksOCBAQCBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKIAogICAgIG1f
Y29kZUJsb2NrLT5zZXRJbnN0cnVjdGlvbkNvdW50KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5zaXplKCkpOwogCi0jaWZuZGVmIE5ERUJVRwogICAgIGlmIChzX2R1bXBzR2VuZXJhdGVkQ29k
ZSkKICAgICAgICAgbV9jb2RlQmxvY2stPmR1bXAobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSk7Ci0jZW5kaWYKIAogICAgIGlmICgobV9jb2RlVHlwZSA9PSBGdW5jdGlv
bkNvZGUgJiYgIW1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgJiYgIW1fY29kZUJs
b2NrLT51c2VzQXJndW1lbnRzKCkpIHx8IG1fY29kZVR5cGUgPT0gRXZhbENvZGUpCiAgICAgICAg
IHN5bWJvbFRhYmxlKCkuY2xlYXIoKTsKQEAgLTEyNzYsOSArMTI2NSw3IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBt
X2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
ICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgbV9jb2RlQmxvY2stPmFk
ZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlm
CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShyZXF1
aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2
ZV9nbG9iYWwpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsK
ICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBA
IC0xNDQwLDkgKzE0MjcsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJl
c29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUlu
Zm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRF
UikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0
aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0
UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxf
ZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
cHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50
KHByb3BlcnR5KSk7CkBAIC0xNDkwLDkgKzE0NzUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRk
R2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVO
QUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3Ry
dWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBWYWx1ZVByb2ZpbGUq
IHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3Bf
cmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNTExLDkgKzE0OTQsNyBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TWV0aG9kQ2hlY2soCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikK
ICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlv
bnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0
UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZHN0LT5pbmRleCgpKTsKQEAgLTE1MzksOSArMTUyMCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0R2V0QXIKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2Rl
QmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KTsKLSNlbmRpZgogCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE1NTcsOSArMTUzNiw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnkKIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5U
RVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24o
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIAogICAgIGVtaXRPcGNvZGUob3Bf
cHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBA
IC0xODQ4LDcgKzE4MjUsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
YWxsKAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxs
QXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJM
RShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50
Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Cisj
ZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25v
cmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2Zp
bGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0xOTUyLDcgKzE5MzMsMTEgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdAogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3Vu
dAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0
KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jl
c3VsdCk7CkBAIC0yMjEzLDcgKzIxOTgsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDYXRjaAogewogICAgIG1fdXNlc0V4Y2VwdGlvbnMgPSB0cnVlOwogI2lmIEVOQUJM
RShKSVQpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0
LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9k
eW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX2NhdGNoKSkgfTsKKyNlbHNlCiAgICAgSGFuZGxl
ckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwg
Q29kZUxvY2F0aW9uTGFiZWwoKSB9OworI2VuZGlmCiAjZWxzZQogICAgIEhhbmRsZXJJbmZvIGlu
Zm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygp
LnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGggfTsKICNlbmRp
ZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAJKHJldmlzaW9uIDEwNTc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDQsOSArNjA0LDcgQEAgcHJp
dmF0ZToKICAgICB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShub2RlSW5kZXgpOwogICAgICAgICAK
LSAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsK
LSAgICAgICAgQVNTRVJUKHByb2ZpbGUpOwotICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rp
b24gPSBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgUHJlZGlj
dGVkVHlwZSBwcmVkaWN0aW9uID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT52
YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAj
aWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgICAgICBwcmludGYoIkR5bmFtaWMgW0Al
dSwgYmMjJXVdIHByZWRpY3Rpb246ICVzXG4iLCBub2RlSW5kZXgsIGJ5dGVjb2RlSW5kZXgsIHBy
ZWRpY3Rpb25Ub1N0cmluZyhwcmVkaWN0aW9uKSk7CiAjZW5kaWYKQEAgLTEwNDEsNiArMTAzOSw5
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKGJvb2wKICAgICAKICAgICAv
LyBJZiB3ZSBnZXQgaGVyZSB0aGVuIGl0IGxvb2tzIGxpa2Ugd2Ugc2hvdWxkIGRlZmluaXRlbHkg
aW5saW5lIHRoaXMgY29kZS4gUHJvY2VlZAogICAgIC8vIHdpdGggcGFyc2luZyB0aGUgY29kZSB0
byBnZXQgYnl0ZWNvZGUsIHNvIHRoYXQgd2UgY2FuIHRoZW4gcGFyc2UgdGhlIGJ5dGVjb2RlLgor
ICAgIC8vIE5vdGUgdGhhdCBpZiBMTEludCBpcyBlbmFibGVkLCB0aGUgYnl0ZWNvZGUgd2lsbCBh
bHdheXMgYmUgYXZhaWxhYmxlLiBBbHNvIG5vdGUKKyAgICAvLyB0aGF0IGlmIExMSW50IGlzIGVu
YWJsZWQsIHdlIG1heSBpbmxpbmUgYSBjb2RlIGJsb2NrIHRoYXQgaGFzIG5ldmVyIGJlZW4gSklU
dGVkCisgICAgLy8gYmVmb3JlIQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxv
Y2tDYWNoZS5nZXQoQ29kZUJsb2NrS2V5KGV4ZWN1dGFibGUsIGtpbmQpLCBleHBlY3RlZEZ1bmN0
aW9uLT5zY29wZSgpKTsKICAgICBpZiAoIWNvZGVCbG9jaykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTc0MSw3ICsxNzQyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
aywgbV9jdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobWV0aG9k
Q2FsbFN0YXR1cy5pc1NldCgpCi0gICAgICAgICAgICAgICAgJiYgIWdldEJ5SWRTdGF0dXMuaXNT
ZXQoKQorICAgICAgICAgICAgICAgICYmICFnZXRCeUlkU3RhdHVzLndhc1NlZW5JbkpJVCgpCiAg
ICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSkgewogICAgICAgICAgICAgICAgIC8vIEl0
J3MgbW9ub21vcnBoaWMgYXMgZmFyIGFzIHdlIGNhbiB0ZWxsLCBzaW5jZSB0aGUgbWV0aG9kX2No
ZWNrIHdhcyBsaW5rZWQKICAgICAgICAgICAgICAgICAvLyBidXQgdGhlIHNsb3cgcGF0aCAoaS5l
LiB0aGUgbm9ybWFsIGdldF9ieV9pZCkgbmV2ZXIgZmlyZWQuCkBAIC0xODEwLDcgKzE4MTEsOSBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2dldF9ieV9pZCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWQ6IHsKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbDogewogICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IGJh
c2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVy
UmVtYXBbY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZF07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDEwNTc3MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExMSw2ICsxMTEsOCBAQCBpbmxpbmUgYm9vbCBjYW5Db21waWxlT3Bjb2RlKE9wY29k
ZUlEIG9wCiAgICAgY2FzZSBvcF9wdXRfc2NvcGVkX3ZhcjoKICAgICBjYXNlIG9wX2dldF9ieV9p
ZDoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX2RpcmVjdDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAg
ICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6CiAg
ICAgY2FzZSBvcF9qbXA6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMDU3NzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDIxIEBAIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQogICAgIHVp
bnQzMl90IGV4aXRJbmRleCA9IGdsb2JhbERhdGEtPm9zckV4aXRJbmRleDsKICAgICBPU1JFeGl0
JiBleGl0ID0gY29kZUJsb2NrLT5vc3JFeGl0KGV4aXRJbmRleCk7CiAgICAgCisgICAgLy8gTWFr
ZSBzdXJlIGFsbCBjb2RlIG9uIG91ciBpbmxpbmUgc3RhY2sgaXMgSklUIGNvbXBpbGVkLiBUaGlz
IGlzIG5lY2Vzc2FyeSBzaW5jZQorICAgIC8vIHdlIG1heSBvcHQgdG8gaW5saW5lIGEgY29kZSBi
bG9jayBldmVuIGJlZm9yZSBpdCBoYWQgZXZlciBiZWVuIGNvbXBpbGVkIGJ5IHRoZQorICAgIC8v
IEpJVCwgYnV0IG91ciBPU1IgZXhpdCBpbmZyYXN0cnVjdHVyZSBjdXJyZW50bHkgb25seSB3b3Jr
cyBpZiB0aGUgdGFyZ2V0IG9mIHRoZQorICAgIC8vIE9TUiBleGl0IGlzIEpJVCBjb2RlLiBUaGlz
IGNvdWxkIGJlIGNoYW5nZWQgc2luY2UgdGhlcmUgaXMgbm90aGluZyBwYXJ0aWN1bGFybHkKKyAg
ICAvLyBoYXJkIGFib3V0IGRvaW5nIGFuIE9TUiBleGl0IGludG8gdGhlIGludGVycHJldGVyLCBi
dXQgZm9yIG5vdyB0aGlzIHNlZW1zIHRvIG1ha2UKKyAgICAvLyBzZW5zZSBpbiB0aGF0IGlmIHdl
J3JlIE9TUiBleGl0aW5nIGZyb20gaW5saW5lZCBjb2RlIG9mIGEgREZHIGNvZGUgYmxvY2ssIHRo
ZW4KKyAgICAvLyBwcm9iYWJseSBpdCdzIGEgZ29vZCBzaWduIHRoYXQgdGhlIHRoaW5nIHdlJ3Jl
IGV4aXRpbmcgaW50byBpcyBob3QuIEV2ZW4gbW9yZQorICAgIC8vIGludGVyZXN0aW5nbHksIHNp
bmNlIHRoZSBjb2RlIHdhcyBpbmxpbmVkLCBpdCBtYXkgbmV2ZXIgb3RoZXJ3aXNlIGdldCBKSVQK
KyAgICAvLyBjb21waWxlZCBzaW5jZSB0aGUgYWN0IG9mIGlubGluaW5nIGl0IG1heSBlbnN1cmUg
dGhhdCBpdCBvdGhlcndpc2UgbmV2ZXIgcnVucy4KKyAgICBmb3IgKENvZGVPcmlnaW4gY29kZU9y
aWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luOyBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsgY29k
ZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpIHsKKyAgICAgICAg
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJh
bWUtPmV4ZWN1dGFibGUuZ2V0KCkpCisgICAgICAgICAgICAtPmJhc2VsaW5lQ29kZUJsb2NrRm9y
KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5pc0NhbGwgPyBDb2RlRm9yQ2FsbCA6IENvZGVG
b3JDb25zdHJ1Y3QpCisgICAgICAgICAgICAtPmppdENvbXBpbGUoKmdsb2JhbERhdGEpOworICAg
IH0KKyAgICAKICAgICBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeSA9IDA7CiAgICAgaWYg
KGV4aXQubV9yZWNvdmVyeUluZGV4KQogICAgICAgICByZWNvdmVyeSA9ICZjb2RlQmxvY2stPnNw
ZWN1bGF0aW9uUmVjb3ZlcnkoZXhpdC5tX3JlY292ZXJ5SW5kZXggLSAxKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTA1Nzcx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkRGR09TUkV4aXQuaCIKICNpbmNsdWRlICJERkdSZXBhdGNoLmgiCisjaW5jbHVkZSAiSG9z
dENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUg
IklubGluZUFTTS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC01NjEsNDUgKzU2Miw2
IEBAIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHIKICAgICByZXR1cm4g
SlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BF
UkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVS
QVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7Ci0K
LSNpZiBDUFUoWDg2XzY0KQotYXNtICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgotICAgICJtb3YgJXIxMywg
JXJkaVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoWDg2KQotYXNtICgK
LSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00
MCglZWRpKSwgJWVkaVxuIgotICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgotICAgICJqbXAgIiBT
WU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3Rh
dGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikKLWFzbSAoCi0iLnRleHQiICJcbiIK
LSIuYWxpZ24gMiIgIlxuIgotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgot
Ii50aHVtYiIgIlxuIgotIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICI6IiAiXG4iCi0gICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgotICAgICJjcHkgcjAsIHI1
IiAiXG4iCi0gICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZW5kaWYKLQotRW5jb2RlZEpTVmFsdWUg
REZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3Rh
dGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRh
KCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Ci19Ci0KIHN0YXRpYyB2b2lkKiBoYW5kbGVIb3N0Q2Fs
bChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVy
RnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25T
cGFjZS5oCShyZXZpc2lvbiAxMDU3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9B
bGxvY2F0aW9uU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIEhlYXA7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBj
bGFzcyBNYXJrZWRCbG9jazsKIAogY2xhc3MgQWxsb2NhdGlvblNwYWNlIHsKQEAgLTY3LDYgKzY4
LDggQEAgcHVibGljOgogICAgIHZvaWQgc2hyaW5rKCk7CiAgICAgCiBwcml2YXRlOgorICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiAgICAgZW51bSBBbGxvY2F0
aW9uRWZmb3J0IHsgQWxsb2NhdGlvbkNhbkZhaWwsIEFsbG9jYXRpb25NdXN0U3VjY2VlZCB9Owog
CiAgICAgdm9pZCogYWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDEwNTc3MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzcsNyArODM3
LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZwogICAgICAgICBz
ZXRIaWdoV2F0ZXJNYXJrKG1heChwcm9wb3J0aW9uYWxCeXRlcywgbV9taW5CeXRlc1BlckN5Y2xl
KSk7CiAgICAgfQogICAgIEpBVkFTQ1JJUFRDT1JFX0dDX0VORCgpOwotCisgICAgCiAgICAgKCpt
X2FjdGl2aXR5Q2FsbGJhY2spKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgJKHJldmlzaW9uIDEwNTc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNWYWx1ZTsKICAgICBjbGFzcyBMaXZlT2Jq
ZWN0SXRlcmF0b3I7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IE1hcmtlZEFyZ3VtZW50QnVmZmVyOwogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZTsKICAgICBjbGFz
cyBVU3RyaW5nOwpAQCAtMTM2LDExICsxMzcsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZ2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cyhIYXNoU2V0PEpTQ2VsbCo+JiByb290
cyk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBBbGxvY2F0aW9uU3BhY2U7CisgICAgICAgIGZyaWVuZCBjbGFz
cyBDb2RlQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNz
IEJ1bXBTcGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwotICAgICAgICBm
cmllbmQgY2xhc3MgQ29kZUJsb2NrOwogCiAgICAgICAgIHNpemVfdCB3YXRlck1hcmsoKTsKICAg
ICAgICAgc2l6ZV90IGhpZ2hXYXRlck1hcmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya1N0YWNrLmNwcAkocmV2aXNpb24gMTA1NzcxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw3
IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbigKICNlbmRpZgogCiAg
ICAgQVNTRVJUKEhlYXA6OmlzTWFya2VkKGNlbGwpKTsKLQorICAgIAogICAgIGlmIChpc0pTU3Ry
aW5nKGNlbGwpKSB7CiAgICAgICAgIEpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8
SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDEwNTc3MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBIZWFwOwogY2xhc3MgSlNDZWxs
OwogY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogY2xhc3MgV2Vha0dDSGFuZGxlOwogY2xhc3MgU2xvdFZpc2l0b3I7CiAKQEAgLTc3LDYgKzc4
LDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1
bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaEJsb2NrKCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICAvLyBbIDMyLi4uIDI1NiBd
CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlU3RlcCA9IE1hcmtlZEJsb2NrOjphdG9t
U2l6ZTsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VDdXRvZmYgPSAyNTY7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZp
c2lvbiAxMDU3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw2ICsxMTksOSBAQCBuYW1lc3BhY2UgSlNDICB7
CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBJbnN0cnVjdGlvbiogcmV0dXJuVlBD
KCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKTsgfQog
I2VuZGlmCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBJbnN0cnVjdGlvbiogY3VycmVudFZQ
QygpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KHRoaXNbUmVnaXN0
ZXJGaWxlOjpBcmd1bWVudENvdW50XS50YWcoKSk7IH0KKyNlbmRpZgogCiAgICAgICAgIHZvaWQg
c2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSkgeyBzdGF0aWNfY2FzdDxSZWdp
c3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWVdID0gY2FsbGVyRnJhbWU7IH0K
ICAgICAgICAgdm9pZCBzZXRTY29wZUNoYWluKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKSB7
IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluXSA9
IHNjb3BlQ2hhaW47IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTA1NzcxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjksNyArNjksNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2VuZGlmCiAKLSNkZWZpbmUgV1RGX1VT
RV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EIChFTkFCTEUoQ09NUFVURURfR09UT19JTlRF
UlBSRVRFUikgJiYgIWRlZmluZWQoX19sbHZtX18pKQorI2RlZmluZSBXVEZfVVNFX0dDQ19DT01Q
VVRFRF9HT1RPX1dPUktBUk9VTkQgKChFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikg
fHwgRU5BQkxFKExMSU5UKSkgJiYgIWRlZmluZWQoX19sbHZtX18pKQogCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCkBAIC01NDcsMTcgKzU0Nyw0MSBAQCBJbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIo
KQogewogfQogCi12b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKQor
SW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcigpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
SU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2VuYWJsZWQpCisgICAg
ICAgIGRlbGV0ZVtdIG1fb3Bjb2RlVGFibGU7CisjZW5kaWYKK30KKwordm9pZCBJbnRlcnByZXRl
cjo6aW5pdGlhbGl6ZShMTEludDo6RGF0YSogbGxpbnREYXRhLCBib29sIGNhblVzZUpJVCkKK3sK
KyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQor
I2lmICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyAgICAvLyBIYXZpbmcgTExJ
bnQgZW5hYmxlZCwgYnV0IG5vdCBiZWluZyBhYmxlIHRvIHVzZSB0aGUgSklULCBhbmQgbm90IGhh
dmluZworICAgIC8vIGEgY29tcHV0ZWQgZ290byBpbnRlcnByZXRlciwgaXMgbm90IHN1cHBvcnRl
ZC4gTm90IGJlY2F1c2Ugd2UgY2Fubm90CisgICAgLy8gc3VwcG9ydCBpdCwgYnV0IGJlY2F1c2Ug
SSBkZWNpZGVkIHRvIGRyYXcgdGhlIGxpbmUgYXQgdGhlIG51bWJlciBvZgorICAgIC8vIHBlcm11
dGF0aW9ucyBvZiBleGVjdXRpb24gZW5naW5lcyB0aGF0IEkgd2FudGVkIHRoaXMgY29kZSB0byBn
cm9rLgorICAgIEFTU0VSVChjYW5Vc2VKSVQpOworI2VuZGlmCiAgICAgaWYgKGNhblVzZUpJVCkg
eworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJsZSA9IGxsaW50RGF0YS0+
b3Bjb2RlTWFwKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyAr
K2kpCisgICAgICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1fb3Bjb2RlVGFibGVbaV0sIHN0
YXRpY19jYXN0PE9wY29kZUlEPihpKSk7CisjZWxzZQogICAgICAgICAvLyBJZiB0aGUgSklUIGlz
IHByZXNlbnQsIGRvbid0IHVzZSBqdW1wIGRlc3RpbmF0aW9ucyBmb3Igb3Bjb2Rlcy4KICAgICAg
ICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpIHsKICAg
ICAgICAgICAgIE9wY29kZSBvcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4oaSkpOwogICAgICAgICAgICAgbV9vcGNvZGVUYWJsZVtpXSA9IG9wY29kZTsK
ICAgICAgICAgfQorI2VuZGlmCiAgICAgfSBlbHNlIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAg
ICAgIG1fb3Bjb2RlVGFibGUgPSBuZXcgT3Bjb2RlW251bU9wY29kZUlEc107CisjZW5kaWYKICAg
ICAgICAgcHJpdmF0ZUV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVybiwgMCwgMCk7CiAgICAgICAg
IAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQpAQCAtNjY3
LDkgKzY5MSwxMSBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtCiAK
IGJvb2wgSW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKE9wY29kZSBvcGNvZGUpCiB7Ci0jaWYgRU5BQkxF
KENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKExMSU5UKQogICAgIGlmICgh
bV9lbmFibGVkKQogICAgICAgICByZXR1cm4gb3Bjb2RlID49IDAgJiYgc3RhdGljX2Nhc3Q8T3Bj
b2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29kZSkpIDw9IG9wX2VuZDsKKyNlbmRp
ZgogICAgIHJldHVybiBvcGNvZGUgIT0gSGFzaFRyYWl0czxPcGNvZGU+OjplbXB0eVZhbHVlKCkK
ICAgICAgICAgJiYgIUhhc2hUcmFpdHM8T3Bjb2RlPjo6aXNEZWxldGVkVmFsdWUob3Bjb2RlKQog
ICAgICAgICAmJiBtX29wY29kZUlEVGFibGUuY29udGFpbnMob3Bjb2RlKTsKQEAgLTcyNiwxMSAr
NzUyLDExIEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjp1bndpbmRDYWwKICAgICAv
LyBoYXZlIHRvIHN1YnRyYWN0IDEuCiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKElOVEVSUFJF
VEVSKQogICAgIGlmIChjYWxsZXJGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQotICAg
ICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1l
LT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogICAgIGVsc2UK
ICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxG
cmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbGlmIEVOQUJMRShKSVQpCi0gICAgYnl0ZWNvZGVP
ZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7
CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZy
YW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2Vsc2UKICAgICBieXRlY29kZU9mZnNldCA9
IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAxOwog
I2VuZGlmCkBAIC01MTcwLDEwICs1MTk2LDEwIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OnJldHJpZXZl
TGFzdENhbGxlcihDYWwKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpOwogI2lmIEVOQUJMRShKSVQp
CiAgICAgZWxzZQotICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0
ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJh
bWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAjZWxzZQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2Fs
bGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAg
IGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJG
cmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogICAgIGxpbmVOdW1iZXIgPSBj
YWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCAtIDEpOwogICAgIHNvdXJjZUlEID0gY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KS0+c291cmNlSUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxMDU3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNs
dWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk9wY29k
ZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgogCkBAIC00NSw2ICs0Niw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBKU0Z1
bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdp
c3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKQEAgLTkwLDE5ICs5MiwyMSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBDYWNoZWRDYWxsOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIHB1YmxpYzoKICAgICAgICAg
SW50ZXJwcmV0ZXIoKTsKKyAgICAgICAgfkludGVycHJldGVyKCk7CiAgICAgICAgIAotICAgICAg
ICB2b2lkIGluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQpOworICAgICAgICB2b2lkIGluaXRpYWxp
emUoTExJbnQ6OkRhdGEqLCBib29sIGNhblVzZUpJVCk7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxl
JiByZWdpc3RlckZpbGUoKSB7IHJldHVybiBtX3JlZ2lzdGVyRmlsZTsgfQogICAgICAgICAKICAg
ICAgICAgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCBpZCkKICAgICAgICAgewogICAgICAgICAg
ICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVS
UFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUo
TExJTlQpCiAgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVUYWJsZVtpZF07CiAjZWxzZQogICAg
ICAgICAgICAgcmV0dXJuIGlkOwpAQCAtMTEyLDcgKzExNiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewog
ICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9H
T1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgICAgIEFTU0VSVChp
c09wY29kZShvcGNvZGUpKTsKKyAgICAgICAgICAgIHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0
KG9wY29kZSk7CisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAg
ICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKICAgICAgICAgICAgIGlmICghbV9lbmFi
bGVkKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSk7CkBAIC0xMjIsNiArMTI5LDExIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG9wY29kZTsKICNlbmRpZgogICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBib29sIGVuYWJsZWQoKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gbV9lbmFibGVkOworICAgICAgICB9CiAKICAgICAgICAgYm9vbCBpc09wY29kZShPcGNv
ZGUpOwogCkBAIC0xODksNyArMjAxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJl
Z2lzdGVyRmlsZSBtX3JlZ2lzdGVyRmlsZTsKICAgICAgICAgCi0jaWYgRU5BQkxFKENPTVBVVEVE
X0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBPcGNvZGUqIG1f
b3Bjb2RlVGFibGU7IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bjb2RlIGZvciBjb21waWxpbmcKKyAg
ICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMg
T3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZworI2VsaWYgRU5BQkxFKENPTVBVVEVE
X0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgIE9wY29kZSBtX29wY29kZVRhYmxlW251bU9wY29k
ZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bjb2RlIGZvciBjb21waWxpbmcKICAgICAgICAg
SGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2Rl
ID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCShyZXZpc2lvbiAxMDU3
NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAgICBjbGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZSB7CiAg
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlZ2lzdGVyRmlsZSk7CkBAIC04MSw2ICs4Miw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9v
bCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIqKTsKICAgICAgICAgdm9pZCByZWxlYXNlRXhjZXNzQ2Fw
YWNpdHkoKTsKICAgICAgICAgdm9pZCBhZGRUb0NvbW1pdHRlZEJ5dGVDb3VudChsb25nKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVl
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxS
ZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5o
IgorI2luY2x1ZGUgIklubGluZUFTTS5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNWYWx1ZUlubGluZU1ldGhvZHMuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRV
Uk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKK2V4dGVybiAiQyIgRW5j
b2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7CisKKyNpZiBDUFUoWDg2XzY0KQorYXNt
ICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIK
K1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92
IC00MCglcjEzKSwgJXIxM1xuIgorICAgICJtb3YgJXIxMywgJXJkaVxuIgorICAgICJqbXAgIiBT
WU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3Rh
dGUpICJcbiIKKyk7CisjZWxpZiBDUFUoWDg2KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RS
SU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgorICAg
ICJtb3YgJWVkaSwgNCglZXNwKVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJ
T04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBD
UFUoQVJNX1RIVU1CMikKK2FzbSAoCisiLnRleHQiICJcbiIKKyIuYWxpZ24gMiIgIlxuIgorIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9T
WU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorIi50aHVtYiIgIlxuIgorIi50aHVt
Yl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitT
WU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgImxkciBy
NSwgW3I1LCAjLTQwXSIgIlxuIgorICAgICJjcHkgcjAsIHI1IiAiXG4iCisgICAgImIgIiBTWU1C
T0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUp
ICJcbiIKKyk7CisjZW5kaWYKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExf
UkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9i
YWxEYXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVl
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0
dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEhvc3RDYWxsUmV0dXJuVmFs
dWVfaAorI2RlZmluZSBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKworI2luY2x1ZGUgIkpTVmFsdWUu
aCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KKworI2lmIENBTExJTkdfQ09OVkVOVElPTl9JU19TVERDQUxMCisjZGVmaW5lIEhP
U1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIENERUNMCisjZWxzZQorI2RlZmluZSBIT1NUX0NB
TExfUkVUVVJOX1ZBTFVFX09QVElPTgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0MgeworZXh0ZXJu
ICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0
Q2FsbFJldHVyblZhbHVlKCk7Cit9CisKKyNlbmRpZiAvLyBIb3N0Q2FsbFJldHVyblZhbHVlX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTA1NzcxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUs
NiArMzI1LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcHJvZmlsZV93aWxsX2NhbGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNo
X25ld19zY29wZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfc2NvcGUpCisgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pbmRleCkKICAgICAgICAgREVGSU5FX09QKG9w
X3B1dF9ieV92YWwpCkBAIC00ODcsNiArNDg5LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
U2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Bvc3RfaW5jKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2RlYykKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX3ByZV9pbmMpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9y
ZXNvbHZlX2dsb2JhbCkKQEAgLTUyNiw2ICs1MzAsMTAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKCkKIAogSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1
bmN0aW9uRW50cnlBcml0eUNoZWNrKQogeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisg
ICAgcHJpbnRmKCJDb21waWxpbmcgSklUIGNvZGUhXG4iKTsKKyNlbmRpZgorICAgIAogI2lmIEVO
QUJMRShWQUxVRV9QUk9GSUxFUikKICAgICBtX2NhbkJlT3B0aW1pemVkID0gbV9jb2RlQmxvY2st
PmNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKQEAgLTY5MCw4ICs2OTgsMTIgQEAgSklUQ29k
ZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgogICAgICAgICBpbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbiA9IG1fY29kZUJsb2NrLT5zdHJ1Y3R1cmVTdHViSW5mbyhtX21ldGhvZENhbGxD
b21waWxhdGlvbkluZm9baV0ucHJvcGVydHlBY2Nlc3NJbmRleCkuY2FsbFJldHVybkxvY2F0aW9u
OwogICAgIH0KIAotI2lmIEVOQUJMRShERkdfSklUKQotICAgIGlmIChtX2NhbkJlT3B0aW1pemVk
KSB7CisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKKyAgICBpZiAobV9jYW5C
ZU9wdGltaXplZAorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgfHwgdHJ1ZQorI2VuZGlmCisg
ICAgICAgICkgewogICAgICAgICBDb21wYWN0SklUQ29kZU1hcDo6RW5jb2RlciBqaXRDb2RlTWFw
RW5jb2RlcjsKICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVj
b2RlT2Zmc2V0IDwgbV9sYWJlbHMuc2l6ZSgpOyArK2J5dGVjb2RlT2Zmc2V0KSB7CiAgICAgICAg
ICAgICBpZiAobV9sYWJlbHNbYnl0ZWNvZGVPZmZzZXRdLmlzU2V0KCkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENvZGUuaAkocmV2aXNpb24gMTA1NzcxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpJVENvZGUoKSB7IH0KICNlbmRpZgogICAgIHB1Ymxp
YzoKLSAgICAgICAgZW51bSBKSVRUeXBlIHsgSG9zdENhbGxUaHVuaywgQmFzZWxpbmVKSVQsIERG
R0pJVCB9OworICAgICAgICBlbnVtIEpJVFR5cGUgeyBOb25lLCBIb3N0Q2FsbFRodW5rLCBJbnRl
cnByZXRlclRodW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CiAgICAgICAgIAogICAgICAgICBz
dGF0aWMgSklUVHlwZSBib3R0b21UaWVySklUKCkKICAgICAgICAgewpAQCAtNjYsOCArNjYsMTkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gREZHSklUOwogICAgICAgICB9
CiAgICAgICAgIAorICAgICAgICBzdGF0aWMgYm9vbCBpc09wdGltaXppbmdKSVQoSklUVHlwZSBq
aXRUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBERkdKSVQ7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBib29sIGlzQmFzZWxpbmVDb2Rl
KEpJVFR5cGUgaml0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUg
PT0gSW50ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEJhc2VsaW5lSklUOworICAgICAgICB9
CisgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIEpJVENvZGUoKQorICAgICAgICAg
ICAgOiBtX2ppdFR5cGUoTm9uZSkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTc1LDYgKzg2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICA6IG1fcmVmKHJlZikKICAgICAgICAg
ICAgICwgbV9qaXRUeXBlKGppdFR5cGUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChq
aXRUeXBlICE9IE5vbmUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJh
dG9yICEoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCShy
ZXZpc2lvbiAxMDU3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNSArMzMsMjEgQEAKICNpbmNsdWRlICJCeXRlY29kZUdl
bmVyYXRvci5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkpJVC5oIgorI2lu
Y2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+CiBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3By
aWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29k
ZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Cisg
ICAgaWYgKGppdFR5cGUgPT0gY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIAogICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgCisgICAgY29kZUJsb2NrLT51bmxpbmtJbmNvbWluZ0NhbGxzKCk7
CisgICAgCiAgICAgYm9vbCBkZmdDb21waWxlZCA9IGZhbHNlOwogICAgIGlmIChqaXRUeXBlID09
IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAgZGZnQ29tcGlsZWQgPSBERkc6OnRyeUNvbXBpbGUo
Z2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsKQEAgLTU1LDEwICs2MSw3IEBA
IGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2wKICAgICAgICAgfQogICAg
ICAgICBqaXRDb2RlID0gSklUOjpjb21waWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCkp
OwogICAgIH0KLSNpZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLSAgICBpZiAoIUJ5dGVjb2Rl
R2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKLSAgICAgICAgY29kZUJsb2NrLT5oYW5k
bGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwotI2VuZGlmCisgICAgY29kZUJsb2Nr
LT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAgIGNvZGVCbG9jay0+
c2V0SklUQ29kZShqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CiAgICAgCiAgICAg
cmV0dXJuIHRydWU7CkBAIC02Niw5ICs2OSwxNCBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZB
cHByb3ByaWF0ZShKU0dsCiAKIGlubGluZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9w
cmlhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+
JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0
Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBKSVRD
b2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CisgICAgaWYgKGppdFR5cGUgPT0gY29kZUJsb2NrLT5n
ZXRKSVRUeXBlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAogICAgIGlmICghZ2xvYmFs
RGF0YS5jYW5Vc2VKSVQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisgICAgY29kZUJs
b2NrLT51bmxpbmtJbmNvbWluZ0NhbGxzKCk7CisgICAgCiAgICAgYm9vbCBkZmdDb21waWxlZCA9
IGZhbHNlOwogICAgIGlmIChqaXRUeXBlID09IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAgZGZn
Q29tcGlsZWQgPSBERkc6OnRyeUNvbXBpbGVGdW5jdGlvbihnbG9iYWxEYXRhLCBjb2RlQmxvY2su
Z2V0KCksIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CkBAIC04MywxMSArOTEsNyBA
QCBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpCiAgICAgICAgIH0KICAg
ICAgICAgaml0Q29kZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgp
LCAmaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKICAgICB9Ci0jaWYgIUVOQUJMRShPUENPREVfU0FN
UExJTkcpCi0gICAgaWYgKCFCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkp
Ci0gICAgICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHko
KTsKLSNlbmRpZgotICAgIAorICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5n
T3Bwb3J0dW5pdHkoKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgaml0Q29k
ZVdpdGhBcml0eUNoZWNrKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMTA1NzcxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjQsNyArNjQsNyBAQCBFeGNlcHRpb25IYW5kbGVyIGdlbmVyaWNUaHJvdyhKU0ds
b2JhbERhCiAKIEV4Y2VwdGlvbkhhbmRsZXIgaml0VGhyb3coSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCBFeGVjU3RhdGUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSwgUmV0dXJu
QWRkcmVzc1B0ciBmYXVsdExvY2F0aW9uKQogewotICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xv
YmFsRGF0YSwgY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2so
KS0+Ynl0ZWNvZGVPZmZzZXQoZmF1bHRMb2NhdGlvbikpOworICAgIHJldHVybiBnZW5lcmljVGhy
b3coZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2Rl
QmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLCBmYXVsdExvY2F0aW9uKSk7CiB9CiAK
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAx
MDU3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTkxMyw3ICsxOTEzLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwg
b3B0aW1pemVfZnJvbQogICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBzdGFja0ZyYW1lLmFy
Z3NbMF0uaW50MzIoKTsKIAogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgcHJpbnRm
KCJFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJl
b3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9
ICV1XG4iLCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCksIGNvZGVCbG9jay0+cmVvcHRp
bWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50
ZXIoKSk7CisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCBvcHRpbWl6ZV9mcm9tX2xvb3Agd2l0aCBl
eGVjdXRlQ291bnRlciA9ICVkLCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRp
bWl6YXRpb25EZWxheUNvdW50ZXIgPSAldVxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmppdEV4
ZWN1dGVDb3VudGVyKCksIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwg
Y29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYKIAogICAgIGlm
IChjb2RlQmxvY2stPmhhc09wdGltaXplZFJlcGxhY2VtZW50KCkpIHsKQEAgLTIxNjgsNDUgKzIx
NjgsMTMgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSBDYWxsRnJhbWUqIGFyaXR5Q2hlY2tGb3IoQ2FsbEZy
YW1lKiBjYWxsRnJhbWUsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQpCi17Ci0gICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihj
YWxsRnJhbWUtPmNhbGxlZSgpKTsKLSAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24o
KSk7Ci0gICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUo
KS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7Ci0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOwotCi0g
ICAgLy8gVGhpcyBlbnN1cmVzIGVub3VnaCBzcGFjZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFy
aW8gb2YgemVybyBhcmd1bWVudHMgcGFzc2VkIGJ5IHRoZSBjYWxsZXIuCi0gICAgaWYgKCFyZWdp
c3RlckZpbGUtPmdyb3coY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgQVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwg
bmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwotCi0gICAgLy8gVG9vIGZldyBhcmd1bWVu
dHMgLS0gY29weSBjYWxsIGZyYW1lIGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5n
IGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5lZC4KLSAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwotICAgIFJl
Z2lzdGVyKiBzcmMgPSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpOwotICAgIFJlZ2lzdGVyKiBkc3Qg
PSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgZGVsdGE7Ci0KLSAgICBpbnQgaTsKLSAgICBpbnQg
ZW5kID0gLUNhbGxGcmFtZTo6b2Zmc2V0Rm9yKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsK
LSAgICBmb3IgKGkgPSAtMTsgaSA+PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0gc3JjW2ld
OwotCi0gICAgZW5kIC09IGRlbHRhOwotICAgIGZvciAoIDsgaSA+PSBlbmQ7IC0taSkKLSAgICAg
ICAgZHN0W2ldID0ganNVbmRlZmluZWQoKTsKLQotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1l
ID0gQ2FsbEZyYW1lOjpjcmVhdGUoZHN0KTsKLSAgICBBU1NFUlQoKHZvaWQqKW5ld0NhbGxGcmFt
ZSA8PSByZWdpc3RlckZpbGUtPmVuZCgpKTsKLSAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwotfQot
CiBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY2FsbF9hcml0eUNoZWNrKQogewogICAg
IFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKIAogICAgIENhbGxGcmFtZSogY2Fs
bEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxG
cmFtZSA9IGFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwg
Q29kZUZvckNhbGwpOworICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1Bh
dGhzOjphcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENv
ZGVGb3JDYWxsKTsKICAgICBpZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93
RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JF
VFVSTl9BRERSRVNTLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJG
cmFtZSgpKSk7CiAKQEAgLTIyMTksNyArMjE4Nyw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZv
aWQqLCBvcF9jb25zdHJ1Y3QKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFt
ZS5jYWxsRnJhbWU7CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tG
b3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7
CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hl
Y2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0cnVj
dCk7CiAgICAgaWYgKCFuZXdDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlv
bkZyb21PcENhbGw8dm9pZCo+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQURE
UkVTUywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkp
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShy
ZXZpc2lvbiAxMDU3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNl
SklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDEwIEBACiAjaWZuZGVmIEpTSW50ZXJm
YWNlSklUX2gKICNkZWZpbmUgSlNJbnRlcmZhY2VKSVRfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVD
b252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRTdHVicy5o
IgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUg
Ik1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgTExJbnRDb21tb25faAorI2RlZmluZSBMTEludENvbW1vbl9oCisKKyNkZWZp
bmUgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2RlZmluZSBMTElOVF9IRUxQRVJfVFJBQ0lO
RyAwCisKKyNlbmRpZiAvLyBMTEludENvbW1vbl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorCisjaWYgRU5BQkxFKExMSU5UKQor
CisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVy
LmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJ
bnQgeworCitEYXRhOjpEYXRhKCkKKyAgICA6IG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKG5ldyBJ
bnN0cnVjdGlvblttYXhPcGNvZGVMZW5ndGggKyAxXSkKKyAgICAsIG1fb3Bjb2RlTWFwKG5ldyBP
cGNvZGVbbnVtT3Bjb2RlSURzXSkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heE9wY29k
ZUxlbmd0aCArIDE7ICsraSkKKyAgICAgICAgbV9leGNlcHRpb25JbnN0cnVjdGlvbnNbaV0udS5w
b2ludGVyID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJh
bXBvbGluZSk7CisjZGVmaW5lIE9QQ09ERV9FTlRSWShvcGNvZGUsIGxlbmd0aCkgbV9vcGNvZGVN
YXBbb3Bjb2RlXSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50XyMjb3Bjb2RlKTsKKyAgICBG
T1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0VOVFJZKTsKKyN1bmRlZiBPUENPREVfRU5UUlkKK30K
KworRGF0YTo6fkRhdGEoKQoreworICAgIGRlbGV0ZVtdIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
OworICAgIGRlbGV0ZVtdIG1fb3Bjb2RlTWFwOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludERh
dGFfaAorI2RlZmluZSBMTEludERhdGFfaAorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rp
b247CisKK25hbWVzcGFjZSBMTEludCB7CisKKyNpZiBFTkFCTEUoTExJTlQpCitjbGFzcyBEYXRh
IHsKK3B1YmxpYzoKKyAgICBEYXRhKCk7CisgICAgfkRhdGEoKTsKKyAgICAKKyAgICBJbnN0cnVj
dGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2V4
Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBvcGNvZGVNYXAo
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3Bjb2RlTWFwOworICAgIH0KK3ByaXZhdGU6Cisg
ICAgSW5zdHJ1Y3Rpb24qIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIE9wY29kZSogbV9v
cGNvZGVNYXA7Cit9OworI2Vsc2UgLy8gRU5BQkxFKExMSU5UKQorCisjaWYgQ09NUElMRVIoQ0xB
TkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1XbWlzc2luZy1ub3JldHVybiIKKyNlbmRpZgorCitjbGFzcyBEYXRhIHsK
K3B1YmxpYzoKKyAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUq
IG9wY29kZU1hcCgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
Cit9OworCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9w
CisjZW5kaWYKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludERhdGFfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5
cG9pbnRzLmgiCisKKyNpbmNsdWRlICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRh
LmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJl
dGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1
bmN0aW9uRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCwgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBh
cml0eUNoZWNrKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAg
ICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICAgICAgaml0Q29kZSA9IEpJVENv
ZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2Vk
Q29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
ZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpKSkpOworICAgICAgICAgICAgYXJpdHlDaGVjayA9
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eV9jaGVjaykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIGpp
dENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpKSkpOworICAgICAg
ICBhcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAg
ICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxs
RW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgICAg
ICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEFyaXR5
Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgaml0Q29kZSA9IEpJVENv
ZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dl
bmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIGFyaXR5Q2hlY2sgPSBn
bG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtH
ZW5lcmF0b3IpLmNvZGUoKTsKK30KKwordm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRh
LmNhblVzZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24o
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2V2YWxfcHJvbG9ndWUpKSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGds
b2JhbERhdGEuZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspOworfQorCit2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERh
dGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlv
bihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fz
c2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfcHJvZ3JhbV9wcm9sb2d1
ZSkpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENv
ZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgSklU
Q29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTElu
dAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9p
bnRzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
bnRyeXBvaW50cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRFbnRyeXBvaW50
c19oCisjZGVmaW5lIExMSW50RW50cnlwb2ludHNfaAorCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXZhbENvZGVCbG9jazsK
K2NsYXNzIEpJVENvZGU7CitjbGFzcyBKU0dsb2JhbERhdGE7CitjbGFzcyBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI7CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CitjbGFzcyBQcm9ncmFtQ29k
ZUJsb2NrOworCituYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2lu
dChKU0dsb2JhbERhdGEmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBKSVRDb2RlJiwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyJiBhcml0eUNoZWNrKTsKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNH
bG9iYWxEYXRhJiwgSklUQ29kZSYpOwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2Jh
bERhdGEmLCBKSVRDb2RlJik7CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBFdmFsQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAg
ICBnZXRFdmFsRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworaW5saW5lIHZv
aWQgZ2V0RW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb2dyYW1Db2RlQmxv
Y2sqLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGdldFByb2dyYW1FbnRyeXBvaW50KGdsb2Jh
bERhdGEsIGppdENvZGUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2Vu
ZGlmIC8vIExMSW50RW50cnlwb2ludHNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCisKKyNp
bmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJ
bnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMTElu
dENvbW1vbi5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvdyhFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2Jh
bERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcg
ZXhjZXB0aW9uICVzLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOwor
I2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4
Y2VwdGlvbiwgZXhlYy0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGV4ZWMsIGV4ZWMtPnJl
dHVyblBDKCkpKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNl
cHRpb24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCku
bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworfQorCitJbnN0cnVjdGlvbiogcmV0
dXJuVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hF
TFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKHJldHVyblRv
VGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlm
CisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlv
biwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAg
CisgICAgcmV0dXJuIGdsb2JhbERhdGEtPmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMo
KTsKK30KKwordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiog
cGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEo
KTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0
aW9uICVzIChjYWxsVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRp
b24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFs
RGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpKTsKKyAgICAKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhy
b3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpM
TEludAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0
aW9ucy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RXhjZXB0aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRFeGNlcHRpb25z
X2gKKyNkZWZpbmUgTExJbnRFeGNlcHRpb25zX2gKKworI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0
cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKworLy8gSnVzdCB0aHJvdyB0aGUgY3VycmVu
dGx5IGFjdGl2ZSBleGNlcHRpb24gaW4gdGhlIGNvbnRleHQgb2YgdGhpcyBleGVjIHN0YXRlCisv
LyBhbmQgc2V0IHVwIGFsbCBuZWNlc3Nhcnkgc3RhdGUuCit2b2lkIGludGVycHJldGVyVGhyb3co
RXhlY1N0YXRlKik7CisKKy8vIFRlbGxzIHlvdSB3aGVyZSB0byBqdW1wIHRvIGlmIHlvdSB3YW50
IHRvIHJldHVybi10by10aHJvdywgYWZ0ZXIgeW91J3ZlIGFscmVhZHkKKy8vIHNldCB1cCBhbGwg
aW5mb3JtYXRpb24gbmVlZGVkIHRvIHRocm93IHRoZSBleGNlcHRpb24uCitJbnN0cnVjdGlvbiog
cmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihFeGVjU3RhdGUqKTsKKworLy8gU2F2ZXMg
dGhlIGN1cnJlbnQgUEMgaW4gdGhlIGdsb2JhbCBkYXRhIGZvciBzYWZlLWtlZXBpbmcsIGFuZCBn
aXZlcyB5b3UgYSBQQworLy8gdGhhdCB5b3UgY2FuIHRlbGwgdGhlIGludGVycHJldGVyIHRvIGdv
IHRvLCB3aGljaCB3aGVuIGFkdmFuY2VkIGJldHdlZW4gMQorLy8gYW5kIDkgc2xvdHMgd2lsbCBn
aXZlIHlvdSBhbiAiaW5zdHJ1Y3Rpb24iIHRoYXQgdGhyZWFkcyB0byB0aGUgaW50ZXJwcmV0ZXIn
cworLy8gZXhjZXB0aW9uIGhhbmRsZXIuIE5vdGUgdGhhdCBpZiB5b3UgZ2l2ZSBpdCB0aGUgUEMg
Zm9yIGV4Y2VwdGlvbiBoYW5kbGluZywKKy8vIGl0J3Mgc21hcnQgZW5vdWdoIHRvIGp1c3QgcmV0
dXJuIHRoYXQgUEMgd2l0aG91dCBkb2luZyBhbnl0aGluZyBlbHNlOyB0aGlzCisvLyBsZXRzIHlv
dSB0aHJlYWQgZXhjZXB0aW9uIGhhbmRsaW5nIHRocm91Z2ggY29tbW9uIGhlbHBlciBmdW5jdGlv
bnMgdXNlZCBieQorLy8gb3RoZXIgaGVscGVycy4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93
KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisKKy8vIFVzZSB0aGlzIHdoZW4geW91J3JlIHRo
cm93aW5nIHRvIGEgY2FsbCB0aHVuay4KK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSosIElu
c3RydWN0aW9uKik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8g
TExJbnRFeGNlcHRpb25zX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludEhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQyMSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRIZWxwZXJzLmgiCisKKyNpbmNsdWRlICJBcmd1
bWVudHMuaCIKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25TbG93UGF0
aHMuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKKyNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJKSVREcml2ZXIuaCIKKyNpbmNs
dWRlICJKU0FjdGl2YXRpb24uaCIKKyNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgorI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oIgorI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0
cmluZy5oIgorI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgor
I2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0
ZXIuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgTExJbnQgeworCisjZGVmaW5lIExMSU5UX09QKGluZGV4KSAoZXhlYy0+dW5jaGVja2VkUihw
Y1tpbmRleF0udS5vcGVyYW5kKSkKKyNkZWZpbmUgTExJTlRfT1BfQyhpbmRleCkgKGV4ZWMtPnIo
cGNbaW5kZXhdLnUub3BlcmFuZCkpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOX1RXTyhmaXJzdCwg
c2Vjb25kKSBkbyB7ICAgICAgIFwKKyAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB2b2lkKiBhOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB2b2lkKiBiOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgIH0gcGFpcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIGludDY0X3QgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgfSBfX3J0X3U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgX19ydF91LnBhaXIuYSA9IGZpcnN0OyAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgX19ydF91LnBhaXIuYiA9IHNlY29uZDsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgcmV0dXJuIF9fcnRfdS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdo
aWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9FTkRfSU1QTCgpIExMSU5UX1JFVFVSTl9UV08o
cGMsIGV4ZWMpCisKKyNkZWZpbmUgTExJTlRfVEhST1coZXhjZXB0aW9uVG9UaHJvdykgZG8geyAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBfX3RfZ2xvYmFs
RGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsgICAgICAgIFwKKyAgICAgICAgX190X2dsb2JhbERh
dGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgIFwKKyAgICAgICAg
cGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DSEVD
S19FWENFUFRJT04oKSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJ
S0VMWShleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgeyAgIFwKKyAgICAgICAgICAgIHBj
ID0gcmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
TExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdo
aWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9FTkQoKSBkbyB7ICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAg
XAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0JSQU5DSChvcGNvZGUsIGNvbmRpdGlv
bikgZG8geyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGJvb2wgX19iX2NvbmRpdGlv
biA9IChjb25kaXRpb24pOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIGlmIChfX2JfY29uZGl0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICBwYyArPSBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAx
XS51Lm9wZXJhbmQ7ICAgICAgICBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwYyArPSBPUENP
REVfTEVOR1RIKG9wY29kZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExM
SU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOKHZhbHVlKSBkbyB7
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNWYWx1ZSBfX3JfcmV0dXJuVmFsdWUgPSAodmFs
dWUpOyAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgTExJTlRfT1AoMSkgPSBfX3JfcmV0dXJuVmFsdWU7ICAgICAgICAgIFwK
KyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9
IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fUFJPRklMRUQob3Bjb2RlLCB2
YWx1ZSkgZG8geyAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNWYWx1ZSBfX3JwX3JldHVyblZh
bHVlID0gKHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBM
TElOVF9PUCgxKSA9IF9fcnBfcmV0dXJuVmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5wcm9maWxlLT5tX2J1Y2tl
dHNbMF0gPSBcCisgICAgICAgICAgICBKU1ZhbHVlOjplbmNvZGUoX19ycF9yZXR1cm5WYWx1ZSk7
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2Rl
ZmluZSBMTElOVF9DQUxMX0VORF9JTVBMKGV4ZWMsIGNhbGxUYXJnZXQpIExMSU5UX1JFVFVSTl9U
V08oKGNhbGxUYXJnZXQpLCAoZXhlYykpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhleGVj
LCBwYywgZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhl
Y1N0YXRlKiBfX2N0X2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3RfcGMgPSAocGMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBfX2N0X2dsb2Jh
bERhdGEgPSAoX19jdF9leGVjKS0+Z2xvYmFsRGF0YSgpOyAgICAgIFwKKyAgICAgICAgX19jdF9n
bG9iYWxEYXRhLmV4Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2N0X2V4ZWMsIGNhbGxUb1Rocm93KF9f
Y3RfZXhlYywgX19jdF9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJ
TlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2NjZV9leGVjID0gKGV4ZWMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY2NlX3BjID0g
KHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVO
TElLRUxZKF9fY2NlX2V4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jY2VfZXhlYywgY2FsbFRvVGhy
b3coX19jY2VfZXhlYywgX19jY2VfcGMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVm
aW5lIExMSU5UX0NBTExfUkVUVVJOKGV4ZWMsIHBjLCBjYWxsVGFyZ2V0KSBkbyB7ICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jcl9leGVjID0gKGV4ZWMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2Ny
X3BjID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IHZvaWQqIF9fY3JfY2FsbFRhcmdldCA9IChjYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKF9fY3JfZXhlYy0+
Y2FsbGVyRnJhbWUoKSwgX19jcl9wYyk7ICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwo
X19jcl9leGVjLCBfX2NyX2NhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICBcCisgICAgfSB3aGls
ZSAoZmFsc2UpCisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVy
YW5kKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQg
b3BlcmFuZCkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMldSwgb3AjJXU6
IFRyYWNlKCVkKTogJWQ6ICVkXG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAg
ICAgICAgICAgZXhlYywKKyAgICAgICAgICAgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJl
dGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGZyb21XaGVyZSwK
KyAgICAgICAgICAgb3BlcmFuZCwKKyAgICAgICAgICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kKTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50
X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdo
ZXJlLCBpbnQgb3BlcmFuZCkKK3sKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQyhvcGVy
YW5kKS5qc1ZhbHVlKCk7CisgICAgRW5jb2RlZFZhbHVlRGVzY3JpcHRvciBkZXNjcmlwdG9yOwor
ICAgIGRlc2NyaXB0b3IuYXNJbnQ2NCA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgcHJp
bnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZDog
JTA4eDolMDh4IiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4
ZWMsCisgICAgICAgICAgIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJl
Z2luKCksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUsCisgICAgICAgICAg
IG9wZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCwKKyAgICAgICAgICAg
ZGVzY3JpcHRvci5hc0JpdHMudGFnLAorICAgICAgICAgICBkZXNjcmlwdG9yLmFzQml0cy5wYXls
b2FkKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgcHJpbnRmKCI6ICVzIiwgdmFsdWUuZGVzY3JpcHRp
b24oKSk7CisjZW5kaWYKKyAgICBwcmludGYoIlxuIik7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlKQoreworICAgIHByaW50ZigiJXAgLyAl
cDogaW4gcHJvbG9ndWUuXG4iLCBleGVjLT5jb2RlQmxvY2soKSwgZXhlYyk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK3N0YXRpYyB2b2lkIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IGNoYXIqIGNvbW1lbnQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
K3sKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsK
KyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmpzRXhlY3V0YWJs
ZSgpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gJmV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5
dGVjb2RlRm9yKGtpbmQpOworICAgIHByaW50ZigiJXAgLyAlcDogaW4gJXMgb2YgZnVuY3Rpb24g
JXAsIGV4ZWN1dGFibGUgJXA7IG51bVZhcnMgPSAldSwgbnVtUGFyYW1ldGVycyA9ICV1LCBudW1D
YWxsZWVSZWdpc3RlcnMgPSAldS5cbiIsCisgICAgICAgICAgIGNvZGVCbG9jaywgZXhlYywgY29t
bWVudCwgY2FsbGVlLCBleGVjdXRhYmxlLAorICAgICAgICAgICBjb2RlQmxvY2stPm1fbnVtVmFy
cywgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdp
c3RlcnMpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9m
b3JfY2FsbCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNhbGwgcHJvbG9n
dWUiLCBDb2RlRm9yQ2FsbCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgdHJhY2VG
dW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjb25zdHJ1Y3QgcHJvbG9ndWUiLCBDb2RlRm9yQ29uc3Ry
dWN0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJp
dHlDaGVja19mb3JfY2FsbCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNh
bGwgYXJpdHkgY2hlY2siLCBDb2RlRm9yQ2FsbCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0
cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBhcml0eSBjaGVjayIsIENvZGVG
b3JDb25zdHJ1Y3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0
cmFjZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMldSwgIiwKKyAgICAg
ICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHBj
IC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworI2lmbmRlZiBO
REVCVUcKKyAgICBwcmludGYoIiVzLCAiLCBvcGNvZGVOYW1lc1tleGVjLT5nbG9iYWxEYXRhKCku
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKV0pOworI2Vsc2UKKyAgICBw
cmludGYoIm9wIyV1LCAiLCBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKHBjWzBdLnUub3Bjb2RlKSk7CisjZW5kaWYKKyAgICBwcmludGYoInNjb3BlICVwXG4iLCBl
eGVjLT5zY29wZUNoYWluKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChzcGVjaWFsX3RyYWNlKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIHNw
ZWNpYWwgY2FzZSBiYyMldSwgb3AjJXUsIHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICAgICAgICAg
ZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHBjIC0gZXhl
Yy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCksCisgICAgICAgICAgIGV4ZWMt
Pmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAor
ICAgICAgICAgICBleGVjLT5yZXR1cm5QQygpLnZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOwor
fQorCitpbmxpbmUgYm9vbCBzaG91bGRKSVQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIFlv
dSBjYW4gbW9kaWZ5IHRoaXMgdG8gdHVybiBvZmYgSklUdGluZyB3aXRob3V0IHJlYnVpbGRpbmcg
dGhlIHdvcmxkLgorICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCk7Cit9
CisKK2VudW0gRW50cnlLaW5kIHsgUHJvbG9ndWUsIEFyaXR5Q2hlY2sgfTsKK3N0YXRpYyBIZWxw
ZXJSZXR1cm5UeXBlIGVudHJ5T1NSKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgY2hhciAqbmFtZSwgRW50cnlLaW5kIGtpbmQpCit7
CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkICVz
IHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBuYW1lLCBjb2RlQmxvY2st
PmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoIXNob3VsZEpJ
VChleGVjKSkgeworICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAg
ICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAgICBpZiAoIWNvZGVCbG9j
ay0+aml0Q29tcGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5BQkxFKEpJVF9WRVJC
T1NFX09TUikKKyAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5c
biIpOworI2VuZGlmCisgICAgfQorICAgIGNvZGVCbG9jay0+aml0U29vbigpOworICAgIGlmIChr
aW5kID09IFByb2xvZ3VlKQorICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+Z2V0
SklUQ29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoMCksIGV4ZWMpOworICAgIEFTU0VS
VChraW5kID09IEFyaXR5Q2hlY2spOworICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5n
ZXRKSVRDb2RlV2l0aEFyaXR5Q2hlY2soKS5leGVjdXRhYmxlQWRkcmVzcygpLCBleGVjKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKQoreworICAgIHJldHVybiBlbnRyeU9TUihl
eGVjLCBwYywgZXhlYy0+Y29kZUJsb2NrKCksICJlbnRyeV9vc3IiLCBQcm9sb2d1ZSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCkKK3sKKyAgICBy
ZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNF
eGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDYWxsKSwgImVudHJ5X29z
cl9mdW5jdGlvbl9mb3JfY2FsbCIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
ZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgcmV0dXJuIGVudHJ5T1NS
KGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5n
ZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ29uc3RydWN0KSwgImVudHJ5X29zcl9mdW5jdGlv
bl9mb3JfY29uc3RydWN0IiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICByZXR1cm4gZW50cnlP
U1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCkt
PmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDYWxsKSwgImVudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eUNoZWNrIiwgQXJpdHlDaGVjayk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2spCit7CisgICAgcmV0
dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhl
Y3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ29uc3RydWN0KSwgImVudHJ5
X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2siLCBBcml0eUNoZWNrKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0wobG9vcF9vc3IpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NS
KQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgbG9vcF9vc3Igd2l0aCBleGVjdXRlQ291bnRlciA9
ICVkXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNl
bmRpZgorICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGNvZGVCbG9j
ay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhl
Yyk7CisgICAgfQorICAgIAorICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmds
b2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICBwcmlu
dGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICB9Cisg
ICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgCisgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0
SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAKKyAgICBWZWN0b3I8Qnl0
ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiBtYXA7CisgICAgY29kZUJsb2NrLT5qaXRDb2RlTWFwKCkt
PmRlY29kZShtYXApOworICAgIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCogbWFwcGluZyA9IGJp
bmFyeVNlYXJjaDxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQsIHVuc2lnbmVkLCBCeXRlY29kZUFu
ZE1hY2hpbmVPZmZzZXQ6OmdldEJ5dGVjb2RlSW5kZXg+KG1hcC5iZWdpbigpLCBtYXAuc2l6ZSgp
LCBwYyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgQVNTRVJUKG1h
cHBpbmcpOworICAgIEFTU0VSVChtYXBwaW5nLT5tX2J5dGVjb2RlSW5kZXggPT0gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7Cisg
ICAgCisgICAgdm9pZCoganVtcFRhcmdldCA9IGNvZGVCbG9jay0+Z2V0SklUQ29kZSgpLmV4ZWN1
dGFibGVBZGRyZXNzQXRPZmZzZXQobWFwcGluZy0+bV9tYWNoaW5lQ29kZU9mZnNldCk7CisgICAg
QVNTRVJUKGp1bXBUYXJnZXQpOworICAgIAorICAgIExMSU5UX1JFVFVSTl9UV08oanVtcFRhcmdl
dCwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpCit7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAKKyNpZiBFTkFCTEUoSklU
X1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgcmVwbGFjZSB3aXRoIGV4ZWN1
dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3Vu
dGVyKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKHNob3VsZEpJVChleGVjKSkgeworICAgICAg
ICBpZiAoIWNvZGVCbG9jay0+aml0Q29tcGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYg
RU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICAgICAgICAgIHByaW50ZigiICAgIENvZGUgd2Fz
IGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIGNvZGVC
bG9jay0+aml0U29vbigpOworICAgIH0gZWxzZQorICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRB
bnl0aW1lU29vbigpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChy
ZWdpc3Rlcl9maWxlX2NoZWNrKQoreworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJp
bnRmKCJDaGVja2luZyBzdGFjayBoZWlnaHQgd2l0aCBleGVjID0gJXAuXG4iLCBleGVjKTsKKyAg
ICBwcmludGYoIkNvZGVCbG9jayA9ICVwLlxuIiwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAgIHBy
aW50ZigiTnVtIGNhbGxlZSByZWdpc3RlcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5t
X251bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgcHJpbnRmKCJOdW0gdmFycyA9ICV1LlxuIiwgZXhl
Yy0+Y29kZUJsb2NrKCktPm1fbnVtVmFycyk7CisgICAgcHJpbnRmKCJDdXJyZW50IGVuZCBpcyBh
dCAlcC5cbiIsIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCku
ZW5kKCkpOworI2VuZGlmCisgICAgQVNTRVJUKCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2Rl
QmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnNdID4gZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVy
cHJldGVyLT5yZWdpc3RlckZpbGUoKS5lbmQoKSk7CisgICAgaWYgKFVOTElLRUxZKCFleGVjLT5n
bG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmdyb3coJmV4ZWMtPnJlZ2lz
dGVycygpW2V4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVyc10pKSkgeworICAg
ICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAg
aW50ZXJwcmV0ZXJUaHJvdyhleGVjKTsKKyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93Rm9yVGhy
b3duRXhjZXB0aW9uKGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9FTkRfSU1QTCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNrKQoreworICAgIEV4ZWNTdGF0
ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmZXhlYy0+
Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNhbGwpOwor
ICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsK
KyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZs
b3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0ZXJUaHJvdyhleGVjKTsKKyAgICAgICAg
TExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KDEpLCBleGVjKTsKKyAgICB9Cisg
ICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9
IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgp
LmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgaWYg
KCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAg
ICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9y
KGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93KGV4ZWMpOworICAgICAgICBMTElOVF9S
RVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oMSksIGV4ZWMpOworICAgIH0KKyAgICBMTElO
VF9SRVRVUk5fVFdPKDAsIG5ld0V4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y3JlYXRlX2FjdGl2YXRpb24pCit7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmlu
dGYoIkNyZWF0aW5nIGFuIGFjdGl2YXRpb24sIGV4ZWMgPSAlcCFcbiIsIGV4ZWMpOworI2VuZGlm
CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gSlNBY3RpdmF0aW9uOjpjcmVhdGUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihl
eGVjLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkpKTsKKyAgICBleGVjLT5zZXRTY29w
ZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChhY3RpdmF0aW9uKSk7CisgICAgTExJTlRf
UkVUVVJOKEpTVmFsdWUoYWN0aXZhdGlvbikpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY3JlYXRlX2FyZ3VtZW50cykKK3sKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpTVmFsdWUo
QXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKSk7CisgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgZXhlYy0+dW5jaGVja2VkUihwY1sxXS51Lm9wZXJhbmQp
ID0gYXJndW1lbnRzOworICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3RoaXMpCit7CisgICAgSlNGdW5j
dGlvbiogY29uc3RydWN0b3IgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICAKKyNp
ZiAhQVNTRVJUX0RJU0FCTEVECisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAg
IEFTU0VSVChjb25zdHJ1Y3Rvci0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0YShjb25z
dHJ1Y3RvciwgY29uc3RydWN0RGF0YSkgPT0gQ29uc3RydWN0VHlwZUpTKTsKKyNlbmRpZgorICAg
IAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOworICAgIEpTVmFsdWUgcHJvdG8gPSBMTElOVF9P
UCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKHByb3RvLmlzT2JqZWN0KCkpCisgICAgICAgIHN0cnVj
dHVyZSA9IGFzT2JqZWN0KHByb3RvKS0+aW5oZXJpdG9ySUQoZXhlYy0+Z2xvYmFsRGF0YSgpKTsK
KyAgICBlbHNlCisgICAgICAgIHN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5zY29wZSgpLT5nbG9i
YWxPYmplY3QtPmVtcHR5T2JqZWN0U3RydWN0dXJlKCk7CisgICAgCisgICAgTExJTlRfUkVUVVJO
KGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY29udmVydF90aGlzKQoreworICAgIEpTVmFsdWUgdjEgPSBMTElOVF9P
UCgxKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHYxLmlzUHJpbWl0aXZlKCkpOworICAgIExMSU5U
X1JFVFVSTih2MS50b1RoaXNPYmplY3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmV3X29iamVjdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5KQorewor
ICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RBcnJheShleGVjLCBiaXR3aXNlX2Nhc3Q8SlNWYWx1
ZSo+KCZMTElOVF9PUCgyKSksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oY29uc3Ry
dWN0QXJyYXkoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKHBjWzJdLnUu
b3BlcmFuZCksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbmV3X3JlZ2V4cCkKK3sKKyAgICBSZWdFeHAqIHJlZ0V4cCA9IGV4ZWMtPmNvZGVCbG9jaygp
LT5yZWdleHAocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQor
ICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBmbGFn
IHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSk7CisgICAgTExJTlRfUkVUVVJOKFJl
Z0V4cE9iamVjdDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgp
LCByZWdFeHApKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCkKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNCb29sZWFuKCFMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0Jvb2xlYW4o
ZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2VxKQoreworICAgIExMSU5U
X1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbmVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OmVx
dWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKQoreworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xl
YW4oIUpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2xlc3MpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8dHJ1ZT4oZXhlYywg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Z3JlYXRlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczxmYWxzZT4oZXhl
YywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcmVxKQoreworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3ByZV9pbmMpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDEp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKSArIDEpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3ByZV9kZWMpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDEp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKSAtIDEpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Bvc3RfaW5jKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQg
KyAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJTlRf
T1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0ganNOdW1i
ZXIocmVzdWx0IC0gMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzTnVtYmVyKC1MTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKQoreworICAgIEpTVmFsdWUgdjEgPSBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHYyID0gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCk7CisgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRyeWlu
ZyB0byBhZGQgJXMiLCB2MS5kZXNjcmlwdGlvbigpKTsKKyAgICBwcmludGYoIiB0byAlcy5cbiIs
IHYyLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKHYxLmlzU3RyaW5nKCkg
JiYgIXYyLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMs
IGFzU3RyaW5nKHYxKSwgdjIudG9TdHJpbmcoZXhlYykpKTsKKyAgICB9CisgICAgCisgICAgaWYg
KHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpz
TnVtYmVyKHYxLmFzTnVtYmVyKCkgKyB2Mi5hc051bWJlcigpKSk7CisgICAgCisgICAgTExJTlRf
UkVUVVJOKGpzQWRkU2xvd0Nhc2UoZXhlYywgdjEsIHYyKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9tdWwpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICogTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9O
dW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1YikKK3sKKyAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIo
ZXhlYykgLSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAvIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9tb2QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYyksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVy
KGV4ZWMpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KQoreworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4
ZWMpIDw8IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Vyc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUlu
dDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIo
ZXhlYykgJiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSB8IExMSU5UX09QX0MoMyku
anNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2JpdHhvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9JbnQzMihleGVjKSBeIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhl
YykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCkKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIofkxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKK3sK
KyAgICBKU1ZhbHVlIGJhc2VWYWwgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyNpZm5kZWYg
TkRFQlVHCisgICAgVHlwZUluZm8gdHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKTsKKyAgICBBU1NF
UlQoIWJhc2VWYWwuaXNPYmplY3QoKQorICAgICAgICAgICB8fCAhKHR5cGVJbmZvID0gYXNPYmpl
Y3QoYmFzZVZhbCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpKS5pbXBsZW1lbnRzSGFzSW5zdGFu
Y2UoKSk7CisjZW5kaWYKKyAgICBMTElOVF9USFJPVyhjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihl
eGVjLCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2luc3RhbmNlb2YpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93
UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3coZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQpLmpzVmFsdWUoKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNU
eXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCkKK3sKKyAgICBKU1ZhbHVlIHYg
PSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKHYu
aXNDZWxsKCkgPyB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRl
c0FzVW5kZWZpbmVkKCkgOiB2LmlzVW5kZWZpbmVkKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2lzX2Jvb2xlYW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaXNfbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfc3RyaW5nKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oaXNKU1N0cmlu
ZyhMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2lzX29iamVjdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNPYmplY3RU
eXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfZnVuY3Rpb24pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVu
Y3Rpb25UeXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfaW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93
UGF0aHM6Om9wSW4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSkKK3sK
KyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZSwgQ29tbW9uU2xvd1BhdGhzOjpv
cFJlc29sdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVy
YW5kKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKQorewor
ICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRCgKKyAgICAgICAgb3BfcmVzb2x2ZV9za2lwLAorICAg
ICAgICBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVNraXAoCisgICAgICAgICAgICBleGVjLAor
ICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5k
KSwKKyAgICAgICAgICAgIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitzdGF0aWMgSlNWYWx1ZSBy
ZXNvbHZlR2xvYmFsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJU
KGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNb
Ml0udS5vcGVyYW5kOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1
cmUuZ2V0KCk7CisgICAgCisgICAgQVNTRVJUX1VOVVNFRChzdHJ1Y3R1cmUsIHN0cnVjdHVyZSAh
PSBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVu
dCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNs
b3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0
eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xv
dC5nZXRWYWx1ZShleGVjLCBpZGVudCk7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFs
dWUoKSAmJiAhZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25h
cnkoKQorICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgewor
ICAgICAgICAgICAgcGNbM10udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMt
Pmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0
LT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAg
IAorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVVbmRlZmluZWRWYXJp
YWJsZUVycm9yKGV4ZWMsIGlkZW50KTsKKyAgICByZXR1cm4gSlNWYWx1ZSgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCit7CisgICAgTExJTlRfUkVUVVJO
X1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFsLCByZXNvbHZlR2xvYmFsKGV4ZWMsIHBjKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQorewor
ICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljLCByZXNv
bHZlR2xvYmFsKGV4ZWMsIHBjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNv
bHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQoreworICAgIExMSU5UX1JFVFVSTl9QUk9G
SUxFRChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljLCBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2
ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAgSWRl
bnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9w
ZXJhbmQpOworICAgIGlmIChwY1szXS51Lm9wZXJhbmQpIHsKKyAgICAgICAgSlNWYWx1ZSBiYXNl
ID0gSlNDOjpyZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCB0cnVl
KTsKKyAgICAgICAgaWYgKCFiYXNlKQorICAgICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJy
b3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAg
ICAgICAgTExJTlRfUkVUVVJOKGJhc2UpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk5f
UFJPRklMRUQob3BfcmVzb2x2ZV9iYXNlLCBKU0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBl
eGVjLT5zY29wZUNoYWluKCksIGZhbHNlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKQoreworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09i
amVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVj
dCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmll
cihwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhl
YywgaWRlbnQsIHNsb3QpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFs
aWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgIExMSU5UX0VO
RCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpCit7
CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhCYXNl
KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExM
SU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgy
KSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJvZmls
aW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4KKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0
aF90aGlzKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29s
dmVXaXRoVGhpcyhleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9w
ZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
TExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgLy8gRklYTUU6IHRlY2huaWNhbGx5IHNob3VsZCBo
YXZlIHByb2ZpbGluZywgYnV0IHdlIGRvbid0IGRvIGl0IGJlY2F1c2UgdGhlIERGRyB3b24ndCB1
c2UgaXQuCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9n
ZXRfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2so
KTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51
Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKKworICAgIEpTVmFsdWUgcmVz
dWx0ID0gYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tf
RVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1AoMSkgPSByZXN1bHQ7CisKKyAgICBpZiAoYmFzZVZh
bHVlLmlzQ2VsbCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKQorICAgICAgICAmJiBz
bG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlCisgICAgICAgICYmIHNsb3QuY2FjaGVkUHJvcGVy
dHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpWYWx1ZSkgeworICAgICAgICAKKyAgICAgICAgSlND
ZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAo
IXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0
cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgeworICAgICAg
ICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2Jh
bERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAg
ICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNW
YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcGNbT1BDT0RFX0xFTkdUSChvcF9n
ZXRfYnlfaWQpIC0gMV0udS5wcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUo
cmVzdWx0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2dldF9hcmd1bWVudHNfbGVuZ3RoKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50
aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09Q
KDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworICAgIExM
SU5UX1JFVFVSTihiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9j
ay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY29kZUJs
b2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAgICAg
YXNPYmplY3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgaWRlbnQs
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICBlbHNlCisgICAgICAgIGJhc2VW
YWx1ZS5wdXQoZXhlYywgaWRlbnQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2Vs
bCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKSkgeworICAgICAgICAKKyAgICAgICAg
SlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBp
ZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYg
IXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKQorICAgICAg
ICAgICAgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgc3RydWN0
dXJlLT5wcmV2aW91c0lEKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gc3RydWN0dXJl
LT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRo
aXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBvZiB0aGUgbWV0aG9kcyB3ZSBjYWxsCisgICAgICAg
ICAgICAgICAgICAgIC8vIGJlbG93IG1heSBHQy4KKyAgICAgICAgICAgICAgICAgICAgcGNbMF0u
dS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworCisg
ICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxs
KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmUtPnByZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICAgICAgICAgIHBj
WzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2Jh
bERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcmV2aW91
c0lEKCkpOworICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hl
ZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBwY1s2XS51
LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRh
KCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hh
aW4oZXhlYyk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFpbik7CisgICAgICAgICAg
ICAgICAgICAgIHBjWzddLnUuc3RydWN0dXJlQ2hhaW4uc2V0KAorICAgICAgICAgICAgICAgICAg
ICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBj
aGFpbik7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAocGNb
OF0udS5vcGVyYW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Qp
OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwY1sw
XS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X29wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0
KAorICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVy
YW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9
IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4
ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpKTsKKyAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNT
dHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAi
VW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihjb3VsZERlbGV0ZSkpOworfQorCitpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKK3sKKyAgICBpZiAo
TElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAg
ICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3du
UHJvcGVydHkoZXhlYywgYXNTdHJpbmcoc3Vic2NyaXB0KS0+dmFsdWUoZXhlYykpKQorICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgaWYgKHN1YnNjcmlwdC5pc1VJ
bnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAg
ICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5j
YW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc1N0cmluZyhiYXNlVmFsdWUpLT5n
ZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJh
c2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpCisg
ICAgICAgICAgICByZXR1cm4gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywg
aSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBpKTsKKyAg
ICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBw
cm9wZXJ0eSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKQorewor
ICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9nZXRfYnlfdmFsLCBnZXRCeVZhbChleGVjLCBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpCit7CisgICAgSlNW
YWx1ZSBhcmd1bWVudHMgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhcmd1bWVu
dHMpIHsKKyAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAg
IExMSU5UX09QKDIpID0gYXJndW1lbnRzOworICAgICAgICBleGVjLT51bmNoZWNrZWRSKHVubW9k
aWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAg
ICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIGFyZ3VtZW50cywgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dl
dF9ieV9wbmFtZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJTlRfT1Ao
MikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3B1dF9ieV92YWwpCit7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
ID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCk7CisgICAgCisgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKKyAgICAg
ICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU0Fy
cmF5KGJhc2VWYWx1ZSkpIHsKKyAgICAgICAgICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5
KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAoanNBcnJheS0+Y2FuU2V0SW5kZXgoaSkpCisg
ICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgoZ2xvYmFsRGF0YSwgaSwgdmFsdWUpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5kZXgoanNB
cnJheSwgZXhlYywgaSwgdmFsdWUpOworICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKQorICAgICAgICAgICAgJiYg
YXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAgICAgICAgICAg
IEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7CisgICAg
ICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJy
YXktPnNldEluZGV4KGksIHZhbHVlLmFzSW50MzIoKSk7CisgICAgICAgICAgICAgICAgTExJTlRf
RU5EKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkg
eworICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5hc051bWJl
cigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgTExJ
TlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vi
c2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZXhlYy0+Y29kZUJsb2NrKCktPmlz
U3RyaWN0TW9kZSgpKTsKKyAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIHByb3BlcnR5LCB2YWx1ZSwg
c2xvdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9k
ZWxfYnlfdmFsKQoreworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZXhl
Yyk7CisgICAgCisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KTsKKyAgICAKKyAgICBib29sIGNvdWxkRGVsZXRlOworICAgIAorICAgIHVpbnQzMl90IGk7Cisg
ICAgaWYgKHN1YnNjcmlwdC5nZXRVSW50MzIoaSkpCisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFz
ZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KGJhc2VPYmplY3Qs
IGV4ZWMsIGkpOworICAgIGVsc2UgeworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsK
KyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
ICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVy
dHkoYmFzZU9iamVjdCwgZXhlYywgcHJvcGVydHkpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNv
dWxkRGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAg
TExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3Bl
cnR5LiIpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpCit7CisgICAgTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCkucHV0KGV4ZWMsIHBjWzJdLnUub3BlcmFuZCwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHV0X2dldHRlcikKK3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgp
LmlzT2JqZWN0KCkpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1Ao
MSkuanNWYWx1ZSgpKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygp
LT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpz
VmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVH
ZXR0ZXIoYmFzZU9iaiwgZXhlYywgaWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUo
KSksIDApOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHV0X3NldHRlcikKK3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0
KCkpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1
ZSgpKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlm
aWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpzVmFsdWUoKS5p
c09iamVjdCgpKTsKKyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVTZXR0ZXIoYmFz
ZU9iaiwgZXhlYywgaWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUoKSksIDApOwor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam1wX3Njb3Bl
cykKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBTY29wZUNo
YWluTm9kZSogdG1wID0gZXhlYy0+c2NvcGVDaGFpbigpOworICAgIHdoaWxlIChjb3VudC0tKQor
ICAgICAgICB0bXAgPSB0bXAtPnBvcCgpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4odG1wKTsK
KyAgICBwYyArPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qdHJ1ZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfanRydWUs
IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pmYWxzZSwg
IUxMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qbGVzcykKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3MsIGpz
TGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcykKK3sKKyAg
ICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzLCAhanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0Mo
MSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfamdyZWF0ZXIpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVhdGVy
LCBqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVy
KQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmdyZWF0ZXIsICFqc0xlc3M8ZmFsc2U+KGV4ZWMs
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3NlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0go
b3Bfamxlc3NlcSwganNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qbmxlc3NlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzZXEsICFqc0xlc3NFcTx0
cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEpCit7CisgICAg
TExJTlRfQlJBTkNIKG9wX2pncmVhdGVyZXEsIGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9q
bmdyZWF0ZXJlcSwgIWpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3N3aXRjaF9pbW0pCit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoc2NydXRpbmVlLmlzRG91YmxlKCkpOworICAgIGRvdWJs
ZSB2YWx1ZSA9IHNjcnV0aW5lZS5hc0RvdWJsZSgpOworICAgIGludDMyX3QgaW50VmFsdWUgPSBz
dGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1sy
XS51Lm9wZXJhbmQ7CisgICAgaWYgKHZhbHVlID09IGludFZhbHVlKSB7CisgICAgICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVC
bG9jay0+aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9y
VmFsdWUoaW50VmFsdWUsIGRlZmF1bHRPZmZzZXQpOworICAgIH0gZWxzZQorICAgICAgICBwYyAr
PSBkZWZhdWx0T2Zmc2V0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfc3dpdGNoX3N0cmluZykKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5U
X09QX0MoMykuanNWYWx1ZSgpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVy
YW5kOworICAgIGlmICghc2NydXRpbmVlLmlzU3RyaW5nKCkpCisgICAgICAgIHBjICs9IGRlZmF1
bHRPZmZzZXQ7CisgICAgZWxzZSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVt
cFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoYXNTdHJpbmcoc2NydXRpbmVl
KS0+dmFsdWUoZXhlYykuaW1wbCgpLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYykKK3sKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2Rl
QmxvY2stPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlCisgICAgICAgICAgIHx8ICFjb2RlQmxv
Y2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKQorICAgICAgICAgICB8fCBleGVjLT51bmNoZWNrZWRS
KGNvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CisjaWYgTExJTlRf
SEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIkNyZWF0aW5nIGZ1bmN0aW9uIVxuIik7CisjZW5k
aWYKKyAgICBMTElOVF9SRVRVUk4oY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbMl0udS5vcGVy
YW5kKS0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25ld19mdW5jX2V4cCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBj
b2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTRnVuY3Rpb24q
IGZ1bmMgPSBmdW5jdGlvbi0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpOworICAgIAor
ICAgIGlmICghZnVuY3Rpb24tPm5hbWUoKS5pc051bGwoKSkgeworICAgICAgICBKU1N0YXRpY1Nj
b3BlT2JqZWN0KiBmdW5jdGlvblNjb3BlT2JqZWN0ID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3Jl
YXRlKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKCksIGZ1bmMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7
CisgICAgICAgIGZ1bmMtPnNldFNjb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuYy0+c2NvcGUo
KS0+cHVzaChmdW5jdGlvblNjb3BlT2JqZWN0KSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JF
VFVSTihmdW5jKTsKK30KKworc3RhdGljIEhlbHBlclJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwo
RXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgY2FsbGVlLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZXhl
Y0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAm
ZXhlYy0+Z2xvYmFsRGF0YSgpOworCisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVj
LT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKworICAg
IGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwor
ICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxlZSwgY2FsbERhdGEp
OworICAgIAorICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVKUyk7CisgICAgCisg
ICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUhvc3QpIHsKKyAgICAgICAgICAgIGdsb2Jh
bERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0
aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTExJ
TlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICAgICAgfQorICAgICAgICAKKyNpZiBMTElOVF9I
RUxQRVJfVFJBQ0lORworICAgICAgICBwcmludGYoIkNhbGwgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0
aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICAgICAgQVNT
RVJUKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSk7CisgICAgICAgIExMSU5UX0NBTExfVEhST1co
ZXhlYywgcGMsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgIH0K
KworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIAorICAgIENvbnN0
cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUg
PSBnZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0RGF0YSk7CisgICAgCisgICAgQVNT
RVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZUpTKTsKKyAgICAKKyAgICBpZiAoY29u
c3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlSG9zdCkgeworICAgICAgICBnbG9iYWxEYXRhLT5o
b3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZl
LmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0Nh
bGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
KTsKKyAgICB9CisgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAgICAgcHJpbnRm
KCJDb25zdHJ1Y3RvciBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUuZGVz
Y3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlID09IENvbnN0
cnVjdFR5cGVOb25lKTsKKyAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RB
Q29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKK30KKworaW5saW5lIEhlbHBlclJldHVy
blR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSwgTExJbnRD
YWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCit7CisgICAgSlNDZWxsKiBjYWxsZWVBc0Z1
bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSk7CisgICAgaWYgKCFjYWxs
ZWVBc0Z1bmN0aW9uQ2VsbCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxs
ZWUsIHBjLCBjYWxsZWVBc1ZhbHVlLCBraW5kKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBjYWxs
ZWUgPSBhc0Z1bmN0aW9uKGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBleGVjQ2FsbGVlLT5z
ZXRTY29wZUNoYWluKGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKSk7CisgICAgRXhlY3V0YWJsZUJh
c2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAgICAKKyAgICBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIgY29kZVB0cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7Cisg
ICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGNvZGVQdHIgPSBl
eGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7Cisg
ICAgZWxzZSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxl
ID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAgICAg
IEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVjQ2Fs
bGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAg
ICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCksIHBjLCBlcnJv
cik7CisgICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5
dGVjb2RlRm9yKGtpbmQpOworICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICAgICAgaWYg
KGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxz
aXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIGNvZGVQdHIg
PSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0Zvcihr
aW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIH0K
KyAgICAKKyAgICBpZiAoY2FsbExpbmtJbmZvKSB7CisgICAgICAgIGlmIChjYWxsTGlua0luZm8t
PmlzT25MaXN0KCkpCisgICAgICAgICAgICBjYWxsTGlua0luZm8tPnJlbW92ZSgpOworICAgICAg
ICBFeGVjU3RhdGUqIGV4ZWNDYWxsZXIgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAg
ICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBl
eGVjQ2FsbGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAg
ICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERh
dGEoKSwgZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUp
OworICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKKyAg
ICAgICAgaWYgKGNvZGVCbG9jaykKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5n
Q2FsbChjYWxsTGlua0luZm8pOworICAgIH0KKyAgICAKKyAgICBMTElOVF9DQUxMX1JFVFVSTihl
eGVjQ2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKK30KKworaW5saW5l
IEhlbHBlclJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlv
biogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICAvLyBUaGlzIG5lZWRz
IHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAvLyAtIEZpZ3VyZSBvdXQg
d2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIElmIHBv
c3NpYmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAgIC8vIC0gUmV0dXJuIGEg
dHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZy
YW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51
Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lz
dGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2Fs
bGVyRnJhbWUoZXhlYyk7CisgICAgCisgICAgQVNTRVJUKHBjWzRdLnUuY2FsbExpbmtJbmZvKTsK
KyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVl
LCBwY1s0XS51LmNhbGxMaW5rSW5mbyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
YWxsKQoreworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0KQoreworICAgIHJldHVybiBn
ZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0cnVjdCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAg
ICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUgd2hpbGUgcmVzcGVjdGluZyB0aGUgdmFyaWFibGUg
YXJndW1lbnRzLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUg
aXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2Rl
IGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFs
dWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4
ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAorICAgICAgICBleGVjLCAmZXhlYy0+
Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwKKyAgICAgICAgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBwY1s0XS51Lm9wZXJh
bmQpOworICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKTsKKyAgICAKKyAg
ICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFz
VmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlYy0+
dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0d2lzZV9j
YXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpKTsKKyAgICAK
KyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVl
QXNWYWx1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpCit7Cisg
ICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIAor
ICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAg
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAg
IGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFu
ZCk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlY0NhbGxl
ZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAg
IGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVj
Q2FsbGVlLT5zZXRSZXR1cm5QQyhiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbGxpbnRfZ2Vu
ZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7Cisg
ICAgZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0g
Yml0d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX2V2YWwpKTsK
KyAgICAKKyAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNF
dmFsKSkKKyAgICAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNh
bGwsIGNhbGxlZUFzVmFsdWUpOworICAgIAorICAgIGdsb2JhbERhdGEuaG9zdENhbGxSZXR1cm5W
YWx1ZSA9IGV2YWwoZXhlY0NhbGxlZSk7CisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxl
ZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCit7Cisg
ICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAg
IEpTVmFsdWUgYWN0aXZhdGlvblZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIGlm
ICghYWN0aXZhdGlvblZhbHVlKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNo
ZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1Zh
bHVlKCkpIHsKKyAgICAgICAgICAgIGlmICghZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9k
ZSgpKQorICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT50ZWFyT2ZmKGV4ZWMpOworICAg
ICAgICB9CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICBKU0FjdGl2YXRpb24qIGFj
dGl2YXRpb24gPSBhc0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVlKTsKKyAgICBhY3RpdmF0aW9u
LT50ZWFyT2ZmKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMt
PnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkp
LmpzVmFsdWUoKSkKKyAgICAgICAgYXNBcmd1bWVudHModiktPmRpZFRlYXJPZmZBY3RpdmF0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgYWN0aXZhdGlvbik7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCit7CisgICAgQVNT
RVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkgJiYgIWV4ZWMtPmNvZGVCbG9j
aygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIGFzQXJndW1lbnRzKGV4ZWMtPnVuY2hl
Y2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpLmpzVmFs
dWUoKSktPnRlYXJPZmYoZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9zdHJjYXQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMs
ICZMTElOVF9PUCgyKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl90b19wcmltaXRpdmUpCit7CisgICAgTExJTlRfUkVUVVJOKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2dldF9wbmFtZXMpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgp
OworICAgIGlmICh2LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcGMgKz0gcGNbNV0u
dS5vcGVyYW5kOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSlNPYmpl
Y3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gby0+
c3RydWN0dXJlKCk7CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJ
dGVyYXRvciA9IHN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpOworICAgIGlmICghanNQcm9w
ZXJ0eU5hbWVJdGVyYXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQcm90b3R5
cGVDaGFpbigpICE9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCisgICAgICAgIGpz
UHJvcGVydHlOYW1lSXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhl
Yywgbyk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBKU1ZhbHVlKGpzUHJvcGVydHlOYW1lSXRl
cmF0b3IpOworICAgIExMSU5UX09QKDIpID0gSlNWYWx1ZShvKTsKKyAgICBMTElOVF9PUCgzKSA9
IFJlZ2lzdGVyOjp3aXRoSW50KDApOworICAgIExMSU5UX09QKDQpID0gUmVnaXN0ZXI6OndpdGhJ
bnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAgICAKKyAgICBwYyArPSBPUENP
REVfTEVOR1RIKG9wX2dldF9wbmFtZXMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSkKK3sKKyAgICBKU09iamVjdCogYmFzZSA9IGFz
T2JqZWN0KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CisgICAgSlNTdHJpbmcqIHByb3BlcnR5ID0g
YXNTdHJpbmcoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBpZiAoYmFzZS0+aGFzUHJvcGVy
dHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eS0+dmFsdWUoZXhlYykpKSkgeworICAg
ICAgICAvLyBHbyB0byB0YXJnZXQuCisgICAgICAgIHBjICs9IHBjWzZdLnUub3BlcmFuZDsKKyAg
ICB9IC8vIEVsc2UsIGRvbid0IGNoYW5nZSB0aGUgUEMsIHNvIHRoZSBpbnRlcnByZXRlciB3aWxs
IHJlbG9vcC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3B1c2hfc2NvcGUpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOwor
ICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKKyAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9IG87CisgICAgZXhlYy0+c2V0U2NvcGVD
aGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2gobykpOworICAgIAorICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9wX3Njb3BlKQoreworICAgIGV4ZWMt
PnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wb3AoKSk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSkKK3sKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0
KiBzY29wZSA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBjb2RlQmxvY2stPmlk
ZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpLCBEb250RGVs
ZXRlKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChz
Y29wZSkpOworICAgIExMSU5UX1JFVFVSTihzY29wZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl90aHJvdykKK3sKKyAgICBMTElOVF9USFJPVyhMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3Ip
Cit7CisgICAgTExJTlRfVEhST1coY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgTExJTlRfT1Bf
QygxKS5qc1ZhbHVlKCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1ZykKK3sKKyAgICBpbnQgZGVidWdIb29rSUQgPSBwY1sx
XS51Lm9wZXJhbmQ7CisgICAgaW50IGZpcnN0TGluZSA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBp
bnQgbGFzdExpbmUgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLmludGVycHJldGVyLT5kZWJ1ZyhleGVjLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVi
dWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQoreworICAg
ICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSgpKS0+d2lsbEV4ZWN1dGUoZXhl
YywgTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCit7CisgICAgKCpQcm9maWxlcjo6
ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT5kaWRFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEp
LmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpMTEludAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVy
cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVs
cGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50SGVscGVyc19oCisjZGVm
aW5lIExMSW50SGVscGVyc19oCisKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisK
K25hbWVzcGFjZSBMTEludCB7CisKK3R5cGVkZWYgaW50NjRfdCBIZWxwZXJSZXR1cm5UeXBlOwor
CitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3Rh
dGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKK2V4dGVybiAi
QyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUqLCBJbnN0cnVj
dGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKKworI2RlZmluZSBMTElOVF9IRUxQ
RVJfREVDTChuYW1lKSBcCisgICAgZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50XyMj
bmFtZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKKworTExJTlRfSEVMUEVSX0RF
Q0wodHJhY2VfcHJvbG9ndWUpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVu
Y3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zv
cl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVj
dCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZSk7CitMTElOVF9IRUxQRVJfREVDTChzcGVjaWFs
X3RyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcik7CitMTElOVF9IRUxQRVJfREVD
TChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlf
b3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlf
b3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVD
TChsb29wX29zcik7CitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxf
YXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hl
Y2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jcmVhdGVfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29udmVydF90
aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfb2JqZWN0KTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19h
cnJheV9idWZmZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdleHApOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3RlcSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVz
c2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9kZWMpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Bvc3RfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25lZ2F0ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9tdWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1Yik7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9t
b2QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2JpdG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2JpdG5vdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFz
X2luc3RhbmNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9mKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lz
X3VuZGVmaW5lZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9pc19zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX29iamVjdCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2luKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jl
c29sdmVfZ2xvYmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbF9k
eW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Zvcl9yZXNvbHZlX2ds
b2JhbF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9kZWxfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV92YWwp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHV0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wdXRfZ2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfc2V0dGVy
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9qdHJ1ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZhbHNlKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
am5sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfam5ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVz
c2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfamdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVh
dGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9pbW0pOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3N3aXRjaF9jaGFyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9z
d2l0Y2hfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmNfZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY2FsbF9ldmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0
aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNhdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
dG9fcHJpbWl0aXZlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXh0X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wdXNoX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl90aHJvdyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJl
bmNlX2Vycm9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1Zyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Byb2ZpbGVfZGlkX2NhbGwpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwor
I2VuZGlmIC8vIExMSW50SGVscGVyc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludE9mZmxpbmVBc21Db25maWdfaAorI2RlZmluZSBM
TEludE9mZmxpbmVBc21Db25maWdfaAorCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNs
dWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYg
Q1BVKFg4NikKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX1g4NiAwCisjZW5kaWYKKworI2lmIENQVShBUk12NykKKyNkZWZpbmUgT0ZGTElORV9B
U01fQVJNdjcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMAorI2VuZGlmCisK
KyNpZiAhQVNTRVJUX0RJU0FCTEVECisjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVE
IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDAKKyNlbmRpZgor
CisjaWYgQ1BVKEJJR19FTkRJQU4pCisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMQor
I2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAwCisjZW5kaWYKKworI2lmIEVO
QUJMRShMTElOVF9PU1JfVE9fSklUKQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAx
CisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lm
IExMSU5UX0VYRUNVVElPTl9UUkFDSU5HCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9U
UkFDSU5HIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDAK
KyNlbmRpZgorCisjZW5kaWYgLy8gTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaW5jbHVkZSAiQWxsb2NhdGlvblNwYWNlLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNBcnJheS5o
IgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRl
ICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUg
IkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlN0eXBlSW5mby5oIgorI2luY2x1ZGUgIkpTVmFy
aWFibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludE9m
ZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJl
Z2lzdGVyRmlsZS5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1
cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmls
ZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKKyNkZWZpbmUgT0ZGTElORV9BU01fT0ZGU0VUT0YoY2xhenosIGZpZWxkKSBPQkpFQ1RfT0ZG
U0VUT0YoY2xhenosIGZpZWxkKQorCitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3IgeworcHVi
bGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCogZHVtbXkoKTsKK307CisKK2NvbnN0IHVu
c2lnbmVkKiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkKK3sKKyNpbmNsdWRlICJMTElu
dERlc2lyZWRPZmZzZXRzLmgiCisgICAgcmV0dXJuIGV4dHJhY3RvclRhYmxlOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworaW50IG1haW4oaW50LCBjaGFyKiopCit7CisgICAgLy8gT3V0IG9m
IGFuIGFidW5kYW5jZSBvZiBjYXV0aW9uLCBtYWtlIHN1cmUgdGhhdCBMTEludE9mZnNldHNFeHRy
YWN0b3I6OmR1bW15KCkgaXMgbGl2ZSwKKyAgICAvLyBhbmQgdGhlIGV4dHJhY3RvclRhYmxlIGlz
IGxpdmUsIHRvby4KKyAgICBwcmludGYoIiVwXG4iLCBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rv
cjo6ZHVtbXkoKSk7CisgICAgcmV0dXJuIDA7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludFRodW5rcy5oIgorCisjaW5jbHVkZSAiSlNJ
bnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiTG93TGV2
ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwor
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIHZvaWQgKCp0YXJnZXQpKCkpCit7CisgICAgSlNJbnRlcmZh
Y2VKSVQgaml0OworICAgIAorICAgIC8vIEZJWE1FOiB0aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVy
IHdheSB0byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20gbm90IHN1cmUgSSBjYXJlLgorICAgIGppdC5t
b3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFy
Z2V0KSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VK
SVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRh
LCAmaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6
ZUNvZGUoKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5
VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0
cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAg
IHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1
bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEs
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhK
dW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVj
ayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRo
SnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2V2YWxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRh
LCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxM
SW50CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludFRodW5rc19oCisjZGVmaW5lIExMSW50
VGh1bmtzX2gKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRhOworCituYW1lc3BhY2UgTExJbnQgeworCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihK
U0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVj
dEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSop
OworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1Ro
dW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxF
bnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50VGh1bmtzX2gKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20J
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjM3NCBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
IyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjIENyYXNoIGNvdXJzZSBvbiB0aGUg
bGFuZ3VhZ2UgdGhhdCB0aGlzIGlzIHdyaXR0ZW4gaW4gKHdoaWNoIEkganVzdCBjYWxsCisjICJh
c3NlbWJseSIgZXZlbiB0aG91Z2ggaXQncyBtb3JlIHRoYW4gdGhhdCk6CisjCisjIC0gTW9zdGx5
IGdhcy1zdHlsZSBvcGVyYW5kIG9yZGVyaW5nLiBUaGUgbGFzdCBvcGVyYW5kIHRlbmRzIHRvIGJl
IHRoZQorIyAgIGRlc3RpbmF0aW9uLiBTbyAiYSA6PSBiIiBpcyB3cml0dGVuIGFzICJtb3YgYiwg
YSIuIEJ1dCB1bmxpa2UgZ2FzLAorIyAgIGNvbXBhcmlzb25zIGFyZSBpbi1vcmRlciwgc28gImlm
IChhIDwgYikiIGlzIHdyaXR0ZW4gYXMKKyMgICAiYmlsdCBhLCBiLCAuLi4iLgorIworIyAtICJi
IiA9IGJ5dGUsICJoIiA9IDE2LWJpdCB3b3JkLCAiaSIgPSAzMi1iaXQgd29yZCwgInAiID0gcG9p
bnRlci4KKyMgICBDdXJyZW50bHkgdGhpcyBpcyBqdXN0IDMyLWJpdCBzbyAiaSIgYW5kICJwIiBh
cmUgaW50ZXJjaGFuZ2VhYmxlCisjICAgZXhjZXB0IHdoZW4gYW4gb3Agc3VwcG9ydHMgb25lIGJ1
dCBub3QgdGhlIG90aGVyLgorIworIyAtIEluIGdlbmVyYWwsIHZhbGlkIG9wZXJhbmRzIGZvciBt
YWNybyBpbnZvY2F0aW9ucyBhbmQgaW5zdHJ1Y3Rpb25zIGFyZQorIyAgIHJlZ2lzdGVycyAoZWcg
InQwIiksIGFkZHJlc3NlcyAoZWcgIjRbdDBdIiksIGJhc2UtaW5kZXggYWRkcmVzc2VzCisjICAg
KGVnICI3W3QwLCB0MSwgMl0iKSwgYWJzb2x1dGUgYWRkcmVzc2VzIChlZyAiMHhhMDAwMDAwMFtd
IiksIG9yIGxhYmVscworIyAgIChlZyAiX2ZvbyIgb3IgIi5mb28iKS4gTWFjcm8gaW52b2NhdGlv
bnMgY2FuIGFsc28gdGFrZSBhbm9ueW1vdXMKKyMgICBtYWNyb3MgYXMgb3BlcmFuZHMuIEluc3Ry
dWN0aW9ucyBjYW5ub3QgdGFrZSBhbm9ueW1vdXMgbWFjcm9zLgorIworIyAtIExhYmVscyBtdXN0
IGhhdmUgbmFtZXMgdGhhdCBiZWdpbiB3aXRoIGVpdGhlciAiXyIgb3IgIi4iLiAgQSAiLiIgbGFi
ZWwKKyMgICBpcyBsb2NhbCBhbmQgZ2V0cyByZW5hbWVkIGJlZm9yZSBjb2RlIGdlbiB0byBtaW5p
bWl6ZSBuYW1lc3BhY2UKKyMgICBwb2xsdXRpb24uIEEgIl8iIGxhYmVsIGlzIGFuIGV4dGVybiBz
eW1ib2wgKGkuZS4gIi5nbG9ibCIpLiBUaGUgIl8iCisjICAgbWF5IG9yIG1heSBub3QgYmUgcmVt
b3ZlZCBkdXJpbmcgY29kZSBnZW4gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGFzbQorIyAgIGNv
bnZlbnRpb25zIGZvciBDIG5hbWUgbWFuZ2xpbmcgb24gdGhlIHRhcmdldCBwbGF0Zm9ybSBtYW5k
YXRlIGEgIl8iCisjICAgcHJlZml4LgorIworIyAtIEEgIm1hY3JvIiBpcyBhIGxhbWJkYSBleHBy
ZXNzaW9uLCB3aGljaCBtYXkgYmUgZWl0aGVyIGFub255bW91cyBvcgorIyAgIG5hbWVkLiBCdXQg
dGhpcyBoYXMgY2F2ZWF0cy4gIm1hY3JvIiBjYW4gdGFrZSB6ZXJvIG9yIG1vcmUgYXJndW1lbnRz
LAorIyAgIHdoaWNoIG1heSBiZSBtYWNyb3Mgb3IgYW55IHZhbGlkIG9wZXJhbmRzLCBidXQgaXQg
Y2FuIG9ubHkgcmV0dXJuCisjICAgY29kZS4gQnV0IHlvdSBjYW4gZG8gVHVyaW5nLWNvbXBsZXRl
IHRoaW5ncyB2aWEgY29udGludWF0aW9uIHBhc3NpbmcKKyMgICBzdHlsZTogIm1hY3JvIGZvbyAo
YSwgYikgYihhKSBlbmQgZm9vKGZvbywgZm9vKSIuIEFjdHVhbGx5LCBkb24ndCBkbworIyAgIHRo
YXQsIHNpbmNlIHlvdSdsbCBqdXN0IGNyYXNoIHRoZSBhc3NlbWJsZXIuCisjCisjIC0gQW4gImlm
IiBpcyBhIGNvbmRpdGlvbmFsIG9uIHNldHRpbmdzLiBBbnkgaWRlbnRpZmllciBzdXBwbGllZCBp
biB0aGUKKyMgICBwcmVkaWNhdGUgb2YgYW4gImlmIiBpcyBhc3N1bWVkIHRvIGJlIGEgI2RlZmlu
ZSB0aGF0IGlzIGF2YWlsYWJsZQorIyAgIGR1cmluZyBjb2RlIGdlbi4gU28geW91IGNhbid0IHVz
ZSAiaWYiIGZvciBjb21wdXRhdGlvbiBpbiBhIG1hY3JvLCBidXQKKyMgICB5b3UgY2FuIHVzZSBp
dCB0byBzZWxlY3QgZGlmZmVyZW50IHBpZWNlcyBvZiBjb2RlIGZvciBkaWZmZXJlbnQKKyMgICBw
bGF0Zm9ybXMuCisjCisjIC0gQXJndW1lbnRzIHRvIG1hY3JvcyBmb2xsb3cgbGV4aWNhbCBzY29w
aW5nIHJhdGhlciB0aGFuIGR5bmFtaWMgc2NvcGluZy4KKyMgICBDb25zdCdzIGFsc28gZm9sbG93
IGxleGljYWwgc2NvcGluZyBhbmQgbWF5IG92ZXJyaWRlIChoaWRlKSBhcmd1bWVudHMKKyMgICBv
ciBvdGhlciBjb25zdHMuIEFsbCB2YXJpYWJsZXMgKGFyZ3VtZW50cyBhbmQgY29uc3RhbnRzKSBj
YW4gYmUgYm91bmQKKyMgICB0byBvcGVyYW5kcy4gQWRkaXRpb25hbGx5LCBhcmd1bWVudHMgKGJ1
dCBub3QgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBtYWNyb3MuCisKKworIyBUaGVz
ZSBkZWNsYXJhdGlvbnMgbXVzdCBtYXRjaCBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaC4KK2Nv
bnN0IENhbGxGcmFtZUhlYWRlclNpemUgPSA0OAorY29uc3QgQXJndW1lbnRDb3VudCA9IC00OAor
Y29uc3QgQ2FsbGVyRnJhbWUgPSAtNDAKK2NvbnN0IENhbGxlZSA9IC0zMgorY29uc3QgU2NvcGVD
aGFpbiA9IC0yNAorY29uc3QgUmV0dXJuUEMgPSAtMTYKK2NvbnN0IENvZGVCbG9jayA9IC04CisK
K2NvbnN0IFRoaXNBcmd1bWVudE9mZnNldCA9IC1DYWxsRnJhbWVIZWFkZXJTaXplIC0gOAorCisj
IERlY2xhcmUgc29tZSBhbGlhc2VzIGZvciB0aGUgcmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29u
c3QgUEMgPSB0NAorCisjIE9mZnNldHMgbmVlZGVkIGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUg
cmVwcmVzZW50YXRpb24uCitpZiBCSUdfRU5ESUFOCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAor
ICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSA0CitlbHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0g
NAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSAwCitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRh
dGlvbiBjb25zdGFudHMuCitjb25zdCBJbnQzMlRhZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0g
LTIKK2NvbnN0IE51bGxUYWcgPSAtMworY29uc3QgVW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENl
bGxUYWcgPSAtNQorY29uc3QgRW1wdHlWYWx1ZVRhZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVU
YWcgPSAtNworY29uc3QgTG93ZXN0VGFnID0gRGVsZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25z
dGFudHMuCitjb25zdCBTdHJpbmdUeXBlID0gNQorY29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMg
VHlwZSBmbGFncyBjb25zdGFudHMuCitjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQor
Y29uc3QgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRI
YXNJbnN0YW5jZSA9IDgKKworIyBIZWFwIGFsbG9jYXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNG
aW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0gMworCisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3Rh
bnRzLgorY29uc3QgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMg
Q29kZSB0eXBlIGNvbnN0YW50cy4KK2NvbnN0IEdsb2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29k
ZSA9IDEKK2NvbnN0IEZ1bmN0aW9uQ29kZSA9IDIKKworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxz
IHRoZSB0YWcgd29yZCBvZiB0aGUgYXJndW1lbnQgY291bnQuCitjb25zdCBMTEludFJldHVyblBD
ID0gQXJndW1lbnRDb3VudCArIFRhZ09mZnNldAorCisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVj
dG9yLmguCitjb25zdCBWZWN0b3JTaXplT2Zmc2V0ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zm
c2V0ID0gNAorCisjIFN0cmluZyBmbGFncy4KK2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2
NAorCisjIFV0aWxpdGllcworbWFjcm8gY3Jhc2goKQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVm
W10KKyAgICBtb3ZlIDAsIHQwCisgICAgY2FsbCB0MAorZW5kCisKK21hY3JvIGFzc2VydChhc3Nl
cnRpb24pCisgICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgYXNzZXJ0aW9uKC5vaykKKyAg
ICAgICAgY3Jhc2goKQorICAgIC5vazoKKyAgICBlbmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJl
dHVybkFkZHJlc3NBZnRlckNhbGwoZGVzdGluYXRpb25SZWdpc3RlcikKKyAgICBpZiBBUk12Nwor
ICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzaWYgWDg2CisgICAg
ICAgIHBvcCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAg
IGVuZAorZW5kCisKK21hY3JvIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJj
ZVJlZ2lzdGVyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxy
CisgICAgZWxzaWYgWDg2CisgICAgICAgIHB1c2ggc291cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisg
ICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKworbWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAg
ICBhZGRwIGFkdmFuY2UgKiA0LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0
Y2hCcmFuY2hXaXRoT2Zmc2V0KHBjT2Zmc2V0KQorICAgIGxzaGlmdGkgMiwgcGNPZmZzZXQKKyAg
ICBhZGRwIHBjT2Zmc2V0LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hC
cmFuY2gocGNPZmZzZXQpCisgICAgbG9hZGkgcGNPZmZzZXQsIHQwCisgICAgZGlzcGF0Y2hCcmFu
Y2hXaXRoT2Zmc2V0KHQwKQorZW5kCisKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICBs
b2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgam1wIFtQQ10KK2Vu
ZAorCittYWNybyBjQ2FsbDIoZnVuY3Rpb24sIGFyZzEsIGFyZzIpCisgICAgaWYgQVJNdjcKKyAg
ICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgZWxzaWYgWDg2
CisgICAgICAgIHBva2UgYXJnMSwgMAorICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICBlbHNlCisg
ICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5kCisKKyMgVGhpcyBi
YXJlbHkgd29ya3MuIGFyZzMgYW5kIGFyZzQgc2hvdWxkIHByb2JhYmx5IGJlIGltbWVkaWF0ZXMu
CittYWNybyBjQ2FsbDQoZnVuY3Rpb24sIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpCisgICAgaWYg
QVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAg
ICAgIG1vdmUgYXJnMywgdDIKKyAgICAgICAgbW92ZSBhcmc0LCB0MworICAgIGVsc2lmIFg4Ngor
ICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisgICAgICAgIHBva2Ug
YXJnMywgMgorICAgICAgICBwb2tlIGFyZzQsIDMKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisg
ICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5kCisKK21hY3JvIGNhbGxIZWxwZXIoaGVscGVy
KQorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3Zl
IHQxLCBjZnIKK2VuZAorCisjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBw
cmludCBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uCittYWNybyB0cmFjZU9w
ZXJhbmQoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2Vfb3BlcmFu
ZCwgY2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92
ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8g
cHJpbnQgdGhlIHZhbHVlIG9mIGFuIG9wZXJhbmQgaW4gdGhlIGluc3RydWN0aW9uCisjIHN0cmVh
bS4KK21hY3JvIHRyYWNlVmFsdWUoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxp
bnRfdHJhY2VfdmFsdWUsIGNmciwgUEMsIGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQw
LCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKK21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkK
KyAgICBlbmQKK2VuZAorCisjIENhbGwgYSBoZWxwZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3Jv
IGNhbGxDYWxsSGVscGVyKGFkdmFuY2UsIGhlbHBlciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5j
ZSAqIDQsIFBDLCB0MAorICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtj
ZnJdCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBh
Y3Rpb24odDApCitlbmQKKworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikK
KyAgICBjYWxsQ2FsbEhlbHBlcigKKyAgICAgICAgYWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAor
ICAgICAgICBtYWNybyAoY2FsbGVlKQorICAgICAgICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAg
ICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNr
U3dpdGNoVG9KSVQoaW5jcmVtZW50LCBhY3Rpb24pCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENv
ZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3QwXSwgLmNvbnRpbnVlCisgICAgICAgIGFj
dGlvbigpCisgICAgLmNvbnRpbnVlOgorICAgIGVuZAorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNo
VG9KSVRGb3JMb29wKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxLAorICAgICAg
ICBtYWNybyAoKQorICAgICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zm
c2V0W2Nmcl0KKyAgICAgICAgICAgIGNDYWxsMihfbGxpbnRfbG9vcF9vc3IsIGNmciwgUEMpCisg
ICAgICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisg
ICAgICAgICAgICBqbXAgdDAKKyAgICAgICAgLnJlY292ZXI6CisgICAgICAgICAgICBsb2FkaSBB
cmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgICAgIGVuZCkKK2VuZAorCitt
YWNybyBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQo
CisgICAgICAgIDEwLAorICAgICAgICBtYWNybyAoKQorICAgICAgICAgICAgY2FsbEhlbHBlcihf
bGxpbnRfcmVwbGFjZSkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGFzc2VydE5vdENvbnN0
YW50KGluZGV4KQorICAgIGFzc2VydChtYWNybyAob2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4LCBvayBlbmQpCitlbmQKKworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9h
ZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgor
bWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJp
Z3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxv
YWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2Nv
bnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisg
ICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBh
IHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8
PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgp
IDw8IDMuCisgICAgbG9hZHAgVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAg
bG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgor
ZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQgbWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLiBJbmRl
eCBtYXkgYmUgY2xvYmJlcmVkLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5k
ZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRh
ZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBq
bXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFnCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0
W3RhZ10sIHRhZworICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5k
ZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAj
IHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxzaGlmdGkgMywgaW5kZXgKKyAgICBhZGRwIGluZGV4
LCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQKKyAgICBsb2FkcCBU
YWdPZmZzZXRbdGFnXSwgdGFnCisuZG9uZToKK2VuZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxvYWQpCisgICAgYmln
dGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgdGFn
Q2hlY2soVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25z
dGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAg
ICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2
YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwg
MyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8
PCAzLgorICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0pCisgICAgbG9h
ZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5k
CisKKyMgSW5kZXggYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRl
eCBpcyBub3QgbXV0YXRlZC4gVXNlCisjIHRoaXMgaWYgeW91IGtub3cgd2hhdCB0aGUgdGFnIG9m
IHRoZSB2YXJpYWJsZSBzaG91bGQgYmUuIERvaW5nIHRoZSB0YWcKKyMgdGVzdCBhcyBwYXJ0IG9m
IGxvYWRpbmcgdGhlIHZhcmlhYmxlIHJlZHVjZXMgcmVnaXN0ZXIgdXNlLCBidXQgbWF5IG5vdAor
IyBiZSBmYXN0ZXIgdGhhbiBkb2luZyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlIGZvbGxvd2VkIGJ5
IGEgYnJhbmNoIG9uIHRoZQorIyB0YWcuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCisgICAgICAgIGluZGV4LAorICAgICAgICBtYWNy
byAoYWN0dWFsVGFnKSBiaW5lcSBhY3R1YWxUYWcsIGV4cGVjdGVkVGFnLCBzbG93IGVuZCwKKyAg
ICAgICAgcGF5bG9hZCkKK2VuZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZFVuY2hlY2tlZChpbmRleCwgcGF5bG9hZCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZFRhZ0N1c3RvbSgKKyAgICAgICAgaW5kZXgsCisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcp
IGVuZCwKKyAgICAgICAgcGF5bG9hZCkKK2VuZAorCittYWNybyB3cml0ZUJhcnJpZXIodGFnLCBw
YXlsb2FkKQorICAgICMgTm90aGluZyB0byBkbywgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGdlbmVy
YXRpb25hbCBvciBpbmNyZW1lbnRhbCBjb2xsZWN0b3IuCitlbmQKKworbWFjcm8gdmFsdWVQcm9m
aWxlKHRhZywgcGF5bG9hZCwgcHJvZmlsZSkKKyAgICBzdG9yZWkgdGFnLCBWYWx1ZVByb2ZpbGU6
Om1fYnVja2V0cyArIFRhZ09mZnNldFtwcm9maWxlXQorICAgIHN0b3JlaSBwYXlsb2FkLCBWYWx1
ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbcHJvZmlsZV0KK2VuZAorCisKKyMg
SW5kaWNhdGUgdGhlIGJlZ2lubmluZyBvZiBMTEludC4KK19sbGludF9iZWdpbjoKKyAgICBjcmFz
aCgpCisKKworIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlcgorCittYWNybyBmdW5j
dGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ2Fs
bGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRh
YmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBGdW5jdGlvbkV4
ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lz
dGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIodGFy
Z2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCisgICAg
bG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVn
aXN0ZXIKKyAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBub3RGdW5j
dGlvbkNvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkNvZGVCbG9ja1NldHRl
cihzb3VyY2VSZWdpc3RlcikKKyAgICBzdG9yZXAgc291cmNlUmVnaXN0ZXIsIENvZGVCbG9ja1tj
ZnJdCitlbmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0
ZXIpCisgICAgIyBOb3RoaW5nIHRvIGRvIQorZW5kCisKKyMgRG8gdGhlIGJhcmUgbWluaW11bSBy
ZXF1aXJlZCB0byBleGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBsZWF2ZSB0aGUgQ29kZUJs
b2NrKgorIyBpbiB0MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1IuCittYWNy
byBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NySGVscGVyLCB0
cmFjZUhlbHBlcikKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpCisgICAg
CisgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1Iu
CisgICAgc3RvcmVwIHQyLCBSZXR1cm5QQ1tjZnJdCisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcK
KyAgICAgICAgY2FsbEhlbHBlcih0cmFjZUhlbHBlcikKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tH
ZXR0ZXIodDEpCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgYmFkZGlzIDUsIENvZGVCbG9j
azo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3QxXSwgLmNvbnRpbnVlCisgICAgICAgIGNDYWxsMihv
c3JIZWxwZXIsIGNmciwgUEMpCisgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAgICBidHB6IHQw
LCAucmVjb3ZlcgorICAgICAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgICAgICByZXN0
b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICAgICAgam1wIHQwCisgICAgLnJl
Y292ZXI6CisgICAgICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICAuY29udGludWU6CisgICAg
ZW5kCisgICAgY29kZUJsb2NrU2V0dGVyKHQxKQorICAgIAorICAgICMgU2V0IHVwIHRoZSBQQy4K
KyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbdDBdLCBQQworZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hp
Y2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCisjIE11c3QgY2FsbCBkaXNwYXRj
aCgwKSBhZnRlciBjYWxsaW5nIHRoaXMuCittYWNybyBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHBy
b2ZpbGVBcmdTa2lwKQorICAgICMgUHJvZmlsZSB0aGUgYXJndW1lbnRzLiBVbmZvcnR1bmF0ZWx5
LCB3ZSBoYXZlIG5vIGNob2ljZSBidXQgdG8gZG8gdGhpcy4gVGhpcworICAgICMgY29kZSBpcyBw
cmV0dHkgaG9ycmVuZG91cyBiZWNhdXNlIG9mIHRoZSBkaWZmZXJlbmNlIGluIG9yZGVyaW5nIGJl
dHdlZW4KKyAgICAjIGFyZ3VtZW50cyBhbmQgdmFsdWUgcHJvZmlsZXMsIHRoZSBkZXNpcmUgdG8g
aGF2ZSBhIHNpbXBsZSBsb29wLWRvd24tdG8temVybworICAgICMgbG9vcCwgYW5kIHRoZSBkZXNp
cmUgdG8gdXNlIG9ubHkgdGhyZWUgcmVnaXN0ZXJzIHNvIGFzIHRvIHByZXNlcnZlIHRoZSBQQyBh
bmQKKyAgICAjIHRoZSBjb2RlIGJsb2NrLiBJdCBpcyBsaWtlbHkgdGhhdCB0aGlzIGNvZGUgc2hv
dWxkIGJlIHJld3JpdHRlbiBpbiBhIG1vcmUKKyAgICAjIG9wdGltYWwgd2F5IGZvciBhcmNoaXRl
Y3R1cmVzIHRoYXQgaGF2ZSBtb3JlIHRoYW4gZml2ZSByZWdpc3RlcnMgYXZhaWxhYmxlCisgICAg
IyBmb3IgYXJiaXRyYXJ5IHVzZSBpbiB0aGUgaW50ZXJwcmV0ZXIuCisgICAgbG9hZGkgQ29kZUJs
b2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCB0MAorICAgIGFkZGkgLXByb2ZpbGVBcmdTa2lwLCB0
MCAjIFVzZSBhZGRpIGJlY2F1c2UgdGhhdCdzIHdoYXQgaGFzIHRoZSBwZWVwaG9sZQorICAgIGFz
c2VydChtYWNybyAob2spIGJpZ3RlcSB0MCwgMCwgb2sgZW5kKQorICAgIGJ0aXogdDAsIC5hcmd1
bWVudFByb2ZpbGVEb25lCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9m
aWxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MV0sIHQzCisgICAgbXVsaSBzaXplb2YgVmFsdWVQ
cm9maWxlLCB0MCwgdDIgIyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVkdWN0aW9uIQorICAg
IG5lZ2kgdDAKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MiwgdDMKKy5hcmd1bWVudFBy
b2ZpbGVMb29wOgorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNldCArIDgg
LSBwcm9maWxlQXJnU2tpcCAqIDhbY2ZyLCB0MF0sIHQyCisgICAgc3VicCBzaXplb2YgVmFsdWVQ
cm9maWxlLCB0MworICAgIHN0b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBzaXplb2YgVmFsdWVQ
cm9maWxlICsgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbdDNdCisgICAgbG9h
ZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldCArIDggLSBwcm9maWxlQXJnU2tp
cCAqIDhbY2ZyLCB0MF0sIHQyCisgICAgc3RvcmVpIHQyLCBwcm9maWxlQXJnU2tpcCAqIHNpemVv
ZiBWYWx1ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRb
dDNdCisgICAgYmFkZGlueiA4LCB0MCwgLmFyZ3VtZW50UHJvZmlsZUxvb3AKKy5hcmd1bWVudFBy
b2ZpbGVEb25lOgorICAgIAorICAgICMgQ2hlY2sgc3RhY2sgaGVpZ2h0LgorICAgIGxvYWRpIENv
ZGVCbG9jazo6bV9udW1DYWxsZWVSZWdpc3RlcnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9j
azo6bV9nbG9iYWxEYXRhW3QxXSwgdDIKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmludGVycHJl
dGVyW3QyXSwgdDIgICAjIEZJWE1FOiBDYW4gZ2V0IHRvIHRoZSBSZWdpc3RlckZpbGUgZnJvbSB0
aGUgSklUU3RhY2tGcmFtZQorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQwLCBjZnIsIHQw
CisgICAgYnBhZXEgSW50ZXJwcmV0ZXI6Om1fcmVnaXN0ZXJGaWxlICsgUmVnaXN0ZXJGaWxlOjpt
X2VuZFt0Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSworCisgICAgIyBTdGFjayBoZWlnaHQgY2hlY2sg
ZmFpbGVkIC0gbmVlZCB0byBjYWxsIGEgaGVscGVyLgorICAgIGNhbGxIZWxwZXIoX2xsaW50X3Jl
Z2lzdGVyX2ZpbGVfY2hlY2spCisuc3RhY2tIZWlnaHRPSzoKK2VuZAorCisjIEV4cGVjdHMgdGhh
dCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVo
aW5kLgorbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgaGVscGVyKQorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisgICAgYmlhZXEgdDAs
IENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCisgICAgY0NhbGwyKGhl
bHBlciwgY2ZyLCBQQykgICAjIFRoaXMgaGVscGVyIGhhcyBhIHNpbXBsZSBwcm90b2NvbDogdDAg
PSAwID0+IG5vIGVycm9yLCB0MCAhPSAwID0+IGVycm9yCisgICAgbW92ZSB0MSwgY2ZyCisgICAg
YnRpeiB0MCwgLmNvbnRpbnVlCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtz
cF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQw
CisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisuY29u
dGludWU6CisgICAgIyBSZWxvYWQgQ29kZUJsb2NrIGFuZCBQQywgc2luY2UgdGhlIGhlbHBlciBj
bG9iYmVyZWQgaXQuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpJbnN0
cnVjdGlvbnM6Om1faW5zdHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKKyAg
ICBqbXAgZG9uZUxhYmVsCitlbmQKKworX2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6CisgICAgcHJv
bG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0
dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0
Y2goMCkKKworCitfbGxpbnRfZXZhbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlv
bkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRy
eV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNh
bGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlf
b3NyX2Z1bmN0aW9uX2Zvcl9jYWxsLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9y
X2NhbGwpCisuZnVuY3Rpb25Gb3JDYWxsQmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlv
bigwKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2Nr
R2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlv
bl9mb3JfY29uc3RydWN0LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdCkKKy5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6
YXRpb24oMSkKKyAgICBkaXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfYXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0
dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKKyAg
ICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfbGxpbnRfaGVscGVy
X2NhbGxfYXJpdHlDaGVjaykKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eV9jaGVjazoKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRl
ciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3Ry
dWN0KQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwg
X2xsaW50X2hlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKKworIyBJbnN0cnVjdGlvbiBpbXBs
ZW1lbnRhdGlvbnMKKworX2xsaW50X29wX2VudGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFy
c1t0Ml0sIHQyCisgICAgYnRpeiB0MiwgLm9wRW50ZXJEb25lCisgICAgbW92ZSBVbmRlZmluZWRU
YWcsIHQwCisgICAgbW92ZSAwLCB0MQorLm9wRW50ZXJMb29wOgorICAgIHN1YmkgMSwgdDIKKyAg
ICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGJ0aW56IHQyLCAub3BFbnRlckxvb3AKKy5vcEVudGVy
RG9uZToKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9jcmVhdGVfYWN0aXZhdGlvbjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBY3RpdmF0aW9uRG9u
ZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKKy5vcENy
ZWF0ZUFjdGl2YXRpb25Eb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luaXRf
bGF6eV9yZWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkg
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50
X29wX2NyZWF0ZV9hcmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywg
Lm9wQ3JlYXRlQXJndW1lbnRzRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVh
dGVfYXJndW1lbnRzKQorLm9wQ3JlYXRlQXJndW1lbnRzRG9uZToKKyAgICBkaXNwYXRjaCgyKQor
CisKK21hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJbmRleCwgY2xhc3NJbmZv
T2Zmc2V0LCBzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBzbG93Q2FzZSkK
KyAgICBjb25zdCBvZmZzZXRPZk15U2l6ZUNsYXNzID0gSlNHbG9iYWxEYXRhOjpoZWFwICsgSGVh
cDo6bV9vYmplY3RTcGFjZSArIEFsbG9jYXRpb25TcGFjZTo6bV9tYXJrZWRTcGFjZSArIE1hcmtl
ZFNwYWNlOjptX3ByZWNpc2VTaXplQ2xhc3NlcyArIHNpemVDbGFzc0luZGV4ICogc2l6ZW9mIE1h
cmtlZFNwYWNlOjpTaXplQ2xhc3MKKyAgICAKKyAgICAjIEZJWE1FOiB3ZSBjYW4gZ2V0IHRoZSBn
bG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRoZSBzdGFjay4KKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgc2NyYXRjaDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVtzY3Jh
dGNoMV0sIHNjcmF0Y2gxCisgICAgCisgICAgIyBHZXQgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVl
IGxpc3QuICAgIAorICAgIGxvYWRwIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6
U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXSwgcmVzdWx0CisgICAgYnRweiByZXN1
bHQsIHNsb3dDYXNlCisgICAgCisgICAgIyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVl
IGxpc3QuCisgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gy
LCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmlyc3RGcmVl
Q2VsbFtzY3JhdGNoMV0KKworICAgICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgorICAgIGxvYWRw
IGNsYXNzSW5mb09mZnNldFtzY3JhdGNoMV0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gy
LCBbcmVzdWx0XQorICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVz
dWx0XQorICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCisgICAg
YWRkcCBzaXplb2YgSlNPYmplY3QsIHJlc3VsdCwgc2NyYXRjaDEKKyAgICBzdG9yZXAgc2NyYXRj
aDEsIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVtyZXN1bHRdCitlbmQKKworX2xsaW50X29w
X2NyZWF0ZV90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIENlbGxUYWcsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAg
ICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIE9iamVj
dFR5cGUsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1faW5oZXJpdG9y
SURbdDBdLCB0MgorICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgYWxsb2NhdGVC
YXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpq
c0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cp
CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIs
IHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRp
c3BhdGNoKDMpCisKKy5vcENyZWF0ZVRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9jcmVhdGVfdGhpcykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9nZXRfY2Fs
bGVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2Fk
cCBQYXlsb2FkT2Zmc2V0ICsgQ2FsbGVlW2Nmcl0sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRh
Z09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NvbnZlcnRfdGhpczoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MAorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QwXSwgT2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNTbG93CisgICAgZGlzcGF0Y2goMikKKwor
Lm9wQ29udmVydFRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jb252ZXJ0
X3RoaXMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X29iamVjdDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmpl
Y3Q6Om1fZW1wdHlPYmplY3RTdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGFsbG9jYXRlQmFzaWNKU09i
amVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9i
amVjdENsYXNzSW5mbywgdDEsIHQwLCB0MiwgdDMsIC5vcE5ld09iamVjdFNsb3cpCisgICAgbG9h
ZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQor
ICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDIp
CisKKy5vcE5ld09iamVjdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19v
YmplY3QpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X2FycmF5OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2FycmF5KQor
ICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19hcnJheV9idWZmZXI6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXlfYnVm
ZmVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19yZWdleHA6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfcmVnZXhwKQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX21vdjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3Bfbm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5vcE5vdFNsb3cK
KyAgICB4b3JpIDEsIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAg
ICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQor
Cisub3BOb3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ub3QpCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQy
LCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcEVxU2xvdworICAgIGJpZXEgdDIsIENlbGxUYWcs
IC5vcEVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cKKyAgICBsb2FkaSA0
W1BDXSwgdDIKKyAgICBjaWVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIs
IDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wRXFTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9lcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9lcV9udWxsOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwg
dDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBi
aW5lcSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5v
cEVxTnVsbE5vdEltbWVkaWF0ZQorLm9wRXFOdWxsSW1tZWRpYXRlOgorICAgIGNpZXEgdDEsIE51
bGxUYWcsIHQyCisgICAgY2llcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIG9yaSB0MiwgdDEK
Ky5vcEVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0
W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
KHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93CisgICAgYmllcSB0Miwg
Q2VsbFRhZywgLm9wTmVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFTbG93Cisg
ICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2luZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29s
ZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BOZXFTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9uZXEpCisgICAgZGlzcGF0Y2goNCkKKyAgICAKKworX2xsaW50
X29wX25lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2Fk
aSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbEltbWVkaWF0ZQor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRieiBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQsIHQxCisgICAgam1wIC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKKy5vcE5lcU51bGxJbW1lZGlh
dGU6CisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2luZXEgdDEsIFVuZGVmaW5lZFRh
ZywgdDEKKyAgICBhbmRpIHQyLCB0MQorLm9wTmVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9y
ZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBzdHJpY3RF
cShlcXVhbGl0eU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBs
b2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0Miwg
dDMsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIENl
bGxUYWcsIC5ub3RTdHJpbmcKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIK
KyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKKyAgICBiYm5lcSBTdHJ1Y3R1
cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0
cmluZworICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0
M10sIFN0cmluZ1R5cGUsIC5zbG93Cisubm90U3RyaW5nOgorICAgIGxvYWRpIDRbUENdLCB0Mgor
ICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDApCisgICAgc3RvcmVpIEJvb2xlYW5UYWcs
IFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVy
KQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50X29wX3N0cmljdGVxOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2ll
cSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9zdHJpY3RlcSkKKworCitf
bGxpbnRfb3BfbnN0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcSht
YWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQs
IF9sbGludF9oZWxwZXJfbnN0cmljdGVxKQorCisKK19sbGludF9vcF9sZXNzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzcykKKyAgICBkaXNw
YXRjaCg0KQorCisKK19sbGludF9vcF9sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2dyZWF0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ3Jl
YXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfZ3JlYXRlcmVxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3ByZV9pbmM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZUluY1Nsb3cKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJhZGRpbyAxLCB0MSwgLm9wUHJlSW5jU2xv
dworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNo
KDIpCisKKy5vcFByZUluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3ByZV9p
bmMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJlX2RlYzoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQxCisgICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNTbG93CisgICAgc3Rv
cmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9w
UHJlRGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2RlYykKKyAgICBk
aXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3N0X2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdEluY1Nsb3cKKyAgICBiaWVxIHQw
LCB0MSwgLm9wUG9zdEluY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYmFkZGlvIDEsIHQzLCAub3BQb3N0SW5jU2xvdwor
ICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQy
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdCisub3BQb3N0SW5jRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0
SW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9pbmMpCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfcG9zdF9kZWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3REZWNTbG93CisgICAgYmllcSB0MCwg
dDEsIC5vcFBvc3REZWNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDIKKyAgICBtb3ZlIHQyLCB0MworICAgIGJzdWJpbyAxLCB0MywgLm9wUG9zdERlY1Nsb3cKKyAg
ICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0Miwg
UGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XQorLm9wUG9zdERlY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKworLm9wUG9zdERl
Y1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfZGVjKQorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX3RvX2pzbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmllcSB0MiwgSW50MzJUYWcsIC5vcFRvSnNu
dW1iZXJJc0ludAorICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BUb0pzbnVtYmVyU2xv
dworLm9wVG9Kc251bWJlcklzSW50OgorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0
Y2goMykKKworLm9wVG9Kc251bWJlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3RvX2pzbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25lZ2F0ZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10s
IHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQorICAgIGJpbmVxIHQx
LCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwg
Lm9wTmVnYXRlU2xvdworICAgIG5lZ2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNl
dFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQor
ICAgIGRpc3BhdGNoKDMpCisub3BOZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQxLCBMb3dlc3RU
YWcsIC5vcE5lZ2F0ZVNsb3cKKyAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAgc3RvcmVpIHQx
LCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOZWdhdGVTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9uZWdhdGUpCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBiaW5h
cnlPcEN1c3RvbVN0b3JlKGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0aW9u
LCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMU5vdElu
dAorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGxvYWRpIDRbUENdLCB0
MgorICAgIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0MywgdDEsIHQwLCAuc2xvdywgdDIpCisg
ICAgZGlzcGF0Y2goNSkKKworLm9wMU5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVm
aW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291bGQgYmUgYW55dGhpbmcu
CisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQzLCBMb3dlc3RUYWcsIC5v
cDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgY2ky
ZCB0MSwgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToK
KyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGxvYWRpIDRbUENd
LCB0MQorICAgIGZpaTJkIHQwLCB0MiwgZnQwCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQw
KQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcDJO
b3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50LCB0aGUgc2Vj
b25kIG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QuCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAg
YmlhIHQzLCBMb3dlc3RUYWcsIC5zbG93CisgICAgY2kyZCB0MCwgZnQwCisgICAgZmlpMmQgdDEs
IHQzLCBmdDEKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwg
W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlciho
ZWxwZXIpCisgICAgZGlzcGF0Y2goNSkKK2VuZAorCittYWNybyBiaW5hcnlPcChpbnRlZ2VyT3Bl
cmF0aW9uLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3Jl
KAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAg
ICAgICAgICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAg
ICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAg
c3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgIGVuZCwK
KyAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCitlbmQKKworX2xsaW50X29wX2FkZDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgc2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hl
bHBlcl9hZGQpCisKKworX2xsaW50X29wX211bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
YmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdo
dCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjb25zdCBzY3JhdGNoID0gaW50MzJUYWcgICAj
IFdlIGtub3cgdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIGludDMyVGFnIHJlZ2lzdGVyIHNpbmNlIGl0
IGhhcyBhIGNvbnN0YW50LgorICAgICAgICAgICAgbW92ZSByaWdodCwgc2NyYXRjaAorICAgICAg
ICAgICAgYm11bGlvIGxlZnQsIHNjcmF0Y2gsIHNsb3cKKyAgICAgICAgICAgIGJ0aW56IHNjcmF0
Y2gsIC5kb25lCisgICAgICAgICAgICBiaWx0IGxlZnQsIDAsIC5zbG93CisgICAgICAgICAgICBi
aWx0IHJpZ2h0LCAwLCAuc2xvdworICAgICAgICAuZG9uZToKKyAgICAgICAgICAgIHN0b3JlaSBJ
bnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgc2Ny
YXRjaCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfbXVsKQorCisKK19sbGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBs
ZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgc3ViZCBs
ZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfc3ViKQorCisKK19sbGludF9v
cF9kaXY6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisg
ICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAg
ICAgICAgY2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQorICAgICAg
ICAgICAgZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdElu
dAorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0K
KyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQor
ICAgICAgICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6CisgICAgICAgICAgICBzdG9y
ZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCwKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9kaXYpCisKKworX2xsaW50X29wX21vZDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkKKyAgICBkaXNwYXRjaCg0KQor
CisKK21hY3JvIGJpdE9wKG9wZXJhdGlvbiwgaGVscGVyLCBhZHZhbmNlKQorICAgIGxvYWRpIDEy
W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkK
KyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAu
c2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIG9wZXJhdGlvbih0MSwgdDAsIC5zbG93KQor
ICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKKworLnNsb3c6Cisg
ICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKK2VuZAorCitfbGxp
bnRfb3BfbHNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAg
ICAgX2xsaW50X2hlbHBlcl9sc2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX3JzaGlm
dDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgc2xvdykgcnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfcnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF91cnNoaWZ0OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBz
bG93KQorICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKKyAgICAgICAgICAgIGJpbHQg
cmlnaHQsIDAsIHNsb3cKKyAgICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3Vyc2hp
ZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX2JpdGFuZDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5kaSBs
ZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0YW5kLAorICAgICAgICA1
KQorCisKK19sbGludF9vcF9iaXR4b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9w
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdHhvciwKKyAgICAgICAgNSkKKworCitfbGxpbnRf
b3BfYml0b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHNsb3cpIG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfYml0b3IsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG5vdDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGJpbmVxIHQyLCBJ
bnQzMlRhZywgLm9wQml0bm90U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2JpdG5vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVja19o
YXNfaW5zdGFuY2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9wQ2hl
Y2tIYXNJbnN0YW5jZVNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQw
CisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0s
IEltcGxlbWVudHNIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBkaXNw
YXRjaCgyKQorCisub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50
X29wX2luc3RhbmNlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgQ2hlY2sgdGhhdCBi
YXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisgICAg
IyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAxMltQQ10sIHQx
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDEsIHQwKQorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIAorICAgICMgQWN0dWFsbHkgZG8gdGhlIHdv
cmsuCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNs
b3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJiIFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJ
bnN0YW5jZW9mU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgCisg
ICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3Zl
IDEsIHQwCisub3BJbnN0YW5jZW9mTG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QyXSwgdDIKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNl
dFt0Ml0sIHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRpbnog
dDIsIC5vcEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9mRG9u
ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9w
SW5zdGFuY2VvZlNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luc3RhbmNlb2Yp
CisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9pc19udW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9pc19udW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRf
b3BfaXNfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX29i
amVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2lzX29iamVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19mdW5jdGlvbjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Z1
bmN0aW9uKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2luOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfcmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcmVzb2x2ZV9za2lwKQorICAgIGRpc3BhdGNoKDUpCisKKworbWFjcm8g
cmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6
CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAg
UHJvcGVydHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAjIDEyW1BD
XSAgU3RydWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJh
dG9yLgorICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQg
dG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQw
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYnBuZXEgdDEsIDEyW1BDXSwgc2xvdwor
ICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3Jh
Z2VbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBz
dG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XQorICAgIGxvYWRpIChzaXplIC0gMSkgKiA0W1BDXSwgdDAKKyAgICB2
YWx1ZVByb2ZpbGUodDIsIHQzLCB0MCkKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHJlc29sdmVHbG9iYWwoNiwgLm9wUmVzb2x2ZUds
b2JhbFNsb3cpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbFNsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3BhdGNoKDYp
CisKKworIyBHaXZlcyB5b3UgdGhlIHNjb3BlIGluIHQwLCB3aGlsZSBhbGxvd2luZyB5b3UgdG8g
b3B0aW9uYWxseSBwZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9uIHRoZQorIyBzY29wZXMgYXMg
dGhleSBhcmUgdHJhdmVyc2VkLiBzY29wZUNoZWNrKCkgaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3Vt
ZW50czogdGhlIHJlZ2lzdGVyCisjIGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdpc3RlciB0
aGF0IGNhbiBiZSB1c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAorIyB1
c2UgdDMsIHNvIHlvdSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJlLgorbWFjcm8gZ2V0
U2NvcGUoZGVCcnVpamluSW5kZXhPcGVyYW5kLCBzY29wZUNoZWNrKQorICAgIGxvYWRwIFNjb3Bl
Q2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgZGVCcnVpamluSW5kZXhP
cGVyYW5kLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisgICAgCisgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHQxCisgICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwgRnVu
Y3Rpb25Db2RlLCAubG9vcAorICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNjb3BlQ2hh
aW5bdDFdLCAubG9vcAorICAgIAorICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0aW9uUmVn
aXN0ZXJbdDFdLCB0MQorCisgICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9u
ZSBzY29wZS4KKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywg
Lm5vQWN0aXZhdGlvbgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hh
aW5Ob2RlOjpuZXh0W3QwXSwgdDAKKy5ub0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0MgorICAg
IAorICAgIGJ0aXogdDIsIC5kb25lCisubG9vcDoKKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAg
ICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisgICAgc3ViaSAxLCB0MgorICAg
IGJ0aW56IHQyLCAubG9vcAorCisuZG9uZToKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9i
YWxfZHluYW1pYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFt
ZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0aW9u
U3RydWN0dXJlW3QzXSwgdDMKKyAgICBnZXRTY29wZSgKKyAgICAgICAgMjBbUENdLAorICAgICAg
ICBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpCisgICAgICAgICAgICBsb2FkcCBTY29wZUNoYWluTm9k
ZTo6b2JqZWN0W3Njb3BlXSwgc2NyYXRjaAorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0
cnVjdHVyZVtzY3JhdGNoXSwgdDMsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93Cisg
ICAgICAgIGVuZCkKKyAgICByZXNvbHZlR2xvYmFsKDcsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWlj
U2xvdykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9i
YWxfZHluYW1pYykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Ns
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMp
CisgICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BD
XSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgSW5kZXggb2YgcmVn
aXN0ZXIgaW4gdGhlIHNjb3BlLgorICAgICMgMTJbUENdICBEZSBCcnVpamluIGluZGV4LgorICAg
IGdldFNjb3BlKDEyW1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkg
NFtQQ10sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6
Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNb
dDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbdDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIs
IHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxv
YWRpIDE2W1BDXSwgdDEKKyAgICB2YWx1ZVByb2ZpbGUodDMsIHQwLCB0MSkKKyAgICBkaXNwYXRj
aCg1KQorCisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgZ2V0U2NvcGUoOFtQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxv
YWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MywgdDIpCisg
ICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQzLCB0MikKKyAgICBsb2FkcCBT
Y29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0
OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbdDAsIHQxLCA4
XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0
MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9h
ZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwg
dDEsIDhdLCB0MQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3Rv
cmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgbG9hZGkgMTJbUENdLCB0Mwor
ICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX3B1dF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdp
c3RlcnNbdDBdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAg
ICBsb2FkaSA0W1BDXSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0b3JlaSB0
MiwgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbdDAs
IHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfYmFzZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVf
YmFzZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9lbnN1cmVfcHJvcGVydHlfZXhp
c3RzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
ZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9y
ZXNvbHZlX3dpdGhfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xs
aW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNSkK
KworCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdl
IG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRv
IG5vdCBtb2RpZnkgdGhlCisgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3Ig
dGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorICAgICMgcGluZy1w
b25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdp
bGwgY29udGludWUKKyAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0
IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisgICAgIyB3ZSB3b3VsZCBo
YXZlIGJlZW4gZG9pbmcgYW55d2F5LgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2
W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywg
dDMsIC5vcEdldEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkcCBKU09i
amVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBs
b2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0
Ml0sIHQyCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkg
dDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAzMltQQ10sIHQxCisgICAg
dmFsdWVQcm9maWxlKHQzLCB0MiwgdDEpCisgICAgZGlzcGF0Y2goOSkKKworLm9wR2V0QnlJZFNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9pZCkKKyAgICBkaXNwYXRj
aCg5KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmlu
ZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudHNM
ZW5ndGhTbG93CisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwg
dDIKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNw
YXRjaCg0KQorCisub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9wdXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENd
LCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEyW1BDXSwg
dDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGJw
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBsb2Fk
aSAyMFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQwLCB0MikK
KyAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0
MV0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQorICAgIGRpc3BhdGNoKDkp
CisKKy5vcFB1dEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlf
aWQpCisgICAgZGlzcGF0Y2goOSkKKworCittYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlv
bmFsQ2hlY2tzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAg
ICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMs
IENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAg
YnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGFk
ZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10s
IHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBh
ZGRwIHQxLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCisg
ICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAg
ICBsb2FkaSAyNFtQQ10sIHQxCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQorICAg
IHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICBkaXNwYXRjaCg5KQorZW5k
CisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgcHV0QnlJZFRy
YW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorCisKK19s
bGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgcHV0QnlJZFRyYW5zaXRp
b24oCisgICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCisgICAgICAg
ICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0
cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAgICAgIAorICAgICAgICAgICAgbG9h
ZHAgMjhbUENdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBz
Y3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0
b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56
IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICAgICAgICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlw
ZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorICAgICAgICAubG9v
cDoKKyAgICAgICAgICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zm
c2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICAgICAgICAgIGJwbmVxIG9s
ZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCBzbG93CisgICAgICAgICAgICBhZGRwIDQsIHNjcmF0Y2gK
KyAgICAgICAgICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xk
U3RydWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCkK
KworCitfbGxpbnRfb3BfZGVsX2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X2lkKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX2dldF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDEyW1BDXSwgdDMK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQxCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNsb3cpCisg
ICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNs
b3cpCisgICAgYnBuZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJy
YXk6Om1fc3RvcmFnZVt0MF0sIHQzCisgICAgYmlhZXEgdDEsIEpTQXJyYXk6Om1fdmVjdG9yTGVu
Z3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkg
QXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgIGxv
YWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQx
CisgICAgYmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93CisgICAgc3RvcmVp
IHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgdmFsdWVQcm9maWxlKHQyLCB0
MSwgdDApCisgICAgZGlzcGF0Y2goNSkKKworLm9wR2V0QnlWYWxTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50
X29wX2dldF9hcmd1bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEludDMyVGFnLCB0MiwgLm9wR2V0QXJndW1l
bnRCeVZhbFNsb3cpCisgICAgYWRkaSAxLCB0MgorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQ
YXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisgICAgYmlhZXEgdDIsIHQxLCAub3BHZXRBcmd1bWVudEJ5
VmFsU2xvdworICAgIG5lZ2kgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUaGlz
QXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisgICAgbG9hZGkgVGhp
c0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEKKyAgICBzdG9y
ZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEFyZ3VtZW50QnlWYWxTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV9wbmFtZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMTZb
UENdLCB0MAorICAgIGJwbmVxIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAub3BHZXRC
eVBuYW1lU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkg
MjBbUENdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAsIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cK
KyAgICBsb2FkaSAyNFtQQ10sIHQwCisgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAorICAgIHN1
YmkgMSwgdDAKKyAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNo
ZWFibGVTbG90c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1f
cHJvcGVydHlTdG9yYWdlW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQwLCA4XSwg
dDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkg
dDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg3KQorCisub3BHZXRC
eVBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3BuYW1lKQor
ICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX3B1dF9ieV92YWw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBJbnQzMlRhZywgdDIs
IC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxEYXRh
Ojpqc0FycmF5Q2xhc3NJbmZvW3QwXSwgdDAKKyAgICBicG5lcSBbdDFdLCB0MCwgLm9wUHV0QnlW
YWxTbG93CisgICAgYmlhZXEgdDIsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QxXSwgLm9wUHV0
QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QxXSwgdDAKKyAgICBiaWVx
IEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgRW1wdHlWYWx1
ZVRhZywgLm9wUHV0QnlWYWxFbXB0eQorLm9wUHV0QnlWYWxTdG9yZVJlc3VsdDoKKyAgICBsb2Fk
aSAxMltQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQxLCB0MykK
KyAgICB3cml0ZUJhcnJpZXIodDEsIHQzKQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjpt
X3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdCisgICAgc3RvcmVpIHQzLCBBcnJheVN0b3Jh
Z2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkK
KworLm9wUHV0QnlWYWxFbXB0eToKKyAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1
ZXNJblZlY3Rvclt0MF0KKyAgICBiaWIgdDIsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdLCAu
b3BQdXRCeVZhbFN0b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0MiwgdDEKKyAgICBzdG9yZWkgdDEs
IEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdCisgICAgam1wIC5vcFB1dEJ5VmFsU3RvcmVSZXN1
bHQKKworLm9wUHV0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRf
YnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2RlbF9ieV92YWw6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWxfYnlfdmFs
KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9pbmRleDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pbmRleCkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2V0dGVyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2dldHRlcikKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfc2V0dGVyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X3NldHRlcikKKyAgICBkaXNwYXRj
aCg0KQorCisKK19sbGludF9vcF9sb29wOgorICAgIG5vcAorX2xsaW50X29wX2ptcDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0Y2hCcmFuY2goNFtQQ10pCisKKworX2xsaW50X29w
X2ptcF9zY29wZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9qbXBfc2NvcGVzKQorICAgIGRpc3BhdGNoKDApCisKKworbWFjcm8ganVtcFRydWVP
ckZhbHNlKGNvbmRpdGlvbk9wLCBzbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBCb29sZWFuVGFnLCB0MCwgLnNsb3cpCisgICAg
Y29uZGl0aW9uT3AodDAsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAg
ICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihzbG93KQor
ICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfdHJ1ZToKKyAgICBub3AK
K19sbGludF9vcF9qdHJ1ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAganVtcFRydWVPckZh
bHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpbnogdmFsdWUsIHRhcmdldCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfanRydWUpCisKKworX2xsaW50X29wX2xvb3BfaWZf
ZmFsc2U6CisgICAgbm9wCitfbGxpbnRfb3BfamZhbHNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGl6
IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pmYWxzZSkKKworCitt
YWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhbmRsZXIpCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5p
bW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBjZWxs
SGFuZGxlcihTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0Ml0sIC50
YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4
W1BDXSkKKworLmltbWVkaWF0ZToKKyAgICBvcmkgMSwgdDEKKyAgICBpbW1lZGlhdGVIYW5kbGVy
KHQxLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCitlbmQKKworX2xsaW50X29wX2plcV9udWxs
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2
YWx1ZSwgdGFyZ2V0KSBidGJueiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0
IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpZXEgdmFsdWUsIE51bGxUYWcs
IHRhcmdldCBlbmQpCisgICAgCisKK19sbGludF9vcF9qbmVxX251bGw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0
YnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisgICAgICAgIG1h
Y3JvICh2YWx1ZSwgdGFyZ2V0KSBiaW5lcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKwor
CitfbGxpbnRfb3Bfam5lcV9wdHI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgQ2VsbFRhZywgLm9wSm5lcVB0ckJyYW5jaAorICAgIGJwZXEgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDEsIC5vcEpuZXFQdHJGYWxsVGhyb3VnaAorLm9wSm5lcVB0ckJyYW5jaDoK
KyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisub3BKbmVxUHRyRmFsbFRocm91Z2g6CisgICAg
ZGlzcGF0Y2goNCkKKworCittYWNybyBjb21wYXJlKGludGVnZXJDb21wYXJlLCBkb3VibGVDb21w
YXJlLCBoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQzCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDAsIHQxKQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUyUmVnKHQzLCB0MiwgdDMpCisgICAgYmluZXEgdDAsIEludDMyVGFnLCAub3AxTm90
SW50CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AyTm90SW50CisgICAgaW50ZWdlckNvbXBh
cmUodDEsIHQzLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisub3AxTm90SW50Ogor
ICAgIGJpYSB0MCwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3Ax
Tm90SW50T3AyRG91YmxlCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQg
dDMsIGZ0MQorICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6Cisg
ICAgZmlpMmQgdDMsIHQyLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBmaWkyZCB0MSwgdDAs
IGZ0MAorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3Bh
dGNoKDQpCisKKy5vcDJOb3RJbnQ6CisgICAgY2kyZCB0MSwgZnQwCisgICAgYmlhIHQyLCBMb3dl
c3RUYWcsIC5zbG93CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKyAgICBkb3VibGVDb21wYXJlKGZ0
MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisuanVtcFRhcmdldDoKKyAg
ICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVy
KQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfbGVzczoKKyAgICBu
b3AKK19sbGludF9vcF9qbGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRh
cmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0IGxlZnQs
IHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2psZXNzKQorCisKK19s
bGludF9vcF9qbmxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXF1biBsZWZ0
LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmxlc3MpCisKKwor
X2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcjoKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAor
ICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVhdGVyKQorCisKK19sbGludF9vcF9qbmdyZWF0ZXI6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0
IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXIpCisKKworX2xsaW50X29wX2xv
b3BfaWZfbGVzc2VxOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzZXE6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgdGFyZ2V0KSBiZGx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9s
bGludF9oZWxwZXJfamxlc3NlcSkKKworCitfbGxpbnRfb3Bfam5sZXNzZXE6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFy
Z2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmRndHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2pubGVzc2VxKQorCisKK19sbGludF9vcF9sb29wX2lmX2dyZWF0ZXJlcToK
KyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxl
ZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmRndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVy
X2pncmVhdGVyZXEpCisKKworX2xsaW50X29wX2puZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkg
YmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJkbHR1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9qbmdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3BfbG9vcF9oaW50OgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgZGlzcGF0Y2go
MSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2ltbToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6ZW9mIFNpbXBs
ZUp1bXBUYWJsZSwgdDMgICAjIEZJWE1FOiB3b3VsZCBiZSBuaWNlIHRvIHBlZXBob2xlIHRoaXMh
CisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFi
bGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJp
bmVxIHQxLCBJbnQzMlRhZywgLm9wU3dpdGNoSW1tTm90SW50CisgICAgc3ViaSBTaW1wbGVKdW1w
VGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNo
T2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAor
ICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9m
ZnNldFt0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgNF0sIHQxCisgICAgYnRpeiB0MSwgLm9w
U3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCisK
Ky5vcFN3aXRjaEltbU5vdEludDoKKyAgICBiaWIgdDEsIExvd2VzdFRhZywgLm9wU3dpdGNoSW1t
U2xvdyAgIyBHbyB0byBzbG93IHBhdGggaWYgaXQncyBhIGRvdWJsZS4KKy5vcFN3aXRjaEltbUZh
bGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisub3BTd2l0Y2hJbW1TbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfaW1tKQorICAgIGRpc3BhdGNo
KDApCisKKworX2xsaW50X29wX3N3aXRjaF9jaGFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAg
IGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2lt
cGxlSnVtcFRhYmxlLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fY2hhcmFj
dGVyU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgYWRk
cCB0MywgdDIKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdo
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYmJuZXEgU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIFN0cmluZ1R5cGUsIC5vcFN3
aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTU3RyaW5nOjptX3ZhbHVlW3QwXSwgdDAK
KyAgICBiaW5lcSBTdHJpbmdJbXBsOjptX2xlbmd0aFt0MF0sIDEsIC5vcFN3aXRjaENoYXJGYWxs
VGhyb3VnaAorICAgIGxvYWRwIFN0cmluZ0ltcGw6Om1fZGF0YThbdDBdLCB0MQorICAgIGJ0aW56
IFN0cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdzW3QwXSwgSGFzaEZsYWdzOEJpdEJ1ZmZlciwgLm9w
U3dpdGNoQ2hhcjhCaXQKKyAgICBsb2FkaCBbdDFdLCB0MAorICAgIGptcCAub3BTd2l0Y2hDaGFy
UmVhZHkKKy5vcFN3aXRjaENoYXI4Qml0OgorICAgIGxvYWRiIFt0MV0sIHQwCisub3BTd2l0Y2hD
aGFyUmVhZHk6CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlh
ZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRb
dDJdLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6
OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGxvYWRpIFt0
MiwgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEsIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAg
ZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQorCisub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2g6
CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKworX2xsaW50X29wX3N3aXRjaF9zdHJpbmc6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0
Y2hfc3RyaW5nKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX25ld19mdW5jOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidGl6IDEyW1BDXSwgLm9wTmV3RnVuY1VuY2hlY2tlZAor
ICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1w
dHlWYWx1ZVRhZywgLm9wTmV3RnVuY0RvbmUKKy5vcE5ld0Z1bmNVbmNoZWNrZWQ6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19mdW5jKQorLm9wTmV3RnVuY0RvbmU6CisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmNfZXhwKQorICAgIGRpc3Bh
dGNoKDMpCisKKworbWFjcm8gZG9DYWxsKGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAgTExJbnRDYWxsTGlua0luZm86OmNhbGxlZVt0
MV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQz
LCAub3BDYWxsU2xvdykKKyAgICBiaW5lcSB0MywgdDIsIC5vcENhbGxTbG93CisgICAgbG9hZGkg
MTJbUENdLCB0MworICAgIGFkZHAgMjQsIFBDCisgICAgbHNoaWZ0aSAzLCB0MworICAgIGFkZHAg
Y2ZyLCB0MyAgIyB0MyBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9mIGNmcgorICAgIGxvYWRwIEpT
RnVuY3Rpb246Om1fc2NvcGVDaGFpblt0Ml0sIHQwCisgICAgc3RvcmVpIHQyLCBDYWxsZWUgKyBQ
YXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSB0MCwgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZz
ZXRbdDNdCisgICAgbG9hZGkgOCAtIDI0W1BDXSwgdDIKKyAgICBzdG9yZWkgUEMsIEFyZ3VtZW50
Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlcCBjZnIsIENhbGxlckZyYW1lW3QzXQor
ICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3Rv
cmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywg
U2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10KKyAgICBtb3ZlIHQzLCBjZnIKKyAgICBjYWxsIExM
SW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0KKyAgICBkaXNwYXRjaEFmdGVy
Q2FsbCgpCisKKy5vcENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBoZWxwZXIpCitl
bmQKKworX2xsaW50X29wX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRvQ2FsbChf
bGxpbnRfaGVscGVyX2NhbGwpCisKKworX2xsaW50X29wX2NvbnN0cnVjdDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY29uc3RydWN0KQorCisKK19sbGlu
dF9vcF9jYWxsX3ZhcmFyZ3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHNsb3dQYXRoRm9y
Q2FsbCg2LCBfbGxpbnRfaGVscGVyX2NhbGxfdmFyYXJncykKKworCitfbGxpbnRfb3BfY2FsbF9l
dmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAKKyAgICAjIEV2YWwgaXMgZXhlY3V0ZWQg
aW4gb25lIG9mIHR3byBtb2RlczoKKyAgICAjCisgICAgIyAxKSBXZSBmaW5kIHRoYXQgd2UncmUg
cmVhbGx5IGludm9raW5nIGV2YWwoKSBpbiB3aGljaCBjYXNlIHRoZQorICAgICMgICAgZXhlY3V0
aW9uIGlzIHBlcmZvbWVkIGVudGlyZWx5IGluc2lkZSB0aGUgaGVscGVyLCBhbmQgaXQKKyAgICAj
ICAgIHJldHVybnMgdGhlIFBDIG9mIGEgZnVuY3Rpb24gdGhhdCBqdXN0IHJldHVybnMgdGhlIHJl
dHVybiB2YWx1ZQorICAgICMgICAgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAjCisgICAg
IyAyKSBXZSBmaW5kIHRoYXQgd2UncmUgaW52b2tpbmcgc29tZXRoaW5nIGNhbGxlZCBldmFsKCkg
dGhhdCBpcyBub3QKKyAgICAjICAgIHRoZSByZWFsIGV2YWwuIFRoZW4gdGhlIGhlbHBlciByZXR1
cm5zIHRoZSBQQyBvZiB0aGUgdGhpbmcgdG8KKyAgICAjICAgIGNhbGwsIGFuZCB3ZSBjYWxsIGl0
LgorICAgICMKKyAgICAjIFRoaXMgYWxsb3dzIHVzIHRvIGhhbmRsZSB0d28gY2FzZXMsIHdoaWNo
IHdvdWxkIHJlcXVpcmUgYSB0b3RhbCBvZgorICAgICMgdXAgdG8gZm91ciBwaWVjZXMgb2Ygc3Rh
dGUgdGhhdCBjYW5ub3QgYmUgZWFzaWx5IHBhY2tlZCBpbnRvIHR3bworICAgICMgcmVnaXN0ZXJz
IChDIGZ1bmN0aW9ucyBjYW4gcmV0dXJuIHVwIHRvIHR3byByZWdpc3RlcnMsIGVhc2lseSk6Cisg
ICAgIworICAgICMgLSBUaGUgY2FsbCBmcmFtZSByZWdpc3Rlci4gVGhpcyBtYXkgb3IgbWF5IG5v
dCBoYXZlIGJlZW4gbW9kaWZpZWQKKyAgICAjICAgYnkgdGhlIGhlbHBlciwgYnV0IHRoZSBjb252
ZW50aW9uIGlzIHRoYXQgaXQgcmV0dXJucyBpdC4gSXQncyBub3QKKyAgICAjICAgdG90YWxseSBj
bGVhciBpZiB0aGF0J3MgbmVjZXNzYXJ5LCBzaW5jZSB0aGUgY2ZyIGlzIGNhbGxlZSBzYXZlLgor
ICAgICMgICBCdXQgdGhhdCdzIG91ciBzdHlsZSBpbiB0aGlzIGhlcmUgaW50ZXJwcmV0ZXIgc28g
d2Ugc3RpY2sgd2l0aCBpdC4KKyAgICAjCisgICAgIyAtIEEgYml0IHRvIHNheSBpZiB0aGUgaGVs
cGVyIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCB0aGUgZXZhbCBhbmQgaGFzCisgICAgIyAgIHRoZSBy
ZXR1cm4gdmFsdWUsIG9yIGRpZCBub3QgZXhlY3V0ZSB0aGUgZXZhbCBidXQgaGFzIGEgUEMgZm9y
IHVzCisgICAgIyAgIHRvIGNhbGwuCisgICAgIworICAgICMgLSBFaXRoZXI6CisgICAgIyAgIC0g
VGhlIEpTIHJldHVybiB2YWx1ZSAodHdvIHJlZ2lzdGVycyksIG9yCisgICAgIworICAgICMgICAt
IFRoZSBQQyB0byBjYWxsLgorICAgICMKKyAgICAjIEl0IHR1cm5zIG91dCB0byBiZSBlYXNpZXIg
dG8ganVzdCBhbHdheXMgaGF2ZSB0aGlzIHJldHVybiB0aGUgY2ZyCisgICAgIyBhbmQgYSBQQyB0
byBjYWxsLCBhbmQgdGhhdCBQQyBtYXkgYmUgYSBkdW1teSB0aHVuayB0aGF0IGp1c3QKKyAgICAj
IHJldHVybnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAgCisgICAg
c2xvd1BhdGhGb3JDYWxsKDQsIF9sbGludF9oZWxwZXJfY2FsbF9ldmFsKQorCisKK19sbGludF9n
ZW5lcmljX3JldHVybl9wb2ludDoKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKworX2xsaW50
X29wX3RlYXJfb2ZmX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkCisgICAg
YmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3Rp
dmF0aW9uTm90Q3JlYXRlZAorLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkOgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQorLm9wVGVhck9mZkFjdGl2
YXRpb25Ob3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3RlYXJfb2Zm
X2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgc3ViaSAxLCB0MCAgICMgR2V0IHRoZSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIKKyAg
ICBiaWVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFy
Z3VtZW50c05vdENyZWF0ZWQKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGVhcl9vZmZf
YXJndW1lbnRzKQorLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2go
MikKKworCittYWNybyBkb1JldHVybigpCisgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAg
ICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKKyAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0Jl
Zm9yZVJldHVybih0MikKKyAgICByZXQKK2VuZAorCitfbGxpbnRfb3BfcmV0OgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRp
IDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBk
b1JldHVybigpCisKKworX2xsaW50X29wX2NhbGxfcHV0X3Jlc3VsdDoKKyAgICBsb2FkaSA0W1BD
XSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIs
IHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHZh
bHVlUHJvZmlsZSh0MSwgdDAsIHQzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkgIyBOZWVkcyB0byBi
ZSBoZXJlIGJlY2F1c2UgaXQgd291bGQgY2xvYmJlciB0MSwgdDAKKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9yZXRfb2JqZWN0X29yX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGJpbmVxIHQxLCBDZWxs
VGFnLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAorICAg
IGRvUmV0dXJuKCkKKworLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0OgorICAgIGxvYWRpIDhb
UENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBkb1Jl
dHVybigpCisKKworX2xsaW50X29wX21ldGhvZF9jaGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNoZWNrcyBhbmQgdXNlIG5vcm1hbCBnZXRfYnlfaWQg
b3B0aW1pemF0aW9ucy4KKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zdHJjYXQ6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zdHJjYXQp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxU
YWcsIC5vcFRvUHJpbWl0aXZlSXNJbW0KKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDIKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QyXSwgU3RyaW5nVHlwZSwgLm9wVG9QcmltaXRpdmVTbG93Q2FzZQorLm9wVG9QcmltaXRpdmVJ
c0ltbToKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvUHJp
bWl0aXZlU2xvd0Nhc2U6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RvX3ByaW1pdGl2
ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9nZXRfcG5hbWVzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X3BuYW1lcykKKyAg
ICBkaXNwYXRjaCgwKSAjIFRoZSBoZWxwZXIgZWl0aGVyIGFkdmFuY2VzIHRoZSBQQyBvciBqdW1w
cyB1cyB0byBzb21ld2hlcmUgZWxzZS4KKworCitfbGxpbnRfb3BfbmV4dF9wbmFtZToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRpIDE2W1BDXSwg
dDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MAorICAgIGJpZXEgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIC5vcE5leHRQbmFtZUVuZAorICAgIGxvYWRpIDIw
W1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MgorICAgIGxv
YWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fanNTdHJpbmdzW3QyXSwgdDMKKyAgICBsb2Fk
aSBbdDMsIHQwLCA4XSwgdDMKKyAgICBhZGRpIDEsIHQwCisgICAgc3RvcmVpIHQwLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxU
YWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtj
ZnIsIHQxLCA4XQorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MywgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisg
ICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3Qy
XSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1f
Y2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0MAorICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjpt
X3ZlY3Rvclt0MF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BOZXh0UG5hbWVUYXJnZXQKKy5vcE5l
eHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcDoKKyAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5
cGUgKyBUYWdPZmZzZXRbdDFdLCBOdWxsVGFnLCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAg
U3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDFdLCB0MgorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MQorICAgIGJwbmVxIHQxLCBbdDBdLCAub3BOZXh0
UG5hbWVTbG93CisgICAgYWRkcCA0LCB0MAorICAgIGJ0cG56IFt0MF0sIC5vcE5leHRQbmFtZUNo
ZWNrUHJvdG90eXBlTG9vcAorLm9wTmV4dFBuYW1lVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNo
KDI0W1BDXSkKKworLm9wTmV4dFBuYW1lRW5kOgorICAgIGRpc3BhdGNoKDcpCisKKy5vcE5leHRQ
bmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25leHRfcG5hbWUpICMgVGhp
cyBlaXRoZXIga2VlcHMgdGhlIFBDIHdoZXJlIGl0IHdhcyAoY2F1c2luZyB1cyB0byBsb29wKSBv
ciBzZXRzIGl0IHRvIHRhcmdldC4KKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9wdXNo
X3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcHVzaF9zY29wZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3Bfc2NvcGU6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3Bf
c2NvcGUpCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfcHVzaF9uZXdfc2NvcGU6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX25l
d19zY29wZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9jYXRjaDoKKyAgICAjIFRo
aXMgaXMgd2hlcmUgd2UgZW5kIHVwIGZyb20gdGhlIEpJVCdzIHRocm93IHRyYW1wb2xpbmUgKGJl
Y2F1c2UgdGhlCisgICAgIyBtYWNoaW5lIGNvZGUgcmV0dXJuIGFkZHJlc3Mgd2lsbCBiZSBzZXQg
dG8gX2xsaW50X29wX2NhdGNoKSwgYW5kIGZyb20KKyAgICAjIHRoZSBpbnRlcnByZXRlcidzIHRo
cm93IHRyYW1wb2xpbmUgKHNlZSBfbGxpbnRfdGhyb3dfdHJhbXBvbGluZSkuCisgICAgIyBUaGUg
SklUIHRocm93aW5nIHByb3RvY29sIGNhbGxzIGZvciB0aGUgY2ZyIHRvIGJlIGluIHQwLiBUaGUg
dGhyb3dpbmcKKyAgICAjIGNvZGUgbXVzdCBoYXZlIGtub3duIHRoYXQgd2Ugd2VyZSB0aHJvd2lu
ZyB0byB0aGUgaW50ZXJwcmV0ZXIsIGFuZCBoYXZlCisgICAgIyBzZXQgSlNHbG9iYWxEYXRhOjp0
YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cuCisgICAgbW92ZSB0MCwgY2ZyCisgICAgbG9hZHAg
SklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZGkgSlNHbG9iYWxEYXRh
Ojp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3dbdDNdLCBQQworICAgIGxvYWRpIEpTR2xvYmFs
RGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10sIHQwCisgICAgbG9hZGkgSlNHbG9i
YWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdLCB0MQorICAgIHN0b3JlaSAwLCBKU0ds
b2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIEVtcHR5
VmFsdWVUYWcsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSAgICAgICAK
KyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MiwgOF0KKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHRyYWNlRXhl
Y3V0aW9uKCkgICMgVGhpcyBuZWVkcyB0byBiZSBoZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0
byBjbG9iYmVyIHQwLCB0MSwgdDIsIHQzIGFib3ZlLgorICAgIGRpc3BhdGNoKDIpCisKKworX2xs
aW50X29wX3Rocm93OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfdGhyb3cpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3dfcmVm
ZXJlbmNlX2Vycm9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xs
aW50X29wX2pzcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgYWRkaSAzICogNCwgUEMsIHQxCisgICAgc3RvcmVpIHQxLCBbY2ZyLCB0MCwgOF0KKyAgICBk
aXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3JldDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZHAgW2NmciwgdDAsIDhdLCBQQwor
ICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX2RlYnVnOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVidWcpCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfcHJvZmlsZV93aWxsX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGJ0cHogSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgLm9w
UHJvZmlsZVdpbGxDYWxsRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcm9maWxl
X3dpbGxfY2FsbCkKKy5vcFByb2ZpbGVXaWxsQ2FsbERvbmU6CisgICAgZGlzcGF0Y2goMikKKwor
CitfbGxpbnRfb3BfcHJvZmlsZV9kaWRfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
YnRweiBKSVRTdGFja0ZyYW1lOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCAub3BQcm9m
aWxlRGlkQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV9kaWRf
Y2FsbCkKKy5vcFByb2ZpbGVEaWRDYWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9lbmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JF
cGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAg
ZG9SZXR1cm4oKQorCisKK19sbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lOgorICAg
ICMgV2hlbiB0aHJvd2luZyBmcm9tIHRoZSBpbnRlcnByZXRlciAoaS5lLiB0aHJvd2luZyBmcm9t
IExMSW50SGVscGVycyksIHNvCisgICAgIyB0aGUgdGhyb3cgdGFyZ2V0IGlzIG5vdCBuZWNlc3Nh
cmlseSBpbnRlcnByZXRlZCBjb2RlLCB3ZSBjb21lIHRvIGhlcmUuCisgICAgIyBUaGlzIGVzc2Vu
dGlhbGx5IGVtdWxhdGVzIHRoZSBKSVQncyB0aHJvd2luZyBwcm90b2NvbC4KKyAgICBsb2FkcCBK
SVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6
OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRN
YWNoaW5lUENGb3JUaHJvd1t0MV0KKworCitfbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBv
bGluZToKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpCisgICAgbG9hZHAg
SklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRh
OjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0
TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworIyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0IHdlIGNh
biBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMuCisjIFRoZXNl
IG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0aGVyIEpJ
VC4gV2UgYXNzZXJ0CisjIGFzIG11Y2guCisKK21hY3JvIG5vdFN1cHBvcnRlZCgpCisgICAgaWYg
QVNTRVJUX0VOQUJMRUQKKyAgICAgICAgY3Jhc2goKQorICAgIGVsc2UKKyAgICAgICAgIyBXZSBz
aG91bGQgdXNlIHdoYXRldmVyIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBpbnN0cnVjdGlvbiBpcywg
anVzdCB0bworICAgICAgICAjIGVuc3VyZSB0aGF0IHRoZXJlIGlzIGEgZ2FwIGJldHdlZW4gaW5z
dHJ1Y3Rpb24gbGFiZWxzLiBJZiBtdWx0aXBsZQorICAgICAgICAjIHNtYWxsZXN0IGluc3RydWN0
aW9ucyBleGlzdCwgd2Ugc2hvdWxkIHBpY2sgdGhlIG9uZSB0aGF0IGlzIG1vc3QKKyAgICAgICAg
IyBsaWtlbHkgcmVzdWx0IGluIGV4ZWN1dGlvbiBiZWluZyBoYWx0ZWQuIEN1cnJlbnRseSB0aGF0
IGlzIHRoZSBicmVhaworICAgICAgICAjIGluc3RydWN0aW9uIG9uIGFsbCBhcmNoaXRlY3R1cmVz
IHdlJ3JlIGludGVyZXN0ZWQgaW4uIChCcmVhayBpcyBpbnQzCisgICAgICAgICMgb24gSW50ZWws
IHdoaWNoIGlzIDEgYnl0ZSwgYW5kIGJrcHQgb24gQVJNdjcsIHdoaWNoIGlzIDIgYnl0ZXMuKQor
ICAgICAgICBicmVhaworICAgIGVuZAorZW5kCisKK19sbGludF9vcF9nZXRfYXJyYXlfbGVuZ3Ro
OgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY2hhaW46CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jdXN0b21fY2hhaW46CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jdXN0b21fcHJvdG86CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jdXN0b21fc2VsZjoKKyAgICBu
b3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dlbmVyaWM6CisgICAgbm90U3Vw
cG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJfY2hhaW46CisgICAgbm90U3Vw
cG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJfcHJvdG86CisgICAgbm90U3Vw
cG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJfc2VsZjoKKyAgICBub3RTdXBw
b3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgp
CisKK19sbGludF9vcF9nZXRfYnlfaWRfc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxp
bnRfb3BfZ2V0X3N0cmluZ19sZW5ndGg6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29w
X3B1dF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRf
YnlfaWRfcmVwbGFjZToKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb246CisgICAgbm90U3VwcG9ydGVkKCkKKworCisjIEluZGljYXRlIHRoZSBlbmQg
b2YgTExJbnQuCitfbGxpbnRfZW5kOgorICAgIGNyYXNoKCkKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5o
IgorCisjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgorCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMb3dMZXZlbEludGVycHJldGVyX2gKKyNkZWZpbmUg
TG93TGV2ZWxJbnRlcnByZXRlcl9oCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworI2RlZmluZSBM
TElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29kZSwgbGVuZ3RoKSBleHRlcm4gIkMiIHZvaWQgbGxp
bnRfIyNvcGNvZGUoKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoTExJTlRfSU5TVFJVQ1RJT05f
REVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJVQ1RJT05fREVDTAorCitleHRlcm4gIkMiIHZvaWQg
bGxpbnRfYmVnaW4oKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9lbmQoKTsKK2V4dGVybiAiQyIg
dm9pZCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZXZh
bF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3By
b2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9w
cm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9h
cml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50
KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSgp
OworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUoKTsK
KworI2VuZGlmIC8vIExvd0xldmVsSW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTMg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2NsYXNzIFNwZWNpYWxS
ZWdpc3RlcgorICBkZWYgaW5pdGlhbGl6ZShuYW1lKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQK
KyAgCisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBAbmFtZQorICBlbmQKK2VuZAorCitBUk12N19E
QVRBX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoImlwIikKK0FSTXY3X0FERFJfUkVHID0gU3Bl
Y2lhbFJlZ2lzdGVyLm5ldygicjMiKQorCitkZWYgbW92ZUltbWVkaWF0ZSh2YWx1ZSwgcmVnaXN0
ZXIpCisgICMgQ3VycmVudGx5IHdlIG9ubHkgaGFuZGxlIHRoZSBzaW1wbGUgY2FzZXMsIGFuZCBm
YWxsIGJhY2sgdG8gbW92L21vdnQgZm9yIHRoZSBjb21wbGV4IG9uZXMuCisgIGlmIHZhbHVlID49
IDAgJiYgdmFsdWUgPCAyNTYKKyAgICAkYXNtLnB1dHMgIm1vdncgXCMje3ZhbHVlfSwgI3tyZWdp
c3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNpZiAofnZhbHVlKSA+PSAwICYmICh+dmFsdWUpIDwg
MjU2CisgICAgJGFzbS5wdXRzICJtdm53IFwjI3t+dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3Bl
cmFuZH0iCisgIGVsc2UKKyAgICAkYXNtLnB1dHMgIm1vdncgXCMje3ZhbHVlICYgMHhmZmZmfSwg
I3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAgIGlmICh2YWx1ZSAmIDB4ZmZmZjAwMDApICE9
IDAKKyAgICAgICRhc20ucHV0cyAibW92dCBcIyN7dmFsdWUgPj4gMTZ9LCAje3JlZ2lzdGVyLmFy
bVY3T3BlcmFuZH0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAg
ZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIw
IgorICAgICAgInIwIgorICAgIHdoZW4gInQxIiwgImExIiwgInIxIgorICAgICAgInIxIgorICAg
IHdoZW4gInQyIiwgImEyIgorICAgICAgInIyIgorICAgIHdoZW4gImEzIgorICAgICAgInIzIgor
ICAgIHdoZW4gInQzIgorICAgICAgInI0IgorICAgIHdoZW4gInQ0IgorICAgICAgInI3IgorICAg
IHdoZW4gImNmciIKKyAgICAgICJyNSIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5k
CisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQK
KyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgeWllbGQKKyAgZW5kCitl
bmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5h
bWUKKyAgICB3aGVuICJmdDAiLCAiZnIiCisgICAgICAiZDAiCisgICAgd2hlbiAiZnIxIiwKKyAg
ICAgICJkMSIKKyAgICB3aGVuICJmcjIiCisgICAgICAiZDIiCisgICAgd2hlbiAiZnIzIgorICAg
ICAgImQzIgorICAgIHdoZW4gImZyNCIKKyAgICAgICJkNCIKKyAgICB3aGVuICJmcjUiCisgICAg
ICAiZDUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYg
YXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3
UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVm
IGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3Mg
SW1tZWRpYXRlCisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICByYWlzZSAiSW52YWxpZCBpbW1lZGlh
dGUgI3t2YWx1ZX0iIGlmIHZhbHVlIDwgMCBvciB2YWx1ZSA+IDI1NQorICAgICIjJHt2YWx1ZX0i
CisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBl
bmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFu
ZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZCBzZWxmCisg
IGVuZAorZW5kCisKK21vZHVsZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKyAgZGVmIGFybVY3TG9h
ZFN0b3JlV3JhcAorICAgIHNlbGYuYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisg
ICAgJGFzbS5wdXRzICJcdGxkciAje3NlbGYuYXJtVjdQb3NzaWJseU1lbW9yeU9wZXJhbmR9LCAj
e0FSTXY3X0RBVEFfUkVHLmFybVY3T3BlcmFuZH0iCisgICAgeWllbGQgQVJNdjdfREFUQV9SRUcK
KyAgICAkYXNtLnB1dHMgIlx0c3RyICN7QVJNdjdfREFUQV9SRUcuYXJtVjdPcGVyYW5kfSwgI3tz
ZWxmLmFybVY3UG9zc2libHlNZW1vcnlPcGVyYW5kfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRk
cmVzcworICBpbmNsdWRlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworCisgIGRlZiBhcm1WN1ByZXBh
cmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiB8fCBv
ZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgbW92ZUltbWVkaWF0ZShvZmZzZXQudmFsdWUsIEFS
TXY3X0FERFJfUkVHKQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVt
b3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+
IDB4ZmZmCisgICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje0FSTXY3X0FERFJfUkVHLmFy
bVY3T3BlcmFuZH1dIgorICAgIGVsc2UKKyAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7
b2Zmc2V0LmFybVY3T3BlcmFuZH1dIgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBCYXNl
SW5kZXgKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKworICBkZWYgYXJtVjdQcmVw
YXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAg
IG1vdmVJbW1lZGlhdGUob2Zmc2V0LnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgICAgICRhc20u
cHV0cyAiYWRkdyAje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09w
ZXJhbmR9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3Bl
cmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICAiWyN7QVJNdjdfQUREUl9SRUcu
YXJtVjdPcGVyYW5kfSwgI3tpbmRleC5hcm1WN09wZXJhbmR9LCBsc2wgXCMje3NjYWxlfV0iCisg
ICAgZWxzZQorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tpbmRleC5hcm1WN09wZXJh
bmR9LCBsc2wgXCMje3NjYWxlfV0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29s
dXRlQWRkcmVzcworICBpbmNsdWRlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworICAKKyAgZGVmIGFy
bVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIG1vdmVJbW1lZGlhdGUoYWRkcmVz
cy52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVN
ZW1vcnlPcGVyYW5kCisgICAgIlsje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH1dIgorICBl
bmQKK2VuZAorCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA4IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShf
X0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3Jl
cXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZXR0aW5ncyIKK3Jl
cXVpcmUgInRyYW5zZm9ybSIKKworY2xhc3MgQXNzZW1ibGVyCisgIGRlZiBpbml0aWFsaXplKG91
dHApCisgICAgQG91dHAgPSBvdXRwCisgICAgQHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRl
ZiBlbnRlckFzbQorICAgIEBvdXRwLnB1dHMgImFzbSAoIgorICAgIEBzdGF0ZSA9IDphc20KKyAg
ZW5kCisgIAorICBkZWYgbGVhdmVBc20KKyAgICBAb3V0cC5wdXRzICIpOyIKKyAgICBAc3RhdGUg
PSA6Y3BwCisgIGVuZAorICAKKyAgZGVmIGluQXNtCisgICAgZW50ZXJBc20KKyAgICB5aWVsZAor
ICAgIGxlYXZlQXNtCisgIGVuZAorICAKKyAgZGVmIHB1dHMobGluZSkKKyAgICByYWlzZSB1bmxl
c3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wdXRzKChsaW5lICsgIlxuIikuaW5zcGVjdCkK
KyAgZW5kCisgIAorICBkZWYgY29tbWVudCh0ZXh0KQorICAgIEBvdXRwLnB1dHMgIi8vICN7dGV4
dH0iCisgIGVuZAorZW5kCisKK2FzbUZpbGUgPSBBUkdWLnNoaWZ0CitvZmZzZXRzRmlsZSA9IEFS
R1Yuc2hpZnQKK291dHB1dEZsbm0gPSBBUkdWLnNoaWZ0CisKK29mZnNldHNMaXN0LCBjb25maWdJ
bmRleCA9IG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgob2Zmc2V0c0ZpbGUpCitpbnB1dERh
dGEgPSBJTzo6cmVhZChhc21GaWxlKQorCitpbnB1dEhhc2ggPQorICAiLy8gb2ZmbGluZWFzbSBp
bnB1dCBoYXNoOiAiICsgRGlnZXN0OjpTSEExLmhleGRpZ2VzdChpbnB1dERhdGEpICsKKyAgIiAi
ICsgRGlnZXN0OjpTSEExLmhleGRpZ2VzdCgob2Zmc2V0c0xpc3QgKyBbY29uZmlnSW5kZXhdKS5q
b2luKCcgJykpCisKK2lmIEZpbGVUZXN0LmV4aXN0PyBvdXRwdXRGbG5tCisgIEZpbGUub3Blbihv
dXRwdXRGbG5tLCAiciIpIHsKKyAgICB8IGlucCB8CisgICAgZmlyc3RMaW5lID0gaW5wLmdldHMK
KyAgICBpZiBmaXJzdExpbmUgYW5kIGZpcnN0TGluZS5jaG9tcCA9PSBpbnB1dEhhc2gKKyAgICAg
ICRzdGRlcnIucHV0cyAiTm90aGluZyBjaGFuZ2VkLiIKKyAgICAgIGV4aXQgMAorICAgIGVuZAor
ICB9CitlbmQKKworRmlsZS5vcGVuKG91dHB1dEZsbm0sICJ3IikgeworICB8IG91dHAgfAorICAk
b3V0cHV0ID0gb3V0cAorICAkb3V0cHV0LnB1dHMgaW5wdXRIYXNoCisgIAorICAkYXNtID0gQXNz
ZW1ibGVyLm5ldygkb3V0cHV0KQorICAKKyAgYXN0ID0gcGFyc2UobGV4KGlucHV0RGF0YSkpCisg
IAorICBmb3JTZXR0aW5ncyhjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KVtjb25maWdJ
bmRleF0sIGFzdCkgeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tl
bmQgfAorICAgIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAgICBsb3dM
ZXZlbEFTVCA9IGxvd0xldmVsQVNULnJlc29sdmUoKmJ1aWxkT2Zmc2V0c01hcChsb3dMZXZlbEFT
VCwgb2Zmc2V0c0xpc3QpKQorICAgIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0
dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kKSB7CisgICAgICAkYXNtLmluQXNtIHsKKyAgICAg
ICAgbG93TGV2ZWxBU1QubG93ZXIoYmFja2VuZCkKKyAgICAgIH0KKyAgICB9CisgIH0KK30KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODE3IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBCYXNlIHV0aWxpdHkgdHlwZXMgZm9y
IHRoZSBBU1QuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIFZhbGlkIG1ldGhvZHMgZm9yIE5vZGU6Cisj
CisjIG5vZGUuY2hpbGRyZW4gLT4gUmV0dXJucyBhbiBhcnJheSBvZiBpbW1lZGlhdGUgY2hpbGRy
ZW4uCisjCisjIG5vZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgc3Ry
aWN0IGRlc2NlbmRhbnRzIChjaGlsZHJlbgorIyAgICAgYW5kIGNoaWxkcmVuIG9mIGNoaWxkcmVu
LCB0cmFuc2l0aXZlbHkpLgorIworIyBub2RlLmZsYXR0ZW4gLT4gUmV0dXJucyBhbiBhcnJheSBj
b250YWluaW5nIHRoZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5kCisjICAgICB0aGUgbm9kZSBpdHNl
bGYuCisjCisjIG5vZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmlu
ZyB0aG9zZSBlbGVtZW50cyBpbgorIyAgICAgbm9kZS5mbGF0dGVuIHRoYXQgYXJlIG9mIHRoZSBn
aXZlbiB0eXBlIChpc19hPyB0eXBlIHJldHVybnMgdHJ1ZSkuCisjCisjIG5vZGUubWFwQ2hpbGRy
ZW57fHZ8IC4uLn0gLT4gUmV0dXJucyBhIG5ldyBub2RlIHdpdGggYWxsIGNoaWxkcmVuCisjICAg
ICByZXBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJsb2NrLgorIworIyBFeGFtcGxlczoK
KyMKKyMgbm9kZS5maWx0ZXIoU2V0dGluZykudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc2V0
dGluZ3MgdGhhdCB0aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVsc2UgYmxvY2tzIGRlcGVuZCBvbi4K
KyMKKyMgbm9kZS5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRo
ZSBzdHJ1Y3R1cmUgb2Zmc2V0cworIyAgICAgdGhhdCB0aGUgQVNUIGRlcGVuZHMgb24uCisKK2Ns
YXNzIE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4pCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgIGVuZAorICAKKyAg
ZGVmIGNvZGVPcmlnaW5TdHJpbmcKKyAgICAibGluZSBudW1iZXIgI3tAY29kZU9yaWdpbn0iCisg
IGVuZAorICAKKyAgZGVmIGRlc2NlbmRhbnRzCisgICAgY2hpbGRyZW4uY29sbGVjdHt8dnwgdi5m
bGF0dGVufS5mbGF0dGVuCisgIGVuZAorICAKKyAgZGVmIGZsYXR0ZW4KKyAgICBbc2VsZl0gKyBk
ZXNjZW5kYW50cworICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIodHlwZSkKKyAgICBmbGF0dGVuLnNl
bGVjdHt8dnwgdi5pc19hPyB0eXBlfQorICBlbmQKK2VuZAorCitjbGFzcyBOb0NoaWxkcmVuIDwg
Tm9kZQorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW10KKyAgZW5kCisgIAorICBkZWYgbWFw
Q2hpbGRyZW4KKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldEtleQor
ICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKHN0cnVj
dCwgZmllbGQpCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVu
ZAorICAKKyAgZGVmIGhhc2gKKyAgICBAc3RydWN0Lmhhc2ggKyBAZmllbGQuaGFzaCAqIDMKKyAg
ZW5kCisgIAorICBkZWYgZXFsPyhvdGhlcikKKyAgICBAc3RydWN0ID09IG90aGVyLnN0cnVjdCBh
bmQgQGZpZWxkID09IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisgICAgCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBBU1Qgbm9kZXMuICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworCitjbGFzcyBTdHJ1Y3RPZmZzZXQgPCBOb0NoaWxkcmVuCisgIGF0dHJf
cmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
c3RydWN0LCBmaWVsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1
Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAor
ICBkZWYgc2VsZi5mb3JGaWVsZChjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGtleSA9
IFN0cnVjdE9mZnNldEtleS5uZXcoc3RydWN0LCBmaWVsZCkKKyAgICAKKyAgICB1bmxlc3MgQEBt
YXBwaW5nW2tleV0KKyAgICAgIEBAbWFwcGluZ1trZXldID0gU3RydWN0T2Zmc2V0Lm5ldyhjb2Rl
T3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1trZXldCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tzdHJ1Y3R9Ojoje2ZpZWxkfSIKKyAgZW5kCisgIAor
ICBkZWYgPD0+KG90aGVyKQorICAgIGlmIEBzdHJ1Y3QgIT0gb3RoZXIuc3RydWN0CisgICAgICBy
ZXR1cm4gQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgICAgZW5kCisgICAgQGZpZWxkIDw9PiBv
dGhlci5maWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YgPCBOb0NoaWxkcmVuCisgIGF0
dHJfcmVhZGVyIDpzdHJ1Y3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVj
dCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgZW5kCisg
IAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBz
dHJ1Y3QpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tzdHJ1Y3RdCisgICAgICBAQG1hcHBpbmdbc3Ry
dWN0XSA9IFNpemVvZi5uZXcoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIGVuZAorICAgIEBAbWFw
cGluZ1tzdHJ1Y3RdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAic2l6ZW9mICN7QHN0cnVj
dH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAgICBAc3RydWN0IDw9PiBvdGhlci5z
dHJ1Y3QKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlIDwgTm9DaGlsZHJlbgorICBhdHRy
X3JlYWRlciA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhbHVlKQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICIje3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYgPT0ob3RoZXIpCisgICAg
b3RoZXIuaXNfYT8gSW1tZWRpYXRlIGFuZCBvdGhlci52YWx1ZSA9PSBAdmFsdWUKKyAgZW5kCitl
bmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpy
aWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAor
ICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAg
CisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5
aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
Iigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgU3Vi
SW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbgorICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5
aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0g
LSAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcyA8IE5v
ZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9
IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE11bElt
bWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKiAje3JpZ2h0LmR1bXB9
KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlIDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBbQGNoaWxkXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5l
Z0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiKC0je0BjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFJl
Z2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5h
bWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZv
ck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAg
ICBAQG1hcHBpbmdbbmFtZV0gPSBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAg
IGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFt
ZQorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJf
cmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBw
aW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1
bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBGUFJlZ2lzdGVy
SUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlh
YmxlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0g
bmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1l
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBt
YXBwaW5nW25hbWVdID0gVmFyaWFibGUubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisg
ICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVu
ZAorZW5kCisKK2NsYXNzIEFkZHJlc3MgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6b2Zm
c2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBvZmZzZXQpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BiYXNlLCBAb2Zmc2V0XQorICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sICh5aWVs
ZCBAYmFzZSksICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIj
e29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH1dIgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5k
ZXggPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6aW5kZXgsIDpzY2FsZSwgOm9mZnNldAor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZz
ZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAaW5kZXgg
PSBpbmRleAorICAgIEBzY2FsZSA9IHNjYWxlCisgICAgcmFpc2UgdW5sZXNzIFsxLCAyLCA0LCA4
XS5tZW1iZXI/IEBzY2FsZQorICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBbQGJhc2UsIEBpbmRleCwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSks
ICh5aWVsZCBAaW5kZXgpLCBAc2NhbGUsICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH0sICN7aW5kZXguZHVtcH0s
ICN7c2NhbGV9XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzIDwgTm9DaGls
ZHJlbgorICBhdHRyX3JlYWRlciA6YWRkcmVzcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgYWRkcmVzcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBhZGRyZXNzID0gYWRk
cmVzcworICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7YWRkcmVzcy5kdW1wfVtdIgorICBl
bmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbiA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm9wY29k
ZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBvcGNvZGUsIG9w
ZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG9wY29kZSA9IG9wY29kZQorICAg
IEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgb3Bl
cmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgSW5zdHJ1Y3Rp
b24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgIlx0IiArIG9wY29kZS50b19zICsgIiAiICsgb3BlcmFuZHMu
Y29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCisgIGVuZAorZW5kCisKK2NsYXNzIEVycm9y
IDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRlcnJvciIKKyAgZW5kCitl
bmQKKworY2xhc3MgQ29uc3REZWNsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6dmFyaWFibGUsIDp2
YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhcmlhYmxlID0gdmFyaWFibGUKKyAgICBAdmFs
dWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAdmFyaWFibGUsIEB2
YWx1ZV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBDb25zdERlY2wubmV3KGNv
ZGVPcmlnaW4sICh5aWVsZCBAdmFyaWFibGUpLCAoeWllbGQgQHZhbHVlKSkKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICJjb25zdCAje0B2YXJpYWJsZS5kdW1wfSA9ICN7QHZhbHVlLmR1bXB9
IgorICBlbmQKK2VuZAorCiskbGFiZWxNYXBwaW5nID0ge30KKworY2xhc3MgTGFiZWwgPCBOb0No
aWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVu
ZAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJl
bE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1l
fSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTGFiZWwKKyAgICBlbHNlCisgICAg
ICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
ZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
IiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsIDwgTm9DaGlsZHJlbgor
ICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFt
ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKworICBA
QHVuaXF1ZU5hbWVDb3VudGVyID0gMAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2lu
LCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBu
YW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8g
TG9jYWxMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBMb2NhbExh
YmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFt
ZV0KKyAgZW5kCisgIAorICBkZWYgc2VsZi51bmlxdWUoY29tbWVudCkKKyAgICBuZXdOYW1lID0g
Il8je2NvbW1lbnR9IgorICAgIGlmICRsYWJlbE1hcHBpbmdbbmV3TmFtZV0KKyAgICAgIHdoaWxl
ICRsYWJlbE1hcHBpbmdbbmV3TmFtZSA9ICJfI3tAQHVuaXF1ZU5hbWVDb3VudGVyfV8je2NvbW1l
bnR9Il0KKyAgICAgICAgQEB1bmlxdWVOYW1lQ291bnRlciArPSAxCisgICAgICBlbmQKKyAgICBl
bmQKKyAgICBmb3JOYW1lKG5pbCwgbmV3TmFtZSkKKyAgZW5kCisgIAorICBkZWYgY2xlYW5OYW1l
CisgICAgaWYgbmFtZSA9fiAvXlwuLworICAgICAgIl8iICsgbmFtZVsxLi4tMV0KKyAgICBlbHNl
CisgICAgICBuYW1lCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1l
fToiCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlIDwgTm9kZQorICBhdHRyX3Jl
YWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAg
IExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxhYmVsKSkKKyAgZW5kCisg
IAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
IGxhYmVsLm5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZSA8IE5v
Q2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBsYWJlbCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsYWJlbCA9IGxhYmVs
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0KKyAgZW5kCisgIAorICBk
ZWYgbWFwQ2hpbGRyZW4KKyAgICBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAo
eWllbGQgQGxhYmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5hbWUKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAgZW5kCitlbmQKKworY2xhc3Mg
U2VxdWVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsaXN0CisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBsaXN0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxpc3QgPSBs
aXN0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgbGlzdAorICBlbmQKKyAgCisgIGRl
ZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgQGxpc3Qu
bWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxpc3QuY29sbGVjdHt8dnwg
di5kdW1wfS5qb2luKCJcbiIpCisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUgPCBOb0NoaWxkcmVu
CisgIGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFu
Y2UgPSBUcnVlLm5ldworICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisg
IGVuZAorICAKKyAgZGVmIHZhbHVlCisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgInRydWUiCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlIDwgTm9DaGlsZHJlbgorICBkZWYg
aW5pdGlhbGl6ZQorICAgIHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNlID0gRmFs
c2UubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisg
IAorICBkZWYgdmFsdWUKKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImZh
bHNlIgorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAgIFRy
dWUuaW5zdGFuY2UKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2VDbGFzcworICBkZWYgYXNOb2Rl
CisgICAgRmFsc2UuaW5zdGFuY2UKKyAgZW5kCitlbmQKKworY2xhc3MgU2V0dGluZyA8IE5vQ2hp
bGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5k
CisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2lu
LCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1l
XSA9IFNldHRpbmcubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5n
W25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2Ns
YXNzIEFuZCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJl
bgorICAgIEFuZC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkp
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBhbmQgI3tyaWdodC5k
dW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE9yIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVm
dCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJp
Z2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVu
ZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgT3IubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBA
bGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xl
ZnQuZHVtcH0gb3IgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE5vdCA8IE5v
ZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAg
ZGVmIG1hcENoaWxkcmVuCisgICAgTm90Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxkKSkK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIobm90ICN7Y2hpbGQuZHVtcH0pIgorICBlbmQK
K2VuZAorCitjbGFzcyBTa2lwIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
XHRza2lwIgorICBlbmQKK2VuZAorCitjbGFzcyBJZlRoZW5FbHNlIDwgTm9kZQorICBhdHRyX3Jl
YWRlciA6cHJlZGljYXRlLCA6dGhlbkNhc2UKKyAgYXR0cl9hY2Nlc3NvciA6ZWxzZUNhc2UKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgdGhlbkNhc2UpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAcHJlZGljYXRlID0gcHJlZGljYXRlCisgICAgQHRoZW5D
YXNlID0gdGhlbkNhc2UKKyAgICBAZWxzZUNhc2UgPSBTa2lwLm5ldyhjb2RlT3JpZ2luKQorICBl
bmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIGlmIEBlbHNlQ2FzZQorICAgICAgW0BwcmVkaWNh
dGUsIEB0aGVuQ2FzZSwgQGVsc2VDYXNlXQorICAgIGVsc2UKKyAgICAgIFtAcHJlZGljYXRlLCBA
dGhlbkNhc2VdCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgSWZU
aGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBwcmVkaWNhdGUpLCAoeWllbGQgQHRoZW5D
YXNlKSwgKHlpZWxkIEBlbHNlQ2FzZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiaWYg
I3twcmVkaWNhdGUuZHVtcH1cbiIgKyB0aGVuQ2FzZS5kdW1wICsgIlxuZWxzZVxuIiArIGVsc2VD
YXNlLmR1bXAgKyAiXG5lbmQiCisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvIDwgTm9kZQorICBh
dHRyX3JlYWRlciA6bmFtZSwgOnZhcmlhYmxlcywgOmJvZHkKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBuYW1lID0gbmFtZQorICAgIEB2YXJpYWJsZXMgPSB2YXJpYWJsZXMKKyAgICBAYm9k
eSA9IGJvZHkKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAdmFyaWFibGVzICsgW0Bi
b2R5XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE1hY3JvLm5ldyhjb2RlT3Jp
Z2luLCBAbmFtZSwgQHZhcmlhYmxlcy5tYXB7fHZ8IHlpZWxkIHZ9LCAoeWllbGQgQGJvZHkpKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIm1hY3JvICN7bmFtZX0oIiArIHZhcmlhYmxlcy5j
b2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKVxuIiArIGJvZHkuZHVtcCArICJcbmVu
ZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm9DYWxsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6
bmFtZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCBv
cGVyYW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAgIEBv
cGVyYW5kcyA9IG9wZXJhbmRzCisgICAgcmFpc2UgdW5sZXNzIEBvcGVyYW5kcworICAgIEBvcGVy
YW5kcy5lYWNoe3x2fCByYWlzZSB1bmxlc3Mgdn0KKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4K
KyAgICBAb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAg
TWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHQje25hbWV9KCIgKyBvcGVyYW5kcy5jb2xsZWN0
e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKSIKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw4MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAieDg2IgorCitCQUNLRU5EUyA9CisgIFsKKyAgICJY
ODYiLAorICAgIkFSTXY3IgorICBdCisKK1dPUktJTkdfQkFDS0VORFMgPQorICBbCisgICAiWDg2
IgorICBdCisKK0JBQ0tFTkRfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgnICsgQkFDS0VORFMu
am9pbignKXwoJykgKyAnKVxcWicpCisKK2NsYXNzIE5vZGUKKyAgZGVmIGxvd2VyKG5hbWUpCisg
ICAgc2VuZCgibG93ZXIiICsgbmFtZSkKKyAgZW5kCitlbmQKKworIyBPdmVycmlkZXMgZm9yIGxv
d2VyKCkgZm9yIHRob3NlIG5vZGVzIHRoYXQgYXJlIGJhY2tlbmQtYWdub3N0aWMKKworZGVmIHNh
bml0aXplTGFiZWxOYW1lKG5hbWUpCisgICMgU29tZSBwbGF0Zm9ybXMgZG9uJ3Qgd2FudCB0aGUg
bGVhZGluZyAiXyIuIElmIHdlIGV2ZXIgd2FudCB0byBkbyBzb21ldGhpbmcKKyAgIyBhYm91dCB0
aGF0LCBpdCB3b3VsZCBiZSBoZXJlLgorICBuYW1lCitlbmQKKworY2xhc3MgTGFiZWwKKyAgZGVm
IGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzICIuZ2xvYmwgI3tzYW5pdGl6ZUxhYmVsTmFtZShz
ZWxmLm5hbWUpfSIKKyAgICAkYXNtLnB1dHMgIiN7c2FuaXRpemVMYWJlbE5hbWUoc2VsZi5uYW1l
KX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQor
ICAgICRhc20ucHV0cyAiTF9vZmZsaW5lYXNtXyN7c2VsZi5uYW1lWzEuLi0xXX06IgorICBlbmQK
K2VuZAorCitjbGFzcyBTa2lwCisgIGRlZiBsb3dlcihuYW1lKQorICBlbmQKK2VuZAorCitjbGFz
cyBTZXF1ZW5jZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwg
bm9kZSB8CisgICAgICBub2RlLmxvd2VyKG5hbWUpCisgICAgfQorICBlbmQKK2VuZAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFj
dG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDg3IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykK
KworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9m
ZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRy
YW5zZm9ybSIKKworaW5wdXRGbG5tID0gQVJHVi5zaGlmdAorb3V0cHV0RmxubSA9IEFSR1Yuc2hp
ZnQKKworZGVmIGVtaXRNYWdpY051bWJlcgorICBPRkZTRVRfTUFHSUNfTlVNQkVSUy5lYWNoIHsK
KyAgICB8IG51bWJlciB8CisgICAgJG91dHB1dC5wdXRzICIje251bWJlcn0sIgorICB9CitlbmQK
KworaW5wdXREYXRhID0gSU86OnJlYWQoaW5wdXRGbG5tKQoraW5wdXRIYXNoID0gRGlnZXN0OjpT
SEExLmhleGRpZ2VzdChpbnB1dERhdGEpCisKK2lmIEZpbGVUZXN0LmV4aXN0PyBvdXRwdXRGbG5t
CisgIEZpbGUub3BlbihvdXRwdXRGbG5tLCAiciIpIHsKKyAgICB8IGlucCB8CisgICAgZmlyc3RM
aW5lID0gaW5wLmdldHMKKyAgICBpZiBmaXJzdExpbmUgYW5kIGZpcnN0TGluZS5jaG9tcCA9PSAi
Ly8gb2ZmbGluZWFzbSBpbnB1dCBoYXNoOiAje2lucHV0SGFzaH0iCisgICAgICAkc3RkZXJyLnB1
dHMgIk5vdGhpbmcgY2hhbmdlZC4iCisgICAgICBleGl0IDAKKyAgICBlbmQKKyAgfQorZW5kCisK
K29yaWdpbmFsQVNUID0gcGFyc2UobGV4KGlucHV0RGF0YSkpCisKK0ZpbGUub3BlbihvdXRwdXRG
bG5tLCAidyIpIHsKKyAgfCBvdXRwIHwKKyAgJG91dHB1dCA9IG91dHAKKyAgb3V0cC5wdXRzICIv
LyBvZmZsaW5lYXNtIGlucHV0IGhhc2g6ICN7aW5wdXRIYXNofSIKKyAgZW1pdENvZGVJbkFsbENv
bmZpZ3VyYXRpb25zKG9yaWdpbmFsQVNUKSB7CisgICAgfCBzZXR0aW5ncywgYXN0LCBiYWNrZW5k
LCBpbmRleCB8CisgICAgb2Zmc2V0c0xpc3QgPSBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5p
cS5zb3J0CisgICAgc2l6ZXNMaXN0ID0gYXN0LmZpbHRlcihTaXplb2YpLnVuaXEuc29ydAorICAg
IAorICAgIGxlbmd0aCA9IChPRkZTRVRfTUFHSUNfTlVNQkVSUy5zaXplICsgMSkgKiAoMSArIG9m
ZnNldHNMaXN0LnNpemUgKyBzaXplc0xpc3Quc2l6ZSkKKyAgICAKKyAgICBvdXRwLnB1dHMgInN0
YXRpYyBjb25zdCB1bnNpZ25lZCBleHRyYWN0b3JUYWJsZVsje2xlbmd0aH1dID0geyIKKyAgICBl
bWl0TWFnaWNOdW1iZXIKKyAgICBvdXRwLnB1dHMgIiN7aW5kZXh9LCIKKyAgICBvZmZzZXRzTGlz
dC5lYWNoIHsKKyAgICAgIHwgb2Zmc2V0IHwKKyAgICAgIGVtaXRNYWdpY051bWJlcgorICAgICAg
b3V0cC5wdXRzICJPRkZMSU5FX0FTTV9PRkZTRVRPRigje29mZnNldC5zdHJ1Y3R9LCAje29mZnNl
dC5maWVsZH0pLCIKKyAgICB9CisgICAgc2l6ZXNMaXN0LmVhY2ggeworICAgICAgfCBvZmZzZXQg
fAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICBvdXRwLnB1dHMgInNpemVvZigje29mZnNl
dC5zdHJ1Y3R9KSwiCisgICAgfQorICAgIG91dHAucHV0cyAifTsiCisgIH0KK30KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlv
bnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTg4IEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCitNQUNST19JTlNUUlVDVElPTlMgPQorICBbCisgICAiYWRkaSIs
CisgICAiYW5kaSIsCisgICAibHNoaWZ0aSIsCisgICAibXVsaSIsCisgICAibmVnaSIsCisgICAi
bm90aSIsCisgICAib3JpIiwKKyAgICJyc2hpZnRpIiwKKyAgICJ1cnNoaWZ0aSIsCisgICAic3Vi
aSIsCisgICAieG9yaSIsCisgICAibG9hZGkiLAorICAgImxvYWRiIiwKKyAgICJsb2FkaCIsCisg
ICAic3RvcmVpIiwKKyAgICJzdG9yZWIiLAorICAgImxvYWRkIiwKKyAgICJtb3ZlZCIsCisgICAi
c3RvcmVkIiwKKyAgICJhZGRkIiwKKyAgICJkaXZkIiwKKyAgICJzdWJkIiwKKyAgICJtdWxkIiwK
KyAgICJzcXJ0ZCIsCisgICAiY2kyZCIsCisgICAiZmlpMmQiLCAjIHVzYWdlOiBmaWkyZCA8Z3By
IHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50
IGJpdHM+LCA8ZnByPgorICAgImZkMmlpIiwgIyB1c2FnZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0
aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0
cz4KKyAgICJiZGVxIiwKKyAgICJiZG5lcSIsCisgICAiYmRndCIsCisgICAiYmRndGVxIiwKKyAg
ICJiZGx0IiwKKyAgICJiZGx0ZXEiLAorICAgImJkZXF1biIsCisgICAiYmRuZXF1biIsCisgICAi
YmRndHVuIiwKKyAgICJiZGd0ZXF1biIsCisgICAiYmRsdHVuIiwKKyAgICJiZGx0ZXF1biIsCisg
ICAiYnRkMmkiLAorICAgInRkMmkiLAorICAgImJjZDJpIiwKKyAgICJtb3ZkeiIsCisgICAicG9w
IiwKKyAgICJwdXNoIiwKKyAgICJtb3ZlIiwKKyAgICJzeGkycCIsCisgICAienhpMnAiLAorICAg
Im5vcCIsCisgICAiYmllcSIsCisgICAiYmluZXEiLAorICAgImJpYSIsCisgICAiYmlhZXEiLAor
ICAgImJpYiIsCisgICAiYmliZXEiLAorICAgImJpZ3QiLAorICAgImJpZ3RlcSIsCisgICAiYmls
dCIsCisgICAiYmlsdGVxIiwKKyAgICJiYmVxIiwKKyAgICJiYm5lcSIsCisgICAiYmJhIiwKKyAg
ICJiYmFlcSIsCisgICAiYmJiIiwKKyAgICJiYmJlcSIsCisgICAiYmJndCIsCisgICAiYmJndGVx
IiwKKyAgICJiYmx0IiwKKyAgICJiYmx0ZXEiLAorICAgImJ0aW8iLAorICAgImJ0aXMiLAorICAg
ImJ0aXoiLAorICAgImJ0aW56IiwKKyAgICJidGJvIiwKKyAgICJidGJzIiwKKyAgICJidGJ6IiwK
KyAgICJidGJueiIsCisgICAiam1wIiwKKyAgICJiYWRkaW8iLAorICAgImJhZGRpcyIsCisgICAi
YmFkZGl6IiwKKyAgICJiYWRkaW56IiwKKyAgICJic3ViaW8iLAorICAgImJzdWJpcyIsCisgICAi
YnN1Yml6IiwKKyAgICJic3ViaW56IiwKKyAgICJibXVsaW8iLAorICAgImJtdWxpcyIsCisgICAi
Ym11bGl6IiwKKyAgICJibXVsaW56IiwKKyAgICJib3JpbyIsCisgICAiYm9yaXMiLAorICAgImJv
cml6IiwKKyAgICJib3JpbnoiLAorICAgImJyZWFrIiwKKyAgICJjYWxsIiwKKyAgICJyZXQiLAor
ICAgImNpZXEiLAorICAgImNpbmVxIiwKKyAgICJjaWEiLAorICAgImNpYWVxIiwKKyAgICJjaWIi
LAorICAgImNpYmVxIiwKKyAgICJjaWd0IiwKKyAgICJjaWd0ZXEiLAorICAgImNpbHQiLAorICAg
ImNpbHRlcSIsCisgICAidGlvIiwKKyAgICJ0aXMiLAorICAgInRpeiIsCisgICAidGlueiIsCisg
ICAidGJvIiwKKyAgICJ0YnMiLAorICAgInRieiIsCisgICAidGJueiIsCisgICAicGVlayIsCisg
ICAicG9rZSIsCisgICAiYnBlcSIsCisgICAiYnBuZXEiLAorICAgImJwYSIsCisgICAiYnBhZXEi
LAorICAgImJwYiIsCisgICAiYnBiZXEiLAorICAgImJwZ3QiLAorICAgImJwZ3RlcSIsCisgICAi
YnBsdCIsCisgICAiYnBsdGVxIiwKKyAgICJhZGRwIiwKKyAgICJhbmRwIiwKKyAgICJvcnAiLAor
ICAgInN1YnAiLAorICAgInhvcnAiLAorICAgImxvYWRwIiwKKyAgICJjcGVxIiwKKyAgICJjcG5l
cSIsCisgICAiY3BhIiwKKyAgICJjcGFlcSIsCisgICAiY3BiIiwKKyAgICJjcGJlcSIsCisgICAi
Y3BndCIsCisgICAiY3BndGVxIiwKKyAgICJjcGx0IiwKKyAgICJjcGx0ZXEiLAorICAgInN0b3Jl
cCIsCisgICAiYnRwbyIsCisgICAiYnRwcyIsCisgICAiYnRweiIsCisgICAiYnRwbnoiLAorICAg
ImJhZGRwbyIsCisgICAiYmFkZHBzIiwKKyAgICJiYWRkcHoiLAorICAgImJhZGRwbnoiCisgIF0K
KworWDg2X0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJjZHFpIiwKKyAgICJpZGl2aSIKKyAgXQor
CitJTlNUUlVDVElPTlMgPSBNQUNST19JTlNUUlVDVElPTlMgKyBYODZfSU5TVFJVQ1RJT05TCisK
K0lOU1RSVUNUSU9OX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMu
am9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRf
ZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworTUFHSUNfTlVNQkVSUyA9IFsgMHhl
YzU3N2FjNywgMHgwZmY1ZTc1NSBdCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vb2Zmc2V0cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTYgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3Jl
cXVpcmUgIm9mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzIgorCitPRkZTRVRfTUFHSUNfTlVNQkVS
UyA9IFsgMHhlYzU3N2FjNywgMHgwZmY1ZTc1NSBdCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIG9mZnNldHNMaXN0KGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgc2l6ZXNMaXN0KGFzdCkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIFJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhlIEFT
VC4gICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK
K2RlZiBvZmZzZXRzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNv
cnQKK2VuZAorCitkZWYgc2l6ZXNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTaXplb2YpLnVuaXEu
c29ydAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG9mZnNldHNB
bmRDb25maWd1cmF0aW9uSW5kZXgoYXN0LCBmaWxlKSAtPiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgICAgIFtvZmZzZXRzLCBpbmRleF0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFBhcnNlcyB0aGUgb2Zm
c2V0cyBmcm9tIGEgZmlsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgdGhlICMK
KyMgaW5kZXggb2YgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB2YWxpZCBpbiB0aGlzIGJ1aWxk
IHRhcmdldC4gICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVm
IG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgoZmlsZSkKKyAgaW5kZXggPSBuaWwKKyAgb2Zm
c2V0cyA9IFtdCisgIGVuZGlhbm5lc3NNYXJrZXJCeXRlcyA9IG5pbAorICAKKyAgZGVmIHJlYWRJ
bnQoZW5kaWFubmVzcywgaW5wKQorICAgIGJ5dGVzID0gW10KKyAgICA0LnRpbWVzIHsKKyAgICAg
IGJ5dGVzIDw8IGlucC5nZXRieXRlCisgICAgfQorICAgIAorICAgIGlmIGVuZGlhbm5lc3MgPT0g
OmxpdHRsZQorICAgICAgIyBMaXR0bGUgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMCB8Cisg
ICAgICAgYnl0ZXNbMV0gPDwgOCB8CisgICAgICAgYnl0ZXNbMl0gPDwgMTYgfAorICAgICAgIGJ5
dGVzWzNdIDw8IDI0KQorICAgIGVsc2UKKyAgICAgICMgQmlnIGVuZGlhbgorICAgICAgKGJ5dGVz
WzBdIDw8IDI0IHwKKyAgICAgICBieXRlc1sxXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbMl0gPDwg
OCB8CisgICAgICAgYnl0ZXNbM10gPDwgMCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBbOmxpdHRs
ZSwgOmJpZ10uZWFjaCB7CisgICAgfCBlbmRpYW5uZXNzIHwKKyAgICBtYWdpY0J5dGVzID0gW10K
KyAgICBNQUdJQ19OVU1CRVJTLmVhY2ggeworICAgICAgfCBudW1iZXIgfAorICAgICAgY3VycmVu
dEJ5dGVzID0gW10KKyAgICAgIDQudGltZXMgeworICAgICAgICBjdXJyZW50Qnl0ZXMgPDwgKG51
bWJlciAmIDB4ZmYpCisgICAgICAgIG51bWJlciA+Pj0gOAorICAgICAgfQorICAgICAgaWYgZW5k
aWFubmVzcyA9PSA6YmlnCisgICAgICAgIGN1cnJlbnRCeXRlcy5yZXZlcnNlIQorICAgICAgZW5k
CisgICAgICBtYWdpY0J5dGVzICs9IGN1cnJlbnRCeXRlcworICAgIH0KKyAgICAKKyAgICBGaWxl
Lm9wZW4oZmlsZSwgInIiKSB7CisgICAgICB8IGlucCB8CisgICAgICB3aGVyZUluTWFya2VyID0g
MAorICAgICAgbG9vcCB7CisgICAgICAgIGJ5dGUgPSBpbnAuZ2V0Ynl0ZQorICAgICAgICBicmVh
ayB1bmxlc3MgYnl0ZQorICAgICAgICBpZiBieXRlID09IG1hZ2ljQnl0ZXNbd2hlcmVJbk1hcmtl
cl0KKyAgICAgICAgICB3aGVyZUluTWFya2VyICs9IDEKKyAgICAgICAgICBpZiB3aGVyZUluTWFy
a2VyID09IG1hZ2ljQnl0ZXMuc2l6ZQorICAgICAgICAgICAgIyBXZSBoYXZlIGEgbWF0Y2ghIElm
IHdlIGhhdmUgbm90IHlldCByZWFkIHRoZSBlbmRpYW5uZXNzIG1hcmtlciBhbmQgaW5kZXgsCisg
ICAgICAgICAgICAjIHRoZW4gcmVhZCB0aG9zZSBub3c7IG90aGVyd2lzZSByZWFkIGFuIG9mZnNl
dC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgbm90IGluZGV4CisgICAgICAgICAgICAg
IGluZGV4ID0gcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgIG9mZnNldHMgPDwgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAg
ICBlbmQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAg
ICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAg
ICAgIGVuZAorICAgICAgfQorICAgIH0KKyAgICAKKyAgICBicmVhayBpZiBpbmRleAorICB9Cisg
IAorICByYWlzZSB1bmxlc3MgaW5kZXgKKyAgCisgIFtvZmZzZXRzLCBpbmRleF0KK2VuZAorCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBidWlsZE9mZnNldHNNYXAoYXN0LCBv
ZmZzZXRzTGlzdCkgLT4gW29mZnNldHMsIHNpemVzXSAgICAgICAgICAgICAgICAjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgQnVpbGRzIGEgbWFwcGluZyBiZXR3ZWVuIFN0cnVjdE9mZnNldCBub2RlcyBh
bmQgdGhlaXIgdmFsdWVzLiAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKworZGVmIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KQorICBvZmZzZXRzTWFw
ID0ge30KKyAgc2l6ZXNNYXAgPSB7fQorICBhc3RPZmZzZXRzTGlzdCA9IG9mZnNldHNMaXN0KGFz
dCkKKyAgYXN0U2l6ZXNMaXN0ID0gc2l6ZXNMaXN0KGFzdCkKKyAgcmFpc2UgdW5sZXNzIGFzdE9m
ZnNldHNMaXN0LnNpemUgKyBhc3RTaXplc0xpc3Quc2l6ZSA9PSBvZmZzZXRzTGlzdC5zaXplCisg
IG9mZnNldHNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHN0cnVjdE9mZnNldCwg
aW5kZXggfAorICAgIG9mZnNldHNNYXBbc3RydWN0T2Zmc2V0XSA9IG9mZnNldHNMaXN0LnNoaWZ0
CisgIH0KKyAgc2l6ZXNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHNpemVvZiwg
aW5kZXggfAorICAgIHNpemVzTWFwW3NpemVvZl0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9Cisg
IFtvZmZzZXRzTWFwLCBzaXplc01hcF0KK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9wYXJzZXIucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5MSBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0Igor
cmVxdWlyZSAiaW5zdHJ1Y3Rpb25zIgorcmVxdWlyZSAicmVnaXN0ZXJzIgorCitjbGFzcyBUb2tl
bgorICBhdHRyX3JlYWRlciA6Y29kZU9yaWdpbiwgOnN0cmluZworICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgc3RyaW5nKQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICAg
IEBzdHJpbmcgPSBzdHJpbmcKKyAgZW5kCisgIAorICBkZWYgPT0ob3RoZXIpCisgICAgaWYgb3Ro
ZXIuaXNfYT8gVG9rZW4KKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIuc3RyaW5nCisgICAgZWxzZQor
ICAgICAgQHN0cmluZyA9PSBvdGhlcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiA9fihvdGhl
cikKKyAgICBAc3RyaW5nID1+IG90aGVyCisgIGVuZAorICAKKyAgZGVmIHRvX3MKKyAgICAiI3tA
c3RyaW5nLmluc3BlY3R9IGF0IGxpbmUgI3tjb2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYg
cGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgcmFpc2Ug
IlBhcnNlIGVycm9yOiAje3RvX3N9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJQYXJzZSBlcnJv
cjogI3t0b19zfTogI3tjb21tZW50WzBdfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIGxleGVyLiBUYWtlcyBhIHN0cmluZyBh
bmQgcmV0dXJucyBhbiBhcnJheSBvZiB0b2tlbnMuICAgICAgICAgICAgIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGxleChzdHIpCisgIHJlc3VsdCA9IFtdCisgIGxp
bmVOdW1iZXIgPSAxCisgIHdoaWxlIG5vdCBzdHIuZW1wdHk/CisgICAgY2FzZSBzdHIKKyAgICB3
aGVuIC9cQVwjKFteXG5dKikvCisgICAgICAjIGNvbW1lbnQsIGlnbm9yZQorICAgIHdoZW4gL1xB
XG4vCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAgbGlu
ZU51bWJlciArPSAxCisgICAgd2hlbiAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKS8KKyAgICAg
IHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFcLihbYS16
QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisg
ICAgd2hlbiAvXEFfKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhs
aW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQShbIFx0XSspLworICAgICAgIyB3aGl0ZXNwYWNl
LCBpZ25vcmUKKyAgICB3aGVuIC9cQTB4KFswLTlhLWZBLUZdKykvCisgICAgICByZXN1bHQgPDwg
VG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLmhleC50b19zKQorICAgIHdoZW4gL1xBMChbMC03XSsp
LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5vY3QudG9fcykKKyAg
ICB3aGVuIC9cQShbMC05XSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVy
LCAkJikKKyAgICB3aGVuIC9cQTo6LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVt
YmVyLCAkJikKKyAgICB3aGVuIC9cQVs6LFwoXClcW1xdPVwrXC0qXS8KKyAgICAgIHJlc3VsdCA8
PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgZWxzZQorICAgICAgcmFpc2UgIkxleGVy
IGVycm9yIGF0IGxpbmUgbnVtYmVyICN7bGluZU51bWJlcn0sIHVuZXhwZWN0ZWQgc2VxdWVuY2Ug
I3tzdHJbMC4uMjBdLmluc3BlY3R9IgorICAgIGVuZAorICAgIHN0ciA9ICR+LnBvc3RfbWF0Y2gK
KyAgZW5kCisgIHJlc3VsdAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIFRva2VuIGlkZW50aWZpY2F0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Rl
ZiBpc1JlZ2lzdGVyKHRva2VuKQorICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOCitlbmQKKwor
ZGVmIGlzSW5zdHJ1Y3Rpb24odG9rZW4pCisgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4K
K2VuZAorCitkZWYgaXNLZXl3b3JkKHRva2VuKQorICB0b2tlbiA9fiAvXEEoKHRydWUpfChmYWxz
ZSl8KGlmKXwodGhlbil8KGVsc2UpfChlbHNpZil8KGVuZCl8KGFuZCl8KG9yKXwobm90KXwobWFj
cm8pfChjb25zdCl8KHNpemVvZil8KGVycm9yKSlcWi8gb3IKKyAgICB0b2tlbiA9fiBSRUdJU1RF
Ul9QQVRURVJOIG9yCisgICAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2Rl
ZiBpc0lkZW50aWZpZXIodG9rZW4pCisgIHRva2VuID1+IC9cQVthLXpBLVpdKFthLXpBLVowLTlf
XSopXFovIGFuZCBub3QgaXNLZXl3b3JkKHRva2VuKQorZW5kCisKK2RlZiBpc0xhYmVsKHRva2Vu
KQorICB0b2tlbiA9fiAvXEFfKFthLXpBLVowLTlfXSopXFovCitlbmQKKworZGVmIGlzTG9jYWxM
YWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXC4oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitk
ZWYgaXNWYXJpYWJsZSh0b2tlbikKKyAgaXNJZGVudGlmaWVyKHRva2VuKSBvciBpc1JlZ2lzdGVy
KHRva2VuKQorZW5kCisKK2RlZiBpc0ludGVnZXIodG9rZW4pCisgIHRva2VuID1+IC9cQVswLTld
LworZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBwYXJzZXIu
IFRha2VzIGFuIGFycmF5IG9mIHRva2VucyBhbmQgcmV0dXJucyBhbiBBU1QuIE1ldGhvZHMgICAg
ICMKKyMgb3RoZXIgdGhhbiBwYXJzZSh0b2tlbnMpIGFyZSBub3QgZm9yIHB1YmxpYyBjb25zdW1w
dGlvbi4gICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor
Y2xhc3MgUGFyc2VyCisgIGRlZiBpbml0aWFsaXplKHRva2VucykKKyAgICBAdG9rZW5zID0gdG9r
ZW5zCisgICAgQGlkeCA9IDAKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkK
KyAgICBpZiBAdG9rZW5zW0BpZHhdCisgICAgICBAdG9rZW5zW0BpZHhdLnBhcnNlRXJyb3IoKmNv
bW1lbnQpCisgICAgZWxzZQorICAgICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgICAgcmFpc2Ug
IlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlIgorICAgICAgZWxzZQorICAgICAgICByYWlzZSAi
UGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZpbGU6ICN7Y29tbWVudFswXX0iCisgICAgICBlbmQKKyAg
ICBlbmQKKyAgZW5kCisgIAorICBkZWYgY29uc3VtZShyZWdleHApCisgICAgaWYgcmVnZXhwCisg
ICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID1+IHJlZ2V4cAorICAgIGVsc2UK
KyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEBpZHggPT0gQHRva2Vucy5sZW5ndGgKKyAgICBlbmQK
KyAgICBAaWR4ICs9IDEKKyAgZW5kCisgIAorICBkZWYgc2tpcE5ld0xpbmUKKyAgICB3aGlsZSBA
dG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJub3Qi
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIHBhcnNlUHJlZGljYXRlQXRvbQorICAgIGVsc2lmIEB0
b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisg
ICAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRv
a2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxz
aWYgQHRva2Vuc1tAaWR4XSA9PSAidHJ1ZSIKKyAgICAgIHJlc3VsdCA9IFRydWUuaW5zdGFuY2UK
KyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9
PSAiZmFsc2UiCisgICAgICByZXN1bHQgPSBGYWxzZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAx
CisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAg
ICAgcmVzdWx0ID0gU2V0dGluZy5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRv
a2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVs
c2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVk
aWNhdGVBbmQKKyAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICB3aGlsZSBAdG9r
ZW5zW0BpZHhdID09ICJhbmQiCisgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9
IHBhcnNlUHJlZGljYXRlQXRvbQorICAgICAgcmVzdWx0ID0gQW5kLm5ldyhjb2RlT3JpZ2luLCBy
ZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJz
ZVByZWRpY2F0ZQorICAgICMgc29tZSBleGFtcGxlcyBvZiBwcmVjZWRlbmNlOgorICAgICMgbm90
IGEgYW5kIGIgLT4gKG5vdCBhKSBhbmQgYgorICAgICMgYSBhbmQgYiBvciBjIC0+IChhIGFuZCBi
KSBvciBjCisgICAgIyBhIG9yIGIgYW5kIGMgLT4gYSBvciAoYiBhbmQgYykKKyAgICAKKyAgICBy
ZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIm9y
IgorICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlk
eCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUFu
ZAorICAgICAgcmVzdWx0ID0gT3IubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAg
ZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlVmFyaWFibGUKKyAgICBpZiBp
c1JlZ2lzdGVyKEB0b2tlbnNbQGlkeF0pCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID1+IEZQUl9Q
QVRURVJOCisgICAgICAgIHJlc3VsdCA9IEZQUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBlbHNlCisgICAgICAg
IHJlc3VsdCA9IFJlZ2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0
b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgZW5kCisgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0
b2tlbnNbQGlkeF0pCisgICAgICByZXN1bHQgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgZWxzZQorICAgICAgcGFy
c2VFcnJvcgorICAgIGVuZAorICAgIEBpZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisg
IGRlZiBwYXJzZUFkZHJlc3Mob2Zmc2V0KQorICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNb
QGlkeF0gPT0gIlsiCisgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgor
ICAgIAorICAgICMgVGhyZWUgcG9zc2liaWxpdGllczoKKyAgICAjIFtdICAgICAgIC0+IEFic29s
dXRlQWRkcmVzcworICAgICMgW2FdICAgICAgLT4gQWRkcmVzcworICAgICMgW2EsYl0gICAgLT4g
QmFzZUluZGV4IHdpdGggc2NhbGUgPSAxCisgICAgIyBbYSxiLGNdICAtPiBCYXNlSW5kZXgKKyAg
ICAKKyAgICBAaWR4ICs9IDEKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgQGlk
eCArPSAxCisgICAgICByZXR1cm4gQWJzb2x1dGVBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBvZmZz
ZXQpCisgICAgZW5kCisgICAgYSA9IHBhcnNlVmFyaWFibGUKKyAgICBpZiBAdG9rZW5zW0BpZHhd
ID09ICJdIgorICAgICAgcmVzdWx0ID0gQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgYSwgb2Zmc2V0
KQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwi
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIGIgPSBwYXJzZVZhcmlhYmxlCisgICAgICBpZiBAdG9r
ZW5zW0BpZHhdID09ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmln
aW4sIGEsIGIsIDEsIG9mZnNldCkKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvciB1bmxl
c3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIFsiMSIsICIyIiwgIjQiLCAiOCJdLm1lbWJlcj8gQHRva2Vuc1tAaWR4XS5z
dHJpbmcKKyAgICAgICAgYyA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kKKyAgICAgICAgQGlk
eCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisg
ICAgICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgYywgb2Zmc2V0
KQorICAgICAgZW5kCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAor
ICAKKyAgZGVmIHBhcnNlQ29sb25Db2xvbgorICAgIHNraXBOZXdMaW5lCisgICAgY29kZU9yaWdp
biA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRl
bnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgbmFtZXMgPSBbQHRva2Vuc1tAaWR4XS5zdHJpbmdd
CisgICAgQGlkeCArPSAxCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiOjoiCisgICAgICBA
aWR4ICs9IDEKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0Bp
ZHhdCisgICAgICBuYW1lcyA8PCBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgQGlkeCArPSAx
CisgICAgZW5kCisgICAgcmFpc2UgaWYgbmFtZXMuZW1wdHk/CisgICAgW2NvZGVPcmlnaW4sIG5h
bWVzXQorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgc2tpcE5ld0xp
bmUKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICItIgorICAgICAgQGlkeCArPSAxCisgICAgICBO
ZWdJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHBhcnNlRXhwcmVz
c2lvbkF0b20pCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0g
MQorICAgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uCisgICAgICBwYXJzZUVycm9yIHVubGVz
cyBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAg
ICBlbHNpZiBpc0ludGVnZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gSW1tZWRpYXRl
Lm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kp
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBA
dG9rZW5zW0BpZHhdCisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgor
ICAgICAgaWYgbmFtZXMuc2l6ZSA+IDEKKyAgICAgICAgU3RydWN0T2Zmc2V0LmZvckZpZWxkKGNv
ZGVPcmlnaW4sIG5hbWVzWzAuLi0yXS5qb2luKCc6OicpLCBuYW1lc1stMV0pCisgICAgICBlbHNl
CisgICAgICAgIFZhcmlhYmxlLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXNbMF0pCisgICAgICBl
bmQKKyAgICBlbHNpZiBpc1JlZ2lzdGVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHBhcnNlVmFyaWFi
bGUKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJzaXplb2YiCisgICAgICBAaWR4ICs9IDEK
KyAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBTaXplb2Yu
Zm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lcy5qb2luKCc6OicpKQorICAgIGVsc2UKKyAgICAgIHBh
cnNlRXJyb3IKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uTXVsCisg
ICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgd2hp
bGUgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIioiCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBNdWxJbW1lZGlhdGVzLm5ldyhAdG9r
ZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbkF0b20pCisg
ICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1bHQK
KyAgZW5kCisgIAorICBkZWYgY291bGRCZUV4cHJlc3Npb24KKyAgICBAdG9rZW5zW0BpZHhdID09
ICItIiBvciBAdG9rZW5zW0BpZHhdID09ICJzaXplb2YiIG9yIGlzSW50ZWdlcihAdG9rZW5zW0Bp
ZHhdKSBvciBpc1ZhcmlhYmxlKEB0b2tlbnNbQGlkeF0pIG9yIEB0b2tlbnNbQGlkeF0gPT0gIigi
CisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbgorICAgIHNraXBOZXdMaW5lCisgICAg
cmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uTXVsCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAi
KyIgb3IgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIisi
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBBZGRJbW1lZGlhdGVzLm5ldyhA
dG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkK
KyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICByZXN1bHQgPSBTdWJJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3Jp
Z2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFp
c2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJz
ZU9wZXJhbmQoY29tbWVudCkKKyAgICBpZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgICAgZXhwciA9
IHBhcnNlRXhwcmVzc2lvbgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgICAg
cGFyc2VBZGRyZXNzKGV4cHIpCisgICAgICBlbHNlCisgICAgICAgIGV4cHIKKyAgICAgIGVuZAor
ICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICBwYXJzZUFkZHJlc3MoSW1tZWRp
YXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIDApKQorICAgIGVsc2lmIGlzTGFiZWwg
QHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbiwgTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4s
IEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0Cisg
ICAgZWxzaWYgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IExvY2Fs
TGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgTG9jYWxMYWJlbC5m
b3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQor
ICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9y
KGNvbW1lbnQpCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlTWFjcm9WYXJpYWJsZXMK
KyAgICBza2lwTmV3TGluZQorICAgIGNvbnN1bWUoL1xBXChcWi8pCisgICAgdmFyaWFibGVzID0g
W10KKyAgICBsb29wIHsKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICBpZiBAdG9rZW5zW0BpZHhd
ID09ICIpIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIGlz
SWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICB2YXJpYWJsZXMgPDwgVmFyaWFibGUu
Zm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWYgQHRva2Vu
c1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBicmVhaworICAg
ICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvcgorICAgICAgICBlbmQKKyAgICAgIGVsc2UK
KyAgICAgICAgcGFyc2VFcnJvcgorICAgICAgZW5kCisgICAgfQorICAgIHZhcmlhYmxlcworICBl
bmQKKyAgCisgIGRlZiBwYXJzZVNlcXVlbmNlKGZpbmFsLCBjb21tZW50KQorICAgIGZpcnN0Q29k
ZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIGxpc3QgPSBbXQorICAgIGxv
b3AgeworICAgICAgaWYgKEBpZHggPT0gQHRva2Vucy5sZW5ndGggYW5kIG5vdCBmaW5hbCkgb3Ig
KGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICBicmVhaworICAgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICMgaWdub3JlCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiY29uc3QiCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc1ZhcmlhYmxlIEB0b2tlbnNbQGlk
eF0KKyAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI9IgorICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgdmFsdWUgPSBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBjb25zdCAj
e3ZhcmlhYmxlLm5hbWV9IikKKyAgICAgICAgbGlzdCA8PCBDb25zdERlY2wubmV3KEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAiZXJyb3IiCisgICAgICAgIGxpc3QgPDwgRXJyb3IubmV3KEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbikKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICJpZiIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcHJlZGljYXRl
ID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQor
ICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBpZlRoZW5FbHNlID0gSWZUaGVuRWxzZS5uZXco
Y29kZU9yaWdpbiwgcHJlZGljYXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVs
c2lmKSlcWi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikpCisg
ICAgICAgIGxpc3QgPDwgaWZUaGVuRWxzZQorICAgICAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09
ICJlbHNpZiIKKyAgICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
CisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBw
cmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwo
XG4pKVxaLykKKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIGVsc2VDYXNlID0gSWZU
aGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGljYXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxz
ZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5k
dW1wfVwiIikpCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IGVsc2VDYXNlCisgICAg
ICAgICAgaWZUaGVuRWxzZSA9IGVsc2VDYXNlCisgICAgICAgIGVuZAorICAgICAgICBpZiBAdG9r
ZW5zW0BpZHhdID09ICJlbHNlIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGlmVGhl
bkVsc2UuZWxzZUNhc2UgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBv
ZiBlbHNlIGNhc2UgZm9yIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpCisgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5z
W0BpZHhdID09ICJlbmQiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVuZAorICAgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBOZXdM
aW5lCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhd
KQorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAx
CisgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICAgICAgYm9keSA9
IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIG1hY3JvICN7bmFtZX0i
KQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgbGlzdCA8PCBNYWNyby5uZXcoY29kZU9yaWdp
biwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgICAgZWxzaWYgaXNJbnN0cnVjdGlvbiBAdG9r
ZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4K
KyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFs
IGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGlu
c3RydWN0aW9uLCBhbmQgaXQncyB0aGUgbGFzdCBvbmUuCisgICAgICAgICAgbGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgYnJlYWsKKyAgICAg
ICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQg
aW5zdHJ1Y3Rpb24uCisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdp
biwgbmFtZSwgW10pCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAjIEl0J3MgZGVmaW5pdGVseSBhbiBpbnN0cnVjdGlvbiwgYW5kIGl0IGhhcyBhdCBsZWFzdCBv
bmUgb3BlcmFuZC4KKyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAgZW5kT2ZTZXF1
ZW5jZSA9IGZhbHNlCisgICAgICAgICAgbG9vcCB7CisgICAgICAgICAgICBvcGVyYW5kcyA8PCBw
YXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBpbnN0cnVjdGlvbiAje25hbWV9IikKKyAgICAg
ICAgICAgIGlmIChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwg
YW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0
aGUgaW5zdHJ1Y3Rpb24gYW5kIG9mIHRoZSBzZXF1ZW5jZS4KKyAgICAgICAgICAgICAgZW5kT2ZT
ZXF1ZW5jZSA9IHRydWUKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2lmIEB0
b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAgICMgSGFzIGFub3RoZXIgb3BlcmFuZC4K
KyAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICJcbiIKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbi4KKyAg
ICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIGEgY29tbWEsIG5ld2xpbmUs
IG9yICN7ZmluYWx9IGFmdGVyICN7b3BlcmFuZHMubGFzdC5kdW1wfSIpCisgICAgICAgICAgICBl
bmQKKyAgICAgICAgICB9CisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9y
aWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgICAgaWYgZW5kT2ZTZXF1ZW5jZQorICAgICAg
ICAgICAgYnJlYWsKKyAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBpc0lk
ZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgICAgICAj
IE1hY3JvIGludm9jYXRpb24uCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgb3BlcmFu
ZHMgPSBbXQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4
XSA9PSAiKSIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGxvb3AgeworICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBA
dG9rZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAgICAgICAgICAjIEl0J3MgYSBtYWNybyBs
YW1iZGEhCisgICAgICAgICAgICAgICAgY29kZU9yaWdpbklubmVyID0gQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgdmFy
aWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICAgICAgICAgIGJvZHkgPSBwYXJz
ZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBhbm9ueW1vdXMgbWFjcm8gcGFz
c2VkIGFzIGFyZ3VtZW50IHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luSW5uZXIsIG5p
bCwgdmFyaWFibGVzLCBib2R5KQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
b3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gY2FsbCB0byAj
e25hbWV9IikKKyAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisg
ICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgZWxzaWYgQHRva2Vu
c1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IgIlVuZXhwZWN0ZWQgI3tAdG9rZW5zW0Bp
ZHhdLnN0cmluZy5pbnNwZWN0fSB3aGlsZSBwYXJzaW5nIGludm9jYXRpb24gb2YgbWFjcm8gI3tu
YW1lfSIKKyAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICB9CisgICAgICAgICAgZW5kCisg
ICAgICAgICAgbGlzdCA8PCBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRz
KQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0ZWQgXCIoXCIgYWZ0
ZXIgI3tuYW1lfSIKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlk
eF0gb3IgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJp
bmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNb
QGlkeF0gPT0gIjoiCisgICAgICAgICMgSXQncyBhIGxhYmVsLgorICAgICAgICBpZiBpc0xhYmVs
IG5hbWUKKyAgICAgICAgICBsaXN0IDw8IExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkK
KyAgICAgICAgZWxzZQorICAgICAgICAgIGxpc3QgPDwgTG9jYWxMYWJlbC5mb3JOYW1lKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgICAgIGVuZAorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2UK
KyAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0aW5nIHRlcm1pbmFsICN7ZmluYWx9ICN7Y29tbWVu
dH0iCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGZpcnN0Q29kZU9yaWdpbiwg
bGlzdCkKKyAgZW5kCitlbmQKKworZGVmIHBhcnNlKHRva2VucykKKyAgcGFyc2VyID0gUGFyc2Vy
Lm5ldyh0b2tlbnMpCisgIHBhcnNlci5wYXJzZVNlcXVlbmNlKG5pbCwgIiIpCitlbmQKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5y
YgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworR1BSUyA9CisgIFsKKyAgICJ0MCIsCisgICAidDEiLAorICAgInQyIiwK
KyAgICJ0MyIsCisgICAidDQiLAorICAgImNmciIsCisgICAiYTAiLAorICAgImExIiwKKyAgICJy
MCIsCisgICAicjEiLAorICAgInNwIgorICBdCisKK0ZQUlMgPQorICBbCisgICAiZnQwIiwKKyAg
ICJmdDEiLAorICAgImZ0MiIsCisgICAiZnQzIiwKKyAgICJmdDQiLAorICAgImZ0NSIsCisgICAi
ZmEwIiwKKyAgICJmYTEiLAorICAgImZhMiIsCisgICAiZmEzIiwKKyAgICJmciIKKyAgXQorCitS
RUdJU1RFUlMgPSBHUFJTICsgRlBSUworCitHUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgo
JyArIEdQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQorRlBSX1BBVFRFUk4gPSBSZWdleHAubmV3
KCdcXEEoKCcgKyBGUFJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKKworUkVHSVNURVJfUEFUVEVS
TiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIFJFR0lTVEVSUy5qb2luKCcpfCgnKSArICcpKVxcWicp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdz
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyMSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiYmFja2VuZHMiCityZXF1
aXJlICJwYXJzZXIiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIC0+IHNldHRp
bmdzQ29tYmlhdGlvbnMgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBDb21wdXRl
cyBhbiBhcnJheSBvZiBzZXR0aW5ncyBtYXBzLCB3aGVyZSBhIHNldHRpbmdzIG1hcCBjb25zdGl0
dXRlcyAjCisjIGEgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFzc2VtYmx5IGNvZGUgYmVpbmcgZ2Vu
ZXJhdGVkLiBUaGUgbWFwICAgICAgICMKKyMgY29udGFpbnMga2V5IHZhbHVlIHBhaXJzIHdoZXJl
IGtleXMgYXJlIHNldHRpbmdzIG5hbWVzIChzdHJpbmdzKSBhbmQgIworIyB0aGUgdmFsdWVzIGFy
ZSBib29sZWFucyAodHJ1ZSBmb3IgZW5hYmxlZCwgZmFsc2UgZm9yIGRpc2FibGVkKS4gICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgY29tcHV0ZVNldHRpbmdz
Q29tYmluYXRpb25zKGFzdCkKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBbXQorICAKKyAgZGVm
IHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbWFwU29GYXIsIHJlbWFp
bmluZykKKyAgICBpZiByZW1haW5pbmcuZW1wdHk/CisgICAgICBzZXR0aW5nc0NvbWJpbmF0aW9u
cyA8PCBtYXBTb0ZhcgorICAgICAgcmV0dXJuCisgICAgZW5kCisgICAgCisgICAgbmV3TWFwID0g
bWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSB0cnVlCisgICAgc2V0dGlu
Z3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmluZ1sxLi4t
MV0pCisgICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmlu
Z1swXV0gPSBmYWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9u
cywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmlu
YXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywge30sIChhc3QuZmlsdGVyKFNldHRpbmcpLnVuaXEu
Y29sbGVjdHt8dnwgdi5uYW1lfSArIFsiWDg2IiwgIkFSTXY3Il0pLnVuaXEpCisgIAorICBzZXR0
aW5nc0NvbWJpbmF0aW9ucworZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgeyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1Qs
IGJhY2tlbmQgfCAuLi4gfSAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIERl
dGVybWluZXMgaWYgdGhlIHNldHRpbmdzIGNvbWJpbmF0aW9uIGlzIHZhbGlkLCBhbmQgaWYgc28s
IGNhbGxzICAgICMKKyMgdGhlIGJsb2NrIHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSBuZWVkIHRv
IGdlbmVyYXRlIGNvZGUuICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKworZGVmIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkKKyAgIyBDaGVj
ayB3aGljaCBhcmNoaXRlY3R1cmVzIHRoaXMgY29tYmluYXRvciBjbGFpbXMgdG8gc3VwcG9ydC4K
KyAgbnVtQ2xhaW1lZEJhY2tlbmRzID0gMAorICBzZWxlY3RlZEJhY2tlbmQgPSBuaWwKKyAgQkFD
S0VORFMuZWFjaCB7CisgICAgfCBiYWNrZW5kIHwKKyAgICBpc1N1cHBvcnRlZCA9IGNvbmNyZXRl
U2V0dGluZ3NbYmFja2VuZF0KKyAgICByYWlzZSB1bmxlc3MgaXNTdXBwb3J0ZWQgIT0gbmlsCisg
ICAgbnVtQ2xhaW1lZEJhY2tlbmRzICs9IGlmIGlzU3VwcG9ydGVkIHRoZW4gMSBlbHNlIDAgZW5k
CisgICAgaWYgaXNTdXBwb3J0ZWQKKyAgICAgIHNlbGVjdGVkQmFja2VuZCA9IGJhY2tlbmQKKyAg
ICBlbmQKKyAgfQorICAKKyAgcmV0dXJuIGlmIG51bUNsYWltZWRCYWNrZW5kcyA+IDEKKyAgCisg
ICMgUmVzb2x2ZSB0aGUgQVNUIGRvd24gdG8gYSBsb3ctbGV2ZWwgZm9ybSAobm8gbWFjcm9zIG9y
IGNvbmRpdGlvbmFscykuCisgIGxvd0xldmVsQVNUID0gYXN0LnJlc29sdmVTZXR0aW5ncyhjb25j
cmV0ZVNldHRpbmdzKQorICAKKyAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1Qs
IHNlbGVjdGVkQmFja2VuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5k
LCBpbmRleCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGZv
ckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCBzZXR0aW5nc0NvbWJpbmF0aW9ucykg
eyAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRl
eCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEV4ZWN1dGVz
IHRoZSBnaXZlbiBibG9jayBmb3IgZWFjaCB2YWxpZCBzZXR0aW5ncyBjb21iaW5hdGlvbiBpbiB0
aGUgICMKKyMgc2V0dGluZ3MgbWFwLiBUaGUgYXN0IHBhc3NlZCBpbnRvIHRoZSBibG9jayBpcyBy
ZXNvbHZlZCAgICAgICAgICAgICAgIworIyAoYXN0LnJlc29sdmUpIGFnYWluc3QgdGhlIHNldHRp
bmdzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgVGhlIGZpcnN0IGZvcm0gd2lsbCBjYWxsIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhh
c3QpIGZvciB5b3UuICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVm
IGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCAqb3B0aW9uYWxTZXR0aW5nc0Nv
bWJpbmF0aW9ucykKKyAgcmFpc2UgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucy5zaXpl
ID4gMQorICAKKyAgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucy5lbXB0eT8KKyAgICBz
ZXR0aW5nc0NvbWJpbmF0aW9ucyA9IGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisg
IGVsc2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IG9wdGlvbmFsU2V0dGluZ3NDb21iaWF0
aW9uc1swXQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zLmVhY2hfd2l0aF9pbmRl
eCB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBpbmRleCB8CisgICAgZm9yU2V0dGluZ3MoY29u
Y3JldGVTZXR0aW5ncywgYXN0KSB7CisgICAgICB8IGNvbmNyZXRlU2V0dGluZ3NfLCBsb3dMZXZl
bEFTVCwgYmFja2VuZCB8CisgICAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFT
VCwgYmFja2VuZCwgaW5kZXgKKyAgICB9CisgIH0KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUmV0dXJu
cyB0aGUgQysrIGNvZGUgdXNlZCB0byB0ZXN0IGlmIHdlIGFyZSBpbiBhIGNvbmZpZ3VyYXRpb24g
dGhhdCAgIworIyBjb3JyZXNwb25kcyB0byB0aGUgZ2l2ZW4gY29uY3JldGUgc2V0dGluZ3MuICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworCitkZWYgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICIjaWYgIiArIGNv
bmNyZXRlU2V0dGluZ3MudG9fYS5jb2xsZWN0eworICAgIHwgcGFpciB8CisgICAgKGlmIHBhaXJb
MV0KKyAgICAgICAiIgorICAgICBlbHNlCisgICAgICAgIiEiCisgICAgIGVuZCkgKyAiT0ZGTElO
RV9BU01fIiArIHBhaXJbMF0KKyAgfS5qb2luKCIgJiYgIikKK2VuZAorCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBpc0FTVEVycm9uZW91cyhhc3QpICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
VGVzdHMgdG8gc2VlIGlmIHRoZSBBU1QgY2xhaW1zIHRoYXQgdGhlcmUgaXMgYW4gZXJyb3IgLSBp
LmUuIGlmIHRoZSAgIworIyB1c2VyJ3MgY29kZSwgYWZ0ZXIgc2V0dGluZ3MgcmVzb2x1dGlvbiwg
aGFzIEVycm9yIG5vZGVzLiAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworCitkZWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICBub3QgYXN0LmZpbHRlcihFcnJv
cikuZW1wdHk/CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgYXNz
ZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEVtaXRzIGEgY2hlY2sgdGhhdCBhc3NlcnRz
IHRoYXQgd2UncmUgdXNpbmcgdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24uICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRl
U2V0dGluZ3MpCisgICRvdXRwdXQucHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5n
cykKKyAgJG91dHB1dC5wdXRzICIjZWxzZSIKKyAgJG91dHB1dC5wdXRzICIjZXJyb3IgXCJDb25m
aWd1cmF0aW9uIG1pc21hdGNoLlwiIgorICAkb3V0cHV0LnB1dHMgIiNlbmRpZiIKK2VuZAorCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBlbWl0Q29kZUluQ29uZmlndXJhdGlv
bihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpIHsgICAgICAgICAgICAjCisjICAgICB8
IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCB8IC4uLiB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFbWl0cyBhbGwgcmVsZXZhbnQgZ3VhcmRzIHRv
IHNlZSBpZiB0aGUgY29uZmlndXJhdGlvbiBob2xkcyBhbmQgICAgICAjCisjIGNhbGxzIHRoZSBi
bG9jayBpZiB0aGUgY29uZmlndXJhdGlvbiBpcyBub3QgZXJyb25lb3VzLiAgICAgICAgICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBlbWl0Q29kZUluQ29u
ZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpCisgICRvdXRwdXQucHV0
cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIGlmIGlzQVNURXJyb25l
b3VzKGFzdCkKKyAgICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIkludmFsaWQgY29uZmlndXJhdGlv
bi5cIiIKKyAgZWxzaWYgbm90IFdPUktJTkdfQkFDS0VORFMuaW5jbHVkZT8gYmFja2VuZAorICAg
ICRvdXRwdXQucHV0cyAiI2Vycm9yIFwiVGhpcyBiYWNrZW5kIGlzIG5vdCBzdXBwb3J0ZWQgeWV0
LlwiIgorICBlbHNlCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kCisg
IGVuZAorICAKKyAgJG91dHB1dC5wdXRzICIjZW5kaWYiCitlbmQKKworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkgeyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRp
bmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgRW1pdHMgZ3VhcmQgY29kZXMgZm9yIGFsbCB2YWxpZCBjb25maWd1cmF0
aW9ucywgYW5kIGNhbGxzIHRoZSBibG9jayAgIworIyBmb3IgdGhvc2UgY29uZmlndXJhdGlvbnMg
dGhhdCBhcmUgdmFsaWQgYW5kIG5vdCBlcnJvbmVvdXMuICAgICAgICAgICAjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25z
KGFzdCkKKyAgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsKKyAgICB8IGNv
bmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleCB8CisgICAgJG91dHB1
dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAgIHlpZWxkIGNvbmNy
ZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgICRvdXRwdXQucHV0
cyAiI2VuZGlmIgorICB9CitlbmQKKworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzUyIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJh
c3QiCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2ZVNl
dHRpbmdzKHNldHRpbmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2
ZSBhbnkgSWZUaGVuRWxzZSBub2RlcyBieSAgICAgICAjCisjIHN1YnN0aXR1dGluZyBjb25jcmV0
ZSBib29sZWFuIHZhbHVlcyBmb3IgZWFjaCBTZXR0aW5nLiAgICAgICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAg
ICAgIGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICB9CisgIGVuZAorZW5kCisK
K2NsYXNzIFRydWUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisg
IGVuZAorZW5kCisKK2NsYXNzIEZhbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
CisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nCisgIGRlZiByZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpCisgICAgc2V0dGluZ3NbQG5hbWVdLmFzTm9kZQorICBlbmQKK2VuZAor
CitjbGFzcyBBbmQKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQu
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBhbmQgQHJpZ2h0LnJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBPcgorICBkZWYg
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpLnZhbHVlIG9yIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5h
c05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgTm90CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpCisgICAgKG5vdCBAY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSku
YXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UKKyAgZGVmIHJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICBpZiBAcHJlZGljYXRlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykudmFsdWUKKyAgICAgIEB0aGVuQ2FzZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAg
ZWxzZQorICAgICAgQGVsc2VDYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbmQK
KyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8
CisgICAgICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICBpZiBp
dGVtLmlzX2E/IFNlcXVlbmNlCisgICAgICAgIG5ld0xpc3QgKz0gaXRlbS5saXN0CisgICAgICBl
bHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVl
bmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBub2RlLmRlbWFjcm9pZnkobWFjcm9zKSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUuc3Vic3RpdHV0ZSht
YXBwaW5nKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBkZW1hY3JvaWZ5KCkgY29uc3RydWN0cyBhIG5ldyBBU1QgdGhhdCBk
b2VzIG5vdCBoYXZlIGFueSBNYWNybyAgICAgICAjCisjIG5vZGVzLCB3aGlsZSBzdWJzdGl0dXRl
KCkgcmVwbGFjZXMgVmFyaWFibGUgbm9kZXMgd2l0aCB0aGUgZ2l2ZW4gICAgICMKKyMgbm9kZXMg
aW4gdGhlIG1hcHBpbmcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQor
ICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGls
ZCB8CisgICAgICBjaGlsZC5kZW1hY3JvaWZ5KG1hY3JvcykKKyAgICB9CisgIGVuZAorICAKKyAg
ZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxk
IHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobWFwcGluZykKKyAgICB9CisgIGVuZAorICAKKyAg
ZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8
IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICB9Cisg
IGVuZAorZW5kCisKK2NsYXNzIE1hY3JvCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAg
bXlNYXBwaW5nID0ge30KKyAgICBtYXBwaW5nLmVhY2hfcGFpciB7CisgICAgICB8IGtleSwgdmFs
dWUgfAorICAgICAgdW5sZXNzIEB2YXJpYWJsZXMuaW5jbHVkZT8ga2V5CisgICAgICAgIG15TWFw
cGluZ1trZXldID0gdmFsdWUKKyAgICAgIGVuZAorICAgIH0KKyAgICBtYXBDaGlsZHJlbiB7Cisg
ICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobXlNYXBwaW5nKQorICAgIH0K
KyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykK
KyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAg
ICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBz
dWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgaWYgbWFwcGluZ1tzZWxmXQorICAgICAgbWFw
cGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKwor
Y2xhc3MgU2VxdWVuY2UKKyAgZGVmIHN1YnN0aXR1dGUoY29uc3RhbnRzKQorICAgIG5ld0xpc3Qg
PSBbXQorICAgIG15Q29uc3RhbnRzID0gY29uc3RhbnRzLmR1cAorICAgIEBsaXN0LmVhY2ggewor
ICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gQ29uc3REZWNsCisgICAgICAgIG15
Q29uc3RhbnRzW2l0ZW0udmFyaWFibGVdID0gaXRlbS52YWx1ZS5zdWJzdGl0dXRlKG15Q29uc3Rh
bnRzKQorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uc3Vic3RpdHV0ZShteUNv
bnN0YW50cykKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwg
bmV3TGlzdCkKKyAgZW5kCisgIAorICBkZWYgcmVuYW1lTGFiZWxzKGNvbW1lbnQpCisgICAgbWFw
cGluZyA9IHt9CisgICAgCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAg
aWYgaXRlbS5pc19hPyBMb2NhbExhYmVsCisgICAgICAgIG1hcHBpbmdbaXRlbV0gPSBMb2NhbExh
YmVsLnVuaXF1ZShpZiBjb21tZW50IHRoZW4gY29tbWVudCArICJfIiBlbHNlICIiIGVuZCArIGl0
ZW0uY2xlYW5OYW1lKQorICAgICAgZW5kCisgICAgfQorICAgIAorICAgIHN1YnN0aXR1dGVMYWJl
bHMobWFwcGluZykKKyAgZW5kCisgIAorICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbXlN
YWNyb3MgPSBtYWNyb3MuZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAg
ICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICBteU1hY3Jvc1tpdGVtLm5hbWVdID0gaXRl
bQorICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3QgPSBbXQorICAgIEBsaXN0LmVhY2ggewor
ICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gTWFjcm8KKyAgICAgICAgIyBJZ25v
cmUuCisgICAgICBlbHNpZiBpdGVtLmlzX2E/IE1hY3JvQ2FsbAorICAgICAgICBtYXBwaW5nID0g
e30KKyAgICAgICAgbXlNeU1hY3JvcyA9IG15TWFjcm9zLmR1cAorICAgICAgICByYWlzZSAiQ291
bGQgbm90IGZpbmQgbWFjcm8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5n
fSIgdW5sZXNzIG15TWFjcm9zW2l0ZW0ubmFtZV0KKyAgICAgICAgcmFpc2UgIkFyZ3VtZW50IGNv
dW50IG1pc21hdGNoIGZvciBjYWxsIHRvICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdp
blN0cmluZ30iIHVubGVzcyBpdGVtLm9wZXJhbmRzLnNpemUgPT0gbXlNYWNyb3NbaXRlbS5uYW1l
XS52YXJpYWJsZXMuc2l6ZQorICAgICAgICBpdGVtLm9wZXJhbmRzLnNpemUudGltZXMgeworICAg
ICAgICAgIHwgaWR4IHwKKyAgICAgICAgICBpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gVmFy
aWFibGUgYW5kIG15TWFjcm9zW2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAg
bXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbXlN
YWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAgICBtYXBwaW5nW215TWFj
cm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNp
ZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gTWFjcm8KKyAgICAgICAgICAgIG15TXlNYWNyb3Nb
bXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IGl0ZW0ub3BlcmFuZHNb
aWR4XQorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tp
ZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tt
eU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9IG5pbAorICAgICAgICAgICAgbWFw
cGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9IGl0ZW0ub3BlcmFuZHNb
aWR4XQorICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIG5ld0xpc3QgKz0gbXlNYWNy
b3NbaXRlbS5uYW1lXS5ib2R5LnN1YnN0aXR1dGUobWFwcGluZykuZGVtYWNyb2lmeShteU15TWFj
cm9zKS5yZW5hbWVMYWJlbHMoaXRlbS5uYW1lKS5saXN0CisgICAgICBlbHNlCisgICAgICAgIG5l
d0xpc3QgPDwgaXRlbS5kZW1hY3JvaWZ5KG15TWFjcm9zKQorICAgICAgZW5kCisgICAgfQorICAg
IFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KS5zdWJzdGl0dXRlKHt9KQorICBlbmQK
K2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnJlc29sdmVP
ZmZzZXRzKG9mZnNldHMsIHNpemVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGhhcyBvZmZzZXQg
dmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMgICAgICAgIworIyBvZmZzZXRzLiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZl
T2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxk
IHwKKyAgICAgIGNoaWxkLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIH0KKyAg
ZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0CisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZz
ZXRzLCBzaXplcykKKyAgICBpZiBvZmZzZXRzW3NlbGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNv
ZGVPcmlnaW4sIG9mZnNldHNbc2VsZl0pCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAor
ICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMs
IHNpemVzKQorICAgIGlmIHNpemVzW3NlbGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmln
aW4sIHNpemVzW3NlbGZdKQorICAgIGVsc2UKKyAgICAgIHB1dHMgIkNvdWxkIG5vdCBmaW5kICN7
c2VsZi5pbnNwZWN0fSBpbiAje3NpemVzLmtleXMuaW5zcGVjdH0iCisgICAgICBwdXRzICJzaXpl
cyA9ICN7c2l6ZXMuaW5zcGVjdH0iCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUuZm9sZCAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBSZXNvbHZlIGNvbnN0YW50IHJlZmVyZW5jZXMgYW5kIGNvbXB1dGUgYXJp
dGhtZXRpYyBleHByZXNzaW9ucy4gICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworCitjbGFzcyBOb2RlCisgIGRlZiBmb2xkCisgICAgbWFwQ2hpbGRyZW4geworICAgICAg
fCBjaGlsZCB8CisgICAgICBjaGlsZC5mb2xkCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBB
ZGRJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJp
Z2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1t
ZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAg
ICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICsgQHJpZ2h0LnZhbHVlKQor
ICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQg
PSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1
bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdo
dC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZh
bHVlIC0gQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzCisg
IGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZv
bGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0
dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3
KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICogQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitj
bGFzcyBOZWdJbW1lZGlhdGUKKyAgZGVmIGZvbGQKKyAgICBAY2hpbGQgPSBAY2hpbGQuZm9sZAor
ICAgIHJldHVybiBzZWxmIHVubGVzcyBAY2hpbGQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRp
YXRlLm5ldyhjb2RlT3JpZ2luLCAtQGNoaWxkLnZhbHVlKQorICBlbmQKK2VuZAorCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLnJlc29sdmVBZnRlclNldHRpbmdzKG9m
ZnNldHMsIHNpemVzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgQ29tcGlsZSBhc3NlbWJseSBhZ2FpbnN0IGEgc2V0IG9mIG9mZnNldHMuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor
Y2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZShvZmZzZXRzLCBzaXplcykKKyAgICBkZW1hY3JvaWZ5
KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykuZm9sZAorICBlbmQKK2VuZAorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY3MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
Y2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICBjYXNlIG5hbWUK
KyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0MSIsICJhMSIsICJyMSIsICJ0MiIsICJ0MyIK
KyAgICAgIHRydWUKKyAgICB3aGVuICJ0NCIsICJjZnIiCisgICAgICBmYWxzZQorICAgIGVsc2UK
KyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkK
KyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgIGNhc2Uga2lu
ZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWFsIgorICAgICAgd2hlbiA6aGFsZgorICAg
ICAgICAiJWF4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWF4IgorICAgICAgZWxzZQor
ICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAg
ICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkbCIKKyAgICAgIHdoZW4g
OmhhbGYKKyAgICAgICAgIiVkeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkeCIKKyAg
ICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQyIgorICAgICAg
Y2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlY2wiCisgICAgICB3aGVuIDpo
YWxmCisgICAgICAgICIlY3giCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlY3giCisgICAg
ICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MyIKKyAgICAgIGNh
c2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWJsIgorICAgICAgd2hlbiA6aGFs
ZgorICAgICAgICAiJWJ4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWJ4IgorICAgICAg
ZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDQiCisgICAgICBjYXNl
IGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzaWwiCisgICAgICB3aGVuIDpoYWxm
CisgICAgICAgICIlc2kiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlc2kiCisgICAgICBl
bHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJjZnIiCisgICAgICBjYXNl
IGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkaWwiCisgICAgICB3aGVuIDpoYWxm
CisgICAgICAgICIlZGkiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlZGkiCisgICAgICBl
bHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJzcCIKKyAgICAgIGNhc2Ug
a2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNwbCIKKyAgICAgIHdoZW4gOmhhbGYK
KyAgICAgICAgIiVzcCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzcCIKKyAgICAgIGVs
c2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAg
ZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFu
ZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgeDg2T3Bl
cmFuZChraW5kKQorICAgIHJhaXNlIHVubGVzcyBraW5kID09IDpkb3VibGUKKyAgICBjYXNlIG5h
bWUKKyAgICB3aGVuICJmdDAiLCAiZmEwIiwgImZyIgorICAgICAgIiV4bW0wIgorICAgIHdoZW4g
ImZ0MSIsICJmYTEiCisgICAgICAiJXhtbTEiCisgICAgd2hlbiAiZnQyIiwgImZhMiIKKyAgICAg
ICIleG1tMiIKKyAgICB3aGVuICJmdDMiLCAiZmEzIgorICAgICAgIiV4bW0zIgorICAgIHdoZW4g
ImZ0NCIKKyAgICAgICIleG1tNCIKKyAgICB3aGVuICJmdDUiCisgICAgICAiJXhtbTUiCisgICAg
ZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChr
aW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW1t
ZWRpYXRlCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiQje3ZhbHVlfSIKKyAgZW5kCisg
IGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIje3ZhbHVlfSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAor
ICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje29mZnNldC52YWx1ZX0oI3tiYXNl
Lng4Nk9wZXJhbmQoOmludCl9KSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQor
ICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4
CisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4
ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6
aW50KX0sICN7aW5kZXgueDg2T3BlcmFuZCg6aW50KX0sICN7c2NhbGV9KSIKKyAgZW5kCisKKyAg
ZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nm9wZXJhbmQoa2luZCl9IgorICBl
bmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2
CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3th
ZGRyZXNzLnZhbHVlfSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAg
Iioje2FkZHJlc3MudmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZQor
ICBkZWYgeDg2TGFiZWwKKyAgICBzYW5pdGl6ZUxhYmVsTmFtZShuYW1lKQorICBlbmQKKyAgZGVm
IHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgeDg2TGFiZWwKKyAgZW5kCitlbmQKKworY2xhc3Mg
TG9jYWxMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2TGFiZWwKKyAgICAiTF9vZmZsaW5lYXNtXyIr
bmFtZVsxLi4tMV0KKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgIHg4Nkxh
YmVsCisgIGVuZAorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgIGRlZiB4ODZPcGVyYW5kcygq
a2luZHMpCisgICAgcmFpc2UgdW5sZXNzIGtpbmRzLnNpemUgPT0gb3BlcmFuZHMuc2l6ZQorICAg
IHJlc3VsdCA9IFtdCisgICAga2luZHMuc2l6ZS50aW1lcyB7CisgICAgICB8IGlkeCB8CisgICAg
ICByZXN1bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZPcGVyYW5kKGtpbmRzW2lkeF0pCisgICAgfQor
ICAgIHJlc3VsdC5qb2luKCIsICIpCisgIGVuZAorCisgIGRlZiB4ODZTdWZmaXgoa2luZCkKKyAg
ICBjYXNlIGtpbmQKKyAgICB3aGVuIDpieXRlCisgICAgICAiYiIKKyAgICB3aGVuIDpoYWxmCisg
ICAgICAidyIKKyAgICB3aGVuIDppbnQKKyAgICAgICJsIgorICAgIHdoZW4gOmRvdWJsZQorICAg
ICAgInNkIgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVm
IGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgbnVtT3BlcmFuZHMpCisg
ICAgaWYgbnVtT3BlcmFuZHMgPT0gMworICAgICAgaWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNb
Ml0KKyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzaWYg
b3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2Rl
fSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJh
bmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgIlx0bW92I3t4ODZTdWZm
aXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0u
eDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQp
fSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3Aob3Bjb2RlLCBraW5k
KQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMu
c2l6ZSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2hpZnQob3Bjb2RlLCBraW5kKQorICAg
IGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBvciBvcGVyYW5kc1swXSA9PSBSZWdpc3Rl
cklELmZvck5hbWUobmlsLCAidDIiKQorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gJWNs
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgJGFzbS5wdXRzICJcdHhj
aGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIGhhbmRsZVg4NkRvdWJsZUJyYW5jaChicmFuY2hPcGNvZGUsIG1vZGUpCisg
ICAgY2FzZSBtb2RlCisgICAgd2hlbiA6bm9ybWFsCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlz
ZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gOnJldmVyc2UKKyAgICAgICRhc20ucHV0cyAiXHR1
Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgZWxzZQorICAgICAgcmFpc2UgbW9kZS5pbnNwZWN0
CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJd
Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29tcGFyZShvcGNvZGVT
dWZmaXgsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVy
YW5kc1swXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklEIGFuZCAo
b3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikKKyAgICAgICRhc20u
cHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChr
aW5kKX0iCisgICAgZWxzaWYgb3BlcmFuZHNbMV0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5k
c1sxXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bj
b2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0
cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5k
KX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdGNtcCN7eDg2U3VmZml4KGtpbmQpfSAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
a2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRCcmFuY2goYnJh
bmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NkludENvbXBhcmUoYnJhbmNoT3Bjb2RlWzEu
Li0xXSwga2luZCkKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNb
Ml0ueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBv
cGVyYW5kKQorICAgIGlmIG9wZXJhbmQuc3VwcG9ydHM4Qml0T25YODYKKyAgICAgICRhc20ucHV0
cyAiXHQje3NldE9wY29kZX0gI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSIKKyAgICAgICRh
c20ucHV0cyAiXHRtb3Z6YmwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5k
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAj
e29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgICAkYXNtLnB1dHMgIlx0I3tz
ZXRPcGNvZGV9ICVhbCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgJWFsLCAlZWF4IgorICAg
ICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSwgJWVheCIK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29tcGFyZVNldChzZXRPcGNv
ZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShzZXRPcGNvZGVbMy4uLTFdLCBraW5k
KQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRzWzJdKQorICBlbmQKKyAgCisg
IGRlZiBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgdmFsdWUgPSBvcGVyYW5kc1swXQorICAgIGNh
c2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gMgorICAgICAgbWFzayA9IEltbWVkaWF0ZS5uZXco
Y29kZU9yaWdpbiwgLTEpCisgICAgd2hlbiAzCisgICAgICBtYXNrID0gb3BlcmFuZHNbMV0KKyAg
ICBlbHNlCisgICAgICByYWlzZSAiRXhwZWN0ZWQgMiBvciAzIG9wZXJhbmRzLCBidXQgZ290ICN7
b3BlcmFuZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKyAgICAKKyAg
ICBpZiBtYXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQorICAgICAgaWYg
dmFsdWUuaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3Vm
Zml4KGtpbmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQo
a2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgIlx0Y21wI3t4ODZTdWZmaXgo
a2luZCl9ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5kCisgICAgZWxz
ZQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3ttYXNrLng4Nk9w
ZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBoYW5kbGVYODZCcmFuY2hUZXN0KGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBo
YW5kbGVYODZUZXN0KGtpbmQpCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje29w
ZXJhbmRzLmxhc3QueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTZXRUZXN0
KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgaGFuZGxlWDg2
U2V0KHNldE9wY29kZSwgb3BlcmFuZHMubGFzdCkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2
T3BCcmFuY2gob3Bjb2RlLCBicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2T3BXaXRo
TnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXplIC0gMSkKKyAgICBjYXNlIG9w
ZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQor
ICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAg
ICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNo
T3Bjb2RlfSAje2p1bXBUYXJnZXQueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVY
ODZTdWJCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0g
NCBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICRhc20ucHV0cyAiXHRuZWds
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0YWRk
bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKCJz
dWIje3g4NlN1ZmZpeChraW5kKX0iLCBraW5kLCBvcGVyYW5kcy5zaXplIC0gMSkKKyAgICBlbmQK
KyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAgIGp1bXBUYXJnZXQgPSBv
cGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisg
ICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRz
ICJcdCN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQueDg2TGFiZWx9IgorICBlbmQKKyAgCisg
IGRlZiBsb3dlclg4NgorICAgICRhc20uY29tbWVudCBjb2RlT3JpZ2luU3RyaW5nCisgICAgY2Fz
ZSBvcGNvZGUKKyAgICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAgICBpZiBvcGVyYW5kcy5zaXpl
ID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICByYWlzZSB1bmxl
c3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3Bl
cmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9
PSAwCisgICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAg
ICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgIGVuZAorICAgICAgICBl
bHNlCisgICAgICAgICAgJGFzbS5wdXRzICJcdGxlYWwgI3tvcGVyYW5kc1swXS52YWx1ZX0oI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBv
cGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5k
c1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5p
c19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHRsZWFsICgje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgdW5sZXNz
IEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAgICRhc20ucHV0
cyAiXHRhZGRsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgICBlbmQKKyAgICAg
IGVuZAorICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJhbmRsIiwg
OmludCkKKyAgICB3aGVuICJsc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNhbGwiLCA6
aW50KQorICAgIHdoZW4gIm11bGkiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9w
ZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAkYXNtLnB1dHMgIlx0aW11bGwgI3t4
ODZPcGVyYW5kcyg6aW50LCA6aW50LCA6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgICMgRklY
TUU6IGNvdWxkIGRvIHNvbWUgcGVlcGhvbGUgaW4gY2FzZSB0aGUgbGVmdCBvcGVyYW5kIGlzIGlt
bWVkaWF0ZSBhbmQgaXQncworICAgICAgICAjIGEgcG93ZXIgb2YgdHdvLgorICAgICAgICBoYW5k
bGVYODZPcCgiaW11bGwiLCA6aW50KQorICAgICAgZW5kCisgICAgd2hlbiAibmVnaSIKKyAgICAg
ICRhc20ucHV0cyAiXHRuZWdsICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm5vdGki
CisgICAgICAkYXNtLnB1dHMgIlx0bm90bCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVu
ICJvcmkiLCAib3JwIgorICAgICAgaGFuZGxlWDg2T3AoIm9ybCIsIDppbnQpCisgICAgd2hlbiAi
cnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYXJsIiwgOmludCkKKyAgICB3aGVuICJ1
cnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzaHJsIiwgOmludCkKKyAgICB3aGVuICJz
dWJpIiwgInN1YnAiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFd
ID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7b3BlcmFuZHNbMl0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgICBlbHNlCisgICAgICAgIGhhbmRsZVg4Nk9wKCJzdWJsIiwgOmludCkKKyAgICAgIGVuZAor
ICAgIHdoZW4gInhvcmkiLCAieG9ycCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJ4b3JsIiwgOmludCkK
KyAgICB3aGVuICJsb2FkaSIsICJzdG9yZWkiLCAibG9hZHAiLCAic3RvcmVwIgorICAgICAgJGFz
bS5wdXRzICJcdG1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgd2hlbiAibG9h
ZGIiCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImxvYWRo
IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnp3bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhh
bGYpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJzdG9yZWIi
CisgICAgICAkYXNtLnB1dHMgIlx0bW92YiAje3g4Nk9wZXJhbmRzKDpieXRlLCA6Ynl0ZSl9Igor
ICAgIHdoZW4gImxvYWRkIiwgIm1vdmVkIiwgInN0b3JlZCIKKyAgICAgICRhc20ucHV0cyAiXHRt
b3ZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJhZGRkIgor
ICAgICAgJGFzbS5wdXRzICJcdGFkZHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9
IgorICAgIHdoZW4gImRpdmQiCisgICAgICAkYXNtLnB1dHMgIlx0ZGl2c2QgI3t4ODZPcGVyYW5k
cyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3ViZCIKKyAgICAgICRhc20ucHV0cyAi
XHRzdWJzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJtdWxk
IgorICAgICAgJGFzbS5wdXRzICJcdG11bHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJs
ZSl9IgorICAgIHdoZW4gInNxcnRkIgorICAgICAgJGFzbS5wdXRzICJcdHNxcnRzZCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9IgorICAgIHdoZW4gImNpMmQiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0c2kyc2QgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpk
b3VibGUpfSIKKyAgICB3aGVuICJiZGVxIgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVs
LnVuaXF1ZSgiYmRlcSIpCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4s
IGlzVW5vcmRlcmVkKS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tMYWJlbFJl
ZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgb3BlcmFuZHNbMl0pLng4NkxhYmVsfSIKKyAgICAgIGlz
VW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkbmVxIgorICAgICAgaGFuZGxlWDg2
RG91YmxlQnJhbmNoKCJqbmUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3QiCisgICAgICBoYW5k
bGVYODZEb3VibGVCcmFuY2goImphIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGd0ZXEiCisgICAg
ICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRsdCIK
KyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJi
ZGx0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIsIDpyZXZlcnNlKQorICAg
IHdoZW4gImJkZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamUiLCA6bm9ybWFs
KQorICAgIHdoZW4gImJkbmVxdW4iCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5p
cXVlKCJiZG5lcXVuIikKKyAgICAgIGlzRXF1YWwgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1
biIpCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFz
bS5wdXRzICJcdGpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVk
KS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tMYWJlbFJlZmVyZW5jZS5uZXco
Y29kZU9yaWdpbiwgaXNFcXVhbCkueDg2TGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIo
Ilg4NiIpCisgICAgICAkYXNtLnB1dHMgIlx0am1wICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9Igor
ICAgICAgaXNFcXVhbC5sb3dlcigiWDg2IikKKyAgICB3aGVuICJiZGd0dW4iCisgICAgICBoYW5k
bGVYODZEb3VibGVCcmFuY2goImpiIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRndGVxdW4iCisg
ICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJk
bHR1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6bm9ybWFsKQorICAgIHdo
ZW4gImJkbHRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6bm9ybWFs
KQorICAgIHdoZW4gImJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHRzZDJzaSAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgICAgJGFzbS5wdXRzICJcdGNtcGwgJDB4ODAwMDAwMDAgI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje29wZXJhbmRzWzJdLng4
NkxhYmVsfSIKKyAgICB3aGVuICJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHRzZDJzaSAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgIHdoZW4gImJjZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHRzZDJz
aSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdHRlc3RsICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAk
YXNtLnB1dHMgIlx0amUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMg
Ilx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAg
ICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIK
KyAgICAgICRhc20ucHV0cyAiXHRqbmUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgd2hl
biAibW92ZHoiCisgICAgICAkYXNtLnB1dHMgIlx0eG9ycGQgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3
aGVuICJwb3AiCisgICAgICAkYXNtLnB1dHMgIlx0cG9wICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgd2hlbiAicHVzaCIKKyAgICAgICRhc20ucHV0cyAiXHRwdXNoICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6
eGkycCIKKyAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXSBhbmQg
b3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgIlx0eG9ybCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMF0gIT0gb3BlcmFuZHNbMV0KKyAgICAgICAg
JGFzbS5wdXRzICJcdG1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgICBlbmQK
KyAgICB3aGVuICJub3AiCisgICAgICAkYXNtLnB1dHMgIlx0bm9wIgorICAgIHdoZW4gImJpZXEi
LCAiYnBlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6aW50KQorICAgIHdoZW4g
ImJpbmVxIiwgImJwbmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6aW50KQor
ICAgIHdoZW4gImJpYSIsICJicGEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphIiwgOmlu
dCkKKyAgICB3aGVuICJiaWFlcSIsICJicGFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgi
amFlIiwgOmludCkKKyAgICB3aGVuICJiaWIiLCAiYnBiIgorICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqYiIsIDppbnQpCisgICAgd2hlbiAiYmliZXEiLCAiYnBiZXEiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImpiZSIsIDppbnQpCisgICAgd2hlbiAiYmlndCIsICJicGd0IgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDppbnQpCisgICAgd2hlbiAiYmlndGVxIiwgImJwZ3Rl
cSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmludCkKKyAgICB3aGVuICJiaWx0
IiwgImJwbHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwgOmludCkKKyAgICB3aGVu
ICJiaWx0ZXEiLCAiYnBsdGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbGUiLCA6aW50
KQorICAgIHdoZW4gImJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmJ5dGUp
CisgICAgd2hlbiAiYmJuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDpieXRl
KQorICAgIHdoZW4gImJiYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6Ynl0ZSkK
KyAgICB3aGVuICJiYmFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmJ5dGUp
CisgICAgd2hlbiAiYmJiIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDpieXRlKQor
ICAgIHdoZW4gImJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6Ynl0ZSkK
KyAgICB3aGVuICJiYmd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDpieXRlKQor
ICAgIHdoZW4gImJiZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmJ5dGUp
CisgICAgd2hlbiAiYmJsdCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6Ynl0ZSkK
KyAgICB3aGVuICJiYmx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsdGVxIiwgOmJ5
dGUpCisgICAgd2hlbiAiYnRpbyIsICJidHBvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgi
am8iLCA6aW50KQorICAgIHdoZW4gImJ0aXMiLCAiYnRwcyIKKyAgICAgIGhhbmRsZVg4NkJyYW5j
aFRlc3QoImpzIiwgOmludCkKKyAgICB3aGVuICJidGl6IiwgImJ0cHoiCisgICAgICBoYW5kbGVY
ODZCcmFuY2hUZXN0KCJqeiIsIDppbnQpCisgICAgd2hlbiAiYnRpbnoiLCAiYnRwbnoiCisgICAg
ICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6aW50KQorICAgIHdoZW4gImJ0Ym8iCisgICAg
ICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpieXRlKQorICAgIHdoZW4gImJ0YnMiCisgICAg
ICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDpieXRlKQorICAgIHdoZW4gImJ0YnoiCisgICAg
ICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDpieXRlKQorICAgIHdoZW4gImJ0Ym56IgorICAg
ICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmJ5dGUpCisgICAgd2hlbiAiam1wIgorICAg
ICAgJGFzbS5wdXRzICJcdGptcCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIK
KyAgICB3aGVuICJiYWRkaW8iLCAiYmFkZHBvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFk
ZGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJhZGRpcyIsICJiYWRkcHMiCisgICAgICBoYW5k
bGVYODZPcEJyYW5jaCgiYWRkbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYmFkZGl6IiwgImJh
ZGRweiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImp6IiwgOmludCkKKyAgICB3
aGVuICJiYWRkaW56IiwgImJhZGRwbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIs
ICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5j
aCgiam8iLCA6aW50KQorICAgIHdoZW4gImJzdWJpcyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5j
aCgianMiLCA6aW50KQorICAgIHdoZW4gImJzdWJpeiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5j
aCgianoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbnoiCisgICAgICBoYW5kbGVYODZTdWJCcmFu
Y2goImpueiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFu
Y2goImltdWxsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJibXVsaXMiCisgICAgICBoYW5kbGVY
ODZPcEJyYW5jaCgiaW11bGwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJtdWxpeiIKKyAgICAg
IGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlu
eiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbnoiLCA6aW50KQorICAgIHdo
ZW4gImJvcmlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqbyIsIDppbnQpCisg
ICAgd2hlbiAiYm9yaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpzIiwgOmlu
dCkKKyAgICB3aGVuICJib3JpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianoi
LCA6aW50KQorICAgIHdoZW4gImJvcmlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwi
LCAiam56IiwgOmludCkKKyAgICB3aGVuICJicmVhayIKKyAgICAgICRhc20ucHV0cyAiXHRpbnQg
JDMiCisgICAgd2hlbiAiY2FsbCIKKyAgICAgICRhc20ucHV0cyAiXHRjYWxsICN7b3BlcmFuZHNb
MF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInJldCIKKyAgICAgICRhc20ucHV0
cyAiXHRyZXQiCisgICAgd2hlbiAiY2llcSIsICJjcGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29t
cGFyZVNldCgic2V0ZSIsIDppbnQpCisgICAgd2hlbiAiY2luZXEiLCAiY3BuZXEiCisgICAgICBo
YW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRuZSIsIDppbnQpCisgICAgd2hlbiAiY2lhIiwgImNw
YSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGEiLCA6aW50KQorICAgIHdoZW4g
ImNpYWVxIiwgImNwYWVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YWUiLCA6
aW50KQorICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0
KCJzZXRiIiwgOmludCkKKyAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAgIGhhbmRsZVg4
NkludENvbXBhcmVTZXQoInNldGJlIiwgOmludCkKKyAgICB3aGVuICJjaWd0IiwgImNwZ3QiCisg
ICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnIiwgOmludCkKKyAgICB3aGVuICJjaWd0
ZXEiLCAiY3BndGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0Z2UiLCA6aW50
KQorICAgIHdoZW4gImNpbHQiLCAiY3BsdCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQo
InNldGwiLCA6aW50KQorICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiCisgICAgICBoYW5kbGVY
ODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisgICAgd2hlbiAidGlvIgorICAgICAgaGFu
ZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQpCisgICAgd2hlbiAidGlzIgorICAgICAgaGFuZGxl
WDg2U2V0VGVzdCgic2V0cyIsIDppbnQpCisgICAgd2hlbiAidGl6IgorICAgICAgaGFuZGxlWDg2
U2V0VGVzdCgic2V0eiIsIDppbnQpCisgICAgd2hlbiAidGlueiIKKyAgICAgIGhhbmRsZVg4NlNl
dFRlc3QoInNldG56IiwgOmludCkKKyAgICB3aGVuICJ0Ym8iCisgICAgICBoYW5kbGVYODZTZXRU
ZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgd2hlbiAidGJzIgorICAgICAgaGFuZGxlWDg2U2V0VGVz
dCgic2V0cyIsIDpieXRlKQorICAgIHdoZW4gInRieiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3Qo
InNldHoiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ym56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgi
c2V0bnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJwZWVrIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwg
I3tvcGVyYW5kc1swXS52YWx1ZSAqIDR9KCVlc3ApLCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgIHdoZW4gInBva2UiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLnZhbHVlICogNH0oJWVzcCki
CisgICAgd2hlbiAiY2RxaSIKKyAgICAgICRhc20ucHV0cyAiXHRjZHEiCisgICAgd2hlbiAiaWRp
dmkiCisgICAgICAkYXNtLnB1dHMgIlx0aWRpdmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICB3aGVuICJmaWkyZCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmlu
dCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwc2xscSAkMzIsICV4bW03IgorICAgICAg
JGFzbS5wdXRzICJcdHBvciAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUp
fSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cHNybHEgJDMyLCAleG1tNyIKKyAgICAg
ICRhc20ucHV0cyAiXHRtb3ZzZCAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQp
fSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiQmFkIG9wY29kZTogI3tvcGNvZGV9IgorICAgIGVu
ZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisjZGVmaW5lIENv
ZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgJKHJldmlzaW9uIDEwNTc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5l
IENvbW1vblNsb3dQYXRoc19oCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgog
I2luY2x1ZGUgIkpTQXJyYXkuaCIKIApAQCAtNDEsNiArNDIsMzggQEAgbmFtZXNwYWNlIEpTQyB7
CiAKIG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMgewogCitBTFdBWVNfSU5MSU5FIEV4ZWNTdGF0
ZSogYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJG
aWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5jdGlvbiogY2Fs
bGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgQVNTRVJUKCFjYWxsZWUtPmlz
SG9zdEZ1bmN0aW9uKCkpOworICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+
anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KCk7CisKKyAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2Fz
ZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KKyAgICBp
ZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhleGVjLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgQVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
IDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworCisgICAgLy8gVG9vIGZldyBhcmd1
bWVudHMgLS0gY29weSBjYWxsIGZyYW1lIGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNz
aW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5lZC4KKyAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOworICAg
IFJlZ2lzdGVyKiBzcmMgPSBleGVjLT5yZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlciogZHN0ID0g
ZXhlYy0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKKworICAgIGludCBpOworICAgIGludCBlbmQgPSAt
RXhlY1N0YXRlOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgIGZv
ciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBzcmNbaV07CisKKyAg
ICBlbmQgLT0gZGVsdGE7CisgICAgZm9yICggOyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3Rb
aV0gPSBqc1VuZGVmaW5lZCgpOworCisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gRXhlY1N0YXRl
OjpjcmVhdGUoZHN0KTsKKyAgICBBU1NFUlQoKHZvaWQqKW5ld0V4ZWMgPD0gcmVnaXN0ZXJGaWxl
LT5lbmQoKSk7CisgICAgcmV0dXJuIG5ld0V4ZWM7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBv
cEluc3RhbmNlT2ZTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBi
YXNlVmFsLCBKU1ZhbHVlIHByb3RvKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNDZWxsKCkgfHwg
IWJhc2VWYWwuaXNDZWxsKCkgfHwgIXByb3RvLmlzQ2VsbCgpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMTA1NzcxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgorI2luY2x1ZGUgIkV4
ZWN1dGlvbkhhcm5lc3MuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVREcml2ZXIu
aCIKICNpbmNsdWRlICJQYXJzZXIuaCIKQEAgLTg0LDcgKzg1LDcgQEAgSW50cmluc2ljIE5hdGl2
ZUV4ZWN1dGFibGU6OmludHJpbnNpYygpIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRpYyB2
b2lkIGpldHRpc29uQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPFQ+
JiBjb2RlQmxvY2spCiB7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpICE9IEpJ
VENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklU
KGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+YWx0ZXJu
YXRpdmUoKSk7CiAgICAgT3duUHRyPFQ+IGNvZGVCbG9ja1RvSmV0dGlzb24gPSBjb2RlQmxvY2su
cmVsZWFzZSgpOwogICAgIGNvZGVCbG9jayA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8VD4oY29kZUJs
b2NrVG9KZXR0aXNvbi0+cmVsZWFzZUFsdGVybmF0aXZlKCkpOwpAQCAtMTY3LDkgKzE2OCwzMCBA
QCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpbWl6CiAgICAgcmV0dXJuIGVy
cm9yOwogfQogCit2b2lkIEV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRl
KGdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6
Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30K
KworaW5saW5lIGNvbnN0IGNoYXIqIHNhbXBsaW5nRGVzY3JpcHRpb24oSklUQ29kZTo6SklUVHlw
ZSBqaXRUeXBlKQoreworICAgIHN3aXRjaCAoaml0VHlwZSkgeworICAgIGNhc2UgSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAgICAgcmV0dXJuICJJbnRlcnByZXRlciBDb21waWxhdGlv
biAoVE9UQUwpIjsKKyAgICBjYXNlIEpJVENvZGU6OkJhc2VsaW5lSklUOgorICAgICAgICByZXR1
cm4gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6REZH
SklUOgorICAgICAgICByZXR1cm4gIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorfQorCiBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVj
U3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklU
VHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5
cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFM
KSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1w
bGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5B
QkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC0yMTAsNyArMjMyLDcgQEAg
SlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYQogICAgIH0KIAogI2lmIEVO
QUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlSWZBcHByb3ByaWF0ZSgqZ2xvYmFsRGF0YSwg
bV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKKyAgICBpZiAoIXBy
ZXBhcmVGb3JFeGVjdXRpb24oKmdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2Rl
Rm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTI5NSw5
ICszMTcsMTUgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlT3B0aQogICAg
IHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxl
SWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZv
ckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCk7Cit9CisKIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUlu
dGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBK
SVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdS
ZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxh
dGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5n
UmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAg
IAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTMzNiw3
ICszNjQsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlCiAgICAg
fQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJpYXRlKCpn
bG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUp
KQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29k
ZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAj
ZW5kaWYKIApAQCAtNDEyLDcgKzQ0MCw3IEBAIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmIKICAgICB3aGlsZSAocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKQogICAgICAgICBy
ZXN1bHQgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KHJlc3VsdC0+YWx0ZXJuYXRp
dmUoKSk7CiAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgQVNTRVJUKHJlc3VsdC0+Z2V0SklUVHlw
ZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNl
bGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CkBAIC00MzgsNiArNDY2LDE4IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBp
bGVPcHQKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpq
aXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCBy
ZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fY29k
ZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0
eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7Cisg
ICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERh
dGEsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0
Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpi
b3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQor
CiBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tXaXRoQnl0
ZWNvZGVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEZ1bmN0aW9uQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcihraW5kKTsKQEAgLTQ4Miw3
ICs1MjIsNyBAQCBQYXNzT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBGdW5jdGlvbkV4CiAKIEpT
T2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0
YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5
cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBl
ID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCki
IDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxp
bmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJM
RShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNTA0LDcgKzU0NCw3IEBAIEpTT2Jq
ZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0g
bV9jb2RlQmxvY2tGb3JDYWxsLT5zaGFyZWRTeW1ib2xUYWJsZSgpOwogCiAjaWYgRU5BQkxFKEpJ
VCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZv
ckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFw
cmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9j
a0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVj
aywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSwgQ29kZUZvckNhbGwpKQogICAgICAgICByZXR1cm4g
MDsKICNlbmRpZgogCkBAIC01MjQsNyArNTY0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y29tcGlsZUZvcgogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxl
Rm9yQ29uc3RydWN0SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2Nv
cGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1Jl
Z2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJh
c2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7
CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihq
aXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5
cGUpOwpAQCAtNTQ2LDcgKzU4Niw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNv
bXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnNo
YXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGls
ZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9y
Q29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdp
dGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVG
dW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ29u
c3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhB
cml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9yQ29uc3RydWN0KSkKICAg
ICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTA1NzcxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAjZGVmaW5lIEV4ZWN1dGFibGVfaAogCiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIKKyNpbmNs
dWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTM5LDEyICs0
MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1Z2dlcjsKICAgICBjbGFzcyBF
dmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNs
YXNzIFNjb3BlQ2hhaW5Ob2RlOwogCiAgICAgc3RydWN0IEV4Y2VwdGlvbkluZm87CiAgICAgCi0g
ICAgZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25z
dHJ1Y3QgfTsKICAgICBlbnVtIENvbXBpbGF0aW9uS2luZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9w
dGltaXppbmdDb21waWxhdGlvbiB9OwogCiAgICAgaW5saW5lIGJvb2wgaXNDYWxsKENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKQEAgLTMxOSw2ICszMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICB9OwogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
YWJsZSB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAg
cHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtMzM4
LDYgKzM0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQog
ICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAg
ICAgdm9pZCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgRXZh
bENvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAtMzg0LDYgKzM4Nyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBC
YXNlOwogCkBAIC00MTEsNiArNDE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lm
IEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFs
RGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYK
IAogICAgICAgICBQcm9ncmFtQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC00NTMs
NiArNDU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFi
bGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGlj
OgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNTA4LDYgKzUx
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAg
ICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7CisgICAg
ICAgIHZvaWQgaml0Q29tcGlsZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAg
ICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ2FsbCgpIGNvbnN0CkBAIC01MzUsNiArNTQyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQg
amV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYpOworICAgICAg
ICB2b2lkIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAog
ICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ29uc3RydWN0KCkgY29uc3QKQEAgLTU4Miw2ICs1
OTAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgamV0dGlzb25PcHRpbWl6
ZWRDb2RlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB2b2lkIGppdENvbXBpbGVGb3IoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAgICAgICAgaml0Q29tcGls
ZUZvckNhbGwoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAg
ICAgICAgICBqaXRDb21waWxlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOworICAgICAgICB9CiAj
ZW5kaWYKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3IoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0aW9uSGFybmVzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIEV4ZWN1dGlvbkhhcm5lc3NfaAorI2RlZmluZSBFeGVjdXRpb25IYXJuZXNzX2gKKworI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkpJ
VERyaXZlci5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+CitpbmxpbmUgYm9vbCBwcmVw
YXJlRm9yRXhlY3V0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPENvZGVCbG9j
a1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0
VHlwZSkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVD
b2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGlu
dGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RW50cnlwb2ludChnbG9iYWxEYXRhLCBjb2Rl
QmxvY2suZ2V0KCksIGppdENvZGUpOworICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0
Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorICAgIHJldHVybiBqaXRDb21waWxlSWZBcHBy
b3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdFR5cGUpOworfQorCitp
bmxpbmUgYm9vbCBwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGpp
dENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFy
ZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYg
KEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9m
ZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RnVuY3Rp
b25FbnRyeXBvaW50KGdsb2JhbERhdGEsIGtpbmQsIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlD
aGVjayk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0
aEFyaXR5Q2hlY2spOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShraW5kKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGpp
dENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLCBqaXRD
b2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIHN5bWJvbFRhYmxlLCBqaXRUeXBlKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8g
RXhlY3V0aW9uSGFybmVzc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMDU3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEy
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmll
cjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBhZG9wdEFycmF5UHRyKG5ldyBXcml0ZUJhcnJp
ZXI8VW5rbm93bj5bcmVnaXN0ZXJBcnJheVNpemVdKTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFVu
a25vd24+KiByZWdpc3RlcnMgPSByZWdpc3RlckFycmF5LmdldCgpICsgcmVnaXN0ZXJPZmZzZXQ7
Ci0KKyAgICAgICAgCiAgICAgICAgIC8vIENvcHkgYWxsIGFyZ3VtZW50cyB0aGF0IGNhbiBiZSBj
YXB0dXJlZCBieSBuYW1lIG9yIGJ5IHRoZSBhcmd1bWVudHMgb2JqZWN0LgogICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG1fbnVtQ2FwdHVyZWRBcmdzOyArK2kpIHsKICAgICAgICAgICAgIGlu
dCBpbmRleCA9IENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoaSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAxMDU3NzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNBcnJheTsKKyAgICBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBzdHJ1Y3QgU3BhcnNlQXJyYXlFbnRyeSA6
IHB1YmxpYyBXcml0ZUJhcnJpZXI8VW5rbm93bj4gewogICAgICAgICB0eXBlZGVmIFdyaXRlQmFy
cmllcjxVbmtub3duPiBCYXNlOwpAQCAtMTIyLDYgKzEyMyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIH07CiAKICAgICBjbGFzcyBKU0FycmF5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewor
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmll
bmQgY2xhc3MgV2Fsa2VyOwogCiAgICAgcHJvdGVjdGVkOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDEwNTc3MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiwxMCBA
QAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKLSAgICBjbGFz
cyBTdHJ1Y3R1cmU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKKyAgICBj
bGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBlbnVtIEVudW1lcmF0aW9uTW9kZSB7CiAgICAgICAgIEV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsCkBAIC0xNjQsNiArMTY1LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
IAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CisgICAgICAgIAogICAgICAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwogICAg
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKICAgICB9OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTA1
NzcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1
bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEpTQWN0aXZhdGlvbjsKICAgICBjbGFzcyBKU0ds
b2JhbE9iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
TmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBTb3VyY2VDb2RlOwogICAgIG5hbWVzcGFjZSBE
RkcgewpAQCAtMTQwLDYgKzE0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRl
OgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAK
ICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgp
IGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3Rh
dGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDEwNTc3MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MSw2ICsxNDEsOCBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9i
YWxEYXRhVHlwCiAgICAgLCBrZXl3b3JkcyhhZG9wdFB0cihuZXcgS2V5d29yZHModGhpcykpKQog
ICAgICwgaW50ZXJwcmV0ZXIoMCkKICAgICAsIGhlYXAodGhpcywgaGVhcFNpemUpCisgICAgLCBq
c0FycmF5Q2xhc3NJbmZvKCZKU0FycmF5OjpzX2luZm8pCisgICAgLCBqc0ZpbmFsT2JqZWN0Q2xh
c3NJbmZvKCZKU0ZpbmFsT2JqZWN0OjpzX2luZm8pCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAg
LCBzaXplT2ZMYXN0U2NyYXRjaEJ1ZmZlcigwKQogI2VuZGlmCkBAIC0yMTYsNyArMjE4LDcgQEAg
SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgIGppdFN0dWJzID0g
YWRvcHRQdHIobmV3IEpJVFRodW5rcyh0aGlzKSk7CiAjZW5kaWYKIAotICAgIGludGVycHJldGVy
LT5pbml0aWFsaXplKHRoaXMtPmNhblVzZUpJVCgpKTsKKyAgICBpbnRlcnByZXRlci0+aW5pdGlh
bGl6ZSgmbGxpbnREYXRhLCB0aGlzLT5jYW5Vc2VKSVQoKSk7CiAKICAgICBoZWFwLm5vdGlmeUlz
U2FmZVRvQ29sbGVjdCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDEwNTc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAs
MTYgQEAKICNkZWZpbmUgSlNHbG9iYWxEYXRhX2gKIAogI2luY2x1ZGUgIkNhY2hlZFRyYW5zY2Vu
ZGVudGFsRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJEYXRl
SW5zdGFuY2VDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNs
dWRlICJIZWFwLmgiCi0jaW5jbHVkZSAiU3Ryb25nLmgiCisjaW5jbHVkZSAiSW50cmluc2ljLmgi
CiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
TExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTnVtZXJpY1N0cmluZ3MuaCIKICNpbmNsdWRlICJTbWFs
bFN0cmluZ3MuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUZXJtaW5hdG9yLmgi
CiAjaW5jbHVkZSAiVGltZW91dENoZWNrZXIuaCIKICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCkBA
IC02NSw2ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0
OwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEtleXdvcmRzOworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNs
YXNzIFBhcnNlckFyZW5hOwogICAgIGNsYXNzIFJlZ0V4cENhY2hlOwpAQCAtMjQxLDYgKzI0Mywx
MiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSGVhcCBoZWFwOwogCiAgICAgICAgIEpTVmFs
dWUgZXhjZXB0aW9uOworCisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QganNBcnJheUNs
YXNzSW5mbzsKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0ZpbmFsT2JqZWN0Q2xh
c3NJbmZvOworCisgICAgICAgIExMSW50OjpEYXRhIGxsaW50RGF0YTsKKwogI2lmIEVOQUJMRShK
SVQpCiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIgZXhjZXB0aW9uTG9jYXRpb247CiAgICAgICAg
IEpTVmFsdWUgaG9zdENhbGxSZXR1cm5WYWx1ZTsKQEAgLTM0Niw2ICszNTQsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICN1bmRlZiByZWdpc3RlclR5cGVkQXJyYXlGdW5jdGlvbgogCiAgICAgcHJpdmF0
ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAg
CiAgICAgICAgIEpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBI
ZWFwU2l6ZSk7CiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEqJiBzaGFyZWRJbnN0YW5jZUlu
dGVybmFsKCk7CiAgICAgICAgIHZvaWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24g
MTA1NzcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xh
c3MgR2xvYmFsQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxv
Y2s7CiAgICAgY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CkBAIC0zMzUsNiArMzM2LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkU3RhdGljR2xv
YmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBpbnQgY291bnQpOwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIC8vIEZJWE1FOiBGb2xkIHJlc2V0IGludG8gaW5pdC4KICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBpbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpOwogICAgICAgICB2b2lkIHJlc2V0
KEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAkocmV2aXNpb24gMTA1NzcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgSGFzaEVudHJ5Owog
ICAgIGNsYXNzIEludGVybmFsRnVuY3Rpb247CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRv
cjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKQEAgLTI3MSw2ICsyNzIsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgSlNPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwg
UHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8v
IE5vYm9keSBzaG91bGQgZXZlciBhc2sgYW55IG9mIHRoZXNlIHF1ZXN0aW9ucyBvbiBzb21ldGhp
bmcgYWxyZWFkeSBrbm93biB0byBiZSBhIEpTT2JqZWN0LgogICAgICAgICB1c2luZyBKU0NlbGw6
OmlzQVBJVmFsdWVXcmFwcGVyOwogICAgICAgICB1c2luZyBKU0NlbGw6OmlzR2V0dGVyU2V0dGVy
OwpAQCAtMzgzLDYgKzM4Niw4IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGlu
ZVN0b3IKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHByaXZh
dGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAg
IAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERh
dGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQogICAgICAgICB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oCShyZXZpc2lvbiAxMDU3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJZGVudGlmaWVyOwogICAgIGNsYXNzIEpTT2Jq
ZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNz
IEpJVDsKQEAgLTk2LDYgKzk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgICAgIAogICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVh
YmxlU2xvdCk7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRTdHJ1
Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJl
dmlzaW9uIDEwNTc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgSlNTdHJpbmc7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAg
ICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7CiAgICAgSlNTdHJpbmcq
IGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKik7CkBAIC0yNDAsNiArMjQxLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJl
c29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xv
d0Nhc2U4KExDaGFyKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZShV
Q2hhciopIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZUluZm8uaAkocmV2aXNpb24gMTA1NzcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxOyAvLyBXZWJDb3Jl
IHVzZXMgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCB0byBtYWtlIGRvY3VtZW50LmFsbCB1bmRldGVj
dGFibGUuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEltcGxlbWVudHNIYXNJbnN0YW5jZSA9
IDEgPDwgMTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJpZGVzSGFzSW5zdGFuY2Ug
PSAxIDw8IDI7CkBAIC04Nyw2ICs4OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAK
ICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworICAgICAgICAKICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MxKHVuc2lnbmVkIGZsYWcpIGNv
bnN0IHsgQVNTRVJUKGZsYWcgPD0gKDEgPDwgNykpOyByZXR1cm4gbV9mbGFncyAmIGZsYWc7IH0K
ICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MyKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJU
KGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1cm4gbV9mbGFnczIgJiAoZmxhZyA+PiA4KTsgfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24g
MTA1NzcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExNiwxMCArMTE2LDkgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRo
ZXNpemVQcm90b3R5cGUoRQogICAgIHJldHVybiBKU05vdEFuT2JqZWN0OjpjcmVhdGUoZXhlYyk7
CiB9CiAKLSNpZm5kZWYgTkRFQlVHCiBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiB7Ci0g
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0gNjQ7CisgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBzaXplID0gMTI4OwogICAgIHN0YXRpYyBjaGFyIGRlc2NyaXB0aW9uW3NpemVdOwogCiAgICAg
aWYgKCEqdGhpcykKQEAgLTEyOCwxNCArMTI3LDE0IEBAIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0
aW9uKCkKICAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJJbnQzMjogJWQiLCBh
c0ludDMyKCkpOwogICAgIGVsc2UgaWYgKGlzRG91YmxlKCkpIHsKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlbHgi
LCBhc0RvdWJsZSgpLCByZWludGVycHJldERvdWJsZVRvSW50cHRyKGFzRG91YmxlKCkpKTsKKyAg
ICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVseCwgJWxmIiwgcmVp
bnRlcnByZXREb3VibGVUb0ludHB0cihhc0RvdWJsZSgpKSwgYXNEb3VibGUoKSk7CiAjZWxzZQog
ICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBkb3VibGUgYXNEb3VibGU7CiAgICAgICAgICAg
ICB1aW50MzJfdCBhc1R3b0ludDMyc1syXTsKICAgICAgICAgfSB1OwogICAgICAgICB1LmFzRG91
YmxlID0gYXNEb3VibGUoKTsKLSAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJE
b3VibGU6ICVsZiwgJTA4eDolMDh4IiwgYXNEb3VibGUoKSwgdS5hc1R3b0ludDMyc1sxXSwgdS5h
c1R3b0ludDMyc1swXSk7CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91
YmxlOiAlMDh4OiUwOHgsICVsZiIsIHUuYXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0s
IGFzRG91YmxlKCkpOwogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChpc0NlbGwoKSkKICAgICAgICAg
c25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJDZWxsOiAlcCIsIGFzQ2VsbCgpKTsKQEAgLTE1
Miw3ICsxNTEsNiBAQCBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiAKICAgICByZXR1cm4g
ZGVzY3JpcHRpb247CiB9Ci0jZW5kaWYKIAogLy8gVGhpcyBpbiB0aGUgVG9JbnQzMiBvcGVyYXRp
b24gaXMgZGVmaW5lZCBpbiBzZWN0aW9uIDkuNSBvZiB0aGUgRUNNQS0yNjIgc3BlYy4KIC8vIE5v
dGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBpZGVudGljYWwgdG8gVG9VSW50MzIgb3RoZXIgdGhh
biB0byBpbnRlcnByZXRhdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VmFsdWUuaAkocmV2aXNpb24gMTA1NzcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsOSArMjMyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEpTQ2VsbCogYXNDZWxsKCkgY29uc3Q7CiAgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIGJvb2wgaXNWYWxpZENhbGxlZSgpOwogCi0jaWZuZGVmIE5ERUJVRwogICAgICAg
ICBjaGFyKiBkZXNjcmlwdGlvbigpOwotI2VuZGlmCiAKICAgICBwcml2YXRlOgogICAgICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVD4gSlNWYWx1ZShXcml0ZUJhcnJpZXJCYXNlPFQ+KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJl
dmlzaW9uIDEwNTc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFi
bGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEyIEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFJl
Z2lzdGVyOwogCiAgICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBK
U05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTA1NzcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDEwIEBAIHVu
c2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGkKIAogdW5zaWduZWQgbWF4aW11
bUlubGluaW5nRGVwdGg7CiAKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0
ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1l
U29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogaW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkBAIC0xMzcs
NiArMTQxLDEwIEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIAogICAgIFNFVChtYXhp
bXVtSW5saW5pbmdEZXB0aCwgNSk7CiAKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
SklUQWZ0ZXJXYXJtVXAsICAgICAtMTAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yRG9udEpJVEFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4o
KSk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb24sICAgICAgICAgICAg
LTEwMCk7CisKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldh
cm1VcCwgICAgIC0xMDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1p
emVBZnRlckxvbmdXYXJtVXAsIC01MDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yRG9udE9wdGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1pbigpKTsKQEAgLTE4NSw2ICsxOTMsOCBAQCB2b2lkIGluaXRpYWxpemVPcHRpb25zKCkKICAg
ICBpZiAoY3B1c1RvVXNlIDwgMSkKICAgICAgICAgY3B1c1RvVXNlID0gMTsKICAgICAKKyAgICBj
cHVzVG9Vc2UgPSAxOworICAgIAogICAgIFNFVChudW1iZXJPZkdDTWFya2VycywgY3B1c1RvVXNl
KTsKIAogICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0
aW1lU29vbiA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1V
cCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lv
biAxMDU3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEwIEBAIGV4dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVu
Y3Rpb25Gb3JDb25zdHIKIAogZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOyAv
LyBEZXB0aCBvZiBpbmxpbmUgc3RhY2ssIHNvIDEgPSBubyBpbmxpbmluZywgMiA9IG9uZSBsZXZl
bCwgZXRjLgogCitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRl
cldhcm1VcDsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRB
bnl0aW1lU29vbjsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNv
b247CisKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0
ZXJXYXJtVXA7CiBleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6
ZUFmdGVyTG9uZ1dhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gMTA1NzcxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9yOwogICAgIGNsYXNzIFNs
b3RWaXNpdG9yOwogICAgIApAQCAtOTEsNiArOTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHBy
aXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
ICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMDU3NzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUs
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVB
cnJheURhdGE7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CkBAIC0xOTYsNiArMTk3LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNz
SW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3Ry
dWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUs
IGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKik7CiAgICAgICAgIFN0cnVjdHVyZShK
U0dsb2JhbERhdGEmKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0
cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
Q2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAxMDU3NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBA
CiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluIDogcHVibGlj
IEpTQ2VsbCB7CkBAIC03NCw2ICs3NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAK
ICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworICAgICAgICAKICAgICAgICAgU3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiwgU3RydWN0
dXJlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIE93
bkFycmF5UHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAxMDU3NzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTkxOCw2ICs5
MTgsMTggQEAKICNkZWZpbmUgRU5BQkxFX0pJVCAxCiAjZW5kaWYKIAorLyogT24gc29tZSBvZiB0
aGUgcGxhdGZvcm1zIHdoZXJlIHdlIGhhdmUgYSBKSVQsIHdlIHdhbnQgdG8gYWxzbyBoYXZlIHRo
ZSAKKyAgIGxvdy1sZXZlbCBpbnRlcnByZXRlci4gKi8KKyNpZiAhZGVmaW5lZChFTkFCTEVfTExJ
TlQpICYmIEVOQUJMRShKSVQpICYmIFBMQVRGT1JNKE1BQykgJiYgVVNFKEpTVkFMVUUzMl82NCkK
KyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyNlbmRpZgorCisvKiBJZiB3ZSBoYXZlIExMSW50IGVu
YWJsZWQgYW5kIHRoZSBKSVQgZW5hYmxlZCwgd2UgYWxzbyBlbmFibGUgT1NSaW5nIGZyb20KKyAg
IExMSW50IHRvIHRoZSBKSVQuICovCisjaWYgIWRlZmluZWQoRU5BQkxFX0xMSU5UX09TUl9UT19K
SVQpICYmIEVOQUJMRShKSVQpICYmIEVOQUJMRShMTElOVCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5U
X09TUl9UT19KSVQgMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfREZHX0pJVCkgJiYg
RU5BQkxFKEpJVCkKIC8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBYODYgYW5kIFg4Nl82NC4gIE9u
bHkgdGVzdGVkIG9uIE1hYyBhbmQgR05VL0xpbnV4LiAqLwogI2lmIChDUFUoWDg2KSB8fCBDUFUo
WDg2XzY0KSkgJiYgKFBMQVRGT1JNKE1BQykgfHwgT1MoTElOVVgpKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCShyZXZpc2lvbiAxMDU3
NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4IEBAIHB1YmxpYzoKIAogICAgIGl0ZXJhdG9yIGJl
Z2luKCk7CiAgICAgaXRlcmF0b3IgZW5kKCk7CisgICAgCisgICAgYm9vbCBpc0VtcHR5KCkgeyBy
ZXR1cm4gYmVnaW4oKSA9PSBlbmQoKTsgfQogCiBwcml2YXRlOgogICAgIFJhd05vZGUgbV9oZWFk
U2VudGluZWw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1w
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJ
bXBsLmgJKHJldmlzaW9uIDEwNTc3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4
dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgdHlwZWRlZiBj
b25zdCBzdHJ1Y3QgX19DRlN0cmluZyAqIENGU3RyaQogLy8gTGFuZGluZyB0aGUgZmlsZSBtb3Zl
cyBpbiBvbmUgcGF0Y2gsIHdpbGwgZm9sbG93IG9uIHdpdGggcGF0Y2hlcyB0byBjaGFuZ2UgdGhl
IG5hbWVzcGFjZXMuCiBuYW1lc3BhY2UgSlNDIHsKIHN0cnVjdCBJZGVudGlmaWVyQ1N0cmluZ1Ry
YW5zbGF0b3I7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RydWN0IElkZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjsKIHN0cnVjdCBJZGVu
dGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9yOwogfQpAQCAtNzIsNyArNzMsOCBAQCBjbGFz
cyBTdHJpbmdJbXBsIHsKICAgICBmcmllbmQgc3RydWN0IFdURjo6U3Vic3RyaW5nVHJhbnNsYXRv
cjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6VUNoYXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZy
aWVuZCBjbGFzcyBBdG9taWNTdHJpbmdJbXBsOwotCisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogcHJpdmF0ZToKICAgICBlbnVtIEJ1ZmZlck93bmVy
c2hpcCB7CiAgICAgICAgIEJ1ZmZlckludGVybmFsLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123822</attachid>
            <date>2012-01-24 15:08:07 -0800</date>
            <delta_ts>2012-01-24 17:28:22 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>triple_tier_47.diff</filename>
            <type>text/plain</type>
            <size>433088</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1ODE3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwNiBA
QAorMjAxMi0wMS0yNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgV09SSyBJTiBQUk9HUkVTUy4gIFN0YXR1czogd29ya3Mgb24gTWFjIDMyLWJpdC4g
UHJvZHVjZXMgc3BlZWQtdXBzLgorICAgICAgICBQYXNzZXMgdGVzdHMuIE5vdyBuZWVkIHRvIG1h
a2Ugc3VyZSBpdCBkaWQgYnJlYWsgdGhlIHJlc3Qgb2YgdGhlCisgICAgICAgIFdlYktpdCB1bml2
ZXJzZS4KKyAgICAgICAgCisgICAgICAgIEltcGxlbWVudGVkIGFuIGludGVycHJldGVyIHRoYXQg
dXNlcyB0aGUgSklUJ3MgY2FsbGluZyBjb252ZW50aW9uLiBUaGlzCisgICAgICAgIGludGVycHJl
dGVyIGlzIGNhbGxlZCBMTEludCwgb3IgdGhlIExvdyBMZXZlbCBJbnRlcnByZXRlci4gSlNDIHdp
bGwgbm93CisgICAgICAgIHdpbGwgc3RhcnQgYnkgZXhlY3V0aW5nIGNvZGUgaW4gTExJbnQgYW5k
IHdpbGwgb25seSB0aWVyIHVwIHRvIHRoZSBvbGQKKyAgICAgICAgSklUIGFmdGVyIHRoZSBjb2Rl
IGlzIHByb3ZlbiBob3QuCisgICAgICAgIAorICAgICAgICBMTEludCBpcyB3cml0dGVuIGluIGEg
bW9kaWZpZWQgZm9ybSBvZiBvdXIgbWFjcm8gYXNzZW1ibHkuIFRoaXMgbmV3IG1hY3JvCisgICAg
ICAgIGFzc2VtYmx5IGlzIGNvbXBpbGVkIGJ5IGFuIG9mZmxpbmUgYXNzZW1ibGVyIChzZWUgb2Zm
bGluZWFzbSksIHdoaWNoCisgICAgICAgIGltcGxlbWVudHMgbWFueSBtb2Rlcm4gY29udmVuaWVu
Y2VzIHN1Y2ggYXMgYSBUdXJpbmctY29tcGxldGUgQ1BTLWJhc2VkCisgICAgICAgIG1hY3JvIGxh
bmd1YWdlIGFuZCBkaXJlY3QgYWNjZXNzIHRvIHJlbGV2YW50IEMrKyB0eXBlIGluZm9ybWF0aW9u
CisgICAgICAgIChiYXNpY2FsbHkgb2Zmc2V0cyBvZiBmaWVsZHMgYW5kIHNpemVzIG9mIHN0cnVj
dHMvY2xhc3NlcykuCisgICAgICAgIAorICAgICAgICBDb2RlIGV4ZWN1dGluZyBpbiBMTEludCBh
cHBlYXJzIHRvIHRoZSByZXN0IG9mIHRoZSBKU0Mgd29ybGQgImFzIGlmIiBpdAorICAgICAgICB3
ZXJlIGV4ZWN1dGluZyBpbiB0aGUgb2xkIEpJVC4gSGVuY2UsIHRoaW5ncyBsaWtlIGV4Y2VwdGlv
biBoYW5kbGluZyBhbmQKKyAgICAgICAgY3Jvc3MtZXhlY3V0aW9uLWVuZ2luZSBjYWxscyBqdXN0
IHdvcmsgYW5kIHJlcXVpcmUgcHJldHR5IG11Y2ggbm8KKyAgICAgICAgYWRkaXRpb25hbCBvdmVy
aGVhZC4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaW50ZXJwcmV0ZXIgaXMgMi0yLjV4IGZhc3Rl
ciB0aGFuIG91ciBvbGQgaW50ZXJwcmV0ZXIgb24gU3VuU3BpZGVyLAorICAgICAgICBWOCwgYW5k
IEtyYWtlbi4gVGhpcyBpcyB0aGUgImZpcnN0IGF0dGVtcHQiIHBlcmZvcm1hbmNlIC0gbm8gd29y
ayBoYXMgYmVlbgorICAgICAgICBkb25lIHRvIGRpYWdub3NlIGFueSBwb3RlbnRpYWwgYm90dGxl
bmVja3MuIE1hbnkgb2J2aW91cyBvbmVzIGV4aXN0LCBsaWtlCisgICAgICAgIHJlZHVjaW5nIHRo
ZSBudW1iZXIgb2YgaW5zdHJ1Y3Rpb25zIGltcGxlbWVudGVkIGFzIHNsb3cgY2FsbHMgdG8gQysr
IGNvZGUKKyAgICAgICAgYW5kIG1ha2luZyBwcm9wZXJ0eSBhY2Nlc3MgY2FjaGluZyBtb3JlIGFn
Z3Jlc3NpdmUuCisgICAgICAgIAorICAgICAgICBBcyBhbiBhZGRpdGlvbmFsIGNoYW5nZSwgdGhp
cyBwYXRjaCBtYWtlcyBieXRlY29kZSBkdW1waW5nIGFuZCBKU1ZhbHVlCisgICAgICAgIGR1bXBp
bmcgd29yayBpbiByZWxlYXNlIGJ1aWxkcywgc2luY2UgZGVidWdnaW5nIHNvbWUgb2YgdGhlIG5h
c3RpZXIKKyAgICAgICAgYXNwZWN0cyBvZiB0aGlzIHBhdGNoIHdvdWxkIGhhdmUgYmVlbiBpbXBv
c3NpYmxlIHdpdGhvdXQgdGhhdC4gQW5kIEkKKyAgICAgICAgZG9uJ3QgYmVsaWV2ZSB0aGF0IHdl
IGNhcmUgYWJvdXQgdGhlIG1pbmlzY3VsZSBjb2RlIGJsb2F0IHRoYXQgdGhpcworICAgICAgICBp
bnRyb2R1Y2VzLgorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBK
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2Vt
Ymxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3Bw
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAg
ICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6aXNTZXQp
OgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6b3BlcmF0b3IhKToKKyAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6fkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJv
bmdSZWZlcmVuY2VzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtDYWxscyk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxscyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29k
ZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmpldHRpc29u
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAg
KEpTQzo6UHJvZ3JhbUNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwpOgorICAgICAgICAoSlNDOjpF
dmFsQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uQ29k
ZUJsb2NrOjpqaXRDb21waWxlSW1wbCk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFuZGxlQnl0ZWNv
ZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmppdENv
bXBpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omhhc09wdGltaXplZFJlcGxhY2VtZW50
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9u
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24p
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZExMSW50Q2FsbExpbmtJbmZvKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjphZGRHbG9iYWxSZXNvbHZlSW5mbyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6bnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpjb3VsZFRha2VTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6bGlrZWx5VG9UYWtlU3BlY2lhbEZhc3RDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
Omxpa2VseVRvVGFrZUFueVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRG
cmVxdWVudEV4aXRTaXRlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkb250SklUQW55dGlt
ZVNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmppdEFmdGVyV2FybVVwKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRTb29uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
bGludEV4ZWN1dGVDb3VudGVyKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAg
ICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6R2V0QnlJZFN0
YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6Ondhc1NlZW5JbkpJVCk6CisgICAg
ICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246
Okluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5j
cHA6CisgICAgICAgIChKU0M6Ok1ldGhvZENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKToKKyAg
ICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6
CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5
dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVH
ZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6c2V0RHVtcHNH
ZW5lcmF0ZWRDb2RlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2Vu
ZXJhdGVkQ29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aFRoaXMpOgorICAgICAgICAo
SlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0
cnVjdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gpOgorICAg
ICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OmdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpTQzo6REZH
OjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxp
dGllcy5oOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAgICAgICAq
IGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25z
LmNwcDoKKyAgICAgICAgKiBoZWFwL0FsbG9jYXRpb25TcGFjZS5oOgorICAgICAgICAqIGhlYXAv
SGVhcC5jcHA6CisgICAgICAgIChKU0M6OkhlYXA6OmNvbGxlY3QpOgorICAgICAgICAqIGhlYXAv
SGVhcC5oOgorICAgICAgICAqIGhlYXAvTWFya1N0YWNrLmNwcDoKKyAgICAgICAgKEpTQzo6dmlz
aXRDaGlsZHJlbik6CisgICAgICAgICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAqIGlu
dGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAoSlNDOjpFeGVjU3RhdGU6OmN1cnJlbnRW
UEMpOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcik6CisgICAgICAgIChKU0M6OkludGVycHJldGVy
Ojppbml0aWFsaXplKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnVud2luZENhbGxGcmFtZSk6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIpOgorICAgICAgICAqIGludGVycHJldGVy
L0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGUpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6ZW5hYmxlZCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxl
Lmg6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2Fz
ZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQv
SklUQ29kZS5oOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjppc09wdGltaXppbmdKSVQpOgorICAg
ICAgICAoSlNDOjpKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENv
ZGU6OkpJVENvZGUpOgorICAgICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6
aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rp
b25JZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6OmppdFRocm93KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAg
ICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNl
SklULmg6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpT
Qzo6Q29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4
ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAg
IChKU0M6OkV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6c2FtcGxp
bmdEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50
ZXJuYWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6Cisg
ICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdCk6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbCk6Cisg
ICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVy
bmFsKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0
aXZhdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnRlYXJPZmYpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAg
ICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNTdHJpbmcu
aDoKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0pT
VmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpkZXNjcmlwdGlvbik6CisgICAgICAg
ICogcnVudGltZS9KU1ZhbHVlLmg6CisgICAgICAgICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0
Lmg6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6T3B0aW9u
czo6aW5pdGlhbGl6ZU9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAg
ICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJl
Lmg6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oOgorICAgICAgICAqIHd0Zi9Q
bGF0Zm9ybS5oOgorICAgICAgICAqIHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaDoKKyAgICAgICAg
KFdURjo6U2VudGluZWxMaW5rZWRMaXN0Ojppc0VtcHR5KToKKyAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdJbXBsLmg6CisKIDIwMTItMDEtMjQgIE1hcmsgSGFobmVuYmVyZyAgPG1oYWhuZW5iZXJn
QGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgY29weWluZyBjb2xsZWN0b3IgZm9yIG91dC1vZi1s
aW5lIEpTT2JqZWN0IHByb3BlcnR5IHN0b3JhZ2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQg
QEAKLSMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4
LCAyMDA5LCAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjAsNiArNjAsNyBAQCBhbGwgOiBcCiAgICAgU3Ry
aW5nQ29uc3RydWN0b3IubHV0LmggXAogICAgIFN0cmluZ1Byb3RvdHlwZS5sdXQuaCBcCiAgICAg
ZG9jcy9ieXRlY29kZS5odG1sIFwKKyAgICBMTEludEFzc2VtYmx5LmguUEhPTlkgXAogIwogCiAj
IGxvb2t1cCB0YWJsZXMgZm9yIGNsYXNzZXMKQEAgLTEwNCwzICsxMDUsMTEgQEAgSGVhZGVyRGV0
ZWN0aW9uLmggOgogCWVjaG8gPiAkQAogCiBlbmRpZgorCisjIEFzc2VtYmx5IGZvciB0aGUgTG93
TGV2ZWxJbnRlcnByZXRlcgorCisjIFRoaXMgYnVpbGRzIGV2ZXJ5IHRpbWUgYmVjYXVzZSB0aGVy
ZSBpcyBubyBlYXN5IHdheSB0byBkZXNjcmliZQorIyB0aGUgZGVwZW5kZW5jaWVzIHVzaW5nIG1h
a2UuIEluc3RlYWQsIHRoZSBhc3NlbWJsZXIgd2lsbCBkZWNpZGUgb24KKyMgaXRzIG93biB3aGV0
aGVyIG9yIG5vdCBpdCBkaWQgYW55dGhpbmcgdGhhdCB3b3VsZCBsZWFkIHRvIGEgY2hhbmdlLgor
TExJbnRBc3NlbWJseS5oLlBIT05ZOgorCXJ1YnkgJChKYXZhU2NyaXB0Q29yZSkvb2ZmbGluZWFz
bS9hc20ucmIgJChKYXZhU2NyaXB0Q29yZSkvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20g
JChCVUlMVF9QUk9EVUNUU19ESVIpL0pTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciBMTEludEFzc2Vt
Ymx5LmgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDU3NzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE1IEBACiAJb2JqZWN0cyA9IHsK
IAogLyogQmVnaW4gUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwQTkxNEJB
N0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8gPSB7CisJCQlpc2EgPSBQQlhBZ2dyZWdh
dGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwQUMxNEJBN0ZEOTAw
QkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0
ICJMTEludCBPZmZzZXRzIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MEFBMTRC
QTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCisJCQkpOworCQkJ
bmFtZSA9ICJMTEludCBPZmZzZXRzIjsKKwkJCXByb2R1Y3ROYW1lID0gIkRlcml2ZWQgU291cmNl
cyI7CisJCX07CiAJCTY1RkIzRjY2MDlEMTFFOTEwMEY0OURFQiAvKiBEZXJpdmVkIFNvdXJjZXMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRp
b25MaXN0ID0gNjVGQjNGNzcwOUQxMUVCRDAwRjQ5REVCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24g
bGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJEZXJpdmVkIFNvdXJjZXMiICovOwpAQCAtMTQs
NiArMjMsOSBAQAogCQkJCTY1RkIzRjY1MDlEMTFFOTEwMEY0OURFQiAvKiBHZW5lcmF0ZSBEZXJp
dmVkIFNvdXJjZXMgKi8sCiAJCQkJNUQzNURFRTEwQzdDMTQwQjAwODY0OEIyIC8qIEdlbmVyYXRl
IERUcmFjZSBoZWFkZXIgKi8sCiAJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4
MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKIAkJ
CW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJCXByb2R1Y3ROYW1lID0gIkRlcml2ZWQgU291
cmNlcyI7CiAJCX07CkBAIC00OCw2ICs2MCwxMCBAQAogCQkwQkFDOTRBMDEzMzg3Mjg0MDBDRjEz
NUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVh
ZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwQkNEODM1NzE0ODU4NDUyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hh
bmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkNE
ODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJGMjhBMjkxMUEzM0RDMzAwNjM4
Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICov
OyB9OworCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NTE0
QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi87IH07CisJCTBGMEI4MzlC
MTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyog
TExJbnRFbnRyeXBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NzE0
QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovOyB9OworCQkwRjBCODM5RDE0QkNG
NDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5r
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
MEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENv
ZGVUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBODE0QkNGNTVFMDA4ODVC
NEYgLyogSGFuZGxlckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdl
SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYw
QjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTgsOSArNzQsMTMgQEAK
IAkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjMxNEJDRjg1
RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBH
bG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgz
QjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCODE0
QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBGQzQ1QTE0
QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBM
TEludENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTVGMTVE
MTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE2RDcyNjE0MkMzOUMwMDBDRjc4NEEg
LyogQml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwICovOyB9Owog
CQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJpdmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI2NjE0QkU1RjVFMDBBREM2NEIg
LyogSklURHJpdmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjdBMTRC
RTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8q
IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjdFMTRC
RUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyNDJEQTcxM0YzQjFFODAwN0FERDRD
IC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJl
bmNlSGFydmVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEYyQzU1NkYxNDczOEYzMTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZFMTQ3MzhG
MkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NzAxNDczOEYzNTAwMTIxRTRGIC8qIERGR0Nv
ZGVCbG9ja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICovOyB9OwpA
QCAtNzEsNiArOTEsMTkgQEAKIAkJMEY0MzE3MzgxNDZCQUM2OTAwN0UzODkwIC8qIExpc3RhYmxl
SGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4MDgyMTRCQTU3MkQw
MEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9u
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
NDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3
MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcy
IC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4
MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8q
IExMSW50SGVscGVycy5jcHAgKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8t
dW51c2VkLXBhcmFtZXRlciI7IH07IH07CisJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBM
TEludEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBBNzE0QkE3RkEx
MDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBM
TEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovOyB9OworCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUy
NzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlv
bnMuY3BwICovOyB9OworCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21tb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM1
MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBM
TEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21D
b25maWcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNzE0QkJC
MTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi87IH07CisJCTBGNDY4MENE
MTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIg
LyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Njgw
Q0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi87IH07CisJCTBGNDY4MEQzMTRC
QkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2
ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMDE0QkJDNUY4MDBC
RkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi87IH07CisJCTBGNDY4MEQ1MTRCQkQy
NEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9z
dENhbGxSZXR1cm5WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmlu
YWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjIwMTc0MTQz
RkNEMzMwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjIwMTcyMTQzRkNEMkYwMDY4Qjc3QyAv
KiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjYyMDE3NTE0M0ZDRDM3MDA2OEI3N0MgLyogREZHT3BlcmFu
ZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjIw
MTcxMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdPcGVyYW5kcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zODMsNyArNDE2LDcgQEAKIAkJODZCOTlB
RTMxMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCOTlBRTExMTdFNTc4MTAwREY1QTkwIC8qIFN0
cmluZ0J1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2QkIwOUMwMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJFMTM4RTM4MUIw
MDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCAqLzsgfTsKIAkJODZCQjA5QzExMzhFMzgxQjAwNTY3
MDJGIC8qIERGR1JlcGF0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2QkIwOUJGMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggKi87IH07
Ci0JCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAw
QjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IH07CisJCTg2QzM2RUVBMEVFMTI4OUQwMEIz
REY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZD
NTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OEREMTFBMjEzRUUwMDA3
RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgKi87IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUw
MDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fz
c2VtYmxlck1JUFMuaCAqLzsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNB
c3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IH07CkBAIC03
NTIsNiArNzg1LDIwIEBACiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjExNEJBODExNTAw
QkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRh
aW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJB
QUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVH
bG9iYWxJRFN0cmluZyA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8g
PSAiTExJbnQgT2Zmc2V0cyI7CisJCX07CisJCTBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQ
QlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJv
eHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJv
amVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJp
bmcgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworCQl9OwogCQkxNDEyMTRCRTBBNDkxOTBFMDA0ODAyNTUgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5
OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2pl
Y3Qgb2JqZWN0ICovOwpAQCAtNzk3LDYgKzg0NCwxNSBAQAogLyogRW5kIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2Vj
dGlvbiAqLworCQkwRjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovID0gewor
CQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CisJCQlkc3RQYXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJm
b2xkZXJTcGVjID0gMDsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAxOworCQl9OwogCQk1REJCMTUxMTEzMUQwQjEzMDA1NkFEMzYg
LyogQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxk
UGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAxMjsKQEAgLTgzNyw2ICs4OTMsMTAgQEAKIAkJ
MEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmll
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkNEODM1NDE0ODU4NDEyMDBFQTIw
MDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFRlbXBvcmFyeUNoYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkYyOEEy
ODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBTaXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5jcHA7
IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5oOyBwYXRo
ID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRUaHVua3MuY3BwOyBwYXRoID0gbGxpbnQv
TExJbnRUaHVua3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5ODE0
QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTExJbnRUaHVua3MuaDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2Rl
VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlVHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFu
ZGxlckluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlckluZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQUExNEJDRjVCOTAwODg1QjRG
IC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRXhwcmVzc2lvblJhbmdlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
ODQ3LDkgKzkwNywxMyBAQAogCQkwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2Fs
bExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGhvZENhbGxM
aW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNCNjE0QkNGOERG
MDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gR2xvYmFsUmVzb2x2ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2Rl
T2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxSZXR1cm5PZmZz
ZXRUb0J5dGVjb2RlT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEZD
NDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBMTEludENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vblNsb3dQYXRocy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyog
Qml0VmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdFZl
Y3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjFDMjY2MTRCRTVGNUUw
MEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SklURHJpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjc5MTRCRTcy
NzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5l
c3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0aW9uSGFybmVzcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIg
LyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBCeXRlY29kZUNvbnZlbnRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERG
R0NvZGVCbG9ja3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gREZH
Q29kZUJsb2Nrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZFMTQ3
MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTg2MCw2ICs5MjQsMjAgQEAKIAkJMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxl
SGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaXN0YWJsZUhhbmRs
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwN0YxNEJBNTcyNzAwQkZF
MjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSklURXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
NDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJh
Y3RvciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNv
bXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gSlND
TExJbnRPZmZzZXRzRXh0cmFjdG9yOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OworCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5jcHA7IHBh
dGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5oOyBwYXRoID0gbGxp
bnQvTExJbnRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4
MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRIZWxwZXJzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50
SGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEEwMTRCQTdG
ODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gTExJbnRIZWxwZXJzLmg7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzUxNEJCQjE2
OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IExMSW50Q29tbW9uLmg7IHBhdGggPSBsbGludC9MTEludENvbW1vbi5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZs
aW5lQXNtQ29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50T2Zm
bGluZUFzbUNvbmZpZy5oOyBwYXRoID0gbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBM
b3dMZXZlbEludGVycHJldGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM4MTRCQkIxNjkw
MEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIuaDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0UxNEJCQjNE
MTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBMTEludERhdGEuY3BwOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50
RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludERhdGEuaDsgcGF0
aCA9IGxsaW50L0xMSW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhv
c3RDYWxsUmV0dXJuVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSG9z
dENhbGxSZXR1cm5WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVGMDhD
QzE0NkJFNjAyMDAwNDcyQTkgLyogREZHQnl0ZUNvZGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdCeXRlQ29kZUNhY2hlLmg7IHBhdGggPSBkZmcvREZHQnl0ZUNv
ZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVGMDhDRTE0NkM3NjJG
MDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNjIwMTZEMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFN0YXRl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Fic3RyYWN0U3Rh
dGUuY3BwOyBwYXRoID0gZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTU3OSw2ICsxNjU3LDEzIEBACiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5j
ZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24g
Ki8KKwkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlp
c2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUUwQTQ4NzkzQzAwNDgwMjU1IC8qIEZyYW1l
d29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0xNjM3LDYgKzE3MjIsNyBAQAogCQkJCTE0MTIx
MTIwMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovLAogCQkJCTE0QkQ1OUJGMEEzRThGOTAw
MEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0
ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9m
ZnNldHNFeHRyYWN0b3IgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2NjcsNiArMTc1Myw3IEBACiAJCQkJRjVDMjkwRTYwMjg0
Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCiAJCQkJNDVFMTJEODgw
NkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2
MEY3IC8qIGNvbmZpZy5oICovLAorCQkJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGlu
dCAqLywKIAkJCQkxNDMyRUJENzBBMzRDQUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhD
QjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJsZXIgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNB
RTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLApAQCAtMTcwNSw2ICsxNzkyLDI4IEBACiAJCQl0YWJX
aWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCTBGNDY4MDlDMTRCQTdGNEQwMEJG
RTI3MiAvKiBsbGludCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAo
CisJCQkJMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICov
LAorCQkJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8s
CisJCQkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLywKKwkJ
CQkwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLywKKwkJCQkwRjQ2
ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLywKKwkJCQkwRjQ2ODBDRjE0
QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi8sCisJCQkJMEY0NjgwQzUxNEJCQjE2OTAw
QkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi8sCisJCQkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcy
IC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovLAorCQkJCTBGNDY4MEM3MTRCQkIxNjkwMEJG
RTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLywKKwkJCQkwRjQ2ODBDODE0QkJCMTY5
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovLAorCQkJCTBGNDY4MDlEMTRCQTdG
ODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovLAorCQkJCTBGNDY4MDlFMTRCQTdG
ODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLywKKwkJCQkwRjQ2ODA5RjE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLywKKwkJCQkwRjQ2ODBBMDE0QkE3RjgyMDBC
RkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8sCisJCQkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGxsaW50
OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMTQxMjExMDAwQTQ4NzcyNjAw
NDgwMjU1IC8qIHRlc3RzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKQEAgLTE3MzcsNiArMTg0Niw4IEBACiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBq
aXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNDY4
MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLywKKwkJCQkw
RjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovLAogCQkJ
CTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLywKIAkJCQkw
RjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovLAogCQkJCTBGRDgy
RTM3MTQxQUIxNDIwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oICovLApAQCAtMjE2Niw2
ICsyMjc3LDggQEAKIAkJN0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGMjFDMjc5MTRCRTcy
NzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi8sCisJCQkJMEYyMUMyN0Ex
NEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLywKIAkJCQkwRjE1RjE1RDE0
QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIw
M0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5
QTY0RCAvKiBBcmdMaXN0LmggKi8sCkBAIC0yNTI1LDYgKzI2MzgsOCBAQAogCQk5NjlBMDc4RjBF
RDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNv
bnZlbnRpb25zLmggKi8sCisJCQkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2Fs
bExpbmtJbmZvLmggKi8sCiAJCQkJMEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5r
U3RhdHVzLmNwcCAqLywKIAkJCQkwRjkzMzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtT
dGF0dXMuaCAqLywKIAkJCQkwRjkzMzI5NTE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1
cy5jcHAgKi8sCkBAIC0zMDc2LDcgKzMxOTEsMTYgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3MDBB
OUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJEQjhB
ODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYx
NUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2Vw
dGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBM
TEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcy
IC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0Qx
NEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRy
eXBvaW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8q
IExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVC
NEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4
NUI0RiAvKiBIYW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQUIxNEJDRjVC
QjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtMzA4
NSw3ICszMjA5LDExIEBACiAJCQkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENh
bGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRG
IC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCOTE0QkNG
OTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERy
aXZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4
ZWN1dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFE
QzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIx
QzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY3QjI5NEExNEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxp
dGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEMxNEMzQ0Q0MzAwN0MzREIxIC8qIERG
R0J5dGVDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzEwMyw2ICszMjMxLDI0IEBACiAv
KiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRp
dmVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJ
bnRPZmZzZXRzRXh0cmFjdG9yICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJ
YnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRz
RXh0cmFjdG9yIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MDhCMTRCQTdFNUUw
MEJGRTI3MiAvKiBTb3VyY2VzICovLAorCQkJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBG
cmFtZXdvcmtzICovLAorCQkJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMg
Ki8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAo
CisJCQkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8s
CisJCQkpOworCQkJbmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3RO
YW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDBG
NDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJ
CQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OwogCQkx
NDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWE5h
dGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDEyMTEzOTBBNDg3OTg0
MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQg
Im1pbmlkb20iICovOwpAQCAtMzIyOSwxMSArMzM3NSwyOSBAQAogCQkJCTE0QkQ1OUJFMEEzRThG
OTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTkzMkY1QkRBMDgyMkExQzcwMDczNjk3NSAv
KiBqc2MgKi8sCiAJCQkJNjUxMTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8s
CisJCQkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ciAqLywKKwkJCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLywK
IAkJCSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MEFBMTRCQTdGRDkwMEJG
RTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVs
bFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJ
ZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9sbGlu
dC9Mb3dMZXZlbEFzc2VtYmxlci5hc20iLAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUgRGVy
aXZlZCBTb3VyY2VzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RVQ1RT
X0RJUikvTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaCIsCisJCQkpOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmlu
L3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0v
TExJbnRPZmZzZXRzL1wiXG5cbi91c3IvYmluL2VudiBydWJ5IFwiJHtTUkNST09UfS9vZmZsaW5l
YXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmJcIiBcIiR7U1JDUk9PVH0vbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc21cIiBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNl
dHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oXCJcbiI7CisJCX07CiAJCTM3MTNGMDE0MTQyOTA1MjQw
MDM2Mzg3RiAvKiBDaGVjayBGb3IgSW5hcHByb3ByaWF0ZSBPYmplY3RpdmUtQyBDbGFzcyBOYW1l
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zMzc0LDYgKzM1MzgsMTQgQEAKIC8qIEVuZCBQQlhT
aGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTb3VyY2VzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2Vz
ICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZF
MjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjEx
MUQwQTQ4NzkzQzAwNDgwMjU1IC8qIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTb3VyY2Vz
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zNjMyLDcg
KzM4MDQsMTQgQEAKIAkJCQk4NjcwNEI4NjEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4OTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRl
cm4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCNDIxMkRCOEE4MTAwQTlGRTdCIC8qIFlh
cnJTeW50YXhDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE0MTRCQTdGOEQw
MEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTgx
NEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJ
bnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAv
KiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlBMTRC
Q0Y0NUQwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjBCODNCMDE0QkNGNzE2MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGMEI4M0I0MTRCQ0Y4NjAwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlu
a0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjY5RTg2QzMxNEM2RTU1MTAwMkMyQzYyIC8q
IE51bWJlck9mQ29yZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNjU0LDYgKzM4MzMsMTYgQEAK
IC8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFRh
cmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLworCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyog
UEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7
CisJCQl0YXJnZXQgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAq
LzsKKwkJCXRhcmdldFByb3h5ID0gMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBC
WFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5Owor
CQkJdGFyZ2V0ID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4
dHJhY3RvciAqLzsKKwkJCXRhcmdldFByb3h5ID0gMEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8q
IFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKIAkJMTQxMjE0QkYwQTQ5MTkwRTAwNDgw
MjU1IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBl
bmRlbmN5OwogCQkJdGFyZ2V0ID0gMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20g
Ki87CkBAIC0zNjg3LDYgKzM4NzYsMTQ4IEBACiAvKiBFbmQgUEJYVGFyZ2V0RGVwZW5kZW5jeSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJ
MEY0NjgwOTYxNEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hf
VVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7
CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJE
ID0gZ251OTk7CisJCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CisJCQkJR0NDX0VOQUJMRV9P
QkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJ
CQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJIkRFQlVHPTEiLAorCQkJ
CQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOworCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJO
ID0gTk87CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcu
MV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0ND
X1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VU
X1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsK
KwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1
LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhF
QURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdF
VCA9IDEwLjc7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKwkJCQlQUk9EVUNUX05BTUUg
PSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFE
RVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNl
dHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9
OworCQkwRjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNf
U0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0
X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJ
T05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRB
UkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlH
Q0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0ND
X1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9N
SVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUg
PSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJf
U0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJV
SUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJ
CQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1Rf
TkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VS
X0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50
T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFz
ZTsKKwkJfTsKKwkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NU
QU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdf
SU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VB
R0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlF
UzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7
CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FS
Tl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVU
VVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJ
CSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJ
CQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVS
X1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0g
MTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1Qg
PSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9
OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcy
IC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJ
CQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NU
UklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRz
eW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJM
RV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29t
cGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJT
SU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOwor
CQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNF
RF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgK
KwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zm
c2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09T
WF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VU
X05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9Q
QVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVS
X1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkw
RjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0g
IkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJ
CTBGNDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFN
RSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJ
CX07CisJCTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJP
RFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJv
ZmlsaW5nOworCQl9OworCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAq
LyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJ
CW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEzQTBBNDg3OTg0MDA0ODAyNTUgLyog
RGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0
dGluZ3MgPSB7CkBAIC0zOTI4LDYgKzQyNTksMjggQEAKIC8qIEVuZCBYQ0J1aWxkQ29uZmlndXJh
dGlvbiBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAq
LworCQkwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIgKi8gPSB7CisJ
CQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgK
KwkJCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwOTcx
NEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwOTgxNEJBN0U1RTAwQkZF
MjcyIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJv
ZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7
CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRjQ2
ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhB
Z2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovID0geworCQkJaXNhID0gWENDb25maWd1
cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwQUQxNEJB
N0ZEOTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAv
KiBSZWxlYXNlICovLAorCQkJCTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcg
Ki8sCisJCQkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkp
OworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjExMzkwQTQ4Nzk4NDAwNDgw
MjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5p
ZG9tIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZp
Z3VyYXRpb25zID0gKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5r
QnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9M
aW5rQnVmZmVyLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTGlua0J1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAj
ZGVmaW5lIEdMT0JBTF9USFVOS19JRCByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2Fz
dDxpbnRwdHJfdD4oLTEpKQogI2RlZmluZSBSRUdFWFBfQ09ERV9JRCByZWludGVycHJldF9jYXN0
PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLTIpKQogCi0jaW5jbHVkZSA8TWFjcm9Bc3Nl
bWJsZXIuaD4KKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCeXRlY29kZUNvbnZlbnRpb25zX2gKKyNkZWZp
bmUgQnl0ZWNvZGVDb252ZW50aW9uc19oCisKKy8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBi
eXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRo
ZWlyIHJhbmdlczoKKy8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRp
Y2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZy
YW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCisvLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAg
Rm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFy
cyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCisvLyAgICAg
IDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAg
c3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCitz
dGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsK
KworI2VuZGlmIC8vIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDEw
NTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE3ICsyNywzOCBAQAogI2luY2x1ZGUgIkNhbGxMaW5r
U3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMTEludENhbGxM
aW5rSW5mby5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4KQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0
ZWNvZGVJbmRleDsKKyAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaW5zdHJ1
Y3Rpb25bNF0udS5jYWxsTGlua0luZm87CisgICAgCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVz
KGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCksIGZhbHNlKTsKKyNlbHNlCisgICAg
cmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKKyNlbmRpZgorfQorCiBDYWxsTGlua1N0
YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ss
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxv
Y2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklUKSAm
JiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKAotICAg
ICAgICBwcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNl
ZW5DYWxsZWUuZ2V0KCksCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNl
KGJ5dGVjb2RlSW5kZXgpKTsKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mQ2FsbExp
bmtJbmZvcygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2Nr
LCBieXRlY29kZUluZGV4KTsKKyAgICAKKyAgICBpZiAocHJvZmlsZWRCbG9jay0+Y291bGRUYWtl
U2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCisgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygw
LCB0cnVlKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBwcm9maWxlZEJsb2NrLT5n
ZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CisgICAg
aWYgKCF0YXJnZXQpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxv
Y2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJn
ZXQsIGZhbHNlKTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsK
ICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rU3RhdHVzLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNSArNDcsMTcg
QEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKENv
ZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAgIGJvb2wgaXNTZXQo
KSBjb25zdCB7IHJldHVybiAhIW1fY2FsbFRhcmdldDsgfQorICAgIGJvb2wgaXNTZXQoKSBjb25z
dCB7IHJldHVybiAhIW1fY2FsbFRhcmdldCB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAg
Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsVGFyZ2V0OyB9Cisg
ICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQogICAgIAogICAg
IGJvb2wgY291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvdWxkVGFrZVNsb3dQ
YXRoOyB9CiAgICAgCiAgICAgSlNGdW5jdGlvbiogY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FsbFRhcmdldDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0
dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsK
KyAgICAKICAgICBKU0Z1bmN0aW9uKiBtX2NhbGxUYXJnZXQ7CiAgICAgYm9vbCBtX2NvdWxkVGFr
ZVNsb3dQYXRoOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRl
LmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTU5LDggKzYwLDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiB1c2luZyBuYW1lc3BhY2UgREZHOwogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8
IEVOQUJMRShPUENPREVfU0FNUExJTkcpCi0KIHN0YXRpYyBVU3RyaW5nIGVzY2FwZVF1b3Rlcyhj
b25zdCBVU3RyaW5nJiBzdHIpCiB7CiAgICAgVVN0cmluZyByZXN1bHQgPSBzdHI7CkBAIC0zNTgs
MTAgKzM1NywxMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bj
b2RlTGVuZ3Roc1tleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMo
KVtpXS51Lm9wY29kZSldKQogICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7CiAKLSAgICBwcmlu
dGYoIiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7
ICVkIGNhbGxlZSByZWdpc3RlcihzKVxuXG4iLAorICAgIHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rp
b25zOyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVy
KHMpOyAlZCB2YXJpYWJsZShzKVxuXG4iLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nPihpbnN0cnVjdGlvbkNvdW50KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
Zz4oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSksCi0gICAgICAg
IHRoaXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgICAgICB0
aGlzLCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX251bVZhcnMpOwog
CiAgICAgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4gPSBpbnN0cnVj
dGlvbnMoKS5iZWdpbigpOwogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGluc3RydWN0aW9ucygpLmVuZCgpOwpAQCAtODk4LDYgKzg5NywxNCBAQCB2b2lkIENv
ZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5
SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6
IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQ
dXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTI5MSw4ICsxMjk4LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAo
RXhlY1N0YXRlKiBleGVjLCBjbwogICAgIH0KIH0KIAotI2VuZGlmIC8vICFkZWZpbmVkKE5ERUJV
RykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFU
SVNUSUNTCiBzdGF0aWMgSGFzaFNldDxDb2RlQmxvY2sqPiBsaXZlQ29kZUJsb2NrU2V0OwogI2Vu
ZGlmCkBAIC0xNDU5LDYgKzE0NjQsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2Vk
QmxvY2tUYWcsCiB7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1QYXJhbWV0ZXJzKCkp
OwogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogICAg
IAogICAgIGlmIChvdGhlci5tX3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZO
ZWNlc3NhcnkoKTsKQEAgLTE1MDcsNiArMTUxMyw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNj
cmlwdEV4ZWN1dGFibGUqIG8KICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIAogICAgIG9wdGlt
aXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogCiAjaWYgRFVNUF9DT0RF
X0JMT0NLX1NUQVRJU1RJQ1MKICAgICBsaXZlQ29kZUJsb2NrU2V0LmFkZCh0aGlzKTsKQEAgLTE1
MjQsNyArMTUzMSwxMSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2lmIEVOQUJMRShWRVJC
T1NFX1ZBTFVFX1BST0ZJTEUpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNlbmRpZgotICAg
IAorCisjaWYgRU5BQkxFKExMSU5UKSAgICAKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2Fs
bHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNv
bWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5U
KQogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gV2UgbWF5IGJlIGRlc3Ryb3llZCBiZWZvcmUgYW55
IENvZGVCbG9ja3MgdGhhdCByZWZlciB0byB1cyBhcmUgZGVzdHJveWVkLgogICAgIC8vIENvbnNp
ZGVyIHRoYXQgdHdvIENvZGVCbG9ja3MgYmVjb21lIHVucmVhY2hhYmxlIGF0IHRoZSBzYW1lIHRp
bWUuIFRoZXJlCkBAIC0xNzM2LDggKzE3NDcsNTcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXpl
VW5jb25kaXRpb25hbGx5KAogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5s
aW5raW5nID0gZmFsc2U7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAg
ICAgCisjaWYgRU5BQkxFKExMSU5UKQorICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1f
Z2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXI7CisgICAgaWYgKCFpbnRlcnByZXRlci0+ZW5hYmxlZCgp
KSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0
aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5z
dHJ1Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgeworICAgICAgICAgICAgY2FzZSBvcF9n
ZXRfYnlfaWQ6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgICAgICAg
ICBpZiAoIWN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1
ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xl
YXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQgPSAwOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9kaXJlY3Q6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X25vcm1hbDoKKyAgICAgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rp
b25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6Omlz
TWFya2VkKGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAg
ICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNo
YWluLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBj
dXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1
ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAgICAgICAgICAg
ICBjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSA9IGludGVycHJldGVyLT5nZXRPcGNvZGUob3Bf
cHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3Ry
dWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0
cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZl
SW5zdHJ1Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsCisg
ICAgICAgICAgICAgICAgICAgfHwgaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0
aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKKyAgICAgICAg
ICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQo
Y3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuY2xlYXIo
KTsKKyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9IDA7CisgICAgICAg
IH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9z
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5mb3NbaV0u
aXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQobV9sbGludENhbGxMaW5rSW5mb3NbaV0uY2Fs
bGVlLmdldCgpKSkgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQorICAg
ICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IGNhbGwgZnJvbSAlcC5cbiIs
IHRoaXMpOworICAgICAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCEhbV9sbGludENhbGxMaW5rSW5mb3Nb
aV0ubGFzdFNlZW5DYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9z
W2ldLmxhc3RTZWVuQ2FsbGVlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBtX2xsaW50Q2FsbExp
bmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgICAgICB9CisgICAgfQorI2Vu
ZGlmIC8vIEVOQUJMRShMTElOVCkKKwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8vIENoZWNr
IGlmIHdlJ3JlIG5vdCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAgICAgaWYgKCEo
c2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBtX2RmZ0RhdGEt
PmxpdmVuZXNzSGFzQmVlblByb3ZlZCkpIHsKQEAgLTE4NTgsMTAgKzE5MTgsMTIgQEAgdm9pZCBD
b2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9mdW5jdGlvbkRlY2xzLnNpemUoKTsgKytpKQogICAgICAgICB2aXNpdG9yLmFwcGVu
ZCgmbV9mdW5jdGlvbkRlY2xzW2ldKTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCi0gICAgZm9y
IChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0g
MDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0
cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7Ci0gICAgZm9yIChz
aXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBp
IDwgc2l6ZTsgKytpKQotICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0
aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIGlmIChtX2dsb2Jh
bERhdGEtPmludGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6
ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7
ICsraSkKKyAgICAgICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25z
KClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOworICAgICAgICBmb3IgKHNpemVf
dCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBz
aXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0
aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIH0KICNlbmRpZgog
CiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0yMDcwLDYgKzIxMzIsMTIgQEAgdm9pZCBDb2RlQmxv
Y2s6OnVubGlua0NhbGxzKCkKIHsKICAgICBpZiAoISFtX2FsdGVybmF0aXZlKQogICAgICAgICBt
X2FsdGVybmF0aXZlLT51bmxpbmtDYWxscygpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9zLnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIGlmIChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpKQorICAgICAgICAg
ICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgfQorI2VuZGlmCiAgICAg
aWYgKCEobV9jYWxsTGlua0luZm9zLnNpemUoKSB8fCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6
ZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQo
KSkKQEAgLTIwODQsMTAgKzIxNTIsMzcgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0NhbGxzKCkK
IAogdm9pZCBDb2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMoKQogeworICAgIHdoaWxlICht
X2luY29taW5nTExJbnRDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgp
KQorICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpLT51bmxpbmsoKTsKKyAgICBp
ZiAobV9pbmNvbWluZ0NhbGxzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIFJlcGF0
Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcih0aGlzKTsKICAgICB3aGlsZSAobV9pbmNvbWluZ0NhbGxz
LmJlZ2luKCkgIT0gbV9pbmNvbWluZ0NhbGxzLmVuZCgpKQogICAgICAgICBtX2luY29taW5nQ2Fs
bHMuYmVnaW4oKS0+dW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogfQorCit1
bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAo
cmV0dXJuQWRkcmVzcy52YWx1ZSgpID49IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2JlZ2lu
KQorICAgICAgICAmJiByZXR1cm5BZGRyZXNzLnZhbHVlKCkgPD0gYml0d2lzZV9jYXN0PHZvaWQq
PigmbGxpbnRfZW5kKSkgeworICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkpOworICAg
ICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChK
SVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKKyAgICAgICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uID0gZXhlYy0+Y3VycmVudFZQQygpOworICAgICAgICBBU1NFUlQoaW5z
dHJ1Y3Rpb24pOworICAgICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb24pOwor
ICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworI2VuZGlmCisgICAgaWYgKCFt
X3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gMTsKKyAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNl
dFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVy
bkluZGV4VmVjdG9yOworICAgIGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQorICAgICAgICByZXR1
cm4gMTsKKyAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2Rl
T2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4o
KSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVz
cy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OworfQogI2VuZGlmCiAKIHZvaWQgQ29kZUJsb2Nr
OjpjbGVhckV2YWxDYWNoZSgpCkBAIC0yMTgzLDI0ICsyMjc4LDQ1IEBAIGJvb2wgRnVuY3Rpb25D
b2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRoREYKIAogdm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqZXR0
aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJ
VCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsK
ICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxQcm9n
cmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2Rl
KCpnbG9iYWxEYXRhKCkpOwogfQogCiB2b2lkIEV2YWxDb2RlQmxvY2s6OmpldHRpc29uKCkKIHsK
LSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBB
U1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VS
VCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxl
Kj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEo
KSk7CiB9CiAKIHZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NF
UlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklU
Q29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09
IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93
bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yKCpnbG9iYWxEYXRhKCks
IG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7CiB9CisK
K3ZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRD
b21waWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJ
bXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgp
ID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxh
Y2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVy
RXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShnbG9iYWxEYXRhKTsKK30KKwordm9pZCBGdW5jdGlv
bkNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorewor
ICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cisg
ICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZUZvcihn
bG9iYWxEYXRhLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNh
bGwpOworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMDU3NzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpZm5kZWYgQ29kZUJsb2NrX2gKICNkZWZpbmUgQ29k
ZUJsb2NrX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJD
YWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNl
dC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKQEAgLTUwLDYgKzUxLDcgQEAKICNpbmNsdWRl
ICJKSVRXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1
ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJbmZvLmgiCiAjaW5jbHVk
ZSAiTGluZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlByZWRpY3Rpb25U
cmFja2VyLmgiCkBAIC02NSwxNiArNjcsMTEgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAj
aW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKIAotLy8gUmVnaXN0ZXIgbnVtYmVycyB1c2Vk
IGluIGJ5dGVjb2RlIG9wZXJhdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbWVhbmluZyBhY2NvcmRpbmcg
dG8gdGhlaXIgcmFuZ2VzOgotLy8gICAgICAweDgwMDAwMDAwLTB4RkZGRkZGRkYgIE5lZ2F0aXZl
IGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGVudHJpZXMgaW4gdGhlIGNh
bGwgZnJhbWUsIHNlZSBSZWdpc3RlckZpbGUuaC4KLS8vICAgICAgMHgwMDAwMDAwMC0weDNGRkZG
RkZGICBGb3J3YXJkcyBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBsb2Nh
bCB2YXJzIGFuZCB0ZW1wb3JhcmllcyB3aXRoIHRoZSBmdW5jdGlvbidzIGNhbGxmcmFtZS4KLS8v
ICAgICAgMHg0MDAwMDAwMC0weDdGRkZGRkZGICBQb3NpdGl2ZSBpbmRpY2VzIGZyb20gMHg0MDAw
MDAwMCBzcGVjaWZ5IGVudHJpZXMgaW4gdGhlIGNvbnN0YW50IHBvb2wgb24gdGhlIENvZGVCbG9j
ay4KLXN0YXRpYyBjb25zdCBpbnQgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAw
MDAwOwotCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFz
cyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAKICAgICBpbmxpbmUgaW50IHVubW9kaWZpZWRBcmd1bWVudHNSZWdp
c3RlcihpbnQgYXJndW1lbnRzUmVnaXN0ZXIpIHsgcmV0dXJuIGFyZ3VtZW50c1JlZ2lzdGVyIC0g
MTsgfQogCkBAIC04Myw2ICs4MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIENvZGVC
bG9jayA6IHB1YmxpYyBVbmNvbmRpdGlvbmFsRmluYWxpemVyLCBwdWJsaWMgV2Vha1JlZmVyZW5j
ZUhhcnZlc3RlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBm
cmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBDb3B5UGFyc2VkQmxvY2tUYWcgeyBDb3B5
UGFyc2VkQmxvY2sgfTsKICAgICBwcm90ZWN0ZWQ6CkBAIC0xMjMsNyArMTIxLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICB3aGlsZSAocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKQogICAg
ICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC0+YWx0ZXJuYXRpdmUoKTsKICAgICAgICAgICAg
IEFTU0VSVChyZXN1bHQpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC0+Z2V0SklUVHlwZSgp
ID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjpp
c0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICAgICAgfQogI2VuZGlmCkBAIC0xMzQsMTEgKzEzMiw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAKLSNpZiAh
ZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRV9PUENPREVfU0FNUExJTkcKICAgICAgICAgdm9pZCBk
dW1wKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50U3RydWN0dXJlcyhjb25z
dCBJbnN0cnVjdGlvbiopIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50U3RydWN0dXJlKGNvbnN0
IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpIGNvbnN0OwotI2Vu
ZGlmCiAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3Ry
aWN0TW9kZTsgfQogCkBAIC0xOTQsMTUgKzE5MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgcmV0dXJuICooYmluYXJ5U2VhcmNoPE1ldGhvZENhbGxMaW5rSW5mbywgdW5zaWduZWQs
IGdldE1ldGhvZENhbGxMaW5rSW5mb0J5dGVjb2RlSW5kZXg+KG1fbWV0aG9kQ2FsbExpbmtJbmZv
cy5iZWdpbigpLCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpLCBieXRlY29kZUluZGV4KSk7
CiAgICAgICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChSZXR1cm5BZGRy
ZXNzUHRyIHJldHVybkFkZHJlc3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9yYXJl
RGF0YSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIFZlY3RvcjxDYWxs
UmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0gbV9yYXJlRGF0YS0+
bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7Ci0gICAgICAgICAgICBpZiAoIWNhbGxJbmRpY2VzLnNp
emUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIHJldHVybiBiaW5h
cnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRD
YWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCks
IGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVP
ZmZzZXQ7Ci0gICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoRXhlY1N0
YXRlKiwgUmV0dXJuQWRkcmVzc1B0cik7CiAKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXRGb3JDYWxsQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAgewpAQCAtMjIzLDExICsy
MTEsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIG1faW5jb21p
bmdDYWxscy5wdXNoKGluY29taW5nKTsKICAgICAgICAgfQorI2lmIEVOQUJMRShMTElOVCkKKyAg
ICAgICAgdm9pZCBsaW5rSW5jb21pbmdDYWxsKExMSW50Q2FsbExpbmtJbmZvKiBpbmNvbWluZykK
KyAgICAgICAgeworICAgICAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMucHVzaChpbmNvbWlu
Zyk7CisgICAgICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAgICAgICAgIAogICAgICAg
ICB2b2lkIHVubGlua0luY29taW5nQ2FsbHMoKTsKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShK
SVQpCiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxF
KExMSU5UKQogICAgICAgICB2b2lkIHNldEpJVENvZGVNYXAoUGFzc093blB0cjxDb21wYWN0SklU
Q29kZU1hcD4gaml0Q29kZU1hcCkKICAgICAgICAgewogICAgICAgICAgICAgbV9qaXRDb2RlTWFw
ID0gaml0Q29kZU1hcDsKQEAgLTIzNiw3ICsyMzAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgewogICAgICAgICAgICAgcmV0dXJuIG1faml0Q29kZU1hcC5nZXQoKTsKICAgICAgICAgfQor
I2VuZGlmCiAgICAgICAgIAorI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICB2b2lkIGNyZWF0
ZURGR0RhdGFJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghIW1fZGZn
RGF0YSkKQEAgLTMzNSwxMiArMzMxLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAj
ZW5kaWYKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQoSW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJlc3MpCiAgICAgICAgIHsKKyAgICAgICAg
ICAgIEFTU0VSVChyZXR1cm5BZGRyZXNzID49IGluc3RydWN0aW9ucygpLmJlZ2luKCkgJiYgcmV0
dXJuQWRkcmVzcyA8IGluc3RydWN0aW9ucygpLmVuZCgpKTsKICAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxJbnN0cnVjdGlvbio+KHJldHVybkFkZHJlc3MpIC0gaW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKTsKICAgICAgICAgfQotI2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXRJc051bWVyaWND
b21wYXJlRnVuY3Rpb24oYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24pIHsgbV9pc051bWVy
aWNDb21wYXJlRnVuY3Rpb24gPSBpc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KICAgICAgICAg
Ym9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24oKSB7IHJldHVybiBtX2lzTnVtZXJpY0NvbXBh
cmVGdW5jdGlvbjsgfQpAQCAtMzU2LDE1ICszNTEsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIH0KICAgICAgICAgdm9pZCBoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgp
CiAgICAgICAgIHsKKyNpZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykgJiYgIUVOQUJMRShMTElO
VCkKKyAgICAgICAgICAgIGlmIChCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2Rl
KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKCEhYWx0ZXJuYXRp
dmUoKSkKICAgICAgICAgICAgICAgICBkaXNjYXJkQnl0ZWNvZGUoKTsKICAgICAgICAgICAgIGVs
c2UKICAgICAgICAgICAgICAgICBkaXNjYXJkQnl0ZWNvZGVMYXRlcigpOworI2VuZGlmCiAgICAg
ICAgIH0KICAgICAgICAgCi0jaWZuZGVmIE5ERUJVRwogICAgICAgICBib29sIHVzZXNPcGNvZGUo
T3Bjb2RlSUQpOwotI2VuZGlmCiAKICAgICAgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCgp
IHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25Db3VudDsgfQogICAgICAgICB2b2lkIHNldEluc3RydWN0
aW9uQ291bnQodW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCkgeyBtX2luc3RydWN0aW9uQ291bnQg
PSBpbnN0cnVjdGlvbkNvdW50OyB9CkBAIC0zODcsMTcgKzM4NCwyNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZSogZXhlY3V0YWJsZU1lbW9yeSgpIHsg
cmV0dXJuIGdldEpJVENvZGUoKS5nZXRFeGVjdXRhYmxlTWVtb3J5KCk7IH0KICAgICAgICAgdmly
dHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9k
ZSopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCkgPSAwOworICAgICAgICBi
b29sIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspIHsK
KyAgICAgICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5l
SklUKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBqaXRDb21waWxlSW1wbChnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgp
ID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCkgPSAwOwogICAg
ICAgICBib29sIGhhc09wdGltaXplZFJlcGxhY2VtZW50KCkKICAgICAgICAgewotICAgICAgICAg
ICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAg
ICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CiAgICAg
ICAgICAgICBib29sIHJlc3VsdCA9IHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA+IGdldEpJ
VFR5cGUoKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICAgICBpZiAocmVzdWx0KQog
ICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklU
Q29kZTo6REZHSklUKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VS
VChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwor
ICAgICAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXBsYWNlbWVu
dCgpLT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQo
KSA9PSB0aGlzKTsKICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtNDU2LDE4ICs0NjIsMjEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjbGVhckV2YWxDYWNoZSgpOwogCi0jaWYg
RU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICB2b2lkIGFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb24odW5zaWduZWQgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbikKICAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAg
IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBwZW5kKHByb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb24pOworICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5hcHBlbmQo
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCBhZGRH
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24odW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkp
Ci0gICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAg
ICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uQXRCeXRlY29kZU9mZnNldCh1bnNp
Z25lZCBieXRlY29kZU9mZnNldCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBMTEludENh
bGxMaW5rSW5mbyogYWRkTExJbnRDYWxsTGlua0luZm8oKQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2xsaW50Q2FsbExpbmtJbmZvcy5hcHBlbmQoTExJbnRDYWxsTGlua0luZm8oKSk7CisgICAg
ICAgICAgICByZXR1cm4gJm1fbGxpbnRDYWxsTGlua0luZm9zLmxhc3QoKTsKKyAgICAgICAgfQog
I2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBzZXROdW1iZXJPZlN0cnVjdHVy
ZVN0dWJJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZvcy5ncm93KHNpemUp
OyB9CkBAIC00NzYsOCArNDg1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBh
ZGRHbG9iYWxSZXNvbHZlSW5mbyh1bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAg
ICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9iYWxSZXNvbHZlSW5m
byhnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKKyAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2
ZUluZm9zLmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24p
KTsKICAgICAgICAgfQogICAgICAgICBHbG9iYWxSZXNvbHZlSW5mbyYgZ2xvYmFsUmVzb2x2ZUlu
Zm8oaW50IGluZGV4KSB7IHJldHVybiBtX2dsb2JhbFJlc29sdmVJbmZvc1tpbmRleF07IH0KICAg
ICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQpOwpAQCAtNDg4LDYgKzQ5Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHZvaWQgYWRkTWV0aG9kQ2FsbExpbmtJbmZvcyh1bnNpZ25lZCBuKSB7IEFTU0VSVCht
X2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKTsgbV9tZXRob2RDYWxsTGlua0luZm9zLmdyb3cobik7
IH0KICAgICAgICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RDYWxsTGlua0luZm8oaW50IGlu
ZGV4KSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5mb3NbaW5kZXhdOyB9CisgICAgICAgIHNp
emVfdCBudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MoKSB7IHJldHVybiBtX21ldGhvZENhbGxM
aW5rSW5mb3Muc2l6ZSgpOyB9CiAjZW5kaWYKICAgICAgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BS
T0ZJTEVSKQpAQCAtNTI4LDYgKzUzNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKSkgLSAxXS51
LnByb2ZpbGUgPT0gcmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
IH0KKyAgICAgICAgUHJlZGljdGVkVHlwZSB2YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNv
ZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gdmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5jb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdW5zaWdu
ZWQgdG90YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMoKQogICAgICAgICB7CkBAIC01NTQsMTIgKzU2
NywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9U
YWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1
cm4gdmFsdWUgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYg
c3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0
aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIGJvb2wgY291bGRUYWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0g
cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50
ZXI7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9uczo6Y291bGRUYWtlU2xvd0Nh
c2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlv
bkVudHJ5Q291bnQgPj0gT3B0aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAg
ICAgIH0KQEAgLTU3OCwxMiArNTk1LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAg
ICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0
KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHNw
ZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgcmV0dXJuIHNwZWNp
YWxGYXN0Q2FzZUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNv
dW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4oc3BlY2lhbEZhc3RDYXNlQ291bnQpIC8gbV9leGVj
dXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xk
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZURlZXBlc3RT
bG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgh
bnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAg
dW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1
bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgLSBzcGVjaWFsRmFzdENhc2VDb3VudDsKQEAg
LTU5Miw2ICs2MTMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wg
bGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHNsb3dDYXNlQ291bnQgPSBy
YXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRl
cjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZh
c3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVy
OwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBzbG93Q2FzZUNvdW50ICsgc3BlY2lhbEZh
c3RDYXNlQ291bnQ7CkBAIC02NzcsNyArNzAwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IAogICAgICAgICBib29sIGFkZEZyZXF1ZW50RXhpdFNpdGUoY29uc3QgREZHOjpGcmVxdWVudEV4
aXRTaXRlJiBzaXRlKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgp
ID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjpp
c0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBtX2V4aXRQ
cm9maWxlLmFkZChzaXRlKTsKICAgICAgICAgfQogCkBAIC03ODIsNiArODA1LDI5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbShDb2RlQmxvY2sq
IGFsdGVybmF0aXZlKTsKICAgICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5h
dGl2ZSgpOwogICAgICAgICAKKyAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3
aGVuIEpJVHRpbmcga2lja3MgaW4sIGluIGEgbWl4ZWQgbW9kZQorICAgICAgICAvLyBleGVjdXRp
b24gd29ybGQuCisgICAgICAgIAorICAgICAgICB2b2lkIGRvbnRKSVRBbnl0aW1lU29vbigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgdm9pZCBqaXRBZnRlcldhcm1VcCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvckpJVEFmdGVyV2FybVVwOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGpp
dFNvb24oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBP
cHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBpbnQzMl90IGxsaW50RXhlY3V0ZUNvdW50ZXIoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICB9
CisgICAgICAgIAogICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gdGll
cmVkIGNvbXBpbGF0aW9uIGtpY2tzIGluLiBUaGlzCiAgICAgICAgIC8vIGNvbnRyb2xzIGJvdGgg
d2hlbiB0aGUgb3B0aW1pemluZyBjb21waWxlciBpcyBpbnZva2VkIGFuZCB3aGVuIE9TUgogICAg
ICAgICAvLyBlbnRyeSBoYXBwZW5zLiBUd28gdHJpZ2dlcnMgZXhpc3Q6IHRoZSBsb29wIHRyaWdn
ZXIgYW5kIHRoZSByZXR1cm4KQEAgLTk3NCw2ICsxMDIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGJvb2wgbV9zaG91bGREaXNjYXJkQnl0ZWNvZGU7CiAKICAgICBwcm90ZWN0ZWQ6Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwogICAgICAgICAK
QEAgLTk4Niw3ICsxMDMzLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgdGFsbHlG
cmVxdWVudEV4aXRTaXRlcygpIHsgfQogI2VuZGlmCiAgICAgICAgIAotI2lmICFkZWZpbmVkKE5E
RUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKICAgICAgICAgdm9pZCBkdW1wKEV4ZWNT
dGF0ZSosIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiBiZWdpbiwg
VmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImKSBjb25zdDsKIAogICAgICAgICBD
U3RyaW5nIHJlZ2lzdGVyTmFtZShFeGVjU3RhdGUqLCBpbnQgcikgY29uc3Q7CkBAIC05OTYsNyAr
MTA0Miw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaW50R2V0QnlJZE9wKEV4
ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0
b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRDYWxsT3AoRXhl
Y1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRv
ciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFB1dEJ5SWRPcChF
eGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJh
dG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0OwotI2VuZGlmCiAgICAgICAgIHZvaWQgdmlzaXRT
dHJ1Y3R1cmVzKFNsb3RWaXNpdG9yJiwgSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3Q7CiAgICAgICAg
IAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTA1Nyw5ICsxMTAyLDExIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IG1fc291cmNlOwogICAgICAgICB1
bnNpZ25lZCBtX3NvdXJjZU9mZnNldDsKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAg
ICAgVmVjdG9yPHVuc2lnbmVkPiBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zOwogICAgICAg
ICBWZWN0b3I8dW5zaWduZWQ+IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uczsKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxMTEludENhbGxMaW5rSW5mbywgOD4g
bV9sbGludENhbGxMaW5rSW5mb3M7CisgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxMTEludENh
bGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+ID4gbV9p
bmNvbWluZ0xMSW50Q2FsbHM7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBWZWN0
b3I8U3RydWN0dXJlU3R1YkluZm8+IG1fc3RydWN0dXJlU3R1YkluZm9zOwpAQCAtMTA3MCw5ICsx
MTE3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
bV9qaXRDb2RlV2l0aEFyaXR5Q2hlY2s7CiAgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxDYWxs
TGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5n
Q2FsbHM7CiAjZW5kaWYKLSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJVCkg
fHwgRU5BQkxFKExMSU5UKQogICAgICAgICBPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IG1faml0
Q29kZU1hcDsKLSAgICAgICAgCisjZW5kaWYKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAg
c3RydWN0IFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uIHsKICAgICAgICAgICAgIFdlYWtSZWZlcmVu
Y2VUcmFuc2l0aW9uKCkgeyB9CiAgICAgICAgICAgICAKQEAgLTExMzUsMTIgKzExODMsMTQgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgT3duUHRyPENvZGVCbG9jaz4gbV9hbHRlcm5hdGl2
ZTsKICAgICAgICAgCisgICAgICAgIGludDMyX3QgbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAg
ICAgICAKICAgICAgICAgaW50MzJfdCBtX2ppdEV4ZWN1dGVDb3VudGVyOwogICAgICAgICB1aW50
MzJfdCBtX3NwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXI7CiAgICAgICAgIHVpbnQzMl90IG1fc3Bl
Y3VsYXRpdmVGYWlsQ291bnRlcjsKICAgICAgICAgdWludDhfdCBtX29wdGltaXphdGlvbkRlbGF5
Q291bnRlcjsKICAgICAgICAgdWludDhfdCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwot
CisgICAgICAgIAogICAgICAgICBzdHJ1Y3QgUmFyZURhdGEgewogICAgICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgcHVibGljOgpAQCAtMTIxMyw2ICsxMjYzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0
KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGls
ZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNl
bWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRp
ZgpAQCAtMTI0Nyw2ICsxMjk4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNj
b3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZp
cnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2Fu
Q29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtMTI4NCw2ICsxMzM2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxl
T3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNH
bG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwog
ICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAko
cmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMCArMjcsNDYgQEAKICNpbmNsdWRl
ICJHZXRCeUlkU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJM
b3dMZXZlbEludGVycHJldGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitHZXRCeUlkU3RhdHVz
IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2Nr
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CisgICAgCisgICAgaWYgKGlu
c3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX21ldGhvZF9jaGVjaykKKyAgICAgICAg
aW5zdHJ1Y3Rpb24rKzsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25b
NF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUpCisgICAgICAgIHJldHVy
biBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwg
ZmFsc2UpOworICAgIAorICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmls
ZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgaWYgKG9mZnNldCA9PSBub3RGb3Vu
ZCkKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJl
U2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisgICAgCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMo
U2ltcGxlRGlyZWN0LCBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSwgb2Zmc2V0LCBmYWxzZSk7Cisj
ZWxzZQorICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNl
dCgpLCBub3RGb3VuZCwgZmFsc2UpOworI2VuZGlmCit9CisKIEdldEJ5SWRTdGF0dXMgR2V0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQogewogICAgIFVOVVNFRF9QQVJBTShwcm9m
aWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VE
X1BBUkFNKGlkZW50KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIp
CisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcygpKQor
ICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUlu
ZGV4LCBpZGVudCk7CisgICAgCiAgICAgLy8gRmlyc3QgY2hlY2sgaWYgaXQgbWFrZXMgZWl0aGVy
IGNhbGxzLCBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUgc3VwZXIgY2FyZWZ1bCwgb3IKICAg
ICAvLyBpZiBpdCdzIG5vdCBzZXQgYXQgYWxsLCBpbiB3aGljaCBjYXNlIHdlIHB1bnQuCiAgICAg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm8o
Ynl0ZWNvZGVJbmRleCk7CiAgICAgaWYgKCFzdHViSW5mby5zZWVuKQotICAgICAgICByZXR1cm4g
R2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOwor
ICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUlu
ZGV4LCBpZGVudCk7CiAgICAgCiAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBs
aXN0OwogICAgIGludCBsaXN0U2l6ZTsKQEAgLTYwLDE4ICs4NiwxOSBAQCBHZXRCeUlkU3RhdHVz
IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgfQogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbGlzdFNpemU7ICsraSkgewogICAgICAgICBpZiAoIWxpc3QtPmxpc3RbaV0uaXNEaXJlY3Qp
Ci0gICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBTdHJ1Y3R1cmVT
ZXQoKSwgbm90Rm91bmQpOworICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTWFrZXND
YWxscywgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsKICAgICB9CiAgICAgCiAgICAg
Ly8gTmV4dCBjaGVjayBpZiBpdCB0YWtlcyBzbG93IGNhc2UsIGluIHdoaWNoIGNhc2Ugd2Ugd2Fu
dCB0byBiZSBraW5kIG9mIGNhcmVmdWwuCiAgICAgaWYgKHByb2ZpbGVkQmxvY2stPmxpa2VseVRv
VGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1
cyhUYWtlc1Nsb3dQYXRoLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICByZXR1
cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQs
IHRydWUpOwogICAgIAogICAgIC8vIEZpbmFsbHkgZmlndXJlIG91dCBpZiB3ZSBjYW4gZGVyaXZl
IGFuIGFjY2VzcyBzdHJhdGVneS4KICAgICBHZXRCeUlkU3RhdHVzIHJlc3VsdDsKKyAgICByZXN1
bHQubV93YXNTZWVuSW5KSVQgPSB0cnVlOwogICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlw
ZSkgewogICAgIGNhc2UgYWNjZXNzX3Vuc2V0OgotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1
cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICByZXR1
cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7
CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9zZWxmOiB7CiAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gc3R1YkluZm8udS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3Ry
dWN0dXJlLmdldCgpOwpAQCAtMTMwLDcgKzE1Nyw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZvcigKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UgLy8gRU5B
QkxFKEpJVCkKLSAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1
cmVTZXQoKSwgbm90Rm91bmQpOworICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRp
b24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOwogI2VuZGlmIC8vIEVOQUJMRShK
SVQpCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3Rh
dHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRTdGF0dXMuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDExIEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIEdldEJ5SWRTdGF0dXMoU3RhdGUgc3Rh
dGUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0LCBzaXplX3Qgb2Zmc2V0KQorICAg
IEdldEJ5SWRTdGF0dXMoU3RhdGUgc3RhdGUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJl
U2V0LCBzaXplX3Qgb2Zmc2V0LCBib29sIHdhc1NlZW5JbkpJVCkKICAgICAgICAgOiBtX3N0YXRl
KHN0YXRlKQogICAgICAgICAsIG1fc3RydWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAgICAg
LCBtX29mZnNldChvZmZzZXQpCisgICAgICAgICwgbV93YXNTZWVuSW5KSVQod2FzU2VlbkluSklU
KQogICAgIHsKICAgICAgICAgQVNTRVJUKChzdGF0ZSA9PSBTaW1wbGVEaXJlY3QpID09IChvZmZz
ZXQgIT0gbm90Rm91bmQpKTsKICAgICB9CkBAIC03MCwxMCArNzEsMTUgQEAgcHVibGljOgogICAg
IGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1
Y3R1cmVTZXQ7IH0KICAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7
IH0KICAgICAKKyAgICBib29sIHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzU2Vl
bkluSklUOyB9CisgICAgCiBwcml2YXRlOgorICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1
dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmll
ciYpOworICAgIAogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgU3RydWN0dXJlU2V0IG1fc3RydWN0
dXJlU2V0OwogICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBib29sIG1fd2FzU2VlbkluSklUOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYg
KzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNDZWxsOwogICAgIGNsYXNzIFN0
cnVjdHVyZTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKKyAgICBzdHJ1Y3QgTExJbnRDYWxs
TGlua0luZm87CiAgICAgc3RydWN0IFZhbHVlUHJvZmlsZTsKIAogI2lmIEVOQUJMRShKSVQpCkBA
IC0xNDYsNiArMTQ3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICAgICBzdHJ1Y3Qg
SW5zdHJ1Y3Rpb24geworICAgICAgICBJbnN0cnVjdGlvbigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHUuanNDZWxsLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIEluc3Ry
dWN0aW9uKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICNpZiAhRU5BQkxFKENPTVBVVEVEX0dP
VE9fSU5URVJQUkVURVIpCkBAIC0xODIsNiArMTg4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgSW5zdHJ1Y3Rpb24oUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYykg
eyB1LmdldHRlckZ1bmMgPSBnZXR0ZXJGdW5jOyB9CiAgICAgICAgIAorICAgICAgICBJbnN0cnVj
dGlvbihMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSB7IHUuY2FsbExpbmtJbmZvID0g
Y2FsbExpbmtJbmZvOyB9CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihWYWx1ZVByb2Zp
bGUqIHByb2ZpbGUpIHsgdS5wcm9maWxlID0gcHJvZmlsZTsgfQogCiAgICAgICAgIHVuaW9uIHsK
QEAgLTE5MSw3ICsxOTksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFdyaXRlQmFy
cmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IHN0cnVjdHVyZUNoYWluOwogICAgICAgICAgICAgV3Jp
dGVCYXJyaWVyQmFzZTxKU0NlbGw+IGpzQ2VsbDsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jIGdldHRlckZ1bmM7CisgICAgICAgICAgICBMTEludENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvOwogICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlOworICAgICAg
ICAgICAgdm9pZCogcG9pbnRlcjsKICAgICAgICAgfSB1OwogICAgICAgICAKICAgICBwcml2YXRl
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2Fs
bExpbmtJbmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50
Q2FsbExpbmtJbmZvX2gKKyNkZWZpbmUgTExJbnRDYWxsTGlua0luZm9faAorCisjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1
ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVj
dCBJbnN0cnVjdGlvbjsKKworc3RydWN0IExMSW50Q2FsbExpbmtJbmZvIDogcHVibGljIEJhc2lj
UmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiB7CisgICAgTExJbnRDYWxsTGlua0lu
Zm8oKQorICAgIHsKKyAgICB9CisgICAgCisgICAgfkxMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7
CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgfQor
ICAgIAorICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJldHVybiBjYWxsZWU7IH0KKyAgICAKKyAgICB2
b2lkIHVubGluaygpCisgICAgeworICAgICAgICBjYWxsZWUuY2xlYXIoKTsKKyAgICAgICAgbWFj
aGluZUNvZGVUYXJnZXQgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKKyAgICAgICAgaWYgKGlz
T25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgV3JpdGVC
YXJyaWVyPEpTRnVuY3Rpb24+IGNhbGxlZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4g
bGFzdFNlZW5DYWxsZWU7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1hY2hpbmVDb2RlVGFy
Z2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBMTEludENhbGxMaW5r
SW5mb19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxs
TGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNiArMzUsMTEgQEAgTWV0aG9kQ2FsbExpbmtTdGF0dXMgTWV0aG9kQ2Fs
bExpbmtTdGF0dQogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURf
UEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BS
T0ZJTEVSKQorICAgIC8vIE5PVEU6IFRoaXMgZG9lcyBub3QgaGF2ZSBhbiBMTEludCBmYWxsLWJh
Y2sgYmVjYXVzZSBMTEludCBkb2VzIG5vdCBkbyBhbnkgbWV0aG9kCisgICAgLy8gY2FsbCBsaW5r
IGNhY2hpbmcuCisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1iZXJPZk1ldGhvZENhbGxMaW5r
SW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIE1ldGhvZENhbGxMaW5rU3RhdHVzKCk7CisgICAgCiAg
ICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RDYWxsID0gcHJvZmlsZWRCbG9jay0+Z2V0TWV0
aG9kQ2FsbExpbmtJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIAogICAgIGlmICghbWV0aG9kQ2Fs
bC5zZWVuIHx8ICFtZXRob2RDYWxsLmNhY2hlZFN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYg
KzEyMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9nZXRfYXJndW1lbnRz
X2xlbmd0aCwgNCkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWQsIDkpIFwKICAgICAgICAg
bWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24sIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0LCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbCwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfcmVw
bGFjZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfZ2VuZXJpYywgOSkgXAogICAg
ICAgICBtYWNybyhvcF9kZWxfYnlfaWQsIDQpIFwKQEAgLTIwMiw2ICsyMDQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBlbnVtIHsgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09E
RV9JRF9FTlVNKSB9IE9wY29kZUlEOwogICAgICN1bmRlZiBPUENPREVfSURfRU5VTQogCisgICAg
Y29uc3QgaW50IG1heE9wY29kZUxlbmd0aCA9IDk7CiAgICAgY29uc3QgaW50IG51bU9wY29kZUlE
cyA9IG9wX2VuZCArIDE7CiAKICAgICAjZGVmaW5lIE9QQ09ERV9JRF9MRU5HVEhTKGlkLCBsZW5n
dGgpIGNvbnN0IGludCBpZCMjX2xlbmd0aCA9IGxlbmd0aDsKQEAgLTIxOCw3ICsyMjEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKFZFUklGWV9PUENPREVf
SUQpOwogICAgICN1bmRlZiBWRVJJRllfT1BDT0RFX0lECiAKLSNpZiBFTkFCTEUoQ09NUFVURURf
R09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikg
fHwgRU5BQkxFKExMSU5UKQogI2lmIENPTVBJTEVSKFJWQ1QpIHx8IENPTVBJTEVSKElOVEVMKQog
ICAgIHR5cGVkZWYgdm9pZCogT3Bjb2RlOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEwNTc3MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMjcgKzI3LDY2IEBACiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5o
IgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1
dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4o
KSArIGJ5dGVjb2RlSW5kZXg7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0
aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOworICAgIGlmICghc3RydWN0dXJlKQorICAgICAgICBy
ZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7Cisg
ICAgCisgICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9p
ZCkgeworICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxv
Y2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgICAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5k
KQorICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwg
MCwgbm90Rm91bmQpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2lt
cGxlUmVwbGFjZSwgc3RydWN0dXJlLCAwLCAwLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICBB
U1NFUlQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0CisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxs
aW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgCisgICAgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBpbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdl
dCgpOworICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUpOworICAgIEFTU0VSVChjaGFpbik7CisgICAg
CisgICAgc2l6ZV90IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5n
bG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAg
ICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7
CisgICAgCisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3RydWN0
dXJlLCBuZXdTdHJ1Y3R1cmUsIGNoYWluLCBvZmZzZXQpOworI2Vsc2UKKyAgICByZXR1cm4gUHV0
QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisjZW5kaWYKK30K
KwogUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRl
Y29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYm
IEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9m
U3RydWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHBy
b2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICBpZiAocHJvZmls
ZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCiAgICAgICAgIHJl
dHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKICAg
ICAKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRT
dHViSW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsK
KyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJ
bmRleCwgaWRlbnQpOwogICAgIAogICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewog
ICAgIGNhc2UgYWNjZXNzX3Vuc2V0OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0lu
Zm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJv
bUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAg
ICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6IHsKICAgICAgICAgc2l6ZV90IG9mZnNl
dCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0KApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5o
CShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKICAg
ICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKIHByaXZh
dGU6CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sq
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUg
bV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOwogICAgIFN0cnVjdHVyZSog
bV9uZXdTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTA1NzcwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJCYXRjaGVkVHJh
bnNpdGlvbk9wdGltaXplci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRl
ICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVT
dHJpbmcuaCIKQEAgLTExNiwyNiArMTE3LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGV4cGVj
dGVkIGJ5IHRoZSBjYWxsZWUuCiAqLwogCi0jaWZuZGVmIE5ERUJVRwogc3RhdGljIGJvb2wgc19k
dW1wc0dlbmVyYXRlZENvZGUgPSBmYWxzZTsKLSNlbmRpZgogCiB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUoYm9vbCBkdW1wc0dlbmVyYXRlZENvZGUpCiB7Ci0j
aWZuZGVmIE5ERUJVRwogICAgIHNfZHVtcHNHZW5lcmF0ZWRDb2RlID0gZHVtcHNHZW5lcmF0ZWRD
b2RlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZHVtcHNHZW5lcmF0ZWRDb2RlKTsKLSNlbmRp
ZgogfQogCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKQogewot
I2lmbmRlZiBOREVCVUcKICAgICByZXR1cm4gc19kdW1wc0dlbmVyYXRlZENvZGU7Ci0jZWxzZQot
ICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCiBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKCkKQEAgLTE0OCwxMCArMTM5LDggQEAgSlNPYmplY3QqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSgpCiAKICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25Db3Vu
dChtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIAotI2lmbmRlZiBOREVCVUcK
ICAgICBpZiAoc19kdW1wc0dlbmVyYXRlZENvZGUpCiAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1w
KG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpOwotI2VuZGlmCiAKICAg
ICBpZiAoKG1fY29kZVR5cGUgPT0gRnVuY3Rpb25Db2RlICYmICFtX2NvZGVCbG9jay0+bmVlZHNG
dWxsU2NvcGVDaGFpbigpICYmICFtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKSB8fCBtX2Nv
ZGVUeXBlID09IEV2YWxDb2RlKQogICAgICAgICBzeW1ib2xUYWJsZSgpLmNsZWFyKCk7CkBAIC0x
Mjc2LDkgKzEyNjUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29s
CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJ
bmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVU
RVIpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2Zp
bGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2
ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ0MCw5ICsxNDI3LDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9j
b2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAj
ZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKHJlcXVpcmVzRHluYW1p
Y0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ5MCw5ICsxNDc1
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJM
RShKSVQpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9u
cygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2Rl
QmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkp
OwotI2VuZGlmCiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2Rl
KHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9y
ZXNvbHZlX2dsb2JhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4
KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpA
QCAtMTUxMSw5ICsxNDk0LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1ldGhvZENo
ZWNrKAogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkK
IHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2dldF9ieV9pZCk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0xNTM5LDkgKzE1
MjAsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyCiAKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0jaWYgRU5B
QkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKIAogICAgIGVtaXRPcGNvZGUo
b3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7
CkBAIC0xNTU3LDkgKzE1MzYsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFB1dEJ5CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJ
ZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJ
RCogdmFsdWUpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5h
ZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5k
aWYKICAgICAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTg0OCw3ICsxODI1LDExIEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCgKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2Fs
bEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsg
Ly8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKG1fY29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKDApOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFZhbHVl
UHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQp
OwpAQCAtMTk1Miw3ICsxOTMzLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0Q29uc3QKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1
bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
Y2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hZGRM
TEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDAp
OworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlmIChkc3QgIT0g
aWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQ
cm9maWxlZE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMjIxMyw3ICsyMTk4LDExIEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gKIHsKICAgICBtX3VzZXNF
eGNlcHRpb25zID0gdHJ1ZTsKICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShMTElOVCkKKyAg
ICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDAp
LCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29w
ZURlcHRoLCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9j
YXRjaCkpIH07CisjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAs
IDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2Nv
cGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKCkgfTsKKyNlbmRp
ZgogI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5k
LT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGgg
KyBtX2Jhc2VTY29wZURlcHRoIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjA0LDkgKzYwNCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBVTlVTRURf
UEFSQU0obm9kZUluZGV4KTsKICAgICAgICAgCi0gICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIEFTU0VSVChwcm9maWxlKTsKLSAg
ICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKCk7CisgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkK
ICAgICAgICAgcHJpbnRmKCJEeW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwg
bm9kZUluZGV4LCBieXRlY29kZUluZGV4LCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikp
OwogI2VuZGlmCkBAIC0xMDQxLDYgKzEwMzksOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbmxpbmluZyhib29sCiAgICAgCiAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhlbiBpdCBsb29r
cyBsaWtlIHdlIHNob3VsZCBkZWZpbml0ZWx5IGlubGluZSB0aGlzIGNvZGUuIFByb2NlZWQKICAg
ICAvLyB3aXRoIHBhcnNpbmcgdGhlIGNvZGUgdG8gZ2V0IGJ5dGVjb2RlLCBzbyB0aGF0IHdlIGNh
biB0aGVuIHBhcnNlIHRoZSBieXRlY29kZS4KKyAgICAvLyBOb3RlIHRoYXQgaWYgTExJbnQgaXMg
ZW5hYmxlZCwgdGhlIGJ5dGVjb2RlIHdpbGwgYWx3YXlzIGJlIGF2YWlsYWJsZS4gQWxzbyBub3Rl
CisgICAgLy8gdGhhdCBpZiBMTEludCBpcyBlbmFibGVkLCB3ZSBtYXkgaW5saW5lIGEgY29kZSBi
bG9jayB0aGF0IGhhcyBuZXZlciBiZWVuIEpJVHRlZAorICAgIC8vIGJlZm9yZSEKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IG1fY29kZUJsb2NrQ2FjaGUuZ2V0KENvZGVCbG9ja0tleShleGVj
dXRhYmxlLCBraW5kKSwgZXhwZWN0ZWRGdW5jdGlvbi0+c2NvcGUoKSk7CiAgICAgaWYgKCFjb2Rl
QmxvY2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3NDEsNyArMTc0Miw3IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4KTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKG1ldGhvZENhbGxTdGF0dXMuaXNTZXQoKQotICAgICAgICAg
ICAgICAgICYmICFnZXRCeUlkU3RhdHVzLmlzU2V0KCkKKyAgICAgICAgICAgICAgICAmJiAhZ2V0
QnlJZFN0YXR1cy53YXNTZWVuSW5KSVQoKQogICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0
YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNo
ZSkpIHsKICAgICAgICAgICAgICAgICAvLyBJdCdzIG1vbm9tb3JwaGljIGFzIGZhciBhcyB3ZSBj
YW4gdGVsbCwgc2luY2UgdGhlIG1ldGhvZF9jaGVjayB3YXMgbGlua2VkCiAgICAgICAgICAgICAg
ICAgLy8gYnV0IHRoZSBzbG93IHBhdGggKGkuZS4gdGhlIG5vcm1hbCBnZXRfYnlfaWQpIG5ldmVy
IGZpcmVkLgpAQCAtMTgxMCw3ICsxODExLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwog
ICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoK
KyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAg
ICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
KTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1f
aW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDggQEAgaW5saW5l
IGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNhc2Ugb3BfcHV0X3Njb3Bl
ZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6Cisg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAg
ICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNp
b24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwyMSBAQCB2b2lkIGNvbXBpbGVPU1JF
eGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICB1aW50MzJfdCBleGl0SW5kZXggPSBnbG9iYWxEYXRh
LT5vc3JFeGl0SW5kZXg7CiAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jay0+b3NyRXhpdChl
eGl0SW5kZXgpOwogICAgIAorICAgIC8vIE1ha2Ugc3VyZSBhbGwgY29kZSBvbiBvdXIgaW5saW5l
IHN0YWNrIGlzIEpJVCBjb21waWxlZC4gVGhpcyBpcyBuZWNlc3Nhcnkgc2luY2UKKyAgICAvLyB3
ZSBtYXkgb3B0IHRvIGlubGluZSBhIGNvZGUgYmxvY2sgZXZlbiBiZWZvcmUgaXQgaGFkIGV2ZXIg
YmVlbiBjb21waWxlZCBieSB0aGUKKyAgICAvLyBKSVQsIGJ1dCBvdXIgT1NSIGV4aXQgaW5mcmFz
dHJ1Y3R1cmUgY3VycmVudGx5IG9ubHkgd29ya3MgaWYgdGhlIHRhcmdldCBvZiB0aGUKKyAgICAv
LyBPU1IgZXhpdCBpcyBKSVQgY29kZS4gVGhpcyBjb3VsZCBiZSBjaGFuZ2VkIHNpbmNlIHRoZXJl
IGlzIG5vdGhpbmcgcGFydGljdWxhcmx5CisgICAgLy8gaGFyZCBhYm91dCBkb2luZyBhbiBPU1Ig
ZXhpdCBpbnRvIHRoZSBpbnRlcnByZXRlciwgYnV0IGZvciBub3cgdGhpcyBzZWVtcyB0byBtYWtl
CisgICAgLy8gc2Vuc2UgaW4gdGhhdCBpZiB3ZSdyZSBPU1IgZXhpdGluZyBmcm9tIGlubGluZWQg
Y29kZSBvZiBhIERGRyBjb2RlIGJsb2NrLCB0aGVuCisgICAgLy8gcHJvYmFibHkgaXQncyBhIGdv
b2Qgc2lnbiB0aGF0IHRoZSB0aGluZyB3ZSdyZSBleGl0aW5nIGludG8gaXMgaG90LiBFdmVuIG1v
cmUKKyAgICAvLyBpbnRlcmVzdGluZ2x5LCBzaW5jZSB0aGUgY29kZSB3YXMgaW5saW5lZCwgaXQg
bWF5IG5ldmVyIG90aGVyd2lzZSBnZXQgSklUCisgICAgLy8gY29tcGlsZWQgc2luY2UgdGhlIGFj
dCBvZiBpbmxpbmluZyBpdCBtYXkgZW5zdXJlIHRoYXQgaXQgb3RoZXJ3aXNlIG5ldmVyIHJ1bnMu
CisgICAgZm9yIChDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbjsgY29k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNh
bGxGcmFtZS0+Y2FsbGVyKSB7CisgICAgICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKQorICAgICAg
ICAgICAgLT5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+
aXNDYWxsID8gQ29kZUZvckNhbGwgOiBDb2RlRm9yQ29uc3RydWN0KQorICAgICAgICAgICAgLT5q
aXRDb21waWxlKCpnbG9iYWxEYXRhKTsKKyAgICB9CisgICAgCiAgICAgU3BlY3VsYXRpb25SZWNv
dmVyeSogcmVjb3ZlcnkgPSAwOwogICAgIGlmIChleGl0Lm1fcmVjb3ZlcnlJbmRleCkKICAgICAg
ICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5zcGVjdWxhdGlvblJlY292ZXJ5KGV4aXQubV9yZWNv
dmVyeUluZGV4IC0gMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAi
REZHUmVwYXRjaC5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRl
ICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbmxpbmVBU00uaCIKICNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgpAQCAtNTYxLDQ1ICs1NjIsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVy
YXRpb25Db21wYXJlU3RyCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KCk7Ci1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVX
aXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmds
b2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xf
U1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIx
MyksICVyMTNcbiIKLSAgICAibW92ICVyMTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lNQk9MX1NU
UklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4i
Ci0pOwotI2VsaWYgQ1BVKFg4NikKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKLSAgICAibW92ICVl
ZGksIDQoJWVzcClcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9U
SFVNQjIpCi1hc20gKAotIi50ZXh0IiAiXG4iCi0iLmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBT
WU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLSIudGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAi
IFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NU
UklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwg
Iy00MF0iICJcbiIKLSAgICAiY3B5IHIwLCByNSIgIlxuIgotICAgICJiICIgU1lNQk9MX1NUUklO
R19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0p
OwotI2VuZGlmCi0KLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQot
CiBzdGF0aWMgdm9pZCogaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1Zh
bHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaAkocmV2aXNpb24gMTA1NzcwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOworY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWFya2VkQmxvY2s7CiAKIGNsYXNzIEFs
bG9jYXRpb25TcGFjZSB7CkBAIC02Nyw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNocmlu
aygpOwogICAgIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworICAgIAogICAgIGVudW0gQWxsb2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRpb25DYW5GYWls
LCBBbGxvY2F0aW9uTXVzdFN1Y2NlZWQgfTsKIAogICAgIHZvaWQqIGFsbG9jYXRlKE1hcmtlZFNw
YWNlOjpTaXplQ2xhc3MmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShy
ZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODM3LDcgKzgzNyw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2Vl
cFRvZ2dsZSBzd2VlcFRvZ2cKICAgICAgICAgc2V0SGlnaFdhdGVyTWFyayhtYXgocHJvcG9ydGlv
bmFsQnl0ZXMsIG1fbWluQnl0ZXNQZXJDeWNsZSkpOwogICAgIH0KICAgICBKQVZBU0NSSVBUQ09S
RV9HQ19FTkQoKTsKLQorICAgIAogICAgICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNz
IEpTVmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAgICBj
bGFzcyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTEzNiwxMSArMTM3LDEy
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVy
Um9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
ZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGlv
blNwYWNlOworICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOworICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQgY2xhc3MgTWFya2Vk
QmxvY2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBCdW1wU3BhY2U7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBTbG90VmlzaXRvcjsKLSAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKIAogICAg
ICAgICBzaXplX3Qgd2F0ZXJNYXJrKCk7CiAgICAgICAgIHNpemVfdCBoaWdoV2F0ZXJNYXJrKCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9u
IDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMwNCw3ICszMDQsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oCiAjZW5kaWYKIAogICAgIEFTU0VSVChIZWFwOjppc01hcmtlZChjZWxs
KSk7Ci0KKyAgICAKICAgICBpZiAoaXNKU1N0cmluZyhjZWxsKSkgewogICAgICAgICBKU1N0cmlu
Zzo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAg
ICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFj
ZS5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogY2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsK
K2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsKIGNsYXNz
IFNsb3RWaXNpdG9yOwogCkBAIC03Nyw2ICs3OCw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9j
aygpOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CisgICAgCiAgICAgLy8gWyAzMi4uLiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJl
Y2lzZVN0ZXAgPSBNYXJrZWRCbG9jazo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBwcmVjaXNlQ3V0b2ZmID0gMjU2OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTks
NiArMTE5LDkgQEAgbmFtZXNwYWNlIEpTQyAgewogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAg
ICAgICAgSW5zdHJ1Y3Rpb24qIHJldHVyblZQQygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0
ZXJGaWxlOjpSZXR1cm5QQ10udlBDKCk7IH0KICNlbmRpZgorI2lmIEVOQUJMRShMTElOVCkKKyAg
ICAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nh
c3Q8SW5zdHJ1Y3Rpb24qPih0aGlzW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0udGFnKCkp
OyB9CisjZW5kaWYKIAogICAgICAgICB2b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogY2Fs
bGVyRnJhbWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OkNh
bGxlckZyYW1lXSA9IGNhbGxlckZyYW1lOyB9CiAgICAgICAgIHZvaWQgc2V0U2NvcGVDaGFpbihT
Y29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMp
W1JlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0gPSBzY29wZUNoYWluOyB9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlz
aW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRlICJKSVQu
aCIKICNlbmRpZgogCi0jZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VO
RCAoRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpICYmICFkZWZpbmVkKF9fbGx2bV9f
KSkKKyNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EICgoRU5BQkxF
KENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkpICYmICFkZWZpbmVk
KF9fbGx2bV9fKSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNTQ3LDE3ICs1NDcsNDEg
QEAgSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKIHsKIH0KIAotdm9pZCBJbnRlcnByZXRlcjo6
aW5pdGlhbGl6ZShib29sIGNhblVzZUpJVCkKK0ludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIoKQog
ewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElO
VCkKKyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICBkZWxldGVbXSBtX29wY29kZVRhYmxlOwor
I2VuZGlmCit9CisKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRhdGEqIGxs
aW50RGF0YSwgYm9vbCBjYW5Vc2VKSVQpCit7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpCisgICAgLy8gSGF2aW5nIExMSW50IGVuYWJsZWQsIGJ1dCBub3QgYmVpbmcgYWJs
ZSB0byB1c2UgdGhlIEpJVCwgYW5kIG5vdCBoYXZpbmcKKyAgICAvLyBhIGNvbXB1dGVkIGdvdG8g
aW50ZXJwcmV0ZXIsIGlzIG5vdCBzdXBwb3J0ZWQuIE5vdCBiZWNhdXNlIHdlIGNhbm5vdAorICAg
IC8vIHN1cHBvcnQgaXQsIGJ1dCBiZWNhdXNlIEkgZGVjaWRlZCB0byBkcmF3IHRoZSBsaW5lIGF0
IHRoZSBudW1iZXIgb2YKKyAgICAvLyBwZXJtdXRhdGlvbnMgb2YgZXhlY3V0aW9uIGVuZ2luZXMg
dGhhdCBJIHdhbnRlZCB0aGlzIGNvZGUgdG8gZ3Jvay4KKyAgICBBU1NFUlQoY2FuVXNlSklUKTsK
KyNlbmRpZgogICAgIGlmIChjYW5Vc2VKSVQpIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAg
IG1fb3Bjb2RlVGFibGUgPSBsbGludERhdGEtPm9wY29kZU1hcCgpOworICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQorICAgICAgICAgICAgbV9vcGNvZGVJRFRh
YmxlLmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworI2Vs
c2UKICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0
aW5hdGlvbnMgZm9yIG9wY29kZXMuCiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlID0gYml0
d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpKTsKICAgICAgICAgICAg
IG1fb3Bjb2RlVGFibGVbaV0gPSBvcGNvZGU7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0gZWxz
ZSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbmV3IE9wY29k
ZVtudW1PcGNvZGVJRHNdOworI2VuZGlmCiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRpYWxp
emVBbmRSZXR1cm4sIDAsIDApOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBudW1PcGNvZGVJRHM7ICsraSkKQEAgLTY2Nyw5ICs2OTEsMTEgQEAgdm9pZCBJbnRlcnByZXRl
cjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbQogCiBib29sIEludGVycHJldGVyOjppc09wY29kZShP
cGNvZGUgb3Bjb2RlKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQor
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisj
aWYgIUVOQUJMRShMTElOVCkKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG9w
Y29kZSA+PSAwICYmIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihvcGNvZGUpKSA8PSBvcF9lbmQ7CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2RlICE9IEhhc2hU
cmFpdHM8T3Bjb2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJhaXRzPE9wY29k
ZT46OmlzRGVsZXRlZFZhbHVlKG9wY29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJRFRhYmxlLmNv
bnRhaW5zKG9wY29kZSk7CkBAIC03MjYsMTEgKzc1MiwxMSBAQCBORVZFUl9JTkxJTkUgYm9vbCBJ
bnRlcnByZXRlcjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAxLgogI2lmIEVO
QUJMRShKSVQpICYmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBpZiAoY2FsbGVyRnJhbWUtPmds
b2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVj
b2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZy
YW1lLT5yZXR1cm5QQygpKTsKICAgICBlbHNlCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29k
ZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZWxp
ZiBFTkFCTEUoSklUKQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9m
ZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJs
b2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsK
ICNlbHNlCiAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNh
bGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbmRpZgpAQCAtNTE3MCwxMCArNTE5NiwxMCBA
QCB2b2lkIEludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgICAgIGJ5dGVj
b2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJl
dHVyblZQQygpKTsKICNpZiBFTkFCTEUoSklUKQogICAgIGVsc2UKLSAgICAgICAgYnl0ZWNvZGVP
ZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJu
UEMoKSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29k
ZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogI2Vs
c2UKLSAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQo
Y2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVC
bG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7
CiAjZW5kaWYKICAgICBsaW5lTnVtYmVyID0gY2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVyRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQgLSAxKTsKICAgICBzb3VyY2VJRCA9IGNhbGxl
ckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24g
MTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIK
ICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJM
TEludERhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUu
aCIKIApAQCAtNDUsNiArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlv
bkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9i
amVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3Jh
bUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5v
ZGU7CkBAIC05MCwxOSArOTIsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJbnRl
cnByZXRlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBmcmll
bmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkQ2FsbDsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IEpJVDsKICAgICBwdWJsaWM6CiAgICAgICAgIEludGVycHJldGVyKCk7CisgICAgICAgIH5JbnRl
cnByZXRlcigpOwogICAgICAgICAKLSAgICAgICAgdm9pZCBpbml0aWFsaXplKGJvb2wgY2FuVXNl
SklUKTsKKyAgICAgICAgdm9pZCBpbml0aWFsaXplKExMSW50OjpEYXRhKiwgYm9vbCBjYW5Vc2VK
SVQpOwogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlKCkgeyByZXR1cm4gbV9y
ZWdpc3RlckZpbGU7IH0KICAgICAgICAgCiAgICAgICAgIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2Rl
SUQgaWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNp
ZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURf
R09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICAgICAgcmV0dXJuIG1f
b3Bjb2RlVGFibGVbaWRdOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBpZDsKQEAgLTExMiw3
ICsxMTYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlE
KE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxp
emVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7CisgICAgICAgICAg
ICByZXR1cm4gbV9vcGNvZGVJRFRhYmxlLmdldChvcGNvZGUpOworI2VsaWYgRU5BQkxFKENPTVBV
VEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2Rl
KSk7CiAgICAgICAgICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29kZSkpOwpA
QCAtMTIyLDYgKzEyOSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBv
cGNvZGU7CiAjZW5kaWYKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBlbmFibGVk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZW5hYmxlZDsKKyAgICAgICAgfQog
CiAgICAgICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIApAQCAtMTg5LDcgKzIwMSwxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlckZpbGUgbV9yZWdpc3RlckZpbGU7CiAg
ICAgICAgIAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJM
RShMTElOVCkKKyAgICAgICAgT3Bjb2RlKiBtX29wY29kZVRhYmxlOyAvLyBNYXBzIE9wY29kZUlE
ID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCisgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJ
RD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21w
aWxpbmcKKyNlbGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICBP
cGNvZGUgbV9vcGNvZGVUYWJsZVtudW1PcGNvZGVJRHNdOyAvLyBNYXBzIE9wY29kZUlEID0+IE9w
Y29kZSBmb3IgY29tcGlsaW5nCiAgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9v
cGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21waWxpbmcK
ICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVy
RmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9S
ZWdpc3RlckZpbGUuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7CiAgICAg
Y2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAK
ICAgICBjbGFzcyBSZWdpc3RlckZpbGUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShS
ZWdpc3RlckZpbGUpOwpAQCAtODEsNiArODIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
fQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgZ3Jvd1Nsb3dDYXNlKFJlZ2lzdGVyKik7CiAg
ICAgICAgIHZvaWQgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CiAgICAgICAgIHZvaWQgYWRkVG9D
b21taXR0ZWRCeXRlQ291bnQobG9uZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVl
LmgiCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJJbmxpbmVBU00uaCIKKyNp
bmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVNZXRob2RzLmgiCisj
aW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworZXh0ZXJuICJDIiBF
bmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKCk7CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5f
VkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0
ZSopOworCisjaWYgQ1BVKFg4Nl82NCkKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKKyAgICAibW92
ICVyMTMsICVyZGlcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKFg4NikK
K2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAi
XG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAg
Im1vdiAtNDAoJWVkaSksICVlZGlcbiIKKyAgICAibW92ICVlZGksIDQoJWVzcClcbiIKKyAgICAi
am1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRo
RXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpCithc20gKAorIi50ZXh0
IiAiXG4iCisiLmFsaWduIDIiICJcbiIKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICJcbiIKKyIudGh1bWIiICJcbiIKKyIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiOiIgIlxuIgorICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKKyAgICAiY3B5
IHIwLCByNSIgIlxuIgorICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VuZGlmCisKK2V4dGVybiAi
QyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKyNkZWZpbmUgSG9zdENhbGxSZXR1cm5W
YWx1ZV9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBDQUxMSU5HX0NPTlZF
TlRJT05fSVNfU1REQ0FMTAorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBD
REVDTAorI2Vsc2UKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04KKyNlbmRp
ZgorCituYW1lc3BhY2UgSlNDIHsKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxM
X1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOworfQorCisjZW5k
aWYgLy8gSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw4IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3Byb2ZpbGVfd2lsbF9jYWxs
KQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9uZXdfc2NvcGUpCiAgICAgICAgIERFRklORV9P
UChvcF9wdXNoX3Njb3BlKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAg
ICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlf
aW5kZXgpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsKQpAQCAtNDg3LDYgKzQ4OSw4
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3By
ZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9w
dXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcmVzb2x2ZV9nbG9iYWwpCkBAIC01MjYsNiArNTMw
LDEwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAKIEpJVENvZGUgSklU
Ojpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaykKIHsKKyNp
ZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiQ29tcGlsaW5nIEpJVCBjb2Rl
IVxuIik7CisjZW5kaWYKKyAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiAgICAgbV9j
YW5CZU9wdGltaXplZCA9IG1fY29kZUJsb2NrLT5jYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlm
CkBAIC02OTAsOCArNjk4LDEyIEBAIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRy
KiBmdW4KICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBtX2NvZGVCbG9jay0+c3Ry
dWN0dXJlU3R1YkluZm8obV9tZXRob2RDYWxsQ29tcGlsYXRpb25JbmZvW2ldLnByb3BlcnR5QWNj
ZXNzSW5kZXgpLmNhbGxSZXR1cm5Mb2NhdGlvbjsKICAgICB9CiAKLSNpZiBFTkFCTEUoREZHX0pJ
VCkKLSAgICBpZiAobV9jYW5CZU9wdGltaXplZCkgeworI2lmIEVOQUJMRShERkdfSklUKSB8fCBF
TkFCTEUoTExJTlQpCisgICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQKKyNpZiBFTkFCTEUoTExJTlQp
CisgICAgICAgIHx8IHRydWUKKyNlbmRpZgorICAgICAgICApIHsKICAgICAgICAgQ29tcGFjdEpJ
VENvZGVNYXA6OkVuY29kZXIgaml0Q29kZU1hcEVuY29kZXI7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IG1fbGFiZWxzLnNpemUoKTsg
KytieXRlY29kZU9mZnNldCkgewogICAgICAgICAgICAgaWYgKG1fbGFiZWxzW2J5dGVjb2RlT2Zm
c2V0XS5pc1NldCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlz
aW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKSVRD
b2RlKCkgeyB9CiAjZW5kaWYKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gSklUVHlwZSB7IEhv
c3RDYWxsVGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsKKyAgICAgICAgZW51bSBKSVRUeXBl
IHsgTm9uZSwgSG9zdENhbGxUaHVuaywgSW50ZXJwcmV0ZXJUaHVuaywgQmFzZWxpbmVKSVQsIERG
R0pJVCB9OwogICAgICAgICAKICAgICAgICAgc3RhdGljIEpJVFR5cGUgYm90dG9tVGllckpJVCgp
CiAgICAgICAgIHsKQEAgLTY2LDggKzY2LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgcmV0dXJuIERGR0pJVDsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGljIGJv
b2wgaXNPcHRpbWl6aW5nSklUKEpJVFR5cGUgaml0VHlwZSkKKyAgICAgICAgeworICAgICAgICAg
ICAgcmV0dXJuIGppdFR5cGUgPT0gREZHSklUOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICBzdGF0aWMgYm9vbCBpc0Jhc2VsaW5lQ29kZShKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IEludGVycHJldGVyVGh1bmsgfHwgaml0VHlw
ZSA9PSBCYXNlbGluZUpJVDsKKyAgICAgICAgfQorICAgICAgICAKICNpZiBFTkFCTEUoSklUKQog
ICAgICAgICBKSVRDb2RlKCkKKyAgICAgICAgICAgIDogbV9qaXRUeXBlKE5vbmUpCiAgICAgICAg
IHsKICAgICAgICAgfQogCkBAIC03NSw2ICs4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgOiBtX3JlZihyZWYpCiAgICAgICAgICAgICAsIG1faml0VHlwZShqaXRUeXBlKQogICAg
ICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaml0VHlwZSAhPSBOb25lKTsKICAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciAhKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMz
LDIxIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdEcml2
ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCiAK
IG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgogaW5s
aW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklU
Q29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+
Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2Jh
bERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVC
bG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQg
PSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRm
Z0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlKGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwg
aml0Q29kZSk7CkBAIC01NSwxMCArNjEsNyBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHBy
b3ByaWF0ZShKU0dsCiAgICAgICAgIH0KICAgICAgICAgaml0Q29kZSA9IEpJVDo6Y29tcGlsZSgm
Z2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpKTsKICAgICB9Ci0jaWYgIUVOQUJMRShPUENPREVf
U0FNUExJTkcpCi0gICAgaWYgKCFCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2Rl
KCkpCi0gICAgICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5p
dHkoKTsKLSNlbmRpZgorICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bw
b3J0dW5pdHkoKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKCkpOwogICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtNjYsOSArNjksMTQg
QEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbAogCiBpbmxpbmUgYm9v
bCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2Rl
LCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3lt
Ym9sVGFibGUqJiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAg
IGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOwor
ICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBK
SVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlRnVu
Y3Rpb24oZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFy
aXR5Q2hlY2spOwpAQCAtODMsMTEgKzkxLDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0
aW9uSWZBcHByb3ByaQogICAgICAgICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBpbGUo
Jmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgJmppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAg
ICAgfQotI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5l
cmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5
dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7Ci0jZW5kaWYKLSAgICAKKyAgICBjb2RlQmxv
Y2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2Nr
LT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgCiAgICAg
cmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0
aW9ucy5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklURXhjZXB0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgRXhjZXB0
aW9uSGFuZGxlciBnZW5lcmljVGhyb3coSlNHbG9iYWxEYQogCiBFeGNlcHRpb25IYW5kbGVyIGpp
dFRocm93KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpT
VmFsdWUgZXhjZXB0aW9uVmFsdWUsIFJldHVybkFkZHJlc3NQdHIgZmF1bHRMb2NhdGlvbikKIHsK
LSAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9u
VmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGZhdWx0TG9jYXRp
b24pKTsKKyAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhj
ZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGNhbGxG
cmFtZSwgZmF1bHRMb2NhdGlvbikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MTMsNyArMTkxMyw3IEBA
IERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20KICAgICB1bnNpZ25lZCBi
eXRlY29kZUluZGV4ID0gc3RhY2tGcmFtZS5hcmdzWzBdLmludDMyKCk7CiAKICNpZiBFTkFCTEUo
SklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50ZigiRW50ZXJlZCBvcHRpbWl6ZV9mcm9tX2xvb3Ag
d2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICV1
LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAldVxuIiwgY29kZUJsb2NrLT5qaXRFeGVjdXRl
Q291bnRlcigpLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCksIGNvZGVC
bG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOworICAgIHByaW50ZigiJXA6IEVudGVy
ZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6
YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIs
IGNvZGVCbG9jaywgY29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLCBjb2RlQmxvY2stPnJl
b3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCksIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlD
b3VudGVyKCkpOwogI2VuZGlmCiAKICAgICBpZiAoY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBs
YWNlbWVudCgpKSB7CkBAIC0yMTY4LDQ1ICsyMTY4LDEzIEBAIERFRklORV9TVFVCX0ZVTkNUSU9O
KHZvaWQqLCBvcF9jb25zdHJ1Y3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1pbmxpbmUgQ2Fs
bEZyYW1lKiBhcml0eUNoZWNrRm9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBSZWdpc3RlckZpbGUq
IHJlZ2lzdGVyRmlsZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQotewotICAgIEpTRnVu
Y3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oY2FsbEZyYW1lLT5jYWxsZWUoKSk7Ci0gICAgQVNT
RVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwotICAgIENvZGVCbG9jayogbmV3Q29kZUJs
b2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQp
OwotICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKLQotICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3Bh
Y2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBi
eSB0aGUgY2FsbGVyLgotICAgIGlmICghcmVnaXN0ZXJGaWxlLT5ncm93KGNhbGxGcmFtZS0+cmVn
aXN0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+
bV9udW1DYWxsZWVSZWdpc3RlcnMpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEFTU0VSVChh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
KTsKLQotICAgIC8vIFRvbyBmZXcgYXJndW1lbnRzIC0tIGNvcHkgY2FsbCBmcmFtZSBhbmQgYXJn
dW1lbnRzLCB0aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1bWVudHMgd2l0aCB1bmRlZmluZWQuCi0g
ICAgc2l6ZV90IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpczsKLSAgICBSZWdpc3Rlciogc3JjID0gY2FsbEZyYW1lLT5yZWdp
c3RlcnMoKTsKLSAgICBSZWdpc3RlciogZHN0ID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIGRl
bHRhOwotCi0gICAgaW50IGk7Ci0gICAgaW50IGVuZCA9IC1DYWxsRnJhbWU6Om9mZnNldEZvcihh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7Ci0gICAgZm9yIChpID0gLTE7IGkgPj0gZW5kOyAt
LWkpCi0gICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKLQotICAgIGVuZCAtPSBkZWx0YTsKLSAgICBm
b3IgKCA7IGkgPj0gZW5kOyAtLWkpCi0gICAgICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7Ci0K
LSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGRzdCk7Ci0g
ICAgQVNTRVJUKCh2b2lkKiluZXdDYWxsRnJhbWUgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7Ci0g
ICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKLX0KLQogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCos
IG9wX2NhbGxfYXJpdHlDaGVjaykKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tG
cmFtZSk7CiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1l
OwogCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBhcml0eUNoZWNrRm9yKGNhbGxGcmFt
ZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDYWxsKTsKKyAgICBDYWxsRnJhbWUq
IG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUs
IHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CiAgICAgaWYgKCFuZXdDYWxs
RnJhbWUpCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0
YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVy
Zmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOwogCkBAIC0yMjE5LDcgKzIxODcs
NyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogCi0gICAgQ2FsbEZyYW1l
KiBuZXdDYWxsRnJhbWUgPSBhcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdp
c3RlckZpbGUsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1l
ID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5y
ZWdpc3RlckZpbGUsIENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQog
ICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1l
LCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJv
cihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4
ICsyNiwxMCBAQAogI2lmbmRlZiBKU0ludGVyZmFjZUpJVF9oCiAjZGVmaW5lIEpTSW50ZXJmYWNl
SklUX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJKSVRD
b2RlLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgogI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUg
IlJlZ2lzdGVyRmlsZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
Q29tbW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRDb21tb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50Q29tbW9uX2gKKyNk
ZWZpbmUgTExJbnRDb21tb25faAorCisjZGVmaW5lIExMSU5UX0VYRUNVVElPTl9UUkFDSU5HIDAK
KyNkZWZpbmUgTExJTlRfSEVMUEVSX1RSQUNJTkcgMAorCisjZW5kaWYgLy8gTExJbnRDb21tb25f
aAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludERh
dGEuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisj
aW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wY29kZS5oIgorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworRGF0YTo6RGF0YSgpCisgICAgOiBt
X2V4Y2VwdGlvbkluc3RydWN0aW9ucyhuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsg
MV0pCisgICAgLCBtX29wY29kZU1hcChuZXcgT3Bjb2RlW251bU9wY29kZUlEc10pCit7CisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyArK2kpCisgICAgICAgIG1f
ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUpOworI2RlZmluZSBPUENPREVfRU5U
Ulkob3Bjb2RlLCBsZW5ndGgpIG1fb3Bjb2RlTWFwW29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF8jI29wY29kZSk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9FTlRS
WSk7CisjdW5kZWYgT1BDT0RFX0VOVFJZCit9CisKK0RhdGE6On5EYXRhKCkKK3sKKyAgICBkZWxl
dGVbXSBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBkZWxldGVbXSBtX29wY29kZU1hcDsK
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJ
TlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgTExJbnREYXRhX2gKKyNkZWZpbmUgTExJbnREYXRhX2gKKwor
I2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisj
aWYgRU5BQkxFKExMSU5UKQorY2xhc3MgRGF0YSB7CitwdWJsaWM6CisgICAgRGF0YSgpOworICAg
IH5EYXRhKCk7CisgICAgCisgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygp
CisgICAgeworICAgICAgICByZXR1cm4gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgfQor
ICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX29w
Y29kZU1hcDsKKyAgICB9Citwcml2YXRlOgorICAgIEluc3RydWN0aW9uKiBtX2V4Y2VwdGlvbklu
c3RydWN0aW9uczsKKyAgICBPcGNvZGUqIG1fb3Bjb2RlTWFwOworfTsKKyNlbHNlIC8vIEVOQUJM
RShMTElOVCkKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Npbmctbm9yZXR1
cm4iCisjZW5kaWYKKworY2xhc3MgRGF0YSB7CitwdWJsaWM6CisgICAgSW5zdHJ1Y3Rpb24qIGV4
Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfTsKKworI2lmIENPTVBJTEVSKENMQU5HKQor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUo
TExJTlQpCisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnRE
YXRhX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2lu
dHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVu
dHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCisjaW5jbHVkZSAiSklUQ29k
ZS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgi
CisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpJVENvZGUmIGppdENv
ZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjaykKK3sKKyAgICBpZiAoIWdsb2Jh
bERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsK
KyAgICAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSkp
KTsKKyAgICAgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChraW5kID09IENv
ZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9u
KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVy
Q29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X2FyaXR5X2NoZWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKGtp
bmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0
YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0
Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25z
dHJ1Y3QpOworICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5j
dGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rKTsKKyAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9u
Rm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7Cit9CisKK3ZvaWQg
Z2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRD
b2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRD
b2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRl
U2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF9ldmFsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZXZhbEVudHJ5
VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKK30KKwordm9pZCBn
ZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGpp
dENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGpp
dENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihwcm9n
cmFtRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIExMSW50RW50cnlwb2ludHNfaAorI2RlZmluZSBMTEludEVudHJ5cG9pbnRz
X2gKKworI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEV2YWxDb2RlQmxvY2s7CitjbGFzcyBKSVRDb2RlOworY2xhc3MgSlNHbG9i
YWxEYXRhOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworY2xhc3MgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOworY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKKworbmFtZXNwYWNlIExMSW50IHsK
Kwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCwgSklUQ29kZSYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjayk7
Cit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKK3ZvaWQg
Z2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYpOworCitpbmxpbmUg
dm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXZhbENvZGVCbG9j
ayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0RXZhbEVudHJ5cG9pbnQoZ2xvYmFsRGF0
YSwgaml0Q29kZSk7Cit9CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9ncmFtQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAg
ICBnZXRQcm9ncmFtRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludEVudHJ5cG9pbnRzX2gKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0
aW9ucy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJKSVRF
eGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMb3dMZXZl
bEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2
b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9I
RUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzLlxuIiwgZ2xv
YmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Ro
cm93KAorICAgICAgICBnbG9iYWxEYXRhLCBleGVjLT5jYWxsZXJGcmFtZSgpLCBnbG9iYWxEYXRh
LT5leGNlcHRpb24sCisgICAgICAgIGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpLT5i
eXRlY29kZU9mZnNldChleGVjLT5jYWxsZXJGcmFtZSgpLCBleGVjLT5yZXR1cm5QQygpKSk7Cit9
CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmxsaW50RGF0YS5leGNl
cHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhl
Y1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORwor
ICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93KS5cbiIsIGds
b2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNU
aHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+
Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBn
bG9iYWxEYXRhLT5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK3ZvaWQq
IGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRf
SEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAoY2FsbFRv
VGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlm
CisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlv
biwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAg
CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2R1cmluZ19jYWxs
X3RyYW1wb2xpbmUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RXhjZXB0aW9uc19oCisjZGVmaW5lIExM
SW50RXhjZXB0aW9uc19oCisKKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25h
bWVzcGFjZSBMTEludCB7CisKKy8vIFRocm93IHRoZSBjdXJyZW50bHkgYWN0aXZlIGV4Y2VwdGlv
biBpbiB0aGUgY29udGV4dCBvZiB0aGUgY2FsbGVyJ3MgY2FsbCBmcmFtZS4KK3ZvaWQgaW50ZXJw
cmV0ZXJUaHJvd0luQ2FsbGVyKEV4ZWNTdGF0ZSopOworCisvLyBUZWxscyB5b3Ugd2hlcmUgdG8g
anVtcCB0byBpZiB5b3Ugd2FudCB0byByZXR1cm4tdG8tdGhyb3csIGFmdGVyIHlvdSd2ZSBhbHJl
YWR5CisvLyBzZXQgdXAgYWxsIGluZm9ybWF0aW9uIG5lZWRlZCB0byB0aHJvdyB0aGUgZXhjZXB0
aW9uLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0
YXRlKik7CisKKy8vIFNhdmVzIHRoZSBjdXJyZW50IFBDIGluIHRoZSBnbG9iYWwgZGF0YSBmb3Ig
c2FmZS1rZWVwaW5nLCBhbmQgZ2l2ZXMgeW91IGEgUEMKKy8vIHRoYXQgeW91IGNhbiB0ZWxsIHRo
ZSBpbnRlcnByZXRlciB0byBnbyB0bywgd2hpY2ggd2hlbiBhZHZhbmNlZCBiZXR3ZWVuIDEKKy8v
IGFuZCA5IHNsb3RzIHdpbGwgZ2l2ZSB5b3UgYW4gImluc3RydWN0aW9uIiB0aGF0IHRocmVhZHMg
dG8gdGhlIGludGVycHJldGVyJ3MKKy8vIGV4Y2VwdGlvbiBoYW5kbGVyLiBOb3RlIHRoYXQgaWYg
eW91IGdpdmUgaXQgdGhlIFBDIGZvciBleGNlcHRpb24gaGFuZGxpbmcsCisvLyBpdCdzIHNtYXJ0
IGVub3VnaCB0byBqdXN0IHJldHVybiB0aGF0IFBDIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxz
ZTsgdGhpcworLy8gbGV0cyB5b3UgdGhyZWFkIGV4Y2VwdGlvbiBoYW5kbGluZyB0aHJvdWdoIGNv
bW1vbiBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgYnkKKy8vIG90aGVyIGhlbHBlcnMuCitJbnN0cnVj
dGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOworCisvLyBVc2Ug
dGhpcyB3aGVuIHlvdSdyZSB0aHJvd2luZyB0byBhIGNhbGwgdGh1bmsuCit2b2lkKiBjYWxsVG9U
aHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
TExJbnQKKworI2VuZGlmIC8vIExMSW50RXhjZXB0aW9uc19oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE0MjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50SGVscGVycy5o
IgorCisjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5j
bHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5o
IgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAi
SklURHJpdmVyLmgiCisjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNCeXRl
QXJyYXkuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUg
IkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0
LmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVk
ZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRl
ICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworI2RlZmluZSBMTElOVF9PUChpbmRleCkg
KGV4ZWMtPnVuY2hlY2tlZFIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisjZGVmaW5lIExMSU5UX09Q
X0MoaW5kZXgpIChleGVjLT5yKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorCisjZGVmaW5lIExMSU5U
X1JFVFVSTl9UV08oZmlyc3QsIHNlY29uZCkgZG8geyAgICAgICBcCisgICAgICAgIHVuaW9uIHsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBzdHJ1Y3Qg
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdm9pZCog
YTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdm9pZCogYjsg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9IHBhaXI7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpbnQ2NF90IGk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gX19ydF91OyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmEgPSBmaXJzdDsgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmIgPSBzZWNvbmQ7ICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX3J0X3UuaTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfRU5EX0lNUEwo
KSBMTElOVF9SRVRVUk5fVFdPKHBjLCBleGVjKQorCisjZGVmaW5lIExMSU5UX1RIUk9XKGV4Y2Vw
dGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTR2xv
YmFsRGF0YSYgX190X2dsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7ICAgICAgICBcCisg
ICAgICAgIF9fdF9nbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Rocm93KTsgICAg
ICAgICAgICBcCisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
KyNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCkgZG8geyAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpIHsg
ICBcCisgICAgICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfRU5EKCkgZG8g
eyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9CUkFO
Q0gob3Bjb2RlLCBjb25kaXRpb24pIGRvIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBib29sIF9fYl9jb25kaXRpb24gPSAoY29uZGl0aW9uKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoX19iX2NvbmRpdGlvbikgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0gcGNbT1BDT0RF
X0xFTkdUSChvcGNvZGUpIC0gMV0udS5vcGVyYW5kOyAgICAgICAgXAorICAgICAgICBlbHNlICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcGNvZGUpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5U
X1JFVFVSTih2YWx1ZSkgZG8geyAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTVmFsdWUgX19y
X3JldHVyblZhbHVlID0gKHZhbHVlKTsgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0gX19yX3JldHVy
blZhbHVlOyAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJO
X1BST0ZJTEVEKG9wY29kZSwgdmFsdWUpIGRvIHsgICAgICAgICAgICAgICBcCisgICAgICAgIEpT
VmFsdWUgX19ycF9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgTExJTlRfT1AoMSkgPSBfX3JwX3JldHVyblZhbHVlOyAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFd
LnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0gXAorICAgICAgICAgICAgSlNWYWx1ZTo6ZW5jb2Rl
KF9fcnBfcmV0dXJuVmFsdWUpOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5E
X0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3
aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFy
Z2V0KSBMTElOVF9SRVRVUk5fVFdPKChjYWxsVGFyZ2V0KSwgKGV4ZWMpKQorCisjZGVmaW5lIExM
SU5UX0NBTExfVEhST1coZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAg
ICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jdF9leGVjID0gKGV4ZWMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2N0X3BjID0g
KHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTR2xv
YmFsRGF0YSYgX19jdF9nbG9iYWxEYXRhID0gKF9fY3RfZXhlYyktPmdsb2JhbERhdGEoKTsgICAg
ICBcCisgICAgICAgIF9fY3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJv
dyk7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jdF9l
eGVjLCBjYWxsVG9UaHJvdyhfX2N0X2V4ZWMsIF9fY3RfcGMpKTsgXAorICAgIH0gd2hpbGUgKGZh
bHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKSBkbyB7
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jY2VfZXhlYyA9
IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3Ry
dWN0aW9uKiBfX2NjZV9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIGlmIChVTkxJS0VMWShfX2NjZV9leGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0
aW9uKSkgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9f
Y2NlX2V4ZWMsIGNhbGxUb1Rocm93KF9fY2NlX2V4ZWMsIF9fY2NlX3BjKSk7IFwKKyAgICB9IHdo
aWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX1JFVFVSTihleGVjLCBwYywgY2FsbFRh
cmdldCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3Jf
ZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBJbnN0cnVjdGlvbiogX19jcl9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICB2b2lkKiBfX2NyX2NhbGxUYXJnZXQgPSAoY2FsbFRhcmdldCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0NIRUNLX0VY
Q0VQVElPTihfX2NyX2V4ZWMtPmNhbGxlckZyYW1lKCksIF9fY3JfcGMpOyAgXAorICAgICAgICBM
TElOVF9DQUxMX0VORF9JTVBMKF9fY3JfZXhlYywgX19jcl9jYWxsVGFyZ2V0KTsgICAgICAgICAg
ICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5
cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywg
aW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVj
dXRpbmcgYmMjJXUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZFxuIiwKKyAgICAgICAgICAgZXhl
Yy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHBjIC0gZXhlYy0+
Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCksCisgICAgICAgICAgIGV4ZWMtPmds
b2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAg
ICAgICAgICBmcm9tV2hlcmUsCisgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29w
ZXJhbmRdLnUub3BlcmFuZCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2V4dGVybiAiQyIgSGVs
cGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0
aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCit7CisgICAgSlNWYWx1ZSB2YWx1
ZSA9IExMSU5UX09QX0Mob3BlcmFuZCkuanNWYWx1ZSgpOworICAgIEVuY29kZWRWYWx1ZURlc2Ny
aXB0b3IgZGVzY3JpcHRvcjsKKyAgICBkZXNjcmlwdG9yLmFzSW50NjQgPSBKU1ZhbHVlOjplbmNv
ZGUodmFsdWUpOworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV1LCBvcCMldTog
VHJhY2UoJWQpOiAlZDogJWQ6ICUwOHg6JTA4eCIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9j
aygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBwYyAtIGV4ZWMtPmNvZGVCbG9jaygp
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCku
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJv
bVdoZXJlLAorICAgICAgICAgICBvcGVyYW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9w
ZXJhbmQsCisgICAgICAgICAgIGRlc2NyaXB0b3IuYXNCaXRzLnRhZywKKyAgICAgICAgICAgZGVz
Y3JpcHRvci5hc0JpdHMucGF5bG9hZCk7CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50ZigiOiAl
cyIsIHZhbHVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgcHJpbnRmKCJcbiIpOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZSkKK3sK
KyAgICBwcmludGYoIiVwIC8gJXA6IGluIHByb2xvZ3VlLlxuIiwgZXhlYy0+Y29kZUJsb2NrKCks
IGV4ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitzdGF0aWMgdm9pZCB0cmFjZUZ1bmN0aW9u
UHJvbG9ndWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBjb21tZW50LCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlv
bihleGVjLT5jYWxsZWUoKSk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
Y2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9ICZleGVj
dXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICBwcmludGYoIiVwIC8gJXA6
IGluICVzIG9mIGZ1bmN0aW9uICVwLCBleGVjdXRhYmxlICVwOyBudW1WYXJzID0gJXUsIG51bVBh
cmFtZXRlcnMgPSAldSwgbnVtQ2FsbGVlUmVnaXN0ZXJzID0gJXUuXG4iLAorICAgICAgICAgICBj
b2RlQmxvY2ssIGV4ZWMsIGNvbW1lbnQsIGNhbGxlZSwgZXhlY3V0YWJsZSwKKyAgICAgICAgICAg
Y29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBjb2RlQmxv
Y2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2Vf
cHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3Vl
KGV4ZWMsICJjYWxsIHByb2xvZ3VlIiwgQ29kZUZvckNhbGwpOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IHByb2xv
Z3VlIiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCit7CisgICAgdHJhY2VGdW5jdGlv
blByb2xvZ3VlKGV4ZWMsICJjYWxsIGFyaXR5IGNoZWNrIiwgQ29kZUZvckNhbGwpOworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9j
b25zdHJ1Y3QpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjb25zdHJ1Y3Qg
YXJpdHkgY2hlY2siLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0wodHJhY2UpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRp
bmcgYmMjJXUsICIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBl
eGVjLAorICAgICAgICAgICBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgcHJpbnRmKCIlcywgIiwgb3Bjb2RlTmFtZXNb
ZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29k
ZSldKTsKKyNlbHNlCisgICAgcHJpbnRmKCJvcCMldSwgIiwgZXhlYy0+Z2xvYmFsRGF0YSgpLmlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSkpOworI2VuZGlmCisgICAgcHJp
bnRmKCJzY29wZSAlcFxuIiwgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woc3BlY2lhbF90cmFjZSkKK3sKKyAgICBwcmludGYoIiVw
IC8gJXA6IGV4ZWN1dGluZyBzcGVjaWFsIGNhc2UgYmMjJXUsIG9wIyV1LCByZXR1cm4gUEMgaXMg
JXBcbiIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAor
ICAgICAgICAgICBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
LAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZXhlYy0+cmV0dXJuUEMoKS52YWx1ZSgpKTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworaW5saW5lIGJvb2wgc2hvdWxkSklUKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICAvLyBZb3UgY2FuIG1vZGlmeSB0aGlzIHRvIHR1cm4gb2ZmIEpJVHRpbmcg
d2l0aG91dCByZWJ1aWxkaW5nIHRoZSB3b3JsZC4KKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0
YSgpLmNhblVzZUpJVCgpOworfQorCitlbnVtIEVudHJ5S2luZCB7IFByb2xvZ3VlLCBBcml0eUNo
ZWNrIH07CitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVjU3RhdGUqIGV4ZWMs
IEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUs
IEVudHJ5S2luZCBraW5kKQoreworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJp
bnRmKCIlcDogRW50ZXJlZCAlcyB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9j
aywgbmFtZSwgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAg
CisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklU
QW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9
CisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgewor
I2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50ZigiICAgIENvZGUgd2Fz
IGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxvY2stPmpp
dFNvb24oKTsKKyAgICBpZiAoa2luZCA9PSBQcm9sb2d1ZSkKKyAgICAgICAgTExJTlRfUkVUVVJO
X1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KDAp
LCBleGVjKTsKKyAgICBBU1NFUlQoa2luZCA9PSBBcml0eUNoZWNrKTsKKyAgICBMTElOVF9SRVRV
Uk5fVFdPKGNvZGVCbG9jay0+Z2V0SklUQ29kZVdpdGhBcml0eUNoZWNrKCkuZXhlY3V0YWJsZUFk
ZHJlc3MoKSwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcikKK3sKKyAg
ICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsIGV4ZWMtPmNvZGVCbG9jaygpLCAiZW50cnlfb3Ny
IiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25f
Zm9yX2NhbGwpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihl
eGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2Rl
Rm9yQ2FsbCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwiLCBQcm9sb2d1ZSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQorewor
ICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkp
LT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNvbnN0cnVjdCks
ICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCIsIFByb2xvZ3VlKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2spCit7
CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUo
KSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ2FsbCksICJl
bnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOworfQor
CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhl
Yy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZv
ckNvbnN0cnVjdCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNr
IiwgQXJpdHlDaGVjayk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3NyKQoreworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgCisjaWYgRU5B
QkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkIGxvb3Bfb3NyIHdp
dGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50RXhl
Y3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoIXNob3VsZEpJVChleGVjKSkg
eworICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgICAgICBMTElO
VF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNvZGVCbG9jay0+
aml0Q29tcGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NF
X09TUikKKyAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIp
OworI2VuZGlmCisgICAgfQorICAgIGNvZGVCbG9jay0+aml0U29vbigpOworICAgIAorICAgIEFT
U0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Cisg
ICAgCisgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gbWFwOworICAgIGNvZGVC
bG9jay0+aml0Q29kZU1hcCgpLT5kZWNvZGUobWFwKTsKKyAgICBCeXRlY29kZUFuZE1hY2hpbmVP
ZmZzZXQqIG1hcHBpbmcgPSBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1
bnNpZ25lZCwgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29kZUluZGV4PihtYXAu
YmVnaW4oKSwgbWFwLnNpemUoKSwgcGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2lu
KCkpOworICAgIEFTU0VSVChtYXBwaW5nKTsKKyAgICBBU1NFUlQobWFwcGluZy0+bV9ieXRlY29k
ZUluZGV4ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwYyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKSkpOworICAgIAorICAgIHZvaWQqIGp1bXBUYXJnZXQgPSBjb2RlQmxvY2st
PmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KG1hcHBpbmctPm1fbWFjaGlu
ZUNvZGVPZmZzZXQpOworICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsKKyAgICAKKyAgICBMTElOVF9S
RVRVUk5fVFdPKGp1bXBUYXJnZXQsIGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChyZXBs
YWNlKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Cisg
ICAgCisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRlcmVk
IHJlcGxhY2Ugd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9j
ay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmIChzaG91bGRK
SVQoZXhlYykpIHsKKyAgICAgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xv
YmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgICAgICBw
cmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICAg
ICAgfQorICAgICAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
Y29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjaykKK3sKKyNpZiBMTElOVF9IRUxQ
RVJfVFJBQ0lORworICAgIHByaW50ZigiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0IHdpdGggZXhlYyA9
ICVwLlxuIiwgZXhlYyk7CisgICAgcHJpbnRmKCJDb2RlQmxvY2sgPSAlcC5cbiIsIGV4ZWMtPmNv
ZGVCbG9jaygpKTsKKyAgICBwcmludGYoIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBl
eGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgIHByaW50ZigiTnVt
IHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bVZhcnMpOworICAgIHByaW50
ZigiQ3VycmVudCBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0
ZXItPnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKKyNlbmRpZgorICAgIEFTU0VSVCgmZXhlYy0+cmVn
aXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSA+IGV4ZWMt
Pmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOworICAgIGlm
IChVTkxJS0VMWSghZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUo
KS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVS
ZWdpc3RlcnNdKSkpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAg
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJy
b3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAg
ICAgcGMgPSByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKGV4ZWMpOworICAgIH0KKyAg
ICBMTElOVF9FTkRfSU1QTCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9h
cml0eUNoZWNrKQoreworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6
YXJpdHlDaGVja0ZvcihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdp
c3RlckZpbGUoKSwgQ29kZUZvckNhbGwpOworICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBl
eGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4
Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJw
cmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGJpdHdp
c2VfY2FzdDx2b2lkKj4oMSksIGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9SRVRVUk5fVFdPKDAs
IG5ld0V4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0X2FyaXR5
Q2hlY2spCit7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0
eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVy
RmlsZSgpLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAg
ZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5l
eGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVy
cHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3
aXNlX2Nhc3Q8dm9pZCo+KDEpLCBleGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygw
LCBuZXdFeGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0
aW9uKQoreworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGluZyBh
biBhY3RpdmF0aW9uLCBleGVjID0gJXAhXG4iLCBleGVjKTsKKyNlbmRpZgorICAgIEpTQWN0aXZh
dGlvbiogYWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYywgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlYy0+Y29kZUJsb2Nr
KCktPm93bmVyRXhlY3V0YWJsZSgpKSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5z
Y29wZUNoYWluKCktPnB1c2goYWN0aXZhdGlvbikpOworICAgIExMSU5UX1JFVFVSTihKU1ZhbHVl
KGFjdGl2YXRpb24pKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1
bWVudHMpCit7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3Jl
YXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIocGNbMV0udS5vcGVyYW5kKSA9IGFyZ3VtZW50czsK
KyAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51
Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKQoreworICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVj
dG9yID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgCisjaWYgIUFTU0VSVF9ESVNB
QkxFRAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBBU1NFUlQoY29uc3Ry
dWN0b3ItPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNvbnN0
cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CisjZW5kaWYKKyAgICAKKyAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZTsKKyAgICBKU1ZhbHVlIHByb3RvID0gTExJTlRfT1AoMikuanNWYWx1ZSgp
OworICAgIGlmIChwcm90by5pc09iamVjdCgpKQorICAgICAgICBzdHJ1Y3R1cmUgPSBhc09iamVj
dChwcm90byktPmluaGVyaXRvcklEKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgZWxzZQorICAg
ICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5lbXB0
eU9iamVjdFN0cnVjdHVyZSgpOworICAgIAorICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0
eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2NvbnZlcnRfdGhpcykKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSkuanNWYWx1ZSgp
OworICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBMTElOVF9SRVRVUk4odjEudG9U
aGlzT2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmpl
Y3QpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSkKK3sKKyAgICBMTElOVF9SRVRV
Uk4oY29uc3RydWN0QXJyYXkoZXhlYywgYml0d2lzZV9jYXN0PEpTVmFsdWUqPigmTExJTlRfT1Ao
MikpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
d19hcnJheV9idWZmZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMs
IGV4ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihwY1syXS51Lm9wZXJhbmQpLCBwY1sz
XS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdleHAp
Cit7CisgICAgUmVnRXhwKiByZWdFeHAgPSBleGVjLT5jb2RlQmxvY2soKS0+cmVnZXhwKHBjWzJd
LnUub3BlcmFuZCk7CisgICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkKKyAgICAgICAgTExJTlRf
VEhST1coY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgZmxhZyBzdXBwbGllZCB0byBS
ZWdFeHAgY29uc3RydWN0b3IuIikpOworICAgIExMSU5UX1JFVFVSTihSZWdFeHBPYmplY3Q6OmNy
ZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbighTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSkK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjplcXVhbChleGVjLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgp
LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjpz
dHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKQoreworICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2xlc3NlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVz
c0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5j
KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9O
dW1iZXIoZXhlYykgKyAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVj
KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9O
dW1iZXIoZXhlYykgLSAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2lu
YykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVy
KGV4ZWMpOworICAgIExMSU5UX09QKDIpID0ganNOdW1iZXIocmVzdWx0ICsgMSk7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcG9zdF9kZWMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUo
KS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCAtIDEp
OworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmVnYXRlKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcigtTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2FkZCkKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSB2MiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAor
I2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUcnlpbmcgdG8gYWRkICVzIiwg
djEuZGVzY3JpcHRpb24oKSk7CisgICAgcHJpbnRmKCIgdG8gJXMuXG4iLCB2Mi5kZXNjcmlwdGlv
bigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICh2MS5pc1N0cmluZygpICYmICF2Mi5pc09iamVj
dCgpKSB7CisgICAgICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhleGVjLCBhc1N0cmluZyh2MSks
IHYyLnRvU3RyaW5nKGV4ZWMpKSk7CisgICAgfQorICAgIAorICAgIGlmICh2MS5pc051bWJlcigp
ICYmIHYyLmlzTnVtYmVyKCkpCisgICAgICAgIExMSU5UX1JFVFVSTihqc051bWJlcih2MS5hc051
bWJlcigpICsgdjIuYXNOdW1iZXIoKSkpOworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0FkZFNs
b3dDYXNlKGV4ZWMsIHYxLCB2MikpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVs
KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKSAqIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2RpdikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLyBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051
bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKQoreworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihmbW9kKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVt
YmVyKGV4ZWMpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA8PCBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcnNoaWZ0KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRv
VUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KQor
eworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1VJ
bnQzMihleGVjKSA+PiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKQoreworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpICYgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfYml0b3IpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgfCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0lu
dDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIo
ZXhlYykgXiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKH5MTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpCit7CisgICAgSlNWYWx1ZSBi
YXNlVmFsID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisjaWZuZGVmIE5ERUJVRworICAgIFR5
cGVJbmZvIHR5cGVJbmZvKFVuc3BlY2lmaWVkVHlwZSk7CisgICAgQVNTRVJUKCFiYXNlVmFsLmlz
T2JqZWN0KCkKKyAgICAgICAgICAgfHwgISh0eXBlSW5mbyA9IGFzT2JqZWN0KGJhc2VWYWwpLT5z
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKSkuaW1wbGVtZW50c0hhc0luc3RhbmNlKCkpOworI2VuZGlm
CisgICAgTExJTlRfVEhST1coY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoZXhlYywgImluc3RhbmNl
b2YiLCBiYXNlVmFsKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9m
KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluc3Rh
bmNlT2ZTbG93KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl90eXBlb2YpCit7CisgICAgTExJTlRfUkVUVVJOKGpzVHlwZVN0cmluZ0ZvclZh
bHVlKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pc191bmRlZmluZWQpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbih2LmlzQ2VsbCgpID8gdi5h
c0NlbGwoKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgp
IDogdi5pc1VuZGVmaW5lZCgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19i
b29sZWFuKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkuaXNCb29sZWFuKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251
bWJlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLmlzTnVtYmVyKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmlu
ZykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGlzSlNTdHJpbmcoTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3Qp
Cit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzT2JqZWN0VHlwZShMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0
aW9uKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc0Z1bmN0aW9uVHlwZShMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lu
KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluKGV4
ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpCit7CisgICAgTExJTlRfUkVU
VVJOX1BST0ZJTEVEKG9wX3Jlc29sdmUsIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMs
IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCkKK3sKKyAgICBMTElOVF9SRVRV
Uk5fUFJPRklMRUQoCisgICAgICAgIG9wX3Jlc29sdmVfc2tpcCwKKyAgICAgICAgQ29tbW9uU2xv
d1BhdGhzOjpvcFJlc29sdmVTa2lwKAorICAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgIGV4
ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCksCisgICAgICAgICAg
ICBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworc3RhdGljIEpTVmFsdWUgcmVzb2x2ZUdsb2JhbChF
eGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOworICAgIEFTU0VSVChnbG9iYWxPYmplY3Qt
PmlzR2xvYmFsT2JqZWN0KCkpOworICAgIGludCBwcm9wZXJ0eSA9IHBjWzJdLnUub3BlcmFuZDsK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHBjWzNdLnUuc3RydWN0dXJlLmdldCgpOworICAg
IAorICAgIEFTU0VSVF9VTlVTRUQoc3RydWN0dXJlLCBzdHJ1Y3R1cmUgIT0gZ2xvYmFsT2JqZWN0
LT5zdHJ1Y3R1cmUoKSk7CisgICAgCisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2st
PmlkZW50aWZpZXIocHJvcGVydHkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVj
dCk7CisgICAgCisgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlk
ZW50LCBzbG90KSkgeworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoZXhl
YywgaWRlbnQpOworICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgJiYgIWdsb2Jh
bE9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAg
ICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBnbG9iYWxPYmplY3QpIHsKKyAgICAgICAgICAgIHBj
WzNdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCks
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkp
OworICAgICAgICAgICAgcGNbNF0gPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBleGVjLT5n
bG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVj
LCBpZGVudCk7CisgICAgcmV0dXJuIEpTVmFsdWUoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Jlc29sdmVfZ2xvYmFsKQoreworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9y
ZXNvbHZlX2dsb2JhbCwgcmVzb2x2ZUdsb2JhbChleGVjLCBwYykpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9SRVRV
Uk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYywgcmVzb2x2ZUdsb2JhbChleGVj
LCBwYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2
ZV9nbG9iYWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2
ZV9nbG9iYWxfZHluYW1pYywgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+
Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9iYXNlKQoreworICAgIElkZW50aWZpZXImIGlkZW50
ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBp
ZiAocGNbM10udS5vcGVyYW5kKSB7CisgICAgICAgIEpTVmFsdWUgYmFzZSA9IEpTQzo6cmVzb2x2
ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgdHJ1ZSk7CisgICAgICAgIGlm
ICghYmFzZSkKKyAgICAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEds
b2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgICAgIExMSU5UX1JF
VFVSTihiYXNlKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jl
c29sdmVfYmFzZSwgSlNDOjpyZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFp
bigpLCBmYWxzZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3Bl
cnR5X2V4aXN0cykKK3sKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoTExJTlRfT1Ao
MSkuanNWYWx1ZSgpKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIElkZW50
aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVy
YW5kKTsKKyAgICBpZiAoIW9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90
KSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdu
bWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQoreworICAgIEpTVmFsdWUg
cmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVXaXRoQmFzZShleGVjLCBleGVjLT5j
b2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7Cisg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7Cisg
ICAgLy8gRklYTUU6IHRlY2huaWNhbGx5IHNob3VsZCBoYXZlIHByb2ZpbGluZywgYnV0IHdlIGRv
bid0IGRvIGl0IGJlY2F1c2UgdGhlIERGRyB3b24ndCB1c2UgaXQuCisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKK3sKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aFRoaXMoZXhl
YywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRf
T1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0g
cmVzdWx0OworICAgIC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcs
IGJ1dCB3ZSBkb24ndCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKQorewor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRp
ZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1
ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgIExMSU5UX09QKDEpID0gcmVzdWx0OworCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQor
ICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkKKyAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgp
ID09IGJhc2VWYWx1ZQorICAgICAgICAmJiBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFBy
b3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwg
PSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFz
ZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlz
VW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKKyAgICAgICAgICAgIHBjWzRdLnUu
c3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBwY1s1XS51
Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIHBjW09QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X2lkKSAtIDFd
LnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRz
X2xlbmd0aCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUu
b3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7
CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKKyAgICBMTElOVF9SRVRVUk4oYmFz
ZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcHV0X2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIo
cGNbMl0udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSku
anNWYWx1ZSgpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCkpOworICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCisgICAgICAgIGFzT2JqZWN0KGJhc2VW
YWx1ZSktPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGlkZW50LCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSwgc2xvdCk7CisgICAgZWxzZQorICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMs
IGlkZW50LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tf
RVhDRVBUSU9OKCk7CisgICAgCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAm
JiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNl
bGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
YmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUt
PmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5
cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkKKyAgICAgICAgICAgICYmIGJhc2VD
ZWxsID09IHNsb3QuYmFzZSgpKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzbG90
LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CisgICAgICAgICAgICAg
ICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIHN0cnVjdHVyZS0+cHJldmlvdXNJ
RCgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBi
ZWNhdXNlIHNvbWUgb2YgdGhlIG1ldGhvZHMgd2UgY2FsbAorICAgICAgICAgICAgICAgICAgICAv
LyBiZWxvdyBtYXkgR0MuCisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKworICAgICAgICAgICAgICAg
ICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7CisgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91
c0lEKCktPmlzT2JqZWN0KCkpOworICAgICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVy
ZS5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNp
emVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0
KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgICAgICBTdHJ1
Y3R1cmVDaGFpbiogY2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpOworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoY2hhaW4pOworICAgICAgICAgICAgICAgICAgICBwY1s3
XS51LnN0cnVjdHVyZUNoYWluLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmds
b2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOworICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlf
aWQpOworICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAg
ICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9kZWxfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2Rl
QmxvY2soKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLnRvT2JqZWN0KGV4ZWMpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5t
ZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBjb2RlQmxvY2st
PmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQor
ICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxl
dGUgcHJvcGVydHkuIikpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUp
KTsKK30KKworaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCit7CisgICAgaWYgKExJS0VMWShiYXNlVmFs
dWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7CisgICAgICAgIGlmIChKU1Zh
bHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KGV4ZWMs
IGFzU3RyaW5nKHN1YnNjcmlwdCktPnZhbHVlKGV4ZWMpKSkKKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorICAgIAorICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgeworICAg
ICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pT
U3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkp
CisgICAgICAgICAgICByZXR1cm4gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywg
aSk7CisgICAgICAgIAorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYmIGFz
Qnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAgcmV0
dXJuIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAK
KyAgICAgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgaSk7CisgICAgfQorICAgIAorICAg
IElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSk7CisgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVydHkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9SRVRV
Uk5fUFJPRklMRUQob3BfZ2V0X2J5X3ZhbCwgZ2V0QnlWYWwoZXhlYywgTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQoreworICAgIEpTVmFsdWUgYXJndW1lbnRz
ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAgICAg
IGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYyk7
CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBMTElOVF9PUCgyKSA9
IGFyZ3VtZW50czsKKyAgICAgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgfQorICAgIAorICAg
IExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBhcmd1bWVudHMsIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpCit7
CisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1AoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
dXRfYnlfdmFsKQoreworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2Jh
bERhdGEoKTsKKyAgICAKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7
CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAg
IGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CisgICAgICAgIHVpbnQzMl90IGkg
PSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUp
KSB7CisgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOwor
ICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNhblNldEluZGV4KGkpKQorICAgICAgICAgICAgICAg
IGpzQXJyYXktPnNldEluZGV4KGdsb2JhbERhdGEsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4KGpzQXJyYXksIGV4ZWMsIGks
IHZhbHVlKTsKKyAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICB9CisgICAgICAgIGlm
IChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkKKyAgICAgICAgICAgICYmIGFzQnl0ZUFycmF5KGJh
c2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CisgICAgICAgICAgICBKU0J5dGVBcnJheSog
anNCeXRlQXJyYXkgPSBhc0J5dGVBcnJheShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYgKHZh
bHVlLmlzSW50MzIoKSkgeworICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChp
LCB2YWx1ZS5hc0ludDMyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAg
ICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNOdW1iZXIoKSk7CisgICAgICAg
ICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
YmFzZVZhbHVlLnB1dChleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgIExMSU5UX0VORCgpOworICAg
IH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7
CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCkKK3sK
KyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpT
T2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIAorICAg
IEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisgICAg
Ym9vbCBjb3VsZERlbGV0ZTsKKyAgICAKKyAgICB1aW50MzJfdCBpOworICAgIGlmIChzdWJzY3Jp
cHQuZ2V0VUludDMyKGkpKQorICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNlT2JqZWN0LCBleGVjLCBpKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIElkZW50
aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERlbGV0
ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3Qs
IGV4ZWMsIHByb3BlcnR5KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBl
eGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAg
CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KQoreworICAgIExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpLnB1dChleGVjLCBwY1syXS51Lm9wZXJhbmQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9n
ZXR0ZXIpCit7CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsK
KyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7
CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihw
Y1syXS51Lm9wZXJhbmQpOworICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmpl
Y3QoKSk7CisgICAgYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lR2V0dGVyKGJhc2VPYmos
IGV4ZWMsIGlkZW50LCBhc09iamVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpCit7
CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09i
amVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRl
bnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9w
ZXJhbmQpOworICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7Cisg
ICAgYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lU2V0dGVyKGJhc2VPYmosIGV4ZWMsIGlk
ZW50LCBhc09iamVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpCit7CisgICAgdW5z
aWduZWQgY291bnQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgU2NvcGVDaGFpbk5vZGUqIHRtcCA9
IGV4ZWMtPnNjb3BlQ2hhaW4oKTsKKyAgICB3aGlsZSAoY291bnQtLSkKKyAgICAgICAgdG1wID0g
dG1wLT5wb3AoKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKHRtcCk7CisgICAgcGMgKz0gcGNb
Ml0udS5vcGVyYW5kOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfanRydWUpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2p0cnVlLCBMTElOVF9PUF9DKDEp
LmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfamZhbHNlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZmFsc2UsICFMTElOVF9PUF9DKDEp
LmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfamxlc3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzLCBqc0xlc3M8dHJ1ZT4oZXhl
YywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpCit7CisgICAgTExJTlRfQlJBTkNI
KG9wX2pubGVzcywgIWpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2pncmVhdGVyKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlciwganNMZXNzPGZhbHNl
PihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcikKK3sKKyAgICBMTElO
VF9CUkFOQ0gob3Bfam5ncmVhdGVyLCAhanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2psZXNzZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEsIGpz
TGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpCit7
CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChv
cF9qZ3JlYXRlcmVxLCBqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qbmdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEsICFq
c0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1t
KQoreworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7Cisg
ICAgQVNTRVJUKHNjcnV0aW5lZS5pc0RvdWJsZSgpKTsKKyAgICBkb3VibGUgdmFsdWUgPSBzY3J1
dGluZWUuYXNEb3VibGUoKTsKKyAgICBpbnQzMl90IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50
MzJfdD4odmFsdWUpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOwor
ICAgIGlmICh2YWx1ZSA9PSBpbnRWYWx1ZSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2RlQmxvY2stPmltbWVkaWF0
ZVN3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGludFZhbHVl
LCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNl
dDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRj
aF9zdHJpbmcpCit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAo
IXNjcnV0aW5lZS5pc1N0cmluZygpKQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAg
IGVsc2UgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgICAgICBwYyArPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShwY1sxXS51
Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGFzU3RyaW5nKHNjcnV0aW5lZSktPnZhbHVlKGV4ZWMp
LmltcGwoKSwgZGVmYXVsdE9mZnNldCk7CisgICAgfQorICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmMpCit7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlw
ZSgpICE9IEZ1bmN0aW9uQ29kZQorICAgICAgICAgICB8fCAhY29kZUJsb2NrLT5uZWVkc0Z1bGxT
Y29wZUNoYWluKCkKKyAgICAgICAgICAgfHwgZXhlYy0+dW5jaGVja2VkUihjb2RlQmxvY2stPmFj
dGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5H
CisgICAgcHJpbnRmKCJDcmVhdGluZyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJTlRf
UkVUVVJOKGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzJdLnUub3BlcmFuZCktPm1ha2UoZXhl
YywgZXhlYy0+c2NvcGVDaGFpbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXdfZnVuY19leHApCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5j
dGlvbkV4cHIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVuY3Rp
b24tPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICAKKyAgICBpZiAoIWZ1bmN0
aW9uLT5uYW1lKCkuaXNOdWxsKCkpIHsKKyAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogZnVu
Y3Rpb25TY29wZU9iamVjdCA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBmdW5j
dGlvbi0+bmFtZSgpLCBmdW5jLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBmdW5j
LT5zZXRTY29wZShleGVjLT5nbG9iYWxEYXRhKCksIGZ1bmMtPnNjb3BlKCktPnB1c2goZnVuY3Rp
b25TY29wZU9iamVjdCkpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZnVuYyk7Cit9
CisKK3N0YXRpYyBIZWxwZXJSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhl
Y0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxl
ckZyYW1lKCk7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERh
dGEoKTsKKworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigp
KTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CisKKyAgICBpZiAoa2luZCA9PSBD
b2RlRm9yQ2FsbCkgeworICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5
cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShjYWxsZWUsIGNhbGxEYXRhKTsKKyAgICAKKyAgICAg
ICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlSlMpOworICAgIAorICAgICAgICBpZiAoY2Fs
bFR5cGUgPT0gQ2FsbFR5cGVIb3N0KSB7CisgICAgICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2Fs
bFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihl
eGVjQ2FsbGVlKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJO
KGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSk7CisgICAgICAgIH0KKyAgICAgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcK
KyAgICAgICAgcHJpbnRmKCJDYWxsIGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNh
bGxlZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9
PSBDYWxsVHlwZU5vbmUpOworICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVh
dGVOb3RBRnVuY3Rpb25FcnJvcihleGVjLCBjYWxsZWUpKTsKKyAgICB9CisKKyAgICBBU1NFUlQo
a2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0
cnVjdERhdGE7CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0
RGF0YShjYWxsZWUsIGNvbnN0cnVjdERhdGEpOworICAgIAorICAgIEFTU0VSVChjb25zdHJ1Y3RU
eXBlICE9IENvbnN0cnVjdFR5cGVKUyk7CisgICAgCisgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0g
Q29uc3RydWN0VHlwZUhvc3QpIHsKKyAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5W
YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVj
Q2FsbGVlKSk7CisgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgfQorICAg
IAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgICAgIHByaW50ZigiQ29uc3RydWN0b3Ig
Y2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOwor
I2VuZGlmCisKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSk7
CisgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJy
b3IoZXhlYywgY2FsbGVlKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIHNldFVwQ2Fs
bChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExpbmtJbmZvKiBj
YWxsTGlua0luZm8gPSAwKQoreworICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBn
ZXRKU0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOworICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNl
bGwpCisgICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2FsbGVl
QXNWYWx1ZSwga2luZCk7CisgICAgCisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlv
bihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihj
YWxsZWUtPnNjb3BlVW5jaGVja2VkKCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxl
ID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
IGNvZGVQdHI7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOworICAgIGlmIChleGVjdXRh
YmxlLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2Vu
ZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIGVsc2UgeworICAg
ICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOworICAgICAgICBKU09iamVjdCogZXJy
b3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5z
Y29wZSgpLCBraW5kKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgTExJTlRfQ0FM
TF9USFJPVyhleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOworICAgICAgICBj
b2RlQmxvY2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5k
KTsKKyAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgICAgIGlmIChleGVjQ2FsbGVlLT5h
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSkpCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVj
dXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRl
ZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICB9CisgICAgCisgICAgaWYg
KGNhbGxMaW5rSW5mbykgeworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLT5pc09uTGlzdCgpKQor
ICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5yZW1vdmUoKTsKKyAgICAgICAgRXhlY1N0YXRlKiBl
eGVjQ2FsbGVyID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgY2FsbExpbmtJ
bmZvLT5jYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+Y29k
ZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0lu
Zm8tPmxhc3RTZWVuQ2FsbGVlLnNldChleGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4ZWNDYWxs
ZXItPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAgICAgY2Fs
bExpbmtJbmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9IGNvZGVQdHI7CisgICAgICAgIGlmIChjb2Rl
QmxvY2spCisgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbExpbmtJ
bmZvKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMs
IGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5U
eXBlIGdlbmVyaWNDYWxsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAt
IFNldCB1cCBhIGNhbGwgZnJhbWUuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBh
bmQgY29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBJZiBwb3NzaWJsZSwgbGluayB0
aGUgY2FsbCdzIGlubGluZSBjYWNoZS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hp
bmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAg
ICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAK
KyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAg
IAorICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUu
b3BlcmFuZCk7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxl
ZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMp
OworICAgIAorICAgIEFTU0VSVChwY1s0XS51LmNhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJuIHNl
dFVwQ2FsbChleGVjQ2FsbGVlLCBwYywga2luZCwgY2FsbGVlQXNWYWx1ZSwgcGNbNF0udS5jYWxs
TGlua0luZm8pOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCkKK3sKKyAgICBy
ZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDYWxsKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhl
YywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y2FsbF92YXJhcmdzKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAg
YSBjYWxsIGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4KKyAg
ICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2Fy
eS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNh
bGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFs
dWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWND
YWxsZWUgPSBsb2FkVmFyYXJncygKKyAgICAgICAgZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5p
bnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksCisgICAgICAgIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5vcGVyYW5kKTsKKyAgICBMTElO
VF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYyk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+
dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4
ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIoUmVn
aXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90Pihw
YyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSk7CisgICAgCisgICAgcmV0dXJuIHNl
dFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKQoreworICAgIEpTVmFsdWUgY2Fs
bGVlQXNWYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUq
IGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5z
ZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWND
YWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIo
UmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5z
ZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0UmV0
dXJuUEMoYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4oJmxsaW50X2dlbmVyaWNfcmV0dXJuX3Bv
aW50KSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworICAgIGV4ZWMtPnVuY2hl
Y2tlZFIoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxp
bnQzMl90PihwYyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7CisgICAgCisgICAgaWYg
KCFpc0hvc3RGdW5jdGlvbihjYWxsZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpCisgICAgICAg
IHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1Zh
bHVlKTsKKyAgICAKKyAgICBnbG9iYWxEYXRhLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBldmFsKGV4
ZWNDYWxsZWUpOworICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVy
cHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQoreworICAgIEFTU0VSVChleGVj
LT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBKU1ZhbHVlIGFjdGl2
YXRpb25WYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFjdGl2YXRpb25W
YWx1ZSkgeworICAgICAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlm
aWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKSB7CisgICAg
ICAgICAgICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAg
ICAgICAgICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAgfQorICAgICAg
ICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNB
Y3RpdmF0aW9uKGFjdGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihleGVj
LT5nbG9iYWxEYXRhKCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVu
bW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpCisg
ICAgICAgIGFzQXJndW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIGFjdGl2YXRpb24pOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQoreworICAgIEFTU0VSVChleGVjLT5jb2Rl
QmxvY2soKS0+dXNlc0FyZ3VtZW50cygpICYmICFleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxs
U2NvcGVDaGFpbigpKTsKKyAgICBhc0FyZ3VtZW50cyhleGVjLT51bmNoZWNrZWRSKHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpLT50ZWFyT2Zm
KGV4ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
c3RyY2F0KQoreworICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhleGVjLCAmTExJTlRfT1AoMiks
IHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJp
bWl0aXZlKQoreworICAgIExMSU5UX1JFVFVSTihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1By
aW1pdGl2ZShleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVz
KQoreworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAodi5p
c1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBjICs9IHBjWzVdLnUub3BlcmFuZDsKKyAg
ICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBvID0gdi50b09i
amVjdChleGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVjdHVyZSgpOwor
ICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBzdHJ1
Y3R1cmUtPmVudW1lcmF0aW9uQ2FjaGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlOYW1lSXRlcmF0
b3IgfHwganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4oKSAhPSBz
dHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpKQorICAgICAgICBqc1Byb3BlcnR5TmFtZUl0
ZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8pOworICAgIAor
ICAgIExMSU5UX09QKDEpID0gSlNWYWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKKyAgICBM
TElOVF9PUCgyKSA9IEpTVmFsdWUobyk7CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rlcjo6d2l0
aEludCgwKTsKKyAgICBMTElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJvcGVydHlO
YW1lSXRlcmF0b3ItPnNpemUoKSk7CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcF9n
ZXRfcG5hbWVzKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25leHRfcG5hbWUpCit7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChMTElOVF9P
UCgyKS5qc1ZhbHVlKCkpOworICAgIEpTU3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3RyaW5nKExMSU5U
X09QKDEpLmpzVmFsdWUoKSk7CisgICAgaWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50
aWZpZXIoZXhlYywgcHJvcGVydHktPnZhbHVlKGV4ZWMpKSkpIHsKKyAgICAgICAgLy8gR28gdG8g
dGFyZ2V0LgorICAgICAgICBwYyArPSBwY1s2XS51Lm9wZXJhbmQ7CisgICAgfSAvLyBFbHNlLCBk
b24ndCBjaGFuZ2UgdGhlIFBDLCBzbyB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxvb3AuCisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKQor
eworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCog
byA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
CisgICAgTExJTlRfT1AoMSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2Nv
cGVDaGFpbigpLT5wdXNoKG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSkKK3sKKyAgICBleGVjLT5zZXRTY29wZUNoYWlu
KGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cG9wKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpCit7CisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogc2NvcGUgPSBKU1N0
YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJd
LnUub3BlcmFuZCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgRG9udERlbGV0ZSk7CisgICAgZXhl
Yy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goc2NvcGUpKTsKKyAgICBM
TElOVF9SRVRVUk4oc2NvcGUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cp
Cit7CisgICAgTExJTlRfVEhST1coTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQoreworICAgIExMSU5U
X1RIUk9XKGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZGVidWcpCit7CisgICAgaW50IGRlYnVnSG9va0lEID0gcGNbMV0udS5vcGVyYW5kOwor
ICAgIGludCBmaXJzdExpbmUgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaW50IGxhc3RMaW5lID0g
cGNbM10udS5vcGVyYW5kOworICAgIAorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRl
ci0+ZGVidWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmly
c3RMaW5lLCBsYXN0TGluZSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjpl
bmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPndpbGxFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEp
LmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wcm9maWxlX2RpZF9jYWxsKQoreworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxl
clJlZmVyZW5jZSgpKS0+ZGlkRXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOwor
ICAgIExMSU5UX0VORCgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEhlbHBlcnNfaAorI2RlZmluZSBMTEludEhlbHBl
cnNfaAorCisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJ
bnQgeworCit0eXBlZGVmIGludDY0X3QgSGVscGVyUmV0dXJuVHlwZTsKKworZXh0ZXJuICJDIiBI
ZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rp
b24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7CitleHRlcm4gIkMiIEhlbHBlclJldHVy
blR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJv
bVdoZXJlLCBpbnQgb3BlcmFuZCk7CisKKyNkZWZpbmUgTExJTlRfSEVMUEVSX0RFQ0wobmFtZSkg
XAorICAgIGV4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF8jI25hbWUoRXhlY1N0YXRl
KiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xv
Z3VlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxs
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCk7CitMTElO
VF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVM
UEVSX0RFQ0wodHJhY2UpOworTExJTlRfSEVMUEVSX0RFQ0woc3BlY2lhbF90cmFjZSk7CitMTElO
VF9IRUxQRVJfREVDTChlbnRyeV9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1
bmN0aW9uX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3Jf
Y2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0wobG9vcF9vc3IpOwor
TExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSk7CitMTElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9m
aWxlX2NoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY3JlYXRlX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRl
X3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcyk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bmV3X2FycmF5KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfcmVnZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9ub3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2VxKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9uZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2xlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3NlcSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3Jl
YXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wcmVfZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2lu
Yyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9kZWMpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3RvX2pzbnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2FkZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbXVsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2Rpdik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3JzaGlm
dCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdXJzaGlmdCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfYml0YW5kKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9i
aXRub3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZik7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfdHlwZW9mKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRlZmluZWQpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Jvb2xlYW4pOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX2Z1bmN0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cmVzb2x2ZV9za2lwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9iYXNlKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9yZXNvbHZlX3dpdGhfYmFzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2
ZV93aXRoX3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3B1dF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5
X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9nZXRfYnlfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3B1dF9ieV9pbmRleCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2dl
dHRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X3NldHRlcik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfam1wX3Njb3Blcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRy
dWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pmYWxzZSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfamxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2puZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3NlcSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pn
cmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcmVxKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9zd2l0Y2hfY2hhcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0cmluZyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmMpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25ld19mdW5jX2V4cCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jYWxsX3ZhcmFyZ3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbik7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9zdHJjYXQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X3BuYW1lcyk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbmV4dF9wbmFtZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29w
ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9wX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhy
b3cpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcik7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVidWcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Byb2ZpbGVfd2lsbF9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2Rp
ZF9jYWxsKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTElu
dEhlbHBlcnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZs
aW5lQXNtQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKKyNkZWZpbmUgTExJbnRPZmZsaW5lQXNt
Q29uZmlnX2gKKworI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENQVShYODYpCisjZGVm
aW5lIE9GRkxJTkVfQVNNX1g4NiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMAor
I2VuZGlmCisKKyNpZiBDUFUoQVJNdjcpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDEKKyNl
bHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDAKKyNlbmRpZgorCisjaWYgIUFTU0VSVF9E
SVNBQkxFRAorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAxCisjZWxzZQorI2Rl
ZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIENQVShCSUdf
RU5ESUFOKQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDEKKyNlbHNlCisjZGVmaW5l
IE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMAorI2VuZGlmCisKKyNpZiBFTkFCTEUoTExJTlRfT1NS
X1RPX0pJVCkKKyNkZWZpbmUgT0ZGTElORV9BU01fSklUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZp
bmUgT0ZGTElORV9BU01fSklUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBMTElOVF9FWEVDVVRJ
T05fVFJBQ0lORworI2RlZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAxCisjZWxz
ZQorI2RlZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAwCisjZW5kaWYKKworI2Vu
ZGlmIC8vIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
IkFsbG9jYXRpb25TcGFjZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkV4
ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
KyNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJK
U0NlbGwuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRh
LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgor
I2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5o
IgorI2luY2x1ZGUgIkpTdHlwZUluZm8uaCIKKyNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0Lmgi
CisjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmln
LmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKKyNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIK
KyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVk
ZSAiU3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKyNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVmaW5lIE9G
RkxJTkVfQVNNX09GRlNFVE9GKGNsYXp6LCBmaWVsZCkgT0JKRUNUX09GRlNFVE9GKGNsYXp6LCBm
aWVsZCkKKworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQqIGR1bW15KCk7Cit9OworCitjb25zdCB1bnNpZ25lZCogTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpCit7CisjaW5jbHVkZSAiTExJbnREZXNpcmVkT2Zmc2V0
cy5oIgorICAgIHJldHVybiBleHRyYWN0b3JUYWJsZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CisKK2ludCBtYWluKGludCwgY2hhcioqKQoreworICAgIC8vIE91dCBvZiBhbiBhYnVuZGFuY2Ug
b2YgY2F1dGlvbiwgbWFrZSBzdXJlIHRoYXQgTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgp
IGlzIGxpdmUsCisgICAgLy8gYW5kIHRoZSBleHRyYWN0b3JUYWJsZSBpcyBsaXZlLCB0b28uCisg
ICAgcHJpbnRmKCIlcFxuIiwgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkpOwor
ICAgIHJldHVybiAwOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
VGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRUaHVua3MuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKKworI2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgi
CisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIu
aCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3N0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCB2b2lkICgqdGFyZ2V0KSgpKQoreworICAgIEpTSW50ZXJmYWNlSklUIGppdDsKKyAg
ICAKKyAgICAvLyBGSVhNRTogdGhlcmUncyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gaXQg
b24gWDg2LCBidXQgSSdtIG5vdCBzdXJlIEkgY2FyZS4KKyAgICBqaXQubW92ZShKU0ludGVyZmFj
ZUpJVDo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdldCkpLCBKU0ludGVy
ZmFjZUpJVDo6cmVnVDApOworICAgIGppdC5qdW1wKEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7Cisg
ICAgCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwgJmppdCwgR0xPQkFM
X1RIVU5LX0lEKTsKKyAgICByZXR1cm4gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7Cit9CisK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9y
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpOwor
fQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5r
R2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxB
cml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAg
IHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5j
dGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERh
dGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spOworfQorCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxE
YXRhLCBsbGludF9ldmFsX3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHBy
b2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAg
ICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfcHJvZ3Jh
bV9wcm9sb2d1ZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgTExJbnRUaHVua3NfaAorI2RlZmluZSBMTEludFRodW5rc19oCisKKyNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEpTR2xvYmFsRGF0YTsKKworbmFtZXNwYWNlIExMSW50IHsKKworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2Vu
ZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9y
Q2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihK
U0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlU
aHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxM
SW50CisKKyNlbmRpZiAvLyBMTEludFRodW5rc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzNzYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExLCAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKworIyBDcmFzaCBjb3Vyc2Ugb24gdGhlIGxhbmd1YWdlIHRoYXQg
dGhpcyBpcyB3cml0dGVuIGluICh3aGljaCBJIGp1c3QgY2FsbAorIyAiYXNzZW1ibHkiIGV2ZW4g
dGhvdWdoIGl0J3MgbW9yZSB0aGFuIHRoYXQpOgorIworIyAtIE1vc3RseSBnYXMtc3R5bGUgb3Bl
cmFuZCBvcmRlcmluZy4gVGhlIGxhc3Qgb3BlcmFuZCB0ZW5kcyB0byBiZSB0aGUKKyMgICBkZXN0
aW5hdGlvbi4gU28gImEgOj0gYiIgaXMgd3JpdHRlbiBhcyAibW92IGIsIGEiLiBCdXQgdW5saWtl
IGdhcywKKyMgICBjb21wYXJpc29ucyBhcmUgaW4tb3JkZXIsIHNvICJpZiAoYSA8IGIpIiBpcyB3
cml0dGVuIGFzCisjICAgImJpbHQgYSwgYiwgLi4uIi4KKyMKKyMgLSAiYiIgPSBieXRlLCAiaCIg
PSAxNi1iaXQgd29yZCwgImkiID0gMzItYml0IHdvcmQsICJwIiA9IHBvaW50ZXIuCisjICAgQ3Vy
cmVudGx5IHRoaXMgaXMganVzdCAzMi1iaXQgc28gImkiIGFuZCAicCIgYXJlIGludGVyY2hhbmdl
YWJsZQorIyAgIGV4Y2VwdCB3aGVuIGFuIG9wIHN1cHBvcnRzIG9uZSBidXQgbm90IHRoZSBvdGhl
ci4KKyMKKyMgLSBJbiBnZW5lcmFsLCB2YWxpZCBvcGVyYW5kcyBmb3IgbWFjcm8gaW52b2NhdGlv
bnMgYW5kIGluc3RydWN0aW9ucyBhcmUKKyMgICByZWdpc3RlcnMgKGVnICJ0MCIpLCBhZGRyZXNz
ZXMgKGVnICI0W3QwXSIpLCBiYXNlLWluZGV4IGFkZHJlc3NlcworIyAgIChlZyAiN1t0MCwgdDEs
IDJdIiksIGFic29sdXRlIGFkZHJlc3NlcyAoZWcgIjB4YTAwMDAwMDBbXSIpLCBvciBsYWJlbHMK
KyMgICAoZWcgIl9mb28iIG9yICIuZm9vIikuIE1hY3JvIGludm9jYXRpb25zIGNhbiBhbHNvIHRh
a2UgYW5vbnltb3VzCisjICAgbWFjcm9zIGFzIG9wZXJhbmRzLiBJbnN0cnVjdGlvbnMgY2Fubm90
IHRha2UgYW5vbnltb3VzIG1hY3Jvcy4KKyMKKyMgLSBMYWJlbHMgbXVzdCBoYXZlIG5hbWVzIHRo
YXQgYmVnaW4gd2l0aCBlaXRoZXIgIl8iIG9yICIuIi4gIEEgIi4iIGxhYmVsCisjICAgaXMgbG9j
YWwgYW5kIGdldHMgcmVuYW1lZCBiZWZvcmUgY29kZSBnZW4gdG8gbWluaW1pemUgbmFtZXNwYWNl
CisjICAgcG9sbHV0aW9uLiBBICJfIiBsYWJlbCBpcyBhbiBleHRlcm4gc3ltYm9sIChpLmUuICIu
Z2xvYmwiKS4gVGhlICJfIgorIyAgIG1heSBvciBtYXkgbm90IGJlIHJlbW92ZWQgZHVyaW5nIGNv
ZGUgZ2VuIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBhc20KKyMgICBjb252ZW50aW9ucyBmb3Ig
QyBuYW1lIG1hbmdsaW5nIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0gbWFuZGF0ZSBhICJfIgorIyAg
IHByZWZpeC4KKyMKKyMgLSBBICJtYWNybyIgaXMgYSBsYW1iZGEgZXhwcmVzc2lvbiwgd2hpY2gg
bWF5IGJlIGVpdGhlciBhbm9ueW1vdXMgb3IKKyMgICBuYW1lZC4gQnV0IHRoaXMgaGFzIGNhdmVh
dHMuICJtYWNybyIgY2FuIHRha2UgemVybyBvciBtb3JlIGFyZ3VtZW50cywKKyMgICB3aGljaCBt
YXkgYmUgbWFjcm9zIG9yIGFueSB2YWxpZCBvcGVyYW5kcywgYnV0IGl0IGNhbiBvbmx5IHJldHVy
bgorIyAgIGNvZGUuIEJ1dCB5b3UgY2FuIGRvIFR1cmluZy1jb21wbGV0ZSB0aGluZ3MgdmlhIGNv
bnRpbnVhdGlvbiBwYXNzaW5nCisjICAgc3R5bGU6ICJtYWNybyBmb28gKGEsIGIpIGIoYSkgZW5k
IGZvbyhmb28sIGZvbykiLiBBY3R1YWxseSwgZG9uJ3QgZG8KKyMgICB0aGF0LCBzaW5jZSB5b3Un
bGwganVzdCBjcmFzaCB0aGUgYXNzZW1ibGVyLgorIworIyAtIEFuICJpZiIgaXMgYSBjb25kaXRp
b25hbCBvbiBzZXR0aW5ncy4gQW55IGlkZW50aWZpZXIgc3VwcGxpZWQgaW4gdGhlCisjICAgcHJl
ZGljYXRlIG9mIGFuICJpZiIgaXMgYXNzdW1lZCB0byBiZSBhICNkZWZpbmUgdGhhdCBpcyBhdmFp
bGFibGUKKyMgICBkdXJpbmcgY29kZSBnZW4uIFNvIHlvdSBjYW4ndCB1c2UgImlmIiBmb3IgY29t
cHV0YXRpb24gaW4gYSBtYWNybywgYnV0CisjICAgeW91IGNhbiB1c2UgaXQgdG8gc2VsZWN0IGRp
ZmZlcmVudCBwaWVjZXMgb2YgY29kZSBmb3IgZGlmZmVyZW50CisjICAgcGxhdGZvcm1zLgorIwor
IyAtIEFyZ3VtZW50cyB0byBtYWNyb3MgZm9sbG93IGxleGljYWwgc2NvcGluZyByYXRoZXIgdGhh
biBkeW5hbWljIHNjb3BpbmcuCisjICAgQ29uc3QncyBhbHNvIGZvbGxvdyBsZXhpY2FsIHNjb3Bp
bmcgYW5kIG1heSBvdmVycmlkZSAoaGlkZSkgYXJndW1lbnRzCisjICAgb3Igb3RoZXIgY29uc3Rz
LiBBbGwgdmFyaWFibGVzIChhcmd1bWVudHMgYW5kIGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisj
ICAgdG8gb3BlcmFuZHMuIEFkZGl0aW9uYWxseSwgYXJndW1lbnRzIChidXQgbm90IGNvbnN0YW50
cykgY2FuIGJlIGJvdW5kCisjICAgdG8gbWFjcm9zLgorCisKKyMgVGhlc2UgZGVjbGFyYXRpb25z
IG11c3QgbWF0Y2ggaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmguCitjb25zdCBDYWxsRnJhbWVI
ZWFkZXJTaXplID0gNDgKK2NvbnN0IEFyZ3VtZW50Q291bnQgPSAtNDgKK2NvbnN0IENhbGxlckZy
YW1lID0gLTQwCitjb25zdCBDYWxsZWUgPSAtMzIKK2NvbnN0IFNjb3BlQ2hhaW4gPSAtMjQKK2Nv
bnN0IFJldHVyblBDID0gLTE2Citjb25zdCBDb2RlQmxvY2sgPSAtOAorCitjb25zdCBUaGlzQXJn
dW1lbnRPZmZzZXQgPSAtQ2FsbEZyYW1lSGVhZGVyU2l6ZSAtIDgKKworIyBEZWNsYXJlIHNvbWUg
YWxpYXNlcyBmb3IgdGhlIHJlZ2lzdGVycyB3ZSB3aWxsIHVzZS4KK2NvbnN0IFBDID0gdDQKKwor
IyBPZmZzZXRzIG5lZWRlZCBmb3IgcmVhc29uaW5nIGFib3V0IHZhbHVlIHJlcHJlc2VudGF0aW9u
LgoraWYgQklHX0VORElBTgorICAgIGNvbnN0IFRhZ09mZnNldCA9IDAKKyAgICBjb25zdCBQYXls
b2FkT2Zmc2V0ID0gNAorZWxzZQorICAgIGNvbnN0IFRhZ09mZnNldCA9IDQKKyAgICBjb25zdCBQ
YXlsb2FkT2Zmc2V0ID0gMAorZW5kCisKKyMgVmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRz
LgorY29uc3QgSW50MzJUYWcgPSAtMQorY29uc3QgQm9vbGVhblRhZyA9IC0yCitjb25zdCBOdWxs
VGFnID0gLTMKK2NvbnN0IFVuZGVmaW5lZFRhZyA9IC00Citjb25zdCBDZWxsVGFnID0gLTUKK2Nv
bnN0IEVtcHR5VmFsdWVUYWcgPSAtNgorY29uc3QgRGVsZXRlZFZhbHVlVGFnID0gLTcKK2NvbnN0
IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRhZworCisjIFR5cGUgY29uc3RhbnRzLgorY29uc3Qg
U3RyaW5nVHlwZSA9IDUKK2NvbnN0IE9iamVjdFR5cGUgPSAxMAorCisjIFR5cGUgZmxhZ3MgY29u
c3RhbnRzLgorY29uc3QgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDEKK2NvbnN0IEltcGxlbWVu
dHNIYXNJbnN0YW5jZSA9IDIKK2NvbnN0IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSA4
CisKKyMgSGVhcCBhbGxvY2F0aW9uIGNvbnN0YW50cy4KK2NvbnN0IEpTRmluYWxPYmplY3RTaXpl
Q2xhc3NJbmRleCA9IDMKKworIyBCeXRlY29kZSBvcGVyYW5kIGNvbnN0YW50cy4KK2NvbnN0IEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMAorCisjIENvZGUgdHlwZSBjb25z
dGFudHMuCitjb25zdCBHbG9iYWxDb2RlID0gMAorY29uc3QgRXZhbENvZGUgPSAxCitjb25zdCBG
dW5jdGlvbkNvZGUgPSAyCisKKyMgVGhlIGludGVycHJldGVyIHN0ZWFscyB0aGUgdGFnIHdvcmQg
b2YgdGhlIGFyZ3VtZW50IGNvdW50LgorY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291
bnQgKyBUYWdPZmZzZXQKKworIyBUaGlzIG11c3QgbWF0Y2ggd3RmL1ZlY3Rvci5oLgorY29uc3Qg
VmVjdG9yU2l6ZU9mZnNldCA9IDAKK2NvbnN0IFZlY3RvckJ1ZmZlck9mZnNldCA9IDQKKworIyBT
dHJpbmcgZmxhZ3MuCitjb25zdCBIYXNoRmxhZ3M4Qml0QnVmZmVyID0gNjQKKworIyBVdGlsaXRp
ZXMKK21hY3JvIGNyYXNoKCkKKyAgICBzdG9yZWkgMCwgMHhiYmFkYmVlZltdCisgICAgbW92ZSAw
LCB0MAorICAgIGNhbGwgdDAKK2VuZAorCittYWNybyBhc3NlcnQoYXNzZXJ0aW9uKQorICAgIGlm
IEFTU0VSVF9FTkFCTEVECisgICAgICAgIGFzc2VydGlvbigub2spCisgICAgICAgIGNyYXNoKCkK
KyAgICAub2s6CisgICAgZW5kCitlbmQKKworbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0
ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBs
ciwgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2lmIFg4NgorICAgICAgICBwb3AgZGVzdGlu
YXRpb25SZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCitt
YWNybyByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihzb3VyY2VSZWdpc3RlcikKKyAg
ICBpZiBBUk12NworICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgorICAgIGVsc2lmIFg4
NgorICAgICAgICBwdXNoIHNvdXJjZVJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgor
ICAgIGVuZAorZW5kCisKK21hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCisgICAgYWRkcCBhZHZhbmNl
ICogNCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoV2l0aE9m
ZnNldChwY09mZnNldCkKKyAgICBsc2hpZnRpIDIsIHBjT2Zmc2V0CisgICAgYWRkcCBwY09mZnNl
dCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0
KQorICAgIGxvYWRpIHBjT2Zmc2V0LCB0MAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0
MCkKK2VuZAorCittYWNybyBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAgbG9hZGkgQXJndW1lbnRD
b3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gY0Nh
bGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgYXJn
MSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tl
IGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisgICAgZWxzZQorICAgICAgICBlcnJvcgor
ICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCisjIFRoaXMgYmFyZWx5IHdvcmtzLiBh
cmczIGFuZCBhcmc0IHNob3VsZCBwcm9iYWJseSBiZSBpbW1lZGlhdGVzLgorbWFjcm8gY0NhbGw0
KGZ1bmN0aW9uLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KQorICAgIGlmIEFSTXY3CisgICAgICAg
IG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgICAgICBtb3ZlIGFyZzMs
IHQyCisgICAgICAgIG1vdmUgYXJnNCwgdDMKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBh
cmcxLCAwCisgICAgICAgIHBva2UgYXJnMiwgMQorICAgICAgICBwb2tlIGFyZzMsIDIKKyAgICAg
ICAgcG9rZSBhcmc0LCAzCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorICAgIGNh
bGwgZnVuY3Rpb24KK2VuZAorCittYWNybyBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBjQ2FsbDIo
aGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQK
KworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgYW4gb3BlcmFu
ZCBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtLgorbWFjcm8gdHJhY2VPcGVyYW5kKGZyb21XaGVy
ZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX29wZXJhbmQsIGNmciwgUEMsIGZy
b21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5k
CisKKyMgRGVidWdnaW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBsaWtlIHRvIHByaW50IHRoZSB2YWx1
ZSBvZiBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbgorIyBzdHJlYW0uCittYWNybyB0cmFj
ZVZhbHVlKGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX3ZhbHVl
LCBjZnIsIFBDLCBmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3Zl
IHQxLCBjZnIKK2VuZAorCittYWNybyB0cmFjZUV4ZWN1dGlvbigpCisgICAgaWYgRVhFQ1VUSU9O
X1RSQUNJTkcKKyAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfdHJhY2UpCisgICAgZW5kCitlbmQK
KworIyBDYWxsIGEgaGVscGVyIGZvciBjYWxsIG9wY29kZXMuCittYWNybyBjYWxsQ2FsbEhlbHBl
cihhZHZhbmNlLCBoZWxwZXIsIGFjdGlvbikKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQywgdDAK
KyAgICBzdG9yZXAgdDAsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIGNDYWxs
MihoZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYWN0aW9uKHQwKQorZW5k
CisKK21hY3JvIHNsb3dQYXRoRm9yQ2FsbChhZHZhbmNlLCBoZWxwZXIpCisgICAgY2FsbENhbGxI
ZWxwZXIoCisgICAgICAgIGFkdmFuY2UsCisgICAgICAgIGhlbHBlciwKKyAgICAgICAgbWFjcm8g
KGNhbGxlZSkKKyAgICAgICAgICAgIGNhbGwgY2FsbGVlCisgICAgICAgICAgICBkaXNwYXRjaEFm
dGVyQ2FsbCgpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklUKGlu
Y3JlbWVudCwgYWN0aW9uKQorICAgIGlmIEpJVF9FTkFCTEVECisgICAgICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCB0MAorICAgICAgICBiYWRkaXMgaW5jcmVtZW50LCBDb2RlQmxvY2s6Om1fbGxp
bnRFeGVjdXRlQ291bnRlclt0MF0sIC5jb250aW51ZQorICAgICAgICBhY3Rpb24oKQorICAgIC5j
b250aW51ZToKKyAgICBlbmQKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgp
CisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMSwKKyAgICAgICAgbWFjcm8gKCkKKyAg
ICAgICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAg
ICAgICAgICBjQ2FsbDIoX2xsaW50X2xvb3Bfb3NyLCBjZnIsIFBDKQorICAgICAgICAgICAgbW92
ZSB0MSwgY2ZyCisgICAgICAgICAgICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAgICAgICAgam1w
IHQwCisgICAgICAgIC5yZWNvdmVyOgorICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudCAr
IFRhZ09mZnNldFtjZnJdLCBQQworICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0
Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxMCwK
KyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlcGxhY2Up
CisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBhc3NlcnROb3RDb25zdGFudChpbmRleCkKKyAg
ICBhc3NlcnQobWFjcm8gKG9rKSBiaWx0IGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCwgb2sgZW5kKQorZW5kCisKKyMgSW5kZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZm
ZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QKKyMgY2hhbmdlZC4KK21hY3JvIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRb
Y2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwg
OF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVy
cyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMg
YSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVx
dWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxv
YWRwIFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRwIFBheWxvYWRP
ZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4
IGFuZCBwYXlsb2FkIG1heSBiZSB0aGUgc2FtZSByZWdpc3Rlci4gSW5kZXggbWF5IGJlIGNsb2Ji
ZXJlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxv
YWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0
YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29u
c3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhZworICAgIGxvYWRwIENvZGVCbG9j
azo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFt0YWddLCB0YWcKKyAg
ICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEg
dmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8
IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkg
PDwgMy4KKyAgICBsc2hpZnRpIDMsIGluZGV4CisgICAgYWRkcCBpbmRleCwgdGFnCisgICAgbG9h
ZHAgUGF5bG9hZE9mZnNldFt0YWddLCBwYXlsb2FkCisgICAgbG9hZHAgVGFnT2Zmc2V0W3RhZ10s
IHRhZworLmRvbmU6CitlbmQKKworbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRU
YWdDdXN0b20oaW5kZXgsIHRhZ0NoZWNrLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIHRhZ0NoZWNrKFRhZ09mZnNl
dFtjZnIsIGluZGV4LCA4XSkKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhd
LCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMg
KyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEg
Yml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVh
bCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICB0YWdD
aGVjayhUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdKQorICAgIGxvYWRwIFBheWxvYWRPZmZz
ZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4IGFu
ZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90IG11dGF0
ZWQuIFVzZQorIyB0aGlzIGlmIHlvdSBrbm93IHdoYXQgdGhlIHRhZyBvZiB0aGUgdmFyaWFibGUg
c2hvdWxkIGJlLiBEb2luZyB0aGUgdGFnCisjIHRlc3QgYXMgcGFydCBvZiBsb2FkaW5nIHRoZSB2
YXJpYWJsZSByZWR1Y2VzIHJlZ2lzdGVyIHVzZSwgYnV0IG1heSBub3QKKyMgYmUgZmFzdGVyIHRo
YW4gZG9pbmcgbG9hZENvbnN0YW50T3JWYXJpYWJsZSBmb2xsb3dlZCBieSBhIGJyYW5jaCBvbiB0
aGUKKyMgdGFnLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4
cGVjdGVkVGFnLCBwYXlsb2FkLCBzbG93KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkVGFnQ3VzdG9tKAorICAgICAgICBpbmRleCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykg
YmluZXEgYWN0dWFsVGFnLCBleHBlY3RlZFRhZywgc2xvdyBlbmQsCisgICAgICAgIHBheWxvYWQp
CitlbmQKKworbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQoaW5k
ZXgsIHBheWxvYWQpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20o
CisgICAgICAgIGluZGV4LAorICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBlbmQsCisgICAgICAg
IHBheWxvYWQpCitlbmQKKworbWFjcm8gd3JpdGVCYXJyaWVyKHRhZywgcGF5bG9hZCkKKyAgICAj
IE5vdGhpbmcgdG8gZG8sIHNpbmNlIHdlIGRvbid0IGhhdmUgYSBnZW5lcmF0aW9uYWwgb3IgaW5j
cmVtZW50YWwgY29sbGVjdG9yLgorZW5kCisKK21hY3JvIHZhbHVlUHJvZmlsZSh0YWcsIHBheWxv
YWQsIHByb2ZpbGUpCisgICAgc3RvcmVpIHRhZywgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBU
YWdPZmZzZXRbcHJvZmlsZV0KKyAgICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1
Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3Byb2ZpbGVdCitlbmQKKworCisjIEluZGljYXRlIHRoZSBi
ZWdpbm5pbmcgb2YgTExJbnQuCitfbGxpbnRfYmVnaW46CisgICAgY3Jhc2goKQorCisKKyMgRW50
cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIKKworbWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29k
ZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJn
ZXRSZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdp
c3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2Nv
ZGVCbG9ja0ZvckNhbGxbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21h
Y3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQor
ICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rp
b246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9h
ZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRSZWdp
c3Rlcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tH
ZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhcmdldFJl
Z2lzdGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0
ZXIpCisgICAgc3RvcmVwIHNvdXJjZVJlZ2lzdGVyLCBDb2RlQmxvY2tbY2ZyXQorZW5kCisKK21h
Y3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgICMgTm90
aGluZyB0byBkbyEKK2VuZAorCisjIERvIHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8gZXhl
Y3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENvZGVCbG9jayoKKyMgaW4gdDEu
IE1heSBhbHNvIHRyaWdnZXIgcHJvbG9ndWUgZW50cnkgT1NSLgorbWFjcm8gcHJvbG9ndWUoY29k
ZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zckhlbHBlciwgdHJhY2VIZWxwZXIpCisg
ICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIAorICAgICMgU2V0IHVw
IHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgorICAgIHN0b3JlcCB0
MiwgUmV0dXJuUENbY2ZyXQorICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAgICAgIGNhbGxI
ZWxwZXIodHJhY2VIZWxwZXIpCisgICAgZW5kCisgICAgY29kZUJsb2NrR2V0dGVyKHQxKQorICAg
IGlmIEpJVF9FTkFCTEVECisgICAgICAgIGJhZGRpcyA1LCBDb2RlQmxvY2s6Om1fbGxpbnRFeGVj
dXRlQ291bnRlclt0MV0sIC5jb250aW51ZQorICAgICAgICBjQ2FsbDIob3NySGVscGVyLCBjZnIs
IFBDKQorICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgYnRweiB0MCwgLnJlY292ZXIKKyAg
ICAgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICAgICAgcmVzdG9yZVJldHVybkFkZHJl
c3NCZWZvcmVSZXR1cm4odDIpCisgICAgICAgIGptcCB0MAorICAgIC5yZWNvdmVyOgorICAgICAg
ICBjb2RlQmxvY2tHZXR0ZXIodDEpCisgICAgLmNvbnRpbnVlOgorICAgIGVuZAorICAgIGNvZGVC
bG9ja1NldHRlcih0MSkKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgUEMuCisgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpJbnN0
cnVjdGlvbnM6Om1faW5zdHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKK2Vu
ZAorCisjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJv
bG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgorIyBNdXN0IGNhbGwgZGlzcGF0Y2goMCkgYWZ0ZXIgY2Fs
bGluZyB0aGlzLgorbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbihwcm9maWxlQXJnU2tpcCkK
KyAgICAjIFByb2ZpbGUgdGhlIGFyZ3VtZW50cy4gVW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBubyBj
aG9pY2UgYnV0IHRvIGRvIHRoaXMuIFRoaXMKKyAgICAjIGNvZGUgaXMgcHJldHR5IGhvcnJlbmRv
dXMgYmVjYXVzZSBvZiB0aGUgZGlmZmVyZW5jZSBpbiBvcmRlcmluZyBiZXR3ZWVuCisgICAgIyBh
cmd1bWVudHMgYW5kIHZhbHVlIHByb2ZpbGVzLCB0aGUgZGVzaXJlIHRvIGhhdmUgYSBzaW1wbGUg
bG9vcC1kb3duLXRvLXplcm8KKyAgICAjIGxvb3AsIGFuZCB0aGUgZGVzaXJlIHRvIHVzZSBvbmx5
IHRocmVlIHJlZ2lzdGVycyBzbyBhcyB0byBwcmVzZXJ2ZSB0aGUgUEMgYW5kCisgICAgIyB0aGUg
Y29kZSBibG9jay4gSXQgaXMgbGlrZWx5IHRoYXQgdGhpcyBjb2RlIHNob3VsZCBiZSByZXdyaXR0
ZW4gaW4gYSBtb3JlCisgICAgIyBvcHRpbWFsIHdheSBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGhh
dmUgbW9yZSB0aGFuIGZpdmUgcmVnaXN0ZXJzIGF2YWlsYWJsZQorICAgICMgZm9yIGFyYml0cmFy
eSB1c2UgaW4gdGhlIGludGVycHJldGVyLgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1QYXJh
bWV0ZXJzW3QxXSwgdDAKKyAgICBhZGRpIC1wcm9maWxlQXJnU2tpcCwgdDAgIyBVc2UgYWRkaSBi
ZWNhdXNlIHRoYXQncyB3aGF0IGhhcyB0aGUgcGVlcGhvbGUKKyAgICBhc3NlcnQobWFjcm8gKG9r
KSBiaWd0ZXEgdDAsIDAsIG9rIGVuZCkKKyAgICBidGl6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9u
ZQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMgKyBWZWN0b3JC
dWZmZXJPZmZzZXRbdDFdLCB0MworICAgIG11bGkgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDAsIHQy
ICMgQWFhYWFoaGhoISBOZWVkIHN0cmVuZ3RoIHJlZHVjdGlvbiEKKyAgICBuZWdpIHQwCisgICAg
bHNoaWZ0aSAzLCB0MAorICAgIGFkZHAgdDIsIHQzCisuYXJndW1lbnRQcm9maWxlTG9vcDoKKyAg
ICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXQgKyA4IC0gcHJvZmlsZUFyZ1Nr
aXAgKiA4W2NmciwgdDBdLCB0MgorICAgIHN1YnAgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDMKKyAg
ICBzdG9yZWkgdDIsIHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVl
UHJvZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIFRoaXNBcmd1bWVu
dE9mZnNldCArIFBheWxvYWRPZmZzZXQgKyA4IC0gcHJvZmlsZUFyZ1NraXAgKiA4W2NmciwgdDBd
LCB0MgorICAgIHN0b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBzaXplb2YgVmFsdWVQcm9maWxl
ICsgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGJhZGRp
bnogOCwgdDAsIC5hcmd1bWVudFByb2ZpbGVMb29wCisuYXJndW1lbnRQcm9maWxlRG9uZToKKyAg
ICAKKyAgICAjIENoZWNrIHN0YWNrIGhlaWdodC4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVt
Q2FsbGVlUmVnaXN0ZXJzW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0
YVt0MV0sIHQyCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjppbnRlcnByZXRlclt0Ml0sIHQyICAg
IyBGSVhNRTogQ2FuIGdldCB0byB0aGUgUmVnaXN0ZXJGaWxlIGZyb20gdGhlIEpJVFN0YWNrRnJh
bWUKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MCwgY2ZyLCB0MAorICAgIGJwYWVxIElu
dGVycHJldGVyOjptX3JlZ2lzdGVyRmlsZSArIFJlZ2lzdGVyRmlsZTo6bV9lbmRbdDJdLCB0MCwg
LnN0YWNrSGVpZ2h0T0sKKworICAgICMgU3RhY2sgaGVpZ2h0IGNoZWNrIGZhaWxlZCAtIG5lZWQg
dG8gY2FsbCBhIGhlbHBlci4KKyAgICBjYWxsSGVscGVyKF9sbGludF9yZWdpc3Rlcl9maWxlX2No
ZWNrKQorLnN0YWNrSGVpZ2h0T0s6CitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlz
IGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KK21hY3JvIGZ1
bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIGhlbHBlcikKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGJpYWVxIHQwLCBDb2RlQmxvY2s6Om1f
bnVtUGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJlbAorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMp
ICAgIyBUaGlzIGhlbHBlciBoYXMgYSBzaW1wbGUgcHJvdG9jb2w6IHQwID0gMCA9PiBubyBlcnJv
ciwgdDAgIT0gMCA9PiBlcnJvcgorICAgIG1vdmUgdDEsIGNmcgorICAgIGJ0aXogdDAsIC5jb250
aW51ZQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxv
YWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0ds
b2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorLmNvbnRpbnVlOgorICAgICMg
UmVsb2FkIENvZGVCbG9jayBhbmQgUEMsIHNpbmNlIHRoZSBoZWxwZXIgY2xvYmJlcmVkIGl0Lgor
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0
cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2lu
c3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCisgICAgam1wIGRvbmVMYWJl
bAorZW5kCisKK19sbGludF9wcm9ncmFtX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0
aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2Vu
dHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xs
aW50X2V2YWxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0
ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRf
dHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0
dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY2FsbCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQorLmZ1bmN0
aW9uRm9yQ2FsbEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKKyAgICBkaXNw
YXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToK
KyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rp
b25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCisuZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCisgICAg
ZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNr
OgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25D
b2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlD
aGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCisgICAgZnVuY3Rpb25Bcml0
eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X2hlbHBlcl9jYWxsX2FyaXR5Q2hl
Y2spCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2s6CisgICAg
cHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKKyAgICBmdW5j
dGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9sbGludF9oZWxwZXJf
Y29uc3RydWN0X2FyaXR5Q2hlY2spCisKKyMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25zCisK
K19sbGludF9vcF9lbnRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQyCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVZhcnNbdDJdLCB0MgorICAg
IGJ0aXogdDIsIC5vcEVudGVyRG9uZQorICAgIG1vdmUgVW5kZWZpbmVkVGFnLCB0MAorICAgIG1v
dmUgMCwgdDEKKy5vcEVudGVyTG9vcDoKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIHQwLCBU
YWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MiwgOF0KKyAgICBidGlueiB0MiwgLm9wRW50ZXJMb29wCisub3BFbnRlckRvbmU6CisgICAgZGlz
cGF0Y2goMSkKKworCitfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pCisub3BDcmVhdGVBY3RpdmF0aW9u
RG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbml0X2xhenlfcmVnOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgRW1wdHlW
YWx1ZVRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jcmVhdGVfYXJn
dW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFyZ3Vt
ZW50c0RvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykK
Ky5vcENyZWF0ZUFyZ3VtZW50c0RvbmU6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBhbGxv
Y2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kZXgsIGNsYXNzSW5mb09mZnNldCwgc3RydWN0
dXJlLCByZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2xvd0Nhc2UpCisgICAgY29uc3Qgb2Zm
c2V0T2ZNeVNpemVDbGFzcyA9IEpTR2xvYmFsRGF0YTo6aGVhcCArIEhlYXA6Om1fb2JqZWN0U3Bh
Y2UgKyBBbGxvY2F0aW9uU3BhY2U6Om1fbWFya2VkU3BhY2UgKyBNYXJrZWRTcGFjZTo6bV9wcmVj
aXNlU2l6ZUNsYXNzZXMgKyBzaXplQ2xhc3NJbmRleCAqIHNpemVvZiBNYXJrZWRTcGFjZTo6U2l6
ZUNsYXNzCisgICAgCisgICAgIyBGSVhNRTogd2UgY2FuIGdldCB0aGUgZ2xvYmFsIGRhdGEgaW4g
b25lIGxvYWQgZnJvbSB0aGUgc3RhY2suCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0
Y2gxCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbc2NyYXRjaDFdLCBzY3JhdGNo
MQorICAgIAorICAgICMgR2V0IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LiAgICAKKyAg
ICBsb2FkcCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmly
c3RGcmVlQ2VsbFtzY3JhdGNoMV0sIHJlc3VsdAorICAgIGJ0cHogcmVzdWx0LCBzbG93Q2FzZQor
ICAgIAorICAgICMgUmVtb3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LgorICAgIGxv
YWRwIFtyZXN1bHRdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNoMiwgb2Zmc2V0T2ZNeVNp
emVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFd
CisKKyAgICAjIEluaXRpYWxpemUgdGhlIG9iamVjdC4KKyAgICBsb2FkcCBjbGFzc0luZm9PZmZz
ZXRbc2NyYXRjaDFdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3VsdF0KKyAg
ICBzdG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0KKyAgICBzdG9y
ZXAgMCwgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0XQorICAgIGFkZHAgc2l6ZW9mIEpT
T2JqZWN0LCByZXN1bHQsIHNjcmF0Y2gxCisgICAgc3RvcmVwIHNjcmF0Y2gxLCBKU09iamVjdDo6
bV9wcm9wZXJ0eVN0b3JhZ2VbcmVzdWx0XQorZW5kCisKK19sbGludF9vcF9jcmVhdGVfdGhpczoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgYXNzZXJ0Tm90
Q29uc3RhbnQodDApCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAu
b3BDcmVhdGVUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYmJiIFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBPYmplY3RUeXBlLCAub3BDcmVh
dGVUaGlzU2xvdworICAgIGxvYWRwIEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3QwXSwgdDIKKyAg
ICBidHB6IHQyLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChK
U0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENs
YXNzSW5mbywgdDIsIHQwLCB0MSwgdDMsIC5vcENyZWF0ZVRoaXNTbG93KQorICAgIGxvYWRpIDRb
UENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBz
dG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisu
b3BDcmVhdGVUaGlzU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX3Ro
aXMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZ2V0X2NhbGxlZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZHAgUGF5bG9hZE9mZnNl
dCArIENhbGxlZVtjZnJdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNw
YXRjaCgyKQorCisKK19sbGludF9vcF9jb252ZXJ0X3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
Q2VsbFRhZywgLm9wQ29udmVydFRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBi
YmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIE9iamVjdFR5
cGUsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGRpc3BhdGNoKDIpCisKKy5vcENvbnZlcnRUaGlz
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY29udmVydF90aGlzKQorICAgIGRp
c3BhdGNoKDIpCisKKworX2xsaW50X29wX25ld19vYmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5T2Jq
ZWN0U3RydWN0dXJlW3QwXSwgdDEKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9i
amVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8s
IHQxLCB0MCwgdDIsIHQzLCAub3BOZXdPYmplY3RTbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQor
ICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BOZXdPYmpl
Y3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfb2JqZWN0KQorICAgIGRp
c3BhdGNoKDIpCisKKworX2xsaW50X29wX25ld19hcnJheToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheSkKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9uZXdfYXJyYXlfYnVmZmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2FycmF5X2J1ZmZlcikKKyAgICBkaXNw
YXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfcmVnZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X3JlZ2V4cCkKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9tb3Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhb
UENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDEsIHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0
b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX25vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQw
CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDIs
IHQzKQorICAgIGJpbmVxIHQyLCBCb29sZWFuVGFnLCAub3BOb3RTbG93CisgICAgeG9yaSAxLCB0
MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wTm90U2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbm90KQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQy
CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMs
IHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmlu
ZXEgdDIsIHQzLCAub3BFcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BFcVNsb3cKKyAg
ICBiaWIgdDIsIExvd2VzdFRhZywgLm9wRXFTbG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAg
Y2llcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQy
LCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3Bh
dGNoKDQpCisKKy5vcEVxU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZXEpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0
Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxU
YWcsIC5vcEVxTnVsbEltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MQorICAgIHRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQorICAgIGptcCAub3BFcU51bGxOb3RJbW1l
ZGlhdGUKKy5vcEVxTnVsbEltbWVkaWF0ZToKKyAgICBjaWVxIHQxLCBOdWxsVGFnLCB0MgorICAg
IGNpZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKKyAgICBvcmkgdDIsIHQxCisub3BFcU51bGxOb3RJ
bW1lZGlhdGU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQor
ICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX25lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJb
UENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQor
ICAgIGJpbmVxIHQyLCB0MywgLm9wTmVxU2xvdworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcE5l
cVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wTmVxU2xvdworICAgIGxvYWRpIDRbUENd
LCB0MgorICAgIGNpbmVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zm
c2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgZGlzcGF0Y2goNCkKKworLm9wTmVxU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfbmVxKQorICAgIGRpc3BhdGNoKDQpCisgICAgCisKK19sbGludF9vcF9uZXFfbnVsbDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQ
Q10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisg
ICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcE5lcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsg
VHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQorICAgIGpt
cCAub3BOZXFOdWxsTm90SW1tZWRpYXRlCisub3BOZXFOdWxsSW1tZWRpYXRlOgorICAgIGNpbmVx
IHQxLCBOdWxsVGFnLCB0MgorICAgIGNpbmVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgYW5k
aSB0MiwgdDEKKy5vcE5lcU51bGxOb3RJbW1lZGlhdGU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcs
IFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gc3RyaWN0RXEoZXF1YWxpdHlPcGVy
YXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQw
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAuc2xvdworICAg
IGJpYiB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBDZWxsVGFnLCAubm90U3Ry
aW5nCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQzCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZv
ICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5ub3RTdHJpbmcKKyAgICBiYmVx
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDNdLCBTdHJpbmdUeXBl
LCAuc2xvdworLm5vdFN0cmluZzoKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBlcXVhbGl0eU9w
ZXJhdGlvbih0MCwgdDEsIHQwKQorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBk
aXNwYXRjaCg0KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRj
aCg0KQorZW5kCisKK19sbGludF9vcF9zdHJpY3RlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpZXEgbGVmdCwgcmlnaHQs
IHJlc3VsdCBlbmQsIF9sbGludF9oZWxwZXJfc3RyaWN0ZXEpCisKKworX2xsaW50X29wX25zdHJp
Y3RlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJp
Z2h0LCByZXN1bHQpIGNpbmVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVscGVy
X25zdHJpY3RlcSkKKworCitfbGxpbnRfb3BfbGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3MpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfbGVzc2VxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dyZWF0
ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9n
cmVhdGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dyZWF0ZXJlcToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dyZWF0ZXJlcSkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcmVfaW5jOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIEludDMyVGFnLCAub3BQcmVJbmNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDEKKyAgICBiYWRkaW8gMSwgdDEsIC5vcFByZUluY1Nsb3cKKyAgICBzdG9yZWkg
dDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVJ
bmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfaW5jKQorICAgIGRpc3Bh
dGNoKDIpCisKKworX2xsaW50X29wX3ByZV9kZWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJU
YWcsIC5vcFByZURlY1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MQorICAgIGJzdWJpbyAxLCB0MSwgLm9wUHJlRGVjU2xvdworICAgIHN0b3JlaSB0MSwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcFByZURlY1Nsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3ByZV9kZWMpCisgICAgZGlzcGF0Y2goMikKKwor
CitfbGxpbnRfb3BfcG9zdF9pbmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhb
UENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgSW50MzJUYWcsIC5vcFBvc3RJbmNTbG93CisgICAgYmllcSB0MCwgdDEsIC5vcFBvc3RJ
bmNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBtb3Zl
IHQyLCB0MworICAgIGJhZGRpbyAxLCB0MywgLm9wUG9zdEluY1Nsb3cKKyAgICBzdG9yZWkgSW50
MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQor
Lm9wUG9zdEluY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKworLm9wUG9zdEluY1Nsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfaW5jKQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX3Bvc3RfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIEludDMyVGFnLCAub3BQb3N0RGVjU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0RGVj
RG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0
MiwgdDMKKyAgICBic3ViaW8gMSwgdDMsIC5vcFBvc3REZWNTbG93CisgICAgc3RvcmVpIEludDMy
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5v
cFBvc3REZWNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3REZWNTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2RlYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF90b19qc251bWJlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MCwgdDIsIHQzKQorICAgIGJpZXEgdDIsIEludDMyVGFnLCAub3BUb0pzbnVtYmVySXNJbnQKKyAg
ICBiaWFlcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wVG9Kc251bWJlclNsb3cKKy5vcFRvSnNudW1i
ZXJJc0ludDoKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3Jl
aSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcFRv
SnNudW1iZXJTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19qc251bWJlcikK
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZWdhdGU6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDAsIHQxLCB0MikKKyAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5v
cE5lZ2F0ZVNyY05vdEludAorICAgIGJ0aXogdDIsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0ZVNsb3cK
KyAgICBuZWdpIHQyCisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0K
KyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgz
KQorLm9wTmVnYXRlU3JjTm90SW50OgorICAgIGJpYSB0MSwgTG93ZXN0VGFnLCAub3BOZWdhdGVT
bG93CisgICAgeG9yaSAweDgwMDAwMDAwLCB0MQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
ZGlzcGF0Y2goMykKKworLm9wTmVnYXRlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfbmVnYXRlKQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9y
ZShpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUsIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorICAg
IGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAs
IHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0
MywgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBpbnRlZ2Vy
T3BlcmF0aW9uQW5kU3RvcmUodDMsIHQxLCB0MCwgLnNsb3csIHQyKQorICAgIGRpc3BhdGNoKDUp
CisKKy5vcDFOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90IGFu
IGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGNvdWxkIGJlIGFueXRoaW5nLgorICAgIGJpYSB0Miwg
TG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MywgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91
YmxlCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDEsIGZ0MQorICAg
IGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDEs
IHQzLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBmaWky
ZCB0MCwgdDIsIGZ0MAorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQg
ZnQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3AyTm90SW50OgorICAgICMg
Rmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGlz
IGRlZmluaXRlbHkgbm90LgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGJpYSB0MywgTG93ZXN0
VGFnLCAuc2xvdworICAgIGNpMmQgdDAsIGZ0MAorICAgIGZpaTJkIHQxLCB0MywgZnQxCisgICAg
ZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQyLCA4XQor
ICAgIGRpc3BhdGNoKDUpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRp
c3BhdGNoKDUpCitlbmQKKworbWFjcm8gYmluYXJ5T3AoaW50ZWdlck9wZXJhdGlvbiwgZG91Ymxl
T3BlcmF0aW9uLCBoZWxwZXIpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFj
cm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBpbnRl
Z2VyT3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgc3RvcmVpIGludDMy
VGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwg
UGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIGRvdWJs
ZU9wZXJhdGlvbiwgaGVscGVyKQorZW5kCisKK19sbGludF9vcF9hZGQ6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cp
IGJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCkgYWRkZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYWRkKQorCisK
K19sbGludF9vcF9tdWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9t
U3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4
KQorICAgICAgICAgICAgY29uc3Qgc2NyYXRjaCA9IGludDMyVGFnICAgIyBXZSBrbm93IHRoYXQg
d2UgY2FuIHJldXNlIHRoZSBpbnQzMlRhZyByZWdpc3RlciBzaW5jZSBpdCBoYXMgYSBjb25zdGFu
dC4KKyAgICAgICAgICAgIG1vdmUgcmlnaHQsIHNjcmF0Y2gKKyAgICAgICAgICAgIGJtdWxpbyBs
ZWZ0LCBzY3JhdGNoLCBzbG93CisgICAgICAgICAgICBidGlueiBzY3JhdGNoLCAuZG9uZQorICAg
ICAgICAgICAgYmlsdCBsZWZ0LCAwLCAuc2xvdworICAgICAgICAgICAgYmlsdCByaWdodCwgMCwg
LnNsb3cKKyAgICAgICAgLmRvbmU6CisgICAgICAgICAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09m
ZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFBheWxvYWRP
ZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQpIG11bGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX211bCkK
KworCitfbGxpbnRfb3Bfc3ViOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBic3ViaW8gbGVmdCwgcmlnaHQsIHNs
b3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIHN1YmQgbGVmdCwgcmlnaHQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX3N1YikKKworCitfbGxpbnRfb3BfZGl2OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAo
aW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGNpMmQgbGVm
dCwgZnQwCisgICAgICAgICAgICBjaTJkIHJpZ2h0LCBmdDEKKyAgICAgICAgICAgIGRpdmQgZnQw
LCBmdDEKKyAgICAgICAgICAgIGJjZDJpIGZ0MSwgcmlnaHQsIC5ub3RJbnQKKyAgICAgICAgICAg
IHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBz
dG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIGpt
cCAuZG9uZQorICAgICAgICAubm90SW50OgorICAgICAgICAgICAgc3RvcmVkIGZ0MSwgW2Nmciwg
aW5kZXgsIDhdCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQsCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCkgZGl2ZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
ZGl2KQorCisKK19sbGludF9vcF9tb2Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9tb2QpCisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBiaXRP
cChvcGVyYXRpb24sIGhlbHBlciwgYWR2YW5jZSkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDMs
IEludDMyVGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBsb2Fk
aSA0W1BDXSwgdDIKKyAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xvdykKKyAgICBzdG9yZWkgdDMs
IFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIo
aGVscGVyKQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCitlbmQKKworX2xsaW50X29wX2xzaGlmdDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfbHNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF9yc2hpZnQ6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cp
IHJzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3JzaGlmdCwK
KyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfdXJzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAg
ICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93
CisgICAgICAgIGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl91cnNoaWZ0LAorICAgICAgICA0
KQorCisKK19sbGludF9vcF9iaXRhbmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9w
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdGFuZCwKKyAgICAgICAgNSkKKworCitfbGxpbnRf
b3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9iaXR4b3IsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG9yOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdG9y
LAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRub3Q6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcEJp
dG5vdFNsb3cKKyAgICBub3RpIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRj
aCgzKQorCisub3BCaXRub3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9iaXRu
b3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VT
bG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFz
SW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgZGlzcGF0Y2goMikKKworLm9w
Q2hlY2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NoZWNr
X2hhc19pbnN0YW5jZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbnN0YW5jZW9m
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIENoZWNrIHRoYXQgYmFzZVZhbCBpbXBsZW1l
bnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9yLgorICAgICMgRklYTUU6IFRoaXMg
c2hvdWxkIGJlIGRlcHJlY2F0ZWQuCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKHQxLCB0MCkKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgLm9wSW5z
dGFuY2VvZlNsb3cKKyAgICAKKyAgICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgorICAgIGxvYWRp
IDE2W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEluc3RhbmNlb2ZTbG93KQorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MCwgQ2VsbFRhZywgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQorICAgIAorICAgICMgUmVnaXN0ZXIg
c3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCisgICAgbW92ZSAxLCB0MAorLm9wSW5z
dGFuY2VvZkxvb3A6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCisgICAg
bG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDJdLCB0MgorICAg
IGJwZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQorICAgIGJ0aW56IHQyLCAub3BJbnN0YW5j
ZW9mTG9vcAorCisgICAgbW92ZSAwLCB0MAorLm9wSW5zdGFuY2VvZkRvbmU6CisgICAgc3RvcmVp
IEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEluc3RhbmNlb2ZTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbnN0YW5jZW9mKQorICAgIGRpc3BhdGNo
KDUpCisKKworX2xsaW50X29wX3R5cGVvZjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3R5cGVvZikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9pc191bmRlZmluZWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9pc191bmRlZmluZWQpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRf
b3BfaXNfYm9vbGVhbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2lzX2Jvb2xlYW4pCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNf
bnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfaXNfbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3N0cmluZzoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3N0
cmluZykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19vYmplY3Q6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19vYmplY3QpCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfZnVuY3Rpb246CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19mdW5jdGlvbikKKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX3Jlc29sdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9yZXNvbHZlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29sdmVf
c2tpcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3Jlc29sdmVfc2tpcCkKKyAgICBkaXNwYXRjaCg1KQorCisKK21hY3JvIHJlc29sdmVHbG9iYWwo
c2l6ZSwgc2xvdykKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10g
ICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIFByb3BlcnR5IGlkZW50
aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2suCisgICAgIyAxMltQQ10gIFN0cnVjdHVyZSBw
b2ludGVyLCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAgICAjIDE2
W1BDXSAgT2Zmc2V0IGluIGdsb2JhbCBvYmplY3QsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNv
ZGUgZ2VuZXJhdG9yLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MQorICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cKKyAgICBsb2FkaSAxNltQ
Q10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W3QwLCB0MSwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQyLCBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0KKyAgICBsb2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQwCisgICAgdmFsdWVQcm9maWxlKHQy
LCB0MywgdDApCitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICByZXNvbHZlR2xvYmFsKDYsIC5vcFJlc29sdmVHbG9iYWxTbG93KQorICAg
IGRpc3BhdGNoKDYpCisKKy5vcFJlc29sdmVHbG9iYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNwYXRjaCg2KQorCisKKyMgR2l2ZXMg
eW91IHRoZSBzY29wZSBpbiB0MCwgd2hpbGUgYWxsb3dpbmcgeW91IHRvIG9wdGlvbmFsbHkgcGVy
Zm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0aGUKKyMgc2NvcGVzIGFzIHRoZXkgYXJlIHRyYXZl
cnNlZC4gc2NvcGVDaGVjaygpIGlzIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSByZWdp
c3RlcgorIyBob2xkaW5nIHRoZSBzY29wZSwgYW5kIGEgcmVnaXN0ZXIgdGhhdCBjYW4gYmUgdXNl
ZCBmb3Igc2NyYXRjaC4gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QKKyMgdXNlIHQzLCBzbyB5b3Ug
Y2FuIGhvbGQgc3R1ZmYgaW4gdDMgaWYgbmVlZCBiZS4KK21hY3JvIGdldFNjb3BlKGRlQnJ1aWpp
bkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2FkcCBTY29wZUNoYWluICsgUGF5bG9h
ZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIKKyAg
ICAKKyAgICBidGl6IHQyLCAuZG9uZQorICAgIAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MQorICAgIGJpbmVxIENvZGVCbG9jazo6bV9jb2RlVHlwZVt0MV0sIEZ1bmN0aW9uQ29kZSwgLmxv
b3AKKyAgICBidGJ6IENvZGVCbG9jazo6bV9uZWVkc0Z1bGxTY29wZUNoYWluW3QxXSwgLmxvb3AK
KyAgICAKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEK
KworICAgICMgTmVlZCB0byBjb25kaXRpb25hbGx5IHNraXAgb3ZlciBvbmUgc2NvcGUuCisgICAg
YmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2YXRpb24K
KyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0
MF0sIHQwCisubm9BY3RpdmF0aW9uOgorICAgIHN1YmkgMSwgdDIKKyAgICAKKyAgICBidGl6IHQy
LCAuZG9uZQorLmxvb3A6CisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVD
aGFpbk5vZGU6Om5leHRbdDBdLCB0MAorICAgIHN1YmkgMSwgdDIKKyAgICBidGlueiB0MiwgLmxv
b3AKKworLmRvbmU6CitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFb
c3BdLCB0MworICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0aXZhdGlvblN0cnVjdHVyZVt0M10s
IHQzCisgICAgZ2V0U2NvcGUoCisgICAgICAgIDIwW1BDXSwKKyAgICAgICAgbWFjcm8gKHNjb3Bl
LCBzY3JhdGNoKQorICAgICAgICAgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFtzY29w
ZV0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbc2NyYXRj
aF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdworICAgICAgICBlbmQpCisg
ICAgcmVzb2x2ZUdsb2JhbCg3LCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3cpCisgICAgZGlz
cGF0Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCisg
ICAgZGlzcGF0Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQorICAgIGRpc3BhdGNo
KDcpCisKKworX2xsaW50X29wX2dldF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlv
biBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIEluZGV4IG9mIHJlZ2lzdGVyIGluIHRoZSBz
Y29wZS4KKyAgICAjIDEyW1BDXSAgRGUgQnJ1aWppbiBpbmRleC4KKyAgICBnZXRTY29wZSgxMltQ
Q10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAg
IGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3RbdDBdLCB0
MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBs
b2FkaSBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3Qw
LCB0MiwgOF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBz
dG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAxNltQQ10sIHQx
CisgICAgdmFsdWVQcm9maWxlKHQzLCB0MCwgdDEpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxp
bnRfb3BfcHV0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGdldFNjb3Bl
KDhbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSAxMltQQ10sIHQx
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDMsIHQyKQorICAgIGxvYWRpIDRbUENd
LCB0MQorICAgIHdyaXRlQmFycmllcih0MywgdDIpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6
Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNb
dDBdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkg
dDIsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX2dldF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBK
U0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0
MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDEKKyAg
ICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICB2YWx1ZVByb2Zp
bGUodDIsIHQxLCB0MykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2xvYmFs
X3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVj
dFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgbG9hZGkgNFtQQ10s
IHQxCisgICAgd3JpdGVCYXJyaWVyKHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFt0
MCwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2Jhc2UpCisgICAgZGlz
cGF0Y2goNSkKKworCitfbGxpbnRfb3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0czoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Vuc3VyZV9wcm9wZXJ0
eV9leGlzdHMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX2Jh
c2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9y
ZXNvbHZlX3dpdGhfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9yZXNvbHZl
X3dpdGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29w
X2dldF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBvbmx5IGRvIG1vbm9t
b3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRo
ZQorICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0byBj
aGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKKyAgICAjIHBpbmctcG9uZ2luZyBpcyBmcmVl
LiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCisg
ICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtl
IHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAorICAgICMgd2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5n
IGFueXdheS4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlk
U2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVy
dHlTdG9yYWdlW3QzXSwgdDAKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEs
IC5vcEdldEJ5SWRTbG93CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgVGFnT2Zmc2V0
W3QwLCB0Ml0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDJdLCB0MgorICAgIHN0
b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgMzJbUENdLCB0MQorICAgIHZhbHVlUHJvZmlsZSh0
MywgdDIsIHQxKQorICAgIGRpc3BhdGNoKDkpCisKKy5vcEdldEJ5SWRTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOSkKKworCitfbGxp
bnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdworICAg
IGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQyCisgICAgc3ViaSAx
LCB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9w
R2V0QXJndW1lbnRzTGVuZ3RoU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0
X2FyZ3VtZW50c19sZW5ndGgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2J5
X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2Fk
aSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxU
YWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZHAg
SlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBicG5lcSBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgbG9hZGkgMjBbUENdLCB0MQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MCwgdDIpCisgICAgd3JpdGVCYXJy
aWVyKHQwLCB0MikKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDFdCisgICAgc3RvcmVp
IHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBkaXNwYXRjaCg5KQorCisub3BQdXRCeUlk
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X2lkKQorICAgIGRpc3Bh
dGNoKDkpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcykKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgMTZbUENd
LCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwg
Lm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGJwbmVxIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRpdGlvbmFsQ2hlY2tz
KHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRw
IEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYWRkcCB0MSwgdDMKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDEsIHQyKQorICAgIHdyaXRlQmFycmll
cih0MSwgdDIpCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgMjRbUENd
LCB0MQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZXAgdDEsIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgZGlzcGF0Y2goOSkKK2VuZAorCitfbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3Jv
IChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKworCitfbGxpbnRfb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAorICAgICAgICBt
YWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQorICAgICAgICAgICAgY29uc3QgcHJv
dG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0
ZXIgZm9yIHRoZSBwcm90bworICAgICAgICAKKyAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2Ny
YXRjaAorICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5k
KQorICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBz
Y3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBl
bmQpCisgICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRb
b2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAgICAgICAgLmxvb3A6CisgICAgICAgICAg
ICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1
cmVdLCBwcm90b0NlbGwKKyAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJv
dG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtz
Y3JhdGNoXSwgc2xvdworICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCisgICAgICAgICAgICBi
aW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51
bGxUYWcsIC5sb29wCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQpCisKKworX2xsaW50X29w
X2RlbF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2RlbF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlf
dmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEK
KyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGxvYWRwIEpTR2xv
YmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAgIGJwbmVx
IFt0MF0sIHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0b3JhZ2Vb
dDBdLCB0MworICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MF0sIC5vcEdl
dEJ5VmFsU2xvdworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6
bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBBcnJheVN0b3Jh
Z2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQorICAgIGJpZXEgdDIs
IEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisg
ICAgbG9hZGkgMTZbUENdLCB0MAorICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQwKQorICAgIGRp
c3BhdGNoKDUpCisKKy5vcEdldEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfZ2V0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9nZXRfYXJndW1l
bnRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkaSAxMltQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0
eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHQxLCBJbnQzMlRhZywgdDIsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93KQor
ICAgIGFkZGkgMSwgdDIKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtj
ZnJdLCB0MQorICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAgICBu
ZWdpIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0
ICsgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNl
dCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgc3RvcmVpIHQwLCBUYWdPZmZz
ZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0K
KyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9nZXRfYnlfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2Vs
bFRhZywgdDEsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICBi
cG5lcSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwg
Q2VsbFRhZywgdDIsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDAKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MworICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDJdLCB0MAorICAgIGJwbmVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OjptX2NhY2hlZFN0cnVjdHVyZVt0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkgMjRb
UENdLCB0MAorICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAKKyAgICBzdWJpIDEsIHQwCisgICAg
YmlhZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2FjaGVhYmxlU2xvdHNbdDNd
LCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFn
ZVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFt0MiwgdDAsIDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0
b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNykKKworLm9wR2V0QnlQbmFtZVNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9wbmFtZSkKKyAgICBkaXNwYXRjaCg3
KQorCisKK19sbGludF9vcF9wdXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2Vs
bFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgSW50MzJUYWcsIHQyLCAub3BQdXRCeVZhbFNs
b3cpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2dsb2JhbERhdGFbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNz
SW5mb1t0MF0sIHQwCisgICAgYnBuZXEgW3QxXSwgdDAsIC5vcFB1dEJ5VmFsU2xvdworICAgIGJp
YWVxIHQyLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MV0sIC5vcFB1dEJ5VmFsU2xvdworICAg
IGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQwCisgICAgYmllcSBBcnJheVN0b3JhZ2U6
Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFB1dEJ5
VmFsRW1wdHkKKy5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQ6CisgICAgbG9hZGkgMTJbUENdLCB0Mwor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MSwgdDMpCisgICAgd3JpdGVCYXJy
aWVyKHQxLCB0MykKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdP
ZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0b3JlaSB0MywgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciAr
IFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcFB1dEJ5VmFs
RW1wdHk6CisgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBd
CisgICAgYmliIHQyLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxTdG9y
ZVJlc3VsdAorICAgIGFkZGkgMSwgdDIsIHQxCisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6
Om1fbGVuZ3RoW3QwXQorICAgIGptcCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisKKy5vcFB1dEJ5
VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X3ZhbCkKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9kZWxfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X3ZhbCkKKyAgICBkaXNwYXRj
aCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaW5kZXg6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaW5kZXgpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfcHV0X2dldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9nZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfcHV0X3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3B1dF9zZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfbG9vcDoKKyAgICBub3AKK19sbGludF9vcF9qbXA6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGRpc3BhdGNoQnJhbmNoKDRbUENdKQorCisKK19sbGludF9vcF9qbXBfc2NvcGVzOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfam1wX3Nj
b3BlcykKKyAgICBkaXNwYXRjaCgwKQorCisKK21hY3JvIGp1bXBUcnVlT3JGYWxzZShjb25kaXRp
b25PcCwgc2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZCh0MSwgQm9vbGVhblRhZywgdDAsIC5zbG93KQorICAgIGNvbmRpdGlvbk9wKHQw
LCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFu
Y2goOFtQQ10pCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoc2xvdykKKyAgICBkaXNwYXRjaCgw
KQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX3RydWU6CisgICAgbm9wCitfbGxpbnRfb3BfanRy
dWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAg
bWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aW56IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2p0cnVlKQorCisKK19sbGludF9vcF9sb29wX2lmX2ZhbHNlOgorICAgIG5v
cAorX2xsaW50X29wX2pmYWxzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAganVtcFRydWVP
ckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpeiB2YWx1ZSwgdGFyZ2V0
IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZmFsc2UpCisKKworbWFjcm8gZXF1YWxOdWxs
KGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYW5kbGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAuaW1tZWRpYXRlCisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgY2VsbEhhbmRsZXIoU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQorICAgIGRp
c3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5pbW1l
ZGlhdGU6CisgICAgb3JpIDEsIHQxCisgICAgaW1tZWRpYXRlSGFuZGxlcih0MSwgLnRhcmdldCkK
KyAgICBkaXNwYXRjaCgzKQorZW5kCisKK19sbGludF9vcF9qZXFfbnVsbDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkg
YnRibnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisgICAgICAg
IG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaWVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQor
ICAgIAorCitfbGxpbnRfb3Bfam5lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBl
cXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJ6IHZhbHVlLCBNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRh
cmdldCkgYmluZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisKKworX2xsaW50X29wX2pu
ZXFfcHRyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBs
b2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcs
IC5vcEpuZXFQdHJCcmFuY2gKKyAgICBicGVxIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQx
LCAub3BKbmVxUHRyRmFsbFRocm91Z2gKKy5vcEpuZXFQdHJCcmFuY2g6CisgICAgZGlzcGF0Y2hC
cmFuY2goMTJbUENdKQorLm9wSm5lcVB0ckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoKDQpCisK
KworbWFjcm8gY29tcGFyZShpbnRlZ2VyQ29tcGFyZSwgZG91YmxlQ29tcGFyZSwgaGVscGVyKQor
ICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUodDIsIHQwLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0
MywgdDIsIHQzKQorICAgIGJpbmVxIHQwLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAgIGJpbmVx
IHQyLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGludGVnZXJDb21wYXJlKHQxLCB0MywgLmp1
bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5vdEludDoKKyAgICBiaWEgdDAsIExv
d2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJs
ZQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQzLCBmdDEKKyAgICBq
bXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQzLCB0
MiwgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgZmlpMmQgdDEsIHQwLCBmdDAKKyAgICBkb3Vi
bGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisub3Ay
Tm90SW50OgorICAgIGNpMmQgdDEsIGZ0MAorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xvdwor
ICAgIGZpaTJkIHQzLCB0MiwgZnQxCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBU
YXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLmp1bXBUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFu
Y2goMTJbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRj
aCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX2xlc3M6CisgICAgbm9wCitfbGxpbnRfb3Bf
amxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdCBsZWZ0LCByaWdodCwgdGFyZ2V0
IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzcykKKworCitfbGxpbnRfb3Bfam5sZXNz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzKQorCisKK19sbGludF9vcF9sb29w
X2lmX2dyZWF0ZXI6CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmRndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9qZ3JlYXRlcikKKworCitfbGxpbnRfb3Bfam5ncmVhdGVyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmRsdGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfam5ncmVhdGVyKQorCisKK19sbGludF9vcF9sb29wX2lmX2xlc3NlcToK
KyAgICBub3AKK19sbGludF9vcF9qbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
b21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQs
IHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkg
YmRsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2ps
ZXNzZXEpCisKKworX2xsaW50X29wX2pubGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0
LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJkZ3R1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9q
bmxlc3NlcSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyZXE6CisgICAgbm9wCitfbGxp
bnRfb3BfamdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcSBsZWZ0
LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcmVxKQor
CisKK19sbGludF9vcF9qbmdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29t
cGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0
dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5ncmVh
dGVyZXEpCisKKworX2xsaW50X29wX2xvb3BfaGludDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50
X29wX3N3aXRjaF9pbW06CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwg
dDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MSwgdDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQz
ICAgIyBGSVhNRTogd291bGQgYmUgbmljZSB0byBwZWVwaG9sZSB0aGlzIQorICAgIGxvYWRwIENv
ZGVCbG9jazo6UmFyZURhdGE6Om1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1
ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgYWRkcCB0MywgdDIKKyAgICBiaW5lcSB0MSwgSW50MzJU
YWcsIC5vcFN3aXRjaEltbU5vdEludAorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJd
LCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0
b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTaW1w
bGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0Mwor
ICAgIGxvYWRpIFt0MywgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEsIC5vcFN3aXRjaEltbUZhbGxU
aHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQorCisub3BTd2l0Y2hJbW1O
b3RJbnQ6CisgICAgYmliIHQxLCBMb3dlc3RUYWcsIC5vcFN3aXRjaEltbVNsb3cgICMgR28gdG8g
c2xvdyBwYXRoIGlmIGl0J3MgYSBkb3VibGUuCisub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaDoKKyAg
ICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLm9wU3dpdGNoSW1tU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX2ltbSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGlu
dF9vcF9zd2l0Y2hfY2hhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENd
LCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIs
IHQxLCB0MCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwg
dDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2NoYXJhY3RlclN3aXRjaEp1bXBU
YWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisgICAg
YmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRo
cm91Z2gKKyAgICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MF0sIHQwCisgICAgYmluZXEgU3Ry
aW5nSW1wbDo6bV9sZW5ndGhbdDBdLCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBs
b2FkcCBTdHJpbmdJbXBsOjptX2RhdGE4W3QwXSwgdDEKKyAgICBidGlueiBTdHJpbmdJbXBsOjpt
X2hhc2hBbmRGbGFnc1t0MF0sIEhhc2hGbGFnczhCaXRCdWZmZXIsIC5vcFN3aXRjaENoYXI4Qml0
CisgICAgbG9hZGggW3QxXSwgdDAKKyAgICBqbXAgLm9wU3dpdGNoQ2hhclJlYWR5Cisub3BTd2l0
Y2hDaGFyOEJpdDoKKyAgICBsb2FkYiBbdDFdLCB0MAorLm9wU3dpdGNoQ2hhclJlYWR5OgorICAg
IHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVK
dW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNo
Q2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRz
ICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBsb2FkaSBbdDIsIHQwLCA0XSwgdDEK
KyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJhbmNo
V2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNo
QnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zd2l0Y2hfc3RyaW5nOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX3N0cmluZykKKyAg
ICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9uZXdfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgYnRpeiAxMltQQ10sIC5vcE5ld0Z1bmNVbmNoZWNrZWQKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5v
cE5ld0Z1bmNEb25lCisub3BOZXdGdW5jVW5jaGVja2VkOgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9uZXdfZnVuYykKKy5vcE5ld0Z1bmNEb25lOgorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX25ld19mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX25ld19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCgzKQorCisKK21h
Y3JvIGRvQ2FsbChoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENd
LCB0MQorICAgIGxvYWRwIExMSW50Q2FsbExpbmtJbmZvOjpjYWxsZWVbdDFdLCB0MgorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wQ2FsbFNsb3cp
CisgICAgYmluZXEgdDMsIHQyLCAub3BDYWxsU2xvdworICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAg
ICBhZGRwIDI0LCBQQworICAgIGxzaGlmdGkgMywgdDMKKyAgICBhZGRwIGNmciwgdDMgICMgdDMg
Y29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBjZnIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX3Nj
b3BlQ2hhaW5bdDJdLCB0MAorICAgIHN0b3JlaSB0MiwgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFt0
M10KKyAgICBzdG9yZWkgdDAsIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGxv
YWRpIDggLSAyNFtQQ10sIHQyCisgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zm
c2V0W2Nmcl0KKyAgICBzdG9yZXAgY2ZyLCBDYWxsZXJGcmFtZVt0M10KKyAgICBzdG9yZWkgdDIs
IEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBD
YWxsZWUgKyBUYWdPZmZzZXRbdDNdCisgICAgc3RvcmVpIENlbGxUYWcsIFNjb3BlQ2hhaW4gKyBU
YWdPZmZzZXRbdDNdCisgICAgbW92ZSB0MywgY2ZyCisgICAgY2FsbCBMTEludENhbGxMaW5rSW5m
bzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdCisgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorCisub3BD
YWxsU2xvdzoKKyAgICBzbG93UGF0aEZvckNhbGwoNiwgaGVscGVyKQorZW5kCisKK19sbGludF9v
cF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBlcl9j
YWxsKQorCisKK19sbGludF9vcF9jb25zdHJ1Y3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGRvQ2FsbChfbGxpbnRfaGVscGVyX2NvbnN0cnVjdCkKKworCitfbGxpbnRfb3BfY2FsbF92YXJh
cmdzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzbG93UGF0aEZvckNhbGwoNiwgX2xsaW50
X2hlbHBlcl9jYWxsX3ZhcmFyZ3MpCisKKworX2xsaW50X29wX2NhbGxfZXZhbDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgCisgICAgIyBFdmFsIGlzIGV4ZWN1dGVkIGluIG9uZSBvZiB0d28g
bW9kZXM6CisgICAgIworICAgICMgMSkgV2UgZmluZCB0aGF0IHdlJ3JlIHJlYWxseSBpbnZva2lu
ZyBldmFsKCkgaW4gd2hpY2ggY2FzZSB0aGUKKyAgICAjICAgIGV4ZWN1dGlvbiBpcyBwZXJmb21l
ZCBlbnRpcmVseSBpbnNpZGUgdGhlIGhlbHBlciwgYW5kIGl0CisgICAgIyAgICByZXR1cm5zIHRo
ZSBQQyBvZiBhIGZ1bmN0aW9uIHRoYXQganVzdCByZXR1cm5zIHRoZSByZXR1cm4gdmFsdWUKKyAg
ICAjICAgIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAgIworICAgICMgMikgV2UgZmluZCB0
aGF0IHdlJ3JlIGludm9raW5nIHNvbWV0aGluZyBjYWxsZWQgZXZhbCgpIHRoYXQgaXMgbm90Cisg
ICAgIyAgICB0aGUgcmVhbCBldmFsLiBUaGVuIHRoZSBoZWxwZXIgcmV0dXJucyB0aGUgUEMgb2Yg
dGhlIHRoaW5nIHRvCisgICAgIyAgICBjYWxsLCBhbmQgd2UgY2FsbCBpdC4KKyAgICAjCisgICAg
IyBUaGlzIGFsbG93cyB1cyB0byBoYW5kbGUgdHdvIGNhc2VzLCB3aGljaCB3b3VsZCByZXF1aXJl
IGEgdG90YWwgb2YKKyAgICAjIHVwIHRvIGZvdXIgcGllY2VzIG9mIHN0YXRlIHRoYXQgY2Fubm90
IGJlIGVhc2lseSBwYWNrZWQgaW50byB0d28KKyAgICAjIHJlZ2lzdGVycyAoQyBmdW5jdGlvbnMg
Y2FuIHJldHVybiB1cCB0byB0d28gcmVnaXN0ZXJzLCBlYXNpbHkpOgorICAgICMKKyAgICAjIC0g
VGhlIGNhbGwgZnJhbWUgcmVnaXN0ZXIuIFRoaXMgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVuIG1v
ZGlmaWVkCisgICAgIyAgIGJ5IHRoZSBoZWxwZXIsIGJ1dCB0aGUgY29udmVudGlvbiBpcyB0aGF0
IGl0IHJldHVybnMgaXQuIEl0J3Mgbm90CisgICAgIyAgIHRvdGFsbHkgY2xlYXIgaWYgdGhhdCdz
IG5lY2Vzc2FyeSwgc2luY2UgdGhlIGNmciBpcyBjYWxsZWUgc2F2ZS4KKyAgICAjICAgQnV0IHRo
YXQncyBvdXIgc3R5bGUgaW4gdGhpcyBoZXJlIGludGVycHJldGVyIHNvIHdlIHN0aWNrIHdpdGgg
aXQuCisgICAgIworICAgICMgLSBBIGJpdCB0byBzYXkgaWYgdGhlIGhlbHBlciBzdWNjZXNzZnVs
bHkgZXhlY3V0ZWQgdGhlIGV2YWwgYW5kIGhhcworICAgICMgICB0aGUgcmV0dXJuIHZhbHVlLCBv
ciBkaWQgbm90IGV4ZWN1dGUgdGhlIGV2YWwgYnV0IGhhcyBhIFBDIGZvciB1cworICAgICMgICB0
byBjYWxsLgorICAgICMKKyAgICAjIC0gRWl0aGVyOgorICAgICMgICAtIFRoZSBKUyByZXR1cm4g
dmFsdWUgKHR3byByZWdpc3RlcnMpLCBvcgorICAgICMKKyAgICAjICAgLSBUaGUgUEMgdG8gY2Fs
bC4KKyAgICAjCisgICAgIyBJdCB0dXJucyBvdXQgdG8gYmUgZWFzaWVyIHRvIGp1c3QgYWx3YXlz
IGhhdmUgdGhpcyByZXR1cm4gdGhlIGNmcgorICAgICMgYW5kIGEgUEMgdG8gY2FsbCwgYW5kIHRo
YXQgUEMgbWF5IGJlIGEgZHVtbXkgdGh1bmsgdGhhdCBqdXN0CisgICAgIyByZXR1cm5zIHRoZSBK
UyB2YWx1ZSB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgIAorICAgIHNsb3dQYXRoRm9yQ2Fs
bCg0LCBfbGxpbnRfaGVscGVyX2NhbGxfZXZhbCkKKworCitfbGxpbnRfZ2VuZXJpY19yZXR1cm5f
cG9pbnQ6CisgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorCisKK19sbGludF9vcF90ZWFyX29mZl9h
Y3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5
VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZAorICAgIGJpZXEgVGFnT2Zmc2V0
W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0
ZWQKKy5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZDoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKKy5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRl
ZDoKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF90ZWFyX29mZl9hcmd1bWVudHM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN1YmkgMSwgdDAg
ICAjIEdldCB0aGUgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyCisgICAgYmllcSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVh
dGVkCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cykKKy5v
cFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFjcm8g
ZG9SZXR1cm4oKQorICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCisgICAgbG9hZHAgQ2FsbGVy
RnJhbWVbY2ZyXSwgY2ZyCisgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4odDIp
CisgICAgcmV0CitlbmQKKworX2xsaW50X29wX3JldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgZG9SZXR1cm4oKQorCisK
K19sbGludF9vcF9jYWxsX3B1dF9yZXN1bHQ6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9h
ZGkgOFtQQ10sIHQzCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBz
dG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB2YWx1ZVByb2ZpbGUodDEs
IHQwLCB0MykKKyAgICB0cmFjZUV4ZWN1dGlvbigpICMgTmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNl
IGl0IHdvdWxkIGNsb2JiZXIgdDEsIHQwCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bf
cmV0X29iamVjdF9vcl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRj
aFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wUmV0T2Jq
ZWN0T3JUaGlzTm90T2JqZWN0CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQy
CisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBP
YmplY3RUeXBlLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBkb1JldHVybigpCisK
Ky5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdDoKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgZG9SZXR1cm4oKQorCisKK19s
bGludF9vcF9tZXRob2RfY2hlY2s6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgV2UgaWdu
b3JlIG1ldGhvZCBjaGVja3MgYW5kIHVzZSBub3JtYWwgZ2V0X2J5X2lkIG9wdGltaXphdGlvbnMu
CisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3RyY2F0OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3RyY2F0KQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX3RvX3ByaW1pdGl2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BUb1ByaW1p
dGl2ZUlzSW1tCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJu
ZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5
cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2UKKy5vcFRvUHJpbWl0aXZlSXNJbW06CisgICAgc3Rv
cmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb1ByaW1pdGl2ZVNsb3dDYXNl
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19wcmltaXRpdmUpCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfZ2V0X3BuYW1lczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9wbmFtZXMpCisgICAgZGlzcGF0Y2goMCkg
IyBUaGUgaGVscGVyIGVpdGhlciBhZHZhbmNlcyB0aGUgUEMgb3IganVtcHMgdXMgdG8gc29tZXdo
ZXJlIGVsc2UuCisKKworX2xsaW50X29wX25leHRfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkaSAxNltQQ10sIHQyCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSwgdDAKKyAgICBiaWVxIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDIsIDhdLCAub3BOZXh0UG5hbWVFbmQKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICBsb2FkcCBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOjptX2pzU3RyaW5nc1t0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgOF0s
IHQzCisgICAgYWRkaSAxLCB0MAorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAg
ICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0
MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGJwbmVxIHQxLCBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIC5vcE5leHRQbmFt
ZVNsb3cKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFByb3RvdHlw
ZUNoYWluW3QyXSwgdDAKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDBdLCB0
MAorICAgIGJ0cHogW3QwXSwgLm9wTmV4dFBuYW1lVGFyZ2V0Cisub3BOZXh0UG5hbWVDaGVja1By
b3RvdHlwZUxvb3A6CisgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0
W3QxXSwgTnVsbFRhZywgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9w
cm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QxXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QyXSwgdDEKKyAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdworICAg
IGFkZHAgNCwgdDAKKyAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxv
b3AKKy5vcE5leHRQbmFtZVRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgyNFtQQ10pCisKKy5v
cE5leHRQbmFtZUVuZDoKKyAgICBkaXNwYXRjaCg3KQorCisub3BOZXh0UG5hbWVTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXh0X3BuYW1lKSAjIFRoaXMgZWl0aGVyIGtlZXBz
IHRoZSBQQyB3aGVyZSBpdCB3YXMgKGNhdXNpbmcgdXMgdG8gbG9vcCkgb3Igc2V0cyBpdCB0byB0
YXJnZXQuCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfcHVzaF9zY29wZToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfc2NvcGUp
CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9wX3Njb3BlOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9wX3Njb3BlKQorICAgIGRp
c3BhdGNoKDEpCisKKworX2xsaW50X29wX3B1c2hfbmV3X3Njb3BlOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9uZXdfc2NvcGUpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfY2F0Y2g6CisgICAgIyBUaGlzIGlzIHdoZXJlIHdl
IGVuZCB1cCBmcm9tIHRoZSBKSVQncyB0aHJvdyB0cmFtcG9saW5lIChiZWNhdXNlIHRoZQorICAg
ICMgbWFjaGluZSBjb2RlIHJldHVybiBhZGRyZXNzIHdpbGwgYmUgc2V0IHRvIF9sbGludF9vcF9j
YXRjaCksIGFuZCBmcm9tCisgICAgIyB0aGUgaW50ZXJwcmV0ZXIncyB0aHJvdyB0cmFtcG9saW5l
IChzZWUgX2xsaW50X3Rocm93X3RyYW1wb2xpbmUpLgorICAgICMgVGhlIEpJVCB0aHJvd2luZyBw
cm90b2NvbCBjYWxscyBmb3IgdGhlIGNmciB0byBiZSBpbiB0MC4gVGhlIHRocm93aW5nCisgICAg
IyBjb2RlIG11c3QgaGF2ZSBrbm93biB0aGF0IHdlIHdlcmUgdGhyb3dpbmcgdG8gdGhlIGludGVy
cHJldGVyLCBhbmQgaGF2ZQorICAgICMgc2V0IEpTR2xvYmFsRGF0YTo6dGFyZ2V0SW50ZXJwcmV0
ZXJQQ0ZvclRocm93LgorICAgIG1vdmUgdDAsIGNmcgorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6
Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6dGFyZ2V0SW50ZXJw
cmV0ZXJQQ0ZvclRocm93W3QzXSwgUEMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlv
biArIFBheWxvYWRPZmZzZXRbdDNdLCB0MAorICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0
aW9uICsgVGFnT2Zmc2V0W3QzXSwgdDEKKyAgICBzdG9yZWkgMCwgSlNHbG9iYWxEYXRhOjpleGNl
cHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBKU0ds
b2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10gICAgICAgCisgICAgbG9hZGkgNFtQ
Q10sIHQyCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3Rv
cmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB0cmFjZUV4ZWN1dGlvbigpICAjIFRo
aXMgbmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY2xvYmJlciB0MCwg
dDEsIHQyLCB0MyBhYm92ZS4KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvdzoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rocm93
KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93X3JlZmVyZW5jZV9lcnJvcjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rocm93
X3JlZmVyZW5jZV9lcnJvcikKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9qc3I6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFkZGkgMyAqIDQs
IFBDLCB0MQorICAgIHN0b3JlaSB0MSwgW2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2hCcmFuY2go
OFtQQ10pCisKKworX2xsaW50X29wX3NyZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFtjZnIsIHQwLCA4XSwgUEMKKyAgICBkaXNwYXRjaCgw
KQorCisKK19sbGludF9vcF9kZWJ1ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2RlYnVnKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X3Byb2ZpbGVfd2lsbF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBKSVRT
dGFja0ZyYW1lOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCB0MAorICAgIGJ0cHogW3Qw
XSwgLm9wUHJvZmlsZVdpbGxDYWxsRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9w
cm9maWxlX3dpbGxfY2FsbCkKKy5vcFByb2ZpbGVXaWxsQ2FsbERvbmU6CisgICAgZGlzcGF0Y2go
MikKKworCitfbGxpbnRfb3BfcHJvZmlsZV9kaWRfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwg
dDAKKyAgICBidHB6IFt0MF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKKy5vcFByb2ZpbGVEaWRDYWxsRG9uZToK
KyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9lbmQ6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF90aHJvd19m
cm9tX2hlbHBlcl90cmFtcG9saW5lOgorICAgICMgV2hlbiB0aHJvd2luZyBmcm9tIHRoZSBpbnRl
cnByZXRlciAoaS5lLiB0aHJvd2luZyBmcm9tIExMSW50SGVscGVycyksIHNvCisgICAgIyB0aGUg
dGhyb3cgdGFyZ2V0IGlzIG5vdCBuZWNlc3NhcmlseSBpbnRlcnByZXRlZCBjb2RlLCB3ZSBjb21l
IHRvIGhlcmUuCisgICAgIyBUaGlzIGVzc2VudGlhbGx5IGVtdWxhdGVzIHRoZSBKSVQncyB0aHJv
d2luZyBwcm90b2NvbC4KKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwg
dDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAg
ICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCitfbGxp
bnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZToKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJl
c3NBZnRlckNhbGwodDIpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0s
IHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisg
ICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworIyBM
YXN0bHksIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1
cHBvcnQgYWxsIG9wY29kZXMuCisjIFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdo
ZW4gdXNpbmcgTExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CisjIGFzIG11Y2guCisKK21h
Y3JvIG5vdFN1cHBvcnRlZCgpCisgICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgY3Jhc2go
KQorICAgIGVsc2UKKyAgICAgICAgIyBXZSBzaG91bGQgdXNlIHdoYXRldmVyIHRoZSBzbWFsbGVz
dCBwb3NzaWJsZSBpbnN0cnVjdGlvbiBpcywganVzdCB0bworICAgICAgICAjIGVuc3VyZSB0aGF0
IHRoZXJlIGlzIGEgZ2FwIGJldHdlZW4gaW5zdHJ1Y3Rpb24gbGFiZWxzLiBJZiBtdWx0aXBsZQor
ICAgICAgICAjIHNtYWxsZXN0IGluc3RydWN0aW9ucyBleGlzdCwgd2Ugc2hvdWxkIHBpY2sgdGhl
IG9uZSB0aGF0IGlzIG1vc3QKKyAgICAgICAgIyBsaWtlbHkgcmVzdWx0IGluIGV4ZWN1dGlvbiBi
ZWluZyBoYWx0ZWQuIEN1cnJlbnRseSB0aGF0IGlzIHRoZSBicmVhaworICAgICAgICAjIGluc3Ry
dWN0aW9uIG9uIGFsbCBhcmNoaXRlY3R1cmVzIHdlJ3JlIGludGVyZXN0ZWQgaW4uIChCcmVhayBp
cyBpbnQzCisgICAgICAgICMgb24gSW50ZWwsIHdoaWNoIGlzIDEgYnl0ZSwgYW5kIGJrcHQgb24g
QVJNdjcsIHdoaWNoIGlzIDIgYnl0ZXMuKQorICAgICAgICBicmVhaworICAgIGVuZAorZW5kCisK
K19sbGludF9vcF9nZXRfYXJyYXlfbGVuZ3RoOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGlu
dF9vcF9nZXRfYnlfaWRfY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dl
dF9ieV9pZF9jdXN0b21fY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dl
dF9ieV9pZF9jdXN0b21fcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dl
dF9ieV9pZF9jdXN0b21fc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0
X2J5X2lkX2dlbmVyaWM6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9p
ZF9nZXR0ZXJfY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9p
ZF9nZXR0ZXJfcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9p
ZF9nZXR0ZXJfc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lk
X3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfc2VsZjoK
KyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X3N0cmluZ19sZW5ndGg6CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1
cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfcmVwbGFjZToKKyAgICBub3RTdXBwb3J0
ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb246CisgICAgbm90U3VwcG9ydGVk
KCkKKworCisjIEluZGljYXRlIHRoZSBlbmQgb2YgTExJbnQuCitfbGxpbnRfZW5kOgorICAgIGNy
YXNoKCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCisjaW5j
bHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCisjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5o
IgorCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMb3dM
ZXZlbEludGVycHJldGVyX2gKKyNkZWZpbmUgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisKKyNpbmNs
dWRlICJPcGNvZGUuaCIKKworI2RlZmluZSBMTElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29kZSwg
bGVuZ3RoKSBleHRlcm4gIkMiIHZvaWQgbGxpbnRfIyNvcGNvZGUoKTsKKyAgICBGT1JfRUFDSF9P
UENPREVfSUQoTExJTlRfSU5TVFJVQ1RJT05fREVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJVQ1RJ
T05fREVDTAorCitleHRlcm4gIkMiIHZvaWQgbGxpbnRfYmVnaW4oKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9lbmQoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKCk7
CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZXZhbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhy
b3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93
X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUoKTsKKworI2VuZGlmIC8vIExvd0xldmVsSW50ZXJwcmV0
ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMg
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK2NsYXNzIFNwZWNpYWxSZWdpc3RlcgorICBkZWYgaW5pdGlhbGl6ZShuYW1l
KQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBA
bmFtZQorICBlbmQKK2VuZAorCitBUk12N19EQVRBX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5uZXco
ImlwIikKK0FSTXY3X0FERFJfUkVHID0gU3BlY2lhbFJlZ2lzdGVyLm5ldygicjMiKQorCitkZWYg
bW92ZUltbWVkaWF0ZSh2YWx1ZSwgcmVnaXN0ZXIpCisgICMgQ3VycmVudGx5IHdlIG9ubHkgaGFu
ZGxlIHRoZSBzaW1wbGUgY2FzZXMsIGFuZCBmYWxsIGJhY2sgdG8gbW92L21vdnQgZm9yIHRoZSBj
b21wbGV4IG9uZXMuCisgIGlmIHZhbHVlID49IDAgJiYgdmFsdWUgPCAyNTYKKyAgICAkYXNtLnB1
dHMgIm1vdncgXCMje3ZhbHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNpZiAo
fnZhbHVlKSA+PSAwICYmICh+dmFsdWUpIDwgMjU2CisgICAgJGFzbS5wdXRzICJtdm53IFwjI3t+
dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgIGVsc2UKKyAgICAkYXNtLnB1dHMg
Im1vdncgXCMje3ZhbHVlICYgMHhmZmZmfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAg
IGlmICh2YWx1ZSAmIDB4ZmZmZjAwMDApICE9IDAKKyAgICAgICRhc20ucHV0cyAibW92dCBcIyN7
dmFsdWUgPj4gMTZ9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgICAgZW5kCisgIGVuZAor
ZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFt
ZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgInIwIgorICAgIHdoZW4gInQxIiwg
ImExIiwgInIxIgorICAgICAgInIxIgorICAgIHdoZW4gInQyIiwgImEyIgorICAgICAgInIyIgor
ICAgIHdoZW4gImEzIgorICAgICAgInIzIgorICAgIHdoZW4gInQzIgorICAgICAgInI0IgorICAg
IHdoZW4gInQ0IgorICAgICAgInI3IgorICAgIHdoZW4gImNmciIKKyAgICAgICJyNSIKKyAgICBl
bHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQ
b3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9y
eU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3Rv
cmVXcmFwCisgICAgeWllbGQKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgIGRl
ZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAiZnIiCisgICAg
ICAiZDAiCisgICAgd2hlbiAiZnIxIiwKKyAgICAgICJkMSIKKyAgICB3aGVuICJmcjIiCisgICAg
ICAiZDIiCisgICAgd2hlbiAiZnIzIgorICAgICAgImQzIgorICAgIHdoZW4gImZyNCIKKyAgICAg
ICJkNCIKKyAgICB3aGVuICJmcjUiCisgICAgICAiZDUiCisgICAgZWxzZQorICAgICAgcmFpc2UK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVy
YW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgYXJt
VjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlpZWxk
IHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiBhcm1WN09wZXJhbmQK
KyAgICByYWlzZSAiSW52YWxpZCBpbW1lZGlhdGUgI3t2YWx1ZX0iIGlmIHZhbHVlIDwgMCBvciB2
YWx1ZSA+IDI1NQorICAgICIjJHt2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFy
ZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVt
b3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRT
dG9yZVdyYXAKKyAgICB5aWVsZCBzZWxmCisgIGVuZAorZW5kCisKK21vZHVsZSBBUk12N0FkZHJl
c3NVdGlsaXRpZXMKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHNlbGYuYXJtVjdQcmVw
YXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgJGFzbS5wdXRzICJcdGxkciAje3NlbGYuYXJt
VjdQb3NzaWJseU1lbW9yeU9wZXJhbmR9LCAje0FSTXY3X0RBVEFfUkVHLmFybVY3T3BlcmFuZH0i
CisgICAgeWllbGQgQVJNdjdfREFUQV9SRUcKKyAgICAkYXNtLnB1dHMgIlx0c3RyICN7QVJNdjdf
REFUQV9SRUcuYXJtVjdPcGVyYW5kfSwgI3tzZWxmLmFybVY3UG9zc2libHlNZW1vcnlPcGVyYW5k
fSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBpbmNsdWRlIEFSTXY3QWRkcmVzc1V0
aWxpdGllcworCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBp
ZiBvZmZzZXQudmFsdWUgPCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgbW92
ZUltbWVkaWF0ZShvZmZzZXQudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1
ZSA8IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICAiWyN7YmFzZS5hcm1WN09w
ZXJhbmR9LCAje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH1dIgorICAgIGVsc2UKKyAgICAg
ICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7b2Zmc2V0LmFybVY3T3BlcmFuZH1dIgorICAgIGVu
ZAorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NV
dGlsaXRpZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAg
aWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAgIG1vdmVJbW1lZGlhdGUob2Zmc2V0LnZhbHVlLCBB
Uk12N19BRERSX1JFRykKKyAgICAgICRhc20ucHV0cyAiYWRkdyAje0FSTXY3X0FERFJfUkVHLmFy
bVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSAhPSAw
CisgICAgICAiWyN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfSwgI3tpbmRleC5hcm1WN09w
ZXJhbmR9LCBsc2wgXCMje3NjYWxlfV0iCisgICAgZWxzZQorICAgICAgIlsje2Jhc2UuYXJtVjdP
cGVyYW5kfSwgI3tpbmRleC5hcm1WN09wZXJhbmR9LCBsc2wgXCMje3NjYWxlfV0iCisgICAgZW5k
CisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBpbmNsdWRlIEFSTXY3QWRk
cmVzc1V0aWxpdGllcworICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFu
ZAorICAgIG1vdmVJbW1lZGlhdGUoYWRkcmVzcy52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgIGVu
ZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgIlsje0FSTXY3X0FE
RFJfUkVHLmFybVY3T3BlcmFuZH1dIgorICBlbmQKK2VuZAorCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA4IEBA
CisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMi
CityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJz
ZXIiCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworY2xhc3MgQXNz
ZW1ibGVyCisgIGRlZiBpbml0aWFsaXplKG91dHApCisgICAgQG91dHAgPSBvdXRwCisgICAgQHN0
YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBlbnRlckFzbQorICAgIEBvdXRwLnB1dHMgImFz
bSAoIgorICAgIEBzdGF0ZSA9IDphc20KKyAgZW5kCisgIAorICBkZWYgbGVhdmVBc20KKyAgICBA
b3V0cC5wdXRzICIpOyIKKyAgICBAc3RhdGUgPSA6Y3BwCisgIGVuZAorICAKKyAgZGVmIGluQXNt
CisgICAgZW50ZXJBc20KKyAgICB5aWVsZAorICAgIGxlYXZlQXNtCisgIGVuZAorICAKKyAgZGVm
IHB1dHMobGluZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5w
dXRzKChsaW5lICsgIlxuIikuaW5zcGVjdCkKKyAgZW5kCisgIAorICBkZWYgY29tbWVudCh0ZXh0
KQorICAgIEBvdXRwLnB1dHMgIi8vICN7dGV4dH0iCisgIGVuZAorZW5kCisKK2FzbUZpbGUgPSBB
UkdWLnNoaWZ0CitvZmZzZXRzRmlsZSA9IEFSR1Yuc2hpZnQKK291dHB1dEZsbm0gPSBBUkdWLnNo
aWZ0CisKK29mZnNldHNMaXN0LCBjb25maWdJbmRleCA9IG9mZnNldHNBbmRDb25maWd1cmF0aW9u
SW5kZXgob2Zmc2V0c0ZpbGUpCitpbnB1dERhdGEgPSBJTzo6cmVhZChhc21GaWxlKQorCitpbnB1
dEhhc2ggPQorICAiLy8gb2ZmbGluZWFzbSBpbnB1dCBoYXNoOiAiICsgRGlnZXN0OjpTSEExLmhl
eGRpZ2VzdChpbnB1dERhdGEpICsKKyAgIiAiICsgRGlnZXN0OjpTSEExLmhleGRpZ2VzdCgob2Zm
c2V0c0xpc3QgKyBbY29uZmlnSW5kZXhdKS5qb2luKCcgJykpCisKK2lmIEZpbGVUZXN0LmV4aXN0
PyBvdXRwdXRGbG5tCisgIEZpbGUub3BlbihvdXRwdXRGbG5tLCAiciIpIHsKKyAgICB8IGlucCB8
CisgICAgZmlyc3RMaW5lID0gaW5wLmdldHMKKyAgICBpZiBmaXJzdExpbmUgYW5kIGZpcnN0TGlu
ZS5jaG9tcCA9PSBpbnB1dEhhc2gKKyAgICAgICRzdGRlcnIucHV0cyAiTm90aGluZyBjaGFuZ2Vk
LiIKKyAgICAgIGV4aXQgMAorICAgIGVuZAorICB9CitlbmQKKworRmlsZS5vcGVuKG91dHB1dEZs
bm0sICJ3IikgeworICB8IG91dHAgfAorICAkb3V0cHV0ID0gb3V0cAorICAkb3V0cHV0LnB1dHMg
aW5wdXRIYXNoCisgIAorICAkYXNtID0gQXNzZW1ibGVyLm5ldygkb3V0cHV0KQorICAKKyAgYXN0
ID0gcGFyc2UobGV4KGlucHV0RGF0YSkpCisgIAorICBmb3JTZXR0aW5ncyhjb21wdXRlU2V0dGlu
Z3NDb21iaW5hdGlvbnMoYXN0KVtjb25maWdJbmRleF0sIGFzdCkgeworICAgIHwgY29uY3JldGVT
ZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgIGFzc2VydENvbmZpZ3VyYXRpb24o
Y29uY3JldGVTZXR0aW5ncykKKyAgICBsb3dMZXZlbEFTVCA9IGxvd0xldmVsQVNULnJlc29sdmUo
KmJ1aWxkT2Zmc2V0c01hcChsb3dMZXZlbEFTVCwgb2Zmc2V0c0xpc3QpKQorICAgIGVtaXRDb2Rl
SW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kKSB7
CisgICAgICAkYXNtLmluQXNtIHsKKyAgICAgICAgbG93TGV2ZWxBU1QubG93ZXIoYmFja2VuZCkK
KyAgICAgIH0KKyAgICB9CisgIH0KK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2FzdC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODE3IEBACisjIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBCYXNlIHV0aWxpdHkgdHlwZXMgZm9yIHRoZSBBU1QuICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisj
IFZhbGlkIG1ldGhvZHMgZm9yIE5vZGU6CisjCisjIG5vZGUuY2hpbGRyZW4gLT4gUmV0dXJucyBh
biBhcnJheSBvZiBpbW1lZGlhdGUgY2hpbGRyZW4uCisjCisjIG5vZGUuZGVzY2VuZGVudHMgLT4g
UmV0dXJucyBhbiBhcnJheSBvZiBhbGwgc3RyaWN0IGRlc2NlbmRhbnRzIChjaGlsZHJlbgorIyAg
ICAgYW5kIGNoaWxkcmVuIG9mIGNoaWxkcmVuLCB0cmFuc2l0aXZlbHkpLgorIworIyBub2RlLmZs
YXR0ZW4gLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBzdHJpY3QgZGVzY2VuZGFu
dHMgYW5kCisjICAgICB0aGUgbm9kZSBpdHNlbGYuCisjCisjIG5vZGUuZmlsdGVyKHR5cGUpIC0+
IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aG9zZSBlbGVtZW50cyBpbgorIyAgICAgbm9k
ZS5mbGF0dGVuIHRoYXQgYXJlIG9mIHRoZSBnaXZlbiB0eXBlIChpc19hPyB0eXBlIHJldHVybnMg
dHJ1ZSkuCisjCisjIG5vZGUubWFwQ2hpbGRyZW57fHZ8IC4uLn0gLT4gUmV0dXJucyBhIG5ldyBu
b2RlIHdpdGggYWxsIGNoaWxkcmVuCisjICAgICByZXBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGdp
dmVuIGJsb2NrLgorIworIyBFeGFtcGxlczoKKyMKKyMgbm9kZS5maWx0ZXIoU2V0dGluZykudW5p
cSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc2V0dGluZ3MgdGhhdCB0aGUgQVNUJ3MKKyMgICAgIElm
VGhlbkVsc2UgYmxvY2tzIGRlcGVuZCBvbi4KKyMKKyMgbm9kZS5maWx0ZXIoU3RydWN0T2Zmc2V0
KS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzdHJ1Y3R1cmUgb2Zmc2V0cworIyAgICAgdGhh
dCB0aGUgQVNUIGRlcGVuZHMgb24uCisKK2NsYXNzIE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNvZGVP
cmlnaW4KKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgQGNvZGVPcmlnaW4g
PSBjb2RlT3JpZ2luCisgIGVuZAorICAKKyAgZGVmIGNvZGVPcmlnaW5TdHJpbmcKKyAgICAibGlu
ZSBudW1iZXIgI3tAY29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVmIGRlc2NlbmRhbnRzCisg
ICAgY2hpbGRyZW4uY29sbGVjdHt8dnwgdi5mbGF0dGVufS5mbGF0dGVuCisgIGVuZAorICAKKyAg
ZGVmIGZsYXR0ZW4KKyAgICBbc2VsZl0gKyBkZXNjZW5kYW50cworICBlbmQKKyAgCisgIGRlZiBm
aWx0ZXIodHlwZSkKKyAgICBmbGF0dGVuLnNlbGVjdHt8dnwgdi5pc19hPyB0eXBlfQorICBlbmQK
K2VuZAorCitjbGFzcyBOb0NoaWxkcmVuIDwgTm9kZQorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisg
ICAgW10KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBzZWxmCisgIGVuZAorZW5k
CisKK2NsYXNzIFN0cnVjdE9mZnNldEtleQorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQK
KyAgCisgIGRlZiBpbml0aWFsaXplKHN0cnVjdCwgZmllbGQpCisgICAgQHN0cnVjdCA9IHN0cnVj
dAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAgZGVmIGhhc2gKKyAgICBAc3RydWN0
Lmhhc2ggKyBAZmllbGQuaGFzaCAqIDMKKyAgZW5kCisgIAorICBkZWYgZXFsPyhvdGhlcikKKyAg
ICBAc3RydWN0ID09IG90aGVyLnN0cnVjdCBhbmQgQGZpZWxkID09IG90aGVyLmZpZWxkCisgIGVu
ZAorZW5kCisgICAgCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBBU1Qgbm9k
ZXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBTdHJ1Y3RP
ZmZzZXQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQK
KyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JGaWVsZChjb2RlT3JpZ2lu
LCBzdHJ1Y3QsIGZpZWxkKQorICAgIGtleSA9IFN0cnVjdE9mZnNldEtleS5uZXcoc3RydWN0LCBm
aWVsZCkKKyAgICAKKyAgICB1bmxlc3MgQEBtYXBwaW5nW2tleV0KKyAgICAgIEBAbWFwcGluZ1tr
ZXldID0gU3RydWN0T2Zmc2V0Lm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGVu
ZAorICAgIEBAbWFwcGluZ1trZXldCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tzdHJ1
Y3R9Ojoje2ZpZWxkfSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAgIGlmIEBzdHJ1
Y3QgIT0gb3RoZXIuc3RydWN0CisgICAgICByZXR1cm4gQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0
CisgICAgZW5kCisgICAgQGZpZWxkIDw9PiBvdGhlci5maWVsZAorICBlbmQKK2VuZAorCitjbGFz
cyBTaXplb2YgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVm
IHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tz
dHJ1Y3RdCisgICAgICBAQG1hcHBpbmdbc3RydWN0XSA9IFNpemVvZi5uZXcoY29kZU9yaWdpbiwg
c3RydWN0KQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tzdHJ1Y3RdCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICAic2l6ZW9mICN7QHN0cnVjdH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhl
cikKKyAgICBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgZW5kCitlbmQKKworY2xhc3MgSW1t
ZWRpYXRlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6dmFsdWUKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZh
bHVlID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje3ZhbHVlfSIKKyAgZW5k
CisgIAorICBkZWYgPT0ob3RoZXIpCisgICAgb3RoZXIuaXNfYT8gSW1tZWRpYXRlIGFuZCBvdGhl
ci52YWx1ZSA9PSBAdmFsdWUKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5v
ZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9
IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZElt
bWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9
KSIKKyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFk
ZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwg
cmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmln
aHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0
XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIFN1YkltbWVkaWF0ZXMubmV3KGNv
ZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gLSAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQK
KworY2xhc3MgTXVsSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdo
dAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBl
bmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisg
IGRlZiBtYXBDaGlsZHJlbgorICAgIE11bEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVs
ZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigj
e2xlZnQuZHVtcH0gKiAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1t
ZWRpYXRlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0g
Y2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGNoaWxkXQorICBlbmQKKyAg
CisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5lZ0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKC0je0BjaGlsZC5kdW1w
fSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJf
cmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBw
aW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1
bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBSZWdpc3RlcklE
Lm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lz
dGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUg
PSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5h
bWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBA
QG1hcHBpbmdbbmFtZV0gPSBGUFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
ZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1l
CisgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRl
ciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9
IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNz
IEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gVmFyaWFibGUubmV3KGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MgPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBiYXNlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9
IGJhc2UKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisg
ICAgW0BiYXNlLCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFk
ZHJlc3MubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAb2Zmc2V0KSkKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH1dIgor
ICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXggPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNl
LCA6aW5kZXgsIDpzY2FsZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAYmFzZSA9IGJhc2UKKyAgICBAaW5kZXggPSBpbmRleAorICAgIEBzY2FsZSA9IHNjYWxlCisg
ICAgcmFpc2UgdW5sZXNzIFsxLCAyLCA0LCA4XS5tZW1iZXI/IEBzY2FsZQorICAgIEBvZmZzZXQg
PSBvZmZzZXQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBpbmRleCwg
QG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBCYXNlSW5kZXgubmV3
KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAaW5kZXgpLCBAc2NhbGUsICh5aWVs
ZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsj
e2Jhc2UuZHVtcH0sICN7aW5kZXguZHVtcH0sICN7c2NhbGV9XSIKKyAgZW5kCitlbmQKKworY2xh
c3MgQWJzb2x1dGVBZGRyZXNzIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6YWRkcmVzcwor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYWRkcmVzcykKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBhZGRyZXNzID0gYWRkcmVzcworICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgIiN7YWRkcmVzcy5kdW1wfVtdIgorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbiA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCBvcGNvZGUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQG9wY29kZSA9IG9wY29kZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgIGVuZAor
ICAKKyAgZGVmIGNoaWxkcmVuCisgICAgb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hp
bGRyZW4oJnByb2MpCisgICAgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBv
cGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0IiArIG9w
Y29kZS50b19zICsgIiAiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIp
CisgIGVuZAorZW5kCisKK2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiXHRlcnJvciIKKyAgZW5kCitlbmQKKworY2xhc3MgQ29uc3REZWNsIDwgTm9kZQor
ICBhdHRyX3JlYWRlciA6dmFyaWFibGUsIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZh
cmlhYmxlID0gdmFyaWFibGUKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIFtAdmFyaWFibGUsIEB2YWx1ZV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hp
bGRyZW4KKyAgICBDb25zdERlY2wubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAdmFyaWFibGUpLCAo
eWllbGQgQHZhbHVlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJjb25zdCAje0B2YXJp
YWJsZS5kdW1wfSA9ICN7QHZhbHVlLmR1bXB9IgorICBlbmQKK2VuZAorCiskbGFiZWxNYXBwaW5n
ID0ge30KKworY2xhc3MgTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2Rl
T3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJM
YWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0u
aXNfYT8gTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFiZWwu
bmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFz
cyBMb2NhbExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBuYW1lID0gbmFtZQorICBlbmQKKworICBAQHVuaXF1ZU5hbWVDb3VudGVyID0gMAorICAKKyAg
ZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdb
bmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNz
ICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTG9jYWxMYWJlbAorICAgIGVsc2UKKyAgICAgICRs
YWJlbE1hcHBpbmdbbmFtZV0gPSBMb2NhbExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAg
IGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgc2VsZi51bmlx
dWUoY29tbWVudCkKKyAgICBuZXdOYW1lID0gIl8je2NvbW1lbnR9IgorICAgIGlmICRsYWJlbE1h
cHBpbmdbbmV3TmFtZV0KKyAgICAgIHdoaWxlICRsYWJlbE1hcHBpbmdbbmV3TmFtZSA9ICJfI3tA
QHVuaXF1ZU5hbWVDb3VudGVyfV8je2NvbW1lbnR9Il0KKyAgICAgICAgQEB1bmlxdWVOYW1lQ291
bnRlciArPSAxCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBmb3JOYW1lKG5pbCwgbmV3TmFtZSkK
KyAgZW5kCisgIAorICBkZWYgY2xlYW5OYW1lCisgICAgaWYgbmFtZSA9fiAvXlwuLworICAgICAg
Il8iICsgbmFtZVsxLi4tMV0KKyAgICBlbHNlCisgICAgICBuYW1lCisgICAgZW5kCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVs
UmVmZXJlbmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVs
ID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2lu
LCAoeWllbGQgQGxhYmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5hbWUK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAgZW5kCitlbmQKKworY2xh
c3MgTG9jYWxMYWJlbFJlZmVyZW5jZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmxhYmVs
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisg
ICAgW0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBMb2NhbExhYmVs
UmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxhYmVsKSkKKyAgZW5kCisgIAorICBk
ZWYgbmFtZQorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxhYmVs
Lm5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVy
IDpsaXN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsaXN0KQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQGxpc3QgPSBsaXN0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVu
CisgICAgbGlzdAorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBTZXF1
ZW5jZS5uZXcoY29kZU9yaWdpbiwgQGxpc3QubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgIGxpc3QuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCJcbiIpCisgIGVuZAorZW5k
CisKK2NsYXNzIFRydWUgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIo
bmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBUcnVlLm5ldworICAKKyAgZGVmIHNlbGYu
aW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVmIHZhbHVlCisgICAgdHJ1
ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgInRydWUiCisgIGVuZAorZW5kCisKK2NsYXNz
IEZhbHNlIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQorICAgIHN1cGVyKG5pbCkKKyAg
ZW5kCisgIAorICBAQGluc3RhbmNlID0gRmFsc2UubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5j
ZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICBmYWxzZQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgImZhbHNlIgorICBlbmQKK2VuZAorCitjbGFzcyBUcnVl
Q2xhc3MKKyAgZGVmIGFzTm9kZQorICAgIFRydWUuaW5zdGFuY2UKKyAgZW5kCitlbmQKKworY2xh
c3MgRmFsc2VDbGFzcworICBkZWYgYXNOb2RlCisgICAgRmFsc2UuaW5zdGFuY2UKKyAgZW5kCitl
bmQKKworY2xhc3MgU2V0dGluZyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAg
ZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdb
bmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFNldHRpbmcubmV3KGNvZGVPcmlnaW4sIG5h
bWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIg
OmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmln
aHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQg
PSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQor
ICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFuZC5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
KCN7bGVmdC5kdW1wfSBhbmQgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE9y
IDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBs
ZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVu
CisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAg
T3IubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gb3IgI3tyaWdodC5kdW1wfSkiCisg
IGVuZAorZW5kCisKK2NsYXNzIE5vdCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBjaGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0Bs
ZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTm90Lm5ldyhj
b2RlT3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIo
bm90ICN7Y2hpbGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwIDwgTm9DaGlsZHJl
bgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRza2lwIgorICBlbmQKK2VuZAorCitjbGFzcyBJ
ZlRoZW5FbHNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6cHJlZGljYXRlLCA6dGhlbkNhc2UKKyAg
YXR0cl9hY2Nlc3NvciA6ZWxzZUNhc2UKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IHByZWRpY2F0ZSwgdGhlbkNhc2UpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAcHJlZGlj
YXRlID0gcHJlZGljYXRlCisgICAgQHRoZW5DYXNlID0gdGhlbkNhc2UKKyAgICBAZWxzZUNhc2Ug
PSBTa2lwLm5ldyhjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIGlm
IEBlbHNlQ2FzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZSwgQGVsc2VDYXNlXQorICAg
IGVsc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2VdCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIG1hcENoaWxkcmVuCisgICAgSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxk
IEBwcmVkaWNhdGUpLCAoeWllbGQgQHRoZW5DYXNlKSwgKHlpZWxkIEBlbHNlQ2FzZSkpCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiaWYgI3twcmVkaWNhdGUuZHVtcH1cbiIgKyB0aGVuQ2Fz
ZS5kdW1wICsgIlxuZWxzZVxuIiArIGVsc2VDYXNlLmR1bXAgKyAiXG5lbmQiCisgIGVuZAorZW5k
CisKK2NsYXNzIE1hY3JvIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOnZhcmlhYmxlcywg
OmJvZHkKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywg
Ym9keSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAgIEB2YXJp
YWJsZXMgPSB2YXJpYWJsZXMKKyAgICBAYm9keSA9IGJvZHkKKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBAdmFyaWFibGVzICsgW0Bib2R5XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbgorICAgIE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQHZhcmlhYmxlcy5tYXB7fHZ8
IHlpZWxkIHZ9LCAoeWllbGQgQGJvZHkpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIm1h
Y3JvICN7bmFtZX0oIiArIHZhcmlhYmxlcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikg
KyAiKVxuIiArIGJvZHkuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm9D
YWxsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBuYW1lID0gbmFtZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgICAgcmFpc2Ug
dW5sZXNzIEBvcGVyYW5kcworICAgIEBvcGVyYW5kcy5lYWNoe3x2fCByYWlzZSB1bmxlc3Mgdn0K
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAb3BlcmFuZHMKKyAgZW5kCisgIAorICBk
ZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBAbmFt
ZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHQj
e25hbWV9KCIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKSIK
KyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFj
a2VuZHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YmFja2VuZHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAieDg2
IgorCitCQUNLRU5EUyA9CisgIFsKKyAgICJYODYiLAorICAgIkFSTXY3IgorICBdCisKK1dPUktJ
TkdfQkFDS0VORFMgPQorICBbCisgICAiWDg2IgorICBdCisKK0JBQ0tFTkRfUEFUVEVSTiA9IFJl
Z2V4cC5uZXcoJ1xcQSgnICsgQkFDS0VORFMuam9pbignKXwoJykgKyAnKVxcWicpCisKK2NsYXNz
IE5vZGUKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgc2VuZCgibG93ZXIiICsgbmFtZSkKKyAgZW5k
CitlbmQKKworIyBPdmVycmlkZXMgZm9yIGxvd2VyKCkgZm9yIHRob3NlIG5vZGVzIHRoYXQgYXJl
IGJhY2tlbmQtYWdub3N0aWMKKworZGVmIHNhbml0aXplTGFiZWxOYW1lKG5hbWUpCisgICMgU29t
ZSBwbGF0Zm9ybXMgZG9uJ3Qgd2FudCB0aGUgbGVhZGluZyAiXyIuIElmIHdlIGV2ZXIgd2FudCB0
byBkbyBzb21ldGhpbmcKKyAgIyBhYm91dCB0aGF0LCBpdCB3b3VsZCBiZSBoZXJlLgorICBuYW1l
CitlbmQKKworY2xhc3MgTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzICIu
Z2xvYmwgI3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxmLm5hbWUpfSIKKyAgICAkYXNtLnB1dHMgIiN7
c2FuaXRpemVMYWJlbE5hbWUoc2VsZi5uYW1lKX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2Nh
bExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAgICRhc20ucHV0cyAiTF9vZmZsaW5lYXNtXyN7
c2VsZi5uYW1lWzEuLi0xXX06IgorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwCisgIGRlZiBsb3dl
cihuYW1lKQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXIobmFtZSkK
KyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBub2RlLmxvd2VyKG5hbWUp
CisgICAgfQorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9v
ZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg3IEBACisjIS91c3Iv
YmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6
IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJl
ICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1
aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworaW5wdXRGbG5tID0gQVJHVi5z
aGlmdAorb3V0cHV0RmxubSA9IEFSR1Yuc2hpZnQKKworZGVmIGVtaXRNYWdpY051bWJlcgorICBP
RkZTRVRfTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICB8IG51bWJlciB8CisgICAgJG91dHB1dC5w
dXRzICIje251bWJlcn0sIgorICB9CitlbmQKKworaW5wdXREYXRhID0gSU86OnJlYWQoaW5wdXRG
bG5tKQoraW5wdXRIYXNoID0gRGlnZXN0OjpTSEExLmhleGRpZ2VzdChpbnB1dERhdGEpCisKK2lm
IEZpbGVUZXN0LmV4aXN0PyBvdXRwdXRGbG5tCisgIEZpbGUub3BlbihvdXRwdXRGbG5tLCAiciIp
IHsKKyAgICB8IGlucCB8CisgICAgZmlyc3RMaW5lID0gaW5wLmdldHMKKyAgICBpZiBmaXJzdExp
bmUgYW5kIGZpcnN0TGluZS5jaG9tcCA9PSAiLy8gb2ZmbGluZWFzbSBpbnB1dCBoYXNoOiAje2lu
cHV0SGFzaH0iCisgICAgICAkc3RkZXJyLnB1dHMgIk5vdGhpbmcgY2hhbmdlZC4iCisgICAgICBl
eGl0IDAKKyAgICBlbmQKKyAgfQorZW5kCisKK29yaWdpbmFsQVNUID0gcGFyc2UobGV4KGlucHV0
RGF0YSkpCisKK0ZpbGUub3BlbihvdXRwdXRGbG5tLCAidyIpIHsKKyAgfCBvdXRwIHwKKyAgJG91
dHB1dCA9IG91dHAKKyAgb3V0cC5wdXRzICIvLyBvZmZsaW5lYXNtIGlucHV0IGhhc2g6ICN7aW5w
dXRIYXNofSIKKyAgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKG9yaWdpbmFsQVNUKSB7Cisg
ICAgfCBzZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8CisgICAgb2Zmc2V0c0xpc3QgPSBh
c3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CisgICAgc2l6ZXNMaXN0ID0gYXN0LmZp
bHRlcihTaXplb2YpLnVuaXEuc29ydAorICAgIAorICAgIGxlbmd0aCA9IChPRkZTRVRfTUFHSUNf
TlVNQkVSUy5zaXplICsgMSkgKiAoMSArIG9mZnNldHNMaXN0LnNpemUgKyBzaXplc0xpc3Quc2l6
ZSkKKyAgICAKKyAgICBvdXRwLnB1dHMgInN0YXRpYyBjb25zdCB1bnNpZ25lZCBleHRyYWN0b3JU
YWJsZVsje2xlbmd0aH1dID0geyIKKyAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICBvdXRwLnB1dHMg
IiN7aW5kZXh9LCIKKyAgICBvZmZzZXRzTGlzdC5lYWNoIHsKKyAgICAgIHwgb2Zmc2V0IHwKKyAg
ICAgIGVtaXRNYWdpY051bWJlcgorICAgICAgb3V0cC5wdXRzICJPRkZMSU5FX0FTTV9PRkZTRVRP
Rigje29mZnNldC5zdHJ1Y3R9LCAje29mZnNldC5maWVsZH0pLCIKKyAgICB9CisgICAgc2l6ZXNM
aXN0LmVhY2ggeworICAgICAgfCBvZmZzZXQgfAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAg
ICBvdXRwLnB1dHMgInNpemVvZigje29mZnNldC5zdHJ1Y3R9KSwiCisgICAgfQorICAgIG91dHAu
cHV0cyAifTsiCisgIH0KK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L2luc3RydWN0aW9ucy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTg4IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitNQUNST19JTlNU
UlVDVElPTlMgPQorICBbCisgICAiYWRkaSIsCisgICAiYW5kaSIsCisgICAibHNoaWZ0aSIsCisg
ICAibXVsaSIsCisgICAibmVnaSIsCisgICAibm90aSIsCisgICAib3JpIiwKKyAgICJyc2hpZnRp
IiwKKyAgICJ1cnNoaWZ0aSIsCisgICAic3ViaSIsCisgICAieG9yaSIsCisgICAibG9hZGkiLAor
ICAgImxvYWRiIiwKKyAgICJsb2FkaCIsCisgICAic3RvcmVpIiwKKyAgICJzdG9yZWIiLAorICAg
ImxvYWRkIiwKKyAgICJtb3ZlZCIsCisgICAic3RvcmVkIiwKKyAgICJhZGRkIiwKKyAgICJkaXZk
IiwKKyAgICJzdWJkIiwKKyAgICJtdWxkIiwKKyAgICJzcXJ0ZCIsCisgICAiY2kyZCIsCisgICAi
ZmlpMmQiLCAjIHVzYWdlOiBmaWkyZCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4s
IDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+LCA8ZnByPgorICAgImZkMmlpIiwgIyB1
c2FnZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdw
ciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4KKyAgICJiZGVxIiwKKyAgICJiZG5lcSIsCisg
ICAiYmRndCIsCisgICAiYmRndGVxIiwKKyAgICJiZGx0IiwKKyAgICJiZGx0ZXEiLAorICAgImJk
ZXF1biIsCisgICAiYmRuZXF1biIsCisgICAiYmRndHVuIiwKKyAgICJiZGd0ZXF1biIsCisgICAi
YmRsdHVuIiwKKyAgICJiZGx0ZXF1biIsCisgICAiYnRkMmkiLAorICAgInRkMmkiLAorICAgImJj
ZDJpIiwKKyAgICJtb3ZkeiIsCisgICAicG9wIiwKKyAgICJwdXNoIiwKKyAgICJtb3ZlIiwKKyAg
ICJzeGkycCIsCisgICAienhpMnAiLAorICAgIm5vcCIsCisgICAiYmllcSIsCisgICAiYmluZXEi
LAorICAgImJpYSIsCisgICAiYmlhZXEiLAorICAgImJpYiIsCisgICAiYmliZXEiLAorICAgImJp
Z3QiLAorICAgImJpZ3RlcSIsCisgICAiYmlsdCIsCisgICAiYmlsdGVxIiwKKyAgICJiYmVxIiwK
KyAgICJiYm5lcSIsCisgICAiYmJhIiwKKyAgICJiYmFlcSIsCisgICAiYmJiIiwKKyAgICJiYmJl
cSIsCisgICAiYmJndCIsCisgICAiYmJndGVxIiwKKyAgICJiYmx0IiwKKyAgICJiYmx0ZXEiLAor
ICAgImJ0aW8iLAorICAgImJ0aXMiLAorICAgImJ0aXoiLAorICAgImJ0aW56IiwKKyAgICJidGJv
IiwKKyAgICJidGJzIiwKKyAgICJidGJ6IiwKKyAgICJidGJueiIsCisgICAiam1wIiwKKyAgICJi
YWRkaW8iLAorICAgImJhZGRpcyIsCisgICAiYmFkZGl6IiwKKyAgICJiYWRkaW56IiwKKyAgICJi
c3ViaW8iLAorICAgImJzdWJpcyIsCisgICAiYnN1Yml6IiwKKyAgICJic3ViaW56IiwKKyAgICJi
bXVsaW8iLAorICAgImJtdWxpcyIsCisgICAiYm11bGl6IiwKKyAgICJibXVsaW56IiwKKyAgICJi
b3JpbyIsCisgICAiYm9yaXMiLAorICAgImJvcml6IiwKKyAgICJib3JpbnoiLAorICAgImJyZWFr
IiwKKyAgICJjYWxsIiwKKyAgICJyZXQiLAorICAgImNpZXEiLAorICAgImNpbmVxIiwKKyAgICJj
aWEiLAorICAgImNpYWVxIiwKKyAgICJjaWIiLAorICAgImNpYmVxIiwKKyAgICJjaWd0IiwKKyAg
ICJjaWd0ZXEiLAorICAgImNpbHQiLAorICAgImNpbHRlcSIsCisgICAidGlvIiwKKyAgICJ0aXMi
LAorICAgInRpeiIsCisgICAidGlueiIsCisgICAidGJvIiwKKyAgICJ0YnMiLAorICAgInRieiIs
CisgICAidGJueiIsCisgICAicGVlayIsCisgICAicG9rZSIsCisgICAiYnBlcSIsCisgICAiYnBu
ZXEiLAorICAgImJwYSIsCisgICAiYnBhZXEiLAorICAgImJwYiIsCisgICAiYnBiZXEiLAorICAg
ImJwZ3QiLAorICAgImJwZ3RlcSIsCisgICAiYnBsdCIsCisgICAiYnBsdGVxIiwKKyAgICJhZGRw
IiwKKyAgICJhbmRwIiwKKyAgICJvcnAiLAorICAgInN1YnAiLAorICAgInhvcnAiLAorICAgImxv
YWRwIiwKKyAgICJjcGVxIiwKKyAgICJjcG5lcSIsCisgICAiY3BhIiwKKyAgICJjcGFlcSIsCisg
ICAiY3BiIiwKKyAgICJjcGJlcSIsCisgICAiY3BndCIsCisgICAiY3BndGVxIiwKKyAgICJjcGx0
IiwKKyAgICJjcGx0ZXEiLAorICAgInN0b3JlcCIsCisgICAiYnRwbyIsCisgICAiYnRwcyIsCisg
ICAiYnRweiIsCisgICAiYnRwbnoiLAorICAgImJhZGRwbyIsCisgICAiYmFkZHBzIiwKKyAgICJi
YWRkcHoiLAorICAgImJhZGRwbnoiCisgIF0KKworWDg2X0lOU1RSVUNUSU9OUyA9CisgIFsKKyAg
ICJjZHFpIiwKKyAgICJpZGl2aSIKKyAgXQorCitJTlNUUlVDVElPTlMgPSBNQUNST19JTlNUUlVD
VElPTlMgKyBYODZfSU5TVFJVQ1RJT05TCisKK0lOU1RSVUNUSU9OX1BBVFRFUk4gPSBSZWdleHAu
bmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFu
dHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zm
c2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgwZmY1ZTc1NSBdCisKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNTYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIm9mZnNldF9leHRyYWN0b3JfY29uc3Rh
bnRzIgorCitPRkZTRVRfTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgwZmY1ZTc1NSBd
CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG9mZnNldHNMaXN0KGFzdCkg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
c2l6ZXNMaXN0KGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFJldHVybnMgYSBsaXN0IG9mIG9mZnNl
dHMgYW5kIHNpemVzIHVzZWQgYnkgdGhlIEFTVC4gICAgICAgICAgICAgICAgICMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBvZmZzZXRzTGlzdChhc3QpCisgIGFzdC5m
aWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKK2VuZAorCitkZWYgc2l6ZXNMaXN0KGFzdCkK
KyAgYXN0LmZpbHRlcihTaXplb2YpLnVuaXEuc29ydAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgoYXN0LCBmaWxl
KSAtPiAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgIFtvZmZzZXRzLCBpbmRleF0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIFBhcnNlcyB0aGUgb2Zmc2V0cyBmcm9tIGEgZmlsZSBhbmQgcmV0dXJucyBh
IGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgdGhlICMKKyMgaW5kZXggb2YgdGhlIGNvbmZpZ3VyYXRpb24g
dGhhdCBpcyB2YWxpZCBpbiB0aGlzIGJ1aWxkIHRhcmdldC4gICAgICAgIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgo
ZmlsZSkKKyAgaW5kZXggPSBuaWwKKyAgb2Zmc2V0cyA9IFtdCisgIGVuZGlhbm5lc3NNYXJrZXJC
eXRlcyA9IG5pbAorICAKKyAgZGVmIHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgIGJ5dGVz
ID0gW10KKyAgICA0LnRpbWVzIHsKKyAgICAgIGJ5dGVzIDw8IGlucC5nZXRieXRlCisgICAgfQor
ICAgIAorICAgIGlmIGVuZGlhbm5lc3MgPT0gOmxpdHRsZQorICAgICAgIyBMaXR0bGUgZW5kaWFu
CisgICAgICAoYnl0ZXNbMF0gPDwgMCB8CisgICAgICAgYnl0ZXNbMV0gPDwgOCB8CisgICAgICAg
Ynl0ZXNbMl0gPDwgMTYgfAorICAgICAgIGJ5dGVzWzNdIDw8IDI0KQorICAgIGVsc2UKKyAgICAg
ICMgQmlnIGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDI0IHwKKyAgICAgICBieXRlc1sxXSA8
PCAxNiB8CisgICAgICAgYnl0ZXNbMl0gPDwgOCB8CisgICAgICAgYnl0ZXNbM10gPDwgMCkKKyAg
ICBlbmQKKyAgZW5kCisgIAorICBbOmxpdHRsZSwgOmJpZ10uZWFjaCB7CisgICAgfCBlbmRpYW5u
ZXNzIHwKKyAgICBtYWdpY0J5dGVzID0gW10KKyAgICBNQUdJQ19OVU1CRVJTLmVhY2ggeworICAg
ICAgfCBudW1iZXIgfAorICAgICAgY3VycmVudEJ5dGVzID0gW10KKyAgICAgIDQudGltZXMgewor
ICAgICAgICBjdXJyZW50Qnl0ZXMgPDwgKG51bWJlciAmIDB4ZmYpCisgICAgICAgIG51bWJlciA+
Pj0gOAorICAgICAgfQorICAgICAgaWYgZW5kaWFubmVzcyA9PSA6YmlnCisgICAgICAgIGN1cnJl
bnRCeXRlcy5yZXZlcnNlIQorICAgICAgZW5kCisgICAgICBtYWdpY0J5dGVzICs9IGN1cnJlbnRC
eXRlcworICAgIH0KKyAgICAKKyAgICBGaWxlLm9wZW4oZmlsZSwgInIiKSB7CisgICAgICB8IGlu
cCB8CisgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgbG9vcCB7CisgICAgICAgIGJ5dGUg
PSBpbnAuZ2V0Ynl0ZQorICAgICAgICBicmVhayB1bmxlc3MgYnl0ZQorICAgICAgICBpZiBieXRl
ID09IG1hZ2ljQnl0ZXNbd2hlcmVJbk1hcmtlcl0KKyAgICAgICAgICB3aGVyZUluTWFya2VyICs9
IDEKKyAgICAgICAgICBpZiB3aGVyZUluTWFya2VyID09IG1hZ2ljQnl0ZXMuc2l6ZQorICAgICAg
ICAgICAgIyBXZSBoYXZlIGEgbWF0Y2ghIElmIHdlIGhhdmUgbm90IHlldCByZWFkIHRoZSBlbmRp
YW5uZXNzIG1hcmtlciBhbmQgaW5kZXgsCisgICAgICAgICAgICAjIHRoZW4gcmVhZCB0aG9zZSBu
b3c7IG90aGVyd2lzZSByZWFkIGFuIG9mZnNldC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAg
aWYgbm90IGluZGV4CisgICAgICAgICAgICAgIGluZGV4ID0gcmVhZEludChlbmRpYW5uZXNzLCBp
bnApCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIG9mZnNldHMgPDwgcmVhZEludChl
bmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAg
ICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICAgIGVuZAorICAgICAgfQorICAgIH0KKyAgICAK
KyAgICBicmVhayBpZiBpbmRleAorICB9CisgIAorICByYWlzZSB1bmxlc3MgaW5kZXgKKyAgCisg
IFtvZmZzZXRzLCBpbmRleF0KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkgLT4gW29mZnNldHMsIHNpemVz
XSAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQnVpbGRzIGEgbWFwcGluZyBi
ZXR3ZWVuIFN0cnVjdE9mZnNldCBub2RlcyBhbmQgdGhlaXIgdmFsdWVzLiAgICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGJ1aWxkT2Zmc2V0c01hcChhc3Qs
IG9mZnNldHNMaXN0KQorICBvZmZzZXRzTWFwID0ge30KKyAgc2l6ZXNNYXAgPSB7fQorICBhc3RP
ZmZzZXRzTGlzdCA9IG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0U2l6ZXNMaXN0ID0gc2l6ZXNMaXN0
KGFzdCkKKyAgcmFpc2UgdW5sZXNzIGFzdE9mZnNldHNMaXN0LnNpemUgKyBhc3RTaXplc0xpc3Qu
c2l6ZSA9PSBvZmZzZXRzTGlzdC5zaXplCisgIG9mZnNldHNMaXN0KGFzdCkuZWFjaF93aXRoX2lu
ZGV4IHsKKyAgICB8IHN0cnVjdE9mZnNldCwgaW5kZXggfAorICAgIG9mZnNldHNNYXBbc3RydWN0
T2Zmc2V0XSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgc2l6ZXNMaXN0KGFzdCkuZWFjaF93
aXRoX2luZGV4IHsKKyAgICB8IHNpemVvZiwgaW5kZXggfAorICAgIHNpemVzTWFwW3NpemVvZl0g
PSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIFtvZmZzZXRzTWFwLCBzaXplc01hcF0KK2VuZAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiaW5zdHJ1Y3Rpb25zIgorcmVxdWly
ZSAicmVnaXN0ZXJzIgorCitjbGFzcyBUb2tlbgorICBhdHRyX3JlYWRlciA6Y29kZU9yaWdpbiwg
OnN0cmluZworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RyaW5nKQorICAgIEBj
b2RlT3JpZ2luID0gY29kZU9yaWdpbgorICAgIEBzdHJpbmcgPSBzdHJpbmcKKyAgZW5kCisgIAor
ICBkZWYgPT0ob3RoZXIpCisgICAgaWYgb3RoZXIuaXNfYT8gVG9rZW4KKyAgICAgIEBzdHJpbmcg
PT0gb3RoZXIuc3RyaW5nCisgICAgZWxzZQorICAgICAgQHN0cmluZyA9PSBvdGhlcgorICAgIGVu
ZAorICBlbmQKKyAgCisgIGRlZiA9fihvdGhlcikKKyAgICBAc3RyaW5nID1+IG90aGVyCisgIGVu
ZAorICAKKyAgZGVmIHRvX3MKKyAgICAiI3tAc3RyaW5nLmluc3BlY3R9IGF0IGxpbmUgI3tjb2Rl
T3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBpZiBj
b21tZW50LmVtcHR5PworICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9IgorICAgIGVs
c2UKKyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfTogI3tjb21tZW50WzBdfSIKKyAg
ICBlbmQKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
VGhlIGxleGVyLiBUYWtlcyBhIHN0cmluZyBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0b2tlbnMu
ICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGxl
eChzdHIpCisgIHJlc3VsdCA9IFtdCisgIGxpbmVOdW1iZXIgPSAxCisgIHdoaWxlIG5vdCBzdHIu
ZW1wdHk/CisgICAgY2FzZSBzdHIKKyAgICB3aGVuIC9cQVwjKFteXG5dKikvCisgICAgICAjIGNv
bW1lbnQsIGlnbm9yZQorICAgIHdoZW4gL1xBXG4vCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3
KGxpbmVOdW1iZXIsICQmKQorICAgICAgbGluZU51bWJlciArPSAxCisgICAgd2hlbiAvXEFbYS16
QS1aXShbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJl
ciwgJCYpCisgICAgd2hlbiAvXEFcLihbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBU
b2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFfKFthLXpBLVowLTlfXSopLwor
ICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQShb
IFx0XSspLworICAgICAgIyB3aGl0ZXNwYWNlLCBpZ25vcmUKKyAgICB3aGVuIC9cQTB4KFswLTlh
LWZBLUZdKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLmhleC50
b19zKQorICAgIHdoZW4gL1xBMChbMC03XSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhs
aW5lTnVtYmVyLCAkJi5vY3QudG9fcykKKyAgICB3aGVuIC9cQShbMC05XSspLworICAgICAgcmVz
dWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQTo6LworICAgICAg
cmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVs6LFwoXClc
W1xdPVwrXC0qXS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisg
ICAgZWxzZQorICAgICAgcmFpc2UgIkxleGVyIGVycm9yIGF0IGxpbmUgbnVtYmVyICN7bGluZU51
bWJlcn0sIHVuZXhwZWN0ZWQgc2VxdWVuY2UgI3tzdHJbMC4uMjBdLmluc3BlY3R9IgorICAgIGVu
ZAorICAgIHN0ciA9ICR+LnBvc3RfbWF0Y2gKKyAgZW5kCisgIHJlc3VsdAorZW5kCisKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRva2VuIGlkZW50aWZpY2F0aW9uLiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBpc1JlZ2lzdGVyKHRva2VuKQorICB0b2tlbiA9
fiBSRUdJU1RFUl9QQVRURVJOCitlbmQKKworZGVmIGlzSW5zdHJ1Y3Rpb24odG9rZW4pCisgIHRv
a2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNLZXl3b3JkKHRva2VuKQor
ICB0b2tlbiA9fiAvXEEoKHRydWUpfChmYWxzZSl8KGlmKXwodGhlbil8KGVsc2UpfChlbHNpZil8
KGVuZCl8KGFuZCl8KG9yKXwobm90KXwobWFjcm8pfChjb25zdCl8KHNpemVvZil8KGVycm9yKSlc
Wi8gb3IKKyAgICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOIG9yCisgICAgdG9rZW4gPX4gSU5T
VFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0lkZW50aWZpZXIodG9rZW4pCisgIHRva2Vu
ID1+IC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopXFovIGFuZCBub3QgaXNLZXl3b3JkKHRva2Vu
KQorZW5kCisKK2RlZiBpc0xhYmVsKHRva2VuKQorICB0b2tlbiA9fiAvXEFfKFthLXpBLVowLTlf
XSopXFovCitlbmQKKworZGVmIGlzTG9jYWxMYWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXC4o
W2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNWYXJpYWJsZSh0b2tlbikKKyAgaXNJZGVu
dGlmaWVyKHRva2VuKSBvciBpc1JlZ2lzdGVyKHRva2VuKQorZW5kCisKK2RlZiBpc0ludGVnZXIo
dG9rZW4pCisgIHRva2VuID1+IC9cQVswLTldLworZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIFRoZSBwYXJzZXIuIFRha2VzIGFuIGFycmF5IG9mIHRva2VucyBhbmQg
cmV0dXJucyBhbiBBU1QuIE1ldGhvZHMgICAgICMKKyMgb3RoZXIgdGhhbiBwYXJzZSh0b2tlbnMp
IGFyZSBub3QgZm9yIHB1YmxpYyBjb25zdW1wdGlvbi4gICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgUGFyc2VyCisgIGRlZiBpbml0aWFsaXpl
KHRva2VucykKKyAgICBAdG9rZW5zID0gdG9rZW5zCisgICAgQGlkeCA9IDAKKyAgZW5kCisgIAor
ICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBpZiBAdG9rZW5zW0BpZHhdCisgICAgICBA
dG9rZW5zW0BpZHhdLnBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgZWxzZQorICAgICAgaWYgY29t
bWVudC5lbXB0eT8KKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlIgor
ICAgICAgZWxzZQorICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZpbGU6ICN7
Y29tbWVudFswXX0iCisgICAgICBlbmQKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgY29uc3Vt
ZShyZWdleHApCisgICAgaWYgcmVnZXhwCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5z
W0BpZHhdID1+IHJlZ2V4cAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEBpZHgg
PT0gQHRva2Vucy5sZW5ndGgKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgZW5kCisgIAorICBk
ZWYgc2tpcE5ld0xpbmUKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgIEBp
ZHggKz0gMQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZUF0b20KKyAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICJub3QiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHBhcnNl
UHJlZGljYXRlQXRvbQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZQor
ICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgIEBpZHgg
Kz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAidHJ1ZSIKKyAg
ICAgIHJlc3VsdCA9IFRydWUuaW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0
CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZmFsc2UiCisgICAgICByZXN1bHQgPSBGYWxz
ZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lk
ZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gU2V0dGluZy5mb3JOYW1lKEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQK
KyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBbmQKKyAgICByZXN1bHQgPSBwYXJzZVBy
ZWRpY2F0ZUF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJhbmQiCisgICAgICBjb2Rl
T3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAg
IHNraXBOZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQXRvbQorICAgICAgcmVz
dWx0ID0gQW5kLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJl
c3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZQorICAgICMgc29tZSBleGFtcGxl
cyBvZiBwcmVjZWRlbmNlOgorICAgICMgbm90IGEgYW5kIGIgLT4gKG5vdCBhKSBhbmQgYgorICAg
ICMgYSBhbmQgYiBvciBjIC0+IChhIGFuZCBiKSBvciBjCisgICAgIyBhIG9yIGIgYW5kIGMgLT4g
YSBvciAoYiBhbmQgYykKKyAgICAKKyAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAg
IHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIm9yIgorICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAg
ICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAgICAgcmVzdWx0ID0gT3IubmV3KGNvZGVP
cmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAg
ZGVmIHBhcnNlVmFyaWFibGUKKyAgICBpZiBpc1JlZ2lzdGVyKEB0b2tlbnNbQGlkeF0pCisgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID1+IEZQUl9QQVRURVJOCisgICAgICAgIHJlc3VsdCA9IEZQUmVn
aXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5z
dHJpbmcpCisgICAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IFJlZ2lzdGVySUQuZm9yTmFtZShA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgZW5k
CisgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICByZXN1bHQgPSBW
YXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5z
dHJpbmcpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICAgIEBpZHggKz0g
MQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUFkZHJlc3Mob2Zmc2V0KQorICAg
IHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgY29kZU9yaWdpbiA9
IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIAorICAgICMgVGhyZWUgcG9zc2liaWxpdGll
czoKKyAgICAjIFtdICAgICAgIC0+IEFic29sdXRlQWRkcmVzcworICAgICMgW2FdICAgICAgLT4g
QWRkcmVzcworICAgICMgW2EsYl0gICAgLT4gQmFzZUluZGV4IHdpdGggc2NhbGUgPSAxCisgICAg
IyBbYSxiLGNdICAtPiBCYXNlSW5kZXgKKyAgICAKKyAgICBAaWR4ICs9IDEKKyAgICBpZiBAdG9r
ZW5zW0BpZHhdID09ICJdIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXR1cm4gQWJzb2x1dGVB
ZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXQpCisgICAgZW5kCisgICAgYSA9IHBhcnNlVmFy
aWFibGUKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgcmVzdWx0ID0gQWRkcmVz
cy5uZXcoY29kZU9yaWdpbiwgYSwgb2Zmc2V0KQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3Ig
dW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIGIgPSBw
YXJzZVZhcmlhYmxlCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICByZXN1
bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIDEsIG9mZnNldCkKKyAgICAgIGVs
c2UKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIFsiMSIsICIyIiwgIjQiLCAi
OCJdLm1lbWJlcj8gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgYyA9IEB0b2tlbnNbQGlk
eF0uc3RyaW5nLnRvX2kKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXco
Y29kZU9yaWdpbiwgYSwgYiwgYywgb2Zmc2V0KQorICAgICAgZW5kCisgICAgZW5kCisgICAgQGlk
eCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQ29sb25Db2xvbgorICAg
IHNraXBOZXdMaW5lCisgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgor
ICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgbmFt
ZXMgPSBbQHRva2Vuc1tAaWR4XS5zdHJpbmddCisgICAgQGlkeCArPSAxCisgICAgd2hpbGUgQHRv
a2Vuc1tAaWR4XSA9PSAiOjoiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICBuYW1lcyA8PCBAdG9rZW5zW0Bp
ZHhdLnN0cmluZworICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgICAgcmFpc2UgaWYgbmFtZXMu
ZW1wdHk/CisgICAgW2NvZGVPcmlnaW4sIG5hbWVzXQorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4
cHJlc3Npb25BdG9tCisgICAgc2tpcE5ld0xpbmUKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIt
IgorICAgICAgQGlkeCArPSAxCisgICAgICBOZWdJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeCAt
IDFdLmNvZGVPcmlnaW4sIHBhcnNlRXhwcmVzc2lvbkF0b20pCisgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNz
aW9uCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAg
QGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0ludGVnZXIgQHRva2Vuc1tAaWR4
XQorICAgICAgcmVzdWx0ID0gSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4s
IEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3Vs
dAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICBjb2RlT3JpZ2lu
LCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAgaWYgbmFtZXMuc2l6ZSA+IDEKKyAgICAg
ICAgU3RydWN0T2Zmc2V0LmZvckZpZWxkKGNvZGVPcmlnaW4sIG5hbWVzWzAuLi0yXS5qb2luKCc6
OicpLCBuYW1lc1stMV0pCisgICAgICBlbHNlCisgICAgICAgIFZhcmlhYmxlLmZvck5hbWUoY29k
ZU9yaWdpbiwgbmFtZXNbMF0pCisgICAgICBlbmQKKyAgICBlbHNpZiBpc1JlZ2lzdGVyIEB0b2tl
bnNbQGlkeF0KKyAgICAgIHBhcnNlVmFyaWFibGUKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJzaXplb2YiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0gcGFy
c2VDb2xvbkNvbG9uCisgICAgICBTaXplb2YuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lcy5qb2lu
KCc6OicpKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgZW5kCisgIAor
ICBkZWYgcGFyc2VFeHByZXNzaW9uTXVsCisgICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBw
YXJzZUV4cHJlc3Npb25BdG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1
bHQgPSBNdWxJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1
bHQsIHBhcnNlRXhwcmVzc2lvbkF0b20pCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAg
ICBlbmQKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgY291bGRCZUV4cHJl
c3Npb24KKyAgICBAdG9rZW5zW0BpZHhdID09ICItIiBvciBAdG9rZW5zW0BpZHhdID09ICJzaXpl
b2YiIG9yIGlzSW50ZWdlcihAdG9rZW5zW0BpZHhdKSBvciBpc1ZhcmlhYmxlKEB0b2tlbnNbQGlk
eF0pIG9yIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVz
c2lvbgorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uTXVsCisg
ICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKyIgb3IgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAg
ICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIisiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBy
ZXN1bHQgPSBBZGRJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCBy
ZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0g
Ii0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBTdWJJbW1lZGlhdGVzLm5l
dyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11
bCkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJl
c3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZU9wZXJhbmQoY29tbWVudCkKKyAgICBpZiBjb3Vs
ZEJlRXhwcmVzc2lvbgorICAgICAgZXhwciA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgICAgcGFyc2VBZGRyZXNzKGV4cHIpCisgICAgICBlbHNl
CisgICAgICAgIGV4cHIKKyAgICAgIGVuZAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlsi
CisgICAgICBwYXJzZUFkZHJlc3MoSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4sIDApKQorICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0g
TGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgTGFiZWwuZm9yTmFt
ZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAg
IEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNMb2NhbExhYmVsIEB0b2tlbnNb
QGlkeF0KKyAgICAgIHJlc3VsdCA9IExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgTG9jYWxMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdp
biwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQK
KyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yKGNvbW1lbnQpCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICBza2lwTmV3TGluZQorICAgIGNvbnN1bWUo
L1xBXChcWi8pCisgICAgdmFyaWFibGVzID0gW10KKyAgICBsb29wIHsKKyAgICAgIHNraXBOZXdM
aW5lCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAg
ICAgICB2YXJpYWJsZXMgPDwgVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tp
cE5ld0xpbmUKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIs
IgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJv
cgorICAgICAgICBlbmQKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvcgorICAgICAgZW5k
CisgICAgfQorICAgIHZhcmlhYmxlcworICBlbmQKKyAgCisgIGRlZiBwYXJzZVNlcXVlbmNlKGZp
bmFsLCBjb21tZW50KQorICAgIGZpcnN0Q29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbgorICAgIGxpc3QgPSBbXQorICAgIGxvb3AgeworICAgICAgaWYgKEBpZHggPT0gQHRva2Vu
cy5sZW5ndGggYW5kIG5vdCBmaW5hbCkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZp
bmFsKQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisg
ICAgICAgICMgaWdub3JlCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAiY29uc3QiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVu
bGVzcyBpc1ZhcmlhYmxlIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJs
ZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcp
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0Bp
ZHhdID09ICI9IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFsdWUgPSBwYXJzZU9wZXJh
bmQoIndoaWxlIGluc2lkZSBvZiBjb25zdCAje3ZhcmlhYmxlLm5hbWV9IikKKyAgICAgICAgbGlz
dCA8PCBDb25zdERlY2wubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgdmFyaWFibGUsIHZh
bHVlKQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZXJyb3IiCisgICAgICAgIGxpc3Qg
PDwgRXJyb3IubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbikKKyAgICAgICAgQGlkeCArPSAx
CisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJpZiIKKyAgICAgICAgY29kZU9yaWdpbiA9
IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tp
cE5ld0xpbmUKKyAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgY29u
c3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBp
ZlRoZW5FbHNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGljYXRlLCBwYXJzZVNl
cXVlbmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJp
ZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAgIGxpc3QgPDwgaWZUaGVuRWxzZQorICAg
ICAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJlbHNpZiIKKyAgICAgICAgICBjb2RlT3JpZ2lu
ID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAg
ICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgICBza2lwTmV3TGlu
ZQorICAgICAgICAgIGVsc2VDYXNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGlj
YXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBp
bnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAgICAgaWZUaGVuRWxz
ZS5lbHNlQ2FzZSA9IGVsc2VDYXNlCisgICAgICAgICAgaWZUaGVuRWxzZSA9IGVsc2VDYXNlCisg
ICAgICAgIGVuZAorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJlbHNlIgorICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBwYXJzZVNlcXVlbmNl
KC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBlbHNlIGNhc2UgZm9yIFwiaWYgI3twcmVkaWNh
dGUuZHVtcH1cIiIpCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJlbmQiCisgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8i
CisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAg
QGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNz
IGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4
XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFj
cm9WYXJpYWJsZXMKKyAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hp
bGUgaW5zaWRlIG9mIG1hY3JvICN7bmFtZX0iKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
bGlzdCA8PCBNYWNyby5uZXcoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAg
ICAgZWxzaWYgaXNJbnN0cnVjdGlvbiBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4g
PSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0u
c3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4
ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQor
ICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLCBhbmQgaXQncyB0aGUgbGFzdCBv
bmUuCisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwg
W10pCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4i
CisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgbGlzdCA8
PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICAjIEl0J3MgZGVmaW5pdGVseSBhbiBpbnN0cnVj
dGlvbiwgYW5kIGl0IGhhcyBhdCBsZWFzdCBvbmUgb3BlcmFuZC4KKyAgICAgICAgICBvcGVyYW5k
cyA9IFtdCisgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9IGZhbHNlCisgICAgICAgICAgbG9vcCB7
CisgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBp
bnN0cnVjdGlvbiAje25hbWV9IikKKyAgICAgICAgICAgIGlmIChub3QgZmluYWwgYW5kIEBpZHgg
PT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisg
ICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24gYW5kIG9mIHRoZSBzZXF1
ZW5jZS4KKyAgICAgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9IHRydWUKKyAgICAgICAgICAgICAg
YnJlYWsKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAg
ICAgICMgSGFzIGFub3RoZXIgb3BlcmFuZC4KKyAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAgICAgIyBUaGUg
ZW5kIG9mIHRoZSBpbnN0cnVjdGlvbi4KKyAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHBhcnNlRXJyb3Io
IkV4cGVjdGVkIGEgY29tbWEsIG5ld2xpbmUsIG9yICN7ZmluYWx9IGFmdGVyICN7b3BlcmFuZHMu
bGFzdC5kdW1wfSIpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICB9CisgICAgICAgICAgbGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAg
ICAgaWYgZW5kT2ZTZXF1ZW5jZQorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICBlbmQKKyAg
ICAgICAgZW5kCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAg
ICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBA
dG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgQHRva2Vu
c1tAaWR4XSA9PSAiKCIKKyAgICAgICAgICAjIE1hY3JvIGludm9jYXRpb24uCisgICAgICAgICAg
QGlkeCArPSAxCisgICAgICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgIHNraXBOZXdMaW5l
CisgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAgICBza2lw
TmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAg
ICAgICAgICAgICAjIEl0J3MgYSBtYWNybyBsYW1iZGEhCisgICAgICAgICAgICAgICAgY29kZU9y
aWdpbklubmVyID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgICAgICAgICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcwor
ICAgICAgICAgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGlu
c2lkZSBvZiBhbm9ueW1vdXMgbWFjcm8gcGFzc2VkIGFzIGFyZ3VtZW50IHRvICN7bmFtZX0iKQor
ICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IE1h
Y3JvLm5ldyhjb2RlT3JpZ2luSW5uZXIsIG5pbCwgdmFyaWFibGVzLCBib2R5KQorICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGls
ZSBpbnNpZGUgb2YgbWFjcm8gY2FsbCB0byAje25hbWV9IikKKyAgICAgICAgICAgICAgZW5kCisg
ICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gIikiCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgYnJlYWsK
KyAgICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHBhcnNlRXJy
b3IgIlVuZXhwZWN0ZWQgI3tAdG9rZW5zW0BpZHhdLnN0cmluZy5pbnNwZWN0fSB3aGlsZSBwYXJz
aW5nIGludm9jYXRpb24gb2YgbWFjcm8gI3tuYW1lfSIKKyAgICAgICAgICAgICAgZW5kCisgICAg
ICAgICAgICB9CisgICAgICAgICAgZW5kCisgICAgICAgICAgbGlzdCA8PCBNYWNyb0NhbGwubmV3
KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFy
c2VFcnJvciAiRXhwZWN0ZWQgXCIoXCIgYWZ0ZXIgI3tuYW1lfSIKKyAgICAgICAgZW5kCisgICAg
ICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0gb3IgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlk
eF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAg
ICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAg
IHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIjoiCisgICAgICAgICMgSXQncyBh
IGxhYmVsLgorICAgICAgICBpZiBpc0xhYmVsIG5hbWUKKyAgICAgICAgICBsaXN0IDw8IExhYmVs
LmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZWxzZQorICAgICAgICAgIGxpc3Qg
PDwgTG9jYWxMYWJlbC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVuZAorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0aW5n
IHRlcm1pbmFsICN7ZmluYWx9ICN7Y29tbWVudH0iCisgICAgICBlbmQKKyAgICB9CisgICAgU2Vx
dWVuY2UubmV3KGZpcnN0Q29kZU9yaWdpbiwgbGlzdCkKKyAgZW5kCitlbmQKKworZGVmIHBhcnNl
KHRva2VucykKKyAgcGFyc2VyID0gUGFyc2VyLm5ldyh0b2tlbnMpCisgIHBhcnNlci5wYXJzZVNl
cXVlbmNlKG5pbCwgIiIpCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vcmVnaXN0ZXJzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworR1BSUyA9CisgIFsKKyAg
ICJ0MCIsCisgICAidDEiLAorICAgInQyIiwKKyAgICJ0MyIsCisgICAidDQiLAorICAgImNmciIs
CisgICAiYTAiLAorICAgImExIiwKKyAgICJyMCIsCisgICAicjEiLAorICAgInNwIgorICBdCisK
K0ZQUlMgPQorICBbCisgICAiZnQwIiwKKyAgICJmdDEiLAorICAgImZ0MiIsCisgICAiZnQzIiwK
KyAgICJmdDQiLAorICAgImZ0NSIsCisgICAiZmEwIiwKKyAgICJmYTEiLAorICAgImZhMiIsCisg
ICAiZmEzIiwKKyAgICJmciIKKyAgXQorCitSRUdJU1RFUlMgPSBHUFJTICsgRlBSUworCitHUFJf
UEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEdQUlMuam9pbignKXwoJykgKyAnKSlcXFon
KQorRlBSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBGUFJTLmpvaW4oJyl8KCcpICsg
JykpXFxaJykKKworUkVHSVNURVJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIFJFR0lT
VEVSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9zZXR0aW5ncy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIy
MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0
IgorcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJ0cmFuc2Zv
cm0iCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGNvbXB1dGVTZXR0aW5n
c0NvbWJpbmF0aW9ucyhhc3QpIC0+IHNldHRpbmdzQ29tYmlhdGlvbnMgICAgICAgICAgICAgICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBDb21wdXRlcyBhbiBhcnJheSBvZiBzZXR0aW5ncyBtYXBzLCB3
aGVyZSBhIHNldHRpbmdzIG1hcCBjb25zdGl0dXRlcyAjCisjIGEgY29uZmlndXJhdGlvbiBmb3Ig
dGhlIGFzc2VtYmx5IGNvZGUgYmVpbmcgZ2VuZXJhdGVkLiBUaGUgbWFwICAgICAgICMKKyMgY29u
dGFpbnMga2V5IHZhbHVlIHBhaXJzIHdoZXJlIGtleXMgYXJlIHNldHRpbmdzIG5hbWVzIChzdHJp
bmdzKSBhbmQgIworIyB0aGUgdmFsdWVzIGFyZSBib29sZWFucyAodHJ1ZSBmb3IgZW5hYmxlZCwg
ZmFsc2UgZm9yIGRpc2FibGVkKS4gICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworCitkZWYgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgc2V0dGluZ3ND
b21iaW5hdGlvbnMgPSBbXQorICAKKyAgZGVmIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0Nv
bWJpbmF0aW9ucywgbWFwU29GYXIsIHJlbWFpbmluZykKKyAgICBpZiByZW1haW5pbmcuZW1wdHk/
CisgICAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA8PCBtYXBTb0ZhcgorICAgICAgcmV0dXJuCisg
ICAgZW5kCisgICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFp
bmluZ1swXV0gPSB0cnVlCisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRp
b25zLCBuZXdNYXAsIHJlbWFpbmluZ1sxLi4tMV0pCisgICAgCisgICAgbmV3TWFwID0gbWFwU29G
YXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSBmYWxzZQorICAgIHNldHRpbmdzQ29t
YmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQor
ICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywge30s
IChhc3QuZmlsdGVyKFNldHRpbmcpLnVuaXEuY29sbGVjdHt8dnwgdi5uYW1lfSArIFsiWDg2Iiwg
IkFSTXY3Il0pLnVuaXEpCisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucworZW5kCisKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGlu
Z3MsIGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgIHwgY29u
Y3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfCAuLi4gfSAgICAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIERldGVybWluZXMgaWYgdGhlIHNldHRpbmdzIGNvbWJp
bmF0aW9uIGlzIHZhbGlkLCBhbmQgaWYgc28sIGNhbGxzICAgICMKKyMgdGhlIGJsb2NrIHdpdGgg
dGhlIGluZm9ybWF0aW9uIHlvdSBuZWVkIHRvIGdlbmVyYXRlIGNvZGUuICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGZvclNldHRpbmdzKGNvbmNy
ZXRlU2V0dGluZ3MsIGFzdCkKKyAgIyBDaGVjayB3aGljaCBhcmNoaXRlY3R1cmVzIHRoaXMgY29t
YmluYXRvciBjbGFpbXMgdG8gc3VwcG9ydC4KKyAgbnVtQ2xhaW1lZEJhY2tlbmRzID0gMAorICBz
ZWxlY3RlZEJhY2tlbmQgPSBuaWwKKyAgQkFDS0VORFMuZWFjaCB7CisgICAgfCBiYWNrZW5kIHwK
KyAgICBpc1N1cHBvcnRlZCA9IGNvbmNyZXRlU2V0dGluZ3NbYmFja2VuZF0KKyAgICByYWlzZSB1
bmxlc3MgaXNTdXBwb3J0ZWQgIT0gbmlsCisgICAgbnVtQ2xhaW1lZEJhY2tlbmRzICs9IGlmIGlz
U3VwcG9ydGVkIHRoZW4gMSBlbHNlIDAgZW5kCisgICAgaWYgaXNTdXBwb3J0ZWQKKyAgICAgIHNl
bGVjdGVkQmFja2VuZCA9IGJhY2tlbmQKKyAgICBlbmQKKyAgfQorICAKKyAgcmV0dXJuIGlmIG51
bUNsYWltZWRCYWNrZW5kcyA+IDEKKyAgCisgICMgUmVzb2x2ZSB0aGUgQVNUIGRvd24gdG8gYSBs
b3ctbGV2ZWwgZm9ybSAobm8gbWFjcm9zIG9yIGNvbmRpdGlvbmFscykuCisgIGxvd0xldmVsQVNU
ID0gYXN0LnJlc29sdmVTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzKQorICAKKyAgeWllbGQgY29u
Y3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIHNlbGVjdGVkQmFja2VuZAorZW5kCisKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmlu
YXRpb24oYXN0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgIHwgY29u
Y3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9ICAgICAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24o
YXN0LCBzZXR0aW5nc0NvbWJpbmF0aW9ucykgeyAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVT
ZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIEV4ZWN1dGVzIHRoZSBnaXZlbiBibG9jayBmb3IgZWFjaCB2YWxp
ZCBzZXR0aW5ncyBjb21iaW5hdGlvbiBpbiB0aGUgICMKKyMgc2V0dGluZ3MgbWFwLiBUaGUgYXN0
IHBhc3NlZCBpbnRvIHRoZSBibG9jayBpcyByZXNvbHZlZCAgICAgICAgICAgICAgIworIyAoYXN0
LnJlc29sdmUpIGFnYWluc3QgdGhlIHNldHRpbmdzLiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIGZpcnN0IGZvcm0gd2lsbCBjYWxsIGNv
bXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIGZvciB5b3UuICAgIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRp
b24oYXN0LCAqb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucykKKyAgcmFpc2UgaWYgb3B0aW9u
YWxTZXR0aW5nc0NvbWJpbmF0aW9ucy5zaXplID4gMQorICAKKyAgaWYgb3B0aW9uYWxTZXR0aW5n
c0NvbWJpbmF0aW9ucy5lbXB0eT8KKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IGNvbXB1dGVT
ZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIGVsc2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9u
cyA9IG9wdGlvbmFsU2V0dGluZ3NDb21iaWF0aW9uc1swXQorICBlbmQKKyAgCisgIHNldHRpbmdz
Q29tYmluYXRpb25zLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBp
bmRleCB8CisgICAgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7CisgICAgICB8
IGNvbmNyZXRlU2V0dGluZ3NfLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgICB5aWVsZCBj
b25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICB9CisgIH0K
K2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBjcHBTZXR0aW5nc1Rl
c3QoY29uY3JldGVTZXR0aW5ncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgUmV0dXJucyB0aGUgQysrIGNvZGUgdXNlZCB0byB0ZXN0IGlm
IHdlIGFyZSBpbiBhIGNvbmZpZ3VyYXRpb24gdGhhdCAgIworIyBjb3JyZXNwb25kcyB0byB0aGUg
Z2l2ZW4gY29uY3JldGUgc2V0dGluZ3MuICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgY3BwU2V0dGluZ3NUZXN0KGNvbmNy
ZXRlU2V0dGluZ3MpCisgICIjaWYgIiArIGNvbmNyZXRlU2V0dGluZ3MudG9fYS5jb2xsZWN0ewor
ICAgIHwgcGFpciB8CisgICAgKGlmIHBhaXJbMV0KKyAgICAgICAiIgorICAgICBlbHNlCisgICAg
ICAgIiEiCisgICAgIGVuZCkgKyAiT0ZGTElORV9BU01fIiArIHBhaXJbMF0KKyAgfS5qb2luKCIg
JiYgIikKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBpc0FTVEVy
cm9uZW91cyhhc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGVzdHMgdG8gc2VlIGlmIHRoZSBBU1QgY2xhaW1z
IHRoYXQgdGhlcmUgaXMgYW4gZXJyb3IgLSBpLmUuIGlmIHRoZSAgIworIyB1c2VyJ3MgY29kZSwg
YWZ0ZXIgc2V0dGluZ3MgcmVzb2x1dGlvbiwgaGFzIEVycm9yIG5vZGVzLiAgICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgaXNBU1RFcnJvbmVvdXMo
YXN0KQorICBub3QgYXN0LmZpbHRlcihFcnJvcikuZW1wdHk/CitlbmQKKworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRp
bmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IEVtaXRzIGEgY2hlY2sgdGhhdCBhc3NlcnRzIHRoYXQgd2UncmUgdXNpbmcgdGhlIGdpdmVuIGNv
bmZpZ3VyYXRpb24uICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBh
c3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgICRvdXRwdXQucHV0cyBjcHBT
ZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgJG91dHB1dC5wdXRzICIjZWxzZSIKKyAg
JG91dHB1dC5wdXRzICIjZXJyb3IgXCJDb25maWd1cmF0aW9uIG1pc21hdGNoLlwiIgorICAkb3V0
cHV0LnB1dHMgIiNlbmRpZiIKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tl
bmQpIHsgICAgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2Vu
ZCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBF
bWl0cyBhbGwgcmVsZXZhbnQgZ3VhcmRzIHRvIHNlZSBpZiB0aGUgY29uZmlndXJhdGlvbiBob2xk
cyBhbmQgICAgICAjCisjIGNhbGxzIHRoZSBibG9jayBpZiB0aGUgY29uZmlndXJhdGlvbiBpcyBu
b3QgZXJyb25lb3VzLiAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisKK2RlZiBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBh
c3QsIGJhY2tlbmQpCisgICRvdXRwdXQucHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0
aW5ncykKKyAgCisgIGlmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAgICAkb3V0cHV0LnB1dHMgIiNl
cnJvciBcIkludmFsaWQgY29uZmlndXJhdGlvbi5cIiIKKyAgZWxzaWYgbm90IFdPUktJTkdfQkFD
S0VORFMuaW5jbHVkZT8gYmFja2VuZAorICAgICRvdXRwdXQucHV0cyAiI2Vycm9yIFwiVGhpcyBi
YWNrZW5kIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LlwiIgorICBlbHNlCisgICAgeWllbGQgY29uY3Jl
dGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kCisgIGVuZAorICAKKyAgJG91dHB1dC5wdXRzICIjZW5k
aWYiCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZW1pdENvZGVJ
bkFsbENvbmZpZ3VyYXRpb25zKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4u
IH0gICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRW1pdHMgZ3VhcmQgY29k
ZXMgZm9yIGFsbCB2YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxzIHRoZSBibG9jayAgIwor
IyBmb3IgdGhvc2UgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5kIG5vdCBlcnJvbmVv
dXMuICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYg
ZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkKKyAgZm9yRWFjaFZhbGlkU2V0dGluZ3ND
b21iaW5hdGlvbihhc3QpIHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBi
YWNrZW5kLCBpbmRleCB8CisgICAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0
ZVNldHRpbmdzKQorICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNr
ZW5kLCBpbmRleAorICAgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorICB9CitlbmQKKworCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0u
cmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUyIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIG5vZGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBDb25zdHJ1Y3Qg
YSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgSWZUaGVuRWxzZSBub2RlcyBieSAgICAg
ICAjCisjIHN1YnN0aXR1dGluZyBjb25jcmV0ZSBib29sZWFuIHZhbHVlcyBmb3IgZWFjaCBTZXR0
aW5nLiAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK
K2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBtYXBDaGls
ZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUKKyAgZGVmIHJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlCisgIGRl
ZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFz
cyBTZXR0aW5nCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2V0dGluZ3Nb
QG5hbWVdLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQKKyAgZGVmIHJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1
ZSBhbmQgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBl
bmQKK2VuZAorCitjbGFzcyBPcgorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAg
IChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIG9yIEByaWdodC5yZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgTm90
CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKG5vdCBAY2hpbGQucmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIElm
VGhlbkVsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBpZiBAcHJlZGlj
YXRlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUKKyAgICAgIEB0aGVuQ2FzZS5yZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZWxzZQorICAgICAgQGVsc2VDYXNlLnJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UK
KyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBA
bGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpCisgICAgICBpZiBpdGVtLmlzX2E/IFNlcXVlbmNlCisgICAgICAgIG5l
d0xpc3QgKz0gaXRlbS5saXN0CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbQor
ICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQor
ICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBub2RlLmRl
bWFjcm9pZnkobWFjcm9zKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIG5vZGUuc3Vic3RpdHV0ZShtYXBwaW5nKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBkZW1hY3JvaWZ5KCkg
Y29uc3RydWN0cyBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBNYWNybyAgICAgICAj
CisjIG5vZGVzLCB3aGlsZSBzdWJzdGl0dXRlKCkgcmVwbGFjZXMgVmFyaWFibGUgbm9kZXMgd2l0
aCB0aGUgZ2l2ZW4gICAgICMKKyMgbm9kZXMgaW4gdGhlIG1hcHBpbmcuICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAg
bWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5kZW1hY3JvaWZ5KG1h
Y3JvcykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBt
YXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobWFw
cGluZykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykK
KyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1
dGVMYWJlbHMobWFwcGluZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvCisgIGRl
ZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbXlNYXBwaW5nID0ge30KKyAgICBtYXBwaW5nLmVh
Y2hfcGFpciB7CisgICAgICB8IGtleSwgdmFsdWUgfAorICAgICAgdW5sZXNzIEB2YXJpYWJsZXMu
aW5jbHVkZT8ga2V5CisgICAgICAgIG15TWFwcGluZ1trZXldID0gdmFsdWUKKyAgICAgIGVuZAor
ICAgIH0KKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1
YnN0aXR1dGUobXlNYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUK
KyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBt
YXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAor
CitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAg
aWYgbWFwcGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNl
bGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHN1YnN0aXR1
dGUoY29uc3RhbnRzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIG15Q29uc3RhbnRzID0gY29uc3Rh
bnRzLmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0u
aXNfYT8gQ29uc3REZWNsCisgICAgICAgIG15Q29uc3RhbnRzW2l0ZW0udmFyaWFibGVdID0gaXRl
bS52YWx1ZS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZWxzZQorICAgICAgICBuZXdM
aXN0IDw8IGl0ZW0uc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgIGVuZAorICAgIH0KKyAg
ICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5kCisgIAorICBkZWYgcmVu
YW1lTGFiZWxzKGNvbW1lbnQpCisgICAgbWFwcGluZyA9IHt9CisgICAgCisgICAgQGxpc3QuZWFj
aCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBMb2NhbExhYmVsCisgICAg
ICAgIG1hcHBpbmdbaXRlbV0gPSBMb2NhbExhYmVsLnVuaXF1ZShpZiBjb21tZW50IHRoZW4gY29t
bWVudCArICJfIiBlbHNlICIiIGVuZCArIGl0ZW0uY2xlYW5OYW1lKQorICAgICAgZW5kCisgICAg
fQorICAgIAorICAgIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgZW5kCisgIAorICBkZWYg
ZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbXlNYWNyb3MgPSBtYWNyb3MuZHVwCisgICAgQGxpc3Qu
ZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAg
ICBteU1hY3Jvc1tpdGVtLm5hbWVdID0gaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIG5ld0xp
c3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0u
aXNfYT8gTWFjcm8KKyAgICAgICAgIyBJZ25vcmUuCisgICAgICBlbHNpZiBpdGVtLmlzX2E/IE1h
Y3JvQ2FsbAorICAgICAgICBtYXBwaW5nID0ge30KKyAgICAgICAgbXlNeU1hY3JvcyA9IG15TWFj
cm9zLmR1cAorICAgICAgICByYWlzZSAiQ291bGQgbm90IGZpbmQgbWFjcm8gI3tpdGVtLm5hbWV9
IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG15TWFjcm9zW2l0ZW0ubmFtZV0K
KyAgICAgICAgcmFpc2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxsIHRvICN7aXRl
bS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVtLm9wZXJhbmRz
LnNpemUgPT0gbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQorICAgICAgICBpdGVt
Lm9wZXJhbmRzLnNpemUudGltZXMgeworICAgICAgICAgIHwgaWR4IHwKKyAgICAgICAgICBpZiBp
dGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gVmFyaWFibGUgYW5kIG15TWFjcm9zW2l0ZW0ub3BlcmFu
ZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVd
LnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVd
CisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0u
bmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gTWFj
cm8KKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNb
aWR4XS5uYW1lXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgbWFwcGluZ1tteU1h
Y3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tp
ZHhdXSA9IG5pbAorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlh
Ymxlc1tpZHhdXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgIGVuZAorICAgICAgICB9
CisgICAgICAgIG5ld0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5LnN1YnN0aXR1dGUo
bWFwcGluZykuZGVtYWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMoaXRlbS5uYW1lKS5s
aXN0CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5kZW1hY3JvaWZ5KG15TWFj
cm9zKQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdM
aXN0KS5zdWJzdGl0dXRlKHt9KQorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBub2RlLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29uc3RydWN0
IGEgbmV3IEFTVCB0aGF0IGhhcyBvZmZzZXQgdmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMgICAg
ICAgIworIyBvZmZzZXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
CitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBt
YXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnJlc29sdmVPZmZzZXRz
KG9mZnNldHMsIHNpemVzKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0
CisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBvZmZzZXRzW3Nl
bGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIG9mZnNldHNbc2VsZl0pCisgICAg
ZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YKKyAg
ZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlmIHNpemVzW3NlbGZdCisg
ICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIHNpemVzW3NlbGZdKQorICAgIGVsc2UKKyAg
ICAgIHB1dHMgIkNvdWxkIG5vdCBmaW5kICN7c2VsZi5pbnNwZWN0fSBpbiAje3NpemVzLmtleXMu
aW5zcGVjdH0iCisgICAgICBwdXRzICJzaXplcyA9ICN7c2l6ZXMuaW5zcGVjdH0iCisgICAgICBz
ZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIG5vZGUuZm9sZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBSZXNvbHZlIGNvbnN0YW50
IHJlZmVyZW5jZXMgYW5kIGNvbXB1dGUgYXJpdGhtZXRpYyBleHByZXNzaW9ucy4gICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiBmb2xk
CisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5mb2xkCisg
ICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAg
QGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4g
c2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNz
IEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBs
ZWZ0LnZhbHVlICsgQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlh
dGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJp
Z2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisg
ICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlh
dGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlIC0gQHJpZ2h0LnZhbHVlKQorICBlbmQKK2Vu
ZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5m
b2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxl
ZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJ
bW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICogQHJp
Z2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBOZWdJbW1lZGlhdGUKKyAgZGVmIGZvbGQK
KyAgICBAY2hpbGQgPSBAY2hpbGQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAY2hpbGQu
aXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtQGNoaWxkLnZh
bHVlKQorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBu
b2RlLnJlc29sdmVBZnRlclNldHRpbmdzKG9mZnNldHMsIHNpemVzKSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29tcGlsZSBhc3NlbWJseSBhZ2FpbnN0
IGEgc2V0IG9mIG9mZnNldHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZShvZmZz
ZXRzLCBzaXplcykKKyAgICBkZW1hY3JvaWZ5KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBz
aXplcykuZm9sZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3MyBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgc3VwcG9y
dHM4Qml0T25YODYKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0
MSIsICJhMSIsICJyMSIsICJ0MiIsICJ0MyIKKyAgICAgIHRydWUKKyAgICB3aGVuICJ0NCIsICJj
ZnIiCisgICAgICBmYWxzZQorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAor
ICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIs
ICJhMCIsICJyMCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAi
JWFsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWF4IgorICAgICAgd2hlbiA6aW50Cisg
ICAgICAgICIlZWF4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAg
d2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUK
KyAgICAgICAgIiVkbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVkeCIKKyAgICAgIHdo
ZW4gOmludAorICAgICAgICAiJWVkeCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAg
IGVuZAorICAgIHdoZW4gInQyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisg
ICAgICAgICIlY2wiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlY3giCisgICAgICB3aGVu
IDppbnQKKyAgICAgICAgIiVlY3giCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBl
bmQKKyAgICB3aGVuICJ0MyIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAg
ICAgICAiJWJsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWJ4IgorICAgICAgd2hlbiA6
aW50CisgICAgICAgICIlZWJ4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5k
CisgICAgd2hlbiAidDQiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAg
ICAgIiVzaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc2kiCisgICAgICB3aGVuIDpp
bnQKKyAgICAgICAgIiVlc2kiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQK
KyAgICB3aGVuICJjZnIiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAg
ICAgIiVkaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZGkiCisgICAgICB3aGVuIDpp
bnQKKyAgICAgICAgIiVlZGkiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQK
KyAgICB3aGVuICJzcCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAg
ICAiJXNwbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVzcCIKKyAgICAgIHdoZW4gOmlu
dAorICAgICAgICAiJWVzcCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAor
ICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJh
bmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNz
IEZQUmVnaXN0ZXJJRAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIHJhaXNlIHVubGVzcyBr
aW5kID09IDpkb3VibGUKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAiZmEwIiwgImZy
IgorICAgICAgIiV4bW0wIgorICAgIHdoZW4gImZ0MSIsICJmYTEiCisgICAgICAiJXhtbTEiCisg
ICAgd2hlbiAiZnQyIiwgImZhMiIKKyAgICAgICIleG1tMiIKKyAgICB3aGVuICJmdDMiLCAiZmEz
IgorICAgICAgIiV4bW0zIgorICAgIHdoZW4gImZ0NCIKKyAgICAgICIleG1tNCIKKyAgICB3aGVu
ICJmdDUiCisgICAgICAiJXhtbTUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAg
ZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQp
fSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQp
CisgICAgIiQje3ZhbHVlfSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAg
ICIje3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBkZWYgc3VwcG9ydHM4
Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQor
ICAgICIje29mZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9KSIKKyAgZW5kCisg
IGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAg
IHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0
LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0sICN7aW5kZXgueDg2T3BlcmFuZCg6aW50
KX0sICN7c2NhbGV9KSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAg
Iioje3g4Nm9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJl
c3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVm
IHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCisKKyAgZGVm
IHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje2FkZHJlc3MudmFsdWV9IgorICBlbmQKK2Vu
ZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2TGFiZWwKKyAgICBzYW5pdGl6ZUxh
YmVsTmFtZShuYW1lKQorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgeDg2
TGFiZWwKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2
TGFiZWwKKyAgICAiTF9vZmZsaW5lYXNtXyIrbmFtZVsxLi4tMV0KKyAgZW5kCisgIGRlZiB4ODZD
YWxsT3BlcmFuZChraW5kKQorICAgIHg4NkxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIEluc3Ry
dWN0aW9uCisgIGRlZiB4ODZPcGVyYW5kcygqa2luZHMpCisgICAgcmFpc2UgdW5sZXNzIGtpbmRz
LnNpemUgPT0gb3BlcmFuZHMuc2l6ZQorICAgIHJlc3VsdCA9IFtdCisgICAga2luZHMuc2l6ZS50
aW1lcyB7CisgICAgICB8IGlkeCB8CisgICAgICByZXN1bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZP
cGVyYW5kKGtpbmRzW2lkeF0pCisgICAgfQorICAgIHJlc3VsdC5qb2luKCIsICIpCisgIGVuZAor
CisgIGRlZiB4ODZTdWZmaXgoa2luZCkKKyAgICBjYXNlIGtpbmQKKyAgICB3aGVuIDpieXRlCisg
ICAgICAiYiIKKyAgICB3aGVuIDpoYWxmCisgICAgICAidyIKKyAgICB3aGVuIDppbnQKKyAgICAg
ICJsIgorICAgIHdoZW4gOmRvdWJsZQorICAgICAgInNkIgorICAgIGVsc2UKKyAgICAgIHJhaXNl
CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9w
Y29kZSwga2luZCwgbnVtT3BlcmFuZHMpCisgICAgaWYgbnVtT3BlcmFuZHMgPT0gMworICAgICAg
aWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bj
b2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9w
ZXJhbmQoa2luZCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAg
ICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2lu
ZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAg
ICAkYXNtLnB1dHMgIlx0bW92I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICRh
c20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAg
ICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgaGFuZGxlWDg2T3Aob3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJh
bmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxl
WDg2U2hpZnQob3Bjb2RlLCBraW5kKQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0
ZSBvciBvcGVyYW5kc1swXSA9PSBSZWdpc3RlcklELmZvck5hbWUobmlsLCAidDIiKQorICAgICAg
JGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1
dHMgIlx0eGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICAg
ICRhc20ucHV0cyAiXHQje29wY29kZX0gJWNsLCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2lu
ZCl9IgorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
aW50KX0sICVlY3giCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkRvdWJsZUJy
YW5jaChicmFuY2hPcGNvZGUsIG1vZGUpCisgICAgY2FzZSBtb2RlCisgICAgd2hlbiA6bm9ybWFs
CisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gOnJl
dmVyc2UKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgZWxz
ZQorICAgICAgcmFpc2UgbW9kZS5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7
YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYg
aGFuZGxlWDg2SW50Q29tcGFyZShvcGNvZGVTdWZmaXgsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNb
MF0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5k
c1sxXS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVT
dWZmaXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzaWYgb3BlcmFuZHNbMV0u
aXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1sxXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1sw
XS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZm
aXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRz
ICJcdGNtcCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9
LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBoYW5kbGVYODZJbnRCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4
NkludENvbXBhcmUoYnJhbmNoT3Bjb2RlWzEuLi0xXSwga2luZCkKKyAgICAkYXNtLnB1dHMgIlx0
I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRl
ZiBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kKQorICAgIGlmIG9wZXJhbmQuc3VwcG9y
dHM4Qml0T25YODYKKyAgICAgICRhc20ucHV0cyAiXHQje3NldE9wY29kZX0gI3tvcGVyYW5kLng4
Nk9wZXJhbmQoOmJ5dGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgI3tvcGVyYW5kLng4
Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UK
KyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVl
YXgiCisgICAgICAkYXNtLnB1dHMgIlx0I3tzZXRPcGNvZGV9ICVhbCIKKyAgICAgICRhc20ucHV0
cyAiXHRtb3Z6YmwgJWFsLCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFu
ZC54ODZPcGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFu
ZGxlWDg2SW50Q29tcGFyZVNldChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29t
cGFyZShzZXRPcGNvZGVbMy4uLTFdLCBraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUs
IG9wZXJhbmRzWzJdKQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAg
dmFsdWUgPSBvcGVyYW5kc1swXQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gMgor
ICAgICAgbWFzayA9IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLTEpCisgICAgd2hlbiAzCisg
ICAgICBtYXNrID0gb3BlcmFuZHNbMV0KKyAgICBlbHNlCisgICAgICByYWlzZSAiRXhwZWN0ZWQg
MiBvciAzIG9wZXJhbmRzLCBidXQgZ290ICN7b3BlcmFuZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2lu
U3RyaW5nfSIKKyAgICBlbmQKKyAgICAKKyAgICBpZiBtYXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQg
bWFzay52YWx1ZSA9PSAtMQorICAgICAgaWYgdmFsdWUuaXNfYT8gUmVnaXN0ZXJJRAorICAgICAg
ICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQo
a2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAk
YXNtLnB1dHMgIlx0Y21wI3t4ODZTdWZmaXgoa2luZCl9ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQo
a2luZCl9IgorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4
NlN1ZmZpeChraW5kKX0gI3ttYXNrLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJh
bmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZCcmFuY2hUZXN0
KGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgJGFzbS5w
dXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzLmxhc3QueDg2TGFiZWx9IgorICBlbmQK
KyAgCisgIGRlZiBoYW5kbGVYODZTZXRUZXN0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVY
ODZUZXN0KGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHMubGFzdCkK
KyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3BCcmFuY2gob3Bjb2RlLCBicmFuY2hPcGNvZGUs
IGtpbmQpCisgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVy
YW5kcy5zaXplIC0gMSkKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAg
IGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9
IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5k
CisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQueDg2TGFiZWx9
IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTdWJCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5k
KQorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gNCBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNb
Ml0KKyAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmlu
dCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIGhh
bmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKCJzdWIje3g4NlN1ZmZpeChraW5kKX0iLCBraW5kLCBv
cGVyYW5kcy5zaXplIC0gMSkKKyAgICBlbmQKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3
aGVuIDQKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAg
anVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNw
ZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJn
ZXQueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBsb3dlclg4NgorICAgICRhc20uY29tbWVu
dCBjb2RlT3JpZ2luU3RyaW5nCisgICAgY2FzZSBvcGNvZGUKKyAgICB3aGVuICJhZGRpIiwgImFk
ZHAiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IElt
bWVkaWF0ZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJ
RAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAg
ICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCisgICAgICAgICAgdW5sZXNzIG9wZXJhbmRz
WzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRzICJcdGxl
YWwgI3tvcGVyYW5kc1swXS52YWx1ZX0oI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSks
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZWxz
aWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisg
ICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAg
IHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20u
cHV0cyAiXHRsZWFsICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICAgIGVsc2UKKyAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVy
YW5kc1swXQorICAgICAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7eDg2T3BlcmFuZHMoOmludCwg
OmludCl9IgorICAgICAgICBlbmQKKyAgICAgIGVuZAorICAgIHdoZW4gImFuZGkiLCAiYW5kcCIK
KyAgICAgIGhhbmRsZVg4Nk9wKCJhbmRsIiwgOmludCkKKyAgICB3aGVuICJsc2hpZnRpIgorICAg
ICAgaGFuZGxlWDg2U2hpZnQoInNhbGwiLCA6aW50KQorICAgIHdoZW4gIm11bGkiCisgICAgICBp
ZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAg
ICAgICAkYXNtLnB1dHMgIlx0aW11bGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50LCA6aW50KX0i
CisgICAgICBlbHNlCisgICAgICAgICMgRklYTUU6IGNvdWxkIGRvIHNvbWUgcGVlcGhvbGUgaW4g
Y2FzZSB0aGUgbGVmdCBvcGVyYW5kIGlzIGltbWVkaWF0ZSBhbmQgaXQncworICAgICAgICAjIGEg
cG93ZXIgb2YgdHdvLgorICAgICAgICBoYW5kbGVYODZPcCgiaW11bGwiLCA6aW50KQorICAgICAg
ZW5kCisgICAgd2hlbiAibmVnaSIKKyAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7eDg2T3BlcmFu
ZHMoOmludCl9IgorICAgIHdoZW4gIm5vdGkiCisgICAgICAkYXNtLnB1dHMgIlx0bm90bCAje3g4
Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgaGFuZGxlWDg2
T3AoIm9ybCIsIDppbnQpCisgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0
KCJzYXJsIiwgOmludCkKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0
KCJzaHJsIiwgOmludCkKKyAgICB3aGVuICJzdWJpIiwgInN1YnAiCisgICAgICBpZiBvcGVyYW5k
cy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20u
cHV0cyAiXHRuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICRh
c20ucHV0cyAiXHRhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFu
ZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIGhhbmRsZVg4Nk9w
KCJzdWJsIiwgOmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gInhvcmkiLCAieG9ycCIKKyAgICAg
IGhhbmRsZVg4Nk9wKCJ4b3JsIiwgOmludCkKKyAgICB3aGVuICJsb2FkaSIsICJzdG9yZWkiLCAi
bG9hZHAiLCAic3RvcmVwIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZPcGVyYW5kcyg6
aW50LCA6aW50KX0iCisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJs
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgIHdoZW4gImxvYWRoIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnp3bCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICB3aGVuICJzdG9yZWIiCisgICAgICAkYXNtLnB1dHMgIlx0bW92YiAje3g4
Nk9wZXJhbmRzKDpieXRlLCA6Ynl0ZSl9IgorICAgIHdoZW4gImxvYWRkIiwgIm1vdmVkIiwgInN0
b3JlZCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpk
b3VibGUpfSIKKyAgICB3aGVuICJhZGRkIgorICAgICAgJGFzbS5wdXRzICJcdGFkZHNkICN7eDg2
T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImRpdmQiCisgICAgICAkYXNt
LnB1dHMgIlx0ZGl2c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hl
biAic3ViZCIKKyAgICAgICRhc20ucHV0cyAiXHRzdWJzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUs
IDpkb3VibGUpfSIKKyAgICB3aGVuICJtdWxkIgorICAgICAgJGFzbS5wdXRzICJcdG11bHNkICN7
eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInNxcnRkIgorICAgICAg
JGFzbS5wdXRzICJcdHNxcnRzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImNpMmQiCisgICAg
ICAkYXNtLnB1dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJiZGVxIgorICAg
ICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRlcSIpCisgICAgICAkYXNtLnB1
dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7TGFi
ZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS54ODZMYWJlbH0iCisgICAg
ICAkYXNtLnB1dHMgIlx0amUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgb3BlcmFu
ZHNbMl0pLng4NkxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgIHdo
ZW4gImJkbmVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqbmUiLCA6bm9ybWFsKQor
ICAgIHdoZW4gImJkZ3QiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphIiwgOm5vcm1h
bCkKKyAgICB3aGVuICJiZGd0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIs
IDpub3JtYWwpCisgICAgd2hlbiAiYmRsdCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgi
amEiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGx0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVC
cmFuY2goImphZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkZXF1biIKKyAgICAgIGhhbmRsZVg4
NkRvdWJsZUJyYW5jaCgiamUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbmVxdW4iCisgICAgICBp
c1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgIGlzRXF1YWwg
PSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlz
ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7TGFiZWxSZWZlcmVuY2Uu
bmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMg
Ilx0amUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNFcXVhbCkueDg2TGFiZWx9
IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAgICAkYXNtLnB1dHMgIlx0am1w
ICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAgaXNFcXVhbC5sb3dlcigiWDg2IikKKyAg
ICB3aGVuICJiZGd0dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOnJldmVy
c2UpCisgICAgd2hlbiAiYmRndGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpi
ZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHR1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJy
YW5jaCgiamIiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgaGFuZGxlWDg2
RG91YmxlQnJhbmNoKCJqYmUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJ0ZDJpIgorICAgICAgJGFz
bS5wdXRzICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGNtcGwg
JDB4ODAwMDAwMDAgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20u
cHV0cyAiXHRqZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJ0ZDJpIgorICAg
ICAgJGFzbS5wdXRzICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJjZDJpIgor
ICAgICAgJGFzbS5wdXRzICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRz
ICJcdHRlc3RsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tvcGVyYW5kc1syXS54
ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRq
cCAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqbmUgI3tvcGVy
YW5kc1syXS54ODZMYWJlbH0iCisgICAgd2hlbiAibW92ZHoiCisgICAgICAkYXNtLnB1dHMgIlx0
eG9ycGQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJwb3AiCisgICAgICAkYXNtLnB1dHMgIlx0
cG9wICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicHVzaCIKKyAg
ICAgICRhc20ucHV0cyAiXHRwdXNoICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6eGkycCIKKyAgICAgIGlmIEltbWVkaWF0ZS5uZXco
bmlsLCAwKSA9PSBvcGVyYW5kc1swXSBhbmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAor
ICAgICAgICAkYXNtLnB1dHMgIlx0eG9ybCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNb
MF0gIT0gb3BlcmFuZHNbMV0KKyAgICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZPcGVyYW5k
cyg6aW50LCA6aW50KX0iCisgICAgICBlbmQKKyAgICB3aGVuICJub3AiCisgICAgICAkYXNtLnB1
dHMgIlx0bm9wIgorICAgIHdoZW4gImJpZXEiLCAiYnBlcSIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamUiLCA6aW50KQorICAgIHdoZW4gImJpbmVxIiwgImJwbmVxIgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqbmUiLCA6aW50KQorICAgIHdoZW4gImJpYSIsICJicGEiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImphIiwgOmludCkKKyAgICB3aGVuICJiaWFlcSIsICJicGFlcSIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmludCkKKyAgICB3aGVuICJiaWIiLCAi
YnBiIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDppbnQpCisgICAgd2hlbiAiYmli
ZXEiLCAiYnBiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDppbnQpCisgICAg
d2hlbiAiYmlndCIsICJicGd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDppbnQp
CisgICAgd2hlbiAiYmlndGVxIiwgImJwZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgi
amdlIiwgOmludCkKKyAgICB3aGVuICJiaWx0IiwgImJwbHQiCisgICAgICBoYW5kbGVYODZJbnRC
cmFuY2goImpsIiwgOmludCkKKyAgICB3aGVuICJiaWx0ZXEiLCAiYnBsdGVxIgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqbGUiLCA6aW50KQorICAgIHdoZW4gImJiZXEiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImplIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJuZXEiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImpuZSIsIDpieXRlKQorICAgIHdoZW4gImJiYSIKKyAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiamEiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmFlcSIKKyAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiamFlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiIgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqYiIsIDpieXRlKQorICAgIHdoZW4gImJiYmVxIgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqYmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0IgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqZyIsIDpieXRlKQorICAgIHdoZW4gImJiZ3RlcSIKKyAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiamdlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdCIKKyAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiamwiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0ZXEiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImpsdGVxIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRpbyIsICJidHBvIgor
ICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6aW50KQorICAgIHdoZW4gImJ0aXMiLCAi
YnRwcyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmludCkKKyAgICB3aGVuICJi
dGl6IiwgImJ0cHoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDppbnQpCisgICAg
d2hlbiAiYnRpbnoiLCAiYnRwbnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6
aW50KQorICAgIHdoZW4gImJ0Ym8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpi
eXRlKQorICAgIHdoZW4gImJ0YnMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDpi
eXRlKQorICAgIHdoZW4gImJ0YnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDpi
eXRlKQorICAgIHdoZW4gImJ0Ym56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56Iiwg
OmJ5dGUpCisgICAgd2hlbiAiam1wIgorICAgICAgJGFzbS5wdXRzICJcdGptcCAje29wZXJhbmRz
WzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiYWRkaW8iLCAiYmFkZHBvIgor
ICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJh
ZGRpcyIsICJiYWRkcHMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqcyIsIDpp
bnQpCisgICAgd2hlbiAiYmFkZGl6IiwgImJhZGRweiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNo
KCJhZGRsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJiYWRkaW56IiwgImJhZGRwbnoiCisgICAg
ICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJzdWJp
byIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam8iLCA6aW50KQorICAgIHdoZW4gImJzdWJp
cyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianMiLCA6aW50KQorICAgIHdoZW4gImJzdWJp
eiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianoiLCA6aW50KQorICAgIHdoZW4gImJzdWJp
bnoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpueiIsIDppbnQpCisgICAgd2hlbiAiYm11
bGlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpvIiwgOmludCkKKyAgICB3
aGVuICJibXVsaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAianMiLCA6aW50
KQorICAgIHdoZW4gImJtdWxpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJq
eiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJp
bXVsbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJvcmlvIgorICAgICAgaGFuZGxlWDg2T3BC
cmFuY2goIm9ybCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXMiCisgICAgICBoYW5kbGVY
ODZPcEJyYW5jaCgib3JsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJib3JpeiIKKyAgICAgIGhh
bmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJvcmlueiIKKyAg
ICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJicmVh
ayIKKyAgICAgICRhc20ucHV0cyAiXHRpbnQgJDMiCisgICAgd2hlbiAiY2FsbCIKKyAgICAgICRh
c20ucHV0cyAiXHRjYWxsICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAg
IHdoZW4gInJldCIKKyAgICAgICRhc20ucHV0cyAiXHRyZXQiCisgICAgd2hlbiAiY2llcSIsICJj
cGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQpCisgICAgd2hl
biAiY2luZXEiLCAiY3BuZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRuZSIs
IDppbnQpCisgICAgd2hlbiAiY2lhIiwgImNwYSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVT
ZXQoInNldGEiLCA6aW50KQorICAgIHdoZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAgaGFuZGxl
WDg2SW50Q29tcGFyZVNldCgic2V0YWUiLCA6aW50KQorICAgIHdoZW4gImNpYiIsICJjcGIiCisg
ICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiIiwgOmludCkKKyAgICB3aGVuICJjaWJl
cSIsICJjcGJlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGJlIiwgOmludCkK
KyAgICB3aGVuICJjaWd0IiwgImNwZ3QiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJz
ZXRnIiwgOmludCkKKyAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAgaGFuZGxlWDg2
SW50Q29tcGFyZVNldCgic2V0Z2UiLCA6aW50KQorICAgIHdoZW4gImNpbHQiLCAiY3BsdCIKKyAg
ICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGwiLCA6aW50KQorICAgIHdoZW4gImNpbHRl
cSIsICJjcGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDppbnQp
CisgICAgd2hlbiAidGlvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQpCisg
ICAgd2hlbiAidGlzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDppbnQpCisgICAg
d2hlbiAidGl6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDppbnQpCisgICAgd2hl
biAidGlueiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmludCkKKyAgICB3aGVu
ICJ0Ym8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgd2hlbiAi
dGJzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAgIHdoZW4gInRi
eiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ym56
IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJwZWVr
IgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3tvcGVyYW5kc1swXS52YWx1ZSAqIDR9KCVlc3Ap
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInBva2UiCisgICAg
ICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29w
ZXJhbmRzWzFdLnZhbHVlICogNH0oJWVzcCkiCisgICAgd2hlbiAiY2RxaSIKKyAgICAgICRhc20u
cHV0cyAiXHRjZHEiCisgICAgd2hlbiAiaWRpdmkiCisgICAgICAkYXNtLnB1dHMgIlx0aWRpdmwg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJmaWkyZCIKKyAgICAg
ICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAi
XHRwc2xscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHBvciAleG1tNywgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRh
c20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMg
Ilx0cHNybHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAleG1tNywgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiQmFk
IG9wY29kZTogI3tvcGNvZGV9IgorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNw
ZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29kZVNwZWNp
YWxpemF0aW9uS2luZF9oCisjZGVmaW5lIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCituYW1l
c3BhY2UgSlNDIHsKKworZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGws
IENvZGVGb3JDb25zdHJ1Y3QgfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIENvbW1vblNsb3dQYXRoc19oCiAKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5j
bHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKIApAQCAtNDEs
NiArNDIsMzggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMg
ewogCitBTFdBWVNfSU5MSU5FIEV4ZWNTdGF0ZSogYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4
ZWMsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpCit7CisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUo
KSk7CisgICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOworICAgIENvZGVCbG9j
ayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVj
b2RlRm9yKGtpbmQpOworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMt
PmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CisKKyAgICAvLyBUaGlzIGVuc3VyZXMgZW5v
dWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBw
YXNzZWQgYnkgdGhlIGNhbGxlci4KKyAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhleGVjLT5y
ZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2Nr
LT5tX251bUNhbGxlZVJlZ2lzdGVycykpCisgICAgICAgIHJldHVybiAwOworCisgICAgQVNTRVJU
KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkpOworCisgICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1lIGFuZCBh
cmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5lZC4K
KyAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzOworICAgIFJlZ2lzdGVyKiBzcmMgPSBleGVjLT5yZWdpc3Rl
cnMoKTsKKyAgICBSZWdpc3RlciogZHN0ID0gZXhlYy0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKKwor
ICAgIGludCBpOworICAgIGludCBlbmQgPSAtRXhlY1N0YXRlOjpvZmZzZXRGb3IoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpOworICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQorICAg
ICAgICBkc3RbaV0gPSBzcmNbaV07CisKKyAgICBlbmQgLT0gZGVsdGE7CisgICAgZm9yICggOyBp
ID49IGVuZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOworCisgICAgRXhl
Y1N0YXRlKiBuZXdFeGVjID0gRXhlY1N0YXRlOjpjcmVhdGUoZHN0KTsKKyAgICBBU1NFUlQoKHZv
aWQqKW5ld0V4ZWMgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7CisgICAgcmV0dXJuIG5ld0V4ZWM7
Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBvcEluc3RhbmNlT2ZTbG93KEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3RvKQogewogICAg
IEFTU0VSVCghdmFsdWUuaXNDZWxsKCkgfHwgIWJhc2VWYWwuaXNDZWxsKCkgfHwgIXByb3RvLmlz
Q2VsbCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRl
ICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUg
IkRGR0RyaXZlci5oIgorI2luY2x1ZGUgIkV4ZWN1dGlvbkhhcm5lc3MuaCIKICNpbmNsdWRlICJK
SVQuaCIKICNpbmNsdWRlICJKSVREcml2ZXIuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKQEAgLTg0
LDcgKzg1LDcgQEAgSW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6OmludHJpbnNpYygpIAogdGVt
cGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRpYyB2b2lkIGpldHRpc29uQ29kZUJsb2NrKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPFQ+JiBjb2RlQmxvY2spCiB7Ci0gICAgQVNTRVJUKGNv
ZGVCbG9jay0+Z2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NF
UlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKSk7CiAg
ICAgQVNTRVJUKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgT3duUHRyPFQ+IGNvZGVC
bG9ja1RvSmV0dGlzb24gPSBjb2RlQmxvY2sucmVsZWFzZSgpOwogICAgIGNvZGVCbG9jayA9IHN0
YXRpY19wb2ludGVyX2Nhc3Q8VD4oY29kZUJsb2NrVG9KZXR0aXNvbi0+cmVsZWFzZUFsdGVybmF0
aXZlKCkpOwpAQCAtMTY3LDkgKzE2OCwzMCBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNv
bXBpbGVPcHRpbWl6CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEV2YWxFeGVjdXRhYmxl
OjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3Vs
dCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywg
bV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRf
VU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKworaW5saW5lIGNvbnN0IGNoYXIqIHNhbXBsaW5n
RGVzY3JpcHRpb24oSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworICAgIHN3aXRjaCAoaml0
VHlwZSkgeworICAgIGNhc2UgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAgICAgcmV0
dXJuICJJbnRlcnByZXRlciBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBjYXNlIEpJVENvZGU6
OkJhc2VsaW5lSklUOgorICAgICAgICByZXR1cm4gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RB
TCkiOworICAgIGNhc2UgSklUQ29kZTo6REZHSklUOgorICAgICAgICByZXR1cm4gIkRGRyBDb21w
aWxhdGlvbiAoVE9UQUwpIjsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiBKU09iamVjdCogRXZhbEV4ZWN1
dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBz
Y29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5n
UmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAi
QmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCki
KTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9u
KGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0
VHlwZSk7CkBAIC0yMTAsNyArMjMyLDcgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21w
aWxlSW50ZXJuYQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxl
SWZBcHByb3ByaWF0ZSgqZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JD
YWxsLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVjdXRpb24oKmdsb2JhbERhdGEs
IG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJl
dHVybiAwOwogI2VuZGlmCiAKQEAgLTI5NSw5ICszMTcsMTUgQEAgSlNPYmplY3QqIFByb2dyYW1F
eGVjdXRhYmxlOjpjb21waWxlT3B0aQogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBQcm9n
cmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7Cisg
ICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX3By
b2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQo
KSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEpTT2JqZWN0KiBQ
cm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVD
aGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0g
ICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNl
bGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRp
b24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5n
RGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNF
RF9QQVJBTShqaXRUeXBlKTsKQEAgLTMzNiw3ICszNjQsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4
ZWN1dGFibGU6OmNvbXBpbGVJbnRlCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAo
IWppdENvbXBpbGVJZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ss
IG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlv
bigqZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRU
eXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNDEyLDcgKzQ0MCw3IEBAIEZ1
bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmIKICAgICB3aGlsZSAocmVzdWx0
LT5hbHRlcm5hdGl2ZSgpKQogICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNv
ZGVCbG9jayo+KHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgQVNTRVJUKHJlc3VsdCk7Ci0g
ICAgQVNTRVJUKHJlc3VsdC0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsK
KyAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkp
KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MzgsNiArNDY2LDE4IEBAIEpTT2JqZWN0
KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVPcHQKICAgICByZXR1cm4gZXJyb3I7CiB9CiAK
K3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25JZkFw
cHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2Fs
bCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRDb2Rl
Ojpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwor
fQorCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVu
Y3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBt
X2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNr
LCBtX3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCiBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25F
eGVjdXRhYmxlOjpjb2RlQmxvY2tXaXRoQnl0ZWNvZGVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kKQogewogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNv
ZGVCbG9ja0ZvcihraW5kKTsKQEAgLTQ4Miw3ICs1MjIsNyBAQCBQYXNzT3duUHRyPEZ1bmN0aW9u
Q29kZUJsb2NrPiBGdW5jdGlvbkV4CiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNv
bXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2Nv
cGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1Jl
Z2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJh
c2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7
CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihq
aXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwpAQCAtNTA0LDcgKzU0NCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBp
bGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDYWxsLT5zaGFyZWRTeW1i
b2xUYWJsZSgpOwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlv
bklmQXBwcm9wcmlhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1f
aml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xU
YWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1f
aml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSwgQ29k
ZUZvckNhbGwpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC01MjQsNyArNTY0LDcg
QEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogCiBKU09iamVjdCog
RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwoRXhlY1N0YXRl
KiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUg
aml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09
IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDog
IkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdS
ZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShK
SVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtNTQ2LDcgKzU4Niw3IEBAIEpTT2Jq
ZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0g
bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFC
TEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLT5n
bG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1
Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBq
aXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3Qs
IG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRU
eXBlLCBDb2RlRm9yQ29uc3RydWN0KSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24g
MTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEV4ZWN1dGFibGVfaAogCiAj
aW5jbHVkZSAiQ2FsbERhdGEuaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgi
CiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5j
bHVkZSAiTm9kZXMuaCIKQEAgLTM5LDEyICs0MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBEZWJ1Z2dlcjsKICAgICBjbGFzcyBFdmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIEZ1bmN0
aW9uQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFz
cyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwogCiAgICAgc3Ry
dWN0IEV4Y2VwdGlvbkluZm87CiAgICAgCi0gICAgZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKICAgICBlbnVtIENvbXBpbGF0aW9u
S2luZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21waWxhdGlvbiB9OwogCiAgICAg
aW5saW5lIGJvb2wgaXNDYWxsKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAgLTMxOSw2
ICszMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgRXZhbEV4ZWN1
dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlw
dEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtMzM4LDYgKzM0MCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVk
Q29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlKEpTR2xvYmFsRGF0
YSYpOwogI2VuZGlmCiAKICAgICAgICAgRXZhbENvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUo
KQpAQCAtMzg0LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFz
cyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAg
IHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC00MTEsNiArNDE1LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0
dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBp
bGUoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBQcm9ncmFtQ29kZUJsb2NrJiBn
ZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC00NTMsNiArNDU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1
dGFibGUgQmFzZTsKIApAQCAtNTA4LDYgKzUxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZv
ckNhbGwoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNhbGwoSlNH
bG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ2FsbCgp
IGNvbnN0CkBAIC01MzUsNiArNTQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lm
IEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3Ry
dWN0KEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDb25zdHJ1Y3Qo
SlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ29u
c3RydWN0KCkgY29uc3QKQEAgLTU4Miw2ICs1OTAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICAgICAgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdENv
bXBpbGVGb3IoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7
CisgICAgICAgICAgICAgICAgaml0Q29tcGlsZUZvckNhbGwoZ2xvYmFsRGF0YSk7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKGtpbmQg
PT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgICAgICBqaXRDb21waWxlRm9yQ29uc3RydWN0
KGdsb2JhbERhdGEpOworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIGJvb2wg
aXNHZW5lcmF0ZWRGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3Mu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEV4ZWN1dGlvbkhhcm5lc3NfaAorI2RlZmlu
ZSBFeGVjdXRpb25IYXJuZXNzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYg
RU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkxMSW50RW50
cnlwb2ludHMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENvZGVC
bG9ja1R5cGU+CitpbmxpbmUgYm9vbCBwcmVwYXJlRm9yRXhlY3V0aW9uKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGpp
dENvZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0
YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0
RW50cnlwb2ludChnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUpOworICAgICAg
ICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQor
ICAgIHJldHVybiBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ss
IGppdENvZGUsIGppdFR5cGUpOworfQorCitpbmxpbmUgYm9vbCBwcmVwYXJlRnVuY3Rpb25Gb3JF
eGVjdXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxv
Y2s+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYg
aml0Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBK
SVRDb2RlOjpKSVRUeXBlIGppdFR5cGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5
cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVy
LgorICAgICAgICBMTEludDo6Z2V0RnVuY3Rpb25FbnRyeXBvaW50KGdsb2JhbERhdGEsIGtpbmQs
IGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0
SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShraW5kKTsKKyNlbmRpZiAvLyBF
TkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUo
Z2xvYmFsRGF0YSwgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIHN5
bWJvbFRhYmxlLCBqaXRUeXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8gRXhlY3V0aW9uSGFybmVzc19oCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAx
MDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBh
ZG9wdEFycmF5UHRyKG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bcmVnaXN0ZXJBcnJheVNpemVd
KTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMgPSByZWdpc3RlckFy
cmF5LmdldCgpICsgcmVnaXN0ZXJPZmZzZXQ7Ci0KKyAgICAgICAgCiAgICAgICAgIC8vIENvcHkg
YWxsIGFyZ3VtZW50cyB0aGF0IGNhbiBiZSBjYXB0dXJlZCBieSBuYW1lIG9yIGJ5IHRoZSBhcmd1
bWVudHMgb2JqZWN0LgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbnVtQ2FwdHVyZWRB
cmdzOyArK2kpIHsKICAgICAgICAgICAgIGludCBpbmRleCA9IENhbGxGcmFtZTo6YXJndW1lbnRP
ZmZzZXQoaSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShy
ZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgSlNBcnJheTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAg
ICBzdHJ1Y3QgU3BhcnNlQXJyYXlFbnRyeSA6IHB1YmxpYyBXcml0ZUJhcnJpZXI8VW5rbm93bj4g
ewogICAgICAgICB0eXBlZGVmIFdyaXRlQmFycmllcjxVbmtub3duPiBCYXNlOwpAQCAtMTIyLDYg
KzEyMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBKU0FycmF5IDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgV2Fsa2VyOwogCiAgICAgcHJvdGVj
dGVkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9u
IDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNiw5ICszNiwxMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBKU0dsb2JhbE9iamVjdDsKLSAgICBjbGFzcyBTdHJ1Y3R1cmU7CisgICAgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFz
cyBQcm9wZXJ0eU5hbWVBcnJheTsKKyAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBlbnVtIEVu
dW1lcmF0aW9uTW9kZSB7CiAgICAgICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsCkBAIC0x
NjQsNiArMTY1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93
blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZp
ZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBjb25zdCBD
bGFzc0luZm8qIG1fY2xhc3NJbmZvOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X3N0cnVjdHVyZTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEpT
QWN0aXZhdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBT
b3VyY2VDb2RlOwogICAgIG5hbWVzcGFjZSBERkcgewpAQCAtMTQwLDYgKzE0MSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9v
bCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBKU1Zh
bHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVy
Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsOCBAQCBKU0ds
b2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgLCBrZXl3b3JkcyhhZG9w
dFB0cihuZXcgS2V5d29yZHModGhpcykpKQogICAgICwgaW50ZXJwcmV0ZXIoMCkKICAgICAsIGhl
YXAodGhpcywgaGVhcFNpemUpCisgICAgLCBqc0FycmF5Q2xhc3NJbmZvKCZKU0FycmF5OjpzX2lu
Zm8pCisgICAgLCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvKCZKU0ZpbmFsT2JqZWN0OjpzX2luZm8p
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLCBzaXplT2ZMYXN0U2NyYXRjaEJ1ZmZlcigwKQog
I2VuZGlmCkBAIC0yMTYsNyArMjE4LDcgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xv
YmFsRGF0YVR5cAogICAgIGppdFN0dWJzID0gYWRvcHRQdHIobmV3IEpJVFRodW5rcyh0aGlzKSk7
CiAjZW5kaWYKIAotICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKHRoaXMtPmNhblVzZUpJVCgp
KTsKKyAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSgmbGxpbnREYXRhLCB0aGlzLT5jYW5Vc2VK
SVQoKSk7CiAKICAgICBoZWFwLm5vdGlmeUlzU2FmZVRvQ29sbGVjdCgpOwogfQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDEw
NTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTYgQEAKICNkZWZpbmUgSlNHbG9iYWxEYXRhX2gK
IAogI2luY2x1ZGUgIkNhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJJ
bnRyaW5zaWMuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2VDYWNoZS5oIgogI2luY2x1ZGUgIkV4
ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCi0jaW5jbHVkZSAiU3Ryb25n
LmgiCisjaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNs
dWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTnVtZXJp
Y1N0cmluZ3MuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKKyNpbmNsdWRlICJTdHJvbmcu
aCIKICNpbmNsdWRlICJUZXJtaW5hdG9yLmgiCiAjaW5jbHVkZSAiVGltZW91dENoZWNrZXIuaCIK
ICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCkBAIC02NSw2ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNs
YXNzIEtleXdvcmRzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFz
cyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFBhcnNlckFyZW5hOwogICAgIGNsYXNzIFJl
Z0V4cENhY2hlOwpAQCAtMjQxLDYgKzI0MywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
SGVhcCBoZWFwOwogCiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uOworCisgICAgICAgIGNvbnN0
IENsYXNzSW5mbyogY29uc3QganNBcnJheUNsYXNzSW5mbzsKKyAgICAgICAgY29uc3QgQ2xhc3NJ
bmZvKiBjb25zdCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOworCisgICAgICAgIExMSW50OjpEYXRh
IGxsaW50RGF0YTsKKwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIg
ZXhjZXB0aW9uTG9jYXRpb247CiAgICAgICAgIEpTVmFsdWUgaG9zdENhbGxSZXR1cm5WYWx1ZTsK
QEAgLTM0Niw2ICszNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICN1bmRlZiByZWdpc3RlclR5cGVk
QXJyYXlGdW5jdGlvbgogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTR2xvYmFsRGF0YShHbG9iYWxE
YXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CiAgICAgICAgIHN0YXRpYyBKU0ds
b2JhbERhdGEqJiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAgICAgIHZvaWQgY3JlYXRl
TmF0aXZlVGh1bmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBj
bGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgR2xvYmFsQ29kZUJsb2NrOworICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9y
OwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgUmVnRXhwQ29uc3RydWN0
b3I7CkBAIC0zMzUsNiArMzM2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBpbnQg
Y291bnQpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBGb2xkIHJlc2V0IGludG8g
aW5pdC4KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0KEpTT2JqZWN0KiB0aGlz
VmFsdWUpOwogICAgICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTA1NzcwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBHZXR0ZXJTZXR0
ZXI7CiAgICAgY2xhc3MgSGFzaEVudHJ5OwogICAgIGNsYXNzIEludGVybmFsRnVuY3Rpb247Cisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE1hcmtlZEJsb2NrOwog
ICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJh
eTsKQEAgLTI3MSw2ICsyNzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNPYmplY3Qo
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2Up
OwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIE5vYm9keSBzaG91bGQgZXZlciBhc2sgYW55IG9m
IHRoZXNlIHF1ZXN0aW9ucyBvbiBzb21ldGhpbmcgYWxyZWFkeSBrbm93biB0byBiZSBhIEpTT2Jq
ZWN0LgogICAgICAgICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyOwogICAgICAgICB1
c2luZyBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyOwpAQCAtMzgzLDYgKzM4Niw4IEBAIENPTVBJTEVf
QVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgc3RhdGljIHZvaWQgZGVz
dHJveShKU0NlbGwqKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2Jq
ZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAg
ICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdl
KQogICAgICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJ
ZGVudGlmaWVyOwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIAogICAgIGNsYXNzIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IgOiBwdWJsaWMgSlND
ZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTk2LDYgKzk3LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1l
QXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7CiAKICAgICAgICAgV3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMy
LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNTdHJpbmc7CisgICAgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoSlNH
bG9iYWxEYXRhKik7CiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKik7CkBA
IC0yNDAsNiArMjQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNvbnN0Owog
ICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2U4KExDaGFyKikgY29uc3Q7CiAgICAgICAg
IHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hhciopIGNvbnN0OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNpb24gMTA1NzcwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQgPSAxOyAvLyBXZWJDb3JlIHVzZXMgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCB0
byBtYWtlIGRvY3VtZW50LmFsbCB1bmRldGVjdGFibGUuCiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDEgPDwgMTsKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgT3ZlcnJpZGVzSGFzSW5zdGFuY2UgPSAxIDw8IDI7CkBAIC04Nyw2ICs4OSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBpc1Nl
dE9uRmxhZ3MxKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPD0gKDEgPDwgNykp
OyByZXR1cm4gbV9mbGFncyAmIGZsYWc7IH0KICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MyKHVu
c2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1cm4gbV9m
bGFnczIgJiAoZmxhZyA+PiA4KTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiwxMCArMTE2LDkg
QEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoRQogICAgIHJldHVybiBK
U05vdEFuT2JqZWN0OjpjcmVhdGUoZXhlYyk7CiB9CiAKLSNpZm5kZWYgTkRFQlVHCiBjaGFyKiBK
U1ZhbHVlOjpkZXNjcmlwdGlvbigpCiB7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0g
NjQ7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0gMTI4OwogICAgIHN0YXRpYyBjaGFy
IGRlc2NyaXB0aW9uW3NpemVdOwogCiAgICAgaWYgKCEqdGhpcykKQEAgLTEyOCwxNCArMTI3LDE0
IEBAIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKICAgICAgICAgc25wcmludGYoZGVzY3Jp
cHRpb24sIHNpemUsICJJbnQzMjogJWQiLCBhc0ludDMyKCkpOwogICAgIGVsc2UgaWYgKGlzRG91
YmxlKCkpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlv
biwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlbHgiLCBhc0RvdWJsZSgpLCByZWludGVycHJldERvdWJs
ZVRvSW50cHRyKGFzRG91YmxlKCkpKTsKKyAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNp
emUsICJEb3VibGU6ICVseCwgJWxmIiwgcmVpbnRlcnByZXREb3VibGVUb0ludHB0cihhc0RvdWJs
ZSgpKSwgYXNEb3VibGUoKSk7CiAjZWxzZQogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBk
b3VibGUgYXNEb3VibGU7CiAgICAgICAgICAgICB1aW50MzJfdCBhc1R3b0ludDMyc1syXTsKICAg
ICAgICAgfSB1OwogICAgICAgICB1LmFzRG91YmxlID0gYXNEb3VibGUoKTsKLSAgICAgICAgc25w
cmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVsZiwgJTA4eDolMDh4IiwgYXNEb3Vi
bGUoKSwgdS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSk7CisgICAgICAgIHNucHJp
bnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlMDh4OiUwOHgsICVsZiIsIHUuYXNUd29J
bnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0sIGFzRG91YmxlKCkpOwogI2VuZGlmCiAgICAgfSBl
bHNlIGlmIChpc0NlbGwoKSkKICAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJD
ZWxsOiAlcCIsIGFzQ2VsbCgpKTsKQEAgLTE1Miw3ICsxNTEsNiBAQCBjaGFyKiBKU1ZhbHVlOjpk
ZXNjcmlwdGlvbigpCiAKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9Ci0jZW5kaWYKIAogLy8g
VGhpcyBpbiB0aGUgVG9JbnQzMiBvcGVyYXRpb24gaXMgZGVmaW5lZCBpbiBzZWN0aW9uIDkuNSBv
ZiB0aGUgRUNNQS0yNjIgc3BlYy4KIC8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBpZGVu
dGljYWwgdG8gVG9VSW50MzIgb3RoZXIgdGhhbiB0byBpbnRlcnByZXRhdGlvbgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2aXNpb24gMTA1NzcwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMzIsOSArMjMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTQ2VsbCogYXNDZWxs
KCkgY29uc3Q7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZENhbGxlZSgp
OwogCi0jaWZuZGVmIE5ERUJVRwogICAgICAgICBjaGFyKiBkZXNjcmlwdGlvbigpOwotI2VuZGlm
CiAKICAgICBwcml2YXRlOgogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gSlNWYWx1ZShXcml0
ZUJhcnJpZXJCYXNlPFQ+KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
MzgsMTAgKzM4LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogCiAgICAgY2xhc3MgSlNWYXJpYWJs
ZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNz
IEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAg
IHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTA1Nzcw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTUyLDYgKzUyLDEwIEBAIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0
cnVjdElubGkKIAogdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7CiAKK2ludDMyX3QgZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9ySklUU29vbjsKKwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZUFmdGVyV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6
ZUFmdGVyTG9uZ1dhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9w
dGltaXplQW55dGltZVNvb247CkBAIC0xMzcsNiArMTQxLDEwIEBAIHZvaWQgaW5pdGlhbGl6ZU9w
dGlvbnMoKQogICAgIAogICAgIFNFVChtYXhpbXVtSW5saW5pbmdEZXB0aCwgNSk7CiAKKyAgICBT
RVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXAsICAgICAtMTAwKTsKKyAg
ICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uLCBzdGQ6Om51
bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvckpJVFNvb24sICAgICAgICAgICAgLTEwMCk7CisKICAgICBTRVQoZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCwgICAgIC0xMDAwKTsKICAgICBTRVQoZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAsIC01MDAwKTsKICAg
ICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24sIHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKQEAgLTE4NSw2ICsxOTMsOCBAQCB2
b2lkIGluaXRpYWxpemVPcHRpb25zKCkKICAgICBpZiAoY3B1c1RvVXNlIDwgMSkKICAgICAgICAg
Y3B1c1RvVXNlID0gMTsKICAgICAKKyAgICBjcHVzVG9Vc2UgPSAxOworICAgIAogICAgIFNFVChu
dW1iZXJPZkdDTWFya2VycywgY3B1c1RvVXNlKTsKIAogICAgIEFTU0VSVChleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiA8PSBleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEwIEBA
IGV4dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHIKIAogZXh0ZXJuIHVuc2ln
bmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOyAvLyBEZXB0aCBvZiBpbmxpbmUgc3RhY2ssIHNvIDEg
PSBubyBpbmxpbmluZywgMiA9IG9uZSBsZXZlbCwgZXRjLgogCitleHRlcm4gaW50MzJfdCBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2V4dGVybiBpbnQzMl90IGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2V4dGVybiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBleHRlcm4gaW50MzJfdCBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGV4dGVybiBpbnQz
Ml90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2aXNpb24g
MTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09i
amVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU2NvcGVD
aGFpbkl0ZXJhdG9yOwogICAgIGNsYXNzIFNsb3RWaXNpdG9yOwogICAgIApAQCAtOTEsNiArOTIs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3Qg
Q2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuOwogICAgIH07CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lv
biAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAg
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJh
eTsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7CiAgICAgY2xhc3MgU3RydWN0dXJl
Q2hhaW47CkBAIC0xOTYsNiArMTk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRp
YyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJ
bmZvKik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmKTsKICAgICAgICAgU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAxMDU3NzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGNs
YXNzIFN0cnVjdHVyZUNoYWluIDogcHVibGljIEpTQ2VsbCB7CkBAIC03NCw2ICs3NSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgU3RydWN0dXJl
Q2hhaW4oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRl
c3Ryb3koSlNDZWxsKik7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+ID4gbV92ZWN0b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShy
ZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTkxOCw2ICs5MTgsMTggQEAKICNkZWZpbmUgRU5BQkxFX0pJVCAx
CiAjZW5kaWYKIAorLyogT24gc29tZSBvZiB0aGUgcGxhdGZvcm1zIHdoZXJlIHdlIGhhdmUgYSBK
SVQsIHdlIHdhbnQgdG8gYWxzbyBoYXZlIHRoZSAKKyAgIGxvdy1sZXZlbCBpbnRlcnByZXRlci4g
Ki8KKyNpZiAhZGVmaW5lZChFTkFCTEVfTExJTlQpICYmIEVOQUJMRShKSVQpICYmIFBMQVRGT1JN
KE1BQykgJiYgVVNFKEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyNlbmRp
ZgorCisvKiBJZiB3ZSBoYXZlIExMSW50IGVuYWJsZWQgYW5kIHRoZSBKSVQgZW5hYmxlZCwgd2Ug
YWxzbyBlbmFibGUgT1NSaW5nIGZyb20KKyAgIExMSW50IHRvIHRoZSBKSVQuICovCisjaWYgIWRl
ZmluZWQoRU5BQkxFX0xMSU5UX09TUl9UT19KSVQpICYmIEVOQUJMRShKSVQpICYmIEVOQUJMRShM
TElOVCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UX09TUl9UT19KSVQgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfREZHX0pJVCkgJiYgRU5BQkxFKEpJVCkKIC8qIEVuYWJsZSB0aGUgREZH
IEpJVCBvbiBYODYgYW5kIFg4Nl82NC4gIE9ubHkgdGVzdGVkIG9uIE1hYyBhbmQgR05VL0xpbnV4
LiAqLwogI2lmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSkgJiYgKFBMQVRGT1JNKE1BQykgfHwg
T1MoTElOVVgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtl
ZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVs
TGlua2VkTGlzdC5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4IEBA
IHB1YmxpYzoKIAogICAgIGl0ZXJhdG9yIGJlZ2luKCk7CiAgICAgaXRlcmF0b3IgZW5kKCk7Cisg
ICAgCisgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gYmVnaW4oKSA9PSBlbmQoKTsgfQogCiBw
cml2YXRlOgogICAgIFJhd05vZGUgbV9oZWFkU2VudGluZWw7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDYgKzQzLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlN0cmluZyAqIENGU3Ry
aQogLy8gTGFuZGluZyB0aGUgZmlsZSBtb3ZlcyBpbiBvbmUgcGF0Y2gsIHdpbGwgZm9sbG93IG9u
IHdpdGggcGF0Y2hlcyB0byBjaGFuZ2UgdGhlIG5hbWVzcGFjZXMuCiBuYW1lc3BhY2UgSlNDIHsK
IHN0cnVjdCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5zbGF0b3I7CitjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElkZW50aWZpZXJDaGFyQnVm
ZmVyVHJhbnNsYXRvcjsKIHN0cnVjdCBJZGVudGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9y
OwogfQpAQCAtNzIsNyArNzMsOCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICBmcmllbmQgc3Ry
dWN0IFdURjo6U3Vic3RyaW5nVHJhbnNsYXRvcjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6VUNo
YXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmdJbXBsOwot
CisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogcHJp
dmF0ZToKICAgICBlbnVtIEJ1ZmZlck93bmVyc2hpcCB7CiAgICAgICAgIEJ1ZmZlckludGVybmFs
LAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123855</attachid>
            <date>2012-01-24 17:28:22 -0800</date>
            <delta_ts>2012-01-24 17:33:44 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_48.diff</filename>
            <type>text/plain</type>
            <size>437826</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1ODMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3NiBA
QAorMjAxMi0wMS0yNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5r
QnVmZmVyLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oOiBBZGRl
ZC4KKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6
OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVz
Lmg6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppc1NldCk6CisgICAgICAgIChKU0M6
OkNhbGxMaW5rU3RhdHVzOjpvcGVyYXRvciEpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpi
eXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29u
KToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlND
OjpGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29k
ZUJsb2NrOjpqaXRDb21waWxlSW1wbCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6Ompp
dENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBp
bGVJbXBsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRp
bmdPcHBvcnR1bml0eSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29k
ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0Q29tcGlsZSk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6YWRkTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmFkZEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1i
ZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVl
UHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNv
dWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VT
cGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZURl
ZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlQW55
U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1ZW50RXhpdFNpdGUp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29vbik6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50RXhlY3V0ZUNvdW50
ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlND
OjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6R2V0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5o
OgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpHZXRCeUlkU3RhdHVzKToKKyAgICAgICAg
KEpTQzo6R2V0QnlJZFN0YXR1czo6d2FzU2VlbkluSklUKToKKyAgICAgICAgKiBieXRlY29kZS9J
bnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmg6IEFkZGVkLgorICAgICAgICAo
SlNDOjpMTEludENhbGxMaW5rSW5mbzo6TExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlND
OjpMTEludENhbGxMaW5rSW5mbzo6fkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6
TExJbnRDYWxsTGlua0luZm86OmlzTGlua2VkKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlu
a0luZm86OnVubGluayk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMu
Y3BwOgorICAgICAgICAoSlNDOjpNZXRob2RDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6Cisg
ICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQp
OgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBi
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnNldER1bXBz
R2VuZXJhdGVkQ29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dl
bmVyYXRlZENvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFzZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlzKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25z
dHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhdGNoKToKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmls
aXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAgICAgKiBoZWFw
L0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBoZWFw
L0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoKKyAgICAgICAgKiBp
bnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJyZW50
VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjppc09wY29kZSk6Cisg
ICAgICAgIChKU0M6OkludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKToKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyRmls
ZS5oOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKToKKyAgICAgICAg
KiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6
OkpJVENvZGU6OmlzT3B0aW1pemluZ0pJVCk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OmlzQmFz
ZWxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6SklUQ29kZSk6CisgICAgICAgICog
aml0L0pJVERyaXZlci5oOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlSWZBcHByb3ByaWF0ZSk6
CisgICAgICAgIChKU0M6OmppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUpOgorICAgICAg
ICAqIGppdC9KSVRFeGNlcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6aml0VGhyb3cpOgorICAg
ICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNU
SU9OKToKKyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiBsbGludDog
QWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRDb21tb24uaDogQWRkZWQuCisgICAgICAgICog
bGxpbnQvTExJbnREYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpE
YXRhKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6On5EYXRhKToKKyAgICAgICAgKiBsbGlu
dC9MTEludERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpleGNlcHRp
b25JbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6b3Bjb2RlTWFwKToK
KyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnRzLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OkxMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6
Z2V0RXZhbEVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0UHJvZ3JhbUVudHJ5
cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4
Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhy
b3dJbkNhbGxlcik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3du
RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0
aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX29wZXJhbmQpOgorICAgICAgICAoSlND
OjpMTEludDo6bGxpbnRfdHJhY2VfdmFsdWUpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRf
SEVMUEVSX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6dHJhY2VGdW5jdGlvblByb2xvZ3Vl
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNob3VsZEpJVCk6CisgICAgICAgIChKU0M6OkxMSW50
OjplbnRyeU9TUik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXNvbHZlR2xvYmFsKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhv
c3RDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpnZW5lcmljQ2FsbCk6CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6IEFk
ZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBsbGludC9MTEludFRodW5rcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTElu
dDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8pOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rp
b25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5j
dGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTElu
dDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OnByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGlu
dC9MTEludFRodW5rcy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQuCisg
ICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12Ny5y
YjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tlbmRz
LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0
b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lz
dGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9zZXR0aW5ncy5yYjogQWRkZWQu
CisgICAgICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6IEFkZGVkLgorICAgICAgICAqIG9m
ZmxpbmVhc20veDg2LnJiOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvZGVTcGVjaWFsaXph
dGlvbktpbmQuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoK
KyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAg
KiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9j
ayk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAg
KEpTQzo6c2FtcGxpbmdEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
Ojpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0
Q29tcGlsZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2Fs
bCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0
cnVjdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJ
bnRlcm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNv
bnN0cnVjdEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnByZXBhcmVG
b3JFeGVjdXRpb24pOgorICAgICAgICAoSlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OkpTQWN0
aXZhdGlvbjo6dGVhck9mZik6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAg
ICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
RGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
T2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6Cisg
ICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5m
by5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMu
Y3BwOgorICAgICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAgICAg
ICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6Cisg
ICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL1NlbnRp
bmVsTGlua2VkTGlzdC5oOgorICAgICAgICAoV1RGOjpTZW50aW5lbExpbmtlZExpc3Q6OmlzRW1w
dHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKwogMjAxMi0wMS0yNCAgTWFy
ayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBjb3B5
aW5nIGNvbGxlY3RvciBmb3Igb3V0LW9mLWxpbmUgSlNPYmplY3QgcHJvcGVydHkgc3RvcmFnZQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsMTUgQEAKIAlvYmplY3RzID0gewogCiAvKiBC
ZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBC
RkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdl
dDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIg
LyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50
IE9mZnNldHMiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwQUExNEJBN0ZEOTAw
QkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKKwkJCSk7CisJCQluYW1lID0g
IkxMSW50IE9mZnNldHMiOworCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJ
fTsKIAkJNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCIC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3Qg
PSA2NUZCM0Y3NzA5RDExRUJEMDBGNDlERUIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkRlcml2ZWQgU291cmNlcyIgKi87CkBAIC0xNCw2ICsyMyw5
IEBACiAJCQkJNjVGQjNGNjUwOUQxMUU5MTAwRjQ5REVCIC8qIEdlbmVyYXRlIERlcml2ZWQgU291
cmNlcyAqLywKIAkJCQk1RDM1REVFMTBDN0MxNDBCMDA4NjQ4QjIgLyogR2VuZXJhdGUgRFRyYWNl
IGhlYWRlciAqLywKIAkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjQxNEJB
ODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOwogCQkJbmFtZSA9
ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsK
IAkJfTsKQEAgLTQ4LDYgKzYwLDEwIEBACiAJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBU
aHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJp
Y3Rpb25WZXJpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBCQ0Q4MzU3MTQ4NTg0NTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4
NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyog
U2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi87IH07CisJ
CTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUIxNEJDRjQ2
MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi87IH07CisJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4
NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTcx
NEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBC
ODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBI
YW5kbGVySW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBQTE0
QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01OCw5ICs3NCwxMyBAQAogCQkwRjBC
ODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCMzE0QkNGODVFMDA4ODVC
NEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJl
c29sdmVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCOTE0QkNG
OTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIw
MDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEZDNDVBMTRCRDE1RjUw
MEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2Fs
bExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNUYxNUQxNEI3QTcz
QTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTZENzI2MTQyQzM5QzAwMENGNzg0QSAvKiBCaXRW
ZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCTBGMjFD
MjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVRE
cml2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0ExNEJFNzI3MzAw
QURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNw
ZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktp
bmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAw
QURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjI0MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vh
a1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjJDNTU2RjE0NzM4RjMxMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkUxNDczOEYyRTAwMTIx
RTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjJDNTU3MDE0NzM4RjM1MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nr
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJD
NTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi87IH07CkBAIC03MSw2
ICs5MSwxOSBAQAogCQkwRjQzMTczODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQzMTcz
NjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODMx
NEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJ
VEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJ
bnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTQxNEJB
N0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRI
ZWxwZXJzLmNwcCAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby11bnVzZWQt
cGFyYW1ldGVyIjsgfTsgfTsKKwkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVs
cGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3
MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAgKi87IH07CisJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBM
TEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAg
Ki87IH07CisJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzUxNEJCQjE2
OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2Zm
bGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4
MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM3MTRCQkIxNjkwMEJG
RTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0QxNEJCQjE3
RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dM
ZXZlbEludGVycHJldGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRTE0QkJC
M0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLzsgfTsKKwkJMEY0NjgwRDMxNEJCRDE2NzAw
QkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQ0MTRC
QkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAv
KiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLzsgfTsKKwkJMEY0NjgwRDUxNEJCRDI0QjAwQkZF
MjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJl
dHVyblZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYwOENF
MTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAxNzQxNDNGQ0QzMzAw
NjhCNzdDIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MjAxNzIxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR1Zh
cmlhYmxlQWNjZXNzRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGNjIwMTc1MTQzRkNEMzcwMDY4Qjc3QyAvKiBERkdPcGVyYW5kcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MjAxNzExNDNG
Q0QyRjAwNjhCNzdDIC8qIERGR09wZXJhbmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM4Myw3ICs0MTYsNyBAQAogCQk4NkI5OUFFMzExN0U1
NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI5OUFFMTExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVm
ZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODZCQjA5QzAxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkUxMzhFMzgxQjAwNTY3MDJG
IC8qIERGR1JlcGF0Y2guY3BwICovOyB9OwogCQk4NkJCMDlDMTEzOEUzODFCMDA1NjcwMkYgLyog
REZHUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZCQjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCAqLzsgfTsKLQkJODZD
MzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkg
LyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgfTsKKwkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8q
IE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMDEx
QTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REQxMUEyMTNFRTAwMDdGN0YwIC8q
IE1hY3JvQXNzZW1ibGVyQVJNLmNwcCAqLzsgfTsKIAkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0Yw
IC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVy
TUlQUy5oICovOyB9OwogCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4
REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCAqLzsgfTsKQEAgLTc1Miw2ICs3
ODUsMjAgQEAKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhD
b250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLworCQkwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIg
LyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRl
bVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8q
IFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElE
U3RyaW5nID0gMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9ICJMTElu
dCBPZmZzZXRzIjsKKwkJfTsKKwkJMEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJ
CWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9i
amVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBG
NDY4MDhFMTRCQTdFNUUwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSBKU0NMTEludE9mZnNldHNF
eHRyYWN0b3I7CisJCX07CiAJCTE0MTIxNEJFMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQlj
b250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmpl
Y3QgKi87CkBAIC03OTcsNiArODQ0LDE1IEBACiAvKiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICov
CisJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWRzdFBhdGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsKKwkJCWRzdFN1YmZvbGRlclNw
ZWMgPSAwOworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDE7CisJCX07CiAJCTVEQkIxNTExMTMxRDBCMTMwMDU2QUQzNiAvKiBDb3B5
IFN1cHBvcnQgU2NyaXB0ICovID0gewogCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsK
IAkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOwpAQCAtODM3LDYgKzg5MywxMCBAQAogCQkwQkFDOTQ5
RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBU
ZW1wb3JhcnlDaGFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9y
YXJ5Q2hhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCRjI4QTI4MTFBMzNE
QzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNpemVMaW1pdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEVudHJ5cG9pbnRzLmNwcDsgcGF0aCA9
IGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEVudHJ5cG9pbnRzLmg7IHBhdGggPSBsbGlu
dC9MTEludEVudHJ5cG9pbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4
Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludFRodW5rcy5jcHA7IHBhdGggPSBsbGludC9MTEludFRo
dW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk4MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMTEludFRodW5rcy5oOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVUeXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5kbGVySW5mby5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhw
cmVzc2lvblJhbmdlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHBy
ZXNzaW9uUmFuZ2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDcsOSAr
OTA3LDEzIEBACiAJCTBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0lu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0aG9kQ2FsbExpbmtJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0
RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHbG9iYWxSZXNvbHZlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBC
ODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFJldHVybk9mZnNldFRvQnl0
ZWNvZGVPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwRkM0NTgxNEJE
MTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExMSW50Q2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uU2xvd1BhdGhzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQml0VmVjdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRC
IC8qIEpJVERyaXZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVREcml2
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyNzkxNEJFNzI3MzAwQURD
NjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRpb25IYXJuZXNzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRl
Y29kZUNvbnZlbnRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVj
b2RlQ29udmVudGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNDJEQTUx
M0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJs
b2Nrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBERkdDb2RlQmxv
Y2tzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkUxNDczOEYyRTAw
MTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gREZHQ29kZUJsb2Nrcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODYwLDYg
KzkyNCwyMCBAQAogCQkwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpc3RhYmxlSGFuZGxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
SVRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwODAx
NEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSklURXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQu
bWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBKU0NMTEludE9m
ZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTBG
NDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFeGNlcHRpb25zLmNwcDsgcGF0aCA9IGxs
aW50L0xMSW50RXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFeGNlcHRpb25zLmg7IHBhdGggPSBsbGludC9MTElu
dEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUYxNEJB
N0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBMTEludEhlbHBlcnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50SGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBM
TEludEhlbHBlcnMuaDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHBhdGggPSBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUy
NzIgLyogTExJbnRDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJ
bnRDb21tb24uaDsgcGF0aCA9IGxsaW50L0xMSW50Q29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21D
b25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmg7IHBhdGggPSBsbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTG93
TGV2ZWxJbnRlcnByZXRlci5jcHA7IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcy
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTG93TGV2ZWxJbnRlcnByZXRlci5oOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUy
NzIgLyogTExJbnREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IExMSW50RGF0YS5jcHA7IHBhdGggPSBsbGludC9MTEludERhdGEuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RGF0YS5oOyBwYXRoID0gbGxp
bnQvTExJbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQwMTRC
QkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxS
ZXR1cm5WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIb3N0Q2FsbFJl
dHVyblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENDMTQ2QkU2
MDIwMDA0NzJBOSAvKiBERkdCeXRlQ29kZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR0J5dGVDb2RlQ2FjaGUuaDsgcGF0aCA9IGRmZy9ERkdCeXRlQ29kZUNhY2hl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJB
OSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY2MjAxNkQxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQWJzdHJhY3RTdGF0ZS5jcHA7
IHBhdGggPSBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTc5LDYgKzE2NTcsMTMgQEAKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkw
RjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBC
WEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
KwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQl9OwogCQkxNDEyMTExRTBBNDg3OTNDMDA0ODAyNTUgLyogRnJhbWV3b3JrcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKQEAgLTE2MzcsNiArMTcyMiw3IEBACiAJCQkJMTQxMjExMjAwQTQ4
NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYwQTNFOEY5MDAwQkFGNTlD
IC8qIHRlc3RhcGkgKi8sCiAJCQkJNjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdF
eHAgKi8sCisJCQkJMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4
dHJhY3RvciAqLywKIAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMTY2Nyw2ICsxNzUzLDcgQEAKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4
NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBG
MDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyog
Y29uZmlnLmggKi8sCisJCQkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovLAog
CQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQx
MkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2
ODEgLyogYnl0ZWNvZGUgKi8sCkBAIC0xNzA1LDYgKzE3OTIsMjggQEAKIAkJCXRhYldpZHRoID0g
NDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8q
IGxsaW50ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkw
RjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8sCisJCQkJ
MEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLywKKwkJCQkw
RjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovLAorCQkJCTBGMEI4
Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovLAorCQkJCTBGNDY4MENFMTRC
QkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovLAorCQkJCTBGNDY4MENGMTRCQkIzRDEw
MEJGRTI3MiAvKiBMTEludERhdGEuaCAqLywKKwkJCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIg
LyogTExJbnRDb21tb24uaCAqLywKKwkJCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmggKi8sCisJCQkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8q
IExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovLAorCQkJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3
MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi8sCisJCQkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8sCisJCQkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovLAorCQkJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludEhlbHBlcnMuY3BwICovLAorCQkJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludEhlbHBlcnMuaCAqLywKKwkJCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gbGxpbnQ7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAyNTUg
LyogdGVzdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAt
MTczNyw2ICsxODQ2LDggQEAKIAkJMTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY0NjgwRDAxNEJC
QzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovLAorCQkJCTBGNDY4MEQx
MTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8sCiAJCQkJMEY0Njgw
N0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovLAogCQkJCTBGNDY4MDgw
MTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEZEODJFMzcxNDFB
QjE0MjAwMTc5Qzk0IC8qIENvbXBhY3RKSVRDb2RlTWFwLmggKi8sCkBAIC0yMTY2LDYgKzIyNzcs
OCBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYyMUMyNzkxNEJFNzI3MzAwQURD
NjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLywKKwkJCQkwRjIxQzI3QTE0QkU3Mjcz
MDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovLAogCQkJCTBGMTVGMTVEMTRCN0E3M0Ew
MDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBC
OUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8q
IEFyZ0xpc3QuaCAqLywKQEAgLTI1MjUsNiArMjYzOCw4IEBACiAJCTk2OUEwNzhGMEVEMUQzQUUw
MEYxRjY4MSAvKiBieXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlv
bnMuaCAqLywKKwkJCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0lu
Zm8uaCAqLywKIAkJCQkwRjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMu
Y3BwICovLAogCQkJCTBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5o
ICovLAogCQkJCTBGOTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAq
LywKQEAgLTMwNzYsNyArMzE5MSwxNiBAQAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCNDMxMkRCOEE4MTAwQTlG
RTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1RjE0
QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29t
bW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDRDE0QkJCMTdE
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0
NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRz
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRU
aHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBD
b2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8q
IEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVC
NEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDg1LDcgKzMy
MDksMTEgQEAKIAkJCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJ
bmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyogR2xv
YmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4
NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJpdmVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhlY3V0aW9u
SGFybmVzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8q
IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdGMTRC
RUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjdCMjk0QTE0QzNDRDI5MDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QzE0QzNDRDQzMDA3QzNEQjEgLyogREZHQnl0ZUNv
ZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTAzLDYgKzMyMzEsMjQgQEAKIC8qIEVuZCBQ
QlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdl
dCBzZWN0aW9uICovCisJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNl
dHNFeHRyYWN0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0
b3IiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcy
IC8qIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1ld29y
a3MgKi8sCisJCQkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLywKKwkJ
CSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkw
RjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7
CisJCQluYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdE5hbWUgPSBK
U0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMEY0NjgwOEYx
NEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXByb2R1
Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CiAJCTE0MTIxMTFG
MEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovID0gewogCQkJaXNhID0gUEJYTmF0aXZlVGFy
Z2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1
NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRv
bSIgKi87CkBAIC0zMjI5LDExICszMzc1LDI5IEBACiAJCQkJMTRCRDU5QkUwQTNFOEY5MDAwQkFG
NTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJOTMyRjVCREEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAq
LywKIAkJCQk2NTExMjJGNzE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkw
RjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAor
CQkJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovLAogCQkJKTsK
IAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU2hlbGxT
Y3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8q
IEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL2xsaW50L0xvd0xl
dmVsQXNzZW1ibGVyLmFzbSIsCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNv
dXJjZXMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9M
TEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJ
CQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9m
ZnNldHMvXCJcblxuL3Vzci9iaW4vZW52IHJ1YnkgXCIke1NSQ1JPT1R9L29mZmxpbmVhc20vZ2Vu
ZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYlwiIFwiJHtTUkNST09UfS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbVwiIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9MTElu
dERlc2lyZWRPZmZzZXRzLmhcIlxuIjsKKwkJfTsKIAkJMzcxM0YwMTQxNDI5MDUyNDAwMzYzODdG
IC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzICovID0g
ewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKQEAgLTMzMzksNyArMzUwMyw3IEBACiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwot
CQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNfRElS
fS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7U1JD
Uk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2YVNjcmlw
dENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJcblxubWFrZSAtLW5v
LWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlXCIg
LWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNwdWBcbiI7CisJCQlzaGVsbFNjcmlwdCA9ICJt
a2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9kb2NzXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlXCJcblxuL2Jpbi9sbiAtc2ZoIFwiJHtTUkNST09UfVwiIEphdmFTY3JpcHRD
b3JlXG5leHBvcnQgSmF2YVNjcmlwdENvcmU9XCJKYXZhU2NyaXB0Q29yZVwiXG5leHBvcnQgQlVJ
TFRfUFJPRFVDVFNfRElSPVwiLi4vLi5cIlxuXG5tYWtlIC0tbm8tYnVpbHRpbi1ydWxlcyAtZiBc
IkphdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2VcIiAtaiBgL3Vzci9zYmluL3N5c2N0
bCAtbiBody5uY3B1YFxuXG4vdXNyL2Jpbi9lbnYgcnVieSBKYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FzbS5yYiBKYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAk
e0JVSUxUX1BST0RVQ1RTX0RJUn0vSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIExMSW50QXNzZW1i
bHkuaFxuIjsKIAkJfTsKIAkJOTMxOTU4NkIwOUQ5RjkxQTAwQTU2RkQ0IC8qIENoZWNrIEZvciBH
bG9iYWwgSW5pdGlhbGl6ZXJzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBo
YXNlOwpAQCAtMzM3NCw2ICszNTM4LDE0IEBACiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LworCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9
IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
KwkJCWZpbGVzID0gKAorCQkJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFEMEE0ODc5M0MwMDQ4MDI1
NSAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzYzMiw3ICszODA0LDE0IEBACiAJCQkJ
ODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRI
ZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAv
KiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwODMxNEJBNTcz
MTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0Njgw
Q0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5W
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyog
TExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QzE0QkNGNDYz
MDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjAx
NEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjBCODNCNDE0QkNGODYwMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUY2OUU4NkMzMTRDNkU1NTEwMDJDMkM2MiAvKiBOdW1iZXJPZkNvcmVzLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMzY1NCw2ICszODMzLDE2IEBACiAvKiBFbmQgUEJYU291cmNl
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5IHNl
Y3Rpb24gKi8KKwkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMEY0
NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi87CisJCQl0YXJnZXRQcm94
eSA9IDBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87
CisJCX07CisJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4
MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQl0
YXJnZXRQcm94eSA9IDBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVt
UHJveHkgKi87CisJCX07CiAJCTE0MTIxNEJGMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhUYXJnZXRE
ZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJCXRhcmdl
dCA9IDE0MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovOwpAQCAtMzY4Nyw2ICsz
ODc2LDE0OCBAQAogLyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTBGNDY4MDk2MTRCQTdFNUUw
MEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsK
KwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0Vf
U1RSSVAgPSBOTzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdD
Q19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0g
WUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNT
T1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIs
CisJCQkJKTsKKwkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5POworCQkJCUdDQ19W
RVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FS
Tl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJ
TkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlF
UzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFS
Q0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRf
UFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhT
KSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCU9O
TFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUp
IjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9
ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJD
SF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwOTcxNEJB
N0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhT
ID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZ
X1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2Fy
Zi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJ
R0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20u
YXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJ
VF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVT
ID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19X
QVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNo
PSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIp
L0xMSW50T2Zmc2V0cyQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NY
X0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRf
TkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BB
VEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJf
U0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4
MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9V
U0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsK
KwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1B
VCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251
OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJ
T04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0
X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19Q
Uk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOwor
CQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9Q
QVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9E
VUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwK
KwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVD
VF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVT
RVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJ
bnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9m
aWxpbmc7CisJCX07CisJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJD
SFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlE
RUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19M
QU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05T
ID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5n
LjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdD
Q19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9V
VF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7
CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWlj
dSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChI
RUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJH
RVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsK
KwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUQxNEJBN0ZEOTAw
QkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMg
Y29weSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODBBRTE0QkE3RkQ5
MDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3Vy
Y2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODBBRjE0
QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJp
dmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJ
MEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9O
QU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlv
bjsKKwkJfTsKIAkJMTQxMjExM0EwQTQ4Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovID0gewogCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewpAQCAtMzky
OCw2ICs0MjU5LDI4IEBACiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOUExNEJB
N0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFy
Z2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovID0geworCQkJaXNhID0gWENDb25maWd1
cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwOTYxNEJB
N0U1RTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAv
KiBSZWxlYXNlICovLAorCQkJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcg
Ki8sCisJCQkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkp
OworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUMxNEJBN0ZEOTAwQkZF
MjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJM
TEludCBPZmZzZXRzIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQli
dWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBE
ZWJ1ZyAqLywKKwkJCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJ
CQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MEIw
MTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFBy
b2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi8gPSB7CiAJCQlp
c2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShyZXZp
c2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2RlZmluZSBHTE9CQUxfVEhV
TktfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0xKSkK
ICNkZWZpbmUgUkVHRVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nh
c3Q8aW50cHRyX3Q+KC0yKSkKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+CisjaW5jbHVk
ZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVDb252ZW50aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgQnl0ZWNvZGVDb252ZW50aW9uc19oCisjZGVmaW5lIEJ5dGVjb2RlQ29udmVu
dGlvbnNfaAorCisvLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9u
cyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6CisvLyAg
ICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxs
RnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVy
RmlsZS5oLgorLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMg
ZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVz
IHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgorLy8gICAgICAweDQwMDAwMDAwLTB4N0ZG
RkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBp
biB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgorc3RhdGljIGNvbnN0IGludCBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7CisKKyNlbmRpZiAvLyBCeXRl
Y29kZUNvbnZlbnRpb25zX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNywxNyArMjcsNDAgQEAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJv
bUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkK
K3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5
dGVjb2RlSW5kZXgpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJ
bmRleDsKKyAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaW5zdHJ1Y3Rpb25b
NF0udS5jYWxsTGlua0luZm87CisgICAgCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNhbGxM
aW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCksIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJu
IENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKKyNlbmRpZgorfQorCiBDYWxsTGlua1N0YXR1cyBD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwog
ICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFC
TEUoVkFMVUVfUFJPRklMRVIpCi0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKAotICAgICAgICBw
cm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxs
ZWUuZ2V0KCksCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKGJ5dGVj
b2RlSW5kZXgpKTsKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mQ2FsbExpbmtJbmZv
cygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRl
Y29kZUluZGV4KTsKKyAgICAKKyAgICBpZiAocHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nh
c2UoYnl0ZWNvZGVJbmRleCkpCisgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygwLCB0cnVl
KTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBwcm9maWxlZEJsb2NrLT5nZXRDYWxs
TGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CisgICAgaWYgKCF0
YXJnZXQpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5
dGVjb2RlSW5kZXgpOworICAgIAorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQsIGZh
bHNlKTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKICNlbmRp
ZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNSArNDcsMTcgQEAgcHVi
bGljOgogICAgIAogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9j
ayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25z
dCB7IHJldHVybiAhIW1fY2FsbFRhcmdldDsgfQorICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJl
dHVybiAhIW1fY2FsbFRhcmdldCB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCi0gICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsVGFyZ2V0OyB9CisgICAgYm9v
bCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQogICAgIAogICAgIGJvb2wg
Y291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9
CiAgICAgCiAgICAgSlNGdW5jdGlvbiogY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fs
bFRhcmdldDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29t
cHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAgICAK
ICAgICBKU0Z1bmN0aW9uKiBtX2NhbGxUYXJnZXQ7CiAgICAgYm9vbCBtX2NvdWxkVGFrZVNsb3dQ
YXRoOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAj
aW5jbHVkZSA8c3RkaW8uaD4KQEAgLTU5LDggKzYwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiB1c2lu
ZyBuYW1lc3BhY2UgREZHOwogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJM
RShPUENPREVfU0FNUExJTkcpCi0KIHN0YXRpYyBVU3RyaW5nIGVzY2FwZVF1b3Rlcyhjb25zdCBV
U3RyaW5nJiBzdHIpCiB7CiAgICAgVVN0cmluZyByZXN1bHQgPSBzdHI7CkBAIC0zNTgsMTAgKzM1
NywxMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bjb2RlTGVu
Z3Roc1tleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtpXS51
Lm9wY29kZSldKQogICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7CiAKLSAgICBwcmludGYoIiVs
dSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNh
bGxlZSByZWdpc3RlcihzKVxuXG4iLAorICAgIHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rpb25zOyAl
bHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpOyAl
ZCB2YXJpYWJsZShzKVxuXG4iLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihp
bnN0cnVjdGlvbkNvdW50KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSksCi0gICAgICAgIHRoaXMs
IG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgICAgICB0aGlzLCBt
X251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX251bVZhcnMpOwogCiAgICAg
VmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4gPSBpbnN0cnVjdGlvbnMo
KS5iZWdpbigpOwogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGluc3RydWN0aW9ucygpLmVuZCgpOwpAQCAtODk4LDYgKzg5NywxNCBAQCB2b2lkIENvZGVCbG9j
azo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChl
eGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
InB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKKyAg
ICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlk
T3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTI5MSw4ICsxMjk4LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0
YXRlKiBleGVjLCBjbwogICAgIH0KIH0KIAotI2VuZGlmIC8vICFkZWZpbmVkKE5ERUJVRykgfHwg
RU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNT
CiBzdGF0aWMgSGFzaFNldDxDb2RlQmxvY2sqPiBsaXZlQ29kZUJsb2NrU2V0OwogI2VuZGlmCkBA
IC0xNDU5LDYgKzE0NjQsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tU
YWcsCiB7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1QYXJhbWV0ZXJzKCkpOwogICAg
IG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogICAgIAogICAg
IGlmIChvdGhlci5tX3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nh
cnkoKTsKQEAgLTE1MDcsNiArMTUxMyw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4
ZWN1dGFibGUqIG8KICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIAogICAgIG9wdGltaXplQWZ0
ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogCiAjaWYgRFVNUF9DT0RFX0JMT0NL
X1NUQVRJU1RJQ1MKICAgICBsaXZlQ29kZUJsb2NrU2V0LmFkZCh0aGlzKTsKQEAgLTE1MjQsNyAr
MTUzMSwxMSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2lmIEVOQUJMRShWRVJCT1NFX1ZB
TFVFX1BST0ZJTEUpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNlbmRpZgotICAgIAorCisj
aWYgRU5BQkxFKExMSU5UKSAgICAKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVn
aW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xM
SW50Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogI2lm
IEVOQUJMRShKSVQpCiAgICAgLy8gV2UgbWF5IGJlIGRlc3Ryb3llZCBiZWZvcmUgYW55IENvZGVC
bG9ja3MgdGhhdCByZWZlciB0byB1cyBhcmUgZGVzdHJveWVkLgogICAgIC8vIENvbnNpZGVyIHRo
YXQgdHdvIENvZGVCbG9ja3MgYmVjb21lIHVucmVhY2hhYmxlIGF0IHRoZSBzYW1lIHRpbWUuIFRo
ZXJlCkBAIC0xNzM2LDggKzE3NDcsNTcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25k
aXRpb25hbGx5KAogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5saW5raW5n
ID0gZmFsc2U7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgCisj
aWYgRU5BQkxFKExMSU5UKQorICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFs
RGF0YS0+aW50ZXJwcmV0ZXI7CisgICAgaWYgKCFpbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7Cisg
ICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNp
emUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBj
dXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zW2ldXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1
ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgeworICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlf
aWQ6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgICAgICAgICBpZiAo
IWN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1ckluc3Ry
dWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsK
KyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQgPSAwOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3Q6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bDoKKyAgICAgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0u
dS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2Vk
KGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAgICAgICAg
ICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdl
dCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY3VySW5z
dHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0
cnVjdGlvbls2XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3Ry
dWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJ
bnN0cnVjdGlvblswXS51Lm9wY29kZSA9IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5
X2lkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
cy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlv
biogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
Y3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsCisgICAgICAg
ICAgICAgICAgICAgfHwgaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBd
LnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKKyAgICAgICAgICAgIGlm
ICghY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5z
dHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAg
ICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9IDA7CisgICAgICAgIH0KKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9zLnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5mb3NbaV0uaXNMaW5r
ZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQobV9sbGludENhbGxMaW5rSW5mb3NbaV0uY2FsbGVlLmdl
dCgpKSkgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQorICAgICAgICAg
ICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IGNhbGwgZnJvbSAlcC5cbiIsIHRoaXMp
OworICAgICAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCEhbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFz
dFNlZW5DYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxh
c3RTZWVuQ2FsbGVlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZv
c1tpXS5sYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgICAgICB9CisgICAgfQorI2VuZGlmIC8v
IEVOQUJMRShMTElOVCkKKwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8vIENoZWNrIGlmIHdl
J3JlIG5vdCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAgICAgaWYgKCEoc2hvdWxk
SW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBtX2RmZ0RhdGEtPmxpdmVu
ZXNzSGFzQmVlblByb3ZlZCkpIHsKQEAgLTE4NTgsMTAgKzE5MTgsMTIgQEAgdm9pZCBDb2RlQmxv
Y2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9mdW5jdGlvbkRlY2xzLnNpemUoKTsgKytpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9m
dW5jdGlvbkRlY2xzW2ldKTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCi0gICAgZm9yIChzaXpl
X3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8
IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlv
bnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7Ci0gICAgZm9yIChzaXplX3Qg
c2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygp
W21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIGlmIChtX2dsb2JhbERhdGEt
PmludGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1f
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkK
KyAgICAgICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9w
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOworICAgICAgICBmb3IgKHNpemVfdCBzaXpl
ID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyAr
K2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygp
W21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKERGR19KSVQpCkBAIC0yMDcwLDYgKzIxMzIsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnVu
bGlua0NhbGxzKCkKIHsKICAgICBpZiAoISFtX2FsdGVybmF0aXZlKQogICAgICAgICBtX2FsdGVy
bmF0aXZlLT51bmxpbmtDYWxscygpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAg
IGlmIChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpKQorICAgICAgICAgICAgbV9s
bGludENhbGxMaW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgfQorI2VuZGlmCiAgICAgaWYgKCEo
bV9jYWxsTGlua0luZm9zLnNpemUoKSB8fCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKQEAg
LTIwODQsMTAgKzIxNTIsMzkgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIAogdm9p
ZCBDb2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMoKQogeworI2lmIEVOQUJMRShMTElOVCkK
KyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJ
bnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+dW5s
aW5rKCk7CisjZW5kaWYKKyAgICBpZiAobV9pbmNvbWluZ0NhbGxzLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOwogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcih0aGlzKTsKICAgICB3
aGlsZSAobV9pbmNvbWluZ0NhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0NhbGxzLmVuZCgpKQog
ICAgICAgICBtX2luY29taW5nQ2FsbHMuYmVnaW4oKS0+dW5saW5rKCptX2dsb2JhbERhdGEsIHJl
cGF0Y2hCdWZmZXIpOwogfQorCit1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4
ZWNTdGF0ZSogZXhlYywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQoreworI2lmIEVO
QUJMRShMTElOVCkKKyAgICBpZiAocmV0dXJuQWRkcmVzcy52YWx1ZSgpID49IGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X2JlZ2luKQorICAgICAgICAmJiByZXR1cm5BZGRyZXNzLnZhbHVlKCkg
PD0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZW5kKSkgeworICAgICAgICBBU1NFUlQoZXhl
Yy0+Y29kZUJsb2NrKCkpOworICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkgPT0gdGhp
cyk7CisgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkp
KTsKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gZXhlYy0+Y3VycmVudFZQQygp
OworICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb24pOworICAgICAgICByZXR1cm4gYnl0ZWNvZGVP
ZmZzZXQoaW5zdHJ1Y3Rpb24pOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OworI2VuZGlmCisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gMTsKKyAgICBW
ZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1f
cmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOworICAgIGlmICghY2FsbEluZGljZXMu
c2l6ZSgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNl
dD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCku
b2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OworfQogI2Vu
ZGlmCiAKIHZvaWQgQ29kZUJsb2NrOjpjbGVhckV2YWxDYWNoZSgpCkBAIC0yMTgzLDI0ICsyMjgw
LDQ1IEBAIGJvb2wgRnVuY3Rpb25Db2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRoREYKIAogdm9pZCBQ
cm9ncmFtQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAh
PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemlu
Z0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsK
ICAgICBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+
amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwogfQogCiB2b2lkIEV2YWxDb2Rl
QmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6
OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJ
VFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRp
Y19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGlt
aXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6Ompl
dHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5l
SklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkp
OwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRD
b2RlRm9yKCpnbG9iYWxEYXRhKCksIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3Qg
OiBDb2RlRm9yQ2FsbCk7CiB9CisKK3ZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6aml0Q29tcGlsZUlt
cGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkg
PT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFj
ZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3du
ZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEV2YWxD
b2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAg
ICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAg
IEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxF
dmFsRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShnbG9iYWxEYXRh
KTsKK30KKwordm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJs
ZSgpKS0+aml0Q29tcGlsZUZvcihnbG9iYWxEYXRhLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9y
Q29uc3RydWN0IDogQ29kZUZvckNhbGwpOworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVkFMVUVf
UFJPRklMRVIpCkBAIC0yMzAzLDYgKzI0MjEsMTggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBWYWx1
ZVByb2ZpbGVzKCkKIH0KICNlbmRpZgogCit2b2lkIENvZGVCbG9jazo6aGFuZGxlQnl0ZWNvZGVE
aXNjYXJkaW5nT3Bwb3J0dW5pdHkoKQoreworI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKSAm
JiAhRU5BQkxFKExMSU5UKQorICAgIGlmIChCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0
ZWRDb2RlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoISFhbHRlcm5hdGl2ZSgpKQorICAg
ICAgICBkaXNjYXJkQnl0ZWNvZGUoKTsKKyAgICBlbHNlCisgICAgICAgIGRpc2NhcmRCeXRlY29k
ZUxhdGVyKCk7CisjZW5kaWYKK30KKwogI2lmbmRlZiBOREVCVUcKIGJvb2wgQ29kZUJsb2NrOjp1
c2VzT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlEKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2
ICszMCw3IEBACiAjaWZuZGVmIENvZGVCbG9ja19oCiAjZGVmaW5lIENvZGVCbG9ja19oCiAKKyNp
bmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgi
CiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRl
ICJDb2RlT3JpZ2luLmgiCkBAIC01MCw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSklUV3JpdGVCYXJy
aWVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKdW1wVGFibGUu
aCIKKyNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkxpbmVJbmZvLmgi
CiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQcmVkaWN0aW9uVHJhY2tlci5oIgpAQCAt
NjUsMTYgKzY3LDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgIlN0cnVj
dHVyZVN0dWJJbmZvLmgiCiAKLS8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBv
cGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdl
czoKLS8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20g
dGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUg
UmVnaXN0ZXJGaWxlLmguCi0vLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMg
aW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVt
cG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCi0vLyAgICAgIDB4NDAwMDAw
MDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBl
bnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCi1zdGF0aWMgY29u
c3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKLQogbmFtZXNw
YWNlIEpTQyB7CiAKLSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgREZHQ29kZUJsb2Nr
czsKKyAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogCiAgICAgaW5saW5lIGludCB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoaW50IGFyZ3Vt
ZW50c1JlZ2lzdGVyKSB7IHJldHVybiBhcmd1bWVudHNSZWdpc3RlciAtIDE7IH0KIApAQCAtODMs
NiArODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMg
VW5jb25kaXRpb25hbEZpbmFsaXplciwgcHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgewog
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJ
VDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJs
aWM6CiAgICAgICAgIGVudW0gQ29weVBhcnNlZEJsb2NrVGFnIHsgQ29weVBhcnNlZEJsb2NrIH07
CiAgICAgcHJvdGVjdGVkOgpAQCAtMTIzLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSByZXN1bHQtPmFsdGVybmF0aXZlKCk7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0
KTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpC
YXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUo
cmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIH0KICNlbmRpZgpAQCAtMTM0LDExICsxMzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0jaWYgIWRlZmluZWQoTkRFQlVH
KSB8fCBFTkFCTEVfT1BDT0RFX1NBTVBMSU5HCiAgICAgICAgIHZvaWQgZHVtcChFeGVjU3RhdGUq
KSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZXMoY29uc3QgSW5zdHJ1Y3Rpb24q
KSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZShjb25zdCBjaGFyKiBuYW1lLCBj
b25zdCBJbnN0cnVjdGlvbiosIGludCBvcGVyYW5kKSBjb25zdDsKLSNlbmRpZgogCiAgICAgICAg
IGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KIApA
QCAtMTk0LDE1ICsxOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAq
KGJpbmFyeVNlYXJjaDxNZXRob2RDYWxsTGlua0luZm8sIHVuc2lnbmVkLCBnZXRNZXRob2RDYWxs
TGlua0luZm9CeXRlY29kZUluZGV4PihtX21ldGhvZENhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9t
ZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CiAK
LSAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybklu
ZGV4VmVjdG9yOwotICAgICAgICAgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNl
dD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCku
b2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OwotICAgICAg
ICB9CisgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSosIFJldHVybkFk
ZHJlc3NQdHIpOwogCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Rm9yQ2FsbEF0SW5k
ZXgodW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKQEAgLTIyMywxMSArMjExLDE3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBtX2luY29taW5nQ2FsbHMucHVzaChp
bmNvbWluZyk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHZvaWQgbGlu
a0luY29taW5nQ2FsbChMTEludENhbGxMaW5rSW5mbyogaW5jb21pbmcpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLnB1c2goaW5jb21pbmcpOworICAgICAgICB9
CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogICAgICAgICAKICAgICAgICAgdm9pZCB1bmxpbmtJ
bmNvbWluZ0NhbGxzKCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi0jaWYgRU5B
QkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAg
ICAgdm9pZCBzZXRKSVRDb2RlTWFwKFBhc3NPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IGppdENv
ZGVNYXApCiAgICAgICAgIHsKICAgICAgICAgICAgIG1faml0Q29kZU1hcCA9IGppdENvZGVNYXA7
CkBAIC0yMzYsNyArMjMwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBtX2ppdENvZGVNYXAuZ2V0KCk7CiAgICAgICAgIH0KKyNlbmRpZgogICAgICAg
ICAKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgdm9pZCBjcmVhdGVERkdEYXRhSWZOZWNl
c3NhcnkoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoISFtX2RmZ0RhdGEpCkBAIC0zMzUs
MTIgKzMzMSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEluc3Ry
dWN0aW9uKiByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocmV0
dXJuQWRkcmVzcyA+PSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICYmIHJldHVybkFkZHJlc3MgPCBp
bnN0cnVjdGlvbnMoKS5lbmQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5z
dHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAg
ICAgIH0KLSNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9u
KGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0
aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNOdW1lcmlj
Q29tcGFyZUZ1bmN0aW9uKCkgeyByZXR1cm4gbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0K
QEAgLTM1NCwxNyArMzQ5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAg
ICAgIG1fc2hvdWxkRGlzY2FyZEJ5dGVjb2RlID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICB2
b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCkKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCEhYWx0ZXJuYXRpdmUoKSkKLSAgICAgICAgICAgICAgICBkaXNjYXJkQnl0
ZWNvZGUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBkaXNjYXJkQnl0ZWNv
ZGVMYXRlcigpOwotICAgICAgICB9CisgICAgICAgIHZvaWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJk
aW5nT3Bwb3J0dW5pdHkoKTsKICAgICAgICAgCi0jaWZuZGVmIE5ERUJVRwogICAgICAgICBib29s
IHVzZXNPcGNvZGUoT3Bjb2RlSUQpOwotI2VuZGlmCiAKICAgICAgICAgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25Db3VudCgpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25Db3VudDsgfQogICAgICAgICB2b2lk
IHNldEluc3RydWN0aW9uQ291bnQodW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCkgeyBtX2luc3Ry
dWN0aW9uQ291bnQgPSBpbnN0cnVjdGlvbkNvdW50OyB9CkBAIC0zODcsMTcgKzM3NCwyNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZSogZXhlY3V0YWJs
ZU1lbW9yeSgpIHsgcmV0dXJuIGdldEpJVENvZGUoKS5nZXRFeGVjdXRhYmxlTWVtb3J5KCk7IH0K
ICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBT
Y29wZUNoYWluTm9kZSopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCkgPSAw
OworICAgICAgICBib29sIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkludGVycHJl
dGVyVGh1bmspIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENv
ZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBqaXRDb21waWxlSW1wbChnbG9iYWxEYXRhKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiBy
ZXBsYWNlbWVudCgpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZH
KCkgPSAwOwogICAgICAgICBib29sIGhhc09wdGltaXplZFJlcGxhY2VtZW50KCkKICAgICAgICAg
ewotICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJ
VCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlw
ZSgpKSk7CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHJlcGxhY2VtZW50KCktPmdldEpJVFR5
cGUoKSA+IGdldEpJVFR5cGUoKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICAgICBp
ZiAocmVzdWx0KQogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRU
eXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFz
ZWxpbmVKSVQpOworICAgICAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29k
ZShyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQo
cmVwbGFjZW1lbnQoKSA9PSB0aGlzKTsKICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtNDU2LDE4
ICs0NTIsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjbGVhckV2YWxDYWNo
ZSgpOwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICB2b2lkIGFkZFByb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb24odW5zaWduZWQgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbikKICAg
ICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAg
ICAgICAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBwZW5kKHByb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0
aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAg
ICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24odW5zaWduZWQgZ2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+
Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25z
LmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgbV9nbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOwogICAg
ICAgICB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uQXRCeXRlY29k
ZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAg
ICAgICBMTEludENhbGxMaW5rSW5mbyogYWRkTExJbnRDYWxsTGlua0luZm8oKQorICAgICAgICB7
CisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvcy5hcHBlbmQoTExJbnRDYWxsTGlua0lu
Zm8oKSk7CisgICAgICAgICAgICByZXR1cm4gJm1fbGxpbnRDYWxsTGlua0luZm9zLmxhc3QoKTsK
KyAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBzZXROdW1i
ZXJPZlN0cnVjdHVyZVN0dWJJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZv
cy5ncm93KHNpemUpOyB9CkBAIC00NzYsOCArNDc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5mbyh1bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5z
dHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2dsb2JhbERhdGEtPmNhblVz
ZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9i
YWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKKyAgICAgICAgICAgIG1f
Z2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZl
SW5zdHJ1Y3Rpb24pKTsKICAgICAgICAgfQogICAgICAgICBHbG9iYWxSZXNvbHZlSW5mbyYgZ2xv
YmFsUmVzb2x2ZUluZm8oaW50IGluZGV4KSB7IHJldHVybiBtX2dsb2JhbFJlc29sdmVJbmZvc1tp
bmRleF07IH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5mb0F0Qnl0ZWNvZGVPZmZz
ZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAtNDg4LDYgKzQ4Niw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkTWV0aG9kQ2FsbExpbmtJbmZvcyh1bnNpZ25lZCBu
KSB7IEFTU0VSVChtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKTsgbV9tZXRob2RDYWxsTGlua0lu
Zm9zLmdyb3cobik7IH0KICAgICAgICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RDYWxsTGlu
a0luZm8oaW50IGluZGV4KSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5mb3NbaW5kZXhdOyB9
CisgICAgICAgIHNpemVfdCBudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MoKSB7IHJldHVybiBt
X21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpOyB9CiAjZW5kaWYKICAgICAgICAgCiAjaWYgRU5B
QkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtNTI4LDYgKzUyNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXRdLnUub3Bj
b2RlKSkgLSAxXS51LnByb2ZpbGUgPT0gcmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIH0KKyAgICAgICAgUHJlZGljdGVkVHlwZSB2YWx1ZVByb2ZpbGVQcmVkaWN0
aW9uRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gdmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgdW5zaWduZWQgdG90YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMoKQogICAgICAgICB7CkBA
IC01NTQsMTIgKzU1NywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJv
b2wgbGlrZWx5VG9UYWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQ
cm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAg
ICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5p
bXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5
Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgY291bGRUYWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2Rl
T2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9m
aWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2ln
bmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9uczo6Y291
bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkg
LyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VUaHJl
c2hvbGQ7CiAgICAgICAgIH0KQEAgLTU3OCwxMiArNTg1LDE2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UoaW50IGJ5
dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNh
c2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAg
cmV0dXJuIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dD
YXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4oc3BlY2lhbEZhc3RDYXNlQ291
bnQpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dD
YXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRv
VGFrZURlZXBlc3RTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVD
YXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwog
ICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENh
c2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAg
ICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgLSBzcGVjaWFsRmFzdENh
c2VDb3VudDsKQEAgLTU5Miw2ICs2MDMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAg
ICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQog
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHNsb3dD
YXNlQ291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50
ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBzbG93Q2FzZUNvdW50
ICsgc3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBAIC02NzcsNyArNjkwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIAogICAgICAgICBib29sIGFkZEZyZXF1ZW50RXhpdFNpdGUoY29uc3QgREZH
OjpGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQo
Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VS
VChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJl
dHVybiBtX2V4aXRQcm9maWxlLmFkZChzaXRlKTsKICAgICAgICAgfQogCkBAIC03ODIsNiArNzk1
LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJv
bShDb2RlQmxvY2sqIGFsdGVybmF0aXZlKTsKICAgICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0
YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgICAgICAKKyAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBj
b250cm9sbGluZyB3aGVuIEpJVHRpbmcga2lja3MgaW4sIGluIGEgbWl4ZWQgbW9kZQorICAgICAg
ICAvLyBleGVjdXRpb24gd29ybGQuCisgICAgICAgIAorICAgICAgICB2b2lkIGRvbnRKSVRBbnl0
aW1lU29vbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9
IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRBZnRlcldhcm1VcCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICB2b2lkIGppdFNvb24oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0
ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQzMl90IGxsaW50RXhlY3V0ZUNvdW50ZXIoKSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9sbGludEV4ZWN1dGVDb3VudGVy
OworICAgICAgICB9CisgICAgICAgIAogICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xs
aW5nIHdoZW4gdGllcmVkIGNvbXBpbGF0aW9uIGtpY2tzIGluLiBUaGlzCiAgICAgICAgIC8vIGNv
bnRyb2xzIGJvdGggd2hlbiB0aGUgb3B0aW1pemluZyBjb21waWxlciBpcyBpbnZva2VkIGFuZCB3
aGVuIE9TUgogICAgICAgICAvLyBlbnRyeSBoYXBwZW5zLiBUd28gdHJpZ2dlcnMgZXhpc3Q6IHRo
ZSBsb29wIHRyaWdnZXIgYW5kIHRoZSByZXR1cm4KQEAgLTk3NCw2ICsxMDEwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zaG91bGREaXNjYXJkQnl0ZWNvZGU7CiAKICAgICBw
cm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERh
dGEmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RW
aXNpdG9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgp
OwogICAgICAgICAKQEAgLTk4Niw3ICsxMDIzLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgdGFsbHlGcmVxdWVudEV4aXRTaXRlcygpIHsgfQogI2VuZGlmCiAgICAgICAgIAotI2lm
ICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKICAgICAgICAgdm9p
ZCBkdW1wKEV4ZWNTdGF0ZSosIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJh
dG9yJiBiZWdpbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImKSBjb25zdDsK
IAogICAgICAgICBDU3RyaW5nIHJlZ2lzdGVyTmFtZShFeGVjU3RhdGUqLCBpbnQgcikgY29uc3Q7
CkBAIC05OTYsNyArMTAzMiw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaW50
R2V0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6
Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJp
bnRDYWxsT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpj
b25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmlu
dFB1dEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46
OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0OwotI2VuZGlmCiAgICAgICAg
IHZvaWQgdmlzaXRTdHJ1Y3R1cmVzKFNsb3RWaXNpdG9yJiwgSW5zdHJ1Y3Rpb24qIHZQQykgY29u
c3Q7CiAgICAgICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTA1Nyw5ICsxMDkyLDExIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IG1fc291cmNl
OwogICAgICAgICB1bnNpZ25lZCBtX3NvdXJjZU9mZnNldDsKIAotI2lmIEVOQUJMRShJTlRFUlBS
RVRFUikKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zOwogICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
czsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxMTEludENhbGxM
aW5rSW5mbywgOD4gbV9sbGludENhbGxMaW5rSW5mb3M7CisgICAgICAgIFNlbnRpbmVsTGlua2Vk
TGlzdDxMTEludENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlu
a0luZm8+ID4gbV9pbmNvbWluZ0xMSW50Q2FsbHM7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQog
ICAgICAgICBWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+IG1fc3RydWN0dXJlU3R1YkluZm9zOwpA
QCAtMTA3MCw5ICsxMTA3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgbV9qaXRDb2RlV2l0aEFyaXR5Q2hlY2s7CiAgICAgICAgIFNlbnRpbmVsTGlu
a2VkTGlzdDxDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4g
PiBtX2luY29taW5nQ2FsbHM7CiAjZW5kaWYKLSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFC
TEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICBPd25QdHI8Q29tcGFjdEpJVENv
ZGVNYXA+IG1faml0Q29kZU1hcDsKLSAgICAgICAgCisjZW5kaWYKKyNpZiBFTkFCTEUoREZHX0pJ
VCkKICAgICAgICAgc3RydWN0IFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uIHsKICAgICAgICAgICAg
IFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uKCkgeyB9CiAgICAgICAgICAgICAKQEAgLTExMzUsMTIg
KzExNzMsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgT3duUHRyPENvZGVCbG9jaz4g
bV9hbHRlcm5hdGl2ZTsKICAgICAgICAgCisgICAgICAgIGludDMyX3QgbV9sbGludEV4ZWN1dGVD
b3VudGVyOworICAgICAgICAKICAgICAgICAgaW50MzJfdCBtX2ppdEV4ZWN1dGVDb3VudGVyOwog
ICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXI7CiAgICAgICAgIHVp
bnQzMl90IG1fc3BlY3VsYXRpdmVGYWlsQ291bnRlcjsKICAgICAgICAgdWludDhfdCBtX29wdGlt
aXphdGlvbkRlbGF5Q291bnRlcjsKICAgICAgICAgdWludDhfdCBtX3Jlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyOwotCisgICAgICAgIAogICAgICAgICBzdHJ1Y3QgUmFyZURhdGEgewogICAgICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgcHVibGljOgpAQCAtMTIxMyw2
ICsxMjUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0
dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2Rl
Kik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJs
b2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhE
RkcoKTsKICNlbmRpZgpAQCAtMTI0Nyw2ICsxMjg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4
ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNv
bigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7
CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtMTI4NCw2ICsxMzI2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2Jq
ZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29t
cGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBs
YWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNl
bmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMCArMjcsNDkg
QEAKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
KyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitH
ZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkK
K3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5
dGVjb2RlSW5kZXgpOworICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CisjaWYgRU5BQkxFKExMSU5U
KQorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0
aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworICAgIAorICAgIGlmIChpbnN0cnVjdGlv
blswXS51Lm9wY29kZSA9PSBsbGludF9vcF9tZXRob2RfY2hlY2spCisgICAgICAgIGluc3RydWN0
aW9uKys7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3Ry
dWN0dXJlLmdldCgpOworICAgIGlmICghc3RydWN0dXJlKQorICAgICAgICByZXR1cm4gR2V0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsK
KyAgICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2st
Pmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAg
ICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBu
b3RGb3VuZCwgZmFsc2UpOworICAgIAorICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZURp
cmVjdCwgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCwgZmFsc2UpOworI2Vsc2UKKyAg
ICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90
Rm91bmQsIGZhbHNlKTsKKyNlbmRpZgorfQorCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9j
ayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShp
ZGVudCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlm
ICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAg
cmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRl
bnQpOworICAgIAogICAgIC8vIEZpcnN0IGNoZWNrIGlmIGl0IG1ha2VzIGVpdGhlciBjYWxscywg
aW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIHN1cGVyIGNhcmVmdWwsIG9yCiAgICAgLy8gaWYg
aXQncyBub3Qgc2V0IGF0IGFsbCwgaW4gd2hpY2ggY2FzZSB3ZSBwdW50LgogICAgIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2Rl
SW5kZXgpOwogICAgIGlmICghc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRT
dGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAg
cmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRl
bnQpOwogICAgIAogICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogbGlzdDsKICAg
ICBpbnQgbGlzdFNpemU7CkBAIC02MCwxOCArODksMTkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKAogICAgIH0KICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3RT
aXplOyArK2kpIHsKICAgICAgICAgaWYgKCFsaXN0LT5saXN0W2ldLmlzRGlyZWN0KQotICAgICAg
ICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTWFrZXNDYWxscywgU3RydWN0dXJlU2V0KCksIG5v
dEZvdW5kKTsKKyAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0
cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7CiAgICAgfQogICAgIAogICAgIC8vIE5leHQg
Y2hlY2sgaWYgaXQgdGFrZXMgc2xvdyBjYXNlLCBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUg
a2luZCBvZiBjYXJlZnVsLgogICAgIGlmIChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93
Q2FzZShieXRlY29kZUluZGV4KSkKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNT
bG93UGF0aCwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIEdldEJ5
SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsK
ICAgICAKICAgICAvLyBGaW5hbGx5IGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGRlcml2ZSBhbiBhY2Nl
c3Mgc3RyYXRlZ3kuCiAgICAgR2V0QnlJZFN0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fd2Fz
U2VlbkluSklUID0gdHJ1ZTsKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAg
ICBjYXNlIGFjY2Vzc191bnNldDoKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1
dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAg
ICAKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZjogewogICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5n
ZXQoKTsKQEAgLTEzMCw3ICsxNjAsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IoCiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlIC8vIEVOQUJMRShKSVQp
Ci0gICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCks
IG5vdEZvdW5kKTsKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1
Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEwICs0OSwxMSBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KICAgICAKLSAgICBHZXRCeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25z
dCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6ZV90IG9mZnNldCkKKyAgICBHZXRCeUlk
U3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6
ZV90IG9mZnNldCwgYm9vbCB3YXNTZWVuSW5KSVQpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkK
ICAgICAgICAgLCBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQpCiAgICAgICAgICwgbV9vZmZz
ZXQob2Zmc2V0KQorICAgICAgICAsIG1fd2FzU2VlbkluSklUKHdhc1NlZW5JbkpJVCkKICAgICB7
CiAgICAgICAgIEFTU0VSVCgoc3RhdGUgPT0gU2ltcGxlRGlyZWN0KSA9PSAob2Zmc2V0ICE9IG5v
dEZvdW5kKSk7CiAgICAgfQpAQCAtNzAsMTAgKzcxLDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBT
dHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0
OyB9CiAgICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAg
CisgICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBjb25zdCB7IHJldHVybiBtX3dhc1NlZW5JbkpJVDsg
fQorICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxM
SW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAg
ICAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsK
ICAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgYm9vbCBtX3dhc1NlZW5JbkpJVDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RydWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luc3RydWN0aW9uLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTQ2VsbDsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7
CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CisgICAgc3RydWN0IExMSW50Q2FsbExpbmtJbmZv
OwogICAgIHN0cnVjdCBWYWx1ZVByb2ZpbGU7CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTQ2LDYg
KzE0NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAgICAgc3RydWN0IEluc3RydWN0
aW9uIHsKKyAgICAgICAgSW5zdHJ1Y3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB1Lmpz
Q2VsbC5jbGVhcigpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihP
cGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVS
UFJFVEVSKQpAQCAtMTgyLDYgKzE4OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIElu
c3RydWN0aW9uKFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1bmMpIHsgdS5nZXR0
ZXJGdW5jID0gZ2V0dGVyRnVuYzsgfQogICAgICAgICAKKyAgICAgICAgSW5zdHJ1Y3Rpb24oTExJ
bnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykgeyB1LmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5r
SW5mbzsgfQorICAgICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBwcm9m
aWxlKSB7IHUucHJvZmlsZSA9IHByb2ZpbGU7IH0KIAogICAgICAgICB1bmlvbiB7CkBAIC0xOTEs
NyArMTk5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNl
PFN0cnVjdHVyZUNoYWluPiBzdHJ1Y3R1cmVDaGFpbjsKICAgICAgICAgICAgIFdyaXRlQmFycmll
ckJhc2U8SlNDZWxsPiBqc0NlbGw7CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYyBnZXR0ZXJGdW5jOworICAgICAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5r
SW5mbzsKICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZTsKKyAgICAgICAgICAgIHZv
aWQqIHBvaW50ZXI7CiAgICAgICAgIH0gdTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5m
by5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50
Q2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENhbGxMaW5r
SW5mb19oCisjZGVmaW5lIExMSW50Q2FsbExpbmtJbmZvX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYv
U2VudGluZWxMaW5rZWRMaXN0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1
Y3Rpb247CisKK3N0cnVjdCBMTEludENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRp
bmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4geworICAgIExMSW50Q2FsbExpbmtJbmZvKCkKKyAg
ICB7CisgICAgfQorICAgIAorICAgIH5MTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgICAg
ICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAg
ICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4gY2FsbGVlOyB9CisgICAgCisgICAgdm9pZCB1bmxp
bmsoKQorICAgIHsKKyAgICAgICAgY2FsbGVlLmNsZWFyKCk7CisgICAgICAgIG1hY2hpbmVDb2Rl
VGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CisgICAgICAgIGlmIChpc09uTGlzdCgp
KQorICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgfQorICAgIAorICAgIFdyaXRlQmFycmllcjxK
U0Z1bmN0aW9uPiBjYWxsZWU7CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGxhc3RTZWVu
Q2FsbGVlOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWNoaW5lQ29kZVRhcmdldDsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gTExJbnRDYWxsTGlua0luZm9faAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0
dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRo
b2RDYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDYgKzM1LDExIEBAIE1ldGhvZENhbGxMaW5rU3RhdHVzIE1ldGhvZENhbGxMaW5rU3Rh
dHUKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5
dGVjb2RlSW5kZXgpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikK
KyAgICAvLyBOT1RFOiBUaGlzIGRvZXMgbm90IGhhdmUgYW4gTExJbnQgZmFsbC1iYWNrIGJlY2F1
c2UgTExJbnQgZG9lcyBub3QgZG8gYW55IG1ldGhvZAorICAgIC8vIGNhbGwgbGluayBjYWNoaW5n
LgorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKCkp
CisgICAgICAgIHJldHVybiBNZXRob2RDYWxsTGlua1N0YXR1cygpOworICAgIAogICAgIE1ldGhv
ZENhbGxMaW5rSW5mbyYgbWV0aG9kQ2FsbCA9IHByb2ZpbGVkQmxvY2stPmdldE1ldGhvZENhbGxM
aW5rSW5mbyhieXRlY29kZUluZGV4KTsKICAgICAKICAgICBpZiAoIW1ldGhvZENhbGwuc2VlbiB8
fCAhbWV0aG9kQ2FsbC5jYWNoZWRTdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgs
IDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkLCA5KSBcCiAgICAgICAgIG1hY3JvKG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uLCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWwsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkp
IFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX2dlbmVyaWMsIDkpIFwKICAgICAgICAgbWFj
cm8ob3BfZGVsX2J5X2lkLCA0KSBcCkBAIC0yMDIsNiArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHR5cGVkZWYgZW51bSB7IEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfSURfRU5V
TSkgfSBPcGNvZGVJRDsKICAgICAjdW5kZWYgT1BDT0RFX0lEX0VOVU0KIAorICAgIGNvbnN0IGlu
dCBtYXhPcGNvZGVMZW5ndGggPSA5OwogICAgIGNvbnN0IGludCBudW1PcGNvZGVJRHMgPSBvcF9l
bmQgKyAxOwogCiAgICAgI2RlZmluZSBPUENPREVfSURfTEVOR1RIUyhpZCwgbGVuZ3RoKSBjb25z
dCBpbnQgaWQjI19sZW5ndGggPSBsZW5ndGg7CkBAIC0yMTgsNyArMjIxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9JRChWRVJJRllfT1BDT0RFX0lEKTsKICAg
ICAjdW5kZWYgVkVSSUZZX09QQ09ERV9JRAogCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJM
RShMTElOVCkKICNpZiBDT01QSUxFUihSVkNUKSB8fCBDT01QSUxFUihJTlRFTCkKICAgICB0eXBl
ZGVmIHZvaWQqIE9wY29kZTsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDI3ICsyNyw2OSBAQAogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKIAogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKIAorUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxM
SW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRl
bnRpZmllciYgaWRlbnQpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAg
IFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwor
I2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxl
ZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7Cisg
ICAgaWYgKCFzdHJ1Y3R1cmUpCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3Jt
YXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0u
dS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkKSB7CisgICAgICAgIHNpemVfdCBvZmZzZXQg
PSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7Cisg
ICAgICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAs
IG9mZnNldCk7CisgICAgfQorICAgIAorICAgIEFTU0VSVChpbnN0cnVjdGlvblswXS51Lm9wY29k
ZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QKKyAgICAgICAgICAgfHwg
aW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsKTsKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGluc3RydWN0aW9u
WzZdLnUuc3RydWN0dXJlLmdldCgpOworICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IGluc3Ry
dWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCk7CisgICAgQVNTRVJUKG5ld1N0cnVjdHVy
ZSk7CisgICAgQVNTRVJUKGNoYWluKTsKKyAgICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbmV3U3Ry
dWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlm
IChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5m
b3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAKKyAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhTaW1wbGVUcmFuc2l0aW9uLCBzdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY2hhaW4sIG9m
ZnNldCk7CisjZWxzZQorICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAs
IDAsIDAsIG5vdEZvdW5kKTsKKyNlbmRpZgorfQorCiBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRC
bG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJB
TShpZGVudCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAg
IGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAg
ICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwg
aWRlbnQpOworICAgIAogICAgIGlmIChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2Fz
ZShieXRlY29kZUluZGV4KSkKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93
UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOwogICAgIAogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbyA9IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAg
IGlmICghc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21M
TEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgCiAgICAgc3dp
dGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAg
ICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5k
KTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNv
ZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVw
bGFjZTogewogICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFj
ZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTkzLDYgKzkzLDggQEAgcHVibGljOgogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX29mZnNldDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1
cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElk
ZW50aWZpZXImKTsKKyAgICAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZSogbV9v
bGRTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTG93
TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlICJT
dHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgpAQCAtMTE2LDI2ICsxMTcsMTYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZXhwZWN0ZWQgYnkgdGhlIGNhbGxlZS4KICovCiAKLSNp
Zm5kZWYgTkRFQlVHCiBzdGF0aWMgYm9vbCBzX2R1bXBzR2VuZXJhdGVkQ29kZSA9IGZhbHNlOwot
I2VuZGlmCiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZShi
b29sIGR1bXBzR2VuZXJhdGVkQ29kZSkKIHsKLSNpZm5kZWYgTkRFQlVHCiAgICAgc19kdW1wc0dl
bmVyYXRlZENvZGUgPSBkdW1wc0dlbmVyYXRlZENvZGU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShkdW1wc0dlbmVyYXRlZENvZGUpOwotI2VuZGlmCiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0
b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpCiB7Ci0jaWZuZGVmIE5ERUJVRwogICAgIHJldHVybiBz
X2R1bXBzR2VuZXJhdGVkQ29kZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9
CiAKIEpTT2JqZWN0KiBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQpAQCAtMTQ4LDEwICsx
MzksOCBAQCBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKIAogICAgIG1f
Y29kZUJsb2NrLT5zZXRJbnN0cnVjdGlvbkNvdW50KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5zaXplKCkpOwogCi0jaWZuZGVmIE5ERUJVRwogICAgIGlmIChzX2R1bXBzR2VuZXJhdGVkQ29k
ZSkKICAgICAgICAgbV9jb2RlQmxvY2stPmR1bXAobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSk7Ci0jZW5kaWYKIAogICAgIGlmICgobV9jb2RlVHlwZSA9PSBGdW5jdGlv
bkNvZGUgJiYgIW1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgJiYgIW1fY29kZUJs
b2NrLT51c2VzQXJndW1lbnRzKCkpIHx8IG1fY29kZVR5cGUgPT0gRXZhbENvZGUpCiAgICAgICAg
IHN5bWJvbFRhYmxlKCkuY2xlYXIoKTsKQEAgLTEyNzYsOSArMTI2NSw3IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBt
X2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
ICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgbV9jb2RlQmxvY2stPmFk
ZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlm
CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShyZXF1
aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2
ZV9nbG9iYWwpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsK
ICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBA
IC0xNDQwLDkgKzE0MjcsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJl
c29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUlu
Zm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRF
UikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0
aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0
UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxf
ZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
cHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50
KHByb3BlcnR5KSk7CkBAIC0xNDkwLDkgKzE0NzUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRk
R2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVO
QUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3Ry
dWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBWYWx1ZVByb2ZpbGUq
IHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3Bf
cmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNTExLDkgKzE0OTQsNyBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TWV0aG9kQ2hlY2soCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikK
ICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlv
bnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0
UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZHN0LT5pbmRleCgpKTsKQEAgLTE1MzksOSArMTUyMCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0R2V0QXIKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2Rl
QmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KTsKLSNlbmRpZgogCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE1NTcsOSArMTUzNiw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnkKIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5U
RVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24o
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIAogICAgIGVtaXRPcGNvZGUob3Bf
cHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBA
IC0xODQ4LDcgKzE4MjUsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
YWxsKAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxs
QXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJM
RShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50
Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Cisj
ZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25v
cmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2Zp
bGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0xOTUyLDcgKzE5MzMsMTEgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdAogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3Vu
dAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0
KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jl
c3VsdCk7CkBAIC0yMjEzLDcgKzIxOTgsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDYXRjaAogewogICAgIG1fdXNlc0V4Y2VwdGlvbnMgPSB0cnVlOwogI2lmIEVOQUJM
RShKSVQpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0
LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9k
eW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX2NhdGNoKSkgfTsKKyNlbHNlCiAgICAgSGFuZGxl
ckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwg
Q29kZUxvY2F0aW9uTGFiZWwoKSB9OworI2VuZGlmCiAjZWxzZQogICAgIEhhbmRsZXJJbmZvIGlu
Zm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygp
LnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGggfTsKICNlbmRp
ZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDQsOSArNjA0LDcgQEAgcHJp
dmF0ZToKICAgICB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShub2RlSW5kZXgpOwogICAgICAgICAK
LSAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsK
LSAgICAgICAgQVNTRVJUKHByb2ZpbGUpOwotICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rp
b24gPSBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgUHJlZGlj
dGVkVHlwZSBwcmVkaWN0aW9uID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT52
YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAj
aWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgICAgICBwcmludGYoIkR5bmFtaWMgW0Al
dSwgYmMjJXVdIHByZWRpY3Rpb246ICVzXG4iLCBub2RlSW5kZXgsIGJ5dGVjb2RlSW5kZXgsIHBy
ZWRpY3Rpb25Ub1N0cmluZyhwcmVkaWN0aW9uKSk7CiAjZW5kaWYKQEAgLTEwNDEsNiArMTAzOSw5
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKGJvb2wKICAgICAKICAgICAv
LyBJZiB3ZSBnZXQgaGVyZSB0aGVuIGl0IGxvb2tzIGxpa2Ugd2Ugc2hvdWxkIGRlZmluaXRlbHkg
aW5saW5lIHRoaXMgY29kZS4gUHJvY2VlZAogICAgIC8vIHdpdGggcGFyc2luZyB0aGUgY29kZSB0
byBnZXQgYnl0ZWNvZGUsIHNvIHRoYXQgd2UgY2FuIHRoZW4gcGFyc2UgdGhlIGJ5dGVjb2RlLgor
ICAgIC8vIE5vdGUgdGhhdCBpZiBMTEludCBpcyBlbmFibGVkLCB0aGUgYnl0ZWNvZGUgd2lsbCBh
bHdheXMgYmUgYXZhaWxhYmxlLiBBbHNvIG5vdGUKKyAgICAvLyB0aGF0IGlmIExMSW50IGlzIGVu
YWJsZWQsIHdlIG1heSBpbmxpbmUgYSBjb2RlIGJsb2NrIHRoYXQgaGFzIG5ldmVyIGJlZW4gSklU
dGVkCisgICAgLy8gYmVmb3JlIQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxv
Y2tDYWNoZS5nZXQoQ29kZUJsb2NrS2V5KGV4ZWN1dGFibGUsIGtpbmQpLCBleHBlY3RlZEZ1bmN0
aW9uLT5zY29wZSgpKTsKICAgICBpZiAoIWNvZGVCbG9jaykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTc0MSw3ICsxNzQyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
aywgbV9jdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobWV0aG9k
Q2FsbFN0YXR1cy5pc1NldCgpCi0gICAgICAgICAgICAgICAgJiYgIWdldEJ5SWRTdGF0dXMuaXNT
ZXQoKQorICAgICAgICAgICAgICAgICYmICFnZXRCeUlkU3RhdHVzLndhc1NlZW5JbkpJVCgpCiAg
ICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSkgewogICAgICAgICAgICAgICAgIC8vIEl0
J3MgbW9ub21vcnBoaWMgYXMgZmFyIGFzIHdlIGNhbiB0ZWxsLCBzaW5jZSB0aGUgbWV0aG9kX2No
ZWNrIHdhcyBsaW5rZWQKICAgICAgICAgICAgICAgICAvLyBidXQgdGhlIHNsb3cgcGF0aCAoaS5l
LiB0aGUgbm9ybWFsIGdldF9ieV9pZCkgbmV2ZXIgZmlyZWQuCkBAIC0xODEwLDcgKzE4MTEsOSBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2dldF9ieV9pZCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWQ6IHsKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbDogewogICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IGJh
c2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVy
UmVtYXBbY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZF07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDEwNTc3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExMSw2ICsxMTEsOCBAQCBpbmxpbmUgYm9vbCBjYW5Db21waWxlT3Bjb2RlKE9wY29k
ZUlEIG9wCiAgICAgY2FzZSBvcF9wdXRfc2NvcGVkX3ZhcjoKICAgICBjYXNlIG9wX2dldF9ieV9p
ZDoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX2RpcmVjdDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAg
ICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6CiAg
ICAgY2FzZSBvcF9qbXA6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDIxIEBAIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQogICAgIHVp
bnQzMl90IGV4aXRJbmRleCA9IGdsb2JhbERhdGEtPm9zckV4aXRJbmRleDsKICAgICBPU1JFeGl0
JiBleGl0ID0gY29kZUJsb2NrLT5vc3JFeGl0KGV4aXRJbmRleCk7CiAgICAgCisgICAgLy8gTWFr
ZSBzdXJlIGFsbCBjb2RlIG9uIG91ciBpbmxpbmUgc3RhY2sgaXMgSklUIGNvbXBpbGVkLiBUaGlz
IGlzIG5lY2Vzc2FyeSBzaW5jZQorICAgIC8vIHdlIG1heSBvcHQgdG8gaW5saW5lIGEgY29kZSBi
bG9jayBldmVuIGJlZm9yZSBpdCBoYWQgZXZlciBiZWVuIGNvbXBpbGVkIGJ5IHRoZQorICAgIC8v
IEpJVCwgYnV0IG91ciBPU1IgZXhpdCBpbmZyYXN0cnVjdHVyZSBjdXJyZW50bHkgb25seSB3b3Jr
cyBpZiB0aGUgdGFyZ2V0IG9mIHRoZQorICAgIC8vIE9TUiBleGl0IGlzIEpJVCBjb2RlLiBUaGlz
IGNvdWxkIGJlIGNoYW5nZWQgc2luY2UgdGhlcmUgaXMgbm90aGluZyBwYXJ0aWN1bGFybHkKKyAg
ICAvLyBoYXJkIGFib3V0IGRvaW5nIGFuIE9TUiBleGl0IGludG8gdGhlIGludGVycHJldGVyLCBi
dXQgZm9yIG5vdyB0aGlzIHNlZW1zIHRvIG1ha2UKKyAgICAvLyBzZW5zZSBpbiB0aGF0IGlmIHdl
J3JlIE9TUiBleGl0aW5nIGZyb20gaW5saW5lZCBjb2RlIG9mIGEgREZHIGNvZGUgYmxvY2ssIHRo
ZW4KKyAgICAvLyBwcm9iYWJseSBpdCdzIGEgZ29vZCBzaWduIHRoYXQgdGhlIHRoaW5nIHdlJ3Jl
IGV4aXRpbmcgaW50byBpcyBob3QuIEV2ZW4gbW9yZQorICAgIC8vIGludGVyZXN0aW5nbHksIHNp
bmNlIHRoZSBjb2RlIHdhcyBpbmxpbmVkLCBpdCBtYXkgbmV2ZXIgb3RoZXJ3aXNlIGdldCBKSVQK
KyAgICAvLyBjb21waWxlZCBzaW5jZSB0aGUgYWN0IG9mIGlubGluaW5nIGl0IG1heSBlbnN1cmUg
dGhhdCBpdCBvdGhlcndpc2UgbmV2ZXIgcnVucy4KKyAgICBmb3IgKENvZGVPcmlnaW4gY29kZU9y
aWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luOyBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsgY29k
ZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpIHsKKyAgICAgICAg
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJh
bWUtPmV4ZWN1dGFibGUuZ2V0KCkpCisgICAgICAgICAgICAtPmJhc2VsaW5lQ29kZUJsb2NrRm9y
KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5pc0NhbGwgPyBDb2RlRm9yQ2FsbCA6IENvZGVG
b3JDb25zdHJ1Y3QpCisgICAgICAgICAgICAtPmppdENvbXBpbGUoKmdsb2JhbERhdGEpOworICAg
IH0KKyAgICAKICAgICBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeSA9IDA7CiAgICAgaWYg
KGV4aXQubV9yZWNvdmVyeUluZGV4KQogICAgICAgICByZWNvdmVyeSA9ICZjb2RlQmxvY2stPnNw
ZWN1bGF0aW9uUmVjb3ZlcnkoZXhpdC5tX3JlY292ZXJ5SW5kZXggLSAxKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTA1Nzcw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkRGR09TUkV4aXQuaCIKICNpbmNsdWRlICJERkdSZXBhdGNoLmgiCisjaW5jbHVkZSAiSG9z
dENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUg
IklubGluZUFTTS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC01NjEsNDUgKzU2Miw2
IEBAIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHIKICAgICByZXR1cm4g
SlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BF
UkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVS
QVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7Ci0K
LSNpZiBDUFUoWDg2XzY0KQotYXNtICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgotICAgICJtb3YgJXIxMywg
JXJkaVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoWDg2KQotYXNtICgK
LSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00
MCglZWRpKSwgJWVkaVxuIgotICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgotICAgICJqbXAgIiBT
WU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3Rh
dGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikKLWFzbSAoCi0iLnRleHQiICJcbiIK
LSIuYWxpZ24gMiIgIlxuIgotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgot
Ii50aHVtYiIgIlxuIgotIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICI6IiAiXG4iCi0gICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgotICAgICJjcHkgcjAsIHI1
IiAiXG4iCi0gICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZW5kaWYKLQotRW5jb2RlZEpTVmFsdWUg
REZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3Rh
dGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRh
KCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Ci19Ci0KIHN0YXRpYyB2b2lkKiBoYW5kbGVIb3N0Q2Fs
bChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVy
RnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25T
cGFjZS5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9B
bGxvY2F0aW9uU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIEhlYXA7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBj
bGFzcyBNYXJrZWRCbG9jazsKIAogY2xhc3MgQWxsb2NhdGlvblNwYWNlIHsKQEAgLTY3LDYgKzY4
LDggQEAgcHVibGljOgogICAgIHZvaWQgc2hyaW5rKCk7CiAgICAgCiBwcml2YXRlOgorICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiAgICAgZW51bSBBbGxvY2F0
aW9uRWZmb3J0IHsgQWxsb2NhdGlvbkNhbkZhaWwsIEFsbG9jYXRpb25NdXN0U3VjY2VlZCB9Owog
CiAgICAgdm9pZCogYWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzcsNyArODM3
LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZwogICAgICAgICBz
ZXRIaWdoV2F0ZXJNYXJrKG1heChwcm9wb3J0aW9uYWxCeXRlcywgbV9taW5CeXRlc1BlckN5Y2xl
KSk7CiAgICAgfQogICAgIEpBVkFTQ1JJUFRDT1JFX0dDX0VORCgpOwotCisgICAgCiAgICAgKCpt
X2FjdGl2aXR5Q2FsbGJhY2spKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNWYWx1ZTsKICAgICBjbGFzcyBMaXZlT2Jq
ZWN0SXRlcmF0b3I7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IE1hcmtlZEFyZ3VtZW50QnVmZmVyOwogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZTsKICAgICBjbGFz
cyBVU3RyaW5nOwpAQCAtMTM2LDExICsxMzcsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZ2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cyhIYXNoU2V0PEpTQ2VsbCo+JiByb290
cyk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBBbGxvY2F0aW9uU3BhY2U7CisgICAgICAgIGZyaWVuZCBjbGFz
cyBDb2RlQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNz
IEJ1bXBTcGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwotICAgICAgICBm
cmllbmQgY2xhc3MgQ29kZUJsb2NrOwogCiAgICAgICAgIHNpemVfdCB3YXRlck1hcmsoKTsKICAg
ICAgICAgc2l6ZV90IGhpZ2hXYXRlck1hcmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya1N0YWNrLmNwcAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw3
IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbigKICNlbmRpZgogCiAg
ICAgQVNTRVJUKEhlYXA6OmlzTWFya2VkKGNlbGwpKTsKLQorICAgIAogICAgIGlmIChpc0pTU3Ry
aW5nKGNlbGwpKSB7CiAgICAgICAgIEpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8
SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBIZWFwOwogY2xhc3MgSlNDZWxs
OwogY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogY2xhc3MgV2Vha0dDSGFuZGxlOwogY2xhc3MgU2xvdFZpc2l0b3I7CiAKQEAgLTc3LDYgKzc4
LDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1
bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaEJsb2NrKCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICAvLyBbIDMyLi4uIDI1NiBd
CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlU3RlcCA9IE1hcmtlZEJsb2NrOjphdG9t
U2l6ZTsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VDdXRvZmYgPSAyNTY7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZp
c2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw2ICsxMTksOSBAQCBuYW1lc3BhY2UgSlNDICB7
CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBJbnN0cnVjdGlvbiogcmV0dXJuVlBD
KCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKTsgfQog
I2VuZGlmCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBJbnN0cnVjdGlvbiogY3VycmVudFZQ
QygpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KHRoaXNbUmVnaXN0
ZXJGaWxlOjpBcmd1bWVudENvdW50XS50YWcoKSk7IH0KKyNlbmRpZgogCiAgICAgICAgIHZvaWQg
c2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSkgeyBzdGF0aWNfY2FzdDxSZWdp
c3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWVdID0gY2FsbGVyRnJhbWU7IH0K
ICAgICAgICAgdm9pZCBzZXRTY29wZUNoYWluKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKSB7
IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluXSA9
IHNjb3BlQ2hhaW47IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjksNyArNjksNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2VuZGlmCiAKLSNkZWZpbmUgV1RGX1VT
RV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EIChFTkFCTEUoQ09NUFVURURfR09UT19JTlRF
UlBSRVRFUikgJiYgIWRlZmluZWQoX19sbHZtX18pKQorI2RlZmluZSBXVEZfVVNFX0dDQ19DT01Q
VVRFRF9HT1RPX1dPUktBUk9VTkQgKChFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikg
fHwgRU5BQkxFKExMSU5UKSkgJiYgIWRlZmluZWQoX19sbHZtX18pKQogCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCkBAIC01NDcsMTcgKzU0Nyw0MyBAQCBJbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIo
KQogewogfQogCi12b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKQor
SW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcigpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
SU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2VuYWJsZWQpCisgICAg
ICAgIGRlbGV0ZVtdIG1fb3Bjb2RlVGFibGU7CisjZW5kaWYKK30KKwordm9pZCBJbnRlcnByZXRl
cjo6aW5pdGlhbGl6ZShMTEludDo6RGF0YSogbGxpbnREYXRhLCBib29sIGNhblVzZUpJVCkKK3sK
KyAgICBVTlVTRURfUEFSQU0obGxpbnREYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oY2FuVXNlSklU
KTsKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5U
KQorI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyAgICAvLyBIYXZpbmcg
TExJbnQgZW5hYmxlZCwgYnV0IG5vdCBiZWluZyBhYmxlIHRvIHVzZSB0aGUgSklULCBhbmQgbm90
IGhhdmluZworICAgIC8vIGEgY29tcHV0ZWQgZ290byBpbnRlcnByZXRlciwgaXMgbm90IHN1cHBv
cnRlZC4gTm90IGJlY2F1c2Ugd2UgY2Fubm90CisgICAgLy8gc3VwcG9ydCBpdCwgYnV0IGJlY2F1
c2UgSSBkZWNpZGVkIHRvIGRyYXcgdGhlIGxpbmUgYXQgdGhlIG51bWJlciBvZgorICAgIC8vIHBl
cm11dGF0aW9ucyBvZiBleGVjdXRpb24gZW5naW5lcyB0aGF0IEkgd2FudGVkIHRoaXMgY29kZSB0
byBncm9rLgorICAgIEFTU0VSVChjYW5Vc2VKSVQpOworI2VuZGlmCiAgICAgaWYgKGNhblVzZUpJ
VCkgeworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJsZSA9IGxsaW50RGF0
YS0+b3Bjb2RlTWFwKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURz
OyArK2kpCisgICAgICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1fb3Bjb2RlVGFibGVbaV0s
IHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7CisjZWxzZQogICAgICAgICAvLyBJZiB0aGUgSklU
IGlzIHByZXNlbnQsIGRvbid0IHVzZSBqdW1wIGRlc3RpbmF0aW9ucyBmb3Igb3Bjb2Rlcy4KICAg
ICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpIHsK
ICAgICAgICAgICAgIE9wY29kZSBvcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19j
YXN0PHVpbnRwdHJfdD4oaSkpOwogICAgICAgICAgICAgbV9vcGNvZGVUYWJsZVtpXSA9IG9wY29k
ZTsKICAgICAgICAgfQorI2VuZGlmCiAgICAgfSBlbHNlIHsKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgICAgIG1fb3Bjb2RlVGFibGUgPSBuZXcgT3Bjb2RlW251bU9wY29kZUlEc107CisjZW5kaWYK
ICAgICAgICAgcHJpdmF0ZUV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVybiwgMCwgMCk7CiAgICAg
ICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQpAQCAt
NTY2LDcgKzU5Miw2IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBjYW5Vc2UK
ICAgICAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICAgICB9CiAjZWxzZQotICAgIFVOVVNFRF9QQVJB
TShjYW5Vc2VKSVQpOwogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2VuYWJsZWQgPSB0
cnVlOwogI2Vsc2UKQEAgLTY2Nyw5ICs2OTIsMTEgQEAgdm9pZCBJbnRlcnByZXRlcjo6ZHVtcFJl
Z2lzdGVycyhDYWxsRnJhbQogCiBib29sIEludGVycHJldGVyOjppc09wY29kZShPcGNvZGUgb3Bj
b2RlKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJM
RShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJM
RShMTElOVCkKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG9wY29kZSA+PSAw
ICYmIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUp
KSA8PSBvcF9lbmQ7CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2RlICE9IEhhc2hUcmFpdHM8T3Bj
b2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJhaXRzPE9wY29kZT46OmlzRGVs
ZXRlZFZhbHVlKG9wY29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJRFRhYmxlLmNvbnRhaW5zKG9w
Y29kZSk7CkBAIC03MjYsMTEgKzc1MywxMSBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRl
cjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAxLgogI2lmIEVOQUJMRShKSVQp
ICYmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBpZiAoY2FsbGVyRnJhbWUtPmdsb2JhbERhdGEo
KS5jYW5Vc2VKSVQoKSkKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1
cm5QQygpKTsKICAgICBlbHNlCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5i
eXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZWxpZiBFTkFCTEUo
SklUKQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxs
RnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRl
Y29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbHNlCiAg
ICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+
cmV0dXJuVlBDKCkpIC0gMTsKICNlbmRpZgpAQCAtNTE3MCwxMCArNTE5NywxMCBAQCB2b2lkIElu
dGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygp
KTsKICNpZiBFTkFCTEUoSklUKQogICAgIGVsc2UKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBj
YWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7Cisg
ICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChj
YWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogI2Vsc2UKLSAgICBi
eXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1l
LT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0
ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYK
ICAgICBsaW5lTnVtYmVyID0gY2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVPZmZzZXQgLSAxKTsKICAgICBzb3VyY2VJRCA9IGNhbGxlckNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTA1NzcwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRl
ICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJMTEludERhdGEu
aCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKIApAQCAt
NDUsNiArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFi
bGU7CiAgICAgY2xhc3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFi
bGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CkBAIC05
MCwxOSArOTIsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJbnRlcnByZXRlciB7
CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBmcmllbmQgY2xhc3Mg
SklUOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkQ2FsbDsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAg
ICBwdWJsaWM6CiAgICAgICAgIEludGVycHJldGVyKCk7CisgICAgICAgIH5JbnRlcnByZXRlcigp
OwogICAgICAgICAKLSAgICAgICAgdm9pZCBpbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKTsKKyAg
ICAgICAgdm9pZCBpbml0aWFsaXplKExMSW50OjpEYXRhKiwgYm9vbCBjYW5Vc2VKSVQpOwogCiAg
ICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlKCkgeyByZXR1cm4gbV9yZWdpc3RlckZp
bGU7IH0KICAgICAgICAgCiAgICAgICAgIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUo
Q09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRF
UlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlVGFi
bGVbaWRdOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBpZDsKQEAgLTExMiw3ICsxMTYsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKE9wY29kZSBv
cGNvZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNp
ZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7CisgICAgICAgICAgICByZXR1cm4g
bV9vcGNvZGVJRFRhYmxlLmdldChvcGNvZGUpOworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
SU5URVJQUkVURVIpCiAgICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7CiAgICAg
ICAgICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29kZSkpOwpAQCAtMTIyLDYg
KzEyOSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBvcGNvZGU7CiAj
ZW5kaWYKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBlbmFibGVkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZW5hYmxlZDsKKyAgICAgICAgfQogCiAgICAgICAg
IGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIApAQCAtMTg5LDcgKzIwMSwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBSZWdpc3RlckZpbGUgbV9yZWdpc3RlckZpbGU7CiAgICAgICAgIAot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkK
KyAgICAgICAgT3Bjb2RlKiBtX29wY29kZVRhYmxlOyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29k
ZSBmb3IgY29tcGlsaW5nCisgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNv
ZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21waWxpbmcKKyNl
bGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICBPcGNvZGUgbV9v
cGNvZGVUYWJsZVtudW1PcGNvZGVJRHNdOyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3Ig
Y29tcGlsaW5nCiAgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRh
YmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21waWxpbmcKICNlbmRpZgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZp
bGUuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7CiAgICAgY2xhc3MgREZH
Q29kZUJsb2NrczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFz
cyBSZWdpc3RlckZpbGUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWdpc3RlckZp
bGUpOwpAQCAtODEsNiArODIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAg
cHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAg
ICAgICAgCiAgICAgICAgIGJvb2wgZ3Jvd1Nsb3dDYXNlKFJlZ2lzdGVyKik7CiAgICAgICAgIHZv
aWQgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CiAgICAgICAgIHZvaWQgYWRkVG9Db21taXR0ZWRC
eXRlQ291bnQobG9uZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxs
UmV0dXJuVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisKKyNp
bmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJJbmxpbmVBU00uaCIKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVNZXRob2RzLmgiCisjaW5jbHVkZSAi
U2NvcGVDaGFpbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNW
YWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KCk7CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BU
SU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOworCisj
aWYgQ1BVKFg4Nl82NCkKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKKyAgICAibW92ICVyMTMsICVy
ZGlcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKFg4NikKK2FzbSAoCisi
Lmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1C
T0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAo
JWVkaSksICVlZGlcbiIKKyAgICAibW92ICVlZGksIDQoJWVzcClcbiIKKyAgICAiam1wICIgU1lN
Qk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRl
KSAiXG4iCispOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpCithc20gKAorIi50ZXh0IiAiXG4iCisi
LmFsaWduIDIiICJcbiIKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpICJcbiIKK0hJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKKyIu
dGh1bWIiICJcbiIKKyIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAi
OiIgIlxuIgorICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKKyAgICAiY3B5IHIwLCByNSIg
IlxuIgorICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VuZGlmCisKK2V4dGVybiAiQyIgRW5jb2Rl
ZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENh
bGxSZXR1cm5WYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKyNkZWZpbmUgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisK
KyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgi
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBDQUxMSU5HX0NPTlZFTlRJT05fSVNf
U1REQ0FMTAorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBDREVDTAorI2Vs
c2UKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04KKyNlbmRpZgorCituYW1l
c3BhY2UgSlNDIHsKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9W
QUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOworfQorCisjZW5kaWYgLy8gSG9z
dENhbGxSZXR1cm5WYWx1ZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJl
dmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3Byb2ZpbGVfd2lsbF9jYWxsKQogICAgICAg
ICBERUZJTkVfT1Aob3BfcHVzaF9uZXdfc2NvcGUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNo
X3Njb3BlKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklO
RV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaW5kZXgpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsKQpAQCAtNDg3LDYgKzQ4OSw4IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wb3N0X2luYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfcmVzb2x2ZV9nbG9iYWwpCkBAIC01MjYsNiArNTMwLDEwIEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAKIEpJVENvZGUgSklUOjpwcml2YXRl
Q29tcGlsZShDb2RlUHRyKiBmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaykKIHsKKyNpZiBFTkFCTEUo
SklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiQ29tcGlsaW5nIEpJVCBjb2RlIVxuIik7Cisj
ZW5kaWYKKyAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiAgICAgbV9jYW5CZU9wdGlt
aXplZCA9IG1fY29kZUJsb2NrLT5jYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC02OTAs
OCArNjk4LDEyIEBAIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAg
ICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1
YkluZm8obV9tZXRob2RDYWxsQ29tcGlsYXRpb25JbmZvW2ldLnByb3BlcnR5QWNjZXNzSW5kZXgp
LmNhbGxSZXR1cm5Mb2NhdGlvbjsKICAgICB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBp
ZiAobV9jYW5CZU9wdGltaXplZCkgeworI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJ
TlQpCisgICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAg
IHx8IHRydWUKKyNlbmRpZgorICAgICAgICApIHsKICAgICAgICAgQ29tcGFjdEpJVENvZGVNYXA6
OkVuY29kZXIgaml0Q29kZU1hcEVuY29kZXI7CiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IG1fbGFiZWxzLnNpemUoKTsgKytieXRlY29k
ZU9mZnNldCkgewogICAgICAgICAgICAgaWYgKG1fbGFiZWxzW2J5dGVjb2RlT2Zmc2V0XS5pc1Nl
dCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEwNTc3
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKSVRDb2RlKCkgeyB9
CiAjZW5kaWYKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gSklUVHlwZSB7IEhvc3RDYWxsVGh1
bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsKKyAgICAgICAgZW51bSBKSVRUeXBlIHsgTm9uZSwg
SG9zdENhbGxUaHVuaywgSW50ZXJwcmV0ZXJUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9Owog
ICAgICAgICAKICAgICAgICAgc3RhdGljIEpJVFR5cGUgYm90dG9tVGllckpJVCgpCiAgICAgICAg
IHsKQEAgLTY2LDggKzY2LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJu
IERGR0pJVDsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGljIGJvb2wgaXNPcHRp
bWl6aW5nSklUKEpJVFR5cGUgaml0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGppdFR5cGUgPT0gREZHSklUOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMg
Ym9vbCBpc0Jhc2VsaW5lQ29kZShKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBqaXRUeXBlID09IEludGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBCYXNl
bGluZUpJVDsKKyAgICAgICAgfQorICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBK
SVRDb2RlKCkKKyAgICAgICAgICAgIDogbV9qaXRUeXBlKE5vbmUpCiAgICAgICAgIHsKICAgICAg
ICAgfQogCkBAIC03NSw2ICs4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgOiBt
X3JlZihyZWYpCiAgICAgICAgICAgICAsIG1faml0VHlwZShqaXRUeXBlKQogICAgICAgICB7Cisg
ICAgICAgICAgICBBU1NFUlQoaml0VHlwZSAhPSBOb25lKTsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgYm9vbCBvcGVyYXRvciAhKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURHJpdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVREcml2ZXIuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVREcml2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDIxIEBACiAj
aW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNp
bmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgogaW5saW5lIGJvb2wg
aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8
Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklU
VHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlw
ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2Fu
VXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+dW5s
aW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsK
ICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVk
ID0gREZHOjp0cnlDb21waWxlKGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7
CkBAIC01NSwxMCArNjEsNyBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShK
U0dsCiAgICAgICAgIH0KICAgICAgICAgaml0Q29kZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0
YSwgY29kZUJsb2NrLmdldCgpKTsKICAgICB9Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcp
Ci0gICAgaWYgKCFCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAg
ICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNl
bmRpZgorICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHko
KTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKCkpOwogICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtNjYsOSArNjksMTQgQEAgaW5saW5l
IGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbAogCiBpbmxpbmUgYm9vbCBqaXRDb21w
aWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRy
PEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHImIGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUq
JiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRU
eXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAg
IGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpE
RkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlRnVuY3Rpb24oZ2xv
YmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2sp
OwpAQCAtODMsMTEgKzkxLDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHBy
b3ByaQogICAgICAgICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERh
dGEsIGNvZGVCbG9jay5nZXQoKSwgJmppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgfQotI2lm
ICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1
bXBzR2VuZXJhdGVkQ29kZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlz
Y2FyZGluZ09wcG9ydHVuaXR5KCk7Ci0jZW5kaWYKLSAgICAKKyAgICBjb2RlQmxvY2stPmhhbmRs
ZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRD
b2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRy
dWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJ
KHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxl
ciBnZW5lcmljVGhyb3coSlNHbG9iYWxEYQogCiBFeGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhj
ZXB0aW9uVmFsdWUsIFJldHVybkFkZHJlc3NQdHIgZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1
cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAg
ICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFs
dWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1
bHRMb2NhdGlvbikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmNwcAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MTMsNyArMTkxMyw3IEBAIERFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20KICAgICB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4ID0gc3RhY2tGcmFtZS5hcmdzWzBdLmludDMyKCk7CiAKICNpZiBFTkFCTEUoSklUX1ZFUkJP
U0VfT1NSKQotICAgIHByaW50ZigiRW50ZXJlZCBvcHRpbWl6ZV9mcm9tX2xvb3Agd2l0aCBleGVj
dXRlQ291bnRlciA9ICVkLCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6
YXRpb25EZWxheUNvdW50ZXIgPSAldVxuIiwgY29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigp
LCBjb2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCksIGNvZGVCbG9jay0+b3B0
aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOworICAgIHByaW50ZigiJXA6IEVudGVyZWQgb3B0aW1p
emVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRy
eUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9j
aywgY29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudGVyKCksIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkp
OwogI2VuZGlmCiAKICAgICBpZiAoY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgp
KSB7CkBAIC0yMTY4LDQ1ICsyMTY4LDEzIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBv
cF9jb25zdHJ1Y3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1pbmxpbmUgQ2FsbEZyYW1lKiBh
cml0eUNoZWNrRm9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVy
RmlsZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQotewotICAgIEpTRnVuY3Rpb24qIGNh
bGxlZSA9IGFzRnVuY3Rpb24oY2FsbEZyYW1lLT5jYWxsZWUoKSk7Ci0gICAgQVNTRVJUKCFjYWxs
ZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwotICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNh
bGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOwotICAgIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMoKTsKLQotICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRo
ZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2Fs
bGVyLgotICAgIGlmICghcmVnaXN0ZXJGaWxlLT5ncm93KGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkg
KyBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+bV9udW1DYWxs
ZWVSZWdpc3RlcnMpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEFTU0VSVChhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKLQotICAg
IC8vIFRvbyBmZXcgYXJndW1lbnRzIC0tIGNvcHkgY2FsbCBmcmFtZSBhbmQgYXJndW1lbnRzLCB0
aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1bWVudHMgd2l0aCB1bmRlZmluZWQuCi0gICAgc2l6ZV90
IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpczsKLSAgICBSZWdpc3Rlciogc3JjID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKTsK
LSAgICBSZWdpc3RlciogZHN0ID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIGRlbHRhOwotCi0g
ICAgaW50IGk7Ci0gICAgaW50IGVuZCA9IC1DYWxsRnJhbWU6Om9mZnNldEZvcihhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyk7Ci0gICAgZm9yIChpID0gLTE7IGkgPj0gZW5kOyAtLWkpCi0gICAg
ICAgIGRzdFtpXSA9IHNyY1tpXTsKLQotICAgIGVuZCAtPSBkZWx0YTsKLSAgICBmb3IgKCA7IGkg
Pj0gZW5kOyAtLWkpCi0gICAgICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBDYWxs
RnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGRzdCk7Ci0gICAgQVNTRVJU
KCh2b2lkKiluZXdDYWxsRnJhbWUgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7Ci0gICAgcmV0dXJu
IG5ld0NhbGxGcmFtZTsKLX0KLQogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxf
YXJpdHlDaGVjaykKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogCi0gICAg
Q2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBhcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tG
cmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDYWxsKTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxG
cmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJh
bWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CiAgICAgaWYgKCFuZXdDYWxsRnJhbWUpCiAg
ICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0YWNrRnJhbWUs
IGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9y
KGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOwogCkBAIC0yMjE5LDcgKzIxODcsNyBAQCBERUZJ
TkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxs
RnJhbWUgPSBhcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUs
IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9u
U2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZp
bGUsIENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJh
bWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJh
bWUtPmNhbGxlckZyYW1lKCkpKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
U0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiwxMCBA
QAogI2lmbmRlZiBKU0ludGVyZmFjZUpJVF9oCiAjZGVmaW5lIEpTSW50ZXJmYWNlSklUX2gKIAor
I2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAj
aW5jbHVkZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpT
VmFsdWUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlJlZ2lzdGVy
RmlsZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24u
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50Q29tbW9uX2gKKyNkZWZpbmUgTExJ
bnRDb21tb25faAorCisjZGVmaW5lIExMSU5UX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNkZWZpbmUg
TExJTlRfSEVMUEVSX1RSQUNJTkcgMAorCisjZW5kaWYgLy8gTExJbnRDb21tb25faAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKKwor
I2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAi
TG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wY29kZS5oIgorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworRGF0YTo6RGF0YSgpCisgICAgOiBtX2V4Y2VwdGlv
bkluc3RydWN0aW9ucyhuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsgMV0pCisgICAg
LCBtX29wY29kZU1hcChuZXcgT3Bjb2RlW251bU9wY29kZUlEc10pCit7CisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyArK2kpCisgICAgICAgIG1fZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Ro
cm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUpOworI2RlZmluZSBPUENPREVfRU5UUlkob3Bjb2Rl
LCBsZW5ndGgpIG1fb3Bjb2RlTWFwW29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF8jI29wY29kZSk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9FTlRSWSk7CisjdW5k
ZWYgT1BDT0RFX0VOVFJZCit9CisKK0RhdGE6On5EYXRhKCkKK3sKKyAgICBkZWxldGVbXSBtX2V4
Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBkZWxldGVbXSBtX29wY29kZU1hcDsKK30KKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgTExJbnREYXRhX2gKKyNkZWZpbmUgTExJbnREYXRhX2gKKworI2luY2x1ZGUg
Ik9wY29kZS5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCituYW1lc3BhY2UgSlNDIHsK
Kworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisjaWYgRU5BQkxF
KExMSU5UKQorY2xhc3MgRGF0YSB7CitwdWJsaWM6CisgICAgRGF0YSgpOworICAgIH5EYXRhKCk7
CisgICAgCisgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgfQorICAgIAorICAg
IE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX29wY29kZU1hcDsK
KyAgICB9Citwcml2YXRlOgorICAgIEluc3RydWN0aW9uKiBtX2V4Y2VwdGlvbkluc3RydWN0aW9u
czsKKyAgICBPcGNvZGUqIG1fb3Bjb2RlTWFwOworfTsKKyNlbHNlIC8vIEVOQUJMRShMTElOVCkK
KworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Npbmctbm9yZXR1cm4iCisjZW5k
aWYKKworY2xhc3MgRGF0YSB7CitwdWJsaWM6CisgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbklu
c3RydWN0aW9ucygpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
Cit9OworCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9w
CisjZW5kaWYKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludERhdGFfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5
cG9pbnRzLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJKSVRDb2RlLmgiCisj
aW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKKyNpbmNs
dWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
TExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSklUQ29kZSYgaml0Q29kZSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0eUNoZWNrKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5j
YW5Vc2VKSVQoKSkgeworICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAg
ICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpKSkpOworICAg
ICAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8
dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaykpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNv
bnN0cnVjdCk7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9B
c3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
cHJvbG9ndWUpKSkpOworICAgICAgICBhcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlf
Y2hlY2spKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoa2luZCA9PSBD
b2RlRm9yQ2FsbCkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENU
SVN0dWIoZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVy
cHJldGVyVGh1bmspOworICAgICAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHVi
KGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7
CisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9y
Q29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmsp
OworICAgIGFyaXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKK30KKwordm9pZCBnZXRFdmFs
RW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUpCit7
CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUgPSBK
SVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X2V2YWxfcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dl
bmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQorCit2b2lkIGdldFByb2dy
YW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSYgaml0Q29kZSkK
K3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaml0Q29kZSA9
IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZN
YW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKHByb2dyYW1FbnRy
eVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cit9CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RW50cnlwb2ludHNfaAorI2RlZmlu
ZSBMTEludEVudHJ5cG9pbnRzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYg
RU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXZhbENvZGVCbG9jazsKK2NsYXNzIEpJVENvZGU7Citj
bGFzcyBKU0dsb2JhbERhdGE7CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI7CitjbGFzcyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY7CitjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOworCituYW1lc3Bh
Y2UgTExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLCBKSVRDb2RlJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBh
cml0eUNoZWNrKTsKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29k
ZSYpOwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBKSVRDb2RlJik7
CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBF
dmFsQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRFdmFsRW50cnlwb2lu
dChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworaW5saW5lIHZvaWQgZ2V0RW50cnlwb2ludChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb2dyYW1Db2RlQmxvY2sqLCBKSVRDb2RlJiBqaXRD
b2RlKQoreworICAgIGdldFByb2dyYW1FbnRyeXBvaW50KGdsb2JhbERhdGEsIGppdENvZGUpOwor
fQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKKworI2VuZGlmIC8vIExMSW50RW50cnlwb2ludHNfaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25z
LmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNs
dWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkpJ
VEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgIkxvd0xl
dmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisK
K3ZvaWQgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5U
X0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMuXG4iLCBn
bG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmlj
VGhyb3coCisgICAgICAgIGdsb2JhbERhdGEsIGV4ZWMtPmNhbGxlckZyYW1lKCksIGdsb2JhbERh
dGEtPmV4Y2VwdGlvbiwKKyAgICAgICAgZXhlYy0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2NrKCkt
PmJ5dGVjb2RlT2Zmc2V0KGV4ZWMtPmNhbGxlckZyYW1lKCksIGV4ZWMtPnJldHVyblBDKCkpKTsK
K30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0
YXRlKiBleGVjKQoreworICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkubGxpbnREYXRhLmV4
Y2VwdGlvbkluc3RydWN0aW9ucygpOworfQorCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhF
eGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5H
CisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKHJldHVyblRvVGhyb3cpLlxuIiwg
Z2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJp
Y1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVj
LT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJu
IGdsb2JhbERhdGEtPmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKwordm9p
ZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAg
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElO
VF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChjYWxs
VG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5k
aWYKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0
aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAg
ICAKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZHVyaW5nX2Nh
bGxfdHJhbXBvbGluZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5k
aWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RXhjZXB0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEV4Y2VwdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExM
SW50RXhjZXB0aW9uc19oCisjZGVmaW5lIExMSW50RXhjZXB0aW9uc19oCisKKyNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBFTkFC
TEUoTExJTlQpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3Qg
SW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKKy8vIFRocm93IHRoZSBjdXJyZW50
bHkgYWN0aXZlIGV4Y2VwdGlvbiBpbiB0aGUgY29udGV4dCBvZiB0aGUgY2FsbGVyJ3MgY2FsbCBm
cmFtZS4KK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKEV4ZWNTdGF0ZSopOworCisvLyBU
ZWxscyB5b3Ugd2hlcmUgdG8ganVtcCB0byBpZiB5b3Ugd2FudCB0byByZXR1cm4tdG8tdGhyb3cs
IGFmdGVyIHlvdSd2ZSBhbHJlYWR5CisvLyBzZXQgdXAgYWxsIGluZm9ybWF0aW9uIG5lZWRlZCB0
byB0aHJvdyB0aGUgZXhjZXB0aW9uLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3dGb3JUaHJv
d25FeGNlcHRpb24oRXhlY1N0YXRlKik7CisKKy8vIFNhdmVzIHRoZSBjdXJyZW50IFBDIGluIHRo
ZSBnbG9iYWwgZGF0YSBmb3Igc2FmZS1rZWVwaW5nLCBhbmQgZ2l2ZXMgeW91IGEgUEMKKy8vIHRo
YXQgeW91IGNhbiB0ZWxsIHRoZSBpbnRlcnByZXRlciB0byBnbyB0bywgd2hpY2ggd2hlbiBhZHZh
bmNlZCBiZXR3ZWVuIDEKKy8vIGFuZCA5IHNsb3RzIHdpbGwgZ2l2ZSB5b3UgYW4gImluc3RydWN0
aW9uIiB0aGF0IHRocmVhZHMgdG8gdGhlIGludGVycHJldGVyJ3MKKy8vIGV4Y2VwdGlvbiBoYW5k
bGVyLiBOb3RlIHRoYXQgaWYgeW91IGdpdmUgaXQgdGhlIFBDIGZvciBleGNlcHRpb24gaGFuZGxp
bmcsCisvLyBpdCdzIHNtYXJ0IGVub3VnaCB0byBqdXN0IHJldHVybiB0aGF0IFBDIHdpdGhvdXQg
ZG9pbmcgYW55dGhpbmcgZWxzZTsgdGhpcworLy8gbGV0cyB5b3UgdGhyZWFkIGV4Y2VwdGlvbiBo
YW5kbGluZyB0aHJvdWdoIGNvbW1vbiBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgYnkKKy8vIG90aGVy
IGhlbHBlcnMuCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVj
dGlvbiopOworCisvLyBVc2UgdGhpcyB3aGVuIHlvdSdyZSB0aHJvd2luZyB0byBhIGNhbGwgdGh1
bmsuCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOworCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2Vu
ZGlmIC8vIExMSW50RXhjZXB0aW9uc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0MzAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50SGVscGVycy5oIgorCisjaWYgRU5B
QkxFKExMSU5UKQorCisjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiQ2FsbEZyYW1l
LmgiCisjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1
cm5WYWx1ZS5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklULmgiCisj
aW5jbHVkZSAiSklURHJpdmVyLmgiCisjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVk
ZSAiSlNCeXRlQXJyYXkuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgor
I2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0YXRpY1Nj
b3BlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1ZhbHVlLmgi
CisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIK
KyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworI2RlZmluZSBMTElOVF9P
UChpbmRleCkgKGV4ZWMtPnVuY2hlY2tlZFIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisjZGVmaW5l
IExMSU5UX09QX0MoaW5kZXgpIChleGVjLT5yKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorCisjZGVm
aW5lIExMSU5UX1JFVFVSTl9UV08oZmlyc3QsIHNlY29uZCkgZG8geyAgICAgICBcCisgICAgICAg
IHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgdm9pZCogYTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAg
dm9pZCogYjsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9IHBhaXI7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpbnQ2NF90IGk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gX19ydF91OyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmEgPSBmaXJz
dDsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmIgPSBzZWNvbmQ7
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX3J0X3UuaTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRf
RU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCBleGVjKQorCisjZGVmaW5lIExMSU5UX1RI
Uk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIEpTR2xvYmFsRGF0YSYgX190X2dsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7ICAg
ICAgICBcCisgICAgICAgIF9fdF9nbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Ro
cm93KTsgICAgICAgICAgICBcCisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAo
ZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCkgZG8geyAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2Vw
dGlvbikpIHsgICBcCisgICAgICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRf
RU5EKCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tf
RVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBM
TElOVF9CUkFOQ0gob3Bjb2RlLCBjb25kaXRpb24pIGRvIHsgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBib29sIF9fYl9jb25kaXRpb24gPSAoY29uZGl0aW9uKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoX19iX2NvbmRpdGlvbikgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0g
cGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5vcGVyYW5kOyAgICAgICAgXAorICAgICAg
ICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcGNvZGUpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVm
aW5lIExMSU5UX1JFVFVSTih2YWx1ZSkgZG8geyAgICAgICAgICAgICAgICBcCisgICAgICAgIEpT
VmFsdWUgX19yX3JldHVyblZhbHVlID0gKHZhbHVlKTsgICAgICBcCisgICAgICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0g
X19yX3JldHVyblZhbHVlOyAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJ
TlRfUkVUVVJOX1BST0ZJTEVEKG9wY29kZSwgdmFsdWUpIGRvIHsgICAgICAgICAgICAgICBcCisg
ICAgICAgIEpTVmFsdWUgX19ycF9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfT1AoMSkgPSBfX3JwX3JldHVyblZhbHVl
OyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHBjW09QQ09ERV9MRU5HVEgob3Bj
b2RlKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0gXAorICAgICAgICAgICAgSlNWYWx1
ZTo6ZW5jb2RlKF9fcnBfcmV0dXJuVmFsdWUpOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
TExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChleGVj
LCBjYWxsVGFyZ2V0KSBMTElOVF9SRVRVUk5fVFdPKChjYWxsVGFyZ2V0KSwgKGV4ZWMpKQorCisj
ZGVmaW5lIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsg
ICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jdF9leGVjID0gKGV4ZWMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBf
X2N0X3BjID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIEpTR2xvYmFsRGF0YSYgX19jdF9nbG9iYWxEYXRhID0gKF9fY3RfZXhlYyktPmdsb2JhbERh
dGEoKTsgICAgICBcCisgICAgICAgIF9fY3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0
aW9uVG9UaHJvdyk7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lN
UEwoX19jdF9leGVjLCBjYWxsVG9UaHJvdyhfX2N0X2V4ZWMsIF9fY3RfcGMpKTsgXAorICAgIH0g
d2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMs
IHBjKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19j
Y2VfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIEluc3RydWN0aW9uKiBfX2NjZV9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VMWShfX2NjZV9leGVjLT5nbG9iYWxEYXRh
KCkuZXhjZXB0aW9uKSkgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9DQUxMX0VO
RF9JTVBMKF9fY2NlX2V4ZWMsIGNhbGxUb1Rocm93KF9fY2NlX2V4ZWMsIF9fY2NlX3BjKSk7IFwK
KyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX1JFVFVSTihleGVjLCBw
YywgY2FsbFRhcmdldCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3Rh
dGUqIF9fY3JfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBJbnN0cnVjdGlvbiogX19jcl9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2b2lkKiBfX2NyX2NhbGxUYXJnZXQgPSAoY2Fs
bFRhcmdldCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxM
X0NIRUNLX0VYQ0VQVElPTihfX2NyX2V4ZWMtPmNhbGxlckZyYW1lKCksIF9fY3JfcGMpOyAgXAor
ICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3JfZXhlYywgX19jcl9jYWxsVGFyZ2V0KTsg
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCitleHRlcm4gIkMiIEhlbHBl
clJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0
aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCit7CisgICAgcHJpbnRmKCIlcCAv
ICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWRcbiIsCisgICAg
ICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBz
dGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUsCisgICAg
ICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFj
ZV92YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwg
aW50IG9wZXJhbmQpCit7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0Mob3BlcmFuZCku
anNWYWx1ZSgpOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVp
bnQzMl90IHRhZzsKKyAgICAgICAgICAgIHVpbnQzMl90IHBheWxvYWQ7CisgICAgICAgIH0gYml0
czsKKyAgICAgICAgRW5jb2RlZEpTVmFsdWUgYXNWYWx1ZTsKKyAgICB9IHU7CisgICAgdS5hc1Zh
bHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1
dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZDogJTA4eDolMDh4IiwKKyAgICAg
ICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0
YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGZyb21XaGVyZSwKKyAgICAg
ICAgICAgb3BlcmFuZCwKKyAgICAgICAgICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kLAorICAgICAg
ICAgICB1LmJpdHMudGFnLAorICAgICAgICAgICB1LmJpdHMucGF5bG9hZCk7CisjaWZuZGVmIE5E
RUJVRworICAgIHByaW50ZigiOiAlcyIsIHZhbHVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisg
ICAgcHJpbnRmKCJcbiIpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TCh0cmFjZV9wcm9sb2d1ZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGluIHByb2xvZ3VlLlxu
IiwgZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitzdGF0
aWMgdm9pZCB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFy
KiBjb21tZW50LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5jdGlv
biogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9ICZleGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsK
KyAgICBwcmludGYoIiVwIC8gJXA6IGluICVzIG9mIGZ1bmN0aW9uICVwLCBleGVjdXRhYmxlICVw
OyBudW1WYXJzID0gJXUsIG51bVBhcmFtZXRlcnMgPSAldSwgbnVtQ2FsbGVlUmVnaXN0ZXJzID0g
JXUuXG4iLAorICAgICAgICAgICBjb2RlQmxvY2ssIGV4ZWMsIGNvbW1lbnQsIGNhbGxlZSwgZXhl
Y3V0YWJsZSwKKyAgICAgICAgICAgY29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCit7CisgICAg
dHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIHByb2xvZ3VlIiwgQ29kZUZvckNhbGwp
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1
ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShl
eGVjLCAiY29uc3RydWN0IHByb2xvZ3VlIiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwp
Cit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIGFyaXR5IGNoZWNrIiwg
Q29kZUZvckNhbGwpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0
cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xv
Z3VlKGV4ZWMsICJjb25zdHJ1Y3QgYXJpdHkgY2hlY2siLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2UpCit7CisgICAgcHJp
bnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCAiLAorICAgICAgICAgICBleGVjLT5jb2Rl
QmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyNp
Zm5kZWYgTkRFQlVHCisgICAgcHJpbnRmKCIlcywgIiwgb3Bjb2RlTmFtZXNbZXhlYy0+Z2xvYmFs
RGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSldKTsKKyNlbHNl
CisgICAgcHJpbnRmKCJvcCMldSwgIiwgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSkpOworI2VuZGlmCisgICAgcHJpbnRmKCJzY29wZSAl
cFxuIiwgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woc3BlY2lhbF90cmFjZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1
dGluZyBzcGVjaWFsIGNhc2UgYmMjJXp1LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAorICAg
ICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAg
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9u
cygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZXhlYy0+cmV0dXJuUEMo
KS52YWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworaW5saW5lIGJvb2wgc2hvdWxkSklU
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBZb3UgY2FuIG1vZGlmeSB0aGlzIHRvIHR1cm4g
b2ZmIEpJVHRpbmcgd2l0aG91dCByZWJ1aWxkaW5nIHRoZSB3b3JsZC4KKyAgICByZXR1cm4gZXhl
Yy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpOworfQorCitlbnVtIEVudHJ5S2luZCB7IFByb2xv
Z3VlLCBBcml0eUNoZWNrIH07CitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVj
U3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0
IGNoYXIgKm5hbWUsIEVudHJ5S2luZCBraW5kKQoreworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9P
U1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCAlcyB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRc
biIsIGNvZGVCbG9jaywgbmFtZSwgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOwor
I2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJs
b2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBl
eGVjKTsKKyAgICB9CisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFs
RGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50Zigi
ICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBj
b2RlQmxvY2stPmppdFNvb24oKTsKKyAgICBpZiAoa2luZCA9PSBQcm9sb2d1ZSkKKyAgICAgICAg
TExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVz
c0F0T2Zmc2V0KDApLCBleGVjKTsKKyAgICBBU1NFUlQoa2luZCA9PSBBcml0eUNoZWNrKTsKKyAg
ICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+Z2V0SklUQ29kZVdpdGhBcml0eUNoZWNrKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKSwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5
X29zcikKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsIGV4ZWMtPmNvZGVCbG9jaygp
LCAiZW50cnlfb3NyIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9v
c3JfZnVuY3Rpb25fZm9yX2NhbGwpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAm
YXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRl
Y29kZUZvcihDb2RlRm9yQ2FsbCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwiLCBQcm9s
b2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29u
c3RydWN0KQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhl
Yy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZv
ckNvbnN0cnVjdCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCIsIFByb2xvZ3Vl
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5Q2hlY2spCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihl
eGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2Rl
Rm9yQ2FsbCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjayIsIEFyaXR5
Q2hlY2spOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFz
RnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNv
ZGVGb3IoQ29kZUZvckNvbnN0cnVjdCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9hcml0eUNoZWNrIiwgQXJpdHlDaGVjayk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bf
b3NyKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Cisg
ICAgCisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRlcmVk
IGxvb3Bfb3NyIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxv
Y2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoIXNob3Vs
ZEpJVChleGVjKSkgeworICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOwor
ICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAgICAKKyAgICBpZiAo
IWNvZGVCbG9jay0+aml0Q29tcGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5BQkxF
KEpJVF9WRVJCT1NFX09TUikKKyAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBj
b21waWxlZC5cbiIpOworI2VuZGlmCisgICAgfQorICAgIGNvZGVCbG9jay0+aml0U29vbigpOwor
ICAgIAorICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNl
bGluZUpJVCk7CisgICAgCisgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gbWFw
OworICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgpLT5kZWNvZGUobWFwKTsKKyAgICBCeXRlY29k
ZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcgPSBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNo
aW5lT2Zmc2V0LCB1bnNpZ25lZCwgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29k
ZUluZGV4PihtYXAuYmVnaW4oKSwgbWFwLnNpemUoKSwgcGMgLSBjb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLmJlZ2luKCkpOworICAgIEFTU0VSVChtYXBwaW5nKTsKKyAgICBBU1NFUlQobWFwcGlu
Zy0+bV9ieXRlY29kZUluZGV4ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwYyAtIGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSkpOworICAgIAorICAgIHZvaWQqIGp1bXBUYXJnZXQg
PSBjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KG1hcHBp
bmctPm1fbWFjaGluZUNvZGVPZmZzZXQpOworICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsKKyAgICAK
KyAgICBMTElOVF9SRVRVUk5fVFdPKGp1bXBUYXJnZXQsIGV4ZWMpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChyZXBsYWNlKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CisgICAgCisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYo
IiVwOiBFbnRlcmVkIHJlcGxhY2Ugd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxv
Y2ssIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAg
IGlmIChzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBp
bGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisg
ICAgICAgICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7Cisj
ZW5kaWYKKyAgICAgICAgfQorICAgICAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjaykKK3sKKyNp
ZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0
IHdpdGggZXhlYyA9ICVwLlxuIiwgZXhlYyk7CisgICAgcHJpbnRmKCJDb2RlQmxvY2sgPSAlcC5c
biIsIGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAgICBwcmludGYoIk51bSBjYWxsZWUgcmVnaXN0ZXJz
ID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAg
IHByaW50ZigiTnVtIHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bVZhcnMp
OworICAgIHByaW50ZigiQ3VycmVudCBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT5nbG9iYWxEYXRh
KCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKKyNlbmRpZgorICAgIEFTU0VS
VCgmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzXSA+IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5k
KCkpOworICAgIGlmIChVTkxJS0VMWSghZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5y
ZWdpc3RlckZpbGUoKS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+
bV9udW1DYWxsZWVSZWdpc3RlcnNdKSkpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZy
YW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFj
a092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihl
eGVjKTsKKyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKGV4ZWMp
OworICAgIH0KKyAgICBMTElOVF9FTkRfSU1QTCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY2FsbF9hcml0eUNoZWNrKQoreworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1v
blNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVy
cHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNhbGwpOworICAgIGlmICghbmV3RXhlYykg
eworICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAg
ICAgICAgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMpOworICAgICAgICBMTElOVF9SRVRV
Uk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSksIGV4
ZWMpOworICAgIH0KKyAgICBMTElOVF9SRVRVUk5fVFdPKDAsIG5ld0V4ZWMpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0
YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVj
LT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ29uc3Ry
dWN0KTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZy
YW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFj
a092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihl
eGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RX
TygwLCBuZXdFeGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3Rp
dmF0aW9uKQoreworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGlu
ZyBhbiBhY3RpdmF0aW9uLCBleGVjID0gJXAhXG4iLCBleGVjKTsKKyNlbmRpZgorICAgIEpTQWN0
aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYywgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlYy0+Y29kZUJs
b2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVj
LT5zY29wZUNoYWluKCktPnB1c2goYWN0aXZhdGlvbikpOworICAgIExMSU5UX1JFVFVSTihKU1Zh
bHVlKGFjdGl2YXRpb24pKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9h
cmd1bWVudHMpCit7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6
Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIocGNbMV0udS5vcGVyYW5kKSA9IGFyZ3VtZW50
czsKKyAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sx
XS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKQoreworICAgIEpTRnVuY3Rpb24qIGNvbnN0
cnVjdG9yID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgCisjaWYgIUFTU0VSVF9E
SVNBQkxFRAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBBU1NFUlQoY29u
c3RydWN0b3ItPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNv
bnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CisjZW5kaWYKKyAgICAKKyAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBKU1ZhbHVlIHByb3RvID0gTExJTlRfT1AoMikuanNWYWx1
ZSgpOworICAgIGlmIChwcm90by5pc09iamVjdCgpKQorICAgICAgICBzdHJ1Y3R1cmUgPSBhc09i
amVjdChwcm90byktPmluaGVyaXRvcklEKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgZWxzZQor
ICAgICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5l
bXB0eU9iamVjdFN0cnVjdHVyZSgpOworICAgIAorICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NvbnZlcnRfdGhpcykKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSkuanNWYWx1
ZSgpOworICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBMTElOVF9SRVRVUk4odjEu
dG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19v
YmplY3QpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSkKK3sKKyAgICBMTElOVF9S
RVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgYml0d2lzZV9jYXN0PEpTVmFsdWUqPigmTExJTlRf
T1AoMikpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X25ld19hcnJheV9idWZmZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4
ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihwY1syXS51Lm9wZXJhbmQpLCBw
Y1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdl
eHApCit7CisgICAgUmVnRXhwKiByZWdFeHAgPSBleGVjLT5jb2RlQmxvY2soKS0+cmVnZXhwKHBj
WzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkKKyAgICAgICAgTExJ
TlRfVEhST1coY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgZmxhZyBzdXBwbGllZCB0
byBSZWdFeHAgY29uc3RydWN0b3IuIikpOworICAgIExMSU5UX1JFVFVSTihSZWdFeHBPYmplY3Q6
OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbighTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
cSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjplcXVhbChleGVjLCBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVl
OjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2xlc3NlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpz
TGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVf
aW5jKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYykgKyAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVf
ZGVjKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0
X2luYykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVt
YmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0ganNOdW1iZXIocmVzdWx0ICsgMSk7CisgICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcG9zdF9kZWMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFs
dWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCAt
IDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcigt
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2FkZCkKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2MiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAg
IAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUcnlpbmcgdG8gYWRkICVz
IiwgdjEuZGVzY3JpcHRpb24oKSk7CisgICAgcHJpbnRmKCIgdG8gJXMuXG4iLCB2Mi5kZXNjcmlw
dGlvbigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICh2MS5pc1N0cmluZygpICYmICF2Mi5pc09i
amVjdCgpKSB7CisgICAgICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhleGVjLCBhc1N0cmluZyh2
MSksIHYyLnRvU3RyaW5nKGV4ZWMpKSk7CisgICAgfQorICAgIAorICAgIGlmICh2MS5pc051bWJl
cigpICYmIHYyLmlzTnVtYmVyKCkpCisgICAgICAgIExMSU5UX1JFVFVSTihqc051bWJlcih2MS5h
c051bWJlcigpICsgdjIuYXNOdW1iZXIoKSkpOworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0Fk
ZFNsb3dDYXNlKGV4ZWMsIHYxLCB2MikpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bXVsKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KS50b051bWJlcihleGVjKSAqIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2RpdikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLyBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKQorewor
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcihmbW9kKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRv
TnVtYmVyKGV4ZWMpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA8PCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcnNoaWZ0KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0
KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50
b1VJbnQzMihleGVjKSA+PiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKQoreworICAgIExMSU5UX1JF
VFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpICYgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfYml0b3IpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgfCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50
b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50
MzIoZXhlYykgXiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
TnVtYmVyKH5MTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpCit7CisgICAgSlNWYWx1
ZSBiYXNlVmFsID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisjaWZuZGVmIE5ERUJVRworICAg
IFR5cGVJbmZvIHR5cGVJbmZvKFVuc3BlY2lmaWVkVHlwZSk7CisgICAgQVNTRVJUKCFiYXNlVmFs
LmlzT2JqZWN0KCkKKyAgICAgICAgICAgfHwgISh0eXBlSW5mbyA9IGFzT2JqZWN0KGJhc2VWYWwp
LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKSkuaW1wbGVtZW50c0hhc0luc3RhbmNlKCkpOworI2Vu
ZGlmCisgICAgTExJTlRfVEhST1coY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoZXhlYywgImluc3Rh
bmNlb2YiLCBiYXNlVmFsKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5j
ZW9mKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcElu
c3RhbmNlT2ZTbG93KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl90eXBlb2YpCit7CisgICAgTExJTlRfUkVUVVJOKGpzVHlwZVN0cmluZ0Zv
clZhbHVlKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9pc191bmRlZmluZWQpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbih2LmlzQ2VsbCgpID8g
di5hc0NlbGwoKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCgpIDogdi5pc1VuZGVmaW5lZCgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19ib29sZWFuKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkuaXNCb29sZWFuKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lz
X251bWJlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLmlzTnVtYmVyKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0
cmluZykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGlzSlNTdHJpbmcoTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmpl
Y3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzT2JqZWN0VHlwZShMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1
bmN0aW9uKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc0Z1bmN0aW9uVHlwZShM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2luKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcElu
KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpCit7CisgICAgTExJTlRf
UkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmUsIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4
ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCkKK3sKKyAgICBMTElOVF9S
RVRVUk5fUFJPRklMRUQoCisgICAgICAgIG9wX3Jlc29sdmVfc2tpcCwKKyAgICAgICAgQ29tbW9u
U2xvd1BhdGhzOjpvcFJlc29sdmVTa2lwKAorICAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAg
IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCksCisgICAgICAg
ICAgICBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworc3RhdGljIEpTVmFsdWUgcmVzb2x2ZUdsb2Jh
bChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOworICAgIEFTU0VSVChnbG9iYWxPYmpl
Y3QtPmlzR2xvYmFsT2JqZWN0KCkpOworICAgIGludCBwcm9wZXJ0eSA9IHBjWzJdLnUub3BlcmFu
ZDsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHBjWzNdLnUuc3RydWN0dXJlLmdldCgpOwor
ICAgIAorICAgIEFTU0VSVF9VTlVTRUQoc3RydWN0dXJlLCBzdHJ1Y3R1cmUgIT0gZ2xvYmFsT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgCisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxv
Y2stPmlkZW50aWZpZXIocHJvcGVydHkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9i
amVjdCk7CisgICAgCisgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMs
IGlkZW50LCBzbG90KSkgeworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUo
ZXhlYywgaWRlbnQpOworICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgJiYgIWds
b2JhbE9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAg
ICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBnbG9iYWxPYmplY3QpIHsKKyAgICAgICAgICAg
IHBjWzNdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRh
KCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGdsb2JhbE9iamVjdC0+c3RydWN0dXJl
KCkpOworICAgICAgICAgICAgcGNbNF0gPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBleGVj
LT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihl
eGVjLCBpZGVudCk7CisgICAgcmV0dXJuIEpTVmFsdWUoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQoreworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChv
cF9yZXNvbHZlX2dsb2JhbCwgcmVzb2x2ZUdsb2JhbChleGVjLCBwYykpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9S
RVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYywgcmVzb2x2ZUdsb2JhbChl
eGVjLCBwYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9mb3JfcmVz
b2x2ZV9nbG9iYWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVz
b2x2ZV9nbG9iYWxfZHluYW1pYywgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhl
Yy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9iYXNlKQoreworICAgIElkZW50aWZpZXImIGlk
ZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAg
ICBpZiAocGNbM10udS5vcGVyYW5kKSB7CisgICAgICAgIEpTVmFsdWUgYmFzZSA9IEpTQzo6cmVz
b2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgdHJ1ZSk7CisgICAgICAg
IGlmICghYmFzZSkKKyAgICAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxp
ZEdsb2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgICAgIExMSU5U
X1JFVFVSTihiYXNlKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9w
X3Jlc29sdmVfYmFzZSwgSlNDOjpyZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVD
aGFpbigpLCBmYWxzZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3By
b3BlcnR5X2V4aXN0cykKK3sKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoTExJTlRf
T1AoMSkuanNWYWx1ZSgpKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIElk
ZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5v
cGVyYW5kKTsKKyAgICBpZiAoIW9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBz
bG90KSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNz
aWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQoreworICAgIEpTVmFs
dWUgcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVXaXRoQmFzZShleGVjLCBleGVj
LT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7
CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7
CisgICAgLy8gRklYTUU6IHRlY2huaWNhbGx5IHNob3VsZCBoYXZlIHByb2ZpbGluZywgYnV0IHdl
IGRvbid0IGRvIGl0IGJlY2F1c2UgdGhlIERGRyB3b24ndCB1c2UgaXQuCisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKK3sK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aFRoaXMo
ZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJ
TlRfT1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIp
ID0gcmVzdWx0OworICAgIC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxp
bmcsIGJ1dCB3ZSBkb24ndCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKQor
eworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRl
bnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsK
KyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VW
YWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
OworICAgIExMSU5UX09QKDEpID0gcmVzdWx0OworCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwo
KQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkKKyAgICAgICAgJiYgc2xvdC5zbG90QmFz
ZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAmJiBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09
IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNl
bGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
YmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUt
PmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5
cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKKyAgICAgICAgICAgIHBjWzRd
LnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBwY1s1
XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIHBjW09QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X2lkKSAt
IDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1l
bnRzX2xlbmd0aCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9j
aygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNd
LnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUCgyKS5qc1ZhbHVl
KCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKKyAgICBMTElOVF9SRVRVUk4o
YmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHV0X2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZp
ZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0Mo
MSkuanNWYWx1ZSgpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCkpOworICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCisgICAgICAgIGFzT2JqZWN0KGJh
c2VWYWx1ZSktPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGlkZW50LCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgZWxzZQorICAgICAgICBiYXNlVmFsdWUucHV0KGV4
ZWMsIGlkZW50LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAg
ICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFz
ZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1
cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUt
PnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkKKyAgICAgICAgICAgICYmIGJh
c2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChz
bG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CisgICAgICAgICAg
ICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIHN0cnVjdHVyZS0+cHJldmlv
dXNJRCgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IHN0cnVjdHVyZS0+cHJvcGVydHlT
dG9yYWdlQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRl
ZCBiZWNhdXNlIHNvbWUgb2YgdGhlIG1ldGhvZHMgd2UgY2FsbAorICAgICAgICAgICAgICAgICAg
ICAvLyBiZWxvdyBtYXkgR0MuCisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKworICAgICAgICAgICAg
ICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7CisgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2
aW91c0lEKCktPmlzT2JqZWN0KCkpOworICAgICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVj
dHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAq
IHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUu
c2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgICAgICBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpOwor
ICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2hhaW4pOworICAgICAgICAgICAgICAgICAgICBw
Y1s3XS51LnN0cnVjdHVyZUNoYWluLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMt
Pmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOworICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFu
ZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUg
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWwpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRf
YnlfaWQpOworICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAg
ICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9kZWxfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLnRvT2JqZWN0KGV4ZWMpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBjb2RlQmxv
Y2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
KQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBk
ZWxldGUgcHJvcGVydHkuIikpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxl
dGUpKTsKK30KKworaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCit7CisgICAgaWYgKExJS0VMWShiYXNl
VmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7CisgICAgICAgIGlmIChK
U1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KGV4
ZWMsIGFzU3RyaW5nKHN1YnNjcmlwdCktPnZhbHVlKGV4ZWMpKSkKKyAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorICAgIAorICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgewor
ICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChp
c0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgo
aSkpCisgICAgICAgICAgICByZXR1cm4gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhl
YywgaSk7CisgICAgICAgIAorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYm
IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAg
cmV0dXJuIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgaSk7CisgICAgfQorICAgIAor
ICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CisgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVydHkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9S
RVRVUk5fUFJPRklMRUQob3BfZ2V0X2J5X3ZhbCwgZ2V0QnlWYWwoZXhlYywgTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQoreworICAgIEpTVmFsdWUgYXJndW1l
bnRzID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAg
ICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yyk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBMTElOVF9PUCgy
KSA9IGFyZ3VtZW50czsKKyAgICAgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1l
bnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgfQorICAgIAor
ICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBhcmd1bWVudHMsIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUp
Cit7CisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1AoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wdXRfYnlfdmFsKQoreworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmds
b2JhbERhdGEoKTsKKyAgICAKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSku
anNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAor
ICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CisgICAgICAgIHVpbnQzMl90
IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNBcnJheShiYXNlVmFs
dWUpKSB7CisgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUp
OworICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNhblNldEluZGV4KGkpKQorICAgICAgICAgICAg
ICAgIGpzQXJyYXktPnNldEluZGV4KGdsb2JhbERhdGEsIGksIHZhbHVlKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4KGpzQXJyYXksIGV4ZWMs
IGksIHZhbHVlKTsKKyAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICB9CisgICAgICAg
IGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkKKyAgICAgICAgICAgICYmIGFzQnl0ZUFycmF5
KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CisgICAgICAgICAgICBKU0J5dGVBcnJh
eSoganNCeXRlQXJyYXkgPSBhc0J5dGVBcnJheShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYg
KHZhbHVlLmlzSW50MzIoKSkgeworICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRl
eChpLCB2YWx1ZS5hc0ludDMyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAg
ICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNOdW1iZXIoKSk7CisgICAg
ICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgYmFzZVZhbHVlLnB1dChleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgIExMSU5UX0VORCgpOwor
ICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUo
KSk7CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCkK
K3sKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAg
IEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIAor
ICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisg
ICAgYm9vbCBjb3VsZERlbGV0ZTsKKyAgICAKKyAgICB1aW50MzJfdCBpOworICAgIGlmIChzdWJz
Y3JpcHQuZ2V0VUludDMyKGkpKQorICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1l
dGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNlT2JqZWN0LCBleGVjLCBpKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIElk
ZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERl
bGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb3VsZERlbGV0ZSAm
JiBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9X
KGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7Cisg
ICAgCisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KQoreworICAgIExMSU5UX09QX0MoMSku
anNWYWx1ZSgpLnB1dChleGVjLCBwY1syXS51Lm9wZXJhbmQsIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1
dF9nZXR0ZXIpCit7CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgp
KTsKKyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUo
KSk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmll
cihwY1syXS51Lm9wZXJhbmQpOworICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNP
YmplY3QoKSk7CisgICAgYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lR2V0dGVyKGJhc2VP
YmosIGV4ZWMsIGlkZW50LCBhc09iamVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIp
Cit7CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBK
U09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAg
SWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51
Lm9wZXJhbmQpOworICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7
CisgICAgYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lU2V0dGVyKGJhc2VPYmosIGV4ZWMs
IGlkZW50LCBhc09iamVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpCit7CisgICAg
dW5zaWduZWQgY291bnQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgU2NvcGVDaGFpbk5vZGUqIHRt
cCA9IGV4ZWMtPnNjb3BlQ2hhaW4oKTsKKyAgICB3aGlsZSAoY291bnQtLSkKKyAgICAgICAgdG1w
ID0gdG1wLT5wb3AoKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKHRtcCk7CisgICAgcGMgKz0g
cGNbMl0udS5vcGVyYW5kOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfanRydWUpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2p0cnVlLCBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfamZhbHNlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZmFsc2UsICFMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfamxlc3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzLCBqc0xlc3M8dHJ1ZT4o
ZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpCit7CisgICAgTExJTlRfQlJB
TkNIKG9wX2pubGVzcywgIWpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2pncmVhdGVyKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlciwganNMZXNzPGZh
bHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVl
KCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcikKK3sKKyAgICBM
TElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyLCAhanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2psZXNzZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEs
IGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEp
Cit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywg
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5D
SChvcF9qZ3JlYXRlcmVxLCBqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbmdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEs
ICFqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09Q
X0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hf
aW1tKQoreworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7
CisgICAgQVNTRVJUKHNjcnV0aW5lZS5pc0RvdWJsZSgpKTsKKyAgICBkb3VibGUgdmFsdWUgPSBz
Y3J1dGluZWUuYXNEb3VibGUoKTsKKyAgICBpbnQzMl90IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8
aW50MzJfdD4odmFsdWUpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5k
OworICAgIGlmICh2YWx1ZSA9PSBpbnRWYWx1ZSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2RlQmxvY2stPmltbWVk
aWF0ZVN3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGludFZh
bHVlLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9m
ZnNldDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3
aXRjaF9zdHJpbmcpCit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBp
ZiAoIXNjcnV0aW5lZS5pc1N0cmluZygpKQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0Owor
ICAgIGVsc2UgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9j
aygpOworICAgICAgICBwYyArPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShwY1sx
XS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGFzU3RyaW5nKHNjcnV0aW5lZSktPnZhbHVlKGV4
ZWMpLmltcGwoKSwgZGVmYXVsdE9mZnNldCk7CisgICAgfQorICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmMpCit7CisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2Rl
VHlwZSgpICE9IEZ1bmN0aW9uQ29kZQorICAgICAgICAgICB8fCAhY29kZUJsb2NrLT5uZWVkc0Z1
bGxTY29wZUNoYWluKCkKKyAgICAgICAgICAgfHwgZXhlYy0+dW5jaGVja2VkUihjb2RlQmxvY2st
PmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpOworI2lmIExMSU5UX0hFTFBFUl9UUkFD
SU5HCisgICAgcHJpbnRmKCJDcmVhdGluZyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJ
TlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzJdLnUub3BlcmFuZCktPm1ha2Uo
ZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uZXdfZnVuY19leHApCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2Rl
QmxvY2soKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5m
dW5jdGlvbkV4cHIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVu
Y3Rpb24tPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICAKKyAgICBpZiAoIWZ1
bmN0aW9uLT5uYW1lKCkuaXNOdWxsKCkpIHsKKyAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCog
ZnVuY3Rpb25TY29wZU9iamVjdCA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBm
dW5jdGlvbi0+bmFtZSgpLCBmdW5jLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBm
dW5jLT5zZXRTY29wZShleGVjLT5nbG9iYWxEYXRhKCksIGZ1bmMtPnNjb3BlKCktPnB1c2goZnVu
Y3Rpb25TY29wZU9iamVjdCkpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZnVuYyk7
Cit9CisKK3N0YXRpYyBIZWxwZXJSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSog
ZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNh
bGxlckZyYW1lKCk7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2Jh
bERhdGEoKTsKKworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFp
bigpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CisKKyAgICBpZiAoa2luZCA9
PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShjYWxsZWUsIGNhbGxEYXRhKTsKKyAgICAKKyAg
ICAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlSlMpOworICAgIAorICAgICAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGVIb3N0KSB7CisgICAgICAgICAgICBnbG9iYWxEYXRhLT5ob3N0
Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlv
bihleGVjQ2FsbGVlKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIExMSU5UX0NBTExfUkVU
VVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSk7CisgICAgICAgIH0KKyAgICAgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJ
TkcKKyAgICAgICAgcHJpbnRmKCJDYWxsIGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIs
IGNhbGxlZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorCisgICAgICAgIEFTU0VSVChjYWxsVHlw
ZSA9PSBDYWxsVHlwZU5vbmUpOworICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBj
cmVhdGVOb3RBRnVuY3Rpb25FcnJvcihleGVjLCBjYWxsZWUpKTsKKyAgICB9CisKKyAgICBBU1NF
UlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAKKyAgICBDb25zdHJ1Y3REYXRhIGNv
bnN0cnVjdERhdGE7CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3Ry
dWN0RGF0YShjYWxsZWUsIGNvbnN0cnVjdERhdGEpOworICAgIAorICAgIEFTU0VSVChjb25zdHJ1
Y3RUeXBlICE9IENvbnN0cnVjdFR5cGVKUyk7CisgICAgCisgICAgaWYgKGNvbnN0cnVjdFR5cGUg
PT0gQ29uc3RydWN0VHlwZUhvc3QpIHsKKyAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1
cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihl
eGVjQ2FsbGVlKSk7CisgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgfQor
ICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgICAgIHByaW50ZigiQ29uc3RydWN0
b3IgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkp
OworI2VuZGlmCisKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9u
ZSk7CisgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUNvbnN0cnVjdG9y
RXJyb3IoZXhlYywgY2FsbGVlKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIHNldFVw
Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExpbmtJbmZv
KiBjYWxsTGlua0luZm8gPSAwKQoreworICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwg
PSBnZXRKU0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOworICAgIGlmICghY2FsbGVlQXNGdW5jdGlv
bkNlbGwpCisgICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2Fs
bGVlQXNWYWx1ZSwga2luZCk7CisgICAgCisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5j
dGlvbihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFp
bihjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRh
YmxlID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIGNvZGVQdHI7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOworICAgIGlmIChleGVj
dXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+
Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIGVsc2Ugewor
ICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19j
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOworICAgICAgICBKU09iamVjdCog
ZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVl
LT5zY29wZSgpLCBraW5kKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgTExJTlRf
Q0FMTF9USFJPVyhleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOworICAgICAg
ICBjb2RlQmxvY2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihr
aW5kKTsKKyAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgICAgIGlmIChleGVjQ2FsbGVl
LT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25F
eGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVy
YXRlZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICB9CisgICAgCisgICAg
aWYgKGNhbGxMaW5rSW5mbykgeworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLT5pc09uTGlzdCgp
KQorICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5yZW1vdmUoKTsKKyAgICAgICAgRXhlY1N0YXRl
KiBleGVjQ2FsbGVyID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgY2FsbExp
bmtJbmZvLT5jYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+
Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlu
a0luZm8tPmxhc3RTZWVuQ2FsbGVlLnNldChleGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4ZWND
YWxsZXItPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAgICAg
Y2FsbExpbmtJbmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9IGNvZGVQdHI7CisgICAgICAgIGlmIChj
b2RlQmxvY2spCisgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbExp
bmtJbmZvKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwg
cGMsIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1
cm5UeXBlIGdlbmVyaWNDYWxsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAv
LyAtIFNldCB1cCBhIGNhbGwgZnJhbWUuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2Fs
bCBhbmQgY29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBJZiBwb3NzaWJsZSwgbGlu
ayB0aGUgY2FsbCdzIGlubGluZSBjYWNoZS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1h
Y2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAK
KyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAg
ICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOwor
ICAgIAorICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJd
LnUub3BlcmFuZCk7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNh
bGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4
ZWMpOworICAgIAorICAgIEFTU0VSVChwY1s0XS51LmNhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJu
IHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywga2luZCwgY2FsbGVlQXNWYWx1ZSwgcGNbNF0udS5j
YWxsTGlua0luZm8pOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCkKK3sKKyAg
ICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDYWxsKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwo
ZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY2FsbF92YXJhcmdzKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQg
dXAgYSBjYWxsIGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4K
KyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vz
c2FyeS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRv
IGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFz
VmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4
ZWNDYWxsZWUgPSBsb2FkVmFyYXJncygKKyAgICAgICAgZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEo
KS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksCisgICAgICAgIExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5vcGVyYW5kKTsKKyAgICBM
TElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYyk7CisgICAgCisgICAgZXhlY0NhbGxl
ZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAg
IGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIo
UmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90
PihwYyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSk7CisgICAgCisgICAgcmV0dXJu
IHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKQoreworICAgIEpTVmFsdWUg
Y2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3Rh
dGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBleGVjQ2FsbGVl
LT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4
ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tl
ZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVl
LT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0
UmV0dXJuUEMoYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4oJmxsaW50X2dlbmVyaWNfcmV0dXJu
X3BvaW50KSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworICAgIGV4ZWMtPnVu
Y2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2Fz
dDxpbnQzMl90PihwYyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7CisgICAgCisgICAg
aWYgKCFpc0hvc3RGdW5jdGlvbihjYWxsZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpCisgICAg
ICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVB
c1ZhbHVlKTsKKyAgICAKKyAgICBnbG9iYWxEYXRhLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBldmFs
KGV4ZWNDYWxsZWUpOworICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQoreworICAgIEFTU0VSVChl
eGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBKU1ZhbHVlIGFj
dGl2YXRpb25WYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFjdGl2YXRp
b25WYWx1ZSkgeworICAgICAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1v
ZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKSB7Cisg
ICAgICAgICAgICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAg
ICAgICAgICAgICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAgfQorICAg
ICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0g
YXNBY3RpdmF0aW9uKGFjdGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihl
eGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRS
KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkp
CisgICAgICAgIGFzQXJndW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIGFjdGl2YXRpb24pOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQoreworICAgIEFTU0VSVChleGVjLT5j
b2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygpICYmICFleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNG
dWxsU2NvcGVDaGFpbigpKTsKKyAgICBhc0FyZ3VtZW50cyhleGVjLT51bmNoZWNrZWRSKHVubW9k
aWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpLT50ZWFy
T2ZmKGV4ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfc3RyY2F0KQoreworICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhleGVjLCAmTExJTlRfT1Ao
MiksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9f
cHJpbWl0aXZlKQoreworICAgIExMSU5UX1JFVFVSTihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50
b1ByaW1pdGl2ZShleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5h
bWVzKQoreworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAo
di5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBjICs9IHBjWzVdLnUub3BlcmFuZDsK
KyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBvID0gdi50
b09iamVjdChleGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVjdHVyZSgp
OworICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBz
dHJ1Y3R1cmUtPmVudW1lcmF0aW9uQ2FjaGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlOYW1lSXRl
cmF0b3IgfHwganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4oKSAh
PSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpKQorICAgICAgICBqc1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8pOworICAg
IAorICAgIExMSU5UX09QKDEpID0gSlNWYWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKKyAg
ICBMTElOVF9PUCgyKSA9IEpTVmFsdWUobyk7CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rlcjo6
d2l0aEludCgwKTsKKyAgICBMTElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJvcGVy
dHlOYW1lSXRlcmF0b3ItPnNpemUoKSk7CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChv
cF9nZXRfcG5hbWVzKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25leHRfcG5hbWUpCit7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChMTElO
VF9PUCgyKS5qc1ZhbHVlKCkpOworICAgIEpTU3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3RyaW5nKExM
SU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgaWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgcHJvcGVydHktPnZhbHVlKGV4ZWMpKSkpIHsKKyAgICAgICAgLy8gR28g
dG8gdGFyZ2V0LgorICAgICAgICBwYyArPSBwY1s2XS51Lm9wZXJhbmQ7CisgICAgfSAvLyBFbHNl
LCBkb24ndCBjaGFuZ2UgdGhlIFBDLCBzbyB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxvb3AuCisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3Bl
KQoreworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVj
dCogbyA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgCisgICAgTExJTlRfT1AoMSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+
c2NvcGVDaGFpbigpLT5wdXNoKG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSkKK3sKKyAgICBleGVjLT5zZXRTY29wZUNo
YWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cG9wKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpCit7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogc2NvcGUgPSBK
U1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBj
WzJdLnUub3BlcmFuZCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgRG9udERlbGV0ZSk7CisgICAg
ZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goc2NvcGUpKTsKKyAg
ICBMTElOVF9SRVRVUk4oc2NvcGUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhy
b3cpCit7CisgICAgTExJTlRfVEhST1coTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQoreworICAgIExM
SU5UX1RIUk9XKGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1
ZSgpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZGVidWcpCit7CisgICAgaW50IGRlYnVnSG9va0lEID0gcGNbMV0udS5vcGVyYW5k
OworICAgIGludCBmaXJzdExpbmUgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaW50IGxhc3RMaW5l
ID0gcGNbM10udS5vcGVyYW5kOworICAgIAorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnBy
ZXRlci0+ZGVidWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwg
Zmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVy
OjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPndpbGxFeGVjdXRlKGV4ZWMsIExMSU5UX09Q
KDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQoreworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9m
aWxlclJlZmVyZW5jZSgpKS0+ZGlkRXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkp
OworICAgIExMSU5UX0VORCgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwor
I2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRIZWxwZXJzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRIZWxwZXJzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRI
ZWxwZXJzX2gKKyNkZWZpbmUgTExJbnRIZWxwZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIEVOQUJMRShMTElOVCkK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlv
bjsKKworbmFtZXNwYWNlIExMSW50IHsKKwordHlwZWRlZiBpbnQ2NF90IEhlbHBlclJldHVyblR5
cGU7CisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4
ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworZXh0
ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSosIElu
c3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworCisjZGVmaW5lIExMSU5U
X0hFTFBFUl9ERUNMKG5hbWUpIFwKKyAgICBleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxp
bnRfIyNuYW1lKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQorCitMTElOVF9IRUxQ
RVJfREVDTCh0cmFjZV9wcm9sb2d1ZSk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1
ZV9mdW5jdGlvbl9mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9m
dW5jdGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hl
Y2tfZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29u
c3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHNw
ZWNpYWxfdHJhY2UpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChl
bnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChlbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChl
bnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGxvb3Bfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpOworTExJTlRfSEVM
UEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJp
dHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252
ZXJ0X3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bmV3X2FycmF5X2J1ZmZlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9lcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9zdHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVxKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9sZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJl
X2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcG9zdF9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVj
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbmVnYXRlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3Vi
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX21vZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9yc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfYml0b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcik7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfYml0bm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVj
a19oYXNfaW5zdGFuY2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaXNfdW5kZWZpbmVkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX3N0cmluZyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbik7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcmVzb2x2ZV9nbG9iYWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFz
ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9nZXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVu
Z3RoKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2RlbF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5
X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wdXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfdmFs
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9z
ZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2p0cnVlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2Up
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qbmxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2psZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bmdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2NoYXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3N3aXRjaF9zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jYWxsX2V2YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2Fj
dGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90b19wcmltaXRpdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3B1c2hfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29w
ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Rocm93KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19y
ZWZlcmVuY2VfZXJyb3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTElu
dAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRIZWxwZXJzX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxp
bmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExM
SW50T2ZmbGluZUFzbUNvbmZpZ19oCisjZGVmaW5lIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisK
KyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBDUFUoWDg2KQorI2RlZmluZSBPRkZMSU5F
X0FTTV9YODYgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDAKKyNlbmRpZgorCisj
aWYgQ1BVKEFSTXY3KQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAxCisjZWxzZQorI2RlZmlu
ZSBPRkZMSU5FX0FTTV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyNk
ZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElO
RV9BU01fQVNTRVJUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUoQklHX0VORElBTikKKyNk
ZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FT
TV9CSUdfRU5ESUFOIDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKExMSU5UX09TUl9UT19KSVQpCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVf
QVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcK
KyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQorI2Vsc2UKKyNkZWZpbmUg
T0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisKKyNlbmRpZiAvLyBMTElu
dE9mZmxpbmVBc21Db25maWdfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJBbGxvY2F0aW9u
U3BhY2UuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAi
SklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRl
ICJKU3R5cGVJbmZvLmgiCisjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgorI2luY2x1ZGUg
Ikp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1
ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCisjaW5jbHVkZSAi
U2NvcGVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVy
ZUNoYWluLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSW1wbC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBPRkZMSU5FX0FTTV9P
RkZTRVRPRihjbGF6eiwgZmllbGQpIE9CSkVDVF9PRkZTRVRPRihjbGF6eiwgZmllbGQpCisKK2Ns
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkKiBkdW1teSgpOworfTsKKworY29uc3QgdW5zaWduZWQqIExMSW50T2Zmc2V0c0V4dHJh
Y3Rvcjo6ZHVtbXkoKQoreworI2luY2x1ZGUgIkxMSW50RGVzaXJlZE9mZnNldHMuaCIKKyAgICBy
ZXR1cm4gZXh0cmFjdG9yVGFibGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCitpbnQgbWFp
bihpbnQsIGNoYXIqKikKK3sKKyAgICAvLyBPdXQgb2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRpb24s
IG1ha2Ugc3VyZSB0aGF0IExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSBpcyBsaXZlLAor
ICAgIC8vIGFuZCB0aGUgZXh0cmFjdG9yVGFibGUgaXMgbGl2ZSwgdG9vLgorICAgIHByaW50Zigi
JXBcbiIsIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpKTsKKyAgICByZXR1cm4g
MDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5r
cy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkxMSW50VGh1bmtzLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJKU0ludGVy
ZmFjZUpJVC5oIgorI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbElu
dGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgdm9pZCAoKnRhcmdldCkoKSkKK3sKKyAgICBKU0ludGVyZmFjZUpJ
VCBqaXQ7CisgICAgCisgICAgLy8gRklYTUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5
IHRvIGRvIGl0IG9uIFg4NiwgYnV0IEknbSBub3Qgc3VyZSBJIGNhcmUuCisgICAgaml0Lm1vdmUo
SlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQp
KSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6
cmVnVDApOworICAgIAorICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZq
aXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIHBhdGNoQnVmZmVyLmZpbmFsaXplQ29k
ZSgpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVu
a0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3By
b2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0
RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0
dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3RfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rp
b25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
byhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKTsK
K30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG8oZ2xvYmFsRGF0YSwgbGxpbnRfZXZhbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxs
aW50X3Byb2dyYW1fcHJvbG9ndWUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQK
KworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludFRo
dW5rc19oCisjZGVmaW5lIExMSW50VGh1bmtzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0dsb2JhbERhdGE7CisKK25hbWVzcGFj
ZSBMTEludCB7CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRo
dW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0
aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3Io
SlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5U
KQorCisjZW5kaWYgLy8gTExJbnRUaHVua3NfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyMzc2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisKKyMgQ3Jhc2ggY291cnNlIG9uIHRoZSBsYW5ndWFnZSB0aGF0IHRo
aXMgaXMgd3JpdHRlbiBpbiAod2hpY2ggSSBqdXN0IGNhbGwKKyMgImFzc2VtYmx5IiBldmVuIHRo
b3VnaCBpdCdzIG1vcmUgdGhhbiB0aGF0KToKKyMKKyMgLSBNb3N0bHkgZ2FzLXN0eWxlIG9wZXJh
bmQgb3JkZXJpbmcuIFRoZSBsYXN0IG9wZXJhbmQgdGVuZHMgdG8gYmUgdGhlCisjICAgZGVzdGlu
YXRpb24uIFNvICJhIDo9IGIiIGlzIHdyaXR0ZW4gYXMgIm1vdiBiLCBhIi4gQnV0IHVubGlrZSBn
YXMsCisjICAgY29tcGFyaXNvbnMgYXJlIGluLW9yZGVyLCBzbyAiaWYgKGEgPCBiKSIgaXMgd3Jp
dHRlbiBhcworIyAgICJiaWx0IGEsIGIsIC4uLiIuCisjCisjIC0gImIiID0gYnl0ZSwgImgiID0g
MTYtYml0IHdvcmQsICJpIiA9IDMyLWJpdCB3b3JkLCAicCIgPSBwb2ludGVyLgorIyAgIEN1cnJl
bnRseSB0aGlzIGlzIGp1c3QgMzItYml0IHNvICJpIiBhbmQgInAiIGFyZSBpbnRlcmNoYW5nZWFi
bGUKKyMgICBleGNlcHQgd2hlbiBhbiBvcCBzdXBwb3J0cyBvbmUgYnV0IG5vdCB0aGUgb3RoZXIu
CisjCisjIC0gSW4gZ2VuZXJhbCwgdmFsaWQgb3BlcmFuZHMgZm9yIG1hY3JvIGludm9jYXRpb25z
IGFuZCBpbnN0cnVjdGlvbnMgYXJlCisjICAgcmVnaXN0ZXJzIChlZyAidDAiKSwgYWRkcmVzc2Vz
IChlZyAiNFt0MF0iKSwgYmFzZS1pbmRleCBhZGRyZXNzZXMKKyMgICAoZWcgIjdbdDAsIHQxLCAy
XSIpLCBhYnNvbHV0ZSBhZGRyZXNzZXMgKGVnICIweGEwMDAwMDAwW10iKSwgb3IgbGFiZWxzCisj
ICAgKGVnICJfZm9vIiBvciAiLmZvbyIpLiBNYWNybyBpbnZvY2F0aW9ucyBjYW4gYWxzbyB0YWtl
IGFub255bW91cworIyAgIG1hY3JvcyBhcyBvcGVyYW5kcy4gSW5zdHJ1Y3Rpb25zIGNhbm5vdCB0
YWtlIGFub255bW91cyBtYWNyb3MuCisjCisjIC0gTGFiZWxzIG11c3QgaGF2ZSBuYW1lcyB0aGF0
IGJlZ2luIHdpdGggZWl0aGVyICJfIiBvciAiLiIuICBBICIuIiBsYWJlbAorIyAgIGlzIGxvY2Fs
IGFuZCBnZXRzIHJlbmFtZWQgYmVmb3JlIGNvZGUgZ2VuIHRvIG1pbmltaXplIG5hbWVzcGFjZQor
IyAgIHBvbGx1dGlvbi4gQSAiXyIgbGFiZWwgaXMgYW4gZXh0ZXJuIHN5bWJvbCAoaS5lLiAiLmds
b2JsIikuIFRoZSAiXyIKKyMgICBtYXkgb3IgbWF5IG5vdCBiZSByZW1vdmVkIGR1cmluZyBjb2Rl
IGdlbiBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgYXNtCisjICAgY29udmVudGlvbnMgZm9yIEMg
bmFtZSBtYW5nbGluZyBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtIG1hbmRhdGUgYSAiXyIKKyMgICBw
cmVmaXguCisjCisjIC0gQSAibWFjcm8iIGlzIGEgbGFtYmRhIGV4cHJlc3Npb24sIHdoaWNoIG1h
eSBiZSBlaXRoZXIgYW5vbnltb3VzIG9yCisjICAgbmFtZWQuIEJ1dCB0aGlzIGhhcyBjYXZlYXRz
LiAibWFjcm8iIGNhbiB0YWtlIHplcm8gb3IgbW9yZSBhcmd1bWVudHMsCisjICAgd2hpY2ggbWF5
IGJlIG1hY3JvcyBvciBhbnkgdmFsaWQgb3BlcmFuZHMsIGJ1dCBpdCBjYW4gb25seSByZXR1cm4K
KyMgICBjb2RlLiBCdXQgeW91IGNhbiBkbyBUdXJpbmctY29tcGxldGUgdGhpbmdzIHZpYSBjb250
aW51YXRpb24gcGFzc2luZworIyAgIHN0eWxlOiAibWFjcm8gZm9vIChhLCBiKSBiKGEpIGVuZCBm
b28oZm9vLCBmb28pIi4gQWN0dWFsbHksIGRvbid0IGRvCisjICAgdGhhdCwgc2luY2UgeW91J2xs
IGp1c3QgY3Jhc2ggdGhlIGFzc2VtYmxlci4KKyMKKyMgLSBBbiAiaWYiIGlzIGEgY29uZGl0aW9u
YWwgb24gc2V0dGluZ3MuIEFueSBpZGVudGlmaWVyIHN1cHBsaWVkIGluIHRoZQorIyAgIHByZWRp
Y2F0ZSBvZiBhbiAiaWYiIGlzIGFzc3VtZWQgdG8gYmUgYSAjZGVmaW5lIHRoYXQgaXMgYXZhaWxh
YmxlCisjICAgZHVyaW5nIGNvZGUgZ2VuLiBTbyB5b3UgY2FuJ3QgdXNlICJpZiIgZm9yIGNvbXB1
dGF0aW9uIGluIGEgbWFjcm8sIGJ1dAorIyAgIHlvdSBjYW4gdXNlIGl0IHRvIHNlbGVjdCBkaWZm
ZXJlbnQgcGllY2VzIG9mIGNvZGUgZm9yIGRpZmZlcmVudAorIyAgIHBsYXRmb3Jtcy4KKyMKKyMg
LSBBcmd1bWVudHMgdG8gbWFjcm9zIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgcmF0aGVyIHRoYW4g
ZHluYW1pYyBzY29waW5nLgorIyAgIENvbnN0J3MgYWxzbyBmb2xsb3cgbGV4aWNhbCBzY29waW5n
IGFuZCBtYXkgb3ZlcnJpZGUgKGhpZGUpIGFyZ3VtZW50cworIyAgIG9yIG90aGVyIGNvbnN0cy4g
QWxsIHZhcmlhYmxlcyAoYXJndW1lbnRzIGFuZCBjb25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAg
IHRvIG9wZXJhbmRzLiBBZGRpdGlvbmFsbHksIGFyZ3VtZW50cyAoYnV0IG5vdCBjb25zdGFudHMp
IGNhbiBiZSBib3VuZAorIyAgIHRvIG1hY3Jvcy4KKworCisjIFRoZXNlIGRlY2xhcmF0aW9ucyBt
dXN0IG1hdGNoIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oLgorY29uc3QgQ2FsbEZyYW1lSGVh
ZGVyU2l6ZSA9IDQ4Citjb25zdCBBcmd1bWVudENvdW50ID0gLTQ4Citjb25zdCBDYWxsZXJGcmFt
ZSA9IC00MAorY29uc3QgQ2FsbGVlID0gLTMyCitjb25zdCBTY29wZUNoYWluID0gLTI0Citjb25z
dCBSZXR1cm5QQyA9IC0xNgorY29uc3QgQ29kZUJsb2NrID0gLTgKKworY29uc3QgVGhpc0FyZ3Vt
ZW50T2Zmc2V0ID0gLUNhbGxGcmFtZUhlYWRlclNpemUgLSA4CisKKyMgRGVjbGFyZSBzb21lIGFs
aWFzZXMgZm9yIHRoZSByZWdpc3RlcnMgd2Ugd2lsbCB1c2UuCitjb25zdCBQQyA9IHQ0CisKKyMg
T2Zmc2V0cyBuZWVkZWQgZm9yIHJlYXNvbmluZyBhYm91dCB2YWx1ZSByZXByZXNlbnRhdGlvbi4K
K2lmIEJJR19FTkRJQU4KKyAgICBjb25zdCBUYWdPZmZzZXQgPSAwCisgICAgY29uc3QgUGF5bG9h
ZE9mZnNldCA9IDQKK2Vsc2UKKyAgICBjb25zdCBUYWdPZmZzZXQgPSA0CisgICAgY29uc3QgUGF5
bG9hZE9mZnNldCA9IDAKK2VuZAorCisjIFZhbHVlIHJlcHJlc2VudGF0aW9uIGNvbnN0YW50cy4K
K2NvbnN0IEludDMyVGFnID0gLTEKK2NvbnN0IEJvb2xlYW5UYWcgPSAtMgorY29uc3QgTnVsbFRh
ZyA9IC0zCitjb25zdCBVbmRlZmluZWRUYWcgPSAtNAorY29uc3QgQ2VsbFRhZyA9IC01Citjb25z
dCBFbXB0eVZhbHVlVGFnID0gLTYKK2NvbnN0IERlbGV0ZWRWYWx1ZVRhZyA9IC03Citjb25zdCBM
b3dlc3RUYWcgPSBEZWxldGVkVmFsdWVUYWcKKworIyBUeXBlIGNvbnN0YW50cy4KK2NvbnN0IFN0
cmluZ1R5cGUgPSA1Citjb25zdCBPYmplY3RUeXBlID0gMTAKKworIyBUeXBlIGZsYWdzIGNvbnN0
YW50cy4KK2NvbnN0IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxCitjb25zdCBJbXBsZW1lbnRz
SGFzSW5zdGFuY2UgPSAyCitjb25zdCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID0gOAor
CisjIEhlYXAgYWxsb2NhdGlvbiBjb25zdGFudHMuCitjb25zdCBKU0ZpbmFsT2JqZWN0U2l6ZUNs
YXNzSW5kZXggPSAzCisKKyMgQnl0ZWNvZGUgb3BlcmFuZCBjb25zdGFudHMuCitjb25zdCBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDAKKworIyBDb2RlIHR5cGUgY29uc3Rh
bnRzLgorY29uc3QgR2xvYmFsQ29kZSA9IDAKK2NvbnN0IEV2YWxDb2RlID0gMQorY29uc3QgRnVu
Y3Rpb25Db2RlID0gMgorCisjIFRoZSBpbnRlcnByZXRlciBzdGVhbHMgdGhlIHRhZyB3b3JkIG9m
IHRoZSBhcmd1bWVudCBjb3VudC4KK2NvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0CisKKyMgVGhpcyBtdXN0IG1hdGNoIHd0Zi9WZWN0b3IuaC4KK2NvbnN0IFZl
Y3RvclNpemVPZmZzZXQgPSAwCitjb25zdCBWZWN0b3JCdWZmZXJPZmZzZXQgPSA0CisKKyMgU3Ry
aW5nIGZsYWdzLgorY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDY0CisKKyMgVXRpbGl0aWVz
CittYWNybyBjcmFzaCgpCisgICAgc3RvcmVpIDAsIDB4YmJhZGJlZWZbXQorICAgIG1vdmUgMCwg
dDAKKyAgICBjYWxsIHQwCitlbmQKKworbWFjcm8gYXNzZXJ0KGFzc2VydGlvbikKKyAgICBpZiBB
U1NFUlRfRU5BQkxFRAorICAgICAgICBhc3NlcnRpb24oLm9rKQorICAgICAgICBjcmFzaCgpCisg
ICAgLm9rOgorICAgIGVuZAorZW5kCisKK21hY3JvIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbChkZXN0aW5hdGlvblJlZ2lzdGVyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgbHIs
IGRlc3RpbmF0aW9uUmVnaXN0ZXIKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9wIGRlc3RpbmF0
aW9uUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKworbWFj
cm8gcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oc291cmNlUmVnaXN0ZXIpCisgICAg
aWYgQVJNdjcKKyAgICAgICAgbW92ZSBzb3VyY2VSZWdpc3RlciwgbHIKKyAgICBlbHNpZiBYODYK
KyAgICAgICAgcHVzaCBzb3VyY2VSZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAg
ICBlbmQKK2VuZAorCittYWNybyBkaXNwYXRjaChhZHZhbmNlKQorICAgIGFkZHAgYWR2YW5jZSAq
IDQsIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEJyYW5jaFdpdGhPZmZz
ZXQocGNPZmZzZXQpCisgICAgbHNoaWZ0aSAyLCBwY09mZnNldAorICAgIGFkZHAgcGNPZmZzZXQs
IFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEJyYW5jaChwY09mZnNldCkK
KyAgICBsb2FkaSBwY09mZnNldCwgdDAKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDAp
CitlbmQKKworbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIGxvYWRpIEFyZ3VtZW50Q291
bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGNDYWxs
MihmdW5jdGlvbiwgYXJnMSwgYXJnMikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGFyZzEs
IHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBh
cmcxLCAwCisgICAgICAgIHBva2UgYXJnMiwgMQorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAg
ICBlbmQKKyAgICBjYWxsIGZ1bmN0aW9uCitlbmQKKworIyBUaGlzIGJhcmVseSB3b3Jrcy4gYXJn
MyBhbmQgYXJnNCBzaG91bGQgcHJvYmFibHkgYmUgaW1tZWRpYXRlcy4KK21hY3JvIGNDYWxsNChm
dW5jdGlvbiwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCkKKyAgICBpZiBBUk12NworICAgICAgICBt
b3ZlIGFyZzEsIHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICAgICAgbW92ZSBhcmczLCB0
MgorICAgICAgICBtb3ZlIGFyZzQsIHQzCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJn
MSwgMAorICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICAgICAgcG9rZSBhcmczLCAyCisgICAgICAg
IHBva2UgYXJnNCwgMworICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKKyAgICBjYWxs
IGZ1bmN0aW9uCitlbmQKKworbWFjcm8gY2FsbEhlbHBlcihoZWxwZXIpCisgICAgY0NhbGwyKGhl
bHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisK
KyMgRGVidWdnaW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBsaWtlIHRvIHByaW50IGFuIG9wZXJhbmQg
aW4gdGhlIGluc3RydWN0aW9uIHN0cmVhbS4KK21hY3JvIHRyYWNlT3BlcmFuZChmcm9tV2hlcmUs
IG9wZXJhbmQpCisgICAgY0NhbGw0KF9sbGludF90cmFjZV9vcGVyYW5kLCBjZnIsIFBDLCBmcm9t
V2hlcmUsIG9wZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAor
CisjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCB0aGUgdmFsdWUg
b2YgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24KKyMgc3RyZWFtLgorbWFjcm8gdHJhY2VW
YWx1ZShmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgY0NhbGw0KF9sbGludF90cmFjZV92YWx1ZSwg
Y2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0
MSwgY2ZyCitlbmQKKworbWFjcm8gdHJhY2VFeGVjdXRpb24oKQorICAgIGlmIEVYRUNVVElPTl9U
UkFDSU5HCisgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3RyYWNlKQorICAgIGVuZAorZW5kCisK
KyMgQ2FsbCBhIGhlbHBlciBmb3IgY2FsbCBvcGNvZGVzLgorbWFjcm8gY2FsbENhbGxIZWxwZXIo
YWR2YW5jZSwgaGVscGVyLCBhY3Rpb24pCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMsIHQwCisg
ICAgc3RvcmVwIHQwLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBjQ2FsbDIo
aGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUgdDEsIGNmcgorICAgIGFjdGlvbih0MCkKK2VuZAor
CittYWNybyBzbG93UGF0aEZvckNhbGwoYWR2YW5jZSwgaGVscGVyKQorICAgIGNhbGxDYWxsSGVs
cGVyKAorICAgICAgICBhZHZhbmNlLAorICAgICAgICBoZWxwZXIsCisgICAgICAgIG1hY3JvIChj
YWxsZWUpCisgICAgICAgICAgICBjYWxsIGNhbGxlZQorICAgICAgICAgICAgZGlzcGF0Y2hBZnRl
ckNhbGwoKQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVChpbmNy
ZW1lbnQsIGFjdGlvbikKKyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDAKKyAgICAgICAgYmFkZGlzIGluY3JlbWVudCwgQ29kZUJsb2NrOjptX2xsaW50
RXhlY3V0ZUNvdW50ZXJbdDBdLCAuY29udGludWUKKyAgICAgICAgYWN0aW9uKCkKKyAgICAuY29u
dGludWU6CisgICAgZW5kCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQor
ICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEsCisgICAgICAgIG1hY3JvICgpCisgICAg
ICAgICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgICAg
ICAgICAgY0NhbGwyKF9sbGludF9sb29wX29zciwgY2ZyLCBQQykKKyAgICAgICAgICAgIG1vdmUg
dDEsIGNmcgorICAgICAgICAgICAgYnRweiB0MCwgLnJlY292ZXIKKyAgICAgICAgICAgIGptcCB0
MAorICAgICAgICAucmVjb3ZlcjoKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBU
YWdPZmZzZXRbY2ZyXSwgUEMKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNo
VG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMTAsCisg
ICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBjYWxsSGVscGVyKF9sbGludF9yZXBsYWNlKQor
ICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoaW5kZXgpCisgICAg
YXNzZXJ0KG1hY3JvIChvaykgYmlsdCBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgs
IG9rIGVuZCkKK2VuZAorCisjIEluZGV4LCB0YWcsIGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVy
ZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90CisjIGNoYW5nZWQuCittYWNybyBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nm
ciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhd
LCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMg
KyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEg
Yml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVh
bCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsb2Fk
cCBUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zm
c2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBh
bmQgcGF5bG9hZCBtYXkgYmUgdGhlIHNhbWUgcmVnaXN0ZXIuIEluZGV4IG1heSBiZSBjbG9iYmVy
ZWQuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2Fk
KQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFu
dAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0
YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YWcKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdGFnXSwgdGFnCisgICAg
IyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZh
bHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAz
IHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8
IDMuCisgICAgbHNoaWZ0aSAzLCBpbmRleAorICAgIGFkZHAgaW5kZXgsIHRhZworICAgIGxvYWRw
IFBheWxvYWRPZmZzZXRbdGFnXSwgcGF5bG9hZAorICAgIGxvYWRwIFRhZ09mZnNldFt0YWddLCB0
YWcKKy5kb25lOgorZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFn
Q3VzdG9tKGluZGV4LCB0YWdDaGVjaywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICB0YWdDaGVjayhUYWdPZmZzZXRb
Y2ZyLCBpbmRleCwgOF0pCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwg
cGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsg
VmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJp
dCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwg
dG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgdGFnQ2hl
Y2soVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSkKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0
W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQg
cGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdCBtdXRhdGVk
LiBVc2UKKyMgdGhpcyBpZiB5b3Uga25vdyB3aGF0IHRoZSB0YWcgb2YgdGhlIHZhcmlhYmxlIHNo
b3VsZCBiZS4gRG9pbmcgdGhlIHRhZworIyB0ZXN0IGFzIHBhcnQgb2YgbG9hZGluZyB0aGUgdmFy
aWFibGUgcmVkdWNlcyByZWdpc3RlciB1c2UsIGJ1dCBtYXkgbm90CisjIGJlIGZhc3RlciB0aGFu
IGRvaW5nIGxvYWRDb25zdGFudE9yVmFyaWFibGUgZm9sbG93ZWQgYnkgYSBicmFuY2ggb24gdGhl
CisjIHRhZy4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGluZGV4LCBleHBl
Y3RlZFRhZywgcGF5bG9hZCwgc2xvdykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZFRhZ0N1c3RvbSgKKyAgICAgICAgaW5kZXgsCisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGJp
bmVxIGFjdHVhbFRhZywgZXhwZWN0ZWRUYWcsIHNsb3cgZW5kLAorICAgICAgICBwYXlsb2FkKQor
ZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKGluZGV4
LCBwYXlsb2FkKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKAor
ICAgICAgICBpbmRleCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykgZW5kLAorICAgICAgICBw
YXlsb2FkKQorZW5kCisKK21hY3JvIHdyaXRlQmFycmllcih0YWcsIHBheWxvYWQpCisgICAgIyBO
b3RoaW5nIHRvIGRvLCBzaW5jZSB3ZSBkb24ndCBoYXZlIGEgZ2VuZXJhdGlvbmFsIG9yIGluY3Jl
bWVudGFsIGNvbGxlY3Rvci4KK2VuZAorCittYWNybyB2YWx1ZVByb2ZpbGUodGFnLCBwYXlsb2Fk
LCBwcm9maWxlKQorICAgIHN0b3JlaSB0YWcsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFn
T2Zmc2V0W3Byb2ZpbGVdCisgICAgc3RvcmVpIHBheWxvYWQsIFZhbHVlUHJvZmlsZTo6bV9idWNr
ZXRzICsgUGF5bG9hZE9mZnNldFtwcm9maWxlXQorZW5kCisKKworIyBJbmRpY2F0ZSB0aGUgYmVn
aW5uaW5nIG9mIExMSW50LgorX2xsaW50X2JlZ2luOgorICAgIGNyYXNoKCkKKworCisjIEVudHJ5
cG9pbnRzIGludG8gdGhlIGludGVycHJldGVyCisKK21hY3JvIGZ1bmN0aW9uRm9yQ2FsbENvZGVC
bG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0
UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0
ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2Rl
QmxvY2tGb3JDYWxsW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNy
byBmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAg
ICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9u
OjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRw
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVnaXN0
ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0
dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YXJnZXRSZWdp
c3RlcgorZW5kCisKK21hY3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVy
KQorICAgIHN0b3JlcCBzb3VyY2VSZWdpc3RlciwgQ29kZUJsb2NrW2Nmcl0KK2VuZAorCittYWNy
byBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAgICAjIE5vdGhp
bmcgdG8gZG8hCitlbmQKKworIyBEbyB0aGUgYmFyZSBtaW5pbXVtIHJlcXVpcmVkIHRvIGV4ZWN1
dGUgY29kZS4gU2V0cyB1cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2RlQmxvY2sqCisjIGluIHQxLiBN
YXkgYWxzbyB0cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KK21hY3JvIHByb2xvZ3VlKGNvZGVC
bG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JIZWxwZXIsIHRyYWNlSGVscGVyKQorICAg
IHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1cCB0
aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KKyAgICBzdG9yZXAgdDIs
IFJldHVyblBDW2Nmcl0KKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVs
cGVyKHRyYWNlSGVscGVyKQorICAgIGVuZAorICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICBp
ZiBKSVRfRU5BQkxFRAorICAgICAgICBiYWRkaXMgNSwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0
ZUNvdW50ZXJbdDFdLCAuY29udGludWUKKyAgICAgICAgY0NhbGwyKG9zckhlbHBlciwgY2ZyLCBQ
QykKKyAgICAgICAgbW92ZSB0MSwgY2ZyCisgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAg
ICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCisgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNz
QmVmb3JlUmV0dXJuKHQyKQorICAgICAgICBqbXAgdDAKKyAgICAucmVjb3ZlcjoKKyAgICAgICAg
Y29kZUJsb2NrR2V0dGVyKHQxKQorICAgIC5jb250aW51ZToKKyAgICBlbmQKKyAgICBjb2RlQmxv
Y2tTZXR0ZXIodDEpCisgICAgCisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVC
bG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1
Y3Rpb25zOjptX2luc3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCitlbmQK
KworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xv
Z3VlKCkgbGVhdmVzIGJlaGluZC4KKyMgTXVzdCBjYWxsIGRpc3BhdGNoKDApIGFmdGVyIGNhbGxp
bmcgdGhpcy4KK21hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1NraXApCisg
ICAgIyBQcm9maWxlIHRoZSBhcmd1bWVudHMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hv
aWNlIGJ1dCB0byBkbyB0aGlzLiBUaGlzCisgICAgIyBjb2RlIGlzIHByZXR0eSBob3JyZW5kb3Vz
IGJlY2F1c2Ugb2YgdGhlIGRpZmZlcmVuY2UgaW4gb3JkZXJpbmcgYmV0d2VlbgorICAgICMgYXJn
dW1lbnRzIGFuZCB2YWx1ZSBwcm9maWxlcywgdGhlIGRlc2lyZSB0byBoYXZlIGEgc2ltcGxlIGxv
b3AtZG93bi10by16ZXJvCisgICAgIyBsb29wLCBhbmQgdGhlIGRlc2lyZSB0byB1c2Ugb25seSB0
aHJlZSByZWdpc3RlcnMgc28gYXMgdG8gcHJlc2VydmUgdGhlIFBDIGFuZAorICAgICMgdGhlIGNv
ZGUgYmxvY2suIEl0IGlzIGxpa2VseSB0aGF0IHRoaXMgY29kZSBzaG91bGQgYmUgcmV3cml0dGVu
IGluIGEgbW9yZQorICAgICMgb3B0aW1hbCB3YXkgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBoYXZl
IG1vcmUgdGhhbiBmaXZlIHJlZ2lzdGVycyBhdmFpbGFibGUKKyAgICAjIGZvciBhcmJpdHJhcnkg
dXNlIGluIHRoZSBpbnRlcnByZXRlci4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtUGFyYW1l
dGVyc1t0MV0sIHQwCisgICAgYWRkaSAtcHJvZmlsZUFyZ1NraXAsIHQwICMgVXNlIGFkZGkgYmVj
YXVzZSB0aGF0J3Mgd2hhdCBoYXMgdGhlIHBlZXBob2xlCisgICAgYXNzZXJ0KG1hY3JvIChvaykg
YmlndGVxIHQwLCAwLCBvayBlbmQpCisgICAgYnRpeiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVm
ZmVyT2Zmc2V0W3QxXSwgdDMKKyAgICBtdWxpIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0MiAj
IEFhYWFhaGhoaCEgTmVlZCBzdHJlbmd0aCByZWR1Y3Rpb24hCisgICAgbmVnaSB0MAorICAgIGxz
aGlmdGkgMywgdDAKKyAgICBhZGRwIHQyLCB0MworLmFyZ3VtZW50UHJvZmlsZUxvb3A6CisgICAg
bG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lw
ICogOFtjZnIsIHQwXSwgdDIKKyAgICBzdWJwIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQzCisgICAg
c3RvcmVpIHQyLCBwcm9maWxlQXJnU2tpcCAqIHNpemVvZiBWYWx1ZVByb2ZpbGUgKyBWYWx1ZVBy
b2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSBUaGlzQXJndW1lbnRP
ZmZzZXQgKyBQYXlsb2FkT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwg
dDIKKyAgICBzdG9yZWkgdDIsIHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSAr
IFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBiYWRkaW56
IDgsIHQwLCAuYXJndW1lbnRQcm9maWxlTG9vcAorLmFyZ3VtZW50UHJvZmlsZURvbmU6CisgICAg
CisgICAgIyBDaGVjayBzdGFjayBoZWlnaHQuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNh
bGxlZVJlZ2lzdGVyc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFb
dDFdLCB0MgorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MiAgICMg
RklYTUU6IENhbiBnZXQgdG8gdGhlIFJlZ2lzdGVyRmlsZSBmcm9tIHRoZSBKSVRTdGFja0ZyYW1l
CisgICAgbHNoaWZ0aSAzLCB0MAorICAgIGFkZHAgdDAsIGNmciwgdDAKKyAgICBicGFlcSBJbnRl
cnByZXRlcjo6bV9yZWdpc3RlckZpbGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5z
dGFja0hlaWdodE9LCisKKyAgICAjIFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRv
IGNhbGwgYSBoZWxwZXIuCisgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVj
aykKKy5zdGFja0hlaWdodE9LOgorZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBp
biB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCittYWNybyBmdW5j
dGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBoZWxwZXIpCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dCArIEFyZ3VtZW50Q291bnRbY2ZyXSwgdDAKKyAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251
bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKSAg
ICMgVGhpcyBoZWxwZXIgaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4gbm8gZXJyb3Is
IHQwICE9IDAgPT4gZXJyb3IKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBidGl6IHQwLCAuY29udGlu
dWUKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2Fk
cCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9i
YWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKy5jb250aW51ZToKKyAgICAjIFJl
bG9hZCBDb2RlQmxvY2sgYW5kIFBDLCBzaW5jZSB0aGUgaGVscGVyIGNsb2JiZXJlZCBpdC4KKyAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1
Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0
cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworICAgIGptcCBkb25lTGFiZWwK
K2VuZAorCitfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlv
bkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRy
eV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGlu
dF9ldmFsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVy
LCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3Ry
YWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRl
ciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9y
X2NhbGwsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKKy5mdW5jdGlv
bkZvckNhbGxCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCisgICAgZGlzcGF0
Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWU6Cisg
ICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9u
Q29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Qs
IF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQorLmZ1bmN0aW9u
Rm9yQ29uc3RydWN0QmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigxKQorICAgIGRp
c3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjazoK
KyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hl
Y2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQorICAgIGZ1bmN0aW9uQXJpdHlD
aGVjayguZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9sbGludF9oZWxwZXJfY2FsbF9hcml0eUNoZWNr
KQorCisKK19sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrOgorICAgIHBy
b2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVC
bG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5
Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCisgICAgZnVuY3Rp
b25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfbGxpbnRfaGVscGVyX2Nv
bnN0cnVjdF9hcml0eUNoZWNrKQorCisjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9ucworCitf
bGxpbnRfb3BfZW50ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCB0MgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1WYXJzW3QyXSwgdDIKKyAgICBi
dGl6IHQyLCAub3BFbnRlckRvbmUKKyAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAKKyAgICBtb3Zl
IDAsIHQxCisub3BFbnRlckxvb3A6CisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSB0MCwgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIs
IDhdCisgICAgYnRpbnogdDIsIC5vcEVudGVyTG9vcAorLm9wRW50ZXJEb25lOgorICAgIGRpc3Bh
dGNoKDEpCisKKworX2xsaW50X29wX2NyZWF0ZV9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQorLm9wQ3JlYXRlQWN0aXZhdGlvbkRv
bmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5pdF9sYXp5X3JlZzoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIEVtcHR5VmFs
dWVUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY3JlYXRlX2FyZ3Vt
ZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmlu
ZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBcmd1bWVu
dHNEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCisu
b3BDcmVhdGVBcmd1bWVudHNEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFjcm8gYWxsb2Nh
dGVCYXNpY0pTT2JqZWN0KHNpemVDbGFzc0luZGV4LCBjbGFzc0luZm9PZmZzZXQsIHN0cnVjdHVy
ZSwgcmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNsb3dDYXNlKQorICAgIGNvbnN0IG9mZnNl
dE9mTXlTaXplQ2xhc3MgPSBKU0dsb2JhbERhdGE6OmhlYXAgKyBIZWFwOjptX29iamVjdFNwYWNl
ICsgQWxsb2NhdGlvblNwYWNlOjptX21hcmtlZFNwYWNlICsgTWFya2VkU3BhY2U6Om1fcHJlY2lz
ZVNpemVDbGFzc2VzICsgc2l6ZUNsYXNzSW5kZXggKiBzaXplb2YgTWFya2VkU3BhY2U6OlNpemVD
bGFzcworICAgIAorICAgICMgRklYTUU6IHdlIGNhbiBnZXQgdGhlIGdsb2JhbCBkYXRhIGluIG9u
ZSBsb2FkIGZyb20gdGhlIHN0YWNrLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNo
MQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEK
KyAgICAKKyAgICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4gICAgCisgICAg
bG9hZHAgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0
RnJlZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKKyAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UKKyAg
ICAKKyAgICAjIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAgICBsb2Fk
cCBbcmVzdWx0XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIG9mZnNldE9mTXlTaXpl
Q2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXQor
CisgICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgbG9hZHAgY2xhc3NJbmZvT2Zmc2V0
W3NjcmF0Y2gxXSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCisgICAg
c3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCisgICAgc3RvcmVw
IDAsIEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0KKyAgICBhZGRwIHNpemVvZiBKU09i
amVjdCwgcmVzdWx0LCBzY3JhdGNoMQorICAgIHN0b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1f
cHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KK2VuZAorCitfbGxpbnRfb3BfY3JlYXRlX3RoaXM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGFzc2VydE5vdENv
bnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9w
Q3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wQ3JlYXRl
VGhpc1Nsb3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFt0MF0sIHQyCisgICAg
YnRweiB0MiwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNG
aW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFz
c0luZm8sIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9w
Q3JlYXRlVGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV90aGlz
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRPZmZzZXQg
KyBDYWxsZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0
Y2goMikKKworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENl
bGxUYWcsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYmJi
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBl
LCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0VGhpc1Ns
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAgICBkaXNw
YXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xv
YmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVj
dFN0cnVjdHVyZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmpl
Y3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0
MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3T2JqZWN0
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkKKyAgICBkaXNw
YXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheV9idWZmZXIpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdleHApCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQx
LCB0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9ub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0
MykKKyAgICBiaW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90U2xvdworICAgIHhvcmkgMSwgdDMK
KyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5
bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5vdFNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0Mgor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0
MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVx
IHQyLCB0MywgLm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93CisgICAg
YmliIHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNp
ZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0Miwg
OF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRj
aCg0KQorCisub3BFcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2VxKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2VxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5v
dENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFn
LCAub3BFcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwg
dDEKKyAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3Qx
XSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRp
YXRlCisub3BFcU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIKKyAgICBj
aWVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQyLCB0MQorLm9wRXFOdWxsTm90SW1t
ZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAg
ICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BD
XSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQy
LCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAg
ICBiaW5lcSB0MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFT
bG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwg
dDIKKyAgICBjaW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNl
dFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQor
ICAgIGRpc3BhdGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX25lcSkKKyAgICBkaXNwYXRjaCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251bGw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENd
LCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAg
IGJpbmVxIHQxLCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAg
Lm9wTmVxTnVsbE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBjaW5lcSB0
MSwgTnVsbFRhZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIGFuZGkg
dDIsIHQxCisub3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBU
YWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0
aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKKyAgICBi
aWIgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmlu
ZworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJlcSBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwg
LnNsb3cKKy5ub3RTdHJpbmc6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVy
YXRpb24odDAsIHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2Nmciwg
dDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlz
cGF0Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2go
NCkKK2VuZAorCitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCBy
ZXN1bHQgZW5kLCBfbGxpbnRfaGVscGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3RyaWN0
ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdo
dCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9u
c3RyaWN0ZXEpCisKKworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX2xlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2xlc3NlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVy
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3Jl
YXRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCBJbnQzMlRhZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQxCisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5j
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNwYXRj
aCgyKQorCisKK19sbGludF9vcF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFn
LCAub3BQcmVEZWNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEK
KyAgICBic3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKwor
X2xsaW50X29wX3Bvc3RfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIEludDMyVGFnLCAub3BQb3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5j
RG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0
MiwgdDMKKyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMy
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5v
cFBvc3RJbmNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9wb3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10s
IHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCBJbnQzMlRhZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0Rv
bmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIs
IHQzCisgICAgYnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQzMlRh
ZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQ
b3N0RGVjRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfdG9fanNudW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAs
IHQyLCB0MykKKyAgICBiaWVxIHQyLCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklzSW50CisgICAg
YmlhZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcFRvSnNudW1iZXJTbG93Cisub3BUb0pzbnVtYmVy
SXNJbnQ6CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkg
dDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb0pz
bnVtYmVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fanNudW1iZXIpCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQwLCB0MSwgdDIpCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BO
ZWdhdGVTcmNOb3RJbnQKKyAgICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93Cisg
ICAgbmVnaSB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisg
ICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykK
Ky5vcE5lZ2F0ZVNyY05vdEludDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xv
dworICAgIHhvcmkgMHg4MDAwMDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIs
IHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRp
c3BhdGNoKDMpCisKKy5vcE5lZ2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X25lZ2F0ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUo
aW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBs
b2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0
MiwgdDApCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDMs
IEludDMyVGFnLCAub3AyTm90SW50CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50ZWdlck9w
ZXJhdGlvbkFuZFN0b3JlKHQzLCB0MSwgdDAsIC5zbG93LCB0MikKKyAgICBkaXNwYXRjaCg1KQor
Cisub3AxTm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBp
bnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEgdDIsIExv
d2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJs
ZQorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQxLCBmdDEKKyAgICBq
bXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQxLCB0
MywgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgZmlpMmQg
dDAsIHQyLCBmdDAKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0
MCwgW2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wMk5vdEludDoKKyAgICAjIEZp
cnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBk
ZWZpbml0ZWx5IG5vdC4KKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBiaWEgdDMsIExvd2VzdFRh
ZywgLnNsb3cKKyAgICBjaTJkIHQwLCBmdDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorICAgIGRv
dWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KKyAg
ICBkaXNwYXRjaCg1KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNw
YXRjaCg1KQorZW5kCisKK21hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9w
ZXJhdGlvbiwgaGVscGVyKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3Jv
IChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgaW50ZWdl
ck9wZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRh
ZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBh
eWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBkb3VibGVP
cGVyYXRpb24sIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfYWRkOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBi
YWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQp
IGFkZGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2FkZCkKKworCitf
bGxpbnRfb3BfbXVsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0
b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkK
KyAgICAgICAgICAgIGNvbnN0IHNjcmF0Y2ggPSBpbnQzMlRhZyAgICMgV2Uga25vdyB0aGF0IHdl
IGNhbiByZXVzZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEgY29uc3RhbnQu
CisgICAgICAgICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoCisgICAgICAgICAgICBibXVsaW8gbGVm
dCwgc2NyYXRjaCwgc2xvdworICAgICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRvbmUKKyAgICAg
ICAgICAgIGJpbHQgbGVmdCwgMCwgLnNsb3cKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIC5z
bG93CisgICAgICAgIC5kb25lOgorICAgICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZz
ZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBQYXlsb2FkT2Zm
c2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0KSBtdWxkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9tdWwpCisK
KworX2xsaW50X29wX3N1YjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1YmlvIGxlZnQsIHJpZ2h0LCBzbG93
IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxlZnQsIHJpZ2h0IGVuZCwK
KyAgICAgICAgX2xsaW50X2hlbHBlcl9zdWIpCisKKworX2xsaW50X29wX2RpdjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGlu
dDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjaTJkIGxlZnQs
IGZ0MAorICAgICAgICAgICAgY2kyZCByaWdodCwgZnQxCisgICAgICAgICAgICBkaXZkIGZ0MCwg
ZnQxCisgICAgICAgICAgICBiY2QyaSBmdDEsIHJpZ2h0LCAubm90SW50CisgICAgICAgICAgICBz
dG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3Rv
cmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBqbXAg
LmRvbmUKKyAgICAgICAgLm5vdEludDoKKyAgICAgICAgICAgIHN0b3JlZCBmdDEsIFtjZnIsIGlu
ZGV4LCA4XQorICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQpIGRpdmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2Rp
dikKKworCitfbGxpbnRfb3BfbW9kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfbW9kKQorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8gYml0T3Ao
b3BlcmF0aW9uLCBoZWxwZXIsIGFkdmFuY2UpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQzLCBJ
bnQzMlRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgbG9hZGkg
NFtQQ10sIHQyCisgICAgb3BlcmF0aW9uKHQxLCB0MCwgLnNsb3cpCisgICAgc3RvcmVpIHQzLCBU
YWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MiwgOF0KKyAgICBkaXNwYXRjaChhZHZhbmNlKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhl
bHBlcikKKyAgICBkaXNwYXRjaChhZHZhbmNlKQorZW5kCisKK19sbGludF9vcF9sc2hpZnQ6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHNsb3cpIGxzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVy
X2xzaGlmdCwKKyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfcnNoaWZ0OgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBy
c2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9yc2hpZnQsCisg
ICAgICAgIDQpCisKKworX2xsaW50X29wX3Vyc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAg
ICB1cnNoaWZ0aSBsZWZ0LCByaWdodAorICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdwor
ICAgICAgICBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfdXJzaGlmdCwKKyAgICAgICAgNCkK
KworCitfbGxpbnRfb3BfYml0YW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBhbmRpIGxlZnQsIHJpZ2h0IGVuZCwK
KyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXRhbmQsCisgICAgICAgIDUpCisKKworX2xsaW50X29w
X2JpdHhvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgc2xvdykgeG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfYml0eG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRvcjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
c2xvdykgb3JpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXRvciwK
KyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0bm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3BCaXRu
b3RTbG93CisgICAgbm90aSB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2go
MykKKworLm9wQml0bm90U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfYml0bm90
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQodDEsIENlbGxUYWcsIHQwLCAub3BDaGVja0hhc0luc3RhbmNlU2xv
dykKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0hhc0lu
c3RhbmNlLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdworICAgIGRpc3BhdGNoKDIpCisKKy5vcENo
ZWNrSGFzSW5zdGFuY2VTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jaGVja19o
YXNfaW5zdGFuY2UpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5zdGFuY2VvZjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBDaGVjayB0aGF0IGJhc2VWYWwgaW1wbGVtZW50
cyB0aGUgZGVmYXVsdCBIYXNJbnN0YW5jZSBiZWhhdmlvci4KKyAgICAjIEZJWE1FOiBUaGlzIHNo
b3VsZCBiZSBkZXByZWNhdGVkLgorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZCh0MSwgdDApCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIC5vcEluc3Rh
bmNlb2ZTbG93CisgICAgCisgICAgIyBBY3R1YWxseSBkbyB0aGUgd29yay4KKyAgICBsb2FkaSAx
NltQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BJbnN0YW5jZW9mU2xvdykKKyAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZv
ICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcEluc3RhbmNlb2ZTbG93Cisg
ICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAs
IENlbGxUYWcsIHQyLCAub3BJbnN0YW5jZW9mU2xvdykKKyAgICAKKyAgICAjIFJlZ2lzdGVyIHN0
YXRlOiB0MSA9IHByb3RvdHlwZSwgdDIgPSB2YWx1ZQorICAgIG1vdmUgMSwgdDAKKy5vcEluc3Rh
bmNlb2ZMb29wOgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MgorICAgIGxv
YWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QyXSwgdDIKKyAgICBi
cGVxIHQyLCB0MSwgLm9wSW5zdGFuY2VvZkRvbmUKKyAgICBidGlueiB0MiwgLm9wSW5zdGFuY2Vv
Zkxvb3AKKworICAgIG1vdmUgMCwgdDAKKy5vcEluc3RhbmNlb2ZEb25lOgorICAgIHN0b3JlaSBC
b29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3BJbnN0YW5jZW9mU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW5zdGFuY2VvZikKKyAgICBkaXNwYXRjaCg1
KQorCisKK19sbGludF9vcF90eXBlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl90eXBlb2YpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRf
b3BfaXNfdW5kZWZpbmVkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfaXNfdW5kZWZpbmVkKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X2lzX2Jvb2xlYW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9pc19ib29sZWFuKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX251
bWJlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2lzX251bWJlcikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19zdHJpbmc6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19zdHJp
bmcpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfb2JqZWN0OgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfb2JqZWN0KQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX2Z1bmN0aW9uOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfZnVuY3Rpb24pCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfaW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9yZXNvbHZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfcmVzb2x2ZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9yZXNvbHZlX3Nr
aXA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9y
ZXNvbHZlX3NraXApCisgICAgZGlzcGF0Y2goNSkKKworCittYWNybyByZXNvbHZlR2xvYmFsKHNp
emUsIHNsb3cpCisgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAg
RGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgorICAgICMgOFtQQ10gICBQcm9wZXJ0eSBpZGVudGlm
aWVyIGluZGV4IGluIHRoZSBjb2RlIGJsb2NrLgorICAgICMgMTJbUENdICBTdHJ1Y3R1cmUgcG9p
bnRlciwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgIyAxNltQ
Q10gIE9mZnNldCBpbiBnbG9iYWwgb2JqZWN0LCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2Rl
IGdlbmVyYXRvci4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QwXSwgdDEKKyAgICBicG5lcSB0MSwgMTJbUENdLCBzbG93CisgICAgbG9hZGkgMTZbUENd
LCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCisgICAg
bG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0
MCwgdDEsIDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MiwgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgbG9hZGkgKHNpemUgLSAxKSAqIDRbUENdLCB0MAorICAgIHZhbHVlUHJvZmlsZSh0Miwg
dDMsIHQwKQorZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgcmVzb2x2ZUdsb2JhbCg2LCAub3BSZXNvbHZlR2xvYmFsU2xvdykKKyAgICBk
aXNwYXRjaCg2KQorCisub3BSZXNvbHZlR2xvYmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCisgICAgZGlzcGF0Y2goNikKKworCisjIEdpdmVzIHlv
dSB0aGUgc2NvcGUgaW4gdDAsIHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25hbGx5IHBlcmZv
cm0gYWRkaXRpb25hbCBjaGVja3Mgb24gdGhlCisjIHNjb3BlcyBhcyB0aGV5IGFyZSB0cmF2ZXJz
ZWQuIHNjb3BlQ2hlY2soKSBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgcmVnaXN0
ZXIKKyMgaG9sZGluZyB0aGUgc2NvcGUsIGFuZCBhIHJlZ2lzdGVyIHRoYXQgY2FuIGJlIHVzZWQg
Zm9yIHNjcmF0Y2guIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90CisjIHVzZSB0Mywgc28geW91IGNh
biBob2xkIHN0dWZmIGluIHQzIGlmIG5lZWQgYmUuCittYWNybyBnZXRTY29wZShkZUJydWlqaW5J
bmRleE9wZXJhbmQsIHNjb3BlQ2hlY2spCisgICAgbG9hZHAgU2NvcGVDaGFpbiArIFBheWxvYWRP
ZmZzZXRbY2ZyXSwgdDAKKyAgICBsb2FkaSBkZUJydWlqaW5JbmRleE9wZXJhbmQsIHQyCisgICAg
CisgICAgYnRpeiB0MiwgLmRvbmUKKyAgICAKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEK
KyAgICBiaW5lcSBDb2RlQmxvY2s6Om1fY29kZVR5cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5sb29w
CisgICAgYnRieiBDb2RlQmxvY2s6Om1fbmVlZHNGdWxsU2NvcGVDaGFpblt0MV0sIC5sb29wCisg
ICAgCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX2FjdGl2YXRpb25SZWdpc3Rlclt0MV0sIHQxCisK
KyAgICAjIE5lZWQgdG8gY29uZGl0aW9uYWxseSBza2lwIG92ZXIgb25lIHNjb3BlLgorICAgIGJp
ZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAubm9BY3RpdmF0aW9uCisg
ICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBd
LCB0MAorLm5vQWN0aXZhdGlvbjoKKyAgICBzdWJpIDEsIHQyCisgICAgCisgICAgYnRpeiB0Miwg
LmRvbmUKKy5sb29wOgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hh
aW5Ob2RlOjpuZXh0W3QwXSwgdDAKKyAgICBzdWJpIDEsIHQyCisgICAgYnRpbnogdDIsIC5sb29w
CisKKy5kb25lOgorZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3Nw
XSwgdDMKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmFjdGl2YXRpb25TdHJ1Y3R1cmVbdDNdLCB0
MworICAgIGdldFNjb3BlKAorICAgICAgICAyMFtQQ10sCisgICAgICAgIG1hY3JvIChzY29wZSwg
c2NyYXRjaCkKKyAgICAgICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3Rbc2NvcGVd
LCBzY3JhdGNoCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3NjcmF0Y2hd
LCB0MywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3cKKyAgICAgICAgZW5kKQorICAg
IHJlc29sdmVHbG9iYWwoNywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93KQorICAgIGRpc3Bh
dGNoKDcpCisKKy5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQorICAg
IGRpc3BhdGNoKDcpCisKKy5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKKyAgICBkaXNwYXRjaCg3
KQorCisKK19sbGludF9vcF9nZXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVzdGluYXRpb24g
Zm9yIHRoZSBsb2FkLgorICAgICMgOFtQQ10gICBJbmRleCBvZiByZWdpc3RlciBpbiB0aGUgc2Nv
cGUuCisgICAgIyAxMltQQ10gIERlIEJydWlqaW4gaW5kZXguCisgICAgZ2V0U2NvcGUoMTJbUENd
LCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBs
b2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAK
KyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9h
ZGkgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwg
dDIsIDhdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgMTZbUENdLCB0MQor
ICAgIHZhbHVlUHJvZmlsZSh0MywgdDAsIHQxKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50
X29wX3B1dF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBnZXRTY29wZSg4
W1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgMTJbUENdLCB0MQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQzLCB0MikKKyAgICBsb2FkaSA0W1BDXSwg
dDEKKyAgICB3cml0ZUJhcnJpZXIodDMsIHQyKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpv
YmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3Qw
XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQy
LCBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9nZXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10s
IHQxCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNH
bG9iYWxPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAs
IHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQxCisgICAg
c3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgdmFsdWVQcm9maWxl
KHQyLCB0MSwgdDMpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dsb2JhbF92
YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3Rb
dDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGxvYWRpIDRbUENdLCB0
MQorICAgIHdyaXRlQmFycmllcih0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbdDAs
IHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9iYXNlOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9iYXNlKQorICAgIGRpc3Bh
dGNoKDUpCisKKworX2xsaW50X29wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9lbnN1cmVfcHJvcGVydHlf
ZXhpc3RzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF9iYXNl
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVz
b2x2ZV93aXRoX2Jhc2UpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfcmVzb2x2ZV93
aXRoX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9n
ZXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgV2Ugb25seSBkbyBtb25vbW9y
cGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUK
KyAgICAjIG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hh
bmdlIGFueXRpbWUgaWYgZmFpbHMsIHNpbmNlCisgICAgIyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4g
QXQgYmVzdCB3ZSBnZXQgbHVja3kgYW5kIHRoZSBnZXRfYnlfaWQgd2lsbCBjb250aW51ZQorICAg
ICMgdG8gdGFrZSBmYXN0IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBz
bG93IHBhdGgsIHdoaWNoIGlzIHdoYXQKKyAgICAjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBh
bnl3YXkuCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNs
b3cpCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5
U3RvcmFnZVt0M10sIHQwCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAu
b3BHZXRCeUlkU2xvdworICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIFRhZ09mZnNldFt0
MCwgdDJdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyXSwgdDIKKyAgICBzdG9y
ZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDMyW1BDXSwgdDEKKyAgICB2YWx1ZVByb2ZpbGUodDMs
IHQyLCB0MSkKKyAgICBkaXNwYXRjaCg5KQorCisub3BHZXRCeUlkU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X2lkKQorICAgIGRpc3BhdGNoKDkpCisKKworX2xsaW50
X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50c0xlbmd0aFNsb3cKKyAgICBs
b2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MgorICAgIHN1YmkgMSwg
dDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdl
dEFyZ3VtZW50c0xlbmd0aFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9h
cmd1bWVudHNfbGVuZ3RoKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9p
ZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkg
MTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFn
LCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRwIEpT
T2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYnBuZXEgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDAsIHQyKQorICAgIHdyaXRlQmFycmll
cih0MCwgdDIpCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbdDMsIHQxXQorICAgIHN0b3JlaSB0
MiwgUGF5bG9hZE9mZnNldFt0MywgdDFdCisgICAgZGlzcGF0Y2goOSkKKworLm9wUHV0QnlJZFNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pZCkKKyAgICBkaXNwYXRj
aCg5KQorCisKK21hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwg
dDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5v
cFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBicG5lcSBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgYWRkaXRpb25hbENoZWNrcyh0
MSwgdDMsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAgICBsb2FkcCBK
U09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGFkZHAgdDEsIHQzCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQxLCB0MikKKyAgICB3cml0ZUJhcnJpZXIo
dDEsIHQyKQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIDI0W1BDXSwg
dDEKKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVwIHQxLCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXQorICAgIGRpc3BhdGNoKDkpCitlbmQKKworX2xsaW50X29wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihtYWNybyAo
b2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KSBlbmQpCisKKworX2xsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICBwdXRCeUlkVHJhbnNpdGlvbigKKyAgICAgICAgbWFj
cm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykKKyAgICAgICAgICAgIGNvbnN0IHByb3Rv
Q2VsbCA9IG9sZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lzdGVy
IGZvciB0aGUgcHJvdG8KKyAgICAgICAgCisgICAgICAgICAgICBsb2FkcCAyOFtQQ10sIHNjcmF0
Y2gKKyAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkK
KyAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvcltzY3JhdGNoXSwgc2Ny
YXRjaAorICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5k
KQorICAgICAgICAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29s
ZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25lCisgICAgICAgIC5sb29wOgorICAgICAgICAgICAg
bG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3RydWN0dXJl
XSwgcHJvdG9DZWxsCisgICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3Rv
Q2VsbF0sIG9sZFN0cnVjdHVyZQorICAgICAgICAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2Ny
YXRjaF0sIHNsb3cKKyAgICAgICAgICAgIGFkZHAgNCwgc2NyYXRjaAorICAgICAgICAgICAgYmlu
ZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxs
VGFnLCAubG9vcAorICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kKQorCisKK19sbGludF9vcF9k
ZWxfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9kZWxfYnlfaWQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5X3Zh
bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisg
ICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRwIENvZGVC
bG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBsb2FkcCBKU0dsb2Jh
bERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDFdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBicG5lcSBb
dDBdLCB0MiwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3Qw
XSwgdDMKKyAgICBiaWFlcSB0MSwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDBdLCAub3BHZXRC
eVZhbFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1f
dmVjdG9yICsgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgQXJyYXlTdG9yYWdl
OjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKyAgICBiaWVxIHQyLCBF
bXB0eVZhbHVlVGFnLCAub3BHZXRCeVZhbFNsb3cKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAg
IGxvYWRpIDE2W1BDXSwgdDAKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MCkKKyAgICBkaXNw
YXRjaCg1KQorCisub3BHZXRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2dldF9ieV92YWwpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50
X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAg
bG9hZGkgMTJbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlW
YWx1ZVRhZywgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZCh0MSwgSW50MzJUYWcsIHQyLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdykKKyAg
ICBhZGRpIDEsIHQyCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2Zy
XSwgdDEKKyAgICBiaWFlcSB0MiwgdDEsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbmVn
aSB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCAr
IFRhZ09mZnNldFtjZnIsIHQyLCA4XSwgdDAKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQg
KyBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0
W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisg
ICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QXJndW1lbnRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfZ2V0X2J5X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSAxMltQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxU
YWcsIHQxLCAub3BHZXRCeVBuYW1lU2xvdykKKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgYnBu
ZXEgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIC5vcEdldEJ5UG5hbWVTbG93CisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENl
bGxUYWcsIHQyLCAub3BHZXRCeVBuYW1lU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQwCisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QyXSwgdDAKKyAgICBicG5lcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6
bV9jYWNoZWRTdHJ1Y3R1cmVbdDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDI0W1BD
XSwgdDAKKyAgICBsb2FkaSBbY2ZyLCB0MCwgOF0sIHQwCisgICAgc3ViaSAxLCB0MAorICAgIGJp
YWVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QzXSwg
Lm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2Vb
dDJdLCB0MgorICAgIGxvYWRpIFRhZ09mZnNldFt0MiwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbdDIsIHQwLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9y
ZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDcpCisKKy5vcEdldEJ5UG5hbWVTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfcG5hbWUpCisgICAgZGlzcGF0Y2goNykK
KworCitfbGxpbnRfb3BfcHV0X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxU
YWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIEludDMyVGFnLCB0MiwgLm9wUHV0QnlWYWxTbG93
KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxEYXRhW3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0lu
Zm9bdDBdLCB0MAorICAgIGJwbmVxIFt0MV0sIHQwLCAub3BQdXRCeVZhbFNsb3cKKyAgICBiaWFl
cSB0MiwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDFdLCAub3BQdXRCeVZhbFNsb3cKKyAgICBs
b2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDFdLCB0MAorICAgIGJpZXEgQXJyYXlTdG9yYWdlOjpt
X3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BQdXRCeVZh
bEVtcHR5Cisub3BQdXRCeVZhbFN0b3JlUmVzdWx0OgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MywgdDEsIHQzKQorICAgIHdyaXRlQmFycmll
cih0MSwgdDMpCisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zm
c2V0W3QwLCB0MiwgOF0KKyAgICBzdG9yZWkgdDMsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQ
YXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BQdXRCeVZhbEVt
cHR5OgorICAgIGFkZGkgMSwgQXJyYXlTdG9yYWdlOjptX251bVZhbHVlc0luVmVjdG9yW3QwXQor
ICAgIGJpYiB0MiwgQXJyYXlTdG9yYWdlOjptX2xlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsU3RvcmVS
ZXN1bHQKKyAgICBhZGRpIDEsIHQyLCB0MQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjpt
X2xlbmd0aFt0MF0KKyAgICBqbXAgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorCisub3BQdXRCeVZh
bFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV92YWwpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfZGVsX2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV92YWwpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2luZGV4OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X2luZGV4KQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX3B1dF9nZXR0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfZ2V0dGVyKQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX3B1dF9zZXR0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9wdXRfc2V0dGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX2xvb3A6CisgICAgbm9wCitfbGxpbnRfb3Bfam1wOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBkaXNwYXRjaEJyYW5jaCg0W1BDXSkKKworCitfbGxpbnRfb3Bfam1wX3Njb3BlczoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2ptcF9zY29w
ZXMpCisgICAgZGlzcGF0Y2goMCkKKworCittYWNybyBqdW1wVHJ1ZU9yRmFsc2UoY29uZGl0aW9u
T3AsIHNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQodDEsIEJvb2xlYW5UYWcsIHQwLCAuc2xvdykKKyAgICBjb25kaXRpb25PcCh0MCwg
LnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNo
KDhbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKHNsb3cpCisgICAgZGlzcGF0Y2goMCkK
K2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl90cnVlOgorICAgIG5vcAorX2xsaW50X29wX2p0cnVl
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1h
Y3JvICh2YWx1ZSwgdGFyZ2V0KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9qdHJ1ZSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKKyAgICBub3AK
K19sbGludF9vcF9qZmFsc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JG
YWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIHRhcmdldCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamZhbHNlKQorCisKK21hY3JvIGVxdWFsTnVsbChj
ZWxsSGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBs
b2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxIYW5kbGVyKFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKKyAgICBkaXNw
YXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuaW1tZWRp
YXRlOgorICAgIG9yaSAxLCB0MQorICAgIGltbWVkaWF0ZUhhbmRsZXIodDEsIC50YXJnZXQpCisg
ICAgZGlzcGF0Y2goMykKK2VuZAorCitfbGxpbnRfb3BfamVxX251bGw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0
Ym56IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBt
YWNybyAodmFsdWUsIHRhcmdldCkgYmllcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKyAg
ICAKKworX2xsaW50X29wX2puZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1
YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRieiB2YWx1ZSwgTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJn
ZXQpIGJpbmVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorCisKK19sbGludF9vcF9qbmVx
X3B0cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9h
ZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAu
b3BKbmVxUHRyQnJhbmNoCisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwg
Lm9wSm5lcVB0ckZhbGxUaHJvdWdoCisub3BKbmVxUHRyQnJhbmNoOgorICAgIGRpc3BhdGNoQnJh
bmNoKDEyW1BDXSkKKy5vcEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaCg0KQorCisK
K21hY3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUsIGhlbHBlcikKKyAg
ICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMs
IHQyLCB0MykKKyAgICBiaW5lcSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0
MiwgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5qdW1w
VGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgYmlhIHQwLCBMb3dl
c3RUYWcsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUK
KyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MywgZnQxCisgICAgam1w
IC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MywgdDIs
IGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGZpaTJkIHQxLCB0MCwgZnQwCisgICAgZG91Ymxl
Q29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMk5v
dEludDoKKyAgICBjaTJkIHQxLCBmdDAKKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAg
ICBmaWkyZCB0MywgdDIsIGZ0MQorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFy
Z2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5qdW1wVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNo
KDEyW1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2go
MCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzOgorICAgIG5vcAorX2xsaW50X29wX2ps
ZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3MpCisKKworX2xsaW50X29wX2pubGVzczoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzcykKKworCitfbGxpbnRfb3BfbG9vcF9p
Zl9ncmVhdGVyOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkg
YmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJkZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfamdyZWF0ZXIpCisKKworX2xsaW50X29wX2puZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJkbHRlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2puZ3JlYXRlcikKKworCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzZXE6Cisg
ICAgbm9wCitfbGxpbnRfb3Bfamxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29t
cGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCBy
aWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJk
bHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVz
c2VxKQorCisKK19sbGludF9vcF9qbmxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
ZGd0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5s
ZXNzZXEpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcmVxOgorICAgIG5vcAorX2xsaW50
X29wX2pncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXEgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXJlcSkKKwor
CitfbGxpbnRfb3Bfam5ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBh
cmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdHVu
IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRl
cmVxKQorCisKK19sbGludF9vcF9sb29wX2hpbnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9v
cF9zd2l0Y2hfaW1tOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQy
CisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEs
IHQwKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6
bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MyAg
ICMgRklYTUU6IHdvdWxkIGJlIG5pY2UgdG8gcGVlcGhvbGUgdGhpcyEKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6OlJhcmVEYXRhOjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZm
ZXJPZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEgdDEsIEludDMyVGFn
LCAub3BTd2l0Y2hJbW1Ob3RJbnQKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwg
dDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9y
U2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxl
SnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDMKKyAg
ICBsb2FkaSBbdDMsIHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhy
b3VnaAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoSW1tTm90
SW50OgorICAgIGJpYiB0MSwgTG93ZXN0VGFnLCAub3BTd2l0Y2hJbW1TbG93ICAjIEdvIHRvIHNs
b3cgcGF0aCBpZiBpdCdzIGEgZG91YmxlLgorLm9wU3dpdGNoSW1tRmFsbFRocm91Z2g6CisgICAg
ZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5vcFN3aXRjaEltbVNsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3N3aXRjaF9pbW0pCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRf
b3Bfc3dpdGNoX2NoYXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwg
dDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MSwgdDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQz
CisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFi
bGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJp
bmVxIHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJv
dWdoCisgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0MAorICAgIGJpbmVxIFN0cmlu
Z0ltcGw6Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9h
ZHAgU3RyaW5nSW1wbDo6bV9kYXRhOFt0MF0sIHQxCisgICAgYnRpbnogU3RyaW5nSW1wbDo6bV9o
YXNoQW5kRmxhZ3NbdDBdLCBIYXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0Y2hDaGFyOEJpdAor
ICAgIGxvYWRoIFt0MV0sIHQwCisgICAgam1wIC5vcFN3aXRjaENoYXJSZWFkeQorLm9wU3dpdGNo
Q2hhcjhCaXQ6CisgICAgbG9hZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENoYXJSZWFkeToKKyAgICBz
dWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVt
cFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENo
YXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyAr
IFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCisg
ICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdp
dGhPZmZzZXQodDEpCisKKy5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJy
YW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9zdHJpbmcpCisgICAg
ZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGJ0aXogMTJbUENdLCAub3BOZXdGdW5jVW5jaGVja2VkCisgICAgbG9hZGkgNFtQQ10s
IHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BO
ZXdGdW5jRG9uZQorLm9wTmV3RnVuY1VuY2hlY2tlZDoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfbmV3X2Z1bmMpCisub3BOZXdGdW5jRG9uZToKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9uZXdfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuY19leHApCisgICAgZGlzcGF0Y2goMykKKworCittYWNy
byBkb0NhbGwoaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwg
dDEKKyAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93KQor
ICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAg
YWRkcCAyNCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNv
bnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29w
ZUNoYWluW3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNd
CisgICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBsb2Fk
aSA4IC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNl
dFtjZnJdCisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNdCisgICAgc3RvcmVpIHQyLCBB
cmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2Fs
bGVlICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFn
T2Zmc2V0W3QzXQorICAgIG1vdmUgdDMsIGNmcgorICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86
Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworLm9wQ2Fs
bFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3Bf
Y2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY2Fs
bCkKKworCitfbGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBk
b0NhbGwoX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3QpCisKKworX2xsaW50X29wX2NhbGxfdmFyYXJn
czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIF9sbGludF9o
ZWxwZXJfY2FsbF92YXJhcmdzKQorCisKK19sbGludF9vcF9jYWxsX2V2YWw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIAorICAgICMgRXZhbCBpcyBleGVjdXRlZCBpbiBvbmUgb2YgdHdvIG1v
ZGVzOgorICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSByZWFsbHkgaW52b2tpbmcg
ZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBleGVjdXRpb24gaXMgcGVyZm9tZWQg
ZW50aXJlbHkgaW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBpdAorICAgICMgICAgcmV0dXJucyB0aGUg
UEMgb2YgYSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0aGUgcmV0dXJuIHZhbHVlCisgICAg
IyAgICB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgICMKKyAgICAjIDIpIFdlIGZpbmQgdGhh
dCB3ZSdyZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwoKSB0aGF0IGlzIG5vdAorICAg
ICMgICAgdGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVscGVyIHJldHVybnMgdGhlIFBDIG9mIHRo
ZSB0aGluZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQuCisgICAgIworICAgICMg
VGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywgd2hpY2ggd291bGQgcmVxdWlyZSBh
IHRvdGFsIG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0ZSB0aGF0IGNhbm5vdCBi
ZSBlYXNpbHkgcGFja2VkIGludG8gdHdvCisgICAgIyByZWdpc3RlcnMgKEMgZnVuY3Rpb25zIGNh
biByZXR1cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5KToKKyAgICAjCisgICAgIyAtIFRo
ZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBtb2Rp
ZmllZAorICAgICMgICBieSB0aGUgaGVscGVyLCBidXQgdGhlIGNvbnZlbnRpb24gaXMgdGhhdCBp
dCByZXR1cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0b3RhbGx5IGNsZWFyIGlmIHRoYXQncyBu
ZWNlc3NhcnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUuCisgICAgIyAgIEJ1dCB0aGF0
J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRlciBzbyB3ZSBzdGljayB3aXRoIGl0
LgorICAgICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBoZWxwZXIgc3VjY2Vzc2Z1bGx5
IGV4ZWN1dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAjICAgdGhlIHJldHVybiB2YWx1ZSwgb3Ig
ZGlkIG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3IgdXMKKyAgICAjICAgdG8g
Y2FsbC4KKyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAgICAjICAgLSBUaGUgSlMgcmV0dXJuIHZh
bHVlICh0d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisgICAgIyAgIC0gVGhlIFBDIHRvIGNhbGwu
CisgICAgIworICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2llciB0byBqdXN0IGFsd2F5cyBo
YXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBhIFBDIHRvIGNhbGwsIGFuZCB0aGF0
IFBDIG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAorICAgICMgcmV0dXJucyB0aGUgSlMg
dmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAKKyAgICBzbG93UGF0aEZvckNhbGwo
NCwgX2xsaW50X2hlbHBlcl9jYWxsX2V2YWwpCisKKworX2xsaW50X2dlbmVyaWNfcmV0dXJuX3Bv
aW50OgorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYWN0
aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
bG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZh
bHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQKKyAgICBiaWVxIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVk
Cisub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCisub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQ6
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYXJndW1lbnRzOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdWJpIDEsIHQwICAg
IyBHZXQgdGhlIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcgorICAgIGJpZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRl
ZAorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCisub3BU
ZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGRv
UmV0dXJuKCkKKyAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgIGxvYWRwIENhbGxlckZy
YW1lW2Nmcl0sIGNmcgorICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQor
ICAgIHJldAorZW5kCisKK19sbGludF9vcF9yZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitf
bGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRp
IDhbUENdLCB0MworICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdmFsdWVQcm9maWxlKHQxLCB0
MCwgdDMpCisgICAgdHJhY2VFeGVjdXRpb24oKSAjIE5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSBp
dCB3b3VsZCBjbG9iYmVyIHQxLCB0MAorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jl
dF9vYmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hU
b0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFJldE9iamVj
dE9yVGhpc05vdE9iamVjdAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0Mgor
ICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2Jq
ZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgZG9SZXR1cm4oKQorCisu
b3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3Q6CisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxp
bnRfb3BfbWV0aG9kX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIGlnbm9y
ZSBtZXRob2QgY2hlY2tzIGFuZCB1c2Ugbm9ybWFsIGdldF9ieV9pZCBvcHRpbWl6YXRpb25zLgor
ICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N0cmNhdDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N0cmNhdCkKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF90b19wcmltaXRpdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9QcmltaXRp
dmVJc0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJibmVx
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBl
LCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisub3BUb1ByaW1pdGl2ZUlzSW1tOgorICAgIHN0b3Jl
aSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9QcmltaXRpdmVTbG93Q2FzZToK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fcHJpbWl0aXZlKQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX2dldF9wbmFtZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfcG5hbWVzKQorICAgIGRpc3BhdGNoKDApICMg
VGhlIGhlbHBlciBlaXRoZXIgYWR2YW5jZXMgdGhlIFBDIG9yIGp1bXBzIHVzIHRvIHNvbWV3aGVy
ZSBlbHNlLgorCisKK19sbGludF9vcF9uZXh0X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZGkgMTZbUENdLCB0MgorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQwCisgICAgYmllcSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQyLCA4XSwgLm9wTmV4dFBuYW1lRW5kCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAgbG9hZHAgSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6bV9qc1N0cmluZ3NbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDhdLCB0
MworICAgIGFkZGkgMSwgdDAKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
bG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMK
KyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAgICBicG5lcSB0MSwgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVT
bG93CisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVD
aGFpblt0Ml0sIHQwCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAK
KyAgICBidHB6IFt0MF0sIC5vcE5leHRQbmFtZVRhcmdldAorLm9wTmV4dFBuYW1lQ2hlY2tQcm90
b3R5cGVMb29wOgorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFt0
MV0sIE51bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJv
dG90eXBlICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0Ml0sIHQxCisgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBh
ZGRwIDQsIHQwCisgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29w
Cisub3BOZXh0UG5hbWVUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMjRbUENdKQorCisub3BO
ZXh0UG5hbWVFbmQ6CisgICAgZGlzcGF0Y2goNykKKworLm9wTmV4dFBuYW1lU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV4dF9wbmFtZSkgIyBUaGlzIGVpdGhlciBrZWVwcyB0
aGUgUEMgd2hlcmUgaXQgd2FzIChjYXVzaW5nIHVzIHRvIGxvb3ApIG9yIHNldHMgaXQgdG8gdGFy
Z2V0LgorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3B1c2hfc2NvcGU6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX3Njb3BlKQor
ICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3BvcF9zY29wZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3BvcF9zY29wZSkKKyAgICBkaXNw
YXRjaCgxKQorCisKK19sbGludF9vcF9wdXNoX25ld19zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfbmV3X3Njb3BlKQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX2NhdGNoOgorICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBl
bmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKKyAgICAj
IG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0
Y2gpLCBhbmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAo
c2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRoZSBKSVQgdGhyb3dpbmcgcHJv
dG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0aHJvd2luZworICAgICMg
Y29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93aW5nIHRvIHRoZSBpbnRlcnBy
ZXRlciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVy
UENGb3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpn
bG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJl
dGVyUENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24g
KyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlv
biArIFRhZ09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0
aW9uICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9i
YWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAgICAgIAorICAgIGxvYWRpIDRbUENd
LCB0MgorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3Jl
aSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdHJhY2VFeGVjdXRpb24oKSAgIyBUaGlz
IG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIgdDAsIHQx
LCB0MiwgdDMgYWJvdmUuCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3c6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvdykK
KyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3I6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvd19y
ZWZlcmVuY2VfZXJyb3IpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfanNyOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBhZGRpIDMgKiA0LCBQ
QywgdDEKKyAgICBzdG9yZWkgdDEsIFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoQnJhbmNoKDhb
UENdKQorCisKK19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA0W1BDXSwgdDAKKyAgICBsb2FkcCBbY2ZyLCB0MCwgOF0sIFBDCisgICAgZGlzcGF0Y2goMCkK
KworCitfbGxpbnRfb3BfZGVidWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9kZWJ1ZykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9w
cm9maWxlX3dpbGxfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3Rh
Y2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgdDAKKyAgICBidHB6IFt0MF0s
IC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJv
ZmlsZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIHQw
CisgICAgYnRweiBbdDBdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERvbmU6Cisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhyb3dfZnJv
bV9oZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJw
cmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMpLCBzbworICAgICMgdGhlIHRo
cm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0
byBoZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dp
bmcgcHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQx
CisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAg
am1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworX2xsaW50
X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNz
QWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0
MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAg
IGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKKyMgTGFz
dGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBw
b3J0IGFsbCBvcGNvZGVzLgorIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVu
IHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAorIyBhcyBtdWNoLgorCittYWNy
byBub3RTdXBwb3J0ZWQoKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGNyYXNoKCkK
KyAgICBlbHNlCisgICAgICAgICMgV2Ugc2hvdWxkIHVzZSB3aGF0ZXZlciB0aGUgc21hbGxlc3Qg
cG9zc2libGUgaW5zdHJ1Y3Rpb24gaXMsIGp1c3QgdG8KKyAgICAgICAgIyBlbnN1cmUgdGhhdCB0
aGVyZSBpcyBhIGdhcCBiZXR3ZWVuIGluc3RydWN0aW9uIGxhYmVscy4gSWYgbXVsdGlwbGUKKyAg
ICAgICAgIyBzbWFsbGVzdCBpbnN0cnVjdGlvbnMgZXhpc3QsIHdlIHNob3VsZCBwaWNrIHRoZSBv
bmUgdGhhdCBpcyBtb3N0CisgICAgICAgICMgbGlrZWx5IHJlc3VsdCBpbiBleGVjdXRpb24gYmVp
bmcgaGFsdGVkLiBDdXJyZW50bHkgdGhhdCBpcyB0aGUgYnJlYWsKKyAgICAgICAgIyBpbnN0cnVj
dGlvbiBvbiBhbGwgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBpbnRlcmVzdGVkIGluLiAoQnJlYWsgaXMg
aW50MworICAgICAgICAjIG9uIEludGVsLCB3aGljaCBpcyAxIGJ5dGUsIGFuZCBia3B0IG9uIEFS
TXY3LCB3aGljaCBpcyAyIGJ5dGVzLikKKyAgICAgICAgYnJlYWsKKyAgICBlbmQKK2VuZAorCitf
bGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRf
b3BfZ2V0X2J5X2lkX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfY3VzdG9tX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfY3VzdG9tX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfY3VzdG9tX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9i
eV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRf
Z2V0dGVyX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRf
Z2V0dGVyX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRf
Z2V0dGVyX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9w
cm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3NlbGY6Cisg
ICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9zdHJpbmdfbGVuZ3RoOgorICAgIG5v
dFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBw
b3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3JlcGxhY2U6CisgICAgbm90U3VwcG9ydGVk
KCkKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uOgorICAgIG5vdFN1cHBvcnRlZCgp
CisKKworIyBJbmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50LgorX2xsaW50X2VuZDoKKyAgICBjcmFz
aCgpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworI2lmIEVO
QUJMRShMTElOVCkKKworI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorCisjaW5j
bHVkZSAiTExJbnRBc3NlbWJseS5oIgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExvd0xldmVsSW50ZXJwcmV0
ZXJfaAorI2RlZmluZSBMb3dMZXZlbEludGVycHJldGVyX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKKyNk
ZWZpbmUgTExJTlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxlbmd0aCkgZXh0ZXJuICJDIiB2
b2lkIGxsaW50XyMjb3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKExMSU5UX0lOU1RS
VUNUSU9OX0RFQ0wpOworI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wKKworZXh0ZXJuICJD
IiB2b2lkIGxsaW50X2JlZ2luKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW5kKCk7CitleHRl
cm4gIkMiIHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxs
aW50X2V2YWxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9nZW5lcmljX3JldHVy
bl9wb2ludCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1w
b2xpbmUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9s
aW5lKCk7CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMb3dMZXZlbElu
dGVycHJldGVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3
LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJt
djcucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkzIEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCitjbGFzcyBTcGVjaWFsUmVnaXN0ZXIKKyAgZGVmIGluaXRpYWxp
emUobmFtZSkKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgYXJtVjdPcGVyYW5k
CisgICAgQG5hbWUKKyAgZW5kCitlbmQKKworQVJNdjdfREFUQV9SRUcgPSBTcGVjaWFsUmVnaXN0
ZXIubmV3KCJpcCIpCitBUk12N19BRERSX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoInIzIikK
KworZGVmIG1vdmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJlbnRseSB3ZSBv
bmx5IGhhbmRsZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1vdi9tb3Z0IGZv
ciB0aGUgY29tcGxleCBvbmVzLgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2CisgICAg
JGFzbS5wdXRzICJtb3Z3IFwjI3t2YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAg
ZWxzaWYgKH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20ucHV0cyAibXZu
dyBcIyN7fnZhbHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNlCisgICAgJGFz
bS5wdXRzICJtb3Z3IFwjI3t2YWx1ZSAmIDB4ZmZmZn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5k
fSIKKyAgICBpZiAodmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCisgICAgICAkYXNtLnB1dHMgIm1v
dnQgXCMje3ZhbHVlID4+IDE2fSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAgIGVuZAor
ICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBj
YXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICJyMCIKKyAgICB3aGVu
ICJ0MSIsICJhMSIsICJyMSIKKyAgICAgICJyMSIKKyAgICB3aGVuICJ0MiIsICJhMiIKKyAgICAg
ICJyMiIKKyAgICB3aGVuICJhMyIKKyAgICAgICJyMyIKKyAgICB3aGVuICJ0MyIKKyAgICAgICJy
NCIKKyAgICB3aGVuICJ0NCIKKyAgICAgICJyNyIKKyAgICB3aGVuICJjZnIiCisgICAgICAicjUi
CisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQ
cmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2li
bGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3
TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJ
RAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZy
IgorICAgICAgImQwIgorICAgIHdoZW4gImZyMSIsCisgICAgICAiZDEiCisgICAgd2hlbiAiZnIy
IgorICAgICAgImQyIgorICAgIHdoZW4gImZyMyIKKyAgICAgICJkMyIKKyAgICB3aGVuICJmcjQi
CisgICAgICAiZDQiCisgICAgd2hlbiAiZnI1IgorICAgICAgImQ1IgorICAgIGVsc2UKKyAgICAg
IHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVt
b3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAor
ICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAg
ICB5aWVsZCBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgYXJtVjdP
cGVyYW5kCisgICAgcmFpc2UgIkludmFsaWQgaW1tZWRpYXRlICN7dmFsdWV9IiBpZiB2YWx1ZSA8
IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAiIyR7dmFsdWV9IgorICBlbmQKKyAgCisgIGRlZiBhcm1W
N1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3Nz
aWJsZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJt
VjdMb2FkU3RvcmVXcmFwCisgICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCittb2R1bGUgQVJN
djdBZGRyZXNzVXRpbGl0aWVzCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICBzZWxmLmFy
bVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICRhc20ucHV0cyAiXHRsZHIgI3tz
ZWxmLmFybVY3UG9zc2libHlNZW1vcnlPcGVyYW5kfSwgI3tBUk12N19EQVRBX1JFRy5hcm1WN09w
ZXJhbmR9IgorICAgIHlpZWxkIEFSTXY3X0RBVEFfUkVHCisgICAgJGFzbS5wdXRzICJcdHN0ciAj
e0FSTXY3X0RBVEFfUkVHLmFybVY3T3BlcmFuZH0sICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVtb3J5
T3BlcmFuZH0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0Fk
ZHJlc3NVdGlsaXRpZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5k
CisgICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAg
ICAgIG1vdmVJbW1lZGlhdGUob2Zmc2V0LnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgICBlbmQK
KyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZz
ZXQudmFsdWUgPCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgIlsje2Jhc2Uu
YXJtVjdPcGVyYW5kfSwgI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgICBlbHNl
CisgICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje29mZnNldC5hcm1WN09wZXJhbmR9XSIK
KyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGluY2x1ZGUgQVJNdjdB
ZGRyZXNzVXRpbGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFu
ZAorICAgIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52
YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgICAgICAkYXNtLnB1dHMgImFkZHcgI3tBUk12N19BRERS
X1JFRy5hcm1WN09wZXJhbmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAgZW5k
CisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFs
dWUgIT0gMAorICAgICAgIlsje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH0sICN7aW5kZXgu
YXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVsc2UKKyAgICAgICJbI3tiYXNl
LmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgor
ICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgaW5jbHVkZSBB
Uk12N0FkZHJlc3NVdGlsaXRpZXMKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9y
eU9wZXJhbmQKKyAgICBtb3ZlSW1tZWRpYXRlKGFkZHJlc3MudmFsdWUsIEFSTXY3X0FERFJfUkVH
KQorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICJbI3tB
Uk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgZW5kCitlbmQKKworCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDEwOCBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJh
Y2tlbmRzIgorcmVxdWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWly
ZSAicGFyc2VyIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2Ns
YXNzIEFzc2VtYmxlcgorICBkZWYgaW5pdGlhbGl6ZShvdXRwKQorICAgIEBvdXRwID0gb3V0cAor
ICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBkZWYgZW50ZXJBc20KKyAgICBAb3V0cC5w
dXRzICJhc20gKCIKKyAgICBAc3RhdGUgPSA6YXNtCisgIGVuZAorICAKKyAgZGVmIGxlYXZlQXNt
CisgICAgQG91dHAucHV0cyAiKTsiCisgICAgQHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRl
ZiBpbkFzbQorICAgIGVudGVyQXNtCisgICAgeWllbGQKKyAgICBsZWF2ZUFzbQorICBlbmQKKyAg
CisgIGRlZiBwdXRzKGxpbmUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAg
QG91dHAucHV0cygobGluZSArICJcbiIpLmluc3BlY3QpCisgIGVuZAorICAKKyAgZGVmIGNvbW1l
bnQodGV4dCkKKyAgICBAb3V0cC5wdXRzICIvLyAje3RleHR9IgorICBlbmQKK2VuZAorCithc21G
aWxlID0gQVJHVi5zaGlmdAorb2Zmc2V0c0ZpbGUgPSBBUkdWLnNoaWZ0CitvdXRwdXRGbG5tID0g
QVJHVi5zaGlmdAorCitvZmZzZXRzTGlzdCwgY29uZmlnSW5kZXggPSBvZmZzZXRzQW5kQ29uZmln
dXJhdGlvbkluZGV4KG9mZnNldHNGaWxlKQoraW5wdXREYXRhID0gSU86OnJlYWQoYXNtRmlsZSkK
KworaW5wdXRIYXNoID0KKyAgIi8vIG9mZmxpbmVhc20gaW5wdXQgaGFzaDogIiArIERpZ2VzdDo6
U0hBMS5oZXhkaWdlc3QoaW5wdXREYXRhKSArCisgICIgIiArIERpZ2VzdDo6U0hBMS5oZXhkaWdl
c3QoKG9mZnNldHNMaXN0ICsgW2NvbmZpZ0luZGV4XSkuam9pbignICcpKQorCitpZiBGaWxlVGVz
dC5leGlzdD8gb3V0cHV0RmxubQorICBGaWxlLm9wZW4ob3V0cHV0RmxubSwgInIiKSB7CisgICAg
fCBpbnAgfAorICAgIGZpcnN0TGluZSA9IGlucC5nZXRzCisgICAgaWYgZmlyc3RMaW5lIGFuZCBm
aXJzdExpbmUuY2hvbXAgPT0gaW5wdXRIYXNoCisgICAgICAkc3RkZXJyLnB1dHMgIk5vdGhpbmcg
Y2hhbmdlZC4iCisgICAgICBleGl0IDAKKyAgICBlbmQKKyAgfQorZW5kCisKK0ZpbGUub3Blbihv
dXRwdXRGbG5tLCAidyIpIHsKKyAgfCBvdXRwIHwKKyAgJG91dHB1dCA9IG91dHAKKyAgJG91dHB1
dC5wdXRzIGlucHV0SGFzaAorICAKKyAgJGFzbSA9IEFzc2VtYmxlci5uZXcoJG91dHB1dCkKKyAg
CisgIGFzdCA9IHBhcnNlKGxleChpbnB1dERhdGEpKQorICAKKyAgZm9yU2V0dGluZ3MoY29tcHV0
ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdClbY29uZmlnSW5kZXhdLCBhc3QpIHsKKyAgICB8IGNv
bmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICBhc3NlcnRDb25maWd1
cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgICAgbG93TGV2ZWxBU1QgPSBsb3dMZXZlbEFTVC5y
ZXNvbHZlKCpidWlsZE9mZnNldHNNYXAobG93TGV2ZWxBU1QsIG9mZnNldHNMaXN0KSkKKyAgICBl
bWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFj
a2VuZCkgeworICAgICAgJGFzbS5pbkFzbSB7CisgICAgICAgIGxvd0xldmVsQVNULmxvd2VyKGJh
Y2tlbmQpCisgICAgICB9CisgICAgfQorICB9Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9hc3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxNyBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
IyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgQmFzZSB1dGlsaXR5IHR5cGVzIGZvciB0aGUgQVNULiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKworIyBWYWxpZCBtZXRob2RzIGZvciBOb2RlOgorIworIyBub2RlLmNoaWxkcmVuIC0+IFJl
dHVybnMgYW4gYXJyYXkgb2YgaW1tZWRpYXRlIGNoaWxkcmVuLgorIworIyBub2RlLmRlc2NlbmRl
bnRzIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHN0cmljdCBkZXNjZW5kYW50cyAoY2hpbGRy
ZW4KKyMgICAgIGFuZCBjaGlsZHJlbiBvZiBjaGlsZHJlbiwgdHJhbnNpdGl2ZWx5KS4KKyMKKyMg
bm9kZS5mbGF0dGVuIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgc3RyaWN0IGRl
c2NlbmRhbnRzIGFuZAorIyAgICAgdGhlIG5vZGUgaXRzZWxmLgorIworIyBub2RlLmZpbHRlcih0
eXBlKSAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhvc2UgZWxlbWVudHMgaW4KKyMg
ICAgIG5vZGUuZmxhdHRlbiB0aGF0IGFyZSBvZiB0aGUgZ2l2ZW4gdHlwZSAoaXNfYT8gdHlwZSBy
ZXR1cm5zIHRydWUpLgorIworIyBub2RlLm1hcENoaWxkcmVue3x2fCAuLi59IC0+IFJldHVybnMg
YSBuZXcgbm9kZSB3aXRoIGFsbCBjaGlsZHJlbgorIyAgICAgcmVwbGFjZWQgYWNjb3JkaW5nIHRv
IHRoZSBnaXZlbiBibG9jay4KKyMKKyMgRXhhbXBsZXM6CisjCisjIG5vZGUuZmlsdGVyKFNldHRp
bmcpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHNldHRpbmdzIHRoYXQgdGhlIEFTVCdzCisj
ICAgICBJZlRoZW5FbHNlIGJsb2NrcyBkZXBlbmQgb24uCisjCisjIG5vZGUuZmlsdGVyKFN0cnVj
dE9mZnNldCkudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc3RydWN0dXJlIG9mZnNldHMKKyMg
ICAgIHRoYXQgdGhlIEFTVCBkZXBlbmRzIG9uLgorCitjbGFzcyBOb2RlCisgIGF0dHJfcmVhZGVy
IDpjb2RlT3JpZ2luCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIEBjb2Rl
T3JpZ2luID0gY29kZU9yaWdpbgorICBlbmQKKyAgCisgIGRlZiBjb2RlT3JpZ2luU3RyaW5nCisg
ICAgImxpbmUgbnVtYmVyICN7QGNvZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBkZXNjZW5k
YW50cworICAgIGNoaWxkcmVuLmNvbGxlY3R7fHZ8IHYuZmxhdHRlbn0uZmxhdHRlbgorICBlbmQK
KyAgCisgIGRlZiBmbGF0dGVuCisgICAgW3NlbGZdICsgZGVzY2VuZGFudHMKKyAgZW5kCisgIAor
ICBkZWYgZmlsdGVyKHR5cGUpCisgICAgZmxhdHRlbi5zZWxlY3R7fHZ8IHYuaXNfYT8gdHlwZX0K
KyAgZW5kCitlbmQKKworY2xhc3MgTm9DaGlsZHJlbiA8IE5vZGUKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIFtdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgc2VsZgorICBl
bmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXRLZXkKKyAgYXR0cl9yZWFkZXIgOnN0cnVjdCwg
OmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShzdHJ1Y3QsIGZpZWxkKQorICAgIEBzdHJ1Y3Qg
PSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisgIGRlZiBoYXNoCisgICAg
QHN0cnVjdC5oYXNoICsgQGZpZWxkLmhhc2ggKiAzCisgIGVuZAorICAKKyAgZGVmIGVxbD8ob3Ro
ZXIpCisgICAgQHN0cnVjdCA9PSBvdGhlci5zdHJ1Y3QgYW5kIEBmaWVsZCA9PSBvdGhlci5maWVs
ZAorICBlbmQKK2VuZAorICAgIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
QVNUIG5vZGVzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3Mg
U3RydWN0T2Zmc2V0IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgICAgQGZpZWxkID0gZmllbGQK
KyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yRmllbGQoY29k
ZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBrZXkgPSBTdHJ1Y3RPZmZzZXRLZXkubmV3KHN0
cnVjdCwgZmllbGQpCisgICAgCisgICAgdW5sZXNzIEBAbWFwcGluZ1trZXldCisgICAgICBAQG1h
cHBpbmdba2V5XSA9IFN0cnVjdE9mZnNldC5uZXcoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkK
KyAgICBlbmQKKyAgICBAQG1hcHBpbmdba2V5XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
IiN7c3RydWN0fTo6I3tmaWVsZH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAgICBp
ZiBAc3RydWN0ICE9IG90aGVyLnN0cnVjdAorICAgICAgcmV0dXJuIEBzdHJ1Y3QgPD0+IG90aGVy
LnN0cnVjdAorICAgIGVuZAorICAgIEBmaWVsZCA8PT4gb3RoZXIuZmllbGQKKyAgZW5kCitlbmQK
KworY2xhc3MgU2l6ZW9mIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0CisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAg
CisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHVubGVzcyBAQG1h
cHBpbmdbc3RydWN0XQorICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBTaXplb2YubmV3KGNvZGVP
cmlnaW4sIHN0cnVjdCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbc3RydWN0XQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgInNpemVvZiAje0BzdHJ1Y3R9IgorICBlbmQKKyAgCisgIGRlZiA8
PT4ob3RoZXIpCisgICAgQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgIGVuZAorZW5kCisKK2Ns
YXNzIEltbWVkaWF0ZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnZhbHVlCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEB2YWx1ZSA9IHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3t2YWx1ZX0i
CisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIG90aGVyLmlzX2E/IEltbWVkaWF0ZSBh
bmQgb3RoZXIudmFsdWUgPT0gQHZhbHVlCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0
ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBBZGRJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJp
Z2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICsgI3tyaWdo
dC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0Cisg
ICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQs
IEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBTdWJJbW1lZGlhdGVz
Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IC0gI3tyaWdodC5kdW1wfSkiCisgIGVu
ZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0
LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmln
aHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5k
CisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBNdWxJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2lu
LCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICIoI3tsZWZ0LmR1bXB9ICogI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNz
IE5lZ0ltbWVkaWF0ZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBj
aGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BjaGlsZF0KKyAg
ZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOZWdJbW1lZGlhdGUubmV3KGNvZGVPcmln
aW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigtI3tAY2hp
bGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgor
ICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFt
ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisg
IEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gUmVn
aXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFt
ZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3Mg
RlBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2Vs
Zi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQor
ICAgICAgQEBtYXBwaW5nW25hbWVdID0gRlBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1l
KQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZSA8IE5vQ2hpbGRyZW4KKyAgYXR0
cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1h
cHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAg
IHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFZhcmlhYmxl
Lm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNz
IDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFzZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgYmFzZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QGJhc2UgPSBiYXNlCisgICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIFtAYmFzZSwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQG9mZnNl
dCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQuZHVtcH1bI3tiYXNlLmR1
bXB9XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6YmFzZSwgOmluZGV4LCA6c2NhbGUsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQGJhc2UgPSBiYXNlCisgICAgQGluZGV4ID0gaW5kZXgKKyAgICBAc2NhbGUgPSBz
Y2FsZQorICAgIHJhaXNlIHVubGVzcyBbMSwgMiwgNCwgOF0ubWVtYmVyPyBAc2NhbGUKKyAgICBA
b2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BiYXNlLCBA
aW5kZXgsIEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQmFzZUlu
ZGV4Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQGluZGV4KSwgQHNjYWxl
LCAoeWllbGQgQG9mZnNldCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQu
ZHVtcH1bI3tiYXNlLmR1bXB9LCAje2luZGV4LmR1bXB9LCAje3NjYWxlfV0iCisgIGVuZAorZW5k
CisKK2NsYXNzIEFic29sdXRlQWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmFk
ZHJlc3MKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGFkZHJlc3MpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICIje2FkZHJlc3MuZHVtcH1bXSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1
Y3Rpb24gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpvcGNvZGUsIDpvcGVyYW5kcworICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgb3Bjb2RlLCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBvcGNvZGUgPSBvcGNvZGUKKyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcwor
ICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVm
IG1hcENoaWxkcmVuKCZwcm9jKQorICAgIEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBAb3Bj
b2RlLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJc
dCIgKyBvcGNvZGUudG9fcyArICIgIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9p
bigiLCAiKQorICBlbmQKK2VuZAorCitjbGFzcyBFcnJvciA8IE5vQ2hpbGRyZW4KKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIlx0ZXJyb3IiCisgIGVuZAorZW5kCisKK2NsYXNzIENvbnN0RGVjbCA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnZhcmlhYmxlLCA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEB2YXJpYWJsZSA9IHZhcmlhYmxlCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAor
ICBkZWYgY2hpbGRyZW4KKyAgICBbQHZhcmlhYmxlLCBAdmFsdWVdCisgIGVuZAorICAKKyAgZGVm
IG1hcENoaWxkcmVuCisgICAgQ29uc3REZWNsLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHZhcmlh
YmxlKSwgKHlpZWxkIEB2YWx1ZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiY29uc3Qg
I3tAdmFyaWFibGUuZHVtcH0gPSAje0B2YWx1ZS5kdW1wfSIKKyAgZW5kCitlbmQKKworJGxhYmVs
TWFwcGluZyA9IHt9CisKK2NsYXNzIExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBzZWxmLmZvck5h
bWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICBy
YWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5n
W25hbWVdLmlzX2E/IExhYmVsCisgICAgZWxzZQorICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9
IExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdb
bmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQK
KworY2xhc3MgTG9jYWxMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisKKyAgQEB1bmlxdWVOYW1lQ291bnRlciA9IDAK
KyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxN
YXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0i
IHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExvY2FsTGFiZWwKKyAgICBlbHNlCisg
ICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTG9jYWxMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFt
ZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIHNl
bGYudW5pcXVlKGNvbW1lbnQpCisgICAgbmV3TmFtZSA9ICJfI3tjb21tZW50fSIKKyAgICBpZiAk
bGFiZWxNYXBwaW5nW25ld05hbWVdCisgICAgICB3aGlsZSAkbGFiZWxNYXBwaW5nW25ld05hbWUg
PSAiXyN7QEB1bmlxdWVOYW1lQ291bnRlcn1fI3tjb21tZW50fSJdCisgICAgICAgIEBAdW5pcXVl
TmFtZUNvdW50ZXIgKz0gMQorICAgICAgZW5kCisgICAgZW5kCisgICAgZm9yTmFtZShuaWwsIG5l
d05hbWUpCisgIGVuZAorICAKKyAgZGVmIGNsZWFuTmFtZQorICAgIGlmIG5hbWUgPX4gL15cLi8K
KyAgICAgICJfIiArIG5hbWVbMS4uLTFdCisgICAgZWxzZQorICAgICAgbmFtZQorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFz
cyBMYWJlbFJlZmVyZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0K
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBMYWJlbFJlZmVyZW5jZS5uZXcoY29k
ZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJl
bC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorZW5k
CisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVy
IDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTG9j
YWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAor
ICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICBsYWJlbC5uYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlIDwgTm9kZQorICBhdHRy
X3JlYWRlciA6bGlzdAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGlzdCkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsaXN0ID0gbGlzdAorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIGxpc3QKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisg
ICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIEBsaXN0Lm1hcCgmcHJvYykpCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICBsaXN0LmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiXG4iKQorICBl
bmQKK2VuZAorCitjbGFzcyBUcnVlIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQorICAg
IHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNlID0gVHJ1ZS5uZXcKKyAgCisgIGRl
ZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1ZQor
ICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJ0cnVlIgorICBlbmQKK2VuZAor
CitjbGFzcyBGYWxzZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihu
aWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IEZhbHNlLm5ldworICAKKyAgZGVmIHNlbGYu
aW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVmIHZhbHVlCisgICAgZmFs
c2UKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJmYWxzZSIKKyAgZW5kCitlbmQKKworY2xh
c3MgVHJ1ZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBUcnVlLmluc3RhbmNlCisgIGVuZAorZW5k
CisKK2NsYXNzIEZhbHNlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAgIEZhbHNlLmluc3RhbmNlCisg
IGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpu
YW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30K
KyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBt
YXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBTZXR0aW5nLm5ldyhjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQgPCBOb2RlCisgIGF0dHJf
cmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxl
ZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAg
QHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEBy
aWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBbmQubmV3KGNvZGVPcmln
aW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIigje2xlZnQuZHVtcH0gYW5kICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitj
bGFzcyBPciA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJl
bgorICAgIE9yLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IG9yICN7cmlnaHQuZHVt
cH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBOb3QgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpjaGls
ZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAY2hpbGQgPSBjaGlsZAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgor
ICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5v
dC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiKG5vdCAje2NoaWxkLmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgU2tpcCA8IE5v
Q2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0c2tpcCIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgSWZUaGVuRWxzZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnByZWRpY2F0ZSwgOnRoZW5D
YXNlCisgIGF0dHJfYWNjZXNzb3IgOmVsc2VDYXNlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBwcmVkaWNhdGUsIHRoZW5DYXNlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QHByZWRpY2F0ZSA9IHByZWRpY2F0ZQorICAgIEB0aGVuQ2FzZSA9IHRoZW5DYXNlCisgICAgQGVs
c2VDYXNlID0gU2tpcC5uZXcoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4K
KyAgICBpZiBAZWxzZUNhc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2UsIEBlbHNlQ2Fz
ZV0KKyAgICBlbHNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNlXQorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4s
ICh5aWVsZCBAcHJlZGljYXRlKSwgKHlpZWxkIEB0aGVuQ2FzZSksICh5aWVsZCBAZWxzZUNhc2Up
KQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImlmICN7cHJlZGljYXRlLmR1bXB9XG4iICsg
dGhlbkNhc2UuZHVtcCArICJcbmVsc2VcbiIgKyBlbHNlQ2FzZS5kdW1wICsgIlxuZW5kIgorICBl
bmQKK2VuZAorCitjbGFzcyBNYWNybyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5hbWUsIDp2YXJp
YWJsZXMsIDpib2R5CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCB2YXJp
YWJsZXMsIGJvZHkpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAg
ICBAdmFyaWFibGVzID0gdmFyaWFibGVzCisgICAgQGJvZHkgPSBib2R5CisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgQHZhcmlhYmxlcyArIFtAYm9keV0KKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBNYWNyby5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEB2YXJpYWJsZXMu
bWFwe3x2fCB5aWVsZCB2fSwgKHlpZWxkIEBib2R5KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICJtYWNybyAje25hbWV9KCIgKyB2YXJpYWJsZXMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2lu
KCIsICIpICsgIilcbiIgKyBib2R5LmR1bXAgKyAiXG5lbmQiCisgIGVuZAorZW5kCisKK2NsYXNz
IE1hY3JvQ2FsbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5hbWUsIDpvcGVyYW5kcworICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcworICAg
IHJhaXNlIHVubGVzcyBAb3BlcmFuZHMKKyAgICBAb3BlcmFuZHMuZWFjaHt8dnwgcmFpc2UgdW5s
ZXNzIHZ9CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgQG9wZXJhbmRzCisgIGVuZAor
ICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdp
biwgQG5hbWUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgIlx0I3tuYW1lfSgiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIp
ICsgIikiCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2JhY2tlbmRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVp
cmUgIng4NiIKKworQkFDS0VORFMgPQorICBbCisgICAiWDg2IiwKKyAgICJBUk12NyIKKyAgXQor
CitXT1JLSU5HX0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIKKyAgXQorCitCQUNLRU5EX1BBVFRF
Uk4gPSBSZWdleHAubmV3KCdcXEEoJyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFonKQor
CitjbGFzcyBOb2RlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIHNlbmQoImxvd2VyIiArIG5hbWUp
CisgIGVuZAorZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBsb3dlcigpIGZvciB0aG9zZSBub2RlcyB0
aGF0IGFyZSBiYWNrZW5kLWFnbm9zdGljCisKK2RlZiBzYW5pdGl6ZUxhYmVsTmFtZShuYW1lKQor
ICAjIFNvbWUgcGxhdGZvcm1zIGRvbid0IHdhbnQgdGhlIGxlYWRpbmcgIl8iLiBJZiB3ZSBldmVy
IHdhbnQgdG8gZG8gc29tZXRoaW5nCisgICMgYWJvdXQgdGhhdCwgaXQgd291bGQgYmUgaGVyZS4K
KyAgbmFtZQorZW5kCisKK2NsYXNzIExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAgICRhc20u
cHV0cyAiLmdsb2JsICN7c2FuaXRpemVMYWJlbE5hbWUoc2VsZi5uYW1lKX0iCisgICAgJGFzbS5w
dXRzICIje3Nhbml0aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9OiIKKyAgZW5kCitlbmQKKworY2xh
c3MgTG9jYWxMYWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHMgIkxfb2ZmbGlu
ZWFzbV8je3NlbGYubmFtZVsxLi4tMV19OiIKKyAgZW5kCitlbmQKKworY2xhc3MgU2tpcAorICBk
ZWYgbG93ZXIobmFtZSkKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIGxvd2Vy
KG5hbWUpCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IG5vZGUgfAorICAgICAgbm9kZS5sb3dl
cihuYW1lKQorICAgIH0KKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9y
LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2Vu
ZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NyBAQAor
IyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgor
cmVxdWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2Vy
IgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2lucHV0RmxubSA9
IEFSR1Yuc2hpZnQKK291dHB1dEZsbm0gPSBBUkdWLnNoaWZ0CisKK2RlZiBlbWl0TWFnaWNOdW1i
ZXIKKyAgT0ZGU0VUX01BR0lDX05VTUJFUlMuZWFjaCB7CisgICAgfCBudW1iZXIgfAorICAgICRv
dXRwdXQucHV0cyAiI3tudW1iZXJ9LCIKKyAgfQorZW5kCisKK2lucHV0RGF0YSA9IElPOjpyZWFk
KGlucHV0RmxubSkKK2lucHV0SGFzaCA9IERpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoaW5wdXREYXRh
KQorCitpZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0RmxubQorICBGaWxlLm9wZW4ob3V0cHV0Rmxu
bSwgInIiKSB7CisgICAgfCBpbnAgfAorICAgIGZpcnN0TGluZSA9IGlucC5nZXRzCisgICAgaWYg
Zmlyc3RMaW5lIGFuZCBmaXJzdExpbmUuY2hvbXAgPT0gIi8vIG9mZmxpbmVhc20gaW5wdXQgaGFz
aDogI3tpbnB1dEhhc2h9IgorICAgICAgJHN0ZGVyci5wdXRzICJOb3RoaW5nIGNoYW5nZWQuIgor
ICAgICAgZXhpdCAwCisgICAgZW5kCisgIH0KK2VuZAorCitvcmlnaW5hbEFTVCA9IHBhcnNlKGxl
eChpbnB1dERhdGEpKQorCitGaWxlLm9wZW4ob3V0cHV0RmxubSwgInciKSB7CisgIHwgb3V0cCB8
CisgICRvdXRwdXQgPSBvdXRwCisgIG91dHAucHV0cyAiLy8gb2ZmbGluZWFzbSBpbnB1dCBoYXNo
OiAje2lucHV0SGFzaH0iCisgIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhvcmlnaW5hbEFT
VCkgeworICAgIHwgc2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfAorICAgIG9mZnNldHNM
aXN0ID0gYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorICAgIHNpemVzTGlzdCA9
IGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKKyAgICAKKyAgICBsZW5ndGggPSAoT0ZGU0VU
X01BR0lDX05VTUJFUlMuc2l6ZSArIDEpICogKDEgKyBvZmZzZXRzTGlzdC5zaXplICsgc2l6ZXNM
aXN0LnNpemUpCisgICAgCisgICAgb3V0cC5wdXRzICJzdGF0aWMgY29uc3QgdW5zaWduZWQgZXh0
cmFjdG9yVGFibGVbI3tsZW5ndGh9XSA9IHsiCisgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgb3V0
cC5wdXRzICIje2luZGV4fSwiCisgICAgb2Zmc2V0c0xpc3QuZWFjaCB7CisgICAgICB8IG9mZnNl
dCB8CisgICAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICAgIG91dHAucHV0cyAiT0ZGTElORV9BU01f
T0ZGU0VUT0YoI3tvZmZzZXQuc3RydWN0fSwgI3tvZmZzZXQuZmllbGR9KSwiCisgICAgfQorICAg
IHNpemVzTGlzdC5lYWNoIHsKKyAgICAgIHwgb2Zmc2V0IHwKKyAgICAgIGVtaXRNYWdpY051bWJl
cgorICAgICAgb3V0cC5wdXRzICJzaXplb2YoI3tvZmZzZXQuc3RydWN0fSksIgorICAgIH0KKyAg
ICBvdXRwLnB1dHMgIn07IgorICB9Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9pbnN0cnVjdGlvbnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE4OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworTUFD
Uk9fSU5TVFJVQ1RJT05TID0KKyAgWworICAgImFkZGkiLAorICAgImFuZGkiLAorICAgImxzaGlm
dGkiLAorICAgIm11bGkiLAorICAgIm5lZ2kiLAorICAgIm5vdGkiLAorICAgIm9yaSIsCisgICAi
cnNoaWZ0aSIsCisgICAidXJzaGlmdGkiLAorICAgInN1YmkiLAorICAgInhvcmkiLAorICAgImxv
YWRpIiwKKyAgICJsb2FkYiIsCisgICAibG9hZGgiLAorICAgInN0b3JlaSIsCisgICAic3RvcmVi
IiwKKyAgICJsb2FkZCIsCisgICAibW92ZWQiLAorICAgInN0b3JlZCIsCisgICAiYWRkZCIsCisg
ICAiZGl2ZCIsCisgICAic3ViZCIsCisgICAibXVsZCIsCisgICAic3FydGQiLAorICAgImNpMmQi
LAorICAgImZpaTJkIiwgIyB1c2FnZTogZmlpMmQgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50
IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPiwgPGZwcj4KKyAgICJmZDJp
aSIsICMgdXNhZ2U6IGZkMmlpIDxmcHI+LCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0
cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+CisgICAiYmRlcSIsCisgICAiYmRu
ZXEiLAorICAgImJkZ3QiLAorICAgImJkZ3RlcSIsCisgICAiYmRsdCIsCisgICAiYmRsdGVxIiwK
KyAgICJiZGVxdW4iLAorICAgImJkbmVxdW4iLAorICAgImJkZ3R1biIsCisgICAiYmRndGVxdW4i
LAorICAgImJkbHR1biIsCisgICAiYmRsdGVxdW4iLAorICAgImJ0ZDJpIiwKKyAgICJ0ZDJpIiwK
KyAgICJiY2QyaSIsCisgICAibW92ZHoiLAorICAgInBvcCIsCisgICAicHVzaCIsCisgICAibW92
ZSIsCisgICAic3hpMnAiLAorICAgInp4aTJwIiwKKyAgICJub3AiLAorICAgImJpZXEiLAorICAg
ImJpbmVxIiwKKyAgICJiaWEiLAorICAgImJpYWVxIiwKKyAgICJiaWIiLAorICAgImJpYmVxIiwK
KyAgICJiaWd0IiwKKyAgICJiaWd0ZXEiLAorICAgImJpbHQiLAorICAgImJpbHRlcSIsCisgICAi
YmJlcSIsCisgICAiYmJuZXEiLAorICAgImJiYSIsCisgICAiYmJhZXEiLAorICAgImJiYiIsCisg
ICAiYmJiZXEiLAorICAgImJiZ3QiLAorICAgImJiZ3RlcSIsCisgICAiYmJsdCIsCisgICAiYmJs
dGVxIiwKKyAgICJidGlvIiwKKyAgICJidGlzIiwKKyAgICJidGl6IiwKKyAgICJidGlueiIsCisg
ICAiYnRibyIsCisgICAiYnRicyIsCisgICAiYnRieiIsCisgICAiYnRibnoiLAorICAgImptcCIs
CisgICAiYmFkZGlvIiwKKyAgICJiYWRkaXMiLAorICAgImJhZGRpeiIsCisgICAiYmFkZGlueiIs
CisgICAiYnN1YmlvIiwKKyAgICJic3ViaXMiLAorICAgImJzdWJpeiIsCisgICAiYnN1YmlueiIs
CisgICAiYm11bGlvIiwKKyAgICJibXVsaXMiLAorICAgImJtdWxpeiIsCisgICAiYm11bGlueiIs
CisgICAiYm9yaW8iLAorICAgImJvcmlzIiwKKyAgICJib3JpeiIsCisgICAiYm9yaW56IiwKKyAg
ICJicmVhayIsCisgICAiY2FsbCIsCisgICAicmV0IiwKKyAgICJjaWVxIiwKKyAgICJjaW5lcSIs
CisgICAiY2lhIiwKKyAgICJjaWFlcSIsCisgICAiY2liIiwKKyAgICJjaWJlcSIsCisgICAiY2ln
dCIsCisgICAiY2lndGVxIiwKKyAgICJjaWx0IiwKKyAgICJjaWx0ZXEiLAorICAgInRpbyIsCisg
ICAidGlzIiwKKyAgICJ0aXoiLAorICAgInRpbnoiLAorICAgInRibyIsCisgICAidGJzIiwKKyAg
ICJ0YnoiLAorICAgInRibnoiLAorICAgInBlZWsiLAorICAgInBva2UiLAorICAgImJwZXEiLAor
ICAgImJwbmVxIiwKKyAgICJicGEiLAorICAgImJwYWVxIiwKKyAgICJicGIiLAorICAgImJwYmVx
IiwKKyAgICJicGd0IiwKKyAgICJicGd0ZXEiLAorICAgImJwbHQiLAorICAgImJwbHRlcSIsCisg
ICAiYWRkcCIsCisgICAiYW5kcCIsCisgICAib3JwIiwKKyAgICJzdWJwIiwKKyAgICJ4b3JwIiwK
KyAgICJsb2FkcCIsCisgICAiY3BlcSIsCisgICAiY3BuZXEiLAorICAgImNwYSIsCisgICAiY3Bh
ZXEiLAorICAgImNwYiIsCisgICAiY3BiZXEiLAorICAgImNwZ3QiLAorICAgImNwZ3RlcSIsCisg
ICAiY3BsdCIsCisgICAiY3BsdGVxIiwKKyAgICJzdG9yZXAiLAorICAgImJ0cG8iLAorICAgImJ0
cHMiLAorICAgImJ0cHoiLAorICAgImJ0cG56IiwKKyAgICJiYWRkcG8iLAorICAgImJhZGRwcyIs
CisgICAiYmFkZHB6IiwKKyAgICJiYWRkcG56IgorICBdCisKK1g4Nl9JTlNUUlVDVElPTlMgPQor
ICBbCisgICAiY2RxaSIsCisgICAiaWRpdmkiCisgIF0KKworSU5TVFJVQ1RJT05TID0gTUFDUk9f
SU5TVFJVQ1RJT05TICsgWDg2X0lOU1RSVUNUSU9OUworCitJTlNUUlVDVElPTl9QQVRURVJOID0g
UmVnZXhwLm5ldygnXFxBKCgnICsgSU5TVFJVQ1RJT05TLmpvaW4oJyl8KCcpICsgJykpXFxaJykK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3Jf
Y29uc3RhbnRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMg
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK01BR0lDX05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQor
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMu
cmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJvZmZzZXRfZXh0cmFjdG9y
X2NvbnN0YW50cyIKKworT0ZGU0VUX01BR0lDX05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZm
NWU3NTUgXQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBvZmZzZXRzTGlz
dChhc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIHNpemVzTGlzdChhc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBSZXR1cm5zIGEgbGlzdCBv
ZiBvZmZzZXRzIGFuZCBzaXplcyB1c2VkIGJ5IHRoZSBBU1QuICAgICAgICAgICAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgb2Zmc2V0c0xpc3QoYXN0KQor
ICBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CitlbmQKKworZGVmIHNpemVzTGlz
dChhc3QpCisgIGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKK2VuZAorCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGFz
dCwgZmlsZSkgLT4gICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICBbb2Zmc2V0cywg
aW5kZXhdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBQYXJzZXMgdGhlIG9mZnNldHMgZnJvbSBhIGZpbGUgYW5kIHJl
dHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHRoZSAjCisjIGluZGV4IG9mIHRoZSBjb25maWd1
cmF0aW9uIHRoYXQgaXMgdmFsaWQgaW4gdGhpcyBidWlsZCB0YXJnZXQuICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBvZmZzZXRzQW5kQ29uZmlndXJhdGlv
bkluZGV4KGZpbGUpCisgIGluZGV4ID0gbmlsCisgIG9mZnNldHMgPSBbXQorICBlbmRpYW5uZXNz
TWFya2VyQnl0ZXMgPSBuaWwKKyAgCisgIGRlZiByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAg
ICBieXRlcyA9IFtdCisgICAgNC50aW1lcyB7CisgICAgICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQor
ICAgIH0KKyAgICAKKyAgICBpZiBlbmRpYW5uZXNzID09IDpsaXR0bGUKKyAgICAgICMgTGl0dGxl
IGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDAgfAorICAgICAgIGJ5dGVzWzFdIDw8IDggfAor
ICAgICAgIGJ5dGVzWzJdIDw8IDE2IHwKKyAgICAgICBieXRlc1szXSA8PCAyNCkKKyAgICBlbHNl
CisgICAgICAjIEJpZyBlbmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAyNCB8CisgICAgICAgYnl0
ZXNbMV0gPDwgMTYgfAorICAgICAgIGJ5dGVzWzJdIDw8IDggfAorICAgICAgIGJ5dGVzWzNdIDw8
IDApCisgICAgZW5kCisgIGVuZAorICAKKyAgWzpsaXR0bGUsIDpiaWddLmVhY2ggeworICAgIHwg
ZW5kaWFubmVzcyB8CisgICAgbWFnaWNCeXRlcyA9IFtdCisgICAgTUFHSUNfTlVNQkVSUy5lYWNo
IHsKKyAgICAgIHwgbnVtYmVyIHwKKyAgICAgIGN1cnJlbnRCeXRlcyA9IFtdCisgICAgICA0LnRp
bWVzIHsKKyAgICAgICAgY3VycmVudEJ5dGVzIDw8IChudW1iZXIgJiAweGZmKQorICAgICAgICBu
dW1iZXIgPj49IDgKKyAgICAgIH0KKyAgICAgIGlmIGVuZGlhbm5lc3MgPT0gOmJpZworICAgICAg
ICBjdXJyZW50Qnl0ZXMucmV2ZXJzZSEKKyAgICAgIGVuZAorICAgICAgbWFnaWNCeXRlcyArPSBj
dXJyZW50Qnl0ZXMKKyAgICB9CisgICAgCisgICAgRmlsZS5vcGVuKGZpbGUsICJyIikgeworICAg
ICAgfCBpbnAgfAorICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgIGxvb3AgeworICAgICAg
ICBieXRlID0gaW5wLmdldGJ5dGUKKyAgICAgICAgYnJlYWsgdW5sZXNzIGJ5dGUKKyAgICAgICAg
aWYgYnl0ZSA9PSBtYWdpY0J5dGVzW3doZXJlSW5NYXJrZXJdCisgICAgICAgICAgd2hlcmVJbk1h
cmtlciArPSAxCisgICAgICAgICAgaWYgd2hlcmVJbk1hcmtlciA9PSBtYWdpY0J5dGVzLnNpemUK
KyAgICAgICAgICAgICMgV2UgaGF2ZSBhIG1hdGNoISBJZiB3ZSBoYXZlIG5vdCB5ZXQgcmVhZCB0
aGUgZW5kaWFubmVzcyBtYXJrZXIgYW5kIGluZGV4LAorICAgICAgICAgICAgIyB0aGVuIHJlYWQg
dGhvc2Ugbm93OyBvdGhlcndpc2UgcmVhZCBhbiBvZmZzZXQuCisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIGlmIG5vdCBpbmRleAorICAgICAgICAgICAgICBpbmRleCA9IHJlYWRJbnQoZW5kaWFu
bmVzcywgaW5wKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBvZmZzZXRzIDw8IHJl
YWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UK
KyAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICBlbmQKKyAgICAgIH0KKyAgICB9
CisgICAgCisgICAgYnJlYWsgaWYgaW5kZXgKKyAgfQorICAKKyAgcmFpc2UgdW5sZXNzIGluZGV4
CisgIAorICBbb2Zmc2V0cywgaW5kZXhdCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgYnVpbGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpIC0+IFtvZmZzZXRz
LCBzaXplc10gICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEJ1aWxkcyBhIG1h
cHBpbmcgYmV0d2VlbiBTdHJ1Y3RPZmZzZXQgbm9kZXMgYW5kIHRoZWlyIHZhbHVlcy4gICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBidWlsZE9mZnNldHNN
YXAoYXN0LCBvZmZzZXRzTGlzdCkKKyAgb2Zmc2V0c01hcCA9IHt9CisgIHNpemVzTWFwID0ge30K
KyAgYXN0T2Zmc2V0c0xpc3QgPSBvZmZzZXRzTGlzdChhc3QpCisgIGFzdFNpemVzTGlzdCA9IHNp
emVzTGlzdChhc3QpCisgIHJhaXNlIHVubGVzcyBhc3RPZmZzZXRzTGlzdC5zaXplICsgYXN0U2l6
ZXNMaXN0LnNpemUgPT0gb2Zmc2V0c0xpc3Quc2l6ZQorICBvZmZzZXRzTGlzdChhc3QpLmVhY2hf
d2l0aF9pbmRleCB7CisgICAgfCBzdHJ1Y3RPZmZzZXQsIGluZGV4IHwKKyAgICBvZmZzZXRzTWFw
W3N0cnVjdE9mZnNldF0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIHNpemVzTGlzdChhc3Qp
LmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBzaXplb2YsIGluZGV4IHwKKyAgICBzaXplc01hcFtz
aXplb2ZdID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQorICBbb2Zmc2V0c01hcCwgc2l6ZXNNYXBd
CitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5y
YgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNl
ci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OTEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImluc3RydWN0aW9ucyIK
K3JlcXVpcmUgInJlZ2lzdGVycyIKKworY2xhc3MgVG9rZW4KKyAgYXR0cl9yZWFkZXIgOmNvZGVP
cmlnaW4sIDpzdHJpbmcKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cmluZykK
KyAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgICBAc3RyaW5nID0gc3RyaW5nCisgIGVu
ZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIGlmIG90aGVyLmlzX2E/IFRva2VuCisgICAgICBA
c3RyaW5nID09IG90aGVyLnN0cmluZworICAgIGVsc2UKKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgPX4ob3RoZXIpCisgICAgQHN0cmluZyA9fiBvdGhl
cgorICBlbmQKKyAgCisgIGRlZiB0b19zCisgICAgIiN7QHN0cmluZy5pbnNwZWN0fSBhdCBsaW5l
ICN7Y29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisg
ICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfSIK
KyAgICBlbHNlCisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc306ICN7Y29tbWVudFsw
XX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIFRoZSBsZXhlci4gVGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYW4gYXJyYXkgb2Yg
dG9rZW5zLiAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK
K2RlZiBsZXgoc3RyKQorICByZXN1bHQgPSBbXQorICBsaW5lTnVtYmVyID0gMQorICB3aGlsZSBu
b3Qgc3RyLmVtcHR5PworICAgIGNhc2Ugc3RyCisgICAgd2hlbiAvXEFcIyhbXlxuXSopLworICAg
ICAgIyBjb21tZW50LCBpZ25vcmUKKyAgICB3aGVuIC9cQVxuLworICAgICAgcmVzdWx0IDw8IFRv
a2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICAgIGxpbmVOdW1iZXIgKz0gMQorICAgIHdoZW4g
L1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxp
bmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBXC4oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1
bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBXyhbYS16QS1aMC05
X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hl
biAvXEEoWyBcdF0rKS8KKyAgICAgICMgd2hpdGVzcGFjZSwgaWdub3JlCisgICAgd2hlbiAvXEEw
eChbMC05YS1mQS1GXSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAk
Ji5oZXgudG9fcykKKyAgICB3aGVuIC9cQTAoWzAtN10rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tl
bi5uZXcobGluZU51bWJlciwgJCYub2N0LnRvX3MpCisgICAgd2hlbiAvXEEoWzAtOV0rKS8KKyAg
ICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEE6Oi8K
KyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFb
OixcKFwpXFtcXT1cK1wtKl0vCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIs
ICQmKQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJMZXhlciBlcnJvciBhdCBsaW5lIG51bWJlciAj
e2xpbmVOdW1iZXJ9LCB1bmV4cGVjdGVkIHNlcXVlbmNlICN7c3RyWzAuLjIwXS5pbnNwZWN0fSIK
KyAgICBlbmQKKyAgICBzdHIgPSAkfi5wb3N0X21hdGNoCisgIGVuZAorICByZXN1bHQKK2VuZAor
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUb2tlbiBpZGVudGlmaWNhdGlv
bi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgaXNSZWdpc3Rlcih0b2tlbikKKyAg
dG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTgorZW5kCisKK2RlZiBpc0luc3RydWN0aW9uKHRva2Vu
KQorICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzS2V5d29yZCh0
b2tlbikKKyAgdG9rZW4gPX4gL1xBKCh0cnVlKXwoZmFsc2UpfChpZil8KHRoZW4pfChlbHNlKXwo
ZWxzaWYpfChlbmQpfChhbmQpfChvcil8KG5vdCl8KG1hY3JvKXwoY29uc3QpfChzaXplb2YpfChl
cnJvcikpXFovIG9yCisgICAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTiBvcgorICAgIHRva2Vu
ID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJZGVudGlmaWVyKHRva2VuKQor
ICB0b2tlbiA9fiAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKVxaLyBhbmQgbm90IGlzS2V5d29y
ZCh0b2tlbikKK2VuZAorCitkZWYgaXNMYWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXyhbYS16
QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc0xvY2FsTGFiZWwodG9rZW4pCisgIHRva2VuID1+
IC9cQVwuKFthLXpBLVowLTlfXSopXFovCitlbmQKKworZGVmIGlzVmFyaWFibGUodG9rZW4pCisg
IGlzSWRlbnRpZmllcih0b2tlbikgb3IgaXNSZWdpc3Rlcih0b2tlbikKK2VuZAorCitkZWYgaXNJ
bnRlZ2VyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbMC05XS8KK2VuZAorCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBUaGUgcGFyc2VyLiBUYWtlcyBhbiBhcnJheSBvZiB0b2tl
bnMgYW5kIHJldHVybnMgYW4gQVNULiBNZXRob2RzICAgICAjCisjIG90aGVyIHRoYW4gcGFyc2Uo
dG9rZW5zKSBhcmUgbm90IGZvciBwdWJsaWMgY29uc3VtcHRpb24uICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIFBhcnNlcgorICBkZWYgaW5p
dGlhbGl6ZSh0b2tlbnMpCisgICAgQHRva2VucyA9IHRva2VucworICAgIEBpZHggPSAwCisgIGVu
ZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgQHRva2Vuc1tAaWR4XQor
ICAgICAgQHRva2Vuc1tAaWR4XS5wYXJzZUVycm9yKCpjb21tZW50KQorICAgIGVsc2UKKyAgICAg
IGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2Yg
ZmlsZSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBvZiBm
aWxlOiAje2NvbW1lbnRbMF19IgorICAgICAgZW5kCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVm
IGNvbnN1bWUocmVnZXhwKQorICAgIGlmIHJlZ2V4cAorICAgICAgcGFyc2VFcnJvciB1bmxlc3Mg
QHRva2Vuc1tAaWR4XSA9fiByZWdleHAKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVz
cyBAaWR4ID09IEB0b2tlbnMubGVuZ3RoCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgIGVuZAor
ICAKKyAgZGVmIHNraXBOZXdMaW5lCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisg
ICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVB
dG9tCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibm90IgorICAgICAgQGlkeCArPSAxCisgICAg
ICBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAg
ICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmVzdWx0ID0gcGFyc2VQcmVk
aWNhdGUKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAg
ICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInRy
dWUiCisgICAgICByZXN1bHQgPSBUcnVlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAg
IHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImZhbHNlIgorICAgICAgcmVzdWx0
ID0gRmFsc2UuaW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxz
aWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IFNldHRpbmcuZm9y
TmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAg
ICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQW5kCisgICAgcmVzdWx0ID0g
cGFyc2VQcmVkaWNhdGVBdG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiYW5kIgorICAg
ICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAx
CisgICAgICBza2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAg
ICAgIHJlc3VsdCA9IEFuZC5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQK
KyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGUKKyAgICAjIHNvbWUg
ZXhhbXBsZXMgb2YgcHJlY2VkZW5jZToKKyAgICAjIG5vdCBhIGFuZCBiIC0+IChub3QgYSkgYW5k
IGIKKyAgICAjIGEgYW5kIGIgb3IgYyAtPiAoYSBhbmQgYikgb3IgYworICAgICMgYSBvciBiIGFu
ZCBjIC0+IGEgb3IgKGIgYW5kIGMpCisgICAgCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVB
bmQKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJvciIKKyAgICAgIGNvZGVPcmlnaW4gPSBA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xp
bmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICAgIHJlc3VsdCA9IE9yLm5l
dyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQK
KyAgCisgIGRlZiBwYXJzZVZhcmlhYmxlCisgICAgaWYgaXNSZWdpc3RlcihAdG9rZW5zW0BpZHhd
KQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9fiBGUFJfUEFUVEVSTgorICAgICAgICByZXN1bHQg
PSBGUFJlZ2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNb
QGlkeF0uc3RyaW5nKQorICAgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBSZWdpc3RlcklELmZv
ck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAg
ICAgIGVuZAorICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgcmVz
dWx0ID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNb
QGlkeF0uc3RyaW5nKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgICBA
aWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VBZGRyZXNzKG9mZnNl
dCkKKyAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgIGNvZGVP
cmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAKKyAgICAjIFRocmVlIHBvc3Np
YmlsaXRpZXM6CisgICAgIyBbXSAgICAgICAtPiBBYnNvbHV0ZUFkZHJlc3MKKyAgICAjIFthXSAg
ICAgIC0+IEFkZHJlc3MKKyAgICAjIFthLGJdICAgIC0+IEJhc2VJbmRleCB3aXRoIHNjYWxlID0g
MQorICAgICMgW2EsYixjXSAgLT4gQmFzZUluZGV4CisgICAgCisgICAgQGlkeCArPSAxCisgICAg
aWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmV0dXJuIEFi
c29sdXRlQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0KQorICAgIGVuZAorICAgIGEgPSBw
YXJzZVZhcmlhYmxlCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIHJlc3VsdCA9
IEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIGEsIG9mZnNldCkKKyAgICBlbHNlCisgICAgICBwYXJz
ZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgQGlkeCArPSAxCisgICAg
ICBiID0gcGFyc2VWYXJpYWJsZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAg
ICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCAxLCBvZmZzZXQpCisg
ICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwi
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBbIjEiLCAiMiIs
ICI0IiwgIjgiXS5tZW1iZXI/IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIGMgPSBAdG9r
ZW5zW0BpZHhdLnN0cmluZy50b19pCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVy
cm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5k
ZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIGMsIG9mZnNldCkKKyAgICAgIGVuZAorICAgIGVuZAor
ICAgIEBpZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUNvbG9uQ29s
b24KKyAgICBza2lwTmV3TGluZQorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4KKyAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQor
ICAgIG5hbWVzID0gW0B0b2tlbnNbQGlkeF0uc3RyaW5nXQorICAgIEBpZHggKz0gMQorICAgIHdo
aWxlIEB0b2tlbnNbQGlkeF0gPT0gIjo6IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZUVy
cm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgbmFtZXMgPDwgQHRv
a2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICAgIHJhaXNlIGlm
IG5hbWVzLmVtcHR5PworICAgIFtjb2RlT3JpZ2luLCBuYW1lc10KKyAgZW5kCisgIAorICBkZWYg
cGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHNraXBOZXdMaW5lCisgICAgaWYgQHRva2Vuc1tAaWR4
XSA9PSAiLSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgTmVnSW1tZWRpYXRlLm5ldyhAdG9rZW5z
W0BpZHggLSAxXS5jb2RlT3JpZ2luLCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgIGVsc2lmIEB0
b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdCA9IHBhcnNl
RXhwcmVzc2lvbgorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIK
KyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJbnRlZ2VyIEB0b2tl
bnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pKQorICAgICAgQGlkeCArPSAxCisgICAg
ICByZXN1bHQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgY29k
ZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIGlmIG5hbWVzLnNpemUgPiAx
CisgICAgICAgIFN0cnVjdE9mZnNldC5mb3JGaWVsZChjb2RlT3JpZ2luLCBuYW1lc1swLi4tMl0u
am9pbignOjonKSwgbmFtZXNbLTFdKQorICAgICAgZWxzZQorICAgICAgICBWYXJpYWJsZS5mb3JO
YW1lKGNvZGVPcmlnaW4sIG5hbWVzWzBdKQorICAgICAgZW5kCisgICAgZWxzaWYgaXNSZWdpc3Rl
ciBAdG9rZW5zW0BpZHhdCisgICAgICBwYXJzZVZhcmlhYmxlCisgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAic2l6ZW9mIgorICAgICAgQGlkeCArPSAxCisgICAgICBjb2RlT3JpZ2luLCBuYW1l
cyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAgU2l6ZW9mLmZvck5hbWUoY29kZU9yaWdpbiwgbmFt
ZXMuam9pbignOjonKSkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbk11bAorICAgIHNraXBOZXdMaW5lCisgICAgcmVz
dWx0ID0gcGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIioi
CisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgcmVzdWx0ID0gTXVsSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdp
biwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAgZWxzZQorICAgICAgICByYWlz
ZQorICAgICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIGNvdWxk
QmVFeHByZXNzaW9uCisgICAgQHRva2Vuc1tAaWR4XSA9PSAiLSIgb3IgQHRva2Vuc1tAaWR4XSA9
PSAic2l6ZW9mIiBvciBpc0ludGVnZXIoQHRva2Vuc1tAaWR4XSkgb3IgaXNWYXJpYWJsZShAdG9r
ZW5zW0BpZHhdKSBvciBAdG9rZW5zW0BpZHhdID09ICIoIgorICBlbmQKKyAgCisgIGRlZiBwYXJz
ZUV4cHJlc3Npb24KKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lv
bk11bAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0b2tlbnNbQGlkeF0gPT0g
Ii0iCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgcmVzdWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9y
aWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNpZiBAdG9rZW5zW0Bp
ZHhdID09ICItIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gU3ViSW1tZWRp
YXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJl
c3Npb25NdWwpCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQK
KyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1lbnQpCisgICAg
aWYgY291bGRCZUV4cHJlc3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRkcmVzcyhleHByKQorICAg
ICAgZWxzZQorICAgICAgICBleHByCisgICAgICBlbmQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICJbIgorICAgICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luLCAwKSkKKyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJl
c3VsdCA9IExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExhYmVs
LmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykp
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzTG9jYWxMYWJlbCBA
dG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAg
cmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50KQorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tpcE5ld0xpbmUKKyAgICBj
b25zdW1lKC9cQVwoXFovKQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAgbG9vcCB7CisgICAgICBz
a2lwTmV3TGluZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4
XSkKKyAgICAgICAgdmFyaWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4
XSA9PSAiLCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBh
cnNlRXJyb3IKKyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IKKyAg
ICAgIGVuZAorICAgIH0KKyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAorICBkZWYgcGFyc2VTZXF1
ZW5jZShmaW5hbCwgY29tbWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4KKyAgICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAgICAgIGlmIChAaWR4ID09
IEB0b2tlbnMubGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4
XSA9fiBmaW5hbCkKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0g
IlxuIgorICAgICAgICAjIGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0
b2tlbnNbQGlkeF0gPT0gImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgaXNWYXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAgICAgIHZhcmlhYmxlID0g
VmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0u
c3RyaW5nKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRv
a2Vuc1tAaWR4XSA9PSAiPSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhbHVlID0gcGFy
c2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5uYW1lfSIpCisgICAg
ICAgIGxpc3QgPDwgQ29uc3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIHZhcmlh
YmxlLCB2YWx1ZSkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImVycm9yIgorICAgICAg
ICBsaXN0IDw8IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4pCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAgICAgIGNvZGVP
cmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIHNraXBOZXdMaW5lCisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAg
ICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAg
ICAgICAgaWZUaGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwg
cGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRl
IG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBsaXN0IDw8IGlmVGhlbkVs
c2UKKyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisgICAgICAgICAgY29k
ZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNh
dGUKKyAgICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgICAgc2tp
cE5ld0xpbmUKKyAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4s
IHByZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAi
d2hpbGUgaW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICAgIGlm
VGhlbkVsc2UuZWxzZUNhc2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlmVGhlbkVsc2UgPSBlbHNl
Q2FzZQorICAgICAgICBlbmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiZWxzZSIKKyAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gcGFyc2VT
ZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNlIGZvciBcImlmICN7
cHJlZGljYXRlLmR1bXB9XCIiKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisg
ICAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiZW5kIgorICAgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0g
Im1hY3JvIgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwYXJzZUVycm9y
IHVubGVzcyBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgbmFtZSA9IEB0b2tl
bnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YXJpYWJsZXMgPSBw
YXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxa
LywgIndoaWxlIGluc2lkZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIGxpc3QgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9k
eSkKKyAgICAgIGVsc2lmIGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2Rl
T3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5z
W0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgKG5vdCBmaW5hbCBh
bmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBm
aW5hbCkKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5kIGl0J3MgdGhl
IGxhc3Qgb25lLgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4s
IG5hbWUsIFtdKQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0g
PT0gIlxuIgorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLgorICAgICAgICAg
IGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBJdCdzIGRlZmluaXRlbHkgYW4g
aW5zdHJ1Y3Rpb24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJhbmQuCisgICAgICAgICAg
b3BlcmFuZHMgPSBbXQorICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxzZQorICAgICAgICAg
IGxvb3AgeworICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNp
ZGUgb2YgaW5zdHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICBpZiAobm90IGZpbmFsIGFu
ZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZp
bmFsKQorICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uIGFuZCBvZiB0
aGUgc2VxdWVuY2UuCisgICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSB0cnVlCisgICAgICAg
ICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAg
ICAgICAgICAgICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgICAg
ICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBwYXJz
ZUVycm9yKCJFeHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFsfSBhZnRlciAje29w
ZXJhbmRzLmxhc3QuZHVtcH0iKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgfQorICAgICAg
ICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQor
ICAgICAgICAgIGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAg
ZW5kCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0K
KyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBu
YW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlm
IEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICAgICAgIyBNYWNybyBpbnZvY2F0aW9uLgorICAg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBza2lw
TmV3TGluZQorICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8i
CisgICAgICAgICAgICAgICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQorICAgICAgICAgICAgICAg
IGNvZGVPcmlnaW5Jbm5lciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJp
YWJsZXMKKyAgICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3
aGlsZSBpbnNpZGUgb2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1bWVudCB0byAje25h
bWV9IikKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBvcGVyYW5k
cyA8PCBNYWNyby5uZXcoY29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlhYmxlcywgYm9keSkKKyAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFu
ZCgid2hpbGUgaW5zaWRlIG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAg
IGVuZAorICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5z
W0BpZHhdID09ICIpIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBw
YXJzZUVycm9yICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5zcGVjdH0gd2hp
bGUgcGFyc2luZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAgICAgICAgIGVu
ZAorICAgICAgICAgICAgfQorICAgICAgICAgIGVuZAorICAgICAgICAgIGxpc3QgPDwgTWFjcm9D
YWxsLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgZWxzZQorICAgICAg
ICAgIHBhcnNlRXJyb3IgIkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFtZX0iCisgICAgICAgIGVu
ZAorICAgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlzTG9jYWxMYWJlbCBAdG9r
ZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4K
KyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI6IgorICAgICAgICAj
IEl0J3MgYSBsYWJlbC4KKyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAgICAgbGlzdCA8
PCBMYWJlbC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICBsaXN0IDw8IExvY2FsTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBl
bmQKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgIkV4
cGVjdGluZyB0ZXJtaW5hbCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAgICAgZW5kCisgICAgfQor
ICAgIFNlcXVlbmNlLm5ldyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisgIGVuZAorZW5kCisKK2Rl
ZiBwYXJzZSh0b2tlbnMpCisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9rZW5zKQorICBwYXJzZXIu
cGFyc2VTZXF1ZW5jZShuaWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK0dQUlMgPQor
ICBbCisgICAidDAiLAorICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMiLAorICAgInQ0IiwKKyAg
ICJjZnIiLAorICAgImEwIiwKKyAgICJhMSIsCisgICAicjAiLAorICAgInIxIiwKKyAgICJzcCIK
KyAgXQorCitGUFJTID0KKyAgWworICAgImZ0MCIsCisgICAiZnQxIiwKKyAgICJmdDIiLAorICAg
ImZ0MyIsCisgICAiZnQ0IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisgICAiZmExIiwKKyAgICJm
YTIiLAorICAgImZhMyIsCisgICAiZnIiCisgIF0KKworUkVHSVNURVJTID0gR1BSUyArIEZQUlMK
KworR1BSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJTLmpvaW4oJyl8KCcpICsg
JykpXFxaJykKK0ZQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgRlBSUy5qb2luKCcp
fCgnKSArICcpKVxcWicpCisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcg
KyBSRUdJU1RFUlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyMjEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVp
cmUgImFzdCIKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAi
dHJhbnNmb3JtIgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBjb21wdXRl
U2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25zICAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkgb2Ygc2V0dGluZ3Mg
bWFwcywgd2hlcmUgYSBzZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMgIworIyBhIGNvbmZpZ3VyYXRp
b24gZm9yIHRoZSBhc3NlbWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIG1hcCAgICAgICAj
CisjIGNvbnRhaW5zIGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBzZXR0aW5ncyBuYW1l
cyAoc3RyaW5ncykgYW5kICMKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVhbnMgKHRydWUgZm9yIGVu
YWJsZWQsIGZhbHNlIGZvciBkaXNhYmxlZCkuICAgICAgIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKworZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIHNl
dHRpbmdzQ29tYmluYXRpb25zID0gW10KKyAgCisgIGRlZiBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0
dGluZ3NDb21iaW5hdGlvbnMsIG1hcFNvRmFyLCByZW1haW5pbmcpCisgICAgaWYgcmVtYWluaW5n
LmVtcHR5PworICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFwU29GYXIKKyAgICAgIHJl
dHVybgorICAgIGVuZAorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01h
cFtyZW1haW5pbmdbMF1dID0gdHJ1ZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0Nv
bWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICAgIAorICAgIG5ld01hcCA9
IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gZmFsc2UKKyAgICBzZXR0
aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEu
Li0xXSkKKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlv
bnMsIHt9LCAoYXN0LmZpbHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7fHZ8IHYubmFtZX0gKyBb
Ilg4NiIsICJBUk12NyJdKS51bmlxKQorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMKK2VuZAor
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JTZXR0aW5ncyhjb25jcmV0
ZVNldHRpbmdzLCBhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwgLi4uIH0gICAgICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBEZXRlcm1pbmVzIGlmIHRoZSBzZXR0aW5n
cyBjb21iaW5hdGlvbiBpcyB2YWxpZCwgYW5kIGlmIHNvLCBjYWxscyAgICAjCisjIHRoZSBibG9j
ayB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBjb2RlLiAgICAgICAg
ICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JTZXR0aW5n
cyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0
aGlzIGNvbWJpbmF0b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWltZWRCYWNrZW5kcyA9
IDAKKyAgc2VsZWN0ZWRCYWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2ggeworICAgIHwgYmFj
a2VuZCB8CisgICAgaXNTdXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2JhY2tlbmRdCisgICAg
cmFpc2UgdW5sZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWltZWRCYWNrZW5kcyAr
PSBpZiBpc1N1cHBvcnRlZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlzU3VwcG9ydGVkCisg
ICAgICBzZWxlY3RlZEJhY2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0KKyAgCisgIHJldHVy
biBpZiBudW1DbGFpbWVkQmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUgdGhlIEFTVCBkb3du
IHRvIGEgbG93LWxldmVsIGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25hbHMpLgorICBsb3dM
ZXZlbEFTVCA9IGFzdC5yZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIHlp
ZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJhY2tlbmQKK2VuZAor
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0aW5n
c0NvbWJpbmF0aW9uKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJp
bmF0aW9uKGFzdCwgc2V0dGluZ3NDb21iaW5hdGlvbnMpIHsgICAgICAgICAjCisjICAgICB8IGNv
bmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAgICAg
ICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyBFeGVjdXRlcyB0aGUgZ2l2ZW4gYmxvY2sgZm9yIGVh
Y2ggdmFsaWQgc2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlICAjCisjIHNldHRpbmdzIG1hcC4g
VGhlIGFzdCBwYXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQgICAgICAgICAgICAgICMK
KyMgKGFzdC5yZXNvbHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBmaXJzdCBmb3JtIHdpbGwg
Y2FsbCBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSBmb3IgeW91LiAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JFYWNoVmFsaWRTZXR0aW5nc0Nv
bWJpbmF0aW9uKGFzdCwgKm9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMpCisgIHJhaXNlIGlm
IG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEKKyAgCisgIGlmIG9wdGlvbmFs
U2V0dGluZ3NDb21iaW5hdGlvbnMuZW1wdHk/CisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBj
b21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBlbHNlCisgICAgc2V0dGluZ3NDb21i
aW5hdGlvbnMgPSBvcHRpb25hbFNldHRpbmdzQ29tYmlhdGlvbnNbMF0KKyAgZW5kCisgIAorICBz
ZXR0aW5nc0NvbWJpbmF0aW9ucy5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgY29uY3JldGVTZXR0
aW5ncywgaW5kZXggfAorICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgewor
ICAgICAgfCBjb25jcmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgICAg
eWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAg
fQorICB9CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgY3BwU2V0
dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIFJldHVybnMgdGhlIEMrKyBjb2RlIHVzZWQgdG8g
dGVzdCBpZiB3ZSBhcmUgaW4gYSBjb25maWd1cmF0aW9uIHRoYXQgICMKKyMgY29ycmVzcG9uZHMg
dG8gdGhlIGdpdmVuIGNvbmNyZXRlIHNldHRpbmdzLiAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGNwcFNldHRpbmdzVGVz
dChjb25jcmV0ZVNldHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdzLnRvX2EuY29s
bGVjdHsKKyAgICB8IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisgICAgICAgIiIKKyAgICAgZWxz
ZQorICAgICAgICIhIgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIgKyBwYWlyWzBdCisgIH0u
am9pbigiICYmICIpCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
aXNBU1RFcnJvbmVvdXMoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRlc3RzIHRvIHNlZSBpZiB0aGUgQVNU
IGNsYWltcyB0aGF0IHRoZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUgICMKKyMgdXNlcidz
IGNvZGUsIGFmdGVyIHNldHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4gICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGlzQVNURXJy
b25lb3VzKGFzdCkKKyAgbm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5PworZW5kCisKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3Jl
dGVTZXR0aW5ncykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBFbWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBn
aXZlbiBjb25maWd1cmF0aW9uLiAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
CitkZWYgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICAkb3V0cHV0LnB1
dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICRvdXRwdXQucHV0cyAiI2Vs
c2UiCisgICRvdXRwdXQucHV0cyAiI2Vycm9yIFwiQ29uZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIK
KyAgJG91dHB1dC5wdXRzICIjZW5kaWYiCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0
LCBiYWNrZW5kKSB7ICAgICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3Qs
IGJhY2tlbmQgfCAuLi4gfSAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgRW1pdHMgYWxsIHJlbGV2YW50IGd1YXJkcyB0byBzZWUgaWYgdGhlIGNvbmZpZ3VyYXRp
b24gaG9sZHMgYW5kICAgICAgIworIyBjYWxscyB0aGUgYmxvY2sgaWYgdGhlIGNvbmZpZ3VyYXRp
b24gaXMgbm90IGVycm9uZW91cy4gICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIworCitkZWYgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0
aW5ncywgYXN0LCBiYWNrZW5kKQorICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNy
ZXRlU2V0dGluZ3MpCisgIAorICBpZiBpc0FTVEVycm9uZW91cyhhc3QpCisgICAgJG91dHB1dC5w
dXRzICIjZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uXCIiCisgIGVsc2lmIG5vdCBXT1JL
SU5HX0JBQ0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICAkb3V0cHV0LnB1dHMgIiNlcnJvciBc
IlRoaXMgYmFja2VuZCBpcyBub3Qgc3VwcG9ydGVkIHlldC5cIiIKKyAgZWxzZQorICAgIHlpZWxk
IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZAorICBlbmQKKyAgCisgICRvdXRwdXQucHV0
cyAiI2VuZGlmIgorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGVt
aXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRl
eCB8IC4uLiB9ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEVtaXRzIGd1
YXJkIGNvZGVzIGZvciBhbGwgdmFsaWQgY29uZmlndXJhdGlvbnMsIGFuZCBjYWxscyB0aGUgYmxv
Y2sgICMKKyMgZm9yIHRob3NlIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHZhbGlkIGFuZCBub3Qg
ZXJyb25lb3VzLiAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KworZGVmIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3QpCisgIGZvckVhY2hWYWxpZFNl
dHRpbmdzQ29tYmluYXRpb24oYXN0KSB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZl
bEFTVCwgYmFja2VuZCwgaW5kZXggfAorICAgICRvdXRwdXQucHV0cyBjcHBTZXR0aW5nc1Rlc3Qo
Y29uY3JldGVTZXR0aW5ncykKKyAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFT
VCwgYmFja2VuZCwgaW5kZXgKKyAgICAkb3V0cHV0LnB1dHMgIiNlbmRpZiIKKyAgfQorZW5kCisK
KworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3Jt
LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJh
bnNmb3JtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1MiBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorCisjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyBub2RlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29u
c3RydWN0IGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IElmVGhlbkVsc2Ugbm9kZXMg
YnkgICAgICAgIworIyBzdWJzdGl0dXRpbmcgY29uY3JldGUgYm9vbGVhbiB2YWx1ZXMgZm9yIGVh
Y2ggU2V0dGluZy4gICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAg
bWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlCisgIGRlZiByZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBGYWxz
ZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQK
KworY2xhc3MgU2V0dGluZworICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNl
dHRpbmdzW0BuYW1lXS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kCisgIGRlZiByZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykudmFsdWUgYW5kIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05v
ZGUKKyAgZW5kCitlbmQKKworY2xhc3MgT3IKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykKKyAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBvciBAcmlnaHQu
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2Ns
YXNzIE5vdAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChub3QgQGNoaWxk
LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitj
bGFzcyBJZlRoZW5FbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgaWYg
QHByZWRpY2F0ZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlCisgICAgICBAdGhlbkNh
c2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVsc2UKKyAgICAgIEBlbHNlQ2FzZS5y
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNl
cXVlbmNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgbmV3TGlzdCA9IFtd
CisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaXRlbSA9IGl0ZW0ucmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgaWYgaXRlbS5pc19hPyBTZXF1ZW5jZQorICAg
ICAgICBuZXdMaXN0ICs9IGl0ZW0ubGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8
IGl0ZW0KKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3
TGlzdCkKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
bm9kZS5kZW1hY3JvaWZ5KG1hY3JvcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBub2RlLnN1YnN0aXR1dGUobWFwcGluZykgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZGVtYWNy
b2lmeSgpIGNvbnN0cnVjdHMgYSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgTWFjcm8g
ICAgICAgIworIyBub2Rlcywgd2hpbGUgc3Vic3RpdHV0ZSgpIHJlcGxhY2VzIFZhcmlhYmxlIG5v
ZGVzIHdpdGggdGhlIGdpdmVuICAgICAjCisjIG5vZGVzIGluIHRoZSBtYXBwaW5nLiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIGRlbWFjcm9pZnkobWFjcm9z
KQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuZGVtYWNy
b2lmeShtYWNyb3MpCisgICAgfQorICBlbmQKKyAgCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcp
CisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5zdWJzdGl0
dXRlKG1hcHBpbmcpCisgICAgfQorICBlbmQKKyAgCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1h
cHBpbmcpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5z
dWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBNYWNy
bworICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG15TWFwcGluZyA9IHt9CisgICAgbWFw
cGluZy5lYWNoX3BhaXIgeworICAgICAgfCBrZXksIHZhbHVlIHwKKyAgICAgIHVubGVzcyBAdmFy
aWFibGVzLmluY2x1ZGU/IGtleQorICAgICAgICBteU1hcHBpbmdba2V5XSA9IHZhbHVlCisgICAg
ICBlbmQKKyAgICB9CisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBj
aGlsZC5zdWJzdGl0dXRlKG15TWFwcGluZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFZh
cmlhYmxlCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgaWYgbWFwcGluZ1tzZWxmXQor
ICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5k
CitlbmQKKworY2xhc3MgTG9jYWxMYWJlbAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5n
KQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisg
ICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBz
dWJzdGl0dXRlKGNvbnN0YW50cykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBteUNvbnN0YW50cyA9
IGNvbnN0YW50cy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBp
ZiBpdGVtLmlzX2E/IENvbnN0RGVjbAorICAgICAgICBteUNvbnN0YW50c1tpdGVtLnZhcmlhYmxl
XSA9IGl0ZW0udmFsdWUuc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgIGVsc2UKKyAgICAg
ICAgbmV3TGlzdCA8PCBpdGVtLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICBlbmQKKyAg
ICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisgIGVuZAorICAKKyAg
ZGVmIHJlbmFtZUxhYmVscyhjb21tZW50KQorICAgIG1hcHBpbmcgPSB7fQorICAgIAorICAgIEBs
aXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gTG9jYWxMYWJl
bAorICAgICAgICBtYXBwaW5nW2l0ZW1dID0gTG9jYWxMYWJlbC51bmlxdWUoaWYgY29tbWVudCB0
aGVuIGNvbW1lbnQgKyAiXyIgZWxzZSAiIiBlbmQgKyBpdGVtLmNsZWFuTmFtZSkKKyAgICAgIGVu
ZAorICAgIH0KKyAgICAKKyAgICBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgIGVuZAorICAK
KyAgZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAgIG15TWFjcm9zID0gbWFjcm9zLmR1cAorICAg
IEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gTWFjcm8K
KyAgICAgICAgbXlNYWNyb3NbaXRlbS5uYW1lXSA9IGl0ZW0KKyAgICAgIGVuZAorICAgIH0KKyAg
ICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBp
ZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgICMgSWdub3JlLgorICAgICAgZWxzaWYgaXRlbS5p
c19hPyBNYWNyb0NhbGwKKyAgICAgICAgbWFwcGluZyA9IHt9CisgICAgICAgIG15TXlNYWNyb3Mg
PSBteU1hY3Jvcy5kdXAKKyAgICAgICAgcmFpc2UgIkNvdWxkIG5vdCBmaW5kIG1hY3JvICN7aXRl
bS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBteU1hY3Jvc1tpdGVt
Lm5hbWVdCisgICAgICAgIHJhaXNlICJBcmd1bWVudCBjb3VudCBtaXNtYXRjaCBmb3IgY2FsbCB0
byAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgaXRlbS5v
cGVyYW5kcy5zaXplID09IG15TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzLnNpemUKKyAgICAg
ICAgaXRlbS5vcGVyYW5kcy5zaXplLnRpbWVzIHsKKyAgICAgICAgICB8IGlkeCB8CisgICAgICAg
ICAgaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IFZhcmlhYmxlIGFuZCBteU1hY3Jvc1tpdGVt
Lm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRl
bS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG15TWFjcm9zW2l0ZW0ub3BlcmFuZHNbaWR4
XS5uYW1lXQorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxl
c1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxzaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlz
X2E/IE1hY3JvCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFy
aWFibGVzW2lkeF0ubmFtZV0gPSBpdGVtLm9wZXJhbmRzW2lkeF0KKyAgICAgICAgICAgIG1hcHBp
bmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJp
YWJsZXNbaWR4XV0gPSBuaWwKKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1l
XS52YXJpYWJsZXNbaWR4XV0gPSBpdGVtLm9wZXJhbmRzW2lkeF0KKyAgICAgICAgICBlbmQKKyAg
ICAgICAgfQorICAgICAgICBuZXdMaXN0ICs9IG15TWFjcm9zW2l0ZW0ubmFtZV0uYm9keS5zdWJz
dGl0dXRlKG1hcHBpbmcpLmRlbWFjcm9pZnkobXlNeU1hY3JvcykucmVuYW1lTGFiZWxzKGl0ZW0u
bmFtZSkubGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uZGVtYWNyb2lm
eShteU1hY3JvcykKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdp
biwgbmV3TGlzdCkuc3Vic3RpdHV0ZSh7fSkKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENv
bnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBoYXMgb2Zmc2V0IHZhbHVlcyBpbnN0ZWFkIG9mIHN5bWJv
bGljICAgICAgICMKKyMgb2Zmc2V0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMp
CisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZl
T2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVj
dE9mZnNldAorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgb2Zm
c2V0c1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXRzW3NlbGZd
KQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6
ZW9mCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBzaXplc1tz
ZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBzaXplc1tzZWxmXSkKKyAgICBl
bHNlCisgICAgICBwdXRzICJDb3VsZCBub3QgZmluZCAje3NlbGYuaW5zcGVjdH0gaW4gI3tzaXpl
cy5rZXlzLmluc3BlY3R9IgorICAgICAgcHV0cyAic2l6ZXMgPSAje3NpemVzLmluc3BlY3R9Igor
ICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBub2RlLmZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUmVzb2x2ZSBj
b25zdGFudCByZWZlcmVuY2VzIGFuZCBjb21wdXRlIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMuICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBk
ZWYgZm9sZAorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQu
Zm9sZAorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcworICBkZWYgZm9s
ZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAg
cmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxm
IHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3Jp
Z2luLCBAbGVmdC52YWx1ZSArIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgU3Vi
SW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdo
dCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVk
aWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAg
SW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAtIEByaWdodC52YWx1ZSkKKyAg
ZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0g
QGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5s
ZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQu
aXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1
ZSAqIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlCisgIGRl
ZiBmb2xkCisgICAgQGNoaWxkID0gQGNoaWxkLmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3Mg
QGNoaWxkLmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLUBj
aGlsZC52YWx1ZSkKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgbm9kZS5yZXNvbHZlQWZ0ZXJTZXR0aW5ncyhvZmZzZXRzLCBzaXplcykgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbXBpbGUgYXNzZW1ibHkg
YWdhaW5zdCBhIHNldCBvZiBvZmZzZXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29s
dmUob2Zmc2V0cywgc2l6ZXMpCisgICAgZGVtYWNyb2lmeSh7fSkucmVzb2x2ZU9mZnNldHMob2Zm
c2V0cywgc2l6ZXMpLmZvbGQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NzMgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVm
IHN1cHBvcnRzOEJpdE9uWDg2CisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAi
cjAiLCAidDEiLCAiYTEiLCAicjEiLCAidDIiLCAidDMiCisgICAgICB0cnVlCisgICAgd2hlbiAi
dDQiLCAiY2ZyIgorICAgICAgZmFsc2UKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgY2FzZSBuYW1lCisgICAgd2hl
biAidDAiLCAiYTAiLCAicjAiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAg
ICAgICAgIiVhbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVheCIKKyAgICAgIHdoZW4g
OmludAorICAgICAgICAiJWVheCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVu
ZAorICAgIHdoZW4gInQxIiwgImExIiwgInIxIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVu
IDpieXRlCisgICAgICAgICIlZGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZHgiCisg
ICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlZHgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNl
CisgICAgICBlbmQKKyAgICB3aGVuICJ0MiIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6
Ynl0ZQorICAgICAgICAiJWNsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWN4IgorICAg
ICAgd2hlbiA6aW50CisgICAgICAgICIlZWN4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQor
ICAgICAgZW5kCisgICAgd2hlbiAidDMiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5
dGUKKyAgICAgICAgIiVibCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVieCIKKyAgICAg
IHdoZW4gOmludAorICAgICAgICAiJWVieCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAg
ICAgIGVuZAorICAgIHdoZW4gInQ0IgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRl
CisgICAgICAgICIlc2lsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNpIgorICAgICAg
d2hlbiA6aW50CisgICAgICAgICIlZXNpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAg
ICAgZW5kCisgICAgd2hlbiAiY2ZyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRl
CisgICAgICAgICIlZGlsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWRpIgorICAgICAg
d2hlbiA6aW50CisgICAgICAgICIlZWRpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAg
ICAgZW5kCisgICAgd2hlbiAic3AiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUK
KyAgICAgICAgIiVzcGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc3AiCisgICAgICB3
aGVuIDppbnQKKyAgICAgICAgIiVlc3AiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAg
ICBlbmQKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNh
bGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAor
CitjbGFzcyBGUFJlZ2lzdGVySUQKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICByYWlzZSB1
bmxlc3Mga2luZCA9PSA6ZG91YmxlCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZh
MCIsICJmciIKKyAgICAgICIleG1tMCIKKyAgICB3aGVuICJmdDEiLCAiZmExIgorICAgICAgIiV4
bW0xIgorICAgIHdoZW4gImZ0MiIsICJmYTIiCisgICAgICAiJXhtbTIiCisgICAgd2hlbiAiZnQz
IiwgImZhMyIKKyAgICAgICIleG1tMyIKKyAgICB3aGVuICJmdDQiCisgICAgICAiJXhtbTQiCisg
ICAgd2hlbiAiZnQ1IgorICAgICAgIiV4bW01IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAg
ZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFu
ZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgeDg2T3BlcmFu
ZChraW5kKQorICAgICIkI3t2YWx1ZX0iCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2lu
ZCkKKyAgICAiI3t2YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIHN1
cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQo
a2luZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSkiCisg
IGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5k
KX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgc3VwcG9ydHM4Qml0T25Y
ODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIj
e29mZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9LCAje2luZGV4Lng4Nk9wZXJh
bmQoOmludCl9LCAje3NjYWxlfSkiCisgIGVuZAorCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5k
KQorICAgICIqI3t4ODZvcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1
dGVBZGRyZXNzCisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAg
CisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7YWRkcmVzcy52YWx1ZX0iCisgIGVuZAor
CisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3thZGRyZXNzLnZhbHVlfSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAgZGVmIHg4NkxhYmVsCisgICAgc2Fu
aXRpemVMYWJlbE5hbWUobmFtZSkKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQor
ICAgIHg4NkxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UKKyAg
ZGVmIHg4NkxhYmVsCisgICAgIkxfb2ZmbGluZWFzbV8iK25hbWVbMS4uLTFdCisgIGVuZAorICBk
ZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICB4ODZMYWJlbAorICBlbmQKK2VuZAorCitjbGFz
cyBJbnN0cnVjdGlvbgorICBkZWYgeDg2T3BlcmFuZHMoKmtpbmRzKQorICAgIHJhaXNlIHVubGVz
cyBraW5kcy5zaXplID09IG9wZXJhbmRzLnNpemUKKyAgICByZXN1bHQgPSBbXQorICAgIGtpbmRz
LnNpemUudGltZXMgeworICAgICAgfCBpZHggfAorICAgICAgcmVzdWx0IDw8IG9wZXJhbmRzW2lk
eF0ueDg2T3BlcmFuZChraW5kc1tpZHhdKQorICAgIH0KKyAgICByZXN1bHQuam9pbigiLCAiKQor
ICBlbmQKKworICBkZWYgeDg2U3VmZml4KGtpbmQpCisgICAgY2FzZSBraW5kCisgICAgd2hlbiA6
Ynl0ZQorICAgICAgImIiCisgICAgd2hlbiA6aGFsZgorICAgICAgInciCisgICAgd2hlbiA6aW50
CisgICAgICAibCIKKyAgICB3aGVuIDpkb3VibGUKKyAgICAgICJzZCIKKyAgICBlbHNlCisgICAg
ICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcFdpdGhOdW1PcGVy
YW5kcyhvcGNvZGUsIGtpbmQsIG51bU9wZXJhbmRzKQorICAgIGlmIG51bU9wZXJhbmRzID09IDMK
KyAgICAgIGlmIG9wZXJhbmRzWzBdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAi
XHQje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sy
XS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRzWzFdID09IG9wZXJhbmRz
WzJdCisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2UK
KyAgICAgICAgJGFzbS5wdXRzICJcdG1vdiN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAg
ICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5k
KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNl
CisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChr
aW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAor
ICAKKyAgZGVmIGhhbmRsZVg4Nk9wKG9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhO
dW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUpCisgIGVuZAorICAKKyAgZGVm
IGhhbmRsZVg4NlNoaWZ0KG9wY29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJ
bW1lZGlhdGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0ZXJJRC5mb3JOYW1lKG5pbCwgInQyIikK
KyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpi
eXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzZQorICAgICAg
JGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3gi
CisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICVjbCwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKGtpbmQpfSIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmludCl9LCAlZWN4IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZE
b3VibGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAgIGNhc2UgbW9kZQorICAgIHdoZW4g
Om5vcm1hbAorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3
aGVuIDpyZXZlcnNlCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9Igor
ICAgIGVsc2UKKyAgICAgIHJhaXNlIG1vZGUuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0
cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgIGVuZAorICAK
KyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmUob3Bjb2RlU3VmZml4LCBraW5kKQorICAgIGlmIG9w
ZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMF0udmFsdWUgPT0gMCBhbmQg
b3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Ig
b3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4
KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2lmIG9wZXJh
bmRzWzFdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMCBhbmQgb3Bl
cmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bj
b2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtp
bmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRh
c20ucHV0cyAiXHRjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KGtpbmQpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5k
CisgIAorICBkZWYgaGFuZGxlWDg2SW50QnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBo
YW5kbGVYODZJbnRDb21wYXJlKGJyYW5jaE9wY29kZVsxLi4tMV0sIGtpbmQpCisgICAgJGFzbS5w
dXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgZW5kCisg
IAorICBkZWYgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZCkKKyAgICBpZiBvcGVyYW5k
LnN1cHBvcnRzOEJpdE9uWDg2CisgICAgICAkYXNtLnB1dHMgIlx0I3tzZXRPcGNvZGV9ICN7b3Bl
cmFuZC54ODZPcGVyYW5kKDpieXRlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJsICN7b3Bl
cmFuZC54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmlu
dCl9LCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJcdCN7c2V0T3Bjb2RlfSAlYWwiCisgICAgICAk
YXNtLnB1dHMgIlx0bW92emJsICVhbCwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAj
e29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmIGhhbmRsZVg4NkludENvbXBhcmVTZXQoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4
NkludENvbXBhcmUoc2V0T3Bjb2RlWzMuLi0xXSwga2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0
T3Bjb2RlLCBvcGVyYW5kc1syXSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2VGVzdChraW5k
KQorICAgIHZhbHVlID0gb3BlcmFuZHNbMF0KKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3
aGVuIDIKKyAgICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAgIHdo
ZW4gMworICAgICAgbWFzayA9IG9wZXJhbmRzWzFdCisgICAgZWxzZQorICAgICAgcmFpc2UgIkV4
cGVjdGVkIDIgb3IgMyBvcGVyYW5kcywgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29k
ZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAgaWYgbWFzay5pc19hPyBJbW1lZGlh
dGUgYW5kIG1hc2sudmFsdWUgPT0gLTEKKyAgICAgIGlmIHZhbHVlLmlzX2E/IFJlZ2lzdGVySUQK
KyAgICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3t2YWx1ZS54ODZP
cGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2UKKyAg
ICAgICAgJGFzbS5wdXRzICJcdGNtcCN7eDg2U3VmZml4KGtpbmQpfSAkMCwgI3t2YWx1ZS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR0
ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7bWFzay54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54
ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2QnJh
bmNoVGVzdChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAg
ICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kcy5sYXN0Lng4NkxhYmVsfSIK
KyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0VGVzdChzZXRPcGNvZGUsIGtpbmQpCisgICAg
aGFuZGxlWDg2VGVzdChraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRz
Lmxhc3QpCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wQnJhbmNoKG9wY29kZSwgYnJhbmNo
T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2lu
ZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiA0
CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1bXBU
YXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAor
ICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0Lng4
NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9wY29k
ZSwga2luZCkKKyAgICBpZiBvcGVyYW5kcy5zaXplID09IDQgYW5kIG9wZXJhbmRzWzFdID09IG9w
ZXJhbmRzWzJdCisgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisg
ICAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcygic3ViI3t4ODZTdWZmaXgoa2luZCl9Iiwg
a2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgZW5kCisgICAgY2FzZSBvcGVyYW5kcy5zaXpl
CisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMK
KyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNl
bGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tq
dW1wVGFyZ2V0Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgbG93ZXJYODYKKyAgICAkYXNt
LmNvbW1lbnQgY29kZU9yaWdpblN0cmluZworICAgIGNhc2Ugb3Bjb2RlCisgICAgd2hlbiAiYWRk
aSIsICJhZGRwIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5p
c19hPyBJbW1lZGlhdGUKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJl
Z2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVy
SUQKKyAgICAgICAgaWYgb3BlcmFuZHNbMF0udmFsdWUgPT0gMAorICAgICAgICAgIHVubGVzcyBv
cGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgJGFzbS5wdXRzICJcdG1vdmwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICRhc20ucHV0
cyAiXHRsZWFsICN7b3BlcmFuZHNbMF0udmFsdWV9KCN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICBlbmQKKyAg
ICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0
ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAor
ICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAg
ICAkYXNtLnB1dHMgIlx0bGVhbCAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkg
PT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje3g4Nk9wZXJhbmRz
KDppbnQsIDppbnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbmQKKyAgICB3aGVuICJhbmRpIiwg
ImFuZHAiCisgICAgICBoYW5kbGVYODZPcCgiYW5kbCIsIDppbnQpCisgICAgd2hlbiAibHNoaWZ0
aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYWxsIiwgOmludCkKKyAgICB3aGVuICJtdWxpIgor
ICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlh
dGUKKyAgICAgICAgJGFzbS5wdXRzICJcdGltdWxsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCwg
OmludCl9IgorICAgICAgZWxzZQorICAgICAgICAjIEZJWE1FOiBjb3VsZCBkbyBzb21lIHBlZXBo
b2xlIGluIGNhc2UgdGhlIGxlZnQgb3BlcmFuZCBpcyBpbW1lZGlhdGUgYW5kIGl0J3MKKyAgICAg
ICAgIyBhIHBvd2VyIG9mIHR3by4KKyAgICAgICAgaGFuZGxlWDg2T3AoImltdWxsIiwgOmludCkK
KyAgICAgIGVuZAorICAgIHdoZW4gIm5lZ2kiCisgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje3g4
Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJub3RpIgorICAgICAgJGFzbS5wdXRzICJcdG5v
dGwgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAib3JpIiwgIm9ycCIKKyAgICAgIGhh
bmRsZVg4Nk9wKCJvcmwiLCA6aW50KQorICAgIHdoZW4gInJzaGlmdGkiCisgICAgICBoYW5kbGVY
ODZTaGlmdCgic2FybCIsIDppbnQpCisgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICBoYW5kbGVY
ODZTaGlmdCgic2hybCIsIDppbnQpCisgICAgd2hlbiAic3ViaSIsICJzdWJwIgorICAgICAgaWYg
b3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAg
ICAkYXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAg
ICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICBoYW5k
bGVYODZPcCgic3VibCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJ4b3JpIiwgInhvcnAi
CisgICAgICBoYW5kbGVYODZPcCgieG9ybCIsIDppbnQpCisgICAgd2hlbiAibG9hZGkiLCAic3Rv
cmVpIiwgImxvYWRwIiwgInN0b3JlcCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7eDg2T3Bl
cmFuZHMoOmludCwgOmludCl9IgorICAgIHdoZW4gImxvYWRiIgorICAgICAgJGFzbS5wdXRzICJc
dG1vdnpibCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJsb2FkaCIKKyAgICAgICRhc20ucHV0cyAiXHRt
b3Z6d2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpoYWxmKX0sICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAic3RvcmViIgorICAgICAgJGFzbS5wdXRzICJcdG1v
dmIgI3t4ODZPcGVyYW5kcyg6Ynl0ZSwgOmJ5dGUpfSIKKyAgICB3aGVuICJsb2FkZCIsICJtb3Zl
ZCIsICJzdG9yZWQiCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91
YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAiYWRkZCIKKyAgICAgICRhc20ucHV0cyAiXHRhZGRz
ZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJkaXZkIgorICAg
ICAgJGFzbS5wdXRzICJcdGRpdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9Igor
ICAgIHdoZW4gInN1YmQiCisgICAgICAkYXNtLnB1dHMgIlx0c3Vic2QgI3t4ODZPcGVyYW5kcyg6
ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAibXVsZCIKKyAgICAgICRhc20ucHV0cyAiXHRt
dWxzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJzcXJ0ZCIK
KyAgICAgICRhc20ucHV0cyAiXHRzcXJ0c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJjaTJk
IgorICAgICAgJGFzbS5wdXRzICJcdGN2dHNpMnNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiYmRl
cSIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUoImJkZXEiKQorICAgICAg
JGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRq
cCAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkueDg2TGFiZWx9
IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4s
IG9wZXJhbmRzWzJdKS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikK
KyAgICB3aGVuICJiZG5lcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiam5lIiwgOm5v
cm1hbCkKKyAgICB3aGVuICJiZGd0IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIs
IDpub3JtYWwpCisgICAgd2hlbiAiYmRndGVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNo
KCJqYWUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHQiCisgICAgICBoYW5kbGVYODZEb3VibGVC
cmFuY2goImphIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdGVxIgorICAgICAgaGFuZGxlWDg2
RG91YmxlQnJhbmNoKCJqYWUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGVxdW4iCisgICAgICBo
YW5kbGVYODZEb3VibGVCcmFuY2goImplIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZG5lcXVuIgor
ICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICBp
c0VxdWFsID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4iKQorICAgICAgJGFzbS5wdXRzICJc
dHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje0xhYmVsUmVm
ZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkueDg2TGFiZWx9IgorICAgICAgJGFz
bS5wdXRzICJcdGplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzRXF1YWwpLng4
NkxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgICAgJGFzbS5wdXRz
ICJcdGptcCAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgIGlzRXF1YWwubG93ZXIoIlg4
NiIpCisgICAgd2hlbiAiYmRndHVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIs
IDpyZXZlcnNlKQorICAgIHdoZW4gImJkZ3RlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJh
bmNoKCJqYmUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGx0dW4iCisgICAgICBoYW5kbGVYODZE
b3VibGVCcmFuY2goImpiIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0ZXF1biIKKyAgICAgIGhh
bmRsZVg4NkRvdWJsZUJyYW5jaCgiamJlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJidGQyaSIKKyAg
ICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAi
XHRjbXBsICQweDgwMDAwMDAwICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAkYXNtLnB1dHMgIlx0amUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgd2hlbiAidGQy
aSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJi
Y2QyaSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRh
c20ucHV0cyAiXHR0ZXN0bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7b3BlcmFu
ZHNbMl0ueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJcdGN2dHNpMnNkICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2Qg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1
dHMgIlx0anAgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0am5l
ICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgIHdoZW4gIm1vdmR6IgorICAgICAgJGFzbS5w
dXRzICJcdHhvcnBkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAicG9wIgorICAgICAgJGFzbS5w
dXRzICJcdHBvcCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInB1
c2giCisgICAgICAkYXNtLnB1dHMgIlx0cHVzaCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgIHdoZW4gIm1vdmUiLCAic3hpMnAiLCAienhpMnAiCisgICAgICBpZiBJbW1lZGlh
dGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0gYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lz
dGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJcdHhvcmwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2lmIG9w
ZXJhbmRzWzBdICE9IG9wZXJhbmRzWzFdCisgICAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7eDg2
T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgZW5kCisgICAgd2hlbiAibm9wIgorICAgICAg
JGFzbS5wdXRzICJcdG5vcCIKKyAgICB3aGVuICJiaWVxIiwgImJwZXEiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImplIiwgOmludCkKKyAgICB3aGVuICJiaW5lcSIsICJicG5lcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmludCkKKyAgICB3aGVuICJiaWEiLCAiYnBhIgor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDppbnQpCisgICAgd2hlbiAiYmlhZXEiLCAi
YnBhZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphZSIsIDppbnQpCisgICAgd2hlbiAi
YmliIiwgImJwYiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6aW50KQorICAgIHdo
ZW4gImJpYmVxIiwgImJwYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6aW50
KQorICAgIHdoZW4gImJpZ3QiLCAiYnBndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamci
LCA6aW50KQorICAgIHdoZW4gImJpZ3RlcSIsICJicGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRC
cmFuY2goImpnZSIsIDppbnQpCisgICAgd2hlbiAiYmlsdCIsICJicGx0IgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqbCIsIDppbnQpCisgICAgd2hlbiAiYmlsdGVxIiwgImJwbHRlcSIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamxlIiwgOmludCkKKyAgICB3aGVuICJiYmVxIgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDpieXRlKQorICAgIHdoZW4gImJibmVxIgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImphIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImphZSIsIDpieXRlKQorICAgIHdoZW4gImJiYiIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmJlcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJndCIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamciLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0ZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpnZSIsIDpieXRlKQorICAgIHdoZW4gImJibHQiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdGVxIgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbHRlcSIsIDpieXRlKQorICAgIHdoZW4gImJ0aW8iLCAi
YnRwbyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmludCkKKyAgICB3aGVuICJi
dGlzIiwgImJ0cHMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDppbnQpCisgICAg
d2hlbiAiYnRpeiIsICJidHB6IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6aW50
KQorICAgIHdoZW4gImJ0aW56IiwgImJ0cG56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgi
am56IiwgOmludCkKKyAgICB3aGVuICJidGJvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgi
am8iLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgi
anMiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJ6IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgi
anoiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJueiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3Qo
ImpueiIsIDpieXRlKQorICAgIHdoZW4gImptcCIKKyAgICAgICRhc20ucHV0cyAiXHRqbXAgI3tv
cGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiYmFkZGlvIiwgImJh
ZGRwbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpvIiwgOmludCkKKyAgICB3
aGVuICJiYWRkaXMiLCAiYmFkZHBzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAi
anMiLCA6aW50KQorICAgIHdoZW4gImJhZGRpeiIsICJiYWRkcHoiCisgICAgICBoYW5kbGVYODZP
cEJyYW5jaCgiYWRkbCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlueiIsICJiYWRkcG56
IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam56IiwgOmludCkKKyAgICB3aGVu
ICJic3ViaW8iCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpvIiwgOmludCkKKyAgICB3aGVu
ICJic3ViaXMiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpzIiwgOmludCkKKyAgICB3aGVu
ICJic3ViaXoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImp6IiwgOmludCkKKyAgICB3aGVu
ICJic3ViaW56IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbnoiLCA6aW50KQorICAgIHdo
ZW4gImJtdWxpbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbyIsIDppbnQp
CisgICAgd2hlbiAiYm11bGlzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpz
IiwgOmludCkKKyAgICB3aGVuICJibXVsaXoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11
bGwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJtdWxpbnoiCisgICAgICBoYW5kbGVYODZPcEJy
YW5jaCgiaW11bGwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJib3JpbyIKKyAgICAgIGhhbmRs
ZVg4Nk9wQnJhbmNoKCJvcmwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJvcmlzIgorICAgICAg
aGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXoiCisg
ICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJib3Jp
bnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpueiIsIDppbnQpCisgICAgd2hl
biAiYnJlYWsiCisgICAgICAkYXNtLnB1dHMgIlx0aW50ICQzIgorICAgIHdoZW4gImNhbGwiCisg
ICAgICAkYXNtLnB1dHMgIlx0Y2FsbCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQp
fSIKKyAgICB3aGVuICJyZXQiCisgICAgICAkYXNtLnB1dHMgIlx0cmV0IgorICAgIHdoZW4gImNp
ZXEiLCAiY3BlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGUiLCA6aW50KQor
ICAgIHdoZW4gImNpbmVxIiwgImNwbmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgi
c2V0bmUiLCA6aW50KQorICAgIHdoZW4gImNpYSIsICJjcGEiCisgICAgICBoYW5kbGVYODZJbnRD
b21wYXJlU2V0KCJzZXRhIiwgOmludCkKKyAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAgICAg
IGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGFlIiwgOmludCkKKyAgICB3aGVuICJjaWIiLCAi
Y3BiIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YiIsIDppbnQpCisgICAgd2hl
biAiY2liZXEiLCAiY3BiZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiZSIs
IDppbnQpCisgICAgd2hlbiAiY2lndCIsICJjcGd0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFy
ZVNldCgic2V0ZyIsIDppbnQpCisgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIKKyAgICAgIGhh
bmRsZVg4NkludENvbXBhcmVTZXQoInNldGdlIiwgOmludCkKKyAgICB3aGVuICJjaWx0IiwgImNw
bHQiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsIiwgOmludCkKKyAgICB3aGVu
ICJjaWx0ZXEiLCAiY3BsdGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bGUi
LCA6aW50KQorICAgIHdoZW4gInRpbyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6
aW50KQorICAgIHdoZW4gInRpcyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6aW50
KQorICAgIHdoZW4gInRpeiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6aW50KQor
ICAgIHdoZW4gInRpbnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDppbnQpCisg
ICAgd2hlbiAidGJvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDpieXRlKQorICAg
IHdoZW4gInRicyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6Ynl0ZSkKKyAgICB3
aGVuICJ0YnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmJ5dGUpCisgICAgd2hl
biAidGJueiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmJ5dGUpCisgICAgd2hl
biAicGVlayIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMF0udmFsdWUgKiA0
fSglZXNwKSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJwb2tl
IgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQp
fSwgI3tvcGVyYW5kc1sxXS52YWx1ZSAqIDR9KCVlc3ApIgorICAgIHdoZW4gImNkcWkiCisgICAg
ICAkYXNtLnB1dHMgIlx0Y2RxIgorICAgIHdoZW4gImlkaXZpIgorICAgICAgJGFzbS5wdXRzICJc
dGlkaXZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiZmlpMmQi
CisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9
LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJc
dG1vdmQgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNt
LnB1dHMgIlx0cHNsbHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwb3IgJXhtbTcs
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiZmQyaWkiCisg
ICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdG1v
dnNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFz
bS5wdXRzICJcdHBzcmxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgJXht
bTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgcmFp
c2UgIkJhZCBvcGNvZGU6ICN7b3Bjb2RlfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXph
dGlvbktpbmQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENv
ZGVTcGVjaWFsaXphdGlvbktpbmRfaAorI2RlZmluZSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gK
KworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7IENvZGVG
b3JDYWxsLCBDb2RlRm9yQ29uc3RydWN0IH07CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAxMDU3NzApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBDb21tb25TbG93UGF0aHNfaAogCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5o
IgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAK
QEAgLTQxLDYgKzQyLDM4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgQ29tbW9uU2xv
d1BhdGhzIHsKIAorQUxXQVlTX0lOTElORSBFeGVjU3RhdGUqIGFyaXR5Q2hlY2tGb3IoRXhlY1N0
YXRlKiBleGVjLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+
Y2FsbGVlKCkpOworICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKKyAgICBD
b2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0
ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PSBleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOworCisgICAgLy8gVGhpcyBlbnN1
cmVzIGVub3VnaCBzcGFjZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1
bWVudHMgcGFzc2VkIGJ5IHRoZSBjYWxsZXIuCisgICAgaWYgKCFyZWdpc3RlckZpbGUtPmdyb3co
ZXhlYy0+cmVnaXN0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIG5ld0Nv
ZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpKTsKKworICAgIC8vIFRvbyBmZXcgYXJndW1lbnRzIC0tIGNvcHkgY2FsbCBmcmFt
ZSBhbmQgYXJndW1lbnRzLCB0aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1bWVudHMgd2l0aCB1bmRl
ZmluZWQuCisgICAgc2l6ZV90IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkg
LSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKKyAgICBSZWdpc3Rlciogc3JjID0gZXhlYy0+
cmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0ZXIqIGRzdCA9IGV4ZWMtPnJlZ2lzdGVycygpICsgZGVs
dGE7CisKKyAgICBpbnQgaTsKKyAgICBpbnQgZW5kID0gLUV4ZWNTdGF0ZTo6b2Zmc2V0Rm9yKGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKKyAgICBmb3IgKGkgPSAtMTsgaSA+PSBlbmQ7IC0t
aSkKKyAgICAgICAgZHN0W2ldID0gc3JjW2ldOworCisgICAgZW5kIC09IGRlbHRhOworICAgIGZv
ciAoIDsgaSA+PSBlbmQ7IC0taSkKKyAgICAgICAgZHN0W2ldID0ganNVbmRlZmluZWQoKTsKKwor
ICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IEV4ZWNTdGF0ZTo6Y3JlYXRlKGRzdCk7CisgICAgQVNT
RVJUKCh2b2lkKiluZXdFeGVjIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOworICAgIHJldHVybiBu
ZXdFeGVjOworfQorCiBBTFdBWVNfSU5MSU5FIGJvb2wgb3BJbnN0YW5jZU9mU2xvdyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgYmFzZVZhbCwgSlNWYWx1ZSBwcm90bykK
IHsKICAgICBBU1NFUlQoIXZhbHVlLmlzQ2VsbCgpIHx8ICFiYXNlVmFsLmlzQ2VsbCgpIHx8ICFw
cm90by5pc0NlbGwoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAj
aW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNp
bmNsdWRlICJERkdEcml2ZXIuaCIKKyNpbmNsdWRlICJFeGVjdXRpb25IYXJuZXNzLmgiCiAjaW5j
bHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURHJpdmVyLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgi
CkBAIC04NCw3ICs4NSw3IEBAIEludHJpbnNpYyBOYXRpdmVFeGVjdXRhYmxlOjppbnRyaW5zaWMo
KSAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdGF0aWMgdm9pZCBqZXR0aXNvbkNvZGVCbG9jayhK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxUPiYgY29kZUJsb2NrKQogewotICAgIEFT
U0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Cisg
ICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmdldEpJVFR5cGUo
KSkpOwogICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwogICAgIE93blB0cjxU
PiBjb2RlQmxvY2tUb0pldHRpc29uID0gY29kZUJsb2NrLnJlbGVhc2UoKTsKICAgICBjb2RlQmxv
Y2sgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFQ+KGNvZGVCbG9ja1RvSmV0dGlzb24tPnJlbGVhc2VB
bHRlcm5hdGl2ZSgpKTsKQEAgLTE2Nyw5ICsxNjgsMzAgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRh
YmxlOjpjb21waWxlT3B0aW1pegogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBFdmFsRXhl
Y3V0YWJsZTo6aml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9v
bCByZXN1bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2V2YWxDb2Rl
QmxvY2ssIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK2lubGluZSBjb25zdCBjaGFyKiBz
YW1wbGluZ0Rlc2NyaXB0aW9uKEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyAgICBzd2l0
Y2ggKGppdFR5cGUpIHsKKyAgICBjYXNlIEpJVENvZGU6OkludGVycHJldGVyVGh1bms6CisgICAg
ICAgIHJldHVybiAiSW50ZXJwcmV0ZXIgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgY2FzZSBK
SVRDb2RlOjpCYXNlbGluZUpJVDoKKyAgICAgICAgcmV0dXJuICJCYXNlbGluZSBDb21waWxhdGlv
biAoVE9UQUwpIjsKKyAgICBjYXNlIEpJVENvZGU6OkRGR0pJVDoKKyAgICAgICAgcmV0dXJuICJE
RkcgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwogSlNPYmplY3QqIEV2
YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWlu
Tm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBT
YW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5l
SklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAo
VE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNj
cmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BB
UkFNKGppdFR5cGUpOwpAQCAtMjEwLDcgKzIzMiw3IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJs
ZTo6Y29tcGlsZUludGVybmEKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0
Q29tcGlsZUlmQXBwcm9wcmlhdGUoKmdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRD
b2RlRm9yQ2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKCpnbG9i
YWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAg
ICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC0yOTUsOSArMzE3LDE1IEBAIEpTT2JqZWN0KiBQ
cm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGkKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3Zv
aWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
KQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0
YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21U
aWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCiBKU09i
amVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMs
IFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBl
KQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENv
bXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihz
YW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAg
ICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC0zMzYsNyArMzY0LDcgQEAgSlNPYmplY3QqIFBy
b2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0g
ICAgaWYgKCFqaXRDb21waWxlSWZBcHByb3ByaWF0ZSgqZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29k
ZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGb3JF
eGVjdXRpb24oKmdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2Fs
bCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTQxMiw3ICs0NDAs
NyBAQCBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpiCiAgICAgd2hpbGUg
KHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RnVu
Y3Rpb25Db2RlQmxvY2sqPihyZXN1bHQtPmFsdGVybmF0aXZlKCkpOwogICAgIEFTU0VSVChyZXN1
bHQpOwotICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGlu
ZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklU
VHlwZSgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDM4LDYgKzQ2NiwxOCBAQCBK
U09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlT3B0CiAgICAgcmV0dXJuIGVycm9y
OwogfQogCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0
aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29k
ZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwg
SklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0KTsKK30KKwordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1
Y3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29t
cGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0ZvckNvbnN0
cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJp
dHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwogRnVuY3Rpb25Db2RlQmxvY2sqIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrV2l0aEJ5dGVjb2RlRm9yKENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKIHsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0gYmFz
ZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CkBAIC00ODIsNyArNTIyLDcgQEAgUGFzc093blB0cjxG
dW5jdGlvbkNvZGVCbG9jaz4gRnVuY3Rpb25FeAogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRh
YmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5v
ZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJ
VCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRP
VEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3Jp
cHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKQEAgLTUwNCw3ICs1NDQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxl
Ojpjb21waWxlRm9yCiAgICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC0+c2hh
cmVkU3ltYm9sVGFibGUoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxl
RnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JD
YWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1f
c3ltYm9sVGFibGUsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0
aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JD
YWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5
cGUsIENvZGVGb3JDYWxsKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNTI0LDcg
KzU2NCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKIAogSlNP
YmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKEV4
ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpK
SVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0
VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9U
QUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNh
bXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFF
TkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTU0Niw3ICs1ODYsNyBA
QCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAgICAgbV9zeW1ib2xU
YWJsZSA9IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LT5zaGFyZWRTeW1ib2xUYWJsZSgpOwogCiAj
aWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9y
Q29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xU
YWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29u
c3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJs
ZSwgaml0VHlwZSwgQ29kZUZvckNvbnN0cnVjdCkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlm
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJl
dmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBFeGVjdXRhYmxl
X2gKIAogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgogI2luY2x1ZGUgIk5vZGVzLmgiCkBAIC0zOSwxMiArNDAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgY2xhc3MgRGVidWdnZXI7CiAgICAgY2xhc3MgRXZhbENvZGVCbG9jazsKICAgICBjbGFz
cyBGdW5jdGlvbkNvZGVCbG9jazsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAg
ICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKIAog
ICAgIHN0cnVjdCBFeGNlcHRpb25JbmZvOwogICAgIAotICAgIGVudW0gQ29kZVNwZWNpYWxpemF0
aW9uS2luZCB7IENvZGVGb3JDYWxsLCBDb2RlRm9yQ29uc3RydWN0IH07CiAgICAgZW51bSBDb21w
aWxhdGlvbktpbmQgeyBGaXJzdENvbXBpbGF0aW9uLCBPcHRpbWl6aW5nQ29tcGlsYXRpb24gfTsK
IAogICAgIGlubGluZSBib29sIGlzQ2FsbChDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBA
IC0zMTksNiArMzIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEV2
YWxFeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRl
ZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTMzOCw2ICszNDAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9w
dGltaXplZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShKU0ds
b2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIEV2YWxDb2RlQmxvY2smIGdlbmVyYXRlZEJ5
dGVjb2RlKCkKQEAgLTM4NCw2ICszODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAg
ICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgog
ICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNDExLDYgKzQxNSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2
b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBq
aXRDb21waWxlKEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgUHJvZ3JhbUNvZGVC
bG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAtNDUzLDYgKzQ1OCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1
dGFibGUgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3Jp
cHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTUwOCw2ICs1MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXpl
ZENvZGVGb3JDYWxsKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JD
YWxsKEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZv
ckNhbGwoKSBjb25zdApAQCAtNTM1LDYgKzU0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZv
ckNvbnN0cnVjdChKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ29u
c3RydWN0KEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRl
ZEZvckNvbnN0cnVjdCgpIGNvbnN0CkBAIC01ODIsNiArNTkwLDE2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgICAgIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChnbG9i
YWxEYXRhKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9p
ZCBqaXRDb21waWxlRm9yKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9y
Q2FsbCkgeworICAgICAgICAgICAgICAgIGppdENvbXBpbGVGb3JDYWxsKGdsb2JhbERhdGEpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VS
VChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICAgICAgaml0Q29tcGlsZUZvckNv
bnN0cnVjdChnbG9iYWxEYXRhKTsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIAogICAgICAg
ICBib29sIGlzR2VuZXJhdGVkRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25I
YXJuZXNzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBFeGVjdXRpb25IYXJuZXNzX2gK
KyNkZWZpbmUgRXhlY3V0aW9uSGFybmVzc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
KworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJKSVREcml2ZXIuaCIKKyNpbmNsdWRlICJM
TEludEVudHJ5cG9pbnRzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDb2RlQmxvY2tUeXBlPgoraW5saW5lIGJvb2wgcHJlcGFyZUZvckV4ZWN1dGlvbihKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBKSVRD
b2RlJiBqaXRDb2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisjaWYgRU5BQkxFKExM
SU5UKQorICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkgeworICAgICAg
ICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRlcnByZXRlci4KKyAgICAgICAgTExJ
bnQ6OmdldEVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsK
KyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cigpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShM
TElOVCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgY29k
ZUJsb2NrLCBqaXRDb2RlLCBqaXRUeXBlKTsKK30KKworaW5saW5lIGJvb2wgcHJlcGFyZUZ1bmN0
aW9uRm9yRXhlY3V0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9u
Q29kZUJsb2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHImIGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xU
YWJsZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29k
ZShqaXRUeXBlKSkgeworICAgICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRl
cnByZXRlci4KKyAgICAgICAgTExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludChnbG9iYWxEYXRh
LCBraW5kLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBjb2RlQmxv
Y2stPnNldEpJVENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oa2luZCk7CisjZW5k
aWYgLy8gRU5BQkxFKExMSU5UKQorICAgIHJldHVybiBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJv
cHJpYXRlKGdsb2JhbERhdGEsIGNvZGVCbG9jaywgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNo
ZWNrLCBzeW1ib2xUYWJsZSwgaml0VHlwZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIEV4ZWN1dGlvbkhhcm5lc3NfaAorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkocmV2
aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0
aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFy
cmF5ID0gYWRvcHRBcnJheVB0cihuZXcgV3JpdGVCYXJyaWVyPFVua25vd24+W3JlZ2lzdGVyQXJy
YXlTaXplXSk7CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzID0gcmVn
aXN0ZXJBcnJheS5nZXQoKSArIHJlZ2lzdGVyT2Zmc2V0OwotCisgICAgICAgIAogICAgICAgICAv
LyBDb3B5IGFsbCBhcmd1bWVudHMgdGhhdCBjYW4gYmUgY2FwdHVyZWQgYnkgbmFtZSBvciBieSB0
aGUgYXJndW1lbnRzIG9iamVjdC4KICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX251bUNh
cHR1cmVkQXJnczsgKytpKSB7CiAgICAgICAgICAgICBpbnQgaW5kZXggPSBDYWxsRnJhbWU6OmFy
Z3VtZW50T2Zmc2V0KGkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEpTQXJyYXk7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogCiAgICAgc3RydWN0IFNwYXJzZUFycmF5RW50cnkgOiBwdWJsaWMgV3JpdGVCYXJyaWVyPFVu
a25vd24+IHsKICAgICAgICAgdHlwZWRlZiBXcml0ZUJhcnJpZXI8VW5rbm93bj4gQmFzZTsKQEAg
LTEyMiw2ICsxMjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgSlNB
cnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdhbGtlcjsKIAogICAg
IHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShy
ZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0gICAgY2xhc3MgU3RydWN0dXJlOworICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAg
ICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CisgICAgY2xhc3MgU3RydWN0dXJlOwogCiAgICAg
ZW51bSBFbnVtZXJhdGlvbk1vZGUgewogICAgICAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVz
LApAQCAtMTY0LDYgKzE2NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgYm9v
bCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJ
ZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAg
Y29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gbV9zdHJ1Y3R1cmU7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBj
bGFzcyBKU0FjdGl2YXRpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAg
Y2xhc3MgU291cmNlQ29kZTsKICAgICBuYW1lc3BhY2UgREZHIHsKQEAgLTE0MCw2ICsxNDEsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIAogICAgICAgICBzdGF0
aWMgSlNWYWx1ZSBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRl
bnRpZmllciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDgg
QEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgICwga2V5d29y
ZHMoYWRvcHRQdHIobmV3IEtleXdvcmRzKHRoaXMpKSkKICAgICAsIGludGVycHJldGVyKDApCiAg
ICAgLCBoZWFwKHRoaXMsIGhlYXBTaXplKQorICAgICwganNBcnJheUNsYXNzSW5mbygmSlNBcnJh
eTo6c19pbmZvKQorICAgICwganNGaW5hbE9iamVjdENsYXNzSW5mbygmSlNGaW5hbE9iamVjdDo6
c19pbmZvKQogI2lmIEVOQUJMRShERkdfSklUKQogICAgICwgc2l6ZU9mTGFzdFNjcmF0Y2hCdWZm
ZXIoMCkKICNlbmRpZgpAQCAtMjE2LDcgKzIxOCw3IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxE
YXRhKEdsb2JhbERhdGFUeXAKICAgICBqaXRTdHVicyA9IGFkb3B0UHRyKG5ldyBKSVRUaHVua3Mo
dGhpcykpOwogI2VuZGlmCiAKLSAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSh0aGlzLT5jYW5V
c2VKSVQoKSk7CisgICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUoJmxsaW50RGF0YSwgdGhpcy0+
Y2FuVXNlSklUKCkpOwogCiAgICAgaGVhcC5ub3RpZnlJc1NhZmVUb0NvbGxlY3QoKTsKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZp
c2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTUgKzMwLDE2IEBACiAjZGVmaW5lIEpTR2xvYmFs
RGF0YV9oCiAKICNpbmNsdWRlICJDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgiCi0jaW5j
bHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNs
dWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUg
IlN0cm9uZy5oIgorI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgi
CiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUg
Ik51bWVyaWNTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAi
U3Ryb25nLmgiCiAjaW5jbHVkZSAiVGVybWluYXRvci5oIgogI2luY2x1ZGUgIlRpbWVvdXRDaGVj
a2VyLmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgpAQCAtNjUsNiArNjYsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsK
ICAgICBjbGFzcyBLZXl3b3JkczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAg
ICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAgICBj
bGFzcyBSZWdFeHBDYWNoZTsKQEAgLTI0MSw2ICsyNDMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIEhlYXAgaGVhcDsKIAogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKKworICAgICAg
ICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzQXJyYXlDbGFzc0luZm87CisgICAgICAgIGNvbnN0
IENsYXNzSW5mbyogY29uc3QganNGaW5hbE9iamVjdENsYXNzSW5mbzsKKworICAgICAgICBMTElu
dDo6RGF0YSBsbGludERhdGE7CisKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZXR1cm5BZGRy
ZXNzUHRyIGV4Y2VwdGlvbkxvY2F0aW9uOwogICAgICAgICBKU1ZhbHVlIGhvc3RDYWxsUmV0dXJu
VmFsdWU7CkBAIC0zNDYsNiArMzU0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjdW5kZWYgcmVnaXN0
ZXJUeXBlZEFycmF5RnVuY3Rpb24KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU0dsb2JhbERhdGEo
R2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUpOwogICAgICAgICBzdGF0
aWMgSlNHbG9iYWxEYXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwogICAgICAgICB2b2lk
IGNyZWF0ZU5hdGl2ZVRodW5rKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7
CiAgICAgY2xhc3MgR2V0dGVyU2V0dGVyOwogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JDb25z
dHJ1Y3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFJlZ0V4cENv
bnN0cnVjdG9yOwpAQCAtMzM1LDYgKzMzNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZFN0YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZv
KiwgaW50IGNvdW50KTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogRm9sZCByZXNl
dCBpbnRvIGluaXQuCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdChKU09iamVj
dCogdGhpc1ZhbHVlKTsKICAgICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEw
NTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgR2V0
dGVyU2V0dGVyOwogICAgIGNsYXNzIEhhc2hFbnRyeTsKICAgICBjbGFzcyBJbnRlcm5hbEZ1bmN0
aW9uOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRC
bG9jazsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlO
YW1lQXJyYXk7CkBAIC0yNzEsNiArMjcyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpT
T2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVT
dG9yYWdlKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIgYXNr
IGFueSBvZiB0aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25vd24gdG8gYmUg
YSBKU09iamVjdC4KICAgICAgICAgdXNpbmcgSlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcjsKICAg
ICAgICAgdXNpbmcgSlNDZWxsOjppc0dldHRlclNldHRlcjsKQEAgLTM4Myw2ICszODYsOCBAQCBD
T01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgZXhwbGljaXQgSlNG
aW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQogICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5l
U3RvcmFnZSkKICAgICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkocmV2aXNpb24gMTA1NzcwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yIDogcHVi
bGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC05Niw2ICs5Nyw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3Bl
cnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpOwogCiAgICAgICAgIFdy
aXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FjaGVkU3RydWN0dXJlOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Miw2ICszMiw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTU3RyaW5nOworICAg
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3Ry
aW5nKEpTR2xvYmFsRGF0YSopOwogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0
ZSopOwpAQCAtMjQwLDYgKzI0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRl
OgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAK
ICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNvbHZlUm9wZShFeGVjU3RhdGUqKSBj
b25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlOChMQ2hhciopIGNvbnN0Owog
ICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2UoVUNoYXIqKSBjb25zdDsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDEwNTc3
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkID0gMTsgLy8gV2ViQ29yZSB1c2VzIE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgdG8gbWFrZSBkb2N1bWVudC5hbGwgdW5kZXRlY3RhYmxlLgogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPSAxIDw8IDE7CiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIE92ZXJyaWRlc0hhc0luc3RhbmNlID0gMSA8PCAyOwpAQCAtODcsNiArODks
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJv
b2wgaXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnIDw9ICgx
IDw8IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBmbGFnOyB9CiAgICAgICAgIGJvb2wgaXNTZXRPbkZs
YWdzMih1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnID49ICgxIDw8IDgpKTsgcmV0
dXJuIG1fZmxhZ3MyICYgKGZsYWcgPj4gOCk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsMTAg
KzExNiw5IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEUKICAgICBy
ZXR1cm4gSlNOb3RBbk9iamVjdDo6Y3JlYXRlKGV4ZWMpOwogfQogCi0jaWZuZGVmIE5ERUJVRwog
Y2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogewotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qg
c2l6ZSA9IDY0OworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZSA9IDEyODsKICAgICBzdGF0
aWMgY2hhciBkZXNjcmlwdGlvbltzaXplXTsKIAogICAgIGlmICghKnRoaXMpCkBAIC0xMjgsMTQg
KzEyNywxNCBAQCBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiAgICAgICAgIHNucHJpbnRm
KGRlc2NyaXB0aW9uLCBzaXplLCAiSW50MzI6ICVkIiwgYXNJbnQzMigpKTsKICAgICBlbHNlIGlm
IChpc0RvdWJsZSgpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc25wcmludGYoZGVz
Y3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVsZiwgJWx4IiwgYXNEb3VibGUoKSwgcmVpbnRlcnBy
ZXREb3VibGVUb0ludHB0cihhc0RvdWJsZSgpKSk7CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0
aW9uLCBzaXplLCAiRG91YmxlOiAlbHgsICVsZiIsIHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIo
YXNEb3VibGUoKSksIGFzRG91YmxlKCkpOwogI2Vsc2UKICAgICAgICAgdW5pb24gewogICAgICAg
ICAgICAgZG91YmxlIGFzRG91YmxlOwogICAgICAgICAgICAgdWludDMyX3QgYXNUd29JbnQzMnNb
Ml07CiAgICAgICAgIH0gdTsKICAgICAgICAgdS5hc0RvdWJsZSA9IGFzRG91YmxlKCk7Ci0gICAg
ICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICUwOHg6JTA4eCIs
IGFzRG91YmxlKCksIHUuYXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0pOworICAgICAg
ICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJTA4eDolMDh4LCAlbGYiLCB1
LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdLCBhc0RvdWJsZSgpKTsKICNlbmRpZgog
ICAgIH0gZWxzZSBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBz
aXplLCAiQ2VsbDogJXAiLCBhc0NlbGwoKSk7CkBAIC0xNTIsNyArMTUxLDYgQEAgY2hhciogSlNW
YWx1ZTo6ZGVzY3JpcHRpb24oKQogCiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQotI2VuZGlm
CiAKIC8vIFRoaXMgaW4gdGhlIFRvSW50MzIgb3BlcmF0aW9uIGlzIGRlZmluZWQgaW4gc2VjdGlv
biA5LjUgb2YgdGhlIEVDTUEtMjYyIHNwZWMuCiAvLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24g
aXMgaWRlbnRpY2FsIHRvIFRvVUludDMyIG90aGVyIHRoYW4gdG8gaW50ZXJwcmV0YXRpb24KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHJldmlzaW9uIDEwNTc3
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjMyLDkgKzIzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU0NlbGwq
IGFzQ2VsbCgpIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRD
YWxsZWUoKTsKIAotI2lmbmRlZiBOREVCVUcKICAgICAgICAgY2hhciogZGVzY3JpcHRpb24oKTsK
LSNlbmRpZgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpTVmFs
dWUoV3JpdGVCYXJyaWVyQmFzZTxUPik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDEwICszOCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBSZWdpc3RlcjsKIAogICAgIGNsYXNzIEpT
VmFyaWFibGVPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9u
IDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxMCBAQCB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25G
b3JDb25zdHJ1Y3RJbmxpCiAKIHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOwogCitpbnQz
Ml90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworaW50MzJfdCBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CitpbnQzMl90IGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
T3B0aW1pemVBZnRlckxvbmdXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwpAQCAtMTM3LDYgKzE0MSwxMCBAQCB2b2lkIGluaXRp
YWxpemVPcHRpb25zKCkKICAgICAKICAgICBTRVQobWF4aW11bUlubGluaW5nRGVwdGgsIDUpOwog
CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwLCAgICAgLTEw
MCk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbiwg
c3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOworICAgIFNFVChleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JKSVRTb29uLCAgICAgICAgICAgIC0xMDApOworCiAgICAgU0VUKGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAsICAgICAtMTAwMCk7CiAgICAg
U0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwLCAtNTAw
MCk7CiAgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVT
b29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CkBAIC0xODUsNiArMTkz
LDggQEAgdm9pZCBpbml0aWFsaXplT3B0aW9ucygpCiAgICAgaWYgKGNwdXNUb1VzZSA8IDEpCiAg
ICAgICAgIGNwdXNUb1VzZSA9IDE7CiAgICAgCisgICAgY3B1c1RvVXNlID0gMTsKKyAgICAKICAg
ICBTRVQobnVtYmVyT2ZHQ01hcmtlcnMsIGNwdXNUb1VzZSk7CiAKICAgICBBU1NFUlQoZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24gPD0gZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICsz
NywxMCBAQCBleHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RyCiAKIGV4dGVy
biB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsgLy8gRGVwdGggb2YgaW5saW5lIHN0YWNr
LCBzbyAxID0gbm8gaW5saW5pbmcsIDIgPSBvbmUgbGV2ZWwsIGV0Yy4KIAorZXh0ZXJuIGludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitleHRlcm4gaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CitleHRlcm4gaW50
MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBleHRlcm4gaW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogZXh0ZXJuIGludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7CiBleHRl
cm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29v
bjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHJl
dmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hh
aW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xh
c3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IFNjb3BlQ2hhaW5JdGVyYXRvcjsKICAgICBjbGFzcyBTbG90VmlzaXRvcjsKICAgICAKQEAgLTkx
LDYgKzkyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRB
IGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbjsKICAg
ICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAko
cmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlO
YW1lQXJyYXk7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhOwogICAgIGNsYXNzIFN0
cnVjdHVyZUNoYWluOwpAQCAtMTk2LDYgKzE5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJp
dmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAg
ICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0
IENsYXNzSW5mbyopOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAg
IFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24g
MTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
ICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAK
ICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbiA6IHB1YmxpYyBKU0NlbGwgewpAQCAtNzQsNiArNzUs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIFN0
cnVjdHVyZUNoYWluKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiA+IG1fdmVjdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Q
bGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MTgsNiArOTE4LDE4IEBACiAjZGVmaW5lIEVOQUJM
RV9KSVQgMQogI2VuZGlmCiAKKy8qIE9uIHNvbWUgb2YgdGhlIHBsYXRmb3JtcyB3aGVyZSB3ZSBo
YXZlIGEgSklULCB3ZSB3YW50IHRvIGFsc28gaGF2ZSB0aGUgCisgICBsb3ctbGV2ZWwgaW50ZXJw
cmV0ZXIuICovCisjaWYgIWRlZmluZWQoRU5BQkxFX0xMSU5UKSAmJiBFTkFCTEUoSklUKSAmJiBQ
TEFURk9STShNQUMpICYmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIEVOQUJMRV9MTElOVCAx
CisjZW5kaWYKKworLyogSWYgd2UgaGF2ZSBMTEludCBlbmFibGVkIGFuZCB0aGUgSklUIGVuYWJs
ZWQsIHdlIGFsc28gZW5hYmxlIE9TUmluZyBmcm9tCisgICBMTEludCB0byB0aGUgSklULiAqLwor
I2lmICFkZWZpbmVkKEVOQUJMRV9MTElOVF9PU1JfVE9fSklUKSAmJiBFTkFCTEUoSklUKSAmJiBF
TkFCTEUoTExJTlQpCisjZGVmaW5lIEVOQUJMRV9MTElOVF9PU1JfVE9fSklUIDEKKyNlbmRpZgor
CiAjaWYgIWRlZmluZWQoRU5BQkxFX0RGR19KSVQpICYmIEVOQUJMRShKSVQpCiAvKiBFbmFibGUg
dGhlIERGRyBKSVQgb24gWDg2IGFuZCBYODZfNjQuICBPbmx5IHRlc3RlZCBvbiBNYWMgYW5kIEdO
VS9MaW51eC4gKi8KICNpZiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpICYmIChQTEFURk9STShN
QUMpIHx8IE9TKExJTlVYKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGlu
ZWxMaW5rZWRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9T
ZW50aW5lbExpbmtlZExpc3QuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNiAr
ODYsOCBAQCBwdWJsaWM6CiAKICAgICBpdGVyYXRvciBiZWdpbigpOwogICAgIGl0ZXJhdG9yIGVu
ZCgpOworICAgIAorICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIGJlZ2luKCkgPT0gZW5kKCk7
IH0KIAogcHJpdmF0ZToKICAgICBSYXdOb2RlIG1faGVhZFNlbnRpbmVsOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAxMDU3NzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZTdHJpbmcg
KiBDRlN0cmkKIC8vIExhbmRpbmcgdGhlIGZpbGUgbW92ZXMgaW4gb25lIHBhdGNoLCB3aWxsIGZv
bGxvdyBvbiB3aXRoIHBhdGNoZXMgdG8gY2hhbmdlIHRoZSBuYW1lc3BhY2VzLgogbmFtZXNwYWNl
IEpTQyB7CiBzdHJ1Y3QgSWRlbnRpZmllckNTdHJpbmdUcmFuc2xhdG9yOworY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJZGVudGlmaWVy
Q2hhckJ1ZmZlclRyYW5zbGF0b3I7CiBzdHJ1Y3QgSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyVHJh
bnNsYXRvcjsKIH0KQEAgLTcyLDcgKzczLDggQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgZnJp
ZW5kIHN0cnVjdCBXVEY6OlN1YnN0cmluZ1RyYW5zbGF0b3I7CiAgICAgZnJpZW5kIHN0cnVjdCBX
VEY6OlVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKICAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5n
SW1wbDsKLQorICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAg
ICAKIHByaXZhdGU6CiAgICAgZW51bSBCdWZmZXJPd25lcnNoaXAgewogICAgICAgICBCdWZmZXJJ
bnRlcm5hbCwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123858</attachid>
            <date>2012-01-24 17:33:44 -0800</date>
            <delta_ts>2012-01-24 21:01:42 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_48.diff</filename>
            <type>text/plain</type>
            <size>437817</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1ODMyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3NiBA
QAorMjAxMi0wMS0yNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9MaW5r
QnVmZmVyLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oOiBBZGRl
ZC4KKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6
OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6Q2FsbExp
bmtTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3RhdHVz
Lmg6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppc1NldCk6CisgICAgICAgIChKU0M6
OkNhbGxMaW5rU3RhdHVzOjpvcGVyYXRvciEpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9j
ay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2Nr
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpi
eXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29u
KToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlND
OjpGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29k
ZUJsb2NrOjpqaXRDb21waWxlSW1wbCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6Ompp
dENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBp
bGVJbXBsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRp
bmdPcHBvcnR1bml0eSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29k
ZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0Q29tcGlsZSk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQpOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6YWRkTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmFkZEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpudW1i
ZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZhbHVl
UHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmNv
dWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VT
cGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZURl
ZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlQW55
U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1ZW50RXhpdFNpdGUp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29vbik6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50RXhlY3V0ZUNvdW50
ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlND
OjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6R2V0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5o
OgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpHZXRCeUlkU3RhdHVzKToKKyAgICAgICAg
KEpTQzo6R2V0QnlJZFN0YXR1czo6d2FzU2VlbkluSklUKToKKyAgICAgICAgKiBieXRlY29kZS9J
bnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmg6IEFkZGVkLgorICAgICAgICAo
SlNDOjpMTEludENhbGxMaW5rSW5mbzo6TExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlND
OjpMTEludENhbGxMaW5rSW5mbzo6fkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6
TExJbnRDYWxsTGlua0luZm86OmlzTGlua2VkKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlu
a0luZm86OnVubGluayk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMu
Y3BwOgorICAgICAgICAoSlNDOjpNZXRob2RDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6Cisg
ICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQp
OgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBi
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnNldER1bXBz
R2VuZXJhdGVkQ29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dl
bmVyYXRlZENvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmUpOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFzZSk6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlzKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25z
dHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhdGNoKToKKyAg
ICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5
dGVDb2RlUGFyc2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBhYmls
aXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAgICAg
KiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9u
cy5jcHA6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAgICAgKiBoZWFw
L0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBoZWFw
L0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6OnZp
c2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoKKyAgICAgICAgKiBp
bnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJyZW50
VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjppc09wY29kZSk6Cisg
ICAgICAgIChKU0M6OkludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKToKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKEpTQzo6
SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyRmls
ZS5oOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKToKKyAgICAgICAg
KiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBqaXQvSklULmNw
cDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAgICAg
KEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJVDo6
cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChKU0M6
OkpJVENvZGU6OmlzT3B0aW1pemluZ0pJVCk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OmlzQmFz
ZWxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6SklUQ29kZSk6CisgICAgICAgICog
aml0L0pJVERyaXZlci5oOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlSWZBcHByb3ByaWF0ZSk6
CisgICAgICAgIChKU0M6OmppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUpOgorICAgICAg
ICAqIGppdC9KSVRFeGNlcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6aml0VGhyb3cpOgorICAg
ICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNU
SU9OKToKKyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiBsbGludDog
QWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRDb21tb24uaDogQWRkZWQuCisgICAgICAgICog
bGxpbnQvTExJbnREYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpE
YXRhKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6On5EYXRhKToKKyAgICAgICAgKiBsbGlu
dC9MTEludERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpleGNlcHRp
b25JbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6b3Bjb2RlTWFwKToK
KyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnRzLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0M6OkxMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6
Z2V0RXZhbEVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0UHJvZ3JhbUVudHJ5
cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuaDogQWRkZWQuCisgICAg
ICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4
Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhy
b3dJbkNhbGxlcik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3du
RXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0
aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuY3BwOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX29wZXJhbmQpOgorICAgICAgICAoSlND
OjpMTEludDo6bGxpbnRfdHJhY2VfdmFsdWUpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJTlRf
SEVMUEVSX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6dHJhY2VGdW5jdGlvblByb2xvZ3Vl
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNob3VsZEpJVCk6CisgICAgICAgIChKU0M6OkxMSW50
OjplbnRyeU9TUik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXNvbHZlR2xvYmFsKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRsZUhv
c3RDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpnZW5lcmljQ2FsbCk6CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6IEFk
ZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAg
ICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToKKyAg
ICAgICAgKiBsbGludC9MTEludFRodW5rcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpMTElu
dDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8pOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rp
b25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5j
dGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTElu
dDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OnByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBsbGlu
dC9MTEludFRodW5rcy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQuCisg
ICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12Ny5y
YjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tlbmRz
LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0
b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lz
dGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9zZXR0aW5ncy5yYjogQWRkZWQu
CisgICAgICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6IEFkZGVkLgorICAgICAgICAqIG9m
ZmxpbmVhc20veDg2LnJiOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvZGVTcGVjaWFsaXph
dGlvbktpbmQuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoK
KyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAg
KiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9j
ayk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAg
KEpTQzo6c2FtcGxpbmdEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxl
Ojpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0
Q29tcGlsZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2Fs
bCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0
cnVjdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJ
bnRlcm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNv
bnN0cnVjdEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnByZXBhcmVG
b3JFeGVjdXRpb24pOgorICAgICAgICAoSlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OkpTQWN0
aXZhdGlvbjo6dGVhck9mZik6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAg
ICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
RGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL0pT
T2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6Cisg
ICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5m
by5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpTVmFs
dWU6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAg
KiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMu
Y3BwOgorICAgICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAgICAg
ICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6Cisg
ICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL1NlbnRp
bmVsTGlua2VkTGlzdC5oOgorICAgICAgICAoV1RGOjpTZW50aW5lbExpbmtlZExpc3Q6OmlzRW1w
dHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKwogMjAxMi0wMS0yNCAgTWFy
ayBIYWhuZW5iZXJnICA8bWhhaG5lbmJlcmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVzZSBjb3B5
aW5nIGNvbGxlY3RvciBmb3Igb3V0LW9mLWxpbmUgSlNPYmplY3QgcHJvcGVydHkgc3RvcmFnZQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsMTUgQEAKIAlvYmplY3RzID0gewogCiAvKiBC
ZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBC
RkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdl
dDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIg
LyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50
IE9mZnNldHMiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwQUExNEJBN0ZEOTAw
QkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKKwkJCSk7CisJCQluYW1lID0g
IkxMSW50IE9mZnNldHMiOworCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJ
fTsKIAkJNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCIC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3Qg
PSA2NUZCM0Y3NzA5RDExRUJEMDBGNDlERUIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkRlcml2ZWQgU291cmNlcyIgKi87CkBAIC0xNCw2ICsyMyw5
IEBACiAJCQkJNjVGQjNGNjUwOUQxMUU5MTAwRjQ5REVCIC8qIEdlbmVyYXRlIERlcml2ZWQgU291
cmNlcyAqLywKIAkJCQk1RDM1REVFMTBDN0MxNDBCMDA4NjQ4QjIgLyogR2VuZXJhdGUgRFRyYWNl
IGhlYWRlciAqLywKIAkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjQxNEJB
ODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOwogCQkJbmFtZSA9
ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsK
IAkJfTsKQEAgLTQ4LDYgKzYwLDEwIEBACiAJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBU
aHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJp
Y3Rpb25WZXJpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBCQ0Q4MzU3MTQ4NTg0NTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4
NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyog
U2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi87IH07CisJ
CTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUIxNEJDRjQ2
MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi87IH07CisJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4
NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTcx
NEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBC
ODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBI
YW5kbGVySW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBQTE0
QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01OCw5ICs3NCwxMyBAQAogCQkwRjBC
ODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCMzE0QkNGODVFMDA4ODVC
NEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJl
c29sdmVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCOTE0QkNG
OTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIw
MDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEZDNDVBMTRCRDE1RjUw
MEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2Fs
bExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNUYxNUQxNEI3QTcz
QTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTZENzI2MTQyQzM5QzAwMENGNzg0QSAvKiBCaXRW
ZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCTBGMjFD
MjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVRE
cml2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0ExNEJFNzI3MzAw
QURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNw
ZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktp
bmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAw
QURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjI0MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vh
a1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjJDNTU2RjE0NzM4RjMxMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkUxNDczOEYyRTAwMTIx
RTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjJDNTU3MDE0NzM4RjM1MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nr
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJD
NTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi87IH07CkBAIC03MSw2
ICs5MSwxOSBAQAogCQkwRjQzMTczODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQzMTcz
NjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODMx
NEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJ
VEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJ
bnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTQxNEJB
N0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRI
ZWxwZXJzLmNwcCAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby11bnVzZWQt
cGFyYW1ldGVyIjsgfTsgfTsKKwkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVs
cGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3
MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAgKi87IH07CisJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBM
TEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAg
Ki87IH07CisJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzUxNEJCQjE2
OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2Zm
bGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4
MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM3MTRCQkIxNjkwMEJG
RTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0QxNEJCQjE3
RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dM
ZXZlbEludGVycHJldGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRTE0QkJC
M0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLzsgfTsKKwkJMEY0NjgwRDMxNEJCRDE2NzAw
QkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQ0MTRC
QkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAv
KiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLzsgfTsKKwkJMEY0NjgwRDUxNEJCRDI0QjAwQkZF
MjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJl
dHVyblZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYwOENF
MTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2MjAxNzQxNDNGQ0QzMzAw
NjhCNzdDIC8qIERGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MjAxNzIxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR1Zh
cmlhYmxlQWNjZXNzRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGNjIwMTc1MTQzRkNEMzcwMDY4Qjc3QyAvKiBERkdPcGVyYW5kcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY2MjAxNzExNDNG
Q0QyRjAwNjhCNzdDIC8qIERGR09wZXJhbmRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM4Myw3ICs0MTYsNyBAQAogCQk4NkI5OUFFMzExN0U1
NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI5OUFFMTExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVm
ZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODZCQjA5QzAxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkUxMzhFMzgxQjAwNTY3MDJG
IC8qIERGR1JlcGF0Y2guY3BwICovOyB9OwogCQk4NkJCMDlDMTEzOEUzODFCMDA1NjcwMkYgLyog
REZHUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZCQjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCAqLzsgfTsKLQkJODZD
MzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkg
LyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgfTsKKwkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8q
IE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMDEx
QTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REQxMUEyMTNFRTAwMDdGN0YwIC8q
IE1hY3JvQXNzZW1ibGVyQVJNLmNwcCAqLzsgfTsKIAkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0Yw
IC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVy
TUlQUy5oICovOyB9OwogCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4
REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCAqLzsgfTsKQEAgLTc1Miw2ICs3
ODUsMjAgQEAKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhD
b250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLworCQkwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIg
LyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRl
bVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8q
IFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElE
U3RyaW5nID0gMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9ICJMTElu
dCBPZmZzZXRzIjsKKwkJfTsKKwkJMEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJ
CWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9i
amVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBG
NDY4MDhFMTRCQTdFNUUwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSBKU0NMTEludE9mZnNldHNF
eHRyYWN0b3I7CisJCX07CiAJCTE0MTIxNEJFMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQlj
b250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmpl
Y3QgKi87CkBAIC03OTcsNiArODQ0LDE1IEBACiAvKiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICov
CisJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWRzdFBhdGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsKKwkJCWRzdFN1YmZvbGRlclNw
ZWMgPSAwOworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDE7CisJCX07CiAJCTVEQkIxNTExMTMxRDBCMTMwMDU2QUQzNiAvKiBDb3B5
IFN1cHBvcnQgU2NyaXB0ICovID0gewogCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsK
IAkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOwpAQCAtODM3LDYgKzg5MywxMCBAQAogCQkwQkFDOTQ5
RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBU
ZW1wb3JhcnlDaGFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9y
YXJ5Q2hhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCRjI4QTI4MTFBMzNE
QzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNpemVMaW1pdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEVudHJ5cG9pbnRzLmNwcDsgcGF0aCA9
IGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEVudHJ5cG9pbnRzLmg7IHBhdGggPSBsbGlu
dC9MTEludEVudHJ5cG9pbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4
Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludFRodW5rcy5jcHA7IHBhdGggPSBsbGludC9MTEludFRo
dW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk4MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMTEludFRodW5rcy5oOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVUeXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5kbGVySW5mby5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhw
cmVzc2lvblJhbmdlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHBy
ZXNzaW9uUmFuZ2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDcsOSAr
OTA3LDEzIEBACiAJCTBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0lu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0aG9kQ2FsbExpbmtJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0
RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHbG9iYWxSZXNvbHZlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBC
ODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFJldHVybk9mZnNldFRvQnl0
ZWNvZGVPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwRkM0NTgxNEJE
MTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExMSW50Q2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uU2xvd1BhdGhzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQml0VmVjdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRC
IC8qIEpJVERyaXZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVREcml2
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyNzkxNEJFNzI3MzAwQURD
NjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRpb25IYXJuZXNzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRl
Y29kZUNvbnZlbnRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVj
b2RlQ29udmVudGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNDJEQTUx
M0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJs
b2Nrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBERkdDb2RlQmxv
Y2tzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkUxNDczOEYyRTAw
MTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gREZHQ29kZUJsb2Nrcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODYwLDYg
KzkyNCwyMCBAQAogCQkwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpc3RhYmxlSGFuZGxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
SVRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwODAx
NEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSklURXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQu
bWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBKU0NMTEludE9m
ZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTBG
NDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFeGNlcHRpb25zLmNwcDsgcGF0aCA9IGxs
aW50L0xMSW50RXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFeGNlcHRpb25zLmg7IHBhdGggPSBsbGludC9MTElu
dEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUYxNEJB
N0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBMTEludEhlbHBlcnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50SGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBM
TEludEhlbHBlcnMuaDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHBhdGggPSBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUy
NzIgLyogTExJbnRDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJ
bnRDb21tb24uaDsgcGF0aCA9IGxsaW50L0xMSW50Q29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21D
b25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmg7IHBhdGggPSBsbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTG93
TGV2ZWxJbnRlcnByZXRlci5jcHA7IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcy
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTG93TGV2ZWxJbnRlcnByZXRlci5oOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUy
NzIgLyogTExJbnREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IExMSW50RGF0YS5jcHA7IHBhdGggPSBsbGludC9MTEludERhdGEuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RGF0YS5oOyBwYXRoID0gbGxp
bnQvTExJbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQwMTRC
QkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxS
ZXR1cm5WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIb3N0Q2FsbFJl
dHVyblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENDMTQ2QkU2
MDIwMDA0NzJBOSAvKiBERkdCeXRlQ29kZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IERGR0J5dGVDb2RlQ2FjaGUuaDsgcGF0aCA9IGRmZy9ERkdCeXRlQ29kZUNhY2hl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJB
OSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY2MjAxNkQxNDNGQ0QyRjAwNjhCNzdDIC8qIERGR0Fic3RyYWN0U3RhdGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHQWJzdHJhY3RTdGF0ZS5jcHA7
IHBhdGggPSBkZmcvREZHQWJzdHJhY3RTdGF0ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTc5LDYgKzE2NTcsMTMgQEAKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkw
RjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBC
WEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
KwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQl9OwogCQkxNDEyMTExRTBBNDg3OTNDMDA0ODAyNTUgLyogRnJhbWV3b3JrcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKQEAgLTE2MzcsNiArMTcyMiw3IEBACiAJCQkJMTQxMjExMjAwQTQ4
NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYwQTNFOEY5MDAwQkFGNTlD
IC8qIHRlc3RhcGkgKi8sCiAJCQkJNjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdF
eHAgKi8sCisJCQkJMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4
dHJhY3RvciAqLywKIAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMTY2Nyw2ICsxNzUzLDcgQEAKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4
NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBG
MDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyog
Y29uZmlnLmggKi8sCisJCQkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovLAog
CQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQx
MkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2
ODEgLyogYnl0ZWNvZGUgKi8sCkBAIC0xNzA1LDYgKzE3OTIsMjggQEAKIAkJCXRhYldpZHRoID0g
NDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8q
IGxsaW50ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkw
RjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8sCisJCQkJ
MEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLywKKwkJCQkw
RjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovLAorCQkJCTBGMEI4
Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovLAorCQkJCTBGNDY4MENFMTRC
QkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovLAorCQkJCTBGNDY4MENGMTRCQkIzRDEw
MEJGRTI3MiAvKiBMTEludERhdGEuaCAqLywKKwkJCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIg
LyogTExJbnRDb21tb24uaCAqLywKKwkJCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmggKi8sCisJCQkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8q
IExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovLAorCQkJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3
MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi8sCisJCQkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8sCisJCQkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovLAorCQkJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludEhlbHBlcnMuY3BwICovLAorCQkJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludEhlbHBlcnMuaCAqLywKKwkJCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gbGxpbnQ7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAyNTUg
LyogdGVzdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAt
MTczNyw2ICsxODQ2LDggQEAKIAkJMTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY0NjgwRDAxNEJC
QzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovLAorCQkJCTBGNDY4MEQx
MTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8sCiAJCQkJMEY0Njgw
N0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovLAogCQkJCTBGNDY4MDgw
MTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEZEODJFMzcxNDFB
QjE0MjAwMTc5Qzk0IC8qIENvbXBhY3RKSVRDb2RlTWFwLmggKi8sCkBAIC0yMTY2LDYgKzIyNzcs
OCBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYyMUMyNzkxNEJFNzI3MzAwQURD
NjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLywKKwkJCQkwRjIxQzI3QTE0QkU3Mjcz
MDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovLAogCQkJCTBGMTVGMTVEMTRCN0E3M0Ew
MDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBC
OUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8q
IEFyZ0xpc3QuaCAqLywKQEAgLTI1MjUsNiArMjYzOCw4IEBACiAJCTk2OUEwNzhGMEVEMUQzQUUw
MEYxRjY4MSAvKiBieXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlv
bnMuaCAqLywKKwkJCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0lu
Zm8uaCAqLywKIAkJCQkwRjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMu
Y3BwICovLAogCQkJCTBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5o
ICovLAogCQkJCTBGOTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAq
LywKQEAgLTMwNzYsNyArMzE5MSwxNiBAQAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCNDMxMkRCOEE4MTAwQTlG
RTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1RjE0
QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29t
bW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDRDE0QkJCMTdE
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0
NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRz
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRU
aHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBD
b2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8q
IEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVC
NEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDg1LDcgKzMy
MDksMTEgQEAKIAkJCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJ
bmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyogR2xv
YmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4
NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJpdmVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhlY3V0aW9u
SGFybmVzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8q
IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdGMTRC
RUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjdCMjk0QTE0QzNDRDI5MDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QzE0QzNDRDQzMDA3QzNEQjEgLyogREZHQnl0ZUNv
ZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTAzLDYgKzMyMzEsMjQgQEAKIC8qIEVuZCBQ
QlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdl
dCBzZWN0aW9uICovCisJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNl
dHNFeHRyYWN0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0
b3IiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcy
IC8qIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1ld29y
a3MgKi8sCisJCQkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLywKKwkJ
CSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkw
RjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7
CisJCQluYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdE5hbWUgPSBK
U0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMEY0NjgwOEYx
NEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXByb2R1
Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CiAJCTE0MTIxMTFG
MEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovID0gewogCQkJaXNhID0gUEJYTmF0aXZlVGFy
Z2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1
NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRv
bSIgKi87CkBAIC0zMjI5LDExICszMzc1LDI5IEBACiAJCQkJMTRCRDU5QkUwQTNFOEY5MDAwQkFG
NTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJOTMyRjVCREEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAq
LywKIAkJCQk2NTExMjJGNzE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkw
RjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAor
CQkJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovLAogCQkJKTsK
IAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU2hlbGxT
Y3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8q
IEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL2xsaW50L0xvd0xl
dmVsQXNzZW1ibGVyLmFzbSIsCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNv
dXJjZXMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9M
TEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJ
CQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9m
ZnNldHMvXCJcblxuL3Vzci9iaW4vZW52IHJ1YnkgXCIke1NSQ1JPT1R9L29mZmxpbmVhc20vZ2Vu
ZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYlwiIFwiJHtTUkNST09UfS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbVwiIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9MTElu
dERlc2lyZWRPZmZzZXRzLmhcIlxuIjsKKwkJfTsKIAkJMzcxM0YwMTQxNDI5MDUyNDAwMzYzODdG
IC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzICovID0g
ewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKQEAgLTMzMzksNyArMzUwMyw3IEBACiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwot
CQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNfRElS
fS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7U1JD
Uk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2YVNjcmlw
dENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJcblxubWFrZSAtLW5v
LWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlXCIg
LWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNwdWBcbiI7CisJCQlzaGVsbFNjcmlwdCA9ICJt
a2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9kb2NzXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlXCJcblxuL2Jpbi9sbiAtc2ZoIFwiJHtTUkNST09UfVwiIEphdmFTY3JpcHRD
b3JlXG5leHBvcnQgSmF2YVNjcmlwdENvcmU9XCJKYXZhU2NyaXB0Q29yZVwiXG5leHBvcnQgQlVJ
TFRfUFJPRFVDVFNfRElSPVwiLi4vLi5cIlxuXG5tYWtlIC0tbm8tYnVpbHRpbi1ydWxlcyAtZiBc
IkphdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2VcIiAtaiBgL3Vzci9zYmluL3N5c2N0
bCAtbiBody5uY3B1YFxuXG4vdXNyL2Jpbi9lbnYgcnVieSBKYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FzbS5yYiBKYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAk
e0JVSUxUX1BST0RVQ1RTX0RJUn0vSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIExMSW50QXNzZW1i
bHkuaFxuIjsKIAkJfTsKIAkJOTMxOTU4NkIwOUQ5RjkxQTAwQTU2RkQ0IC8qIENoZWNrIEZvciBH
bG9iYWwgSW5pdGlhbGl6ZXJzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBo
YXNlOwpAQCAtMzM3NCw2ICszNTM4LDE0IEBACiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LworCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9
IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
KwkJCWZpbGVzID0gKAorCQkJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFEMEE0ODc5M0MwMDQ4MDI1
NSAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzYzMiw3ICszODA0LDE0IEBACiAJCQkJ
ODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRI
ZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAv
KiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwODMxNEJBNTcz
MTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0Njgw
Q0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5W
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyog
TExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QzE0QkNGNDYz
MDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjAx
NEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjBCODNCNDE0QkNGODYwMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUY2OUU4NkMzMTRDNkU1NTEwMDJDMkM2MiAvKiBOdW1iZXJPZkNvcmVzLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMzY1NCw2ICszODMzLDE2IEBACiAvKiBFbmQgUEJYU291cmNl
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5IHNl
Y3Rpb24gKi8KKwkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMEY0
NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi87CisJCQl0YXJnZXRQcm94
eSA9IDBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87
CisJCX07CisJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4
MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQl0
YXJnZXRQcm94eSA9IDBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVt
UHJveHkgKi87CisJCX07CiAJCTE0MTIxNEJGMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhUYXJnZXRE
ZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJCXRhcmdl
dCA9IDE0MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovOwpAQCAtMzY4Nyw2ICsz
ODc2LDE0OCBAQAogLyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTBGNDY4MDk2MTRCQTdFNUUw
MEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsK
KwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0Vf
U1RSSVAgPSBOTzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdD
Q19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0g
WUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNT
T1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIs
CisJCQkJKTsKKwkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5POworCQkJCUdDQ19W
RVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FS
Tl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJ
TkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlF
UzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFS
Q0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRf
UFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhT
KSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCU9O
TFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUp
IjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9
ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJD
SF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwOTcxNEJB
N0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhT
ID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZ
X1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2Fy
Zi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJ
R0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20u
YXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJ
VF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVT
ID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19X
QVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNo
PSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIp
L0xMSW50T2Zmc2V0cyQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NY
X0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRf
TkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BB
VEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJf
U0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4
MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9V
U0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsK
KwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1B
VCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251
OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJ
T04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0
X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19Q
Uk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOwor
CQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9Q
QVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9E
VUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwK
KwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVD
VF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVT
RVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJ
bnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9m
aWxpbmc7CisJCX07CisJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJD
SFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlE
RUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19M
QU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05T
ID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5n
LjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdD
Q19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9V
VF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7
CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWlj
dSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChI
RUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJH
RVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsK
KwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUQxNEJBN0ZEOTAw
QkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMg
Y29weSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODBBRTE0QkE3RkQ5
MDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3Vy
Y2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODBBRjE0
QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJp
dmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJ
MEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9O
QU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlv
bjsKKwkJfTsKIAkJMTQxMjExM0EwQTQ4Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovID0gewogCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewpAQCAtMzky
OCw2ICs0MjU5LDI4IEBACiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOUExNEJB
N0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFy
Z2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovID0geworCQkJaXNhID0gWENDb25maWd1
cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwOTYxNEJB
N0U1RTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAv
KiBSZWxlYXNlICovLAorCQkJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcg
Ki8sCisJCQkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkp
OworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUMxNEJBN0ZEOTAwQkZF
MjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJM
TEludCBPZmZzZXRzIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQli
dWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBE
ZWJ1ZyAqLywKKwkJCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJ
CQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MEIw
MTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFBy
b2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi8gPSB7CiAJCQlp
c2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShyZXZp
c2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2RlZmluZSBHTE9CQUxfVEhV
TktfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0xKSkK
ICNkZWZpbmUgUkVHRVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nh
c3Q8aW50cHRyX3Q+KC0yKSkKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+CisjaW5jbHVk
ZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVDb252ZW50aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgQnl0ZWNvZGVDb252ZW50aW9uc19oCisjZGVmaW5lIEJ5dGVjb2RlQ29udmVu
dGlvbnNfaAorCisvLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9u
cyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6CisvLyAg
ICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxs
RnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVy
RmlsZS5oLgorLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMg
ZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVz
IHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgorLy8gICAgICAweDQwMDAwMDAwLTB4N0ZG
RkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBp
biB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgorc3RhdGljIGNvbnN0IGludCBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7CisKKyNlbmRpZiAvLyBCeXRl
Y29kZUNvbnZlbnRpb25zX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNywxNyArMjcsNDAgQEAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJv
bUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkK
K3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5
dGVjb2RlSW5kZXgpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJ
bmRleDsKKyAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaW5zdHJ1Y3Rpb25b
NF0udS5jYWxsTGlua0luZm87CisgICAgCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNhbGxM
aW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCksIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJu
IENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKKyNlbmRpZgorfQorCiBDYWxsTGlua1N0YXR1cyBD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwog
ICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFC
TEUoVkFMVUVfUFJPRklMRVIpCi0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKAotICAgICAgICBw
cm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxs
ZWUuZ2V0KCksCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKGJ5dGVj
b2RlSW5kZXgpKTsKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mQ2FsbExpbmtJbmZv
cygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRl
Y29kZUluZGV4KTsKKyAgICAKKyAgICBpZiAocHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nh
c2UoYnl0ZWNvZGVJbmRleCkpCisgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygwLCB0cnVl
KTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBwcm9maWxlZEJsb2NrLT5nZXRDYWxs
TGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CisgICAgaWYgKCF0
YXJnZXQpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5
dGVjb2RlSW5kZXgpOworICAgIAorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQsIGZh
bHNlKTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKICNlbmRp
ZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNSArNDcsMTcgQEAgcHVi
bGljOgogICAgIAogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9j
ayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25z
dCB7IHJldHVybiAhIW1fY2FsbFRhcmdldDsgfQorICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJl
dHVybiAhIW1fY2FsbFRhcmdldCB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCi0gICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsVGFyZ2V0OyB9CisgICAgYm9v
bCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQogICAgIAogICAgIGJvb2wg
Y291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9
CiAgICAgCiAgICAgSlNGdW5jdGlvbiogY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fs
bFRhcmdldDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29t
cHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAgICAK
ICAgICBKU0Z1bmN0aW9uKiBtX2NhbGxUYXJnZXQ7CiAgICAgYm9vbCBtX2NvdWxkVGFrZVNsb3dQ
YXRoOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAj
aW5jbHVkZSA8c3RkaW8uaD4KQEAgLTU5LDggKzYwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiB1c2lu
ZyBuYW1lc3BhY2UgREZHOwogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJM
RShPUENPREVfU0FNUExJTkcpCi0KIHN0YXRpYyBVU3RyaW5nIGVzY2FwZVF1b3Rlcyhjb25zdCBV
U3RyaW5nJiBzdHIpCiB7CiAgICAgVVN0cmluZyByZXN1bHQgPSBzdHI7CkBAIC0zNTgsMTAgKzM1
NywxMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bjb2RlTGVu
Z3Roc1tleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtpXS51
Lm9wY29kZSldKQogICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7CiAKLSAgICBwcmludGYoIiVs
dSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNh
bGxlZSByZWdpc3RlcihzKVxuXG4iLAorICAgIHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rpb25zOyAl
bHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpOyAl
ZCB2YXJpYWJsZShzKVxuXG4iLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihp
bnN0cnVjdGlvbkNvdW50KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSksCi0gICAgICAgIHRoaXMs
IG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgICAgICB0aGlzLCBt
X251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX251bVZhcnMpOwogCiAgICAg
VmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4gPSBpbnN0cnVjdGlvbnMo
KS5iZWdpbigpOwogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGluc3RydWN0aW9ucygpLmVuZCgpOwpAQCAtODk4LDYgKzg5NywxNCBAQCB2b2lkIENvZGVCbG9j
azo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChl
eGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
InB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKKyAg
ICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlk
T3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTI5MSw4ICsxMjk4LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0
YXRlKiBleGVjLCBjbwogICAgIH0KIH0KIAotI2VuZGlmIC8vICFkZWZpbmVkKE5ERUJVRykgfHwg
RU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNT
CiBzdGF0aWMgSGFzaFNldDxDb2RlQmxvY2sqPiBsaXZlQ29kZUJsb2NrU2V0OwogI2VuZGlmCkBA
IC0xNDU5LDYgKzE0NjQsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tU
YWcsCiB7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1QYXJhbWV0ZXJzKCkpOwogICAg
IG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogICAgIAogICAg
IGlmIChvdGhlci5tX3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nh
cnkoKTsKQEAgLTE1MDcsNiArMTUxMyw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4
ZWN1dGFibGUqIG8KICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIAogICAgIG9wdGltaXplQWZ0
ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogCiAjaWYgRFVNUF9DT0RFX0JMT0NL
X1NUQVRJU1RJQ1MKICAgICBsaXZlQ29kZUJsb2NrU2V0LmFkZCh0aGlzKTsKQEAgLTE1MjQsNyAr
MTUzMSwxMSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2lmIEVOQUJMRShWRVJCT1NFX1ZB
TFVFX1BST0ZJTEUpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNlbmRpZgotICAgIAorCisj
aWYgRU5BQkxFKExMSU5UKSAgICAKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVn
aW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xM
SW50Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogI2lm
IEVOQUJMRShKSVQpCiAgICAgLy8gV2UgbWF5IGJlIGRlc3Ryb3llZCBiZWZvcmUgYW55IENvZGVC
bG9ja3MgdGhhdCByZWZlciB0byB1cyBhcmUgZGVzdHJveWVkLgogICAgIC8vIENvbnNpZGVyIHRo
YXQgdHdvIENvZGVCbG9ja3MgYmVjb21lIHVucmVhY2hhYmxlIGF0IHRoZSBzYW1lIHRpbWUuIFRo
ZXJlCkBAIC0xNzM2LDggKzE3NDcsNTcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25k
aXRpb25hbGx5KAogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5saW5raW5n
ID0gZmFsc2U7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgCisj
aWYgRU5BQkxFKExMSU5UKQorICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFs
RGF0YS0+aW50ZXJwcmV0ZXI7CisgICAgaWYgKCFpbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7Cisg
ICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNp
emUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBj
dXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zW2ldXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1
ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgeworICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlf
aWQ6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgICAgICAgICBpZiAo
IWN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1ckluc3Ry
dWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsK
KyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQgPSAwOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3Q6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bDoKKyAgICAgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0u
dS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2Vk
KGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAgICAgICAg
ICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdl
dCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY3VySW5z
dHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0
cnVjdGlvbls2XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3Ry
dWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJ
bnN0cnVjdGlvblswXS51Lm9wY29kZSA9IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5
X2lkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
cy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlv
biogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
Y3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsCisgICAgICAg
ICAgICAgICAgICAgfHwgaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBd
LnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKKyAgICAgICAgICAgIGlm
ICghY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5z
dHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAg
ICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9IDA7CisgICAgICAgIH0KKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9zLnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5mb3NbaV0uaXNMaW5r
ZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQobV9sbGludENhbGxMaW5rSW5mb3NbaV0uY2FsbGVlLmdl
dCgpKSkgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQorICAgICAgICAg
ICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IGNhbGwgZnJvbSAlcC5cbiIsIHRoaXMp
OworICAgICAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCEhbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFz
dFNlZW5DYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxh
c3RTZWVuQ2FsbGVlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZv
c1tpXS5sYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgICAgICB9CisgICAgfQorI2VuZGlmIC8v
IEVOQUJMRShMTElOVCkKKwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8vIENoZWNrIGlmIHdl
J3JlIG5vdCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAgICAgaWYgKCEoc2hvdWxk
SW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBtX2RmZ0RhdGEtPmxpdmVu
ZXNzSGFzQmVlblByb3ZlZCkpIHsKQEAgLTE4NTgsMTAgKzE5MTgsMTIgQEAgdm9pZCBDb2RlQmxv
Y2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bV9mdW5jdGlvbkRlY2xzLnNpemUoKTsgKytpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9m
dW5jdGlvbkRlY2xzW2ldKTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCi0gICAgZm9yIChzaXpl
X3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8
IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlv
bnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7Ci0gICAgZm9yIChzaXplX3Qg
c2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygp
W21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIGlmIChtX2dsb2JhbERhdGEt
PmludGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1f
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkK
KyAgICAgICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9w
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOworICAgICAgICBmb3IgKHNpemVfdCBzaXpl
ID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyAr
K2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygp
W21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKERGR19KSVQpCkBAIC0yMDcwLDYgKzIxMzIsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnVu
bGlua0NhbGxzKCkKIHsKICAgICBpZiAoISFtX2FsdGVybmF0aXZlKQogICAgICAgICBtX2FsdGVy
bmF0aXZlLT51bmxpbmtDYWxscygpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAg
IGlmIChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpKQorICAgICAgICAgICAgbV9s
bGludENhbGxMaW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgfQorI2VuZGlmCiAgICAgaWYgKCEo
bV9jYWxsTGlua0luZm9zLnNpemUoKSB8fCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpKSkK
ICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKQEAg
LTIwODQsMTAgKzIxNTIsMzkgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIAogdm9p
ZCBDb2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMoKQogeworI2lmIEVOQUJMRShMTElOVCkK
KyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJ
bnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+dW5s
aW5rKCk7CisjZW5kaWYKKyAgICBpZiAobV9pbmNvbWluZ0NhbGxzLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuOwogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcih0aGlzKTsKICAgICB3
aGlsZSAobV9pbmNvbWluZ0NhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0NhbGxzLmVuZCgpKQog
ICAgICAgICBtX2luY29taW5nQ2FsbHMuYmVnaW4oKS0+dW5saW5rKCptX2dsb2JhbERhdGEsIHJl
cGF0Y2hCdWZmZXIpOwogfQorCit1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4
ZWNTdGF0ZSogZXhlYywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQoreworI2lmIEVO
QUJMRShMTElOVCkKKyAgICBpZiAocmV0dXJuQWRkcmVzcy52YWx1ZSgpID49IGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X2JlZ2luKQorICAgICAgICAmJiByZXR1cm5BZGRyZXNzLnZhbHVlKCkg
PD0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZW5kKSkgeworICAgICAgICBBU1NFUlQoZXhl
Yy0+Y29kZUJsb2NrKCkpOworICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkgPT0gdGhp
cyk7CisgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkp
KTsKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gZXhlYy0+Y3VycmVudFZQQygp
OworICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb24pOworICAgICAgICByZXR1cm4gYnl0ZWNvZGVP
ZmZzZXQoaW5zdHJ1Y3Rpb24pOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OworI2VuZGlmCisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gMTsKKyAgICBW
ZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1f
cmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOworICAgIGlmICghY2FsbEluZGljZXMu
c2l6ZSgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNl
dD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCku
b2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OworfQogI2Vu
ZGlmCiAKIHZvaWQgQ29kZUJsb2NrOjpjbGVhckV2YWxDYWNoZSgpCkBAIC0yMTgzLDI0ICsyMjgw
LDQ1IEBAIGJvb2wgRnVuY3Rpb25Db2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRoREYKIAogdm9pZCBQ
cm9ncmFtQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAh
PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemlu
Z0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsK
ICAgICBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+
amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwogfQogCiB2b2lkIEV2YWxDb2Rl
QmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6
OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJ
VFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRp
Y19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGlt
aXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6Ompl
dHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5l
SklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkp
OwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRD
b2RlRm9yKCpnbG9iYWxEYXRhKCksIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3Qg
OiBDb2RlRm9yQ2FsbCk7CiB9CisKK3ZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6aml0Q29tcGlsZUlt
cGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkg
PT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFj
ZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3du
ZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEV2YWxD
b2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAg
ICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAg
IEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxF
dmFsRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShnbG9iYWxEYXRh
KTsKK30KKwordm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJs
ZSgpKS0+aml0Q29tcGlsZUZvcihnbG9iYWxEYXRhLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9y
Q29uc3RydWN0IDogQ29kZUZvckNhbGwpOworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVkFMVUVf
UFJPRklMRVIpCkBAIC0yMzAzLDYgKzI0MjEsMTggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBWYWx1
ZVByb2ZpbGVzKCkKIH0KICNlbmRpZgogCit2b2lkIENvZGVCbG9jazo6aGFuZGxlQnl0ZWNvZGVE
aXNjYXJkaW5nT3Bwb3J0dW5pdHkoKQoreworI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKSAm
JiAhRU5BQkxFKExMSU5UKQorICAgIGlmIChCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0
ZWRDb2RlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoISFhbHRlcm5hdGl2ZSgpKQorICAg
ICAgICBkaXNjYXJkQnl0ZWNvZGUoKTsKKyAgICBlbHNlCisgICAgICAgIGRpc2NhcmRCeXRlY29k
ZUxhdGVyKCk7CisjZW5kaWYKK30KKwogI2lmbmRlZiBOREVCVUcKIGJvb2wgQ29kZUJsb2NrOjp1
c2VzT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlEKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2
ICszMCw3IEBACiAjaWZuZGVmIENvZGVCbG9ja19oCiAjZGVmaW5lIENvZGVCbG9ja19oCiAKKyNp
bmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgi
CiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRl
ICJDb2RlT3JpZ2luLmgiCkBAIC01MCw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSklUV3JpdGVCYXJy
aWVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKdW1wVGFibGUu
aCIKKyNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkxpbmVJbmZvLmgi
CiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQcmVkaWN0aW9uVHJhY2tlci5oIgpAQCAt
NjUsMTYgKzY3LDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgIlN0cnVj
dHVyZVN0dWJJbmZvLmgiCiAKLS8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBv
cGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdl
czoKLS8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20g
dGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUg
UmVnaXN0ZXJGaWxlLmguCi0vLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMg
aW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVt
cG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCi0vLyAgICAgIDB4NDAwMDAw
MDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBl
bnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCi1zdGF0aWMgY29u
c3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKLQogbmFtZXNw
YWNlIEpTQyB7CiAKLSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgREZHQ29kZUJsb2Nr
czsKKyAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogCiAgICAgaW5saW5lIGludCB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoaW50IGFyZ3Vt
ZW50c1JlZ2lzdGVyKSB7IHJldHVybiBhcmd1bWVudHNSZWdpc3RlciAtIDE7IH0KIApAQCAtODMs
NiArODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMg
VW5jb25kaXRpb25hbEZpbmFsaXplciwgcHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgewog
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJ
VDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJs
aWM6CiAgICAgICAgIGVudW0gQ29weVBhcnNlZEJsb2NrVGFnIHsgQ29weVBhcnNlZEJsb2NrIH07
CiAgICAgcHJvdGVjdGVkOgpAQCAtMTIzLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgICAgICAgICBy
ZXN1bHQgPSByZXN1bHQtPmFsdGVybmF0aXZlKCk7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0
KTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpC
YXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUo
cmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
ICAgIH0KICNlbmRpZgpAQCAtMTM0LDExICsxMzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0jaWYgIWRlZmluZWQoTkRFQlVH
KSB8fCBFTkFCTEVfT1BDT0RFX1NBTVBMSU5HCiAgICAgICAgIHZvaWQgZHVtcChFeGVjU3RhdGUq
KSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZXMoY29uc3QgSW5zdHJ1Y3Rpb24q
KSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZShjb25zdCBjaGFyKiBuYW1lLCBj
b25zdCBJbnN0cnVjdGlvbiosIGludCBvcGVyYW5kKSBjb25zdDsKLSNlbmRpZgogCiAgICAgICAg
IGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KIApA
QCAtMTk0LDE1ICsxOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAq
KGJpbmFyeVNlYXJjaDxNZXRob2RDYWxsTGlua0luZm8sIHVuc2lnbmVkLCBnZXRNZXRob2RDYWxs
TGlua0luZm9CeXRlY29kZUluZGV4PihtX21ldGhvZENhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9t
ZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CiAK
LSAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5B
ZGRyZXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybklu
ZGV4VmVjdG9yOwotICAgICAgICAgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNl
dD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCku
b2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OwotICAgICAg
ICB9CisgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSosIFJldHVybkFk
ZHJlc3NQdHIpOwogCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Rm9yQ2FsbEF0SW5k
ZXgodW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKQEAgLTIyMywxMSArMjExLDE3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBtX2luY29taW5nQ2FsbHMucHVzaChp
bmNvbWluZyk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHZvaWQgbGlu
a0luY29taW5nQ2FsbChMTEludENhbGxMaW5rSW5mbyogaW5jb21pbmcpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLnB1c2goaW5jb21pbmcpOworICAgICAgICB9
CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogICAgICAgICAKICAgICAgICAgdm9pZCB1bmxpbmtJ
bmNvbWluZ0NhbGxzKCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi0jaWYgRU5B
QkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAg
ICAgdm9pZCBzZXRKSVRDb2RlTWFwKFBhc3NPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IGppdENv
ZGVNYXApCiAgICAgICAgIHsKICAgICAgICAgICAgIG1faml0Q29kZU1hcCA9IGppdENvZGVNYXA7
CkBAIC0yMzYsNyArMjMwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAg
ICAgIHJldHVybiBtX2ppdENvZGVNYXAuZ2V0KCk7CiAgICAgICAgIH0KKyNlbmRpZgogICAgICAg
ICAKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgdm9pZCBjcmVhdGVERkdEYXRhSWZOZWNl
c3NhcnkoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoISFtX2RmZ0RhdGEpCkBAIC0zMzUs
MTIgKzMzMSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEluc3Ry
dWN0aW9uKiByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocmV0
dXJuQWRkcmVzcyA+PSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICYmIHJldHVybkFkZHJlc3MgPCBp
bnN0cnVjdGlvbnMoKS5lbmQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5z
dHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAg
ICAgIH0KLSNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9u
KGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0
aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNOdW1lcmlj
Q29tcGFyZUZ1bmN0aW9uKCkgeyByZXR1cm4gbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0K
QEAgLTM1NCwxNyArMzQ5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAg
ICAgIG1fc2hvdWxkRGlzY2FyZEJ5dGVjb2RlID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICB2
b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCkKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCEhYWx0ZXJuYXRpdmUoKSkKLSAgICAgICAgICAgICAgICBkaXNjYXJkQnl0
ZWNvZGUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBkaXNjYXJkQnl0ZWNv
ZGVMYXRlcigpOwotICAgICAgICB9CisgICAgICAgIHZvaWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJk
aW5nT3Bwb3J0dW5pdHkoKTsKICAgICAgICAgCi0jaWZuZGVmIE5ERUJVRwogICAgICAgICBib29s
IHVzZXNPcGNvZGUoT3Bjb2RlSUQpOwotI2VuZGlmCiAKICAgICAgICAgdW5zaWduZWQgaW5zdHJ1
Y3Rpb25Db3VudCgpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25Db3VudDsgfQogICAgICAgICB2b2lk
IHNldEluc3RydWN0aW9uQ291bnQodW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCkgeyBtX2luc3Ry
dWN0aW9uQ291bnQgPSBpbnN0cnVjdGlvbkNvdW50OyB9CkBAIC0zODcsMTcgKzM3NCwyNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZSogZXhlY3V0YWJs
ZU1lbW9yeSgpIHsgcmV0dXJuIGdldEpJVENvZGUoKS5nZXRFeGVjdXRhYmxlTWVtb3J5KCk7IH0K
ICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBT
Y29wZUNoYWluTm9kZSopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCkgPSAw
OworICAgICAgICBib29sIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkludGVycHJl
dGVyVGh1bmspIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENv
ZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBqaXRDb21waWxlSW1wbChnbG9iYWxEYXRhKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiBy
ZXBsYWNlbWVudCgpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZH
KCkgPSAwOwogICAgICAgICBib29sIGhhc09wdGltaXplZFJlcGxhY2VtZW50KCkKICAgICAgICAg
ewotICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJ
VCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlw
ZSgpKSk7CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHJlcGxhY2VtZW50KCktPmdldEpJVFR5
cGUoKSA+IGdldEpJVFR5cGUoKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICAgICBp
ZiAocmVzdWx0KQogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRU
eXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFz
ZWxpbmVKSVQpOworICAgICAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29k
ZShyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQo
cmVwbGFjZW1lbnQoKSA9PSB0aGlzKTsKICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtNDU2LDE4
ICs0NTIsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjbGVhckV2YWxDYWNo
ZSgpOwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICB2b2lkIGFkZFByb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb24odW5zaWduZWQgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbikKICAg
ICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAg
ICAgICAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBwZW5kKHByb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0
aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAg
ICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24odW5zaWduZWQgZ2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+
Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25z
LmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgbV9nbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOwogICAg
ICAgICB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uQXRCeXRlY29k
ZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAg
ICAgICBMTEludENhbGxMaW5rSW5mbyogYWRkTExJbnRDYWxsTGlua0luZm8oKQorICAgICAgICB7
CisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvcy5hcHBlbmQoTExJbnRDYWxsTGlua0lu
Zm8oKSk7CisgICAgICAgICAgICByZXR1cm4gJm1fbGxpbnRDYWxsTGlua0luZm9zLmxhc3QoKTsK
KyAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBzZXROdW1i
ZXJPZlN0cnVjdHVyZVN0dWJJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZv
cy5ncm93KHNpemUpOyB9CkBAIC00NzYsOCArNDc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5mbyh1bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5z
dHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2dsb2JhbERhdGEtPmNhblVz
ZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9i
YWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKKyAgICAgICAgICAgIG1f
Z2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZl
SW5zdHJ1Y3Rpb24pKTsKICAgICAgICAgfQogICAgICAgICBHbG9iYWxSZXNvbHZlSW5mbyYgZ2xv
YmFsUmVzb2x2ZUluZm8oaW50IGluZGV4KSB7IHJldHVybiBtX2dsb2JhbFJlc29sdmVJbmZvc1tp
bmRleF07IH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5mb0F0Qnl0ZWNvZGVPZmZz
ZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAtNDg4LDYgKzQ4Niw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkTWV0aG9kQ2FsbExpbmtJbmZvcyh1bnNpZ25lZCBu
KSB7IEFTU0VSVChtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKTsgbV9tZXRob2RDYWxsTGlua0lu
Zm9zLmdyb3cobik7IH0KICAgICAgICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RDYWxsTGlu
a0luZm8oaW50IGluZGV4KSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5mb3NbaW5kZXhdOyB9
CisgICAgICAgIHNpemVfdCBudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MoKSB7IHJldHVybiBt
X21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpOyB9CiAjZW5kaWYKICAgICAgICAgCiAjaWYgRU5B
QkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtNTI4LDYgKzUyNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXRdLnUub3Bj
b2RlKSkgLSAxXS51LnByb2ZpbGUgPT0gcmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIH0KKyAgICAgICAgUHJlZGljdGVkVHlwZSB2YWx1ZVByb2ZpbGVQcmVkaWN0
aW9uRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gdmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgdW5zaWduZWQgdG90YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMoKQogICAgICAgICB7CkBA
IC01NTQsMTIgKzU1NywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJv
b2wgbGlrZWx5VG9UYWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQ
cm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAg
ICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5p
bXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5
Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgY291bGRUYWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2Rl
T2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9m
aWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2ln
bmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9uczo6Y291
bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkg
LyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VUaHJl
c2hvbGQ7CiAgICAgICAgIH0KQEAgLTU3OCwxMiArNTg1LDE2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UoaW50IGJ5
dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNh
c2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAg
cmV0dXJuIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dD
YXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4oc3BlY2lhbEZhc3RDYXNlQ291
bnQpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dD
YXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRv
VGFrZURlZXBlc3RTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVD
YXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwog
ICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENh
c2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAg
ICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgLSBzcGVjaWFsRmFzdENh
c2VDb3VudDsKQEAgLTU5Miw2ICs2MDMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAg
ICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQog
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHNsb3dD
YXNlQ291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50
ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBzbG93Q2FzZUNvdW50
ICsgc3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBAIC02NzcsNyArNjkwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIAogICAgICAgICBib29sIGFkZEZyZXF1ZW50RXhpdFNpdGUoY29uc3QgREZH
OjpGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQo
Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VS
VChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJl
dHVybiBtX2V4aXRQcm9maWxlLmFkZChzaXRlKTsKICAgICAgICAgfQogCkBAIC03ODIsNiArNzk1
LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJv
bShDb2RlQmxvY2sqIGFsdGVybmF0aXZlKTsKICAgICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0
YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgICAgICAKKyAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBj
b250cm9sbGluZyB3aGVuIEpJVHRpbmcga2lja3MgaW4sIGluIGEgbWl4ZWQgbW9kZQorICAgICAg
ICAvLyBleGVjdXRpb24gd29ybGQuCisgICAgICAgIAorICAgICAgICB2b2lkIGRvbnRKSVRBbnl0
aW1lU29vbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9
IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRBZnRlcldhcm1VcCgpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICB2b2lkIGppdFNvb24oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0
ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQzMl90IGxsaW50RXhlY3V0ZUNvdW50ZXIoKSBj
b25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9sbGludEV4ZWN1dGVDb3VudGVy
OworICAgICAgICB9CisgICAgICAgIAogICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xs
aW5nIHdoZW4gdGllcmVkIGNvbXBpbGF0aW9uIGtpY2tzIGluLiBUaGlzCiAgICAgICAgIC8vIGNv
bnRyb2xzIGJvdGggd2hlbiB0aGUgb3B0aW1pemluZyBjb21waWxlciBpcyBpbnZva2VkIGFuZCB3
aGVuIE9TUgogICAgICAgICAvLyBlbnRyeSBoYXBwZW5zLiBUd28gdHJpZ2dlcnMgZXhpc3Q6IHRo
ZSBsb29wIHRyaWdnZXIgYW5kIHRoZSByZXR1cm4KQEAgLTk3NCw2ICsxMDEwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zaG91bGREaXNjYXJkQnl0ZWNvZGU7CiAKICAgICBw
cm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERh
dGEmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RW
aXNpdG9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgp
OwogICAgICAgICAKQEAgLTk4Niw3ICsxMDIzLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgdGFsbHlGcmVxdWVudEV4aXRTaXRlcygpIHsgfQogI2VuZGlmCiAgICAgICAgIAotI2lm
ICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKICAgICAgICAgdm9p
ZCBkdW1wKEV4ZWNTdGF0ZSosIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJh
dG9yJiBiZWdpbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImKSBjb25zdDsK
IAogICAgICAgICBDU3RyaW5nIHJlZ2lzdGVyTmFtZShFeGVjU3RhdGUqLCBpbnQgcikgY29uc3Q7
CkBAIC05OTYsNyArMTAzMiw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaW50
R2V0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6
Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJp
bnRDYWxsT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpj
b25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmlu
dFB1dEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46
OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0OwotI2VuZGlmCiAgICAgICAg
IHZvaWQgdmlzaXRTdHJ1Y3R1cmVzKFNsb3RWaXNpdG9yJiwgSW5zdHJ1Y3Rpb24qIHZQQykgY29u
c3Q7CiAgICAgICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTA1Nyw5ICsxMDkyLDExIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IG1fc291cmNl
OwogICAgICAgICB1bnNpZ25lZCBtX3NvdXJjZU9mZnNldDsKIAotI2lmIEVOQUJMRShJTlRFUlBS
RVRFUikKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zOwogICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
czsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxMTEludENhbGxM
aW5rSW5mbywgOD4gbV9sbGludENhbGxMaW5rSW5mb3M7CisgICAgICAgIFNlbnRpbmVsTGlua2Vk
TGlzdDxMTEludENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlu
a0luZm8+ID4gbV9pbmNvbWluZ0xMSW50Q2FsbHM7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQog
ICAgICAgICBWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+IG1fc3RydWN0dXJlU3R1YkluZm9zOwpA
QCAtMTA3MCw5ICsxMTA3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgbV9qaXRDb2RlV2l0aEFyaXR5Q2hlY2s7CiAgICAgICAgIFNlbnRpbmVsTGlu
a2VkTGlzdDxDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4g
PiBtX2luY29taW5nQ2FsbHM7CiAjZW5kaWYKLSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFC
TEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICBPd25QdHI8Q29tcGFjdEpJVENv
ZGVNYXA+IG1faml0Q29kZU1hcDsKLSAgICAgICAgCisjZW5kaWYKKyNpZiBFTkFCTEUoREZHX0pJ
VCkKICAgICAgICAgc3RydWN0IFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uIHsKICAgICAgICAgICAg
IFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uKCkgeyB9CiAgICAgICAgICAgICAKQEAgLTExMzUsMTIg
KzExNzMsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgT3duUHRyPENvZGVCbG9jaz4g
bV9hbHRlcm5hdGl2ZTsKICAgICAgICAgCisgICAgICAgIGludDMyX3QgbV9sbGludEV4ZWN1dGVD
b3VudGVyOworICAgICAgICAKICAgICAgICAgaW50MzJfdCBtX2ppdEV4ZWN1dGVDb3VudGVyOwog
ICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXI7CiAgICAgICAgIHVp
bnQzMl90IG1fc3BlY3VsYXRpdmVGYWlsQ291bnRlcjsKICAgICAgICAgdWludDhfdCBtX29wdGlt
aXphdGlvbkRlbGF5Q291bnRlcjsKICAgICAgICAgdWludDhfdCBtX3Jlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyOwotCisgICAgICAgIAogICAgICAgICBzdHJ1Y3QgUmFyZURhdGEgewogICAgICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgcHVibGljOgpAQCAtMTIxMyw2
ICsxMjUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0
dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2Rl
Kik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJs
b2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhE
RkcoKTsKICNlbmRpZgpAQCAtMTI0Nyw2ICsxMjg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4
ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNv
bigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7
CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtMTI4NCw2ICsxMzI2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2Jq
ZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29t
cGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBs
YWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNl
bmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMCArMjcsNDkg
QEAKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
KyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitH
ZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkK
K3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5
dGVjb2RlSW5kZXgpOworICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CisjaWYgRU5BQkxFKExMSU5U
KQorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0
aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworICAgIAorICAgIGlmIChpbnN0cnVjdGlv
blswXS51Lm9wY29kZSA9PSBsbGludF9vcF9tZXRob2RfY2hlY2spCisgICAgICAgIGluc3RydWN0
aW9uKys7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3Ry
dWN0dXJlLmdldCgpOworICAgIGlmICghc3RydWN0dXJlKQorICAgICAgICByZXR1cm4gR2V0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsK
KyAgICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2st
Pmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAg
ICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBu
b3RGb3VuZCwgZmFsc2UpOworICAgIAorICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZURp
cmVjdCwgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCwgZmFsc2UpOworI2Vsc2UKKyAg
ICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90
Rm91bmQsIGZhbHNlKTsKKyNlbmRpZgorfQorCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9j
ayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShp
ZGVudCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlm
ICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAg
cmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRl
bnQpOworICAgIAogICAgIC8vIEZpcnN0IGNoZWNrIGlmIGl0IG1ha2VzIGVpdGhlciBjYWxscywg
aW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIHN1cGVyIGNhcmVmdWwsIG9yCiAgICAgLy8gaWYg
aXQncyBub3Qgc2V0IGF0IGFsbCwgaW4gd2hpY2ggY2FzZSB3ZSBwdW50LgogICAgIFN0cnVjdHVy
ZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2Rl
SW5kZXgpOwogICAgIGlmICghc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRT
dGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAg
cmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRl
bnQpOwogICAgIAogICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogbGlzdDsKICAg
ICBpbnQgbGlzdFNpemU7CkBAIC02MCwxOCArODksMTkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKAogICAgIH0KICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3RT
aXplOyArK2kpIHsKICAgICAgICAgaWYgKCFsaXN0LT5saXN0W2ldLmlzRGlyZWN0KQotICAgICAg
ICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTWFrZXNDYWxscywgU3RydWN0dXJlU2V0KCksIG5v
dEZvdW5kKTsKKyAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0
cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7CiAgICAgfQogICAgIAogICAgIC8vIE5leHQg
Y2hlY2sgaWYgaXQgdGFrZXMgc2xvdyBjYXNlLCBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUg
a2luZCBvZiBjYXJlZnVsLgogICAgIGlmIChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93
Q2FzZShieXRlY29kZUluZGV4KSkKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNT
bG93UGF0aCwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIEdldEJ5
SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsK
ICAgICAKICAgICAvLyBGaW5hbGx5IGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGRlcml2ZSBhbiBhY2Nl
c3Mgc3RyYXRlZ3kuCiAgICAgR2V0QnlJZFN0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fd2Fz
U2VlbkluSklUID0gdHJ1ZTsKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAg
ICBjYXNlIGFjY2Vzc191bnNldDoKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1
dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAg
ICAKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZjogewogICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5n
ZXQoKTsKQEAgLTEzMCw3ICsxNjAsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IoCiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlIC8vIEVOQUJMRShKSVQp
Ci0gICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCks
IG5vdEZvdW5kKTsKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1
Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEwICs0OSwxMSBAQCBwdWJsaWM6
CiAgICAgewogICAgIH0KICAgICAKLSAgICBHZXRCeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25z
dCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6ZV90IG9mZnNldCkKKyAgICBHZXRCeUlk
U3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6
ZV90IG9mZnNldCwgYm9vbCB3YXNTZWVuSW5KSVQpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkK
ICAgICAgICAgLCBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQpCiAgICAgICAgICwgbV9vZmZz
ZXQob2Zmc2V0KQorICAgICAgICAsIG1fd2FzU2VlbkluSklUKHdhc1NlZW5JbkpJVCkKICAgICB7
CiAgICAgICAgIEFTU0VSVCgoc3RhdGUgPT0gU2ltcGxlRGlyZWN0KSA9PSAob2Zmc2V0ICE9IG5v
dEZvdW5kKSk7CiAgICAgfQpAQCAtNzAsMTAgKzcxLDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBT
dHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0
OyB9CiAgICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAg
CisgICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBjb25zdCB7IHJldHVybiBtX3dhc1NlZW5JbkpJVDsg
fQorICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxM
SW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAg
ICAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsK
ICAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgYm9vbCBtX3dhc1NlZW5JbkpJVDsKIH07CiAKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RydWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0luc3RydWN0aW9uLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTQ2VsbDsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7
CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CisgICAgc3RydWN0IExMSW50Q2FsbExpbmtJbmZv
OwogICAgIHN0cnVjdCBWYWx1ZVByb2ZpbGU7CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTQ2LDYg
KzE0NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAgICAgc3RydWN0IEluc3RydWN0
aW9uIHsKKyAgICAgICAgSW5zdHJ1Y3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB1Lmpz
Q2VsbC5jbGVhcigpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihP
cGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVS
UFJFVEVSKQpAQCAtMTgyLDYgKzE4OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIElu
c3RydWN0aW9uKFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1bmMpIHsgdS5nZXR0
ZXJGdW5jID0gZ2V0dGVyRnVuYzsgfQogICAgICAgICAKKyAgICAgICAgSW5zdHJ1Y3Rpb24oTExJ
bnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykgeyB1LmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5r
SW5mbzsgfQorICAgICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBwcm9m
aWxlKSB7IHUucHJvZmlsZSA9IHByb2ZpbGU7IH0KIAogICAgICAgICB1bmlvbiB7CkBAIC0xOTEs
NyArMTk5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNl
PFN0cnVjdHVyZUNoYWluPiBzdHJ1Y3R1cmVDaGFpbjsKICAgICAgICAgICAgIFdyaXRlQmFycmll
ckJhc2U8SlNDZWxsPiBqc0NlbGw7CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYyBnZXR0ZXJGdW5jOworICAgICAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5r
SW5mbzsKICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZTsKKyAgICAgICAgICAgIHZv
aWQqIHBvaW50ZXI7CiAgICAgICAgIH0gdTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5m
by5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50
Q2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENhbGxMaW5r
SW5mb19oCisjZGVmaW5lIExMSW50Q2FsbExpbmtJbmZvX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYv
U2VudGluZWxMaW5rZWRMaXN0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1
Y3Rpb247CisKK3N0cnVjdCBMTEludENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRp
bmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4geworICAgIExMSW50Q2FsbExpbmtJbmZvKCkKKyAg
ICB7CisgICAgfQorICAgIAorICAgIH5MTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgICAg
ICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAg
ICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4gY2FsbGVlOyB9CisgICAgCisgICAgdm9pZCB1bmxp
bmsoKQorICAgIHsKKyAgICAgICAgY2FsbGVlLmNsZWFyKCk7CisgICAgICAgIG1hY2hpbmVDb2Rl
VGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CisgICAgICAgIGlmIChpc09uTGlzdCgp
KQorICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgfQorICAgIAorICAgIFdyaXRlQmFycmllcjxK
U0Z1bmN0aW9uPiBjYWxsZWU7CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGxhc3RTZWVu
Q2FsbGVlOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWNoaW5lQ29kZVRhcmdldDsKK307
CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gTExJbnRDYWxsTGlua0luZm9faAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0
dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRo
b2RDYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDYgKzM1LDExIEBAIE1ldGhvZENhbGxMaW5rU3RhdHVzIE1ldGhvZENhbGxMaW5rU3Rh
dHUKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5
dGVjb2RlSW5kZXgpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikK
KyAgICAvLyBOT1RFOiBUaGlzIGRvZXMgbm90IGhhdmUgYW4gTExJbnQgZmFsbC1iYWNrIGJlY2F1
c2UgTExJbnQgZG9lcyBub3QgZG8gYW55IG1ldGhvZAorICAgIC8vIGNhbGwgbGluayBjYWNoaW5n
LgorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKCkp
CisgICAgICAgIHJldHVybiBNZXRob2RDYWxsTGlua1N0YXR1cygpOworICAgIAogICAgIE1ldGhv
ZENhbGxMaW5rSW5mbyYgbWV0aG9kQ2FsbCA9IHByb2ZpbGVkQmxvY2stPmdldE1ldGhvZENhbGxM
aW5rSW5mbyhieXRlY29kZUluZGV4KTsKICAgICAKICAgICBpZiAoIW1ldGhvZENhbGwuc2VlbiB8
fCAhbWV0aG9kQ2FsbC5jYWNoZWRTdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgs
IDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkLCA5KSBcCiAgICAgICAgIG1hY3JvKG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uLCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWwsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkp
IFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX2dlbmVyaWMsIDkpIFwKICAgICAgICAgbWFj
cm8ob3BfZGVsX2J5X2lkLCA0KSBcCkBAIC0yMDIsNiArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHR5cGVkZWYgZW51bSB7IEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfSURfRU5V
TSkgfSBPcGNvZGVJRDsKICAgICAjdW5kZWYgT1BDT0RFX0lEX0VOVU0KIAorICAgIGNvbnN0IGlu
dCBtYXhPcGNvZGVMZW5ndGggPSA5OwogICAgIGNvbnN0IGludCBudW1PcGNvZGVJRHMgPSBvcF9l
bmQgKyAxOwogCiAgICAgI2RlZmluZSBPUENPREVfSURfTEVOR1RIUyhpZCwgbGVuZ3RoKSBjb25z
dCBpbnQgaWQjI19sZW5ndGggPSBsZW5ndGg7CkBAIC0yMTgsNyArMjIxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9JRChWRVJJRllfT1BDT0RFX0lEKTsKICAg
ICAjdW5kZWYgVkVSSUZZX09QQ09ERV9JRAogCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJM
RShMTElOVCkKICNpZiBDT01QSUxFUihSVkNUKSB8fCBDT01QSUxFUihJTlRFTCkKICAgICB0eXBl
ZGVmIHZvaWQqIE9wY29kZTsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDI3ICsyNyw2OSBAQAogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKIAogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKIAorUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxM
SW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRl
bnRpZmllciYgaWRlbnQpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAg
IFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwor
I2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxl
ZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7Cisg
ICAgaWYgKCFzdHJ1Y3R1cmUpCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3Jt
YXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0u
dS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkKSB7CisgICAgICAgIHNpemVfdCBvZmZzZXQg
PSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7Cisg
ICAgICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAs
IG9mZnNldCk7CisgICAgfQorICAgIAorICAgIEFTU0VSVChpbnN0cnVjdGlvblswXS51Lm9wY29k
ZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QKKyAgICAgICAgICAgfHwg
aW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsKTsKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGluc3RydWN0aW9u
WzZdLnUuc3RydWN0dXJlLmdldCgpOworICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IGluc3Ry
dWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCk7CisgICAgQVNTRVJUKG5ld1N0cnVjdHVy
ZSk7CisgICAgQVNTRVJUKGNoYWluKTsKKyAgICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbmV3U3Ry
dWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlm
IChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5m
b3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAKKyAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhTaW1wbGVUcmFuc2l0aW9uLCBzdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY2hhaW4sIG9m
ZnNldCk7CisjZWxzZQorICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAs
IDAsIDAsIG5vdEZvdW5kKTsKKyNlbmRpZgorfQorCiBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRC
bG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJB
TShpZGVudCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAg
IGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAg
ICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwg
aWRlbnQpOworICAgIAogICAgIGlmIChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2Fz
ZShieXRlY29kZUluZGV4KSkKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93
UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOwogICAgIAogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBz
dHViSW5mbyA9IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAg
IGlmICghc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21M
TEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgCiAgICAgc3dp
dGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAg
ICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5k
KTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNv
ZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVw
bGFjZTogewogICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFj
ZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTkzLDYgKzkzLDggQEAgcHVibGljOgogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJl
dHVybiBtX29mZnNldDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1
cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElk
ZW50aWZpZXImKTsKKyAgICAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZSogbV9v
bGRTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTG93
TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlICJT
dHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgpAQCAtMTE2LDI2ICsxMTcsMTYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZXhwZWN0ZWQgYnkgdGhlIGNhbGxlZS4KICovCiAKLSNp
Zm5kZWYgTkRFQlVHCiBzdGF0aWMgYm9vbCBzX2R1bXBzR2VuZXJhdGVkQ29kZSA9IGZhbHNlOwot
I2VuZGlmCiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZShi
b29sIGR1bXBzR2VuZXJhdGVkQ29kZSkKIHsKLSNpZm5kZWYgTkRFQlVHCiAgICAgc19kdW1wc0dl
bmVyYXRlZENvZGUgPSBkdW1wc0dlbmVyYXRlZENvZGU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJB
TShkdW1wc0dlbmVyYXRlZENvZGUpOwotI2VuZGlmCiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0
b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpCiB7Ci0jaWZuZGVmIE5ERUJVRwogICAgIHJldHVybiBz
X2R1bXBzR2VuZXJhdGVkQ29kZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9
CiAKIEpTT2JqZWN0KiBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQpAQCAtMTQ4LDEwICsx
MzksOCBAQCBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKIAogICAgIG1f
Y29kZUJsb2NrLT5zZXRJbnN0cnVjdGlvbkNvdW50KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5zaXplKCkpOwogCi0jaWZuZGVmIE5ERUJVRwogICAgIGlmIChzX2R1bXBzR2VuZXJhdGVkQ29k
ZSkKICAgICAgICAgbV9jb2RlQmxvY2stPmR1bXAobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSk7Ci0jZW5kaWYKIAogICAgIGlmICgobV9jb2RlVHlwZSA9PSBGdW5jdGlv
bkNvZGUgJiYgIW1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgJiYgIW1fY29kZUJs
b2NrLT51c2VzQXJndW1lbnRzKCkpIHx8IG1fY29kZVR5cGUgPT0gRXZhbENvZGUpCiAgICAgICAg
IHN5bWJvbFRhYmxlKCkuY2xlYXIoKTsKQEAgLTEyNzYsOSArMTI2NSw3IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBt
X2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
ICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgbV9jb2RlQmxvY2stPmFk
ZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlm
CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShyZXF1
aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2
ZV9nbG9iYWwpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsK
ICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBA
IC0xNDQwLDkgKzE0MjcsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJl
c29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUlu
Zm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRF
UikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0
aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0
UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxf
ZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
cHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50
KHByb3BlcnR5KSk7CkBAIC0xNDkwLDkgKzE0NzUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRk
R2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVO
QUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3Ry
dWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBWYWx1ZVByb2ZpbGUq
IHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3Bf
cmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNTExLDkgKzE0OTQsNyBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0TWV0aG9kQ2hlY2soCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikK
ICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlv
bnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0
UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZHN0LT5pbmRleCgpKTsKQEAgLTE1MzksOSArMTUyMCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0R2V0QXIKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2Rl
QmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KTsKLSNlbmRpZgogCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE1NTcsOSArMTUzNiw3IEBAIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnkKIAogUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElk
ZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5U
RVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24o
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIAogICAgIGVtaXRPcGNvZGUob3Bf
cHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBA
IC0xODQ4LDcgKzE4MjUsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
YWxsKAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxs
QXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJM
RShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50
Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Cisj
ZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25v
cmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2Zp
bGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0xOTUyLDcgKzE5MzMsMTEgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdAogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3Vu
dAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0
KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jl
c3VsdCk7CkBAIC0yMjEzLDcgKzIxOTgsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDYXRjaAogewogICAgIG1fdXNlc0V4Y2VwdGlvbnMgPSB0cnVlOwogI2lmIEVOQUJM
RShKSVQpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0
LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9k
eW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX2NhdGNoKSkgfTsKKyNlbHNlCiAgICAgSGFuZGxl
ckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwg
Q29kZUxvY2F0aW9uTGFiZWwoKSB9OworI2VuZGlmCiAjZWxzZQogICAgIEhhbmRsZXJJbmZvIGlu
Zm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygp
LnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGggfTsKICNlbmRp
ZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDQsOSArNjA0LDcgQEAgcHJp
dmF0ZToKICAgICB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShub2RlSW5kZXgpOwogICAgICAgICAK
LSAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsK
LSAgICAgICAgQVNTRVJUKHByb2ZpbGUpOwotICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rp
b24gPSBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgUHJlZGlj
dGVkVHlwZSBwcmVkaWN0aW9uID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT52
YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAj
aWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgICAgICBwcmludGYoIkR5bmFtaWMgW0Al
dSwgYmMjJXVdIHByZWRpY3Rpb246ICVzXG4iLCBub2RlSW5kZXgsIGJ5dGVjb2RlSW5kZXgsIHBy
ZWRpY3Rpb25Ub1N0cmluZyhwcmVkaWN0aW9uKSk7CiAjZW5kaWYKQEAgLTEwNDEsNiArMTAzOSw5
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKGJvb2wKICAgICAKICAgICAv
LyBJZiB3ZSBnZXQgaGVyZSB0aGVuIGl0IGxvb2tzIGxpa2Ugd2Ugc2hvdWxkIGRlZmluaXRlbHkg
aW5saW5lIHRoaXMgY29kZS4gUHJvY2VlZAogICAgIC8vIHdpdGggcGFyc2luZyB0aGUgY29kZSB0
byBnZXQgYnl0ZWNvZGUsIHNvIHRoYXQgd2UgY2FuIHRoZW4gcGFyc2UgdGhlIGJ5dGVjb2RlLgor
ICAgIC8vIE5vdGUgdGhhdCBpZiBMTEludCBpcyBlbmFibGVkLCB0aGUgYnl0ZWNvZGUgd2lsbCBh
bHdheXMgYmUgYXZhaWxhYmxlLiBBbHNvIG5vdGUKKyAgICAvLyB0aGF0IGlmIExMSW50IGlzIGVu
YWJsZWQsIHdlIG1heSBpbmxpbmUgYSBjb2RlIGJsb2NrIHRoYXQgaGFzIG5ldmVyIGJlZW4gSklU
dGVkCisgICAgLy8gYmVmb3JlIQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxv
Y2tDYWNoZS5nZXQoQ29kZUJsb2NrS2V5KGV4ZWN1dGFibGUsIGtpbmQpLCBleHBlY3RlZEZ1bmN0
aW9uLT5zY29wZSgpKTsKICAgICBpZiAoIWNvZGVCbG9jaykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTc0MSw3ICsxNzQyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
aywgbV9jdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobWV0aG9k
Q2FsbFN0YXR1cy5pc1NldCgpCi0gICAgICAgICAgICAgICAgJiYgIWdldEJ5SWRTdGF0dXMuaXNT
ZXQoKQorICAgICAgICAgICAgICAgICYmICFnZXRCeUlkU3RhdHVzLndhc1NlZW5JbkpJVCgpCiAg
ICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSkgewogICAgICAgICAgICAgICAgIC8vIEl0
J3MgbW9ub21vcnBoaWMgYXMgZmFyIGFzIHdlIGNhbiB0ZWxsLCBzaW5jZSB0aGUgbWV0aG9kX2No
ZWNrIHdhcyBsaW5rZWQKICAgICAgICAgICAgICAgICAvLyBidXQgdGhlIHNsb3cgcGF0aCAoaS5l
LiB0aGUgbm9ybWFsIGdldF9ieV9pZCkgbmV2ZXIgZmlyZWQuCkBAIC0xODEwLDcgKzE4MTEsOSBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2dldF9ieV9pZCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWQ6IHsKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbDogewogICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IGJh
c2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVy
UmVtYXBbY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZF07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDEwNTc3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExMSw2ICsxMTEsOCBAQCBpbmxpbmUgYm9vbCBjYW5Db21waWxlT3Bjb2RlKE9wY29k
ZUlEIG9wCiAgICAgY2FzZSBvcF9wdXRfc2NvcGVkX3ZhcjoKICAgICBjYXNlIG9wX2dldF9ieV9p
ZDoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX2RpcmVjdDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAg
ICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6CiAg
ICAgY2FzZSBvcF9qbXA6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDIxIEBAIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQogICAgIHVp
bnQzMl90IGV4aXRJbmRleCA9IGdsb2JhbERhdGEtPm9zckV4aXRJbmRleDsKICAgICBPU1JFeGl0
JiBleGl0ID0gY29kZUJsb2NrLT5vc3JFeGl0KGV4aXRJbmRleCk7CiAgICAgCisgICAgLy8gTWFr
ZSBzdXJlIGFsbCBjb2RlIG9uIG91ciBpbmxpbmUgc3RhY2sgaXMgSklUIGNvbXBpbGVkLiBUaGlz
IGlzIG5lY2Vzc2FyeSBzaW5jZQorICAgIC8vIHdlIG1heSBvcHQgdG8gaW5saW5lIGEgY29kZSBi
bG9jayBldmVuIGJlZm9yZSBpdCBoYWQgZXZlciBiZWVuIGNvbXBpbGVkIGJ5IHRoZQorICAgIC8v
IEpJVCwgYnV0IG91ciBPU1IgZXhpdCBpbmZyYXN0cnVjdHVyZSBjdXJyZW50bHkgb25seSB3b3Jr
cyBpZiB0aGUgdGFyZ2V0IG9mIHRoZQorICAgIC8vIE9TUiBleGl0IGlzIEpJVCBjb2RlLiBUaGlz
IGNvdWxkIGJlIGNoYW5nZWQgc2luY2UgdGhlcmUgaXMgbm90aGluZyBwYXJ0aWN1bGFybHkKKyAg
ICAvLyBoYXJkIGFib3V0IGRvaW5nIGFuIE9TUiBleGl0IGludG8gdGhlIGludGVycHJldGVyLCBi
dXQgZm9yIG5vdyB0aGlzIHNlZW1zIHRvIG1ha2UKKyAgICAvLyBzZW5zZSBpbiB0aGF0IGlmIHdl
J3JlIE9TUiBleGl0aW5nIGZyb20gaW5saW5lZCBjb2RlIG9mIGEgREZHIGNvZGUgYmxvY2ssIHRo
ZW4KKyAgICAvLyBwcm9iYWJseSBpdCdzIGEgZ29vZCBzaWduIHRoYXQgdGhlIHRoaW5nIHdlJ3Jl
IGV4aXRpbmcgaW50byBpcyBob3QuIEV2ZW4gbW9yZQorICAgIC8vIGludGVyZXN0aW5nbHksIHNp
bmNlIHRoZSBjb2RlIHdhcyBpbmxpbmVkLCBpdCBtYXkgbmV2ZXIgb3RoZXJ3aXNlIGdldCBKSVQK
KyAgICAvLyBjb21waWxlZCBzaW5jZSB0aGUgYWN0IG9mIGlubGluaW5nIGl0IG1heSBlbnN1cmUg
dGhhdCBpdCBvdGhlcndpc2UgbmV2ZXIgcnVucy4KKyAgICBmb3IgKENvZGVPcmlnaW4gY29kZU9y
aWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luOyBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsgY29k
ZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpIHsKKyAgICAgICAg
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJh
bWUtPmV4ZWN1dGFibGUuZ2V0KCkpCisgICAgICAgICAgICAtPmJhc2VsaW5lQ29kZUJsb2NrRm9y
KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5pc0NhbGwgPyBDb2RlRm9yQ2FsbCA6IENvZGVG
b3JDb25zdHJ1Y3QpCisgICAgICAgICAgICAtPmppdENvbXBpbGUoKmdsb2JhbERhdGEpOworICAg
IH0KKyAgICAKICAgICBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeSA9IDA7CiAgICAgaWYg
KGV4aXQubV9yZWNvdmVyeUluZGV4KQogICAgICAgICByZWNvdmVyeSA9ICZjb2RlQmxvY2stPnNw
ZWN1bGF0aW9uUmVjb3ZlcnkoZXhpdC5tX3JlY292ZXJ5SW5kZXggLSAxKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTA1Nzcw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkRGR09TUkV4aXQuaCIKICNpbmNsdWRlICJERkdSZXBhdGNoLmgiCisjaW5jbHVkZSAiSG9z
dENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUg
IklubGluZUFTTS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC01NjEsNDUgKzU2Miw2
IEBAIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHIKICAgICByZXR1cm4g
SlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BF
UkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVS
QVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7Ci0K
LSNpZiBDUFUoWDg2XzY0KQotYXNtICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgotICAgICJtb3YgJXIxMywg
JXJkaVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoWDg2KQotYXNtICgK
LSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00
MCglZWRpKSwgJWVkaVxuIgotICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgotICAgICJqbXAgIiBT
WU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3Rh
dGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikKLWFzbSAoCi0iLnRleHQiICJcbiIK
LSIuYWxpZ24gMiIgIlxuIgotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgot
Ii50aHVtYiIgIlxuIgotIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICI6IiAiXG4iCi0gICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgotICAgICJjcHkgcjAsIHI1
IiAiXG4iCi0gICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZW5kaWYKLQotRW5jb2RlZEpTVmFsdWUg
REZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3Rh
dGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRh
KCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Ci19Ci0KIHN0YXRpYyB2b2lkKiBoYW5kbGVIb3N0Q2Fs
bChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVy
RnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFj
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25T
cGFjZS5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9B
bGxvY2F0aW9uU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKIGNsYXNzIEhlYXA7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBj
bGFzcyBNYXJrZWRCbG9jazsKIAogY2xhc3MgQWxsb2NhdGlvblNwYWNlIHsKQEAgLTY3LDYgKzY4
LDggQEAgcHVibGljOgogICAgIHZvaWQgc2hyaW5rKCk7CiAgICAgCiBwcml2YXRlOgorICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiAgICAgZW51bSBBbGxvY2F0
aW9uRWZmb3J0IHsgQWxsb2NhdGlvbkNhbkZhaWwsIEFsbG9jYXRpb25NdXN0U3VjY2VlZCB9Owog
CiAgICAgdm9pZCogYWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzcsNyArODM3
LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZwogICAgICAgICBz
ZXRIaWdoV2F0ZXJNYXJrKG1heChwcm9wb3J0aW9uYWxCeXRlcywgbV9taW5CeXRlc1BlckN5Y2xl
KSk7CiAgICAgfQogICAgIEpBVkFTQ1JJUFRDT1JFX0dDX0VORCgpOwotCisgICAgCiAgICAgKCpt
X2FjdGl2aXR5Q2FsbGJhY2spKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
LmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
aAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNWYWx1ZTsKICAgICBjbGFzcyBMaXZlT2Jq
ZWN0SXRlcmF0b3I7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IE1hcmtlZEFyZ3VtZW50QnVmZmVyOwogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZTsKICAgICBjbGFz
cyBVU3RyaW5nOwpAQCAtMTM2LDExICsxMzcsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgZ2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cyhIYXNoU2V0PEpTQ2VsbCo+JiByb290
cyk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBBbGxvY2F0aW9uU3BhY2U7CisgICAgICAgIGZyaWVuZCBjbGFz
cyBDb2RlQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNz
IEJ1bXBTcGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwotICAgICAgICBm
cmllbmQgY2xhc3MgQ29kZUJsb2NrOwogCiAgICAgICAgIHNpemVfdCB3YXRlck1hcmsoKTsKICAg
ICAgICAgc2l6ZV90IGhpZ2hXYXRlck1hcmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya1N0YWNrLmNwcAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw3
IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbigKICNlbmRpZgogCiAg
ICAgQVNTRVJUKEhlYXA6OmlzTWFya2VkKGNlbGwpKTsKLQorICAgIAogICAgIGlmIChpc0pTU3Ry
aW5nKGNlbGwpKSB7CiAgICAgICAgIEpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8
SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBIZWFwOwogY2xhc3MgSlNDZWxs
OwogY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogY2xhc3MgV2Vha0dDSGFuZGxlOwogY2xhc3MgU2xvdFZpc2l0b3I7CiAKQEAgLTc3LDYgKzc4
LDggQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IHR5cGVuYW1lIEZ1
bmN0b3I6OlJldHVyblR5cGUgZm9yRWFjaEJsb2NrKCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICAvLyBbIDMyLi4uIDI1NiBd
CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlU3RlcCA9IE1hcmtlZEJsb2NrOjphdG9t
U2l6ZTsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VDdXRvZmYgPSAyNTY7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZp
c2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw2ICsxMTksOSBAQCBuYW1lc3BhY2UgSlNDICB7
CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBJbnN0cnVjdGlvbiogcmV0dXJuVlBD
KCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKTsgfQog
I2VuZGlmCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBJbnN0cnVjdGlvbiogY3VycmVudFZQ
QygpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KHRoaXNbUmVnaXN0
ZXJGaWxlOjpBcmd1bWVudENvdW50XS50YWcoKSk7IH0KKyNlbmRpZgogCiAgICAgICAgIHZvaWQg
c2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSkgeyBzdGF0aWNfY2FzdDxSZWdp
c3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWVdID0gY2FsbGVyRnJhbWU7IH0K
ICAgICAgICAgdm9pZCBzZXRTY29wZUNoYWluKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKSB7
IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluXSA9
IHNjb3BlQ2hhaW47IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjksNyArNjksNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2VuZGlmCiAKLSNkZWZpbmUgV1RGX1VT
RV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EIChFTkFCTEUoQ09NUFVURURfR09UT19JTlRF
UlBSRVRFUikgJiYgIWRlZmluZWQoX19sbHZtX18pKQorI2RlZmluZSBXVEZfVVNFX0dDQ19DT01Q
VVRFRF9HT1RPX1dPUktBUk9VTkQgKChFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikg
fHwgRU5BQkxFKExMSU5UKSkgJiYgIWRlZmluZWQoX19sbHZtX18pKQogCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCkBAIC01NDcsMTcgKzU0Nyw0MyBAQCBJbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIo
KQogewogfQogCi12b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKQor
SW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcigpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
SU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2VuYWJsZWQpCisgICAg
ICAgIGRlbGV0ZVtdIG1fb3Bjb2RlVGFibGU7CisjZW5kaWYKK30KKwordm9pZCBJbnRlcnByZXRl
cjo6aW5pdGlhbGl6ZShMTEludDo6RGF0YSogbGxpbnREYXRhLCBib29sIGNhblVzZUpJVCkKK3sK
KyAgICBVTlVTRURfUEFSQU0obGxpbnREYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oY2FuVXNlSklU
KTsKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5U
KQorI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyAgICAvLyBIYXZpbmcg
TExJbnQgZW5hYmxlZCwgYnV0IG5vdCBiZWluZyBhYmxlIHRvIHVzZSB0aGUgSklULCBhbmQgbm90
IGhhdmluZworICAgIC8vIGEgY29tcHV0ZWQgZ290byBpbnRlcnByZXRlciwgaXMgbm90IHN1cHBv
cnRlZC4gTm90IGJlY2F1c2Ugd2UgY2Fubm90CisgICAgLy8gc3VwcG9ydCBpdCwgYnV0IGJlY2F1
c2UgSSBkZWNpZGVkIHRvIGRyYXcgdGhlIGxpbmUgYXQgdGhlIG51bWJlciBvZgorICAgIC8vIHBl
cm11dGF0aW9ucyBvZiBleGVjdXRpb24gZW5naW5lcyB0aGF0IEkgd2FudGVkIHRoaXMgY29kZSB0
byBncm9rLgorICAgIEFTU0VSVChjYW5Vc2VKSVQpOworI2VuZGlmCiAgICAgaWYgKGNhblVzZUpJ
VCkgeworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJsZSA9IGxsaW50RGF0
YS0+b3Bjb2RlTWFwKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURz
OyArK2kpCisgICAgICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1fb3Bjb2RlVGFibGVbaV0s
IHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7CisjZWxzZQogICAgICAgICAvLyBJZiB0aGUgSklU
IGlzIHByZXNlbnQsIGRvbid0IHVzZSBqdW1wIGRlc3RpbmF0aW9ucyBmb3Igb3Bjb2Rlcy4KICAg
ICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpIHsK
ICAgICAgICAgICAgIE9wY29kZSBvcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19j
YXN0PHVpbnRwdHJfdD4oaSkpOwogICAgICAgICAgICAgbV9vcGNvZGVUYWJsZVtpXSA9IG9wY29k
ZTsKICAgICAgICAgfQorI2VuZGlmCiAgICAgfSBlbHNlIHsKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgICAgIG1fb3Bjb2RlVGFibGUgPSBuZXcgT3Bjb2RlW251bU9wY29kZUlEc107CisjZW5kaWYK
ICAgICAgICAgcHJpdmF0ZUV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVybiwgMCwgMCk7CiAgICAg
ICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQpAQCAt
NTY2LDcgKzU5Miw2IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBjYW5Vc2UK
ICAgICAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICAgICB9CiAjZWxzZQotICAgIFVOVVNFRF9QQVJB
TShjYW5Vc2VKSVQpOwogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2VuYWJsZWQgPSB0
cnVlOwogI2Vsc2UKQEAgLTY2Nyw5ICs2OTIsMTEgQEAgdm9pZCBJbnRlcnByZXRlcjo6ZHVtcFJl
Z2lzdGVycyhDYWxsRnJhbQogCiBib29sIEludGVycHJldGVyOjppc09wY29kZShPcGNvZGUgb3Bj
b2RlKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJM
RShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJM
RShMTElOVCkKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG9wY29kZSA+PSAw
ICYmIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUp
KSA8PSBvcF9lbmQ7CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2RlICE9IEhhc2hUcmFpdHM8T3Bj
b2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJhaXRzPE9wY29kZT46OmlzRGVs
ZXRlZFZhbHVlKG9wY29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJRFRhYmxlLmNvbnRhaW5zKG9w
Y29kZSk7CkBAIC03MjYsMTEgKzc1MywxMSBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRl
cjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAxLgogI2lmIEVOQUJMRShKSVQp
ICYmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBpZiAoY2FsbGVyRnJhbWUtPmdsb2JhbERhdGEo
KS5jYW5Vc2VKSVQoKSkKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1
cm5QQygpKTsKICAgICBlbHNlCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5i
eXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZWxpZiBFTkFCTEUo
SklUKQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxs
RnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRl
Y29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbHNlCiAg
ICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+
cmV0dXJuVlBDKCkpIC0gMTsKICNlbmRpZgpAQCAtNTE3MCwxMCArNTE5NywxMCBAQCB2b2lkIElu
dGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygp
KTsKICNpZiBFTkFCTEUoSklUKQogICAgIGVsc2UKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBj
YWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7Cisg
ICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChj
YWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogI2Vsc2UKLSAgICBi
eXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1l
LT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0
ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYK
ICAgICBsaW5lTnVtYmVyID0gY2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVPZmZzZXQgLSAxKTsKICAgICBzb3VyY2VJRCA9IGNhbGxlckNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTA1NzcwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRl
ICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJMTEludERhdGEu
aCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKIApAQCAt
NDUsNiArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFi
bGU7CiAgICAgY2xhc3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFi
bGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CkBAIC05
MCwxOSArOTIsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJbnRlcnByZXRlciB7
CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBmcmllbmQgY2xhc3Mg
SklUOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkQ2FsbDsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAg
ICBwdWJsaWM6CiAgICAgICAgIEludGVycHJldGVyKCk7CisgICAgICAgIH5JbnRlcnByZXRlcigp
OwogICAgICAgICAKLSAgICAgICAgdm9pZCBpbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKTsKKyAg
ICAgICAgdm9pZCBpbml0aWFsaXplKExMSW50OjpEYXRhKiwgYm9vbCBjYW5Vc2VKSVQpOwogCiAg
ICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlKCkgeyByZXR1cm4gbV9yZWdpc3RlckZp
bGU7IH0KICAgICAgICAgCiAgICAgICAgIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUo
Q09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRF
UlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlVGFi
bGVbaWRdOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBpZDsKQEAgLTExMiw3ICsxMTYsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKE9wY29kZSBv
cGNvZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNp
ZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7CisgICAgICAgICAgICByZXR1cm4g
bV9vcGNvZGVJRFRhYmxlLmdldChvcGNvZGUpOworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
SU5URVJQUkVURVIpCiAgICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7CiAgICAg
ICAgICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29kZSkpOwpAQCAtMTIyLDYg
KzEyOSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBvcGNvZGU7CiAj
ZW5kaWYKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBlbmFibGVkKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZW5hYmxlZDsKKyAgICAgICAgfQogCiAgICAgICAg
IGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIApAQCAtMTg5LDcgKzIwMSwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBSZWdpc3RlckZpbGUgbV9yZWdpc3RlckZpbGU7CiAgICAgICAgIAot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkK
KyAgICAgICAgT3Bjb2RlKiBtX29wY29kZVRhYmxlOyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29k
ZSBmb3IgY29tcGlsaW5nCisgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNv
ZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21waWxpbmcKKyNl
bGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICBPcGNvZGUgbV9v
cGNvZGVUYWJsZVtudW1PcGNvZGVJRHNdOyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3Ig
Y29tcGlsaW5nCiAgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRh
YmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21waWxpbmcKICNlbmRpZgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZp
bGUuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7CiAgICAgY2xhc3MgREZH
Q29kZUJsb2NrczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFz
cyBSZWdpc3RlckZpbGUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWdpc3RlckZp
bGUpOwpAQCAtODEsNiArODIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAg
cHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAg
ICAgICAgCiAgICAgICAgIGJvb2wgZ3Jvd1Nsb3dDYXNlKFJlZ2lzdGVyKik7CiAgICAgICAgIHZv
aWQgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CiAgICAgICAgIHZvaWQgYWRkVG9Db21taXR0ZWRC
eXRlQ291bnQobG9uZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxs
UmV0dXJuVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisKKyNp
bmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJJbmxpbmVBU00uaCIKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVNZXRob2RzLmgiCisjaW5jbHVkZSAi
U2NvcGVDaGFpbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNW
YWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KCk7CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BU
SU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOworCisj
aWYgQ1BVKFg4Nl82NCkKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKKyAgICAibW92ICVyMTMsICVy
ZGlcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKFg4NikKK2FzbSAoCisi
Lmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1C
T0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAo
JWVkaSksICVlZGlcbiIKKyAgICAibW92ICVlZGksIDQoJWVzcClcbiIKKyAgICAiam1wICIgU1lN
Qk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRl
KSAiXG4iCispOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpCithc20gKAorIi50ZXh0IiAiXG4iCisi
LmFsaWduIDIiICJcbiIKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpICJcbiIKK0hJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKKyIu
dGh1bWIiICJcbiIKKyIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAi
OiIgIlxuIgorICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKKyAgICAiY3B5IHIwLCByNSIg
IlxuIgorICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VuZGlmCisKK2V4dGVybiAiQyIgRW5jb2Rl
ZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENh
bGxSZXR1cm5WYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKyNkZWZpbmUgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisK
KyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgi
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBDQUxMSU5HX0NPTlZFTlRJT05fSVNf
U1REQ0FMTAorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBDREVDTAorI2Vs
c2UKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04KKyNlbmRpZgorCituYW1l
c3BhY2UgSlNDIHsKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9W
QUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOworfQorCisjZW5kaWYgLy8gSG9z
dENhbGxSZXR1cm5WYWx1ZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJl
dmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1h
aW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3Byb2ZpbGVfd2lsbF9jYWxsKQogICAgICAg
ICBERUZJTkVfT1Aob3BfcHVzaF9uZXdfc2NvcGUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNo
X3Njb3BlKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklO
RV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaW5kZXgpCiAg
ICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsKQpAQCAtNDg3LDYgKzQ4OSw4IEBAIHZvaWQg
SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wb3N0X2luYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfcmVzb2x2ZV9nbG9iYWwpCkBAIC01MjYsNiArNTMwLDEwIEBAIHZv
aWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAKIEpJVENvZGUgSklUOjpwcml2YXRl
Q29tcGlsZShDb2RlUHRyKiBmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaykKIHsKKyNpZiBFTkFCTEUo
SklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiQ29tcGlsaW5nIEpJVCBjb2RlIVxuIik7Cisj
ZW5kaWYKKyAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiAgICAgbV9jYW5CZU9wdGlt
aXplZCA9IG1fY29kZUJsb2NrLT5jYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC02OTAs
OCArNjk4LDEyIEBAIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAg
ICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1
YkluZm8obV9tZXRob2RDYWxsQ29tcGlsYXRpb25JbmZvW2ldLnByb3BlcnR5QWNjZXNzSW5kZXgp
LmNhbGxSZXR1cm5Mb2NhdGlvbjsKICAgICB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBp
ZiAobV9jYW5CZU9wdGltaXplZCkgeworI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJ
TlQpCisgICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAg
IHx8IHRydWUKKyNlbmRpZgorICAgICAgICApIHsKICAgICAgICAgQ29tcGFjdEpJVENvZGVNYXA6
OkVuY29kZXIgaml0Q29kZU1hcEVuY29kZXI7CiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IG1fbGFiZWxzLnNpemUoKTsgKytieXRlY29k
ZU9mZnNldCkgewogICAgICAgICAgICAgaWYgKG1fbGFiZWxzW2J5dGVjb2RlT2Zmc2V0XS5pc1Nl
dCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEwNTc3
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKSVRDb2RlKCkgeyB9
CiAjZW5kaWYKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gSklUVHlwZSB7IEhvc3RDYWxsVGh1
bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsKKyAgICAgICAgZW51bSBKSVRUeXBlIHsgTm9uZSwg
SG9zdENhbGxUaHVuaywgSW50ZXJwcmV0ZXJUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9Owog
ICAgICAgICAKICAgICAgICAgc3RhdGljIEpJVFR5cGUgYm90dG9tVGllckpJVCgpCiAgICAgICAg
IHsKQEAgLTY2LDggKzY2LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJu
IERGR0pJVDsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGljIGJvb2wgaXNPcHRp
bWl6aW5nSklUKEpJVFR5cGUgaml0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGppdFR5cGUgPT0gREZHSklUOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMg
Ym9vbCBpc0Jhc2VsaW5lQ29kZShKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBqaXRUeXBlID09IEludGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBCYXNl
bGluZUpJVDsKKyAgICAgICAgfQorICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBK
SVRDb2RlKCkKKyAgICAgICAgICAgIDogbV9qaXRUeXBlKE5vbmUpCiAgICAgICAgIHsKICAgICAg
ICAgfQogCkBAIC03NSw2ICs4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgOiBt
X3JlZihyZWYpCiAgICAgICAgICAgICAsIG1faml0VHlwZShqaXRUeXBlKQogICAgICAgICB7Cisg
ICAgICAgICAgICBBU1NFUlQoaml0VHlwZSAhPSBOb25lKTsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgYm9vbCBvcGVyYXRvciAhKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURHJpdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVREcml2ZXIuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVREcml2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDIxIEBACiAj
aW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNp
bmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCiAKIG5hbWVzcGFj
ZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgogaW5saW5lIGJvb2wg
aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8
Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklU
VHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlw
ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2Fu
VXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+dW5s
aW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsK
ICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVk
ID0gREZHOjp0cnlDb21waWxlKGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7
CkBAIC01NSwxMCArNjEsNyBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShK
U0dsCiAgICAgICAgIH0KICAgICAgICAgaml0Q29kZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0
YSwgY29kZUJsb2NrLmdldCgpKTsKICAgICB9Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcp
Ci0gICAgaWYgKCFCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAg
ICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNl
bmRpZgorICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHko
KTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKCkpOwogICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtNjYsOSArNjksMTQgQEAgaW5saW5l
IGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbAogCiBpbmxpbmUgYm9vbCBqaXRDb21w
aWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRy
PEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHImIGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUq
JiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRU
eXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAg
IGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpE
RkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlRnVuY3Rpb24oZ2xv
YmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2sp
OwpAQCAtODMsMTEgKzkxLDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHBy
b3ByaQogICAgICAgICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERh
dGEsIGNvZGVCbG9jay5nZXQoKSwgJmppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgfQotI2lm
ICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1
bXBzR2VuZXJhdGVkQ29kZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlz
Y2FyZGluZ09wcG9ydHVuaXR5KCk7Ci0jZW5kaWYKLSAgICAKKyAgICBjb2RlQmxvY2stPmhhbmRs
ZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRD
b2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRy
dWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJ
KHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxl
ciBnZW5lcmljVGhyb3coSlNHbG9iYWxEYQogCiBFeGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhj
ZXB0aW9uVmFsdWUsIFJldHVybkFkZHJlc3NQdHIgZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1
cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNh
bGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAg
ICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFs
dWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1
bHRMb2NhdGlvbikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0
dWJzLmNwcAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MTMsNyArMTkxMyw3IEBAIERFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20KICAgICB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4ID0gc3RhY2tGcmFtZS5hcmdzWzBdLmludDMyKCk7CiAKICNpZiBFTkFCTEUoSklUX1ZFUkJP
U0VfT1NSKQotICAgIHByaW50ZigiRW50ZXJlZCBvcHRpbWl6ZV9mcm9tX2xvb3Agd2l0aCBleGVj
dXRlQ291bnRlciA9ICVkLCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6
YXRpb25EZWxheUNvdW50ZXIgPSAldVxuIiwgY29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigp
LCBjb2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCksIGNvZGVCbG9jay0+b3B0
aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOworICAgIHByaW50ZigiJXA6IEVudGVyZWQgb3B0aW1p
emVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRy
eUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9j
aywgY29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudGVyKCksIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkp
OwogI2VuZGlmCiAKICAgICBpZiAoY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgp
KSB7CkBAIC0yMTY4LDQ1ICsyMTY4LDEzIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBv
cF9jb25zdHJ1Y3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1pbmxpbmUgQ2FsbEZyYW1lKiBh
cml0eUNoZWNrRm9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVy
RmlsZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQotewotICAgIEpTRnVuY3Rpb24qIGNh
bGxlZSA9IGFzRnVuY3Rpb24oY2FsbEZyYW1lLT5jYWxsZWUoKSk7Ci0gICAgQVNTRVJUKCFjYWxs
ZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwotICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNh
bGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOwotICAgIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMoKTsKLQotICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRo
ZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2Fs
bGVyLgotICAgIGlmICghcmVnaXN0ZXJGaWxlLT5ncm93KGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkg
KyBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+bV9udW1DYWxs
ZWVSZWdpc3RlcnMpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEFTU0VSVChhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKLQotICAg
IC8vIFRvbyBmZXcgYXJndW1lbnRzIC0tIGNvcHkgY2FsbCBmcmFtZSBhbmQgYXJndW1lbnRzLCB0
aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1bWVudHMgd2l0aCB1bmRlZmluZWQuCi0gICAgc2l6ZV90
IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpczsKLSAgICBSZWdpc3Rlciogc3JjID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKTsK
LSAgICBSZWdpc3RlciogZHN0ID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIGRlbHRhOwotCi0g
ICAgaW50IGk7Ci0gICAgaW50IGVuZCA9IC1DYWxsRnJhbWU6Om9mZnNldEZvcihhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyk7Ci0gICAgZm9yIChpID0gLTE7IGkgPj0gZW5kOyAtLWkpCi0gICAg
ICAgIGRzdFtpXSA9IHNyY1tpXTsKLQotICAgIGVuZCAtPSBkZWx0YTsKLSAgICBmb3IgKCA7IGkg
Pj0gZW5kOyAtLWkpCi0gICAgICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBDYWxs
RnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGRzdCk7Ci0gICAgQVNTRVJU
KCh2b2lkKiluZXdDYWxsRnJhbWUgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7Ci0gICAgcmV0dXJu
IG5ld0NhbGxGcmFtZTsKLX0KLQogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxf
YXJpdHlDaGVjaykKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAK
ICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogCi0gICAg
Q2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBhcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tG
cmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDYWxsKTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxG
cmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJh
bWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CiAgICAgaWYgKCFuZXdDYWxsRnJhbWUpCiAg
ICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0YWNrRnJhbWUs
IGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9y
KGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOwogCkBAIC0yMjE5LDcgKzIxODcsNyBAQCBERUZJ
TkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxs
RnJhbWUgPSBhcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUs
IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9u
U2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZp
bGUsIENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJh
bWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJh
bWUtPmNhbGxlckZyYW1lKCkpKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
U0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiwxMCBA
QAogI2lmbmRlZiBKU0ludGVyZmFjZUpJVF9oCiAjZGVmaW5lIEpTSW50ZXJmYWNlSklUX2gKIAor
I2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAj
aW5jbHVkZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpT
VmFsdWUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlJlZ2lzdGVy
RmlsZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24u
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50Q29tbW9uX2gKKyNkZWZpbmUgTExJ
bnRDb21tb25faAorCisjZGVmaW5lIExMSU5UX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNkZWZpbmUg
TExJTlRfSEVMUEVSX1RSQUNJTkcgMAorCisjZW5kaWYgLy8gTExJbnRDb21tb25faAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKKwor
I2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAi
TG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wY29kZS5oIgorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworRGF0YTo6RGF0YSgpCisgICAgOiBtX2V4Y2VwdGlv
bkluc3RydWN0aW9ucyhuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsgMV0pCisgICAg
LCBtX29wY29kZU1hcChuZXcgT3Bjb2RlW251bU9wY29kZUlEc10pCit7CisgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyArK2kpCisgICAgICAgIG1fZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Ro
cm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUpOworI2RlZmluZSBPUENPREVfRU5UUlkob3Bjb2Rl
LCBsZW5ndGgpIG1fb3Bjb2RlTWFwW29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF8jI29wY29kZSk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9FTlRSWSk7CisjdW5k
ZWYgT1BDT0RFX0VOVFJZCit9CisKK0RhdGE6On5EYXRhKCkKK3sKKyAgICBkZWxldGVbXSBtX2V4
Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBkZWxldGVbXSBtX29wY29kZU1hcDsKK30KKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgTExJbnREYXRhX2gKKyNkZWZpbmUgTExJbnREYXRhX2gKKworI2luY2x1ZGUg
Ik9wY29kZS5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCituYW1lc3BhY2UgSlNDIHsK
Kworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisjaWYgRU5BQkxF
KExMSU5UKQorY2xhc3MgRGF0YSB7CitwdWJsaWM6CisgICAgRGF0YSgpOworICAgIH5EYXRhKCk7
CisgICAgCisgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgfQorICAgIAorICAg
IE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX29wY29kZU1hcDsK
KyAgICB9Citwcml2YXRlOgorICAgIEluc3RydWN0aW9uKiBtX2V4Y2VwdGlvbkluc3RydWN0aW9u
czsKKyAgICBPcGNvZGUqIG1fb3Bjb2RlTWFwOworfTsKKyNlbHNlIC8vIEVOQUJMRShMTElOVCkK
KworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Npbmctbm9yZXR1cm4iCisjZW5k
aWYKKworY2xhc3MgRGF0YSB7CitwdWJsaWM6CisgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbklu
c3RydWN0aW9ucygpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9
Cit9OworCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9w
CisjZW5kaWYKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludERhdGFfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5
cG9pbnRzLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJKSVRDb2RlLmgiCisj
aW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKKyNpbmNs
dWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
TExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSklUQ29kZSYgaml0Q29kZSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0eUNoZWNrKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5j
YW5Vc2VKSVQoKSkgeworICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAg
ICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpKSkpOworICAg
ICAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8
dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaykpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNv
bnN0cnVjdCk7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9B
c3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
cHJvbG9ndWUpKSkpOworICAgICAgICBhcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlf
Y2hlY2spKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoa2luZCA9PSBD
b2RlRm9yQ2FsbCkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENU
SVN0dWIoZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVy
cHJldGVyVGh1bmspOworICAgICAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHVi
KGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7
CisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9y
Q29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmsp
OworICAgIGFyaXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKK30KKwordm9pZCBnZXRFdmFs
RW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUpCit7
CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUgPSBK
SVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X2V2YWxfcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAg
IGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dl
bmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQorCit2b2lkIGdldFByb2dy
YW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSYgaml0Q29kZSkK
K3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaml0Q29kZSA9
IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZN
YW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKHByb2dyYW1FbnRy
eVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cit9CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RW50cnlwb2ludHNfaAorI2RlZmlu
ZSBMTEludEVudHJ5cG9pbnRzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYg
RU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXZhbENvZGVCbG9jazsKK2NsYXNzIEpJVENvZGU7Citj
bGFzcyBKU0dsb2JhbERhdGE7CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI7CitjbGFzcyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWY7CitjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOworCituYW1lc3Bh
Y2UgTExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLCBKSVRDb2RlJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBh
cml0eUNoZWNrKTsKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29k
ZSYpOwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBKSVRDb2RlJik7
CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBF
dmFsQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRFdmFsRW50cnlwb2lu
dChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworaW5saW5lIHZvaWQgZ2V0RW50cnlwb2ludChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb2dyYW1Db2RlQmxvY2sqLCBKSVRDb2RlJiBqaXRD
b2RlKQoreworICAgIGdldFByb2dyYW1FbnRyeXBvaW50KGdsb2JhbERhdGEsIGppdENvZGUpOwor
fQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKKworI2VuZGlmIC8vIExMSW50RW50cnlwb2ludHNfaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25z
LmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNs
dWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkpJ
VEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgIkxvd0xl
dmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisK
K3ZvaWQgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5U
X0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMuXG4iLCBn
bG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmlj
VGhyb3coCisgICAgICAgIGdsb2JhbERhdGEsIGV4ZWMtPmNhbGxlckZyYW1lKCksIGdsb2JhbERh
dGEtPmV4Y2VwdGlvbiwKKyAgICAgICAgZXhlYy0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2NrKCkt
PmJ5dGVjb2RlT2Zmc2V0KGV4ZWMtPmNhbGxlckZyYW1lKCksIGV4ZWMtPnJldHVyblBDKCkpKTsK
K30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0
YXRlKiBleGVjKQoreworICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkubGxpbnREYXRhLmV4
Y2VwdGlvbkluc3RydWN0aW9ucygpOworfQorCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhF
eGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5H
CisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKHJldHVyblRvVGhyb3cpLlxuIiwg
Z2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJp
Y1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVj
LT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJu
IGdsb2JhbERhdGEtPmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKwordm9p
ZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAg
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElO
VF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChjYWxs
VG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5k
aWYKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0
aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAg
ICAKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZHVyaW5nX2Nh
bGxfdHJhbXBvbGluZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5k
aWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RXhjZXB0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEV4Y2VwdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExM
SW50RXhjZXB0aW9uc19oCisjZGVmaW5lIExMSW50RXhjZXB0aW9uc19oCisKKyNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBFTkFC
TEUoTExJTlQpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3Qg
SW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKKy8vIFRocm93IHRoZSBjdXJyZW50
bHkgYWN0aXZlIGV4Y2VwdGlvbiBpbiB0aGUgY29udGV4dCBvZiB0aGUgY2FsbGVyJ3MgY2FsbCBm
cmFtZS4KK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKEV4ZWNTdGF0ZSopOworCisvLyBU
ZWxscyB5b3Ugd2hlcmUgdG8ganVtcCB0byBpZiB5b3Ugd2FudCB0byByZXR1cm4tdG8tdGhyb3cs
IGFmdGVyIHlvdSd2ZSBhbHJlYWR5CisvLyBzZXQgdXAgYWxsIGluZm9ybWF0aW9uIG5lZWRlZCB0
byB0aHJvdyB0aGUgZXhjZXB0aW9uLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3dGb3JUaHJv
d25FeGNlcHRpb24oRXhlY1N0YXRlKik7CisKKy8vIFNhdmVzIHRoZSBjdXJyZW50IFBDIGluIHRo
ZSBnbG9iYWwgZGF0YSBmb3Igc2FmZS1rZWVwaW5nLCBhbmQgZ2l2ZXMgeW91IGEgUEMKKy8vIHRo
YXQgeW91IGNhbiB0ZWxsIHRoZSBpbnRlcnByZXRlciB0byBnbyB0bywgd2hpY2ggd2hlbiBhZHZh
bmNlZCBiZXR3ZWVuIDEKKy8vIGFuZCA5IHNsb3RzIHdpbGwgZ2l2ZSB5b3UgYW4gImluc3RydWN0
aW9uIiB0aGF0IHRocmVhZHMgdG8gdGhlIGludGVycHJldGVyJ3MKKy8vIGV4Y2VwdGlvbiBoYW5k
bGVyLiBOb3RlIHRoYXQgaWYgeW91IGdpdmUgaXQgdGhlIFBDIGZvciBleGNlcHRpb24gaGFuZGxp
bmcsCisvLyBpdCdzIHNtYXJ0IGVub3VnaCB0byBqdXN0IHJldHVybiB0aGF0IFBDIHdpdGhvdXQg
ZG9pbmcgYW55dGhpbmcgZWxzZTsgdGhpcworLy8gbGV0cyB5b3UgdGhyZWFkIGV4Y2VwdGlvbiBo
YW5kbGluZyB0aHJvdWdoIGNvbW1vbiBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgYnkKKy8vIG90aGVy
IGhlbHBlcnMuCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVj
dGlvbiopOworCisvLyBVc2UgdGhpcyB3aGVuIHlvdSdyZSB0aHJvd2luZyB0byBhIGNhbGwgdGh1
bmsuCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOworCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2Vu
ZGlmIC8vIExMSW50RXhjZXB0aW9uc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0Mjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50SGVscGVycy5oIgorCisjaWYgRU5B
QkxFKExMSU5UKQorCisjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiQ2FsbEZyYW1l
LmgiCisjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1
cm5WYWx1ZS5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklULmgiCisj
aW5jbHVkZSAiSklURHJpdmVyLmgiCisjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVk
ZSAiSlNCeXRlQXJyYXkuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgor
I2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0YXRpY1Nj
b3BlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1ZhbHVlLmgi
CisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIK
KyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworI2RlZmluZSBMTElOVF9P
UChpbmRleCkgKGV4ZWMtPnVuY2hlY2tlZFIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisjZGVmaW5l
IExMSU5UX09QX0MoaW5kZXgpIChleGVjLT5yKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorCisjZGVm
aW5lIExMSU5UX1JFVFVSTl9UV08oZmlyc3QsIHNlY29uZCkgZG8geyAgICAgICBcCisgICAgICAg
IHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgdm9pZCogYTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAg
dm9pZCogYjsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9IHBhaXI7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpbnQ2NF90IGk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gX19ydF91OyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmEgPSBmaXJz
dDsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmIgPSBzZWNvbmQ7
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX3J0X3UuaTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRf
RU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCBleGVjKQorCisjZGVmaW5lIExMSU5UX1RI
Uk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIEpTR2xvYmFsRGF0YSYgX190X2dsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7ICAg
ICAgICBcCisgICAgICAgIF9fdF9nbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Ro
cm93KTsgICAgICAgICAgICBcCisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAo
ZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCkgZG8geyAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2Vw
dGlvbikpIHsgICBcCisgICAgICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRf
RU5EKCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tf
RVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBM
TElOVF9CUkFOQ0gob3Bjb2RlLCBjb25kaXRpb24pIGRvIHsgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBib29sIF9fYl9jb25kaXRpb24gPSAoY29uZGl0aW9uKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoX19iX2NvbmRpdGlvbikgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0g
cGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5vcGVyYW5kOyAgICAgICAgXAorICAgICAg
ICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcGNvZGUpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVm
aW5lIExMSU5UX1JFVFVSTih2YWx1ZSkgZG8geyAgICAgICAgICAgICAgICBcCisgICAgICAgIEpT
VmFsdWUgX19yX3JldHVyblZhbHVlID0gKHZhbHVlKTsgICAgICBcCisgICAgICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0g
X19yX3JldHVyblZhbHVlOyAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJ
TlRfUkVUVVJOX1BST0ZJTEVEKG9wY29kZSwgdmFsdWUpIGRvIHsgICAgICAgICAgICAgICBcCisg
ICAgICAgIEpTVmFsdWUgX19ycF9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfT1AoMSkgPSBfX3JwX3JldHVyblZhbHVl
OyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHBjW09QQ09ERV9MRU5HVEgob3Bj
b2RlKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0gXAorICAgICAgICAgICAgSlNWYWx1
ZTo6ZW5jb2RlKF9fcnBfcmV0dXJuVmFsdWUpOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
TExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChleGVj
LCBjYWxsVGFyZ2V0KSBMTElOVF9SRVRVUk5fVFdPKChjYWxsVGFyZ2V0KSwgKGV4ZWMpKQorCisj
ZGVmaW5lIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsg
ICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jdF9leGVjID0gKGV4ZWMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBf
X2N0X3BjID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIEpTR2xvYmFsRGF0YSYgX19jdF9nbG9iYWxEYXRhID0gKF9fY3RfZXhlYyktPmdsb2JhbERh
dGEoKTsgICAgICBcCisgICAgICAgIF9fY3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0
aW9uVG9UaHJvdyk7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lN
UEwoX19jdF9leGVjLCBjYWxsVG9UaHJvdyhfX2N0X2V4ZWMsIF9fY3RfcGMpKTsgXAorICAgIH0g
d2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMs
IHBjKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19j
Y2VfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIEluc3RydWN0aW9uKiBfX2NjZV9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VMWShfX2NjZV9leGVjLT5nbG9iYWxEYXRh
KCkuZXhjZXB0aW9uKSkgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9DQUxMX0VO
RF9JTVBMKF9fY2NlX2V4ZWMsIGNhbGxUb1Rocm93KF9fY2NlX2V4ZWMsIF9fY2NlX3BjKSk7IFwK
KyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX1JFVFVSTihleGVjLCBw
YywgY2FsbFRhcmdldCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3Rh
dGUqIF9fY3JfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBJbnN0cnVjdGlvbiogX19jcl9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2b2lkKiBfX2NyX2NhbGxUYXJnZXQgPSAoY2Fs
bFRhcmdldCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxM
X0NIRUNLX0VYQ0VQVElPTihfX2NyX2V4ZWMtPmNhbGxlckZyYW1lKCksIF9fY3JfcGMpOyAgXAor
ICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3JfZXhlYywgX19jcl9jYWxsVGFyZ2V0KTsg
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCitleHRlcm4gIkMiIEhlbHBl
clJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0
aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCit7CisgICAgcHJpbnRmKCIlcCAv
ICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWRcbiIsCisgICAg
ICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBz
dGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUsCisgICAg
ICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFj
ZV92YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwg
aW50IG9wZXJhbmQpCit7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0Mob3BlcmFuZCku
anNWYWx1ZSgpOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVp
bnQzMl90IHRhZzsKKyAgICAgICAgICAgIHVpbnQzMl90IHBheWxvYWQ7CisgICAgICAgIH0gYml0
czsKKyAgICAgICAgRW5jb2RlZEpTVmFsdWUgYXNWYWx1ZTsKKyAgICB9IHU7CisgICAgdS5hc1Zh
bHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1
dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZDogJTA4eDolMDh4IiwKKyAgICAg
ICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0
YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGZyb21XaGVyZSwKKyAgICAg
ICAgICAgb3BlcmFuZCwKKyAgICAgICAgICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kLAorICAgICAg
ICAgICB1LmJpdHMudGFnLAorICAgICAgICAgICB1LmJpdHMucGF5bG9hZCk7CisjaWZuZGVmIE5E
RUJVRworICAgIHByaW50ZigiOiAlcyIsIHZhbHVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisg
ICAgcHJpbnRmKCJcbiIpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TCh0cmFjZV9wcm9sb2d1ZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGluIHByb2xvZ3VlLlxu
IiwgZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitzdGF0
aWMgdm9pZCB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFy
KiBjb21tZW50LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5jdGlv
biogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9ICZleGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsK
KyAgICBwcmludGYoIiVwIC8gJXA6IGluICVzIG9mIGZ1bmN0aW9uICVwLCBleGVjdXRhYmxlICVw
OyBudW1WYXJzID0gJXUsIG51bVBhcmFtZXRlcnMgPSAldSwgbnVtQ2FsbGVlUmVnaXN0ZXJzID0g
JXUuXG4iLAorICAgICAgICAgICBjb2RlQmxvY2ssIGV4ZWMsIGNvbW1lbnQsIGNhbGxlZSwgZXhl
Y3V0YWJsZSwKKyAgICAgICAgICAgY29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCit7CisgICAg
dHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIHByb2xvZ3VlIiwgQ29kZUZvckNhbGwp
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1
ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShl
eGVjLCAiY29uc3RydWN0IHByb2xvZ3VlIiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwp
Cit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIGFyaXR5IGNoZWNrIiwg
Q29kZUZvckNhbGwpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0
cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xv
Z3VlKGV4ZWMsICJjb25zdHJ1Y3QgYXJpdHkgY2hlY2siLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2UpCit7CisgICAgcHJp
bnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCAiLAorICAgICAgICAgICBleGVjLT5jb2Rl
QmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyNp
Zm5kZWYgTkRFQlVHCisgICAgcHJpbnRmKCIlcywgIiwgb3Bjb2RlTmFtZXNbZXhlYy0+Z2xvYmFs
RGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSldKTsKKyNlbHNl
CisgICAgcHJpbnRmKCJvcCMldSwgIiwgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSkpOworI2VuZGlmCisgICAgcHJpbnRmKCJzY29wZSAl
cFxuIiwgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woc3BlY2lhbF90cmFjZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1
dGluZyBzcGVjaWFsIGNhc2UgYmMjJXp1LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAorICAg
ICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAg
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9u
cygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZXhlYy0+cmV0dXJuUEMo
KS52YWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworaW5saW5lIGJvb2wgc2hvdWxkSklU
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBZb3UgY2FuIG1vZGlmeSB0aGlzIHRvIHR1cm4g
b2ZmIEpJVHRpbmcgd2l0aG91dCByZWJ1aWxkaW5nIHRoZSB3b3JsZC4KKyAgICByZXR1cm4gZXhl
Yy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpOworfQorCitlbnVtIEVudHJ5S2luZCB7IFByb2xv
Z3VlLCBBcml0eUNoZWNrIH07CitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVj
U3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0
IGNoYXIgKm5hbWUsIEVudHJ5S2luZCBraW5kKQoreworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9P
U1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCAlcyB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRc
biIsIGNvZGVCbG9jaywgbmFtZSwgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOwor
I2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJs
b2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBl
eGVjKTsKKyAgICB9CisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFs
RGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50Zigi
ICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBj
b2RlQmxvY2stPmppdFNvb24oKTsKKyAgICBpZiAoa2luZCA9PSBQcm9sb2d1ZSkKKyAgICAgICAg
TExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVz
c0F0T2Zmc2V0KDApLCBleGVjKTsKKyAgICBBU1NFUlQoa2luZCA9PSBBcml0eUNoZWNrKTsKKyAg
ICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+Z2V0SklUQ29kZVdpdGhBcml0eUNoZWNrKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKSwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5
X29zcikKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsIGV4ZWMtPmNvZGVCbG9jaygp
LCAiZW50cnlfb3NyIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9v
c3JfZnVuY3Rpb25fZm9yX2NhbGwpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAm
YXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRl
Y29kZUZvcihDb2RlRm9yQ2FsbCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwiLCBQcm9s
b2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29u
c3RydWN0KQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhl
Yy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZv
ckNvbnN0cnVjdCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCIsIFByb2xvZ3Vl
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5Q2hlY2spCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihl
eGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2Rl
Rm9yQ2FsbCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjayIsIEFyaXR5
Q2hlY2spOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFz
RnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNv
ZGVGb3IoQ29kZUZvckNvbnN0cnVjdCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9hcml0eUNoZWNrIiwgQXJpdHlDaGVjayk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bf
b3NyKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Cisg
ICAgCisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRlcmVk
IGxvb3Bfb3NyIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxv
Y2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoIXNob3Vs
ZEpJVChleGVjKSkgeworICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOwor
ICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAgICAKKyAgICBpZiAo
IWNvZGVCbG9jay0+aml0Q29tcGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5BQkxF
KEpJVF9WRVJCT1NFX09TUikKKyAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBj
b21waWxlZC5cbiIpOworI2VuZGlmCisgICAgfQorICAgIGNvZGVCbG9jay0+aml0U29vbigpOwor
ICAgIAorICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNl
bGluZUpJVCk7CisgICAgCisgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gbWFw
OworICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgpLT5kZWNvZGUobWFwKTsKKyAgICBCeXRlY29k
ZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcgPSBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNo
aW5lT2Zmc2V0LCB1bnNpZ25lZCwgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29k
ZUluZGV4PihtYXAuYmVnaW4oKSwgbWFwLnNpemUoKSwgcGMgLSBjb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLmJlZ2luKCkpOworICAgIEFTU0VSVChtYXBwaW5nKTsKKyAgICBBU1NFUlQobWFwcGlu
Zy0+bV9ieXRlY29kZUluZGV4ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwYyAtIGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSkpOworICAgIAorICAgIHZvaWQqIGp1bXBUYXJnZXQg
PSBjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KG1hcHBp
bmctPm1fbWFjaGluZUNvZGVPZmZzZXQpOworICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsKKyAgICAK
KyAgICBMTElOVF9SRVRVUk5fVFdPKGp1bXBUYXJnZXQsIGV4ZWMpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChyZXBsYWNlKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CisgICAgCisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYo
IiVwOiBFbnRlcmVkIHJlcGxhY2Ugd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxv
Y2ssIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAg
IGlmIChzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBp
bGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisg
ICAgICAgICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7Cisj
ZW5kaWYKKyAgICAgICAgfQorICAgICAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjaykKK3sKKyNp
ZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0
IHdpdGggZXhlYyA9ICVwLlxuIiwgZXhlYyk7CisgICAgcHJpbnRmKCJDb2RlQmxvY2sgPSAlcC5c
biIsIGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAgICBwcmludGYoIk51bSBjYWxsZWUgcmVnaXN0ZXJz
ID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAg
IHByaW50ZigiTnVtIHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bVZhcnMp
OworICAgIHByaW50ZigiQ3VycmVudCBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT5nbG9iYWxEYXRh
KCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKKyNlbmRpZgorICAgIEFTU0VS
VCgmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzXSA+IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5k
KCkpOworICAgIGlmIChVTkxJS0VMWSghZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5y
ZWdpc3RlckZpbGUoKS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+
bV9udW1DYWxsZWVSZWdpc3RlcnNdKSkpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZy
YW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFj
a092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihl
eGVjKTsKKyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKGV4ZWMp
OworICAgIH0KKyAgICBMTElOVF9FTkRfSU1QTCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY2FsbF9hcml0eUNoZWNrKQoreworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1v
blNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVy
cHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNhbGwpOworICAgIGlmICghbmV3RXhlYykg
eworICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAg
ICAgICAgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMpOworICAgICAgICBMTElOVF9SRVRV
Uk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSksIGV4
ZWMpOworICAgIH0KKyAgICBMTElOVF9SRVRVUk5fVFdPKDAsIG5ld0V4ZWMpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0
YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVj
LT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ29uc3Ry
dWN0KTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZy
YW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFj
a092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihl
eGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RX
TygwLCBuZXdFeGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3Rp
dmF0aW9uKQoreworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGlu
ZyBhbiBhY3RpdmF0aW9uLCBleGVjID0gJXAhXG4iLCBleGVjKTsKKyNlbmRpZgorICAgIEpTQWN0
aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYywgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlYy0+Y29kZUJs
b2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVj
LT5zY29wZUNoYWluKCktPnB1c2goYWN0aXZhdGlvbikpOworICAgIExMSU5UX1JFVFVSTihKU1Zh
bHVlKGFjdGl2YXRpb24pKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9h
cmd1bWVudHMpCit7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6
Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIocGNbMV0udS5vcGVyYW5kKSA9IGFyZ3VtZW50
czsKKyAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sx
XS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKQoreworICAgIEpTRnVuY3Rpb24qIGNvbnN0
cnVjdG9yID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgCisjaWYgIUFTU0VSVF9E
SVNBQkxFRAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBBU1NFUlQoY29u
c3RydWN0b3ItPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNv
bnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CisjZW5kaWYKKyAgICAKKyAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBKU1ZhbHVlIHByb3RvID0gTExJTlRfT1AoMikuanNWYWx1
ZSgpOworICAgIGlmIChwcm90by5pc09iamVjdCgpKQorICAgICAgICBzdHJ1Y3R1cmUgPSBhc09i
amVjdChwcm90byktPmluaGVyaXRvcklEKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgZWxzZQor
ICAgICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5l
bXB0eU9iamVjdFN0cnVjdHVyZSgpOworICAgIAorICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NvbnZlcnRfdGhpcykKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSkuanNWYWx1
ZSgpOworICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBMTElOVF9SRVRVUk4odjEu
dG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19v
YmplY3QpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSkKK3sKKyAgICBMTElOVF9S
RVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgYml0d2lzZV9jYXN0PEpTVmFsdWUqPigmTExJTlRf
T1AoMikpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X25ld19hcnJheV9idWZmZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4
ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihwY1syXS51Lm9wZXJhbmQpLCBw
Y1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdl
eHApCit7CisgICAgUmVnRXhwKiByZWdFeHAgPSBleGVjLT5jb2RlQmxvY2soKS0+cmVnZXhwKHBj
WzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkKKyAgICAgICAgTExJ
TlRfVEhST1coY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgZmxhZyBzdXBwbGllZCB0
byBSZWdFeHAgY29uc3RydWN0b3IuIikpOworICAgIExMSU5UX1JFVFVSTihSZWdFeHBPYmplY3Q6
OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbighTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
cSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjplcXVhbChleGVjLCBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVl
OjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2xlc3NlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpz
TGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVf
aW5jKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYykgKyAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVf
ZGVjKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0
X2luYykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVt
YmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0ganNOdW1iZXIocmVzdWx0ICsgMSk7CisgICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcG9zdF9kZWMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFs
dWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCAt
IDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcigt
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2FkZCkKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2MiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAg
IAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUcnlpbmcgdG8gYWRkICVz
IiwgdjEuZGVzY3JpcHRpb24oKSk7CisgICAgcHJpbnRmKCIgdG8gJXMuXG4iLCB2Mi5kZXNjcmlw
dGlvbigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICh2MS5pc1N0cmluZygpICYmICF2Mi5pc09i
amVjdCgpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEp
LCB2Mi50b1N0cmluZyhleGVjKSkpOworICAgIAorICAgIGlmICh2MS5pc051bWJlcigpICYmIHYy
LmlzTnVtYmVyKCkpCisgICAgICAgIExMSU5UX1JFVFVSTihqc051bWJlcih2MS5hc051bWJlcigp
ICsgdjIuYXNOdW1iZXIoKSkpOworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0FkZFNsb3dDYXNl
KGV4ZWMsIHYxLCB2MikpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKQorewor
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJl
cihleGVjKSAqIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2RpdikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykgLyBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihl
eGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKQoreworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihmbW9kKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4
ZWMpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA8PCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcnNoaWZ0KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKS50b0ludDMyKGV4ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMy
KGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KQoreworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1VJbnQzMihl
eGVjKSA+PiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKQoreworICAgIExMSU5UX1JFVFVSTihqc051
bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpICYgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfYml0b3IpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLnRvSW50MzIoZXhlYykgfCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4
ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykg
XiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKH5M
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFs
ID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisjaWZuZGVmIE5ERUJVRworICAgIFR5cGVJbmZv
IHR5cGVJbmZvKFVuc3BlY2lmaWVkVHlwZSk7CisgICAgQVNTRVJUKCFiYXNlVmFsLmlzT2JqZWN0
KCkKKyAgICAgICAgICAgfHwgISh0eXBlSW5mbyA9IGFzT2JqZWN0KGJhc2VWYWwpLT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKSkuaW1wbGVtZW50c0hhc0luc3RhbmNlKCkpOworI2VuZGlmCisgICAg
TExJTlRfVEhST1coY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoZXhlYywgImluc3RhbmNlb2YiLCBi
YXNlVmFsKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9mKQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluc3RhbmNlT2ZT
bG93KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90eXBlb2YpCit7CisgICAgTExJTlRfUkVUVVJOKGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4
ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9pc191bmRlZmluZWQpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbih2LmlzQ2VsbCgpID8gdi5hc0NlbGwo
KS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpIDogdi5p
c1VuZGVmaW5lZCgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFu
KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
aXNCb29sZWFuKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJlcikK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLmlz
TnVtYmVyKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZykKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGlzSlNTdHJpbmcoTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3QpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzT2JqZWN0VHlwZShMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKQor
eworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc0Z1bmN0aW9uVHlwZShMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luKQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluKGV4ZWMsIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpCit7CisgICAgTExJTlRfUkVUVVJOX1BS
T0ZJTEVEKG9wX3Jlc29sdmUsIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMt
PmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCkKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJP
RklMRUQoCisgICAgICAgIG9wX3Jlc29sdmVfc2tpcCwKKyAgICAgICAgQ29tbW9uU2xvd1BhdGhz
OjpvcFJlc29sdmVTa2lwKAorICAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgIGV4ZWMtPmNv
ZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCksCisgICAgICAgICAgICBwY1sz
XS51Lm9wZXJhbmQpKTsKK30KKworc3RhdGljIEpTVmFsdWUgcmVzb2x2ZUdsb2JhbChFeGVjU3Rh
dGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBj
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOworICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPmlzR2xv
YmFsT2JqZWN0KCkpOworICAgIGludCBwcm9wZXJ0eSA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHBjWzNdLnUuc3RydWN0dXJlLmdldCgpOworICAgIAorICAg
IEFTU0VSVF9VTlVTRUQoc3RydWN0dXJlLCBzdHJ1Y3R1cmUgIT0gZ2xvYmFsT2JqZWN0LT5zdHJ1
Y3R1cmUoKSk7CisgICAgCisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50
aWZpZXIocHJvcGVydHkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCk7Cisg
ICAgCisgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBz
bG90KSkgeworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRl
bnQpOworICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgJiYgIWdsb2JhbE9iamVj
dC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYm
IHNsb3Quc2xvdEJhc2UoKSA9PSBnbG9iYWxPYmplY3QpIHsKKyAgICAgICAgICAgIHBjWzNdLnUu
c3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOworICAg
ICAgICAgICAgcGNbNF0gPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBleGVjLT5nbG9iYWxE
YXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVu
dCk7CisgICAgcmV0dXJuIEpTVmFsdWUoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfZ2xvYmFsKQoreworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZl
X2dsb2JhbCwgcmVzb2x2ZUdsb2JhbChleGVjLCBwYykpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJP
RklMRUQob3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYywgcmVzb2x2ZUdsb2JhbChleGVjLCBwYykp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9i
YWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9i
YWxfZHluYW1pYywgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+Y29kZUJs
b2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcmVzb2x2ZV9iYXNlKQoreworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhl
Yy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAocGNb
M10udS5vcGVyYW5kKSB7CisgICAgICAgIEpTVmFsdWUgYmFzZSA9IEpTQzo6cmVzb2x2ZUJhc2Uo
ZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgdHJ1ZSk7CisgICAgICAgIGlmICghYmFz
ZSkKKyAgICAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFz
c2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgICAgIExMSU5UX1JFVFVSTihi
YXNlKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVf
YmFzZSwgSlNDOjpyZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBm
YWxzZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4
aXN0cykKK3sKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNW
YWx1ZSgpKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIElkZW50aWZpZXIm
IGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsK
KyAgICBpZiAoIW9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkKKyAg
ICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChl
eGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQoreworICAgIEpTVmFsdWUgcmVzdWx0
ID0gQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVXaXRoQmFzZShleGVjLCBleGVjLT5jb2RlQmxv
Y2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgLy8g
RklYTUU6IHRlY2huaWNhbGx5IHNob3VsZCBoYXZlIHByb2ZpbGluZywgYnV0IHdlIGRvbid0IGRv
IGl0IGJlY2F1c2UgdGhlIERGRyB3b24ndCB1c2UgaXQuCisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKK3sKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aFRoaXMoZXhlYywgZXhl
Yy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0
OworICAgIC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcsIGJ1dCB3
ZSBkb24ndCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExMSU5UX0VO
RCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKQoreworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYg
aWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xv
dCBzbG90KGJhc2VWYWx1ZSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQo
ZXhlYywgaWRlbnQsIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExM
SU5UX09QKDEpID0gcmVzdWx0OworCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAg
ICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkKKyAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGJh
c2VWYWx1ZQorICAgICAgICAmJiBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5
U2xvdDo6VmFsdWUpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNl
VmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwt
PnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNo
ZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCku
cHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKKyAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0
dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBwY1s1XS51Lm9wZXJh
bmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICB9Cisg
ICAgfQorICAgIAorICAgIHBjW09QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X2lkKSAtIDFdLnUucHJv
ZmlsZS0+bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0
aCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAg
IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFu
ZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAg
UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKKyAgICBMTElOVF9SRVRVUk4oYmFzZVZhbHVl
LmdldChleGVjLCBpZGVudCwgc2xvdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHV0X2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2Nr
KCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0u
dS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1
ZSgpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkp
OworICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCisgICAgICAgIGFzT2JqZWN0KGJhc2VWYWx1ZSkt
PnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGlkZW50LCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSwgc2xvdCk7CisgICAgZWxzZQorICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50
LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90
LmlzQ2FjaGVhYmxlKCkpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBi
YXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNl
bGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5j
YWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZv
KCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkKKyAgICAgICAgICAgICYmIGJhc2VDZWxsID09
IHNsb3QuYmFzZSgpKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzbG90LnR5cGUo
KSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgaWYg
KCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2Fw
YWNpdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNl
IHNvbWUgb2YgdGhlIG1ldGhvZHMgd2UgY2FsbAorICAgICAgICAgICAgICAgICAgICAvLyBiZWxv
dyBtYXkgR0MuCisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9j
YXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKworICAgICAgICAgICAgICAgICAgICBu
b3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7CisgICAgICAgICAgICAgICAg
ICAgIAorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCkt
PmlzT2JqZWN0KCkpOworICAgICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQo
CisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihK
U1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAorICAg
ICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVD
aGFpbiogY2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpOworICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoY2hhaW4pOworICAgICAgICAgICAgICAgICAgICBwY1s3XS51LnN0
cnVjdHVyZUNoYWluLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOworICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNb
MF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOwor
ICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1
Y3R1cmUpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zm
c2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9k
ZWxfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2so
KTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRv
T2JqZWN0KGV4ZWMpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RU
YWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBjb2RlQmxvY2stPmlkZW50
aWZpZXIocGNbM10udS5vcGVyYW5kKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICAg
ICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJv
cGVydHkuIikpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30K
KworaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VW
YWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCit7CisgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXND
ZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHJl
c3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KGV4ZWMsIGFzU3Ry
aW5nKHN1YnNjcmlwdCktPnZhbHVlKGV4ZWMpKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorICAgIAorICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgeworICAgICAgICB1
aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTU3RyaW5n
KGJhc2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAg
ICAgICAgICByZXR1cm4gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7Cisg
ICAgICAgIAorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYmIGFzQnl0ZUFy
cmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFz
Qnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAg
ICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgaSk7CisgICAgfQorICAgIAorICAgIElkZW50
aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSk7CisgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVydHkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJP
RklMRUQob3BfZ2V0X2J5X3ZhbCwgZ2V0QnlWYWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQoreworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gTExJ
TlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAgICAgIGFyZ3Vt
ZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYyk7CisgICAg
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBMTElOVF9PUCgyKSA9IGFyZ3Vt
ZW50czsKKyAgICAgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0
ZXIocGNbMl0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgfQorICAgIAorICAgIExMSU5U
X1JFVFVSTihnZXRCeVZhbChleGVjLCBhcmd1bWVudHMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpCit7CisgICAg
TExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRf
T1AoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlf
dmFsKQoreworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEo
KTsKKyAgICAKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
OworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAgIGlmIChM
SUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJz
Y3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUpKSB7Cisg
ICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOworICAgICAg
ICAgICAgaWYgKGpzQXJyYXktPmNhblNldEluZGV4KGkpKQorICAgICAgICAgICAgICAgIGpzQXJy
YXktPnNldEluZGV4KGdsb2JhbERhdGEsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4KGpzQXJyYXksIGV4ZWMsIGksIHZhbHVl
KTsKKyAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICB9CisgICAgICAgIGlmIChpc0pT
Qnl0ZUFycmF5KGJhc2VWYWx1ZSkKKyAgICAgICAgICAgICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1
ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CisgICAgICAgICAgICBKU0J5dGVBcnJheSoganNCeXRl
QXJyYXkgPSBhc0J5dGVBcnJheShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYgKHZhbHVlLmlz
SW50MzIoKSkgeworICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1
ZS5hc0ludDMyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBq
c0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNOdW1iZXIoKSk7CisgICAgICAgICAgICAg
ICAgTExJTlRfRU5EKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYmFzZVZh
bHVlLnB1dChleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAg
ICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAg
YmFzZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgIExMSU5UX0VO
RCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCkKK3sKKyAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTT2JqZWN0
KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIAorICAgIEpTVmFs
dWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisgICAgYm9vbCBj
b3VsZERlbGV0ZTsKKyAgICAKKyAgICB1aW50MzJfdCBpOworICAgIGlmIChzdWJzY3JpcHQuZ2V0
VUludDMyKGkpKQorICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxl
KCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNlT2JqZWN0LCBleGVjLCBpKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIElkZW50aWZpZXIg
cHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7Cisg
ICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERlbGV0ZSA9IGJh
c2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMs
IHByb3BlcnR5KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBleGVjLT5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgCisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHV0X2J5X2luZGV4KQoreworICAgIExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
LnB1dChleGVjLCBwY1syXS51Lm9wZXJhbmQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKTsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIp
Cit7CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBK
U09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAg
SWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51
Lm9wZXJhbmQpOworICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7
CisgICAgYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lR2V0dGVyKGJhc2VPYmosIGV4ZWMs
IGlkZW50LCBhc09iamVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpCit7CisgICAg
QVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCog
YmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRlbnRpZmll
ciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQp
OworICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgYmFz
ZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lU2V0dGVyKGJhc2VPYmosIGV4ZWMsIGlkZW50LCBh
c09iamVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpCit7CisgICAgdW5zaWduZWQg
Y291bnQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgU2NvcGVDaGFpbk5vZGUqIHRtcCA9IGV4ZWMt
PnNjb3BlQ2hhaW4oKTsKKyAgICB3aGlsZSAoY291bnQtLSkKKyAgICAgICAgdG1wID0gdG1wLT5w
b3AoKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKHRtcCk7CisgICAgcGMgKz0gcGNbMl0udS5v
cGVyYW5kOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
anRydWUpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2p0cnVlLCBMTElOVF9PUF9DKDEpLmpzVmFs
dWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZh
bHNlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZmFsc2UsICFMTElOVF9PUF9DKDEpLmpzVmFs
dWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxl
c3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzLCBqc0xlc3M8dHJ1ZT4oZXhlYywgTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pu
bGVzcywgIWpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVh
dGVyKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlciwganNMZXNzPGZhbHNlPihleGVj
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFO
Q0gob3Bfam5ncmVhdGVyLCAhanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2psZXNzZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEsIGpzTGVzc0Vx
PHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpCit7CisgICAg
TExJTlRfQlJBTkNIKG9wX2pubGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1Bf
QygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3Jl
YXRlcmVxLCBqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bmdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEsICFqc0xlc3NF
cTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKQorewor
ICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgQVNT
RVJUKHNjcnV0aW5lZS5pc0RvdWJsZSgpKTsKKyAgICBkb3VibGUgdmFsdWUgPSBzY3J1dGluZWUu
YXNEb3VibGUoKTsKKyAgICBpbnQzMl90IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
dmFsdWUpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlm
ICh2YWx1ZSA9PSBpbnRWYWx1ZSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2RlQmxvY2stPmltbWVkaWF0ZVN3aXRj
aEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGludFZhbHVlLCBkZWZh
dWx0T2Zmc2V0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJp
bmcpCit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsK
KyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAoIXNjcnV0
aW5lZS5pc1N0cmluZygpKQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIGVsc2Ug
eworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAg
ICAgICBwYyArPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJh
bmQpLm9mZnNldEZvclZhbHVlKGFzU3RyaW5nKHNjcnV0aW5lZSktPnZhbHVlKGV4ZWMpLmltcGwo
KSwgZGVmYXVsdE9mZnNldCk7CisgICAgfQorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmMpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9
IEZ1bmN0aW9uQ29kZQorICAgICAgICAgICB8fCAhY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNo
YWluKCkKKyAgICAgICAgICAgfHwgZXhlYy0+dW5jaGVja2VkUihjb2RlQmxvY2stPmFjdGl2YXRp
b25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAg
cHJpbnRmKCJDcmVhdGluZyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJTlRfUkVUVVJO
KGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzJdLnUub3BlcmFuZCktPm1ha2UoZXhlYywgZXhl
Yy0+c2NvcGVDaGFpbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVu
Y19leHApCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsK
KyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4
cHIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVuY3Rpb24tPm1h
a2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICAKKyAgICBpZiAoIWZ1bmN0aW9uLT5u
YW1lKCkuaXNOdWxsKCkpIHsKKyAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25T
Y29wZU9iamVjdCA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBmdW5jdGlvbi0+
bmFtZSgpLCBmdW5jLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBmdW5jLT5zZXRT
Y29wZShleGVjLT5nbG9iYWxEYXRhKCksIGZ1bmMtPnNjb3BlKCktPnB1c2goZnVuY3Rpb25TY29w
ZU9iamVjdCkpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZnVuYyk7Cit9CisKK3N0
YXRpYyBIZWxwZXJSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxl
ZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kKQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1l
KCk7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsK
KworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAg
ICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CisKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9y
Q2FsbCkgeworICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2Fs
bFR5cGUgPSBnZXRDYWxsRGF0YShjYWxsZWUsIGNhbGxEYXRhKTsKKyAgICAKKyAgICAgICAgQVNT
RVJUKGNhbGxUeXBlICE9IENhbGxUeXBlSlMpOworICAgIAorICAgICAgICBpZiAoY2FsbFR5cGUg
PT0gQ2FsbFR5cGVIb3N0KSB7CisgICAgICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVy
blZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2Fs
bGVlKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWND
YWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSk7CisgICAgICAgIH0KKyAgICAgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAg
ICAgcHJpbnRmKCJDYWxsIGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5k
ZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxs
VHlwZU5vbmUpOworICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RB
RnVuY3Rpb25FcnJvcihleGVjLCBjYWxsZWUpKTsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9
PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERh
dGE7CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShj
YWxsZWUsIGNvbnN0cnVjdERhdGEpOworICAgIAorICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9
IENvbnN0cnVjdFR5cGVKUyk7CisgICAgCisgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3Ry
dWN0VHlwZUhvc3QpIHsKKyAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9
IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVl
KSk7CisgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJl
dF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgfQorICAgIAorI2lm
IExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgICAgIHByaW50ZigiQ29uc3RydWN0b3IgY2FsbGVl
IGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlm
CisKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSk7CisgICAg
TExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhl
YywgY2FsbGVlKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlu
a0luZm8gPSAwKQoreworICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1
bmN0aW9uKGNhbGxlZUFzVmFsdWUpOworICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCisg
ICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1
ZSwga2luZCk7CisgICAgCisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxs
ZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihjYWxsZWUt
PnNjb3BlVW5jaGVja2VkKCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2Fs
bGVlLT5leGVjdXRhYmxlKCk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQ
dHI7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOworICAgIGlmIChleGVjdXRhYmxlLT5p
c0hvc3RGdW5jdGlvbigpKQorICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVk
SklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIGVsc2UgeworICAgICAgICBG
dW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBm
dW5jdGlvbkV4ZWN1dGFibGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29wZSgp
LCBraW5kKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJP
VyhleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOworICAgICAgICBjb2RlQmxv
Y2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAg
ICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSkpCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxl
LT5nZW5lcmF0ZWRKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENv
ZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICB9CisgICAgCisgICAgaWYgKGNhbGxM
aW5rSW5mbykgeworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLT5pc09uTGlzdCgpKQorICAgICAg
ICAgICAgY2FsbExpbmtJbmZvLT5yZW1vdmUoKTsKKyAgICAgICAgRXhlY1N0YXRlKiBleGVjQ2Fs
bGVyID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5j
YWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+Y29kZUJsb2Nr
KCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPmxh
c3RTZWVuQ2FsbGVlLnNldChleGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4ZWNDYWxsZXItPmNv
ZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAgICAgY2FsbExpbmtJ
bmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9IGNvZGVQdHI7CisgICAgICAgIGlmIChjb2RlQmxvY2sp
CisgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbExpbmtJbmZvKTsK
KyAgICB9CisgICAgCisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIGNvZGVQ
dHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIGdl
bmVyaWNDYWxsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1
cCBhIGNhbGwgZnJhbWUuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29t
cGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBJZiBwb3NzaWJsZSwgbGluayB0aGUgY2Fs
bCdzIGlubGluZSBjYWNoZS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29k
ZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1Zh
bHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBF
eGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIAorICAg
IGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFu
ZCk7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBj
YWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAg
IAorICAgIEFTU0VSVChwY1s0XS51LmNhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJuIHNldFVwQ2Fs
bChleGVjQ2FsbGVlLCBwYywga2luZCwgY2FsbGVlQXNWYWx1ZSwgcGNbNF0udS5jYWxsTGlua0lu
Zm8pOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCkKK3sKKyAgICByZXR1cm4g
Z2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDYWxsKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMs
IENvZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92
YXJhcmdzKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAgYSBjYWxs
IGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4KKyAgICAvLyAt
IEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAg
ICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5k
IHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBM
TElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUg
PSBsb2FkVmFyYXJncygKKyAgICAgICAgZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnBy
ZXRlci0+cmVnaXN0ZXJGaWxlKCksCisgICAgICAgIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5vcGVyYW5kKTsKKyAgICBMTElOVF9DQUxM
X0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYyk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+dW5jaGVj
a2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxs
ZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIoUmVnaXN0ZXJG
aWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90PihwYyArIE9Q
Q09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSk7CisgICAgCisgICAgcmV0dXJuIHNldFVwQ2Fs
bChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKQoreworICAgIEpTVmFsdWUgY2FsbGVlQXNW
YWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWND
YWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUt
PnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0
ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29w
ZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMo
Yml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4oJmxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7
CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworICAgIGV4ZWMtPnVuY2hlY2tlZFIo
UmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90
PihwYyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7CisgICAgCisgICAgaWYgKCFpc0hv
c3RGdW5jdGlvbihjYWxsZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpCisgICAgICAgIHJldHVy
biBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsK
KyAgICAKKyAgICBnbG9iYWxEYXRhLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBldmFsKGV4ZWNDYWxs
ZWUpOworICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9j
YXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQoreworICAgIEFTU0VSVChleGVjLT5jb2Rl
QmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBKU1ZhbHVlIGFjdGl2YXRpb25W
YWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFjdGl2YXRpb25WYWx1ZSkg
eworICAgICAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKSB7CisgICAgICAgICAg
ICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAg
ICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAgfQorICAgICAgICBMTElO
VF9FTkQoKTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0
aW9uKGFjdGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihleGVjLT5nbG9i
YWxEYXRhKCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpCisgICAgICAg
IGFzQXJndW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IGFjdGl2YXRpb24pOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQoreworICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2so
KS0+dXNlc0FyZ3VtZW50cygpICYmICFleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVD
aGFpbigpKTsKKyAgICBhc0FyZ3VtZW50cyhleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpLT50ZWFyT2ZmKGV4ZWMp
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0
KQoreworICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhleGVjLCAmTExJTlRfT1AoMiksIHBjWzNd
LnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZl
KQoreworICAgIExMSU5UX1JFVFVSTihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1ByaW1pdGl2
ZShleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKQorewor
ICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAodi5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBjICs9IHBjWzVdLnUub3BlcmFuZDsKKyAgICAgICAg
TExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChl
eGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVjdHVyZSgpOworICAgIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBzdHJ1Y3R1cmUt
PmVudW1lcmF0aW9uQ2FjaGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlOYW1lSXRlcmF0b3IgfHwg
anNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4oKSAhPSBzdHJ1Y3R1
cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpKQorICAgICAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9y
ID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8pOworICAgIAorICAgIExM
SU5UX09QKDEpID0gSlNWYWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKKyAgICBMTElOVF9P
UCgyKSA9IEpTVmFsdWUobyk7CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rlcjo6d2l0aEludCgw
KTsKKyAgICBMTElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJvcGVydHlOYW1lSXRl
cmF0b3ItPnNpemUoKSk7CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcG5h
bWVzKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
eHRfcG5hbWUpCit7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChMTElOVF9PUCgyKS5q
c1ZhbHVlKCkpOworICAgIEpTU3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3RyaW5nKExMSU5UX09QKDEp
LmpzVmFsdWUoKSk7CisgICAgaWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIo
ZXhlYywgcHJvcGVydHktPnZhbHVlKGV4ZWMpKSkpIHsKKyAgICAgICAgLy8gR28gdG8gdGFyZ2V0
LgorICAgICAgICBwYyArPSBwY1s2XS51Lm9wZXJhbmQ7CisgICAgfSAvLyBFbHNlLCBkb24ndCBj
aGFuZ2UgdGhlIFBDLCBzbyB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxvb3AuCisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKQoreworICAg
IEpTVmFsdWUgdiA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogbyA9IHYu
dG9PYmplY3QoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAg
TExJTlRfT1AoMSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFp
bigpLT5wdXNoKG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3BvcF9zY29wZSkKK3sKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMt
PnNjb3BlQ2hhaW4oKS0+cG9wKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogc2NvcGUgPSBKU1N0YXRpY1Nj
b3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3Bl
cmFuZCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgRG9udERlbGV0ZSk7CisgICAgZXhlYy0+c2V0
U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goc2NvcGUpKTsKKyAgICBMTElOVF9S
RVRVUk4oc2NvcGUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpCit7Cisg
ICAgTExJTlRfVEhST1coTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQoreworICAgIExMSU5UX1RIUk9X
KGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
ZGVidWcpCit7CisgICAgaW50IGRlYnVnSG9va0lEID0gcGNbMV0udS5vcGVyYW5kOworICAgIGlu
dCBmaXJzdExpbmUgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaW50IGxhc3RMaW5lID0gcGNbM10u
dS5vcGVyYW5kOworICAgIAorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+ZGVi
dWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5l
LCBsYXN0TGluZSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVk
UHJvZmlsZXJSZWZlcmVuY2UoKSktPndpbGxFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFs
dWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
cm9maWxlX2RpZF9jYWxsKQoreworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVy
ZW5jZSgpKS0+ZGlkRXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExM
SU5UX0VORCgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8v
IEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhl
bHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRI
ZWxwZXJzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRIZWxwZXJzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRIZWxwZXJzX2gK
KyNkZWZpbmUgTExJbnRIZWxwZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFt
ZXNwYWNlIExMSW50IHsKKwordHlwZWRlZiBpbnQ2NF90IEhlbHBlclJldHVyblR5cGU7CisKK2V4
dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSos
IEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworZXh0ZXJuICJDIiBI
ZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9u
KiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworCisjZGVmaW5lIExMSU5UX0hFTFBFUl9E
RUNMKG5hbWUpIFwKKyAgICBleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfIyNuYW1l
KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQorCitMTElOVF9IRUxQRVJfREVDTCh0
cmFjZV9wcm9sb2d1ZSk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlv
bl9mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9m
b3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2Nh
bGwpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KTsK
K0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJh
Y2UpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVu
dHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3Jf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3Jf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGxv
b3Bfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpOworTExJTlRfSEVMUEVSX0RFQ0wo
cmVnaXN0ZXJfZmlsZV9jaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0
eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NyZWF0ZV90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25ld19hcnJheSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5
X2J1ZmZlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9z
dHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVxKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2dyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2luYyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcG9zdF9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbmVnYXRlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX211bCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9yc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0
b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcik7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfYml0bm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5z
dGFuY2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3R5cGVvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5k
ZWZpbmVkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lz
X3N0cmluZyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
aW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Jlc29sdmVfc2tpcCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2
ZV9nbG9iYWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFt
aWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFs
X2R5bmFtaWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Jlc29sdmVfd2l0aF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlf
aWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2RlbF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
dXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfdmFsKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3B1dF9nZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2p0cnVlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxl
c3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9qbmdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJl
cSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfc3dpdGNoX2NoYXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRj
aF9zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
YWxsX2V2YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24p
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19w
cmltaXRpdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3B1c2hfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Rocm93KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2Vf
ZXJyb3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJvZmlsZV9kaWRfY2FsbCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5k
aWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRIZWxwZXJzX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25m
aWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9m
ZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50T2ZmbGlu
ZUFzbUNvbmZpZ19oCisjZGVmaW5lIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisKKyNpbmNsdWRl
ICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBDUFUoWDg2KQorI2RlZmluZSBPRkZMSU5FX0FTTV9YODYg
MQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDAKKyNlbmRpZgorCisjaWYgQ1BVKEFS
TXY3KQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5F
X0FTTV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyNkZWZpbmUgT0ZG
TElORV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNT
RVJUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUoQklHX0VORElBTikKKyNkZWZpbmUgT0ZG
TElORV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5E
SUFOIDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKExMSU5UX09TUl9UT19KSVQpCisjZGVmaW5lIE9G
RkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9F
TkFCTEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcKKyNkZWZpbmUg
T0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9B
U01fRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisKKyNlbmRpZiAvLyBMTEludE9mZmxpbmVB
c21Db25maWdfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJBbGxvY2F0aW9uU3BhY2UuaCIK
KyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVk
ZSAiSGVhcC5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklUU3R1YnMu
aCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1R5cGVJ
bmZvLmgiCisjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkp1bXBUYWJs
ZS5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUgIk1hcmtl
ZFNwYWNlLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFp
bi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgi
CisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1w
bC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBPRkZMSU5FX0FTTV9PRkZTRVRPRihj
bGF6eiwgZmllbGQpIE9CSkVDVF9PRkZTRVRPRihjbGF6eiwgZmllbGQpCisKK2NsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkKiBk
dW1teSgpOworfTsKKworY29uc3QgdW5zaWduZWQqIExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVt
bXkoKQoreworI2luY2x1ZGUgIkxMSW50RGVzaXJlZE9mZnNldHMuaCIKKyAgICByZXR1cm4gZXh0
cmFjdG9yVGFibGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCitpbnQgbWFpbihpbnQsIGNo
YXIqKikKK3sKKyAgICAvLyBPdXQgb2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRpb24sIG1ha2Ugc3Vy
ZSB0aGF0IExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSBpcyBsaXZlLAorICAgIC8vIGFu
ZCB0aGUgZXh0cmFjdG9yVGFibGUgaXMgbGl2ZSwgdG9vLgorICAgIHByaW50ZigiJXBcbiIsIEpT
Qzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpKTsKKyAgICByZXR1cm4gMDsKK30KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50VGh1
bmtzLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5o
IgorI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVy
LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitzdGF0aWMgTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSwgdm9pZCAoKnRhcmdldCkoKSkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7Cisg
ICAgCisgICAgLy8gRklYTUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0
IG9uIFg4NiwgYnV0IEknbSBub3Qgc3VyZSBJIGNhcmUuCisgICAgaml0Lm1vdmUoSlNJbnRlcmZh
Y2VKSVQ6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSwgSlNJbnRl
cmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6cmVnVDApOwor
ICAgIAorICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZqaXQsIEdMT0JB
TF9USFVOS19JRCk7CisgICAgcmV0dXJuIHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOworfQor
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRv
cihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtX
aXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKTsK
K30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVu
a0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxs
QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAg
ICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxE
YXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKTsKK30KKworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFs
RGF0YSwgbGxpbnRfZXZhbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBw
cm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7Cisg
ICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X3Byb2dy
YW1fcHJvbG9ndWUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlm
IC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFRodW5rcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50VGh1bmtzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludFRodW5rc19oCisj
ZGVmaW5lIExMSW50VGh1bmtzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYg
RU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0dsb2JhbERhdGE7CisKK25hbWVzcGFjZSBMTEludCB7
CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29u
c3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxE
YXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNo
ZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5k
aWYgLy8gTExJbnRUaHVua3NfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyMzc2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisKKyMgQ3Jhc2ggY291cnNlIG9uIHRoZSBsYW5ndWFnZSB0aGF0IHRoaXMgaXMgd3Jp
dHRlbiBpbiAod2hpY2ggSSBqdXN0IGNhbGwKKyMgImFzc2VtYmx5IiBldmVuIHRob3VnaCBpdCdz
IG1vcmUgdGhhbiB0aGF0KToKKyMKKyMgLSBNb3N0bHkgZ2FzLXN0eWxlIG9wZXJhbmQgb3JkZXJp
bmcuIFRoZSBsYXN0IG9wZXJhbmQgdGVuZHMgdG8gYmUgdGhlCisjICAgZGVzdGluYXRpb24uIFNv
ICJhIDo9IGIiIGlzIHdyaXR0ZW4gYXMgIm1vdiBiLCBhIi4gQnV0IHVubGlrZSBnYXMsCisjICAg
Y29tcGFyaXNvbnMgYXJlIGluLW9yZGVyLCBzbyAiaWYgKGEgPCBiKSIgaXMgd3JpdHRlbiBhcwor
IyAgICJiaWx0IGEsIGIsIC4uLiIuCisjCisjIC0gImIiID0gYnl0ZSwgImgiID0gMTYtYml0IHdv
cmQsICJpIiA9IDMyLWJpdCB3b3JkLCAicCIgPSBwb2ludGVyLgorIyAgIEN1cnJlbnRseSB0aGlz
IGlzIGp1c3QgMzItYml0IHNvICJpIiBhbmQgInAiIGFyZSBpbnRlcmNoYW5nZWFibGUKKyMgICBl
eGNlcHQgd2hlbiBhbiBvcCBzdXBwb3J0cyBvbmUgYnV0IG5vdCB0aGUgb3RoZXIuCisjCisjIC0g
SW4gZ2VuZXJhbCwgdmFsaWQgb3BlcmFuZHMgZm9yIG1hY3JvIGludm9jYXRpb25zIGFuZCBpbnN0
cnVjdGlvbnMgYXJlCisjICAgcmVnaXN0ZXJzIChlZyAidDAiKSwgYWRkcmVzc2VzIChlZyAiNFt0
MF0iKSwgYmFzZS1pbmRleCBhZGRyZXNzZXMKKyMgICAoZWcgIjdbdDAsIHQxLCAyXSIpLCBhYnNv
bHV0ZSBhZGRyZXNzZXMgKGVnICIweGEwMDAwMDAwW10iKSwgb3IgbGFiZWxzCisjICAgKGVnICJf
Zm9vIiBvciAiLmZvbyIpLiBNYWNybyBpbnZvY2F0aW9ucyBjYW4gYWxzbyB0YWtlIGFub255bW91
cworIyAgIG1hY3JvcyBhcyBvcGVyYW5kcy4gSW5zdHJ1Y3Rpb25zIGNhbm5vdCB0YWtlIGFub255
bW91cyBtYWNyb3MuCisjCisjIC0gTGFiZWxzIG11c3QgaGF2ZSBuYW1lcyB0aGF0IGJlZ2luIHdp
dGggZWl0aGVyICJfIiBvciAiLiIuICBBICIuIiBsYWJlbAorIyAgIGlzIGxvY2FsIGFuZCBnZXRz
IHJlbmFtZWQgYmVmb3JlIGNvZGUgZ2VuIHRvIG1pbmltaXplIG5hbWVzcGFjZQorIyAgIHBvbGx1
dGlvbi4gQSAiXyIgbGFiZWwgaXMgYW4gZXh0ZXJuIHN5bWJvbCAoaS5lLiAiLmdsb2JsIikuIFRo
ZSAiXyIKKyMgICBtYXkgb3IgbWF5IG5vdCBiZSByZW1vdmVkIGR1cmluZyBjb2RlIGdlbiBkZXBl
bmRpbmcgb24gd2hldGhlciB0aGUgYXNtCisjICAgY29udmVudGlvbnMgZm9yIEMgbmFtZSBtYW5n
bGluZyBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtIG1hbmRhdGUgYSAiXyIKKyMgICBwcmVmaXguCisj
CisjIC0gQSAibWFjcm8iIGlzIGEgbGFtYmRhIGV4cHJlc3Npb24sIHdoaWNoIG1heSBiZSBlaXRo
ZXIgYW5vbnltb3VzIG9yCisjICAgbmFtZWQuIEJ1dCB0aGlzIGhhcyBjYXZlYXRzLiAibWFjcm8i
IGNhbiB0YWtlIHplcm8gb3IgbW9yZSBhcmd1bWVudHMsCisjICAgd2hpY2ggbWF5IGJlIG1hY3Jv
cyBvciBhbnkgdmFsaWQgb3BlcmFuZHMsIGJ1dCBpdCBjYW4gb25seSByZXR1cm4KKyMgICBjb2Rl
LiBCdXQgeW91IGNhbiBkbyBUdXJpbmctY29tcGxldGUgdGhpbmdzIHZpYSBjb250aW51YXRpb24g
cGFzc2luZworIyAgIHN0eWxlOiAibWFjcm8gZm9vIChhLCBiKSBiKGEpIGVuZCBmb28oZm9vLCBm
b28pIi4gQWN0dWFsbHksIGRvbid0IGRvCisjICAgdGhhdCwgc2luY2UgeW91J2xsIGp1c3QgY3Jh
c2ggdGhlIGFzc2VtYmxlci4KKyMKKyMgLSBBbiAiaWYiIGlzIGEgY29uZGl0aW9uYWwgb24gc2V0
dGluZ3MuIEFueSBpZGVudGlmaWVyIHN1cHBsaWVkIGluIHRoZQorIyAgIHByZWRpY2F0ZSBvZiBh
biAiaWYiIGlzIGFzc3VtZWQgdG8gYmUgYSAjZGVmaW5lIHRoYXQgaXMgYXZhaWxhYmxlCisjICAg
ZHVyaW5nIGNvZGUgZ2VuLiBTbyB5b3UgY2FuJ3QgdXNlICJpZiIgZm9yIGNvbXB1dGF0aW9uIGlu
IGEgbWFjcm8sIGJ1dAorIyAgIHlvdSBjYW4gdXNlIGl0IHRvIHNlbGVjdCBkaWZmZXJlbnQgcGll
Y2VzIG9mIGNvZGUgZm9yIGRpZmZlcmVudAorIyAgIHBsYXRmb3Jtcy4KKyMKKyMgLSBBcmd1bWVu
dHMgdG8gbWFjcm9zIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgcmF0aGVyIHRoYW4gZHluYW1pYyBz
Y29waW5nLgorIyAgIENvbnN0J3MgYWxzbyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIGFuZCBtYXkg
b3ZlcnJpZGUgKGhpZGUpIGFyZ3VtZW50cworIyAgIG9yIG90aGVyIGNvbnN0cy4gQWxsIHZhcmlh
YmxlcyAoYXJndW1lbnRzIGFuZCBjb25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAgIHRvIG9wZXJh
bmRzLiBBZGRpdGlvbmFsbHksIGFyZ3VtZW50cyAoYnV0IG5vdCBjb25zdGFudHMpIGNhbiBiZSBi
b3VuZAorIyAgIHRvIG1hY3Jvcy4KKworCisjIFRoZXNlIGRlY2xhcmF0aW9ucyBtdXN0IG1hdGNo
IGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oLgorY29uc3QgQ2FsbEZyYW1lSGVhZGVyU2l6ZSA9
IDQ4Citjb25zdCBBcmd1bWVudENvdW50ID0gLTQ4Citjb25zdCBDYWxsZXJGcmFtZSA9IC00MAor
Y29uc3QgQ2FsbGVlID0gLTMyCitjb25zdCBTY29wZUNoYWluID0gLTI0Citjb25zdCBSZXR1cm5Q
QyA9IC0xNgorY29uc3QgQ29kZUJsb2NrID0gLTgKKworY29uc3QgVGhpc0FyZ3VtZW50T2Zmc2V0
ID0gLUNhbGxGcmFtZUhlYWRlclNpemUgLSA4CisKKyMgRGVjbGFyZSBzb21lIGFsaWFzZXMgZm9y
IHRoZSByZWdpc3RlcnMgd2Ugd2lsbCB1c2UuCitjb25zdCBQQyA9IHQ0CisKKyMgT2Zmc2V0cyBu
ZWVkZWQgZm9yIHJlYXNvbmluZyBhYm91dCB2YWx1ZSByZXByZXNlbnRhdGlvbi4KK2lmIEJJR19F
TkRJQU4KKyAgICBjb25zdCBUYWdPZmZzZXQgPSAwCisgICAgY29uc3QgUGF5bG9hZE9mZnNldCA9
IDQKK2Vsc2UKKyAgICBjb25zdCBUYWdPZmZzZXQgPSA0CisgICAgY29uc3QgUGF5bG9hZE9mZnNl
dCA9IDAKK2VuZAorCisjIFZhbHVlIHJlcHJlc2VudGF0aW9uIGNvbnN0YW50cy4KK2NvbnN0IElu
dDMyVGFnID0gLTEKK2NvbnN0IEJvb2xlYW5UYWcgPSAtMgorY29uc3QgTnVsbFRhZyA9IC0zCitj
b25zdCBVbmRlZmluZWRUYWcgPSAtNAorY29uc3QgQ2VsbFRhZyA9IC01Citjb25zdCBFbXB0eVZh
bHVlVGFnID0gLTYKK2NvbnN0IERlbGV0ZWRWYWx1ZVRhZyA9IC03Citjb25zdCBMb3dlc3RUYWcg
PSBEZWxldGVkVmFsdWVUYWcKKworIyBUeXBlIGNvbnN0YW50cy4KK2NvbnN0IFN0cmluZ1R5cGUg
PSA1Citjb25zdCBPYmplY3RUeXBlID0gMTAKKworIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KK2Nv
bnN0IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxCitjb25zdCBJbXBsZW1lbnRzSGFzSW5zdGFu
Y2UgPSAyCitjb25zdCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID0gOAorCisjIEhlYXAg
YWxsb2NhdGlvbiBjb25zdGFudHMuCitjb25zdCBKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgg
PSAzCisKKyMgQnl0ZWNvZGUgb3BlcmFuZCBjb25zdGFudHMuCitjb25zdCBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDAKKworIyBDb2RlIHR5cGUgY29uc3RhbnRzLgorY29u
c3QgR2xvYmFsQ29kZSA9IDAKK2NvbnN0IEV2YWxDb2RlID0gMQorY29uc3QgRnVuY3Rpb25Db2Rl
ID0gMgorCisjIFRoZSBpbnRlcnByZXRlciBzdGVhbHMgdGhlIHRhZyB3b3JkIG9mIHRoZSBhcmd1
bWVudCBjb3VudC4KK2NvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsgVGFnT2Zm
c2V0CisKKyMgVGhpcyBtdXN0IG1hdGNoIHd0Zi9WZWN0b3IuaC4KK2NvbnN0IFZlY3RvclNpemVP
ZmZzZXQgPSAwCitjb25zdCBWZWN0b3JCdWZmZXJPZmZzZXQgPSA0CisKKyMgU3RyaW5nIGZsYWdz
LgorY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDY0CisKKyMgVXRpbGl0aWVzCittYWNybyBj
cmFzaCgpCisgICAgc3RvcmVpIDAsIDB4YmJhZGJlZWZbXQorICAgIG1vdmUgMCwgdDAKKyAgICBj
YWxsIHQwCitlbmQKKworbWFjcm8gYXNzZXJ0KGFzc2VydGlvbikKKyAgICBpZiBBU1NFUlRfRU5B
QkxFRAorICAgICAgICBhc3NlcnRpb24oLm9rKQorICAgICAgICBjcmFzaCgpCisgICAgLm9rOgor
ICAgIGVuZAorZW5kCisKK21hY3JvIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChkZXN0
aW5hdGlvblJlZ2lzdGVyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgbHIsIGRlc3RpbmF0
aW9uUmVnaXN0ZXIKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9wIGRlc3RpbmF0aW9uUmVnaXN0
ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKworbWFjcm8gcmVzdG9y
ZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oc291cmNlUmVnaXN0ZXIpCisgICAgaWYgQVJNdjcK
KyAgICAgICAgbW92ZSBzb3VyY2VSZWdpc3RlciwgbHIKKyAgICBlbHNpZiBYODYKKyAgICAgICAg
cHVzaCBzb3VyY2VSZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2Vu
ZAorCittYWNybyBkaXNwYXRjaChhZHZhbmNlKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDCisg
ICAgam1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQocGNPZmZz
ZXQpCisgICAgbHNoaWZ0aSAyLCBwY09mZnNldAorICAgIGFkZHAgcGNPZmZzZXQsIFBDCisgICAg
am1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEJyYW5jaChwY09mZnNldCkKKyAgICBsb2Fk
aSBwY09mZnNldCwgdDAKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDApCitlbmQKKwor
bWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdP
ZmZzZXRbY2ZyXSwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGNDYWxsMihmdW5jdGlv
biwgYXJnMSwgYXJnMikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGFyZzEsIHQwCisgICAg
ICAgIG1vdmUgYXJnMiwgdDEKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBhcmcxLCAwCisg
ICAgICAgIHBva2UgYXJnMiwgMQorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKKyAg
ICBjYWxsIGZ1bmN0aW9uCitlbmQKKworIyBUaGlzIGJhcmVseSB3b3Jrcy4gYXJnMyBhbmQgYXJn
NCBzaG91bGQgcHJvYmFibHkgYmUgaW1tZWRpYXRlcy4KK21hY3JvIGNDYWxsNChmdW5jdGlvbiwg
YXJnMSwgYXJnMiwgYXJnMywgYXJnNCkKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGFyZzEs
IHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICAgICAgbW92ZSBhcmczLCB0MgorICAgICAg
ICBtb3ZlIGFyZzQsIHQzCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAorICAg
ICAgICBwb2tlIGFyZzIsIDEKKyAgICAgICAgcG9rZSBhcmczLCAyCisgICAgICAgIHBva2UgYXJn
NCwgMworICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKKyAgICBjYWxsIGZ1bmN0aW9u
CitlbmQKKworbWFjcm8gY2FsbEhlbHBlcihoZWxwZXIpCisgICAgY0NhbGwyKGhlbHBlciwgY2Zy
LCBQQykKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKKyMgRGVidWdn
aW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBsaWtlIHRvIHByaW50IGFuIG9wZXJhbmQgaW4gdGhlIGlu
c3RydWN0aW9uIHN0cmVhbS4KK21hY3JvIHRyYWNlT3BlcmFuZChmcm9tV2hlcmUsIG9wZXJhbmQp
CisgICAgY0NhbGw0KF9sbGludF90cmFjZV9vcGVyYW5kLCBjZnIsIFBDLCBmcm9tV2hlcmUsIG9w
ZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVn
Z2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCB0aGUgdmFsdWUgb2YgYW4gb3Bl
cmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24KKyMgc3RyZWFtLgorbWFjcm8gdHJhY2VWYWx1ZShmcm9t
V2hlcmUsIG9wZXJhbmQpCisgICAgY0NhbGw0KF9sbGludF90cmFjZV92YWx1ZSwgY2ZyLCBQQywg
ZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitl
bmQKKworbWFjcm8gdHJhY2VFeGVjdXRpb24oKQorICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisg
ICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3RyYWNlKQorICAgIGVuZAorZW5kCisKKyMgQ2FsbCBh
IGhlbHBlciBmb3IgY2FsbCBvcGNvZGVzLgorbWFjcm8gY2FsbENhbGxIZWxwZXIoYWR2YW5jZSwg
aGVscGVyLCBhY3Rpb24pCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMsIHQwCisgICAgc3RvcmVw
IHQwLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBjQ2FsbDIoaGVscGVyLCBj
ZnIsIFBDKQorICAgIG1vdmUgdDEsIGNmcgorICAgIGFjdGlvbih0MCkKK2VuZAorCittYWNybyBz
bG93UGF0aEZvckNhbGwoYWR2YW5jZSwgaGVscGVyKQorICAgIGNhbGxDYWxsSGVscGVyKAorICAg
ICAgICBhZHZhbmNlLAorICAgICAgICBoZWxwZXIsCisgICAgICAgIG1hY3JvIChjYWxsZWUpCisg
ICAgICAgICAgICBjYWxsIGNhbGxlZQorICAgICAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQor
ICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVChpbmNyZW1lbnQsIGFj
dGlvbikKKyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDAKKyAgICAgICAgYmFkZGlzIGluY3JlbWVudCwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNv
dW50ZXJbdDBdLCAuY29udGludWUKKyAgICAgICAgYWN0aW9uKCkKKyAgICAuY29udGludWU6Cisg
ICAgZW5kCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGNoZWNr
U3dpdGNoVG9KSVQoCisgICAgICAgIDEsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBz
dG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgICAgICAgICAgY0Nh
bGwyKF9sbGludF9sb29wX29zciwgY2ZyLCBQQykKKyAgICAgICAgICAgIG1vdmUgdDEsIGNmcgor
ICAgICAgICAgICAgYnRweiB0MCwgLnJlY292ZXIKKyAgICAgICAgICAgIGptcCB0MAorICAgICAg
ICAucmVjb3ZlcjoKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRb
Y2ZyXSwgUEMKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JF
cGlsb2d1ZSgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMTAsCisgICAgICAgIG1h
Y3JvICgpCisgICAgICAgICAgICBjYWxsSGVscGVyKF9sbGludF9yZXBsYWNlKQorICAgICAgICBl
bmQpCitlbmQKKworbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoaW5kZXgpCisgICAgYXNzZXJ0KG1h
Y3JvIChvaykgYmlsdCBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIG9rIGVuZCkK
K2VuZAorCisjIEluZGV4LCB0YWcsIGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lz
dGVycy4gSW5kZXggaXMgbm90CisjIGNoYW5nZWQuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgs
IDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2Fk
CisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBh
eWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JC
dWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2
aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFs
dWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsb2FkcCBUYWdPZmZz
ZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxv
YWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9h
ZCBtYXkgYmUgdGhlIHNhbWUgcmVnaXN0ZXIuIEluZGV4IG1heSBiZSBjbG9iYmVyZWQuCittYWNy
byBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJp
Z3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxv
YWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YWcKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3Rh
bnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdGFnXSwgdGFnCisgICAgIyBUaGVyZSBp
cyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUg
ZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAg
bHNoaWZ0aSAzLCBpbmRleAorICAgIGFkZHAgaW5kZXgsIHRhZworICAgIGxvYWRwIFBheWxvYWRP
ZmZzZXRbdGFnXSwgcGF5bG9hZAorICAgIGxvYWRwIFRhZ09mZnNldFt0YWddLCB0YWcKKy5kb25l
OgorZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKGlu
ZGV4LCB0YWdDaGVjaywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0pCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAor
ICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXls
b2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVm
ZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmls
IGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVl
IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgdGFnQ2hlY2soVGFnT2Zm
c2V0W3BheWxvYWQsIGluZGV4LCA4XSkKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQs
IGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBt
dXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdCBtdXRhdGVkLiBVc2UKKyMg
dGhpcyBpZiB5b3Uga25vdyB3aGF0IHRoZSB0YWcgb2YgdGhlIHZhcmlhYmxlIHNob3VsZCBiZS4g
RG9pbmcgdGhlIHRhZworIyB0ZXN0IGFzIHBhcnQgb2YgbG9hZGluZyB0aGUgdmFyaWFibGUgcmVk
dWNlcyByZWdpc3RlciB1c2UsIGJ1dCBtYXkgbm90CisjIGJlIGZhc3RlciB0aGFuIGRvaW5nIGxv
YWRDb25zdGFudE9yVmFyaWFibGUgZm9sbG93ZWQgYnkgYSBicmFuY2ggb24gdGhlCisjIHRhZy4K
K21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywg
cGF5bG9hZCwgc2xvdykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3Rv
bSgKKyAgICAgICAgaW5kZXgsCisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGJpbmVxIGFjdHVh
bFRhZywgZXhwZWN0ZWRUYWcsIHNsb3cgZW5kLAorICAgICAgICBwYXlsb2FkKQorZW5kCisKK21h
Y3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKGluZGV4LCBwYXlsb2Fk
KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKAorICAgICAgICBp
bmRleCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykgZW5kLAorICAgICAgICBwYXlsb2FkKQor
ZW5kCisKK21hY3JvIHdyaXRlQmFycmllcih0YWcsIHBheWxvYWQpCisgICAgIyBOb3RoaW5nIHRv
IGRvLCBzaW5jZSB3ZSBkb24ndCBoYXZlIGEgZ2VuZXJhdGlvbmFsIG9yIGluY3JlbWVudGFsIGNv
bGxlY3Rvci4KK2VuZAorCittYWNybyB2YWx1ZVByb2ZpbGUodGFnLCBwYXlsb2FkLCBwcm9maWxl
KQorICAgIHN0b3JlaSB0YWcsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3By
b2ZpbGVdCisgICAgc3RvcmVpIHBheWxvYWQsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5
bG9hZE9mZnNldFtwcm9maWxlXQorZW5kCisKKworIyBJbmRpY2F0ZSB0aGUgYmVnaW5uaW5nIG9m
IExMSW50LgorX2xsaW50X2JlZ2luOgorICAgIGNyYXNoKCkKKworCisjIEVudHJ5cG9pbnRzIGlu
dG8gdGhlIGludGVycHJldGVyCisKK21hY3JvIGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRl
cih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIK
KyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJn
ZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JD
YWxsW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlv
bkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBD
YWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1
dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJn
ZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHRhcmdl
dFJlZ2lzdGVyKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YXJnZXRSZWdpc3RlcgorZW5k
CisKK21hY3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgIHN0
b3JlcCBzb3VyY2VSZWdpc3RlciwgQ29kZUJsb2NrW2Nmcl0KK2VuZAorCittYWNybyBub3RGdW5j
dGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAgICAjIE5vdGhpbmcgdG8gZG8h
CitlbmQKKworIyBEbyB0aGUgYmFyZSBtaW5pbXVtIHJlcXVpcmVkIHRvIGV4ZWN1dGUgY29kZS4g
U2V0cyB1cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2RlQmxvY2sqCisjIGluIHQxLiBNYXkgYWxzbyB0
cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KK21hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRl
ciwgY29kZUJsb2NrU2V0dGVyLCBvc3JIZWxwZXIsIHRyYWNlSGVscGVyKQorICAgIHByZXNlcnZl
UmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgY2FsbCBm
cmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KKyAgICBzdG9yZXAgdDIsIFJldHVyblBD
W2Nmcl0KKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKHRyYWNl
SGVscGVyKQorICAgIGVuZAorICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICBpZiBKSVRfRU5B
QkxFRAorICAgICAgICBiYWRkaXMgNSwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJb
dDFdLCAuY29udGludWUKKyAgICAgICAgY0NhbGwyKG9zckhlbHBlciwgY2ZyLCBQQykKKyAgICAg
ICAgbW92ZSB0MSwgY2ZyCisgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgIGxvYWRw
IFJldHVyblBDW2Nmcl0sIHQyCisgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0
dXJuKHQyKQorICAgICAgICBqbXAgdDAKKyAgICAucmVjb3ZlcjoKKyAgICAgICAgY29kZUJsb2Nr
R2V0dGVyKHQxKQorICAgIC5jb250aW51ZToKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tTZXR0ZXIo
dDEpCisgICAgCisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9p
bnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjpt
X2luc3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCitlbmQKKworIyBFeHBl
Y3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVh
dmVzIGJlaGluZC4KKyMgTXVzdCBjYWxsIGRpc3BhdGNoKDApIGFmdGVyIGNhbGxpbmcgdGhpcy4K
K21hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1NraXApCisgICAgIyBQcm9m
aWxlIHRoZSBhcmd1bWVudHMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hvaWNlIGJ1dCB0
byBkbyB0aGlzLiBUaGlzCisgICAgIyBjb2RlIGlzIHByZXR0eSBob3JyZW5kb3VzIGJlY2F1c2Ug
b2YgdGhlIGRpZmZlcmVuY2UgaW4gb3JkZXJpbmcgYmV0d2VlbgorICAgICMgYXJndW1lbnRzIGFu
ZCB2YWx1ZSBwcm9maWxlcywgdGhlIGRlc2lyZSB0byBoYXZlIGEgc2ltcGxlIGxvb3AtZG93bi10
by16ZXJvCisgICAgIyBsb29wLCBhbmQgdGhlIGRlc2lyZSB0byB1c2Ugb25seSB0aHJlZSByZWdp
c3RlcnMgc28gYXMgdG8gcHJlc2VydmUgdGhlIFBDIGFuZAorICAgICMgdGhlIGNvZGUgYmxvY2su
IEl0IGlzIGxpa2VseSB0aGF0IHRoaXMgY29kZSBzaG91bGQgYmUgcmV3cml0dGVuIGluIGEgbW9y
ZQorICAgICMgb3B0aW1hbCB3YXkgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBoYXZlIG1vcmUgdGhh
biBmaXZlIHJlZ2lzdGVycyBhdmFpbGFibGUKKyAgICAjIGZvciBhcmJpdHJhcnkgdXNlIGluIHRo
ZSBpbnRlcnByZXRlci4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0s
IHQwCisgICAgYWRkaSAtcHJvZmlsZUFyZ1NraXAsIHQwICMgVXNlIGFkZGkgYmVjYXVzZSB0aGF0
J3Mgd2hhdCBoYXMgdGhlIHBlZXBob2xlCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHQw
LCAwLCBvayBlbmQpCisgICAgYnRpeiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKKyAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0
W3QxXSwgdDMKKyAgICBtdWxpIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0MiAjIEFhYWFhaGho
aCEgTmVlZCBzdHJlbmd0aCByZWR1Y3Rpb24hCisgICAgbmVnaSB0MAorICAgIGxzaGlmdGkgMywg
dDAKKyAgICBhZGRwIHQyLCB0MworLmFyZ3VtZW50UHJvZmlsZUxvb3A6CisgICAgbG9hZGkgVGhp
c0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIs
IHQwXSwgdDIKKyAgICBzdWJwIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQzCisgICAgc3RvcmVpIHQy
LCBwcm9maWxlQXJnU2tpcCAqIHNpemVvZiBWYWx1ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6Om1f
YnVja2V0cyArIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQ
YXlsb2FkT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIKKyAgICBz
dG9yZWkgdDIsIHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVlUHJv
ZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBiYWRkaW56IDgsIHQwLCAu
YXJndW1lbnRQcm9maWxlTG9vcAorLmFyZ3VtZW50UHJvZmlsZURvbmU6CisgICAgCisgICAgIyBD
aGVjayBzdGFjayBoZWlnaHQuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lz
dGVyc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0Mgor
ICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MiAgICMgRklYTUU6IENh
biBnZXQgdG8gdGhlIFJlZ2lzdGVyRmlsZSBmcm9tIHRoZSBKSVRTdGFja0ZyYW1lCisgICAgbHNo
aWZ0aSAzLCB0MAorICAgIGFkZHAgdDAsIGNmciwgdDAKKyAgICBicGFlcSBJbnRlcnByZXRlcjo6
bV9yZWdpc3RlckZpbGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hlaWdo
dE9LCisKKyAgICAjIFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBo
ZWxwZXIuCisgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVjaykKKy5zdGFj
a0hlaWdodE9LOgorZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hp
Y2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCittYWNybyBmdW5jdGlvbkFyaXR5
Q2hlY2soZG9uZUxhYmVsLCBoZWxwZXIpCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3Vt
ZW50Q291bnRbY2ZyXSwgdDAKKyAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRl
cnNbdDFdLCBkb25lTGFiZWwKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKSAgICMgVGhpcyBo
ZWxwZXIgaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4gbm8gZXJyb3IsIHQwICE9IDAg
PT4gZXJyb3IKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBidGl6IHQwLCAuY29udGludWUKKyAgICBs
b2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2Jh
bERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0
YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKy5jb250aW51ZToKKyAgICAjIFJlbG9hZCBDb2Rl
QmxvY2sgYW5kIFBDLCBzaW5jZSB0aGUgaGVscGVyIGNsb2JiZXJlZCBpdC4KKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3Qx
XSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMg
KyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworICAgIGptcCBkb25lTGFiZWwKK2VuZAorCitf
bGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9j
a0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9s
bGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9ldmFsX3By
b2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5j
dGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xv
Z3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xv
Z3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rp
b25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwsIF9s
bGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKKy5mdW5jdGlvbkZvckNhbGxC
ZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCisgICAgZGlzcGF0Y2goMCkKKyAg
ICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWU6CisgICAgcHJvbG9n
dWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2Nr
U2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGludF90
cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQorLmZ1bmN0aW9uRm9yQ29uc3Ry
dWN0QmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigxKQorICAgIGRpc3BhdGNoKDAp
CisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjazoKKyAgICBwcm9s
b2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0
dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGlu
dF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVu
Y3Rpb25Gb3JDYWxsQmVnaW4sIF9sbGludF9oZWxwZXJfY2FsbF9hcml0eUNoZWNrKQorCisKK19s
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1
bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRl
ciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9s
bGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCisgICAgZnVuY3Rpb25Bcml0eUNo
ZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfbGxpbnRfaGVscGVyX2NvbnN0cnVjdF9h
cml0eUNoZWNrKQorCisjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9ucworCitfbGxpbnRfb3Bf
ZW50ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1WYXJzW3QyXSwgdDIKKyAgICBidGl6IHQyLCAu
b3BFbnRlckRvbmUKKyAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAKKyAgICBtb3ZlIDAsIHQxCisu
b3BFbnRlckxvb3A6CisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAg
YnRpbnogdDIsIC5vcEVudGVyTG9vcAorLm9wRW50ZXJEb25lOgorICAgIGRpc3BhdGNoKDEpCisK
KworX2xsaW50X29wX2NyZWF0ZV9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5
VmFsdWVUYWcsIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQorLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmU6CisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5pdF9sYXp5X3JlZzoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRh
Z09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBcmd1bWVudHNEb25lCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCisub3BDcmVhdGVB
cmd1bWVudHNEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFjcm8gYWxsb2NhdGVCYXNpY0pT
T2JqZWN0KHNpemVDbGFzc0luZGV4LCBjbGFzc0luZm9PZmZzZXQsIHN0cnVjdHVyZSwgcmVzdWx0
LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNsb3dDYXNlKQorICAgIGNvbnN0IG9mZnNldE9mTXlTaXpl
Q2xhc3MgPSBKU0dsb2JhbERhdGE6OmhlYXAgKyBIZWFwOjptX29iamVjdFNwYWNlICsgQWxsb2Nh
dGlvblNwYWNlOjptX21hcmtlZFNwYWNlICsgTWFya2VkU3BhY2U6Om1fcHJlY2lzZVNpemVDbGFz
c2VzICsgc2l6ZUNsYXNzSW5kZXggKiBzaXplb2YgTWFya2VkU3BhY2U6OlNpemVDbGFzcworICAg
IAorICAgICMgRklYTUU6IHdlIGNhbiBnZXQgdGhlIGdsb2JhbCBkYXRhIGluIG9uZSBsb2FkIGZy
b20gdGhlIHN0YWNrLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoMQorICAgIGxv
YWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAKKyAg
ICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4gICAgCisgICAgbG9hZHAgb2Zm
c2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxb
c2NyYXRjaDFdLCByZXN1bHQKKyAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UKKyAgICAKKyAgICAj
IFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAgICBsb2FkcCBbcmVzdWx0
XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBN
YXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXQorCisgICAgIyBJ
bml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgbG9hZHAgY2xhc3NJbmZvT2Zmc2V0W3NjcmF0Y2gx
XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCisgICAgc3RvcmVwIHN0
cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCisgICAgc3RvcmVwIDAsIEpTT2Jq
ZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0KKyAgICBhZGRwIHNpemVvZiBKU09iamVjdCwgcmVz
dWx0LCBzY3JhdGNoMQorICAgIHN0b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVydHlT
dG9yYWdlW3Jlc3VsdF0KK2VuZAorCitfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQw
KQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ3JlYXRlVGhp
c1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wQ3JlYXRlVGhpc1Nsb3cK
KyAgICBsb2FkcCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFt0MF0sIHQyCisgICAgYnRweiB0Miwg
Lm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVj
dFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIHQy
LCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wQ3JlYXRlVGhp
c1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV90aGlzKQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRPZmZzZXQgKyBDYWxsZWVb
Y2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKwor
CitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5v
cENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYmJiIFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BDb252
ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0VGhpc1Nsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0
W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVjdHVy
ZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xh
c3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MSwgdDAsIHQy
LCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkg
Q2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3T2JqZWN0U2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheV9idWZmZXIpCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdleHApCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMp
CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9u
b3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRp
IDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBi
aW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90U2xvdworICAgIHhvcmkgMSwgdDMKKyAgICBzdG9y
ZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5vdFNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9l
cToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0Mywg
Lm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93CisgICAgYmliIHQyLCBM
b3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpZXEgdDAsIHQx
LCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBz
dG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisu
b3BFcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2VxKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX2VxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50
KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BFcU51
bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0
Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlCisub3BF
cU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaWVxIHQxLCBV
bmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQyLCB0MQorLm9wRXFOdWxsTm90SW1tZWRpYXRlOgor
ICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkg
dDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEp
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0
MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFTbG93CisgICAg
YmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBj
aW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQy
LCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3Bh
dGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lcSkK
KyAgICBkaXNwYXRjaCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251bGw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAg
IGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
dDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQx
LCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjpt
X2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wTmVxTnVs
bE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBjaW5lcSB0MSwgTnVsbFRh
ZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIGFuZGkgdDIsIHQxCisu
b3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAg
ICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBoZWxw
ZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKKyAgICBiaWIgdDIsIExv
d2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmluZworICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDFdLCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJlcSBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cKKy5u
b3RTdHJpbmc6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVyYXRpb24odDAs
IHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkK
KworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAor
CitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVx
KG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5k
LCBfbGxpbnRfaGVscGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3RyaWN0ZXE6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0
KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9uc3RyaWN0ZXEp
CisKKworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xl
c3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2xlc3NlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcikKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRh
ZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQx
CisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5jU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNwYXRjaCgyKQorCisK
K19sbGludF9vcF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVE
ZWNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBic3Vi
aW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29w
X3Bvc3RfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMy
VGFnLCAub3BQb3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAg
ICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNE
b25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9w
b3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAg
bG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRh
ZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAg
YnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhd
CisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0RGVjRG9u
ZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdG9f
anNudW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykK
KyAgICBiaWVxIHQyLCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklzSW50CisgICAgYmlhZXEgdDIs
IEVtcHR5VmFsdWVUYWcsIC5vcFRvSnNudW1iZXJTbG93Cisub3BUb0pzbnVtYmVySXNJbnQ6Cisg
ICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb0pzbnVtYmVyU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fanNudW1iZXIpCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQwLCB0MSwgdDIpCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BOZWdhdGVTcmNO
b3RJbnQKKyAgICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CisgICAgbmVnaSB0
MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVp
IHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKy5vcE5lZ2F0
ZVNyY05vdEludDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xvdworICAgIHhv
cmkgMHg4MDAwMDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQor
ICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMp
CisKKy5vcE5lZ2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lZ2F0ZSkK
KyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9w
ZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQ
Q10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisg
ICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDMsIEludDMyVGFn
LCAub3AyTm90SW50CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50ZWdlck9wZXJhdGlvbkFu
ZFN0b3JlKHQzLCB0MSwgdDAsIC5zbG93LCB0MikKKyAgICBkaXNwYXRjaCg1KQorCisub3AxTm90
SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRoZSBz
ZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEgdDIsIExvd2VzdFRhZywg
LnNsb3cKKyAgICBiaWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJp
bmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQxLCBmdDEKKyAgICBqbXAgLm9wMU5v
dEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQxLCB0MywgZnQxCisu
b3AxTm90SW50UmVhZHk6CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgZmlpMmQgdDAsIHQyLCBm
dDAKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2Nmciwg
dDEsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wMk5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJh
bmQgaXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5
IG5vdC4KKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNsb3cK
KyAgICBjaTJkIHQwLCBmdDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorICAgIGRvdWJsZU9wZXJh
dGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRj
aCg1KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCg1KQor
ZW5kCisKK21hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlvbiwg
aGVscGVyKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRh
ZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgaW50ZWdlck9wZXJhdGlv
bihsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zm
c2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZz
ZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBkb3VibGVPcGVyYXRpb24s
IGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfYWRkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVm
dCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQgbGVm
dCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2FkZCkKKworCitfbGxpbnRfb3Bf
bXVsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAg
ICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAg
ICAgIGNvbnN0IHNjcmF0Y2ggPSBpbnQzMlRhZyAgICMgV2Uga25vdyB0aGF0IHdlIGNhbiByZXVz
ZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEgY29uc3RhbnQuCisgICAgICAg
ICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoCisgICAgICAgICAgICBibXVsaW8gbGVmdCwgc2NyYXRj
aCwgc2xvdworICAgICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRvbmUKKyAgICAgICAgICAgIGJp
bHQgbGVmdCwgMCwgLnNsb3cKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIC5zbG93CisgICAg
ICAgIC5kb25lOgorICAgICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBp
bmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBtdWxk
IGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9tdWwpCisKKworX2xsaW50
X29wX3N1YjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1YmlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9zdWIpCisKKworX2xsaW50X29wX2RpdjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBs
ZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjaTJkIGxlZnQsIGZ0MAorICAg
ICAgICAgICAgY2kyZCByaWdodCwgZnQxCisgICAgICAgICAgICBkaXZkIGZ0MCwgZnQxCisgICAg
ICAgICAgICBiY2QyaSBmdDEsIHJpZ2h0LCAubm90SW50CisgICAgICAgICAgICBzdG9yZWkgaW50
MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHJpZ2h0
LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBqbXAgLmRvbmUKKyAg
ICAgICAgLm5vdEludDoKKyAgICAgICAgICAgIHN0b3JlZCBmdDEsIFtjZnIsIGluZGV4LCA4XQor
ICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQp
IGRpdmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2RpdikKKworCitf
bGxpbnRfb3BfbW9kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfbW9kKQorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8gYml0T3Aob3BlcmF0aW9u
LCBoZWxwZXIsIGFkdmFuY2UpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywg
LnNsb3cKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgbG9hZGkgNFtQQ10sIHQy
CisgICAgb3BlcmF0aW9uKHQxLCB0MCwgLnNsb3cpCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAg
ICBkaXNwYXRjaChhZHZhbmNlKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAg
ICBkaXNwYXRjaChhZHZhbmNlKQorZW5kCisKK19sbGludF9vcF9sc2hpZnQ6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cp
IGxzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2xzaGlmdCwK
KyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfcnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSByc2hpZnRpIGxl
ZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9yc2hpZnQsCisgICAgICAgIDQp
CisKKworX2xsaW50X29wX3Vyc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9w
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICB1cnNoaWZ0
aSBsZWZ0LCByaWdodAorICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdworICAgICAgICBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfdXJzaGlmdCwKKyAgICAgICAgNCkKKworCitfbGxp
bnRfb3BfYml0YW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBhbmRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9iaXRhbmQsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdHhvcjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgc2xvdykgeG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
Yml0eG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRvcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgb3Jp
IGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXRvciwKKyAgICAgICAg
NSkKKworCitfbGxpbnRfb3BfYml0bm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQxLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3BCaXRub3RTbG93Cisg
ICAgbm90aSB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9w
Qml0bm90U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfYml0bm90KQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQodDEsIENlbGxUYWcsIHQwLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdykKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6bV90
eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0hhc0luc3RhbmNlLCAu
b3BDaGVja0hhc0luc3RhbmNlU2xvdworICAgIGRpc3BhdGNoKDIpCisKKy5vcENoZWNrSGFzSW5z
dGFuY2VTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jaGVja19oYXNfaW5zdGFu
Y2UpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5zdGFuY2VvZjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgIyBDaGVjayB0aGF0IGJhc2VWYWwgaW1wbGVtZW50cyB0aGUgZGVm
YXVsdCBIYXNJbnN0YW5jZSBiZWhhdmlvci4KKyAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBk
ZXByZWNhdGVkLgorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZFVuY2hlY2tlZCh0MSwgdDApCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9m
bGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIC5vcEluc3RhbmNlb2ZTbG93
CisgICAgCisgICAgIyBBY3R1YWxseSBkbyB0aGUgd29yay4KKyAgICBsb2FkaSAxNltQQ10sIHQw
CisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDAsIENlbGxUYWcsIHQxLCAub3BJbnN0YW5jZW9mU2xvdykKKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QxXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUlu
Zm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcEluc3RhbmNlb2ZTbG93CisgICAgbG9hZGkg
OFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcs
IHQyLCAub3BJbnN0YW5jZW9mU2xvdykKKyAgICAKKyAgICAjIFJlZ2lzdGVyIHN0YXRlOiB0MSA9
IHByb3RvdHlwZSwgdDIgPSB2YWx1ZQorICAgIG1vdmUgMSwgdDAKKy5vcEluc3RhbmNlb2ZMb29w
OgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MgorICAgIGxvYWRpIFN0cnVj
dHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QyXSwgdDIKKyAgICBicGVxIHQyLCB0
MSwgLm9wSW5zdGFuY2VvZkRvbmUKKyAgICBidGlueiB0MiwgLm9wSW5zdGFuY2VvZkxvb3AKKwor
ICAgIG1vdmUgMCwgdDAKKy5vcEluc3RhbmNlb2ZEb25lOgorICAgIHN0b3JlaSBCb29sZWFuVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MywgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3BJbnN0YW5jZW9mU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfaW5zdGFuY2VvZikKKyAgICBkaXNwYXRjaCg1KQorCisKK19s
bGludF9vcF90eXBlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl90eXBlb2YpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfdW5k
ZWZpbmVkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfaXNfdW5kZWZpbmVkKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX2Jvb2xl
YW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9p
c19ib29sZWFuKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX251bWJlcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX251bWJl
cikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19zdHJpbmc6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19zdHJpbmcpCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfb2JqZWN0KQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX2lzX2Z1bmN0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfZnVuY3Rpb24pCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfaW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9pbikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9yZXNvbHZl
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVz
b2x2ZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9yZXNvbHZlX3NraXA6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3Nr
aXApCisgICAgZGlzcGF0Y2goNSkKKworCittYWNybyByZXNvbHZlR2xvYmFsKHNpemUsIHNsb3cp
CisgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVzdGluYXRp
b24gZm9yIHRoZSBsb2FkLgorICAgICMgOFtQQ10gICBQcm9wZXJ0eSBpZGVudGlmaWVyIGluZGV4
IGluIHRoZSBjb2RlIGJsb2NrLgorICAgICMgMTJbUENdICBTdHJ1Y3R1cmUgcG9pbnRlciwgaW5p
dGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgIyAxNltQQ10gIE9mZnNl
dCBpbiBnbG9iYWwgb2JqZWN0LCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRv
ci4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
Z2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwg
dDEKKyAgICBicG5lcSB0MSwgMTJbUENdLCBzbG93CisgICAgbG9hZGkgMTZbUENdLCB0MQorICAg
IGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCisgICAgbG9hZGkgVGFn
T2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhd
LCB0MworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgbG9h
ZGkgKHNpemUgLSAxKSAqIDRbUENdLCB0MAorICAgIHZhbHVlUHJvZmlsZSh0MiwgdDMsIHQwKQor
ZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgcmVzb2x2ZUdsb2JhbCg2LCAub3BSZXNvbHZlR2xvYmFsU2xvdykKKyAgICBkaXNwYXRjaCg2
KQorCisub3BSZXNvbHZlR2xvYmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cmVzb2x2ZV9nbG9iYWwpCisgICAgZGlzcGF0Y2goNikKKworCisjIEdpdmVzIHlvdSB0aGUgc2Nv
cGUgaW4gdDAsIHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25hbGx5IHBlcmZvcm0gYWRkaXRp
b25hbCBjaGVja3Mgb24gdGhlCisjIHNjb3BlcyBhcyB0aGV5IGFyZSB0cmF2ZXJzZWQuIHNjb3Bl
Q2hlY2soKSBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgcmVnaXN0ZXIKKyMgaG9s
ZGluZyB0aGUgc2NvcGUsIGFuZCBhIHJlZ2lzdGVyIHRoYXQgY2FuIGJlIHVzZWQgZm9yIHNjcmF0
Y2guIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90CisjIHVzZSB0Mywgc28geW91IGNhbiBob2xkIHN0
dWZmIGluIHQzIGlmIG5lZWQgYmUuCittYWNybyBnZXRTY29wZShkZUJydWlqaW5JbmRleE9wZXJh
bmQsIHNjb3BlQ2hlY2spCisgICAgbG9hZHAgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZzZXRbY2Zy
XSwgdDAKKyAgICBsb2FkaSBkZUJydWlqaW5JbmRleE9wZXJhbmQsIHQyCisgICAgCisgICAgYnRp
eiB0MiwgLmRvbmUKKyAgICAKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBiaW5l
cSBDb2RlQmxvY2s6Om1fY29kZVR5cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5sb29wCisgICAgYnRi
eiBDb2RlQmxvY2s6Om1fbmVlZHNGdWxsU2NvcGVDaGFpblt0MV0sIC5sb29wCisgICAgCisgICAg
bG9hZGkgQ29kZUJsb2NrOjptX2FjdGl2YXRpb25SZWdpc3Rlclt0MV0sIHQxCisKKyAgICAjIE5l
ZWQgdG8gY29uZGl0aW9uYWxseSBza2lwIG92ZXIgb25lIHNjb3BlLgorICAgIGJpZXEgVGFnT2Zm
c2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAubm9BY3RpdmF0aW9uCisgICAgc2NvcGVD
aGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MAorLm5v
QWN0aXZhdGlvbjoKKyAgICBzdWJpIDEsIHQyCisgICAgCisgICAgYnRpeiB0MiwgLmRvbmUKKy5s
b29wOgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpu
ZXh0W3QwXSwgdDAKKyAgICBzdWJpIDEsIHQyCisgICAgYnRpbnogdDIsIC5sb29wCisKKy5kb25l
OgorZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAg
ICBsb2FkcCBKU0dsb2JhbERhdGE6OmFjdGl2YXRpb25TdHJ1Y3R1cmVbdDNdLCB0MworICAgIGdl
dFNjb3BlKAorICAgICAgICAyMFtQQ10sCisgICAgICAgIG1hY3JvIChzY29wZSwgc2NyYXRjaCkK
KyAgICAgICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3Rbc2NvcGVdLCBzY3JhdGNo
CisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3NjcmF0Y2hdLCB0MywgLm9w
UmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3cKKyAgICAgICAgZW5kKQorICAgIHJlc29sdmVH
bG9iYWwoNywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93KQorICAgIGRpc3BhdGNoKDcpCisK
Ky5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQorICAgIGRpc3BhdGNo
KDcpCisKKy5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKKyAgICBkaXNwYXRjaCg3KQorCisKK19s
bGludF9vcF9nZXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBPcGVy
YW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRoZSBs
b2FkLgorICAgICMgOFtQQ10gICBJbmRleCBvZiByZWdpc3RlciBpbiB0aGUgc2NvcGUuCisgICAg
IyAxMltQQ10gIERlIEJydWlqaW4gaW5kZXguCisgICAgZ2V0U2NvcGUoMTJbUENdLCBtYWNybyAo
c2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSA4W1BD
XSwgdDIKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2Fk
cCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zm
c2V0W3QwLCB0MiwgOF0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdLCB0
MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIHZhbHVl
UHJvZmlsZSh0MywgdDAsIHQxKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3B1dF9z
Y29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBnZXRTY29wZSg4W1BDXSwgbWFj
cm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDEsIHQzLCB0MikKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICB3
cml0ZUJhcnJpZXIodDMsIHQyKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3RbdDBd
LCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAg
ICBzdG9yZWkgdDMsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2Fk
T2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfZ2xv
YmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAg
bG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmpl
Y3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwg
dDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQxCisgICAgc3RvcmVpIHQy
LCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MywgOF0KKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgdmFsdWVQcm9maWxlKHQyLCB0MSwg
dDMpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAor
ICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHdy
aXRlQmFycmllcih0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbdDAsIHQxLCA4XQor
ICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfcmVzb2x2ZV9iYXNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9iYXNlKQorICAgIGRpc3BhdGNoKDUpCisK
KworX2xsaW50X29wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF9iYXNlOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRo
X2Jhc2UpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX3RoaXM6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNv
bHZlX3dpdGhfdGhpcykKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9nZXRfYnlfaWQ6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgV2Ugb25seSBkbyBtb25vbW9ycGhpYyBnZXRf
YnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0aGUKKyAgICAjIG9w
Y29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8gY2hhbmdlIGFueXRp
bWUgaWYgZmFpbHMsIHNpbmNlCisgICAgIyBwaW5nLXBvbmdpbmcgaXMgZnJlZS4gQXQgYmVzdCB3
ZSBnZXQgbHVja3kgYW5kIHRoZSBnZXRfYnlfaWQgd2lsbCBjb250aW51ZQorICAgICMgdG8gdGFr
ZSBmYXN0IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qgd2UgdGFrZSBzbG93IHBhdGgs
IHdoaWNoIGlzIHdoYXQKKyAgICAjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2luZyBhbnl3YXkuCisg
ICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJZFNsb3cpCisgICAg
bG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0
M10sIHQwCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxLCAub3BHZXRCeUlk
U2xvdworICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDJdLCB0
MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyXSwgdDIKKyAgICBzdG9yZWkgdDMsIFRh
Z09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XQorICAgIGxvYWRpIDMyW1BDXSwgdDEKKyAgICB2YWx1ZVByb2ZpbGUodDMsIHQyLCB0MSkK
KyAgICBkaXNwYXRjaCg5KQorCisub3BHZXRCeUlkU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfZ2V0X2J5X2lkKQorICAgIGRpc3BhdGNoKDkpCisKKworX2xsaW50X29wX2dldF9h
cmd1bWVudHNfbGVuZ3RoOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0s
IEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50c0xlbmd0aFNsb3cKKyAgICBsb2FkaSBBcmd1
bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MgorICAgIHN1YmkgMSwgdDIKKyAgICBz
dG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5
bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEFyZ3VtZW50
c0xlbmd0aFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9hcmd1bWVudHNf
bGVuZ3RoKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9pZDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgMTZbUENdLCB0
MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9w
UHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRwIEpTT2JqZWN0Ojpt
X3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDAsIHQyKQorICAgIHdyaXRlQmFycmllcih0MCwgdDIp
CisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbdDMsIHQxXQorICAgIHN0b3JlaSB0MiwgUGF5bG9h
ZE9mZnNldFt0MywgdDFdCisgICAgZGlzcGF0Y2goOSkKKworLm9wUHV0QnlJZFNsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pZCkKKyAgICBkaXNwYXRjaCg5KQorCisK
K21hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRT
bG93KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgYWRkaXRpb25hbENoZWNrcyh0MSwgdDMsIC5v
cFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVjdDo6
bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGFkZHAgdDEsIHQzCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZTJSZWcodDIsIHQxLCB0MikKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQyKQor
ICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIDI0W1BDXSwgdDEKKyAgICBz
dG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVwIHQxLCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXQorICAgIGRpc3BhdGNoKDkpCitlbmQKKworX2xsaW50X29wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihtYWNybyAob2xkU3RydWN0
dXJlLCBzY3JhdGNoLCBzbG93KSBlbmQpCisKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX25vcm1hbDoKKyAgICBwdXRCeUlkVHJhbnNpdGlvbigKKyAgICAgICAgbWFjcm8gKG9sZFN0
cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykKKyAgICAgICAgICAgIGNvbnN0IHByb3RvQ2VsbCA9IG9s
ZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lzdGVyIGZvciB0aGUg
cHJvdG8KKyAgICAgICAgCisgICAgICAgICAgICBsb2FkcCAyOFtQQ10sIHNjcmF0Y2gKKyAgICAg
ICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICAgICAg
ICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvcltzY3JhdGNoXSwgc2NyYXRjaAorICAg
ICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgICAg
ICAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVy
ZV0sIE51bGxUYWcsIC5kb25lCisgICAgICAgIC5sb29wOgorICAgICAgICAgICAgbG9hZGkgU3Ry
dWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3RydWN0dXJlXSwgcHJvdG9D
ZWxsCisgICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Byb3RvQ2VsbF0sIG9s
ZFN0cnVjdHVyZQorICAgICAgICAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBbc2NyYXRjaF0sIHNs
b3cKKyAgICAgICAgICAgIGFkZHAgNCwgc2NyYXRjaAorICAgICAgICAgICAgYmluZXEgU3RydWN0
dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAubG9v
cAorICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kKQorCisKK19sbGludF9vcF9kZWxfYnlfaWQ6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWxf
YnlfaWQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9hZGkg
OFtQQ10sIHQyCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxEYXRhW3QxXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0Miwg
Q2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6Ompz
QXJyYXlDbGFzc0luZm9bdDFdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBicG5lcSBbdDBdLCB0Miwg
Lm9wR2V0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QwXSwgdDMKKyAg
ICBiaWFlcSB0MSwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDBdLCAub3BHZXRCeVZhbFNsb3cK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsg
VGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3Rv
ciArIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKyAgICBiaWVxIHQyLCBFbXB0eVZhbHVl
VGFnLCAub3BHZXRCeVZhbFNsb3cKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4
XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGxvYWRpIDE2
W1BDXSwgdDAKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MCkKKyAgICBkaXNwYXRjaCg1KQor
Cisub3BHZXRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV92
YWwpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgMTJb
UENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywg
Lm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MSwgSW50MzJUYWcsIHQyLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdykKKyAgICBhZGRpIDEs
IHQyCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDEKKyAg
ICBiaWFlcSB0MiwgdDEsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbmVnaSB0MgorICAg
IGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNl
dFtjZnIsIHQyLCA4XSwgdDAKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDIsIDhdLCB0MQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDMs
IDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0
Y2goNCkKKworLm9wR2V0QXJndW1lbnRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfZ2V0X2J5X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10s
IHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAu
b3BHZXRCeVBuYW1lU2xvdykKKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgYnBuZXEgdDEsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkgOFtQ
Q10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQy
LCAub3BHZXRCeVBuYW1lU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQwCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QyXSwgdDAKKyAgICBicG5lcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRT
dHJ1Y3R1cmVbdDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDI0W1BDXSwgdDAKKyAg
ICBsb2FkaSBbY2ZyLCB0MCwgOF0sIHQwCisgICAgc3ViaSAxLCB0MAorICAgIGJpYWVxIHQwLCBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3QzXSwgLm9wR2V0QnlQ
bmFtZVNsb3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDJdLCB0Mgor
ICAgIGxvYWRpIFRhZ09mZnNldFt0MiwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbdDIsIHQwLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDEsIFRh
Z09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XQorICAgIGRpc3BhdGNoKDcpCisKKy5vcEdldEJ5UG5hbWVTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfcG5hbWUpCisgICAgZGlzcGF0Y2goNykKKworCitfbGxp
bnRfb3BfcHV0X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAu
b3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDAsIEludDMyVGFnLCB0MiwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRh
W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDBdLCB0
MAorICAgIGJwbmVxIFt0MV0sIHQwLCAub3BQdXRCeVZhbFNsb3cKKyAgICBiaWFlcSB0MiwgSlNB
cnJheTo6bV92ZWN0b3JMZW5ndGhbdDFdLCAub3BQdXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0Fy
cmF5OjptX3N0b3JhZ2VbdDFdLCB0MAorICAgIGJpZXEgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciAr
IFRhZ09mZnNldFt0MCwgdDIsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BQdXRCeVZhbEVtcHR5Cisu
b3BQdXRCeVZhbFN0b3JlUmVzdWx0OgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MywgdDEsIHQzKQorICAgIHdyaXRlQmFycmllcih0MSwgdDMp
CisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0
MiwgOF0KKyAgICBzdG9yZWkgdDMsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zm
c2V0W3QwLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BQdXRCeVZhbEVtcHR5OgorICAg
IGFkZGkgMSwgQXJyYXlTdG9yYWdlOjptX251bVZhbHVlc0luVmVjdG9yW3QwXQorICAgIGJpYiB0
MiwgQXJyYXlTdG9yYWdlOjptX2xlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQKKyAg
ICBhZGRpIDEsIHQyLCB0MQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX2xlbmd0aFt0
MF0KKyAgICBqbXAgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorCisub3BQdXRCeVZhbFNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfZGVsX2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfcHV0X2J5X2luZGV4OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X2luZGV4KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX3B1dF9nZXR0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9wdXRfZ2V0dGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X3B1dF9zZXR0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9wdXRfc2V0dGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xvb3A6
CisgICAgbm9wCitfbGxpbnRfb3Bfam1wOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkaXNw
YXRjaEJyYW5jaCg0W1BDXSkKKworCitfbGxpbnRfb3Bfam1wX3Njb3BlczoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2ptcF9zY29wZXMpCisgICAg
ZGlzcGF0Y2goMCkKKworCittYWNybyBqdW1wVHJ1ZU9yRmFsc2UoY29uZGl0aW9uT3AsIHNsb3cp
CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDEsIEJvb2xlYW5UYWcsIHQwLCAuc2xvdykKKyAgICBjb25kaXRpb25PcCh0MCwgLnRhcmdldCkK
KyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQor
Cisuc2xvdzoKKyAgICBjYWxsSGVscGVyKHNsb3cpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitf
bGxpbnRfb3BfbG9vcF9pZl90cnVlOgorICAgIG5vcAorX2xsaW50X29wX2p0cnVlOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1
ZSwgdGFyZ2V0KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl9qdHJ1ZSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKKyAgICBub3AKK19sbGludF9v
cF9qZmFsc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAg
ICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIHRhcmdldCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfamZhbHNlKQorCisKK21hY3JvIGVxdWFsTnVsbChjZWxsSGFuZGxl
ciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxIYW5kbGVyKFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQor
CisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuaW1tZWRpYXRlOgorICAg
IG9yaSAxLCB0MQorICAgIGltbWVkaWF0ZUhhbmRsZXIodDEsIC50YXJnZXQpCisgICAgZGlzcGF0
Y2goMykKK2VuZAorCitfbGxpbnRfb3BfamVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0Ym56IHZhbHVl
LCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFs
dWUsIHRhcmdldCkgYmllcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKyAgICAKKworX2xs
aW50X29wX2puZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAor
ICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRieiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpbmVx
IHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorCisKK19sbGludF9vcF9qbmVxX3B0cjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10s
IHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BKbmVxUHRy
QnJhbmNoCisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0
ckZhbGxUaHJvdWdoCisub3BKbmVxUHRyQnJhbmNoOgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BD
XSkKKy5vcEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGNv
bXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUsIGhlbHBlcikKKyAgICBsb2FkaSA0
W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQyLCB0MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQyLCB0MykK
KyAgICBiaW5lcSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MiwgSW50MzJU
YWcsIC5vcDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5qdW1wVGFyZ2V0KQor
ICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgYmlhIHQwLCBMb3dlc3RUYWcsIC5z
bG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5l
cSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MywgZnQxCisgICAgam1wIC5vcDFOb3RJ
bnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQorLm9w
MU5vdEludFJlYWR5OgorICAgIGZpaTJkIHQxLCB0MCwgZnQwCisgICAgZG91YmxlQ29tcGFyZShm
dDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMk5vdEludDoKKyAg
ICBjaTJkIHQxLCBmdDAKKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBmaWkyZCB0
MywgdDIsIGZ0MQorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAg
IGRpc3BhdGNoKDQpCisKKy5qdW1wVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkK
KworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goMCkKK2VuZAor
CitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfamxlc3MpCisKKworX2xsaW50X29wX2pubGVzczoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0
YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAg
ICAgICBfbGxpbnRfaGVscGVyX2pubGVzcykKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVy
OgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0
LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJkZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdy
ZWF0ZXIpCisKKworX2xsaW50X29wX2puZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBs
ZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJkbHRlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVs
cGVyX2puZ3JlYXRlcikKKworCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzZXE6CisgICAgbm9wCitf
bGxpbnRfb3Bfamxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcSBsZWZ0
LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzc2VxKQorCisK
K19sbGludF9vcF9qbmxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRh
cmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0dW4gbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzZXEpCisK
KworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcmVxOgorICAgIG5vcAorX2xsaW50X29wX2pncmVh
dGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXEgbGVmdCwgcmlnaHQsIHRh
cmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXJlcSkKKworCitfbGxpbnRf
b3Bfam5ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQg
ZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdHVuIGxlZnQsIHJp
Z2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcmVxKQorCisK
K19sbGludF9vcF9sb29wX2hpbnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dp
dGNoVG9KSVRGb3JMb29wKCkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zd2l0Y2hf
aW1tOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9h
ZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0
YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MyAgICMgRklYTUU6
IHdvdWxkIGJlIG5pY2UgdG8gcGVlcGhvbGUgdGhpcyEKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJh
cmVEYXRhOjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRb
dDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BTd2l0
Y2hJbW1Ob3RJbnQKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBi
aWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNl
dFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxl
OjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDMKKyAgICBsb2FkaSBb
dDMsIHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAg
IGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoSW1tTm90SW50OgorICAg
IGJpYiB0MSwgTG93ZXN0VGFnLCAub3BTd2l0Y2hJbW1TbG93ICAjIEdvIHRvIHNsb3cgcGF0aCBp
ZiBpdCdzIGEgZG91YmxlLgorLm9wU3dpdGNoSW1tRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hC
cmFuY2goOFtQQ10pCisKKy5vcFN3aXRjaEltbVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3N3aXRjaF9pbW0pCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3Bfc3dpdGNo
X2NoYXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBs
b2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVE
YXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQzCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzICsgVmVj
dG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVxIHQxLCBD
ZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5m
bzo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAg
bG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0MAorICAgIGJpbmVxIFN0cmluZ0ltcGw6Om1f
bGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU3RyaW5n
SW1wbDo6bV9kYXRhOFt0MF0sIHQxCisgICAgYnRpbnogU3RyaW5nSW1wbDo6bV9oYXNoQW5kRmxh
Z3NbdDBdLCBIYXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0Y2hDaGFyOEJpdAorICAgIGxvYWRo
IFt0MV0sIHQwCisgICAgam1wIC5vcFN3aXRjaENoYXJSZWFkeQorLm9wU3dpdGNoQ2hhcjhCaXQ6
CisgICAgbG9hZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENoYXJSZWFkeToKKyAgICBzdWJpIFNpbXBs
ZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpi
cmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENoYXJGYWxsVGhy
b3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1
ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCisgICAgYnRpeiB0
MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQo
dDEpCisKKy5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BD
XSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9zdHJpbmcpCisgICAgZGlzcGF0Y2go
MCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0
aXogMTJbUENdLCAub3BOZXdGdW5jVW5jaGVja2VkCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAg
YmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BOZXdGdW5jRG9u
ZQorLm9wTmV3RnVuY1VuY2hlY2tlZDoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3
X2Z1bmMpCisub3BOZXdGdW5jRG9uZToKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9u
ZXdfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9uZXdfZnVuY19leHApCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBkb0NhbGwo
aGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBs
b2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93KQorICAgIGJpbmVx
IHQzLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgYWRkcCAyNCwg
UEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRo
ZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3Qy
XSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3Rv
cmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBsb2FkaSA4IC0gMjRb
UENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisg
ICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNdCisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENv
dW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFn
T2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFnT2Zmc2V0W3Qz
XQorICAgIG1vdmUgdDMsIGNmcgorICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVD
b2RlVGFyZ2V0W3QxXQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworLm9wQ2FsbFNsb3c6Cisg
ICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfY2FsbDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY2FsbCkKKworCitf
bGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xs
aW50X2hlbHBlcl9jb25zdHJ1Y3QpCisKKworX2xsaW50X29wX2NhbGxfdmFyYXJnczoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIF9sbGludF9oZWxwZXJfY2Fs
bF92YXJhcmdzKQorCisKK19sbGludF9vcF9jYWxsX2V2YWw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIAorICAgICMgRXZhbCBpcyBleGVjdXRlZCBpbiBvbmUgb2YgdHdvIG1vZGVzOgorICAg
ICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSByZWFsbHkgaW52b2tpbmcgZXZhbCgpIGlu
IHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBleGVjdXRpb24gaXMgcGVyZm9tZWQgZW50aXJlbHkg
aW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBpdAorICAgICMgICAgcmV0dXJucyB0aGUgUEMgb2YgYSBm
dW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0aGUgcmV0dXJuIHZhbHVlCisgICAgIyAgICB0aGF0
IHRoZSBldmFsIHJldHVybmVkLgorICAgICMKKyAgICAjIDIpIFdlIGZpbmQgdGhhdCB3ZSdyZSBp
bnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwoKSB0aGF0IGlzIG5vdAorICAgICMgICAgdGhl
IHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVscGVyIHJldHVybnMgdGhlIFBDIG9mIHRoZSB0aGluZyB0
bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQuCisgICAgIworICAgICMgVGhpcyBhbGxv
d3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywgd2hpY2ggd291bGQgcmVxdWlyZSBhIHRvdGFsIG9m
CisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0ZSB0aGF0IGNhbm5vdCBiZSBlYXNpbHkg
cGFja2VkIGludG8gdHdvCisgICAgIyByZWdpc3RlcnMgKEMgZnVuY3Rpb25zIGNhbiByZXR1cm4g
dXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5KToKKyAgICAjCisgICAgIyAtIFRoZSBjYWxsIGZy
YW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBtb2RpZmllZAorICAg
ICMgICBieSB0aGUgaGVscGVyLCBidXQgdGhlIGNvbnZlbnRpb24gaXMgdGhhdCBpdCByZXR1cm5z
IGl0LiBJdCdzIG5vdAorICAgICMgICB0b3RhbGx5IGNsZWFyIGlmIHRoYXQncyBuZWNlc3Nhcnks
IHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUuCisgICAgIyAgIEJ1dCB0aGF0J3Mgb3VyIHN0
eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRlciBzbyB3ZSBzdGljayB3aXRoIGl0LgorICAgICMK
KyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBoZWxwZXIgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVk
IHRoZSBldmFsIGFuZCBoYXMKKyAgICAjICAgdGhlIHJldHVybiB2YWx1ZSwgb3IgZGlkIG5vdCBl
eGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3IgdXMKKyAgICAjICAgdG8gY2FsbC4KKyAg
ICAjCisgICAgIyAtIEVpdGhlcjoKKyAgICAjICAgLSBUaGUgSlMgcmV0dXJuIHZhbHVlICh0d28g
cmVnaXN0ZXJzKSwgb3IKKyAgICAjCisgICAgIyAgIC0gVGhlIFBDIHRvIGNhbGwuCisgICAgIwor
ICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2llciB0byBqdXN0IGFsd2F5cyBoYXZlIHRoaXMg
cmV0dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBhIFBDIHRvIGNhbGwsIGFuZCB0aGF0IFBDIG1heSBi
ZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAorICAgICMgcmV0dXJucyB0aGUgSlMgdmFsdWUgdGhh
dCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAKKyAgICBzbG93UGF0aEZvckNhbGwoNCwgX2xsaW50
X2hlbHBlcl9jYWxsX2V2YWwpCisKKworX2xsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50OgorICAg
IGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQ
Q10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAu
b3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4
XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkCisub3BUZWFy
T2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJf
b2ZmX2FjdGl2YXRpb24pCisub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQ6CisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYXJndW1lbnRzOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdWJpIDEsIHQwICAgIyBHZXQgdGhl
IHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcgorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZAorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCisub3BUZWFyT2ZmQXJn
dW1lbnRzTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGRvUmV0dXJuKCkK
KyAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0s
IGNmcgorICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAgIHJldAor
ZW5kCisKK19sbGludF9vcF9yZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dp
dGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3Bf
Y2FsbF9wdXRfcmVzdWx0OgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0
MworICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdmFsdWVQcm9maWxlKHQxLCB0MCwgdDMpCisg
ICAgdHJhY2VFeGVjdXRpb24oKSAjIE5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSBpdCB3b3VsZCBj
bG9iYmVyIHQxLCB0MAorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3JldF9vYmplY3Rf
b3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVw
aWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFJldE9iamVjdE9yVGhpc05v
dE9iamVjdAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJiYiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwg
Lm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgZG9SZXR1cm4oKQorCisub3BSZXRPYmpl
Y3RPclRoaXNOb3RPYmplY3Q6CisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3BfbWV0
aG9kX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIGlnbm9yZSBtZXRob2Qg
Y2hlY2tzIGFuZCB1c2Ugbm9ybWFsIGdldF9ieV9pZCBvcHRpbWl6YXRpb25zLgorICAgIGRpc3Bh
dGNoKDEpCisKKworX2xsaW50X29wX3N0cmNhdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N0cmNhdCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF90b19wcmltaXRpdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhb
UENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9QcmltaXRpdmVJc0ltbQor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJibmVxIFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1By
aW1pdGl2ZVNsb3dDYXNlCisub3BUb1ByaW1pdGl2ZUlzSW1tOgorICAgIHN0b3JlaSB0MSwgVGFn
T2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMs
IDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9QcmltaXRpdmVTbG93Q2FzZToKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfdG9fcHJpbWl0aXZlKQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX2dldF9wbmFtZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9nZXRfcG5hbWVzKQorICAgIGRpc3BhdGNoKDApICMgVGhlIGhlbHBl
ciBlaXRoZXIgYWR2YW5jZXMgdGhlIFBDIG9yIGp1bXBzIHVzIHRvIHNvbWV3aGVyZSBlbHNlLgor
CisKK19sbGludF9vcF9uZXh0X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSAxMltQQ10sIHQxCisgICAgbG9hZGkgMTZbUENdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MSwgOF0sIHQwCisgICAgYmllcSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4
XSwgLm9wTmV4dFBuYW1lRW5kCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6bV9qc1N0cmluZ3NbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDhdLCB0MworICAgIGFk
ZGkgMSwgdDAKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBs
b2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhd
CisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgOFtQ
Q10sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAgICBicG5lcSB0MSwgSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93CisgICAg
bG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0Ml0s
IHQwCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKKyAgICBidHB6
IFt0MF0sIC5vcE5leHRQbmFtZVRhcmdldAorLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29w
OgorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFt0MV0sIE51bGxU
YWcsIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsg
UGF5bG9hZE9mZnNldFt0MV0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0s
IHQxCisgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBhZGRwIDQsIHQw
CisgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wCisub3BOZXh0
UG5hbWVUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMjRbUENdKQorCisub3BOZXh0UG5hbWVF
bmQ6CisgICAgZGlzcGF0Y2goNykKKworLm9wTmV4dFBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfbmV4dF9wbmFtZSkgIyBUaGlzIGVpdGhlciBrZWVwcyB0aGUgUEMgd2hl
cmUgaXQgd2FzIChjYXVzaW5nIHVzIHRvIGxvb3ApIG9yIHNldHMgaXQgdG8gdGFyZ2V0LgorICAg
IGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3B1c2hfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX3Njb3BlKQorICAgIGRpc3Bh
dGNoKDIpCisKKworX2xsaW50X29wX3BvcF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3BvcF9zY29wZSkKKyAgICBkaXNwYXRjaCgxKQor
CisKK19sbGludF9vcF9wdXNoX25ld19zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfbmV3X3Njb3BlKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX2NhdGNoOgorICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJv
bSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKKyAgICAjIG1hY2hpbmUg
Y29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQg
ZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGlu
dF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRoZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wgY2Fs
bHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0aHJvd2luZworICAgICMgY29kZSBtdXN0
IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93aW5nIHRvIHRoZSBpbnRlcnByZXRlciwgYW5k
IGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJv
dy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRh
W3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JU
aHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2Fk
T2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09m
ZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5
bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpl
eGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAgICAgIAorICAgIGxvYWRpIDRbUENdLCB0MgorICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdHJhY2VFeGVjdXRpb24oKSAgIyBUaGlzIG5lZWRzIHRv
IGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIgdDAsIHQxLCB0MiwgdDMg
YWJvdmUuCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3c6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvdykKKyAgICBkaXNw
YXRjaCgyKQorCisKK19sbGludF9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3I6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvd19yZWZlcmVuY2Vf
ZXJyb3IpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfanNyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBhZGRpIDMgKiA0LCBQQywgdDEKKyAg
ICBzdG9yZWkgdDEsIFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisK
K19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBsb2FkcCBbY2ZyLCB0MCwgOF0sIFBDCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxp
bnRfb3BfZGVidWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9kZWJ1ZykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcm9maWxlX3dp
bGxfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6
ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5vcFByb2Zp
bGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV93aWxs
X2NhbGwpCisub3BQcm9maWxlV2lsbENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xs
aW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRw
IEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIHQwCisgICAgYnRw
eiBbdDBdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERvbmU6CisgICAgZGlzcGF0
Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVj
a1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRp
IFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJf
dHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJwcmV0ZXIgKGku
ZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMpLCBzbworICAgICMgdGhlIHRocm93IHRhcmdl
dCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0byBoZXJlLgor
ICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9j
b2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9h
ZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xv
YmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworX2xsaW50X3Rocm93X2R1
cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxs
KHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxv
YWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0ds
b2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKKyMgTGFzdGx5LCBtYWtl
IHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBv
cGNvZGVzLgorIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVuIHVzaW5nIExM
SW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAorIyBhcyBtdWNoLgorCittYWNybyBub3RTdXBw
b3J0ZWQoKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGNyYXNoKCkKKyAgICBlbHNl
CisgICAgICAgICMgV2Ugc2hvdWxkIHVzZSB3aGF0ZXZlciB0aGUgc21hbGxlc3QgcG9zc2libGUg
aW5zdHJ1Y3Rpb24gaXMsIGp1c3QgdG8KKyAgICAgICAgIyBlbnN1cmUgdGhhdCB0aGVyZSBpcyBh
IGdhcCBiZXR3ZWVuIGluc3RydWN0aW9uIGxhYmVscy4gSWYgbXVsdGlwbGUKKyAgICAgICAgIyBz
bWFsbGVzdCBpbnN0cnVjdGlvbnMgZXhpc3QsIHdlIHNob3VsZCBwaWNrIHRoZSBvbmUgdGhhdCBp
cyBtb3N0CisgICAgICAgICMgbGlrZWx5IHJlc3VsdCBpbiBleGVjdXRpb24gYmVpbmcgaGFsdGVk
LiBDdXJyZW50bHkgdGhhdCBpcyB0aGUgYnJlYWsKKyAgICAgICAgIyBpbnN0cnVjdGlvbiBvbiBh
bGwgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBpbnRlcmVzdGVkIGluLiAoQnJlYWsgaXMgaW50MworICAg
ICAgICAjIG9uIEludGVsLCB3aGljaCBpcyAxIGJ5dGUsIGFuZCBia3B0IG9uIEFSTXY3LCB3aGlj
aCBpcyAyIGJ5dGVzLikKKyAgICAgICAgYnJlYWsKKyAgICBlbmQKK2VuZAorCitfbGxpbnRfb3Bf
Z2V0X2FycmF5X2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3Vz
dG9tX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3Vz
dG9tX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3Vz
dG9tX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZW5l
cmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX2No
YWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3By
b3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3Nl
bGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9wcm90bzoKKyAg
ICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3NlbGY6CisgICAgbm90U3Vw
cG9ydGVkKCkKKworX2xsaW50X29wX2dldF9zdHJpbmdfbGVuZ3RoOgorICAgIG5vdFN1cHBvcnRl
ZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQor
CitfbGxpbnRfb3BfcHV0X2J5X2lkX3JlcGxhY2U6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xs
aW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uOgorICAgIG5vdFN1cHBvcnRlZCgpCisKKworIyBJ
bmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50LgorX2xsaW50X2VuZDoKKyAgICBjcmFzaCgpCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworI2lmIEVOQUJMRShMTElO
VCkKKworI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorCisjaW5jbHVkZSAiTExJ
bnRBc3NlbWJseS5oIgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorI2Rl
ZmluZSBMb3dMZXZlbEludGVycHJldGVyX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgor
CisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKKyNkZWZpbmUgTExJ
TlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxlbmd0aCkgZXh0ZXJuICJDIiB2b2lkIGxsaW50
XyMjb3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKExMSU5UX0lOU1RSVUNUSU9OX0RF
Q0wpOworI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wKKworZXh0ZXJuICJDIiB2b2lkIGxs
aW50X2JlZ2luKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW5kKCk7CitleHRlcm4gIkMiIHZv
aWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2V2YWxf
cHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9s
b2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJv
bG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9j
aGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9nZW5lcmljX3JldHVybl9wb2ludCgp
OworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUoKTsK
K2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKCk7CisK
KyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMb3dMZXZlbEludGVycHJldGVy
X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTkzIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitjbGFzcyBTcGVjaWFsUmVnaXN0ZXIKKyAgZGVmIGluaXRpYWxpemUobmFtZSkK
KyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgQG5h
bWUKKyAgZW5kCitlbmQKKworQVJNdjdfREFUQV9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJp
cCIpCitBUk12N19BRERSX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoInIzIikKKworZGVmIG1v
dmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJlbnRseSB3ZSBvbmx5IGhhbmRs
ZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1vdi9tb3Z0IGZvciB0aGUgY29t
cGxleCBvbmVzLgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2CisgICAgJGFzbS5wdXRz
ICJtb3Z3IFwjI3t2YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzaWYgKH52
YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20ucHV0cyAibXZudyBcIyN7fnZh
bHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNlCisgICAgJGFzbS5wdXRzICJt
b3Z3IFwjI3t2YWx1ZSAmIDB4ZmZmZn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBp
ZiAodmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCisgICAgICAkYXNtLnB1dHMgIm1vdnQgXCMje3Zh
bHVlID4+IDE2fSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorICBlbmQKK2Vu
ZAorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUK
KyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICJyMCIKKyAgICB3aGVuICJ0MSIsICJh
MSIsICJyMSIKKyAgICAgICJyMSIKKyAgICB3aGVuICJ0MiIsICJhMiIKKyAgICAgICJyMiIKKyAg
ICB3aGVuICJhMyIKKyAgICAgICJyMyIKKyAgICB3aGVuICJ0MyIKKyAgICAgICJyNCIKKyAgICB3
aGVuICJ0NCIKKyAgICAgICJyNyIKKyAgICB3aGVuICJjZnIiCisgICAgICAicjUiCisgICAgZWxz
ZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9z
c2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlP
cGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3Jl
V3JhcAorICAgIHlpZWxkCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYg
YXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZyIgorICAgICAg
ImQwIgorICAgIHdoZW4gImZyMSIsCisgICAgICAiZDEiCisgICAgd2hlbiAiZnIyIgorICAgICAg
ImQyIgorICAgIHdoZW4gImZyMyIKKyAgICAgICJkMyIKKyAgICB3aGVuICJmcjQiCisgICAgICAi
ZDQiCisgICAgd2hlbiAiZnI1IgorICAgICAgImQ1IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFu
ZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3
T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZCBz
ZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgYXJtVjdPcGVyYW5kCisg
ICAgcmFpc2UgIkludmFsaWQgaW1tZWRpYXRlICN7dmFsdWV9IiBpZiB2YWx1ZSA8IDAgb3IgdmFs
dWUgPiAyNTUKKyAgICAiIyR7dmFsdWV9IgorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQ
b3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9y
eU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3Rv
cmVXcmFwCisgICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCittb2R1bGUgQVJNdjdBZGRyZXNz
VXRpbGl0aWVzCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICBzZWxmLmFybVY3UHJlcGFy
ZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICRhc20ucHV0cyAiXHRsZHIgI3tzZWxmLmFybVY3
UG9zc2libHlNZW1vcnlPcGVyYW5kfSwgI3tBUk12N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9Igor
ICAgIHlpZWxkIEFSTXY3X0RBVEFfUkVHCisgICAgJGFzbS5wdXRzICJcdHN0ciAje0FSTXY3X0RB
VEFfUkVHLmFybVY3T3BlcmFuZH0sICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFuZH0i
CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NVdGls
aXRpZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYg
b2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAgIG1vdmVJ
bW1lZGlhdGUob2Zmc2V0LnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgICBlbmQKKyAgZW5kCisg
IAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUg
PCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVy
YW5kfSwgI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgICBlbHNlCisgICAgICAi
WyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje29mZnNldC5hcm1WN09wZXJhbmR9XSIKKyAgICBlbmQK
KyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRp
bGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlm
IG9mZnNldC52YWx1ZSAhPSAwCisgICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1ZSwgQVJN
djdfQUREUl9SRUcpCisgICAgICAkYXNtLnB1dHMgImFkZHcgI3tBUk12N19BRERSX1JFRy5hcm1W
N09wZXJhbmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAor
ICAgICAgIlsje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVy
YW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVsc2UKKyAgICAgICJbI3tiYXNlLmFybVY3T3Bl
cmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVuZAor
ICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJl
c3NVdGlsaXRpZXMKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQK
KyAgICBtb3ZlSW1tZWRpYXRlKGFkZHJlc3MudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICBlbmQK
KyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICJbI3tBUk12N19BRERS
X1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgZW5kCitlbmQKKworCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwOCBAQAor
IyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgor
cmVxdWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2Vy
IgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2NsYXNzIEFzc2Vt
YmxlcgorICBkZWYgaW5pdGlhbGl6ZShvdXRwKQorICAgIEBvdXRwID0gb3V0cAorICAgIEBzdGF0
ZSA9IDpjcHAKKyAgZW5kCisgIAorICBkZWYgZW50ZXJBc20KKyAgICBAb3V0cC5wdXRzICJhc20g
KCIKKyAgICBAc3RhdGUgPSA6YXNtCisgIGVuZAorICAKKyAgZGVmIGxlYXZlQXNtCisgICAgQG91
dHAucHV0cyAiKTsiCisgICAgQHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBpbkFzbQor
ICAgIGVudGVyQXNtCisgICAgeWllbGQKKyAgICBsZWF2ZUFzbQorICBlbmQKKyAgCisgIGRlZiBw
dXRzKGxpbmUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAgQG91dHAucHV0
cygobGluZSArICJcbiIpLmluc3BlY3QpCisgIGVuZAorICAKKyAgZGVmIGNvbW1lbnQodGV4dCkK
KyAgICBAb3V0cC5wdXRzICIvLyAje3RleHR9IgorICBlbmQKK2VuZAorCithc21GaWxlID0gQVJH
Vi5zaGlmdAorb2Zmc2V0c0ZpbGUgPSBBUkdWLnNoaWZ0CitvdXRwdXRGbG5tID0gQVJHVi5zaGlm
dAorCitvZmZzZXRzTGlzdCwgY29uZmlnSW5kZXggPSBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbklu
ZGV4KG9mZnNldHNGaWxlKQoraW5wdXREYXRhID0gSU86OnJlYWQoYXNtRmlsZSkKKworaW5wdXRI
YXNoID0KKyAgIi8vIG9mZmxpbmVhc20gaW5wdXQgaGFzaDogIiArIERpZ2VzdDo6U0hBMS5oZXhk
aWdlc3QoaW5wdXREYXRhKSArCisgICIgIiArIERpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoKG9mZnNl
dHNMaXN0ICsgW2NvbmZpZ0luZGV4XSkuam9pbignICcpKQorCitpZiBGaWxlVGVzdC5leGlzdD8g
b3V0cHV0RmxubQorICBGaWxlLm9wZW4ob3V0cHV0RmxubSwgInIiKSB7CisgICAgfCBpbnAgfAor
ICAgIGZpcnN0TGluZSA9IGlucC5nZXRzCisgICAgaWYgZmlyc3RMaW5lIGFuZCBmaXJzdExpbmUu
Y2hvbXAgPT0gaW5wdXRIYXNoCisgICAgICAkc3RkZXJyLnB1dHMgIk5vdGhpbmcgY2hhbmdlZC4i
CisgICAgICBleGl0IDAKKyAgICBlbmQKKyAgfQorZW5kCisKK0ZpbGUub3BlbihvdXRwdXRGbG5t
LCAidyIpIHsKKyAgfCBvdXRwIHwKKyAgJG91dHB1dCA9IG91dHAKKyAgJG91dHB1dC5wdXRzIGlu
cHV0SGFzaAorICAKKyAgJGFzbSA9IEFzc2VtYmxlci5uZXcoJG91dHB1dCkKKyAgCisgIGFzdCA9
IHBhcnNlKGxleChpbnB1dERhdGEpKQorICAKKyAgZm9yU2V0dGluZ3MoY29tcHV0ZVNldHRpbmdz
Q29tYmluYXRpb25zKGFzdClbY29uZmlnSW5kZXhdLCBhc3QpIHsKKyAgICB8IGNvbmNyZXRlU2V0
dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICBhc3NlcnRDb25maWd1cmF0aW9uKGNv
bmNyZXRlU2V0dGluZ3MpCisgICAgbG93TGV2ZWxBU1QgPSBsb3dMZXZlbEFTVC5yZXNvbHZlKCpi
dWlsZE9mZnNldHNNYXAobG93TGV2ZWxBU1QsIG9mZnNldHNMaXN0KSkKKyAgICBlbWl0Q29kZUlu
Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCkgewor
ICAgICAgJGFzbS5pbkFzbSB7CisgICAgICAgIGxvd0xldmVsQVNULmxvd2VyKGJhY2tlbmQpCisg
ICAgICB9CisgICAgfQorICB9Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9hc3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vYXN0LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vYXN0LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxNyBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgQmFzZSB1dGlsaXR5IHR5cGVzIGZvciB0aGUgQVNULiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyBW
YWxpZCBtZXRob2RzIGZvciBOb2RlOgorIworIyBub2RlLmNoaWxkcmVuIC0+IFJldHVybnMgYW4g
YXJyYXkgb2YgaW1tZWRpYXRlIGNoaWxkcmVuLgorIworIyBub2RlLmRlc2NlbmRlbnRzIC0+IFJl
dHVybnMgYW4gYXJyYXkgb2YgYWxsIHN0cmljdCBkZXNjZW5kYW50cyAoY2hpbGRyZW4KKyMgICAg
IGFuZCBjaGlsZHJlbiBvZiBjaGlsZHJlbiwgdHJhbnNpdGl2ZWx5KS4KKyMKKyMgbm9kZS5mbGF0
dGVuIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgc3RyaWN0IGRlc2NlbmRhbnRz
IGFuZAorIyAgICAgdGhlIG5vZGUgaXRzZWxmLgorIworIyBub2RlLmZpbHRlcih0eXBlKSAtPiBS
ZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhvc2UgZWxlbWVudHMgaW4KKyMgICAgIG5vZGUu
ZmxhdHRlbiB0aGF0IGFyZSBvZiB0aGUgZ2l2ZW4gdHlwZSAoaXNfYT8gdHlwZSByZXR1cm5zIHRy
dWUpLgorIworIyBub2RlLm1hcENoaWxkcmVue3x2fCAuLi59IC0+IFJldHVybnMgYSBuZXcgbm9k
ZSB3aXRoIGFsbCBjaGlsZHJlbgorIyAgICAgcmVwbGFjZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZl
biBibG9jay4KKyMKKyMgRXhhbXBsZXM6CisjCisjIG5vZGUuZmlsdGVyKFNldHRpbmcpLnVuaXEg
LT4gUmV0dXJucyBhbGwgb2YgdGhlIHNldHRpbmdzIHRoYXQgdGhlIEFTVCdzCisjICAgICBJZlRo
ZW5FbHNlIGJsb2NrcyBkZXBlbmQgb24uCisjCisjIG5vZGUuZmlsdGVyKFN0cnVjdE9mZnNldCku
dW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc3RydWN0dXJlIG9mZnNldHMKKyMgICAgIHRoYXQg
dGhlIEFTVCBkZXBlbmRzIG9uLgorCitjbGFzcyBOb2RlCisgIGF0dHJfcmVhZGVyIDpjb2RlT3Jp
Z2luCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIEBjb2RlT3JpZ2luID0g
Y29kZU9yaWdpbgorICBlbmQKKyAgCisgIGRlZiBjb2RlT3JpZ2luU3RyaW5nCisgICAgImxpbmUg
bnVtYmVyICN7QGNvZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBkZXNjZW5kYW50cworICAg
IGNoaWxkcmVuLmNvbGxlY3R7fHZ8IHYuZmxhdHRlbn0uZmxhdHRlbgorICBlbmQKKyAgCisgIGRl
ZiBmbGF0dGVuCisgICAgW3NlbGZdICsgZGVzY2VuZGFudHMKKyAgZW5kCisgIAorICBkZWYgZmls
dGVyKHR5cGUpCisgICAgZmxhdHRlbi5zZWxlY3R7fHZ8IHYuaXNfYT8gdHlwZX0KKyAgZW5kCitl
bmQKKworY2xhc3MgTm9DaGlsZHJlbiA8IE5vZGUKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
bikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IFtdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgc2VsZgorICBlbmQKK2VuZAor
CitjbGFzcyBTdHJ1Y3RPZmZzZXRLZXkKKyAgYXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisg
IAorICBkZWYgaW5pdGlhbGl6ZShzdHJ1Y3QsIGZpZWxkKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QK
KyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisgIGRlZiBoYXNoCisgICAgQHN0cnVjdC5o
YXNoICsgQGZpZWxkLmhhc2ggKiAzCisgIGVuZAorICAKKyAgZGVmIGVxbD8ob3RoZXIpCisgICAg
QHN0cnVjdCA9PSBvdGhlci5zdHJ1Y3QgYW5kIEBmaWVsZCA9PSBvdGhlci5maWVsZAorICBlbmQK
K2VuZAorICAgIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQVNUIG5vZGVz
LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgU3RydWN0T2Zm
c2V0IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5kCisg
IAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yRmllbGQoY29kZU9yaWdpbiwg
c3RydWN0LCBmaWVsZCkKKyAgICBrZXkgPSBTdHJ1Y3RPZmZzZXRLZXkubmV3KHN0cnVjdCwgZmll
bGQpCisgICAgCisgICAgdW5sZXNzIEBAbWFwcGluZ1trZXldCisgICAgICBAQG1hcHBpbmdba2V5
XSA9IFN0cnVjdE9mZnNldC5uZXcoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBlbmQK
KyAgICBAQG1hcHBpbmdba2V5XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7c3RydWN0
fTo6I3tmaWVsZH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAgICBpZiBAc3RydWN0
ICE9IG90aGVyLnN0cnVjdAorICAgICAgcmV0dXJuIEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAor
ICAgIGVuZAorICAgIEBmaWVsZCA8PT4gb3RoZXIuZmllbGQKKyAgZW5kCitlbmQKKworY2xhc3Mg
U2l6ZW9mIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0CisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
c3RydWN0ID0gc3RydWN0CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBz
ZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHVubGVzcyBAQG1hcHBpbmdbc3Ry
dWN0XQorICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBTaXplb2YubmV3KGNvZGVPcmlnaW4sIHN0
cnVjdCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbc3RydWN0XQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgInNpemVvZiAje0BzdHJ1Y3R9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIp
CisgICAgQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVk
aWF0ZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnZhbHVlCisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YWx1
ZSA9IHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3t2YWx1ZX0iCisgIGVuZAor
ICAKKyAgZGVmID09KG90aGVyKQorICAgIG90aGVyLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3RoZXIu
dmFsdWUgPT0gQHZhbHVlCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMgPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBs
ZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBb
QGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBZGRJbW1l
ZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICsgI3tyaWdodC5kdW1wfSki
CisgIGVuZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVy
IDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJp
Z2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0
ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0K
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBTdWJJbW1lZGlhdGVzLm5ldyhjb2Rl
T3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IC0gI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisK
K2NsYXNzIE11bEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBk
ZWYgbWFwQ2hpbGRyZW4KKyAgICBNdWxJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQg
QGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3ts
ZWZ0LmR1bXB9ICogI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVk
aWF0ZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNo
aWxkCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BjaGlsZF0KKyAgZW5kCisgIAor
ICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOZWdJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sICh5aWVs
ZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigtI3tAY2hpbGQuZHVtcH0p
IgorICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICBhdHRyX3Jl
YWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGlu
ZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5s
ZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gUmVnaXN0ZXJJRC5u
ZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3Rl
cklEIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0g
bmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1l
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBt
YXBwaW5nW25hbWVdID0gRlBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVu
ZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQor
ICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIg
Om5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7
fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBA
QG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFZhcmlhYmxlLm5ldyhjb2Rl
T3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzIDwgTm9kZQor
ICBhdHRyX3JlYWRlciA6YmFzZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgYmFzZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBi
YXNlCisgICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IFtAYmFzZSwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBZGRy
ZXNzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQG9mZnNldCkpCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQuZHVtcH1bI3tiYXNlLmR1bXB9XSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFzZSwg
OmluZGV4LCA6c2NhbGUsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QGJhc2UgPSBiYXNlCisgICAgQGluZGV4ID0gaW5kZXgKKyAgICBAc2NhbGUgPSBzY2FsZQorICAg
IHJhaXNlIHVubGVzcyBbMSwgMiwgNCwgOF0ubWVtYmVyPyBAc2NhbGUKKyAgICBAb2Zmc2V0ID0g
b2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BiYXNlLCBAaW5kZXgsIEBv
ZmZzZXRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQmFzZUluZGV4Lm5ldyhj
b2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQGluZGV4KSwgQHNjYWxlLCAoeWllbGQg
QG9mZnNldCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQuZHVtcH1bI3ti
YXNlLmR1bXB9LCAje2luZGV4LmR1bXB9LCAje3NjYWxlfV0iCisgIGVuZAorZW5kCisKK2NsYXNz
IEFic29sdXRlQWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmFkZHJlc3MKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGFkZHJlc3MpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICIje2FkZHJlc3MuZHVtcH1bXSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24gPCBO
b2RlCisgIGF0dHJfcmVhZGVyIDpvcGNvZGUsIDpvcGVyYW5kcworICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgb3Bjb2RlLCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBvcGNvZGUgPSBvcGNvZGUKKyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcworICBlbmQKKyAg
CisgIGRlZiBjaGlsZHJlbgorICAgIG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxk
cmVuKCZwcm9jKQorICAgIEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBAb3Bjb2RlLCBAb3Bl
cmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdCIgKyBvcGNv
ZGUudG9fcyArICIgIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKQor
ICBlbmQKK2VuZAorCitjbGFzcyBFcnJvciA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIlx0ZXJyb3IiCisgIGVuZAorZW5kCisKK2NsYXNzIENvbnN0RGVjbCA8IE5vZGUKKyAg
YXR0cl9yZWFkZXIgOnZhcmlhYmxlLCA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YXJp
YWJsZSA9IHZhcmlhYmxlCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBbQHZhcmlhYmxlLCBAdmFsdWVdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxk
cmVuCisgICAgQ29uc3REZWNsLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHZhcmlhYmxlKSwgKHlp
ZWxkIEB2YWx1ZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiY29uc3QgI3tAdmFyaWFi
bGUuZHVtcH0gPSAje0B2YWx1ZS5kdW1wfSIKKyAgZW5kCitlbmQKKworJGxhYmVsTWFwcGluZyA9
IHt9CisKK2NsYXNzIExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9y
aWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFi
ZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlz
X2E/IExhYmVsCisgICAgZWxzZQorICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExhYmVsLm5l
dyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xhc3Mg
TG9jYWxMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
bmFtZSA9IG5hbWUKKyAgZW5kCisKKyAgQEB1bmlxdWVOYW1lQ291bnRlciA9IDAKKyAgCisgIGRl
ZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25h
bWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAk
bGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExvY2FsTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFi
ZWxNYXBwaW5nW25hbWVdID0gTG9jYWxMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBl
bmQKKyAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIHNlbGYudW5pcXVl
KGNvbW1lbnQpCisgICAgbmV3TmFtZSA9ICJfI3tjb21tZW50fSIKKyAgICBpZiAkbGFiZWxNYXBw
aW5nW25ld05hbWVdCisgICAgICB3aGlsZSAkbGFiZWxNYXBwaW5nW25ld05hbWUgPSAiXyN7QEB1
bmlxdWVOYW1lQ291bnRlcn1fI3tjb21tZW50fSJdCisgICAgICAgIEBAdW5pcXVlTmFtZUNvdW50
ZXIgKz0gMQorICAgICAgZW5kCisgICAgZW5kCisgICAgZm9yTmFtZShuaWwsIG5ld05hbWUpCisg
IGVuZAorICAKKyAgZGVmIGNsZWFuTmFtZQorICAgIGlmIG5hbWUgPX4gL15cLi8KKyAgICAgICJf
IiArIG5hbWVbMS4uLTFdCisgICAgZWxzZQorICAgICAgbmFtZQorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJl
ZmVyZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsYWJlbCA9
IGxhYmVsCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0KKyAgZW5kCisg
IAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwg
KHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorZW5kCisKK2NsYXNz
IExvY2FsTGFiZWxSZWZlcmVuY2UgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpsYWJlbAor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTG9jYWxMYWJlbFJl
ZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVm
IG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5u
YW1lCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6
bGlzdAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGlzdCkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBsaXN0ID0gbGlzdAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgor
ICAgIGxpc3QKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgU2VxdWVu
Y2UubmV3KGNvZGVPcmlnaW4sIEBsaXN0Lm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICBsaXN0LmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiXG4iKQorICBlbmQKK2VuZAor
CitjbGFzcyBUcnVlIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQorICAgIHN1cGVyKG5p
bCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNlID0gVHJ1ZS5uZXcKKyAgCisgIGRlZiBzZWxmLmlu
c3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIHRydWUK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJ0cnVlIgorICBlbmQKK2VuZAorCitjbGFzcyBG
YWxzZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVu
ZAorICAKKyAgQEBpbnN0YW5jZSA9IEZhbHNlLm5ldworICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UK
KyAgICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVmIHZhbHVlCisgICAgZmFsc2UKKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgICJmYWxzZSIKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZUNs
YXNzCisgIGRlZiBhc05vZGUKKyAgICBUcnVlLmluc3RhbmNlCisgIGVuZAorZW5kCisKK2NsYXNz
IEZhbHNlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAgIEZhbHNlLmluc3RhbmNlCisgIGVuZAorZW5k
CisKK2NsYXNzIFNldHRpbmcgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRl
ZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25h
bWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBTZXR0aW5nLm5ldyhjb2RlT3JpZ2luLCBuYW1l
KQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDps
ZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0g
cmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAg
ZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBbmQubmV3KGNvZGVPcmlnaW4sICh5aWVs
ZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigj
e2xlZnQuZHVtcH0gYW5kICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBPciA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVm
dCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgor
ICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE9y
Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IG9yICN7cmlnaHQuZHVtcH0pIgorICBl
bmQKK2VuZAorCitjbGFzcyBOb3QgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAY2hpbGQgPSBjaGlsZAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVm
dCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5vdC5uZXcoY29k
ZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKG5v
dCAje2NoaWxkLmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgU2tpcCA8IE5vQ2hpbGRyZW4K
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0c2tpcCIKKyAgZW5kCitlbmQKKworY2xhc3MgSWZU
aGVuRWxzZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnByZWRpY2F0ZSwgOnRoZW5DYXNlCisgIGF0
dHJfYWNjZXNzb3IgOmVsc2VDYXNlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBw
cmVkaWNhdGUsIHRoZW5DYXNlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHByZWRpY2F0
ZSA9IHByZWRpY2F0ZQorICAgIEB0aGVuQ2FzZSA9IHRoZW5DYXNlCisgICAgQGVsc2VDYXNlID0g
U2tpcC5uZXcoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBpZiBA
ZWxzZUNhc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2UsIEBlbHNlQ2FzZV0KKyAgICBl
bHNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNlXQorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBtYXBDaGlsZHJlbgorICAgIElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBA
cHJlZGljYXRlKSwgKHlpZWxkIEB0aGVuQ2FzZSksICh5aWVsZCBAZWxzZUNhc2UpKQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgImlmICN7cHJlZGljYXRlLmR1bXB9XG4iICsgdGhlbkNhc2Uu
ZHVtcCArICJcbmVsc2VcbiIgKyBlbHNlQ2FzZS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2VuZAor
CitjbGFzcyBNYWNybyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5hbWUsIDp2YXJpYWJsZXMsIDpi
b2R5CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMsIGJv
ZHkpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgICBAdmFyaWFi
bGVzID0gdmFyaWFibGVzCisgICAgQGJvZHkgPSBib2R5CisgIGVuZAorICAKKyAgZGVmIGNoaWxk
cmVuCisgICAgQHZhcmlhYmxlcyArIFtAYm9keV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRy
ZW4KKyAgICBNYWNyby5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEB2YXJpYWJsZXMubWFwe3x2fCB5
aWVsZCB2fSwgKHlpZWxkIEBib2R5KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJtYWNy
byAje25hbWV9KCIgKyB2YXJpYWJsZXMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpICsg
IilcbiIgKyBib2R5LmR1bXAgKyAiXG5lbmQiCisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvQ2Fs
bCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5hbWUsIDpvcGVyYW5kcworICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAbmFtZSA9IG5hbWUKKyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcworICAgIHJhaXNlIHVu
bGVzcyBAb3BlcmFuZHMKKyAgICBAb3BlcmFuZHMuZWFjaHt8dnwgcmFpc2UgdW5sZXNzIHZ9Cisg
IGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgQG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVm
IG1hcENoaWxkcmVuKCZwcm9jKQorICAgIE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgQG5hbWUs
IEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0I3tu
YW1lfSgiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpICsgIikiCisg
IGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tl
bmRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Jh
Y2tlbmRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIng4NiIK
KworQkFDS0VORFMgPQorICBbCisgICAiWDg2IiwKKyAgICJBUk12NyIKKyAgXQorCitXT1JLSU5H
X0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIKKyAgXQorCitCQUNLRU5EX1BBVFRFUk4gPSBSZWdl
eHAubmV3KCdcXEEoJyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFonKQorCitjbGFzcyBO
b2RlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIHNlbmQoImxvd2VyIiArIG5hbWUpCisgIGVuZAor
ZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBsb3dlcigpIGZvciB0aG9zZSBub2RlcyB0aGF0IGFyZSBi
YWNrZW5kLWFnbm9zdGljCisKK2RlZiBzYW5pdGl6ZUxhYmVsTmFtZShuYW1lKQorICAjIFNvbWUg
cGxhdGZvcm1zIGRvbid0IHdhbnQgdGhlIGxlYWRpbmcgIl8iLiBJZiB3ZSBldmVyIHdhbnQgdG8g
ZG8gc29tZXRoaW5nCisgICMgYWJvdXQgdGhhdCwgaXQgd291bGQgYmUgaGVyZS4KKyAgbmFtZQor
ZW5kCisKK2NsYXNzIExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAgICRhc20ucHV0cyAiLmds
b2JsICN7c2FuaXRpemVMYWJlbE5hbWUoc2VsZi5uYW1lKX0iCisgICAgJGFzbS5wdXRzICIje3Nh
bml0aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxM
YWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHMgIkxfb2ZmbGluZWFzbV8je3Nl
bGYubmFtZVsxLi4tMV19OiIKKyAgZW5kCitlbmQKKworY2xhc3MgU2tpcAorICBkZWYgbG93ZXIo
bmFtZSkKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIGxvd2VyKG5hbWUpCisg
ICAgQGxpc3QuZWFjaCB7CisgICAgICB8IG5vZGUgfAorICAgICAgbm9kZS5sb3dlcihuYW1lKQor
ICAgIH0KKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zm
c2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NyBAQAorIyEvdXNyL2Jp
bi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiskOiA8
PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAi
ZGlnZXN0L3NoYTEiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWly
ZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2lucHV0RmxubSA9IEFSR1Yuc2hp
ZnQKK291dHB1dEZsbm0gPSBBUkdWLnNoaWZ0CisKK2RlZiBlbWl0TWFnaWNOdW1iZXIKKyAgT0ZG
U0VUX01BR0lDX05VTUJFUlMuZWFjaCB7CisgICAgfCBudW1iZXIgfAorICAgICRvdXRwdXQucHV0
cyAiI3tudW1iZXJ9LCIKKyAgfQorZW5kCisKK2lucHV0RGF0YSA9IElPOjpyZWFkKGlucHV0Rmxu
bSkKK2lucHV0SGFzaCA9IERpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoaW5wdXREYXRhKQorCitpZiBG
aWxlVGVzdC5leGlzdD8gb3V0cHV0RmxubQorICBGaWxlLm9wZW4ob3V0cHV0RmxubSwgInIiKSB7
CisgICAgfCBpbnAgfAorICAgIGZpcnN0TGluZSA9IGlucC5nZXRzCisgICAgaWYgZmlyc3RMaW5l
IGFuZCBmaXJzdExpbmUuY2hvbXAgPT0gIi8vIG9mZmxpbmVhc20gaW5wdXQgaGFzaDogI3tpbnB1
dEhhc2h9IgorICAgICAgJHN0ZGVyci5wdXRzICJOb3RoaW5nIGNoYW5nZWQuIgorICAgICAgZXhp
dCAwCisgICAgZW5kCisgIH0KK2VuZAorCitvcmlnaW5hbEFTVCA9IHBhcnNlKGxleChpbnB1dERh
dGEpKQorCitGaWxlLm9wZW4ob3V0cHV0RmxubSwgInciKSB7CisgIHwgb3V0cCB8CisgICRvdXRw
dXQgPSBvdXRwCisgIG91dHAucHV0cyAiLy8gb2ZmbGluZWFzbSBpbnB1dCBoYXNoOiAje2lucHV0
SGFzaH0iCisgIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhvcmlnaW5hbEFTVCkgeworICAg
IHwgc2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfAorICAgIG9mZnNldHNMaXN0ID0gYXN0
LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorICAgIHNpemVzTGlzdCA9IGFzdC5maWx0
ZXIoU2l6ZW9mKS51bmlxLnNvcnQKKyAgICAKKyAgICBsZW5ndGggPSAoT0ZGU0VUX01BR0lDX05V
TUJFUlMuc2l6ZSArIDEpICogKDEgKyBvZmZzZXRzTGlzdC5zaXplICsgc2l6ZXNMaXN0LnNpemUp
CisgICAgCisgICAgb3V0cC5wdXRzICJzdGF0aWMgY29uc3QgdW5zaWduZWQgZXh0cmFjdG9yVGFi
bGVbI3tsZW5ndGh9XSA9IHsiCisgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgb3V0cC5wdXRzICIj
e2luZGV4fSwiCisgICAgb2Zmc2V0c0xpc3QuZWFjaCB7CisgICAgICB8IG9mZnNldCB8CisgICAg
ICBlbWl0TWFnaWNOdW1iZXIKKyAgICAgIG91dHAucHV0cyAiT0ZGTElORV9BU01fT0ZGU0VUT0Yo
I3tvZmZzZXQuc3RydWN0fSwgI3tvZmZzZXQuZmllbGR9KSwiCisgICAgfQorICAgIHNpemVzTGlz
dC5lYWNoIHsKKyAgICAgIHwgb2Zmc2V0IHwKKyAgICAgIGVtaXRNYWdpY051bWJlcgorICAgICAg
b3V0cC5wdXRzICJzaXplb2YoI3tvZmZzZXQuc3RydWN0fSksIgorICAgIH0KKyAgICBvdXRwLnB1
dHMgIn07IgorICB9Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9p
bnN0cnVjdGlvbnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vaW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4
OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworTUFDUk9fSU5TVFJV
Q1RJT05TID0KKyAgWworICAgImFkZGkiLAorICAgImFuZGkiLAorICAgImxzaGlmdGkiLAorICAg
Im11bGkiLAorICAgIm5lZ2kiLAorICAgIm5vdGkiLAorICAgIm9yaSIsCisgICAicnNoaWZ0aSIs
CisgICAidXJzaGlmdGkiLAorICAgInN1YmkiLAorICAgInhvcmkiLAorICAgImxvYWRpIiwKKyAg
ICJsb2FkYiIsCisgICAibG9hZGgiLAorICAgInN0b3JlaSIsCisgICAic3RvcmViIiwKKyAgICJs
b2FkZCIsCisgICAibW92ZWQiLAorICAgInN0b3JlZCIsCisgICAiYWRkZCIsCisgICAiZGl2ZCIs
CisgICAic3ViZCIsCisgICAibXVsZCIsCisgICAic3FydGQiLAorICAgImNpMmQiLAorICAgImZp
aTJkIiwgIyB1c2FnZTogZmlpMmQgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8
Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPiwgPGZwcj4KKyAgICJmZDJpaSIsICMgdXNh
Z2U6IGZkMmlpIDxmcHI+LCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIg
d2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+CisgICAiYmRlcSIsCisgICAiYmRuZXEiLAorICAg
ImJkZ3QiLAorICAgImJkZ3RlcSIsCisgICAiYmRsdCIsCisgICAiYmRsdGVxIiwKKyAgICJiZGVx
dW4iLAorICAgImJkbmVxdW4iLAorICAgImJkZ3R1biIsCisgICAiYmRndGVxdW4iLAorICAgImJk
bHR1biIsCisgICAiYmRsdGVxdW4iLAorICAgImJ0ZDJpIiwKKyAgICJ0ZDJpIiwKKyAgICJiY2Qy
aSIsCisgICAibW92ZHoiLAorICAgInBvcCIsCisgICAicHVzaCIsCisgICAibW92ZSIsCisgICAi
c3hpMnAiLAorICAgInp4aTJwIiwKKyAgICJub3AiLAorICAgImJpZXEiLAorICAgImJpbmVxIiwK
KyAgICJiaWEiLAorICAgImJpYWVxIiwKKyAgICJiaWIiLAorICAgImJpYmVxIiwKKyAgICJiaWd0
IiwKKyAgICJiaWd0ZXEiLAorICAgImJpbHQiLAorICAgImJpbHRlcSIsCisgICAiYmJlcSIsCisg
ICAiYmJuZXEiLAorICAgImJiYSIsCisgICAiYmJhZXEiLAorICAgImJiYiIsCisgICAiYmJiZXEi
LAorICAgImJiZ3QiLAorICAgImJiZ3RlcSIsCisgICAiYmJsdCIsCisgICAiYmJsdGVxIiwKKyAg
ICJidGlvIiwKKyAgICJidGlzIiwKKyAgICJidGl6IiwKKyAgICJidGlueiIsCisgICAiYnRibyIs
CisgICAiYnRicyIsCisgICAiYnRieiIsCisgICAiYnRibnoiLAorICAgImptcCIsCisgICAiYmFk
ZGlvIiwKKyAgICJiYWRkaXMiLAorICAgImJhZGRpeiIsCisgICAiYmFkZGlueiIsCisgICAiYnN1
YmlvIiwKKyAgICJic3ViaXMiLAorICAgImJzdWJpeiIsCisgICAiYnN1YmlueiIsCisgICAiYm11
bGlvIiwKKyAgICJibXVsaXMiLAorICAgImJtdWxpeiIsCisgICAiYm11bGlueiIsCisgICAiYm9y
aW8iLAorICAgImJvcmlzIiwKKyAgICJib3JpeiIsCisgICAiYm9yaW56IiwKKyAgICJicmVhayIs
CisgICAiY2FsbCIsCisgICAicmV0IiwKKyAgICJjaWVxIiwKKyAgICJjaW5lcSIsCisgICAiY2lh
IiwKKyAgICJjaWFlcSIsCisgICAiY2liIiwKKyAgICJjaWJlcSIsCisgICAiY2lndCIsCisgICAi
Y2lndGVxIiwKKyAgICJjaWx0IiwKKyAgICJjaWx0ZXEiLAorICAgInRpbyIsCisgICAidGlzIiwK
KyAgICJ0aXoiLAorICAgInRpbnoiLAorICAgInRibyIsCisgICAidGJzIiwKKyAgICJ0YnoiLAor
ICAgInRibnoiLAorICAgInBlZWsiLAorICAgInBva2UiLAorICAgImJwZXEiLAorICAgImJwbmVx
IiwKKyAgICJicGEiLAorICAgImJwYWVxIiwKKyAgICJicGIiLAorICAgImJwYmVxIiwKKyAgICJi
cGd0IiwKKyAgICJicGd0ZXEiLAorICAgImJwbHQiLAorICAgImJwbHRlcSIsCisgICAiYWRkcCIs
CisgICAiYW5kcCIsCisgICAib3JwIiwKKyAgICJzdWJwIiwKKyAgICJ4b3JwIiwKKyAgICJsb2Fk
cCIsCisgICAiY3BlcSIsCisgICAiY3BuZXEiLAorICAgImNwYSIsCisgICAiY3BhZXEiLAorICAg
ImNwYiIsCisgICAiY3BiZXEiLAorICAgImNwZ3QiLAorICAgImNwZ3RlcSIsCisgICAiY3BsdCIs
CisgICAiY3BsdGVxIiwKKyAgICJzdG9yZXAiLAorICAgImJ0cG8iLAorICAgImJ0cHMiLAorICAg
ImJ0cHoiLAorICAgImJ0cG56IiwKKyAgICJiYWRkcG8iLAorICAgImJhZGRwcyIsCisgICAiYmFk
ZHB6IiwKKyAgICJiYWRkcG56IgorICBdCisKK1g4Nl9JTlNUUlVDVElPTlMgPQorICBbCisgICAi
Y2RxaSIsCisgICAiaWRpdmkiCisgIF0KKworSU5TVFJVQ1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJ
T05TICsgWDg2X0lOU1RSVUNUSU9OUworCitJTlNUUlVDVElPTl9QQVRURVJOID0gUmVnZXhwLm5l
dygnXFxBKCgnICsgSU5TVFJVQ1RJT05TLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRz
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNl
dF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK01BR0lDX05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTU2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJvZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50
cyIKKworT0ZGU0VUX01BR0lDX05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQor
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBvZmZzZXRzTGlzdChhc3QpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIHNp
emVzTGlzdChhc3QpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBSZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRz
IGFuZCBzaXplcyB1c2VkIGJ5IHRoZSBBU1QuICAgICAgICAgICAgICAgICAjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgb2Zmc2V0c0xpc3QoYXN0KQorICBhc3QuZmls
dGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CitlbmQKKworZGVmIHNpemVzTGlzdChhc3QpCisg
IGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGFzdCwgZmlsZSkg
LT4gICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICBbb2Zmc2V0cywgaW5kZXhdICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyBQYXJzZXMgdGhlIG9mZnNldHMgZnJvbSBhIGZpbGUgYW5kIHJldHVybnMgYSBs
aXN0IG9mIG9mZnNldHMgYW5kIHRoZSAjCisjIGluZGV4IG9mIHRoZSBjb25maWd1cmF0aW9uIHRo
YXQgaXMgdmFsaWQgaW4gdGhpcyBidWlsZCB0YXJnZXQuICAgICAgICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGZp
bGUpCisgIGluZGV4ID0gbmlsCisgIG9mZnNldHMgPSBbXQorICBlbmRpYW5uZXNzTWFya2VyQnl0
ZXMgPSBuaWwKKyAgCisgIGRlZiByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICBieXRlcyA9
IFtdCisgICAgNC50aW1lcyB7CisgICAgICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQorICAgIH0KKyAg
ICAKKyAgICBpZiBlbmRpYW5uZXNzID09IDpsaXR0bGUKKyAgICAgICMgTGl0dGxlIGVuZGlhbgor
ICAgICAgKGJ5dGVzWzBdIDw8IDAgfAorICAgICAgIGJ5dGVzWzFdIDw8IDggfAorICAgICAgIGJ5
dGVzWzJdIDw8IDE2IHwKKyAgICAgICBieXRlc1szXSA8PCAyNCkKKyAgICBlbHNlCisgICAgICAj
IEJpZyBlbmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAyNCB8CisgICAgICAgYnl0ZXNbMV0gPDwg
MTYgfAorICAgICAgIGJ5dGVzWzJdIDw8IDggfAorICAgICAgIGJ5dGVzWzNdIDw8IDApCisgICAg
ZW5kCisgIGVuZAorICAKKyAgWzpsaXR0bGUsIDpiaWddLmVhY2ggeworICAgIHwgZW5kaWFubmVz
cyB8CisgICAgbWFnaWNCeXRlcyA9IFtdCisgICAgTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICAg
IHwgbnVtYmVyIHwKKyAgICAgIGN1cnJlbnRCeXRlcyA9IFtdCisgICAgICA0LnRpbWVzIHsKKyAg
ICAgICAgY3VycmVudEJ5dGVzIDw8IChudW1iZXIgJiAweGZmKQorICAgICAgICBudW1iZXIgPj49
IDgKKyAgICAgIH0KKyAgICAgIGlmIGVuZGlhbm5lc3MgPT0gOmJpZworICAgICAgICBjdXJyZW50
Qnl0ZXMucmV2ZXJzZSEKKyAgICAgIGVuZAorICAgICAgbWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0
ZXMKKyAgICB9CisgICAgCisgICAgRmlsZS5vcGVuKGZpbGUsICJyIikgeworICAgICAgfCBpbnAg
fAorICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgIGxvb3AgeworICAgICAgICBieXRlID0g
aW5wLmdldGJ5dGUKKyAgICAgICAgYnJlYWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgaWYgYnl0ZSA9
PSBtYWdpY0J5dGVzW3doZXJlSW5NYXJrZXJdCisgICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAx
CisgICAgICAgICAgaWYgd2hlcmVJbk1hcmtlciA9PSBtYWdpY0J5dGVzLnNpemUKKyAgICAgICAg
ICAgICMgV2UgaGF2ZSBhIG1hdGNoISBJZiB3ZSBoYXZlIG5vdCB5ZXQgcmVhZCB0aGUgZW5kaWFu
bmVzcyBtYXJrZXIgYW5kIGluZGV4LAorICAgICAgICAgICAgIyB0aGVuIHJlYWQgdGhvc2Ugbm93
OyBvdGhlcndpc2UgcmVhZCBhbiBvZmZzZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlm
IG5vdCBpbmRleAorICAgICAgICAgICAgICBpbmRleCA9IHJlYWRJbnQoZW5kaWFubmVzcywgaW5w
KQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBvZmZzZXRzIDw8IHJlYWRJbnQoZW5k
aWFubmVzcywgaW5wKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAKKyAgICAgICAgICAg
IHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICBlbmQKKyAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgYnJlYWsgaWYgaW5kZXgKKyAgfQorICAKKyAgcmFpc2UgdW5sZXNzIGluZGV4CisgIAorICBb
b2Zmc2V0cywgaW5kZXhdCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgYnVpbGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpIC0+IFtvZmZzZXRzLCBzaXplc10g
ICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEJ1aWxkcyBhIG1hcHBpbmcgYmV0
d2VlbiBTdHJ1Y3RPZmZzZXQgbm9kZXMgYW5kIHRoZWlyIHZhbHVlcy4gICAgICAgICMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBidWlsZE9mZnNldHNNYXAoYXN0LCBv
ZmZzZXRzTGlzdCkKKyAgb2Zmc2V0c01hcCA9IHt9CisgIHNpemVzTWFwID0ge30KKyAgYXN0T2Zm
c2V0c0xpc3QgPSBvZmZzZXRzTGlzdChhc3QpCisgIGFzdFNpemVzTGlzdCA9IHNpemVzTGlzdChh
c3QpCisgIHJhaXNlIHVubGVzcyBhc3RPZmZzZXRzTGlzdC5zaXplICsgYXN0U2l6ZXNMaXN0LnNp
emUgPT0gb2Zmc2V0c0xpc3Quc2l6ZQorICBvZmZzZXRzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRl
eCB7CisgICAgfCBzdHJ1Y3RPZmZzZXQsIGluZGV4IHwKKyAgICBvZmZzZXRzTWFwW3N0cnVjdE9m
ZnNldF0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIHNpemVzTGlzdChhc3QpLmVhY2hfd2l0
aF9pbmRleCB7CisgICAgfCBzaXplb2YsIGluZGV4IHwKKyAgICBzaXplc01hcFtzaXplb2ZdID0g
b2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQorICBbb2Zmc2V0c01hcCwgc2l6ZXNNYXBdCitlbmQKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1OTEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImluc3RydWN0aW9ucyIKK3JlcXVpcmUg
InJlZ2lzdGVycyIKKworY2xhc3MgVG9rZW4KKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4sIDpz
dHJpbmcKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cmluZykKKyAgICBAY29k
ZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgICBAc3RyaW5nID0gc3RyaW5nCisgIGVuZAorICAKKyAg
ZGVmID09KG90aGVyKQorICAgIGlmIG90aGVyLmlzX2E/IFRva2VuCisgICAgICBAc3RyaW5nID09
IG90aGVyLnN0cmluZworICAgIGVsc2UKKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIKKyAgICBlbmQK
KyAgZW5kCisgIAorICBkZWYgPX4ob3RoZXIpCisgICAgQHN0cmluZyA9fiBvdGhlcgorICBlbmQK
KyAgCisgIGRlZiB0b19zCisgICAgIiN7QHN0cmluZy5pbnNwZWN0fSBhdCBsaW5lICN7Y29kZU9y
aWdpbn0iCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgY29t
bWVudC5lbXB0eT8KKyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfSIKKyAgICBlbHNl
CisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc306ICN7Y29tbWVudFswXX0iCisgICAg
ZW5kCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRo
ZSBsZXhlci4gVGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdG9rZW5zLiAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBsZXgo
c3RyKQorICByZXN1bHQgPSBbXQorICBsaW5lTnVtYmVyID0gMQorICB3aGlsZSBub3Qgc3RyLmVt
cHR5PworICAgIGNhc2Ugc3RyCisgICAgd2hlbiAvXEFcIyhbXlxuXSopLworICAgICAgIyBjb21t
ZW50LCBpZ25vcmUKKyAgICB3aGVuIC9cQVxuLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhs
aW5lTnVtYmVyLCAkJikKKyAgICAgIGxpbmVOdW1iZXIgKz0gMQorICAgIHdoZW4gL1xBW2EtekEt
Wl0oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIs
ICQmKQorICAgIHdoZW4gL1xBXC4oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9r
ZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBXyhbYS16QS1aMC05X10qKS8KKyAg
ICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEEoWyBc
dF0rKS8KKyAgICAgICMgd2hpdGVzcGFjZSwgaWdub3JlCisgICAgd2hlbiAvXEEweChbMC05YS1m
QS1GXSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5oZXgudG9f
cykKKyAgICB3aGVuIC9cQTAoWzAtN10rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGlu
ZU51bWJlciwgJCYub2N0LnRvX3MpCisgICAgd2hlbiAvXEEoWzAtOV0rKS8KKyAgICAgIHJlc3Vs
dCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEE6Oi8KKyAgICAgIHJl
c3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFbOixcKFwpXFtc
XT1cK1wtKl0vCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAg
IGVsc2UKKyAgICAgIHJhaXNlICJMZXhlciBlcnJvciBhdCBsaW5lIG51bWJlciAje2xpbmVOdW1i
ZXJ9LCB1bmV4cGVjdGVkIHNlcXVlbmNlICN7c3RyWzAuLjIwXS5pbnNwZWN0fSIKKyAgICBlbmQK
KyAgICBzdHIgPSAkfi5wb3N0X21hdGNoCisgIGVuZAorICByZXN1bHQKK2VuZAorCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUb2tlbiBpZGVudGlmaWNhdGlvbi4gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgaXNSZWdpc3Rlcih0b2tlbikKKyAgdG9rZW4gPX4g
UkVHSVNURVJfUEFUVEVSTgorZW5kCisKK2RlZiBpc0luc3RydWN0aW9uKHRva2VuKQorICB0b2tl
biA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzS2V5d29yZCh0b2tlbikKKyAg
dG9rZW4gPX4gL1xBKCh0cnVlKXwoZmFsc2UpfChpZil8KHRoZW4pfChlbHNlKXwoZWxzaWYpfChl
bmQpfChhbmQpfChvcil8KG5vdCl8KG1hY3JvKXwoY29uc3QpfChzaXplb2YpfChlcnJvcikpXFov
IG9yCisgICAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTiBvcgorICAgIHRva2VuID1+IElOU1RS
VUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJZGVudGlmaWVyKHRva2VuKQorICB0b2tlbiA9
fiAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKVxaLyBhbmQgbm90IGlzS2V5d29yZCh0b2tlbikK
K2VuZAorCitkZWYgaXNMYWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXyhbYS16QS1aMC05X10q
KVxaLworZW5kCisKK2RlZiBpc0xvY2FsTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQVwuKFth
LXpBLVowLTlfXSopXFovCitlbmQKKworZGVmIGlzVmFyaWFibGUodG9rZW4pCisgIGlzSWRlbnRp
Zmllcih0b2tlbikgb3IgaXNSZWdpc3Rlcih0b2tlbikKK2VuZAorCitkZWYgaXNJbnRlZ2VyKHRv
a2VuKQorICB0b2tlbiA9fiAvXEFbMC05XS8KK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyBUaGUgcGFyc2VyLiBUYWtlcyBhbiBhcnJheSBvZiB0b2tlbnMgYW5kIHJl
dHVybnMgYW4gQVNULiBNZXRob2RzICAgICAjCisjIG90aGVyIHRoYW4gcGFyc2UodG9rZW5zKSBh
cmUgbm90IGZvciBwdWJsaWMgY29uc3VtcHRpb24uICAgICAgICAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIFBhcnNlcgorICBkZWYgaW5pdGlhbGl6ZSh0
b2tlbnMpCisgICAgQHRva2VucyA9IHRva2VucworICAgIEBpZHggPSAwCisgIGVuZAorICAKKyAg
ZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgQHRva2Vuc1tAaWR4XQorICAgICAgQHRv
a2Vuc1tAaWR4XS5wYXJzZUVycm9yKCpjb21tZW50KQorICAgIGVsc2UKKyAgICAgIGlmIGNvbW1l
bnQuZW1wdHk/CisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZSIKKyAg
ICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlOiAje2Nv
bW1lbnRbMF19IgorICAgICAgZW5kCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGNvbnN1bWUo
cmVnZXhwKQorICAgIGlmIHJlZ2V4cAorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tA
aWR4XSA9fiByZWdleHAKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAaWR4ID09
IEB0b2tlbnMubGVuZ3RoCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgIGVuZAorICAKKyAgZGVm
IHNraXBOZXdMaW5lCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICBAaWR4
ICs9IDEKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAg
aWYgQHRva2Vuc1tAaWR4XSA9PSAibm90IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZVBy
ZWRpY2F0ZUF0b20KKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCAr
PSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGUKKyAg
ICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9
IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInRydWUiCisgICAg
ICByZXN1bHQgPSBUcnVlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAor
ICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImZhbHNlIgorICAgICAgcmVzdWx0ID0gRmFsc2Uu
aW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVu
dGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IFNldHRpbmcuZm9yTmFtZShAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgQGlkeCAr
PSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQW5kCisgICAgcmVzdWx0ID0gcGFyc2VQcmVk
aWNhdGVBdG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiYW5kIgorICAgICAgY29kZU9y
aWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAgICBz
a2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgIHJlc3Vs
dCA9IEFuZC5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1
bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGUKKyAgICAjIHNvbWUgZXhhbXBsZXMg
b2YgcHJlY2VkZW5jZToKKyAgICAjIG5vdCBhIGFuZCBiIC0+IChub3QgYSkgYW5kIGIKKyAgICAj
IGEgYW5kIGIgb3IgYyAtPiAoYSBhbmQgYikgb3IgYworICAgICMgYSBvciBiIGFuZCBjIC0+IGEg
b3IgKGIgYW5kIGMpCisgICAgCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICB3
aGlsZSBAdG9rZW5zW0BpZHhdID09ICJvciIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAg
IHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICAgIHJlc3VsdCA9IE9yLm5ldyhjb2RlT3Jp
Z2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRl
ZiBwYXJzZVZhcmlhYmxlCisgICAgaWYgaXNSZWdpc3RlcihAdG9rZW5zW0BpZHhdKQorICAgICAg
aWYgQHRva2Vuc1tAaWR4XSA9fiBGUFJfUEFUVEVSTgorICAgICAgICByZXN1bHQgPSBGUFJlZ2lz
dGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3Ry
aW5nKQorICAgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBSZWdpc3RlcklELmZvck5hbWUoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVuZAor
ICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgcmVzdWx0ID0gVmFy
aWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3Ry
aW5nKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEK
KyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VBZGRyZXNzKG9mZnNldCkKKyAgICBw
YXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgIGNvZGVPcmlnaW4gPSBA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAKKyAgICAjIFRocmVlIHBvc3NpYmlsaXRpZXM6
CisgICAgIyBbXSAgICAgICAtPiBBYnNvbHV0ZUFkZHJlc3MKKyAgICAjIFthXSAgICAgIC0+IEFk
ZHJlc3MKKyAgICAjIFthLGJdICAgIC0+IEJhc2VJbmRleCB3aXRoIHNjYWxlID0gMQorICAgICMg
W2EsYixjXSAgLT4gQmFzZUluZGV4CisgICAgCisgICAgQGlkeCArPSAxCisgICAgaWYgQHRva2Vu
c1tAaWR4XSA9PSAiXSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmV0dXJuIEFic29sdXRlQWRk
cmVzcy5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0KQorICAgIGVuZAorICAgIGEgPSBwYXJzZVZhcmlh
YmxlCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIHJlc3VsdCA9IEFkZHJlc3Mu
bmV3KGNvZGVPcmlnaW4sIGEsIG9mZnNldCkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVu
bGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgQGlkeCArPSAxCisgICAgICBiID0gcGFy
c2VWYXJpYWJsZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0
ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCAxLCBvZmZzZXQpCisgICAgICBlbHNl
CisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBbIjEiLCAiMiIsICI0IiwgIjgi
XS5tZW1iZXI/IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIGMgPSBAdG9rZW5zW0BpZHhd
LnN0cmluZy50b19pCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVz
cyBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNv
ZGVPcmlnaW4sIGEsIGIsIGMsIG9mZnNldCkKKyAgICAgIGVuZAorICAgIGVuZAorICAgIEBpZHgg
Kz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUNvbG9uQ29sb24KKyAgICBz
a2lwTmV3TGluZQorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAg
ICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgIG5hbWVz
ID0gW0B0b2tlbnNbQGlkeF0uc3RyaW5nXQorICAgIEBpZHggKz0gMQorICAgIHdoaWxlIEB0b2tl
bnNbQGlkeF0gPT0gIjo6IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZUVycm9yIHVubGVz
cyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgbmFtZXMgPDwgQHRva2Vuc1tAaWR4
XS5zdHJpbmcKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICAgIHJhaXNlIGlmIG5hbWVzLmVt
cHR5PworICAgIFtjb2RlT3JpZ2luLCBuYW1lc10KKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHBy
ZXNzaW9uQXRvbQorICAgIHNraXBOZXdMaW5lCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIK
KyAgICAgIEBpZHggKz0gMQorICAgICAgTmVnSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHggLSAx
XS5jb2RlT3JpZ2luLCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lv
bgorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgIEBp
ZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJbnRlZ2VyIEB0b2tlbnNbQGlkeF0K
KyAgICAgIHJlc3VsdCA9IEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBA
dG9rZW5zW0BpZHhdLnN0cmluZy50b19pKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQK
KyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgY29kZU9yaWdpbiwg
bmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIGlmIG5hbWVzLnNpemUgPiAxCisgICAgICAg
IFN0cnVjdE9mZnNldC5mb3JGaWVsZChjb2RlT3JpZ2luLCBuYW1lc1swLi4tMl0uam9pbignOjon
KSwgbmFtZXNbLTFdKQorICAgICAgZWxzZQorICAgICAgICBWYXJpYWJsZS5mb3JOYW1lKGNvZGVP
cmlnaW4sIG5hbWVzWzBdKQorICAgICAgZW5kCisgICAgZWxzaWYgaXNSZWdpc3RlciBAdG9rZW5z
W0BpZHhdCisgICAgICBwYXJzZVZhcmlhYmxlCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAi
c2l6ZW9mIgorICAgICAgQGlkeCArPSAxCisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNl
Q29sb25Db2xvbgorICAgICAgU2l6ZW9mLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXMuam9pbign
OjonKSkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmIHBhcnNlRXhwcmVzc2lvbk11bAorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0gcGFy
c2VFeHByZXNzaW9uQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICBp
ZiBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0
ID0gTXVsSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0
LCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAg
ZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIGNvdWxkQmVFeHByZXNz
aW9uCisgICAgQHRva2Vuc1tAaWR4XSA9PSAiLSIgb3IgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9m
IiBvciBpc0ludGVnZXIoQHRva2Vuc1tAaWR4XSkgb3IgaXNWYXJpYWJsZShAdG9rZW5zW0BpZHhd
KSBvciBAdG9rZW5zW0BpZHhdID09ICIoIgorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Np
b24KKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbk11bAorICAg
IHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVz
dWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVz
dWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIt
IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gU3ViSW1tZWRpYXRlcy5uZXco
QHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwp
CisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1
bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1lbnQpCisgICAgaWYgY291bGRC
ZUV4cHJlc3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRkcmVzcyhleHByKQorICAgICAgZWxzZQor
ICAgICAgICBleHByCisgICAgICBlbmQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJbIgor
ICAgICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCAwKSkKKyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IExh
YmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExhYmVsLmZvck5hbWUo
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBA
aWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0Bp
ZHhdCisgICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4s
IEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0Cisg
ICAgZWxzZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50KQorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb25zdW1lKC9c
QVwoXFovKQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAgbG9vcCB7CisgICAgICBza2lwTmV3TGlu
ZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIGJyZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAg
ICAgdmFyaWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBO
ZXdMaW5lCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIK
KyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IK
KyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IKKyAgICAgIGVuZAor
ICAgIH0KKyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAorICBkZWYgcGFyc2VTZXF1ZW5jZShmaW5h
bCwgY29tbWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4KKyAgICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAgICAgIGlmIChAaWR4ID09IEB0b2tlbnMu
bGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5h
bCkKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAg
ICAgICAjIGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxl
c3MgaXNWYXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUu
Zm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4
XSA9PSAiPSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhbHVlID0gcGFyc2VPcGVyYW5k
KCJ3aGlsZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5uYW1lfSIpCisgICAgICAgIGxpc3Qg
PDwgQ29uc3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1
ZSkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImVycm9yIgorICAgICAgICBsaXN0IDw8
IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4pCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAgICAgIGNvZGVPcmlnaW4gPSBA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBO
ZXdMaW5lCisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgIGNvbnN1
bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWZU
aGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VTZXF1
ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRlIG9mIFwiaWYg
I3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBsaXN0IDw8IGlmVGhlbkVsc2UKKyAgICAg
ICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisgICAgICAgICAgY29kZU9yaWdpbiA9
IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
IHNraXBOZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAg
ICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgICAgc2tpcE5ld0xpbmUK
KyAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0
ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5z
aWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICAgIGlmVGhlbkVsc2Uu
ZWxzZUNhc2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlmVGhlbkVsc2UgPSBlbHNlQ2FzZQorICAg
ICAgICBlbmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiZWxzZSIKKyAgICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gcGFyc2VTZXF1ZW5jZSgv
XEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNlIGZvciBcImlmICN7cHJlZGljYXRl
LmR1bXB9XCIiKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAg
cGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiZW5kIgorICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgor
ICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBp
c0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0u
c3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3Jv
VmFyaWFibGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxl
IGluc2lkZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGxp
c3QgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICAg
IGVsc2lmIGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0g
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0
cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9
PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAg
ICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5kIGl0J3MgdGhlIGxhc3Qgb25l
LgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtd
KQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgor
ICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLgorICAgICAgICAgIGxpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBJdCdzIGRlZmluaXRlbHkgYW4gaW5zdHJ1Y3Rp
b24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJhbmQuCisgICAgICAgICAgb3BlcmFuZHMg
PSBbXQorICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxzZQorICAgICAgICAgIGxvb3Agewor
ICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgaW5z
dHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09
IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAg
ICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uIGFuZCBvZiB0aGUgc2VxdWVu
Y2UuCisgICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSB0cnVlCisgICAgICAgICAgICAgIGJy
ZWFrCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgICAg
ICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgICAgICMgVGhlIGVu
ZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
ICAgICBicmVhaworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBwYXJzZUVycm9yKCJF
eHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFsfSBhZnRlciAje29wZXJhbmRzLmxh
c3QuZHVtcH0iKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgfQorICAgICAgICAgIGxpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAgICAg
IGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgZW5kCisgICAg
ICAgIGVuZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAg
Y29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRv
a2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIEB0b2tlbnNb
QGlkeF0gPT0gIigiCisgICAgICAgICAgIyBNYWNybyBpbnZvY2F0aW9uLgorICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgICAgc2tpcE5l
d0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAgICAg
ICAgICAgICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQorICAgICAgICAgICAgICAgIGNvZGVPcmln
aW5Jbm5lciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAg
ICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNp
ZGUgb2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1bWVudCB0byAje25hbWV9IikKKyAg
ICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBNYWNy
by5uZXcoY29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlhYmxlcywgYm9keSkKKyAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUg
aW5zaWRlIG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICIpIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAgICAg
QGlkeCArPSAxCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9y
ICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5zcGVjdH0gd2hpbGUgcGFyc2lu
ZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAgICAgICAgIGVuZAorICAgICAg
ICAgICAgfQorICAgICAgICAgIGVuZAorICAgICAgICAgIGxpc3QgPDwgTWFjcm9DYWxsLm5ldyhj
b2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNl
RXJyb3IgIkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFtZX0iCisgICAgICAgIGVuZAorICAgICAg
ZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhd
CisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAg
bmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBw
YXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI6IgorICAgICAgICAjIEl0J3MgYSBs
YWJlbC4KKyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAgICAgbGlzdCA8PCBMYWJlbC5m
b3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVsc2UKKyAgICAgICAgICBsaXN0IDw8
IExvY2FsTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbmQKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgIkV4cGVjdGluZyB0
ZXJtaW5hbCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVl
bmNlLm5ldyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisgIGVuZAorZW5kCisKK2RlZiBwYXJzZSh0
b2tlbnMpCisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9rZW5zKQorICBwYXJzZXIucGFyc2VTZXF1
ZW5jZShuaWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3JlZ2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK0dQUlMgPQorICBbCisgICAi
dDAiLAorICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMiLAorICAgInQ0IiwKKyAgICJjZnIiLAor
ICAgImEwIiwKKyAgICJhMSIsCisgICAicjAiLAorICAgInIxIiwKKyAgICJzcCIKKyAgXQorCitG
UFJTID0KKyAgWworICAgImZ0MCIsCisgICAiZnQxIiwKKyAgICJmdDIiLAorICAgImZ0MyIsCisg
ICAiZnQ0IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisgICAiZmExIiwKKyAgICJmYTIiLAorICAg
ImZhMyIsCisgICAiZnIiCisgIF0KKworUkVHSVNURVJTID0gR1BSUyArIEZQUlMKKworR1BSX1BB
VFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykK
K0ZQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgRlBSUy5qb2luKCcpfCgnKSArICcp
KVxcWicpCisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBSRUdJU1RF
UlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vc2V0dGluZ3MucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMjEg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIK
K3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAidHJhbnNmb3Jt
IgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBjb21wdXRlU2V0dGluZ3ND
b21iaW5hdGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25zICAgICAgICAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkgb2Ygc2V0dGluZ3MgbWFwcywgd2hl
cmUgYSBzZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMgIworIyBhIGNvbmZpZ3VyYXRpb24gZm9yIHRo
ZSBhc3NlbWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIG1hcCAgICAgICAjCisjIGNvbnRh
aW5zIGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBzZXR0aW5ncyBuYW1lcyAoc3RyaW5n
cykgYW5kICMKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVhbnMgKHRydWUgZm9yIGVuYWJsZWQsIGZh
bHNlIGZvciBkaXNhYmxlZCkuICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKworZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIHNldHRpbmdzQ29t
YmluYXRpb25zID0gW10KKyAgCisgIGRlZiBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21i
aW5hdGlvbnMsIG1hcFNvRmFyLCByZW1haW5pbmcpCisgICAgaWYgcmVtYWluaW5nLmVtcHR5Pwor
ICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFwU29GYXIKKyAgICAgIHJldHVybgorICAg
IGVuZAorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5p
bmdbMF1dID0gdHJ1ZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9u
cywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFy
LmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gZmFsc2UKKyAgICBzZXR0aW5nc0NvbWJp
bmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAg
ZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIHt9LCAo
YXN0LmZpbHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7fHZ8IHYubmFtZX0gKyBbIlg4NiIsICJB
Uk12NyJdKS51bmlxKQorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMKK2VuZAorCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdz
LCBhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICB8IGNvbmNy
ZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwgLi4uIH0gICAgICAgICAgICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBEZXRlcm1pbmVzIGlmIHRoZSBzZXR0aW5ncyBjb21iaW5h
dGlvbiBpcyB2YWxpZCwgYW5kIGlmIHNvLCBjYWxscyAgICAjCisjIHRoZSBibG9jayB3aXRoIHRo
ZSBpbmZvcm1hdGlvbiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBjb2RlLiAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JTZXR0aW5ncyhjb25jcmV0
ZVNldHRpbmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0aGlzIGNvbWJp
bmF0b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWltZWRCYWNrZW5kcyA9IDAKKyAgc2Vs
ZWN0ZWRCYWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2ggeworICAgIHwgYmFja2VuZCB8Cisg
ICAgaXNTdXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2JhY2tlbmRdCisgICAgcmFpc2UgdW5s
ZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWltZWRCYWNrZW5kcyArPSBpZiBpc1N1
cHBvcnRlZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlzU3VwcG9ydGVkCisgICAgICBzZWxl
Y3RlZEJhY2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0KKyAgCisgIHJldHVybiBpZiBudW1D
bGFpbWVkQmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUgdGhlIEFTVCBkb3duIHRvIGEgbG93
LWxldmVsIGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25hbHMpLgorICBsb3dMZXZlbEFTVCA9
IGFzdC5yZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIHlpZWxkIGNvbmNy
ZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJhY2tlbmQKK2VuZAorCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0
aW9uKGFzdCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICB8IGNvbmNy
ZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAgICAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFz
dCwgc2V0dGluZ3NDb21iaW5hdGlvbnMpIHsgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0
dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAgICAgICAgICMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBFeGVjdXRlcyB0aGUgZ2l2ZW4gYmxvY2sgZm9yIGVhY2ggdmFsaWQg
c2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlICAjCisjIHNldHRpbmdzIG1hcC4gVGhlIGFzdCBw
YXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQgICAgICAgICAgICAgICMKKyMgKGFzdC5y
ZXNvbHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIFRoZSBmaXJzdCBmb3JtIHdpbGwgY2FsbCBjb21w
dXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSBmb3IgeW91LiAgICMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9u
KGFzdCwgKm9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMpCisgIHJhaXNlIGlmIG9wdGlvbmFs
U2V0dGluZ3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEKKyAgCisgIGlmIG9wdGlvbmFsU2V0dGluZ3ND
b21iaW5hdGlvbnMuZW1wdHk/CisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBjb21wdXRlU2V0
dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBlbHNlCisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMg
PSBvcHRpb25hbFNldHRpbmdzQ29tYmlhdGlvbnNbMF0KKyAgZW5kCisgIAorICBzZXR0aW5nc0Nv
bWJpbmF0aW9ucy5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgaW5k
ZXggfAorICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgeworICAgICAgfCBj
b25jcmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgICAgeWllbGQgY29u
Y3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgfQorICB9Citl
bmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgY3BwU2V0dGluZ3NUZXN0
KGNvbmNyZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIFJldHVybnMgdGhlIEMrKyBjb2RlIHVzZWQgdG8gdGVzdCBpZiB3
ZSBhcmUgaW4gYSBjb25maWd1cmF0aW9uIHRoYXQgICMKKyMgY29ycmVzcG9uZHMgdG8gdGhlIGdp
dmVuIGNvbmNyZXRlIHNldHRpbmdzLiAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGNwcFNldHRpbmdzVGVzdChjb25jcmV0
ZVNldHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdzLnRvX2EuY29sbGVjdHsKKyAg
ICB8IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisgICAgICAgIiIKKyAgICAgZWxzZQorICAgICAg
ICIhIgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIgKyBwYWlyWzBdCisgIH0uam9pbigiICYm
ICIpCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgaXNBU1RFcnJv
bmVvdXMoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIFRlc3RzIHRvIHNlZSBpZiB0aGUgQVNUIGNsYWltcyB0
aGF0IHRoZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUgICMKKyMgdXNlcidzIGNvZGUsIGFm
dGVyIHNldHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4gICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGlzQVNURXJyb25lb3VzKGFz
dCkKKyAgbm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5PworZW5kCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5n
cykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBF
bWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBnaXZlbiBjb25m
aWd1cmF0aW9uLiAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgYXNz
ZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICAkb3V0cHV0LnB1dHMgY3BwU2V0
dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICRvdXRwdXQucHV0cyAiI2Vsc2UiCisgICRv
dXRwdXQucHV0cyAiI2Vycm9yIFwiQ29uZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAgJG91dHB1
dC5wdXRzICIjZW5kaWYiCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5k
KSB7ICAgICAgICAgICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQg
fCAuLi4gfSAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRW1p
dHMgYWxsIHJlbGV2YW50IGd1YXJkcyB0byBzZWUgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaG9sZHMg
YW5kICAgICAgIworIyBjYWxscyB0aGUgYmxvY2sgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90
IGVycm9uZW91cy4gICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworCitkZWYgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0
LCBiYWNrZW5kKQorICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGlu
Z3MpCisgIAorICBpZiBpc0FTVEVycm9uZW91cyhhc3QpCisgICAgJG91dHB1dC5wdXRzICIjZXJy
b3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uXCIiCisgIGVsc2lmIG5vdCBXT1JLSU5HX0JBQ0tF
TkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIlRoaXMgYmFj
a2VuZCBpcyBub3Qgc3VwcG9ydGVkIHlldC5cIiIKKyAgZWxzZQorICAgIHlpZWxkIGNvbmNyZXRl
U2V0dGluZ3MsIGFzdCwgYmFja2VuZAorICBlbmQKKyAgCisgICRvdXRwdXQucHV0cyAiI2VuZGlm
IgorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGVtaXRDb2RlSW5B
bGxDb25maWd1cmF0aW9ucyhhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9
ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEVtaXRzIGd1YXJkIGNvZGVz
IGZvciBhbGwgdmFsaWQgY29uZmlndXJhdGlvbnMsIGFuZCBjYWxscyB0aGUgYmxvY2sgICMKKyMg
Zm9yIHRob3NlIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHZhbGlkIGFuZCBub3QgZXJyb25lb3Vz
LiAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGVt
aXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3QpCisgIGZvckVhY2hWYWxpZFNldHRpbmdzQ29t
YmluYXRpb24oYXN0KSB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFj
a2VuZCwgaW5kZXggfAorICAgICRvdXRwdXQucHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVT
ZXR0aW5ncykKKyAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2Vu
ZCwgaW5kZXgKKyAgICAkb3V0cHV0LnB1dHMgIiNlbmRpZiIKKyAgfQorZW5kCisKKworCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJi
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyBub2RlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgQ29uc3RydWN0IGEg
bmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IElmVGhlbkVsc2Ugbm9kZXMgYnkgICAgICAg
IworIyBzdWJzdGl0dXRpbmcgY29uY3JldGUgYm9vbGVhbiB2YWx1ZXMgZm9yIGVhY2ggU2V0dGlu
Zy4gICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitj
bGFzcyBOb2RlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgbWFwQ2hpbGRy
ZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlCisgIGRlZiByZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZQorICBkZWYg
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3Mg
U2V0dGluZworICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNldHRpbmdzW0Bu
YW1lXS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kCisgIGRlZiByZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUg
YW5kIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5k
CitlbmQKKworY2xhc3MgT3IKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAo
QGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBvciBAcmlnaHQucmVzb2x2ZVNl
dHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE5vdAor
ICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChub3QgQGNoaWxkLnJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBJZlRo
ZW5FbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgaWYgQHByZWRpY2F0
ZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlCisgICAgICBAdGhlbkNhc2UucmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVsc2UKKyAgICAgIEBlbHNlQ2FzZS5yZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisg
IGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxp
c3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaXRlbSA9IGl0ZW0ucmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKQorICAgICAgaWYgaXRlbS5pc19hPyBTZXF1ZW5jZQorICAgICAgICBuZXdM
aXN0ICs9IGl0ZW0ubGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0KKyAg
ICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAg
ZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5kZW1h
Y3JvaWZ5KG1hY3JvcykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBub2RlLnN1YnN0aXR1dGUobWFwcGluZykgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZGVtYWNyb2lmeSgpIGNv
bnN0cnVjdHMgYSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgTWFjcm8gICAgICAgIwor
IyBub2Rlcywgd2hpbGUgc3Vic3RpdHV0ZSgpIHJlcGxhY2VzIFZhcmlhYmxlIG5vZGVzIHdpdGgg
dGhlIGdpdmVuICAgICAjCisjIG5vZGVzIGluIHRoZSBtYXBwaW5nLiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAgIG1h
cENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuZGVtYWNyb2lmeShtYWNy
b3MpCisgICAgfQorICBlbmQKKyAgCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbWFw
Q2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5zdWJzdGl0dXRlKG1hcHBp
bmcpCisgICAgfQorICBlbmQKKyAgCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisg
ICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5zdWJzdGl0dXRl
TGFiZWxzKG1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBNYWNybworICBkZWYg
c3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG15TWFwcGluZyA9IHt9CisgICAgbWFwcGluZy5lYWNo
X3BhaXIgeworICAgICAgfCBrZXksIHZhbHVlIHwKKyAgICAgIHVubGVzcyBAdmFyaWFibGVzLmlu
Y2x1ZGU/IGtleQorICAgICAgICBteU1hcHBpbmdba2V5XSA9IHZhbHVlCisgICAgICBlbmQKKyAg
ICB9CisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5zdWJz
dGl0dXRlKG15TWFwcGluZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlCisg
IGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgaWYgbWFwcGluZ1tzZWxmXQorICAgICAgbWFw
cGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKwor
Y2xhc3MgTG9jYWxMYWJlbAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIGlm
IG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxm
CisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBzdWJzdGl0dXRl
KGNvbnN0YW50cykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBteUNvbnN0YW50cyA9IGNvbnN0YW50
cy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlz
X2E/IENvbnN0RGVjbAorICAgICAgICBteUNvbnN0YW50c1tpdGVtLnZhcmlhYmxlXSA9IGl0ZW0u
dmFsdWUuc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlz
dCA8PCBpdGVtLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICBlbmQKKyAgICB9CisgICAg
U2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisgIGVuZAorICAKKyAgZGVmIHJlbmFt
ZUxhYmVscyhjb21tZW50KQorICAgIG1hcHBpbmcgPSB7fQorICAgIAorICAgIEBsaXN0LmVhY2gg
eworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gTG9jYWxMYWJlbAorICAgICAg
ICBtYXBwaW5nW2l0ZW1dID0gTG9jYWxMYWJlbC51bmlxdWUoaWYgY29tbWVudCB0aGVuIGNvbW1l
bnQgKyAiXyIgZWxzZSAiIiBlbmQgKyBpdGVtLmNsZWFuTmFtZSkKKyAgICAgIGVuZAorICAgIH0K
KyAgICAKKyAgICBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgIGVuZAorICAKKyAgZGVmIGRl
bWFjcm9pZnkobWFjcm9zKQorICAgIG15TWFjcm9zID0gbWFjcm9zLmR1cAorICAgIEBsaXN0LmVh
Y2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gTWFjcm8KKyAgICAgICAg
bXlNYWNyb3NbaXRlbS5uYW1lXSA9IGl0ZW0KKyAgICAgIGVuZAorICAgIH0KKyAgICBuZXdMaXN0
ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlz
X2E/IE1hY3JvCisgICAgICAgICMgSWdub3JlLgorICAgICAgZWxzaWYgaXRlbS5pc19hPyBNYWNy
b0NhbGwKKyAgICAgICAgbWFwcGluZyA9IHt9CisgICAgICAgIG15TXlNYWNyb3MgPSBteU1hY3Jv
cy5kdXAKKyAgICAgICAgcmFpc2UgIkNvdWxkIG5vdCBmaW5kIG1hY3JvICN7aXRlbS5uYW1lfSBh
dCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBteU1hY3Jvc1tpdGVtLm5hbWVdCisg
ICAgICAgIHJhaXNlICJBcmd1bWVudCBjb3VudCBtaXNtYXRjaCBmb3IgY2FsbCB0byAje2l0ZW0u
bmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgaXRlbS5vcGVyYW5kcy5z
aXplID09IG15TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzLnNpemUKKyAgICAgICAgaXRlbS5v
cGVyYW5kcy5zaXplLnRpbWVzIHsKKyAgICAgICAgICB8IGlkeCB8CisgICAgICAgICAgaWYgaXRl
bS5vcGVyYW5kc1tpZHhdLmlzX2E/IFZhcmlhYmxlIGFuZCBteU1hY3Jvc1tpdGVtLm9wZXJhbmRz
W2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52
YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG15TWFjcm9zW2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1lXQor
ICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5h
bWVdID0gbmlsCisgICAgICAgICAgZWxzaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IE1hY3Jv
CisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lk
eF0ubmFtZV0gPSBpdGVtLm9wZXJhbmRzW2lkeF0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNy
b3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4
XV0gPSBuaWwKKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJs
ZXNbaWR4XV0gPSBpdGVtLm9wZXJhbmRzW2lkeF0KKyAgICAgICAgICBlbmQKKyAgICAgICAgfQor
ICAgICAgICBuZXdMaXN0ICs9IG15TWFjcm9zW2l0ZW0ubmFtZV0uYm9keS5zdWJzdGl0dXRlKG1h
cHBpbmcpLmRlbWFjcm9pZnkobXlNeU1hY3JvcykucmVuYW1lTGFiZWxzKGl0ZW0ubmFtZSkubGlz
dAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uZGVtYWNyb2lmeShteU1hY3Jv
cykKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlz
dCkuc3Vic3RpdHV0ZSh7fSkKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgbm9kZS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbnN0cnVjdCBh
IG5ldyBBU1QgdGhhdCBoYXMgb2Zmc2V0IHZhbHVlcyBpbnN0ZWFkIG9mIHN5bWJvbGljICAgICAg
ICMKKyMgb2Zmc2V0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor
Y2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgbWFw
Q2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlT2Zmc2V0cyhv
ZmZzZXRzLCBzaXplcykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldAor
ICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgb2Zmc2V0c1tzZWxm
XQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXRzW3NlbGZdKQorICAgIGVs
c2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mCisgIGRl
ZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBzaXplc1tzZWxmXQorICAg
ICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBzaXplc1tzZWxmXSkKKyAgICBlbHNlCisgICAg
ICBwdXRzICJDb3VsZCBub3QgZmluZCAje3NlbGYuaW5zcGVjdH0gaW4gI3tzaXplcy5rZXlzLmlu
c3BlY3R9IgorICAgICAgcHV0cyAic2l6ZXMgPSAje3NpemVzLmluc3BlY3R9IgorICAgICAgc2Vs
ZgorICAgIGVuZAorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBub2RlLmZvbGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUmVzb2x2ZSBjb25zdGFudCBy
ZWZlcmVuY2VzIGFuZCBjb21wdXRlIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMuICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgZm9sZAor
ICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuZm9sZAorICAg
IH0KKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBs
ZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNl
bGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBA
cmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVm
dC52YWx1ZSArIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRl
cworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdo
dC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAg
IHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRl
Lm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAtIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQK
KworY2xhc3MgTXVsSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9s
ZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0
LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1t
ZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAqIEByaWdo
dC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlCisgIGRlZiBmb2xkCisg
ICAgQGNoaWxkID0gQGNoaWxkLmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGNoaWxkLmlz
X2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLUBjaGlsZC52YWx1
ZSkKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9k
ZS5yZXNvbHZlQWZ0ZXJTZXR0aW5ncyhvZmZzZXRzLCBzaXplcykgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbXBpbGUgYXNzZW1ibHkgYWdhaW5zdCBh
IHNldCBvZiBvZmZzZXRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmUob2Zmc2V0
cywgc2l6ZXMpCisgICAgZGVtYWNyb2lmeSh7fSkucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6
ZXMpLmZvbGQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NzMgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIHN1cHBvcnRz
OEJpdE9uWDg2CisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiLCAidDEi
LCAiYTEiLCAicjEiLCAidDIiLCAidDMiCisgICAgICB0cnVlCisgICAgd2hlbiAidDQiLCAiY2Zy
IgorICAgICAgZmFsc2UKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAi
YTAiLCAicjAiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVh
bCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVheCIKKyAgICAgIHdoZW4gOmludAorICAg
ICAgICAiJWVheCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdo
ZW4gInQxIiwgImExIiwgInIxIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisg
ICAgICAgICIlZGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZHgiCisgICAgICB3aGVu
IDppbnQKKyAgICAgICAgIiVlZHgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBl
bmQKKyAgICB3aGVuICJ0MiIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAg
ICAgICAiJWNsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWN4IgorICAgICAgd2hlbiA6
aW50CisgICAgICAgICIlZWN4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5k
CisgICAgd2hlbiAidDMiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAg
ICAgIiVibCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVieCIKKyAgICAgIHdoZW4gOmlu
dAorICAgICAgICAiJWVieCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAor
ICAgIHdoZW4gInQ0IgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAg
ICIlc2lsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNpIgorICAgICAgd2hlbiA6aW50
CisgICAgICAgICIlZXNpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisg
ICAgd2hlbiAiY2ZyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAg
ICIlZGlsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWRpIgorICAgICAgd2hlbiA6aW50
CisgICAgICAgICIlZWRpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisg
ICAgd2hlbiAic3AiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAg
IiVzcGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc3AiCisgICAgICB3aGVuIDppbnQK
KyAgICAgICAgIiVlc3AiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAg
ICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5k
KGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBG
UFJlZ2lzdGVySUQKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICByYWlzZSB1bmxlc3Mga2lu
ZCA9PSA6ZG91YmxlCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZhMCIsICJmciIK
KyAgICAgICIleG1tMCIKKyAgICB3aGVuICJmdDEiLCAiZmExIgorICAgICAgIiV4bW0xIgorICAg
IHdoZW4gImZ0MiIsICJmYTIiCisgICAgICAiJXhtbTIiCisgICAgd2hlbiAiZnQzIiwgImZhMyIK
KyAgICAgICIleG1tMyIKKyAgICB3aGVuICJmdDQiCisgICAgICAiJXhtbTQiCisgICAgd2hlbiAi
ZnQ1IgorICAgICAgIiV4bW01IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVu
ZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0i
CisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgeDg2T3BlcmFuZChraW5kKQor
ICAgICIkI3t2YWx1ZX0iCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAi
I3t2YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJp
dE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAg
ICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSkiCisgIGVuZAorICBk
ZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVu
ZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0
cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje29mZnNldC52
YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9LCAje2luZGV4Lng4Nk9wZXJhbmQoOmludCl9
LCAje3NjYWxlfSkiCisgIGVuZAorCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIq
I3t4ODZvcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNz
CisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4
ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7YWRkcmVzcy52YWx1ZX0iCisgIGVuZAorCisgIGRlZiB4
ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCitlbmQK
KworY2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAgZGVmIHg4NkxhYmVsCisgICAgc2FuaXRpemVMYWJl
bE5hbWUobmFtZSkKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgIHg4Nkxh
YmVsCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UKKyAgZGVmIHg4Nkxh
YmVsCisgICAgIkxfb2ZmbGluZWFzbV8iK25hbWVbMS4uLTFdCisgIGVuZAorICBkZWYgeDg2Q2Fs
bE9wZXJhbmQoa2luZCkKKyAgICB4ODZMYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVj
dGlvbgorICBkZWYgeDg2T3BlcmFuZHMoKmtpbmRzKQorICAgIHJhaXNlIHVubGVzcyBraW5kcy5z
aXplID09IG9wZXJhbmRzLnNpemUKKyAgICByZXN1bHQgPSBbXQorICAgIGtpbmRzLnNpemUudGlt
ZXMgeworICAgICAgfCBpZHggfAorICAgICAgcmVzdWx0IDw8IG9wZXJhbmRzW2lkeF0ueDg2T3Bl
cmFuZChraW5kc1tpZHhdKQorICAgIH0KKyAgICByZXN1bHQuam9pbigiLCAiKQorICBlbmQKKwor
ICBkZWYgeDg2U3VmZml4KGtpbmQpCisgICAgY2FzZSBraW5kCisgICAgd2hlbiA6Ynl0ZQorICAg
ICAgImIiCisgICAgd2hlbiA6aGFsZgorICAgICAgInciCisgICAgd2hlbiA6aW50CisgICAgICAi
bCIKKyAgICB3aGVuIDpkb3VibGUKKyAgICAgICJzZCIKKyAgICBlbHNlCisgICAgICByYWlzZQor
ICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNv
ZGUsIGtpbmQsIG51bU9wZXJhbmRzKQorICAgIGlmIG51bU9wZXJhbmRzID09IDMKKyAgICAgIGlm
IG9wZXJhbmRzWzBdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29k
ZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVy
YW5kKGtpbmQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAg
ICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQp
fSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAg
JGFzbS5wdXRzICJcdG1vdiN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAkYXNt
LnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICAk
YXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVm
IGhhbmRsZVg4Nk9wKG9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5k
cyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUpCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4
NlNoaWZ0KG9wY29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUg
b3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0ZXJJRC5mb3JOYW1lKG5pbCwgInQyIikKKyAgICAgICRh
c20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRz
ICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAgICAk
YXNtLnB1dHMgIlx0I3tvcGNvZGV9ICVjbCwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQp
fSIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmlu
dCl9LCAlZWN4IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZEb3VibGVCcmFu
Y2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAgIGNhc2UgbW9kZQorICAgIHdoZW4gOm5vcm1hbAor
ICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuIDpyZXZl
cnNlCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIGVsc2UK
KyAgICAgIHJhaXNlIG1vZGUuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2Jy
YW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhh
bmRsZVg4NkludENvbXBhcmUob3Bjb2RlU3VmZml4LCBraW5kKQorICAgIGlmIG9wZXJhbmRzWzBd
LmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMF0udmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNb
MV0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3Vm
Zml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2lmIG9wZXJhbmRzWzFdLmlz
X2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNbMF0u
aXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3VmZml4
ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAi
XHRjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgaGFuZGxlWDg2SW50QnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZJ
bnRDb21wYXJlKGJyYW5jaE9wY29kZVsxLi4tMV0sIGtpbmQpCisgICAgJGFzbS5wdXRzICJcdCN7
YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYg
aGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZCkKKyAgICBpZiBvcGVyYW5kLnN1cHBvcnRz
OEJpdE9uWDg2CisgICAgICAkYXNtLnB1dHMgIlx0I3tzZXRPcGNvZGV9ICN7b3BlcmFuZC54ODZP
cGVyYW5kKDpieXRlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJsICN7b3BlcmFuZC54ODZP
cGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisg
ICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4
IgorICAgICAgJGFzbS5wdXRzICJcdCN7c2V0T3Bjb2RlfSAlYWwiCisgICAgICAkYXNtLnB1dHMg
Ilx0bW92emJsICVhbCwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmQu
eDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRs
ZVg4NkludENvbXBhcmVTZXQoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NkludENvbXBh
cmUoc2V0T3Bjb2RlWzMuLi0xXSwga2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBv
cGVyYW5kc1syXSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2VGVzdChraW5kKQorICAgIHZh
bHVlID0gb3BlcmFuZHNbMF0KKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDIKKyAg
ICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAgIHdoZW4gMworICAg
ICAgbWFzayA9IG9wZXJhbmRzWzFdCisgICAgZWxzZQorICAgICAgcmFpc2UgIkV4cGVjdGVkIDIg
b3IgMyBvcGVyYW5kcywgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0
cmluZ30iCisgICAgZW5kCisgICAgCisgICAgaWYgbWFzay5pc19hPyBJbW1lZGlhdGUgYW5kIG1h
c2sudmFsdWUgPT0gLTEKKyAgICAgIGlmIHZhbHVlLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAg
JGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3t2YWx1ZS54ODZPcGVyYW5kKGtp
bmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFz
bS5wdXRzICJcdGNtcCN7eDg2U3VmZml4KGtpbmQpfSAkMCwgI3t2YWx1ZS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZT
dWZmaXgoa2luZCl9ICN7bWFzay54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5k
KGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2QnJhbmNoVGVzdChi
cmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgICRhc20ucHV0
cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kcy5sYXN0Lng4NkxhYmVsfSIKKyAgZW5kCisg
IAorICBkZWYgaGFuZGxlWDg2U2V0VGVzdChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2
VGVzdChraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRzLmxhc3QpCisg
IGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wQnJhbmNoKG9wY29kZSwgYnJhbmNoT3Bjb2RlLCBr
aW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFu
ZHMuc2l6ZSAtIDEpCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiA0CisgICAgICBq
dW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1bXBUYXJnZXQgPSBv
cGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAor
ICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0Lng4NkxhYmVsfSIK
KyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkK
KyAgICBpZiBvcGVyYW5kcy5zaXplID09IDQgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJd
CisgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQp
fSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICBoYW5k
bGVYODZPcFdpdGhOdW1PcGVyYW5kcygic3ViI3t4ODZTdWZmaXgoa2luZCl9Iiwga2luZCwgb3Bl
cmFuZHMuc2l6ZSAtIDEpCisgICAgZW5kCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hl
biA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1
bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVj
dAorICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0
Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgbG93ZXJYODYKKyAgICAkYXNtLmNvbW1lbnQg
Y29kZU9yaWdpblN0cmluZworICAgIGNhc2Ugb3Bjb2RlCisgICAgd2hlbiAiYWRkaSIsICJhZGRw
IgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1l
ZGlhdGUKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQK
KyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAg
ICAgaWYgb3BlcmFuZHNbMF0udmFsdWUgPT0gMAorICAgICAgICAgIHVubGVzcyBvcGVyYW5kc1sx
XSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICRhc20ucHV0cyAiXHRsZWFs
ICN7b3BlcmFuZHNbMF0udmFsdWV9KCN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICBlbmQKKyAgICAgIGVsc2lm
IG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRAorICAg
ICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICBy
YWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1
dHMgIlx0bGVhbCAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgICBlbHNlCisgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFu
ZHNbMF0KKyAgICAgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje3g4Nk9wZXJhbmRzKDppbnQsIDpp
bnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbmQKKyAgICB3aGVuICJhbmRpIiwgImFuZHAiCisg
ICAgICBoYW5kbGVYODZPcCgiYW5kbCIsIDppbnQpCisgICAgd2hlbiAibHNoaWZ0aSIKKyAgICAg
IGhhbmRsZVg4NlNoaWZ0KCJzYWxsIiwgOmludCkKKyAgICB3aGVuICJtdWxpIgorICAgICAgaWYg
b3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAg
ICAgJGFzbS5wdXRzICJcdGltdWxsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCwgOmludCl9Igor
ICAgICAgZWxzZQorICAgICAgICAjIEZJWE1FOiBjb3VsZCBkbyBzb21lIHBlZXBob2xlIGluIGNh
c2UgdGhlIGxlZnQgb3BlcmFuZCBpcyBpbW1lZGlhdGUgYW5kIGl0J3MKKyAgICAgICAgIyBhIHBv
d2VyIG9mIHR3by4KKyAgICAgICAgaGFuZGxlWDg2T3AoImltdWxsIiwgOmludCkKKyAgICAgIGVu
ZAorICAgIHdoZW4gIm5lZ2kiCisgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje3g4Nk9wZXJhbmRz
KDppbnQpfSIKKyAgICB3aGVuICJub3RpIgorICAgICAgJGFzbS5wdXRzICJcdG5vdGwgI3t4ODZP
cGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAib3JpIiwgIm9ycCIKKyAgICAgIGhhbmRsZVg4Nk9w
KCJvcmwiLCA6aW50KQorICAgIHdoZW4gInJzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgi
c2FybCIsIDppbnQpCisgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgi
c2hybCIsIDppbnQpCisgICAgd2hlbiAic3ViaSIsICJzdWJwIgorICAgICAgaWYgb3BlcmFuZHMu
c2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1
dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAkYXNt
LnB1dHMgIlx0YWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRz
WzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICBoYW5kbGVYODZPcCgi
c3VibCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICBo
YW5kbGVYODZPcCgieG9ybCIsIDppbnQpCisgICAgd2hlbiAibG9hZGkiLCAic3RvcmVpIiwgImxv
YWRwIiwgInN0b3JlcCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7eDg2T3BlcmFuZHMoOmlu
dCwgOmludCl9IgorICAgIHdoZW4gImxvYWRiIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICB3aGVuICJsb2FkaCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6d2wgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDpoYWxmKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgd2hlbiAic3RvcmViIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmIgI3t4ODZP
cGVyYW5kcyg6Ynl0ZSwgOmJ5dGUpfSIKKyAgICB3aGVuICJsb2FkZCIsICJtb3ZlZCIsICJzdG9y
ZWQiCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91
YmxlKX0iCisgICAgd2hlbiAiYWRkZCIKKyAgICAgICRhc20ucHV0cyAiXHRhZGRzZCAje3g4Nk9w
ZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJkaXZkIgorICAgICAgJGFzbS5w
dXRzICJcdGRpdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4g
InN1YmQiCisgICAgICAkYXNtLnB1dHMgIlx0c3Vic2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6
ZG91YmxlKX0iCisgICAgd2hlbiAibXVsZCIKKyAgICAgICRhc20ucHV0cyAiXHRtdWxzZCAje3g4
Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJzcXJ0ZCIKKyAgICAgICRh
c20ucHV0cyAiXHRzcXJ0c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJjaTJkIgorICAgICAg
JGFzbS5wdXRzICJcdGN2dHNpMnNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiYmRlcSIKKyAgICAg
IGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUoImJkZXEiKQorICAgICAgJGFzbS5wdXRz
ICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje0xhYmVs
UmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkueDg2TGFiZWx9IgorICAgICAg
JGFzbS5wdXRzICJcdGplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIG9wZXJhbmRz
WzJdKS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICB3aGVu
ICJiZG5lcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiam5lIiwgOm5vcm1hbCkKKyAg
ICB3aGVuICJiZGd0IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpub3JtYWwp
CisgICAgd2hlbiAiYmRndGVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYWUiLCA6
bm9ybWFsKQorICAgIHdoZW4gImJkbHQiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImph
IiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdGVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJh
bmNoKCJqYWUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGVxdW4iCisgICAgICBoYW5kbGVYODZE
b3VibGVCcmFuY2goImplIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZG5lcXVuIgorICAgICAgaXNV
bm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICBpc0VxdWFsID0g
TG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4iKQorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2Qg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje0xhYmVsUmVmZXJlbmNlLm5l
dyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJc
dGplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzRXF1YWwpLng4NkxhYmVsfSIK
KyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgICAgJGFzbS5wdXRzICJcdGptcCAj
e29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgIGlzRXF1YWwubG93ZXIoIlg4NiIpCisgICAg
d2hlbiAiYmRndHVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpyZXZlcnNl
KQorICAgIHdoZW4gImJkZ3RlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUi
LCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGx0dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFu
Y2goImpiIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRv
dWJsZUJyYW5jaCgiamJlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJidGQyaSIKKyAgICAgICRhc20u
cHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRjbXBsICQw
eDgwMDAwMDAwICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1
dHMgIlx0amUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgd2hlbiAidGQyaSIKKyAgICAg
ICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUp
fSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiY2QyaSIKKyAg
ICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAi
XHR0ZXN0bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7b3BlcmFuZHNbMl0ueDg2
TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJcdGN2dHNpMnNkICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0anAg
I3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0am5lICN7b3BlcmFu
ZHNbMl0ueDg2TGFiZWx9IgorICAgIHdoZW4gIm1vdmR6IgorICAgICAgJGFzbS5wdXRzICJcdHhv
cnBkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAicG9wIgorICAgICAgJGFzbS5wdXRzICJcdHBv
cCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInB1c2giCisgICAg
ICAkYXNtLnB1dHMgIlx0cHVzaCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAg
IHdoZW4gIm1vdmUiLCAic3hpMnAiLCAienhpMnAiCisgICAgICBpZiBJbW1lZGlhdGUubmV3KG5p
bCwgMCkgPT0gb3BlcmFuZHNbMF0gYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAg
ICAgICAgJGFzbS5wdXRzICJcdHhvcmwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRzWzBd
ICE9IG9wZXJhbmRzWzFdCisgICAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7eDg2T3BlcmFuZHMo
OmludCwgOmludCl9IgorICAgICAgZW5kCisgICAgd2hlbiAibm9wIgorICAgICAgJGFzbS5wdXRz
ICJcdG5vcCIKKyAgICB3aGVuICJiaWVxIiwgImJwZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImplIiwgOmludCkKKyAgICB3aGVuICJiaW5lcSIsICJicG5lcSIKKyAgICAgIGhhbmRsZVg4
NkludEJyYW5jaCgiam5lIiwgOmludCkKKyAgICB3aGVuICJiaWEiLCAiYnBhIgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqYSIsIDppbnQpCisgICAgd2hlbiAiYmlhZXEiLCAiYnBhZXEiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphZSIsIDppbnQpCisgICAgd2hlbiAiYmliIiwgImJw
YiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6aW50KQorICAgIHdoZW4gImJpYmVx
IiwgImJwYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6aW50KQorICAgIHdo
ZW4gImJpZ3QiLCAiYnBndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamciLCA6aW50KQor
ICAgIHdoZW4gImJpZ3RlcSIsICJicGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpn
ZSIsIDppbnQpCisgICAgd2hlbiAiYmlsdCIsICJicGx0IgorICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqbCIsIDppbnQpCisgICAgd2hlbiAiYmlsdGVxIiwgImJwbHRlcSIKKyAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiamxlIiwgOmludCkKKyAgICB3aGVuICJiYmVxIgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqZSIsIDpieXRlKQorICAgIHdoZW4gImJibmVxIgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqbmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmEiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImphIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhZXEiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImphZSIsIDpieXRlKQorICAgIHdoZW4gImJiYiIKKyAgICAgIGhhbmRsZVg4
NkludEJyYW5jaCgiamIiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmJlcSIKKyAgICAgIGhhbmRsZVg4
NkludEJyYW5jaCgiamJlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJndCIKKyAgICAgIGhhbmRsZVg4
NkludEJyYW5jaCgiamciLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0ZXEiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImpnZSIsIDpieXRlKQorICAgIHdoZW4gImJibHQiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImpsIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdGVxIgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqbHRlcSIsIDpieXRlKQorICAgIHdoZW4gImJ0aW8iLCAiYnRwbyIKKyAg
ICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmludCkKKyAgICB3aGVuICJidGlzIiwgImJ0
cHMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDppbnQpCisgICAgd2hlbiAiYnRp
eiIsICJidHB6IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6aW50KQorICAgIHdo
ZW4gImJ0aW56IiwgImJ0cG56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmlu
dCkKKyAgICB3aGVuICJidGJvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6Ynl0
ZSkKKyAgICB3aGVuICJidGJzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6Ynl0
ZSkKKyAgICB3aGVuICJidGJ6IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6Ynl0
ZSkKKyAgICB3aGVuICJidGJueiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDpi
eXRlKQorICAgIHdoZW4gImptcCIKKyAgICAgICRhc20ucHV0cyAiXHRqbXAgI3tvcGVyYW5kc1sw
XS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiYmFkZGlvIiwgImJhZGRwbyIKKyAg
ICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJiYWRk
aXMiLCAiYmFkZHBzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianMiLCA6aW50
KQorICAgIHdoZW4gImJhZGRpeiIsICJiYWRkcHoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgi
YWRkbCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlueiIsICJiYWRkcG56IgorICAgICAg
aGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJic3ViaW8i
CisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpvIiwgOmludCkKKyAgICB3aGVuICJic3ViaXMi
CisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpzIiwgOmludCkKKyAgICB3aGVuICJic3ViaXoi
CisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImp6IiwgOmludCkKKyAgICB3aGVuICJic3ViaW56
IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbnoiLCA6aW50KQorICAgIHdoZW4gImJtdWxp
byIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbyIsIDppbnQpCisgICAgd2hl
biAiYm11bGlzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpzIiwgOmludCkK
KyAgICB3aGVuICJibXVsaXoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAianoi
LCA6aW50KQorICAgIHdoZW4gImJtdWxpbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11
bGwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJib3JpbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJh
bmNoKCJvcmwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJvcmlzIgorICAgICAgaGFuZGxlWDg2
T3BCcmFuY2goIm9ybCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXoiCisgICAgICBoYW5k
bGVYODZPcEJyYW5jaCgib3JsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJib3JpbnoiCisgICAg
ICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYnJlYWsi
CisgICAgICAkYXNtLnB1dHMgIlx0aW50ICQzIgorICAgIHdoZW4gImNhbGwiCisgICAgICAkYXNt
LnB1dHMgIlx0Y2FsbCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3
aGVuICJyZXQiCisgICAgICAkYXNtLnB1dHMgIlx0cmV0IgorICAgIHdoZW4gImNpZXEiLCAiY3Bl
cSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGUiLCA6aW50KQorICAgIHdoZW4g
ImNpbmVxIiwgImNwbmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bmUiLCA6
aW50KQorICAgIHdoZW4gImNpYSIsICJjcGEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0
KCJzZXRhIiwgOmludCkKKyAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAgICAgIGhhbmRsZVg4
NkludENvbXBhcmVTZXQoInNldGFlIiwgOmludCkKKyAgICB3aGVuICJjaWIiLCAiY3BiIgorICAg
ICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YiIsIDppbnQpCisgICAgd2hlbiAiY2liZXEi
LCAiY3BiZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiZSIsIDppbnQpCisg
ICAgd2hlbiAiY2lndCIsICJjcGd0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
ZyIsIDppbnQpCisgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIKKyAgICAgIGhhbmRsZVg4Nklu
dENvbXBhcmVTZXQoInNldGdlIiwgOmludCkKKyAgICB3aGVuICJjaWx0IiwgImNwbHQiCisgICAg
ICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsIiwgOmludCkKKyAgICB3aGVuICJjaWx0ZXEi
LCAiY3BsdGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bGUiLCA6aW50KQor
ICAgIHdoZW4gInRpbyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6aW50KQorICAg
IHdoZW4gInRpcyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6aW50KQorICAgIHdo
ZW4gInRpeiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6aW50KQorICAgIHdoZW4g
InRpbnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDppbnQpCisgICAgd2hlbiAi
dGJvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDpieXRlKQorICAgIHdoZW4gInRi
cyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ynoi
CisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmJ5dGUpCisgICAgd2hlbiAidGJueiIK
KyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmJ5dGUpCisgICAgd2hlbiAicGVlayIK
KyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fSglZXNwKSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJwb2tlIgorICAgICAg
JGFzbS5wdXRzICJcdG1vdmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVy
YW5kc1sxXS52YWx1ZSAqIDR9KCVlc3ApIgorICAgIHdoZW4gImNkcWkiCisgICAgICAkYXNtLnB1
dHMgIlx0Y2RxIgorICAgIHdoZW4gImlkaXZpIgorICAgICAgJGFzbS5wdXRzICJcdGlkaXZsICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiZmlpMmQiCisgICAgICAk
YXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0
cHNsbHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwb3IgJXhtbTcsICN7b3BlcmFu
ZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiZmQyaWkiCisgICAgICAkYXNt
LnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNkICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJc
dHBzcmxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgJXhtbTcsICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgcmFpc2UgIkJhZCBv
cGNvZGU6ICN7b3Bjb2RlfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVj
aWFsaXphdGlvbktpbmQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENvZGVTcGVjaWFs
aXphdGlvbktpbmRfaAorI2RlZmluZSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKworbmFtZXNw
YWNlIEpTQyB7CisKK2VudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7IENvZGVGb3JDYWxsLCBD
b2RlRm9yQ29uc3RydWN0IH07CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ29k
ZVNwZWNpYWxpemF0aW9uS2luZF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBDb21tb25TbG93UGF0aHNfaAogCiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1
ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAKQEAgLTQxLDYg
KzQyLDM4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsK
IAorQUxXQVlTX0lOTElORSBFeGVjU3RhdGUqIGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXRlKiBleGVj
LCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkp
OworICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKKyAgICBDb2RlQmxvY2sq
IG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29k
ZUZvcihraW5kKTsKKyAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBleGVjLT5h
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOworCisgICAgLy8gVGhpcyBlbnN1cmVzIGVub3Vn
aCBzcGFjZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1bWVudHMgcGFz
c2VkIGJ5IHRoZSBjYWxsZXIuCisgICAgaWYgKCFyZWdpc3RlckZpbGUtPmdyb3coZXhlYy0+cmVn
aXN0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+
bV9udW1DYWxsZWVSZWdpc3RlcnMpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFTU0VSVChh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
KTsKKworICAgIC8vIFRvbyBmZXcgYXJndW1lbnRzIC0tIGNvcHkgY2FsbCBmcmFtZSBhbmQgYXJn
dW1lbnRzLCB0aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1bWVudHMgd2l0aCB1bmRlZmluZWQuCisg
ICAgc2l6ZV90IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpczsKKyAgICBSZWdpc3Rlciogc3JjID0gZXhlYy0+cmVnaXN0ZXJz
KCk7CisgICAgUmVnaXN0ZXIqIGRzdCA9IGV4ZWMtPnJlZ2lzdGVycygpICsgZGVsdGE7CisKKyAg
ICBpbnQgaTsKKyAgICBpbnQgZW5kID0gLUV4ZWNTdGF0ZTo6b2Zmc2V0Rm9yKGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKTsKKyAgICBmb3IgKGkgPSAtMTsgaSA+PSBlbmQ7IC0taSkKKyAgICAg
ICAgZHN0W2ldID0gc3JjW2ldOworCisgICAgZW5kIC09IGRlbHRhOworICAgIGZvciAoIDsgaSA+
PSBlbmQ7IC0taSkKKyAgICAgICAgZHN0W2ldID0ganNVbmRlZmluZWQoKTsKKworICAgIEV4ZWNT
dGF0ZSogbmV3RXhlYyA9IEV4ZWNTdGF0ZTo6Y3JlYXRlKGRzdCk7CisgICAgQVNTRVJUKCh2b2lk
KiluZXdFeGVjIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOworICAgIHJldHVybiBuZXdFeGVjOwor
fQorCiBBTFdBWVNfSU5MSU5FIGJvb2wgb3BJbnN0YW5jZU9mU2xvdyhFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgYmFzZVZhbCwgSlNWYWx1ZSBwcm90bykKIHsKICAgICBB
U1NFUlQoIXZhbHVlLmlzQ2VsbCgpIHx8ICFiYXNlVmFsLmlzQ2VsbCgpIHx8ICFwcm90by5pc0Nl
bGwoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAi
Qnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJE
RkdEcml2ZXIuaCIKKyNpbmNsdWRlICJFeGVjdXRpb25IYXJuZXNzLmgiCiAjaW5jbHVkZSAiSklU
LmgiCiAjaW5jbHVkZSAiSklURHJpdmVyLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCkBAIC04NCw3
ICs4NSw3IEBAIEludHJpbnNpYyBOYXRpdmVFeGVjdXRhYmxlOjppbnRyaW5zaWMoKSAKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+CiBzdGF0aWMgdm9pZCBqZXR0aXNvbkNvZGVCbG9jayhKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIE93blB0cjxUPiYgY29kZUJsb2NrKQogewotICAgIEFTU0VSVChjb2Rl
QmxvY2stPmdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJU
KEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkpOwogICAg
IEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwogICAgIE93blB0cjxUPiBjb2RlQmxv
Y2tUb0pldHRpc29uID0gY29kZUJsb2NrLnJlbGVhc2UoKTsKICAgICBjb2RlQmxvY2sgPSBzdGF0
aWNfcG9pbnRlcl9jYXN0PFQ+KGNvZGVCbG9ja1RvSmV0dGlzb24tPnJlbGVhc2VBbHRlcm5hdGl2
ZSgpKTsKQEAgLTE2Nyw5ICsxNjgsMzAgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21w
aWxlT3B0aW1pegogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBFdmFsRXhlY3V0YWJsZTo6
aml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQg
PSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1f
aml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VO
VVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK2lubGluZSBjb25zdCBjaGFyKiBzYW1wbGluZ0Rl
c2NyaXB0aW9uKEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyAgICBzd2l0Y2ggKGppdFR5
cGUpIHsKKyAgICBjYXNlIEpJVENvZGU6OkludGVycHJldGVyVGh1bms6CisgICAgICAgIHJldHVy
biAiSW50ZXJwcmV0ZXIgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpC
YXNlbGluZUpJVDoKKyAgICAgICAgcmV0dXJuICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwp
IjsKKyAgICBjYXNlIEpJVENvZGU6OkRGR0pJVDoKKyAgICAgICAgcmV0dXJuICJERkcgQ29tcGls
YXRpb24gKFRPVEFMKSI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwogSlNPYmplY3QqIEV2YWxFeGVjdXRh
YmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2Nv
cGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1Jl
Z2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJh
c2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7
CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihq
aXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5
cGUpOwpAQCAtMjEwLDcgKzIzMiw3IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGls
ZUludGVybmEKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUlm
QXBwcm9wcmlhdGUoKmdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2Fs
bCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKCpnbG9iYWxEYXRhLCBt
X2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAgICAgICByZXR1
cm4gMDsKICNlbmRpZgogCkBAIC0yOTUsOSArMzE3LDE1IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhl
Y3V0YWJsZTo6Y29tcGlsZU9wdGkKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgUHJvZ3Jh
bUV4ZWN1dGFibGU6OmppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAg
IGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9wcm9n
cmFtQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkp
OworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCiBKU09iamVjdCogUHJv
Z3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hh
aW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAg
IFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxp
bmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9u
IChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rl
c2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURf
UEFSQU0oaml0VHlwZSk7CkBAIC0zMzYsNyArMzY0LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVj
dXRhYmxlOjpjb21waWxlSW50ZQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFq
aXRDb21waWxlSWZBcHByb3ByaWF0ZSgqZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBt
X2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVjdXRpb24o
Kmdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlw
ZSkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTQxMiw3ICs0NDAsNyBAQCBGdW5j
dGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpiCiAgICAgd2hpbGUgKHJlc3VsdC0+
YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Db2Rl
QmxvY2sqPihyZXN1bHQtPmFsdGVybmF0aXZlKCkpOwogICAgIEFTU0VSVChyZXN1bHQpOwotICAg
IEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Cisg
ICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDM4LDYgKzQ2NiwxOCBAQCBKU09iamVjdCog
RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlT3B0CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2
b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHBy
b3ByaWF0ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGws
IG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgSklUQ29kZTo6
Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30K
Kwordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1Y3QoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0
aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9q
aXRDb2RlRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywg
bV9zeW1ib2xUYWJsZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwogRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y29kZUJsb2NrV2l0aEJ5dGVjb2RlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKIHsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2Rl
QmxvY2tGb3Ioa2luZCk7CkBAIC00ODIsNyArNTIyLDcgQEAgUGFzc093blB0cjxGdW5jdGlvbkNv
ZGVCbG9jaz4gRnVuY3Rpb25FeAogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21w
aWxlRm9yQ2FsbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3Bl
Q2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdp
b24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNl
bGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOwor
ICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0
VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsK
QEAgLTUwNCw3ICs1NDQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxl
Rm9yCiAgICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC0+c2hhcmVkU3ltYm9s
VGFibGUoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25J
ZkFwcHJvcHJpYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2pp
dENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFi
bGUsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2pp
dENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENvZGVG
b3JDYWxsKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNTI0LDcgKzU2NCw3IEBA
IEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKIAogSlNPYmplY3QqIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKEV4ZWNTdGF0ZSog
ZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGpp
dFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBK
SVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJE
RkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVn
aW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklU
KQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTU0Niw3ICs1ODYsNyBAQCBKU09iamVj
dCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAgICAgbV9zeW1ib2xUYWJsZSA9IG1f
Y29kZUJsb2NrRm9yQ29uc3RydWN0LT5zaGFyZWRTeW1ib2xUYWJsZSgpOwogCiAjaWYgRU5BQkxF
KEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0
LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0
VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBt
X2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlw
ZSwgQ29kZUZvckNvbnN0cnVjdCkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDEw
NTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBFeGVjdXRhYmxlX2gKIAogI2lu
Y2x1ZGUgIkNhbGxEYXRhLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1
ZGUgIk5vZGVzLmgiCkBAIC0zOSwxMiArNDAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgRGVidWdnZXI7CiAgICAgY2xhc3MgRXZhbENvZGVCbG9jazsKICAgICBjbGFzcyBGdW5jdGlv
bkNvZGVCbG9jazsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
UHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKIAogICAgIHN0cnVj
dCBFeGNlcHRpb25JbmZvOwogICAgIAotICAgIGVudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7
IENvZGVGb3JDYWxsLCBDb2RlRm9yQ29uc3RydWN0IH07CiAgICAgZW51bSBDb21waWxhdGlvbktp
bmQgeyBGaXJzdENvbXBpbGF0aW9uLCBPcHRpbWl6aW5nQ29tcGlsYXRpb24gfTsKIAogICAgIGlu
bGluZSBib29sIGlzQ2FsbChDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0zMTksNiAr
MzIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEV2YWxFeGVjdXRh
YmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRF
eGVjdXRhYmxlIEJhc2U7CiAKQEAgLTMzOCw2ICszNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENv
ZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShKU0dsb2JhbERhdGEm
KTsKICNlbmRpZgogCiAgICAgICAgIEV2YWxDb2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkK
QEAgLTM4NCw2ICszODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3Mg
UHJvZ3JhbUV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0
eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNDExLDYgKzQxNSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRp
c29uT3B0aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxl
KEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayYgZ2Vu
ZXJhdGVkQnl0ZWNvZGUoKQpAQCAtNDUzLDYgKzQ1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewog
ICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRh
YmxlIEJhc2U7CiAKQEAgLTUwOCw2ICs1MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JD
YWxsKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDYWxsKEpTR2xv
YmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNhbGwoKSBj
b25zdApAQCAtNTM1LDYgKzU0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBF
TkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVj
dChKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ29uc3RydWN0KEpT
R2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNvbnN0
cnVjdCgpIGNvbnN0CkBAIC01ODIsNiArNTkwLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgICAgIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChnbG9iYWxEYXRhKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRDb21w
aWxlRm9yKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgewor
ICAgICAgICAgICAgICAgIGppdENvbXBpbGVGb3JDYWxsKGdsb2JhbERhdGEpOworICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVChraW5kID09
IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICAgICAgaml0Q29tcGlsZUZvckNvbnN0cnVjdChn
bG9iYWxEYXRhKTsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBib29sIGlz
R2VuZXJhdGVkRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBFeGVjdXRpb25IYXJuZXNzX2gKKyNkZWZpbmUg
RXhlY3V0aW9uSGFybmVzc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVO
QUJMRShKSVQpCisKKyNpbmNsdWRlICJKSVREcml2ZXIuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5
cG9pbnRzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxv
Y2tUeXBlPgoraW5saW5lIGJvb2wgcHJlcGFyZUZvckV4ZWN1dGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRD
b2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAg
IGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkgeworICAgICAgICAvLyBTdGFy
dCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRlcnByZXRlci4KKyAgICAgICAgTExJbnQ6OmdldEVu
dHJ5cG9pbnQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsKKyAgICAgICAg
Y29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKyAg
ICByZXR1cm4gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLCBq
aXRDb2RlLCBqaXRUeXBlKTsKK30KKworaW5saW5lIGJvb2wgcHJlcGFyZUZ1bmN0aW9uRm9yRXhl
Y3V0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2Nr
PiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGpp
dENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwgSklU
Q29kZTo6SklUVHlwZSBqaXRUeXBlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7Cisj
aWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBl
KSkgeworICAgICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRlcnByZXRlci4K
KyAgICAgICAgTExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludChnbG9iYWxEYXRhLCBraW5kLCBq
aXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBjb2RlQmxvY2stPnNldEpJ
VENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oa2luZCk7CisjZW5kaWYgLy8gRU5B
QkxFKExMSU5UKQorICAgIHJldHVybiBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGds
b2JhbERhdGEsIGNvZGVCbG9jaywgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBzeW1i
b2xUYWJsZSwgaml0VHlwZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8g
RU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIEV4ZWN1dGlvbkhhcm5lc3NfaAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkocmV2aXNpb24gMTA1
NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5ID0gYWRv
cHRBcnJheVB0cihuZXcgV3JpdGVCYXJyaWVyPFVua25vd24+W3JlZ2lzdGVyQXJyYXlTaXplXSk7
CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzID0gcmVnaXN0ZXJBcnJh
eS5nZXQoKSArIHJlZ2lzdGVyT2Zmc2V0OwotCisgICAgICAgIAogICAgICAgICAvLyBDb3B5IGFs
bCBhcmd1bWVudHMgdGhhdCBjYW4gYmUgY2FwdHVyZWQgYnkgbmFtZSBvciBieSB0aGUgYXJndW1l
bnRzIG9iamVjdC4KICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX251bUNhcHR1cmVkQXJn
czsgKytpKSB7CiAgICAgICAgICAgICBpbnQgaW5kZXggPSBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zm
c2V0KGkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2
aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIEpTQXJyYXk7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAg
c3RydWN0IFNwYXJzZUFycmF5RW50cnkgOiBwdWJsaWMgV3JpdGVCYXJyaWVyPFVua25vd24+IHsK
ICAgICAgICAgdHlwZWRlZiBXcml0ZUJhcnJpZXI8VW5rbm93bj4gQmFzZTsKQEAgLTEyMiw2ICsx
MjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgSlNBcnJheSA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdhbGtlcjsKIAogICAgIHByb3RlY3Rl
ZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAx
MDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzYsOSArMzYsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7Ci0gICAgY2xhc3MgU3RydWN0dXJlOworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3Mg
UHJvcGVydHlOYW1lQXJyYXk7CisgICAgY2xhc3MgU3RydWN0dXJlOwogCiAgICAgZW51bSBFbnVt
ZXJhdGlvbk1vZGUgewogICAgICAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLApAQCAtMTY0
LDYgKzE2NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVy
JiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgY29uc3QgQ2xh
c3NJbmZvKiBtX2NsYXNzSW5mbzsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9z
dHJ1Y3R1cmU7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBKU0Fj
dGl2YXRpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgU291
cmNlQ29kZTsKICAgICBuYW1lc3BhY2UgREZHIHsKQEAgLTE0MCw2ICsxNDEsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wg
aXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgSlNWYWx1
ZSBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
Y3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDggQEAgSlNHbG9i
YWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgICwga2V5d29yZHMoYWRvcHRQ
dHIobmV3IEtleXdvcmRzKHRoaXMpKSkKICAgICAsIGludGVycHJldGVyKDApCiAgICAgLCBoZWFw
KHRoaXMsIGhlYXBTaXplKQorICAgICwganNBcnJheUNsYXNzSW5mbygmSlNBcnJheTo6c19pbmZv
KQorICAgICwganNGaW5hbE9iamVjdENsYXNzSW5mbygmSlNGaW5hbE9iamVjdDo6c19pbmZvKQog
I2lmIEVOQUJMRShERkdfSklUKQogICAgICwgc2l6ZU9mTGFzdFNjcmF0Y2hCdWZmZXIoMCkKICNl
bmRpZgpAQCAtMjE2LDcgKzIxOCw3IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2Jh
bERhdGFUeXAKICAgICBqaXRTdHVicyA9IGFkb3B0UHRyKG5ldyBKSVRUaHVua3ModGhpcykpOwog
I2VuZGlmCiAKLSAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSh0aGlzLT5jYW5Vc2VKSVQoKSk7
CisgICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUoJmxsaW50RGF0YSwgdGhpcy0+Y2FuVXNlSklU
KCkpOwogCiAgICAgaGVhcC5ub3RpZnlJc1NhZmVUb0NvbGxlY3QoKTsKIH0KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lvbiAxMDU3
NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsMTUgKzMwLDE2IEBACiAjZGVmaW5lIEpTR2xvYmFsRGF0YV9oCiAK
ICNpbmNsdWRlICJDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSW50
cmluc2ljLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVj
dXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIlN0cm9uZy5o
IgorI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVk
ZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk51bWVyaWNT
dHJpbmdzLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU3Ryb25nLmgi
CiAjaW5jbHVkZSAiVGVybWluYXRvci5oIgogI2luY2x1ZGUgIlRpbWVvdXRDaGVja2VyLmgiCiAj
aW5jbHVkZSAiV2Vha1JhbmRvbS5oIgpAQCAtNjUsNiArNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFz
cyBLZXl3b3JkczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
TmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAgICBjbGFzcyBSZWdF
eHBDYWNoZTsKQEAgLTI0MSw2ICsyNDMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEhl
YXAgaGVhcDsKIAogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKKworICAgICAgICBjb25zdCBD
bGFzc0luZm8qIGNvbnN0IGpzQXJyYXlDbGFzc0luZm87CisgICAgICAgIGNvbnN0IENsYXNzSW5m
byogY29uc3QganNGaW5hbE9iamVjdENsYXNzSW5mbzsKKworICAgICAgICBMTEludDo6RGF0YSBs
bGludERhdGE7CisKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIGV4
Y2VwdGlvbkxvY2F0aW9uOwogICAgICAgICBKU1ZhbHVlIGhvc3RDYWxsUmV0dXJuVmFsdWU7CkBA
IC0zNDYsNiArMzU0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjdW5kZWYgcmVnaXN0ZXJUeXBlZEFy
cmF5RnVuY3Rpb24KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU0dsb2JhbERhdGEoR2xvYmFsRGF0
YVR5cGUsIFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUpOwogICAgICAgICBzdGF0aWMgSlNHbG9i
YWxEYXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwogICAgICAgICB2b2lkIGNyZWF0ZU5h
dGl2ZVRodW5rKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xh
c3MgR2V0dGVyU2V0dGVyOwogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKKyAgICBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsK
ICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9y
OwpAQCAtMzM1LDYgKzMzNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGFkZFN0YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiwgaW50IGNv
dW50KTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogRm9sZCByZXNldCBpbnRvIGlu
aXQuCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdChKU09iamVjdCogdGhpc1Zh
bHVlKTsKICAgICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEwNTc3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgR2V0dGVyU2V0dGVy
OwogICAgIGNsYXNzIEhhc2hFbnRyeTsKICAgICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uOworICAg
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRCbG9jazsKICAg
ICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7
CkBAIC0yNzEsNiArMjcyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTT2JqZWN0KEpT
R2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKTsK
IAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CisgICAgICAgIAogICAgICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIgYXNrIGFueSBvZiB0
aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25vd24gdG8gYmUgYSBKU09iamVj
dC4KICAgICAgICAgdXNpbmcgSlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcjsKICAgICAgICAgdXNp
bmcgSlNDZWxsOjppc0dldHRlclNldHRlcjsKQEAgLTM4Myw2ICszODYsOCBAQCBDT01QSUxFX0FT
U0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ry
b3koSlNDZWxsKik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgZXhwbGljaXQgSlNGaW5hbE9iamVj
dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAg
ICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5lU3RvcmFnZSkK
ICAgICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSWRl
bnRpZmllcjsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAKICAgICBjbGFzcyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yIDogcHVibGljIEpTQ2Vs
bCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC05Niw2ICs5Nyw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFy
cmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpOwogCiAgICAgICAgIFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+IG1fY2FjaGVkU3RydWN0dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3
IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTU3RyaW5nOworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEpTR2xv
YmFsRGF0YSopOwogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSopOwpAQCAt
MjQwLDYgKzI0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNp
dENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNvbHZlUm9wZShFeGVjU3RhdGUqKSBjb25zdDsKICAg
ICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlOChMQ2hhciopIGNvbnN0OwogICAgICAgICB2
b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2UoVUNoYXIqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBjb3B5KQpA
QCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKKwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkID0gMTsgLy8gV2ViQ29yZSB1c2VzIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgdG8g
bWFrZSBkb2N1bWVudC5hbGwgdW5kZXRlY3RhYmxlLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPSAxIDw8IDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIE92ZXJyaWRlc0hhc0luc3RhbmNlID0gMSA8PCAyOwpAQCAtODcsNiArODksOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTZXRP
bkZsYWdzMSh1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnIDw9ICgxIDw8IDcpKTsg
cmV0dXJuIG1fZmxhZ3MgJiBmbGFnOyB9CiAgICAgICAgIGJvb2wgaXNTZXRPbkZsYWdzMih1bnNp
Z25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnID49ICgxIDw8IDgpKTsgcmV0dXJuIG1fZmxh
Z3MyICYgKGZsYWcgPj4gOCk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsMTAgKzExNiw5IEBA
IEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEUKICAgICByZXR1cm4gSlNO
b3RBbk9iamVjdDo6Y3JlYXRlKGV4ZWMpOwogfQogCi0jaWZuZGVmIE5ERUJVRwogY2hhciogSlNW
YWx1ZTo6ZGVzY3JpcHRpb24oKQogewotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZSA9IDY0
OworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZSA9IDEyODsKICAgICBzdGF0aWMgY2hhciBk
ZXNjcmlwdGlvbltzaXplXTsKIAogICAgIGlmICghKnRoaXMpCkBAIC0xMjgsMTQgKzEyNywxNCBA
QCBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiAgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0
aW9uLCBzaXplLCAiSW50MzI6ICVkIiwgYXNJbnQzMigpKTsKICAgICBlbHNlIGlmIChpc0RvdWJs
ZSgpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24s
IHNpemUsICJEb3VibGU6ICVsZiwgJWx4IiwgYXNEb3VibGUoKSwgcmVpbnRlcnByZXREb3VibGVU
b0ludHB0cihhc0RvdWJsZSgpKSk7CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXpl
LCAiRG91YmxlOiAlbHgsICVsZiIsIHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIoYXNEb3VibGUo
KSksIGFzRG91YmxlKCkpOwogI2Vsc2UKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgZG91
YmxlIGFzRG91YmxlOwogICAgICAgICAgICAgdWludDMyX3QgYXNUd29JbnQzMnNbMl07CiAgICAg
ICAgIH0gdTsKICAgICAgICAgdS5hc0RvdWJsZSA9IGFzRG91YmxlKCk7Ci0gICAgICAgIHNucHJp
bnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICUwOHg6JTA4eCIsIGFzRG91Ymxl
KCksIHUuYXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0pOworICAgICAgICBzbnByaW50
ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJTA4eDolMDh4LCAlbGYiLCB1LmFzVHdvSW50
MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdLCBhc0RvdWJsZSgpKTsKICNlbmRpZgogICAgIH0gZWxz
ZSBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiQ2Vs
bDogJXAiLCBhc0NlbGwoKSk7CkBAIC0xNTIsNyArMTUxLDYgQEAgY2hhciogSlNWYWx1ZTo6ZGVz
Y3JpcHRpb24oKQogCiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQotI2VuZGlmCiAKIC8vIFRo
aXMgaW4gdGhlIFRvSW50MzIgb3BlcmF0aW9uIGlzIGRlZmluZWQgaW4gc2VjdGlvbiA5LjUgb2Yg
dGhlIEVDTUEtMjYyIHNwZWMuCiAvLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgaWRlbnRp
Y2FsIHRvIFRvVUludDMyIG90aGVyIHRoYW4gdG8gaW50ZXJwcmV0YXRpb24KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMyLDkgKzIzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU0NlbGwqIGFzQ2VsbCgp
IGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRDYWxsZWUoKTsK
IAotI2lmbmRlZiBOREVCVUcKICAgICAgICAgY2hhciogZGVzY3JpcHRpb24oKTsKLSNlbmRpZgog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpTVmFsdWUoV3JpdGVC
YXJyaWVyQmFzZTxUPik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
cmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDEwICszOCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKICAgICBjbGFzcyBSZWdpc3RlcjsKIAogICAgIGNsYXNzIEpTVmFyaWFibGVP
YmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBK
SVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBw
dWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDEwNTc3MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw2ICs1MiwxMCBAQCB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1
Y3RJbmxpCiAKIHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOwogCitpbnQzMl90IGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworaW50MzJfdCBleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvckpJVFNvb247CisKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1p
emVBZnRlcldhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVB
ZnRlckxvbmdXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRp
bWl6ZUFueXRpbWVTb29uOwpAQCAtMTM3LDYgKzE0MSwxMCBAQCB2b2lkIGluaXRpYWxpemVPcHRp
b25zKCkKICAgICAKICAgICBTRVQobWF4aW11bUlubGluaW5nRGVwdGgsIDUpOwogCisgICAgU0VU
KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwLCAgICAgLTEwMCk7CisgICAg
U0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbiwgc3RkOjpudW1l
cmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JKSVRTb29uLCAgICAgICAgICAgIC0xMDApOworCiAgICAgU0VUKGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAsICAgICAtMTAwMCk7CiAgICAgU0VUKGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwLCAtNTAwMCk7CiAgICAg
U0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uLCBzdGQ6
Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CkBAIC0xODUsNiArMTkzLDggQEAgdm9p
ZCBpbml0aWFsaXplT3B0aW9ucygpCiAgICAgaWYgKGNwdXNUb1VzZSA8IDEpCiAgICAgICAgIGNw
dXNUb1VzZSA9IDE7CiAgICAgCisgICAgY3B1c1RvVXNlID0gMTsKKyAgICAKICAgICBTRVQobnVt
YmVyT2ZHQ01hcmtlcnMsIGNwdXNUb1VzZSk7CiAKICAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24gPD0gZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMCBAQCBl
eHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RyCiAKIGV4dGVybiB1bnNpZ25l
ZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsgLy8gRGVwdGggb2YgaW5saW5lIHN0YWNrLCBzbyAxID0g
bm8gaW5saW5pbmcsIDIgPSBvbmUgbGV2ZWwsIGV0Yy4KIAorZXh0ZXJuIGludDMyX3QgZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitleHRlcm4gaW50MzJfdCBleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CitleHRlcm4gaW50MzJfdCBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBleHRlcm4gaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogZXh0ZXJuIGludDMyX3QgZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7CiBleHRlcm4gaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHJldmlzaW9uIDEw
NTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBK
U0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmpl
Y3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFNjb3BlQ2hh
aW5JdGVyYXRvcjsKICAgICBjbGFzcyBTbG90VmlzaXRvcjsKICAgICAKQEAgLTkxLDYgKzkyLDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbjsKICAgICB9OwogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24g
MTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7
CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhOwogICAgIGNsYXNzIFN0cnVjdHVyZUNo
YWluOwpAQCAtMTk2LDYgKzE5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
SlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5m
byopOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIFN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMTA1NzcwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBjbGFz
cyBTdHJ1Y3R1cmVDaGFpbiA6IHB1YmxpYyBKU0NlbGwgewpAQCAtNzQsNiArNzUsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZUNo
YWluKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0
cm95KEpTQ2VsbCopOwogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiA+IG1fdmVjdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2
aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3
b3JraW5nIGNvcHkpCkBAIC05MTgsNiArOTE4LDE4IEBACiAjZGVmaW5lIEVOQUJMRV9KSVQgMQog
I2VuZGlmCiAKKy8qIE9uIHNvbWUgb2YgdGhlIHBsYXRmb3JtcyB3aGVyZSB3ZSBoYXZlIGEgSklU
LCB3ZSB3YW50IHRvIGFsc28gaGF2ZSB0aGUgCisgICBsb3ctbGV2ZWwgaW50ZXJwcmV0ZXIuICov
CisjaWYgIWRlZmluZWQoRU5BQkxFX0xMSU5UKSAmJiBFTkFCTEUoSklUKSAmJiBQTEFURk9STShN
QUMpICYmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIEVOQUJMRV9MTElOVCAxCisjZW5kaWYK
KworLyogSWYgd2UgaGF2ZSBMTEludCBlbmFibGVkIGFuZCB0aGUgSklUIGVuYWJsZWQsIHdlIGFs
c28gZW5hYmxlIE9TUmluZyBmcm9tCisgICBMTEludCB0byB0aGUgSklULiAqLworI2lmICFkZWZp
bmVkKEVOQUJMRV9MTElOVF9PU1JfVE9fSklUKSAmJiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoTExJ
TlQpCisjZGVmaW5lIEVOQUJMRV9MTElOVF9PU1JfVE9fSklUIDEKKyNlbmRpZgorCiAjaWYgIWRl
ZmluZWQoRU5BQkxFX0RGR19KSVQpICYmIEVOQUJMRShKSVQpCiAvKiBFbmFibGUgdGhlIERGRyBK
SVQgb24gWDg2IGFuZCBYODZfNjQuICBPbmx5IHRlc3RlZCBvbiBNYWMgYW5kIEdOVS9MaW51eC4g
Ki8KICNpZiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpICYmIChQTEFURk9STShNQUMpIHx8IE9T
KExJTlVYKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRM
aXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExp
bmtlZExpc3QuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9TZW50aW5lbExpbmtlZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsOCBAQCBw
dWJsaWM6CiAKICAgICBpdGVyYXRvciBiZWdpbigpOwogICAgIGl0ZXJhdG9yIGVuZCgpOworICAg
IAorICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIGJlZ2luKCkgPT0gZW5kKCk7IH0KIAogcHJp
dmF0ZToKICAgICBSYXdOb2RlIG1faGVhZFNlbnRpbmVsOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw2ICs0Myw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZTdHJpbmcgKiBDRlN0cmkK
IC8vIExhbmRpbmcgdGhlIGZpbGUgbW92ZXMgaW4gb25lIHBhdGNoLCB3aWxsIGZvbGxvdyBvbiB3
aXRoIHBhdGNoZXMgdG8gY2hhbmdlIHRoZSBuYW1lc3BhY2VzLgogbmFtZXNwYWNlIEpTQyB7CiBz
dHJ1Y3QgSWRlbnRpZmllckNTdHJpbmdUcmFuc2xhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJZGVudGlmaWVyQ2hhckJ1ZmZl
clRyYW5zbGF0b3I7CiBzdHJ1Y3QgSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyVHJhbnNsYXRvcjsK
IH0KQEAgLTcyLDcgKzczLDggQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgZnJpZW5kIHN0cnVj
dCBXVEY6OlN1YnN0cmluZ1RyYW5zbGF0b3I7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6OlVDaGFy
QnVmZmVyVHJhbnNsYXRvcjsKICAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKLQor
ICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKIHByaXZh
dGU6CiAgICAgZW51bSBCdWZmZXJPd25lcnNoaXAgewogICAgICAgICBCdWZmZXJJbnRlcm5hbCwK
</data>
<flag name="commit-queue"
          id="124999"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123880</attachid>
            <date>2012-01-24 21:01:42 -0800</date>
            <delta_ts>2012-01-25 10:27:00 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_49.diff</filename>
            <type>text/plain</type>
            <size>440275</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1ODQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4MCBA
QAorMjAxMi0wMS0yNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9M
aW5rQnVmZmVyLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChK
U0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmg6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppc1NldCk6CisgICAgICAgIChK
U0M6OkNhbGxMaW5rU3RhdHVzOjpvcGVyYXRvciEpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJs
b2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRp
c29uKToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFt
Q29kZUJsb2NrOjpqaXRDb21waWxlSW1wbCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6
OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENv
bXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2Nh
cmRpbmdPcHBvcnR1bml0eSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0Q29tcGlsZSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YWRkTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpu
dW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZh
bHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rh
a2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFr
ZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtl
QW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1ZW50RXhpdFNp
dGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29vbik6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50RXhlY3V0ZUNv
dW50ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1
cy5oOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpHZXRCeUlkU3RhdHVzKToKKyAgICAg
ICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6d2FzU2VlbkluSklUKToKKyAgICAgICAgKiBieXRlY29k
ZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6TExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAo
SlNDOjpMTEludENhbGxMaW5rSW5mbzo6fkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpT
Qzo6TExJbnRDYWxsTGlua0luZm86OmlzTGlua2VkKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxs
TGlua0luZm86OnVubGluayk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpNZXRob2RDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6
CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJ
bnQpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAg
KiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnNldER1
bXBzR2VuZXJhdGVkQ29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1w
c0dlbmVyYXRlZENvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJh
dGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmUpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFzZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
b25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhdGNoKToK
KyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBh
YmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAg
ICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAgICAgKiBo
ZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoKKyAgICAgICAg
KiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJy
ZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjppc09wY29kZSk6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUpOgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2Rl
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVy
RmlsZS5oOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKToKKyAgICAg
ICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChK
U0M6OkpJVENvZGU6OmlzT3B0aW1pemluZ0pJVCk6CisgICAgICAgIChKU0M6OkpJVENvZGU6Omlz
QmFzZWxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6SklUQ29kZSk6CisgICAgICAg
ICogaml0L0pJVERyaXZlci5oOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlSWZBcHByb3ByaWF0
ZSk6CisgICAgICAgIChKU0M6OmppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUpOgorICAg
ICAgICAqIGppdC9KSVRFeGNlcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6aml0VGhyb3cpOgor
ICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZV
TkNUSU9OKToKKyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiBsbGlu
dDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRDb21tb24uaDogQWRkZWQuCisgICAgICAg
ICogbGxpbnQvTExJbnREYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpEYXRh
OjpEYXRhKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6On5EYXRhKToKKyAgICAgICAgKiBs
bGludC9MTEludERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpleGNl
cHRpb25JbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6b3Bjb2RlTWFw
KToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnRzLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkxMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTElu
dDo6Z2V0RXZhbEVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0UHJvZ3JhbUVu
dHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuaDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTElu
dEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVy
VGhyb3dJbkNhbGxlcik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhy
b3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAg
ICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhj
ZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX29wZXJhbmQpOgorICAgICAgICAo
SlNDOjpMTEludDo6bGxpbnRfdHJhY2VfdmFsdWUpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJ
TlRfSEVMUEVSX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6dHJhY2VGdW5jdGlvblByb2xv
Z3VlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNob3VsZEpJVCk6CisgICAgICAgIChKU0M6OkxM
SW50OjplbnRyeU9TUik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXNvbHZlR2xvYmFsKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRs
ZUhvc3RDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgIChK
U0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4K
KyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToK
KyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpM
TEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8pOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVu
Y3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50Ojpm
dW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpM
TEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBs
bGludC9MTEludFRodW5rcy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5j
cHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQu
CisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12
Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tl
bmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRy
YWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJi
OiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3Jl
Z2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9zZXR0aW5ncy5yYjogQWRk
ZWQuCisgICAgICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20veDg2LnJiOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvZGVTcGVjaWFs
aXphdGlvbktpbmQuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
aDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVC
bG9jayk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAg
ICAgKEpTQzo6c2FtcGxpbmdEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRh
YmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6
aml0Q29tcGlsZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50
ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJs
b2NrRm9yKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9y
Q2FsbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNv
bnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNh
bGxJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZv
ckNvbnN0cnVjdEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAg
KiBydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnByZXBh
cmVGb3JFeGVjdXRpb24pOgorICAgICAgICAoSlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OkpT
QWN0aXZhdGlvbjo6dGVhck9mZik6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6
CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBl
SW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpT
VmFsdWU6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAg
ICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZUNoYWluLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL1Nl
bnRpbmVsTGlua2VkTGlzdC5oOgorICAgICAgICAoV1RGOjpTZW50aW5lbExpbmtlZExpc3Q6Omlz
RW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKwogMjAxMi0wMS0yNCAg
R2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODU1CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcg
QEAgU0VUKEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJw
cmV0ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAgIiR7SkFWQVNDUklQ
VENPUkVfRElSfS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3BhcnNlciIKICAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vcnVudGltZSIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5h
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHJl
dmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQko
d29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBqYXZhc2NyaXB0Y29yZV9jcHBmbGFncyAr
PSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyIFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0IFwKIAktSSQoc3JjZGlyKS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0IFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIgXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlciBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMDAs
NiArMzAwLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvb3Mtd2luMzIvc3RkYm9vbC5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb3Mtd2luMzIvc3RkaW50LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnByaQkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnByaQkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQCBJ
TkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL2RlYnVnZ2VyIFwKICAgICAkJFNPVVJD
RV9ESVIvaW50ZXJwcmV0ZXIgXAogICAgICQkU09VUkNFX0RJUi9qaXQgXAorICAgICQkU09VUkNF
X0RJUi9sbGludCBcCiAgICAgJCRTT1VSQ0VfRElSL3BhcnNlciBcCiAgICAgJCRTT1VSQ0VfRElS
L3Byb2ZpbGVyIFwKICAgICAkJFNPVVJDRV9ESVIvcnVudGltZSBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTcsNiArNywxNSBAQAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0
ZVRhcmdldCBzZWN0aW9uICovCisJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBP
ZmZzZXRzICovID0geworCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OworCQkJYnVpbGRDb25m
aWd1cmF0aW9uTGlzdCA9IDBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1
cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi87CisJ
CQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJh
dGUgRGVyaXZlZCBTb3VyY2VzICovLAorCQkJKTsKKwkJCW5hbWUgPSAiTExJbnQgT2Zmc2V0cyI7
CisJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOworCQl9OwogCQk2NUZCM0Y2NjA5
RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYQWdn
cmVnYXRlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDY1RkIzRjc3MDlEMTFF
QkQwMEY0OURFQiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRh
cmdldCAiRGVyaXZlZCBTb3VyY2VzIiAqLzsKQEAgLTE0LDYgKzIzLDkgQEAKIAkJCQk2NUZCM0Y2
NTA5RDExRTkxMDBGNDlERUIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTVE
MzVERUUxMEM3QzE0MEIwMDg2NDhCMiAvKiBHZW5lcmF0ZSBEVHJhY2UgaGVhZGVyICovLAogCQkJ
KTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyog
UEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNl
cyI7CiAJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQl9OwpAQCAtNDgsNiAr
NjAsMTAgQEAKIAkJMEJBQzk0QTAxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9u
VmVyaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJDRDgz
NTcxNDg1ODQ1MjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJDRDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8q
IFRlbXBvcmFyeUNoYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCRjI4QTI4MTFB
MzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUExNEJDRjQ1
RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50
RW50cnlwb2ludHMuY3BwICovOyB9OworCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJ
bnRFbnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBCODM5QzE0
QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50
VGh1bmtzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1
bmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBC
ODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYg
LyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4
NUI0RiAvKiBIYW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQUIx
NEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAv
KiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTU4LDkgKzc0LDEzIEBACiAJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4
NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxs
TGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I2MTRCQ0Y4
REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBD
YWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50
Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE1RjE1RjE0
QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29t
bW9uU2xvd1BhdGhzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEYxNkQ3MjYxNDJDMzlDMDAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE2RDcyNDE0MkMzOUEy
MDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLzsgfTsKIAkJMEYyMUMyNjgxNEJFNUY2ODAwQURD
NjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdDMTRCRTcy
NzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0
aW9uSGFybmVzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3
OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdGMTRCRUFBODIw
MEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNv
ZGVDb252ZW50aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVz
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0
MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTZGMTQ3MzhG
MzEwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJs
b2Nrcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGMkM1NTcwMTQ3MzhGMzUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZEMTQ3MzhGMkUwMDEy
MUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLzsgfTsKQEAgLTcxLDYgKzkxLDE5IEBACiAJCTBG
NDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5
MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9u
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Njgw
ODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIg
LyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAg
Ki87IH07CisJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlFMTRC
QTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyog
TExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovOyBz
ZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLXVudXNlZC1wYXJhbWV0ZXIiOyB9OyB9
OworCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMDE0QkE3RjgyMDBC
RkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cCAqLzsgfTsKKwkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5
RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0Njgw
Q0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJ
bnRDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNjE0
QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZF
MjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwICovOyB9OworCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyogTG93
TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2
ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBM
TEludERhdGEuY3BwICovOyB9OworCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnRE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2
ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8q
IEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJu
VmFsdWUuY3BwICovOyB9OworCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxS
ZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVGMDhDRjE0
NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5
IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYyMDE3NDE0M0ZDRDMzMDA2OEI3N0MgLyogREZHVmFy
aWFibGVBY2Nlc3NEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjYyMDE3MjE0M0ZDRDJGMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY2
MjAxNzUxNDNGQ0QzNzAwNjhCNzdDIC8qIERGR09wZXJhbmRzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYyMDE3MTE0M0ZDRDJGMDA2OEI3N0MgLyog
REZHT3BlcmFuZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtMzgzLDcgKzQxNiw3IEBACiAJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBT
dHJpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2Qjk5QUUxMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkJCMDlDMDEzOEUzODFC
MDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5j
cHAgKi87IH07CiAJCTg2QkIwOUMxMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUz
ODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oICovOyB9OwotCQk4NkMzNkVFQTBFRTEyODlEMDBC
M0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxl
ci5oICovOyB9OworCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5
MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAv
KiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkM1NjhERDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJB
Uk0uY3BwICovOyB9OwogCQk4NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJs
ZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07CiAJ
CTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3
RjAgLyogTUlQU0Fzc2VtYmxlci5oICovOyB9OwpAQCAtNzUyLDYgKzc4NSwyMCBAQAogLyogRW5k
IFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSBzZWN0aW9uICovCisJCTBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJ
dGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250
YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3Qg
Ki87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBB
OTE0QkE3RkQ5MDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gIkxMSW50IE9mZnNldHMiOworCQl9
OworCQkwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICov
ID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFs
ID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJv
eHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwOEUxNEJBN0U1RTAw
QkZFMjcyOworCQkJcmVtb3RlSW5mbyA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsK
IAkJMTQxMjE0QkUwQTQ5MTkwRTAwNDgwMjU1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9
IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9
IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTc5Nyw2
ICs4NDQsMTUgQEAKIC8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJB
N0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1
aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9
IC91c3Ivc2hhcmUvbWFuL21hbjEvOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxl
cyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsK
KwkJfTsKIAkJNURCQjE1MTExMzFEMEIxMzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMTI7CkBAIC04MzcsNiArODkzLDEwIEBACiAJCTBCQUM5NDlFMTMzODcyODQwMENGMTM1
QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEJDRDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhcnlDaGFuZ2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNp
emVMaW1pdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxp
bWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk1MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRy
eXBvaW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk2MTRCQ0Y0
NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2lu
dHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1
QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IExMSW50VGh1bmtzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50
VGh1bmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50VGh1bmtzLmg7
IHBhdGggPSBsbGludC9MTEludFRodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ29kZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0Nyw5ICs5MDcsMTMgQEAKIAkJMEYw
QjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRob2RDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29s
dmVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbFJlc29sdmVJ
bmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4
NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyog
TExJbnRDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJ
bnRDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQx
NEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDb21tb25TbG93UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVERyaXZlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNp
YWxpemF0aW9uS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdB
MTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGlvbkhhcm5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVDb252ZW50aW9ucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMg
LyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29k
ZUJsb2Nrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxvY2tz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NjAsNiArOTI0LDIwIEBACiAJCTBG
NDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIg
LyogSklURXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRF
eGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDhGMTRCQTdF
NUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJs
ZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRp
b25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBMTEludEV4Y2VwdGlvbnMuaDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExM
SW50SGVscGVycy5jcHA7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxw
ZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50SGVscGVycy5oOyBw
YXRoID0gbGxpbnQvTExJbnRIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcDsgcGF0aCA9IGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1v
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENvbW1vbi5oOyBwYXRo
ID0gbGxpbnQvTExJbnRDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0
NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludE9mZmxpbmVBc21Db25maWcuaDsgcGF0aCA9
IGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVy
LmNwcDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRl
cnByZXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMb3dMZXZlbEludGVy
cHJldGVyLmg7IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnREYXRhLmNwcDsg
cGF0aCA9IGxsaW50L0xMSW50RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTExJbnREYXRhLmg7IHBhdGggPSBsbGludC9MTEludERhdGEuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8q
IEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERG
R0J5dGVDb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0
ZUNvZGVDYWNoZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVDb2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9u
YWxGaW5hbGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVW5jb25kaXRp
b25hbEZpbmFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjYyMDE2RDE0
M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBYnN0cmFjdFN0YXRlLmNwcDsgcGF0aCA9IGRmZy9ERkdB
YnN0cmFjdFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NzksNiAr
MTY1NywxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhDMTRCQTdFNUUw
MEJGRTI3MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxk
UGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJ
CQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJ
CTE0MTIxMTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0g
UEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OwpAQCAtMTYzNyw2ICsxNzIyLDcgQEAKIAkJCQkxNDEyMTEyMDBBNDg3OTNDMDA0ODAyNTUgLyog
bWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywK
IAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2
ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0x
NjY3LDYgKzE3NTMsNyBAQAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2Ny
aXB0Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2Mu
Y3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLywKKwkJ
CQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8sCiAJCQkJMTQzMkVCRDcwQTM0
Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyog
YXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAq
LywKQEAgLTE3MDUsNiArMTc5MiwyOCBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMg
PSAwOwogCQl9OworCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTBGMEI4Mzk1MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLywKKwkJCQkwRjBCODM5NjE0QkNGNDVB
MDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovLAorCQkJCTBGMEI4Mzk3MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8sCisJCQkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1
QjRGIC8qIExMSW50VGh1bmtzLmggKi8sCisJCQkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8q
IExMSW50RGF0YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50
RGF0YS5oICovLAorCQkJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5o
ICovLAorCQkJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25m
aWcuaCAqLywKKwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnBy
ZXRlci5jcHAgKi8sCisJCQkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50
ZXJwcmV0ZXIuaCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNl
cHRpb25zLmNwcCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNl
cHRpb25zLmggKi8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVy
cy5jcHAgKi8sCisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5o
ICovLAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGludDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3MjYwMDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNzM3LDYgKzE4NDYsOCBA
QAogCQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkgLyogaml0ICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyog
SG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcy
IC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUy
NzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyog
Q29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTIxNjYsNiArMjI3Nyw4IEBACiAJCTdFRjZFMEJC
MEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNp
YWxpemF0aW9uS2luZC5oICovLAorCQkJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVj
dXRpb25IYXJuZXNzLmggKi8sCiAJCQkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1v
blNsb3dQYXRocy5oICovLAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0
LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLApA
QCAtMjUyNSw2ICsyNjM4LDggQEAKIAkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVj
b2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIx
QzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovLAorCQkJCTBG
MEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovLAogCQkJCTBG
OTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgKi8sCiAJCQkJMEY5
MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggKi8sCiAJCQkJMEY5MzMy
OTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovLApAQCAtMzA3Niw3ICsz
MTkxLDE2IEBACiAJCQkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRh
eENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAv
KiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEEzMTRCQTdGOEQw
MEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEE1
MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21tb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25m
aWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dM
ZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBEMzE0QkJEMTY3MDBC
RkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBENTE0QkJEMjRC
MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYw
QjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9u
UmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTMwODUsNyArMzIwOSwxMSBAQAogCQkJCTBG
MEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1
cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBGQzQ1QTE0
QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8q
IEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRBMTRDM0NE
MjkwMDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0Iy
OTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGN0IyOTRDMTRDM0NENDMwMDdDM0RCMSAvKiBERkdCeXRlQ29kZUNhY2hlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMxMDMsNiArMzIzMSwyNCBAQAogLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJ
MEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9
IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3Qg
PSAwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIgKi87CisJCQlidWls
ZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLywK
KwkJCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkwRjQ2
ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVs
ZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4MEIyMTRCQTgxMTUw
MEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBKU0NM
TEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0TmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIg
LyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFw
cGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKIAkJMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1
IC8qIG1pbmlkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLzsKQEAgLTMyMjks
MTEgKzMzNzUsMjkgQEAKIAkJCQkxNEJENTlCRTBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAq
LywKIAkJCQk5MzJGNUJEQTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAogCQkJCTY1MTEyMkY3
MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4MDhFMTRCQTdFNUUw
MEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCisJCQkJMEY0NjgwQTkxNEJB
N0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8sCiAJCQkpOwogCQl9OwogLyogRW5kIFBC
WFByb2plY3Qgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ug
c2VjdGlvbiAqLworCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZl
ZCBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlu
cHV0UGF0aHMgPSAoCisJCQkJIiQoU1JDUk9PVCkvbGxpbnQvTG93TGV2ZWxBc3NlbWJsZXIuYXNt
IiwKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CisJCQlvdXRw
dXRQYXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cy9MTElu
dERlc2lyZWRPZmZzZXRzLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0g
Im1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9cIlxuXG4vdXNy
L2Jpbi9lbnYgcnVieSBcIiR7U1JDUk9PVH0vb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0
cmFjdG9yLnJiXCIgXCIke1NSQ1JPT1R9L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtXCIg
XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMu
aFwiXG4iOworCQl9OwogCQkzNzEzRjAxNDE0MjkwNTI0MDAzNjM4N0YgLyogQ2hlY2sgRm9yIElu
YXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xhc3MgTmFtZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhT
aGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpA
QCAtMzMzOSw3ICszNTAzLDcgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7Ci0JCQlzaGVsbFNjcmlwdCA9
ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9kb2NzXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlXCJcblxuL2Jpbi9sbiAtc2ZoIFwiJHtTUkNST09UfVwiIEphdmFTY3Jp
cHRDb3JlXG5leHBvcnQgSmF2YVNjcmlwdENvcmU9XCJKYXZhU2NyaXB0Q29yZVwiXG5leHBvcnQg
QlVJTFRfUFJPRFVDVFNfRElSPVwiLi4vLi5cIlxuXG5tYWtlIC0tbm8tYnVpbHRpbi1ydWxlcyAt
ZiBcIkphdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2VcIiAtaiBgL3Vzci9zYmluL3N5
c2N0bCAtbiBody5uY3B1YFxuIjsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlM
VF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL2RvY3NcIlxuY2Qg
XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmVcIlxu
XG4vYmluL2xuIC1zZmggXCIke1NSQ1JPT1R9XCIgSmF2YVNjcmlwdENvcmVcbmV4cG9ydCBKYXZh
U2NyaXB0Q29yZT1cIkphdmFTY3JpcHRDb3JlXCJcbmV4cG9ydCBCVUlMVF9QUk9EVUNUU19ESVI9
XCIuLi8uLlwiXG5cbm1ha2UgLS1uby1idWlsdGluLXJ1bGVzIC1mIFwiSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNyL3NiaW4vc3lzY3RsIC1uIGh3Lm5jcHVgXG5c
bi91c3IvYmluL2VudiBydWJ5IEphdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiIEphdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtICR7QlVJTFRfUFJPRFVDVFNf
RElSfS9KU0NMTEludE9mZnNldHNFeHRyYWN0b3IgTExJbnRBc3NlbWJseS5oXG4iOwogCQl9Owog
CQk5MzE5NTg2QjA5RDlGOTFBMDBBNTZGRDQgLyogQ2hlY2sgRm9yIEdsb2JhbCBJbml0aWFsaXpl
cnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CkBAIC0zMzc0LDYg
KzM1MzgsMTQgQEAKIC8qIEVuZCBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhCMTRC
QTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxk
UGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJ
CQkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUQwQTQ4NzkzQzAwNDgwMjU1IC8qIFNvdXJjZXMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CkBAIC0zNjMyLDcgKzM4MDQsMTQgQEAKIAkJCQk4NjcwNEI4NjEyREJBMzM3
MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4OTEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRC
NDIxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklU
RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUy
NzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBE
MjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
NDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTElu
dFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBCODNCMDE0QkNGNzE2MDA4ODVCNEYg
LyogQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4M0I0MTRCQ0Y4NjAw
MDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjY5
RTg2QzMxNEM2RTU1MTAwMkMyQzYyIC8qIE51bWJlck9mQ29yZXMuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0zNjU0LDYgKzM4MzMsMTYgQEAKIC8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLworCQkwRjQ2
ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlz
YSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBC
RkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLzsKKwkJCXRhcmdldFByb3h5ID0gMEY0NjgwQjExNEJB
ODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJMEY0Njgw
QjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2Eg
PSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZF
MjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXRhcmdldFByb3h5ID0gMEY0
NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsK
IAkJMTQxMjE0QkYwQTQ5MTkwRTAwNDgwMjU1IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7
CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwogCQkJdGFyZ2V0ID0gMTQxMjExMUYwQTQ4
NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi87CkBAIC0zNjg3LDYgKzM4NzYsMTQ4IEBACiAvKiBF
bmQgUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQnVpbGRDb25m
aWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMEY0NjgwOTYxNEJBN0U1RTAwQkZFMjcyIC8qIERlYnVn
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQo
QVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJ
CUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0RZTkFNSUNfTk9fUElD
ID0gTk87CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX09Q
VElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9
ICgKKwkJCQkJIkRFQlVHPTEiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOworCQkJCUdD
Q19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gTk87CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBw
bGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9D
T05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0g
WUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJO
X1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpd
IiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xM
SW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJ
CU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9
IFlFUzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1Qg
PSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRf
UFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9
OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyog
UmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNI
UyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZ
RVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJ
CQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNf
RVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMu
bGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBO
TzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0ND
X1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklB
QkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQku
LAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzJChI
RUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJH
RVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsK
KwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwOTgxNEJBN0U1RTAwQkZF
MjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsK
KwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0Vf
U1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgt
ZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5B
QkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5j
b21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZF
UlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7
CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5V
U0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0g
KAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRP
ZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJH
RVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNI
X1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFE
RVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJ
MEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NF
QVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9C
SVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9O
X0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJE
ID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0ND
X1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19X
QVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlT
U0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0g
WUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NF
QVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlM
VF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFU
SFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJ
UFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4Owor
CQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUg
PSBQcm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcg
Ki8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJ
CQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxl
YXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9
OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAv
KiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5
IjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2ODBCMDE0QkE3RkQ5
MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBT
b3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEy
MTEzQTBBNDg3OTg0MDA0ODAyNTUgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CkBAIC0zOTI4LDYgKzQyNTksMjggQEAK
IC8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQ29u
ZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zm
c2V0c0V4dHJhY3RvciIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJ
YnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyog
RGVidWcgKi8sCisJCQkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJ
CQkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODA5
OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQ
cm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICov
ID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlv
bnMgPSAoCisJCQkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBG
NDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4MEFGMTRCQTdG
RDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcy
IC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2li
bGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsK
IAkJMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJh
dGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHJldmlzaW9uIDEwNTc3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw3ICszNCw3IEBACiAjZGVmaW5lIEdMT0JBTF9USFVOS19JRCByZWludGVycHJl
dF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLTEpKQogI2RlZmluZSBSRUdFWFBf
Q09ERV9JRCByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLTIp
KQogCi0jaW5jbHVkZSA8TWFjcm9Bc3NlbWJsZXIuaD4KKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29u
dmVudGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCeXRl
Y29kZUNvbnZlbnRpb25zX2gKKyNkZWZpbmUgQnl0ZWNvZGVDb252ZW50aW9uc19oCisKKy8vIFJl
Z2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50
IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKKy8vICAgICAgMHg4MDAwMDAwMC0w
eEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFy
ZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCisvLyAgICAg
IDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJh
bWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rp
b24ncyBjYWxsZnJhbWUuCisvLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUg
aW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBw
b29sIG9uIHRoZSBDb2RlQmxvY2suCitzdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4ID0gMHg0MDAwMDAwMDsKKworI2VuZGlmIC8vIEJ5dGVjb2RlQ29udmVudGlvbnNf
aAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a1N0YXR1cy5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE3ICsyNyw0
MCBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKKyNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAor
Q2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2Nr
KiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworICAgIFVOVVNFRF9Q
QVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7Cisj
aWYgRU5BQkxFKExMSU5UKQorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVk
QmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworICAgIExMSW50
Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBpbnN0cnVjdGlvbls0XS51LmNhbGxMaW5rSW5m
bzsKKyAgICAKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoY2FsbExpbmtJbmZvLT5sYXN0U2Vl
bkNhbGxlZS5nZXQoKSwgZmFsc2UpOworI2Vsc2UKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMo
MCwgZmFsc2UpOworI2VuZGlmCit9CisKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpj
b21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFN
KGJ5dGVjb2RlSW5kZXgpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxF
UikKLSAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmdl
dENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KS5sYXN0U2VlbkNhbGxlZS5nZXQoKSwKLSAgICAg
ICAgcHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpOworICAg
IGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZDYWxsTGlua0luZm9zKCkpCisgICAgICAgIHJl
dHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworICAg
IAorICAgIGlmIChwcm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4
KSkKKyAgICAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIHRydWUpOworICAgIAorICAgIEpT
RnVuY3Rpb24qIHRhcmdldCA9IHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mbyhieXRlY29k
ZUluZGV4KS5sYXN0U2VlbkNhbGxlZS5nZXQoKTsKKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAg
cmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7Cisg
ICAgCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldCwgZmFsc2UpOwogI2Vsc2UKICAg
ICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFsc2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24g
MTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE1ICs0NywxNyBAQCBwdWJsaWM6CiAgICAgCiAgICAg
c3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0
ZWNvZGVJbmRleCk7CiAgICAgCi0gICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9j
YWxsVGFyZ2V0OyB9CisgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFy
Z2V0IHx8IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yISgp
IGNvbnN0IHsgcmV0dXJuICFtX2NhbGxUYXJnZXQ7IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNv
bnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBKU0Z1
bmN0aW9uKiBjYWxsVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAg
CiBwcml2YXRlOgorICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KENv
ZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgIAogICAgIEpTRnVuY3Rpb24q
IG1fY2FsbFRhcmdldDsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7CiB9OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9u
IDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgi
CisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZm
ZXIuaCIKICNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNsdWRlIDxzdGRpby5o
PgpAQCAtNTksOCArNjAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIHVzaW5nIG5hbWVzcGFjZSBERkc7
CiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElO
RykKLQogc3RhdGljIFVTdHJpbmcgZXNjYXBlUXVvdGVzKGNvbnN0IFVTdHJpbmcmIHN0cikKIHsK
ICAgICBVU3RyaW5nIHJlc3VsdCA9IHN0cjsKQEAgLTM1OCwxMCArMzU3LDEwIEBAIHZvaWQgQ29k
ZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykgY28KICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGluc3RydWN0aW9ucygpLnNpemUoKTsgaSArPSBvcGNvZGVMZW5ndGhzW2V4ZWMtPmludGVy
cHJldGVyKCktPmdldE9wY29kZUlEKGluc3RydWN0aW9ucygpW2ldLnUub3Bjb2RlKV0pCiAgICAg
ICAgICsraW5zdHJ1Y3Rpb25Db3VudDsKIAotICAgIHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rpb25z
OyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMp
XG5cbiIsCisgICAgcHJpbnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlcyBhdCAlcDsg
JWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocyk7ICVkIHZhcmlhYmxlKHMpXG5c
biIsCiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9uQ291bnQp
LAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXpl
KCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKSwKLSAgICAgICAgdGhpcywgbV9udW1QYXJhbWV0ZXJz
LCBtX251bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgICAgIHRoaXMsIG1fbnVtUGFyYW1ldGVycywg
bV9udW1DYWxsZWVSZWdpc3RlcnMsIG1fbnVtVmFycyk7CiAKICAgICBWZWN0b3I8SW5zdHJ1Y3Rp
b24+Ojpjb25zdF9pdGVyYXRvciBiZWdpbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAg
VmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW5zdHJ1Y3Rpb25zKCku
ZW5kKCk7CkBAIC04OTgsNiArODk3LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0
ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgInB1dF9ieV9pZF90cmFuc2l0aW9uIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDogeworICAgICAg
ICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAgICAgICAgcHJpbnRQ
dXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZF9nZW5lcmljOiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlv
biwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjkx
LDggKzEyOTgsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAg
ICAgfQogfQogCi0jZW5kaWYgLy8gIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NB
TVBMSU5HKQotCiAjaWYgRFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJQ1MKIHN0YXRpYyBIYXNoU2V0
PENvZGVCbG9jayo+IGxpdmVDb2RlQmxvY2tTZXQ7CiAjZW5kaWYKQEAgLTE0NTksNiArMTQ2NCw3
IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywKIHsKICAgICBzZXRO
dW1QYXJhbWV0ZXJzKG90aGVyLm51bVBhcmFtZXRlcnMoKSk7CiAgICAgb3B0aW1pemVBZnRlcldh
cm1VcCgpOworICAgIGppdEFmdGVyV2FybVVwKCk7CiAgICAgCiAgICAgaWYgKG90aGVyLm1fcmFy
ZURhdGEpIHsKICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwpAQCAtMTUwNyw2
ICsxNTEzLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAg
IEFTU0VSVChtX3NvdXJjZSk7CiAgICAgCiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOworICAg
IGppdEFmdGVyV2FybVVwKCk7CiAKICNpZiBEVU1QX0NPREVfQkxPQ0tfU1RBVElTVElDUwogICAg
IGxpdmVDb2RlQmxvY2tTZXQuYWRkKHRoaXMpOwpAQCAtMTUyNCw3ICsxNTMxLDExIEBAIENvZGVC
bG9jazo6fkNvZGVCbG9jaygpCiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJPRklMRSkKICAg
ICBkdW1wVmFsdWVQcm9maWxlcygpOwogI2VuZGlmCi0gICAgCisKKyNpZiBFTkFCTEUoTExJTlQp
ICAgIAorICAgIHdoaWxlIChtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpICE9IG1faW5jb21p
bmdMTEludENhbGxzLmVuZCgpKQorICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigp
LT5yZW1vdmUoKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAjaWYgRU5BQkxFKEpJVCkKICAg
ICAvLyBXZSBtYXkgYmUgZGVzdHJveWVkIGJlZm9yZSBhbnkgQ29kZUJsb2NrcyB0aGF0IHJlZmVy
IHRvIHVzIGFyZSBkZXN0cm95ZWQuCiAgICAgLy8gQ29uc2lkZXIgdGhhdCB0d28gQ29kZUJsb2Nr
cyBiZWNvbWUgdW5yZWFjaGFibGUgYXQgdGhlIHNhbWUgdGltZS4gVGhlcmUKQEAgLTE3MzYsOCAr
MTc0Nyw1OSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAjZWxz
ZQogICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VVbmxpbmtpbmcgPSBmYWxzZTsKICNlbmRp
ZgotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAgICAKKyNpZiBFTkFCTEUoTExJTlQp
CisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9nbG9iYWxEYXRhLT5pbnRlcnByZXRl
cjsKKyAgICAvLyBpbnRlcnByZXRlci0+ZW5hYmxlZCgpIHJldHVybnMgdHJ1ZSBpZiB0aGUgb2xk
IEMrKyBpbnRlcnByZXRlciBpcyBlbmFibGVkLiBJZiB0aGF0J3MgZW5hYmxlZAorICAgIC8vIHRo
ZW4gd2UncmUgbm90IHVzaW5nIExMSW50LgorICAgIGlmICghaW50ZXJwcmV0ZXItPmVuYWJsZWQo
KSkgeworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0
aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVj
dGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uc1tpXV07CisgICAgICAgICAgICBzd2l0Y2ggKGludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkpIHsKKyAgICAgICAgICAgIGNhc2Ugb3Bf
Z2V0X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgICAgICAg
ICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChj
dXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmNs
ZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kID0gMDsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0OgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWw6CisgICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0
aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjpp
c01hcmtlZChjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVD
aGFpbi5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
IGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAg
Y3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBj
dXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmNsZWFyKCk7CisgICAgICAgICAgICAg
ICAgY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9w
X3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgSW5z
dHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9uc1tpXV07CisgICAgICAgICAgICBBU1NFUlQoaW50ZXJwcmV0ZXItPmdldE9w
Y29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbAor
ICAgICAgICAgICAgICAgICAgIHx8IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVj
dGlvblswXS51Lm9wY29kZSkgPT0gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CisgICAgICAg
ICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2Vk
KGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmNsZWFy
KCk7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQgPSAwOworICAgICAg
ICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZv
cy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ld
LmlzTGlua2VkKCkgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmNh
bGxlZS5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAg
ICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20gJXAuXG4i
LCB0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmso
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghIW1fbGxpbnRDYWxsTGlua0luZm9z
W2ldLmxhc3RTZWVuQ2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZv
c1tpXS5sYXN0U2VlbkNhbGxlZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgbV9sbGludENhbGxM
aW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUuY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKyNl
bmRpZiAvLyBFTkFCTEUoTExJTlQpCisKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAvLyBDaGVj
ayBpZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2UgYXJlLCB0aGVuIGpldHRpc29uLgogICAgIGlmICgh
KHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRh
LT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7CkBAIC0xODU4LDEwICsxOTIwLDEyIEBAIHZvaWQg
Q29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXIKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7ICsraSkKICAgICAgICAgdmlzaXRvci5hcHBl
bmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQotICAgIGZv
ciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9
IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5z
dHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOwotICAgIGZvciAo
c2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsg
aSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVj
dGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICBpZiAobV9nbG9i
YWxEYXRhLT5pbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNp
emUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9u
cygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICAgICAgZm9yIChzaXpl
X3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwg
c2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVj
dGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICB9CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMjA3MCw2ICsyMTM0LDEyIEBAIHZvaWQgQ29kZUJs
b2NrOjp1bmxpbmtDYWxscygpCiB7CiAgICAgaWYgKCEhbV9hbHRlcm5hdGl2ZSkKICAgICAgICAg
bV9hbHRlcm5hdGl2ZS0+dW5saW5rQ2FsbHMoKTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgewor
ICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5mb3NbaV0uaXNMaW5rZWQoKSkKKyAgICAgICAg
ICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOworICAgIH0KKyNlbmRpZgogICAg
IGlmICghKG1fY2FsbExpbmtJbmZvcy5zaXplKCkgfHwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNp
emUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklU
KCkpCkBAIC0yMDg0LDEwICsyMTU0LDM5IEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygp
CiAKIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKCkKIHsKKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgd2hpbGUgKG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCkgIT0gbV9pbmNv
bWluZ0xMSW50Q2FsbHMuZW5kKCkpCisgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLmJlZ2lu
KCktPnVubGluaygpOworI2VuZGlmCisgICAgaWYgKG1faW5jb21pbmdDYWxscy5pc0VtcHR5KCkp
CisgICAgICAgIHJldHVybjsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIodGhpcyk7
CiAgICAgd2hpbGUgKG1faW5jb21pbmdDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdDYWxscy5l
bmQoKSkKICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLmJlZ2luKCktPnVubGluaygqbV9nbG9iYWxE
YXRhLCByZXBhdGNoQnVmZmVyKTsKIH0KKwordW5zaWduZWQgQ29kZUJsb2NrOjpieXRlY29kZU9m
ZnNldChFeGVjU3RhdGUqIGV4ZWMsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3sK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKHJldHVybkFkZHJlc3MudmFsdWUoKSA+PSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9iZWdpbikKKyAgICAgICAgJiYgcmV0dXJuQWRkcmVzcy52
YWx1ZSgpIDw9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2VuZCkpIHsKKyAgICAgICAgQVNT
RVJUKGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygp
ID09IHRoaXMpOworICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklU
VHlwZSgpKSk7CisgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGV4ZWMtPmN1cnJl
bnRWUEMoKTsKKyAgICAgICAgQVNTRVJUKGluc3RydWN0aW9uKTsKKyAgICAgICAgcmV0dXJuIGJ5
dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJB
TShleGVjKTsKKyNlbmRpZgorICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgcmV0dXJuIDE7
CisgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGlj
ZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKKyAgICBpZiAoIWNhbGxJ
bmRpY2VzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGJpbmFyeVNlYXJj
aDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1
cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklU
Q29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsK
K30KICNlbmRpZgogCiB2b2lkIENvZGVCbG9jazo6Y2xlYXJFdmFsQ2FjaGUoKQpAQCAtMjE4Mywy
NCArMjI4Miw0NSBAQCBib29sIEZ1bmN0aW9uQ29kZUJsb2NrOjpjYW5Db21waWxlV2l0aERGCiAK
IHZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRU
eXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09w
dGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1l
bnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFi
bGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBF
dmFsQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBK
SVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJ
VChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAg
ICBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlz
b25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwogfQogCiB2b2lkIEZ1bmN0aW9uQ29kZUJs
b2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpC
YXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRU
eXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNf
Y2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0
aW1pemVkQ29kZUZvcigqZ2xvYmFsRGF0YSgpLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29u
c3RydWN0IDogQ29kZUZvckNhbGwpOwogfQorCit2b2lkIFByb2dyYW1Db2RlQmxvY2s6OmppdENv
bXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklU
VHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09
IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJs
ZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShnbG9iYWxEYXRhKTsKK30KKwordm9p
ZCBFdmFsQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEp
Cit7CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KTsKKyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZ2xv
YmFsRGF0YSk7Cit9CisKK3ZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJ
VENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50
KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4
ZWN1dGFibGUoKSktPmppdENvbXBpbGVGb3IoZ2xvYmFsRGF0YSwgbV9pc0NvbnN0cnVjdG9yID8g
Q29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxF
KFZBTFVFX1BST0ZJTEVSKQpAQCAtMjMwMyw2ICsyNDIzLDE4IEBAIHZvaWQgQ29kZUJsb2NrOjpk
dW1wVmFsdWVQcm9maWxlcygpCiB9CiAjZW5kaWYKIAordm9pZCBDb2RlQmxvY2s6OmhhbmRsZUJ5
dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCkKK3sKKyNpZiAhRU5BQkxFKE9QQ09ERV9TQU1Q
TElORykgJiYgIUVOQUJMRShMTElOVCkKKyAgICBpZiAoQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBz
R2VuZXJhdGVkQ29kZSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCEhYWx0ZXJuYXRpdmUo
KSkKKyAgICAgICAgZGlzY2FyZEJ5dGVjb2RlKCk7CisgICAgZWxzZQorICAgICAgICBkaXNjYXJk
Qnl0ZWNvZGVMYXRlcigpOworI2VuZGlmCit9CisKICNpZm5kZWYgTkRFQlVHCiBib29sIENvZGVC
bG9jazo6dXNlc09wY29kZShPcGNvZGVJRCBvcGNvZGVJRCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpA
QCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBDb2RlQmxvY2tfaAogI2RlZmluZSBDb2RlQmxvY2tf
aAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkNhbGxMaW5r
SW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCiAj
aW5jbHVkZSAiQ29kZU9yaWdpbi5oIgpAQCAtNTAsNiArNTEsNyBAQAogI2luY2x1ZGUgIkpJVFdy
aXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSnVt
cFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJMaW5l
SW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUHJlZGljdGlvblRyYWNrZXIu
aCIKQEAgLTY1LDE2ICs2NywxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
ICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCi0vLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0
ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVp
ciByYW5nZXM6Ci0vLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNl
cyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFt
ZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgotLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZv
cndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMg
YW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgotLy8gICAgICAw
eDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNw
ZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgotc3Rh
dGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7Ci0K
IG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIERGR0Nv
ZGVCbG9ja3M7CisgICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIAogICAgIGlubGluZSBpbnQgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGlu
dCBhcmd1bWVudHNSZWdpc3RlcikgeyByZXR1cm4gYXJndW1lbnRzUmVnaXN0ZXIgLSAxOyB9CiAK
QEAgLTgzLDYgKzgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29kZUJsb2NrIDog
cHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIsIHB1YmxpYyBXZWFrUmVmZXJlbmNlSGFydmVz
dGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAg
ICAgcHVibGljOgogICAgICAgICBlbnVtIENvcHlQYXJzZWRCbG9ja1RhZyB7IENvcHlQYXJzZWRC
bG9jayB9OwogICAgIHByb3RlY3RlZDoKQEAgLTEyMyw3ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gcmVzdWx0LT5hbHRlcm5hdGl2ZSgpOwogICAgICAgICAgICAgQVNTRVJU
KHJlc3VsdCk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklU
Q29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxp
bmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OwogICAgICAgICB9CiAjZW5kaWYKQEAgLTEzNCwxMSArMTMyLDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAotI2lmICFkZWZpbmVk
KE5ERUJVRykgfHwgRU5BQkxFX09QQ09ERV9TQU1QTElORwogICAgICAgICB2b2lkIGR1bXAoRXhl
Y1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmVzKGNvbnN0IEluc3Ry
dWN0aW9uKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmUoY29uc3QgY2hhciog
bmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBpbnQgb3BlcmFuZCkgY29uc3Q7Ci0jZW5kaWYKIAog
ICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2Rl
OyB9CiAKQEAgLTE5NCwxNSArMTkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBy
ZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9kQ2FsbExpbmtJbmZvLCB1bnNpZ25lZCwgZ2V0TWV0
aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4obV9tZXRob2RDYWxsTGlua0luZm9zLmJlZ2lu
KCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCksIGJ5dGVjb2RlSW5kZXgpKTsKICAgICAg
ICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KFJldHVybkFkZHJlc3NQdHIg
cmV0dXJuQWRkcmVzcykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQot
ICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgVmVjdG9yPENhbGxSZXR1cm5P
ZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxS
ZXR1cm5JbmRleFZlY3RvcjsKLSAgICAgICAgICAgIGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQot
ICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgcmV0dXJuIGJpbmFyeVNlYXJj
aDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1
cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklU
Q29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsK
LSAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChFeGVjU3RhdGUqLCBS
ZXR1cm5BZGRyZXNzUHRyKTsKIAogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldEZvckNh
bGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7CkBAIC0yMjMsMTEgKzIxMSwxNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgbV9pbmNvbWluZ0NhbGxz
LnB1c2goaW5jb21pbmcpOwogICAgICAgICB9CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICB2
b2lkIGxpbmtJbmNvbWluZ0NhbGwoTExJbnRDYWxsTGlua0luZm8qIGluY29taW5nKQorICAgICAg
ICB7CisgICAgICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5wdXNoKGluY29taW5nKTsKKyAg
ICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKICAgICAgICAgCiAgICAgICAgIHZvaWQg
dW5saW5rSW5jb21pbmdDYWxscygpOwotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAot
I2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQp
CiAgICAgICAgIHZvaWQgc2V0SklUQ29kZU1hcChQYXNzT3duUHRyPENvbXBhY3RKSVRDb2RlTWFw
PiBqaXRDb2RlTWFwKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2ppdENvZGVNYXAgPSBqaXRD
b2RlTWFwOwpAQCAtMjM2LDcgKzIzMCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAg
ICAgICAgICAgICByZXR1cm4gbV9qaXRDb2RlTWFwLmdldCgpOwogICAgICAgICB9CisjZW5kaWYK
ICAgICAgICAgCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHZvaWQgY3JlYXRlREZHRGF0
YUlmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCEhbV9kZmdEYXRhKQpA
QCAtMzM1LDEyICszMzEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICNlbmRpZgog
Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dChJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKHJldHVybkFkZHJlc3MgPj0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSAmJiByZXR1cm5BZGRy
ZXNzIDwgaW5zdHJ1Y3Rpb25zKCkuZW5kKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigp
OwogICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgICB2b2lkIHNldElzTnVtZXJpY0NvbXBhcmVG
dW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVtZXJpY0NvbXBh
cmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgICAgICBib29sIGlz
TnVtZXJpY0NvbXBhcmVGdW5jdGlvbigpIHsgcmV0dXJuIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0
aW9uOyB9CkBAIC0zNTQsMTcgKzM0OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAg
ICAgICAgICAgICBtX3Nob3VsZERpc2NhcmRCeXRlY29kZSA9IHRydWU7CiAgICAgICAgIH0KLSAg
ICAgICAgdm9pZCBoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghIWFsdGVybmF0aXZlKCkpCi0gICAgICAgICAgICAgICAgZGlz
Y2FyZEJ5dGVjb2RlKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZGlzY2Fy
ZEJ5dGVjb2RlTGF0ZXIoKTsKLSAgICAgICAgfQorICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2Rl
RGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgICAgIAotI2lmbmRlZiBOREVCVUcKICAgICAg
ICAgYm9vbCB1c2VzT3Bjb2RlKE9wY29kZUlEKTsKLSNlbmRpZgogCiAgICAgICAgIHVuc2lnbmVk
IGluc3RydWN0aW9uQ291bnQoKSB7IHJldHVybiBtX2luc3RydWN0aW9uQ291bnQ7IH0KICAgICAg
ICAgdm9pZCBzZXRJbnN0cnVjdGlvbkNvdW50KHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQpIHsg
bV9pbnN0cnVjdGlvbkNvdW50ID0gaW5zdHJ1Y3Rpb25Db3VudDsgfQpAQCAtMzg3LDE3ICszNzQs
MjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGV4
ZWN1dGFibGVNZW1vcnkoKSB7IHJldHVybiBnZXRKSVRDb2RlKCkuZ2V0RXhlY3V0YWJsZU1lbW9y
eSgpOyB9CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0
YXRlKiwgU2NvcGVDaGFpbk5vZGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNv
bigpID0gMDsKKyAgICAgICAgYm9vbCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpJ
bnRlcnByZXRlclRodW5rKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9
PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaml0Q29tcGlsZUltcGwoZ2xvYmFsRGF0YSk7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIENvZGVC
bG9jayogcmVwbGFjZW1lbnQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxl
V2l0aERGRygpID0gMDsKICAgICAgICAgYm9vbCBoYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFz
ZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdl
dEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgYm9vbCByZXN1bHQgPSByZXBsYWNlbWVudCgpLT5n
ZXRKSVRUeXBlKCkgPiBnZXRKSVRUeXBlKCk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAg
ICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKS0+
Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAg
ICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENv
ZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNl
bGluZUNvZGUocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICAgICAg
QVNTRVJUKHJlcGxhY2VtZW50KCkgPT0gdGhpcyk7CiAgICAgICAgICAgICB9CiAjZW5kaWYKQEAg
LTQ1NiwxOCArNDUyLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgY2xlYXJF
dmFsQ2FjaGUoKTsKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgdm9pZCBhZGRQ
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKHVuc2lnbmVkIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQo
KSkKLSAgICAgICAgICAgICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChw
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKTsKKyAgICAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJ
bnN0cnVjdGlvbnMuYXBwZW5kKHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9
CiAgICAgICAgIHZvaWQgYWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKHVuc2lnbmVkIGdsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2dsb2Jh
bERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluc3Ry
dWN0aW9ucy5hcHBlbmQoZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKTsKKyAgICAgICAgICAgIG1f
Z2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5hcHBlbmQoZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
KTsKICAgICAgICAgfQogICAgICAgICBib29sIGhhc0dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbkF0
Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOworI2lmIEVOQUJMRShMTElO
VCkKKyAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGFkZExMSW50Q2FsbExpbmtJbmZvKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3MuYXBwZW5kKExMSW50Q2Fs
bExpbmtJbmZvKCkpOworICAgICAgICAgICAgcmV0dXJuICZtX2xsaW50Q2FsbExpbmtJbmZvcy5s
YXN0KCk7CisgICAgICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQg
c2V0TnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3Moc2l6ZV90IHNpemUpIHsgbV9zdHJ1Y3R1cmVT
dHViSW5mb3MuZ3JvdyhzaXplKTsgfQpAQCAtNDc2LDggKzQ3NSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIHZvaWQgYWRkR2xvYmFsUmVzb2x2ZUluZm8odW5zaWduZWQgZ2xvYmFsUmVz
b2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9nbG9iYWxEYXRh
LT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbmZvcy5hcHBl
bmQoR2xvYmFsUmVzb2x2ZUluZm8oZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKSk7CisgICAgICAg
ICAgICBtX2dsb2JhbFJlc29sdmVJbmZvcy5hcHBlbmQoR2xvYmFsUmVzb2x2ZUluZm8oZ2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9uKSk7CiAgICAgICAgIH0KICAgICAgICAgR2xvYmFsUmVzb2x2ZUlu
Zm8mIGdsb2JhbFJlc29sdmVJbmZvKGludCBpbmRleCkgeyByZXR1cm4gbV9nbG9iYWxSZXNvbHZl
SW5mb3NbaW5kZXhdOyB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluZm9BdEJ5dGVj
b2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTQ4OCw2ICs0ODYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGFkZE1ldGhvZENhbGxMaW5rSW5mb3ModW5z
aWduZWQgbikgeyBBU1NFUlQobV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSk7IG1fbWV0aG9kQ2Fs
bExpbmtJbmZvcy5ncm93KG4pOyB9CiAgICAgICAgIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9k
Q2FsbExpbmtJbmZvKGludCBpbmRleCkgeyByZXR1cm4gbV9tZXRob2RDYWxsTGlua0luZm9zW2lu
ZGV4XTsgfQorICAgICAgICBzaXplX3QgbnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKCkgeyBy
ZXR1cm4gbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKTsgfQogI2VuZGlmCiAgICAgICAgIAog
I2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTUyOCw2ICs1MjcsMTAgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0
XS51Lm9wY29kZSkpIC0gMV0udS5wcm9maWxlID09IHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CisgICAgICAgIFByZWRpY3RlZFR5cGUgdmFsdWVQcm9maWxl
UHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIHZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0KS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIHVuc2lnbmVkIHRvdGFsTnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkKICAgICAg
ICAgewpAQCAtNTU0LDEyICs1NTcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAg
ICAgICBib29sIGxpa2VseVRvVGFrZVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAg
ICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHJh
cmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVy
OwogICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dD
YXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRp
b25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGNvdWxkVGFrZVNsb3dDYXNlKGludCBi
eXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVD
YXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB1bnNpZ25lZCB2YWx1ZSA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49IE9wdGlv
bnM6OmNvdWxkVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4o
dmFsdWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6OmNvdWxkVGFrZVNsb3dD
YXNlVGhyZXNob2xkOwogICAgICAgICB9CkBAIC01NzgsMTIgKzU4NSwxNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlU3BlY2lhbEZhc3RDYXNl
KGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJP
ZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVBy
b2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAg
ICAgICAgIHJldHVybiBzcGVjaWFsRmFzdENhc2VDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rh
a2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHNwZWNpYWxGYXN0
Q2FzZUNvdW50KSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rh
a2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBs
aWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7
CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHNsb3dDYXNlQ291bnQg
PSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291
bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lh
bEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3Vu
dGVyOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBzbG93Q2FzZUNvdW50IC0gc3BlY2lh
bEZhc3RDYXNlQ291bnQ7CkBAIC01OTIsNiArNjAzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZUFueVNsb3dDYXNlKGludCBieXRlY29kZU9m
ZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmls
ZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENh
c2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29k
ZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gc2xvd0Nh
c2VDb3VudCArIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNjc3LDcgKzY5MCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBhZGRGcmVxdWVudEV4aXRTaXRlKGNv
bnN0IERGRzo6RnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkKICAgICAgICAgewotICAgICAgICAgICAg
QVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAg
ICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CiAgICAgICAg
ICAgICByZXR1cm4gbV9leGl0UHJvZmlsZS5hZGQoc2l0ZSk7CiAgICAgICAgIH0KIApAQCAtNzgy
LDYgKzc5NSwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBjb3B5UG9zdFBhcnNl
RGF0YUZyb20oQ29kZUJsb2NrKiBhbHRlcm5hdGl2ZSk7CiAgICAgICAgIHZvaWQgY29weVBvc3RQ
YXJzZURhdGFGcm9tQWx0ZXJuYXRpdmUoKTsKICAgICAgICAgCisgICAgICAgIC8vIEZ1bmN0aW9u
cyBmb3IgY29udHJvbGxpbmcgd2hlbiBKSVR0aW5nIGtpY2tzIGluLCBpbiBhIG1peGVkIG1vZGUK
KyAgICAgICAgLy8gZXhlY3V0aW9uIHdvcmxkLgorICAgICAgICAKKyAgICAgICAgdm9pZCBkb250
SklUQW55dGltZVNvb24oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNv
dW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNv
b247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0QWZ0ZXJXYXJtVXAoKQor
ICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgdm9pZCBqaXRTb29uKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGlu
dEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29v
bjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50MzJfdCBsbGludEV4ZWN1dGVDb3Vu
dGVyKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fbGxpbnRFeGVjdXRl
Q291bnRlcjsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBj
b250cm9sbGluZyB3aGVuIHRpZXJlZCBjb21waWxhdGlvbiBraWNrcyBpbi4gVGhpcwogICAgICAg
ICAvLyBjb250cm9scyBib3RoIHdoZW4gdGhlIG9wdGltaXppbmcgY29tcGlsZXIgaXMgaW52b2tl
ZCBhbmQgd2hlbiBPU1IKICAgICAgICAgLy8gZW50cnkgaGFwcGVucy4gVHdvIHRyaWdnZXJzIGV4
aXN0OiB0aGUgbG9vcCB0cmlnZ2VyIGFuZCB0aGUgcmV0dXJuCkBAIC05NzQsNiArMTAxMCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fc2hvdWxkRGlzY2FyZEJ5dGVjb2RlOwog
CiAgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNH
bG9iYWxEYXRhJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRXZWFrUmVmZXJlbmNl
cyhTbG90VmlzaXRvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkoKTsKICAgICAgICAgCkBAIC05ODYsNyArMTAyMyw2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIHRhbGx5RnJlcXVlbnRFeGl0U2l0ZXMoKSB7IH0KICNlbmRpZgogICAgICAg
ICAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRShPUENPREVfU0FNUExJTkcpCiAgICAg
ICAgIHZvaWQgZHVtcChFeGVjU3RhdGUqLCBjb25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25z
dF9pdGVyYXRvciYgYmVnaW4sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJikg
Y29uc3Q7CiAKICAgICAgICAgQ1N0cmluZyByZWdpc3Rlck5hbWUoRXhlY1N0YXRlKiwgaW50IHIp
IGNvbnN0OwpAQCAtOTk2LDcgKzEwMzIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCBwcmludEdldEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVj
dGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0OwogICAgICAgICB2
b2lkIHByaW50Q2FsbE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0
aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7CiAgICAgICAgIHZv
aWQgcHJpbnRQdXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1
Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKLSNlbmRpZgog
ICAgICAgICB2b2lkIHZpc2l0U3RydWN0dXJlcyhTbG90VmlzaXRvciYsIEluc3RydWN0aW9uKiB2
UEMpIGNvbnN0OwogICAgICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTEwNTcsOSArMTA5
MiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBt
X3NvdXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7CiAKLSNpZiBFTkFCTEUo
SU5URVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9wcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2dsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBTZWdtZW50ZWRWZWN0b3I8TExJ
bnRDYWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxsTGlua0luZm9zOworICAgICAgICBTZW50aW5l
bExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50
Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdMTEludENhbGxzOwogI2VuZGlmCiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0cnVjdHVyZVN0dWJJ
bmZvczsKQEAgLTEwNzAsOSArMTEwNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNoZWNrOwogICAgICAgICBTZW50
aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlu
a0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2VuZGlmCi0jaWYgRU5BQkxFKERGR19KSVQpCisj
aWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgT3duUHRyPENvbXBh
Y3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAgICAgIAorI2VuZGlmCisjaWYgRU5BQkxF
KERGR19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbiB7CiAgICAg
ICAgICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigpIHsgfQogICAgICAgICAgICAgCkBAIC0x
MTM1LDEyICsxMTczLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93blB0cjxDb2Rl
QmxvY2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAgIAorICAgICAgICBpbnQzMl90IG1fbGxpbnRF
eGVjdXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAgICAgIGludDMyX3QgbV9qaXRFeGVjdXRlQ291
bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyOwogICAg
ICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFpbENvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3Qg
bV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9yZW9wdGltaXph
dGlvblJldHJ5Q291bnRlcjsKLQorICAgICAgICAKICAgICAgICAgc3RydWN0IFJhcmVEYXRhIHsK
ICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHB1YmxpYzoKQEAg
LTEyMTMsNiArMTI1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAg
ICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNo
YWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFs
IENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBp
bGVXaXRoREZHKCk7CiAjZW5kaWYKQEAgLTEyNDcsNiArMTI4OCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGlt
aXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
amV0dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFs
RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAg
ICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKQEAgLTEyODQsNiAr
MTMyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVh
bCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSop
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9j
ayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZH
KCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjAg
KzI3LDQ5IEBACiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIAorR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVC
bG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYg
aWRlbnQpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9Q
QVJBTShieXRlY29kZUluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lmIEVOQUJM
RShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKyAgICAKKyAgICBpZiAoaW5z
dHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfbWV0aG9kX2NoZWNrKQorICAgICAgICBp
bnN0cnVjdGlvbisrOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0
XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJu
IEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBm
YWxzZSk7CisgICAgCisgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxl
ZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5k
KQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVT
ZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhT
aW1wbGVEaXJlY3QsIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQsIGZhbHNlKTsKKyNl
bHNlCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0
KCksIG5vdEZvdW5kLCBmYWxzZSk7CisjZW5kaWYKK30KKwogR2V0QnlJZFN0YXR1cyBHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0
ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2Zp
bGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURf
UEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikK
KyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKCkpCisg
ICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5k
ZXgsIGlkZW50KTsKKyAgICAKICAgICAvLyBGaXJzdCBjaGVjayBpZiBpdCBtYWtlcyBlaXRoZXIg
Y2FsbHMsIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBiZSBzdXBlciBjYXJlZnVsLCBvcgogICAg
IC8vIGlmIGl0J3Mgbm90IHNldCBhdCBhbGwsIGluIHdoaWNoIGNhc2Ugd2UgcHVudC4KICAgICBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mbyhi
eXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJldHVybiBH
ZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7Cisg
ICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5k
ZXgsIGlkZW50KTsKICAgICAKICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIGxp
c3Q7CiAgICAgaW50IGxpc3RTaXplOwpAQCAtNjAsMTggKzg5LDE5IEBAIEdldEJ5SWRTdGF0dXMg
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICB9CiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgIGlmICghbGlzdC0+bGlzdFtpXS5pc0RpcmVjdCkK
LSAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNl
dCgpLCBub3RGb3VuZCk7CisgICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0Nh
bGxzLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIHRydWUpOwogICAgIH0KICAgICAKICAgICAv
LyBOZXh0IGNoZWNrIGlmIGl0IHRha2VzIHNsb3cgY2FzZSwgaW4gd2hpY2ggY2FzZSB3ZSB3YW50
IHRvIGJlIGtpbmQgb2YgY2FyZWZ1bC4KICAgICBpZiAocHJvZmlsZWRCbG9jay0+bGlrZWx5VG9U
YWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVz
KFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVy
biBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwg
dHJ1ZSk7CiAgICAgCiAgICAgLy8gRmluYWxseSBmaWd1cmUgb3V0IGlmIHdlIGNhbiBkZXJpdmUg
YW4gYWNjZXNzIHN0cmF0ZWd5LgogICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OworICAgIHJlc3Vs
dC5tX3dhc1NlZW5JbkpJVCA9IHRydWU7CiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBl
KSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVz
KE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVy
biBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsK
ICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6IHsKICAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5mby51LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7CkBAIC0xMzAsNyArMTYwLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3Rh
dHVzOjpjb21wdXRlRm9yKAogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZSAvLyBFTkFC
TEUoSklUKQotICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVy
ZVNldCgpLCBub3RGb3VuZCk7CisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlv
biwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJ
ZFN0YXR1cy5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMCArNDksMTEgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0
ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQpCisgICAg
R2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVT
ZXQsIHNpemVfdCBvZmZzZXQsIGJvb2wgd2FzU2VlbkluSklUKQogICAgICAgICA6IG1fc3RhdGUo
c3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQogICAgICAgICAs
IG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBtX3dhc1NlZW5JbkpJVCh3YXNTZWVuSW5KSVQp
CiAgICAgewogICAgICAgICBBU1NFUlQoKHN0YXRlID09IFNpbXBsZURpcmVjdCkgPT0gKG9mZnNl
dCAhPSBub3RGb3VuZCkpOwogICAgIH0KQEAgLTcwLDEwICs3MSwxNSBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0cnVj
dHVyZVNldDsgfQogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsg
fQogICAgIAorICAgIGJvb2wgd2FzU2VlbkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVu
SW5KSVQ7IH0KKyAgICAKIHByaXZhdGU6CisgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0
ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVy
Jik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1
cmVTZXQ7CiAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIGJvb2wgbV93YXNTZWVuSW5KSVQ7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xhc3MgU3Ry
dWN0dXJlOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOworICAgIHN0cnVjdCBMTEludENhbGxM
aW5rSW5mbzsKICAgICBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCiAjaWYgRU5BQkxFKEpJVCkKQEAg
LTE0Niw2ICsxNDcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHN0cnVjdCBJ
bnN0cnVjdGlvbiB7CisgICAgICAgIEluc3RydWN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdS5qc0NlbGwuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgSW5zdHJ1
Y3Rpb24oT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogI2lmICFFTkFCTEUoQ09NUFVURURfR09U
T19JTlRFUlBSRVRFUikKQEAgLTE4Miw2ICsxODgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jKSB7
IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7IH0KICAgICAgICAgCisgICAgICAgIEluc3RydWN0
aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pIHsgdS5jYWxsTGlua0luZm8gPSBj
YWxsTGlua0luZm87IH0KKyAgICAgICAgCiAgICAgICAgIEluc3RydWN0aW9uKFZhbHVlUHJvZmls
ZSogcHJvZmlsZSkgeyB1LnByb2ZpbGUgPSBwcm9maWxlOyB9CiAKICAgICAgICAgdW5pb24gewpA
QCAtMTkxLDcgKzE5OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgV3JpdGVCYXJy
aWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3RydWN0dXJlQ2hhaW47CiAgICAgICAgICAgICBXcml0
ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxsOwogICAgICAgICAgICAgUHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKKyAgICAgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBj
YWxsTGlua0luZm87CiAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7CisgICAgICAg
ICAgICB2b2lkKiBwb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxs
TGlua0luZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRD
YWxsTGlua0luZm9faAorI2RlZmluZSBMTEludENhbGxMaW5rSW5mb19oCisKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVk
ZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0
IEluc3RydWN0aW9uOworCitzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNS
YXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+IHsKKyAgICBMTEludENhbGxMaW5rSW5m
bygpCisgICAgeworICAgIH0KKyAgICAKKyAgICB+TExJbnRDYWxsTGlua0luZm8oKQorICAgIHsK
KyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9Cisg
ICAgCisgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIGNhbGxlZTsgfQorICAgIAorICAgIHZv
aWQgdW5saW5rKCkKKyAgICB7CisgICAgICAgIGNhbGxlZS5jbGVhcigpOworICAgICAgICBtYWNo
aW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgICAgICBpZiAoaXNP
bkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBXcml0ZUJh
cnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBs
YXN0U2VlbkNhbGxlZTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFjaGluZUNvZGVUYXJn
ZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIExMSW50Q2FsbExpbmtJ
bmZvX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw2ICszNSwxMSBAQCBNZXRob2RDYWxsTGlua1N0YXR1cyBNZXRob2RDYWxs
TGlua1N0YXR1CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9Q
QVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJP
RklMRVIpCisgICAgLy8gTk9URTogVGhpcyBkb2VzIG5vdCBoYXZlIGFuIExMSW50IGZhbGwtYmFj
ayBiZWNhdXNlIExMSW50IGRvZXMgbm90IGRvIGFueSBtZXRob2QKKyAgICAvLyBjYWxsIGxpbmsg
Y2FjaGluZy4KKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mTWV0aG9kQ2FsbExpbmtJ
bmZvcygpKQorICAgICAgICByZXR1cm4gTWV0aG9kQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAKICAg
ICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGwgPSBwcm9maWxlZEJsb2NrLT5nZXRNZXRo
b2RDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCk7CiAgICAgCiAgICAgaWYgKCFtZXRob2RDYWxs
LnNlZW4gfHwgIW1ldGhvZENhbGwuY2FjaGVkU3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiAr
MTIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9hcmd1bWVudHNf
bGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkgXAogICAgICAgICBt
YWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9yZXBs
YWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmljLCA5KSBcCiAgICAg
ICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApAQCAtMjAyLDYgKzIwNCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB0eXBlZGVmIGVudW0geyBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RF
X0lEX0VOVU0pIH0gT3Bjb2RlSUQ7CiAgICAgI3VuZGVmIE9QQ09ERV9JRF9FTlVNCiAKKyAgICBj
b25zdCBpbnQgbWF4T3Bjb2RlTGVuZ3RoID0gOTsKICAgICBjb25zdCBpbnQgbnVtT3Bjb2RlSURz
ID0gb3BfZW5kICsgMTsKIAogICAgICNkZWZpbmUgT1BDT0RFX0lEX0xFTkdUSFMoaWQsIGxlbmd0
aCkgY29uc3QgaW50IGlkIyNfbGVuZ3RoID0gbGVuZ3RoOwpAQCAtMjE4LDcgKzIyMSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoVkVSSUZZX09QQ09ERV9J
RCk7CiAgICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQKIAotI2lmIEVOQUJMRShDT01QVVRFRF9H
T1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8
fCBFTkFCTEUoTExJTlQpCiAjaWYgQ09NUElMRVIoUlZDVCkgfHwgQ09NUElMRVIoSU5URUwpCiAg
ICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTA1NzcwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNywyNyArMjcsNjkgQEAKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgi
CiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVy
LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK1B1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgsIElkZW50aWZpZXImIGlkZW50KQoreworICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2Nr
KTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKGlk
ZW50KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0g
cHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CisK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdl
dCgpOworICAgIGlmICghc3RydWN0dXJlKQorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhO
b0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgCisgICAgaWYgKGluc3RydWN0
aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZCkgeworICAgICAgICBzaXplX3Qg
b2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRl
bnQpOworICAgICAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJu
IFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlUmVwbGFjZSwgc3RydWN0dXJl
LCAwLCAwLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bMF0u
dS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0CisgICAgICAg
ICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbCk7CisgICAgCisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBpbnN0
cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4g
PSBpbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpOworICAgIEFTU0VSVChuZXdT
dHJ1Y3R1cmUpOworICAgIEFTU0VSVChjaGFpbik7CisgICAgCisgICAgc2l6ZV90IG9mZnNldCA9
IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsK
KyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1
cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgCisgICAgcmV0dXJuIFB1
dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNo
YWluLCBvZmZzZXQpOworI2Vsc2UKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisjZW5kaWYKK30KKwogUHV0QnlJZFN0YXR1cyBQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHBy
b2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVT
RURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxF
UikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKCkp
CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2Rl
SW5kZXgsIGlkZW50KTsKKyAgICAKICAgICBpZiAocHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtl
U2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRh
a2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKICAgICAKICAgICBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mbyhieXRlY29kZUluZGV4
KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVz
KE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1
dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgIAog
ICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewogICAgIGNhc2UgYWNjZXNzX3Vuc2V0
OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBu
b3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ss
IGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5
X2lkX3JlcGxhY2U6IHsKICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJ
ZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0KApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMDU3NzApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKICAgICBzaXplX3Qgb2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKIHByaXZhdGU6CisgICAgc3RhdGljIFB1dEJ5
SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1
cmUqIG1fb2xkU3RydWN0dXJlOwogICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmU7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1
ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAjaW5j
bHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKQEAgLTExNiwyNiAr
MTE3LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGV4cGVjdGVkIGJ5IHRoZSBjYWxsZWUuCiAq
LwogCi0jaWZuZGVmIE5ERUJVRwogc3RhdGljIGJvb2wgc19kdW1wc0dlbmVyYXRlZENvZGUgPSBm
YWxzZTsKLSNlbmRpZgogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRl
ZENvZGUoYm9vbCBkdW1wc0dlbmVyYXRlZENvZGUpCiB7Ci0jaWZuZGVmIE5ERUJVRwogICAgIHNf
ZHVtcHNHZW5lcmF0ZWRDb2RlID0gZHVtcHNHZW5lcmF0ZWRDb2RlOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oZHVtcHNHZW5lcmF0ZWRDb2RlKTsKLSNlbmRpZgogfQogCiBib29sIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKQogewotI2lmbmRlZiBOREVCVUcKICAgICBy
ZXR1cm4gc19kdW1wc0dlbmVyYXRlZENvZGU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNl
bmRpZgogfQogCiBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKQEAgLTE0
OCwxMCArMTM5LDggQEAgSlNPYmplY3QqIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAK
ICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25Db3VudChtX2NvZGVCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpKTsKIAotI2lmbmRlZiBOREVCVUcKICAgICBpZiAoc19kdW1wc0dlbmVy
YXRlZENvZGUpCiAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wKG1fc2NvcGVDaGFpbi0+Z2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCkpOwotI2VuZGlmCiAKICAgICBpZiAoKG1fY29kZVR5cGUgPT0g
RnVuY3Rpb25Db2RlICYmICFtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpICYmICFt
X2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKSB8fCBtX2NvZGVUeXBlID09IEV2YWxDb2RlKQog
ICAgICAgICBzeW1ib2xUYWJsZSgpLmNsZWFyKCk7CkBAIC0xMjc2LDkgKzEyNjUsNyBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAg
ICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNp
emUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
LSNlbmRpZgogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNv
ZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9w
X3Jlc29sdmVfZ2xvYmFsKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5k
ZXgoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0
eSkpOwpAQCAtMTQ0MCw5ICsxNDI3LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJl
c29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5U
RVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihp
bnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxl
ID0gZW1pdFByb2ZpbGVkT3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVf
Z2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRD
b25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ5MCw5ICsxNDc1LDcgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9jb2RlQmxv
Y2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAjZW5kaWYK
LSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29s
dmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgVmFsdWVQ
cm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNr
cyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTUxMSw5ICsxNDk0LDcgQEAg
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1ldGhvZENoZWNrKAogCiBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQ
UkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxl
ID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2dldF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0xNTM5LDkgKzE1MjAsNyBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAg
IG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygp
LnNpemUoKSk7Ci0jZW5kaWYKIAogICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBAIC0xNTU3LDkgKzE1MzYsNyBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5CiAKIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0jaWYgRU5B
QkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICAKICAgICBlbWl0T3Bj
b2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4
KCkpOwpAQCAtMTg0OCw3ICsxODI1LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0Q2FsbCgKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7IC8v
IGZ1bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoY2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0ZXJPZmZzZXQKKyNp
ZiBFTkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5h
ZGRMTEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDApOworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlmIChkc3Qg
IT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVt
aXRQcm9maWxlZE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMTk1Miw3ICsxOTMzLDEx
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3QKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsgLy8g
YXJnQ291bnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdpc3Rl
ck9mZnNldCgpKTsgLy8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygpKTsK
KyNlbHNlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworI2VuZGlmCiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAg
ICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9jYWxs
X3B1dF9yZXN1bHQpOwpAQCAtMjIxMyw3ICsyMTk4LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0Q2F0Y2gKIHsKICAgICBtX3VzZXNFeGNlcHRpb25zID0gdHJ1ZTsKICNp
ZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICBIYW5kbGVySW5mbyBpbmZvID0g
eyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXpl
KCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoLCBDb2RlTG9jYXRpb25M
YWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9jYXRjaCkpIH07CisjZWxzZQogICAg
IEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCks
IGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3Bl
RGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKCkgfTsKKyNlbmRpZgogI2Vsc2UKICAgICBIYW5kbGVy
SW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVj
dGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoIH07
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA0LDkgKzYwNCw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBVTlVTRURfUEFSQU0obm9kZUluZGV4KTsKICAg
ICAgICAgCi0gICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJ
bmRleCk7Ci0gICAgICAgIEFTU0VSVChwcm9maWxlKTsKLSAgICAgICAgUHJlZGljdGVkVHlwZSBw
cmVkaWN0aW9uID0gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgICAg
IFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jay0+dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5k
ZXgpOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCJEeW5h
bWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4LCBieXRlY29kZUlu
ZGV4LCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikpOwogI2VuZGlmCkBAIC0xMDQxLDYg
KzEwMzksOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhib29sCiAgICAg
CiAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhlbiBpdCBsb29rcyBsaWtlIHdlIHNob3VsZCBkZWZp
bml0ZWx5IGlubGluZSB0aGlzIGNvZGUuIFByb2NlZWQKICAgICAvLyB3aXRoIHBhcnNpbmcgdGhl
IGNvZGUgdG8gZ2V0IGJ5dGVjb2RlLCBzbyB0aGF0IHdlIGNhbiB0aGVuIHBhcnNlIHRoZSBieXRl
Y29kZS4KKyAgICAvLyBOb3RlIHRoYXQgaWYgTExJbnQgaXMgZW5hYmxlZCwgdGhlIGJ5dGVjb2Rl
IHdpbGwgYWx3YXlzIGJlIGF2YWlsYWJsZS4gQWxzbyBub3RlCisgICAgLy8gdGhhdCBpZiBMTElu
dCBpcyBlbmFibGVkLCB3ZSBtYXkgaW5saW5lIGEgY29kZSBibG9jayB0aGF0IGhhcyBuZXZlciBi
ZWVuIEpJVHRlZAorICAgIC8vIGJlZm9yZSEKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1f
Y29kZUJsb2NrQ2FjaGUuZ2V0KENvZGVCbG9ja0tleShleGVjdXRhYmxlLCBraW5kKSwgZXhwZWN0
ZWRGdW5jdGlvbi0+c2NvcGUoKSk7CiAgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTE3NDEsNyArMTc0Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2ssIG1fY3VycmVudEluZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYg
KG1ldGhvZENhbGxTdGF0dXMuaXNTZXQoKQotICAgICAgICAgICAgICAgICYmICFnZXRCeUlkU3Rh
dHVzLmlzU2V0KCkKKyAgICAgICAgICAgICAgICAmJiAhZ2V0QnlJZFN0YXR1cy53YXNTZWVuSW5K
SVQoKQogICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpIHsKICAgICAgICAgICAgICAg
ICAvLyBJdCdzIG1vbm9tb3JwaGljIGFzIGZhciBhcyB3ZSBjYW4gdGVsbCwgc2luY2UgdGhlIG1l
dGhvZF9jaGVjayB3YXMgbGlua2VkCiAgICAgICAgICAgICAgICAgLy8gYnV0IHRoZSBzbG93IHBh
dGggKGkuZS4gdGhlIG5vcm1hbCBnZXRfYnlfaWQpIG5ldmVyIGZpcmVkLgpAQCAtMTgxMCw3ICsx
ODExLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwogICAgICAgICB9Ci0gICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkOiB7CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9
IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJ
bmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAg
ICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRl
bnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmRdOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMDU3
NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDggQEAgaW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29k
ZShPcGNvZGVJRCBvcAogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9n
ZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxf
dmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw2ICs0OCwyMSBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykK
ICAgICB1aW50MzJfdCBleGl0SW5kZXggPSBnbG9iYWxEYXRhLT5vc3JFeGl0SW5kZXg7CiAgICAg
T1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jay0+b3NyRXhpdChleGl0SW5kZXgpOwogICAgIAorICAg
IC8vIE1ha2Ugc3VyZSBhbGwgY29kZSBvbiBvdXIgaW5saW5lIHN0YWNrIGlzIEpJVCBjb21waWxl
ZC4gVGhpcyBpcyBuZWNlc3Nhcnkgc2luY2UKKyAgICAvLyB3ZSBtYXkgb3B0IHRvIGlubGluZSBh
IGNvZGUgYmxvY2sgZXZlbiBiZWZvcmUgaXQgaGFkIGV2ZXIgYmVlbiBjb21waWxlZCBieSB0aGUK
KyAgICAvLyBKSVQsIGJ1dCBvdXIgT1NSIGV4aXQgaW5mcmFzdHJ1Y3R1cmUgY3VycmVudGx5IG9u
bHkgd29ya3MgaWYgdGhlIHRhcmdldCBvZiB0aGUKKyAgICAvLyBPU1IgZXhpdCBpcyBKSVQgY29k
ZS4gVGhpcyBjb3VsZCBiZSBjaGFuZ2VkIHNpbmNlIHRoZXJlIGlzIG5vdGhpbmcgcGFydGljdWxh
cmx5CisgICAgLy8gaGFyZCBhYm91dCBkb2luZyBhbiBPU1IgZXhpdCBpbnRvIHRoZSBpbnRlcnBy
ZXRlciwgYnV0IGZvciBub3cgdGhpcyBzZWVtcyB0byBtYWtlCisgICAgLy8gc2Vuc2UgaW4gdGhh
dCBpZiB3ZSdyZSBPU1IgZXhpdGluZyBmcm9tIGlubGluZWQgY29kZSBvZiBhIERGRyBjb2RlIGJs
b2NrLCB0aGVuCisgICAgLy8gcHJvYmFibHkgaXQncyBhIGdvb2Qgc2lnbiB0aGF0IHRoZSB0aGlu
ZyB3ZSdyZSBleGl0aW5nIGludG8gaXMgaG90LiBFdmVuIG1vcmUKKyAgICAvLyBpbnRlcmVzdGlu
Z2x5LCBzaW5jZSB0aGUgY29kZSB3YXMgaW5saW5lZCwgaXQgbWF5IG5ldmVyIG90aGVyd2lzZSBn
ZXQgSklUCisgICAgLy8gY29tcGlsZWQgc2luY2UgdGhlIGFjdCBvZiBpbmxpbmluZyBpdCBtYXkg
ZW5zdXJlIHRoYXQgaXQgb3RoZXJ3aXNlIG5ldmVyIHJ1bnMuCisgICAgZm9yIChDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJh
bWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVyKSB7Cisg
ICAgICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKQorICAgICAgICAgICAgLT5iYXNlbGluZUNvZGVC
bG9ja0Zvcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+aXNDYWxsID8gQ29kZUZvckNhbGwg
OiBDb2RlRm9yQ29uc3RydWN0KQorICAgICAgICAgICAgLT5qaXRDb21waWxlKCpnbG9iYWxEYXRh
KTsKKyAgICB9CisgICAgCiAgICAgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkgPSAwOwog
ICAgIGlmIChleGl0Lm1fcmVjb3ZlcnlJbmRleCkKICAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJs
b2NrLT5zcGVjdWxhdGlvblJlY292ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4IC0gMSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9u
IDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiREZHUmVwYXRjaC5oIgorI2luY2x1
ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNp
bmNsdWRlICJJbmxpbmVBU00uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNTYxLDQ1
ICs1NjIsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyCiAgICAg
cmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
REZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNvZGVkSlNWYWx1ZSBE
RkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0
ZSopOwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKLSAgICAibW92
ICVyMTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKFg4NikK
LWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAi
XG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAg
Im1vdiAtNDAoJWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVzcClcbiIKLSAgICAi
am1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRo
RXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20gKAotIi50ZXh0
IiAiXG4iCi0iLmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICJcbiIKLSIudGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKLSAgICAiY3B5
IHIwLCByNSIgIlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0KLUVuY29kZWRK
U1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUo
RXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xv
YmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQotCiBzdGF0aWMgdm9pZCogaGFuZGxl
SG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUt
PmNhbGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxvY2F0
aW9uU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9BbGxv
Y2F0aW9uU3BhY2UuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvQWxsb2NhdGlvblNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogY2xhc3MgTWFya2VkQmxvY2s7CiAKIGNsYXNzIEFsbG9jYXRpb25TcGFjZSB7CkBAIC02
Nyw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNocmluaygpOwogICAgIAogcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAgIGVudW0g
QWxsb2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRpb25DYW5GYWlsLCBBbGxvY2F0aW9uTXVzdFN1Y2Nl
ZWQgfTsKIAogICAgIHZvaWQqIGFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODM3
LDcgKzgzNyw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKICAg
ICAgICAgc2V0SGlnaFdhdGVyTWFyayhtYXgocHJvcG9ydGlvbmFsQnl0ZXMsIG1fbWluQnl0ZXNQ
ZXJDeWNsZSkpOwogICAgIH0KICAgICBKQVZBU0NSSVBUQ09SRV9HQ19FTkQoKTsKLQorICAgIAog
ICAgICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTVmFsdWU7CiAgICAgY2xhc3Mg
TGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAgICBjbGFzcyBSZWdpc3RlckZpbGU7CiAg
ICAgY2xhc3MgVVN0cmluZzsKQEAgLTEzNiwxMSArMTM3LDEyIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMoSGFzaFNldDxKU0NlbGwq
PiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJs
b2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGlvblNwYWNlOworICAgICAgICBmcmll
bmQgY2xhc3MgQ29kZUJsb2NrOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBCdW1wU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKLSAg
ICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKIAogICAgICAgICBzaXplX3Qgd2F0ZXJNYXJr
KCk7CiAgICAgICAgIHNpemVfdCBoaWdoV2F0ZXJNYXJrKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3
ICszMDQsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oCiAjZW5k
aWYKIAogICAgIEFTU0VSVChIZWFwOjppc01hcmtlZChjZWxsKSk7Ci0KKyAgICAKICAgICBpZiAo
aXNKU1N0cmluZyhjZWxsKSkgewogICAgICAgICBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihjb25z
dF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxMDU3NzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSGVhcDsKIGNsYXNz
IEpTQ2VsbDsKIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsKIGNsYXNzIFNsb3RWaXNpdG9yOwogCkBAIC03
Nyw2ICs3OCw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiB0eXBl
bmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jaygpOwogCiBwcml2YXRlOgorICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiAgICAgLy8gWyAzMi4u
LiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZVN0ZXAgPSBNYXJrZWRCbG9j
azo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlQ3V0b2ZmID0gMjU2
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUu
aAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiArMTE5LDkgQEAgbmFtZXNwYWNl
IEpTQyAgewogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgSW5zdHJ1Y3Rpb24qIHJl
dHVyblZQQygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10udlBD
KCk7IH0KICNlbmRpZgorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1
cnJlbnRWUEMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPih0aGlz
W1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0udGFnKCkpOyB9CisjZW5kaWYKIAogICAgICAg
ICB2b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogY2FsbGVyRnJhbWUpIHsgc3RhdGljX2Nh
c3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXSA9IGNhbGxlckZy
YW1lOyB9CiAgICAgICAgIHZvaWQgc2V0U2NvcGVDaGFpbihTY29wZUNoYWluTm9kZSogc2NvcGVD
aGFpbikgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6U2NvcGVD
aGFpbl0gPSBzY29wZUNoYWluOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNlbmRpZgogCi0jZGVmaW5l
IFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAoRU5BQkxFKENPTVBVVEVEX0dP
VE9fSU5URVJQUkVURVIpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKKyNkZWZpbmUgV1RGX1VTRV9H
Q0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EICgoRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQ
UkVURVIpIHx8IEVOQUJMRShMTElOVCkpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKIAogdXNpbmcg
bmFtZXNwYWNlIHN0ZDsKIApAQCAtNTQ3LDE3ICs1NDcsNDMgQEAgSW50ZXJwcmV0ZXI6OkludGVy
cHJldGVyKCkKIHsKIH0KIAotdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShib29sIGNhblVz
ZUpJVCkKK0ludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIoKQogewotI2lmIEVOQUJMRShDT01QVVRF
RF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAobV9lbmFibGVk
KQorICAgICAgICBkZWxldGVbXSBtX29wY29kZVRhYmxlOworI2VuZGlmCit9CisKK3ZvaWQgSW50
ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRhdGEqIGxsaW50RGF0YSwgYm9vbCBjYW5Vc2VK
SVQpCit7CisgICAgVU5VU0VEX1BBUkFNKGxsaW50RGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKGNh
blVzZUpJVCk7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJM
RShMTElOVCkKKyNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisgICAgLy8g
SGF2aW5nIExMSW50IGVuYWJsZWQsIGJ1dCBub3QgYmVpbmcgYWJsZSB0byB1c2UgdGhlIEpJVCwg
YW5kIG5vdCBoYXZpbmcKKyAgICAvLyBhIGNvbXB1dGVkIGdvdG8gaW50ZXJwcmV0ZXIsIGlzIG5v
dCBzdXBwb3J0ZWQuIE5vdCBiZWNhdXNlIHdlIGNhbm5vdAorICAgIC8vIHN1cHBvcnQgaXQsIGJ1
dCBiZWNhdXNlIEkgZGVjaWRlZCB0byBkcmF3IHRoZSBsaW5lIGF0IHRoZSBudW1iZXIgb2YKKyAg
ICAvLyBwZXJtdXRhdGlvbnMgb2YgZXhlY3V0aW9uIGVuZ2luZXMgdGhhdCBJIHdhbnRlZCB0aGlz
IGNvZGUgdG8gZ3Jvay4KKyAgICBBU1NFUlQoY2FuVXNlSklUKTsKKyNlbmRpZgogICAgIGlmIChj
YW5Vc2VKSVQpIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bjb2RlVGFibGUgPSBs
bGludERhdGEtPm9wY29kZU1hcCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9w
Y29kZUlEczsgKytpKQorICAgICAgICAgICAgbV9vcGNvZGVJRFRhYmxlLmFkZChtX29wY29kZVRh
YmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworI2Vsc2UKICAgICAgICAgLy8gSWYg
dGhlIEpJVCBpcyBwcmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0aW5hdGlvbnMgZm9yIG9wY29k
ZXMuCiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsg
KytpKSB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPihz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpKTsKICAgICAgICAgICAgIG1fb3Bjb2RlVGFibGVbaV0g
PSBvcGNvZGU7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKExM
SU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbmV3IE9wY29kZVtudW1PcGNvZGVJRHNdOwor
I2VuZGlmCiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRpYWxpemVBbmRSZXR1cm4sIDAsIDAp
OwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsr
aSkKQEAgLTU2Niw3ICs1OTIsNiBAQCB2b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKGJvb2wg
Y2FuVXNlCiAgICAgICAgIG1fZW5hYmxlZCA9IHRydWU7CiAgICAgfQogI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oY2FuVXNlSklUKTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9lbmFi
bGVkID0gdHJ1ZTsKICNlbHNlCkBAIC02NjcsOSArNjkyLDExIEBAIHZvaWQgSW50ZXJwcmV0ZXI6
OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW0KIAogYm9vbCBJbnRlcnByZXRlcjo6aXNPcGNvZGUoT3Bj
b2RlIG9wY29kZSkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNp
ZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lm
ICFFTkFCTEUoTExJTlQpCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybiBvcGNv
ZGUgPj0gMCAmJiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4o
b3Bjb2RlKSkgPD0gb3BfZW5kOworI2VuZGlmCiAgICAgcmV0dXJuIG9wY29kZSAhPSBIYXNoVHJh
aXRzPE9wY29kZT46OmVtcHR5VmFsdWUoKQogICAgICAgICAmJiAhSGFzaFRyYWl0czxPcGNvZGU+
Ojppc0RlbGV0ZWRWYWx1ZShvcGNvZGUpCiAgICAgICAgICYmIG1fb3Bjb2RlSURUYWJsZS5jb250
YWlucyhvcGNvZGUpOwpAQCAtNzI2LDExICs3NTMsMTEgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50
ZXJwcmV0ZXI6OnVud2luZENhbAogICAgIC8vIGhhdmUgdG8gc3VidHJhY3QgMS4KICNpZiBFTkFC
TEUoSklUKSAmJiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgaWYgKGNhbGxlckZyYW1lLT5nbG9i
YWxEYXRhKCkuY2FuVXNlSklUKCkpCi0gICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2Nr
LT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgICAgICBieXRlY29k
ZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFt
ZS0+cmV0dXJuUEMoKSk7CiAgICAgZWxzZQogICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVC
bG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAxOwogI2VsaWYg
RU5BQkxFKEpJVCkKLSAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZz
ZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9j
ay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAj
ZWxzZQogICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxs
RnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZW5kaWYKQEAgLTUxNzAsMTAgKzUxOTcsMTAgQEAg
dm9pZCBJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKENhbAogICAgICAgICBieXRlY29k
ZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1
cm5WUEMoKSk7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBlbHNlCi0gICAgICAgIGJ5dGVjb2RlT2Zm
c2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBD
KCkpOworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVP
ZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYKICNlbHNl
Ci0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNh
bGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwog
I2VuZGlmCiAgICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAgc291cmNlSUQgPSBjYWxsZXJD
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDEw
NTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAj
aW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiTExJ
bnREYXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgi
CiAKQEAgLTQ1LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25F
eGVjdXRhYmxlOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1F
eGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2Rl
OwpAQCAtOTAsMTkgKzkyLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSW50ZXJw
cmV0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgZnJpZW5k
IGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7CisgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBK
SVQ7CiAgICAgcHVibGljOgogICAgICAgICBJbnRlcnByZXRlcigpOworICAgICAgICB+SW50ZXJw
cmV0ZXIoKTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGNhblVzZUpJ
VCk7CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZShMTEludDo6RGF0YSosIGJvb2wgY2FuVXNlSklU
KTsKIAogICAgICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSgpIHsgcmV0dXJuIG1fcmVn
aXN0ZXJGaWxlOyB9CiAgICAgICAgIAogICAgICAgICBPcGNvZGUgZ2V0T3Bjb2RlKE9wY29kZUlE
IGlkKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7Ci0jaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dP
VE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgICAgIHJldHVybiBtX29w
Y29kZVRhYmxlW2lkXTsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4gaWQ7CkBAIC0xMTIsNyAr
MTE2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChP
cGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0aWFsaXpl
ZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExM
SU5UKQorICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOworICAgICAgICAgICAg
cmV0dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKKyNlbGlmIEVOQUJMRShDT01QVVRF
RF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkp
OwogICAgICAgICAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKTsKQEAg
LTEyMiw2ICsxMjksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gb3Bj
b2RlOwogI2VuZGlmCiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgZW5hYmxlZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2VuYWJsZWQ7CisgICAgICAgIH0KIAog
ICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKQEAgLTE4OSw3ICsyMDEsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlIG1fcmVnaXN0ZXJGaWxlOwogICAg
ICAgICAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgICAgIE9wY29kZSogbV9vcGNvZGVUYWJsZTsgLy8gTWFwcyBPcGNvZGVJRCA9
PiBPcGNvZGUgZm9yIGNvbXBpbGluZworICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+
IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGls
aW5nCisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgT3Bj
b2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2RlSURzXTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNv
ZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bj
b2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZp
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVn
aXN0ZXJGaWxlLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwogICAgIGNs
YXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAg
ICAgY2xhc3MgUmVnaXN0ZXJGaWxlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVn
aXN0ZXJGaWxlKTsKQEAgLTgxLDYgKzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0K
IAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CisgICAgICAgIAogICAgICAgICBib29sIGdyb3dTbG93Q2FzZShSZWdpc3RlciopOwogICAg
ICAgICB2b2lkIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwogICAgICAgICB2b2lkIGFkZFRvQ29t
bWl0dGVkQnl0ZUNvdW50KGxvbmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9I
b3N0Q2FsbFJldHVyblZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5o
IgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSW5saW5lQVNNLmgiCisjaW5j
bHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1ZhbHVlSW5saW5lTWV0aG9kcy5oIgorI2lu
Y2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2V4dGVybiAiQyIgRW5j
b2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSgpOworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZB
TFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUq
KTsKKworI2lmIENQVShYODZfNjQpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCisgICAgIm1vdiAl
cjEzLCAlcmRpXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0
Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShYODYpCith
c20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxu
IgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJt
b3YgLTQwKCVlZGkpLCAlZWRpXG4iCisgICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCisgICAgImpt
cCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4
ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorYXNtICgKKyIudGV4dCIg
IlxuIgorIi5hbGlnbiAyIiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAi
XG4iCisiLnRodW1iIiAiXG4iCisiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIjoiICJcbiIKKyAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCisgICAgImNweSBy
MCwgcjUiICJcbiIKKyAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbmRpZgorCitleHRlcm4gIkMi
IEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxs
UmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVyblZhbHVlKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisjZGVmaW5lIEhvc3RDYWxsUmV0dXJuVmFs
dWVfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ0FMTElOR19DT05WRU5U
SU9OX0lTX1NURENBTEwKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gQ0RF
Q0wKKyNlbHNlCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OCisjZW5kaWYK
KworbmFtZXNwYWNlIEpTQyB7CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9S
RVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKK30KKworI2VuZGlm
IC8vIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQu
Y3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dpbGxfY2FsbCkK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHVzaF9zY29wZSkKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAg
ICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lu
ZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKQEAgLTQ4Nyw2ICs0ODksOCBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfcG9zdF9pbmMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVf
ZGVjKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2luYykKKyAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0
X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkKICAgICAg
ICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsKQpAQCAtNTI2LDYgKzUzMCwx
MCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiBKSVRDb2RlIEpJVDo6
cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2spCiB7CisjaWYg
RU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIkNvbXBpbGluZyBKSVQgY29kZSFc
biIpOworI2VuZGlmCisgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogICAgIG1fY2Fu
QmVPcHRpbWl6ZWQgPSBtX2NvZGVCbG9jay0+Y2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpA
QCAtNjkwLDggKzY5OCwxMiBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciog
ZnVuCiAgICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gbV9jb2RlQmxvY2stPnN0cnVj
dHVyZVN0dWJJbmZvKG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mb1tpXS5wcm9wZXJ0eUFjY2Vz
c0luZGV4KS5jYWxsUmV0dXJuTG9jYXRpb247CiAgICAgfQogCi0jaWYgRU5BQkxFKERGR19KSVQp
Ci0gICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5B
QkxFKExMSU5UKQorICAgIGlmIChtX2NhbkJlT3B0aW1pemVkCisjaWYgRU5BQkxFKExMSU5UKQor
ICAgICAgICB8fCB0cnVlCisjZW5kaWYKKyAgICAgICAgKSB7CiAgICAgICAgIENvbXBhY3RKSVRD
b2RlTWFwOjpFbmNvZGVyIGppdENvZGVNYXBFbmNvZGVyOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBtX2xhYmVscy5zaXplKCk7ICsr
Ynl0ZWNvZGVPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChtX2xhYmVsc1tieXRlY29kZU9mZnNl
dF0uaXNTZXQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCShyZXZpc2lv
biAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSklUQ29k
ZSgpIHsgfQogI2VuZGlmCiAgICAgcHVibGljOgotICAgICAgICBlbnVtIEpJVFR5cGUgeyBIb3N0
Q2FsbFRodW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CisgICAgICAgIGVudW0gSklUVHlwZSB7
IE5vbmUsIEhvc3RDYWxsVGh1bmssIEludGVycHJldGVyVGh1bmssIEJhc2VsaW5lSklULCBERkdK
SVQgfTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKSVRUeXBlIGJvdHRvbVRpZXJKSVQoKQog
ICAgICAgICB7CkBAIC02Niw4ICs2NiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHJldHVybiBERkdKSVQ7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBib29s
IGlzT3B0aW1pemluZ0pJVChKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBqaXRUeXBlID09IERGR0pJVDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
c3RhdGljIGJvb2wgaXNCYXNlbGluZUNvZGUoSklUVHlwZSBqaXRUeXBlKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBJbnRlcnByZXRlclRodW5rIHx8IGppdFR5cGUg
PT0gQmFzZWxpbmVKSVQ7CisgICAgICAgIH0KKyAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAg
ICAgICAgSklUQ29kZSgpCisgICAgICAgICAgICA6IG1faml0VHlwZShOb25lKQogICAgICAgICB7
CiAgICAgICAgIH0KIApAQCAtNzUsNiArODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIDogbV9yZWYocmVmKQogICAgICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKICAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKGppdFR5cGUgIT0gTm9uZSk7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3IgISgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE1ICszMywy
MSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVy
LmgiCiAjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KIGlubGlu
ZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
T3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENv
ZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdl
dEpJVFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFnbG9iYWxE
YXRhLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBjb2RlQmxv
Y2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBpbGVkID0g
ZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAgICAgICBkZmdD
b21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZShnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGpp
dENvZGUpOwpAQCAtNTUsMTAgKzYxLDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUoSlNHbAogICAgICAgICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmds
b2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BDT0RFX1NB
TVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgp
KQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5
KCk7Ci0jZW5kaWYKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9y
dHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cigpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY2LDkgKzY5LDE0IEBA
IGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2wKIAogaW5saW5lIGJvb2wg
aml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJv
bFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAgICBp
ZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgCiAgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAg
ICAKICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklU
Q29kZTo6REZHSklUKQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZUZ1bmN0
aW9uKGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0
eUNoZWNrKTsKQEAgLTgzLDExICs5MSw3IEBAIGlubGluZSBib29sIGppdENvbXBpbGVGdW5jdGlv
bklmQXBwcm9wcmkKICAgICAgICAgfQogICAgICAgICBqaXRDb2RlID0gSklUOjpjb21waWxlKCZn
bG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksICZqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAg
IH0KLSNpZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLSAgICBpZiAoIUJ5dGVjb2RlR2VuZXJh
dG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKLSAgICAgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRl
Y29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwotI2VuZGlmCi0gICAgCisgICAgY29kZUJsb2Nr
LT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAgIGNvZGVCbG9jay0+
c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAgIAogICAgIHJl
dHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlv
bnMuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIEV4Y2VwdGlv
bkhhbmRsZXIgZ2VuZXJpY1Rocm93KEpTR2xvYmFsRGEKIAogRXhjZXB0aW9uSGFuZGxlciBqaXRU
aHJvdyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1Zh
bHVlIGV4Y2VwdGlvblZhbHVlLCBSZXR1cm5BZGRyZXNzUHRyIGZhdWx0TG9jYXRpb24pCiB7Ci0g
ICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGV4Y2VwdGlvblZh
bHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChmYXVsdExvY2F0aW9u
KSk7CisgICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGV4Y2Vw
dGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChjYWxsRnJh
bWUsIGZhdWx0TG9jYXRpb24pKTsKIH0KIAogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEzLDcgKzE5MTMsNyBAQCBE
RUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAgdW5zaWduZWQgYnl0
ZWNvZGVJbmRleCA9IHN0YWNrRnJhbWUuYXJnc1swXS5pbnQzMigpOwogCiAjaWYgRU5BQkxFKEpJ
VF9WRVJCT1NFX09TUikKLSAgICBwcmludGYoIkVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdp
dGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwg
b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNv
dW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxv
Y2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBwcmludGYoIiVwOiBFbnRlcmVk
IG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBj
b2RlQmxvY2ssIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9w
dGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291
bnRlcigpKTsKICNlbmRpZgogCiAgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFj
ZW1lbnQoKSkgewpAQCAtMjE2OCw0NSArMjE2OCwxMyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2
b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIENhbGxG
cmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXJGaWxlKiBy
ZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKLXsKLSAgICBKU0Z1bmN0
aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpOwotICAgIEFTU0VS
VCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9j
ayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsK
LSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNl
IGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkg
dGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhjYWxsRnJhbWUtPnJlZ2lz
dGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1f
bnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBBU1NFUlQoYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7
Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3Vt
ZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgotICAg
IHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVnaXN0ZXIqIHNyYyA9IGNhbGxGcmFtZS0+cmVnaXN0
ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBkZWx0
YTsKLQotICAgIGludCBpOwotICAgIGludCBlbmQgPSAtQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1p
KQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07Ci0KLSAgICBlbmQgLT0gZGVsdGE7Ci0gICAgZm9y
ICggOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOwotCi0g
ICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShkc3QpOwotICAg
IEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1lIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOwotICAg
IHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBv
cF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJh
bWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsK
IAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUs
IHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CisgICAgQ2FsbEZyYW1lKiBu
ZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBz
dGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOwogICAgIGlmICghbmV3Q2FsbEZy
YW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFj
a0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZs
b3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKIApAQCAtMjIxOSw3ICsyMTg3LDcg
QEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAogCiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSog
bmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0
ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9
IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVn
aXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBpZiAoIW5ld0NhbGxGcmFtZSkKICAg
ICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwg
Y2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3Io
Y2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCAr
MjYsMTAgQEAKICNpZm5kZWYgSlNJbnRlcmZhY2VKSVRfaAogI2RlZmluZSBKU0ludGVyZmFjZUpJ
VF9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiSklUQ29k
ZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNs
dWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJS
ZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENv
bW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENv
bW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENvbW1vbl9oCisjZGVm
aW5lIExMSW50Q29tbW9uX2gKKworI2RlZmluZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lORyAwCisj
ZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFDSU5HIDAKKworI2VuZGlmIC8vIExMSW50Q29tbW9uX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnREYXRh
LmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2lu
Y2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK0RhdGE6OkRhdGEoKQorICAgIDogbV9l
eGNlcHRpb25JbnN0cnVjdGlvbnMobmV3IEluc3RydWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFd
KQorICAgICwgbV9vcGNvZGVNYXAobmV3IE9wY29kZVtudW1PcGNvZGVJRHNdKQoreworICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAgICAgICBtX2V4
Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lKTsKKyNkZWZpbmUgT1BDT0RFX0VOVFJZ
KG9wY29kZSwgbGVuZ3RoKSBtX29wY29kZU1hcFtvcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQq
PigmbGxpbnRfIyNvcGNvZGUpOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkp
OworI3VuZGVmIE9QQ09ERV9FTlRSWQorfQorCitEYXRhOjp+RGF0YSgpCit7CisgICAgZGVsZXRl
W10gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgZGVsZXRlW10gbV9vcGNvZGVNYXA7Cit9
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5U
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIExMSW50RGF0YV9oCisjZGVmaW5lIExMSW50RGF0YV9oCisKKyNp
bmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNl
IEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKworI2lm
IEVOQUJMRShMTElOVCkKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIERhdGEoKTsKKyAgICB+
RGF0YSgpOworICAgIAorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIH0KKyAg
ICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcGNv
ZGVNYXA7CisgICAgfQorcHJpdmF0ZToKKyAgICBJbnN0cnVjdGlvbiogbV9leGNlcHRpb25JbnN0
cnVjdGlvbnM7CisgICAgT3Bjb2RlKiBtX29wY29kZU1hcDsKK307CisjZWxzZSAvLyBFTkFCTEUo
TExJTlQpCisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBw
dXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJu
IgorI2VuZGlmCisKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIEluc3RydWN0aW9uKiBleGNl
cHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgp
CisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgfQorfTsKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHBvcAorI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnREYXRhX2gKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJ
bnRFbnRyeXBvaW50cy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSklUQ29k
ZS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgi
CisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpJVENvZGUmIGppdENv
ZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjaykKK3sKKyAgICBpZiAoIWdsb2Jh
bERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsK
KyAgICAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSkp
KTsKKyAgICAgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChraW5kID09IENv
ZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9u
KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVy
Q29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X2FyaXR5X2NoZWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKGtp
bmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0
YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0
Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25z
dHJ1Y3QpOworICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5j
dGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rKTsKKyAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9u
Rm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7Cit9CisKK3ZvaWQg
Z2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRD
b2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRD
b2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRl
U2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF9ldmFsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAg
ICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZXZhbEVudHJ5
VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKK30KKwordm9pZCBn
ZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGpp
dENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGpp
dENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihwcm9n
cmFtRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5
cG9pbnRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVudHJ5cG9pbnRzX2gK
KyNkZWZpbmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
KworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV2YWxDb2RlQmxvY2s7CitjbGFzcyBKSVRD
b2RlOworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOwor
Y2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOworY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKKwor
bmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxE
YXRhJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgSklUQ29kZSYsIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciYgYXJpdHlDaGVjayk7Cit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYs
IEpJVENvZGUmKTsKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklU
Q29kZSYpOworCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgRXZhbENvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0RXZhbEVu
dHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK2lubGluZSB2b2lkIGdldEVudHJ5
cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9ncmFtQ29kZUJsb2NrKiwgSklUQ29k
ZSYgaml0Q29kZSkKK3sKKyAgICBnZXRQcm9ncmFtRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRD
b2RlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFC
TEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RXhj
ZXB0aW9ucy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgi
CisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNs
dWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRl
ICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJ
bnQgeworCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNp
ZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVz
LlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAg
Z2VuZXJpY1Rocm93KAorICAgICAgICBnbG9iYWxEYXRhLCBleGVjLT5jYWxsZXJGcmFtZSgpLCBn
bG9iYWxEYXRhLT5leGNlcHRpb24sCisgICAgICAgIGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVC
bG9jaygpLT5ieXRlY29kZU9mZnNldChleGVjLT5jYWxsZXJGcmFtZSgpLCBleGVjLT5yZXR1cm5Q
QygpKSk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9u
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmxsaW50
RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRv
VGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJf
VFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93
KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAg
IGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBj
IC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAg
IHJldHVybiBnbG9iYWxEYXRhLT5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9
CisKK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQor
eworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7Cisj
aWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAl
cyAoY2FsbFRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkp
OworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEt
PmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4o
KSk7CisgICAgCisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2R1
cmluZ19jYWxsX3RyYW1wb2xpbmUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQK
KworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5j
bHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisj
aWYgRU5BQkxFKExMSU5UKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOwor
c3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisvLyBUaHJvdyB0aGUg
Y3VycmVudGx5IGFjdGl2ZSBleGNlcHRpb24gaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNhbGxlcidz
IGNhbGwgZnJhbWUuCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqKTsK
KworLy8gVGVsbHMgeW91IHdoZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0dXJuLXRv
LXRocm93LCBhZnRlciB5b3UndmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBpbmZvcm1hdGlvbiBu
ZWVkZWQgdG8gdGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93
Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0aGUgY3VycmVudCBQ
QyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlvdSBhIFBD
CisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdo
ZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFuICJp
bnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBleGNlcHRp
b24gaGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhjZXB0aW9u
IGhhbmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhhdCBQQyB3
aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVhZCBleGNl
cHRpb24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5Cisv
LyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiwg
SW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8gYSBj
YWxsIHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQp
CisKKyNlbmRpZiAvLyBMTEludEV4Y2VwdGlvbnNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEhlbHBlcnMuaCIKKwor
I2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkNh
bGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkhvc3RD
YWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJ
VC5oIgorI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgor
I2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlv
bnMuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNT
dGF0aWNTY29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNW
YWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRp
b25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wZXJh
dGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKKyNkZWZpbmUg
TExJTlRfT1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRSKHBjW2luZGV4XS51Lm9wZXJhbmQpKQor
I2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5vcGVyYW5kKSkK
KworI2RlZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsgICAgICAgXAor
ICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgICAgIHZvaWQqIGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgICAgIHZvaWQqIGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
fSBwYWlyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50
NjRfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IF9fcnRfdTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5h
ID0gZmlyc3Q7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5iID0g
c2Vjb25kOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19ydF91Lmk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5l
IExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykKKworI2RlZmluZSBM
TElOVF9USFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fdF9nbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0
YSgpOyAgICAgICAgXAorICAgICAgICBfX3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0
aW9uVG9UaHJvdyk7ICAgICAgICAgICAgXAorICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhl
YywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRf
SU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0g
d2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpIGRvIHsgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmdsb2JhbERhdGEo
KS5leGNlcHRpb24pKSB7ICAgXAorICAgICAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMs
IHBjKTsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5l
IExMSU5UX0VORCgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9J
TVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNk
ZWZpbmUgTExJTlRfQlJBTkNIKG9wY29kZSwgY29uZGl0aW9uKSBkbyB7ICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgYm9vbCBfX2JfY29uZGl0aW9uID0gKGNvbmRpdGlvbik7ICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9fYl9jb25kaXRp
b24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
IHBjICs9IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsgICAgICAgIFwK
KyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bjb2RlKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkK
KworI2RlZmluZSBMTElOVF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAgICAgXAorICAg
ICAgICBKU1ZhbHVlIF9fcl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAorICAgICAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9P
UCgxKSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1Q
TCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVm
aW5lIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcGNvZGUsIHZhbHVlKSBkbyB7ICAgICAgICAgICAg
ICAgXAorICAgICAgICBKU1ZhbHVlIF9fcnBfcmV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0gX19ycF9yZXR1
cm5WYWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwY1tPUENPREVfTEVO
R1RIKG9wY29kZSkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IFwKKyAgICAgICAgICAg
IEpTVmFsdWU6OmVuY29kZShfX3JwX3JldHVyblZhbHVlKTsgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfRU5EX0lN
UEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RXTygoY2FsbFRhcmdldCksIChleGVj
KSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBleGNlcHRpb25Ub1Rocm93
KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3RfZXhlYyA9IChl
eGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVj
dGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fY3RfZ2xvYmFsRGF0YSA9IChfX2N0X2V4ZWMpLT5n
bG9iYWxEYXRhKCk7ICAgICAgXAorICAgICAgICBfX2N0X2dsb2JhbERhdGEuZXhjZXB0aW9uID0g
KGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxM
X0VORF9JTVBMKF9fY3RfZXhlYywgY2FsbFRvVGhyb3coX19jdF9leGVjLCBfX2N0X3BjKSk7IFwK
KyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElP
TihleGVjLCBwYykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3Rh
dGUqIF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBJbnN0cnVjdGlvbiogX19jY2VfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoX19jY2VfZXhlYy0+Z2xv
YmFsRGF0YSgpLmV4Y2VwdGlvbikpICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTExJTlRf
Q0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2NjZV9leGVjLCBfX2NjZV9w
YykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9SRVRVUk4o
ZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
RXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMgPSAocGMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9pZCogX19jcl9jYWxsVGFyZ2V0
ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJ
TlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19jcl9leGVjLT5jYWxsZXJGcmFtZSgpLCBfX2NyX3Bj
KTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NyX2V4ZWMsIF9fY3JfY2FsbFRh
cmdldCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworZXh0ZXJuICJD
IiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJ
bnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIHByaW50
ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkXG4i
LAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJvbVdoZXJl
LAorICAgICAgICAgICBvcGVyYW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQp
OworICAgIExMSU5UX0VORCgpOworfQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxp
bnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9t
V2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKG9w
ZXJhbmQpLmpzVmFsdWUoKTsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAg
ICAgICB1aW50MzJfdCB0YWc7CisgICAgICAgICAgICB1aW50MzJfdCBwYXlsb2FkOworICAgICAg
ICB9IGJpdHM7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlIGFzVmFsdWU7CisgICAgfSB1OworICAg
IHUuYXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgcHJpbnRmKCIlcCAvICVw
OiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWQ6ICUwOHg6JTA4eCIs
CisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAg
ICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUs
CisgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCwK
KyAgICAgICAgICAgdS5iaXRzLnRhZywKKyAgICAgICAgICAgdS5iaXRzLnBheWxvYWQpOworI2lm
bmRlZiBOREVCVUcKKyAgICBwcmludGYoIjogJXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyNl
bmRpZgorICAgIHByaW50ZigiXG4iKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiBwcm9s
b2d1ZS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
Kworc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgY2hhciogY29tbWVudCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEpT
RnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Io
a2luZCk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0
YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZVJlZ2lz
dGVycyA9ICV1LlxuIiwKKyAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBjb21tZW50LCBjYWxs
ZWUsIGV4ZWN1dGFibGUsCisgICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQor
eworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBwcm9sb2d1ZSIsIENvZGVG
b3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2Vf
cHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJv
bG9ndWUoZXhlYywgImNvbnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JDb25zdHJ1Y3QpOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zv
cl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBhcml0eSBj
aGVjayIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rp
b25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IGFyaXR5IGNoZWNrIiwgQ29kZUZvckNvbnN0cnVj
dCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKQorewor
ICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgIiwKKyAgICAgICAgICAgZXhl
Yy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0
PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
KSk7CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50ZigiJXMsICIsIG9wY29kZU5hbWVzW2V4ZWMt
Pmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpXSk7
CisjZWxzZQorICAgIHByaW50Zigib3AjJXUsICIsIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpKTsKKyNlbmRpZgorICAgIHByaW50Zigi
c2NvcGUgJXBcbiIsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2UpCit7CisgICAgcHJpbnRmKCIlcCAvICVw
OiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJldHVybiBQQyBpcyAlcFxu
IiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAg
ICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGV4ZWMtPnJl
dHVyblBDKCkudmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2lubGluZSBib29sIHNo
b3VsZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gWW91IGNhbiBtb2RpZnkgdGhpcyB0
byB0dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0aGUgd29ybGQuCisgICAgcmV0
dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKTsKK30KKworZW51bSBFbnRyeUtpbmQg
eyBQcm9sb2d1ZSwgQXJpdHlDaGVjayB9Oworc3RhdGljIEhlbHBlclJldHVyblR5cGUgZW50cnlP
U1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2Nr
LCBjb25zdCBjaGFyICpuYW1lLCBFbnRyeUtpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUoSklUX1ZF
UkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgJXMgd2l0aCBleGVjdXRlQ291bnRl
ciA9ICVkXG4iLCBjb2RlQmxvY2ssIG5hbWUsIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRl
cigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAg
IGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9U
V08oMCwgZXhlYyk7CisgICAgfQorICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMt
Pmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICBw
cmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICB9
CisgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgaWYgKGtpbmQgPT0gUHJvbG9ndWUpCisg
ICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7CisgICAgQVNTRVJUKGtpbmQgPT0gQXJpdHlDaGVj
ayk7CisgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGVXaXRoQXJpdHlD
aGVjaygpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChlbnRyeV9vc3IpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCBleGVjLT5jb2Rl
QmxvY2soKSwgImVudHJ5X29zciIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
ZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVj
LCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJh
dGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxs
IiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0
aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9y
KENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QiLCBQ
cm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3Jf
Y2FsbF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVu
Y3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVG
b3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2si
LCBBcml0eUNoZWNrKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywg
cGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRl
ZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOworfQorCitMTElOVF9IRUxQRVJfREVD
TChsb29wX29zcikKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9j
aygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDog
RW50ZXJlZCBsb29wX29zciB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywg
Y29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisgICAgaWYg
KCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNv
b24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgCisg
ICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lm
IEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50ZigiICAgIENvZGUgd2FzIGFs
cmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxvY2stPmppdFNv
b24oKTsKKyAgICAKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOworICAgIAorICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZz
ZXQ+IG1hcDsKKyAgICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKG1hcCk7CisgICAg
Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2VhcmNoPEJ5dGVjb2Rl
QW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQsIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldDo6Z2V0
Qnl0ZWNvZGVJbmRleD4obWFwLmJlZ2luKCksIG1hcC5zaXplKCksIHBjIC0gY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICBBU1NFUlQobWFwcGluZyk7CisgICAgQVNTRVJU
KG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocGMgLSBj
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyAgICAKKyAgICB2b2lkKiBqdW1w
VGFyZ2V0ID0gY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNl
dChtYXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQoanVtcFRhcmdldCk7
CisgICAgCisgICAgTExJTlRfUkVUVVJOX1RXTyhqdW1wVGFyZ2V0LCBleGVjKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0wocmVwbGFjZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAg
cHJpbnRmKCIlcDogRW50ZXJlZCByZXBsYWNlIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwg
Y29kZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAg
ICAKKyAgICBpZiAoc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGlmICghY29kZUJsb2NrLT5q
aXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0Vf
T1NSKQorICAgICAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5c
biIpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7Cisg
ICAgfSBlbHNlCisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2sp
Cit7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIkNoZWNraW5nIHN0YWNr
IGhlaWdodCB3aXRoIGV4ZWMgPSAlcC5cbiIsIGV4ZWMpOworICAgIHByaW50ZigiQ29kZUJsb2Nr
ID0gJXAuXG4iLCBleGVjLT5jb2RlQmxvY2soKSk7CisgICAgcHJpbnRmKCJOdW0gY2FsbGVlIHJl
Z2lzdGVycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJz
KTsKKyAgICBwcmludGYoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9u
dW1WYXJzKTsKKyAgICBwcmludGYoIkN1cnJlbnQgZW5kIGlzIGF0ICVwLlxuIiwgZXhlYy0+Z2xv
YmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5lbmQoKSk7CisjZW5kaWYKKyAg
ICBBU1NFUlQoJmV4ZWMtPnJlZ2lzdGVycygpW2V4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxl
ZVJlZ2lzdGVyc10gPiBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmls
ZSgpLmVuZCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnBy
ZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJs
b2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5j
YWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5D
YWxsZXIoZXhlYyk7CisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlv
bihleGVjKTsKKyAgICB9CisgICAgTExJTlRfRU5EX0lNUEwoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMg
PSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEo
KS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDYWxsKTsKKyAgICBpZiAoIW5l
d0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4
ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhl
Yyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAgTExJ
TlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4o
MSkpLCBleGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAg
IEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVj
LCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZv
ckNvbnN0cnVjdCk7CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5j
YWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5D
YWxsZXIoZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQq
PihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JF
VFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVh
dGVfYWN0aXZhdGlvbikKK3sKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50Zigi
Q3JlYXRpbmcgYW4gYWN0aXZhdGlvbiwgZXhlYyA9ICVwIVxuIiwgZXhlYyk7CisjZW5kaWYKKyAg
ICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBKU0FjdGl2YXRpb246OmNyZWF0ZShleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMsIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWMt
PmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSkpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hh
aW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2YXRpb24pKTsKKyAgICBMTElOVF9SRVRV
Uk4oSlNWYWx1ZShhY3RpdmF0aW9uKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
cmVhdGVfYXJndW1lbnRzKQoreworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1
bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpKTsKKyAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFuZCkgPSBh
cmd1bWVudHM7CisgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0
ZXIocGNbMV0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAgICBKU0Z1bmN0aW9u
KiBjb25zdHJ1Y3RvciA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIAorI2lmICFB
U1NFUlRfRElTQUJMRUQKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQVNT
RVJUKGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVj
dG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlmCisgICAgCisg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgSlNWYWx1ZSBwcm90byA9IExMSU5UX09QKDIp
LmpzVmFsdWUoKTsKKyAgICBpZiAocHJvdG8uaXNPYmplY3QoKSkKKyAgICAgICAgc3RydWN0dXJl
ID0gYXNPYmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkpOworICAg
IGVsc2UKKyAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCktPmdsb2JhbE9i
amVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oY29u
c3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpCit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QKDEp
LmpzVmFsdWUoKTsKKyAgICBBU1NFUlQodjEuaXNQcmltaXRpdmUoKSk7CisgICAgTExJTlRfUkVU
VVJOKHYxLnRvVGhpc09iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uZXdfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChl
eGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpCit7CisgICAg
TExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4o
JkxMSU5UX09QKDIpKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RB
cnJheShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIocGNbMl0udS5vcGVy
YW5kKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXdfcmVnZXhwKQoreworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29kZUJsb2NrKCktPnJl
Z2V4cChwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCisgICAg
ICAgIExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIGZsYWcgc3Vw
cGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9SRVRVUk4oUmVnRXhw
T2JqZWN0OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJl
Z0V4cCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KQoreworICAgIExMSU5U
X1JFVFVSTihqc0Jvb2xlYW4oIUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVj
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9uZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6ZXF1YWwo
ZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbigh
SlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVz
cykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVlPihleGVjLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVh
dGVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPGZhbHNlPihleGVjLCBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHJlX2luYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNW
YWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICsgMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHJlX2RlYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNW
YWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcG9zdF9pbmMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUo
KS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCArIDEp
OworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Bvc3RfZGVjKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgy
KS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihy
ZXN1bHQgLSAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcikKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoLUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpCit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KTsKKyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVHJ5aW5nIHRv
IGFkZCAlcyIsIHYxLmRlc2NyaXB0aW9uKCkpOworICAgIHByaW50ZigiIHRvICVzLlxuIiwgdjIu
ZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNTdHJpbmcoKSAmJiAh
djIuaXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsIGFzU3Ry
aW5nKHYxKSwgdjIudG9TdHJpbmcoZXhlYykpKTsKKyAgICAKKyAgICBpZiAodjEuaXNOdW1iZXIo
KSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIodjEuYXNO
dW1iZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNBZGRT
bG93Q2FzZShleGVjLCB2MSwgdjIpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211
bCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYykgKiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKQoreworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAtIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9kaXYpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9O
dW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCkKK3sKKyAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIoZm1vZChMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051
bWJlcihleGVjKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPDwgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3JzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA+PiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50
b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdXJzaGlmdCkK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9V
SW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCkKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSAmIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2JpdG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIHwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9J
bnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKQorewor
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMy
KGV4ZWMpIF4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KQoreworICAgIExMSU5UX1JFVFVSTihqc051
bWJlcih+TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQoreworICAgIEpTVmFsdWUg
YmFzZVZhbCA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworI2lmbmRlZiBOREVCVUcKKyAgICBU
eXBlSW5mbyB0eXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VSVCghYmFzZVZhbC5p
c09iamVjdCgpCisgICAgICAgICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVjdChiYXNlVmFsKS0+
c3RydWN0dXJlKCktPnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKTsKKyNlbmRp
ZgorICAgIExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4ZWMsICJpbnN0YW5j
ZW9mIiwgYmFzZVZhbCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2Vv
ZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbnN0
YW5jZU9mU2xvdyhleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoNCkuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfdHlwZW9mKQoreworICAgIExMSU5UX1JFVFVSTihqc1R5cGVTdHJpbmdGb3JW
YWx1ZShleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKQoreworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4odi5pc0NlbGwoKSA/IHYu
YXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQo
KSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNf
Ym9vbGVhbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLmlzQm9vbGVhbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19u
dW1iZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKS5pc051bWJlcigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19zdHJp
bmcpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihpc0pTU3RyaW5nKExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0
KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc09iamVjdFR5cGUoTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19mdW5j
dGlvbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUoTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
bikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihl
eGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKQoreworICAgIExMSU5UX1JF
VFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlLCBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZShleGVj
LCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApCit7CisgICAgTExJTlRfUkVU
VVJOX1BST0ZJTEVEKAorICAgICAgICBvcF9yZXNvbHZlX3NraXAsCisgICAgICAgIENvbW1vblNs
b3dQYXRoczo6b3BSZXNvbHZlU2tpcCgKKyAgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgICBl
eGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAgICAgICAg
ICAgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlIHJlc29sdmVHbG9iYWwo
RXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0
LT5pc0dsb2JhbE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkgPSBwY1syXS51Lm9wZXJhbmQ7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVyZS5nZXQoKTsKKyAg
ICAKKyAgICBBU1NFUlRfVU5VU0VEKHN0cnVjdHVyZSwgc3RydWN0dXJlICE9IGdsb2JhbE9iamVj
dC0+c3RydWN0dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2Nr
LT5pZGVudGlmaWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmpl
Y3QpOworICAgIAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBp
ZGVudCwgc2xvdCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGV4
ZWMsIGlkZW50KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmICFnbG9i
YWxPYmplY3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAg
ICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICBw
Y1szXS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgp
KTsKKyAgICAgICAgICAgIHBjWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgZXhlYy0+
Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhl
YywgaWRlbnQpOworICAgIHJldHVybiBKU1ZhbHVlKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9yZXNvbHZlX2dsb2JhbCkKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3Bf
cmVzb2x2ZV9nbG9iYWwsIHJlc29sdmVHbG9iYWwoZXhlYywgcGMpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfUkVU
VVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIHJlc29sdmVHbG9iYWwoZXhl
YywgcGMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWMsIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMt
PmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSkKK3sKKyAgICBJZGVudGlmaWVyJiBpZGVu
dCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAg
aWYgKHBjWzNdLnUub3BlcmFuZCkgeworICAgICAgICBKU1ZhbHVlIGJhc2UgPSBKU0M6OnJlc29s
dmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIHRydWUpOworICAgICAgICBp
ZiAoIWJhc2UpCisgICAgICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRH
bG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgICAgICBMTElOVF9S
RVRVUk4oYmFzZSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9y
ZXNvbHZlX2Jhc2UsIEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hh
aW4oKSwgZmFsc2UpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9w
ZXJ0eV9leGlzdHMpCit7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KExMSU5UX09Q
KDEpLmpzVmFsdWUoKSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKKyAgICBJZGVu
dGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3Bl
cmFuZCk7CisgICAgaWYgKCFvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xv
dCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2ln
bm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKK3sKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aEJhc2UoZXhlYywgZXhlYy0+
Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOwor
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0Owor
ICAgIC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcsIGJ1dCB3ZSBk
b24ndCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCit7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhUaGlzKGV4
ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5U
X09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9
IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5n
LCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4KKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCkKK3sK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50
aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7Cisg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFs
dWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsK
KyAgICBMTElOVF9PUCgxKSA9IHJlc3VsdDsKKworICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkK
KyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCisgICAgICAgICYmIHNsb3Quc2xvdEJhc2Uo
KSA9PSBiYXNlVmFsdWUKKyAgICAgICAgJiYgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQ
cm9wZXJ0eVNsb3Q6OlZhbHVlKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxs
ID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJh
c2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RydWN0dXJlLT5p
c1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBl
SW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpKSB7CisgICAgICAgICAgICBwY1s0XS51
LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcGNbNV0u
dS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICBwY1tPUENPREVfTEVOR1RIKG9wX2dldF9ieV9pZCkgLSAx
XS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50
c19sZW5ndGgpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2so
KTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51
Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMikuanNWYWx1ZSgp
OworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisgICAgTExJTlRfUkVUVVJOKGJh
c2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3B1dF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNv
ZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVy
KHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEp
LmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpKTsKKyAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAgICBhc09iamVjdChiYXNl
VmFsdWUpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCksIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFzZVZhbHVlLnB1dChleGVj
LCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOworICAgIAorICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAg
JiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VD
ZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RydWN0dXJl
LT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50
eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpCisgICAgICAgICAgICAmJiBiYXNl
Q2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc2xv
dC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgeworICAgICAgICAgICAg
ICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3Vz
SUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQg
YmVjYXVzZSBzb21lIG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKKyAgICAgICAgICAgICAgICAgICAg
Ly8gYmVsb3cgbWF5IEdDLgorICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlv
dXNJRCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1
cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBz
aXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3RydWN0dXJlLnNl
dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsKKyAgICAgICAgICAgICAgICAgICAgcGNb
N10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5n
bG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNoYWluKTsKKyAgICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQp
CisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5
X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAg
ICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNh
Y2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZGVsX2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKS50b09iamVjdChleGVjKTsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+
bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgY29kZUJsb2Nr
LT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOworICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkK
KyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVs
ZXRlIHByb3BlcnR5LiIpKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRl
KSk7Cit9CisKK2lubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQoreworICAgIGlmIChMSUtFTFkoYmFzZVZh
bHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBpZiAoSlNW
YWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eShleGVj
LCBhc1N0cmluZyhzdWJzY3JpcHQpLT52YWx1ZShleGVjKSkpCisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKyAgICAKKyAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKKyAg
ICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNK
U1N0cmluZyhiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkp
KQorICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMs
IGkpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBh
c0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkKKyAgICAgICAgICAgIHJl
dHVybiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAg
CisgICAgICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGkpOworICAgIH0KKyAgICAKKyAg
ICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpOworICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5KTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV92YWwpCit7CisgICAgTExJTlRfUkVU
VVJOX1BST0ZJTEVEKG9wX2dldF9ieV92YWwsIGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGFyZ3VtZW50
cyA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykgeworICAgICAg
ICBhcmd1bWVudHMgPSBBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMp
OworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgTExJTlRfT1AoMikg
PSBhcmd1bWVudHM7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOworICAgIH0KKyAgICAKKyAg
ICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgYXJndW1lbnRzLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKQor
eworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCks
IExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHV0X2J5X3ZhbCkKK3sKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9i
YWxEYXRhKCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgp
OworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAg
ICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgeworICAgICAgICB1aW50MzJfdCBp
ID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVl
KSkgeworICAgICAgICAgICAgSlNBcnJheSoganNBcnJheSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsK
KyAgICAgICAgICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkKKyAgICAgICAgICAgICAg
ICBqc0FycmF5LT5zZXRJbmRleChnbG9iYWxEYXRhLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgSlNBcnJheTo6cHV0QnlJbmRleChqc0FycmF5LCBleGVjLCBp
LCB2YWx1ZSk7CisgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpCisgICAgICAgICAgICAmJiBhc0J5dGVBcnJheShi
YXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICAgICAgSlNCeXRlQXJyYXkq
IGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2
YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgo
aSwgdmFsdWUuYXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAgICAg
ICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzTnVtYmVyKCkpOworICAgICAg
ICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGJhc2VWYWx1ZS5wdXQoZXhlYywgaSwgdmFsdWUpOworICAgICAgICBMTElOVF9FTkQoKTsKKyAg
ICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkp
OworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpCit7
CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBK
U09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICAKKyAg
ICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAg
IGJvb2wgY291bGREZWxldGU7CisgICAgCisgICAgdWludDMyX3QgaTsKKyAgICBpZiAoc3Vic2Ny
aXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRo
b2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYmFzZU9iamVjdCwgZXhlYywgaSk7Cisg
ICAgZWxzZSB7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBJZGVu
dGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpOworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgY291bGREZWxl
dGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eSk7CisgICAgfQorICAgIAorICAgIGlmICghY291bGREZWxldGUgJiYg
ZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElOVF9USFJPVyhj
cmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAg
IAorICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCkKK3sKKyAgICBMTElOVF9PUF9DKDEpLmpz
VmFsdWUoKS5wdXQoZXhlYywgcGNbMl0udS5vcGVyYW5kLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRf
Z2V0dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7
CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkp
OworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIo
cGNbMl0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNWYWx1ZSgpLmlzT2Jq
ZWN0KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZUdldHRlcihiYXNlT2Jq
LCBleGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfc2V0dGVyKQor
eworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgSlNP
YmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIElk
ZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5v
cGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOwor
ICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZVNldHRlcihiYXNlT2JqLCBleGVjLCBp
ZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKQoreworICAgIHVu
c2lnbmVkIGNvdW50ID0gcGNbMV0udS5vcGVyYW5kOworICAgIFNjb3BlQ2hhaW5Ob2RlKiB0bXAg
PSBleGVjLT5zY29wZUNoYWluKCk7CisgICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAgIHRtcCA9
IHRtcC0+cG9wKCk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbih0bXApOworICAgIHBjICs9IHBj
WzJdLnUub3BlcmFuZDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2p0cnVlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qdHJ1ZSwgTExJTlRfT1BfQygx
KS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2pmYWxzZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamZhbHNlLCAhTExJTlRfT1BfQygx
KS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2psZXNzKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzcywganNMZXNzPHRydWU+KGV4
ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKQoreworICAgIExMSU5UX0JSQU5D
SChvcF9qbmxlc3MsICFqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXIsIGpzTGVzczxmYWxz
ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpCit7CisgICAgTExJ
TlRfQlJBTkNIKG9wX2puZ3JlYXRlciwgIWpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9qbGVzc2VxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzc2VxLCBq
c0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKQor
eworICAgIExMSU5UX0JSQU5DSChvcF9qbmxlc3NlcSwgIWpzTGVzc0VxPHRydWU+KGV4ZWMsIExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0go
b3BfamdyZWF0ZXJlcSwganNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfam5ncmVhdGVyZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlcmVxLCAh
anNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2lt
bSkKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOwor
ICAgIEFTU0VSVChzY3J1dGluZWUuaXNEb3VibGUoKSk7CisgICAgZG91YmxlIHZhbHVlID0gc2Ny
dXRpbmVlLmFzRG91YmxlKCk7CisgICAgaW50MzJfdCBpbnRWYWx1ZSA9IHN0YXRpY19jYXN0PGlu
dDMyX3Q+KHZhbHVlKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsK
KyAgICBpZiAodmFsdWUgPT0gaW50VmFsdWUpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5pbW1lZGlh
dGVTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShpbnRWYWx1
ZSwgZGVmYXVsdE9mZnNldCk7CisgICAgfSBlbHNlCisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZz
ZXQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0
Y2hfc3RyaW5nKQoreworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYg
KCFzY3J1dGluZWUuaXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAg
ICBlbHNlIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2so
KTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUocGNbMV0u
dS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGluZWUpLT52YWx1ZShleGVj
KS5pbXBsKCksIGRlZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKQoreworICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5
cGUoKSAhPSBGdW5jdGlvbkNvZGUKKyAgICAgICAgICAgfHwgIWNvZGVCbG9jay0+bmVlZHNGdWxs
U2NvcGVDaGFpbigpCisgICAgICAgICAgIHx8IGV4ZWMtPnVuY2hlY2tlZFIoY29kZUJsb2NrLT5h
Y3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lO
RworICAgIHByaW50ZigiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKKyNlbmRpZgorICAgIExMSU5U
X1JFVFVSTihjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1syXS51Lm9wZXJhbmQpLT5tYWtlKGV4
ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bmV3X2Z1bmNfZXhwKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJs
b2NrKCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVu
Y3Rpb25FeHByKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNGdW5jdGlvbiogZnVuYyA9IGZ1bmN0
aW9uLT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgCisgICAgaWYgKCFmdW5j
dGlvbi0+bmFtZSgpLmlzTnVsbCgpKSB7CisgICAgICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIGZ1
bmN0aW9uU2NvcGVPYmplY3QgPSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgZnVu
Y3Rpb24tPm5hbWUoKSwgZnVuYywgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgZnVu
Yy0+c2V0U2NvcGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jLT5zY29wZSgpLT5wdXNoKGZ1bmN0
aW9uU2NvcGVPYmplY3QpKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKGZ1bmMpOwor
fQorCitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4
ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxs
ZXJGcmFtZSgpOworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxE
YXRhKCk7CisKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4o
KSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworCisgICAgaWYgKGtpbmQgPT0g
Q29kZUZvckNhbGwpIHsKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxU
eXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoY2FsbGVlLCBjYWxsRGF0YSk7CisgICAgCisgICAg
ICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZUpTKTsKKyAgICAKKyAgICAgICAgaWYgKGNh
bGxUeXBlID09IENhbGxUeXBlSG9zdCkgeworICAgICAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENh
bGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24o
ZXhlY0NhbGxlZSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBMTElOVF9DQUxMX1JFVFVS
TihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkpOworICAgICAgICB9CisgICAgICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5H
CisgICAgICAgIHByaW50ZigiQ2FsbCBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBj
YWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgICAgICBBU1NFUlQoY2FsbFR5cGUg
PT0gQ2FsbFR5cGVOb25lKTsKKyAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3Jl
YXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CisgICAgfQorCisgICAgQVNTRVJU
KGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgCisgICAgQ29uc3RydWN0RGF0YSBjb25z
dHJ1Y3REYXRhOworICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVj
dERhdGEoY2FsbGVlLCBjb25zdHJ1Y3REYXRhKTsKKyAgICAKKyAgICBBU1NFUlQoY29uc3RydWN0
VHlwZSAhPSBDb25zdHJ1Y3RUeXBlSlMpOworICAgIAorICAgIGlmIChjb25zdHJ1Y3RUeXBlID09
IENvbnN0cnVjdFR5cGVIb3N0KSB7CisgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0dXJu
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhl
Y0NhbGxlZSkpOworICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgICAgICBwcmludGYoIkNvbnN0cnVjdG9y
IGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNjcmlwdGlvbigpKTsK
KyNlbmRpZgorCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZU5vbmUp
OworICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVy
cm9yKGV4ZWMsIGNhbGxlZSkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJuVHlwZSBzZXRVcENh
bGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCwgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlLCBMTEludENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvID0gMCkKK3sKKyAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0g
Z2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKKyAgICBpZiAoIWNhbGxlZUFzRnVuY3Rpb25D
ZWxsKQorICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgcGMsIGNhbGxl
ZUFzVmFsdWUsIGtpbmQpOworICAgIAorICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rp
b24oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4o
Y2FsbGVlLT5zY29wZVVuY2hlY2tlZCgpKTsKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJs
ZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOworICAgIAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBjb2RlUHRyOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKKyAgICBpZiAoZXhlY3V0
YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmdl
bmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICBlbHNlIHsKKyAg
ICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICAgICAgSlNPYmplY3QqIGVy
cm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21waWxlRm9yKGV4ZWNDYWxsZWUsIGNhbGxlZS0+
c2NvcGUoKSwga2luZCk7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIExMSU5UX0NB
TExfVEhST1coZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKSwgcGMsIGVycm9yKTsKKyAgICAgICAg
Y29kZUJsb2NrID0gJmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2lu
ZCk7CisgICAgICAgIEFTU0VSVChjb2RlQmxvY2spOworICAgICAgICBpZiAoZXhlY0NhbGxlZS0+
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCkpKQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhl
Y3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0
ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgfQorICAgIAorICAgIGlm
IChjYWxsTGlua0luZm8pIHsKKyAgICAgICAgaWYgKGNhbGxMaW5rSW5mby0+aXNPbkxpc3QoKSkK
KyAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+cmVtb3ZlKCk7CisgICAgICAgIEV4ZWNTdGF0ZSog
ZXhlY0NhbGxlciA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGNhbGxMaW5r
SW5mby0+Y2FsbGVlLnNldChleGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4ZWNDYWxsZXItPmNv
ZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAgICAgY2FsbExpbmtJ
bmZvLT5sYXN0U2VlbkNhbGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBleGVjQ2Fs
bGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAgICAgIGNh
bGxMaW5rSW5mby0+bWFjaGluZUNvZGVUYXJnZXQgPSBjb2RlUHRyOworICAgICAgICBpZiAoY29k
ZUJsb2NrKQorICAgICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKGNhbGxMaW5r
SW5mbyk7CisgICAgfQorICAgIAorICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBj
LCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJu
VHlwZSBnZW5lcmljQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8g
LSBTZXQgdXAgYSBjYWxsIGZyYW1lLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwg
YW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gSWYgcG9zc2libGUsIGxpbmsg
dGhlIGNhbGwncyBpbmxpbmUgY2FjaGUuCisgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNo
aW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCisgICAgCisg
ICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAg
CisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAg
ICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51
Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxs
ZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVj
KTsKKyAgICAKKyAgICBBU1NFUlQocGNbNF0udS5jYWxsTGlua0luZm8pOworICAgIHJldHVybiBz
ZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIGtpbmQsIGNhbGxlZUFzVmFsdWUsIHBjWzRdLnUuY2Fs
bExpbmtJbmZvKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpCit7CisgICAg
cmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpCit7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4
ZWMsIHBjLCBDb2RlRm9yQ29uc3RydWN0KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2NhbGxfdmFyYXJncykKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVw
IGEgY2FsbCBmcmFtZSB3aGlsZSByZXNwZWN0aW5nIHRoZSB2YXJpYWJsZSBhcmd1bWVudHMuCisg
ICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGlsZSBpdCBpZiBuZWNlc3Nh
cnkuCisgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBj
YWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCisgICAgCisgICAgSlNWYWx1ZSBjYWxsZWVBc1Zh
bHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVj
Q2FsbGVlID0gbG9hZFZhcmFyZ3MoCisgICAgICAgIGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCku
aW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLAorICAgICAgICBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHBjWzRdLnUub3BlcmFuZCk7CisgICAgTExJ
TlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpOworICAgIAorICAgIGV4ZWNDYWxsZWUt
PnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBl
eGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKFJl
Z2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4o
cGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykpOworICAgIAorICAgIHJldHVybiBz
ZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCkKK3sKKyAgICBKU1ZhbHVlIGNh
bGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRl
KiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICBKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+
c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVj
Q2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRS
KFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+
c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldFJl
dHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KCZsbGludF9nZW5lcmljX3JldHVybl9w
b2ludCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKyAgICBleGVjLT51bmNo
ZWNrZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8
aW50MzJfdD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfZXZhbCkpOworICAgIAorICAgIGlm
ICghaXNIb3N0RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQorICAgICAg
ICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNW
YWx1ZSk7CisgICAgCisgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0gZXZhbChl
eGVjQ2FsbGVlKTsKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKK3sKKyAgICBBU1NFUlQoZXhl
Yy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgSlNWYWx1ZSBhY3Rp
dmF0aW9uVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhY3RpdmF0aW9u
VmFsdWUpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2Rp
ZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSkgeworICAg
ICAgICAgICAgaWYgKCFleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAg
ICAgICAgICAgYXNBcmd1bWVudHModiktPnRlYXJPZmYoZXhlYyk7CisgICAgICAgIH0KKyAgICAg
ICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGFz
QWN0aXZhdGlvbihhY3RpdmF0aW9uVmFsdWUpOworICAgIGFjdGl2YXRpb24tPnRlYXJPZmYoZXhl
Yy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1
bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKQor
ICAgICAgICBhc0FyZ3VtZW50cyh2KS0+ZGlkVGVhck9mZkFjdGl2YXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBhY3RpdmF0aW9uKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cykKK3sKKyAgICBBU1NFUlQoZXhlYy0+Y29k
ZUJsb2NrKCktPnVzZXNBcmd1bWVudHMoKSAmJiAhZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVs
bFNjb3BlQ2hhaW4oKSk7CisgICAgYXNBcmd1bWVudHMoZXhlYy0+dW5jaGVja2VkUih1bm1vZGlm
aWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKS0+dGVhck9m
ZihleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3N0cmNhdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNTdHJpbmcoZXhlYywgJkxMSU5UX09QKDIp
LCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3By
aW1pdGl2ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9Q
cmltaXRpdmUoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X3BuYW1l
cykKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKHYu
aXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBwYyArPSBwY1s1XS51Lm9wZXJhbmQ7Cisg
ICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAKKyAgICBKU09iamVjdCogbyA9IHYudG9P
YmplY3QoZXhlYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvLT5zdHJ1Y3R1cmUoKTsK
KyAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gc3Ry
dWN0dXJlLT5lbnVtZXJhdGlvbkNhY2hlKCk7CisgICAgaWYgKCFqc1Byb3BlcnR5TmFtZUl0ZXJh
dG9yIHx8IGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmNhY2hlZFByb3RvdHlwZUNoYWluKCkgIT0g
c3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSkKKyAgICAgICAganNQcm9wZXJ0eU5hbWVJ
dGVyYXRvciA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBvKTsKKyAgICAK
KyAgICBMTElOVF9PUCgxKSA9IEpTVmFsdWUoanNQcm9wZXJ0eU5hbWVJdGVyYXRvcik7CisgICAg
TExJTlRfT1AoMikgPSBKU1ZhbHVlKG8pOworICAgIExMSU5UX09QKDMpID0gUmVnaXN0ZXI6Ondp
dGhJbnQoMCk7CisgICAgTExJTlRfT1AoNCkgPSBSZWdpc3Rlcjo6d2l0aEludChqc1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLT5zaXplKCkpOworICAgIAorICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bf
Z2V0X3BuYW1lcyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9uZXh0X3BuYW1lKQoreworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoTExJTlRf
T1AoMikuanNWYWx1ZSgpKTsKKyAgICBKU1N0cmluZyogcHJvcGVydHkgPSBhc1N0cmluZyhMTElO
VF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIGlmIChiYXNlLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVu
dGlmaWVyKGV4ZWMsIHByb3BlcnR5LT52YWx1ZShleGVjKSkpKSB7CisgICAgICAgIC8vIEdvIHRv
IHRhcmdldC4KKyAgICAgICAgcGMgKz0gcGNbNl0udS5vcGVyYW5kOworICAgIH0gLy8gRWxzZSwg
ZG9uJ3QgY2hhbmdlIHRoZSBQQywgc28gdGhlIGludGVycHJldGVyIHdpbGwgcmVsb29wLgorICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSkK
K3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3Qq
IG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAg
IAorICAgIExMSU5UX09QKDEpID0gbzsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNj
b3BlQ2hhaW4oKS0+cHVzaChvKSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUpCit7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFp
bihleGVjLT5zY29wZUNoYWluKCktPnBvcCgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKQoreworICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIHNjb3BlID0gSlNT
dGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1sy
XS51Lm9wZXJhbmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIERvbnREZWxldGUpOworICAgIGV4
ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKHNjb3BlKSk7CisgICAg
TExJTlRfUkVUVVJOKHNjb3BlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93
KQoreworICAgIExMSU5UX1RIUk9XKExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKK3sKKyAgICBMTElO
VF9USFJPVyhjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2RlYnVnKQoreworICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBjWzFdLnUub3BlcmFuZDsK
KyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOworICAgIGludCBsYXN0TGluZSA9
IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0
ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZp
cnN0TGluZSwgbGFzdExpbmUpOworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7CisgICAgKCpQcm9maWxlcjo6
ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT53aWxsRXhlY3V0ZShleGVjLCBMTElOVF9PUCgx
KS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJvZmls
ZXJSZWZlcmVuY2UoKSktPmRpZEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNl
bmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50SGVs
cGVyc19oCisjZGVmaW5lIExMSW50SGVscGVyc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0u
aD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247
CisKK25hbWVzcGFjZSBMTEludCB7CisKK3R5cGVkZWYgaW50NjRfdCBIZWxwZXJSZXR1cm5UeXBl
OworCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVj
U3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKK2V4dGVy
biAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUqLCBJbnN0
cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKKworI2RlZmluZSBMTElOVF9I
RUxQRVJfREVDTChuYW1lKSBcCisgICAgZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50
XyMjbmFtZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKKworTExJTlRfSEVMUEVS
X0RFQ0wodHJhY2VfcHJvbG9ndWUpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVf
ZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNr
X2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0
cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZSk7CitMTElOVF9IRUxQRVJfREVDTChzcGVj
aWFsX3RyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcik7CitMTElOVF9IRUxQRVJf
REVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woZW50
cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlf
b3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woZW50
cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJf
REVDTChsb29wX29zcik7CitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Nh
bGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0X2FyaXR5
Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jcmVhdGVfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29udmVy
dF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfb2JqZWN0KTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
d19hcnJheV9idWZmZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdleHApOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3RlcSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9p
bmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9kZWMpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Bvc3RfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25lZ2F0ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1Yik7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9tb2QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2JpdG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2JpdG5vdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tf
aGFzX2luc3RhbmNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9mKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2lzX3VuZGVmaW5lZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbik7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9pc19zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX29iamVjdCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2luKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfZ2xvYmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2Jh
bF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Zvcl9yZXNvbHZl
X2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2Up
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Z2V0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0
aCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9kZWxfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV92
YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcHV0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wdXRfZ2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfc2V0
dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9qdHJ1ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZhbHNlKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfam5sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcik7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5n
cmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9pbW0pOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9jaGFyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9zd2l0Y2hfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmNfZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY2FsbF9ldmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hY3Rp
dmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNhdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfdG9fcHJpbWl0aXZlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXh0X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wdXNoX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl90aHJvdyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVm
ZXJlbmNlX2Vycm9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1Zyk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQK
KworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50SGVscGVyc19oCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTElu
dE9mZmxpbmVBc21Db25maWdfaAorI2RlZmluZSBMTEludE9mZmxpbmVBc21Db25maWdfaAorCisj
aW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4NikKKyNkZWZpbmUgT0ZGTElORV9B
U01fWDg2IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisjZW5kaWYKKworI2lm
IENQVShBUk12NykKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMQorI2Vsc2UKKyNkZWZpbmUg
T0ZGTElORV9BU01fQVJNdjcgMAorI2VuZGlmCisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisjZGVm
aW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVf
QVNNX0FTU0VSVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgQ1BVKEJJR19FTkRJQU4pCisjZGVm
aW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01f
QklHX0VORElBTiAwCisjZW5kaWYKKworI2lmIEVOQUJMRShMTElOVF9PU1JfVE9fSklUKQorI2Rl
ZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FT
TV9KSVRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIExMSU5UX0VYRUNVVElPTl9UUkFDSU5HCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDEKKyNlbHNlCisjZGVmaW5lIE9G
RkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNlbmRpZgorCisjZW5kaWYgLy8gTExJbnRP
ZmZsaW5lQXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQWxsb2NhdGlvblNw
YWNlLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgor
I2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJ
VFN0dWJzLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAi
SlNUeXBlSW5mby5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKKyNpbmNsdWRlICJK
dW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRl
ICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgorI2luY2x1ZGUgIlNj
b3BlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVD
aGFpbi5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgT0ZGTElORV9BU01fT0ZG
U0VUT0YoY2xhenosIGZpZWxkKSBPQkpFQ1RfT0ZGU0VUT0YoY2xhenosIGZpZWxkKQorCitjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCogZHVtbXkoKTsKK307CisKK2NvbnN0IHVuc2lnbmVkKiBMTEludE9mZnNldHNFeHRyYWN0
b3I6OmR1bW15KCkKK3sKKyNpbmNsdWRlICJMTEludERlc2lyZWRPZmZzZXRzLmgiCisgICAgcmV0
dXJuIGV4dHJhY3RvclRhYmxlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworaW50IG1haW4o
aW50LCBjaGFyKiopCit7CisgICAgLy8gT3V0IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0aW9uLCBt
YWtlIHN1cmUgdGhhdCBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkgaXMgbGl2ZSwKKyAg
ICAvLyBhbmQgdGhlIGV4dHJhY3RvclRhYmxlIGlzIGxpdmUsIHRvby4KKyAgICBwcmludGYoIiVw
XG4iLCBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSk7CisgICAgcmV0dXJuIDA7
Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3Mu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJM
TEludFRodW5rcy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSlNJbnRlcmZh
Y2VKSVQuaCIKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRl
cnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIHZvaWQgKCp0YXJnZXQpKCkpCit7CisgICAgSlNJbnRlcmZhY2VKSVQg
aml0OworICAgIAorICAgIC8vIEZJWE1FOiB0aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0
byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20gbm90IHN1cmUgSSBjYXJlLgorICAgIGppdC5tb3ZlKEpT
SW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSks
IEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QwKTsKKyAgICAKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0
LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUo
KTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtH
ZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0
ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9s
b2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVu
dHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVy
biBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9u
Rm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEp
Cit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8o
Z2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7Cit9
CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRv
KGdsb2JhbERhdGEsIGxsaW50X2V2YWxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
KQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGlu
dF9wcm9ncmFtX3Byb2xvZ3VlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisK
KyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRUaHVu
a3NfaAorI2RlZmluZSBMTEludFRodW5rc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
KworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRhOworCituYW1lc3BhY2Ug
TExJbnQgeworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVu
a0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlv
bkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpT
R2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0
QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOwor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkK
KworI2VuZGlmIC8vIExMSW50VGh1bmtzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjM3NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworCisjIENyYXNoIGNvdXJzZSBvbiB0aGUgbGFuZ3VhZ2UgdGhhdCB0aGlz
IGlzIHdyaXR0ZW4gaW4gKHdoaWNoIEkganVzdCBjYWxsCisjICJhc3NlbWJseSIgZXZlbiB0aG91
Z2ggaXQncyBtb3JlIHRoYW4gdGhhdCk6CisjCisjIC0gTW9zdGx5IGdhcy1zdHlsZSBvcGVyYW5k
IG9yZGVyaW5nLiBUaGUgbGFzdCBvcGVyYW5kIHRlbmRzIHRvIGJlIHRoZQorIyAgIGRlc3RpbmF0
aW9uLiBTbyAiYSA6PSBiIiBpcyB3cml0dGVuIGFzICJtb3YgYiwgYSIuIEJ1dCB1bmxpa2UgZ2Fz
LAorIyAgIGNvbXBhcmlzb25zIGFyZSBpbi1vcmRlciwgc28gImlmIChhIDwgYikiIGlzIHdyaXR0
ZW4gYXMKKyMgICAiYmlsdCBhLCBiLCAuLi4iLgorIworIyAtICJiIiA9IGJ5dGUsICJoIiA9IDE2
LWJpdCB3b3JkLCAiaSIgPSAzMi1iaXQgd29yZCwgInAiID0gcG9pbnRlci4KKyMgICBDdXJyZW50
bHkgdGhpcyBpcyBqdXN0IDMyLWJpdCBzbyAiaSIgYW5kICJwIiBhcmUgaW50ZXJjaGFuZ2VhYmxl
CisjICAgZXhjZXB0IHdoZW4gYW4gb3Agc3VwcG9ydHMgb25lIGJ1dCBub3QgdGhlIG90aGVyLgor
IworIyAtIEluIGdlbmVyYWwsIHZhbGlkIG9wZXJhbmRzIGZvciBtYWNybyBpbnZvY2F0aW9ucyBh
bmQgaW5zdHJ1Y3Rpb25zIGFyZQorIyAgIHJlZ2lzdGVycyAoZWcgInQwIiksIGFkZHJlc3NlcyAo
ZWcgIjRbdDBdIiksIGJhc2UtaW5kZXggYWRkcmVzc2VzCisjICAgKGVnICI3W3QwLCB0MSwgMl0i
KSwgYWJzb2x1dGUgYWRkcmVzc2VzIChlZyAiMHhhMDAwMDAwMFtdIiksIG9yIGxhYmVscworIyAg
IChlZyAiX2ZvbyIgb3IgIi5mb28iKS4gTWFjcm8gaW52b2NhdGlvbnMgY2FuIGFsc28gdGFrZSBh
bm9ueW1vdXMKKyMgICBtYWNyb3MgYXMgb3BlcmFuZHMuIEluc3RydWN0aW9ucyBjYW5ub3QgdGFr
ZSBhbm9ueW1vdXMgbWFjcm9zLgorIworIyAtIExhYmVscyBtdXN0IGhhdmUgbmFtZXMgdGhhdCBi
ZWdpbiB3aXRoIGVpdGhlciAiXyIgb3IgIi4iLiAgQSAiLiIgbGFiZWwKKyMgICBpcyBsb2NhbCBh
bmQgZ2V0cyByZW5hbWVkIGJlZm9yZSBjb2RlIGdlbiB0byBtaW5pbWl6ZSBuYW1lc3BhY2UKKyMg
ICBwb2xsdXRpb24uIEEgIl8iIGxhYmVsIGlzIGFuIGV4dGVybiBzeW1ib2wgKGkuZS4gIi5nbG9i
bCIpLiBUaGUgIl8iCisjICAgbWF5IG9yIG1heSBub3QgYmUgcmVtb3ZlZCBkdXJpbmcgY29kZSBn
ZW4gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGFzbQorIyAgIGNvbnZlbnRpb25zIGZvciBDIG5h
bWUgbWFuZ2xpbmcgb24gdGhlIHRhcmdldCBwbGF0Zm9ybSBtYW5kYXRlIGEgIl8iCisjICAgcHJl
Zml4LgorIworIyAtIEEgIm1hY3JvIiBpcyBhIGxhbWJkYSBleHByZXNzaW9uLCB3aGljaCBtYXkg
YmUgZWl0aGVyIGFub255bW91cyBvcgorIyAgIG5hbWVkLiBCdXQgdGhpcyBoYXMgY2F2ZWF0cy4g
Im1hY3JvIiBjYW4gdGFrZSB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLAorIyAgIHdoaWNoIG1heSBi
ZSBtYWNyb3Mgb3IgYW55IHZhbGlkIG9wZXJhbmRzLCBidXQgaXQgY2FuIG9ubHkgcmV0dXJuCisj
ICAgY29kZS4gQnV0IHlvdSBjYW4gZG8gVHVyaW5nLWNvbXBsZXRlIHRoaW5ncyB2aWEgY29udGlu
dWF0aW9uIHBhc3NpbmcKKyMgICBzdHlsZTogIm1hY3JvIGZvbyAoYSwgYikgYihhKSBlbmQgZm9v
KGZvbywgZm9vKSIuIEFjdHVhbGx5LCBkb24ndCBkbworIyAgIHRoYXQsIHNpbmNlIHlvdSdsbCBq
dXN0IGNyYXNoIHRoZSBhc3NlbWJsZXIuCisjCisjIC0gQW4gImlmIiBpcyBhIGNvbmRpdGlvbmFs
IG9uIHNldHRpbmdzLiBBbnkgaWRlbnRpZmllciBzdXBwbGllZCBpbiB0aGUKKyMgICBwcmVkaWNh
dGUgb2YgYW4gImlmIiBpcyBhc3N1bWVkIHRvIGJlIGEgI2RlZmluZSB0aGF0IGlzIGF2YWlsYWJs
ZQorIyAgIGR1cmluZyBjb2RlIGdlbi4gU28geW91IGNhbid0IHVzZSAiaWYiIGZvciBjb21wdXRh
dGlvbiBpbiBhIG1hY3JvLCBidXQKKyMgICB5b3UgY2FuIHVzZSBpdCB0byBzZWxlY3QgZGlmZmVy
ZW50IHBpZWNlcyBvZiBjb2RlIGZvciBkaWZmZXJlbnQKKyMgICBwbGF0Zm9ybXMuCisjCisjIC0g
QXJndW1lbnRzIHRvIG1hY3JvcyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIHJhdGhlciB0aGFuIGR5
bmFtaWMgc2NvcGluZy4KKyMgICBDb25zdCdzIGFsc28gZm9sbG93IGxleGljYWwgc2NvcGluZyBh
bmQgbWF5IG92ZXJyaWRlIChoaWRlKSBhcmd1bWVudHMKKyMgICBvciBvdGhlciBjb25zdHMuIEFs
bCB2YXJpYWJsZXMgKGFyZ3VtZW50cyBhbmQgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0
byBvcGVyYW5kcy4gQWRkaXRpb25hbGx5LCBhcmd1bWVudHMgKGJ1dCBub3QgY29uc3RhbnRzKSBj
YW4gYmUgYm91bmQKKyMgICB0byBtYWNyb3MuCisKKworIyBUaGVzZSBkZWNsYXJhdGlvbnMgbXVz
dCBtYXRjaCBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaC4KK2NvbnN0IENhbGxGcmFtZUhlYWRl
clNpemUgPSA0OAorY29uc3QgQXJndW1lbnRDb3VudCA9IC00OAorY29uc3QgQ2FsbGVyRnJhbWUg
PSAtNDAKK2NvbnN0IENhbGxlZSA9IC0zMgorY29uc3QgU2NvcGVDaGFpbiA9IC0yNAorY29uc3Qg
UmV0dXJuUEMgPSAtMTYKK2NvbnN0IENvZGVCbG9jayA9IC04CisKK2NvbnN0IFRoaXNBcmd1bWVu
dE9mZnNldCA9IC1DYWxsRnJhbWVIZWFkZXJTaXplIC0gOAorCisjIERlY2xhcmUgc29tZSBhbGlh
c2VzIGZvciB0aGUgcmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAorCisjIE9m
ZnNldHMgbmVlZGVkIGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRpb24uCitp
ZiBCSUdfRU5ESUFOCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBheWxvYWRP
ZmZzZXQgPSA0CitlbHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0IFBheWxv
YWRPZmZzZXQgPSAwCitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCitj
b25zdCBJbnQzMlRhZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51bGxUYWcg
PSAtMworY29uc3QgVW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQorY29uc3Qg
RW1wdHlWYWx1ZVRhZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29uc3QgTG93
ZXN0VGFnID0gRGVsZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25zdCBTdHJp
bmdUeXBlID0gNQorY29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFncyBjb25zdGFu
dHMuCitjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVtZW50c0hh
c0luc3RhbmNlID0gMgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDgKKwor
IyBIZWFwIGFsbG9jYXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFz
c0luZGV4ID0gMworCisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3QgRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNvbnN0YW50
cy4KK2NvbnN0IEdsb2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0IEZ1bmN0
aW9uQ29kZSA9IDIKKworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0
aGUgYXJndW1lbnQgY291bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCAr
IFRhZ09mZnNldAorCisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25zdCBWZWN0
b3JTaXplT2Zmc2V0ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisjIFN0cmlu
ZyBmbGFncy4KK2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxpdGllcwor
bWFjcm8gY3Jhc2goKQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3ZlIDAsIHQw
CisgICAgY2FsbCB0MAorZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAgaWYgQVNT
RVJUX0VOQUJMRUQKKyAgICAgICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAgY3Jhc2goKQorICAg
IC5vazoKKyAgICBlbmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNh
bGwoZGVzdGluYXRpb25SZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGxyLCBk
ZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBvcCBkZXN0aW5hdGlv
blJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3Jv
IHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQorICAgIGlm
IEFSTXY3CisgICAgICAgIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAgZWxzaWYgWDg2Cisg
ICAgICAgIHB1c2ggc291cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAg
ZW5kCitlbmQKKworbWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRwIGFkdmFuY2UgKiA0
LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0
KHBjT2Zmc2V0KQorICAgIGxzaGlmdGkgMiwgcGNPZmZzZXQKKyAgICBhZGRwIHBjT2Zmc2V0LCBQ
QworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZzZXQpCisg
ICAgbG9hZGkgcGNPZmZzZXQsIHQwCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQwKQor
ZW5kCisKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBjQ2FsbDIo
ZnVuY3Rpb24sIGFyZzEsIGFyZzIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0
MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJn
MSwgMAorICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAg
ZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5kCisKKyMgVGhpcyBiYXJlbHkgd29ya3MuIGFyZzMg
YW5kIGFyZzQgc2hvdWxkIHByb2JhYmx5IGJlIGltbWVkaWF0ZXMuCittYWNybyBjQ2FsbDQoZnVu
Y3Rpb24sIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92
ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgICAgIG1vdmUgYXJnMywgdDIK
KyAgICAgICAgbW92ZSBhcmc0LCB0MworICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEs
IDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisgICAgICAgIHBva2UgYXJnMywgMgorICAgICAgICBw
b2tlIGFyZzQsIDMKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBm
dW5jdGlvbgorZW5kCisKK21hY3JvIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGNDYWxsMihoZWxw
ZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisj
IERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVyYW5kIGlu
IHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uCittYWNybyB0cmFjZU9wZXJhbmQoZnJvbVdoZXJlLCBv
cGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2Vfb3BlcmFuZCwgY2ZyLCBQQywgZnJvbVdo
ZXJlLCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKwor
IyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgdGhlIHZhbHVlIG9m
IGFuIG9wZXJhbmQgaW4gdGhlIGluc3RydWN0aW9uCisjIHN0cmVhbS4KK21hY3JvIHRyYWNlVmFs
dWUoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2VfdmFsdWUsIGNm
ciwgUEMsIGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEs
IGNmcgorZW5kCisKK21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBpZiBFWEVDVVRJT05fVFJB
Q0lORworICAgICAgICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkKKyAgICBlbmQKK2VuZAorCisj
IENhbGwgYSBoZWxwZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3JvIGNhbGxDYWxsSGVscGVyKGFk
dmFuY2UsIGhlbHBlciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDLCB0MAorICAg
IHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgY0NhbGwyKGhl
bHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBhY3Rpb24odDApCitlbmQKKwor
bWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikKKyAgICBjYWxsQ2FsbEhlbHBl
cigKKyAgICAgICAgYWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAorICAgICAgICBtYWNybyAoY2Fs
bGVlKQorICAgICAgICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJD
YWxsKCkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVQoaW5jcmVt
ZW50LCBhY3Rpb24pCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQwCisgICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENvZGVCbG9jazo6bV9sbGludEV4
ZWN1dGVDb3VudGVyW3QwXSwgLmNvbnRpbnVlCisgICAgICAgIGFjdGlvbigpCisgICAgLmNvbnRp
bnVlOgorICAgIGVuZAorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAg
ICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxLAorICAgICAgICBtYWNybyAoKQorICAgICAg
ICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICAgICAg
ICAgIGNDYWxsMihfbGxpbnRfbG9vcF9vc3IsIGNmciwgUEMpCisgICAgICAgICAgICBtb3ZlIHQx
LCBjZnIKKyAgICAgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgICAgICBqbXAgdDAK
KyAgICAgICAgLnJlY292ZXI6CisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFn
T2Zmc2V0W2Nmcl0sIFBDCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRv
SklURm9yRXBpbG9ndWUoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEwLAorICAg
ICAgICBtYWNybyAoKQorICAgICAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVwbGFjZSkKKyAg
ICAgICAgZW5kKQorZW5kCisKK21hY3JvIGFzc2VydE5vdENvbnN0YW50KGluZGV4KQorICAgIGFz
c2VydChtYWNybyAob2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBv
ayBlbmQpCitlbmQKKworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVu
dCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENvbnN0YW50
T3JWYXJpYWJsZShpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwg
cGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsg
VmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJp
dCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwg
dG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9hZHAg
VGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNl
dFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5k
IHBheWxvYWQgbWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLiBJbmRleCBtYXkgYmUgY2xvYmJlcmVk
LgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkK
KyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQK
KyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFu
dDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFnCisgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3RhZ10sIHRhZworICAgICMg
VGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1
ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3
aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAz
LgorICAgIGxzaGlmdGkgMywgaW5kZXgKKyAgICBhZGRwIGluZGV4LCB0YWcKKyAgICBsb2FkcCBQ
YXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQKKyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFn
CisuZG9uZToKK2VuZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1
c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0W2Nm
ciwgaW5kZXgsIDhdKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBh
eWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZl
Y3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQg
b2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRv
ICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIHRhZ0NoZWNr
KFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0pCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtw
YXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBh
eWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QgbXV0YXRlZC4g
VXNlCisjIHRoaXMgaWYgeW91IGtub3cgd2hhdCB0aGUgdGFnIG9mIHRoZSB2YXJpYWJsZSBzaG91
bGQgYmUuIERvaW5nIHRoZSB0YWcKKyMgdGVzdCBhcyBwYXJ0IG9mIGxvYWRpbmcgdGhlIHZhcmlh
YmxlIHJlZHVjZXMgcmVnaXN0ZXIgdXNlLCBidXQgbWF5IG5vdAorIyBiZSBmYXN0ZXIgdGhhbiBk
b2luZyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlIGZvbGxvd2VkIGJ5IGEgYnJhbmNoIG9uIHRoZQor
IyB0YWcuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0
ZWRUYWcsIHBheWxvYWQsIHNsb3cpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRU
YWdDdXN0b20oCisgICAgICAgIGluZGV4LAorICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBiaW5l
cSBhY3R1YWxUYWcsIGV4cGVjdGVkVGFnLCBzbG93IGVuZCwKKyAgICAgICAgcGF5bG9hZCkKK2Vu
ZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZChpbmRleCwg
cGF5bG9hZCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgKKyAg
ICAgICAgaW5kZXgsCisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGVuZCwKKyAgICAgICAgcGF5
bG9hZCkKK2VuZAorCittYWNybyB3cml0ZUJhcnJpZXIodGFnLCBwYXlsb2FkKQorICAgICMgTm90
aGluZyB0byBkbywgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGdlbmVyYXRpb25hbCBvciBpbmNyZW1l
bnRhbCBjb2xsZWN0b3IuCitlbmQKKworbWFjcm8gdmFsdWVQcm9maWxlKHRhZywgcGF5bG9hZCwg
cHJvZmlsZSkKKyAgICBzdG9yZWkgdGFnLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09m
ZnNldFtwcm9maWxlXQorICAgIHN0b3JlaSBwYXlsb2FkLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0
cyArIFBheWxvYWRPZmZzZXRbcHJvZmlsZV0KK2VuZAorCisKKyMgSW5kaWNhdGUgdGhlIGJlZ2lu
bmluZyBvZiBMTEludC4KK19sbGludF9iZWdpbjoKKyAgICBjcmFzaCgpCisKKworIyBFbnRyeXBv
aW50cyBpbnRvIHRoZSBpbnRlcnByZXRlcgorCittYWNybyBmdW5jdGlvbkZvckNhbGxDb2RlQmxv
Y2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJl
Z2lzdGVyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVy
XSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJs
b2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8g
ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAg
bG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6
bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBG
dW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ29uc3RydWN0W3RhcmdldFJlZ2lzdGVy
XSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRl
cih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFyZ2V0UmVnaXN0
ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikK
KyAgICBzdG9yZXAgc291cmNlUmVnaXN0ZXIsIENvZGVCbG9ja1tjZnJdCitlbmQKKworbWFjcm8g
bm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCisgICAgIyBOb3RoaW5n
IHRvIGRvIQorZW5kCisKKyMgRG8gdGhlIGJhcmUgbWluaW11bSByZXF1aXJlZCB0byBleGVjdXRl
IGNvZGUuIFNldHMgdXAgdGhlIFBDLCBsZWF2ZSB0aGUgQ29kZUJsb2NrKgorIyBpbiB0MS4gTWF5
IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1IuCittYWNybyBwcm9sb2d1ZShjb2RlQmxv
Y2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NySGVscGVyLCB0cmFjZUhlbHBlcikKKyAgICBw
cmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpCisgICAgCisgICAgIyBTZXQgdXAgdGhl
IGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1IuCisgICAgc3RvcmVwIHQyLCBS
ZXR1cm5QQ1tjZnJdCisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcKKyAgICAgICAgY2FsbEhlbHBl
cih0cmFjZUhlbHBlcikKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCisgICAgaWYg
SklUX0VOQUJMRUQKKyAgICAgICAgYmFkZGlzIDUsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVD
b3VudGVyW3QxXSwgLmNvbnRpbnVlCisgICAgICAgIGNDYWxsMihvc3JIZWxwZXIsIGNmciwgUEMp
CisgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAgICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAg
ICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0Jl
Zm9yZVJldHVybih0MikKKyAgICAgICAgam1wIHQwCisgICAgLnJlY292ZXI6CisgICAgICAgIGNv
ZGVCbG9ja0dldHRlcih0MSkKKyAgICAuY29udGludWU6CisgICAgZW5kCisgICAgY29kZUJsb2Nr
U2V0dGVyKHQxKQorICAgIAorICAgICMgU2V0IHVwIHRoZSBQQy4KKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0
aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworZW5kCisK
KyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1
ZSgpIGxlYXZlcyBiZWhpbmQuCisjIE11c3QgY2FsbCBkaXNwYXRjaCgwKSBhZnRlciBjYWxsaW5n
IHRoaXMuCittYWNybyBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTa2lwKQorICAg
ICMgUHJvZmlsZSB0aGUgYXJndW1lbnRzLiBVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIGNob2lj
ZSBidXQgdG8gZG8gdGhpcy4gVGhpcworICAgICMgY29kZSBpcyBwcmV0dHkgaG9ycmVuZG91cyBi
ZWNhdXNlIG9mIHRoZSBkaWZmZXJlbmNlIGluIG9yZGVyaW5nIGJldHdlZW4KKyAgICAjIGFyZ3Vt
ZW50cyBhbmQgdmFsdWUgcHJvZmlsZXMsIHRoZSBkZXNpcmUgdG8gaGF2ZSBhIHNpbXBsZSBsb29w
LWRvd24tdG8temVybworICAgICMgbG9vcCwgYW5kIHRoZSBkZXNpcmUgdG8gdXNlIG9ubHkgdGhy
ZWUgcmVnaXN0ZXJzIHNvIGFzIHRvIHByZXNlcnZlIHRoZSBQQyBhbmQKKyAgICAjIHRoZSBjb2Rl
IGJsb2NrLiBJdCBpcyBsaWtlbHkgdGhhdCB0aGlzIGNvZGUgc2hvdWxkIGJlIHJld3JpdHRlbiBp
biBhIG1vcmUKKyAgICAjIG9wdGltYWwgd2F5IGZvciBhcmNoaXRlY3R1cmVzIHRoYXQgaGF2ZSBt
b3JlIHRoYW4gZml2ZSByZWdpc3RlcnMgYXZhaWxhYmxlCisgICAgIyBmb3IgYXJiaXRyYXJ5IHVz
ZSBpbiB0aGUgaW50ZXJwcmV0ZXIuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVBhcmFtZXRl
cnNbdDFdLCB0MAorICAgIGFkZGkgLXByb2ZpbGVBcmdTa2lwLCB0MCAjIFVzZSBhZGRpIGJlY2F1
c2UgdGhhdCdzIHdoYXQgaGFzIHRoZSBwZWVwaG9sZQorICAgIGFzc2VydChtYWNybyAob2spIGJp
Z3RlcSB0MCwgMCwgb2sgZW5kKQorICAgIGJ0aXogdDAsIC5hcmd1bWVudFByb2ZpbGVEb25lCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcyArIFZlY3RvckJ1ZmZl
ck9mZnNldFt0MV0sIHQzCisgICAgbXVsaSBzaXplb2YgVmFsdWVQcm9maWxlLCB0MCwgdDIgIyBB
YWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVkdWN0aW9uIQorICAgIG5lZ2kgdDAKKyAgICBsc2hp
ZnRpIDMsIHQwCisgICAgYWRkcCB0MiwgdDMKKy5hcmd1bWVudFByb2ZpbGVMb29wOgorICAgIGxv
YWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNldCArIDggLSBwcm9maWxlQXJnU2tpcCAq
IDhbY2ZyLCB0MF0sIHQyCisgICAgc3VicCBzaXplb2YgVmFsdWVQcm9maWxlLCB0MworICAgIHN0
b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBzaXplb2YgVmFsdWVQcm9maWxlICsgVmFsdWVQcm9m
aWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zm
c2V0ICsgUGF5bG9hZE9mZnNldCArIDggLSBwcm9maWxlQXJnU2tpcCAqIDhbY2ZyLCB0MF0sIHQy
CisgICAgc3RvcmVpIHQyLCBwcm9maWxlQXJnU2tpcCAqIHNpemVvZiBWYWx1ZVByb2ZpbGUgKyBW
YWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgYmFkZGlueiA4
LCB0MCwgLmFyZ3VtZW50UHJvZmlsZUxvb3AKKy5hcmd1bWVudFByb2ZpbGVEb25lOgorICAgIAor
ICAgICMgQ2hlY2sgc3RhY2sgaGVpZ2h0LgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1DYWxs
ZWVSZWdpc3RlcnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3Qx
XSwgdDIKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmludGVycHJldGVyW3QyXSwgdDIgICAjIEZJ
WE1FOiBDYW4gZ2V0IHRvIHRoZSBSZWdpc3RlckZpbGUgZnJvbSB0aGUgSklUU3RhY2tGcmFtZQor
ICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQwLCBjZnIsIHQwCisgICAgYnBhZXEgSW50ZXJw
cmV0ZXI6Om1fcmVnaXN0ZXJGaWxlICsgUmVnaXN0ZXJGaWxlOjptX2VuZFt0Ml0sIHQwLCAuc3Rh
Y2tIZWlnaHRPSworCisgICAgIyBTdGFjayBoZWlnaHQgY2hlY2sgZmFpbGVkIC0gbmVlZCB0byBj
YWxsIGEgaGVscGVyLgorICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlZ2lzdGVyX2ZpbGVfY2hlY2sp
Cisuc3RhY2tIZWlnaHRPSzoKK2VuZAorCisjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4g
dDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgorbWFjcm8gZnVuY3Rp
b25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgaGVscGVyKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQg
KyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisgICAgYmlhZXEgdDAsIENvZGVCbG9jazo6bV9udW1Q
YXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykgICAj
IFRoaXMgaGVscGVyIGhhcyBhIHNpbXBsZSBwcm90b2NvbDogdDAgPSAwID0+IG5vIGVycm9yLCB0
MCAhPSAwID0+IGVycm9yCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYnRpeiB0MCwgLmNvbnRpbnVl
CisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAg
SlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFs
RGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisuY29udGludWU6CisgICAgIyBSZWxv
YWQgQ29kZUJsb2NrIGFuZCBQQywgc2luY2UgdGhlIGhlbHBlciBjbG9iYmVyZWQgaXQuCisgICAg
bG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0
aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpJbnN0cnVjdGlvbnM6Om1faW5zdHJ1
Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKKyAgICBqbXAgZG9uZUxhYmVsCitl
bmQKKworX2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6CisgICAgcHJvbG9ndWUobm90RnVuY3Rpb25D
b2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlf
b3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRf
ZXZhbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwg
bm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFj
ZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIs
IGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9j
YWxsLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCisuZnVuY3Rpb25G
b3JDYWxsQmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigwKQorICAgIGRpc3BhdGNo
KDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlOgorICAg
IHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNv
ZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0LCBf
bGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKKy5mdW5jdGlvbkZv
ckNvbnN0cnVjdEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKKyAgICBkaXNw
YXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2s6Cisg
ICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVC
bG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNr
LCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hl
Y2soLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfbGxpbnRfaGVscGVyX2NhbGxfYXJpdHlDaGVjaykK
KworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjazoKKyAgICBwcm9s
b2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxv
Y2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNo
ZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQorICAgIGZ1bmN0aW9u
QXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX2xsaW50X2hlbHBlcl9jb25z
dHJ1Y3RfYXJpdHlDaGVjaykKKworIyBJbnN0cnVjdGlvbiBpbXBsZW1lbnRhdGlvbnMKKworX2xs
aW50X29wX2VudGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDIKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFyc1t0Ml0sIHQyCisgICAgYnRp
eiB0MiwgLm9wRW50ZXJEb25lCisgICAgbW92ZSBVbmRlZmluZWRUYWcsIHQwCisgICAgbW92ZSAw
LCB0MQorLm9wRW50ZXJMb29wOgorICAgIHN1YmkgMSwgdDIKKyAgICBzdG9yZWkgdDAsIFRhZ09m
ZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4
XQorICAgIGJ0aW56IHQyLCAub3BFbnRlckxvb3AKKy5vcEVudGVyRG9uZToKKyAgICBkaXNwYXRj
aCgxKQorCisKK19sbGludF9vcF9jcmVhdGVfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBY3RpdmF0aW9uRG9uZQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKKy5vcENyZWF0ZUFjdGl2YXRpb25Eb25l
OgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luaXRfbGF6eV9yZWc6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSBFbXB0eVZhbHVl
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgMCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NyZWF0ZV9hcmd1bWVu
dHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVx
IFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQXJndW1lbnRz
RG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQorLm9w
Q3JlYXRlQXJndW1lbnRzRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGFsbG9jYXRl
QmFzaWNKU09iamVjdChzaXplQ2xhc3NJbmRleCwgY2xhc3NJbmZvT2Zmc2V0LCBzdHJ1Y3R1cmUs
IHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBzbG93Q2FzZSkKKyAgICBjb25zdCBvZmZzZXRP
Zk15U2l6ZUNsYXNzID0gSlNHbG9iYWxEYXRhOjpoZWFwICsgSGVhcDo6bV9vYmplY3RTcGFjZSAr
IEFsbG9jYXRpb25TcGFjZTo6bV9tYXJrZWRTcGFjZSArIE1hcmtlZFNwYWNlOjptX3ByZWNpc2VT
aXplQ2xhc3NlcyArIHNpemVDbGFzc0luZGV4ICogc2l6ZW9mIE1hcmtlZFNwYWNlOjpTaXplQ2xh
c3MKKyAgICAKKyAgICAjIEZJWE1FOiB3ZSBjYW4gZ2V0IHRoZSBnbG9iYWwgZGF0YSBpbiBvbmUg
bG9hZCBmcm9tIHRoZSBzdGFjay4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2NyYXRjaDEK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVtzY3JhdGNoMV0sIHNjcmF0Y2gxCisg
ICAgCisgICAgIyBHZXQgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuICAgIAorICAgIGxv
YWRwIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZy
ZWVDZWxsW3NjcmF0Y2gxXSwgcmVzdWx0CisgICAgYnRweiByZXN1bHQsIHNsb3dDYXNlCisgICAg
CisgICAgIyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCisgICAgbG9hZHAg
W3Jlc3VsdF0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gyLCBvZmZzZXRPZk15U2l6ZUNs
YXNzICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0KKwor
ICAgICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgorICAgIGxvYWRwIGNsYXNzSW5mb09mZnNldFtz
Y3JhdGNoMV0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gyLCBbcmVzdWx0XQorICAgIHN0
b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQorICAgIHN0b3JlcCAw
LCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCisgICAgYWRkcCBzaXplb2YgSlNPYmpl
Y3QsIHJlc3VsdCwgc2NyYXRjaDEKKyAgICBzdG9yZXAgc2NyYXRjaDEsIEpTT2JqZWN0OjptX3By
b3BlcnR5U3RvcmFnZVtyZXN1bHRdCitlbmQKKworX2xsaW50X29wX2NyZWF0ZV90aGlzOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBhc3NlcnROb3RDb25z
dGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENy
ZWF0ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYmIgU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5vcENyZWF0ZVRo
aXNTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbdDBdLCB0MgorICAgIGJ0
cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmlu
YWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJ
bmZvLCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCisgICAgbG9hZGkgNFtQQ10s
IHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3Jl
aSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcENy
ZWF0ZVRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfdGhpcykK
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9nZXRfY2FsbGVlOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0ICsg
Q2FsbGVlW2Nmcl0sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4
XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNo
KDIpCisKKworX2xsaW50X29wX2NvbnZlcnRfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxs
VGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJiYiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwg
Lm9wQ29udmVydFRoaXNTbG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ29udmVydFRoaXNTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jb252ZXJ0X3RoaXMpCisgICAgZGlzcGF0
Y2goMikKKworCitfbGxpbnRfb3BfbmV3X29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2Jh
bE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fZW1wdHlPYmplY3RT
dHJ1Y3R1cmVbdDBdLCB0MQorICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0
U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywgdDEs
IHQwLCB0MiwgdDMsIC5vcE5ld09iamVjdFNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAg
c3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcE5ld09iamVjdFNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19vYmplY3QpCisgICAgZGlzcGF0
Y2goMikKKworCitfbGxpbnRfb3BfbmV3X2FycmF5OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2FycmF5KQorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX25ld19hcnJheV9idWZmZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX25ld19yZWdleHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfcmVnZXhwKQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX21vdjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10s
IHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwg
dDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVp
IHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3Bfbm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMp
CisgICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5vcE5vdFNsb3cKKyAgICB4b3JpIDEsIHQzCisg
ICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOb3RTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ub3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEp
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0
MiwgdDMsIC5vcEVxU2xvdworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcEVxU2xvdworICAgIGJp
YiB0MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaWVx
IHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2go
NCkKKworLm9wRXFTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9lcSkKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RD
b25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywg
Lm9wRXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQx
CisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0s
IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0
ZQorLm9wRXFOdWxsSW1tZWRpYXRlOgorICAgIGNpZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2ll
cSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIG9yaSB0MiwgdDEKKy5vcEVxTnVsbE5vdEltbWVk
aWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfbmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10s
IHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwg
dDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAg
YmluZXEgdDIsIHQzLCAub3BOZXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wTmVxU2xv
dworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFTbG93CisgICAgbG9hZGkgNFtQQ10sIHQy
CisgICAgY2luZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAg
ICBkaXNwYXRjaCg0KQorCisub3BOZXFTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9uZXEpCisgICAgZGlzcGF0Y2goNCkKKyAgICAKKworX2xsaW50X29wX25lcV9udWxsOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwg
dDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBi
aW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbEltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5v
cE5lcU51bGxOb3RJbW1lZGlhdGUKKy5vcE5lcU51bGxJbW1lZGlhdGU6CisgICAgY2luZXEgdDEs
IE51bGxUYWcsIHQyCisgICAgY2luZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKKyAgICBhbmRpIHQy
LCB0MQorLm9wTmVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFn
T2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMs
IDhdCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBzdHJpY3RFcShlcXVhbGl0eU9wZXJhdGlv
biwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5zbG93CisgICAgYmli
IHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIENlbGxUYWcsIC5ub3RTdHJpbmcK
KyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QxXSwgdDMKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBU
eXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZworICAgIGJiZXEgU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5z
bG93Cisubm90U3RyaW5nOgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGVxdWFsaXR5T3BlcmF0
aW9uKHQwLCB0MSwgdDApCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQy
LCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3Bh
dGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDQp
CitlbmQKKworX2xsaW50X29wX3N0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBz
dHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVz
dWx0IGVuZCwgX2xsaW50X2hlbHBlcl9zdHJpY3RlcSkKKworCitfbGxpbnRfb3BfbnN0cmljdGVx
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQs
IHJlc3VsdCkgY2luZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9oZWxwZXJfbnN0
cmljdGVxKQorCisKK19sbGludF9vcF9sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzcykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9sZXNzZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dyZWF0
ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcmVxOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcmVxKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3ByZV9pbmM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
SW50MzJUYWcsIC5vcFByZUluY1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MQorICAgIGJhZGRpbyAxLCB0MSwgLm9wUHJlSW5jU2xvdworICAgIHN0b3JlaSB0MSwg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcFByZUluY1Ns
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3ByZV9pbmMpCisgICAgZGlzcGF0Y2go
MikKKworCitfbGxpbnRfb3BfcHJlX2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywg
Lm9wUHJlRGVjU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisg
ICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlRGVjU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2RlYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19s
bGludF9vcF9wb3N0X2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10s
IHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCBJbnQzMlRhZywgLm9wUG9zdEluY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdEluY0Rv
bmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIs
IHQzCisgICAgYmFkZGlvIDEsIHQzLCAub3BQb3N0SW5jU2xvdworICAgIHN0b3JlaSBJbnQzMlRh
ZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQ
b3N0SW5jRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0SW5jU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9pbmMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfcG9zdF9kZWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0
MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
SW50MzJUYWcsIC5vcFBvc3REZWNTbG93CisgICAgYmllcSB0MCwgdDEsIC5vcFBvc3REZWNEb25l
CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBtb3ZlIHQyLCB0
MworICAgIGJzdWJpbyAxLCB0MywgLm9wUG9zdERlY1Nsb3cKKyAgICBzdG9yZWkgSW50MzJUYWcs
IFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIs
IHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorLm9wUG9z
dERlY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKworLm9wUG9zdERlY1Nsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfZGVjKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX3RvX2pzbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0
MiwgdDMpCisgICAgYmllcSB0MiwgSW50MzJUYWcsIC5vcFRvSnNudW1iZXJJc0ludAorICAgIGJp
YWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BUb0pzbnVtYmVyU2xvdworLm9wVG9Kc251bWJlcklz
SW50OgorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQz
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9Kc251
bWJlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RvX2pzbnVtYmVyKQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25lZ2F0ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVn
YXRlU3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdworICAg
IG5lZ2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisu
b3BOZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cK
KyAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0
MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNw
YXRjaCgzKQorCisub3BOZWdhdGVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9u
ZWdhdGUpCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKGlu
dGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9h
ZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIs
IHQwKQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAgIGJpbmVxIHQzLCBJ
bnQzMlRhZywgLm9wMk5vdEludAorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGludGVnZXJPcGVy
YXRpb25BbmRTdG9yZSh0MywgdDEsIHQwLCAuc2xvdywgdDIpCisgICAgZGlzcGF0Y2goNSkKKwor
Lm9wMU5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50
LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291bGQgYmUgYW55dGhpbmcuCisgICAgYmlhIHQyLCBMb3dl
c3RUYWcsIC5zbG93CisgICAgYmliIHQzLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUK
KyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MSwgZnQxCisgICAgam1w
IC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MSwgdDMs
IGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGZpaTJkIHQw
LCB0MiwgZnQwCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAs
IFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcDJOb3RJbnQ6CisgICAgIyBGaXJz
dCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgaXMgZGVm
aW5pdGVseSBub3QuCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgYmlhIHQzLCBMb3dlc3RUYWcs
IC5zbG93CisgICAgY2kyZCB0MCwgZnQwCisgICAgZmlpMmQgdDEsIHQzLCBmdDEKKyAgICBkb3Vi
bGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDIsIDhdCisgICAg
ZGlzcGF0Y2goNSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0
Y2goNSkKK2VuZAorCittYWNybyBiaW5hcnlPcChpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVy
YXRpb24sIGhlbHBlcikKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAo
aW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGludGVnZXJP
cGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcs
IFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXls
b2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAgICAgZG91YmxlT3Bl
cmF0aW9uLCBoZWxwZXIpCitlbmQKKworX2xsaW50X29wX2FkZDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYmFk
ZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBh
ZGRkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9hZGQpCisKKworX2xs
aW50X29wX211bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9y
ZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisg
ICAgICAgICAgICBjb25zdCBzY3JhdGNoID0gaW50MzJUYWcgICAjIFdlIGtub3cgdGhhdCB3ZSBj
YW4gcmV1c2UgdGhlIGludDMyVGFnIHJlZ2lzdGVyIHNpbmNlIGl0IGhhcyBhIGNvbnN0YW50Lgor
ICAgICAgICAgICAgbW92ZSByaWdodCwgc2NyYXRjaAorICAgICAgICAgICAgYm11bGlvIGxlZnQs
IHNjcmF0Y2gsIHNsb3cKKyAgICAgICAgICAgIGJ0aW56IHNjcmF0Y2gsIC5kb25lCisgICAgICAg
ICAgICBiaWx0IGxlZnQsIDAsIC5zbG93CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCAuc2xv
dworICAgICAgICAuZG9uZToKKyAgICAgICAgICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0
W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgUGF5bG9hZE9mZnNl
dFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbXVsKQorCisK
K19sbGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfc3ViKQorCisKK19sbGludF9vcF9kaXY6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQz
MlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgY2kyZCBsZWZ0LCBm
dDAKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQorICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0
MQorICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdEludAorICAgICAgICAgICAgc3Rv
cmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3Jl
aSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgam1wIC5k
b25lCisgICAgICAgIC5ub3RJbnQ6CisgICAgICAgICAgICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRl
eCwgOF0KKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9kaXYp
CisKKworX2xsaW50X29wX21vZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX21vZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGJpdE9wKG9w
ZXJhdGlvbiwgaGVscGVyLCBhZHZhbmNlKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MywgSW50
MzJUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGxvYWRpIDRb
UENdLCB0MgorICAgIG9wZXJhdGlvbih0MSwgdDAsIC5zbG93KQorICAgIHN0b3JlaSB0MywgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIs
IDhdCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxw
ZXIpCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKK2VuZAorCitfbGxpbnRfb3BfbHNoaWZ0OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCBzbG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9s
c2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX3JzaGlmdDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgcnNo
aWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfcnNoaWZ0LAorICAg
ICAgICA0KQorCisKK19sbGludF9vcF91cnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAg
dXJzaGlmdGkgbGVmdCwgcmlnaHQKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAg
ICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3Vyc2hpZnQsCisgICAgICAgIDQpCisK
KworX2xsaW50X29wX2JpdGFuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5kaSBsZWZ0LCByaWdodCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfYml0YW5kLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9i
aXR4b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRf
aGVscGVyX2JpdHhvciwKKyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0b3I6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3cpIG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0b3IsCisg
ICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG5vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wQml0bm90
U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQor
ICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMp
CisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2JpdG5vdCkK
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cp
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1
cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNIYXNJbnN0
YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDaGVj
a0hhc0luc3RhbmNlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY2hlY2tfaGFz
X2luc3RhbmNlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luc3RhbmNlb2Y6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMg
dGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisgICAgIyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDEsIHQwKQorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUlu
Zm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5j
ZW9mU2xvdworICAgIAorICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCisgICAgbG9hZGkgMTZb
UENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdworICAg
IGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBD
ZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgCisgICAgIyBSZWdpc3RlciBzdGF0
ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3ZlIDEsIHQwCisub3BJbnN0YW5j
ZW9mTG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIKKyAgICBsb2Fk
aSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCisgICAgYnBl
cSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZM
b29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9mRG9uZToKKyAgICBzdG9yZWkgQm9v
bGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wSW5zdGFuY2VvZlNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luc3RhbmNlb2YpCisgICAgZGlzcGF0Y2goNSkK
KworCitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X2lzX3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9p
c19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19udW1i
ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9p
c19udW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfc3RyaW5nOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfc3RyaW5n
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX29iamVjdDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX29iamVjdCkKKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19mdW5jdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Z1bmN0aW9uKQorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX2luOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
cmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9za2lw
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVz
b2x2ZV9za2lwKQorICAgIGRpc3BhdGNoKDUpCisKKworbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXpl
LCBzbG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERl
c3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgUHJvcGVydHkgaWRlbnRpZmll
ciBpbmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAjIDEyW1BDXSAgU3RydWN0dXJlIHBvaW50
ZXIsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgICMgMTZbUENd
ICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBn
ZW5lcmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQxCisgICAgYnBuZXEgdDEsIDEyW1BDXSwgc2xvdworICAgIGxvYWRpIDE2W1BDXSwg
dDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAorICAgIGxv
YWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAs
IHQxLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQor
ICAgIGxvYWRpIChzaXplIC0gMSkgKiA0W1BDXSwgdDAKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQz
LCB0MCkKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWw6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIHJlc29sdmVHbG9iYWwoNiwgLm9wUmVzb2x2ZUdsb2JhbFNsb3cpCisgICAgZGlz
cGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3BhdGNoKDYpCisKKworIyBHaXZlcyB5b3Ug
dGhlIHNjb3BlIGluIHQwLCB3aGlsZSBhbGxvd2luZyB5b3UgdG8gb3B0aW9uYWxseSBwZXJmb3Jt
IGFkZGl0aW9uYWwgY2hlY2tzIG9uIHRoZQorIyBzY29wZXMgYXMgdGhleSBhcmUgdHJhdmVyc2Vk
LiBzY29wZUNoZWNrKCkgaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHJlZ2lzdGVy
CisjIGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdpc3RlciB0aGF0IGNhbiBiZSB1c2VkIGZv
ciBzY3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAorIyB1c2UgdDMsIHNvIHlvdSBjYW4g
aG9sZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJlLgorbWFjcm8gZ2V0U2NvcGUoZGVCcnVpamluSW5k
ZXhPcGVyYW5kLCBzY29wZUNoZWNrKQorICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zm
c2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0MgorICAgIAor
ICAgIGJ0aXogdDIsIC5kb25lCisgICAgCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisg
ICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAubG9vcAor
ICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9vcAorICAg
IAorICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0aW9uUmVnaXN0ZXJbdDFdLCB0MQorCisg
ICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KKyAgICBiaWVx
IFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlvbgorICAg
IHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwg
dDAKKy5ub0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5k
b25lCisubG9vcDoKKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWlu
Tm9kZTo6bmV4dFt0MF0sIHQwCisgICAgc3ViaSAxLCB0MgorICAgIGJ0aW56IHQyLCAubG9vcAor
CisuZG9uZToKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYzoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0s
IHQzCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJlW3QzXSwgdDMK
KyAgICBnZXRTY29wZSgKKyAgICAgICAgMjBbUENdLAorICAgICAgICBtYWNybyAoc2NvcGUsIHNj
cmF0Y2gpCisgICAgICAgICAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3Njb3BlXSwg
c2NyYXRjaAorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVtzY3JhdGNoXSwg
dDMsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93CisgICAgICAgIGVuZCkKKyAgICBy
ZXNvbHZlR2xvYmFsKDcsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdykKKyAgICBkaXNwYXRj
aCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKKyAgICBk
aXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCisgICAgZGlzcGF0Y2goNykK
KworCitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
ICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZv
ciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgSW5kZXggb2YgcmVnaXN0ZXIgaW4gdGhlIHNjb3Bl
LgorICAgICMgMTJbUENdICBEZSBCcnVpamluIGluZGV4LgorICAgIGdldFNjb3BlKDEyW1BDXSwg
bWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9h
ZGkgOFtQQ10sIHQyCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisg
ICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRp
IFRhZ09mZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQy
LCA4XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3Jl
aSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAg
ICB2YWx1ZVByb2ZpbGUodDMsIHQwLCB0MSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9v
cF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZ2V0U2NvcGUoOFtQ
Q10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MywgdDIpCisgICAgbG9hZGkgNFtQQ10sIHQx
CisgICAgd3JpdGVCYXJyaWVyKHQzLCB0MikKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2Jq
ZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0s
IHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0b3JlaSB0Miwg
UGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
Z2V0X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0
MQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAg
IGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xv
YmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0
MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MQorICAgIHN0
b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDMsIDhdCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIHZhbHVlUHJvZmlsZSh0
MiwgdDEsIHQzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9nbG9iYWxfdmFy
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3Qw
XSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBsb2FkaSA0W1BDXSwgdDEK
KyAgICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W3QwLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfYmFzZSkKKyAgICBkaXNwYXRj
aCg1KQorCisKK19sbGludF9vcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4
aXN0cykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfYmFzZToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29s
dmVfd2l0aF9iYXNlKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0
aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcmVzb2x2ZV93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZ2V0
X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBo
aWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisg
ICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5n
ZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0
IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKKyAgICAj
IHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xv
dyBwYXRoLCB3aGljaCBpcyB3aGF0CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55
d2F5LgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93
KQorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0
b3JhZ2VbdDNdLCB0MAorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9w
R2V0QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAs
IHQyXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAgc3RvcmVp
IHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAzMltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0
MiwgdDEpCisgICAgZGlzcGF0Y2goOSkKKworLm9wR2V0QnlJZFNsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2dldF9ieV9pZCkKKyAgICBkaXNwYXRjaCg5KQorCisKK19sbGludF9v
cF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
OFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93CisgICAgbG9h
ZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDIKKyAgICBzdWJpIDEsIHQy
CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkg
dDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRB
cmd1bWVudHNMZW5ndGhTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJn
dW1lbnRzX2xlbmd0aCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaWQ6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2
W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywg
dDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkcCBKU09i
amVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQwLCB0MikKKyAgICB3cml0ZUJhcnJpZXIo
dDAsIHQyKQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KKyAgICBzdG9yZWkgdDIs
IFBheWxvYWRPZmZzZXRbdDMsIHQxXQorICAgIGRpc3BhdGNoKDkpCisKKy5vcFB1dEJ5SWRTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaWQpCisgICAgZGlzcGF0Y2go
OSkKKworCittYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQx
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQ
dXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgYnBuZXEgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGFkZGl0aW9uYWxDaGVja3ModDEs
IHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZHAgSlNP
YmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBhZGRwIHQxLCB0MworICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQx
LCB0MikKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSAyNFtQQ10sIHQx
CisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlcCB0MSwgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0KKyAgICBkaXNwYXRjaCg5KQorZW5kCisKK19sbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9s
ZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWw6CisgICAgcHV0QnlJZFRyYW5zaXRpb24oCisgICAgICAgIG1hY3Jv
IChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCisgICAgICAgICAgICBjb25zdCBwcm90b0Nl
bGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBm
b3IgdGhlIHByb3RvCisgICAgICAgIAorICAgICAgICAgICAgbG9hZHAgMjhbUENdLCBzY3JhdGNo
CisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisg
ICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0
Y2gKKyAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkK
KyAgICAgICAgICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRT
dHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorICAgICAgICAubG9vcDoKKyAgICAgICAgICAgIGxv
YWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0s
IHByb3RvQ2VsbAorICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0Nl
bGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0
Y2hdLCBzbG93CisgICAgICAgICAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICAgICAgICAgIGJpbmVx
IFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRh
ZywgLmxvb3AKKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCkKKworCitfbGxpbnRfb3BfZGVs
X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfZGVsX2J5X2lkKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV92YWw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAg
IGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQodDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNsb3cpCisgICAgbG9hZHAgSlNHbG9iYWxE
YXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAgYnBuZXEgW3Qw
XSwgdDIsIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MF0s
IHQzCisgICAgYmlhZXEgdDEsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9wR2V0QnlW
YWxTbG93CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3Zl
Y3RvciArIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6
bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisgICAgYmllcSB0MiwgRW1w
dHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBs
b2FkaSAxNltQQ10sIHQwCisgICAgdmFsdWVQcm9maWxlKHQyLCB0MSwgdDApCisgICAgZGlzcGF0
Y2goNSkKKworLm9wR2V0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9n
ZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2dldF9hcmd1bWVudF9i
eV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRpIDEyW1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFs
dWVUYWcsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQodDEsIEludDMyVGFnLCB0MiwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cpCisgICAg
YWRkaSAxLCB0MgorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0s
IHQxCisgICAgYmlhZXEgdDIsIHQxLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIG5lZ2kg
dDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBU
YWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsg
UGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtj
ZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAg
IGRpc3BhdGNoKDQpCisKKy5vcEdldEFyZ3VtZW50QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX2dldF9ieV9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
MTJbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFn
LCB0MSwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGJwbmVx
IHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxs
VGFnLCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MAorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1f
Y2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSAyNFtQQ10s
IHQwCisgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAorICAgIHN1YmkgMSwgdDAKKyAgICBiaWFl
cSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFibGVTbG90c1t0M10sIC5v
cEdldEJ5UG5hbWVTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Qy
XSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVp
IHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg3KQorCisub3BHZXRCeVBuYW1lU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3BuYW1lKQorICAgIGRpc3BhdGNoKDcpCisK
KworX2xsaW50X29wX3B1dF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFn
LCB0MSwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBJbnQzMlRhZywgdDIsIC5vcFB1dEJ5VmFsU2xvdykK
KyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xv
YmFsRGF0YVt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZv
W3QwXSwgdDAKKyAgICBicG5lcSBbdDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93CisgICAgYmlhZXEg
dDIsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QxXSwgLm9wUHV0QnlWYWxTbG93CisgICAgbG9h
ZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QxXSwgdDAKKyAgICBiaWVxIEFycmF5U3RvcmFnZTo6bV92
ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wUHV0QnlWYWxF
bXB0eQorLm9wUHV0QnlWYWxTdG9yZVJlc3VsdDoKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQxLCB0MykKKyAgICB3cml0ZUJhcnJpZXIo
dDEsIHQzKQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNl
dFt0MCwgdDIsIDhdCisgICAgc3RvcmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5
bG9hZE9mZnNldFt0MCwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wUHV0QnlWYWxFbXB0
eToKKyAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KKyAg
ICBiaWIgdDIsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdLCAub3BQdXRCeVZhbFN0b3JlUmVz
dWx0CisgICAgYWRkaSAxLCB0MiwgdDEKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV9s
ZW5ndGhbdDBdCisgICAgam1wIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQKKworLm9wUHV0QnlWYWxT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfdmFsKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX2RlbF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWxfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX3B1dF9ieV9pbmRleDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pbmRleCkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9wdXRfZ2V0dGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2dldHRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9wdXRfc2V0dGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcHV0X3NldHRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9sb29wOgorICAgIG5vcAorX2xsaW50X29wX2ptcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgZGlzcGF0Y2hCcmFuY2goNFtQQ10pCisKKworX2xsaW50X29wX2ptcF9zY29wZXM6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9qbXBfc2NvcGVz
KQorICAgIGRpc3BhdGNoKDApCisKKworbWFjcm8ganVtcFRydWVPckZhbHNlKGNvbmRpdGlvbk9w
LCBzbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQxLCBCb29sZWFuVGFnLCB0MCwgLnNsb3cpCisgICAgY29uZGl0aW9uT3AodDAsIC50
YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4
W1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihzbG93KQorICAgIGRpc3BhdGNoKDApCitl
bmQKKworX2xsaW50X29wX2xvb3BfaWZfdHJ1ZToKKyAgICBub3AKK19sbGludF9vcF9qdHJ1ZToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAganVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNy
byAodmFsdWUsIHRhcmdldCkgYnRpbnogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfanRydWUpCisKKworX2xsaW50X29wX2xvb3BfaWZfZmFsc2U6CisgICAgbm9wCitf
bGxpbnRfb3BfamZhbHNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFs
c2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGl6IHZhbHVlLCB0YXJnZXQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2pmYWxzZSkKKworCittYWNybyBlcXVhbE51bGwoY2Vs
bEhhbmRsZXIsIGltbWVkaWF0ZUhhbmRsZXIpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9h
ZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5pbW1lZGlhdGUKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBjZWxsSGFuZGxlcihTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0Ml0sIC50YXJnZXQpCisgICAgZGlzcGF0
Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLmltbWVkaWF0
ZToKKyAgICBvcmkgMSwgdDEKKyAgICBpbW1lZGlhdGVIYW5kbGVyKHQxLCAudGFyZ2V0KQorICAg
IGRpc3BhdGNoKDMpCitlbmQKKworX2xsaW50X29wX2plcV9udWxsOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJu
eiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFj
cm8gKHZhbHVlLCB0YXJnZXQpIGJpZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisgICAg
CisKK19sbGludF9vcF9qbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFs
TnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0YnogdmFsdWUsIE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0
KSBiaW5lcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKworCitfbGxpbnRfb3Bfam5lcV9w
dHI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRp
IDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9w
Sm5lcVB0ckJyYW5jaAorICAgIGJwZXEgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEsIC5v
cEpuZXFQdHJGYWxsVGhyb3VnaAorLm9wSm5lcVB0ckJyYW5jaDoKKyAgICBkaXNwYXRjaEJyYW5j
aCgxMltQQ10pCisub3BKbmVxUHRyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2goNCkKKworCitt
YWNybyBjb21wYXJlKGludGVnZXJDb21wYXJlLCBkb3VibGVDb21wYXJlLCBoZWxwZXIpCisgICAg
bG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MiwgdDAsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0
MiwgdDMpCisgICAgYmluZXEgdDAsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDIs
IEludDMyVGFnLCAub3AyTm90SW50CisgICAgaW50ZWdlckNvbXBhcmUodDEsIHQzLCAuanVtcFRh
cmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisub3AxTm90SW50OgorICAgIGJpYSB0MCwgTG93ZXN0
VGFnLCAuc2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisg
ICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDMsIGZ0MQorICAgIGptcCAu
b3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDMsIHQyLCBm
dDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBmaWkyZCB0MSwgdDAsIGZ0MAorICAgIGRvdWJsZUNv
bXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDJOb3RJ
bnQ6CisgICAgY2kyZCB0MSwgZnQwCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAg
ZmlpMmQgdDMsIHQyLCBmdDEKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdl
dCkKKyAgICBkaXNwYXRjaCg0KQorCisuanVtcFRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgx
MltQQ10pCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDAp
CitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfbGVzczoKKyAgICBub3AKK19sbGludF9vcF9qbGVz
czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2psZXNzKQorCisKK19sbGludF9vcF9qbmxlc3M6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVu
ZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmxlc3MpCisKKworX2xsaW50X29wX2xvb3BfaWZf
Z3JlYXRlcjoKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJp
Z3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
dGFyZ2V0KSBiZGd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVs
cGVyX2pncmVhdGVyKQorCisKK19sbGludF9vcF9qbmdyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
aWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgdGFyZ2V0KSBiZGx0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9qbmdyZWF0ZXIpCisKKworX2xsaW50X29wX2xvb3BfaWZfbGVzc2VxOgorICAg
IG5vcAorX2xsaW50X29wX2psZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBh
cmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0
ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3Nl
cSkKKworCitfbGxpbnRfb3Bfam5sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNv
bXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJp
Z2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRn
dHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVz
c2VxKQorCisKK19sbGludF9vcF9sb29wX2lmX2dyZWF0ZXJlcToKKyAgICBub3AKK19sbGludF9v
cF9qZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQg
ZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxIGxlZnQsIHJp
Z2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVhdGVyZXEpCisKKwor
X2xsaW50X29wX2puZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJl
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHR1biBs
ZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXJl
cSkKKworCitfbGxpbnRfb3BfbG9vcF9oaW50OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
aGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bf
c3dpdGNoX2ltbToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0Mgor
ICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0
MCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
cmFyZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMgICAj
IEZJWE1FOiB3b3VsZCBiZSBuaWNlIHRvIHBlZXBob2xlIHRoaXMhCisgICAgbG9hZHAgQ29kZUJs
b2NrOjpSYXJlRGF0YTo6bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywg
Lm9wU3dpdGNoSW1tTm90SW50CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQw
CisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNp
emVPZmZzZXRbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1
bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQzCisgICAg
bG9hZGkgW3QzLCB0MCwgNF0sIHQxCisgICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91
Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCisKKy5vcFN3aXRjaEltbU5vdElu
dDoKKyAgICBiaWIgdDEsIExvd2VzdFRhZywgLm9wU3dpdGNoSW1tU2xvdyAgIyBHbyB0byBzbG93
IHBhdGggaWYgaXQncyBhIGRvdWJsZS4KKy5vcFN3aXRjaEltbUZhbGxUaHJvdWdoOgorICAgIGRp
c3BhdGNoQnJhbmNoKDhbUENdKQorCisub3BTd2l0Y2hJbW1TbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9zd2l0Y2hfaW1tKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29w
X3N3aXRjaF9jaGFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQy
CisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEs
IHQwKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6
bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0Mwor
ICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxl
cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgYWRkcCB0MywgdDIKKyAgICBiaW5l
cSB0MSwgQ2VsbFRhZywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsg
VHlwZUluZm86Om1fdHlwZVt0MV0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3Vn
aAorICAgIGxvYWRwIEpTU3RyaW5nOjptX3ZhbHVlW3QwXSwgdDAKKyAgICBiaW5lcSBTdHJpbmdJ
bXBsOjptX2xlbmd0aFt0MF0sIDEsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRw
IFN0cmluZ0ltcGw6Om1fZGF0YThbdDBdLCB0MQorICAgIGJ0aW56IFN0cmluZ0ltcGw6Om1faGFz
aEFuZEZsYWdzW3QwXSwgSGFzaEZsYWdzOEJpdEJ1ZmZlciwgLm9wU3dpdGNoQ2hhcjhCaXQKKyAg
ICBsb2FkaCBbdDFdLCB0MAorICAgIGptcCAub3BTd2l0Y2hDaGFyUmVhZHkKKy5vcFN3aXRjaENo
YXI4Qml0OgorICAgIGxvYWRiIFt0MV0sIHQwCisub3BTd2l0Y2hDaGFyUmVhZHk6CisgICAgc3Vi
aSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBU
YWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hDaGFy
RmFsbFRocm91Z2gKKyAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBW
ZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGxvYWRpIFt0MiwgdDAsIDRdLCB0MQorICAg
IGJ0aXogdDEsIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRo
T2Zmc2V0KHQxKQorCisub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFu
Y2goOFtQQ10pCisKKworX2xsaW50X29wX3N3aXRjaF9zdHJpbmc6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfc3RyaW5nKQorICAgIGRp
c3BhdGNoKDApCisKKworX2xsaW50X29wX25ld19mdW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBidGl6IDEyW1BDXSwgLm9wTmV3RnVuY1VuY2hlY2tlZAorICAgIGxvYWRpIDRbUENdLCB0
MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wTmV3
RnVuY0RvbmUKKy5vcE5ld0Z1bmNVbmNoZWNrZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX25ld19mdW5jKQorLm9wTmV3RnVuY0RvbmU6CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfbmV3X2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfbmV3X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8g
ZG9DYWxsKGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQx
CisgICAgbG9hZHAgTExJbnRDYWxsTGlua0luZm86OmNhbGxlZVt0MV0sIHQyCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BDYWxsU2xvdykKKyAg
ICBiaW5lcSB0MywgdDIsIC5vcENhbGxTbG93CisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGFk
ZHAgMjQsIFBDCisgICAgbHNoaWZ0aSAzLCB0MworICAgIGFkZHAgY2ZyLCB0MyAgIyB0MyBjb250
YWlucyB0aGUgbmV3IHZhbHVlIG9mIGNmcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fc2NvcGVD
aGFpblt0Ml0sIHQwCisgICAgc3RvcmVpIHQyLCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQor
ICAgIHN0b3JlaSB0MCwgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgbG9hZGkg
OCAtIDI0W1BDXSwgdDIKKyAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRb
Y2ZyXQorICAgIHN0b3JlcCBjZnIsIENhbGxlckZyYW1lW3QzXQorICAgIHN0b3JlaSB0MiwgQXJn
dW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIENlbGxUYWcsIENhbGxl
ZSArIFRhZ09mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiArIFRhZ09m
ZnNldFt0M10KKyAgICBtb3ZlIHQzLCBjZnIKKyAgICBjYWxsIExMSW50Q2FsbExpbmtJbmZvOjpt
YWNoaW5lQ29kZVRhcmdldFt0MV0KKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKy5vcENhbGxT
bG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBoZWxwZXIpCitlbmQKKworX2xsaW50X29wX2Nh
bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRfaGVscGVyX2NhbGwp
CisKKworX2xsaW50X29wX2NvbnN0cnVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9D
YWxsKF9sbGludF9oZWxwZXJfY29uc3RydWN0KQorCisKK19sbGludF9vcF9jYWxsX3ZhcmFyZ3M6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBfbGxpbnRfaGVs
cGVyX2NhbGxfdmFyYXJncykKKworCitfbGxpbnRfb3BfY2FsbF9ldmFsOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICAKKyAgICAjIEV2YWwgaXMgZXhlY3V0ZWQgaW4gb25lIG9mIHR3byBtb2Rl
czoKKyAgICAjCisgICAgIyAxKSBXZSBmaW5kIHRoYXQgd2UncmUgcmVhbGx5IGludm9raW5nIGV2
YWwoKSBpbiB3aGljaCBjYXNlIHRoZQorICAgICMgICAgZXhlY3V0aW9uIGlzIHBlcmZvbWVkIGVu
dGlyZWx5IGluc2lkZSB0aGUgaGVscGVyLCBhbmQgaXQKKyAgICAjICAgIHJldHVybnMgdGhlIFBD
IG9mIGEgZnVuY3Rpb24gdGhhdCBqdXN0IHJldHVybnMgdGhlIHJldHVybiB2YWx1ZQorICAgICMg
ICAgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAjCisgICAgIyAyKSBXZSBmaW5kIHRoYXQg
d2UncmUgaW52b2tpbmcgc29tZXRoaW5nIGNhbGxlZCBldmFsKCkgdGhhdCBpcyBub3QKKyAgICAj
ICAgIHRoZSByZWFsIGV2YWwuIFRoZW4gdGhlIGhlbHBlciByZXR1cm5zIHRoZSBQQyBvZiB0aGUg
dGhpbmcgdG8KKyAgICAjICAgIGNhbGwsIGFuZCB3ZSBjYWxsIGl0LgorICAgICMKKyAgICAjIFRo
aXMgYWxsb3dzIHVzIHRvIGhhbmRsZSB0d28gY2FzZXMsIHdoaWNoIHdvdWxkIHJlcXVpcmUgYSB0
b3RhbCBvZgorICAgICMgdXAgdG8gZm91ciBwaWVjZXMgb2Ygc3RhdGUgdGhhdCBjYW5ub3QgYmUg
ZWFzaWx5IHBhY2tlZCBpbnRvIHR3bworICAgICMgcmVnaXN0ZXJzIChDIGZ1bmN0aW9ucyBjYW4g
cmV0dXJuIHVwIHRvIHR3byByZWdpc3RlcnMsIGVhc2lseSk6CisgICAgIworICAgICMgLSBUaGUg
Y2FsbCBmcmFtZSByZWdpc3Rlci4gVGhpcyBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4gbW9kaWZp
ZWQKKyAgICAjICAgYnkgdGhlIGhlbHBlciwgYnV0IHRoZSBjb252ZW50aW9uIGlzIHRoYXQgaXQg
cmV0dXJucyBpdC4gSXQncyBub3QKKyAgICAjICAgdG90YWxseSBjbGVhciBpZiB0aGF0J3MgbmVj
ZXNzYXJ5LCBzaW5jZSB0aGUgY2ZyIGlzIGNhbGxlZSBzYXZlLgorICAgICMgICBCdXQgdGhhdCdz
IG91ciBzdHlsZSBpbiB0aGlzIGhlcmUgaW50ZXJwcmV0ZXIgc28gd2Ugc3RpY2sgd2l0aCBpdC4K
KyAgICAjCisgICAgIyAtIEEgYml0IHRvIHNheSBpZiB0aGUgaGVscGVyIHN1Y2Nlc3NmdWxseSBl
eGVjdXRlZCB0aGUgZXZhbCBhbmQgaGFzCisgICAgIyAgIHRoZSByZXR1cm4gdmFsdWUsIG9yIGRp
ZCBub3QgZXhlY3V0ZSB0aGUgZXZhbCBidXQgaGFzIGEgUEMgZm9yIHVzCisgICAgIyAgIHRvIGNh
bGwuCisgICAgIworICAgICMgLSBFaXRoZXI6CisgICAgIyAgIC0gVGhlIEpTIHJldHVybiB2YWx1
ZSAodHdvIHJlZ2lzdGVycyksIG9yCisgICAgIworICAgICMgICAtIFRoZSBQQyB0byBjYWxsLgor
ICAgICMKKyAgICAjIEl0IHR1cm5zIG91dCB0byBiZSBlYXNpZXIgdG8ganVzdCBhbHdheXMgaGF2
ZSB0aGlzIHJldHVybiB0aGUgY2ZyCisgICAgIyBhbmQgYSBQQyB0byBjYWxsLCBhbmQgdGhhdCBQ
QyBtYXkgYmUgYSBkdW1teSB0aHVuayB0aGF0IGp1c3QKKyAgICAjIHJldHVybnMgdGhlIEpTIHZh
bHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAgCisgICAgc2xvd1BhdGhGb3JDYWxsKDQs
IF9sbGludF9oZWxwZXJfY2FsbF9ldmFsKQorCisKK19sbGludF9nZW5lcmljX3JldHVybl9wb2lu
dDoKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKworX2xsaW50X29wX3RlYXJfb2ZmX2FjdGl2
YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxv
YWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1
ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkCisgICAgYmllcSBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZAor
Lm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl90ZWFyX29mZl9hY3RpdmF0aW9uKQorLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkOgor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3RlYXJfb2ZmX2FyZ3VtZW50czoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3ViaSAxLCB0MCAgICMg
R2V0IHRoZSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIKKyAgICBiaWVxIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQorLm9wVGVh
ck9mZkFyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBkb1Jl
dHVybigpCisgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICBsb2FkcCBDYWxsZXJGcmFt
ZVtjZnJdLCBjZnIKKyAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAg
ICByZXQKK2VuZAorCitfbGxpbnRfb3BfcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
aGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigpCisKKworX2xs
aW50X29wX2NhbGxfcHV0X3Jlc3VsdDoKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4
W1BDXSwgdDMKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3Jl
aSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHZhbHVlUHJvZmlsZSh0MSwgdDAs
IHQzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkgIyBOZWVkcyB0byBiZSBoZXJlIGJlY2F1c2UgaXQg
d291bGQgY2xvYmJlciB0MSwgdDAKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXRf
b2JqZWN0X29yX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9K
SVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BSZXRPYmplY3RP
clRoaXNOb3RPYmplY3QKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAg
ICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVj
dFR5cGUsIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAorICAgIGRvUmV0dXJuKCkKKworLm9w
UmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0OgorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigpCisKKworX2xsaW50
X29wX21ldGhvZF9jaGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBpZ25vcmUg
bWV0aG9kIGNoZWNrcyBhbmQgdXNlIG5vcm1hbCBnZXRfYnlfaWQgb3B0aW1pemF0aW9ucy4KKyAg
ICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zdHJjYXQ6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zdHJjYXQpCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFRvUHJpbWl0aXZl
SXNJbW0KKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYm5lcSBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwg
Lm9wVG9QcmltaXRpdmVTbG93Q2FzZQorLm9wVG9QcmltaXRpdmVJc0ltbToKKyAgICBzdG9yZWkg
dDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvUHJpbWl0aXZlU2xvd0Nhc2U6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RvX3ByaW1pdGl2ZSkKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9nZXRfcG5hbWVzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X3BuYW1lcykKKyAgICBkaXNwYXRjaCgwKSAjIFRo
ZSBoZWxwZXIgZWl0aGVyIGFkdmFuY2VzIHRoZSBQQyBvciBqdW1wcyB1cyB0byBzb21ld2hlcmUg
ZWxzZS4KKworCitfbGxpbnRfb3BfbmV4dF9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRpIDE2W1BDXSwgdDIKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MAorICAgIGJpZXEgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MiwgOF0sIC5vcE5leHRQbmFtZUVuZAorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MgorICAgIGxvYWRwIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6Om1fanNTdHJpbmdzW3QyXSwgdDMKKyAgICBsb2FkaSBbdDMsIHQwLCA4XSwgdDMK
KyAgICBhZGRpIDEsIHQwCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhd
CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIs
IHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxv
YWRpIDhbUENdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgYnBuZXEgdDEsIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xv
dworICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hh
aW5bdDJdLCB0MAorICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCisg
ICAgYnRweiBbdDBdLCAub3BOZXh0UG5hbWVUYXJnZXQKKy5vcE5leHRQbmFtZUNoZWNrUHJvdG90
eXBlTG9vcDoKKyAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbdDFd
LCBOdWxsVGFnLCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgU3RydWN0dXJlOjptX3Byb3Rv
dHlwZSArIFBheWxvYWRPZmZzZXRbdDFdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDJdLCB0MQorICAgIGJwbmVxIHQxLCBbdDBdLCAub3BOZXh0UG5hbWVTbG93CisgICAgYWRk
cCA0LCB0MAorICAgIGJ0cG56IFt0MF0sIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcAor
Lm9wTmV4dFBuYW1lVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDI0W1BDXSkKKworLm9wTmV4
dFBuYW1lRW5kOgorICAgIGRpc3BhdGNoKDcpCisKKy5vcE5leHRQbmFtZVNsb3c6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX25leHRfcG5hbWUpICMgVGhpcyBlaXRoZXIga2VlcHMgdGhl
IFBDIHdoZXJlIGl0IHdhcyAoY2F1c2luZyB1cyB0byBsb29wKSBvciBzZXRzIGl0IHRvIHRhcmdl
dC4KKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9wdXNoX3Njb3BlOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9zY29wZSkKKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3Bfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3Bfc2NvcGUpCisgICAgZGlzcGF0
Y2goMSkKKworCitfbGxpbnRfb3BfcHVzaF9uZXdfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX25ld19zY29wZSkKKyAgICBkaXNw
YXRjaCg0KQorCisKK19sbGludF9vcF9jYXRjaDoKKyAgICAjIFRoaXMgaXMgd2hlcmUgd2UgZW5k
IHVwIGZyb20gdGhlIEpJVCdzIHRocm93IHRyYW1wb2xpbmUgKGJlY2F1c2UgdGhlCisgICAgIyBt
YWNoaW5lIGNvZGUgcmV0dXJuIGFkZHJlc3Mgd2lsbCBiZSBzZXQgdG8gX2xsaW50X29wX2NhdGNo
KSwgYW5kIGZyb20KKyAgICAjIHRoZSBpbnRlcnByZXRlcidzIHRocm93IHRyYW1wb2xpbmUgKHNl
ZSBfbGxpbnRfdGhyb3dfdHJhbXBvbGluZSkuCisgICAgIyBUaGUgSklUIHRocm93aW5nIHByb3Rv
Y29sIGNhbGxzIGZvciB0aGUgY2ZyIHRvIGJlIGluIHQwLiBUaGUgdGhyb3dpbmcKKyAgICAjIGNv
ZGUgbXVzdCBoYXZlIGtub3duIHRoYXQgd2Ugd2VyZSB0aHJvd2luZyB0byB0aGUgaW50ZXJwcmV0
ZXIsIGFuZCBoYXZlCisgICAgIyBzZXQgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBD
Rm9yVGhyb3cuCisgICAgbW92ZSB0MCwgY2ZyCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xv
YmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRl
clBDRm9yVGhyb3dbdDNdLCBQQworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsg
UGF5bG9hZE9mZnNldFt0M10sIHQwCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24g
KyBUYWdPZmZzZXRbdDNdLCB0MQorICAgIHN0b3JlaSAwLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlv
biArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIEpTR2xvYmFs
RGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSAgICAgICAKKyAgICBsb2FkaSA0W1BDXSwg
dDIKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkg
dDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHRyYWNlRXhlY3V0aW9uKCkgICMgVGhpcyBu
ZWVkcyB0byBiZSBoZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjbG9iYmVyIHQwLCB0MSwg
dDIsIHQzIGFib3ZlLgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGhyb3cpCisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGhyb3dfcmVm
ZXJlbmNlX2Vycm9yKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2pzcjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYWRkaSAzICogNCwgUEMs
IHQxCisgICAgc3RvcmVpIHQxLCBbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BD
XSkKKworCitfbGxpbnRfb3Bfc3JldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgbG9hZHAgW2NmciwgdDAsIDhdLCBQQworICAgIGRpc3BhdGNoKDApCisK
KworX2xsaW50X29wX2RlYnVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfZGVidWcpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJv
ZmlsZV93aWxsX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNr
RnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIHQwCisgICAgYnRweiBbdDBdLCAu
b3BQcm9maWxlV2lsbENhbGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2Zp
bGVfd2lsbF9jYWxsKQorLm9wUHJvZmlsZVdpbGxDYWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF9wcm9maWxlX2RpZF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkcCBKSVRTdGFja0ZyYW1lOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCB0MAor
ICAgIGJ0cHogW3QwXSwgLm9wUHJvZmlsZVdpbGxDYWxsRG9uZQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQorLm9wUHJvZmlsZURpZENhbGxEb25lOgorICAg
IGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2VuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X3Rocm93X2Zyb21f
aGVscGVyX3RyYW1wb2xpbmU6CisgICAgIyBXaGVuIHRocm93aW5nIGZyb20gdGhlIGludGVycHJl
dGVyIChpLmUuIHRocm93aW5nIGZyb20gTExJbnRIZWxwZXJzKSwgc28KKyAgICAjIHRoZSB0aHJv
dyB0YXJnZXQgaXMgbm90IG5lY2Vzc2FyaWx5IGludGVycHJldGVkIGNvZGUsIHdlIGNvbWUgdG8g
aGVyZS4KKyAgICAjIFRoaXMgZXNzZW50aWFsbHkgZW11bGF0ZXMgdGhlIEpJVCdzIHRocm93aW5n
IHByb3RvY29sLgorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQor
ICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGpt
cCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKK19sbGludF90
aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lOgorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0Fm
dGVyQ2FsbCh0MikKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEK
KyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBq
bXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCisjIExhc3Rs
eSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9y
dCBhbGwgb3Bjb2Rlcy4KKyMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1
c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQKKyMgYXMgbXVjaC4KKworbWFjcm8g
bm90U3VwcG9ydGVkKCkKKyAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBjcmFzaCgpCisg
ICAgZWxzZQorICAgICAgICAjIFdlIHNob3VsZCB1c2Ugd2hhdGV2ZXIgdGhlIHNtYWxsZXN0IHBv
c3NpYmxlIGluc3RydWN0aW9uIGlzLCBqdXN0IHRvCisgICAgICAgICMgZW5zdXJlIHRoYXQgdGhl
cmUgaXMgYSBnYXAgYmV0d2VlbiBpbnN0cnVjdGlvbiBsYWJlbHMuIElmIG11bHRpcGxlCisgICAg
ICAgICMgc21hbGxlc3QgaW5zdHJ1Y3Rpb25zIGV4aXN0LCB3ZSBzaG91bGQgcGljayB0aGUgb25l
IHRoYXQgaXMgbW9zdAorICAgICAgICAjIGxpa2VseSByZXN1bHQgaW4gZXhlY3V0aW9uIGJlaW5n
IGhhbHRlZC4gQ3VycmVudGx5IHRoYXQgaXMgdGhlIGJyZWFrCisgICAgICAgICMgaW5zdHJ1Y3Rp
b24gb24gYWxsIGFyY2hpdGVjdHVyZXMgd2UncmUgaW50ZXJlc3RlZCBpbi4gKEJyZWFrIGlzIGlu
dDMKKyAgICAgICAgIyBvbiBJbnRlbCwgd2hpY2ggaXMgMSBieXRlLCBhbmQgYmtwdCBvbiBBUk12
Nywgd2hpY2ggaXMgMiBieXRlcy4pCisgICAgICAgIGJyZWFrCisgICAgZW5kCitlbmQKKworX2xs
aW50X29wX2dldF9hcnJheV9sZW5ndGg6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29w
X2dldF9ieV9pZF9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX2N1c3RvbV9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX2N1c3RvbV9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX2N1c3RvbV9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dl
dHRlcl9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dl
dHRlcl9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dl
dHRlcl9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfcHJv
dG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9zZWxmOgorICAg
IG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfc3RyaW5nX2xlbmd0aDoKKyAgICBub3RT
dXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX2dlbmVyaWM6CisgICAgbm90U3VwcG9y
dGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9yZXBsYWNlOgorICAgIG5vdFN1cHBvcnRlZCgp
CisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbjoKKyAgICBub3RTdXBwb3J0ZWQoKQor
CisKKyMgSW5kaWNhdGUgdGhlIGVuZCBvZiBMTEludC4KK19sbGludF9lbmQ6CisgICAgY3Jhc2go
KQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKKyNpZiBFTkFC
TEUoTExJTlQpCisKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKworI2luY2x1
ZGUgIkxMSW50QXNzZW1ibHkuaCIKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMb3dMZXZlbEludGVycHJldGVy
X2gKKyNkZWZpbmUgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIk9wY29kZS5oIgorCisjZGVm
aW5lIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wob3Bjb2RlLCBsZW5ndGgpIGV4dGVybiAiQyIgdm9p
ZCBsbGludF8jI29wY29kZSgpOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChMTElOVF9JTlNUUlVD
VElPTl9ERUNMKTsKKyN1bmRlZiBMTElOVF9JTlNUUlVDVElPTl9ERUNMCisKK2V4dGVybiAiQyIg
dm9pZCBsbGludF9iZWdpbigpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2VuZCgpOworZXh0ZXJu
ICJDIiB2b2lkIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGlu
dF9ldmFsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxf
YXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZ2VuZXJpY19yZXR1cm5f
cG9pbnQoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9s
aW5lKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGlu
ZSgpOworCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTG93TGV2ZWxJbnRl
cnByZXRlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5y
YgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVyCisgIGRlZiBpbml0aWFsaXpl
KG5hbWUpCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFybVY3T3BlcmFuZAor
ICAgIEBuYW1lCisgIGVuZAorZW5kCisKK0FSTXY3X0RBVEFfUkVHID0gU3BlY2lhbFJlZ2lzdGVy
Lm5ldygiaXAiKQorQVJNdjdfQUREUl9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyMyIpCisK
K2RlZiBtb3ZlSW1tZWRpYXRlKHZhbHVlLCByZWdpc3RlcikKKyAgIyBDdXJyZW50bHkgd2Ugb25s
eSBoYW5kbGUgdGhlIHNpbXBsZSBjYXNlcywgYW5kIGZhbGwgYmFjayB0byBtb3YvbW92dCBmb3Ig
dGhlIGNvbXBsZXggb25lcy4KKyAgaWYgdmFsdWUgPj0gMCAmJiB2YWx1ZSA8IDI1NgorICAgICRh
c20ucHV0cyAibW92dyBcIyN7dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgIGVs
c2lmICh+dmFsdWUpID49IDAgJiYgKH52YWx1ZSkgPCAyNTYKKyAgICAkYXNtLnB1dHMgIm12bncg
XCMje352YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzZQorICAgICRhc20u
cHV0cyAibW92dyBcIyN7dmFsdWUgJiAweGZmZmZ9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0i
CisgICAgaWYgKHZhbHVlICYgMHhmZmZmMDAwMCkgIT0gMAorICAgICAgJGFzbS5wdXRzICJtb3Z0
IFwjI3t2YWx1ZSA+PiAxNn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAg
ZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2Fz
ZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiCisgICAgICAicjAiCisgICAgd2hlbiAi
dDEiLCAiYTEiLCAicjEiCisgICAgICAicjEiCisgICAgd2hlbiAidDIiLCAiYTIiCisgICAgICAi
cjIiCisgICAgd2hlbiAiYTMiCisgICAgICAicjMiCisgICAgd2hlbiAidDMiCisgICAgICAicjQi
CisgICAgd2hlbiAidDQiCisgICAgICAicjciCisgICAgd2hlbiAiY2ZyIgorICAgICAgInI1Igor
ICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJl
cGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxl
TWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xv
YWRTdG9yZVdyYXAKKyAgICB5aWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQK
KyAgZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIsICJmciIK
KyAgICAgICJkMCIKKyAgICB3aGVuICJmcjEiLAorICAgICAgImQxIgorICAgIHdoZW4gImZyMiIK
KyAgICAgICJkMiIKKyAgICB3aGVuICJmcjMiCisgICAgICAiZDMiCisgICAgd2hlbiAiZnI0Igor
ICAgICAgImQ0IgorICAgIHdoZW4gImZyNSIKKyAgICAgICJkNSIKKyAgICBlbHNlCisgICAgICBy
YWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9y
eU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAg
ICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAg
eWllbGQgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3T3Bl
cmFuZAorICAgIHJhaXNlICJJbnZhbGlkIGltbWVkaWF0ZSAje3ZhbHVlfSIgaWYgdmFsdWUgPCAw
IG9yIHZhbHVlID4gMjU1CisgICAgIiMke3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQ
cmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2li
bGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3
TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkIHNlbGYKKyAgZW5kCitlbmQKKworbW9kdWxlIEFSTXY3
QWRkcmVzc1V0aWxpdGllcworICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgc2VsZi5hcm1W
N1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICAkYXNtLnB1dHMgIlx0bGRyICN7c2Vs
Zi5hcm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFuZH0sICN7QVJNdjdfREFUQV9SRUcuYXJtVjdPcGVy
YW5kfSIKKyAgICB5aWVsZCBBUk12N19EQVRBX1JFRworICAgICRhc20ucHV0cyAiXHRzdHIgI3tB
Uk12N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9LCAje3NlbGYuYXJtVjdQb3NzaWJseU1lbW9yeU9w
ZXJhbmR9IgorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGluY2x1ZGUgQVJNdjdBZGRy
ZXNzVXRpbGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAor
ICAgIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAg
ICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0
LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAgICJbI3tiYXNlLmFy
bVY3T3BlcmFuZH0sICN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfV0iCisgICAgZWxzZQor
ICAgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tvZmZzZXQuYXJtVjdPcGVyYW5kfV0iCisg
ICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBpbmNsdWRlIEFSTXY3QWRk
cmVzc1V0aWxpdGllcworCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQK
KyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAgICAgbW92ZUltbWVkaWF0ZShvZmZzZXQudmFs
dWUsIEFSTXY3X0FERFJfUkVHKQorICAgICAgJGFzbS5wdXRzICJhZGR3ICN7QVJNdjdfQUREUl9S
RUcuYXJtVjdPcGVyYW5kfSwgI3tiYXNlLmFybVY3T3BlcmFuZH0iCisgICAgZW5kCisgIGVuZAor
ICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVl
ICE9IDAKKyAgICAgICJbI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFy
bVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGV9XSIKKyAgICBlbHNlCisgICAgICAiWyN7YmFzZS5h
cm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGV9XSIKKyAg
ICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgIGluY2x1ZGUgQVJN
djdBZGRyZXNzVXRpbGl0aWVzCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlP
cGVyYW5kCisgICAgbW92ZUltbWVkaWF0ZShhZGRyZXNzLnZhbHVlLCBBUk12N19BRERSX1JFRykK
KyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICAiWyN7QVJN
djdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfV0iCisgIGVuZAorZW5kCisKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MDggQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNr
ZW5kcyIKK3JlcXVpcmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUg
InBhcnNlciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitjbGFz
cyBBc3NlbWJsZXIKKyAgZGVmIGluaXRpYWxpemUob3V0cCkKKyAgICBAb3V0cCA9IG91dHAKKyAg
ICBAc3RhdGUgPSA6Y3BwCisgIGVuZAorICAKKyAgZGVmIGVudGVyQXNtCisgICAgQG91dHAucHV0
cyAiYXNtICgiCisgICAgQHN0YXRlID0gOmFzbQorICBlbmQKKyAgCisgIGRlZiBsZWF2ZUFzbQor
ICAgIEBvdXRwLnB1dHMgIik7IgorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBkZWYg
aW5Bc20KKyAgICBlbnRlckFzbQorICAgIHlpZWxkCisgICAgbGVhdmVBc20KKyAgZW5kCisgIAor
ICBkZWYgcHV0cyhsaW5lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBv
dXRwLnB1dHMoKGxpbmUgKyAiXG4iKS5pbnNwZWN0KQorICBlbmQKKyAgCisgIGRlZiBjb21tZW50
KHRleHQpCisgICAgQG91dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgZW5kCitlbmQKKworYXNtRmls
ZSA9IEFSR1Yuc2hpZnQKK29mZnNldHNGaWxlID0gQVJHVi5zaGlmdAorb3V0cHV0RmxubSA9IEFS
R1Yuc2hpZnQKKworb2Zmc2V0c0xpc3QsIGNvbmZpZ0luZGV4ID0gb2Zmc2V0c0FuZENvbmZpZ3Vy
YXRpb25JbmRleChvZmZzZXRzRmlsZSkKK2lucHV0RGF0YSA9IElPOjpyZWFkKGFzbUZpbGUpCisK
K2lucHV0SGFzaCA9CisgICIvLyBvZmZsaW5lYXNtIGlucHV0IGhhc2g6ICIgKyBEaWdlc3Q6OlNI
QTEuaGV4ZGlnZXN0KGlucHV0RGF0YSkgKworICAiICIgKyBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0
KChvZmZzZXRzTGlzdCArIFtjb25maWdJbmRleF0pLmpvaW4oJyAnKSkKKworaWYgRmlsZVRlc3Qu
ZXhpc3Q/IG91dHB1dEZsbm0KKyAgRmlsZS5vcGVuKG91dHB1dEZsbm0sICJyIikgeworICAgIHwg
aW5wIHwKKyAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAgIGlmIGZpcnN0TGluZSBhbmQgZmly
c3RMaW5lLmNob21wID09IGlucHV0SGFzaAorICAgICAgJHN0ZGVyci5wdXRzICJOb3RoaW5nIGNo
YW5nZWQuIgorICAgICAgZXhpdCAwCisgICAgZW5kCisgIH0KK2VuZAorCitGaWxlLm9wZW4ob3V0
cHV0RmxubSwgInciKSB7CisgIHwgb3V0cCB8CisgICRvdXRwdXQgPSBvdXRwCisgICRvdXRwdXQu
cHV0cyBpbnB1dEhhc2gKKyAgCisgICRhc20gPSBBc3NlbWJsZXIubmV3KCRvdXRwdXQpCisgIAor
ICBhc3QgPSBwYXJzZShsZXgoaW5wdXREYXRhKSkKKyAgCisgIGZvclNldHRpbmdzKGNvbXB1dGVT
ZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpW2NvbmZpZ0luZGV4XSwgYXN0KSB7CisgICAgfCBjb25j
cmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgYXNzZXJ0Q29uZmlndXJh
dGlvbihjb25jcmV0ZVNldHRpbmdzKQorICAgIGxvd0xldmVsQVNUID0gbG93TGV2ZWxBU1QucmVz
b2x2ZSgqYnVpbGRPZmZzZXRzTWFwKGxvd0xldmVsQVNULCBvZmZzZXRzTGlzdCkpCisgICAgZW1p
dENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tl
bmQpIHsKKyAgICAgICRhc20uaW5Bc20geworICAgICAgICBsb3dMZXZlbEFTVC5sb3dlcihiYWNr
ZW5kKQorICAgICAgfQorICAgIH0KKyAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYXN0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MTcgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIEJhc2UgdXRpbGl0eSB0eXBlcyBmb3IgdGhlIEFTVC4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisKKyMgVmFsaWQgbWV0aG9kcyBmb3IgTm9kZToKKyMKKyMgbm9kZS5jaGlsZHJlbiAtPiBSZXR1
cm5zIGFuIGFycmF5IG9mIGltbWVkaWF0ZSBjaGlsZHJlbi4KKyMKKyMgbm9kZS5kZXNjZW5kZW50
cyAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBzdHJpY3QgZGVzY2VuZGFudHMgKGNoaWxkcmVu
CisjICAgICBhbmQgY2hpbGRyZW4gb2YgY2hpbGRyZW4sIHRyYW5zaXRpdmVseSkuCisjCisjIG5v
ZGUuZmxhdHRlbiAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHN0cmljdCBkZXNj
ZW5kYW50cyBhbmQKKyMgICAgIHRoZSBub2RlIGl0c2VsZi4KKyMKKyMgbm9kZS5maWx0ZXIodHlw
ZSkgLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRob3NlIGVsZW1lbnRzIGluCisjICAg
ICBub2RlLmZsYXR0ZW4gdGhhdCBhcmUgb2YgdGhlIGdpdmVuIHR5cGUgKGlzX2E/IHR5cGUgcmV0
dXJucyB0cnVlKS4KKyMKKyMgbm9kZS5tYXBDaGlsZHJlbnt8dnwgLi4ufSAtPiBSZXR1cm5zIGEg
bmV3IG5vZGUgd2l0aCBhbGwgY2hpbGRyZW4KKyMgICAgIHJlcGxhY2VkIGFjY29yZGluZyB0byB0
aGUgZ2l2ZW4gYmxvY2suCisjCisjIEV4YW1wbGVzOgorIworIyBub2RlLmZpbHRlcihTZXR0aW5n
KS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzZXR0aW5ncyB0aGF0IHRoZSBBU1QncworIyAg
ICAgSWZUaGVuRWxzZSBibG9ja3MgZGVwZW5kIG9uLgorIworIyBub2RlLmZpbHRlcihTdHJ1Y3RP
ZmZzZXQpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHN0cnVjdHVyZSBvZmZzZXRzCisjICAg
ICB0aGF0IHRoZSBBU1QgZGVwZW5kcyBvbi4KKworY2xhc3MgTm9kZQorICBhdHRyX3JlYWRlciA6
Y29kZU9yaWdpbgorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBAY29kZU9y
aWdpbiA9IGNvZGVPcmlnaW4KKyAgZW5kCisgIAorICBkZWYgY29kZU9yaWdpblN0cmluZworICAg
ICJsaW5lIG51bWJlciAje0Bjb2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYgZGVzY2VuZGFu
dHMKKyAgICBjaGlsZHJlbi5jb2xsZWN0e3x2fCB2LmZsYXR0ZW59LmZsYXR0ZW4KKyAgZW5kCisg
IAorICBkZWYgZmxhdHRlbgorICAgIFtzZWxmXSArIGRlc2NlbmRhbnRzCisgIGVuZAorICAKKyAg
ZGVmIGZpbHRlcih0eXBlKQorICAgIGZsYXR0ZW4uc2VsZWN0e3x2fCB2LmlzX2E/IHR5cGV9Cisg
IGVuZAorZW5kCisKK2NsYXNzIE5vQ2hpbGRyZW4gPCBOb2RlCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIHNlbGYKKyAgZW5k
CitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0S2V5CisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpm
aWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUoc3RydWN0LCBmaWVsZCkKKyAgICBAc3RydWN0ID0g
c3RydWN0CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5kCisgIAorICBkZWYgaGFzaAorICAgIEBz
dHJ1Y3QuaGFzaCArIEBmaWVsZC5oYXNoICogMworICBlbmQKKyAgCisgIGRlZiBlcWw/KG90aGVy
KQorICAgIEBzdHJ1Y3QgPT0gb3RoZXIuc3RydWN0IGFuZCBAZmllbGQgPT0gb3RoZXIuZmllbGQK
KyAgZW5kCitlbmQKKyAgICAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIEFT
VCBub2Rlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIFN0
cnVjdE9mZnNldCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisg
IGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvckZpZWxkKGNvZGVP
cmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAga2V5ID0gU3RydWN0T2Zmc2V0S2V5Lm5ldyhzdHJ1
Y3QsIGZpZWxkKQorICAgIAorICAgIHVubGVzcyBAQG1hcHBpbmdba2V5XQorICAgICAgQEBtYXBw
aW5nW2tleV0gPSBTdHJ1Y3RPZmZzZXQubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisg
ICAgZW5kCisgICAgQEBtYXBwaW5nW2tleV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIj
e3N0cnVjdH06OiN7ZmllbGR9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIpCisgICAgaWYg
QHN0cnVjdCAhPSBvdGhlci5zdHJ1Y3QKKyAgICAgIHJldHVybiBAc3RydWN0IDw9PiBvdGhlci5z
dHJ1Y3QKKyAgICBlbmQKKyAgICBAZmllbGQgPD0+IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisK
K2NsYXNzIFNpemVvZiA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVjdAorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQHN0cnVjdCA9IHN0cnVjdAorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAor
ICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICB1bmxlc3MgQEBtYXBw
aW5nW3N0cnVjdF0KKyAgICAgIEBAbWFwcGluZ1tzdHJ1Y3RdID0gU2l6ZW9mLm5ldyhjb2RlT3Jp
Z2luLCBzdHJ1Y3QpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW3N0cnVjdF0KKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICJzaXplb2YgI3tAc3RydWN0fSIKKyAgZW5kCisgIAorICBkZWYgPD0+
KG90aGVyKQorICAgIEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICBlbmQKK2VuZAorCitjbGFz
cyBJbW1lZGlhdGUgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDp2YWx1ZQorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFsdWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7dmFsdWV9Igor
ICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBvdGhlci5pc19hPyBJbW1lZGlhdGUgYW5k
IG90aGVyLnZhbHVlID09IEB2YWx1ZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVz
IDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBs
ZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVu
CisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAg
QWRkSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdo
dCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSArICN7cmlnaHQu
ZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRy
X3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBs
ZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAg
IEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBA
cmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgU3ViSW1tZWRpYXRlcy5u
ZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAtICN7cmlnaHQuZHVtcH0pIgorICBlbmQK
K2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwg
OnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAor
ICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTXVsSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwg
KHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiKCN7bGVmdC5kdW1wfSAqICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBO
ZWdJbW1lZGlhdGUgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAY2hp
bGQgPSBjaGlsZAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAY2hpbGRdCisgIGVu
ZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTmVnSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2lu
LCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoLSN7QGNoaWxk
LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAg
YXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBA
QG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFJlZ2lz
dGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVd
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEZQ
UmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
bmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYu
Zm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAg
ICAgIEBAbWFwcGluZ1tuYW1lXSA9IEZQUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkK
KyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
IG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUgPCBOb0NoaWxkcmVuCisgIGF0dHJf
cmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBw
aW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1
bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBWYXJpYWJsZS5u
ZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcyA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2UsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIGJhc2UsIG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBi
YXNlID0gYmFzZQorICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbQGJhc2UsIEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisg
ICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBvZmZzZXQp
KQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1w
fV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIg
OmJhc2UsIDppbmRleCwgOnNjYWxlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBiYXNlID0gYmFzZQorICAgIEBpbmRleCA9IGluZGV4CisgICAgQHNjYWxlID0gc2Nh
bGUKKyAgICByYWlzZSB1bmxlc3MgWzEsIDIsIDQsIDhdLm1lbWJlcj8gQHNjYWxlCisgICAgQG9m
ZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwgQGlu
ZGV4LCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEJhc2VJbmRl
eC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBpbmRleCksIEBzY2FsZSwg
KHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1
bXB9WyN7YmFzZS5kdW1wfSwgI3tpbmRleC5kdW1wfSwgI3tzY2FsZX1dIgorICBlbmQKK2VuZAor
CitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDphZGRy
ZXNzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBhZGRyZXNzKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQGFkZHJlc3MgPSBhZGRyZXNzCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiI3thZGRyZXNzLmR1bXB9W10iCisgIGVuZAorZW5kCisKK2NsYXNzIEluc3RydWN0
aW9uIDwgTm9kZQorICBhdHRyX3JlYWRlciA6b3Bjb2RlLCA6b3BlcmFuZHMKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIG9wY29kZSwgb3BlcmFuZHMpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAb3Bjb2RlID0gb3Bjb2RlCisgICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAg
ZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbigmcHJvYykKKyAgICBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgQG9wY29k
ZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHQi
ICsgb3Bjb2RlLnRvX3MgKyAiICIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4o
IiwgIikKKyAgZW5kCitlbmQKKworY2xhc3MgRXJyb3IgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICJcdGVycm9yIgorICBlbmQKK2VuZAorCitjbGFzcyBDb25zdERlY2wgPCBO
b2RlCisgIGF0dHJfcmVhZGVyIDp2YXJpYWJsZSwgOnZhbHVlCisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAdmFyaWFibGUgPSB2YXJpYWJsZQorICAgIEB2YWx1ZSA9IHZhbHVlCisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgW0B2YXJpYWJsZSwgQHZhbHVlXQorICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbgorICAgIENvbnN0RGVjbC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEB2YXJpYWJs
ZSksICh5aWVsZCBAdmFsdWUpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImNvbnN0ICN7
QHZhcmlhYmxlLmR1bXB9ID0gI3tAdmFsdWUuZHVtcH0iCisgIGVuZAorZW5kCisKKyRsYWJlbE1h
cHBpbmcgPSB7fQorCitjbGFzcyBMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5h
bWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgc2VsZi5mb3JOYW1l
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgaWYgJGxhYmVsTWFwcGluZ1tuYW1lXQorICAgICAgcmFp
c2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9IiB1bmxlc3MgJGxhYmVsTWFwcGluZ1tu
YW1lXS5pc19hPyBMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBM
YWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5nW25h
bWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5kCisK
K2NsYXNzIExvY2FsTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorCisgIEBAdW5pcXVlTmFtZUNvdW50ZXIgPSAwCisg
IAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgaWYgJGxhYmVsTWFw
cGluZ1tuYW1lXQorICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9IiB1
bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMb2NhbExhYmVsCisgICAgZWxzZQorICAg
ICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExvY2FsTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBzZWxm
LnVuaXF1ZShjb21tZW50KQorICAgIG5ld05hbWUgPSAiXyN7Y29tbWVudH0iCisgICAgaWYgJGxh
YmVsTWFwcGluZ1tuZXdOYW1lXQorICAgICAgd2hpbGUgJGxhYmVsTWFwcGluZ1tuZXdOYW1lID0g
Il8je0BAdW5pcXVlTmFtZUNvdW50ZXJ9XyN7Y29tbWVudH0iXQorICAgICAgICBAQHVuaXF1ZU5h
bWVDb3VudGVyICs9IDEKKyAgICAgIGVuZAorICAgIGVuZAorICAgIGZvck5hbWUobmlsLCBuZXdO
YW1lKQorICBlbmQKKyAgCisgIGRlZiBjbGVhbk5hbWUKKyAgICBpZiBuYW1lID1+IC9eXC4vCisg
ICAgICAiXyIgKyBuYW1lWzEuLi0xXQorICAgIGVsc2UKKyAgICAgIG5hbWUKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xhc3Mg
TGFiZWxSZWZlcmVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
bGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxdCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVP
cmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwu
bmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQorICBlbmQKK2VuZAor
CitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExvY2Fs
TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAg
CisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
bGFiZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZSA8IE5vZGUKKyAgYXR0cl9y
ZWFkZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxpc3QpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGlzdCA9IGxpc3QKKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBsaXN0CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAg
IFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBAbGlzdC5tYXAoJnByb2MpKQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIlxuIikKKyAgZW5k
CitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBz
dXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IFRydWUubmV3CisgIAorICBkZWYg
c2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAg
ICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAidHJ1ZSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgRmFsc2UgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIobmls
KQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBGYWxzZS5uZXcKKyAgCisgIGRlZiBzZWxmLmlu
c3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIGZhbHNl
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiZmFsc2UiCisgIGVuZAorZW5kCisKK2NsYXNz
IFRydWVDbGFzcworICBkZWYgYXNOb2RlCisgICAgVHJ1ZS5pbnN0YW5jZQorICBlbmQKK2VuZAor
CitjbGFzcyBGYWxzZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBGYWxzZS5pbnN0YW5jZQorICBl
bmQKK2VuZAorCitjbGFzcyBTZXR0aW5nIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFt
ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9Cisg
IAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFw
cGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gU2V0dGluZy5uZXcoY29kZU9yaWdp
biwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kIDwgTm9kZQorICBhdHRyX3Jl
YWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0
LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEBy
aWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmln
aHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQW5kLm5ldyhjb2RlT3JpZ2lu
LCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xh
c3MgT3IgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBvciAje3JpZ2h0LmR1bXB9
KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTm90IDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAg
ICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOb3Qu
bmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAgPCBOb0No
aWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdHNraXAiCisgIGVuZAorZW5kCisKK2Ns
YXNzIElmVGhlbkVsc2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpwcmVkaWNhdGUsIDp0aGVuQ2Fz
ZQorICBhdHRyX2FjY2Vzc29yIDplbHNlQ2FzZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBw
cmVkaWNhdGUgPSBwcmVkaWNhdGUKKyAgICBAdGhlbkNhc2UgPSB0aGVuQ2FzZQorICAgIEBlbHNl
Q2FzZSA9IFNraXAubmV3KGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisg
ICAgaWYgQGVsc2VDYXNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNlLCBAZWxzZUNhc2Vd
CisgICAgZWxzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZV0KKyAgICBlbmQKKyAgZW5k
CisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCAo
eWllbGQgQHByZWRpY2F0ZSksICh5aWVsZCBAdGhlbkNhc2UpLCAoeWllbGQgQGVsc2VDYXNlKSkK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJpZiAje3ByZWRpY2F0ZS5kdW1wfVxuIiArIHRo
ZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsgZWxzZUNhc2UuZHVtcCArICJcbmVuZCIKKyAgZW5k
CitlbmQKKworY2xhc3MgTWFjcm8gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6dmFyaWFi
bGVzLCA6Ym9keQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFi
bGVzLCBib2R5KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAg
QHZhcmlhYmxlcyA9IHZhcmlhYmxlcworICAgIEBib2R5ID0gYm9keQorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIEB2YXJpYWJsZXMgKyBbQGJvZHldCisgIGVuZAorICAKKyAgZGVmIG1h
cENoaWxkcmVuCisgICAgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAdmFyaWFibGVzLm1h
cHt8dnwgeWllbGQgdn0sICh5aWVsZCBAYm9keSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFibGVzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigi
LCAiKSArICIpXG4iICsgYm9keS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBN
YWNyb0NhbGwgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6b3BlcmFuZHMKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAgICBy
YWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAgQG9wZXJhbmRzLmVhY2h7fHZ8IHJhaXNlIHVubGVz
cyB2fQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEBvcGVyYW5kcworICBlbmQKKyAg
CisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4s
IEBuYW1lLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICJcdCN7bmFtZX0oIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSAr
ICIpIgorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisjIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJl
ICJ4ODYiCisKK0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIsCisgICAiQVJNdjciCisgIF0KKwor
V09SS0lOR19CQUNLRU5EUyA9CisgIFsKKyAgICJYODYiCisgIF0KKworQkFDS0VORF9QQVRURVJO
ID0gUmVnZXhwLm5ldygnXFxBKCcgKyBCQUNLRU5EUy5qb2luKCcpfCgnKSArICcpXFxaJykKKwor
Y2xhc3MgTm9kZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBzZW5kKCJsb3dlciIgKyBuYW1lKQor
ICBlbmQKK2VuZAorCisjIE92ZXJyaWRlcyBmb3IgbG93ZXIoKSBmb3IgdGhvc2Ugbm9kZXMgdGhh
dCBhcmUgYmFja2VuZC1hZ25vc3RpYworCitkZWYgc2FuaXRpemVMYWJlbE5hbWUobmFtZSkKKyAg
IyBTb21lIHBsYXRmb3JtcyBkb24ndCB3YW50IHRoZSBsZWFkaW5nICJfIi4gSWYgd2UgZXZlciB3
YW50IHRvIGRvIHNvbWV0aGluZworICAjIGFib3V0IHRoYXQsIGl0IHdvdWxkIGJlIGhlcmUuCisg
IG5hbWUKK2VuZAorCitjbGFzcyBMYWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1
dHMgIi5nbG9ibCAje3Nhbml0aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9IgorICAgICRhc20ucHV0
cyAiI3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxmLm5hbWUpfToiCisgIGVuZAorZW5kCisKK2NsYXNz
IExvY2FsTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzICJMX29mZmxpbmVh
c21fI3tzZWxmLm5hbWVbMS4uLTFdfToiCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAKKyAgZGVm
IGxvd2VyKG5hbWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBsb3dlcihu
YW1lKQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUubG93ZXIo
bmFtZSkKKyAgICB9CisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5y
YgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVy
YXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODcgQEAKKyMh
L3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNrZW5kcyIKK3Jl
cXVpcmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNlciIK
K3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitpbnB1dEZsbm0gPSBB
UkdWLnNoaWZ0CitvdXRwdXRGbG5tID0gQVJHVi5zaGlmdAorCitkZWYgZW1pdE1hZ2ljTnVtYmVy
CisgIE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVhY2ggeworICAgIHwgbnVtYmVyIHwKKyAgICAkb3V0
cHV0LnB1dHMgIiN7bnVtYmVyfSwiCisgIH0KK2VuZAorCitpbnB1dERhdGEgPSBJTzo6cmVhZChp
bnB1dEZsbm0pCitpbnB1dEhhc2ggPSBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0YSkK
KworaWYgRmlsZVRlc3QuZXhpc3Q/IG91dHB1dEZsbm0KKyAgRmlsZS5vcGVuKG91dHB1dEZsbm0s
ICJyIikgeworICAgIHwgaW5wIHwKKyAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAgIGlmIGZp
cnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09ICIvLyBvZmZsaW5lYXNtIGlucHV0IGhhc2g6
ICN7aW5wdXRIYXNofSIKKyAgICAgICRzdGRlcnIucHV0cyAiTm90aGluZyBjaGFuZ2VkLiIKKyAg
ICAgIGV4aXQgMAorICAgIGVuZAorICB9CitlbmQKKworb3JpZ2luYWxBU1QgPSBwYXJzZShsZXgo
aW5wdXREYXRhKSkKKworRmlsZS5vcGVuKG91dHB1dEZsbm0sICJ3IikgeworICB8IG91dHAgfAor
ICAkb3V0cHV0ID0gb3V0cAorICBvdXRwLnB1dHMgIi8vIG9mZmxpbmVhc20gaW5wdXQgaGFzaDog
I3tpbnB1dEhhc2h9IgorICBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMob3JpZ2luYWxBU1Qp
IHsKKyAgICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICBvZmZzZXRzTGlz
dCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKKyAgICBzaXplc0xpc3QgPSBh
c3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CisgICAgCisgICAgbGVuZ3RoID0gKE9GRlNFVF9N
QUdJQ19OVU1CRVJTLnNpemUgKyAxKSAqICgxICsgb2Zmc2V0c0xpc3Quc2l6ZSArIHNpemVzTGlz
dC5zaXplKQorICAgIAorICAgIG91dHAucHV0cyAic3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4dHJh
Y3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICAgIGVtaXRNYWdpY051bWJlcgorICAgIG91dHAu
cHV0cyAiI3tpbmRleH0sIgorICAgIG9mZnNldHNMaXN0LmVhY2ggeworICAgICAgfCBvZmZzZXQg
fAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICBvdXRwLnB1dHMgIk9GRkxJTkVfQVNNX09G
RlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSksIgorICAgIH0KKyAgICBz
aXplc0xpc3QuZWFjaCB7CisgICAgICB8IG9mZnNldCB8CisgICAgICBlbWl0TWFnaWNOdW1iZXIK
KyAgICAgIG91dHAucHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0cnVjdH0pLCIKKyAgICB9CisgICAg
b3V0cC5wdXRzICJ9OyIKKyAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxODggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01BQ1JP
X0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJhZGRpIiwKKyAgICJhbmRpIiwKKyAgICJsc2hpZnRp
IiwKKyAgICJtdWxpIiwKKyAgICJuZWdpIiwKKyAgICJub3RpIiwKKyAgICJvcmkiLAorICAgInJz
aGlmdGkiLAorICAgInVyc2hpZnRpIiwKKyAgICJzdWJpIiwKKyAgICJ4b3JpIiwKKyAgICJsb2Fk
aSIsCisgICAibG9hZGIiLAorICAgImxvYWRoIiwKKyAgICJzdG9yZWkiLAorICAgInN0b3JlYiIs
CisgICAibG9hZGQiLAorICAgIm1vdmVkIiwKKyAgICJzdG9yZWQiLAorICAgImFkZGQiLAorICAg
ImRpdmQiLAorICAgInN1YmQiLAorICAgIm11bGQiLAorICAgInNxcnRkIiwKKyAgICJjaTJkIiwK
KyAgICJmaWkyZCIsICMgdXNhZ2U6IGZpaTJkIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBi
aXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxmcHI+CisgICAiZmQyaWki
LCAjIHVzYWdlOiBmZDJpaSA8ZnByPiwgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+
LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPgorICAgImJkZXEiLAorICAgImJkbmVx
IiwKKyAgICJiZGd0IiwKKyAgICJiZGd0ZXEiLAorICAgImJkbHQiLAorICAgImJkbHRlcSIsCisg
ICAiYmRlcXVuIiwKKyAgICJiZG5lcXVuIiwKKyAgICJiZGd0dW4iLAorICAgImJkZ3RlcXVuIiwK
KyAgICJiZGx0dW4iLAorICAgImJkbHRlcXVuIiwKKyAgICJidGQyaSIsCisgICAidGQyaSIsCisg
ICAiYmNkMmkiLAorICAgIm1vdmR6IiwKKyAgICJwb3AiLAorICAgInB1c2giLAorICAgIm1vdmUi
LAorICAgInN4aTJwIiwKKyAgICJ6eGkycCIsCisgICAibm9wIiwKKyAgICJiaWVxIiwKKyAgICJi
aW5lcSIsCisgICAiYmlhIiwKKyAgICJiaWFlcSIsCisgICAiYmliIiwKKyAgICJiaWJlcSIsCisg
ICAiYmlndCIsCisgICAiYmlndGVxIiwKKyAgICJiaWx0IiwKKyAgICJiaWx0ZXEiLAorICAgImJi
ZXEiLAorICAgImJibmVxIiwKKyAgICJiYmEiLAorICAgImJiYWVxIiwKKyAgICJiYmIiLAorICAg
ImJiYmVxIiwKKyAgICJiYmd0IiwKKyAgICJiYmd0ZXEiLAorICAgImJibHQiLAorICAgImJibHRl
cSIsCisgICAiYnRpbyIsCisgICAiYnRpcyIsCisgICAiYnRpeiIsCisgICAiYnRpbnoiLAorICAg
ImJ0Ym8iLAorICAgImJ0YnMiLAorICAgImJ0YnoiLAorICAgImJ0Ym56IiwKKyAgICJqbXAiLAor
ICAgImJhZGRpbyIsCisgICAiYmFkZGlzIiwKKyAgICJiYWRkaXoiLAorICAgImJhZGRpbnoiLAor
ICAgImJzdWJpbyIsCisgICAiYnN1YmlzIiwKKyAgICJic3ViaXoiLAorICAgImJzdWJpbnoiLAor
ICAgImJtdWxpbyIsCisgICAiYm11bGlzIiwKKyAgICJibXVsaXoiLAorICAgImJtdWxpbnoiLAor
ICAgImJvcmlvIiwKKyAgICJib3JpcyIsCisgICAiYm9yaXoiLAorICAgImJvcmlueiIsCisgICAi
YnJlYWsiLAorICAgImNhbGwiLAorICAgInJldCIsCisgICAiY2llcSIsCisgICAiY2luZXEiLAor
ICAgImNpYSIsCisgICAiY2lhZXEiLAorICAgImNpYiIsCisgICAiY2liZXEiLAorICAgImNpZ3Qi
LAorICAgImNpZ3RlcSIsCisgICAiY2lsdCIsCisgICAiY2lsdGVxIiwKKyAgICJ0aW8iLAorICAg
InRpcyIsCisgICAidGl6IiwKKyAgICJ0aW56IiwKKyAgICJ0Ym8iLAorICAgInRicyIsCisgICAi
dGJ6IiwKKyAgICJ0Ym56IiwKKyAgICJwZWVrIiwKKyAgICJwb2tlIiwKKyAgICJicGVxIiwKKyAg
ICJicG5lcSIsCisgICAiYnBhIiwKKyAgICJicGFlcSIsCisgICAiYnBiIiwKKyAgICJicGJlcSIs
CisgICAiYnBndCIsCisgICAiYnBndGVxIiwKKyAgICJicGx0IiwKKyAgICJicGx0ZXEiLAorICAg
ImFkZHAiLAorICAgImFuZHAiLAorICAgIm9ycCIsCisgICAic3VicCIsCisgICAieG9ycCIsCisg
ICAibG9hZHAiLAorICAgImNwZXEiLAorICAgImNwbmVxIiwKKyAgICJjcGEiLAorICAgImNwYWVx
IiwKKyAgICJjcGIiLAorICAgImNwYmVxIiwKKyAgICJjcGd0IiwKKyAgICJjcGd0ZXEiLAorICAg
ImNwbHQiLAorICAgImNwbHRlcSIsCisgICAic3RvcmVwIiwKKyAgICJidHBvIiwKKyAgICJidHBz
IiwKKyAgICJidHB6IiwKKyAgICJidHBueiIsCisgICAiYmFkZHBvIiwKKyAgICJiYWRkcHMiLAor
ICAgImJhZGRweiIsCisgICAiYmFkZHBueiIKKyAgXQorCitYODZfSU5TVFJVQ1RJT05TID0KKyAg
WworICAgImNkcWkiLAorICAgImlkaXZpIgorICBdCisKK0lOU1RSVUNUSU9OUyA9IE1BQ1JPX0lO
U1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMKKworSU5TVFJVQ1RJT05fUEFUVEVSTiA9IFJl
Z2V4cC5uZXcoJ1xcQSgoJyArIElOU1RSVUNUSU9OUy5qb2luKCcpfCgnKSArICcpKVxcWicpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2Nv
bnN0YW50cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitNQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKwor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJi
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJhY3Rvcl9j
b25zdGFudHMiCisKK09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVl
NzU1IF0KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgb2Zmc2V0c0xpc3Qo
YXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBzaXplc0xpc3QoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUmV0dXJucyBhIGxpc3Qgb2Yg
b2Zmc2V0cyBhbmQgc2l6ZXMgdXNlZCBieSB0aGUgQVNULiAgICAgICAgICAgICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIG9mZnNldHNMaXN0KGFzdCkKKyAg
YXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorZW5kCisKK2RlZiBzaXplc0xpc3Qo
YXN0KQorICBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CitlbmQKKworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChhc3Qs
IGZpbGUpIC0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgW29mZnNldHMsIGlu
ZGV4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgUGFyc2VzIHRoZSBvZmZzZXRzIGZyb20gYSBmaWxlIGFuZCByZXR1
cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCB0aGUgIworIyBpbmRleCBvZiB0aGUgY29uZmlndXJh
dGlvbiB0aGF0IGlzIHZhbGlkIGluIHRoaXMgYnVpbGQgdGFyZ2V0LiAgICAgICAjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25J
bmRleChmaWxlKQorICBpbmRleCA9IG5pbAorICBvZmZzZXRzID0gW10KKyAgZW5kaWFubmVzc01h
cmtlckJ5dGVzID0gbmlsCisgIAorICBkZWYgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAg
Ynl0ZXMgPSBbXQorICAgIDQudGltZXMgeworICAgICAgYnl0ZXMgPDwgaW5wLmdldGJ5dGUKKyAg
ICB9CisgICAgCisgICAgaWYgZW5kaWFubmVzcyA9PSA6bGl0dGxlCisgICAgICAjIExpdHRsZSBl
bmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAwIHwKKyAgICAgICBieXRlc1sxXSA8PCA4IHwKKyAg
ICAgICBieXRlc1syXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbM10gPDwgMjQpCisgICAgZWxzZQor
ICAgICAgIyBCaWcgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMjQgfAorICAgICAgIGJ5dGVz
WzFdIDw8IDE2IHwKKyAgICAgICBieXRlc1syXSA8PCA4IHwKKyAgICAgICBieXRlc1szXSA8PCAw
KQorICAgIGVuZAorICBlbmQKKyAgCisgIFs6bGl0dGxlLCA6YmlnXS5lYWNoIHsKKyAgICB8IGVu
ZGlhbm5lc3MgfAorICAgIG1hZ2ljQnl0ZXMgPSBbXQorICAgIE1BR0lDX05VTUJFUlMuZWFjaCB7
CisgICAgICB8IG51bWJlciB8CisgICAgICBjdXJyZW50Qnl0ZXMgPSBbXQorICAgICAgNC50aW1l
cyB7CisgICAgICAgIGN1cnJlbnRCeXRlcyA8PCAobnVtYmVyICYgMHhmZikKKyAgICAgICAgbnVt
YmVyID4+PSA4CisgICAgICB9CisgICAgICBpZiBlbmRpYW5uZXNzID09IDpiaWcKKyAgICAgICAg
Y3VycmVudEJ5dGVzLnJldmVyc2UhCisgICAgICBlbmQKKyAgICAgIG1hZ2ljQnl0ZXMgKz0gY3Vy
cmVudEJ5dGVzCisgICAgfQorICAgIAorICAgIEZpbGUub3BlbihmaWxlLCAiciIpIHsKKyAgICAg
IHwgaW5wIHwKKyAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICBsb29wIHsKKyAgICAgICAg
Ynl0ZSA9IGlucC5nZXRieXRlCisgICAgICAgIGJyZWFrIHVubGVzcyBieXRlCisgICAgICAgIGlm
IGJ5dGUgPT0gbWFnaWNCeXRlc1t3aGVyZUluTWFya2VyXQorICAgICAgICAgIHdoZXJlSW5NYXJr
ZXIgKz0gMQorICAgICAgICAgIGlmIHdoZXJlSW5NYXJrZXIgPT0gbWFnaWNCeXRlcy5zaXplCisg
ICAgICAgICAgICAjIFdlIGhhdmUgYSBtYXRjaCEgSWYgd2UgaGF2ZSBub3QgeWV0IHJlYWQgdGhl
IGVuZGlhbm5lc3MgbWFya2VyIGFuZCBpbmRleCwKKyAgICAgICAgICAgICMgdGhlbiByZWFkIHRo
b3NlIG5vdzsgb3RoZXJ3aXNlIHJlYWQgYW4gb2Zmc2V0LgorICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiBub3QgaW5kZXgKKyAgICAgICAgICAgICAgaW5kZXggPSByZWFkSW50KGVuZGlhbm5l
c3MsIGlucCkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgb2Zmc2V0cyA8PCByZWFk
SW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgCisgICAg
ICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisg
ICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgZW5kCisgICAgICB9CisgICAgfQor
ICAgIAorICAgIGJyZWFrIGlmIGluZGV4CisgIH0KKyAgCisgIHJhaXNlIHVubGVzcyBpbmRleAor
ICAKKyAgW29mZnNldHMsIGluZGV4XQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAtPiBbb2Zmc2V0cywg
c2l6ZXNdICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBCdWlsZHMgYSBtYXBw
aW5nIGJldHdlZW4gU3RydWN0T2Zmc2V0IG5vZGVzIGFuZCB0aGVpciB2YWx1ZXMuICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgYnVpbGRPZmZzZXRzTWFw
KGFzdCwgb2Zmc2V0c0xpc3QpCisgIG9mZnNldHNNYXAgPSB7fQorICBzaXplc01hcCA9IHt9Cisg
IGFzdE9mZnNldHNMaXN0ID0gb2Zmc2V0c0xpc3QoYXN0KQorICBhc3RTaXplc0xpc3QgPSBzaXpl
c0xpc3QoYXN0KQorICByYWlzZSB1bmxlc3MgYXN0T2Zmc2V0c0xpc3Quc2l6ZSArIGFzdFNpemVz
TGlzdC5zaXplID09IG9mZnNldHNMaXN0LnNpemUKKyAgb2Zmc2V0c0xpc3QoYXN0KS5lYWNoX3dp
dGhfaW5kZXggeworICAgIHwgc3RydWN0T2Zmc2V0LCBpbmRleCB8CisgICAgb2Zmc2V0c01hcFtz
dHJ1Y3RPZmZzZXRdID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQorICBzaXplc0xpc3QoYXN0KS5l
YWNoX3dpdGhfaW5kZXggeworICAgIHwgc2l6ZW9mLCBpbmRleCB8CisgICAgc2l6ZXNNYXBbc2l6
ZW9mXSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgW29mZnNldHNNYXAsIHNpemVzTWFwXQor
ZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIu
cmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJpbnN0cnVjdGlvbnMiCity
ZXF1aXJlICJyZWdpc3RlcnMiCisKK2NsYXNzIFRva2VuCisgIGF0dHJfcmVhZGVyIDpjb2RlT3Jp
Z2luLCA6c3RyaW5nCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJpbmcpCisg
ICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgICAgQHN0cmluZyA9IHN0cmluZworICBlbmQK
KyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBpZiBvdGhlci5pc19hPyBUb2tlbgorICAgICAgQHN0
cmluZyA9PSBvdGhlci5zdHJpbmcKKyAgICBlbHNlCisgICAgICBAc3RyaW5nID09IG90aGVyCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmID1+KG90aGVyKQorICAgIEBzdHJpbmcgPX4gb3RoZXIK
KyAgZW5kCisgIAorICBkZWYgdG9fcworICAgICIje0BzdHJpbmcuaW5zcGVjdH0gYXQgbGluZSAj
e2NvZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAg
IGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc30iCisg
ICAgZWxzZQorICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9OiAje2NvbW1lbnRbMF19
IgorICAgIGVuZAorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IworIyBUaGUgbGV4ZXIuIFRha2VzIGEgc3RyaW5nIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRv
a2Vucy4gICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitk
ZWYgbGV4KHN0cikKKyAgcmVzdWx0ID0gW10KKyAgbGluZU51bWJlciA9IDEKKyAgd2hpbGUgbm90
IHN0ci5lbXB0eT8KKyAgICBjYXNlIHN0cgorICAgIHdoZW4gL1xBXCMoW15cbl0qKS8KKyAgICAg
ICMgY29tbWVudCwgaWdub3JlCisgICAgd2hlbiAvXEFcbi8KKyAgICAgIHJlc3VsdCA8PCBUb2tl
bi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICBsaW5lTnVtYmVyICs9IDEKKyAgICB3aGVuIC9c
QVthLXpBLVpdKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5l
TnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVwuKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0
IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQV8oW2EtekEtWjAtOV9d
KikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4g
L1xBKFsgXHRdKykvCisgICAgICAjIHdoaXRlc3BhY2UsIGlnbm9yZQorICAgIHdoZW4gL1xBMHgo
WzAtOWEtZkEtRl0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYu
aGV4LnRvX3MpCisgICAgd2hlbiAvXEEwKFswLTddKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4u
bmV3KGxpbmVOdW1iZXIsICQmLm9jdC50b19zKQorICAgIHdoZW4gL1xBKFswLTldKykvCisgICAg
ICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBOjovCisg
ICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBWzos
XChcKVxbXF09XCtcLSpdLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAk
JikKKyAgICBlbHNlCisgICAgICByYWlzZSAiTGV4ZXIgZXJyb3IgYXQgbGluZSBudW1iZXIgI3ts
aW5lTnVtYmVyfSwgdW5leHBlY3RlZCBzZXF1ZW5jZSAje3N0clswLi4yMF0uaW5zcGVjdH0iCisg
ICAgZW5kCisgICAgc3RyID0gJH4ucG9zdF9tYXRjaAorICBlbmQKKyAgcmVzdWx0CitlbmQKKwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVG9rZW4gaWRlbnRpZmljYXRpb24u
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGlzUmVnaXN0ZXIodG9rZW4pCisgIHRv
a2VuID1+IFJFR0lTVEVSX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJbnN0cnVjdGlvbih0b2tlbikK
KyAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0tleXdvcmQodG9r
ZW4pCisgIHRva2VuID1+IC9cQSgodHJ1ZSl8KGZhbHNlKXwoaWYpfCh0aGVuKXwoZWxzZSl8KGVs
c2lmKXwoZW5kKXwoYW5kKXwob3IpfChub3QpfChtYWNybyl8KGNvbnN0KXwoc2l6ZW9mKXwoZXJy
b3IpKVxaLyBvcgorICAgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4gb3IKKyAgICB0b2tlbiA9
fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzSWRlbnRpZmllcih0b2tlbikKKyAg
dG9rZW4gPX4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKilcWi8gYW5kIG5vdCBpc0tleXdvcmQo
dG9rZW4pCitlbmQKKworZGVmIGlzTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQV8oW2EtekEt
WjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNMb2NhbExhYmVsKHRva2VuKQorICB0b2tlbiA9fiAv
XEFcLihbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc1ZhcmlhYmxlKHRva2VuKQorICBp
c0lkZW50aWZpZXIodG9rZW4pIG9yIGlzUmVnaXN0ZXIodG9rZW4pCitlbmQKKworZGVmIGlzSW50
ZWdlcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBWzAtOV0vCitlbmQKKworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgVGhlIHBhcnNlci4gVGFrZXMgYW4gYXJyYXkgb2YgdG9rZW5z
IGFuZCByZXR1cm5zIGFuIEFTVC4gTWV0aG9kcyAgICAgIworIyBvdGhlciB0aGFuIHBhcnNlKHRv
a2VucykgYXJlIG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9uLiAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBQYXJzZXIKKyAgZGVmIGluaXRp
YWxpemUodG9rZW5zKQorICAgIEB0b2tlbnMgPSB0b2tlbnMKKyAgICBAaWR4ID0gMAorICBlbmQK
KyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIEB0b2tlbnNbQGlkeF0KKyAg
ICAgIEB0b2tlbnNbQGlkeF0ucGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBlbHNlCisgICAgICBp
ZiBjb21tZW50LmVtcHR5PworICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZp
bGUiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmls
ZTogI3tjb21tZW50WzBdfSIKKyAgICAgIGVuZAorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBj
b25zdW1lKHJlZ2V4cCkKKyAgICBpZiByZWdleHAKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0
b2tlbnNbQGlkeF0gPX4gcmVnZXhwCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3Mg
QGlkeCA9PSBAdG9rZW5zLmxlbmd0aAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICBlbmQKKyAg
CisgIGRlZiBza2lwTmV3TGluZQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAg
ICAgQGlkeCArPSAxCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQXRv
bQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm5vdCIKKyAgICAgIEBpZHggKz0gMQorICAgICAg
cGFyc2VQcmVkaWNhdGVBdG9tCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAg
IEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJlc3VsdCA9IHBhcnNlUHJlZGlj
YXRlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAg
QGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJ0cnVl
IgorICAgICAgcmVzdWx0ID0gVHJ1ZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAgICBy
ZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJmYWxzZSIKKyAgICAgIHJlc3VsdCA9
IEZhbHNlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lm
IGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBTZXR0aW5nLmZvck5h
bWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAg
IEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAg
IGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZUFuZAorICAgIHJlc3VsdCA9IHBh
cnNlUHJlZGljYXRlQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImFuZCIKKyAgICAg
IGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQor
ICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisgICAg
ICByZXN1bHQgPSBBbmQubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5kCisg
ICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlCisgICAgIyBzb21lIGV4
YW1wbGVzIG9mIHByZWNlZGVuY2U6CisgICAgIyBub3QgYSBhbmQgYiAtPiAobm90IGEpIGFuZCBi
CisgICAgIyBhIGFuZCBiIG9yIGMgLT4gKGEgYW5kIGIpIG9yIGMKKyAgICAjIGEgb3IgYiBhbmQg
YyAtPiBhIG9yIChiIGFuZCBjKQorICAgIAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlQW5k
CisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAib3IiCisgICAgICBjb2RlT3JpZ2luID0gQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5l
CisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgICByZXN1bHQgPSBPci5uZXco
Y29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisg
IAorICBkZWYgcGFyc2VWYXJpYWJsZQorICAgIGlmIGlzUmVnaXN0ZXIoQHRva2Vuc1tAaWR4XSkK
KyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPX4gRlBSX1BBVFRFUk4KKyAgICAgICAgcmVzdWx0ID0g
RlBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0Bp
ZHhdLnN0cmluZykKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUmVnaXN0ZXJJRC5mb3JO
YW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAg
ICBlbmQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgIHJlc3Vs
dCA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0Bp
ZHhdLnN0cmluZykKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgICAgQGlk
eCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQWRkcmVzcyhvZmZzZXQp
CisgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICBjb2RlT3Jp
Z2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgCisgICAgIyBUaHJlZSBwb3NzaWJp
bGl0aWVzOgorICAgICMgW10gICAgICAgLT4gQWJzb2x1dGVBZGRyZXNzCisgICAgIyBbYV0gICAg
ICAtPiBBZGRyZXNzCisgICAgIyBbYSxiXSAgICAtPiBCYXNlSW5kZXggd2l0aCBzY2FsZSA9IDEK
KyAgICAjIFthLGIsY10gIC0+IEJhc2VJbmRleAorICAgIAorICAgIEBpZHggKz0gMQorICAgIGlm
IEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJldHVybiBBYnNv
bHV0ZUFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIG9mZnNldCkKKyAgICBlbmQKKyAgICBhID0gcGFy
c2VWYXJpYWJsZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICByZXN1bHQgPSBB
ZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBhLCBvZmZzZXQpCisgICAgZWxzZQorICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgIEBpZHggKz0gMQorICAgICAg
YiA9IHBhcnNlVmFyaWFibGUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAg
IHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgMSwgb2Zmc2V0KQorICAg
ICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgWyIxIiwgIjIiLCAi
NCIsICI4Il0ubWVtYmVyPyBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBjID0gQHRva2Vu
c1tAaWR4XS5zdHJpbmcudG9faQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJv
ciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4
Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCBjLCBvZmZzZXQpCisgICAgICBlbmQKKyAgICBlbmQKKyAg
ICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VDb2xvbkNvbG9u
CisgICAgc2tpcE5ld0xpbmUKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luCisgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAg
ICBuYW1lcyA9IFtAdG9rZW5zW0BpZHhdLnN0cmluZ10KKyAgICBAaWR4ICs9IDEKKyAgICB3aGls
ZSBAdG9rZW5zW0BpZHhdID09ICI6OiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcGFyc2VFcnJv
ciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIG5hbWVzIDw8IEB0b2tl
bnNbQGlkeF0uc3RyaW5nCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgICByYWlzZSBpZiBu
YW1lcy5lbXB0eT8KKyAgICBbY29kZU9yaWdpbiwgbmFtZXNdCisgIGVuZAorICAKKyAgZGVmIHBh
cnNlRXhwcmVzc2lvbkF0b20KKyAgICBza2lwTmV3TGluZQorICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gIi0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIE5lZ0ltbWVkaWF0ZS5uZXcoQHRva2Vuc1tA
aWR4IC0gMV0uY29kZU9yaWdpbiwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICBlbHNpZiBAdG9r
ZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQgPSBwYXJzZUV4
cHJlc3Npb24KKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisg
ICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSW50ZWdlciBAdG9rZW5z
W0BpZHhdCisgICAgICByZXN1bHQgPSBJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faSkKKyAgICAgIEBpZHggKz0gMQorICAgICAg
cmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIGNvZGVP
cmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBpZiBuYW1lcy5zaXplID4gMQor
ICAgICAgICBTdHJ1Y3RPZmZzZXQuZm9yRmllbGQoY29kZU9yaWdpbiwgbmFtZXNbMC4uLTJdLmpv
aW4oJzo6JyksIG5hbWVzWy0xXSkKKyAgICAgIGVsc2UKKyAgICAgICAgVmFyaWFibGUuZm9yTmFt
ZShjb2RlT3JpZ2luLCBuYW1lc1swXSkKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzUmVnaXN0ZXIg
QHRva2Vuc1tAaWR4XQorICAgICAgcGFyc2VWYXJpYWJsZQorICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gInNpemVvZiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMg
PSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIFNpemVvZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVz
LmpvaW4oJzo6JykpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICBza2lwTmV3TGluZQorICAgIHJlc3Vs
dCA9IHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIqIgor
ICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAg
IHJlc3VsdCA9IE11bEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4s
IHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UK
KyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBjb3VsZEJl
RXhwcmVzc2lvbgorICAgIEB0b2tlbnNbQGlkeF0gPT0gIi0iIG9yIEB0b2tlbnNbQGlkeF0gPT0g
InNpemVvZiIgb3IgaXNJbnRlZ2VyKEB0b2tlbnNbQGlkeF0pIG9yIGlzVmFyaWFibGUoQHRva2Vu
c1tAaWR4XSkgb3IgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgZW5kCisgIAorICBkZWYgcGFyc2VF
eHByZXNzaW9uCisgICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25N
dWwKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIrIiBvciBAdG9rZW5zW0BpZHhdID09ICIt
IgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKyIKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIHJlc3VsdCA9IEFkZEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmln
aW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4
XSA9PSAiLSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IFN1YkltbWVkaWF0
ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNz
aW9uTXVsKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5kCisg
ICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlT3BlcmFuZChjb21tZW50KQorICAgIGlm
IGNvdWxkQmVFeHByZXNzaW9uCisgICAgICBleHByID0gcGFyc2VFeHByZXNzaW9uCisgICAgICBp
ZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAgICBwYXJzZUFkZHJlc3MoZXhwcikKKyAgICAg
IGVsc2UKKyAgICAgICAgZXhwcgorICAgICAgZW5kCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9
PSAiWyIKKyAgICAgIHBhcnNlQWRkcmVzcyhJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbiwgMCkpCisgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1
bHQgPSBMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMYWJlbC5m
b3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQor
ICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0xvY2FsTGFiZWwgQHRv
a2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luLCBMb2NhbExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJl
c3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IoY29tbWVudCkKKyAgICBlbmQKKyAgZW5k
CisgIAorICBkZWYgcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgIHNraXBOZXdMaW5lCisgICAgY29u
c3VtZSgvXEFcKFxaLykKKyAgICB2YXJpYWJsZXMgPSBbXQorICAgIGxvb3AgeworICAgICAgc2tp
cE5ld0xpbmUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0p
CisgICAgICAgIHZhcmlhYmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBza2lwTmV3TGluZQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0g
PT0gIiwiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJz
ZUVycm9yCisgICAgICAgIGVuZAorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yCisgICAg
ICBlbmQKKyAgICB9CisgICAgdmFyaWFibGVzCisgIGVuZAorICAKKyAgZGVmIHBhcnNlU2VxdWVu
Y2UoZmluYWwsIGNvbW1lbnQpCisgICAgZmlyc3RDb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luCisgICAgbGlzdCA9IFtdCisgICAgbG9vcCB7CisgICAgICBpZiAoQGlkeCA9PSBA
dG9rZW5zLmxlbmd0aCBhbmQgbm90IGZpbmFsKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0g
PX4gZmluYWwpCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJc
biIKKyAgICAgICAgIyBpZ25vcmUKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNpZiBAdG9r
ZW5zW0BpZHhdID09ICJjb25zdCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJy
b3IgdW5sZXNzIGlzVmFyaWFibGUgQHRva2Vuc1tAaWR4XQorICAgICAgICB2YXJpYWJsZSA9IFZh
cmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0
cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tl
bnNbQGlkeF0gPT0gIj0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YWx1ZSA9IHBhcnNl
T3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGNvbnN0ICN7dmFyaWFibGUubmFtZX0iKQorICAgICAg
ICBsaXN0IDw8IENvbnN0RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCB2YXJpYWJs
ZSwgdmFsdWUpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJlcnJvciIKKyAgICAgICAg
bGlzdCA8PCBFcnJvci5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luKQorICAgICAgICBAaWR4
ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImlmIgorICAgICAgICBjb2RlT3Jp
Z2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBza2lwTmV3TGluZQorICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAgICAg
ICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgIHNraXBOZXdMaW5lCisgICAg
ICAgIGlmVGhlbkVsc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBh
cnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBv
ZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgbGlzdCA8PCBpZlRoZW5FbHNl
CisgICAgICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImVsc2lmIgorICAgICAgICAgIGNvZGVP
cmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRl
CisgICAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICAgIHNraXBO
ZXdMaW5lCisgICAgICAgICAgZWxzZUNhc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBw
cmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndo
aWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgICBpZlRo
ZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNhc2UKKyAgICAgICAgICBpZlRoZW5FbHNlID0gZWxzZUNh
c2UKKyAgICAgICAgZW5kCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gImVsc2UiCisgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IHBhcnNlU2Vx
dWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGVsc2UgY2FzZSBmb3IgXCJpZiAje3By
ZWRpY2F0ZS5kdW1wfVwiIikKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAg
ICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gImVuZCIKKyAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJt
YWNybyIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcGFyc2VFcnJvciB1
bmxlc3MgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIG5hbWUgPSBAdG9rZW5z
W0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFyaWFibGVzID0gcGFy
c2VNYWNyb1ZhcmlhYmxlcworICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8s
ICJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gI3tuYW1lfSIpCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICBsaXN0IDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkp
CisgICAgICBlbHNpZiBpc0luc3RydWN0aW9uIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9y
aWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tA
aWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIChub3QgZmluYWwgYW5k
IEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmlu
YWwpCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24sIGFuZCBpdCdzIHRoZSBs
YXN0IG9uZS4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBu
YW1lLCBbXSkKKyAgICAgICAgICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJcbiIKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbi4KKyAgICAgICAgICBs
aXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgICMgSXQncyBkZWZpbml0ZWx5IGFuIGlu
c3RydWN0aW9uLCBhbmQgaXQgaGFzIGF0IGxlYXN0IG9uZSBvcGVyYW5kLgorICAgICAgICAgIG9w
ZXJhbmRzID0gW10KKyAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gZmFsc2UKKyAgICAgICAgICBs
b29wIHsKKyAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRl
IG9mIGluc3RydWN0aW9uICN7bmFtZX0iKQorICAgICAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQg
QGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5h
bCkKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbiBhbmQgb2YgdGhl
IHNlcXVlbmNlLgorICAgICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gdHJ1ZQorICAgICAgICAg
ICAgICBicmVhaworICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAg
ICAgICAgICAgIyBIYXMgYW5vdGhlciBvcGVyYW5kLgorICAgICAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICAgICAj
IFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uLgorICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgcGFyc2VF
cnJvcigiRXhwZWN0ZWQgYSBjb21tYSwgbmV3bGluZSwgb3IgI3tmaW5hbH0gYWZ0ZXIgI3tvcGVy
YW5kcy5sYXN0LmR1bXB9IikKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgIH0KKyAgICAgICAg
ICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAg
ICAgICAgICBpZiBlbmRPZlNlcXVlbmNlCisgICAgICAgICAgICBicmVhaworICAgICAgICAgIGVu
ZAorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisg
ICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFt
ZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBpZiBA
dG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgICAgICMgTWFjcm8gaW52b2NhdGlvbi4KKyAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAgc2tpcE5l
d0xpbmUKKyAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9vcCB7CisgICAgICAgICAgICAg
IHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgor
ICAgICAgICAgICAgICAgICMgSXQncyBhIG1hY3JvIGxhbWJkYSEKKyAgICAgICAgICAgICAgICBj
b2RlT3JpZ2luSW5uZXIgPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFi
bGVzCisgICAgICAgICAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hp
bGUgaW5zaWRlIG9mIGFub255bW91cyBtYWNybyBwYXNzZWQgYXMgYXJndW1lbnQgdG8gI3tuYW1l
fSIpCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgb3BlcmFuZHMg
PDwgTWFjcm8ubmV3KGNvZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJpYWJsZXMsIGJvZHkpCisgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQo
IndoaWxlIGluc2lkZSBvZiBtYWNybyBjYWxsIHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICBl
bmQKKyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tA
aWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGFy
c2VFcnJvciAiVW5leHBlY3RlZCAje0B0b2tlbnNbQGlkeF0uc3RyaW5nLmluc3BlY3R9IHdoaWxl
IHBhcnNpbmcgaW52b2NhdGlvbiBvZiBtYWNybyAje25hbWV9IgorICAgICAgICAgICAgICBlbmQK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbmQKKyAgICAgICAgICBsaXN0IDw8IE1hY3JvQ2Fs
bC5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9IgorICAgICAgICBlbmQK
KyAgICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XSBvciBpc0xvY2FsTGFiZWwgQHRva2Vu
c1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisg
ICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiOiIKKyAgICAgICAgIyBJ
dCdzIGEgbGFiZWwuCisgICAgICAgIGlmIGlzTGFiZWwgbmFtZQorICAgICAgICAgIGxpc3QgPDwg
TGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbHNlCisgICAgICAgICAg
bGlzdCA8PCBMb2NhbExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZW5k
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yICJFeHBl
Y3RpbmcgdGVybWluYWwgI3tmaW5hbH0gI3tjb21tZW50fSIKKyAgICAgIGVuZAorICAgIH0KKyAg
ICBTZXF1ZW5jZS5uZXcoZmlyc3RDb2RlT3JpZ2luLCBsaXN0KQorICBlbmQKK2VuZAorCitkZWYg
cGFyc2UodG9rZW5zKQorICBwYXJzZXIgPSBQYXJzZXIubmV3KHRva2VucykKKyAgcGFyc2VyLnBh
cnNlU2VxdWVuY2UobmlsLCAiIikKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9yZWdpc3RlcnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDU5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitHUFJTID0KKyAg
WworICAgInQwIiwKKyAgICJ0MSIsCisgICAidDIiLAorICAgInQzIiwKKyAgICJ0NCIsCisgICAi
Y2ZyIiwKKyAgICJhMCIsCisgICAiYTEiLAorICAgInIwIiwKKyAgICJyMSIsCisgICAic3AiCisg
IF0KKworRlBSUyA9CisgIFsKKyAgICJmdDAiLAorICAgImZ0MSIsCisgICAiZnQyIiwKKyAgICJm
dDMiLAorICAgImZ0NCIsCisgICAiZnQ1IiwKKyAgICJmYTAiLAorICAgImZhMSIsCisgICAiZmEy
IiwKKyAgICJmYTMiLAorICAgImZyIgorICBdCisKK1JFR0lTVEVSUyA9IEdQUlMgKyBGUFJTCisK
K0dQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgR1BSUy5qb2luKCcpfCgnKSArICcp
KVxcWicpCitGUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMuam9pbignKXwo
JykgKyAnKSlcXFonKQorCitSRUdJU1RFUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsg
UkVHSVNURVJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMjIxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJl
ICJhc3QiCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInRy
YW5zZm9ybSIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgY29tcHV0ZVNl
dHRpbmdzQ29tYmluYXRpb25zKGFzdCkgLT4gc2V0dGluZ3NDb21iaWF0aW9ucyAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIENvbXB1dGVzIGFuIGFycmF5IG9mIHNldHRpbmdzIG1h
cHMsIHdoZXJlIGEgc2V0dGluZ3MgbWFwIGNvbnN0aXR1dGVzICMKKyMgYSBjb25maWd1cmF0aW9u
IGZvciB0aGUgYXNzZW1ibHkgY29kZSBiZWluZyBnZW5lcmF0ZWQuIFRoZSBtYXAgICAgICAgIwor
IyBjb250YWlucyBrZXkgdmFsdWUgcGFpcnMgd2hlcmUga2V5cyBhcmUgc2V0dGluZ3MgbmFtZXMg
KHN0cmluZ3MpIGFuZCAjCisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xlYW5zICh0cnVlIGZvciBlbmFi
bGVkLCBmYWxzZSBmb3IgZGlzYWJsZWQpLiAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisKK2RlZiBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBzZXR0
aW5nc0NvbWJpbmF0aW9ucyA9IFtdCisgIAorICBkZWYgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRp
bmdzQ29tYmluYXRpb25zLCBtYXBTb0ZhciwgcmVtYWluaW5nKQorICAgIGlmIHJlbWFpbmluZy5l
bXB0eT8KKyAgICAgIHNldHRpbmdzQ29tYmluYXRpb25zIDw8IG1hcFNvRmFyCisgICAgICByZXR1
cm4KKyAgICBlbmQKKyAgICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBuZXdNYXBb
cmVtYWluaW5nWzBdXSA9IHRydWUKKyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21i
aW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgICAKKyAgICBuZXdNYXAgPSBt
YXBTb0Zhci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IGZhbHNlCisgICAgc2V0dGlu
Z3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmluZ1sxLi4t
MV0pCisgIGVuZAorICAKKyAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25z
LCB7fSwgKGFzdC5maWx0ZXIoU2V0dGluZykudW5pcS5jb2xsZWN0e3x2fCB2Lm5hbWV9ICsgWyJY
ODYiLCAiQVJNdjciXSkudW5pcSkKKyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zCitlbmQKKwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yU2V0dGluZ3MoY29uY3JldGVT
ZXR0aW5ncywgYXN0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAg
fCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8IC4uLiB9ICAgICAgICAg
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRGV0ZXJtaW5lcyBpZiB0aGUgc2V0dGluZ3Mg
Y29tYmluYXRpb24gaXMgdmFsaWQsIGFuZCBpZiBzbywgY2FsbHMgICAgIworIyB0aGUgYmxvY2sg
d2l0aCB0aGUgaW5mb3JtYXRpb24geW91IG5lZWQgdG8gZ2VuZXJhdGUgY29kZS4gICAgICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZm9yU2V0dGluZ3Mo
Y29uY3JldGVTZXR0aW5ncywgYXN0KQorICAjIENoZWNrIHdoaWNoIGFyY2hpdGVjdHVyZXMgdGhp
cyBjb21iaW5hdG9yIGNsYWltcyB0byBzdXBwb3J0LgorICBudW1DbGFpbWVkQmFja2VuZHMgPSAw
CisgIHNlbGVjdGVkQmFja2VuZCA9IG5pbAorICBCQUNLRU5EUy5lYWNoIHsKKyAgICB8IGJhY2tl
bmQgfAorICAgIGlzU3VwcG9ydGVkID0gY29uY3JldGVTZXR0aW5nc1tiYWNrZW5kXQorICAgIHJh
aXNlIHVubGVzcyBpc1N1cHBvcnRlZCAhPSBuaWwKKyAgICBudW1DbGFpbWVkQmFja2VuZHMgKz0g
aWYgaXNTdXBwb3J0ZWQgdGhlbiAxIGVsc2UgMCBlbmQKKyAgICBpZiBpc1N1cHBvcnRlZAorICAg
ICAgc2VsZWN0ZWRCYWNrZW5kID0gYmFja2VuZAorICAgIGVuZAorICB9CisgIAorICByZXR1cm4g
aWYgbnVtQ2xhaW1lZEJhY2tlbmRzID4gMQorICAKKyAgIyBSZXNvbHZlIHRoZSBBU1QgZG93biB0
byBhIGxvdy1sZXZlbCBmb3JtIChubyBtYWNyb3Mgb3IgY29uZGl0aW9uYWxzKS4KKyAgbG93TGV2
ZWxBU1QgPSBhc3QucmVzb2x2ZVNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICB5aWVs
ZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgc2VsZWN0ZWRCYWNrZW5kCitlbmQKKwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3ND
b21iaW5hdGlvbihhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAg
fCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAgICAg
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5h
dGlvbihhc3QsIHNldHRpbmdzQ29tYmluYXRpb25zKSB7ICAgICAgICAgIworIyAgICAgfCBjb25j
cmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAgICAgICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgRXhlY3V0ZXMgdGhlIGdpdmVuIGJsb2NrIGZvciBlYWNo
IHZhbGlkIHNldHRpbmdzIGNvbWJpbmF0aW9uIGluIHRoZSAgIworIyBzZXR0aW5ncyBtYXAuIFRo
ZSBhc3QgcGFzc2VkIGludG8gdGhlIGJsb2NrIGlzIHJlc29sdmVkICAgICAgICAgICAgICAjCisj
IChhc3QucmVzb2x2ZSkgYWdhaW5zdCB0aGUgc2V0dGluZ3MuICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgZmlyc3QgZm9ybSB3aWxsIGNh
bGwgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgZm9yIHlvdS4gICAjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21i
aW5hdGlvbihhc3QsICpvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zKQorICByYWlzZSBpZiBv
cHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zLnNpemUgPiAxCisgIAorICBpZiBvcHRpb25hbFNl
dHRpbmdzQ29tYmluYXRpb25zLmVtcHR5PworICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gY29t
cHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgZWxzZQorICAgIHNldHRpbmdzQ29tYmlu
YXRpb25zID0gb3B0aW9uYWxTZXR0aW5nc0NvbWJpYXRpb25zWzBdCisgIGVuZAorICAKKyAgc2V0
dGluZ3NDb21iaW5hdGlvbnMuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IGNvbmNyZXRlU2V0dGlu
Z3MsIGluZGV4IHwKKyAgICBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpIHsKKyAg
ICAgIHwgY29uY3JldGVTZXR0aW5nc18sIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICAgIHlp
ZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgIH0K
KyAgfQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGNwcFNldHRp
bmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyBSZXR1cm5zIHRoZSBDKysgY29kZSB1c2VkIHRvIHRl
c3QgaWYgd2UgYXJlIGluIGEgY29uZmlndXJhdGlvbiB0aGF0ICAjCisjIGNvcnJlc3BvbmRzIHRv
IHRoZSBnaXZlbiBjb25jcmV0ZSBzZXR0aW5ncy4gICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBjcHBTZXR0aW5nc1Rlc3Qo
Y29uY3JldGVTZXR0aW5ncykKKyAgIiNpZiAiICsgY29uY3JldGVTZXR0aW5ncy50b19hLmNvbGxl
Y3R7CisgICAgfCBwYWlyIHwKKyAgICAoaWYgcGFpclsxXQorICAgICAgICIiCisgICAgIGVsc2UK
KyAgICAgICAiISIKKyAgICAgZW5kKSArICJPRkZMSU5FX0FTTV8iICsgcGFpclswXQorICB9Lmpv
aW4oIiAmJiAiKQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGlz
QVNURXJyb25lb3VzKGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUZXN0cyB0byBzZWUgaWYgdGhlIEFTVCBj
bGFpbXMgdGhhdCB0aGVyZSBpcyBhbiBlcnJvciAtIGkuZS4gaWYgdGhlICAjCisjIHVzZXIncyBj
b2RlLCBhZnRlciBzZXR0aW5ncyByZXNvbHV0aW9uLCBoYXMgRXJyb3Igbm9kZXMuICAgICAgICAg
ICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBpc0FTVEVycm9u
ZW91cyhhc3QpCisgIG5vdCBhc3QuZmlsdGVyKEVycm9yKS5lbXB0eT8KK2VuZAorCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRl
U2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMKKyMgRW1pdHMgYSBjaGVjayB0aGF0IGFzc2VydHMgdGhhdCB3ZSdyZSB1c2luZyB0aGUgZ2l2
ZW4gY29uZmlndXJhdGlvbi4gIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwor
ZGVmIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAgJG91dHB1dC5wdXRz
IGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAkb3V0cHV0LnB1dHMgIiNlbHNl
IgorICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIkNvbmZpZ3VyYXRpb24gbWlzbWF0Y2guXCIiCisg
ICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwg
YmFja2VuZCkgeyAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBi
YWNrZW5kIHwgLi4uIH0gICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIEVtaXRzIGFsbCByZWxldmFudCBndWFyZHMgdG8gc2VlIGlmIHRoZSBjb25maWd1cmF0aW9u
IGhvbGRzIGFuZCAgICAgICMKKyMgY2FsbHMgdGhlIGJsb2NrIGlmIHRoZSBjb25maWd1cmF0aW9u
IGlzIG5vdCBlcnJvbmVvdXMuICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMKKworZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGlu
Z3MsIGFzdCwgYmFja2VuZCkKKyAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0
ZVNldHRpbmdzKQorICAKKyAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAgICRvdXRwdXQucHV0
cyAiI2Vycm9yIFwiSW52YWxpZCBjb25maWd1cmF0aW9uLlwiIgorICBlbHNpZiBub3QgV09SS0lO
R19CQUNLRU5EUy5pbmNsdWRlPyBiYWNrZW5kCisgICAgJG91dHB1dC5wdXRzICIjZXJyb3IgXCJU
aGlzIGJhY2tlbmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UKKyAgICB5aWVsZCBj
b25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICAkb3V0cHV0LnB1dHMg
IiNlbmRpZiIKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBlbWl0
Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXgg
fCAuLi4gfSAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFbWl0cyBndWFy
ZCBjb2RlcyBmb3IgYWxsIHZhbGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgY2FsbHMgdGhlIGJsb2Nr
ICAjCisjIGZvciB0aG9zZSBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSB2YWxpZCBhbmQgbm90IGVy
cm9uZW91cy4gICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisK
K2RlZiBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KQorICBmb3JFYWNoVmFsaWRTZXR0
aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxB
U1QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNv
bmNyZXRlU2V0dGluZ3MpCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1Qs
IGJhY2tlbmQsIGluZGV4CisgICAgJG91dHB1dC5wdXRzICIjZW5kaWYiCisgIH0KK2VuZAorCisK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5y
YgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5z
Zm9ybS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNTIgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKKworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbnN0
cnVjdCBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBJZlRoZW5FbHNlIG5vZGVzIGJ5
ICAgICAgICMKKyMgc3Vic3RpdHV0aW5nIGNvbmNyZXRlIGJvb2xlYW4gdmFsdWVzIGZvciBlYWNo
IFNldHRpbmcuICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG1h
cENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZVNldHRpbmdz
KHNldHRpbmdzKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZQorICBkZWYgcmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UK
KyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5kCisK
K2NsYXNzIFNldHRpbmcKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZXR0
aW5nc1tAbmFtZV0uYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZAorICBkZWYgcmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
LnZhbHVlIGFuZCBAcmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2Rl
CisgIGVuZAorZW5kCisKK2NsYXNzIE9yCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
CisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgb3IgQHJpZ2h0LnJl
c29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFz
cyBOb3QKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAobm90IEBjaGlsZC5y
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xh
c3MgSWZUaGVuRWxzZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGlmIEBw
cmVkaWNhdGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZQorICAgICAgQHRoZW5DYXNl
LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbHNlCisgICAgICBAZWxzZUNhc2UucmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1
ZW5jZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG5ld0xpc3QgPSBbXQor
ICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGl0ZW0gPSBpdGVtLnJlc29s
dmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgIGlmIGl0ZW0uaXNfYT8gU2VxdWVuY2UKKyAgICAg
ICAgbmV3TGlzdCArPSBpdGVtLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBp
dGVtCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xp
c3QpCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5v
ZGUuZGVtYWNyb2lmeShtYWNyb3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgbm9kZS5zdWJzdGl0dXRlKG1hcHBpbmcpICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGRlbWFjcm9p
ZnkoKSBjb25zdHJ1Y3RzIGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IE1hY3JvICAg
ICAgICMKKyMgbm9kZXMsIHdoaWxlIHN1YnN0aXR1dGUoKSByZXBsYWNlcyBWYXJpYWJsZSBub2Rl
cyB3aXRoIHRoZSBnaXZlbiAgICAgIworIyBub2RlcyBpbiB0aGUgbWFwcGluZy4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykK
KyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLmRlbWFjcm9p
ZnkobWFjcm9zKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQor
ICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0
ZShtYXBwaW5nKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBw
aW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vi
c3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8K
KyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBteU1hcHBpbmcgPSB7fQorICAgIG1hcHBp
bmcuZWFjaF9wYWlyIHsKKyAgICAgIHwga2V5LCB2YWx1ZSB8CisgICAgICB1bmxlc3MgQHZhcmlh
Ymxlcy5pbmNsdWRlPyBrZXkKKyAgICAgICAgbXlNYXBwaW5nW2tleV0gPSB2YWx1ZQorICAgICAg
ZW5kCisgICAgfQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hp
bGQuc3Vic3RpdHV0ZShteU1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJp
YWJsZQorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAg
ICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAor
ZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykK
KyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAg
ICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgc3Vi
c3RpdHV0ZShjb25zdGFudHMpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbXlDb25zdGFudHMgPSBj
b25zdGFudHMuZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYg
aXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAgICAgbXlDb25zdGFudHNbaXRlbS52YXJpYWJsZV0g
PSBpdGVtLnZhbHVlLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICBlbHNlCisgICAgICAg
IG5ld0xpc3QgPDwgaXRlbS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZW5kCisgICAg
fQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKKyAgCisgIGRl
ZiByZW5hbWVMYWJlbHMoY29tbWVudCkKKyAgICBtYXBwaW5nID0ge30KKyAgICAKKyAgICBAbGlz
dC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IExvY2FsTGFiZWwK
KyAgICAgICAgbWFwcGluZ1tpdGVtXSA9IExvY2FsTGFiZWwudW5pcXVlKGlmIGNvbW1lbnQgdGhl
biBjb21tZW50ICsgIl8iIGVsc2UgIiIgZW5kICsgaXRlbS5jbGVhbk5hbWUpCisgICAgICBlbmQK
KyAgICB9CisgICAgCisgICAgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICBlbmQKKyAgCisg
IGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBteU1hY3JvcyA9IG1hY3Jvcy5kdXAKKyAgICBA
bGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3JvCisg
ICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAg
bmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYg
aXRlbS5pc19hPyBNYWNybworICAgICAgICAjIElnbm9yZS4KKyAgICAgIGVsc2lmIGl0ZW0uaXNf
YT8gTWFjcm9DYWxsCisgICAgICAgIG1hcHBpbmcgPSB7fQorICAgICAgICBteU15TWFjcm9zID0g
bXlNYWNyb3MuZHVwCisgICAgICAgIHJhaXNlICJDb3VsZCBub3QgZmluZCBtYWNybyAje2l0ZW0u
bmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgbXlNYWNyb3NbaXRlbS5u
YW1lXQorICAgICAgICByYWlzZSAiQXJndW1lbnQgY291bnQgbWlzbWF0Y2ggZm9yIGNhbGwgdG8g
I3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIGl0ZW0ub3Bl
cmFuZHMuc2l6ZSA9PSBteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlcy5zaXplCisgICAgICAg
IGl0ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgfCBpZHggfAorICAgICAgICAg
IGlmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBWYXJpYWJsZSBhbmQgbXlNYWNyb3NbaXRlbS5v
cGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0u
bmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0u
bmFtZV0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNb
aWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2lmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19h
PyBNYWNybworICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlh
Ymxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgICBtYXBwaW5n
W215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFi
bGVzW2lkeF1dID0gbmlsCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0u
dmFyaWFibGVzW2lkeF1dID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgZW5kCisgICAg
ICAgIH0KKyAgICAgICAgbmV3TGlzdCArPSBteU1hY3Jvc1tpdGVtLm5hbWVdLmJvZHkuc3Vic3Rp
dHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNyb3MpLnJlbmFtZUxhYmVscyhpdGVtLm5h
bWUpLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtLmRlbWFjcm9pZnko
bXlNYWNyb3MpCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4s
IG5ld0xpc3QpLnN1YnN0aXR1dGUoe30pCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBDb25z
dHJ1Y3QgYSBuZXcgQVNUIHRoYXQgaGFzIG9mZnNldCB2YWx1ZXMgaW5zdGVhZCBvZiBzeW1ib2xp
YyAgICAgICAjCisjIG9mZnNldHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQor
ICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZU9m
ZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RP
ZmZzZXQKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlmIG9mZnNl
dHNbc2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0c1tzZWxmXSkK
KyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVv
ZgorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgc2l6ZXNbc2Vs
Zl0KKyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgc2l6ZXNbc2VsZl0pCisgICAgZWxz
ZQorICAgICAgcHV0cyAiQ291bGQgbm90IGZpbmQgI3tzZWxmLmluc3BlY3R9IGluICN7c2l6ZXMu
a2V5cy5pbnNwZWN0fSIKKyAgICAgIHB1dHMgInNpemVzID0gI3tzaXplcy5pbnNwZWN0fSIKKyAg
ICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgbm9kZS5mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFJlc29sdmUgY29u
c3RhbnQgcmVmZXJlbmNlcyBhbmQgY29tcHV0ZSBhcml0aG1ldGljIGV4cHJlc3Npb25zLiAgICAg
ICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVm
IGZvbGQKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLmZv
bGQKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMKKyAgZGVmIGZvbGQK
KyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJl
dHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1
bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdp
biwgQGxlZnQudmFsdWUgKyBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFN1Yklt
bWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQg
PSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlh
dGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIElt
bWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgLSBAcmlnaHQudmFsdWUpCisgIGVu
ZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBs
ZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVz
cyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0Lmlz
X2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUg
KiBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0ZQorICBkZWYg
Zm9sZAorICAgIEBjaGlsZCA9IEBjaGlsZC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBj
aGlsZC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC1AY2hp
bGQudmFsdWUpCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIG5vZGUucmVzb2x2ZUFmdGVyU2V0dGluZ3Mob2Zmc2V0cywgc2l6ZXMpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBDb21waWxlIGFzc2VtYmx5IGFn
YWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZl
KG9mZnNldHMsIHNpemVzKQorICAgIGRlbWFjcm9pZnkoe30pLnJlc29sdmVPZmZzZXRzKG9mZnNl
dHMsIHNpemVzKS5mb2xkCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjczIEBACisjIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBz
dXBwb3J0czhCaXRPblg4NgorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIw
IiwgInQxIiwgImExIiwgInIxIiwgInQyIiwgInQzIgorICAgICAgdHJ1ZQorICAgIHdoZW4gInQ0
IiwgImNmciIKKyAgICAgIGZhbHNlCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIGNhc2UgbmFtZQorICAgIHdoZW4g
InQwIiwgImEwIiwgInIwIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAg
ICAgICIlYWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlYXgiCisgICAgICB3aGVuIDpp
bnQKKyAgICAgICAgIiVlYXgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQK
KyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6
Ynl0ZQorICAgICAgICAiJWRsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWR4IgorICAg
ICAgd2hlbiA6aW50CisgICAgICAgICIlZWR4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQor
ICAgICAgZW5kCisgICAgd2hlbiAidDIiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5
dGUKKyAgICAgICAgIiVjbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVjeCIKKyAgICAg
IHdoZW4gOmludAorICAgICAgICAiJWVjeCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAg
ICAgIGVuZAorICAgIHdoZW4gInQzIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRl
CisgICAgICAgICIlYmwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlYngiCisgICAgICB3
aGVuIDppbnQKKyAgICAgICAgIiVlYngiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAg
ICBlbmQKKyAgICB3aGVuICJ0NCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQor
ICAgICAgICAiJXNpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVzaSIKKyAgICAgIHdo
ZW4gOmludAorICAgICAgICAiJWVzaSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAg
IGVuZAorICAgIHdoZW4gImNmciIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQor
ICAgICAgICAiJWRpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVkaSIKKyAgICAgIHdo
ZW4gOmludAorICAgICAgICAiJWVkaSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAg
IGVuZAorICAgIHdoZW4gInNwIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisg
ICAgICAgICIlc3BsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNwIgorICAgICAgd2hl
biA6aW50CisgICAgICAgICIlZXNwIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAg
ZW5kCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4ODZDYWxs
T3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgRlBSZWdpc3RlcklECisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgcmFpc2UgdW5s
ZXNzIGtpbmQgPT0gOmRvdWJsZQorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIsICJmYTAi
LCAiZnIiCisgICAgICAiJXhtbTAiCisgICAgd2hlbiAiZnQxIiwgImZhMSIKKyAgICAgICIleG1t
MSIKKyAgICB3aGVuICJmdDIiLCAiZmEyIgorICAgICAgIiV4bW0yIgorICAgIHdoZW4gImZ0MyIs
ICJmYTMiCisgICAgICAiJXhtbTMiCisgICAgd2hlbiAiZnQ0IgorICAgICAgIiV4bW00IgorICAg
IHdoZW4gImZ0NSIKKyAgICAgICIleG1tNSIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVu
ZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQo
a2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIHg4Nk9wZXJhbmQo
a2luZCkKKyAgICAiJCN7dmFsdWV9IgorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQp
CisgICAgIiN7dmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGRlZiBzdXBw
b3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtp
bmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0pIgorICBl
bmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9
IgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2
CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3tv
ZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSwgI3tpbmRleC54ODZPcGVyYW5k
KDppbnQpfSwgI3tzY2FsZX0pIgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkK
KyAgICAiKiN7eDg2b3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRl
QWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAgIAor
ICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje2FkZHJlc3MudmFsdWV9IgorICBlbmQKKwor
ICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7YWRkcmVzcy52YWx1ZX0iCisgIGVu
ZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgIGRlZiB4ODZMYWJlbAorICAgIHNhbml0
aXplTGFiZWxOYW1lKG5hbWUpCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAg
ICB4ODZMYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCisgIGRl
ZiB4ODZMYWJlbAorICAgICJMX29mZmxpbmVhc21fIituYW1lWzEuLi0xXQorICBlbmQKKyAgZGVm
IHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgeDg2TGFiZWwKKyAgZW5kCitlbmQKKworY2xhc3Mg
SW5zdHJ1Y3Rpb24KKyAgZGVmIHg4Nk9wZXJhbmRzKCpraW5kcykKKyAgICByYWlzZSB1bmxlc3Mg
a2luZHMuc2l6ZSA9PSBvcGVyYW5kcy5zaXplCisgICAgcmVzdWx0ID0gW10KKyAgICBraW5kcy5z
aXplLnRpbWVzIHsKKyAgICAgIHwgaWR4IHwKKyAgICAgIHJlc3VsdCA8PCBvcGVyYW5kc1tpZHhd
Lng4Nk9wZXJhbmQoa2luZHNbaWR4XSkKKyAgICB9CisgICAgcmVzdWx0LmpvaW4oIiwgIikKKyAg
ZW5kCisKKyAgZGVmIHg4NlN1ZmZpeChraW5kKQorICAgIGNhc2Uga2luZAorICAgIHdoZW4gOmJ5
dGUKKyAgICAgICJiIgorICAgIHdoZW4gOmhhbGYKKyAgICAgICJ3IgorICAgIHdoZW4gOmludAor
ICAgICAgImwiCisgICAgd2hlbiA6ZG91YmxlCisgICAgICAic2QiCisgICAgZWxzZQorICAgICAg
cmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFu
ZHMob3Bjb2RlLCBraW5kLCBudW1PcGVyYW5kcykKKyAgICBpZiBudW1PcGVyYW5kcyA9PSAzCisg
ICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1dHMgIlx0
I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0u
eDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNpZiBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1sy
XQorICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNlCisg
ICAgICAgICRhc20ucHV0cyAiXHRtb3Yje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAg
ICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9
LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5kCisgICAgZWxzZQor
ICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2lu
ZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBoYW5kbGVYODZPcChvcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2T3BXaXRoTnVt
T3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXplKQorICBlbmQKKyAgCisgIGRlZiBo
YW5kbGVYODZTaGlmdChvcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1t
ZWRpYXRlIG9yIG9wZXJhbmRzWzBdID09IFJlZ2lzdGVySUQuZm9yTmFtZShuaWwsICJ0MiIpCisg
ICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0
ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRh
c20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4Igor
ICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAlY2wsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZChraW5kKX0iCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDppbnQpfSwgJWVjeCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2RG91
YmxlQnJhbmNoKGJyYW5jaE9wY29kZSwgbW9kZSkKKyAgICBjYXNlIG1vZGUKKyAgICB3aGVuIDpu
b3JtYWwKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hl
biA6cmV2ZXJzZQorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAg
ICBlbHNlCisgICAgICByYWlzZSBtb2RlLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMg
Ilx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICBlbmQKKyAgCisg
IGRlZiBoYW5kbGVYODZJbnRDb21wYXJlKG9wY29kZVN1ZmZpeCwga2luZCkKKyAgICBpZiBvcGVy
YW5kc1swXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDAgYW5kIG9w
ZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9yIG9w
Y29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChr
aW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNpZiBvcGVyYW5k
c1sxXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzFdLnZhbHVlID09IDAgYW5kIG9wZXJh
bmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9yIG9wY29k
ZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5k
KX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNt
LnB1dHMgIlx0Y21wI3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChr
aW5kKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAor
ICAKKyAgZGVmIGhhbmRsZVg4NkludEJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFu
ZGxlWDg2SW50Q29tcGFyZShicmFuY2hPcGNvZGVbMS4uLTFdLCBraW5kKQorICAgICRhc20ucHV0
cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgIGVuZAorICAK
KyAgZGVmIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmQpCisgICAgaWYgb3BlcmFuZC5z
dXBwb3J0czhCaXRPblg4NgorICAgICAgJGFzbS5wdXRzICJcdCN7c2V0T3Bjb2RlfSAje29wZXJh
bmQueDg2T3BlcmFuZCg6Ynl0ZSl9IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAje29wZXJh
bmQueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQp
fSwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHQje3NldE9wY29kZX0gJWFsIgorICAgICAgJGFz
bS5wdXRzICJcdG1vdnpibCAlYWwsICVlYXgiCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tv
cGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRl
ZiBoYW5kbGVYODZJbnRDb21wYXJlU2V0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZJ
bnRDb21wYXJlKHNldE9wY29kZVszLi4tMV0sIGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9w
Y29kZSwgb3BlcmFuZHNbMl0pCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlRlc3Qoa2luZCkK
KyAgICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hl
biAyCisgICAgICBtYXNrID0gSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtMSkKKyAgICB3aGVu
IDMKKyAgICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJFeHBl
Y3RlZCAyIG9yIDMgb3BlcmFuZHMsIGJ1dCBnb3QgI3tvcGVyYW5kcy5zaXplfSBhdCAje2NvZGVP
cmlnaW5TdHJpbmd9IgorICAgIGVuZAorICAgIAorICAgIGlmIG1hc2suaXNfYT8gSW1tZWRpYXRl
IGFuZCBtYXNrLnZhbHVlID09IC0xCisgICAgICBpZiB2YWx1ZS5pc19hPyBSZWdpc3RlcklECisg
ICAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7dmFsdWUueDg2T3Bl
cmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNlCisgICAg
ICAgICRhc20ucHV0cyAiXHRjbXAje3g4NlN1ZmZpeChraW5kKX0gJDAsICN7dmFsdWUueDg2T3Bl
cmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0dGVz
dCN7eDg2U3VmZml4KGtpbmQpfSAje21hc2sueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2
T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkJyYW5j
aFRlc3QoYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICAk
YXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHMubGFzdC54ODZMYWJlbH0iCisg
IGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldFRlc3Qoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhh
bmRsZVg4NlRlc3Qoa2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kcy5s
YXN0KQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcEJyYW5jaChvcGNvZGUsIGJyYW5jaE9w
Y29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQs
IG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gNAor
ICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgd2hlbiAzCisgICAgICBqdW1wVGFy
Z2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAg
ICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7anVtcFRhcmdldC54ODZM
YWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlN1YkJyYW5jaChicmFuY2hPcGNvZGUs
IGtpbmQpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSA0IGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVy
YW5kc1syXQorICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAg
ICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMoInN1YiN7eDg2U3VmZml4KGtpbmQpfSIsIGtp
bmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGVuZAorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQor
ICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgd2hlbiAzCisg
ICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICByYWlzZSBzZWxm
Lmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7anVt
cFRhcmdldC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGxvd2VyWDg2CisgICAgJGFzbS5j
b21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICBjYXNlIG9wY29kZQorICAgIHdoZW4gImFkZGki
LCAiYWRkcCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNf
YT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdp
c3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklE
CisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAgICAgICB1bmxlc3Mgb3Bl
cmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAkYXNtLnB1dHMg
Ilx0bGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmlu
dCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgZW5kCisgICAg
ICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVy
SUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAg
ICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAg
JGFzbS5wdXRzICJcdGxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgICAgZWxzZQorICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09
IG9wZXJhbmRzWzBdCisgICAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3t4ODZPcGVyYW5kcyg6
aW50LCA6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAgd2hlbiAiYW5kaSIsICJh
bmRwIgorICAgICAgaGFuZGxlWDg2T3AoImFuZGwiLCA6aW50KQorICAgIHdoZW4gImxzaGlmdGki
CisgICAgICBoYW5kbGVYODZTaGlmdCgic2FsbCIsIDppbnQpCisgICAgd2hlbiAibXVsaSIKKyAg
ICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRl
CisgICAgICAgICRhc20ucHV0cyAiXHRpbXVsbCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQsIDpp
bnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgIyBGSVhNRTogY291bGQgZG8gc29tZSBwZWVwaG9s
ZSBpbiBjYXNlIHRoZSBsZWZ0IG9wZXJhbmQgaXMgaW1tZWRpYXRlIGFuZCBpdCdzCisgICAgICAg
ICMgYSBwb3dlciBvZiB0d28uCisgICAgICAgIGhhbmRsZVg4Nk9wKCJpbXVsbCIsIDppbnQpCisg
ICAgICBlbmQKKyAgICB3aGVuICJuZWdpIgorICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3t4ODZP
cGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAibm90aSIKKyAgICAgICRhc20ucHV0cyAiXHRub3Rs
ICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm9yaSIsICJvcnAiCisgICAgICBoYW5k
bGVYODZPcCgib3JsIiwgOmludCkKKyAgICB3aGVuICJyc2hpZnRpIgorICAgICAgaGFuZGxlWDg2
U2hpZnQoInNhcmwiLCA6aW50KQorICAgIHdoZW4gInVyc2hpZnRpIgorICAgICAgaGFuZGxlWDg2
U2hpZnQoInNocmwiLCA6aW50KQorICAgIHdoZW4gInN1YmkiLCAic3VicCIKKyAgICAgIGlmIG9w
ZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAg
JGFzbS5wdXRzICJcdG5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
ICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgaGFuZGxl
WDg2T3AoInN1YmwiLCA6aW50KQorICAgICAgZW5kCisgICAgd2hlbiAieG9yaSIsICJ4b3JwIgor
ICAgICAgaGFuZGxlWDg2T3AoInhvcmwiLCA6aW50KQorICAgIHdoZW4gImxvYWRpIiwgInN0b3Jl
aSIsICJsb2FkcCIsICJzdG9yZXAiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje3g4Nk9wZXJh
bmRzKDppbnQsIDppbnQpfSIKKyAgICB3aGVuICJsb2FkYiIKKyAgICAgICRhc20ucHV0cyAiXHRt
b3Z6YmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGgiCisgICAgICAkYXNtLnB1dHMgIlx0bW92
endsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Zi
ICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0iCisgICAgd2hlbiAibG9hZGQiLCAibW92ZWQi
LCAic3RvcmVkIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJs
ZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImFkZGQiCisgICAgICAkYXNtLnB1dHMgIlx0YWRkc2Qg
I3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAiZGl2ZCIKKyAgICAg
ICRhc20ucHV0cyAiXHRkaXZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAg
ICB3aGVuICJzdWJkIgorICAgICAgJGFzbS5wdXRzICJcdHN1YnNkICN7eDg2T3BlcmFuZHMoOmRv
dWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gIm11bGQiCisgICAgICAkYXNtLnB1dHMgIlx0bXVs
c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3FydGQiCisg
ICAgICAkYXNtLnB1dHMgIlx0c3FydHNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiY2kyZCIK
KyAgICAgICRhc20ucHV0cyAiXHRjdnRzaTJzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmlu
dCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImJkZXEi
CisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZGVxIikKKyAgICAgICRh
c20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0anAg
I3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4NkxhYmVsfSIK
KyAgICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBv
cGVyYW5kc1syXSkueDg2TGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisg
ICAgd2hlbiAiYmRuZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpuZSIsIDpub3Jt
YWwpCisgICAgd2hlbiAiYmRndCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6
bm9ybWFsKQorICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgi
amFlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJh
bmNoKCJqYSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHRlcSIKKyAgICAgIGhhbmRsZVg4NkRv
dWJsZUJyYW5jaCgiamFlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRlcXVuIgorICAgICAgaGFu
ZGxlWDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRuZXF1biIKKyAg
ICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4iKQorICAgICAgaXNF
cXVhbCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgICRhc20ucHV0cyAiXHR1
Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0anAgI3tMYWJlbFJlZmVy
ZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4NkxhYmVsfSIKKyAgICAgICRhc20u
cHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc0VxdWFsKS54ODZM
YWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICAgICRhc20ucHV0cyAi
XHRqbXAgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICBpc0VxdWFsLmxvd2VyKCJYODYi
KQorICAgIHdoZW4gImJkZ3R1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6
cmV2ZXJzZSkKKyAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5j
aCgiamJlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdHVuIgorICAgICAgaGFuZGxlWDg2RG91
YmxlQnJhbmNoKCJqYiIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRsdGVxdW4iCisgICAgICBoYW5k
bGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYnRkMmkiCisgICAg
ICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0
Y21wbCAkMHg4MDAwMDAwMCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
JGFzbS5wdXRzICJcdGplICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgIHdoZW4gInRkMmki
CisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiYmNk
MmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNt
LnB1dHMgIlx0dGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje29wZXJhbmRz
WzJdLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnRzaTJzZCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFzbS5wdXRz
ICJcdGpwICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJcdGpuZSAj
e29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJtb3ZkeiIKKyAgICAgICRhc20ucHV0
cyAiXHR4b3JwZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gInBvcCIKKyAgICAgICRhc20ucHV0
cyAiXHRwb3AgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJwdXNo
IgorICAgICAgJGFzbS5wdXRzICJcdHB1c2ggI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQp
fSIKKyAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgaWYgSW1tZWRpYXRl
Lm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3Rl
cklECisgICAgICAgICRhc20ucHV0cyAiXHR4b3JsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNpZiBvcGVy
YW5kc1swXSAhPSBvcGVyYW5kc1sxXQorICAgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje3g4Nk9w
ZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgIGVuZAorICAgIHdoZW4gIm5vcCIKKyAgICAgICRh
c20ucHV0cyAiXHRub3AiCisgICAgd2hlbiAiYmllcSIsICJicGVxIgorICAgICAgaGFuZGxlWDg2
SW50QnJhbmNoKCJqZSIsIDppbnQpCisgICAgd2hlbiAiYmluZXEiLCAiYnBuZXEiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDppbnQpCisgICAgd2hlbiAiYmlhIiwgImJwYSIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6aW50KQorICAgIHdoZW4gImJpYWVxIiwgImJw
YWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6aW50KQorICAgIHdoZW4gImJp
YiIsICJicGIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmludCkKKyAgICB3aGVu
ICJiaWJlcSIsICJicGJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmludCkK
KyAgICB3aGVuICJiaWd0IiwgImJwZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwg
OmludCkKKyAgICB3aGVuICJiaWd0ZXEiLCAiYnBndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqZ2UiLCA6aW50KQorICAgIHdoZW4gImJpbHQiLCAiYnBsdCIKKyAgICAgIGhhbmRsZVg4
NkludEJyYW5jaCgiamwiLCA6aW50KQorICAgIHdoZW4gImJpbHRlcSIsICJicGx0ZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpsZSIsIDppbnQpCisgICAgd2hlbiAiYmJlcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYm5lcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDpieXRlKQorICAgIHdoZW4gImJiYWVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmIiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiZXEiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRlKQorICAgIHdoZW4gImJiZ3QiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJndGVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0IgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDpieXRlKQorICAgIHdoZW4gImJibHRlcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGlvIiwgImJ0
cG8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDppbnQpCisgICAgd2hlbiAiYnRp
cyIsICJidHBzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6aW50KQorICAgIHdo
ZW4gImJ0aXoiLCAiYnRweiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6IiwgOmludCkK
KyAgICB3aGVuICJidGlueiIsICJidHBueiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpu
eiIsIDppbnQpCisgICAgd2hlbiAiYnRibyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpv
IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRicyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpz
IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRieiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6
IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRibnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
bnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJqbXAiCisgICAgICAkYXNtLnB1dHMgIlx0am1wICN7b3Bl
cmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJhZGRpbyIsICJiYWRk
cG8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbyIsIDppbnQpCisgICAgd2hl
biAiYmFkZGlzIiwgImJhZGRwcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpz
IiwgOmludCkKKyAgICB3aGVuICJiYWRkaXoiLCAiYmFkZHB6IgorICAgICAgaGFuZGxlWDg2T3BC
cmFuY2goImFkZGwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJhZGRpbnoiLCAiYmFkZHBueiIK
KyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAi
YnN1YmlvIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbyIsIDppbnQpCisgICAgd2hlbiAi
YnN1YmlzIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqcyIsIDppbnQpCisgICAgd2hlbiAi
YnN1Yml6IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqeiIsIDppbnQpCisgICAgd2hlbiAi
YnN1YmlueiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam56IiwgOmludCkKKyAgICB3aGVu
ICJibXVsaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAiam8iLCA6aW50KQor
ICAgIHdoZW4gImJtdWxpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqcyIs
IDppbnQpCisgICAgd2hlbiAiYm11bGl6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxs
IiwgImp6IiwgOmludCkKKyAgICB3aGVuICJibXVsaW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFu
Y2goImltdWxsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYm9yaW8iCisgICAgICBoYW5kbGVY
ODZPcEJyYW5jaCgib3JsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJib3JpcyIKKyAgICAgIGhh
bmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJvcml6IgorICAg
ICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYm9yaW56
IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4g
ImJyZWFrIgorICAgICAgJGFzbS5wdXRzICJcdGludCAkMyIKKyAgICB3aGVuICJjYWxsIgorICAg
ICAgJGFzbS5wdXRzICJcdGNhbGwgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0i
CisgICAgd2hlbiAicmV0IgorICAgICAgJGFzbS5wdXRzICJcdHJldCIKKyAgICB3aGVuICJjaWVx
IiwgImNwZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRlIiwgOmludCkKKyAg
ICB3aGVuICJjaW5lcSIsICJjcG5lcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNl
dG5lIiwgOmludCkKKyAgICB3aGVuICJjaWEiLCAiY3BhIgorICAgICAgaGFuZGxlWDg2SW50Q29t
cGFyZVNldCgic2V0YSIsIDppbnQpCisgICAgd2hlbiAiY2lhZXEiLCAiY3BhZXEiCisgICAgICBo
YW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRhZSIsIDppbnQpCisgICAgd2hlbiAiY2liIiwgImNw
YiIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGIiLCA6aW50KQorICAgIHdoZW4g
ImNpYmVxIiwgImNwYmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YmUiLCA6
aW50KQorICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVT
ZXQoInNldGciLCA6aW50KQorICAgIHdoZW4gImNpZ3RlcSIsICJjcGd0ZXEiCisgICAgICBoYW5k
bGVYODZJbnRDb21wYXJlU2V0KCJzZXRnZSIsIDppbnQpCisgICAgd2hlbiAiY2lsdCIsICJjcGx0
IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bCIsIDppbnQpCisgICAgd2hlbiAi
Y2lsdGVxIiwgImNwbHRlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGxlIiwg
OmludCkKKyAgICB3aGVuICJ0aW8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmlu
dCkKKyAgICB3aGVuICJ0aXMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmludCkK
KyAgICB3aGVuICJ0aXoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmludCkKKyAg
ICB3aGVuICJ0aW56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6aW50KQorICAg
IHdoZW4gInRibyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6Ynl0ZSkKKyAgICB3
aGVuICJ0YnMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmJ5dGUpCisgICAgd2hl
biAidGJ6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDpieXRlKQorICAgIHdoZW4g
InRibnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDpieXRlKQorICAgIHdoZW4g
InBlZWsiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzBdLnZhbHVlICogNH0o
JWVzcCksICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicG9rZSIK
KyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0s
ICN7b3BlcmFuZHNbMV0udmFsdWUgKiA0fSglZXNwKSIKKyAgICB3aGVuICJjZHFpIgorICAgICAg
JGFzbS5wdXRzICJcdGNkcSIKKyAgICB3aGVuICJpZGl2aSIKKyAgICAgICRhc20ucHV0cyAiXHRp
ZGl2bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImZpaTJkIgor
ICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwg
I3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRt
b3ZkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgJGFzbS5w
dXRzICJcdHBzbGxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cG9yICV4bW03LCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImZkMmlpIgorICAg
ICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Zz
ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20u
cHV0cyAiXHRwc3JscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNkICV4bW03
LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIHJhaXNl
ICJCYWQgb3Bjb2RlOiAje29wY29kZX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRp
b25LaW5kLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kX2gKKyNkZWZpbmUgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisK
K25hbWVzcGFjZSBKU0MgeworCitlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9y
Q2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkocmV2aXNpb24gMTA1NzcwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQ29tbW9uU2xvd1BhdGhzX2gKIAogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIK
ICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogCkBA
IC00MSw2ICs0MiwzOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIENvbW1vblNsb3dQ
YXRocyB7CiAKK0FMV0FZU19JTkxJTkUgRXhlY1N0YXRlKiBhcml0eUNoZWNrRm9yKEV4ZWNTdGF0
ZSogZXhlYywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNh
bGxlZSgpKTsKKyAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7CisgICAgQ29k
ZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVk
Qnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0g
ZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKKworICAgIC8vIFRoaXMgZW5zdXJl
cyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8gYXJndW1l
bnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgorICAgIGlmICghcmVnaXN0ZXJGaWxlLT5ncm93KGV4
ZWMtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2Rl
QmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBB
U1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFt
ZXRlcnMoKSk7CisKKyAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUg
YW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZp
bmVkLgorICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0g
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CisgICAgUmVnaXN0ZXIqIHNyYyA9IGV4ZWMtPnJl
Z2lzdGVycygpOworICAgIFJlZ2lzdGVyKiBkc3QgPSBleGVjLT5yZWdpc3RlcnMoKSArIGRlbHRh
OworCisgICAgaW50IGk7CisgICAgaW50IGVuZCA9IC1FeGVjU3RhdGU6Om9mZnNldEZvcihhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgZm9yIChpID0gLTE7IGkgPj0gZW5kOyAtLWkp
CisgICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKKworICAgIGVuZCAtPSBkZWx0YTsKKyAgICBmb3Ig
KCA7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7CisKKyAg
ICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBFeGVjU3RhdGU6OmNyZWF0ZShkc3QpOworICAgIEFTU0VS
VCgodm9pZCopbmV3RXhlYyA8PSByZWdpc3RlckZpbGUtPmVuZCgpKTsKKyAgICByZXR1cm4gbmV3
RXhlYzsKK30KKwogQUxXQVlTX0lOTElORSBib29sIG9wSW5zdGFuY2VPZlNsb3coRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGJhc2VWYWwsIEpTVmFsdWUgcHJvdG8pCiB7
CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0NlbGwoKSB8fCAhYmFzZVZhbC5pc0NlbGwoKSB8fCAhcHJv
dG8uaXNDZWxsKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2lu
Y2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5j
bHVkZSAiREZHRHJpdmVyLmgiCisjaW5jbHVkZSAiRXhlY3V0aW9uSGFybmVzcy5oIgogI2luY2x1
ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVERyaXZlci5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgpA
QCAtODQsNyArODUsNyBAQCBJbnRyaW5zaWMgTmF0aXZlRXhlY3V0YWJsZTo6aW50cmluc2ljKCkg
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIHZvaWQgamV0dGlzb25Db2RlQmxvY2soSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8VD4mIGNvZGVCbG9jaykKIHsKLSAgICBBU1NF
UlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAg
IEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkp
KTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKICAgICBPd25QdHI8VD4g
Y29kZUJsb2NrVG9KZXR0aXNvbiA9IGNvZGVCbG9jay5yZWxlYXNlKCk7CiAgICAgY29kZUJsb2Nr
ID0gc3RhdGljX3BvaW50ZXJfY2FzdDxUPihjb2RlQmxvY2tUb0pldHRpc29uLT5yZWxlYXNlQWx0
ZXJuYXRpdmUoKSk7CkBAIC0xNjcsOSArMTY4LDMwIEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJs
ZTo6Y29tcGlsZU9wdGltaXoKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRXZhbEV4ZWN1
dGFibGU6OmppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wg
cmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJs
b2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCitpbmxpbmUgY29uc3QgY2hhciogc2Ft
cGxpbmdEZXNjcmlwdGlvbihKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisgICAgc3dpdGNo
IChqaXRUeXBlKSB7CisgICAgY2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rOgorICAgICAg
ICByZXR1cm4gIkludGVycHJldGVyIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklU
Q29kZTo6QmFzZWxpbmVKSVQ6CisgICAgICAgIHJldHVybiAiQmFzZWxpbmUgQ29tcGlsYXRpb24g
KFRPVEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6CisgICAgICAgIHJldHVybiAiREZH
IENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIEpTT2JqZWN0KiBFdmFs
RXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5v
ZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJ
VCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRP
VEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3Jp
cHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJB
TShqaXRUeXBlKTsKQEAgLTIxMCw3ICsyMzIsNyBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6
OmNvbXBpbGVJbnRlcm5hCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENv
bXBpbGVJZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29k
ZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xvYmFs
RGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtMjk1LDkgKzMxNywxNSBAQCBKU09iamVjdCogUHJv
Z3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpCiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lk
IFByb2dyYW1FeGVjdXRhYmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
K3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEs
IG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGll
ckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwogSlNPYmpl
Y3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBT
Y29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkK
IHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6
OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21w
aWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2Ft
cGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAg
VU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtMzM2LDcgKzM2NCw3IEBAIEpTT2JqZWN0KiBQcm9n
cmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGUKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAg
IGlmICghaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoKmdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVC
bG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhl
Y3V0aW9uKCpnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGws
IGppdFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC00MTIsNyArNDQwLDcg
QEAgRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6YgogICAgIHdoaWxlIChy
ZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEZ1bmN0
aW9uQ29kZUJsb2NrKj4ocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKTsKICAgICBBU1NFUlQocmVzdWx0
KTsKLSAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVK
SVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5
cGUoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQzOCw2ICs0NjYsMTggQEAgSlNP
YmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZU9wdAogICAgIHJldHVybiBlcnJvcjsK
IH0KIAordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDYWxsKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlv
bklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVG
b3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJ
VENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3Vs
dCk7Cit9CisKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ29uc3RydWN0
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBp
bGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1
Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5
Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5j
dGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja1dpdGhCeXRlY29kZUZvcihDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpCiB7CiAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2Vs
aW5lQ29kZUJsb2NrRm9yKGtpbmQpOwpAQCAtNDgyLDcgKzUyMiw3IEBAIFBhc3NPd25QdHI8RnVu
Y3Rpb25Db2RlQmxvY2s+IEZ1bmN0aW9uRXgKIAogSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBs
aW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQg
PyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RB
TCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0
aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0o
ZXhlYyk7CkBAIC01MDQsNyArNTQ0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNhbGwtPnNoYXJl
ZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1
bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ2Fs
bCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5
bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlv
bihleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2Fs
bCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBl
LCBDb2RlRm9yQ2FsbCkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTUyNCw3ICs1
NjQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAKIEpTT2Jq
ZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbChFeGVj
U3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklU
VHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5
cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFM
KSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1w
bGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5B
QkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC01NDYsNyArNTg2LDcgQEAg
SlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFi
bGUgPSBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+c2hhcmVkU3ltYm9sVGFibGUoKTsKIAogI2lm
IEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNv
bnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFi
bGUsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0
cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUs
IGppdFR5cGUsIENvZGVGb3JDb25zdHJ1Y3QpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZp
c2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRXhlY3V0YWJsZV9o
CiAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktp
bmQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtMzksMTIgKzQwLDEyIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIGNsYXNzIERlYnVnZ2VyOwogICAgIGNsYXNzIEV2YWxDb2RlQmxvY2s7CiAgICAgY2xhc3Mg
RnVuY3Rpb25Db2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAg
IGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKICAg
ICBzdHJ1Y3QgRXhjZXB0aW9uSW5mbzsKICAgICAKLSAgICBlbnVtIENvZGVTcGVjaWFsaXphdGlv
bktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogICAgIGVudW0gQ29tcGls
YXRpb25LaW5kIHsgRmlyc3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CiAK
ICAgICBpbmxpbmUgYm9vbCBpc0NhbGwoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAt
MzE5LDYgKzMyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBFdmFs
RXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYg
U2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC0zMzgsNiArMzQwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRp
bWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNHbG9i
YWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBFdmFsQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRl
Y29kZSgpCkBAIC0zODQsNiArMzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAg
IGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAg
ICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTQxMSw2ICs0MTUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9p
ZCBqZXR0aXNvbk9wdGltaXplZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0
Q29tcGlsZShKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIFByb2dyYW1Db2RlQmxv
Y2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkKQEAgLTQ1Myw2ICs0NTgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRh
YmxlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0
RXhlY3V0YWJsZSBCYXNlOwogCkBAIC01MDgsNiArNTE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRD
b2RlRm9yQ2FsbChKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ2Fs
bChKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JD
YWxsKCkgY29uc3QKQEAgLTUzNSw2ICs1NDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JD
b25zdHJ1Y3QoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNvbnN0
cnVjdChKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRG
b3JDb25zdHJ1Y3QoKSBjb25zdApAQCAtNTgyLDYgKzU5MCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgICAgICBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoZ2xvYmFs
RGF0YSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQg
aml0Q29tcGlsZUZvcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNh
bGwpIHsKKyAgICAgICAgICAgICAgICBqaXRDb21waWxlRm9yQ2FsbChnbG9iYWxEYXRhKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQo
a2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgICAgIGppdENvbXBpbGVGb3JDb25z
dHJ1Y3QoZ2xvYmFsRGF0YSk7CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICAKICAgICAgICAg
Ym9vbCBpc0dlbmVyYXRlZEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFy
bmVzcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRXhlY3V0aW9uSGFybmVzc19oCisj
ZGVmaW5lIEV4ZWN1dGlvbkhhcm5lc3NfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisK
KyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiSklURHJpdmVyLmgiCisjaW5jbHVkZSAiTExJ
bnRFbnRyeXBvaW50cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUg
Q29kZUJsb2NrVHlwZT4KK2lubGluZSBib29sIHByZXBhcmVGb3JFeGVjdXRpb24oSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklUQ29k
ZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworI2lmIEVOQUJMRShMTElO
VCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAgICAg
Ly8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExMSW50
OjpnZXRFbnRyeXBvaW50KGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7Cisg
ICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJ
TlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIGNvZGVC
bG9jaywgaml0Q29kZSwgaml0VHlwZSk7Cit9CisKK2lubGluZSBib29sIHByZXBhcmVGdW5jdGlv
bkZvckV4ZWN1dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxGdW5jdGlvbkNv
ZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFi
bGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUo
aml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJw
cmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwg
a2luZCwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgY29kZUJsb2Nr
LT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGtpbmQpOworI2VuZGlm
IC8vIEVOQUJMRShMTElOVCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3By
aWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVj
aywgc3ltYm9sVGFibGUsIGppdFR5cGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCisKKyNlbmRpZiAvLyBFeGVjdXRpb25IYXJuZXNzX2gKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJldmlz
aW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJh
eSA9IGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPltyZWdpc3RlckFycmF5
U2l6ZV0pOwogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVycyA9IHJlZ2lz
dGVyQXJyYXkuZ2V0KCkgKyByZWdpc3Rlck9mZnNldDsKLQorICAgICAgICAKICAgICAgICAgLy8g
Q29weSBhbGwgYXJndW1lbnRzIHRoYXQgY2FuIGJlIGNhcHR1cmVkIGJ5IG5hbWUgb3IgYnkgdGhl
IGFyZ3VtZW50cyBvYmplY3QuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9udW1DYXB0
dXJlZEFyZ3M7ICsraSkgewogICAgICAgICAgICAgaW50IGluZGV4ID0gQ2FsbEZyYW1lOjphcmd1
bWVudE9mZnNldChpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IAogICAgIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmllcjxVbmtu
b3duPiB7CiAgICAgICAgIHR5cGVkZWYgV3JpdGVCYXJyaWVyPFVua25vd24+IEJhc2U7CkBAIC0x
MjIsNiArMTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEpTQXJy
YXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBw
cm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2
aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAg
IGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OworICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGVu
dW0gRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywK
QEAgLTE2NCw2ICsxNjUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGNv
bnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1
cmU+IG1fc3RydWN0dXJlOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xh
c3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNs
YXNzIFNvdXJjZUNvZGU7CiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0xNDAsNiArMTQxLDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgc3RhdGlj
IEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50
aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmNwcAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw4IEBA
IEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICAsIGtleXdvcmRz
KGFkb3B0UHRyKG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRlcnByZXRlcigwKQogICAg
ICwgaGVhcCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFzc0luZm8oJkpTQXJyYXk6
OnNfaW5mbykKKyAgICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpTRmluYWxPYmplY3Q6OnNf
aW5mbykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxhc3RTY3JhdGNoQnVmZmVy
KDApCiAjZW5kaWYKQEAgLTIxNiw3ICsyMTgsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0
YShHbG9iYWxEYXRhVHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1bmtzKHRo
aXMpKTsKICNlbmRpZgogCi0gICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUodGhpcy0+Y2FuVXNl
SklUKCkpOworICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKCZsbGludERhdGEsIHRoaXMtPmNh
blVzZUpJVCgpKTsKIAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xsZWN0KCk7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNp
b24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNiBAQAogI2RlZmluZSBKU0dsb2JhbERh
dGFfaAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oIgotI2luY2x1
ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5jbHVk
ZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJT
dHJvbmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgog
I2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJO
dW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlN0
cm9uZy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJUaW1lb3V0Q2hlY2tl
ci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYgKzY2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAg
ICAgY2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAg
IGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmE7CiAgICAgY2xh
c3MgUmVnRXhwQ2FjaGU7CkBAIC0yNDEsNiArMjQzLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247CisKKyAgICAgICAg
Y29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOworICAgICAgICBjb25zdCBD
bGFzc0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CisKKyAgICAgICAgTExJbnQ6
OkRhdGEgbGxpbnREYXRhOworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgUmV0dXJuQWRkcmVz
c1B0ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBob3N0Q2FsbFJldHVyblZh
bHVlOwpAQCAtMzQ2LDYgKzM1NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogI3VuZGVmIHJlZ2lzdGVy
VHlwZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNHbG9iYWxEYXRhKEds
b2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKICAgICAgICAgc3RhdGlj
IEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAgdm9pZCBj
cmVhdGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2
ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwog
ICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CisgICAg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBSZWdFeHBDb25z
dHJ1Y3RvcjsKQEAgLTMzNSw2ICszMzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyos
IGludCBjb3VudCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVzZXQg
aW50byBpbml0LgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluaXQoSlNPYmplY3Qq
IHRoaXNWYWx1ZSk7CiAgICAgICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMDU3
NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEdldHRl
clNldHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlv
bjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQmxv
Y2s7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFt
ZUFycmF5OwpAQCAtMjcxLDYgKzI3Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU09i
amVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3Rv
cmFnZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gTm9ib2R5IHNob3VsZCBldmVyIGFzayBh
bnkgb2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0aGluZyBhbHJlYWR5IGtub3duIHRvIGJlIGEg
SlNPYmplY3QuCiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXI7CiAgICAg
ICAgIHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7CkBAIC0zODMsNiArMzg2LDggQEAgQ09N
UElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0IEpTRmlu
YWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
ICAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX2lubGluZVN0
b3JhZ2UpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwNTc3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciA6IHB1Ymxp
YyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtOTYsNiArOTcsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0
eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKIAogICAgICAgICBXcml0
ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
NiArMzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1N0cmluZzsKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmlu
ZyhKU0dsb2JhbERhdGEqKTsKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUq
KTsKQEAgLTI0MCw2ICsyNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToK
KyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikgY29u
c3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIqKSBjb25zdDsKICAg
ICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFyKikgY29uc3Q7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAxMDU3NzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkIHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJsZS4KICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8PCAxOwogICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEgPDwgMjsKQEAgLTg3LDYgKzg5LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29s
IGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA8PSAoMSA8
PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAgICAgICBib29sIGlzU2V0T25GbGFn
czIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8PCA4KSk7IHJldHVy
biBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDEwICsx
MTYsOSBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiAgICAgcmV0
dXJuIEpTTm90QW5PYmplY3Q6OmNyZWF0ZShleGVjKTsKIH0KIAotI2lmbmRlZiBOREVCVUcKIGNo
YXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIHsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNp
emUgPSA2NDsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSAxMjg7CiAgICAgc3RhdGlj
IGNoYXIgZGVzY3JpcHRpb25bc2l6ZV07CiAKICAgICBpZiAoISp0aGlzKQpAQCAtMTI4LDE0ICsx
MjcsMTQgQEAgY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogICAgICAgICBzbnByaW50Zihk
ZXNjcmlwdGlvbiwgc2l6ZSwgIkludDMyOiAlZCIsIGFzSW50MzIoKSk7CiAgICAgZWxzZSBpZiAo
aXNEb3VibGUoKSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHNucHJpbnRmKGRlc2Ny
aXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICVseCIsIGFzRG91YmxlKCksIHJlaW50ZXJwcmV0
RG91YmxlVG9JbnRwdHIoYXNEb3VibGUoKSkpOworICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlv
biwgc2l6ZSwgIkRvdWJsZTogJWx4LCAlbGYiLCByZWludGVycHJldERvdWJsZVRvSW50cHRyKGFz
RG91YmxlKCkpLCBhc0RvdWJsZSgpKTsKICNlbHNlCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAg
ICAgIGRvdWJsZSBhc0RvdWJsZTsKICAgICAgICAgICAgIHVpbnQzMl90IGFzVHdvSW50MzJzWzJd
OwogICAgICAgICB9IHU7CiAgICAgICAgIHUuYXNEb3VibGUgPSBhc0RvdWJsZSgpOwotICAgICAg
ICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlMDh4OiUwOHgiLCBh
c0RvdWJsZSgpLCB1LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdKTsKKyAgICAgICAg
c25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICUwOHg6JTA4eCwgJWxmIiwgdS5h
c1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSwgYXNEb3VibGUoKSk7CiAjZW5kaWYKICAg
ICB9IGVsc2UgaWYgKGlzQ2VsbCgpKQogICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6
ZSwgIkNlbGw6ICVwIiwgYXNDZWxsKCkpOwpAQCAtMTUyLDcgKzE1MSw2IEBAIGNoYXIqIEpTVmFs
dWU6OmRlc2NyaXB0aW9uKCkKIAogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KLSNlbmRpZgog
CiAvLyBUaGlzIGluIHRoZSBUb0ludDMyIG9wZXJhdGlvbiBpcyBkZWZpbmVkIGluIHNlY3Rpb24g
OS41IG9mIHRoZSBFQ01BLTI2MiBzcGVjLgogLy8gTm90ZSB0aGF0IHRoaXMgb3BlcmF0aW9uIGlz
IGlkZW50aWNhbCB0byBUb1VJbnQzMiBvdGhlciB0aGFuIHRvIGludGVycHJldGF0aW9uCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAxMDU3NzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzMiw5ICsyMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNDZWxsKiBh
c0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlkQ2Fs
bGVlKCk7CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGNoYXIqIGRlc2NyaXB0aW9uKCk7Ci0j
ZW5kaWYKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBKU1ZhbHVl
KFdyaXRlQmFycmllckJhc2U8VD4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCwxMCArMzgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAKICAgICBjbGFzcyBKU1Zh
cmlhYmxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAx
MDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTAgQEAgdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9y
Q29uc3RydWN0SW5saQogCiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsKIAoraW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2ludDMyX3QgZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9w
dGltaXplQWZ0ZXJMb25nV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JE
b250T3B0aW1pemVBbnl0aW1lU29vbjsKQEAgLTEzNyw2ICsxNDEsMTAgQEAgdm9pZCBpbml0aWFs
aXplT3B0aW9ucygpCiAgICAgCiAgICAgU0VUKG1heGltdW1JbmxpbmluZ0RlcHRoLCA1KTsKIAor
ICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcCwgICAgIC0xMDAp
OworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb24sIHN0
ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9ySklUU29vbiwgICAgICAgICAgICAtMTAwKTsKKwogICAgIFNFVChleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwLCAgICAgLTEwMDApOwogICAgIFNF
VChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCwgLTUwMDAp
OwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29v
biwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOwpAQCAtMTg1LDYgKzE5Myw4
IEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIGlmIChjcHVzVG9Vc2UgPCAxKQogICAg
ICAgICBjcHVzVG9Vc2UgPSAxOwogICAgIAorICAgIGNwdXNUb1VzZSA9IDE7CisgICAgCiAgICAg
U0VUKG51bWJlck9mR0NNYXJrZXJzLCBjcHVzVG9Vc2UpOwogCiAgICAgQVNTRVJUKGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uIDw9IGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcs
MTAgQEAgZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cgogCiBleHRlcm4g
dW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERlcHRoIG9mIGlubGluZSBzdGFjaywg
c28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMuCiAKK2V4dGVybiBpbnQzMl90
IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworZXh0ZXJuIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworZXh0ZXJuIGludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogZXh0ZXJuIGludDMyX3QgZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGV4dGVybiBpbnQzMl90
IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogZXh0ZXJu
IGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZp
c2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWlu
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNz
IEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBT
Y29wZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCkBAIC05MSw2
ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBj
b25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAgICAg
fTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJl
dmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFt
ZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5RGF0YTsKICAgICBjbGFzcyBTdHJ1
Y3R1cmVDaGFpbjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZh
dGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAg
IAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBD
bGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBT
dHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9uIDEw
NTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogCiAg
ICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlNDZWxsIHsKQEAgLTc0LDYgKzc1LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBTdHJ1
Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxh
dGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTE4LDYgKzkxOCwxOCBAQAogI2RlZmluZSBFTkFCTEVf
SklUIDEKICNlbmRpZgogCisvKiBPbiBzb21lIG9mIHRoZSBwbGF0Zm9ybXMgd2hlcmUgd2UgaGF2
ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNvIGhhdmUgdGhlIAorICAgbG93LWxldmVsIGludGVycHJl
dGVyLiAqLworI2lmICFkZWZpbmVkKEVOQUJMRV9MTElOVCkgJiYgRU5BQkxFKEpJVCkgJiYgUExB
VEZPUk0oTUFDKSAmJiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBFTkFCTEVfTExJTlQgMQor
I2VuZGlmCisKKy8qIElmIHdlIGhhdmUgTExJbnQgZW5hYmxlZCBhbmQgdGhlIEpJVCBlbmFibGVk
LCB3ZSBhbHNvIGVuYWJsZSBPU1JpbmcgZnJvbQorICAgTExJbnQgdG8gdGhlIEpJVC4gKi8KKyNp
ZiAhZGVmaW5lZChFTkFCTEVfTExJTlRfT1NSX1RPX0pJVCkgJiYgRU5BQkxFKEpJVCkgJiYgRU5B
QkxFKExMSU5UKQorI2RlZmluZSBFTkFCTEVfTExJTlRfT1NSX1RPX0pJVCAxCisjZW5kaWYKKwog
I2lmICFkZWZpbmVkKEVOQUJMRV9ERkdfSklUKSAmJiBFTkFCTEUoSklUKQogLyogRW5hYmxlIHRo
ZSBERkcgSklUIG9uIFg4NiBhbmQgWDg2XzY0LiAgT25seSB0ZXN0ZWQgb24gTWFjIGFuZCBHTlUv
TGludXguICovCiAjaWYgKENQVShYODYpIHx8IENQVShYODZfNjQpKSAmJiAoUExBVEZPUk0oTUFD
KSB8fCBPUyhMSU5VWCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVs
TGlua2VkTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2Vu
dGluZWxMaW5rZWRMaXN0LmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2
LDggQEAgcHVibGljOgogCiAgICAgaXRlcmF0b3IgYmVnaW4oKTsKICAgICBpdGVyYXRvciBlbmQo
KTsKKyAgICAKKyAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBiZWdpbigpID09IGVuZCgpOyB9
CiAKIHByaXZhdGU6CiAgICAgUmF3Tm9kZSBtX2hlYWRTZW50aW5lbDsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gMTA1NzcwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBj
b3B5KQpAQCAtNDMsNiArNDMsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICog
Q0ZTdHJpCiAvLyBMYW5kaW5nIHRoZSBmaWxlIG1vdmVzIGluIG9uZSBwYXRjaCwgd2lsbCBmb2xs
b3cgb24gd2l0aCBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgbmFtZXNwYWNlcy4KIG5hbWVzcGFjZSBK
U0Mgewogc3RydWN0IElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRvcjsKK2NsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSWRlbnRpZmllckNo
YXJCdWZmZXJUcmFuc2xhdG9yOwogc3RydWN0IElkZW50aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5z
bGF0b3I7CiB9CkBAIC03Miw3ICs3Myw4IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgIGZyaWVu
ZCBzdHJ1Y3QgV1RGOjpTdWJzdHJpbmdUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RG
OjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ0lt
cGw7Ci0KKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
CiBwcml2YXRlOgogICAgIGVudW0gQnVmZmVyT3duZXJzaGlwIHsKICAgICAgICAgQnVmZmVySW50
ZXJuYWwsCg==
</data>
<flag name="commit-queue"
          id="125006"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123970</attachid>
            <date>2012-01-25 10:27:00 -0800</date>
            <delta_ts>2012-01-26 15:48:23 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_50.diff</filename>
            <type>text/plain</type>
            <size>443650</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA1ODQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4MCBA
QAorMjAxMi0wMS0yNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9M
aW5rQnVmZmVyLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChK
U0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmg6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppc1NldCk6CisgICAgICAgIChK
U0M6OkNhbGxMaW5rU3RhdHVzOjpvcGVyYXRvciEpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJs
b2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRp
c29uKToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFt
Q29kZUJsb2NrOjpqaXRDb21waWxlSW1wbCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6
OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENv
bXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2Nh
cmRpbmdPcHBvcnR1bml0eSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0Q29tcGlsZSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YWRkTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpu
dW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZh
bHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rh
a2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFr
ZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtl
QW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1ZW50RXhpdFNp
dGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29vbik6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50RXhlY3V0ZUNv
dW50ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1
cy5oOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpHZXRCeUlkU3RhdHVzKToKKyAgICAg
ICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6d2FzU2VlbkluSklUKToKKyAgICAgICAgKiBieXRlY29k
ZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6TExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAo
SlNDOjpMTEludENhbGxMaW5rSW5mbzo6fkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpT
Qzo6TExJbnRDYWxsTGlua0luZm86OmlzTGlua2VkKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxs
TGlua0luZm86OnVubGluayk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpNZXRob2RDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6
CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJ
bnQpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAg
KiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnNldER1
bXBzR2VuZXJhdGVkQ29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1w
c0dlbmVyYXRlZENvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJh
dGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmUpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFzZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
b25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhdGNoKToK
KyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBh
YmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAg
ICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAgICAgKiBo
ZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoKKyAgICAgICAg
KiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJy
ZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjppc09wY29kZSk6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUpOgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2Rl
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVy
RmlsZS5oOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKToKKyAgICAg
ICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChK
U0M6OkpJVENvZGU6OmlzT3B0aW1pemluZ0pJVCk6CisgICAgICAgIChKU0M6OkpJVENvZGU6Omlz
QmFzZWxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6SklUQ29kZSk6CisgICAgICAg
ICogaml0L0pJVERyaXZlci5oOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlSWZBcHByb3ByaWF0
ZSk6CisgICAgICAgIChKU0M6OmppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUpOgorICAg
ICAgICAqIGppdC9KSVRFeGNlcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6aml0VGhyb3cpOgor
ICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZV
TkNUSU9OKToKKyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiBsbGlu
dDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRDb21tb24uaDogQWRkZWQuCisgICAgICAg
ICogbGxpbnQvTExJbnREYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpEYXRh
OjpEYXRhKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6On5EYXRhKToKKyAgICAgICAgKiBs
bGludC9MTEludERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpleGNl
cHRpb25JbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6b3Bjb2RlTWFw
KToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnRzLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkxMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTElu
dDo6Z2V0RXZhbEVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0UHJvZ3JhbUVu
dHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuaDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTElu
dEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVy
VGhyb3dJbkNhbGxlcik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhy
b3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAg
ICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhj
ZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX29wZXJhbmQpOgorICAgICAgICAo
SlNDOjpMTEludDo6bGxpbnRfdHJhY2VfdmFsdWUpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJ
TlRfSEVMUEVSX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6dHJhY2VGdW5jdGlvblByb2xv
Z3VlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNob3VsZEpJVCk6CisgICAgICAgIChKU0M6OkxM
SW50OjplbnRyeU9TUik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXNvbHZlR2xvYmFsKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRs
ZUhvc3RDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgIChK
U0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4K
KyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToK
KyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpM
TEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8pOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVu
Y3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50Ojpm
dW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpM
TEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBs
bGludC9MTEludFRodW5rcy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5j
cHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQu
CisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12
Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tl
bmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRy
YWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJi
OiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3Jl
Z2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9zZXR0aW5ncy5yYjogQWRk
ZWQuCisgICAgICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20veDg2LnJiOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvZGVTcGVjaWFs
aXphdGlvbktpbmQuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
aDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVC
bG9jayk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAg
ICAgKEpTQzo6c2FtcGxpbmdEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRh
YmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6
aml0Q29tcGlsZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50
ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJs
b2NrRm9yKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9y
Q2FsbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNv
bnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNh
bGxJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZv
ckNvbnN0cnVjdEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAg
KiBydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnByZXBh
cmVGb3JFeGVjdXRpb24pOgorICAgICAgICAoSlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OkpT
QWN0aXZhdGlvbjo6dGVhck9mZik6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6
CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBl
SW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpT
VmFsdWU6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAg
ICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZUNoYWluLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL1Nl
bnRpbmVsTGlua2VkTGlzdC5oOgorICAgICAgICAoV1RGOjpTZW50aW5lbExpbmtlZExpc3Q6Omlz
RW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKwogMjAxMi0wMS0yNCAg
R2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODU1CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcg
QEAgU0VUKEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJw
cmV0ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAgIiR7SkFWQVNDUklQ
VENPUkVfRElSfS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3BhcnNlciIKICAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vcnVudGltZSIKQEAgLTk0LDYgKzk1LDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJD
RVMKICAgICBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwCiAKICAgICBqaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvci5jcHAKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKICAgICBqaXQv
SklUQXJpdGhtZXRpYzMyXzY0LmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljLmNwcAogICAgIGpp
dC9KSVRDYWxsMzJfNjQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFt
CShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUu
YW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgamF2YXNjcmlwdGNvcmVfY3BwZmxh
Z3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlciBc
CiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCisJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIgXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAt
ODEsNiArODEsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9YODZBc3NlbWJsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQ29udmVudGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmNwcCBcCkBAIC0xMDIsNiArMTAzLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTGluZUluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhv
ZENhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRo
b2RDYWxsTGlua0luZm8uaCBcCkBAIC0yNzcsNiArMjc5LDggQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Db21wYWN0SklUQ29kZU1hcC5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCBcCisJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDYWxsMzJfNjQuY3BwIFwKQEAgLTMwMCw2ICszMDQsNyBAQCBqYXZhc2NyaXB0Y29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtK
SVQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIFwKKwlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vcy13aW4zMi9zdGRib29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4zMi9z
dGRpbnQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggXApA
QCAtMzUwLDYgKzM1NSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2FsbERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2xhc3NJbmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFs
aXphdGlvbktpbmQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVu
dGlmaWVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaCBcCkBAIC0zNzgsNiArMzg0LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5wcmkJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAg
SU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9kZWJ1Z2dlciBcCiAgICAgJCRTT1VS
Q0VfRElSL2ludGVycHJldGVyIFwKICAgICAkJFNPVVJDRV9ESVIvaml0IFwKKyAgICAkJFNPVVJD
RV9ESVIvbGxpbnQgXAogICAgICQkU09VUkNFX0RJUi9wYXJzZXIgXAogICAgICQkU09VUkNFX0RJ
Ui9wcm9maWxlciBcCiAgICAgJCRTT1VSQ0VfRElSL3J1bnRpbWUgXApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcgQEAgU09VUkNFUyAr
PSBcCiAgICAgaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCiAgICAgaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgXAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9y
LmNwcCBcCisgICAgaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKICAgICBqaXQvSklUQXJp
dGhtZXRpYy5jcHAgXAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwKICAgICBqaXQv
SklUQ2FsbC5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMwLDYgKzE3MzAsMTAgQEAKIAkJ
CQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caml0XEhv
c3RDYWxsUmV0dXJuVmFsdWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJ
UmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcSklULmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxNSBAQAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2lu
IFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCisJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3
MiAvKiBMTEludCBPZmZzZXRzICovID0geworCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0Owor
CQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zm
c2V0cyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUy
NzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAorCQkJKTsKKwkJCW5hbWUgPSAiTExJ
bnQgT2Zmc2V0cyI7CisJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOworCQl9Owog
CQk2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJ
aXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDY1
RkIzRjc3MDlEMTFFQkQwMEY0OURFQiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WEFnZ3JlZ2F0ZVRhcmdldCAiRGVyaXZlZCBTb3VyY2VzIiAqLzsKQEAgLTE0LDYgKzIzLDkgQEAK
IAkJCQk2NUZCM0Y2NTA5RDExRTkxMDBGNDlERUIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2Vz
ICovLAogCQkJCTVEMzVERUUxMEM3QzE0MEIwMDg2NDhCMiAvKiBHZW5lcmF0ZSBEVHJhY2UgaGVh
ZGVyICovLAogCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2ODBCNDE0QkE4MjE0
MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CiAJCQluYW1lID0gIkRl
cml2ZWQgU291cmNlcyI7CiAJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQl9
OwpAQCAtNDgsNiArNjAsMTAgQEAKIAkJMEJBQzk0QTAxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVh
ZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlv
blZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEJDRDgzNTcxNDg1ODQ1MjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJDRDgzNTQxNDg1ODQx
MjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXpl
TGltaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLzsgfTsKKwkJMEYw
QjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTUxNEJDRjQ1QTAwODg1
QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovOyB9OworCQkwRjBCODM5QjE0QkNGNDYwMDA4
ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlw
b2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTcxNEJDRjQ1QTAwODg1
QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRG
IC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBNzE0QkNG
NTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0E5
MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRs
ZXJJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0FBMTRCQ0Y1
QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU4LDkgKzc0LDEzIEBACiAJCTBGMEI4M0I1
MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAv
KiBNZXRob2RDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2
ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I5MTRCQ0Y5NUYw
MDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjgxNEJDRjk1QjAwODg1
QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwRkM0NUExNEJEMTVGNTAwQjgx
MTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlu
a0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1RjE1RDE0QjdBNzNBMDA1
REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNkQ3MjYxNDJDMzlDMDAwQ0Y3ODRBIC8qIEJpdFZlY3Rv
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE2
RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLzsgfTsKIAkJMEYyMUMyNjgx
NEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
MjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3QTE0QkU3MjczMDBBREM2
NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFD
MjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3RTE0QkVBQTgwMDBBREM2
NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVm
ZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
MkM1NTZGMTQ3MzhGMzEwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYg
LyogREZHQ29kZUJsb2Nrcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGMkM1NTcwMTQ3MzhGMzUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZE
MTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLzsgfTsKQEAgLTcxLDYgKzkx
LDE5IEBACiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDMxNzM2MTQ2
QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MzE0QkE1
NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhj
ZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4
Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBBNDE0QkE3RjhE
MDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBl
cnMuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLXVudXNlZC1wYXJh
bWV0ZXIiOyB9OyB9OworCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBB
MDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8q
IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50
RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLzsg
fTsKKwkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNTE0QkJCMTY5MDBC
RkUyNzIgLyogTExJbnRDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0Mx
NEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcy
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovOyB9OworCQkwRjQ2ODBDRDE0QkJCMTdEMDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVs
SW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENFMTRCQkIzRDEw
MEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovOyB9OworCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUy
NzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDQxNEJCRDI0
OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhv
c3RDYWxsUmV0dXJuVmFsdWUuY3BwICovOyB9OworCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIg
LyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJu
VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RjA4Q0UxNDZD
NzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYyMDE3NDE0M0ZDRDMzMDA2OEI3
N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYyMDE3MjE0M0ZDRDJGMDA2OEI3N0MgLyogREZHVmFyaWFi
bGVBY2Nlc3NEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY2MjAxNzUxNDNGQ0QzNzAwNjhCNzdDIC8qIERGR09wZXJhbmRzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjYyMDE3MTE0M0ZDRDJG
MDA2OEI3N0MgLyogREZHT3BlcmFuZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMzgzLDcgKzQxNiw3IEBACiAJCTg2Qjk5QUUzMTE3RTU3ODEw
MERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUUxMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkJC
MDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRTEzOEUzODFCMDA1NjcwMkYgLyog
REZHUmVwYXRjaC5jcHAgKi87IH07CiAJCTg2QkIwOUMxMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdS
ZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oICovOyB9OwotCQk4NkMzNkVF
QTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBN
YWNyb0Fzc2VtYmxlci5oICovOyB9OworCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFj
cm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzU2OEUwMTFBMjEz
RUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERDExQTIxM0VFMDAwN0Y3RjAgLyogTWFj
cm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9OwogCQk4NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyog
TWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBT
LmggKi87IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjEx
QTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovOyB9OwpAQCAtNzUyLDYgKzc4NSwy
MCBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQ
QlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJv
eHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJv
amVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJp
bmcgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gIkxMSW50IE9m
ZnNldHMiOworCQl9OworCQkwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29u
dGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0
ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0Njgw
OEUxNEJBN0U1RTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKwkJfTsKIAkJMTQxMjE0QkUwQTQ5MTkwRTAwNDgwMjU1IC8qIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRh
aW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAq
LzsKQEAgLTc5Nyw2ICs4NDQsMTUgQEAKIC8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJ
MEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBC
WENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owor
CQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEvOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9
IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMTsKKwkJfTsKIAkJNURCQjE1MTExMzFEMEIxMzAwNTZBRDM2IC8qIENvcHkgU3Vw
cG9ydCBTY3JpcHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOwogCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMTI7CkBAIC04MzcsNiArODkzLDEwIEBACiAJCTBCQUM5NDlFMTMz
ODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJDRDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBv
cmFyeUNoYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhcnlD
aGFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAw
NjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4
Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMuY3BwOyBwYXRoID0gbGxp
bnQvTExJbnRFbnRyeXBvaW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
MEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMuaDsgcGF0aCA9IGxsaW50L0xM
SW50RW50cnlwb2ludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTcx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IExMSW50VGh1bmtzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1
QjRGIC8qIExMSW50VGh1bmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExM
SW50VGh1bmtzLmg7IHBhdGggPSBsbGludC9MTEludFRodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNz
aW9uUmFuZ2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Np
b25SYW5nZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0Nyw5ICs5MDcs
MTMgQEAKIAkJMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRob2RDYWxsTGlua0luZm8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8q
IEdsb2JhbFJlc29sdmVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEds
b2JhbFJlc29sdmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I4
MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29k
ZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBGQzQ1ODE0QkQxNUYx
MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTExJbnRDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25TbG93UGF0aHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaXRWZWN0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyog
SklURHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVERyaXZlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIg
LyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGlvbkhhcm5lc3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2Rl
Q29udmVudGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVD
b252ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI0MkRBNTEzRjNC
MUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERGR0NvZGVCbG9ja3Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RTE0NzM4RjJFMDAxMjFF
NEYgLyogREZHQ29kZUJsb2Nrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
RkdDb2RlQmxvY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NjAsNiArOTI0
LDIwIEBACiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5kbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRF
eGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEV4
Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA4MDE0QkE1
NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKSVRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNo
LW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0
c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMEY0Njgw
OUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuY3BwOyBwYXRoID0gbGxpbnQv
TExJbnRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0Njgw
OUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuaDsgcGF0aCA9IGxsaW50L0xMSW50RXhj
ZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RjE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IExMSW50SGVscGVycy5jcHA7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIg
LyogTExJbnRIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50
SGVscGVycy5oOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAv
KiBMTEludENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENv
bW1vbi5oOyBwYXRoID0gbGxpbnQvTExJbnRDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludE9mZmxpbmVBc21Db25m
aWcuaDsgcGF0aCA9IGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRl
cnByZXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMb3dMZXZl
bEludGVycHJldGVyLmNwcDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyog
TG93TGV2ZWxJbnRlcnByZXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBM
b3dMZXZlbEludGVycHJldGVyLmg7IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAv
KiBMTEludERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJ
bnREYXRhLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnREYXRhLmg7IHBhdGggPSBsbGludC9M
TEludERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwRDAxNEJCQzVG
ODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVy
blZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJu
VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0MxNDZCRTYwMjAw
MDQ3MkE5IC8qIERGR0J5dGVDb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHQnl0ZUNvZGVDYWNoZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVDb2RlQ2FjaGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8q
IFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVW5jb25kaXRpb25hbEZpbmFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjYyMDE2RDE0M0ZDRDJGMDA2OEI3N0MgLyogREZHQWJzdHJhY3RTdGF0ZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdBYnN0cmFjdFN0YXRlLmNwcDsgcGF0
aCA9IGRmZy9ERkdBYnN0cmFjdFN0YXRlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTE1NzksNiArMTY1NywxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4
MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJh
bWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJ
ZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CisJCX07CiAJCTE0MTIxMTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFtZXdvcmtzICovID0g
ewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sg
PSAyMTQ3NDgzNjQ3OwpAQCAtMTYzNyw2ICsxNzIyLDcgQEAKIAkJCQkxNDEyMTEyMDBBNDg3OTND
MDA0ODAyNTUgLyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBCQUY1OUMgLyog
dGVzdGFwaSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAq
LywKKwkJCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFj
dG9yICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CkBAIC0xNjY3LDYgKzE3NTMsNyBAQAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVD
QSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5
REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25m
aWcuaCAqLywKKwkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8sCiAJCQkJ
MTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRF
MDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAv
KiBieXRlY29kZSAqLywKQEAgLTE3MDUsNiArMTc5MiwyOCBAQAogCQkJdGFiV2lkdGggPSA0Owog
CQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxp
bnQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTBGMEI4
Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLywKKwkJCQkwRjBC
ODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovLAorCQkJCTBGMEI4
Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8sCisJCQkJMEYwQjgzOTgx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8sCisJCQkJMEY0NjgwQ0UxNEJCQjNE
MTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZF
MjcyIC8qIExMSW50RGF0YS5oICovLAorCQkJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBM
TEludENvbW1vbi5oICovLAorCQkJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9m
ZmxpbmVBc21Db25maWcuaCAqLywKKwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93
TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8sCisJCQkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8q
IExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIg
LyogTExJbnRFeGNlcHRpb25zLmNwcCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIg
LyogTExJbnRFeGNlcHRpb25zLmggKi8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8q
IExMSW50SGVscGVycy5jcHAgKi8sCisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExM
SW50SGVscGVycy5oICovLAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGludDsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3MjYwMDQ4MDI1NSAvKiB0
ZXN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNzM3
LDYgKzE4NDYsOCBAQAogCQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkgLyogaml0ICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2ODBEMDE0QkJDNUY4
MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJMEY0NjgwRDExNEJC
QzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJCQkwRjQ2ODA3RjE0
QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJMEY0NjgwODAxNEJB
NTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4MkUzNzE0MUFCMTQy
MDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTIxNjYsNiArMjI3Nyw4IEBA
CiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIg
LyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovLAorCQkJCTBGMjFDMjdBMTRCRTcyNzMwMEFE
QzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8sCiAJCQkJMEYxNUYxNUQxNEI3QTczQTAwNURF
MzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovLAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0
RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJn
TGlzdC5oICovLApAQCAtMjUyNSw2ICsyNjM4LDggQEAKIAkJOTY5QTA3OEYwRUQxRDNBRTAwRjFG
NjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5o
ICovLAorCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5o
ICovLAogCQkJCTBGOTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAg
Ki8sCiAJCQkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggKi8s
CiAJCQkJMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovLApA
QCAtMzA3Niw3ICszMTkxLDE2IEBACiAJCQkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlh
cnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0Ig
LyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3
M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4
MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21tb24u
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9m
ZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENEMTRCQkIxN0QwMEJG
RTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBE
MzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2
ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5r
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVU
eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFu
ZGxlckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAv
KiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTMwODUsNyArMzIwOSwx
MSBAQAogCQkJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8u
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxS
ZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRG
IC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJu
ZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29k
ZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0YxNEJFQUE4
MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
N0IyOTRBMTRDM0NEMjkwMDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGN0IyOTRDMTRDM0NENDMwMDdDM0RCMSAvKiBERkdCeXRlQ29kZUNh
Y2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMDMsNiArMzIzMSwyNCBAQAogLyogRW5kIFBCWEhl
YWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNl
Y3Rpb24gKi8KKwkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4
dHJhY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmln
dXJhdGlvbkxpc3QgPSAwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJh
dGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIg
Ki87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyog
U291cmNlcyAqLywKKwkJCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAq
LywKKwkJCQkwRjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovLAorCQkJKTsK
KwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4
MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJ
CW5hbWUgPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0TmFtZSA9IEpTQ0xM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAwRjQ2ODA4RjE0QkE3
RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJcHJvZHVjdFR5
cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKIAkJMTQxMjExMUYwQTQ4
NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7
CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAq
LzsKQEAgLTMyMjksMTEgKzMzNzUsMjkgQEAKIAkJCQkxNEJENTlCRTBBM0U4RjkwMDBCQUY1OUMg
LyogdGVzdGFwaSAqLywKIAkJCQk5MzJGNUJEQTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAog
CQkJCTY1MTEyMkY3MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4
MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCisJCQkJ
MEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8sCiAJCQkpOwogCQl9
OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTaGVsbFNjcmlw
dEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2Vu
ZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWls
ZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAor
CQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoU1JDUk9PVCkvbGxpbnQvTG93TGV2ZWxB
c3NlbWJsZXIuYXNtIiwKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNl
cyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50
T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNo
ZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0
cy9cIlxuXG4vdXNyL2Jpbi9lbnYgcnVieSBcIiR7U1JDUk9PVH0vb2ZmbGluZWFzbS9nZW5lcmF0
ZV9vZmZzZXRfZXh0cmFjdG9yLnJiXCIgXCIke1NSQ1JPT1R9L2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtXCIgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL0xMSW50RGVz
aXJlZE9mZnNldHMuaFwiXG4iOworCQl9OwogCQkzNzEzRjAxNDE0MjkwNTI0MDAzNjM4N0YgLyog
Q2hlY2sgRm9yIEluYXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xhc3MgTmFtZXMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OwpAQCAtMzMzOSw3ICszNTAzLDcgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7Ci0JCQlz
aGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9kb2NzXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlXCJcblxuL2Jpbi9sbiAtc2ZoIFwiJHtTUkNST09U
fVwiIEphdmFTY3JpcHRDb3JlXG5leHBvcnQgSmF2YVNjcmlwdENvcmU9XCJKYXZhU2NyaXB0Q29y
ZVwiXG5leHBvcnQgQlVJTFRfUFJPRFVDVFNfRElSPVwiLi4vLi5cIlxuXG5tYWtlIC0tbm8tYnVp
bHRpbi1ydWxlcyAtZiBcIkphdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2VcIiAtaiBg
L3Vzci9zYmluL3N5c2N0bCAtbiBody5uY3B1YFxuIjsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGly
IC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
L2RvY3NcIlxuY2QgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmVcIlxuXG4vYmluL2xuIC1zZmggXCIke1NSQ1JPT1R9XCIgSmF2YVNjcmlwdENvcmVc
bmV4cG9ydCBKYXZhU2NyaXB0Q29yZT1cIkphdmFTY3JpcHRDb3JlXCJcbmV4cG9ydCBCVUlMVF9Q
Uk9EVUNUU19ESVI9XCIuLi8uLlwiXG5cbm1ha2UgLS1uby1idWlsdGluLXJ1bGVzIC1mIFwiSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNyL3NiaW4vc3lzY3RsIC1u
IGh3Lm5jcHVgXG5cbi91c3IvYmluL2VudiBydWJ5IEphdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXNtLnJiIEphdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtICR7QlVJ
TFRfUFJPRFVDVFNfRElSfS9KU0NMTEludE9mZnNldHNFeHRyYWN0b3IgTExJbnRBc3NlbWJseS5o
XG4iOwogCQl9OwogCQk5MzE5NTg2QjA5RDlGOTFBMDBBNTZGRDQgLyogQ2hlY2sgRm9yIEdsb2Jh
bCBJbml0aWFsaXplcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7
CkBAIC0zMzc0LDYgKzM1MzgsMTQgQEAKIC8qIEVuZCBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ug
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJ
CTBGNDY4MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJY
U291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJ
ZmlsZXMgPSAoCisJCQkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUQwQTQ4NzkzQzAwNDgwMjU1IC8q
IFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxk
QWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zNjMyLDcgKzM4MDQsMTQgQEAKIAkJCQk4Njcw
NEI4NjEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NjcwNEI4OTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODY3MDRCNDIxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBl
cnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExM
SW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODA4MzE0QkE1NzMxMDBC
RkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBDQzE0
QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTElu
dEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4
NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBCODNCMDE0QkNG
NzE2MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4
M0I0MTRCQ0Y4NjAwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJRjY5RTg2QzMxNEM2RTU1MTAwMkMyQzYyIC8qIE51bWJlck9mQ29yZXMuY3BwIGlu
IFNvdXJjZXMgKi8sCkBAIC0zNjU0LDYgKzM4MzMsMTYgQEAKIC8qIEVuZCBQQlhTb3VyY2VzQnVp
bGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlv
biAqLworCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODBB
OTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLzsKKwkJCXRhcmdldFByb3h5ID0g
MEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJ
fTsKKwkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8g
PSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMEY0NjgwOEUx
NEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXRhcmdl
dFByb3h5ID0gMEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLzsKKwkJfTsKIAkJMTQxMjE0QkYwQTQ5MTkwRTAwNDgwMjU1IC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwogCQkJdGFyZ2V0ID0g
MTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi87CkBAIC0zNjg3LDYgKzM4NzYs
MTQ4IEBACiAvKiBFbmQgUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMEY0NjgwOTYxNEJBN0U1RTAwQkZF
MjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJ
CUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJ
UCA9IE5POworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0RZ
TkFNSUNfTk9fUElDID0gTk87CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7
CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9E
RUZJTklUSU9OUyA9ICgKKwkJCQkJIkRFQlVHPTEiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJ
CQkpOworCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gTk87CisJCQkJR0NDX1ZFUlNJ
T04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0
X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19Q
Uk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOwor
CQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9Q
QVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9E
VUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwK
KwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJT05MWV9B
Q1RJVkVfQVJDSCA9IFlFUzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOwor
CQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4g
aWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BB
VEhTKSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODA5NzE0QkE3RTVF
MDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBO
TzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhB
U0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdp
dGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0Nf
RU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBs
ZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NP
TlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZ
RVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5f
VU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0i
ID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJ
bnRPZmZzZXRzJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQ
TE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1F
KSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMg
PSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFS
Q0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwOTgx
NEJBN0U1RTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJf
UEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJ
CUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0g
ImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsK
KwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9
IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9f
MzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RP
VFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJ
R0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhT
W2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RT
X0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJ
CSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05B
TUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9I
RUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9m
ZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGlu
ZzsKKwkJfTsKKwkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7
CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJ
CQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19T
VEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVH
X0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdV
QUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZ
RVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8w
OworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dB
Uk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JF
VFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJ
CQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAor
CQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURF
Ul9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9
IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09U
ID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxU
X1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJ
fTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUy
NzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5
IjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MEFFMTRCQTdGRDkwMEJG
RTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMg
Y29weSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4MEFGMTRCQTdG
RDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQg
U291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2
ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUg
PSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOwor
CQl9OwogCQkxNDEyMTEzQTBBNDg3OTg0MDA0ODAyNTUgLyogRGVidWcgKi8gPSB7CiAJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CkBAIC0zOTI4LDYg
KzQyNTksMjggQEAKIC8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkwRjQ2ODA5QTE0QkE3RTVG
MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQg
IkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRp
b25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODA5NjE0QkE3RTVF
MDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcyIC8qIFJl
bGVhc2UgKi8sCisJCQkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywK
KwkJCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJ
CQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJh
dGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIg
LyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50
IE9mZnNldHMiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxk
Q29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8qIERlYnVn
ICovLAorCQkJCTBGNDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovLAorCQkJCTBG
NDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY0NjgwQjAxNEJB
N0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVj
dGlvbjsKKwkJfTsKIAkJMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3Vy
YXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLyA9IHsKIAkJCWlzYSA9
IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHJldmlzaW9u
IDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjZGVmaW5lIEdMT0JBTF9USFVOS19J
RCByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLTEpKQogI2Rl
ZmluZSBSRUdFWFBfQ09ERV9JRCByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxp
bnRwdHJfdD4oLTIpKQogCi0jaW5jbHVkZSA8TWFjcm9Bc3NlbWJsZXIuaD4KKyNpbmNsdWRlICJN
YWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNv
bnZlbnRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0J5dGVjb2RlQ29udmVudGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBCeXRlY29kZUNvbnZlbnRpb25zX2gKKyNkZWZpbmUgQnl0ZWNvZGVDb252ZW50aW9u
c19oCisKKy8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhh
dmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKKy8vICAgICAg
MHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFt
ZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxl
LmguCisvLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9t
IHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0
aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCisvLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZG
RiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRo
ZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCitzdGF0aWMgY29uc3QgaW50IEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKKworI2VuZGlmIC8vIEJ5dGVjb2Rl
Q29udmVudGlvbnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDE3ICsyNyw0MCBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAKICNpbmNsdWRl
ICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJ
bnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQorewor
ICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNv
ZGVJbmRleCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4
OworICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBpbnN0cnVjdGlvbls0XS51
LmNhbGxMaW5rSW5mbzsKKyAgICAKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoY2FsbExpbmtJ
bmZvLT5sYXN0U2VlbkNhbGxlZS5nZXQoKSwgZmFsc2UpOworI2Vsc2UKKyAgICByZXR1cm4gQ2Fs
bExpbmtTdGF0dXMoMCwgZmFsc2UpOworI2VuZGlmCit9CisKIENhbGxMaW5rU3RhdHVzIENhbGxM
aW5rU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAg
VU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShW
QUxVRV9QUk9GSUxFUikKLSAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoCi0gICAgICAgIHByb2Zp
bGVkQmxvY2stPmdldENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KS5sYXN0U2VlbkNhbGxlZS5n
ZXQoKSwKLSAgICAgICAgcHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJ
bmRleCkpOworICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZDYWxsTGlua0luZm9zKCkp
CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2Rl
SW5kZXgpOworICAgIAorICAgIGlmIChwcm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShi
eXRlY29kZUluZGV4KSkKKyAgICAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIHRydWUpOwor
ICAgIAorICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5r
SW5mbyhieXRlY29kZUluZGV4KS5sYXN0U2VlbkNhbGxlZS5nZXQoKTsKKyAgICBpZiAoIXRhcmdl
dCkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNv
ZGVJbmRleCk7CisgICAgCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldCwgZmFsc2Up
OwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFsc2UpOwogI2VuZGlmCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
aAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE1ICs0NywxNyBAQCBwdWJsaWM6
CiAgICAgCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAgICAgCi0gICAgYm9vbCBpc1NldCgpIGNvbnN0IHsg
cmV0dXJuICEhbV9jYWxsVGFyZ2V0OyB9CisgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJu
ICEhbV9jYWxsVGFyZ2V0IHx8IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKLSAgICBib29s
IG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2NhbGxUYXJnZXQ7IH0KKyAgICBib29sIG9w
ZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3Vs
ZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAg
ICAKICAgICBKU0Z1bmN0aW9uKiBjYWxsVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFy
Z2V0OyB9CiAgICAgCiBwcml2YXRlOgorICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRl
RnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgIAogICAg
IEpTRnVuY3Rpb24qIG1fY2FsbFRhcmdldDsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7
CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKICNpbmNsdWRl
ICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNs
dWRlIDxzdGRpby5oPgpAQCAtNTksOCArNjAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIHVzaW5nIG5h
bWVzcGFjZSBERkc7CiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9Q
Q09ERV9TQU1QTElORykKLQogc3RhdGljIFVTdHJpbmcgZXNjYXBlUXVvdGVzKGNvbnN0IFVTdHJp
bmcmIHN0cikKIHsKICAgICBVU3RyaW5nIHJlc3VsdCA9IHN0cjsKQEAgLTM1OCwxMCArMzU3LDEw
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykgY28KICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGluc3RydWN0aW9ucygpLnNpemUoKTsgaSArPSBvcGNvZGVMZW5ndGhz
W2V4ZWMtPmludGVycHJldGVyKCktPmdldE9wY29kZUlEKGluc3RydWN0aW9ucygpW2ldLnUub3Bj
b2RlKV0pCiAgICAgICAgICsraW5zdHJ1Y3Rpb25Db3VudDsKIAotICAgIHByaW50ZigiJWx1IG1f
aW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVl
IHJlZ2lzdGVyKHMpXG5cbiIsCisgICAgcHJpbnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBi
eXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocyk7ICVkIHZh
cmlhYmxlKHMpXG5cbiIsCiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3Ry
dWN0aW9uQ291bnQpLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVj
dGlvbnMoKS5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKSwKLSAgICAgICAgdGhpcywgbV9u
dW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgICAgIHRoaXMsIG1fbnVt
UGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMsIG1fbnVtVmFycyk7CiAKICAgICBWZWN0
b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciBiZWdpbiA9IGluc3RydWN0aW9ucygpLmJl
Z2luKCk7CiAgICAgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW5z
dHJ1Y3Rpb25zKCkuZW5kKCk7CkBAIC04OTgsNiArODk3LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpk
dW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMs
IGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uIik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dDogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
fQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAg
ICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF9nZW5lcmljOiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChl
eGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIpOwogICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMjkxLDggKzEyOTgsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUq
IGV4ZWMsIGNvCiAgICAgfQogfQogCi0jZW5kaWYgLy8gIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFC
TEUoT1BDT0RFX1NBTVBMSU5HKQotCiAjaWYgRFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJQ1MKIHN0
YXRpYyBIYXNoU2V0PENvZGVCbG9jayo+IGxpdmVDb2RlQmxvY2tTZXQ7CiAjZW5kaWYKQEAgLTE0
NTksNiArMTQ2NCw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywK
IHsKICAgICBzZXROdW1QYXJhbWV0ZXJzKG90aGVyLm51bVBhcmFtZXRlcnMoKSk7CiAgICAgb3B0
aW1pemVBZnRlcldhcm1VcCgpOworICAgIGppdEFmdGVyV2FybVVwKCk7CiAgICAgCiAgICAgaWYg
KG90aGVyLm1fcmFyZURhdGEpIHsKICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgp
OwpAQCAtMTUwNyw2ICsxNTEzLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0
YWJsZSogbwogICAgIEFTU0VSVChtX3NvdXJjZSk7CiAgICAgCiAgICAgb3B0aW1pemVBZnRlcldh
cm1VcCgpOworICAgIGppdEFmdGVyV2FybVVwKCk7CiAKICNpZiBEVU1QX0NPREVfQkxPQ0tfU1RB
VElTVElDUwogICAgIGxpdmVDb2RlQmxvY2tTZXQuYWRkKHRoaXMpOwpAQCAtMTUyNCw3ICsxNTMx
LDExIEBAIENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFMVUVf
UFJPRklMRSkKICAgICBkdW1wVmFsdWVQcm9maWxlcygpOwogI2VuZGlmCi0gICAgCisKKyNpZiBF
TkFCTEUoTExJTlQpICAgIAorICAgIHdoaWxlIChtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigp
ICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQorICAgICAgICBtX2luY29taW5nTExJbnRD
YWxscy5iZWdpbigpLT5yZW1vdmUoKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAjaWYgRU5B
QkxFKEpJVCkKICAgICAvLyBXZSBtYXkgYmUgZGVzdHJveWVkIGJlZm9yZSBhbnkgQ29kZUJsb2Nr
cyB0aGF0IHJlZmVyIHRvIHVzIGFyZSBkZXN0cm95ZWQuCiAgICAgLy8gQ29uc2lkZXIgdGhhdCB0
d28gQ29kZUJsb2NrcyBiZWNvbWUgdW5yZWFjaGFibGUgYXQgdGhlIHNhbWUgdGltZS4gVGhlcmUK
QEAgLTE3MzYsOCArMTc0Nyw1OSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkoCiAjZWxzZQogICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VVbmxpbmtpbmcgPSBm
YWxzZTsKICNlbmRpZgotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAgICAKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9nbG9iYWxEYXRh
LT5pbnRlcnByZXRlcjsKKyAgICAvLyBpbnRlcnByZXRlci0+ZW5hYmxlZCgpIHJldHVybnMgdHJ1
ZSBpZiB0aGUgb2xkIEMrKyBpbnRlcnByZXRlciBpcyBlbmFibGVkLiBJZiB0aGF0J3MgZW5hYmxl
ZAorICAgIC8vIHRoZW4gd2UncmUgbm90IHVzaW5nIExMSW50LgorICAgIGlmICghaW50ZXJwcmV0
ZXItPmVuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAg
ICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV07CisgICAgICAgICAgICBzd2l0Y2ggKGludGVycHJl
dGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkpIHsKKyAgICAgICAg
ICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6Cisg
ICAgICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZSB8fCBIZWFw
Ojppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkpCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUu
c3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNV0udS5v
cGVyYW5kID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2Vk
KGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAgICAgICAg
ICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKSkK
KyAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bN10u
dS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAg
ICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAg
ICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmNsZWFyKCk7Cisg
ICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPSBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAg
ICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW21f
Z2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV07CisgICAgICAgICAgICBBU1NFUlQoaW50ZXJw
cmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9yZXNv
bHZlX2dsb2JhbAorICAgICAgICAgICAgICAgICAgIHx8IGludGVycHJldGVyLT5nZXRPcGNvZGVJ
RChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1p
Yyk7CisgICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlIHx8IEhl
YXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpKSkKKyAgICAg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzNdLnUuc3Ry
dWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQg
PSAwOworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xsaW50
Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKG1fbGxpbnRDYWxs
TGlua0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlu
a0luZm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVu
bGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBjYWxs
IGZyb20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZv
c1tpXS51bmxpbmsoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghIW1fbGxpbnRD
YWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX2xsaW50
Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5nZXQoKSkpCisgICAgICAgICAgICAgICAg
bV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUuY2xlYXIoKTsKKyAgICAgICAg
fQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKICNpZiBFTkFCTEUoREZHX0pJVCkK
ICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2UgYXJlLCB0aGVuIGpldHRpc29u
LgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2FuKCkg
fHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7CkBAIC0xODU4LDEwICsxOTIw
LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXIKICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7ICsraSkKICAgICAgICAg
dmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAjaWYgRU5BQkxFKElOVEVSUFJF
VEVSKQotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25z
LnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0dXJlcyh2
aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0p
OwotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6
ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0
b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsKKyAg
ICBpZiAobV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAgICAgIGZv
ciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9
IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwg
Jmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICAg
ICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCks
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0
b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsKKyAg
ICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMjA3MCw2ICsyMTM0LDEyIEBA
IHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiB7CiAgICAgaWYgKCEhbV9hbHRlcm5hdGl2
ZSkKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+dW5saW5rQ2FsbHMoKTsKKyNpZiBFTkFCTEUoTExJ
TlQpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXpl
KCk7ICsraSkgeworICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5mb3NbaV0uaXNMaW5rZWQo
KSkKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOworICAgIH0K
KyNlbmRpZgogICAgIGlmICghKG1fY2FsbExpbmtJbmZvcy5zaXplKCkgfHwgbV9tZXRob2RDYWxs
TGlua0luZm9zLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1fZ2xvYmFsRGF0
YS0+Y2FuVXNlSklUKCkpCkBAIC0yMDg0LDEwICsyMTU0LDM5IEBAIHZvaWQgQ29kZUJsb2NrOjp1
bmxpbmtDYWxscygpCiAKIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKCkKIHsK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgd2hpbGUgKG1faW5jb21pbmdMTEludENhbGxzLmJlZ2lu
KCkgIT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisgICAgICAgIG1faW5jb21pbmdMTElu
dENhbGxzLmJlZ2luKCktPnVubGluaygpOworI2VuZGlmCisgICAgaWYgKG1faW5jb21pbmdDYWxs
cy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hC
dWZmZXIodGhpcyk7CiAgICAgd2hpbGUgKG1faW5jb21pbmdDYWxscy5iZWdpbigpICE9IG1faW5j
b21pbmdDYWxscy5lbmQoKSkKICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLmJlZ2luKCktPnVubGlu
aygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKIH0KKwordW5zaWduZWQgQ29kZUJsb2Nr
OjpieXRlY29kZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJu
QWRkcmVzcykKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKHJldHVybkFkZHJlc3MudmFs
dWUoKSA+PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9iZWdpbikKKyAgICAgICAgJiYgcmV0
dXJuQWRkcmVzcy52YWx1ZSgpIDw9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2VuZCkpIHsK
KyAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAgICAgICAgQVNTRVJUKGV4ZWMt
PmNvZGVCbG9jaygpID09IHRoaXMpOworICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGlu
ZUNvZGUoZ2V0SklUVHlwZSgpKSk7CisgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9
IGV4ZWMtPmN1cnJlbnRWUEMoKTsKKyAgICAgICAgQVNTRVJUKGluc3RydWN0aW9uKTsKKyAgICAg
ICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uKTsKKyAgICB9CisjZWxzZQorICAg
IFVOVVNFRF9QQVJBTShleGVjKTsKKyNlbmRpZgorICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAg
ICAgcmV0dXJuIDE7CisgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0
PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKKyAg
ICBpZiAoIWNhbGxJbmRpY2VzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJu
IGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCwgdW5zaWduZWQs
IGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNhbGxJbmRpY2VzLnNp
emUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUoKSkpLT5ieXRl
Y29kZU9mZnNldDsKK30KICNlbmRpZgogCiB2b2lkIENvZGVCbG9jazo6Y2xlYXJFdmFsQ2FjaGUo
KQpAQCAtMjE4MywyNCArMjI4Miw0NSBAQCBib29sIEZ1bmN0aW9uQ29kZUJsb2NrOjpjYW5Db21w
aWxlV2l0aERGCiAKIHZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFT
U0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChK
SVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMg
PT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihv
d25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsK
IH0KIAogdm9pZCBFdmFsQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJ
VFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6Omlz
T3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNl
bWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJs
ZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwogfQogCiB2b2lkIEZ1
bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAh
PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemlu
Z0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsK
ICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSkt
PmpldHRpc29uT3B0aW1pemVkQ29kZUZvcigqZ2xvYmFsRGF0YSgpLCBtX2lzQ29uc3RydWN0b3Ig
PyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOwogfQorCit2b2lkIFByb2dyYW1Db2Rl
QmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBB
U1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFT
U0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm9n
cmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShnbG9iYWxEYXRh
KTsKK30KKwordm9pZCBFdmFsQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpp
dENvbXBpbGUoZ2xvYmFsRGF0YSk7Cit9CisKK3ZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmppdENv
bXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklU
VHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09
IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFi
bGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGVGb3IoZ2xvYmFsRGF0YSwgbV9pc0Nv
bnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKK30KICNlbmRpZgog
CiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtMjMwMyw2ICsyNDIzLDE4IEBAIHZvaWQg
Q29kZUJsb2NrOjpkdW1wVmFsdWVQcm9maWxlcygpCiB9CiAjZW5kaWYKIAordm9pZCBDb2RlQmxv
Y2s6OmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCkKK3sKKyNpZiAhRU5BQkxF
KE9QQ09ERV9TQU1QTElORykgJiYgIUVOQUJMRShMTElOVCkKKyAgICBpZiAoQnl0ZWNvZGVHZW5l
cmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCEh
YWx0ZXJuYXRpdmUoKSkKKyAgICAgICAgZGlzY2FyZEJ5dGVjb2RlKCk7CisgICAgZWxzZQorICAg
ICAgICBkaXNjYXJkQnl0ZWNvZGVMYXRlcigpOworI2VuZGlmCit9CisKICNpZm5kZWYgTkRFQlVH
CiBib29sIENvZGVCbG9jazo6dXNlc09wY29kZShPcGNvZGVJRCBvcGNvZGVJRCkKIHsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEw
NTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBDb2RlQmxvY2tfaAogI2RlZmlu
ZSBDb2RlQmxvY2tfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1
ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2Rl
T2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgpAQCAtNTAsNiArNTEsNyBAQAogI2lu
Y2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKICNp
bmNsdWRlICJMaW5lSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUHJlZGlj
dGlvblRyYWNrZXIuaCIKQEAgLTY1LDE2ICs2NywxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCi0vLyBSZWdpc3RlciBudW1iZXJz
IHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29y
ZGluZyB0byB0aGVpciByYW5nZXM6Ci0vLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVn
YXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0
aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgotLy8gICAgICAweDAwMDAwMDAwLTB4
M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJl
IGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1l
LgotLy8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAw
eDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29k
ZUJsb2NrLgotc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4
NDAwMDAwMDA7Ci0KIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgRXhlY1N0YXRlOwogICAg
IGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGlubGluZSBpbnQgdW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKGludCBhcmd1bWVudHNSZWdpc3RlcikgeyByZXR1cm4gYXJndW1lbnRzUmVnaXN0
ZXIgLSAxOyB9CiAKQEAgLTgzLDYgKzgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
Q29kZUJsb2NrIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIsIHB1YmxpYyBXZWFrUmVm
ZXJlbmNlSGFydmVzdGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENvcHlQYXJzZWRCbG9ja1RhZyB7
IENvcHlQYXJzZWRCbG9jayB9OwogICAgIHByb3RlY3RlZDoKQEAgLTEyMyw3ICsxMjEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkp
CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5hbHRlcm5hdGl2ZSgpOwogICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRU
eXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENv
ZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAjZW5kaWYKQEAgLTEzNCwxMSArMTMyLDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAot
I2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFX09QQ09ERV9TQU1QTElORwogICAgICAgICB2
b2lkIGR1bXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmVz
KGNvbnN0IEluc3RydWN0aW9uKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmUo
Y29uc3QgY2hhciogbmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBpbnQgb3BlcmFuZCkgY29uc3Q7
Ci0jZW5kaWYKIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNTdHJpY3RNb2RlOyB9CiAKQEAgLTE5NCwxNSArMTkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9kQ2FsbExpbmtJbmZvLCB1bnNp
Z25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4obV9tZXRob2RDYWxsTGlu
a0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCksIGJ5dGVjb2RlSW5k
ZXgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KFJldHVy
bkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFt
X3JhcmVEYXRhKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgVmVjdG9y
PENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVE
YXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKLSAgICAgICAgICAgIGlmICghY2FsbEluZGlj
ZXMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgcmV0dXJu
IGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCwgdW5zaWduZWQs
IGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNhbGxJbmRpY2VzLnNp
emUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUoKSkpLT5ieXRl
Y29kZU9mZnNldDsKLSAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChF
eGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAgICAgICB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7CkBAIC0yMjMs
MTEgKzIxMSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgbV9p
bmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwogICAgICAgICB9CisjaWYgRU5BQkxFKExMSU5U
KQorICAgICAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoTExJbnRDYWxsTGlua0luZm8qIGluY29t
aW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5wdXNoKGlu
Y29taW5nKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKICAgICAgICAgCiAg
ICAgICAgIHZvaWQgdW5saW5rSW5jb21pbmdDYWxscygpOwotI2VuZGlmCisjZW5kaWYgLy8gRU5B
QkxFKEpJVCkKIAotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8fCBF
TkFCTEUoTExJTlQpCiAgICAgICAgIHZvaWQgc2V0SklUQ29kZU1hcChQYXNzT3duUHRyPENvbXBh
Y3RKSVRDb2RlTWFwPiBqaXRDb2RlTWFwKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2ppdENv
ZGVNYXAgPSBqaXRDb2RlTWFwOwpAQCAtMjM2LDcgKzIzMCw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9qaXRDb2RlTWFwLmdldCgpOwogICAgICAg
ICB9CisjZW5kaWYKICAgICAgICAgCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHZvaWQg
Y3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCEh
bV9kZmdEYXRhKQpAQCAtMzM1LDEyICszMzEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldChJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAgICAgICAgeworICAg
ICAgICAgICAgQVNTRVJUKHJldHVybkFkZHJlc3MgPj0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSAm
JiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zKCkuZW5kKCkpOwogICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlv
bnMoKS5iZWdpbigpOwogICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgICB2b2lkIHNldElzTnVt
ZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lz
TnVtZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAg
ICAgICBib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbigpIHsgcmV0dXJuIG1faXNOdW1lcmlj
Q29tcGFyZUZ1bmN0aW9uOyB9CkBAIC0zNTQsMTcgKzM0OSw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB7CiAgICAgICAgICAgICBtX3Nob3VsZERpc2NhcmRCeXRlY29kZSA9IHRydWU7CiAg
ICAgICAgIH0KLSAgICAgICAgdm9pZCBoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0
eSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghIWFsdGVybmF0aXZlKCkpCi0gICAgICAg
ICAgICAgICAgZGlzY2FyZEJ5dGVjb2RlKCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgZGlzY2FyZEJ5dGVjb2RlTGF0ZXIoKTsKLSAgICAgICAgfQorICAgICAgICB2b2lkIGhh
bmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgICAgIAotI2lmbmRlZiBO
REVCVUcKICAgICAgICAgYm9vbCB1c2VzT3Bjb2RlKE9wY29kZUlEKTsKLSNlbmRpZgogCiAgICAg
ICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQoKSB7IHJldHVybiBtX2luc3RydWN0aW9uQ291
bnQ7IH0KICAgICAgICAgdm9pZCBzZXRJbnN0cnVjdGlvbkNvdW50KHVuc2lnbmVkIGluc3RydWN0
aW9uQ291bnQpIHsgbV9pbnN0cnVjdGlvbkNvdW50ID0gaW5zdHJ1Y3Rpb25Db3VudDsgfQpAQCAt
Mzg3LDE3ICszNzQsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFibGVNZW1v
cnlIYW5kbGUqIGV4ZWN1dGFibGVNZW1vcnkoKSB7IHJldHVybiBnZXRKSVRDb2RlKCkuZ2V0RXhl
Y3V0YWJsZU1lbW9yeSgpOyB9CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRp
bWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBqZXR0aXNvbigpID0gMDsKKyAgICAgICAgYm9vbCBqaXRDb21waWxlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGdldEpJVFR5cGUoKSAh
PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGdl
dEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaml0Q29tcGlsZUltcGwoZ2xv
YmFsRGF0YSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICB2
aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBjYW5Db21waWxlV2l0aERGRygpID0gMDsKICAgICAgICAgYm9vbCBoYXNPcHRpbWl6ZWRSZXBs
YWNlbWVudCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFz
ZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgYm9vbCByZXN1bHQgPSByZXBs
YWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPiBnZXRKSVRUeXBlKCk7CiAjaWYgIUFTU0VSVF9ESVNB
QkxFRAogICAgICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgICAgICBBU1NFUlQocmVw
bGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CiAgICAgICAgICAg
ICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlw
ZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoSklU
Q29kZTo6aXNCYXNlbGluZUNvZGUocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpKSk7CiAgICAg
ICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCkgPT0gdGhpcyk7CiAgICAgICAgICAgICB9
CiAjZW5kaWYKQEAgLTQ1NiwxOCArNDUyLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IHZvaWQgY2xlYXJFdmFsQ2FjaGUoKTsKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAg
ICAgdm9pZCBhZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKHVuc2lnbmVkIHByb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRh
LT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKTsKKyAgICAgICAgICAgIG1fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBwZW5kKHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24p
OwogICAgICAgICB9CiAgICAgICAgIHZvaWQgYWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKHVu
c2lnbmVkIGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAg
aWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9ucy5hcHBlbmQoZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKTsKKyAg
ICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5hcHBlbmQoZ2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICBib29sIGhhc0dsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbkF0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOworI2lm
IEVOQUJMRShMTElOVCkKKyAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGFkZExMSW50Q2FsbExp
bmtJbmZvKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3MuYXBw
ZW5kKExMSW50Q2FsbExpbmtJbmZvKCkpOworICAgICAgICAgICAgcmV0dXJuICZtX2xsaW50Q2Fs
bExpbmtJbmZvcy5sYXN0KCk7CisgICAgICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAg
ICAgICAgIHZvaWQgc2V0TnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3Moc2l6ZV90IHNpemUpIHsg
bV9zdHJ1Y3R1cmVTdHViSW5mb3MuZ3JvdyhzaXplKTsgfQpAQCAtNDc2LDggKzQ3NSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkR2xvYmFsUmVzb2x2ZUluZm8odW5zaWdu
ZWQgZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
bV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX2dsb2JhbFJlc29s
dmVJbmZvcy5hcHBlbmQoR2xvYmFsUmVzb2x2ZUluZm8oZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
KSk7CisgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbmZvcy5hcHBlbmQoR2xvYmFsUmVzb2x2
ZUluZm8oZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKSk7CiAgICAgICAgIH0KICAgICAgICAgR2xv
YmFsUmVzb2x2ZUluZm8mIGdsb2JhbFJlc29sdmVJbmZvKGludCBpbmRleCkgeyByZXR1cm4gbV9n
bG9iYWxSZXNvbHZlSW5mb3NbaW5kZXhdOyB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2
ZUluZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTQ4OCw2
ICs0ODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGFkZE1ldGhvZENhbGxM
aW5rSW5mb3ModW5zaWduZWQgbikgeyBBU1NFUlQobV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSk7
IG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5ncm93KG4pOyB9CiAgICAgICAgIE1ldGhvZENhbGxMaW5r
SW5mbyYgbWV0aG9kQ2FsbExpbmtJbmZvKGludCBpbmRleCkgeyByZXR1cm4gbV9tZXRob2RDYWxs
TGlua0luZm9zW2luZGV4XTsgfQorICAgICAgICBzaXplX3QgbnVtYmVyT2ZNZXRob2RDYWxsTGlu
a0luZm9zKCkgeyByZXR1cm4gbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKTsgfQogI2VuZGlm
CiAgICAgICAgIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTUyOCw2ICs1MjcsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5
dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSkpIC0gMV0udS5wcm9maWxlID09IHJlc3VsdCk7CiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CisgICAgICAgIFByZWRpY3RlZFR5cGUg
dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNl
dCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHZhbHVlUHJvZmlsZUZvckJ5dGVjb2Rl
T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIHRvdGFsTnVtYmVyT2ZWYWx1ZVByb2Zp
bGVzKCkKICAgICAgICAgewpAQCAtNTU0LDEyICs1NTcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZVNsb3dDYXNlKGludCBieXRlY29kZU9m
ZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmls
ZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25l
ZCB2YWx1ZSA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49IE9wdGlvbnM6Omxpa2Vs
eVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUp
IC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNl
VGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGNvdWxkVGFrZVNs
b3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFu
dW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2Rl
T2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgcmV0dXJuIHZh
bHVlID49IE9wdGlvbnM6OmNvdWxkVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19j
YXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6OmNv
dWxkVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CkBAIC01NzgsMTIgKzU4NSwxNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlU3Bl
Y2lhbEZhc3RDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAg
aWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNp
YWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291
bnRlcjsKICAgICAgICAgICAgIHJldHVybiBzcGVjaWFsRmFzdENhc2VDb3VudCA+PSBPcHRpb25z
OjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+
KHNwZWNpYWxGYXN0Q2FzZUNvdW50KSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25z
OjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgYm9vbCBsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0
KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHNs
b3dDYXNlQ291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNv
dW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zm
c2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBzbG93Q2FzZUNv
dW50IC0gc3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBAIC01OTIsNiArNjAzLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZUFueVNsb3dDYXNlKGlu
dCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJh
cmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB1bnNpZ25lZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBz
cGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHZh
bHVlID0gc2xvd0Nhc2VDb3VudCArIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNjc3LDcgKzY5
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBhZGRGcmVxdWVu
dEV4aXRTaXRlKGNvbnN0IERGRzo6RnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkKICAgICAgICAgewot
ICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7
CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgp
KSk7CiAgICAgICAgICAgICByZXR1cm4gbV9leGl0UHJvZmlsZS5hZGQoc2l0ZSk7CiAgICAgICAg
IH0KIApAQCAtNzgyLDYgKzc5NSwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBj
b3B5UG9zdFBhcnNlRGF0YUZyb20oQ29kZUJsb2NrKiBhbHRlcm5hdGl2ZSk7CiAgICAgICAgIHZv
aWQgY29weVBvc3RQYXJzZURhdGFGcm9tQWx0ZXJuYXRpdmUoKTsKICAgICAgICAgCisgICAgICAg
IC8vIEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiBKSVR0aW5nIGtpY2tzIGluLCBpbiBh
IG1peGVkIG1vZGUKKyAgICAgICAgLy8gZXhlY3V0aW9uIHdvcmxkLgorICAgICAgICAKKyAgICAg
ICAgdm9pZCBkb250SklUQW55dGltZVNvb24oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xs
aW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250
SklUQW55dGltZVNvb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0QWZ0
ZXJXYXJtVXAoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIg
PSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRTb29uKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9ySklUU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50MzJfdCBsbGlu
dEV4ZWN1dGVDb3VudGVyKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1f
bGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgLy8gRnVu
Y3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIHRpZXJlZCBjb21waWxhdGlvbiBraWNrcyBpbi4g
VGhpcwogICAgICAgICAvLyBjb250cm9scyBib3RoIHdoZW4gdGhlIG9wdGltaXppbmcgY29tcGls
ZXIgaXMgaW52b2tlZCBhbmQgd2hlbiBPU1IKICAgICAgICAgLy8gZW50cnkgaGFwcGVucy4gVHdv
IHRyaWdnZXJzIGV4aXN0OiB0aGUgbG9vcCB0cmlnZ2VyIGFuZCB0aGUgcmV0dXJuCkBAIC05NzQs
NiArMTAxMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fc2hvdWxkRGlzY2Fy
ZEJ5dGVjb2RlOwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29t
cGlsZUltcGwoSlNHbG9iYWxEYXRhJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRX
ZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxp
emVVbmNvbmRpdGlvbmFsbHkoKTsKICAgICAgICAgCkBAIC05ODYsNyArMTAyMyw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIHRhbGx5RnJlcXVlbnRFeGl0U2l0ZXMoKSB7IH0KICNl
bmRpZgogICAgICAgICAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRShPUENPREVfU0FN
UExJTkcpCiAgICAgICAgIHZvaWQgZHVtcChFeGVjU3RhdGUqLCBjb25zdCBWZWN0b3I8SW5zdHJ1
Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYgYmVnaW4sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0
X2l0ZXJhdG9yJikgY29uc3Q7CiAKICAgICAgICAgQ1N0cmluZyByZWdpc3Rlck5hbWUoRXhlY1N0
YXRlKiwgaW50IHIpIGNvbnN0OwpAQCAtOTk2LDcgKzEwMzIsNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBwcmludEdldEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZl
Y3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0
OwogICAgICAgICB2b2lkIHByaW50Q2FsbE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVj
dG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7
CiAgICAgICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBW
ZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25z
dDsKLSNlbmRpZgogICAgICAgICB2b2lkIHZpc2l0U3RydWN0dXJlcyhTbG90VmlzaXRvciYsIElu
c3RydWN0aW9uKiB2UEMpIGNvbnN0OwogICAgICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAg
LTEwNTcsOSArMTA5MiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFNvdXJj
ZVByb3ZpZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7CiAK
LSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9wcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2dsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBTZWdtZW50
ZWRWZWN0b3I8TExJbnRDYWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxsTGlua0luZm9zOworICAg
ICAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGlu
ZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdMTEludENhbGxzOwogI2VuZGlm
CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0
cnVjdHVyZVN0dWJJbmZvczsKQEAgLTEwNzAsOSArMTEwNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNoZWNrOwog
ICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVs
Tm9kZTxDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2VuZGlmCi0jaWYgRU5BQkxF
KERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAg
T3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAgICAgIAorI2VuZGlm
CisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFrUmVmZXJlbmNlVHJhbnNp
dGlvbiB7CiAgICAgICAgICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigpIHsgfQogICAgICAg
ICAgICAgCkBAIC0xMTM1LDEyICsxMTczLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IE93blB0cjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAgIAorICAgICAgICBpbnQz
Ml90IG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAgICAgIGludDMyX3QgbV9q
aXRFeGVjdXRlQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZVN1Y2Nlc3ND
b3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFpbENvdW50ZXI7CiAgICAg
ICAgIHVpbnQ4X3QgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3Qg
bV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKLQorICAgICAgICAKICAgICAgICAgc3RydWN0
IFJhcmVEYXRhIHsKICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAg
IHB1YmxpYzoKQEAgLTEyMTMsNiArMTI1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3Rh
dGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAg
ICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBi
b29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKQEAgLTEyNDcsNiArMTI4OCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCog
Y29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJ
bXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1l
bnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYK
QEAgLTEyODQsNiArMTMyNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29w
ZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0
dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNv
bXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjcsMjAgKzI3LDQ5IEBACiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgogCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogCiBu
YW1lc3BhY2UgSlNDIHsKIAorR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJv
bUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwg
SWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwor
ICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnQp
OworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9m
aWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKyAgICAK
KyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfbWV0aG9kX2NoZWNr
KQorICAgICAgICBpbnN0cnVjdGlvbisrOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBp
bnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAg
ICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCks
IG5vdEZvdW5kLCBmYWxzZSk7CisgICAgCisgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+
Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0
ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9u
LCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAgICByZXR1cm4gR2V0
QnlJZFN0YXR1cyhTaW1wbGVEaXJlY3QsIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQs
IGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwg
U3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisjZW5kaWYKK30KKwogR2V0QnlJZFN0
YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgVU5VU0VE
X1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsK
ICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxV
RV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mU3RydWN0dXJlU3R1
YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ss
IGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICAvLyBGaXJzdCBjaGVjayBpZiBpdCBt
YWtlcyBlaXRoZXIgY2FsbHMsIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBiZSBzdXBlciBjYXJl
ZnVsLCBvcgogICAgIC8vIGlmIGl0J3Mgbm90IHNldCBhdCBhbGwsIGluIHdoaWNoIGNhc2Ugd2Ug
cHVudC4KICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5n
ZXRTdHViSW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAg
ICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBu
b3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ss
IGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAKICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVj
dHVyZUxpc3QqIGxpc3Q7CiAgICAgaW50IGxpc3RTaXplOwpAQCAtNjAsMTggKzg5LDE5IEBAIEdl
dEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICB9CiAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgIGlmICghbGlzdC0+bGlzdFtp
XS5pc0RpcmVjdCkKLSAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMs
IFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhNYWtlc0NhbGxzLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIHRydWUpOwogICAgIH0K
ICAgICAKICAgICAvLyBOZXh0IGNoZWNrIGlmIGl0IHRha2VzIHNsb3cgY2FzZSwgaW4gd2hpY2gg
Y2FzZSB3ZSB3YW50IHRvIGJlIGtpbmQgb2YgY2FyZWZ1bC4KICAgICBpZiAocHJvZmlsZWRCbG9j
ay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiBH
ZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7Cisg
ICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNldCgp
LCBub3RGb3VuZCwgdHJ1ZSk7CiAgICAgCiAgICAgLy8gRmluYWxseSBmaWd1cmUgb3V0IGlmIHdl
IGNhbiBkZXJpdmUgYW4gYWNjZXNzIHN0cmF0ZWd5LgogICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0
OworICAgIHJlc3VsdC5tX3dhc1NlZW5JbkpJVCA9IHRydWU7CiAgICAgc3dpdGNoIChzdHViSW5m
by5hY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBH
ZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7Cisg
ICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5k
ZXgsIGlkZW50KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6IHsK
ICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5mby51LmdldEJ5SWRTZWxmLmJh
c2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CkBAIC0xMzAsNyArMTYwLDcgQEAgR2V0QnlJZFN0YXR1
cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiAj
ZWxzZSAvLyBFTkFCTEUoSklUKQotICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRp
b24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMo
Tm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CiAjZW5kaWYg
Ly8gRU5BQkxFKEpJVCkKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwx
MCArNDksMTEgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgR2V0QnlJZFN0YXR1
cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBv
ZmZzZXQpCisgICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0
JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQsIGJvb2wgd2FzU2VlbkluSklUKQogICAgICAg
ICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0
KQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBtX3dhc1NlZW5JbkpJVCh3
YXNTZWVuSW5KSVQpCiAgICAgewogICAgICAgICBBU1NFUlQoKHN0YXRlID09IFNpbXBsZURpcmVj
dCkgPT0gKG9mZnNldCAhPSBub3RGb3VuZCkpOwogICAgIH0KQEAgLTcwLDEwICs3MSwxNSBAQCBw
dWJsaWM6CiAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdCB7IHJl
dHVybiBtX3N0cnVjdHVyZVNldDsgfQogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX29mZnNldDsgfQogICAgIAorICAgIGJvb2wgd2FzU2VlbkluSklUKCkgY29uc3QgeyByZXR1
cm4gbV93YXNTZWVuSW5KSVQ7IH0KKyAgICAKIHByaXZhdGU6CisgICAgc3RhdGljIEdldEJ5SWRT
dGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4
LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmVT
ZXQgbV9zdHJ1Y3R1cmVTZXQ7CiAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIGJvb2wgbV93YXNT
ZWVuSW5KSVQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0NlbGw7CiAg
ICAgY2xhc3MgU3RydWN0dXJlOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOworICAgIHN0cnVj
dCBMTEludENhbGxMaW5rSW5mbzsKICAgICBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCiAjaWYgRU5B
QkxFKEpJVCkKQEAgLTE0Niw2ICsxNDcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAog
ICAgIHN0cnVjdCBJbnN0cnVjdGlvbiB7CisgICAgICAgIEluc3RydWN0aW9uKCkKKyAgICAgICAg
eworICAgICAgICAgICAgdS5qc0NlbGwuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICAKICAg
ICAgICAgSW5zdHJ1Y3Rpb24oT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogI2lmICFFTkFCTEUo
Q09NUFVURURfR09UT19JTlRFUlBSRVRFUikKQEAgLTE4Miw2ICsxODgsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBn
ZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7IH0KICAgICAgICAgCisgICAg
ICAgIEluc3RydWN0aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pIHsgdS5jYWxs
TGlua0luZm8gPSBjYWxsTGlua0luZm87IH0KKyAgICAgICAgCiAgICAgICAgIEluc3RydWN0aW9u
KFZhbHVlUHJvZmlsZSogcHJvZmlsZSkgeyB1LnByb2ZpbGUgPSBwcm9maWxlOyB9CiAKICAgICAg
ICAgdW5pb24gewpAQCAtMTkxLDcgKzE5OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3RydWN0dXJlQ2hhaW47CiAgICAg
ICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxsOwogICAgICAgICAgICAgUHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKKyAgICAgICAgICAgIExMSW50Q2Fs
bExpbmtJbmZvKiBjYWxsTGlua0luZm87CiAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2Zp
bGU7CisgICAgICAgICAgICB2b2lkKiBwb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAog
ICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRD
YWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgTExJbnRDYWxsTGlua0luZm9faAorI2RlZmluZSBMTEludENhbGxMaW5rSW5mb19oCisK
KyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LmgiCisjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorCituYW1lc3BhY2UgSlND
IHsKKworc3RydWN0IEluc3RydWN0aW9uOworCitzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm8gOiBw
dWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+IHsKKyAgICBMTElu
dENhbGxMaW5rSW5mbygpCisgICAgeworICAgIH0KKyAgICAKKyAgICB+TExJbnRDYWxsTGlua0lu
Zm8oKQorICAgIHsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUo
KTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIGNhbGxlZTsgfQor
ICAgIAorICAgIHZvaWQgdW5saW5rKCkKKyAgICB7CisgICAgICAgIGNhbGxlZS5jbGVhcigpOwor
ICAgICAgICBtYWNoaW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAg
ICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAK
KyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOworICAgIFdyaXRlQmFycmllcjxK
U0Z1bmN0aW9uPiBsYXN0U2VlbkNhbGxlZTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFj
aGluZUNvZGVUYXJnZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIExM
SW50Q2FsbExpbmtJbmZvX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDU3NzAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwxMSBAQCBNZXRob2RDYWxsTGlua1N0YXR1
cyBNZXRob2RDYWxsTGlua1N0YXR1CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwog
ICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFC
TEUoVkFMVUVfUFJPRklMRVIpCisgICAgLy8gTk9URTogVGhpcyBkb2VzIG5vdCBoYXZlIGFuIExM
SW50IGZhbGwtYmFjayBiZWNhdXNlIExMSW50IGRvZXMgbm90IGRvIGFueSBtZXRob2QKKyAgICAv
LyBjYWxsIGxpbmsgY2FjaGluZy4KKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mTWV0
aG9kQ2FsbExpbmtJbmZvcygpKQorICAgICAgICByZXR1cm4gTWV0aG9kQ2FsbExpbmtTdGF0dXMo
KTsKKyAgICAKICAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGwgPSBwcm9maWxlZEJs
b2NrLT5nZXRNZXRob2RDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCk7CiAgICAgCiAgICAgaWYg
KCFtZXRob2RDYWxsLnNlZW4gfHwgIW1ldGhvZENhbGwuY2FjaGVkU3RydWN0dXJlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTA1NzcwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjMsNiArMTIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dl
dF9hcmd1bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkg
XAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAorICAgICAgICBt
YWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8o
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1
dF9ieV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmlj
LCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApAQCAtMjAyLDYgKzIwNCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIGVudW0geyBGT1JfRUFDSF9PUENP
REVfSUQoT1BDT0RFX0lEX0VOVU0pIH0gT3Bjb2RlSUQ7CiAgICAgI3VuZGVmIE9QQ09ERV9JRF9F
TlVNCiAKKyAgICBjb25zdCBpbnQgbWF4T3Bjb2RlTGVuZ3RoID0gOTsKICAgICBjb25zdCBpbnQg
bnVtT3Bjb2RlSURzID0gb3BfZW5kICsgMTsKIAogICAgICNkZWZpbmUgT1BDT0RFX0lEX0xFTkdU
SFMoaWQsIGxlbmd0aCkgY29uc3QgaW50IGlkIyNfbGVuZ3RoID0gbGVuZ3RoOwpAQCAtMjE4LDcg
KzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoVkVS
SUZZX09QQ09ERV9JRCk7CiAgICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQKIAotI2lmIEVOQUJM
RShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lO
VEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAjaWYgQ09NUElMRVIoUlZDVCkgfHwgQ09NUElM
RVIoSU5URUwpCiAgICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNp
b24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0
dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyNyArMjcsNjkgQEAKICNpbmNsdWRlICJQdXRC
eUlkU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMb3dMZXZl
bEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlQ2hhaW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK1B1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0
YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQoreworICAgIFVOVVNFRF9QQVJBTShw
cm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisgICAgVU5V
U0VEX1BBUkFNKGlkZW50KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVj
b2RlSW5kZXg7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUu
c3RydWN0dXJlLmdldCgpOworICAgIGlmICghc3RydWN0dXJlKQorICAgICAgICByZXR1cm4gUHV0
QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgCisgICAg
aWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZCkgeworICAg
ICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2Jh
bERhdGEoKSwgaWRlbnQpOworICAgICAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAg
ICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91
bmQpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlUmVwbGFj
ZSwgc3RydWN0dXJlLCAwLCAwLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQoaW5z
dHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGly
ZWN0CisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgCisgICAgU3RydWN0dXJlKiBuZXdTdHJ1
Y3R1cmUgPSBpbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBTdHJ1Y3R1cmVD
aGFpbiogY2hhaW4gPSBpbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpOworICAg
IEFTU0VSVChuZXdTdHJ1Y3R1cmUpOworICAgIEFTU0VSVChjaGFpbik7CisgICAgCisgICAgc2l6
ZV90IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRh
KCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4g
UHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgCisg
ICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3RydWN0dXJlLCBuZXdT
dHJ1Y3R1cmUsIGNoYWluLCBvZmZzZXQpOworI2Vsc2UKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1
cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisjZW5kaWYKK30KKwogUHV0QnlJ
ZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9j
aywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4
KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShW
QUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mU3RydWN0dXJl
U3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxv
Y2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICBpZiAocHJvZmlsZWRCbG9jay0+
bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCiAgICAgICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKICAgICAKICAgICBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mbyhi
eXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJldHVybiBQ
dXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAg
cmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRl
bnQpOwogICAgIAogICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewogICAgIGNhc2Ug
YWNjZXNzX3Vuc2V0OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9u
LCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHBy
b2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAgICAgY2FzZSBh
Y2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6IHsKICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0dWJJ
bmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0KApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZpc2lv
biAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKICAgICBzaXplX3Qg
b2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKIHByaXZhdGU6CisgICAg
c3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsK
ICAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOwogICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1
Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJCYXRjaGVkVHJhbnNpdGlvbk9w
dGltaXplci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTY29wZUNo
YWluLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIK
QEAgLTExNiwyNiArMTE3LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGV4cGVjdGVkIGJ5IHRo
ZSBjYWxsZWUuCiAqLwogCi0jaWZuZGVmIE5ERUJVRwogc3RhdGljIGJvb2wgc19kdW1wc0dlbmVy
YXRlZENvZGUgPSBmYWxzZTsKLSNlbmRpZgogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpzZXRE
dW1wc0dlbmVyYXRlZENvZGUoYm9vbCBkdW1wc0dlbmVyYXRlZENvZGUpCiB7Ci0jaWZuZGVmIE5E
RUJVRwogICAgIHNfZHVtcHNHZW5lcmF0ZWRDb2RlID0gZHVtcHNHZW5lcmF0ZWRDb2RlOwotI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oZHVtcHNHZW5lcmF0ZWRDb2RlKTsKLSNlbmRpZgogfQogCiBi
b29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKQogewotI2lmbmRlZiBO
REVCVUcKICAgICByZXR1cm4gc19kdW1wc0dlbmVyYXRlZENvZGU7Ci0jZWxzZQotICAgIHJldHVy
biBmYWxzZTsKLSNlbmRpZgogfQogCiBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVy
YXRlKCkKQEAgLTE0OCwxMCArMTM5LDggQEAgSlNPYmplY3QqIEJ5dGVjb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZSgpCiAKICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25Db3VudChtX2NvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIAotI2lmbmRlZiBOREVCVUcKICAgICBpZiAo
c19kdW1wc0dlbmVyYXRlZENvZGUpCiAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wKG1fc2NvcGVD
aGFpbi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpOwotI2VuZGlmCiAKICAgICBpZiAoKG1f
Y29kZVR5cGUgPT0gRnVuY3Rpb25Db2RlICYmICFtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVD
aGFpbigpICYmICFtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKSB8fCBtX2NvZGVUeXBlID09
IEV2YWxDb2RlKQogICAgICAgICBzeW1ib2xUYWJsZSgpLmNsZWFyKCk7CkBAIC0xMjc2LDkgKzEy
NjUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5B
QkxFKEpJVCkKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3Ry
dWN0aW9ucygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAg
ICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0
UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxf
ZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25z
dGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ0MCw5ICsxNDI3LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9jb2RlQmxvY2st
PmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAjZW5kaWYKLSNp
ZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgVmFsdWVQcm9m
aWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/
IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ5MCw5ICsxNDc1LDcgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAg
ICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUo
KSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFk
ZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlm
CiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKHJlcXVpcmVz
RHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2ds
b2JhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTUxMSw5
ICsxNDk0LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1ldGhvZENoZWNrKAogCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0
LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSNpZiBF
TkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5z
dHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgVmFsdWVQcm9m
aWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2dldF9ieV9pZCk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0xNTM5LDkgKzE1MjAsNyBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyCiAKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVu
dGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0jaWYgRU5BQkxFKElOVEVS
UFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGlu
c3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKIAogICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5
X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBAIC0xNTU3
LDkgKzE1MzYsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5CiAK
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZChSZWdpc3Rl
cklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUp
CiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICAK
ICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGJhc2UtPmluZGV4KCkpOwpAQCAtMTg0OCw3ICsxODI1LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Q2FsbCgKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+
aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50
cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0
ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1f
Y29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwog
ICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSog
cHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMTk1
Miw3ICsxOTMzLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3QK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcygpKTsgLy8gYXJnQ291bnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3Vt
ZW50cy5yZWdpc3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJ
TlQpCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hZGRMTEludENhbGxM
aW5rSW5mbygpKTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworI2VuZGlm
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJl
c3VsdCgpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9w
Y29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMjIxMyw3ICsyMTk4LDExIEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gKIHsKICAgICBtX3VzZXNFeGNlcHRpb25z
ID0gdHJ1ZTsKICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICBIYW5kbGVy
SW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVj
dGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoLCBD
b2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9jYXRjaCkpIH07
CisjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQt
PmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCAr
IG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKCkgfTsKKyNlbmRpZgogI2Vsc2UK
ICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAs
IDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VT
Y29wZURlcHRoIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjA0LDkgKzYwNCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBVTlVTRURfUEFSQU0obm9k
ZUluZGV4KTsKICAgICAgICAgCi0gICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIEFTU0VSVChwcm9maWxlKTsKLSAgICAgICAgUHJl
ZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9u
KCk7CisgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlSW5kZXgpOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICAgICAg
cHJpbnRmKCJEeW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4
LCBieXRlY29kZUluZGV4LCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikpOwogI2VuZGlm
CkBAIC0xMDQxLDYgKzEwMzksOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmlu
Zyhib29sCiAgICAgCiAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhlbiBpdCBsb29rcyBsaWtlIHdl
IHNob3VsZCBkZWZpbml0ZWx5IGlubGluZSB0aGlzIGNvZGUuIFByb2NlZWQKICAgICAvLyB3aXRo
IHBhcnNpbmcgdGhlIGNvZGUgdG8gZ2V0IGJ5dGVjb2RlLCBzbyB0aGF0IHdlIGNhbiB0aGVuIHBh
cnNlIHRoZSBieXRlY29kZS4KKyAgICAvLyBOb3RlIHRoYXQgaWYgTExJbnQgaXMgZW5hYmxlZCwg
dGhlIGJ5dGVjb2RlIHdpbGwgYWx3YXlzIGJlIGF2YWlsYWJsZS4gQWxzbyBub3RlCisgICAgLy8g
dGhhdCBpZiBMTEludCBpcyBlbmFibGVkLCB3ZSBtYXkgaW5saW5lIGEgY29kZSBibG9jayB0aGF0
IGhhcyBuZXZlciBiZWVuIEpJVHRlZAorICAgIC8vIGJlZm9yZSEKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IG1fY29kZUJsb2NrQ2FjaGUuZ2V0KENvZGVCbG9ja0tleShleGVjdXRhYmxlLCBr
aW5kKSwgZXhwZWN0ZWRGdW5jdGlvbi0+c2NvcGUoKSk7CiAgICAgaWYgKCFjb2RlQmxvY2spCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3NDEsNyArMTc0Miw3IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4KTsKICAgICAgICAgICAgIAogICAg
ICAgICAgICAgaWYgKG1ldGhvZENhbGxTdGF0dXMuaXNTZXQoKQotICAgICAgICAgICAgICAgICYm
ICFnZXRCeUlkU3RhdHVzLmlzU2V0KCkKKyAgICAgICAgICAgICAgICAmJiAhZ2V0QnlJZFN0YXR1
cy53YXNTZWVuSW5KSVQoKQogICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5t
X2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpIHsKICAg
ICAgICAgICAgICAgICAvLyBJdCdzIG1vbm9tb3JwaGljIGFzIGZhciBhcyB3ZSBjYW4gdGVsbCwg
c2luY2UgdGhlIG1ldGhvZF9jaGVjayB3YXMgbGlua2VkCiAgICAgICAgICAgICAgICAgLy8gYnV0
IHRoZSBzbG93IHBhdGggKGkuZS4gdGhlIG5vcm1hbCBnZXRfYnlfaWQpIG5ldmVyIGZpcmVkLgpA
QCAtMTgxMCw3ICsxODExLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNp
Z25lZAogCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwogICAgICAgICB9
Ci0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAgICAgIE5vZGVJ
bmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAg
ICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJh
bmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3Rh
Y2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmRd
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShy
ZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDggQEAgaW5saW5lIGJvb2wgY2Fu
Q29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAg
ICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9w
X3B1dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTA1Nzcw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwyMSBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNT
dGF0ZSogZXhlYykKICAgICB1aW50MzJfdCBleGl0SW5kZXggPSBnbG9iYWxEYXRhLT5vc3JFeGl0
SW5kZXg7CiAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jay0+b3NyRXhpdChleGl0SW5kZXgp
OwogICAgIAorICAgIC8vIE1ha2Ugc3VyZSBhbGwgY29kZSBvbiBvdXIgaW5saW5lIHN0YWNrIGlz
IEpJVCBjb21waWxlZC4gVGhpcyBpcyBuZWNlc3Nhcnkgc2luY2UKKyAgICAvLyB3ZSBtYXkgb3B0
IHRvIGlubGluZSBhIGNvZGUgYmxvY2sgZXZlbiBiZWZvcmUgaXQgaGFkIGV2ZXIgYmVlbiBjb21w
aWxlZCBieSB0aGUKKyAgICAvLyBKSVQsIGJ1dCBvdXIgT1NSIGV4aXQgaW5mcmFzdHJ1Y3R1cmUg
Y3VycmVudGx5IG9ubHkgd29ya3MgaWYgdGhlIHRhcmdldCBvZiB0aGUKKyAgICAvLyBPU1IgZXhp
dCBpcyBKSVQgY29kZS4gVGhpcyBjb3VsZCBiZSBjaGFuZ2VkIHNpbmNlIHRoZXJlIGlzIG5vdGhp
bmcgcGFydGljdWxhcmx5CisgICAgLy8gaGFyZCBhYm91dCBkb2luZyBhbiBPU1IgZXhpdCBpbnRv
IHRoZSBpbnRlcnByZXRlciwgYnV0IGZvciBub3cgdGhpcyBzZWVtcyB0byBtYWtlCisgICAgLy8g
c2Vuc2UgaW4gdGhhdCBpZiB3ZSdyZSBPU1IgZXhpdGluZyBmcm9tIGlubGluZWQgY29kZSBvZiBh
IERGRyBjb2RlIGJsb2NrLCB0aGVuCisgICAgLy8gcHJvYmFibHkgaXQncyBhIGdvb2Qgc2lnbiB0
aGF0IHRoZSB0aGluZyB3ZSdyZSBleGl0aW5nIGludG8gaXMgaG90LiBFdmVuIG1vcmUKKyAgICAv
LyBpbnRlcmVzdGluZ2x5LCBzaW5jZSB0aGUgY29kZSB3YXMgaW5saW5lZCwgaXQgbWF5IG5ldmVy
IG90aGVyd2lzZSBnZXQgSklUCisgICAgLy8gY29tcGlsZWQgc2luY2UgdGhlIGFjdCBvZiBpbmxp
bmluZyBpdCBtYXkgZW5zdXJlIHRoYXQgaXQgb3RoZXJ3aXNlIG5ldmVyIHJ1bnMuCisgICAgZm9y
IChDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+
Y2FsbGVyKSB7CisgICAgICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKQorICAgICAgICAgICAgLT5i
YXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+aXNDYWxsID8g
Q29kZUZvckNhbGwgOiBDb2RlRm9yQ29uc3RydWN0KQorICAgICAgICAgICAgLT5qaXRDb21waWxl
KCpnbG9iYWxEYXRhKTsKKyAgICB9CisgICAgCiAgICAgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVj
b3ZlcnkgPSAwOwogICAgIGlmIChleGl0Lm1fcmVjb3ZlcnlJbmRleCkKICAgICAgICAgcmVjb3Zl
cnkgPSAmY29kZUJsb2NrLT5zcGVjdWxhdGlvblJlY292ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4
IC0gMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiREZHUmVwYXRj
aC5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJHZXR0ZXJT
ZXR0ZXIuaCIKICNpbmNsdWRlICJJbmxpbmVBU00uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgpAQCAtNTYxLDQ1ICs1NjIsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21w
YXJlU3RyCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRl
Y29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KIAotRW5j
b2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNv
ZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKEV4ZWNTdGF0ZSopOwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lN
Qk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNc
biIKLSAgICAibW92ICVyMTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxP
Q0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2Vs
aWYgQ1BVKFg4NikKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6
IiAiXG4iCi0gICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVz
cClcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1h
c20gKAotIi50ZXh0IiAiXG4iCi0iLmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RS
SU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICJcbiIKLSIudGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZV
TkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJc
biIKLSAgICAiY3B5IHIwLCByNSIgIlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FU
SU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlm
Ci0KLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdp
dGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQotewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQotCiBzdGF0aWMg
dm9pZCogaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxl
ZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9
IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9BbGxvY2F0aW9uU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOworY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWFya2VkQmxvY2s7CiAKIGNsYXNzIEFsbG9jYXRpb25T
cGFjZSB7CkBAIC02Nyw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNocmluaygpOwogICAg
IAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAg
IAogICAgIGVudW0gQWxsb2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRpb25DYW5GYWlsLCBBbGxvY2F0
aW9uTXVzdFN1Y2NlZWQgfTsKIAogICAgIHZvaWQqIGFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXpl
Q2xhc3MmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAx
MDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtODM3LDcgKzgzNyw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBz
d2VlcFRvZ2cKICAgICAgICAgc2V0SGlnaFdhdGVyTWFyayhtYXgocHJvcG9ydGlvbmFsQnl0ZXMs
IG1fbWluQnl0ZXNQZXJDeWNsZSkpOwogICAgIH0KICAgICBKQVZBU0NSSVBUQ09SRV9HQ19FTkQo
KTsKLQorICAgIAogICAgICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwogfQogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTVmFsdWU7
CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAgICBjbGFzcyBSZWdp
c3RlckZpbGU7CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTEzNiwxMSArMTM3LDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMoSGFz
aFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5kIGNs
YXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGlvblNwYWNlOwor
ICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOworICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBCdW1wU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTbG90
VmlzaXRvcjsKLSAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKIAogICAgICAgICBzaXpl
X3Qgd2F0ZXJNYXJrKCk7CiAgICAgICAgIHNpemVfdCBoaWdoV2F0ZXJNYXJrKCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDEwNTc3MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwNCw3ICszMDQsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oCiAjZW5kaWYKIAogICAgIEFTU0VSVChIZWFwOjppc01hcmtlZChjZWxsKSk7Ci0KKyAg
ICAKICAgICBpZiAoaXNKU1N0cmluZyhjZWxsKSkgewogICAgICAgICBKU1N0cmluZzo6dmlzaXRD
aGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0
dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZp
c2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3Mg
SGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKK2NsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsKIGNsYXNzIFNsb3RWaXNp
dG9yOwogCkBAIC03Nyw2ICs3OCw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBG
dW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jaygpOwogCiBw
cml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiAg
ICAgLy8gWyAzMi4uLiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZVN0ZXAg
PSBNYXJrZWRCbG9jazo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNl
Q3V0b2ZmID0gMjU2OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Nh
bGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksNiArMTE5LDkg
QEAgbmFtZXNwYWNlIEpTQyAgewogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgSW5z
dHJ1Y3Rpb24qIHJldHVyblZQQygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxlOjpS
ZXR1cm5QQ10udlBDKCk7IH0KICNlbmRpZgorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5zdHJ1
Y3Rpb24qPih0aGlzW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0udGFnKCkpOyB9CisjZW5k
aWYKIAogICAgICAgICB2b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogY2FsbGVyRnJhbWUp
IHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1l
XSA9IGNhbGxlckZyYW1lOyB9CiAgICAgICAgIHZvaWQgc2V0U2NvcGVDaGFpbihTY29wZUNoYWlu
Tm9kZSogc2NvcGVDaGFpbikgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVy
RmlsZTo6U2NvcGVDaGFpbl0gPSBzY29wZUNoYWluOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEwNTc3
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNlbmRp
ZgogCi0jZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAoRU5BQkxF
KENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKKyNkZWZp
bmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EICgoRU5BQkxFKENPTVBVVEVE
X0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkpICYmICFkZWZpbmVkKF9fbGx2bV9f
KSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNTQ3LDE3ICs1NDcsNDMgQEAgSW50ZXJw
cmV0ZXI6OkludGVycHJldGVyKCkKIHsKIH0KIAotdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6
ZShib29sIGNhblVzZUpJVCkKK0ludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIoKQogewotI2lmIEVO
QUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICBp
ZiAobV9lbmFibGVkKQorICAgICAgICBkZWxldGVbXSBtX29wY29kZVRhYmxlOworI2VuZGlmCit9
CisKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRhdGEqIGxsaW50RGF0YSwg
Ym9vbCBjYW5Vc2VKSVQpCit7CisgICAgVU5VU0VEX1BBUkFNKGxsaW50RGF0YSk7CisgICAgVU5V
U0VEX1BBUkFNKGNhblVzZUpJVCk7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVU
RVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVU
RVIpCisgICAgLy8gSGF2aW5nIExMSW50IGVuYWJsZWQsIGJ1dCBub3QgYmVpbmcgYWJsZSB0byB1
c2UgdGhlIEpJVCwgYW5kIG5vdCBoYXZpbmcKKyAgICAvLyBhIGNvbXB1dGVkIGdvdG8gaW50ZXJw
cmV0ZXIsIGlzIG5vdCBzdXBwb3J0ZWQuIE5vdCBiZWNhdXNlIHdlIGNhbm5vdAorICAgIC8vIHN1
cHBvcnQgaXQsIGJ1dCBiZWNhdXNlIEkgZGVjaWRlZCB0byBkcmF3IHRoZSBsaW5lIGF0IHRoZSBu
dW1iZXIgb2YKKyAgICAvLyBwZXJtdXRhdGlvbnMgb2YgZXhlY3V0aW9uIGVuZ2luZXMgdGhhdCBJ
IHdhbnRlZCB0aGlzIGNvZGUgdG8gZ3Jvay4KKyAgICBBU1NFUlQoY2FuVXNlSklUKTsKKyNlbmRp
ZgogICAgIGlmIChjYW5Vc2VKSVQpIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bj
b2RlVGFibGUgPSBsbGludERhdGEtPm9wY29kZU1hcCgpOworICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IG51bU9wY29kZUlEczsgKytpKQorICAgICAgICAgICAgbV9vcGNvZGVJRFRhYmxlLmFk
ZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworI2Vsc2UKICAg
ICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0aW5hdGlv
bnMgZm9yIG9wY29kZXMuCiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51
bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlID0gYml0d2lzZV9j
YXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpKTsKICAgICAgICAgICAgIG1fb3Bj
b2RlVGFibGVbaV0gPSBvcGNvZGU7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0gZWxzZSB7Cisj
aWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbmV3IE9wY29kZVtudW1P
cGNvZGVJRHNdOworI2VuZGlmCiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRpYWxpemVBbmRS
ZXR1cm4sIDAsIDApOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1P
cGNvZGVJRHM7ICsraSkKQEAgLTU2Niw3ICs1OTIsNiBAQCB2b2lkIEludGVycHJldGVyOjppbml0
aWFsaXplKGJvb2wgY2FuVXNlCiAgICAgICAgIG1fZW5hYmxlZCA9IHRydWU7CiAgICAgfQogI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oY2FuVXNlSklUKTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIp
CiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICNlbHNlCkBAIC02NjcsOSArNjkyLDExIEBAIHZvaWQg
SW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW0KIAogYm9vbCBJbnRlcnByZXRlcjo6
aXNPcGNvZGUoT3Bjb2RlIG9wY29kZSkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRF
UlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxF
KExMSU5UKQorI2lmICFFTkFCTEUoTExJTlQpCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAg
IHJldHVybiBvcGNvZGUgPj0gMCAmJiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4ob3Bjb2RlKSkgPD0gb3BfZW5kOworI2VuZGlmCiAgICAgcmV0dXJuIG9wY29k
ZSAhPSBIYXNoVHJhaXRzPE9wY29kZT46OmVtcHR5VmFsdWUoKQogICAgICAgICAmJiAhSGFzaFRy
YWl0czxPcGNvZGU+Ojppc0RlbGV0ZWRWYWx1ZShvcGNvZGUpCiAgICAgICAgICYmIG1fb3Bjb2Rl
SURUYWJsZS5jb250YWlucyhvcGNvZGUpOwpAQCAtNzI2LDExICs3NTMsMTEgQEAgTkVWRVJfSU5M
SU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbAogICAgIC8vIGhhdmUgdG8gc3VidHJhY3Qg
MS4KICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgaWYgKGNhbGxl
ckZyYW1lLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCkpCi0gICAgICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAg
ICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJh
bWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAgICAgZWxzZQogICAgICAgICBieXRlY29kZU9m
ZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkg
LSAxOwogI2VsaWYgRU5BQkxFKEpJVCkKLSAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+
Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNl
dCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0
dXJuUEMoKSk7CiAjZWxzZQogICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29k
ZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZW5kaWYKQEAgLTUxNzAsMTAg
KzUxOTcsMTAgQEAgdm9pZCBJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKENhbAogICAg
ICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2Fs
bEZyYW1lLT5yZXR1cm5WUEMoKSk7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBlbHNlCi0gICAgICAg
IGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJh
bWUtPnJldHVyblBDKCkpOworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9j
ay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAj
ZW5kaWYKICNlbHNlCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBj
YWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJl
dHVyblBDKCkpOwogI2VuZGlmCiAgICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVCbG9jay0+bGlu
ZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAgc291cmNl
SUQgPSBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJ
KHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
SlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisj
aW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUmVn
aXN0ZXJGaWxlLmgiCiAKQEAgLTQ1LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNs
YXNzIFByb2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNzIFNj
b3BlQ2hhaW5Ob2RlOwpAQCAtOTAsMTkgKzkyLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAg
ICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgogICAgICAgICBJbnRlcnByZXRlcigpOworICAg
ICAgICB+SW50ZXJwcmV0ZXIoKTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgaW5pdGlhbGl6ZShi
b29sIGNhblVzZUpJVCk7CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZShMTEludDo6RGF0YSosIGJv
b2wgY2FuVXNlSklUKTsKIAogICAgICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSgpIHsg
cmV0dXJuIG1fcmVnaXN0ZXJGaWxlOyB9CiAgICAgICAgIAogICAgICAgICBPcGNvZGUgZ2V0T3Bj
b2RlKE9wY29kZUlEIGlkKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0aWFs
aXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxF
KENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgICAg
IHJldHVybiBtX29wY29kZVRhYmxlW2lkXTsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4gaWQ7
CkBAIC0xMTIsNyArMTE2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPcGNvZGVJRCBn
ZXRPcGNvZGVJRChPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
bV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisj
aWYgRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOwor
ICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKKyNlbGlmIEVO
QUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgQVNTRVJUKGlzT3Bj
b2RlKG9wY29kZSkpOwogICAgICAgICAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihv
cGNvZGUpKTsKQEAgLTEyMiw2ICsxMjksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJv
b2wgZW5hYmxlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2VuYWJsZWQ7Cisg
ICAgICAgIH0KIAogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKQEAgLTE4OSw3ICsy
MDEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlIG1fcmVnaXN0
ZXJGaWxlOwogICAgICAgICAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIE9wY29kZSogbV9vcGNvZGVUYWJsZTsgLy8gTWFw
cyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZworICAgICAgICBIYXNoTWFwPE9wY29k
ZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQg
Zm9yIGRlY29tcGlsaW5nCisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikK
ICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2RlSURzXTsgLy8gTWFwcyBPcGNv
ZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bj
b2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRl
Y29tcGlsaW5nCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9SZWdpc3RlckZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnNlcnZhdGl2ZVJv
b3RzOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogCiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlIHsKICAgICAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUmVnaXN0ZXJGaWxlKTsKQEAgLTgxLDYgKzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGdyb3dTbG93Q2FzZShSZWdp
c3RlciopOwogICAgICAgICB2b2lkIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwogICAgICAgICB2
b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSG9zdENhbGxS
ZXR1cm5WYWx1ZS5oIgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSW5saW5l
QVNNLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1ZhbHVlSW5saW5lTWV0
aG9kcy5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2V4
dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSgpOworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NB
TExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0
ZShFeGVjU3RhdGUqKTsKKworI2lmIENQVShYODZfNjQpCithc20gKAorIi5nbG9ibCAiIFNZTUJP
TF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4i
CisgICAgIm1vdiAlcjEzLCAlcmRpXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NB
VElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlm
IENQVShYODYpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIg
IlxuIgorICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4iCisgICAgIm1vdiAlZWRpLCA0KCVlc3Ap
XG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVy
blZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorYXNt
ICgKKyIudGV4dCIgIlxuIgorIi5hbGlnbiAyIiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklO
RyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSAiXG4iCisiLnRodW1iIiAiXG4iCisiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5D
X1BBUkFNKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4i
CisgICAgImNweSByMCwgcjUiICJcbiIKKyAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElP
TihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbmRpZgor
CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9O
IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJl
dHVyblZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisjZGVmaW5lIEhvc3RD
YWxsUmV0dXJuVmFsdWVfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ0FM
TElOR19DT05WRU5USU9OX0lTX1NURENBTEwKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxV
RV9PUFRJT04gQ0RFQ0wKKyNlbHNlCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BU
SU9OCisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVl
IEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsK
K30KKworI2VuZGlmIC8vIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsOCBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wcm9maWxl
X3dpbGxfY2FsbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAg
ICBERUZJTkVfT1Aob3BfcHVzaF9zY29wZSkKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsOgogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKQEAgLTQ4
Nyw2ICs0ODksOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcG9zdF9pbmMpCiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9wcmVfZGVjKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2luYykK
KyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5
X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsKQpAQCAt
NTI2LDYgKzUzMCwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiBK
SVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hl
Y2spCiB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIkNvbXBpbGlu
ZyBKSVQgY29kZSFcbiIpOworI2VuZGlmCisgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVS
KQogICAgIG1fY2FuQmVPcHRpbWl6ZWQgPSBtX2NvZGVCbG9jay0+Y2FuQ29tcGlsZVdpdGhERkco
KTsKICNlbmRpZgpAQCAtNjkwLDggKzY5OCwxMiBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBp
bGUoQ29kZVB0ciogZnVuCiAgICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gbV9jb2Rl
QmxvY2stPnN0cnVjdHVyZVN0dWJJbmZvKG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mb1tpXS5w
cm9wZXJ0eUFjY2Vzc0luZGV4KS5jYWxsUmV0dXJuTG9jYXRpb247CiAgICAgfQogCi0jaWYgRU5B
QkxFKERGR19KSVQpCi0gICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQpIHsKKyNpZiBFTkFCTEUoREZH
X0pJVCkgfHwgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2NhbkJlT3B0aW1pemVkCisjaWYgRU5B
QkxFKExMSU5UKQorICAgICAgICB8fCB0cnVlCisjZW5kaWYKKyAgICAgICAgKSB7CiAgICAgICAg
IENvbXBhY3RKSVRDb2RlTWFwOjpFbmNvZGVyIGppdENvZGVNYXBFbmNvZGVyOwogICAgICAgICBm
b3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBtX2xhYmVs
cy5zaXplKCk7ICsrYnl0ZWNvZGVPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChtX2xhYmVsc1ti
eXRlY29kZU9mZnNldF0uaXNTZXQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29k
ZS5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENv
ZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgSklUQ29kZSgpIHsgfQogI2VuZGlmCiAgICAgcHVibGljOgotICAgICAgICBlbnVtIEpJ
VFR5cGUgeyBIb3N0Q2FsbFRodW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CisgICAgICAgIGVu
dW0gSklUVHlwZSB7IE5vbmUsIEhvc3RDYWxsVGh1bmssIEludGVycHJldGVyVGh1bmssIEJhc2Vs
aW5lSklULCBERkdKSVQgfTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKSVRUeXBlIGJvdHRv
bVRpZXJKSVQoKQogICAgICAgICB7CkBAIC02Niw4ICs2NiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBERkdKSVQ7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAg
IHN0YXRpYyBib29sIGlzT3B0aW1pemluZ0pJVChKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IERGR0pJVDsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgc3RhdGljIGJvb2wgaXNCYXNlbGluZUNvZGUoSklUVHlwZSBqaXRUeXBlKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBJbnRlcnByZXRlclRodW5r
IHx8IGppdFR5cGUgPT0gQmFzZWxpbmVKSVQ7CisgICAgICAgIH0KKyAgICAgICAgCiAjaWYgRU5B
QkxFKEpJVCkKICAgICAgICAgSklUQ29kZSgpCisgICAgICAgICAgICA6IG1faml0VHlwZShOb25l
KQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNzUsNiArODYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIDogbV9yZWYocmVmKQogICAgICAgICAgICAgLCBtX2ppdFR5cGUoaml0
VHlwZSkKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGppdFR5cGUgIT0gTm9uZSk7CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3IgISgpIGNvbnN0CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHJldmlzaW9uIDEwNTc3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDE1ICszMywyMSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVk
ZSAiREZHRHJpdmVyLmgiCiAjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBv
aW50cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2Nr
VHlwZT4KIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGpp
dENvZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBj
b2RlQmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAg
aWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAK
KyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29sIGRm
Z0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklUKQog
ICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZShnbG9iYWxEYXRhLCBjb2RlQmxv
Y2suZ2V0KCksIGppdENvZGUpOwpAQCAtNTUsMTAgKzYxLDcgQEAgaW5saW5lIGJvb2wgaml0Q29t
cGlsZUlmQXBwcm9wcmlhdGUoSlNHbAogICAgICAgICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6
OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSk7CiAgICAgfQotI2lmICFFTkFC
TEUoT1BDT0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2Vu
ZXJhdGVkQ29kZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGlu
Z09wcG9ydHVuaXR5KCk7Ci0jZW5kaWYKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlz
Y2FyZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUs
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY2
LDkgKzY5LDE0IEBAIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2wKIAog
aW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29k
ZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ss
IFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlw
ZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5n
Q2FsbHMoKTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGpp
dFR5cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5
Q29tcGlsZUZ1bmN0aW9uKGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSwgaml0
Q29kZVdpdGhBcml0eUNoZWNrKTsKQEAgLTgzLDExICs5MSw3IEBAIGlubGluZSBib29sIGppdENv
bXBpbGVGdW5jdGlvbklmQXBwcm9wcmkKICAgICAgICAgfQogICAgICAgICBqaXRDb2RlID0gSklU
Ojpjb21waWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksICZqaXRDb2RlV2l0aEFyaXR5
Q2hlY2spOwogICAgIH0KLSNpZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLSAgICBpZiAoIUJ5
dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKLSAgICAgICAgY29kZUJsb2Nr
LT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwotI2VuZGlmCi0gICAgCisg
ICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAg
IGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwog
ICAgIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3
IEBAIEV4Y2VwdGlvbkhhbmRsZXIgZ2VuZXJpY1Rocm93KEpTR2xvYmFsRGEKIAogRXhjZXB0aW9u
SGFuZGxlciBqaXRUaHJvdyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4ZWNTdGF0ZSogY2Fs
bEZyYW1lLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBSZXR1cm5BZGRyZXNzUHRyIGZhdWx0TG9j
YXRpb24pCiB7Ci0gICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUs
IGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChm
YXVsdExvY2F0aW9uKSk7CisgICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxs
RnJhbWUsIGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9m
ZnNldChjYWxsRnJhbWUsIGZhdWx0TG9jYXRpb24pKTsKIH0KIAogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEzLDcg
KzE5MTMsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNrRnJhbWUuYXJnc1swXS5pbnQzMigpOwogCiAj
aWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmludGYoIkVudGVyZWQgb3B0aW1pemVf
ZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNv
dW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jay0+
aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRl
cigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBwcmludGYo
IiVwOiBFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQs
IHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRl
ciA9ICV1XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29k
ZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXph
dGlvbkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0
aW1pemVkUmVwbGFjZW1lbnQoKSkgewpAQCAtMjE2OCw0NSArMjE2OCwxMyBAQCBERUZJTkVfU1RV
Ql9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAot
aW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVn
aXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKLXsK
LSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkp
OwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICBDb2RlQmxvY2sq
IG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29k
ZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAgICAvLyBUaGlzIGVuc3VyZXMg
ZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50
cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhjYWxs
RnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdD
b2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAg
ICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJh
bWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5k
ZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
IC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVnaXN0ZXIqIHNyYyA9IGNhbGxG
cmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGNhbGxGcmFtZS0+cmVnaXN0
ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGludCBlbmQgPSAtQ2FsbEZyYW1lOjpv
ZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZvciAoaSA9IC0xOyBp
ID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07Ci0KLSAgICBlbmQgLT0gZGVs
dGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBqc1VuZGVm
aW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0
ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1lIDw9IHJlZ2lzdGVyRmlsZS0+
ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNU
SU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZS
QU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1l
LmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0Zv
cihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CisgICAg
Q2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3Io
Y2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOwogICAgIGlm
ICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxs
PHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0
ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKIApAQCAtMjIx
OSw3ICsyMTg3LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAog
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAg
IENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNr
RnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBDYWxsRnJhbWUqIG5l
d0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0
YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBpZiAoIW5ld0Nh
bGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lkKj4o
c3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVTdGFja092
ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDEwNTc3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgSlNJbnRlcmZhY2VKSVRfaAogI2RlZmluZSBK
U0ludGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5j
bHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmcuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIK
ICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENv
bW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2RlZmluZSBMTElOVF9FWEVDVVRJT05f
VFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFDSU5HIDAKKworI2VuZGlmIC8vIExM
SW50Q29tbW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRE
YXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTExJbnREYXRhLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJJbnN0cnVj
dGlvbi5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGNv
ZGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK0RhdGE6OkRhdGEo
KQorICAgIDogbV9leGNlcHRpb25JbnN0cnVjdGlvbnMobmV3IEluc3RydWN0aW9uW21heE9wY29k
ZUxlbmd0aCArIDFdKQorICAgICwgbV9vcGNvZGVNYXAobmV3IE9wY29kZVtudW1PcGNvZGVJRHNd
KQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQor
ICAgICAgICBtX2V4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lKTsKKyNkZWZpbmUg
T1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBtX29wY29kZU1hcFtvcGNvZGVdID0gYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUpOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChP
UENPREVfRU5UUlkpOworI3VuZGVmIE9QQ09ERV9FTlRSWQorfQorCitEYXRhOjp+RGF0YSgpCit7
CisgICAgZGVsZXRlW10gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgZGVsZXRlW10gbV9v
cGNvZGVNYXA7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8g
RU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RGF0YV9oCisjZGVmaW5lIExMSW50
RGF0YV9oCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExM
SW50IHsKKworI2lmIEVOQUJMRShMTElOVCkKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIERh
dGEoKTsKKyAgICB+RGF0YSgpOworICAgIAorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0
cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
OworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICBy
ZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgfQorcHJpdmF0ZToKKyAgICBJbnN0cnVjdGlvbiogbV9l
eGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgT3Bjb2RlKiBtX29wY29kZU1hcDsKK307CisjZWxz
ZSAvLyBFTkFCTEUoTExJTlQpCisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcg
ZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNz
aW5nLW5vcmV0dXJuIgorI2VuZGlmCisKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIEluc3Ry
dWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUq
IG9wY29kZU1hcCgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorfTsKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnREYXRhX2gKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRz
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVu
dHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5j
bHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkxM
SW50VGh1bmtzLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpJ
VENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjaykKK3sKKyAg
ICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaWYgKGtpbmQgPT0gQ29k
ZUZvckNhbGwpIHsKKyAgICAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24o
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxs
X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlf
Y2hlY2spKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VS
VChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6
SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2Rl
UmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENv
ZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0
b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IGds
b2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0
b3IpLmNvZGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09
IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0
Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElT
dHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7
Cit9CisKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
SVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgewor
ICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9ldmFsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0
dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsK
K30KKwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IEpJVENvZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7
CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0
Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVy
VGh1bmspOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5
cG9pbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVu
dHJ5cG9pbnRzX2gKKyNkZWZpbmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkNvZGVTcGVjaWFs
aXphdGlvbktpbmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV2YWxDb2RlQmxvY2s7
CitjbGFzcyBKSVRDb2RlOworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOworY2xhc3MgUHJvZ3JhbUNv
ZGVCbG9jazsKKworbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9p
bnQoSlNHbG9iYWxEYXRhJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgSklUQ29kZSYsIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjayk7Cit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpT
R2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9i
YWxEYXRhJiwgSklUQ29kZSYpOworCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgRXZhbENvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7Cisg
ICAgZ2V0RXZhbEVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK2lubGluZSB2
b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9ncmFtQ29kZUJs
b2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRQcm9ncmFtRW50cnlwb2ludChnbG9i
YWxEYXRhLCBqaXRDb2RlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNl
bmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludEVudHJ5cG9pbnRzX2gKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0
aW9ucy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAi
Q2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rp
b24uaCIKKyNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24u
aCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgTExJbnQgeworCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2Jh
bERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcg
ZXhjZXB0aW9uICVzLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOwor
I2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KAorICAgICAgICBnbG9iYWxEYXRhLCBleGVjLT5jYWxs
ZXJGcmFtZSgpLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sCisgICAgICAgIGV4ZWMtPmNhbGxlckZy
YW1lKCktPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChleGVjLT5jYWxsZXJGcmFtZSgpLCBl
eGVjLT5yZXR1cm5QQygpKSk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhy
b3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFs
RGF0YSgpLmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKworSW5zdHJ1Y3Rp
b24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7Cisg
ICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBM
TElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChy
ZXR1cm5Ub1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsK
KyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5l
eGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkp
OworICAgIAorICAgIHJldHVybiBnbG9iYWxEYXRhLT5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zKCk7Cit9CisKK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1
Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9i
YWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5n
IGV4Y2VwdGlvbiAlcyAoY2FsbFRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRl
c2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMs
IGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpOworfQorCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlv
bnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4
dHJhcy5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
RXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisv
LyBUaHJvdyB0aGUgY3VycmVudGx5IGFjdGl2ZSBleGNlcHRpb24gaW4gdGhlIGNvbnRleHQgb2Yg
dGhlIGNhbGxlcidzIGNhbGwgZnJhbWUuCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihF
eGVjU3RhdGUqKTsKKworLy8gVGVsbHMgeW91IHdoZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQg
dG8gcmV0dXJuLXRvLXRocm93LCBhZnRlciB5b3UndmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBp
bmZvcm1hdGlvbiBuZWVkZWQgdG8gdGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiBy
ZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0
aGUgY3VycmVudCBQQyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdp
dmVzIHlvdSBhIFBDCisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28g
dG8sIHdoaWNoIHdoZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdp
dmUgeW91IGFuICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidz
CisvLyBleGNlcHRpb24gaGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBm
b3IgZXhjZXB0aW9uIGhhbmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1
cm4gdGhhdCBQQyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91
IHRocmVhZCBleGNlcHRpb24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9u
cyB1c2VkIGJ5CisvLyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3co
RXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhy
b3dpbmcgdG8gYSBjYWxsIHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5z
dHJ1Y3Rpb24qKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBF
TkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludEV4Y2VwdGlvbnNfaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEhl
bHBlcnMuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgor
I2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2lu
Y2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgor
I2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0
aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisj
aW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisj
aW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAi
TExJbnRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7
CisKKyNkZWZpbmUgTExJTlRfT1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRSKHBjW2luZGV4XS51
Lm9wZXJhbmQpKQorI2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0u
dS5vcGVyYW5kKSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRv
IHsgICAgICAgXAorICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgICAgIHZvaWQqIGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgfSBwYWlyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgaW50NjRfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICB9IF9fcnRfdTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBf
X3J0X3UucGFpci5hID0gZmlyc3Q7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0
X3UucGFpci5iID0gc2Vjb25kOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4g
X19ydF91Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNl
KQorCisjZGVmaW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykK
KworI2RlZmluZSBMTElOVF9USFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fdF9nbG9iYWxEYXRhID0gZXhl
Yy0+Z2xvYmFsRGF0YSgpOyAgICAgICAgXAorICAgICAgICBfX3RfZ2xvYmFsRGF0YS5leGNlcHRp
b24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgXAorICAgICAgICBwYyA9IHJldHVy
blRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGV4ZWMt
Pmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSB7ICAgXAorICAgICAgICAgICAgcGMgPSByZXR1cm5U
b1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9FTkRf
SU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNl
KQorCisjZGVmaW5lIExMSU5UX0VORCgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAg
IExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAo
ZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQlJBTkNIKG9wY29kZSwgY29uZGl0aW9uKSBkbyB7ICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYm9vbCBfX2JfY29uZGl0aW9uID0gKGNvbmRp
dGlvbik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYg
KF9fYl9jb25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgIHBjICs9IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFu
ZDsgICAgICAgIFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgo
b3Bjb2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lN
UEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdo
aWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAg
ICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAg
XAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAg
ICAgICBMTElOVF9PUCgxKSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAgXAorICAgICAgICBM
TElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZh
bHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcGNvZGUsIHZhbHVlKSBkbyB7
ICAgICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcnBfcmV0dXJuVmFsdWUgPSAodmFs
dWUpOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEp
ID0gX19ycF9yZXR1cm5WYWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBw
Y1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IFwK
KyAgICAgICAgICAgIEpTVmFsdWU6OmVuY29kZShfX3JwX3JldHVyblZhbHVlKTsgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5U
X0NBTExfRU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RXTygoY2FsbFRh
cmdldCksIChleGVjKSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBleGNl
cHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9f
Y3RfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBJbnN0cnVjdGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fY3RfZ2xvYmFsRGF0YSA9IChf
X2N0X2V4ZWMpLT5nbG9iYWxEYXRhKCk7ICAgICAgXAorICAgICAgICBfX2N0X2dsb2JhbERhdGEu
ZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3RfZXhlYywgY2FsbFRvVGhyb3coX19jdF9leGVjLCBf
X2N0X3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0NI
RUNLX0VYQ0VQVElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBFeGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jY2VfcGMgPSAocGMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoX19j
Y2VfZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2NjZV9l
eGVjLCBfX2NjZV9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRf
Q0FMTF9SRVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMgPSAocGMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9pZCogX19j
cl9jYWxsVGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19jcl9leGVjLT5jYWxsZXJGcmFt
ZSgpLCBfX2NyX3BjKTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NyX2V4ZWMs
IF9fY3JfY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkK
KworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0
YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQor
eworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVk
KTogJWQ6ICVkXG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAg
ZXhlYywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJs
b2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxE
YXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAg
ICAgZnJvbVdoZXJlLAorICAgICAgICAgICBvcGVyYW5kLAorICAgICAgICAgICBwY1tvcGVyYW5k
XS51Lm9wZXJhbmQpOworICAgIExMSU5UX0VORCgpOworfQorCitleHRlcm4gIkMiIEhlbHBlclJl
dHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiog
cGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBM
TElOVF9PUF9DKG9wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVj
dCB7CisgICAgICAgICAgICB1aW50MzJfdCB0YWc7CisgICAgICAgICAgICB1aW50MzJfdCBwYXls
b2FkOworICAgICAgICB9IGJpdHM7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlIGFzVmFsdWU7Cisg
ICAgfSB1OworICAgIHUuYXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgcHJp
bnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWQ6
ICUwOHg6JTA4eCIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBl
eGVjLAorICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxv
Y2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAg
ICBmcm9tV2hlcmUsCisgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRd
LnUub3BlcmFuZCwKKyAgICAgICAgICAgdS5iaXRzLnRhZywKKyAgICAgICAgICAgdS5iaXRzLnBh
eWxvYWQpOworI2lmbmRlZiBOREVCVUcKKyAgICBwcmludGYoIjogJXMiLCB2YWx1ZS5kZXNjcmlw
dGlvbigpKTsKKyNlbmRpZgorICAgIHByaW50ZigiXG4iKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpCit7CisgICAgcHJpbnRmKCIlcCAv
ICVwOiBpbiBwcm9sb2d1ZS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKKyAgICBMTElO
VF9FTkQoKTsKK30KKworc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkp
OworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRh
YmxlKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJhdGVk
Qnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlv
biAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51
bUNhbGxlZVJlZ2lzdGVycyA9ICV1LlxuIiwKKyAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBj
b21tZW50LCBjYWxsZWUsIGV4ZWN1dGFibGUsCisgICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1W
YXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJl
Z2lzdGVycyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9u
X2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBwcm9s
b2d1ZSIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFj
ZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JDb25z
dHJ1Y3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9h
cml0eUNoZWNrX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAi
Y2FsbCBhcml0eSBjaGVjayIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQoreworICAg
IHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IGFyaXR5IGNoZWNrIiwgQ29k
ZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KHRyYWNlKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgIiwKKyAg
ICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAg
IHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpKSk7CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50ZigiJXMsICIsIG9wY29k
ZU5hbWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0u
dS5vcGNvZGUpXSk7CisjZWxzZQorICAgIHByaW50Zigib3AjJXUsICIsIGV4ZWMtPmdsb2JhbERh
dGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpKTsKKyNlbmRpZgor
ICAgIHByaW50Zigic2NvcGUgJXBcbiIsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2UpCit7CisgICAgcHJp
bnRmKCIlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJldHVy
biBQQyBpcyAlcFxuIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAg
IGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVC
bG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFs
RGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAg
ICAgIGV4ZWMtPnJldHVyblBDKCkudmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2lu
bGluZSBib29sIHNob3VsZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gWW91IGNhbiBt
b2RpZnkgdGhpcyB0byB0dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0aGUgd29y
bGQuCisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKTsKK30KKworZW51
bSBFbnRyeUtpbmQgeyBQcm9sb2d1ZSwgQXJpdHlDaGVjayB9Oworc3RhdGljIEhlbHBlclJldHVy
blR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9j
ayogY29kZUJsb2NrLCBjb25zdCBjaGFyICpuYW1lLCBFbnRyeUtpbmQga2luZCkKK3sKKyNpZiBF
TkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgJXMgd2l0aCBl
eGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIG5hbWUsIGNvZGVCbG9jay0+bGxpbnRF
eGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMp
KSB7CisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExM
SU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIGlmICghY29kZUJsb2NrLT5qaXRD
b21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NS
KQorICAgICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7Cisj
ZW5kaWYKKyAgICB9CisgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgaWYgKGtpbmQgPT0g
UHJvbG9ndWUpCisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRDb2Rl
KCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7CisgICAgQVNTRVJUKGtpbmQg
PT0gQXJpdHlDaGVjayk7CisgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENv
ZGVXaXRoQXJpdHlDaGVjaygpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGV4ZWMpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChlbnRyeV9vc3IpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBj
LCBleGVjLT5jb2RlQmxvY2soKSwgImVudHJ5X29zciIsIFByb2xvZ3VlKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHJldHVybiBl
bnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFi
bGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0
aW9uX2Zvcl9jYWxsIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9v
c3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywg
cGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRl
ZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3QiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9m
dW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVj
LCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJh
dGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxs
X2FyaXR5Q2hlY2siLCBBcml0eUNoZWNrKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlf
b3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICByZXR1cm4gZW50
cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxl
KCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOworfQorCitMTElO
VF9IRUxQRVJfREVDTChsb29wX29zcikKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAg
cHJpbnRmKCIlcDogRW50ZXJlZCBsb29wX29zciB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIs
IGNvZGVCbG9jaywgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisg
ICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250
SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAg
ICB9CisgICAgCisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0
YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50ZigiICAg
IENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBjb2Rl
QmxvY2stPmppdFNvb24oKTsKKyAgICAKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBl
KCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIAorICAgIFZlY3RvcjxCeXRlY29kZUFu
ZE1hY2hpbmVPZmZzZXQ+IG1hcDsKKyAgICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2Rl
KG1hcCk7CisgICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2Vh
cmNoPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQsIEJ5dGVjb2RlQW5kTWFjaGlu
ZU9mZnNldDo6Z2V0Qnl0ZWNvZGVJbmRleD4obWFwLmJlZ2luKCksIG1hcC5zaXplKCksIHBjIC0g
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICBBU1NFUlQobWFwcGluZyk7
CisgICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4ocGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyAgICAKKyAg
ICB2b2lkKiBqdW1wVGFyZ2V0ID0gY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3NBdE9mZnNldChtYXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQo
anVtcFRhcmdldCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOX1RXTyhqdW1wVGFyZ2V0LCBleGVj
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9T
RV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCByZXBsYWNlIHdpdGggZXhlY3V0ZUNvdW50
ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7
CisjZW5kaWYKKyAgICAKKyAgICBpZiAoc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGlmICgh
Y29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUo
SklUX1ZFUkJPU0VfT1NSKQorICAgICAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFk
eSBjb21waWxlZC5cbiIpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgY29kZUJsb2NrLT5q
aXRTb29uKCk7CisgICAgfSBlbHNlCisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVT
b29uKCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVy
X2ZpbGVfY2hlY2spCit7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIkNo
ZWNraW5nIHN0YWNrIGhlaWdodCB3aXRoIGV4ZWMgPSAlcC5cbiIsIGV4ZWMpOworICAgIHByaW50
ZigiQ29kZUJsb2NrID0gJXAuXG4iLCBleGVjLT5jb2RlQmxvY2soKSk7CisgICAgcHJpbnRmKCJO
dW0gY2FsbGVlIHJlZ2lzdGVycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzKTsKKyAgICBwcmludGYoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2Rl
QmxvY2soKS0+bV9udW1WYXJzKTsKKyAgICBwcmludGYoIkN1cnJlbnQgZW5kIGlzIGF0ICVwLlxu
IiwgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5lbmQoKSk7
CisjZW5kaWYKKyAgICBBU1NFUlQoJmV4ZWMtPnJlZ2lzdGVycygpW2V4ZWMtPmNvZGVCbG9jaygp
LT5tX251bUNhbGxlZVJlZ2lzdGVyc10gPiBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXIt
PnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWV4ZWMtPmdsb2JhbERh
dGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClb
ZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7CisgICAgICAgIGV4
ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhj
ZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnBy
ZXRlclRocm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvd0ZvclRo
cm93bkV4Y2VwdGlvbihleGVjKTsKKyAgICB9CisgICAgTExJTlRfRU5EX0lNUEwoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICBFeGVjU3Rh
dGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmV4ZWMt
Pmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDYWxsKTsK
KyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7
CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJm
bG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsK
KyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0
PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBu
ZXdFeGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNo
ZWNrKQoreworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlD
aGVja0ZvcihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZp
bGUoKSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4
ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhj
ZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnBy
ZXRlclRocm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lz
ZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQor
ICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKK3sKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORwor
ICAgIHByaW50ZigiQ3JlYXRpbmcgYW4gYWN0aXZhdGlvbiwgZXhlYyA9ICVwIVxuIiwgZXhlYyk7
CisjZW5kaWYKKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBKU0FjdGl2YXRpb246OmNy
ZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMsIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSkpOworICAgIGV4ZWMt
PnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2YXRpb24pKTsKKyAg
ICBMTElOVF9SRVRVUk4oSlNWYWx1ZShhY3RpdmF0aW9uKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQoreworICAgIEpTVmFsdWUgYXJndW1lbnRzID0g
SlNWYWx1ZShBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpKTsKKyAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUu
b3BlcmFuZCkgPSBhcmd1bWVudHM7CisgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAg
ICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOwor
ICAgIAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERh
dGE7CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3RE
YXRhKGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2Vu
ZGlmCisgICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgSlNWYWx1ZSBwcm90byA9
IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAocHJvdG8uaXNPYmplY3QoKSkKKyAgICAg
ICAgc3RydWN0dXJlID0gYXNPYmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxE
YXRhKCkpOworICAgIGVsc2UKKyAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3Bl
KCktPmdsb2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAKKyAgICBMTElO
VF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpCit7CisgICAgSlNWYWx1ZSB2MSA9
IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQodjEuaXNQcmltaXRpdmUoKSk7Cisg
ICAgTExJTlRfUkVUVVJOKHYxLnRvVGhpc09iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9uZXdfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJy
YXkpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGJpdHdpc2VfY2Fz
dDxKU1ZhbHVlKj4oJkxMSU5UX09QKDIpKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQoreworICAgIExMSU5UX1JFVFVS
Tihjb25zdHJ1Y3RBcnJheShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIo
cGNbMl0udS5vcGVyYW5kKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXdfcmVnZXhwKQoreworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29k
ZUJsb2NrKCktPnJlZ2V4cChwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1Zh
bGlkKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZh
bGlkIGZsYWcgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9S
RVRVUk4oUmVnRXhwT2JqZWN0OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3Ry
dWN0dXJlKCksIHJlZ0V4cCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KQor
eworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRv
Qm9vbGVhbihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9uZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNW
YWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbighSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbGVzcykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVl
PihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9ncmVhdGVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPGZh
bHNlPihleGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcHJlX2luYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJ
TlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICsgMSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcHJlX2RlYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJ
TlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gMSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcG9zdF9pbmMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09Q
KDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVy
KHJlc3VsdCArIDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKQoreworICAgIGRvdWJsZSByZXN1bHQg
PSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikg
PSBqc051bWJlcihyZXN1bHQgLSAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcikKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhl
YykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSkKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIoLUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpCit7CisgICAgSlNWYWx1ZSB2
MSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKTsKKyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50
ZigiVHJ5aW5nIHRvIGFkZCAlcyIsIHYxLmRlc2NyaXB0aW9uKCkpOworICAgIHByaW50ZigiIHRv
ICVzLlxuIiwgdjIuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNT
dHJpbmcoKSAmJiAhdjIuaXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5n
KGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9TdHJpbmcoZXhlYykpKTsKKyAgICAKKyAgICBpZiAo
djEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIodjEuYXNOdW1iZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKKyAgICAKKyAgICBMTElOVF9S
RVRVUk4oanNBZGRTbG93Q2FzZShleGVjLCB2MSwgdjIpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX211bCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051
bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKQoreworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihl
eGVjKSAtIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVy
KExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X21vZCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoZm1vZChMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIo
ZXhlYykpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhl
YykgPDwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3JzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA+PiBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfdXJzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9VSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50
MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCkKK3sKKyAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihl
eGVjKSAmIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIHwgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Yml0eG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKS50b0ludDMyKGV4ZWMpIF4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVj
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KQoreworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcih+TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQorewor
ICAgIEpTVmFsdWUgYmFzZVZhbCA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworI2lmbmRlZiBO
REVCVUcKKyAgICBUeXBlSW5mbyB0eXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VS
VCghYmFzZVZhbC5pc09iamVjdCgpCisgICAgICAgICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVj
dChiYXNlVmFsKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5j
ZSgpKTsKKyNlbmRpZgorICAgIExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4
ZWMsICJpbnN0YW5jZW9mIiwgYmFzZVZhbCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaW5zdGFuY2VvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQ
YXRoczo6b3BJbnN0YW5jZU9mU2xvdyhleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoNCkuanNWYWx1ZSgpKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKQoreworICAgIExMSU5UX1JFVFVSTihqc1R5
cGVTdHJpbmdGb3JWYWx1ZShleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKQoreworICAgIEpTVmFsdWUgdiA9
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4odi5p
c0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLmlzQm9vbGVhbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9pc19udW1iZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKS5pc051bWJlcigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9pc19zdHJpbmcpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihpc0pTU3RyaW5n
KExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaXNfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc09iamVjdFR5
cGUoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9pc19mdW5jdGlvbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5j
dGlvblR5cGUoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQ
YXRoczo6b3BJbihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKQorewor
ICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlLCBDb21tb25TbG93UGF0aHM6Om9w
UmVzb2x2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJh
bmQpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApCit7Cisg
ICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKAorICAgICAgICBvcF9yZXNvbHZlX3NraXAsCisgICAg
ICAgIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlU2tpcCgKKyAgICAgICAgICAgIGV4ZWMsCisg
ICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQp
LAorICAgICAgICAgICAgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlIHJl
c29sdmVHbG9iYWwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBBU1NFUlQo
Z2xvYmFsT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkgPSBwY1sy
XS51Lm9wZXJhbmQ7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVy
ZS5nZXQoKTsKKyAgICAKKyAgICBBU1NFUlRfVU5VU0VEKHN0cnVjdHVyZSwgc3RydWN0dXJlICE9
IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXImIGlkZW50
ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xv
dChnbG9iYWxPYmplY3QpOworICAgIAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5
U2xvdChleGVjLCBpZGVudCwgc2xvdCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90
LmdldFZhbHVlKGV4ZWMsIGlkZW50KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1
ZSgpICYmICFnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFy
eSgpCisgICAgICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7Cisg
ICAgICAgICAgICBwY1szXS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+
Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3Qt
PnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIHBjWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAg
CisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVVuZGVmaW5lZFZhcmlh
YmxlRXJyb3IoZXhlYywgaWRlbnQpOworICAgIHJldHVybiBKU1ZhbHVlKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCkKK3sKKyAgICBMTElOVF9SRVRVUk5f
UFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWwsIHJlc29sdmVHbG9iYWwoZXhlYywgcGMpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7Cisg
ICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIHJlc29s
dmVHbG9iYWwoZXhlYywgcGMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJ
TEVEKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZl
KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSkKK3sKKyAgICBJZGVu
dGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3Bl
cmFuZCk7CisgICAgaWYgKHBjWzNdLnUub3BlcmFuZCkgeworICAgICAgICBKU1ZhbHVlIGJhc2Ug
PSBKU0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIHRydWUp
OworICAgICAgICBpZiAoIWJhc2UpCisgICAgICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJv
ckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAg
ICAgICBMTElOVF9SRVRVUk4oYmFzZSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTl9Q
Uk9GSUxFRChvcF9yZXNvbHZlX2Jhc2UsIEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4
ZWMtPnNjb3BlQ2hhaW4oKSwgZmFsc2UpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCit7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2Jq
ZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0
KTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVy
KHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVj
LCBpZGVudCwgc2xvdCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxp
ZEdsb2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKK3sK
KyAgICBKU1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aEJhc2Uo
ZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJ
TlRfT1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIp
ID0gcmVzdWx0OworICAgIC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxp
bmcsIGJ1dCB3ZSBkb24ndCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRo
X3RoaXMpCit7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2
ZVdpdGhUaGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3Bl
cmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBM
TElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhh
dmUgcHJvZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVz
ZSBpdC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dl
dF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUu
b3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSByZXN1
bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19F
WENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgxKSA9IHJlc3VsdDsKKworICAgIGlmIChiYXNlVmFs
dWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCisgICAgICAgICYmIHNs
b3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUKKyAgICAgICAgJiYgc2xvdC5jYWNoZWRQcm9wZXJ0
eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OlZhbHVlKSB7CisgICAgICAgIAorICAgICAgICBKU0Nl
bGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICgh
c3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3Ry
dWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpKSB7CisgICAgICAg
ICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFs
RGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAg
ICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1Zh
bHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwY1tPUENPREVfTEVOR1RIKG9wX2dl
dF9ieV9pZCkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShy
ZXN1bHQpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Z2V0X2FyZ3VtZW50c19sZW5ndGgpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVj
LT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRp
ZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1Ao
MikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisgICAgTExJ
TlRfUkVUVVJOKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2Nr
LT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBM
TElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAgICBh
c09iamVjdChiYXNlVmFsdWUpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBpZGVudCwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFzZVZh
bHVlLnB1dChleGVjLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIGlmIChiYXNlVmFsdWUuaXNDZWxs
KCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAgIAorICAgICAgICBK
U0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlm
ICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAh
c3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpCisgICAgICAg
ICAgICAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgewor
ICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1
cmUtPnByZXZpb3VzSUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUt
PnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhp
cyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lIG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKKyAgICAgICAg
ICAgICAgICAgICAgLy8gYmVsb3cgbWF5IEdDLgorICAgICAgICAgICAgICAgICAgICBwY1swXS51
Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwp
OworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVj
dHVyZS0+cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNb
NF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFs
RGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZpb3Vz
SUQoKSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVk
T2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUu
c3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEo
KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAg
ICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFp
bihleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsKKyAgICAgICAgICAg
ICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAgICAgICAgICAgICAg
ICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNo
YWluKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4
XS51Lm9wZXJhbmQpCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7
CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBd
LnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxp
bnRfb3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQo
CisgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJh
bmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKS50b09iamVjdChleGVjKTsKKyAgICBib29sIGNvdWxkRGVsZXRlID0g
YmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZXhl
YywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCkpOworICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOworICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJV
bmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KGNvdWxkRGVsZXRlKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQoreworICAgIGlmIChM
SUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAg
ICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Q
cm9wZXJ0eShleGVjLCBhc1N0cmluZyhzdWJzY3JpcHQpLT52YWx1ZShleGVjKSkpCisgICAgICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBpZiAoc3Vic2NyaXB0LmlzVUlu
dDMyKCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAg
ICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNh
bkdldEluZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdl
dEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFz
ZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkKKyAg
ICAgICAgICAgIHJldHVybiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBp
KTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGkpOworICAg
IH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHBy
b3BlcnR5KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV92YWwpCit7Cisg
ICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9ieV92YWwsIGdldEJ5VmFsKGV4ZWMsIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKK3sKKyAgICBKU1Zh
bHVlIGFyZ3VtZW50cyA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFyZ3VtZW50
cykgeworICAgICAgICBhcmd1bWVudHMgPSBBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMpOworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAg
TExJTlRfT1AoMikgPSBhcmd1bWVudHM7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5tb2Rp
ZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOworICAg
IH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgYXJndW1lbnRzLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X2J5X3BuYW1lKQoreworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBMTElOVF9PUCgy
KS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHV0X2J5X3ZhbCkKK3sKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEg
PSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KTsKKyAgICAKKyAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgeworICAgICAg
ICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTQXJy
YXkoYmFzZVZhbHVlKSkgeworICAgICAgICAgICAgSlNBcnJheSoganNBcnJheSA9IGFzQXJyYXko
YmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkKKyAg
ICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRleChnbG9iYWxEYXRhLCBpLCB2YWx1ZSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgSlNBcnJheTo6cHV0QnlJbmRleChqc0Fy
cmF5LCBleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAg
fQorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpCisgICAgICAgICAgICAmJiBh
c0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICAgICAg
SlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAg
ICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJh
eS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9F
TkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7
CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzTnVtYmVy
KCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaSwgdmFsdWUpOworICAgICAgICBMTElO
VF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJz
Y3JpcHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChleGVjLT5jb2RlQmxvY2soKS0+aXNT
dHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVlLCBz
bG90KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rl
bF9ieV92YWwpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChleGVj
KTsKKyAgICAKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgp
OworICAgIAorICAgIGJvb2wgY291bGREZWxldGU7CisgICAgCisgICAgdWludDMyX3QgaTsKKyAg
ICBpZiAoc3Vic2NyaXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNl
T2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYmFzZU9iamVjdCwg
ZXhlYywgaSk7CisgICAgZWxzZSB7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpOworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAg
ICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0
eShiYXNlT2JqZWN0LCBleGVjLCBwcm9wZXJ0eSk7CisgICAgfQorICAgIAorICAgIGlmICghY291
bGREZWxldGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBM
TElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVy
dHkuIikpOworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCkKK3sKKyAgICBMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKS5wdXQoZXhlYywgcGNbMl0udS5vcGVyYW5kLCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wdXRfZ2V0dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCku
aXNPYmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgx
KS5qc1ZhbHVlKCkpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCkt
PmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNW
YWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZUdl
dHRlcihiYXNlT2JqLCBleGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgp
KSwgMCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
dXRfc2V0dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3Qo
KSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVl
KCkpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZp
ZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNWYWx1ZSgpLmlz
T2JqZWN0KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZVNldHRlcihiYXNl
T2JqLCBleGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVz
KQoreworICAgIHVuc2lnbmVkIGNvdW50ID0gcGNbMV0udS5vcGVyYW5kOworICAgIFNjb3BlQ2hh
aW5Ob2RlKiB0bXAgPSBleGVjLT5zY29wZUNoYWluKCk7CisgICAgd2hpbGUgKGNvdW50LS0pCisg
ICAgICAgIHRtcCA9IHRtcC0+cG9wKCk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbih0bXApOwor
ICAgIHBjICs9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qdHJ1ZSwg
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2pmYWxzZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamZhbHNlLCAh
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2psZXNzKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzcywganNM
ZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKQoreworICAg
IExMSU5UX0JSQU5DSChvcF9qbmxlc3MsICFqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygx
KS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9qZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXIs
IGpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIp
Cit7CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlciwgIWpzTGVzczxmYWxzZT4oZXhlYywg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKQoreworICAgIExMSU5UX0JSQU5DSChv
cF9qbGVzc2VxLCBqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2pubGVzc2VxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmxlc3NlcSwgIWpzTGVzc0VxPHRy
dWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSkKK3sKKyAgICBM
TElOVF9CUkFOQ0gob3BfamdyZWF0ZXJlcSwganNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pu
Z3JlYXRlcmVxLCAhanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgp
LCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfc3dpdGNoX2ltbSkKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QX0MoMyku
anNWYWx1ZSgpOworICAgIEFTU0VSVChzY3J1dGluZWUuaXNEb3VibGUoKSk7CisgICAgZG91Ymxl
IHZhbHVlID0gc2NydXRpbmVlLmFzRG91YmxlKCk7CisgICAgaW50MzJfdCBpbnRWYWx1ZSA9IHN0
YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJd
LnUub3BlcmFuZDsKKyAgICBpZiAodmFsdWUgPT0gaW50VmFsdWUpIHsKKyAgICAgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJs
b2NrLT5pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JW
YWx1ZShpbnRWYWx1ZSwgZGVmYXVsdE9mZnNldCk7CisgICAgfSBlbHNlCisgICAgICAgIHBjICs9
IGRlZmF1bHRPZmZzZXQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9zd2l0Y2hfc3RyaW5nKQoreworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJh
bmQ7CisgICAgaWYgKCFzY3J1dGluZWUuaXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVmYXVs
dE9mZnNldDsKKyAgICBlbHNlIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVj
LT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1w
VGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGluZWUp
LT52YWx1ZShleGVjKS5pbXBsKCksIGRlZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKQoreworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgQVNTRVJUKGNvZGVC
bG9jay0+Y29kZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUKKyAgICAgICAgICAgfHwgIWNvZGVCbG9j
ay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpCisgICAgICAgICAgIHx8IGV4ZWMtPnVuY2hlY2tlZFIo
Y29kZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKKyNpZiBMTElOVF9I
RUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKKyNlbmRp
ZgorICAgIExMSU5UX1JFVFVSTihjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1syXS51Lm9wZXJh
bmQpLT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbmV3X2Z1bmNfZXhwKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNv
ZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNGdW5jdGlvbiog
ZnVuYyA9IGZ1bmN0aW9uLT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgCisg
ICAgaWYgKCFmdW5jdGlvbi0+bmFtZSgpLmlzTnVsbCgpKSB7CisgICAgICAgIEpTU3RhdGljU2Nv
cGVPYmplY3QqIGZ1bmN0aW9uU2NvcGVPYmplY3QgPSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVh
dGUoZXhlYywgZnVuY3Rpb24tPm5hbWUoKSwgZnVuYywgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsK
KyAgICAgICAgZnVuYy0+c2V0U2NvcGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jLT5zY29wZSgp
LT5wdXNoKGZ1bmN0aW9uU2NvcGVPYmplY3QpKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVU
VVJOKGZ1bmMpOworfQorCitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChF
eGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxsZWUsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVj
Q2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZl
eGVjLT5nbG9iYWxEYXRhKCk7CisKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMt
PnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworCisgICAg
aWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7Cisg
ICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoY2FsbGVlLCBjYWxsRGF0YSk7
CisgICAgCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZUpTKTsKKyAgICAKKyAg
ICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSG9zdCkgeworICAgICAgICAgICAgZ2xvYmFs
RGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRp
dmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBMTElO
VF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgICAgICB9CisgICAgICAgIAorI2lmIExMSU5UX0hF
TFBFUl9UUkFDSU5HCisgICAgICAgIHByaW50ZigiQ2FsbCBjYWxsZWUgaXMgbm90IGEgZnVuY3Rp
b246ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgICAgICBBU1NF
UlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKTsKKyAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhl
eGVjLCBwYywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CisgICAgfQor
CisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgCisgICAgQ29uc3Ry
dWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9
IGdldENvbnN0cnVjdERhdGEoY2FsbGVlLCBjb25zdHJ1Y3REYXRhKTsKKyAgICAKKyAgICBBU1NF
UlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlSlMpOworICAgIAorICAgIGlmIChjb25z
dHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVIb3N0KSB7CisgICAgICAgIGdsb2JhbERhdGEtPmhv
c3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUu
ZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2Fs
bGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkp
OworICAgIH0KKyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgICAgICBwcmludGYo
IkNvbnN0cnVjdG9yIGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNj
cmlwdGlvbigpKTsKKyNlbmRpZgorCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3Ry
dWN0VHlwZU5vbmUpOworICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFD
b25zdHJ1Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJu
VHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlLCBMTEludENh
bGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gMCkKK3sKKyAgICBKU0NlbGwqIGNhbGxlZUFzRnVu
Y3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKKyAgICBpZiAoIWNhbGxl
ZUFzRnVuY3Rpb25DZWxsKQorICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxl
ZSwgcGMsIGNhbGxlZUFzVmFsdWUsIGtpbmQpOworICAgIAorICAgIEpTRnVuY3Rpb24qIGNhbGxl
ZSA9IGFzRnVuY3Rpb24oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOworICAgIGV4ZWNDYWxsZWUtPnNl
dFNjb3BlQ2hhaW4oY2FsbGVlLT5zY29wZVVuY2hlY2tlZCgpKTsKKyAgICBFeGVjdXRhYmxlQmFz
ZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOworICAgIAorICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciBjb2RlUHRyOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKKyAg
ICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgY29kZVB0ciA9IGV4
ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUg
PSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICAgICAg
SlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21waWxlRm9yKGV4ZWNDYWxs
ZWUsIGNhbGxlZS0+c2NvcGUoKSwga2luZCk7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAg
ICAgIExMSU5UX0NBTExfVEhST1coZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKSwgcGMsIGVycm9y
KTsKKyAgICAgICAgY29kZUJsb2NrID0gJmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0
ZWNvZGVGb3Ioa2luZCk7CisgICAgICAgIEFTU0VSVChjb2RlQmxvY2spOworICAgICAgICBpZiAo
ZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNp
emVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQorICAgICAgICAgICAgY29kZVB0ciA9
IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtp
bmQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRh
YmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgfQor
ICAgIAorICAgIGlmIChjYWxsTGlua0luZm8pIHsKKyAgICAgICAgaWYgKGNhbGxMaW5rSW5mby0+
aXNPbkxpc3QoKSkKKyAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+cmVtb3ZlKCk7CisgICAgICAg
IEV4ZWNTdGF0ZSogZXhlY0NhbGxlciA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAg
ICAgIGNhbGxMaW5rSW5mby0+Y2FsbGVlLnNldChleGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4
ZWNDYWxsZXItPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAg
ICAgY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0
YSgpLCBleGVjQ2FsbGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7
CisgICAgICAgIGNhbGxMaW5rSW5mby0+bWFjaGluZUNvZGVUYXJnZXQgPSBjb2RlUHRyOworICAg
ICAgICBpZiAoY29kZUJsb2NrKQorICAgICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21pbmdD
YWxsKGNhbGxMaW5rSW5mbyk7CisgICAgfQorICAgIAorICAgIExMSU5UX0NBTExfUkVUVVJOKGV4
ZWNDYWxsZWUsIHBjLCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworfQorCitpbmxpbmUg
SGVscGVyUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9u
KiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIC8vIFRoaXMgbmVlZHMg
dG86CisgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lLgorICAgIC8vIC0gRmlndXJlIG91dCB3
aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gSWYgcG9z
c2libGUsIGxpbmsgdGhlIGNhbGwncyBpbmxpbmUgY2FjaGUuCisgICAgLy8gLSBSZXR1cm4gYSB0
dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJh
bWUuCisgICAgCisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUu
b3BlcmFuZDsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0
ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxs
ZXJGcmFtZShleGVjKTsKKyAgICAKKyAgICBBU1NFUlQocGNbNF0udS5jYWxsTGlua0luZm8pOwor
ICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIGtpbmQsIGNhbGxlZUFzVmFsdWUs
IHBjWzRdLnUuY2FsbExpbmtJbmZvKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Nh
bGwpCit7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpCit7CisgICAgcmV0dXJuIGdl
bmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ29uc3RydWN0KTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncykKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAg
IC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZSB3aGlsZSByZXNwZWN0aW5nIHRoZSB2YXJpYWJsZSBh
cmd1bWVudHMuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGlsZSBp
dCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUg
YWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCisgICAgCisgICAgSlNWYWx1
ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhl
Y1N0YXRlKiBleGVjQ2FsbGVlID0gbG9hZFZhcmFyZ3MoCisgICAgICAgIGV4ZWMsICZleGVjLT5n
bG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLAorICAgICAgICBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHBjWzRdLnUub3BlcmFu
ZCk7CisgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpOworICAgIAorICAg
IGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNW
YWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjLT51
bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykpOworICAgIAor
ICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVB
c1ZhbHVlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCkKK3sKKyAg
ICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisg
ICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICBK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAg
ZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5k
KTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjQ2FsbGVl
LT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAg
ZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWND
YWxsZWUtPnNldFJldHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KCZsbGludF9nZW5l
cmljX3JldHVybl9wb2ludCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKyAg
ICBleGVjLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBi
aXR3aXNlX2Nhc3Q8aW50MzJfdD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfZXZhbCkpOwor
ICAgIAorICAgIGlmICghaXNIb3N0RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2
YWwpKQorICAgICAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2Fs
bCwgY2FsbGVlQXNWYWx1ZSk7CisgICAgCisgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZh
bHVlID0gZXZhbChleGVjQ2FsbGVlKTsKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVl
LCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKK3sKKyAg
ICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAg
SlNWYWx1ZSBhY3RpdmF0aW9uVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgaWYg
KCFhY3RpdmF0aW9uVmFsdWUpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnVuY2hl
Y2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpLmpzVmFs
dWUoKSkgeworICAgICAgICAgICAgaWYgKCFleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2Rl
KCkpCisgICAgICAgICAgICAgICAgYXNBcmd1bWVudHModiktPnRlYXJPZmYoZXhlYyk7CisgICAg
ICAgIH0KKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIEpTQWN0aXZhdGlvbiogYWN0
aXZhdGlvbiA9IGFzQWN0aXZhdGlvbihhY3RpdmF0aW9uVmFsdWUpOworICAgIGFjdGl2YXRpb24t
PnRlYXJPZmYoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+
dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSku
anNWYWx1ZSgpKQorICAgICAgICBhc0FyZ3VtZW50cyh2KS0+ZGlkVGVhck9mZkFjdGl2YXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBhY3RpdmF0aW9uKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cykKK3sKKyAgICBBU1NF
UlQoZXhlYy0+Y29kZUJsb2NrKCktPnVzZXNBcmd1bWVudHMoKSAmJiAhZXhlYy0+Y29kZUJsb2Nr
KCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgYXNBcmd1bWVudHMoZXhlYy0+dW5jaGVj
a2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkuanNWYWx1
ZSgpKS0+dGVhck9mZihleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3N0cmNhdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNTdHJpbmcoZXhlYywg
JkxMSU5UX09QKDIpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3RvX3ByaW1pdGl2ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9QcmltaXRpdmUoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZ2V0X3BuYW1lcykKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7
CisgICAgaWYgKHYuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBwYyArPSBwY1s1XS51
Lm9wZXJhbmQ7CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAKKyAgICBKU09iamVj
dCogbyA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvLT5z
dHJ1Y3R1cmUoKTsKKyAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0
ZXJhdG9yID0gc3RydWN0dXJlLT5lbnVtZXJhdGlvbkNhY2hlKCk7CisgICAgaWYgKCFqc1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yIHx8IGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmNhY2hlZFByb3RvdHlw
ZUNoYWluKCkgIT0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSkKKyAgICAgICAganNQ
cm9wZXJ0eU5hbWVJdGVyYXRvciA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVj
LCBvKTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9IEpTVmFsdWUoanNQcm9wZXJ0eU5hbWVJdGVy
YXRvcik7CisgICAgTExJTlRfT1AoMikgPSBKU1ZhbHVlKG8pOworICAgIExMSU5UX09QKDMpID0g
UmVnaXN0ZXI6OndpdGhJbnQoMCk7CisgICAgTExJTlRfT1AoNCkgPSBSZWdpc3Rlcjo6d2l0aElu
dChqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5zaXplKCkpOworICAgIAorICAgIHBjICs9IE9QQ09E
RV9MRU5HVEgob3BfZ2V0X3BuYW1lcyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9uZXh0X3BuYW1lKQoreworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNP
YmplY3QoTExJTlRfT1AoMikuanNWYWx1ZSgpKTsKKyAgICBKU1N0cmluZyogcHJvcGVydHkgPSBh
c1N0cmluZyhMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIGlmIChiYXNlLT5oYXNQcm9wZXJ0
eShleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5LT52YWx1ZShleGVjKSkpKSB7CisgICAg
ICAgIC8vIEdvIHRvIHRhcmdldC4KKyAgICAgICAgcGMgKz0gcGNbNl0udS5vcGVyYW5kOworICAg
IH0gLy8gRWxzZSwgZG9uJ3QgY2hhbmdlIHRoZSBQQywgc28gdGhlIGludGVycHJldGVyIHdpbGwg
cmVsb29wLgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHVzaF9zY29wZSkKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7Cisg
ICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOworICAgIAorICAgIExMSU5UX09QKDEpID0gbzsKKyAgICBleGVjLT5zZXRTY29wZUNo
YWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChvKSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUpCit7CisgICAgZXhlYy0+
c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnBvcCgpKTsKKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKQoreworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3Qq
IHNjb3BlID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGNvZGVCbG9jay0+aWRl
bnRpZmllcihwY1syXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIERvbnREZWxl
dGUpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKHNj
b3BlKSk7CisgICAgTExJTlRfUkVUVVJOKHNjb3BlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Rocm93KQoreworICAgIExMSU5UX1RIUk9XKExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikK
K3sKKyAgICBMTElOVF9USFJPVyhjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKQoreworICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBjWzFd
LnUub3BlcmFuZDsKKyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlu
dCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5nbG9iYWxEYXRh
KCkuaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1
Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIAorICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7CisgICAg
KCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT53aWxsRXhlY3V0ZShleGVj
LCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjpl
bmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPmRpZEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSku
anNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIExMSW50SGVscGVyc19oCisjZGVmaW5lIExMSW50SGVscGVyc19oCisKKyNpbmNsdWRlIDx3
dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBFTkFC
TEUoTExJTlQpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3Qg
SW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKK3R5cGVkZWYgaW50NjRfdCBIZWxw
ZXJSZXR1cm5UeXBlOworCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2Vf
b3BlcmFuZChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVy
YW5kKTsKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1ZShFeGVj
U3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKKworI2Rl
ZmluZSBMTElOVF9IRUxQRVJfREVDTChuYW1lKSBcCisgICAgZXh0ZXJuICJDIiBIZWxwZXJSZXR1
cm5UeXBlIGxsaW50XyMjbmFtZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKKwor
TExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpOworTExJTlRfSEVMUEVSX0RFQ0wodHJh
Y2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2Vf
cHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFj
ZV9hcml0eUNoZWNrX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hl
Y2tfZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZSk7CitMTElOVF9IRUxQ
RVJfREVDTChzcGVjaWFsX3RyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcik7CitM
TElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVM
UEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVS
X0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2spOworTExJTlRfSEVM
UEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitM
TElOVF9IRUxQRVJfREVDTChsb29wX29zcik7CitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29u
c3RydWN0X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3Rp
dmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY29udmVydF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfb2JqZWN0
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25ld19hcnJheV9idWZmZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
d19yZWdleHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25z
dHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3ByZV9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9kZWMpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wb3N0X2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
YWRkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3N1Yik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9tb2QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl91cnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2JpdG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3Ip
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0
YW5jZW9mKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNf
Ym9vbGVhbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9pc19zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lz
X29iamVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2luKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZl
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9y
ZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZl
X2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9y
ZXNvbHZlX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9l
eGlzdHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZ2V0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJn
dW1lbnRzX2xlbmd0aCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2dldF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9i
eV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
ZGVsX2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wdXRfc2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qdHJ1ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfamZhbHNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfam5sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRl
cik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9qbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfam5ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9p
bW0pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9jaGFyKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXdfZnVuYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmNfZXhwKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25z
dHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncyk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90
ZWFyX29mZl9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9h
cmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNhdCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9n
ZXRfcG5hbWVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXh0X3BuYW1lKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wb3Bfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1
Zyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpOworCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50
SGVscGVyc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxp
bmVBc21Db25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBMTEludE9mZmxpbmVBc21Db25maWdfaAorI2RlZmluZSBMTEludE9mZmxpbmVBc21D
b25maWdfaAorCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0
aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4NikKKyNkZWZp
bmUgT0ZGTElORV9BU01fWDg2IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisj
ZW5kaWYKKworI2lmIENQVShBUk12NykKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMQorI2Vs
c2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMAorI2VuZGlmCisKKyNpZiAhQVNTRVJUX0RJ
U0FCTEVECisjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVm
aW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgQ1BVKEJJR19F
TkRJQU4pCisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMQorI2Vsc2UKKyNkZWZpbmUg
T0ZGTElORV9BU01fQklHX0VORElBTiAwCisjZW5kaWYKKworI2lmIEVOQUJMRShMTElOVF9PU1Jf
VE9fSklUKQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAxCisjZWxzZQorI2RlZmlu
ZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIExMSU5UX0VYRUNVVElP
Tl9UUkFDSU5HCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDEKKyNlbHNl
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNlbmRpZgorCisjZW5k
aWYgLy8gTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
QWxsb2NhdGlvblNwYWNlLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhl
Y3V0YWJsZS5oIgorI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgor
I2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpT
Q2VsbC5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEu
aCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisj
aW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgi
CisjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIK
KyNpbmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcu
aCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgor
I2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRl
ICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgT0ZG
TElORV9BU01fT0ZGU0VUT0YoY2xhenosIGZpZWxkKSBPQkpFQ1RfT0ZGU0VUT0YoY2xhenosIGZp
ZWxkKQorCitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3IgeworcHVibGljOgorICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCogZHVtbXkoKTsKK307CisKK2NvbnN0IHVuc2lnbmVkKiBMTEludE9m
ZnNldHNFeHRyYWN0b3I6OmR1bW15KCkKK3sKKyNpbmNsdWRlICJMTEludERlc2lyZWRPZmZzZXRz
LmgiCisgICAgcmV0dXJuIGV4dHJhY3RvclRhYmxlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworaW50IG1haW4oaW50LCBjaGFyKiopCit7CisgICAgLy8gT3V0IG9mIGFuIGFidW5kYW5jZSBv
ZiBjYXV0aW9uLCBtYWtlIHN1cmUgdGhhdCBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkg
aXMgbGl2ZSwKKyAgICAvLyBhbmQgdGhlIGV4dHJhY3RvclRhYmxlIGlzIGxpdmUsIHRvby4KKyAg
ICBwcmludGYoIiVwXG4iLCBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSk7Cisg
ICAgcmV0dXJuIDA7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFRodW5rcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJMTEludFRodW5rcy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVk
ZSAiSlNJbnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAi
TG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50
IHsKKworc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
byhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIHZvaWQgKCp0YXJnZXQpKCkpCit7CisgICAgSlNJ
bnRlcmZhY2VKSVQgaml0OworICAgIAorICAgIC8vIEZJWE1FOiB0aGVyZSdzIHByb2JhYmx5IGEg
YmV0dGVyIHdheSB0byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20gbm90IHN1cmUgSSBjYXJlLgorICAg
IGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lk
Kj4odGFyZ2V0KSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgaml0Lmp1bXAoSlNJbnRl
cmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9i
YWxEYXRhLCAmaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBwYXRjaEJ1ZmZlci5m
aW5hbGl6ZUNvZGUoKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2Fs
bEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJl
dHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZv
ckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQor
eworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2Jh
bERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKTsKK30KKworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2V2YWxfcHJvbG9ndWUpOworfQorCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9i
YWxEYXRhLCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgTExJbnRUaHVua3NfaAorI2RlZmluZSBMTEludFRodW5rc19oCisKKyNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyQ29kZVJlZi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRhOwor
CituYW1lc3BhY2UgTExJbnQgeworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JD
YWxsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRh
Kik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5r
R2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9u
Rm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSop
OworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xv
YmFsRGF0YSopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50VGh1bmtzX2gKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc20JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjM3NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjIENyYXNoIGNvdXJzZSBvbiB0aGUgbGFuZ3Vh
Z2UgdGhhdCB0aGlzIGlzIHdyaXR0ZW4gaW4gKHdoaWNoIEkganVzdCBjYWxsCisjICJhc3NlbWJs
eSIgZXZlbiB0aG91Z2ggaXQncyBtb3JlIHRoYW4gdGhhdCk6CisjCisjIC0gTW9zdGx5IGdhcy1z
dHlsZSBvcGVyYW5kIG9yZGVyaW5nLiBUaGUgbGFzdCBvcGVyYW5kIHRlbmRzIHRvIGJlIHRoZQor
IyAgIGRlc3RpbmF0aW9uLiBTbyAiYSA6PSBiIiBpcyB3cml0dGVuIGFzICJtb3YgYiwgYSIuIEJ1
dCB1bmxpa2UgZ2FzLAorIyAgIGNvbXBhcmlzb25zIGFyZSBpbi1vcmRlciwgc28gImlmIChhIDwg
YikiIGlzIHdyaXR0ZW4gYXMKKyMgICAiYmlsdCBhLCBiLCAuLi4iLgorIworIyAtICJiIiA9IGJ5
dGUsICJoIiA9IDE2LWJpdCB3b3JkLCAiaSIgPSAzMi1iaXQgd29yZCwgInAiID0gcG9pbnRlci4K
KyMgICBDdXJyZW50bHkgdGhpcyBpcyBqdXN0IDMyLWJpdCBzbyAiaSIgYW5kICJwIiBhcmUgaW50
ZXJjaGFuZ2VhYmxlCisjICAgZXhjZXB0IHdoZW4gYW4gb3Agc3VwcG9ydHMgb25lIGJ1dCBub3Qg
dGhlIG90aGVyLgorIworIyAtIEluIGdlbmVyYWwsIHZhbGlkIG9wZXJhbmRzIGZvciBtYWNybyBp
bnZvY2F0aW9ucyBhbmQgaW5zdHJ1Y3Rpb25zIGFyZQorIyAgIHJlZ2lzdGVycyAoZWcgInQwIiks
IGFkZHJlc3NlcyAoZWcgIjRbdDBdIiksIGJhc2UtaW5kZXggYWRkcmVzc2VzCisjICAgKGVnICI3
W3QwLCB0MSwgMl0iKSwgYWJzb2x1dGUgYWRkcmVzc2VzIChlZyAiMHhhMDAwMDAwMFtdIiksIG9y
IGxhYmVscworIyAgIChlZyAiX2ZvbyIgb3IgIi5mb28iKS4gTWFjcm8gaW52b2NhdGlvbnMgY2Fu
IGFsc28gdGFrZSBhbm9ueW1vdXMKKyMgICBtYWNyb3MgYXMgb3BlcmFuZHMuIEluc3RydWN0aW9u
cyBjYW5ub3QgdGFrZSBhbm9ueW1vdXMgbWFjcm9zLgorIworIyAtIExhYmVscyBtdXN0IGhhdmUg
bmFtZXMgdGhhdCBiZWdpbiB3aXRoIGVpdGhlciAiXyIgb3IgIi4iLiAgQSAiLiIgbGFiZWwKKyMg
ICBpcyBsb2NhbCBhbmQgZ2V0cyByZW5hbWVkIGJlZm9yZSBjb2RlIGdlbiB0byBtaW5pbWl6ZSBu
YW1lc3BhY2UKKyMgICBwb2xsdXRpb24uIEEgIl8iIGxhYmVsIGlzIGFuIGV4dGVybiBzeW1ib2wg
KGkuZS4gIi5nbG9ibCIpLiBUaGUgIl8iCisjICAgbWF5IG9yIG1heSBub3QgYmUgcmVtb3ZlZCBk
dXJpbmcgY29kZSBnZW4gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGFzbQorIyAgIGNvbnZlbnRp
b25zIGZvciBDIG5hbWUgbWFuZ2xpbmcgb24gdGhlIHRhcmdldCBwbGF0Zm9ybSBtYW5kYXRlIGEg
Il8iCisjICAgcHJlZml4LgorIworIyAtIEEgIm1hY3JvIiBpcyBhIGxhbWJkYSBleHByZXNzaW9u
LCB3aGljaCBtYXkgYmUgZWl0aGVyIGFub255bW91cyBvcgorIyAgIG5hbWVkLiBCdXQgdGhpcyBo
YXMgY2F2ZWF0cy4gIm1hY3JvIiBjYW4gdGFrZSB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLAorIyAg
IHdoaWNoIG1heSBiZSBtYWNyb3Mgb3IgYW55IHZhbGlkIG9wZXJhbmRzLCBidXQgaXQgY2FuIG9u
bHkgcmV0dXJuCisjICAgY29kZS4gQnV0IHlvdSBjYW4gZG8gVHVyaW5nLWNvbXBsZXRlIHRoaW5n
cyB2aWEgY29udGludWF0aW9uIHBhc3NpbmcKKyMgICBzdHlsZTogIm1hY3JvIGZvbyAoYSwgYikg
YihhKSBlbmQgZm9vKGZvbywgZm9vKSIuIEFjdHVhbGx5LCBkb24ndCBkbworIyAgIHRoYXQsIHNp
bmNlIHlvdSdsbCBqdXN0IGNyYXNoIHRoZSBhc3NlbWJsZXIuCisjCisjIC0gQW4gImlmIiBpcyBh
IGNvbmRpdGlvbmFsIG9uIHNldHRpbmdzLiBBbnkgaWRlbnRpZmllciBzdXBwbGllZCBpbiB0aGUK
KyMgICBwcmVkaWNhdGUgb2YgYW4gImlmIiBpcyBhc3N1bWVkIHRvIGJlIGEgI2RlZmluZSB0aGF0
IGlzIGF2YWlsYWJsZQorIyAgIGR1cmluZyBjb2RlIGdlbi4gU28geW91IGNhbid0IHVzZSAiaWYi
IGZvciBjb21wdXRhdGlvbiBpbiBhIG1hY3JvLCBidXQKKyMgICB5b3UgY2FuIHVzZSBpdCB0byBz
ZWxlY3QgZGlmZmVyZW50IHBpZWNlcyBvZiBjb2RlIGZvciBkaWZmZXJlbnQKKyMgICBwbGF0Zm9y
bXMuCisjCisjIC0gQXJndW1lbnRzIHRvIG1hY3JvcyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIHJh
dGhlciB0aGFuIGR5bmFtaWMgc2NvcGluZy4KKyMgICBDb25zdCdzIGFsc28gZm9sbG93IGxleGlj
YWwgc2NvcGluZyBhbmQgbWF5IG92ZXJyaWRlIChoaWRlKSBhcmd1bWVudHMKKyMgICBvciBvdGhl
ciBjb25zdHMuIEFsbCB2YXJpYWJsZXMgKGFyZ3VtZW50cyBhbmQgY29uc3RhbnRzKSBjYW4gYmUg
Ym91bmQKKyMgICB0byBvcGVyYW5kcy4gQWRkaXRpb25hbGx5LCBhcmd1bWVudHMgKGJ1dCBub3Qg
Y29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBtYWNyb3MuCisKKworIyBUaGVzZSBkZWNs
YXJhdGlvbnMgbXVzdCBtYXRjaCBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaC4KK2NvbnN0IENh
bGxGcmFtZUhlYWRlclNpemUgPSA0OAorY29uc3QgQXJndW1lbnRDb3VudCA9IC00OAorY29uc3Qg
Q2FsbGVyRnJhbWUgPSAtNDAKK2NvbnN0IENhbGxlZSA9IC0zMgorY29uc3QgU2NvcGVDaGFpbiA9
IC0yNAorY29uc3QgUmV0dXJuUEMgPSAtMTYKK2NvbnN0IENvZGVCbG9jayA9IC04CisKK2NvbnN0
IFRoaXNBcmd1bWVudE9mZnNldCA9IC1DYWxsRnJhbWVIZWFkZXJTaXplIC0gOAorCisjIERlY2xh
cmUgc29tZSBhbGlhc2VzIGZvciB0aGUgcmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMg
PSB0NAorCisjIE9mZnNldHMgbmVlZGVkIGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVz
ZW50YXRpb24uCitpZiBCSUdfRU5ESUFOCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNv
bnN0IFBheWxvYWRPZmZzZXQgPSA0CitlbHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAg
IGNvbnN0IFBheWxvYWRPZmZzZXQgPSAwCitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBj
b25zdGFudHMuCitjb25zdCBJbnQzMlRhZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2Nv
bnN0IE51bGxUYWcgPSAtMworY29uc3QgVW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcg
PSAtNQorY29uc3QgRW1wdHlWYWx1ZVRhZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAt
NworY29uc3QgTG93ZXN0VGFnID0gRGVsZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMu
Citjb25zdCBTdHJpbmdUeXBlID0gNQorY29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBm
bGFncyBjb25zdGFudHMuCitjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3Qg
SW1wbGVtZW50c0hhc0luc3RhbmNlID0gMgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSA9IDgKKworIyBIZWFwIGFsbG9jYXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9i
amVjdFNpemVDbGFzc0luZGV4ID0gMworCisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgor
Y29uc3QgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0
eXBlIGNvbnN0YW50cy4KK2NvbnN0IEdsb2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEK
K2NvbnN0IEZ1bmN0aW9uQ29kZSA9IDIKKworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0
YWcgd29yZCBvZiB0aGUgYXJndW1lbnQgY291bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJn
dW1lbnRDb3VudCArIFRhZ09mZnNldAorCisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmgu
Citjb25zdCBWZWN0b3JTaXplT2Zmc2V0ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0g
NAorCisjIFN0cmluZyBmbGFncy4KK2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisj
IFV0aWxpdGllcworbWFjcm8gY3Jhc2goKQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAg
ICBtb3ZlIDAsIHQwCisgICAgY2FsbCB0MAorZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24p
CisgICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAg
Y3Jhc2goKQorICAgIC5vazoKKyAgICBlbmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFk
ZHJlc3NBZnRlckNhbGwoZGVzdGluYXRpb25SZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAg
ICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBv
cCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAor
ZW5kCisKK21hY3JvIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lz
dGVyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAg
ZWxzaWYgWDg2CisgICAgICAgIHB1c2ggc291cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAg
IGVycm9yCisgICAgZW5kCitlbmQKKworbWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRw
IGFkdmFuY2UgKiA0LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFu
Y2hXaXRoT2Zmc2V0KHBjT2Zmc2V0KQorICAgIGxzaGlmdGkgMiwgcGNPZmZzZXQKKyAgICBhZGRw
IHBjT2Zmc2V0LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2go
cGNPZmZzZXQpCisgICAgbG9hZGkgcGNPZmZzZXQsIHQwCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRo
T2Zmc2V0KHQwKQorZW5kCisKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBB
cmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgam1wIFtQQ10KK2VuZAorCitt
YWNybyBjQ2FsbDIoZnVuY3Rpb24sIGFyZzEsIGFyZzIpCisgICAgaWYgQVJNdjcKKyAgICAgICAg
bW92ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgZWxzaWYgWDg2CisgICAg
ICAgIHBva2UgYXJnMSwgMAorICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICBlbHNlCisgICAgICAg
IGVycm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5kCisKKyMgVGhpcyBiYXJlbHkg
d29ya3MuIGFyZzMgYW5kIGFyZzQgc2hvdWxkIHByb2JhYmx5IGJlIGltbWVkaWF0ZXMuCittYWNy
byBjQ2FsbDQoZnVuY3Rpb24sIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpCisgICAgaWYgQVJNdjcK
KyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgICAgIG1v
dmUgYXJnMywgdDIKKyAgICAgICAgbW92ZSBhcmc0LCB0MworICAgIGVsc2lmIFg4NgorICAgICAg
ICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisgICAgICAgIHBva2UgYXJnMywg
MgorICAgICAgICBwb2tlIGFyZzQsIDMKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5k
CisgICAgY2FsbCBmdW5jdGlvbgorZW5kCisKK21hY3JvIGNhbGxIZWxwZXIoaGVscGVyKQorICAg
IGNDYWxsMihoZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBj
ZnIKK2VuZAorCisjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCBh
biBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uCittYWNybyB0cmFjZU9wZXJhbmQo
ZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2Vfb3BlcmFuZCwgY2Zy
LCBQQywgZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwg
Y2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQg
dGhlIHZhbHVlIG9mIGFuIG9wZXJhbmQgaW4gdGhlIGluc3RydWN0aW9uCisjIHN0cmVhbS4KK21h
Y3JvIHRyYWNlVmFsdWUoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJh
Y2VfdmFsdWUsIGNmciwgUEMsIGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQwor
ICAgIG1vdmUgdDEsIGNmcgorZW5kCisKK21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBpZiBF
WEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkKKyAgICBl
bmQKK2VuZAorCisjIENhbGwgYSBoZWxwZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3JvIGNhbGxD
YWxsSGVscGVyKGFkdmFuY2UsIGhlbHBlciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5jZSAqIDQs
IFBDLCB0MAorICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisg
ICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBhY3Rpb24o
dDApCitlbmQKKworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikKKyAgICBj
YWxsQ2FsbEhlbHBlcigKKyAgICAgICAgYWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAorICAgICAg
ICBtYWNybyAoY2FsbGVlKQorICAgICAgICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAgICAgIGRp
c3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNo
VG9KSVQoaW5jcmVtZW50LCBhY3Rpb24pCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENvZGVCbG9j
azo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3QwXSwgLmNvbnRpbnVlCisgICAgICAgIGFjdGlvbigp
CisgICAgLmNvbnRpbnVlOgorICAgIGVuZAorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRG
b3JMb29wKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxLAorICAgICAgICBtYWNy
byAoKQorICAgICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nm
cl0KKyAgICAgICAgICAgIGNDYWxsMihfbGxpbnRfbG9vcF9vc3IsIGNmciwgUEMpCisgICAgICAg
ICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAg
ICAgICBqbXAgdDAKKyAgICAgICAgLnJlY292ZXI6CisgICAgICAgICAgICBsb2FkaSBBcmd1bWVu
dENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBj
aGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAg
ICAgIDEwLAorICAgICAgICBtYWNybyAoKQorICAgICAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRf
cmVwbGFjZSkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGFzc2VydE5vdENvbnN0YW50KGlu
ZGV4KQorICAgIGFzc2VydChtYWNybyAob2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4LCBvayBlbmQpCitlbmQKKworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0
IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8g
bG9hZENvbnN0YW50T3JWYXJpYWJsZShpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBp
bmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRh
Z09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50
UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBU
aGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVl
ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdp
bGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMu
CisgICAgbG9hZHAgVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAg
UGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisK
KyMgSW5kZXggYW5kIHBheWxvYWQgbWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLiBJbmRleCBtYXkg
YmUgY2xvYmJlcmVkLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRh
ZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRv
bmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFnCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3RhZ10s
IHRhZworICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29u
dGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4g
dmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4KSA8PCAzLgorICAgIGxzaGlmdGkgMywgaW5kZXgKKyAgICBhZGRwIGluZGV4LCB0YWcK
KyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQKKyAgICBsb2FkcCBUYWdPZmZz
ZXRbdGFnXSwgdGFnCisuZG9uZToKK2VuZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxvYWQpCisgICAgYmlndGVxIGlu
ZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgdGFnQ2hlY2so
VGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBp
bmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJl
Z2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhl
cmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+
PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxs
IGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgor
ICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0pCisgICAgbG9hZHAgUGF5
bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMg
SW5kZXggYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBu
b3QgbXV0YXRlZC4gVXNlCisjIHRoaXMgaWYgeW91IGtub3cgd2hhdCB0aGUgdGFnIG9mIHRoZSB2
YXJpYWJsZSBzaG91bGQgYmUuIERvaW5nIHRoZSB0YWcKKyMgdGVzdCBhcyBwYXJ0IG9mIGxvYWRp
bmcgdGhlIHZhcmlhYmxlIHJlZHVjZXMgcmVnaXN0ZXIgdXNlLCBidXQgbWF5IG5vdAorIyBiZSBm
YXN0ZXIgdGhhbiBkb2luZyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlIGZvbGxvd2VkIGJ5IGEgYnJh
bmNoIG9uIHRoZQorIyB0YWcuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChp
bmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRUYWdDdXN0b20oCisgICAgICAgIGluZGV4LAorICAgICAgICBtYWNybyAoYWN0
dWFsVGFnKSBiaW5lcSBhY3R1YWxUYWcsIGV4cGVjdGVkVGFnLCBzbG93IGVuZCwKKyAgICAgICAg
cGF5bG9hZCkKK2VuZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hl
Y2tlZChpbmRleCwgcGF5bG9hZCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRh
Z0N1c3RvbSgKKyAgICAgICAgaW5kZXgsCisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGVuZCwK
KyAgICAgICAgcGF5bG9hZCkKK2VuZAorCittYWNybyB3cml0ZUJhcnJpZXIodGFnLCBwYXlsb2Fk
KQorICAgICMgTm90aGluZyB0byBkbywgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGdlbmVyYXRpb25h
bCBvciBpbmNyZW1lbnRhbCBjb2xsZWN0b3IuCitlbmQKKworbWFjcm8gdmFsdWVQcm9maWxlKHRh
ZywgcGF5bG9hZCwgcHJvZmlsZSkKKyAgICBzdG9yZWkgdGFnLCBWYWx1ZVByb2ZpbGU6Om1fYnVj
a2V0cyArIFRhZ09mZnNldFtwcm9maWxlXQorICAgIHN0b3JlaSBwYXlsb2FkLCBWYWx1ZVByb2Zp
bGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbcHJvZmlsZV0KK2VuZAorCisKKyMgSW5kaWNh
dGUgdGhlIGJlZ2lubmluZyBvZiBMTEludC4KK19sbGludF9iZWdpbjoKKyAgICBjcmFzaCgpCisK
KworIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlcgorCittYWNybyBmdW5jdGlvbkZv
ckNhbGxDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ2FsbGVlW2Nm
cl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3Rh
cmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFi
bGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCitl
bmQKKworbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVn
aXN0ZXIpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAg
SlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIK
KyAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ29uc3RydWN0W3Rh
cmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBub3RGdW5jdGlvbkNv
ZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3Vy
Y2VSZWdpc3RlcikKKyAgICBzdG9yZXAgc291cmNlUmVnaXN0ZXIsIENvZGVCbG9ja1tjZnJdCitl
bmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCisg
ICAgIyBOb3RoaW5nIHRvIGRvIQorZW5kCisKKyMgRG8gdGhlIGJhcmUgbWluaW11bSByZXF1aXJl
ZCB0byBleGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBsZWF2ZSB0aGUgQ29kZUJsb2NrKgor
IyBpbiB0MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1IuCittYWNybyBwcm9s
b2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NySGVscGVyLCB0cmFjZUhl
bHBlcikKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpCisgICAgCisgICAg
IyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1IuCisgICAg
c3RvcmVwIHQyLCBSZXR1cm5QQ1tjZnJdCisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcKKyAgICAg
ICAgY2FsbEhlbHBlcih0cmFjZUhlbHBlcikKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tHZXR0ZXIo
dDEpCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgYmFkZGlzIDUsIENvZGVCbG9jazo6bV9s
bGludEV4ZWN1dGVDb3VudGVyW3QxXSwgLmNvbnRpbnVlCisgICAgICAgIGNDYWxsMihvc3JIZWxw
ZXIsIGNmciwgUEMpCisgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAgICBidHB6IHQwLCAucmVj
b3ZlcgorICAgICAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgICAgICByZXN0b3JlUmV0
dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICAgICAgam1wIHQwCisgICAgLnJlY292ZXI6
CisgICAgICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICAuY29udGludWU6CisgICAgZW5kCisg
ICAgY29kZUJsb2NrU2V0dGVyKHQxKQorICAgIAorICAgICMgU2V0IHVwIHRoZSBQQy4KKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBd
LCBQQworZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMg
d2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCisjIE11c3QgY2FsbCBkaXNwYXRjaCgwKSBh
ZnRlciBjYWxsaW5nIHRoaXMuCittYWNybyBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVB
cmdTa2lwKQorICAgICMgUHJvZmlsZSB0aGUgYXJndW1lbnRzLiBVbmZvcnR1bmF0ZWx5LCB3ZSBo
YXZlIG5vIGNob2ljZSBidXQgdG8gZG8gdGhpcy4gVGhpcworICAgICMgY29kZSBpcyBwcmV0dHkg
aG9ycmVuZG91cyBiZWNhdXNlIG9mIHRoZSBkaWZmZXJlbmNlIGluIG9yZGVyaW5nIGJldHdlZW4K
KyAgICAjIGFyZ3VtZW50cyBhbmQgdmFsdWUgcHJvZmlsZXMsIHRoZSBkZXNpcmUgdG8gaGF2ZSBh
IHNpbXBsZSBsb29wLWRvd24tdG8temVybworICAgICMgbG9vcCwgYW5kIHRoZSBkZXNpcmUgdG8g
dXNlIG9ubHkgdGhyZWUgcmVnaXN0ZXJzIHNvIGFzIHRvIHByZXNlcnZlIHRoZSBQQyBhbmQKKyAg
ICAjIHRoZSBjb2RlIGJsb2NrLiBJdCBpcyBsaWtlbHkgdGhhdCB0aGlzIGNvZGUgc2hvdWxkIGJl
IHJld3JpdHRlbiBpbiBhIG1vcmUKKyAgICAjIG9wdGltYWwgd2F5IGZvciBhcmNoaXRlY3R1cmVz
IHRoYXQgaGF2ZSBtb3JlIHRoYW4gZml2ZSByZWdpc3RlcnMgYXZhaWxhYmxlCisgICAgIyBmb3Ig
YXJiaXRyYXJ5IHVzZSBpbiB0aGUgaW50ZXJwcmV0ZXIuCisgICAgbG9hZGkgQ29kZUJsb2NrOjpt
X251bVBhcmFtZXRlcnNbdDFdLCB0MAorICAgIGFkZGkgLXByb2ZpbGVBcmdTa2lwLCB0MCAjIFVz
ZSBhZGRpIGJlY2F1c2UgdGhhdCdzIHdoYXQgaGFzIHRoZSBwZWVwaG9sZQorICAgIGFzc2VydCht
YWNybyAob2spIGJpZ3RlcSB0MCwgMCwgb2sgZW5kKQorICAgIGJ0aXogdDAsIC5hcmd1bWVudFBy
b2ZpbGVEb25lCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcyAr
IFZlY3RvckJ1ZmZlck9mZnNldFt0MV0sIHQzCisgICAgbXVsaSBzaXplb2YgVmFsdWVQcm9maWxl
LCB0MCwgdDIgIyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVkdWN0aW9uIQorICAgIG5lZ2kg
dDAKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MiwgdDMKKy5hcmd1bWVudFByb2ZpbGVM
b29wOgorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNldCArIDggLSBwcm9m
aWxlQXJnU2tpcCAqIDhbY2ZyLCB0MF0sIHQyCisgICAgc3VicCBzaXplb2YgVmFsdWVQcm9maWxl
LCB0MworICAgIHN0b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBzaXplb2YgVmFsdWVQcm9maWxl
ICsgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgVGhp
c0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldCArIDggLSBwcm9maWxlQXJnU2tpcCAqIDhb
Y2ZyLCB0MF0sIHQyCisgICAgc3RvcmVpIHQyLCBwcm9maWxlQXJnU2tpcCAqIHNpemVvZiBWYWx1
ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbdDNdCisg
ICAgYmFkZGlueiA4LCB0MCwgLmFyZ3VtZW50UHJvZmlsZUxvb3AKKy5hcmd1bWVudFByb2ZpbGVE
b25lOgorICAgIAorICAgICMgQ2hlY2sgc3RhY2sgaGVpZ2h0LgorICAgIGxvYWRpIENvZGVCbG9j
azo6bV9udW1DYWxsZWVSZWdpc3RlcnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxEYXRhW3QxXSwgdDIKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmludGVycHJldGVyW3Qy
XSwgdDIgICAjIEZJWE1FOiBDYW4gZ2V0IHRvIHRoZSBSZWdpc3RlckZpbGUgZnJvbSB0aGUgSklU
U3RhY2tGcmFtZQorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQwLCBjZnIsIHQwCisgICAg
YnBhZXEgSW50ZXJwcmV0ZXI6Om1fcmVnaXN0ZXJGaWxlICsgUmVnaXN0ZXJGaWxlOjptX2VuZFt0
Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSworCisgICAgIyBTdGFjayBoZWlnaHQgY2hlY2sgZmFpbGVk
IC0gbmVlZCB0byBjYWxsIGEgaGVscGVyLgorICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlZ2lzdGVy
X2ZpbGVfY2hlY2spCisuc3RhY2tIZWlnaHRPSzoKK2VuZAorCisjIEV4cGVjdHMgdGhhdCBDb2Rl
QmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgor
bWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgaGVscGVyKQorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisgICAgYmlhZXEgdDAsIENvZGVC
bG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCisgICAgY0NhbGwyKGhlbHBlciwg
Y2ZyLCBQQykgICAjIFRoaXMgaGVscGVyIGhhcyBhIHNpbXBsZSBwcm90b2NvbDogdDAgPSAwID0+
IG5vIGVycm9yLCB0MCAhPSAwID0+IGVycm9yCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYnRpeiB0
MCwgLmNvbnRpbnVlCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQx
CisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAg
am1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisuY29udGludWU6
CisgICAgIyBSZWxvYWQgQ29kZUJsb2NrIGFuZCBQQywgc2luY2UgdGhlIGhlbHBlciBjbG9iYmVy
ZWQgaXQuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2luc3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpJbnN0cnVjdGlv
bnM6Om1faW5zdHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKKyAgICBqbXAg
ZG9uZUxhYmVsCitlbmQKKworX2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6CisgICAgcHJvbG9ndWUo
bm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBf
bGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2goMCkK
KworCitfbGxpbnRfZXZhbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVC
bG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3Is
IF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2Rl
QmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1
bmN0aW9uX2Zvcl9jYWxsLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwp
CisuZnVuY3Rpb25Gb3JDYWxsQmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigwKQor
ICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3By
b2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVy
LCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkK
Ky5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24o
MSkKKyAgICBkaXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJp
dHlfY2hlY2s6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBm
dW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2Fs
bF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKKyAgICBmdW5j
dGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfbGxpbnRfaGVscGVyX2NhbGxf
YXJpdHlDaGVjaykKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVj
azoKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVu
Y3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQor
ICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX2xsaW50
X2hlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKKworIyBJbnN0cnVjdGlvbiBpbXBsZW1lbnRh
dGlvbnMKKworX2xsaW50X29wX2VudGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFyc1t0Ml0s
IHQyCisgICAgYnRpeiB0MiwgLm9wRW50ZXJEb25lCisgICAgbW92ZSBVbmRlZmluZWRUYWcsIHQw
CisgICAgbW92ZSAwLCB0MQorLm9wRW50ZXJMb29wOgorICAgIHN1YmkgMSwgdDIKKyAgICBzdG9y
ZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQyLCA4XQorICAgIGJ0aW56IHQyLCAub3BFbnRlckxvb3AKKy5vcEVudGVyRG9uZToK
KyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9jcmVhdGVfYWN0aXZhdGlvbjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBY3RpdmF0aW9uRG9uZQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKKy5vcENyZWF0ZUFj
dGl2YXRpb25Eb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luaXRfbGF6eV9y
ZWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3Jl
aSBFbXB0eVZhbHVlVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgMCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2Ny
ZWF0ZV9hcmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3Jl
YXRlQXJndW1lbnRzRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYXJn
dW1lbnRzKQorLm9wQ3JlYXRlQXJndW1lbnRzRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK21h
Y3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJbmRleCwgY2xhc3NJbmZvT2Zmc2V0
LCBzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBzbG93Q2FzZSkKKyAgICBj
b25zdCBvZmZzZXRPZk15U2l6ZUNsYXNzID0gSlNHbG9iYWxEYXRhOjpoZWFwICsgSGVhcDo6bV9v
YmplY3RTcGFjZSArIEFsbG9jYXRpb25TcGFjZTo6bV9tYXJrZWRTcGFjZSArIE1hcmtlZFNwYWNl
OjptX3ByZWNpc2VTaXplQ2xhc3NlcyArIHNpemVDbGFzc0luZGV4ICogc2l6ZW9mIE1hcmtlZFNw
YWNlOjpTaXplQ2xhc3MKKyAgICAKKyAgICAjIEZJWE1FOiB3ZSBjYW4gZ2V0IHRoZSBnbG9iYWwg
ZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRoZSBzdGFjay4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgc2NyYXRjaDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVtzY3JhdGNoMV0s
IHNjcmF0Y2gxCisgICAgCisgICAgIyBHZXQgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3Qu
ICAgIAorICAgIGxvYWRwIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNs
YXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXSwgcmVzdWx0CisgICAgYnRweiByZXN1bHQsIHNs
b3dDYXNlCisgICAgCisgICAgIyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3Qu
CisgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gyLCBvZmZz
ZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtz
Y3JhdGNoMV0KKworICAgICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgorICAgIGxvYWRwIGNsYXNz
SW5mb09mZnNldFtzY3JhdGNoMV0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gyLCBbcmVz
dWx0XQorICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQor
ICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCisgICAgYWRkcCBz
aXplb2YgSlNPYmplY3QsIHJlc3VsdCwgc2NyYXRjaDEKKyAgICBzdG9yZXAgc2NyYXRjaDEsIEpT
T2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVtyZXN1bHRdCitlbmQKKworX2xsaW50X29wX2NyZWF0
ZV90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBh
c3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENl
bGxUYWcsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYmIg
U3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUs
IC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbdDBd
LCB0MgorICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgYWxsb2NhdGVCYXNpY0pT
T2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFs
T2JqZWN0Q2xhc3NJbmZvLCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCisgICAg
bG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4
XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNo
KDMpCisKKy5vcENyZWF0ZVRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9j
cmVhdGVfdGhpcykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9nZXRfY2FsbGVlOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkcCBQYXls
b2FkT2Zmc2V0ICsgQ2FsbGVlW2Nmcl0sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQor
ICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NvbnZlcnRfdGhpczoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MAorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwg
T2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNTbG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ29u
dmVydFRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jb252ZXJ0X3RoaXMp
CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X29iamVjdDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1f
ZW1wdHlPYmplY3RTdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChK
U0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENs
YXNzSW5mbywgdDEsIHQwLCB0MiwgdDMsIC5vcE5ld09iamVjdFNsb3cpCisgICAgbG9hZGkgNFtQ
Q10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5v
cE5ld09iamVjdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19vYmplY3Qp
CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X2FycmF5OgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2FycmF5KQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19hcnJheV9idWZmZXI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQor
ICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19yZWdleHA6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfcmVnZXhwKQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX21vdjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3Bfbm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQwLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5vcE5vdFNsb3cKKyAgICB4
b3JpIDEsIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BO
b3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ub3QpCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEy
W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkK
KyAgICBiaW5lcSB0MiwgdDMsIC5vcEVxU2xvdworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcEVx
U2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwg
dDIKKyAgICBjaWVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0
W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgZGlzcGF0Y2goNCkKKworLm9wRXFTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9lcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9lcV9udWxsOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAg
ICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0
MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQxCisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6
bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5vcEVxTnVs
bE5vdEltbWVkaWF0ZQorLm9wRXFOdWxsSW1tZWRpYXRlOgorICAgIGNpZXEgdDEsIE51bGxUYWcs
IHQyCisgICAgY2llcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIG9yaSB0MiwgdDEKKy5vcEVx
TnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2Nmciwg
dDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0
MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRh
ZywgLm9wTmVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFTbG93CisgICAgbG9h
ZGkgNFtQQ10sIHQyCisgICAgY2luZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BOZXFTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9uZXEpCisgICAgZGlzcGF0Y2goNCkKKyAgICAKKworX2xsaW50X29wX25l
cV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbEltbWVkaWF0ZQorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRieiBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQx
CisgICAgam1wIC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKKy5vcE5lcU51bGxJbW1lZGlhdGU6Cisg
ICAgY2luZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2luZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEK
KyAgICBhbmRpIHQyLCB0MQorLm9wTmVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9v
bGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBzdHJpY3RFcShlcXVh
bGl0eU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5z
bG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIENlbGxUYWcs
IC5ub3RTdHJpbmcKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1f
dHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZwor
ICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0
cmluZ1R5cGUsIC5zbG93Cisubm90U3RyaW5nOgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGVx
dWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDApCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09m
ZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4
XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAg
IGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50X29wX3N0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2llcSBsZWZ0
LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9zdHJpY3RlcSkKKworCitfbGxpbnRf
b3BfbnN0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAo
bGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGlu
dF9oZWxwZXJfbnN0cmljdGVxKQorCisKK19sbGludF9vcF9sZXNzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzcykKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2dyZWF0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcmVx
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3Jl
YXRlcmVxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3ByZV9pbmM6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZUluY1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJhZGRpbyAxLCB0MSwgLm9wUHJlSW5jU2xvdworICAg
IHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisK
Ky5vcFByZUluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3ByZV9pbmMpCisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJlX2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQxCisgICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNTbG93CisgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlRGVj
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2RlYykKKyAgICBkaXNwYXRj
aCgyKQorCisKK19sbGludF9vcF9wb3N0X2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdEluY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwg
Lm9wUG9zdEluY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0Mgor
ICAgIG1vdmUgdDIsIHQzCisgICAgYmFkZGlvIDEsIHQzLCAub3BQb3N0SW5jU2xvdworICAgIHN0
b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCisub3BQb3N0SW5jRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0SW5jU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9pbmMpCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfcG9zdF9kZWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3REZWNTbG93CisgICAgYmllcSB0MCwgdDEsIC5v
cFBvc3REZWNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAg
ICBtb3ZlIHQyLCB0MworICAgIGJzdWJpbyAxLCB0MywgLm9wUG9zdERlY1Nsb3cKKyAgICBzdG9y
ZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XQorLm9wUG9zdERlY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKworLm9wUG9zdERlY1Nsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfZGVjKQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX3RvX2pzbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmllcSB0MiwgSW50MzJUYWcsIC5vcFRvSnNudW1iZXJJ
c0ludAorICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BUb0pzbnVtYmVyU2xvdworLm9w
VG9Kc251bWJlcklzSW50OgorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykK
KworLm9wVG9Kc251bWJlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RvX2pz
bnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25lZ2F0ZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQorICAgIGJpbmVxIHQxLCBJbnQz
MlRhZywgLm9wTmVnYXRlU3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVn
YXRlU2xvdworICAgIG5lZ2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIs
IHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRp
c3BhdGNoKDMpCisub3BOZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5v
cE5lZ2F0ZVNsb3cKKyAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAgc3RvcmVpIHQxLCBUYWdP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Mywg
OF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOZWdhdGVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9uZWdhdGUpCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBiaW5hcnlPcEN1
c3RvbVN0b3JlKGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uLCBoZWxw
ZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAg
IGJpbmVxIHQzLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGxvYWRpIDRbUENdLCB0MgorICAg
IGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0MywgdDEsIHQwLCAuc2xvdywgdDIpCisgICAgZGlz
cGF0Y2goNSkKKworLm9wMU5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVs
eSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291bGQgYmUgYW55dGhpbmcuCisgICAg
YmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQzLCBMb3dlc3RUYWcsIC5vcDFOb3RJ
bnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MSwg
ZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBm
aWkyZCB0MSwgdDMsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGxvYWRpIDRbUENdLCB0MQor
ICAgIGZpaTJkIHQwLCB0MiwgZnQwCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAg
IHN0b3JlZCBmdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcDJOb3RJbnQ6
CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50LCB0aGUgc2Vjb25kIG9w
ZXJhbmQgaXMgZGVmaW5pdGVseSBub3QuCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgYmlhIHQz
LCBMb3dlc3RUYWcsIC5zbG93CisgICAgY2kyZCB0MCwgZnQwCisgICAgZmlpMmQgdDEsIHQzLCBm
dDEKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2Nmciwg
dDIsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIp
CisgICAgZGlzcGF0Y2goNSkKK2VuZAorCittYWNybyBiaW5hcnlPcChpbnRlZ2VyT3BlcmF0aW9u
LCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAg
ICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAg
ICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICBzdG9y
ZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVp
IHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAg
ICAgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCitlbmQKKworX2xsaW50X29wX2FkZDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgc2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9h
ZGQpCisKKworX2xsaW50X29wX211bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5
T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xv
dywgaW5kZXgpCisgICAgICAgICAgICBjb25zdCBzY3JhdGNoID0gaW50MzJUYWcgICAjIFdlIGtu
b3cgdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIGludDMyVGFnIHJlZ2lzdGVyIHNpbmNlIGl0IGhhcyBh
IGNvbnN0YW50LgorICAgICAgICAgICAgbW92ZSByaWdodCwgc2NyYXRjaAorICAgICAgICAgICAg
Ym11bGlvIGxlZnQsIHNjcmF0Y2gsIHNsb3cKKyAgICAgICAgICAgIGJ0aW56IHNjcmF0Y2gsIC5k
b25lCisgICAgICAgICAgICBiaWx0IGxlZnQsIDAsIC5zbG93CisgICAgICAgICAgICBiaWx0IHJp
Z2h0LCAwLCAuc2xvdworICAgICAgICAuZG9uZToKKyAgICAgICAgICAgIHN0b3JlaSBJbnQzMlRh
ZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwg
UGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfbXVsKQorCisKK19sbGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJp
bmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCBy
aWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCBy
aWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfc3ViKQorCisKK19sbGludF9vcF9kaXY6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAg
IG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAg
Y2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQorICAgICAgICAgICAg
ZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdEludAorICAg
ICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAg
ICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAg
ICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6CisgICAgICAgICAgICBzdG9yZWQgZnQx
LCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCwKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9kaXYpCisKKworX2xsaW50X29wX21vZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK21h
Y3JvIGJpdE9wKG9wZXJhdGlvbiwgaGVscGVyLCBhZHZhbmNlKQorICAgIGxvYWRpIDEyW1BDXSwg
dDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBi
aW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdwor
ICAgIGxvYWRpIDRbUENdLCB0MgorICAgIG9wZXJhdGlvbih0MSwgdDAsIC5zbG93KQorICAgIHN0
b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKKworLnNsb3c6CisgICAgY2Fs
bEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKK2VuZAorCitfbGxpbnRfb3Bf
bHNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCBzbG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9sc2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX3JzaGlmdDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgc2xvdykgcnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
cnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF91cnNoaWZ0OgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQor
ICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKKyAgICAgICAgICAgIGJpbHQgcmlnaHQs
IDAsIHNsb3cKKyAgICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3Vyc2hpZnQsCisg
ICAgICAgIDQpCisKKworX2xsaW50X29wX2JpdGFuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5kaSBsZWZ0LCBy
aWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0YW5kLAorICAgICAgICA1KQorCisK
K19sbGludF9vcF9iaXR4b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAg
ICAgICBfbGxpbnRfaGVscGVyX2JpdHhvciwKKyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0
b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHNsb3cpIG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfYml0b3IsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG5vdDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGJpbmVxIHQyLCBJbnQzMlRh
ZywgLm9wQml0bm90U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAg
IGRpc3BhdGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2JpdG5vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVja19oYXNfaW5z
dGFuY2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9wQ2hlY2tIYXNJ
bnN0YW5jZVNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAg
YnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxl
bWVudHNIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBkaXNwYXRjaCgy
KQorCisub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfY2hlY2tfaGFzX2luc3RhbmNlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2lu
c3RhbmNlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFs
IGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisgICAgIyBGSVhN
RTogVGhpcyBzaG91bGQgYmUgZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDEsIHQwKQorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNl
LCAub3BJbnN0YW5jZW9mU2xvdworICAgIAorICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCisg
ICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6
bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5j
ZW9mU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgCisgICAgIyBS
ZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3ZlIDEsIHQw
Cisub3BJbnN0YW5jZW9mTG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwg
dDIKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0s
IHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRpbnogdDIsIC5v
cEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9mRG9uZToKKyAg
ICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wSW5zdGFu
Y2VvZlNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luc3RhbmNlb2YpCisgICAg
ZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9pc19udW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9pc19udW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNf
c3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX29iamVjdDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX29i
amVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19mdW5jdGlvbjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Z1bmN0aW9u
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2luOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
cmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcmVzb2x2ZV9za2lwKQorICAgIGRpc3BhdGNoKDUpCisKKworbWFjcm8gcmVzb2x2
ZUdsb2JhbChzaXplLCBzbG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAg
IyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgUHJvcGVy
dHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAjIDEyW1BDXSAgU3Ry
dWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgor
ICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBi
eSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYnBuZXEgdDEsIDEyW1BDXSwgc2xvdworICAgIGxv
YWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBd
LCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkg
dDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XQorICAgIGxvYWRpIChzaXplIC0gMSkgKiA0W1BDXSwgdDAKKyAgICB2YWx1ZVBy
b2ZpbGUodDIsIHQzLCB0MCkKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWw6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIHJlc29sdmVHbG9iYWwoNiwgLm9wUmVzb2x2ZUdsb2JhbFNs
b3cpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbFNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3BhdGNoKDYpCisKKwor
IyBHaXZlcyB5b3UgdGhlIHNjb3BlIGluIHQwLCB3aGlsZSBhbGxvd2luZyB5b3UgdG8gb3B0aW9u
YWxseSBwZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9uIHRoZQorIyBzY29wZXMgYXMgdGhleSBh
cmUgdHJhdmVyc2VkLiBzY29wZUNoZWNrKCkgaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czog
dGhlIHJlZ2lzdGVyCisjIGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdpc3RlciB0aGF0IGNh
biBiZSB1c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAorIyB1c2UgdDMs
IHNvIHlvdSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJlLgorbWFjcm8gZ2V0U2NvcGUo
ZGVCcnVpamluSW5kZXhPcGVyYW5kLCBzY29wZUNoZWNrKQorICAgIGxvYWRwIFNjb3BlQ2hhaW4g
KyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgZGVCcnVpamluSW5kZXhPcGVyYW5k
LCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisgICAgCisgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQxCisgICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25D
b2RlLCAubG9vcAorICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFd
LCAubG9vcAorICAgIAorICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0aW9uUmVnaXN0ZXJb
dDFdLCB0MQorCisgICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29w
ZS4KKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0
aXZhdGlvbgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2Rl
OjpuZXh0W3QwXSwgdDAKKy5ub0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0MgorICAgIAorICAg
IGJ0aXogdDIsIC5kb25lCisubG9vcDoKKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2Fk
cCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisgICAgc3ViaSAxLCB0MgorICAgIGJ0aW56
IHQyLCAubG9vcAorCisuZG9uZToKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xv
YmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0aW9uU3RydWN0
dXJlW3QzXSwgdDMKKyAgICBnZXRTY29wZSgKKyAgICAgICAgMjBbUENdLAorICAgICAgICBtYWNy
byAoc2NvcGUsIHNjcmF0Y2gpCisgICAgICAgICAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2Jq
ZWN0W3Njb3BlXSwgc2NyYXRjaAorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVy
ZVtzY3JhdGNoXSwgdDMsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93CisgICAgICAg
IGVuZCkKKyAgICByZXNvbHZlR2xvYmFsKDcsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdykK
KyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCisgICAg
ZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERl
c3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgSW5kZXggb2YgcmVnaXN0ZXIg
aW4gdGhlIHNjb3BlLgorICAgICMgMTJbUENdICBEZSBCcnVpamluIGluZGV4LgorICAgIGdldFNj
b3BlKDEyW1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgNFtQQ10s
IHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVj
dFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0
MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbdDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4
XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDE2
W1BDXSwgdDEKKyAgICB2YWx1ZVByb2ZpbGUodDMsIHQwLCB0MSkKKyAgICBkaXNwYXRjaCg1KQor
CisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Z2V0U2NvcGUoOFtQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDEy
W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MywgdDIpCisgICAgbG9h
ZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQzLCB0MikKKyAgICBsb2FkcCBTY29wZUNo
YWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3Jl
Z2lzdGVyc1t0MF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbdDAsIHQxLCA4XQorICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAg
IGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFn
T2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhd
LCB0MQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIHZh
bHVlUHJvZmlsZSh0MiwgdDEsIHQzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1
dF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEK
KyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xv
YmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNb
dDBdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFn
T2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4
XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfYmFzZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfYmFzZSkK
KyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZW5zdXJl
X3Byb3BlcnR5X2V4aXN0cykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZl
X3dpdGhfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29w
X3Jlc29sdmVfd2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNSkKKworCitf
bGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIG9ubHkg
ZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBt
b2RpZnkgdGhlCisgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNh
Y2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorICAgICMgcGluZy1wb25naW5n
IGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29u
dGludWUKKyAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0
IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJl
ZW4gZG9pbmcgYW55d2F5LgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwg
dDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5v
cEdldEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6
bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSBU
YWdPZmZzZXRbdDAsIHQyXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQy
CisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAzMltQQ10sIHQxCisgICAgdmFsdWVQ
cm9maWxlKHQzLCB0MiwgdDEpCisgICAgZGlzcGF0Y2goOSkKKworLm9wR2V0QnlJZFNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9pZCkKKyAgICBkaXNwYXRjaCg5KQor
CisKK19sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudHNMZW5ndGhT
bG93CisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDIKKyAg
ICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0
KQorCisub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9wdXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0Mwor
ICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAg
ICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGJwbmVxIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBsb2FkaSAyMFtQ
Q10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQwLCB0MikKKyAgICB3
cml0ZUJhcnJpZXIodDAsIHQyKQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KKyAg
ICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQorICAgIGRpc3BhdGNoKDkpCisKKy5v
cFB1dEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaWQpCisg
ICAgZGlzcGF0Y2goOSkKKworCittYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hl
Y2tzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2Fk
aSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxU
YWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgYnBuZXEg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGFkZGl0aW9u
YWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisg
ICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBhZGRwIHQx
LCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCisgICAgd3Jp
dGVCYXJyaWVyKHQxLCB0MikKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICBsb2Fk
aSAyNFtQQ10sIHQxCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3Jl
cCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICBkaXNwYXRjaCg5KQorZW5kCisKK19s
bGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgcHV0QnlJZFRyYW5zaXRp
b24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorCisKK19sbGludF9v
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgcHV0QnlJZFRyYW5zaXRpb24oCisg
ICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCisgICAgICAgICAgICBj
b25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVy
ZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAgICAgIAorICAgICAgICAgICAgbG9hZHAgMjhb
UENdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNo
LCBvayBlbmQpCisgICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2Ny
YXRjaF0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0
Y2gsIG9rIGVuZCkKKyAgICAgICAgICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRh
Z09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorICAgICAgICAubG9vcDoKKyAg
ICAgICAgICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29s
ZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICAgICAgICAgIGJwbmVxIG9sZFN0cnVj
dHVyZSwgW3NjcmF0Y2hdLCBzbG93CisgICAgICAgICAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICAg
ICAgICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0
dXJlXSwgTnVsbFRhZywgLmxvb3AKKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCkKKworCitf
bGxpbnRfb3BfZGVsX2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfZGVsX2J5X2lkKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X2dldF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQxCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNsb3cpCisgICAgbG9h
ZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCisg
ICAgYnBuZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1f
c3RvcmFnZVt0MF0sIHQzCisgICAgYmlhZXEgdDEsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3Qw
XSwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgQXJyYXlT
dG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgIGxvYWRpIEFy
cmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisgICAg
YmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93CisgICAgc3RvcmVpIHQyLCBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgdmFsdWVQcm9maWxlKHQyLCB0MSwgdDAp
CisgICAgZGlzcGF0Y2goNSkKKworLm9wR2V0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2dl
dF9hcmd1bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEludDMyVGFnLCB0MiwgLm9wR2V0QXJndW1lbnRCeVZh
bFNsb3cpCisgICAgYWRkaSAxLCB0MgorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2Fk
T2Zmc2V0W2Nmcl0sIHQxCisgICAgYmlhZXEgdDIsIHQxLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xv
dworICAgIG5lZ2kgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUaGlzQXJndW1l
bnRPZmZzZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisgICAgbG9hZGkgVGhpc0FyZ3Vt
ZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEKKyAgICBzdG9yZWkgdDAs
IFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEFyZ3VtZW50QnlWYWxTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQwLCBDZWxsVGFnLCB0MSwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMTZbUENdLCB0
MAorICAgIGJwbmVxIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAub3BHZXRCeVBuYW1l
U2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMjBbUENd
LCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAsIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBs
b2FkaSAyNFtQQ10sIHQwCisgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAorICAgIHN1YmkgMSwg
dDAKKyAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFibGVT
bG90c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVy
dHlTdG9yYWdlW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQwLCA4XSwgdDEKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg3KQorCisub3BHZXRCeVBuYW1l
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3BuYW1lKQorICAgIGRp
c3BhdGNoKDcpCisKKworX2xsaW50X29wX3B1dF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBJbnQzMlRhZywgdDIsIC5vcFB1
dEJ5VmFsU2xvdykKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fZ2xvYmFsRGF0YVt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0Fy
cmF5Q2xhc3NJbmZvW3QwXSwgdDAKKyAgICBicG5lcSBbdDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93
CisgICAgYmlhZXEgdDIsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QxXSwgLm9wUHV0QnlWYWxT
bG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QxXSwgdDAKKyAgICBiaWVxIEFycmF5
U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywg
Lm9wUHV0QnlWYWxFbXB0eQorLm9wUHV0QnlWYWxTdG9yZVJlc3VsdDoKKyAgICBsb2FkaSAxMltQ
Q10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQxLCB0MykKKyAgICB3
cml0ZUJhcnJpZXIodDEsIHQzKQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3Rv
ciArIFRhZ09mZnNldFt0MCwgdDIsIDhdCisgICAgc3RvcmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1f
dmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9w
UHV0QnlWYWxFbXB0eToKKyAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZl
Y3Rvclt0MF0KKyAgICBiaWIgdDIsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdLCAub3BQdXRC
eVZhbFN0b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0MiwgdDEKKyAgICBzdG9yZWkgdDEsIEFycmF5
U3RvcmFnZTo6bV9sZW5ndGhbdDBdCisgICAgam1wIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQKKwor
Lm9wUHV0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfdmFs
KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2RlbF9ieV92YWw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWxfYnlfdmFsKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9pbmRleDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pbmRleCkKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2V0dGVyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2dldHRlcikKKyAgICBkaXNwYXRj
aCg0KQorCisKK19sbGludF9vcF9wdXRfc2V0dGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X3NldHRlcikKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9sb29wOgorICAgIG5vcAorX2xsaW50X29wX2ptcDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgZGlzcGF0Y2hCcmFuY2goNFtQQ10pCisKKworX2xsaW50X29wX2ptcF9z
Y29wZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9qbXBfc2NvcGVzKQorICAgIGRpc3BhdGNoKDApCisKKworbWFjcm8ganVtcFRydWVPckZhbHNl
KGNvbmRpdGlvbk9wLCBzbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQxLCBCb29sZWFuVGFnLCB0MCwgLnNsb3cpCisgICAgY29uZGl0
aW9uT3AodDAsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNw
YXRjaEJyYW5jaCg4W1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihzbG93KQorICAgIGRp
c3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfdHJ1ZToKKyAgICBub3AKK19sbGlu
dF9vcF9qdHJ1ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAganVtcFRydWVPckZhbHNlKAor
ICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpbnogdmFsdWUsIHRhcmdldCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfanRydWUpCisKKworX2xsaW50X29wX2xvb3BfaWZfZmFsc2U6
CisgICAgbm9wCitfbGxpbnRfb3BfamZhbHNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBq
dW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGl6IHZhbHVl
LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pmYWxzZSkKKworCittYWNybyBl
cXVhbE51bGwoY2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhbmRsZXIpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5pbW1lZGlh
dGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBjZWxsSGFuZGxl
cihTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0Ml0sIC50YXJnZXQp
CisgICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkK
KworLmltbWVkaWF0ZToKKyAgICBvcmkgMSwgdDEKKyAgICBpbW1lZGlhdGVIYW5kbGVyKHQxLCAu
dGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCitlbmQKKworX2xsaW50X29wX2plcV9udWxsOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwg
dGFyZ2V0KSBidGJueiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdl
dCBlbmQpCisgICAgCisKK19sbGludF9vcF9qbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0YnogdmFs
dWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2
YWx1ZSwgdGFyZ2V0KSBiaW5lcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKworCitfbGxp
bnRfb3Bfam5lcV9wdHI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
Q2VsbFRhZywgLm9wSm5lcVB0ckJyYW5jaAorICAgIGJwZXEgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XSwgdDEsIC5vcEpuZXFQdHJGYWxsVGhyb3VnaAorLm9wSm5lcVB0ckJyYW5jaDoKKyAgICBk
aXNwYXRjaEJyYW5jaCgxMltQQ10pCisub3BKbmVxUHRyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0
Y2goNCkKKworCittYWNybyBjb21wYXJlKGludGVnZXJDb21wYXJlLCBkb3VibGVDb21wYXJlLCBo
ZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDAsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnKHQzLCB0MiwgdDMpCisgICAgYmluZXEgdDAsIEludDMyVGFnLCAub3AxTm90SW50Cisg
ICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AyTm90SW50CisgICAgaW50ZWdlckNvbXBhcmUodDEs
IHQzLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisub3AxTm90SW50OgorICAgIGJp
YSB0MCwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3AxTm90SW50
T3AyRG91YmxlCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDMsIGZ0
MQorICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlp
MmQgdDMsIHQyLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBmaWkyZCB0MSwgdDAsIGZ0MAor
ICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQp
CisKKy5vcDJOb3RJbnQ6CisgICAgY2kyZCB0MSwgZnQwCisgICAgYmlhIHQyLCBMb3dlc3RUYWcs
IC5zbG93CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQx
LCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisuanVtcFRhcmdldDoKKyAgICBkaXNw
YXRjaEJyYW5jaCgxMltQQ10pCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAg
IGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfbGVzczoKKyAgICBub3AKK19s
bGludF9vcF9qbGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0IGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2psZXNzKQorCisKK19sbGludF9v
cF9qbmxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXF1biBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmxlc3MpCisKKworX2xsaW50
X29wX2xvb3BfaWZfZ3JlYXRlcjoKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2pncmVhdGVyKQorCisKK19sbGludF9vcF9qbmdyZWF0ZXI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXIpCisKKworX2xsaW50X29wX2xvb3BfaWZf
bGVzc2VxOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0
ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
dGFyZ2V0KSBiZGx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfamxlc3NlcSkKKworCitfbGxpbnRfb3Bfam5sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
aWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHRhcmdldCkgYmRndHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRf
aGVscGVyX2pubGVzc2VxKQorCisKK19sbGludF9vcF9sb29wX2lmX2dyZWF0ZXJlcToKKyAgICBu
b3AKK19sbGludF9vcF9qZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21w
YXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJp
Z2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRn
dGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVh
dGVyZXEpCisKKworX2xsaW50X29wX2puZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBs
ZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJkbHR1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl9qbmdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3BfbG9vcF9oaW50OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgZGlzcGF0Y2goMSkKKwor
CitfbGxpbnRfb3Bfc3dpdGNoX2ltbToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
MTJbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDIsIHQxLCB0MCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBU
YWJsZSwgdDMgICAjIEZJWE1FOiB3b3VsZCBiZSBuaWNlIHRvIHBlZXBob2xlIHRoaXMhCisgICAg
bG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzICsg
VmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVxIHQx
LCBJbnQzMlRhZywgLm9wU3dpdGNoSW1tTm90SW50CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6
Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0
cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGxv
YWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0
Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgNF0sIHQxCisgICAgYnRpeiB0MSwgLm9wU3dpdGNo
SW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCisKKy5vcFN3
aXRjaEltbU5vdEludDoKKyAgICBiaWIgdDEsIExvd2VzdFRhZywgLm9wU3dpdGNoSW1tU2xvdyAg
IyBHbyB0byBzbG93IHBhdGggaWYgaXQncyBhIGRvdWJsZS4KKy5vcFN3aXRjaEltbUZhbGxUaHJv
dWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisub3BTd2l0Y2hJbW1TbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfaW1tKQorICAgIGRpc3BhdGNoKDApCisK
KworX2xsaW50X29wX3N3aXRjaF9jaGFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSAxMltQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZSh0MiwgdDEsIHQwKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRw
IENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVt
cFRhYmxlLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fY2hhcmFjdGVyU3dp
dGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgYWRkcCB0Mywg
dDIKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYmJuZXEgU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENo
YXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTU3RyaW5nOjptX3ZhbHVlW3QwXSwgdDAKKyAgICBi
aW5lcSBTdHJpbmdJbXBsOjptX2xlbmd0aFt0MF0sIDEsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3Vn
aAorICAgIGxvYWRwIFN0cmluZ0ltcGw6Om1fZGF0YThbdDBdLCB0MQorICAgIGJ0aW56IFN0cmlu
Z0ltcGw6Om1faGFzaEFuZEZsYWdzW3QwXSwgSGFzaEZsYWdzOEJpdEJ1ZmZlciwgLm9wU3dpdGNo
Q2hhcjhCaXQKKyAgICBsb2FkaCBbdDFdLCB0MAorICAgIGptcCAub3BTd2l0Y2hDaGFyUmVhZHkK
Ky5vcFN3aXRjaENoYXI4Qml0OgorICAgIGxvYWRiIFt0MV0sIHQwCisub3BTd2l0Y2hDaGFyUmVh
ZHk6CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAs
IFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAu
b3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5j
aE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGxvYWRpIFt0MiwgdDAs
IDRdLCB0MQorICAgIGJ0aXogdDEsIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0
Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQorCisub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2g6CisgICAg
ZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKworX2xsaW50X29wX3N3aXRjaF9zdHJpbmc6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfc3Ry
aW5nKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX25ld19mdW5jOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBidGl6IDEyW1BDXSwgLm9wTmV3RnVuY1VuY2hlY2tlZAorICAgIGxv
YWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1
ZVRhZywgLm9wTmV3RnVuY0RvbmUKKy5vcE5ld0Z1bmNVbmNoZWNrZWQ6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX25ld19mdW5jKQorLm9wTmV3RnVuY0RvbmU6CisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDMp
CisKKworbWFjcm8gZG9DYWxsKGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2Fk
aSAxNltQQ10sIHQxCisgICAgbG9hZHAgTExJbnRDYWxsTGlua0luZm86OmNhbGxlZVt0MV0sIHQy
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BD
YWxsU2xvdykKKyAgICBiaW5lcSB0MywgdDIsIC5vcENhbGxTbG93CisgICAgbG9hZGkgMTJbUENd
LCB0MworICAgIGFkZHAgMjQsIFBDCisgICAgbHNoaWZ0aSAzLCB0MworICAgIGFkZHAgY2ZyLCB0
MyAgIyB0MyBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9mIGNmcgorICAgIGxvYWRwIEpTRnVuY3Rp
b246Om1fc2NvcGVDaGFpblt0Ml0sIHQwCisgICAgc3RvcmVpIHQyLCBDYWxsZWUgKyBQYXlsb2Fk
T2Zmc2V0W3QzXQorICAgIHN0b3JlaSB0MCwgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZzZXRbdDNd
CisgICAgbG9hZGkgOCAtIDI0W1BDXSwgdDIKKyAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQg
KyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlcCBjZnIsIENhbGxlckZyYW1lW3QzXQorICAgIHN0
b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIENl
bGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVD
aGFpbiArIFRhZ09mZnNldFt0M10KKyAgICBtb3ZlIHQzLCBjZnIKKyAgICBjYWxsIExMSW50Q2Fs
bExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0KKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgp
CisKKy5vcENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBoZWxwZXIpCitlbmQKKwor
X2xsaW50X29wX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRf
aGVscGVyX2NhbGwpCisKKworX2xsaW50X29wX2NvbnN0cnVjdDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY29uc3RydWN0KQorCisKK19sbGludF9vcF9j
YWxsX3ZhcmFyZ3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHNsb3dQYXRoRm9yQ2FsbCg2
LCBfbGxpbnRfaGVscGVyX2NhbGxfdmFyYXJncykKKworCitfbGxpbnRfb3BfY2FsbF9ldmFsOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAKKyAgICAjIEV2YWwgaXMgZXhlY3V0ZWQgaW4gb25l
IG9mIHR3byBtb2RlczoKKyAgICAjCisgICAgIyAxKSBXZSBmaW5kIHRoYXQgd2UncmUgcmVhbGx5
IGludm9raW5nIGV2YWwoKSBpbiB3aGljaCBjYXNlIHRoZQorICAgICMgICAgZXhlY3V0aW9uIGlz
IHBlcmZvbWVkIGVudGlyZWx5IGluc2lkZSB0aGUgaGVscGVyLCBhbmQgaXQKKyAgICAjICAgIHJl
dHVybnMgdGhlIFBDIG9mIGEgZnVuY3Rpb24gdGhhdCBqdXN0IHJldHVybnMgdGhlIHJldHVybiB2
YWx1ZQorICAgICMgICAgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAjCisgICAgIyAyKSBX
ZSBmaW5kIHRoYXQgd2UncmUgaW52b2tpbmcgc29tZXRoaW5nIGNhbGxlZCBldmFsKCkgdGhhdCBp
cyBub3QKKyAgICAjICAgIHRoZSByZWFsIGV2YWwuIFRoZW4gdGhlIGhlbHBlciByZXR1cm5zIHRo
ZSBQQyBvZiB0aGUgdGhpbmcgdG8KKyAgICAjICAgIGNhbGwsIGFuZCB3ZSBjYWxsIGl0LgorICAg
ICMKKyAgICAjIFRoaXMgYWxsb3dzIHVzIHRvIGhhbmRsZSB0d28gY2FzZXMsIHdoaWNoIHdvdWxk
IHJlcXVpcmUgYSB0b3RhbCBvZgorICAgICMgdXAgdG8gZm91ciBwaWVjZXMgb2Ygc3RhdGUgdGhh
dCBjYW5ub3QgYmUgZWFzaWx5IHBhY2tlZCBpbnRvIHR3bworICAgICMgcmVnaXN0ZXJzIChDIGZ1
bmN0aW9ucyBjYW4gcmV0dXJuIHVwIHRvIHR3byByZWdpc3RlcnMsIGVhc2lseSk6CisgICAgIwor
ICAgICMgLSBUaGUgY2FsbCBmcmFtZSByZWdpc3Rlci4gVGhpcyBtYXkgb3IgbWF5IG5vdCBoYXZl
IGJlZW4gbW9kaWZpZWQKKyAgICAjICAgYnkgdGhlIGhlbHBlciwgYnV0IHRoZSBjb252ZW50aW9u
IGlzIHRoYXQgaXQgcmV0dXJucyBpdC4gSXQncyBub3QKKyAgICAjICAgdG90YWxseSBjbGVhciBp
ZiB0aGF0J3MgbmVjZXNzYXJ5LCBzaW5jZSB0aGUgY2ZyIGlzIGNhbGxlZSBzYXZlLgorICAgICMg
ICBCdXQgdGhhdCdzIG91ciBzdHlsZSBpbiB0aGlzIGhlcmUgaW50ZXJwcmV0ZXIgc28gd2Ugc3Rp
Y2sgd2l0aCBpdC4KKyAgICAjCisgICAgIyAtIEEgYml0IHRvIHNheSBpZiB0aGUgaGVscGVyIHN1
Y2Nlc3NmdWxseSBleGVjdXRlZCB0aGUgZXZhbCBhbmQgaGFzCisgICAgIyAgIHRoZSByZXR1cm4g
dmFsdWUsIG9yIGRpZCBub3QgZXhlY3V0ZSB0aGUgZXZhbCBidXQgaGFzIGEgUEMgZm9yIHVzCisg
ICAgIyAgIHRvIGNhbGwuCisgICAgIworICAgICMgLSBFaXRoZXI6CisgICAgIyAgIC0gVGhlIEpT
IHJldHVybiB2YWx1ZSAodHdvIHJlZ2lzdGVycyksIG9yCisgICAgIworICAgICMgICAtIFRoZSBQ
QyB0byBjYWxsLgorICAgICMKKyAgICAjIEl0IHR1cm5zIG91dCB0byBiZSBlYXNpZXIgdG8ganVz
dCBhbHdheXMgaGF2ZSB0aGlzIHJldHVybiB0aGUgY2ZyCisgICAgIyBhbmQgYSBQQyB0byBjYWxs
LCBhbmQgdGhhdCBQQyBtYXkgYmUgYSBkdW1teSB0aHVuayB0aGF0IGp1c3QKKyAgICAjIHJldHVy
bnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAgCisgICAgc2xvd1Bh
dGhGb3JDYWxsKDQsIF9sbGludF9oZWxwZXJfY2FsbF9ldmFsKQorCisKK19sbGludF9nZW5lcmlj
X3JldHVybl9wb2ludDoKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKworX2xsaW50X29wX3Rl
YXJfb2ZmX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENd
LCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkCisgICAgYmllcSBU
YWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9u
Tm90Q3JlYXRlZAorLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkOgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQorLm9wVGVhck9mZkFjdGl2YXRpb25O
b3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3RlYXJfb2ZmX2FyZ3Vt
ZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3Vi
aSAxLCB0MCAgICMgR2V0IHRoZSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIKKyAgICBiaWVx
IFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFyZ3VtZW50
c05vdENyZWF0ZWQKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGVhcl9vZmZfYXJndW1l
bnRzKQorLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMikKKwor
CittYWNybyBkb1JldHVybigpCisgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICBsb2Fk
cCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKKyAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJl
dHVybih0MikKKyAgICByZXQKK2VuZAorCitfbGxpbnRfb3BfcmV0OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENd
LCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVy
bigpCisKKworX2xsaW50X29wX2NhbGxfcHV0X3Jlc3VsdDoKKyAgICBsb2FkaSA0W1BDXSwgdDIK
KyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4
XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHZhbHVlUHJv
ZmlsZSh0MSwgdDAsIHQzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkgIyBOZWVkcyB0byBiZSBoZXJl
IGJlY2F1c2UgaXQgd291bGQgY2xvYmJlciB0MSwgdDAKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9yZXRfb2JqZWN0X29yX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNo
ZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
b3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlw
ZVt0Ml0sIE9iamVjdFR5cGUsIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAorICAgIGRvUmV0
dXJuKCkKKworLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0OgorICAgIGxvYWRpIDhbUENdLCB0
MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigp
CisKKworX2xsaW50X29wX21ldGhvZF9jaGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
IyBXZSBpZ25vcmUgbWV0aG9kIGNoZWNrcyBhbmQgdXNlIG5vcm1hbCBnZXRfYnlfaWQgb3B0aW1p
emF0aW9ucy4KKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zdHJjYXQ6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zdHJjYXQpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5v
cFRvUHJpbWl0aXZlSXNJbW0KKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIK
KyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwg
U3RyaW5nVHlwZSwgLm9wVG9QcmltaXRpdmVTbG93Q2FzZQorLm9wVG9QcmltaXRpdmVJc0ltbToK
KyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvUHJpbWl0aXZl
U2xvd0Nhc2U6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RvX3ByaW1pdGl2ZSkKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9nZXRfcG5hbWVzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X3BuYW1lcykKKyAgICBkaXNw
YXRjaCgwKSAjIFRoZSBoZWxwZXIgZWl0aGVyIGFkdmFuY2VzIHRoZSBQQyBvciBqdW1wcyB1cyB0
byBzb21ld2hlcmUgZWxzZS4KKworCitfbGxpbnRfb3BfbmV4dF9wbmFtZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRpIDE2W1BDXSwgdDIKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MAorICAgIGJpZXEgdDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0sIC5vcE5leHRQbmFtZUVuZAorICAgIGxvYWRpIDIwW1BDXSwg
dDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MgorICAgIGxvYWRwIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fanNTdHJpbmdzW3QyXSwgdDMKKyAgICBsb2FkaSBbdDMs
IHQwLCA4XSwgdDMKKyAgICBhZGRpIDEsIHQwCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRh
Z09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XQorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MywgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgYnBu
ZXEgdDEsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9w
TmV4dFBuYW1lU2xvdworICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVk
UHJvdG90eXBlQ2hhaW5bdDJdLCB0MAorICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rv
clt0MF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BOZXh0UG5hbWVUYXJnZXQKKy5vcE5leHRQbmFt
ZUNoZWNrUHJvdG90eXBlTG9vcDoKKyAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBU
YWdPZmZzZXRbdDFdLCBOdWxsVGFnLCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgU3RydWN0
dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDFdLCB0MgorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MQorICAgIGJwbmVxIHQxLCBbdDBdLCAub3BOZXh0UG5hbWVT
bG93CisgICAgYWRkcCA0LCB0MAorICAgIGJ0cG56IFt0MF0sIC5vcE5leHRQbmFtZUNoZWNrUHJv
dG90eXBlTG9vcAorLm9wTmV4dFBuYW1lVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDI0W1BD
XSkKKworLm9wTmV4dFBuYW1lRW5kOgorICAgIGRpc3BhdGNoKDcpCisKKy5vcE5leHRQbmFtZVNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25leHRfcG5hbWUpICMgVGhpcyBlaXRo
ZXIga2VlcHMgdGhlIFBDIHdoZXJlIGl0IHdhcyAoY2F1c2luZyB1cyB0byBsb29wKSBvciBzZXRz
IGl0IHRvIHRhcmdldC4KKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9wdXNoX3Njb3Bl
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVz
aF9zY29wZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3Bfc2NvcGU6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3Bfc2NvcGUp
CisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfcHVzaF9uZXdfc2NvcGU6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX25ld19zY29w
ZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9jYXRjaDoKKyAgICAjIFRoaXMgaXMg
d2hlcmUgd2UgZW5kIHVwIGZyb20gdGhlIEpJVCdzIHRocm93IHRyYW1wb2xpbmUgKGJlY2F1c2Ug
dGhlCisgICAgIyBtYWNoaW5lIGNvZGUgcmV0dXJuIGFkZHJlc3Mgd2lsbCBiZSBzZXQgdG8gX2xs
aW50X29wX2NhdGNoKSwgYW5kIGZyb20KKyAgICAjIHRoZSBpbnRlcnByZXRlcidzIHRocm93IHRy
YW1wb2xpbmUgKHNlZSBfbGxpbnRfdGhyb3dfdHJhbXBvbGluZSkuCisgICAgIyBUaGUgSklUIHRo
cm93aW5nIHByb3RvY29sIGNhbGxzIGZvciB0aGUgY2ZyIHRvIGJlIGluIHQwLiBUaGUgdGhyb3dp
bmcKKyAgICAjIGNvZGUgbXVzdCBoYXZlIGtub3duIHRoYXQgd2Ugd2VyZSB0aHJvd2luZyB0byB0
aGUgaW50ZXJwcmV0ZXIsIGFuZCBoYXZlCisgICAgIyBzZXQgSlNHbG9iYWxEYXRhOjp0YXJnZXRJ
bnRlcnByZXRlclBDRm9yVGhyb3cuCisgICAgbW92ZSB0MCwgY2ZyCisgICAgbG9hZHAgSklUU3Rh
Y2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjp0YXJn
ZXRJbnRlcnByZXRlclBDRm9yVGhyb3dbdDNdLCBQQworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6
ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10sIHQwCisgICAgbG9hZGkgSlNHbG9iYWxEYXRh
OjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdLCB0MQorICAgIHN0b3JlaSAwLCBKU0dsb2JhbERh
dGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIEVtcHR5VmFsdWVU
YWcsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSAgICAgICAKKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0K
KyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHRyYWNlRXhlY3V0aW9u
KCkgICMgVGhpcyBuZWVkcyB0byBiZSBoZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjbG9i
YmVyIHQwLCB0MSwgdDIsIHQzIGFib3ZlLgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29w
X3Rocm93OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfdGhyb3cpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3dfcmVmZXJlbmNl
X2Vycm9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29w
X2pzcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYWRk
aSAzICogNCwgUEMsIHQxCisgICAgc3RvcmVpIHQxLCBbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRj
aEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3JldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZHAgW2NmciwgdDAsIDhdLCBQQworICAgIGRp
c3BhdGNoKDApCisKKworX2xsaW50X29wX2RlYnVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVidWcpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfcHJvZmlsZV93aWxsX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIHQwCisgICAg
YnRweiBbdDBdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQorLm9wUHJvZmlsZVdpbGxDYWxsRG9uZToKKyAgICBk
aXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wcm9maWxlX2RpZF9jYWxsOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjplbmFibGVkUHJvZmlsZXJSZWZlcmVu
Y2Vbc3BdLCB0MAorICAgIGJ0cHogW3QwXSwgLm9wUHJvZmlsZVdpbGxDYWxsRG9uZQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQorLm9wUHJvZmlsZURpZENh
bGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2VuZDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50
X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmU6CisgICAgIyBXaGVuIHRocm93aW5nIGZyb20g
dGhlIGludGVycHJldGVyIChpLmUuIHRocm93aW5nIGZyb20gTExJbnRIZWxwZXJzKSwgc28KKyAg
ICAjIHRoZSB0aHJvdyB0YXJnZXQgaXMgbm90IG5lY2Vzc2FyaWx5IGludGVycHJldGVkIGNvZGUs
IHdlIGNvbWUgdG8gaGVyZS4KKyAgICAjIFRoaXMgZXNzZW50aWFsbHkgZW11bGF0ZXMgdGhlIEpJ
VCdzIHRocm93aW5nIHByb3RvY29sLgorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERh
dGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFd
LCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQor
CisKK19sbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lOgorICAgIHByZXNlcnZlUmV0
dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxE
YXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3Qx
XSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0K
KworCisjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2Ug
ZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KKyMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIg
YXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQKKyMgYXMgbXVj
aC4KKworbWFjcm8gbm90U3VwcG9ydGVkKCkKKyAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgICAg
ICBjcmFzaCgpCisgICAgZWxzZQorICAgICAgICAjIFdlIHNob3VsZCB1c2Ugd2hhdGV2ZXIgdGhl
IHNtYWxsZXN0IHBvc3NpYmxlIGluc3RydWN0aW9uIGlzLCBqdXN0IHRvCisgICAgICAgICMgZW5z
dXJlIHRoYXQgdGhlcmUgaXMgYSBnYXAgYmV0d2VlbiBpbnN0cnVjdGlvbiBsYWJlbHMuIElmIG11
bHRpcGxlCisgICAgICAgICMgc21hbGxlc3QgaW5zdHJ1Y3Rpb25zIGV4aXN0LCB3ZSBzaG91bGQg
cGljayB0aGUgb25lIHRoYXQgaXMgbW9zdAorICAgICAgICAjIGxpa2VseSByZXN1bHQgaW4gZXhl
Y3V0aW9uIGJlaW5nIGhhbHRlZC4gQ3VycmVudGx5IHRoYXQgaXMgdGhlIGJyZWFrCisgICAgICAg
ICMgaW5zdHJ1Y3Rpb24gb24gYWxsIGFyY2hpdGVjdHVyZXMgd2UncmUgaW50ZXJlc3RlZCBpbi4g
KEJyZWFrIGlzIGludDMKKyAgICAgICAgIyBvbiBJbnRlbCwgd2hpY2ggaXMgMSBieXRlLCBhbmQg
YmtwdCBvbiBBUk12Nywgd2hpY2ggaXMgMiBieXRlcy4pCisgICAgICAgIGJyZWFrCisgICAgZW5k
CitlbmQKKworX2xsaW50X29wX2dldF9hcnJheV9sZW5ndGg6CisgICAgbm90U3VwcG9ydGVkKCkK
KworX2xsaW50X29wX2dldF9ieV9pZF9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxp
bnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxp
bnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxp
bnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGlu
dF9vcF9nZXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2dldHRlcl9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2dldHRlcl9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2dldHRlcl9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9n
ZXRfYnlfaWRfcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9p
ZF9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfc3RyaW5nX2xlbmd0
aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX2dlbmVyaWM6Cisg
ICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9yZXBsYWNlOgorICAgIG5v
dFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbjoKKyAgICBub3RT
dXBwb3J0ZWQoKQorCisKKyMgSW5kaWNhdGUgdGhlIGVuZCBvZiBMTEludC4KK19sbGludF9lbmQ6
CisgICAgY3Jhc2goKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgi
CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcu
aCIKKworI2luY2x1ZGUgIkxMSW50QXNzZW1ibHkuaCIKKworI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMb3dMZXZl
bEludGVycHJldGVyX2gKKyNkZWZpbmUgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisKKyNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIk9wY29k
ZS5oIgorCisjZGVmaW5lIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wob3Bjb2RlLCBsZW5ndGgpIGV4
dGVybiAiQyIgdm9pZCBsbGludF8jI29wY29kZSgpOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChM
TElOVF9JTlNUUlVDVElPTl9ERUNMKTsKKyN1bmRlZiBMTElOVF9JTlNUUlVDVElPTl9ERUNMCisK
K2V4dGVybiAiQyIgdm9pZCBsbGludF9iZWdpbigpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Vu
ZCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUoKTsKK2V4dGVybiAi
QyIgdm9pZCBsbGludF9ldmFsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZ2Vu
ZXJpY19yZXR1cm5fcG9pbnQoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19mcm9tX2hl
bHBlcl90cmFtcG9saW5lKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZHVyaW5nX2Nh
bGxfdHJhbXBvbGluZSgpOworCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8g
TG93TGV2ZWxJbnRlcnByZXRlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9hcm12Ny5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2FybXY3LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MyBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVyCisgIGRl
ZiBpbml0aWFsaXplKG5hbWUpCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFy
bVY3T3BlcmFuZAorICAgIEBuYW1lCisgIGVuZAorZW5kCisKK0FSTXY3X0RBVEFfUkVHID0gU3Bl
Y2lhbFJlZ2lzdGVyLm5ldygiaXAiKQorQVJNdjdfQUREUl9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIu
bmV3KCJyMyIpCisKK2RlZiBtb3ZlSW1tZWRpYXRlKHZhbHVlLCByZWdpc3RlcikKKyAgIyBDdXJy
ZW50bHkgd2Ugb25seSBoYW5kbGUgdGhlIHNpbXBsZSBjYXNlcywgYW5kIGZhbGwgYmFjayB0byBt
b3YvbW92dCBmb3IgdGhlIGNvbXBsZXggb25lcy4KKyAgaWYgdmFsdWUgPj0gMCAmJiB2YWx1ZSA8
IDI1NgorICAgICRhc20ucHV0cyAibW92dyBcIyN7dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3Bl
cmFuZH0iCisgIGVsc2lmICh+dmFsdWUpID49IDAgJiYgKH52YWx1ZSkgPCAyNTYKKyAgICAkYXNt
LnB1dHMgIm12bncgXCMje352YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxz
ZQorICAgICRhc20ucHV0cyAibW92dyBcIyN7dmFsdWUgJiAweGZmZmZ9LCAje3JlZ2lzdGVyLmFy
bVY3T3BlcmFuZH0iCisgICAgaWYgKHZhbHVlICYgMHhmZmZmMDAwMCkgIT0gMAorICAgICAgJGFz
bS5wdXRzICJtb3Z0IFwjI3t2YWx1ZSA+PiAxNn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIK
KyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVy
YW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiCisgICAgICAicjAi
CisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAgICAicjEiCisgICAgd2hlbiAidDIiLCAi
YTIiCisgICAgICAicjIiCisgICAgd2hlbiAiYTMiCisgICAgICAicjMiCisgICAgd2hlbiAidDMi
CisgICAgICAicjQiCisgICAgd2hlbiAidDQiCisgICAgICAicjciCisgICAgd2hlbiAiY2ZyIgor
ICAgICAgInI1IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBh
cm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisg
IGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBG
UFJlZ2lzdGVySUQKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4g
ImZ0MCIsICJmciIKKyAgICAgICJkMCIKKyAgICB3aGVuICJmcjEiLAorICAgICAgImQxIgorICAg
IHdoZW4gImZyMiIKKyAgICAgICJkMiIKKyAgICB3aGVuICJmcjMiCisgICAgICAiZDMiCisgICAg
d2hlbiAiZnI0IgorICAgICAgImQ0IgorICAgIHdoZW4gImZyNSIKKyAgICAgICJkNSIKKyAgICBl
bHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQ
b3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9y
eU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3Rv
cmVXcmFwCisgICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAg
ZGVmIGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJJbnZhbGlkIGltbWVkaWF0ZSAje3ZhbHVlfSIg
aWYgdmFsdWUgPCAwIG9yIHZhbHVlID4gMjU1CisgICAgIiMke3ZhbHVlfSIKKyAgZW5kCisgIAor
ICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVm
IGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAK
KyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkIHNlbGYKKyAgZW5kCitlbmQKKwor
bW9kdWxlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisg
ICAgc2VsZi5hcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICAkYXNtLnB1dHMg
Ilx0bGRyICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFuZH0sICN7QVJNdjdfREFUQV9S
RUcuYXJtVjdPcGVyYW5kfSIKKyAgICB5aWVsZCBBUk12N19EQVRBX1JFRworICAgICRhc20ucHV0
cyAiXHRzdHIgI3tBUk12N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9LCAje3NlbGYuYXJtVjdQb3Nz
aWJseU1lbW9yeU9wZXJhbmR9IgorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGluY2x1
ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVt
b3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+
IDB4ZmZmCisgICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1ZSwgQVJNdjdfQUREUl9SRUcp
CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisg
ICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAg
ICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfV0i
CisgICAgZWxzZQorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tvZmZzZXQuYXJtVjdP
cGVyYW5kfV0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBpbmNs
dWRlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1l
bW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAgICAgbW92ZUltbWVkaWF0
ZShvZmZzZXQudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICAgICAgJGFzbS5wdXRzICJhZGR3ICN7
QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfSwgI3tiYXNlLmFybVY3T3BlcmFuZH0iCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYg
b2Zmc2V0LnZhbHVlICE9IDAKKyAgICAgICJbI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9
LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGV9XSIKKyAgICBlbHNlCisgICAg
ICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7
c2NhbGV9XSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisg
IGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9z
c2libGVNZW1vcnlPcGVyYW5kCisgICAgbW92ZUltbWVkaWF0ZShhZGRyZXNzLnZhbHVlLCBBUk12
N19BRERSX1JFRykKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQK
KyAgICAiWyN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfV0iCisgIGVuZAorZW5kCisKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxMDggQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCity
ZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAib2Zmc2V0
cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNm
b3JtIgorCitjbGFzcyBBc3NlbWJsZXIKKyAgZGVmIGluaXRpYWxpemUob3V0cCkKKyAgICBAb3V0
cCA9IG91dHAKKyAgICBAc3RhdGUgPSA6Y3BwCisgIGVuZAorICAKKyAgZGVmIGVudGVyQXNtCisg
ICAgQG91dHAucHV0cyAiYXNtICgiCisgICAgQHN0YXRlID0gOmFzbQorICBlbmQKKyAgCisgIGRl
ZiBsZWF2ZUFzbQorICAgIEBvdXRwLnB1dHMgIik7IgorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5k
CisgIAorICBkZWYgaW5Bc20KKyAgICBlbnRlckFzbQorICAgIHlpZWxkCisgICAgbGVhdmVBc20K
KyAgZW5kCisgIAorICBkZWYgcHV0cyhsaW5lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0g
OmFzbQorICAgIEBvdXRwLnB1dHMoKGxpbmUgKyAiXG4iKS5pbnNwZWN0KQorICBlbmQKKyAgCisg
IGRlZiBjb21tZW50KHRleHQpCisgICAgQG91dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgZW5kCitl
bmQKKworYXNtRmlsZSA9IEFSR1Yuc2hpZnQKK29mZnNldHNGaWxlID0gQVJHVi5zaGlmdAorb3V0
cHV0RmxubSA9IEFSR1Yuc2hpZnQKKworb2Zmc2V0c0xpc3QsIGNvbmZpZ0luZGV4ID0gb2Zmc2V0
c0FuZENvbmZpZ3VyYXRpb25JbmRleChvZmZzZXRzRmlsZSkKK2lucHV0RGF0YSA9IElPOjpyZWFk
KGFzbUZpbGUpCisKK2lucHV0SGFzaCA9CisgICIvLyBvZmZsaW5lYXNtIGlucHV0IGhhc2g6ICIg
KyBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0YSkgKworICAiICIgKyBEaWdlc3Q6OlNI
QTEuaGV4ZGlnZXN0KChvZmZzZXRzTGlzdCArIFtjb25maWdJbmRleF0pLmpvaW4oJyAnKSkKKwor
aWYgRmlsZVRlc3QuZXhpc3Q/IG91dHB1dEZsbm0KKyAgRmlsZS5vcGVuKG91dHB1dEZsbm0sICJy
IikgeworICAgIHwgaW5wIHwKKyAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAgIGlmIGZpcnN0
TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09IGlucHV0SGFzaAorICAgICAgJHN0ZGVyci5wdXRz
ICJOb3RoaW5nIGNoYW5nZWQuIgorICAgICAgZXhpdCAwCisgICAgZW5kCisgIH0KK2VuZAorCitG
aWxlLm9wZW4ob3V0cHV0RmxubSwgInciKSB7CisgIHwgb3V0cCB8CisgICRvdXRwdXQgPSBvdXRw
CisgICRvdXRwdXQucHV0cyBpbnB1dEhhc2gKKyAgCisgICRhc20gPSBBc3NlbWJsZXIubmV3KCRv
dXRwdXQpCisgIAorICBhc3QgPSBwYXJzZShsZXgoaW5wdXREYXRhKSkKKyAgCisgIGZvclNldHRp
bmdzKGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpW2NvbmZpZ0luZGV4XSwgYXN0KSB7
CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgYXNz
ZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICAgIGxvd0xldmVsQVNUID0gbG93
TGV2ZWxBU1QucmVzb2x2ZSgqYnVpbGRPZmZzZXRzTWFwKGxvd0xldmVsQVNULCBvZmZzZXRzTGlz
dCkpCisgICAgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgbG93TGV2
ZWxBU1QsIGJhY2tlbmQpIHsKKyAgICAgICRhc20uaW5Bc20geworICAgICAgICBsb3dMZXZlbEFT
VC5sb3dlcihiYWNrZW5kKQorICAgICAgfQorICAgIH0KKyAgfQorfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MTcg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIEJhc2UgdXRpbGl0eSB0eXBlcyBmb3IgdGhlIEFTVC4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisKKyMgVmFsaWQgbWV0aG9kcyBmb3IgTm9kZToKKyMKKyMgbm9kZS5jaGls
ZHJlbiAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGltbWVkaWF0ZSBjaGlsZHJlbi4KKyMKKyMgbm9k
ZS5kZXNjZW5kZW50cyAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBzdHJpY3QgZGVzY2VuZGFu
dHMgKGNoaWxkcmVuCisjICAgICBhbmQgY2hpbGRyZW4gb2YgY2hpbGRyZW4sIHRyYW5zaXRpdmVs
eSkuCisjCisjIG5vZGUuZmxhdHRlbiAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhl
IHN0cmljdCBkZXNjZW5kYW50cyBhbmQKKyMgICAgIHRoZSBub2RlIGl0c2VsZi4KKyMKKyMgbm9k
ZS5maWx0ZXIodHlwZSkgLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRob3NlIGVsZW1l
bnRzIGluCisjICAgICBub2RlLmZsYXR0ZW4gdGhhdCBhcmUgb2YgdGhlIGdpdmVuIHR5cGUgKGlz
X2E/IHR5cGUgcmV0dXJucyB0cnVlKS4KKyMKKyMgbm9kZS5tYXBDaGlsZHJlbnt8dnwgLi4ufSAt
PiBSZXR1cm5zIGEgbmV3IG5vZGUgd2l0aCBhbGwgY2hpbGRyZW4KKyMgICAgIHJlcGxhY2VkIGFj
Y29yZGluZyB0byB0aGUgZ2l2ZW4gYmxvY2suCisjCisjIEV4YW1wbGVzOgorIworIyBub2RlLmZp
bHRlcihTZXR0aW5nKS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzZXR0aW5ncyB0aGF0IHRo
ZSBBU1QncworIyAgICAgSWZUaGVuRWxzZSBibG9ja3MgZGVwZW5kIG9uLgorIworIyBub2RlLmZp
bHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHN0cnVjdHVyZSBv
ZmZzZXRzCisjICAgICB0aGF0IHRoZSBBU1QgZGVwZW5kcyBvbi4KKworY2xhc3MgTm9kZQorICBh
dHRyX3JlYWRlciA6Y29kZU9yaWdpbgorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikK
KyAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgZW5kCisgIAorICBkZWYgY29kZU9yaWdp
blN0cmluZworICAgICJsaW5lIG51bWJlciAje0Bjb2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBk
ZWYgZGVzY2VuZGFudHMKKyAgICBjaGlsZHJlbi5jb2xsZWN0e3x2fCB2LmZsYXR0ZW59LmZsYXR0
ZW4KKyAgZW5kCisgIAorICBkZWYgZmxhdHRlbgorICAgIFtzZWxmXSArIGRlc2NlbmRhbnRzCisg
IGVuZAorICAKKyAgZGVmIGZpbHRlcih0eXBlKQorICAgIGZsYXR0ZW4uc2VsZWN0e3x2fCB2Lmlz
X2E/IHR5cGV9CisgIGVuZAorZW5kCisKK2NsYXNzIE5vQ2hpbGRyZW4gPCBOb2RlCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAor
ICBkZWYgY2hpbGRyZW4KKyAgICBbXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAg
IHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0S2V5CisgIGF0dHJfcmVhZGVy
IDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUoc3RydWN0LCBmaWVsZCkKKyAg
ICBAc3RydWN0ID0gc3RydWN0CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5kCisgIAorICBkZWYg
aGFzaAorICAgIEBzdHJ1Y3QuaGFzaCArIEBmaWVsZC5oYXNoICogMworICBlbmQKKyAgCisgIGRl
ZiBlcWw/KG90aGVyKQorICAgIEBzdHJ1Y3QgPT0gb3RoZXIuc3RydWN0IGFuZCBAZmllbGQgPT0g
b3RoZXIuZmllbGQKKyAgZW5kCitlbmQKKyAgICAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIEFTVCBub2Rlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
CisKK2NsYXNzIFN0cnVjdE9mZnNldCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVj
dCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxk
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVs
ZCA9IGZpZWxkCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZv
ckZpZWxkKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAga2V5ID0gU3RydWN0T2Zmc2V0
S2V5Lm5ldyhzdHJ1Y3QsIGZpZWxkKQorICAgIAorICAgIHVubGVzcyBAQG1hcHBpbmdba2V5XQor
ICAgICAgQEBtYXBwaW5nW2tleV0gPSBTdHJ1Y3RPZmZzZXQubmV3KGNvZGVPcmlnaW4sIHN0cnVj
dCwgZmllbGQpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW2tleV0KKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICIje3N0cnVjdH06OiN7ZmllbGR9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3Ro
ZXIpCisgICAgaWYgQHN0cnVjdCAhPSBvdGhlci5zdHJ1Y3QKKyAgICAgIHJldHVybiBAc3RydWN0
IDw9PiBvdGhlci5zdHJ1Y3QKKyAgICBlbmQKKyAgICBAZmllbGQgPD0+IG90aGVyLmZpZWxkCisg
IGVuZAorZW5kCisKK2NsYXNzIFNpemVvZiA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0
cnVjdAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICBlbmQKKyAgCisgIEBAbWFwcGlu
ZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICB1
bmxlc3MgQEBtYXBwaW5nW3N0cnVjdF0KKyAgICAgIEBAbWFwcGluZ1tzdHJ1Y3RdID0gU2l6ZW9m
Lm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW3N0cnVjdF0K
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJzaXplb2YgI3tAc3RydWN0fSIKKyAgZW5kCisg
IAorICBkZWYgPD0+KG90aGVyKQorICAgIEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICBlbmQK
K2VuZAorCitjbGFzcyBJbW1lZGlhdGUgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDp2YWx1
ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFsdWUpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
IiN7dmFsdWV9IgorICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBvdGhlci5pc19hPyBJ
bW1lZGlhdGUgYW5kIG90aGVyLnZhbHVlID09IEB2YWx1ZQorICBlbmQKK2VuZAorCitjbGFzcyBB
ZGRJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENo
aWxkcmVuCisgICAgQWRkSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwg
KHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1w
fSArICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzIDwg
Tm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0
ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisg
ICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgU3Vi
SW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkp
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAtICN7cmlnaHQuZHVt
cH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3Jl
YWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0
LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEBy
aWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmln
aHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTXVsSW1tZWRpYXRlcy5uZXco
Y29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAqICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2Vu
ZAorCitjbGFzcyBOZWdJbW1lZGlhdGUgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAY2hpbGQgPSBjaGlsZAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtA
Y2hpbGRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTmVnSW1tZWRpYXRlLm5l
dyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICIoLSN7QGNoaWxkLmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRCA8IE5v
Q2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAg
ZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tu
YW1lXSA9IFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBt
YXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5k
CisKK2NsYXNzIEZQUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAK
KyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBp
bmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IEZQUmVnaXN0ZXJJRC5uZXcoY29kZU9y
aWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUgPCBOb0NoaWxk
cmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAor
ICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0g
PSBWYXJpYWJsZS5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdb
bmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xh
c3MgQWRkcmVzcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2UsIDpvZmZzZXQKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGJhc2UsIG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBiYXNlID0gYmFzZQorICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAgZW5kCisgIAor
ICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVmIG1h
cENoaWxkcmVuCisgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlp
ZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9
WyN7YmFzZS5kdW1wfV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleCA8IE5vZGUKKyAg
YXR0cl9yZWFkZXIgOmJhc2UsIDppbmRleCwgOnNjYWxlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBiYXNlID0gYmFzZQorICAgIEBpbmRleCA9IGluZGV4CisgICAg
QHNjYWxlID0gc2NhbGUKKyAgICByYWlzZSB1bmxlc3MgWzEsIDIsIDQsIDhdLm1lbWJlcj8gQHNj
YWxlCisgICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IFtAYmFzZSwgQGluZGV4LCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgor
ICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBpbmRl
eCksIEBzY2FsZSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
IiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfSwgI3tpbmRleC5kdW1wfSwgI3tzY2FsZX1dIgor
ICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MgPCBOb0NoaWxkcmVuCisgIGF0dHJf
cmVhZGVyIDphZGRyZXNzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBhZGRyZXNz
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGFkZHJlc3MgPSBhZGRyZXNzCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiI3thZGRyZXNzLmR1bXB9W10iCisgIGVuZAorZW5kCisKK2Ns
YXNzIEluc3RydWN0aW9uIDwgTm9kZQorICBhdHRyX3JlYWRlciA6b3Bjb2RlLCA6b3BlcmFuZHMK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG9wY29kZSwgb3BlcmFuZHMpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAb3Bjb2RlID0gb3Bjb2RlCisgICAgQG9wZXJhbmRzID0g
b3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBvcGVyYW5kcworICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBJbnN0cnVjdGlvbi5uZXcoY29kZU9y
aWdpbiwgQG9wY29kZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiXHQiICsgb3Bjb2RlLnRvX3MgKyAiICIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2
LmR1bXB9LmpvaW4oIiwgIikKKyAgZW5kCitlbmQKKworY2xhc3MgRXJyb3IgPCBOb0NoaWxkcmVu
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdGVycm9yIgorICBlbmQKK2VuZAorCitjbGFzcyBD
b25zdERlY2wgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDp2YXJpYWJsZSwgOnZhbHVlCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAdmFyaWFibGUgPSB2YXJpYWJsZQorICAgIEB2YWx1ZSA9IHZhbHVlCisg
IGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0B2YXJpYWJsZSwgQHZhbHVlXQorICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIENvbnN0RGVjbC5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEB2YXJpYWJsZSksICh5aWVsZCBAdmFsdWUpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgImNvbnN0ICN7QHZhcmlhYmxlLmR1bXB9ID0gI3tAdmFsdWUuZHVtcH0iCisgIGVuZAorZW5k
CisKKyRsYWJlbE1hcHBpbmcgPSB7fQorCitjbGFzcyBMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0
cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYg
c2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgaWYgJGxhYmVsTWFwcGluZ1tuYW1l
XQorICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9IiB1bmxlc3MgJGxh
YmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBp
bmdbbmFtZV0gPSBMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFi
ZWxNYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisg
IGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVy
IDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorCisgIEBAdW5pcXVlTmFtZUNv
dW50ZXIgPSAwCisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
aWYgJGxhYmVsTWFwcGluZ1tuYW1lXQorICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9u
OiAje25hbWV9IiB1bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMb2NhbExhYmVsCisg
ICAgZWxzZQorICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExvY2FsTGFiZWwubmV3KGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAg
CisgIGRlZiBzZWxmLnVuaXF1ZShjb21tZW50KQorICAgIG5ld05hbWUgPSAiXyN7Y29tbWVudH0i
CisgICAgaWYgJGxhYmVsTWFwcGluZ1tuZXdOYW1lXQorICAgICAgd2hpbGUgJGxhYmVsTWFwcGlu
Z1tuZXdOYW1lID0gIl8je0BAdW5pcXVlTmFtZUNvdW50ZXJ9XyN7Y29tbWVudH0iXQorICAgICAg
ICBAQHVuaXF1ZU5hbWVDb3VudGVyICs9IDEKKyAgICAgIGVuZAorICAgIGVuZAorICAgIGZvck5h
bWUobmlsLCBuZXdOYW1lKQorICBlbmQKKyAgCisgIGRlZiBjbGVhbk5hbWUKKyAgICBpZiBuYW1l
ID1+IC9eXC4vCisgICAgICAiXyIgKyBuYW1lWzEuLi0xXQorICAgIGVsc2UKKyAgICAgIG5hbWUK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitl
bmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsYWJlbAor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTGFiZWxSZWZlcmVu
Y2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1l
CisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQor
ICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlIDwgTm9DaGlsZHJlbgorICBh
dHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVs
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAor
ICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJl
bgorICAgIExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwp
KQorICBlbmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgbGFiZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZSA8IE5v
ZGUKKyAgYXR0cl9yZWFkZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGxpc3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGlzdCA9IGxpc3QKKyAgZW5kCisg
IAorICBkZWYgY2hpbGRyZW4KKyAgICBsaXN0CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
KCZwcm9jKQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBAbGlzdC5tYXAoJnByb2MpKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4o
IlxuIikKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRp
YWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IFRydWUubmV3
CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBk
ZWYgdmFsdWUKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAidHJ1ZSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgRmFsc2UgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisg
ICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBGYWxzZS5uZXcKKyAgCisg
IGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1
ZQorICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiZmFsc2UiCisgIGVuZAor
ZW5kCisKK2NsYXNzIFRydWVDbGFzcworICBkZWYgYXNOb2RlCisgICAgVHJ1ZS5pbnN0YW5jZQor
ICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBGYWxzZS5p
bnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nIDwgTm9DaGlsZHJlbgorICBhdHRy
X3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFw
cGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
dW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gU2V0dGluZy5u
ZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kIDwgTm9k
ZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0g
bGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAg
W0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQW5kLm5l
dyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3JpZ2h0LmR1bXB9KSIKKyAgZW5k
CitlbmQKKworY2xhc3MgT3IgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisg
IAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxk
IEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBvciAj
e3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTm90IDwgTm9kZQorICBhdHRyX3Jl
YWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRy
ZW4KKyAgICBOb3QubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNz
IFNraXAgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdHNraXAiCisgIGVu
ZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpwcmVkaWNh
dGUsIDp0aGVuQ2FzZQorICBhdHRyX2FjY2Vzc29yIDplbHNlQ2FzZQorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZSkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBwcmVkaWNhdGUgPSBwcmVkaWNhdGUKKyAgICBAdGhlbkNhc2UgPSB0aGVuQ2Fz
ZQorICAgIEBlbHNlQ2FzZSA9IFNraXAubmV3KGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVm
IGNoaWxkcmVuCisgICAgaWYgQGVsc2VDYXNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNl
LCBAZWxzZUNhc2VdCisgICAgZWxzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZV0KKyAg
ICBlbmQKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBJZlRoZW5FbHNlLm5ldyhj
b2RlT3JpZ2luLCAoeWllbGQgQHByZWRpY2F0ZSksICh5aWVsZCBAdGhlbkNhc2UpLCAoeWllbGQg
QGVsc2VDYXNlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJpZiAje3ByZWRpY2F0ZS5k
dW1wfVxuIiArIHRoZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsgZWxzZUNhc2UuZHVtcCArICJc
bmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpu
YW1lLCA6dmFyaWFibGVzLCA6Ym9keQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUg
PSBuYW1lCisgICAgQHZhcmlhYmxlcyA9IHZhcmlhYmxlcworICAgIEBib2R5ID0gYm9keQorICBl
bmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEB2YXJpYWJsZXMgKyBbQGJvZHldCisgIGVuZAor
ICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBA
dmFyaWFibGVzLm1hcHt8dnwgeWllbGQgdn0sICh5aWVsZCBAYm9keSkpCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFibGVzLmNvbGxlY3R7fHZ8IHYu
ZHVtcH0uam9pbigiLCAiKSArICIpXG4iICsgYm9keS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2Vu
ZAorCitjbGFzcyBNYWNyb0NhbGwgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6b3BlcmFu
ZHMKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQG9wZXJhbmRzID0gb3Bl
cmFuZHMKKyAgICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAgQG9wZXJhbmRzLmVhY2h7fHZ8
IHJhaXNlIHVubGVzcyB2fQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEBvcGVyYW5k
cworICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBNYWNyb0NhbGwubmV3
KGNvZGVPcmlnaW4sIEBuYW1lLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICJcdCN7bmFtZX0oIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0u
am9pbigiLCAiKSArICIpIgorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDgwIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJh
c3QiCityZXF1aXJlICJ4ODYiCisKK0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIsCisgICAiQVJN
djciCisgIF0KKworV09SS0lOR19CQUNLRU5EUyA9CisgIFsKKyAgICJYODYiCisgIF0KKworQkFD
S0VORF9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCcgKyBCQUNLRU5EUy5qb2luKCcpfCgnKSAr
ICcpXFxaJykKKworY2xhc3MgTm9kZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBzZW5kKCJsb3dl
ciIgKyBuYW1lKQorICBlbmQKK2VuZAorCisjIE92ZXJyaWRlcyBmb3IgbG93ZXIoKSBmb3IgdGhv
c2Ugbm9kZXMgdGhhdCBhcmUgYmFja2VuZC1hZ25vc3RpYworCitkZWYgc2FuaXRpemVMYWJlbE5h
bWUobmFtZSkKKyAgIyBTb21lIHBsYXRmb3JtcyBkb24ndCB3YW50IHRoZSBsZWFkaW5nICJfIi4g
SWYgd2UgZXZlciB3YW50IHRvIGRvIHNvbWV0aGluZworICAjIGFib3V0IHRoYXQsIGl0IHdvdWxk
IGJlIGhlcmUuCisgIG5hbWUKK2VuZAorCitjbGFzcyBMYWJlbAorICBkZWYgbG93ZXIobmFtZSkK
KyAgICAkYXNtLnB1dHMgIi5nbG9ibCAje3Nhbml0aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9Igor
ICAgICRhc20ucHV0cyAiI3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxmLm5hbWUpfToiCisgIGVuZAor
ZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRz
ICJMX29mZmxpbmVhc21fI3tzZWxmLm5hbWVbMS4uLTFdfToiCisgIGVuZAorZW5kCisKK2NsYXNz
IFNraXAKKyAgZGVmIGxvd2VyKG5hbWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisg
IGRlZiBsb3dlcihuYW1lKQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBub2RlIHwKKyAgICAg
IG5vZGUubG93ZXIobmFtZSkKKyAgICB9CisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0
X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsODcgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJi
YWNrZW5kcyIKK3JlcXVpcmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVp
cmUgInBhcnNlciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitp
bnB1dEZsbm0gPSBBUkdWLnNoaWZ0CitvdXRwdXRGbG5tID0gQVJHVi5zaGlmdAorCitkZWYgZW1p
dE1hZ2ljTnVtYmVyCisgIE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVhY2ggeworICAgIHwgbnVtYmVy
IHwKKyAgICAkb3V0cHV0LnB1dHMgIiN7bnVtYmVyfSwiCisgIH0KK2VuZAorCitpbnB1dERhdGEg
PSBJTzo6cmVhZChpbnB1dEZsbm0pCitpbnB1dEhhc2ggPSBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0
KGlucHV0RGF0YSkKKworaWYgRmlsZVRlc3QuZXhpc3Q/IG91dHB1dEZsbm0KKyAgRmlsZS5vcGVu
KG91dHB1dEZsbm0sICJyIikgeworICAgIHwgaW5wIHwKKyAgICBmaXJzdExpbmUgPSBpbnAuZ2V0
cworICAgIGlmIGZpcnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09ICIvLyBvZmZsaW5lYXNt
IGlucHV0IGhhc2g6ICN7aW5wdXRIYXNofSIKKyAgICAgICRzdGRlcnIucHV0cyAiTm90aGluZyBj
aGFuZ2VkLiIKKyAgICAgIGV4aXQgMAorICAgIGVuZAorICB9CitlbmQKKworb3JpZ2luYWxBU1Qg
PSBwYXJzZShsZXgoaW5wdXREYXRhKSkKKworRmlsZS5vcGVuKG91dHB1dEZsbm0sICJ3Iikgewor
ICB8IG91dHAgfAorICAkb3V0cHV0ID0gb3V0cAorICBvdXRwLnB1dHMgIi8vIG9mZmxpbmVhc20g
aW5wdXQgaGFzaDogI3tpbnB1dEhhc2h9IgorICBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMo
b3JpZ2luYWxBU1QpIHsKKyAgICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAg
ICBvZmZzZXRzTGlzdCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKKyAgICBz
aXplc0xpc3QgPSBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CisgICAgCisgICAgbGVuZ3Ro
ID0gKE9GRlNFVF9NQUdJQ19OVU1CRVJTLnNpemUgKyAxKSAqICgxICsgb2Zmc2V0c0xpc3Quc2l6
ZSArIHNpemVzTGlzdC5zaXplKQorICAgIAorICAgIG91dHAucHV0cyAic3RhdGljIGNvbnN0IHVu
c2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICAgIGVtaXRNYWdpY051bWJl
cgorICAgIG91dHAucHV0cyAiI3tpbmRleH0sIgorICAgIG9mZnNldHNMaXN0LmVhY2ggeworICAg
ICAgfCBvZmZzZXQgfAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICBvdXRwLnB1dHMgIk9G
RkxJTkVfQVNNX09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSksIgor
ICAgIH0KKyAgICBzaXplc0xpc3QuZWFjaCB7CisgICAgICB8IG9mZnNldCB8CisgICAgICBlbWl0
TWFnaWNOdW1iZXIKKyAgICAgIG91dHAucHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0cnVjdH0pLCIK
KyAgICB9CisgICAgb3V0cC5wdXRzICJ9OyIKKyAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxODggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK01BQ1JPX0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJhZGRpIiwKKyAgICJhbmRpIiwK
KyAgICJsc2hpZnRpIiwKKyAgICJtdWxpIiwKKyAgICJuZWdpIiwKKyAgICJub3RpIiwKKyAgICJv
cmkiLAorICAgInJzaGlmdGkiLAorICAgInVyc2hpZnRpIiwKKyAgICJzdWJpIiwKKyAgICJ4b3Jp
IiwKKyAgICJsb2FkaSIsCisgICAibG9hZGIiLAorICAgImxvYWRoIiwKKyAgICJzdG9yZWkiLAor
ICAgInN0b3JlYiIsCisgICAibG9hZGQiLAorICAgIm1vdmVkIiwKKyAgICJzdG9yZWQiLAorICAg
ImFkZGQiLAorICAgImRpdmQiLAorICAgInN1YmQiLAorICAgIm11bGQiLAorICAgInNxcnRkIiwK
KyAgICJjaTJkIiwKKyAgICJmaWkyZCIsICMgdXNhZ2U6IGZpaTJkIDxncHIgd2l0aCBsZWFzdCBz
aWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxmcHI+
CisgICAiZmQyaWkiLCAjIHVzYWdlOiBmZDJpaSA8ZnByPiwgPGdwciB3aXRoIGxlYXN0IHNpZ25p
ZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPgorICAgImJkZXEi
LAorICAgImJkbmVxIiwKKyAgICJiZGd0IiwKKyAgICJiZGd0ZXEiLAorICAgImJkbHQiLAorICAg
ImJkbHRlcSIsCisgICAiYmRlcXVuIiwKKyAgICJiZG5lcXVuIiwKKyAgICJiZGd0dW4iLAorICAg
ImJkZ3RlcXVuIiwKKyAgICJiZGx0dW4iLAorICAgImJkbHRlcXVuIiwKKyAgICJidGQyaSIsCisg
ICAidGQyaSIsCisgICAiYmNkMmkiLAorICAgIm1vdmR6IiwKKyAgICJwb3AiLAorICAgInB1c2gi
LAorICAgIm1vdmUiLAorICAgInN4aTJwIiwKKyAgICJ6eGkycCIsCisgICAibm9wIiwKKyAgICJi
aWVxIiwKKyAgICJiaW5lcSIsCisgICAiYmlhIiwKKyAgICJiaWFlcSIsCisgICAiYmliIiwKKyAg
ICJiaWJlcSIsCisgICAiYmlndCIsCisgICAiYmlndGVxIiwKKyAgICJiaWx0IiwKKyAgICJiaWx0
ZXEiLAorICAgImJiZXEiLAorICAgImJibmVxIiwKKyAgICJiYmEiLAorICAgImJiYWVxIiwKKyAg
ICJiYmIiLAorICAgImJiYmVxIiwKKyAgICJiYmd0IiwKKyAgICJiYmd0ZXEiLAorICAgImJibHQi
LAorICAgImJibHRlcSIsCisgICAiYnRpbyIsCisgICAiYnRpcyIsCisgICAiYnRpeiIsCisgICAi
YnRpbnoiLAorICAgImJ0Ym8iLAorICAgImJ0YnMiLAorICAgImJ0YnoiLAorICAgImJ0Ym56IiwK
KyAgICJqbXAiLAorICAgImJhZGRpbyIsCisgICAiYmFkZGlzIiwKKyAgICJiYWRkaXoiLAorICAg
ImJhZGRpbnoiLAorICAgImJzdWJpbyIsCisgICAiYnN1YmlzIiwKKyAgICJic3ViaXoiLAorICAg
ImJzdWJpbnoiLAorICAgImJtdWxpbyIsCisgICAiYm11bGlzIiwKKyAgICJibXVsaXoiLAorICAg
ImJtdWxpbnoiLAorICAgImJvcmlvIiwKKyAgICJib3JpcyIsCisgICAiYm9yaXoiLAorICAgImJv
cmlueiIsCisgICAiYnJlYWsiLAorICAgImNhbGwiLAorICAgInJldCIsCisgICAiY2llcSIsCisg
ICAiY2luZXEiLAorICAgImNpYSIsCisgICAiY2lhZXEiLAorICAgImNpYiIsCisgICAiY2liZXEi
LAorICAgImNpZ3QiLAorICAgImNpZ3RlcSIsCisgICAiY2lsdCIsCisgICAiY2lsdGVxIiwKKyAg
ICJ0aW8iLAorICAgInRpcyIsCisgICAidGl6IiwKKyAgICJ0aW56IiwKKyAgICJ0Ym8iLAorICAg
InRicyIsCisgICAidGJ6IiwKKyAgICJ0Ym56IiwKKyAgICJwZWVrIiwKKyAgICJwb2tlIiwKKyAg
ICJicGVxIiwKKyAgICJicG5lcSIsCisgICAiYnBhIiwKKyAgICJicGFlcSIsCisgICAiYnBiIiwK
KyAgICJicGJlcSIsCisgICAiYnBndCIsCisgICAiYnBndGVxIiwKKyAgICJicGx0IiwKKyAgICJi
cGx0ZXEiLAorICAgImFkZHAiLAorICAgImFuZHAiLAorICAgIm9ycCIsCisgICAic3VicCIsCisg
ICAieG9ycCIsCisgICAibG9hZHAiLAorICAgImNwZXEiLAorICAgImNwbmVxIiwKKyAgICJjcGEi
LAorICAgImNwYWVxIiwKKyAgICJjcGIiLAorICAgImNwYmVxIiwKKyAgICJjcGd0IiwKKyAgICJj
cGd0ZXEiLAorICAgImNwbHQiLAorICAgImNwbHRlcSIsCisgICAic3RvcmVwIiwKKyAgICJidHBv
IiwKKyAgICJidHBzIiwKKyAgICJidHB6IiwKKyAgICJidHBueiIsCisgICAiYmFkZHBvIiwKKyAg
ICJiYWRkcHMiLAorICAgImJhZGRweiIsCisgICAiYmFkZHBueiIKKyAgXQorCitYODZfSU5TVFJV
Q1RJT05TID0KKyAgWworICAgImNkcWkiLAorICAgImlkaXZpIgorICBdCisKK0lOU1RSVUNUSU9O
UyA9IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMKKworSU5TVFJVQ1RJT05f
UEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIElOU1RSVUNUSU9OUy5qb2luKCcpfCgnKSAr
ICcpKVxcWicpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRf
ZXh0cmFjdG9yX2NvbnN0YW50cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29u
c3RhbnRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitNQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBm
ZjVlNzU1IF0KKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZz
ZXRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29m
ZnNldHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1NiBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0
X2V4dHJhY3Rvcl9jb25zdGFudHMiCisKK09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3
YWM3LCAweDBmZjVlNzU1IF0KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMg
b2Zmc2V0c0xpc3QoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBzaXplc0xpc3QoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUmV0dXJu
cyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgc2l6ZXMgdXNlZCBieSB0aGUgQVNULiAgICAgICAgICAg
ICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIG9mZnNldHNM
aXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorZW5kCisKK2Rl
ZiBzaXplc0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CitlbmQKKwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRp
b25JbmRleChhc3QsIGZpbGUpIC0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAg
W29mZnNldHMsIGluZGV4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUGFyc2VzIHRoZSBvZmZzZXRzIGZyb20gYSBm
aWxlIGFuZCByZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCB0aGUgIworIyBpbmRleCBvZiB0
aGUgY29uZmlndXJhdGlvbiB0aGF0IGlzIHZhbGlkIGluIHRoaXMgYnVpbGQgdGFyZ2V0LiAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgb2Zmc2V0c0FuZENv
bmZpZ3VyYXRpb25JbmRleChmaWxlKQorICBpbmRleCA9IG5pbAorICBvZmZzZXRzID0gW10KKyAg
ZW5kaWFubmVzc01hcmtlckJ5dGVzID0gbmlsCisgIAorICBkZWYgcmVhZEludChlbmRpYW5uZXNz
LCBpbnApCisgICAgYnl0ZXMgPSBbXQorICAgIDQudGltZXMgeworICAgICAgYnl0ZXMgPDwgaW5w
LmdldGJ5dGUKKyAgICB9CisgICAgCisgICAgaWYgZW5kaWFubmVzcyA9PSA6bGl0dGxlCisgICAg
ICAjIExpdHRsZSBlbmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAwIHwKKyAgICAgICBieXRlc1sx
XSA8PCA4IHwKKyAgICAgICBieXRlc1syXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbM10gPDwgMjQp
CisgICAgZWxzZQorICAgICAgIyBCaWcgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMjQgfAor
ICAgICAgIGJ5dGVzWzFdIDw8IDE2IHwKKyAgICAgICBieXRlc1syXSA8PCA4IHwKKyAgICAgICBi
eXRlc1szXSA8PCAwKQorICAgIGVuZAorICBlbmQKKyAgCisgIFs6bGl0dGxlLCA6YmlnXS5lYWNo
IHsKKyAgICB8IGVuZGlhbm5lc3MgfAorICAgIG1hZ2ljQnl0ZXMgPSBbXQorICAgIE1BR0lDX05V
TUJFUlMuZWFjaCB7CisgICAgICB8IG51bWJlciB8CisgICAgICBjdXJyZW50Qnl0ZXMgPSBbXQor
ICAgICAgNC50aW1lcyB7CisgICAgICAgIGN1cnJlbnRCeXRlcyA8PCAobnVtYmVyICYgMHhmZikK
KyAgICAgICAgbnVtYmVyID4+PSA4CisgICAgICB9CisgICAgICBpZiBlbmRpYW5uZXNzID09IDpi
aWcKKyAgICAgICAgY3VycmVudEJ5dGVzLnJldmVyc2UhCisgICAgICBlbmQKKyAgICAgIG1hZ2lj
Qnl0ZXMgKz0gY3VycmVudEJ5dGVzCisgICAgfQorICAgIAorICAgIEZpbGUub3BlbihmaWxlLCAi
ciIpIHsKKyAgICAgIHwgaW5wIHwKKyAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICBsb29w
IHsKKyAgICAgICAgYnl0ZSA9IGlucC5nZXRieXRlCisgICAgICAgIGJyZWFrIHVubGVzcyBieXRl
CisgICAgICAgIGlmIGJ5dGUgPT0gbWFnaWNCeXRlc1t3aGVyZUluTWFya2VyXQorICAgICAgICAg
IHdoZXJlSW5NYXJrZXIgKz0gMQorICAgICAgICAgIGlmIHdoZXJlSW5NYXJrZXIgPT0gbWFnaWNC
eXRlcy5zaXplCisgICAgICAgICAgICAjIFdlIGhhdmUgYSBtYXRjaCEgSWYgd2UgaGF2ZSBub3Qg
eWV0IHJlYWQgdGhlIGVuZGlhbm5lc3MgbWFya2VyIGFuZCBpbmRleCwKKyAgICAgICAgICAgICMg
dGhlbiByZWFkIHRob3NlIG5vdzsgb3RoZXJ3aXNlIHJlYWQgYW4gb2Zmc2V0LgorICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiBub3QgaW5kZXgKKyAgICAgICAgICAgICAgaW5kZXggPSByZWFk
SW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgb2Zm
c2V0cyA8PCByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVuZAorICAgICAg
ICAgICAgCisgICAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICAgIGVuZAorICAg
ICAgICBlbHNlCisgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgZW5kCisgICAg
ICB9CisgICAgfQorICAgIAorICAgIGJyZWFrIGlmIGluZGV4CisgIH0KKyAgCisgIHJhaXNlIHVu
bGVzcyBpbmRleAorICAKKyAgW29mZnNldHMsIGluZGV4XQorZW5kCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAt
PiBbb2Zmc2V0cywgc2l6ZXNdICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBC
dWlsZHMgYSBtYXBwaW5nIGJldHdlZW4gU3RydWN0T2Zmc2V0IG5vZGVzIGFuZCB0aGVpciB2YWx1
ZXMuICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgYnVp
bGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpCisgIG9mZnNldHNNYXAgPSB7fQorICBzaXpl
c01hcCA9IHt9CisgIGFzdE9mZnNldHNMaXN0ID0gb2Zmc2V0c0xpc3QoYXN0KQorICBhc3RTaXpl
c0xpc3QgPSBzaXplc0xpc3QoYXN0KQorICByYWlzZSB1bmxlc3MgYXN0T2Zmc2V0c0xpc3Quc2l6
ZSArIGFzdFNpemVzTGlzdC5zaXplID09IG9mZnNldHNMaXN0LnNpemUKKyAgb2Zmc2V0c0xpc3Qo
YXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgc3RydWN0T2Zmc2V0LCBpbmRleCB8CisgICAg
b2Zmc2V0c01hcFtzdHJ1Y3RPZmZzZXRdID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQorICBzaXpl
c0xpc3QoYXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgc2l6ZW9mLCBpbmRleCB8CisgICAg
c2l6ZXNNYXBbc2l6ZW9mXSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgW29mZnNldHNNYXAs
IHNpemVzTWFwXQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3BhcnNlci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9wYXJzZXIucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkxIEBACisjIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJpbnN0
cnVjdGlvbnMiCityZXF1aXJlICJyZWdpc3RlcnMiCisKK2NsYXNzIFRva2VuCisgIGF0dHJfcmVh
ZGVyIDpjb2RlT3JpZ2luLCA6c3RyaW5nCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBzdHJpbmcpCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgICAgQHN0cmluZyA9IHN0
cmluZworICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBpZiBvdGhlci5pc19hPyBUb2tl
bgorICAgICAgQHN0cmluZyA9PSBvdGhlci5zdHJpbmcKKyAgICBlbHNlCisgICAgICBAc3RyaW5n
ID09IG90aGVyCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmID1+KG90aGVyKQorICAgIEBzdHJp
bmcgPX4gb3RoZXIKKyAgZW5kCisgIAorICBkZWYgdG9fcworICAgICIje0BzdHJpbmcuaW5zcGVj
dH0gYXQgbGluZSAje2NvZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpj
b21tZW50KQorICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6
ICN7dG9fc30iCisgICAgZWxzZQorICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9OiAj
e2NvbW1lbnRbMF19IgorICAgIGVuZAorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIworIyBUaGUgbGV4ZXIuIFRha2VzIGEgc3RyaW5nIGFuZCByZXR1cm5zIGFu
IGFycmF5IG9mIHRva2Vucy4gICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIworCitkZWYgbGV4KHN0cikKKyAgcmVzdWx0ID0gW10KKyAgbGluZU51bWJlciA9IDEK
KyAgd2hpbGUgbm90IHN0ci5lbXB0eT8KKyAgICBjYXNlIHN0cgorICAgIHdoZW4gL1xBXCMoW15c
bl0qKS8KKyAgICAgICMgY29tbWVudCwgaWdub3JlCisgICAgd2hlbiAvXEFcbi8KKyAgICAgIHJl
c3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICBsaW5lTnVtYmVyICs9IDEK
KyAgICB3aGVuIC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRv
a2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVwuKFthLXpBLVowLTlfXSopLwor
ICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQV8o
W2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQm
KQorICAgIHdoZW4gL1xBKFsgXHRdKykvCisgICAgICAjIHdoaXRlc3BhY2UsIGlnbm9yZQorICAg
IHdoZW4gL1xBMHgoWzAtOWEtZkEtRl0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGlu
ZU51bWJlciwgJCYuaGV4LnRvX3MpCisgICAgd2hlbiAvXEEwKFswLTddKykvCisgICAgICByZXN1
bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLm9jdC50b19zKQorICAgIHdoZW4gL1xBKFsw
LTldKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdo
ZW4gL1xBOjovCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAg
IHdoZW4gL1xBWzosXChcKVxbXF09XCtcLSpdLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhs
aW5lTnVtYmVyLCAkJikKKyAgICBlbHNlCisgICAgICByYWlzZSAiTGV4ZXIgZXJyb3IgYXQgbGlu
ZSBudW1iZXIgI3tsaW5lTnVtYmVyfSwgdW5leHBlY3RlZCBzZXF1ZW5jZSAje3N0clswLi4yMF0u
aW5zcGVjdH0iCisgICAgZW5kCisgICAgc3RyID0gJH4ucG9zdF9tYXRjaAorICBlbmQKKyAgcmVz
dWx0CitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVG9rZW4gaWRl
bnRpZmljYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGlzUmVnaXN0ZXIo
dG9rZW4pCisgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJbnN0cnVj
dGlvbih0b2tlbikKKyAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBp
c0tleXdvcmQodG9rZW4pCisgIHRva2VuID1+IC9cQSgodHJ1ZSl8KGZhbHNlKXwoaWYpfCh0aGVu
KXwoZWxzZSl8KGVsc2lmKXwoZW5kKXwoYW5kKXwob3IpfChub3QpfChtYWNybyl8KGNvbnN0KXwo
c2l6ZW9mKXwoZXJyb3IpKVxaLyBvcgorICAgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4gb3IK
KyAgICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzSWRlbnRpZmll
cih0b2tlbikKKyAgdG9rZW4gPX4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKilcWi8gYW5kIG5v
dCBpc0tleXdvcmQodG9rZW4pCitlbmQKKworZGVmIGlzTGFiZWwodG9rZW4pCisgIHRva2VuID1+
IC9cQV8oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNMb2NhbExhYmVsKHRva2VuKQor
ICB0b2tlbiA9fiAvXEFcLihbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc1ZhcmlhYmxl
KHRva2VuKQorICBpc0lkZW50aWZpZXIodG9rZW4pIG9yIGlzUmVnaXN0ZXIodG9rZW4pCitlbmQK
KworZGVmIGlzSW50ZWdlcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBWzAtOV0vCitlbmQKKworIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIHBhcnNlci4gVGFrZXMgYW4gYXJy
YXkgb2YgdG9rZW5zIGFuZCByZXR1cm5zIGFuIEFTVC4gTWV0aG9kcyAgICAgIworIyBvdGhlciB0
aGFuIHBhcnNlKHRva2VucykgYXJlIG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9uLiAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBQYXJzZXIK
KyAgZGVmIGluaXRpYWxpemUodG9rZW5zKQorICAgIEB0b2tlbnMgPSB0b2tlbnMKKyAgICBAaWR4
ID0gMAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIEB0b2tl
bnNbQGlkeF0KKyAgICAgIEB0b2tlbnNbQGlkeF0ucGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBl
bHNlCisgICAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3Ig
YXQgZW5kIG9mIGZpbGUiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBh
dCBlbmQgb2YgZmlsZTogI3tjb21tZW50WzBdfSIKKyAgICAgIGVuZAorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBjb25zdW1lKHJlZ2V4cCkKKyAgICBpZiByZWdleHAKKyAgICAgIHBhcnNlRXJy
b3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPX4gcmVnZXhwCisgICAgZWxzZQorICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgQGlkeCA9PSBAdG9rZW5zLmxlbmd0aAorICAgIGVuZAorICAgIEBpZHggKz0g
MQorICBlbmQKKyAgCisgIGRlZiBza2lwTmV3TGluZQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0g
PT0gIlxuIgorICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNl
UHJlZGljYXRlQXRvbQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm5vdCIKKyAgICAgIEBpZHgg
Kz0gMQorICAgICAgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9
PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJlc3VsdCA9
IHBhcnNlUHJlZGljYXRlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09
ICIpIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0Bp
ZHhdID09ICJ0cnVlIgorICAgICAgcmVzdWx0ID0gVHJ1ZS5pbnN0YW5jZQorICAgICAgQGlkeCAr
PSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJmYWxzZSIKKyAg
ICAgIHJlc3VsdCA9IEZhbHNlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3Vs
dAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBT
ZXR0aW5nLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0
cmluZykKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFy
c2VFcnJvcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZUFuZAorICAg
IHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0g
ImFuZCIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAg
IEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNh
dGVBdG9tCisgICAgICByZXN1bHQgPSBBbmQubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQp
CisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlCisg
ICAgIyBzb21lIGV4YW1wbGVzIG9mIHByZWNlZGVuY2U6CisgICAgIyBub3QgYSBhbmQgYiAtPiAo
bm90IGEpIGFuZCBiCisgICAgIyBhIGFuZCBiIG9yIGMgLT4gKGEgYW5kIGIpIG9yIGMKKyAgICAj
IGEgb3IgYiBhbmQgYyAtPiBhIG9yIChiIGFuZCBjKQorICAgIAorICAgIHJlc3VsdCA9IHBhcnNl
UHJlZGljYXRlQW5kCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAib3IiCisgICAgICBjb2Rl
T3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAg
IHNraXBOZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgICByZXN1
bHQgPSBPci5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1
bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VWYXJpYWJsZQorICAgIGlmIGlzUmVnaXN0ZXIoQHRv
a2Vuc1tAaWR4XSkKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPX4gRlBSX1BBVFRFUk4KKyAgICAg
ICAgcmVzdWx0ID0gRlBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUmVn
aXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5z
dHJpbmcpCisgICAgICBlbmQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkK
KyAgICAgIHJlc3VsdCA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAg
ZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQWRk
cmVzcyhvZmZzZXQpCisgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiWyIK
KyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgCisgICAgIyBU
aHJlZSBwb3NzaWJpbGl0aWVzOgorICAgICMgW10gICAgICAgLT4gQWJzb2x1dGVBZGRyZXNzCisg
ICAgIyBbYV0gICAgICAtPiBBZGRyZXNzCisgICAgIyBbYSxiXSAgICAtPiBCYXNlSW5kZXggd2l0
aCBzY2FsZSA9IDEKKyAgICAjIFthLGIsY10gIC0+IEJhc2VJbmRleAorICAgIAorICAgIEBpZHgg
Kz0gMQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICBAaWR4ICs9IDEKKyAgICAg
IHJldHVybiBBYnNvbHV0ZUFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIG9mZnNldCkKKyAgICBlbmQK
KyAgICBhID0gcGFyc2VWYXJpYWJsZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAg
ICByZXN1bHQgPSBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBhLCBvZmZzZXQpCisgICAgZWxzZQor
ICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgIEBpZHgg
Kz0gMQorICAgICAgYiA9IHBhcnNlVmFyaWFibGUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0g
Il0iCisgICAgICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgMSwg
b2Zmc2V0KQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0Bp
ZHhdID09ICIsIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3Mg
WyIxIiwgIjIiLCAiNCIsICI4Il0ubWVtYmVyPyBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAg
ICBjID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faQorICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0
ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCBjLCBvZmZzZXQpCisgICAgICBlbmQK
KyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFy
c2VDb2xvbkNvbG9uCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luCisgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tl
bnNbQGlkeF0KKyAgICBuYW1lcyA9IFtAdG9rZW5zW0BpZHhdLnN0cmluZ10KKyAgICBAaWR4ICs9
IDEKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICI6OiIKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIG5h
bWVzIDw8IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAg
ICByYWlzZSBpZiBuYW1lcy5lbXB0eT8KKyAgICBbY29kZU9yaWdpbiwgbmFtZXNdCisgIGVuZAor
ICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICBza2lwTmV3TGluZQorICAgIGlmIEB0
b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIE5lZ0ltbWVkaWF0ZS5u
ZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAg
ICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1
bHQgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlk
eF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSW50
ZWdlciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBJbW1lZGlhdGUubmV3KEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faSkKKyAgICAgIEBpZHgg
Kz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0K
KyAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBpZiBuYW1l
cy5zaXplID4gMQorICAgICAgICBTdHJ1Y3RPZmZzZXQuZm9yRmllbGQoY29kZU9yaWdpbiwgbmFt
ZXNbMC4uLTJdLmpvaW4oJzo6JyksIG5hbWVzWy0xXSkKKyAgICAgIGVsc2UKKyAgICAgICAgVmFy
aWFibGUuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lc1swXSkKKyAgICAgIGVuZAorICAgIGVsc2lm
IGlzUmVnaXN0ZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcGFyc2VWYXJpYWJsZQorICAgIGVsc2lm
IEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgY29kZU9y
aWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIFNpemVvZi5mb3JOYW1lKGNvZGVP
cmlnaW4sIG5hbWVzLmpvaW4oJzo6JykpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAg
IGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICBza2lwTmV3TGlu
ZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0Bp
ZHhdID09ICIqIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIHJlc3VsdCA9IE11bEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFd
LmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICAgIGVsc2UKKyAg
ICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisg
IGRlZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgIEB0b2tlbnNbQGlkeF0gPT0gIi0iIG9yIEB0b2tl
bnNbQGlkeF0gPT0gInNpemVvZiIgb3IgaXNJbnRlZ2VyKEB0b2tlbnNbQGlkeF0pIG9yIGlzVmFy
aWFibGUoQHRva2Vuc1tAaWR4XSkgb3IgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgZW5kCisgIAor
ICBkZWYgcGFyc2VFeHByZXNzaW9uCisgICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBwYXJz
ZUV4cHJlc3Npb25NdWwKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIrIiBvciBAdG9rZW5z
W0BpZHhdID09ICItIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKyIKKyAgICAgICAgQGlk
eCArPSAxCisgICAgICAgIHJlc3VsdCA9IEFkZEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAt
IDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzaWYg
QHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9
IFN1YkltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwg
cGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5k
CisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlT3BlcmFuZChjb21t
ZW50KQorICAgIGlmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgICBleHByID0gcGFyc2VFeHByZXNz
aW9uCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAgICBwYXJzZUFkZHJlc3Mo
ZXhwcikKKyAgICAgIGVsc2UKKyAgICAgICAgZXhwcgorICAgICAgZW5kCisgICAgZWxzaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgIHBhcnNlQWRkcmVzcyhJbW1lZGlhdGUubmV3KEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbiwgMCkpCisgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhd
CisgICAgICByZXN1bHQgPSBMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luLCBMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4
XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0xv
Y2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJlZmVyZW5j
ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMb2NhbExhYmVsLmZvck5hbWUoQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4ICs9
IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IoY29tbWVudCkKKyAg
ICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgIHNraXBOZXdM
aW5lCisgICAgY29uc3VtZSgvXEFcKFxaLykKKyAgICB2YXJpYWJsZXMgPSBbXQorICAgIGxvb3Ag
eworICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0
b2tlbnNbQGlkeF0pCisgICAgICAgIHZhcmlhYmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1lKEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIp
IgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0
b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICBwYXJzZUVycm9yCisgICAgICAgIGVuZAorICAgICAgZWxzZQorICAgICAgICBwYXJz
ZUVycm9yCisgICAgICBlbmQKKyAgICB9CisgICAgdmFyaWFibGVzCisgIGVuZAorICAKKyAgZGVm
IHBhcnNlU2VxdWVuY2UoZmluYWwsIGNvbW1lbnQpCisgICAgZmlyc3RDb2RlT3JpZ2luID0gQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgbGlzdCA9IFtdCisgICAgbG9vcCB7CisgICAgICBp
ZiAoQGlkeCA9PSBAdG9rZW5zLmxlbmd0aCBhbmQgbm90IGZpbmFsKSBvciAoZmluYWwgYW5kIEB0
b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBAdG9rZW5z
W0BpZHhdID09ICJcbiIKKyAgICAgICAgIyBpZ25vcmUKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJjb25zdCIKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzVmFyaWFibGUgQHRva2Vuc1tAaWR4XQorICAgICAgICB2
YXJpYWJsZSA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9r
ZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3Ig
dW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIj0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2
YWx1ZSA9IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGNvbnN0ICN7dmFyaWFibGUubmFt
ZX0iKQorICAgICAgICBsaXN0IDw8IENvbnN0RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJlcnJv
ciIKKyAgICAgICAgbGlzdCA8PCBFcnJvci5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luKQor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImlmIgorICAg
ICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRp
Y2F0ZQorICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgIHNraXBO
ZXdMaW5lCisgICAgICAgIGlmVGhlbkVsc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBw
cmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndo
aWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgbGlzdCA8
PCBpZlRoZW5FbHNlCisgICAgICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImVsc2lmIgorICAg
ICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIHByZWRpY2F0ZSA9IHBh
cnNlUHJlZGljYXRlCisgICAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAg
ICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgZWxzZUNhc2UgPSBJZlRoZW5FbHNlLm5ldyhj
b2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxz
aWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAg
ICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNhc2UKKyAgICAgICAgICBpZlRoZW5F
bHNlID0gZWxzZUNhc2UKKyAgICAgICAgZW5kCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0g
ImVsc2UiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2Fz
ZSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGVsc2UgY2FzZSBm
b3IgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gImVu
ZCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBAdG9rZW5z
W0BpZHhdID09ICJtYWNybyIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAg
cGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIG5h
bWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFy
aWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5j
ZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gI3tuYW1lfSIpCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBsaXN0IDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCB2YXJp
YWJsZXMsIGJvZHkpCisgICAgICBlbHNpZiBpc0luc3RydWN0aW9uIEB0b2tlbnNbQGlkeF0KKyAg
ICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1l
ID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIChu
b3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNb
QGlkeF0gPX4gZmluYWwpCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24sIGFu
ZCBpdCdzIHRoZSBsYXN0IG9uZS4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhj
b2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBicmVhaworICAgICAgICBlbHNpZiBAdG9r
ZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbi4K
KyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkK
KyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgICMgSXQncyBkZWZp
bml0ZWx5IGFuIGluc3RydWN0aW9uLCBhbmQgaXQgaGFzIGF0IGxlYXN0IG9uZSBvcGVyYW5kLgor
ICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gZmFsc2UK
KyAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgi
d2hpbGUgaW5zaWRlIG9mIGluc3RydWN0aW9uICN7bmFtZX0iKQorICAgICAgICAgICAgaWYgKG5v
dCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tA
aWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlv
biBhbmQgb2YgdGhlIHNlcXVlbmNlLgorICAgICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gdHJ1
ZQorICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9
PSAiLCIKKyAgICAgICAgICAgICAgIyBIYXMgYW5vdGhlciBvcGVyYW5kLgorICAgICAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAg
ICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uLgorICAgICAgICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQgYSBjb21tYSwgbmV3bGluZSwgb3IgI3tmaW5hbH0g
YWZ0ZXIgI3tvcGVyYW5kcy5sYXN0LmR1bXB9IikKKyAgICAgICAgICAgIGVuZAorICAgICAgICAg
IH0KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBv
cGVyYW5kcykKKyAgICAgICAgICBpZiBlbmRPZlNlcXVlbmNlCisgICAgICAgICAgICBicmVhawor
ICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9r
ZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4K
KyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgICAgICMgTWFjcm8gaW52b2Nh
dGlvbi4KKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAg
ICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9vcCB7Cisg
ICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gIm1hY3JvIgorICAgICAgICAgICAgICAgICMgSXQncyBhIG1hY3JvIGxhbWJkYSEKKyAgICAg
ICAgICAgICAgICBjb2RlT3JpZ2luSW5uZXIgPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAg
ICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBwYXJz
ZU1hY3JvVmFyaWFibGVzCisgICAgICAgICAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xB
ZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGFub255bW91cyBtYWNybyBwYXNzZWQgYXMgYXJndW1l
bnQgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAg
ICAgb3BlcmFuZHMgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJpYWJsZXMs
IGJvZHkpCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBw
YXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBtYWNybyBjYWxsIHRvICN7bmFtZX0iKQorICAg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAg
aWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIs
IgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgcGFyc2VFcnJvciAiVW5leHBlY3RlZCAje0B0b2tlbnNbQGlkeF0uc3RyaW5nLmlu
c3BlY3R9IHdoaWxlIHBhcnNpbmcgaW52b2NhdGlvbiBvZiBtYWNybyAje25hbWV9IgorICAgICAg
ICAgICAgICBlbmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbmQKKyAgICAgICAgICBsaXN0
IDw8IE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgIGVs
c2UKKyAgICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9Igor
ICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XSBvciBpc0xvY2Fs
TGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiOiIK
KyAgICAgICAgIyBJdCdzIGEgbGFiZWwuCisgICAgICAgIGlmIGlzTGFiZWwgbmFtZQorICAgICAg
ICAgIGxpc3QgPDwgTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbHNl
CisgICAgICAgICAgbGlzdCA8PCBMb2NhbExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkK
KyAgICAgICAgZW5kCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzZQorICAgICAgICBwYXJz
ZUVycm9yICJFeHBlY3RpbmcgdGVybWluYWwgI3tmaW5hbH0gI3tjb21tZW50fSIKKyAgICAgIGVu
ZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoZmlyc3RDb2RlT3JpZ2luLCBsaXN0KQorICBlbmQK
K2VuZAorCitkZWYgcGFyc2UodG9rZW5zKQorICBwYXJzZXIgPSBQYXJzZXIubmV3KHRva2VucykK
KyAgcGFyc2VyLnBhcnNlU2VxdWVuY2UobmlsLCAiIikKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDU5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CitHUFJTID0KKyAgWworICAgInQwIiwKKyAgICJ0MSIsCisgICAidDIiLAorICAgInQzIiwKKyAg
ICJ0NCIsCisgICAiY2ZyIiwKKyAgICJhMCIsCisgICAiYTEiLAorICAgInIwIiwKKyAgICJyMSIs
CisgICAic3AiCisgIF0KKworRlBSUyA9CisgIFsKKyAgICJmdDAiLAorICAgImZ0MSIsCisgICAi
ZnQyIiwKKyAgICJmdDMiLAorICAgImZ0NCIsCisgICAiZnQ1IiwKKyAgICJmYTAiLAorICAgImZh
MSIsCisgICAiZmEyIiwKKyAgICJmYTMiLAorICAgImZyIgorICBdCisKK1JFR0lTVEVSUyA9IEdQ
UlMgKyBGUFJTCisKK0dQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgR1BSUy5qb2lu
KCcpfCgnKSArICcpKVxcWicpCitGUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQ
UlMuam9pbignKXwoJykgKyAnKSlcXFonKQorCitSRUdJU1RFUl9QQVRURVJOID0gUmVnZXhwLm5l
dygnXFxBKCgnICsgUkVHSVNURVJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjIxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgInBhcnNlciIK
K3JlcXVpcmUgInRyYW5zZm9ybSIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMK
KyMgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgLT4gc2V0dGluZ3NDb21iaWF0aW9u
cyAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbXB1dGVzIGFuIGFycmF5IG9m
IHNldHRpbmdzIG1hcHMsIHdoZXJlIGEgc2V0dGluZ3MgbWFwIGNvbnN0aXR1dGVzICMKKyMgYSBj
b25maWd1cmF0aW9uIGZvciB0aGUgYXNzZW1ibHkgY29kZSBiZWluZyBnZW5lcmF0ZWQuIFRoZSBt
YXAgICAgICAgIworIyBjb250YWlucyBrZXkgdmFsdWUgcGFpcnMgd2hlcmUga2V5cyBhcmUgc2V0
dGluZ3MgbmFtZXMgKHN0cmluZ3MpIGFuZCAjCisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xlYW5zICh0
cnVlIGZvciBlbmFibGVkLCBmYWxzZSBmb3IgZGlzYWJsZWQpLiAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMo
YXN0KQorICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IFtdCisgIAorICBkZWYgc2V0dGluZ3NDb21i
aW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBtYXBTb0ZhciwgcmVtYWluaW5nKQorICAgIGlm
IHJlbWFpbmluZy5lbXB0eT8KKyAgICAgIHNldHRpbmdzQ29tYmluYXRpb25zIDw8IG1hcFNvRmFy
CisgICAgICByZXR1cm4KKyAgICBlbmQKKyAgICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAK
KyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IHRydWUKKyAgICBzZXR0aW5nc0NvbWJpbmF0b3Io
c2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgICAKKyAg
ICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IGZhbHNl
CisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJl
bWFpbmluZ1sxLi4tMV0pCisgIGVuZAorICAKKyAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdz
Q29tYmluYXRpb25zLCB7fSwgKGFzdC5maWx0ZXIoU2V0dGluZykudW5pcS5jb2xsZWN0e3x2fCB2
Lm5hbWV9ICsgWyJYODYiLCAiQVJNdjciXSkudW5pcSkKKyAgCisgIHNldHRpbmdzQ29tYmluYXRp
b25zCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yU2V0dGlu
Z3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8IC4u
LiB9ICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRGV0ZXJtaW5lcyBpZiB0
aGUgc2V0dGluZ3MgY29tYmluYXRpb24gaXMgdmFsaWQsIGFuZCBpZiBzbywgY2FsbHMgICAgIwor
IyB0aGUgYmxvY2sgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91IG5lZWQgdG8gZ2VuZXJhdGUgY29k
ZS4gICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYg
Zm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KQorICAjIENoZWNrIHdoaWNoIGFyY2hp
dGVjdHVyZXMgdGhpcyBjb21iaW5hdG9yIGNsYWltcyB0byBzdXBwb3J0LgorICBudW1DbGFpbWVk
QmFja2VuZHMgPSAwCisgIHNlbGVjdGVkQmFja2VuZCA9IG5pbAorICBCQUNLRU5EUy5lYWNoIHsK
KyAgICB8IGJhY2tlbmQgfAorICAgIGlzU3VwcG9ydGVkID0gY29uY3JldGVTZXR0aW5nc1tiYWNr
ZW5kXQorICAgIHJhaXNlIHVubGVzcyBpc1N1cHBvcnRlZCAhPSBuaWwKKyAgICBudW1DbGFpbWVk
QmFja2VuZHMgKz0gaWYgaXNTdXBwb3J0ZWQgdGhlbiAxIGVsc2UgMCBlbmQKKyAgICBpZiBpc1N1
cHBvcnRlZAorICAgICAgc2VsZWN0ZWRCYWNrZW5kID0gYmFja2VuZAorICAgIGVuZAorICB9Cisg
IAorICByZXR1cm4gaWYgbnVtQ2xhaW1lZEJhY2tlbmRzID4gMQorICAKKyAgIyBSZXNvbHZlIHRo
ZSBBU1QgZG93biB0byBhIGxvdy1sZXZlbCBmb3JtIChubyBtYWNyb3Mgb3IgY29uZGl0aW9uYWxz
KS4KKyAgbG93TGV2ZWxBU1QgPSBhc3QucmVzb2x2ZVNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3Mp
CisgIAorICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgc2VsZWN0ZWRCYWNr
ZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yRWFjaFZh
bGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4u
IH0gICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yRWFjaFZhbGlkU2V0
dGluZ3NDb21iaW5hdGlvbihhc3QsIHNldHRpbmdzQ29tYmluYXRpb25zKSB7ICAgICAgICAgIwor
IyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAg
ICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRXhlY3V0ZXMgdGhlIGdpdmVuIGJs
b2NrIGZvciBlYWNoIHZhbGlkIHNldHRpbmdzIGNvbWJpbmF0aW9uIGluIHRoZSAgIworIyBzZXR0
aW5ncyBtYXAuIFRoZSBhc3QgcGFzc2VkIGludG8gdGhlIGJsb2NrIGlzIHJlc29sdmVkICAgICAg
ICAgICAgICAjCisjIChhc3QucmVzb2x2ZSkgYWdhaW5zdCB0aGUgc2V0dGluZ3MuICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgZmlyc3Qg
Zm9ybSB3aWxsIGNhbGwgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgZm9yIHlvdS4g
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZm9yRWFjaFZhbGlk
U2V0dGluZ3NDb21iaW5hdGlvbihhc3QsICpvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zKQor
ICByYWlzZSBpZiBvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zLnNpemUgPiAxCisgIAorICBp
ZiBvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zLmVtcHR5PworICAgIHNldHRpbmdzQ29tYmlu
YXRpb25zID0gY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgZWxzZQorICAgIHNl
dHRpbmdzQ29tYmluYXRpb25zID0gb3B0aW9uYWxTZXR0aW5nc0NvbWJpYXRpb25zWzBdCisgIGVu
ZAorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IGNv
bmNyZXRlU2V0dGluZ3MsIGluZGV4IHwKKyAgICBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdz
LCBhc3QpIHsKKyAgICAgIHwgY29uY3JldGVTZXR0aW5nc18sIGxvd0xldmVsQVNULCBiYWNrZW5k
IHwKKyAgICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBp
bmRleAorICAgIH0KKyAgfQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBSZXR1cm5zIHRoZSBDKysgY29k
ZSB1c2VkIHRvIHRlc3QgaWYgd2UgYXJlIGluIGEgY29uZmlndXJhdGlvbiB0aGF0ICAjCisjIGNv
cnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBjb25jcmV0ZSBzZXR0aW5ncy4gICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBjcHBT
ZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgIiNpZiAiICsgY29uY3JldGVTZXR0aW5n
cy50b19hLmNvbGxlY3R7CisgICAgfCBwYWlyIHwKKyAgICAoaWYgcGFpclsxXQorICAgICAgICIi
CisgICAgIGVsc2UKKyAgICAgICAiISIKKyAgICAgZW5kKSArICJPRkZMSU5FX0FTTV8iICsgcGFp
clswXQorICB9LmpvaW4oIiAmJiAiKQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIGlzQVNURXJyb25lb3VzKGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUZXN0cyB0byBzZWUg
aWYgdGhlIEFTVCBjbGFpbXMgdGhhdCB0aGVyZSBpcyBhbiBlcnJvciAtIGkuZS4gaWYgdGhlICAj
CisjIHVzZXIncyBjb2RlLCBhZnRlciBzZXR0aW5ncyByZXNvbHV0aW9uLCBoYXMgRXJyb3Igbm9k
ZXMuICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Rl
ZiBpc0FTVEVycm9uZW91cyhhc3QpCisgIG5vdCBhc3QuZmlsdGVyKEVycm9yKS5lbXB0eT8KK2Vu
ZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBhc3NlcnRDb25maWd1cmF0
aW9uKGNvbmNyZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgRW1pdHMgYSBjaGVjayB0aGF0IGFzc2VydHMgdGhhdCB3ZSdyZSB1
c2luZyB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbi4gIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKworZGVmIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAg
JG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAkb3V0cHV0
LnB1dHMgIiNlbHNlIgorICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIkNvbmZpZ3VyYXRpb24gbWlz
bWF0Y2guXCIiCisgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0
dGluZ3MsIGFzdCwgYmFja2VuZCkgeyAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0
aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4uIH0gICAgICAgICAgICAgICAgICAgICAgICAgIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIEVtaXRzIGFsbCByZWxldmFudCBndWFyZHMgdG8gc2VlIGlmIHRoZSBj
b25maWd1cmF0aW9uIGhvbGRzIGFuZCAgICAgICMKKyMgY2FsbHMgdGhlIGJsb2NrIGlmIHRoZSBj
b25maWd1cmF0aW9uIGlzIG5vdCBlcnJvbmVvdXMuICAgICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNv
bmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkKKyAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdz
VGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAKKyAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAg
ICRvdXRwdXQucHV0cyAiI2Vycm9yIFwiSW52YWxpZCBjb25maWd1cmF0aW9uLlwiIgorICBlbHNp
ZiBub3QgV09SS0lOR19CQUNLRU5EUy5pbmNsdWRlPyBiYWNrZW5kCisgICAgJG91dHB1dC5wdXRz
ICIjZXJyb3IgXCJUaGlzIGJhY2tlbmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UK
KyAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICAk
b3V0cHV0LnB1dHMgIiNlbmRpZiIKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KSB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFj
a2VuZCwgaW5kZXggfCAuLi4gfSAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyBFbWl0cyBndWFyZCBjb2RlcyBmb3IgYWxsIHZhbGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgY2Fs
bHMgdGhlIGJsb2NrICAjCisjIGZvciB0aG9zZSBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSB2YWxp
ZCBhbmQgbm90IGVycm9uZW91cy4gICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisKK2RlZiBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KQorICBmb3JF
YWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworICAgIHwgY29uY3JldGVTZXR0aW5n
cywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICAkb3V0cHV0LnB1dHMgY3BwU2V0
dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywg
bG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgJG91dHB1dC5wdXRzICIjZW5kaWYiCisg
IH0KK2VuZAorCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJh
bnNmb3JtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNTIgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKKworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBJZlRoZW5F
bHNlIG5vZGVzIGJ5ICAgICAgICMKKyMgc3Vic3RpdHV0aW5nIGNvbmNyZXRlIGJvb2xlYW4gdmFs
dWVzIGZvciBlYWNoIFNldHRpbmcuICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRp
bmdzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZQor
ICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQKKwor
Y2xhc3MgRmFsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisg
IGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykKKyAgICBzZXR0aW5nc1tAbmFtZV0uYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZAor
ICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpLnZhbHVlIGFuZCBAcmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52
YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE9yCisgIGRlZiByZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUg
b3IgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQK
K2VuZAorCitjbGFzcyBOb3QKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAo
bm90IEBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5k
CitlbmQKKworY2xhc3MgSWZUaGVuRWxzZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdz
KQorICAgIGlmIEBwcmVkaWNhdGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZQorICAg
ICAgQHRoZW5DYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbHNlCisgICAgICBA
ZWxzZUNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVuZAorICBlbmQKK2VuZAor
CitjbGFzcyBTZXF1ZW5jZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG5l
d0xpc3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGl0ZW0g
PSBpdGVtLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgIGlmIGl0ZW0uaXNfYT8gU2Vx
dWVuY2UKKyAgICAgICAgbmV3TGlzdCArPSBpdGVtLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAg
bmV3TGlzdCA8PCBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVP
cmlnaW4sIG5ld0xpc3QpCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIG5vZGUuZGVtYWNyb2lmeShtYWNyb3MpICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5zdWJzdGl0dXRlKG1hcHBpbmcpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIGRlbWFjcm9pZnkoKSBjb25zdHJ1Y3RzIGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUg
YW55IE1hY3JvICAgICAgICMKKyMgbm9kZXMsIHdoaWxlIHN1YnN0aXR1dGUoKSByZXBsYWNlcyBW
YXJpYWJsZSBub2RlcyB3aXRoIHRoZSBnaXZlbiAgICAgIworIyBub2RlcyBpbiB0aGUgbWFwcGlu
Zy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiBkZW1hY3Jv
aWZ5KG1hY3JvcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNo
aWxkLmRlbWFjcm9pZnkobWFjcm9zKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0
ZShtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hp
bGQuc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0
ZUxhYmVscyhtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAg
ICAgY2hpbGQuc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKwor
Y2xhc3MgTWFjcm8KKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBteU1hcHBpbmcgPSB7
fQorICAgIG1hcHBpbmcuZWFjaF9wYWlyIHsKKyAgICAgIHwga2V5LCB2YWx1ZSB8CisgICAgICB1
bmxlc3MgQHZhcmlhYmxlcy5pbmNsdWRlPyBrZXkKKyAgICAgICAgbXlNYXBwaW5nW2tleV0gPSB2
YWx1ZQorICAgICAgZW5kCisgICAgfQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQg
fAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShteU1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAor
CitjbGFzcyBWYXJpYWJsZQorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIGlmIG1hcHBp
bmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxmCisgICAg
ZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIHN1YnN0aXR1dGVMYWJl
bHMobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisg
ICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5j
ZQorICBkZWYgc3Vic3RpdHV0ZShjb25zdGFudHMpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbXlD
b25zdGFudHMgPSBjb25zdGFudHMuZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0g
fAorICAgICAgaWYgaXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAgICAgbXlDb25zdGFudHNbaXRl
bS52YXJpYWJsZV0gPSBpdGVtLnZhbHVlLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICBl
bHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAg
ICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBl
bmQKKyAgCisgIGRlZiByZW5hbWVMYWJlbHMoY29tbWVudCkKKyAgICBtYXBwaW5nID0ge30KKyAg
ICAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/
IExvY2FsTGFiZWwKKyAgICAgICAgbWFwcGluZ1tpdGVtXSA9IExvY2FsTGFiZWwudW5pcXVlKGlm
IGNvbW1lbnQgdGhlbiBjb21tZW50ICsgIl8iIGVsc2UgIiIgZW5kICsgaXRlbS5jbGVhbk5hbWUp
CisgICAgICBlbmQKKyAgICB9CisgICAgCisgICAgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQor
ICBlbmQKKyAgCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBteU1hY3JvcyA9IG1hY3Jv
cy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlz
X2E/IE1hY3JvCisgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBpdGVtCisgICAgICBlbmQK
KyAgICB9CisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0g
fAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICAjIElnbm9yZS4KKyAgICAgIGVs
c2lmIGl0ZW0uaXNfYT8gTWFjcm9DYWxsCisgICAgICAgIG1hcHBpbmcgPSB7fQorICAgICAgICBt
eU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisgICAgICAgIHJhaXNlICJDb3VsZCBub3QgZmluZCBt
YWNybyAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgbXlN
YWNyb3NbaXRlbS5uYW1lXQorICAgICAgICByYWlzZSAiQXJndW1lbnQgY291bnQgbWlzbWF0Y2gg
Zm9yIGNhbGwgdG8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5s
ZXNzIGl0ZW0ub3BlcmFuZHMuc2l6ZSA9PSBteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlcy5z
aXplCisgICAgICAgIGl0ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgfCBpZHgg
fAorICAgICAgICAgIGlmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBWYXJpYWJsZSBhbmQgbXlN
YWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAgICBteU15TWFjcm9zW215
TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jvc1tpdGVtLm9w
ZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1l
XS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2lmIGl0ZW0ub3BlcmFu
ZHNbaWR4XS5pc19hPyBNYWNybworICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVt
Lm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAg
ICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBu
aWwKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0u
bmFtZV0udmFyaWFibGVzW2lkeF1dID0gbmlsCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9z
W2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAg
ICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCArPSBteU1hY3Jvc1tpdGVtLm5hbWVd
LmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNyb3MpLnJlbmFtZUxh
YmVscyhpdGVtLm5hbWUpLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVt
LmRlbWFjcm9pZnkobXlNYWNyb3MpCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3
KGNvZGVPcmlnaW4sIG5ld0xpc3QpLnN1YnN0aXR1dGUoe30pCisgIGVuZAorZW5kCisKKyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2ZU9mZnNldHMob2Zmc2V0
cywgc2l6ZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgaGFzIG9mZnNldCB2YWx1ZXMgaW5zdGVh
ZCBvZiBzeW1ib2xpYyAgICAgICAjCisjIG9mZnNldHMuICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNl
dHMsIHNpemVzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hp
bGQucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgfQorICBlbmQKK2VuZAorCitj
bGFzcyBTdHJ1Y3RPZmZzZXQKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQor
ICAgIGlmIG9mZnNldHNbc2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgb2Zm
c2V0c1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisK
K2NsYXNzIFNpemVvZgorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAg
aWYgc2l6ZXNbc2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgc2l6ZXNbc2Vs
Zl0pCisgICAgZWxzZQorICAgICAgcHV0cyAiQ291bGQgbm90IGZpbmQgI3tzZWxmLmluc3BlY3R9
IGluICN7c2l6ZXMua2V5cy5pbnNwZWN0fSIKKyAgICAgIHB1dHMgInNpemVzID0gI3tzaXplcy5p
bnNwZWN0fSIKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5mb2xkICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IFJlc29sdmUgY29uc3RhbnQgcmVmZXJlbmNlcyBhbmQgY29tcHV0ZSBhcml0aG1ldGljIGV4cHJl
c3Npb25zLiAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNz
IE5vZGUKKyAgZGVmIGZvbGQKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAg
ICAgIGNoaWxkLmZvbGQKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMK
KyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQu
Zm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICBy
ZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5u
ZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgKyBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisK
K2NsYXNzIFN1YkltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQK
KyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5p
c19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVk
aWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgLSBAcmlnaHQu
dmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAg
ICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVy
biBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxl
c3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwg
QGxlZnQudmFsdWUgKiBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVk
aWF0ZQorICBkZWYgZm9sZAorICAgIEBjaGlsZCA9IEBjaGlsZC5mb2xkCisgICAgcmV0dXJuIHNl
bGYgdW5sZXNzIEBjaGlsZC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVP
cmlnaW4sIC1AY2hpbGQudmFsdWUpCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2ZUFmdGVyU2V0dGluZ3Mob2Zmc2V0cywgc2l6ZXMp
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBDb21waWxl
IGFzc2VtYmx5IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4gICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisg
IGRlZiByZXNvbHZlKG9mZnNldHMsIHNpemVzKQorICAgIGRlbWFjcm9pZnkoe30pLnJlc29sdmVP
ZmZzZXRzKG9mZnNldHMsIHNpemVzKS5mb2xkCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcz
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitjbGFzcyBSZWdpc3Rl
cklECisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQw
IiwgImEwIiwgInIwIiwgInQxIiwgImExIiwgInIxIiwgInQyIiwgInQzIgorICAgICAgdHJ1ZQor
ICAgIHdoZW4gInQ0IiwgImNmciIKKyAgICAgIGZhbHNlCisgICAgZWxzZQorICAgICAgcmFpc2UK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIGNhc2UgbmFt
ZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVu
IDpieXRlCisgICAgICAgICIlYWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlYXgiCisg
ICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYXgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNl
CisgICAgICBlbmQKKyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgIGNhc2Uga2luZAor
ICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWRsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAg
ICAiJWR4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWR4IgorICAgICAgZWxzZQorICAg
ICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDIiCisgICAgICBjYXNlIGtpbmQKKyAg
ICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVjbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAg
IiVjeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVjeCIKKyAgICAgIGVsc2UKKyAgICAg
ICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQzIgorICAgICAgY2FzZSBraW5kCisgICAg
ICB3aGVuIDpieXRlCisgICAgICAgICIlYmwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIl
YngiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYngiCisgICAgICBlbHNlCisgICAgICAg
IHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0NCIKKyAgICAgIGNhc2Uga2luZAorICAgICAg
d2hlbiA6Ynl0ZQorICAgICAgICAiJXNpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVz
aSIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzaSIKKyAgICAgIGVsc2UKKyAgICAgICAg
cmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gImNmciIKKyAgICAgIGNhc2Uga2luZAorICAgICAg
d2hlbiA6Ynl0ZQorICAgICAgICAiJWRpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVk
aSIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkaSIKKyAgICAgIGVsc2UKKyAgICAgICAg
cmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInNwIgorICAgICAgY2FzZSBraW5kCisgICAgICB3
aGVuIDpieXRlCisgICAgICAgICIlc3BsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNw
IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZXNwIgorICAgICAgZWxzZQorICAgICAgICBy
YWlzZQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisg
IGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisg
ICAgcmFpc2UgdW5sZXNzIGtpbmQgPT0gOmRvdWJsZQorICAgIGNhc2UgbmFtZQorICAgIHdoZW4g
ImZ0MCIsICJmYTAiLCAiZnIiCisgICAgICAiJXhtbTAiCisgICAgd2hlbiAiZnQxIiwgImZhMSIK
KyAgICAgICIleG1tMSIKKyAgICB3aGVuICJmdDIiLCAiZmEyIgorICAgICAgIiV4bW0yIgorICAg
IHdoZW4gImZ0MyIsICJmYTMiCisgICAgICAiJXhtbTMiCisgICAgd2hlbiAiZnQ0IgorICAgICAg
IiV4bW00IgorICAgIHdoZW4gImZ0NSIKKyAgICAgICIleG1tNSIKKyAgICBlbHNlCisgICAgICBy
YWlzZQorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioj
e3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVm
IHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiJCN7dmFsdWV9IgorICBlbmQKKyAgZGVmIHg4NkNhbGxP
cGVyYW5kKGtpbmQpCisgICAgIiN7dmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNz
CisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4
ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6
aW50KX0pIgorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9w
ZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgZGVmIHN1cHBv
cnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2lu
ZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSwgI3tpbmRl
eC54ODZPcGVyYW5kKDppbnQpfSwgI3tzY2FsZX0pIgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9w
ZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2b3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2Ns
YXNzIEFic29sdXRlQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisg
IGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje2FkZHJlc3MudmFsdWV9
IgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7YWRkcmVzcy52
YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgIGRlZiB4ODZMYWJl
bAorICAgIHNhbml0aXplTGFiZWxOYW1lKG5hbWUpCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJh
bmQoa2luZCkKKyAgICB4ODZMYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVm
ZXJlbmNlCisgIGRlZiB4ODZMYWJlbAorICAgICJMX29mZmxpbmVhc21fIituYW1lWzEuLi0xXQor
ICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgeDg2TGFiZWwKKyAgZW5kCitl
bmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24KKyAgZGVmIHg4Nk9wZXJhbmRzKCpraW5kcykKKyAgICBy
YWlzZSB1bmxlc3Mga2luZHMuc2l6ZSA9PSBvcGVyYW5kcy5zaXplCisgICAgcmVzdWx0ID0gW10K
KyAgICBraW5kcy5zaXplLnRpbWVzIHsKKyAgICAgIHwgaWR4IHwKKyAgICAgIHJlc3VsdCA8PCBv
cGVyYW5kc1tpZHhdLng4Nk9wZXJhbmQoa2luZHNbaWR4XSkKKyAgICB9CisgICAgcmVzdWx0Lmpv
aW4oIiwgIikKKyAgZW5kCisKKyAgZGVmIHg4NlN1ZmZpeChraW5kKQorICAgIGNhc2Uga2luZAor
ICAgIHdoZW4gOmJ5dGUKKyAgICAgICJiIgorICAgIHdoZW4gOmhhbGYKKyAgICAgICJ3IgorICAg
IHdoZW4gOmludAorICAgICAgImwiCisgICAgd2hlbiA6ZG91YmxlCisgICAgICAic2QiCisgICAg
ZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3BX
aXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBudW1PcGVyYW5kcykKKyAgICBpZiBudW1PcGVy
YW5kcyA9PSAzCisgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAk
YXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7
b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNpZiBvcGVyYW5kc1sxXSA9
PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisg
ICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiXHRtb3Yje3g4NlN1ZmZpeChraW5kKX0gI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5k
CisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVu
ZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcChvcGNvZGUsIGtpbmQpCisgICAgaGFuZGxl
WDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXplKQorICBlbmQK
KyAgCisgIGRlZiBoYW5kbGVYODZTaGlmdChvcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNb
MF0uaXNfYT8gSW1tZWRpYXRlIG9yIG9wZXJhbmRzWzBdID09IFJlZ2lzdGVySUQuZm9yTmFtZShu
aWwsICJ0MiIpCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVs
c2UKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmlu
dCl9LCAlZWN4IgorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAlY2wsICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYg
aGFuZGxlWDg2RG91YmxlQnJhbmNoKGJyYW5jaE9wY29kZSwgbW9kZSkKKyAgICBjYXNlIG1vZGUK
KyAgICB3aGVuIDpub3JtYWwKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0iCisgICAgd2hlbiA6cmV2ZXJzZQorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpk
b3VibGUpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSBtb2RlLmluc3BlY3QKKyAgICBlbmQKKyAg
ICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9Igor
ICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlKG9wY29kZVN1ZmZpeCwga2luZCkK
KyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzBdLnZhbHVl
ID09IDAgYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXgg
PT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qj
e3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBl
bHNpZiBvcGVyYW5kc1sxXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzFdLnZhbHVlID09
IDAgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0g
ImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4
NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNl
CisgICAgICAkYXNtLnB1dHMgIlx0Y21wI3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludEJyYW5jaChicmFuY2hPcGNvZGUsIGtp
bmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShicmFuY2hPcGNvZGVbMS4uLTFdLCBraW5kKQor
ICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS54ODZMYWJlbH0i
CisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmQpCisgICAg
aWYgb3BlcmFuZC5zdXBwb3J0czhCaXRPblg4NgorICAgICAgJGFzbS5wdXRzICJcdCN7c2V0T3Bj
b2RlfSAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9IgorICAgICAgJGFzbS5wdXRzICJcdG1v
dnpibCAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmQueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZC54ODZP
cGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHQje3NldE9wY29kZX0gJWFs
IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAlYWwsICVlYXgiCisgICAgICAkYXNtLnB1dHMg
Ilx0eGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlU2V0KHNldE9wY29kZSwga2luZCkKKyAg
ICBoYW5kbGVYODZJbnRDb21wYXJlKHNldE9wY29kZVszLi4tMV0sIGtpbmQpCisgICAgaGFuZGxl
WDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHNbMl0pCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4
NlRlc3Qoa2luZCkKKyAgICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgICAgY2FzZSBvcGVyYW5kcy5z
aXplCisgICAgd2hlbiAyCisgICAgICBtYXNrID0gSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAt
MSkKKyAgICB3aGVuIDMKKyAgICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICAgIGVsc2UKKyAgICAg
IHJhaXNlICJFeHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMsIGJ1dCBnb3QgI3tvcGVyYW5kcy5zaXpl
fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICAgIAorICAgIGlmIG1hc2suaXNf
YT8gSW1tZWRpYXRlIGFuZCBtYXNrLnZhbHVlID09IC0xCisgICAgICBpZiB2YWx1ZS5pc19hPyBS
ZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7
dmFsdWUueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAg
ICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiXHRjbXAje3g4NlN1ZmZpeChraW5kKX0gJDAsICN7
dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICAkYXNt
LnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje21hc2sueDg2T3BlcmFuZChraW5kKX0s
ICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhh
bmRsZVg4NkJyYW5jaFRlc3QoYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qo
a2luZCkKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHMubGFzdC54
ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldFRlc3Qoc2V0T3Bjb2RlLCBr
aW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2Rl
LCBvcGVyYW5kcy5sYXN0KQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcEJyYW5jaChvcGNv
ZGUsIGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhv
cGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQor
ICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgd2hlbiAzCisg
ICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICByYWlzZSBzZWxm
Lmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7anVt
cFRhcmdldC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlN1YkJyYW5jaChi
cmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSA0IGFuZCBvcGVyYW5k
c1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3tvcGVyYW5kc1sy
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgZWxzZQorICAgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMoInN1YiN7eDg2U3VmZml4
KGtpbmQpfSIsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGVuZAorICAgIGNhc2Ugb3Bl
cmFuZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisg
ICAgd2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAg
ICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hP
cGNvZGV9ICN7anVtcFRhcmdldC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGxvd2VyWDg2
CisgICAgJGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICBjYXNlIG9wY29kZQorICAg
IHdoZW4gImFkZGkiLCAiYWRkcCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3Bl
cmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sx
XS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19h
PyBSZWdpc3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAgICAg
ICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICRhc20ucHV0
cyAiXHRtb3ZsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAkYXNtLnB1dHMgIlx0bGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
ICAgZW5kCisgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlz
X2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJl
Z2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVy
SUQKKyAgICAgICAgJGFzbS5wdXRzICJcdGxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5l
dyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3t4
ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAgd2hl
biAiYW5kaSIsICJhbmRwIgorICAgICAgaGFuZGxlWDg2T3AoImFuZGwiLCA6aW50KQorICAgIHdo
ZW4gImxzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2FsbCIsIDppbnQpCisgICAgd2hl
biAibXVsaSIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNf
YT8gSW1tZWRpYXRlCisgICAgICAgICRhc20ucHV0cyAiXHRpbXVsbCAje3g4Nk9wZXJhbmRzKDpp
bnQsIDppbnQsIDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgIyBGSVhNRTogY291bGQgZG8g
c29tZSBwZWVwaG9sZSBpbiBjYXNlIHRoZSBsZWZ0IG9wZXJhbmQgaXMgaW1tZWRpYXRlIGFuZCBp
dCdzCisgICAgICAgICMgYSBwb3dlciBvZiB0d28uCisgICAgICAgIGhhbmRsZVg4Nk9wKCJpbXVs
bCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJuZWdpIgorICAgICAgJGFzbS5wdXRzICJc
dG5lZ2wgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAibm90aSIKKyAgICAgICRhc20u
cHV0cyAiXHRub3RsICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm9yaSIsICJvcnAi
CisgICAgICBoYW5kbGVYODZPcCgib3JsIiwgOmludCkKKyAgICB3aGVuICJyc2hpZnRpIgorICAg
ICAgaGFuZGxlWDg2U2hpZnQoInNhcmwiLCA6aW50KQorICAgIHdoZW4gInVyc2hpZnRpIgorICAg
ICAgaGFuZGxlWDg2U2hpZnQoInNocmwiLCA6aW50KQorICAgIHdoZW4gInN1YmkiLCAic3VicCIK
KyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNb
Ml0KKyAgICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAg
ICAgICAgaGFuZGxlWDg2T3AoInN1YmwiLCA6aW50KQorICAgICAgZW5kCisgICAgd2hlbiAieG9y
aSIsICJ4b3JwIgorICAgICAgaGFuZGxlWDg2T3AoInhvcmwiLCA6aW50KQorICAgIHdoZW4gImxv
YWRpIiwgInN0b3JlaSIsICJsb2FkcCIsICJzdG9yZXAiCisgICAgICAkYXNtLnB1dHMgIlx0bW92
bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICB3aGVuICJsb2FkYiIKKyAgICAgICRh
c20ucHV0cyAiXHRtb3Z6YmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGgiCisgICAgICAkYXNt
LnB1dHMgIlx0bW92endsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICRhc20u
cHV0cyAiXHRtb3ZiICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0iCisgICAgd2hlbiAibG9h
ZGQiLCAibW92ZWQiLCAic3RvcmVkIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNkICN7eDg2T3Bl
cmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImFkZGQiCisgICAgICAkYXNtLnB1
dHMgIlx0YWRkc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAi
ZGl2ZCIKKyAgICAgICRhc20ucHV0cyAiXHRkaXZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpk
b3VibGUpfSIKKyAgICB3aGVuICJzdWJkIgorICAgICAgJGFzbS5wdXRzICJcdHN1YnNkICN7eDg2
T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gIm11bGQiCisgICAgICAkYXNt
LnB1dHMgIlx0bXVsc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hl
biAic3FydGQiCisgICAgICAkYXNtLnB1dHMgIlx0c3FydHNkICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAg
d2hlbiAiY2kyZCIKKyAgICAgICRhc20ucHV0cyAiXHRjdnRzaTJzZCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAg
IHdoZW4gImJkZXEiCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZGVx
IikKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNt
LnB1dHMgIlx0anAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQp
Lng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhj
b2RlT3JpZ2luLCBvcGVyYW5kc1syXSkueDg2TGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93
ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRuZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2go
ImpuZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRndCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJy
YW5jaCgiamEiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkRv
dWJsZUJyYW5jaCgiamFlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0IgorICAgICAgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKCJqYSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHRlcSIKKyAgICAg
IGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRlcXVu
IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwpCisgICAgd2hlbiAi
YmRuZXF1biIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4i
KQorICAgICAgaXNFcXVhbCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgICRh
c20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0anAg
I3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4NkxhYmVsfSIK
KyAgICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBp
c0VxdWFsKS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICAg
ICRhc20ucHV0cyAiXHRqbXAgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICBpc0VxdWFs
Lmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkZ3R1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJy
YW5jaCgiamIiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAgIGhhbmRsZVg4
NkRvdWJsZUJyYW5jaCgiamJlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdHVuIgorICAgICAg
aGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRsdGVxdW4i
CisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3JtYWwpCisgICAgd2hlbiAi
YnRkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAk
YXNtLnB1dHMgIlx0Y21wbCAkMHg4MDAwMDAwMCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAg
IHdoZW4gInRkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgd2hlbiAiYmNkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgICAkYXNtLnB1dHMgIlx0dGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQp
fSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRq
ZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnRzaTJzZCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAi
XHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAg
ICAgJGFzbS5wdXRzICJcdGpwICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAgJGFzbS5w
dXRzICJcdGpuZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJtb3ZkeiIKKyAg
ICAgICRhc20ucHV0cyAiXHR4b3JwZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gInBvcCIKKyAg
ICAgICRhc20ucHV0cyAiXHRwb3AgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICB3aGVuICJwdXNoIgorICAgICAgJGFzbS5wdXRzICJcdHB1c2ggI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAg
aWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdIGFuZCBvcGVyYW5kc1sxXS5p
c19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHR4b3JsICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICBlbHNpZiBvcGVyYW5kc1swXSAhPSBvcGVyYW5kc1sxXQorICAgICAgICAkYXNtLnB1dHMgIlx0
bW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgIGVuZAorICAgIHdoZW4gIm5v
cCIKKyAgICAgICRhc20ucHV0cyAiXHRub3AiCisgICAgd2hlbiAiYmllcSIsICJicGVxIgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDppbnQpCisgICAgd2hlbiAiYmluZXEiLCAiYnBu
ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDppbnQpCisgICAgd2hlbiAiYmlh
IiwgImJwYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6aW50KQorICAgIHdoZW4g
ImJpYWVxIiwgImJwYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6aW50KQor
ICAgIHdoZW4gImJpYiIsICJicGIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmlu
dCkKKyAgICB3aGVuICJiaWJlcSIsICJicGJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgi
amJlIiwgOmludCkKKyAgICB3aGVuICJiaWd0IiwgImJwZ3QiCisgICAgICBoYW5kbGVYODZJbnRC
cmFuY2goImpnIiwgOmludCkKKyAgICB3aGVuICJiaWd0ZXEiLCAiYnBndGVxIgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6aW50KQorICAgIHdoZW4gImJpbHQiLCAiYnBsdCIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6aW50KQorICAgIHdoZW4gImJpbHRlcSIsICJi
cGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsZSIsIDppbnQpCisgICAgd2hlbiAi
YmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6Ynl0ZSkKKyAgICB3aGVuICJi
Ym5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmJ5dGUpCisgICAgd2hlbiAi
YmJhIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDpieXRlKQorICAgIHdoZW4gImJi
YWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6Ynl0ZSkKKyAgICB3aGVuICJi
YmIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJi
ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRlKQorICAgIHdoZW4gImJi
Z3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJn
dGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6Ynl0ZSkKKyAgICB3aGVuICJi
Ymx0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDpieXRlKQorICAgIHdoZW4gImJi
bHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6Ynl0ZSkKKyAgICB3aGVu
ICJidGlvIiwgImJ0cG8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDppbnQpCisg
ICAgd2hlbiAiYnRpcyIsICJidHBzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6
aW50KQorICAgIHdoZW4gImJ0aXoiLCAiYnRweiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3Qo
Imp6IiwgOmludCkKKyAgICB3aGVuICJidGlueiIsICJidHBueiIKKyAgICAgIGhhbmRsZVg4NkJy
YW5jaFRlc3QoImpueiIsIDppbnQpCisgICAgd2hlbiAiYnRibyIKKyAgICAgIGhhbmRsZVg4NkJy
YW5jaFRlc3QoImpvIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRicyIKKyAgICAgIGhhbmRsZVg4NkJy
YW5jaFRlc3QoImpzIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRieiIKKyAgICAgIGhhbmRsZVg4NkJy
YW5jaFRlc3QoImp6IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRibnoiCisgICAgICBoYW5kbGVYODZC
cmFuY2hUZXN0KCJqbnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJqbXAiCisgICAgICAkYXNtLnB1dHMg
Ilx0am1wICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJh
ZGRpbyIsICJiYWRkcG8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbyIsIDpp
bnQpCisgICAgd2hlbiAiYmFkZGlzIiwgImJhZGRwcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNo
KCJhZGRsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJiYWRkaXoiLCAiYmFkZHB6IgorICAgICAg
aGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJhZGRpbnoi
LCAiYmFkZHBueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpueiIsIDppbnQp
CisgICAgd2hlbiAiYnN1YmlvIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbyIsIDppbnQp
CisgICAgd2hlbiAiYnN1YmlzIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqcyIsIDppbnQp
CisgICAgd2hlbiAiYnN1Yml6IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqeiIsIDppbnQp
CisgICAgd2hlbiAiYnN1YmlueiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam56IiwgOmlu
dCkKKyAgICB3aGVuICJibXVsaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAi
am8iLCA6aW50KQorICAgIHdoZW4gImJtdWxpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJp
bXVsbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm11bGl6IgorICAgICAgaGFuZGxlWDg2T3BC
cmFuY2goImltdWxsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJibXVsaW56IgorICAgICAgaGFu
ZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYm9yaW8iCisg
ICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJib3Jp
cyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianMiLCA6aW50KQorICAgIHdoZW4g
ImJvcml6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqeiIsIDppbnQpCisgICAg
d2hlbiAiYm9yaW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqbnoiLCA6aW50
KQorICAgIHdoZW4gImJyZWFrIgorICAgICAgJGFzbS5wdXRzICJcdGludCAkMyIKKyAgICB3aGVu
ICJjYWxsIgorICAgICAgJGFzbS5wdXRzICJcdGNhbGwgI3tvcGVyYW5kc1swXS54ODZDYWxsT3Bl
cmFuZCg6aW50KX0iCisgICAgd2hlbiAicmV0IgorICAgICAgJGFzbS5wdXRzICJcdHJldCIKKyAg
ICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRl
IiwgOmludCkKKyAgICB3aGVuICJjaW5lcSIsICJjcG5lcSIKKyAgICAgIGhhbmRsZVg4NkludENv
bXBhcmVTZXQoInNldG5lIiwgOmludCkKKyAgICB3aGVuICJjaWEiLCAiY3BhIgorICAgICAgaGFu
ZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YSIsIDppbnQpCisgICAgd2hlbiAiY2lhZXEiLCAiY3Bh
ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRhZSIsIDppbnQpCisgICAgd2hl
biAiY2liIiwgImNwYiIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGIiLCA6aW50
KQorICAgIHdoZW4gImNpYmVxIiwgImNwYmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNl
dCgic2V0YmUiLCA6aW50KQorICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgIGhhbmRsZVg4
NkludENvbXBhcmVTZXQoInNldGciLCA6aW50KQorICAgIHdoZW4gImNpZ3RlcSIsICJjcGd0ZXEi
CisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnZSIsIDppbnQpCisgICAgd2hlbiAi
Y2lsdCIsICJjcGx0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bCIsIDppbnQp
CisgICAgd2hlbiAiY2lsdGVxIiwgImNwbHRlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVT
ZXQoInNldGxlIiwgOmludCkKKyAgICB3aGVuICJ0aW8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0
KCJzZXRvIiwgOmludCkKKyAgICB3aGVuICJ0aXMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJz
ZXRzIiwgOmludCkKKyAgICB3aGVuICJ0aXoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6
IiwgOmludCkKKyAgICB3aGVuICJ0aW56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoi
LCA6aW50KQorICAgIHdoZW4gInRibyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6
Ynl0ZSkKKyAgICB3aGVuICJ0YnMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmJ5
dGUpCisgICAgd2hlbiAidGJ6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDpieXRl
KQorICAgIHdoZW4gInRibnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDpieXRl
KQorICAgIHdoZW4gInBlZWsiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzBd
LnZhbHVlICogNH0oJWVzcCksICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
d2hlbiAicG9rZSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0udmFsdWUgKiA0fSglZXNwKSIKKyAgICB3aGVuICJj
ZHFpIgorICAgICAgJGFzbS5wdXRzICJcdGNkcSIKKyAgICB3aGVuICJpZGl2aSIKKyAgICAgICRh
c20ucHV0cyAiXHRpZGl2bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdo
ZW4gImZpaTJkIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRh
c20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03Igor
ICAgICAgJGFzbS5wdXRzICJcdHBzbGxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0
cG9yICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4g
ImZkMmlpIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20u
cHV0cyAiXHRtb3ZzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIK
KyAgICAgICRhc20ucHV0cyAiXHRwc3JscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJc
dG1vdnNkICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UK
KyAgICAgIHJhaXNlICJCYWQgb3Bjb2RlOiAje29wY29kZX0iCisgICAgZW5kCisgIGVuZAorZW5k
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlv
bktpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKyNkZWZpbmUgQ29kZVNwZWNpYWxpemF0
aW9uS2luZF9oCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIENvZGVTcGVjaWFsaXphdGlvbktp
bmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkocmV2aXNpb24g
MTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQ29tbW9uU2xvd1Bh
dGhzX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXph
dGlvbktpbmQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNB
cnJheS5oIgogCkBAIC00MSw2ICs0MiwzOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNl
IENvbW1vblNsb3dQYXRocyB7CiAKK0FMV0FZU19JTkxJTkUgRXhlY1N0YXRlKiBhcml0eUNoZWNr
Rm9yKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0
aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24o
KSk7CisgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUo
KS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzID0gZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKKworICAgIC8v
IFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9m
IHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgorICAgIGlmICghcmVnaXN0ZXJG
aWxlLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSk7CisKKyAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5
IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRz
IHdpdGggdW5kZWZpbmVkLgorICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CisgICAgUmVnaXN0ZXIqIHNy
YyA9IGV4ZWMtPnJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyKiBkc3QgPSBleGVjLT5yZWdpc3Rl
cnMoKSArIGRlbHRhOworCisgICAgaW50IGk7CisgICAgaW50IGVuZCA9IC1FeGVjU3RhdGU6Om9m
ZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgZm9yIChpID0gLTE7IGkg
Pj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKKworICAgIGVuZCAtPSBkZWx0
YTsKKyAgICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9IGpzVW5kZWZp
bmVkKCk7CisKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBFeGVjU3RhdGU6OmNyZWF0ZShkc3Qp
OworICAgIEFTU0VSVCgodm9pZCopbmV3RXhlYyA8PSByZWdpc3RlckZpbGUtPmVuZCgpKTsKKyAg
ICByZXR1cm4gbmV3RXhlYzsKK30KKwogQUxXQVlTX0lOTElORSBib29sIG9wSW5zdGFuY2VPZlNs
b3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGJhc2VWYWwsIEpTVmFs
dWUgcHJvdG8pCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0NlbGwoKSB8fCAhYmFzZVZhbC5pc0Nl
bGwoKSB8fCAhcHJvdG8uaXNDZWxsKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCisjaW5jbHVkZSAiRXhlY3V0aW9uSGFybmVz
cy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVERyaXZlci5oIgogI2luY2x1ZGUg
IlBhcnNlci5oIgpAQCAtODQsNyArODUsNyBAQCBJbnRyaW5zaWMgTmF0aXZlRXhlY3V0YWJsZTo6
aW50cmluc2ljKCkgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIHZvaWQgamV0dGlzb25D
b2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8VD4mIGNvZGVCbG9jaykK
IHsKLSAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxp
bmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5n
ZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKICAg
ICBPd25QdHI8VD4gY29kZUJsb2NrVG9KZXR0aXNvbiA9IGNvZGVCbG9jay5yZWxlYXNlKCk7CiAg
ICAgY29kZUJsb2NrID0gc3RhdGljX3BvaW50ZXJfY2FzdDxUPihjb2RlQmxvY2tUb0pldHRpc29u
LT5yZWxlYXNlQWx0ZXJuYXRpdmUoKSk7CkBAIC0xNjcsOSArMTY4LDMwIEBAIEpTT2JqZWN0KiBF
dmFsRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXoKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3Zv
aWQgRXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQor
eworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwg
bV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklU
KCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCitpbmxpbmUgY29u
c3QgY2hhciogc2FtcGxpbmdEZXNjcmlwdGlvbihKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7
CisgICAgc3dpdGNoIChqaXRUeXBlKSB7CisgICAgY2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rOgorICAgICAgICByZXR1cm4gIkludGVycHJldGVyIENvbXBpbGF0aW9uIChUT1RBTCkiOwor
ICAgIGNhc2UgSklUQ29kZTo6QmFzZWxpbmVKSVQ6CisgICAgICAgIHJldHVybiAiQmFzZWxpbmUg
Q29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6CisgICAgICAg
IHJldHVybiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIEpT
T2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywg
U2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUp
CiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2Rl
OjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29t
cGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNh
bXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAg
IFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTIxMCw3ICsyMzIsNyBAQCBKU09iamVjdCogRXZh
bEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAg
ICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxv
Y2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1
dGlvbigqZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRU
eXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtMjk1LDkgKzMxNywxNSBAQCBK
U09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpCiAgICAgcmV0dXJuIGVycm9y
OwogfQogCit2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRl
KGdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29k
ZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsK
K30KKwogSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0
YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5
cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBl
ID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCki
IDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxp
bmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJM
RShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtMzM2LDcgKzM2NCw3IEBAIEpT
T2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGUKICAgICB9CiAKICNpZiBFTkFC
TEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoKmdsb2JhbERhdGEsIG1f
cHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFw
cmVwYXJlRm9yRXhlY3V0aW9uKCpnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0
Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC00
MTIsNyArNDQwLDcgQEAgRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Ygog
ICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAgIHJlc3VsdCA9IHN0YXRp
Y19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4ocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKTsKICAgICBB
U1NFUlQocmVzdWx0KTsKLSAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1
bHQtPmdldEpJVFR5cGUoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQzOCw2ICs0
NjYsMTggQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZU9wdAogICAgIHJl
dHVybiBlcnJvcjsKIH0KIAordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JD
YWxsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENv
bXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDYWxs
LCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3lt
Ym9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxl
Rm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3Vs
dCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxv
Y2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3Ry
dWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQo
KSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEZ1bmN0aW9uQ29k
ZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja1dpdGhCeXRlY29kZUZvcihDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVC
bG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwpAQCAtNDgyLDcgKzUyMiw3IEBAIFBh
c3NPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+IEZ1bmN0aW9uRXgKIAogSlNPYmplY3QqIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNj
b3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQog
ewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBp
bGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1w
bGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CkBAIC01MDQsNyArNTQ0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0Zv
ckNhbGwtPnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICgh
aml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fY29k
ZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0
eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlv
bkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9q
aXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRh
YmxlLCBqaXRUeXBlLCBDb2RlRm9yQ2FsbCkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAK
QEAgLTUyNCw3ICs1NjQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxl
Rm9yCiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJ
bnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwg
SklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5n
UmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGls
YXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGlu
Z1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAg
ICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC01NDYs
NyArNTg2LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAg
IG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+c2hhcmVkU3ltYm9sVGFi
bGUoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFw
cHJvcHJpYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1f
aml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ss
IG1fc3ltYm9sVGFibGUsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhl
Y3V0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0
Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1f
c3ltYm9sVGFibGUsIGppdFR5cGUsIENvZGVGb3JDb25zdHJ1Y3QpKQogICAgICAgICByZXR1cm4g
MDsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUg
RXhlY3V0YWJsZV9oCiAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgorI2luY2x1ZGUgIkNvZGVTcGVj
aWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtMzksMTIgKzQwLDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGNsYXNzIERlYnVnZ2VyOwogICAgIGNsYXNzIEV2YWxDb2RlQmxvY2s7
CiAgICAgY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgU2NvcGVDaGFp
bk5vZGU7CiAKICAgICBzdHJ1Y3QgRXhjZXB0aW9uSW5mbzsKICAgICAKLSAgICBlbnVtIENvZGVT
cGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogICAg
IGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBp
bGF0aW9uIH07CiAKICAgICBpbmxpbmUgYm9vbCBpc0NhbGwoQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kKQpAQCAtMzE5LDYgKzMyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAg
ICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC0zMzgsNiArMzQwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQg
amV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENv
bXBpbGUoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBFdmFsQ29kZUJsb2NrJiBn
ZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC0zODQsNiArMzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgfTsKIAogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1
dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAg
IHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTQx
MSw2ICs0MTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkK
ICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAg
ICAgIHZvaWQgaml0Q29tcGlsZShKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIFBy
b2dyYW1Db2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkKQEAgLTQ1Myw2ICs0NTgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBT
Y3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5
cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC01MDgsNiArNTE0LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlz
b25PcHRpbWl6ZWRDb2RlRm9yQ2FsbChKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRD
b21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNH
ZW5lcmF0ZWRGb3JDYWxsKCkgY29uc3QKQEAgLTUzNSw2ICs1NDIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGlt
aXplZENvZGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29t
cGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wg
aXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3QoKSBjb25zdApAQCAtNTgyLDYgKzU5MCwxNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25z
dHJ1Y3QoZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIHZvaWQgaml0Q29tcGlsZUZvcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGtpbmQg
PT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgICAgICBqaXRDb21waWxlRm9yQ2FsbChnbG9i
YWxEYXRhKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgICAgIGppdENv
bXBpbGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CisgICAgICAgIH0KICNlbmRpZgogICAgICAg
ICAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9u
SGFybmVzcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRXhlY3V0aW9u
SGFybmVzc19oCisjZGVmaW5lIEV4ZWN1dGlvbkhhcm5lc3NfaAorCisjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiSklURHJpdmVyLmgiCisj
aW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KK2lubGluZSBib29sIHByZXBhcmVGb3JFeGVjdXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVC
bG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworI2lm
IEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkp
IHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisg
ICAgICAgIExMSW50OjpnZXRFbnRyeXBvaW50KGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwg
aml0Q29kZSk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZiAv
LyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2Jh
bERhdGEsIGNvZGVCbG9jaywgaml0Q29kZSwgaml0VHlwZSk7Cit9CisKK2lubGluZSBib29sIHBy
ZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0
cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxl
KiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNC
YXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cg
bGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQo
Z2xvYmFsRGF0YSwga2luZCwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAg
ICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGtp
bmQpOworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUZ1bmN0
aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdENvZGVX
aXRoQXJpdHlDaGVjaywgc3ltYm9sVGFibGUsIGppdFR5cGUpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKKyNlbmRpZiAvLyBFeGVjdXRpb25IYXJu
ZXNzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0
aW9uLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4g
cmVnaXN0ZXJBcnJheSA9IGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPlty
ZWdpc3RlckFycmF5U2l6ZV0pOwogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lz
dGVycyA9IHJlZ2lzdGVyQXJyYXkuZ2V0KCkgKyByZWdpc3Rlck9mZnNldDsKLQorICAgICAgICAK
ICAgICAgICAgLy8gQ29weSBhbGwgYXJndW1lbnRzIHRoYXQgY2FuIGJlIGNhcHR1cmVkIGJ5IG5h
bWUgb3IgYnkgdGhlIGFyZ3VtZW50cyBvYmplY3QuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbV9udW1DYXB0dXJlZEFyZ3M7ICsraSkgewogICAgICAgICAgICAgaW50IGluZGV4ID0gQ2Fs
bEZyYW1lOjphcmd1bWVudE9mZnNldChpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKIAogICAgIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRl
QmFycmllcjxVbmtub3duPiB7CiAgICAgICAgIHR5cGVkZWYgV3JpdGVCYXJyaWVyPFVua25vd24+
IEJhc2U7CkBAIC0xMjIsNiArMTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAg
IGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxr
ZXI7CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIFN0cnVjdHVyZTsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNj
cmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OworICAgIGNsYXNzIFN0cnVjdHVy
ZTsKIAogICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcywKQEAgLTE2NCw2ICsxNjUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0
ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAg
CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAgICAgICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5
cGU7CiAgICAgY2xhc3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0Owor
ICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRh
YmxlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0xNDAs
NiArMTQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAg
ICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUs
IGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQx
LDYgKzE0MSw4IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAg
ICAsIGtleXdvcmRzKGFkb3B0UHRyKG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRlcnBy
ZXRlcigwKQogICAgICwgaGVhcCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFzc0lu
Zm8oJkpTQXJyYXk6OnNfaW5mbykKKyAgICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpTRmlu
YWxPYmplY3Q6OnNfaW5mbykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxhc3RT
Y3JhdGNoQnVmZmVyKDApCiAjZW5kaWYKQEAgLTIxNiw3ICsyMTgsNyBAQCBKU0dsb2JhbERhdGE6
OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcg
SklUVGh1bmtzKHRoaXMpKTsKICNlbmRpZgogCi0gICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUo
dGhpcy0+Y2FuVXNlSklUKCkpOworICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKCZsbGludERh
dGEsIHRoaXMtPmNhblVzZUpJVCgpKTsKIAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xsZWN0
KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuaAkocmV2aXNpb24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNiBAQAogI2RlZmlu
ZSBKU0dsb2JhbERhdGFfaAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlv
bi5oIgotI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hl
LmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhlYXAuaCIK
LSNpbmNsdWRlICJTdHJvbmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJK
SVRTdHVicy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIK
ICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgor
I2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJU
aW1lb3V0Q2hlY2tlci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYgKzY2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3Mg
SlNPYmplY3Q7CiAgICAgY2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJl
bmE7CiAgICAgY2xhc3MgUmVnRXhwQ2FjaGU7CkBAIC0yNDEsNiArMjQzLDEyIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247
CisKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOworICAg
ICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CisKKyAg
ICAgICAgTExJbnQ6OkRhdGEgbGxpbnREYXRhOworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAg
UmV0dXJuQWRkcmVzc1B0ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBob3N0
Q2FsbFJldHVyblZhbHVlOwpAQCAtMzQ2LDYgKzM1NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogI3Vu
ZGVmIHJlZ2lzdGVyVHlwZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNH
bG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKICAg
ICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAg
ICAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9u
UHJvdG90eXBlOwogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxDb2Rl
QmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFz
cyBSZWdFeHBDb25zdHJ1Y3RvcjsKQEAgLTMzNSw2ICszMzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFBy
b3BlcnR5SW5mbyosIGludCBjb3VudCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6
IEZvbGQgcmVzZXQgaW50byBpbml0LgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGlu
aXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CiAgICAgICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90
b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShy
ZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50
ZXJuYWxGdW5jdGlvbjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xh
c3MgTWFya2VkQmxvY2s7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNz
IFByb3BlcnR5TmFtZUFycmF5OwpAQCAtMjcxLDYgKzI3Miw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3Jh
Z2UgaW5saW5lU3RvcmFnZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gTm9ib2R5IHNob3Vs
ZCBldmVyIGFzayBhbnkgb2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0aGluZyBhbHJlYWR5IGtu
b3duIHRvIGJlIGEgSlNPYmplY3QuCiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdy
YXBwZXI7CiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7CkBAIC0zODMsNiAr
Mzg2LDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGV4
cGxpY2l0IEpTRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJl
LCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9u
IDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvciA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtOTYs
NiArOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlE
YXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKIAog
ICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTA1Nzcw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1N0
cmluZzsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBKU1N0cmluZyog
anNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmlu
ZyhFeGVjU3RhdGUqKTsKQEAgLTI0MCw2ICsyNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzb2x2ZVJvcGUoRXhl
Y1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIq
KSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFyKikgY29uc3Q7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZp
c2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZv
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkIHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJsZS4KICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8PCAxOwogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEgPDwgMjsKQEAg
LTg3LDYgKzg5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAog
ICAgICAgICBib29sIGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQo
ZmxhZyA8PSAoMSA8PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAgICAgICBib29s
IGlzU2V0T25GbGFnczIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8
PCA4KSk7IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxMDU3NzApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE2LDEwICsxMTYsOSBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlw
ZShFCiAgICAgcmV0dXJuIEpTTm90QW5PYmplY3Q6OmNyZWF0ZShleGVjKTsKIH0KIAotI2lmbmRl
ZiBOREVCVUcKIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIHsKLSAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IHNpemUgPSA2NDsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSAxMjg7
CiAgICAgc3RhdGljIGNoYXIgZGVzY3JpcHRpb25bc2l6ZV07CiAKICAgICBpZiAoISp0aGlzKQpA
QCAtMTI4LDE0ICsxMjcsMTQgQEAgY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogICAgICAg
ICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkludDMyOiAlZCIsIGFzSW50MzIoKSk7CiAg
ICAgZWxzZSBpZiAoaXNEb3VibGUoKSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHNu
cHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICVseCIsIGFzRG91YmxlKCks
IHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIoYXNEb3VibGUoKSkpOworICAgICAgICBzbnByaW50
ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWx4LCAlbGYiLCByZWludGVycHJldERvdWJs
ZVRvSW50cHRyKGFzRG91YmxlKCkpLCBhc0RvdWJsZSgpKTsKICNlbHNlCiAgICAgICAgIHVuaW9u
IHsKICAgICAgICAgICAgIGRvdWJsZSBhc0RvdWJsZTsKICAgICAgICAgICAgIHVpbnQzMl90IGFz
VHdvSW50MzJzWzJdOwogICAgICAgICB9IHU7CiAgICAgICAgIHUuYXNEb3VibGUgPSBhc0RvdWJs
ZSgpOwotICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAl
MDh4OiUwOHgiLCBhc0RvdWJsZSgpLCB1LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBd
KTsKKyAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICUwOHg6JTA4
eCwgJWxmIiwgdS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSwgYXNEb3VibGUoKSk7
CiAjZW5kaWYKICAgICB9IGVsc2UgaWYgKGlzQ2VsbCgpKQogICAgICAgICBzbnByaW50ZihkZXNj
cmlwdGlvbiwgc2l6ZSwgIkNlbGw6ICVwIiwgYXNDZWxsKCkpOwpAQCAtMTUyLDcgKzE1MSw2IEBA
IGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIAogICAgIHJldHVybiBkZXNjcmlwdGlvbjsK
IH0KLSNlbmRpZgogCiAvLyBUaGlzIGluIHRoZSBUb0ludDMyIG9wZXJhdGlvbiBpcyBkZWZpbmVk
IGluIHNlY3Rpb24gOS41IG9mIHRoZSBFQ01BLTI2MiBzcGVjLgogLy8gTm90ZSB0aGF0IHRoaXMg
b3BlcmF0aW9uIGlzIGlkZW50aWNhbCB0byBUb1VJbnQzMiBvdGhlciB0aGFuIHRvIGludGVycHJl
dGF0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZp
c2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMiw5ICsyMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSlNDZWxsKiBhc0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9v
bCBpc1ZhbGlkQ2FsbGVlKCk7CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGNoYXIqIGRlc2Ny
aXB0aW9uKCk7Ci0jZW5kaWYKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHRlbXBsYXRlIDxjbGFz
cyBUPiBKU1ZhbHVlKFdyaXRlQmFycmllckJhc2U8VD4pOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMTA1Nzcw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAKICAg
ICBjbGFzcyBKU1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAg
ICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmpl
Y3QgQmFzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
CShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTAgQEAgdW5zaWduZWQgbWF4aW11
bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saQogCiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0
aDsKIAoraW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2lu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBpbnQzMl90IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKQEAgLTEzNyw2ICsxNDEsMTAgQEAg
dm9pZCBpbml0aWFsaXplT3B0aW9ucygpCiAgICAgCiAgICAgU0VUKG1heGltdW1JbmxpbmluZ0Rl
cHRoLCA1KTsKIAorICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1V
cCwgICAgIC0xMDApOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55
dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKKyAgICBTRVQo
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbiwgICAgICAgICAgICAtMTAwKTsKKwogICAg
IFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwLCAgICAgLTEw
MDApOwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dh
cm1VcCwgLTUwMDApOwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1p
emVBbnl0aW1lU29vbiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOwpAQCAt
MTg1LDYgKzE5Myw4IEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIGlmIChjcHVzVG9V
c2UgPCAxKQogICAgICAgICBjcHVzVG9Vc2UgPSAxOwogICAgIAorICAgIGNwdXNUb1VzZSA9IDE7
CisgICAgCiAgICAgU0VUKG51bWJlck9mR0NNYXJrZXJzLCBjcHVzVG9Vc2UpOwogCiAgICAgQVNT
RVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uIDw9IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEwNTc3MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNiArMzcsMTAgQEAgZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0
cgogCiBleHRlcm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERlcHRoIG9mIGlu
bGluZSBzdGFjaywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMuCiAKK2V4
dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworZXh0
ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOwor
ZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogZXh0ZXJu
IGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGV4
dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2Fy
bVVwOwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXpl
QW55dGltZVNvb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNo
YWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVD
aGFpbi5oCShyZXZpc2lvbiAxMDU3NzApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY29wZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0
OwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
ICAgICBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAg
ICAgCkBAIC05MSw2ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNf
RVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW47CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5RGF0YTsKICAg
ICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsK
IAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoSlNHbG9i
YWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUlu
Zm8mLCBjb25zdCBDbGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYp
OwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJ
KHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU3Ry
dWN0dXJlOwogCiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlNDZWxsIHsKQEAg
LTc0LDYgKzc1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAog
ICAgICAgICBTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3duQXJyYXlQdHI8V3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTE4LDYgKzkxOCwxOCBAQAogI2Rl
ZmluZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCisvKiBPbiBzb21lIG9mIHRoZSBwbGF0Zm9ybXMg
d2hlcmUgd2UgaGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNvIGhhdmUgdGhlIAorICAgbG93LWxl
dmVsIGludGVycHJldGVyLiAqLworI2lmICFkZWZpbmVkKEVOQUJMRV9MTElOVCkgJiYgRU5BQkxF
KEpJVCkgJiYgUExBVEZPUk0oTUFDKSAmJiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBFTkFC
TEVfTExJTlQgMQorI2VuZGlmCisKKy8qIElmIHdlIGhhdmUgTExJbnQgZW5hYmxlZCBhbmQgdGhl
IEpJVCBlbmFibGVkLCB3ZSBhbHNvIGVuYWJsZSBPU1JpbmcgZnJvbQorICAgTExJbnQgdG8gdGhl
IEpJVC4gKi8KKyNpZiAhZGVmaW5lZChFTkFCTEVfTExJTlRfT1NSX1RPX0pJVCkgJiYgRU5BQkxF
KEpJVCkgJiYgRU5BQkxFKExMSU5UKQorI2RlZmluZSBFTkFCTEVfTExJTlRfT1NSX1RPX0pJVCAx
CisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9ERkdfSklUKSAmJiBFTkFCTEUoSklUKQog
LyogRW5hYmxlIHRoZSBERkcgSklUIG9uIFg4NiBhbmQgWDg2XzY0LiAgT25seSB0ZXN0ZWQgb24g
TWFjIGFuZCBHTlUvTGludXguICovCiAjaWYgKENQVShYODYpIHx8IENQVShYODZfNjQpKSAmJiAo
UExBVEZPUk0oTUFDKSB8fCBPUyhMSU5VWCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJKHJldmlzaW9uIDEwNTc3MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTg2LDYgKzg2LDggQEAgcHVibGljOgogCiAgICAgaXRlcmF0b3IgYmVnaW4oKTsKICAgICBp
dGVyYXRvciBlbmQoKTsKKyAgICAKKyAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBiZWdpbigp
ID09IGVuZCgpOyB9CiAKIHByaXZhdGU6CiAgICAgUmF3Tm9kZSBtX2hlYWRTZW50aW5lbDsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNp
b24gMTA1NzcwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBf
X0NGU3RyaW5nICogQ0ZTdHJpCiAvLyBMYW5kaW5nIHRoZSBmaWxlIG1vdmVzIGluIG9uZSBwYXRj
aCwgd2lsbCBmb2xsb3cgb24gd2l0aCBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgbmFtZXNwYWNlcy4K
IG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRvcjsKK2Ns
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3Qg
SWRlbnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yOwogc3RydWN0IElkZW50aWZpZXJMQ2hhckZy
b21VQ2hhclRyYW5zbGF0b3I7CiB9CkBAIC03Miw3ICs3Myw4IEBAIGNsYXNzIFN0cmluZ0ltcGwg
ewogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpTdWJzdHJpbmdUcmFuc2xhdG9yOwogICAgIGZyaWVu
ZCBzdHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEF0
b21pY1N0cmluZ0ltcGw7Ci0KKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRy
YWN0b3I7CisgICAgCiBwcml2YXRlOgogICAgIGVudW0gQnVmZmVyT3duZXJzaGlwIHsKICAgICAg
ICAgQnVmZmVySW50ZXJuYWwsCg==
</data>
<flag name="commit-queue"
          id="125142"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124199</attachid>
            <date>2012-01-26 15:48:23 -0800</date>
            <delta_ts>2012-01-26 15:54:33 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_52.diff</filename>
            <type>text/plain</type>
            <size>445200</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4MCBA
QAorMjAxMi0wMS0yNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9M
aW5rQnVmZmVyLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChK
U0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmg6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppc1NldCk6CisgICAgICAgIChK
U0M6OkNhbGxMaW5rU3RhdHVzOjpvcGVyYXRvciEpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJs
b2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRp
c29uKToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFt
Q29kZUJsb2NrOjpqaXRDb21waWxlSW1wbCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6
OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENv
bXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2Nh
cmRpbmdPcHBvcnR1bml0eSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0Q29tcGlsZSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YWRkTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpu
dW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZh
bHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rh
a2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFr
ZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtl
QW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1ZW50RXhpdFNp
dGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29vbik6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50RXhlY3V0ZUNv
dW50ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1
cy5oOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpHZXRCeUlkU3RhdHVzKToKKyAgICAg
ICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6d2FzU2VlbkluSklUKToKKyAgICAgICAgKiBieXRlY29k
ZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6TExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAo
SlNDOjpMTEludENhbGxMaW5rSW5mbzo6fkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpT
Qzo6TExJbnRDYWxsTGlua0luZm86OmlzTGlua2VkKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxs
TGlua0luZm86OnVubGluayk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpNZXRob2RDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6
CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJ
bnQpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAg
KiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnNldER1
bXBzR2VuZXJhdGVkQ29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1w
c0dlbmVyYXRlZENvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJh
dGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmUpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFzZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
b25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhdGNoKToK
KyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBh
YmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAg
ICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAgICAgKiBo
ZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoKKyAgICAgICAg
KiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJy
ZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjppc09wY29kZSk6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUpOgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2Rl
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVy
RmlsZS5oOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKToKKyAgICAg
ICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChK
U0M6OkpJVENvZGU6OmlzT3B0aW1pemluZ0pJVCk6CisgICAgICAgIChKU0M6OkpJVENvZGU6Omlz
QmFzZWxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6SklUQ29kZSk6CisgICAgICAg
ICogaml0L0pJVERyaXZlci5oOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlSWZBcHByb3ByaWF0
ZSk6CisgICAgICAgIChKU0M6OmppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUpOgorICAg
ICAgICAqIGppdC9KSVRFeGNlcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6aml0VGhyb3cpOgor
ICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZV
TkNUSU9OKToKKyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiBsbGlu
dDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRDb21tb24uaDogQWRkZWQuCisgICAgICAg
ICogbGxpbnQvTExJbnREYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpEYXRh
OjpEYXRhKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6On5EYXRhKToKKyAgICAgICAgKiBs
bGludC9MTEludERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpleGNl
cHRpb25JbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6b3Bjb2RlTWFw
KToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnRzLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkxMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTElu
dDo6Z2V0RXZhbEVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0UHJvZ3JhbUVu
dHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuaDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTElu
dEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVy
VGhyb3dJbkNhbGxlcik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhy
b3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAg
ICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhj
ZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX29wZXJhbmQpOgorICAgICAgICAo
SlNDOjpMTEludDo6bGxpbnRfdHJhY2VfdmFsdWUpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJ
TlRfSEVMUEVSX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6dHJhY2VGdW5jdGlvblByb2xv
Z3VlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNob3VsZEpJVCk6CisgICAgICAgIChKU0M6OkxM
SW50OjplbnRyeU9TUik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXNvbHZlR2xvYmFsKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRs
ZUhvc3RDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgIChK
U0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4K
KyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToK
KyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpM
TEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8pOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVu
Y3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50Ojpm
dW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpM
TEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBs
bGludC9MTEludFRodW5rcy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5j
cHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQu
CisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12
Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tl
bmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRy
YWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJi
OiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3Jl
Z2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9zZXR0aW5ncy5yYjogQWRk
ZWQuCisgICAgICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20veDg2LnJiOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvZGVTcGVjaWFs
aXphdGlvbktpbmQuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
aDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVC
bG9jayk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAg
ICAgKEpTQzo6c2FtcGxpbmdEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRh
YmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6
aml0Q29tcGlsZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50
ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJs
b2NrRm9yKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9y
Q2FsbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNv
bnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNh
bGxJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZv
ckNvbnN0cnVjdEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAg
KiBydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnByZXBh
cmVGb3JFeGVjdXRpb24pOgorICAgICAgICAoSlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OkpT
QWN0aXZhdGlvbjo6dGVhck9mZik6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6
CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBl
SW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpT
VmFsdWU6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAg
ICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZUNoYWluLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL1Nl
bnRpbmVsTGlua2VkTGlzdC5oOgorICAgICAgICAoV1RGOjpTZW50aW5lbExpbmtlZExpc3Q6Omlz
RW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKwogMjAxMi0wMS0yNiAg
TWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHJpbmc6Omxh
dGluMSgpIHNob3VsZCB0YWtlIGFkdmFudGFnZSBvZiA4IGJpdCBzdHJpbmdzCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzEx
LDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50
ZXJwcmV0ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3BhcnNlciIK
ICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vcnVudGltZSIKQEAgLTk0LDYgKzk1LDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwCiAKICAgICBqaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5jcHAKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKICAgICBq
aXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljLmNwcAogICAg
IGppdC9KSVRDYWxsMzJfNjQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
LmFtCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgamF2YXNjcmlwdGNvcmVfY3Bw
ZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCisJLUkkKHNyY2RpcikvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDYwNDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpA
QCAtODEsNiArODEsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
U3RhdHVzLmNwcCBcCkBAIC0xMDIsNiArMTAzLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTGluZUluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01l
dGhvZENhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRob2RDYWxsTGlua0luZm8uaCBcCkBAIC0yNzcsNiArMjc5LDggQEAgamF2YXNjcmlwdGNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Db21wYWN0SklUQ29kZU1h
cC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCisJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsMzJfNjQuY3BwIFwKQEAgLTMwMCw2ICszMDQsNyBAQCBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1
bmtKSVQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vcy13aW4zMi9zdGRib29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4z
Mi9zdGRpbnQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgg
XApAQCAtMzUwLDYgKzM1NSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xhc3NJbmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVj
aWFsaXphdGlvbktpbmQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaCBcCkBAIC0zNzgsNiArMzg0LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcg
QEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9kZWJ1Z2dlciBcCiAgICAgJCRT
T1VSQ0VfRElSL2ludGVycHJldGVyIFwKICAgICAkJFNPVVJDRV9ESVIvaml0IFwKKyAgICAkJFNP
VVJDRV9ESVIvbGxpbnQgXAogICAgICQkU09VUkNFX0RJUi9wYXJzZXIgXAogICAgICQkU09VUkNF
X0RJUi9wcm9maWxlciBcCiAgICAgJCRTT1VSQ0VfRElSL3J1bnRpbWUgXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcgQEAgU09VUkNF
UyArPSBcCiAgICAgaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCiAgICAgaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgXAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2Nh
dG9yLmNwcCBcCisgICAgaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKICAgICBqaXQvSklU
QXJpdGhtZXRpYy5jcHAgXAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwKICAgICBq
aXQvSklUQ2FsbC5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMwLDYgKzE3MzAsMTAgQEAK
IAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caml0
XEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcSklULmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBA
IC0xODE1LDYgKzE4MTksMTQgQEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIK
KwkJCU5hbWU9ImxsaW50IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u
XGxsaW50XExMSW50RGF0YS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxG
aWx0ZXIKIAkJCU5hbWU9ImludGVycHJldGVyIgogCQkJPgogCQkJPEZpbGUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNyw2ICs3LDE1IEBACiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQWdn
cmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExM
SW50IE9mZnNldHMgKi8gPSB7CisJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwQUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJMTEludCBPZmZzZXRzIiAq
LzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBH
ZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCisJCQkpOworCQkJbmFtZSA9ICJMTEludCBPZmZz
ZXRzIjsKKwkJCXByb2R1Y3ROYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CisJCX07CiAJCTY1RkIz
RjY2MDlEMTFFOTEwMEY0OURFQiAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhBZ2dyZWdhdGVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNjVGQjNGNzcw
OUQxMUVCRDAwRjQ5REVCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVn
YXRlVGFyZ2V0ICJEZXJpdmVkIFNvdXJjZXMiICovOwpAQCAtMTQsNiArMjMsOSBAQAogCQkJCTY1
RkIzRjY1MDlEMTFFOTEwMEY0OURFQiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJ
CQkJNUQzNURFRTEwQzdDMTQwQjAwODY0OEIyIC8qIEdlbmVyYXRlIERUcmFjZSBoZWFkZXIgKi8s
CiAJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3
MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBT
b3VyY2VzIjsKIAkJCXByb2R1Y3ROYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCX07CkBAIC00
OCw2ICs2MCwxMCBAQAogCQkwQkFDOTRBMDEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJp
Y3Rpb25WZXJpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZp
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
QkNEODM1NzE0ODU4NDUyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkNEODM1NDE0ODU4NDEyMDBFQTIw
MDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEJGMjhBMjkxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJGMjhB
MjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovOyB9OworCQkwRjBCODM5QTE0
QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyog
TExJbnRFbnRyeXBvaW50cy5jcHAgKi87IH07CisJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAv
KiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEI4
MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyog
TExJbnRUaHVua3MuY3BwICovOyB9OworCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4
NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTkxNEJDRjU2
MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBC
ODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQUExNEJDRjVCOTAwODg1
QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTgsOSArNzQsMTMgQEAKIAkJMEYwQjgzQjUxNEJDRjg2
MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhv
ZENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjYx
NEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRG
IC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyog
Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyog
TExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTVG
MTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAv
KiBDb21tb25TbG93UGF0aHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjE2RDcyNjE0MkMzOUMwMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTZENzI0MTQy
QzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwICovOyB9OwogCQkwRjIxQzI2ODE0QkU1RjY4
MDBBREM2NEIgLyogSklURHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0Mx
NEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBF
eGVjdXRpb25IYXJuZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlv
bktpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0YxNEJF
QUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBC
eXRlY29kZUNvbnZlbnRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYyNDJEQTcxM0YzQjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VI
YXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NkYx
NDczOEYzMTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdD
b2RlQmxvY2tzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEYyQzU1NzAxNDczOEYzNTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkQxNDczOEYy
RTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICovOyB9OwpAQCAtNzEsNiArOTEsMTkgQEAK
IAkJMEY0MzE3MzgxNDZCQUM2OTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MzE3MzYxNDZCQUM2NTAw
N0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNl
cHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4MDgzMTRCQTU3MzEwMEJG
RTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25z
LmNwcCAqLzsgfTsKKwkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Njgw
OUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3
MiAvKiBMTEludEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAg
Ki87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tdW51c2VkLXBhcmFtZXRlciI7
IH07IH07CisJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEEwMTRCQTdG
ODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwICovOyB9OworCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRp
b25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkw
RjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAv
KiBMTEludENvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25m
aWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4
MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQzE0QkJCMTdB
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93
TGV2ZWxJbnRlcnByZXRlci5jcHAgKi87IH07CisJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAv
KiBMb3dMZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnBy
ZXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcy
IC8qIExMSW50RGF0YS5jcHAgKi87IH07CisJCTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBM
TEludERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUy
NzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxS
ZXR1cm5WYWx1ZS5jcHAgKi87IH07CisJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0
Q2FsbFJldHVyblZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUYw
OENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAw
NDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjIwMTc0MTQzRkNEMzMwMDY4Qjc3QyAvKiBE
RkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjIwMTcyMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vz
c0RhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjYyMDE3NTE0M0ZDRDM3MDA2OEI3N0MgLyogREZHT3BlcmFuZHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjIwMTcxMTQzRkNEMkYwMDY4Qjc3
QyAvKiBERkdPcGVyYW5kcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0zODMsNyArNDE2LDcgQEAKIAkJODZCOTlBRTMxMTdFNTc4MTAwREY1QTkw
IC8qIFN0cmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZCOTlBRTExMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QkIwOUMwMTM4
RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJFMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBh
dGNoLmNwcCAqLzsgfTsKIAkJODZCQjA5QzExMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2gu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJG
MTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggKi87IH07Ci0JCTg2QzM2RUVBMEVFMTI4
OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNz
ZW1ibGVyLmggKi87IH07CisJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZD
MzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTAxMUEyMTNFRTAwMDdG
N0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OEREMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2Vt
YmxlckFSTS5jcHAgKi87IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fz
c2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLzsg
fTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERGMTFBMjEzRUUw
MDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IH07CkBAIC03NTIsNiArNzg1LDIwIEBACiAv
KiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRl
bVByb3h5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJ
CWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9i
amVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBG
NDY4MEE5MTRCQTdGRDkwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSAiTExJbnQgT2Zmc2V0cyI7
CisJCX07CisJCTBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJv
eHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQ
b3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJ
CQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODA4RTE0QkE3
RTVFMDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
CQl9OwogCQkxNDEyMTRCRTBBNDkxOTBFMDA0ODAyNTUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5
ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9y
dGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAt
Nzk3LDYgKzg0NCwxNSBAQAogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4
RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJYQ29weUZp
bGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQ
YXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMDsKKwkJ
CWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAxOworCQl9OwogCQk1REJCMTUxMTEzMUQwQjEzMDA1NkFEMzYgLyogQ29weSBTdXBwb3J0IFNj
cmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFj
dGlvbk1hc2sgPSAxMjsKQEAgLTgzNyw2ICs4OTMsMTAgQEAKIAkJMEJBQzk0OUUxMzM4NzI4NDAw
Q0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hh
bmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFyeUNoYW5nZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkYyOEEyODExQTMzREMzMDA2MzhGODQg
LyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
aXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTUxNEJD
RjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5jcHA7IHBhdGggPSBsbGludC9MTElu
dEVudHJ5cG9pbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTYx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5oOyBwYXRoID0gbGxpbnQvTExJbnRFbnRy
eXBvaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NzE0QkNGNDVB
MDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTExJbnRUaHVua3MuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyog
TExJbnRUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRUaHVu
a3MuaDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlckluZm8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5n
ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwcmVzc2lvblJhbmdl
SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQ3LDkgKzkwNywxMyBAQAog
CQkwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGhvZENhbGxMaW5rSW5mby5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFs
UmVzb2x2ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2xvYmFsUmVz
b2x2ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjgxNEJDRjk1
QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1
NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBMTEludENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE1
RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vblNsb3dQYXRocy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURHJpdmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
ZGVTcGVjaWFsaXphdGlvbktpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYy
MUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0aW9uSGFybmVzcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUNvbnZlbnRp
b25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjQyREE1MTNGM0IxQkIwMDdB
REQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBE
RkdDb2RlQmxvY2tzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGR0NvZGVC
bG9ja3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2MCw2ICs5MjQsMjAgQEAK
IAkJMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaXN0YWJsZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlv
bnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklURXhjZXB0aW9u
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDgwMTRCQTU3MjcwMEJG
RTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpJVEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOEYx
NEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVj
dXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gSlNDTExJbnRPZmZzZXRzRXh0cmFj
dG9yOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkwRjQ2ODA5RDE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5jcHA7IHBhdGggPSBsbGludC9MTEludEV4
Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RTE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5oOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludEhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTExJbnRIZWxwZXJzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVycy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRIZWxwZXJz
Lmg7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50
Q29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50Q29tbW9uLmg7
IHBhdGggPSBsbGludC9MTEludENvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBw
YXRoID0gbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZl
bEludGVycHJldGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExvd0xldmVs
SW50ZXJwcmV0ZXIuaDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50
RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludERhdGEu
Y3BwOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludERhdGEuaDsgcGF0aCA9IGxsaW50L0xMSW50RGF0
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUy
NzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkg
LyogREZHQnl0ZUNvZGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdCeXRlQ29kZUNhY2hlLmg7IHBhdGggPSBkZmcvREZHQnl0ZUNvZGVDYWNoZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25k
aXRpb25hbEZpbmFsaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmNv
bmRpdGlvbmFsRmluYWxpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjIw
MTZEMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Fic3RyYWN0U3RhdGUuY3BwOyBwYXRoID0gZGZn
L0RGR0Fic3RyYWN0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU3
OSw2ICsxNjU3LDEzIEBACiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEMxNEJB
N0U1RTAwQkZFMjcyIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtz
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJ
fTsKIAkJMTQxMjExMUUwQTQ4NzkzQzAwNDgwMjU1IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlp
c2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CkBAIC0xNjM3LDYgKzE3MjIsNyBAQAogCQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4MDI1
NSAvKiBtaW5pZG9tICovLAogCQkJCTE0QkQ1OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBp
ICovLAogCQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJ
CTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8s
CiAJCQkpOwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTE2NjcsNiArMTc1Myw3IEBACiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEph
dmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8q
IGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5oICov
LAorCQkJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLywKIAkJCQkxNDMyRUJE
NzBBMzRDQUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5
RiAvKiBhc3NlbWJsZXIgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVj
b2RlICovLApAQCAtMTcwNSw2ICsxNzkyLDI4IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2Vz
VGFicyA9IDA7CiAJCX07CisJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYwQjgzOTUxNEJD
RjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovLAorCQkJCTBGMEI4Mzk2MTRC
Q0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8sCisJCQkJMEYwQjgzOTcxNEJD
RjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLywKKwkJCQkwRjBCODM5ODE0QkNGNDVB
MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLywKKwkJCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUy
NzIgLyogTExJbnREYXRhLmNwcCAqLywKKwkJCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyog
TExJbnREYXRhLmggKi8sCisJCQkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29t
bW9uLmggKi8sCisJCQkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFz
bUNvbmZpZy5oICovLAorCQkJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbElu
dGVycHJldGVyLmNwcCAqLywKKwkJCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2
ZWxJbnRlcnByZXRlci5oICovLAorCQkJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dEV4Y2VwdGlvbnMuY3BwICovLAorCQkJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dEV4Y2VwdGlvbnMuaCAqLywKKwkJCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRI
ZWxwZXJzLmNwcCAqLywKKwkJCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxw
ZXJzLmggKi8sCisJCQkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGxsaW50OworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMTQxMjExMDAwQTQ4NzcyNjAwNDgwMjU1IC8qIHRlc3RzICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE3MzcsNiArMTg0
Niw4IEBACiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3
MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLywKKwkJCQkwRjQ2ODBEMTE0QkJDNUY4MDBC
RkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovLAogCQkJCTBGNDY4MDdGMTRCQTU3Mjcw
MEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLywKIAkJCQkwRjQ2ODA4MDE0QkE1NzI3MDBC
RkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovLAogCQkJCTBGRDgyRTM3MTQxQUIxNDIwMDE3OUM5
NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oICovLApAQCAtMjE2Niw2ICsyMjc3LDggQEAKIAkJN0VG
NkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmggKi8sCisJCQkJMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8q
IEV4ZWN1dGlvbkhhcm5lc3MuaCAqLywKIAkJCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyog
Q29tbW9uU2xvd1BhdGhzLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFy
Z0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0Lmgg
Ki8sCkBAIC0yNTI1LDYgKzI2MzgsOCBAQAogCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyog
Ynl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8sCisJ
CQkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8sCiAJ
CQkJMEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLywKIAkJ
CQkwRjkzMzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCAqLywKIAkJCQkw
RjkzMzI5NTE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5jcHAgKi8sCkBAIC0zMDc2
LDcgKzMxOTEsMTYgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRl
cm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJy
U3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYxNUYxNEI3QTczRTAwNURF
MzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTMxNEJB
N0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0
NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFz
bUNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8q
IExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEQzMTRCQkQx
NjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEQ1MTRC
QkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJl
c3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtMzA4NSw3ICszMjA5LDExIEBACiAJ
CQkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJ
bmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2Fs
bFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEZD
NDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2
NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEEx
NEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY3QjI5NEMxNEMzQ0Q0MzAwN0MzREIxIC8qIERGR0J5dGVDb2RlQ2FjaGUuaCBp
biBIZWFkZXJzICovLApAQCAtMzEwMyw2ICszMjMxLDI0IEBACiAvKiBFbmQgUEJYSGVhZGVyc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAq
LworCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9y
ICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9u
TGlzdCA9IDBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLzsKKwkJ
CWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2Vz
ICovLAorCQkJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovLAorCQkJ
CTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8sCisJCQkpOworCQkJYnVp
bGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjIxNEJB
ODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9
IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3ROYW1lID0gSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDBGNDY4MDhGMTRCQTdFNUUwMEJG
RTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJj
b20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OwogCQkxNDEyMTExRjBBNDg3OTNDMDA0
ODAyNTUgLyogbWluaWRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1
aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovOwpAQCAt
MzIyOSwxMSArMzM3NSwyOSBAQAogCQkJCTE0QkQ1OUJFMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0
YXBpICovLAogCQkJCTkzMkY1QkRBMDgyMkExQzcwMDczNjk3NSAvKiBqc2MgKi8sCiAJCQkJNjUx
MTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEUxNEJB
N0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKKwkJCQkwRjQ2ODBB
OTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLywKIAkJCSk7CiAJCX07CiAvKiBF
bmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZSBzZWN0aW9uICovCisJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBE
ZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7
CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOwor
CQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9sbGludC9Mb3dMZXZlbEFzc2VtYmxl
ci5hc20iLAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKKwkJ
CW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRz
L0xMSW50RGVzaXJlZE9mZnNldHMuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3Jp
cHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL1wiXG5c
bi91c3IvYmluL2VudiBydWJ5IFwiJHtTUkNST09UfS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNl
dF9leHRyYWN0b3IucmJcIiBcIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c21cIiBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zm
c2V0cy5oXCJcbiI7CisJCX07CiAJCTM3MTNGMDE0MTQyOTA1MjQwMDM2Mzg3RiAvKiBDaGVjayBG
b3IgSW5hcHByb3ByaWF0ZSBPYmplY3RpdmUtQyBDbGFzcyBOYW1lcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CkBAIC0zMzM5LDcgKzM1MDMsNyBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKLQkJCXNoZWxsU2Ny
aXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL2RvY3NcIlxuY2QgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmVcIlxuXG4vYmluL2xuIC1zZmggXCIke1NSQ1JPT1R9XCIgSmF2
YVNjcmlwdENvcmVcbmV4cG9ydCBKYXZhU2NyaXB0Q29yZT1cIkphdmFTY3JpcHRDb3JlXCJcbmV4
cG9ydCBCVUlMVF9QUk9EVUNUU19ESVI9XCIuLi8uLlwiXG5cbm1ha2UgLS1uby1idWlsdGluLXJ1
bGVzIC1mIFwiSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNyL3Ni
aW4vc3lzY3RsIC1uIGh3Lm5jcHVgXG4iOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIk
e0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wi
XG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7U1JDUk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0
IEphdmFTY3JpcHRDb3JlPVwiSmF2YVNjcmlwdENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RT
X0RJUj1cIi4uLy4uXCJcblxubWFrZSAtLW5vLWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlXCIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNw
dWBcblxuL3Vzci9iaW4vZW52IHJ1YnkgSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIg
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJHtCVUlMVF9QUk9E
VUNUU19ESVJ9L0pTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciBMTEludEFzc2VtYmx5LmhcbiI7CiAJ
CX07CiAJCTkzMTk1ODZCMDlEOUY5MUEwMEE1NkZENCAvKiBDaGVjayBGb3IgR2xvYmFsIEluaXRp
YWxpemVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKQEAgLTMz
NzQsNiArMzUzOCwxNCBAQAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0Njgw
OEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2Vz
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRDBBNDg3OTNDMDA0ODAyNTUgLyogU291cmNl
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKQEAgLTM2MzIsNyArMzgwNCwxNCBAQAogCQkJCTg2NzA0Qjg2MTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg5
MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNl
cHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MENDMTRCQkIxN0Ew
MEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
NDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlw
b2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8q
IExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4
NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjQxNEJD
Rjg2MDAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGNjlFODZDMzE0QzZFNTUxMDAyQzJDNjIgLyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTM2NTQsNiArMzgzMywxNiBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJ
CTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewor
CQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdG
RDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBC
MTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkw
RjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJ
CWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVF
MDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkg
PSAwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwor
CQl9OwogCQkxNDEyMTRCRjBBNDkxOTBFMDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEyMTEx
RjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLzsKQEAgLTM2ODcsNiArMzg3NiwxNDggQEAK
IC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWls
ZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyog
RGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMg
PSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87
CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19O
T19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlH
Q0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJ
T05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJ
CQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNv
bS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJf
QklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQ
RVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0ND
X1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2Fy
Y2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7
CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9B
UkNIID0gWUVTOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsK
KwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3
MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJ
CUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJ
UCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3lt
IjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVf
T0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBp
bGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lP
TiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURf
VkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJ
CQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNl
dHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5U
X1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJ
CQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGlj
dSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRI
UykiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVF
MDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9
IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9Q
SEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYt
d2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdD
Q19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFw
cGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRf
Q09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9
IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FS
Tl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0q
XSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9M
TEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJ
CQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIk
KFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9T
RUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAk
KEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9
OworCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdB
WVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJE
XzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JN
QVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RB
TkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJ
CQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJ
R0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9V
VF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZ
UEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFE
RVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIk
KEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJD
SF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsK
KwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNv
c3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJ
bmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBE
ZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJ
fTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8q
IFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsK
KwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZF
MjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2Vz
IGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIwMTRC
QTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJp
dmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJ
CTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1NSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKQEAgLTM5MjgsNiArNDI1OSwy
OCBAQAogLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
WENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3
MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJ
bnRPZmZzZXRzRXh0cmFjdG9yIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7
CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3
MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAq
LywKKwkJCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBG
NDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1
bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFt
ZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0
cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8sCisJ
CQkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwQUYx
NEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODBCMDE0QkE3RkQ5MDBC
RkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklz
VmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwor
CQl9OwogCQkxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovID0gewogCQkJaXNhID0gWENDb25m
aWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA2MDQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNkZWZpbmUgR0xPQkFMX1RIVU5LX0lEIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigtMSkpCiAjZGVmaW5lIFJF
R0VYUF9DT0RFX0lEIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90
PigtMikpCiAKLSNpbmNsdWRlIDxNYWNyb0Fzc2VtYmxlci5oPgorI2luY2x1ZGUgIk1hY3JvQXNz
ZW1ibGVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVDb252ZW50aW9ucy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IEJ5dGVjb2RlQ29udmVudGlvbnNfaAorI2RlZmluZSBCeXRlY29kZUNvbnZlbnRpb25zX2gKKwor
Ly8gUmVnaXN0ZXIgbnVtYmVycyB1c2VkIGluIGJ5dGVjb2RlIG9wZXJhdGlvbnMgaGF2ZSBkaWZm
ZXJlbnQgbWVhbmluZyBhY2NvcmRpbmcgdG8gdGhlaXIgcmFuZ2VzOgorLy8gICAgICAweDgwMDAw
MDAwLTB4RkZGRkZGRkYgIE5lZ2F0aXZlIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50
ZXIgYXJlIGVudHJpZXMgaW4gdGhlIGNhbGwgZnJhbWUsIHNlZSBSZWdpc3RlckZpbGUuaC4KKy8v
ICAgICAgMHgwMDAwMDAwMC0weDNGRkZGRkZGICBGb3J3YXJkcyBpbmRpY2VzIGZyb20gdGhlIENh
bGxGcmFtZSBwb2ludGVyIGFyZSBsb2NhbCB2YXJzIGFuZCB0ZW1wb3JhcmllcyB3aXRoIHRoZSBm
dW5jdGlvbidzIGNhbGxmcmFtZS4KKy8vICAgICAgMHg0MDAwMDAwMC0weDdGRkZGRkZGICBQb3Np
dGl2ZSBpbmRpY2VzIGZyb20gMHg0MDAwMDAwMCBzcGVjaWZ5IGVudHJpZXMgaW4gdGhlIGNvbnN0
YW50IHBvb2wgb24gdGhlIENvZGVCbG9jay4KK3N0YXRpYyBjb25zdCBpbnQgRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwOworCisjZW5kaWYgLy8gQnl0ZWNvZGVDb252ZW50
aW9uc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTcg
KzI3LDQwIEBACiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgorI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVU5V
U0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4
KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJv
ZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CisgICAg
TExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGluc3RydWN0aW9uWzRdLnUuY2FsbExp
bmtJbmZvOworICAgIAorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyhjYWxsTGlua0luZm8tPmxh
c3RTZWVuQ2FsbGVlLmdldCgpLCBmYWxzZSk7CisjZWxzZQorICAgIHJldHVybiBDYWxsTGlua1N0
YXR1cygwLCBmYWxzZSk7CisjZW5kaWYKK30KKwogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4KQogewogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURf
UEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BS
T0ZJTEVSKQotICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygKLSAgICAgICAgcHJvZmlsZWRCbG9j
ay0+Z2V0Q2FsbExpbmtJbmZvKGJ5dGVjb2RlSW5kZXgpLmxhc3RTZWVuQ2FsbGVlLmdldCgpLAot
ICAgICAgICBwcm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSk7
CisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1iZXJPZkNhbGxMaW5rSW5mb3MoKSkKKyAgICAg
ICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7
CisgICAgCisgICAgaWYgKHByb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKGJ5dGVjb2Rl
SW5kZXgpKQorICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgdHJ1ZSk7CisgICAgCisg
ICAgSlNGdW5jdGlvbiogdGFyZ2V0ID0gcHJvZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJbmZvKGJ5
dGVjb2RlSW5kZXgpLmxhc3RTZWVuQ2FsbGVlLmdldCgpOworICAgIGlmICghdGFyZ2V0KQorICAg
ICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4
KTsKKyAgICAKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXModGFyZ2V0LCBmYWxzZSk7CiAjZWxz
ZQogICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygwLCBmYWxzZSk7CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCShyZXZp
c2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTUgKzQ3LDE3IEBAIHB1YmxpYzoKICAgICAK
ICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4KTsKICAgICAKLSAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4g
ISFtX2NhbGxUYXJnZXQ7IH0KKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gISFtX2Nh
bGxUYXJnZXQgfHwgbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIAotICAgIGJvb2wgb3BlcmF0
b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbFRhcmdldDsgfQorICAgIGJvb2wgb3BlcmF0b3Ih
KCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KICAgICAKICAgICBib29sIGNvdWxkVGFrZVNs
b3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIAogICAg
IEpTRnVuY3Rpb24qIGNhbGxUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQ7IH0K
ICAgICAKIHByaXZhdGU6CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9tTExJ
bnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisgICAgCiAgICAgSlNGdW5j
dGlvbiogbV9jYWxsVGFyZ2V0OwogICAgIGJvb2wgbV9jb3VsZFRha2VTbG93UGF0aDsKIH07Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2
aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTVmFs
dWUuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiUmVwYXRj
aEJ1ZmZlci5oIgogI2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHN0
ZGlvLmg+CkBAIC01OSw4ICs2MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogdXNpbmcgbmFtZXNwYWNl
IERGRzsKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NB
TVBMSU5HKQotCiBzdGF0aWMgVVN0cmluZyBlc2NhcGVRdW90ZXMoY29uc3QgVVN0cmluZyYgc3Ry
KQogewogICAgIFVTdHJpbmcgcmVzdWx0ID0gc3RyOwpAQCAtMzU4LDEwICszNTcsMTAgQEAgdm9p
ZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjKSBjbwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBpICs9IG9wY29kZUxlbmd0aHNbZXhlYy0+
aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbaV0udS5vcGNvZGUpXSkK
ICAgICAgICAgKytpbnN0cnVjdGlvbkNvdW50OwogCi0gICAgcHJpbnRmKCIlbHUgbV9pbnN0cnVj
dGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0
ZXIocylcblxuIiwKKyAgICBwcmludGYoIiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0
ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUo
cylcblxuIiwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25D
b3VudCksCiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygp
LnNpemUoKSAqIHNpemVvZihJbnN0cnVjdGlvbikpLAotICAgICAgICB0aGlzLCBtX251bVBhcmFt
ZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgdGhpcywgbV9udW1QYXJhbWV0
ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycywgbV9udW1WYXJzKTsKIAogICAgIFZlY3RvcjxJbnN0
cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsK
ICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBpbnN0cnVjdGlv
bnMoKS5lbmQoKTsKQEAgLTg5OCw2ICs4OTcsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhl
Y1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRp
b24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7Cisg
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CisgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWwiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX2dlbmVyaWM6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgInB1dF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTEyOTEsOCArMTI5OCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywg
Y28KICAgICB9CiB9CiAKLSNlbmRpZiAvLyAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRShPUENP
REVfU0FNUExJTkcpCi0KICNpZiBEVU1QX0NPREVfQkxPQ0tfU1RBVElTVElDUwogc3RhdGljIEhh
c2hTZXQ8Q29kZUJsb2NrKj4gbGl2ZUNvZGVCbG9ja1NldDsKICNlbmRpZgpAQCAtMTQ1OSw2ICsx
NDY0LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLAogewogICAg
IHNldE51bVBhcmFtZXRlcnMob3RoZXIubnVtUGFyYW1ldGVycygpKTsKICAgICBvcHRpbWl6ZUFm
dGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsKICAgICAKICAgICBpZiAob3RoZXIu
bV9yYXJlRGF0YSkgewogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0x
NTA3LDYgKzE1MTMsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBv
CiAgICAgQVNTRVJUKG1fc291cmNlKTsKICAgICAKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7
CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsKIAogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNT
CiAgICAgbGl2ZUNvZGVCbG9ja1NldC5hZGQodGhpcyk7CkBAIC0xNTI0LDcgKzE1MzEsMTEgQEAg
Q29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKICNpZiBFTkFCTEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxF
KQogICAgIGR1bXBWYWx1ZVByb2ZpbGVzKCk7CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShM
TElOVCkgICAgCisgICAgd2hpbGUgKG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCkgIT0gbV9p
bmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLmJl
Z2luKCktPnJlbW92ZSgpOworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKICNpZiBFTkFCTEUoSklU
KQogICAgIC8vIFdlIG1heSBiZSBkZXN0cm95ZWQgYmVmb3JlIGFueSBDb2RlQmxvY2tzIHRoYXQg
cmVmZXIgdG8gdXMgYXJlIGRlc3Ryb3llZC4KICAgICAvLyBDb25zaWRlciB0aGF0IHR3byBDb2Rl
QmxvY2tzIGJlY29tZSB1bnJlYWNoYWJsZSBhdCB0aGUgc2FtZSB0aW1lLiBUaGVyZQpAQCAtMTcz
Niw4ICsxNzQ3LDU5IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgK
ICNlbHNlCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZVVubGlua2luZyA9IGZhbHNlOwog
I2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogICAgIAorI2lmIEVOQUJMRShM
TElOVCkKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVy
cHJldGVyOworICAgIC8vIGludGVycHJldGVyLT5lbmFibGVkKCkgcmV0dXJucyB0cnVlIGlmIHRo
ZSBvbGQgQysrIGludGVycHJldGVyIGlzIGVuYWJsZWQuIElmIHRoYXQncyBlbmFibGVkCisgICAg
Ly8gdGhlbiB3ZSdyZSBub3QgdXNpbmcgTExJbnQuCisgICAgaWYgKCFpbnRlcnByZXRlci0+ZW5h
YmxlZCgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5z
dHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIElu
c3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgeworICAgICAgICAgICAgY2Fz
ZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAg
ICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFy
a2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1
cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQg
PSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY3VySW5z
dHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhl
YXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpKQorICAgICAg
ICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVj
dHVyZUNoYWluLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAg
ICAgICBjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAg
ICAgIGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAgICAg
ICAgICAgICBjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSA9IGludGVycHJldGVyLT5nZXRPcGNv
ZGUob3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAg
ICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xv
YmFsCisgICAgICAgICAgICAgICAgICAgfHwgaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cklu
c3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKKyAg
ICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNN
YXJrZWQoY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUu
Y2xlYXIoKTsKKyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9IDA7Cisg
ICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlu
a0luZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5m
b3NbaV0uaXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQobV9sbGludENhbGxMaW5rSW5mb3Nb
aV0uY2FsbGVlLmdldCgpKSkgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5n
KQorICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IGNhbGwgZnJvbSAl
cC5cbiIsIHRoaXMpOworICAgICAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVu
bGluaygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCEhbV9sbGludENhbGxMaW5r
SW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlu
a0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBtX2xsaW50
Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgICAgICB9CisgICAg
fQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8v
IENoZWNrIGlmIHdlJ3JlIG5vdCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAgICAg
aWYgKCEoc2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBtX2Rm
Z0RhdGEtPmxpdmVuZXNzSGFzQmVlblByb3ZlZCkpIHsKQEAgLTE4NTgsMTAgKzE5MjAsMTIgQEAg
dm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9mdW5jdGlvbkRlY2xzLnNpemUoKTsgKytpKQogICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmbV9mdW5jdGlvbkRlY2xzW2ldKTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCi0g
ICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgp
LCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3Is
ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7Ci0gICAg
Zm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkg
PSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmlu
c3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIGlmICht
X2dsb2JhbERhdGEtPmludGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXpl
X3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8
IHNpemU7ICsraSkKKyAgICAgICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1
Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOworICAgICAgICBmb3Ig
KHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7
IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmlu
c3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIH0KICNl
bmRpZgogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0yMDcwLDYgKzIxMzQsMTIgQEAgdm9pZCBD
b2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIHsKICAgICBpZiAoISFtX2FsdGVybmF0aXZlKQogICAg
ICAgICBtX2FsdGVybmF0aXZlLT51bmxpbmtDYWxscygpOworI2lmIEVOQUJMRShMTElOVCkKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9zLnNpemUoKTsgKytp
KSB7CisgICAgICAgIGlmIChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpKQorICAg
ICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgfQorI2VuZGlm
CiAgICAgaWYgKCEobV9jYWxsTGlua0luZm9zLnNpemUoKSB8fCBtX21ldGhvZENhbGxMaW5rSW5m
b3Muc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5V
c2VKSVQoKSkKQEAgLTIwODQsMTAgKzIxNTQsMzkgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0Nh
bGxzKCkKIAogdm9pZCBDb2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMoKQogeworI2lmIEVO
QUJMRShMTElOVCkKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBt
X2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMu
YmVnaW4oKS0+dW5saW5rKCk7CisjZW5kaWYKKyAgICBpZiAobV9pbmNvbWluZ0NhbGxzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcih0
aGlzKTsKICAgICB3aGlsZSAobV9pbmNvbWluZ0NhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0Nh
bGxzLmVuZCgpKQogICAgICAgICBtX2luY29taW5nQ2FsbHMuYmVnaW4oKS0+dW5saW5rKCptX2ds
b2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogfQorCit1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVj
b2RlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
KQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAocmV0dXJuQWRkcmVzcy52YWx1ZSgpID49
IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2JlZ2luKQorICAgICAgICAmJiByZXR1cm5BZGRy
ZXNzLnZhbHVlKCkgPD0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZW5kKSkgeworICAgICAg
ICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkpOworICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJs
b2NrKCkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShn
ZXRKSVRUeXBlKCkpKTsKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gZXhlYy0+
Y3VycmVudFZQQygpOworICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb24pOworICAgICAgICByZXR1
cm4gYnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb24pOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKGV4ZWMpOworI2VuZGlmCisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1
cm4gMTsKKyAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxs
SW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOworICAgIGlmICgh
Y2FsbEluZGljZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gYmluYXJ5
U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2Fs
bFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBn
ZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zm
c2V0OworfQogI2VuZGlmCiAKIHZvaWQgQ29kZUJsb2NrOjpjbGVhckV2YWxDYWNoZSgpCkBAIC0y
MTgzLDI0ICsyMjgyLDQ1IEBAIGJvb2wgRnVuY3Rpb25Db2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRo
REYKIAogdm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdl
dEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6
OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBs
YWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhl
Y3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwogfQogCiB2
b2lkIEV2YWxDb2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgp
ICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6
aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkp
OwogICAgIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5q
ZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRnVuY3Rpb25D
b2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENv
ZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdl
dEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0
YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlz
b25PcHRpbWl6ZWRDb2RlRm9yKCpnbG9iYWxEYXRhKCksIG1faXNDb25zdHJ1Y3RvciA/IENvZGVG
b3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7CiB9CisKK3ZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6
aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChn
ZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRo
aXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb2dyYW1FeGVj
dXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlKGdsb2JhbERhdGEpOworfQor
Cit2b2lkIEV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVy
VGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGls
ZShnbG9iYWxEYXRhKTsKK30KKwordm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZUlt
cGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkg
PT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFj
ZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93
bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZUZvcihnbG9iYWxEYXRhLCBtX2lzQ29uc3RydWN0
b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOworfQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC0yMzAzLDYgKzI0MjMsMTggQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXBWYWx1ZVByb2ZpbGVzKCkKIH0KICNlbmRpZgogCit2b2lkIENvZGVCbG9jazo6aGFu
ZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKQoreworI2lmICFFTkFCTEUoT1BDT0RF
X1NBTVBMSU5HKSAmJiAhRU5BQkxFKExMSU5UKQorICAgIGlmIChCeXRlY29kZUdlbmVyYXRvcjo6
ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoISFhbHRlcm5h
dGl2ZSgpKQorICAgICAgICBkaXNjYXJkQnl0ZWNvZGUoKTsKKyAgICBlbHNlCisgICAgICAgIGRp
c2NhcmRCeXRlY29kZUxhdGVyKCk7CisjZW5kaWYKK30KKwogI2lmbmRlZiBOREVCVUcKIGJvb2wg
Q29kZUJsb2NrOjp1c2VzT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlEKQogewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTA2MDQ1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaWZuZGVmIENvZGVCbG9ja19oCiAjZGVmaW5lIENvZGVC
bG9ja19oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2Fs
bExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQu
aCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCkBAIC01MCw2ICs1MSw3IEBACiAjaW5jbHVkZSAi
SklUV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUg
IkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQcmVkaWN0aW9uVHJh
Y2tlci5oIgpAQCAtNjUsMTYgKzY3LDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKLS8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBp
biBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRv
IHRoZWlyIHJhbmdlczoKLS8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBp
bmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxs
IGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCi0vLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZG
RiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwg
dmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCi0vLyAg
ICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAw
MDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2su
Ci1zdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAw
MDsKLQogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3Mg
REZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogCiAgICAgaW5saW5lIGludCB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0
ZXIoaW50IGFyZ3VtZW50c1JlZ2lzdGVyKSB7IHJldHVybiBhcmd1bWVudHNSZWdpc3RlciAtIDE7
IH0KIApAQCAtODMsNiArODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb2RlQmxv
Y2sgOiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXplciwgcHVibGljIFdlYWtSZWZlcmVuY2VI
YXJ2ZXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gQ29weVBhcnNlZEJsb2NrVGFnIHsgQ29weVBh
cnNlZEJsb2NrIH07CiAgICAgcHJvdGVjdGVkOgpAQCAtMTIzLDcgKzEyMSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAg
ICAgICAgICAgICByZXN1bHQgPSByZXN1bHQtPmFsdGVybmF0aXZlKCk7CiAgICAgICAgICAgICBB
U1NFUlQocmVzdWx0KTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9
PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNC
YXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMTM0LDExICsxMzIsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0jaWYgIWRl
ZmluZWQoTkRFQlVHKSB8fCBFTkFCTEVfT1BDT0RFX1NBTVBMSU5HCiAgICAgICAgIHZvaWQgZHVt
cChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZXMoY29uc3Qg
SW5zdHJ1Y3Rpb24qKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZShjb25zdCBj
aGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiosIGludCBvcGVyYW5kKSBjb25zdDsKLSNlbmRp
ZgogCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmlj
dE1vZGU7IH0KIApAQCAtMTk0LDE1ICsxOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxNZXRob2RDYWxsTGlua0luZm8sIHVuc2lnbmVkLCBn
ZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUluZGV4PihtX21ldGhvZENhbGxMaW5rSW5mb3Mu
YmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSwgYnl0ZWNvZGVJbmRleCkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fcmFyZURh
dGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBWZWN0b3I8Q2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1f
Y2FsbFJldHVybkluZGV4VmVjdG9yOwotICAgICAgICAgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXpl
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICByZXR1cm4gYmluYXJ5
U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2Fs
bFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBn
ZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zm
c2V0OwotICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0
ZSosIFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
Rm9yQ2FsbEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKQEAgLTIyMywxMSArMjEx
LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBtX2luY29taW5n
Q2FsbHMucHVzaChpbmNvbWluZyk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoTExJTlQpCisgICAg
ICAgIHZvaWQgbGlua0luY29taW5nQ2FsbChMTEludENhbGxMaW5rSW5mbyogaW5jb21pbmcpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLnB1c2goaW5jb21pbmcp
OworICAgICAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogICAgICAgICAKICAgICAgICAg
dm9pZCB1bmxpbmtJbmNvbWluZ0NhbGxzKCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklU
KQogCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShM
TElOVCkKICAgICAgICAgdm9pZCBzZXRKSVRDb2RlTWFwKFBhc3NPd25QdHI8Q29tcGFjdEpJVENv
ZGVNYXA+IGppdENvZGVNYXApCiAgICAgICAgIHsKICAgICAgICAgICAgIG1faml0Q29kZU1hcCA9
IGppdENvZGVNYXA7CkBAIC0yMzYsNyArMjMwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBtX2ppdENvZGVNYXAuZ2V0KCk7CiAgICAgICAgIH0KKyNl
bmRpZgogICAgICAgICAKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgdm9pZCBjcmVhdGVE
RkdEYXRhSWZOZWNlc3NhcnkoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoISFtX2RmZ0Rh
dGEpCkBAIC0zMzUsMTIgKzMzMSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KEluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICYmIHJldHVy
bkFkZHJlc3MgPCBpbnN0cnVjdGlvbnMoKS5lbmQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJl
Z2luKCk7CiAgICAgICAgIH0KLSNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0SXNOdW1lcmljQ29t
cGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmlj
Q29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgICAgIGJv
b2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgeyByZXR1cm4gbV9pc051bWVyaWNDb21wYXJl
RnVuY3Rpb247IH0KQEAgLTM1NCwxNyArMzQ5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHsKICAgICAgICAgICAgIG1fc2hvdWxkRGlzY2FyZEJ5dGVjb2RlID0gdHJ1ZTsKICAgICAgICAg
fQotICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCkKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKCEhYWx0ZXJuYXRpdmUoKSkKLSAgICAgICAgICAgICAg
ICBkaXNjYXJkQnl0ZWNvZGUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBk
aXNjYXJkQnl0ZWNvZGVMYXRlcigpOwotICAgICAgICB9CisgICAgICAgIHZvaWQgaGFuZGxlQnl0
ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICAgICAgCi0jaWZuZGVmIE5ERUJVRwog
ICAgICAgICBib29sIHVzZXNPcGNvZGUoT3Bjb2RlSUQpOwotI2VuZGlmCiAKICAgICAgICAgdW5z
aWduZWQgaW5zdHJ1Y3Rpb25Db3VudCgpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25Db3VudDsgfQog
ICAgICAgICB2b2lkIHNldEluc3RydWN0aW9uQ291bnQodW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3Vu
dCkgeyBtX2luc3RydWN0aW9uQ291bnQgPSBpbnN0cnVjdGlvbkNvdW50OyB9CkBAIC0zODcsMTcg
KzM3NCwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY3V0YWJsZU1lbW9yeUhhbmRs
ZSogZXhlY3V0YWJsZU1lbW9yeSgpIHsgcmV0dXJuIGdldEpJVENvZGUoKS5nZXRFeGVjdXRhYmxl
TWVtb3J5KCk7IH0KICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChF
eGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGpl
dHRpc29uKCkgPSAwOworICAgICAgICBib29sIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZ2V0SklUVHlwZSgpICE9IEpJVENv
ZGU6OkludGVycHJldGVyVGh1bmspIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlw
ZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBqaXRDb21waWxlSW1wbChnbG9iYWxEYXRh
KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwg
Q29kZUJsb2NrKiByZXBsYWNlbWVudCgpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNv
bXBpbGVXaXRoREZHKCkgPSAwOwogICAgICAgICBib29sIGhhc09wdGltaXplZFJlcGxhY2VtZW50
KCkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2Rl
OjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNv
ZGUoZ2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHJlcGxhY2VtZW50
KCktPmdldEpJVFR5cGUoKSA+IGdldEpJVFR5cGUoKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAg
ICAgICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVu
dCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKICAgICAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjpp
c0Jhc2VsaW5lQ29kZShyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAg
ICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKSA9PSB0aGlzKTsKICAgICAgICAgICAgIH0KICNlbmRp
ZgpAQCAtNDU2LDE4ICs0NTIsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBj
bGVhckV2YWxDYWNoZSgpOwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICB2b2lk
IGFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24odW5zaWduZWQgcHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVz
ZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBw
ZW5kKHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgbV9wcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CiAgICAg
ICAgIH0KICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24odW5zaWduZWQg
Z2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1f
Z2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZl
SW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOworICAgICAgICAg
ICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb24pOwogICAgICAgICB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluc3RydWN0
aW9uQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CisjaWYgRU5BQkxF
KExMSU5UKQorICAgICAgICBMTEludENhbGxMaW5rSW5mbyogYWRkTExJbnRDYWxsTGlua0luZm8o
KQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvcy5hcHBlbmQoTExJ
bnRDYWxsTGlua0luZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gJm1fbGxpbnRDYWxsTGlua0lu
Zm9zLmxhc3QoKTsKKyAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAg
dm9pZCBzZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVj
dHVyZVN0dWJJbmZvcy5ncm93KHNpemUpOyB9CkBAIC00NzYsOCArNDc1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5mbyh1bnNpZ25lZCBnbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2dsb2Jh
bERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9z
LmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKKyAg
ICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhn
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKICAgICAgICAgfQogICAgICAgICBHbG9iYWxSZXNv
bHZlSW5mbyYgZ2xvYmFsUmVzb2x2ZUluZm8oaW50IGluZGV4KSB7IHJldHVybiBtX2dsb2JhbFJl
c29sdmVJbmZvc1tpbmRleF07IH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5mb0F0
Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAtNDg4LDYgKzQ4Niw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkTWV0aG9kQ2FsbExpbmtJbmZv
cyh1bnNpZ25lZCBuKSB7IEFTU0VSVChtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKTsgbV9tZXRo
b2RDYWxsTGlua0luZm9zLmdyb3cobik7IH0KICAgICAgICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBt
ZXRob2RDYWxsTGlua0luZm8oaW50IGluZGV4KSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5m
b3NbaW5kZXhdOyB9CisgICAgICAgIHNpemVfdCBudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3Mo
KSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpOyB9CiAjZW5kaWYKICAgICAg
ICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtNTI4LDYgKzUyNywxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVP
ZmZzZXRdLnUub3Bjb2RlKSkgLSAxXS51LnByb2ZpbGUgPT0gcmVzdWx0KTsKICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KKyAgICAgICAgUHJlZGljdGVkVHlwZSB2YWx1ZVBy
b2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgdW5zaWduZWQgdG90YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMoKQog
ICAgICAgICB7CkBAIC01NTQsMTIgKzU1NywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
CiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQog
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVl
ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2Nv
dW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtl
U2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4
ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hv
bGQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgY291bGRUYWtlU2xvd0Nhc2Uo
aW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9m
UmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIHVuc2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0g
T3B0aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91
YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6Y291bGRUYWtl
U2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KQEAgLTU3OCwxMiArNTg1LDE2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTcGVjaWFsRmFz
dENhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51
bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RD
YXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwog
ICAgICAgICAgICAgcmV0dXJuIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID49IE9wdGlvbnM6Omxpa2Vs
eVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4oc3BlY2lh
bEZhc3RDYXNlQ291bnQpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2Vs
eVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBi
b29sIGxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VD
b3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+
bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBz
cGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5t
X2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgLSBz
cGVjaWFsRmFzdENhc2VDb3VudDsKQEAgLTU5Miw2ICs2MDMsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UoaW50IGJ5dGVj
b2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQ
cm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVu
c2lnbmVkIHNsb3dDYXNlQ291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxG
YXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBz
bG93Q2FzZUNvdW50ICsgc3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBAIC02ODMsNyArNjk2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGFkZEZyZXF1ZW50RXhpdFNp
dGUoY29uc3QgREZHOjpGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAg
ICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAg
ICAgICAgICAgIHJldHVybiBtX2V4aXRQcm9maWxlLmFkZChzaXRlKTsKICAgICAgICAgfQogCkBA
IC03ODgsNiArODAxLDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGNvcHlQb3N0
UGFyc2VEYXRhRnJvbShDb2RlQmxvY2sqIGFsdGVybmF0aXZlKTsKICAgICAgICAgdm9pZCBjb3B5
UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgICAgICAKKyAgICAgICAgLy8gRnVu
Y3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIEpJVHRpbmcga2lja3MgaW4sIGluIGEgbWl4ZWQg
bW9kZQorICAgICAgICAvLyBleGVjdXRpb24gd29ybGQuCisgICAgICAgIAorICAgICAgICB2b2lk
IGRvbnRKSVRBbnl0aW1lU29vbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVj
dXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0
aW1lU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRBZnRlcldhcm1V
cCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlv
bnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICB2b2lkIGppdFNvb24oKQorICAgICAgICB7CisgICAgICAgICAgICBt
X2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JK
SVRTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQzMl90IGxsaW50RXhlY3V0
ZUNvdW50ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9sbGludEV4
ZWN1dGVDb3VudGVyOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICAvLyBGdW5jdGlvbnMg
Zm9yIGNvbnRyb2xsaW5nIHdoZW4gdGllcmVkIGNvbXBpbGF0aW9uIGtpY2tzIGluLiBUaGlzCiAg
ICAgICAgIC8vIGNvbnRyb2xzIGJvdGggd2hlbiB0aGUgb3B0aW1pemluZyBjb21waWxlciBpcyBp
bnZva2VkIGFuZCB3aGVuIE9TUgogICAgICAgICAvLyBlbnRyeSBoYXBwZW5zLiBUd28gdHJpZ2dl
cnMgZXhpc3Q6IHRoZSBsb29wIHRyaWdnZXIgYW5kIHRoZSByZXR1cm4KQEAgLTk4MCw2ICsxMDE2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zaG91bGREaXNjYXJkQnl0ZWNv
ZGU7CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1w
bChKU0dsb2JhbERhdGEmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZl
cmVuY2VzKFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29u
ZGl0aW9uYWxseSgpOwogICAgICAgICAKQEAgLTk5Miw3ICsxMDI5LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgdGFsbHlGcmVxdWVudEV4aXRTaXRlcygpIHsgfQogI2VuZGlmCiAg
ICAgICAgIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykK
ICAgICAgICAgdm9pZCBkdW1wKEV4ZWNTdGF0ZSosIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvbj46
OmNvbnN0X2l0ZXJhdG9yJiBiZWdpbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0
b3ImKSBjb25zdDsKIAogICAgICAgICBDU3RyaW5nIHJlZ2lzdGVyTmFtZShFeGVjU3RhdGUqLCBp
bnQgcikgY29uc3Q7CkBAIC0xMDAyLDcgKzEwMzgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBwcmludEdldEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJ
bnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0OwogICAg
ICAgICB2b2lkIHByaW50Q2FsbE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPElu
c3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7CiAgICAg
ICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8
SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKLSNl
bmRpZgogICAgICAgICB2b2lkIHZpc2l0U3RydWN0dXJlcyhTbG90VmlzaXRvciYsIEluc3RydWN0
aW9uKiB2UEMpIGNvbnN0OwogICAgICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTEwNjMs
OSArMTA5OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFNvdXJjZVByb3Zp
ZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7CiAKLSNpZiBF
TkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9wcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2dsb2JhbFJlc29s
dmVJbnN0cnVjdGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBTZWdtZW50ZWRWZWN0
b3I8TExJbnRDYWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxsTGlua0luZm9zOworICAgICAgICBT
ZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2Rl
PExMSW50Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdMTEludENhbGxzOwogI2VuZGlmCiAjaWYg
RU5BQkxFKEpJVCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0cnVjdHVy
ZVN0dWJJbmZvczsKQEAgLTEwNzYsOSArMTExMywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNoZWNrOwogICAgICAg
ICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxD
YWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2VuZGlmCi0jaWYgRU5BQkxFKERGR19K
SVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgT3duUHRy
PENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAgICAgIAorI2VuZGlmCisjaWYg
RU5BQkxFKERGR19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbiB7
CiAgICAgICAgICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigpIHsgfQogICAgICAgICAgICAg
CkBAIC0xMTQxLDEyICsxMTc5LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93blB0
cjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAgIAorICAgICAgICBpbnQzMl90IG1f
bGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAgICAgIGludDMyX3QgbV9qaXRFeGVj
dXRlQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVy
OwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFpbENvdW50ZXI7CiAgICAgICAgIHVp
bnQ4X3QgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9yZW9w
dGltaXphdGlvblJldHJ5Q291bnRlcjsKLQorICAgICAgICAKICAgICAgICAgc3RydWN0IFJhcmVE
YXRhIHsKICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHB1Ymxp
YzoKQEAgLTEyMTksNiArMTI1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoK
ICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBT
Y29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2
aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNh
bkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKQEAgLTEyNTMsNiArMTI5NCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGls
ZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpT
R2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsK
ICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKQEAgLTEy
OTAsNiArMTMzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAg
dmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWlu
Tm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENv
ZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVX
aXRoREZHKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMjAgKzI3LDQ5IEBACiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgogCiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50
KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRp
ZmllciYgaWRlbnQpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVO
VVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lm
IEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKyAgICAKKyAgICBp
ZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfbWV0aG9kX2NoZWNrKQorICAg
ICAgICBpbnN0cnVjdGlvbisrOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVj
dGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAgICAgICAg
cmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZv
dW5kLCBmYWxzZSk7CisgICAgCisgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpw
cm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5v
dEZvdW5kKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1
Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhTaW1wbGVEaXJlY3QsIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQsIGZhbHNl
KTsKKyNlbHNlCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0
dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisjZW5kaWYKK30KKwogR2V0QnlJZFN0YXR1cyBH
ZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBV
TlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9G
SUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mU3RydWN0dXJlU3R1YkluZm9z
KCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVj
b2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICAvLyBGaXJzdCBjaGVjayBpZiBpdCBtYWtlcyBl
aXRoZXIgY2FsbHMsIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBiZSBzdXBlciBjYXJlZnVsLCBv
cgogICAgIC8vIGlmIGl0J3Mgbm90IHNldCBhdCBhbGwsIGluIHdoaWNoIGNhc2Ugd2UgcHVudC4K
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRTdHVi
SW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJl
dHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3Vu
ZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVj
b2RlSW5kZXgsIGlkZW50KTsKICAgICAKICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxp
c3QqIGxpc3Q7CiAgICAgaW50IGxpc3RTaXplOwpAQCAtNjAsMTggKzg5LDE5IEBAIEdldEJ5SWRT
dGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICB9CiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgIGlmICghbGlzdC0+bGlzdFtpXS5pc0Rp
cmVjdCkKLSAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVj
dHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhN
YWtlc0NhbGxzLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIHRydWUpOwogICAgIH0KICAgICAK
ICAgICAvLyBOZXh0IGNoZWNrIGlmIGl0IHRha2VzIHNsb3cgY2FzZSwgaW4gd2hpY2ggY2FzZSB3
ZSB3YW50IHRvIGJlIGtpbmQgb2YgY2FyZWZ1bC4KICAgICBpZiAocHJvZmlsZWRCbG9jay0+bGlr
ZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiBHZXRCeUlk
U3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBub3RG
b3VuZCwgdHJ1ZSk7CiAgICAgCiAgICAgLy8gRmluYWxseSBmaWd1cmUgb3V0IGlmIHdlIGNhbiBk
ZXJpdmUgYW4gYWNjZXNzIHN0cmF0ZWd5LgogICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OworICAg
IHJlc3VsdC5tX3dhc1NlZW5JbkpJVCA9IHRydWU7CiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nl
c3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBHZXRCeUlk
U3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAg
IHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlk
ZW50KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6IHsKICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5mby51LmdldEJ5SWRTZWxmLmJhc2VPYmpl
Y3RTdHJ1Y3R1cmUuZ2V0KCk7CkBAIC0xMzAsNyArMTYwLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZSAv
LyBFTkFCTEUoSklUKQotICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0
cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CiAjZW5kaWYgLy8gRU5B
QkxFKEpJVCkKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMCArNDks
MTEgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgR2V0QnlJZFN0YXR1cyhTdGF0
ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQp
CisgICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1
Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQsIGJvb2wgd2FzU2VlbkluSklUKQogICAgICAgICA6IG1f
c3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQogICAg
ICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBtX3dhc1NlZW5JbkpJVCh3YXNTZWVu
SW5KSVQpCiAgICAgewogICAgICAgICBBU1NFUlQoKHN0YXRlID09IFNpbXBsZURpcmVjdCkgPT0g
KG9mZnNldCAhPSBub3RGb3VuZCkpOwogICAgIH0KQEAgLTcwLDEwICs3MSwxNSBAQCBwdWJsaWM6
CiAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdCB7IHJldHVybiBt
X3N0cnVjdHVyZVNldDsgfQogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29m
ZnNldDsgfQogICAgIAorICAgIGJvb2wgd2FzU2VlbkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93
YXNTZWVuSW5KSVQ7IH0KKyAgICAKIHByaXZhdGU6CisgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMg
Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVu
dGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmVTZXQgbV9z
dHJ1Y3R1cmVTZXQ7CiAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIGJvb2wgbV93YXNTZWVuSW5K
SVQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xh
c3MgU3RydWN0dXJlOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOworICAgIHN0cnVjdCBMTElu
dENhbGxMaW5rSW5mbzsKICAgICBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCiAjaWYgRU5BQkxFKEpJ
VCkKQEAgLTE0Niw2ICsxNDcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHN0
cnVjdCBJbnN0cnVjdGlvbiB7CisgICAgICAgIEluc3RydWN0aW9uKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdS5qc0NlbGwuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAg
SW5zdHJ1Y3Rpb24oT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogI2lmICFFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikKQEAgLTE4Miw2ICsxODgsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJG
dW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7IH0KICAgICAgICAgCisgICAgICAgIElu
c3RydWN0aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pIHsgdS5jYWxsTGlua0lu
Zm8gPSBjYWxsTGlua0luZm87IH0KKyAgICAgICAgCiAgICAgICAgIEluc3RydWN0aW9uKFZhbHVl
UHJvZmlsZSogcHJvZmlsZSkgeyB1LnByb2ZpbGUgPSBwcm9maWxlOyB9CiAKICAgICAgICAgdW5p
b24gewpAQCAtMTkxLDcgKzE5OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgV3Jp
dGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3RydWN0dXJlQ2hhaW47CiAgICAgICAgICAg
ICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxsOwogICAgICAgICAgICAgUHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKKyAgICAgICAgICAgIExMSW50Q2FsbExpbmtJ
bmZvKiBjYWxsTGlua0luZm87CiAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7Cisg
ICAgICAgICAgICB2b2lkKiBwb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAogICAgIHBy
aXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlu
a0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJ
bnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
TExJbnRDYWxsTGlua0luZm9faAorI2RlZmluZSBMTEludENhbGxMaW5rSW5mb19oCisKKyNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisj
aW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
c3RydWN0IEluc3RydWN0aW9uOworCitzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm8gOiBwdWJsaWMg
QmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+IHsKKyAgICBMTEludENhbGxM
aW5rSW5mbygpCisgICAgeworICAgIH0KKyAgICAKKyAgICB+TExJbnRDYWxsTGlua0luZm8oKQor
ICAgIHsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIGNhbGxlZTsgfQorICAgIAor
ICAgIHZvaWQgdW5saW5rKCkKKyAgICB7CisgICAgICAgIGNhbGxlZS5jbGVhcigpOworICAgICAg
ICBtYWNoaW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgICAgICBp
ZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBX
cml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0
aW9uPiBsYXN0U2VlbkNhbGxlZTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFjaGluZUNv
ZGVUYXJnZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIExMSW50Q2Fs
bExpbmtJbmZvX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhv
ZENhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwxMSBAQCBNZXRob2RDYWxsTGlua1N0YXR1cyBNZXRo
b2RDYWxsTGlua1N0YXR1CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVO
VVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFM
VUVfUFJPRklMRVIpCisgICAgLy8gTk9URTogVGhpcyBkb2VzIG5vdCBoYXZlIGFuIExMSW50IGZh
bGwtYmFjayBiZWNhdXNlIExMSW50IGRvZXMgbm90IGRvIGFueSBtZXRob2QKKyAgICAvLyBjYWxs
IGxpbmsgY2FjaGluZy4KKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mTWV0aG9kQ2Fs
bExpbmtJbmZvcygpKQorICAgICAgICByZXR1cm4gTWV0aG9kQ2FsbExpbmtTdGF0dXMoKTsKKyAg
ICAKICAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGwgPSBwcm9maWxlZEJsb2NrLT5n
ZXRNZXRob2RDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCk7CiAgICAgCiAgICAgaWYgKCFtZXRo
b2RDYWxsLnNlZW4gfHwgIW1ldGhvZENhbGwuY2FjaGVkU3RydWN0dXJlKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjMsNiArMTIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9hcmd1
bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkgXAogICAg
ICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAorICAgICAgICBtYWNybyhv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9p
ZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmljLCA5KSBc
CiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApAQCAtMjAyLDYgKzIwNCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIGVudW0geyBGT1JfRUFDSF9PUENPREVfSUQo
T1BDT0RFX0lEX0VOVU0pIH0gT3Bjb2RlSUQ7CiAgICAgI3VuZGVmIE9QQ09ERV9JRF9FTlVNCiAK
KyAgICBjb25zdCBpbnQgbWF4T3Bjb2RlTGVuZ3RoID0gOTsKICAgICBjb25zdCBpbnQgbnVtT3Bj
b2RlSURzID0gb3BfZW5kICsgMTsKIAogICAgICNkZWZpbmUgT1BDT0RFX0lEX0xFTkdUSFMoaWQs
IGxlbmd0aCkgY29uc3QgaW50IGlkIyNfbGVuZ3RoID0gbGVuZ3RoOwpAQCAtMjE4LDcgKzIyMSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoVkVSSUZZX09Q
Q09ERV9JRCk7CiAgICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQKIAotI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJF
VEVSKSB8fCBFTkFCTEUoTExJTlQpCiAjaWYgQ09NUElMRVIoUlZDVCkgfHwgQ09NUElMRVIoSU5U
RUwpCiAgICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTA2
MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNywyNyArMjcsNjkgQEAKICNpbmNsdWRlICJQdXRCeUlkU3Rh
dHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hh
aW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK1B1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6
Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQoreworICAgIFVOVVNFRF9QQVJBTShwcm9maWxl
ZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisgICAgVU5VU0VEX1BB
UkFNKGlkZW50KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5k
ZXg7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0
dXJlLmdldCgpOworICAgIGlmICghc3RydWN0dXJlKQorICAgICAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgCisgICAgaWYgKGlu
c3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZCkgeworICAgICAgICBz
aXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEo
KSwgaWRlbnQpOworICAgICAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICAgICAg
cmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOwor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlUmVwbGFjZSwgc3Ry
dWN0dXJlLCAwLCAwLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQoaW5zdHJ1Y3Rp
b25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Cisg
ICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgCisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUg
PSBpbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBTdHJ1Y3R1cmVDaGFpbiog
Y2hhaW4gPSBpbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpOworICAgIEFTU0VS
VChuZXdTdHJ1Y3R1cmUpOworICAgIEFTU0VSVChjaGFpbik7CisgICAgCisgICAgc2l6ZV90IG9m
ZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlk
ZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgCisgICAgcmV0
dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1
cmUsIGNoYWluLCBvZmZzZXQpOworI2Vsc2UKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0lu
Zm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisjZW5kaWYKK30KKwogUHV0QnlJZFN0YXR1
cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAg
ICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9Q
Uk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mU3RydWN0dXJlU3R1Yklu
Zm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5
dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICBpZiAocHJvZmlsZWRCbG9jay0+bGlrZWx5
VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3Rh
dHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKICAgICAKICAgICBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mbyhieXRlY29k
ZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJldHVybiBQdXRCeUlk
U3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJu
IGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwog
ICAgIAogICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewogICAgIGNhc2UgYWNjZXNz
X3Vuc2V0OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAw
LCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVk
QmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3Nf
cHV0X2J5X2lkX3JlcGxhY2U6IHsKICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0dWJJbmZvLnUu
cHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0KApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMDYw
NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKICAgICBzaXplX3Qgb2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKIHByaXZhdGU6CisgICAgc3RhdGlj
IFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBT
dHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOwogICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmU7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXpl
ci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgor
I2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTY29wZUNoYWluLmgi
CiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKQEAgLTEx
NiwyNiArMTE3LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGV4cGVjdGVkIGJ5IHRoZSBjYWxs
ZWUuCiAqLwogCi0jaWZuZGVmIE5ERUJVRwogc3RhdGljIGJvb2wgc19kdW1wc0dlbmVyYXRlZENv
ZGUgPSBmYWxzZTsKLSNlbmRpZgogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dl
bmVyYXRlZENvZGUoYm9vbCBkdW1wc0dlbmVyYXRlZENvZGUpCiB7Ci0jaWZuZGVmIE5ERUJVRwog
ICAgIHNfZHVtcHNHZW5lcmF0ZWRDb2RlID0gZHVtcHNHZW5lcmF0ZWRDb2RlOwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oZHVtcHNHZW5lcmF0ZWRDb2RlKTsKLSNlbmRpZgogfQogCiBib29sIEJ5
dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKQogewotI2lmbmRlZiBOREVCVUcK
ICAgICByZXR1cm4gc19kdW1wc0dlbmVyYXRlZENvZGU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxz
ZTsKLSNlbmRpZgogfQogCiBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkK
QEAgLTE0OCwxMCArMTM5LDggQEAgSlNPYmplY3QqIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
ZSgpCiAKICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25Db3VudChtX2NvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIAotI2lmbmRlZiBOREVCVUcKICAgICBpZiAoc19kdW1w
c0dlbmVyYXRlZENvZGUpCiAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wKG1fc2NvcGVDaGFpbi0+
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpOwotI2VuZGlmCiAKICAgICBpZiAoKG1fY29kZVR5
cGUgPT0gRnVuY3Rpb25Db2RlICYmICFtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigp
ICYmICFtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKSB8fCBtX2NvZGVUeXBlID09IEV2YWxD
b2RlKQogICAgICAgICBzeW1ib2xUYWJsZSgpLmNsZWFyKCk7CkBAIC0xMjc2LDkgKzEyNjUsNyBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9u
cygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIG1f
Y29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKTsKLSNlbmRpZgogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmls
ZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1p
YyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRz
dC0+aW5kZXgoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChw
cm9wZXJ0eSkpOwpAQCAtMTQ0MCw5ICsxNDI3LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9jb2RlQmxvY2stPmFkZEds
b2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFC
TEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgVmFsdWVQcm9maWxlKiBw
cm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jl
c29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ5MCw5ICsxNDc1LDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9j
b2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAj
ZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKHJlcXVpcmVzRHluYW1p
Y0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTUxMSw5ICsxNDk0
LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1ldGhvZENoZWNrKAogCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSNpZiBFTkFCTEUo
SU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgVmFsdWVQcm9maWxlKiBw
cm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2dldF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0xNTM5LDkgKzE1MjAsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVS
KQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0
aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKIAogICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBAIC0xNTU3LDkgKzE1
MzYsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5CiAKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZChSZWdpc3RlcklEKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0j
aWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICAKICAgICBl
bWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2Ut
PmluZGV4KCkpOwpAQCAtMTg0OCw3ICsxODI1LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0Q2FsbCgKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgo
KSk7IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0ZXJPZmZz
ZXQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJs
b2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKDApOworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlm
IChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMTk1Miw3ICsx
OTMzLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3QKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygp
KTsgLy8gYXJnQ291bnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5y
ZWdpc3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5m
bygpKTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworI2VuZGlmCiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgp
KSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShv
cF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMjIxMyw3ICsyMTk4LDExIEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gKIHsKICAgICBtX3VzZXNFeGNlcHRpb25zID0gdHJ1
ZTsKICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICBIYW5kbGVySW5mbyBp
bmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMo
KS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoLCBDb2RlTG9j
YXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9jYXRjaCkpIH07CisjZWxz
ZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQo
MCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFz
ZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKCkgfTsKKyNlbmRpZgogI2Vsc2UKICAgICBI
YW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBp
bnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURl
cHRoIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA0LDkg
KzYwNCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBVTlVTRURfUEFSQU0obm9kZUluZGV4
KTsKICAgICAgICAgCi0gICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVJbmRleCk7Ci0gICAgICAgIEFTU0VSVChwcm9maWxlKTsKLSAgICAgICAgUHJlZGljdGVk
VHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7Cisg
ICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlSW5kZXgpOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICAgICAgcHJpbnRm
KCJEeW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4LCBieXRl
Y29kZUluZGV4LCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikpOwogI2VuZGlmCkBAIC0x
MDQxLDYgKzEwMzksOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhib29s
CiAgICAgCiAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhlbiBpdCBsb29rcyBsaWtlIHdlIHNob3Vs
ZCBkZWZpbml0ZWx5IGlubGluZSB0aGlzIGNvZGUuIFByb2NlZWQKICAgICAvLyB3aXRoIHBhcnNp
bmcgdGhlIGNvZGUgdG8gZ2V0IGJ5dGVjb2RlLCBzbyB0aGF0IHdlIGNhbiB0aGVuIHBhcnNlIHRo
ZSBieXRlY29kZS4KKyAgICAvLyBOb3RlIHRoYXQgaWYgTExJbnQgaXMgZW5hYmxlZCwgdGhlIGJ5
dGVjb2RlIHdpbGwgYWx3YXlzIGJlIGF2YWlsYWJsZS4gQWxzbyBub3RlCisgICAgLy8gdGhhdCBp
ZiBMTEludCBpcyBlbmFibGVkLCB3ZSBtYXkgaW5saW5lIGEgY29kZSBibG9jayB0aGF0IGhhcyBu
ZXZlciBiZWVuIEpJVHRlZAorICAgIC8vIGJlZm9yZSEKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IG1fY29kZUJsb2NrQ2FjaGUuZ2V0KENvZGVCbG9ja0tleShleGVjdXRhYmxlLCBraW5kKSwg
ZXhwZWN0ZWRGdW5jdGlvbi0+c2NvcGUoKSk7CiAgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTE3NDEsNyArMTc0Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKG1ldGhvZENhbGxTdGF0dXMuaXNTZXQoKQotICAgICAgICAgICAgICAgICYmICFnZXRC
eUlkU3RhdHVzLmlzU2V0KCkKKyAgICAgICAgICAgICAgICAmJiAhZ2V0QnlJZFN0YXR1cy53YXNT
ZWVuSW5KSVQoKQogICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpIHsKICAgICAgICAg
ICAgICAgICAvLyBJdCdzIG1vbm9tb3JwaGljIGFzIGZhciBhcyB3ZSBjYW4gdGVsbCwgc2luY2Ug
dGhlIG1ldGhvZF9jaGVjayB3YXMgbGlua2VkCiAgICAgICAgICAgICAgICAgLy8gYnV0IHRoZSBz
bG93IHBhdGggKGkuZS4gdGhlIG5vcm1hbCBnZXRfYnlfaWQpIG5ldmVyIGZpcmVkLgpAQCAtMTgx
MCw3ICsxODExLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwogICAgICAgICB9Ci0gICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2
YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgICAg
IE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwog
ICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3At
Pm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmRdOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lv
biAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDggQEAgaW5saW5lIGJvb2wgY2FuQ29tcGls
ZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2Fz
ZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX3B1dF9n
bG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTA2MDQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw2ICs0OCwyMSBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICB1aW50MzJfdCBleGl0SW5kZXggPSBnbG9iYWxEYXRhLT5vc3JFeGl0SW5kZXg7
CiAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jay0+b3NyRXhpdChleGl0SW5kZXgpOwogICAg
IAorICAgIC8vIE1ha2Ugc3VyZSBhbGwgY29kZSBvbiBvdXIgaW5saW5lIHN0YWNrIGlzIEpJVCBj
b21waWxlZC4gVGhpcyBpcyBuZWNlc3Nhcnkgc2luY2UKKyAgICAvLyB3ZSBtYXkgb3B0IHRvIGlu
bGluZSBhIGNvZGUgYmxvY2sgZXZlbiBiZWZvcmUgaXQgaGFkIGV2ZXIgYmVlbiBjb21waWxlZCBi
eSB0aGUKKyAgICAvLyBKSVQsIGJ1dCBvdXIgT1NSIGV4aXQgaW5mcmFzdHJ1Y3R1cmUgY3VycmVu
dGx5IG9ubHkgd29ya3MgaWYgdGhlIHRhcmdldCBvZiB0aGUKKyAgICAvLyBPU1IgZXhpdCBpcyBK
SVQgY29kZS4gVGhpcyBjb3VsZCBiZSBjaGFuZ2VkIHNpbmNlIHRoZXJlIGlzIG5vdGhpbmcgcGFy
dGljdWxhcmx5CisgICAgLy8gaGFyZCBhYm91dCBkb2luZyBhbiBPU1IgZXhpdCBpbnRvIHRoZSBp
bnRlcnByZXRlciwgYnV0IGZvciBub3cgdGhpcyBzZWVtcyB0byBtYWtlCisgICAgLy8gc2Vuc2Ug
aW4gdGhhdCBpZiB3ZSdyZSBPU1IgZXhpdGluZyBmcm9tIGlubGluZWQgY29kZSBvZiBhIERGRyBj
b2RlIGJsb2NrLCB0aGVuCisgICAgLy8gcHJvYmFibHkgaXQncyBhIGdvb2Qgc2lnbiB0aGF0IHRo
ZSB0aGluZyB3ZSdyZSBleGl0aW5nIGludG8gaXMgaG90LiBFdmVuIG1vcmUKKyAgICAvLyBpbnRl
cmVzdGluZ2x5LCBzaW5jZSB0aGUgY29kZSB3YXMgaW5saW5lZCwgaXQgbWF5IG5ldmVyIG90aGVy
d2lzZSBnZXQgSklUCisgICAgLy8gY29tcGlsZWQgc2luY2UgdGhlIGFjdCBvZiBpbmxpbmluZyBp
dCBtYXkgZW5zdXJlIHRoYXQgaXQgb3RoZXJ3aXNlIG5ldmVyIHJ1bnMuCisgICAgZm9yIChDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVy
KSB7CisgICAgICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKQorICAgICAgICAgICAgLT5iYXNlbGlu
ZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+aXNDYWxsID8gQ29kZUZv
ckNhbGwgOiBDb2RlRm9yQ29uc3RydWN0KQorICAgICAgICAgICAgLT5qaXRDb21waWxlKCpnbG9i
YWxEYXRhKTsKKyAgICB9CisgICAgCiAgICAgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3Zlcnkg
PSAwOwogICAgIGlmIChleGl0Lm1fcmVjb3ZlcnlJbmRleCkKICAgICAgICAgcmVjb3ZlcnkgPSAm
Y29kZUJsb2NrLT5zcGVjdWxhdGlvblJlY292ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4IC0gMSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJl
dmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiREZHUmVwYXRjaC5oIgor
I2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJJbmxpbmVBU00uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAt
NjcxLDQ4ICs2NzIsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3Ry
CiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNvZGVkSlNW
YWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4
ZWNTdGF0ZSopOwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NU
UklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKLSAg
ICAibW92ICVyMTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9O
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BV
KFg4NikKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4i
Ci0gICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVzcClcbiIK
LSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20gKAot
Ii50ZXh0IiAiXG4iCi0iLmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpICJcbiIKLSIudGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFS
QU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKLSAg
ICAiY3B5IHIwLCByNSIgIlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0KLUVu
Y29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVj
U3RhdGUoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9
ICZleGVjLT5nbG9iYWxEYXRhKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihn
bG9iYWxEYXRhLCBleGVjKTsKLSAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMt
Pmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKLX0KLQogc3RhdGljIHZvaWQqIGhh
bmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2Fs
bGVlLT5jYWxsZXJGcmFtZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxs
b2NhdGlvblNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QWxsb2NhdGlvblNwYWNlLmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3
IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSGVhcDsKK2NsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIGNsYXNzIE1hcmtlZEJsb2NrOwogCiBjbGFzcyBBbGxvY2F0aW9uU3BhY2UgewpA
QCAtNjcsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaHJpbmsoKTsKICAgICAKIHByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICBl
bnVtIEFsbG9jYXRpb25FZmZvcnQgeyBBbGxvY2F0aW9uQ2FuRmFpbCwgQWxsb2NhdGlvbk11c3RT
dWNjZWVkIH07CiAKICAgICB2b2lkKiBhbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTA2MDQ1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgzNyw3ICs4MzcsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dn
CiAgICAgICAgIHNldEhpZ2hXYXRlck1hcmsobWF4KHByb3BvcnRpb25hbEJ5dGVzLCBtX21pbkJ5
dGVzUGVyQ3ljbGUpKTsKICAgICB9CiAgICAgSkFWQVNDUklQVENPUkVfR0NfRU5EKCk7Ci0KKyAg
ICAKICAgICAoKm1fYWN0aXZpdHlDYWxsYmFjaykoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBKU1ZhbHVlOwogICAgIGNs
YXNzIExpdmVPYmplY3RJdGVyYXRvcjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAgICAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXI7CiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxl
OwogICAgIGNsYXNzIFVTdHJpbmc7CkBAIC0xMzYsMTEgKzEzNywxMiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlND
ZWxsKj4mIHJvb3RzKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBNYXJr
ZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNzIEFsbG9jYXRpb25TcGFjZTsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBm
cmllbmQgY2xhc3MgQnVtcFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7
Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAKICAgICAgICAgc2l6ZV90IHdhdGVy
TWFyaygpOwogICAgICAgICBzaXplX3QgaGlnaFdhdGVyTWFyaygpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MDQsNyArMzA0LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKAog
I2VuZGlmCiAKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwotCisgICAgCiAgICAg
aWYgKGlzSlNTdHJpbmcoY2VsbCkpIHsKICAgICAgICAgSlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4o
Y29uc3RfY2FzdDxKU0NlbGwqPihjZWxsKSwgdmlzaXRvcik7CiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMTA2
MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEhlYXA7CiBj
bGFzcyBKU0NlbGw7CiBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CitjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiBjbGFzcyBXZWFrR0NIYW5kbGU7CiBjbGFzcyBTbG90VmlzaXRvcjsKIApA
QCAtNzcsNiArNzgsOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQmxvY2soKTsKIAogcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAgIC8vIFsg
MzIuLi4gMjU2IF0KICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VTdGVwID0gTWFya2Vk
QmxvY2s6OmF0b21TaXplOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZUN1dG9mZiA9
IDI1NjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDYgKzExOSw5IEBAIG5hbWVz
cGFjZSBKU0MgIHsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIEluc3RydWN0aW9u
KiByZXR1cm5WUEMoKSBjb25zdCB7IHJldHVybiB0aGlzW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENd
LnZQQygpOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIEluc3RydWN0aW9u
KiBjdXJyZW50VlBDKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4o
dGhpc1tSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnRdLnRhZygpKTsgfQorI2VuZGlmCiAKICAg
ICAgICAgdm9pZCBzZXRDYWxsZXJGcmFtZShDYWxsRnJhbWUqIGNhbGxlckZyYW1lKSB7IHN0YXRp
Y19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZV0gPSBjYWxs
ZXJGcmFtZTsgfQogICAgICAgICB2b2lkIHNldFNjb3BlQ2hhaW4oU2NvcGVDaGFpbk5vZGUqIHNj
b3BlQ2hhaW4pIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OlNj
b3BlQ2hhaW5dID0gc2NvcGVDaGFpbjsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02OSw3ICs2OSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjZW5kaWYKIAotI2Rl
ZmluZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQgKEVOQUJMRShDT01QVVRF
RF9HT1RPX0lOVEVSUFJFVEVSKSAmJiAhZGVmaW5lZChfX2xsdm1fXykpCisjZGVmaW5lIFdURl9V
U0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAoKEVOQUJMRShDT01QVVRFRF9HT1RPX0lO
VEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpKSAmJiAhZGVmaW5lZChfX2xsdm1fXykpCiAKIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTU0NywxNyArNTQ3LDQzIEBAIEludGVycHJldGVyOjpJ
bnRlcnByZXRlcigpCiB7CiB9CiAKLXZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBj
YW5Vc2VKSVQpCitJbnRlcnByZXRlcjo6fkludGVycHJldGVyKCkKIHsKLSNpZiBFTkFCTEUoQ09N
UFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fZW5h
YmxlZCkKKyAgICAgICAgZGVsZXRlW10gbV9vcGNvZGVUYWJsZTsKKyNlbmRpZgorfQorCit2b2lk
IEludGVycHJldGVyOjppbml0aWFsaXplKExMSW50OjpEYXRhKiBsbGludERhdGEsIGJvb2wgY2Fu
VXNlSklUKQoreworICAgIFVOVVNFRF9QQVJBTShsbGludERhdGEpOworICAgIFVOVVNFRF9QQVJB
TShjYW5Vc2VKSVQpOworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBF
TkFCTEUoTExJTlQpCisjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorICAg
IC8vIEhhdmluZyBMTEludCBlbmFibGVkLCBidXQgbm90IGJlaW5nIGFibGUgdG8gdXNlIHRoZSBK
SVQsIGFuZCBub3QgaGF2aW5nCisgICAgLy8gYSBjb21wdXRlZCBnb3RvIGludGVycHJldGVyLCBp
cyBub3Qgc3VwcG9ydGVkLiBOb3QgYmVjYXVzZSB3ZSBjYW5ub3QKKyAgICAvLyBzdXBwb3J0IGl0
LCBidXQgYmVjYXVzZSBJIGRlY2lkZWQgdG8gZHJhdyB0aGUgbGluZSBhdCB0aGUgbnVtYmVyIG9m
CisgICAgLy8gcGVybXV0YXRpb25zIG9mIGV4ZWN1dGlvbiBlbmdpbmVzIHRoYXQgSSB3YW50ZWQg
dGhpcyBjb2RlIHRvIGdyb2suCisgICAgQVNTRVJUKGNhblVzZUpJVCk7CisjZW5kaWYKICAgICBp
ZiAoY2FuVXNlSklUKSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxl
ID0gbGxpbnREYXRhLT5vcGNvZGVNYXAoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1PcGNvZGVJRHM7ICsraSkKKyAgICAgICAgICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNv
ZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsKKyNlbHNlCiAgICAgICAgIC8v
IElmIHRoZSBKSVQgaXMgcHJlc2VudCwgZG9uJ3QgdXNlIGp1bXAgZGVzdGluYXRpb25zIGZvciBv
cGNvZGVzLgogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJ
RHM7ICsraSkgewogICAgICAgICAgICAgT3Bjb2RlIG9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihpKSk7CiAgICAgICAgICAgICBtX29wY29kZVRhYmxl
W2ldID0gb3Bjb2RlOwogICAgICAgICB9CisjZW5kaWYKICAgICB9IGVsc2UgeworI2lmIEVOQUJM
RShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJsZSA9IG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURz
XTsKKyNlbmRpZgogICAgICAgICBwcml2YXRlRXhlY3V0ZShJbml0aWFsaXplQW5kUmV0dXJuLCAw
LCAwKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURz
OyArK2kpCkBAIC01NjYsNyArNTkyLDYgQEAgdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShi
b29sIGNhblVzZQogICAgICAgICBtX2VuYWJsZWQgPSB0cnVlOwogICAgIH0KICNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGNhblVzZUpJVCk7CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1f
ZW5hYmxlZCA9IHRydWU7CiAjZWxzZQpAQCAtNjY3LDkgKzY5MiwxMSBAQCB2b2lkIEludGVycHJl
dGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtCiAKIGJvb2wgSW50ZXJwcmV0ZXI6OmlzT3Bjb2Rl
KE9wY29kZSBvcGNvZGUpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIp
CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkK
KyNpZiAhRU5BQkxFKExMSU5UKQogICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm4g
b3Bjb2RlID49IDAgJiYgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KG9wY29kZSkpIDw9IG9wX2VuZDsKKyNlbmRpZgogICAgIHJldHVybiBvcGNvZGUgIT0gSGFz
aFRyYWl0czxPcGNvZGU+OjplbXB0eVZhbHVlKCkKICAgICAgICAgJiYgIUhhc2hUcmFpdHM8T3Bj
b2RlPjo6aXNEZWxldGVkVmFsdWUob3Bjb2RlKQogICAgICAgICAmJiBtX29wY29kZUlEVGFibGUu
Y29udGFpbnMob3Bjb2RlKTsKQEAgLTcyNiwxMSArNzUzLDExIEBAIE5FVkVSX0lOTElORSBib29s
IEludGVycHJldGVyOjp1bndpbmRDYWwKICAgICAvLyBoYXZlIHRvIHN1YnRyYWN0IDEuCiAjaWYg
RU5BQkxFKEpJVCkgJiYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIGlmIChjYWxsZXJGcmFtZS0+
Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQotICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVC
bG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0
ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxs
RnJhbWUtPnJldHVyblBDKCkpOwogICAgIGVsc2UKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBj
b2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNl
bGlmIEVOQUJMRShKSVQpCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2Rl
T2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2Rl
QmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkp
OwogI2Vsc2UKICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQo
Y2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAxOwogI2VuZGlmCkBAIC01MTcwLDEwICs1MTk3LDEw
IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcihDYWwKICAgICAgICAgYnl0
ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+
cmV0dXJuVlBDKCkpOwogI2lmIEVOQUJMRShKSVQpCiAgICAgZWxzZQotICAgICAgICBieXRlY29k
ZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1
cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAj
ZWxzZQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNl
dChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29k
ZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygp
KTsKICNlbmRpZgogICAgIGxpbmVOdW1iZXIgPSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCAtIDEpOwogICAgIHNvdXJjZUlEID0gY2Fs
bGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lv
biAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5o
IgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUg
IkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmls
ZS5oIgogCkBAIC00NSw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0
aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFs
T2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9n
cmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWlu
Tm9kZTsKQEAgLTEwMCwxOSArMTAyLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
SW50ZXJwcmV0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAg
ZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBKSVQ7CiAgICAgcHVibGljOgogICAgICAgICBJbnRlcnByZXRlcigpOworICAgICAgICB+
SW50ZXJwcmV0ZXIoKTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGNh
blVzZUpJVCk7CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZShMTEludDo6RGF0YSosIGJvb2wgY2Fu
VXNlSklUKTsKIAogICAgICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSgpIHsgcmV0dXJu
IG1fcmVnaXN0ZXJGaWxlOyB9CiAgICAgICAgIAogICAgICAgICBPcGNvZGUgZ2V0T3Bjb2RlKE9w
Y29kZUlEIGlkKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7
Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBV
VEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgICAgIHJldHVy
biBtX29wY29kZVRhYmxlW2lkXTsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4gaWQ7CkBAIC0x
MjIsNyArMTI2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPcGNvZGVJRCBnZXRPcGNv
ZGVJRChPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0
aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5B
QkxFKExMSU5UKQorICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOworICAgICAg
ICAgICAgcmV0dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKKyNlbGlmIEVOQUJMRShD
T01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9w
Y29kZSkpOwogICAgICAgICAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUp
KTsKQEAgLTEzMiw2ICsxMzksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgZW5h
YmxlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2VuYWJsZWQ7CisgICAgICAg
IH0KIAogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKQEAgLTE5OSw3ICsyMTEsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlIG1fcmVnaXN0ZXJGaWxl
OwogICAgICAgICAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgICAgIE9wY29kZSogbV9vcGNvZGVUYWJsZTsgLy8gTWFwcyBPcGNv
ZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZworICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bj
b2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRl
Y29tcGlsaW5nCisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAg
ICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2RlSURzXTsgLy8gTWFwcyBPcGNvZGVJRCA9
PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+
IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGls
aW5nCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdp
c3RlckZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvUmVnaXN0ZXJGaWxlLmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiAr
MzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwog
ICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogCiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoUmVnaXN0ZXJGaWxlKTsKQEAgLTgxLDYgKzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGdyb3dTbG93Q2FzZShSZWdpc3Rlciop
OwogICAgICAgICB2b2lkIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwogICAgICAgICB2b2lkIGFk
ZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5W
YWx1ZS5oIgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSW5saW5lQVNNLmgi
CisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1ZhbHVlSW5saW5lTWV0aG9kcy5o
IgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2V4dGVybiAi
QyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSgpOworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVU
VVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVj
U3RhdGUqKTsKKworI2lmIENQVShYODZfNjQpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJ
TkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCisgICAg
Im1vdiAlcjEzLCAlcmRpXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShY
ODYpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgor
ICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4iCisgICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCisg
ICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVl
V2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorYXNtICgKKyIu
dGV4dCIgIlxuIgorIi5hbGlnbiAyIiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiXG4iCisiLnRodW1iIiAiXG4iCisiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFN
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCisgICAg
ImNweSByMCwgcjUiICJcbiIKKyAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRI
b3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbmRpZgorCitleHRl
cm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhv
c3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVyblZh
bHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisjZGVmaW5lIEhvc3RDYWxsUmV0
dXJuVmFsdWVfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ0FMTElOR19D
T05WRU5USU9OX0lTX1NURENBTEwKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJ
T04gQ0RFQ0wKKyNlbHNlCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OCisj
ZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1Rf
Q0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKK30KKwor
I2VuZGlmIC8vIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsOCBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dpbGxf
Y2FsbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBERUZJ
TkVfT1Aob3BfcHVzaF9zY29wZSkKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgog
ICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0
X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKQEAgLTQ4Nyw2ICs0
ODksOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfcG9zdF9pbmMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9wcmVfZGVjKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2luYykKKyAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkK
ICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsKQpAQCAtNTI2LDYg
KzUzMCwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiBKSVRDb2Rl
IEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2spCiB7
CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIkNvbXBpbGluZyBKSVQg
Y29kZSFcbiIpOworI2VuZGlmCisgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogICAg
IG1fY2FuQmVPcHRpbWl6ZWQgPSBtX2NvZGVCbG9jay0+Y2FuQ29tcGlsZVdpdGhERkcoKTsKICNl
bmRpZgpAQCAtNjkwLDggKzY5OCwxMiBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29k
ZVB0ciogZnVuCiAgICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gbV9jb2RlQmxvY2st
PnN0cnVjdHVyZVN0dWJJbmZvKG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mb1tpXS5wcm9wZXJ0
eUFjY2Vzc0luZGV4KS5jYWxsUmV0dXJuTG9jYXRpb247CiAgICAgfQogCi0jaWYgRU5BQkxFKERG
R19KSVQpCi0gICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkg
fHwgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2NhbkJlT3B0aW1pemVkCisjaWYgRU5BQkxFKExM
SU5UKQorICAgICAgICB8fCB0cnVlCisjZW5kaWYKKyAgICAgICAgKSB7CiAgICAgICAgIENvbXBh
Y3RKSVRDb2RlTWFwOjpFbmNvZGVyIGppdENvZGVNYXBFbmNvZGVyOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBtX2xhYmVscy5zaXpl
KCk7ICsrYnl0ZWNvZGVPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChtX2xhYmVsc1tieXRlY29k
ZU9mZnNldF0uaXNTZXQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCShy
ZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
SklUQ29kZSgpIHsgfQogI2VuZGlmCiAgICAgcHVibGljOgotICAgICAgICBlbnVtIEpJVFR5cGUg
eyBIb3N0Q2FsbFRodW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CisgICAgICAgIGVudW0gSklU
VHlwZSB7IE5vbmUsIEhvc3RDYWxsVGh1bmssIEludGVycHJldGVyVGh1bmssIEJhc2VsaW5lSklU
LCBERkdKSVQgfTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKSVRUeXBlIGJvdHRvbVRpZXJK
SVQoKQogICAgICAgICB7CkBAIC02Niw4ICs2NiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIHJldHVybiBERkdKSVQ7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRp
YyBib29sIGlzT3B0aW1pemluZ0pJVChKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBqaXRUeXBlID09IERGR0pJVDsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgc3RhdGljIGJvb2wgaXNCYXNlbGluZUNvZGUoSklUVHlwZSBqaXRUeXBlKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBJbnRlcnByZXRlclRodW5rIHx8IGpp
dFR5cGUgPT0gQmFzZWxpbmVKSVQ7CisgICAgICAgIH0KKyAgICAgICAgCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICAgICAgSklUQ29kZSgpCisgICAgICAgICAgICA6IG1faml0VHlwZShOb25lKQogICAg
ICAgICB7CiAgICAgICAgIH0KIApAQCAtNzUsNiArODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIDogbV9yZWYocmVmKQogICAgICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkK
ICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGppdFR5cGUgIT0gTm9uZSk7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3IgISgpIGNvbnN0CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE1
ICszMywyMSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZH
RHJpdmVyLmgiCiAjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4K
IGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUs
IEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxv
Y2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFn
bG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBj
b2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBp
bGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAgICAg
ICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZShnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0
KCksIGppdENvZGUpOwpAQCAtNTUsMTAgKzYxLDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlm
QXBwcm9wcmlhdGUoSlNHbAogICAgICAgICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBp
bGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BD
T0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVk
Q29kZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9y
dHVuaXR5KCk7Ci0jZW5kaWYKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGlu
Z09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cigpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY2LDkgKzY5
LDE0IEBAIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2wKIAogaW5saW5l
IGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0
Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJl
ZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsK
KyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMo
KTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUg
PT0gSklUQ29kZTo6REZHSklUKQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGls
ZUZ1bmN0aW9uKGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSwgaml0Q29kZVdp
dGhBcml0eUNoZWNrKTsKQEAgLTgzLDExICs5MSw3IEBAIGlubGluZSBib29sIGppdENvbXBpbGVG
dW5jdGlvbklmQXBwcm9wcmkKICAgICAgICAgfQogICAgICAgICBqaXRDb2RlID0gSklUOjpjb21w
aWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksICZqaXRDb2RlV2l0aEFyaXR5Q2hlY2sp
OwogICAgIH0KLSNpZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLSAgICBpZiAoIUJ5dGVjb2Rl
R2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKLSAgICAgICAgY29kZUJsb2NrLT5oYW5k
bGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwotI2VuZGlmCi0gICAgCisgICAgY29k
ZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAgIGNvZGVC
bG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAgIAog
ICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNl
cHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4
Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIEV4
Y2VwdGlvbkhhbmRsZXIgZ2VuZXJpY1Rocm93KEpTR2xvYmFsRGEKIAogRXhjZXB0aW9uSGFuZGxl
ciBqaXRUaHJvdyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4ZWNTdGF0ZSogY2FsbEZyYW1l
LCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBSZXR1cm5BZGRyZXNzUHRyIGZhdWx0TG9jYXRpb24p
CiB7Ci0gICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGV4Y2Vw
dGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChmYXVsdExv
Y2F0aW9uKSk7CisgICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUs
IGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChj
YWxsRnJhbWUsIGZhdWx0TG9jYXRpb24pKTsKIH0KIAogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEzLDcgKzE5MTMs
NyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNrRnJhbWUuYXJnc1swXS5pbnQzMigpOwogCiAjaWYgRU5B
QkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmludGYoIkVudGVyZWQgb3B0aW1pemVfZnJvbV9s
b29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIg
PSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jay0+aml0RXhl
Y3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBj
b2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBwcmludGYoIiVwOiBF
bnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0
aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1
XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2Nr
LT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRl
bGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1pemVk
UmVwbGFjZW1lbnQoKSkgewpAQCAtMjE2OCw0NSArMjE2OCwxMyBAQCBERUZJTkVfU1RVQl9GVU5D
VElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5l
IENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXJG
aWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKLXsKLSAgICBK
U0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpOwotICAg
IEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICBDb2RlQmxvY2sqIG5ld0Nv
ZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihr
aW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdo
IHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNz
ZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhjYWxsRnJhbWUt
PnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxv
Y2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBBU1NF
UlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5k
IGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVk
LgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVnaXN0ZXIqIHNyYyA9IGNhbGxGcmFtZS0+
cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkg
KyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGludCBlbmQgPSAtQ2FsbEZyYW1lOjpvZmZzZXRG
b3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZvciAoaSA9IC0xOyBpID49IGVu
ZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07Ci0KLSAgICBlbmQgLT0gZGVsdGE7Ci0g
ICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgp
OwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShkc3Qp
OwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1lIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkp
OwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9OKHZv
aWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0
YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxG
cmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxs
RnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CisgICAgQ2FsbEZy
YW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZy
YW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOwogICAgIGlmICghbmV3
Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQq
PihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKIApAQCAtMjIxOSw3ICsy
MTg3LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAogCiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxG
cmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUu
cmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxG
cmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJh
bWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBpZiAoIW5ld0NhbGxGcmFt
ZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lkKj4oc3RhY2tG
cmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVTdGFja092ZXJmbG93
RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsOCArMjYsMTAgQEAKICNpZm5kZWYgSlNJbnRlcmZhY2VKSVRfaAogI2RlZmluZSBKU0ludGVy
ZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAi
SklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIK
ICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNs
dWRlICJSZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENvbW1vbl9o
CisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2RlZmluZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lO
RyAwCisjZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFDSU5HIDAKKworI2VuZGlmIC8vIExMSW50Q29t
bW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJ
bnREYXRhLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5o
IgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGNvZGUuaCIK
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK0RhdGE6OkRhdGEoKQorICAg
IDogbV9leGNlcHRpb25JbnN0cnVjdGlvbnMobmV3IEluc3RydWN0aW9uW21heE9wY29kZUxlbmd0
aCArIDFdKQorICAgICwgbV9vcGNvZGVNYXAobmV3IE9wY29kZVtudW1PcGNvZGVJRHNdKQorewor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAgICAg
ICBtX2V4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lKTsKKyNkZWZpbmUgT1BDT0RF
X0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBtX29wY29kZU1hcFtvcGNvZGVdID0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUpOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVf
RU5UUlkpOworI3VuZGVmIE9QQ09ERV9FTlRSWQorfQorCitEYXRhOjp+RGF0YSgpCit7CisgICAg
ZGVsZXRlW10gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgZGVsZXRlW10gbV9vcGNvZGVN
YXA7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxF
KExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RGF0YV9oCisjZGVmaW5lIExMSW50RGF0YV9o
CisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsK
KworI2lmIEVOQUJMRShMTElOVCkKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIERhdGEoKTsK
KyAgICB+RGF0YSgpOworICAgIAorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlv
bnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAg
IH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICByZXR1cm4g
bV9vcGNvZGVNYXA7CisgICAgfQorcHJpdmF0ZToKKyAgICBJbnN0cnVjdGlvbiogbV9leGNlcHRp
b25JbnN0cnVjdGlvbnM7CisgICAgT3Bjb2RlKiBtX29wY29kZU1hcDsKK307CisjZWxzZSAvLyBF
TkFCTEUoTExJTlQpCisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5v
cmV0dXJuIgorI2VuZGlmCisKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIEluc3RydWN0aW9u
KiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29k
ZU1hcCgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorfTsKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHBvcAorI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnREYXRhX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9p
bnRzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAi
SklUQ29kZS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkxMSW50VGh1
bmtzLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpJVENvZGUm
IGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjaykKK3sKKyAgICBpZiAo
IWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNh
bGwpIHsKKyAgICAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9B
c3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xv
Z3VlKSkpKTsKKyAgICAgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2sp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChraW5k
ID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1
bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5X2NoZWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
aWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xv
YmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBK
SVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IGdsb2JhbERh
dGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNv
ZGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVG
b3JDb25zdHJ1Y3QpOworICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1
YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKTsKKyAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1
bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7Cit9CisK
K3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2Rl
JiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAg
ICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9ldmFsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZXZh
bEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKK30KKwor
dm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENv
ZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAg
ICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1
Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmsp
OworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShM
TElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlw
b2ludHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVudHJ5cG9p
bnRzX2gKKyNkZWZpbmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlv
bktpbmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV2YWxDb2RlQmxvY2s7CitjbGFz
cyBKSVRDb2RlOworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOworY2xhc3MgUHJvZ3JhbUNvZGVCbG9j
azsKKworbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNH
bG9iYWxEYXRhJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgSklUQ29kZSYsIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciYgYXJpdHlDaGVjayk7Cit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFs
RGF0YSYsIEpJVENvZGUmKTsKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRh
JiwgSklUQ29kZSYpOworCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgRXZhbENvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0
RXZhbEVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK2lubGluZSB2b2lkIGdl
dEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9ncmFtQ29kZUJsb2NrKiwg
SklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRQcm9ncmFtRW50cnlwb2ludChnbG9iYWxEYXRh
LCBqaXRDb2RlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAv
LyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxM
SW50RXhjZXB0aW9ucy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQ2FsbEZy
YW1lLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIK
KyNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNp
bmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgTExJbnQgeworCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEo
KTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0
aW9uICVzLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlm
CisgICAgZ2VuZXJpY1Rocm93KAorICAgICAgICBnbG9iYWxEYXRhLCBleGVjLT5jYWxsZXJGcmFt
ZSgpLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sCisgICAgICAgIGV4ZWMtPmNhbGxlckZyYW1lKCkt
PmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChleGVjLT5jYWxsZXJGcmFtZSgpLCBleGVjLT5y
ZXR1cm5QQygpKSk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgp
LmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJl
dHVyblRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9I
RUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChyZXR1cm5U
b1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRp
ZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRp
b24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAg
IAorICAgIHJldHVybiBnbG9iYWxEYXRhLT5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
KCk7Cit9CisKK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24q
IHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRh
KCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2Vw
dGlvbiAlcyAoY2FsbFRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0
aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2Jh
bERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Ro
cm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNfaAor
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorCisjaWYgRU5BQkxFKExMSU5UKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0
YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisvLyBUaHJv
dyB0aGUgY3VycmVudGx5IGFjdGl2ZSBleGNlcHRpb24gaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNh
bGxlcidzIGNhbGwgZnJhbWUuCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3Rh
dGUqKTsKKworLy8gVGVsbHMgeW91IHdoZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0
dXJuLXRvLXRocm93LCBhZnRlciB5b3UndmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBpbmZvcm1h
dGlvbiBuZWVkZWQgdG8gdGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiByZXR1cm5U
b1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0aGUgY3Vy
cmVudCBQQyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlv
dSBhIFBDCisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdo
aWNoIHdoZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91
IGFuICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBl
eGNlcHRpb24gaGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhj
ZXB0aW9uIGhhbmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhh
dCBQQyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVh
ZCBleGNlcHRpb24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2Vk
IGJ5CisvLyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0
YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcg
dG8gYSBjYWxsIHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rp
b24qKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUo
TExJTlQpCisKKyNlbmRpZiAvLyBMTEludEV4Y2VwdGlvbnNfaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEhlbHBlcnMu
aCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUg
Ikhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1
ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZhdGlv
bi5oIgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVk
ZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVk
ZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTExJbnRF
eGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUg
Ik9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKKyNk
ZWZpbmUgTExJTlRfT1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRSKHBjW2luZGV4XS51Lm9wZXJh
bmQpKQorI2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5vcGVy
YW5kKSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsgICAg
ICAgXAorICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgICAgIHZvaWQqIGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgICAgIHZvaWQqIGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgfSBwYWlyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgaW50NjRfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IF9f
cnRfdTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3Uu
cGFpci5hID0gZmlyc3Q7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFp
ci5iID0gc2Vjb25kOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19ydF91
Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisj
ZGVmaW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykKKworI2Rl
ZmluZSBMTElOVF9USFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fdF9nbG9iYWxEYXRhID0gZXhlYy0+Z2xv
YmFsRGF0YSgpOyAgICAgICAgXAorICAgICAgICBfX3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAo
ZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgXAorICAgICAgICBwYyA9IHJldHVyblRvVGhy
b3coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElO
VF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpIGRv
IHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmdsb2Jh
bERhdGEoKS5leGNlcHRpb24pKSB7ICAgXAorICAgICAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93
KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9FTkRfSU1QTCgp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisj
ZGVmaW5lIExMSU5UX0VORCgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5U
X0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2Up
CisKKyNkZWZpbmUgTExJTlRfQlJBTkNIKG9wY29kZSwgY29uZGl0aW9uKSBkbyB7ICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgYm9vbCBfX2JfY29uZGl0aW9uID0gKGNvbmRpdGlvbik7
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9fYl9j
b25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIHBjICs9IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsgICAg
ICAgIFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bjb2Rl
KTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChm
YWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAgICAg
XAorICAgICAgICBKU1ZhbHVlIF9fcl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAorICAg
ICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBM
TElOVF9PUCgxKSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAgXAorICAgICAgICBMTElOVF9F
TkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQor
CisjZGVmaW5lIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcGNvZGUsIHZhbHVlKSBkbyB7ICAgICAg
ICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcnBfcmV0dXJuVmFsdWUgPSAodmFsdWUpOyAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0gX19y
cF9yZXR1cm5WYWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwY1tPUENP
REVfTEVOR1RIKG9wY29kZSkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IFwKKyAgICAg
ICAgICAgIEpTVmFsdWU6OmVuY29kZShfX3JwX3JldHVyblZhbHVlKTsgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExf
RU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RXTygoY2FsbFRhcmdldCks
IChleGVjKSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBleGNlcHRpb25U
b1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3RfZXhl
YyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJ
bnN0cnVjdGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fY3RfZ2xvYmFsRGF0YSA9IChfX2N0X2V4
ZWMpLT5nbG9iYWxEYXRhKCk7ICAgICAgXAorICAgICAgICBfX2N0X2dsb2JhbERhdGEuZXhjZXB0
aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElO
VF9DQUxMX0VORF9JTVBMKF9fY3RfZXhlYywgY2FsbFRvVGhyb3coX19jdF9leGVjLCBfX2N0X3Bj
KSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0NIRUNLX0VY
Q0VQVElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBF
eGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jY2VfcGMgPSAocGMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoX19jY2VfZXhl
Yy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
TExJTlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2NjZV9leGVjLCBf
X2NjZV9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9S
RVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgRXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMgPSAocGMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9pZCogX19jcl9jYWxs
VGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19jcl9leGVjLT5jYWxsZXJGcmFtZSgpLCBf
X2NyX3BjKTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NyX2V4ZWMsIF9fY3Jf
Y2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworZXh0
ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBl
eGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAg
IHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6
ICVkXG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywK
KyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCkt
Pmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCku
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJv
bVdoZXJlLAorICAgICAgICAgICBvcGVyYW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9w
ZXJhbmQpOworICAgIExMSU5UX0VORCgpOworfQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5
cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGlu
dCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9P
UF9DKG9wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7Cisg
ICAgICAgICAgICB1aW50MzJfdCB0YWc7CisgICAgICAgICAgICB1aW50MzJfdCBwYXlsb2FkOwor
ICAgICAgICB9IGJpdHM7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlIGFzVmFsdWU7CisgICAgfSB1
OworICAgIHUuYXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgcHJpbnRmKCIl
cCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWQ6ICUwOHg6
JTA4eCIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAor
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5p
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBmcm9t
V2hlcmUsCisgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3Bl
cmFuZCwKKyAgICAgICAgICAgdS5iaXRzLnRhZywKKyAgICAgICAgICAgdS5iaXRzLnBheWxvYWQp
OworI2lmbmRlZiBOREVCVUcKKyAgICBwcmludGYoIjogJXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigp
KTsKKyNlbmRpZgorICAgIHByaW50ZigiXG4iKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBp
biBwcm9sb2d1ZS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKKyAgICBMTElOVF9FTkQo
KTsKK30KKworc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorewor
ICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNv
ZGVGb3Ioa2luZCk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwg
ZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxl
ZVJlZ2lzdGVycyA9ICV1LlxuIiwKKyAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBjb21tZW50
LCBjYWxsZWUsIGV4ZWN1dGFibGUsCisgICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1WYXJzLCBj
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVy
cyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9j
YWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBwcm9sb2d1ZSIs
IENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
dHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1bmN0
aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JDb25zdHJ1Y3Qp
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNo
ZWNrX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBh
cml0eSBjaGVjayIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNl
RnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IGFyaXR5IGNoZWNrIiwgQ29kZUZvckNv
bnN0cnVjdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNl
KQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgIiwKKyAgICAgICAg
ICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRp
Y19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpKSk7CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50ZigiJXMsICIsIG9wY29kZU5hbWVz
W2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNv
ZGUpXSk7CisjZWxzZQorICAgIHByaW50Zigib3AjJXUsICIsIGV4ZWMtPmdsb2JhbERhdGEoKS5p
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpKTsKKyNlbmRpZgorICAgIHBy
aW50Zigic2NvcGUgJXBcbiIsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2UpCit7CisgICAgcHJpbnRmKCIl
cCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJldHVybiBQQyBp
cyAlcFxuIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMs
CisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygp
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGV4
ZWMtPnJldHVyblBDKCkudmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2lubGluZSBi
b29sIHNob3VsZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gWW91IGNhbiBtb2RpZnkg
dGhpcyB0byB0dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0aGUgd29ybGQuCisg
ICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKTsKK30KKworZW51bSBFbnRy
eUtpbmQgeyBQcm9sb2d1ZSwgQXJpdHlDaGVjayB9Oworc3RhdGljIEhlbHBlclJldHVyblR5cGUg
ZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBjb25zdCBjaGFyICpuYW1lLCBFbnRyeUtpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUo
SklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgJXMgd2l0aCBleGVjdXRl
Q291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIG5hbWUsIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRl
Q291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7Cisg
ICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JF
VFVSTl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxl
KGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAg
ICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYK
KyAgICB9CisgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgaWYgKGtpbmQgPT0gUHJvbG9n
dWUpCisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7CisgICAgQVNTRVJUKGtpbmQgPT0gQXJp
dHlDaGVjayk7CisgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGVXaXRo
QXJpdHlDaGVjaygpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGV4ZWMpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChlbnRyeV9vc3IpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCBleGVj
LT5jb2RlQmxvY2soKSwgImVudHJ5X29zciIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHJldHVybiBlbnRyeU9T
UihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+
Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zv
cl9jYWxsIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZh
c0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVj
b2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3QiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywg
JmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0
ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
Q2hlY2siLCBBcml0eUNoZWNrKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICByZXR1cm4gZW50cnlPU1Io
ZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdl
bmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChsb29wX29zcikKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNv
ZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRm
KCIlcDogRW50ZXJlZCBsb29wX29zciB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVC
bG9jaywgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisg
ICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55
dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9Cisg
ICAgCisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkg
eworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50ZigiICAgIENvZGUg
d2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxvY2st
PmppdFNvb24oKTsKKyAgICAKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIAorICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hp
bmVPZmZzZXQ+IG1hcDsKKyAgICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKG1hcCk7
CisgICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2VhcmNoPEJ5
dGVjb2RlQW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQsIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNl
dDo6Z2V0Qnl0ZWNvZGVJbmRleD4obWFwLmJlZ2luKCksIG1hcC5zaXplKCksIHBjIC0gY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICBBU1NFUlQobWFwcGluZyk7CisgICAg
QVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
cGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyAgICAKKyAgICB2b2lk
KiBqdW1wVGFyZ2V0ID0gY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NB
dE9mZnNldChtYXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQoanVtcFRh
cmdldCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOX1RXTyhqdW1wVGFyZ2V0LCBleGVjKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1Ip
CisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCByZXBsYWNlIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAl
ZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5k
aWYKKyAgICAKKyAgICBpZiAoc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGlmICghY29kZUJs
b2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZF
UkJPU0VfT1NSKQorICAgICAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21w
aWxlZC5cbiIpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgY29kZUJsb2NrLT5qaXRTb29u
KCk7CisgICAgfSBlbHNlCisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVf
Y2hlY2spCit7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIkNoZWNraW5n
IHN0YWNrIGhlaWdodCB3aXRoIGV4ZWMgPSAlcC5cbiIsIGV4ZWMpOworICAgIHByaW50ZigiQ29k
ZUJsb2NrID0gJXAuXG4iLCBleGVjLT5jb2RlQmxvY2soKSk7CisgICAgcHJpbnRmKCJOdW0gY2Fs
bGVlIHJlZ2lzdGVycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzKTsKKyAgICBwcmludGYoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2so
KS0+bV9udW1WYXJzKTsKKyAgICBwcmludGYoIkN1cnJlbnQgZW5kIGlzIGF0ICVwLlxuIiwgZXhl
Yy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5lbmQoKSk7CisjZW5k
aWYKKyAgICBBU1NFUlQoJmV4ZWMtPnJlZ2lzdGVycygpW2V4ZWMtPmNvZGVCbG9jaygpLT5tX251
bUNhbGxlZVJlZ2lzdGVyc10gPiBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lz
dGVyRmlsZSgpLmVuZCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWV4ZWMtPmdsb2JhbERhdGEoKS5p
bnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+
Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7CisgICAgICAgIGV4ZWMgPSBl
eGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9u
ID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRo
cm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4
Y2VwdGlvbihleGVjKTsKKyAgICB9CisgICAgTExJTlRfRU5EX0lNUEwoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICBFeGVjU3RhdGUqIG5l
d0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmV4ZWMtPmdsb2Jh
bERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDYWxsKTsKKyAgICBp
ZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAg
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJy
b3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAg
ICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRw
dHJfdD4oMSkpLCBleGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVj
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQor
eworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zv
cihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwg
Q29kZUZvckNvbnN0cnVjdCk7CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBl
eGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9u
ID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRo
cm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0
PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIExM
SU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9jcmVhdGVfYWN0aXZhdGlvbikKK3sKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHBy
aW50ZigiQ3JlYXRpbmcgYW4gYWN0aXZhdGlvbiwgZXhlYyA9ICVwIVxuIiwgZXhlYyk7CisjZW5k
aWYKKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBKU0FjdGl2YXRpb246OmNyZWF0ZShl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMsIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+
KGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSkpOworICAgIGV4ZWMtPnNldFNj
b3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2YXRpb24pKTsKKyAgICBMTElO
VF9SRVRVUk4oSlNWYWx1ZShhY3RpdmF0aW9uKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jcmVhdGVfYXJndW1lbnRzKQoreworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1
ZShBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpKTsKKyAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFu
ZCkgPSBhcmd1bWVudHM7CisgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAgICBKU0Z1
bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIAor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Cisg
ICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNv
bnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlmCisg
ICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgSlNWYWx1ZSBwcm90byA9IExMSU5U
X09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAocHJvdG8uaXNPYmplY3QoKSkKKyAgICAgICAgc3Ry
dWN0dXJlID0gYXNPYmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkp
OworICAgIGVsc2UKKyAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCktPmds
b2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAKKyAgICBMTElOVF9SRVRV
Uk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpCit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5U
X09QKDEpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQodjEuaXNQcmltaXRpdmUoKSk7CisgICAgTExJ
TlRfUkVUVVJOKHYxLnRvVGhpc09iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpCit7
CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxKU1Zh
bHVlKj4oJkxMSU5UX09QKDIpKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQoreworICAgIExMSU5UX1JFVFVSTihjb25z
dHJ1Y3RBcnJheShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIocGNbMl0u
dS5vcGVyYW5kKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9uZXdfcmVnZXhwKQoreworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29kZUJsb2Nr
KCktPnJlZ2V4cChwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkp
CisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIGZs
YWcgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9SRVRVUk4o
UmVnRXhwT2JqZWN0OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJl
KCksIHJlZ0V4cCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KQoreworICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvQm9vbGVh
bihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6
ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbighSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbGVzcykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVlPihleGVj
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9ncmVhdGVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPGZhbHNlPihl
eGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHJlX2luYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1Ao
MSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICsgMSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHJlX2RlYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1Ao
MSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gMSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcG9zdF9pbmMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3Vs
dCArIDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBMTElO
VF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051
bWJlcihyZXN1bHQgLSAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcikKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSkKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNOdW1iZXIoLUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpCit7CisgICAgSlNWYWx1ZSB2MSA9IExM
SU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKTsKKyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVHJ5
aW5nIHRvIGFkZCAlcyIsIHYxLmRlc2NyaXB0aW9uKCkpOworICAgIHByaW50ZigiIHRvICVzLlxu
IiwgdjIuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNTdHJpbmco
KSAmJiAhdjIuaXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMs
IGFzU3RyaW5nKHYxKSwgdjIudG9TdHJpbmcoZXhlYykpKTsKKyAgICAKKyAgICBpZiAodjEuaXNO
dW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIo
djEuYXNOdW1iZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4o
anNBZGRTbG93Q2FzZShleGVjLCB2MSwgdjIpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX211bCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykgKiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihl
eGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKQoreworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAt
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9kaXYpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCkK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoZm1vZChMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KS50b051bWJlcihleGVjKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPDwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3JzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA+PiBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdXJz
aGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9VSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhl
YykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCkKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSAm
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2JpdG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIHwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9y
KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50
b0ludDMyKGV4ZWMpIF4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KQoreworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcih+TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQoreworICAgIEpT
VmFsdWUgYmFzZVZhbCA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworI2lmbmRlZiBOREVCVUcK
KyAgICBUeXBlSW5mbyB0eXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VSVCghYmFz
ZVZhbC5pc09iamVjdCgpCisgICAgICAgICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVjdChiYXNl
VmFsKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKTsK
KyNlbmRpZgorICAgIExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4ZWMsICJp
bnN0YW5jZW9mIiwgYmFzZVZhbCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5z
dGFuY2VvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6
b3BJbnN0YW5jZU9mU2xvdyhleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoNCkuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKQoreworICAgIExMSU5UX1JFVFVSTihqc1R5cGVTdHJp
bmdGb3JWYWx1ZShleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKQoreworICAgIEpTVmFsdWUgdiA9IExMSU5U
X09QX0MoMikuanNWYWx1ZSgpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4odi5pc0NlbGwo
KSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLmlzQm9vbGVhbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9pc19udW1iZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKS5pc051bWJlcigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19zdHJpbmcpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihpc0pTU3RyaW5nKExMSU5U
X09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNf
b2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc09iamVjdFR5cGUoTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19mdW5jdGlvbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5jdGlvblR5
cGUoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9pbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6
b3BJbihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKQoreworICAgIExM
SU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlLCBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2
ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApCit7CisgICAgTExJ
TlRfUkVUVVJOX1BST0ZJTEVEKAorICAgICAgICBvcF9yZXNvbHZlX3NraXAsCisgICAgICAgIENv
bW1vblNsb3dQYXRoczo6b3BSZXNvbHZlU2tpcCgKKyAgICAgICAgICAgIGV4ZWMsCisgICAgICAg
ICAgICBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAg
ICAgICAgICAgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlIHJlc29sdmVH
bG9iYWwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBBU1NFUlQoZ2xvYmFs
T2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkgPSBwY1syXS51Lm9w
ZXJhbmQ7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVyZS5nZXQo
KTsKKyAgICAKKyAgICBBU1NFUlRfVU5VU0VEKHN0cnVjdHVyZSwgc3RydWN0dXJlICE9IGdsb2Jh
bE9iamVjdC0+c3RydWN0dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXImIGlkZW50ID0gY29k
ZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9i
YWxPYmplY3QpOworICAgIAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5U2xvdChl
eGVjLCBpZGVudCwgc2xvdCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZh
bHVlKGV4ZWMsIGlkZW50KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYm
ICFnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisg
ICAgICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAgICAg
ICAgICBwY1szXS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFs
RGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0cnVj
dHVyZSgpKTsKKyAgICAgICAgICAgIHBjWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJy
b3IoZXhlYywgaWRlbnQpOworICAgIHJldHVybiBKU1ZhbHVlKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCkKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJPRklM
RUQob3BfcmVzb2x2ZV9nbG9iYWwsIHJlc29sdmVHbG9iYWwoZXhlYywgcGMpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJ
TlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIHJlc29sdmVHbG9i
YWwoZXhlYywgcGMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZm9y
X3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9w
X3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMs
IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSkKK3sKKyAgICBJZGVudGlmaWVy
JiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7
CisgICAgaWYgKHBjWzNdLnUub3BlcmFuZCkgeworICAgICAgICBKU1ZhbHVlIGJhc2UgPSBKU0M6
OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIHRydWUpOworICAg
ICAgICBpZiAoIWJhc2UpCisgICAgICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvcklu
dmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgICAgICBM
TElOVF9SRVRVUk4oYmFzZSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTl9QUk9GSUxF
RChvcF9yZXNvbHZlX2Jhc2UsIEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNj
b3BlQ2hhaW4oKSwgZmFsc2UpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3Vy
ZV9wcm9wZXJ0eV9leGlzdHMpCit7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KExM
SU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKKyAg
ICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJd
LnUub3BlcmFuZCk7CisgICAgaWYgKCFvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVu
dCwgc2xvdCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2Jh
bEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKK3sKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aEJhc2UoZXhlYywg
ZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1Ao
MSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVz
dWx0OworICAgIC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcsIGJ1
dCB3ZSBkb24ndCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMp
Cit7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhU
aGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCks
IExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9P
UCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJv
ZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4K
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9p
ZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAg
IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFu
ZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBi
YXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKyAgICBMTElOVF9PUCgxKSA9IHJlc3VsdDsKKworICAgIGlmIChiYXNlVmFsdWUuaXND
ZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCisgICAgICAgICYmIHNsb3Quc2xv
dEJhc2UoKSA9PSBiYXNlVmFsdWUKKyAgICAgICAgJiYgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUo
KSA9PSBQcm9wZXJ0eVNsb3Q6OlZhbHVlKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJh
c2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RydWN0
dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0dXJl
LT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpKSB7CisgICAgICAgICAgICBw
Y1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAg
cGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwY1tPUENPREVfTEVOR1RIKG9wX2dldF9ieV9p
ZCkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2Fy
Z3VtZW50c19sZW5ndGgpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2Rl
QmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihw
Y1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMikuanNW
YWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisgICAgTExJTlRfUkVU
VVJOKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3B1dF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVu
dGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9P
UF9DKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlz
U3RyaWN0TW9kZSgpKTsKKyAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAgICBhc09iamVj
dChiYXNlVmFsdWUpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFzZVZhbHVlLnB1
dChleGVjLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAg
ICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwq
IGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3Ry
dWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0
dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpCisgICAgICAgICAgICAm
JiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgeworICAgICAg
ICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnBy
ZXZpb3VzSUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPnByb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBu
ZWVkZWQgYmVjYXVzZSBzb21lIG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKKyAgICAgICAgICAgICAg
ICAgICAgLy8gYmVsb3cgbWF5IEdDLgorICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29k
ZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+
cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5z
dHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7
CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0
KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3RydWN0
dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAg
ICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVj
KTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsKKyAgICAgICAgICAgICAgICAg
ICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBl
eGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNoYWluKTsK
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9w
ZXJhbmQpCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bj
b2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3Bf
cHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAg
ICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBz
bG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZGVsX2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKS50b09iamVjdChleGVjKTsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9i
amVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgY29k
ZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCkpOworICAgIExMSU5UX0NIRUNLX0VY
Q0VQVElPTigpOworICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUg
dG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxk
RGVsZXRlKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQoreworICAgIGlmIChMSUtFTFko
YmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBp
ZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0
eShleGVjLCBhc1N0cmluZyhzdWJzY3JpcHQpLT52YWx1ZShleGVjKSkpCisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkp
IHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBp
ZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldElu
ZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4
KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVl
KSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkKKyAgICAgICAg
ICAgIHJldHVybiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAg
ICAgICAgCisgICAgICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGkpOworICAgIH0KKyAg
ICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpOworICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV92YWwpCit7CisgICAgTExJ
TlRfUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9ieV92YWwsIGdldEJ5VmFsKGV4ZWMsIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGFy
Z3VtZW50cyA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykgewor
ICAgICAgICBhcmd1bWVudHMgPSBBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMpOworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgTExJTlRf
T1AoMikgPSBhcmd1bWVudHM7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFy
Z3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOworICAgIH0KKyAg
ICAKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgYXJndW1lbnRzLCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3Bu
YW1lKQoreworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBMTElOVF9PUCgyKS5qc1Zh
bHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcHV0X2J5X3ZhbCkKK3sKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVj
LT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMikuanNW
YWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAg
ICAKKyAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgeworICAgICAgICB1aW50
MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTQXJyYXkoYmFz
ZVZhbHVlKSkgeworICAgICAgICAgICAgSlNBcnJheSoganNBcnJheSA9IGFzQXJyYXkoYmFzZVZh
bHVlKTsKKyAgICAgICAgICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkKKyAgICAgICAg
ICAgICAgICBqc0FycmF5LT5zZXRJbmRleChnbG9iYWxEYXRhLCBpLCB2YWx1ZSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgSlNBcnJheTo6cHV0QnlJbmRleChqc0FycmF5LCBl
eGVjLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpCisgICAgICAgICAgICAmJiBhc0J5dGVB
cnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICAgICAgSlNCeXRl
QXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAg
IGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0
SW5kZXgoaSwgdmFsdWUuYXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CisgICAg
ICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzTnVtYmVyKCkpOwor
ICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaSwgdmFsdWUpOworICAgICAgICBMTElOVF9FTkQo
KTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RN
b2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92
YWwpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsK
KyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChleGVjKTsKKyAg
ICAKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAg
IAorICAgIGJvb2wgY291bGREZWxldGU7CisgICAgCisgICAgdWludDMyX3QgaTsKKyAgICBpZiAo
c3Vic2NyaXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYmFzZU9iamVjdCwgZXhlYywg
aSk7CisgICAgZWxzZSB7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAg
ICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpOworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgY291
bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNl
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eSk7CisgICAgfQorICAgIAorICAgIGlmICghY291bGREZWxl
dGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElOVF9U
SFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikp
OworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCkKK3sKKyAgICBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKS5wdXQoZXhlYywgcGNbMl0udS5vcGVyYW5kLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wdXRfZ2V0dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmpl
Y3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1Zh
bHVlKCkpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50
aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNWYWx1ZSgp
LmlzT2JqZWN0KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZUdldHRlcihi
YXNlT2JqLCBleGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfc2V0
dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7Cisg
ICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOwor
ICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNb
Ml0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNWYWx1ZSgpLmlzT2JqZWN0
KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZVNldHRlcihiYXNlT2JqLCBl
eGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKQorewor
ICAgIHVuc2lnbmVkIGNvdW50ID0gcGNbMV0udS5vcGVyYW5kOworICAgIFNjb3BlQ2hhaW5Ob2Rl
KiB0bXAgPSBleGVjLT5zY29wZUNoYWluKCk7CisgICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAg
IHRtcCA9IHRtcC0+cG9wKCk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbih0bXApOworICAgIHBj
ICs9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2p0cnVlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qdHJ1ZSwgTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2pmYWxzZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamZhbHNlLCAhTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2psZXNzKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzcywganNMZXNzPHRy
dWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKQoreworICAgIExMSU5U
X0JSQU5DSChvcF9qbmxlc3MsICFqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXIsIGpzTGVz
czxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpCit7Cisg
ICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlciwgIWpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbGVz
c2VxLCBqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVz
c2VxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmxlc3NlcSwgIWpzTGVzc0VxPHRydWU+KGV4
ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9C
UkFOQ0gob3BfamdyZWF0ZXJlcSwganNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfam5ncmVhdGVyZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRl
cmVxLCAhanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dp
dGNoX2ltbSkKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QX0MoMykuanNWYWx1
ZSgpOworICAgIEFTU0VSVChzY3J1dGluZWUuaXNEb3VibGUoKSk7CisgICAgZG91YmxlIHZhbHVl
ID0gc2NydXRpbmVlLmFzRG91YmxlKCk7CisgICAgaW50MzJfdCBpbnRWYWx1ZSA9IHN0YXRpY19j
YXN0PGludDMyX3Q+KHZhbHVlKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3Bl
cmFuZDsKKyAgICBpZiAodmFsdWUgPT0gaW50VmFsdWUpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5p
bW1lZGlhdGVTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShp
bnRWYWx1ZSwgZGVmYXVsdE9mZnNldCk7CisgICAgfSBlbHNlCisgICAgICAgIHBjICs9IGRlZmF1
bHRPZmZzZXQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9zd2l0Y2hfc3RyaW5nKQoreworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7Cisg
ICAgaWYgKCFzY3J1dGluZWUuaXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNl
dDsKKyAgICBlbHNlIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2Rl
QmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUo
cGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGluZWUpLT52YWx1
ZShleGVjKS5pbXBsKCksIGRlZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKQoreworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+
Y29kZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUKKyAgICAgICAgICAgfHwgIWNvZGVCbG9jay0+bmVl
ZHNGdWxsU2NvcGVDaGFpbigpCisgICAgICAgICAgIHx8IGV4ZWMtPnVuY2hlY2tlZFIoY29kZUJs
b2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKKyNpZiBMTElOVF9IRUxQRVJf
VFJBQ0lORworICAgIHByaW50ZigiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKKyNlbmRpZgorICAg
IExMSU5UX1JFVFVSTihjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1syXS51Lm9wZXJhbmQpLT5t
YWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmV3X2Z1bmNfZXhwKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9j
ay0+ZnVuY3Rpb25FeHByKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNGdW5jdGlvbiogZnVuYyA9
IGZ1bmN0aW9uLT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgCisgICAgaWYg
KCFmdW5jdGlvbi0+bmFtZSgpLmlzTnVsbCgpKSB7CisgICAgICAgIEpTU3RhdGljU2NvcGVPYmpl
Y3QqIGZ1bmN0aW9uU2NvcGVPYmplY3QgPSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhl
YywgZnVuY3Rpb24tPm5hbWUoKSwgZnVuYywgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAg
ICAgZnVuYy0+c2V0U2NvcGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jLT5zY29wZSgpLT5wdXNo
KGZ1bmN0aW9uU2NvcGVPYmplY3QpKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKGZ1
bmMpOworfQorCitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3Rh
dGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVl
LT5jYWxsZXJGcmFtZSgpOworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5n
bG9iYWxEYXRhKCk7CisKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3Bl
Q2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworCisgICAgaWYgKGtp
bmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoY2FsbGVlLCBjYWxsRGF0YSk7CisgICAg
CisgICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZUpTKTsKKyAgICAKKyAgICAgICAg
aWYgKGNhbGxUeXBlID09IENhbGxUeXBlSG9zdCkgeworICAgICAgICAgICAgZ2xvYmFsRGF0YS0+
aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVu
Y3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBMTElOVF9DQUxM
X1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkpOworICAgICAgICB9CisgICAgICAgIAorI2lmIExMSU5UX0hFTFBFUl9U
UkFDSU5HCisgICAgICAgIHByaW50ZigiQ2FsbCBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVz
XG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgICAgICBBU1NFUlQoY2Fs
bFR5cGUgPT0gQ2FsbFR5cGVOb25lKTsKKyAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBw
YywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CisgICAgfQorCisgICAg
QVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgCisgICAgQ29uc3RydWN0RGF0
YSBjb25zdHJ1Y3REYXRhOworICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENv
bnN0cnVjdERhdGEoY2FsbGVlLCBjb25zdHJ1Y3REYXRhKTsKKyAgICAKKyAgICBBU1NFUlQoY29u
c3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlSlMpOworICAgIAorICAgIGlmIChjb25zdHJ1Y3RU
eXBlID09IENvbnN0cnVjdFR5cGVIb3N0KSB7CisgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxs
UmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rp
b24oZXhlY0NhbGxlZSkpOworICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBw
YywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAg
IH0KKyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgICAgICBwcmludGYoIkNvbnN0
cnVjdG9yIGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNjcmlwdGlv
bigpKTsKKyNlbmRpZgorCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlw
ZU5vbmUpOworICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFDb25zdHJ1
Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJuVHlwZSBz
ZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCwgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlLCBMTEludENhbGxMaW5r
SW5mbyogY2FsbExpbmtJbmZvID0gMCkKK3sKKyAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25D
ZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKKyAgICBpZiAoIWNhbGxlZUFzRnVu
Y3Rpb25DZWxsKQorICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgcGMs
IGNhbGxlZUFzVmFsdWUsIGtpbmQpOworICAgIAorICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFz
RnVuY3Rpb24oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3Bl
Q2hhaW4oY2FsbGVlLT5zY29wZVVuY2hlY2tlZCgpKTsKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhl
Y3V0YWJsZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOworICAgIAorICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBjb2RlUHRyOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKKyAgICBpZiAo
ZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFi
bGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICAgICAgSlNPYmpl
Y3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21waWxlRm9yKGV4ZWNDYWxsZWUsIGNh
bGxlZS0+c2NvcGUoKSwga2luZCk7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIExM
SU5UX0NBTExfVEhST1coZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKSwgcGMsIGVycm9yKTsKKyAg
ICAgICAgY29kZUJsb2NrID0gJmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVG
b3Ioa2luZCk7CisgICAgICAgIEFTU0VSVChjb2RlQmxvY2spOworICAgICAgICBpZiAoZXhlY0Nh
bGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4o
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0
aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5n
ZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgfQorICAgIAor
ICAgIGlmIChjYWxsTGlua0luZm8pIHsKKyAgICAgICAgaWYgKGNhbGxMaW5rSW5mby0+aXNPbkxp
c3QoKSkKKyAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+cmVtb3ZlKCk7CisgICAgICAgIEV4ZWNT
dGF0ZSogZXhlY0NhbGxlciA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGNh
bGxMaW5rSW5mby0+Y2FsbGVlLnNldChleGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4ZWNDYWxs
ZXItPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAgICAgY2Fs
bExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBl
eGVjQ2FsbGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAg
ICAgIGNhbGxMaW5rSW5mby0+bWFjaGluZUNvZGVUYXJnZXQgPSBjb2RlUHRyOworICAgICAgICBp
ZiAoY29kZUJsb2NrKQorICAgICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKGNh
bGxMaW5rSW5mbyk7CisgICAgfQorICAgIAorICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxs
ZWUsIHBjLCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworfQorCitpbmxpbmUgSGVscGVy
UmV0dXJuVHlwZSBnZW5lcmljQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86Cisg
ICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRv
IGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gSWYgcG9zc2libGUs
IGxpbmsgdGhlIGNhbGwncyBpbmxpbmUgY2FjaGUuCisgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBv
ZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCisg
ICAgCisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7
CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFu
ZDsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhw
Y1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxl
OjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFt
ZShleGVjKTsKKyAgICAKKyAgICBBU1NFUlQocGNbNF0udS5jYWxsTGlua0luZm8pOworICAgIHJl
dHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIGtpbmQsIGNhbGxlZUFzVmFsdWUsIHBjWzRd
LnUuY2FsbExpbmtJbmZvKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpCit7
CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpCit7CisgICAgcmV0dXJuIGdlbmVyaWND
YWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ29uc3RydWN0KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NhbGxfdmFyYXJncykKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0g
U2V0IHVwIGEgY2FsbCBmcmFtZSB3aGlsZSByZXNwZWN0aW5nIHRoZSB2YXJpYWJsZSBhcmd1bWVu
dHMuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGlsZSBpdCBpZiBu
ZWNlc3NhcnkuCisgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVz
cyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCisgICAgCisgICAgSlNWYWx1ZSBjYWxs
ZWVBc1ZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRl
KiBleGVjQ2FsbGVlID0gbG9hZFZhcmFyZ3MoCisgICAgICAgIGV4ZWMsICZleGVjLT5nbG9iYWxE
YXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLAorICAgICAgICBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHBjWzRdLnUub3BlcmFuZCk7Cisg
ICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpOworICAgIAorICAgIGV4ZWND
YWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsK
KyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjLT51bmNoZWNr
ZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykpOworICAgIAorICAgIHJl
dHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVl
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCkKK3sKKyAgICBKU1Zh
bHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhl
Y1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICBKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgZXhlY0Nh
bGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAg
ICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjQ2FsbGVlLT51bmNo
ZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0Nh
bGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUt
PnNldFJldHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KCZsbGludF9nZW5lcmljX3Jl
dHVybl9wb2ludCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKyAgICBleGVj
LT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfZXZhbCkpOworICAgIAor
ICAgIGlmICghaXNIb3N0RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQor
ICAgICAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2Fs
bGVlQXNWYWx1ZSk7CisgICAgCisgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0g
ZXZhbChleGVjQ2FsbGVlKTsKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKK3sKKyAgICBBU1NF
UlQoZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgSlNWYWx1
ZSBhY3RpdmF0aW9uVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhY3Rp
dmF0aW9uVmFsdWUpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnVuY2hlY2tlZFIo
dW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSkg
eworICAgICAgICAgICAgaWYgKCFleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisg
ICAgICAgICAgICAgICAgYXNBcmd1bWVudHModiktPnRlYXJPZmYoZXhlYyk7CisgICAgICAgIH0K
KyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlv
biA9IGFzQWN0aXZhdGlvbihhY3RpdmF0aW9uVmFsdWUpOworICAgIGFjdGl2YXRpb24tPnRlYXJP
ZmYoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVj
a2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1
ZSgpKQorICAgICAgICBhc0FyZ3VtZW50cyh2KS0+ZGlkVGVhck9mZkFjdGl2YXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBhY3RpdmF0aW9uKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cykKK3sKKyAgICBBU1NFUlQoZXhl
Yy0+Y29kZUJsb2NrKCktPnVzZXNBcmd1bWVudHMoKSAmJiAhZXhlYy0+Y29kZUJsb2NrKCktPm5l
ZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgYXNBcmd1bWVudHMoZXhlYy0+dW5jaGVja2VkUih1
bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKS0+
dGVhck9mZihleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3N0cmNhdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNTdHJpbmcoZXhlYywgJkxMSU5U
X09QKDIpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3RvX3ByaW1pdGl2ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9QcmltaXRpdmUoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X3BuYW1lcykKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAg
aWYgKHYuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBwYyArPSBwY1s1XS51Lm9wZXJh
bmQ7CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAKKyAgICBKU09iamVjdCogbyA9
IHYudG9PYmplY3QoZXhlYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvLT5zdHJ1Y3R1
cmUoKTsKKyAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9y
ID0gc3RydWN0dXJlLT5lbnVtZXJhdGlvbkNhY2hlKCk7CisgICAgaWYgKCFqc1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yIHx8IGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmNhY2hlZFByb3RvdHlwZUNoYWlu
KCkgIT0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSkKKyAgICAgICAganNQcm9wZXJ0
eU5hbWVJdGVyYXRvciA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBvKTsK
KyAgICAKKyAgICBMTElOVF9PUCgxKSA9IEpTVmFsdWUoanNQcm9wZXJ0eU5hbWVJdGVyYXRvcik7
CisgICAgTExJTlRfT1AoMikgPSBKU1ZhbHVlKG8pOworICAgIExMSU5UX09QKDMpID0gUmVnaXN0
ZXI6OndpdGhJbnQoMCk7CisgICAgTExJTlRfT1AoNCkgPSBSZWdpc3Rlcjo6d2l0aEludChqc1By
b3BlcnR5TmFtZUl0ZXJhdG9yLT5zaXplKCkpOworICAgIAorICAgIHBjICs9IE9QQ09ERV9MRU5H
VEgob3BfZ2V0X3BuYW1lcyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXh0X3BuYW1lKQoreworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3Qo
TExJTlRfT1AoMikuanNWYWx1ZSgpKTsKKyAgICBKU1N0cmluZyogcHJvcGVydHkgPSBhc1N0cmlu
ZyhMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIGlmIChiYXNlLT5oYXNQcm9wZXJ0eShleGVj
LCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5LT52YWx1ZShleGVjKSkpKSB7CisgICAgICAgIC8v
IEdvIHRvIHRhcmdldC4KKyAgICAgICAgcGMgKz0gcGNbNl0udS5vcGVyYW5kOworICAgIH0gLy8g
RWxzZSwgZG9uJ3QgY2hhbmdlIHRoZSBQQywgc28gdGhlIGludGVycHJldGVyIHdpbGwgcmVsb29w
LgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9z
Y29wZSkKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgSlNP
YmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
OworICAgIAorICAgIExMSU5UX09QKDEpID0gbzsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4
ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChvKSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUpCit7CisgICAgZXhlYy0+c2V0U2Nv
cGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnBvcCgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKQoreworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIHNjb3Bl
ID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmll
cihwY1syXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIERvbnREZWxldGUpOwor
ICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKHNjb3BlKSk7
CisgICAgTExJTlRfUkVUVVJOKHNjb3BlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Rocm93KQoreworICAgIExMSU5UX1RIUk9XKExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKK3sKKyAg
ICBMTElOVF9USFJPVyhjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBMTElOVF9PUF9DKDEpLmpz
VmFsdWUoKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2RlYnVnKQoreworICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBjWzFdLnUub3Bl
cmFuZDsKKyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOworICAgIGludCBsYXN0
TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50
ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJ
RCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7CisgICAgKCpQcm9m
aWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT53aWxsRXhlY3V0ZShleGVjLCBMTElO
VF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVk
UHJvZmlsZXJSZWZlcmVuY2UoKSktPmRpZEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1
ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50
CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExM
SW50SGVscGVyc19oCisjZGVmaW5lIExMSW50SGVscGVyc19oCisKKyNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBFTkFCTEUoTExJ
TlQpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1
Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKK3R5cGVkZWYgaW50NjRfdCBIZWxwZXJSZXR1
cm5UeXBlOworCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFu
ZChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsK
K2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUq
LCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKKworI2RlZmluZSBM
TElOVF9IRUxQRVJfREVDTChuYW1lKSBcCisgICAgZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBl
IGxsaW50XyMjbmFtZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKKworTExJTlRf
SEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJv
bG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9n
dWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0
eUNoZWNrX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9y
X2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZSk7CitMTElOVF9IRUxQRVJfREVD
TChzcGVjaWFsX3RyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcik7CitMTElOVF9I
RUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RF
Q0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wo
ZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RF
Q0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9I
RUxQRVJfREVDTChsb29wX29zcik7CitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0
X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9u
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y29udmVydF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfb2JqZWN0KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25ld19hcnJheV9idWZmZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdl
eHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3Rl
cSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3ByZV9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9kZWMpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0
X2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25lZ2F0ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3N1Yik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9tb2QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNo
aWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2JpdG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y2hlY2tfaGFzX2luc3RhbmNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9m
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX3VuZGVmaW5lZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVh
bik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pc19zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX29iamVj
dCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2luKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Jlc29sdmVfZ2xvYmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZl
X2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Zvcl9y
ZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZl
X2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRz
X2xlbmd0aCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dl
dF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHV0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5
X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
dXRfc2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qdHJ1ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZh
bHNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcyk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfam5sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcik7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfam5ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9pbW0pOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9jaGFyKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9zd2l0Y2hfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVu
Yyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmNfZXhwKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3Qp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY2FsbF9ldmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29m
Zl9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVu
dHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNhdCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfdG9fcHJpbWl0aXZlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5h
bWVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXh0X3BuYW1lKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bf
c2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhy
b3dfcmVmZXJlbmNlX2Vycm9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1Zyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50SGVscGVy
c19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21D
b25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludE9mZmxpbmVBc21Db25maWdfaAorI2RlZmluZSBMTEludE9mZmxpbmVBc21Db25maWdf
aAorCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4NikKKyNkZWZpbmUgT0ZG
TElORV9BU01fWDg2IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisjZW5kaWYK
KworI2lmIENQVShBUk12NykKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMQorI2Vsc2UKKyNk
ZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMAorI2VuZGlmCisKKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9G
RkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgQ1BVKEJJR19FTkRJQU4p
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElO
RV9BU01fQklHX0VORElBTiAwCisjZW5kaWYKKworI2lmIEVOQUJMRShMTElOVF9PU1JfVE9fSklU
KQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAxCisjZWxzZQorI2RlZmluZSBPRkZM
SU5FX0FTTV9KSVRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIExMSU5UX0VYRUNVVElPTl9UUkFD
SU5HCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDEKKyNlbHNlCisjZGVm
aW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNlbmRpZgorCisjZW5kaWYgLy8g
TExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQWxsb2Nh
dGlvblNwYWNlLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJs
ZS5oIgorI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1
ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5o
IgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5j
bHVkZSAiSlNUeXBlSW5mby5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKKyNpbmNs
dWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNp
bmNsdWRlICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgorI2luY2x1
ZGUgIlNjb3BlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1
Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgT0ZGTElORV9B
U01fT0ZGU0VUT0YoY2xhenosIGZpZWxkKSBPQkpFQ1RfT0ZGU0VUT0YoY2xhenosIGZpZWxkKQor
CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCogZHVtbXkoKTsKK307CisKK2NvbnN0IHVuc2lnbmVkKiBMTEludE9mZnNldHNF
eHRyYWN0b3I6OmR1bW15KCkKK3sKKyNpbmNsdWRlICJMTEludERlc2lyZWRPZmZzZXRzLmgiCisg
ICAgcmV0dXJuIGV4dHJhY3RvclRhYmxlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworaW50
IG1haW4oaW50LCBjaGFyKiopCit7CisgICAgLy8gT3V0IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0
aW9uLCBtYWtlIHN1cmUgdGhhdCBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkgaXMgbGl2
ZSwKKyAgICAvLyBhbmQgdGhlIGV4dHJhY3RvclRhYmxlIGlzIGxpdmUsIHRvby4KKyAgICBwcmlu
dGYoIiVwXG4iLCBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSk7CisgICAgcmV0
dXJuIDA7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5r
cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJMTEludFRodW5rcy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSlNJ
bnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiTG93TGV2
ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwor
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIHZvaWQgKCp0YXJnZXQpKCkpCit7CisgICAgSlNJbnRlcmZh
Y2VKSVQgaml0OworICAgIAorICAgIC8vIEZJWE1FOiB0aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVy
IHdheSB0byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20gbm90IHN1cmUgSSBjYXJlLgorICAgIGppdC5t
b3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFy
Z2V0KSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VK
SVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRh
LCAmaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6
ZUNvZGUoKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5
VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0
cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAg
IHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1
bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEs
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhK
dW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVj
ayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRo
SnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2V2YWxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRh
LCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxM
SW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJ
bnRUaHVua3NfaAorI2RlZmluZSBMTEludFRodW5rc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRhOworCituYW1l
c3BhY2UgTExJbnQgeworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50
cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBm
dW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0
YSopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShM
TElOVCkKKworI2VuZGlmIC8vIExMSW50VGh1bmtzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20J
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjM3NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworCisjIENyYXNoIGNvdXJzZSBvbiB0aGUgbGFuZ3VhZ2UgdGhh
dCB0aGlzIGlzIHdyaXR0ZW4gaW4gKHdoaWNoIEkganVzdCBjYWxsCisjICJhc3NlbWJseSIgZXZl
biB0aG91Z2ggaXQncyBtb3JlIHRoYW4gdGhhdCk6CisjCisjIC0gTW9zdGx5IGdhcy1zdHlsZSBv
cGVyYW5kIG9yZGVyaW5nLiBUaGUgbGFzdCBvcGVyYW5kIHRlbmRzIHRvIGJlIHRoZQorIyAgIGRl
c3RpbmF0aW9uLiBTbyAiYSA6PSBiIiBpcyB3cml0dGVuIGFzICJtb3YgYiwgYSIuIEJ1dCB1bmxp
a2UgZ2FzLAorIyAgIGNvbXBhcmlzb25zIGFyZSBpbi1vcmRlciwgc28gImlmIChhIDwgYikiIGlz
IHdyaXR0ZW4gYXMKKyMgICAiYmlsdCBhLCBiLCAuLi4iLgorIworIyAtICJiIiA9IGJ5dGUsICJo
IiA9IDE2LWJpdCB3b3JkLCAiaSIgPSAzMi1iaXQgd29yZCwgInAiID0gcG9pbnRlci4KKyMgICBD
dXJyZW50bHkgdGhpcyBpcyBqdXN0IDMyLWJpdCBzbyAiaSIgYW5kICJwIiBhcmUgaW50ZXJjaGFu
Z2VhYmxlCisjICAgZXhjZXB0IHdoZW4gYW4gb3Agc3VwcG9ydHMgb25lIGJ1dCBub3QgdGhlIG90
aGVyLgorIworIyAtIEluIGdlbmVyYWwsIHZhbGlkIG9wZXJhbmRzIGZvciBtYWNybyBpbnZvY2F0
aW9ucyBhbmQgaW5zdHJ1Y3Rpb25zIGFyZQorIyAgIHJlZ2lzdGVycyAoZWcgInQwIiksIGFkZHJl
c3NlcyAoZWcgIjRbdDBdIiksIGJhc2UtaW5kZXggYWRkcmVzc2VzCisjICAgKGVnICI3W3QwLCB0
MSwgMl0iKSwgYWJzb2x1dGUgYWRkcmVzc2VzIChlZyAiMHhhMDAwMDAwMFtdIiksIG9yIGxhYmVs
cworIyAgIChlZyAiX2ZvbyIgb3IgIi5mb28iKS4gTWFjcm8gaW52b2NhdGlvbnMgY2FuIGFsc28g
dGFrZSBhbm9ueW1vdXMKKyMgICBtYWNyb3MgYXMgb3BlcmFuZHMuIEluc3RydWN0aW9ucyBjYW5u
b3QgdGFrZSBhbm9ueW1vdXMgbWFjcm9zLgorIworIyAtIExhYmVscyBtdXN0IGhhdmUgbmFtZXMg
dGhhdCBiZWdpbiB3aXRoIGVpdGhlciAiXyIgb3IgIi4iLiAgQSAiLiIgbGFiZWwKKyMgICBpcyBs
b2NhbCBhbmQgZ2V0cyByZW5hbWVkIGJlZm9yZSBjb2RlIGdlbiB0byBtaW5pbWl6ZSBuYW1lc3Bh
Y2UKKyMgICBwb2xsdXRpb24uIEEgIl8iIGxhYmVsIGlzIGFuIGV4dGVybiBzeW1ib2wgKGkuZS4g
Ii5nbG9ibCIpLiBUaGUgIl8iCisjICAgbWF5IG9yIG1heSBub3QgYmUgcmVtb3ZlZCBkdXJpbmcg
Y29kZSBnZW4gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGFzbQorIyAgIGNvbnZlbnRpb25zIGZv
ciBDIG5hbWUgbWFuZ2xpbmcgb24gdGhlIHRhcmdldCBwbGF0Zm9ybSBtYW5kYXRlIGEgIl8iCisj
ICAgcHJlZml4LgorIworIyAtIEEgIm1hY3JvIiBpcyBhIGxhbWJkYSBleHByZXNzaW9uLCB3aGlj
aCBtYXkgYmUgZWl0aGVyIGFub255bW91cyBvcgorIyAgIG5hbWVkLiBCdXQgdGhpcyBoYXMgY2F2
ZWF0cy4gIm1hY3JvIiBjYW4gdGFrZSB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLAorIyAgIHdoaWNo
IG1heSBiZSBtYWNyb3Mgb3IgYW55IHZhbGlkIG9wZXJhbmRzLCBidXQgaXQgY2FuIG9ubHkgcmV0
dXJuCisjICAgY29kZS4gQnV0IHlvdSBjYW4gZG8gVHVyaW5nLWNvbXBsZXRlIHRoaW5ncyB2aWEg
Y29udGludWF0aW9uIHBhc3NpbmcKKyMgICBzdHlsZTogIm1hY3JvIGZvbyAoYSwgYikgYihhKSBl
bmQgZm9vKGZvbywgZm9vKSIuIEFjdHVhbGx5LCBkb24ndCBkbworIyAgIHRoYXQsIHNpbmNlIHlv
dSdsbCBqdXN0IGNyYXNoIHRoZSBhc3NlbWJsZXIuCisjCisjIC0gQW4gImlmIiBpcyBhIGNvbmRp
dGlvbmFsIG9uIHNldHRpbmdzLiBBbnkgaWRlbnRpZmllciBzdXBwbGllZCBpbiB0aGUKKyMgICBw
cmVkaWNhdGUgb2YgYW4gImlmIiBpcyBhc3N1bWVkIHRvIGJlIGEgI2RlZmluZSB0aGF0IGlzIGF2
YWlsYWJsZQorIyAgIGR1cmluZyBjb2RlIGdlbi4gU28geW91IGNhbid0IHVzZSAiaWYiIGZvciBj
b21wdXRhdGlvbiBpbiBhIG1hY3JvLCBidXQKKyMgICB5b3UgY2FuIHVzZSBpdCB0byBzZWxlY3Qg
ZGlmZmVyZW50IHBpZWNlcyBvZiBjb2RlIGZvciBkaWZmZXJlbnQKKyMgICBwbGF0Zm9ybXMuCisj
CisjIC0gQXJndW1lbnRzIHRvIG1hY3JvcyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIHJhdGhlciB0
aGFuIGR5bmFtaWMgc2NvcGluZy4KKyMgICBDb25zdCdzIGFsc28gZm9sbG93IGxleGljYWwgc2Nv
cGluZyBhbmQgbWF5IG92ZXJyaWRlIChoaWRlKSBhcmd1bWVudHMKKyMgICBvciBvdGhlciBjb25z
dHMuIEFsbCB2YXJpYWJsZXMgKGFyZ3VtZW50cyBhbmQgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQK
KyMgICB0byBvcGVyYW5kcy4gQWRkaXRpb25hbGx5LCBhcmd1bWVudHMgKGJ1dCBub3QgY29uc3Rh
bnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBtYWNyb3MuCisKKworIyBUaGVzZSBkZWNsYXJhdGlv
bnMgbXVzdCBtYXRjaCBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaC4KK2NvbnN0IENhbGxGcmFt
ZUhlYWRlclNpemUgPSA0OAorY29uc3QgQXJndW1lbnRDb3VudCA9IC00OAorY29uc3QgQ2FsbGVy
RnJhbWUgPSAtNDAKK2NvbnN0IENhbGxlZSA9IC0zMgorY29uc3QgU2NvcGVDaGFpbiA9IC0yNAor
Y29uc3QgUmV0dXJuUEMgPSAtMTYKK2NvbnN0IENvZGVCbG9jayA9IC04CisKK2NvbnN0IFRoaXNB
cmd1bWVudE9mZnNldCA9IC1DYWxsRnJhbWVIZWFkZXJTaXplIC0gOAorCisjIERlY2xhcmUgc29t
ZSBhbGlhc2VzIGZvciB0aGUgcmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAor
CisjIE9mZnNldHMgbmVlZGVkIGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRp
b24uCitpZiBCSUdfRU5ESUFOCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBh
eWxvYWRPZmZzZXQgPSA0CitlbHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0
IFBheWxvYWRPZmZzZXQgPSAwCitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFu
dHMuCitjb25zdCBJbnQzMlRhZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51
bGxUYWcgPSAtMworY29uc3QgVW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQor
Y29uc3QgRW1wdHlWYWx1ZVRhZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29u
c3QgTG93ZXN0VGFnID0gRGVsZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25z
dCBTdHJpbmdUeXBlID0gNQorY29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFncyBj
b25zdGFudHMuCitjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVt
ZW50c0hhc0luc3RhbmNlID0gMgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9
IDgKKworIyBIZWFwIGFsbG9jYXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNp
emVDbGFzc0luZGV4ID0gMworCisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3Qg
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNv
bnN0YW50cy4KK2NvbnN0IEdsb2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0
IEZ1bmN0aW9uQ29kZSA9IDIKKworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29y
ZCBvZiB0aGUgYXJndW1lbnQgY291bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRD
b3VudCArIFRhZ09mZnNldAorCisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25z
dCBWZWN0b3JTaXplT2Zmc2V0ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisj
IFN0cmluZyBmbGFncy4KK2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxp
dGllcworbWFjcm8gY3Jhc2goKQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3Zl
IDAsIHQwCisgICAgY2FsbCB0MAorZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAg
aWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAgY3Jhc2go
KQorICAgIC5vazoKKyAgICBlbmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NB
ZnRlckNhbGwoZGVzdGluYXRpb25SZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3Zl
IGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBvcCBkZXN0
aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisK
K21hY3JvIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQor
ICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAgZWxzaWYg
WDg2CisgICAgICAgIHB1c2ggc291cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9y
CisgICAgZW5kCitlbmQKKworbWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRwIGFkdmFu
Y2UgKiA0LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRo
T2Zmc2V0KHBjT2Zmc2V0KQorICAgIGxzaGlmdGkgMiwgcGNPZmZzZXQKKyAgICBhZGRwIHBjT2Zm
c2V0LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZz
ZXQpCisgICAgbG9hZGkgcGNPZmZzZXQsIHQwCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0
KHQwKQorZW5kCisKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBBcmd1bWVu
dENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBj
Q2FsbDIoZnVuY3Rpb24sIGFyZzEsIGFyZzIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBh
cmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBv
a2UgYXJnMSwgMAorICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICBlbHNlCisgICAgICAgIGVycm9y
CisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5kCisKKyMgVGhpcyBiYXJlbHkgd29ya3Mu
IGFyZzMgYW5kIGFyZzQgc2hvdWxkIHByb2JhYmx5IGJlIGltbWVkaWF0ZXMuCittYWNybyBjQ2Fs
bDQoZnVuY3Rpb24sIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpCisgICAgaWYgQVJNdjcKKyAgICAg
ICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgICAgIG1vdmUgYXJn
MywgdDIKKyAgICAgICAgbW92ZSBhcmc0LCB0MworICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tl
IGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisgICAgICAgIHBva2UgYXJnMywgMgorICAg
ICAgICBwb2tlIGFyZzQsIDMKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAg
Y2FsbCBmdW5jdGlvbgorZW5kCisKK21hY3JvIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGNDYWxs
MihoZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2Vu
ZAorCisjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVy
YW5kIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uCittYWNybyB0cmFjZU9wZXJhbmQoZnJvbVdo
ZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2Vfb3BlcmFuZCwgY2ZyLCBQQywg
ZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitl
bmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgdGhlIHZh
bHVlIG9mIGFuIG9wZXJhbmQgaW4gdGhlIGluc3RydWN0aW9uCisjIHN0cmVhbS4KK21hY3JvIHRy
YWNlVmFsdWUoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2VfdmFs
dWUsIGNmciwgUEMsIGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1v
dmUgdDEsIGNmcgorZW5kCisKK21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBpZiBFWEVDVVRJ
T05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkKKyAgICBlbmQKK2Vu
ZAorCisjIENhbGwgYSBoZWxwZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3JvIGNhbGxDYWxsSGVs
cGVyKGFkdmFuY2UsIGhlbHBlciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDLCB0
MAorICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgY0Nh
bGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBhY3Rpb24odDApCitl
bmQKKworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikKKyAgICBjYWxsQ2Fs
bEhlbHBlcigKKyAgICAgICAgYWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAorICAgICAgICBtYWNy
byAoY2FsbGVlKQorICAgICAgICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAgICAgIGRpc3BhdGNo
QWZ0ZXJDYWxsKCkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVQo
aW5jcmVtZW50LCBhY3Rpb24pCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHQwCisgICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENvZGVCbG9jazo6bV9s
bGludEV4ZWN1dGVDb3VudGVyW3QwXSwgLmNvbnRpbnVlCisgICAgICAgIGFjdGlvbigpCisgICAg
LmNvbnRpbnVlOgorICAgIGVuZAorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29w
KCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxLAorICAgICAgICBtYWNybyAoKQor
ICAgICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAg
ICAgICAgICAgIGNDYWxsMihfbGxpbnRfbG9vcF9vc3IsIGNmciwgUEMpCisgICAgICAgICAgICBt
b3ZlIHQxLCBjZnIKKyAgICAgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgICAgICBq
bXAgdDAKKyAgICAgICAgLnJlY292ZXI6CisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3
aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEw
LAorICAgICAgICBtYWNybyAoKQorICAgICAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVwbGFj
ZSkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGFzc2VydE5vdENvbnN0YW50KGluZGV4KQor
ICAgIGFzc2VydChtYWNybyAob2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4LCBvayBlbmQpCitlbmQKKworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRp
ZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENv
bnN0YW50T3JWYXJpYWJsZShpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwg
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNl
dFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4
LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0
ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBp
cyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUg
ZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAg
bG9hZHAgVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5bG9h
ZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5k
ZXggYW5kIHBheWxvYWQgbWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLiBJbmRleCBtYXkgYmUgY2xv
YmJlcmVkLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5
bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29u
c3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5j
b25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFnCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3RhZ10sIHRhZwor
ICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMg
YSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUg
PDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
KSA8PCAzLgorICAgIGxzaGlmdGkgMywgaW5kZXgKKyAgICBhZGRwIGluZGV4LCB0YWcKKyAgICBs
b2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQKKyAgICBsb2FkcCBUYWdPZmZzZXRbdGFn
XSwgdGFnCisuZG9uZToKK2VuZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZFRhZ0N1c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgdGFnQ2hlY2soVGFnT2Zm
c2V0W2NmciwgaW5kZXgsIDhdKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwg
OF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVy
cyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMg
YSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVx
dWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIHRh
Z0NoZWNrKFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0pCisgICAgbG9hZHAgUGF5bG9hZE9m
ZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXgg
YW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QgbXV0
YXRlZC4gVXNlCisjIHRoaXMgaWYgeW91IGtub3cgd2hhdCB0aGUgdGFnIG9mIHRoZSB2YXJpYWJs
ZSBzaG91bGQgYmUuIERvaW5nIHRoZSB0YWcKKyMgdGVzdCBhcyBwYXJ0IG9mIGxvYWRpbmcgdGhl
IHZhcmlhYmxlIHJlZHVjZXMgcmVnaXN0ZXIgdXNlLCBidXQgbWF5IG5vdAorIyBiZSBmYXN0ZXIg
dGhhbiBkb2luZyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlIGZvbGxvd2VkIGJ5IGEgYnJhbmNoIG9u
IHRoZQorIyB0YWcuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwg
ZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRUYWdDdXN0b20oCisgICAgICAgIGluZGV4LAorICAgICAgICBtYWNybyAoYWN0dWFsVGFn
KSBiaW5lcSBhY3R1YWxUYWcsIGV4cGVjdGVkVGFnLCBzbG93IGVuZCwKKyAgICAgICAgcGF5bG9h
ZCkKK2VuZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZChp
bmRleCwgcGF5bG9hZCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3Rv
bSgKKyAgICAgICAgaW5kZXgsCisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGVuZCwKKyAgICAg
ICAgcGF5bG9hZCkKK2VuZAorCittYWNybyB3cml0ZUJhcnJpZXIodGFnLCBwYXlsb2FkKQorICAg
ICMgTm90aGluZyB0byBkbywgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGdlbmVyYXRpb25hbCBvciBp
bmNyZW1lbnRhbCBjb2xsZWN0b3IuCitlbmQKKworbWFjcm8gdmFsdWVQcm9maWxlKHRhZywgcGF5
bG9hZCwgcHJvZmlsZSkKKyAgICBzdG9yZWkgdGFnLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyAr
IFRhZ09mZnNldFtwcm9maWxlXQorICAgIHN0b3JlaSBwYXlsb2FkLCBWYWx1ZVByb2ZpbGU6Om1f
YnVja2V0cyArIFBheWxvYWRPZmZzZXRbcHJvZmlsZV0KK2VuZAorCisKKyMgSW5kaWNhdGUgdGhl
IGJlZ2lubmluZyBvZiBMTEludC4KK19sbGludF9iZWdpbjoKKyAgICBjcmFzaCgpCisKKworIyBF
bnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlcgorCittYWNybyBmdW5jdGlvbkZvckNhbGxD
b2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRh
cmdldFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJl
Z2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1f
Y29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKwor
bWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIp
CisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5j
dGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBs
b2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ29uc3RydWN0W3RhcmdldFJl
Z2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9j
a0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFyZ2V0
UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdp
c3RlcikKKyAgICBzdG9yZXAgc291cmNlUmVnaXN0ZXIsIENvZGVCbG9ja1tjZnJdCitlbmQKKwor
bWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCisgICAgIyBO
b3RoaW5nIHRvIGRvIQorZW5kCisKKyMgRG8gdGhlIGJhcmUgbWluaW11bSByZXF1aXJlZCB0byBl
eGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBsZWF2ZSB0aGUgQ29kZUJsb2NrKgorIyBpbiB0
MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1IuCittYWNybyBwcm9sb2d1ZShj
b2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NySGVscGVyLCB0cmFjZUhlbHBlcikK
KyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpCisgICAgCisgICAgIyBTZXQg
dXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1IuCisgICAgc3RvcmVw
IHQyLCBSZXR1cm5QQ1tjZnJdCisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcKKyAgICAgICAgY2Fs
bEhlbHBlcih0cmFjZUhlbHBlcikKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCisg
ICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgYmFkZGlzIDUsIENvZGVCbG9jazo6bV9sbGludEV4
ZWN1dGVDb3VudGVyW3QxXSwgLmNvbnRpbnVlCisgICAgICAgIGNDYWxsMihvc3JIZWxwZXIsIGNm
ciwgUEMpCisgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAgICBidHB6IHQwLCAucmVjb3Zlcgor
ICAgICAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgICAgICByZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybih0MikKKyAgICAgICAgam1wIHQwCisgICAgLnJlY292ZXI6CisgICAg
ICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICAuY29udGludWU6CisgICAgZW5kCisgICAgY29k
ZUJsb2NrU2V0dGVyKHQxKQorICAgIAorICAgICMgU2V0IHVwIHRoZSBQQy4KKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Oklu
c3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQwor
ZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBw
cm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCisjIE11c3QgY2FsbCBkaXNwYXRjaCgwKSBhZnRlciBj
YWxsaW5nIHRoaXMuCittYWNybyBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTa2lw
KQorICAgICMgUHJvZmlsZSB0aGUgYXJndW1lbnRzLiBVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5v
IGNob2ljZSBidXQgdG8gZG8gdGhpcy4gVGhpcworICAgICMgY29kZSBpcyBwcmV0dHkgaG9ycmVu
ZG91cyBiZWNhdXNlIG9mIHRoZSBkaWZmZXJlbmNlIGluIG9yZGVyaW5nIGJldHdlZW4KKyAgICAj
IGFyZ3VtZW50cyBhbmQgdmFsdWUgcHJvZmlsZXMsIHRoZSBkZXNpcmUgdG8gaGF2ZSBhIHNpbXBs
ZSBsb29wLWRvd24tdG8temVybworICAgICMgbG9vcCwgYW5kIHRoZSBkZXNpcmUgdG8gdXNlIG9u
bHkgdGhyZWUgcmVnaXN0ZXJzIHNvIGFzIHRvIHByZXNlcnZlIHRoZSBQQyBhbmQKKyAgICAjIHRo
ZSBjb2RlIGJsb2NrLiBJdCBpcyBsaWtlbHkgdGhhdCB0aGlzIGNvZGUgc2hvdWxkIGJlIHJld3Jp
dHRlbiBpbiBhIG1vcmUKKyAgICAjIG9wdGltYWwgd2F5IGZvciBhcmNoaXRlY3R1cmVzIHRoYXQg
aGF2ZSBtb3JlIHRoYW4gZml2ZSByZWdpc3RlcnMgYXZhaWxhYmxlCisgICAgIyBmb3IgYXJiaXRy
YXJ5IHVzZSBpbiB0aGUgaW50ZXJwcmV0ZXIuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVBh
cmFtZXRlcnNbdDFdLCB0MAorICAgIGFkZGkgLXByb2ZpbGVBcmdTa2lwLCB0MCAjIFVzZSBhZGRp
IGJlY2F1c2UgdGhhdCdzIHdoYXQgaGFzIHRoZSBwZWVwaG9sZQorICAgIGFzc2VydChtYWNybyAo
b2spIGJpZ3RlcSB0MCwgMCwgb2sgZW5kKQorICAgIGJ0aXogdDAsIC5hcmd1bWVudFByb2ZpbGVE
b25lCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFt0MV0sIHQzCisgICAgbXVsaSBzaXplb2YgVmFsdWVQcm9maWxlLCB0MCwg
dDIgIyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVkdWN0aW9uIQorICAgIG5lZ2kgdDAKKyAg
ICBsc2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MiwgdDMKKy5hcmd1bWVudFByb2ZpbGVMb29wOgor
ICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNldCArIDggLSBwcm9maWxlQXJn
U2tpcCAqIDhbY2ZyLCB0MF0sIHQyCisgICAgc3VicCBzaXplb2YgVmFsdWVQcm9maWxlLCB0Mwor
ICAgIHN0b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBzaXplb2YgVmFsdWVQcm9maWxlICsgVmFs
dWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgVGhpc0FyZ3Vt
ZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldCArIDggLSBwcm9maWxlQXJnU2tpcCAqIDhbY2ZyLCB0
MF0sIHQyCisgICAgc3RvcmVpIHQyLCBwcm9maWxlQXJnU2tpcCAqIHNpemVvZiBWYWx1ZVByb2Zp
bGUgKyBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgYmFk
ZGlueiA4LCB0MCwgLmFyZ3VtZW50UHJvZmlsZUxvb3AKKy5hcmd1bWVudFByb2ZpbGVEb25lOgor
ICAgIAorICAgICMgQ2hlY2sgc3RhY2sgaGVpZ2h0LgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9u
dW1DYWxsZWVSZWdpc3RlcnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxE
YXRhW3QxXSwgdDIKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmludGVycHJldGVyW3QyXSwgdDIg
ICAjIEZJWE1FOiBDYW4gZ2V0IHRvIHRoZSBSZWdpc3RlckZpbGUgZnJvbSB0aGUgSklUU3RhY2tG
cmFtZQorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQwLCBjZnIsIHQwCisgICAgYnBhZXEg
SW50ZXJwcmV0ZXI6Om1fcmVnaXN0ZXJGaWxlICsgUmVnaXN0ZXJGaWxlOjptX2VuZFt0Ml0sIHQw
LCAuc3RhY2tIZWlnaHRPSworCisgICAgIyBTdGFjayBoZWlnaHQgY2hlY2sgZmFpbGVkIC0gbmVl
ZCB0byBjYWxsIGEgaGVscGVyLgorICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlZ2lzdGVyX2ZpbGVf
Y2hlY2spCisuc3RhY2tIZWlnaHRPSzoKK2VuZAorCisjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sg
aXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgorbWFjcm8g
ZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgaGVscGVyKQorICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisgICAgYmlhZXEgdDAsIENvZGVCbG9jazo6
bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQ
QykgICAjIFRoaXMgaGVscGVyIGhhcyBhIHNpbXBsZSBwcm90b2NvbDogdDAgPSAwID0+IG5vIGVy
cm9yLCB0MCAhPSAwID0+IGVycm9yCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYnRpeiB0MCwgLmNv
bnRpbnVlCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAg
bG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpT
R2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisuY29udGludWU6CisgICAg
IyBSZWxvYWQgQ29kZUJsb2NrIGFuZCBQQywgc2luY2UgdGhlIGhlbHBlciBjbG9iYmVyZWQgaXQu
CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2lu
c3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpJbnN0cnVjdGlvbnM6Om1f
aW5zdHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKKyAgICBqbXAgZG9uZUxh
YmVsCitlbmQKKworX2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6CisgICAgcHJvbG9ndWUobm90RnVu
Y3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRf
ZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2goMCkKKworCitf
bGxpbnRfZXZhbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dl
dHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGlu
dF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tH
ZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9u
X2Zvcl9jYWxsLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCisuZnVu
Y3Rpb25Gb3JDYWxsQmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigwKQorICAgIGRp
c3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3Vl
OgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5j
dGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKKy5mdW5j
dGlvbkZvckNvbnN0cnVjdEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKKyAg
ICBkaXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hl
Y2s6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlv
bkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0
eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKKyAgICBmdW5jdGlvbkFy
aXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfbGxpbnRfaGVscGVyX2NhbGxfYXJpdHlD
aGVjaykKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjazoKKyAg
ICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25D
b2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9h
cml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQorICAgIGZ1
bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX2xsaW50X2hlbHBl
cl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKKworIyBJbnN0cnVjdGlvbiBpbXBsZW1lbnRhdGlvbnMK
KworX2xsaW50X29wX2VudGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFyc1t0Ml0sIHQyCisg
ICAgYnRpeiB0MiwgLm9wRW50ZXJEb25lCisgICAgbW92ZSBVbmRlZmluZWRUYWcsIHQwCisgICAg
bW92ZSAwLCB0MQorLm9wRW50ZXJMb29wOgorICAgIHN1YmkgMSwgdDIKKyAgICBzdG9yZWkgdDAs
IFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XQorICAgIGJ0aW56IHQyLCAub3BFbnRlckxvb3AKKy5vcEVudGVyRG9uZToKKyAgICBk
aXNwYXRjaCgxKQorCisKK19sbGludF9vcF9jcmVhdGVfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBY3RpdmF0aW9uRG9uZQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKKy5vcENyZWF0ZUFjdGl2YXRp
b25Eb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luaXRfbGF6eV9yZWc6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSBFbXB0
eVZhbHVlVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgMCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NyZWF0ZV9h
cmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQXJn
dW1lbnRzRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYXJndW1lbnRz
KQorLm9wQ3JlYXRlQXJndW1lbnRzRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGFs
bG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJbmRleCwgY2xhc3NJbmZvT2Zmc2V0LCBzdHJ1
Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBzbG93Q2FzZSkKKyAgICBjb25zdCBv
ZmZzZXRPZk15U2l6ZUNsYXNzID0gSlNHbG9iYWxEYXRhOjpoZWFwICsgSGVhcDo6bV9vYmplY3RT
cGFjZSArIEFsbG9jYXRpb25TcGFjZTo6bV9tYXJrZWRTcGFjZSArIE1hcmtlZFNwYWNlOjptX3By
ZWNpc2VTaXplQ2xhc3NlcyArIHNpemVDbGFzc0luZGV4ICogc2l6ZW9mIE1hcmtlZFNwYWNlOjpT
aXplQ2xhc3MKKyAgICAKKyAgICAjIEZJWE1FOiB3ZSBjYW4gZ2V0IHRoZSBnbG9iYWwgZGF0YSBp
biBvbmUgbG9hZCBmcm9tIHRoZSBzdGFjay4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2Ny
YXRjaDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVtzY3JhdGNoMV0sIHNjcmF0
Y2gxCisgICAgCisgICAgIyBHZXQgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuICAgIAor
ICAgIGxvYWRwIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpm
aXJzdEZyZWVDZWxsW3NjcmF0Y2gxXSwgcmVzdWx0CisgICAgYnRweiByZXN1bHQsIHNsb3dDYXNl
CisgICAgCisgICAgIyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCisgICAg
bG9hZHAgW3Jlc3VsdF0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gyLCBvZmZzZXRPZk15
U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtzY3JhdGNo
MV0KKworICAgICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgorICAgIGxvYWRwIGNsYXNzSW5mb09m
ZnNldFtzY3JhdGNoMV0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gyLCBbcmVzdWx0XQor
ICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQorICAgIHN0
b3JlcCAwLCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCisgICAgYWRkcCBzaXplb2Yg
SlNPYmplY3QsIHJlc3VsdCwgc2NyYXRjaDEKKyAgICBzdG9yZXAgc2NyYXRjaDEsIEpTT2JqZWN0
OjptX3Byb3BlcnR5U3RvcmFnZVtyZXN1bHRdCitlbmQKKworX2xsaW50X29wX2NyZWF0ZV90aGlz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBhc3NlcnRO
b3RDb25zdGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcs
IC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYmIgU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5vcENy
ZWF0ZVRoaXNTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbdDBdLCB0Mgor
ICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0
KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0
Q2xhc3NJbmZvLCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCisgICAgbG9hZGkg
NFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisK
Ky5vcENyZWF0ZVRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVf
dGhpcykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9nZXRfY2FsbGVlOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkcCBQYXlsb2FkT2Zm
c2V0ICsgQ2FsbGVlW2Nmcl0sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIs
IHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRp
c3BhdGNoKDIpCisKKworX2xsaW50X29wX2NvbnZlcnRfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAg
IGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgT2JqZWN0
VHlwZSwgLm9wQ29udmVydFRoaXNTbG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ29udmVydFRo
aXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jb252ZXJ0X3RoaXMpCisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fZW1wdHlP
YmplY3RTdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFs
T2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5m
bywgdDEsIHQwLCB0MiwgdDMsIC5vcE5ld09iamVjdFNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQx
CisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcE5ld09i
amVjdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19vYmplY3QpCisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X2FycmF5OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2FycmF5KQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX25ld19hcnJheV9idWZmZXI6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19yZWdleHA6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfcmVnZXhwKQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX21vdjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
OFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MSwgdDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
c3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3Bfbm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0
MiwgdDMpCisgICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5vcE5vdFNsb3cKKyAgICB4b3JpIDEs
IHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOb3RTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ub3QpCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwg
dDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBi
aW5lcSB0MiwgdDMsIC5vcEVxU2xvdworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcEVxU2xvdwor
ICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAg
ICBjaWVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2Nmciwg
dDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlz
cGF0Y2goNCkKKworLm9wRXFTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9lcSkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3Nl
cnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2Vs
bFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQxCisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFn
c1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5vcEVxTnVsbE5vdElt
bWVkaWF0ZQorLm9wRXFOdWxsSW1tZWRpYXRlOgorICAgIGNpZXEgdDEsIE51bGxUYWcsIHQyCisg
ICAgY2llcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIG9yaSB0MiwgdDEKKy5vcEVxTnVsbE5v
dEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhd
CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfbmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAx
MltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDAp
CisgICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9w
TmVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFTbG93CisgICAgbG9hZGkgNFtQ
Q10sIHQyCisgICAgY2luZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Miwg
OF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BOZXFTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9uZXEpCisgICAgZGlzcGF0Y2goNCkKKyAgICAKKworX2xsaW50X29wX25lcV9udWxs
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0
W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAK
KyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbEltbWVkaWF0ZQorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAg
am1wIC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKKy5vcE5lcU51bGxJbW1lZGlhdGU6CisgICAgY2lu
ZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2luZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKKyAgICBh
bmRpIHQyLCB0MQorLm9wTmVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRh
ZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBzdHJpY3RFcShlcXVhbGl0eU9w
ZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5zbG93Cisg
ICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIENlbGxUYWcsIC5ub3RT
dHJpbmcKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZworICAgIGJi
ZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0cmluZ1R5
cGUsIC5zbG93Cisubm90U3RyaW5nOgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGVxdWFsaXR5
T3BlcmF0aW9uKHQwLCB0MSwgdDApCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtj
ZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAg
IGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3Bh
dGNoKDQpCitlbmQKKworX2xsaW50X29wX3N0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2llcSBsZWZ0LCByaWdo
dCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9zdHJpY3RlcSkKKworCitfbGxpbnRfb3BfbnN0
cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwg
cmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9oZWxw
ZXJfbnN0cmljdGVxKQorCisKK19sbGludF9vcF9sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzcykKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9sZXNzZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ3Jl
YXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2dyZWF0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcmVxOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcmVx
KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3ByZV9pbmM6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgSW50MzJUYWcsIC5vcFByZUluY1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MQorICAgIGJhZGRpbyAxLCB0MSwgLm9wUHJlSW5jU2xvdworICAgIHN0b3Jl
aSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcFBy
ZUluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3ByZV9pbmMpCisgICAgZGlz
cGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJlX2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQz
MlRhZywgLm9wUHJlRGVjU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQxCisgICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNTbG93CisgICAgc3RvcmVpIHQxLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlRGVjU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2RlYykKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF9wb3N0X2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
OFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdEluY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9z
dEluY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1v
dmUgdDIsIHQzCisgICAgYmFkZGlvIDEsIHQzLCAub3BQb3N0SW5jU2xvdworICAgIHN0b3JlaSBJ
bnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
Cisub3BQb3N0SW5jRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0SW5jU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9pbmMpCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfcG9zdF9kZWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhb
UENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgSW50MzJUYWcsIC5vcFBvc3REZWNTbG93CisgICAgYmllcSB0MCwgdDEsIC5vcFBvc3RE
ZWNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBtb3Zl
IHQyLCB0MworICAgIGJzdWJpbyAxLCB0MywgLm9wUG9zdERlY1Nsb3cKKyAgICBzdG9yZWkgSW50
MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQor
Lm9wUG9zdERlY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKworLm9wUG9zdERlY1Nsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfZGVjKQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX3RvX2pzbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQwLCB0MiwgdDMpCisgICAgYmllcSB0MiwgSW50MzJUYWcsIC5vcFRvSnNudW1iZXJJc0ludAor
ICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BUb0pzbnVtYmVyU2xvdworLm9wVG9Kc251
bWJlcklzSW50OgorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9w
VG9Kc251bWJlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RvX2pzbnVtYmVy
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25lZ2F0ZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywg
Lm9wTmVnYXRlU3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xv
dworICAgIG5lZ2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4
XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNo
KDMpCisub3BOZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0
ZVNsb3cKKyAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAg
ICBkaXNwYXRjaCgzKQorCisub3BOZWdhdGVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9uZWdhdGUpCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBiaW5hcnlPcEN1c3RvbVN0
b3JlKGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCisg
ICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0
MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAgIGJpbmVx
IHQzLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGludGVn
ZXJPcGVyYXRpb25BbmRTdG9yZSh0MywgdDEsIHQwLCAuc2xvdywgdDIpCisgICAgZGlzcGF0Y2go
NSkKKworLm9wMU5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3Qg
YW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291bGQgYmUgYW55dGhpbmcuCisgICAgYmlhIHQy
LCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQzLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJE
b3VibGUKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MSwgZnQxCisg
ICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0
MSwgdDMsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGZp
aTJkIHQwLCB0MiwgZnQwCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3Jl
ZCBmdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcDJOb3RJbnQ6CisgICAg
IyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQg
aXMgZGVmaW5pdGVseSBub3QuCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgYmlhIHQzLCBMb3dl
c3RUYWcsIC5zbG93CisgICAgY2kyZCB0MCwgZnQwCisgICAgZmlpMmQgdDEsIHQzLCBmdDEKKyAg
ICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDIsIDhd
CisgICAgZGlzcGF0Y2goNSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAg
ZGlzcGF0Y2goNSkKK2VuZAorCittYWNybyBiaW5hcnlPcChpbnRlZ2VyT3BlcmF0aW9uLCBkb3Vi
bGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBt
YWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGlu
dGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICBzdG9yZWkgaW50
MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHJpZ2h0
LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAgICAgZG91
YmxlT3BlcmF0aW9uLCBoZWxwZXIpCitlbmQKKworX2xsaW50X29wX2FkZDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xv
dykgYmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9hZGQpCisK
KworX2xsaW50X29wX211bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3BDdXN0
b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5k
ZXgpCisgICAgICAgICAgICBjb25zdCBzY3JhdGNoID0gaW50MzJUYWcgICAjIFdlIGtub3cgdGhh
dCB3ZSBjYW4gcmV1c2UgdGhlIGludDMyVGFnIHJlZ2lzdGVyIHNpbmNlIGl0IGhhcyBhIGNvbnN0
YW50LgorICAgICAgICAgICAgbW92ZSByaWdodCwgc2NyYXRjaAorICAgICAgICAgICAgYm11bGlv
IGxlZnQsIHNjcmF0Y2gsIHNsb3cKKyAgICAgICAgICAgIGJ0aW56IHNjcmF0Y2gsIC5kb25lCisg
ICAgICAgICAgICBiaWx0IGxlZnQsIDAsIC5zbG93CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAw
LCAuc2xvdworICAgICAgICAuZG9uZToKKyAgICAgICAgICAgIHN0b3JlaSBJbnQzMlRhZywgVGFn
T2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgUGF5bG9h
ZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbXVs
KQorCisKK19sbGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9w
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCByaWdodCwg
c2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCByaWdodCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfc3ViKQorCisKK19sbGludF9vcF9kaXY6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3Jv
IChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgY2kyZCBs
ZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQorICAgICAgICAgICAgZGl2ZCBm
dDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdEludAorICAgICAgICAg
ICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAg
IHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAg
am1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6CisgICAgICAgICAgICBzdG9yZWQgZnQxLCBbY2Zy
LCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl9kaXYpCisKKworX2xsaW50X29wX21vZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGJp
dE9wKG9wZXJhdGlvbiwgaGVscGVyLCBhZHZhbmNlKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEp
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0
MywgSW50MzJUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGxv
YWRpIDRbUENdLCB0MgorICAgIG9wZXJhdGlvbih0MSwgdDAsIC5zbG93KQorICAgIHN0b3JlaSB0
MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBl
cihoZWxwZXIpCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKK2VuZAorCitfbGxpbnRfb3BfbHNoaWZ0
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCBzbG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hl
bHBlcl9sc2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX3JzaGlmdDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xv
dykgcnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfcnNoaWZ0
LAorICAgICAgICA0KQorCisKK19sbGludF9vcF91cnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAg
ICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNs
b3cKKyAgICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3Vyc2hpZnQsCisgICAgICAg
IDQpCisKKworX2xsaW50X29wX2JpdGFuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0
T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5kaSBsZWZ0LCByaWdodCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0YW5kLAorICAgICAgICA1KQorCisKK19sbGlu
dF9vcF9iaXR4b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2JpdHhvciwKKyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0b3I6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHNsb3cpIG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0
b3IsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG5vdDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9w
Qml0bm90U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQw
LCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3Bh
dGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Jp
dG5vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9wQ2hlY2tIYXNJbnN0YW5j
ZVNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNI
YXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBkaXNwYXRjaCgyKQorCisu
b3BDaGVja0hhc0luc3RhbmNlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY2hl
Y2tfaGFzX2luc3RhbmNlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luc3RhbmNl
b2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxl
bWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisgICAgIyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDEsIHQwKQorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsg
VHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJ
bnN0YW5jZW9mU2xvdworICAgIAorICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCisgICAgbG9h
ZGkgMTZbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xv
dworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgCisgICAgIyBSZWdpc3Rl
ciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3ZlIDEsIHQwCisub3BJ
bnN0YW5jZW9mTG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIKKyAg
ICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCisg
ICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRpbnogdDIsIC5vcEluc3Rh
bmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9mRG9uZToKKyAgICBzdG9y
ZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wSW5zdGFuY2VvZlNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luc3RhbmNlb2YpCisgICAgZGlzcGF0
Y2goNSkKKworCitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xs
aW50X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9p
c19udW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9pc19udW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfc3RyaW5n
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNf
c3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX29iamVjdDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX29iamVjdCkK
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19mdW5jdGlvbjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Z1bmN0aW9uKQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2luOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2
ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcmVzb2x2ZV9za2lwKQorICAgIGRpc3BhdGNoKDUpCisKKworbWFjcm8gcmVzb2x2ZUdsb2Jh
bChzaXplLCBzbG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BD
XSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgUHJvcGVydHkgaWRl
bnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAjIDEyW1BDXSAgU3RydWN0dXJl
IHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgICMg
MTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRl
Y29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQxCisgICAgYnBuZXEgdDEsIDEyW1BDXSwgc2xvdworICAgIGxvYWRpIDE2
W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAor
ICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDIsIFRh
Z09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XQorICAgIGxvYWRpIChzaXplIC0gMSkgKiA0W1BDXSwgdDAKKyAgICB2YWx1ZVByb2ZpbGUo
dDIsIHQzLCB0MCkKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIHJlc29sdmVHbG9iYWwoNiwgLm9wUmVzb2x2ZUdsb2JhbFNsb3cpCisg
ICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbFNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3BhdGNoKDYpCisKKworIyBHaXZl
cyB5b3UgdGhlIHNjb3BlIGluIHQwLCB3aGlsZSBhbGxvd2luZyB5b3UgdG8gb3B0aW9uYWxseSBw
ZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9uIHRoZQorIyBzY29wZXMgYXMgdGhleSBhcmUgdHJh
dmVyc2VkLiBzY29wZUNoZWNrKCkgaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHJl
Z2lzdGVyCisjIGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdpc3RlciB0aGF0IGNhbiBiZSB1
c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAorIyB1c2UgdDMsIHNvIHlv
dSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJlLgorbWFjcm8gZ2V0U2NvcGUoZGVCcnVp
amluSW5kZXhPcGVyYW5kLCBzY29wZUNoZWNrKQorICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXls
b2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0Mgor
ICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisgICAgCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQxCisgICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAu
bG9vcAorICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9v
cAorICAgIAorICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0aW9uUmVnaXN0ZXJbdDFdLCB0
MQorCisgICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KKyAg
ICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlv
bgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0
W3QwXSwgdDAKKy5ub0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0MgorICAgIAorICAgIGJ0aXog
dDIsIC5kb25lCisubG9vcDoKKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29w
ZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisgICAgc3ViaSAxLCB0MgorICAgIGJ0aW56IHQyLCAu
bG9vcAorCisuZG9uZToKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYzoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0
YVtzcF0sIHQzCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJlW3Qz
XSwgdDMKKyAgICBnZXRTY29wZSgKKyAgICAgICAgMjBbUENdLAorICAgICAgICBtYWNybyAoc2Nv
cGUsIHNjcmF0Y2gpCisgICAgICAgICAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3Nj
b3BlXSwgc2NyYXRjaAorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVtzY3Jh
dGNoXSwgdDMsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93CisgICAgICAgIGVuZCkK
KyAgICByZXNvbHZlR2xvYmFsKDcsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdykKKyAgICBk
aXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykK
KyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3c6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCisgICAgZGlzcGF0
Y2goNykKKworCitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0
aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgSW5kZXggb2YgcmVnaXN0ZXIgaW4gdGhl
IHNjb3BlLgorICAgICMgMTJbUENdICBEZSBCcnVpamluIGluZGV4LgorICAgIGdldFNjb3BlKDEy
W1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgNFtQQ10sIHQxCisg
ICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0s
IHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAg
IGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
dDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDE2W1BDXSwg
dDEKKyAgICB2YWx1ZVByb2ZpbGUodDMsIHQwLCB0MSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19s
bGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZ2V0U2Nv
cGUoOFtQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDEyW1BDXSwg
dDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MywgdDIpCisgICAgbG9hZGkgNFtQ
Q10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQzLCB0MikKKyAgICBsb2FkcCBTY29wZUNoYWluTm9k
ZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVy
c1t0MF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhb
UENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRw
IEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0
W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MQor
ICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIHZhbHVlUHJv
ZmlsZSh0MiwgdDEsIHQzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9nbG9i
YWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2Jq
ZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0
MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0
W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfYmFzZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfYmFzZSkKKyAgICBk
aXNwYXRjaCg1KQorCisKK19sbGludF9vcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZW5zdXJlX3Byb3Bl
cnR5X2V4aXN0cykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhf
YmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3Jlc29sdmVfd2l0aF9iYXNlKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3Jlc29s
dmVfd2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRf
b3BfZ2V0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIG9ubHkgZG8gbW9u
b21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkg
dGhlCisgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRv
IGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorICAgICMgcGluZy1wb25naW5nIGlzIGZy
ZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUK
KyAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRh
a2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9p
bmcgYW55d2F5LgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5
SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9w
ZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0
MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZz
ZXRbdDAsIHQyXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAg
c3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAzMltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxl
KHQzLCB0MiwgdDEpCisgICAgZGlzcGF0Y2goOSkKKworLm9wR2V0QnlJZFNsb3c6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9pZCkKKyAgICBkaXNwYXRjaCg5KQorCisKK19s
bGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93Cisg
ICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDIKKyAgICBzdWJp
IDEsIHQyCisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBz
dG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisu
b3BHZXRBcmd1bWVudHNMZW5ndGhTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9n
ZXRfYXJndW1lbnRzX2xlbmd0aCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRf
YnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxv
YWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2Vs
bFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2Fk
cCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGJwbmVxIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBsb2FkaSAyMFtQQ10sIHQx
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQwLCB0MikKKyAgICB3cml0ZUJh
cnJpZXIodDAsIHQyKQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KKyAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQorICAgIGRpc3BhdGNoKDkpCisKKy5vcFB1dEJ5
SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaWQpCisgICAgZGlz
cGF0Y2goOSkKKworCittYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQ
Q10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQw
LCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgYnBuZXEgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGFkZGl0aW9uYWxDaGVj
a3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9h
ZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBhZGRwIHQxLCB0Mwor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCisgICAgd3JpdGVCYXJy
aWVyKHQxLCB0MikKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSAyNFtQ
Q10sIHQxCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlcCB0MSwg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICBkaXNwYXRjaCg5KQorZW5kCisKK19sbGludF9v
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obWFj
cm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorCisKK19sbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgcHV0QnlJZFRyYW5zaXRpb24oCisgICAgICAg
IG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCisgICAgICAgICAgICBjb25zdCBw
cm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdp
c3RlciBmb3IgdGhlIHByb3RvCisgICAgICAgIAorICAgICAgICAgICAgbG9hZHAgMjhbUENdLCBz
Y3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBl
bmQpCisgICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0s
IHNjcmF0Y2gKKyAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9r
IGVuZCkKKyAgICAgICAgICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNl
dFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorICAgICAgICAubG9vcDoKKyAgICAgICAg
ICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVj
dHVyZV0sIHByb3RvQ2VsbAorICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtw
cm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwg
W3NjcmF0Y2hdLCBzbG93CisgICAgICAgICAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICAgICAgICAg
IGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwg
TnVsbFRhZywgLmxvb3AKKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCkKKworCitfbGxpbnRf
b3BfZGVsX2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfZGVsX2J5X2lkKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9i
eV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNsb3cpCisgICAgbG9hZHAgSlNH
bG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAgYnBu
ZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFn
ZVt0MF0sIHQzCisgICAgYmlhZXEgdDEsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9w
R2V0QnlWYWxTbG93CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgQXJyYXlTdG9yYWdl
OjptX3ZlY3RvciArIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgIGxvYWRpIEFycmF5U3Rv
cmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisgICAgYmllcSB0
MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93CisgICAgc3RvcmVpIHQyLCBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0K
KyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgdmFsdWVQcm9maWxlKHQyLCB0MSwgdDApCisgICAg
ZGlzcGF0Y2goNSkKKworLm9wR2V0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2dldF9hcmd1
bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVt
cHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDEsIEludDMyVGFnLCB0MiwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cp
CisgICAgYWRkaSAxLCB0MgorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0
W2Nmcl0sIHQxCisgICAgYmlhZXEgdDIsIHQxLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAg
IG5lZ2kgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZz
ZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zm
c2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEKKyAgICBzdG9yZWkgdDAsIFRhZ09m
ZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4
XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEFyZ3VtZW50QnlWYWxTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX2dldF9ieV9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBD
ZWxsVGFnLCB0MSwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAg
IGJwbmVxIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAub3BHZXRCeVBuYW1lU2xvdwor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQw
LCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MAor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSAy
NFtQQ10sIHQwCisgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAorICAgIHN1YmkgMSwgdDAKKyAg
ICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFibGVTbG90c1t0
M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9y
YWdlW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQwLCA4XSwgdDEKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
c3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg3KQorCisub3BHZXRCeVBuYW1lU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3BuYW1lKQorICAgIGRpc3BhdGNo
KDcpCisKKworX2xsaW50X29wX3B1dF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBD
ZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBJbnQzMlRhZywgdDIsIC5vcFB1dEJ5VmFs
U2xvdykKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fZ2xvYmFsRGF0YVt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xh
c3NJbmZvW3QwXSwgdDAKKyAgICBicG5lcSBbdDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93CisgICAg
YmlhZXEgdDIsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QxXSwgLm9wUHV0QnlWYWxTbG93Cisg
ICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QxXSwgdDAKKyAgICBiaWVxIEFycmF5U3RvcmFn
ZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wUHV0
QnlWYWxFbXB0eQorLm9wUHV0QnlWYWxTdG9yZVJlc3VsdDoKKyAgICBsb2FkaSAxMltQQ10sIHQz
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQxLCB0MykKKyAgICB3cml0ZUJh
cnJpZXIodDEsIHQzKQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRh
Z09mZnNldFt0MCwgdDIsIDhdCisgICAgc3RvcmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9y
ICsgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wUHV0QnlW
YWxFbXB0eToKKyAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0
MF0KKyAgICBiaWIgdDIsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdLCAub3BQdXRCeVZhbFN0
b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0MiwgdDEKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFn
ZTo6bV9sZW5ndGhbdDBdCisgICAgam1wIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQKKworLm9wUHV0
QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfdmFsKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2RlbF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWxfYnlfdmFsKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9pbmRleDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pbmRleCkKKyAgICBkaXNwYXRj
aCg0KQorCisKK19sbGludF9vcF9wdXRfZ2V0dGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2dldHRlcikKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9wdXRfc2V0dGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcHV0X3NldHRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9sb29wOgorICAgIG5vcAorX2xsaW50X29wX2ptcDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgZGlzcGF0Y2hCcmFuY2goNFtQQ10pCisKKworX2xsaW50X29wX2ptcF9zY29wZXM6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9qbXBf
c2NvcGVzKQorICAgIGRpc3BhdGNoKDApCisKKworbWFjcm8ganVtcFRydWVPckZhbHNlKGNvbmRp
dGlvbk9wLCBzbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHQxLCBCb29sZWFuVGFnLCB0MCwgLnNsb3cpCisgICAgY29uZGl0aW9uT3Ao
dDAsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJy
YW5jaCg4W1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihzbG93KQorICAgIGRpc3BhdGNo
KDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfdHJ1ZToKKyAgICBub3AKK19sbGludF9vcF9q
dHJ1ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAganVtcFRydWVPckZhbHNlKAorICAgICAg
ICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpbnogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfanRydWUpCisKKworX2xsaW50X29wX2xvb3BfaWZfZmFsc2U6CisgICAg
bm9wCitfbGxpbnRfb3BfamZhbHNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1
ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGl6IHZhbHVlLCB0YXJn
ZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pmYWxzZSkKKworCittYWNybyBlcXVhbE51
bGwoY2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhbmRsZXIpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5pbW1lZGlhdGUKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBjZWxsSGFuZGxlcihTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0Ml0sIC50YXJnZXQpCisgICAg
ZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLmlt
bWVkaWF0ZToKKyAgICBvcmkgMSwgdDEKKyAgICBpbW1lZGlhdGVIYW5kbGVyKHQxLCAudGFyZ2V0
KQorICAgIGRpc3BhdGNoKDMpCitlbmQKKworX2xsaW50X29wX2plcV9udWxsOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0
KSBidGJueiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAg
ICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQp
CisgICAgCisKK19sbGludF9vcF9qbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0YnogdmFsdWUsIE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwg
dGFyZ2V0KSBiaW5lcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKworCitfbGxpbnRfb3Bf
am5lcV9wdHI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRh
ZywgLm9wSm5lcVB0ckJyYW5jaAorICAgIGJwZXEgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDEsIC5vcEpuZXFQdHJGYWxsVGhyb3VnaAorLm9wSm5lcVB0ckJyYW5jaDoKKyAgICBkaXNwYXRj
aEJyYW5jaCgxMltQQ10pCisub3BKbmVxUHRyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2goNCkK
KworCittYWNybyBjb21wYXJlKGludGVnZXJDb21wYXJlLCBkb3VibGVDb21wYXJlLCBoZWxwZXIp
CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MiwgdDAsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
KHQzLCB0MiwgdDMpCisgICAgYmluZXEgdDAsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmlu
ZXEgdDIsIEludDMyVGFnLCAub3AyTm90SW50CisgICAgaW50ZWdlckNvbXBhcmUodDEsIHQzLCAu
anVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisub3AxTm90SW50OgorICAgIGJpYSB0MCwg
TG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91
YmxlCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDMsIGZ0MQorICAg
IGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDMs
IHQyLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBmaWkyZCB0MSwgdDAsIGZ0MAorICAgIGRv
dWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5v
cDJOb3RJbnQ6CisgICAgY2kyZCB0MSwgZnQwCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93
CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVt
cFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisuanVtcFRhcmdldDoKKyAgICBkaXNwYXRjaEJy
YW5jaCgxMltQQ10pCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3Bh
dGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfbGVzczoKKyAgICBub3AKK19sbGludF9v
cF9qbGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0IGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2psZXNzKQorCisKK19sbGludF9vcF9qbmxl
c3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXF1biBsZWZ0LCByaWdodCwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmxlc3MpCisKKworX2xsaW50X29wX2xv
b3BfaWZfZ3JlYXRlcjoKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgdGFyZ2V0KSBiZGd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX2pncmVhdGVyKQorCisKK19sbGludF9vcF9qbmdyZWF0ZXI6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFy
Z2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAg
ICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXIpCisKKworX2xsaW50X29wX2xvb3BfaWZfbGVzc2Vx
OgorICAgIG5vcAorX2xsaW50X29wX2psZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiZGx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
amxlc3NlcSkKKworCitfbGxpbnRfb3Bfam5sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxl
ZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmRndHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVy
X2pubGVzc2VxKQorCisKK19sbGludF9vcF9sb29wX2lmX2dyZWF0ZXJlcToKKyAgICBub3AKK19s
bGludF9vcF9qZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxIGxl
ZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVhdGVyZXEp
CisKKworX2xsaW50X29wX2puZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
b21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCBy
aWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJk
bHR1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmdy
ZWF0ZXJlcSkKKworCitfbGxpbnRfb3BfbG9vcF9oaW50OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxp
bnRfb3Bfc3dpdGNoX2ltbToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENd
LCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIs
IHQxLCB0MCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwg
dDMgICAjIEZJWE1FOiB3b3VsZCBiZSBuaWNlIHRvIHBlZXBob2xlIHRoaXMhCisgICAgbG9hZHAg
Q29kZUJsb2NrOjpSYXJlRGF0YTo6bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9y
QnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVxIHQxLCBJbnQz
MlRhZywgLm9wU3dpdGNoSW1tTm90SW50CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0
Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZl
Y3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGxvYWRwIFNp
bXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQz
CisgICAgbG9hZGkgW3QzLCB0MCwgNF0sIHQxCisgICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFs
bFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCisKKy5vcFN3aXRjaElt
bU5vdEludDoKKyAgICBiaWIgdDEsIExvd2VzdFRhZywgLm9wU3dpdGNoSW1tU2xvdyAgIyBHbyB0
byBzbG93IHBhdGggaWYgaXQncyBhIGRvdWJsZS4KKy5vcFN3aXRjaEltbUZhbGxUaHJvdWdoOgor
ICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisub3BTd2l0Y2hJbW1TbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfaW1tKQorICAgIGRpc3BhdGNoKDApCisKKworX2xs
aW50X29wX3N3aXRjaF9jaGFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQ
Q10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MiwgdDEsIHQwKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVC
bG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxl
LCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fY2hhcmFjdGVyU3dpdGNoSnVt
cFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgYWRkcCB0MywgdDIKKyAg
ICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxs
VGhyb3VnaAorICAgIGxvYWRwIEpTU3RyaW5nOjptX3ZhbHVlW3QwXSwgdDAKKyAgICBiaW5lcSBT
dHJpbmdJbXBsOjptX2xlbmd0aFt0MF0sIDEsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAg
IGxvYWRwIFN0cmluZ0ltcGw6Om1fZGF0YThbdDBdLCB0MQorICAgIGJ0aW56IFN0cmluZ0ltcGw6
Om1faGFzaEFuZEZsYWdzW3QwXSwgSGFzaEZsYWdzOEJpdEJ1ZmZlciwgLm9wU3dpdGNoQ2hhcjhC
aXQKKyAgICBsb2FkaCBbdDFdLCB0MAorICAgIGptcCAub3BTd2l0Y2hDaGFyUmVhZHkKKy5vcFN3
aXRjaENoYXI4Qml0OgorICAgIGxvYWRiIFt0MV0sIHQwCisub3BTd2l0Y2hDaGFyUmVhZHk6Cisg
ICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBs
ZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0
Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNl
dHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGxvYWRpIFt0MiwgdDAsIDRdLCB0
MQorICAgIGJ0aXogdDEsIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0Y2hCcmFu
Y2hXaXRoT2Zmc2V0KHQxKQorCisub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0
Y2hCcmFuY2goOFtQQ10pCisKKworX2xsaW50X29wX3N3aXRjaF9zdHJpbmc6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfc3RyaW5nKQor
ICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX25ld19mdW5jOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBidGl6IDEyW1BDXSwgLm9wTmV3RnVuY1VuY2hlY2tlZAorICAgIGxvYWRpIDRb
UENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywg
Lm9wTmV3RnVuY0RvbmUKKy5vcE5ld0Z1bmNVbmNoZWNrZWQ6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX25ld19mdW5jKQorLm9wTmV3RnVuY0RvbmU6CisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKwor
bWFjcm8gZG9DYWxsKGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQ
Q10sIHQxCisgICAgbG9hZHAgTExJbnRDYWxsTGlua0luZm86OmNhbGxlZVt0MV0sIHQyCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BDYWxsU2xv
dykKKyAgICBiaW5lcSB0MywgdDIsIC5vcENhbGxTbG93CisgICAgbG9hZGkgMTJbUENdLCB0Mwor
ICAgIGFkZHAgMjQsIFBDCisgICAgbHNoaWZ0aSAzLCB0MworICAgIGFkZHAgY2ZyLCB0MyAgIyB0
MyBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9mIGNmcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1f
c2NvcGVDaGFpblt0Ml0sIHQwCisgICAgc3RvcmVpIHQyLCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0
W3QzXQorICAgIHN0b3JlaSB0MCwgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAg
bG9hZGkgOCAtIDI0W1BDXSwgdDIKKyAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdP
ZmZzZXRbY2ZyXQorICAgIHN0b3JlcCBjZnIsIENhbGxlckZyYW1lW3QzXQorICAgIHN0b3JlaSB0
MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIENlbGxUYWcs
IENhbGxlZSArIFRhZ09mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiAr
IFRhZ09mZnNldFt0M10KKyAgICBtb3ZlIHQzLCBjZnIKKyAgICBjYWxsIExMSW50Q2FsbExpbmtJ
bmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0KKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKy5v
cENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBoZWxwZXIpCitlbmQKKworX2xsaW50
X29wX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRfaGVscGVy
X2NhbGwpCisKKworX2xsaW50X29wX2NvbnN0cnVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY29uc3RydWN0KQorCisKK19sbGludF9vcF9jYWxsX3Zh
cmFyZ3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBfbGxp
bnRfaGVscGVyX2NhbGxfdmFyYXJncykKKworCitfbGxpbnRfb3BfY2FsbF9ldmFsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICAKKyAgICAjIEV2YWwgaXMgZXhlY3V0ZWQgaW4gb25lIG9mIHR3
byBtb2RlczoKKyAgICAjCisgICAgIyAxKSBXZSBmaW5kIHRoYXQgd2UncmUgcmVhbGx5IGludm9r
aW5nIGV2YWwoKSBpbiB3aGljaCBjYXNlIHRoZQorICAgICMgICAgZXhlY3V0aW9uIGlzIHBlcmZv
bWVkIGVudGlyZWx5IGluc2lkZSB0aGUgaGVscGVyLCBhbmQgaXQKKyAgICAjICAgIHJldHVybnMg
dGhlIFBDIG9mIGEgZnVuY3Rpb24gdGhhdCBqdXN0IHJldHVybnMgdGhlIHJldHVybiB2YWx1ZQor
ICAgICMgICAgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAjCisgICAgIyAyKSBXZSBmaW5k
IHRoYXQgd2UncmUgaW52b2tpbmcgc29tZXRoaW5nIGNhbGxlZCBldmFsKCkgdGhhdCBpcyBub3QK
KyAgICAjICAgIHRoZSByZWFsIGV2YWwuIFRoZW4gdGhlIGhlbHBlciByZXR1cm5zIHRoZSBQQyBv
ZiB0aGUgdGhpbmcgdG8KKyAgICAjICAgIGNhbGwsIGFuZCB3ZSBjYWxsIGl0LgorICAgICMKKyAg
ICAjIFRoaXMgYWxsb3dzIHVzIHRvIGhhbmRsZSB0d28gY2FzZXMsIHdoaWNoIHdvdWxkIHJlcXVp
cmUgYSB0b3RhbCBvZgorICAgICMgdXAgdG8gZm91ciBwaWVjZXMgb2Ygc3RhdGUgdGhhdCBjYW5u
b3QgYmUgZWFzaWx5IHBhY2tlZCBpbnRvIHR3bworICAgICMgcmVnaXN0ZXJzIChDIGZ1bmN0aW9u
cyBjYW4gcmV0dXJuIHVwIHRvIHR3byByZWdpc3RlcnMsIGVhc2lseSk6CisgICAgIworICAgICMg
LSBUaGUgY2FsbCBmcmFtZSByZWdpc3Rlci4gVGhpcyBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4g
bW9kaWZpZWQKKyAgICAjICAgYnkgdGhlIGhlbHBlciwgYnV0IHRoZSBjb252ZW50aW9uIGlzIHRo
YXQgaXQgcmV0dXJucyBpdC4gSXQncyBub3QKKyAgICAjICAgdG90YWxseSBjbGVhciBpZiB0aGF0
J3MgbmVjZXNzYXJ5LCBzaW5jZSB0aGUgY2ZyIGlzIGNhbGxlZSBzYXZlLgorICAgICMgICBCdXQg
dGhhdCdzIG91ciBzdHlsZSBpbiB0aGlzIGhlcmUgaW50ZXJwcmV0ZXIgc28gd2Ugc3RpY2sgd2l0
aCBpdC4KKyAgICAjCisgICAgIyAtIEEgYml0IHRvIHNheSBpZiB0aGUgaGVscGVyIHN1Y2Nlc3Nm
dWxseSBleGVjdXRlZCB0aGUgZXZhbCBhbmQgaGFzCisgICAgIyAgIHRoZSByZXR1cm4gdmFsdWUs
IG9yIGRpZCBub3QgZXhlY3V0ZSB0aGUgZXZhbCBidXQgaGFzIGEgUEMgZm9yIHVzCisgICAgIyAg
IHRvIGNhbGwuCisgICAgIworICAgICMgLSBFaXRoZXI6CisgICAgIyAgIC0gVGhlIEpTIHJldHVy
biB2YWx1ZSAodHdvIHJlZ2lzdGVycyksIG9yCisgICAgIworICAgICMgICAtIFRoZSBQQyB0byBj
YWxsLgorICAgICMKKyAgICAjIEl0IHR1cm5zIG91dCB0byBiZSBlYXNpZXIgdG8ganVzdCBhbHdh
eXMgaGF2ZSB0aGlzIHJldHVybiB0aGUgY2ZyCisgICAgIyBhbmQgYSBQQyB0byBjYWxsLCBhbmQg
dGhhdCBQQyBtYXkgYmUgYSBkdW1teSB0aHVuayB0aGF0IGp1c3QKKyAgICAjIHJldHVybnMgdGhl
IEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAgCisgICAgc2xvd1BhdGhGb3JD
YWxsKDQsIF9sbGludF9oZWxwZXJfY2FsbF9ldmFsKQorCisKK19sbGludF9nZW5lcmljX3JldHVy
bl9wb2ludDoKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKworX2xsaW50X29wX3RlYXJfb2Zm
X2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1w
dHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkCisgICAgYmllcSBUYWdPZmZz
ZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3Jl
YXRlZAorLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkOgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQorLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVh
dGVkOgorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3RlYXJfb2ZmX2FyZ3VtZW50czoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3ViaSAxLCB0
MCAgICMgR2V0IHRoZSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIKKyAgICBiaWVxIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFyZ3VtZW50c05vdENy
ZWF0ZWQKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQor
Lm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMikKKworCittYWNy
byBkb1JldHVybigpCisgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICBsb2FkcCBDYWxs
ZXJGcmFtZVtjZnJdLCBjZnIKKyAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0
MikKKyAgICByZXQKK2VuZAorCitfbGxpbnRfb3BfcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0Mgor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigpCisK
KworX2xsaW50X29wX2NhbGxfcHV0X3Jlc3VsdDoKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBs
b2FkaSA4W1BDXSwgdDMKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHZhbHVlUHJvZmlsZSh0
MSwgdDAsIHQzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkgIyBOZWVkcyB0byBiZSBoZXJlIGJlY2F1
c2UgaXQgd291bGQgY2xvYmJlciB0MSwgdDAKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9yZXRfb2JqZWN0X29yX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dp
dGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BSZXRP
YmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwg
dDIKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0s
IE9iamVjdFR5cGUsIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAorICAgIGRvUmV0dXJuKCkK
KworLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0OgorICAgIGxvYWRpIDhbUENdLCB0MgorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigpCisKKwor
X2xsaW50X29wX21ldGhvZF9jaGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBp
Z25vcmUgbWV0aG9kIGNoZWNrcyBhbmQgdXNlIG5vcm1hbCBnZXRfYnlfaWQgb3B0aW1pemF0aW9u
cy4KKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zdHJjYXQ6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zdHJjYXQpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFRvUHJp
bWl0aXZlSXNJbW0KKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBi
Ym5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5n
VHlwZSwgLm9wVG9QcmltaXRpdmVTbG93Q2FzZQorLm9wVG9QcmltaXRpdmVJc0ltbToKKyAgICBz
dG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvUHJpbWl0aXZlU2xvd0Nh
c2U6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RvX3ByaW1pdGl2ZSkKKyAgICBkaXNw
YXRjaCgzKQorCisKK19sbGludF9vcF9nZXRfcG5hbWVzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X3BuYW1lcykKKyAgICBkaXNwYXRjaCgw
KSAjIFRoZSBoZWxwZXIgZWl0aGVyIGFkdmFuY2VzIHRoZSBQQyBvciBqdW1wcyB1cyB0byBzb21l
d2hlcmUgZWxzZS4KKworCitfbGxpbnRfb3BfbmV4dF9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRpIDE2W1BDXSwgdDIKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MAorICAgIGJpZXEgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MiwgOF0sIC5vcE5leHRQbmFtZUVuZAorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MgorICAgIGxvYWRwIEpTUHJvcGVy
dHlOYW1lSXRlcmF0b3I6Om1fanNTdHJpbmdzW3QyXSwgdDMKKyAgICBsb2FkaSBbdDMsIHQwLCA4
XSwgdDMKKyAgICBhZGRpIDEsIHQwCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNl
dFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQor
ICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0s
IHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgYnBuZXEgdDEs
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBu
YW1lU2xvdworICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90
eXBlQ2hhaW5bdDJdLCB0MAorICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0s
IHQwCisgICAgYnRweiBbdDBdLCAub3BOZXh0UG5hbWVUYXJnZXQKKy5vcE5leHRQbmFtZUNoZWNr
UHJvdG90eXBlTG9vcDoKKyAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZz
ZXRbdDFdLCBOdWxsVGFnLCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgU3RydWN0dXJlOjpt
X3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDFdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDJdLCB0MQorICAgIGJwbmVxIHQxLCBbdDBdLCAub3BOZXh0UG5hbWVTbG93Cisg
ICAgYWRkcCA0LCB0MAorICAgIGJ0cG56IFt0MF0sIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBl
TG9vcAorLm9wTmV4dFBuYW1lVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDI0W1BDXSkKKwor
Lm9wTmV4dFBuYW1lRW5kOgorICAgIGRpc3BhdGNoKDcpCisKKy5vcE5leHRQbmFtZVNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25leHRfcG5hbWUpICMgVGhpcyBlaXRoZXIga2Vl
cHMgdGhlIFBDIHdoZXJlIGl0IHdhcyAoY2F1c2luZyB1cyB0byBsb29wKSBvciBzZXRzIGl0IHRv
IHRhcmdldC4KKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9wdXNoX3Njb3BlOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9zY29w
ZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3Bfc2NvcGU6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3Bfc2NvcGUpCisgICAg
ZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfcHVzaF9uZXdfc2NvcGU6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX25ld19zY29wZSkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9jYXRjaDoKKyAgICAjIFRoaXMgaXMgd2hlcmUg
d2UgZW5kIHVwIGZyb20gdGhlIEpJVCdzIHRocm93IHRyYW1wb2xpbmUgKGJlY2F1c2UgdGhlCisg
ICAgIyBtYWNoaW5lIGNvZGUgcmV0dXJuIGFkZHJlc3Mgd2lsbCBiZSBzZXQgdG8gX2xsaW50X29w
X2NhdGNoKSwgYW5kIGZyb20KKyAgICAjIHRoZSBpbnRlcnByZXRlcidzIHRocm93IHRyYW1wb2xp
bmUgKHNlZSBfbGxpbnRfdGhyb3dfdHJhbXBvbGluZSkuCisgICAgIyBUaGUgSklUIHRocm93aW5n
IHByb3RvY29sIGNhbGxzIGZvciB0aGUgY2ZyIHRvIGJlIGluIHQwLiBUaGUgdGhyb3dpbmcKKyAg
ICAjIGNvZGUgbXVzdCBoYXZlIGtub3duIHRoYXQgd2Ugd2VyZSB0aHJvd2luZyB0byB0aGUgaW50
ZXJwcmV0ZXIsIGFuZCBoYXZlCisgICAgIyBzZXQgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnBy
ZXRlclBDRm9yVGhyb3cuCisgICAgbW92ZSB0MCwgY2ZyCisgICAgbG9hZHAgSklUU3RhY2tGcmFt
ZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRl
cnByZXRlclBDRm9yVGhyb3dbdDNdLCBQQworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0
aW9uICsgUGF5bG9hZE9mZnNldFt0M10sIHQwCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNl
cHRpb24gKyBUYWdPZmZzZXRbdDNdLCB0MQorICAgIHN0b3JlaSAwLCBKU0dsb2JhbERhdGE6OmV4
Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIEpT
R2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSAgICAgICAKKyAgICBsb2FkaSA0
W1BDXSwgdDIKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBz
dG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHRyYWNlRXhlY3V0aW9uKCkgICMg
VGhpcyBuZWVkcyB0byBiZSBoZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjbG9iYmVyIHQw
LCB0MSwgdDIsIHQzIGFib3ZlLgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGhy
b3cpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9y
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGhy
b3dfcmVmZXJlbmNlX2Vycm9yKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2pzcjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYWRkaSAzICog
NCwgUEMsIHQxCisgICAgc3RvcmVpIHQxLCBbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaEJyYW5j
aCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3JldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZHAgW2NmciwgdDAsIDhdLCBQQworICAgIGRpc3BhdGNo
KDApCisKKworX2xsaW50X29wX2RlYnVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfZGVidWcpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfcHJvZmlsZV93aWxsX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJ
VFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIHQwCisgICAgYnRweiBb
dDBdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3Byb2ZpbGVfd2lsbF9jYWxsKQorLm9wUHJvZmlsZVdpbGxDYWxsRG9uZToKKyAgICBkaXNwYXRj
aCgyKQorCisKK19sbGludF9vcF9wcm9maWxlX2RpZF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3Bd
LCB0MAorICAgIGJ0cHogW3QwXSwgLm9wUHJvZmlsZVdpbGxDYWxsRG9uZQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQorLm9wUHJvZmlsZURpZENhbGxEb25l
OgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2VuZDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X3Rocm93
X2Zyb21faGVscGVyX3RyYW1wb2xpbmU6CisgICAgIyBXaGVuIHRocm93aW5nIGZyb20gdGhlIGlu
dGVycHJldGVyIChpLmUuIHRocm93aW5nIGZyb20gTExJbnRIZWxwZXJzKSwgc28KKyAgICAjIHRo
ZSB0aHJvdyB0YXJnZXQgaXMgbm90IG5lY2Vzc2FyaWx5IGludGVycHJldGVkIGNvZGUsIHdlIGNv
bWUgdG8gaGVyZS4KKyAgICAjIFRoaXMgZXNzZW50aWFsbHkgZW11bGF0ZXMgdGhlIEpJVCdzIHRo
cm93aW5nIHByb3RvY29sLgorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3Bd
LCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAor
ICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKK19s
bGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lOgorICAgIHByZXNlcnZlUmV0dXJuQWRk
cmVzc0FmdGVyQ2FsbCh0MikKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3Nw
XSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAK
KyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCisj
IExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qg
c3VwcG9ydCBhbGwgb3Bjb2Rlcy4KKyMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ug
d2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQKKyMgYXMgbXVjaC4KKwor
bWFjcm8gbm90U3VwcG9ydGVkKCkKKyAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBjcmFz
aCgpCisgICAgZWxzZQorICAgICAgICAjIFdlIHNob3VsZCB1c2Ugd2hhdGV2ZXIgdGhlIHNtYWxs
ZXN0IHBvc3NpYmxlIGluc3RydWN0aW9uIGlzLCBqdXN0IHRvCisgICAgICAgICMgZW5zdXJlIHRo
YXQgdGhlcmUgaXMgYSBnYXAgYmV0d2VlbiBpbnN0cnVjdGlvbiBsYWJlbHMuIElmIG11bHRpcGxl
CisgICAgICAgICMgc21hbGxlc3QgaW5zdHJ1Y3Rpb25zIGV4aXN0LCB3ZSBzaG91bGQgcGljayB0
aGUgb25lIHRoYXQgaXMgbW9zdAorICAgICAgICAjIGxpa2VseSByZXN1bHQgaW4gZXhlY3V0aW9u
IGJlaW5nIGhhbHRlZC4gQ3VycmVudGx5IHRoYXQgaXMgdGhlIGJyZWFrCisgICAgICAgICMgaW5z
dHJ1Y3Rpb24gb24gYWxsIGFyY2hpdGVjdHVyZXMgd2UncmUgaW50ZXJlc3RlZCBpbi4gKEJyZWFr
IGlzIGludDMKKyAgICAgICAgIyBvbiBJbnRlbCwgd2hpY2ggaXMgMSBieXRlLCBhbmQgYmtwdCBv
biBBUk12Nywgd2hpY2ggaXMgMiBieXRlcy4pCisgICAgICAgIGJyZWFrCisgICAgZW5kCitlbmQK
KworX2xsaW50X29wX2dldF9hcnJheV9sZW5ndGg6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xs
aW50X29wX2dldF9ieV9pZF9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2N1c3RvbV9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2N1c3RvbV9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2N1c3RvbV9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9n
ZXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX2dldHRlcl9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX2dldHRlcl9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX2dldHRlcl9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9zZWxm
OgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfc3RyaW5nX2xlbmd0aDoKKyAg
ICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX2dlbmVyaWM6CisgICAgbm90
U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9yZXBsYWNlOgorICAgIG5vdFN1cHBv
cnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbjoKKyAgICBub3RTdXBwb3J0
ZWQoKQorCisKKyMgSW5kaWNhdGUgdGhlIGVuZCBvZiBMTEludC4KK19sbGludF9lbmQ6CisgICAg
Y3Jhc2goKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKKyNp
ZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKwor
I2luY2x1ZGUgIkxMSW50QXNzZW1ibHkuaCIKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMb3dMZXZlbEludGVy
cHJldGVyX2gKKyNkZWZpbmUgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisKKyNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIk9wY29kZS5oIgor
CisjZGVmaW5lIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wob3Bjb2RlLCBsZW5ndGgpIGV4dGVybiAi
QyIgdm9pZCBsbGludF8jI29wY29kZSgpOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChMTElOVF9J
TlNUUlVDVElPTl9ERUNMKTsKKyN1bmRlZiBMTElOVF9JTlNUUlVDVElPTl9ERUNMCisKK2V4dGVy
biAiQyIgdm9pZCBsbGludF9iZWdpbigpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2VuZCgpOwor
ZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9ldmFsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZ2VuZXJpY19y
ZXR1cm5fcG9pbnQoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19mcm9tX2hlbHBlcl90
cmFtcG9saW5lKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJh
bXBvbGluZSgpOworCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTG93TGV2
ZWxJbnRlcnByZXRlcl9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
cm12Ny5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
cm12Ny5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L2FybXY3LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5MyBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVyCisgIGRlZiBpbml0
aWFsaXplKG5hbWUpCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFybVY3T3Bl
cmFuZAorICAgIEBuYW1lCisgIGVuZAorZW5kCisKK0FSTXY3X0RBVEFfUkVHID0gU3BlY2lhbFJl
Z2lzdGVyLm5ldygiaXAiKQorQVJNdjdfQUREUl9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJy
MyIpCisKK2RlZiBtb3ZlSW1tZWRpYXRlKHZhbHVlLCByZWdpc3RlcikKKyAgIyBDdXJyZW50bHkg
d2Ugb25seSBoYW5kbGUgdGhlIHNpbXBsZSBjYXNlcywgYW5kIGZhbGwgYmFjayB0byBtb3YvbW92
dCBmb3IgdGhlIGNvbXBsZXggb25lcy4KKyAgaWYgdmFsdWUgPj0gMCAmJiB2YWx1ZSA8IDI1Ngor
ICAgICRhc20ucHV0cyAibW92dyBcIyN7dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0i
CisgIGVsc2lmICh+dmFsdWUpID49IDAgJiYgKH52YWx1ZSkgPCAyNTYKKyAgICAkYXNtLnB1dHMg
Im12bncgXCMje352YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzZQorICAg
ICRhc20ucHV0cyAibW92dyBcIyN7dmFsdWUgJiAweGZmZmZ9LCAje3JlZ2lzdGVyLmFybVY3T3Bl
cmFuZH0iCisgICAgaWYgKHZhbHVlICYgMHhmZmZmMDAwMCkgIT0gMAorICAgICAgJGFzbS5wdXRz
ICJtb3Z0IFwjI3t2YWx1ZSA+PiAxNn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBl
bmQKKyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisg
ICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiCisgICAgICAicjAiCisgICAg
d2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAgICAicjEiCisgICAgd2hlbiAidDIiLCAiYTIiCisg
ICAgICAicjIiCisgICAgd2hlbiAiYTMiCisgICAgICAicjMiCisgICAgd2hlbiAidDMiCisgICAg
ICAicjQiCisgICAgd2hlbiAidDQiCisgICAgICAicjciCisgICAgd2hlbiAiY2ZyIgorICAgICAg
InI1IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFy
bVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bv
c3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBh
cm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lz
dGVySUQKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIs
ICJmciIKKyAgICAgICJkMCIKKyAgICB3aGVuICJmcjEiLAorICAgICAgImQxIgorICAgIHdoZW4g
ImZyMiIKKyAgICAgICJkMiIKKyAgICB3aGVuICJmcjMiCisgICAgICAiZDMiCisgICAgd2hlbiAi
ZnI0IgorICAgICAgImQ0IgorICAgIHdoZW4gImZyNSIKKyAgICAgICJkNSIKKyAgICBlbHNlCisg
ICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJs
ZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJh
bmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFw
CisgICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFy
bVY3T3BlcmFuZAorICAgIHJhaXNlICJJbnZhbGlkIGltbWVkaWF0ZSAje3ZhbHVlfSIgaWYgdmFs
dWUgPCAwIG9yIHZhbHVlID4gMjU1CisgICAgIiMke3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYg
YXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3
UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVm
IGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkIHNlbGYKKyAgZW5kCitlbmQKKworbW9kdWxl
IEFSTXY3QWRkcmVzc1V0aWxpdGllcworICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgc2Vs
Zi5hcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICAkYXNtLnB1dHMgIlx0bGRy
ICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFuZH0sICN7QVJNdjdfREFUQV9SRUcuYXJt
VjdPcGVyYW5kfSIKKyAgICB5aWVsZCBBUk12N19EQVRBX1JFRworICAgICRhc20ucHV0cyAiXHRz
dHIgI3tBUk12N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9LCAje3NlbGYuYXJtVjdQb3NzaWJseU1l
bW9yeU9wZXJhbmR9IgorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGluY2x1ZGUgQVJN
djdBZGRyZXNzVXRpbGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3Bl
cmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+IDB4ZmZm
CisgICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYg
b2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAgICJbI3ti
YXNlLmFybVY3T3BlcmFuZH0sICN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfV0iCisgICAg
ZWxzZQorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tvZmZzZXQuYXJtVjdPcGVyYW5k
fV0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBpbmNsdWRlIEFS
TXY3QWRkcmVzc1V0aWxpdGllcworCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9w
ZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAgICAgbW92ZUltbWVkaWF0ZShvZmZz
ZXQudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICAgICAgJGFzbS5wdXRzICJhZGR3ICN7QVJNdjdf
QUREUl9SRUcuYXJtVjdPcGVyYW5kfSwgI3tiYXNlLmFybVY3T3BlcmFuZH0iCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0
LnZhbHVlICE9IDAKKyAgICAgICJbI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9LCAje2lu
ZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGV9XSIKKyAgICBlbHNlCisgICAgICAiWyN7
YmFzZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGV9
XSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgIGluY2x1
ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVN
ZW1vcnlPcGVyYW5kCisgICAgbW92ZUltbWVkaWF0ZShhZGRyZXNzLnZhbHVlLCBBUk12N19BRERS
X1JFRykKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICAi
WyN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfV0iCisgIGVuZAorZW5kCisKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMDggQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJl
ICJiYWNrZW5kcyIKK3JlcXVpcmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAib2Zmc2V0cyIKK3Jl
cXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgor
CitjbGFzcyBBc3NlbWJsZXIKKyAgZGVmIGluaXRpYWxpemUob3V0cCkKKyAgICBAb3V0cCA9IG91
dHAKKyAgICBAc3RhdGUgPSA6Y3BwCisgIGVuZAorICAKKyAgZGVmIGVudGVyQXNtCisgICAgQG91
dHAucHV0cyAiYXNtICgiCisgICAgQHN0YXRlID0gOmFzbQorICBlbmQKKyAgCisgIGRlZiBsZWF2
ZUFzbQorICAgIEBvdXRwLnB1dHMgIik7IgorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAor
ICBkZWYgaW5Bc20KKyAgICBlbnRlckFzbQorICAgIHlpZWxkCisgICAgbGVhdmVBc20KKyAgZW5k
CisgIAorICBkZWYgcHV0cyhsaW5lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQor
ICAgIEBvdXRwLnB1dHMoKGxpbmUgKyAiXG4iKS5pbnNwZWN0KQorICBlbmQKKyAgCisgIGRlZiBj
b21tZW50KHRleHQpCisgICAgQG91dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgZW5kCitlbmQKKwor
YXNtRmlsZSA9IEFSR1Yuc2hpZnQKK29mZnNldHNGaWxlID0gQVJHVi5zaGlmdAorb3V0cHV0Rmxu
bSA9IEFSR1Yuc2hpZnQKKworb2Zmc2V0c0xpc3QsIGNvbmZpZ0luZGV4ID0gb2Zmc2V0c0FuZENv
bmZpZ3VyYXRpb25JbmRleChvZmZzZXRzRmlsZSkKK2lucHV0RGF0YSA9IElPOjpyZWFkKGFzbUZp
bGUpCisKK2lucHV0SGFzaCA9CisgICIvLyBvZmZsaW5lYXNtIGlucHV0IGhhc2g6ICIgKyBEaWdl
c3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0YSkgKworICAiICIgKyBEaWdlc3Q6OlNIQTEuaGV4
ZGlnZXN0KChvZmZzZXRzTGlzdCArIFtjb25maWdJbmRleF0pLmpvaW4oJyAnKSkKKworaWYgRmls
ZVRlc3QuZXhpc3Q/IG91dHB1dEZsbm0KKyAgRmlsZS5vcGVuKG91dHB1dEZsbm0sICJyIikgewor
ICAgIHwgaW5wIHwKKyAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAgIGlmIGZpcnN0TGluZSBh
bmQgZmlyc3RMaW5lLmNob21wID09IGlucHV0SGFzaAorICAgICAgJHN0ZGVyci5wdXRzICJOb3Ro
aW5nIGNoYW5nZWQuIgorICAgICAgZXhpdCAwCisgICAgZW5kCisgIH0KK2VuZAorCitGaWxlLm9w
ZW4ob3V0cHV0RmxubSwgInciKSB7CisgIHwgb3V0cCB8CisgICRvdXRwdXQgPSBvdXRwCisgICRv
dXRwdXQucHV0cyBpbnB1dEhhc2gKKyAgCisgICRhc20gPSBBc3NlbWJsZXIubmV3KCRvdXRwdXQp
CisgIAorICBhc3QgPSBwYXJzZShsZXgoaW5wdXREYXRhKSkKKyAgCisgIGZvclNldHRpbmdzKGNv
bXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpW2NvbmZpZ0luZGV4XSwgYXN0KSB7CisgICAg
fCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgYXNzZXJ0Q29u
ZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICAgIGxvd0xldmVsQVNUID0gbG93TGV2ZWxB
U1QucmVzb2x2ZSgqYnVpbGRPZmZzZXRzTWFwKGxvd0xldmVsQVNULCBvZmZzZXRzTGlzdCkpCisg
ICAgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1Qs
IGJhY2tlbmQpIHsKKyAgICAgICRhc20uaW5Bc20geworICAgICAgICBsb3dMZXZlbEFTVC5sb3dl
cihiYWNrZW5kKQorICAgICAgfQorICAgIH0KKyAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MTcgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIEJhc2UgdXRpbGl0eSB0eXBlcyBmb3IgdGhlIEFTVC4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisKKyMgVmFsaWQgbWV0aG9kcyBmb3IgTm9kZToKKyMKKyMgbm9kZS5jaGlsZHJlbiAt
PiBSZXR1cm5zIGFuIGFycmF5IG9mIGltbWVkaWF0ZSBjaGlsZHJlbi4KKyMKKyMgbm9kZS5kZXNj
ZW5kZW50cyAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBzdHJpY3QgZGVzY2VuZGFudHMgKGNo
aWxkcmVuCisjICAgICBhbmQgY2hpbGRyZW4gb2YgY2hpbGRyZW4sIHRyYW5zaXRpdmVseSkuCisj
CisjIG5vZGUuZmxhdHRlbiAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHN0cmlj
dCBkZXNjZW5kYW50cyBhbmQKKyMgICAgIHRoZSBub2RlIGl0c2VsZi4KKyMKKyMgbm9kZS5maWx0
ZXIodHlwZSkgLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRob3NlIGVsZW1lbnRzIGlu
CisjICAgICBub2RlLmZsYXR0ZW4gdGhhdCBhcmUgb2YgdGhlIGdpdmVuIHR5cGUgKGlzX2E/IHR5
cGUgcmV0dXJucyB0cnVlKS4KKyMKKyMgbm9kZS5tYXBDaGlsZHJlbnt8dnwgLi4ufSAtPiBSZXR1
cm5zIGEgbmV3IG5vZGUgd2l0aCBhbGwgY2hpbGRyZW4KKyMgICAgIHJlcGxhY2VkIGFjY29yZGlu
ZyB0byB0aGUgZ2l2ZW4gYmxvY2suCisjCisjIEV4YW1wbGVzOgorIworIyBub2RlLmZpbHRlcihT
ZXR0aW5nKS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzZXR0aW5ncyB0aGF0IHRoZSBBU1Qn
cworIyAgICAgSWZUaGVuRWxzZSBibG9ja3MgZGVwZW5kIG9uLgorIworIyBub2RlLmZpbHRlcihT
dHJ1Y3RPZmZzZXQpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHN0cnVjdHVyZSBvZmZzZXRz
CisjICAgICB0aGF0IHRoZSBBU1QgZGVwZW5kcyBvbi4KKworY2xhc3MgTm9kZQorICBhdHRyX3Jl
YWRlciA6Y29kZU9yaWdpbgorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBA
Y29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgZW5kCisgIAorICBkZWYgY29kZU9yaWdpblN0cmlu
ZworICAgICJsaW5lIG51bWJlciAje0Bjb2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYgZGVz
Y2VuZGFudHMKKyAgICBjaGlsZHJlbi5jb2xsZWN0e3x2fCB2LmZsYXR0ZW59LmZsYXR0ZW4KKyAg
ZW5kCisgIAorICBkZWYgZmxhdHRlbgorICAgIFtzZWxmXSArIGRlc2NlbmRhbnRzCisgIGVuZAor
ICAKKyAgZGVmIGZpbHRlcih0eXBlKQorICAgIGZsYXR0ZW4uc2VsZWN0e3x2fCB2LmlzX2E/IHR5
cGV9CisgIGVuZAorZW5kCisKK2NsYXNzIE5vQ2hpbGRyZW4gPCBOb2RlCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBbXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIHNlbGYK
KyAgZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0S2V5CisgIGF0dHJfcmVhZGVyIDpzdHJ1
Y3QsIDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUoc3RydWN0LCBmaWVsZCkKKyAgICBAc3Ry
dWN0ID0gc3RydWN0CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5kCisgIAorICBkZWYgaGFzaAor
ICAgIEBzdHJ1Y3QuaGFzaCArIEBmaWVsZC5oYXNoICogMworICBlbmQKKyAgCisgIGRlZiBlcWw/
KG90aGVyKQorICAgIEBzdHJ1Y3QgPT0gb3RoZXIuc3RydWN0IGFuZCBAZmllbGQgPT0gb3RoZXIu
ZmllbGQKKyAgZW5kCitlbmQKKyAgICAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIEFTVCBub2Rlcy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2Ns
YXNzIFN0cnVjdE9mZnNldCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZp
ZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZp
ZWxkCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvckZpZWxk
KGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAga2V5ID0gU3RydWN0T2Zmc2V0S2V5Lm5l
dyhzdHJ1Y3QsIGZpZWxkKQorICAgIAorICAgIHVubGVzcyBAQG1hcHBpbmdba2V5XQorICAgICAg
QEBtYXBwaW5nW2tleV0gPSBTdHJ1Y3RPZmZzZXQubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCwgZmll
bGQpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW2tleV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICIje3N0cnVjdH06OiN7ZmllbGR9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIpCisg
ICAgaWYgQHN0cnVjdCAhPSBvdGhlci5zdHJ1Y3QKKyAgICAgIHJldHVybiBAc3RydWN0IDw9PiBv
dGhlci5zdHJ1Y3QKKyAgICBlbmQKKyAgICBAZmllbGQgPD0+IG90aGVyLmZpZWxkCisgIGVuZAor
ZW5kCisKK2NsYXNzIFNpemVvZiA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVjdAor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9
CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICB1bmxlc3Mg
QEBtYXBwaW5nW3N0cnVjdF0KKyAgICAgIEBAbWFwcGluZ1tzdHJ1Y3RdID0gU2l6ZW9mLm5ldyhj
b2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW3N0cnVjdF0KKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgICJzaXplb2YgI3tAc3RydWN0fSIKKyAgZW5kCisgIAorICBk
ZWYgPD0+KG90aGVyKQorICAgIEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICBlbmQKK2VuZAor
CitjbGFzcyBJbW1lZGlhdGUgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDp2YWx1ZQorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFsdWUpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7dmFs
dWV9IgorICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBvdGhlci5pc19hPyBJbW1lZGlh
dGUgYW5kIG90aGVyLnZhbHVlID09IEB2YWx1ZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRJbW1l
ZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNo
aWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
CisgICAgQWRkSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxk
IEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSArICN7
cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzIDwgTm9kZQor
ICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVm
dAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0Bs
ZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgU3ViSW1tZWRp
YXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAtICN7cmlnaHQuZHVtcH0pIgor
ICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6
bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdo
dCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9
IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTXVsSW1tZWRpYXRlcy5uZXcoY29kZU9y
aWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAqICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitj
bGFzcyBOZWdJbW1lZGlhdGUgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAY2hpbGQgPSBjaGlsZAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAY2hpbGRd
CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTmVnSW1tZWRpYXRlLm5ldyhjb2Rl
T3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoLSN7
QGNoaWxkLmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRCA8IE5vQ2hpbGRy
ZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisg
IAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBu
YW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9
IFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5n
W25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2Ns
YXNzIEZQUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVm
IHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFt
ZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IEZQUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUgPCBOb0NoaWxkcmVuCisg
IGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1l
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAg
QEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkK
KyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBWYXJp
YWJsZS5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0K
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgQWRk
cmVzcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2UsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGJhc2UsIG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBiYXNlID0gYmFzZQorICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBbQGJhc2UsIEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxk
cmVuCisgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBv
ZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFz
ZS5kdW1wfV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleCA8IE5vZGUKKyAgYXR0cl9y
ZWFkZXIgOmJhc2UsIDppbmRleCwgOnNjYWxlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBiYXNlID0gYmFzZQorICAgIEBpbmRleCA9IGluZGV4CisgICAgQHNjYWxl
ID0gc2NhbGUKKyAgICByYWlzZSB1bmxlc3MgWzEsIDIsIDQsIDhdLm1lbWJlcj8gQHNjYWxlCisg
ICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFz
ZSwgQGluZGV4LCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEJh
c2VJbmRleC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBpbmRleCksIEBz
Y2FsZSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zm
c2V0LmR1bXB9WyN7YmFzZS5kdW1wfSwgI3tpbmRleC5kdW1wfSwgI3tzY2FsZX1dIgorICBlbmQK
K2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVy
IDphZGRyZXNzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBhZGRyZXNzKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGFkZHJlc3MgPSBhZGRyZXNzCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiI3thZGRyZXNzLmR1bXB9W10iCisgIGVuZAorZW5kCisKK2NsYXNzIElu
c3RydWN0aW9uIDwgTm9kZQorICBhdHRyX3JlYWRlciA6b3Bjb2RlLCA6b3BlcmFuZHMKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG9wY29kZSwgb3BlcmFuZHMpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAb3Bjb2RlID0gb3Bjb2RlCisgICAgQG9wZXJhbmRzID0gb3BlcmFu
ZHMKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBvcGVyYW5kcworICBlbmQKKyAgCisg
IGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwg
QG9wY29kZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiXHQiICsgb3Bjb2RlLnRvX3MgKyAiICIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9
LmpvaW4oIiwgIikKKyAgZW5kCitlbmQKKworY2xhc3MgRXJyb3IgPCBOb0NoaWxkcmVuCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICJcdGVycm9yIgorICBlbmQKK2VuZAorCitjbGFzcyBDb25zdERl
Y2wgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDp2YXJpYWJsZSwgOnZhbHVlCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAdmFyaWFibGUgPSB2YXJpYWJsZQorICAgIEB2YWx1ZSA9IHZhbHVlCisgIGVuZAor
ICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0B2YXJpYWJsZSwgQHZhbHVlXQorICBlbmQKKyAgCisg
IGRlZiBtYXBDaGlsZHJlbgorICAgIENvbnN0RGVjbC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEB2
YXJpYWJsZSksICh5aWVsZCBAdmFsdWUpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImNv
bnN0ICN7QHZhcmlhYmxlLmR1bXB9ID0gI3tAdmFsdWUuZHVtcH0iCisgIGVuZAorZW5kCisKKyRs
YWJlbE1hcHBpbmcgPSB7fQorCitjbGFzcyBMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFk
ZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgc2VsZi5m
b3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgaWYgJGxhYmVsTWFwcGluZ1tuYW1lXQorICAg
ICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9IiB1bmxlc3MgJGxhYmVsTWFw
cGluZ1tuYW1lXS5pc19hPyBMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdbbmFt
ZV0gPSBMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBw
aW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAor
ZW5kCisKK2NsYXNzIExvY2FsTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1l
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorCisgIEBAdW5pcXVlTmFtZUNvdW50ZXIg
PSAwCisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgaWYgJGxh
YmVsTWFwcGluZ1tuYW1lXQorICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAje25h
bWV9IiB1bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMb2NhbExhYmVsCisgICAgZWxz
ZQorICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExvY2FsTGFiZWwubmV3KGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRl
ZiBzZWxmLnVuaXF1ZShjb21tZW50KQorICAgIG5ld05hbWUgPSAiXyN7Y29tbWVudH0iCisgICAg
aWYgJGxhYmVsTWFwcGluZ1tuZXdOYW1lXQorICAgICAgd2hpbGUgJGxhYmVsTWFwcGluZ1tuZXdO
YW1lID0gIl8je0BAdW5pcXVlTmFtZUNvdW50ZXJ9XyN7Y29tbWVudH0iXQorICAgICAgICBAQHVu
aXF1ZU5hbWVDb3VudGVyICs9IDEKKyAgICAgIGVuZAorICAgIGVuZAorICAgIGZvck5hbWUobmls
LCBuZXdOYW1lKQorICBlbmQKKyAgCisgIGRlZiBjbGVhbk5hbWUKKyAgICBpZiBuYW1lID1+IC9e
XC4vCisgICAgICAiXyIgKyBuYW1lWzEuLi0xXQorICAgIGVsc2UKKyAgICAgIG5hbWUKKyAgICBl
bmQKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgTGFiZWxSZWZlcmVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFi
ZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTGFiZWxSZWZlcmVuY2UubmV3
KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1lCisgICAg
bGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQorICBlbmQK
K2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlIDwgTm9DaGlsZHJlbgorICBhdHRyX3Jl
YWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAg
IExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBl
bmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgbGFiZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZSA8IE5vZGUKKyAg
YXR0cl9yZWFkZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxpc3Qp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGlzdCA9IGxpc3QKKyAgZW5kCisgIAorICBk
ZWYgY2hpbGRyZW4KKyAgICBsaXN0CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9j
KQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBAbGlzdC5tYXAoJnByb2MpKQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIlxuIikK
KyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUK
KyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IFRydWUubmV3CisgIAor
ICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFs
dWUKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAidHJ1ZSIKKyAgZW5kCitl
bmQKKworY2xhc3MgRmFsc2UgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisgICAgc3Vw
ZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBGYWxzZS5uZXcKKyAgCisgIGRlZiBz
ZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1ZQorICAg
IGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiZmFsc2UiCisgIGVuZAorZW5kCisK
K2NsYXNzIFRydWVDbGFzcworICBkZWYgYXNOb2RlCisgICAgVHJ1ZS5pbnN0YW5jZQorICBlbmQK
K2VuZAorCitjbGFzcyBGYWxzZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBGYWxzZS5pbnN0YW5j
ZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRl
ciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9
IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNz
IEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gU2V0dGluZy5uZXcoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kIDwgTm9kZQorICBh
dHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAor
ICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0
LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQW5kLm5ldyhjb2Rl
T3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQK
KworY2xhc3MgT3IgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBk
ZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hp
bGRyZW4KKyAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdo
dCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBvciAje3JpZ2h0
LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTm90IDwgTm9kZQorICBhdHRyX3JlYWRlciA6
Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBOb3QubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAg
PCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdHNraXAiCisgIGVuZAorZW5k
CisKK2NsYXNzIElmVGhlbkVsc2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpwcmVkaWNhdGUsIDp0
aGVuQ2FzZQorICBhdHRyX2FjY2Vzc29yIDplbHNlQ2FzZQorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBwcmVkaWNhdGUgPSBwcmVkaWNhdGUKKyAgICBAdGhlbkNhc2UgPSB0aGVuQ2FzZQorICAg
IEBlbHNlQ2FzZSA9IFNraXAubmV3KGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxk
cmVuCisgICAgaWYgQGVsc2VDYXNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNlLCBAZWxz
ZUNhc2VdCisgICAgZWxzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZV0KKyAgICBlbmQK
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBJZlRoZW5FbHNlLm5ldyhjb2RlT3Jp
Z2luLCAoeWllbGQgQHByZWRpY2F0ZSksICh5aWVsZCBAdGhlbkNhc2UpLCAoeWllbGQgQGVsc2VD
YXNlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJpZiAje3ByZWRpY2F0ZS5kdW1wfVxu
IiArIHRoZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsgZWxzZUNhc2UuZHVtcCArICJcbmVuZCIK
KyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6
dmFyaWFibGVzLCA6Ym9keQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwg
dmFyaWFibGVzLCBib2R5KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1l
CisgICAgQHZhcmlhYmxlcyA9IHZhcmlhYmxlcworICAgIEBib2R5ID0gYm9keQorICBlbmQKKyAg
CisgIGRlZiBjaGlsZHJlbgorICAgIEB2YXJpYWJsZXMgKyBbQGJvZHldCisgIGVuZAorICAKKyAg
ZGVmIG1hcENoaWxkcmVuCisgICAgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAdmFyaWFi
bGVzLm1hcHt8dnwgeWllbGQgdn0sICh5aWVsZCBAYm9keSkpCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFibGVzLmNvbGxlY3R7fHZ8IHYuZHVtcH0u
am9pbigiLCAiKSArICIpXG4iICsgYm9keS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2VuZAorCitj
bGFzcyBNYWNyb0NhbGwgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6b3BlcmFuZHMKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQG9wZXJhbmRzID0gb3BlcmFuZHMK
KyAgICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAgQG9wZXJhbmRzLmVhY2h7fHZ8IHJhaXNl
IHVubGVzcyB2fQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEBvcGVyYW5kcworICBl
bmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBNYWNyb0NhbGwubmV3KGNvZGVP
cmlnaW4sIEBuYW1lLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgICJcdCN7bmFtZX0oIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigi
LCAiKSArICIpIgorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBA
CisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCity
ZXF1aXJlICJ4ODYiCisKK0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIsCisgICAiQVJNdjciCisg
IF0KKworV09SS0lOR19CQUNLRU5EUyA9CisgIFsKKyAgICJYODYiCisgIF0KKworQkFDS0VORF9Q
QVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCcgKyBCQUNLRU5EUy5qb2luKCcpfCgnKSArICcpXFxa
JykKKworY2xhc3MgTm9kZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBzZW5kKCJsb3dlciIgKyBu
YW1lKQorICBlbmQKK2VuZAorCisjIE92ZXJyaWRlcyBmb3IgbG93ZXIoKSBmb3IgdGhvc2Ugbm9k
ZXMgdGhhdCBhcmUgYmFja2VuZC1hZ25vc3RpYworCitkZWYgc2FuaXRpemVMYWJlbE5hbWUobmFt
ZSkKKyAgIyBTb21lIHBsYXRmb3JtcyBkb24ndCB3YW50IHRoZSBsZWFkaW5nICJfIi4gSWYgd2Ug
ZXZlciB3YW50IHRvIGRvIHNvbWV0aGluZworICAjIGFib3V0IHRoYXQsIGl0IHdvdWxkIGJlIGhl
cmUuCisgIG5hbWUKK2VuZAorCitjbGFzcyBMYWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAk
YXNtLnB1dHMgIi5nbG9ibCAje3Nhbml0aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9IgorICAgICRh
c20ucHV0cyAiI3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxmLm5hbWUpfToiCisgIGVuZAorZW5kCisK
K2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzICJMX29m
ZmxpbmVhc21fI3tzZWxmLm5hbWVbMS4uLTFdfToiCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAK
KyAgZGVmIGxvd2VyKG5hbWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBs
b3dlcihuYW1lKQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUu
bG93ZXIobmFtZSkKKyAgICB9CisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJh
Y3Rvci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODcg
QEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNrZW5k
cyIKK3JlcXVpcmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBh
cnNlciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitpbnB1dEZs
bm0gPSBBUkdWLnNoaWZ0CitvdXRwdXRGbG5tID0gQVJHVi5zaGlmdAorCitkZWYgZW1pdE1hZ2lj
TnVtYmVyCisgIE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVhY2ggeworICAgIHwgbnVtYmVyIHwKKyAg
ICAkb3V0cHV0LnB1dHMgIiN7bnVtYmVyfSwiCisgIH0KK2VuZAorCitpbnB1dERhdGEgPSBJTzo6
cmVhZChpbnB1dEZsbm0pCitpbnB1dEhhc2ggPSBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0
RGF0YSkKKworaWYgRmlsZVRlc3QuZXhpc3Q/IG91dHB1dEZsbm0KKyAgRmlsZS5vcGVuKG91dHB1
dEZsbm0sICJyIikgeworICAgIHwgaW5wIHwKKyAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAg
IGlmIGZpcnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09ICIvLyBvZmZsaW5lYXNtIGlucHV0
IGhhc2g6ICN7aW5wdXRIYXNofSIKKyAgICAgICRzdGRlcnIucHV0cyAiTm90aGluZyBjaGFuZ2Vk
LiIKKyAgICAgIGV4aXQgMAorICAgIGVuZAorICB9CitlbmQKKworb3JpZ2luYWxBU1QgPSBwYXJz
ZShsZXgoaW5wdXREYXRhKSkKKworRmlsZS5vcGVuKG91dHB1dEZsbm0sICJ3IikgeworICB8IG91
dHAgfAorICAkb3V0cHV0ID0gb3V0cAorICBvdXRwLnB1dHMgIi8vIG9mZmxpbmVhc20gaW5wdXQg
aGFzaDogI3tpbnB1dEhhc2h9IgorICBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMob3JpZ2lu
YWxBU1QpIHsKKyAgICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICBvZmZz
ZXRzTGlzdCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKKyAgICBzaXplc0xp
c3QgPSBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CisgICAgCisgICAgbGVuZ3RoID0gKE9G
RlNFVF9NQUdJQ19OVU1CRVJTLnNpemUgKyAxKSAqICgxICsgb2Zmc2V0c0xpc3Quc2l6ZSArIHNp
emVzTGlzdC5zaXplKQorICAgIAorICAgIG91dHAucHV0cyAic3RhdGljIGNvbnN0IHVuc2lnbmVk
IGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICAgIGVtaXRNYWdpY051bWJlcgorICAg
IG91dHAucHV0cyAiI3tpbmRleH0sIgorICAgIG9mZnNldHNMaXN0LmVhY2ggeworICAgICAgfCBv
ZmZzZXQgfAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICBvdXRwLnB1dHMgIk9GRkxJTkVf
QVNNX09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSksIgorICAgIH0K
KyAgICBzaXplc0xpc3QuZWFjaCB7CisgICAgICB8IG9mZnNldCB8CisgICAgICBlbWl0TWFnaWNO
dW1iZXIKKyAgICAgIG91dHAucHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0cnVjdH0pLCIKKyAgICB9
CisgICAgb3V0cC5wdXRzICJ9OyIKKyAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxODggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K01BQ1JPX0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJhZGRpIiwKKyAgICJhbmRpIiwKKyAgICJs
c2hpZnRpIiwKKyAgICJtdWxpIiwKKyAgICJuZWdpIiwKKyAgICJub3RpIiwKKyAgICJvcmkiLAor
ICAgInJzaGlmdGkiLAorICAgInVyc2hpZnRpIiwKKyAgICJzdWJpIiwKKyAgICJ4b3JpIiwKKyAg
ICJsb2FkaSIsCisgICAibG9hZGIiLAorICAgImxvYWRoIiwKKyAgICJzdG9yZWkiLAorICAgInN0
b3JlYiIsCisgICAibG9hZGQiLAorICAgIm1vdmVkIiwKKyAgICJzdG9yZWQiLAorICAgImFkZGQi
LAorICAgImRpdmQiLAorICAgInN1YmQiLAorICAgIm11bGQiLAorICAgInNxcnRkIiwKKyAgICJj
aTJkIiwKKyAgICJmaWkyZCIsICMgdXNhZ2U6IGZpaTJkIDxncHIgd2l0aCBsZWFzdCBzaWduaWZp
Y2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxmcHI+CisgICAi
ZmQyaWkiLCAjIHVzYWdlOiBmZDJpaSA8ZnByPiwgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50
IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPgorICAgImJkZXEiLAorICAg
ImJkbmVxIiwKKyAgICJiZGd0IiwKKyAgICJiZGd0ZXEiLAorICAgImJkbHQiLAorICAgImJkbHRl
cSIsCisgICAiYmRlcXVuIiwKKyAgICJiZG5lcXVuIiwKKyAgICJiZGd0dW4iLAorICAgImJkZ3Rl
cXVuIiwKKyAgICJiZGx0dW4iLAorICAgImJkbHRlcXVuIiwKKyAgICJidGQyaSIsCisgICAidGQy
aSIsCisgICAiYmNkMmkiLAorICAgIm1vdmR6IiwKKyAgICJwb3AiLAorICAgInB1c2giLAorICAg
Im1vdmUiLAorICAgInN4aTJwIiwKKyAgICJ6eGkycCIsCisgICAibm9wIiwKKyAgICJiaWVxIiwK
KyAgICJiaW5lcSIsCisgICAiYmlhIiwKKyAgICJiaWFlcSIsCisgICAiYmliIiwKKyAgICJiaWJl
cSIsCisgICAiYmlndCIsCisgICAiYmlndGVxIiwKKyAgICJiaWx0IiwKKyAgICJiaWx0ZXEiLAor
ICAgImJiZXEiLAorICAgImJibmVxIiwKKyAgICJiYmEiLAorICAgImJiYWVxIiwKKyAgICJiYmIi
LAorICAgImJiYmVxIiwKKyAgICJiYmd0IiwKKyAgICJiYmd0ZXEiLAorICAgImJibHQiLAorICAg
ImJibHRlcSIsCisgICAiYnRpbyIsCisgICAiYnRpcyIsCisgICAiYnRpeiIsCisgICAiYnRpbnoi
LAorICAgImJ0Ym8iLAorICAgImJ0YnMiLAorICAgImJ0YnoiLAorICAgImJ0Ym56IiwKKyAgICJq
bXAiLAorICAgImJhZGRpbyIsCisgICAiYmFkZGlzIiwKKyAgICJiYWRkaXoiLAorICAgImJhZGRp
bnoiLAorICAgImJzdWJpbyIsCisgICAiYnN1YmlzIiwKKyAgICJic3ViaXoiLAorICAgImJzdWJp
bnoiLAorICAgImJtdWxpbyIsCisgICAiYm11bGlzIiwKKyAgICJibXVsaXoiLAorICAgImJtdWxp
bnoiLAorICAgImJvcmlvIiwKKyAgICJib3JpcyIsCisgICAiYm9yaXoiLAorICAgImJvcmlueiIs
CisgICAiYnJlYWsiLAorICAgImNhbGwiLAorICAgInJldCIsCisgICAiY2llcSIsCisgICAiY2lu
ZXEiLAorICAgImNpYSIsCisgICAiY2lhZXEiLAorICAgImNpYiIsCisgICAiY2liZXEiLAorICAg
ImNpZ3QiLAorICAgImNpZ3RlcSIsCisgICAiY2lsdCIsCisgICAiY2lsdGVxIiwKKyAgICJ0aW8i
LAorICAgInRpcyIsCisgICAidGl6IiwKKyAgICJ0aW56IiwKKyAgICJ0Ym8iLAorICAgInRicyIs
CisgICAidGJ6IiwKKyAgICJ0Ym56IiwKKyAgICJwZWVrIiwKKyAgICJwb2tlIiwKKyAgICJicGVx
IiwKKyAgICJicG5lcSIsCisgICAiYnBhIiwKKyAgICJicGFlcSIsCisgICAiYnBiIiwKKyAgICJi
cGJlcSIsCisgICAiYnBndCIsCisgICAiYnBndGVxIiwKKyAgICJicGx0IiwKKyAgICJicGx0ZXEi
LAorICAgImFkZHAiLAorICAgImFuZHAiLAorICAgIm9ycCIsCisgICAic3VicCIsCisgICAieG9y
cCIsCisgICAibG9hZHAiLAorICAgImNwZXEiLAorICAgImNwbmVxIiwKKyAgICJjcGEiLAorICAg
ImNwYWVxIiwKKyAgICJjcGIiLAorICAgImNwYmVxIiwKKyAgICJjcGd0IiwKKyAgICJjcGd0ZXEi
LAorICAgImNwbHQiLAorICAgImNwbHRlcSIsCisgICAic3RvcmVwIiwKKyAgICJidHBvIiwKKyAg
ICJidHBzIiwKKyAgICJidHB6IiwKKyAgICJidHBueiIsCisgICAiYmFkZHBvIiwKKyAgICJiYWRk
cHMiLAorICAgImJhZGRweiIsCisgICAiYmFkZHBueiIKKyAgXQorCitYODZfSU5TVFJVQ1RJT05T
ID0KKyAgWworICAgImNkcWkiLAorICAgImlkaXZpIgorICBdCisKK0lOU1RSVUNUSU9OUyA9IE1B
Q1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMKKworSU5TVFJVQ1RJT05fUEFUVEVS
TiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIElOU1RSVUNUSU9OUy5qb2luKCcpfCgnKSArICcpKVxc
WicpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFj
dG9yX2NvbnN0YW50cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRz
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCitNQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1
IF0KKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMu
cmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZz
ZXRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJh
Y3Rvcl9jb25zdGFudHMiCisKK09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAw
eDBmZjVlNzU1IF0KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgb2Zmc2V0
c0xpc3QoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyBzaXplc0xpc3QoYXN0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgUmV0dXJucyBhIGxp
c3Qgb2Ygb2Zmc2V0cyBhbmQgc2l6ZXMgdXNlZCBieSB0aGUgQVNULiAgICAgICAgICAgICAgICAg
IworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIG9mZnNldHNMaXN0KGFz
dCkKKyAgYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorZW5kCisKK2RlZiBzaXpl
c0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CitlbmQKKworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRl
eChhc3QsIGZpbGUpIC0+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgW29mZnNl
dHMsIGluZGV4XSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgUGFyc2VzIHRoZSBvZmZzZXRzIGZyb20gYSBmaWxlIGFu
ZCByZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCB0aGUgIworIyBpbmRleCBvZiB0aGUgY29u
ZmlndXJhdGlvbiB0aGF0IGlzIHZhbGlkIGluIHRoaXMgYnVpbGQgdGFyZ2V0LiAgICAgICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgb2Zmc2V0c0FuZENvbmZpZ3Vy
YXRpb25JbmRleChmaWxlKQorICBpbmRleCA9IG5pbAorICBvZmZzZXRzID0gW10KKyAgZW5kaWFu
bmVzc01hcmtlckJ5dGVzID0gbmlsCisgIAorICBkZWYgcmVhZEludChlbmRpYW5uZXNzLCBpbnAp
CisgICAgYnl0ZXMgPSBbXQorICAgIDQudGltZXMgeworICAgICAgYnl0ZXMgPDwgaW5wLmdldGJ5
dGUKKyAgICB9CisgICAgCisgICAgaWYgZW5kaWFubmVzcyA9PSA6bGl0dGxlCisgICAgICAjIExp
dHRsZSBlbmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAwIHwKKyAgICAgICBieXRlc1sxXSA8PCA4
IHwKKyAgICAgICBieXRlc1syXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbM10gPDwgMjQpCisgICAg
ZWxzZQorICAgICAgIyBCaWcgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMjQgfAorICAgICAg
IGJ5dGVzWzFdIDw8IDE2IHwKKyAgICAgICBieXRlc1syXSA8PCA4IHwKKyAgICAgICBieXRlc1sz
XSA8PCAwKQorICAgIGVuZAorICBlbmQKKyAgCisgIFs6bGl0dGxlLCA6YmlnXS5lYWNoIHsKKyAg
ICB8IGVuZGlhbm5lc3MgfAorICAgIG1hZ2ljQnl0ZXMgPSBbXQorICAgIE1BR0lDX05VTUJFUlMu
ZWFjaCB7CisgICAgICB8IG51bWJlciB8CisgICAgICBjdXJyZW50Qnl0ZXMgPSBbXQorICAgICAg
NC50aW1lcyB7CisgICAgICAgIGN1cnJlbnRCeXRlcyA8PCAobnVtYmVyICYgMHhmZikKKyAgICAg
ICAgbnVtYmVyID4+PSA4CisgICAgICB9CisgICAgICBpZiBlbmRpYW5uZXNzID09IDpiaWcKKyAg
ICAgICAgY3VycmVudEJ5dGVzLnJldmVyc2UhCisgICAgICBlbmQKKyAgICAgIG1hZ2ljQnl0ZXMg
Kz0gY3VycmVudEJ5dGVzCisgICAgfQorICAgIAorICAgIEZpbGUub3BlbihmaWxlLCAiciIpIHsK
KyAgICAgIHwgaW5wIHwKKyAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICBsb29wIHsKKyAg
ICAgICAgYnl0ZSA9IGlucC5nZXRieXRlCisgICAgICAgIGJyZWFrIHVubGVzcyBieXRlCisgICAg
ICAgIGlmIGJ5dGUgPT0gbWFnaWNCeXRlc1t3aGVyZUluTWFya2VyXQorICAgICAgICAgIHdoZXJl
SW5NYXJrZXIgKz0gMQorICAgICAgICAgIGlmIHdoZXJlSW5NYXJrZXIgPT0gbWFnaWNCeXRlcy5z
aXplCisgICAgICAgICAgICAjIFdlIGhhdmUgYSBtYXRjaCEgSWYgd2UgaGF2ZSBub3QgeWV0IHJl
YWQgdGhlIGVuZGlhbm5lc3MgbWFya2VyIGFuZCBpbmRleCwKKyAgICAgICAgICAgICMgdGhlbiBy
ZWFkIHRob3NlIG5vdzsgb3RoZXJ3aXNlIHJlYWQgYW4gb2Zmc2V0LgorICAgICAgICAgICAgCisg
ICAgICAgICAgICBpZiBub3QgaW5kZXgKKyAgICAgICAgICAgICAgaW5kZXggPSByZWFkSW50KGVu
ZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgb2Zmc2V0cyA8
PCByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAg
CisgICAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICAgIGVuZAorICAgICAgICBl
bHNlCisgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgZW5kCisgICAgICB9Cisg
ICAgfQorICAgIAorICAgIGJyZWFrIGlmIGluZGV4CisgIH0KKyAgCisgIHJhaXNlIHVubGVzcyBp
bmRleAorICAKKyAgW29mZnNldHMsIGluZGV4XQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAtPiBbb2Zm
c2V0cywgc2l6ZXNdICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBCdWlsZHMg
YSBtYXBwaW5nIGJldHdlZW4gU3RydWN0T2Zmc2V0IG5vZGVzIGFuZCB0aGVpciB2YWx1ZXMuICAg
ICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgYnVpbGRPZmZz
ZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpCisgIG9mZnNldHNNYXAgPSB7fQorICBzaXplc01hcCA9
IHt9CisgIGFzdE9mZnNldHNMaXN0ID0gb2Zmc2V0c0xpc3QoYXN0KQorICBhc3RTaXplc0xpc3Qg
PSBzaXplc0xpc3QoYXN0KQorICByYWlzZSB1bmxlc3MgYXN0T2Zmc2V0c0xpc3Quc2l6ZSArIGFz
dFNpemVzTGlzdC5zaXplID09IG9mZnNldHNMaXN0LnNpemUKKyAgb2Zmc2V0c0xpc3QoYXN0KS5l
YWNoX3dpdGhfaW5kZXggeworICAgIHwgc3RydWN0T2Zmc2V0LCBpbmRleCB8CisgICAgb2Zmc2V0
c01hcFtzdHJ1Y3RPZmZzZXRdID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQorICBzaXplc0xpc3Qo
YXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgc2l6ZW9mLCBpbmRleCB8CisgICAgc2l6ZXNN
YXBbc2l6ZW9mXSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgW29mZnNldHNNYXAsIHNpemVz
TWFwXQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNl
ci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJz
ZXIucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9w
YXJzZXIucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkxIEBACisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJpbnN0cnVjdGlv
bnMiCityZXF1aXJlICJyZWdpc3RlcnMiCisKK2NsYXNzIFRva2VuCisgIGF0dHJfcmVhZGVyIDpj
b2RlT3JpZ2luLCA6c3RyaW5nCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJp
bmcpCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgICAgQHN0cmluZyA9IHN0cmluZwor
ICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBpZiBvdGhlci5pc19hPyBUb2tlbgorICAg
ICAgQHN0cmluZyA9PSBvdGhlci5zdHJpbmcKKyAgICBlbHNlCisgICAgICBAc3RyaW5nID09IG90
aGVyCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmID1+KG90aGVyKQorICAgIEBzdHJpbmcgPX4g
b3RoZXIKKyAgZW5kCisgIAorICBkZWYgdG9fcworICAgICIje0BzdHJpbmcuaW5zcGVjdH0gYXQg
bGluZSAje2NvZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50
KQorICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9f
c30iCisgICAgZWxzZQorICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9OiAje2NvbW1l
bnRbMF19IgorICAgIGVuZAorICBlbmQKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIworIyBUaGUgbGV4ZXIuIFRha2VzIGEgc3RyaW5nIGFuZCByZXR1cm5zIGFuIGFycmF5
IG9mIHRva2Vucy4gICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IworCitkZWYgbGV4KHN0cikKKyAgcmVzdWx0ID0gW10KKyAgbGluZU51bWJlciA9IDEKKyAgd2hp
bGUgbm90IHN0ci5lbXB0eT8KKyAgICBjYXNlIHN0cgorICAgIHdoZW4gL1xBXCMoW15cbl0qKS8K
KyAgICAgICMgY29tbWVudCwgaWdub3JlCisgICAgd2hlbiAvXEFcbi8KKyAgICAgIHJlc3VsdCA8
PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICBsaW5lTnVtYmVyICs9IDEKKyAgICB3
aGVuIC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5l
dyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVwuKFthLXpBLVowLTlfXSopLworICAgICAg
cmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQV8oW2EtekEt
WjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAg
IHdoZW4gL1xBKFsgXHRdKykvCisgICAgICAjIHdoaXRlc3BhY2UsIGlnbm9yZQorICAgIHdoZW4g
L1xBMHgoWzAtOWEtZkEtRl0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJl
ciwgJCYuaGV4LnRvX3MpCisgICAgd2hlbiAvXEEwKFswLTddKykvCisgICAgICByZXN1bHQgPDwg
VG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLm9jdC50b19zKQorICAgIHdoZW4gL1xBKFswLTldKykv
CisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xB
OjovCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4g
L1xBWzosXChcKVxbXF09XCtcLSpdLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVt
YmVyLCAkJikKKyAgICBlbHNlCisgICAgICByYWlzZSAiTGV4ZXIgZXJyb3IgYXQgbGluZSBudW1i
ZXIgI3tsaW5lTnVtYmVyfSwgdW5leHBlY3RlZCBzZXF1ZW5jZSAje3N0clswLi4yMF0uaW5zcGVj
dH0iCisgICAgZW5kCisgICAgc3RyID0gJH4ucG9zdF9tYXRjaAorICBlbmQKKyAgcmVzdWx0Citl
bmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgVG9rZW4gaWRlbnRpZmlj
YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGlzUmVnaXN0ZXIodG9rZW4p
CisgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJbnN0cnVjdGlvbih0
b2tlbikKKyAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0tleXdv
cmQodG9rZW4pCisgIHRva2VuID1+IC9cQSgodHJ1ZSl8KGZhbHNlKXwoaWYpfCh0aGVuKXwoZWxz
ZSl8KGVsc2lmKXwoZW5kKXwoYW5kKXwob3IpfChub3QpfChtYWNybyl8KGNvbnN0KXwoc2l6ZW9m
KXwoZXJyb3IpKVxaLyBvcgorICAgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4gb3IKKyAgICB0
b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzSWRlbnRpZmllcih0b2tl
bikKKyAgdG9rZW4gPX4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKilcWi8gYW5kIG5vdCBpc0tl
eXdvcmQodG9rZW4pCitlbmQKKworZGVmIGlzTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQV8o
W2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNMb2NhbExhYmVsKHRva2VuKQorICB0b2tl
biA9fiAvXEFcLihbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc1ZhcmlhYmxlKHRva2Vu
KQorICBpc0lkZW50aWZpZXIodG9rZW4pIG9yIGlzUmVnaXN0ZXIodG9rZW4pCitlbmQKKworZGVm
IGlzSW50ZWdlcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBWzAtOV0vCitlbmQKKworIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgVGhlIHBhcnNlci4gVGFrZXMgYW4gYXJyYXkgb2Yg
dG9rZW5zIGFuZCByZXR1cm5zIGFuIEFTVC4gTWV0aG9kcyAgICAgIworIyBvdGhlciB0aGFuIHBh
cnNlKHRva2VucykgYXJlIG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9uLiAgICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBQYXJzZXIKKyAgZGVm
IGluaXRpYWxpemUodG9rZW5zKQorICAgIEB0b2tlbnMgPSB0b2tlbnMKKyAgICBAaWR4ID0gMAor
ICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIEB0b2tlbnNbQGlk
eF0KKyAgICAgIEB0b2tlbnNbQGlkeF0ucGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBlbHNlCisg
ICAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5k
IG9mIGZpbGUiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQg
b2YgZmlsZTogI3tjb21tZW50WzBdfSIKKyAgICAgIGVuZAorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBjb25zdW1lKHJlZ2V4cCkKKyAgICBpZiByZWdleHAKKyAgICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIEB0b2tlbnNbQGlkeF0gPX4gcmVnZXhwCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1
bmxlc3MgQGlkeCA9PSBAdG9rZW5zLmxlbmd0aAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICBl
bmQKKyAgCisgIGRlZiBza2lwTmV3TGluZQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIlxu
IgorICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGlj
YXRlQXRvbQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm5vdCIKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIK
KyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJlc3VsdCA9IHBhcnNl
UHJlZGljYXRlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgor
ICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJ0cnVlIgorICAgICAgcmVzdWx0ID0gVHJ1ZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisg
ICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJmYWxzZSIKKyAgICAgIHJl
c3VsdCA9IEZhbHNlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAg
IGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBTZXR0aW5n
LmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykK
KyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJv
cgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZUFuZAorICAgIHJlc3Vs
dCA9IHBhcnNlUHJlZGljYXRlQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImFuZCIK
KyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHgg
Kz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBdG9t
CisgICAgICByZXN1bHQgPSBBbmQubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAg
ZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlCisgICAgIyBz
b21lIGV4YW1wbGVzIG9mIHByZWNlZGVuY2U6CisgICAgIyBub3QgYSBhbmQgYiAtPiAobm90IGEp
IGFuZCBiCisgICAgIyBhIGFuZCBiIG9yIGMgLT4gKGEgYW5kIGIpIG9yIGMKKyAgICAjIGEgb3Ig
YiBhbmQgYyAtPiBhIG9yIChiIGFuZCBjKQorICAgIAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGlj
YXRlQW5kCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAib3IiCisgICAgICBjb2RlT3JpZ2lu
ID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBO
ZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgICByZXN1bHQgPSBP
ci5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VWYXJpYWJsZQorICAgIGlmIGlzUmVnaXN0ZXIoQHRva2Vuc1tA
aWR4XSkKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPX4gRlBSX1BBVFRFUk4KKyAgICAgICAgcmVz
dWx0ID0gRlBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9r
ZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUmVnaXN0ZXJJ
RC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcp
CisgICAgICBlbmQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAg
IHJlc3VsdCA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9r
ZW5zW0BpZHhdLnN0cmluZykKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisg
ICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQWRkcmVzcyhv
ZmZzZXQpCisgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICBj
b2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgCisgICAgIyBUaHJlZSBw
b3NzaWJpbGl0aWVzOgorICAgICMgW10gICAgICAgLT4gQWJzb2x1dGVBZGRyZXNzCisgICAgIyBb
YV0gICAgICAtPiBBZGRyZXNzCisgICAgIyBbYSxiXSAgICAtPiBCYXNlSW5kZXggd2l0aCBzY2Fs
ZSA9IDEKKyAgICAjIFthLGIsY10gIC0+IEJhc2VJbmRleAorICAgIAorICAgIEBpZHggKz0gMQor
ICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJldHVy
biBBYnNvbHV0ZUFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIG9mZnNldCkKKyAgICBlbmQKKyAgICBh
ID0gcGFyc2VWYXJpYWJsZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICByZXN1
bHQgPSBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBhLCBvZmZzZXQpCisgICAgZWxzZQorICAgICAg
cGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgYiA9IHBhcnNlVmFyaWFibGUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisg
ICAgICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgMSwgb2Zmc2V0
KQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09
ICIsIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgWyIxIiwg
IjIiLCAiNCIsICI4Il0ubWVtYmVyPyBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBjID0g
QHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFz
ZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCBjLCBvZmZzZXQpCisgICAgICBlbmQKKyAgICBl
bmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VDb2xv
bkNvbG9uCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luCisgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlk
eF0KKyAgICBuYW1lcyA9IFtAdG9rZW5zW0BpZHhdLnN0cmluZ10KKyAgICBAaWR4ICs9IDEKKyAg
ICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICI6OiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIG5hbWVzIDw8
IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgICByYWlz
ZSBpZiBuYW1lcy5lbXB0eT8KKyAgICBbY29kZU9yaWdpbiwgbmFtZXNdCisgIGVuZAorICAKKyAg
ZGVmIHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICBza2lwTmV3TGluZQorICAgIGlmIEB0b2tlbnNb
QGlkeF0gPT0gIi0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIE5lZ0ltbWVkaWF0ZS5uZXcoQHRv
a2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQgPSBw
YXJzZUV4cHJlc3Npb24KKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0g
IikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSW50ZWdlciBA
dG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faSkKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAg
IGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBpZiBuYW1lcy5zaXpl
ID4gMQorICAgICAgICBTdHJ1Y3RPZmZzZXQuZm9yRmllbGQoY29kZU9yaWdpbiwgbmFtZXNbMC4u
LTJdLmpvaW4oJzo6JyksIG5hbWVzWy0xXSkKKyAgICAgIGVsc2UKKyAgICAgICAgVmFyaWFibGUu
Zm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lc1swXSkKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzUmVn
aXN0ZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcGFyc2VWYXJpYWJsZQorICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gInNpemVvZiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgY29kZU9yaWdpbiwg
bmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIFNpemVvZi5mb3JOYW1lKGNvZGVPcmlnaW4s
IG5hbWVzLmpvaW4oJzo6JykpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICBza2lwTmV3TGluZQorICAg
IHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09
ICIqIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIHJlc3VsdCA9IE11bEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVP
cmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICAgIGVsc2UKKyAgICAgICAg
cmFpc2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBj
b3VsZEJlRXhwcmVzc2lvbgorICAgIEB0b2tlbnNbQGlkeF0gPT0gIi0iIG9yIEB0b2tlbnNbQGlk
eF0gPT0gInNpemVvZiIgb3IgaXNJbnRlZ2VyKEB0b2tlbnNbQGlkeF0pIG9yIGlzVmFyaWFibGUo
QHRva2Vuc1tAaWR4XSkgb3IgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgZW5kCisgIAorICBkZWYg
cGFyc2VFeHByZXNzaW9uCisgICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJl
c3Npb25NdWwKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIrIiBvciBAdG9rZW5zW0BpZHhd
ID09ICItIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKyIKKyAgICAgICAgQGlkeCArPSAx
CisgICAgICAgIHJlc3VsdCA9IEFkZEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNv
ZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzaWYgQHRva2Vu
c1tAaWR4XSA9PSAiLSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IFN1Yklt
bWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VF
eHByZXNzaW9uTXVsKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAg
ZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlT3BlcmFuZChjb21tZW50KQor
ICAgIGlmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgICBleHByID0gcGFyc2VFeHByZXNzaW9uCisg
ICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAgICBwYXJzZUFkZHJlc3MoZXhwcikK
KyAgICAgIGVsc2UKKyAgICAgICAgZXhwcgorICAgICAgZW5kCisgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAiWyIKKyAgICAgIHBhcnNlQWRkcmVzcyhJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgMCkpCisgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAg
ICByZXN1bHQgPSBMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBM
YWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJp
bmcpKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0xvY2FsTGFi
ZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXco
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMb2NhbExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IoY29tbWVudCkKKyAgICBlbmQK
KyAgZW5kCisgIAorICBkZWYgcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgIHNraXBOZXdMaW5lCisg
ICAgY29uc3VtZSgvXEFcKFxaLykKKyAgICB2YXJpYWJsZXMgPSBbXQorICAgIGxvb3AgeworICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNb
QGlkeF0pCisgICAgICAgIHZhcmlhYmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gIiwiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICBwYXJzZUVycm9yCisgICAgICAgIGVuZAorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9y
CisgICAgICBlbmQKKyAgICB9CisgICAgdmFyaWFibGVzCisgIGVuZAorICAKKyAgZGVmIHBhcnNl
U2VxdWVuY2UoZmluYWwsIGNvbW1lbnQpCisgICAgZmlyc3RDb2RlT3JpZ2luID0gQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luCisgICAgbGlzdCA9IFtdCisgICAgbG9vcCB7CisgICAgICBpZiAoQGlk
eCA9PSBAdG9rZW5zLmxlbmd0aCBhbmQgbm90IGZpbmFsKSBvciAoZmluYWwgYW5kIEB0b2tlbnNb
QGlkeF0gPX4gZmluYWwpCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICJcbiIKKyAgICAgICAgIyBpZ25vcmUKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICJjb25zdCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBh
cnNlRXJyb3IgdW5sZXNzIGlzVmFyaWFibGUgQHRva2Vuc1tAaWR4XQorICAgICAgICB2YXJpYWJs
ZSA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0Bp
ZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNz
IEB0b2tlbnNbQGlkeF0gPT0gIj0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YWx1ZSA9
IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGNvbnN0ICN7dmFyaWFibGUubmFtZX0iKQor
ICAgICAgICBsaXN0IDw8IENvbnN0RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCB2
YXJpYWJsZSwgdmFsdWUpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJlcnJvciIKKyAg
ICAgICAgbGlzdCA8PCBFcnJvci5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luKQorICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImlmIgorICAgICAgICBj
b2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQor
ICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgIHNraXBOZXdMaW5l
CisgICAgICAgIGlmVGhlbkVsc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNh
dGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGlu
c2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgbGlzdCA8PCBpZlRo
ZW5FbHNlCisgICAgICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImVsc2lmIgorICAgICAgICAg
IGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJl
ZGljYXRlCisgICAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICAg
IHNraXBOZXdMaW5lCisgICAgICAgICAgZWxzZUNhc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3Jp
Z2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxa
LywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAg
ICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNhc2UKKyAgICAgICAgICBpZlRoZW5FbHNlID0g
ZWxzZUNhc2UKKyAgICAgICAgZW5kCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gImVsc2Ui
CisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IHBh
cnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGVsc2UgY2FzZSBmb3IgXCJp
ZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxz
ZQorICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gImVuZCIKKyAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICJtYWNybyIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdp
bgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIG5hbWUgPSBA
dG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFyaWFibGVz
ID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFl
bmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gI3tuYW1lfSIpCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBsaXN0IDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMs
IGJvZHkpCisgICAgICBlbHNpZiBpc0luc3RydWN0aW9uIEB0b2tlbnNbQGlkeF0KKyAgICAgICAg
Y29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRv
a2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIChub3QgZmlu
YWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0g
PX4gZmluYWwpCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24sIGFuZCBpdCdz
IHRoZSBsYXN0IG9uZS4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3Jp
Z2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0Bp
ZHhdID09ICJcbiIKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbi4KKyAgICAg
ICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgICMgSXQncyBkZWZpbml0ZWx5
IGFuIGluc3RydWN0aW9uLCBhbmQgaXQgaGFzIGF0IGxlYXN0IG9uZSBvcGVyYW5kLgorICAgICAg
ICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gZmFsc2UKKyAgICAg
ICAgICBsb29wIHsKKyAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUg
aW5zaWRlIG9mIGluc3RydWN0aW9uICN7bmFtZX0iKQorICAgICAgICAgICAgaWYgKG5vdCBmaW5h
bCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9
fiBmaW5hbCkKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbiBhbmQg
b2YgdGhlIHNlcXVlbmNlLgorICAgICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gdHJ1ZQorICAg
ICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIK
KyAgICAgICAgICAgICAgIyBIYXMgYW5vdGhlciBvcGVyYW5kLgorICAgICAgICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAg
ICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uLgorICAgICAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
cGFyc2VFcnJvcigiRXhwZWN0ZWQgYSBjb21tYSwgbmV3bGluZSwgb3IgI3tmaW5hbH0gYWZ0ZXIg
I3tvcGVyYW5kcy5sYXN0LmR1bXB9IikKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgIH0KKyAg
ICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5k
cykKKyAgICAgICAgICBpZiBlbmRPZlNlcXVlbmNlCisgICAgICAgICAgICBicmVhaworICAgICAg
ICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0Bp
ZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAg
ICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgICAgICMgTWFjcm8gaW52b2NhdGlvbi4K
KyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAg
c2tpcE5ld0xpbmUKKyAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9vcCB7CisgICAgICAg
ICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm1h
Y3JvIgorICAgICAgICAgICAgICAgICMgSXQncyBhIG1hY3JvIGxhbWJkYSEKKyAgICAgICAgICAg
ICAgICBjb2RlT3JpZ2luSW5uZXIgPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3Jv
VmFyaWFibGVzCisgICAgICAgICAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFov
LCAid2hpbGUgaW5zaWRlIG9mIGFub255bW91cyBtYWNybyBwYXNzZWQgYXMgYXJndW1lbnQgdG8g
I3tuYW1lfSIpCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgb3Bl
cmFuZHMgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJpYWJsZXMsIGJvZHkp
CisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9w
ZXJhbmQoIndoaWxlIGluc2lkZSBvZiBtYWNybyBjYWxsIHRvICN7bmFtZX0iKQorICAgICAgICAg
ICAgICBlbmQKKyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAg
ICAgICBicmVhaworICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAg
ICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgcGFyc2VFcnJvciAiVW5leHBlY3RlZCAje0B0b2tlbnNbQGlkeF0uc3RyaW5nLmluc3BlY3R9
IHdoaWxlIHBhcnNpbmcgaW52b2NhdGlvbiBvZiBtYWNybyAje25hbWV9IgorICAgICAgICAgICAg
ICBlbmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbmQKKyAgICAgICAgICBsaXN0IDw8IE1h
Y3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9IgorICAgICAg
ICBlbmQKKyAgICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XSBvciBpc0xvY2FsTGFiZWwg
QHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiOiIKKyAgICAg
ICAgIyBJdCdzIGEgbGFiZWwuCisgICAgICAgIGlmIGlzTGFiZWwgbmFtZQorICAgICAgICAgIGxp
c3QgPDwgTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbHNlCisgICAg
ICAgICAgbGlzdCA8PCBMb2NhbExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAg
ICAgZW5kCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9y
ICJFeHBlY3RpbmcgdGVybWluYWwgI3tmaW5hbH0gI3tjb21tZW50fSIKKyAgICAgIGVuZAorICAg
IH0KKyAgICBTZXF1ZW5jZS5uZXcoZmlyc3RDb2RlT3JpZ2luLCBsaXN0KQorICBlbmQKK2VuZAor
CitkZWYgcGFyc2UodG9rZW5zKQorICBwYXJzZXIgPSBQYXJzZXIubmV3KHRva2VucykKKyAgcGFy
c2VyLnBhcnNlU2VxdWVuY2UobmlsLCAiIikKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDU5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitHUFJT
ID0KKyAgWworICAgInQwIiwKKyAgICJ0MSIsCisgICAidDIiLAorICAgInQzIiwKKyAgICJ0NCIs
CisgICAiY2ZyIiwKKyAgICJhMCIsCisgICAiYTEiLAorICAgInIwIiwKKyAgICJyMSIsCisgICAi
c3AiCisgIF0KKworRlBSUyA9CisgIFsKKyAgICJmdDAiLAorICAgImZ0MSIsCisgICAiZnQyIiwK
KyAgICJmdDMiLAorICAgImZ0NCIsCisgICAiZnQ1IiwKKyAgICJmYTAiLAorICAgImZhMSIsCisg
ICAiZmEyIiwKKyAgICJmYTMiLAorICAgImZyIgorICBdCisKK1JFR0lTVEVSUyA9IEdQUlMgKyBG
UFJTCisKK0dQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgR1BSUy5qb2luKCcpfCgn
KSArICcpKVxcWicpCitGUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMuam9p
bignKXwoJykgKyAnKSlcXFonKQorCitSRUdJU1RFUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxB
KCgnICsgUkVHSVNURVJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjIxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCity
ZXF1aXJlICJhc3QiCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVp
cmUgInRyYW5zZm9ybSIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgY29t
cHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgLT4gc2V0dGluZ3NDb21iaWF0aW9ucyAgICAg
ICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIENvbXB1dGVzIGFuIGFycmF5IG9mIHNldHRp
bmdzIG1hcHMsIHdoZXJlIGEgc2V0dGluZ3MgbWFwIGNvbnN0aXR1dGVzICMKKyMgYSBjb25maWd1
cmF0aW9uIGZvciB0aGUgYXNzZW1ibHkgY29kZSBiZWluZyBnZW5lcmF0ZWQuIFRoZSBtYXAgICAg
ICAgIworIyBjb250YWlucyBrZXkgdmFsdWUgcGFpcnMgd2hlcmUga2V5cyBhcmUgc2V0dGluZ3Mg
bmFtZXMgKHN0cmluZ3MpIGFuZCAjCisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xlYW5zICh0cnVlIGZv
ciBlbmFibGVkLCBmYWxzZSBmb3IgZGlzYWJsZWQpLiAgICAgICMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjCisKK2RlZiBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQor
ICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IFtdCisgIAorICBkZWYgc2V0dGluZ3NDb21iaW5hdG9y
KHNldHRpbmdzQ29tYmluYXRpb25zLCBtYXBTb0ZhciwgcmVtYWluaW5nKQorICAgIGlmIHJlbWFp
bmluZy5lbXB0eT8KKyAgICAgIHNldHRpbmdzQ29tYmluYXRpb25zIDw8IG1hcFNvRmFyCisgICAg
ICByZXR1cm4KKyAgICBlbmQKKyAgICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBu
ZXdNYXBbcmVtYWluaW5nWzBdXSA9IHRydWUKKyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGlu
Z3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgICAKKyAgICBuZXdN
YXAgPSBtYXBTb0Zhci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IGZhbHNlCisgICAg
c2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmlu
Z1sxLi4tMV0pCisgIGVuZAorICAKKyAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmlu
YXRpb25zLCB7fSwgKGFzdC5maWx0ZXIoU2V0dGluZykudW5pcS5jb2xsZWN0e3x2fCB2Lm5hbWV9
ICsgWyJYODYiLCAiQVJNdjciXSkudW5pcSkKKyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zCitl
bmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yU2V0dGluZ3MoY29u
Y3JldGVTZXR0aW5ncywgYXN0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8IC4uLiB9ICAg
ICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRGV0ZXJtaW5lcyBpZiB0aGUgc2V0
dGluZ3MgY29tYmluYXRpb24gaXMgdmFsaWQsIGFuZCBpZiBzbywgY2FsbHMgICAgIworIyB0aGUg
YmxvY2sgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91IG5lZWQgdG8gZ2VuZXJhdGUgY29kZS4gICAg
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZm9yU2V0
dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KQorICAjIENoZWNrIHdoaWNoIGFyY2hpdGVjdHVy
ZXMgdGhpcyBjb21iaW5hdG9yIGNsYWltcyB0byBzdXBwb3J0LgorICBudW1DbGFpbWVkQmFja2Vu
ZHMgPSAwCisgIHNlbGVjdGVkQmFja2VuZCA9IG5pbAorICBCQUNLRU5EUy5lYWNoIHsKKyAgICB8
IGJhY2tlbmQgfAorICAgIGlzU3VwcG9ydGVkID0gY29uY3JldGVTZXR0aW5nc1tiYWNrZW5kXQor
ICAgIHJhaXNlIHVubGVzcyBpc1N1cHBvcnRlZCAhPSBuaWwKKyAgICBudW1DbGFpbWVkQmFja2Vu
ZHMgKz0gaWYgaXNTdXBwb3J0ZWQgdGhlbiAxIGVsc2UgMCBlbmQKKyAgICBpZiBpc1N1cHBvcnRl
ZAorICAgICAgc2VsZWN0ZWRCYWNrZW5kID0gYmFja2VuZAorICAgIGVuZAorICB9CisgIAorICBy
ZXR1cm4gaWYgbnVtQ2xhaW1lZEJhY2tlbmRzID4gMQorICAKKyAgIyBSZXNvbHZlIHRoZSBBU1Qg
ZG93biB0byBhIGxvdy1sZXZlbCBmb3JtIChubyBtYWNyb3Mgb3IgY29uZGl0aW9uYWxzKS4KKyAg
bG93TGV2ZWxBU1QgPSBhc3QucmVzb2x2ZVNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MpCisgIAor
ICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgc2VsZWN0ZWRCYWNrZW5kCitl
bmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yRWFjaFZhbGlkU2V0
dGluZ3NDb21iaW5hdGlvbihhc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAg
ICAgICAgICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3ND
b21iaW5hdGlvbihhc3QsIHNldHRpbmdzQ29tYmluYXRpb25zKSB7ICAgICAgICAgIworIyAgICAg
fCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0gICAgICAgICAg
ICAgICAgICAjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgRXhlY3V0ZXMgdGhlIGdpdmVuIGJsb2NrIGZv
ciBlYWNoIHZhbGlkIHNldHRpbmdzIGNvbWJpbmF0aW9uIGluIHRoZSAgIworIyBzZXR0aW5ncyBt
YXAuIFRoZSBhc3QgcGFzc2VkIGludG8gdGhlIGJsb2NrIGlzIHJlc29sdmVkICAgICAgICAgICAg
ICAjCisjIChhc3QucmVzb2x2ZSkgYWdhaW5zdCB0aGUgc2V0dGluZ3MuICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUaGUgZmlyc3QgZm9ybSB3
aWxsIGNhbGwgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgZm9yIHlvdS4gICAjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitkZWYgZm9yRWFjaFZhbGlkU2V0dGlu
Z3NDb21iaW5hdGlvbihhc3QsICpvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zKQorICByYWlz
ZSBpZiBvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zLnNpemUgPiAxCisgIAorICBpZiBvcHRp
b25hbFNldHRpbmdzQ29tYmluYXRpb25zLmVtcHR5PworICAgIHNldHRpbmdzQ29tYmluYXRpb25z
ID0gY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgZWxzZQorICAgIHNldHRpbmdz
Q29tYmluYXRpb25zID0gb3B0aW9uYWxTZXR0aW5nc0NvbWJpYXRpb25zWzBdCisgIGVuZAorICAK
KyAgc2V0dGluZ3NDb21iaW5hdGlvbnMuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IGNvbmNyZXRl
U2V0dGluZ3MsIGluZGV4IHwKKyAgICBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3Qp
IHsKKyAgICAgIHwgY29uY3JldGVTZXR0aW5nc18sIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAg
ICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAor
ICAgIH0KKyAgfQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGNw
cFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBSZXR1cm5zIHRoZSBDKysgY29kZSB1c2Vk
IHRvIHRlc3QgaWYgd2UgYXJlIGluIGEgY29uZmlndXJhdGlvbiB0aGF0ICAjCisjIGNvcnJlc3Bv
bmRzIHRvIHRoZSBnaXZlbiBjb25jcmV0ZSBzZXR0aW5ncy4gICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBjcHBTZXR0aW5n
c1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgIiNpZiAiICsgY29uY3JldGVTZXR0aW5ncy50b19h
LmNvbGxlY3R7CisgICAgfCBwYWlyIHwKKyAgICAoaWYgcGFpclsxXQorICAgICAgICIiCisgICAg
IGVsc2UKKyAgICAgICAiISIKKyAgICAgZW5kKSArICJPRkZMSU5FX0FTTV8iICsgcGFpclswXQor
ICB9LmpvaW4oIiAmJiAiKQorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIGlzQVNURXJyb25lb3VzKGFzdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBUZXN0cyB0byBzZWUgaWYgdGhl
IEFTVCBjbGFpbXMgdGhhdCB0aGVyZSBpcyBhbiBlcnJvciAtIGkuZS4gaWYgdGhlICAjCisjIHVz
ZXIncyBjb2RlLCBhZnRlciBzZXR0aW5ncyByZXNvbHV0aW9uLCBoYXMgRXJyb3Igbm9kZXMuICAg
ICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2RlZiBpc0FT
VEVycm9uZW91cyhhc3QpCisgIG5vdCBhc3QuZmlsdGVyKEVycm9yKS5lbXB0eT8KK2VuZAorCisj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBhc3NlcnRDb25maWd1cmF0aW9uKGNv
bmNyZXRlU2V0dGluZ3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMKKyMgRW1pdHMgYSBjaGVjayB0aGF0IGFzc2VydHMgdGhhdCB3ZSdyZSB1c2luZyB0
aGUgZ2l2ZW4gY29uZmlndXJhdGlvbi4gIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKKworZGVmIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAgJG91dHB1
dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAkb3V0cHV0LnB1dHMg
IiNlbHNlIgorICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIkNvbmZpZ3VyYXRpb24gbWlzbWF0Y2gu
XCIiCisgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAjCisjIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3Ms
IGFzdCwgYmFja2VuZCkgeyAgICAgICAgICAgICMKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywg
YXN0LCBiYWNrZW5kIHwgLi4uIH0gICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIEVtaXRzIGFsbCByZWxldmFudCBndWFyZHMgdG8gc2VlIGlmIHRoZSBjb25maWd1
cmF0aW9uIGhvbGRzIGFuZCAgICAgICMKKyMgY2FsbHMgdGhlIGJsb2NrIGlmIHRoZSBjb25maWd1
cmF0aW9uIGlzIG5vdCBlcnJvbmVvdXMuICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKKworZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRl
U2V0dGluZ3MsIGFzdCwgYmFja2VuZCkKKyAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChj
b25jcmV0ZVNldHRpbmdzKQorICAKKyAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAgICRvdXRw
dXQucHV0cyAiI2Vycm9yIFwiSW52YWxpZCBjb25maWd1cmF0aW9uLlwiIgorICBlbHNpZiBub3Qg
V09SS0lOR19CQUNLRU5EUy5pbmNsdWRlPyBiYWNrZW5kCisgICAgJG91dHB1dC5wdXRzICIjZXJy
b3IgXCJUaGlzIGJhY2tlbmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UKKyAgICB5
aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICAkb3V0cHV0
LnB1dHMgIiNlbmRpZiIKK2VuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KSB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAjCisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwg
aW5kZXggfCAuLi4gfSAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBFbWl0
cyBndWFyZCBjb2RlcyBmb3IgYWxsIHZhbGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgY2FsbHMgdGhl
IGJsb2NrICAjCisjIGZvciB0aG9zZSBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSB2YWxpZCBhbmQg
bm90IGVycm9uZW91cy4gICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisKK2RlZiBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KQorICBmb3JFYWNoVmFs
aWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93
TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NU
ZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2
ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgJG91dHB1dC5wdXRzICIjZW5kaWYiCisgIH0KK2Vu
ZAorCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3Jt
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5z
Zm9ybS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNTIgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKKworIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMKKyMgbm9kZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisj
IENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBJZlRoZW5FbHNlIG5v
ZGVzIGJ5ICAgICAgICMKKyMgc3Vic3RpdHV0aW5nIGNvbmNyZXRlIGJvb2xlYW4gdmFsdWVzIGZv
ciBlYWNoIFNldHRpbmcuICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQor
ICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZVNl
dHRpbmdzKHNldHRpbmdzKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZQorICBkZWYg
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3Mg
RmFsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAor
ZW5kCisKK2NsYXNzIFNldHRpbmcKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAg
ICBzZXR0aW5nc1tAbmFtZV0uYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZAorICBkZWYg
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpLnZhbHVlIGFuZCBAcmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSku
YXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE9yCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgb3IgQHJp
Z2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAor
CitjbGFzcyBOb3QKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAobm90IEBj
aGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQK
KworY2xhc3MgSWZUaGVuRWxzZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAg
IGlmIEBwcmVkaWNhdGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZQorICAgICAgQHRo
ZW5DYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbHNlCisgICAgICBAZWxzZUNh
c2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFz
cyBTZXF1ZW5jZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG5ld0xpc3Qg
PSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGl0ZW0gPSBpdGVt
LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgIGlmIGl0ZW0uaXNfYT8gU2VxdWVuY2UK
KyAgICAgICAgbmV3TGlzdCArPSBpdGVtLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlz
dCA8PCBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4s
IG5ld0xpc3QpCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjIG5vZGUuZGVtYWNyb2lmeShtYWNyb3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMgbm9kZS5zdWJzdGl0dXRlKG1hcHBpbmcpICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIGRl
bWFjcm9pZnkoKSBjb25zdHJ1Y3RzIGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IE1h
Y3JvICAgICAgICMKKyMgbm9kZXMsIHdoaWxlIHN1YnN0aXR1dGUoKSByZXBsYWNlcyBWYXJpYWJs
ZSBub2RlcyB3aXRoIHRoZSBnaXZlbiAgICAgIworIyBub2RlcyBpbiB0aGUgbWFwcGluZy4gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiBkZW1hY3JvaWZ5KG1h
Y3JvcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLmRl
bWFjcm9pZnkobWFjcm9zKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZShtYXBw
aW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vi
c3RpdHV0ZShtYXBwaW5nKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZUxhYmVs
cyhtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hp
bGQuc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3Mg
TWFjcm8KKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBteU1hcHBpbmcgPSB7fQorICAg
IG1hcHBpbmcuZWFjaF9wYWlyIHsKKyAgICAgIHwga2V5LCB2YWx1ZSB8CisgICAgICB1bmxlc3Mg
QHZhcmlhYmxlcy5pbmNsdWRlPyBrZXkKKyAgICAgICAgbXlNYXBwaW5nW2tleV0gPSB2YWx1ZQor
ICAgICAgZW5kCisgICAgfQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAg
ICAgY2hpbGQuc3Vic3RpdHV0ZShteU1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFz
cyBWYXJpYWJsZQorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2Vs
Zl0KKyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisg
IGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFw
cGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxz
ZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBk
ZWYgc3Vic3RpdHV0ZShjb25zdGFudHMpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbXlDb25zdGFu
dHMgPSBjb25zdGFudHMuZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAg
ICAgaWYgaXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAgICAgbXlDb25zdGFudHNbaXRlbS52YXJp
YWJsZV0gPSBpdGVtLnZhbHVlLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICBlbHNlCisg
ICAgICAgIG5ld0xpc3QgPDwgaXRlbS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZW5k
CisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKKyAg
CisgIGRlZiByZW5hbWVMYWJlbHMoY29tbWVudCkKKyAgICBtYXBwaW5nID0ge30KKyAgICAKKyAg
ICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IExvY2Fs
TGFiZWwKKyAgICAgICAgbWFwcGluZ1tpdGVtXSA9IExvY2FsTGFiZWwudW5pcXVlKGlmIGNvbW1l
bnQgdGhlbiBjb21tZW50ICsgIl8iIGVsc2UgIiIgZW5kICsgaXRlbS5jbGVhbk5hbWUpCisgICAg
ICBlbmQKKyAgICB9CisgICAgCisgICAgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICBlbmQK
KyAgCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBteU1hY3JvcyA9IG1hY3Jvcy5kdXAK
KyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1h
Y3JvCisgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBpdGVtCisgICAgICBlbmQKKyAgICB9
CisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAg
ICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICAjIElnbm9yZS4KKyAgICAgIGVsc2lmIGl0
ZW0uaXNfYT8gTWFjcm9DYWxsCisgICAgICAgIG1hcHBpbmcgPSB7fQorICAgICAgICBteU15TWFj
cm9zID0gbXlNYWNyb3MuZHVwCisgICAgICAgIHJhaXNlICJDb3VsZCBub3QgZmluZCBtYWNybyAj
e2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgbXlNYWNyb3Nb
aXRlbS5uYW1lXQorICAgICAgICByYWlzZSAiQXJndW1lbnQgY291bnQgbWlzbWF0Y2ggZm9yIGNh
bGwgdG8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIGl0
ZW0ub3BlcmFuZHMuc2l6ZSA9PSBteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlcy5zaXplCisg
ICAgICAgIGl0ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgfCBpZHggfAorICAg
ICAgICAgIGlmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBWYXJpYWJsZSBhbmQgbXlNYWNyb3Nb
aXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9z
W2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jvc1tpdGVtLm9wZXJhbmRz
W2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJp
YWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2lmIGl0ZW0ub3BlcmFuZHNbaWR4
XS5pc19hPyBNYWNybworICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVd
LnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgICBt
YXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0u
dmFyaWFibGVzW2lkeF1dID0gbmlsCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0u
bmFtZV0udmFyaWFibGVzW2lkeF1dID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgZW5k
CisgICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCArPSBteU1hY3Jvc1tpdGVtLm5hbWVdLmJvZHku
c3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNyb3MpLnJlbmFtZUxhYmVscyhp
dGVtLm5hbWUpLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtLmRlbWFj
cm9pZnkobXlNYWNyb3MpCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVP
cmlnaW4sIG5ld0xpc3QpLnN1YnN0aXR1dGUoe30pCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIworIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjCisjIG5vZGUucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6
ZXMpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwor
IyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgaGFzIG9mZnNldCB2YWx1ZXMgaW5zdGVhZCBvZiBz
eW1ib2xpYyAgICAgICAjCisjIG9mZnNldHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNp
emVzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVz
b2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBT
dHJ1Y3RPZmZzZXQKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlm
IG9mZnNldHNbc2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0c1tz
ZWxmXSkKKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNz
IFNpemVvZgorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgc2l6
ZXNbc2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgc2l6ZXNbc2VsZl0pCisg
ICAgZWxzZQorICAgICAgcHV0cyAiQ291bGQgbm90IGZpbmQgI3tzZWxmLmluc3BlY3R9IGluICN7
c2l6ZXMua2V5cy5pbnNwZWN0fSIKKyAgICAgIHB1dHMgInNpemVzID0gI3tzaXplcy5pbnNwZWN0
fSIKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisj
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMKKyMgbm9kZS5mb2xkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCisjIFJlc29s
dmUgY29uc3RhbnQgcmVmZXJlbmNlcyBhbmQgY29tcHV0ZSBhcml0aG1ldGljIGV4cHJlc3Npb25z
LiAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK2NsYXNzIE5vZGUK
KyAgZGVmIGZvbGQKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNo
aWxkLmZvbGQKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMKKyAgZGVm
IGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAor
ICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4g
c2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29k
ZU9yaWdpbiwgQGxlZnQudmFsdWUgKyBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNz
IFN1YkltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBA
cmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJ
bW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQor
ICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgLSBAcmlnaHQudmFsdWUp
CisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVm
dCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxm
IHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJp
Z2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQu
dmFsdWUgKiBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0ZQor
ICBkZWYgZm9sZAorICAgIEBjaGlsZCA9IEBjaGlsZC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5s
ZXNzIEBjaGlsZC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4s
IC1AY2hpbGQudmFsdWUpCisgIGVuZAorZW5kCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjCisjIG5vZGUucmVzb2x2ZUFmdGVyU2V0dGluZ3Mob2Zmc2V0cywgc2l6ZXMpICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyBDb21waWxlIGFzc2Vt
Ymx5IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAj
CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitjbGFzcyBOb2RlCisgIGRlZiBy
ZXNvbHZlKG9mZnNldHMsIHNpemVzKQorICAgIGRlbWFjcm9pZnkoe30pLnJlc29sdmVPZmZzZXRz
KG9mZnNldHMsIHNpemVzKS5mb2xkCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjczIEBACisj
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitjbGFzcyBSZWdpc3RlcklECisg
IGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEw
IiwgInIwIiwgInQxIiwgImExIiwgInIxIiwgInQyIiwgInQzIgorICAgICAgdHJ1ZQorICAgIHdo
ZW4gInQ0IiwgImNmciIKKyAgICAgIGZhbHNlCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBl
bmQKKyAgZW5kCisgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIGNhc2UgbmFtZQorICAg
IHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRl
CisgICAgICAgICIlYWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlYXgiCisgICAgICB3
aGVuIDppbnQKKyAgICAgICAgIiVlYXgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAg
ICBlbmQKKyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgIGNhc2Uga2luZAorICAgICAg
d2hlbiA6Ynl0ZQorICAgICAgICAiJWRsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWR4
IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWR4IgorICAgICAgZWxzZQorICAgICAgICBy
YWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDIiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdo
ZW4gOmJ5dGUKKyAgICAgICAgIiVjbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVjeCIK
KyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVjeCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFp
c2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQzIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVu
IDpieXRlCisgICAgICAgICIlYmwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlYngiCisg
ICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYngiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNl
CisgICAgICBlbmQKKyAgICB3aGVuICJ0NCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6
Ynl0ZQorICAgICAgICAiJXNpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVzaSIKKyAg
ICAgIHdoZW4gOmludAorICAgICAgICAiJWVzaSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UK
KyAgICAgIGVuZAorICAgIHdoZW4gImNmciIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6
Ynl0ZQorICAgICAgICAiJWRpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVkaSIKKyAg
ICAgIHdoZW4gOmludAorICAgICAgICAiJWVkaSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UK
KyAgICAgIGVuZAorICAgIHdoZW4gInNwIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpi
eXRlCisgICAgICAgICIlc3BsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNwIgorICAg
ICAgd2hlbiA6aW50CisgICAgICAgICIlZXNwIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQor
ICAgICAgZW5kCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4
ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitl
bmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgcmFp
c2UgdW5sZXNzIGtpbmQgPT0gOmRvdWJsZQorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIs
ICJmYTAiLCAiZnIiCisgICAgICAiJXhtbTAiCisgICAgd2hlbiAiZnQxIiwgImZhMSIKKyAgICAg
ICIleG1tMSIKKyAgICB3aGVuICJmdDIiLCAiZmEyIgorICAgICAgIiV4bW0yIgorICAgIHdoZW4g
ImZ0MyIsICJmYTMiCisgICAgICAiJXhtbTMiCisgICAgd2hlbiAiZnQ0IgorICAgICAgIiV4bW00
IgorICAgIHdoZW4gImZ0NSIKKyAgICAgICIleG1tNSIKKyAgICBlbHNlCisgICAgICByYWlzZQor
ICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9w
ZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIHg4Nk9w
ZXJhbmQoa2luZCkKKyAgICAiJCN7dmFsdWV9IgorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5k
KGtpbmQpCisgICAgIiN7dmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGRl
ZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVy
YW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0p
IgorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQo
a2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgZGVmIHN1cHBvcnRzOEJp
dE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAg
ICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSwgI3tpbmRleC54ODZP
cGVyYW5kKDppbnQpfSwgI3tzY2FsZX0pIgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQo
a2luZCkKKyAgICAiKiN7eDg2b3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFi
c29sdXRlQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAor
ICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje2FkZHJlc3MudmFsdWV9IgorICBl
bmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7YWRkcmVzcy52YWx1ZX0i
CisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgIGRlZiB4ODZMYWJlbAorICAg
IHNhbml0aXplTGFiZWxOYW1lKG5hbWUpCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2lu
ZCkKKyAgICB4ODZMYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNl
CisgIGRlZiB4ODZMYWJlbAorICAgICJMX29mZmxpbmVhc21fIituYW1lWzEuLi0xXQorICBlbmQK
KyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgeDg2TGFiZWwKKyAgZW5kCitlbmQKKwor
Y2xhc3MgSW5zdHJ1Y3Rpb24KKyAgZGVmIHg4Nk9wZXJhbmRzKCpraW5kcykKKyAgICByYWlzZSB1
bmxlc3Mga2luZHMuc2l6ZSA9PSBvcGVyYW5kcy5zaXplCisgICAgcmVzdWx0ID0gW10KKyAgICBr
aW5kcy5zaXplLnRpbWVzIHsKKyAgICAgIHwgaWR4IHwKKyAgICAgIHJlc3VsdCA8PCBvcGVyYW5k
c1tpZHhdLng4Nk9wZXJhbmQoa2luZHNbaWR4XSkKKyAgICB9CisgICAgcmVzdWx0LmpvaW4oIiwg
IikKKyAgZW5kCisKKyAgZGVmIHg4NlN1ZmZpeChraW5kKQorICAgIGNhc2Uga2luZAorICAgIHdo
ZW4gOmJ5dGUKKyAgICAgICJiIgorICAgIHdoZW4gOmhhbGYKKyAgICAgICJ3IgorICAgIHdoZW4g
OmludAorICAgICAgImwiCisgICAgd2hlbiA6ZG91YmxlCisgICAgICAic2QiCisgICAgZWxzZQor
ICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3BXaXRoTnVt
T3BlcmFuZHMob3Bjb2RlLCBraW5kLCBudW1PcGVyYW5kcykKKyAgICBpZiBudW1PcGVyYW5kcyA9
PSAzCisgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1
dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFu
ZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNpZiBvcGVyYW5kc1sxXSA9PSBvcGVy
YW5kc1syXQorICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBl
bHNlCisgICAgICAgICRhc20ucHV0cyAiXHRtb3Yje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
a2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5kCisgICAg
ZWxzZQorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoa2luZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcChvcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2T3BX
aXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXplKQorICBlbmQKKyAgCisg
IGRlZiBoYW5kbGVYODZTaGlmdChvcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNf
YT8gSW1tZWRpYXRlIG9yIG9wZXJhbmRzWzBdID09IFJlZ2lzdGVySUQuZm9yTmFtZShuaWwsICJ0
MiIpCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAg
ICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAl
ZWN4IgorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAlY2wsICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZChraW5kKX0iCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKGJyYW5jaE9wY29kZSwgbW9kZSkKKyAgICBjYXNlIG1vZGUKKyAgICB3
aGVuIDpub3JtYWwKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisg
ICAgd2hlbiA6cmV2ZXJzZQorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUp
fSIKKyAgICBlbHNlCisgICAgICByYWlzZSBtb2RlLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNt
LnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICBlbmQK
KyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlKG9wY29kZVN1ZmZpeCwga2luZCkKKyAgICBp
ZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDAg
YW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUi
IG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1
ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNpZiBv
cGVyYW5kc1sxXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzFdLnZhbHVlID09IDAgYW5k
IG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9y
IG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZp
eChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAg
ICAkYXNtLnB1dHMgIlx0Y21wI3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZChraW5kKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludEJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisg
ICAgaGFuZGxlWDg2SW50Q29tcGFyZShicmFuY2hPcGNvZGVbMS4uLTFdLCBraW5kKQorICAgICRh
c20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgIGVu
ZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmQpCisgICAgaWYgb3Bl
cmFuZC5zdXBwb3J0czhCaXRPblg4NgorICAgICAgJGFzbS5wdXRzICJcdCN7c2V0T3Bjb2RlfSAj
e29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnpibCAj
e29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5k
KDppbnQpfSwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHQje3NldE9wY29kZX0gJWFsIgorICAg
ICAgJGFzbS5wdXRzICJcdG1vdnpibCAlYWwsICVlYXgiCisgICAgICAkYXNtLnB1dHMgIlx0eGNo
Z2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlU2V0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5k
bGVYODZJbnRDb21wYXJlKHNldE9wY29kZVszLi4tMV0sIGtpbmQpCisgICAgaGFuZGxlWDg2U2V0
KHNldE9wY29kZSwgb3BlcmFuZHNbMl0pCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlRlc3Qo
a2luZCkKKyAgICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisg
ICAgd2hlbiAyCisgICAgICBtYXNrID0gSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtMSkKKyAg
ICB3aGVuIDMKKyAgICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICAgIGVsc2UKKyAgICAgIHJhaXNl
ICJFeHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMsIGJ1dCBnb3QgI3tvcGVyYW5kcy5zaXplfSBhdCAj
e2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICAgIAorICAgIGlmIG1hc2suaXNfYT8gSW1t
ZWRpYXRlIGFuZCBtYXNrLnZhbHVlID09IC0xCisgICAgICBpZiB2YWx1ZS5pc19hPyBSZWdpc3Rl
cklECisgICAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7dmFsdWUu
eDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNl
CisgICAgICAgICRhc20ucHV0cyAiXHRjbXAje3g4NlN1ZmZpeChraW5kKX0gJDAsICN7dmFsdWUu
eDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMg
Ilx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje21hc2sueDg2T3BlcmFuZChraW5kKX0sICN7dmFs
dWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4
NkJyYW5jaFRlc3QoYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkK
KyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHMubGFzdC54ODZMYWJl
bH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldFRlc3Qoc2V0T3Bjb2RlLCBraW5kKQor
ICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVy
YW5kcy5sYXN0KQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcEJyYW5jaChvcGNvZGUsIGJy
YW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUs
IGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdo
ZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgd2hlbiAzCisgICAgICBq
dW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICByYWlzZSBzZWxmLmluc3Bl
Y3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7anVtcFRhcmdl
dC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlN1YkJyYW5jaChicmFuY2hP
cGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSA0IGFuZCBvcGVyYW5kc1sxXSA9
PSBvcGVyYW5kc1syXQorICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxz
ZQorICAgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMoInN1YiN7eDg2U3VmZml4KGtpbmQp
fSIsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGVuZAorICAgIGNhc2Ugb3BlcmFuZHMu
c2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgd2hl
biAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICByYWlz
ZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9
ICN7anVtcFRhcmdldC54ODZMYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGxvd2VyWDg2CisgICAg
JGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICBjYXNlIG9wY29kZQorICAgIHdoZW4g
ImFkZGkiLCAiYWRkcCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNb
MF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19h
PyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdp
c3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAgICAgICB1bmxl
c3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICRhc20ucHV0cyAiXHRt
b3ZsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAkYXNt
LnB1dHMgIlx0bGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgZW5k
CisgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJl
Z2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVy
SUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAg
ICAgICAgJGFzbS5wdXRzICJcdGxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0s
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWws
IDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3t4ODZPcGVy
YW5kcyg6aW50LCA6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAgd2hlbiAiYW5k
aSIsICJhbmRwIgorICAgICAgaGFuZGxlWDg2T3AoImFuZGwiLCA6aW50KQorICAgIHdoZW4gImxz
aGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2FsbCIsIDppbnQpCisgICAgd2hlbiAibXVs
aSIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1t
ZWRpYXRlCisgICAgICAgICRhc20ucHV0cyAiXHRpbXVsbCAje3g4Nk9wZXJhbmRzKDppbnQsIDpp
bnQsIDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgIyBGSVhNRTogY291bGQgZG8gc29tZSBw
ZWVwaG9sZSBpbiBjYXNlIHRoZSBsZWZ0IG9wZXJhbmQgaXMgaW1tZWRpYXRlIGFuZCBpdCdzCisg
ICAgICAgICMgYSBwb3dlciBvZiB0d28uCisgICAgICAgIGhhbmRsZVg4Nk9wKCJpbXVsbCIsIDpp
bnQpCisgICAgICBlbmQKKyAgICB3aGVuICJuZWdpIgorICAgICAgJGFzbS5wdXRzICJcdG5lZ2wg
I3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAibm90aSIKKyAgICAgICRhc20ucHV0cyAi
XHRub3RsICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm9yaSIsICJvcnAiCisgICAg
ICBoYW5kbGVYODZPcCgib3JsIiwgOmludCkKKyAgICB3aGVuICJyc2hpZnRpIgorICAgICAgaGFu
ZGxlWDg2U2hpZnQoInNhcmwiLCA6aW50KQorICAgIHdoZW4gInVyc2hpZnRpIgorICAgICAgaGFu
ZGxlWDg2U2hpZnQoInNocmwiLCA6aW50KQorICAgIHdoZW4gInN1YmkiLCAic3VicCIKKyAgICAg
IGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAg
ICAgICAgJGFzbS5wdXRzICJcdG5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQp
fSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAg
aGFuZGxlWDg2T3AoInN1YmwiLCA6aW50KQorICAgICAgZW5kCisgICAgd2hlbiAieG9yaSIsICJ4
b3JwIgorICAgICAgaGFuZGxlWDg2T3AoInhvcmwiLCA6aW50KQorICAgIHdoZW4gImxvYWRpIiwg
InN0b3JlaSIsICJsb2FkcCIsICJzdG9yZXAiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje3g4
Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICB3aGVuICJsb2FkYiIKKyAgICAgICRhc20ucHV0
cyAiXHRtb3Z6YmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGgiCisgICAgICAkYXNtLnB1dHMg
Ilx0bW92endsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAi
XHRtb3ZiICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0iCisgICAgd2hlbiAibG9hZGQiLCAi
bW92ZWQiLCAic3RvcmVkIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNkICN7eDg2T3BlcmFuZHMo
OmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImFkZGQiCisgICAgICAkYXNtLnB1dHMgIlx0
YWRkc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAiZGl2ZCIK
KyAgICAgICRhc20ucHV0cyAiXHRkaXZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUp
fSIKKyAgICB3aGVuICJzdWJkIgorICAgICAgJGFzbS5wdXRzICJcdHN1YnNkICN7eDg2T3BlcmFu
ZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gIm11bGQiCisgICAgICAkYXNtLnB1dHMg
Ilx0bXVsc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3Fy
dGQiCisgICAgICAkYXNtLnB1dHMgIlx0c3FydHNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAi
Y2kyZCIKKyAgICAgICRhc20ucHV0cyAiXHRjdnRzaTJzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4g
ImJkZXEiCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZGVxIikKKyAg
ICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMg
Ilx0anAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4Nkxh
YmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3Jp
Z2luLCBvcGVyYW5kc1syXSkueDg2TGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4
NiIpCisgICAgd2hlbiAiYmRuZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpuZSIs
IDpub3JtYWwpCisgICAgd2hlbiAiYmRndCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgi
amEiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJy
YW5jaCgiamFlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0IgorICAgICAgaGFuZGxlWDg2RG91
YmxlQnJhbmNoKCJqYSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHRlcSIKKyAgICAgIGhhbmRs
ZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRlcXVuIgorICAg
ICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRuZXF1
biIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4iKQorICAg
ICAgaXNFcXVhbCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgICRhc20ucHV0
cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0anAgI3tMYWJl
bFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLng4NkxhYmVsfSIKKyAgICAg
ICRhc20ucHV0cyAiXHRqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc0VxdWFs
KS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICAgICRhc20u
cHV0cyAiXHRqbXAgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICBpc0VxdWFsLmxvd2Vy
KCJYODYiKQorICAgIHdoZW4gImJkZ3R1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgi
amIiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJs
ZUJyYW5jaCgiamJlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdHVuIgorICAgICAgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKCJqYiIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRsdGVxdW4iCisgICAg
ICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYnRkMmki
CisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1
dHMgIlx0Y21wbCAkMHg4MDAwMDAwMCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgICAgJGFzbS5wdXRzICJcdGplICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgIHdoZW4g
InRkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hl
biAiYmNkMmkiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAkYXNtLnB1dHMgIlx0dGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje29w
ZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnRzaTJzZCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHR1Y29t
aXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFz
bS5wdXRzICJcdGpwICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJc
dGpuZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJtb3ZkeiIKKyAgICAgICRh
c20ucHV0cyAiXHR4b3JwZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gInBvcCIKKyAgICAgICRh
c20ucHV0cyAiXHRwb3AgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVu
ICJwdXNoIgorICAgICAgJGFzbS5wdXRzICJcdHB1c2ggI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgaWYgSW1t
ZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBS
ZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHR4b3JsICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNp
ZiBvcGVyYW5kc1swXSAhPSBvcGVyYW5kc1sxXQorICAgICAgICAkYXNtLnB1dHMgIlx0bW92bCAj
e3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgIGVuZAorICAgIHdoZW4gIm5vcCIKKyAg
ICAgICRhc20ucHV0cyAiXHRub3AiCisgICAgd2hlbiAiYmllcSIsICJicGVxIgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqZSIsIDppbnQpCisgICAgd2hlbiAiYmluZXEiLCAiYnBuZXEiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDppbnQpCisgICAgd2hlbiAiYmlhIiwgImJw
YSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6aW50KQorICAgIHdoZW4gImJpYWVx
IiwgImJwYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6aW50KQorICAgIHdo
ZW4gImJpYiIsICJicGIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmludCkKKyAg
ICB3aGVuICJiaWJlcSIsICJicGJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwg
OmludCkKKyAgICB3aGVuICJiaWd0IiwgImJwZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpnIiwgOmludCkKKyAgICB3aGVuICJiaWd0ZXEiLCAiYnBndGVxIgorICAgICAgaGFuZGxlWDg2
SW50QnJhbmNoKCJqZ2UiLCA6aW50KQorICAgIHdoZW4gImJpbHQiLCAiYnBsdCIKKyAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiamwiLCA6aW50KQorICAgIHdoZW4gImJpbHRlcSIsICJicGx0ZXEi
CisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsZSIsIDppbnQpCisgICAgd2hlbiAiYmJlcSIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYm5lcSIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhIgor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDpieXRlKQorICAgIHdoZW4gImJiYWVxIgor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmIiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiZXEiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRlKQorICAgIHdoZW4gImJiZ3QiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJndGVxIgor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0Igor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDpieXRlKQorICAgIHdoZW4gImJibHRlcSIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGlv
IiwgImJ0cG8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDppbnQpCisgICAgd2hl
biAiYnRpcyIsICJidHBzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6aW50KQor
ICAgIHdoZW4gImJ0aXoiLCAiYnRweiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6Iiwg
OmludCkKKyAgICB3aGVuICJidGlueiIsICJidHBueiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRl
c3QoImpueiIsIDppbnQpCisgICAgd2hlbiAiYnRibyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRl
c3QoImpvIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRicyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRl
c3QoImpzIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRieiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRl
c3QoImp6IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRibnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hU
ZXN0KCJqbnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJqbXAiCisgICAgICAkYXNtLnB1dHMgIlx0am1w
ICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJhZGRpbyIs
ICJiYWRkcG8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbyIsIDppbnQpCisg
ICAgd2hlbiAiYmFkZGlzIiwgImJhZGRwcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRs
IiwgImpzIiwgOmludCkKKyAgICB3aGVuICJiYWRkaXoiLCAiYmFkZHB6IgorICAgICAgaGFuZGxl
WDg2T3BCcmFuY2goImFkZGwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJhZGRpbnoiLCAiYmFk
ZHBueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpueiIsIDppbnQpCisgICAg
d2hlbiAiYnN1YmlvIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbyIsIDppbnQpCisgICAg
d2hlbiAiYnN1YmlzIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqcyIsIDppbnQpCisgICAg
d2hlbiAiYnN1Yml6IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqeiIsIDppbnQpCisgICAg
d2hlbiAiYnN1YmlueiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam56IiwgOmludCkKKyAg
ICB3aGVuICJibXVsaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAiam8iLCA6
aW50KQorICAgIHdoZW4gImJtdWxpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIs
ICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm11bGl6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2go
ImltdWxsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJibXVsaW56IgorICAgICAgaGFuZGxlWDg2
T3BCcmFuY2goImltdWxsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYm9yaW8iCisgICAgICBo
YW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJib3JpcyIKKyAg
ICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJvcml6
IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAi
Ym9yaW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqbnoiLCA6aW50KQorICAg
IHdoZW4gImJyZWFrIgorICAgICAgJGFzbS5wdXRzICJcdGludCAkMyIKKyAgICB3aGVuICJjYWxs
IgorICAgICAgJGFzbS5wdXRzICJcdGNhbGwgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6
aW50KX0iCisgICAgd2hlbiAicmV0IgorICAgICAgJGFzbS5wdXRzICJcdHJldCIKKyAgICB3aGVu
ICJjaWVxIiwgImNwZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRlIiwgOmlu
dCkKKyAgICB3aGVuICJjaW5lcSIsICJjcG5lcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVT
ZXQoInNldG5lIiwgOmludCkKKyAgICB3aGVuICJjaWEiLCAiY3BhIgorICAgICAgaGFuZGxlWDg2
SW50Q29tcGFyZVNldCgic2V0YSIsIDppbnQpCisgICAgd2hlbiAiY2lhZXEiLCAiY3BhZXEiCisg
ICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRhZSIsIDppbnQpCisgICAgd2hlbiAiY2li
IiwgImNwYiIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGIiLCA6aW50KQorICAg
IHdoZW4gImNpYmVxIiwgImNwYmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
YmUiLCA6aW50KQorICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgIGhhbmRsZVg4NkludENv
bXBhcmVTZXQoInNldGciLCA6aW50KQorICAgIHdoZW4gImNpZ3RlcSIsICJjcGd0ZXEiCisgICAg
ICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnZSIsIDppbnQpCisgICAgd2hlbiAiY2lsdCIs
ICJjcGx0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bCIsIDppbnQpCisgICAg
d2hlbiAiY2lsdGVxIiwgImNwbHRlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNl
dGxlIiwgOmludCkKKyAgICB3aGVuICJ0aW8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRv
IiwgOmludCkKKyAgICB3aGVuICJ0aXMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwg
OmludCkKKyAgICB3aGVuICJ0aXoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmlu
dCkKKyAgICB3aGVuICJ0aW56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6aW50
KQorICAgIHdoZW4gInRibyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6Ynl0ZSkK
KyAgICB3aGVuICJ0YnMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmJ5dGUpCisg
ICAgd2hlbiAidGJ6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDpieXRlKQorICAg
IHdoZW4gInRibnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDpieXRlKQorICAg
IHdoZW4gInBlZWsiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzBdLnZhbHVl
ICogNH0oJWVzcCksICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAi
cG9rZSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
aW50KX0sICN7b3BlcmFuZHNbMV0udmFsdWUgKiA0fSglZXNwKSIKKyAgICB3aGVuICJjZHFpIgor
ICAgICAgJGFzbS5wdXRzICJcdGNkcSIKKyAgICB3aGVuICJpZGl2aSIKKyAgICAgICRhc20ucHV0
cyAiXHRpZGl2bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImZp
aTJkIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpp
bnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0
cyAiXHRtb3ZkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAg
JGFzbS5wdXRzICJcdHBzbGxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cG9yICV4
bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImZkMmlp
IgorICAgICAgJGFzbS5wdXRzICJcdG1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAi
XHRtb3ZzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAg
ICRhc20ucHV0cyAiXHRwc3JscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNk
ICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAg
IHJhaXNlICJCYWQgb3Bjb2RlOiAje29wY29kZX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lh
bGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKyNkZWZpbmUgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZF9oCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBD
b2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkocmV2aXNpb24gMTA2MDQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQ29tbW9uU2xvd1BhdGhzX2gK
IAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktp
bmQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5o
IgogCkBAIC00MSw2ICs0MiwzOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIENvbW1v
blNsb3dQYXRocyB7CiAKK0FMV0FZU19JTkxJTkUgRXhlY1N0YXRlKiBhcml0eUNoZWNrRm9yKEV4
ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGV4
ZWMtPmNhbGxlZSgpKTsKKyAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7Cisg
ICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2Vu
ZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzID0gZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKKworICAgIC8vIFRoaXMg
ZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8g
YXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgorICAgIGlmICghcmVnaXN0ZXJGaWxlLT5n
cm93KGV4ZWMtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBu
ZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKKyAgICAgICAgcmV0dXJuIDA7CisK
KyAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSk7CisKKyAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwg
ZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGgg
dW5kZWZpbmVkLgorICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CisgICAgUmVnaXN0ZXIqIHNyYyA9IGV4
ZWMtPnJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyKiBkc3QgPSBleGVjLT5yZWdpc3RlcnMoKSAr
IGRlbHRhOworCisgICAgaW50IGk7CisgICAgaW50IGVuZCA9IC1FeGVjU3RhdGU6Om9mZnNldEZv
cihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgZm9yIChpID0gLTE7IGkgPj0gZW5k
OyAtLWkpCisgICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKKworICAgIGVuZCAtPSBkZWx0YTsKKyAg
ICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7
CisKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBFeGVjU3RhdGU6OmNyZWF0ZShkc3QpOworICAg
IEFTU0VSVCgodm9pZCopbmV3RXhlYyA8PSByZWdpc3RlckZpbGUtPmVuZCgpKTsKKyAgICByZXR1
cm4gbmV3RXhlYzsKK30KKwogQUxXQVlTX0lOTElORSBib29sIG9wSW5zdGFuY2VPZlNsb3coRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGJhc2VWYWwsIEpTVmFsdWUgcHJv
dG8pCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0NlbGwoKSB8fCAhYmFzZVZhbC5pc0NlbGwoKSB8
fCAhcHJvdG8uaXNDZWxsKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBA
QAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCisjaW5jbHVkZSAiRXhlY3V0aW9uSGFybmVzcy5oIgog
I2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVERyaXZlci5oIgogI2luY2x1ZGUgIlBhcnNl
ci5oIgpAQCAtODQsNyArODUsNyBAQCBJbnRyaW5zaWMgTmF0aXZlRXhlY3V0YWJsZTo6aW50cmlu
c2ljKCkgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIHZvaWQgamV0dGlzb25Db2RlQmxv
Y2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8VD4mIGNvZGVCbG9jaykKIHsKLSAg
ICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQp
OworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5nZXRKSVRU
eXBlKCkpKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKICAgICBPd25Q
dHI8VD4gY29kZUJsb2NrVG9KZXR0aXNvbiA9IGNvZGVCbG9jay5yZWxlYXNlKCk7CiAgICAgY29k
ZUJsb2NrID0gc3RhdGljX3BvaW50ZXJfY2FzdDxUPihjb2RlQmxvY2tUb0pldHRpc29uLT5yZWxl
YXNlQWx0ZXJuYXRpdmUoKSk7CkBAIC0xNjcsOSArMTY4LDMwIEBAIEpTT2JqZWN0KiBFdmFsRXhl
Y3V0YWJsZTo6Y29tcGlsZU9wdGltaXoKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRXZh
bEV4ZWN1dGFibGU6OmppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAg
IGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9ldmFs
Q29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOwor
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCitpbmxpbmUgY29uc3QgY2hh
ciogc2FtcGxpbmdEZXNjcmlwdGlvbihKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisgICAg
c3dpdGNoIChqaXRUeXBlKSB7CisgICAgY2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rOgor
ICAgICAgICByZXR1cm4gIkludGVycHJldGVyIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNh
c2UgSklUQ29kZTo6QmFzZWxpbmVKSVQ6CisgICAgICAgIHJldHVybiAiQmFzZWxpbmUgQ29tcGls
YXRpb24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6CisgICAgICAgIHJldHVy
biAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIEpTT2JqZWN0
KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVD
aGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0g
ICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNl
bGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRp
b24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5n
RGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNF
RF9QQVJBTShqaXRUeXBlKTsKQEAgLTIxMCw3ICsyMzIsNyBAQCBKU09iamVjdCogRXZhbEV4ZWN1
dGFibGU6OmNvbXBpbGVJbnRlcm5hCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAo
IWppdENvbXBpbGVJZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1f
aml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbigq
Z2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtMjk1LDkgKzMxNywxNSBAQCBKU09iamVj
dCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpCiAgICAgcmV0dXJuIGVycm9yOwogfQog
Cit2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2Jh
bERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90
dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwog
SlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBl
eGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0
VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJ
VENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRG
RyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdp
b24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQp
CiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtMzM2LDcgKzM2NCw3IEBAIEpTT2JqZWN0
KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGUKICAgICB9CiAKICNpZiBFTkFCTEUoSklU
KQotICAgIGlmICghaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoKmdsb2JhbERhdGEsIG1fcHJvZ3Jh
bUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJl
Rm9yRXhlY3V0aW9uKCpnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZv
ckNhbGwsIGppdFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC00MTIsNyAr
NDQwLDcgQEAgRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6YgogICAgIHdo
aWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0
PEZ1bmN0aW9uQ29kZUJsb2NrKj4ocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKTsKICAgICBBU1NFUlQo
cmVzdWx0KTsKLSAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFz
ZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdl
dEpJVFR5cGUoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQzOCw2ICs0NjYsMTgg
QEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZU9wdAogICAgIHJldHVybiBl
cnJvcjsKIH0KIAordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDYWxsKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVG
dW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2pp
dENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFi
bGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7Cit9CisKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ29u
c3RydWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGpp
dENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JD
b25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0
aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEZ1bmN0aW9uQ29kZUJsb2Nr
KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja1dpdGhCeXRlY29kZUZvcihDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9
IGJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwpAQCAtNDgyLDcgKzUyMiw3IEBAIFBhc3NPd25Q
dHI8RnVuY3Rpb25Db2RlQmxvY2s+IEZ1bmN0aW9uRXgKIAogSlNPYmplY3QqIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hh
aW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAg
IFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxp
bmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9u
IChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rl
c2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CkBAIC01MDQsNyArNTQ0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNhbGwt
PnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29t
cGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2Nr
Rm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNr
LCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4
ZWN1dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2Rl
Rm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBq
aXRUeXBlLCBDb2RlRm9yQ2FsbCkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTUy
NCw3ICs1NjQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAK
IEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5h
bChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29k
ZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9u
KGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24g
KFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lv
biBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNp
ZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC01NDYsNyArNTg2
LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIG1fc3lt
Ym9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+c2hhcmVkU3ltYm9sVGFibGUoKTsK
IAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJp
YXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29k
ZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3lt
Ym9sVGFibGUsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZv
ckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9s
VGFibGUsIGppdFR5cGUsIENvZGVGb3JDb25zdHJ1Y3QpKQogICAgICAgICByZXR1cm4gMDsKICNl
bmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRXhlY3V0
YWJsZV9oCiAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXph
dGlvbktpbmQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtMzksMTIgKzQwLDEyIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIGNsYXNzIERlYnVnZ2VyOwogICAgIGNsYXNzIEV2YWxDb2RlQmxvY2s7CiAgICAg
Y2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7
CiAKICAgICBzdHJ1Y3QgRXhjZXB0aW9uSW5mbzsKICAgICAKLSAgICBlbnVtIENvZGVTcGVjaWFs
aXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogICAgIGVudW0g
Q29tcGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9u
IH07CiAKICAgICBpbmxpbmUgYm9vbCBpc0NhbGwoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQpAQCAtMzE5LDYgKzMyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFz
cyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5
cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC0zMzgsNiArMzQwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlz
b25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUo
SlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBFdmFsQ29kZUJsb2NrJiBnZW5lcmF0
ZWRCeXRlY29kZSgpCkBAIC0zODQsNiArMzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsK
IAogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUg
eworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1Ymxp
YzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTQxMSw2ICs0
MTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAg
ICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZv
aWQgaml0Q29tcGlsZShKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIFByb2dyYW1D
b2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkKQEAgLTQ1Myw2ICs0NTgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRF
eGVjdXRhYmxlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYg
U2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC01MDgsNiArNTE0LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRp
bWl6ZWRDb2RlRm9yQ2FsbChKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxl
Rm9yQ2FsbChKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0
ZWRGb3JDYWxsKCkgY29uc3QKQEAgLTUzNSw2ICs1NDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENv
ZGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZv
ckNvbnN0cnVjdChKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5l
cmF0ZWRGb3JDb25zdHJ1Y3QoKSBjb25zdApAQCAtNTgyLDYgKzU5MCwxNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgICAgICBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3Qo
Z2xvYmFsRGF0YSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IHZvaWQgaml0Q29tcGlsZUZvcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGtpbmQgPT0gQ29k
ZUZvckNhbGwpIHsKKyAgICAgICAgICAgICAgICBqaXRDb21waWxlRm9yQ2FsbChnbG9iYWxEYXRh
KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBB
U1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgICAgIGppdENvbXBpbGVG
b3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICAKICAg
ICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVz
cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRXhlY3V0aW9uSGFybmVz
c19oCisjZGVmaW5lIEV4ZWN1dGlvbkhhcm5lc3NfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3Jt
Lmg+CisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiSklURHJpdmVyLmgiCisjaW5jbHVk
ZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlw
ZW5hbWUgQ29kZUJsb2NrVHlwZT4KK2lubGluZSBib29sIHByZXBhcmVGb3JFeGVjdXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywg
SklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworI2lmIEVOQUJM
RShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAg
ICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAg
IExMSW50OjpnZXRFbnRyeXBvaW50KGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29k
ZSk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZiAvLyBFTkFC
TEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEs
IGNvZGVCbG9jaywgaml0Q29kZSwgaml0VHlwZSk7Cit9CisKK2lubGluZSBib29sIHByZXBhcmVG
dW5jdGlvbkZvckV4ZWN1dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxGdW5j
dGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxlKiYgc3lt
Ym9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGlu
ZUNvZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwg
aW50ZXJwcmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQoZ2xvYmFs
RGF0YSwga2luZCwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgY29k
ZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGtpbmQpOwor
I2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUZ1bmN0aW9uSWZB
cHByb3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdENvZGVXaXRoQXJp
dHlDaGVjaywgc3ltYm9sVGFibGUsIGppdFR5cGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MK
KworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKKyNlbmRpZiAvLyBFeGVjdXRpb25IYXJuZXNzX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJ
KHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0
aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0
ZXJBcnJheSA9IGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPltyZWdpc3Rl
ckFycmF5U2l6ZV0pOwogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVycyA9
IHJlZ2lzdGVyQXJyYXkuZ2V0KCkgKyByZWdpc3Rlck9mZnNldDsKLQorICAgICAgICAKICAgICAg
ICAgLy8gQ29weSBhbGwgYXJndW1lbnRzIHRoYXQgY2FuIGJlIGNhcHR1cmVkIGJ5IG5hbWUgb3Ig
YnkgdGhlIGFyZ3VtZW50cyBvYmplY3QuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9u
dW1DYXB0dXJlZEFyZ3M7ICsraSkgewogICAgICAgICAgICAgaW50IGluZGV4ID0gQ2FsbEZyYW1l
Ojphcmd1bWVudE9mZnNldChpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIAogICAgIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmll
cjxVbmtub3duPiB7CiAgICAgICAgIHR5cGVkZWYgV3JpdGVCYXJyaWVyPFVua25vd24+IEJhc2U7
CkBAIC0xMjIsNiArMTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNz
IEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAK
ICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9y
OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OworICAgIGNsYXNzIFN0cnVjdHVyZTsKIAog
ICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllcywKQEAgLTE2NCw2ICsxNjUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAgICAgICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYg
KzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAg
ICAgY2xhc3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwog
ICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0xNDAsNiArMTQx
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAg
c3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0
IElkZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0
MSw4IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICAsIGtl
eXdvcmRzKGFkb3B0UHRyKG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRlcnByZXRlcigw
KQogICAgICwgaGVhcCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFzc0luZm8oJkpT
QXJyYXk6OnNfaW5mbykKKyAgICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpTRmluYWxPYmpl
Y3Q6OnNfaW5mbykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxhc3RTY3JhdGNo
QnVmZmVyKDApCiAjZW5kaWYKQEAgLTIxNiw3ICsyMTgsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xv
YmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1
bmtzKHRoaXMpKTsKICNlbmRpZgogCi0gICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUodGhpcy0+
Y2FuVXNlSklUKCkpOworICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKCZsbGludERhdGEsIHRo
aXMtPmNhblVzZUpJVCgpKTsKIAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xsZWN0KCk7CiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAko
cmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNiBAQAogI2RlZmluZSBKU0ds
b2JhbERhdGFfaAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oIgot
I2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAj
aW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNs
dWRlICJTdHJvbmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJKSVRTdHVi
cy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNs
dWRlICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1
ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJUaW1lb3V0
Q2hlY2tlci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYgKzY2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmpl
Y3Q7CiAgICAgY2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmE7CiAg
ICAgY2xhc3MgUmVnRXhwQ2FjaGU7CkBAIC0yNDEsNiArMjQzLDEyIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247CisKKyAg
ICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOworICAgICAgICBj
b25zdCBDbGFzc0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CisKKyAgICAgICAg
TExJbnQ6OkRhdGEgbGxpbnREYXRhOworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgUmV0dXJu
QWRkcmVzc1B0ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBob3N0Q2FsbFJl
dHVyblZhbHVlOwpAQCAtMzQ2LDYgKzM1NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogI3VuZGVmIHJl
Z2lzdGVyVHlwZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNHbG9iYWxE
YXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKICAgICAgICAg
c3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAg
dm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90
eXBlOwogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7
CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUVycm9y
Q29uc3RydWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBSZWdF
eHBDb25zdHJ1Y3RvcjsKQEAgLTMzNSw2ICszMzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5
SW5mbyosIGludCBjb3VudCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEZvbGQg
cmVzZXQgaW50byBpbml0LgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluaXQoSlNP
YmplY3QqIHRoaXNWYWx1ZSk7CiAgICAgICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lv
biAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IEdldHRlclNldHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJuYWxG
dW5jdGlvbjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFy
a2VkQmxvY2s7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3Bl
cnR5TmFtZUFycmF5OwpAQCAtMjY5LDYgKzI3MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5s
aW5lU3RvcmFnZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gTm9ib2R5IHNob3VsZCBldmVy
IGFzayBhbnkgb2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0aGluZyBhbHJlYWR5IGtub3duIHRv
IGJlIGEgSlNPYmplY3QuCiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXI7
CiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7CkBAIC0zODEsNiArMzg0LDgg
QEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0
IEpTRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKICAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX2lu
bGluZVN0b3JhZ2UpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwNjA0
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciA6
IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtOTYsNiArOTcs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBw
cm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKIAogICAgICAg
ICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTA2MDQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpA
QCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1N0cmluZzsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBKU1N0cmluZyoganNFbXB0
eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVj
U3RhdGUqKTsKQEAgLTI0MCw2ICsyNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJp
dmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAg
ICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRl
KikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIqKSBjb25z
dDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFyKikgY29uc3Q7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAx
MDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkIHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJsZS4KICAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8PCAxOwogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEgPDwgMjsKQEAgLTg3LDYg
Kzg5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAg
ICBib29sIGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA8
PSAoMSA8PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAgICAgICBib29sIGlzU2V0
T25GbGFnczIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8PCA4KSk7
IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2
LDEwICsxMTYsOSBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiAg
ICAgcmV0dXJuIEpTTm90QW5PYmplY3Q6OmNyZWF0ZShleGVjKTsKIH0KIAotI2lmbmRlZiBOREVC
VUcKIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIHsKLSAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IHNpemUgPSA2NDsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSAxMjg7CiAgICAg
c3RhdGljIGNoYXIgZGVzY3JpcHRpb25bc2l6ZV07CiAKICAgICBpZiAoISp0aGlzKQpAQCAtMTI4
LDE0ICsxMjcsMTQgQEAgY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogICAgICAgICBzbnBy
aW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkludDMyOiAlZCIsIGFzSW50MzIoKSk7CiAgICAgZWxz
ZSBpZiAoaXNEb3VibGUoKSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHNucHJpbnRm
KGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICVseCIsIGFzRG91YmxlKCksIHJlaW50
ZXJwcmV0RG91YmxlVG9JbnRwdHIoYXNEb3VibGUoKSkpOworICAgICAgICBzbnByaW50ZihkZXNj
cmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWx4LCAlbGYiLCByZWludGVycHJldERvdWJsZVRvSW50
cHRyKGFzRG91YmxlKCkpLCBhc0RvdWJsZSgpKTsKICNlbHNlCiAgICAgICAgIHVuaW9uIHsKICAg
ICAgICAgICAgIGRvdWJsZSBhc0RvdWJsZTsKICAgICAgICAgICAgIHVpbnQzMl90IGFzVHdvSW50
MzJzWzJdOwogICAgICAgICB9IHU7CiAgICAgICAgIHUuYXNEb3VibGUgPSBhc0RvdWJsZSgpOwot
ICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlMDh4OiUw
OHgiLCBhc0RvdWJsZSgpLCB1LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdKTsKKyAg
ICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICUwOHg6JTA4eCwgJWxm
IiwgdS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSwgYXNEb3VibGUoKSk7CiAjZW5k
aWYKICAgICB9IGVsc2UgaWYgKGlzQ2VsbCgpKQogICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlv
biwgc2l6ZSwgIkNlbGw6ICVwIiwgYXNDZWxsKCkpOwpAQCAtMTUyLDcgKzE1MSw2IEBAIGNoYXIq
IEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIAogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KLSNl
bmRpZgogCiAvLyBUaGlzIGluIHRoZSBUb0ludDMyIG9wZXJhdGlvbiBpcyBkZWZpbmVkIGluIHNl
Y3Rpb24gOS41IG9mIHRoZSBFQ01BLTI2MiBzcGVjLgogLy8gTm90ZSB0aGF0IHRoaXMgb3BlcmF0
aW9uIGlzIGlkZW50aWNhbCB0byBUb1VJbnQzMiBvdGhlciB0aGFuIHRvIGludGVycHJldGF0aW9u
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAx
MDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTIzMiw5ICsyMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlND
ZWxsKiBhc0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1Zh
bGlkQ2FsbGVlKCk7CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGNoYXIqIGRlc2NyaXB0aW9u
KCk7Ci0jZW5kaWYKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBK
U1ZhbHVlKFdyaXRlQmFycmllckJhc2U8VD4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMTA2MDQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCwxMCArMzgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAKICAgICBjbGFz
cyBKU1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBm
cmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFz
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZp
c2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTAgQEAgdW5zaWduZWQgbWF4aW11bUZ1bmN0
aW9uRm9yQ29uc3RydWN0SW5saQogCiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsKIAor
aW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2ludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworaW50MzJfdCBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKQEAgLTEzNyw2ICsxNDEsMTAgQEAgdm9pZCBp
bml0aWFsaXplT3B0aW9ucygpCiAgICAgCiAgICAgU0VUKG1heGltdW1JbmxpbmluZ0RlcHRoLCA1
KTsKIAorICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcCwgICAg
IC0xMDApOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNv
b24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKKyAgICBTRVQoZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9ySklUU29vbiwgICAgICAgICAgICAtMTAwKTsKKwogICAgIFNFVChl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwLCAgICAgLTEwMDApOwog
ICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCwg
LTUwMDApOwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0
aW1lU29vbiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOwpAQCAtMTg1LDYg
KzE5Myw4IEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIGlmIChjcHVzVG9Vc2UgPCAx
KQogICAgICAgICBjcHVzVG9Vc2UgPSAxOwogICAgIAorICAgIGNwdXNUb1VzZSA9IDE7CisgICAg
CiAgICAgU0VUKG51bWJlck9mR0NNYXJrZXJzLCBjcHVzVG9Vc2UpOwogCiAgICAgQVNTRVJUKGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uIDw9IGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcs
NiArMzcsMTAgQEAgZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cgogCiBl
eHRlcm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERlcHRoIG9mIGlubGluZSBz
dGFjaywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMuCiAKK2V4dGVybiBp
bnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworZXh0ZXJuIGlu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworZXh0ZXJu
IGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogZXh0ZXJuIGludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGV4dGVybiBp
bnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwog
ZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGlt
ZVNvb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5o
CShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29w
ZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAg
IGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBj
bGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCkBA
IC05MSw2ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JU
REFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47
CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3Bl
cnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5RGF0YTsKICAgICBjbGFz
cyBTdHJ1Y3R1cmVDaGFpbjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBj
b25zdCBDbGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYpOwogICAg
ICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlz
aW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNo
YWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU3RydWN0dXJl
OwogCiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlNDZWxsIHsKQEAgLTc0LDYg
Kzc1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAg
ICBTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bs
YXRmb3JtLmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTIwLDYgKzkyMCwxOCBAQAogI2RlZmluZSBF
TkFCTEVfSklUIDEKICNlbmRpZgogCisvKiBPbiBzb21lIG9mIHRoZSBwbGF0Zm9ybXMgd2hlcmUg
d2UgaGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNvIGhhdmUgdGhlIAorICAgbG93LWxldmVsIGlu
dGVycHJldGVyLiAqLworI2lmICFkZWZpbmVkKEVOQUJMRV9MTElOVCkgJiYgRU5BQkxFKEpJVCkg
JiYgUExBVEZPUk0oTUFDKSAmJiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBFTkFCTEVfTExJ
TlQgMQorI2VuZGlmCisKKy8qIElmIHdlIGhhdmUgTExJbnQgZW5hYmxlZCBhbmQgdGhlIEpJVCBl
bmFibGVkLCB3ZSBhbHNvIGVuYWJsZSBPU1JpbmcgZnJvbQorICAgTExJbnQgdG8gdGhlIEpJVC4g
Ki8KKyNpZiAhZGVmaW5lZChFTkFCTEVfTExJTlRfT1NSX1RPX0pJVCkgJiYgRU5BQkxFKEpJVCkg
JiYgRU5BQkxFKExMSU5UKQorI2RlZmluZSBFTkFCTEVfTExJTlRfT1NSX1RPX0pJVCAxCisjZW5k
aWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9ERkdfSklUKSAmJiBFTkFCTEUoSklUKQogLyogRW5h
YmxlIHRoZSBERkcgSklUIG9uIFg4NiBhbmQgWDg2XzY0LiAgT25seSB0ZXN0ZWQgb24gTWFjIGFu
ZCBHTlUvTGludXguICovCiAjaWYgKENQVShYODYpIHx8IENQVShYODZfNjQpKSAmJiAoUExBVEZP
Uk0oTUFDKSB8fCBPUyhMSU5VWCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Nl
bnRpbmVsTGlua2VkTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2
LDYgKzg2LDggQEAgcHVibGljOgogCiAgICAgaXRlcmF0b3IgYmVnaW4oKTsKICAgICBpdGVyYXRv
ciBlbmQoKTsKKyAgICAKKyAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBiZWdpbigpID09IGVu
ZCgpOyB9CiAKIHByaXZhdGU6CiAgICAgUmF3Tm9kZSBtX2hlYWRTZW50aW5lbDsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gMTA2
MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29y
a2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3Ry
aW5nICogQ0ZTdHJpCiAvLyBMYW5kaW5nIHRoZSBmaWxlIG1vdmVzIGluIG9uZSBwYXRjaCwgd2ls
bCBmb2xsb3cgb24gd2l0aCBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgbmFtZXNwYWNlcy4KIG5hbWVz
cGFjZSBKU0Mgewogc3RydWN0IElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRvcjsKK2NsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSWRlbnRp
ZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yOwogc3RydWN0IElkZW50aWZpZXJMQ2hhckZyb21VQ2hh
clRyYW5zbGF0b3I7CiB9CkBAIC03Miw3ICs3Myw4IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAg
IGZyaWVuZCBzdHJ1Y3QgV1RGOjpTdWJzdHJpbmdUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1
Y3QgV1RGOjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0
cmluZ0ltcGw7Ci0KKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7
CisgICAgCiBwcml2YXRlOgogICAgIGVudW0gQnVmZmVyT3duZXJzaGlwIHsKICAgICAgICAgQnVm
ZmVySW50ZXJuYWwsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDYwNTUpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0w
MS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91
bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQg
RUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3Jp
cHRDb3JlLgorICAgICAgICAKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8gYmVoYXZp
b3IgY2hhbmdlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAxLTI2ICBO
b2VsIEdvcmRvbiAgPG5vZWwuZ29yZG9uQGdtYWlsLmNvbT4KIAogICAgICAgICBGaWxlIGV4dGVu
c2lvbiBmb3Igd2VicCBmaWxlcyBpcyAud2VicApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC03NCw2ICs3NCw3IEBAIFNFVChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMK
ICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L3BhcnNlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZSIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124201</attachid>
            <date>2012-01-26 15:54:33 -0800</date>
            <delta_ts>2012-01-26 17:37:00 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_52.diff</filename>
            <type>text/plain</type>
            <size>436759</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4MCBA
QAorMjAxMi0wMS0yNCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGFzc2VtYmxlci9M
aW5rQnVmZmVyLmg6CisgICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChK
U0M6OkNhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6Q2Fs
bExpbmtTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmg6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3RhdHVzOjppc1NldCk6CisgICAgICAgIChK
U0M6OkNhbGxMaW5rU3RhdHVzOjpvcGVyYXRvciEpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVC
bG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJs
b2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRp
c29uKToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFt
Q29kZUJsb2NrOjpqaXRDb21waWxlSW1wbCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6
OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENv
bXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2Nh
cmRpbmdPcHBvcnR1bml0eSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0Q29tcGlsZSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YWRkTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpu
dW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnZh
bHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rh
a2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFr
ZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtl
QW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1ZW50RXhpdFNp
dGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29vbik6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50RXhlY3V0ZUNv
dW50ZXIpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQzo6R2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1
cy5oOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpHZXRCeUlkU3RhdHVzKToKKyAgICAg
ICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6d2FzU2VlbkluSklUKToKKyAgICAgICAgKiBieXRlY29k
ZS9JbnN0cnVjdGlvbi5oOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb24p
OgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6TExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAo
SlNDOjpMTEludENhbGxMaW5rSW5mbzo6fkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpT
Qzo6TExJbnRDYWxsTGlua0luZm86OmlzTGlua2VkKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxs
TGlua0luZm86OnVubGluayk6CisgICAgICAgICogYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpNZXRob2RDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6
CisgICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJ
bnQpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAg
KiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnNldER1
bXBzR2VuZXJhdGVkQ29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1w
c0dlbmVyYXRlZENvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJh
dGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmUpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFzZSk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlzKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
b25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhdGNoKToK
KyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OkJ5dGVDb2RlUGFyc2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAgIChKU0M6
OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9ERkdDYXBh
YmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToKKyAgICAg
ICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0
aW9ucy5jcHA6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAgICAgKiBo
ZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuaDoKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoKKyAgICAgICAg
KiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJy
ZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjppc09wY29kZSk6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp1bndpbmRDYWxsRnJhbWUpOgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2Rl
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVy
RmlsZS5oOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKToKKyAgICAg
ICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChK
U0M6OkpJVENvZGU6OmlzT3B0aW1pemluZ0pJVCk6CisgICAgICAgIChKU0M6OkpJVENvZGU6Omlz
QmFzZWxpbmVDb2RlKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6SklUQ29kZSk6CisgICAgICAg
ICogaml0L0pJVERyaXZlci5oOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlSWZBcHByb3ByaWF0
ZSk6CisgICAgICAgIChKU0M6OmppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUpOgorICAg
ICAgICAqIGppdC9KSVRFeGNlcHRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6aml0VGhyb3cpOgor
ICAgICAgICAqIGppdC9KSVRTdHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZV
TkNUSU9OKToKKyAgICAgICAgKiBqaXQvSlNJbnRlcmZhY2VKSVQuaDoKKyAgICAgICAgKiBsbGlu
dDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTExJbnRDb21tb24uaDogQWRkZWQuCisgICAgICAg
ICogbGxpbnQvTExJbnREYXRhLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpEYXRh
OjpEYXRhKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6On5EYXRhKToKKyAgICAgICAgKiBs
bGludC9MTEludERhdGEuaDogQWRkZWQuCisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpleGNl
cHRpb25JbnN0cnVjdGlvbnMpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6b3Bjb2RlTWFw
KToKKyAgICAgICAgKiBsbGludC9MTEludEVudHJ5cG9pbnRzLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OkxMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTElu
dDo6Z2V0RXZhbEVudHJ5cG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0UHJvZ3JhbUVu
dHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuaDogQWRkZWQuCisg
ICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTElu
dEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVy
VGhyb3dJbkNhbGxlcik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhy
b3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAg
ICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhj
ZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX29wZXJhbmQpOgorICAgICAgICAo
SlNDOjpMTEludDo6bGxpbnRfdHJhY2VfdmFsdWUpOgorICAgICAgICAoSlNDOjpMTEludDo6TExJ
TlRfSEVMUEVSX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6dHJhY2VGdW5jdGlvblByb2xv
Z3VlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNob3VsZEpJVCk6CisgICAgICAgIChKU0M6OkxM
SW50OjplbnRyeU9TUik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXNvbHZlR2xvYmFsKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmhhbmRs
ZUhvc3RDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFVwQ2FsbCk6CisgICAgICAgIChK
U0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmg6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4K
KyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToK
KyAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpM
TEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8pOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVu
Y3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50Ojpm
dW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpM
TEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9y
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKiBs
bGludC9MTEludFRodW5rcy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5j
cHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQu
CisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12
Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tl
bmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRy
YWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJi
OiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3Jl
Z2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9zZXR0aW5ncy5yYjogQWRk
ZWQuCisgICAgICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20veDg2LnJiOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvZGVTcGVjaWFs
aXphdGlvbktpbmQuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMu
aDoKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVC
bG9jayk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAg
ICAgKEpTQzo6c2FtcGxpbmdEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRh
YmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6
aml0Q29tcGlsZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50
ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJs
b2NrRm9yKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9y
Q2FsbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNv
bnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNh
bGxJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZv
ckNvbnN0cnVjdEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAg
KiBydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0M6OnByZXBh
cmVGb3JFeGVjdXRpb24pOgorICAgICAgICAoSlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OkpT
QWN0aXZhdGlvbjo6dGVhck9mZik6CisgICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAg
ICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xv
YmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5o
OgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1l
L0pTT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6
CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBl
SW5mby5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0M6OkpT
VmFsdWU6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAg
ICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAg
ICAgICogcnVudGltZS9PcHRpb25zLmg6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZUNoYWluLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6CisgICAgICAgICogd3RmL1Nl
bnRpbmVsTGlua2VkTGlzdC5oOgorICAgICAgICAoV1RGOjpTZW50aW5lbExpbmtlZExpc3Q6Omlz
RW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKwogMjAxMi0wMS0yNiAg
TWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBTdHJpbmc6Omxh
dGluMSgpIHNob3VsZCB0YWtlIGFkdmFudGFnZSBvZiA4IGJpdCBzdHJpbmdzCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzEx
LDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50
ZXJwcmV0ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3BhcnNlciIK
ICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vcnVudGltZSIKQEAgLTk0LDYgKzk1LDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NP
VVJDRVMKICAgICBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwCiAKICAgICBqaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5jcHAKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKICAgICBq
aXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljLmNwcAogICAg
IGppdC9KSVRDYWxsMzJfNjQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
LmFtCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgamF2YXNjcmlwdGNvcmVfY3Bw
ZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCisJLUkkKHNyY2RpcikvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDYwNDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpA
QCAtODEsNiArODEsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
U3RhdHVzLmNwcCBcCkBAIC0xMDIsNiArMTAzLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTGluZUluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01l
dGhvZENhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRob2RDYWxsTGlua0luZm8uaCBcCkBAIC0yNzcsNiArMjc5LDggQEAgamF2YXNjcmlwdGNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Db21wYWN0SklUQ29kZU1h
cC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCisJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDYWxsMzJfNjQuY3BwIFwKQEAgLTMwMCw2ICszMDQsNyBAQCBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1
bmtKSVQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIFwKKwlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vcy13aW4zMi9zdGRib29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4z
Mi9zdGRpbnQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgg
XApAQCAtMzUwLDYgKzM1NSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ2xhc3NJbmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVj
aWFsaXphdGlvbktpbmQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93
UGF0aHMuaCBcCkBAIC0zNzgsNiArMzg0LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcg
QEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9kZWJ1Z2dlciBcCiAgICAgJCRT
T1VSQ0VfRElSL2ludGVycHJldGVyIFwKICAgICAkJFNPVVJDRV9ESVIvaml0IFwKKyAgICAkJFNP
VVJDRV9ESVIvbGxpbnQgXAogICAgICQkU09VUkNFX0RJUi9wYXJzZXIgXAogICAgICQkU09VUkNF
X0RJUi9wcm9maWxlciBcCiAgICAgJCRTT1VSQ0VfRElSL3J1bnRpbWUgXApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcgQEAgU09VUkNF
UyArPSBcCiAgICAgaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCiAgICAgaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgXAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2Nh
dG9yLmNwcCBcCisgICAgaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKICAgICBqaXQvSklU
QXJpdGhtZXRpYy5jcHAgXAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwKICAgICBq
aXQvSklUQ2FsbC5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMwLDYgKzE3MzAsMTAgQEAK
IAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caml0
XEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcSklULmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBA
IC0xODE1LDYgKzE4MTksMTQgQEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIK
KwkJCU5hbWU9ImxsaW50IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u
XGxsaW50XExMSW50RGF0YS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxG
aWx0ZXIKIAkJCU5hbWU9ImludGVycHJldGVyIgogCQkJPgogCQkJPEZpbGUKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNyw2ICs3LDE1IEBACiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQWdn
cmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExM
SW50IE9mZnNldHMgKi8gPSB7CisJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwQUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJMTEludCBPZmZzZXRzIiAq
LzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBH
ZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCisJCQkpOworCQkJbmFtZSA9ICJMTEludCBPZmZz
ZXRzIjsKKwkJCXByb2R1Y3ROYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CisJCX07CiAJCTY1RkIz
RjY2MDlEMTFFOTEwMEY0OURFQiAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhBZ2dyZWdhdGVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNjVGQjNGNzcw
OUQxMUVCRDAwRjQ5REVCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVn
YXRlVGFyZ2V0ICJEZXJpdmVkIFNvdXJjZXMiICovOwpAQCAtMTQsNiArMjMsOSBAQAogCQkJCTY1
RkIzRjY1MDlEMTFFOTEwMEY0OURFQiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJ
CQkJNUQzNURFRTEwQzdDMTQwQjAwODY0OEIyIC8qIEdlbmVyYXRlIERUcmFjZSBoZWFkZXIgKi8s
CiAJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3
MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBT
b3VyY2VzIjsKIAkJCXByb2R1Y3ROYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCX07CkBAIC00
OCw2ICs2MCwxMCBAQAogCQkwQkFDOTRBMDEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJp
Y3Rpb25WZXJpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZp
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
QkNEODM1NzE0ODU4NDUyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkNEODM1NDE0ODU4NDEyMDBFQTIw
MDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEJGMjhBMjkxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJGMjhB
MjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovOyB9OworCQkwRjBCODM5QTE0
QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyog
TExJbnRFbnRyeXBvaW50cy5jcHAgKi87IH07CisJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAv
KiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEI4
MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyog
TExJbnRUaHVua3MuY3BwICovOyB9OworCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4
NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTkxNEJDRjU2
MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBC
ODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQUExNEJDRjVCOTAwODg1
QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTgsOSArNzQsMTMgQEAKIAkJMEYwQjgzQjUxNEJDRjg2
MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhv
ZENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjYx
NEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRG
IC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyog
Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyog
TExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTVG
MTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAv
KiBDb21tb25TbG93UGF0aHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjE2RDcyNjE0MkMzOUMwMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTZENzI0MTQy
QzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwICovOyB9OwogCQkwRjIxQzI2ODE0QkU1RjY4
MDBBREM2NEIgLyogSklURHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0Mx
NEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBF
eGVjdXRpb25IYXJuZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlv
bktpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0YxNEJF
QUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBC
eXRlY29kZUNvbnZlbnRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYyNDJEQTcxM0YzQjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VI
YXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NkYx
NDczOEYzMTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdD
b2RlQmxvY2tzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEYyQzU1NzAxNDczOEYzNTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkQxNDczOEYy
RTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICovOyB9OwpAQCAtNzEsNiArOTEsMTkgQEAK
IAkJMEY0MzE3MzgxNDZCQUM2OTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MzE3MzYxNDZCQUM2NTAw
N0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNl
cHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4MDgzMTRCQTU3MzEwMEJG
RTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25z
LmNwcCAqLzsgfTsKKwkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Njgw
OUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3
MiAvKiBMTEludEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAg
Ki87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tdW51c2VkLXBhcmFtZXRlciI7
IH07IH07CisJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEEwMTRCQTdG
ODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwICovOyB9OworCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRp
b25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkw
RjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAv
KiBMTEludENvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25m
aWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4
MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQzE0QkJCMTdB
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93
TGV2ZWxJbnRlcnByZXRlci5jcHAgKi87IH07CisJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAv
KiBMb3dMZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnBy
ZXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcy
IC8qIExMSW50RGF0YS5jcHAgKi87IH07CisJCTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBM
TEludERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUy
NzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxS
ZXR1cm5WYWx1ZS5jcHAgKi87IH07CisJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0
Q2FsbFJldHVyblZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUYw
OENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAw
NDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNjIwMTc0MTQzRkNEMzMwMDY4Qjc3QyAvKiBE
RkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNjIwMTcyMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vz
c0RhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjYyMDE3NTE0M0ZDRDM3MDA2OEI3N0MgLyogREZHT3BlcmFuZHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjIwMTcxMTQzRkNEMkYwMDY4Qjc3
QyAvKiBERkdPcGVyYW5kcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC0zODMsNyArNDE2LDcgQEAKIAkJODZCOTlBRTMxMTdFNTc4MTAwREY1QTkw
IC8qIFN0cmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZCOTlBRTExMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QkIwOUMwMTM4
RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJFMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBh
dGNoLmNwcCAqLzsgfTsKIAkJODZCQjA5QzExMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2gu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJG
MTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggKi87IH07Ci0JCTg2QzM2RUVBMEVFMTI4
OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNz
ZW1ibGVyLmggKi87IH07CisJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2Vt
Ymxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZD
MzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTAxMUEyMTNFRTAwMDdG
N0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OEREMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2Vt
YmxlckFSTS5jcHAgKi87IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fz
c2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLzsg
fTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERGMTFBMjEzRUUw
MDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IH07CkBAIC03NTIsNiArNzg1LDIwIEBACiAv
KiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRl
bVByb3h5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJ
CWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9i
amVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBG
NDY4MEE5MTRCQTdGRDkwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSAiTExJbnQgT2Zmc2V0cyI7
CisJCX07CisJCTBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJv
eHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQ
b3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJ
CQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODA4RTE0QkE3
RTVFMDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
CQl9OwogCQkxNDEyMTRCRTBBNDkxOTBFMDA0ODAyNTUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5
ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9y
dGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAt
Nzk3LDYgKzg0NCwxNSBAQAogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4
RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJYQ29weUZp
bGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQ
YXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMDsKKwkJ
CWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAxOworCQl9OwogCQk1REJCMTUxMTEzMUQwQjEzMDA1NkFEMzYgLyogQ29weSBTdXBwb3J0IFNj
cmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFj
dGlvbk1hc2sgPSAxMjsKQEAgLTgzNyw2ICs4OTMsMTAgQEAKIAkJMEJBQzk0OUUxMzM4NzI4NDAw
Q0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hh
bmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFyeUNoYW5nZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkYyOEEyODExQTMzREMzMDA2MzhGODQg
LyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
aXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTUxNEJD
RjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5jcHA7IHBhdGggPSBsbGludC9MTElu
dEVudHJ5cG9pbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTYx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5oOyBwYXRoID0gbGxpbnQvTExJbnRFbnRy
eXBvaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NzE0QkNGNDVB
MDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTExJbnRUaHVua3MuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3MuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyog
TExJbnRUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRUaHVu
a3MuaDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlckluZm8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5n
ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwcmVzc2lvblJhbmdl
SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQ3LDkgKzkwNywxMyBAQAog
CQkwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGhvZENhbGxMaW5rSW5mby5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFs
UmVzb2x2ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2xvYmFsUmVz
b2x2ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjgxNEJDRjk1
QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1
NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBMTEludENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE1
RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vblNsb3dQYXRocy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURHJpdmVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENv
ZGVTcGVjaWFsaXphdGlvbktpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYy
MUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0aW9uSGFybmVzcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUNvbnZlbnRp
b25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjQyREE1MTNGM0IxQkIwMDdB
REQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBE
RkdDb2RlQmxvY2tzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGR0NvZGVC
bG9ja3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2MCw2ICs5MjQsMjAgQEAK
IAkJMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaXN0YWJsZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlv
bnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklURXhjZXB0aW9u
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDgwMTRCQTU3MjcwMEJG
RTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpJVEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOEYx
NEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVj
dXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gSlNDTExJbnRPZmZzZXRzRXh0cmFj
dG9yOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkwRjQ2ODA5RDE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5jcHA7IHBhdGggPSBsbGludC9MTEludEV4
Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RTE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5oOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludEhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTExJbnRIZWxwZXJzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVycy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRIZWxwZXJz
Lmg7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50
Q29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50Q29tbW9uLmg7
IHBhdGggPSBsbGludC9MTEludENvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBw
YXRoID0gbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZl
bEludGVycHJldGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExvd0xldmVs
SW50ZXJwcmV0ZXIuaDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50
RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludERhdGEu
Y3BwOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludERhdGEuaDsgcGF0aCA9IGxsaW50L0xMSW50RGF0
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUy
NzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkg
LyogREZHQnl0ZUNvZGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBE
RkdCeXRlQ29kZUNhY2hlLmg7IHBhdGggPSBkZmcvREZHQnl0ZUNvZGVDYWNoZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25k
aXRpb25hbEZpbmFsaXplci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmNv
bmRpdGlvbmFsRmluYWxpemVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjIw
MTZEMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdBYnN0cmFjdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERGR0Fic3RyYWN0U3RhdGUuY3BwOyBwYXRoID0gZGZn
L0RGR0Fic3RyYWN0U3RhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU3
OSw2ICsxNjU3LDEzIEBACiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEMxNEJB
N0U1RTAwQkZFMjcyIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtz
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJ
fTsKIAkJMTQxMjExMUUwQTQ4NzkzQzAwNDgwMjU1IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlp
c2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CkBAIC0xNjM3LDYgKzE3MjIsNyBAQAogCQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4MDI1
NSAvKiBtaW5pZG9tICovLAogCQkJCTE0QkQ1OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBp
ICovLAogCQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJ
CTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8s
CiAJCQkpOwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
QEAgLTE2NjcsNiArMTc1Myw3IEBACiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEph
dmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8q
IGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5oICov
LAorCQkJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLywKIAkJCQkxNDMyRUJE
NzBBMzRDQUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5
RiAvKiBhc3NlbWJsZXIgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVj
b2RlICovLApAQCAtMTcwNSw2ICsxNzkyLDI4IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2Vz
VGFicyA9IDA7CiAJCX07CisJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLyA9
IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYwQjgzOTUxNEJD
RjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovLAorCQkJCTBGMEI4Mzk2MTRC
Q0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8sCisJCQkJMEYwQjgzOTcxNEJD
RjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLywKKwkJCQkwRjBCODM5ODE0QkNGNDVB
MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLywKKwkJCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUy
NzIgLyogTExJbnREYXRhLmNwcCAqLywKKwkJCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyog
TExJbnREYXRhLmggKi8sCisJCQkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29t
bW9uLmggKi8sCisJCQkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFz
bUNvbmZpZy5oICovLAorCQkJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbElu
dGVycHJldGVyLmNwcCAqLywKKwkJCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2
ZWxJbnRlcnByZXRlci5oICovLAorCQkJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dEV4Y2VwdGlvbnMuY3BwICovLAorCQkJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dEV4Y2VwdGlvbnMuaCAqLywKKwkJCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRI
ZWxwZXJzLmNwcCAqLywKKwkJCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxw
ZXJzLmggKi8sCisJCQkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGxsaW50OworCQkJc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMTQxMjExMDAwQTQ4NzcyNjAwNDgwMjU1IC8qIHRlc3RzICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE3MzcsNiArMTg0
Niw4IEBACiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3
MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLywKKwkJCQkwRjQ2ODBEMTE0QkJDNUY4MDBC
RkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovLAogCQkJCTBGNDY4MDdGMTRCQTU3Mjcw
MEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLywKIAkJCQkwRjQ2ODA4MDE0QkE1NzI3MDBC
RkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovLAogCQkJCTBGRDgyRTM3MTQxQUIxNDIwMDE3OUM5
NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oICovLApAQCAtMjE2Niw2ICsyMjc3LDggQEAKIAkJN0VG
NkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmggKi8sCisJCQkJMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8q
IEV4ZWN1dGlvbkhhcm5lc3MuaCAqLywKIAkJCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyog
Q29tbW9uU2xvd1BhdGhzLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFy
Z0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0Lmgg
Ki8sCkBAIC0yNTI1LDYgKzI2MzgsOCBAQAogCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyog
Ynl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJ
CTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8sCisJ
CQkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8sCiAJ
CQkJMEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLywKIAkJ
CQkwRjkzMzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCAqLywKIAkJCQkw
RjkzMzI5NTE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5jcHAgKi8sCkBAIC0zMDc2
LDcgKzMxOTEsMTYgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRl
cm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJy
U3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYxNUYxNEI3QTczRTAwNURF
MzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTMxNEJB
N0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0
NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFz
bUNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8q
IExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEQzMTRCQkQx
NjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEQ1MTRC
QkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5m
by5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJl
c3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtMzA4NSw3ICszMjA5LDExIEBACiAJ
CQkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJ
bmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2Fs
bFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEZD
NDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2
NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEEx
NEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEY3QjI5NEMxNEMzQ0Q0MzAwN0MzREIxIC8qIERGR0J5dGVDb2RlQ2FjaGUuaCBp
biBIZWFkZXJzICovLApAQCAtMzEwMyw2ICszMjMxLDI0IEBACiAvKiBFbmQgUEJYSGVhZGVyc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAq
LworCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9y
ICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9u
TGlzdCA9IDBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLzsKKwkJ
CWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2Vz
ICovLAorCQkJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovLAorCQkJ
CTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8sCisJCQkpOworCQkJYnVp
bGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjIxNEJB
ODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9
IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3ROYW1lID0gSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDBGNDY4MDhGMTRCQTdFNUUwMEJG
RTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJj
b20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OwogCQkxNDEyMTExRjBBNDg3OTNDMDA0
ODAyNTUgLyogbWluaWRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1
aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovOwpAQCAt
MzIyOSwxMSArMzM3NSwyOSBAQAogCQkJCTE0QkQ1OUJFMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0
YXBpICovLAogCQkJCTkzMkY1QkRBMDgyMkExQzcwMDczNjk3NSAvKiBqc2MgKi8sCiAJCQkJNjUx
MTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEUxNEJB
N0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKKwkJCQkwRjQ2ODBB
OTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLywKIAkJCSk7CiAJCX07CiAvKiBF
bmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZSBzZWN0aW9uICovCisJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBE
ZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7
CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOwor
CQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9sbGludC9Mb3dMZXZlbEFzc2VtYmxl
ci5hc20iLAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKKwkJ
CW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRz
L0xMSW50RGVzaXJlZE9mZnNldHMuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3Jp
cHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL1wiXG5c
bi91c3IvYmluL2VudiBydWJ5IFwiJHtTUkNST09UfS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNl
dF9leHRyYWN0b3IucmJcIiBcIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c21cIiBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zm
c2V0cy5oXCJcbiI7CisJCX07CiAJCTM3MTNGMDE0MTQyOTA1MjQwMDM2Mzg3RiAvKiBDaGVjayBG
b3IgSW5hcHByb3ByaWF0ZSBPYmplY3RpdmUtQyBDbGFzcyBOYW1lcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CkBAIC0zMzM5LDcgKzM1MDMsNyBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKLQkJCXNoZWxsU2Ny
aXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL2RvY3NcIlxuY2QgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmVcIlxuXG4vYmluL2xuIC1zZmggXCIke1NSQ1JPT1R9XCIgSmF2
YVNjcmlwdENvcmVcbmV4cG9ydCBKYXZhU2NyaXB0Q29yZT1cIkphdmFTY3JpcHRDb3JlXCJcbmV4
cG9ydCBCVUlMVF9QUk9EVUNUU19ESVI9XCIuLi8uLlwiXG5cbm1ha2UgLS1uby1idWlsdGluLXJ1
bGVzIC1mIFwiSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNyL3Ni
aW4vc3lzY3RsIC1uIGh3Lm5jcHVgXG4iOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIk
e0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wi
XG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29y
ZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7U1JDUk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0
IEphdmFTY3JpcHRDb3JlPVwiSmF2YVNjcmlwdENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RT
X0RJUj1cIi4uLy4uXCJcblxubWFrZSAtLW5vLWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlXCIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNw
dWBcblxuL3Vzci9iaW4vZW52IHJ1YnkgSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIg
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJHtCVUlMVF9QUk9E
VUNUU19ESVJ9L0pTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciBMTEludEFzc2VtYmx5LmhcbiI7CiAJ
CX07CiAJCTkzMTk1ODZCMDlEOUY5MUEwMEE1NkZENCAvKiBDaGVjayBGb3IgR2xvYmFsIEluaXRp
YWxpemVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKQEAgLTMz
NzQsNiArMzUzOCwxNCBAQAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0Njgw
OEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2Vz
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRDBBNDg3OTNDMDA0ODAyNTUgLyogU291cmNl
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKQEAgLTM2MzIsNyArMzgwNCwxNCBAQAogCQkJCTg2NzA0Qjg2MTJE
QkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg5
MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4
NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNl
cHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MENDMTRCQkIxN0Ew
MEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
NDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlw
b2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8q
IExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4
NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjQxNEJD
Rjg2MDAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlGNjlFODZDMzE0QzZFNTUxMDAyQzJDNjIgLyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTM2NTQsNiArMzgzMywxNiBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJ
CTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewor
CQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdG
RDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBC
MTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkw
RjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJ
CWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVF
MDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkg
PSAwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwor
CQl9OwogCQkxNDEyMTRCRjBBNDkxOTBFMDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEyMTEx
RjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLzsKQEAgLTM2ODcsNiArMzg3NiwxNDggQEAK
IC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWls
ZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyog
RGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMg
PSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87
CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19O
T19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlH
Q0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJ
T05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJ
CQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNv
bS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJf
QklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQ
RVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0ND
X1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2Fy
Y2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7
CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9B
UkNIID0gWUVTOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsK
KwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3
MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJ
CUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJ
UCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3lt
IjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVf
T0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBp
bGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lP
TiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURf
VkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJ
CQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNl
dHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5U
X1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJ
CQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGlj
dSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRI
UykiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVF
MDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9
IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9Q
SEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYt
d2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdD
Q19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFw
cGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRf
Q09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9
IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FS
Tl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0q
XSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9M
TEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJ
CQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIk
KFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9T
RUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAk
KEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9
OworCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdB
WVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJE
XzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JN
QVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RB
TkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJ
CQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJ
R0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9V
VF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZ
UEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFE
RVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIk
KEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJD
SF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsK
KwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNv
c3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJ
bmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBE
ZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJ
fTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8q
IFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsK
KwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZF
MjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2Vz
IGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIwMTRC
QTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJp
dmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJ
CTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1NSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKQEAgLTM5MjgsNiArNDI1OSwy
OCBAQAogLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
WENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3
MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJ
bnRPZmZzZXRzRXh0cmFjdG9yIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7
CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3
MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAq
LywKKwkJCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBG
NDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1
bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFt
ZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0
cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8sCisJ
CQkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwQUYx
NEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODBCMDE0QkE3RkQ5MDBC
RkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklz
VmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwor
CQl9OwogCQkxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovID0gewogCQkJaXNhID0gWENDb25m
aWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA2MDQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNkZWZpbmUgR0xPQkFMX1RIVU5LX0lEIHJlaW50
ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigtMSkpCiAjZGVmaW5lIFJF
R0VYUF9DT0RFX0lEIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90
PigtMikpCiAKLSNpbmNsdWRlIDxNYWNyb0Fzc2VtYmxlci5oPgorI2luY2x1ZGUgIk1hY3JvQXNz
ZW1ibGVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0Mg
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVDb252ZW50aW9ucy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IEJ5dGVjb2RlQ29udmVudGlvbnNfaAorI2RlZmluZSBCeXRlY29kZUNvbnZlbnRpb25zX2gKKwor
Ly8gUmVnaXN0ZXIgbnVtYmVycyB1c2VkIGluIGJ5dGVjb2RlIG9wZXJhdGlvbnMgaGF2ZSBkaWZm
ZXJlbnQgbWVhbmluZyBhY2NvcmRpbmcgdG8gdGhlaXIgcmFuZ2VzOgorLy8gICAgICAweDgwMDAw
MDAwLTB4RkZGRkZGRkYgIE5lZ2F0aXZlIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50
ZXIgYXJlIGVudHJpZXMgaW4gdGhlIGNhbGwgZnJhbWUsIHNlZSBSZWdpc3RlckZpbGUuaC4KKy8v
ICAgICAgMHgwMDAwMDAwMC0weDNGRkZGRkZGICBGb3J3YXJkcyBpbmRpY2VzIGZyb20gdGhlIENh
bGxGcmFtZSBwb2ludGVyIGFyZSBsb2NhbCB2YXJzIGFuZCB0ZW1wb3JhcmllcyB3aXRoIHRoZSBm
dW5jdGlvbidzIGNhbGxmcmFtZS4KKy8vICAgICAgMHg0MDAwMDAwMC0weDdGRkZGRkZGICBQb3Np
dGl2ZSBpbmRpY2VzIGZyb20gMHg0MDAwMDAwMCBzcGVjaWZ5IGVudHJpZXMgaW4gdGhlIGNvbnN0
YW50IHBvb2wgb24gdGhlIENvZGVCbG9jay4KK3N0YXRpYyBjb25zdCBpbnQgRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwOworCisjZW5kaWYgLy8gQnl0ZWNvZGVDb252ZW50
aW9uc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTcg
KzI3LDQwIEBACiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgorI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0Mg
ewogCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVU5V
U0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4
KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJv
ZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CisgICAg
TExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGluc3RydWN0aW9uWzRdLnUuY2FsbExp
bmtJbmZvOworICAgIAorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyhjYWxsTGlua0luZm8tPmxh
c3RTZWVuQ2FsbGVlLmdldCgpLCBmYWxzZSk7CisjZWxzZQorICAgIHJldHVybiBDYWxsTGlua1N0
YXR1cygwLCBmYWxzZSk7CisjZW5kaWYKK30KKwogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4KQogewogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURf
UEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BS
T0ZJTEVSKQotICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygKLSAgICAgICAgcHJvZmlsZWRCbG9j
ay0+Z2V0Q2FsbExpbmtJbmZvKGJ5dGVjb2RlSW5kZXgpLmxhc3RTZWVuQ2FsbGVlLmdldCgpLAot
ICAgICAgICBwcm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSk7
CisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1iZXJPZkNhbGxMaW5rSW5mb3MoKSkKKyAgICAg
ICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7
CisgICAgCisgICAgaWYgKHByb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKGJ5dGVjb2Rl
SW5kZXgpKQorICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgdHJ1ZSk7CisgICAgCisg
ICAgSlNGdW5jdGlvbiogdGFyZ2V0ID0gcHJvZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJbmZvKGJ5
dGVjb2RlSW5kZXgpLmxhc3RTZWVuQ2FsbGVlLmdldCgpOworICAgIGlmICghdGFyZ2V0KQorICAg
ICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4
KTsKKyAgICAKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXModGFyZ2V0LCBmYWxzZSk7CiAjZWxz
ZQogICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygwLCBmYWxzZSk7CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCShyZXZp
c2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtT
dGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTUgKzQ3LDE3IEBAIHB1YmxpYzoKICAgICAK
ICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4KTsKICAgICAKLSAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4g
ISFtX2NhbGxUYXJnZXQ7IH0KKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gISFtX2Nh
bGxUYXJnZXQgfHwgbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIAotICAgIGJvb2wgb3BlcmF0
b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbFRhcmdldDsgfQorICAgIGJvb2wgb3BlcmF0b3Ih
KCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KICAgICAKICAgICBib29sIGNvdWxkVGFrZVNs
b3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIAogICAg
IEpTRnVuY3Rpb24qIGNhbGxUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQ7IH0K
ICAgICAKIHByaXZhdGU6CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9tTExJ
bnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisgICAgCiAgICAgSlNGdW5j
dGlvbiogbV9jYWxsVGFyZ2V0OwogICAgIGJvb2wgbV9jb3VsZFRha2VTbG93UGF0aDsKIH07Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2
aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0
aW9uLmgiCiAjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTVmFs
dWUuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiUmVwYXRj
aEJ1ZmZlci5oIgogI2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHN0
ZGlvLmg+CkBAIC01OSw4ICs2MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogdXNpbmcgbmFtZXNwYWNl
IERGRzsKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NB
TVBMSU5HKQotCiBzdGF0aWMgVVN0cmluZyBlc2NhcGVRdW90ZXMoY29uc3QgVVN0cmluZyYgc3Ry
KQogewogICAgIFVTdHJpbmcgcmVzdWx0ID0gc3RyOwpAQCAtMzU4LDEwICszNTcsMTAgQEAgdm9p
ZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjKSBjbwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBpICs9IG9wY29kZUxlbmd0aHNbZXhlYy0+
aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbaV0udS5vcGNvZGUpXSkK
ICAgICAgICAgKytpbnN0cnVjdGlvbkNvdW50OwogCi0gICAgcHJpbnRmKCIlbHUgbV9pbnN0cnVj
dGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0
ZXIocylcblxuIiwKKyAgICBwcmludGYoIiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0
ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUo
cylcblxuIiwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25D
b3VudCksCiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygp
LnNpemUoKSAqIHNpemVvZihJbnN0cnVjdGlvbikpLAotICAgICAgICB0aGlzLCBtX251bVBhcmFt
ZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgdGhpcywgbV9udW1QYXJhbWV0
ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycywgbV9udW1WYXJzKTsKIAogICAgIFZlY3RvcjxJbnN0
cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsK
ICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBpbnN0cnVjdGlv
bnMoKS5lbmQoKTsKQEAgLTg5OCw2ICs4OTcsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhl
Y1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRp
b24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7Cisg
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CisgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWwiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX2dlbmVyaWM6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgInB1dF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTEyOTEsOCArMTI5OCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywg
Y28KICAgICB9CiB9CiAKLSNlbmRpZiAvLyAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRShPUENP
REVfU0FNUExJTkcpCi0KICNpZiBEVU1QX0NPREVfQkxPQ0tfU1RBVElTVElDUwogc3RhdGljIEhh
c2hTZXQ8Q29kZUJsb2NrKj4gbGl2ZUNvZGVCbG9ja1NldDsKICNlbmRpZgpAQCAtMTQ1OSw2ICsx
NDY0LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLAogewogICAg
IHNldE51bVBhcmFtZXRlcnMob3RoZXIubnVtUGFyYW1ldGVycygpKTsKICAgICBvcHRpbWl6ZUFm
dGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsKICAgICAKICAgICBpZiAob3RoZXIu
bV9yYXJlRGF0YSkgewogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0x
NTA3LDYgKzE1MTMsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBv
CiAgICAgQVNTRVJUKG1fc291cmNlKTsKICAgICAKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7
CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsKIAogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNT
CiAgICAgbGl2ZUNvZGVCbG9ja1NldC5hZGQodGhpcyk7CkBAIC0xNTI0LDcgKzE1MzEsMTEgQEAg
Q29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKICNpZiBFTkFCTEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxF
KQogICAgIGR1bXBWYWx1ZVByb2ZpbGVzKCk7CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShM
TElOVCkgICAgCisgICAgd2hpbGUgKG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCkgIT0gbV9p
bmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLmJl
Z2luKCktPnJlbW92ZSgpOworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKICNpZiBFTkFCTEUoSklU
KQogICAgIC8vIFdlIG1heSBiZSBkZXN0cm95ZWQgYmVmb3JlIGFueSBDb2RlQmxvY2tzIHRoYXQg
cmVmZXIgdG8gdXMgYXJlIGRlc3Ryb3llZC4KICAgICAvLyBDb25zaWRlciB0aGF0IHR3byBDb2Rl
QmxvY2tzIGJlY29tZSB1bnJlYWNoYWJsZSBhdCB0aGUgc2FtZSB0aW1lLiBUaGVyZQpAQCAtMTcz
Niw4ICsxNzQ3LDU5IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgK
ICNlbHNlCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZVVubGlua2luZyA9IGZhbHNlOwog
I2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogICAgIAorI2lmIEVOQUJMRShM
TElOVCkKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVy
cHJldGVyOworICAgIC8vIGludGVycHJldGVyLT5lbmFibGVkKCkgcmV0dXJucyB0cnVlIGlmIHRo
ZSBvbGQgQysrIGludGVycHJldGVyIGlzIGVuYWJsZWQuIElmIHRoYXQncyBlbmFibGVkCisgICAg
Ly8gdGhlbiB3ZSdyZSBub3QgdXNpbmcgTExJbnQuCisgICAgaWYgKCFpbnRlcnByZXRlci0+ZW5h
YmxlZCgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5z
dHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIElu
c3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdl
dE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgeworICAgICAgICAgICAgY2Fz
ZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAg
ICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFy
a2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1
cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQg
PSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY3VySW5z
dHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhl
YXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpKQorICAgICAg
ICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVj
dHVyZUNoYWluLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAg
ICAgICBjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAg
ICAgIGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAgICAg
ICAgICAgICBjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSA9IGludGVycHJldGVyLT5nZXRPcGNv
ZGUob3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRl
ZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAg
ICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xv
YmFsCisgICAgICAgICAgICAgICAgICAgfHwgaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cklu
c3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKKyAg
ICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNN
YXJrZWQoY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUu
Y2xlYXIoKTsKKyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9IDA7Cisg
ICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlu
a0luZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5m
b3NbaV0uaXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQobV9sbGludENhbGxMaW5rSW5mb3Nb
aV0uY2FsbGVlLmdldCgpKSkgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5n
KQorICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IGNhbGwgZnJvbSAl
cC5cbiIsIHRoaXMpOworICAgICAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVu
bGluaygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCEhbV9sbGludENhbGxMaW5r
SW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlu
a0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBtX2xsaW50
Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgICAgICB9CisgICAg
fQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8v
IENoZWNrIGlmIHdlJ3JlIG5vdCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAgICAg
aWYgKCEoc2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBtX2Rm
Z0RhdGEtPmxpdmVuZXNzSGFzQmVlblByb3ZlZCkpIHsKQEAgLTE4NTgsMTAgKzE5MjAsMTIgQEAg
dm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbV9mdW5jdGlvbkRlY2xzLnNpemUoKTsgKytpKQogICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmbV9mdW5jdGlvbkRlY2xzW2ldKTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCi0g
ICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgp
LCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3Is
ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7Ci0gICAg
Zm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkg
PSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmlu
c3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIGlmICht
X2dsb2JhbERhdGEtPmludGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXpl
X3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8
IHNpemU7ICsraSkKKyAgICAgICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1
Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOworICAgICAgICBmb3Ig
KHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7
IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmlu
c3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIH0KICNl
bmRpZgogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0yMDcwLDYgKzIxMzQsMTIgQEAgdm9pZCBD
b2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIHsKICAgICBpZiAoISFtX2FsdGVybmF0aXZlKQogICAg
ICAgICBtX2FsdGVybmF0aXZlLT51bmxpbmtDYWxscygpOworI2lmIEVOQUJMRShMTElOVCkKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9zLnNpemUoKTsgKytp
KSB7CisgICAgICAgIGlmIChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpKQorICAg
ICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgfQorI2VuZGlm
CiAgICAgaWYgKCEobV9jYWxsTGlua0luZm9zLnNpemUoKSB8fCBtX21ldGhvZENhbGxMaW5rSW5m
b3Muc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5V
c2VKSVQoKSkKQEAgLTIwODQsMTAgKzIxNTQsMzkgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0Nh
bGxzKCkKIAogdm9pZCBDb2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMoKQogeworI2lmIEVO
QUJMRShMTElOVCkKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBt
X2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMu
YmVnaW4oKS0+dW5saW5rKCk7CisjZW5kaWYKKyAgICBpZiAobV9pbmNvbWluZ0NhbGxzLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcih0
aGlzKTsKICAgICB3aGlsZSAobV9pbmNvbWluZ0NhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0Nh
bGxzLmVuZCgpKQogICAgICAgICBtX2luY29taW5nQ2FsbHMuYmVnaW4oKS0+dW5saW5rKCptX2ds
b2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogfQorCit1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVj
b2RlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNz
KQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAocmV0dXJuQWRkcmVzcy52YWx1ZSgpID49
IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2JlZ2luKQorICAgICAgICAmJiByZXR1cm5BZGRy
ZXNzLnZhbHVlKCkgPD0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZW5kKSkgeworICAgICAg
ICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkpOworICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJs
b2NrKCkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShn
ZXRKSVRUeXBlKCkpKTsKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gZXhlYy0+
Y3VycmVudFZQQygpOworICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb24pOworICAgICAgICByZXR1
cm4gYnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb24pOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VE
X1BBUkFNKGV4ZWMpOworI2VuZGlmCisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1
cm4gMTsKKyAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxs
SW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOworICAgIGlmICgh
Y2FsbEluZGljZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gYmluYXJ5
U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2Fs
bFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBn
ZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zm
c2V0OworfQogI2VuZGlmCiAKIHZvaWQgQ29kZUJsb2NrOjpjbGVhckV2YWxDYWNoZSgpCkBAIC0y
MTgzLDI0ICsyMjgyLDQ1IEBAIGJvb2wgRnVuY3Rpb25Db2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRo
REYKIAogdm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdl
dEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6
OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBs
YWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhl
Y3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwogfQogCiB2
b2lkIEV2YWxDb2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgp
ICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6
aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkp
OwogICAgIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5q
ZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRnVuY3Rpb25D
b2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENv
ZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdl
dEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0
YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlz
b25PcHRpbWl6ZWRDb2RlRm9yKCpnbG9iYWxEYXRhKCksIG1faXNDb25zdHJ1Y3RvciA/IENvZGVG
b3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7CiB9CisKK3ZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6
aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChn
ZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRo
aXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb2dyYW1FeGVj
dXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlKGdsb2JhbERhdGEpOworfQor
Cit2b2lkIEV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVy
VGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGls
ZShnbG9iYWxEYXRhKTsKK30KKwordm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZUlt
cGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkg
PT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFj
ZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93
bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZUZvcihnbG9iYWxEYXRhLCBtX2lzQ29uc3RydWN0
b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOworfQogI2VuZGlmCiAKICNpZiBF
TkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC0yMzAzLDYgKzI0MjMsMTggQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXBWYWx1ZVByb2ZpbGVzKCkKIH0KICNlbmRpZgogCit2b2lkIENvZGVCbG9jazo6aGFu
ZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKQoreworI2lmICFFTkFCTEUoT1BDT0RF
X1NBTVBMSU5HKSAmJiAhRU5BQkxFKExMSU5UKQorICAgIGlmIChCeXRlY29kZUdlbmVyYXRvcjo6
ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoISFhbHRlcm5h
dGl2ZSgpKQorICAgICAgICBkaXNjYXJkQnl0ZWNvZGUoKTsKKyAgICBlbHNlCisgICAgICAgIGRp
c2NhcmRCeXRlY29kZUxhdGVyKCk7CisjZW5kaWYKK30KKwogI2lmbmRlZiBOREVCVUcKIGJvb2wg
Q29kZUJsb2NrOjp1c2VzT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlEKQogewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTA2MDQ1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaWZuZGVmIENvZGVCbG9ja19oCiAjZGVmaW5lIENvZGVC
bG9ja19oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2Fs
bExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQu
aCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCkBAIC01MCw2ICs1MSw3IEBACiAjaW5jbHVkZSAi
SklUV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRl
ICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUg
IkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQcmVkaWN0aW9uVHJh
Y2tlci5oIgpAQCAtNjUsMTYgKzY3LDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2lu
Y2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKLS8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBp
biBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRv
IHRoZWlyIHJhbmdlczoKLS8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBp
bmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxs
IGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCi0vLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZG
RiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwg
dmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCi0vLyAg
ICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAw
MDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2su
Ci1zdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAw
MDsKLQogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3Mg
REZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogCiAgICAgaW5saW5lIGludCB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0
ZXIoaW50IGFyZ3VtZW50c1JlZ2lzdGVyKSB7IHJldHVybiBhcmd1bWVudHNSZWdpc3RlciAtIDE7
IH0KIApAQCAtODMsNiArODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb2RlQmxv
Y2sgOiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXplciwgcHVibGljIFdlYWtSZWZlcmVuY2VI
YXJ2ZXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gQ29weVBhcnNlZEJsb2NrVGFnIHsgQ29weVBh
cnNlZEJsb2NrIH07CiAgICAgcHJvdGVjdGVkOgpAQCAtMTIzLDcgKzEyMSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAg
ICAgICAgICAgICByZXN1bHQgPSByZXN1bHQtPmFsdGVybmF0aXZlKCk7CiAgICAgICAgICAgICBB
U1NFUlQocmVzdWx0KTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9
PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNC
YXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMTM0LDExICsxMzIsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0jaWYgIWRl
ZmluZWQoTkRFQlVHKSB8fCBFTkFCTEVfT1BDT0RFX1NBTVBMSU5HCiAgICAgICAgIHZvaWQgZHVt
cChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZXMoY29uc3Qg
SW5zdHJ1Y3Rpb24qKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZShjb25zdCBj
aGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiosIGludCBvcGVyYW5kKSBjb25zdDsKLSNlbmRp
ZgogCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmlj
dE1vZGU7IH0KIApAQCAtMTk0LDE1ICsxOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxNZXRob2RDYWxsTGlua0luZm8sIHVuc2lnbmVkLCBn
ZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUluZGV4PihtX21ldGhvZENhbGxMaW5rSW5mb3Mu
YmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSwgYnl0ZWNvZGVJbmRleCkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoUmV0dXJuQWRkcmVz
c1B0ciByZXR1cm5BZGRyZXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fcmFyZURh
dGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBWZWN0b3I8Q2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1f
Y2FsbFJldHVybkluZGV4VmVjdG9yOwotICAgICAgICAgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXpl
KCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICByZXR1cm4gYmluYXJ5
U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2Fs
bFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBn
ZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zm
c2V0OwotICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0
ZSosIFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
Rm9yQ2FsbEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKQEAgLTIyMywxMSArMjEx
LDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBtX2luY29taW5n
Q2FsbHMucHVzaChpbmNvbWluZyk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoTExJTlQpCisgICAg
ICAgIHZvaWQgbGlua0luY29taW5nQ2FsbChMTEludENhbGxMaW5rSW5mbyogaW5jb21pbmcpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLnB1c2goaW5jb21pbmcp
OworICAgICAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogICAgICAgICAKICAgICAgICAg
dm9pZCB1bmxpbmtJbmNvbWluZ0NhbGxzKCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklU
KQogCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShM
TElOVCkKICAgICAgICAgdm9pZCBzZXRKSVRDb2RlTWFwKFBhc3NPd25QdHI8Q29tcGFjdEpJVENv
ZGVNYXA+IGppdENvZGVNYXApCiAgICAgICAgIHsKICAgICAgICAgICAgIG1faml0Q29kZU1hcCA9
IGppdENvZGVNYXA7CkBAIC0yMzYsNyArMjMwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHsKICAgICAgICAgICAgIHJldHVybiBtX2ppdENvZGVNYXAuZ2V0KCk7CiAgICAgICAgIH0KKyNl
bmRpZgogICAgICAgICAKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgdm9pZCBjcmVhdGVE
RkdEYXRhSWZOZWNlc3NhcnkoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoISFtX2RmZ0Rh
dGEpCkBAIC0zMzUsMTIgKzMzMSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogI2Vu
ZGlmCiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KEluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICYmIHJldHVy
bkFkZHJlc3MgPCBpbnN0cnVjdGlvbnMoKS5lbmQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJl
Z2luKCk7CiAgICAgICAgIH0KLSNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0SXNOdW1lcmljQ29t
cGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmlj
Q29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgICAgIGJv
b2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgeyByZXR1cm4gbV9pc051bWVyaWNDb21wYXJl
RnVuY3Rpb247IH0KQEAgLTM1NCwxNyArMzQ5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHsKICAgICAgICAgICAgIG1fc2hvdWxkRGlzY2FyZEJ5dGVjb2RlID0gdHJ1ZTsKICAgICAgICAg
fQotICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCkKLSAg
ICAgICAgewotICAgICAgICAgICAgaWYgKCEhYWx0ZXJuYXRpdmUoKSkKLSAgICAgICAgICAgICAg
ICBkaXNjYXJkQnl0ZWNvZGUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBk
aXNjYXJkQnl0ZWNvZGVMYXRlcigpOwotICAgICAgICB9CisgICAgICAgIHZvaWQgaGFuZGxlQnl0
ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICAgICAgCi0jaWZuZGVmIE5ERUJVRwog
ICAgICAgICBib29sIHVzZXNPcGNvZGUoT3Bjb2RlSUQpOwotI2VuZGlmCiAKICAgICAgICAgdW5z
aWduZWQgaW5zdHJ1Y3Rpb25Db3VudCgpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25Db3VudDsgfQog
ICAgICAgICB2b2lkIHNldEluc3RydWN0aW9uQ291bnQodW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3Vu
dCkgeyBtX2luc3RydWN0aW9uQ291bnQgPSBpbnN0cnVjdGlvbkNvdW50OyB9CkBAIC0zODcsMTcg
KzM3NCwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY3V0YWJsZU1lbW9yeUhhbmRs
ZSogZXhlY3V0YWJsZU1lbW9yeSgpIHsgcmV0dXJuIGdldEpJVENvZGUoKS5nZXRFeGVjdXRhYmxl
TWVtb3J5KCk7IH0KICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChF
eGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGpl
dHRpc29uKCkgPSAwOworICAgICAgICBib29sIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZ2V0SklUVHlwZSgpICE9IEpJVENv
ZGU6OkludGVycHJldGVyVGh1bmspIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlw
ZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBqaXRDb21waWxlSW1wbChnbG9iYWxEYXRh
KTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwg
Q29kZUJsb2NrKiByZXBsYWNlbWVudCgpID0gMDsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNv
bXBpbGVXaXRoREZHKCkgPSAwOwogICAgICAgICBib29sIGhhc09wdGltaXplZFJlcGxhY2VtZW50
KCkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2Rl
OjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNv
ZGUoZ2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHJlcGxhY2VtZW50
KCktPmdldEpJVFR5cGUoKSA+IGdldEpJVFR5cGUoKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAg
ICAgICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVu
dCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKICAgICAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjpp
c0Jhc2VsaW5lQ29kZShyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAg
ICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKSA9PSB0aGlzKTsKICAgICAgICAgICAgIH0KICNlbmRp
ZgpAQCAtNDU2LDE4ICs0NTIsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBj
bGVhckV2YWxDYWNoZSgpOwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICB2b2lk
IGFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24odW5zaWduZWQgcHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVz
ZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBw
ZW5kKHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgbV9wcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CiAgICAg
ICAgIH0KICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24odW5zaWduZWQg
Z2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1f
Z2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZl
SW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOworICAgICAgICAg
ICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb24pOwogICAgICAgICB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluc3RydWN0
aW9uQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CisjaWYgRU5BQkxF
KExMSU5UKQorICAgICAgICBMTEludENhbGxMaW5rSW5mbyogYWRkTExJbnRDYWxsTGlua0luZm8o
KQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvcy5hcHBlbmQoTExJ
bnRDYWxsTGlua0luZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gJm1fbGxpbnRDYWxsTGlua0lu
Zm9zLmxhc3QoKTsKKyAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAg
dm9pZCBzZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVj
dHVyZVN0dWJJbmZvcy5ncm93KHNpemUpOyB9CkBAIC00NzYsOCArNDc1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5mbyh1bnNpZ25lZCBnbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2dsb2Jh
bERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9z
LmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKKyAg
ICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhn
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKICAgICAgICAgfQogICAgICAgICBHbG9iYWxSZXNv
bHZlSW5mbyYgZ2xvYmFsUmVzb2x2ZUluZm8oaW50IGluZGV4KSB7IHJldHVybiBtX2dsb2JhbFJl
c29sdmVJbmZvc1tpbmRleF07IH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5mb0F0
Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAtNDg4LDYgKzQ4Niw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkTWV0aG9kQ2FsbExpbmtJbmZv
cyh1bnNpZ25lZCBuKSB7IEFTU0VSVChtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKTsgbV9tZXRo
b2RDYWxsTGlua0luZm9zLmdyb3cobik7IH0KICAgICAgICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBt
ZXRob2RDYWxsTGlua0luZm8oaW50IGluZGV4KSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5m
b3NbaW5kZXhdOyB9CisgICAgICAgIHNpemVfdCBudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3Mo
KSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpOyB9CiAjZW5kaWYKICAgICAg
ICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtNTI4LDYgKzUyNywxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVP
ZmZzZXRdLnUub3Bjb2RlKSkgLSAxXS51LnByb2ZpbGUgPT0gcmVzdWx0KTsKICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KKyAgICAgICAgUHJlZGljdGVkVHlwZSB2YWx1ZVBy
b2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgdW5zaWduZWQgdG90YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMoKQog
ICAgICAgICB7CkBAIC01NTQsMTIgKzU1NywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
CiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQog
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVl
ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2Nv
dW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtl
U2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4
ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hv
bGQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgY291bGRUYWtlU2xvd0Nhc2Uo
aW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9m
UmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIHVuc2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0g
T3B0aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91
YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6Y291bGRUYWtl
U2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KQEAgLTU3OCwxMiArNTg1LDE2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTcGVjaWFsRmFz
dENhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51
bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RD
YXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwog
ICAgICAgICAgICAgcmV0dXJuIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID49IE9wdGlvbnM6Omxpa2Vs
eVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4oc3BlY2lh
bEZhc3RDYXNlQ291bnQpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2Vs
eVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBi
b29sIGxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VD
b3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+
bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBz
cGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5t
X2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgLSBz
cGVjaWFsRmFzdENhc2VDb3VudDsKQEAgLTU5Miw2ICs2MDMsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UoaW50IGJ5dGVj
b2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQ
cm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVu
c2lnbmVkIHNsb3dDYXNlQ291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxG
YXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBz
bG93Q2FzZUNvdW50ICsgc3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBAIC02ODMsNyArNjk2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGFkZEZyZXF1ZW50RXhpdFNp
dGUoY29uc3QgREZHOjpGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAg
ICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAg
ICAgICAgICAgIHJldHVybiBtX2V4aXRQcm9maWxlLmFkZChzaXRlKTsKICAgICAgICAgfQogCkBA
IC03ODgsNiArODAxLDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGNvcHlQb3N0
UGFyc2VEYXRhRnJvbShDb2RlQmxvY2sqIGFsdGVybmF0aXZlKTsKICAgICAgICAgdm9pZCBjb3B5
UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgICAgICAKKyAgICAgICAgLy8gRnVu
Y3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIEpJVHRpbmcga2lja3MgaW4sIGluIGEgbWl4ZWQg
bW9kZQorICAgICAgICAvLyBleGVjdXRpb24gd29ybGQuCisgICAgICAgIAorICAgICAgICB2b2lk
IGRvbnRKSVRBbnl0aW1lU29vbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVj
dXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0
aW1lU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRBZnRlcldhcm1V
cCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlv
bnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICB2b2lkIGppdFNvb24oKQorICAgICAgICB7CisgICAgICAgICAgICBt
X2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JK
SVRTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQzMl90IGxsaW50RXhlY3V0
ZUNvdW50ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9sbGludEV4
ZWN1dGVDb3VudGVyOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICAvLyBGdW5jdGlvbnMg
Zm9yIGNvbnRyb2xsaW5nIHdoZW4gdGllcmVkIGNvbXBpbGF0aW9uIGtpY2tzIGluLiBUaGlzCiAg
ICAgICAgIC8vIGNvbnRyb2xzIGJvdGggd2hlbiB0aGUgb3B0aW1pemluZyBjb21waWxlciBpcyBp
bnZva2VkIGFuZCB3aGVuIE9TUgogICAgICAgICAvLyBlbnRyeSBoYXBwZW5zLiBUd28gdHJpZ2dl
cnMgZXhpc3Q6IHRoZSBsb29wIHRyaWdnZXIgYW5kIHRoZSByZXR1cm4KQEAgLTk4MCw2ICsxMDE2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zaG91bGREaXNjYXJkQnl0ZWNv
ZGU7CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1w
bChKU0dsb2JhbERhdGEmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZl
cmVuY2VzKFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29u
ZGl0aW9uYWxseSgpOwogICAgICAgICAKQEAgLTk5Miw3ICsxMDI5LDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgdGFsbHlGcmVxdWVudEV4aXRTaXRlcygpIHsgfQogI2VuZGlmCiAg
ICAgICAgIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykK
ICAgICAgICAgdm9pZCBkdW1wKEV4ZWNTdGF0ZSosIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvbj46
OmNvbnN0X2l0ZXJhdG9yJiBiZWdpbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0
b3ImKSBjb25zdDsKIAogICAgICAgICBDU3RyaW5nIHJlZ2lzdGVyTmFtZShFeGVjU3RhdGUqLCBp
bnQgcikgY29uc3Q7CkBAIC0xMDAyLDcgKzEwMzgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgdm9pZCBwcmludEdldEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJ
bnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0OwogICAg
ICAgICB2b2lkIHByaW50Q2FsbE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPElu
c3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7CiAgICAg
ICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8
SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKLSNl
bmRpZgogICAgICAgICB2b2lkIHZpc2l0U3RydWN0dXJlcyhTbG90VmlzaXRvciYsIEluc3RydWN0
aW9uKiB2UEMpIGNvbnN0OwogICAgICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTEwNjMs
OSArMTA5OCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFNvdXJjZVByb3Zp
ZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7CiAKLSNpZiBF
TkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9wcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2dsb2JhbFJlc29s
dmVJbnN0cnVjdGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBTZWdtZW50ZWRWZWN0
b3I8TExJbnRDYWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxsTGlua0luZm9zOworICAgICAgICBT
ZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2Rl
PExMSW50Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdMTEludENhbGxzOwogI2VuZGlmCiAjaWYg
RU5BQkxFKEpJVCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0cnVjdHVy
ZVN0dWJJbmZvczsKQEAgLTEwNzYsOSArMTExMywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNoZWNrOwogICAgICAg
ICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxD
YWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2VuZGlmCi0jaWYgRU5BQkxFKERGR19K
SVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgT3duUHRy
PENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAgICAgIAorI2VuZGlmCisjaWYg
RU5BQkxFKERGR19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbiB7
CiAgICAgICAgICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigpIHsgfQogICAgICAgICAgICAg
CkBAIC0xMTQxLDEyICsxMTc5LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93blB0
cjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAgIAorICAgICAgICBpbnQzMl90IG1f
bGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAgICAgIGludDMyX3QgbV9qaXRFeGVj
dXRlQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVy
OwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFpbENvdW50ZXI7CiAgICAgICAgIHVp
bnQ4X3QgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9yZW9w
dGltaXphdGlvblJldHJ5Q291bnRlcjsKLQorICAgICAgICAKICAgICAgICAgc3RydWN0IFJhcmVE
YXRhIHsKICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHB1Ymxp
YzoKQEAgLTEyMTksNiArMTI1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoK
ICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBT
Y29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2
aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNh
bkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKQEAgLTEyNTMsNiArMTI5NCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGls
ZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpT
R2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsK
ICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKQEAgLTEy
OTAsNiArMTMzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAg
dmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWlu
Tm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENv
ZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVX
aXRoREZHKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjcsMjAgKzI3LDQ5IEBACiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgogCiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50
KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRp
ZmllciYgaWRlbnQpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVO
VVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lm
IEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKyAgICAKKyAgICBp
ZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfbWV0aG9kX2NoZWNrKQorICAg
ICAgICBpbnN0cnVjdGlvbisrOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVj
dGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAgICAgICAg
cmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZv
dW5kLCBmYWxzZSk7CisgICAgCisgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpw
cm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5v
dEZvdW5kKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1
Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhTaW1wbGVEaXJlY3QsIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQsIGZhbHNl
KTsKKyNlbHNlCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0
dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisjZW5kaWYKK30KKwogR2V0QnlJZFN0YXR1cyBH
ZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBV
TlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9G
SUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mU3RydWN0dXJlU3R1YkluZm9z
KCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVj
b2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICAvLyBGaXJzdCBjaGVjayBpZiBpdCBtYWtlcyBl
aXRoZXIgY2FsbHMsIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBiZSBzdXBlciBjYXJlZnVsLCBv
cgogICAgIC8vIGlmIGl0J3Mgbm90IHNldCBhdCBhbGwsIGluIHdoaWNoIGNhc2Ugd2UgcHVudC4K
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRTdHVi
SW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJl
dHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3Vu
ZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVj
b2RlSW5kZXgsIGlkZW50KTsKICAgICAKICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxp
c3QqIGxpc3Q7CiAgICAgaW50IGxpc3RTaXplOwpAQCAtNjAsMTggKzg5LDE5IEBAIEdldEJ5SWRT
dGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICB9CiAgICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgIGlmICghbGlzdC0+bGlzdFtpXS5pc0Rp
cmVjdCkKLSAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVj
dHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhN
YWtlc0NhbGxzLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIHRydWUpOwogICAgIH0KICAgICAK
ICAgICAvLyBOZXh0IGNoZWNrIGlmIGl0IHRha2VzIHNsb3cgY2FzZSwgaW4gd2hpY2ggY2FzZSB3
ZSB3YW50IHRvIGJlIGtpbmQgb2YgY2FyZWZ1bC4KICAgICBpZiAocHJvZmlsZWRCbG9jay0+bGlr
ZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiBHZXRCeUlk
U3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBub3RG
b3VuZCwgdHJ1ZSk7CiAgICAgCiAgICAgLy8gRmluYWxseSBmaWd1cmUgb3V0IGlmIHdlIGNhbiBk
ZXJpdmUgYW4gYWNjZXNzIHN0cmF0ZWd5LgogICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OworICAg
IHJlc3VsdC5tX3dhc1NlZW5JbkpJVCA9IHRydWU7CiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nl
c3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBHZXRCeUlk
U3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAg
IHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlk
ZW50KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6IHsKICAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5mby51LmdldEJ5SWRTZWxmLmJhc2VPYmpl
Y3RTdHJ1Y3R1cmUuZ2V0KCk7CkBAIC0xMzAsNyArMTYwLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZSAv
LyBFTkFCTEUoSklUKQotICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0
cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CiAjZW5kaWYgLy8gRU5B
QkxFKEpJVCkKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMCArNDks
MTEgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgR2V0QnlJZFN0YXR1cyhTdGF0
ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQp
CisgICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1
Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQsIGJvb2wgd2FzU2VlbkluSklUKQogICAgICAgICA6IG1f
c3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQogICAg
ICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBtX3dhc1NlZW5JbkpJVCh3YXNTZWVu
SW5KSVQpCiAgICAgewogICAgICAgICBBU1NFUlQoKHN0YXRlID09IFNpbXBsZURpcmVjdCkgPT0g
KG9mZnNldCAhPSBub3RGb3VuZCkpOwogICAgIH0KQEAgLTcwLDEwICs3MSwxNSBAQCBwdWJsaWM6
CiAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdCB7IHJldHVybiBt
X3N0cnVjdHVyZVNldDsgfQogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29m
ZnNldDsgfQogICAgIAorICAgIGJvb2wgd2FzU2VlbkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93
YXNTZWVuSW5KSVQ7IH0KKyAgICAKIHByaXZhdGU6CisgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMg
Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVu
dGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmVTZXQgbV9z
dHJ1Y3R1cmVTZXQ7CiAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIGJvb2wgbV93YXNTZWVuSW5K
SVQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAt
NDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xh
c3MgU3RydWN0dXJlOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOworICAgIHN0cnVjdCBMTElu
dENhbGxMaW5rSW5mbzsKICAgICBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCiAjaWYgRU5BQkxFKEpJ
VCkKQEAgLTE0Niw2ICsxNDcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHN0
cnVjdCBJbnN0cnVjdGlvbiB7CisgICAgICAgIEluc3RydWN0aW9uKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgdS5qc0NlbGwuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAg
SW5zdHJ1Y3Rpb24oT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogI2lmICFFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikKQEAgLTE4Miw2ICsxODgsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJG
dW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7IH0KICAgICAgICAgCisgICAgICAgIElu
c3RydWN0aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pIHsgdS5jYWxsTGlua0lu
Zm8gPSBjYWxsTGlua0luZm87IH0KKyAgICAgICAgCiAgICAgICAgIEluc3RydWN0aW9uKFZhbHVl
UHJvZmlsZSogcHJvZmlsZSkgeyB1LnByb2ZpbGUgPSBwcm9maWxlOyB9CiAKICAgICAgICAgdW5p
b24gewpAQCAtMTkxLDcgKzE5OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgV3Jp
dGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3RydWN0dXJlQ2hhaW47CiAgICAgICAgICAg
ICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxsOwogICAgICAgICAgICAgUHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKKyAgICAgICAgICAgIExMSW50Q2FsbExpbmtJ
bmZvKiBjYWxsTGlua0luZm87CiAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7Cisg
ICAgICAgICAgICB2b2lkKiBwb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAogICAgIHBy
aXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlu
a0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJ
bnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
TExJbnRDYWxsTGlua0luZm9faAorI2RlZmluZSBMTEludENhbGxMaW5rSW5mb19oCisKKyNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisj
aW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorCituYW1lc3BhY2UgSlNDIHsKKwor
c3RydWN0IEluc3RydWN0aW9uOworCitzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm8gOiBwdWJsaWMg
QmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+IHsKKyAgICBMTEludENhbGxM
aW5rSW5mbygpCisgICAgeworICAgIH0KKyAgICAKKyAgICB+TExJbnRDYWxsTGlua0luZm8oKQor
ICAgIHsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAg
ICB9CisgICAgCisgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIGNhbGxlZTsgfQorICAgIAor
ICAgIHZvaWQgdW5saW5rKCkKKyAgICB7CisgICAgICAgIGNhbGxlZS5jbGVhcigpOworICAgICAg
ICBtYWNoaW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgICAgICBp
ZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBX
cml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0
aW9uPiBsYXN0U2VlbkNhbGxlZTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFjaGluZUNv
ZGVUYXJnZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIExMSW50Q2Fs
bExpbmtJbmZvX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhv
ZENhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwxMSBAQCBNZXRob2RDYWxsTGlua1N0YXR1cyBNZXRo
b2RDYWxsTGlua1N0YXR1CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVO
VVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFM
VUVfUFJPRklMRVIpCisgICAgLy8gTk9URTogVGhpcyBkb2VzIG5vdCBoYXZlIGFuIExMSW50IGZh
bGwtYmFjayBiZWNhdXNlIExMSW50IGRvZXMgbm90IGRvIGFueSBtZXRob2QKKyAgICAvLyBjYWxs
IGxpbmsgY2FjaGluZy4KKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mTWV0aG9kQ2Fs
bExpbmtJbmZvcygpKQorICAgICAgICByZXR1cm4gTWV0aG9kQ2FsbExpbmtTdGF0dXMoKTsKKyAg
ICAKICAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGwgPSBwcm9maWxlZEJsb2NrLT5n
ZXRNZXRob2RDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCk7CiAgICAgCiAgICAgaWYgKCFtZXRo
b2RDYWxsLnNlZW4gfHwgIW1ldGhvZENhbGwuY2FjaGVkU3RydWN0dXJlKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjMsNiArMTIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9hcmd1
bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkgXAogICAg
ICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAorICAgICAgICBtYWNybyhv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9p
ZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmljLCA5KSBc
CiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApAQCAtMjAyLDYgKzIwNCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIGVudW0geyBGT1JfRUFDSF9PUENPREVfSUQo
T1BDT0RFX0lEX0VOVU0pIH0gT3Bjb2RlSUQ7CiAgICAgI3VuZGVmIE9QQ09ERV9JRF9FTlVNCiAK
KyAgICBjb25zdCBpbnQgbWF4T3Bjb2RlTGVuZ3RoID0gOTsKICAgICBjb25zdCBpbnQgbnVtT3Bj
b2RlSURzID0gb3BfZW5kICsgMTsKIAogICAgICNkZWZpbmUgT1BDT0RFX0lEX0xFTkdUSFMoaWQs
IGxlbmd0aCkgY29uc3QgaW50IGlkIyNfbGVuZ3RoID0gbGVuZ3RoOwpAQCAtMjE4LDcgKzIyMSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoVkVSSUZZX09Q
Q09ERV9JRCk7CiAgICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQKIAotI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJF
VEVSKSB8fCBFTkFCTEUoTExJTlQpCiAjaWYgQ09NUElMRVIoUlZDVCkgfHwgQ09NUElMRVIoSU5U
RUwpCiAgICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTA2
MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNywyNyArMjcsNjkgQEAKICNpbmNsdWRlICJQdXRCeUlkU3Rh
dHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hh
aW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK1B1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6
Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQoreworICAgIFVOVVNFRF9QQVJBTShwcm9maWxl
ZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisgICAgVU5VU0VEX1BB
UkFNKGlkZW50KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5k
ZXg7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0
dXJlLmdldCgpOworICAgIGlmICghc3RydWN0dXJlKQorICAgICAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgCisgICAgaWYgKGlu
c3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZCkgeworICAgICAgICBz
aXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEo
KSwgaWRlbnQpOworICAgICAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICAgICAg
cmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOwor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlUmVwbGFjZSwgc3Ry
dWN0dXJlLCAwLCAwLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQoaW5zdHJ1Y3Rp
b25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Cisg
ICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgCisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUg
PSBpbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBTdHJ1Y3R1cmVDaGFpbiog
Y2hhaW4gPSBpbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpOworICAgIEFTU0VS
VChuZXdTdHJ1Y3R1cmUpOworICAgIEFTU0VSVChjaGFpbik7CisgICAgCisgICAgc2l6ZV90IG9m
ZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlk
ZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgCisgICAgcmV0
dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1
cmUsIGNoYWluLCBvZmZzZXQpOworI2Vsc2UKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0lu
Zm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisjZW5kaWYKK30KKwogUHV0QnlJZFN0YXR1
cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgVU5VU0VEX1BB
UkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAg
ICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9Q
Uk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mU3RydWN0dXJlU3R1Yklu
Zm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5
dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICBpZiAocHJvZmlsZWRCbG9jay0+bGlrZWx5
VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3Rh
dHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKICAgICAKICAgICBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mbyhieXRlY29k
ZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJldHVybiBQdXRCeUlk
U3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJu
IGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwog
ICAgIAogICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewogICAgIGNhc2UgYWNjZXNz
X3Vuc2V0OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAw
LCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVk
QmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3Nf
cHV0X2J5X2lkX3JlcGxhY2U6IHsKICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0dWJJbmZvLnUu
cHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0KApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMDYw
NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKICAgICBzaXplX3Qgb2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKIHByaXZhdGU6CisgICAgc3RhdGlj
IFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBT
dHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOwogICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmU7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXpl
ci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgor
I2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTY29wZUNoYWluLmgi
CiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKQEAgLTEx
NiwyNiArMTE3LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGV4cGVjdGVkIGJ5IHRoZSBjYWxs
ZWUuCiAqLwogCi0jaWZuZGVmIE5ERUJVRwogc3RhdGljIGJvb2wgc19kdW1wc0dlbmVyYXRlZENv
ZGUgPSBmYWxzZTsKLSNlbmRpZgogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dl
bmVyYXRlZENvZGUoYm9vbCBkdW1wc0dlbmVyYXRlZENvZGUpCiB7Ci0jaWZuZGVmIE5ERUJVRwog
ICAgIHNfZHVtcHNHZW5lcmF0ZWRDb2RlID0gZHVtcHNHZW5lcmF0ZWRDb2RlOwotI2Vsc2UKLSAg
ICBVTlVTRURfUEFSQU0oZHVtcHNHZW5lcmF0ZWRDb2RlKTsKLSNlbmRpZgogfQogCiBib29sIEJ5
dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKQogewotI2lmbmRlZiBOREVCVUcK
ICAgICByZXR1cm4gc19kdW1wc0dlbmVyYXRlZENvZGU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxz
ZTsKLSNlbmRpZgogfQogCiBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkK
QEAgLTE0OCwxMCArMTM5LDggQEAgSlNPYmplY3QqIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0
ZSgpCiAKICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25Db3VudChtX2NvZGVCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIAotI2lmbmRlZiBOREVCVUcKICAgICBpZiAoc19kdW1w
c0dlbmVyYXRlZENvZGUpCiAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wKG1fc2NvcGVDaGFpbi0+
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpOwotI2VuZGlmCiAKICAgICBpZiAoKG1fY29kZVR5
cGUgPT0gRnVuY3Rpb25Db2RlICYmICFtX2NvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigp
ICYmICFtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKSB8fCBtX2NvZGVUeXBlID09IEV2YWxD
b2RlKQogICAgICAgICBzeW1ib2xUYWJsZSgpLmNsZWFyKCk7CkBAIC0xMjc2LDkgKzEyNjUsNyBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9u
cygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIG1f
Y29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKTsKLSNlbmRpZgogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmls
ZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1p
YyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRz
dC0+aW5kZXgoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChw
cm9wZXJ0eSkpOwpAQCAtMTQ0MCw5ICsxNDI3LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9jb2RlQmxvY2stPmFkZEds
b2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFC
TEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgVmFsdWVQcm9maWxlKiBw
cm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jl
c29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ5MCw5ICsxNDc1LDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9j
b2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAj
ZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKHJlcXVpcmVzRHluYW1p
Y0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTUxMSw5ICsxNDk0
LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1ldGhvZENoZWNrKAogCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdp
c3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSNpZiBFTkFCTEUo
SU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgVmFsdWVQcm9maWxlKiBw
cm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2dldF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0xNTM5LDkgKzE1MjAsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVy
JiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVS
KQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0
aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKIAogICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBAIC0xNTU3LDkgKzE1
MzYsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5CiAKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZChSZWdpc3RlcklEKiBi
YXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0j
aWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICAKICAgICBl
bWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2Ut
PmluZGV4KCkpOwpAQCAtMTg0OCw3ICsxODI1LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0Q2FsbCgKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgo
KSk7IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0ZXJPZmZz
ZXQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJs
b2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKDApOworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlm
IChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMTk1Miw3ICsx
OTMzLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3QKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygp
KTsgLy8gYXJnQ291bnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5y
ZWdpc3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5m
bygpKTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworI2VuZGlmCiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgp
KSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShv
cF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMjIxMyw3ICsyMTk4LDExIEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gKIHsKICAgICBtX3VzZXNFeGNlcHRpb25zID0gdHJ1
ZTsKICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICBIYW5kbGVySW5mbyBp
bmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMo
KS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoLCBDb2RlTG9j
YXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9jYXRjaCkpIH07CisjZWxz
ZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQo
MCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFz
ZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKCkgfTsKKyNlbmRpZgogI2Vsc2UKICAgICBI
YW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBp
bnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURl
cHRoIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA0LDkg
KzYwNCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBVTlVTRURfUEFSQU0obm9kZUluZGV4
KTsKICAgICAgICAgCi0gICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVJbmRleCk7Ci0gICAgICAgIEFTU0VSVChwcm9maWxlKTsKLSAgICAgICAgUHJlZGljdGVk
VHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7Cisg
ICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlSW5kZXgpOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICAgICAgcHJpbnRm
KCJEeW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4LCBieXRl
Y29kZUluZGV4LCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikpOwogI2VuZGlmCkBAIC0x
MDQxLDYgKzEwMzksOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhib29s
CiAgICAgCiAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhlbiBpdCBsb29rcyBsaWtlIHdlIHNob3Vs
ZCBkZWZpbml0ZWx5IGlubGluZSB0aGlzIGNvZGUuIFByb2NlZWQKICAgICAvLyB3aXRoIHBhcnNp
bmcgdGhlIGNvZGUgdG8gZ2V0IGJ5dGVjb2RlLCBzbyB0aGF0IHdlIGNhbiB0aGVuIHBhcnNlIHRo
ZSBieXRlY29kZS4KKyAgICAvLyBOb3RlIHRoYXQgaWYgTExJbnQgaXMgZW5hYmxlZCwgdGhlIGJ5
dGVjb2RlIHdpbGwgYWx3YXlzIGJlIGF2YWlsYWJsZS4gQWxzbyBub3RlCisgICAgLy8gdGhhdCBp
ZiBMTEludCBpcyBlbmFibGVkLCB3ZSBtYXkgaW5saW5lIGEgY29kZSBibG9jayB0aGF0IGhhcyBu
ZXZlciBiZWVuIEpJVHRlZAorICAgIC8vIGJlZm9yZSEKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IG1fY29kZUJsb2NrQ2FjaGUuZ2V0KENvZGVCbG9ja0tleShleGVjdXRhYmxlLCBraW5kKSwg
ZXhwZWN0ZWRGdW5jdGlvbi0+c2NvcGUoKSk7CiAgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAg
IHJldHVybiBmYWxzZTsKQEAgLTE3NDEsNyArMTc0Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgaWYgKG1ldGhvZENhbGxTdGF0dXMuaXNTZXQoKQotICAgICAgICAgICAgICAgICYmICFnZXRC
eUlkU3RhdHVzLmlzU2V0KCkKKyAgICAgICAgICAgICAgICAmJiAhZ2V0QnlJZFN0YXR1cy53YXNT
ZWVuSW5KSVQoKQogICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQ
cm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpIHsKICAgICAgICAg
ICAgICAgICAvLyBJdCdzIG1vbm9tb3JwaGljIGFzIGZhciBhcyB3ZSBjYW4gdGVsbCwgc2luY2Ug
dGhlIG1ldGhvZF9jaGVjayB3YXMgbGlua2VkCiAgICAgICAgICAgICAgICAgLy8gYnV0IHRoZSBz
bG93IHBhdGggKGkuZS4gdGhlIG5vcm1hbCBnZXRfYnlfaWQpIG5ldmVyIGZpcmVkLgpAQCAtMTgx
MCw3ICsxODExLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAog
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwogICAgICAgICB9Ci0gICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2
YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgICAg
IE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwog
ICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3At
Pm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmRdOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lv
biAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDggQEAgaW5saW5lIGJvb2wgY2FuQ29tcGls
ZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2Fz
ZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX3B1dF9n
bG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTA2MDQ1KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw2ICs0OCwyMSBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSog
ZXhlYykKICAgICB1aW50MzJfdCBleGl0SW5kZXggPSBnbG9iYWxEYXRhLT5vc3JFeGl0SW5kZXg7
CiAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jay0+b3NyRXhpdChleGl0SW5kZXgpOwogICAg
IAorICAgIC8vIE1ha2Ugc3VyZSBhbGwgY29kZSBvbiBvdXIgaW5saW5lIHN0YWNrIGlzIEpJVCBj
b21waWxlZC4gVGhpcyBpcyBuZWNlc3Nhcnkgc2luY2UKKyAgICAvLyB3ZSBtYXkgb3B0IHRvIGlu
bGluZSBhIGNvZGUgYmxvY2sgZXZlbiBiZWZvcmUgaXQgaGFkIGV2ZXIgYmVlbiBjb21waWxlZCBi
eSB0aGUKKyAgICAvLyBKSVQsIGJ1dCBvdXIgT1NSIGV4aXQgaW5mcmFzdHJ1Y3R1cmUgY3VycmVu
dGx5IG9ubHkgd29ya3MgaWYgdGhlIHRhcmdldCBvZiB0aGUKKyAgICAvLyBPU1IgZXhpdCBpcyBK
SVQgY29kZS4gVGhpcyBjb3VsZCBiZSBjaGFuZ2VkIHNpbmNlIHRoZXJlIGlzIG5vdGhpbmcgcGFy
dGljdWxhcmx5CisgICAgLy8gaGFyZCBhYm91dCBkb2luZyBhbiBPU1IgZXhpdCBpbnRvIHRoZSBp
bnRlcnByZXRlciwgYnV0IGZvciBub3cgdGhpcyBzZWVtcyB0byBtYWtlCisgICAgLy8gc2Vuc2Ug
aW4gdGhhdCBpZiB3ZSdyZSBPU1IgZXhpdGluZyBmcm9tIGlubGluZWQgY29kZSBvZiBhIERGRyBj
b2RlIGJsb2NrLCB0aGVuCisgICAgLy8gcHJvYmFibHkgaXQncyBhIGdvb2Qgc2lnbiB0aGF0IHRo
ZSB0aGluZyB3ZSdyZSBleGl0aW5nIGludG8gaXMgaG90LiBFdmVuIG1vcmUKKyAgICAvLyBpbnRl
cmVzdGluZ2x5LCBzaW5jZSB0aGUgY29kZSB3YXMgaW5saW5lZCwgaXQgbWF5IG5ldmVyIG90aGVy
d2lzZSBnZXQgSklUCisgICAgLy8gY29tcGlsZWQgc2luY2UgdGhlIGFjdCBvZiBpbmxpbmluZyBp
dCBtYXkgZW5zdXJlIHRoYXQgaXQgb3RoZXJ3aXNlIG5ldmVyIHJ1bnMuCisgICAgZm9yIChDb2Rl
T3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVy
KSB7CisgICAgICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKQorICAgICAgICAgICAgLT5iYXNlbGlu
ZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+aXNDYWxsID8gQ29kZUZv
ckNhbGwgOiBDb2RlRm9yQ29uc3RydWN0KQorICAgICAgICAgICAgLT5qaXRDb21waWxlKCpnbG9i
YWxEYXRhKTsKKyAgICB9CisgICAgCiAgICAgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3Zlcnkg
PSAwOwogICAgIGlmIChleGl0Lm1fcmVjb3ZlcnlJbmRleCkKICAgICAgICAgcmVjb3ZlcnkgPSAm
Y29kZUJsb2NrLT5zcGVjdWxhdGlvblJlY292ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4IC0gMSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJl
dmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiREZHUmVwYXRjaC5oIgor
I2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIu
aCIKICNpbmNsdWRlICJJbmxpbmVBU00uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAt
NjcxLDQ4ICs2NzIsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3Ry
CiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KIAotRW5jb2RlZEpT
VmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNvZGVkSlNW
YWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4
ZWNTdGF0ZSopOwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NU
UklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKLSAg
ICAibW92ICVyMTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9O
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BV
KFg4NikKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4i
Ci0gICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVzcClcbiIK
LSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20gKAot
Ii50ZXh0IiAiXG4iCi0iLmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpICJcbiIKLSIudGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFS
QU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKLSAg
ICAiY3B5IHIwLCByNSIgIlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0KLUVu
Y29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVj
U3RhdGUoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9
ICZleGVjLT5nbG9iYWxEYXRhKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihn
bG9iYWxEYXRhLCBleGVjKTsKLSAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMt
Pmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKLX0KLQogc3RhdGljIHZvaWQqIGhh
bmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2Fs
bGVlLT5jYWxsZXJGcmFtZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxs
b2NhdGlvblNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
QWxsb2NhdGlvblNwYWNlLmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3
IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSGVhcDsKK2NsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIGNsYXNzIE1hcmtlZEJsb2NrOwogCiBjbGFzcyBBbGxvY2F0aW9uU3BhY2UgewpA
QCAtNjcsNiArNjgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaHJpbmsoKTsKICAgICAKIHByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICBl
bnVtIEFsbG9jYXRpb25FZmZvcnQgeyBBbGxvY2F0aW9uQ2FuRmFpbCwgQWxsb2NhdGlvbk11c3RT
dWNjZWVkIH07CiAKICAgICB2b2lkKiBhbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTA2MDQ1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgzNyw3ICs4MzcsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dn
CiAgICAgICAgIHNldEhpZ2hXYXRlck1hcmsobWF4KHByb3BvcnRpb25hbEJ5dGVzLCBtX21pbkJ5
dGVzUGVyQ3ljbGUpKTsKICAgICB9CiAgICAgSkFWQVNDUklQVENPUkVfR0NfRU5EKCk7Ci0KKyAg
ICAKICAgICAoKm1fYWN0aXZpdHlDYWxsYmFjaykoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBKU1ZhbHVlOwogICAgIGNs
YXNzIExpdmVPYmplY3RJdGVyYXRvcjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAgICAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXI7CiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxl
OwogICAgIGNsYXNzIFVTdHJpbmc7CkBAIC0xMzYsMTEgKzEzNywxMiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlND
ZWxsKj4mIHJvb3RzKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBNYXJr
ZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNzIEFsbG9jYXRpb25TcGFjZTsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBm
cmllbmQgY2xhc3MgQnVtcFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7
Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAKICAgICAgICAgc2l6ZV90IHdhdGVy
TWFyaygpOwogICAgICAgICBzaXplX3QgaGlnaFdhdGVyTWFyaygpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MDQsNyArMzA0LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKAog
I2VuZGlmCiAKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwotCisgICAgCiAgICAg
aWYgKGlzSlNTdHJpbmcoY2VsbCkpIHsKICAgICAgICAgSlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4o
Y29uc3RfY2FzdDxKU0NlbGwqPihjZWxsKSwgdmlzaXRvcik7CiAgICAgICAgIHJldHVybjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMTA2
MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEhlYXA7CiBj
bGFzcyBKU0NlbGw7CiBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CitjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiBjbGFzcyBXZWFrR0NIYW5kbGU7CiBjbGFzcyBTbG90VmlzaXRvcjsKIApA
QCAtNzcsNiArNzgsOCBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4g
dHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlwZSBmb3JFYWNoQmxvY2soKTsKIAogcHJpdmF0ZToK
KyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAgIC8vIFsg
MzIuLi4gMjU2IF0KICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VTdGVwID0gTWFya2Vk
QmxvY2s6OmF0b21TaXplOwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZUN1dG9mZiA9
IDI1NjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDYgKzExOSw5IEBAIG5hbWVz
cGFjZSBKU0MgIHsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIEluc3RydWN0aW9u
KiByZXR1cm5WUEMoKSBjb25zdCB7IHJldHVybiB0aGlzW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENd
LnZQQygpOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIEluc3RydWN0aW9u
KiBjdXJyZW50VlBDKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4o
dGhpc1tSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnRdLnRhZygpKTsgfQorI2VuZGlmCiAKICAg
ICAgICAgdm9pZCBzZXRDYWxsZXJGcmFtZShDYWxsRnJhbWUqIGNhbGxlckZyYW1lKSB7IHN0YXRp
Y19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZV0gPSBjYWxs
ZXJGcmFtZTsgfQogICAgICAgICB2b2lkIHNldFNjb3BlQ2hhaW4oU2NvcGVDaGFpbk5vZGUqIHNj
b3BlQ2hhaW4pIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OlNj
b3BlQ2hhaW5dID0gc2NvcGVDaGFpbjsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02OSw3ICs2OSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjZW5kaWYKIAotI2Rl
ZmluZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQgKEVOQUJMRShDT01QVVRF
RF9HT1RPX0lOVEVSUFJFVEVSKSAmJiAhZGVmaW5lZChfX2xsdm1fXykpCisjZGVmaW5lIFdURl9V
U0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAoKEVOQUJMRShDT01QVVRFRF9HT1RPX0lO
VEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpKSAmJiAhZGVmaW5lZChfX2xsdm1fXykpCiAKIHVz
aW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTU0NywxNyArNTQ3LDQzIEBAIEludGVycHJldGVyOjpJ
bnRlcnByZXRlcigpCiB7CiB9CiAKLXZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBj
YW5Vc2VKSVQpCitJbnRlcnByZXRlcjo6fkludGVycHJldGVyKCkKIHsKLSNpZiBFTkFCTEUoQ09N
UFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fZW5h
YmxlZCkKKyAgICAgICAgZGVsZXRlW10gbV9vcGNvZGVUYWJsZTsKKyNlbmRpZgorfQorCit2b2lk
IEludGVycHJldGVyOjppbml0aWFsaXplKExMSW50OjpEYXRhKiBsbGludERhdGEsIGJvb2wgY2Fu
VXNlSklUKQoreworICAgIFVOVVNFRF9QQVJBTShsbGludERhdGEpOworICAgIFVOVVNFRF9QQVJB
TShjYW5Vc2VKSVQpOworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBF
TkFCTEUoTExJTlQpCisjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorICAg
IC8vIEhhdmluZyBMTEludCBlbmFibGVkLCBidXQgbm90IGJlaW5nIGFibGUgdG8gdXNlIHRoZSBK
SVQsIGFuZCBub3QgaGF2aW5nCisgICAgLy8gYSBjb21wdXRlZCBnb3RvIGludGVycHJldGVyLCBp
cyBub3Qgc3VwcG9ydGVkLiBOb3QgYmVjYXVzZSB3ZSBjYW5ub3QKKyAgICAvLyBzdXBwb3J0IGl0
LCBidXQgYmVjYXVzZSBJIGRlY2lkZWQgdG8gZHJhdyB0aGUgbGluZSBhdCB0aGUgbnVtYmVyIG9m
CisgICAgLy8gcGVybXV0YXRpb25zIG9mIGV4ZWN1dGlvbiBlbmdpbmVzIHRoYXQgSSB3YW50ZWQg
dGhpcyBjb2RlIHRvIGdyb2suCisgICAgQVNTRVJUKGNhblVzZUpJVCk7CisjZW5kaWYKICAgICBp
ZiAoY2FuVXNlSklUKSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxl
ID0gbGxpbnREYXRhLT5vcGNvZGVNYXAoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1PcGNvZGVJRHM7ICsraSkKKyAgICAgICAgICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNv
ZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsKKyNlbHNlCiAgICAgICAgIC8v
IElmIHRoZSBKSVQgaXMgcHJlc2VudCwgZG9uJ3QgdXNlIGp1bXAgZGVzdGluYXRpb25zIGZvciBv
cGNvZGVzLgogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJ
RHM7ICsraSkgewogICAgICAgICAgICAgT3Bjb2RlIG9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihpKSk7CiAgICAgICAgICAgICBtX29wY29kZVRhYmxl
W2ldID0gb3Bjb2RlOwogICAgICAgICB9CisjZW5kaWYKICAgICB9IGVsc2UgeworI2lmIEVOQUJM
RShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJsZSA9IG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURz
XTsKKyNlbmRpZgogICAgICAgICBwcml2YXRlRXhlY3V0ZShJbml0aWFsaXplQW5kUmV0dXJuLCAw
LCAwKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURz
OyArK2kpCkBAIC01NjYsNyArNTkyLDYgQEAgdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShi
b29sIGNhblVzZQogICAgICAgICBtX2VuYWJsZWQgPSB0cnVlOwogICAgIH0KICNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGNhblVzZUpJVCk7CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1f
ZW5hYmxlZCA9IHRydWU7CiAjZWxzZQpAQCAtNjY3LDkgKzY5MiwxMSBAQCB2b2lkIEludGVycHJl
dGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtCiAKIGJvb2wgSW50ZXJwcmV0ZXI6OmlzT3Bjb2Rl
KE9wY29kZSBvcGNvZGUpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIp
CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkK
KyNpZiAhRU5BQkxFKExMSU5UKQogICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm4g
b3Bjb2RlID49IDAgJiYgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRy
X3Q+KG9wY29kZSkpIDw9IG9wX2VuZDsKKyNlbmRpZgogICAgIHJldHVybiBvcGNvZGUgIT0gSGFz
aFRyYWl0czxPcGNvZGU+OjplbXB0eVZhbHVlKCkKICAgICAgICAgJiYgIUhhc2hUcmFpdHM8T3Bj
b2RlPjo6aXNEZWxldGVkVmFsdWUob3Bjb2RlKQogICAgICAgICAmJiBtX29wY29kZUlEVGFibGUu
Y29udGFpbnMob3Bjb2RlKTsKQEAgLTcyNiwxMSArNzUzLDExIEBAIE5FVkVSX0lOTElORSBib29s
IEludGVycHJldGVyOjp1bndpbmRDYWwKICAgICAvLyBoYXZlIHRvIHN1YnRyYWN0IDEuCiAjaWYg
RU5BQkxFKEpJVCkgJiYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIGlmIChjYWxsZXJGcmFtZS0+
Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQotICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVC
bG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0
ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxs
RnJhbWUtPnJldHVyblBDKCkpOwogICAgIGVsc2UKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBj
b2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNl
bGlmIEVOQUJMRShKSVQpCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2Rl
T2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2Rl
QmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkp
OwogI2Vsc2UKICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQo
Y2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAxOwogI2VuZGlmCkBAIC01MTcwLDEwICs1MTk3LDEw
IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcihDYWwKICAgICAgICAgYnl0
ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+
cmV0dXJuVlBDKCkpOwogI2lmIEVOQUJMRShKSVQpCiAgICAgZWxzZQotICAgICAgICBieXRlY29k
ZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1
cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAj
ZWxzZQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNl
dChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29k
ZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygp
KTsKICNlbmRpZgogICAgIGxpbmVOdW1iZXIgPSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCAtIDEpOwogICAgIHNvdXJjZUlEID0gY2Fs
bGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lv
biAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5o
IgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUg
IkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmls
ZS5oIgogCkBAIC00NSw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0
aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFs
T2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9n
cmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWlu
Tm9kZTsKQEAgLTEwMCwxOSArMTAyLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
SW50ZXJwcmV0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAg
ZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBKSVQ7CiAgICAgcHVibGljOgogICAgICAgICBJbnRlcnByZXRlcigpOworICAgICAgICB+
SW50ZXJwcmV0ZXIoKTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGNh
blVzZUpJVCk7CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZShMTEludDo6RGF0YSosIGJvb2wgY2Fu
VXNlSklUKTsKIAogICAgICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSgpIHsgcmV0dXJu
IG1fcmVnaXN0ZXJGaWxlOyB9CiAgICAgICAgIAogICAgICAgICBPcGNvZGUgZ2V0T3Bjb2RlKE9w
Y29kZUlEIGlkKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7
Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBV
VEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgICAgIHJldHVy
biBtX29wY29kZVRhYmxlW2lkXTsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4gaWQ7CkBAIC0x
MjIsNyArMTI2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPcGNvZGVJRCBnZXRPcGNv
ZGVJRChPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0
aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5B
QkxFKExMSU5UKQorICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOworICAgICAg
ICAgICAgcmV0dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKKyNlbGlmIEVOQUJMRShD
T01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9w
Y29kZSkpOwogICAgICAgICAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUp
KTsKQEAgLTEzMiw2ICsxMzksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1
cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgZW5h
YmxlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2VuYWJsZWQ7CisgICAgICAg
IH0KIAogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKQEAgLTE5OSw3ICsyMTEsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlIG1fcmVnaXN0ZXJGaWxl
OwogICAgICAgICAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgICAgIE9wY29kZSogbV9vcGNvZGVUYWJsZTsgLy8gTWFwcyBPcGNv
ZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZworICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bj
b2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRl
Y29tcGlsaW5nCisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAg
ICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2RlSURzXTsgLy8gTWFwcyBPcGNvZGVJRCA9
PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+
IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGls
aW5nCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdp
c3RlckZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvUmVnaXN0ZXJGaWxlLmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiAr
MzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwog
ICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogCiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoUmVnaXN0ZXJGaWxlKTsKQEAgLTgxLDYgKzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGdyb3dTbG93Q2FzZShSZWdpc3Rlciop
OwogICAgICAgICB2b2lkIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwogICAgICAgICB2b2lkIGFk
ZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5W
YWx1ZS5oIgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSW5saW5lQVNNLmgi
CisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1ZhbHVlSW5saW5lTWV0aG9kcy5o
IgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2V4dGVybiAi
QyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSgpOworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVU
VVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVj
U3RhdGUqKTsKKworI2lmIENQVShYODZfNjQpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJ
TkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCisgICAg
Im1vdiAlcjEzLCAlcmRpXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShY
ODYpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgor
ICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4iCisgICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCisg
ICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVl
V2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorYXNtICgKKyIu
dGV4dCIgIlxuIgorIi5hbGlnbiAyIiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiXG4iCisiLnRodW1iIiAiXG4iCisiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFN
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCisgICAg
ImNweSByMCwgcjUiICJcbiIKKyAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRI
b3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbmRpZgorCitleHRl
cm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhv
c3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVyblZh
bHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisjZGVmaW5lIEhvc3RDYWxsUmV0
dXJuVmFsdWVfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ0FMTElOR19D
T05WRU5USU9OX0lTX1NURENBTEwKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJ
T04gQ0RFQ0wKKyNlbHNlCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OCisj
ZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1Rf
Q0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKK30KKwor
I2VuZGlmIC8vIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVQuY3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsOCBAQCB2b2lkIEpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dpbGxf
Y2FsbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBERUZJ
TkVfT1Aob3BfcHVzaF9zY29wZSkKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgog
ICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0
X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKQEAgLTQ4Nyw2ICs0
ODksOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfcG9zdF9pbmMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9wcmVfZGVjKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2luYykKKyAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkK
ICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsKQpAQCAtNTI2LDYg
KzUzMCwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiBKSVRDb2Rl
IEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2spCiB7
CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIkNvbXBpbGluZyBKSVQg
Y29kZSFcbiIpOworI2VuZGlmCisgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogICAg
IG1fY2FuQmVPcHRpbWl6ZWQgPSBtX2NvZGVCbG9jay0+Y2FuQ29tcGlsZVdpdGhERkcoKTsKICNl
bmRpZgpAQCAtNjkwLDggKzY5OCwxMiBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29k
ZVB0ciogZnVuCiAgICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gbV9jb2RlQmxvY2st
PnN0cnVjdHVyZVN0dWJJbmZvKG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mb1tpXS5wcm9wZXJ0
eUFjY2Vzc0luZGV4KS5jYWxsUmV0dXJuTG9jYXRpb247CiAgICAgfQogCi0jaWYgRU5BQkxFKERG
R19KSVQpCi0gICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkg
fHwgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2NhbkJlT3B0aW1pemVkCisjaWYgRU5BQkxFKExM
SU5UKQorICAgICAgICB8fCB0cnVlCisjZW5kaWYKKyAgICAgICAgKSB7CiAgICAgICAgIENvbXBh
Y3RKSVRDb2RlTWFwOjpFbmNvZGVyIGppdENvZGVNYXBFbmNvZGVyOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBtX2xhYmVscy5zaXpl
KCk7ICsrYnl0ZWNvZGVPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChtX2xhYmVsc1tieXRlY29k
ZU9mZnNldF0uaXNTZXQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCShy
ZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
SklUQ29kZSgpIHsgfQogI2VuZGlmCiAgICAgcHVibGljOgotICAgICAgICBlbnVtIEpJVFR5cGUg
eyBIb3N0Q2FsbFRodW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CisgICAgICAgIGVudW0gSklU
VHlwZSB7IE5vbmUsIEhvc3RDYWxsVGh1bmssIEludGVycHJldGVyVGh1bmssIEJhc2VsaW5lSklU
LCBERkdKSVQgfTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKSVRUeXBlIGJvdHRvbVRpZXJK
SVQoKQogICAgICAgICB7CkBAIC02Niw4ICs2NiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgICAgIHJldHVybiBERkdKSVQ7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRp
YyBib29sIGlzT3B0aW1pemluZ0pJVChKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBqaXRUeXBlID09IERGR0pJVDsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgc3RhdGljIGJvb2wgaXNCYXNlbGluZUNvZGUoSklUVHlwZSBqaXRUeXBlKQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBJbnRlcnByZXRlclRodW5rIHx8IGpp
dFR5cGUgPT0gQmFzZWxpbmVKSVQ7CisgICAgICAgIH0KKyAgICAgICAgCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICAgICAgSklUQ29kZSgpCisgICAgICAgICAgICA6IG1faml0VHlwZShOb25lKQogICAg
ICAgICB7CiAgICAgICAgIH0KIApAQCAtNzUsNiArODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIDogbV9yZWYocmVmKQogICAgICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkK
ICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGppdFR5cGUgIT0gTm9uZSk7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3IgISgpIGNvbnN0CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE1
ICszMywyMSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZH
RHJpdmVyLmgiCiAjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4K
IGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUs
IEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxv
Y2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFn
bG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBj
b2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBp
bGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAgICAg
ICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZShnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0
KCksIGppdENvZGUpOwpAQCAtNTUsMTAgKzYxLDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlm
QXBwcm9wcmlhdGUoSlNHbAogICAgICAgICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBp
bGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BD
T0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVk
Q29kZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9y
dHVuaXR5KCk7Ci0jZW5kaWYKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGlu
Z09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cigpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY2LDkgKzY5
LDE0IEBAIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2wKIAogaW5saW5l
IGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0
Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJl
ZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsK
KyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMo
KTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUg
PT0gSklUQ29kZTo6REZHSklUKQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGls
ZUZ1bmN0aW9uKGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSwgaml0Q29kZVdp
dGhBcml0eUNoZWNrKTsKQEAgLTgzLDExICs5MSw3IEBAIGlubGluZSBib29sIGppdENvbXBpbGVG
dW5jdGlvbklmQXBwcm9wcmkKICAgICAgICAgfQogICAgICAgICBqaXRDb2RlID0gSklUOjpjb21w
aWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksICZqaXRDb2RlV2l0aEFyaXR5Q2hlY2sp
OwogICAgIH0KLSNpZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLSAgICBpZiAoIUJ5dGVjb2Rl
R2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKLSAgICAgICAgY29kZUJsb2NrLT5oYW5k
bGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwotI2VuZGlmCi0gICAgCisgICAgY29k
ZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAgIGNvZGVC
bG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAgIAog
ICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNl
cHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4
Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIEV4
Y2VwdGlvbkhhbmRsZXIgZ2VuZXJpY1Rocm93KEpTR2xvYmFsRGEKIAogRXhjZXB0aW9uSGFuZGxl
ciBqaXRUaHJvdyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4ZWNTdGF0ZSogY2FsbEZyYW1l
LCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBSZXR1cm5BZGRyZXNzUHRyIGZhdWx0TG9jYXRpb24p
CiB7Ci0gICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGV4Y2Vw
dGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChmYXVsdExv
Y2F0aW9uKSk7CisgICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUs
IGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChj
YWxsRnJhbWUsIGZhdWx0TG9jYXRpb24pKTsKIH0KIAogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTEzLDcgKzE5MTMs
NyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNrRnJhbWUuYXJnc1swXS5pbnQzMigpOwogCiAjaWYgRU5B
QkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmludGYoIkVudGVyZWQgb3B0aW1pemVfZnJvbV9s
b29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIg
PSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jay0+aml0RXhl
Y3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBj
b2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBwcmludGYoIiVwOiBF
bnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0
aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1
XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2Nr
LT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRl
bGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1pemVk
UmVwbGFjZW1lbnQoKSkgewpAQCAtMjE2OCw0NSArMjE2OCwxMyBAQCBERUZJTkVfU1RVQl9GVU5D
VElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5l
IENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXJG
aWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKLXsKLSAgICBK
U0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpOwotICAg
IEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICBDb2RlQmxvY2sqIG5ld0Nv
ZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihr
aW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdo
IHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNz
ZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhjYWxsRnJhbWUt
PnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxv
Y2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBBU1NF
UlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5k
IGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVk
LgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVnaXN0ZXIqIHNyYyA9IGNhbGxGcmFtZS0+
cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkg
KyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGludCBlbmQgPSAtQ2FsbEZyYW1lOjpvZmZzZXRG
b3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZvciAoaSA9IC0xOyBpID49IGVu
ZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07Ci0KLSAgICBlbmQgLT0gZGVsdGE7Ci0g
ICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgp
OwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShkc3Qp
OwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1lIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkp
OwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9OKHZv
aWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0
YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxG
cmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxs
RnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CisgICAgQ2FsbEZy
YW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZy
YW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOwogICAgIGlmICghbmV3
Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQq
PihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKIApAQCAtMjIxOSw3ICsy
MTg3LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAogCiAgICAg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxG
cmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUu
cmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxG
cmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJh
bWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBpZiAoIW5ld0NhbGxGcmFt
ZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lkKj4oc3RhY2tG
cmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVTdGFja092ZXJmbG93
RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5KQpAQCAt
MjYsOCArMjYsMTAgQEAKICNpZm5kZWYgSlNJbnRlcmZhY2VKSVRfaAogI2RlZmluZSBKU0ludGVy
ZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAi
SklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIK
ICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNs
dWRlICJSZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENvbW1vbl9o
CisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2RlZmluZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lO
RyAwCisjZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFDSU5HIDAKKworI2VuZGlmIC8vIExMSW50Q29t
bW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJ
bnREYXRhLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5o
IgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGNvZGUuaCIK
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK0RhdGE6OkRhdGEoKQorICAg
IDogbV9leGNlcHRpb25JbnN0cnVjdGlvbnMobmV3IEluc3RydWN0aW9uW21heE9wY29kZUxlbmd0
aCArIDFdKQorICAgICwgbV9vcGNvZGVNYXAobmV3IE9wY29kZVtudW1PcGNvZGVJRHNdKQorewor
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAgICAg
ICBtX2V4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lKTsKKyNkZWZpbmUgT1BDT0RF
X0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBtX29wY29kZU1hcFtvcGNvZGVdID0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUpOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVf
RU5UUlkpOworI3VuZGVmIE9QQ09ERV9FTlRSWQorfQorCitEYXRhOjp+RGF0YSgpCit7CisgICAg
ZGVsZXRlW10gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgZGVsZXRlW10gbV9vcGNvZGVN
YXA7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxF
KExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RGF0YV9oCisjZGVmaW5lIExMSW50RGF0YV9o
CisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsK
KworI2lmIEVOQUJMRShMTElOVCkKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIERhdGEoKTsK
KyAgICB+RGF0YSgpOworICAgIAorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlv
bnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAg
IH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICByZXR1cm4g
bV9vcGNvZGVNYXA7CisgICAgfQorcHJpdmF0ZToKKyAgICBJbnN0cnVjdGlvbiogbV9leGNlcHRp
b25JbnN0cnVjdGlvbnM7CisgICAgT3Bjb2RlKiBtX29wY29kZU1hcDsKK307CisjZWxzZSAvLyBF
TkFCTEUoTExJTlQpCisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5v
cmV0dXJuIgorI2VuZGlmCisKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIEluc3RydWN0aW9u
KiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29k
ZU1hcCgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorfTsKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHBvcAorI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnREYXRhX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9p
bnRzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAi
SklUQ29kZS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkxMSW50VGh1
bmtzLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpJVENvZGUm
IGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjaykKK3sKKyAgICBpZiAo
IWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNh
bGwpIHsKKyAgICAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9B
c3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xv
Z3VlKSkpKTsKKyAgICAgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2sp
KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChraW5k
ID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1
bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5X2NoZWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
aWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xv
YmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBK
SVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IGdsb2JhbERh
dGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNv
ZGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVG
b3JDb25zdHJ1Y3QpOworICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1
YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKTsKKyAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1
bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7Cit9CisK
K3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2Rl
JiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAg
ICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9ldmFsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZXZh
bEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKK30KKwor
dm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENv
ZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAg
ICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1
Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmsp
OworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShM
TElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlw
b2ludHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVudHJ5cG9p
bnRzX2gKKyNkZWZpbmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlv
bktpbmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV2YWxDb2RlQmxvY2s7CitjbGFz
cyBKSVRDb2RlOworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOworY2xhc3MgUHJvZ3JhbUNvZGVCbG9j
azsKKworbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNH
bG9iYWxEYXRhJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgSklUQ29kZSYsIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciYgYXJpdHlDaGVjayk7Cit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFs
RGF0YSYsIEpJVENvZGUmKTsKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRh
JiwgSklUQ29kZSYpOworCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgRXZhbENvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0
RXZhbEVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK2lubGluZSB2b2lkIGdl
dEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9ncmFtQ29kZUJsb2NrKiwg
SklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRQcm9ncmFtRW50cnlwb2ludChnbG9iYWxEYXRh
LCBqaXRDb2RlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAv
LyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxM
SW50RXhjZXB0aW9ucy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQ2FsbEZy
YW1lLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIK
KyNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNp
bmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgTExJbnQgeworCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEo
KTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0
aW9uICVzLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlm
CisgICAgZ2VuZXJpY1Rocm93KAorICAgICAgICBnbG9iYWxEYXRhLCBleGVjLT5jYWxsZXJGcmFt
ZSgpLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sCisgICAgICAgIGV4ZWMtPmNhbGxlckZyYW1lKCkt
PmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChleGVjLT5jYWxsZXJGcmFtZSgpLCBleGVjLT5y
ZXR1cm5QQygpKSk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhj
ZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgp
LmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJl
dHVyblRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9I
RUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChyZXR1cm5U
b1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRp
ZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRp
b24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAg
IAorICAgIHJldHVybiBnbG9iYWxEYXRhLT5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
KCk7Cit9CisKK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24q
IHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRh
KCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2Vw
dGlvbiAlcyAoY2FsbFRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0
aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2Jh
bERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Ro
cm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNfaAor
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorCisjaWYgRU5BQkxFKExMSU5UKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0
YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisvLyBUaHJv
dyB0aGUgY3VycmVudGx5IGFjdGl2ZSBleGNlcHRpb24gaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNh
bGxlcidzIGNhbGwgZnJhbWUuCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3Rh
dGUqKTsKKworLy8gVGVsbHMgeW91IHdoZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0
dXJuLXRvLXRocm93LCBhZnRlciB5b3UndmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBpbmZvcm1h
dGlvbiBuZWVkZWQgdG8gdGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiByZXR1cm5U
b1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0aGUgY3Vy
cmVudCBQQyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlv
dSBhIFBDCisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdo
aWNoIHdoZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91
IGFuICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBl
eGNlcHRpb24gaGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhj
ZXB0aW9uIGhhbmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhh
dCBQQyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVh
ZCBleGNlcHRpb24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2Vk
IGJ5CisvLyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0
YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcg
dG8gYSBjYWxsIHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rp
b24qKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUo
TExJTlQpCisKKyNlbmRpZiAvLyBMTEludEV4Y2VwdGlvbnNfaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEhlbHBlcnMu
aCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUg
Ikhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1
ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZhdGlv
bi5oIgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RG
dW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVk
ZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVk
ZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTExJbnRF
eGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUg
Ik9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKKyNk
ZWZpbmUgTExJTlRfT1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRSKHBjW2luZGV4XS51Lm9wZXJh
bmQpKQorI2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5vcGVy
YW5kKSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsgICAg
ICAgXAorICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgICAgIHZvaWQqIGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgICAgIHZvaWQqIGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgfSBwYWlyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgaW50NjRfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IF9f
cnRfdTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3Uu
cGFpci5hID0gZmlyc3Q7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFp
ci5iID0gc2Vjb25kOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19ydF91
Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisj
ZGVmaW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykKKworI2Rl
ZmluZSBMTElOVF9USFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fdF9nbG9iYWxEYXRhID0gZXhlYy0+Z2xv
YmFsRGF0YSgpOyAgICAgICAgXAorICAgICAgICBfX3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAo
ZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgXAorICAgICAgICBwYyA9IHJldHVyblRvVGhy
b3coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElO
VF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpIGRv
IHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmdsb2Jh
bERhdGEoKS5leGNlcHRpb24pKSB7ICAgXAorICAgICAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93
KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9FTkRfSU1QTCgp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisj
ZGVmaW5lIExMSU5UX0VORCgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5U
X0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2Up
CisKKyNkZWZpbmUgTExJTlRfQlJBTkNIKG9wY29kZSwgY29uZGl0aW9uKSBkbyB7ICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgYm9vbCBfX2JfY29uZGl0aW9uID0gKGNvbmRpdGlvbik7
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9fYl9j
b25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIHBjICs9IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsgICAg
ICAgIFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bjb2Rl
KTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChm
YWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAgICAg
XAorICAgICAgICBKU1ZhbHVlIF9fcl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAorICAg
ICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBM
TElOVF9PUCgxKSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAgXAorICAgICAgICBMTElOVF9F
TkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQor
CisjZGVmaW5lIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcGNvZGUsIHZhbHVlKSBkbyB7ICAgICAg
ICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcnBfcmV0dXJuVmFsdWUgPSAodmFsdWUpOyAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0gX19y
cF9yZXR1cm5WYWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwY1tPUENP
REVfTEVOR1RIKG9wY29kZSkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IFwKKyAgICAg
ICAgICAgIEpTVmFsdWU6OmVuY29kZShfX3JwX3JldHVyblZhbHVlKTsgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExf
RU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RXTygoY2FsbFRhcmdldCks
IChleGVjKSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBleGNlcHRpb25U
b1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3RfZXhl
YyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJ
bnN0cnVjdGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fY3RfZ2xvYmFsRGF0YSA9IChfX2N0X2V4
ZWMpLT5nbG9iYWxEYXRhKCk7ICAgICAgXAorICAgICAgICBfX2N0X2dsb2JhbERhdGEuZXhjZXB0
aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElO
VF9DQUxMX0VORF9JTVBMKF9fY3RfZXhlYywgY2FsbFRvVGhyb3coX19jdF9leGVjLCBfX2N0X3Bj
KSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0NIRUNLX0VY
Q0VQVElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBF
eGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jY2VfcGMgPSAocGMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoX19jY2VfZXhl
Yy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
TExJTlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2NjZV9leGVjLCBf
X2NjZV9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9S
RVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgRXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMgPSAocGMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9pZCogX19jcl9jYWxs
VGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19jcl9leGVjLT5jYWxsZXJGcmFtZSgpLCBf
X2NyX3BjKTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NyX2V4ZWMsIF9fY3Jf
Y2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworZXh0
ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBl
eGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAg
IHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6
ICVkXG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywK
KyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCkt
Pmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCku
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJv
bVdoZXJlLAorICAgICAgICAgICBvcGVyYW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9w
ZXJhbmQpOworICAgIExMSU5UX0VORCgpOworfQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5
cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGlu
dCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9P
UF9DKG9wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7Cisg
ICAgICAgICAgICB1aW50MzJfdCB0YWc7CisgICAgICAgICAgICB1aW50MzJfdCBwYXlsb2FkOwor
ICAgICAgICB9IGJpdHM7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlIGFzVmFsdWU7CisgICAgfSB1
OworICAgIHUuYXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgcHJpbnRmKCIl
cCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWQ6ICUwOHg6
JTA4eCIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAor
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5p
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBmcm9t
V2hlcmUsCisgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3Bl
cmFuZCwKKyAgICAgICAgICAgdS5iaXRzLnRhZywKKyAgICAgICAgICAgdS5iaXRzLnBheWxvYWQp
OworI2lmbmRlZiBOREVCVUcKKyAgICBwcmludGYoIjogJXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigp
KTsKKyNlbmRpZgorICAgIHByaW50ZigiXG4iKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBp
biBwcm9sb2d1ZS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKKyAgICBMTElOVF9FTkQo
KTsKK30KKworc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorewor
ICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAg
IEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNv
ZGVGb3Ioa2luZCk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwg
ZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxl
ZVJlZ2lzdGVycyA9ICV1LlxuIiwKKyAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBjb21tZW50
LCBjYWxsZWUsIGV4ZWN1dGFibGUsCisgICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1WYXJzLCBj
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVy
cyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9j
YWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBwcm9sb2d1ZSIs
IENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
dHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1bmN0
aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JDb25zdHJ1Y3Qp
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNo
ZWNrX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBh
cml0eSBjaGVjayIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNl
RnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IGFyaXR5IGNoZWNrIiwgQ29kZUZvckNv
bnN0cnVjdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNl
KQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgIiwKKyAgICAgICAg
ICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRp
Y19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpKSk7CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50ZigiJXMsICIsIG9wY29kZU5hbWVz
W2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNv
ZGUpXSk7CisjZWxzZQorICAgIHByaW50Zigib3AjJXUsICIsIGV4ZWMtPmdsb2JhbERhdGEoKS5p
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpKTsKKyNlbmRpZgorICAgIHBy
aW50Zigic2NvcGUgJXBcbiIsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2UpCit7CisgICAgcHJpbnRmKCIl
cCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJldHVybiBQQyBp
cyAlcFxuIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMs
CisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygp
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGV4
ZWMtPnJldHVyblBDKCkudmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2lubGluZSBi
b29sIHNob3VsZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gWW91IGNhbiBtb2RpZnkg
dGhpcyB0byB0dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0aGUgd29ybGQuCisg
ICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKTsKK30KKworZW51bSBFbnRy
eUtpbmQgeyBQcm9sb2d1ZSwgQXJpdHlDaGVjayB9Oworc3RhdGljIEhlbHBlclJldHVyblR5cGUg
ZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29k
ZUJsb2NrLCBjb25zdCBjaGFyICpuYW1lLCBFbnRyeUtpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUo
SklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgJXMgd2l0aCBleGVjdXRl
Q291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIG5hbWUsIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRl
Q291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7Cisg
ICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JF
VFVSTl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxl
KGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAg
ICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYK
KyAgICB9CisgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgaWYgKGtpbmQgPT0gUHJvbG9n
dWUpCisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhl
Y3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7CisgICAgQVNTRVJUKGtpbmQgPT0gQXJp
dHlDaGVjayk7CisgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGVXaXRo
QXJpdHlDaGVjaygpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGV4ZWMpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChlbnRyeV9vc3IpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCBleGVj
LT5jb2RlQmxvY2soKSwgImVudHJ5X29zciIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHJldHVybiBlbnRyeU9T
UihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+
Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zv
cl9jYWxsIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZh
c0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVj
b2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3QiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywg
JmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0
ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
Q2hlY2siLCBBcml0eUNoZWNrKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICByZXR1cm4gZW50cnlPU1Io
ZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdl
bmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChsb29wX29zcikKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNv
ZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRm
KCIlcDogRW50ZXJlZCBsb29wX29zciB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVC
bG9jaywgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisg
ICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55
dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9Cisg
ICAgCisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkg
eworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50ZigiICAgIENvZGUg
d2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxvY2st
PmppdFNvb24oKTsKKyAgICAKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIAorICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hp
bmVPZmZzZXQ+IG1hcDsKKyAgICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKG1hcCk7
CisgICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2VhcmNoPEJ5
dGVjb2RlQW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQsIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNl
dDo6Z2V0Qnl0ZWNvZGVJbmRleD4obWFwLmJlZ2luKCksIG1hcC5zaXplKCksIHBjIC0gY29kZUJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICBBU1NFUlQobWFwcGluZyk7CisgICAg
QVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
cGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyAgICAKKyAgICB2b2lk
KiBqdW1wVGFyZ2V0ID0gY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NB
dE9mZnNldChtYXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQoanVtcFRh
cmdldCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOX1RXTyhqdW1wVGFyZ2V0LCBleGVjKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1Ip
CisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCByZXBsYWNlIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAl
ZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5k
aWYKKyAgICAKKyAgICBpZiAoc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGlmICghY29kZUJs
b2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZF
UkJPU0VfT1NSKQorICAgICAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21w
aWxlZC5cbiIpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgY29kZUJsb2NrLT5qaXRTb29u
KCk7CisgICAgfSBlbHNlCisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVf
Y2hlY2spCit7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIkNoZWNraW5n
IHN0YWNrIGhlaWdodCB3aXRoIGV4ZWMgPSAlcC5cbiIsIGV4ZWMpOworICAgIHByaW50ZigiQ29k
ZUJsb2NrID0gJXAuXG4iLCBleGVjLT5jb2RlQmxvY2soKSk7CisgICAgcHJpbnRmKCJOdW0gY2Fs
bGVlIHJlZ2lzdGVycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVn
aXN0ZXJzKTsKKyAgICBwcmludGYoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2so
KS0+bV9udW1WYXJzKTsKKyAgICBwcmludGYoIkN1cnJlbnQgZW5kIGlzIGF0ICVwLlxuIiwgZXhl
Yy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5lbmQoKSk7CisjZW5k
aWYKKyAgICBBU1NFUlQoJmV4ZWMtPnJlZ2lzdGVycygpW2V4ZWMtPmNvZGVCbG9jaygpLT5tX251
bUNhbGxlZVJlZ2lzdGVyc10gPiBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lz
dGVyRmlsZSgpLmVuZCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWV4ZWMtPmdsb2JhbERhdGEoKS5p
bnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+
Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7CisgICAgICAgIGV4ZWMgPSBl
eGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9u
ID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRo
cm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4
Y2VwdGlvbihleGVjKTsKKyAgICB9CisgICAgTExJTlRfRU5EX0lNUEwoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICBFeGVjU3RhdGUqIG5l
d0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmV4ZWMtPmdsb2Jh
bERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDYWxsKTsKKyAgICBp
ZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAg
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJy
b3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAg
ICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRw
dHJfdD4oMSkpLCBleGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVj
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQor
eworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zv
cihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwg
Q29kZUZvckNvbnN0cnVjdCk7CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBl
eGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9u
ID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRo
cm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0
PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIExM
SU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9jcmVhdGVfYWN0aXZhdGlvbikKK3sKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHBy
aW50ZigiQ3JlYXRpbmcgYW4gYWN0aXZhdGlvbiwgZXhlYyA9ICVwIVxuIiwgZXhlYyk7CisjZW5k
aWYKKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBKU0FjdGl2YXRpb246OmNyZWF0ZShl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMsIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+
KGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSkpOworICAgIGV4ZWMtPnNldFNj
b3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2YXRpb24pKTsKKyAgICBMTElO
VF9SRVRVUk4oSlNWYWx1ZShhY3RpdmF0aW9uKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jcmVhdGVfYXJndW1lbnRzKQoreworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1
ZShBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpKTsKKyAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFu
ZCkgPSBhcmd1bWVudHM7CisgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAgICBKU0Z1
bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIAor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7Cisg
ICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNv
bnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlmCisg
ICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgSlNWYWx1ZSBwcm90byA9IExMSU5U
X09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAocHJvdG8uaXNPYmplY3QoKSkKKyAgICAgICAgc3Ry
dWN0dXJlID0gYXNPYmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkp
OworICAgIGVsc2UKKyAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCktPmds
b2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAKKyAgICBMTElOVF9SRVRV
Uk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpCit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5U
X09QKDEpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQodjEuaXNQcmltaXRpdmUoKSk7CisgICAgTExJ
TlRfUkVUVVJOKHYxLnRvVGhpc09iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9i
amVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpCit7
CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxKU1Zh
bHVlKj4oJkxMSU5UX09QKDIpKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQoreworICAgIExMSU5UX1JFVFVSTihjb25z
dHJ1Y3RBcnJheShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIocGNbMl0u
dS5vcGVyYW5kKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9uZXdfcmVnZXhwKQoreworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29kZUJsb2Nr
KCktPnJlZ2V4cChwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkp
CisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIGZs
YWcgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9SRVRVUk4o
UmVnRXhwT2JqZWN0OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJl
KCksIHJlZ0V4cCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KQoreworICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvQm9vbGVh
bihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6
ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbighSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbGVzcykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVlPihleGVj
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9ncmVhdGVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPGZhbHNlPihl
eGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHJlX2luYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1Ao
MSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICsgMSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHJlX2RlYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1Ao
MSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gMSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcG9zdF9pbmMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3Vs
dCArIDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBMTElO
VF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051
bWJlcihyZXN1bHQgLSAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcikKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSkKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNOdW1iZXIoLUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpCit7CisgICAgSlNWYWx1ZSB2MSA9IExM
SU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKTsKKyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVHJ5
aW5nIHRvIGFkZCAlcyIsIHYxLmRlc2NyaXB0aW9uKCkpOworICAgIHByaW50ZigiIHRvICVzLlxu
IiwgdjIuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNTdHJpbmco
KSAmJiAhdjIuaXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMs
IGFzU3RyaW5nKHYxKSwgdjIudG9TdHJpbmcoZXhlYykpKTsKKyAgICAKKyAgICBpZiAodjEuaXNO
dW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIo
djEuYXNOdW1iZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4o
anNBZGRTbG93Q2FzZShleGVjLCB2MSwgdjIpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX211bCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykgKiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihl
eGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKQoreworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAt
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9kaXYpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCkK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoZm1vZChMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KS50b051bWJlcihleGVjKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPDwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3JzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA+PiBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdXJz
aGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9VSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhl
YykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCkKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSAm
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2JpdG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIHwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9y
KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50
b0ludDMyKGV4ZWMpIF4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KQoreworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcih+TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQoreworICAgIEpT
VmFsdWUgYmFzZVZhbCA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworI2lmbmRlZiBOREVCVUcK
KyAgICBUeXBlSW5mbyB0eXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VSVCghYmFz
ZVZhbC5pc09iamVjdCgpCisgICAgICAgICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVjdChiYXNl
VmFsKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKTsK
KyNlbmRpZgorICAgIExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4ZWMsICJp
bnN0YW5jZW9mIiwgYmFzZVZhbCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5z
dGFuY2VvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6
b3BJbnN0YW5jZU9mU2xvdyhleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoNCkuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKQoreworICAgIExMSU5UX1JFVFVSTihqc1R5cGVTdHJp
bmdGb3JWYWx1ZShleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKQoreworICAgIEpTVmFsdWUgdiA9IExMSU5U
X09QX0MoMikuanNWYWx1ZSgpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4odi5pc0NlbGwo
KSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLmlzQm9vbGVhbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9pc19udW1iZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKS5pc051bWJlcigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19zdHJpbmcpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihpc0pTU3RyaW5nKExMSU5U
X09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNf
b2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc09iamVjdFR5cGUoTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19mdW5jdGlvbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5jdGlvblR5
cGUoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9pbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6
b3BJbihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKQoreworICAgIExM
SU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlLCBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2
ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApCit7CisgICAgTExJ
TlRfUkVUVVJOX1BST0ZJTEVEKAorICAgICAgICBvcF9yZXNvbHZlX3NraXAsCisgICAgICAgIENv
bW1vblNsb3dQYXRoczo6b3BSZXNvbHZlU2tpcCgKKyAgICAgICAgICAgIGV4ZWMsCisgICAgICAg
ICAgICBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAg
ICAgICAgICAgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlIHJlc29sdmVH
bG9iYWwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBBU1NFUlQoZ2xvYmFs
T2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkgPSBwY1syXS51Lm9w
ZXJhbmQ7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVyZS5nZXQo
KTsKKyAgICAKKyAgICBBU1NFUlRfVU5VU0VEKHN0cnVjdHVyZSwgc3RydWN0dXJlICE9IGdsb2Jh
bE9iamVjdC0+c3RydWN0dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXImIGlkZW50ID0gY29k
ZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9i
YWxPYmplY3QpOworICAgIAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5U2xvdChl
eGVjLCBpZGVudCwgc2xvdCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZh
bHVlKGV4ZWMsIGlkZW50KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYm
ICFnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisg
ICAgICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAgICAg
ICAgICBwY1szXS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFs
RGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0cnVj
dHVyZSgpKTsKKyAgICAgICAgICAgIHBjWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJy
b3IoZXhlYywgaWRlbnQpOworICAgIHJldHVybiBKU1ZhbHVlKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCkKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJPRklM
RUQob3BfcmVzb2x2ZV9nbG9iYWwsIHJlc29sdmVHbG9iYWwoZXhlYywgcGMpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJ
TlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIHJlc29sdmVHbG9i
YWwoZXhlYywgcGMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZm9y
X3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9w
X3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMs
IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSkKK3sKKyAgICBJZGVudGlmaWVy
JiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7
CisgICAgaWYgKHBjWzNdLnUub3BlcmFuZCkgeworICAgICAgICBKU1ZhbHVlIGJhc2UgPSBKU0M6
OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIHRydWUpOworICAg
ICAgICBpZiAoIWJhc2UpCisgICAgICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvcklu
dmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgICAgICBM
TElOVF9SRVRVUk4oYmFzZSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTl9QUk9GSUxF
RChvcF9yZXNvbHZlX2Jhc2UsIEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNj
b3BlQ2hhaW4oKSwgZmFsc2UpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3Vy
ZV9wcm9wZXJ0eV9leGlzdHMpCit7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KExM
SU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKKyAg
ICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJd
LnUub3BlcmFuZCk7CisgICAgaWYgKCFvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVu
dCwgc2xvdCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2Jh
bEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKK3sKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aEJhc2UoZXhlYywg
ZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1Ao
MSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVz
dWx0OworICAgIC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcsIGJ1
dCB3ZSBkb24ndCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMp
Cit7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhU
aGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCks
IExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9P
UCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJv
ZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4K
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9p
ZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAg
IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFu
ZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBi
YXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKyAgICBMTElOVF9PUCgxKSA9IHJlc3VsdDsKKworICAgIGlmIChiYXNlVmFsdWUuaXND
ZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCisgICAgICAgICYmIHNsb3Quc2xv
dEJhc2UoKSA9PSBiYXNlVmFsdWUKKyAgICAgICAgJiYgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUo
KSA9PSBQcm9wZXJ0eVNsb3Q6OlZhbHVlKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJh
c2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RydWN0
dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0dXJl
LT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpKSB7CisgICAgICAgICAgICBw
Y1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAg
cGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsK
KyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwY1tPUENPREVfTEVOR1RIKG9wX2dldF9ieV9p
ZCkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQp
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2Fy
Z3VtZW50c19sZW5ndGgpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2Rl
QmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihw
Y1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMikuanNW
YWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisgICAgTExJTlRfUkVU
VVJOKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3B1dF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVu
dGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9P
UF9DKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlz
U3RyaWN0TW9kZSgpKTsKKyAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAgICBhc09iamVj
dChiYXNlVmFsdWUpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFzZVZhbHVlLnB1
dChleGVjLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAg
ICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwq
IGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3Ry
dWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0
dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpCisgICAgICAgICAgICAm
JiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBp
ZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgeworICAgICAg
ICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnBy
ZXZpb3VzSUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPnByb3Bl
cnR5U3RvcmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBu
ZWVkZWQgYmVjYXVzZSBzb21lIG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKKyAgICAgICAgICAgICAg
ICAgICAgLy8gYmVsb3cgbWF5IEdDLgorICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29k
ZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAg
ICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+
cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5z
dHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7
CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0
KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3RydWN0
dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAg
ICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVj
KTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsKKyAgICAgICAgICAgICAgICAg
ICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBl
eGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNoYWluKTsK
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9w
ZXJhbmQpCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAg
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bj
b2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3Bf
cHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAg
ICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBz
bG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZGVsX2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKS50b09iamVjdChleGVjKTsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9i
amVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgY29k
ZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCkpOworICAgIExMSU5UX0NIRUNLX0VY
Q0VQVElPTigpOworICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1v
ZGUoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUg
dG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxk
RGVsZXRlKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQoreworICAgIGlmIChMSUtFTFko
YmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBp
ZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0
eShleGVjLCBhc1N0cmluZyhzdWJzY3JpcHQpLT52YWx1ZShleGVjKSkpCisgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkp
IHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBp
ZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldElu
ZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4
KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVl
KSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkKKyAgICAgICAg
ICAgIHJldHVybiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAg
ICAgICAgCisgICAgICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGkpOworICAgIH0KKyAg
ICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVj
KS0+dmFsdWUoZXhlYykpOworICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV92YWwpCit7CisgICAgTExJ
TlRfUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9ieV92YWwsIGdldEJ5VmFsKGV4ZWMsIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGFy
Z3VtZW50cyA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykgewor
ICAgICAgICBhcmd1bWVudHMgPSBBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMpOworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgTExJTlRf
T1AoMikgPSBhcmd1bWVudHM7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFy
Z3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOworICAgIH0KKyAg
ICAKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgYXJndW1lbnRzLCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3Bu
YW1lKQoreworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBMTElOVF9PUCgyKS5qc1Zh
bHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcHV0X2J5X3ZhbCkKK3sKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVj
LT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMikuanNW
YWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAg
ICAKKyAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgeworICAgICAgICB1aW50
MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTQXJyYXkoYmFz
ZVZhbHVlKSkgeworICAgICAgICAgICAgSlNBcnJheSoganNBcnJheSA9IGFzQXJyYXkoYmFzZVZh
bHVlKTsKKyAgICAgICAgICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkKKyAgICAgICAg
ICAgICAgICBqc0FycmF5LT5zZXRJbmRleChnbG9iYWxEYXRhLCBpLCB2YWx1ZSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgSlNBcnJheTo6cHV0QnlJbmRleChqc0FycmF5LCBl
eGVjLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpCisgICAgICAgICAgICAmJiBhc0J5dGVB
cnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICAgICAgSlNCeXRl
QXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAg
IGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0
SW5kZXgoaSwgdmFsdWUuYXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CisgICAg
ICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzTnVtYmVyKCkpOwor
ICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaSwgdmFsdWUpOworICAgICAgICBMTElOVF9FTkQo
KTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RN
b2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92
YWwpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsK
KyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChleGVjKTsKKyAg
ICAKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAg
IAorICAgIGJvb2wgY291bGREZWxldGU7CisgICAgCisgICAgdWludDMyX3QgaTsKKyAgICBpZiAo
c3Vic2NyaXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYmFzZU9iamVjdCwgZXhlYywg
aSk7CisgICAgZWxzZSB7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAg
ICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpOworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgY291
bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNl
T2JqZWN0LCBleGVjLCBwcm9wZXJ0eSk7CisgICAgfQorICAgIAorICAgIGlmICghY291bGREZWxl
dGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElOVF9U
SFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikp
OworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCkKK3sKKyAgICBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKS5wdXQoZXhlYywgcGNbMl0udS5vcGVyYW5kLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wdXRfZ2V0dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmpl
Y3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1Zh
bHVlKCkpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50
aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNWYWx1ZSgp
LmlzT2JqZWN0KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZUdldHRlcihi
YXNlT2JqLCBleGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfc2V0
dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7Cisg
ICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOwor
ICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNb
Ml0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNWYWx1ZSgpLmlzT2JqZWN0
KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZVNldHRlcihiYXNlT2JqLCBl
eGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKQorewor
ICAgIHVuc2lnbmVkIGNvdW50ID0gcGNbMV0udS5vcGVyYW5kOworICAgIFNjb3BlQ2hhaW5Ob2Rl
KiB0bXAgPSBleGVjLT5zY29wZUNoYWluKCk7CisgICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAg
IHRtcCA9IHRtcC0+cG9wKCk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbih0bXApOworICAgIHBj
ICs9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2p0cnVlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qdHJ1ZSwgTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2pmYWxzZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamZhbHNlLCAhTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2psZXNzKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzcywganNMZXNzPHRy
dWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKQoreworICAgIExMSU5U
X0JSQU5DSChvcF9qbmxlc3MsICFqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXIsIGpzTGVz
czxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpCit7Cisg
ICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlciwgIWpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbGVz
c2VxLCBqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVz
c2VxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmxlc3NlcSwgIWpzTGVzc0VxPHRydWU+KGV4
ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9C
UkFOQ0gob3BfamdyZWF0ZXJlcSwganNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfam5ncmVhdGVyZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRl
cmVxLCAhanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dp
dGNoX2ltbSkKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QX0MoMykuanNWYWx1
ZSgpOworICAgIEFTU0VSVChzY3J1dGluZWUuaXNEb3VibGUoKSk7CisgICAgZG91YmxlIHZhbHVl
ID0gc2NydXRpbmVlLmFzRG91YmxlKCk7CisgICAgaW50MzJfdCBpbnRWYWx1ZSA9IHN0YXRpY19j
YXN0PGludDMyX3Q+KHZhbHVlKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3Bl
cmFuZDsKKyAgICBpZiAodmFsdWUgPT0gaW50VmFsdWUpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5p
bW1lZGlhdGVTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShp
bnRWYWx1ZSwgZGVmYXVsdE9mZnNldCk7CisgICAgfSBlbHNlCisgICAgICAgIHBjICs9IGRlZmF1
bHRPZmZzZXQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9zd2l0Y2hfc3RyaW5nKQoreworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7Cisg
ICAgaWYgKCFzY3J1dGluZWUuaXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNl
dDsKKyAgICBlbHNlIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2Rl
QmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUo
cGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGluZWUpLT52YWx1
ZShleGVjKS5pbXBsKCksIGRlZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKQoreworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+
Y29kZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUKKyAgICAgICAgICAgfHwgIWNvZGVCbG9jay0+bmVl
ZHNGdWxsU2NvcGVDaGFpbigpCisgICAgICAgICAgIHx8IGV4ZWMtPnVuY2hlY2tlZFIoY29kZUJs
b2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKKyNpZiBMTElOVF9IRUxQRVJf
VFJBQ0lORworICAgIHByaW50ZigiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKKyNlbmRpZgorICAg
IExMSU5UX1JFVFVSTihjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1syXS51Lm9wZXJhbmQpLT5t
YWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmV3X2Z1bmNfZXhwKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9j
ay0+ZnVuY3Rpb25FeHByKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNGdW5jdGlvbiogZnVuYyA9
IGZ1bmN0aW9uLT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgCisgICAgaWYg
KCFmdW5jdGlvbi0+bmFtZSgpLmlzTnVsbCgpKSB7CisgICAgICAgIEpTU3RhdGljU2NvcGVPYmpl
Y3QqIGZ1bmN0aW9uU2NvcGVPYmplY3QgPSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhl
YywgZnVuY3Rpb24tPm5hbWUoKSwgZnVuYywgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAg
ICAgZnVuYy0+c2V0U2NvcGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jLT5zY29wZSgpLT5wdXNo
KGZ1bmN0aW9uU2NvcGVPYmplY3QpKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKGZ1
bmMpOworfQorCitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3Rh
dGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVl
LT5jYWxsZXJGcmFtZSgpOworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5n
bG9iYWxEYXRhKCk7CisKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3Bl
Q2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworCisgICAgaWYgKGtp
bmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoY2FsbGVlLCBjYWxsRGF0YSk7CisgICAg
CisgICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZUpTKTsKKyAgICAKKyAgICAgICAg
aWYgKGNhbGxUeXBlID09IENhbGxUeXBlSG9zdCkgeworICAgICAgICAgICAgZ2xvYmFsRGF0YS0+
aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVu
Y3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBMTElOVF9DQUxM
X1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkpOworICAgICAgICB9CisgICAgICAgIAorI2lmIExMSU5UX0hFTFBFUl9U
UkFDSU5HCisgICAgICAgIHByaW50ZigiQ2FsbCBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVz
XG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgICAgICBBU1NFUlQoY2Fs
bFR5cGUgPT0gQ2FsbFR5cGVOb25lKTsKKyAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBw
YywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CisgICAgfQorCisgICAg
QVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgCisgICAgQ29uc3RydWN0RGF0
YSBjb25zdHJ1Y3REYXRhOworICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENv
bnN0cnVjdERhdGEoY2FsbGVlLCBjb25zdHJ1Y3REYXRhKTsKKyAgICAKKyAgICBBU1NFUlQoY29u
c3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlSlMpOworICAgIAorICAgIGlmIChjb25zdHJ1Y3RU
eXBlID09IENvbnN0cnVjdFR5cGVIb3N0KSB7CisgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxs
UmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rp
b24oZXhlY0NhbGxlZSkpOworICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBw
YywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAg
IH0KKyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgICAgICBwcmludGYoIkNvbnN0
cnVjdG9yIGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNjcmlwdGlv
bigpKTsKKyNlbmRpZgorCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlw
ZU5vbmUpOworICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFDb25zdHJ1
Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJuVHlwZSBz
ZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCwgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlLCBMTEludENhbGxMaW5r
SW5mbyogY2FsbExpbmtJbmZvID0gMCkKK3sKKyAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25D
ZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKKyAgICBpZiAoIWNhbGxlZUFzRnVu
Y3Rpb25DZWxsKQorICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgcGMs
IGNhbGxlZUFzVmFsdWUsIGtpbmQpOworICAgIAorICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFz
RnVuY3Rpb24oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3Bl
Q2hhaW4oY2FsbGVlLT5zY29wZVVuY2hlY2tlZCgpKTsKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhl
Y3V0YWJsZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOworICAgIAorICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBjb2RlUHRyOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKKyAgICBpZiAo
ZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFi
bGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0
aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICAgICAgSlNPYmpl
Y3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21waWxlRm9yKGV4ZWNDYWxsZWUsIGNh
bGxlZS0+c2NvcGUoKSwga2luZCk7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIExM
SU5UX0NBTExfVEhST1coZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKSwgcGMsIGVycm9yKTsKKyAg
ICAgICAgY29kZUJsb2NrID0gJmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVG
b3Ioa2luZCk7CisgICAgICAgIEFTU0VSVChjb2RlQmxvY2spOworICAgICAgICBpZiAoZXhlY0Nh
bGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4o
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0
aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5n
ZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgfQorICAgIAor
ICAgIGlmIChjYWxsTGlua0luZm8pIHsKKyAgICAgICAgaWYgKGNhbGxMaW5rSW5mby0+aXNPbkxp
c3QoKSkKKyAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+cmVtb3ZlKCk7CisgICAgICAgIEV4ZWNT
dGF0ZSogZXhlY0NhbGxlciA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGNh
bGxMaW5rSW5mby0+Y2FsbGVlLnNldChleGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4ZWNDYWxs
ZXItPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAgICAgY2Fs
bExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBl
eGVjQ2FsbGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAg
ICAgIGNhbGxMaW5rSW5mby0+bWFjaGluZUNvZGVUYXJnZXQgPSBjb2RlUHRyOworICAgICAgICBp
ZiAoY29kZUJsb2NrKQorICAgICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKGNh
bGxMaW5rSW5mbyk7CisgICAgfQorICAgIAorICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxs
ZWUsIHBjLCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworfQorCitpbmxpbmUgSGVscGVy
UmV0dXJuVHlwZSBnZW5lcmljQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86Cisg
ICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRv
IGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gSWYgcG9zc2libGUs
IGxpbmsgdGhlIGNhbGwncyBpbmxpbmUgY2FjaGUuCisgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBv
ZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCisg
ICAgCisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7
CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFu
ZDsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhw
Y1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxl
OjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFt
ZShleGVjKTsKKyAgICAKKyAgICBBU1NFUlQocGNbNF0udS5jYWxsTGlua0luZm8pOworICAgIHJl
dHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIGtpbmQsIGNhbGxlZUFzVmFsdWUsIHBjWzRd
LnUuY2FsbExpbmtJbmZvKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpCit7
CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpCit7CisgICAgcmV0dXJuIGdlbmVyaWND
YWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ29uc3RydWN0KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NhbGxfdmFyYXJncykKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0g
U2V0IHVwIGEgY2FsbCBmcmFtZSB3aGlsZSByZXNwZWN0aW5nIHRoZSB2YXJpYWJsZSBhcmd1bWVu
dHMuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGlsZSBpdCBpZiBu
ZWNlc3NhcnkuCisgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVz
cyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCisgICAgCisgICAgSlNWYWx1ZSBjYWxs
ZWVBc1ZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRl
KiBleGVjQ2FsbGVlID0gbG9hZFZhcmFyZ3MoCisgICAgICAgIGV4ZWMsICZleGVjLT5nbG9iYWxE
YXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLAorICAgICAgICBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHBjWzRdLnUub3BlcmFuZCk7Cisg
ICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpOworICAgIAorICAgIGV4ZWND
YWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsK
KyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjLT51bmNoZWNr
ZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykpOworICAgIAorICAgIHJl
dHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVl
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCkKK3sKKyAgICBKU1Zh
bHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhl
Y1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICBKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgZXhlY0Nh
bGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAg
ICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjQ2FsbGVlLT51bmNo
ZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0Nh
bGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUt
PnNldFJldHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KCZsbGludF9nZW5lcmljX3Jl
dHVybl9wb2ludCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKyAgICBleGVj
LT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfZXZhbCkpOworICAgIAor
ICAgIGlmICghaXNIb3N0RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQor
ICAgICAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2Fs
bGVlQXNWYWx1ZSk7CisgICAgCisgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0g
ZXZhbChleGVjQ2FsbGVlKTsKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKK3sKKyAgICBBU1NF
UlQoZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgSlNWYWx1
ZSBhY3RpdmF0aW9uVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhY3Rp
dmF0aW9uVmFsdWUpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnVuY2hlY2tlZFIo
dW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSkg
eworICAgICAgICAgICAgaWYgKCFleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisg
ICAgICAgICAgICAgICAgYXNBcmd1bWVudHModiktPnRlYXJPZmYoZXhlYyk7CisgICAgICAgIH0K
KyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlv
biA9IGFzQWN0aXZhdGlvbihhY3RpdmF0aW9uVmFsdWUpOworICAgIGFjdGl2YXRpb24tPnRlYXJP
ZmYoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVj
a2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1
ZSgpKQorICAgICAgICBhc0FyZ3VtZW50cyh2KS0+ZGlkVGVhck9mZkFjdGl2YXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBhY3RpdmF0aW9uKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cykKK3sKKyAgICBBU1NFUlQoZXhl
Yy0+Y29kZUJsb2NrKCktPnVzZXNBcmd1bWVudHMoKSAmJiAhZXhlYy0+Y29kZUJsb2NrKCktPm5l
ZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgYXNBcmd1bWVudHMoZXhlYy0+dW5jaGVja2VkUih1
bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKS0+
dGVhck9mZihleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3N0cmNhdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNTdHJpbmcoZXhlYywgJkxMSU5U
X09QKDIpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3RvX3ByaW1pdGl2ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9QcmltaXRpdmUoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X3BuYW1lcykKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAg
aWYgKHYuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBwYyArPSBwY1s1XS51Lm9wZXJh
bmQ7CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAKKyAgICBKU09iamVjdCogbyA9
IHYudG9PYmplY3QoZXhlYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvLT5zdHJ1Y3R1
cmUoKTsKKyAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9y
ID0gc3RydWN0dXJlLT5lbnVtZXJhdGlvbkNhY2hlKCk7CisgICAgaWYgKCFqc1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yIHx8IGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmNhY2hlZFByb3RvdHlwZUNoYWlu
KCkgIT0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSkKKyAgICAgICAganNQcm9wZXJ0
eU5hbWVJdGVyYXRvciA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBvKTsK
KyAgICAKKyAgICBMTElOVF9PUCgxKSA9IEpTVmFsdWUoanNQcm9wZXJ0eU5hbWVJdGVyYXRvcik7
CisgICAgTExJTlRfT1AoMikgPSBKU1ZhbHVlKG8pOworICAgIExMSU5UX09QKDMpID0gUmVnaXN0
ZXI6OndpdGhJbnQoMCk7CisgICAgTExJTlRfT1AoNCkgPSBSZWdpc3Rlcjo6d2l0aEludChqc1By
b3BlcnR5TmFtZUl0ZXJhdG9yLT5zaXplKCkpOworICAgIAorICAgIHBjICs9IE9QQ09ERV9MRU5H
VEgob3BfZ2V0X3BuYW1lcyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXh0X3BuYW1lKQoreworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3Qo
TExJTlRfT1AoMikuanNWYWx1ZSgpKTsKKyAgICBKU1N0cmluZyogcHJvcGVydHkgPSBhc1N0cmlu
ZyhMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIGlmIChiYXNlLT5oYXNQcm9wZXJ0eShleGVj
LCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5LT52YWx1ZShleGVjKSkpKSB7CisgICAgICAgIC8v
IEdvIHRvIHRhcmdldC4KKyAgICAgICAgcGMgKz0gcGNbNl0udS5vcGVyYW5kOworICAgIH0gLy8g
RWxzZSwgZG9uJ3QgY2hhbmdlIHRoZSBQQywgc28gdGhlIGludGVycHJldGVyIHdpbGwgcmVsb29w
LgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9z
Y29wZSkKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgSlNP
YmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
OworICAgIAorICAgIExMSU5UX09QKDEpID0gbzsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4
ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChvKSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUpCit7CisgICAgZXhlYy0+c2V0U2Nv
cGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnBvcCgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKQoreworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIHNjb3Bl
ID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmll
cihwY1syXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIERvbnREZWxldGUpOwor
ICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKHNjb3BlKSk7
CisgICAgTExJTlRfUkVUVVJOKHNjb3BlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Rocm93KQoreworICAgIExMSU5UX1RIUk9XKExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKK3sKKyAg
ICBMTElOVF9USFJPVyhjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBMTElOVF9PUF9DKDEpLmpz
VmFsdWUoKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2RlYnVnKQoreworICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBjWzFdLnUub3Bl
cmFuZDsKKyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOworICAgIGludCBsYXN0
TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50
ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJ
RCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7CisgICAgKCpQcm9m
aWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT53aWxsRXhlY3V0ZShleGVjLCBMTElO
VF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVk
UHJvZmlsZXJSZWZlcmVuY2UoKSktPmRpZEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1
ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50
CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExM
SW50SGVscGVyc19oCisjZGVmaW5lIExMSW50SGVscGVyc19oCisKKyNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBFTkFCTEUoTExJ
TlQpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1
Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKK3R5cGVkZWYgaW50NjRfdCBIZWxwZXJSZXR1
cm5UeXBlOworCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFu
ZChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsK
K2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUq
LCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKKworI2RlZmluZSBM
TElOVF9IRUxQRVJfREVDTChuYW1lKSBcCisgICAgZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBl
IGxsaW50XyMjbmFtZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKKworTExJTlRf
SEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJv
bG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9n
dWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0
eUNoZWNrX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9y
X2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZSk7CitMTElOVF9IRUxQRVJfREVD
TChzcGVjaWFsX3RyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcik7CitMTElOVF9I
RUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RF
Q0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wo
ZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RF
Q0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9I
RUxQRVJfREVDTChsb29wX29zcik7CitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0
X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9u
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y29udmVydF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfb2JqZWN0KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25ld19hcnJheV9idWZmZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdl
eHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3Rl
cSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3ByZV9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9kZWMpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0
X2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25lZ2F0ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3N1Yik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9tb2QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNo
aWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2JpdG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y2hlY2tfaGFzX2luc3RhbmNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9m
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX3VuZGVmaW5lZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVh
bik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pc19zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX29iamVj
dCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2luKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Jlc29sdmVfZ2xvYmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZl
X2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Zvcl9y
ZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZl
X2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRz
X2xlbmd0aCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dl
dF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHV0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5
X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
dXRfc2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qdHJ1ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZh
bHNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcyk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfam5sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcik7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfam5ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9pbW0pOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9jaGFyKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9zd2l0Y2hfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVu
Yyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmNfZXhwKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3Qp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY2FsbF9ldmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29m
Zl9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVu
dHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNhdCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfdG9fcHJpbWl0aXZlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5h
bWVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXh0X3BuYW1lKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bf
c2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhy
b3dfcmVmZXJlbmNlX2Vycm9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1Zyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50SGVscGVy
c19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21D
b25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludE9mZmxpbmVBc21Db25maWdfaAorI2RlZmluZSBMTEludE9mZmxpbmVBc21Db25maWdf
aAorCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5o
PgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4NikKKyNkZWZpbmUgT0ZG
TElORV9BU01fWDg2IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisjZW5kaWYK
KworI2lmIENQVShBUk12NykKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMQorI2Vsc2UKKyNk
ZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMAorI2VuZGlmCisKKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9G
RkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgQ1BVKEJJR19FTkRJQU4p
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElO
RV9BU01fQklHX0VORElBTiAwCisjZW5kaWYKKworI2lmIEVOQUJMRShMTElOVF9PU1JfVE9fSklU
KQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAxCisjZWxzZQorI2RlZmluZSBPRkZM
SU5FX0FTTV9KSVRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIExMSU5UX0VYRUNVVElPTl9UUkFD
SU5HCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDEKKyNlbHNlCisjZGVm
aW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNlbmRpZgorCisjZW5kaWYgLy8g
TExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQWxsb2Nh
dGlvblNwYWNlLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJs
ZS5oIgorI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1
ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5o
IgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5j
bHVkZSAiSlNUeXBlSW5mby5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKKyNpbmNs
dWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNp
bmNsdWRlICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgorI2luY2x1
ZGUgIlNjb3BlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1
Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgT0ZGTElORV9B
U01fT0ZGU0VUT0YoY2xhenosIGZpZWxkKSBPQkpFQ1RfT0ZGU0VUT0YoY2xhenosIGZpZWxkKQor
CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCogZHVtbXkoKTsKK307CisKK2NvbnN0IHVuc2lnbmVkKiBMTEludE9mZnNldHNF
eHRyYWN0b3I6OmR1bW15KCkKK3sKKyNpbmNsdWRlICJMTEludERlc2lyZWRPZmZzZXRzLmgiCisg
ICAgcmV0dXJuIGV4dHJhY3RvclRhYmxlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworaW50
IG1haW4oaW50LCBjaGFyKiopCit7CisgICAgLy8gT3V0IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0
aW9uLCBtYWtlIHN1cmUgdGhhdCBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkgaXMgbGl2
ZSwKKyAgICAvLyBhbmQgdGhlIGV4dHJhY3RvclRhYmxlIGlzIGxpdmUsIHRvby4KKyAgICBwcmlu
dGYoIiVwXG4iLCBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSk7CisgICAgcmV0
dXJuIDA7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5r
cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJMTEludFRodW5rcy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSlNJ
bnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiTG93TGV2
ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwor
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIHZvaWQgKCp0YXJnZXQpKCkpCit7CisgICAgSlNJbnRlcmZh
Y2VKSVQgaml0OworICAgIAorICAgIC8vIEZJWE1FOiB0aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVy
IHdheSB0byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20gbm90IHN1cmUgSSBjYXJlLgorICAgIGppdC5t
b3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFy
Z2V0KSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VK
SVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRh
LCAmaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6
ZUNvZGUoKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5
VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0
cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAg
IHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1
bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEs
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhK
dW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVj
ayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRo
SnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2V2YWxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRh
LCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxM
SW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJ
bnRUaHVua3NfaAorI2RlZmluZSBMTEludFRodW5rc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRhOworCituYW1l
c3BhY2UgTExJbnQgeworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50
cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBm
dW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0
YSopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShM
TElOVCkKKworI2VuZGlmIC8vIExMSW50VGh1bmtzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20J
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjM4MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworCisjIENyYXNoIGNvdXJzZSBvbiB0aGUgbGFuZ3VhZ2UgdGhh
dCB0aGlzIGlzIHdyaXR0ZW4gaW4gKHdoaWNoIEkganVzdCBjYWxsCisjICJhc3NlbWJseSIgZXZl
biB0aG91Z2ggaXQncyBtb3JlIHRoYW4gdGhhdCk6CisjCisjIC0gTW9zdGx5IGdhcy1zdHlsZSBv
cGVyYW5kIG9yZGVyaW5nLiBUaGUgbGFzdCBvcGVyYW5kIHRlbmRzIHRvIGJlIHRoZQorIyAgIGRl
c3RpbmF0aW9uLiBTbyAiYSA6PSBiIiBpcyB3cml0dGVuIGFzICJtb3YgYiwgYSIuIEJ1dCB1bmxp
a2UgZ2FzLAorIyAgIGNvbXBhcmlzb25zIGFyZSBpbi1vcmRlciwgc28gImlmIChhIDwgYikiIGlz
IHdyaXR0ZW4gYXMKKyMgICAiYmlsdCBhLCBiLCAuLi4iLgorIworIyAtICJiIiA9IGJ5dGUsICJo
IiA9IDE2LWJpdCB3b3JkLCAiaSIgPSAzMi1iaXQgd29yZCwgInAiID0gcG9pbnRlci4KKyMgICBD
dXJyZW50bHkgdGhpcyBpcyBqdXN0IDMyLWJpdCBzbyAiaSIgYW5kICJwIiBhcmUgaW50ZXJjaGFu
Z2VhYmxlCisjICAgZXhjZXB0IHdoZW4gYW4gb3Agc3VwcG9ydHMgb25lIGJ1dCBub3QgdGhlIG90
aGVyLgorIworIyAtIEluIGdlbmVyYWwsIHZhbGlkIG9wZXJhbmRzIGZvciBtYWNybyBpbnZvY2F0
aW9ucyBhbmQgaW5zdHJ1Y3Rpb25zIGFyZQorIyAgIHJlZ2lzdGVycyAoZWcgInQwIiksIGFkZHJl
c3NlcyAoZWcgIjRbdDBdIiksIGJhc2UtaW5kZXggYWRkcmVzc2VzCisjICAgKGVnICI3W3QwLCB0
MSwgMl0iKSwgYWJzb2x1dGUgYWRkcmVzc2VzIChlZyAiMHhhMDAwMDAwMFtdIiksIG9yIGxhYmVs
cworIyAgIChlZyAiX2ZvbyIgb3IgIi5mb28iKS4gTWFjcm8gaW52b2NhdGlvbnMgY2FuIGFsc28g
dGFrZSBhbm9ueW1vdXMKKyMgICBtYWNyb3MgYXMgb3BlcmFuZHMuIEluc3RydWN0aW9ucyBjYW5u
b3QgdGFrZSBhbm9ueW1vdXMgbWFjcm9zLgorIworIyAtIExhYmVscyBtdXN0IGhhdmUgbmFtZXMg
dGhhdCBiZWdpbiB3aXRoIGVpdGhlciAiXyIgb3IgIi4iLiAgQSAiLiIgbGFiZWwKKyMgICBpcyBs
b2NhbCBhbmQgZ2V0cyByZW5hbWVkIGJlZm9yZSBjb2RlIGdlbiB0byBtaW5pbWl6ZSBuYW1lc3Bh
Y2UKKyMgICBwb2xsdXRpb24uIEEgIl8iIGxhYmVsIGlzIGFuIGV4dGVybiBzeW1ib2wgKGkuZS4g
Ii5nbG9ibCIpLiBUaGUgIl8iCisjICAgbWF5IG9yIG1heSBub3QgYmUgcmVtb3ZlZCBkdXJpbmcg
Y29kZSBnZW4gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGFzbQorIyAgIGNvbnZlbnRpb25zIGZv
ciBDIG5hbWUgbWFuZ2xpbmcgb24gdGhlIHRhcmdldCBwbGF0Zm9ybSBtYW5kYXRlIGEgIl8iCisj
ICAgcHJlZml4LgorIworIyAtIEEgIm1hY3JvIiBpcyBhIGxhbWJkYSBleHByZXNzaW9uLCB3aGlj
aCBtYXkgYmUgZWl0aGVyIGFub255bW91cyBvcgorIyAgIG5hbWVkLiBCdXQgdGhpcyBoYXMgY2F2
ZWF0cy4gIm1hY3JvIiBjYW4gdGFrZSB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLAorIyAgIHdoaWNo
IG1heSBiZSBtYWNyb3Mgb3IgYW55IHZhbGlkIG9wZXJhbmRzLCBidXQgaXQgY2FuIG9ubHkgcmV0
dXJuCisjICAgY29kZS4gQnV0IHlvdSBjYW4gZG8gVHVyaW5nLWNvbXBsZXRlIHRoaW5ncyB2aWEg
Y29udGludWF0aW9uIHBhc3NpbmcKKyMgICBzdHlsZTogIm1hY3JvIGZvbyAoYSwgYikgYihhKSBl
bmQgZm9vKGZvbywgZm9vKSIuIEFjdHVhbGx5LCBkb24ndCBkbworIyAgIHRoYXQsIHNpbmNlIHlv
dSdsbCBqdXN0IGNyYXNoIHRoZSBhc3NlbWJsZXIuCisjCisjIC0gQW4gImlmIiBpcyBhIGNvbmRp
dGlvbmFsIG9uIHNldHRpbmdzLiBBbnkgaWRlbnRpZmllciBzdXBwbGllZCBpbiB0aGUKKyMgICBw
cmVkaWNhdGUgb2YgYW4gImlmIiBpcyBhc3N1bWVkIHRvIGJlIGEgI2RlZmluZSB0aGF0IGlzIGF2
YWlsYWJsZQorIyAgIGR1cmluZyBjb2RlIGdlbi4gU28geW91IGNhbid0IHVzZSAiaWYiIGZvciBj
b21wdXRhdGlvbiBpbiBhIG1hY3JvLCBidXQKKyMgICB5b3UgY2FuIHVzZSBpdCB0byBzZWxlY3Qg
ZGlmZmVyZW50IHBpZWNlcyBvZiBjb2RlIGZvciBkaWZmZXJlbnQKKyMgICBwbGF0Zm9ybXMuCisj
CisjIC0gQXJndW1lbnRzIHRvIG1hY3JvcyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIHJhdGhlciB0
aGFuIGR5bmFtaWMgc2NvcGluZy4KKyMgICBDb25zdCdzIGFsc28gZm9sbG93IGxleGljYWwgc2Nv
cGluZyBhbmQgbWF5IG92ZXJyaWRlIChoaWRlKSBhcmd1bWVudHMKKyMgICBvciBvdGhlciBjb25z
dHMuIEFsbCB2YXJpYWJsZXMgKGFyZ3VtZW50cyBhbmQgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQK
KyMgICB0byBvcGVyYW5kcy4gQWRkaXRpb25hbGx5LCBhcmd1bWVudHMgKGJ1dCBub3QgY29uc3Rh
bnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBtYWNyb3MuCisKKworIyBUaGVzZSBkZWNsYXJhdGlv
bnMgbXVzdCBtYXRjaCBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaC4KK2NvbnN0IENhbGxGcmFt
ZUhlYWRlclNpemUgPSA0OAorY29uc3QgQXJndW1lbnRDb3VudCA9IC00OAorY29uc3QgQ2FsbGVy
RnJhbWUgPSAtNDAKK2NvbnN0IENhbGxlZSA9IC0zMgorY29uc3QgU2NvcGVDaGFpbiA9IC0yNAor
Y29uc3QgUmV0dXJuUEMgPSAtMTYKK2NvbnN0IENvZGVCbG9jayA9IC04CisKK2NvbnN0IFRoaXNB
cmd1bWVudE9mZnNldCA9IC1DYWxsRnJhbWVIZWFkZXJTaXplIC0gOAorCisjIERlY2xhcmUgc29t
ZSBhbGlhc2VzIGZvciB0aGUgcmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAor
CisjIE9mZnNldHMgbmVlZGVkIGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRp
b24uCitpZiBCSUdfRU5ESUFOCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBh
eWxvYWRPZmZzZXQgPSA0CitlbHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0
IFBheWxvYWRPZmZzZXQgPSAwCitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFu
dHMuCitjb25zdCBJbnQzMlRhZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51
bGxUYWcgPSAtMworY29uc3QgVW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQor
Y29uc3QgRW1wdHlWYWx1ZVRhZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29u
c3QgTG93ZXN0VGFnID0gRGVsZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25z
dCBTdHJpbmdUeXBlID0gNQorY29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFncyBj
b25zdGFudHMuCitjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVt
ZW50c0hhc0luc3RhbmNlID0gMgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9
IDgKKworIyBIZWFwIGFsbG9jYXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNp
emVDbGFzc0luZGV4ID0gMworCisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3Qg
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNv
bnN0YW50cy4KK2NvbnN0IEdsb2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0
IEZ1bmN0aW9uQ29kZSA9IDIKKworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29y
ZCBvZiB0aGUgYXJndW1lbnQgY291bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRD
b3VudCArIFRhZ09mZnNldAorCisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25z
dCBWZWN0b3JTaXplT2Zmc2V0ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisj
IFN0cmluZyBmbGFncy4KK2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxp
dGllcworbWFjcm8gY3Jhc2goKQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3Zl
IDAsIHQwCisgICAgY2FsbCB0MAorZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAg
aWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAgY3Jhc2go
KQorICAgIC5vazoKKyAgICBlbmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NB
ZnRlckNhbGwoZGVzdGluYXRpb25SZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3Zl
IGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBvcCBkZXN0
aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisK
K21hY3JvIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQor
ICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAgZWxzaWYg
WDg2CisgICAgICAgIHB1c2ggc291cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9y
CisgICAgZW5kCitlbmQKKworbWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRwIGFkdmFu
Y2UgKiA0LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRo
T2Zmc2V0KHBjT2Zmc2V0KQorICAgIGxzaGlmdGkgMiwgcGNPZmZzZXQKKyAgICBhZGRwIHBjT2Zm
c2V0LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZz
ZXQpCisgICAgbG9hZGkgcGNPZmZzZXQsIHQwCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0
KHQwKQorZW5kCisKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBBcmd1bWVu
dENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBj
Q2FsbDIoZnVuY3Rpb24sIGFyZzEsIGFyZzIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBh
cmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBv
a2UgYXJnMSwgMAorICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICBlbHNlCisgICAgICAgIGVycm9y
CisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5kCisKKyMgVGhpcyBiYXJlbHkgd29ya3Mu
IGFyZzMgYW5kIGFyZzQgc2hvdWxkIHByb2JhYmx5IGJlIGltbWVkaWF0ZXMuCittYWNybyBjQ2Fs
bDQoZnVuY3Rpb24sIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpCisgICAgaWYgQVJNdjcKKyAgICAg
ICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgICAgIG1vdmUgYXJn
MywgdDIKKyAgICAgICAgbW92ZSBhcmc0LCB0MworICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tl
IGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisgICAgICAgIHBva2UgYXJnMywgMgorICAg
ICAgICBwb2tlIGFyZzQsIDMKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAg
Y2FsbCBmdW5jdGlvbgorZW5kCisKK21hY3JvIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGNDYWxs
MihoZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2Vu
ZAorCisjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVy
YW5kIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uIGZyb21XaGVyZQorIyBzaG91bGQgYmUgYW4g
aW1tZWRpYXRlIGludGVnZXIgLSBhbnkgaW50ZWdlciB5b3UgbGlrZTsgdXNlIGl0IHRvIGlkZW50
aWZ5IHRoZSBwbGFjZSB5b3UncmUKKyMgZGVidWdnaW5nIGZyb20uIG9wZXJhbmQgc2hvdWxkIGxp
a2V3aXNlIGJlIGFuIGltbWVkaWF0ZSwgYW5kIHNob3VsZCBpZGVudGlmeSB0aGUgb3BlcmFuZAor
IyBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtIHlvdSdkIGxpa2UgdG8gcHJpbnQgb3V0LgorbWFj
cm8gdHJhY2VPcGVyYW5kKGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3Ry
YWNlX29wZXJhbmQsIGNmciwgUEMsIGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQ
QworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKKyMgRGVidWdnaW5nIG9wZXJhdGlvbiBpZiB5b3Un
ZCBsaWtlIHRvIHByaW50IHRoZSB2YWx1ZSBvZiBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlv
bgorIyBzdHJlYW0uIFNhbWUgYXMgdHJhY2VPcGVyYW5kKCksIGJ1dCBhc3N1bWVzIHRoYXQgdGhl
IG9wZXJhbmQgaXMgYSByZWdpc3RlciwgYW5kIHByaW50cyBpdHMKKyMgdmFsdWUuCittYWNybyB0
cmFjZVZhbHVlKGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX3Zh
bHVlLCBjZnIsIFBDLCBmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBt
b3ZlIHQxLCBjZnIKK2VuZAorCittYWNybyB0cmFjZUV4ZWN1dGlvbigpCisgICAgaWYgRVhFQ1VU
SU9OX1RSQUNJTkcKKyAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfdHJhY2UpCisgICAgZW5kCitl
bmQKKworIyBDYWxsIGEgaGVscGVyIGZvciBjYWxsIG9wY29kZXMuCittYWNybyBjYWxsQ2FsbEhl
bHBlcihhZHZhbmNlLCBoZWxwZXIsIGFjdGlvbikKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQywg
dDAKKyAgICBzdG9yZXAgdDAsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIGND
YWxsMihoZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYWN0aW9uKHQwKQor
ZW5kCisKK21hY3JvIHNsb3dQYXRoRm9yQ2FsbChhZHZhbmNlLCBoZWxwZXIpCisgICAgY2FsbENh
bGxIZWxwZXIoCisgICAgICAgIGFkdmFuY2UsCisgICAgICAgIGhlbHBlciwKKyAgICAgICAgbWFj
cm8gKGNhbGxlZSkKKyAgICAgICAgICAgIGNhbGwgY2FsbGVlCisgICAgICAgICAgICBkaXNwYXRj
aEFmdGVyQ2FsbCgpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklU
KGluY3JlbWVudCwgYWN0aW9uKQorICAgIGlmIEpJVF9FTkFCTEVECisgICAgICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MAorICAgICAgICBiYWRkaXMgaW5jcmVtZW50LCBDb2RlQmxvY2s6Om1f
bGxpbnRFeGVjdXRlQ291bnRlclt0MF0sIC5jb250aW51ZQorICAgICAgICBhY3Rpb24oKQorICAg
IC5jb250aW51ZToKKyAgICBlbmQKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9v
cCgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMSwKKyAgICAgICAgbWFjcm8gKCkK
KyAgICAgICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisg
ICAgICAgICAgICBjQ2FsbDIoX2xsaW50X2xvb3Bfb3NyLCBjZnIsIFBDKQorICAgICAgICAgICAg
bW92ZSB0MSwgY2ZyCisgICAgICAgICAgICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAgICAgICAg
am1wIHQwCisgICAgICAgIC5yZWNvdmVyOgorICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3Vu
dCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tT
d2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAx
MCwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlcGxh
Y2UpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBhc3NlcnROb3RDb25zdGFudChpbmRleCkK
KyAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWx0IGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCwgb2sgZW5kKQorZW5kCisKKyMgSW5kZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBk
aWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QKKyMgY2hhbmdlZC4KK21hY3JvIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgs
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZz
ZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lz
dGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUg
aXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJl
IGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAg
IGxvYWRwIFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRwIFBheWxv
YWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAorCisjIElu
ZGV4IGFuZCBwYXlsb2FkIG1heSBiZSB0aGUgc2FtZSByZWdpc3Rlci4gSW5kZXggbWF5IGJlIGNs
b2JiZXJlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKGluZGV4LCB0YWcsIHBh
eWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNv
bnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisu
Y29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhZworICAgIGxvYWRwIENvZGVC
bG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFt0YWddLCB0YWcK
KyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5z
IGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVl
IDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCkgPDwgMy4KKyAgICBsc2hpZnRpIDMsIGluZGV4CisgICAgYWRkcCBpbmRleCwgdGFnCisgICAg
bG9hZHAgUGF5bG9hZE9mZnNldFt0YWddLCBwYXlsb2FkCisgICAgbG9hZHAgVGFnT2Zmc2V0W3Rh
Z10sIHRhZworLmRvbmU6CitlbmQKKworbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRUYWdDdXN0b20oaW5kZXgsIHRhZ0NoZWNrLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwg
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIHRhZ0NoZWNrKFRhZ09m
ZnNldFtjZnIsIGluZGV4LCA4XSkKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgs
IDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3Rl
cnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlz
IGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBl
cXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICB0
YWdDaGVjayhUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdKQorICAgIGxvYWRwIFBheWxvYWRP
ZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4
IGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90IG11
dGF0ZWQuIFVzZQorIyB0aGlzIGlmIHlvdSBrbm93IHdoYXQgdGhlIHRhZyBvZiB0aGUgdmFyaWFi
bGUgc2hvdWxkIGJlLiBEb2luZyB0aGUgdGFnCisjIHRlc3QgYXMgcGFydCBvZiBsb2FkaW5nIHRo
ZSB2YXJpYWJsZSByZWR1Y2VzIHJlZ2lzdGVyIHVzZSwgYnV0IG1heSBub3QKKyMgYmUgZmFzdGVy
IHRoYW4gZG9pbmcgbG9hZENvbnN0YW50T3JWYXJpYWJsZSBmb2xsb3dlZCBieSBhIGJyYW5jaCBv
biB0aGUKKyMgdGFnLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgs
IGV4cGVjdGVkVGFnLCBwYXlsb2FkLCBzbG93KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkVGFnQ3VzdG9tKAorICAgICAgICBpbmRleCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRh
ZykgYmluZXEgYWN0dWFsVGFnLCBleHBlY3RlZFRhZywgc2xvdyBlbmQsCisgICAgICAgIHBheWxv
YWQpCitlbmQKKworbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQo
aW5kZXgsIHBheWxvYWQpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0
b20oCisgICAgICAgIGluZGV4LAorICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBlbmQsCisgICAg
ICAgIHBheWxvYWQpCitlbmQKKworbWFjcm8gd3JpdGVCYXJyaWVyKHRhZywgcGF5bG9hZCkKKyAg
ICAjIE5vdGhpbmcgdG8gZG8sIHNpbmNlIHdlIGRvbid0IGhhdmUgYSBnZW5lcmF0aW9uYWwgb3Ig
aW5jcmVtZW50YWwgY29sbGVjdG9yLgorZW5kCisKK21hY3JvIHZhbHVlUHJvZmlsZSh0YWcsIHBh
eWxvYWQsIHByb2ZpbGUpCisgICAgc3RvcmVpIHRhZywgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMg
KyBUYWdPZmZzZXRbcHJvZmlsZV0KKyAgICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjpt
X2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3Byb2ZpbGVdCitlbmQKKworCisjIEluZGljYXRlIHRo
ZSBiZWdpbm5pbmcgb2YgTExJbnQuCitfbGxpbnRfYmVnaW46CisgICAgY3Jhc2goKQorCisKKyMg
RW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIKKworbWFjcm8gZnVuY3Rpb25Gb3JDYWxs
Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0
YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRS
ZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjpt
X2NvZGVCbG9ja0ZvckNhbGxbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisK
K21hY3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVy
KQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEpTRnVu
Y3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisgICAg
bG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRS
ZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxv
Y2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhcmdl
dFJlZ2lzdGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVn
aXN0ZXIpCisgICAgc3RvcmVwIHNvdXJjZVJlZ2lzdGVyLCBDb2RlQmxvY2tbY2ZyXQorZW5kCisK
K21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgICMg
Tm90aGluZyB0byBkbyEKK2VuZAorCisjIERvIHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8g
ZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENvZGVCbG9jayoKKyMgaW4g
dDEuIE1heSBhbHNvIHRyaWdnZXIgcHJvbG9ndWUgZW50cnkgT1NSLgorbWFjcm8gcHJvbG9ndWUo
Y29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zckhlbHBlciwgdHJhY2VIZWxwZXIp
CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIAorICAgICMgU2V0
IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgorICAgIHN0b3Jl
cCB0MiwgUmV0dXJuUENbY2ZyXQorICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAgICAgIGNh
bGxIZWxwZXIodHJhY2VIZWxwZXIpCisgICAgZW5kCisgICAgY29kZUJsb2NrR2V0dGVyKHQxKQor
ICAgIGlmIEpJVF9FTkFCTEVECisgICAgICAgIGJhZGRpcyA1LCBDb2RlQmxvY2s6Om1fbGxpbnRF
eGVjdXRlQ291bnRlclt0MV0sIC5jb250aW51ZQorICAgICAgICBjQ2FsbDIob3NySGVscGVyLCBj
ZnIsIFBDKQorICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgYnRweiB0MCwgLnJlY292ZXIK
KyAgICAgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICAgICAgcmVzdG9yZVJldHVybkFk
ZHJlc3NCZWZvcmVSZXR1cm4odDIpCisgICAgICAgIGptcCB0MAorICAgIC5yZWNvdmVyOgorICAg
ICAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCisgICAgLmNvbnRpbnVlOgorICAgIGVuZAorICAgIGNv
ZGVCbG9ja1NldHRlcih0MSkKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgUEMuCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpJ
bnN0cnVjdGlvbnM6Om1faW5zdHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMK
K2VuZAorCisjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQg
cHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgorIyBNdXN0IGNhbGwgZGlzcGF0Y2goMCkgYWZ0ZXIg
Y2FsbGluZyB0aGlzLgorbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbihwcm9maWxlQXJnU2tp
cCkKKyAgICAjIFByb2ZpbGUgdGhlIGFyZ3VtZW50cy4gVW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBu
byBjaG9pY2UgYnV0IHRvIGRvIHRoaXMuIFRoaXMKKyAgICAjIGNvZGUgaXMgcHJldHR5IGhvcnJl
bmRvdXMgYmVjYXVzZSBvZiB0aGUgZGlmZmVyZW5jZSBpbiBvcmRlcmluZyBiZXR3ZWVuCisgICAg
IyBhcmd1bWVudHMgYW5kIHZhbHVlIHByb2ZpbGVzLCB0aGUgZGVzaXJlIHRvIGhhdmUgYSBzaW1w
bGUgbG9vcC1kb3duLXRvLXplcm8KKyAgICAjIGxvb3AsIGFuZCB0aGUgZGVzaXJlIHRvIHVzZSBv
bmx5IHRocmVlIHJlZ2lzdGVycyBzbyBhcyB0byBwcmVzZXJ2ZSB0aGUgUEMgYW5kCisgICAgIyB0
aGUgY29kZSBibG9jay4gSXQgaXMgbGlrZWx5IHRoYXQgdGhpcyBjb2RlIHNob3VsZCBiZSByZXdy
aXR0ZW4gaW4gYSBtb3JlCisgICAgIyBvcHRpbWFsIHdheSBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0
IGhhdmUgbW9yZSB0aGFuIGZpdmUgcmVnaXN0ZXJzIGF2YWlsYWJsZQorICAgICMgZm9yIGFyYml0
cmFyeSB1c2UgaW4gdGhlIGludGVycHJldGVyLgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1Q
YXJhbWV0ZXJzW3QxXSwgdDAKKyAgICBhZGRpIC1wcm9maWxlQXJnU2tpcCwgdDAgIyBVc2UgYWRk
aSBiZWNhdXNlIHRoYXQncyB3aGF0IGhhcyB0aGUgcGVlcGhvbGUKKyAgICBhc3NlcnQobWFjcm8g
KG9rKSBiaWd0ZXEgdDAsIDAsIG9rIGVuZCkKKyAgICBidGl6IHQwLCAuYXJndW1lbnRQcm9maWxl
RG9uZQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMgKyBWZWN0
b3JCdWZmZXJPZmZzZXRbdDFdLCB0MworICAgIG11bGkgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDAs
IHQyICMgQWFhYWFoaGhoISBOZWVkIHN0cmVuZ3RoIHJlZHVjdGlvbiEKKyAgICBuZWdpIHQwCisg
ICAgbHNoaWZ0aSAzLCB0MAorICAgIGFkZHAgdDIsIHQzCisuYXJndW1lbnRQcm9maWxlTG9vcDoK
KyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXQgKyA4IC0gcHJvZmlsZUFy
Z1NraXAgKiA4W2NmciwgdDBdLCB0MgorICAgIHN1YnAgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDMK
KyAgICBzdG9yZWkgdDIsIHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZh
bHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIFRoaXNBcmd1
bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXQgKyA4IC0gcHJvZmlsZUFyZ1NraXAgKiA4W2Nmciwg
dDBdLCB0MgorICAgIHN0b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBzaXplb2YgVmFsdWVQcm9m
aWxlICsgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGJh
ZGRpbnogOCwgdDAsIC5hcmd1bWVudFByb2ZpbGVMb29wCisuYXJndW1lbnRQcm9maWxlRG9uZToK
KyAgICAKKyAgICAjIENoZWNrIHN0YWNrIGhlaWdodC4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1f
bnVtQ2FsbGVlUmVnaXN0ZXJzW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFs
RGF0YVt0MV0sIHQyCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjppbnRlcnByZXRlclt0Ml0sIHQy
ICAgIyBGSVhNRTogQ2FuIGdldCB0byB0aGUgUmVnaXN0ZXJGaWxlIGZyb20gdGhlIEpJVFN0YWNr
RnJhbWUKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MCwgY2ZyLCB0MAorICAgIGJwYWVx
IEludGVycHJldGVyOjptX3JlZ2lzdGVyRmlsZSArIFJlZ2lzdGVyRmlsZTo6bV9lbmRbdDJdLCB0
MCwgLnN0YWNrSGVpZ2h0T0sKKworICAgICMgU3RhY2sgaGVpZ2h0IGNoZWNrIGZhaWxlZCAtIG5l
ZWQgdG8gY2FsbCBhIGhlbHBlci4KKyAgICBjYWxsSGVscGVyKF9sbGludF9yZWdpc3Rlcl9maWxl
X2NoZWNrKQorLnN0YWNrSGVpZ2h0T0s6CitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2Nr
IGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KK21hY3Jv
IGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIGhlbHBlcikKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGJpYWVxIHQwLCBDb2RlQmxvY2s6
Om1fbnVtUGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJlbAorICAgIGNDYWxsMihoZWxwZXIsIGNmciwg
UEMpICAgIyBUaGlzIGhlbHBlciBoYXMgYSBzaW1wbGUgcHJvdG9jb2w6IHQwID0gMCA9PiBubyBl
cnJvciwgdDAgIT0gMCA9PiBlcnJvcgorICAgIG1vdmUgdDEsIGNmcgorICAgIGJ0aXogdDAsIC5j
b250aW51ZQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAg
IGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBK
U0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorLmNvbnRpbnVlOgorICAg
ICMgUmVsb2FkIENvZGVCbG9jayBhbmQgUEMsIHNpbmNlIHRoZSBoZWxwZXIgY2xvYmJlcmVkIGl0
LgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9p
bnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjpt
X2luc3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCisgICAgam1wIGRvbmVM
YWJlbAorZW5kCisKK19sbGludF9wcm9ncmFtX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1
bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50
X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKwor
X2xsaW50X2V2YWxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tH
ZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxp
bnRfdHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2Nr
R2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlv
bl9mb3JfY2FsbCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQorLmZ1
bmN0aW9uRm9yQ2FsbEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKKyAgICBk
aXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1
ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVu
Y3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCisuZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCisg
ICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rp
b25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJp
dHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCisgICAgZnVuY3Rpb25B
cml0eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X2hlbHBlcl9jYWxsX2FyaXR5
Q2hlY2spCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2s6Cisg
ICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9u
Q29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKKyAgICBm
dW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9sbGludF9oZWxw
ZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spCisKKyMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25z
CisKK19sbGludF9vcF9lbnRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVZhcnNbdDJdLCB0Mgor
ICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZQorICAgIG1vdmUgVW5kZWZpbmVkVGFnLCB0MAorICAg
IG1vdmUgMCwgdDEKKy5vcEVudGVyTG9vcDoKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIHQw
LCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MiwgOF0KKyAgICBidGlueiB0MiwgLm9wRW50ZXJMb29wCisub3BFbnRlckRvbmU6CisgICAg
ZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pCisub3BDcmVhdGVBY3RpdmF0
aW9uRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbml0X2xhenlfcmVnOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgRW1w
dHlWYWx1ZVRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jcmVhdGVf
YXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFy
Z3VtZW50c0RvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FyZ3VtZW50
cykKKy5vcENyZWF0ZUFyZ3VtZW50c0RvbmU6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBh
bGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kZXgsIGNsYXNzSW5mb09mZnNldCwgc3Ry
dWN0dXJlLCByZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2xvd0Nhc2UpCisgICAgY29uc3Qg
b2Zmc2V0T2ZNeVNpemVDbGFzcyA9IEpTR2xvYmFsRGF0YTo6aGVhcCArIEhlYXA6Om1fb2JqZWN0
U3BhY2UgKyBBbGxvY2F0aW9uU3BhY2U6Om1fbWFya2VkU3BhY2UgKyBNYXJrZWRTcGFjZTo6bV9w
cmVjaXNlU2l6ZUNsYXNzZXMgKyBzaXplQ2xhc3NJbmRleCAqIHNpemVvZiBNYXJrZWRTcGFjZTo6
U2l6ZUNsYXNzCisgICAgCisgICAgIyBGSVhNRTogd2UgY2FuIGdldCB0aGUgZ2xvYmFsIGRhdGEg
aW4gb25lIGxvYWQgZnJvbSB0aGUgc3RhY2suCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNj
cmF0Y2gxCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbc2NyYXRjaDFdLCBzY3Jh
dGNoMQorICAgIAorICAgICMgR2V0IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LiAgICAK
KyAgICBsb2FkcCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6
Zmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0sIHJlc3VsdAorICAgIGJ0cHogcmVzdWx0LCBzbG93Q2Fz
ZQorICAgIAorICAgICMgUmVtb3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LgorICAg
IGxvYWRwIFtyZXN1bHRdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNoMiwgb2Zmc2V0T2ZN
eVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRj
aDFdCisKKyAgICAjIEluaXRpYWxpemUgdGhlIG9iamVjdC4KKyAgICBsb2FkcCBjbGFzc0luZm9P
ZmZzZXRbc2NyYXRjaDFdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3VsdF0K
KyAgICBzdG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0KKyAgICBz
dG9yZXAgMCwgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0XQorICAgIGFkZHAgc2l6ZW9m
IEpTT2JqZWN0LCByZXN1bHQsIHNjcmF0Y2gxCisgICAgc3RvcmVwIHNjcmF0Y2gxLCBKU09iamVj
dDo6bV9wcm9wZXJ0eVN0b3JhZ2VbcmVzdWx0XQorZW5kCisKK19sbGludF9vcF9jcmVhdGVfdGhp
czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgYXNzZXJ0
Tm90Q29uc3RhbnQodDApCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFn
LCAub3BDcmVhdGVUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYmJiIFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBPYmplY3RUeXBlLCAub3BD
cmVhdGVUaGlzU2xvdworICAgIGxvYWRwIEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3QwXSwgdDIK
KyAgICBidHB6IHQyLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGFsbG9jYXRlQmFzaWNKU09iamVj
dChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVj
dENsYXNzSW5mbywgdDIsIHQwLCB0MSwgdDMsIC5vcENyZWF0ZVRoaXNTbG93KQorICAgIGxvYWRp
IDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAg
ICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQor
Cisub3BDcmVhdGVUaGlzU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRl
X3RoaXMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZ2V0X2NhbGxlZToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZHAgUGF5bG9hZE9m
ZnNldCArIENhbGxlZVtjZnJdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBk
aXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jb252ZXJ0X3RoaXM6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgQ2VsbFRhZywgLm9wQ29udmVydFRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAg
ICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIE9iamVj
dFR5cGUsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGRpc3BhdGNoKDIpCisKKy5vcENvbnZlcnRU
aGlzU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY29udmVydF90aGlzKQorICAg
IGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX25ld19vYmplY3Q6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6
bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5
T2JqZWN0U3RydWN0dXJlW3QwXSwgdDEKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5h
bE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0lu
Zm8sIHQxLCB0MCwgdDIsIHQzLCAub3BOZXdPYmplY3RTbG93KQorICAgIGxvYWRpIDRbUENdLCB0
MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkg
dDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BOZXdP
YmplY3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfb2JqZWN0KQorICAg
IGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX25ld19hcnJheToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheSkKKyAgICBkaXNwYXRj
aCg0KQorCisKK19sbGludF9vcF9uZXdfYXJyYXlfYnVmZmVyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2FycmF5X2J1ZmZlcikKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfcmVnZXhwOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X3JlZ2V4cCkKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9tb3Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDEsIHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAg
IHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX25vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10s
IHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwg
dDIsIHQzKQorICAgIGJpbmVxIHQyLCBCb29sZWFuVGFnLCAub3BOb3RTbG93CisgICAgeG9yaSAx
LCB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQz
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wTm90U2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbm90KQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10s
IHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwg
dDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAg
YmluZXEgdDIsIHQzLCAub3BFcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BFcVNsb3cK
KyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wRXFTbG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisg
ICAgY2llcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIs
IHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRp
c3BhdGNoKDQpCisKKy5vcEVxU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZXEp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNz
ZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENl
bGxUYWcsIC5vcEVxTnVsbEltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MQorICAgIHRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxh
Z3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQorICAgIGptcCAub3BFcU51bGxOb3RJ
bW1lZGlhdGUKKy5vcEVxTnVsbEltbWVkaWF0ZToKKyAgICBjaWVxIHQxLCBOdWxsVGFnLCB0Mgor
ICAgIGNpZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKKyAgICBvcmkgdDIsIHQxCisub3BFcU51bGxO
b3RJbW1lZGlhdGU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4
XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX25lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
MTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQw
KQorICAgIGJpbmVxIHQyLCB0MywgLm9wTmVxU2xvdworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5v
cE5lcVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wTmVxU2xvdworICAgIGxvYWRpIDRb
UENdLCB0MgorICAgIGNpbmVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIs
IDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wTmVxU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfbmVxKQorICAgIGRpc3BhdGNoKDQpCisgICAgCisKK19sbGludF9vcF9uZXFfbnVs
bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkg
NFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
CisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcE5lcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0YnogU3RydWN0dXJlOjptX3R5cGVJbmZv
ICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQorICAg
IGptcCAub3BOZXFOdWxsTm90SW1tZWRpYXRlCisub3BOZXFOdWxsSW1tZWRpYXRlOgorICAgIGNp
bmVxIHQxLCBOdWxsVGFnLCB0MgorICAgIGNpbmVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAg
YW5kaSB0MiwgdDEKKy5vcE5lcU51bGxOb3RJbW1lZGlhdGU6CisgICAgc3RvcmVpIEJvb2xlYW5U
YWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gc3RyaWN0RXEoZXF1YWxpdHlP
cGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10s
IHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAuc2xvdwor
ICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBDZWxsVGFnLCAubm90
U3RyaW5nCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQzCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5ub3RTdHJpbmcKKyAgICBi
YmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDNdLCBTdHJpbmdU
eXBlLCAuc2xvdworLm5vdFN0cmluZzoKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBlcXVhbGl0
eU9wZXJhdGlvbih0MCwgdDEsIHQwKQorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAg
ICBkaXNwYXRjaCg0KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNw
YXRjaCg0KQorZW5kCisKK19sbGludF9vcF9zdHJpY3RlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpZXEgbGVmdCwgcmln
aHQsIHJlc3VsdCBlbmQsIF9sbGludF9oZWxwZXJfc3RyaWN0ZXEpCisKKworX2xsaW50X29wX25z
dHJpY3RlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc3RyaWN0RXEobWFjcm8gKGxlZnQs
IHJpZ2h0LCByZXN1bHQpIGNpbmVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVs
cGVyX25zdHJpY3RlcSkKKworCitfbGxpbnRfb3BfbGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3MpCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfbGVzc2VxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dy
ZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9ncmVhdGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dyZWF0ZXJlcToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dyZWF0ZXJl
cSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcmVfaW5jOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIEludDMyVGFnLCAub3BQcmVJbmNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDEKKyAgICBiYWRkaW8gMSwgdDEsIC5vcFByZUluY1Nsb3cKKyAgICBzdG9y
ZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQ
cmVJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfaW5jKQorICAgIGRp
c3BhdGNoKDIpCisKKworX2xsaW50X29wX3ByZV9kZWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50
MzJUYWcsIC5vcFByZURlY1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MQorICAgIGJzdWJpbyAxLCB0MSwgLm9wUHJlRGVjU2xvdworICAgIHN0b3JlaSB0MSwgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcFByZURlY1Nsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3ByZV9kZWMpCisgICAgZGlzcGF0Y2goMikK
KworCitfbGxpbnRfb3BfcG9zdF9pbmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3RJbmNTbG93CisgICAgYmllcSB0MCwgdDEsIC5vcFBv
c3RJbmNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBt
b3ZlIHQyLCB0MworICAgIGJhZGRpbyAxLCB0MywgLm9wUG9zdEluY1Nsb3cKKyAgICBzdG9yZWkg
SW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XQorLm9wUG9zdEluY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKworLm9wUG9zdEluY1Nsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfaW5jKQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX3Bvc3RfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIEludDMyVGFnLCAub3BQb3N0RGVjU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0
RGVjRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92
ZSB0MiwgdDMKKyAgICBic3ViaW8gMSwgdDMsIC5vcFBvc3REZWNTbG93CisgICAgc3RvcmVpIElu
dDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0K
Ky5vcFBvc3REZWNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3REZWNTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2RlYykKKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF90b19qc251bWJlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
OFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MCwgdDIsIHQzKQorICAgIGJpZXEgdDIsIEludDMyVGFnLCAub3BUb0pzbnVtYmVySXNJbnQK
KyAgICBiaWFlcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wVG9Kc251bWJlclNsb3cKKy5vcFRvSnNu
dW1iZXJJc0ludDoKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0
b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5v
cFRvSnNudW1iZXJTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19qc251bWJl
cikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZWdhdGU6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQxLCB0MikKKyAgICBiaW5lcSB0MSwgSW50MzJUYWcs
IC5vcE5lZ2F0ZVNyY05vdEludAorICAgIGJ0aXogdDIsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0ZVNs
b3cKKyAgICBuZWdpIHQyCisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0Mywg
OF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRj
aCgzKQorLm9wTmVnYXRlU3JjTm90SW50OgorICAgIGJpYSB0MSwgTG93ZXN0VGFnLCAub3BOZWdh
dGVTbG93CisgICAgeG9yaSAweDgwMDAwMDAwLCB0MQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0
W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisg
ICAgZGlzcGF0Y2goMykKKworLm9wTmVnYXRlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfbmVnYXRlKQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gYmluYXJ5T3BDdXN0b21T
dG9yZShpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUsIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQor
ICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWco
dDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5l
cSB0MywgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBpbnRl
Z2VyT3BlcmF0aW9uQW5kU3RvcmUodDMsIHQxLCB0MCwgLnNsb3csIHQyKQorICAgIGRpc3BhdGNo
KDUpCisKKy5vcDFOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90
IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGNvdWxkIGJlIGFueXRoaW5nLgorICAgIGJpYSB0
MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MywgTG93ZXN0VGFnLCAub3AxTm90SW50T3Ay
RG91YmxlCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDEsIGZ0MQor
ICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQg
dDEsIHQzLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBm
aWkyZCB0MCwgdDIsIGZ0MAorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9y
ZWQgZnQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3AyTm90SW50OgorICAg
ICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5k
IGlzIGRlZmluaXRlbHkgbm90LgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGJpYSB0MywgTG93
ZXN0VGFnLCAuc2xvdworICAgIGNpMmQgdDAsIGZ0MAorICAgIGZpaTJkIHQxLCB0MywgZnQxCisg
ICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQyLCA4
XQorICAgIGRpc3BhdGNoKDUpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAg
IGRpc3BhdGNoKDUpCitlbmQKKworbWFjcm8gYmluYXJ5T3AoaW50ZWdlck9wZXJhdGlvbiwgZG91
YmxlT3BlcmF0aW9uLCBoZWxwZXIpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAg
bWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBp
bnRlZ2VyT3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgc3RvcmVpIGlu
dDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdo
dCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIGRv
dWJsZU9wZXJhdGlvbiwgaGVscGVyKQorZW5kCisKK19sbGludF9vcF9hZGQ6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3cpIGJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCkgYWRkZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYWRkKQor
CisKK19sbGludF9vcF9tdWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3Vz
dG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGlu
ZGV4KQorICAgICAgICAgICAgY29uc3Qgc2NyYXRjaCA9IGludDMyVGFnICAgIyBXZSBrbm93IHRo
YXQgd2UgY2FuIHJldXNlIHRoZSBpbnQzMlRhZyByZWdpc3RlciBzaW5jZSBpdCBoYXMgYSBjb25z
dGFudC4KKyAgICAgICAgICAgIG1vdmUgcmlnaHQsIHNjcmF0Y2gKKyAgICAgICAgICAgIGJtdWxp
byBsZWZ0LCBzY3JhdGNoLCBzbG93CisgICAgICAgICAgICBidGlueiBzY3JhdGNoLCAuZG9uZQor
ICAgICAgICAgICAgYmlsdCBsZWZ0LCAwLCAuc2xvdworICAgICAgICAgICAgYmlsdCByaWdodCwg
MCwgLnNsb3cKKyAgICAgICAgLmRvbmU6CisgICAgICAgICAgICBzdG9yZWkgSW50MzJUYWcsIFRh
Z09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFBheWxv
YWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQpIG11bGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX211
bCkKKworCitfbGxpbnRfb3Bfc3ViOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlP
cCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBic3ViaW8gbGVmdCwgcmlnaHQs
IHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIHN1YmQgbGVmdCwgcmlnaHQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3N1YikKKworCitfbGxpbnRfb3BfZGl2OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNy
byAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGNpMmQg
bGVmdCwgZnQwCisgICAgICAgICAgICBjaTJkIHJpZ2h0LCBmdDEKKyAgICAgICAgICAgIGRpdmQg
ZnQwLCBmdDEKKyAgICAgICAgICAgIGJjZDJpIGZ0MSwgcmlnaHQsIC5ub3RJbnQKKyAgICAgICAg
ICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAg
ICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAg
IGptcCAuZG9uZQorICAgICAgICAubm90SW50OgorICAgICAgICAgICAgc3RvcmVkIGZ0MSwgW2Nm
ciwgaW5kZXgsIDhdCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQsCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCkgZGl2ZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfZGl2KQorCisKK19sbGludF9vcF9tb2Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9tb2QpCisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBi
aXRPcChvcGVyYXRpb24sIGhlbHBlciwgYWR2YW5jZSkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisg
ICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQx
KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEg
dDMsIEludDMyVGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xvdykKKyAgICBzdG9yZWkg
dDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCisKKy5zbG93OgorICAgIGNhbGxIZWxw
ZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCitlbmQKKworX2xsaW50X29wX2xzaGlm
dDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfbHNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF9yc2hpZnQ6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3cpIHJzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3JzaGlm
dCwKKyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfdXJzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAg
ICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBz
bG93CisgICAgICAgIGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl91cnNoaWZ0LAorICAgICAg
ICA0KQorCisKK19sbGludF9vcF9iaXRhbmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJp
dE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGFuZGkgbGVmdCwgcmlnaHQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdGFuZCwKKyAgICAgICAgNSkKKworCitfbGxp
bnRfb3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9iaXR4b3IsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG9yOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2Jp
dG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRub3Q6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5v
cEJpdG5vdFNsb3cKKyAgICBub3RpIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNw
YXRjaCgzKQorCisub3BCaXRub3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9i
aXRub3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNl
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAsIC5vcENoZWNrSGFzSW5zdGFu
Y2VTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0Ynog
U3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRz
SGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgZGlzcGF0Y2goMikKKwor
Lm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2No
ZWNrX2hhc19pbnN0YW5jZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbnN0YW5j
ZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIENoZWNrIHRoYXQgYmFzZVZhbCBpbXBs
ZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9yLgorICAgICMgRklYTUU6IFRo
aXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKHQxLCB0MCkKKyAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgLm9w
SW5zdGFuY2VvZlNsb3cKKyAgICAKKyAgICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgorICAgIGxv
YWRpIDE2W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEluc3RhbmNlb2ZTbG93KQorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNs
b3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQorICAgIAorICAgICMgUmVnaXN0
ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCisgICAgbW92ZSAxLCB0MAorLm9w
SW5zdGFuY2VvZkxvb3A6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCisg
ICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDJdLCB0Mgor
ICAgIGJwZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQorICAgIGJ0aW56IHQyLCAub3BJbnN0
YW5jZW9mTG9vcAorCisgICAgbW92ZSAwLCB0MAorLm9wSW5zdGFuY2VvZkRvbmU6CisgICAgc3Rv
cmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEluc3RhbmNlb2ZT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbnN0YW5jZW9mKQorICAgIGRpc3Bh
dGNoKDUpCisKKworX2xsaW50X29wX3R5cGVvZjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3R5cGVvZikKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9pc191bmRlZmluZWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9pc191bmRlZmluZWQpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfaXNfYm9vbGVhbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2lzX2Jvb2xlYW4pCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bf
aXNfbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfaXNfbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3N0cmlu
ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lz
X3N0cmluZykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19vYmplY3Q6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19vYmplY3Qp
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfZnVuY3Rpb246CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19mdW5jdGlvbikKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX3Jlc29sdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9yZXNvbHZlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29s
dmVfc2tpcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3Jlc29sdmVfc2tpcCkKKyAgICBkaXNwYXRjaCg1KQorCisKK21hY3JvIHJlc29sdmVHbG9i
YWwoc2l6ZSwgc2xvdykKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQ
Q10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIFByb3BlcnR5IGlk
ZW50aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2suCisgICAgIyAxMltQQ10gIFN0cnVjdHVy
ZSBwb2ludGVyLCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAgICAj
IDE2W1BDXSAgT2Zmc2V0IGluIGdsb2JhbCBvYmplY3QsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0
ZWNvZGUgZ2VuZXJhdG9yLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRw
IENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cKKyAgICBsb2FkaSAx
NltQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAK
KyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W3QwLCB0MSwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQyLCBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBsb2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQwCisgICAgdmFsdWVQcm9maWxl
KHQyLCB0MywgdDApCitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICByZXNvbHZlR2xvYmFsKDYsIC5vcFJlc29sdmVHbG9iYWxTbG93KQor
ICAgIGRpc3BhdGNoKDYpCisKKy5vcFJlc29sdmVHbG9iYWxTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNwYXRjaCg2KQorCisKKyMgR2l2
ZXMgeW91IHRoZSBzY29wZSBpbiB0MCwgd2hpbGUgYWxsb3dpbmcgeW91IHRvIG9wdGlvbmFsbHkg
cGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0aGUKKyMgc2NvcGVzIGFzIHRoZXkgYXJlIHRy
YXZlcnNlZC4gc2NvcGVDaGVjaygpIGlzIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSBy
ZWdpc3RlcgorIyBob2xkaW5nIHRoZSBzY29wZSwgYW5kIGEgcmVnaXN0ZXIgdGhhdCBjYW4gYmUg
dXNlZCBmb3Igc2NyYXRjaC4gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QKKyMgdXNlIHQzLCBzbyB5
b3UgY2FuIGhvbGQgc3R1ZmYgaW4gdDMgaWYgbmVlZCBiZS4KK21hY3JvIGdldFNjb3BlKGRlQnJ1
aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2FkcCBTY29wZUNoYWluICsgUGF5
bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIK
KyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorICAgIAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0MQorICAgIGJpbmVxIENvZGVCbG9jazo6bV9jb2RlVHlwZVt0MV0sIEZ1bmN0aW9uQ29kZSwg
Lmxvb3AKKyAgICBidGJ6IENvZGVCbG9jazo6bV9uZWVkc0Z1bGxTY29wZUNoYWluW3QxXSwgLmxv
b3AKKyAgICAKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwg
dDEKKworICAgICMgTmVlZCB0byBjb25kaXRpb25hbGx5IHNraXAgb3ZlciBvbmUgc2NvcGUuCisg
ICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2YXRp
b24KKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4
dFt0MF0sIHQwCisubm9BY3RpdmF0aW9uOgorICAgIHN1YmkgMSwgdDIKKyAgICAKKyAgICBidGl6
IHQyLCAuZG9uZQorLmxvb3A6CisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2Nv
cGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MAorICAgIHN1YmkgMSwgdDIKKyAgICBidGlueiB0Miwg
Lmxvb3AKKworLmRvbmU6CitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERh
dGFbc3BdLCB0MworICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0aXZhdGlvblN0cnVjdHVyZVt0
M10sIHQzCisgICAgZ2V0U2NvcGUoCisgICAgICAgIDIwW1BDXSwKKyAgICAgICAgbWFjcm8gKHNj
b3BlLCBzY3JhdGNoKQorICAgICAgICAgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFtz
Y29wZV0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbc2Ny
YXRjaF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdworICAgICAgICBlbmQp
CisgICAgcmVzb2x2ZUdsb2JhbCg3LCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3cpCisgICAg
ZGlzcGF0Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3c6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMp
CisgICAgZGlzcGF0Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQorICAgIGRpc3Bh
dGNoKDcpCisKKworX2xsaW50X29wX2dldF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5h
dGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIEluZGV4IG9mIHJlZ2lzdGVyIGluIHRo
ZSBzY29wZS4KKyAgICAjIDEyW1BDXSAgRGUgQnJ1aWppbiBpbmRleC4KKyAgICBnZXRTY29wZSgx
MltQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDRbUENdLCB0MQor
ICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3RbdDBd
LCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W3QwLCB0MiwgOF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAg
ICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAxNltQQ10s
IHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MCwgdDEpCisgICAgZGlzcGF0Y2goNSkKKworCitf
bGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGdldFNj
b3BlKDhbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSAxMltQQ10s
IHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDMsIHQyKQorICAgIGxvYWRpIDRb
UENdLCB0MQorICAgIHdyaXRlQmFycmllcih0MywgdDIpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5v
ZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3Rl
cnNbdDBdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX2dldF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2Fk
cCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNl
dFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDEK
KyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5
bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICB2YWx1ZVBy
b2ZpbGUodDIsIHQxLCB0MykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2xv
YmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAg
bG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9i
amVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwg
dDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgbG9hZGkgNFtQ
Q10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNl
dFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0KKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX2Jhc2U6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2Jhc2UpCisgICAg
ZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0czoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Vuc3VyZV9wcm9w
ZXJ0eV9leGlzdHMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV93aXRo
X2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9yZXNvbHZlX3dpdGhfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9yZXNv
bHZlX3dpdGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50
X29wX2dldF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBvbmx5IGRvIG1v
bm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5
IHRoZQorICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0
byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKKyAgICAjIHBpbmctcG9uZ2luZyBpcyBm
cmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRpbnVl
CisgICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0
YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAorICAgICMgd2Ugd291bGQgaGF2ZSBiZWVuIGRv
aW5nIGFueXdheS4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BHZXRC
eUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJv
cGVydHlTdG9yYWdlW3QzXSwgdDAKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwg
dDEsIC5vcEdldEJ5SWRTbG93CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgVGFnT2Zm
c2V0W3QwLCB0Ml0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDJdLCB0MgorICAg
IHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgMzJbUENdLCB0MQorICAgIHZhbHVlUHJvZmls
ZSh0MywgdDIsIHQxKQorICAgIGRpc3BhdGNoKDkpCisKKy5vcEdldEJ5SWRTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOSkKKworCitf
bGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdwor
ICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQyCisgICAgc3Vi
aSAxLCB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKwor
Lm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
Z2V0X2FyZ3VtZW50c19sZW5ndGgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0
X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBs
b2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENl
bGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9h
ZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBicG5lcSBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgbG9hZGkgMjBbUENdLCB0
MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MCwgdDIpCisgICAgd3JpdGVC
YXJyaWVyKHQwLCB0MikKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDFdCisgICAgc3Rv
cmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBkaXNwYXRjaCg5KQorCisub3BQdXRC
eUlkU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X2lkKQorICAgIGRp
c3BhdGNoKDkpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcykK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgMTZb
UENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0
MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGJwbmVxIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRpdGlvbmFsQ2hl
Y2tzKHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxv
YWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYWRkcCB0MSwgdDMK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDEsIHQyKQorICAgIHdyaXRlQmFy
cmllcih0MSwgdDIpCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgMjRb
UENdLCB0MQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZXAgdDEs
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgZGlzcGF0Y2goOSkKK2VuZAorCitfbGxpbnRf
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1h
Y3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKworCitfbGxpbnRfb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAorICAgICAg
ICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQorICAgICAgICAgICAgY29uc3Qg
cHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVn
aXN0ZXIgZm9yIHRoZSBwcm90bworICAgICAgICAKKyAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwg
c2NyYXRjaAorICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sg
ZW5kKQorICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hd
LCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBv
ayBlbmQpCisgICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZz
ZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAgICAgICAgLmxvb3A6CisgICAgICAg
ICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1
Y3R1cmVdLCBwcm90b0NlbGwKKyAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
cHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUs
IFtzY3JhdGNoXSwgc2xvdworICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCisgICAgICAgICAg
ICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0s
IE51bGxUYWcsIC5sb29wCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQpCisKKworX2xsaW50
X29wX2RlbF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2RlbF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRf
YnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGxvYWRwIEpT
R2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAgIGJw
bmVxIFt0MF0sIHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0b3Jh
Z2VbdDBdLCB0MworICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MF0sIC5v
cEdldEJ5VmFsU2xvdworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIEFycmF5U3RvcmFn
ZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBBcnJheVN0
b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQorICAgIGJpZXEg
dDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAgIHN0b3JlaSB0MiwgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQwKQorICAg
IGRpc3BhdGNoKDUpCisKKy5vcEdldEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfZ2V0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9nZXRfYXJn
dW1lbnRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBF
bXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQxLCBJbnQzMlRhZywgdDIsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93
KQorICAgIGFkZGkgMSwgdDIKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNl
dFtjZnJdLCB0MQorICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAg
ICBuZWdpIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zm
c2V0ICsgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9m
ZnNldCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgc3RvcmVpIHQwLCBUYWdP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Mywg
OF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudEJ5VmFsU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9nZXRfYnlfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwg
Q2VsbFRhZywgdDEsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAg
ICBicG5lcSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgLm9wR2V0QnlQbmFtZVNsb3cK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDAK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MworICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAorICAgIGJwbmVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkg
MjRbUENdLCB0MAorICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAKKyAgICBzdWJpIDEsIHQwCisg
ICAgYmlhZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2FjaGVhYmxlU2xvdHNb
dDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3Rv
cmFnZVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QyLCB0MCwgOF0sIHQxCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFt0MiwgdDAsIDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNykKKworLm9wR2V0QnlQbmFtZVNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9wbmFtZSkKKyAgICBkaXNwYXRj
aCg3KQorCisKK19sbGludF9vcF9wdXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwg
Q2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgSW50MzJUYWcsIHQyLCAub3BQdXRCeVZh
bFNsb3cpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2dsb2JhbERhdGFbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNs
YXNzSW5mb1t0MF0sIHQwCisgICAgYnBuZXEgW3QxXSwgdDAsIC5vcFB1dEJ5VmFsU2xvdworICAg
IGJpYWVxIHQyLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MV0sIC5vcFB1dEJ5VmFsU2xvdwor
ICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQwCisgICAgYmllcSBBcnJheVN0b3Jh
Z2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFB1
dEJ5VmFsRW1wdHkKKy5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQ6CisgICAgbG9hZGkgMTJbUENdLCB0
MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MSwgdDMpCisgICAgd3JpdGVC
YXJyaWVyKHQxLCB0MykKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBU
YWdPZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0b3JlaSB0MywgQXJyYXlTdG9yYWdlOjptX3ZlY3Rv
ciArIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcFB1dEJ5
VmFsRW1wdHk6CisgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3Jb
dDBdCisgICAgYmliIHQyLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxT
dG9yZVJlc3VsdAorICAgIGFkZGkgMSwgdDIsIHQxCisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3Jh
Z2U6Om1fbGVuZ3RoW3QwXQorICAgIGptcCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisKKy5vcFB1
dEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X3ZhbCkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9kZWxfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X3ZhbCkKKyAgICBkaXNw
YXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaW5kZXg6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaW5kZXgpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9nZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfcHV0X3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9zZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfbG9vcDoKKyAgICBub3AKK19sbGludF9vcF9qbXA6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGRpc3BhdGNoQnJhbmNoKDRbUENdKQorCisKK19sbGludF9vcF9qbXBfc2NvcGVz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfam1w
X3Njb3BlcykKKyAgICBkaXNwYXRjaCgwKQorCisKK21hY3JvIGp1bXBUcnVlT3JGYWxzZShjb25k
aXRpb25PcCwgc2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MSwgQm9vbGVhblRhZywgdDAsIC5zbG93KQorICAgIGNvbmRpdGlvbk9w
KHQwLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hC
cmFuY2goOFtQQ10pCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoc2xvdykKKyAgICBkaXNwYXRj
aCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX3RydWU6CisgICAgbm9wCitfbGxpbnRfb3Bf
anRydWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAg
ICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aW56IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2p0cnVlKQorCisKK19sbGludF9vcF9sb29wX2lmX2ZhbHNlOgorICAg
IG5vcAorX2xsaW50X29wX2pmYWxzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAganVtcFRy
dWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpeiB2YWx1ZSwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZmFsc2UpCisKKworbWFjcm8gZXF1YWxO
dWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYW5kbGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAuaW1tZWRpYXRlCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgY2VsbEhhbmRsZXIoU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQorICAg
IGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5p
bW1lZGlhdGU6CisgICAgb3JpIDEsIHQxCisgICAgaW1tZWRpYXRlSGFuZGxlcih0MSwgLnRhcmdl
dCkKKyAgICBkaXNwYXRjaCgzKQorZW5kCisKK19sbGludF9vcF9qZXFfbnVsbDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdl
dCkgYnRibnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisgICAg
ICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaWVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5k
KQorICAgIAorCitfbGxpbnRfb3Bfam5lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJ6IHZhbHVlLCBN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUs
IHRhcmdldCkgYmluZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisKKworX2xsaW50X29w
X2puZXFfcHRyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxU
YWcsIC5vcEpuZXFQdHJCcmFuY2gKKyAgICBicGVxIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQxLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKKy5vcEpuZXFQdHJCcmFuY2g6CisgICAgZGlzcGF0
Y2hCcmFuY2goMTJbUENdKQorLm9wSm5lcVB0ckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoKDQp
CisKKworbWFjcm8gY29tcGFyZShpbnRlZ2VyQ29tcGFyZSwgZG91YmxlQ29tcGFyZSwgaGVscGVy
KQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDIsIHQwLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Zyh0MywgdDIsIHQzKQorICAgIGJpbmVxIHQwLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAgIGJp
bmVxIHQyLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGludGVnZXJDb21wYXJlKHQxLCB0Mywg
Lmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5vdEludDoKKyAgICBiaWEgdDAs
IExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRv
dWJsZQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQzLCBmdDEKKyAg
ICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQz
LCB0MiwgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgZmlpMmQgdDEsIHQwLCBmdDAKKyAgICBk
b3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisu
b3AyTm90SW50OgorICAgIGNpMmQgdDEsIGZ0MAorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xv
dworICAgIGZpaTJkIHQzLCB0MiwgZnQxCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1
bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLmp1bXBUYXJnZXQ6CisgICAgZGlzcGF0Y2hC
cmFuY2goMTJbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNw
YXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX2xlc3M6CisgICAgbm9wCitfbGxpbnRf
b3Bfamxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdCBsZWZ0LCByaWdodCwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzcykKKworCitfbGxpbnRfb3Bfam5s
ZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxdW4gbGVmdCwgcmlnaHQsIHRh
cmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzKQorCisKK19sbGludF9vcF9s
b29wX2lmX2dyZWF0ZXI6CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXI6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFy
Z2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmRndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9qZ3JlYXRlcikKKworCitfbGxpbnRfb3Bfam5ncmVhdGVyOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRh
cmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfam5ncmVhdGVyKQorCisKK19sbGludF9vcF9sb29wX2lmX2xlc3Nl
cToKKyAgICBub3AKK19sbGludF9vcF9qbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVxIGxl
ZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmRsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVy
X2psZXNzZXEpCisKKworX2xsaW50X29wX2pubGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBs
ZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJkZ3R1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl9qbmxlc3NlcSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyZXE6CisgICAgbm9wCitf
bGxpbnRfb3BfamdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcSBs
ZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcmVx
KQorCisKK19sbGludF9vcF9qbmdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
ZGx0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5n
cmVhdGVyZXEpCisKKworX2xsaW50X29wX2xvb3BfaGludDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGRpc3BhdGNoKDEpCisKKworX2xs
aW50X29wX3N3aXRjaF9pbW06CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BD
XSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQy
LCB0MSwgdDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUs
IHQzICAgIyBGSVhNRTogd291bGQgYmUgbmljZSB0byBwZWVwaG9sZSB0aGlzIQorICAgIGxvYWRw
IENvZGVCbG9jazo6UmFyZURhdGE6Om1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgYWRkcCB0MywgdDIKKyAgICBiaW5lcSB0MSwgSW50
MzJUYWcsIC5vcFN3aXRjaEltbU5vdEludAorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5b
dDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBW
ZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBsb2FkcCBT
aW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0
MworICAgIGxvYWRpIFt0MywgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEsIC5vcFN3aXRjaEltbUZh
bGxUaHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQorCisub3BTd2l0Y2hJ
bW1Ob3RJbnQ6CisgICAgYmliIHQxLCBMb3dlc3RUYWcsIC5vcFN3aXRjaEltbVNsb3cgICMgR28g
dG8gc2xvdyBwYXRoIGlmIGl0J3MgYSBkb3VibGUuCisub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaDoK
KyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLm9wU3dpdGNoSW1tU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX2ltbSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19s
bGludF9vcF9zd2l0Y2hfY2hhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJb
UENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDIsIHQxLCB0MCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJs
ZSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2NoYXJhY3RlclN3aXRjaEp1
bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisg
ICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFs
bFRocm91Z2gKKyAgICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MF0sIHQwCisgICAgYmluZXEg
U3RyaW5nSW1wbDo6bV9sZW5ndGhbdDBdLCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAg
ICBsb2FkcCBTdHJpbmdJbXBsOjptX2RhdGE4W3QwXSwgdDEKKyAgICBidGlueiBTdHJpbmdJbXBs
OjptX2hhc2hBbmRGbGFnc1t0MF0sIEhhc2hGbGFnczhCaXRCdWZmZXIsIC5vcFN3aXRjaENoYXI4
Qml0CisgICAgbG9hZGggW3QxXSwgdDAKKyAgICBqbXAgLm9wU3dpdGNoQ2hhclJlYWR5Cisub3BT
d2l0Y2hDaGFyOEJpdDoKKyAgICBsb2FkYiBbdDFdLCB0MAorLm9wU3dpdGNoQ2hhclJlYWR5Ogor
ICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1w
bGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dp
dGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZz
ZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBsb2FkaSBbdDIsIHQwLCA0XSwg
dDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJh
bmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoOgorICAgIGRpc3Bh
dGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zd2l0Y2hfc3RyaW5nOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX3N0cmluZykK
KyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9uZXdfZnVuYzoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYnRpeiAxMltQQ10sIC5vcE5ld0Z1bmNVbmNoZWNrZWQKKyAgICBsb2FkaSA0
W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcs
IC5vcE5ld0Z1bmNEb25lCisub3BOZXdGdW5jVW5jaGVja2VkOgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9uZXdfZnVuYykKKy5vcE5ld0Z1bmNEb25lOgorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX25ld19mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCgzKQorCisK
K21hY3JvIGRvQ2FsbChoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgMTZb
UENdLCB0MQorICAgIGxvYWRwIExMSW50Q2FsbExpbmtJbmZvOjpjYWxsZWVbdDFdLCB0MgorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wQ2FsbFNs
b3cpCisgICAgYmluZXEgdDMsIHQyLCAub3BDYWxsU2xvdworICAgIGxvYWRpIDEyW1BDXSwgdDMK
KyAgICBhZGRwIDI0LCBQQworICAgIGxzaGlmdGkgMywgdDMKKyAgICBhZGRwIGNmciwgdDMgICMg
dDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBjZnIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjpt
X3Njb3BlQ2hhaW5bdDJdLCB0MAorICAgIHN0b3JlaSB0MiwgQ2FsbGVlICsgUGF5bG9hZE9mZnNl
dFt0M10KKyAgICBzdG9yZWkgdDAsIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAg
IGxvYWRpIDggLSAyNFtQQ10sIHQyCisgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFn
T2Zmc2V0W2Nmcl0KKyAgICBzdG9yZXAgY2ZyLCBDYWxsZXJGcmFtZVt0M10KKyAgICBzdG9yZWkg
dDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFn
LCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNdCisgICAgc3RvcmVpIENlbGxUYWcsIFNjb3BlQ2hhaW4g
KyBUYWdPZmZzZXRbdDNdCisgICAgbW92ZSB0MywgY2ZyCisgICAgY2FsbCBMTEludENhbGxMaW5r
SW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdCisgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorCisu
b3BDYWxsU2xvdzoKKyAgICBzbG93UGF0aEZvckNhbGwoNiwgaGVscGVyKQorZW5kCisKK19sbGlu
dF9vcF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBl
cl9jYWxsKQorCisKK19sbGludF9vcF9jb25zdHJ1Y3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGRvQ2FsbChfbGxpbnRfaGVscGVyX2NvbnN0cnVjdCkKKworCitfbGxpbnRfb3BfY2FsbF92
YXJhcmdzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzbG93UGF0aEZvckNhbGwoNiwgX2xs
aW50X2hlbHBlcl9jYWxsX3ZhcmFyZ3MpCisKKworX2xsaW50X29wX2NhbGxfZXZhbDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgCisgICAgIyBFdmFsIGlzIGV4ZWN1dGVkIGluIG9uZSBvZiB0
d28gbW9kZXM6CisgICAgIworICAgICMgMSkgV2UgZmluZCB0aGF0IHdlJ3JlIHJlYWxseSBpbnZv
a2luZyBldmFsKCkgaW4gd2hpY2ggY2FzZSB0aGUKKyAgICAjICAgIGV4ZWN1dGlvbiBpcyBwZXJm
b21lZCBlbnRpcmVseSBpbnNpZGUgdGhlIGhlbHBlciwgYW5kIGl0CisgICAgIyAgICByZXR1cm5z
IHRoZSBQQyBvZiBhIGZ1bmN0aW9uIHRoYXQganVzdCByZXR1cm5zIHRoZSByZXR1cm4gdmFsdWUK
KyAgICAjICAgIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAgIworICAgICMgMikgV2UgZmlu
ZCB0aGF0IHdlJ3JlIGludm9raW5nIHNvbWV0aGluZyBjYWxsZWQgZXZhbCgpIHRoYXQgaXMgbm90
CisgICAgIyAgICB0aGUgcmVhbCBldmFsLiBUaGVuIHRoZSBoZWxwZXIgcmV0dXJucyB0aGUgUEMg
b2YgdGhlIHRoaW5nIHRvCisgICAgIyAgICBjYWxsLCBhbmQgd2UgY2FsbCBpdC4KKyAgICAjCisg
ICAgIyBUaGlzIGFsbG93cyB1cyB0byBoYW5kbGUgdHdvIGNhc2VzLCB3aGljaCB3b3VsZCByZXF1
aXJlIGEgdG90YWwgb2YKKyAgICAjIHVwIHRvIGZvdXIgcGllY2VzIG9mIHN0YXRlIHRoYXQgY2Fu
bm90IGJlIGVhc2lseSBwYWNrZWQgaW50byB0d28KKyAgICAjIHJlZ2lzdGVycyAoQyBmdW5jdGlv
bnMgY2FuIHJldHVybiB1cCB0byB0d28gcmVnaXN0ZXJzLCBlYXNpbHkpOgorICAgICMKKyAgICAj
IC0gVGhlIGNhbGwgZnJhbWUgcmVnaXN0ZXIuIFRoaXMgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVu
IG1vZGlmaWVkCisgICAgIyAgIGJ5IHRoZSBoZWxwZXIsIGJ1dCB0aGUgY29udmVudGlvbiBpcyB0
aGF0IGl0IHJldHVybnMgaXQuIEl0J3Mgbm90CisgICAgIyAgIHRvdGFsbHkgY2xlYXIgaWYgdGhh
dCdzIG5lY2Vzc2FyeSwgc2luY2UgdGhlIGNmciBpcyBjYWxsZWUgc2F2ZS4KKyAgICAjICAgQnV0
IHRoYXQncyBvdXIgc3R5bGUgaW4gdGhpcyBoZXJlIGludGVycHJldGVyIHNvIHdlIHN0aWNrIHdp
dGggaXQuCisgICAgIworICAgICMgLSBBIGJpdCB0byBzYXkgaWYgdGhlIGhlbHBlciBzdWNjZXNz
ZnVsbHkgZXhlY3V0ZWQgdGhlIGV2YWwgYW5kIGhhcworICAgICMgICB0aGUgcmV0dXJuIHZhbHVl
LCBvciBkaWQgbm90IGV4ZWN1dGUgdGhlIGV2YWwgYnV0IGhhcyBhIFBDIGZvciB1cworICAgICMg
ICB0byBjYWxsLgorICAgICMKKyAgICAjIC0gRWl0aGVyOgorICAgICMgICAtIFRoZSBKUyByZXR1
cm4gdmFsdWUgKHR3byByZWdpc3RlcnMpLCBvcgorICAgICMKKyAgICAjICAgLSBUaGUgUEMgdG8g
Y2FsbC4KKyAgICAjCisgICAgIyBJdCB0dXJucyBvdXQgdG8gYmUgZWFzaWVyIHRvIGp1c3QgYWx3
YXlzIGhhdmUgdGhpcyByZXR1cm4gdGhlIGNmcgorICAgICMgYW5kIGEgUEMgdG8gY2FsbCwgYW5k
IHRoYXQgUEMgbWF5IGJlIGEgZHVtbXkgdGh1bmsgdGhhdCBqdXN0CisgICAgIyByZXR1cm5zIHRo
ZSBKUyB2YWx1ZSB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgIAorICAgIHNsb3dQYXRoRm9y
Q2FsbCg0LCBfbGxpbnRfaGVscGVyX2NhbGxfZXZhbCkKKworCitfbGxpbnRfZ2VuZXJpY19yZXR1
cm5fcG9pbnQ6CisgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorCisKK19sbGludF9vcF90ZWFyX29m
Zl9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVt
cHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZAorICAgIGJpZXEgVGFnT2Zm
c2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENy
ZWF0ZWQKKy5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZDoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKKy5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3Jl
YXRlZDoKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF90ZWFyX29mZl9hcmd1bWVudHM6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN1YmkgMSwg
dDAgICAjIEdldCB0aGUgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyCisgICAgYmllcSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBcmd1bWVudHNOb3RD
cmVhdGVkCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cykK
Ky5vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFj
cm8gZG9SZXR1cm4oKQorICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCisgICAgbG9hZHAgQ2Fs
bGVyRnJhbWVbY2ZyXSwgY2ZyCisgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4o
dDIpCisgICAgcmV0CitlbmQKKworX2xsaW50X29wX3JldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgZG9SZXR1cm4oKQor
CisKK19sbGludF9vcF9jYWxsX3B1dF9yZXN1bHQ6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAg
bG9hZGkgOFtQQ10sIHQzCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAg
ICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB2YWx1ZVByb2ZpbGUo
dDEsIHQwLCB0MykKKyAgICB0cmFjZUV4ZWN1dGlvbigpICMgTmVlZHMgdG8gYmUgaGVyZSBiZWNh
dXNlIGl0IHdvdWxkIGNsb2JiZXIgdDEsIHQwCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRf
b3BfcmV0X29iamVjdF9vcl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3
aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wUmV0
T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJd
LCBPYmplY3RUeXBlLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBkb1JldHVybigp
CisKKy5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdDoKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgZG9SZXR1cm4oKQorCisK
K19sbGludF9vcF9tZXRob2RfY2hlY2s6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgV2Ug
aWdub3JlIG1ldGhvZCBjaGVja3MgYW5kIHVzZSBub3JtYWwgZ2V0X2J5X2lkIG9wdGltaXphdGlv
bnMuCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3RyY2F0OgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3RyY2F0KQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX3RvX3ByaW1pdGl2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BUb1By
aW1pdGl2ZUlzSW1tCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAg
YmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmlu
Z1R5cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2UKKy5vcFRvUHJpbWl0aXZlSXNJbW06CisgICAg
c3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb1ByaW1pdGl2ZVNsb3dD
YXNlOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19wcmltaXRpdmUpCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfZ2V0X3BuYW1lczoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9wbmFtZXMpCisgICAgZGlzcGF0Y2go
MCkgIyBUaGUgaGVscGVyIGVpdGhlciBhZHZhbmNlcyB0aGUgUEMgb3IganVtcHMgdXMgdG8gc29t
ZXdoZXJlIGVsc2UuCisKKworX2xsaW50X29wX25leHRfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkaSAxNltQQ10sIHQyCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSwgdDAKKyAgICBiaWVxIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdLCAub3BOZXh0UG5hbWVFbmQKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICBsb2FkcCBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yOjptX2pzU3RyaW5nc1t0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwg
OF0sIHQzCisgICAgYWRkaSAxLCB0MAorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQxLCA4XQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhd
LCB0MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGJwbmVxIHQx
LCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIC5vcE5leHRQ
bmFtZVNsb3cKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFByb3Rv
dHlwZUNoYWluW3QyXSwgdDAKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDBd
LCB0MAorICAgIGJ0cHogW3QwXSwgLm9wTmV4dFBuYW1lVGFyZ2V0Cisub3BOZXh0UG5hbWVDaGVj
a1Byb3RvdHlwZUxvb3A6CisgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zm
c2V0W3QxXSwgTnVsbFRhZywgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRwIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QxXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QyXSwgdDEKKyAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdwor
ICAgIGFkZHAgNCwgdDAKKyAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlw
ZUxvb3AKKy5vcE5leHRQbmFtZVRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgyNFtQQ10pCisK
Ky5vcE5leHRQbmFtZUVuZDoKKyAgICBkaXNwYXRjaCg3KQorCisub3BOZXh0UG5hbWVTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXh0X3BuYW1lKSAjIFRoaXMgZWl0aGVyIGtl
ZXBzIHRoZSBQQyB3aGVyZSBpdCB3YXMgKGNhdXNpbmcgdXMgdG8gbG9vcCkgb3Igc2V0cyBpdCB0
byB0YXJnZXQuCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfcHVzaF9zY29wZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfc2Nv
cGUpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9wX3Njb3BlOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9wX3Njb3BlKQorICAg
IGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3B1c2hfbmV3X3Njb3BlOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9uZXdfc2NvcGUpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfY2F0Y2g6CisgICAgIyBUaGlzIGlzIHdoZXJl
IHdlIGVuZCB1cCBmcm9tIHRoZSBKSVQncyB0aHJvdyB0cmFtcG9saW5lIChiZWNhdXNlIHRoZQor
ICAgICMgbWFjaGluZSBjb2RlIHJldHVybiBhZGRyZXNzIHdpbGwgYmUgc2V0IHRvIF9sbGludF9v
cF9jYXRjaCksIGFuZCBmcm9tCisgICAgIyB0aGUgaW50ZXJwcmV0ZXIncyB0aHJvdyB0cmFtcG9s
aW5lIChzZWUgX2xsaW50X3Rocm93X3RyYW1wb2xpbmUpLgorICAgICMgVGhlIEpJVCB0aHJvd2lu
ZyBwcm90b2NvbCBjYWxscyBmb3IgdGhlIGNmciB0byBiZSBpbiB0MC4gVGhlIHRocm93aW5nCisg
ICAgIyBjb2RlIG11c3QgaGF2ZSBrbm93biB0aGF0IHdlIHdlcmUgdGhyb3dpbmcgdG8gdGhlIGlu
dGVycHJldGVyLCBhbmQgaGF2ZQorICAgICMgc2V0IEpTR2xvYmFsRGF0YTo6dGFyZ2V0SW50ZXJw
cmV0ZXJQQ0ZvclRocm93LgorICAgIG1vdmUgdDAsIGNmcgorICAgIGxvYWRwIEpJVFN0YWNrRnJh
bWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6dGFyZ2V0SW50
ZXJwcmV0ZXJQQ0ZvclRocm93W3QzXSwgUEMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2Vw
dGlvbiArIFBheWxvYWRPZmZzZXRbdDNdLCB0MAorICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhj
ZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSwgdDEKKyAgICBzdG9yZWkgMCwgSlNHbG9iYWxEYXRhOjpl
eGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBK
U0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10gICAgICAgCisgICAgbG9hZGkg
NFtQQ10sIHQyCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAg
c3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB0cmFjZUV4ZWN1dGlvbigpICAj
IFRoaXMgbmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY2xvYmJlciB0
MCwgdDEsIHQyLCB0MyBhYm92ZS4KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJv
dzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Ro
cm93KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93X3JlZmVyZW5jZV9lcnJv
cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Ro
cm93X3JlZmVyZW5jZV9lcnJvcikKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9qc3I6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFkZGkgMyAq
IDQsIFBDLCB0MQorICAgIHN0b3JlaSB0MSwgW2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2hCcmFu
Y2goOFtQQ10pCisKKworX2xsaW50X29wX3NyZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFtjZnIsIHQwLCA4XSwgUEMKKyAgICBkaXNwYXRj
aCgwKQorCisKK19sbGludF9vcF9kZWJ1ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2RlYnVnKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX3Byb2ZpbGVfd2lsbF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBK
SVRTdGFja0ZyYW1lOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCB0MAorICAgIGJ0cHog
W3QwXSwgLm9wUHJvZmlsZVdpbGxDYWxsRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9wcm9maWxlX3dpbGxfY2FsbCkKKy5vcFByb2ZpbGVXaWxsQ2FsbERvbmU6CisgICAgZGlzcGF0
Y2goMikKKworCitfbGxpbnRfb3BfcHJvZmlsZV9kaWRfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3Nw
XSwgdDAKKyAgICBidHB6IFt0MF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKKy5vcFByb2ZpbGVEaWRDYWxsRG9u
ZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9lbmQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF90aHJv
d19mcm9tX2hlbHBlcl90cmFtcG9saW5lOgorICAgICMgV2hlbiB0aHJvd2luZyBmcm9tIHRoZSBp
bnRlcnByZXRlciAoaS5lLiB0aHJvd2luZyBmcm9tIExMSW50SGVscGVycyksIHNvCisgICAgIyB0
aGUgdGhyb3cgdGFyZ2V0IGlzIG5vdCBuZWNlc3NhcmlseSBpbnRlcnByZXRlZCBjb2RlLCB3ZSBj
b21lIHRvIGhlcmUuCisgICAgIyBUaGlzIGVzc2VudGlhbGx5IGVtdWxhdGVzIHRoZSBKSVQncyB0
aHJvd2luZyBwcm90b2NvbC4KKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3Nw
XSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAK
KyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCitf
bGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZToKKyAgICBwcmVzZXJ2ZVJldHVybkFk
ZHJlc3NBZnRlckNhbGwodDIpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtz
cF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQw
CisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKwor
IyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0
IHN1cHBvcnQgYWxsIG9wY29kZXMuCisjIFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNl
IHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CisjIGFzIG11Y2guCisK
K21hY3JvIG5vdFN1cHBvcnRlZCgpCisgICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgY3Jh
c2goKQorICAgIGVsc2UKKyAgICAgICAgIyBXZSBzaG91bGQgdXNlIHdoYXRldmVyIHRoZSBzbWFs
bGVzdCBwb3NzaWJsZSBpbnN0cnVjdGlvbiBpcywganVzdCB0bworICAgICAgICAjIGVuc3VyZSB0
aGF0IHRoZXJlIGlzIGEgZ2FwIGJldHdlZW4gaW5zdHJ1Y3Rpb24gbGFiZWxzLiBJZiBtdWx0aXBs
ZQorICAgICAgICAjIHNtYWxsZXN0IGluc3RydWN0aW9ucyBleGlzdCwgd2Ugc2hvdWxkIHBpY2sg
dGhlIG9uZSB0aGF0IGlzIG1vc3QKKyAgICAgICAgIyBsaWtlbHkgcmVzdWx0IGluIGV4ZWN1dGlv
biBiZWluZyBoYWx0ZWQuIEN1cnJlbnRseSB0aGF0IGlzIHRoZSBicmVhaworICAgICAgICAjIGlu
c3RydWN0aW9uIG9uIGFsbCBhcmNoaXRlY3R1cmVzIHdlJ3JlIGludGVyZXN0ZWQgaW4uIChCcmVh
ayBpcyBpbnQzCisgICAgICAgICMgb24gSW50ZWwsIHdoaWNoIGlzIDEgYnl0ZSwgYW5kIGJrcHQg
b24gQVJNdjcsIHdoaWNoIGlzIDIgYnl0ZXMuKQorICAgICAgICBicmVhaworICAgIGVuZAorZW5k
CisKK19sbGludF9vcF9nZXRfYXJyYXlfbGVuZ3RoOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19s
bGludF9vcF9nZXRfYnlfaWRfY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29w
X2dldF9ieV9pZF9jdXN0b21fY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29w
X2dldF9ieV9pZF9jdXN0b21fcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29w
X2dldF9ieV9pZF9jdXN0b21fc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2dlbmVyaWM6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9i
eV9pZF9nZXR0ZXJfY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9i
eV9pZF9nZXR0ZXJfcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9i
eV9pZF9nZXR0ZXJfc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfc2Vs
ZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X3N0cmluZ19sZW5ndGg6Cisg
ICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9nZW5lcmljOgorICAgIG5v
dFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfcmVwbGFjZToKKyAgICBub3RTdXBw
b3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb246CisgICAgbm90U3VwcG9y
dGVkKCkKKworCisjIEluZGljYXRlIHRoZSBlbmQgb2YgTExJbnQuCitfbGxpbnRfZW5kOgorICAg
IGNyYXNoKCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCisj
aWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCisK
KyNpbmNsdWRlICJMTEludEFzc2VtYmx5LmgiCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTG93TGV2ZWxJbnRl
cnByZXRlcl9oCisjZGVmaW5lIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJPcGNvZGUuaCIK
KworI2RlZmluZSBMTElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29kZSwgbGVuZ3RoKSBleHRlcm4g
IkMiIHZvaWQgbGxpbnRfIyNvcGNvZGUoKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoTExJTlRf
SU5TVFJVQ1RJT05fREVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJVQ1RJT05fREVDTAorCitleHRl
cm4gIkMiIHZvaWQgbGxpbnRfYmVnaW4oKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9lbmQoKTsK
K2V4dGVybiAiQyIgdm9pZCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZv
aWQgbGxpbnRfZXZhbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2dlbmVyaWNf
cmV0dXJuX3BvaW50KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJf
dHJhbXBvbGluZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3Ry
YW1wb2xpbmUoKTsKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExvd0xl
dmVsSW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXJtdjcucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXJtdjcucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hcm12Ny5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTMgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2NsYXNzIFNwZWNpYWxSZWdpc3RlcgorICBkZWYgaW5p
dGlhbGl6ZShuYW1lKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBhcm1WN09w
ZXJhbmQKKyAgICBAbmFtZQorICBlbmQKK2VuZAorCitBUk12N19EQVRBX1JFRyA9IFNwZWNpYWxS
ZWdpc3Rlci5uZXcoImlwIikKK0FSTXY3X0FERFJfUkVHID0gU3BlY2lhbFJlZ2lzdGVyLm5ldygi
cjMiKQorCitkZWYgbW92ZUltbWVkaWF0ZSh2YWx1ZSwgcmVnaXN0ZXIpCisgICMgQ3VycmVudGx5
IHdlIG9ubHkgaGFuZGxlIHRoZSBzaW1wbGUgY2FzZXMsIGFuZCBmYWxsIGJhY2sgdG8gbW92L21v
dnQgZm9yIHRoZSBjb21wbGV4IG9uZXMuCisgIGlmIHZhbHVlID49IDAgJiYgdmFsdWUgPCAyNTYK
KyAgICAkYXNtLnB1dHMgIm1vdncgXCMje3ZhbHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9
IgorICBlbHNpZiAofnZhbHVlKSA+PSAwICYmICh+dmFsdWUpIDwgMjU2CisgICAgJGFzbS5wdXRz
ICJtdm53IFwjI3t+dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgIGVsc2UKKyAg
ICAkYXNtLnB1dHMgIm1vdncgXCMje3ZhbHVlICYgMHhmZmZmfSwgI3tyZWdpc3Rlci5hcm1WN09w
ZXJhbmR9IgorICAgIGlmICh2YWx1ZSAmIDB4ZmZmZjAwMDApICE9IDAKKyAgICAgICRhc20ucHV0
cyAibW92dCBcIyN7dmFsdWUgPj4gMTZ9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgICAg
ZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIGFybVY3T3BlcmFuZAor
ICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgInIwIgorICAg
IHdoZW4gInQxIiwgImExIiwgInIxIgorICAgICAgInIxIgorICAgIHdoZW4gInQyIiwgImEyIgor
ICAgICAgInIyIgorICAgIHdoZW4gImEzIgorICAgICAgInIzIgorICAgIHdoZW4gInQzIgorICAg
ICAgInI0IgorICAgIHdoZW4gInQ0IgorICAgICAgInI3IgorICAgIHdoZW4gImNmciIKKyAgICAg
ICJyNSIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBh
cm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQ
b3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYg
YXJtVjdMb2FkU3RvcmVXcmFwCisgICAgeWllbGQKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdp
c3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAi
LCAiZnIiCisgICAgICAiZDAiCisgICAgd2hlbiAiZnIxIiwKKyAgICAgICJkMSIKKyAgICB3aGVu
ICJmcjIiCisgICAgICAiZDIiCisgICAgd2hlbiAiZnIzIgorICAgICAgImQzIgorICAgIHdoZW4g
ImZyNCIKKyAgICAgICJkNCIKKyAgICB3aGVuICJmcjUiCisgICAgICAiZDUiCisgICAgZWxzZQor
ICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2li
bGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVy
YW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3Jh
cAorICAgIHlpZWxkIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiBh
cm1WN09wZXJhbmQKKyAgICByYWlzZSAiSW52YWxpZCBpbW1lZGlhdGUgI3t2YWx1ZX0iIGlmIHZh
bHVlIDwgMCBvciB2YWx1ZSA+IDI1NQorICAgICIjJHt2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVm
IGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1W
N1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRl
ZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZCBzZWxmCisgIGVuZAorZW5kCisKK21vZHVs
ZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHNl
bGYuYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgJGFzbS5wdXRzICJcdGxk
ciAje3NlbGYuYXJtVjdQb3NzaWJseU1lbW9yeU9wZXJhbmR9LCAje0FSTXY3X0RBVEFfUkVHLmFy
bVY3T3BlcmFuZH0iCisgICAgeWllbGQgQVJNdjdfREFUQV9SRUcKKyAgICAkYXNtLnB1dHMgIlx0
c3RyICN7QVJNdjdfREFUQV9SRUcuYXJtVjdPcGVyYW5kfSwgI3tzZWxmLmFybVY3UG9zc2libHlN
ZW1vcnlPcGVyYW5kfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBpbmNsdWRlIEFS
TXY3QWRkcmVzc1V0aWxpdGllcworCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9w
ZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZm
ZgorICAgICAgbW92ZUltbWVkaWF0ZShvZmZzZXQudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICAg
IGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlm
IG9mZnNldC52YWx1ZSA8IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICAiWyN7
YmFzZS5hcm1WN09wZXJhbmR9LCAje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH1dIgorICAg
IGVsc2UKKyAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7b2Zmc2V0LmFybVY3T3BlcmFu
ZH1dIgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgaW5jbHVkZSBB
Uk12N0FkZHJlc3NVdGlsaXRpZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlP
cGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAgIG1vdmVJbW1lZGlhdGUob2Zm
c2V0LnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgICAgICRhc20ucHV0cyAiYWRkdyAje0FSTXY3
X0FERFJfUkVHLmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09wZXJhbmR9IgorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNl
dC52YWx1ZSAhPSAwCisgICAgICAiWyN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfSwgI3tp
bmRleC5hcm1WN09wZXJhbmR9LCBsc2wgXCMje3NjYWxlfV0iCisgICAgZWxzZQorICAgICAgIlsj
e2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tpbmRleC5hcm1WN09wZXJhbmR9LCBsc2wgXCMje3NjYWxl
fV0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBpbmNs
dWRlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxl
TWVtb3J5T3BlcmFuZAorICAgIG1vdmVJbW1lZGlhdGUoYWRkcmVzcy52YWx1ZSwgQVJNdjdfQURE
Ul9SRUcpCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAg
Ilsje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH1dIgorICBlbmQKK2VuZAorCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTA4IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWly
ZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNldHMiCity
ZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIK
KworY2xhc3MgQXNzZW1ibGVyCisgIGRlZiBpbml0aWFsaXplKG91dHApCisgICAgQG91dHAgPSBv
dXRwCisgICAgQHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBlbnRlckFzbQorICAgIEBv
dXRwLnB1dHMgImFzbSAoIgorICAgIEBzdGF0ZSA9IDphc20KKyAgZW5kCisgIAorICBkZWYgbGVh
dmVBc20KKyAgICBAb3V0cC5wdXRzICIpOyIKKyAgICBAc3RhdGUgPSA6Y3BwCisgIGVuZAorICAK
KyAgZGVmIGluQXNtCisgICAgZW50ZXJBc20KKyAgICB5aWVsZAorICAgIGxlYXZlQXNtCisgIGVu
ZAorICAKKyAgZGVmIHB1dHMobGluZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20K
KyAgICBAb3V0cC5wdXRzKChsaW5lICsgIlxuIikuaW5zcGVjdCkKKyAgZW5kCisgIAorICBkZWYg
Y29tbWVudCh0ZXh0KQorICAgIEBvdXRwLnB1dHMgIi8vICN7dGV4dH0iCisgIGVuZAorZW5kCisK
K2FzbUZpbGUgPSBBUkdWLnNoaWZ0CitvZmZzZXRzRmlsZSA9IEFSR1Yuc2hpZnQKK291dHB1dEZs
bm0gPSBBUkdWLnNoaWZ0CisKK29mZnNldHNMaXN0LCBjb25maWdJbmRleCA9IG9mZnNldHNBbmRD
b25maWd1cmF0aW9uSW5kZXgob2Zmc2V0c0ZpbGUpCitpbnB1dERhdGEgPSBJTzo6cmVhZChhc21G
aWxlKQorCitpbnB1dEhhc2ggPQorICAiLy8gb2ZmbGluZWFzbSBpbnB1dCBoYXNoOiAiICsgRGln
ZXN0OjpTSEExLmhleGRpZ2VzdChpbnB1dERhdGEpICsKKyAgIiAiICsgRGlnZXN0OjpTSEExLmhl
eGRpZ2VzdCgob2Zmc2V0c0xpc3QgKyBbY29uZmlnSW5kZXhdKS5qb2luKCcgJykpCisKK2lmIEZp
bGVUZXN0LmV4aXN0PyBvdXRwdXRGbG5tCisgIEZpbGUub3BlbihvdXRwdXRGbG5tLCAiciIpIHsK
KyAgICB8IGlucCB8CisgICAgZmlyc3RMaW5lID0gaW5wLmdldHMKKyAgICBpZiBmaXJzdExpbmUg
YW5kIGZpcnN0TGluZS5jaG9tcCA9PSBpbnB1dEhhc2gKKyAgICAgICRzdGRlcnIucHV0cyAiTm90
aGluZyBjaGFuZ2VkLiIKKyAgICAgIGV4aXQgMAorICAgIGVuZAorICB9CitlbmQKKworRmlsZS5v
cGVuKG91dHB1dEZsbm0sICJ3IikgeworICB8IG91dHAgfAorICAkb3V0cHV0ID0gb3V0cAorICAk
b3V0cHV0LnB1dHMgaW5wdXRIYXNoCisgIAorICAkYXNtID0gQXNzZW1ibGVyLm5ldygkb3V0cHV0
KQorICAKKyAgYXN0ID0gcGFyc2UobGV4KGlucHV0RGF0YSkpCisgIAorICBmb3JTZXR0aW5ncyhj
b21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KVtjb25maWdJbmRleF0sIGFzdCkgeworICAg
IHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgIGFzc2VydENv
bmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAgICBsb3dMZXZlbEFTVCA9IGxvd0xldmVs
QVNULnJlc29sdmUoKmJ1aWxkT2Zmc2V0c01hcChsb3dMZXZlbEFTVCwgb2Zmc2V0c0xpc3QpKQor
ICAgIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNU
LCBiYWNrZW5kKSB7CisgICAgICAkYXNtLmluQXNtIHsKKyAgICAgICAgbG93TGV2ZWxBU1QubG93
ZXIoYmFja2VuZCkKKyAgICAgIH0KKyAgICB9CisgIH0KK30KSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODEzIEBACisj
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjCisjIEJhc2UgdXRpbGl0eSB0
eXBlcyBmb3IgdGhlIEFTVC4KKyMKKworIyBWYWxpZCBtZXRob2RzIGZvciBOb2RlOgorIworIyBu
b2RlLmNoaWxkcmVuIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgaW1tZWRpYXRlIGNoaWxkcmVuLgor
IworIyBub2RlLmRlc2NlbmRlbnRzIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHN0cmljdCBk
ZXNjZW5kYW50cyAoY2hpbGRyZW4KKyMgICAgIGFuZCBjaGlsZHJlbiBvZiBjaGlsZHJlbiwgdHJh
bnNpdGl2ZWx5KS4KKyMKKyMgbm9kZS5mbGF0dGVuIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFp
bmluZyB0aGUgc3RyaWN0IGRlc2NlbmRhbnRzIGFuZAorIyAgICAgdGhlIG5vZGUgaXRzZWxmLgor
IworIyBub2RlLmZpbHRlcih0eXBlKSAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhv
c2UgZWxlbWVudHMgaW4KKyMgICAgIG5vZGUuZmxhdHRlbiB0aGF0IGFyZSBvZiB0aGUgZ2l2ZW4g
dHlwZSAoaXNfYT8gdHlwZSByZXR1cm5zIHRydWUpLgorIworIyBub2RlLm1hcENoaWxkcmVue3x2
fCAuLi59IC0+IFJldHVybnMgYSBuZXcgbm9kZSB3aXRoIGFsbCBjaGlsZHJlbgorIyAgICAgcmVw
bGFjZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBibG9jay4KKyMKKyMgRXhhbXBsZXM6CisjCisj
IG5vZGUuZmlsdGVyKFNldHRpbmcpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHNldHRpbmdz
IHRoYXQgdGhlIEFTVCdzCisjICAgICBJZlRoZW5FbHNlIGJsb2NrcyBkZXBlbmQgb24uCisjCisj
IG5vZGUuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc3Ry
dWN0dXJlIG9mZnNldHMKKyMgICAgIHRoYXQgdGhlIEFTVCBkZXBlbmRzIG9uLgorCitjbGFzcyBO
b2RlCisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luKQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICBlbmQKKyAgCisgIGRlZiBj
b2RlT3JpZ2luU3RyaW5nCisgICAgImxpbmUgbnVtYmVyICN7QGNvZGVPcmlnaW59IgorICBlbmQK
KyAgCisgIGRlZiBkZXNjZW5kYW50cworICAgIGNoaWxkcmVuLmNvbGxlY3R7fHZ8IHYuZmxhdHRl
bn0uZmxhdHRlbgorICBlbmQKKyAgCisgIGRlZiBmbGF0dGVuCisgICAgW3NlbGZdICsgZGVzY2Vu
ZGFudHMKKyAgZW5kCisgIAorICBkZWYgZmlsdGVyKHR5cGUpCisgICAgZmxhdHRlbi5zZWxlY3R7
fHZ8IHYuaXNfYT8gdHlwZX0KKyAgZW5kCitlbmQKKworY2xhc3MgTm9DaGlsZHJlbiA8IE5vZGUK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBl
bmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxk
cmVuCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXRLZXkKKyAgYXR0
cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShzdHJ1Y3QsIGZp
ZWxkKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAg
CisgIGRlZiBoYXNoCisgICAgQHN0cnVjdC5oYXNoICsgQGZpZWxkLmhhc2ggKiAzCisgIGVuZAor
ICAKKyAgZGVmIGVxbD8ob3RoZXIpCisgICAgQHN0cnVjdCA9PSBvdGhlci5zdHJ1Y3QgYW5kIEBm
aWVsZCA9PSBvdGhlci5maWVsZAorICBlbmQKK2VuZAorICAgIAorIworIyBBU1Qgbm9kZXMuCisj
CisKK2NsYXNzIFN0cnVjdE9mZnNldCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVj
dCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxk
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVs
ZCA9IGZpZWxkCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZv
ckZpZWxkKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAga2V5ID0gU3RydWN0T2Zmc2V0
S2V5Lm5ldyhzdHJ1Y3QsIGZpZWxkKQorICAgIAorICAgIHVubGVzcyBAQG1hcHBpbmdba2V5XQor
ICAgICAgQEBtYXBwaW5nW2tleV0gPSBTdHJ1Y3RPZmZzZXQubmV3KGNvZGVPcmlnaW4sIHN0cnVj
dCwgZmllbGQpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW2tleV0KKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICIje3N0cnVjdH06OiN7ZmllbGR9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3Ro
ZXIpCisgICAgaWYgQHN0cnVjdCAhPSBvdGhlci5zdHJ1Y3QKKyAgICAgIHJldHVybiBAc3RydWN0
IDw9PiBvdGhlci5zdHJ1Y3QKKyAgICBlbmQKKyAgICBAZmllbGQgPD0+IG90aGVyLmZpZWxkCisg
IGVuZAorZW5kCisKK2NsYXNzIFNpemVvZiA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0
cnVjdAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICBlbmQKKyAgCisgIEBAbWFwcGlu
ZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICB1
bmxlc3MgQEBtYXBwaW5nW3N0cnVjdF0KKyAgICAgIEBAbWFwcGluZ1tzdHJ1Y3RdID0gU2l6ZW9m
Lm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW3N0cnVjdF0K
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJzaXplb2YgI3tAc3RydWN0fSIKKyAgZW5kCisg
IAorICBkZWYgPD0+KG90aGVyKQorICAgIEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICBlbmQK
K2VuZAorCitjbGFzcyBJbW1lZGlhdGUgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDp2YWx1
ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFsdWUpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
IiN7dmFsdWV9IgorICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBvdGhlci5pc19hPyBJ
bW1lZGlhdGUgYW5kIG90aGVyLnZhbHVlID09IEB2YWx1ZQorICBlbmQKK2VuZAorCitjbGFzcyBB
ZGRJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENo
aWxkcmVuCisgICAgQWRkSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwg
KHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1w
fSArICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzIDwg
Tm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0
ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisg
ICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgU3Vi
SW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkp
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAtICN7cmlnaHQuZHVt
cH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3Jl
YWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0
LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEBy
aWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmln
aHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTXVsSW1tZWRpYXRlcy5uZXco
Y29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAqICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2Vu
ZAorCitjbGFzcyBOZWdJbW1lZGlhdGUgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAY2hpbGQgPSBjaGlsZAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtA
Y2hpbGRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTmVnSW1tZWRpYXRlLm5l
dyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICIoLSN7QGNoaWxkLmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRCA8IE5v
Q2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAg
ZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tu
YW1lXSA9IFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBt
YXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5k
CisKK2NsYXNzIEZQUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAK
KyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBp
bmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IEZQUmVnaXN0ZXJJRC5uZXcoY29kZU9y
aWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUgPCBOb0NoaWxk
cmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAor
ICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0g
PSBWYXJpYWJsZS5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdb
bmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xh
c3MgQWRkcmVzcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2UsIDpvZmZzZXQKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGJhc2UsIG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBiYXNlID0gYmFzZQorICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAgZW5kCisgIAor
ICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVmIG1h
cENoaWxkcmVuCisgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlp
ZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9
WyN7YmFzZS5kdW1wfV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleCA8IE5vZGUKKyAg
YXR0cl9yZWFkZXIgOmJhc2UsIDppbmRleCwgOnNjYWxlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBiYXNlID0gYmFzZQorICAgIEBpbmRleCA9IGluZGV4CisgICAg
QHNjYWxlID0gc2NhbGUKKyAgICByYWlzZSB1bmxlc3MgWzEsIDIsIDQsIDhdLm1lbWJlcj8gQHNj
YWxlCisgICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IFtAYmFzZSwgQGluZGV4LCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgor
ICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBpbmRl
eCksIEBzY2FsZSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
IiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfSwgI3tpbmRleC5kdW1wfSwgI3tzY2FsZX1dIgor
ICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MgPCBOb0NoaWxkcmVuCisgIGF0dHJf
cmVhZGVyIDphZGRyZXNzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBhZGRyZXNz
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGFkZHJlc3MgPSBhZGRyZXNzCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiI3thZGRyZXNzLmR1bXB9W10iCisgIGVuZAorZW5kCisKK2Ns
YXNzIEluc3RydWN0aW9uIDwgTm9kZQorICBhdHRyX3JlYWRlciA6b3Bjb2RlLCA6b3BlcmFuZHMK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG9wY29kZSwgb3BlcmFuZHMpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAb3Bjb2RlID0gb3Bjb2RlCisgICAgQG9wZXJhbmRzID0g
b3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBvcGVyYW5kcworICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBJbnN0cnVjdGlvbi5uZXcoY29kZU9y
aWdpbiwgQG9wY29kZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiXHQiICsgb3Bjb2RlLnRvX3MgKyAiICIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2
LmR1bXB9LmpvaW4oIiwgIikKKyAgZW5kCitlbmQKKworY2xhc3MgRXJyb3IgPCBOb0NoaWxkcmVu
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdGVycm9yIgorICBlbmQKK2VuZAorCitjbGFzcyBD
b25zdERlY2wgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDp2YXJpYWJsZSwgOnZhbHVlCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAdmFyaWFibGUgPSB2YXJpYWJsZQorICAgIEB2YWx1ZSA9IHZhbHVlCisg
IGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0B2YXJpYWJsZSwgQHZhbHVlXQorICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIENvbnN0RGVjbC5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEB2YXJpYWJsZSksICh5aWVsZCBAdmFsdWUpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgImNvbnN0ICN7QHZhcmlhYmxlLmR1bXB9ID0gI3tAdmFsdWUuZHVtcH0iCisgIGVuZAorZW5k
CisKKyRsYWJlbE1hcHBpbmcgPSB7fQorCitjbGFzcyBMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0
cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYg
c2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgaWYgJGxhYmVsTWFwcGluZ1tuYW1l
XQorICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9IiB1bmxlc3MgJGxh
YmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBp
bmdbbmFtZV0gPSBMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFi
ZWxNYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisg
IGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVy
IDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorCisgIEBAdW5pcXVlTmFtZUNv
dW50ZXIgPSAwCisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
aWYgJGxhYmVsTWFwcGluZ1tuYW1lXQorICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9u
OiAje25hbWV9IiB1bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMb2NhbExhYmVsCisg
ICAgZWxzZQorICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExvY2FsTGFiZWwubmV3KGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAg
CisgIGRlZiBzZWxmLnVuaXF1ZShjb21tZW50KQorICAgIG5ld05hbWUgPSAiXyN7Y29tbWVudH0i
CisgICAgaWYgJGxhYmVsTWFwcGluZ1tuZXdOYW1lXQorICAgICAgd2hpbGUgJGxhYmVsTWFwcGlu
Z1tuZXdOYW1lID0gIl8je0BAdW5pcXVlTmFtZUNvdW50ZXJ9XyN7Y29tbWVudH0iXQorICAgICAg
ICBAQHVuaXF1ZU5hbWVDb3VudGVyICs9IDEKKyAgICAgIGVuZAorICAgIGVuZAorICAgIGZvck5h
bWUobmlsLCBuZXdOYW1lKQorICBlbmQKKyAgCisgIGRlZiBjbGVhbk5hbWUKKyAgICBpZiBuYW1l
ID1+IC9eXC4vCisgICAgICAiXyIgKyBuYW1lWzEuLi0xXQorICAgIGVsc2UKKyAgICAgIG5hbWUK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitl
bmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsYWJlbAor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTGFiZWxSZWZlcmVu
Y2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1l
CisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQor
ICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlIDwgTm9DaGlsZHJlbgorICBh
dHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVs
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAor
ICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJl
bgorICAgIExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwp
KQorICBlbmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgbGFiZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZSA8IE5v
ZGUKKyAgYXR0cl9yZWFkZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGxpc3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGlzdCA9IGxpc3QKKyAgZW5kCisg
IAorICBkZWYgY2hpbGRyZW4KKyAgICBsaXN0CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
KCZwcm9jKQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBAbGlzdC5tYXAoJnByb2MpKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4o
IlxuIikKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRp
YWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IFRydWUubmV3
CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBk
ZWYgdmFsdWUKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAidHJ1ZSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgRmFsc2UgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisg
ICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBGYWxzZS5uZXcKKyAgCisg
IGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1
ZQorICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiZmFsc2UiCisgIGVuZAor
ZW5kCisKK2NsYXNzIFRydWVDbGFzcworICBkZWYgYXNOb2RlCisgICAgVHJ1ZS5pbnN0YW5jZQor
ICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBGYWxzZS5p
bnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nIDwgTm9DaGlsZHJlbgorICBhdHRy
X3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFw
cGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
dW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gU2V0dGluZy5u
ZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kIDwgTm9k
ZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0g
bGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAg
W0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQW5kLm5l
dyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3JpZ2h0LmR1bXB9KSIKKyAgZW5k
CitlbmQKKworY2xhc3MgT3IgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisg
IAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxk
IEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBvciAj
e3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTm90IDwgTm9kZQorICBhdHRyX3Jl
YWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRy
ZW4KKyAgICBOb3QubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNz
IFNraXAgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdHNraXAiCisgIGVu
ZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpwcmVkaWNh
dGUsIDp0aGVuQ2FzZQorICBhdHRyX2FjY2Vzc29yIDplbHNlQ2FzZQorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZSkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBwcmVkaWNhdGUgPSBwcmVkaWNhdGUKKyAgICBAdGhlbkNhc2UgPSB0aGVuQ2Fz
ZQorICAgIEBlbHNlQ2FzZSA9IFNraXAubmV3KGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVm
IGNoaWxkcmVuCisgICAgaWYgQGVsc2VDYXNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNl
LCBAZWxzZUNhc2VdCisgICAgZWxzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZV0KKyAg
ICBlbmQKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBJZlRoZW5FbHNlLm5ldyhj
b2RlT3JpZ2luLCAoeWllbGQgQHByZWRpY2F0ZSksICh5aWVsZCBAdGhlbkNhc2UpLCAoeWllbGQg
QGVsc2VDYXNlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJpZiAje3ByZWRpY2F0ZS5k
dW1wfVxuIiArIHRoZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsgZWxzZUNhc2UuZHVtcCArICJc
bmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpu
YW1lLCA6dmFyaWFibGVzLCA6Ym9keQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUg
PSBuYW1lCisgICAgQHZhcmlhYmxlcyA9IHZhcmlhYmxlcworICAgIEBib2R5ID0gYm9keQorICBl
bmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEB2YXJpYWJsZXMgKyBbQGJvZHldCisgIGVuZAor
ICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBA
dmFyaWFibGVzLm1hcHt8dnwgeWllbGQgdn0sICh5aWVsZCBAYm9keSkpCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFibGVzLmNvbGxlY3R7fHZ8IHYu
ZHVtcH0uam9pbigiLCAiKSArICIpXG4iICsgYm9keS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2Vu
ZAorCitjbGFzcyBNYWNyb0NhbGwgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6b3BlcmFu
ZHMKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQG9wZXJhbmRzID0gb3Bl
cmFuZHMKKyAgICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAgQG9wZXJhbmRzLmVhY2h7fHZ8
IHJhaXNlIHVubGVzcyB2fQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEBvcGVyYW5k
cworICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBNYWNyb0NhbGwubmV3
KGNvZGVPcmlnaW4sIEBuYW1lLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICJcdCN7bmFtZX0oIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0u
am9pbigiLCAiKSArICIpIgorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDgwIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJh
c3QiCityZXF1aXJlICJ4ODYiCisKK0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIsCisgICAiQVJN
djciCisgIF0KKworV09SS0lOR19CQUNLRU5EUyA9CisgIFsKKyAgICJYODYiCisgIF0KKworQkFD
S0VORF9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCcgKyBCQUNLRU5EUy5qb2luKCcpfCgnKSAr
ICcpXFxaJykKKworY2xhc3MgTm9kZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBzZW5kKCJsb3dl
ciIgKyBuYW1lKQorICBlbmQKK2VuZAorCisjIE92ZXJyaWRlcyBmb3IgbG93ZXIoKSBmb3IgdGhv
c2Ugbm9kZXMgdGhhdCBhcmUgYmFja2VuZC1hZ25vc3RpYworCitkZWYgc2FuaXRpemVMYWJlbE5h
bWUobmFtZSkKKyAgIyBTb21lIHBsYXRmb3JtcyBkb24ndCB3YW50IHRoZSBsZWFkaW5nICJfIi4g
SWYgd2UgZXZlciB3YW50IHRvIGRvIHNvbWV0aGluZworICAjIGFib3V0IHRoYXQsIGl0IHdvdWxk
IGJlIGhlcmUuCisgIG5hbWUKK2VuZAorCitjbGFzcyBMYWJlbAorICBkZWYgbG93ZXIobmFtZSkK
KyAgICAkYXNtLnB1dHMgIi5nbG9ibCAje3Nhbml0aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9Igor
ICAgICRhc20ucHV0cyAiI3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxmLm5hbWUpfToiCisgIGVuZAor
ZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRz
ICJMX29mZmxpbmVhc21fI3tzZWxmLm5hbWVbMS4uLTFdfToiCisgIGVuZAorZW5kCisKK2NsYXNz
IFNraXAKKyAgZGVmIGxvd2VyKG5hbWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisg
IGRlZiBsb3dlcihuYW1lKQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBub2RlIHwKKyAgICAg
IG5vZGUubG93ZXIobmFtZSkKKyAgICB9CisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0
X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsODcgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJi
YWNrZW5kcyIKK3JlcXVpcmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVp
cmUgInBhcnNlciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitp
bnB1dEZsbm0gPSBBUkdWLnNoaWZ0CitvdXRwdXRGbG5tID0gQVJHVi5zaGlmdAorCitkZWYgZW1p
dE1hZ2ljTnVtYmVyCisgIE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVhY2ggeworICAgIHwgbnVtYmVy
IHwKKyAgICAkb3V0cHV0LnB1dHMgIiN7bnVtYmVyfSwiCisgIH0KK2VuZAorCitpbnB1dERhdGEg
PSBJTzo6cmVhZChpbnB1dEZsbm0pCitpbnB1dEhhc2ggPSBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0
KGlucHV0RGF0YSkKKworaWYgRmlsZVRlc3QuZXhpc3Q/IG91dHB1dEZsbm0KKyAgRmlsZS5vcGVu
KG91dHB1dEZsbm0sICJyIikgeworICAgIHwgaW5wIHwKKyAgICBmaXJzdExpbmUgPSBpbnAuZ2V0
cworICAgIGlmIGZpcnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09ICIvLyBvZmZsaW5lYXNt
IGlucHV0IGhhc2g6ICN7aW5wdXRIYXNofSIKKyAgICAgICRzdGRlcnIucHV0cyAiTm90aGluZyBj
aGFuZ2VkLiIKKyAgICAgIGV4aXQgMAorICAgIGVuZAorICB9CitlbmQKKworb3JpZ2luYWxBU1Qg
PSBwYXJzZShsZXgoaW5wdXREYXRhKSkKKworRmlsZS5vcGVuKG91dHB1dEZsbm0sICJ3Iikgewor
ICB8IG91dHAgfAorICAkb3V0cHV0ID0gb3V0cAorICBvdXRwLnB1dHMgIi8vIG9mZmxpbmVhc20g
aW5wdXQgaGFzaDogI3tpbnB1dEhhc2h9IgorICBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMo
b3JpZ2luYWxBU1QpIHsKKyAgICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAg
ICBvZmZzZXRzTGlzdCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKKyAgICBz
aXplc0xpc3QgPSBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CisgICAgCisgICAgbGVuZ3Ro
ID0gKE9GRlNFVF9NQUdJQ19OVU1CRVJTLnNpemUgKyAxKSAqICgxICsgb2Zmc2V0c0xpc3Quc2l6
ZSArIHNpemVzTGlzdC5zaXplKQorICAgIAorICAgIG91dHAucHV0cyAic3RhdGljIGNvbnN0IHVu
c2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICAgIGVtaXRNYWdpY051bWJl
cgorICAgIG91dHAucHV0cyAiI3tpbmRleH0sIgorICAgIG9mZnNldHNMaXN0LmVhY2ggeworICAg
ICAgfCBvZmZzZXQgfAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICBvdXRwLnB1dHMgIk9G
RkxJTkVfQVNNX09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSksIgor
ICAgIH0KKyAgICBzaXplc0xpc3QuZWFjaCB7CisgICAgICB8IG9mZnNldCB8CisgICAgICBlbWl0
TWFnaWNOdW1iZXIKKyAgICAgIG91dHAucHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0cnVjdH0pLCIK
KyAgICB9CisgICAgb3V0cC5wdXRzICJ9OyIKKyAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxODggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK01BQ1JPX0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJhZGRpIiwKKyAgICJhbmRpIiwK
KyAgICJsc2hpZnRpIiwKKyAgICJtdWxpIiwKKyAgICJuZWdpIiwKKyAgICJub3RpIiwKKyAgICJv
cmkiLAorICAgInJzaGlmdGkiLAorICAgInVyc2hpZnRpIiwKKyAgICJzdWJpIiwKKyAgICJ4b3Jp
IiwKKyAgICJsb2FkaSIsCisgICAibG9hZGIiLAorICAgImxvYWRoIiwKKyAgICJzdG9yZWkiLAor
ICAgInN0b3JlYiIsCisgICAibG9hZGQiLAorICAgIm1vdmVkIiwKKyAgICJzdG9yZWQiLAorICAg
ImFkZGQiLAorICAgImRpdmQiLAorICAgInN1YmQiLAorICAgIm11bGQiLAorICAgInNxcnRkIiwK
KyAgICJjaTJkIiwKKyAgICJmaWkyZCIsICMgdXNhZ2U6IGZpaTJkIDxncHIgd2l0aCBsZWFzdCBz
aWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxmcHI+
CisgICAiZmQyaWkiLCAjIHVzYWdlOiBmZDJpaSA8ZnByPiwgPGdwciB3aXRoIGxlYXN0IHNpZ25p
ZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPgorICAgImJkZXEi
LAorICAgImJkbmVxIiwKKyAgICJiZGd0IiwKKyAgICJiZGd0ZXEiLAorICAgImJkbHQiLAorICAg
ImJkbHRlcSIsCisgICAiYmRlcXVuIiwKKyAgICJiZG5lcXVuIiwKKyAgICJiZGd0dW4iLAorICAg
ImJkZ3RlcXVuIiwKKyAgICJiZGx0dW4iLAorICAgImJkbHRlcXVuIiwKKyAgICJidGQyaSIsCisg
ICAidGQyaSIsCisgICAiYmNkMmkiLAorICAgIm1vdmR6IiwKKyAgICJwb3AiLAorICAgInB1c2gi
LAorICAgIm1vdmUiLAorICAgInN4aTJwIiwKKyAgICJ6eGkycCIsCisgICAibm9wIiwKKyAgICJi
aWVxIiwKKyAgICJiaW5lcSIsCisgICAiYmlhIiwKKyAgICJiaWFlcSIsCisgICAiYmliIiwKKyAg
ICJiaWJlcSIsCisgICAiYmlndCIsCisgICAiYmlndGVxIiwKKyAgICJiaWx0IiwKKyAgICJiaWx0
ZXEiLAorICAgImJiZXEiLAorICAgImJibmVxIiwKKyAgICJiYmEiLAorICAgImJiYWVxIiwKKyAg
ICJiYmIiLAorICAgImJiYmVxIiwKKyAgICJiYmd0IiwKKyAgICJiYmd0ZXEiLAorICAgImJibHQi
LAorICAgImJibHRlcSIsCisgICAiYnRpbyIsCisgICAiYnRpcyIsCisgICAiYnRpeiIsCisgICAi
YnRpbnoiLAorICAgImJ0Ym8iLAorICAgImJ0YnMiLAorICAgImJ0YnoiLAorICAgImJ0Ym56IiwK
KyAgICJqbXAiLAorICAgImJhZGRpbyIsCisgICAiYmFkZGlzIiwKKyAgICJiYWRkaXoiLAorICAg
ImJhZGRpbnoiLAorICAgImJzdWJpbyIsCisgICAiYnN1YmlzIiwKKyAgICJic3ViaXoiLAorICAg
ImJzdWJpbnoiLAorICAgImJtdWxpbyIsCisgICAiYm11bGlzIiwKKyAgICJibXVsaXoiLAorICAg
ImJtdWxpbnoiLAorICAgImJvcmlvIiwKKyAgICJib3JpcyIsCisgICAiYm9yaXoiLAorICAgImJv
cmlueiIsCisgICAiYnJlYWsiLAorICAgImNhbGwiLAorICAgInJldCIsCisgICAiY2llcSIsCisg
ICAiY2luZXEiLAorICAgImNpYSIsCisgICAiY2lhZXEiLAorICAgImNpYiIsCisgICAiY2liZXEi
LAorICAgImNpZ3QiLAorICAgImNpZ3RlcSIsCisgICAiY2lsdCIsCisgICAiY2lsdGVxIiwKKyAg
ICJ0aW8iLAorICAgInRpcyIsCisgICAidGl6IiwKKyAgICJ0aW56IiwKKyAgICJ0Ym8iLAorICAg
InRicyIsCisgICAidGJ6IiwKKyAgICJ0Ym56IiwKKyAgICJwZWVrIiwKKyAgICJwb2tlIiwKKyAg
ICJicGVxIiwKKyAgICJicG5lcSIsCisgICAiYnBhIiwKKyAgICJicGFlcSIsCisgICAiYnBiIiwK
KyAgICJicGJlcSIsCisgICAiYnBndCIsCisgICAiYnBndGVxIiwKKyAgICJicGx0IiwKKyAgICJi
cGx0ZXEiLAorICAgImFkZHAiLAorICAgImFuZHAiLAorICAgIm9ycCIsCisgICAic3VicCIsCisg
ICAieG9ycCIsCisgICAibG9hZHAiLAorICAgImNwZXEiLAorICAgImNwbmVxIiwKKyAgICJjcGEi
LAorICAgImNwYWVxIiwKKyAgICJjcGIiLAorICAgImNwYmVxIiwKKyAgICJjcGd0IiwKKyAgICJj
cGd0ZXEiLAorICAgImNwbHQiLAorICAgImNwbHRlcSIsCisgICAic3RvcmVwIiwKKyAgICJidHBv
IiwKKyAgICJidHBzIiwKKyAgICJidHB6IiwKKyAgICJidHBueiIsCisgICAiYmFkZHBvIiwKKyAg
ICJiYWRkcHMiLAorICAgImJhZGRweiIsCisgICAiYmFkZHBueiIKKyAgXQorCitYODZfSU5TVFJV
Q1RJT05TID0KKyAgWworICAgImNkcWkiLAorICAgImlkaXZpIgorICBdCisKK0lOU1RSVUNUSU9O
UyA9IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMKKworSU5TVFJVQ1RJT05f
UEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIElOU1RSVUNUSU9OUy5qb2luKCcpfCgnKSAr
ICcpKVxcWicpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRf
ZXh0cmFjdG9yX2NvbnN0YW50cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29u
c3RhbnRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitNQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBm
ZjVlNzU1IF0KKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZz
ZXRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29m
ZnNldHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1MCBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0
X2V4dHJhY3Rvcl9jb25zdGFudHMiCisKK09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3
YWM3LCAweDBmZjVlNzU1IF0KKworIworIyBvZmZzZXRzTGlzdChhc3QpCisjIHNpemVzTGlzdChh
c3QpCisjCisjIFJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhl
IEFTVC4KKyMKKworZGVmIG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTdHJ1Y3RPZmZz
ZXQpLnVuaXEuc29ydAorZW5kCisKK2RlZiBzaXplc0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFNp
emVvZikudW5pcS5zb3J0CitlbmQKKworIworIyBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4
KGFzdCwgZmlsZSkgLT4KKyMgICAgIFtvZmZzZXRzLCBpbmRleF0KKyMKKyMgUGFyc2VzIHRoZSBv
ZmZzZXRzIGZyb20gYSBmaWxlIGFuZCByZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCB0aGUK
KyMgaW5kZXggb2YgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB2YWxpZCBpbiB0aGlzIGJ1aWxk
IHRhcmdldC4KKyMKKworZGVmIG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgoZmlsZSkKKyAg
aW5kZXggPSBuaWwKKyAgb2Zmc2V0cyA9IFtdCisgIGVuZGlhbm5lc3NNYXJrZXJCeXRlcyA9IG5p
bAorICAKKyAgZGVmIHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgIGJ5dGVzID0gW10KKyAg
ICA0LnRpbWVzIHsKKyAgICAgIGJ5dGVzIDw8IGlucC5nZXRieXRlCisgICAgfQorICAgIAorICAg
IGlmIGVuZGlhbm5lc3MgPT0gOmxpdHRsZQorICAgICAgIyBMaXR0bGUgZW5kaWFuCisgICAgICAo
Ynl0ZXNbMF0gPDwgMCB8CisgICAgICAgYnl0ZXNbMV0gPDwgOCB8CisgICAgICAgYnl0ZXNbMl0g
PDwgMTYgfAorICAgICAgIGJ5dGVzWzNdIDw8IDI0KQorICAgIGVsc2UKKyAgICAgICMgQmlnIGVu
ZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDI0IHwKKyAgICAgICBieXRlc1sxXSA8PCAxNiB8Cisg
ICAgICAgYnl0ZXNbMl0gPDwgOCB8CisgICAgICAgYnl0ZXNbM10gPDwgMCkKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBbOmxpdHRsZSwgOmJpZ10uZWFjaCB7CisgICAgfCBlbmRpYW5uZXNzIHwKKyAg
ICBtYWdpY0J5dGVzID0gW10KKyAgICBNQUdJQ19OVU1CRVJTLmVhY2ggeworICAgICAgfCBudW1i
ZXIgfAorICAgICAgY3VycmVudEJ5dGVzID0gW10KKyAgICAgIDQudGltZXMgeworICAgICAgICBj
dXJyZW50Qnl0ZXMgPDwgKG51bWJlciAmIDB4ZmYpCisgICAgICAgIG51bWJlciA+Pj0gOAorICAg
ICAgfQorICAgICAgaWYgZW5kaWFubmVzcyA9PSA6YmlnCisgICAgICAgIGN1cnJlbnRCeXRlcy5y
ZXZlcnNlIQorICAgICAgZW5kCisgICAgICBtYWdpY0J5dGVzICs9IGN1cnJlbnRCeXRlcworICAg
IH0KKyAgICAKKyAgICBGaWxlLm9wZW4oZmlsZSwgInIiKSB7CisgICAgICB8IGlucCB8CisgICAg
ICB3aGVyZUluTWFya2VyID0gMAorICAgICAgbG9vcCB7CisgICAgICAgIGJ5dGUgPSBpbnAuZ2V0
Ynl0ZQorICAgICAgICBicmVhayB1bmxlc3MgYnl0ZQorICAgICAgICBpZiBieXRlID09IG1hZ2lj
Qnl0ZXNbd2hlcmVJbk1hcmtlcl0KKyAgICAgICAgICB3aGVyZUluTWFya2VyICs9IDEKKyAgICAg
ICAgICBpZiB3aGVyZUluTWFya2VyID09IG1hZ2ljQnl0ZXMuc2l6ZQorICAgICAgICAgICAgIyBX
ZSBoYXZlIGEgbWF0Y2ghIElmIHdlIGhhdmUgbm90IHlldCByZWFkIHRoZSBlbmRpYW5uZXNzIG1h
cmtlciBhbmQgaW5kZXgsCisgICAgICAgICAgICAjIHRoZW4gcmVhZCB0aG9zZSBub3c7IG90aGVy
d2lzZSByZWFkIGFuIG9mZnNldC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgbm90IGlu
ZGV4CisgICAgICAgICAgICAgIGluZGV4ID0gcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgIG9mZnNldHMgPDwgcmVhZEludChlbmRpYW5uZXNz
LCBpbnApCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd2hlcmVJ
bk1hcmtlciA9IDAKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgIHdoZXJl
SW5NYXJrZXIgPSAwCisgICAgICAgIGVuZAorICAgICAgfQorICAgIH0KKyAgICAKKyAgICBicmVh
ayBpZiBpbmRleAorICB9CisgIAorICByYWlzZSB1bmxlc3MgaW5kZXgKKyAgCisgIFtvZmZzZXRz
LCBpbmRleF0KK2VuZAorCisjCisjIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAt
PiBbb2Zmc2V0cywgc2l6ZXNdCisjCisjIEJ1aWxkcyBhIG1hcHBpbmcgYmV0d2VlbiBTdHJ1Y3RP
ZmZzZXQgbm9kZXMgYW5kIHRoZWlyIHZhbHVlcy4KKyMKKworZGVmIGJ1aWxkT2Zmc2V0c01hcChh
c3QsIG9mZnNldHNMaXN0KQorICBvZmZzZXRzTWFwID0ge30KKyAgc2l6ZXNNYXAgPSB7fQorICBh
c3RPZmZzZXRzTGlzdCA9IG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0U2l6ZXNMaXN0ID0gc2l6ZXNM
aXN0KGFzdCkKKyAgcmFpc2UgdW5sZXNzIGFzdE9mZnNldHNMaXN0LnNpemUgKyBhc3RTaXplc0xp
c3Quc2l6ZSA9PSBvZmZzZXRzTGlzdC5zaXplCisgIG9mZnNldHNMaXN0KGFzdCkuZWFjaF93aXRo
X2luZGV4IHsKKyAgICB8IHN0cnVjdE9mZnNldCwgaW5kZXggfAorICAgIG9mZnNldHNNYXBbc3Ry
dWN0T2Zmc2V0XSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgc2l6ZXNMaXN0KGFzdCkuZWFj
aF93aXRoX2luZGV4IHsKKyAgICB8IHNpemVvZiwgaW5kZXggfAorICAgIHNpemVzTWFwW3NpemVv
Zl0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIFtvZmZzZXRzTWFwLCBzaXplc01hcF0KK2Vu
ZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJi
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiaW5zdHJ1Y3Rpb25zIgorcmVx
dWlyZSAicmVnaXN0ZXJzIgorCitjbGFzcyBUb2tlbgorICBhdHRyX3JlYWRlciA6Y29kZU9yaWdp
biwgOnN0cmluZworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RyaW5nKQorICAg
IEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICAgIEBzdHJpbmcgPSBzdHJpbmcKKyAgZW5kCisg
IAorICBkZWYgPT0ob3RoZXIpCisgICAgaWYgb3RoZXIuaXNfYT8gVG9rZW4KKyAgICAgIEBzdHJp
bmcgPT0gb3RoZXIuc3RyaW5nCisgICAgZWxzZQorICAgICAgQHN0cmluZyA9PSBvdGhlcgorICAg
IGVuZAorICBlbmQKKyAgCisgIGRlZiA9fihvdGhlcikKKyAgICBAc3RyaW5nID1+IG90aGVyCisg
IGVuZAorICAKKyAgZGVmIHRvX3MKKyAgICAiI3tAc3RyaW5nLmluc3BlY3R9IGF0IGxpbmUgI3tj
b2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBp
ZiBjb21tZW50LmVtcHR5PworICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9IgorICAg
IGVsc2UKKyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfTogI3tjb21tZW50WzBdfSIK
KyAgICBlbmQKKyAgZW5kCitlbmQKKworIworIyBUaGUgbGV4ZXIuIFRha2VzIGEgc3RyaW5nIGFu
ZCByZXR1cm5zIGFuIGFycmF5IG9mIHRva2Vucy4KKyMKKworZGVmIGxleChzdHIpCisgIHJlc3Vs
dCA9IFtdCisgIGxpbmVOdW1iZXIgPSAxCisgIHdoaWxlIG5vdCBzdHIuZW1wdHk/CisgICAgY2Fz
ZSBzdHIKKyAgICB3aGVuIC9cQVwjKFteXG5dKikvCisgICAgICAjIGNvbW1lbnQsIGlnbm9yZQor
ICAgIHdoZW4gL1xBXG4vCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQm
KQorICAgICAgbGluZU51bWJlciArPSAxCisgICAgd2hlbiAvXEFbYS16QS1aXShbYS16QS1aMC05
X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hl
biAvXEFcLihbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51
bWJlciwgJCYpCisgICAgd2hlbiAvXEFfKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8
IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQShbIFx0XSspLworICAgICAg
IyB3aGl0ZXNwYWNlLCBpZ25vcmUKKyAgICB3aGVuIC9cQTB4KFswLTlhLWZBLUZdKykvCisgICAg
ICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLmhleC50b19zKQorICAgIHdoZW4g
L1xBMChbMC03XSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5v
Y3QudG9fcykKKyAgICB3aGVuIC9cQShbMC05XSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5l
dyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQTo6LworICAgICAgcmVzdWx0IDw8IFRva2Vu
Lm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVs6LFwoXClcW1xdPVwrXC0qXS8KKyAg
ICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgZWxzZQorICAgICAg
cmFpc2UgIkxleGVyIGVycm9yIGF0IGxpbmUgbnVtYmVyICN7bGluZU51bWJlcn0sIHVuZXhwZWN0
ZWQgc2VxdWVuY2UgI3tzdHJbMC4uMjBdLmluc3BlY3R9IgorICAgIGVuZAorICAgIHN0ciA9ICR+
LnBvc3RfbWF0Y2gKKyAgZW5kCisgIHJlc3VsdAorZW5kCisKKyMKKyMgVG9rZW4gaWRlbnRpZmlj
YXRpb24uCisjCisKK2RlZiBpc1JlZ2lzdGVyKHRva2VuKQorICB0b2tlbiA9fiBSRUdJU1RFUl9Q
QVRURVJOCitlbmQKKworZGVmIGlzSW5zdHJ1Y3Rpb24odG9rZW4pCisgIHRva2VuID1+IElOU1RS
VUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNLZXl3b3JkKHRva2VuKQorICB0b2tlbiA9fiAv
XEEoKHRydWUpfChmYWxzZSl8KGlmKXwodGhlbil8KGVsc2UpfChlbHNpZil8KGVuZCl8KGFuZCl8
KG9yKXwobm90KXwobWFjcm8pfChjb25zdCl8KHNpemVvZil8KGVycm9yKSlcWi8gb3IKKyAgICB0
b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOIG9yCisgICAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFU
VEVSTgorZW5kCisKK2RlZiBpc0lkZW50aWZpZXIodG9rZW4pCisgIHRva2VuID1+IC9cQVthLXpB
LVpdKFthLXpBLVowLTlfXSopXFovIGFuZCBub3QgaXNLZXl3b3JkKHRva2VuKQorZW5kCisKK2Rl
ZiBpc0xhYmVsKHRva2VuKQorICB0b2tlbiA9fiAvXEFfKFthLXpBLVowLTlfXSopXFovCitlbmQK
KworZGVmIGlzTG9jYWxMYWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXC4oW2EtekEtWjAtOV9d
KilcWi8KK2VuZAorCitkZWYgaXNWYXJpYWJsZSh0b2tlbikKKyAgaXNJZGVudGlmaWVyKHRva2Vu
KSBvciBpc1JlZ2lzdGVyKHRva2VuKQorZW5kCisKK2RlZiBpc0ludGVnZXIodG9rZW4pCisgIHRv
a2VuID1+IC9cQVswLTldLworZW5kCisKKyMKKyMgVGhlIHBhcnNlci4gVGFrZXMgYW4gYXJyYXkg
b2YgdG9rZW5zIGFuZCByZXR1cm5zIGFuIEFTVC4gTWV0aG9kcworIyBvdGhlciB0aGFuIHBhcnNl
KHRva2VucykgYXJlIG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9uLgorIworCitjbGFzcyBQYXJz
ZXIKKyAgZGVmIGluaXRpYWxpemUodG9rZW5zKQorICAgIEB0b2tlbnMgPSB0b2tlbnMKKyAgICBA
aWR4ID0gMAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIEB0
b2tlbnNbQGlkeF0KKyAgICAgIEB0b2tlbnNbQGlkeF0ucGFyc2VFcnJvcigqY29tbWVudCkKKyAg
ICBlbHNlCisgICAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgICByYWlzZSAiUGFyc2UgZXJy
b3IgYXQgZW5kIG9mIGZpbGUiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJv
ciBhdCBlbmQgb2YgZmlsZTogI3tjb21tZW50WzBdfSIKKyAgICAgIGVuZAorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiBjb25zdW1lKHJlZ2V4cCkKKyAgICBpZiByZWdleHAKKyAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPX4gcmVnZXhwCisgICAgZWxzZQorICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgQGlkeCA9PSBAdG9rZW5zLmxlbmd0aAorICAgIGVuZAorICAgIEBpZHgg
Kz0gMQorICBlbmQKKyAgCisgIGRlZiBza2lwTmV3TGluZQorICAgIHdoaWxlIEB0b2tlbnNbQGlk
eF0gPT0gIlxuIgorICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBh
cnNlUHJlZGljYXRlQXRvbQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm5vdCIKKyAgICAgIEBp
ZHggKz0gMQorICAgICAgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4
XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJlc3Vs
dCA9IHBhcnNlUHJlZGljYXRlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhd
ID09ICIpIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5z
W0BpZHhdID09ICJ0cnVlIgorICAgICAgcmVzdWx0ID0gVHJ1ZS5pbnN0YW5jZQorICAgICAgQGlk
eCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJmYWxzZSIK
KyAgICAgIHJlc3VsdCA9IEZhbHNlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJl
c3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQg
PSBTZXR0aW5nLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhd
LnN0cmluZykKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzZQorICAgICAg
cGFyc2VFcnJvcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZUFuZAor
ICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0g
PT0gImFuZCIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAg
ICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVk
aWNhdGVBdG9tCisgICAgICByZXN1bHQgPSBBbmQubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmln
aHQpCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRl
CisgICAgIyBzb21lIGV4YW1wbGVzIG9mIHByZWNlZGVuY2U6CisgICAgIyBub3QgYSBhbmQgYiAt
PiAobm90IGEpIGFuZCBiCisgICAgIyBhIGFuZCBiIG9yIGMgLT4gKGEgYW5kIGIpIG9yIGMKKyAg
ICAjIGEgb3IgYiBhbmQgYyAtPiBhIG9yIChiIGFuZCBjKQorICAgIAorICAgIHJlc3VsdCA9IHBh
cnNlUHJlZGljYXRlQW5kCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAib3IiCisgICAgICBj
b2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgICBy
ZXN1bHQgPSBPci5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICBy
ZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VWYXJpYWJsZQorICAgIGlmIGlzUmVnaXN0ZXIo
QHRva2Vuc1tAaWR4XSkKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPX4gRlBSX1BBVFRFUk4KKyAg
ICAgICAgcmVzdWx0ID0gRlBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0g
UmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4
XS5zdHJpbmcpCisgICAgICBlbmQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4
XSkKKyAgICAgIHJlc3VsdCA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisg
ICAgZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNl
QWRkcmVzcyhvZmZzZXQpCisgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAi
WyIKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgCisgICAg
IyBUaHJlZSBwb3NzaWJpbGl0aWVzOgorICAgICMgW10gICAgICAgLT4gQWJzb2x1dGVBZGRyZXNz
CisgICAgIyBbYV0gICAgICAtPiBBZGRyZXNzCisgICAgIyBbYSxiXSAgICAtPiBCYXNlSW5kZXgg
d2l0aCBzY2FsZSA9IDEKKyAgICAjIFthLGIsY10gIC0+IEJhc2VJbmRleAorICAgIAorICAgIEBp
ZHggKz0gMQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIHJldHVybiBBYnNvbHV0ZUFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIG9mZnNldCkKKyAgICBl
bmQKKyAgICBhID0gcGFyc2VWYXJpYWJsZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisg
ICAgICByZXN1bHQgPSBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBhLCBvZmZzZXQpCisgICAgZWxz
ZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgIEBp
ZHggKz0gMQorICAgICAgYiA9IHBhcnNlVmFyaWFibGUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gIl0iCisgICAgICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwg
MSwgb2Zmc2V0KQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5z
W0BpZHhdID09ICIsIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxl
c3MgWyIxIiwgIjIiLCAiNCIsICI4Il0ubWVtYmVyPyBAdG9rZW5zW0BpZHhdLnN0cmluZworICAg
ICAgICBjID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faQorICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVz
dWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCBjLCBvZmZzZXQpCisgICAgICBl
bmQKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYg
cGFyc2VDb2xvbkNvbG9uCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luCisgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0
b2tlbnNbQGlkeF0KKyAgICBuYW1lcyA9IFtAdG9rZW5zW0BpZHhdLnN0cmluZ10KKyAgICBAaWR4
ICs9IDEKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICI6OiIKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAg
IG5hbWVzIDw8IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQK
KyAgICByYWlzZSBpZiBuYW1lcy5lbXB0eT8KKyAgICBbY29kZU9yaWdpbiwgbmFtZXNdCisgIGVu
ZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICBza2lwTmV3TGluZQorICAgIGlm
IEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIE5lZ0ltbWVkaWF0
ZS5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcGFyc2VFeHByZXNzaW9uQXRvbSkK
KyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICBy
ZXN1bHQgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNb
QGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlz
SW50ZWdlciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBJbW1lZGlhdGUubmV3KEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faSkKKyAgICAgIEBp
ZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlk
eF0KKyAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBpZiBu
YW1lcy5zaXplID4gMQorICAgICAgICBTdHJ1Y3RPZmZzZXQuZm9yRmllbGQoY29kZU9yaWdpbiwg
bmFtZXNbMC4uLTJdLmpvaW4oJzo6JyksIG5hbWVzWy0xXSkKKyAgICAgIGVsc2UKKyAgICAgICAg
VmFyaWFibGUuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lc1swXSkKKyAgICAgIGVuZAorICAgIGVs
c2lmIGlzUmVnaXN0ZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcGFyc2VWYXJpYWJsZQorICAgIGVs
c2lmIEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgY29k
ZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIFNpemVvZi5mb3JOYW1lKGNv
ZGVPcmlnaW4sIG5hbWVzLmpvaW4oJzo6JykpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgor
ICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICBza2lwTmV3
TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICB3aGlsZSBAdG9rZW5z
W0BpZHhdID09ICIqIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgICAgQGlk
eCArPSAxCisgICAgICAgIHJlc3VsdCA9IE11bEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAt
IDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICAgIGVsc2UK
KyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAg
CisgIGRlZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgIEB0b2tlbnNbQGlkeF0gPT0gIi0iIG9yIEB0
b2tlbnNbQGlkeF0gPT0gInNpemVvZiIgb3IgaXNJbnRlZ2VyKEB0b2tlbnNbQGlkeF0pIG9yIGlz
VmFyaWFibGUoQHRva2Vuc1tAaWR4XSkgb3IgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgZW5kCisg
IAorICBkZWYgcGFyc2VFeHByZXNzaW9uCisgICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBw
YXJzZUV4cHJlc3Npb25NdWwKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIrIiBvciBAdG9r
ZW5zW0BpZHhdID09ICItIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKyIKKyAgICAgICAg
QGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IEFkZEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlk
eCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxz
aWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3Vs
dCA9IFN1YkltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3Vs
dCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAg
ZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlT3BlcmFuZChj
b21tZW50KQorICAgIGlmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgICBleHByID0gcGFyc2VFeHBy
ZXNzaW9uCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAgICBwYXJzZUFkZHJl
c3MoZXhwcikKKyAgICAgIGVsc2UKKyAgICAgICAgZXhwcgorICAgICAgZW5kCisgICAgZWxzaWYg
QHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgIHBhcnNlQWRkcmVzcyhJbW1lZGlhdGUubmV3KEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgMCkpCisgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0Bp
ZHhdCisgICAgICByZXN1bHQgPSBMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luLCBMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tA
aWR4XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBp
c0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJlZmVy
ZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMb2NhbExhYmVsLmZvck5hbWUoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IoY29tbWVudCkK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgIHNraXBO
ZXdMaW5lCisgICAgY29uc3VtZSgvXEFcKFxaLykKKyAgICB2YXJpYWJsZXMgPSBbXQorICAgIGxv
b3AgeworICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgaXNJZGVudGlmaWVy
KEB0b2tlbnNbQGlkeF0pCisgICAgICAgIHZhcmlhYmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1lKEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICIpIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lm
IEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UK
KyAgICAgICAgICBwYXJzZUVycm9yCisgICAgICAgIGVuZAorICAgICAgZWxzZQorICAgICAgICBw
YXJzZUVycm9yCisgICAgICBlbmQKKyAgICB9CisgICAgdmFyaWFibGVzCisgIGVuZAorICAKKyAg
ZGVmIHBhcnNlU2VxdWVuY2UoZmluYWwsIGNvbW1lbnQpCisgICAgZmlyc3RDb2RlT3JpZ2luID0g
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgbGlzdCA9IFtdCisgICAgbG9vcCB7CisgICAg
ICBpZiAoQGlkeCA9PSBAdG9rZW5zLmxlbmd0aCBhbmQgbm90IGZpbmFsKSBvciAoZmluYWwgYW5k
IEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBAdG9r
ZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgIyBpZ25vcmUKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJjb25zdCIKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzVmFyaWFibGUgQHRva2Vuc1tAaWR4XQorICAgICAg
ICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBA
dG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJy
b3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIj0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICB2YWx1ZSA9IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGNvbnN0ICN7dmFyaWFibGUu
bmFtZX0iKQorICAgICAgICBsaXN0IDw8IENvbnN0RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJl
cnJvciIKKyAgICAgICAgbGlzdCA8PCBFcnJvci5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
KQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImlmIgor
ICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVBy
ZWRpY2F0ZQorICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgIHNr
aXBOZXdMaW5lCisgICAgICAgIGlmVGhlbkVsc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2lu
LCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywg
IndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgbGlz
dCA8PCBpZlRoZW5FbHNlCisgICAgICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImVsc2lmIgor
ICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIHByZWRpY2F0ZSA9
IHBhcnNlUHJlZGljYXRlCisgICAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQor
ICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgZWxzZUNhc2UgPSBJZlRoZW5FbHNlLm5l
dyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwo
ZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkK
KyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNhc2UKKyAgICAgICAgICBpZlRo
ZW5FbHNlID0gZWxzZUNhc2UKKyAgICAgICAgZW5kCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gImVsc2UiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNl
Q2FzZSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGVsc2UgY2Fz
ZSBmb3IgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikKKyAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0g
ImVuZCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBAdG9r
ZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAg
ICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAg
IG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
dmFyaWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICBib2R5ID0gcGFyc2VTZXF1
ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gI3tuYW1lfSIpCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBsaXN0IDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCB2
YXJpYWJsZXMsIGJvZHkpCisgICAgICBlbHNpZiBpc0luc3RydWN0aW9uIEB0b2tlbnNbQGlkeF0K
KyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBu
YW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlm
IChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tl
bnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24s
IGFuZCBpdCdzIHRoZSBsYXN0IG9uZS4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBicmVhaworICAgICAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlv
bi4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBb
XSkKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgICMgSXQncyBk
ZWZpbml0ZWx5IGFuIGluc3RydWN0aW9uLCBhbmQgaXQgaGFzIGF0IGxlYXN0IG9uZSBvcGVyYW5k
LgorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gZmFs
c2UKKyAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFu
ZCgid2hpbGUgaW5zaWRlIG9mIGluc3RydWN0aW9uICN7bmFtZX0iKQorICAgICAgICAgICAgaWYg
KG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vu
c1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVj
dGlvbiBhbmQgb2YgdGhlIHNlcXVlbmNlLgorICAgICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0g
dHJ1ZQorICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4
XSA9PSAiLCIKKyAgICAgICAgICAgICAgIyBIYXMgYW5vdGhlciBvcGVyYW5kLgorICAgICAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgor
ICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uLgorICAgICAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQgYSBjb21tYSwgbmV3bGluZSwgb3IgI3tmaW5h
bH0gYWZ0ZXIgI3tvcGVyYW5kcy5sYXN0LmR1bXB9IikKKyAgICAgICAgICAgIGVuZAorICAgICAg
ICAgIH0KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1l
LCBvcGVyYW5kcykKKyAgICAgICAgICBpZiBlbmRPZlNlcXVlbmNlCisgICAgICAgICAgICBicmVh
aworICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmllciBA
dG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgICAgICMgTWFjcm8gaW52
b2NhdGlvbi4KKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisg
ICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgor
ICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9vcCB7
CisgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlk
eF0gPT0gIm1hY3JvIgorICAgICAgICAgICAgICAgICMgSXQncyBhIG1hY3JvIGxhbWJkYSEKKyAg
ICAgICAgICAgICAgICBjb2RlT3JpZ2luSW5uZXIgPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4K
KyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBw
YXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgICAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2Uo
L1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGFub255bW91cyBtYWNybyBwYXNzZWQgYXMgYXJn
dW1lbnQgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAg
ICAgICAgb3BlcmFuZHMgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJpYWJs
ZXMsIGJvZHkpCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8
PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBtYWNybyBjYWxsIHRvICN7bmFtZX0iKQor
ICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICIsIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgcGFyc2VFcnJvciAiVW5leHBlY3RlZCAje0B0b2tlbnNbQGlkeF0uc3RyaW5n
Lmluc3BlY3R9IHdoaWxlIHBhcnNpbmcgaW52b2NhdGlvbiBvZiBtYWNybyAje25hbWV9IgorICAg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbmQKKyAgICAgICAgICBs
aXN0IDw8IE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAg
IGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9
IgorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XSBvciBpc0xv
Y2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAi
OiIKKyAgICAgICAgIyBJdCdzIGEgbGFiZWwuCisgICAgICAgIGlmIGlzTGFiZWwgbmFtZQorICAg
ICAgICAgIGxpc3QgPDwgTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBl
bHNlCisgICAgICAgICAgbGlzdCA8PCBMb2NhbExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFt
ZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzZQorICAgICAgICBw
YXJzZUVycm9yICJFeHBlY3RpbmcgdGVybWluYWwgI3tmaW5hbH0gI3tjb21tZW50fSIKKyAgICAg
IGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoZmlyc3RDb2RlT3JpZ2luLCBsaXN0KQorICBl
bmQKK2VuZAorCitkZWYgcGFyc2UodG9rZW5zKQorICBwYXJzZXIgPSBQYXJzZXIubmV3KHRva2Vu
cykKKyAgcGFyc2VyLnBhcnNlU2VxdWVuY2UobmlsLCAiIikKK2VuZAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitHUFJTID0KKyAgWworICAgInQwIiwKKyAgICJ0MSIsCisgICAidDIiLAorICAgInQzIiwK
KyAgICJ0NCIsCisgICAiY2ZyIiwKKyAgICJhMCIsCisgICAiYTEiLAorICAgInIwIiwKKyAgICJy
MSIsCisgICAic3AiCisgIF0KKworRlBSUyA9CisgIFsKKyAgICJmdDAiLAorICAgImZ0MSIsCisg
ICAiZnQyIiwKKyAgICJmdDMiLAorICAgImZ0NCIsCisgICAiZnQ1IiwKKyAgICJmYTAiLAorICAg
ImZhMSIsCisgICAiZmEyIiwKKyAgICJmYTMiLAorICAgImZyIgorICBdCisKK1JFR0lTVEVSUyA9
IEdQUlMgKyBGUFJTCisKK0dQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgR1BSUy5q
b2luKCcpfCgnKSArICcpKVxcWicpCitGUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyAr
IEZQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQorCitSRUdJU1RFUl9QQVRURVJOID0gUmVnZXhw
Lm5ldygnXFxBKCgnICsgUkVHSVNURVJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjA1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgInBhcnNl
ciIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworIworIyBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlv
bnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25zCisjCisjIENvbXB1dGVzIGFuIGFycmF5IG9m
IHNldHRpbmdzIG1hcHMsIHdoZXJlIGEgc2V0dGluZ3MgbWFwIGNvbnN0aXR1dGVzCisjIGEgY29u
ZmlndXJhdGlvbiBmb3IgdGhlIGFzc2VtYmx5IGNvZGUgYmVpbmcgZ2VuZXJhdGVkLiBUaGUgbWFw
CisjIGNvbnRhaW5zIGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBzZXR0aW5ncyBuYW1l
cyAoc3RyaW5ncykgYW5kCisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xlYW5zICh0cnVlIGZvciBlbmFi
bGVkLCBmYWxzZSBmb3IgZGlzYWJsZWQpLgorIworCitkZWYgY29tcHV0ZVNldHRpbmdzQ29tYmlu
YXRpb25zKGFzdCkKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBbXQorICAKKyAgZGVmIHNldHRp
bmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbWFwU29GYXIsIHJlbWFpbmluZykK
KyAgICBpZiByZW1haW5pbmcuZW1wdHk/CisgICAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA8PCBt
YXBTb0ZhcgorICAgICAgcmV0dXJuCisgICAgZW5kCisgICAgCisgICAgbmV3TWFwID0gbWFwU29G
YXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSB0cnVlCisgICAgc2V0dGluZ3NDb21i
aW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmluZ1sxLi4tMV0pCisg
ICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0g
PSBmYWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3
TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmluYXRvcihz
ZXR0aW5nc0NvbWJpbmF0aW9ucywge30sIChhc3QuZmlsdGVyKFNldHRpbmcpLnVuaXEuY29sbGVj
dHt8dnwgdi5uYW1lfSArIFsiWDg2IiwgIkFSTXY3Il0pLnVuaXEpCisgIAorICBzZXR0aW5nc0Nv
bWJpbmF0aW9ucworZW5kCisKKyMKKyMgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0
KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwgLi4u
IH0KKyMKKyMgRGV0ZXJtaW5lcyBpZiB0aGUgc2V0dGluZ3MgY29tYmluYXRpb24gaXMgdmFsaWQs
IGFuZCBpZiBzbywgY2FsbHMKKyMgdGhlIGJsb2NrIHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSBu
ZWVkIHRvIGdlbmVyYXRlIGNvZGUuCisjCisKK2RlZiBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRp
bmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0aGlzIGNvbWJpbmF0b3Ig
Y2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWltZWRCYWNrZW5kcyA9IDAKKyAgc2VsZWN0ZWRC
YWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2ggeworICAgIHwgYmFja2VuZCB8CisgICAgaXNT
dXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2JhY2tlbmRdCisgICAgcmFpc2UgdW5sZXNzIGlz
U3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWltZWRCYWNrZW5kcyArPSBpZiBpc1N1cHBvcnRl
ZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlzU3VwcG9ydGVkCisgICAgICBzZWxlY3RlZEJh
Y2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0KKyAgCisgIHJldHVybiBpZiBudW1DbGFpbWVk
QmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUgdGhlIEFTVCBkb3duIHRvIGEgbG93LWxldmVs
IGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25hbHMpLgorICBsb3dMZXZlbEFTVCA9IGFzdC5y
ZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIHlpZWxkIGNvbmNyZXRlU2V0
dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJhY2tlbmQKK2VuZAorCisjCisjIGZvckVhY2hW
YWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3Ms
IGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0Nv
bWJpbmF0aW9uKGFzdCwgc2V0dGluZ3NDb21iaW5hdGlvbnMpIHsKKyMgICAgIHwgY29uY3JldGVT
ZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9CisjCisjIEV4ZWN1dGVzIHRoZSBn
aXZlbiBibG9jayBmb3IgZWFjaCB2YWxpZCBzZXR0aW5ncyBjb21iaW5hdGlvbiBpbiB0aGUKKyMg
c2V0dGluZ3MgbWFwLiBUaGUgYXN0IHBhc3NlZCBpbnRvIHRoZSBibG9jayBpcyByZXNvbHZlZAor
IyAoYXN0LnJlc29sdmUpIGFnYWluc3QgdGhlIHNldHRpbmdzLgorIworIyBUaGUgZmlyc3QgZm9y
bSB3aWxsIGNhbGwgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgZm9yIHlvdS4KKyMK
KworZGVmIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCAqb3B0aW9uYWxTZXR0
aW5nc0NvbWJpbmF0aW9ucykKKyAgcmFpc2UgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9u
cy5zaXplID4gMQorICAKKyAgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucy5lbXB0eT8K
KyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhh
c3QpCisgIGVsc2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IG9wdGlvbmFsU2V0dGluZ3ND
b21iaWF0aW9uc1swXQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zLmVhY2hfd2l0
aF9pbmRleCB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBpbmRleCB8CisgICAgZm9yU2V0dGlu
Z3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7CisgICAgICB8IGNvbmNyZXRlU2V0dGluZ3NfLCBs
b3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dM
ZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICB9CisgIH0KK2VuZAorCisjCisjIGNwcFNldHRp
bmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorIworIyBSZXR1cm5zIHRoZSBDKysgY29kZSB1c2Vk
IHRvIHRlc3QgaWYgd2UgYXJlIGluIGEgY29uZmlndXJhdGlvbiB0aGF0CisjIGNvcnJlc3BvbmRz
IHRvIHRoZSBnaXZlbiBjb25jcmV0ZSBzZXR0aW5ncy4KKyMKKworZGVmIGNwcFNldHRpbmdzVGVz
dChjb25jcmV0ZVNldHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdzLnRvX2EuY29s
bGVjdHsKKyAgICB8IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisgICAgICAgIiIKKyAgICAgZWxz
ZQorICAgICAgICIhIgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIgKyBwYWlyWzBdCisgIH0u
am9pbigiICYmICIpCitlbmQKKworIworIyBpc0FTVEVycm9uZW91cyhhc3QpCisjCisjIFRlc3Rz
IHRvIHNlZSBpZiB0aGUgQVNUIGNsYWltcyB0aGF0IHRoZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBp
ZiB0aGUKKyMgdXNlcidzIGNvZGUsIGFmdGVyIHNldHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJv
ciBub2Rlcy4KKyMKKworZGVmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAgbm90IGFzdC5maWx0ZXIo
RXJyb3IpLmVtcHR5PworZW5kCisKKyMKKyMgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNl
dHRpbmdzKQorIworIyBFbWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdlJ3JlIHVzaW5n
IHRoZSBnaXZlbiBjb25maWd1cmF0aW9uLgorIworCitkZWYgYXNzZXJ0Q29uZmlndXJhdGlvbihj
b25jcmV0ZVNldHRpbmdzKQorICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRl
U2V0dGluZ3MpCisgICRvdXRwdXQucHV0cyAiI2Vsc2UiCisgICRvdXRwdXQucHV0cyAiI2Vycm9y
IFwiQ29uZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAgJG91dHB1dC5wdXRzICIjZW5kaWYiCitl
bmQKKworIworIyBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3Qs
IGJhY2tlbmQpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4u
IH0KKyMKKyMgRW1pdHMgYWxsIHJlbGV2YW50IGd1YXJkcyB0byBzZWUgaWYgdGhlIGNvbmZpZ3Vy
YXRpb24gaG9sZHMgYW5kCisjIGNhbGxzIHRoZSBibG9jayBpZiB0aGUgY29uZmlndXJhdGlvbiBp
cyBub3QgZXJyb25lb3VzLgorIworCitkZWYgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3Jl
dGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKQorICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0
KGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICBpZiBpc0FTVEVycm9uZW91cyhhc3QpCisgICAgJG91
dHB1dC5wdXRzICIjZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uXCIiCisgIGVsc2lmIG5v
dCBXT1JLSU5HX0JBQ0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICAkb3V0cHV0LnB1dHMgIiNl
cnJvciBcIlRoaXMgYmFja2VuZCBpcyBub3Qgc3VwcG9ydGVkIHlldC5cIiIKKyAgZWxzZQorICAg
IHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZAorICBlbmQKKyAgCisgICRvdXRw
dXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMKKyMgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25z
KGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwg
Li4uIH0KKyMKKyMgRW1pdHMgZ3VhcmQgY29kZXMgZm9yIGFsbCB2YWxpZCBjb25maWd1cmF0aW9u
cywgYW5kIGNhbGxzIHRoZSBibG9jaworIyBmb3IgdGhvc2UgY29uZmlndXJhdGlvbnMgdGhhdCBh
cmUgdmFsaWQgYW5kIG5vdCBlcnJvbmVvdXMuCisjCisKK2RlZiBlbWl0Q29kZUluQWxsQ29uZmln
dXJhdGlvbnMoYXN0KQorICBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgewor
ICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4IHwKKyAg
ICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICAgeWll
bGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgJG91
dHB1dC5wdXRzICIjZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzNDIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3Jl
cXVpcmUgImFzdCIKKworIworIyBub2RlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyMKKyMg
Q29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IElmVGhlbkVsc2Ugbm9k
ZXMgYnkKKyMgc3Vic3RpdHV0aW5nIGNvbmNyZXRlIGJvb2xlYW4gdmFsdWVzIGZvciBlYWNoIFNl
dHRpbmcuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykK
KyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUKKyAgZGVm
IHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNz
IEZhbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQK
K2VuZAorCitjbGFzcyBTZXR0aW5nCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisg
ICAgc2V0dGluZ3NbQG5hbWVdLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQKKyAgZGVm
IHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNl
dHRpbmdzKS52YWx1ZSBhbmQgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUp
LmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBPcgorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNl
dHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIG9yIEBy
aWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQK
KworY2xhc3MgTm90CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKG5vdCBA
Y2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5k
CisKK2NsYXNzIElmVGhlbkVsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAg
ICBpZiBAcHJlZGljYXRlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUKKyAgICAgIEB0
aGVuQ2FzZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZWxzZQorICAgICAgQGVsc2VD
YXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xh
c3MgU2VxdWVuY2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBuZXdMaXN0
ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpdGVtID0gaXRl
bS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICBpZiBpdGVtLmlzX2E/IFNlcXVlbmNl
CisgICAgICAgIG5ld0xpc3QgKz0gaXRlbS5saXN0CisgICAgICBlbHNlCisgICAgICAgIG5ld0xp
c3QgPDwgaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2lu
LCBuZXdMaXN0KQorICBlbmQKK2VuZAorCisjCisjIG5vZGUuZGVtYWNyb2lmeShtYWNyb3MpCisj
IG5vZGUuc3Vic3RpdHV0ZShtYXBwaW5nKQorIworIyBkZW1hY3JvaWZ5KCkgY29uc3RydWN0cyBh
IG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBNYWNybworIyBub2Rlcywgd2hpbGUgc3Vi
c3RpdHV0ZSgpIHJlcGxhY2VzIFZhcmlhYmxlIG5vZGVzIHdpdGggdGhlIGdpdmVuCisjIG5vZGVz
IGluIHRoZSBtYXBwaW5nLgorIworCitjbGFzcyBOb2RlCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3Jv
cykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLmRlbWFj
cm9pZnkobWFjcm9zKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5n
KQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3Rp
dHV0ZShtYXBwaW5nKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyht
YXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQu
c3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgTWFj
cm8KKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBteU1hcHBpbmcgPSB7fQorICAgIG1h
cHBpbmcuZWFjaF9wYWlyIHsKKyAgICAgIHwga2V5LCB2YWx1ZSB8CisgICAgICB1bmxlc3MgQHZh
cmlhYmxlcy5pbmNsdWRlPyBrZXkKKyAgICAgICAgbXlNYXBwaW5nW2tleV0gPSB2YWx1ZQorICAg
ICAgZW5kCisgICAgfQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAg
Y2hpbGQuc3Vic3RpdHV0ZShteU1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBW
YXJpYWJsZQorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0K
KyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVu
ZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGlu
ZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQor
ICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYg
c3Vic3RpdHV0ZShjb25zdGFudHMpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbXlDb25zdGFudHMg
PSBjb25zdGFudHMuZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAg
aWYgaXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAgICAgbXlDb25zdGFudHNbaXRlbS52YXJpYWJs
ZV0gPSBpdGVtLnZhbHVlLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICBlbHNlCisgICAg
ICAgIG5ld0xpc3QgPDwgaXRlbS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZW5kCisg
ICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKKyAgCisg
IGRlZiByZW5hbWVMYWJlbHMoY29tbWVudCkKKyAgICBtYXBwaW5nID0ge30KKyAgICAKKyAgICBA
bGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IExvY2FsTGFi
ZWwKKyAgICAgICAgbWFwcGluZ1tpdGVtXSA9IExvY2FsTGFiZWwudW5pcXVlKGlmIGNvbW1lbnQg
dGhlbiBjb21tZW50ICsgIl8iIGVsc2UgIiIgZW5kICsgaXRlbS5jbGVhbk5hbWUpCisgICAgICBl
bmQKKyAgICB9CisgICAgCisgICAgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICBlbmQKKyAg
CisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBteU1hY3JvcyA9IG1hY3Jvcy5kdXAKKyAg
ICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3Jv
CisgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBpdGVtCisgICAgICBlbmQKKyAgICB9Cisg
ICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAg
aWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICAjIElnbm9yZS4KKyAgICAgIGVsc2lmIGl0ZW0u
aXNfYT8gTWFjcm9DYWxsCisgICAgICAgIG1hcHBpbmcgPSB7fQorICAgICAgICBteU15TWFjcm9z
ID0gbXlNYWNyb3MuZHVwCisgICAgICAgIHJhaXNlICJDb3VsZCBub3QgZmluZCBtYWNybyAje2l0
ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgbXlNYWNyb3NbaXRl
bS5uYW1lXQorICAgICAgICByYWlzZSAiQXJndW1lbnQgY291bnQgbWlzbWF0Y2ggZm9yIGNhbGwg
dG8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIGl0ZW0u
b3BlcmFuZHMuc2l6ZSA9PSBteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlcy5zaXplCisgICAg
ICAgIGl0ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgfCBpZHggfAorICAgICAg
ICAgIGlmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBWYXJpYWJsZSBhbmQgbXlNYWNyb3NbaXRl
bS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0
ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lk
eF0ubmFtZV0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJs
ZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2lmIGl0ZW0ub3BlcmFuZHNbaWR4XS5p
c19hPyBNYWNybworICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZh
cmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgICBtYXBw
aW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFy
aWFibGVzW2lkeF1dID0gbmlsCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFt
ZV0udmFyaWFibGVzW2lkeF1dID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgZW5kCisg
ICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCArPSBteU1hY3Jvc1tpdGVtLm5hbWVdLmJvZHkuc3Vi
c3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNyb3MpLnJlbmFtZUxhYmVscyhpdGVt
Lm5hbWUpLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtLmRlbWFjcm9p
ZnkobXlNYWNyb3MpCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmln
aW4sIG5ld0xpc3QpLnN1YnN0aXR1dGUoe30pCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5yZXNv
bHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0
IGhhcyBvZmZzZXQgdmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMKKyMgb2Zmc2V0cy4KKyMKKwor
Y2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgbWFw
Q2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlT2Zmc2V0cyhv
ZmZzZXRzLCBzaXplcykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldAor
ICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgb2Zmc2V0c1tzZWxm
XQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXRzW3NlbGZdKQorICAgIGVs
c2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mCisgIGRl
ZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBzaXplc1tzZWxmXQorICAg
ICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBzaXplc1tzZWxmXSkKKyAgICBlbHNlCisgICAg
ICBwdXRzICJDb3VsZCBub3QgZmluZCAje3NlbGYuaW5zcGVjdH0gaW4gI3tzaXplcy5rZXlzLmlu
c3BlY3R9IgorICAgICAgcHV0cyAic2l6ZXMgPSAje3NpemVzLmluc3BlY3R9IgorICAgICAgc2Vs
ZgorICAgIGVuZAorICBlbmQKK2VuZAorCisjCisjIG5vZGUuZm9sZAorIworIyBSZXNvbHZlIGNv
bnN0YW50IHJlZmVyZW5jZXMgYW5kIGNvbXB1dGUgYXJpdGhtZXRpYyBleHByZXNzaW9ucy4KKyMK
KworY2xhc3MgTm9kZQorICBkZWYgZm9sZAorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hp
bGQgfAorICAgICAgY2hpbGQuZm9sZAorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1t
ZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9
IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0
ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1t
ZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSArIEByaWdodC52YWx1ZSkKKyAgZW5k
CitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxl
ZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNz
IEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNf
YT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAt
IEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcworICBkZWYg
Zm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisg
ICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBz
ZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2Rl
T3JpZ2luLCBAbGVmdC52YWx1ZSAqIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3Mg
TmVnSW1tZWRpYXRlCisgIGRlZiBmb2xkCisgICAgQGNoaWxkID0gQGNoaWxkLmZvbGQKKyAgICBy
ZXR1cm4gc2VsZiB1bmxlc3MgQGNoaWxkLmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5u
ZXcoY29kZU9yaWdpbiwgLUBjaGlsZC52YWx1ZSkKKyAgZW5kCitlbmQKKworIworIyBub2RlLnJl
c29sdmVBZnRlclNldHRpbmdzKG9mZnNldHMsIHNpemVzKQorIworIyBDb21waWxlIGFzc2VtYmx5
IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2
ZShvZmZzZXRzLCBzaXplcykKKyAgICBkZW1hY3JvaWZ5KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZz
ZXRzLCBzaXplcykuZm9sZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3MyBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
IyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYg
c3VwcG9ydHM4Qml0T25YODYKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJy
MCIsICJ0MSIsICJhMSIsICJyMSIsICJ0MiIsICJ0MyIKKyAgICAgIHRydWUKKyAgICB3aGVuICJ0
NCIsICJjZnIiCisgICAgICBmYWxzZQorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVu
ICJ0MCIsICJhMCIsICJyMCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAg
ICAgICAiJWFsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWF4IgorICAgICAgd2hlbiA6
aW50CisgICAgICAgICIlZWF4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5k
CisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4g
OmJ5dGUKKyAgICAgICAgIiVkbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVkeCIKKyAg
ICAgIHdoZW4gOmludAorICAgICAgICAiJWVkeCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UK
KyAgICAgIGVuZAorICAgIHdoZW4gInQyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpi
eXRlCisgICAgICAgICIlY2wiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlY3giCisgICAg
ICB3aGVuIDppbnQKKyAgICAgICAgIiVlY3giCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisg
ICAgICBlbmQKKyAgICB3aGVuICJ0MyIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0
ZQorICAgICAgICAiJWJsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWJ4IgorICAgICAg
d2hlbiA6aW50CisgICAgICAgICIlZWJ4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAg
ICAgZW5kCisgICAgd2hlbiAidDQiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUK
KyAgICAgICAgIiVzaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc2kiCisgICAgICB3
aGVuIDppbnQKKyAgICAgICAgIiVlc2kiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAg
ICBlbmQKKyAgICB3aGVuICJjZnIiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUK
KyAgICAgICAgIiVkaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZGkiCisgICAgICB3
aGVuIDppbnQKKyAgICAgICAgIiVlZGkiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAg
ICBlbmQKKyAgICB3aGVuICJzcCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQor
ICAgICAgICAiJXNwbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVzcCIKKyAgICAgIHdo
ZW4gOmludAorICAgICAgICAiJWVzcCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAg
IGVuZAorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2Fs
bE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisK
K2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIHJhaXNlIHVu
bGVzcyBraW5kID09IDpkb3VibGUKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAiZmEw
IiwgImZyIgorICAgICAgIiV4bW0wIgorICAgIHdoZW4gImZ0MSIsICJmYTEiCisgICAgICAiJXht
bTEiCisgICAgd2hlbiAiZnQyIiwgImZhMiIKKyAgICAgICIleG1tMiIKKyAgICB3aGVuICJmdDMi
LCAiZmEzIgorICAgICAgIiV4bW0zIgorICAgIHdoZW4gImZ0NCIKKyAgICAgICIleG1tNCIKKyAg
ICB3aGVuICJmdDUiCisgICAgICAiJXhtbTUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBl
bmQKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5k
KGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiB4ODZPcGVyYW5k
KGtpbmQpCisgICAgIiQje3ZhbHVlfSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5k
KQorICAgICIje3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBkZWYgc3Vw
cG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChr
aW5kKQorICAgICIje29mZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9KSIKKyAg
ZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQp
fSIKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBzdXBwb3J0czhCaXRPblg4
NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7
b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0sICN7aW5kZXgueDg2T3BlcmFu
ZCg6aW50KX0sICN7c2NhbGV9KSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQp
CisgICAgIioje3g4Nm9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0
ZUFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAK
KyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCisK
KyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje2FkZHJlc3MudmFsdWV9IgorICBl
bmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2TGFiZWwKKyAgICBzYW5p
dGl6ZUxhYmVsTmFtZShuYW1lKQorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisg
ICAgeDg2TGFiZWwKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQorICBk
ZWYgeDg2TGFiZWwKKyAgICAiTF9vZmZsaW5lYXNtXyIrbmFtZVsxLi4tMV0KKyAgZW5kCisgIGRl
ZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgIHg4NkxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNz
IEluc3RydWN0aW9uCisgIGRlZiB4ODZPcGVyYW5kcygqa2luZHMpCisgICAgcmFpc2UgdW5sZXNz
IGtpbmRzLnNpemUgPT0gb3BlcmFuZHMuc2l6ZQorICAgIHJlc3VsdCA9IFtdCisgICAga2luZHMu
c2l6ZS50aW1lcyB7CisgICAgICB8IGlkeCB8CisgICAgICByZXN1bHQgPDwgb3BlcmFuZHNbaWR4
XS54ODZPcGVyYW5kKGtpbmRzW2lkeF0pCisgICAgfQorICAgIHJlc3VsdC5qb2luKCIsICIpCisg
IGVuZAorCisgIGRlZiB4ODZTdWZmaXgoa2luZCkKKyAgICBjYXNlIGtpbmQKKyAgICB3aGVuIDpi
eXRlCisgICAgICAiYiIKKyAgICB3aGVuIDpoYWxmCisgICAgICAidyIKKyAgICB3aGVuIDppbnQK
KyAgICAgICJsIgorICAgIHdoZW4gOmRvdWJsZQorICAgICAgInNkIgorICAgIGVsc2UKKyAgICAg
IHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJh
bmRzKG9wY29kZSwga2luZCwgbnVtT3BlcmFuZHMpCisgICAgaWYgbnVtT3BlcmFuZHMgPT0gMwor
ICAgICAgaWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJc
dCN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJd
Lng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNb
Ml0KKyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQor
ICAgICAgICAkYXNtLnB1dHMgIlx0bW92I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAg
ICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQp
fSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UK
KyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtp
bmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisg
IAorICBkZWYgaGFuZGxlWDg2T3Aob3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51
bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSkKKyAgZW5kCisgIAorICBkZWYg
aGFuZGxlWDg2U2hpZnQob3Bjb2RlLCBraW5kKQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IElt
bWVkaWF0ZSBvciBvcGVyYW5kc1swXSA9PSBSZWdpc3RlcklELmZvck5hbWUobmlsLCAidDIiKQor
ICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5
dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAk
YXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIK
KyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gJWNsLCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoa2luZCl9IgorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6aW50KX0sICVlY3giCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkRv
dWJsZUJyYW5jaChicmFuY2hPcGNvZGUsIG1vZGUpCisgICAgY2FzZSBtb2RlCisgICAgd2hlbiA6
bm9ybWFsCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdo
ZW4gOnJldmVyc2UKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisg
ICAgZWxzZQorICAgICAgcmFpc2UgbW9kZS5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRz
ICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgZW5kCisgIAor
ICBkZWYgaGFuZGxlWDg2SW50Q29tcGFyZShvcGNvZGVTdWZmaXgsIGtpbmQpCisgICAgaWYgb3Bl
cmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCBv
cGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBv
cGNvZGVTdWZmaXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgo
a2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzaWYgb3BlcmFu
ZHNbMV0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1sxXS52YWx1ZSA9PSAwIGFuZCBvcGVy
YW5kc1swXS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNv
ZGVTdWZmaXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2lu
ZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzZQorICAgICAgJGFz
bS5wdXRzICJcdGNtcCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
a2luZCl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBoYW5kbGVYODZJbnRCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhh
bmRsZVg4NkludENvbXBhcmUoYnJhbmNoT3Bjb2RlWzEuLi0xXSwga2luZCkKKyAgICAkYXNtLnB1
dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICBlbmQKKyAg
CisgIGRlZiBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kKQorICAgIGlmIG9wZXJhbmQu
c3VwcG9ydHM4Qml0T25YODYKKyAgICAgICRhc20ucHV0cyAiXHQje3NldE9wY29kZX0gI3tvcGVy
YW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgI3tvcGVy
YW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9IgorICAg
IGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50
KX0sICVlYXgiCisgICAgICAkYXNtLnB1dHMgIlx0I3tzZXRPcGNvZGV9ICVhbCIKKyAgICAgICRh
c20ucHV0cyAiXHRtb3Z6YmwgJWFsLCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7
b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgaGFuZGxlWDg2SW50Q29tcGFyZVNldChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2
SW50Q29tcGFyZShzZXRPcGNvZGVbMy4uLTFdLCBraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRP
cGNvZGUsIG9wZXJhbmRzWzJdKQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZUZXN0KGtpbmQp
CisgICAgdmFsdWUgPSBvcGVyYW5kc1swXQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdo
ZW4gMgorICAgICAgbWFzayA9IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLTEpCisgICAgd2hl
biAzCisgICAgICBtYXNrID0gb3BlcmFuZHNbMV0KKyAgICBlbHNlCisgICAgICByYWlzZSAiRXhw
ZWN0ZWQgMiBvciAzIG9wZXJhbmRzLCBidXQgZ290ICN7b3BlcmFuZHMuc2l6ZX0gYXQgI3tjb2Rl
T3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKyAgICAKKyAgICBpZiBtYXNrLmlzX2E/IEltbWVkaWF0
ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQorICAgICAgaWYgdmFsdWUuaXNfYT8gUmVnaXN0ZXJJRAor
ICAgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje3ZhbHVlLng4Nk9w
ZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAg
ICAgICAkYXNtLnB1dHMgIlx0Y21wI3t4ODZTdWZmaXgoa2luZCl9ICQwLCAje3ZhbHVlLng4Nk9w
ZXJhbmQoa2luZCl9IgorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHRl
c3Qje3g4NlN1ZmZpeChraW5kKX0gI3ttYXNrLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4
Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZCcmFu
Y2hUZXN0KGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAg
JGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzLmxhc3QueDg2TGFiZWx9Igor
ICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTZXRUZXN0KHNldE9wY29kZSwga2luZCkKKyAgICBo
YW5kbGVYODZUZXN0KGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHMu
bGFzdCkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3BCcmFuY2gob3Bjb2RlLCBicmFuY2hP
cGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5k
LCBvcGVyYW5kcy5zaXplIC0gMSkKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQK
KyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRh
cmdldCA9IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0Cisg
ICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQueDg2
TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTdWJCcmFuY2goYnJhbmNoT3Bjb2Rl
LCBraW5kKQorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gNCBhbmQgb3BlcmFuZHNbMV0gPT0gb3Bl
cmFuZHNbMl0KKyAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAg
ICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKCJzdWIje3g4NlN1ZmZpeChraW5kKX0iLCBr
aW5kLCBvcGVyYW5kcy5zaXplIC0gMSkKKyAgICBlbmQKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUK
KyAgICB3aGVuIDQKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMwor
ICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2Vs
Zi5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje2p1
bXBUYXJnZXQueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBsb3dlclg4NgorICAgICRhc20u
Y29tbWVudCBjb2RlT3JpZ2luU3RyaW5nCisgICAgY2FzZSBvcGNvZGUKKyAgICB3aGVuICJhZGRp
IiwgImFkZHAiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlz
X2E/IEltbWVkaWF0ZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVn
aXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJ
RAorICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCisgICAgICAgICAgdW5sZXNzIG9w
ZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAkYXNtLnB1dHMgIlx0bW92bCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRz
ICJcdGxlYWwgI3tvcGVyYW5kc1swXS52YWx1ZX0oI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpp
bnQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIGVuZAorICAg
ICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3Rl
cklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisg
ICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAg
ICRhc20ucHV0cyAiXHRsZWFsICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9
PSBvcGVyYW5kc1swXQorICAgICAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7eDg2T3BlcmFuZHMo
OmludCwgOmludCl9IgorICAgICAgICBlbmQKKyAgICAgIGVuZAorICAgIHdoZW4gImFuZGkiLCAi
YW5kcCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJhbmRsIiwgOmludCkKKyAgICB3aGVuICJsc2hpZnRp
IgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNhbGwiLCA6aW50KQorICAgIHdoZW4gIm11bGkiCisg
ICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0
ZQorICAgICAgICAkYXNtLnB1dHMgIlx0aW11bGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50LCA6
aW50KX0iCisgICAgICBlbHNlCisgICAgICAgICMgRklYTUU6IGNvdWxkIGRvIHNvbWUgcGVlcGhv
bGUgaW4gY2FzZSB0aGUgbGVmdCBvcGVyYW5kIGlzIGltbWVkaWF0ZSBhbmQgaXQncworICAgICAg
ICAjIGEgcG93ZXIgb2YgdHdvLgorICAgICAgICBoYW5kbGVYODZPcCgiaW11bGwiLCA6aW50KQor
ICAgICAgZW5kCisgICAgd2hlbiAibmVnaSIKKyAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7eDg2
T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm5vdGkiCisgICAgICAkYXNtLnB1dHMgIlx0bm90
bCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgaGFu
ZGxlWDg2T3AoIm9ybCIsIDppbnQpCisgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4
NlNoaWZ0KCJzYXJsIiwgOmludCkKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4
NlNoaWZ0KCJzaHJsIiwgOmludCkKKyAgICB3aGVuICJzdWJpIiwgInN1YnAiCisgICAgICBpZiBv
cGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAg
ICRhc20ucHV0cyAiXHRuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAgICRhc20ucHV0cyAiXHRhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7
b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIGhhbmRs
ZVg4Nk9wKCJzdWJsIiwgOmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gInhvcmkiLCAieG9ycCIK
KyAgICAgIGhhbmRsZVg4Nk9wKCJ4b3JsIiwgOmludCkKKyAgICB3aGVuICJsb2FkaSIsICJzdG9y
ZWkiLCAibG9hZHAiLCAic3RvcmVwIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZPcGVy
YW5kcyg6aW50LCA6aW50KX0iCisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNtLnB1dHMgIlx0
bW92emJsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImxvYWRoIgorICAgICAgJGFzbS5wdXRzICJcdG1v
dnp3bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJzdG9yZWIiCisgICAgICAkYXNtLnB1dHMgIlx0bW92
YiAje3g4Nk9wZXJhbmRzKDpieXRlLCA6Ynl0ZSl9IgorICAgIHdoZW4gImxvYWRkIiwgIm1vdmVk
IiwgInN0b3JlZCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAje3g4Nk9wZXJhbmRzKDpkb3Vi
bGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJhZGRkIgorICAgICAgJGFzbS5wdXRzICJcdGFkZHNk
ICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImRpdmQiCisgICAg
ICAkYXNtLnB1dHMgIlx0ZGl2c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisg
ICAgd2hlbiAic3ViZCIKKyAgICAgICRhc20ucHV0cyAiXHRzdWJzZCAje3g4Nk9wZXJhbmRzKDpk
b3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJtdWxkIgorICAgICAgJGFzbS5wdXRzICJcdG11
bHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInNxcnRkIgor
ICAgICAgJGFzbS5wdXRzICJcdHNxcnRzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImNpMmQi
CisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpp
bnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJiZGVx
IgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRlcSIpCisgICAgICAk
YXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdGpw
ICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS54ODZMYWJlbH0i
CisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwg
b3BlcmFuZHNbMl0pLng4NkxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQor
ICAgIHdoZW4gImJkbmVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqbmUiLCA6bm9y
bWFsKQorICAgIHdoZW4gImJkZ3QiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphIiwg
Om5vcm1hbCkKKyAgICB3aGVuICJiZGd0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2go
ImphZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRsdCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJy
YW5jaCgiamEiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGx0ZXEiCisgICAgICBoYW5kbGVYODZE
b3VibGVCcmFuY2goImphZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkZXF1biIKKyAgICAgIGhh
bmRsZVg4NkRvdWJsZUJyYW5jaCgiamUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbmVxdW4iCisg
ICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgIGlz
RXF1YWwgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICAkYXNtLnB1dHMgIlx0
dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7TGFiZWxSZWZl
cmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS54ODZMYWJlbH0iCisgICAgICAkYXNt
LnB1dHMgIlx0amUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNFcXVhbCkueDg2
TGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAgICAkYXNtLnB1dHMg
Ilx0am1wICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAgaXNFcXVhbC5sb3dlcigiWDg2
IikKKyAgICB3aGVuICJiZGd0dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwg
OnJldmVyc2UpCisgICAgd2hlbiAiYmRndGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFu
Y2goImpiZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHR1biIKKyAgICAgIGhhbmRsZVg4NkRv
dWJsZUJyYW5jaCgiamIiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgaGFu
ZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJ0ZDJpIgorICAg
ICAgJGFzbS5wdXRzICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJc
dGNtcGwgJDB4ODAwMDAwMDAgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
ICRhc20ucHV0cyAiXHRqZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJ0ZDJp
IgorICAgICAgJGFzbS5wdXRzICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJj
ZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFz
bS5wdXRzICJcdHRlc3RsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tvcGVyYW5k
c1syXS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0
cyAiXHRqcCAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqbmUg
I3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgd2hlbiAibW92ZHoiCisgICAgICAkYXNtLnB1
dHMgIlx0eG9ycGQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJwb3AiCisgICAgICAkYXNtLnB1
dHMgIlx0cG9wICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicHVz
aCIKKyAgICAgICRhc20ucHV0cyAiXHRwdXNoICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6eGkycCIKKyAgICAgIGlmIEltbWVkaWF0
ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXSBhbmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0
ZXJJRAorICAgICAgICAkYXNtLnB1dHMgIlx0eG9ybCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzaWYgb3Bl
cmFuZHNbMF0gIT0gb3BlcmFuZHNbMV0KKyAgICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZP
cGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgICBlbmQKKyAgICB3aGVuICJub3AiCisgICAgICAk
YXNtLnB1dHMgIlx0bm9wIgorICAgIHdoZW4gImJpZXEiLCAiYnBlcSIKKyAgICAgIGhhbmRsZVg4
NkludEJyYW5jaCgiamUiLCA6aW50KQorICAgIHdoZW4gImJpbmVxIiwgImJwbmVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6aW50KQorICAgIHdoZW4gImJpYSIsICJicGEiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphIiwgOmludCkKKyAgICB3aGVuICJiaWFlcSIsICJi
cGFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmludCkKKyAgICB3aGVuICJi
aWIiLCAiYnBiIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDppbnQpCisgICAgd2hl
biAiYmliZXEiLCAiYnBiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDppbnQp
CisgICAgd2hlbiAiYmlndCIsICJicGd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIs
IDppbnQpCisgICAgd2hlbiAiYmlndGVxIiwgImJwZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamdlIiwgOmludCkKKyAgICB3aGVuICJiaWx0IiwgImJwbHQiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImpsIiwgOmludCkKKyAgICB3aGVuICJiaWx0ZXEiLCAiYnBsdGVxIgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbGUiLCA6aW50KQorICAgIHdoZW4gImJiZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJuZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDpieXRlKQorICAgIHdoZW4gImJiYSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmFlcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDpieXRlKQorICAgIHdoZW4gImJiYmVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0IgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDpieXRlKQorICAgIHdoZW4gImJiZ3RlcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdCIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0ZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpsdGVxIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRpbyIsICJi
dHBvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6aW50KQorICAgIHdoZW4gImJ0
aXMiLCAiYnRwcyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmludCkKKyAgICB3
aGVuICJidGl6IiwgImJ0cHoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDppbnQp
CisgICAgd2hlbiAiYnRpbnoiLCAiYnRwbnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
bnoiLCA6aW50KQorICAgIHdoZW4gImJ0Ym8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
byIsIDpieXRlKQorICAgIHdoZW4gImJ0YnMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
cyIsIDpieXRlKQorICAgIHdoZW4gImJ0YnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
eiIsIDpieXRlKQorICAgIHdoZW4gImJ0Ym56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgi
am56IiwgOmJ5dGUpCisgICAgd2hlbiAiam1wIgorICAgICAgJGFzbS5wdXRzICJcdGptcCAje29w
ZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiYWRkaW8iLCAiYmFk
ZHBvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam8iLCA6aW50KQorICAgIHdo
ZW4gImJhZGRpcyIsICJiYWRkcHMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJq
cyIsIDppbnQpCisgICAgd2hlbiAiYmFkZGl6IiwgImJhZGRweiIKKyAgICAgIGhhbmRsZVg4Nk9w
QnJhbmNoKCJhZGRsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJiYWRkaW56IiwgImJhZGRwbnoi
CisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4g
ImJzdWJpbyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam8iLCA6aW50KQorICAgIHdoZW4g
ImJzdWJpcyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianMiLCA6aW50KQorICAgIHdoZW4g
ImJzdWJpeiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianoiLCA6aW50KQorICAgIHdoZW4g
ImJzdWJpbnoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpueiIsIDppbnQpCisgICAgd2hl
biAiYm11bGlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpvIiwgOmludCkK
KyAgICB3aGVuICJibXVsaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAianMi
LCA6aW50KQorICAgIHdoZW4gImJtdWxpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVs
bCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJh
bmNoKCJpbXVsbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJvcmlvIgorICAgICAgaGFuZGxl
WDg2T3BCcmFuY2goIm9ybCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXMiCisgICAgICBo
YW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJib3JpeiIKKyAg
ICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJvcmlu
eiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAiam56IiwgOmludCkKKyAgICB3aGVu
ICJicmVhayIKKyAgICAgICRhc20ucHV0cyAiXHRpbnQgJDMiCisgICAgd2hlbiAiY2FsbCIKKyAg
ICAgICRhc20ucHV0cyAiXHRjYWxsICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9
IgorICAgIHdoZW4gInJldCIKKyAgICAgICRhc20ucHV0cyAiXHRyZXQiCisgICAgd2hlbiAiY2ll
cSIsICJjcGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQpCisg
ICAgd2hlbiAiY2luZXEiLCAiY3BuZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJz
ZXRuZSIsIDppbnQpCisgICAgd2hlbiAiY2lhIiwgImNwYSIKKyAgICAgIGhhbmRsZVg4NkludENv
bXBhcmVTZXQoInNldGEiLCA6aW50KQorICAgIHdoZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAg
aGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YWUiLCA6aW50KQorICAgIHdoZW4gImNpYiIsICJj
cGIiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiIiwgOmludCkKKyAgICB3aGVu
ICJjaWJlcSIsICJjcGJlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGJlIiwg
OmludCkKKyAgICB3aGVuICJjaWd0IiwgImNwZ3QiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJl
U2V0KCJzZXRnIiwgOmludCkKKyAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAgaGFu
ZGxlWDg2SW50Q29tcGFyZVNldCgic2V0Z2UiLCA6aW50KQorICAgIHdoZW4gImNpbHQiLCAiY3Bs
dCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGwiLCA6aW50KQorICAgIHdoZW4g
ImNpbHRlcSIsICJjcGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIs
IDppbnQpCisgICAgd2hlbiAidGlvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDpp
bnQpCisgICAgd2hlbiAidGlzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDppbnQp
CisgICAgd2hlbiAidGl6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDppbnQpCisg
ICAgd2hlbiAidGlueiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmludCkKKyAg
ICB3aGVuICJ0Ym8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAg
d2hlbiAidGJzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAgIHdo
ZW4gInRieiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6Ynl0ZSkKKyAgICB3aGVu
ICJ0Ym56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6Ynl0ZSkKKyAgICB3aGVu
ICJwZWVrIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3tvcGVyYW5kc1swXS52YWx1ZSAqIDR9
KCVlc3ApLCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInBva2Ui
CisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9
LCAje29wZXJhbmRzWzFdLnZhbHVlICogNH0oJWVzcCkiCisgICAgd2hlbiAiY2RxaSIKKyAgICAg
ICRhc20ucHV0cyAiXHRjZHEiCisgICAgd2hlbiAiaWRpdmkiCisgICAgICAkYXNtLnB1dHMgIlx0
aWRpdmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJmaWkyZCIK
KyAgICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0s
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0
bW92ZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20u
cHV0cyAiXHRwc2xscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHBvciAleG1tNywg
I3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJmZDJpaSIKKyAg
ICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0s
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92
c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNt
LnB1dHMgIlx0cHNybHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAleG1t
NywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICByYWlz
ZSAiQmFkIG9wY29kZTogI3tvcGNvZGV9IgorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZF9oCisjZGVmaW5lIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAor
CituYW1lc3BhY2UgSlNDIHsKKworZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZv
ckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDEwNjA0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIENvbW1vblNsb3dQYXRoc19oCiAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgi
CiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKIApA
QCAtNDEsNiArNDIsMzggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBDb21tb25TbG93
UGF0aHMgewogCitBTFdBWVNfSU5MSU5FIEV4ZWNTdGF0ZSogYXJpdHlDaGVja0ZvcihFeGVjU3Rh
dGUqIGV4ZWMsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQpCit7CisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5j
YWxsZWUoKSk7CisgICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOworICAgIENv
ZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRl
ZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9
IGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CisKKyAgICAvLyBUaGlzIGVuc3Vy
ZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3Vt
ZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KKyAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3Jvdyhl
eGVjLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29k
ZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCisgICAgICAgIHJldHVybiAwOworCisgICAg
QVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpOworCisgICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1l
IGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVm
aW5lZC4KKyAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAt
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOworICAgIFJlZ2lzdGVyKiBzcmMgPSBleGVjLT5y
ZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlciogZHN0ID0gZXhlYy0+cmVnaXN0ZXJzKCkgKyBkZWx0
YTsKKworICAgIGludCBpOworICAgIGludCBlbmQgPSAtRXhlY1N0YXRlOjpvZmZzZXRGb3IoYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1p
KQorICAgICAgICBkc3RbaV0gPSBzcmNbaV07CisKKyAgICBlbmQgLT0gZGVsdGE7CisgICAgZm9y
ICggOyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOworCisg
ICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gRXhlY1N0YXRlOjpjcmVhdGUoZHN0KTsKKyAgICBBU1NF
UlQoKHZvaWQqKW5ld0V4ZWMgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7CisgICAgcmV0dXJuIG5l
d0V4ZWM7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBvcEluc3RhbmNlT2ZTbG93KEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3RvKQog
ewogICAgIEFTU0VSVCghdmFsdWUuaXNDZWxsKCkgfHwgIWJhc2VWYWwuaXNDZWxsKCkgfHwgIXBy
b3RvLmlzQ2VsbCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNp
bmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2lu
Y2x1ZGUgIkRGR0RyaXZlci5oIgorI2luY2x1ZGUgIkV4ZWN1dGlvbkhhcm5lc3MuaCIKICNpbmNs
dWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVREcml2ZXIuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIK
QEAgLTg0LDcgKzg1LDcgQEAgSW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6OmludHJpbnNpYygp
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRpYyB2b2lkIGpldHRpc29uQ29kZUJsb2NrKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPFQ+JiBjb2RlQmxvY2spCiB7Ci0gICAgQVNT
RVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAg
ICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgp
KSk7CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgT3duUHRyPFQ+
IGNvZGVCbG9ja1RvSmV0dGlzb24gPSBjb2RlQmxvY2sucmVsZWFzZSgpOwogICAgIGNvZGVCbG9j
ayA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8VD4oY29kZUJsb2NrVG9KZXR0aXNvbi0+cmVsZWFzZUFs
dGVybmF0aXZlKCkpOwpAQCAtMTY3LDkgKzE2OCwzMCBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFi
bGU6OmNvbXBpbGVPcHRpbWl6CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEV2YWxFeGVj
dXRhYmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29s
IHJlc3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fZXZhbENvZGVC
bG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKworaW5saW5lIGNvbnN0IGNoYXIqIHNh
bXBsaW5nRGVzY3JpcHRpb24oSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworICAgIHN3aXRj
aCAoaml0VHlwZSkgeworICAgIGNhc2UgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAg
ICAgcmV0dXJuICJJbnRlcnByZXRlciBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBjYXNlIEpJ
VENvZGU6OkJhc2VsaW5lSklUOgorICAgICAgICByZXR1cm4gIkJhc2VsaW5lIENvbXBpbGF0aW9u
IChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6REZHSklUOgorICAgICAgICByZXR1cm4gIkRG
RyBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiBKU09iamVjdCogRXZh
bEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5O
b2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNh
bXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVK
SVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChU
T1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2Ny
aXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFS
QU0oaml0VHlwZSk7CkBAIC0yMTAsNyArMjMyLDcgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxl
Ojpjb21waWxlSW50ZXJuYQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRD
b21waWxlSWZBcHByb3ByaWF0ZSgqZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENv
ZGVGb3JDYWxsLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVjdXRpb24oKmdsb2Jh
bERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAgICAg
ICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTI5NSw5ICszMTcsMTUgQEAgSlNPYmplY3QqIFBy
b2dyYW1FeGVjdXRhYmxlOjpjb21waWxlT3B0aQogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9p
ZCBQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEp
Cit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRh
LCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRp
ZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEpTT2Jq
ZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywg
U2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUp
CiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2Rl
OjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29t
cGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNh
bXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAg
IFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTMzNiw3ICszNjQsNyBAQCBKU09iamVjdCogUHJv
Z3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAg
ICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2Rl
QmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4
ZWN1dGlvbigqZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxs
LCBqaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNDEyLDcgKzQ0MCw3
IEBAIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmIKICAgICB3aGlsZSAo
cmVzdWx0LT5hbHRlcm5hdGl2ZSgpKQogICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxGdW5j
dGlvbkNvZGVCbG9jayo+KHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgQVNTRVJUKHJlc3Vs
dCk7Ci0gICAgQVNTRVJUKHJlc3VsdC0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5l
SklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRU
eXBlKCkpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MzgsNiArNDY2LDE4IEBAIEpT
T2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVPcHQKICAgICByZXR1cm4gZXJyb3I7
CiB9CiAKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rp
b25JZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2Rl
Rm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBK
SVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1
bHQpOworfQorCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVj
dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21w
aWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0
eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCiBGdW5jdGlvbkNvZGVCbG9jayogRnVu
Y3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tXaXRoQnl0ZWNvZGVGb3IoQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKQogewogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNl
bGluZUNvZGVCbG9ja0ZvcihraW5kKTsKQEAgLTQ4Miw3ICs1MjIsNyBAQCBQYXNzT3duUHRyPEZ1
bmN0aW9uQ29kZUJsb2NrPiBGdW5jdGlvbkV4CiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9k
ZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1w
bGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklU
ID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9U
QUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlw
dGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFN
KGV4ZWMpOwpAQCAtNTA0LDcgKzU0NCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6
OmNvbXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDYWxsLT5zaGFy
ZWRTeW1ib2xUYWJsZSgpOwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVG
dW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNh
bGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9z
eW1ib2xUYWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRp
b24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNh
bGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlw
ZSwgQ29kZUZvckNhbGwpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC01MjQsNyAr
NTY0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogCiBKU09i
amVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwoRXhl
Y1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJ
VFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRU
eXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RB
TCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVO
QUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtNTQ2LDcgKzU4Niw3IEBA
IEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBtX3N5bWJvbFRh
YmxlID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAKICNp
ZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShl
eGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JD
b25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRh
YmxlLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVj
LT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25z
dHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxl
LCBqaXRUeXBlLCBDb2RlRm9yQ29uc3RydWN0KSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2
aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEV4ZWN1dGFibGVf
aAogCiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25L
aW5kLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgi
CiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTM5LDEyICs0MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBjbGFzcyBEZWJ1Z2dlcjsKICAgICBjbGFzcyBFdmFsQ29kZUJsb2NrOwogICAgIGNsYXNz
IEZ1bmN0aW9uQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwogCiAg
ICAgc3RydWN0IEV4Y2VwdGlvbkluZm87CiAgICAgCi0gICAgZW51bSBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKICAgICBlbnVtIENvbXBp
bGF0aW9uS2luZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21waWxhdGlvbiB9Owog
CiAgICAgaW5saW5lIGJvb2wgaXNDYWxsKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAg
LTMxOSw2ICszMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgRXZh
bEV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVm
IFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtMzM4LDYgKzM0MCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0
aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlKEpTR2xv
YmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgRXZhbENvZGVCbG9jayYgZ2VuZXJhdGVkQnl0
ZWNvZGUoKQpAQCAtMzg0LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAg
ICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAg
ICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC00MTEsNiArNDE1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZv
aWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGpp
dENvbXBpbGUoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBQcm9ncmFtQ29kZUJs
b2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC00NTMsNiArNDU4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
YWJsZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlw
dEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNTA4LDYgKzUxNCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVk
Q29kZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNh
bGwoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9y
Q2FsbCgpIGNvbnN0CkBAIC01MzUsNiArNTQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9y
Q29uc3RydWN0KEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDb25z
dHJ1Y3QoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVk
Rm9yQ29uc3RydWN0KCkgY29uc3QKQEAgLTU4Miw2ICs1OTAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICAgICAgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KGdsb2Jh
bERhdGEpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lk
IGppdENvbXBpbGVGb3IoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JD
YWxsKSB7CisgICAgICAgICAgICAgICAgaml0Q29tcGlsZUZvckNhbGwoZ2xvYmFsRGF0YSk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJU
KGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgICAgICBqaXRDb21waWxlRm9yQ29u
c3RydWN0KGdsb2JhbERhdGEpOworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAg
IGJvb2wgaXNHZW5lcmF0ZWRGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhh
cm5lc3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEV4ZWN1dGlvbkhhcm5lc3NfaAor
I2RlZmluZSBFeGVjdXRpb25IYXJuZXNzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgor
CisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkxM
SW50RW50cnlwb2ludHMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1l
IENvZGVCbG9ja1R5cGU+CitpbmxpbmUgYm9vbCBwcmVwYXJlRm9yRXhlY3V0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENv
ZGUmIGppdENvZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyNpZiBFTkFCTEUoTExJ
TlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAgICAg
IC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAgICAgICBMTElu
dDo6Z2V0RW50cnlwb2ludChnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUpOwor
ICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExM
SU5UKQorICAgIHJldHVybiBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBjb2Rl
QmxvY2ssIGppdENvZGUsIGppdFR5cGUpOworfQorCitpbmxpbmUgYm9vbCBwcmVwYXJlRnVuY3Rp
b25Gb3JFeGVjdXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8RnVuY3Rpb25D
b2RlQmxvY2s+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRh
YmxlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2Rl
KGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVy
cHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RnVuY3Rpb25FbnRyeXBvaW50KGdsb2JhbERhdGEs
IGtpbmQsIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIGNvZGVCbG9j
ay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShraW5kKTsKKyNlbmRp
ZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9w
cmlhdGUoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hl
Y2ssIHN5bWJvbFRhYmxlLCBqaXRUeXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8gRXhlY3V0aW9uSGFybmVzc19oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCShyZXZp
c2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJy
YXkgPSBhZG9wdEFycmF5UHRyKG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bcmVnaXN0ZXJBcnJh
eVNpemVdKTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMgPSByZWdp
c3RlckFycmF5LmdldCgpICsgcmVnaXN0ZXJPZmZzZXQ7Ci0KKyAgICAgICAgCiAgICAgICAgIC8v
IENvcHkgYWxsIGFyZ3VtZW50cyB0aGF0IGNhbiBiZSBjYXB0dXJlZCBieSBuYW1lIG9yIGJ5IHRo
ZSBhcmd1bWVudHMgb2JqZWN0LgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbnVtQ2Fw
dHVyZWRBcmdzOyArK2kpIHsKICAgICAgICAgICAgIGludCBpbmRleCA9IENhbGxGcmFtZTo6YXJn
dW1lbnRPZmZzZXQoaSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgSlNBcnJheTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAKICAgICBzdHJ1Y3QgU3BhcnNlQXJyYXlFbnRyeSA6IHB1YmxpYyBXcml0ZUJhcnJpZXI8VW5r
bm93bj4gewogICAgICAgICB0eXBlZGVmIFdyaXRlQmFycmllcjxVbmtub3duPiBCYXNlOwpAQCAt
MTIyLDYgKzEyMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBKU0Fy
cmF5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgV2Fsa2VyOwogCiAgICAg
cHJvdGVjdGVkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJl
dmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiwxMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKLSAgICBjbGFzcyBTdHJ1Y3R1cmU7CisgICAgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAg
ICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKKyAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBl
bnVtIEVudW1lcmF0aW9uTW9kZSB7CiAgICAgICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMs
CkBAIC0xNjQsNiArMTY1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29s
IGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElk
ZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBj
b25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX3N0cnVjdHVyZTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNs
YXNzIEpTQWN0aXZhdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBj
bGFzcyBTb3VyY2VDb2RlOwogICAgIG5hbWVzcGFjZSBERkcgewpAQCAtMTQwLDYgKzE0MSw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2Vs
bCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRp
YyBKU1ZhbHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVu
dGlmaWVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsOCBA
QCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgLCBrZXl3b3Jk
cyhhZG9wdFB0cihuZXcgS2V5d29yZHModGhpcykpKQogICAgICwgaW50ZXJwcmV0ZXIoMCkKICAg
ICAsIGhlYXAodGhpcywgaGVhcFNpemUpCisgICAgLCBqc0FycmF5Q2xhc3NJbmZvKCZKU0FycmF5
OjpzX2luZm8pCisgICAgLCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvKCZKU0ZpbmFsT2JqZWN0Ojpz
X2luZm8pCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLCBzaXplT2ZMYXN0U2NyYXRjaEJ1ZmZl
cigwKQogI2VuZGlmCkBAIC0yMTYsNyArMjE4LDcgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERh
dGEoR2xvYmFsRGF0YVR5cAogICAgIGppdFN0dWJzID0gYWRvcHRQdHIobmV3IEpJVFRodW5rcyh0
aGlzKSk7CiAjZW5kaWYKIAotICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKHRoaXMtPmNhblVz
ZUpJVCgpKTsKKyAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSgmbGxpbnREYXRhLCB0aGlzLT5j
YW5Vc2VKSVQoKSk7CiAKICAgICBoZWFwLm5vdGlmeUlzU2FmZVRvQ29sbGVjdCgpOwogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlz
aW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTYgQEAKICNkZWZpbmUgSlNHbG9iYWxE
YXRhX2gKIAogI2luY2x1ZGUgIkNhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaCIKLSNpbmNs
dWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2VDYWNoZS5oIgogI2luY2x1
ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCi0jaW5jbHVkZSAi
U3Ryb25nLmgiCisjaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIK
ICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAi
TnVtZXJpY1N0cmluZ3MuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKKyNpbmNsdWRlICJT
dHJvbmcuaCIKICNpbmNsdWRlICJUZXJtaW5hdG9yLmgiCiAjaW5jbHVkZSAiVGltZW91dENoZWNr
ZXIuaCIKICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCkBAIC02NSw2ICs2Niw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0Owog
ICAgIGNsYXNzIEtleXdvcmRzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFBhcnNlckFyZW5hOwogICAgIGNs
YXNzIFJlZ0V4cENhY2hlOwpAQCAtMjQxLDYgKzI0MywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgSGVhcCBoZWFwOwogCiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uOworCisgICAgICAg
IGNvbnN0IENsYXNzSW5mbyogY29uc3QganNBcnJheUNsYXNzSW5mbzsKKyAgICAgICAgY29uc3Qg
Q2xhc3NJbmZvKiBjb25zdCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOworCisgICAgICAgIExMSW50
OjpEYXRhIGxsaW50RGF0YTsKKwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFJldHVybkFkZHJl
c3NQdHIgZXhjZXB0aW9uTG9jYXRpb247CiAgICAgICAgIEpTVmFsdWUgaG9zdENhbGxSZXR1cm5W
YWx1ZTsKQEAgLTM0Niw2ICszNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICN1bmRlZiByZWdpc3Rl
clR5cGVkQXJyYXlGdW5jdGlvbgogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTR2xvYmFsRGF0YShH
bG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CiAgICAgICAgIHN0YXRp
YyBKU0dsb2JhbERhdGEqJiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAgICAgIHZvaWQg
Y3JlYXRlTmF0aXZlVGh1bmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQs
NiArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsK
ICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgR2xvYmFsQ29kZUJsb2NrOworICAg
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0
cnVjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgUmVnRXhwQ29u
c3RydWN0b3I7CkBAIC0zMzUsNiArMzM2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8q
LCBpbnQgY291bnQpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBGb2xkIHJlc2V0
IGludG8gaW5pdC4KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0KEpTT2JqZWN0
KiB0aGlzVmFsdWUpOwogICAgICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTA2
MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBHZXR0
ZXJTZXR0ZXI7CiAgICAgY2xhc3MgSGFzaEVudHJ5OwogICAgIGNsYXNzIEludGVybmFsRnVuY3Rp
b247CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE1hcmtlZEJs
b2NrOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5h
bWVBcnJheTsKQEAgLTI2OSw2ICsyNzAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNP
YmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0
b3JhZ2UpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIE5vYm9keSBzaG91bGQgZXZlciBhc2sg
YW55IG9mIHRoZXNlIHF1ZXN0aW9ucyBvbiBzb21ldGhpbmcgYWxyZWFkeSBrbm93biB0byBiZSBh
IEpTT2JqZWN0LgogICAgICAgICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyOwogICAg
ICAgICB1c2luZyBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyOwpAQCAtMzgxLDYgKzM4NCw4IEBAIENP
TVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgc3RhdGljIHZv
aWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0Zp
bmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CiAgICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVT
dG9yYWdlKQogICAgICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAxMDYwNDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBJZGVudGlmaWVyOwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IgOiBwdWJs
aWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTk2LDYgKzk3LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVy
dHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7CiAKICAgICAgICAgV3Jp
dGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNTdHJpbmc7CisgICAg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJp
bmcoSlNHbG9iYWxEYXRhKik7CiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRl
Kik7CkBAIC0yNDAsNiArMjQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAog
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNv
bnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2U4KExDaGFyKikgY29uc3Q7CiAg
ICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hhciopIGNvbnN0OwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNpb24gMTA2MDQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQgPSAxOyAvLyBXZWJDb3JlIHVzZXMgTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCB0byBtYWtlIGRvY3VtZW50LmFsbCB1bmRldGVjdGFibGUuCiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDEgPDwgMTsKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgT3ZlcnJpZGVzSGFzSW5zdGFuY2UgPSAxIDw8IDI7CkBAIC04Nyw2ICs4OSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9v
bCBpc1NldE9uRmxhZ3MxKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPD0gKDEg
PDwgNykpOyByZXR1cm4gbV9mbGFncyAmIGZsYWc7IH0KICAgICAgICAgYm9vbCBpc1NldE9uRmxh
Z3MyKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1
cm4gbV9mbGFnczIgJiAoZmxhZyA+PiA4KTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiwxMCAr
MTE2LDkgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoRQogICAgIHJl
dHVybiBKU05vdEFuT2JqZWN0OjpjcmVhdGUoZXhlYyk7CiB9CiAKLSNpZm5kZWYgTkRFQlVHCiBj
aGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiB7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBz
aXplID0gNjQ7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0gMTI4OwogICAgIHN0YXRp
YyBjaGFyIGRlc2NyaXB0aW9uW3NpemVdOwogCiAgICAgaWYgKCEqdGhpcykKQEAgLTEyOCwxNCAr
MTI3LDE0IEBAIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKICAgICAgICAgc25wcmludGYo
ZGVzY3JpcHRpb24sIHNpemUsICJJbnQzMjogJWQiLCBhc0ludDMyKCkpOwogICAgIGVsc2UgaWYg
KGlzRG91YmxlKCkpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzbnByaW50ZihkZXNj
cmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlbHgiLCBhc0RvdWJsZSgpLCByZWludGVycHJl
dERvdWJsZVRvSW50cHRyKGFzRG91YmxlKCkpKTsKKyAgICAgICAgc25wcmludGYoZGVzY3JpcHRp
b24sIHNpemUsICJEb3VibGU6ICVseCwgJWxmIiwgcmVpbnRlcnByZXREb3VibGVUb0ludHB0cihh
c0RvdWJsZSgpKSwgYXNEb3VibGUoKSk7CiAjZWxzZQogICAgICAgICB1bmlvbiB7CiAgICAgICAg
ICAgICBkb3VibGUgYXNEb3VibGU7CiAgICAgICAgICAgICB1aW50MzJfdCBhc1R3b0ludDMyc1sy
XTsKICAgICAgICAgfSB1OwogICAgICAgICB1LmFzRG91YmxlID0gYXNEb3VibGUoKTsKLSAgICAg
ICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVsZiwgJTA4eDolMDh4Iiwg
YXNEb3VibGUoKSwgdS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSk7CisgICAgICAg
IHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlMDh4OiUwOHgsICVsZiIsIHUu
YXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0sIGFzRG91YmxlKCkpOwogI2VuZGlmCiAg
ICAgfSBlbHNlIGlmIChpc0NlbGwoKSkKICAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNp
emUsICJDZWxsOiAlcCIsIGFzQ2VsbCgpKTsKQEAgLTE1Miw3ICsxNTEsNiBAQCBjaGFyKiBKU1Zh
bHVlOjpkZXNjcmlwdGlvbigpCiAKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9Ci0jZW5kaWYK
IAogLy8gVGhpcyBpbiB0aGUgVG9JbnQzMiBvcGVyYXRpb24gaXMgZGVmaW5lZCBpbiBzZWN0aW9u
IDkuNSBvZiB0aGUgRUNNQS0yNjIgc3BlYy4KIC8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBp
cyBpZGVudGljYWwgdG8gVG9VSW50MzIgb3RoZXIgdGhhbiB0byBpbnRlcnByZXRhdGlvbgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2aXNpb24gMTA2MDQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMzIsOSArMjMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTQ2VsbCog
YXNDZWxsKCkgY29uc3Q7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZENh
bGxlZSgpOwogCi0jaWZuZGVmIE5ERUJVRwogICAgICAgICBjaGFyKiBkZXNjcmlwdGlvbigpOwot
I2VuZGlmCiAKICAgICBwcml2YXRlOgogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gSlNWYWx1
ZShXcml0ZUJhcnJpZXJCYXNlPFQ+KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtMzgsMTAgKzM4LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogCiAgICAgY2xhc3MgSlNW
YXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgZnJpZW5k
IGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24g
MTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDEwIEBAIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZv
ckNvbnN0cnVjdElubGkKIAogdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7CiAKK2ludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2ludDMyX3QgZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9ySklUU29vbjsKKwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVG
b3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JP
cHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
RG9udE9wdGltaXplQW55dGltZVNvb247CkBAIC0xMzcsNiArMTQxLDEwIEBAIHZvaWQgaW5pdGlh
bGl6ZU9wdGlvbnMoKQogICAgIAogICAgIFNFVChtYXhpbXVtSW5saW5pbmdEZXB0aCwgNSk7CiAK
KyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXAsICAgICAtMTAw
KTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uLCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CisgICAgU0VUKGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvckpJVFNvb24sICAgICAgICAgICAgLTEwMCk7CisKICAgICBTRVQoZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCwgICAgIC0xMDAwKTsKICAgICBT
RVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAsIC01MDAw
KTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNv
b24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKQEAgLTE4NSw2ICsxOTMs
OCBAQCB2b2lkIGluaXRpYWxpemVPcHRpb25zKCkKICAgICBpZiAoY3B1c1RvVXNlIDwgMSkKICAg
ICAgICAgY3B1c1RvVXNlID0gMTsKICAgICAKKyAgICBjcHVzVG9Vc2UgPSAxOworICAgIAogICAg
IFNFVChudW1iZXJPZkdDTWFya2VycywgY3B1c1RvVXNlKTsKIAogICAgIEFTU0VSVChleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiA8PSBleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3
LDEwIEBAIGV4dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHIKIAogZXh0ZXJu
IHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOyAvLyBEZXB0aCBvZiBpbmxpbmUgc3RhY2ss
IHNvIDEgPSBubyBpbmxpbmluZywgMiA9IG9uZSBsZXZlbCwgZXRjLgogCitleHRlcm4gaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2V4dGVybiBpbnQzMl90
IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2V4dGVybiBpbnQz
Ml90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisKIGV4dGVybiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBleHRlcm4gaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGV4dGVy
biBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29u
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2
aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFp
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFz
cyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
U2NvcGVDaGFpbkl0ZXJhdG9yOwogICAgIGNsYXNzIFNsb3RWaXNpdG9yOwogICAgIApAQCAtOTEs
NiArOTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEg
Y29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuOwogICAg
IH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShy
ZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5h
bWVBcnJheTsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7CiAgICAgY2xhc3MgU3Ry
dWN0dXJlQ2hhaW47CkBAIC0xOTYsNiArMTk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2
YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAg
ICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3Qg
Q2xhc3NJbmZvKik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmKTsKICAgICAgICAg
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAx
MDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKIAog
ICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluIDogcHVibGljIEpTQ2VsbCB7CkBAIC03NCw2ICs3NSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgU3Ry
dWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyB2
b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bs
YXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9y
bS5oCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyMCw2ICs5MjAsMTggQEAKICNkZWZpbmUgRU5BQkxF
X0pJVCAxCiAjZW5kaWYKIAorLyogT24gc29tZSBvZiB0aGUgcGxhdGZvcm1zIHdoZXJlIHdlIGhh
dmUgYSBKSVQsIHdlIHdhbnQgdG8gYWxzbyBoYXZlIHRoZSAKKyAgIGxvdy1sZXZlbCBpbnRlcnBy
ZXRlci4gKi8KKyNpZiAhZGVmaW5lZChFTkFCTEVfTExJTlQpICYmIEVOQUJMRShKSVQpICYmIFBM
QVRGT1JNKE1BQykgJiYgVVNFKEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEK
KyNlbmRpZgorCisvKiBJZiB3ZSBoYXZlIExMSW50IGVuYWJsZWQgYW5kIHRoZSBKSVQgZW5hYmxl
ZCwgd2UgYWxzbyBlbmFibGUgT1NSaW5nIGZyb20KKyAgIExMSW50IHRvIHRoZSBKSVQuICovCisj
aWYgIWRlZmluZWQoRU5BQkxFX0xMSU5UX09TUl9UT19KSVQpICYmIEVOQUJMRShKSVQpICYmIEVO
QUJMRShMTElOVCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UX09TUl9UT19KSVQgMQorI2VuZGlmCisK
ICNpZiAhZGVmaW5lZChFTkFCTEVfREZHX0pJVCkgJiYgRU5BQkxFKEpJVCkKIC8qIEVuYWJsZSB0
aGUgREZHIEpJVCBvbiBYODYgYW5kIFg4Nl82NC4gIE9ubHkgdGVzdGVkIG9uIE1hYyBhbmQgR05V
L0xpbnV4LiAqLwogI2lmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSkgJiYgKFBMQVRGT1JNKE1B
QykgfHwgT1MoTElOVVgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5l
bExpbmtlZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Nl
bnRpbmVsTGlua2VkTGlzdC5oCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4
Niw4IEBAIHB1YmxpYzoKIAogICAgIGl0ZXJhdG9yIGJlZ2luKCk7CiAgICAgaXRlcmF0b3IgZW5k
KCk7CisgICAgCisgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gYmVnaW4oKSA9PSBlbmQoKTsg
fQogCiBwcml2YXRlOgogICAgIFJhd05vZGUgbV9oZWFkU2VudGluZWw7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDEwNjA0NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQzLDYgKzQzLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlN0cmluZyAq
IENGU3RyaQogLy8gTGFuZGluZyB0aGUgZmlsZSBtb3ZlcyBpbiBvbmUgcGF0Y2gsIHdpbGwgZm9s
bG93IG9uIHdpdGggcGF0Y2hlcyB0byBjaGFuZ2UgdGhlIG5hbWVzcGFjZXMuCiBuYW1lc3BhY2Ug
SlNDIHsKIHN0cnVjdCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5zbGF0b3I7CitjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElkZW50aWZpZXJD
aGFyQnVmZmVyVHJhbnNsYXRvcjsKIHN0cnVjdCBJZGVudGlmaWVyTENoYXJGcm9tVUNoYXJUcmFu
c2xhdG9yOwogfQpAQCAtNzIsNyArNzMsOCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICBmcmll
bmQgc3RydWN0IFdURjo6U3Vic3RyaW5nVHJhbnNsYXRvcjsKICAgICBmcmllbmQgc3RydWN0IFdU
Rjo6VUNoYXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmdJ
bXBsOwotCisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAg
IAogcHJpdmF0ZToKICAgICBlbnVtIEJ1ZmZlck93bmVyc2hpcCB7CiAgICAgICAgIEJ1ZmZlcklu
dGVybmFsLApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MDU1KQorKysgU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDEtMjYg
IEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mgc2hvdWxkIGJl
IGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3OTY5ND4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIEVGTCdz
IGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9yeSBpbiBKYXZhU2NyaXB0Q29y
ZS4KKyAgICAgICAgCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIG5vIGJlaGF2aW9yIGNo
YW5nZWQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxMi0wMS0yNiAgTm9lbCBH
b3Jkb24gIDxub2VsLmdvcmRvbkBnbWFpbC5jb20+CiAKICAgICAgICAgRmlsZSBleHRlbnNpb24g
Zm9yIHdlYnAgZmlsZXMgaXMgLndlYnAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lv
biAxMDYwNDUpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNzQsNiArNzQsNyBAQCBTRVQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2ludGVycHJldGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9w
YXJzZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUiCg==
</data>
<flag name="commit-queue"
          id="125418"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124225</attachid>
            <date>2012-01-26 17:37:00 -0800</date>
            <delta_ts>2012-01-26 18:03:42 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_53.diff</filename>
            <type>text/plain</type>
            <size>442051</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MDY3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5NyBA
QAorMjAxMi0wMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi52c3Byb3BzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDog
QWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Omlz
U2V0KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAg
IChDYWxsTGlua1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmVzY2FwZVF1b3Rlcyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWlu
Z0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RXZh
bENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6
amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1w
bCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dXNlc09wY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAg
KCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0Q29tcGls
ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
aWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxp
a2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlr
ZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1
ZW50RXhpdFNpdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29v
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50
RXhlY3V0ZUNvdW50ZXIpOgorICAgICAgICAoUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChF
dmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBi
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6
CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OkdldEJ5SWRTdGF0dXMpOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjp3YXNTZWVuSW5KSVQpOgorICAgICAgICAoR2V0QnlJZFN0YXR1
cyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgIChJbnN0cnVj
dGlvbik6CisgICAgICAgICgpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZv
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0lu
Zm86OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKExMSW50Q2FsbExpbmtJbmZvKToKKyAg
ICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6OkxM
SW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAg
IChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAoUHV0QnlJZFN0YXR1cyk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0
UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaCk6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0
UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRD
b21waWxlci5jcHA6CisgICAgICAgICgpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKCk6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChBbGxvY2F0aW9uU3BhY2UpOgorICAgICAgICAoKToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAo
SGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAoSlNDOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFt
ZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJy
ZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZy
YW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmls
ZSk6CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKToKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAg
KiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpJVENvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2Rl
Ojppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAg
ICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToK
KyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93
KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RV
Ql9GVU5DVElPTik6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJ
VC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1v
bi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChEYXRhKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50
RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRF
dmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2lu
dCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBv
aW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxl
cik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9u
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpM
TEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQv
TExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChK
U0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmVudHJ5T1NSKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJlc29sdmVHbG9iYWwpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9z
dENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRk
ZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludE9m
ZnNldHNFeHRyYWN0b3IpOgorICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDog
QWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3Ry
dWN0RW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZv
ckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpMTEludDo6ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20u
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRy
YWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAg
ICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFz
bS9zZXR0aW5ncy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6
IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgor
ICAgICAgICAoKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAg
ICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAoQ29tbW9u
U2xvd1BhdGhzKToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjpvcEluc3RhbmNlT2ZT
bG93KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpq
ZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpqaXRDb21w
aWxlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnNhbXBsaW5nRGVzY3JpcHRpb24p
OgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpQ
cm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbCk6CisgICAgICAg
ICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoKToKKyAg
ICAgICAgKEV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKFByb2dyYW1FeGVjdXRhYmxlKToKKyAg
ICAgICAgKEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZTo6aml0Q29tcGlsZUZvcik6CisgICAgICAgICogcnVudGltZS9FeGVjdXRpb25IYXJuZXNz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZvckV4ZWN1
dGlvbik6CisgICAgICAgIChKU0M6OnByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbik6CisgICAg
ICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uaDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9u
Ojp0ZWFyT2ZmKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKCk6CisgICAgICAgIChKU0NlbGwpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTRnVuY3Rpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNHbG9iYWxEYXRhKToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxEYXRhOjpzY3JhdGNoQnVmZmVyRm9yU2l6ZSk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoKToKKyAgICAgICAgKEpTT2JqZWN0KToKKyAgICAgICAgKEpTRmluYWxPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
dHJpbmcuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU1N0cmluZyk6CisgICAgICAgICog
cnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoVHlwZUluZm8p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjpkZXNjcmlwdGlvbik6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVl
Lmg6CisgICAgICAgIChKU1ZhbHVlKToKKyAgICAgICAgKCk6CisgICAgICAgICogcnVudGltZS9K
U1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNWYXJpYWJsZU9i
amVjdCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKE9wdGlvbnMp
OgorICAgICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAgICAgICog
cnVudGltZS9PcHRpb25zLmg6CisgICAgICAgIChPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1l
L1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChTY29wZUNoYWluTm9kZSk6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChTdHJ1Y3R1cmVDaGFpbik6CisgICAgICAgICogd3RmL1BsYXRm
b3JtLmg6CisgICAgICAgICogd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oOgorICAgICAgICAoU2Vu
dGluZWxMaW5rZWRMaXN0KToKKyAgICAgICAgKFdURjo6U2VudGluZWxMaW5rZWRMaXN0Ojppc0Vt
cHR5KToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoU3RyaW5nSW1wbCk6CisgICAgICAgICgpOgorCiAyMDEyLTAxLTI2ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQWxsIERGRyBoZWxwZXJzIHRoYXQg
bWF5IGNhbGwgb3V0IHRvIGFyYml0cmFyeSBKUyBjb2RlIG11c3Qga25vdyB3aGVyZSB0aGV5Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDYwNDUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTExLDYgKzExLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L3BhcnNlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZSIKQEAgLTk0LDYgKzk1LDcgQEAgU0VUKEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKICAgICBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwCiAKICAgICBq
aXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5j
cHAKICAgICBqaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAogICAgIGppdC9KSVRBcml0aG1ldGlj
LmNwcAogICAgIGppdC9KSVRDYWxsMzJfNjQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmFtCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
R05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgamF2YXNjcmlw
dGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCisJLUkkKHNyY2RpcikvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDYw
NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2lu
ZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmNwcCBcCkBAIC0xMDIsNiArMTAzLDcgQEAgamF2YXNjcmlwdGNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9u
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTGluZUluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8uaCBcCkBAIC0yNzcsNiArMjc5LDggQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Db21wYWN0
SklUQ29kZU1hcC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0
b3IuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNw
cCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIFwKQEAgLTMwMCw2ICszMDQsNyBAQCBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNp
YWxpemVkVGh1bmtKSVQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vcy13aW4zMi9zdGRib29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vcy13aW4zMi9zdGRpbnQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmggXApAQCAtMzUwLDYgKzM1NSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaCBcCkBAIC0zNzgsNiArMzg0LDcgQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIw
LDYgKzIwLDcgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9kZWJ1Z2dlciBc
CiAgICAgJCRTT1VSQ0VfRElSL2ludGVycHJldGVyIFwKICAgICAkJFNPVVJDRV9ESVIvaml0IFwK
KyAgICAkJFNPVVJDRV9ESVIvbGxpbnQgXAogICAgICQkU09VUkNFX0RJUi9wYXJzZXIgXAogICAg
ICQkU09VUkNFX0RJUi9wcm9maWxlciBcCiAgICAgJCRTT1VSQ0VfRElSL3J1bnRpbWUgXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcg
QEAgU09VUkNFUyArPSBcCiAgICAgaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCiAgICAg
aml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgXAogICAgIGppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yLmNwcCBcCisgICAgaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKICAg
ICBqaXQvSklUQXJpdGhtZXRpYy5jcHAgXAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3Bw
IFwKICAgICBqaXQvSklUQ2FsbC5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwNjA0NSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMwLDYgKzE3
MzAsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cLi5caml0XEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcSklULmNwcCIKIAkJCQk+CiAJCQk8
L0ZpbGU+CkBAIC0xODE1LDYgKzE4MTksMTQgQEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJ
CTxGaWx0ZXIKKwkJCU5hbWU9ImxsaW50IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXGxsaW50XExMSW50RGF0YS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0
ZXI+CisJCTxGaWx0ZXIKIAkJCU5hbWU9ImludGVycHJldGVyIgogCQkJPgogCQkJPEZpbGUKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmVDb21tb24udnNwcm9wcwkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJ
PFRvb2wKIAkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29y
ZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsu
Li8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL2RmZy87Li4vLi4vaml0LzsuLi8uLi9ydW50aW1lLzsu
Li8uLi9ieXRlY29kZS87Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJvZmls
ZXI7Li4vLi4vYXNzZW1ibGVyLzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7JChX
ZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNE
aXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
aW5jbHVkZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZh
U2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxw
cml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRz
JnF1b3Q7IgorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXCZxdW90Ozsu
Li8uLi87Li4vLi4vQVBJLzsuLi8uLi9wYXJzZXIvOy4uLy4uL2J5dGVjb21waWxlci87Li4vLi4v
ZGZnLzsuLi8uLi9qaXQvOy4uLy4uL2xsaW50LzsuLi8uLi9ydW50aW1lLzsuLi8uLi9ieXRlY29k
ZS87Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJvZmlsZXI7Li4vLi4vYXNz
ZW1ibGVyLzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7JChXZWJLaXRMaWJyYXJp
ZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVc
cHJpdmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZSZxdW90
OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZx
dW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7
OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7IgogCQlQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX19TVERfQyIKIAkJRm9yY2VkSW5jbHVkZUZpbGVzPSJJ
Q1VWZXJzaW9uLmgiCiAJLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE1IEBACiAJ
b2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJ
MEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0Njgw
QUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdn
cmVnYXRlVGFyZ2V0ICJMTEludCBPZmZzZXRzIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJ
CTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8s
CisJCQkpOworCQkJbmFtZSA9ICJMTEludCBPZmZzZXRzIjsKKwkJCXByb2R1Y3ROYW1lID0gIkRl
cml2ZWQgU291cmNlcyI7CisJCX07CiAJCTY1RkIzRjY2MDlEMTFFOTEwMEY0OURFQiAvKiBEZXJp
dmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CiAJCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gNjVGQjNGNzcwOUQxMUVCRDAwRjQ5REVCIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJEZXJpdmVkIFNvdXJjZXMi
ICovOwpAQCAtMTQsNiArMjMsOSBAQAogCQkJCTY1RkIzRjY1MDlEMTFFOTEwMEY0OURFQiAvKiBH
ZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJNUQzNURFRTEwQzdDMTQwQjAwODY0OEIy
IC8qIEdlbmVyYXRlIERUcmFjZSBoZWFkZXIgKi8sCiAJCQkpOworCQkJZGVwZW5kZW5jaWVzID0g
KAorCQkJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICov
LAorCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJCXByb2R1Y3ROYW1lID0g
IkRlcml2ZWQgU291cmNlcyI7CiAJCX07CkBAIC00OCw2ICs2MCwxMCBAQAogCQkwQkFDOTRBMDEz
Mzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJBQzk0OUUxMzM4NzI4NDAwQ0Yx
MzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkNEODM1NzE0ODU4NDUyMDBFQTIwMDMgLyog
VGVtcG9yYXJ5Q2hhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJGMjhBMjkx
MUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVM
aW1pdHMuY3BwICovOyB9OworCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRy
eXBvaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi87IH07
CisJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NjE0QkNGNDVB
MDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTElu
dFRodW5rcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovOyB9OworCQkw
RjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTUxNEJDRjUwNDAw
ODg1QjRGIC8qIENvZGVUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBODE0
QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhw
cmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTgs
OSArNzQsMTMgQEAKIAkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5r
SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYw
QjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I3MTRCQ0Y4RTEw
MDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJl
c29sdmVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVj
b2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEZDNDU4MTRCRDE1RjEw
MEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21t
b25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE2RDcyNjE0MkMz
OUMwMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3Iu
Y3BwICovOyB9OwogCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJpdmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI2NjE0QkU1
RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlv
bkhhcm5lc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0QxNEJFNzI3
QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29u
dmVudGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyNDJEQTcxM0Yz
QjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAv
KiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NkYxNDczOEYzMTAwMTIxRTRGIC8qIERGR0NvZGVC
bG9ja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NzAxNDczOEYzNTAwMTIx
RTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3Mu
Y3BwICovOyB9OwpAQCAtNzEsNiArOTEsMTkgQEAKIAkJMEY0MzE3MzgxNDZCQUM2OTAwN0UzODkw
IC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4
MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDdGMTRC
QTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTMxNEJB
N0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50
RXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUYxNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZM
QUdTID0gIi1Xbm8tdW51c2VkLXBhcmFtZXRlciI7IH07IH07CisJCTBGNDY4MEE1MTRCQTdGOEQw
MEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2
ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIw
MEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovOyB9OworCQkwRjQ2ODBBODE0
QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBM
TEludEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyog
TExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENCMTRCQkIxNzIw
MEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTElu
dE9mZmxpbmVBc21Db25maWcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnBy
ZXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi87IH07
CisJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDODE0QkJC
MTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAv
KiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi87IH07CisJ
CTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAv
KiBMTEludERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBE
MDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi87IH07CisJCTBG
NDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMTE0QkJDNUY4MDBC
RkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNv
bmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFs
aXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGNjIwMTc0MTQzRkNEMzMwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNjIwMTcyMTQzRkNE
MkYwMDY4Qjc3QyAvKiBERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjYyMDE3NTE0M0ZDRDM3MDA2OEI3N0Mg
LyogREZHT3BlcmFuZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNjIwMTcxMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdPcGVyYW5kcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zODMsNyArNDE2LDcg
QEAKIAkJODZCOTlBRTMxMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCOTlBRTExMTdFNTc4MTAw
REY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTg2QkIwOUMwMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNo
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIw
OUJFMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCAqLzsgfTsKIAkJODZCQjA5QzEx
MzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJGMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBh
dGNoLmggKi87IH07Ci0JCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZF
RTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IH07CisJCTg2QzM2RUVB
MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1h
Y3JvQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERE
MTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgKi87IH07CiAJCTg2QzU2
OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdG
MCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLzsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdG
N0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDg2QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmgg
Ki87IH07CkBAIC03NTIsNiArNzg1LDIwIEBACiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KKwkJMEY0Njgw
QjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlz
YSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkw
RkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7
CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MjsKKwkJ
CXJlbW90ZUluZm8gPSAiTExJbnQgT2Zmc2V0cyI7CisJCX07CisJCTBGNDY4MEIzMTRCQTgyMTQw
MEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250
YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAy
QUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3Rl
R2xvYmFsSURTdHJpbmcgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzI7CisJCQlyZW1vdGVJbmZv
ID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQl9OwogCQkxNDEyMTRCRTBBNDkxOTBFMDA0
ODAyNTUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFp
bmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFB
QzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtNzk3LDYgKzg0NCwxNSBAQAogLyogRW5kIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvcHlGaWxlc0J1
aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZp
bGVzICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQYXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87
CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMDsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAxOworCQl9OwogCQk1REJCMTUxMTEzMUQw
QjEzMDA1NkFEMzYgLyogQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWENv
cHlGaWxlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAxMjsKQEAgLTgzNyw2ICs4
OTMsMTAgQEAKIAkJMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9u
VmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkUmVzdHJp
Y3Rpb25WZXJpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkNEODM1NDE0
ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRlbXBvcmFyeUNoYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlw
b2ludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFbnRy
eXBvaW50cy5jcHA7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50
cnlwb2ludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFbnRyeXBv
aW50cy5oOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRUaHVua3MuY3BwOyBw
YXRoID0gbGxpbnQvTExJbnRUaHVua3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRUaHVua3MuaDsgcGF0aCA9IGxsaW50L0xMSW50VGh1
bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0E1MTRCQ0Y1MDQwMDg4
NUI0RiAvKiBDb2RlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2Rl
VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBODE0QkNGNTVFMDA4
ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SGFuZGxlckluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQUExNEJD
RjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRXhwcmVzc2lvblJhbmdlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODQ3LDkgKzkwNywxMyBAQAogCQkwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYg
LyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IE1ldGhvZENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBC
ODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR2xvYmFsUmVzb2x2ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZz
ZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENh
bGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMTEludENhbGxMaW5rSW5mby5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29t
bW9uU2xvd1BhdGhzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vblNs
b3dQYXRocy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE2RDcyNDE0MkMzOUEy
MDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjFD
MjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSklURHJpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
MjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4
ZWN1dGlvbkhhcm5lc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0
aW9uSGFybmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3RTE0QkVB
QTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBCeXRlY29kZUNvbnZlbnRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVz
dGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkQxNDczOEYyRTAw
MTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gREZHQ29kZUJsb2Nrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTg2MCw2ICs5MjQsMjAgQEAKIAkJMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkw
IC8qIExpc3RhYmxlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
aXN0YWJsZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwN0Yx
NEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSklURXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50
T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZp
bGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAw
OyBwYXRoID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OworCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRp
b25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RXhjZXB0
aW9ucy5jcHA7IHBhdGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRp
b25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5o
OyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRIZWxwZXJzLmNwcDsgcGF0aCA9
IGxsaW50L0xMSW50SGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTExJbnRIZWxwZXJzLmg7IHBhdGggPSBsbGludC9MTEludEhlbHBl
cnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQTExNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOyBwYXRoID0gbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0
NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IExMSW50Q29tbW9uLmg7IHBhdGggPSBsbGludC9MTEludENvbW1vbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIg
LyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBwYXRoID0gbGxpbnQvTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM3MTRCQkIxNjkw
MEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBwYXRoID0gbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4
MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIuaDsgcGF0aCA9IGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0
NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludERhdGEuY3BwOyBwYXRoID0gbGxpbnQvTExJbnREYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZF
MjcyIC8qIExMSW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTElu
dERhdGEuaDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZh
bHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwRDExNEJCQzVGODAw
QkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyogREZHQnl0ZUNvZGVDYWNoZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCeXRlQ29kZUNhY2hlLmg7IHBhdGggPSBk
ZmcvREZHQnl0ZUNvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVG
MDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNjIwMTZEMTQzRkNEMkYwMDY4Qjc3QyAvKiBERkdB
YnN0cmFjdFN0YXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IERG
R0Fic3RyYWN0U3RhdGUuY3BwOyBwYXRoID0gZGZnL0RGR0Fic3RyYWN0U3RhdGUuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU3OSw2ICsxNjU3LDEzIEBACiAvKiBFbmQgUEJY
RmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1ld29ya3Mg
Ki8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUUwQTQ4NzkzQzAwNDgw
MjU1IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFz
ZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0xNjM3LDYgKzE3MjIsNyBA
QAogCQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovLAogCQkJCTE0QkQ1
OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTY1MTEyMzA1MTQwNDZBNEMw
MDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAv
KiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFByb2R1Y3Rz
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2NjcsNiArMTc1Myw3IEBACiAJCQkJ
RjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCiAJ
CQkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMw
MjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5oICovLAorCQkJCTBGNDY4MDlDMTRCQTdGNEQwMEJG
RTI3MiAvKiBsbGludCAqLywKIAkJCQkxNDMyRUJENzBBMzRDQUQ0MDA3MTdCOUYgLyogQVBJICov
LAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJsZXIgKi8sCiAJCQkJOTY5
QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLApAQCAtMTcwNSw2ICsxNzkyLDI4
IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCTBGNDY4MDlD
MTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlw
b2ludHMuY3BwICovLAorCQkJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5
cG9pbnRzLmggKi8sCisJCQkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtz
LmNwcCAqLywKKwkJCQkwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAq
LywKKwkJCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLywKKwkJ
CQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi8sCisJCQkJMEY0Njgw
QzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi8sCisJCQkJMEY0NjgwQzYxNEJC
QjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovLAorCQkJCTBGNDY4MEM3
MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLywKKwkJCQkwRjQ2
ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovLAorCQkJCTBG
NDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovLAorCQkJCTBG
NDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLywKKwkJCQkwRjQ2
ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLywKKwkJCQkwRjQ2ODBB
MDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8sCisJCQkJMEY0NjgwQTExNEJB
N0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi8sCisJCQkpOworCQkJ
bmFtZSA9IGxsaW50OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMTQxMjEx
MDAwQTQ4NzcyNjAwNDgwMjU1IC8qIHRlc3RzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKQEAgLTE3MzcsNiArMTg0Niw4IEBACiAJCTE0MjlEOTJDMEVEMjJENzAw
MEI4OTYxOSAvKiBqaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KAorCQkJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNw
cCAqLywKKwkJCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1
ZS5oICovLAogCQkJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNw
cCAqLywKIAkJCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICov
LAogCQkJCTBGRDgyRTM3MTQxQUIxNDIwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oICov
LApAQCAtMjE2Niw2ICsyMjc3LDggQEAKIAkJN0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1
bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBG
MjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi8sCisJ
CQkJMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLywKIAkJ
CQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8sCiAJCQkJ
QkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEy
MEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCkBAIC0yNTI1LDYgKzI2MzgsOCBAQAog
CQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAv
KiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8sCisJCQkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0
IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8sCiAJCQkJMEY5MzMyOTMxNENBN0RDMTAwODVGM0M2
IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLywKIAkJCQkwRjkzMzI5NDE0Q0E3REMxMDA4NUYzQzYg
LyogQ2FsbExpbmtTdGF0dXMuaCAqLywKIAkJCQkwRjkzMzI5NTE0Q0E3REMxMDA4NUYzQzYgLyog
R2V0QnlJZFN0YXR1cy5jcHAgKi8sCkBAIC0zMDc2LDcgKzMxOTEsMTYgQEAKIAkJCQk4NjcwNEI4
QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2
NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExM
SW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENBMTRCQkIxNkMw
MEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0IxNEJC
QjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJl
dHVyblZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYg
LyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzOUQxNEJDRjQ2
NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBNzE0
QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E5
MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYw
QjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJz
ICovLApAQCAtMzA4NSw3ICszMjA5LDExIEBACiAJCQkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRG
IC8qIE1ldGhvZENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjcxNEJD
RjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZz
ZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTElu
dENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyNjgxNEJFNUY2ODAwQURD
NjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0MxNEJFNzI3NjAw
QURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdE
MTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEExNEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxs
SGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8q
IERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEMxNEMzQ0Q0MzAw
N0MzREIxIC8qIERGR0J5dGVDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzEwMyw2ICsz
MjMxLDI0IEBACiAvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUy
NzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0geworCQkJaXNhID0gUEJYTmF0aXZl
VGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MDlBMTRCQTdFNUYwMEJG
RTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlND
TExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4
MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovLAorCQkJCTBGNDY4MDhDMTRCQTdFNUUw
MEJGRTI3MiAvKiBGcmFtZXdvcmtzICovLAorCQkJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAv
KiBDb3B5RmlsZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBl
bmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KwkJCXByb2R1Y3ROYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdFJl
ZmVyZW5jZSA9IDBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRy
YWN0b3IgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wi
OworCQl9OwogCQkxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDEy
MTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhO
YXRpdmVUYXJnZXQgIm1pbmlkb20iICovOwpAQCAtMzIyOSwxMSArMzM3NSwyOSBAQAogCQkJCTE0
QkQ1OUJFMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTkzMkY1QkRBMDgyMkEx
QzcwMDczNjk3NSAvKiBqc2MgKi8sCiAJCQkJNjUxMTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRl
c3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zm
c2V0c0V4dHJhY3RvciAqLywKKwkJCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQg
T2Zmc2V0cyAqLywKIAkJCSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MEFB
MTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlp
c2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChT
UkNST09UKS9sbGludC9Mb3dMZXZlbEFzc2VtYmxlci5hc20iLAorCQkJKTsKKwkJCW5hbWUgPSAi
R2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJV
SUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaCIsCisJ
CQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVs
bFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BS
T0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL1wiXG5cbi91c3IvYmluL2VudiBydWJ5IFwiJHtTUkNS
T09UfS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmJcIiBcIiR7U1JDUk9P
VH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc21cIiBcIiR7QlVJTFRfUFJPRFVDVFNfRElS
fS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oXCJcbiI7CisJCX07CiAJCTM3MTNG
MDE0MTQyOTA1MjQwMDM2Mzg3RiAvKiBDaGVjayBGb3IgSW5hcHByb3ByaWF0ZSBPYmplY3RpdmUt
QyBDbGFzcyBOYW1lcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsK
IAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zMzM5LDcgKzM1MDMsNyBAQAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQkJc2hl
bGxQYXRoID0gL2Jpbi9zaDsKLQkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9Q
Uk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL2RvY3NcIlxuY2QgXCIk
e0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmVcIlxuXG4v
YmluL2xuIC1zZmggXCIke1NSQ1JPT1R9XCIgSmF2YVNjcmlwdENvcmVcbmV4cG9ydCBKYXZhU2Ny
aXB0Q29yZT1cIkphdmFTY3JpcHRDb3JlXCJcbmV4cG9ydCBCVUlMVF9QUk9EVUNUU19ESVI9XCIu
Li8uLlwiXG5cbm1ha2UgLS1uby1idWlsdGluLXJ1bGVzIC1mIFwiSmF2YVNjcmlwdENvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNyL3NiaW4vc3lzY3RsIC1uIGh3Lm5jcHVgXG4iOwor
CQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNfRElS
fS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7U1JD
Uk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2YVNjcmlw
dENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJcblxubWFrZSAtLW5v
LWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlXCIg
LWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNwdWBcblxuL3Vzci9iaW4vZW52IHJ1YnkgSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIgSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20gJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0pTQ0xMSW50T2Zmc2V0c0V4
dHJhY3RvciBMTEludEFzc2VtYmx5LmhcbiI7CiAJCX07CiAJCTkzMTk1ODZCMDlEOUY5MUEwMEE1
NkZENCAvKiBDaGVjayBGb3IgR2xvYmFsIEluaXRpYWxpemVycyAqLyA9IHsKIAkJCWlzYSA9IFBC
WFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKQEAgLTMzNzQsNiArMzUzOCwxNCBAQAogLyogRW5kIFBC
WFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJj
ZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkwRjQ2ODBBNzE0QkE3RkExMDBC
RkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsK
KwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEy
MTExRDBBNDg3OTNDMDA0ODAyNTUgLyogU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJj
ZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTM2MzIs
NyArMzgwNCwxNCBAQAogCQkJCTg2NzA0Qjg2MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg5MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0
dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyog
WWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTQxNEJBN0Y4
RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBB
ODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJl
dGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBM
TEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcy
IC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUEx
NEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjQxNEJDRjg2MDAwODg1QjRGIC8qIE1ldGhvZENhbGxM
aW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNjlFODZDMzE0QzZFNTUxMDAyQzJDNjIg
LyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM2NTQsNiArMzgzMywxNiBA
QAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
VGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5j
eTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRz
ICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29u
dGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyog
UEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7
CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRz
RXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIg
LyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQkxNDEyMTRCRjBBNDkxOTBFMDA0
ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERl
cGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRv
bSAqLzsKQEAgLTM2ODcsNiArMzg3NiwxNDggQEAKIC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwor
CQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJD
SF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQp
IjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRB
UkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5BQkxF
X09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsK
KwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJ
CQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRF
Uk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFu
Zy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlH
Q0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJP
VVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVT
OworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlp
Y3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQo
SEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFS
R0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gWUVTOworCQkJCVBST0RVQ1RfTkFN
RSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hF
QURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zm
c2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJ
CX07CisJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZ
U19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRf
NjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1B
VElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFO
REFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJ
CUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlH
Q0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VU
X01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQ
RSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURF
Ul9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQo
QlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwK
KwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVD
VF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVT
RVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJ
bnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxl
YXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0g
eworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0gewor
CQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNf
U1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJV
R19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5H
VUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0g
WUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFf
MDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19X
QVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9S
RVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJ
CQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwK
KwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFE
RVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQg
PSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9P
VCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlM
VF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJ
CX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUy
NzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsK
KwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0Vf
U1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgt
ZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5B
QkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5j
b21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZF
UlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7
CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5V
U0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0g
KAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRP
ZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJH
RVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNI
X1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFE
RVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJ
CTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUg
PSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsK
KwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9O
QU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsK
KwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQ
Uk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQ
cm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9u
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9Owor
CQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1NSAv
KiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKQEAgLTM5MjgsNiArNDI1OSwyOCBAQAogLyogRW5kIFhDQnVpbGRDb25maWd1
cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9u
ICovCisJCTBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLyA9IHsK
KwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0g
KAorCQkJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODA5
NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODA5ODE0QkE3RTVFMDBC
RkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQ
cm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0g
MDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBG
NDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZp
Z3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODBBRDE0
QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcy
IC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGlu
ZyAqLywKKwkJCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJ
CSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEzOTBBNDg3OTg0MDA0
ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1p
bmlkb20iICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29u
ZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xp
bmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAK
ICNkZWZpbmUgR0xPQkFMX1RIVU5LX0lEIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19j
YXN0PGludHB0cl90PigtMSkpCiAjZGVmaW5lIFJFR0VYUF9DT0RFX0lEIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigtMikpCiAKLSNpbmNsdWRlIDxNYWNyb0Fz
c2VtYmxlci5oPgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorI2Rl
ZmluZSBCeXRlY29kZUNvbnZlbnRpb25zX2gKKworLy8gUmVnaXN0ZXIgbnVtYmVycyB1c2VkIGlu
IGJ5dGVjb2RlIG9wZXJhdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbWVhbmluZyBhY2NvcmRpbmcgdG8g
dGhlaXIgcmFuZ2VzOgorLy8gICAgICAweDgwMDAwMDAwLTB4RkZGRkZGRkYgIE5lZ2F0aXZlIGlu
ZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGVudHJpZXMgaW4gdGhlIGNhbGwg
ZnJhbWUsIHNlZSBSZWdpc3RlckZpbGUuaC4KKy8vICAgICAgMHgwMDAwMDAwMC0weDNGRkZGRkZG
ICBGb3J3YXJkcyBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBsb2NhbCB2
YXJzIGFuZCB0ZW1wb3JhcmllcyB3aXRoIHRoZSBmdW5jdGlvbidzIGNhbGxmcmFtZS4KKy8vICAg
ICAgMHg0MDAwMDAwMC0weDdGRkZGRkZGICBQb3NpdGl2ZSBpbmRpY2VzIGZyb20gMHg0MDAwMDAw
MCBzcGVjaWZ5IGVudHJpZXMgaW4gdGhlIGNvbnN0YW50IHBvb2wgb24gdGhlIENvZGVCbG9jay4K
K3N0YXRpYyBjb25zdCBpbnQgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAw
OworCisjZW5kaWYgLy8gQnl0ZWNvZGVDb252ZW50aW9uc19oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24g
MTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTcgKzI3LDQwIEBACiAjaW5jbHVkZSAiQ2FsbExp
bmtTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkxMSW50Q2Fs
bExpbmtJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitDYWxsTGlua1N0YXR1cyBDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwor
ICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAg
SW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CisgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5r
SW5mbyA9IGluc3RydWN0aW9uWzRdLnUuY2FsbExpbmtJbmZvOworICAgIAorICAgIHJldHVybiBD
YWxsTGlua1N0YXR1cyhjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLmdldCgpLCBmYWxzZSk7
CisjZWxzZQorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygwLCBmYWxzZSk7CisjZW5kaWYKK30K
KwogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQogewogICAgIFVOVVNFRF9QQVJB
TShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAjaWYg
RU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQotICAgIHJldHVybiBDYWxsTGlu
a1N0YXR1cygKLSAgICAgICAgcHJvZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJbmZvKGJ5dGVjb2Rl
SW5kZXgpLmxhc3RTZWVuQ2FsbGVlLmdldCgpLAotICAgICAgICBwcm9maWxlZEJsb2NrLT5jb3Vs
ZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSk7CisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5u
dW1iZXJPZkNhbGxMaW5rSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQo
cHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgaWYgKHByb2ZpbGVkQmxv
Y2stPmNvdWxkVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQorICAgICAgICByZXR1cm4gQ2Fs
bExpbmtTdGF0dXMoMCwgdHJ1ZSk7CisgICAgCisgICAgSlNGdW5jdGlvbiogdGFyZ2V0ID0gcHJv
ZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJbmZvKGJ5dGVjb2RlSW5kZXgpLmxhc3RTZWVuQ2FsbGVl
LmdldCgpOworICAgIGlmICghdGFyZ2V0KQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTElu
dChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KTsKKyAgICAKKyAgICByZXR1cm4gQ2FsbExp
bmtTdGF0dXModGFyZ2V0LCBmYWxzZSk7CiAjZWxzZQogICAgIHJldHVybiBDYWxsTGlua1N0YXR1
cygwLCBmYWxzZSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAt
NDcsMTUgKzQ3LDE3IEBAIHB1YmxpYzoKICAgICAKICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMg
Y29tcHV0ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICAgICAKLSAg
ICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxUYXJnZXQ7IH0KKyAgICBib29s
IGlzU2V0KCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxUYXJnZXQgfHwgbV9jb3VsZFRha2VTbG93
UGF0aDsgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2Fs
bFRhcmdldDsgfQorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7
IH0KICAgICAKICAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9j
b3VsZFRha2VTbG93UGF0aDsgfQogICAgIAogICAgIEpTRnVuY3Rpb24qIGNhbGxUYXJnZXQoKSBj
b25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQ7IH0KICAgICAKIHByaXZhdGU6CisgICAgc3RhdGlj
IENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0
ZWNvZGVJbmRleCk7CisgICAgCiAgICAgSlNGdW5jdGlvbiogbV9jYWxsVGFyZ2V0OwogICAgIGJv
b2wgbV9jb3VsZFRha2VTbG93UGF0aDsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQy
LDYgKzQyLDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdGF0aWNT
Y29wZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMb3dMZXZlbElu
dGVycHJldGVyLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlVTdHJp
bmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC01OSw4ICs2MCw2IEBAIG5h
bWVzcGFjZSBKU0MgewogdXNpbmcgbmFtZXNwYWNlIERGRzsKICNlbmRpZgogCi0jaWYgIWRlZmlu
ZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotCiBzdGF0aWMgVVN0cmluZyBl
c2NhcGVRdW90ZXMoY29uc3QgVVN0cmluZyYgc3RyKQogewogICAgIFVTdHJpbmcgcmVzdWx0ID0g
c3RyOwpAQCAtMzU4LDEwICszNTcsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRl
KiBleGVjKSBjbwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpOyBpICs9IG9wY29kZUxlbmd0aHNbZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQo
aW5zdHJ1Y3Rpb25zKClbaV0udS5vcGNvZGUpXSkKICAgICAgICAgKytpbnN0cnVjdGlvbkNvdW50
OwogCi0gICAgcHJpbnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQg
cGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocylcblxuIiwKKyAgICBwcmludGYoIiVs
dSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNh
bGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocylcblxuIiwKICAgICAgICAgc3RhdGljX2Nh
c3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25Db3VudCksCiAgICAgICAgIHN0YXRpY19jYXN0
PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNpemUoKSAqIHNpemVvZihJbnN0cnVjdGlv
bikpLAotICAgICAgICB0aGlzLCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJz
KTsKKyAgICAgICAgdGhpcywgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycywg
bV9udW1WYXJzKTsKIAogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGJl
Z2luID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBpbnN0cnVjdGlvbnMoKS5lbmQoKTsKQEAgLTg5OCw2ICs4OTcs
MTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAg
ICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRp
b24iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChl
eGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QiKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsOiB7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlv
biwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwiKTsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX2dlbmVyaWM6IHsKICAgICAg
ICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9nZW5l
cmljIik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyOTEsOCArMTI5OCw2IEBAIHZvaWQgQ29k
ZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICB9CiB9CiAKLSNlbmRpZiAvLyAh
ZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRShPUENPREVfU0FNUExJTkcpCi0KICNpZiBEVU1QX0NP
REVfQkxPQ0tfU1RBVElTVElDUwogc3RhdGljIEhhc2hTZXQ8Q29kZUJsb2NrKj4gbGl2ZUNvZGVC
bG9ja1NldDsKICNlbmRpZgpAQCAtMTQ1OSw2ICsxNDY0LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxv
Y2soQ29weVBhcnNlZEJsb2NrVGFnLAogewogICAgIHNldE51bVBhcmFtZXRlcnMob3RoZXIubnVt
UGFyYW1ldGVycygpKTsKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJX
YXJtVXAoKTsKICAgICAKICAgICBpZiAob3RoZXIubV9yYXJlRGF0YSkgewogICAgICAgICBjcmVh
dGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0xNTA3LDYgKzE1MTMsNyBAQCBDb2RlQmxvY2s6
OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgQVNTRVJUKG1fc291cmNlKTsKICAg
ICAKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsKIAog
I2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNTCiAgICAgbGl2ZUNvZGVCbG9ja1NldC5hZGQo
dGhpcyk7CkBAIC0xNTI0LDcgKzE1MzEsMTEgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKICNp
ZiBFTkFCTEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxFKQogICAgIGR1bXBWYWx1ZVByb2ZpbGVzKCk7
CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShMTElOVCkgICAgCisgICAgd2hpbGUgKG1faW5j
b21pbmdMTEludENhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisg
ICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCktPnJlbW92ZSgpOworI2VuZGlmIC8v
IEVOQUJMRShMTElOVCkKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFdlIG1heSBiZSBkZXN0cm95
ZWQgYmVmb3JlIGFueSBDb2RlQmxvY2tzIHRoYXQgcmVmZXIgdG8gdXMgYXJlIGRlc3Ryb3llZC4K
ICAgICAvLyBDb25zaWRlciB0aGF0IHR3byBDb2RlQmxvY2tzIGJlY29tZSB1bnJlYWNoYWJsZSBh
dCB0aGUgc2FtZSB0aW1lLiBUaGVyZQpAQCAtMTczNiw4ICsxNzQ3LDU5IEBAIHZvaWQgQ29kZUJs
b2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICNlbHNlCiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgdmVyYm9zZVVubGlua2luZyA9IGZhbHNlOwogI2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvLyBF
TkFCTEUoSklUKQogICAgIAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnRlcnByZXRlciogaW50
ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJldGVyOworICAgIC8vIGludGVycHJldGVy
LT5lbmFibGVkKCkgcmV0dXJucyB0cnVlIGlmIHRoZSBvbGQgQysrIGludGVycHJldGVyIGlzIGVu
YWJsZWQuIElmIHRoYXQncyBlbmFibGVkCisgICAgLy8gdGhlbiB3ZSdyZSBub3QgdXNpbmcgTExJ
bnQuCisgICAgaWYgKCFpbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAgICAgIGZvciAoc2l6
ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9
ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKKyAgICAg
ICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBd
LnUub3Bjb2RlKSkgeworICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9u
WzRdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3Ry
dWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAg
ICBjdXJJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQgPSAwOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAg
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAg
ICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0
KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9u
WzZdLnUuc3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01h
cmtlZChjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpKSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5z
dHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls2XS51LnN0
cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzddLnUuc3Ry
dWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvblswXS51
Lm9wY29kZSA9IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9y
IChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rp
b24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXTsKKyAg
ICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25b
MF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsCisgICAgICAgICAgICAgICAgICAgfHwg
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBv
cF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKKyAgICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rp
b25bM10udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bM10udS5z
dHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAg
Y3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgIGN1cklu
c3RydWN0aW9uWzRdLnUub3BlcmFuZCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9zLnNpemUoKTsgKytpKSB7CisgICAg
ICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5mb3NbaV0uaXNMaW5rZWQoKSAmJiAhSGVhcDo6
aXNNYXJrZWQobV9sbGludENhbGxMaW5rSW5mb3NbaV0uY2FsbGVlLmdldCgpKSkgeworICAgICAg
ICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQorICAgICAgICAgICAgICAgICAgICBwcmlu
dGYoIkNsZWFyaW5nIExMSW50IGNhbGwgZnJvbSAlcC5cbiIsIHRoaXMpOworICAgICAgICAgICAg
ICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKCEhbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUgJiYg
IUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlLmdl
dCgpKSkKKyAgICAgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNh
bGxlZS5jbGVhcigpOworICAgICAgICB9CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkK
KwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8vIENoZWNrIGlmIHdlJ3JlIG5vdCBsaXZlLiBJ
ZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAgICAgaWYgKCEoc2hvdWxkSW1tZWRpYXRlbHlBc3N1
bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBtX2RmZ0RhdGEtPmxpdmVuZXNzSGFzQmVlblByb3Zl
ZCkpIHsKQEAgLTE4NTgsMTAgKzE5MjAsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5Vmlz
aXRTdHJvbmdSZWZlcgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlvbkRlY2xz
LnNpemUoKTsgKytpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9mdW5jdGlvbkRlY2xzW2ld
KTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCi0gICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAg
ICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7Ci0gICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAg
ICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9uc1tpXV0pOworICAgIGlmIChtX2dsb2JhbERhdGEtPmludGVycHJldGVyLT5l
bmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJ
bnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHZp
c2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uc1tpXV0pOworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNv
bHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAg
ICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9uc1tpXV0pOworICAgIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKERGR19KSVQp
CkBAIC0yMDcwLDYgKzIxMzQsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIHsK
ICAgICBpZiAoISFtX2FsdGVybmF0aXZlKQogICAgICAgICBtX2FsdGVybmF0aXZlLT51bmxpbmtD
YWxscygpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1f
bGxpbnRDYWxsTGlua0luZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2xsaW50Q2Fs
bExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpKQorICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5m
b3NbaV0udW5saW5rKCk7CisgICAgfQorI2VuZGlmCiAgICAgaWYgKCEobV9jYWxsTGlua0luZm9z
LnNpemUoKSB8fCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpKSkKICAgICAgICAgcmV0dXJu
OwogICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKQEAgLTIwODQsMTAgKzIxNTQs
MzkgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIAogdm9pZCBDb2RlQmxvY2s6OnVu
bGlua0luY29taW5nQ2FsbHMoKQogeworI2lmIEVOQUJMRShMTElOVCkKKyAgICB3aGlsZSAobV9p
bmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkK
KyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+dW5saW5rKCk7CisjZW5kaWYK
KyAgICBpZiAobV9pbmNvbWluZ0NhbGxzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogICAg
IFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcih0aGlzKTsKICAgICB3aGlsZSAobV9pbmNvbWlu
Z0NhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0NhbGxzLmVuZCgpKQogICAgICAgICBtX2luY29t
aW5nQ2FsbHMuYmVnaW4oKS0+dW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwog
fQorCit1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywg
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAg
ICBpZiAocmV0dXJuQWRkcmVzcy52YWx1ZSgpID49IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50
X2JlZ2luKQorICAgICAgICAmJiByZXR1cm5BZGRyZXNzLnZhbHVlKCkgPD0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfZW5kKSkgeworICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkp
OworICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkgPT0gdGhpcyk7CisgICAgICAgIEFT
U0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKKyAgICAgICAgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gZXhlYy0+Y3VycmVudFZQQygpOworICAgICAgICBBU1NF
UlQoaW5zdHJ1Y3Rpb24pOworICAgICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rp
b24pOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworI2VuZGlmCisgICAg
aWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gMTsKKyAgICBWZWN0b3I8Q2FsbFJldHVy
bk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2Fs
bFJldHVybkluZGV4VmVjdG9yOworICAgIGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQorICAgICAg
ICByZXR1cm4gMTsKKyAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5
dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMu
YmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJu
QWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OworfQogI2VuZGlmCiAKIHZvaWQgQ29k
ZUJsb2NrOjpjbGVhckV2YWxDYWNoZSgpCkBAIC0yMTgzLDI0ICsyMjgyLDQ1IEBAIGJvb2wgRnVu
Y3Rpb25Db2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRoREYKIAogdm9pZCBQcm9ncmFtQ29kZUJsb2Nr
OjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNl
bGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBl
KCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2Fz
dDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6
ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwogfQogCiB2b2lkIEV2YWxDb2RlQmxvY2s6OmpldHRpc29u
KCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsK
KyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAg
IEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PEV2YWxFeGVj
dXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2Jh
bERhdGEoKSk7CiB9CiAKIHZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAg
ICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NF
UlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0
aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yKCpnbG9iYWxE
YXRhKCksIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7
CiB9CisKK3ZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50
ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkp
LT5qaXRDb21waWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEV2YWxDb2RlQmxvY2s6OmppdENv
bXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklU
VHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09
IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+
KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShnbG9iYWxEYXRhKTsKK30KKwordm9pZCBG
dW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
KQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVu
ayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGls
ZUZvcihnbG9iYWxEYXRhLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29k
ZUZvckNhbGwpOworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC0y
MzAzLDYgKzI0MjMsMTggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2ZpbGVzKCkKIH0K
ICNlbmRpZgogCit2b2lkIENvZGVCbG9jazo6aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0
dW5pdHkoKQoreworI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKSAmJiAhRU5BQkxFKExMSU5U
KQorICAgIGlmIChCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBpZiAoISFhbHRlcm5hdGl2ZSgpKQorICAgICAgICBkaXNjYXJkQnl0
ZWNvZGUoKTsKKyAgICBlbHNlCisgICAgICAgIGRpc2NhcmRCeXRlY29kZUxhdGVyKCk7CisjZW5k
aWYKK30KKwogI2lmbmRlZiBOREVCVUcKIGJvb2wgQ29kZUJsb2NrOjp1c2VzT3Bjb2RlKE9wY29k
ZUlEIG9wY29kZUlEKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaWZu
ZGVmIENvZGVCbG9ja19oCiAjZGVmaW5lIENvZGVCbG9ja19oCiAKKyNpbmNsdWRlICJCeXRlY29k
ZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2Fs
bFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgi
CkBAIC01MCw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSklUV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJM
TEludENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTm9k
ZXMuaCIKICNpbmNsdWRlICJQcmVkaWN0aW9uVHJhY2tlci5oIgpAQCAtNjUsMTYgKzY3LDExIEBA
CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgi
CiAKLS8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUg
ZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKLS8vICAgICAgMHg4
MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBw
b2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmgu
Ci0vLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRo
ZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0
aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCi0vLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAg
UG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBj
b25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCi1zdGF0aWMgY29uc3QgaW50IEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKLQogbmFtZXNwYWNlIEpTQyB7CiAKLSAg
ICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBF
eGVjU3RhdGU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgaW5saW5l
IGludCB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoaW50IGFyZ3VtZW50c1JlZ2lzdGVyKSB7
IHJldHVybiBhcmd1bWVudHNSZWdpc3RlciAtIDE7IH0KIApAQCAtODMsNiArODAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgVW5jb25kaXRpb25hbEZp
bmFsaXplciwgcHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgewogICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIGVu
dW0gQ29weVBhcnNlZEJsb2NrVGFnIHsgQ29weVBhcnNlZEJsb2NrIH07CiAgICAgcHJvdGVjdGVk
OgpAQCAtMTIzLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgd2hpbGUg
KHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQt
PmFsdGVybmF0aXZlKCk7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAgICAgICAg
IEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Cisg
ICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRU
eXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICNlbmRpZgpA
QCAtMTM0LDExICsxMzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9p
ZCBkdW1wU3RhdGlzdGljcygpOwogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEVfT1BD
T0RFX1NBTVBMSU5HCiAgICAgICAgIHZvaWQgZHVtcChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAg
ICAgdm9pZCBwcmludFN0cnVjdHVyZXMoY29uc3QgSW5zdHJ1Y3Rpb24qKSBjb25zdDsKICAgICAg
ICAgdm9pZCBwcmludFN0cnVjdHVyZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlv
biosIGludCBvcGVyYW5kKSBjb25zdDsKLSNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNTdHJpY3RN
b2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KIApAQCAtMTk0LDE1ICsxOTAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxN
ZXRob2RDYWxsTGlua0luZm8sIHVuc2lnbmVkLCBnZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29k
ZUluZGV4PihtX21ldGhvZENhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0lu
Zm9zLnNpemUoKSwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IDE7Ci0gICAgICAgICAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+
JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOwotICAg
ICAgICAgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IDE7Ci0gICAgICAgICAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5
dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMu
YmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJu
QWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OwotICAgICAgICB9CisgICAgICAgIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSosIFJldHVybkFkZHJlc3NQdHIpOwogCiAg
ICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Rm9yQ2FsbEF0SW5kZXgodW5zaWduZWQgaW5k
ZXgpCiAgICAgICAgIHsKQEAgLTIyMywxMSArMjExLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB7CiAgICAgICAgICAgICBtX2luY29taW5nQ2FsbHMucHVzaChpbmNvbWluZyk7CiAgICAg
ICAgIH0KKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHZvaWQgbGlua0luY29taW5nQ2FsbChM
TEludENhbGxMaW5rSW5mbyogaW5jb21pbmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faW5j
b21pbmdMTEludENhbGxzLnB1c2goaW5jb21pbmcpOworICAgICAgICB9CisjZW5kaWYgLy8gRU5B
QkxFKExMSU5UKQogICAgICAgICAKICAgICAgICAgdm9pZCB1bmxpbmtJbmNvbWluZ0NhbGxzKCk7
Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi0jaWYgRU5BQkxFKERGR19KSVQpCisj
aWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgdm9pZCBzZXRKSVRD
b2RlTWFwKFBhc3NPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IGppdENvZGVNYXApCiAgICAgICAg
IHsKICAgICAgICAgICAgIG1faml0Q29kZU1hcCA9IGppdENvZGVNYXA7CkBAIC0yMzYsNyArMjMw
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2pp
dENvZGVNYXAuZ2V0KCk7CiAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAKKyNpZiBFTkFCTEUo
REZHX0pJVCkKICAgICAgICAgdm9pZCBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKQogICAgICAg
ICB7CiAgICAgICAgICAgICBpZiAoISFtX2RmZ0RhdGEpCkBAIC0zMzUsMTIgKzMzMSwxMSBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSU5URVJQUkVU
RVIpCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uKiByZXR1cm5B
ZGRyZXNzKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocmV0dXJuQWRkcmVzcyA+PSBp
bnN0cnVjdGlvbnMoKS5iZWdpbigpICYmIHJldHVybkFkZHJlc3MgPCBpbnN0cnVjdGlvbnMoKS5l
bmQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1
cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgICAgIH0KLSNlbmRpZgog
CiAgICAgICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmlj
Q29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmlj
Q29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9u
KCkgeyByZXR1cm4gbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KQEAgLTM1NCwxNyArMzQ5
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIG1fc2hvdWxkRGlz
Y2FyZEJ5dGVjb2RlID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICB2b2lkIGhhbmRsZUJ5dGVj
b2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCEh
YWx0ZXJuYXRpdmUoKSkKLSAgICAgICAgICAgICAgICBkaXNjYXJkQnl0ZWNvZGUoKTsKLSAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBkaXNjYXJkQnl0ZWNvZGVMYXRlcigpOwotICAg
ICAgICB9CisgICAgICAgIHZvaWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHko
KTsKICAgICAgICAgCi0jaWZuZGVmIE5ERUJVRwogICAgICAgICBib29sIHVzZXNPcGNvZGUoT3Bj
b2RlSUQpOwotI2VuZGlmCiAKICAgICAgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCgpIHsg
cmV0dXJuIG1faW5zdHJ1Y3Rpb25Db3VudDsgfQogICAgICAgICB2b2lkIHNldEluc3RydWN0aW9u
Q291bnQodW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCkgeyBtX2luc3RydWN0aW9uQ291bnQgPSBp
bnN0cnVjdGlvbkNvdW50OyB9CkBAIC0zODcsMTcgKzM3NCwyNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZSogZXhlY3V0YWJsZU1lbW9yeSgpIHsgcmV0
dXJuIGdldEpJVENvZGUoKS5nZXRFeGVjdXRhYmxlTWVtb3J5KCk7IH0KICAgICAgICAgdmlydHVh
bCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSop
ID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCkgPSAwOworICAgICAgICBib29s
IGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspIHsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklU
KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBqaXRDb21waWxlSW1wbChnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpID0g
MDsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCkgPSAwOwogICAgICAg
ICBib29sIGhhc09wdGltaXplZFJlcGxhY2VtZW50KCkKICAgICAgICAgewotICAgICAgICAgICAg
QVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAg
ICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CiAgICAgICAg
ICAgICBib29sIHJlc3VsdCA9IHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA+IGdldEpJVFR5
cGUoKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICAgICBpZiAocmVzdWx0KQogICAg
ICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29k
ZTo6REZHSklUKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChy
ZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAg
ICAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXBsYWNlbWVudCgp
LT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKSA9
PSB0aGlzKTsKICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtNDU2LDE4ICs0NTIsMjEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjbGVhckV2YWxDYWNoZSgpOwogCi0jaWYgRU5B
QkxFKElOVEVSUFJFVEVSKQogICAgICAgICB2b2lkIGFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b24odW5zaWduZWQgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1f
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBwZW5kKHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b24pOworICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5hcHBlbmQocHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCBhZGRHbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb24odW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0g
ICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rp
b25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAgICAg
IGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uQXRCeXRlY29kZU9mZnNldCh1bnNpZ25l
ZCBieXRlY29kZU9mZnNldCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBMTEludENhbGxM
aW5rSW5mbyogYWRkTExJbnRDYWxsTGlua0luZm8oKQorICAgICAgICB7CisgICAgICAgICAgICBt
X2xsaW50Q2FsbExpbmtJbmZvcy5hcHBlbmQoTExJbnRDYWxsTGlua0luZm8oKSk7CisgICAgICAg
ICAgICByZXR1cm4gJm1fbGxpbnRDYWxsTGlua0luZm9zLmxhc3QoKTsKKyAgICAgICAgfQogI2Vu
ZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBzZXROdW1iZXJPZlN0cnVjdHVyZVN0
dWJJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZvcy5ncm93KHNpemUpOyB9
CkBAIC00NzYsOCArNDc1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBhZGRH
bG9iYWxSZXNvbHZlSW5mbyh1bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGlmIChtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAgICAg
ICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhn
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKKyAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUlu
Zm9zLmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsK
ICAgICAgICAgfQogICAgICAgICBHbG9iYWxSZXNvbHZlSW5mbyYgZ2xvYmFsUmVzb2x2ZUluZm8o
aW50IGluZGV4KSB7IHJldHVybiBtX2dsb2JhbFJlc29sdmVJbmZvc1tpbmRleF07IH0KICAgICAg
ICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQpOwpAQCAtNDg4LDYgKzQ4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHZvaWQgYWRkTWV0aG9kQ2FsbExpbmtJbmZvcyh1bnNpZ25lZCBuKSB7IEFTU0VSVChtX2ds
b2JhbERhdGEtPmNhblVzZUpJVCgpKTsgbV9tZXRob2RDYWxsTGlua0luZm9zLmdyb3cobik7IH0K
ICAgICAgICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RDYWxsTGlua0luZm8oaW50IGluZGV4
KSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5mb3NbaW5kZXhdOyB9CisgICAgICAgIHNpemVf
dCBudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MoKSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5r
SW5mb3Muc2l6ZSgpOyB9CiAjZW5kaWYKICAgICAgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJ
TEVSKQpAQCAtNTI4LDYgKzUyNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKSkgLSAxXS51LnBy
b2ZpbGUgPT0gcmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
KyAgICAgICAgUHJlZGljdGVkVHlwZSB2YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVP
ZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4g
dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5jb21wdXRlVXBk
YXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdW5zaWduZWQg
dG90YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMoKQogICAgICAgICB7CkBAIC01NTQsMTIgKzU1Nywx
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtl
U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAo
IW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4g
dmFsdWUgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3Rh
dGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9u
czo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIGJvb2wgY291bGRUYWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gcmFy
ZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7
CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VN
aW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVu
dHJ5Q291bnQgPj0gT3B0aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAg
IH0KQEAgLTU3OCwxMiArNTg1LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAg
ICAgYm9vbCBsaWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQog
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNp
YWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgcmV0dXJuIHNwZWNpYWxG
YXN0Q2FzZUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50
ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4oc3BlY2lhbEZhc3RDYXNlQ291bnQpIC8gbV9leGVjdXRp
b25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwog
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZURlZXBlc3RTbG93
Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVt
YmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5z
aWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNp
Z25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgLSBzcGVjaWFsRmFzdENhc2VDb3VudDsKQEAgLTU5
Miw2ICs2MDMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlr
ZWx5VG9UYWtlQW55U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHNsb3dDYXNlQ291bnQgPSByYXJl
Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsK
ICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RD
YXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwog
ICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBzbG93Q2FzZUNvdW50ICsgc3BlY2lhbEZhc3RD
YXNlQ291bnQ7CkBAIC02ODMsNyArNjk2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAog
ICAgICAgICBib29sIGFkZEZyZXF1ZW50RXhpdFNpdGUoY29uc3QgREZHOjpGcmVxdWVudEV4aXRT
aXRlJiBzaXRlKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09
IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jh
c2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBtX2V4aXRQcm9m
aWxlLmFkZChzaXRlKTsKICAgICAgICAgfQogCkBAIC03ODgsNiArODAxLDI5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbShDb2RlQmxvY2sqIGFs
dGVybmF0aXZlKTsKICAgICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2
ZSgpOwogICAgICAgICAKKyAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVu
IEpJVHRpbmcga2lja3MgaW4sIGluIGEgbWl4ZWQgbW9kZQorICAgICAgICAvLyBleGVjdXRpb24g
d29ybGQuCisgICAgICAgIAorICAgICAgICB2b2lkIGRvbnRKSVRBbnl0aW1lU29vbigpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgdm9pZCBqaXRBZnRlcldhcm1VcCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckpJVEFmdGVyV2FybVVwOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdFNv
b24oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRp
b25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBpbnQzMl90IGxsaW50RXhlY3V0ZUNvdW50ZXIoKSBjb25zdAorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICB9Cisg
ICAgICAgIAogICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gdGllcmVk
IGNvbXBpbGF0aW9uIGtpY2tzIGluLiBUaGlzCiAgICAgICAgIC8vIGNvbnRyb2xzIGJvdGggd2hl
biB0aGUgb3B0aW1pemluZyBjb21waWxlciBpcyBpbnZva2VkIGFuZCB3aGVuIE9TUgogICAgICAg
ICAvLyBlbnRyeSBoYXBwZW5zLiBUd28gdHJpZ2dlcnMgZXhpc3Q6IHRoZSBsb29wIHRyaWdnZXIg
YW5kIHRoZSByZXR1cm4KQEAgLTk4MCw2ICsxMDE2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGJvb2wgbV9zaG91bGREaXNjYXJkQnl0ZWNvZGU7CiAKICAgICBwcm90ZWN0ZWQ6CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwogICAgICAgICAKQEAg
LTk5Miw3ICsxMDI5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgdGFsbHlGcmVx
dWVudEV4aXRTaXRlcygpIHsgfQogI2VuZGlmCiAgICAgICAgIAotI2lmICFkZWZpbmVkKE5ERUJV
RykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKICAgICAgICAgdm9pZCBkdW1wKEV4ZWNTdGF0
ZSosIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiBiZWdpbiwgVmVj
dG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImKSBjb25zdDsKIAogICAgICAgICBDU3Ry
aW5nIHJlZ2lzdGVyTmFtZShFeGVjU3RhdGUqLCBpbnQgcikgY29uc3Q7CkBAIC0xMDAyLDcgKzEw
MzgsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBwcmludEdldEJ5SWRPcChFeGVj
U3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9y
JiwgY29uc3QgY2hhciogb3ApIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50Q2FsbE9wKEV4ZWNT
dGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3Im
LCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoRXhl
Y1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRv
ciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKLSNlbmRpZgogICAgICAgICB2b2lkIHZpc2l0U3Ry
dWN0dXJlcyhTbG90VmlzaXRvciYsIEluc3RydWN0aW9uKiB2UEMpIGNvbnN0OwogICAgICAgICAK
ICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTEwNjMsOSArMTA5OCwxMSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5z
aWduZWQgbV9zb3VyY2VPZmZzZXQ7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAg
IFZlY3Rvcjx1bnNpZ25lZD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKICAgICAgICAg
VmVjdG9yPHVuc2lnbmVkPiBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnM7CisjaWYgRU5BQkxF
KExMSU5UKQorICAgICAgICBTZWdtZW50ZWRWZWN0b3I8TExJbnRDYWxsTGlua0luZm8sIDg+IG1f
bGxpbnRDYWxsTGlua0luZm9zOworICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxs
TGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiA+IG1faW5j
b21pbmdMTEludENhbGxzOwogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgVmVjdG9y
PFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0cnVjdHVyZVN0dWJJbmZvczsKQEAgLTEwNzYsOSArMTEx
MywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1f
aml0Q29kZVdpdGhBcml0eUNoZWNrOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExp
bmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0Nh
bGxzOwogI2VuZGlmCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8
IEVOQUJMRShMTElOVCkKICAgICAgICAgT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENv
ZGVNYXA7Ci0gICAgICAgIAorI2VuZGlmCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHN0
cnVjdCBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbiB7CiAgICAgICAgICAgICBXZWFrUmVmZXJlbmNl
VHJhbnNpdGlvbigpIHsgfQogICAgICAgICAgICAgCkBAIC0xMTQxLDEyICsxMTc5LDE0IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93blB0cjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7
CiAgICAgICAgIAorICAgICAgICBpbnQzMl90IG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAg
ICAgCiAgICAgICAgIGludDMyX3QgbV9qaXRFeGVjdXRlQ291bnRlcjsKICAgICAgICAgdWludDMy
X3QgbV9zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1
bGF0aXZlRmFpbENvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9vcHRpbWl6YXRpb25EZWxheUNv
dW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKLQor
ICAgICAgICAKICAgICAgICAgc3RydWN0IFJhcmVEYXRhIHsKICAgICAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHB1YmxpYzoKQEAgLTEyMTksNiArMTI1OSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCog
Y29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJ
bXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1l
bnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYK
QEAgLTEyNTMsNiArMTI5NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAg
ICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29w
ZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAg
dmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0
dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNv
bXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKQEAgLTEyOTAsNiArMTMzMiw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9w
dGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xv
YmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAg
ICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJl
dmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjAgKzI3LDQ5IEBACiAjaW5jbHVkZSAi
R2V0QnlJZFN0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTG93
TGV2ZWxJbnRlcnByZXRlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorR2V0QnlJZFN0YXR1cyBH
ZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgVU5VU0VE
X1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsK
KyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
ICsgYnl0ZWNvZGVJbmRleDsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUg
PT0gbGxpbnRfb3BfbWV0aG9kX2NoZWNrKQorICAgICAgICBpbnN0cnVjdGlvbisrOworCisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKTsK
KyAgICBpZiAoIXN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisgICAgCisgICAgc2l6
ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCks
IGlkZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gR2V0
QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNl
KTsKKyAgICAKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhTaW1wbGVEaXJlY3QsIFN0cnVjdHVy
ZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQsIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJuIEdldEJ5
SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7
CisjZW5kaWYKK30KKwogR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENv
ZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmll
ciYgaWRlbnQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNF
RF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVO
QUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxv
Y2stPm51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRl
RnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAg
ICAvLyBGaXJzdCBjaGVjayBpZiBpdCBtYWtlcyBlaXRoZXIgY2FsbHMsIGluIHdoaWNoIGNhc2Ug
d2Ugd2FudCB0byBiZSBzdXBlciBjYXJlZnVsLCBvcgogICAgIC8vIGlmIGl0J3Mgbm90IHNldCBh
dCBhbGwsIGluIHdoaWNoIGNhc2Ugd2UgcHVudC4KICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1
YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mbyhieXRlY29kZUluZGV4KTsKICAgICBp
ZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3Jt
YXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRl
RnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAKICAg
ICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIGxpc3Q7CiAgICAgaW50IGxpc3RTaXpl
OwpAQCAtNjAsMTggKzg5LDE5IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvcigKICAgICB9CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAg
ICAgICAgIGlmICghbGlzdC0+bGlzdFtpXS5pc0RpcmVjdCkKLSAgICAgICAgICAgIHJldHVybiBH
ZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAg
ICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBTdHJ1Y3R1cmVTZXQoKSwg
bm90Rm91bmQsIHRydWUpOwogICAgIH0KICAgICAKICAgICAvLyBOZXh0IGNoZWNrIGlmIGl0IHRh
a2VzIHNsb3cgY2FzZSwgaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIGtpbmQgb2YgY2FyZWZ1
bC4KICAgICBpZiAocHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJ
bmRleCkpCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVj
dHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2Vz
U2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7CiAgICAgCiAgICAgLy8g
RmluYWxseSBmaWd1cmUgb3V0IGlmIHdlIGNhbiBkZXJpdmUgYW4gYWNjZXNzIHN0cmF0ZWd5Lgog
ICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OworICAgIHJlc3VsdC5tX3dhc1NlZW5JbkpJVCA9IHRy
dWU7CiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3Nf
dW5zZXQ6Ci0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVj
dHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHBy
b2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAgICAgY2FzZSBh
Y2Nlc3NfZ2V0X2J5X2lkX3NlbGY6IHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBz
dHViSW5mby51LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CkBAIC0xMzAs
NyArMTYwLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAg
IAogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZSAvLyBFTkFCTEUoSklUKQotICAgIHJldHVybiBH
ZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7Cisg
ICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5v
dEZvdW5kLCBmYWxzZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAx
MDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMCArNDksMTEgQEAgcHVibGljOgogICAgIHsKICAgICB9
CiAgICAgCi0gICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0
JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQpCisgICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBz
dGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQsIGJv
b2wgd2FzU2VlbkluSklUKQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9z
dHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAg
ICAgICAgLCBtX3dhc1NlZW5JbkpJVCh3YXNTZWVuSW5KSVQpCiAgICAgewogICAgICAgICBBU1NF
UlQoKHN0YXRlID09IFNpbXBsZURpcmVjdCkgPT0gKG9mZnNldCAhPSBub3RGb3VuZCkpOwogICAg
IH0KQEAgLTcwLDEwICs3MSwxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBz
dHJ1Y3R1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsgfQogICAgIHNpemVf
dCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAorICAgIGJvb2wgd2Fz
U2VlbkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KKyAgICAKIHByaXZh
dGU6CisgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sq
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUg
bV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CiAgICAgc2l6ZV90IG1f
b2Zmc2V0OworICAgIGJvb2wgbV93YXNTZWVuSW5KSVQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBK
U0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5o
CShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogICAgIGNsYXNzIFN0
cnVjdHVyZUNoYWluOworICAgIHN0cnVjdCBMTEludENhbGxMaW5rSW5mbzsKICAgICBzdHJ1Y3Qg
VmFsdWVQcm9maWxlOwogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE0Niw2ICsxNDcsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlvbiB7CisgICAgICAg
IEluc3RydWN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgdS5qc0NlbGwuY2xlYXIoKTsK
KyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oT3Bjb2RlIG9wY29kZSkK
ICAgICAgICAgewogI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKQEAgLTE4
Miw2ICsxODgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBJbnN0cnVjdGlvbihQcm9w
ZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRl
ckZ1bmM7IH0KICAgICAgICAgCisgICAgICAgIEluc3RydWN0aW9uKExMSW50Q2FsbExpbmtJbmZv
KiBjYWxsTGlua0luZm8pIHsgdS5jYWxsTGlua0luZm8gPSBjYWxsTGlua0luZm87IH0KKyAgICAg
ICAgCiAgICAgICAgIEluc3RydWN0aW9uKFZhbHVlUHJvZmlsZSogcHJvZmlsZSkgeyB1LnByb2Zp
bGUgPSBwcm9maWxlOyB9CiAKICAgICAgICAgdW5pb24gewpAQCAtMTkxLDcgKzE5OSw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFp
bj4gc3RydWN0dXJlQ2hhaW47CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4g
anNDZWxsOwogICAgICAgICAgICAgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVu
YzsKKyAgICAgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm87CiAgICAgICAg
ICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7CisgICAgICAgICAgICB2b2lkKiBwb2ludGVyOwog
ICAgICAgICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDYWxsTGlua0luZm9faAorI2RlZmlu
ZSBMTEludENhbGxMaW5rSW5mb19oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVk
ZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2Vk
TGlzdC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOworCitzdHJ1
Y3QgTExJbnRDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRD
YWxsTGlua0luZm8+IHsKKyAgICBMTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgIH0KKyAg
ICAKKyAgICB+TExJbnRDYWxsTGlua0luZm8oKQorICAgIHsKKyAgICAgICAgaWYgKGlzT25MaXN0
KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0xpbmtl
ZCgpIHsgcmV0dXJuIGNhbGxlZTsgfQorICAgIAorICAgIHZvaWQgdW5saW5rKCkKKyAgICB7Cisg
ICAgICAgIGNhbGxlZS5jbGVhcigpOworICAgICAgICBtYWNoaW5lQ29kZVRhcmdldCA9IE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cigpOworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAg
IHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2Fs
bGVlOworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBsYXN0U2VlbkNhbGxlZTsKKyAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFjaGluZUNvZGVUYXJnZXQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBKU0MKKworI2VuZGlmIC8vIExMSW50Q2FsbExpbmtJbmZvX2gKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0
dXMuY3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwx
MSBAQCBNZXRob2RDYWxsTGlua1N0YXR1cyBNZXRob2RDYWxsTGlua1N0YXR1CiAgICAgVU5VU0VE
X1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsK
ICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgLy8gTk9URTog
VGhpcyBkb2VzIG5vdCBoYXZlIGFuIExMSW50IGZhbGwtYmFjayBiZWNhdXNlIExMSW50IGRvZXMg
bm90IGRvIGFueSBtZXRob2QKKyAgICAvLyBjYWxsIGxpbmsgY2FjaGluZy4KKyAgICBpZiAoIXBy
b2ZpbGVkQmxvY2stPm51bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZvcygpKQorICAgICAgICByZXR1
cm4gTWV0aG9kQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAKICAgICBNZXRob2RDYWxsTGlua0luZm8m
IG1ldGhvZENhbGwgPSBwcm9maWxlZEJsb2NrLT5nZXRNZXRob2RDYWxsTGlua0luZm8oYnl0ZWNv
ZGVJbmRleCk7CiAgICAgCiAgICAgaWYgKCFtZXRob2RDYWxsLnNlZW4gfHwgIW1ldGhvZENhbGwu
Y2FjaGVkU3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
Y29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNv
ZGUuaAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAg
IG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbiwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5
KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1h
Y3JvKG9wX3B1dF9ieV9pZF9nZW5lcmljLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9p
ZCwgNCkgXApAQCAtMjAyLDYgKzIwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBl
ZGVmIGVudW0geyBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0lEX0VOVU0pIH0gT3Bjb2RlSUQ7
CiAgICAgI3VuZGVmIE9QQ09ERV9JRF9FTlVNCiAKKyAgICBjb25zdCBpbnQgbWF4T3Bjb2RlTGVu
Z3RoID0gOTsKICAgICBjb25zdCBpbnQgbnVtT3Bjb2RlSURzID0gb3BfZW5kICsgMTsKIAogICAg
ICNkZWZpbmUgT1BDT0RFX0lEX0xFTkdUSFMoaWQsIGxlbmd0aCkgY29uc3QgaW50IGlkIyNfbGVu
Z3RoID0gbGVuZ3RoOwpAQCAtMjE4LDcgKzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBGT1JfRUFDSF9PUENPREVfSUQoVkVSSUZZX09QQ09ERV9JRCk7CiAgICAgI3VuZGVmIFZFUklG
WV9PUENPREVfSUQKIAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lm
IEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAjaWYg
Q09NUElMRVIoUlZDVCkgfHwgQ09NUElMRVIoSU5URUwpCiAgICAgdHlwZWRlZiB2b2lkKiBPcGNv
ZGU7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyNyAr
MjcsNjkgQEAKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiU3RydWN0
dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAK
K1B1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50
KQoreworICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0o
Ynl0ZWNvZGVJbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKKyNpZiBFTkFCTEUoTExJ
TlQpCisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOworICAgIGlmICghc3RydWN0
dXJlKQorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAw
LCBub3RGb3VuZCk7CisgICAgCisgICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxs
aW50X29wX3B1dF9ieV9pZCkgeworICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5n
ZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgICAgICBpZiAob2Zm
c2V0ID09IG5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFB1
dEJ5SWRTdGF0dXMoU2ltcGxlUmVwbGFjZSwgc3RydWN0dXJlLCAwLCAwLCBvZmZzZXQpOworICAg
IH0KKyAgICAKKyAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0CisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBd
LnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAg
CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls2XS51LnN0cnVjdHVy
ZS5nZXQoKTsKKyAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBpbnN0cnVjdGlvbls3XS51LnN0
cnVjdHVyZUNoYWluLmdldCgpOworICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUpOworICAgIEFTU0VS
VChjaGFpbik7CisgICAgCisgICAgc2l6ZV90IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0KCpw
cm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5v
dEZvdW5kKQorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAw
LCAwLCBub3RGb3VuZCk7CisgICAgCisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlVHJh
bnNpdGlvbiwgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNoYWluLCBvZmZzZXQpOworI2Vsc2UK
KyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3Vu
ZCk7CisjZW5kaWYKK30KKwogUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9y
KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRp
ZmllciYgaWRlbnQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVO
VVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lm
IEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVk
QmxvY2stPm51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21w
dXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAK
ICAgICBpZiAocHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRl
eCkpCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAs
IG5vdEZvdW5kKTsKICAgICAKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9m
aWxlZEJsb2NrLT5nZXRTdHViSW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZv
LnNlZW4pCi0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAs
IDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRC
bG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgIAogICAgIHN3aXRjaCAoc3R1YkluZm8u
YWNjZXNzVHlwZSkgewogICAgIGNhc2UgYWNjZXNzX3Vuc2V0OgotICAgICAgICByZXR1cm4gUHV0
QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJl
dHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50
KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6IHsKICAgICAg
ICAgc2l6ZV90IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0
cnVjdHVyZS0+Z2V0KApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw4
IEBAIHB1YmxpYzoKICAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7
IH0KICAgICAKIHByaXZhdGU6CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21M
TEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7Cisg
ICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOwog
ICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2
aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0
ZXIuaCIKICNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5o
IgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKQEAgLTExNiwyNiArMTE3LDE2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIGV4cGVjdGVkIGJ5IHRoZSBjYWxsZWUuCiAqLwogCi0jaWZuZGVmIE5ERUJVRwog
c3RhdGljIGJvb2wgc19kdW1wc0dlbmVyYXRlZENvZGUgPSBmYWxzZTsKLSNlbmRpZgogCiB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUoYm9vbCBkdW1wc0dlbmVy
YXRlZENvZGUpCiB7Ci0jaWZuZGVmIE5ERUJVRwogICAgIHNfZHVtcHNHZW5lcmF0ZWRDb2RlID0g
ZHVtcHNHZW5lcmF0ZWRDb2RlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZHVtcHNHZW5lcmF0
ZWRDb2RlKTsKLSNlbmRpZgogfQogCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVy
YXRlZENvZGUoKQogewotI2lmbmRlZiBOREVCVUcKICAgICByZXR1cm4gc19kdW1wc0dlbmVyYXRl
ZENvZGU7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCiBKU09iamVjdCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKQEAgLTE0OCwxMCArMTM5LDggQEAgSlNPYmpl
Y3QqIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCiAKICAgICBtX2NvZGVCbG9jay0+c2V0
SW5zdHJ1Y3Rpb25Db3VudChtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIAot
I2lmbmRlZiBOREVCVUcKICAgICBpZiAoc19kdW1wc0dlbmVyYXRlZENvZGUpCiAgICAgICAgIG1f
Y29kZUJsb2NrLT5kdW1wKG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkp
OwotI2VuZGlmCiAKICAgICBpZiAoKG1fY29kZVR5cGUgPT0gRnVuY3Rpb25Db2RlICYmICFtX2Nv
ZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpICYmICFtX2NvZGVCbG9jay0+dXNlc0FyZ3Vt
ZW50cygpKSB8fCBtX2NvZGVUeXBlID09IEV2YWxDb2RlKQogICAgICAgICBzeW1ib2xUYWJsZSgp
LmNsZWFyKCk7CkBAIC0xMjc2LDkgKzEyNjUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgbV9jb2RlQmxvY2stPmFk
ZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBF
TkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZl
SW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgICAgICBWYWx1
ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hl
Y2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ0MCw5ICsxNDI3
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJM
RShKSVQpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9u
cygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2Rl
QmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkp
OwotI2VuZGlmCiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2Rl
KHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9y
ZXNvbHZlX2dsb2JhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4
KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpA
QCAtMTQ5MCw5ICsxNDc1LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRS
ZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJ
bmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVU
RVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVj
dGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1p
dFByb2ZpbGVkT3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFs
X2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KHByb3BEc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFu
dChwcm9wZXJ0eSkpOwpAQCAtMTUxMSw5ICsxNDk0LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdE1ldGhvZENoZWNrKAogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxv
Y2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
LSNlbmRpZgogCiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2Rl
KG9wX2dldF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7
CkBAIC0xNTM5LDkgKzE1MjAsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdldEFyCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdp
c3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFs
dWUpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKIAog
ICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
YmFzZS0+aW5kZXgoKSk7CkBAIC0xNTU3LDkgKzE1MzYsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RGlyZWN0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAg
IG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygp
LnNpemUoKSk7Ci0jZW5kaWYKICAgICAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTg0OCw3ICsxODI1
LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCgKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsg
Ly8gYXJnQ291bnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdp
c3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygp
KTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworI2VuZGlmCiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7
CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9j
YWxsX3B1dF9yZXN1bHQpOwpAQCAtMTk1Miw3ICsxOTMzLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Q29uc3QKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+
aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50
cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0
ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1f
Y29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwog
ICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSog
cHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMjIx
Myw3ICsyMTk4LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gK
IHsKICAgICBtX3VzZXNFeGNlcHRpb25zID0gdHJ1ZTsKICNpZiBFTkFCTEUoSklUKQorI2lmIEVO
QUJMRShMTElOVCkKKyAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwg
ZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVw
dGggKyBtX2Jhc2VTY29wZURlcHRoLCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF9vcF9jYXRjaCkpIH07CisjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7
IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUo
KSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxh
YmVsKCkgfTsKKyNlbmRpZgogI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+
YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHlu
YW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lv
biAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA0LDkgKzYwNCw3IEBAIHByaXZhdGU6CiAgICAgewog
ICAgICAgICBVTlVTRURfUEFSQU0obm9kZUluZGV4KTsKICAgICAgICAgCi0gICAgICAgIFZhbHVl
UHJvZmlsZSogcHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFs
dWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIEFTU0VS
VChwcm9maWxlKTsKLSAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS0+
Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGlj
dGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlUHJl
ZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogI2lmIERGR19FTkFCTEUo
REVCVUdfVkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCJEeW5hbWljIFtAJXUsIGJjIyV1XSBwcmVk
aWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4LCBieXRlY29kZUluZGV4LCBwcmVkaWN0aW9uVG9TdHJp
bmcocHJlZGljdGlvbikpOwogI2VuZGlmCkBAIC0xMDQxLDYgKzEwMzksOSBAQCBib29sIEJ5dGVD
b2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhib29sCiAgICAgCiAgICAgLy8gSWYgd2UgZ2V0IGhl
cmUgdGhlbiBpdCBsb29rcyBsaWtlIHdlIHNob3VsZCBkZWZpbml0ZWx5IGlubGluZSB0aGlzIGNv
ZGUuIFByb2NlZWQKICAgICAvLyB3aXRoIHBhcnNpbmcgdGhlIGNvZGUgdG8gZ2V0IGJ5dGVjb2Rl
LCBzbyB0aGF0IHdlIGNhbiB0aGVuIHBhcnNlIHRoZSBieXRlY29kZS4KKyAgICAvLyBOb3RlIHRo
YXQgaWYgTExJbnQgaXMgZW5hYmxlZCwgdGhlIGJ5dGVjb2RlIHdpbGwgYWx3YXlzIGJlIGF2YWls
YWJsZS4gQWxzbyBub3RlCisgICAgLy8gdGhhdCBpZiBMTEludCBpcyBlbmFibGVkLCB3ZSBtYXkg
aW5saW5lIGEgY29kZSBibG9jayB0aGF0IGhhcyBuZXZlciBiZWVuIEpJVHRlZAorICAgIC8vIGJl
Zm9yZSEKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fY29kZUJsb2NrQ2FjaGUuZ2V0KENv
ZGVCbG9ja0tleShleGVjdXRhYmxlLCBraW5kKSwgZXhwZWN0ZWRGdW5jdGlvbi0+c2NvcGUoKSk7
CiAgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3NDEsNyAr
MTc0Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAg
ICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fY3VycmVudElu
ZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG1ldGhvZENhbGxTdGF0dXMuaXNT
ZXQoKQotICAgICAgICAgICAgICAgICYmICFnZXRCeUlkU3RhdHVzLmlzU2V0KCkKKyAgICAgICAg
ICAgICAgICAmJiAhZ2V0QnlJZFN0YXR1cy53YXNTZWVuSW5KSVQoKQogICAgICAgICAgICAgICAg
ICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVu
dEluZGV4LCBCYWRDYWNoZSkpIHsKICAgICAgICAgICAgICAgICAvLyBJdCdzIG1vbm9tb3JwaGlj
IGFzIGZhciBhcyB3ZSBjYW4gdGVsbCwgc2luY2UgdGhlIG1ldGhvZF9jaGVjayB3YXMgbGlua2Vk
CiAgICAgICAgICAgICAgICAgLy8gYnV0IHRoZSBzbG93IHBhdGggKGkuZS4gdGhlIG5vcm1hbCBn
ZXRfYnlfaWQpIG5ldmVyIGZpcmVkLgpAQCAtMTgxMCw3ICsxODExLDkgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAgICAgICBORVhUX09QQ09ERShv
cF9nZXRfYnlfaWQpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7Cisg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWw6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rp
b25bM10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJl
bnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRp
Zmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJ
bnN0cnVjdGlvblsyXS51Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiAr
MTExLDggQEAgaW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNh
c2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBv
cF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6Cisg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRf
Z2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bfam1w
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBp
bGVyLmNwcAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwyMSBAQCB2
b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICB1aW50MzJfdCBleGl0SW5k
ZXggPSBnbG9iYWxEYXRhLT5vc3JFeGl0SW5kZXg7CiAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVC
bG9jay0+b3NyRXhpdChleGl0SW5kZXgpOwogICAgIAorICAgIC8vIE1ha2Ugc3VyZSBhbGwgY29k
ZSBvbiBvdXIgaW5saW5lIHN0YWNrIGlzIEpJVCBjb21waWxlZC4gVGhpcyBpcyBuZWNlc3Nhcnkg
c2luY2UKKyAgICAvLyB3ZSBtYXkgb3B0IHRvIGlubGluZSBhIGNvZGUgYmxvY2sgZXZlbiBiZWZv
cmUgaXQgaGFkIGV2ZXIgYmVlbiBjb21waWxlZCBieSB0aGUKKyAgICAvLyBKSVQsIGJ1dCBvdXIg
T1NSIGV4aXQgaW5mcmFzdHJ1Y3R1cmUgY3VycmVudGx5IG9ubHkgd29ya3MgaWYgdGhlIHRhcmdl
dCBvZiB0aGUKKyAgICAvLyBPU1IgZXhpdCBpcyBKSVQgY29kZS4gVGhpcyBjb3VsZCBiZSBjaGFu
Z2VkIHNpbmNlIHRoZXJlIGlzIG5vdGhpbmcgcGFydGljdWxhcmx5CisgICAgLy8gaGFyZCBhYm91
dCBkb2luZyBhbiBPU1IgZXhpdCBpbnRvIHRoZSBpbnRlcnByZXRlciwgYnV0IGZvciBub3cgdGhp
cyBzZWVtcyB0byBtYWtlCisgICAgLy8gc2Vuc2UgaW4gdGhhdCBpZiB3ZSdyZSBPU1IgZXhpdGlu
ZyBmcm9tIGlubGluZWQgY29kZSBvZiBhIERGRyBjb2RlIGJsb2NrLCB0aGVuCisgICAgLy8gcHJv
YmFibHkgaXQncyBhIGdvb2Qgc2lnbiB0aGF0IHRoZSB0aGluZyB3ZSdyZSBleGl0aW5nIGludG8g
aXMgaG90LiBFdmVuIG1vcmUKKyAgICAvLyBpbnRlcmVzdGluZ2x5LCBzaW5jZSB0aGUgY29kZSB3
YXMgaW5saW5lZCwgaXQgbWF5IG5ldmVyIG90aGVyd2lzZSBnZXQgSklUCisgICAgLy8gY29tcGls
ZWQgc2luY2UgdGhlIGFjdCBvZiBpbmxpbmluZyBpdCBtYXkgZW5zdXJlIHRoYXQgaXQgb3RoZXJ3
aXNlIG5ldmVyIHJ1bnMuCisgICAgZm9yIChDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1f
Y29kZU9yaWdpbjsgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVyKSB7CisgICAgICAgIHN0YXRpY19jYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxl
LmdldCgpKQorICAgICAgICAgICAgLT5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZS0+aXNDYWxsID8gQ29kZUZvckNhbGwgOiBDb2RlRm9yQ29uc3RydWN0KQor
ICAgICAgICAgICAgLT5qaXRDb21waWxlKCpnbG9iYWxEYXRhKTsKKyAgICB9CisgICAgCiAgICAg
U3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkgPSAwOwogICAgIGlmIChleGl0Lm1fcmVjb3Zl
cnlJbmRleCkKICAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5zcGVjdWxhdGlvblJlY292
ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4IC0gMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
LDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdPU1JFeGl0
LmgiCiAjaW5jbHVkZSAiREZHUmVwYXRjaC5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFs
dWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbmxpbmVBU00uaCIK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNjcxLDQ4ICs2NzIsNiBAQCBzaXplX3QgREZH
X09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmlj
dEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2Rl
KGVuY29kZWRPcDIpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0
Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOwotCi0jaWYgQ1BVKFg4Nl82
NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0g
ICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKLSAgICAibW92ICVyMTMsICVyZGlcbiIKLSAgICAi
am1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRo
RXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKFg4NikKLWFzbSAoCi0iLmdsb2JsICIgU1lN
Qk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJWVkaSksICVlZGlc
biIKLSAgICAibW92ICVlZGksIDQoJWVzcClcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19S
RUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwot
I2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20gKAotIi50ZXh0IiAiXG4iCi0iLmFsaWduIDIiICJc
biIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIK
LUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLSIudGh1bWIiICJcbiIK
LSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkg
IlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAg
ICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKLSAgICAiY3B5IHIwLCByNSIgIlxuIgotICAgICJi
ICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhl
Y1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0KLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04g
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQotewot
ICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7Ci0gICAg
TmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKLSAgICAKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVy
blZhbHVlKTsKLX0KLQogc3RhdGljIHZvaWQqIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhl
Y0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsK
ICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgJKHJldmlzaW9u
IDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0FsbG9jYXRpb25TcGFjZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogY2xh
c3MgSGVhcDsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIE1hcmtlZEJsb2Nr
OwogCiBjbGFzcyBBbGxvY2F0aW9uU3BhY2UgewpAQCAtNjcsNiArNjgsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzaHJpbmsoKTsKICAgICAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICBlbnVtIEFsbG9jYXRpb25FZmZvcnQgeyBBbGxv
Y2F0aW9uQ2FuRmFpbCwgQWxsb2NhdGlvbk11c3RTdWNjZWVkIH07CiAKICAgICB2b2lkKiBhbGxv
Y2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzNyw3ICs4MzcsNyBAQCB2b2lkIEhlYXA6
OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnCiAgICAgICAgIHNldEhpZ2hXYXRlck1hcmso
bWF4KHByb3BvcnRpb25hbEJ5dGVzLCBtX21pbkJ5dGVzUGVyQ3ljbGUpKTsKICAgICB9CiAgICAg
SkFWQVNDUklQVENPUkVfR0NfRU5EKCk7Ci0KKyAgICAKICAgICAoKm1fYWN0aXZpdHlDYWxsYmFj
aykoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTA2
MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MCw2ICs1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0
YTsKICAgICBjbGFzcyBKU1ZhbHVlOwogICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQXJndW1lbnRC
dWZmZXI7CiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlOwogICAgIGNsYXNzIFVTdHJpbmc7CkBAIC0x
MzYsMTEgKzEzNywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2
YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNs
YXNzIEFsbG9jYXRpb25TcGFjZTsKKyAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgZnJpZW5k
IGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQnVtcFNwYWNlOwogICAg
ICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBDb2Rl
QmxvY2s7CiAKICAgICAgICAgc2l6ZV90IHdhdGVyTWFyaygpOwogICAgICAgICBzaXplX3QgaGln
aFdhdGVyTWFyaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNr
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2su
Y3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
U3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNyArMzA0LDcgQEAgQUxXQVlTX0lOTElO
RSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKAogI2VuZGlmCiAKICAgICBBU1NFUlQoSGVhcDo6
aXNNYXJrZWQoY2VsbCkpOwotCisgICAgCiAgICAgaWYgKGlzSlNTdHJpbmcoY2VsbCkpIHsKICAg
ICAgICAgSlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4oY29uc3RfY2FzdDxKU0NlbGwqPihjZWxsKSwg
dmlzaXRvcik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIGNsYXNzIEhlYXA7CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBMaXZlT2Jq
ZWN0SXRlcmF0b3I7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBXZWFrR0NI
YW5kbGU7CiBjbGFzcyBTbG90VmlzaXRvcjsKIApAQCAtNzcsNiArNzgsOCBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gdHlwZW5hbWUgRnVuY3Rvcjo6UmV0dXJuVHlw
ZSBmb3JFYWNoQmxvY2soKTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgIAogICAgIC8vIFsgMzIuLi4gMjU2IF0KICAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IHByZWNpc2VTdGVwID0gTWFya2VkQmxvY2s6OmF0b21TaXplOwogICAgIHN0YXRp
YyBjb25zdCBzaXplX3QgcHJlY2lzZUN1dG9mZiA9IDI1NjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDEwNjA0NSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTE5LDYgKzExOSw5IEBAIG5hbWVzcGFjZSBKU0MgIHsKICNpZiBFTkFCTEUoSU5U
RVJQUkVURVIpCiAgICAgICAgIEluc3RydWN0aW9uKiByZXR1cm5WUEMoKSBjb25zdCB7IHJldHVy
biB0aGlzW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdLnZQQygpOyB9CiAjZW5kaWYKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgICAgIEluc3RydWN0aW9uKiBjdXJyZW50VlBDKCkgY29uc3QgeyByZXR1
cm4gYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4odGhpc1tSZWdpc3RlckZpbGU6OkFyZ3VtZW50
Q291bnRdLnRhZygpKTsgfQorI2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXRDYWxsZXJGcmFtZShD
YWxsRnJhbWUqIGNhbGxlckZyYW1lKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVn
aXN0ZXJGaWxlOjpDYWxsZXJGcmFtZV0gPSBjYWxsZXJGcmFtZTsgfQogICAgICAgICB2b2lkIHNl
dFNjb3BlQ2hhaW4oU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pIHsgc3RhdGljX2Nhc3Q8UmVn
aXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW5dID0gc2NvcGVDaGFpbjsgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBACiAj
aW5jbHVkZSAiSklULmgiCiAjZW5kaWYKIAotI2RlZmluZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9H
T1RPX1dPUktBUk9VTkQgKEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSAmJiAhZGVm
aW5lZChfX2xsdm1fXykpCisjZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FS
T1VORCAoKEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQp
KSAmJiAhZGVmaW5lZChfX2xsdm1fXykpCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTU0
NywxNyArNTQ3LDQzIEBAIEludGVycHJldGVyOjpJbnRlcnByZXRlcigpCiB7CiB9CiAKLXZvaWQg
SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQpCitJbnRlcnByZXRlcjo6fklu
dGVycHJldGVyKCkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNp
ZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fZW5hYmxlZCkKKyAgICAgICAgZGVsZXRlW10gbV9v
cGNvZGVUYWJsZTsKKyNlbmRpZgorfQorCit2b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKExM
SW50OjpEYXRhKiBsbGludERhdGEsIGJvb2wgY2FuVXNlSklUKQoreworICAgIFVOVVNFRF9QQVJB
TShsbGludERhdGEpOworICAgIFVOVVNFRF9QQVJBTShjYW5Vc2VKSVQpOworI2lmIEVOQUJMRShD
T01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJMRShD
T01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorICAgIC8vIEhhdmluZyBMTEludCBlbmFibGVkLCBi
dXQgbm90IGJlaW5nIGFibGUgdG8gdXNlIHRoZSBKSVQsIGFuZCBub3QgaGF2aW5nCisgICAgLy8g
YSBjb21wdXRlZCBnb3RvIGludGVycHJldGVyLCBpcyBub3Qgc3VwcG9ydGVkLiBOb3QgYmVjYXVz
ZSB3ZSBjYW5ub3QKKyAgICAvLyBzdXBwb3J0IGl0LCBidXQgYmVjYXVzZSBJIGRlY2lkZWQgdG8g
ZHJhdyB0aGUgbGluZSBhdCB0aGUgbnVtYmVyIG9mCisgICAgLy8gcGVybXV0YXRpb25zIG9mIGV4
ZWN1dGlvbiBlbmdpbmVzIHRoYXQgSSB3YW50ZWQgdGhpcyBjb2RlIHRvIGdyb2suCisgICAgQVNT
RVJUKGNhblVzZUpJVCk7CisjZW5kaWYKICAgICBpZiAoY2FuVXNlSklUKSB7CisjaWYgRU5BQkxF
KExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbGxpbnREYXRhLT5vcGNvZGVNYXAoKTsK
KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKKyAgICAgICAg
ICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNvZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8T3Bj
b2RlSUQ+KGkpKTsKKyNlbHNlCiAgICAgICAgIC8vIElmIHRoZSBKSVQgaXMgcHJlc2VudCwgZG9u
J3QgdXNlIGp1bXAgZGVzdGluYXRpb25zIGZvciBvcGNvZGVzLgogICAgICAgICAKICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkgewogICAgICAgICAgICAgT3Bj
b2RlIG9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90Pihp
KSk7CiAgICAgICAgICAgICBtX29wY29kZVRhYmxlW2ldID0gb3Bjb2RlOwogICAgICAgICB9Cisj
ZW5kaWYKICAgICB9IGVsc2UgeworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVU
YWJsZSA9IG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXTsKKyNlbmRpZgogICAgICAgICBwcml2YXRl
RXhlY3V0ZShJbml0aWFsaXplQW5kUmV0dXJuLCAwLCAwKTsKICAgICAgICAgCiAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpCkBAIC01NjYsNyArNTkyLDYgQEAg
dm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShib29sIGNhblVzZQogICAgICAgICBtX2VuYWJs
ZWQgPSB0cnVlOwogICAgIH0KICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNhblVzZUpJVCk7CiAj
aWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fZW5hYmxlZCA9IHRydWU7CiAjZWxzZQpAQCAt
NjY3LDkgKzY5MiwxMSBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFt
CiAKIGJvb2wgSW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKE9wY29kZSBvcGNvZGUpCiB7Ci0jaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
SU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKExMSU5UKQogICAgIGlm
ICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm4gb3Bjb2RlID49IDAgJiYgc3RhdGljX2Nhc3Q8
T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29kZSkpIDw9IG9wX2VuZDsKKyNl
bmRpZgogICAgIHJldHVybiBvcGNvZGUgIT0gSGFzaFRyYWl0czxPcGNvZGU+OjplbXB0eVZhbHVl
KCkKICAgICAgICAgJiYgIUhhc2hUcmFpdHM8T3Bjb2RlPjo6aXNEZWxldGVkVmFsdWUob3Bjb2Rl
KQogICAgICAgICAmJiBtX29wY29kZUlEVGFibGUuY29udGFpbnMob3Bjb2RlKTsKQEAgLTcyNiwx
MSArNzUzLDExIEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjp1bndpbmRDYWwKICAg
ICAvLyBoYXZlIHRvIHN1YnRyYWN0IDEuCiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKElOVEVS
UFJFVEVSKQogICAgIGlmIChjYWxsZXJGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQot
ICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZy
YW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5
dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogICAgIGVs
c2UKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNh
bGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbGlmIEVOQUJMRShKSVQpCi0gICAgYnl0ZWNv
ZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMo
KSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxl
ckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2Vsc2UKICAgICBieXRlY29kZU9mZnNl
dCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAx
OwogI2VuZGlmCkBAIC01MTcwLDEwICs1MTk3LDEwIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OnJldHJp
ZXZlTGFzdENhbGxlcihDYWwKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpOwogI2lmIEVOQUJMRShK
SVQpCiAgICAgZWxzZQotICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+
Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVP
ZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxs
RnJhbWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAjZWxzZQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0g
Y2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOwor
ICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxs
ZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogICAgIGxpbmVOdW1iZXIg
PSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCAtIDEpOwogICAgIHNvdXJjZUlEID0gY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKS0+c291cmNlSUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNp
bmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk9w
Y29kZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgogCkBAIC00NSw2ICs0Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBK
U0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBS
ZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKQEAgLTEwMCwxOSArMTAyLDIxIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgogICAg
ICAgICBJbnRlcnByZXRlcigpOworICAgICAgICB+SW50ZXJwcmV0ZXIoKTsKICAgICAgICAgCi0g
ICAgICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGNhblVzZUpJVCk7CisgICAgICAgIHZvaWQgaW5p
dGlhbGl6ZShMTEludDo6RGF0YSosIGJvb2wgY2FuVXNlSklUKTsKIAogICAgICAgICBSZWdpc3Rl
ckZpbGUmIHJlZ2lzdGVyRmlsZSgpIHsgcmV0dXJuIG1fcmVnaXN0ZXJGaWxlOyB9CiAgICAgICAg
IAogICAgICAgICBPcGNvZGUgZ2V0T3Bjb2RlKE9wY29kZUlEIGlkKQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
SU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVO
QUJMRShMTElOVCkKICAgICAgICAgICAgIHJldHVybiBtX29wY29kZVRhYmxlW2lkXTsKICNlbHNl
CiAgICAgICAgICAgICByZXR1cm4gaWQ7CkBAIC0xMjIsNyArMTI2LDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUgb3Bjb2RlKQogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBV
VEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgQVNT
RVJUKGlzT3Bjb2RlKG9wY29kZSkpOworICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlSURUYWJs
ZS5nZXQob3Bjb2RlKTsKKyNlbGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQog
ICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOwogICAgICAgICAgICAgaWYgKCFt
X2VuYWJsZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZUlEPihi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKTsKQEAgLTEzMiw2ICsxMzksMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgZW5hYmxlZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBtX2VuYWJsZWQ7CisgICAgICAgIH0KIAogICAgICAgICBib29sIGlzT3Bjb2Rl
KE9wY29kZSk7CiAKQEAgLTE5OSw3ICsyMTEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgUmVnaXN0ZXJGaWxlIG1fcmVnaXN0ZXJGaWxlOwogICAgICAgICAKLSNpZiBFTkFCTEUoQ09N
UFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIE9wY29k
ZSogbV9vcGNvZGVUYWJsZTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGlu
ZworICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8g
TWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCisjZWxpZiBFTkFCTEUoQ09N
UFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVt
T3Bjb2RlSURzXTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAg
ICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBP
cGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHJldmlzaW9u
IDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZp
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7Cisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxl
IHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVnaXN0ZXJGaWxlKTsKQEAgLTgxLDYg
KzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAg
ICBib29sIGdyb3dTbG93Q2FzZShSZWdpc3RlciopOwogICAgICAgICB2b2lkIHJlbGVhc2VFeGNl
c3NDYXBhY2l0eSgpOwogICAgICAgICB2b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJu
VmFsdWUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0
Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorCisjaW5jbHVkZSAiQ2FsbEZy
YW1lLmgiCisjaW5jbHVkZSAiSW5saW5lQVNNLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNp
bmNsdWRlICJKU1ZhbHVlSW5saW5lTWV0aG9kcy5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxM
X1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUo
RXhlY1N0YXRlKik7CisKKyNpZiBDUFUoWDg2XzY0KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xf
U1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgor
ICAgICJtb3YgJXIxMywgJXJkaVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJ
T04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBD
UFUoWDg2KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJc
biIKKyAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgorICAgICJtb3YgJWVkaSwgNCglZXNwKVxu
IgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKK2FzbSAo
CisiLnRleHQiICJcbiIKKyIuYWxpZ24gMiIgIlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkco
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIlxuIgorIi50aHVtYiIgIlxuIgorIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19Q
QVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgor
ICAgICJjcHkgcjAsIHI1IiAiXG4iCisgICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04o
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZW5kaWYKKwor
ZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1
cm5WYWx1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorI2RlZmluZSBIb3N0Q2Fs
bFJldHVyblZhbHVlX2gKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJNYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENBTExJ
TkdfQ09OVkVOVElPTl9JU19TVERDQUxMCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVf
T1BUSU9OIENERUNMCisjZWxzZQorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElP
TgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0MgeworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBI
T1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Cit9
CisKKyNlbmRpZiAvLyBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDggQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmlsZV93
aWxsX2NhbGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX25ld19zY29wZSkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1c2hfc2NvcGUpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bDoKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9w
X3B1dF9ieV9pbmRleCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCkBAIC00ODcs
NiArNDg5LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX3Bvc3RfaW5jKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfcHJlX2RlYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9pbmMpCisg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92
YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2dsb2JhbCkKQEAgLTUy
Niw2ICs1MzAsMTAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKIAogSklU
Q29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bmN0aW9uRW50cnlBcml0eUNoZWNr
KQogeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCJDb21waWxpbmcg
SklUIGNvZGUhXG4iKTsKKyNlbmRpZgorICAgIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikK
ICAgICBtX2NhbkJlT3B0aW1pemVkID0gbV9jb2RlQmxvY2stPmNhbkNvbXBpbGVXaXRoREZHKCk7
CiAjZW5kaWYKQEAgLTY5MCw4ICs2OTgsMTIgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxl
KENvZGVQdHIqIGZ1bgogICAgICAgICBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IG1fY29kZUJs
b2NrLT5zdHJ1Y3R1cmVTdHViSW5mbyhtX21ldGhvZENhbGxDb21waWxhdGlvbkluZm9baV0ucHJv
cGVydHlBY2Nlc3NJbmRleCkuY2FsbFJldHVybkxvY2F0aW9uOwogICAgIH0KIAotI2lmIEVOQUJM
RShERkdfSklUKQotICAgIGlmIChtX2NhbkJlT3B0aW1pemVkKSB7CisjaWYgRU5BQkxFKERGR19K
SVQpIHx8IEVOQUJMRShMTElOVCkKKyAgICBpZiAobV9jYW5CZU9wdGltaXplZAorI2lmIEVOQUJM
RShMTElOVCkKKyAgICAgICAgfHwgdHJ1ZQorI2VuZGlmCisgICAgICAgICkgewogICAgICAgICBD
b21wYWN0SklUQ29kZU1hcDo6RW5jb2RlciBqaXRDb2RlTWFwRW5jb2RlcjsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgbV9sYWJlbHMu
c2l6ZSgpOyArK2J5dGVjb2RlT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAobV9sYWJlbHNbYnl0
ZWNvZGVPZmZzZXRdLmlzU2V0KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUu
aAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEpJVENvZGUoKSB7IH0KICNlbmRpZgogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBKSVRU
eXBlIHsgSG9zdENhbGxUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OworICAgICAgICBlbnVt
IEpJVFR5cGUgeyBOb25lLCBIb3N0Q2FsbFRodW5rLCBJbnRlcnByZXRlclRodW5rLCBCYXNlbGlu
ZUpJVCwgREZHSklUIH07CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgSklUVHlwZSBib3R0b21U
aWVySklUKCkKICAgICAgICAgewpAQCAtNjYsOCArNjYsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gREZHSklUOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBz
dGF0aWMgYm9vbCBpc09wdGltaXppbmdKSVQoSklUVHlwZSBqaXRUeXBlKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBERkdKSVQ7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHN0YXRpYyBib29sIGlzQmFzZWxpbmVDb2RlKEpJVFR5cGUgaml0VHlwZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gSW50ZXJwcmV0ZXJUaHVuayB8
fCBqaXRUeXBlID09IEJhc2VsaW5lSklUOworICAgICAgICB9CisgICAgICAgIAogI2lmIEVOQUJM
RShKSVQpCiAgICAgICAgIEpJVENvZGUoKQorICAgICAgICAgICAgOiBtX2ppdFR5cGUoTm9uZSkK
ICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTc1LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICA6IG1fcmVmKHJlZikKICAgICAgICAgICAgICwgbV9qaXRUeXBlKGppdFR5
cGUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChqaXRUeXBlICE9IE5vbmUpOwogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yICEoKSBjb25zdApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCShyZXZpc2lvbiAxMDYwNDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MywxNSArMzMsMjEgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUg
IkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2lu
dHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5
cGU+CiBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRD
b2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CisgICAgaWYgKGppdFR5cGUgPT0gY29k
ZUJsb2NrLT5nZXRKSVRUeXBlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAogICAgIGlm
ICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisg
ICAgY29kZUJsb2NrLT51bmxpbmtJbmNvbWluZ0NhbGxzKCk7CisgICAgCiAgICAgYm9vbCBkZmdD
b21waWxlZCA9IGZhbHNlOwogICAgIGlmIChqaXRUeXBlID09IEpJVENvZGU6OkRGR0pJVCkKICAg
ICAgICAgZGZnQ29tcGlsZWQgPSBERkc6OnRyeUNvbXBpbGUoZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LmdldCgpLCBqaXRDb2RlKTsKQEAgLTU1LDEwICs2MSw3IEBAIGlubGluZSBib29sIGppdENvbXBp
bGVJZkFwcHJvcHJpYXRlKEpTR2wKICAgICAgICAgfQogICAgICAgICBqaXRDb2RlID0gSklUOjpj
b21waWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCkpOwogICAgIH0KLSNpZiAhRU5BQkxF
KE9QQ09ERV9TQU1QTElORykKLSAgICBpZiAoIUJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVy
YXRlZENvZGUoKSkKLSAgICAgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdP
cHBvcnR1bml0eSgpOwotI2VuZGlmCisgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2Nh
cmRpbmdPcHBvcnR1bml0eSgpOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC02Niw5
ICs2OSwxNCBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShKU0dsCiAKIGlu
bGluZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBjb2RlQmxvY2ssIEpJVENvZGUm
IGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBT
aGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUp
CiB7CisgICAgaWYgKGppdFR5cGUgPT0gY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIAogICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisgICAgY29kZUJsb2NrLT51bmxpbmtJbmNvbWluZ0Nh
bGxzKCk7CisgICAgCiAgICAgYm9vbCBkZmdDb21waWxlZCA9IGZhbHNlOwogICAgIGlmIChqaXRU
eXBlID09IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAgZGZnQ29tcGlsZWQgPSBERkc6OnRyeUNv
bXBpbGVGdW5jdGlvbihnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUsIGppdENv
ZGVXaXRoQXJpdHlDaGVjayk7CkBAIC04MywxMSArOTEsNyBAQCBpbmxpbmUgYm9vbCBqaXRDb21w
aWxlRnVuY3Rpb25JZkFwcHJvcHJpCiAgICAgICAgIH0KICAgICAgICAgaml0Q29kZSA9IEpJVDo6
Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCAmaml0Q29kZVdpdGhBcml0eUNo
ZWNrKTsKICAgICB9Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRl
Y29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+
aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgotICAgIAorICAg
IGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBj
b2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKICAg
ICAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
RXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBA
QCBFeGNlcHRpb25IYW5kbGVyIGdlbmVyaWNUaHJvdyhKU0dsb2JhbERhCiAKIEV4Y2VwdGlvbkhh
bmRsZXIgaml0VGhyb3coSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVjU3RhdGUqIGNhbGxG
cmFtZSwgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSwgUmV0dXJuQWRkcmVzc1B0ciBmYXVsdExvY2F0
aW9uKQogewotICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBl
eGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZmF1
bHRMb2NhdGlvbikpOworICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgY2FsbEZy
YW1lLCBleGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZz
ZXQoY2FsbEZyYW1lLCBmYXVsdExvY2F0aW9uKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxMyw3ICsx
OTEzLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogICAgIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaW50MzIoKTsKIAogI2lm
IEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgcHJpbnRmKCJFbnRlcmVkIG9wdGltaXplX2Zy
b21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2stPmpp
dEV4ZWN1dGVDb3VudGVyKCksIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIo
KSwgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CisgICAgcHJpbnRmKCIl
cDogRW50ZXJlZCBvcHRpbWl6ZV9mcm9tX2xvb3Agd2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCBy
ZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIg
PSAldVxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCksIGNvZGVC
bG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29kZUJsb2NrLT5vcHRpbWl6YXRp
b25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYKIAogICAgIGlmIChjb2RlQmxvY2stPmhhc09wdGlt
aXplZFJlcGxhY2VtZW50KCkpIHsKQEAgLTIxNjgsNDUgKzIxNjgsMTMgQEAgREVGSU5FX1NUVUJf
RlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlu
bGluZSBDYWxsRnJhbWUqIGFyaXR5Q2hlY2tGb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lz
dGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCi17Ci0g
ICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKTsK
LSAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgQ29kZUJsb2NrKiBu
ZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVG
b3Ioa2luZCk7Ci0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOwotCi0gICAgLy8gVGhpcyBlbnN1cmVzIGVu
b3VnaCBzcGFjZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1bWVudHMg
cGFzc2VkIGJ5IHRoZSBjYWxsZXIuCi0gICAgaWYgKCFyZWdpc3RlckZpbGUtPmdyb3coY2FsbEZy
YW1lLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29k
ZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
QVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpOwotCi0gICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1l
IGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVm
aW5lZC4KLSAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAt
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwotICAgIFJlZ2lzdGVyKiBzcmMgPSBjYWxsRnJh
bWUtPnJlZ2lzdGVycygpOwotICAgIFJlZ2lzdGVyKiBkc3QgPSBjYWxsRnJhbWUtPnJlZ2lzdGVy
cygpICsgZGVsdGE7Ci0KLSAgICBpbnQgaTsKLSAgICBpbnQgZW5kID0gLUNhbGxGcmFtZTo6b2Zm
c2V0Rm9yKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKLSAgICBmb3IgKGkgPSAtMTsgaSA+
PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0gc3JjW2ldOwotCi0gICAgZW5kIC09IGRlbHRh
OwotICAgIGZvciAoIDsgaSA+PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0ganNVbmRlZmlu
ZWQoKTsKLQotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUo
ZHN0KTsKLSAgICBBU1NFUlQoKHZvaWQqKW5ld0NhbGxGcmFtZSA8PSByZWdpc3RlckZpbGUtPmVu
ZCgpKTsKLSAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElP
Tih2b2lkKiwgb3BfY2FsbF9hcml0eUNoZWNrKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFN
RShzdGFja0ZyYW1lKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5j
YWxsRnJhbWU7CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3Io
Y2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOworICAgIENh
bGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNh
bGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDYWxsKTsKICAgICBpZiAo
IW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2
b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKQEAgLTIyMTks
NyArMjE4Nyw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKIAog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAgICBD
YWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0Zy
YW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgQ2FsbEZyYW1lKiBuZXdD
YWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFj
a0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7CiAgICAgaWYgKCFuZXdDYWxs
RnJhbWUpCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0
YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVy
Zmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxMDYwNDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDggKzI2LDEwIEBACiAjaWZuZGVmIEpTSW50ZXJmYWNlSklUX2gKICNkZWZpbmUgSlNJ
bnRlcmZhY2VKSVRfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1
ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTU3RyaW5n
LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAj
aW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRDb21tb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDb21t
b25faAorI2RlZmluZSBMTEludENvbW1vbl9oCisKKyNkZWZpbmUgTExJTlRfRVhFQ1VUSU9OX1RS
QUNJTkcgMAorI2RlZmluZSBMTElOVF9IRUxQRVJfVFJBQ0lORyAwCisKKyNlbmRpZiAvLyBMTElu
dENvbW1vbl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkxMSW50RGF0YS5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSW5zdHJ1Y3Rp
b24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiT3Bjb2Rl
LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitEYXRhOjpEYXRhKCkK
KyAgICA6IG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKG5ldyBJbnN0cnVjdGlvblttYXhPcGNvZGVM
ZW5ndGggKyAxXSkKKyAgICAsIG1fb3Bjb2RlTWFwKG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXSkK
K3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heE9wY29kZUxlbmd0aCArIDE7ICsraSkKKyAg
ICAgICAgbV9leGNlcHRpb25JbnN0cnVjdGlvbnNbaV0udS5wb2ludGVyID0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSk7CisjZGVmaW5lIE9Q
Q09ERV9FTlRSWShvcGNvZGUsIGxlbmd0aCkgbV9vcGNvZGVNYXBbb3Bjb2RlXSA9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50XyMjb3Bjb2RlKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoT1BD
T0RFX0VOVFJZKTsKKyN1bmRlZiBPUENPREVfRU5UUlkKK30KKworRGF0YTo6fkRhdGEoKQorewor
ICAgIGRlbGV0ZVtdIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIGRlbGV0ZVtdIG1fb3Bj
b2RlTWFwOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludERhdGFfaAorI2RlZmluZSBMTEludERh
dGFfaAorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisK
K25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTElu
dCB7CisKKyNpZiBFTkFCTEUoTExJTlQpCitjbGFzcyBEYXRhIHsKK3B1YmxpYzoKKyAgICBEYXRh
KCk7CisgICAgfkRhdGEoKTsKKyAgICAKKyAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsK
KyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fb3Bjb2RlTWFwOworICAgIH0KK3ByaXZhdGU6CisgICAgSW5zdHJ1Y3Rpb24qIG1fZXhj
ZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIE9wY29kZSogbV9vcGNvZGVNYXA7Cit9OworI2Vsc2Ug
Ly8gRU5BQkxFKExMSU5UKQorCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWlzc2lu
Zy1ub3JldHVybiIKKyNlbmRpZgorCitjbGFzcyBEYXRhIHsKK3B1YmxpYzoKKyAgICBJbnN0cnVj
dGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBv
cGNvZGVNYXAoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KK307CisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50RGF0YV9oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRy
eXBvaW50cy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1
ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJMTElu
dFRodW5rcy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKSVRD
b2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2spCit7CisgICAg
aWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGlmIChraW5kID09IENvZGVG
b3JDYWxsKSB7CisgICAgICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1i
bGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9w
cm9sb2d1ZSkpKSk7CisgICAgICAgICAgICBhcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQo
a2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhv
c3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJl
ZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkpKSk7CisgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eV9jaGVjaykpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2Rl
KGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9y
KSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgICAgIGFyaXR5Q2hlY2sgPSBnbG9i
YWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9y
KS5jb2RlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBD
b2RlRm9yQ29uc3RydWN0KTsKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENU
SVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1
YihmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpOwor
fQorCit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklU
Q29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAg
ICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfZXZhbF9wcm9sb2d1ZSkpKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHVi
KGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cit9
CisKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
SVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgewor
ICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENU
SVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFC
TEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBv
aW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVu
dHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFbnRyeXBvaW50cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRFbnRy
eXBvaW50c19oCisjZGVmaW5lIExMSW50RW50cnlwb2ludHNfaAorCisjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6
YXRpb25LaW5kLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFdmFsQ29kZUJsb2NrOwor
Y2xhc3MgSklUQ29kZTsKK2NsYXNzIEpTR2xvYmFsRGF0YTsKK2NsYXNzIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKK2NsYXNzIFByb2dyYW1Db2Rl
QmxvY2s7CisKK25hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50
KEpTR2xvYmFsRGF0YSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIEpJVENvZGUmLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2spOwordm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0ds
b2JhbERhdGEmLCBKSVRDb2RlJik7Cit2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFs
RGF0YSYsIEpJVENvZGUmKTsKKworaW5saW5lIHZvaWQgZ2V0RW50cnlwb2ludChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEV2YWxDb2RlQmxvY2sqLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAg
IGdldEV2YWxFbnRyeXBvaW50KGdsb2JhbERhdGEsIGppdENvZGUpOworfQorCitpbmxpbmUgdm9p
ZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvZ3JhbUNvZGVCbG9j
ayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoZ2xvYmFs
RGF0YSwgaml0Q29kZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5k
aWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRFbnRyeXBvaW50c19oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlv
bnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJMTEludEV4Y2VwdGlvbnMuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkNh
bGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkluc3RydWN0aW9u
LmgiCisjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgi
CisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIExMSW50IHsKKwordm9pZCBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxE
YXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4
Y2VwdGlvbiAlcy5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNl
bmRpZgorICAgIGdlbmVyaWNUaHJvdygKKyAgICAgICAgZ2xvYmFsRGF0YSwgZXhlYy0+Y2FsbGVy
RnJhbWUoKSwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLAorICAgICAgICBleGVjLT5jYWxsZXJGcmFt
ZSgpLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZXhlYy0+Y2FsbGVyRnJhbWUoKSwgZXhl
Yy0+cmV0dXJuUEMoKSkpOworfQorCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvd0ZvclRocm93
bkV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERh
dGEoKS5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK0luc3RydWN0aW9u
KiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAg
IEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJ
TlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAocmV0
dXJuVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7Cisj
ZW5kaWYKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhj
ZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsK
KyAgICAKKyAgICByZXR1cm4gZ2xvYmFsRGF0YS0+bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0
aW9ucygpOworfQorCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0
aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFs
RGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBl
eGNlcHRpb24gJXMgKGNhbGxUb1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNj
cmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBn
bG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9u
cygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgTExJbnRFeGNlcHRpb25zX2gKKyNkZWZpbmUgTExJbnRFeGNlcHRpb25z
X2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4
ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKworLy8g
VGhyb3cgdGhlIGN1cnJlbnRseSBhY3RpdmUgZXhjZXB0aW9uIGluIHRoZSBjb250ZXh0IG9mIHRo
ZSBjYWxsZXIncyBjYWxsIGZyYW1lLgordm9pZCBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoRXhl
Y1N0YXRlKik7CisKKy8vIFRlbGxzIHlvdSB3aGVyZSB0byBqdW1wIHRvIGlmIHlvdSB3YW50IHRv
IHJldHVybi10by10aHJvdywgYWZ0ZXIgeW91J3ZlIGFscmVhZHkKKy8vIHNldCB1cCBhbGwgaW5m
b3JtYXRpb24gbmVlZGVkIHRvIHRocm93IHRoZSBleGNlcHRpb24uCitJbnN0cnVjdGlvbiogcmV0
dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihFeGVjU3RhdGUqKTsKKworLy8gU2F2ZXMgdGhl
IGN1cnJlbnQgUEMgaW4gdGhlIGdsb2JhbCBkYXRhIGZvciBzYWZlLWtlZXBpbmcsIGFuZCBnaXZl
cyB5b3UgYSBQQworLy8gdGhhdCB5b3UgY2FuIHRlbGwgdGhlIGludGVycHJldGVyIHRvIGdvIHRv
LCB3aGljaCB3aGVuIGFkdmFuY2VkIGJldHdlZW4gMQorLy8gYW5kIDkgc2xvdHMgd2lsbCBnaXZl
IHlvdSBhbiAiaW5zdHJ1Y3Rpb24iIHRoYXQgdGhyZWFkcyB0byB0aGUgaW50ZXJwcmV0ZXIncwor
Ly8gZXhjZXB0aW9uIGhhbmRsZXIuIE5vdGUgdGhhdCBpZiB5b3UgZ2l2ZSBpdCB0aGUgUEMgZm9y
IGV4Y2VwdGlvbiBoYW5kbGluZywKKy8vIGl0J3Mgc21hcnQgZW5vdWdoIHRvIGp1c3QgcmV0dXJu
IHRoYXQgUEMgd2l0aG91dCBkb2luZyBhbnl0aGluZyBlbHNlOyB0aGlzCisvLyBsZXRzIHlvdSB0
aHJlYWQgZXhjZXB0aW9uIGhhbmRsaW5nIHRocm91Z2ggY29tbW9uIGhlbHBlciBmdW5jdGlvbnMg
dXNlZCBieQorLy8gb3RoZXIgaGVscGVycy4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4
ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisKKy8vIFVzZSB0aGlzIHdoZW4geW91J3JlIHRocm93
aW5nIHRvIGEgY2FsbCB0aHVuay4KK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSosIEluc3Ry
dWN0aW9uKik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5B
QkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRFeGNlcHRpb25zX2gKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTQyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRIZWxw
ZXJzLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNp
bmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKKyNpbmNs
dWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNp
bmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJKSVREcml2ZXIuaCIKKyNpbmNsdWRlICJKU0FjdGl2
YXRpb24uaCIKKyNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgIkxM
SW50RXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewor
CisjZGVmaW5lIExMSU5UX09QKGluZGV4KSAoZXhlYy0+dW5jaGVja2VkUihwY1tpbmRleF0udS5v
cGVyYW5kKSkKKyNkZWZpbmUgTExJTlRfT1BfQyhpbmRleCkgKGV4ZWMtPnIocGNbaW5kZXhdLnUu
b3BlcmFuZCkpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOX1RXTyhmaXJzdCwgc2Vjb25kKSBkbyB7
ICAgICAgIFwKKyAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgICAgICB2b2lkKiBhOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgICAgICB2b2lkKiBiOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIH0gcGFpcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIGludDY0X3QgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
fSBfX3J0X3U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX19y
dF91LnBhaXIuYSA9IGZpcnN0OyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX19ydF91
LnBhaXIuYiA9IHNlY29uZDsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9f
cnRfdS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkK
KworI2RlZmluZSBMTElOVF9FTkRfSU1QTCgpIExMSU5UX1JFVFVSTl9UV08ocGMsIGV4ZWMpCisK
KyNkZWZpbmUgTExJTlRfVEhST1coZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBfX3RfZ2xvYmFsRGF0YSA9IGV4ZWMt
Pmdsb2JhbERhdGEoKTsgICAgICAgIFwKKyAgICAgICAgX190X2dsb2JhbERhdGEuZXhjZXB0aW9u
ID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgIFwKKyAgICAgICAgcGMgPSByZXR1cm5U
b1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
TExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DSEVDS19FWENFUFRJT04o
KSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VMWShleGVjLT5n
bG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgeyAgIFwKKyAgICAgICAgICAgIHBjID0gcmV0dXJuVG9U
aHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTExJTlRfRU5EX0lN
UEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkK
KworI2RlZmluZSBMTElOVF9FTkQoKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBM
TElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZh
bHNlKQorCisjZGVmaW5lIExMSU5UX0JSQU5DSChvcGNvZGUsIGNvbmRpdGlvbikgZG8geyAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIGJvb2wgX19iX2NvbmRpdGlvbiA9IChjb25kaXRp
b24pOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChf
X2JfY29uZGl0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICBwYyArPSBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51Lm9wZXJhbmQ7
ICAgICAgICBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwYyArPSBPUENPREVfTEVOR1RIKG9w
Y29kZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBM
KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGls
ZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOKHZhbHVlKSBkbyB7ICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgSlNWYWx1ZSBfX3JfcmV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgIFwK
KyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgTExJTlRfT1AoMSkgPSBfX3JfcmV0dXJuVmFsdWU7ICAgICAgICAgIFwKKyAgICAgICAgTExJ
TlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxz
ZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fUFJPRklMRUQob3Bjb2RlLCB2YWx1ZSkgZG8geyAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgSlNWYWx1ZSBfX3JwX3JldHVyblZhbHVlID0gKHZhbHVl
KTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9PUCgxKSA9
IF9fcnBfcmV0dXJuVmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcGNb
T1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5wcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBcCisg
ICAgICAgICAgICBKU1ZhbHVlOjplbmNvZGUoX19ycF9yZXR1cm5WYWx1ZSk7ICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9D
QUxMX0VORF9JTVBMKGV4ZWMsIGNhbGxUYXJnZXQpIExMSU5UX1JFVFVSTl9UV08oKGNhbGxUYXJn
ZXQpLCAoZXhlYykpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgZXhjZXB0
aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2N0
X2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgSW5zdHJ1Y3Rpb24qIF9fY3RfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBfX2N0X2dsb2JhbERhdGEgPSAoX19j
dF9leGVjKS0+Z2xvYmFsRGF0YSgpOyAgICAgIFwKKyAgICAgICAgX19jdF9nbG9iYWxEYXRhLmV4
Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
TExJTlRfQ0FMTF9FTkRfSU1QTChfX2N0X2V4ZWMsIGNhbGxUb1Rocm93KF9fY3RfZXhlYywgX19j
dF9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9DSEVD
S19FWENFUFRJT04oZXhlYywgcGMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgRXhlY1N0YXRlKiBfX2NjZV9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY2NlX3BjID0gKHBjKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKF9fY2Nl
X2V4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jY2VfZXhlYywgY2FsbFRvVGhyb3coX19jY2VfZXhl
YywgX19jY2VfcGMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NB
TExfUkVUVVJOKGV4ZWMsIHBjLCBjYWxsVGFyZ2V0KSBkbyB7ICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIEV4ZWNTdGF0ZSogX19jcl9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2NyX3BjID0gKHBjKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHZvaWQqIF9fY3Jf
Y2FsbFRhcmdldCA9IChjYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKF9fY3JfZXhlYy0+Y2FsbGVyRnJhbWUo
KSwgX19jcl9wYyk7ICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jcl9leGVjLCBf
X2NyX2NhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
K2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0
ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkKK3sK
KyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6
ICVkOiAlZFxuIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4
ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9j
aygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAg
IGZyb21XaGVyZSwKKyAgICAgICAgICAgb3BlcmFuZCwKKyAgICAgICAgICAgcGNbb3BlcmFuZF0u
dS5vcGVyYW5kKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1
cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBj
LCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkKK3sKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJ
TlRfT1BfQyhvcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3Qg
eworICAgICAgICAgICAgdWludDMyX3QgdGFnOworICAgICAgICAgICAgdWludDMyX3QgcGF5bG9h
ZDsKKyAgICAgICAgfSBiaXRzOworICAgICAgICBFbmNvZGVkSlNWYWx1ZSBhc1ZhbHVlOworICAg
IH0gdTsKKyAgICB1LmFzVmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOworICAgIHByaW50
ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkOiAl
MDh4OiUwOHgiLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhl
YywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2Nr
KCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRh
KCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAg
ZnJvbVdoZXJlLAorICAgICAgICAgICBvcGVyYW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51
Lm9wZXJhbmQsCisgICAgICAgICAgIHUuYml0cy50YWcsCisgICAgICAgICAgIHUuYml0cy5wYXls
b2FkKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgcHJpbnRmKCI6ICVzIiwgdmFsdWUuZGVzY3JpcHRp
b24oKSk7CisjZW5kaWYKKyAgICBwcmludGYoIlxuIik7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlKQoreworICAgIHByaW50ZigiJXAgLyAl
cDogaW4gcHJvbG9ndWUuXG4iLCBleGVjLT5jb2RlQmxvY2soKSwgZXhlYyk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK3N0YXRpYyB2b2lkIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IGNoYXIqIGNvbW1lbnQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
K3sKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsK
KyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmpzRXhlY3V0YWJs
ZSgpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gJmV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5
dGVjb2RlRm9yKGtpbmQpOworICAgIHByaW50ZigiJXAgLyAlcDogaW4gJXMgb2YgZnVuY3Rpb24g
JXAsIGV4ZWN1dGFibGUgJXA7IG51bVZhcnMgPSAldSwgbnVtUGFyYW1ldGVycyA9ICV1LCBudW1D
YWxsZWVSZWdpc3RlcnMgPSAldS5cbiIsCisgICAgICAgICAgIGNvZGVCbG9jaywgZXhlYywgY29t
bWVudCwgY2FsbGVlLCBleGVjdXRhYmxlLAorICAgICAgICAgICBjb2RlQmxvY2stPm1fbnVtVmFy
cywgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdp
c3RlcnMpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9m
b3JfY2FsbCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNhbGwgcHJvbG9n
dWUiLCBDb2RlRm9yQ2FsbCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgdHJhY2VG
dW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjb25zdHJ1Y3QgcHJvbG9ndWUiLCBDb2RlRm9yQ29uc3Ry
dWN0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJp
dHlDaGVja19mb3JfY2FsbCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNh
bGwgYXJpdHkgY2hlY2siLCBDb2RlRm9yQ2FsbCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0
cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBhcml0eSBjaGVjayIsIENvZGVG
b3JDb25zdHJ1Y3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0
cmFjZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsICIsCisgICAg
ICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBz
dGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSkpOworI2lmbmRlZiBOREVCVUcKKyAgICBwcmludGYoIiVzLCAiLCBvcGNvZGVO
YW1lc1tleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUu
b3Bjb2RlKV0pOworI2Vsc2UKKyAgICBwcmludGYoIm9wIyV1LCAiLCBleGVjLT5nbG9iYWxEYXRh
KCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSk7CisjZW5kaWYKKyAg
ICBwcmludGYoInNjb3BlICVwXG4iLCBleGVjLT5zY29wZUNoYWluKCkpOworICAgIExMSU5UX0VO
RCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChzcGVjaWFsX3RyYWNlKQoreworICAgIHByaW50
ZigiJXAgLyAlcDogZXhlY3V0aW5nIHNwZWNpYWwgY2FzZSBiYyMlenUsIG9wIyV1LCByZXR1cm4g
UEMgaXMgJXBcbiIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBl
eGVjLAorICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxv
Y2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAg
ICBleGVjLT5yZXR1cm5QQygpLnZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitpbmxp
bmUgYm9vbCBzaG91bGRKSVQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIFlvdSBjYW4gbW9k
aWZ5IHRoaXMgdG8gdHVybiBvZmYgSklUdGluZyB3aXRob3V0IHJlYnVpbGRpbmcgdGhlIHdvcmxk
LgorICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCk7Cit9CisKK2VudW0g
RW50cnlLaW5kIHsgUHJvbG9ndWUsIEFyaXR5Q2hlY2sgfTsKK3N0YXRpYyBIZWxwZXJSZXR1cm5U
eXBlIGVudHJ5T1NSKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgY29uc3QgY2hhciAqbmFtZSwgRW50cnlLaW5kIGtpbmQpCit7CisjaWYgRU5B
QkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkICVzIHdpdGggZXhl
Y3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBuYW1lLCBjb2RlQmxvY2stPmxsaW50RXhl
Y3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoIXNob3VsZEpJVChleGVjKSkg
eworICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgICAgICBMTElO
VF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAgICBpZiAoIWNvZGVCbG9jay0+aml0Q29t
cGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikK
KyAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2Vu
ZGlmCisgICAgfQorICAgIGNvZGVCbG9jay0+aml0U29vbigpOworICAgIGlmIChraW5kID09IFBy
b2xvZ3VlKQorICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+Z2V0SklUQ29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoMCksIGV4ZWMpOworICAgIEFTU0VSVChraW5kID09
IEFyaXR5Q2hlY2spOworICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRDb2Rl
V2l0aEFyaXR5Q2hlY2soKS5leGVjdXRhYmxlQWRkcmVzcygpLCBleGVjKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woZW50cnlfb3NyKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywg
ZXhlYy0+Y29kZUJsb2NrKCksICJlbnRyeV9vc3IiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCkKK3sKKyAgICByZXR1cm4gZW50
cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxl
KCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDYWxsKSwgImVudHJ5X29zcl9mdW5jdGlv
bl9mb3JfY2FsbCIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBj
LCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRC
eXRlY29kZUZvcihDb2RlRm9yQ29uc3RydWN0KSwgImVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29u
c3RydWN0IiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywg
cGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRl
ZEJ5dGVjb2RlRm9yKENvZGVGb3JDYWxsKSwgImVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eUNoZWNrIiwgQXJpdHlDaGVjayk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29z
cl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2spCit7CisgICAgcmV0dXJuIGVudHJ5
T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgp
LT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ29uc3RydWN0KSwgImVudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2siLCBBcml0eUNoZWNrKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0wobG9vcF9vc3IpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVj
LT5jb2RlQmxvY2soKTsKKyAgICAKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHBy
aW50ZigiJXA6IEVudGVyZWQgbG9vcF9vc3Igd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBj
b2RlQmxvY2ssIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAg
IAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJ
VEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7CisgICAg
fQorICAgIAorICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEo
KSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICBwcmludGYoIiAgICBD
b2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICB9CisgICAgY29kZUJs
b2NrLT5qaXRTb29uKCk7CisgICAgCisgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgp
ID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAKKyAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRN
YWNoaW5lT2Zmc2V0PiBtYXA7CisgICAgY29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRlY29kZSht
YXApOworICAgIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCogbWFwcGluZyA9IGJpbmFyeVNlYXJj
aDxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQsIHVuc2lnbmVkLCBCeXRlY29kZUFuZE1hY2hpbmVP
ZmZzZXQ6OmdldEJ5dGVjb2RlSW5kZXg+KG1hcC5iZWdpbigpLCBtYXAuc2l6ZSgpLCBwYyAtIGNv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgQVNTRVJUKG1hcHBpbmcpOwor
ICAgIEFTU0VSVChtYXBwaW5nLT5tX2J5dGVjb2RlSW5kZXggPT0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisgICAgCisgICAg
dm9pZCoganVtcFRhcmdldCA9IGNvZGVCbG9jay0+Z2V0SklUQ29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzQXRPZmZzZXQobWFwcGluZy0+bV9tYWNoaW5lQ29kZU9mZnNldCk7CisgICAgQVNTRVJUKGp1
bXBUYXJnZXQpOworICAgIAorICAgIExMSU5UX1JFVFVSTl9UV08oanVtcFRhcmdldCwgZXhlYyk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpCit7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0Vf
T1NSKQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgcmVwbGFjZSB3aXRoIGV4ZWN1dGVDb3VudGVy
ID0gJWRcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOwor
I2VuZGlmCisgICAgCisgICAgaWYgKHNob3VsZEpJVChleGVjKSkgeworICAgICAgICBpZiAoIWNv
ZGVCbG9jay0+aml0Q29tcGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5BQkxFKEpJ
VF9WRVJCT1NFX09TUikKKyAgICAgICAgICAgIHByaW50ZigiICAgIENvZGUgd2FzIGFscmVhZHkg
Y29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIGNvZGVCbG9jay0+aml0
U29vbigpOworICAgIH0gZWxzZQorICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29v
bigpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9m
aWxlX2NoZWNrKQoreworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDaGVj
a2luZyBzdGFjayBoZWlnaHQgd2l0aCBleGVjID0gJXAuXG4iLCBleGVjKTsKKyAgICBwcmludGYo
IkNvZGVCbG9jayA9ICVwLlxuIiwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAgIHByaW50ZigiTnVt
IGNhbGxlZSByZWdpc3RlcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxl
ZVJlZ2lzdGVycyk7CisgICAgcHJpbnRmKCJOdW0gdmFycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJs
b2NrKCktPm1fbnVtVmFycyk7CisgICAgcHJpbnRmKCJDdXJyZW50IGVuZCBpcyBhdCAlcC5cbiIs
IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOwor
I2VuZGlmCisgICAgQVNTRVJUKCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+
bV9udW1DYWxsZWVSZWdpc3RlcnNdID4gZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5y
ZWdpc3RlckZpbGUoKS5lbmQoKSk7CisgICAgaWYgKFVOTElLRUxZKCFleGVjLT5nbG9iYWxEYXRh
KCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmdyb3coJmV4ZWMtPnJlZ2lzdGVycygpW2V4
ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVyc10pKSkgeworICAgICAgICBleGVj
ID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2Vw
dGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0
ZXJUaHJvd0luQ2FsbGVyKGV4ZWMpOworICAgICAgICBwYyA9IHJldHVyblRvVGhyb3dGb3JUaHJv
d25FeGNlcHRpb24oZXhlYyk7CisgICAgfQorICAgIExMSU5UX0VORF9JTVBMKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0YXRl
KiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5n
bG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ2FsbCk7Cisg
ICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOwor
ICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxv
d0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYyk7Cisg
ICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3
RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVj
aykKK3sKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hl
Y2tGb3IoZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxl
KCksIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBleGVj
ID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2Vw
dGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0
ZXJUaHJvd0luQ2FsbGVyKGV4ZWMpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSksIGV4ZWMpOworICAgIH0KKyAg
ICBMTElOVF9SRVRVUk5fVFdPKDAsIG5ld0V4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pCit7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAg
ICBwcmludGYoIkNyZWF0aW5nIGFuIGFjdGl2YXRpb24sIGV4ZWMgPSAlcCFcbiIsIGV4ZWMpOwor
I2VuZGlmCisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gSlNBY3RpdmF0aW9uOjpjcmVh
dGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFi
bGUqPihleGVjLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkpKTsKKyAgICBleGVjLT5z
ZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChhY3RpdmF0aW9uKSk7CisgICAg
TExJTlRfUkVUVVJOKEpTVmFsdWUoYWN0aXZhdGlvbikpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKK3sKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpT
VmFsdWUoQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKSk7CisgICAg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgZXhlYy0+dW5jaGVja2VkUihwY1sxXS51Lm9w
ZXJhbmQpID0gYXJndW1lbnRzOworICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3Vt
ZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOworICAgIExMSU5UX0VO
RCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3RoaXMpCit7CisgICAg
SlNGdW5jdGlvbiogY29uc3RydWN0b3IgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAg
ICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRh
OworICAgIEFTU0VSVChjb25zdHJ1Y3Rvci0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0
YShjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSkgPT0gQ29uc3RydWN0VHlwZUpTKTsKKyNlbmRp
ZgorICAgIAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOworICAgIEpTVmFsdWUgcHJvdG8gPSBM
TElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKHByb3RvLmlzT2JqZWN0KCkpCisgICAgICAg
IHN0cnVjdHVyZSA9IGFzT2JqZWN0KHByb3RvKS0+aW5oZXJpdG9ySUQoZXhlYy0+Z2xvYmFsRGF0
YSgpKTsKKyAgICBlbHNlCisgICAgICAgIHN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5zY29wZSgp
LT5nbG9iYWxPYmplY3QtPmVtcHR5T2JqZWN0U3RydWN0dXJlKCk7CisgICAgCisgICAgTExJTlRf
UkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY29udmVydF90aGlzKQoreworICAgIEpTVmFsdWUgdjEgPSBM
TElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHYxLmlzUHJpbWl0aXZlKCkpOworICAg
IExMSU5UX1JFVFVSTih2MS50b1RoaXNPYmplY3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbmV3X29iamVjdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1w
dHlPYmplY3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5
KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RBcnJheShleGVjLCBiaXR3aXNlX2Nhc3Q8
SlNWYWx1ZSo+KCZMTElOVF9PUCgyKSksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZlcikKK3sKKyAgICBMTElOVF9SRVRVUk4o
Y29uc3RydWN0QXJyYXkoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKHBj
WzJdLnUub3BlcmFuZCksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbmV3X3JlZ2V4cCkKK3sKKyAgICBSZWdFeHAqIHJlZ0V4cCA9IGV4ZWMtPmNvZGVC
bG9jaygpLT5yZWdleHAocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIXJlZ0V4cC0+aXNWYWxp
ZCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxp
ZCBmbGFnIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSk7CisgICAgTExJTlRfUkVU
VVJOKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVj
dHVyZSgpLCByZWdFeHApKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCkKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0Jv
b2xlYW4oZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2VxKQoreworICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFs
dWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVxKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oIUpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2xlc3MpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8dHJ1ZT4o
ZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKQoreworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ3JlYXRlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczxmYWxz
ZT4oZXhlYywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgp
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcmVxKQoreworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3ByZV9pbmMpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5U
X09QKDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSArIDEpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3ByZV9kZWMpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5U
X09QKDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAtIDEpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Bvc3RfaW5jKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgy
KS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihy
ZXN1bHQgKyAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0g
TExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0g
anNOdW1iZXIocmVzdWx0IC0gMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKC1MTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKQoreworICAgIEpTVmFsdWUgdjEg
PSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHYyID0gTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCk7CisgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYo
IlRyeWluZyB0byBhZGQgJXMiLCB2MS5kZXNjcmlwdGlvbigpKTsKKyAgICBwcmludGYoIiB0byAl
cy5cbiIsIHYyLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKHYxLmlzU3Ry
aW5nKCkgJiYgIXYyLmlzT2JqZWN0KCkpCisgICAgICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhl
eGVjLCBhc1N0cmluZyh2MSksIHYyLnRvU3RyaW5nKGV4ZWMpKSk7CisgICAgCisgICAgaWYgKHYx
LmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKHYxLmFzTnVtYmVyKCkgKyB2Mi5hc051bWJlcigpKSk7CisgICAgCisgICAgTExJTlRfUkVU
VVJOKGpzQWRkU2xvd0Nhc2UoZXhlYywgdjEsIHYyKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9tdWwpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICogTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1i
ZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1YikKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhl
YykgLSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAvIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9t
b2QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYyksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4
ZWMpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KQoreworICAgIExM
SU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMp
IDw8IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVy
KExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Vyc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLnRvVUludDMyKGV4ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMy
KGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhl
YykgJiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIo
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSB8IExMSU5UX09QX0MoMykuanNW
YWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Jp
dHhvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9JbnQzMihleGVjKSBeIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCkKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIofkxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKK3sKKyAg
ICBKU1ZhbHVlIGJhc2VWYWwgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyNpZm5kZWYgTkRF
QlVHCisgICAgVHlwZUluZm8gdHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKTsKKyAgICBBU1NFUlQo
IWJhc2VWYWwuaXNPYmplY3QoKQorICAgICAgICAgICB8fCAhKHR5cGVJbmZvID0gYXNPYmplY3Qo
YmFzZVZhbCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2Uo
KSk7CisjZW5kaWYKKyAgICBMTElOVF9USFJPVyhjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihleGVj
LCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2luc3RhbmNlb2YpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0
aHM6Om9wSW5zdGFuY2VPZlNsb3coZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQpLmpzVmFsdWUoKSkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNUeXBl
U3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCkKK3sKKyAgICBKU1ZhbHVlIHYgPSBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKHYuaXND
ZWxsKCkgPyB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKCkgOiB2LmlzVW5kZWZpbmVkKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX2Jvb2xlYW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaXNfc3RyaW5nKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oaXNKU1N0cmluZyhM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2lzX29iamVjdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNPYmplY3RUeXBl
KExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaXNfZnVuY3Rpb24pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rp
b25UeXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0
aHM6Om9wSW4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSkKK3sKKyAg
ICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZSwgQ29tbW9uU2xvd1BhdGhzOjpvcFJl
c29sdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5k
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKQoreworICAg
IExMSU5UX1JFVFVSTl9QUk9GSUxFRCgKKyAgICAgICAgb3BfcmVzb2x2ZV9za2lwLAorICAgICAg
ICBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVNraXAoCisgICAgICAgICAgICBleGVjLAorICAg
ICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwK
KyAgICAgICAgICAgIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitzdGF0aWMgSlNWYWx1ZSByZXNv
bHZlR2xvYmFsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGds
b2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0u
dS5vcGVyYW5kOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUu
Z2V0KCk7CisgICAgCisgICAgQVNTRVJUX1VOVVNFRChzdHJ1Y3R1cmUsIHN0cnVjdHVyZSAhPSBn
bG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9
IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qo
Z2xvYmFsT2JqZWN0KTsKKyAgICAKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNs
b3QoZXhlYywgaWRlbnQsIHNsb3QpKSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5n
ZXRWYWx1ZShleGVjLCBpZGVudCk7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUo
KSAmJiAhZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnko
KQorICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgeworICAg
ICAgICAgICAgcGNbM10udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmds
b2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5z
dHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAor
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVVbmRlZmluZWRWYXJpYWJs
ZUVycm9yKGV4ZWMsIGlkZW50KTsKKyAgICByZXR1cm4gSlNWYWx1ZSgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCit7CisgICAgTExJTlRfUkVUVVJOX1BS
T0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFsLCByZXNvbHZlR2xvYmFsKGV4ZWMsIHBjKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQoreworICAg
IExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljLCByZXNvbHZl
R2xvYmFsKGV4ZWMsIHBjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZl
X2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQoreworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxF
RChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljLCBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZShl
eGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAgSWRlbnRp
ZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJh
bmQpOworICAgIGlmIChwY1szXS51Lm9wZXJhbmQpIHsKKyAgICAgICAgSlNWYWx1ZSBiYXNlID0g
SlNDOjpyZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCB0cnVlKTsK
KyAgICAgICAgaWYgKCFiYXNlKQorICAgICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JG
b3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICAg
ICAgTExJTlRfUkVUVVJOKGJhc2UpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk5fUFJP
RklMRUQob3BfcmVzb2x2ZV9iYXNlLCBKU0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVj
LT5zY29wZUNoYWluKCksIGZhbHNlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9l
bnN1cmVfcHJvcGVydHlfZXhpc3RzKQoreworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVj
dChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7
CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihw
Y1syXS51Lm9wZXJhbmQpOworICAgIGlmICghb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywg
aWRlbnQsIHNsb3QpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRH
bG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpCit7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhCYXNlKGV4
ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5U
X09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9
IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5n
LCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4KKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90
aGlzKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVX
aXRoVGhpcyhleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJh
bmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJ
TlRfT1AoMikgPSByZXN1bHQ7CisgICAgLy8gRklYTUU6IHRlY2huaWNhbGx5IHNob3VsZCBoYXZl
IHByb2ZpbGluZywgYnV0IHdlIGRvbid0IGRvIGl0IGJlY2F1c2UgdGhlIERGRyB3b24ndCB1c2Ug
aXQuCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRf
YnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsK
KyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9w
ZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7
CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKKworICAgIEpTVmFsdWUgcmVzdWx0
ID0gYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CisgICAgTExJTlRfT1AoMSkgPSByZXN1bHQ7CisKKyAgICBpZiAoYmFzZVZhbHVl
LmlzQ2VsbCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKQorICAgICAgICAmJiBzbG90
LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlCisgICAgICAgICYmIHNsb3QuY2FjaGVkUHJvcGVydHlU
eXBlKCkgPT0gUHJvcGVydHlTbG90OjpWYWx1ZSkgeworICAgICAgICAKKyAgICAgICAgSlNDZWxs
KiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0
cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVj
dHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgeworICAgICAgICAg
ICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAg
ICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1
ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcGNbT1BDT0RFX0xFTkdUSChvcF9nZXRf
YnlfaWQpIC0gMV0udS5wcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dl
dF9hcmd1bWVudHNfbGVuZ3RoKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZp
ZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIp
LmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworICAgIExMSU5U
X1JFVFVSTihiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+
aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKSk7CisgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAgICAgYXNP
YmplY3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgaWRlbnQsIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICBlbHNlCisgICAgICAgIGJhc2VWYWx1
ZS5wdXQoZXhlYywgaWRlbnQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgp
CisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKSkgeworICAgICAgICAKKyAgICAgICAgSlND
ZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAo
IXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0
cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKQorICAgICAgICAg
ICAgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgc3RydWN0dXJl
LT5wcmV2aW91c0lEKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gc3RydWN0dXJlLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMg
aXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBvZiB0aGUgbWV0aG9kcyB3ZSBjYWxsCisgICAgICAgICAg
ICAgICAgICAgIC8vIGJlbG93IG1heSBHQy4KKyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5v
cGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworCisgICAg
ICAgICAgICAgICAgICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsK
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPnByZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzRd
LnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcmV2aW91c0lE
KCkpOworICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9m
ZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBwY1s2XS51LnN0
cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCks
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAg
ICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4o
ZXhlYyk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFpbik7CisgICAgICAgICAgICAg
ICAgICAgIHBjWzddLnUuc3RydWN0dXJlQ2hhaW4uc2V0KAorICAgICAgICAgICAgICAgICAgICAg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjaGFp
bik7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0u
dS5vcGVyYW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51
Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50
X29wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAor
ICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5k
ID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJh
c2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMs
IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpKTsKKyAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5h
YmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihj
b3VsZERlbGV0ZSkpOworfQorCitpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKK3sKKyAgICBpZiAoTElL
RUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAg
ICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJv
cGVydHkoZXhlYywgYXNTdHJpbmcoc3Vic2NyaXB0KS0+dmFsdWUoZXhlYykpKQorICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQz
MigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAg
ICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5H
ZXRJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJ
bmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VW
YWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpCisgICAg
ICAgICAgICByZXR1cm4gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7
CisgICAgICAgIAorICAgICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBpKTsKKyAgICB9
CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBwcm9w
ZXJ0eSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKQoreworICAg
IExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9nZXRfYnlfdmFsLCBnZXRCeVZhbChleGVjLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpCit7CisgICAgSlNWYWx1
ZSBhcmd1bWVudHMgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhcmd1bWVudHMp
IHsKKyAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIExM
SU5UX09QKDIpID0gYXJndW1lbnRzOworICAgICAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAgICB9
CisgICAgCisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIGFyZ3VtZW50cywgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9i
eV9wbmFtZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJTlRfT1AoMiku
anNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3B1dF9ieV92YWwpCit7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0g
ZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7
CisgICAgCisgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKKyAgICAgICAg
dWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU0FycmF5
KGJhc2VWYWx1ZSkpIHsKKyAgICAgICAgICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5KGJh
c2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAoanNBcnJheS0+Y2FuU2V0SW5kZXgoaSkpCisgICAg
ICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgoZ2xvYmFsRGF0YSwgaSwgdmFsdWUpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5kZXgoanNBcnJh
eSwgZXhlYywgaSwgdmFsdWUpOworICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKQorICAgICAgICAgICAgJiYgYXNC
eXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAgICAgICAgICAgIEpT
Qnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7CisgICAgICAg
ICAgICBpZiAodmFsdWUuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXkt
PnNldEluZGV4KGksIHZhbHVlLmFzSW50MzIoKSk7CisgICAgICAgICAgICAgICAgTExJTlRfRU5E
KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgewor
ICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5hc051bWJlcigp
KTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgTExJTlRf
RU5EKCk7CisgICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2Ny
aXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZXhlYy0+Y29kZUJsb2NrKCktPmlzU3Ry
aWN0TW9kZSgpKTsKKyAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIHByb3BlcnR5LCB2YWx1ZSwgc2xv
dCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxf
YnlfdmFsKQoreworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZXhlYyk7
CisgICAgCisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsK
KyAgICAKKyAgICBib29sIGNvdWxkRGVsZXRlOworICAgIAorICAgIHVpbnQzMl90IGk7CisgICAg
aWYgKHN1YnNjcmlwdC5nZXRVSW50MzIoaSkpCisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9i
amVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KGJhc2VPYmplY3QsIGV4
ZWMsIGkpOworICAgIGVsc2UgeworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAg
ICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAg
IGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHko
YmFzZU9iamVjdCwgZXhlYywgcHJvcGVydHkpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNvdWxk
RGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJ
TlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5
LiIpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpCit7CisgICAgTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCkucHV0KGV4ZWMsIHBjWzJdLnUub3BlcmFuZCwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcHV0X2dldHRlcikKK3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlz
T2JqZWN0KCkpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSku
anNWYWx1ZSgpKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5p
ZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpzVmFs
dWUoKS5pc09iamVjdCgpKTsKKyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVHZXR0
ZXIoYmFzZU9iaiwgZXhlYywgaWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUoKSks
IDApOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0
X3NldHRlcikKK3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0KCkp
OworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgp
KTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVy
KHBjWzJdLnUub3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpzVmFsdWUoKS5pc09i
amVjdCgpKTsKKyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVTZXR0ZXIoYmFzZU9i
aiwgZXhlYywgaWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUoKSksIDApOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam1wX3Njb3BlcykK
K3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBTY29wZUNoYWlu
Tm9kZSogdG1wID0gZXhlYy0+c2NvcGVDaGFpbigpOworICAgIHdoaWxlIChjb3VudC0tKQorICAg
ICAgICB0bXAgPSB0bXAtPnBvcCgpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4odG1wKTsKKyAg
ICBwYyArPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qdHJ1ZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfanRydWUsIExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9qZmFsc2UpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pmYWxzZSwgIUxM
SU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9qbGVzcykKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3MsIGpzTGVz
czx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcykKK3sKKyAgICBM
TElOVF9CUkFOQ0gob3Bfam5sZXNzLCAhanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfamdyZWF0ZXIpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVhdGVyLCBq
c0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEp
LmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKQor
eworICAgIExMSU5UX0JSQU5DSChvcF9qbmdyZWF0ZXIsICFqc0xlc3M8ZmFsc2U+KGV4ZWMsIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3NlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bf
amxlc3NlcSwganNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bmxlc3NlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzZXEsICFqc0xlc3NFcTx0cnVl
PihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEpCit7CisgICAgTExJ
TlRfQlJBTkNIKG9wX2pncmVhdGVyZXEsIGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmdy
ZWF0ZXJlcSwgIWpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3N3aXRjaF9pbW0pCit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKTsKKyAgICBBU1NFUlQoc2NydXRpbmVlLmlzRG91YmxlKCkpOworICAgIGRvdWJsZSB2
YWx1ZSA9IHNjcnV0aW5lZS5hc0RvdWJsZSgpOworICAgIGludDMyX3QgaW50VmFsdWUgPSBzdGF0
aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51
Lm9wZXJhbmQ7CisgICAgaWYgKHZhbHVlID09IGludFZhbHVlKSB7CisgICAgICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9j
ay0+aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFs
dWUoaW50VmFsdWUsIGRlZmF1bHRPZmZzZXQpOworICAgIH0gZWxzZQorICAgICAgICBwYyArPSBk
ZWZhdWx0T2Zmc2V0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfc3dpdGNoX3N0cmluZykKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5k
OworICAgIGlmICghc2NydXRpbmVlLmlzU3RyaW5nKCkpCisgICAgICAgIHBjICs9IGRlZmF1bHRP
ZmZzZXQ7CisgICAgZWxzZSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRh
YmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoYXNTdHJpbmcoc2NydXRpbmVlKS0+
dmFsdWUoZXhlYykuaW1wbCgpLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYykKK3sKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxv
Y2stPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlCisgICAgICAgICAgIHx8ICFjb2RlQmxvY2st
Pm5lZWRzRnVsbFNjb3BlQ2hhaW4oKQorICAgICAgICAgICB8fCBleGVjLT51bmNoZWNrZWRSKGNv
ZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CisjaWYgTExJTlRfSEVM
UEVSX1RSQUNJTkcKKyAgICBwcmludGYoIkNyZWF0aW5nIGZ1bmN0aW9uIVxuIik7CisjZW5kaWYK
KyAgICBMTElOVF9SRVRVUk4oY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbMl0udS5vcGVyYW5k
KS0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25ld19mdW5jX2V4cCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2Rl
QmxvY2stPmZ1bmN0aW9uRXhwcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTRnVuY3Rpb24qIGZ1
bmMgPSBmdW5jdGlvbi0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpOworICAgIAorICAg
IGlmICghZnVuY3Rpb24tPm5hbWUoKS5pc051bGwoKSkgeworICAgICAgICBKU1N0YXRpY1Njb3Bl
T2JqZWN0KiBmdW5jdGlvblNjb3BlT2JqZWN0ID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRl
KGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKCksIGZ1bmMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7Cisg
ICAgICAgIGZ1bmMtPnNldFNjb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuYy0+c2NvcGUoKS0+
cHVzaChmdW5jdGlvblNjb3BlT2JqZWN0KSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVS
TihmdW5jKTsKK30KKworc3RhdGljIEhlbHBlclJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhl
Y1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgY2FsbGVlLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0Nh
bGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhl
Yy0+Z2xvYmFsRGF0YSgpOworCisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5z
Y29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKworICAgIGlm
IChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAg
ICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxlZSwgY2FsbERhdGEpOwor
ICAgIAorICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVKUyk7CisgICAgCisgICAg
ICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUhvc3QpIHsKKyAgICAgICAgICAgIGdsb2JhbERh
dGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZl
LmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTExJTlRf
Q0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICAgICAgfQorICAgICAgICAKKyNpZiBMTElOVF9IRUxQ
RVJfVFJBQ0lORworICAgICAgICBwcmludGYoIkNhbGwgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9u
OiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICAgICAgQVNTRVJU
KGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSk7CisgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhl
YywgcGMsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgIH0KKwor
ICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIAorICAgIENvbnN0cnVj
dERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBn
ZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0RGF0YSk7CisgICAgCisgICAgQVNTRVJU
KGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZUpTKTsKKyAgICAKKyAgICBpZiAoY29uc3Ry
dWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlSG9zdCkgeworICAgICAgICBnbG9iYWxEYXRhLT5ob3N0
Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1
bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxl
ZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsK
KyAgICB9CisgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAgICAgcHJpbnRmKCJD
b25zdHJ1Y3RvciBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUuZGVzY3Jp
cHRpb24oKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVj
dFR5cGVOb25lKTsKKyAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBQ29u
c3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5
cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSwgTExJbnRDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCit7CisgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0
aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSk7CisgICAgaWYgKCFjYWxsZWVB
c0Z1bmN0aW9uQ2VsbCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUs
IHBjLCBjYWxsZWVBc1ZhbHVlLCBraW5kKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUg
PSBhc0Z1bmN0aW9uKGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRT
Y29wZUNoYWluKGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKSk7CisgICAgRXhlY3V0YWJsZUJhc2Uq
IGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAgICAKKyAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgY29kZVB0cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CisgICAg
aWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGNvZGVQdHIgPSBleGVj
dXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAg
ZWxzZSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0g
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAgICAgIEpT
T2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVjQ2FsbGVl
LCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAg
ICBMTElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCksIHBjLCBlcnJvcik7
CisgICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVj
b2RlRm9yKGtpbmQpOworICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICAgICAgaWYgKGV4
ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIGNvZGVQdHIgPSBm
dW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihraW5k
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJs
ZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIH0KKyAg
ICAKKyAgICBpZiAoY2FsbExpbmtJbmZvKSB7CisgICAgICAgIGlmIChjYWxsTGlua0luZm8tPmlz
T25MaXN0KCkpCisgICAgICAgICAgICBjYWxsTGlua0luZm8tPnJlbW92ZSgpOworICAgICAgICBF
eGVjU3RhdGUqIGV4ZWNDYWxsZXIgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgICAg
ICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBleGVj
Q2FsbGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAgICAg
IGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEo
KSwgZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOwor
ICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKKyAgICAg
ICAgaWYgKGNvZGVCbG9jaykKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2Fs
bChjYWxsTGlua0luZm8pOworICAgIH0KKyAgICAKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVj
Q2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKK30KKworaW5saW5lIEhl
bHBlclJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiog
cGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRv
OgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hh
dCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIElmIHBvc3Np
YmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAgIC8vIC0gUmV0dXJuIGEgdHVw
bGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1l
LgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1
ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9w
ZXJhbmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVy
RmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVy
RnJhbWUoZXhlYyk7CisgICAgCisgICAgQVNTRVJUKHBjWzRdLnUuY2FsbExpbmtJbmZvKTsKKyAg
ICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCBw
Y1s0XS51LmNhbGxMaW5rSW5mbyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxs
KQoreworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0KQoreworICAgIHJldHVybiBnZW5l
cmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0cnVjdCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAv
LyAtIFNldCB1cCBhIGNhbGwgZnJhbWUgd2hpbGUgcmVzcGVjdGluZyB0aGUgdmFyaWFibGUgYXJn
dW1lbnRzLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQg
aWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFk
ZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUg
Y2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNT
dGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAorICAgICAgICBleGVjLCAmZXhlYy0+Z2xv
YmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwKKyAgICAgICAgTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBwY1s0XS51Lm9wZXJhbmQp
OworICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKTsKKyAgICAKKyAgICBl
eGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFs
dWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlYy0+dW5j
aGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0d2lzZV9jYXN0
PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpKTsKKyAgICAKKyAg
ICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNW
YWx1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpCit7CisgICAg
SlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIAorICAg
IEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAgSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAgIGV4
ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFuZCk7
CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlY0NhbGxlZS0+
dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4
ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2Fs
bGVlLT5zZXRSZXR1cm5QQyhiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbGxpbnRfZ2VuZXJp
Y19yZXR1cm5fcG9pbnQpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CisgICAg
ZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0
d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX2V2YWwpKTsKKyAg
ICAKKyAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFs
KSkKKyAgICAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGws
IGNhbGxlZUFzVmFsdWUpOworICAgIAorICAgIGdsb2JhbERhdGEuaG9zdENhbGxSZXR1cm5WYWx1
ZSA9IGV2YWwoZXhlY0NhbGxlZSk7CisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwg
cGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCit7CisgICAg
QVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIEpT
VmFsdWUgYWN0aXZhdGlvblZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIGlmICgh
YWN0aXZhdGlvblZhbHVlKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNr
ZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVl
KCkpIHsKKyAgICAgICAgICAgIGlmICghZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgp
KQorICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT50ZWFyT2ZmKGV4ZWMpOworICAgICAg
ICB9CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2
YXRpb24gPSBhc0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVlKTsKKyAgICBhY3RpdmF0aW9uLT50
ZWFyT2ZmKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnVu
Y2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpLmpz
VmFsdWUoKSkKKyAgICAgICAgYXNBcmd1bWVudHModiktPmRpZFRlYXJPZmZBY3RpdmF0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgYWN0aXZhdGlvbik7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCit7CisgICAgQVNTRVJU
KGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkgJiYgIWV4ZWMtPmNvZGVCbG9jaygp
LT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIGFzQXJndW1lbnRzKGV4ZWMtPnVuY2hlY2tl
ZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpLmpzVmFsdWUo
KSktPnRlYXJPZmYoZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9zdHJjYXQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsICZM
TElOVF9PUCgyKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90b19wcmltaXRpdmUpCit7CisgICAgTExJTlRfUkVUVVJOKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2dldF9wbmFtZXMpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOwor
ICAgIGlmICh2LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcGMgKz0gcGNbNV0udS5v
cGVyYW5kOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSlNPYmplY3Qq
IG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gby0+c3Ry
dWN0dXJlKCk7CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVy
YXRvciA9IHN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpOworICAgIGlmICghanNQcm9wZXJ0
eU5hbWVJdGVyYXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQcm90b3R5cGVD
aGFpbigpICE9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCisgICAgICAgIGpzUHJv
cGVydHlOYW1lSXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywg
byk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBKU1ZhbHVlKGpzUHJvcGVydHlOYW1lSXRlcmF0
b3IpOworICAgIExMSU5UX09QKDIpID0gSlNWYWx1ZShvKTsKKyAgICBMTElOVF9PUCgzKSA9IFJl
Z2lzdGVyOjp3aXRoSW50KDApOworICAgIExMSU5UX09QKDQpID0gUmVnaXN0ZXI6OndpdGhJbnQo
anNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAgICAKKyAgICBwYyArPSBPUENPREVf
TEVOR1RIKG9wX2dldF9wbmFtZXMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSkKK3sKKyAgICBKU09iamVjdCogYmFzZSA9IGFzT2Jq
ZWN0KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CisgICAgSlNTdHJpbmcqIHByb3BlcnR5ID0gYXNT
dHJpbmcoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBpZiAoYmFzZS0+aGFzUHJvcGVydHko
ZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eS0+dmFsdWUoZXhlYykpKSkgeworICAgICAg
ICAvLyBHbyB0byB0YXJnZXQuCisgICAgICAgIHBjICs9IHBjWzZdLnUub3BlcmFuZDsKKyAgICB9
IC8vIEVsc2UsIGRvbid0IGNoYW5nZSB0aGUgUEMsIHNvIHRoZSBpbnRlcnByZXRlciB3aWxsIHJl
bG9vcC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1
c2hfc2NvcGUpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAg
IEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9IG87CisgICAgZXhlYy0+c2V0U2NvcGVDaGFp
bihleGVjLT5zY29wZUNoYWluKCktPnB1c2gobykpOworICAgIAorICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9wX3Njb3BlKQoreworICAgIGV4ZWMtPnNl
dFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wb3AoKSk7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSkKK3sKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBz
Y29wZSA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBjb2RlQmxvY2stPmlkZW50
aWZpZXIocGNbMl0udS5vcGVyYW5kKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpLCBEb250RGVsZXRl
KTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChzY29w
ZSkpOworICAgIExMSU5UX1JFVFVSTihzY29wZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90aHJvdykKK3sKKyAgICBMTElOVF9USFJPVyhMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpCit7
CisgICAgTExJTlRfVEhST1coY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgTExJTlRfT1BfQygx
KS5qc1ZhbHVlKCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9kZWJ1ZykKK3sKKyAgICBpbnQgZGVidWdIb29rSUQgPSBwY1sxXS51
Lm9wZXJhbmQ7CisgICAgaW50IGZpcnN0TGluZSA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpbnQg
bGFzdExpbmUgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LmludGVycHJldGVyLT5kZWJ1ZyhleGVjLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdI
b29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQoreworICAgICgq
UHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSgpKS0+d2lsbEV4ZWN1dGUoZXhlYywg
TExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCit7CisgICAgKCpQcm9maWxlcjo6ZW5h
YmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT5kaWRFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpz
VmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpM
TEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludEhlbHBlcnNfaAorI2RlZmluZSBMTEludEhlbHBlcnNfaAorCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxF
KExMSU5UKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IElu
c3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCit0eXBlZGVmIGludDY0X3QgSGVscGVy
UmV0dXJuVHlwZTsKKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29w
ZXJhbmQoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFu
ZCk7CitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0
YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7CisKKyNkZWZp
bmUgTExJTlRfSEVMUEVSX0RFQ0wobmFtZSkgXAorICAgIGV4dGVybiAiQyIgSGVscGVyUmV0dXJu
VHlwZSBsbGludF8jI25hbWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCisKK0xM
SU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNl
X3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3By
b2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2Vf
YXJpdHlDaGVja19mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNr
X2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2UpOworTExJTlRfSEVMUEVS
X0RFQ0woc3BlY2lhbF90cmFjZSk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpOworTExJ
TlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2spOworTExJ
TlRfSEVMUEVSX0RFQ0wobG9vcF9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSk7CitM
TElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0
cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZh
dGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NvbnZlcnRfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVjdCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdf
cmVnZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3Ry
aWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2xlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcik7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wcmVfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cG9zdF9kZWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Fk
ZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9zdWIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rpdik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbW9kKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3JzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
dXJzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9iaXRvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NoZWNrX2hhc19pbnN0YW5jZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFu
Y2VvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pc191bmRlZmluZWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Jv
b2xlYW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJlcik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19v
YmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9pbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVz
b2x2ZV9nbG9iYWxfZHluYW1pYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9m
b3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVz
b2x2ZV9iYXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhp
c3RzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dldF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3Vt
ZW50c19sZW5ndGgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9nZXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlf
dmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rl
bF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2dldHRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHV0X3NldHRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam1wX3Njb3Blcyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2pmYWxzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3MpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2pubGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXIp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfamxlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2puZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1t
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfY2hhcik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfc3dpdGNoX3N0cmluZyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3
X2Z1bmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jX2V4cCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3Ry
dWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVh
cl9vZmZfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYXJn
dW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X3BuYW1lcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cG9wX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Rocm93X3JlZmVyZW5jZV9lcnJvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVidWcp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKTsKKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludEhl
bHBlcnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKKyNkZWZpbmUgTExJbnRPZmZsaW5lQXNtQ29u
ZmlnX2gKKworI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENQVShYODYpCisjZGVmaW5l
IE9GRkxJTkVfQVNNX1g4NiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMAorI2Vu
ZGlmCisKKyNpZiBDUFUoQVJNdjcpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDEKKyNlbHNl
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDAKKyNlbmRpZgorCisjaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAxCisjZWxzZQorI2RlZmlu
ZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIENQVShCSUdfRU5E
SUFOKQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDEKKyNlbHNlCisjZGVmaW5lIE9G
RkxJTkVfQVNNX0JJR19FTkRJQU4gMAorI2VuZGlmCisKKyNpZiBFTkFCTEUoTExJTlRfT1NSX1RP
X0pJVCkKKyNkZWZpbmUgT0ZGTElORV9BU01fSklUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUg
T0ZGTElORV9BU01fSklUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBMTElOVF9FWEVDVVRJT05f
VFJBQ0lORworI2RlZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAxCisjZWxzZQor
I2RlZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAwCisjZW5kaWYKKworI2VuZGlm
IC8vIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkFs
bG9jYXRpb25TcGFjZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkV4ZWN1
dGFibGUuaCIKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNp
bmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Nl
bGwuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgi
CisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgor
I2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKKyNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCisj
aW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgi
CisjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKKyNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKKyNp
bmNsdWRlICJTY29wZUNoYWluLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAi
U3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdJbXBsLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX09GRlNFVE9GKGNsYXp6LCBmaWVsZCkgT0JKRUNUX09GRlNFVE9GKGNsYXp6LCBmaWVs
ZCkKKworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQqIGR1bW15KCk7Cit9OworCitjb25zdCB1bnNpZ25lZCogTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOjpkdW1teSgpCit7CisjaW5jbHVkZSAiTExJbnREZXNpcmVkT2Zmc2V0cy5o
IgorICAgIHJldHVybiBleHRyYWN0b3JUYWJsZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
K2ludCBtYWluKGludCwgY2hhcioqKQoreworICAgIC8vIE91dCBvZiBhbiBhYnVuZGFuY2Ugb2Yg
Y2F1dGlvbiwgbWFrZSBzdXJlIHRoYXQgTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpIGlz
IGxpdmUsCisgICAgLy8gYW5kIHRoZSBleHRyYWN0b3JUYWJsZSBpcyBsaXZlLCB0b28uCisgICAg
cHJpbnRmKCIlcFxuIiwgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkpOworICAg
IHJldHVybiAwOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1
bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTExJbnRUaHVua3MuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUg
IkpTSW50ZXJmYWNlSklULmgiCisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIkxv
d0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7
CisKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8o
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCB2b2lkICgqdGFyZ2V0KSgpKQoreworICAgIEpTSW50
ZXJmYWNlSklUIGppdDsKKyAgICAKKyAgICAvLyBGSVhNRTogdGhlcmUncyBwcm9iYWJseSBhIGJl
dHRlciB3YXkgdG8gZG8gaXQgb24gWDg2LCBidXQgSSdtIG5vdCBzdXJlIEkgY2FyZS4KKyAgICBq
aXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+
KHRhcmdldCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDApOworICAgIGppdC5qdW1wKEpTSW50ZXJm
YWNlSklUOjpyZWdUMCk7CisgICAgCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqZ2xvYmFs
RGF0YSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICByZXR1cm4gcGF0Y2hCdWZmZXIuZmlu
YWxpemVDb2RlKCk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxF
bnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1
cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JD
b25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sK
KyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxE
YXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRv
cihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtX
aXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlf
Y2hlY2spOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0
b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9ldmFsX3Byb2xvZ3VlKTsKK30KKworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFs
RGF0YSwgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IExMSW50VGh1bmtzX2gKKyNkZWZpbmUgTExJbnRUaHVua3NfaAorCisjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsRGF0YTsKKwor
bmFtZXNwYWNlIExMSW50IHsKKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2Fs
bEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSop
OworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dl
bmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZv
ckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2Jh
bERhdGEqKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFC
TEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludFRodW5rc19oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzODAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBDcmFzaCBjb3Vyc2Ugb24gdGhlIGxhbmd1YWdl
IHRoYXQgdGhpcyBpcyB3cml0dGVuIGluICh3aGljaCBJIGp1c3QgY2FsbAorIyAiYXNzZW1ibHki
IGV2ZW4gdGhvdWdoIGl0J3MgbW9yZSB0aGFuIHRoYXQpOgorIworIyAtIE1vc3RseSBnYXMtc3R5
bGUgb3BlcmFuZCBvcmRlcmluZy4gVGhlIGxhc3Qgb3BlcmFuZCB0ZW5kcyB0byBiZSB0aGUKKyMg
ICBkZXN0aW5hdGlvbi4gU28gImEgOj0gYiIgaXMgd3JpdHRlbiBhcyAibW92IGIsIGEiLiBCdXQg
dW5saWtlIGdhcywKKyMgICBjb21wYXJpc29ucyBhcmUgaW4tb3JkZXIsIHNvICJpZiAoYSA8IGIp
IiBpcyB3cml0dGVuIGFzCisjICAgImJpbHQgYSwgYiwgLi4uIi4KKyMKKyMgLSAiYiIgPSBieXRl
LCAiaCIgPSAxNi1iaXQgd29yZCwgImkiID0gMzItYml0IHdvcmQsICJwIiA9IHBvaW50ZXIuCisj
ICAgQ3VycmVudGx5IHRoaXMgaXMganVzdCAzMi1iaXQgc28gImkiIGFuZCAicCIgYXJlIGludGVy
Y2hhbmdlYWJsZQorIyAgIGV4Y2VwdCB3aGVuIGFuIG9wIHN1cHBvcnRzIG9uZSBidXQgbm90IHRo
ZSBvdGhlci4KKyMKKyMgLSBJbiBnZW5lcmFsLCB2YWxpZCBvcGVyYW5kcyBmb3IgbWFjcm8gaW52
b2NhdGlvbnMgYW5kIGluc3RydWN0aW9ucyBhcmUKKyMgICByZWdpc3RlcnMgKGVnICJ0MCIpLCBh
ZGRyZXNzZXMgKGVnICI0W3QwXSIpLCBiYXNlLWluZGV4IGFkZHJlc3NlcworIyAgIChlZyAiN1t0
MCwgdDEsIDJdIiksIGFic29sdXRlIGFkZHJlc3NlcyAoZWcgIjB4YTAwMDAwMDBbXSIpLCBvciBs
YWJlbHMKKyMgICAoZWcgIl9mb28iIG9yICIuZm9vIikuIE1hY3JvIGludm9jYXRpb25zIGNhbiBh
bHNvIHRha2UgYW5vbnltb3VzCisjICAgbWFjcm9zIGFzIG9wZXJhbmRzLiBJbnN0cnVjdGlvbnMg
Y2Fubm90IHRha2UgYW5vbnltb3VzIG1hY3Jvcy4KKyMKKyMgLSBMYWJlbHMgbXVzdCBoYXZlIG5h
bWVzIHRoYXQgYmVnaW4gd2l0aCBlaXRoZXIgIl8iIG9yICIuIi4gIEEgIi4iIGxhYmVsCisjICAg
aXMgbG9jYWwgYW5kIGdldHMgcmVuYW1lZCBiZWZvcmUgY29kZSBnZW4gdG8gbWluaW1pemUgbmFt
ZXNwYWNlCisjICAgcG9sbHV0aW9uLiBBICJfIiBsYWJlbCBpcyBhbiBleHRlcm4gc3ltYm9sIChp
LmUuICIuZ2xvYmwiKS4gVGhlICJfIgorIyAgIG1heSBvciBtYXkgbm90IGJlIHJlbW92ZWQgZHVy
aW5nIGNvZGUgZ2VuIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBhc20KKyMgICBjb252ZW50aW9u
cyBmb3IgQyBuYW1lIG1hbmdsaW5nIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0gbWFuZGF0ZSBhICJf
IgorIyAgIHByZWZpeC4KKyMKKyMgLSBBICJtYWNybyIgaXMgYSBsYW1iZGEgZXhwcmVzc2lvbiwg
d2hpY2ggbWF5IGJlIGVpdGhlciBhbm9ueW1vdXMgb3IKKyMgICBuYW1lZC4gQnV0IHRoaXMgaGFz
IGNhdmVhdHMuICJtYWNybyIgY2FuIHRha2UgemVybyBvciBtb3JlIGFyZ3VtZW50cywKKyMgICB3
aGljaCBtYXkgYmUgbWFjcm9zIG9yIGFueSB2YWxpZCBvcGVyYW5kcywgYnV0IGl0IGNhbiBvbmx5
IHJldHVybgorIyAgIGNvZGUuIEJ1dCB5b3UgY2FuIGRvIFR1cmluZy1jb21wbGV0ZSB0aGluZ3Mg
dmlhIGNvbnRpbnVhdGlvbiBwYXNzaW5nCisjICAgc3R5bGU6ICJtYWNybyBmb28gKGEsIGIpIGIo
YSkgZW5kIGZvbyhmb28sIGZvbykiLiBBY3R1YWxseSwgZG9uJ3QgZG8KKyMgICB0aGF0LCBzaW5j
ZSB5b3UnbGwganVzdCBjcmFzaCB0aGUgYXNzZW1ibGVyLgorIworIyAtIEFuICJpZiIgaXMgYSBj
b25kaXRpb25hbCBvbiBzZXR0aW5ncy4gQW55IGlkZW50aWZpZXIgc3VwcGxpZWQgaW4gdGhlCisj
ICAgcHJlZGljYXRlIG9mIGFuICJpZiIgaXMgYXNzdW1lZCB0byBiZSBhICNkZWZpbmUgdGhhdCBp
cyBhdmFpbGFibGUKKyMgICBkdXJpbmcgY29kZSBnZW4uIFNvIHlvdSBjYW4ndCB1c2UgImlmIiBm
b3IgY29tcHV0YXRpb24gaW4gYSBtYWNybywgYnV0CisjICAgeW91IGNhbiB1c2UgaXQgdG8gc2Vs
ZWN0IGRpZmZlcmVudCBwaWVjZXMgb2YgY29kZSBmb3IgZGlmZmVyZW50CisjICAgcGxhdGZvcm1z
LgorIworIyAtIEFyZ3VtZW50cyB0byBtYWNyb3MgZm9sbG93IGxleGljYWwgc2NvcGluZyByYXRo
ZXIgdGhhbiBkeW5hbWljIHNjb3BpbmcuCisjICAgQ29uc3QncyBhbHNvIGZvbGxvdyBsZXhpY2Fs
IHNjb3BpbmcgYW5kIG1heSBvdmVycmlkZSAoaGlkZSkgYXJndW1lbnRzCisjICAgb3Igb3RoZXIg
Y29uc3RzLiBBbGwgdmFyaWFibGVzIChhcmd1bWVudHMgYW5kIGNvbnN0YW50cykgY2FuIGJlIGJv
dW5kCisjICAgdG8gb3BlcmFuZHMuIEFkZGl0aW9uYWxseSwgYXJndW1lbnRzIChidXQgbm90IGNv
bnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gbWFjcm9zLgorCisKKyMgVGhlc2UgZGVjbGFy
YXRpb25zIG11c3QgbWF0Y2ggaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmguCitjb25zdCBDYWxs
RnJhbWVIZWFkZXJTaXplID0gNDgKK2NvbnN0IEFyZ3VtZW50Q291bnQgPSAtNDgKK2NvbnN0IENh
bGxlckZyYW1lID0gLTQwCitjb25zdCBDYWxsZWUgPSAtMzIKK2NvbnN0IFNjb3BlQ2hhaW4gPSAt
MjQKK2NvbnN0IFJldHVyblBDID0gLTE2Citjb25zdCBDb2RlQmxvY2sgPSAtOAorCitjb25zdCBU
aGlzQXJndW1lbnRPZmZzZXQgPSAtQ2FsbEZyYW1lSGVhZGVyU2l6ZSAtIDgKKworIyBEZWNsYXJl
IHNvbWUgYWxpYXNlcyBmb3IgdGhlIHJlZ2lzdGVycyB3ZSB3aWxsIHVzZS4KK2NvbnN0IFBDID0g
dDQKKworIyBPZmZzZXRzIG5lZWRlZCBmb3IgcmVhc29uaW5nIGFib3V0IHZhbHVlIHJlcHJlc2Vu
dGF0aW9uLgoraWYgQklHX0VORElBTgorICAgIGNvbnN0IFRhZ09mZnNldCA9IDAKKyAgICBjb25z
dCBQYXlsb2FkT2Zmc2V0ID0gNAorZWxzZQorICAgIGNvbnN0IFRhZ09mZnNldCA9IDQKKyAgICBj
b25zdCBQYXlsb2FkT2Zmc2V0ID0gMAorZW5kCisKKyMgVmFsdWUgcmVwcmVzZW50YXRpb24gY29u
c3RhbnRzLgorY29uc3QgSW50MzJUYWcgPSAtMQorY29uc3QgQm9vbGVhblRhZyA9IC0yCitjb25z
dCBOdWxsVGFnID0gLTMKK2NvbnN0IFVuZGVmaW5lZFRhZyA9IC00Citjb25zdCBDZWxsVGFnID0g
LTUKK2NvbnN0IEVtcHR5VmFsdWVUYWcgPSAtNgorY29uc3QgRGVsZXRlZFZhbHVlVGFnID0gLTcK
K2NvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRhZworCisjIFR5cGUgY29uc3RhbnRzLgor
Y29uc3QgU3RyaW5nVHlwZSA9IDUKK2NvbnN0IE9iamVjdFR5cGUgPSAxMAorCisjIFR5cGUgZmxh
Z3MgY29uc3RhbnRzLgorY29uc3QgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDEKK2NvbnN0IElt
cGxlbWVudHNIYXNJbnN0YW5jZSA9IDIKK2NvbnN0IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFu
Y2UgPSA4CisKKyMgSGVhcCBhbGxvY2F0aW9uIGNvbnN0YW50cy4KK2NvbnN0IEpTRmluYWxPYmpl
Y3RTaXplQ2xhc3NJbmRleCA9IDMKKworIyBCeXRlY29kZSBvcGVyYW5kIGNvbnN0YW50cy4KK2Nv
bnN0IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMAorCisjIENvZGUgdHlw
ZSBjb25zdGFudHMuCitjb25zdCBHbG9iYWxDb2RlID0gMAorY29uc3QgRXZhbENvZGUgPSAxCitj
b25zdCBGdW5jdGlvbkNvZGUgPSAyCisKKyMgVGhlIGludGVycHJldGVyIHN0ZWFscyB0aGUgdGFn
IHdvcmQgb2YgdGhlIGFyZ3VtZW50IGNvdW50LgorY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3Vt
ZW50Q291bnQgKyBUYWdPZmZzZXQKKworIyBUaGlzIG11c3QgbWF0Y2ggd3RmL1ZlY3Rvci5oLgor
Y29uc3QgVmVjdG9yU2l6ZU9mZnNldCA9IDAKK2NvbnN0IFZlY3RvckJ1ZmZlck9mZnNldCA9IDQK
KworIyBTdHJpbmcgZmxhZ3MuCitjb25zdCBIYXNoRmxhZ3M4Qml0QnVmZmVyID0gNjQKKworIyBV
dGlsaXRpZXMKK21hY3JvIGNyYXNoKCkKKyAgICBzdG9yZWkgMCwgMHhiYmFkYmVlZltdCisgICAg
bW92ZSAwLCB0MAorICAgIGNhbGwgdDAKK2VuZAorCittYWNybyBhc3NlcnQoYXNzZXJ0aW9uKQor
ICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGFzc2VydGlvbigub2spCisgICAgICAgIGNy
YXNoKCkKKyAgICAub2s6CisgICAgZW5kCitlbmQKKworbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRy
ZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAg
bW92ZSBsciwgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2lmIFg4NgorICAgICAgICBwb3Ag
ZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2Vu
ZAorCittYWNybyByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihzb3VyY2VSZWdpc3Rl
cikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgorICAgIGVs
c2lmIFg4NgorICAgICAgICBwdXNoIHNvdXJjZVJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBl
cnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCisgICAgYWRkcCBh
ZHZhbmNlICogNCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNo
V2l0aE9mZnNldChwY09mZnNldCkKKyAgICBsc2hpZnRpIDIsIHBjT2Zmc2V0CisgICAgYWRkcCBw
Y09mZnNldCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoKHBj
T2Zmc2V0KQorICAgIGxvYWRpIHBjT2Zmc2V0LCB0MAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9m
ZnNldCh0MCkKK2VuZAorCittYWNybyBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAgbG9hZGkgQXJn
dW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFj
cm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1v
dmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgIGVsc2lmIFg4NgorICAgICAg
ICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisgICAgZWxzZQorICAgICAgICBl
cnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCisjIFRoaXMgYmFyZWx5IHdv
cmtzLiBhcmczIGFuZCBhcmc0IHNob3VsZCBwcm9iYWJseSBiZSBpbW1lZGlhdGVzLgorbWFjcm8g
Y0NhbGw0KGZ1bmN0aW9uLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KQorICAgIGlmIEFSTXY3Cisg
ICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgICAgICBtb3Zl
IGFyZzMsIHQyCisgICAgICAgIG1vdmUgYXJnNCwgdDMKKyAgICBlbHNpZiBYODYKKyAgICAgICAg
cG9rZSBhcmcxLCAwCisgICAgICAgIHBva2UgYXJnMiwgMQorICAgICAgICBwb2tlIGFyZzMsIDIK
KyAgICAgICAgcG9rZSBhcmc0LCAzCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAor
ICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCittYWNybyBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBj
Q2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2Zy
CitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgYW4g
b3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtLiBmcm9tV2hlcmUKKyMgc2hvdWxkIGJl
IGFuIGltbWVkaWF0ZSBpbnRlZ2VyIC0gYW55IGludGVnZXIgeW91IGxpa2U7IHVzZSBpdCB0byBp
ZGVudGlmeSB0aGUgcGxhY2UgeW91J3JlCisjIGRlYnVnZ2luZyBmcm9tLiBvcGVyYW5kIHNob3Vs
ZCBsaWtld2lzZSBiZSBhbiBpbW1lZGlhdGUsIGFuZCBzaG91bGQgaWRlbnRpZnkgdGhlIG9wZXJh
bmQKKyMgaW4gdGhlIGluc3RydWN0aW9uIHN0cmVhbSB5b3UnZCBsaWtlIHRvIHByaW50IG91dC4K
K21hY3JvIHRyYWNlT3BlcmFuZChmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgY0NhbGw0KF9sbGlu
dF90cmFjZV9vcGVyYW5kLCBjZnIsIFBDLCBmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgbW92ZSB0
MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYg
eW91J2QgbGlrZSB0byBwcmludCB0aGUgdmFsdWUgb2YgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1
Y3Rpb24KKyMgc3RyZWFtLiBTYW1lIGFzIHRyYWNlT3BlcmFuZCgpLCBidXQgYXNzdW1lcyB0aGF0
IHRoZSBvcGVyYW5kIGlzIGEgcmVnaXN0ZXIsIGFuZCBwcmludHMgaXRzCisjIHZhbHVlLgorbWFj
cm8gdHJhY2VWYWx1ZShmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgY0NhbGw0KF9sbGludF90cmFj
ZV92YWx1ZSwgY2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisg
ICAgbW92ZSB0MSwgY2ZyCitlbmQKKworbWFjcm8gdHJhY2VFeGVjdXRpb24oKQorICAgIGlmIEVY
RUNVVElPTl9UUkFDSU5HCisgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3RyYWNlKQorICAgIGVu
ZAorZW5kCisKKyMgQ2FsbCBhIGhlbHBlciBmb3IgY2FsbCBvcGNvZGVzLgorbWFjcm8gY2FsbENh
bGxIZWxwZXIoYWR2YW5jZSwgaGVscGVyLCBhY3Rpb24pCisgICAgYWRkcCBhZHZhbmNlICogNCwg
UEMsIHQwCisgICAgc3RvcmVwIHQwLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAg
ICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUgdDEsIGNmcgorICAgIGFjdGlvbih0
MCkKK2VuZAorCittYWNybyBzbG93UGF0aEZvckNhbGwoYWR2YW5jZSwgaGVscGVyKQorICAgIGNh
bGxDYWxsSGVscGVyKAorICAgICAgICBhZHZhbmNlLAorICAgICAgICBoZWxwZXIsCisgICAgICAg
IG1hY3JvIChjYWxsZWUpCisgICAgICAgICAgICBjYWxsIGNhbGxlZQorICAgICAgICAgICAgZGlz
cGF0Y2hBZnRlckNhbGwoKQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hU
b0pJVChpbmNyZW1lbnQsIGFjdGlvbikKKyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICAgICAgYmFkZGlzIGluY3JlbWVudCwgQ29kZUJsb2Nr
OjptX2xsaW50RXhlY3V0ZUNvdW50ZXJbdDBdLCAuY29udGludWUKKyAgICAgICAgYWN0aW9uKCkK
KyAgICAuY29udGludWU6CisgICAgZW5kCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZv
ckxvb3AoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEsCisgICAgICAgIG1hY3Jv
ICgpCisgICAgICAgICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2Zy
XQorICAgICAgICAgICAgY0NhbGwyKF9sbGludF9sb29wX29zciwgY2ZyLCBQQykKKyAgICAgICAg
ICAgIG1vdmUgdDEsIGNmcgorICAgICAgICAgICAgYnRweiB0MCwgLnJlY292ZXIKKyAgICAgICAg
ICAgIGptcCB0MAorICAgICAgICAucmVjb3ZlcjoKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50
Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNo
ZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAg
ICAgMTAsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBjYWxsSGVscGVyKF9sbGludF9y
ZXBsYWNlKQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoaW5k
ZXgpCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlsdCBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXgsIG9rIGVuZCkKK2VuZAorCisjIEluZGV4LCB0YWcsIGFuZCBwYXlsb2FkIG11c3Qg
YmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90CisjIGNoYW5nZWQuCittYWNybyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmlndGVxIGlu
ZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFn
T2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRS
ZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRo
ZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUg
Pj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2ls
bCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4K
KyAgICBsb2FkcCBUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkcCBQ
YXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKwor
IyBJbmRleCBhbmQgcGF5bG9hZCBtYXkgYmUgdGhlIHNhbWUgcmVnaXN0ZXIuIEluZGV4IG1heSBi
ZSBjbG9iYmVyZWQuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhpbmRleCwgdGFn
LCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgs
IC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9u
ZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YWcKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdGFnXSwg
dGFnCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250
YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2
YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXgpIDw8IDMuCisgICAgbHNoaWZ0aSAzLCBpbmRleAorICAgIGFkZHAgaW5kZXgsIHRhZwor
ICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdGFnXSwgcGF5bG9hZAorICAgIGxvYWRwIFRhZ09mZnNl
dFt0YWddLCB0YWcKKy5kb25lOgorZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkVGFnQ3VzdG9tKGluZGV4LCB0YWdDaGVjaywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5k
ZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICB0YWdDaGVjayhU
YWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0pCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGlu
ZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVn
aXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVy
ZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwg
YmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisg
ICAgdGFnQ2hlY2soVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSkKKyAgICBsb2FkcCBQYXls
b2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJ
bmRleCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5v
dCBtdXRhdGVkLiBVc2UKKyMgdGhpcyBpZiB5b3Uga25vdyB3aGF0IHRoZSB0YWcgb2YgdGhlIHZh
cmlhYmxlIHNob3VsZCBiZS4gRG9pbmcgdGhlIHRhZworIyB0ZXN0IGFzIHBhcnQgb2YgbG9hZGlu
ZyB0aGUgdmFyaWFibGUgcmVkdWNlcyByZWdpc3RlciB1c2UsIGJ1dCBtYXkgbm90CisjIGJlIGZh
c3RlciB0aGFuIGRvaW5nIGxvYWRDb25zdGFudE9yVmFyaWFibGUgZm9sbG93ZWQgYnkgYSBicmFu
Y2ggb24gdGhlCisjIHRhZy4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGlu
ZGV4LCBleHBlY3RlZFRhZywgcGF5bG9hZCwgc2xvdykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZFRhZ0N1c3RvbSgKKyAgICAgICAgaW5kZXgsCisgICAgICAgIG1hY3JvIChhY3R1
YWxUYWcpIGJpbmVxIGFjdHVhbFRhZywgZXhwZWN0ZWRUYWcsIHNsb3cgZW5kLAorICAgICAgICBw
YXlsb2FkKQorZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVj
a2VkKGluZGV4LCBwYXlsb2FkKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFn
Q3VzdG9tKAorICAgICAgICBpbmRleCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykgZW5kLAor
ICAgICAgICBwYXlsb2FkKQorZW5kCisKK21hY3JvIHdyaXRlQmFycmllcih0YWcsIHBheWxvYWQp
CisgICAgIyBOb3RoaW5nIHRvIGRvLCBzaW5jZSB3ZSBkb24ndCBoYXZlIGEgZ2VuZXJhdGlvbmFs
IG9yIGluY3JlbWVudGFsIGNvbGxlY3Rvci4KK2VuZAorCittYWNybyB2YWx1ZVByb2ZpbGUodGFn
LCBwYXlsb2FkLCBwcm9maWxlKQorICAgIHN0b3JlaSB0YWcsIFZhbHVlUHJvZmlsZTo6bV9idWNr
ZXRzICsgVGFnT2Zmc2V0W3Byb2ZpbGVdCisgICAgc3RvcmVpIHBheWxvYWQsIFZhbHVlUHJvZmls
ZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFtwcm9maWxlXQorZW5kCisKKworIyBJbmRpY2F0
ZSB0aGUgYmVnaW5uaW5nIG9mIExMSW50LgorX2xsaW50X2JlZ2luOgorICAgIGNyYXNoKCkKKwor
CisjIEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVycHJldGVyCisKK21hY3JvIGZ1bmN0aW9uRm9y
Q2FsbENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2Zy
XSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFy
Z2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6bV9jb2RlQmxvY2tGb3JDYWxsW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2Vu
ZAorCittYWNybyBmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdp
c3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBK
U0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3Rlcgor
ICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFy
Z2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9uQ29k
ZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJj
ZVJlZ2lzdGVyKQorICAgIHN0b3JlcCBzb3VyY2VSZWdpc3RlciwgQ29kZUJsb2NrW2Nmcl0KK2Vu
ZAorCittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAg
ICAjIE5vdGhpbmcgdG8gZG8hCitlbmQKKworIyBEbyB0aGUgYmFyZSBtaW5pbXVtIHJlcXVpcmVk
IHRvIGV4ZWN1dGUgY29kZS4gU2V0cyB1cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2RlQmxvY2sqCisj
IGluIHQxLiBNYXkgYWxzbyB0cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KK21hY3JvIHByb2xv
Z3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JIZWxwZXIsIHRyYWNlSGVs
cGVyKQorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICAKKyAgICAj
IFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KKyAgICBz
dG9yZXAgdDIsIFJldHVyblBDW2Nmcl0KKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAg
ICBjYWxsSGVscGVyKHRyYWNlSGVscGVyKQorICAgIGVuZAorICAgIGNvZGVCbG9ja0dldHRlcih0
MSkKKyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBiYWRkaXMgNSwgQ29kZUJsb2NrOjptX2xs
aW50RXhlY3V0ZUNvdW50ZXJbdDFdLCAuY29udGludWUKKyAgICAgICAgY0NhbGwyKG9zckhlbHBl
ciwgY2ZyLCBQQykKKyAgICAgICAgbW92ZSB0MSwgY2ZyCisgICAgICAgIGJ0cHogdDAsIC5yZWNv
dmVyCisgICAgICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCisgICAgICAgIHJlc3RvcmVSZXR1
cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAgICAgICBqbXAgdDAKKyAgICAucmVjb3ZlcjoK
KyAgICAgICAgY29kZUJsb2NrR2V0dGVyKHQxKQorICAgIC5jb250aW51ZToKKyAgICBlbmQKKyAg
ICBjb2RlQmxvY2tTZXR0ZXIodDEpCisgICAgCisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxv
YWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9j
azo6SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0s
IFBDCitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3
aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KKyMgTXVzdCBjYWxsIGRpc3BhdGNoKDApIGFm
dGVyIGNhbGxpbmcgdGhpcy4KK21hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFy
Z1NraXApCisgICAgIyBQcm9maWxlIHRoZSBhcmd1bWVudHMuIFVuZm9ydHVuYXRlbHksIHdlIGhh
dmUgbm8gY2hvaWNlIGJ1dCB0byBkbyB0aGlzLiBUaGlzCisgICAgIyBjb2RlIGlzIHByZXR0eSBo
b3JyZW5kb3VzIGJlY2F1c2Ugb2YgdGhlIGRpZmZlcmVuY2UgaW4gb3JkZXJpbmcgYmV0d2Vlbgor
ICAgICMgYXJndW1lbnRzIGFuZCB2YWx1ZSBwcm9maWxlcywgdGhlIGRlc2lyZSB0byBoYXZlIGEg
c2ltcGxlIGxvb3AtZG93bi10by16ZXJvCisgICAgIyBsb29wLCBhbmQgdGhlIGRlc2lyZSB0byB1
c2Ugb25seSB0aHJlZSByZWdpc3RlcnMgc28gYXMgdG8gcHJlc2VydmUgdGhlIFBDIGFuZAorICAg
ICMgdGhlIGNvZGUgYmxvY2suIEl0IGlzIGxpa2VseSB0aGF0IHRoaXMgY29kZSBzaG91bGQgYmUg
cmV3cml0dGVuIGluIGEgbW9yZQorICAgICMgb3B0aW1hbCB3YXkgZm9yIGFyY2hpdGVjdHVyZXMg
dGhhdCBoYXZlIG1vcmUgdGhhbiBmaXZlIHJlZ2lzdGVycyBhdmFpbGFibGUKKyAgICAjIGZvciBh
cmJpdHJhcnkgdXNlIGluIHRoZSBpbnRlcnByZXRlci4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1f
bnVtUGFyYW1ldGVyc1t0MV0sIHQwCisgICAgYWRkaSAtcHJvZmlsZUFyZ1NraXAsIHQwICMgVXNl
IGFkZGkgYmVjYXVzZSB0aGF0J3Mgd2hhdCBoYXMgdGhlIHBlZXBob2xlCisgICAgYXNzZXJ0KG1h
Y3JvIChvaykgYmlndGVxIHQwLCAwLCBvayBlbmQpCisgICAgYnRpeiB0MCwgLmFyZ3VtZW50UHJv
ZmlsZURvbmUKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsg
VmVjdG9yQnVmZmVyT2Zmc2V0W3QxXSwgdDMKKyAgICBtdWxpIHNpemVvZiBWYWx1ZVByb2ZpbGUs
IHQwLCB0MiAjIEFhYWFhaGhoaCEgTmVlZCBzdHJlbmd0aCByZWR1Y3Rpb24hCisgICAgbmVnaSB0
MAorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQyLCB0MworLmFyZ3VtZW50UHJvZmlsZUxv
b3A6CisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0ICsgOCAtIHByb2Zp
bGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIKKyAgICBzdWJwIHNpemVvZiBWYWx1ZVByb2ZpbGUs
IHQzCisgICAgc3RvcmVpIHQyLCBwcm9maWxlQXJnU2tpcCAqIHNpemVvZiBWYWx1ZVByb2ZpbGUg
KyBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSBUaGlz
QXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtj
ZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIsIHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVl
UHJvZmlsZSArIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFt0M10KKyAg
ICBiYWRkaW56IDgsIHQwLCAuYXJndW1lbnRQcm9maWxlTG9vcAorLmFyZ3VtZW50UHJvZmlsZURv
bmU6CisgICAgCisgICAgIyBDaGVjayBzdGFjayBoZWlnaHQuCisgICAgbG9hZGkgQ29kZUJsb2Nr
OjptX251bUNhbGxlZVJlZ2lzdGVyc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2ds
b2JhbERhdGFbdDFdLCB0MgorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6aW50ZXJwcmV0ZXJbdDJd
LCB0MiAgICMgRklYTUU6IENhbiBnZXQgdG8gdGhlIFJlZ2lzdGVyRmlsZSBmcm9tIHRoZSBKSVRT
dGFja0ZyYW1lCisgICAgbHNoaWZ0aSAzLCB0MAorICAgIGFkZHAgdDAsIGNmciwgdDAKKyAgICBi
cGFlcSBJbnRlcnByZXRlcjo6bV9yZWdpc3RlckZpbGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3Qy
XSwgdDAsIC5zdGFja0hlaWdodE9LCisKKyAgICAjIFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQg
LSBuZWVkIHRvIGNhbGwgYSBoZWxwZXIuCisgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVnaXN0ZXJf
ZmlsZV9jaGVjaykKKy5zdGFja0hlaWdodE9LOgorZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVC
bG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCitt
YWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBoZWxwZXIpCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwgdDAKKyAgICBiaWFlcSB0MCwgQ29kZUJs
b2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKKyAgICBjQ2FsbDIoaGVscGVyLCBj
ZnIsIFBDKSAgICMgVGhpcyBoZWxwZXIgaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4g
bm8gZXJyb3IsIHQwICE9IDAgPT4gZXJyb3IKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBidGl6IHQw
LCAuY29udGludWUKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEK
KyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBq
bXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKy5jb250aW51ZToK
KyAgICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIFBDLCBzaW5jZSB0aGUgaGVscGVyIGNsb2JiZXJl
ZCBpdC4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9u
czo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworICAgIGptcCBk
b25lTGFiZWwKK2VuZAorCitfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShu
b3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9s
bGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQor
CisKK19sbGludF9ldmFsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJs
b2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwg
X2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVC
bG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVu
Y3Rpb25fZm9yX2NhbGwsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkK
Ky5mdW5jdGlvbkZvckNhbGxCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCisg
ICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJv
bG9ndWU6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIs
IGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3QsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQor
LmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigx
KQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0
eV9jaGVjazoKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1
bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxs
X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQorICAgIGZ1bmN0
aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9sbGludF9oZWxwZXJfY2FsbF9h
cml0eUNoZWNrKQorCisKK19sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNr
OgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5j
dGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCisg
ICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfbGxpbnRf
aGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQorCisjIEluc3RydWN0aW9uIGltcGxlbWVudGF0
aW9ucworCitfbGxpbnRfb3BfZW50ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1WYXJzW3QyXSwg
dDIKKyAgICBidGl6IHQyLCAub3BFbnRlckRvbmUKKyAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAK
KyAgICBtb3ZlIDAsIHQxCisub3BFbnRlckxvb3A6CisgICAgc3ViaSAxLCB0MgorICAgIHN0b3Jl
aSB0MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDIsIDhdCisgICAgYnRpbnogdDIsIC5vcEVudGVyTG9vcAorLm9wRW50ZXJEb25lOgor
ICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX2NyZWF0ZV9hY3RpdmF0aW9uOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQorLm9wQ3JlYXRlQWN0
aXZhdGlvbkRvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5pdF9sYXp5X3Jl
ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVp
IEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSAwLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY3Jl
YXRlX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVh
dGVBcmd1bWVudHNEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hcmd1
bWVudHMpCisub3BDcmVhdGVBcmd1bWVudHNEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFj
cm8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNpemVDbGFzc0luZGV4LCBjbGFzc0luZm9PZmZzZXQs
IHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNsb3dDYXNlKQorICAgIGNv
bnN0IG9mZnNldE9mTXlTaXplQ2xhc3MgPSBKU0dsb2JhbERhdGE6OmhlYXAgKyBIZWFwOjptX29i
amVjdFNwYWNlICsgQWxsb2NhdGlvblNwYWNlOjptX21hcmtlZFNwYWNlICsgTWFya2VkU3BhY2U6
Om1fcHJlY2lzZVNpemVDbGFzc2VzICsgc2l6ZUNsYXNzSW5kZXggKiBzaXplb2YgTWFya2VkU3Bh
Y2U6OlNpemVDbGFzcworICAgIAorICAgICMgRklYTUU6IHdlIGNhbiBnZXQgdGhlIGdsb2JhbCBk
YXRhIGluIG9uZSBsb2FkIGZyb20gdGhlIHN0YWNrLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCBzY3JhdGNoMQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwg
c2NyYXRjaDEKKyAgICAKKyAgICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4g
ICAgCisgICAgbG9hZHAgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xh
c3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKKyAgICBidHB6IHJlc3VsdCwgc2xv
d0Nhc2UKKyAgICAKKyAgICAjIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4K
KyAgICBsb2FkcCBbcmVzdWx0XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIG9mZnNl
dE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3Nj
cmF0Y2gxXQorCisgICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgbG9hZHAgY2xhc3NJ
bmZvT2Zmc2V0W3NjcmF0Y2gxXSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1
bHRdCisgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCisg
ICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0KKyAgICBhZGRwIHNp
emVvZiBKU09iamVjdCwgcmVzdWx0LCBzY3JhdGNoMQorICAgIHN0b3JlcCBzY3JhdGNoMSwgSlNP
YmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KK2VuZAorCitfbGxpbnRfb3BfY3JlYXRl
X3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGFz
c2VydE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2Vs
bFRhZywgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwg
Lm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFt0MF0s
IHQyCisgICAgYnRweiB0MiwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNP
YmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxP
YmplY3RDbGFzc0luZm8sIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBs
b2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhd
CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2go
MykKKworLm9wQ3JlYXRlVGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Ny
ZWF0ZV90aGlzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9jYWxsZWU6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxv
YWRPZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQw
CisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBP
YmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252
ZXJ0VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykK
KyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9l
bXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpT
RmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xh
c3NJbmZvLCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9w
TmV3T2JqZWN0U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkK
KyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheV9idWZmZXIpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdleHApCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQxLCB0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0K
KyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9ub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhb
UENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDAsIHQyLCB0MykKKyAgICBiaW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90U2xvdworICAgIHhv
cmkgMSwgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3Jl
aSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5v
dFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJb
UENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQor
ICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFT
bG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0
MgorICAgIGNpZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAg
ICBkaXNwYXRjaCg0KQorCisub3BFcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2VxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2VxX251bGw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAg
IGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
dDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQx
LCBDZWxsVGFnLCAub3BFcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QwXSwgdDEKKyAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjpt
X2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wRXFOdWxs
Tm90SW1tZWRpYXRlCisub3BFcU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0MSwgTnVsbFRhZywg
dDIKKyAgICBjaWVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQyLCB0MQorLm9wRXFO
dWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNw
YXRjaCgzKQorCisKK19sbGludF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQy
LCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFn
LCAub3BOZXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2Fk
aSA0W1BDXSwgdDIKKyAgICBjaW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcs
IFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX25lcSkKKyAgICBkaXNwYXRjaCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVx
X251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEK
KyAgICBqbXAgLm9wTmVxTnVsbE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAg
ICBjaW5lcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQor
ICAgIGFuZGkgdDIsIHQxCisub3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29s
ZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFs
aXR5T3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhb
UENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLnNs
b3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywg
Lm5vdFN0cmluZworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90
eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisg
ICAgYmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3Ry
aW5nVHlwZSwgLnNsb3cKKy5ub3RTdHJpbmc6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1
YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zm
c2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAg
ZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQs
IHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVscGVyX3N0cmljdGVxKQorCisKK19sbGludF9v
cF9uc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChs
ZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50
X2hlbHBlcl9uc3RyaWN0ZXEpCisKKworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX2xlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2xlc3NlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfZ3JlYXRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVh
dGVyZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKwor
Lm9wUHJlSW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0s
IEludDMyVGFnLCAub3BQcmVEZWNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XSwgdDEKKyAgICBic3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNo
KDIpCisKKworX2xsaW50X29wX3Bvc3RfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAu
b3BQb3N0SW5jRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisg
ICAgbW92ZSB0MiwgdDMKKyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3Rv
cmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0KKy5vcFBvc3RJbmNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9wb3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9w
UG9zdERlY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAg
IG1vdmUgdDIsIHQzCisgICAgYnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0b3Jl
aSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdCisub3BQb3N0RGVjRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfdG9fanNudW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDAsIHQyLCB0MykKKyAgICBiaWVxIHQyLCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklz
SW50CisgICAgYmlhZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcFRvSnNudW1iZXJTbG93Cisub3BU
b0pzbnVtYmVySXNJbnQ6CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAg
ICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQor
Cisub3BUb0pzbnVtYmVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fanNu
dW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MSwgdDIpCisgICAgYmluZXEgdDEsIEludDMy
VGFnLCAub3BOZWdhdGVTcmNOb3RJbnQKKyAgICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdh
dGVTbG93CisgICAgbmVnaSB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwg
dDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlz
cGF0Y2goMykKKy5vcE5lZ2F0ZVNyY05vdEludDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9w
TmVnYXRlU2xvdworICAgIHhvcmkgMHg4MDAwMDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09m
ZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4
XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5lZ2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX25lZ2F0ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3Vz
dG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBl
cikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AxTm90SW50CisgICAg
YmluZXEgdDMsIEludDMyVGFnLCAub3AyTm90SW50CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAg
aW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHQzLCB0MSwgdDAsIC5zbG93LCB0MikKKyAgICBkaXNw
YXRjaCg1KQorCisub3AxTm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5
IG5vdCBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBi
aWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdElu
dE9wMkRvdWJsZQorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQxLCBm
dDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZp
aTJkIHQxLCB0MywgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgbG9hZGkgNFtQQ10sIHQxCisg
ICAgZmlpMmQgdDAsIHQyLCBmdDAKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAg
c3RvcmVkIGZ0MCwgW2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wMk5vdEludDoK
KyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3Bl
cmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBiaWEgdDMs
IExvd2VzdFRhZywgLnNsb3cKKyAgICBjaTJkIHQwLCBmdDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0
MQorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0
MiwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikK
KyAgICBkaXNwYXRjaCg1KQorZW5kCisKK21hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24s
IGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAg
ICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAg
ICAgaW50ZWdlck9wZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHN0b3Jl
aSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkg
cmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAg
ICBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfYWRkOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2Fk
ZCkKKworCitfbGxpbnRfb3BfbXVsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlP
cEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93
LCBpbmRleCkKKyAgICAgICAgICAgIGNvbnN0IHNjcmF0Y2ggPSBpbnQzMlRhZyAgICMgV2Uga25v
dyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEg
Y29uc3RhbnQuCisgICAgICAgICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoCisgICAgICAgICAgICBi
bXVsaW8gbGVmdCwgc2NyYXRjaCwgc2xvdworICAgICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRv
bmUKKyAgICAgICAgICAgIGJpbHQgbGVmdCwgMCwgLnNsb3cKKyAgICAgICAgICAgIGJpbHQgcmln
aHQsIDAsIC5zbG93CisgICAgICAgIC5kb25lOgorICAgICAgICAgICAgc3RvcmVpIEludDMyVGFn
LCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0KSBtdWxkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl9tdWwpCisKKworX2xsaW50X29wX3N1YjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmlu
YXJ5T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1YmlvIGxlZnQsIHJp
Z2h0LCBzbG93IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxlZnQsIHJp
Z2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9zdWIpCisKKworX2xsaW50X29wX2RpdjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAg
bWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBj
aTJkIGxlZnQsIGZ0MAorICAgICAgICAgICAgY2kyZCByaWdodCwgZnQxCisgICAgICAgICAgICBk
aXZkIGZ0MCwgZnQxCisgICAgICAgICAgICBiY2QyaSBmdDEsIHJpZ2h0LCAubm90SW50CisgICAg
ICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAg
ICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAg
ICAgICBqbXAgLmRvbmUKKyAgICAgICAgLm5vdEludDoKKyAgICAgICAgICAgIHN0b3JlZCBmdDEs
IFtjZnIsIGluZGV4LCA4XQorICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kLAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQpIGRpdmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRf
aGVscGVyX2RpdikKKworCitfbGxpbnRfb3BfbW9kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbW9kKQorICAgIGRpc3BhdGNoKDQpCisKKworbWFj
cm8gYml0T3Aob3BlcmF0aW9uLCBoZWxwZXIsIGFkdmFuY2UpCisgICAgbG9hZGkgMTJbUENdLCB0
MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQz
LCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJp
bmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93Cisg
ICAgbG9hZGkgNFtQQ10sIHQyCisgICAgb3BlcmF0aW9uKHQxLCB0MCwgLnNsb3cpCisgICAgc3Rv
cmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaChhZHZhbmNlKQorCisuc2xvdzoKKyAgICBjYWxs
SGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaChhZHZhbmNlKQorZW5kCisKK19sbGludF9vcF9s
c2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHNsb3cpIGxzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX2xzaGlmdCwKKyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfcnNoaWZ0OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCBzbG93KSByc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9y
c2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX3Vyc2hpZnQ6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpCisg
ICAgICAgICAgICB1cnNoaWZ0aSBsZWZ0LCByaWdodAorICAgICAgICAgICAgYmlsdCByaWdodCwg
MCwgc2xvdworICAgICAgICBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfdXJzaGlmdCwKKyAg
ICAgICAgNCkKKworCitfbGxpbnRfb3BfYml0YW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBhbmRpIGxlZnQsIHJp
Z2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXRhbmQsCisgICAgICAgIDUpCisKKwor
X2xsaW50X29wX2JpdHhvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgeG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfYml0eG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRv
cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgc2xvdykgb3JpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl9iaXRvciwKKyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0bm90OgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEludDMyVGFn
LCAub3BCaXRub3RTbG93CisgICAgbm90aSB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
ZGlzcGF0Y2goMykKKworLm9wQml0bm90U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfYml0bm90KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2NoZWNrX2hhc19pbnN0
YW5jZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIENlbGxUYWcsIHQwLCAub3BDaGVja0hhc0lu
c3RhbmNlU2xvdykKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBi
dGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVt
ZW50c0hhc0luc3RhbmNlLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdworICAgIGRpc3BhdGNoKDIp
CisKKy5vcENoZWNrSGFzSW5zdGFuY2VTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9jaGVja19oYXNfaW5zdGFuY2UpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5z
dGFuY2VvZjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBDaGVjayB0aGF0IGJhc2VWYWwg
aW1wbGVtZW50cyB0aGUgZGVmYXVsdCBIYXNJbnN0YW5jZSBiZWhhdmlvci4KKyAgICAjIEZJWE1F
OiBUaGlzIHNob3VsZCBiZSBkZXByZWNhdGVkLgorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZCh0MSwgdDApCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2Us
IC5vcEluc3RhbmNlb2ZTbG93CisgICAgCisgICAgIyBBY3R1YWxseSBkbyB0aGUgd29yay4KKyAg
ICBsb2FkaSAxNltQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BJbnN0YW5jZW9mU2xvdykKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcEluc3RhbmNl
b2ZTbG93CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDAsIENlbGxUYWcsIHQyLCAub3BJbnN0YW5jZW9mU2xvdykKKyAgICAKKyAgICAjIFJl
Z2lzdGVyIHN0YXRlOiB0MSA9IHByb3RvdHlwZSwgdDIgPSB2YWx1ZQorICAgIG1vdmUgMSwgdDAK
Ky5vcEluc3RhbmNlb2ZMb29wOgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0
MgorICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QyXSwg
dDIKKyAgICBicGVxIHQyLCB0MSwgLm9wSW5zdGFuY2VvZkRvbmUKKyAgICBidGlueiB0MiwgLm9w
SW5zdGFuY2VvZkxvb3AKKworICAgIG1vdmUgMCwgdDAKKy5vcEluc3RhbmNlb2ZEb25lOgorICAg
IHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3BJbnN0YW5j
ZW9mU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW5zdGFuY2VvZikKKyAgICBk
aXNwYXRjaCg1KQorCisKK19sbGludF9vcF90eXBlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90eXBlb2YpCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfaXNfdW5kZWZpbmVkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfaXNfdW5kZWZpbmVkKQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX2lzX2Jvb2xlYW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9pc19ib29sZWFuKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX2lzX251bWJlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2lzX251bWJlcikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19z
dHJpbmc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9pc19zdHJpbmcpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfb2JqZWN0Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfb2Jq
ZWN0KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX2Z1bmN0aW9uOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfZnVuY3Rpb24p
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaW46CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbikKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9yZXNvbHZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcmVzb2x2ZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9y
ZXNvbHZlX3NraXA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9yZXNvbHZlX3NraXApCisgICAgZGlzcGF0Y2goNSkKKworCittYWNybyByZXNvbHZl
R2xvYmFsKHNpemUsIHNsb3cpCisgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAj
IDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgorICAgICMgOFtQQ10gICBQcm9wZXJ0
eSBpZGVudGlmaWVyIGluZGV4IGluIHRoZSBjb2RlIGJsb2NrLgorICAgICMgMTJbUENdICBTdHJ1
Y3R1cmUgcG9pbnRlciwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisg
ICAgIyAxNltQQ10gIE9mZnNldCBpbiBnbG9iYWwgb2JqZWN0LCBpbml0aWFsaXplZCB0byAwIGJ5
IGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBicG5lcSB0MSwgMTJbUENdLCBzbG93CisgICAgbG9h
ZGkgMTZbUENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0s
IHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFt0MCwgdDEsIDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0
MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgbG9hZGkgKHNpemUgLSAxKSAqIDRbUENdLCB0MAorICAgIHZhbHVlUHJv
ZmlsZSh0MiwgdDMsIHQwKQorZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgcmVzb2x2ZUdsb2JhbCg2LCAub3BSZXNvbHZlR2xvYmFsU2xv
dykKKyAgICBkaXNwYXRjaCg2KQorCisub3BSZXNvbHZlR2xvYmFsU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCisgICAgZGlzcGF0Y2goNikKKworCisj
IEdpdmVzIHlvdSB0aGUgc2NvcGUgaW4gdDAsIHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25h
bGx5IHBlcmZvcm0gYWRkaXRpb25hbCBjaGVja3Mgb24gdGhlCisjIHNjb3BlcyBhcyB0aGV5IGFy
ZSB0cmF2ZXJzZWQuIHNjb3BlQ2hlY2soKSBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0
aGUgcmVnaXN0ZXIKKyMgaG9sZGluZyB0aGUgc2NvcGUsIGFuZCBhIHJlZ2lzdGVyIHRoYXQgY2Fu
IGJlIHVzZWQgZm9yIHNjcmF0Y2guIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90CisjIHVzZSB0Mywg
c28geW91IGNhbiBob2xkIHN0dWZmIGluIHQzIGlmIG5lZWQgYmUuCittYWNybyBnZXRTY29wZShk
ZUJydWlqaW5JbmRleE9wZXJhbmQsIHNjb3BlQ2hlY2spCisgICAgbG9hZHAgU2NvcGVDaGFpbiAr
IFBheWxvYWRPZmZzZXRbY2ZyXSwgdDAKKyAgICBsb2FkaSBkZUJydWlqaW5JbmRleE9wZXJhbmQs
IHQyCisgICAgCisgICAgYnRpeiB0MiwgLmRvbmUKKyAgICAKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDEKKyAgICBiaW5lcSBDb2RlQmxvY2s6Om1fY29kZVR5cGVbdDFdLCBGdW5jdGlvbkNv
ZGUsIC5sb29wCisgICAgYnRieiBDb2RlQmxvY2s6Om1fbmVlZHNGdWxsU2NvcGVDaGFpblt0MV0s
IC5sb29wCisgICAgCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX2FjdGl2YXRpb25SZWdpc3Rlclt0
MV0sIHQxCisKKyAgICAjIE5lZWQgdG8gY29uZGl0aW9uYWxseSBza2lwIG92ZXIgb25lIHNjb3Bl
LgorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAubm9BY3Rp
dmF0aW9uCisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6
Om5leHRbdDBdLCB0MAorLm5vQWN0aXZhdGlvbjoKKyAgICBzdWJpIDEsIHQyCisgICAgCisgICAg
YnRpeiB0MiwgLmRvbmUKKy5sb29wOgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRw
IFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKyAgICBzdWJpIDEsIHQyCisgICAgYnRpbnog
dDIsIC5sb29wCisKKy5kb25lOgorZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbF9keW5h
bWljOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9i
YWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmFjdGl2YXRpb25TdHJ1Y3R1
cmVbdDNdLCB0MworICAgIGdldFNjb3BlKAorICAgICAgICAyMFtQQ10sCisgICAgICAgIG1hY3Jv
IChzY29wZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmpl
Y3Rbc2NvcGVdLCBzY3JhdGNoCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJl
W3NjcmF0Y2hdLCB0MywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3cKKyAgICAgICAg
ZW5kKQorICAgIHJlc29sdmVHbG9iYWwoNywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93KQor
ICAgIGRpc3BhdGNoKDcpCisKKy5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5h
bWljKQorICAgIGRpc3BhdGNoKDcpCisKKy5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKKyAgICBk
aXNwYXRjaCg3KQorCisKK19sbGludF9vcF9nZXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVz
dGluYXRpb24gZm9yIHRoZSBsb2FkLgorICAgICMgOFtQQ10gICBJbmRleCBvZiByZWdpc3RlciBp
biB0aGUgc2NvcGUuCisgICAgIyAxMltQQ10gIERlIEJydWlqaW4gaW5kZXguCisgICAgZ2V0U2Nv
cGUoMTJbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSA0W1BDXSwg
dDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0
W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQw
CisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFt0MCwgdDIsIDhdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhd
CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgMTZb
UENdLCB0MQorICAgIHZhbHVlUHJvZmlsZSh0MywgdDAsIHQxKQorICAgIGRpc3BhdGNoKDUpCisK
KworX2xsaW50X29wX3B1dF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBn
ZXRTY29wZSg4W1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgMTJb
UENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQzLCB0MikKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDMsIHQyKQorICAgIGxvYWRwIFNjb3BlQ2hh
aW5Ob2RlOjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVn
aXN0ZXJzW3QwXSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9nZXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAg
bG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0s
IHQxCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgdmFs
dWVQcm9maWxlKHQyLCB0MSwgdDMpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0
X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQor
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9i
YWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0
MF0sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGxvYWRp
IDRbUENdLCB0MQorICAgIHdyaXRlQmFycmllcih0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdP
ZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhd
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9iYXNlOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9iYXNlKQor
ICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9lbnN1cmVf
cHJvcGVydHlfZXhpc3RzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVf
d2l0aF9iYXNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3Bf
cmVzb2x2ZV93aXRoX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKKyAgICBkaXNwYXRjaCg1KQorCisKK19s
bGludF9vcF9nZXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgV2Ugb25seSBk
byBtb25vbW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1v
ZGlmeSB0aGUKKyAgICAjIG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUgY2Fj
aGUgdG8gY2hhbmdlIGFueXRpbWUgaWYgZmFpbHMsIHNpbmNlCisgICAgIyBwaW5nLXBvbmdpbmcg
aXMgZnJlZS4gQXQgYmVzdCB3ZSBnZXQgbHVja3kgYW5kIHRoZSBnZXRfYnlfaWQgd2lsbCBjb250
aW51ZQorICAgICMgdG8gdGFrZSBmYXN0IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qg
d2UgdGFrZSBzbG93IHBhdGgsIHdoaWNoIGlzIHdoYXQKKyAgICAjIHdlIHdvdWxkIGhhdmUgYmVl
biBkb2luZyBhbnl3YXkuCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0
MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9w
R2V0QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRwIEpTT2JqZWN0Ojpt
X3Byb3BlcnR5U3RvcmFnZVt0M10sIHQwCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0
M10sIHQxLCAub3BHZXRCeUlkU2xvdworICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIFRh
Z09mZnNldFt0MCwgdDJdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyXSwgdDIK
KyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5
bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDMyW1BDXSwgdDEKKyAgICB2YWx1ZVBy
b2ZpbGUodDMsIHQyLCB0MSkKKyAgICBkaXNwYXRjaCg5KQorCisub3BHZXRCeUlkU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X2lkKQorICAgIGRpc3BhdGNoKDkpCisK
KworX2xsaW50X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50c0xlbmd0aFNs
b3cKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MgorICAg
IHN1YmkgMSwgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQor
ICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQp
CisKKy5vcEdldEFyZ3VtZW50c0xlbmd0aFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X3B1dF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisg
ICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQz
LCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAg
IGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYnBuZXEgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGxvYWRpIDIwW1BD
XSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDAsIHQyKQorICAgIHdy
aXRlQmFycmllcih0MCwgdDIpCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbdDMsIHQxXQorICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MywgdDFdCisgICAgZGlzcGF0Y2goOSkKKworLm9w
UHV0QnlJZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pZCkKKyAg
ICBkaXNwYXRjaCg5KQorCisKK21hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVj
a3MpCisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRp
IDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRh
ZywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBicG5lcSBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgYWRkaXRpb25h
bENoZWNrcyh0MSwgdDMsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAg
ICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGFkZHAgdDEs
IHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQxLCB0MikKKyAgICB3cml0
ZUJhcnJpZXIodDEsIHQyKQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRp
IDI0W1BDXSwgdDEKKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVw
IHQxLCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAgIGRpc3BhdGNoKDkpCitlbmQKKworX2xs
aW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBwdXRCeUlkVHJhbnNpdGlv
bihtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KSBlbmQpCisKKworX2xsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICBwdXRCeUlkVHJhbnNpdGlvbigKKyAg
ICAgICAgbWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykKKyAgICAgICAgICAgIGNv
bnN0IHByb3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJl
IHJlZ2lzdGVyIGZvciB0aGUgcHJvdG8KKyAgICAgICAgCisgICAgICAgICAgICBsb2FkcCAyOFtQ
Q10sIHNjcmF0Y2gKKyAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gs
IG9rIGVuZCkKKyAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvcltzY3Jh
dGNoXSwgc2NyYXRjaAorICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRj
aCwgb2sgZW5kKQorICAgICAgICAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFn
T2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25lCisgICAgICAgIC5sb29wOgorICAg
ICAgICAgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xk
U3RydWN0dXJlXSwgcHJvdG9DZWxsCisgICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3Byb3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQorICAgICAgICAgICAgYnBuZXEgb2xkU3RydWN0
dXJlLCBbc2NyYXRjaF0sIHNsb3cKKyAgICAgICAgICAgIGFkZHAgNCwgc2NyYXRjaAorICAgICAg
ICAgICAgYmluZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1
cmVdLCBOdWxsVGFnLCAubG9vcAorICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kKQorCisKK19s
bGludF9vcF9kZWxfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9kZWxfYnlfaWQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
Z2V0X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxv
YWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBsb2Fk
cCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDFdLCB0MgorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAg
ICBicG5lcSBbdDBdLCB0MiwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9z
dG9yYWdlW3QwXSwgdDMKKyAgICBiaWFlcSB0MSwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDBd
LCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBBcnJheVN0
b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgQXJy
YXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKyAgICBi
aWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRCeVZhbFNsb3cKKyAgICBzdG9yZWkgdDIsIFRh
Z09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XQorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MCkK
KyAgICBkaXNwYXRjaCg1KQorCisub3BHZXRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2dldF9ieV92YWwpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZ2V0
X2FyZ3VtZW50X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10s
IHQwCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgSW50MzJUYWcsIHQyLCAub3BHZXRBcmd1bWVudEJ5VmFs
U2xvdykKKyAgICBhZGRpIDEsIHQyCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRP
ZmZzZXRbY2ZyXSwgdDEKKyAgICBiaWFlcSB0MiwgdDEsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93
CisgICAgbmVnaSB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIFRoaXNBcmd1bWVu
dE9mZnNldCArIFRhZ09mZnNldFtjZnIsIHQyLCA4XSwgdDAKKyAgICBsb2FkaSBUaGlzQXJndW1l
bnRPZmZzZXQgKyBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MQorICAgIHN0b3JlaSB0MCwg
VGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDMsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QXJndW1lbnRCeVZhbFNsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSAxMltQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDAsIENlbGxUYWcsIHQxLCAub3BHZXRCeVBuYW1lU2xvdykKKyAgICBsb2FkaSAxNltQQ10sIHQw
CisgICAgYnBuZXEgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIC5vcEdldEJ5UG5hbWVT
bG93CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQodDAsIENlbGxUYWcsIHQyLCAub3BHZXRCeVBuYW1lU2xvdykKKyAgICBsb2FkaSAyMFtQQ10s
IHQwCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDMKKyAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDAKKyAgICBicG5lcSB0MCwgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxv
YWRpIDI0W1BDXSwgdDAKKyAgICBsb2FkaSBbY2ZyLCB0MCwgOF0sIHQwCisgICAgc3ViaSAxLCB0
MAorICAgIGJpYWVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNs
b3RzW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0
eVN0b3JhZ2VbdDJdLCB0MgorICAgIGxvYWRpIFRhZ09mZnNldFt0MiwgdDAsIDhdLCB0MQorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbdDIsIHQwLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDcpCisKKy5vcEdldEJ5UG5hbWVT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfcG5hbWUpCisgICAgZGlz
cGF0Y2goNykKKworCitfbGxpbnRfb3BfcHV0X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIEludDMyVGFnLCB0MiwgLm9wUHV0
QnlWYWxTbG93KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVC
bG9jazo6bV9nbG9iYWxEYXRhW3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmpzQXJy
YXlDbGFzc0luZm9bdDBdLCB0MAorICAgIGJwbmVxIFt0MV0sIHQwLCAub3BQdXRCeVZhbFNsb3cK
KyAgICBiaWFlcSB0MiwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDFdLCAub3BQdXRCeVZhbFNs
b3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDFdLCB0MAorICAgIGJpZXEgQXJyYXlT
dG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdLCBFbXB0eVZhbHVlVGFnLCAu
b3BQdXRCeVZhbEVtcHR5Cisub3BQdXRCeVZhbFN0b3JlUmVzdWx0OgorICAgIGxvYWRpIDEyW1BD
XSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MywgdDEsIHQzKQorICAgIHdy
aXRlQmFycmllcih0MSwgdDMpCisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9y
ICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBzdG9yZWkgdDMsIEFycmF5U3RvcmFnZTo6bV92
ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BQ
dXRCeVZhbEVtcHR5OgorICAgIGFkZGkgMSwgQXJyYXlTdG9yYWdlOjptX251bVZhbHVlc0luVmVj
dG9yW3QwXQorICAgIGJpYiB0MiwgQXJyYXlTdG9yYWdlOjptX2xlbmd0aFt0MF0sIC5vcFB1dEJ5
VmFsU3RvcmVSZXN1bHQKKyAgICBhZGRpIDEsIHQyLCB0MQorICAgIHN0b3JlaSB0MSwgQXJyYXlT
dG9yYWdlOjptX2xlbmd0aFt0MF0KKyAgICBqbXAgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorCisu
b3BQdXRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV92YWwp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZGVsX2J5X3ZhbDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV92YWwpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2luZGV4OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X2luZGV4KQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9nZXR0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfZ2V0dGVyKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX3B1dF9zZXR0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfc2V0dGVyKQorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX2xvb3A6CisgICAgbm9wCitfbGxpbnRfb3Bfam1wOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBkaXNwYXRjaEJyYW5jaCg0W1BDXSkKKworCitfbGxpbnRfb3Bfam1wX3Nj
b3BlczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2ptcF9zY29wZXMpCisgICAgZGlzcGF0Y2goMCkKKworCittYWNybyBqdW1wVHJ1ZU9yRmFsc2Uo
Y29uZGl0aW9uT3AsIHNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQodDEsIEJvb2xlYW5UYWcsIHQwLCAuc2xvdykKKyAgICBjb25kaXRp
b25PcCh0MCwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3Bh
dGNoQnJhbmNoKDhbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKHNsb3cpCisgICAgZGlz
cGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl90cnVlOgorICAgIG5vcAorX2xsaW50
X29wX2p0cnVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisg
ICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl9qdHJ1ZSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToK
KyAgICBub3AKK19sbGludF9vcF9qZmFsc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1
bXBUcnVlT3JGYWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUs
IHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamZhbHNlKQorCisKK21hY3JvIGVx
dWFsTnVsbChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0
ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxIYW5kbGVy
KFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkK
KyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQor
CisuaW1tZWRpYXRlOgorICAgIG9yaSAxLCB0MQorICAgIGltbWVkaWF0ZUhhbmRsZXIodDEsIC50
YXJnZXQpCisgICAgZGlzcGF0Y2goMykKK2VuZAorCitfbGxpbnRfb3BfamVxX251bGw6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0
YXJnZXQpIGJ0Ym56IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAor
ICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmllcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0
IGVuZCkKKyAgICAKKworX2xsaW50X29wX2puZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRieiB2YWx1
ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZh
bHVlLCB0YXJnZXQpIGJpbmVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorCisKK19sbGlu
dF9vcF9qbmVxX3B0cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBD
ZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNoCisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCisub3BKbmVxUHRyQnJhbmNoOgorICAgIGRp
c3BhdGNoQnJhbmNoKDEyW1BDXSkKKy5vcEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRj
aCg0KQorCisKK21hY3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUsIGhl
bHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDMsIHQyLCB0MykKKyAgICBiaW5lcSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAg
ICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFyZSh0MSwg
dDMsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgYmlh
IHQwLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRP
cDJEb3VibGUKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MywgZnQx
CisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWky
ZCB0MywgdDIsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGZpaTJkIHQxLCB0MCwgZnQwCisg
ICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkK
KworLm9wMk5vdEludDoKKyAgICBjaTJkIHQxLCBmdDAKKyAgICBiaWEgdDIsIExvd2VzdFRhZywg
LnNsb3cKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEs
IC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5qdW1wVGFyZ2V0OgorICAgIGRpc3Bh
dGNoQnJhbmNoKDEyW1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAg
ZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzOgorICAgIG5vcAorX2xs
aW50X29wX2psZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVu
ZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHQgbGVmdCwgcmlnaHQs
IHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3MpCisKKworX2xsaW50X29w
X2pubGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzcykKKworCitfbGxpbnRf
b3BfbG9vcF9pZl9ncmVhdGVyOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfamdyZWF0ZXIpCisKKworX2xsaW50X29wX2puZ3JlYXRlcjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAor
ICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcikKKworCitfbGxpbnRfb3BfbG9vcF9pZl9s
ZXNzZXE6CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRl
cSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0
YXJnZXQpIGJkbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hl
bHBlcl9qbGVzc2VxKQorCisKK19sbGludF9vcF9qbmxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJp
Z3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
dGFyZ2V0KSBiZGd0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfam5sZXNzZXEpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcmVxOgorICAgIG5v
cAorX2xsaW50X29wX2pncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBh
cmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0
ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0
ZXJlcSkKKworCitfbGxpbnRfb3Bfam5ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxl
ZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmRsdHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVy
X2puZ3JlYXRlcmVxKQorCisKK19sbGludF9vcF9sb29wX2hpbnQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBkaXNwYXRjaCgxKQorCisK
K19sbGludF9vcF9zd2l0Y2hfaW1tOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAx
MltQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MiwgdDEsIHQwKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRh
YmxlLCB0MyAgICMgRklYTUU6IHdvdWxkIGJlIG5pY2UgdG8gcGVlcGhvbGUgdGhpcyEKKyAgICBs
b2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBW
ZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEgdDEs
IEludDMyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6
bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRz
ICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgbG9h
ZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3Qy
XSwgdDMKKyAgICBsb2FkaSBbdDMsIHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJ
bW1GYWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dp
dGNoSW1tTm90SW50OgorICAgIGJpYiB0MSwgTG93ZXN0VGFnLCAub3BTd2l0Y2hJbW1TbG93ICAj
IEdvIHRvIHNsb3cgcGF0aCBpZiBpdCdzIGEgZG91YmxlLgorLm9wU3dpdGNoSW1tRmFsbFRocm91
Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5vcFN3aXRjaEltbVNsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9pbW0pCisgICAgZGlzcGF0Y2goMCkKKwor
CitfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDEyW1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQyLCB0MSwgdDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1w
VGFibGUsIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJTd2l0
Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0
MgorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1f
dHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hh
ckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0MAorICAgIGJp
bmVxIFN0cmluZ0ltcGw6Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdo
CisgICAgbG9hZHAgU3RyaW5nSW1wbDo6bV9kYXRhOFt0MF0sIHQxCisgICAgYnRpbnogU3RyaW5n
SW1wbDo6bV9oYXNoQW5kRmxhZ3NbdDBdLCBIYXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0Y2hD
aGFyOEJpdAorICAgIGxvYWRoIFt0MV0sIHQwCisgICAgam1wIC5vcFN3aXRjaENoYXJSZWFkeQor
Lm9wU3dpdGNoQ2hhcjhCaXQ6CisgICAgbG9hZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENoYXJSZWFk
eToKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwg
U2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5v
cFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNo
T2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgbG9hZGkgW3QyLCB0MCwg
NF0sIHQxCisgICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRj
aEJyYW5jaFdpdGhPZmZzZXQodDEpCisKKy5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAgICBk
aXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9zdHJp
bmcpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGJ0aXogMTJbUENdLCAub3BOZXdGdW5jVW5jaGVja2VkCisgICAgbG9h
ZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVl
VGFnLCAub3BOZXdGdW5jRG9uZQorLm9wTmV3RnVuY1VuY2hlY2tlZDoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfbmV3X2Z1bmMpCisub3BOZXdGdW5jRG9uZToKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9uZXdfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuY19leHApCisgICAgZGlzcGF0Y2goMykK
KworCittYWNybyBkb0NhbGwoaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRp
IDE2W1BDXSwgdDEKKyAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcENh
bGxTbG93KQorICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBsb2FkaSAxMltQQ10s
IHQzCisgICAgYWRkcCAyNCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgYWRkcCBjZnIsIHQz
ICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9hZHAgSlNGdW5jdGlv
bjo6bV9zY29wZUNoYWluW3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRP
ZmZzZXRbdDNdCisgICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0M10K
KyAgICBsb2FkaSA4IC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCAr
IFRhZ09mZnNldFtjZnJdCisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNdCisgICAgc3Rv
cmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgQ2Vs
bFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBTY29wZUNo
YWluICsgVGFnT2Zmc2V0W3QzXQorICAgIG1vdmUgdDMsIGNmcgorICAgIGNhbGwgTExJbnRDYWxs
TGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkK
KworLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhlbHBlcikKK2VuZAorCitf
bGxpbnRfb3BfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9o
ZWxwZXJfY2FsbCkKKworCitfbGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3QpCisKKworX2xsaW50X29wX2Nh
bGxfdmFyYXJnczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1BhdGhGb3JDYWxsKDYs
IF9sbGludF9oZWxwZXJfY2FsbF92YXJhcmdzKQorCisKK19sbGludF9vcF9jYWxsX2V2YWw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIAorICAgICMgRXZhbCBpcyBleGVjdXRlZCBpbiBvbmUg
b2YgdHdvIG1vZGVzOgorICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSByZWFsbHkg
aW52b2tpbmcgZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBleGVjdXRpb24gaXMg
cGVyZm9tZWQgZW50aXJlbHkgaW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBpdAorICAgICMgICAgcmV0
dXJucyB0aGUgUEMgb2YgYSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0aGUgcmV0dXJuIHZh
bHVlCisgICAgIyAgICB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgICMKKyAgICAjIDIpIFdl
IGZpbmQgdGhhdCB3ZSdyZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwoKSB0aGF0IGlz
IG5vdAorICAgICMgICAgdGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVscGVyIHJldHVybnMgdGhl
IFBDIG9mIHRoZSB0aGluZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQuCisgICAg
IworICAgICMgVGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywgd2hpY2ggd291bGQg
cmVxdWlyZSBhIHRvdGFsIG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0ZSB0aGF0
IGNhbm5vdCBiZSBlYXNpbHkgcGFja2VkIGludG8gdHdvCisgICAgIyByZWdpc3RlcnMgKEMgZnVu
Y3Rpb25zIGNhbiByZXR1cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5KToKKyAgICAjCisg
ICAgIyAtIFRoZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBtYXkgbm90IGhhdmUg
YmVlbiBtb2RpZmllZAorICAgICMgICBieSB0aGUgaGVscGVyLCBidXQgdGhlIGNvbnZlbnRpb24g
aXMgdGhhdCBpdCByZXR1cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0b3RhbGx5IGNsZWFyIGlm
IHRoYXQncyBuZWNlc3NhcnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUuCisgICAgIyAg
IEJ1dCB0aGF0J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRlciBzbyB3ZSBzdGlj
ayB3aXRoIGl0LgorICAgICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBoZWxwZXIgc3Vj
Y2Vzc2Z1bGx5IGV4ZWN1dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAjICAgdGhlIHJldHVybiB2
YWx1ZSwgb3IgZGlkIG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3IgdXMKKyAg
ICAjICAgdG8gY2FsbC4KKyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAgICAjICAgLSBUaGUgSlMg
cmV0dXJuIHZhbHVlICh0d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisgICAgIyAgIC0gVGhlIFBD
IHRvIGNhbGwuCisgICAgIworICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2llciB0byBqdXN0
IGFsd2F5cyBoYXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBhIFBDIHRvIGNhbGws
IGFuZCB0aGF0IFBDIG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAorICAgICMgcmV0dXJu
cyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAKKyAgICBzbG93UGF0
aEZvckNhbGwoNCwgX2xsaW50X2hlbHBlcl9jYWxsX2V2YWwpCisKKworX2xsaW50X2dlbmVyaWNf
cmV0dXJuX3BvaW50OgorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitfbGxpbnRfb3BfdGVh
cl9vZmZfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQKKyAgICBiaWVxIFRh
Z09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25O
b3RDcmVhdGVkCisub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCisub3BUZWFyT2ZmQWN0aXZhdGlvbk5v
dENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYXJndW1l
bnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdWJp
IDEsIHQwICAgIyBHZXQgdGhlIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcgorICAgIGJpZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQXJndW1lbnRz
Tm90Q3JlYXRlZAorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hcmd1bWVu
dHMpCisub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgyKQorCisK
K21hY3JvIGRvUmV0dXJuKCkKKyAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgIGxvYWRw
IENhbGxlckZyYW1lW2Nmcl0sIGNmcgorICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0
dXJuKHQyKQorICAgIHJldAorZW5kCisKK19sbGludF9vcF9yZXQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10s
IHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJu
KCkKKworCitfbGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIGxvYWRpIDRbUENdLCB0Mgor
ICAgIGxvYWRpIDhbUENdLCB0MworICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdmFsdWVQcm9m
aWxlKHQxLCB0MCwgdDMpCisgICAgdHJhY2VFeGVjdXRpb24oKSAjIE5lZWRzIHRvIGJlIGhlcmUg
YmVjYXVzZSBpdCB3b3VsZCBjbG9iYmVyIHQxLCB0MAorICAgIGRpc3BhdGNoKDMpCisKKworX2xs
aW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hl
Y2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5v
cFJldE9iamVjdE9yVGhpc05vdE9iamVjdAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QyXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgZG9SZXR1
cm4oKQorCisub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3Q6CisgICAgbG9hZGkgOFtQQ10sIHQy
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkK
KworCitfbGxpbnRfb3BfbWV0aG9kX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAj
IFdlIGlnbm9yZSBtZXRob2QgY2hlY2tzIGFuZCB1c2Ugbm9ybWFsIGdldF9ieV9pZCBvcHRpbWl6
YXRpb25zLgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N0cmNhdDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N0cmNhdCkKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF90b19wcmltaXRpdmU6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9w
VG9QcmltaXRpdmVJc0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0Mgor
ICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBT
dHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisub3BUb1ByaW1pdGl2ZUlzSW1tOgor
ICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9QcmltaXRpdmVT
bG93Q2FzZToKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fcHJpbWl0aXZlKQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9wbmFtZXM6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfcG5hbWVzKQorICAgIGRpc3Bh
dGNoKDApICMgVGhlIGhlbHBlciBlaXRoZXIgYWR2YW5jZXMgdGhlIFBDIG9yIGp1bXBzIHVzIHRv
IHNvbWV3aGVyZSBlbHNlLgorCisKK19sbGludF9vcF9uZXh0X3BuYW1lOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZGkgMTZbUENdLCB0MgorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQwCisgICAgYmllcSB0MCwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQyLCA4XSwgLm9wTmV4dFBuYW1lRW5kCisgICAgbG9hZGkgMjBbUENdLCB0
MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAgbG9hZHAgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9qc1N0cmluZ3NbdDJdLCB0MworICAgIGxvYWRpIFt0Mywg
dDAsIDhdLCB0MworICAgIGFkZGkgMSwgdDAKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFn
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQz
LCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAgICBicG5l
cSB0MSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BO
ZXh0UG5hbWVTbG93CisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQ
cm90b3R5cGVDaGFpblt0Ml0sIHQwCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9y
W3QwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5vcE5leHRQbmFtZVRhcmdldAorLm9wTmV4dFBuYW1l
Q2hlY2tQcm90b3R5cGVMb29wOgorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRh
Z09mZnNldFt0MV0sIE51bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBTdHJ1Y3R1
cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0Ml0sIHQxCisgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNs
b3cKKyAgICBhZGRwIDQsIHQwCisgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90
b3R5cGVMb29wCisub3BOZXh0UG5hbWVUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMjRbUENd
KQorCisub3BOZXh0UG5hbWVFbmQ6CisgICAgZGlzcGF0Y2goNykKKworLm9wTmV4dFBuYW1lU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV4dF9wbmFtZSkgIyBUaGlzIGVpdGhl
ciBrZWVwcyB0aGUgUEMgd2hlcmUgaXQgd2FzIChjYXVzaW5nIHVzIHRvIGxvb3ApIG9yIHNldHMg
aXQgdG8gdGFyZ2V0LgorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3B1c2hfc2NvcGU6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNo
X3Njb3BlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3BvcF9zY29wZToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3BvcF9zY29wZSkK
KyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9wdXNoX25ld19zY29wZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfbmV3X3Njb3Bl
KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2NhdGNoOgorICAgICMgVGhpcyBpcyB3
aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0
aGUKKyAgICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxp
bnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJh
bXBvbGluZSAoc2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRoZSBKSVQgdGhy
b3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0aHJvd2lu
ZworICAgICMgY29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93aW5nIHRvIHRo
ZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6OnRhcmdldElu
dGVycHJldGVyUENGb3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBKSVRTdGFj
a0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdl
dEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpl
eGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6
OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0
YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRh
ZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAgICAgIAorICAgIGxv
YWRpIDRbUENdLCB0MgorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQor
ICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdHJhY2VFeGVjdXRpb24o
KSAgIyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2Ji
ZXIgdDAsIHQxLCB0MiwgdDMgYWJvdmUuCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3Bf
dGhyb3c6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl90aHJvdykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvd19yZWZlcmVuY2Vf
ZXJyb3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl90aHJvd19yZWZlcmVuY2VfZXJyb3IpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3Bf
anNyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBhZGRp
IDMgKiA0LCBQQywgdDEKKyAgICBzdG9yZWkgdDEsIFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNo
QnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkcCBbY2ZyLCB0MCwgOF0sIFBDCisgICAgZGlz
cGF0Y2goMCkKKworCitfbGxpbnRfb3BfZGVidWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWJ1ZykKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9wcm9maWxlX3dpbGxfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZHAgSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgdDAKKyAgICBi
dHB6IFt0MF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENhbGxEb25lOgorICAgIGRp
c3BhdGNoKDIpCisKKworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5j
ZVtzcF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9maWxlRGlkQ2Fs
bERvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRf
dGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0
aGUgaW50ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMpLCBzbworICAg
ICMgdGhlIHRocm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwg
d2UgY29tZSB0byBoZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklU
J3MgdGhyb3dpbmcgcHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0
YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0s
IHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisK
KworX2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1
cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERh
dGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFd
LCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQor
CisKKyMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBk
b24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgorIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBh
cmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAorIyBhcyBtdWNo
LgorCittYWNybyBub3RTdXBwb3J0ZWQoKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAg
IGNyYXNoKCkKKyAgICBlbHNlCisgICAgICAgICMgV2Ugc2hvdWxkIHVzZSB3aGF0ZXZlciB0aGUg
c21hbGxlc3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24gaXMsIGp1c3QgdG8KKyAgICAgICAgIyBlbnN1
cmUgdGhhdCB0aGVyZSBpcyBhIGdhcCBiZXR3ZWVuIGluc3RydWN0aW9uIGxhYmVscy4gSWYgbXVs
dGlwbGUKKyAgICAgICAgIyBzbWFsbGVzdCBpbnN0cnVjdGlvbnMgZXhpc3QsIHdlIHNob3VsZCBw
aWNrIHRoZSBvbmUgdGhhdCBpcyBtb3N0CisgICAgICAgICMgbGlrZWx5IHJlc3VsdCBpbiBleGVj
dXRpb24gYmVpbmcgaGFsdGVkLiBDdXJyZW50bHkgdGhhdCBpcyB0aGUgYnJlYWsKKyAgICAgICAg
IyBpbnN0cnVjdGlvbiBvbiBhbGwgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBpbnRlcmVzdGVkIGluLiAo
QnJlYWsgaXMgaW50MworICAgICAgICAjIG9uIEludGVsLCB3aGljaCBpcyAxIGJ5dGUsIGFuZCBi
a3B0IG9uIEFSTXY3LCB3aGljaCBpcyAyIGJ5dGVzLikKKyAgICAgICAgYnJlYWsKKyAgICBlbmQK
K2VuZAorCitfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQor
CitfbGxpbnRfb3BfZ2V0X2J5X2lkX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGlu
dF9vcF9nZXRfYnlfaWRfY3VzdG9tX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGlu
dF9vcF9nZXRfYnlfaWRfY3VzdG9tX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGlu
dF9vcF9nZXRfYnlfaWRfY3VzdG9tX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50
X29wX2dldF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9n
ZXRfYnlfaWRfZ2V0dGVyX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9n
ZXRfYnlfaWRfZ2V0dGVyX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9n
ZXRfYnlfaWRfZ2V0dGVyX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dl
dF9ieV9pZF9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lk
X3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9zdHJpbmdfbGVuZ3Ro
OgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfZ2VuZXJpYzoKKyAg
ICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3JlcGxhY2U6CisgICAgbm90
U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uOgorICAgIG5vdFN1
cHBvcnRlZCgpCisKKworIyBJbmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50LgorX2xsaW50X2VuZDoK
KyAgICBjcmFzaCgpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIK
KworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5o
IgorCisjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5U
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExvd0xldmVs
SW50ZXJwcmV0ZXJfaAorI2RlZmluZSBMb3dMZXZlbEludGVycHJldGVyX2gKKworI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiT3Bjb2Rl
LmgiCisKKyNkZWZpbmUgTExJTlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxlbmd0aCkgZXh0
ZXJuICJDIiB2b2lkIGxsaW50XyMjb3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKExM
SU5UX0lOU1RSVUNUSU9OX0RFQ0wpOworI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wKKwor
ZXh0ZXJuICJDIiB2b2lkIGxsaW50X2JlZ2luKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW5k
KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOworZXh0ZXJuICJD
IiB2b2lkIGxsaW50X2V2YWxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9nZW5l
cmljX3JldHVybl9wb2ludCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2Zyb21faGVs
cGVyX3RyYW1wb2xpbmUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19kdXJpbmdfY2Fs
bF90cmFtcG9saW5lKCk7CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBM
b3dMZXZlbEludGVycHJldGVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FybXY3LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FybXY3LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkzIEBACisjIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitjbGFzcyBTcGVjaWFsUmVnaXN0ZXIKKyAgZGVm
IGluaXRpYWxpemUobmFtZSkKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgYXJt
VjdPcGVyYW5kCisgICAgQG5hbWUKKyAgZW5kCitlbmQKKworQVJNdjdfREFUQV9SRUcgPSBTcGVj
aWFsUmVnaXN0ZXIubmV3KCJpcCIpCitBUk12N19BRERSX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5u
ZXcoInIzIikKKworZGVmIG1vdmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJl
bnRseSB3ZSBvbmx5IGhhbmRsZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1v
di9tb3Z0IGZvciB0aGUgY29tcGxleCBvbmVzLgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwg
MjU2CisgICAgJGFzbS5wdXRzICJtb3Z3IFwjI3t2YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVy
YW5kfSIKKyAgZWxzaWYgKH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20u
cHV0cyAibXZudyBcIyN7fnZhbHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNl
CisgICAgJGFzbS5wdXRzICJtb3Z3IFwjI3t2YWx1ZSAmIDB4ZmZmZn0sICN7cmVnaXN0ZXIuYXJt
VjdPcGVyYW5kfSIKKyAgICBpZiAodmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCisgICAgICAkYXNt
LnB1dHMgIm1vdnQgXCMje3ZhbHVlID4+IDE2fSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9Igor
ICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJh
bmQKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICJyMCIK
KyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgICJyMSIKKyAgICB3aGVuICJ0MiIsICJh
MiIKKyAgICAgICJyMiIKKyAgICB3aGVuICJhMyIKKyAgICAgICJyMyIKKyAgICB3aGVuICJ0MyIK
KyAgICAgICJyNCIKKyAgICB3aGVuICJ0NCIKKyAgICAgICJyNyIKKyAgICB3aGVuICJjZnIiCisg
ICAgICAicjUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFy
bVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAg
ZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkCisgIGVuZAorZW5kCisKK2NsYXNzIEZQ
UmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAi
ZnQwIiwgImZyIgorICAgICAgImQwIgorICAgIHdoZW4gImZyMSIsCisgICAgICAiZDEiCisgICAg
d2hlbiAiZnIyIgorICAgICAgImQyIgorICAgIHdoZW4gImZyMyIKKyAgICAgICJkMyIKKyAgICB3
aGVuICJmcjQiCisgICAgICAiZDQiCisgICAgd2hlbiAiZnI1IgorICAgICAgImQ1IgorICAgIGVs
c2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBv
c3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5
T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9y
ZVdyYXAKKyAgICB5aWVsZCBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBk
ZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2UgIkludmFsaWQgaW1tZWRpYXRlICN7dmFsdWV9IiBp
ZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAiIyR7dmFsdWV9IgorICBlbmQKKyAgCisg
IGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYg
YXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAor
ICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCitt
b2R1bGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAg
ICBzZWxmLmFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICRhc20ucHV0cyAi
XHRsZHIgI3tzZWxmLmFybVY3UG9zc2libHlNZW1vcnlPcGVyYW5kfSwgI3tBUk12N19EQVRBX1JF
Ry5hcm1WN09wZXJhbmR9IgorICAgIHlpZWxkIEFSTXY3X0RBVEFfUkVHCisgICAgJGFzbS5wdXRz
ICJcdHN0ciAje0FSTXY3X0RBVEFfUkVHLmFybVY3T3BlcmFuZH0sICN7c2VsZi5hcm1WN1Bvc3Np
Ymx5TWVtb3J5T3BlcmFuZH0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgaW5jbHVk
ZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1v
cnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4g
MHhmZmYKKyAgICAgIG1vdmVJbW1lZGlhdGUob2Zmc2V0LnZhbHVlLCBBUk12N19BRERSX1JFRykK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAg
ICBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAg
Ilsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIK
KyAgICBlbHNlCisgICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje29mZnNldC5hcm1WN09w
ZXJhbmR9XSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGluY2x1
ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVt
b3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICBtb3ZlSW1tZWRpYXRl
KG9mZnNldC52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgICAgICAkYXNtLnB1dHMgImFkZHcgI3tB
Uk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSIKKyAgICBl
bmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBv
ZmZzZXQudmFsdWUgIT0gMAorICAgICAgIlsje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH0s
ICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVsc2UKKyAgICAg
ICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tz
Y2FsZX1dIgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAg
aW5jbHVkZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3Nz
aWJsZU1lbW9yeU9wZXJhbmQKKyAgICBtb3ZlSW1tZWRpYXRlKGFkZHJlc3MudmFsdWUsIEFSTXY3
X0FERFJfUkVHKQorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAor
ICAgICJbI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgZW5kCitlbmQKKworCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEwOCBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3Jl
cXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJvZmZzZXRz
IgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zv
cm0iCisKK2NsYXNzIEFzc2VtYmxlcgorICBkZWYgaW5pdGlhbGl6ZShvdXRwKQorICAgIEBvdXRw
ID0gb3V0cAorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBkZWYgZW50ZXJBc20KKyAg
ICBAb3V0cC5wdXRzICJhc20gKCIKKyAgICBAc3RhdGUgPSA6YXNtCisgIGVuZAorICAKKyAgZGVm
IGxlYXZlQXNtCisgICAgQG91dHAucHV0cyAiKTsiCisgICAgQHN0YXRlID0gOmNwcAorICBlbmQK
KyAgCisgIGRlZiBpbkFzbQorICAgIGVudGVyQXNtCisgICAgeWllbGQKKyAgICBsZWF2ZUFzbQor
ICBlbmQKKyAgCisgIGRlZiBwdXRzKGxpbmUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6
YXNtCisgICAgQG91dHAucHV0cygobGluZSArICJcbiIpLmluc3BlY3QpCisgIGVuZAorICAKKyAg
ZGVmIGNvbW1lbnQodGV4dCkKKyAgICBAb3V0cC5wdXRzICIvLyAje3RleHR9IgorICBlbmQKK2Vu
ZAorCithc21GaWxlID0gQVJHVi5zaGlmdAorb2Zmc2V0c0ZpbGUgPSBBUkdWLnNoaWZ0CitvdXRw
dXRGbG5tID0gQVJHVi5zaGlmdAorCitvZmZzZXRzTGlzdCwgY29uZmlnSW5kZXggPSBvZmZzZXRz
QW5kQ29uZmlndXJhdGlvbkluZGV4KG9mZnNldHNGaWxlKQoraW5wdXREYXRhID0gSU86OnJlYWQo
YXNtRmlsZSkKKworaW5wdXRIYXNoID0KKyAgIi8vIG9mZmxpbmVhc20gaW5wdXQgaGFzaDogIiAr
IERpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoaW5wdXREYXRhKSArCisgICIgIiArIERpZ2VzdDo6U0hB
MS5oZXhkaWdlc3QoKG9mZnNldHNMaXN0ICsgW2NvbmZpZ0luZGV4XSkuam9pbignICcpKQorCitp
ZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0RmxubQorICBGaWxlLm9wZW4ob3V0cHV0RmxubSwgInIi
KSB7CisgICAgfCBpbnAgfAorICAgIGZpcnN0TGluZSA9IGlucC5nZXRzCisgICAgaWYgZmlyc3RM
aW5lIGFuZCBmaXJzdExpbmUuY2hvbXAgPT0gaW5wdXRIYXNoCisgICAgICAkc3RkZXJyLnB1dHMg
Ik5vdGhpbmcgY2hhbmdlZC4iCisgICAgICBleGl0IDAKKyAgICBlbmQKKyAgfQorZW5kCisKK0Zp
bGUub3BlbihvdXRwdXRGbG5tLCAidyIpIHsKKyAgfCBvdXRwIHwKKyAgJG91dHB1dCA9IG91dHAK
KyAgJG91dHB1dC5wdXRzIGlucHV0SGFzaAorICAKKyAgJGFzbSA9IEFzc2VtYmxlci5uZXcoJG91
dHB1dCkKKyAgCisgIGFzdCA9IHBhcnNlKGxleChpbnB1dERhdGEpKQorICAKKyAgZm9yU2V0dGlu
Z3MoY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdClbY29uZmlnSW5kZXhdLCBhc3QpIHsK
KyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICBhc3Nl
cnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgICAgbG93TGV2ZWxBU1QgPSBsb3dM
ZXZlbEFTVC5yZXNvbHZlKCpidWlsZE9mZnNldHNNYXAobG93TGV2ZWxBU1QsIG9mZnNldHNMaXN0
KSkKKyAgICBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZl
bEFTVCwgYmFja2VuZCkgeworICAgICAgJGFzbS5pbkFzbSB7CisgICAgICAgIGxvd0xldmVsQVNU
Lmxvd2VyKGJhY2tlbmQpCisgICAgICB9CisgICAgfQorICB9Cit9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxMyBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIworIyBCYXNlIHV0aWxp
dHkgdHlwZXMgZm9yIHRoZSBBU1QuCisjCisKKyMgVmFsaWQgbWV0aG9kcyBmb3IgTm9kZToKKyMK
KyMgbm9kZS5jaGlsZHJlbiAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGltbWVkaWF0ZSBjaGlsZHJl
bi4KKyMKKyMgbm9kZS5kZXNjZW5kZW50cyAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBzdHJp
Y3QgZGVzY2VuZGFudHMgKGNoaWxkcmVuCisjICAgICBhbmQgY2hpbGRyZW4gb2YgY2hpbGRyZW4s
IHRyYW5zaXRpdmVseSkuCisjCisjIG5vZGUuZmxhdHRlbiAtPiBSZXR1cm5zIGFuIGFycmF5IGNv
bnRhaW5pbmcgdGhlIHN0cmljdCBkZXNjZW5kYW50cyBhbmQKKyMgICAgIHRoZSBub2RlIGl0c2Vs
Zi4KKyMKKyMgbm9kZS5maWx0ZXIodHlwZSkgLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5n
IHRob3NlIGVsZW1lbnRzIGluCisjICAgICBub2RlLmZsYXR0ZW4gdGhhdCBhcmUgb2YgdGhlIGdp
dmVuIHR5cGUgKGlzX2E/IHR5cGUgcmV0dXJucyB0cnVlKS4KKyMKKyMgbm9kZS5tYXBDaGlsZHJl
bnt8dnwgLi4ufSAtPiBSZXR1cm5zIGEgbmV3IG5vZGUgd2l0aCBhbGwgY2hpbGRyZW4KKyMgICAg
IHJlcGxhY2VkIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gYmxvY2suCisjCisjIEV4YW1wbGVzOgor
IworIyBub2RlLmZpbHRlcihTZXR0aW5nKS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzZXR0
aW5ncyB0aGF0IHRoZSBBU1QncworIyAgICAgSWZUaGVuRWxzZSBibG9ja3MgZGVwZW5kIG9uLgor
IworIyBub2RlLmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhl
IHN0cnVjdHVyZSBvZmZzZXRzCisjICAgICB0aGF0IHRoZSBBU1QgZGVwZW5kcyBvbi4KKworY2xh
c3MgTm9kZQorICBhdHRyX3JlYWRlciA6Y29kZU9yaWdpbgorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbikKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgZW5kCisgIAorICBk
ZWYgY29kZU9yaWdpblN0cmluZworICAgICJsaW5lIG51bWJlciAje0Bjb2RlT3JpZ2lufSIKKyAg
ZW5kCisgIAorICBkZWYgZGVzY2VuZGFudHMKKyAgICBjaGlsZHJlbi5jb2xsZWN0e3x2fCB2LmZs
YXR0ZW59LmZsYXR0ZW4KKyAgZW5kCisgIAorICBkZWYgZmxhdHRlbgorICAgIFtzZWxmXSArIGRl
c2NlbmRhbnRzCisgIGVuZAorICAKKyAgZGVmIGZpbHRlcih0eXBlKQorICAgIGZsYXR0ZW4uc2Vs
ZWN0e3x2fCB2LmlzX2E/IHR5cGV9CisgIGVuZAorZW5kCisKK2NsYXNzIE5vQ2hpbGRyZW4gPCBO
b2RlCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbXQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0S2V5Cisg
IGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUoc3RydWN0
LCBmaWVsZCkKKyAgICBAc3RydWN0ID0gc3RydWN0CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5k
CisgIAorICBkZWYgaGFzaAorICAgIEBzdHJ1Y3QuaGFzaCArIEBmaWVsZC5oYXNoICogMworICBl
bmQKKyAgCisgIGRlZiBlcWw/KG90aGVyKQorICAgIEBzdHJ1Y3QgPT0gb3RoZXIuc3RydWN0IGFu
ZCBAZmllbGQgPT0gb3RoZXIuZmllbGQKKyAgZW5kCitlbmQKKyAgICAKKyMKKyMgQVNUIG5vZGVz
LgorIworCitjbGFzcyBTdHJ1Y3RPZmZzZXQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpz
dHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0LCBm
aWVsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBA
ZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2Vs
Zi5mb3JGaWVsZChjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGtleSA9IFN0cnVjdE9m
ZnNldEtleS5uZXcoc3RydWN0LCBmaWVsZCkKKyAgICAKKyAgICB1bmxlc3MgQEBtYXBwaW5nW2tl
eV0KKyAgICAgIEBAbWFwcGluZ1trZXldID0gU3RydWN0T2Zmc2V0Lm5ldyhjb2RlT3JpZ2luLCBz
dHJ1Y3QsIGZpZWxkKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1trZXldCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiI3tzdHJ1Y3R9Ojoje2ZpZWxkfSIKKyAgZW5kCisgIAorICBkZWYgPD0+
KG90aGVyKQorICAgIGlmIEBzdHJ1Y3QgIT0gb3RoZXIuc3RydWN0CisgICAgICByZXR1cm4gQHN0
cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgICAgZW5kCisgICAgQGZpZWxkIDw9PiBvdGhlci5maWVs
ZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVy
IDpzdHJ1Y3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgZW5kCisgIAorICBAQG1h
cHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisg
ICAgdW5sZXNzIEBAbWFwcGluZ1tzdHJ1Y3RdCisgICAgICBAQG1hcHBpbmdbc3RydWN0XSA9IFNp
emVvZi5uZXcoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tzdHJ1
Y3RdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAic2l6ZW9mICN7QHN0cnVjdH0iCisgIGVu
ZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAgICBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAg
ZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhbHVlKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICIje3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYgPT0ob3RoZXIpCisgICAgb3RoZXIuaXNf
YT8gSW1tZWRpYXRlIGFuZCBvdGhlci52YWx1ZSA9PSBAdmFsdWUKKyAgZW5kCitlbmQKKworY2xh
c3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAg
CisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbgorICAgIEFkZEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVm
dCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQu
ZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRl
cyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
bGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJl
bgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAg
IFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmln
aHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gLSAje3JpZ2h0
LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAg
ICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwg
QHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE11bEltbWVkaWF0ZXMu
bmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKiAje3JpZ2h0LmR1bXB9KSIKKyAgZW5k
CitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAg
ICBbQGNoaWxkXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5lZ0ltbWVkaWF0
ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiKC0je0BjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQg
PCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1l
CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBp
bmdbbmFtZV0gPSBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAg
IEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQK
K2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpu
YW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30K
KyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBt
YXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBGUFJlZ2lzdGVySUQubmV3KGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlIDwgTm9D
aGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBl
bmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmln
aW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25h
bWVdID0gVmFyaWFibGUubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBw
aW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisK
K2NsYXNzIEFkZHJlc3MgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6b2Zmc2V0CisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBvZmZzZXQpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAor
ICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BiYXNlLCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRl
ZiBtYXBDaGlsZHJlbgorICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSks
ICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5k
dW1wfVsje2Jhc2UuZHVtcH1dIgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXggPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6aW5kZXgsIDpzY2FsZSwgOm9mZnNldAorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAaW5kZXggPSBpbmRleAor
ICAgIEBzY2FsZSA9IHNjYWxlCisgICAgcmFpc2UgdW5sZXNzIFsxLCAyLCA0LCA4XS5tZW1iZXI/
IEBzY2FsZQorICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4K
KyAgICBbQGJhc2UsIEBpbmRleCwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRy
ZW4KKyAgICBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBA
aW5kZXgpLCBAc2NhbGUsICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH0sICN7aW5kZXguZHVtcH0sICN7c2NhbGV9
XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzIDwgTm9DaGlsZHJlbgorICBh
dHRyX3JlYWRlciA6YWRkcmVzcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYWRk
cmVzcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBhZGRyZXNzID0gYWRkcmVzcworICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7YWRkcmVzcy5kdW1wfVtdIgorICBlbmQKK2VuZAor
CitjbGFzcyBJbnN0cnVjdGlvbiA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJh
bmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBvcGNvZGUsIG9wZXJhbmRzKQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG9wY29kZSA9IG9wY29kZQorICAgIEBvcGVyYW5k
cyA9IG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgb3BlcmFuZHMKKyAg
ZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgSW5zdHJ1Y3Rpb24ubmV3KGNv
ZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgIlx0IiArIG9wY29kZS50b19zICsgIiAiICsgb3BlcmFuZHMuY29sbGVjdHt8
dnwgdi5kdW1wfS5qb2luKCIsICIpCisgIGVuZAorZW5kCisKK2NsYXNzIEVycm9yIDwgTm9DaGls
ZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRlcnJvciIKKyAgZW5kCitlbmQKKworY2xh
c3MgQ29uc3REZWNsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6dmFyaWFibGUsIDp2YWx1ZQorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQHZhcmlhYmxlID0gdmFyaWFibGUKKyAgICBAdmFsdWUgPSB2YWx1
ZQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAdmFyaWFibGUsIEB2YWx1ZV0KKyAg
ZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBDb25zdERlY2wubmV3KGNvZGVPcmlnaW4s
ICh5aWVsZCBAdmFyaWFibGUpLCAoeWllbGQgQHZhbHVlKSkKKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgICJjb25zdCAje0B2YXJpYWJsZS5kdW1wfSA9ICN7QHZhbHVlLmR1bXB9IgorICBlbmQK
K2VuZAorCiskbGFiZWxNYXBwaW5nID0ge30KKworY2xhc3MgTGFiZWwgPCBOb0NoaWxkcmVuCisg
IGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1l
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAg
ZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdb
bmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNz
ICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxN
YXBwaW5nW25hbWVdID0gTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAg
JGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06
IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3Jl
YWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKworICBAQHVuaXF1ZU5h
bWVDb3VudGVyID0gMAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxp
c2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTG9jYWxMYWJl
bAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBMb2NhbExhYmVsLm5ldyhj
b2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5k
CisgIAorICBkZWYgc2VsZi51bmlxdWUoY29tbWVudCkKKyAgICBuZXdOYW1lID0gIl8je2NvbW1l
bnR9IgorICAgIGlmICRsYWJlbE1hcHBpbmdbbmV3TmFtZV0KKyAgICAgIHdoaWxlICRsYWJlbE1h
cHBpbmdbbmV3TmFtZSA9ICJfI3tAQHVuaXF1ZU5hbWVDb3VudGVyfV8je2NvbW1lbnR9Il0KKyAg
ICAgICAgQEB1bmlxdWVOYW1lQ291bnRlciArPSAxCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBm
b3JOYW1lKG5pbCwgbmV3TmFtZSkKKyAgZW5kCisgIAorICBkZWYgY2xlYW5OYW1lCisgICAgaWYg
bmFtZSA9fiAvXlwuLworICAgICAgIl8iICsgbmFtZVsxLi4tMV0KKyAgICBlbHNlCisgICAgICBu
YW1lCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisgIGVu
ZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGFi
ZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4K
KyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExhYmVsUmVm
ZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxhYmVsKSkKKyAgZW5kCisgIAorICBkZWYg
bmFtZQorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxhYmVsLm5h
bWUKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZSA8IE5vQ2hpbGRyZW4K
KyAgYXR0cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBs
YWJlbCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVuZAor
ICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hp
bGRyZW4KKyAgICBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxh
YmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2Ug
PCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsaXN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBsaXN0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxpc3QgPSBsaXN0CisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgbGlzdAorICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbigmcHJvYykKKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgQGxpc3QubWFwKCZwcm9j
KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxpc3QuY29sbGVjdHt8dnwgdi5kdW1wfS5q
b2luKCJcbiIpCisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUgPCBOb0NoaWxkcmVuCisgIGRlZiBp
bml0aWFsaXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBUcnVl
Lm5ldworICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAK
KyAgZGVmIHZhbHVlCisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgInRydWUi
CisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6
ZQorICAgIHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNlID0gRmFsc2UubmV3Cisg
IAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYg
dmFsdWUKKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImZhbHNlIgorICBl
bmQKK2VuZAorCitjbGFzcyBUcnVlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAgIFRydWUuaW5zdGFu
Y2UKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2VDbGFzcworICBkZWYgYXNOb2RlCisgICAgRmFs
c2UuaW5zdGFuY2UKKyAgZW5kCitlbmQKKworY2xhc3MgU2V0dGluZyA8IE5vQ2hpbGRyZW4KKyAg
YXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBA
QG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFNldHRp
bmcubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZCA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVm
dCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgor
ICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFu
ZC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBhbmQgI3tyaWdodC5kdW1wfSkiCisg
IGVuZAorZW5kCisKK2NsYXNzIE9yIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAg
ZGVmIG1hcENoaWxkcmVuCisgICAgT3IubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5
aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0g
b3IgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE5vdCA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENo
aWxkcmVuCisgICAgTm90Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIobm90ICN7Y2hpbGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitj
bGFzcyBTa2lwIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRza2lwIgor
ICBlbmQKK2VuZAorCitjbGFzcyBJZlRoZW5FbHNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6cHJl
ZGljYXRlLCA6dGhlbkNhc2UKKyAgYXR0cl9hY2Nlc3NvciA6ZWxzZUNhc2UKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgdGhlbkNhc2UpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAcHJlZGljYXRlID0gcHJlZGljYXRlCisgICAgQHRoZW5DYXNlID0gdGhl
bkNhc2UKKyAgICBAZWxzZUNhc2UgPSBTa2lwLm5ldyhjb2RlT3JpZ2luKQorICBlbmQKKyAgCisg
IGRlZiBjaGlsZHJlbgorICAgIGlmIEBlbHNlQ2FzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVu
Q2FzZSwgQGVsc2VDYXNlXQorICAgIGVsc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2Vd
CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgSWZUaGVuRWxzZS5u
ZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBwcmVkaWNhdGUpLCAoeWllbGQgQHRoZW5DYXNlKSwgKHlp
ZWxkIEBlbHNlQ2FzZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiaWYgI3twcmVkaWNh
dGUuZHVtcH1cbiIgKyB0aGVuQ2FzZS5kdW1wICsgIlxuZWxzZVxuIiArIGVsc2VDYXNlLmR1bXAg
KyAiXG5lbmQiCisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvIDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6bmFtZSwgOnZhcmlhYmxlcywgOmJvZHkKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBu
YW1lID0gbmFtZQorICAgIEB2YXJpYWJsZXMgPSB2YXJpYWJsZXMKKyAgICBAYm9keSA9IGJvZHkK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAdmFyaWFibGVzICsgW0Bib2R5XQorICBl
bmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBAbmFt
ZSwgQHZhcmlhYmxlcy5tYXB7fHZ8IHlpZWxkIHZ9LCAoeWllbGQgQGJvZHkpKQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIm1hY3JvICN7bmFtZX0oIiArIHZhcmlhYmxlcy5jb2xsZWN0e3x2
fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKVxuIiArIGJvZHkuZHVtcCArICJcbmVuZCIKKyAgZW5k
CitlbmQKKworY2xhc3MgTWFjcm9DYWxsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOm9w
ZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAgIEBvcGVyYW5kcyA9
IG9wZXJhbmRzCisgICAgcmFpc2UgdW5sZXNzIEBvcGVyYW5kcworICAgIEBvcGVyYW5kcy5lYWNo
e3x2fCByYWlzZSB1bmxlc3Mgdn0KKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAb3Bl
cmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgTWFjcm9DYWxs
Lm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICAiXHQje25hbWV9KCIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1
bXB9LmpvaW4oIiwgIikgKyAiKSIKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisj
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWly
ZSAiYXN0IgorcmVxdWlyZSAieDg2IgorCitCQUNLRU5EUyA9CisgIFsKKyAgICJYODYiLAorICAg
IkFSTXY3IgorICBdCisKK1dPUktJTkdfQkFDS0VORFMgPQorICBbCisgICAiWDg2IgorICBdCisK
K0JBQ0tFTkRfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgnICsgQkFDS0VORFMuam9pbignKXwo
JykgKyAnKVxcWicpCisKK2NsYXNzIE5vZGUKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgc2VuZCgi
bG93ZXIiICsgbmFtZSkKKyAgZW5kCitlbmQKKworIyBPdmVycmlkZXMgZm9yIGxvd2VyKCkgZm9y
IHRob3NlIG5vZGVzIHRoYXQgYXJlIGJhY2tlbmQtYWdub3N0aWMKKworZGVmIHNhbml0aXplTGFi
ZWxOYW1lKG5hbWUpCisgICMgU29tZSBwbGF0Zm9ybXMgZG9uJ3Qgd2FudCB0aGUgbGVhZGluZyAi
XyIuIElmIHdlIGV2ZXIgd2FudCB0byBkbyBzb21ldGhpbmcKKyAgIyBhYm91dCB0aGF0LCBpdCB3
b3VsZCBiZSBoZXJlLgorICBuYW1lCitlbmQKKworY2xhc3MgTGFiZWwKKyAgZGVmIGxvd2VyKG5h
bWUpCisgICAgJGFzbS5wdXRzICIuZ2xvYmwgI3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxmLm5hbWUp
fSIKKyAgICAkYXNtLnB1dHMgIiN7c2FuaXRpemVMYWJlbE5hbWUoc2VsZi5uYW1lKX06IgorICBl
bmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAgICRhc20u
cHV0cyAiTF9vZmZsaW5lYXNtXyN7c2VsZi5uYW1lWzEuLi0xXX06IgorICBlbmQKK2VuZAorCitj
bGFzcyBTa2lwCisgIGRlZiBsb3dlcihuYW1lKQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5j
ZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8Cisg
ICAgICBub2RlLmxvd2VyKG5hbWUpCisgICAgfQorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29m
ZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDg3IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWly
ZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNldHMiCity
ZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIK
KworaW5wdXRGbG5tID0gQVJHVi5zaGlmdAorb3V0cHV0RmxubSA9IEFSR1Yuc2hpZnQKKworZGVm
IGVtaXRNYWdpY051bWJlcgorICBPRkZTRVRfTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICB8IG51
bWJlciB8CisgICAgJG91dHB1dC5wdXRzICIje251bWJlcn0sIgorICB9CitlbmQKKworaW5wdXRE
YXRhID0gSU86OnJlYWQoaW5wdXRGbG5tKQoraW5wdXRIYXNoID0gRGlnZXN0OjpTSEExLmhleGRp
Z2VzdChpbnB1dERhdGEpCisKK2lmIEZpbGVUZXN0LmV4aXN0PyBvdXRwdXRGbG5tCisgIEZpbGUu
b3BlbihvdXRwdXRGbG5tLCAiciIpIHsKKyAgICB8IGlucCB8CisgICAgZmlyc3RMaW5lID0gaW5w
LmdldHMKKyAgICBpZiBmaXJzdExpbmUgYW5kIGZpcnN0TGluZS5jaG9tcCA9PSAiLy8gb2ZmbGlu
ZWFzbSBpbnB1dCBoYXNoOiAje2lucHV0SGFzaH0iCisgICAgICAkc3RkZXJyLnB1dHMgIk5vdGhp
bmcgY2hhbmdlZC4iCisgICAgICBleGl0IDAKKyAgICBlbmQKKyAgfQorZW5kCisKK29yaWdpbmFs
QVNUID0gcGFyc2UobGV4KGlucHV0RGF0YSkpCisKK0ZpbGUub3BlbihvdXRwdXRGbG5tLCAidyIp
IHsKKyAgfCBvdXRwIHwKKyAgJG91dHB1dCA9IG91dHAKKyAgb3V0cC5wdXRzICIvLyBvZmZsaW5l
YXNtIGlucHV0IGhhc2g6ICN7aW5wdXRIYXNofSIKKyAgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRp
b25zKG9yaWdpbmFsQVNUKSB7CisgICAgfCBzZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8
CisgICAgb2Zmc2V0c0xpc3QgPSBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0Cisg
ICAgc2l6ZXNMaXN0ID0gYXN0LmZpbHRlcihTaXplb2YpLnVuaXEuc29ydAorICAgIAorICAgIGxl
bmd0aCA9IChPRkZTRVRfTUFHSUNfTlVNQkVSUy5zaXplICsgMSkgKiAoMSArIG9mZnNldHNMaXN0
LnNpemUgKyBzaXplc0xpc3Quc2l6ZSkKKyAgICAKKyAgICBvdXRwLnB1dHMgInN0YXRpYyBjb25z
dCB1bnNpZ25lZCBleHRyYWN0b3JUYWJsZVsje2xlbmd0aH1dID0geyIKKyAgICBlbWl0TWFnaWNO
dW1iZXIKKyAgICBvdXRwLnB1dHMgIiN7aW5kZXh9LCIKKyAgICBvZmZzZXRzTGlzdC5lYWNoIHsK
KyAgICAgIHwgb2Zmc2V0IHwKKyAgICAgIGVtaXRNYWdpY051bWJlcgorICAgICAgb3V0cC5wdXRz
ICJPRkZMSU5FX0FTTV9PRkZTRVRPRigje29mZnNldC5zdHJ1Y3R9LCAje29mZnNldC5maWVsZH0p
LCIKKyAgICB9CisgICAgc2l6ZXNMaXN0LmVhY2ggeworICAgICAgfCBvZmZzZXQgfAorICAgICAg
ZW1pdE1hZ2ljTnVtYmVyCisgICAgICBvdXRwLnB1dHMgInNpemVvZigje29mZnNldC5zdHJ1Y3R9
KSwiCisgICAgfQorICAgIG91dHAucHV0cyAifTsiCisgIH0KK30KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTg4IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitNQUNST19JTlNUUlVDVElPTlMgPQorICBbCisgICAiYWRkaSIsCisgICAiYW5k
aSIsCisgICAibHNoaWZ0aSIsCisgICAibXVsaSIsCisgICAibmVnaSIsCisgICAibm90aSIsCisg
ICAib3JpIiwKKyAgICJyc2hpZnRpIiwKKyAgICJ1cnNoaWZ0aSIsCisgICAic3ViaSIsCisgICAi
eG9yaSIsCisgICAibG9hZGkiLAorICAgImxvYWRiIiwKKyAgICJsb2FkaCIsCisgICAic3RvcmVp
IiwKKyAgICJzdG9yZWIiLAorICAgImxvYWRkIiwKKyAgICJtb3ZlZCIsCisgICAic3RvcmVkIiwK
KyAgICJhZGRkIiwKKyAgICJkaXZkIiwKKyAgICJzdWJkIiwKKyAgICJtdWxkIiwKKyAgICJzcXJ0
ZCIsCisgICAiY2kyZCIsCisgICAiZmlpMmQiLCAjIHVzYWdlOiBmaWkyZCA8Z3ByIHdpdGggbGVh
c3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+LCA8
ZnByPgorICAgImZkMmlpIiwgIyB1c2FnZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0aCBsZWFzdCBz
aWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4KKyAgICJi
ZGVxIiwKKyAgICJiZG5lcSIsCisgICAiYmRndCIsCisgICAiYmRndGVxIiwKKyAgICJiZGx0IiwK
KyAgICJiZGx0ZXEiLAorICAgImJkZXF1biIsCisgICAiYmRuZXF1biIsCisgICAiYmRndHVuIiwK
KyAgICJiZGd0ZXF1biIsCisgICAiYmRsdHVuIiwKKyAgICJiZGx0ZXF1biIsCisgICAiYnRkMmki
LAorICAgInRkMmkiLAorICAgImJjZDJpIiwKKyAgICJtb3ZkeiIsCisgICAicG9wIiwKKyAgICJw
dXNoIiwKKyAgICJtb3ZlIiwKKyAgICJzeGkycCIsCisgICAienhpMnAiLAorICAgIm5vcCIsCisg
ICAiYmllcSIsCisgICAiYmluZXEiLAorICAgImJpYSIsCisgICAiYmlhZXEiLAorICAgImJpYiIs
CisgICAiYmliZXEiLAorICAgImJpZ3QiLAorICAgImJpZ3RlcSIsCisgICAiYmlsdCIsCisgICAi
YmlsdGVxIiwKKyAgICJiYmVxIiwKKyAgICJiYm5lcSIsCisgICAiYmJhIiwKKyAgICJiYmFlcSIs
CisgICAiYmJiIiwKKyAgICJiYmJlcSIsCisgICAiYmJndCIsCisgICAiYmJndGVxIiwKKyAgICJi
Ymx0IiwKKyAgICJiYmx0ZXEiLAorICAgImJ0aW8iLAorICAgImJ0aXMiLAorICAgImJ0aXoiLAor
ICAgImJ0aW56IiwKKyAgICJidGJvIiwKKyAgICJidGJzIiwKKyAgICJidGJ6IiwKKyAgICJidGJu
eiIsCisgICAiam1wIiwKKyAgICJiYWRkaW8iLAorICAgImJhZGRpcyIsCisgICAiYmFkZGl6IiwK
KyAgICJiYWRkaW56IiwKKyAgICJic3ViaW8iLAorICAgImJzdWJpcyIsCisgICAiYnN1Yml6IiwK
KyAgICJic3ViaW56IiwKKyAgICJibXVsaW8iLAorICAgImJtdWxpcyIsCisgICAiYm11bGl6IiwK
KyAgICJibXVsaW56IiwKKyAgICJib3JpbyIsCisgICAiYm9yaXMiLAorICAgImJvcml6IiwKKyAg
ICJib3JpbnoiLAorICAgImJyZWFrIiwKKyAgICJjYWxsIiwKKyAgICJyZXQiLAorICAgImNpZXEi
LAorICAgImNpbmVxIiwKKyAgICJjaWEiLAorICAgImNpYWVxIiwKKyAgICJjaWIiLAorICAgImNp
YmVxIiwKKyAgICJjaWd0IiwKKyAgICJjaWd0ZXEiLAorICAgImNpbHQiLAorICAgImNpbHRlcSIs
CisgICAidGlvIiwKKyAgICJ0aXMiLAorICAgInRpeiIsCisgICAidGlueiIsCisgICAidGJvIiwK
KyAgICJ0YnMiLAorICAgInRieiIsCisgICAidGJueiIsCisgICAicGVlayIsCisgICAicG9rZSIs
CisgICAiYnBlcSIsCisgICAiYnBuZXEiLAorICAgImJwYSIsCisgICAiYnBhZXEiLAorICAgImJw
YiIsCisgICAiYnBiZXEiLAorICAgImJwZ3QiLAorICAgImJwZ3RlcSIsCisgICAiYnBsdCIsCisg
ICAiYnBsdGVxIiwKKyAgICJhZGRwIiwKKyAgICJhbmRwIiwKKyAgICJvcnAiLAorICAgInN1YnAi
LAorICAgInhvcnAiLAorICAgImxvYWRwIiwKKyAgICJjcGVxIiwKKyAgICJjcG5lcSIsCisgICAi
Y3BhIiwKKyAgICJjcGFlcSIsCisgICAiY3BiIiwKKyAgICJjcGJlcSIsCisgICAiY3BndCIsCisg
ICAiY3BndGVxIiwKKyAgICJjcGx0IiwKKyAgICJjcGx0ZXEiLAorICAgInN0b3JlcCIsCisgICAi
YnRwbyIsCisgICAiYnRwcyIsCisgICAiYnRweiIsCisgICAiYnRwbnoiLAorICAgImJhZGRwbyIs
CisgICAiYmFkZHBzIiwKKyAgICJiYWRkcHoiLAorICAgImJhZGRwbnoiCisgIF0KKworWDg2X0lO
U1RSVUNUSU9OUyA9CisgIFsKKyAgICJjZHFpIiwKKyAgICJpZGl2aSIKKyAgXQorCitJTlNUUlVD
VElPTlMgPSBNQUNST19JTlNUUlVDVElPTlMgKyBYODZfSU5TVFJVQ1RJT05TCisKK0lOU1RSVUNU
SU9OX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbignKXwo
JykgKyAnKSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zm
c2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9y
X2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywg
MHgwZmY1ZTc1NSBdCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
b2Zmc2V0cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vb2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTAgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIm9m
ZnNldF9leHRyYWN0b3JfY29uc3RhbnRzIgorCitPRkZTRVRfTUFHSUNfTlVNQkVSUyA9IFsgMHhl
YzU3N2FjNywgMHgwZmY1ZTc1NSBdCisKKyMKKyMgb2Zmc2V0c0xpc3QoYXN0KQorIyBzaXplc0xp
c3QoYXN0KQorIworIyBSZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCBzaXplcyB1c2VkIGJ5
IHRoZSBBU1QuCisjCisKK2RlZiBvZmZzZXRzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU3RydWN0
T2Zmc2V0KS51bmlxLnNvcnQKK2VuZAorCitkZWYgc2l6ZXNMaXN0KGFzdCkKKyAgYXN0LmZpbHRl
cihTaXplb2YpLnVuaXEuc29ydAorZW5kCisKKyMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25J
bmRleChhc3QsIGZpbGUpIC0+CisjICAgICBbb2Zmc2V0cywgaW5kZXhdCisjCisjIFBhcnNlcyB0
aGUgb2Zmc2V0cyBmcm9tIGEgZmlsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQg
dGhlCisjIGluZGV4IG9mIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgaXMgdmFsaWQgaW4gdGhpcyBi
dWlsZCB0YXJnZXQuCisjCisKK2RlZiBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUp
CisgIGluZGV4ID0gbmlsCisgIG9mZnNldHMgPSBbXQorICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMg
PSBuaWwKKyAgCisgIGRlZiByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICBieXRlcyA9IFtd
CisgICAgNC50aW1lcyB7CisgICAgICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQorICAgIH0KKyAgICAK
KyAgICBpZiBlbmRpYW5uZXNzID09IDpsaXR0bGUKKyAgICAgICMgTGl0dGxlIGVuZGlhbgorICAg
ICAgKGJ5dGVzWzBdIDw8IDAgfAorICAgICAgIGJ5dGVzWzFdIDw8IDggfAorICAgICAgIGJ5dGVz
WzJdIDw8IDE2IHwKKyAgICAgICBieXRlc1szXSA8PCAyNCkKKyAgICBlbHNlCisgICAgICAjIEJp
ZyBlbmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAyNCB8CisgICAgICAgYnl0ZXNbMV0gPDwgMTYg
fAorICAgICAgIGJ5dGVzWzJdIDw8IDggfAorICAgICAgIGJ5dGVzWzNdIDw8IDApCisgICAgZW5k
CisgIGVuZAorICAKKyAgWzpsaXR0bGUsIDpiaWddLmVhY2ggeworICAgIHwgZW5kaWFubmVzcyB8
CisgICAgbWFnaWNCeXRlcyA9IFtdCisgICAgTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICAgIHwg
bnVtYmVyIHwKKyAgICAgIGN1cnJlbnRCeXRlcyA9IFtdCisgICAgICA0LnRpbWVzIHsKKyAgICAg
ICAgY3VycmVudEJ5dGVzIDw8IChudW1iZXIgJiAweGZmKQorICAgICAgICBudW1iZXIgPj49IDgK
KyAgICAgIH0KKyAgICAgIGlmIGVuZGlhbm5lc3MgPT0gOmJpZworICAgICAgICBjdXJyZW50Qnl0
ZXMucmV2ZXJzZSEKKyAgICAgIGVuZAorICAgICAgbWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0ZXMK
KyAgICB9CisgICAgCisgICAgRmlsZS5vcGVuKGZpbGUsICJyIikgeworICAgICAgfCBpbnAgfAor
ICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgIGxvb3AgeworICAgICAgICBieXRlID0gaW5w
LmdldGJ5dGUKKyAgICAgICAgYnJlYWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgaWYgYnl0ZSA9PSBt
YWdpY0J5dGVzW3doZXJlSW5NYXJrZXJdCisgICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisg
ICAgICAgICAgaWYgd2hlcmVJbk1hcmtlciA9PSBtYWdpY0J5dGVzLnNpemUKKyAgICAgICAgICAg
ICMgV2UgaGF2ZSBhIG1hdGNoISBJZiB3ZSBoYXZlIG5vdCB5ZXQgcmVhZCB0aGUgZW5kaWFubmVz
cyBtYXJrZXIgYW5kIGluZGV4LAorICAgICAgICAgICAgIyB0aGVuIHJlYWQgdGhvc2Ugbm93OyBv
dGhlcndpc2UgcmVhZCBhbiBvZmZzZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIG5v
dCBpbmRleAorICAgICAgICAgICAgICBpbmRleCA9IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBvZmZzZXRzIDw8IHJlYWRJbnQoZW5kaWFu
bmVzcywgaW5wKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdo
ZXJlSW5NYXJrZXIgPSAwCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICB3
aGVyZUluTWFya2VyID0gMAorICAgICAgICBlbmQKKyAgICAgIH0KKyAgICB9CisgICAgCisgICAg
YnJlYWsgaWYgaW5kZXgKKyAgfQorICAKKyAgcmFpc2UgdW5sZXNzIGluZGV4CisgIAorICBbb2Zm
c2V0cywgaW5kZXhdCitlbmQKKworIworIyBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlz
dCkgLT4gW29mZnNldHMsIHNpemVzXQorIworIyBCdWlsZHMgYSBtYXBwaW5nIGJldHdlZW4gU3Ry
dWN0T2Zmc2V0IG5vZGVzIGFuZCB0aGVpciB2YWx1ZXMuCisjCisKK2RlZiBidWlsZE9mZnNldHNN
YXAoYXN0LCBvZmZzZXRzTGlzdCkKKyAgb2Zmc2V0c01hcCA9IHt9CisgIHNpemVzTWFwID0ge30K
KyAgYXN0T2Zmc2V0c0xpc3QgPSBvZmZzZXRzTGlzdChhc3QpCisgIGFzdFNpemVzTGlzdCA9IHNp
emVzTGlzdChhc3QpCisgIHJhaXNlIHVubGVzcyBhc3RPZmZzZXRzTGlzdC5zaXplICsgYXN0U2l6
ZXNMaXN0LnNpemUgPT0gb2Zmc2V0c0xpc3Quc2l6ZQorICBvZmZzZXRzTGlzdChhc3QpLmVhY2hf
d2l0aF9pbmRleCB7CisgICAgfCBzdHJ1Y3RPZmZzZXQsIGluZGV4IHwKKyAgICBvZmZzZXRzTWFw
W3N0cnVjdE9mZnNldF0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIHNpemVzTGlzdChhc3Qp
LmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBzaXplb2YsIGluZGV4IHwKKyAgICBzaXplc01hcFtz
aXplb2ZdID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQorICBbb2Zmc2V0c01hcCwgc2l6ZXNNYXBd
CitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5y
YgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNl
ci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1ODUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImluc3RydWN0aW9ucyIK
K3JlcXVpcmUgInJlZ2lzdGVycyIKKworY2xhc3MgVG9rZW4KKyAgYXR0cl9yZWFkZXIgOmNvZGVP
cmlnaW4sIDpzdHJpbmcKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cmluZykK
KyAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgICBAc3RyaW5nID0gc3RyaW5nCisgIGVu
ZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIGlmIG90aGVyLmlzX2E/IFRva2VuCisgICAgICBA
c3RyaW5nID09IG90aGVyLnN0cmluZworICAgIGVsc2UKKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgPX4ob3RoZXIpCisgICAgQHN0cmluZyA9fiBvdGhl
cgorICBlbmQKKyAgCisgIGRlZiB0b19zCisgICAgIiN7QHN0cmluZy5pbnNwZWN0fSBhdCBsaW5l
ICN7Y29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisg
ICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfSIK
KyAgICBlbHNlCisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc306ICN7Y29tbWVudFsw
XX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMKKyMgVGhlIGxleGVyLiBUYWtlcyBhIHN0cmlu
ZyBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0b2tlbnMuCisjCisKK2RlZiBsZXgoc3RyKQorICBy
ZXN1bHQgPSBbXQorICBsaW5lTnVtYmVyID0gMQorICB3aGlsZSBub3Qgc3RyLmVtcHR5PworICAg
IGNhc2Ugc3RyCisgICAgd2hlbiAvXEFcIyhbXlxuXSopLworICAgICAgIyBjb21tZW50LCBpZ25v
cmUKKyAgICB3aGVuIC9cQVxuLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVy
LCAkJikKKyAgICAgIGxpbmVOdW1iZXIgKz0gMQorICAgIHdoZW4gL1xBW2EtekEtWl0oW2EtekEt
WjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAg
IHdoZW4gL1xBXC4oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxp
bmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBXyhbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3Vs
dCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEEoWyBcdF0rKS8KKyAg
ICAgICMgd2hpdGVzcGFjZSwgaWdub3JlCisgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSspLwor
ICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAgICB3
aGVuIC9cQTAoWzAtN10rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwg
JCYub2N0LnRvX3MpCisgICAgd2hlbiAvXEEoWzAtOV0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tl
bi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEE6Oi8KKyAgICAgIHJlc3VsdCA8PCBU
b2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFbOixcKFwpXFtcXT1cK1wtKl0v
CisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIGVsc2UKKyAg
ICAgIHJhaXNlICJMZXhlciBlcnJvciBhdCBsaW5lIG51bWJlciAje2xpbmVOdW1iZXJ9LCB1bmV4
cGVjdGVkIHNlcXVlbmNlICN7c3RyWzAuLjIwXS5pbnNwZWN0fSIKKyAgICBlbmQKKyAgICBzdHIg
PSAkfi5wb3N0X21hdGNoCisgIGVuZAorICByZXN1bHQKK2VuZAorCisjCisjIFRva2VuIGlkZW50
aWZpY2F0aW9uLgorIworCitkZWYgaXNSZWdpc3Rlcih0b2tlbikKKyAgdG9rZW4gPX4gUkVHSVNU
RVJfUEFUVEVSTgorZW5kCisKK2RlZiBpc0luc3RydWN0aW9uKHRva2VuKQorICB0b2tlbiA9fiBJ
TlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzS2V5d29yZCh0b2tlbikKKyAgdG9rZW4g
PX4gL1xBKCh0cnVlKXwoZmFsc2UpfChpZil8KHRoZW4pfChlbHNlKXwoZWxzaWYpfChlbmQpfChh
bmQpfChvcil8KG5vdCl8KG1hY3JvKXwoY29uc3QpfChzaXplb2YpfChlcnJvcikpXFovIG9yCisg
ICAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTiBvcgorICAgIHRva2VuID1+IElOU1RSVUNUSU9O
X1BBVFRFUk4KK2VuZAorCitkZWYgaXNJZGVudGlmaWVyKHRva2VuKQorICB0b2tlbiA9fiAvXEFb
YS16QS1aXShbYS16QS1aMC05X10qKVxaLyBhbmQgbm90IGlzS2V5d29yZCh0b2tlbikKK2VuZAor
CitkZWYgaXNMYWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXyhbYS16QS1aMC05X10qKVxaLwor
ZW5kCisKK2RlZiBpc0xvY2FsTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQVwuKFthLXpBLVow
LTlfXSopXFovCitlbmQKKworZGVmIGlzVmFyaWFibGUodG9rZW4pCisgIGlzSWRlbnRpZmllcih0
b2tlbikgb3IgaXNSZWdpc3Rlcih0b2tlbikKK2VuZAorCitkZWYgaXNJbnRlZ2VyKHRva2VuKQor
ICB0b2tlbiA9fiAvXEFbMC05XS8KK2VuZAorCisjCisjIFRoZSBwYXJzZXIuIFRha2VzIGFuIGFy
cmF5IG9mIHRva2VucyBhbmQgcmV0dXJucyBhbiBBU1QuIE1ldGhvZHMKKyMgb3RoZXIgdGhhbiBw
YXJzZSh0b2tlbnMpIGFyZSBub3QgZm9yIHB1YmxpYyBjb25zdW1wdGlvbi4KKyMKKworY2xhc3Mg
UGFyc2VyCisgIGRlZiBpbml0aWFsaXplKHRva2VucykKKyAgICBAdG9rZW5zID0gdG9rZW5zCisg
ICAgQGlkeCA9IDAKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBp
ZiBAdG9rZW5zW0BpZHhdCisgICAgICBAdG9rZW5zW0BpZHhdLnBhcnNlRXJyb3IoKmNvbW1lbnQp
CisgICAgZWxzZQorICAgICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgICAgcmFpc2UgIlBhcnNl
IGVycm9yIGF0IGVuZCBvZiBmaWxlIgorICAgICAgZWxzZQorICAgICAgICByYWlzZSAiUGFyc2Ug
ZXJyb3IgYXQgZW5kIG9mIGZpbGU6ICN7Y29tbWVudFswXX0iCisgICAgICBlbmQKKyAgICBlbmQK
KyAgZW5kCisgIAorICBkZWYgY29uc3VtZShyZWdleHApCisgICAgaWYgcmVnZXhwCisgICAgICBw
YXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID1+IHJlZ2V4cAorICAgIGVsc2UKKyAgICAg
IHBhcnNlRXJyb3IgdW5sZXNzIEBpZHggPT0gQHRva2Vucy5sZW5ndGgKKyAgICBlbmQKKyAgICBA
aWR4ICs9IDEKKyAgZW5kCisgIAorICBkZWYgc2tpcE5ld0xpbmUKKyAgICB3aGlsZSBAdG9rZW5z
W0BpZHhdID09ICJcbiIKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICBlbmQKKyAgCisgIGRl
ZiBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJub3QiCisgICAg
ICBAaWR4ICs9IDEKKyAgICAgIHBhcnNlUHJlZGljYXRlQXRvbQorICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICBy
ZXN1bHQgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tA
aWR4XSA9PSAiKSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgQHRv
a2Vuc1tAaWR4XSA9PSAidHJ1ZSIKKyAgICAgIHJlc3VsdCA9IFRydWUuaW5zdGFuY2UKKyAgICAg
IEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZmFs
c2UiCisgICAgICByZXN1bHQgPSBGYWxzZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAg
ICByZXN1bHQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcmVz
dWx0ID0gU2V0dGluZy5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tA
aWR4XS5zdHJpbmcpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAg
ICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVB
bmQKKyAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0Bp
ZHhdID09ICJhbmQiCisgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNl
UHJlZGljYXRlQXRvbQorICAgICAgcmVzdWx0ID0gQW5kLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQs
IHJpZ2h0KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRp
Y2F0ZQorICAgICMgc29tZSBleGFtcGxlcyBvZiBwcmVjZWRlbmNlOgorICAgICMgbm90IGEgYW5k
IGIgLT4gKG5vdCBhKSBhbmQgYgorICAgICMgYSBhbmQgYiBvciBjIC0+IChhIGFuZCBiKSBvciBj
CisgICAgIyBhIG9yIGIgYW5kIGMgLT4gYSBvciAoYiBhbmQgYykKKyAgICAKKyAgICByZXN1bHQg
PSBwYXJzZVByZWRpY2F0ZUFuZAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIm9yIgorICAg
ICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAx
CisgICAgICBza2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAg
ICAgcmVzdWx0ID0gT3IubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5kCisg
ICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlVmFyaWFibGUKKyAgICBpZiBpc1JlZ2lz
dGVyKEB0b2tlbnNbQGlkeF0pCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID1+IEZQUl9QQVRURVJO
CisgICAgICAgIHJlc3VsdCA9IEZQUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBlbHNlCisgICAgICAgIHJlc3Vs
dCA9IFJlZ2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNb
QGlkeF0uc3RyaW5nKQorICAgICAgZW5kCisgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNb
QGlkeF0pCisgICAgICByZXN1bHQgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJv
cgorICAgIGVuZAorICAgIEBpZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBw
YXJzZUFkZHJlc3Mob2Zmc2V0KQorICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0g
PT0gIlsiCisgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIAor
ICAgICMgVGhyZWUgcG9zc2liaWxpdGllczoKKyAgICAjIFtdICAgICAgIC0+IEFic29sdXRlQWRk
cmVzcworICAgICMgW2FdICAgICAgLT4gQWRkcmVzcworICAgICMgW2EsYl0gICAgLT4gQmFzZUlu
ZGV4IHdpdGggc2NhbGUgPSAxCisgICAgIyBbYSxiLGNdICAtPiBCYXNlSW5kZXgKKyAgICAKKyAg
ICBAaWR4ICs9IDEKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgQGlkeCArPSAx
CisgICAgICByZXR1cm4gQWJzb2x1dGVBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXQpCisg
ICAgZW5kCisgICAgYSA9IHBhcnNlVmFyaWFibGUKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJd
IgorICAgICAgcmVzdWx0ID0gQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgYSwgb2Zmc2V0KQorICAg
IGVsc2UKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAg
ICBAaWR4ICs9IDEKKyAgICAgIGIgPSBwYXJzZVZhcmlhYmxlCisgICAgICBpZiBAdG9rZW5zW0Bp
ZHhdID09ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEs
IGIsIDEsIG9mZnNldCkKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRv
a2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3Ig
dW5sZXNzIFsiMSIsICIyIiwgIjQiLCAiOCJdLm1lbWJlcj8gQHRva2Vuc1tAaWR4XS5zdHJpbmcK
KyAgICAgICAgYyA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kKKyAgICAgICAgQGlkeCArPSAx
CisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAg
IHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgYywgb2Zmc2V0KQorICAg
ICAgZW5kCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAg
ZGVmIHBhcnNlQ29sb25Db2xvbgorICAgIHNraXBOZXdMaW5lCisgICAgY29kZU9yaWdpbiA9IEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmll
ciBAdG9rZW5zW0BpZHhdCisgICAgbmFtZXMgPSBbQHRva2Vuc1tAaWR4XS5zdHJpbmddCisgICAg
QGlkeCArPSAxCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiOjoiCisgICAgICBAaWR4ICs9
IDEKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisg
ICAgICBuYW1lcyA8PCBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgQGlkeCArPSAxCisgICAg
ZW5kCisgICAgcmFpc2UgaWYgbmFtZXMuZW1wdHk/CisgICAgW2NvZGVPcmlnaW4sIG5hbWVzXQor
ICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgc2tpcE5ld0xpbmUKKyAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICItIgorICAgICAgQGlkeCArPSAxCisgICAgICBOZWdJbW1l
ZGlhdGUubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHBhcnNlRXhwcmVzc2lvbkF0
b20pCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9r
ZW5zW0BpZHhdID09ICIpIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNp
ZiBpc0ludGVnZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gSW1tZWRpYXRlLm5ldyhA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kpCisgICAg
ICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5z
W0BpZHhdCisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAg
aWYgbmFtZXMuc2l6ZSA+IDEKKyAgICAgICAgU3RydWN0T2Zmc2V0LmZvckZpZWxkKGNvZGVPcmln
aW4sIG5hbWVzWzAuLi0yXS5qb2luKCc6OicpLCBuYW1lc1stMV0pCisgICAgICBlbHNlCisgICAg
ICAgIFZhcmlhYmxlLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXNbMF0pCisgICAgICBlbmQKKyAg
ICBlbHNpZiBpc1JlZ2lzdGVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHBhcnNlVmFyaWFibGUKKyAg
ICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJzaXplb2YiCisgICAgICBAaWR4ICs9IDEKKyAgICAg
IGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBTaXplb2YuZm9yTmFt
ZShjb2RlT3JpZ2luLCBuYW1lcy5qb2luKCc6OicpKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJy
b3IKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uTXVsCisgICAgc2tp
cE5ld0xpbmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgd2hpbGUgQHRv
a2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBNdWxJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0Bp
ZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbkF0b20pCisgICAgICBl
bHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5k
CisgIAorICBkZWYgY291bGRCZUV4cHJlc3Npb24KKyAgICBAdG9rZW5zW0BpZHhdID09ICItIiBv
ciBAdG9rZW5zW0BpZHhdID09ICJzaXplb2YiIG9yIGlzSW50ZWdlcihAdG9rZW5zW0BpZHhdKSBv
ciBpc1ZhcmlhYmxlKEB0b2tlbnNbQGlkeF0pIG9yIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgIGVu
ZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbgorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0
ID0gcGFyc2VFeHByZXNzaW9uTXVsCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKyIgb3Ig
QHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIisiCisgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBBZGRJbW1lZGlhdGVzLm5ldyhAdG9rZW5z
W0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkKKyAgICAg
IGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBy
ZXN1bHQgPSBTdWJJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCBy
ZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAg
ICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZU9wZXJh
bmQoY29tbWVudCkKKyAgICBpZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgICAgZXhwciA9IHBhcnNl
RXhwcmVzc2lvbgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgICAgcGFyc2VB
ZGRyZXNzKGV4cHIpCisgICAgICBlbHNlCisgICAgICAgIGV4cHIKKyAgICAgIGVuZAorICAgIGVs
c2lmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICBwYXJzZUFkZHJlc3MoSW1tZWRpYXRlLm5l
dyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIDApKQorICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vu
c1tAaWR4XQorICAgICAgcmVzdWx0ID0gTGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbiwgTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tl
bnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxz
aWYgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IExvY2FsTGFiZWxS
ZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgTG9jYWxMYWJlbC5mb3JOYW1l
KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQorICAgICAg
QGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yKGNvbW1l
bnQpCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICBz
a2lwTmV3TGluZQorICAgIGNvbnN1bWUoL1xBXChcWi8pCisgICAgdmFyaWFibGVzID0gW10KKyAg
ICBsb29wIHsKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIp
IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIGlzSWRlbnRp
ZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICB2YXJpYWJsZXMgPDwgVmFyaWFibGUuZm9yTmFt
ZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4
XSA9PSAiKSIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBicmVhaworICAgICAgICBl
bHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBl
bHNlCisgICAgICAgICAgcGFyc2VFcnJvcgorICAgICAgICBlbmQKKyAgICAgIGVsc2UKKyAgICAg
ICAgcGFyc2VFcnJvcgorICAgICAgZW5kCisgICAgfQorICAgIHZhcmlhYmxlcworICBlbmQKKyAg
CisgIGRlZiBwYXJzZVNlcXVlbmNlKGZpbmFsLCBjb21tZW50KQorICAgIGZpcnN0Q29kZU9yaWdp
biA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIGxpc3QgPSBbXQorICAgIGxvb3Agewor
ICAgICAgaWYgKEBpZHggPT0gQHRva2Vucy5sZW5ndGggYW5kIG5vdCBmaW5hbCkgb3IgKGZpbmFs
IGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICBicmVhaworICAgICAgZWxzaWYg
QHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICMgaWdub3JlCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiY29uc3QiCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc1ZhcmlhYmxlIEB0b2tlbnNbQGlkeF0KKyAg
ICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdp
biwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJz
ZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI9IgorICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgdmFsdWUgPSBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBjb25zdCAje3Zhcmlh
YmxlLm5hbWV9IikKKyAgICAgICAgbGlzdCA8PCBDb25zdERlY2wubmV3KEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9
PSAiZXJyb3IiCisgICAgICAgIGxpc3QgPDwgRXJyb3IubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbikKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJp
ZiIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcHJlZGljYXRlID0gcGFy
c2VQcmVkaWNhdGUKKyAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAg
ICBza2lwTmV3TGluZQorICAgICAgICBpZlRoZW5FbHNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9y
aWdpbiwgcHJlZGljYXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlc
Wi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAg
IGxpc3QgPDwgaWZUaGVuRWxzZQorICAgICAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJlbHNp
ZiIKKyAgICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBwcmVkaWNh
dGUgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxa
LykKKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIGVsc2VDYXNlID0gSWZUaGVuRWxz
ZS5uZXcoY29kZU9yaWdpbiwgcHJlZGljYXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8KGVu
ZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwi
IikpCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IGVsc2VDYXNlCisgICAgICAgICAg
aWZUaGVuRWxzZSA9IGVsc2VDYXNlCisgICAgICAgIGVuZAorICAgICAgICBpZiBAdG9rZW5zW0Bp
ZHhdID09ICJlbHNlIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGlmVGhlbkVsc2Uu
ZWxzZUNhc2UgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBlbHNl
IGNhc2UgZm9yIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpCisgICAgICAgICAgQGlkeCArPSAx
CisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhd
ID09ICJlbmQiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVuZAorICAgICAgZWxzaWYg
QHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5lCisg
ICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAg
ICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICAgICAgYm9keSA9IHBhcnNl
U2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIG1hY3JvICN7bmFtZX0iKQorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgbGlzdCA8PCBNYWNyby5uZXcoY29kZU9yaWdpbiwgbmFt
ZSwgdmFyaWFibGVzLCBib2R5KQorICAgICAgZWxzaWYgaXNJbnN0cnVjdGlvbiBAdG9rZW5zW0Bp
ZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAg
ICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBA
dG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0
aW9uLCBhbmQgaXQncyB0aGUgbGFzdCBvbmUuCisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxz
aWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1
Y3Rpb24uCisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFt
ZSwgW10pCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICAjIEl0
J3MgZGVmaW5pdGVseSBhbiBpbnN0cnVjdGlvbiwgYW5kIGl0IGhhcyBhdCBsZWFzdCBvbmUgb3Bl
cmFuZC4KKyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9
IGZhbHNlCisgICAgICAgICAgbG9vcCB7CisgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9w
ZXJhbmQoIndoaWxlIGluc2lkZSBvZiBpbnN0cnVjdGlvbiAje25hbWV9IikKKyAgICAgICAgICAg
IGlmIChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0
b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5z
dHJ1Y3Rpb24gYW5kIG9mIHRoZSBzZXF1ZW5jZS4KKyAgICAgICAgICAgICAgZW5kT2ZTZXF1ZW5j
ZSA9IHRydWUKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gIiwiCisgICAgICAgICAgICAgICMgSGFzIGFub3RoZXIgb3BlcmFuZC4KKyAgICAg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJc
biIKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbi4KKyAgICAgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIGEgY29tbWEsIG5ld2xpbmUsIG9yICN7
ZmluYWx9IGFmdGVyICN7b3BlcmFuZHMubGFzdC5kdW1wfSIpCisgICAgICAgICAgICBlbmQKKyAg
ICAgICAgICB9CisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwg
bmFtZSwgb3BlcmFuZHMpCisgICAgICAgICAgaWYgZW5kT2ZTZXF1ZW5jZQorICAgICAgICAgICAg
YnJlYWsKKyAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBpc0lkZW50aWZp
ZXIgQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgICAgICAjIE1hY3Jv
IGludm9jYXRpb24uCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgb3BlcmFuZHMgPSBb
XQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
KSIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxv
b3AgeworICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5z
W0BpZHhdID09ICJtYWNybyIKKyAgICAgICAgICAgICAgICAjIEl0J3MgYSBtYWNybyBsYW1iZGEh
CisgICAgICAgICAgICAgICAgY29kZU9yaWdpbklubmVyID0gQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgdmFyaWFibGVz
ID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICAgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVl
bmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBhbm9ueW1vdXMgbWFjcm8gcGFzc2VkIGFz
IGFyZ3VtZW50IHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgICAgIG9wZXJhbmRzIDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luSW5uZXIsIG5pbCwgdmFy
aWFibGVzLCBib2R5KQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3BlcmFu
ZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gY2FsbCB0byAje25hbWV9
IikKKyAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAg
ICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICAgICAgQGlkeCArPSAx
CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4
XSA9PSAiLCIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IgIlVuZXhwZWN0ZWQgI3tAdG9rZW5zW0BpZHhdLnN0
cmluZy5pbnNwZWN0fSB3aGlsZSBwYXJzaW5nIGludm9jYXRpb24gb2YgbWFjcm8gI3tuYW1lfSIK
KyAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICB9CisgICAgICAgICAgZW5kCisgICAgICAg
ICAgbGlzdCA8PCBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAg
ICAgICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0ZWQgXCIoXCIgYWZ0ZXIgI3tu
YW1lfSIKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0gb3Ig
aXNMb2NhbExhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0g
PT0gIjoiCisgICAgICAgICMgSXQncyBhIGxhYmVsLgorICAgICAgICBpZiBpc0xhYmVsIG5hbWUK
KyAgICAgICAgICBsaXN0IDw8IExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAg
ICAgZWxzZQorICAgICAgICAgIGxpc3QgPDwgTG9jYWxMYWJlbC5mb3JOYW1lKGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgICAgIGVuZAorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2UKKyAgICAg
ICAgcGFyc2VFcnJvciAiRXhwZWN0aW5nIHRlcm1pbmFsICN7ZmluYWx9ICN7Y29tbWVudH0iCisg
ICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGZpcnN0Q29kZU9yaWdpbiwgbGlzdCkK
KyAgZW5kCitlbmQKKworZGVmIHBhcnNlKHRva2VucykKKyAgcGFyc2VyID0gUGFyc2VyLm5ldyh0
b2tlbnMpCisgIHBhcnNlci5wYXJzZVNlcXVlbmNlKG5pbCwgIiIpCitlbmQKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1OSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworR1BSUyA9CisgIFsKKyAgICJ0MCIsCisgICAidDEiLAorICAgInQyIiwKKyAgICJ0
MyIsCisgICAidDQiLAorICAgImNmciIsCisgICAiYTAiLAorICAgImExIiwKKyAgICJyMCIsCisg
ICAicjEiLAorICAgInNwIgorICBdCisKK0ZQUlMgPQorICBbCisgICAiZnQwIiwKKyAgICJmdDEi
LAorICAgImZ0MiIsCisgICAiZnQzIiwKKyAgICJmdDQiLAorICAgImZ0NSIsCisgICAiZmEwIiwK
KyAgICJmYTEiLAorICAgImZhMiIsCisgICAiZmEzIiwKKyAgICJmciIKKyAgXQorCitSRUdJU1RF
UlMgPSBHUFJTICsgRlBSUworCitHUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEdQ
UlMuam9pbignKXwoJykgKyAnKSlcXFonKQorRlBSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEo
KCcgKyBGUFJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKKworUkVHSVNURVJfUEFUVEVSTiA9IFJl
Z2V4cC5uZXcoJ1xcQSgoJyArIFJFR0lTVEVSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJw
YXJzZXIiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKKyMKKyMgY29tcHV0ZVNldHRpbmdzQ29tYmlu
YXRpb25zKGFzdCkgLT4gc2V0dGluZ3NDb21iaWF0aW9ucworIworIyBDb21wdXRlcyBhbiBhcnJh
eSBvZiBzZXR0aW5ncyBtYXBzLCB3aGVyZSBhIHNldHRpbmdzIG1hcCBjb25zdGl0dXRlcworIyBh
IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhc3NlbWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhl
IG1hcAorIyBjb250YWlucyBrZXkgdmFsdWUgcGFpcnMgd2hlcmUga2V5cyBhcmUgc2V0dGluZ3Mg
bmFtZXMgKHN0cmluZ3MpIGFuZAorIyB0aGUgdmFsdWVzIGFyZSBib29sZWFucyAodHJ1ZSBmb3Ig
ZW5hYmxlZCwgZmFsc2UgZm9yIGRpc2FibGVkKS4KKyMKKworZGVmIGNvbXB1dGVTZXR0aW5nc0Nv
bWJpbmF0aW9ucyhhc3QpCisgIHNldHRpbmdzQ29tYmluYXRpb25zID0gW10KKyAgCisgIGRlZiBz
ZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG1hcFNvRmFyLCByZW1haW5p
bmcpCisgICAgaWYgcmVtYWluaW5nLmVtcHR5PworICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMg
PDwgbWFwU29GYXIKKyAgICAgIHJldHVybgorICAgIGVuZAorICAgIAorICAgIG5ld01hcCA9IG1h
cFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gdHJ1ZQorICAgIHNldHRpbmdz
Q29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFd
KQorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdb
MF1dID0gZmFsc2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMs
IG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0
b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIHt9LCAoYXN0LmZpbHRlcihTZXR0aW5nKS51bmlxLmNv
bGxlY3R7fHZ8IHYubmFtZX0gKyBbIlg4NiIsICJBUk12NyJdKS51bmlxKQorICAKKyAgc2V0dGlu
Z3NDb21iaW5hdGlvbnMKK2VuZAorCisjCisjIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3Ms
IGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8
IC4uLiB9CisjCisjIERldGVybWluZXMgaWYgdGhlIHNldHRpbmdzIGNvbWJpbmF0aW9uIGlzIHZh
bGlkLCBhbmQgaWYgc28sIGNhbGxzCisjIHRoZSBibG9jayB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5
b3UgbmVlZCB0byBnZW5lcmF0ZSBjb2RlLgorIworCitkZWYgZm9yU2V0dGluZ3MoY29uY3JldGVT
ZXR0aW5ncywgYXN0KQorICAjIENoZWNrIHdoaWNoIGFyY2hpdGVjdHVyZXMgdGhpcyBjb21iaW5h
dG9yIGNsYWltcyB0byBzdXBwb3J0LgorICBudW1DbGFpbWVkQmFja2VuZHMgPSAwCisgIHNlbGVj
dGVkQmFja2VuZCA9IG5pbAorICBCQUNLRU5EUy5lYWNoIHsKKyAgICB8IGJhY2tlbmQgfAorICAg
IGlzU3VwcG9ydGVkID0gY29uY3JldGVTZXR0aW5nc1tiYWNrZW5kXQorICAgIHJhaXNlIHVubGVz
cyBpc1N1cHBvcnRlZCAhPSBuaWwKKyAgICBudW1DbGFpbWVkQmFja2VuZHMgKz0gaWYgaXNTdXBw
b3J0ZWQgdGhlbiAxIGVsc2UgMCBlbmQKKyAgICBpZiBpc1N1cHBvcnRlZAorICAgICAgc2VsZWN0
ZWRCYWNrZW5kID0gYmFja2VuZAorICAgIGVuZAorICB9CisgIAorICByZXR1cm4gaWYgbnVtQ2xh
aW1lZEJhY2tlbmRzID4gMQorICAKKyAgIyBSZXNvbHZlIHRoZSBBU1QgZG93biB0byBhIGxvdy1s
ZXZlbCBmb3JtIChubyBtYWNyb3Mgb3IgY29uZGl0aW9uYWxzKS4KKyAgbG93TGV2ZWxBU1QgPSBh
c3QucmVzb2x2ZVNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICB5aWVsZCBjb25jcmV0
ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgc2VsZWN0ZWRCYWNrZW5kCitlbmQKKworIworIyBmb3JF
YWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRp
bmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0KKyMKKyMgZm9yRWFjaFZhbGlkU2V0dGlu
Z3NDb21iaW5hdGlvbihhc3QsIHNldHRpbmdzQ29tYmluYXRpb25zKSB7CisjICAgICB8IGNvbmNy
ZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBFeGVjdXRlcyB0
aGUgZ2l2ZW4gYmxvY2sgZm9yIGVhY2ggdmFsaWQgc2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhl
CisjIHNldHRpbmdzIG1hcC4gVGhlIGFzdCBwYXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2
ZWQKKyMgKGFzdC5yZXNvbHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4KKyMKKyMgVGhlIGZpcnN0
IGZvcm0gd2lsbCBjYWxsIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIGZvciB5b3Uu
CisjCisKK2RlZiBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgKm9wdGlvbmFs
U2V0dGluZ3NDb21iaW5hdGlvbnMpCisgIHJhaXNlIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5h
dGlvbnMuc2l6ZSA+IDEKKyAgCisgIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuZW1w
dHk/CisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlv
bnMoYXN0KQorICBlbHNlCisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBvcHRpb25hbFNldHRp
bmdzQ29tYmlhdGlvbnNbMF0KKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucy5lYWNo
X3dpdGhfaW5kZXggeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgaW5kZXggfAorICAgIGZvclNl
dHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgeworICAgICAgfCBjb25jcmV0ZVNldHRpbmdz
XywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywg
bG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgfQorICB9CitlbmQKKworIworIyBjcHBT
ZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyMKKyMgUmV0dXJucyB0aGUgQysrIGNvZGUg
dXNlZCB0byB0ZXN0IGlmIHdlIGFyZSBpbiBhIGNvbmZpZ3VyYXRpb24gdGhhdAorIyBjb3JyZXNw
b25kcyB0byB0aGUgZ2l2ZW4gY29uY3JldGUgc2V0dGluZ3MuCisjCisKK2RlZiBjcHBTZXR0aW5n
c1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgIiNpZiAiICsgY29uY3JldGVTZXR0aW5ncy50b19h
LmNvbGxlY3R7CisgICAgfCBwYWlyIHwKKyAgICAoaWYgcGFpclsxXQorICAgICAgICIiCisgICAg
IGVsc2UKKyAgICAgICAiISIKKyAgICAgZW5kKSArICJPRkZMSU5FX0FTTV8iICsgcGFpclswXQor
ICB9LmpvaW4oIiAmJiAiKQorZW5kCisKKyMKKyMgaXNBU1RFcnJvbmVvdXMoYXN0KQorIworIyBU
ZXN0cyB0byBzZWUgaWYgdGhlIEFTVCBjbGFpbXMgdGhhdCB0aGVyZSBpcyBhbiBlcnJvciAtIGku
ZS4gaWYgdGhlCisjIHVzZXIncyBjb2RlLCBhZnRlciBzZXR0aW5ncyByZXNvbHV0aW9uLCBoYXMg
RXJyb3Igbm9kZXMuCisjCisKK2RlZiBpc0FTVEVycm9uZW91cyhhc3QpCisgIG5vdCBhc3QuZmls
dGVyKEVycm9yKS5lbXB0eT8KK2VuZAorCisjCisjIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3Jl
dGVTZXR0aW5ncykKKyMKKyMgRW1pdHMgYSBjaGVjayB0aGF0IGFzc2VydHMgdGhhdCB3ZSdyZSB1
c2luZyB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbi4KKyMKKworZGVmIGFzc2VydENvbmZpZ3VyYXRp
b24oY29uY3JldGVTZXR0aW5ncykKKyAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25j
cmV0ZVNldHRpbmdzKQorICAkb3V0cHV0LnB1dHMgIiNlbHNlIgorICAkb3V0cHV0LnB1dHMgIiNl
cnJvciBcIkNvbmZpZ3VyYXRpb24gbWlzbWF0Y2guXCIiCisgICRvdXRwdXQucHV0cyAiI2VuZGlm
IgorZW5kCisKKyMKKyMgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywg
YXN0LCBiYWNrZW5kKSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCB8
IC4uLiB9CisjCisjIEVtaXRzIGFsbCByZWxldmFudCBndWFyZHMgdG8gc2VlIGlmIHRoZSBjb25m
aWd1cmF0aW9uIGhvbGRzIGFuZAorIyBjYWxscyB0aGUgYmxvY2sgaWYgdGhlIGNvbmZpZ3VyYXRp
b24gaXMgbm90IGVycm9uZW91cy4KKyMKKworZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNv
bmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkKKyAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdz
VGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAKKyAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAg
ICRvdXRwdXQucHV0cyAiI2Vycm9yIFwiSW52YWxpZCBjb25maWd1cmF0aW9uLlwiIgorICBlbHNp
ZiBub3QgV09SS0lOR19CQUNLRU5EUy5pbmNsdWRlPyBiYWNrZW5kCisgICAgJG91dHB1dC5wdXRz
ICIjZXJyb3IgXCJUaGlzIGJhY2tlbmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UK
KyAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICAk
b3V0cHV0LnB1dHMgIiNlbmRpZiIKK2VuZAorCisjCisjIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0
aW9ucyhhc3QpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRl
eCB8IC4uLiB9CisjCisjIEVtaXRzIGd1YXJkIGNvZGVzIGZvciBhbGwgdmFsaWQgY29uZmlndXJh
dGlvbnMsIGFuZCBjYWxscyB0aGUgYmxvY2sKKyMgZm9yIHRob3NlIGNvbmZpZ3VyYXRpb25zIHRo
YXQgYXJlIHZhbGlkIGFuZCBub3QgZXJyb25lb3VzLgorIworCitkZWYgZW1pdENvZGVJbkFsbENv
bmZpZ3VyYXRpb25zKGFzdCkKKyAgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3Qp
IHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleCB8
CisgICAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAg
IHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAg
ICRvdXRwdXQucHV0cyAiI2VuZGlmIgorICB9CitlbmQKKworCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzQyIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CityZXF1aXJlICJhc3QiCisKKyMKKyMgbm9kZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisj
CisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBJZlRoZW5FbHNl
IG5vZGVzIGJ5CisjIHN1YnN0aXR1dGluZyBjb25jcmV0ZSBib29sZWFuIHZhbHVlcyBmb3IgZWFj
aCBTZXR0aW5nLgorIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlCisg
IGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitj
bGFzcyBGYWxzZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAg
ZW5kCitlbmQKKworY2xhc3MgU2V0dGluZworICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdz
KQorICAgIHNldHRpbmdzW0BuYW1lXS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kCisg
IGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykudmFsdWUgYW5kIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZh
bHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgT3IKKyAgZGVmIHJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykKKyAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBv
ciBAcmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAor
ZW5kCisKK2NsYXNzIE5vdAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChu
b3QgQGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQK
K2VuZAorCitjbGFzcyBJZlRoZW5FbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
CisgICAgaWYgQHByZWRpY2F0ZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlCisgICAg
ICBAdGhlbkNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVsc2UKKyAgICAgIEBl
bHNlQ2FzZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZW5kCisgIGVuZAorZW5kCisK
K2NsYXNzIFNlcXVlbmNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgbmV3
TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaXRlbSA9
IGl0ZW0ucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgaWYgaXRlbS5pc19hPyBTZXF1
ZW5jZQorICAgICAgICBuZXdMaXN0ICs9IGl0ZW0ubGlzdAorICAgICAgZWxzZQorICAgICAgICBu
ZXdMaXN0IDw8IGl0ZW0KKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9y
aWdpbiwgbmV3TGlzdCkKKyAgZW5kCitlbmQKKworIworIyBub2RlLmRlbWFjcm9pZnkobWFjcm9z
KQorIyBub2RlLnN1YnN0aXR1dGUobWFwcGluZykKKyMKKyMgZGVtYWNyb2lmeSgpIGNvbnN0cnVj
dHMgYSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgTWFjcm8KKyMgbm9kZXMsIHdoaWxl
IHN1YnN0aXR1dGUoKSByZXBsYWNlcyBWYXJpYWJsZSBub2RlcyB3aXRoIHRoZSBnaXZlbgorIyBu
b2RlcyBpbiB0aGUgbWFwcGluZy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgZGVtYWNyb2lmeSht
YWNyb3MpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5k
ZW1hY3JvaWZ5KG1hY3JvcykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGUobWFw
cGluZykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1
YnN0aXR1dGUobWFwcGluZykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGVMYWJl
bHMobWFwcGluZykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNo
aWxkLnN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNz
IE1hY3JvCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbXlNYXBwaW5nID0ge30KKyAg
ICBtYXBwaW5nLmVhY2hfcGFpciB7CisgICAgICB8IGtleSwgdmFsdWUgfAorICAgICAgdW5sZXNz
IEB2YXJpYWJsZXMuaW5jbHVkZT8ga2V5CisgICAgICAgIG15TWFwcGluZ1trZXldID0gdmFsdWUK
KyAgICAgIGVuZAorICAgIH0KKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAg
ICAgIGNoaWxkLnN1YnN0aXR1dGUobXlNYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xh
c3MgVmFyaWFibGUKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3Nl
bGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAor
ICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1h
cHBpbmcpCisgICAgaWYgbWFwcGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVs
c2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAg
ZGVmIHN1YnN0aXR1dGUoY29uc3RhbnRzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIG15Q29uc3Rh
bnRzID0gY29uc3RhbnRzLmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAg
ICAgIGlmIGl0ZW0uaXNfYT8gQ29uc3REZWNsCisgICAgICAgIG15Q29uc3RhbnRzW2l0ZW0udmFy
aWFibGVdID0gaXRlbS52YWx1ZS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZWxzZQor
ICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgIGVu
ZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5kCisg
IAorICBkZWYgcmVuYW1lTGFiZWxzKGNvbW1lbnQpCisgICAgbWFwcGluZyA9IHt9CisgICAgCisg
ICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBMb2Nh
bExhYmVsCisgICAgICAgIG1hcHBpbmdbaXRlbV0gPSBMb2NhbExhYmVsLnVuaXF1ZShpZiBjb21t
ZW50IHRoZW4gY29tbWVudCArICJfIiBlbHNlICIiIGVuZCArIGl0ZW0uY2xlYW5OYW1lKQorICAg
ICAgZW5kCisgICAgfQorICAgIAorICAgIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgZW5k
CisgIAorICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbXlNYWNyb3MgPSBtYWNyb3MuZHVw
CisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBN
YWNybworICAgICAgICBteU1hY3Jvc1tpdGVtLm5hbWVdID0gaXRlbQorICAgICAgZW5kCisgICAg
fQorICAgIG5ld0xpc3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAg
ICAgIGlmIGl0ZW0uaXNfYT8gTWFjcm8KKyAgICAgICAgIyBJZ25vcmUuCisgICAgICBlbHNpZiBp
dGVtLmlzX2E/IE1hY3JvQ2FsbAorICAgICAgICBtYXBwaW5nID0ge30KKyAgICAgICAgbXlNeU1h
Y3JvcyA9IG15TWFjcm9zLmR1cAorICAgICAgICByYWlzZSAiQ291bGQgbm90IGZpbmQgbWFjcm8g
I3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG15TWFjcm9z
W2l0ZW0ubmFtZV0KKyAgICAgICAgcmFpc2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBj
YWxsIHRvICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBp
dGVtLm9wZXJhbmRzLnNpemUgPT0gbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQor
ICAgICAgICBpdGVtLm9wZXJhbmRzLnNpemUudGltZXMgeworICAgICAgICAgIHwgaWR4IHwKKyAg
ICAgICAgICBpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gVmFyaWFibGUgYW5kIG15TWFjcm9z
W2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jv
c1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbXlNYWNyb3NbaXRlbS5vcGVyYW5k
c1tpZHhdLm5hbWVdCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFy
aWFibGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNpZiBpdGVtLm9wZXJhbmRzW2lk
eF0uaXNfYT8gTWFjcm8KKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1l
XS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAg
bWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVd
LnZhcmlhYmxlc1tpZHhdXSA9IG5pbAorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVt
Lm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgIGVu
ZAorICAgICAgICB9CisgICAgICAgIG5ld0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5
LnN1YnN0aXR1dGUobWFwcGluZykuZGVtYWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMo
aXRlbS5uYW1lKS5saXN0CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5kZW1h
Y3JvaWZ5KG15TWFjcm9zKQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2Rl
T3JpZ2luLCBuZXdMaXN0KS5zdWJzdGl0dXRlKHt9KQorICBlbmQKK2VuZAorCisjCisjIG5vZGUu
cmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisjCisjIENvbnN0cnVjdCBhIG5ldyBBU1Qg
dGhhdCBoYXMgb2Zmc2V0IHZhbHVlcyBpbnN0ZWFkIG9mIHN5bWJvbGljCisjIG9mZnNldHMuCisj
CisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAg
IG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZU9mZnNl
dHMob2Zmc2V0cywgc2l6ZXMpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZz
ZXQKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlmIG9mZnNldHNb
c2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0c1tzZWxmXSkKKyAg
ICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZgor
ICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgc2l6ZXNbc2VsZl0K
KyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgc2l6ZXNbc2VsZl0pCisgICAgZWxzZQor
ICAgICAgcHV0cyAiQ291bGQgbm90IGZpbmQgI3tzZWxmLmluc3BlY3R9IGluICN7c2l6ZXMua2V5
cy5pbnNwZWN0fSIKKyAgICAgIHB1dHMgInNpemVzID0gI3tzaXplcy5pbnNwZWN0fSIKKyAgICAg
IHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIworIyBub2RlLmZvbGQKKyMKKyMgUmVzb2x2
ZSBjb25zdGFudCByZWZlcmVuY2VzIGFuZCBjb21wdXRlIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMu
CisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIGZvbGQKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8
IGNoaWxkIHwKKyAgICAgIGNoaWxkLmZvbGQKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIEFk
ZEltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmln
aHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1l
ZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAg
IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgKyBAcmlnaHQudmFsdWUpCisg
IGVuZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9
IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVu
bGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0
LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFs
dWUgLSBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMKKyAg
ZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9s
ZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1
cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXco
Y29kZU9yaWdpbiwgQGxlZnQudmFsdWUgKiBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2Ns
YXNzIE5lZ0ltbWVkaWF0ZQorICBkZWYgZm9sZAorICAgIEBjaGlsZCA9IEBjaGlsZC5mb2xkCisg
ICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBjaGlsZC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlh
dGUubmV3KGNvZGVPcmlnaW4sIC1AY2hpbGQudmFsdWUpCisgIGVuZAorZW5kCisKKyMKKyMgbm9k
ZS5yZXNvbHZlQWZ0ZXJTZXR0aW5ncyhvZmZzZXRzLCBzaXplcykKKyMKKyMgQ29tcGlsZSBhc3Nl
bWJseSBhZ2FpbnN0IGEgc2V0IG9mIG9mZnNldHMuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJl
c29sdmUob2Zmc2V0cywgc2l6ZXMpCisgICAgZGVtYWNyb2lmeSh7fSkucmVzb2x2ZU9mZnNldHMo
b2Zmc2V0cywgc2l6ZXMpLmZvbGQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NzMgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAg
ZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAi
LCAicjAiLCAidDEiLCAiYTEiLCAicjEiLCAidDIiLCAidDMiCisgICAgICB0cnVlCisgICAgd2hl
biAidDQiLCAiY2ZyIgorICAgICAgZmFsc2UKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVu
ZAorICBlbmQKKyAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgY2FzZSBuYW1lCisgICAg
d2hlbiAidDAiLCAiYTAiLCAicjAiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUK
KyAgICAgICAgIiVhbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVheCIKKyAgICAgIHdo
ZW4gOmludAorICAgICAgICAiJWVheCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAg
IGVuZAorICAgIHdoZW4gInQxIiwgImExIiwgInIxIgorICAgICAgY2FzZSBraW5kCisgICAgICB3
aGVuIDpieXRlCisgICAgICAgICIlZGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZHgi
CisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlZHgiCisgICAgICBlbHNlCisgICAgICAgIHJh
aXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MiIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hl
biA6Ynl0ZQorICAgICAgICAiJWNsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWN4Igor
ICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWN4IgorICAgICAgZWxzZQorICAgICAgICByYWlz
ZQorICAgICAgZW5kCisgICAgd2hlbiAidDMiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4g
OmJ5dGUKKyAgICAgICAgIiVibCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVieCIKKyAg
ICAgIHdoZW4gOmludAorICAgICAgICAiJWVieCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UK
KyAgICAgIGVuZAorICAgIHdoZW4gInQ0IgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpi
eXRlCisgICAgICAgICIlc2lsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNpIgorICAg
ICAgd2hlbiA6aW50CisgICAgICAgICIlZXNpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQor
ICAgICAgZW5kCisgICAgd2hlbiAiY2ZyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpi
eXRlCisgICAgICAgICIlZGlsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWRpIgorICAg
ICAgd2hlbiA6aW50CisgICAgICAgICIlZWRpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQor
ICAgICAgZW5kCisgICAgd2hlbiAic3AiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5
dGUKKyAgICAgICAgIiVzcGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc3AiCisgICAg
ICB3aGVuIDppbnQKKyAgICAgICAgIiVlc3AiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisg
ICAgICBlbmQKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4
NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2Vu
ZAorCitjbGFzcyBGUFJlZ2lzdGVySUQKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICByYWlz
ZSB1bmxlc3Mga2luZCA9PSA6ZG91YmxlCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwg
ImZhMCIsICJmciIKKyAgICAgICIleG1tMCIKKyAgICB3aGVuICJmdDEiLCAiZmExIgorICAgICAg
IiV4bW0xIgorICAgIHdoZW4gImZ0MiIsICJmYTIiCisgICAgICAiJXhtbTIiCisgICAgd2hlbiAi
ZnQzIiwgImZhMyIKKyAgICAgICIleG1tMyIKKyAgICB3aGVuICJmdDQiCisgICAgICAiJXhtbTQi
CisgICAgd2hlbiAiZnQ1IgorICAgICAgIiV4bW01IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisg
ICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3Bl
cmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgeDg2T3Bl
cmFuZChraW5kKQorICAgICIkI3t2YWx1ZX0iCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQo
a2luZCkKKyAgICAiI3t2YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVm
IHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJh
bmQoa2luZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSki
CisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChr
aW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgc3VwcG9ydHM4Qml0
T25YODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAg
ICIje29mZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9LCAje2luZGV4Lng4Nk9w
ZXJhbmQoOmludCl9LCAje3NjYWxlfSkiCisgIGVuZAorCisgIGRlZiB4ODZDYWxsT3BlcmFuZChr
aW5kKQorICAgICIqI3t4ODZvcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJz
b2x1dGVBZGRyZXNzCisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisg
ICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7YWRkcmVzcy52YWx1ZX0iCisgIGVu
ZAorCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3thZGRyZXNzLnZhbHVlfSIK
KyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAgZGVmIHg4NkxhYmVsCisgICAg
c2FuaXRpemVMYWJlbE5hbWUobmFtZSkKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5k
KQorICAgIHg4NkxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UK
KyAgZGVmIHg4NkxhYmVsCisgICAgIkxfb2ZmbGluZWFzbV8iK25hbWVbMS4uLTFdCisgIGVuZAor
ICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICB4ODZMYWJlbAorICBlbmQKK2VuZAorCitj
bGFzcyBJbnN0cnVjdGlvbgorICBkZWYgeDg2T3BlcmFuZHMoKmtpbmRzKQorICAgIHJhaXNlIHVu
bGVzcyBraW5kcy5zaXplID09IG9wZXJhbmRzLnNpemUKKyAgICByZXN1bHQgPSBbXQorICAgIGtp
bmRzLnNpemUudGltZXMgeworICAgICAgfCBpZHggfAorICAgICAgcmVzdWx0IDw8IG9wZXJhbmRz
W2lkeF0ueDg2T3BlcmFuZChraW5kc1tpZHhdKQorICAgIH0KKyAgICByZXN1bHQuam9pbigiLCAi
KQorICBlbmQKKworICBkZWYgeDg2U3VmZml4KGtpbmQpCisgICAgY2FzZSBraW5kCisgICAgd2hl
biA6Ynl0ZQorICAgICAgImIiCisgICAgd2hlbiA6aGFsZgorICAgICAgInciCisgICAgd2hlbiA6
aW50CisgICAgICAibCIKKyAgICB3aGVuIDpkb3VibGUKKyAgICAgICJzZCIKKyAgICBlbHNlCisg
ICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcFdpdGhOdW1P
cGVyYW5kcyhvcGNvZGUsIGtpbmQsIG51bU9wZXJhbmRzKQorICAgIGlmIG51bU9wZXJhbmRzID09
IDMKKyAgICAgIGlmIG9wZXJhbmRzWzBdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0
cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5k
c1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRzWzFdID09IG9wZXJh
bmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVs
c2UKKyAgICAgICAgJGFzbS5wdXRzICJcdG1vdiN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9Igor
ICAgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChr
aW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBl
bHNlCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wKG9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdp
dGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUpCisgIGVuZAorICAKKyAg
ZGVmIGhhbmRsZVg4NlNoaWZ0KG9wY29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5kc1swXS5pc19h
PyBJbW1lZGlhdGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0ZXJJRC5mb3JOYW1lKG5pbCwgInQy
IikKKyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzZQorICAg
ICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVl
Y3giCisgICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICVjbCwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVY
ODZEb3VibGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAgIGNhc2UgbW9kZQorICAgIHdo
ZW4gOm5vcm1hbAorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAg
ICB3aGVuIDpyZXZlcnNlCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
IgorICAgIGVsc2UKKyAgICAgIHJhaXNlIG1vZGUuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20u
cHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgIGVuZAor
ICAKKyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmUob3Bjb2RlU3VmZml4LCBraW5kKQorICAgIGlm
IG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMF0udmFsdWUgPT0gMCBh
bmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIg
b3Igb3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3Vm
Zml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2lmIG9w
ZXJhbmRzWzFdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMCBhbmQg
b3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Ig
b3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4
KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAg
ICRhc20ucHV0cyAiXHRjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKGtpbmQpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50QnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAg
ICBoYW5kbGVYODZJbnRDb21wYXJlKGJyYW5jaE9wY29kZVsxLi4tMV0sIGtpbmQpCisgICAgJGFz
bS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgZW5k
CisgIAorICBkZWYgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZCkKKyAgICBpZiBvcGVy
YW5kLnN1cHBvcnRzOEJpdE9uWDg2CisgICAgICAkYXNtLnB1dHMgIlx0I3tzZXRPcGNvZGV9ICN7
b3BlcmFuZC54ODZPcGVyYW5kKDpieXRlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJsICN7
b3BlcmFuZC54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQo
OmludCl9LCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJcdCN7c2V0T3Bjb2RlfSAlYWwiCisgICAg
ICAkYXNtLnB1dHMgIlx0bW92emJsICVhbCwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hn
bCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmVTZXQoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRs
ZVg4NkludENvbXBhcmUoc2V0T3Bjb2RlWzMuLi0xXSwga2luZCkKKyAgICBoYW5kbGVYODZTZXQo
c2V0T3Bjb2RlLCBvcGVyYW5kc1syXSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2VGVzdChr
aW5kKQorICAgIHZhbHVlID0gb3BlcmFuZHNbMF0KKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAg
ICB3aGVuIDIKKyAgICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAg
IHdoZW4gMworICAgICAgbWFzayA9IG9wZXJhbmRzWzFdCisgICAgZWxzZQorICAgICAgcmFpc2Ug
IkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5kcywgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7
Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAgaWYgbWFzay5pc19hPyBJbW1l
ZGlhdGUgYW5kIG1hc2sudmFsdWUgPT0gLTEKKyAgICAgIGlmIHZhbHVlLmlzX2E/IFJlZ2lzdGVy
SUQKKyAgICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3t2YWx1ZS54
ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2UK
KyAgICAgICAgJGFzbS5wdXRzICJcdGNtcCN7eDg2U3VmZml4KGtpbmQpfSAkMCwgI3t2YWx1ZS54
ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAi
XHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7bWFzay54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1
ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2
QnJhbmNoVGVzdChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQor
ICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kcy5sYXN0Lng4NkxhYmVs
fSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0VGVzdChzZXRPcGNvZGUsIGtpbmQpCisg
ICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJh
bmRzLmxhc3QpCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wQnJhbmNoKG9wY29kZSwgYnJh
bmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwg
a2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hl
biA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1
bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVj
dAorICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0
Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9w
Y29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5kcy5zaXplID09IDQgYW5kIG9wZXJhbmRzWzFdID09
IG9wZXJhbmRzWzJdCisgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNl
CisgICAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcygic3ViI3t4ODZTdWZmaXgoa2luZCl9
Iiwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgZW5kCisgICAgY2FzZSBvcGVyYW5kcy5z
aXplCisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVu
IDMKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNl
IHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0g
I3tqdW1wVGFyZ2V0Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgbG93ZXJYODYKKyAgICAk
YXNtLmNvbW1lbnQgY29kZU9yaWdpblN0cmluZworICAgIGNhc2Ugb3Bjb2RlCisgICAgd2hlbiAi
YWRkaSIsICJhZGRwIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sw
XS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/
IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lz
dGVySUQKKyAgICAgICAgaWYgb3BlcmFuZHNbMF0udmFsdWUgPT0gMAorICAgICAgICAgIHVubGVz
cyBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgJGFzbS5wdXRzICJcdG1v
dmwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICRhc20u
cHV0cyAiXHRsZWFsICN7b3BlcmFuZHNbMF0udmFsdWV9KCN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICBlbmQK
KyAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVn
aXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJ
RAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAg
ICAgICAkYXNtLnB1dHMgIlx0bGVhbCAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwg
MCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje3g4Nk9wZXJh
bmRzKDppbnQsIDppbnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbmQKKyAgICB3aGVuICJhbmRp
IiwgImFuZHAiCisgICAgICBoYW5kbGVYODZPcCgiYW5kbCIsIDppbnQpCisgICAgd2hlbiAibHNo
aWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYWxsIiwgOmludCkKKyAgICB3aGVuICJtdWxp
IgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1l
ZGlhdGUKKyAgICAgICAgJGFzbS5wdXRzICJcdGltdWxsICN7eDg2T3BlcmFuZHMoOmludCwgOmlu
dCwgOmludCl9IgorICAgICAgZWxzZQorICAgICAgICAjIEZJWE1FOiBjb3VsZCBkbyBzb21lIHBl
ZXBob2xlIGluIGNhc2UgdGhlIGxlZnQgb3BlcmFuZCBpcyBpbW1lZGlhdGUgYW5kIGl0J3MKKyAg
ICAgICAgIyBhIHBvd2VyIG9mIHR3by4KKyAgICAgICAgaGFuZGxlWDg2T3AoImltdWxsIiwgOmlu
dCkKKyAgICAgIGVuZAorICAgIHdoZW4gIm5lZ2kiCisgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAj
e3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJub3RpIgorICAgICAgJGFzbS5wdXRzICJc
dG5vdGwgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAib3JpIiwgIm9ycCIKKyAgICAg
IGhhbmRsZVg4Nk9wKCJvcmwiLCA6aW50KQorICAgIHdoZW4gInJzaGlmdGkiCisgICAgICBoYW5k
bGVYODZTaGlmdCgic2FybCIsIDppbnQpCisgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICBoYW5k
bGVYODZTaGlmdCgic2hybCIsIDppbnQpCisgICAgd2hlbiAic3ViaSIsICJzdWJwIgorICAgICAg
aWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAg
ICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9
LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICBo
YW5kbGVYODZPcCgic3VibCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJ4b3JpIiwgInhv
cnAiCisgICAgICBoYW5kbGVYODZPcCgieG9ybCIsIDppbnQpCisgICAgd2hlbiAibG9hZGkiLCAi
c3RvcmVpIiwgImxvYWRwIiwgInN0b3JlcCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7eDg2
T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgIHdoZW4gImxvYWRiIgorICAgICAgJGFzbS5wdXRz
ICJcdG1vdnpibCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJsb2FkaCIKKyAgICAgICRhc20ucHV0cyAi
XHRtb3Z6d2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpoYWxmKX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAic3RvcmViIgorICAgICAgJGFzbS5wdXRzICJc
dG1vdmIgI3t4ODZPcGVyYW5kcyg6Ynl0ZSwgOmJ5dGUpfSIKKyAgICB3aGVuICJsb2FkZCIsICJt
b3ZlZCIsICJzdG9yZWQiCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgI3t4ODZPcGVyYW5kcyg6
ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAiYWRkZCIKKyAgICAgICRhc20ucHV0cyAiXHRh
ZGRzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJkaXZkIgor
ICAgICAgJGFzbS5wdXRzICJcdGRpdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9
IgorICAgIHdoZW4gInN1YmQiCisgICAgICAkYXNtLnB1dHMgIlx0c3Vic2QgI3t4ODZPcGVyYW5k
cyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAibXVsZCIKKyAgICAgICRhc20ucHV0cyAi
XHRtdWxzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJzcXJ0
ZCIKKyAgICAgICRhc20ucHV0cyAiXHRzcXJ0c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpk
b3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJj
aTJkIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHNpMnNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAi
YmRlcSIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUoImJkZXEiKQorICAg
ICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUp
fSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAi
XHRqcCAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkueDg2TGFi
ZWx9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmln
aW4sIG9wZXJhbmRzWzJdKS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2
IikKKyAgICB3aGVuICJiZG5lcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiam5lIiwg
Om5vcm1hbCkKKyAgICB3aGVuICJiZGd0IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJq
YSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRndGVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJh
bmNoKCJqYWUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHQiCisgICAgICBoYW5kbGVYODZEb3Vi
bGVCcmFuY2goImphIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdGVxIgorICAgICAgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKCJqYWUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGVxdW4iCisgICAg
ICBoYW5kbGVYODZEb3VibGVCcmFuY2goImplIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZG5lcXVu
IgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAg
ICBpc0VxdWFsID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4iKQorICAgICAgJGFzbS5wdXRz
ICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje0xhYmVs
UmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkueDg2TGFiZWx9IgorICAgICAg
JGFzbS5wdXRzICJcdGplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzRXF1YWwp
Lng4NkxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgICAgJGFzbS5w
dXRzICJcdGptcCAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgIGlzRXF1YWwubG93ZXIo
Ilg4NiIpCisgICAgd2hlbiAiYmRndHVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJq
YiIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkZ3RlcXVuIgorICAgICAgaGFuZGxlWDg2RG91Ymxl
QnJhbmNoKCJqYmUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGx0dW4iCisgICAgICBoYW5kbGVY
ODZEb3VibGVCcmFuY2goImpiIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0ZXF1biIKKyAgICAg
IGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamJlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJidGQyaSIK
KyAgICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpk
b3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0
cyAiXHRjbXBsICQweDgwMDAwMDAwICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgICAkYXNtLnB1dHMgIlx0amUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgd2hlbiAi
dGQyaSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVu
ICJiY2QyaSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
ICRhc20ucHV0cyAiXHR0ZXN0bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7b3Bl
cmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJcdGN2dHNpMnNkICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHVjb21p
c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNt
LnB1dHMgIlx0anAgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0
am5lICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgIHdoZW4gIm1vdmR6IgorICAgICAgJGFz
bS5wdXRzICJcdHhvcnBkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAicG9wIgorICAgICAgJGFz
bS5wdXRzICJcdHBvcCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4g
InB1c2giCisgICAgICAkYXNtLnB1dHMgIlx0cHVzaCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgIHdoZW4gIm1vdmUiLCAic3hpMnAiLCAienhpMnAiCisgICAgICBpZiBJbW1l
ZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0gYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJl
Z2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJcdHhvcmwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2lm
IG9wZXJhbmRzWzBdICE9IG9wZXJhbmRzWzFdCisgICAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7
eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgZW5kCisgICAgd2hlbiAibm9wIgorICAg
ICAgJGFzbS5wdXRzICJcdG5vcCIKKyAgICB3aGVuICJiaWVxIiwgImJwZXEiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImplIiwgOmludCkKKyAgICB3aGVuICJiaW5lcSIsICJicG5lcSIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmludCkKKyAgICB3aGVuICJiaWEiLCAiYnBh
IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDppbnQpCisgICAgd2hlbiAiYmlhZXEi
LCAiYnBhZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphZSIsIDppbnQpCisgICAgd2hl
biAiYmliIiwgImJwYiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6aW50KQorICAg
IHdoZW4gImJpYmVxIiwgImJwYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6
aW50KQorICAgIHdoZW4gImJpZ3QiLCAiYnBndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgi
amciLCA6aW50KQorICAgIHdoZW4gImJpZ3RlcSIsICJicGd0ZXEiCisgICAgICBoYW5kbGVYODZJ
bnRCcmFuY2goImpnZSIsIDppbnQpCisgICAgd2hlbiAiYmlsdCIsICJicGx0IgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqbCIsIDppbnQpCisgICAgd2hlbiAiYmlsdGVxIiwgImJwbHRlcSIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamxlIiwgOmludCkKKyAgICB3aGVuICJiYmVxIgor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDpieXRlKQorICAgIHdoZW4gImJibmVxIgor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmEiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhZXEiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphZSIsIDpieXRlKQorICAgIHdoZW4gImJiYiIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmJlcSIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJndCIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamciLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0ZXEiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnZSIsIDpieXRlKQorICAgIHdoZW4gImJibHQiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdGVxIgor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbHRlcSIsIDpieXRlKQorICAgIHdoZW4gImJ0aW8i
LCAiYnRwbyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmludCkKKyAgICB3aGVu
ICJidGlzIiwgImJ0cHMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDppbnQpCisg
ICAgd2hlbiAiYnRpeiIsICJidHB6IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6
aW50KQorICAgIHdoZW4gImJ0aW56IiwgImJ0cG56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVz
dCgiam56IiwgOmludCkKKyAgICB3aGVuICJidGJvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVz
dCgiam8iLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVz
dCgianMiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJ6IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVz
dCgianoiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJueiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRl
c3QoImpueiIsIDpieXRlKQorICAgIHdoZW4gImptcCIKKyAgICAgICRhc20ucHV0cyAiXHRqbXAg
I3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiYmFkZGlvIiwg
ImJhZGRwbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpvIiwgOmludCkKKyAg
ICB3aGVuICJiYWRkaXMiLCAiYmFkZHBzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwi
LCAianMiLCA6aW50KQorICAgIHdoZW4gImJhZGRpeiIsICJiYWRkcHoiCisgICAgICBoYW5kbGVY
ODZPcEJyYW5jaCgiYWRkbCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlueiIsICJiYWRk
cG56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam56IiwgOmludCkKKyAgICB3
aGVuICJic3ViaW8iCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpvIiwgOmludCkKKyAgICB3
aGVuICJic3ViaXMiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpzIiwgOmludCkKKyAgICB3
aGVuICJic3ViaXoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImp6IiwgOmludCkKKyAgICB3
aGVuICJic3ViaW56IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbnoiLCA6aW50KQorICAg
IHdoZW4gImJtdWxpbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbyIsIDpp
bnQpCisgICAgd2hlbiAiYm11bGlzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwg
ImpzIiwgOmludCkKKyAgICB3aGVuICJibXVsaXoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgi
aW11bGwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJtdWxpbnoiCisgICAgICBoYW5kbGVYODZP
cEJyYW5jaCgiaW11bGwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJib3JpbyIKKyAgICAgIGhh
bmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJvcmlzIgorICAg
ICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXoi
CisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJi
b3JpbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpueiIsIDppbnQpCisgICAg
d2hlbiAiYnJlYWsiCisgICAgICAkYXNtLnB1dHMgIlx0aW50ICQzIgorICAgIHdoZW4gImNhbGwi
CisgICAgICAkYXNtLnB1dHMgIlx0Y2FsbCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDpp
bnQpfSIKKyAgICB3aGVuICJyZXQiCisgICAgICAkYXNtLnB1dHMgIlx0cmV0IgorICAgIHdoZW4g
ImNpZXEiLCAiY3BlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGUiLCA6aW50
KQorICAgIHdoZW4gImNpbmVxIiwgImNwbmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNl
dCgic2V0bmUiLCA6aW50KQorICAgIHdoZW4gImNpYSIsICJjcGEiCisgICAgICBoYW5kbGVYODZJ
bnRDb21wYXJlU2V0KCJzZXRhIiwgOmludCkKKyAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAg
ICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGFlIiwgOmludCkKKyAgICB3aGVuICJjaWIi
LCAiY3BiIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YiIsIDppbnQpCisgICAg
d2hlbiAiY2liZXEiLCAiY3BiZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRi
ZSIsIDppbnQpCisgICAgd2hlbiAiY2lndCIsICJjcGd0IgorICAgICAgaGFuZGxlWDg2SW50Q29t
cGFyZVNldCgic2V0ZyIsIDppbnQpCisgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIKKyAgICAg
IGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGdlIiwgOmludCkKKyAgICB3aGVuICJjaWx0Iiwg
ImNwbHQiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsIiwgOmludCkKKyAgICB3
aGVuICJjaWx0ZXEiLCAiY3BsdGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
bGUiLCA6aW50KQorICAgIHdoZW4gInRpbyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8i
LCA6aW50KQorICAgIHdoZW4gInRpcyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6
aW50KQorICAgIHdoZW4gInRpeiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6aW50
KQorICAgIHdoZW4gInRpbnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDppbnQp
CisgICAgd2hlbiAidGJvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDpieXRlKQor
ICAgIHdoZW4gInRicyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6Ynl0ZSkKKyAg
ICB3aGVuICJ0YnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmJ5dGUpCisgICAg
d2hlbiAidGJueiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmJ5dGUpCisgICAg
d2hlbiAicGVlayIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMF0udmFsdWUg
KiA0fSglZXNwKSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJw
b2tlIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpp
bnQpfSwgI3tvcGVyYW5kc1sxXS52YWx1ZSAqIDR9KCVlc3ApIgorICAgIHdoZW4gImNkcWkiCisg
ICAgICAkYXNtLnB1dHMgIlx0Y2RxIgorICAgIHdoZW4gImlkaXZpIgorICAgICAgJGFzbS5wdXRz
ICJcdGlkaXZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiZmlp
MmQiCisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmlu
dCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRz
ICJcdG1vdmQgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAk
YXNtLnB1dHMgIlx0cHNsbHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwb3IgJXht
bTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiZmQyaWki
CisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJc
dG1vdnNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAg
JGFzbS5wdXRzICJcdHBzcmxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2Qg
JXhtbTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAg
cmFpc2UgIkJhZCBvcGNvZGU6ICN7b3Bjb2RlfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFs
aXphdGlvbktpbmQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorI2RlZmluZSBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
X2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7IENv
ZGVGb3JDYWxsLCBDb2RlRm9yQ29uc3RydWN0IH07CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAxMDYwNDUp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBDb21tb25TbG93UGF0aHNfaAog
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU0FycmF5Lmgi
CiAKQEAgLTQxLDYgKzQyLDM4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgQ29tbW9u
U2xvd1BhdGhzIHsKIAorQUxXQVlTX0lOTElORSBFeGVjU3RhdGUqIGFyaXR5Q2hlY2tGb3IoRXhl
Y1N0YXRlKiBleGVjLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhl
Yy0+Y2FsbGVlKCkpOworICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKKyAg
ICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5l
cmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgPSBleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOworCisgICAgLy8gVGhpcyBl
bnN1cmVzIGVub3VnaCBzcGFjZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBh
cmd1bWVudHMgcGFzc2VkIGJ5IHRoZSBjYWxsZXIuCisgICAgaWYgKCFyZWdpc3RlckZpbGUtPmdy
b3coZXhlYy0+cmVnaXN0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIG5l
d0NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpKTsKKworICAgIC8vIFRvbyBmZXcgYXJndW1lbnRzIC0tIGNvcHkgY2FsbCBm
cmFtZSBhbmQgYXJndW1lbnRzLCB0aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1bWVudHMgd2l0aCB1
bmRlZmluZWQuCisgICAgc2l6ZV90IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKKyAgICBSZWdpc3Rlciogc3JjID0gZXhl
Yy0+cmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0ZXIqIGRzdCA9IGV4ZWMtPnJlZ2lzdGVycygpICsg
ZGVsdGE7CisKKyAgICBpbnQgaTsKKyAgICBpbnQgZW5kID0gLUV4ZWNTdGF0ZTo6b2Zmc2V0Rm9y
KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKKyAgICBmb3IgKGkgPSAtMTsgaSA+PSBlbmQ7
IC0taSkKKyAgICAgICAgZHN0W2ldID0gc3JjW2ldOworCisgICAgZW5kIC09IGRlbHRhOworICAg
IGZvciAoIDsgaSA+PSBlbmQ7IC0taSkKKyAgICAgICAgZHN0W2ldID0ganNVbmRlZmluZWQoKTsK
KworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IEV4ZWNTdGF0ZTo6Y3JlYXRlKGRzdCk7CisgICAg
QVNTRVJUKCh2b2lkKiluZXdFeGVjIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOworICAgIHJldHVy
biBuZXdFeGVjOworfQorCiBBTFdBWVNfSU5MSU5FIGJvb2wgb3BJbnN0YW5jZU9mU2xvdyhFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgYmFzZVZhbCwgSlNWYWx1ZSBwcm90
bykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzQ2VsbCgpIHx8ICFiYXNlVmFsLmlzQ2VsbCgpIHx8
ICFwcm90by5pc0NlbGwoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJERkdEcml2ZXIuaCIKKyNpbmNsdWRlICJFeGVjdXRpb25IYXJuZXNzLmgiCiAj
aW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURHJpdmVyLmgiCiAjaW5jbHVkZSAiUGFyc2Vy
LmgiCkBAIC04NCw3ICs4NSw3IEBAIEludHJpbnNpYyBOYXRpdmVFeGVjdXRhYmxlOjppbnRyaW5z
aWMoKSAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdGF0aWMgdm9pZCBqZXR0aXNvbkNvZGVCbG9j
ayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxUPiYgY29kZUJsb2NrKQogewotICAg
IEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7
CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmdldEpJVFR5
cGUoKSkpOwogICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwogICAgIE93blB0
cjxUPiBjb2RlQmxvY2tUb0pldHRpc29uID0gY29kZUJsb2NrLnJlbGVhc2UoKTsKICAgICBjb2Rl
QmxvY2sgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFQ+KGNvZGVCbG9ja1RvSmV0dGlzb24tPnJlbGVh
c2VBbHRlcm5hdGl2ZSgpKTsKQEAgLTE2Nyw5ICsxNjgsMzAgQEAgSlNPYmplY3QqIEV2YWxFeGVj
dXRhYmxlOjpjb21waWxlT3B0aW1pegogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBFdmFs
RXhlY3V0YWJsZTo6aml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAg
Ym9vbCByZXN1bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2V2YWxD
b2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK2lubGluZSBjb25zdCBjaGFy
KiBzYW1wbGluZ0Rlc2NyaXB0aW9uKEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyAgICBz
d2l0Y2ggKGppdFR5cGUpIHsKKyAgICBjYXNlIEpJVENvZGU6OkludGVycHJldGVyVGh1bms6Cisg
ICAgICAgIHJldHVybiAiSW50ZXJwcmV0ZXIgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgY2Fz
ZSBKSVRDb2RlOjpCYXNlbGluZUpJVDoKKyAgICAgICAgcmV0dXJuICJCYXNlbGluZSBDb21waWxh
dGlvbiAoVE9UQUwpIjsKKyAgICBjYXNlIEpJVENvZGU6OkRGR0pJVDoKKyAgICAgICAgcmV0dXJu
ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwogSlNPYmplY3Qq
IEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNo
YWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAg
ICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2Vs
aW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlv
biAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdE
ZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VE
X1BBUkFNKGppdFR5cGUpOwpAQCAtMjEwLDcgKzIzMiw3IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0
YWJsZTo6Y29tcGlsZUludGVybmEKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICgh
aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoKmdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9q
aXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKCpn
bG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQog
ICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC0yOTUsOSArMzE3LDE1IEBAIEpTT2JqZWN0
KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGkKICAgICByZXR1cm4gZXJyb3I7CiB9CiAK
K3ZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFs
RGF0YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0
b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCiBK
U09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4
ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRU
eXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklU
Q29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZH
IENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lv
bihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkK
ICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC0zMzYsNyArMzY0LDcgQEAgSlNPYmplY3Qq
IFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQp
Ci0gICAgaWYgKCFqaXRDb21waWxlSWZBcHByb3ByaWF0ZSgqZ2xvYmFsRGF0YSwgbV9wcm9ncmFt
Q29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVG
b3JFeGVjdXRpb24oKmdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9y
Q2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTQxMiw3ICs0
NDAsNyBAQCBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpiCiAgICAgd2hp
bGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8
RnVuY3Rpb25Db2RlQmxvY2sqPihyZXN1bHQtPmFsdGVybmF0aXZlKCkpOwogICAgIEFTU0VSVChy
ZXN1bHQpOwotICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNl
bGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0
SklUVHlwZSgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDM4LDYgKzQ2NiwxOCBA
QCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlT3B0CiAgICAgcmV0dXJuIGVy
cm9yOwogfQogCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1
bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0
Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJs
ZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0KTsKK30KKwordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25z
dHJ1Y3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0
Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0ZvckNv
bnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRo
QXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwogRnVuY3Rpb25Db2RlQmxvY2sq
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrV2l0aEJ5dGVjb2RlRm9yKENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKIHsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0g
YmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CkBAIC00ODIsNyArNTIyLDcgQEAgUGFzc093blB0
cjxGdW5jdGlvbkNvZGVCbG9jaz4gRnVuY3Rpb25FeAogCiBKU09iamVjdCogRnVuY3Rpb25FeGVj
dXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAg
U2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGlu
ZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24g
KFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVz
Y3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKQEAgLTUwNCw3ICs1NDQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRh
YmxlOjpjb21waWxlRm9yCiAgICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC0+
c2hhcmVkU3ltYm9sVGFibGUoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21w
aWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tG
b3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ss
IG1fc3ltYm9sVGFibGUsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhl
Y3V0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVG
b3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGpp
dFR5cGUsIENvZGVGb3JDYWxsKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNTI0
LDcgKzU2NCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKIAog
SlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFs
KEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2Rl
OjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24o
aml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAo
VE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lm
ICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTU0Niw3ICs1ODYs
NyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAgICAgbV9zeW1i
b2xUYWJsZSA9IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LT5zaGFyZWRTeW1ib2xUYWJsZSgpOwog
CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlh
dGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2Rl
Rm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1i
b2xUYWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9y
Q29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xU
YWJsZSwgaml0VHlwZSwgQ29kZUZvckNvbnN0cnVjdCkpCiAgICAgICAgIHJldHVybiAwOwogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJ
KHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBFeGVjdXRh
YmxlX2gKIAogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCkBAIC0zOSwxMiArNDAsMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgRGVidWdnZXI7CiAgICAgY2xhc3MgRXZhbENvZGVCbG9jazsKICAgICBj
bGFzcyBGdW5jdGlvbkNvZGVCbG9jazsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsK
IAogICAgIHN0cnVjdCBFeGNlcHRpb25JbmZvOwogICAgIAotICAgIGVudW0gQ29kZVNwZWNpYWxp
emF0aW9uS2luZCB7IENvZGVGb3JDYWxsLCBDb2RlRm9yQ29uc3RydWN0IH07CiAgICAgZW51bSBD
b21waWxhdGlvbktpbmQgeyBGaXJzdENvbXBpbGF0aW9uLCBPcHRpbWl6aW5nQ29tcGlsYXRpb24g
fTsKIAogICAgIGlubGluZSBib29sIGlzQ2FsbChDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
CkBAIC0zMTksNiArMzIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNz
IEV2YWxFeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlw
ZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTMzOCw2ICszNDAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNv
bk9wdGltaXplZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShK
U0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIEV2YWxDb2RlQmxvY2smIGdlbmVyYXRl
ZEJ5dGVjb2RlKCkKQEAgLTM4NCw2ICszODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9Owog
CiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGlj
OgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNDExLDYgKzQx
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAg
ICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9p
ZCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgUHJvZ3JhbUNv
ZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAtNDUzLDYgKzQ1OCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4
ZWN1dGFibGUgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBT
Y3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTUwOCw2ICs1MTQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGlt
aXplZENvZGVGb3JDYWxsKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVG
b3JDYWxsKEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRl
ZEZvckNhbGwoKSBjb25zdApAQCAtNTM1LDYgKzU0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29k
ZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9y
Q29uc3RydWN0KEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVy
YXRlZEZvckNvbnN0cnVjdCgpIGNvbnN0CkBAIC01ODIsNiArNTkwLDE2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgICAgIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChn
bG9iYWxEYXRhKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
dm9pZCBqaXRDb21waWxlRm9yKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBDb2Rl
Rm9yQ2FsbCkgeworICAgICAgICAgICAgICAgIGppdENvbXBpbGVGb3JDYWxsKGdsb2JhbERhdGEp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFT
U0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICAgICAgaml0Q29tcGlsZUZv
ckNvbnN0cnVjdChnbG9iYWxEYXRhKTsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIAogICAg
ICAgICBib29sIGlzR2VuZXJhdGVkRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNz
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRp
b25IYXJuZXNzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBFeGVjdXRpb25IYXJuZXNz
X2gKKyNkZWZpbmUgRXhlY3V0aW9uSGFybmVzc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0u
aD4KKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJKSVREcml2ZXIuaCIKKyNpbmNsdWRl
ICJMTEludEVudHJ5cG9pbnRzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDb2RlQmxvY2tUeXBlPgoraW5saW5lIGJvb2wgcHJlcGFyZUZvckV4ZWN1dGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBK
SVRDb2RlJiBqaXRDb2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisjaWYgRU5BQkxF
KExMSU5UKQorICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkgeworICAg
ICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRlcnByZXRlci4KKyAgICAgICAg
TExJbnQ6OmdldEVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2Rl
KTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cigpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmIC8vIEVOQUJM
RShMTElOVCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwg
Y29kZUJsb2NrLCBqaXRDb2RlLCBqaXRUeXBlKTsKK30KKworaW5saW5lIGJvb2wgcHJlcGFyZUZ1
bmN0aW9uRm9yRXhlY3V0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0
aW9uQ29kZUJsb2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHImIGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1i
b2xUYWJsZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5l
Q29kZShqaXRUeXBlKSkgeworICAgICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBp
bnRlcnByZXRlci4KKyAgICAgICAgTExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludChnbG9iYWxE
YXRhLCBraW5kLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBjb2Rl
QmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oa2luZCk7Cisj
ZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorICAgIHJldHVybiBqaXRDb21waWxlRnVuY3Rpb25JZkFw
cHJvcHJpYXRlKGdsb2JhbERhdGEsIGNvZGVCbG9jaywgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0
eUNoZWNrLCBzeW1ib2xUYWJsZSwgaml0VHlwZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIEV4ZWN1dGlvbkhhcm5lc3NfaAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAko
cmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3Rp
dmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3Rl
ckFycmF5ID0gYWRvcHRBcnJheVB0cihuZXcgV3JpdGVCYXJyaWVyPFVua25vd24+W3JlZ2lzdGVy
QXJyYXlTaXplXSk7CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzID0g
cmVnaXN0ZXJBcnJheS5nZXQoKSArIHJlZ2lzdGVyT2Zmc2V0OwotCisgICAgICAgIAogICAgICAg
ICAvLyBDb3B5IGFsbCBhcmd1bWVudHMgdGhhdCBjYW4gYmUgY2FwdHVyZWQgYnkgbmFtZSBvciBi
eSB0aGUgYXJndW1lbnRzIG9iamVjdC4KICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX251
bUNhcHR1cmVkQXJnczsgKytpKSB7CiAgICAgICAgICAgICBpbnQgaW5kZXggPSBDYWxsRnJhbWU6
OmFyZ3VtZW50T2Zmc2V0KGkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuaAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIEpTQXJyYXk7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogCiAgICAgc3RydWN0IFNwYXJzZUFycmF5RW50cnkgOiBwdWJsaWMgV3JpdGVCYXJyaWVy
PFVua25vd24+IHsKICAgICAgICAgdHlwZWRlZiBXcml0ZUJhcnJpZXI8VW5rbm93bj4gQmFzZTsK
QEAgLTEyMiw2ICsxMjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3Mg
SlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdhbGtlcjsKIAog
ICAgIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsMTAgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0gICAgY2xhc3MgU3RydWN0dXJlOworICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7
CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CisgICAgY2xhc3MgU3RydWN0dXJlOwogCiAg
ICAgZW51bSBFbnVtZXJhdGlvbk1vZGUgewogICAgICAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzLApAQCAtMTY0LDYgKzE2NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBwcml2YXRlOgorICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAg
ICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAg
ICBjbGFzcyBKU0FjdGl2YXRpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAg
ICAgY2xhc3MgU291cmNlQ29kZTsKICAgICBuYW1lc3BhY2UgREZHIHsKQEAgLTE0MCw2ICsxNDEs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIAogICAgICAgICBz
dGF0aWMgSlNWYWx1ZSBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3Qg
SWRlbnRpZmllciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQx
LDggQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgICwga2V5
d29yZHMoYWRvcHRQdHIobmV3IEtleXdvcmRzKHRoaXMpKSkKICAgICAsIGludGVycHJldGVyKDAp
CiAgICAgLCBoZWFwKHRoaXMsIGhlYXBTaXplKQorICAgICwganNBcnJheUNsYXNzSW5mbygmSlNB
cnJheTo6c19pbmZvKQorICAgICwganNGaW5hbE9iamVjdENsYXNzSW5mbygmSlNGaW5hbE9iamVj
dDo6c19pbmZvKQogI2lmIEVOQUJMRShERkdfSklUKQogICAgICwgc2l6ZU9mTGFzdFNjcmF0Y2hC
dWZmZXIoMCkKICNlbmRpZgpAQCAtMjE2LDcgKzIxOCw3IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9i
YWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICBqaXRTdHVicyA9IGFkb3B0UHRyKG5ldyBKSVRUaHVu
a3ModGhpcykpOwogI2VuZGlmCiAKLSAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSh0aGlzLT5j
YW5Vc2VKSVQoKSk7CisgICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUoJmxsaW50RGF0YSwgdGhp
cy0+Y2FuVXNlSklUKCkpOwogCiAgICAgaGVhcC5ub3RpZnlJc1NhZmVUb0NvbGxlY3QoKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShy
ZXZpc2lvbiAxMDYwNDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTUgKzMwLDE2IEBACiAjZGVmaW5lIEpTR2xv
YmFsRGF0YV9oCiAKICNpbmNsdWRlICJDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgiCi0j
aW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNp
bmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1
ZGUgIlN0cm9uZy5oIgorI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkpJVFN0dWJz
LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1
ZGUgIk51bWVyaWNTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVk
ZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVGVybWluYXRvci5oIgogI2luY2x1ZGUgIlRpbWVvdXRD
aGVja2VyLmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgpAQCAtNjUsNiArNjYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVj
dDsKICAgICBjbGFzcyBLZXl3b3JkczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAg
ICBjbGFzcyBSZWdFeHBDYWNoZTsKQEAgLTI0MSw2ICsyNDMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEhlYXAgaGVhcDsKIAogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKKworICAg
ICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzQXJyYXlDbGFzc0luZm87CisgICAgICAgIGNv
bnN0IENsYXNzSW5mbyogY29uc3QganNGaW5hbE9iamVjdENsYXNzSW5mbzsKKworICAgICAgICBM
TEludDo6RGF0YSBsbGludERhdGE7CisKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZXR1cm5B
ZGRyZXNzUHRyIGV4Y2VwdGlvbkxvY2F0aW9uOwogICAgICAgICBKU1ZhbHVlIGhvc3RDYWxsUmV0
dXJuVmFsdWU7CkBAIC0zNDYsNiArMzU0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjdW5kZWYgcmVn
aXN0ZXJUeXBlZEFycmF5RnVuY3Rpb24KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU0dsb2JhbERh
dGEoR2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUpOwogICAgICAgICBz
dGF0aWMgSlNHbG9iYWxEYXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwogICAgICAgICB2
b2lkIGNyZWF0ZU5hdGl2ZVRodW5rKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5
cGU7CiAgICAgY2xhc3MgR2V0dGVyU2V0dGVyOwogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFJlZ0V4
cENvbnN0cnVjdG9yOwpAQCAtMzM1LDYgKzMzNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZFN0YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJ
bmZvKiwgaW50IGNvdW50KTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogRm9sZCBy
ZXNldCBpbnRvIGluaXQuCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdChKU09i
amVjdCogdGhpc1ZhbHVlKTsKICAgICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9u
IDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
R2V0dGVyU2V0dGVyOwogICAgIGNsYXNzIEhhc2hFbnRyeTsKICAgICBjbGFzcyBJbnRlcm5hbEZ1
bmN0aW9uOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJr
ZWRCbG9jazsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVy
dHlOYW1lQXJyYXk7CkBAIC0yNjksNiArMjcwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5U3RvcmFnZSBpbmxp
bmVTdG9yYWdlKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIg
YXNrIGFueSBvZiB0aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25vd24gdG8g
YmUgYSBKU09iamVjdC4KICAgICAgICAgdXNpbmcgSlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcjsK
ICAgICAgICAgdXNpbmcgSlNDZWxsOjppc0dldHRlclNldHRlcjsKQEAgLTM4MSw2ICszODQsOCBA
QCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgZXhwbGljaXQg
SlNGaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5s
aW5lU3RvcmFnZSkKICAgICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkocmV2aXNpb24gMTA2MDQ1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC05Niw2ICs5Nyw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHBy
b3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpOwogCiAgICAgICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FjaGVkU3RydWN0dXJlOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxMDYwNDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTU3RyaW5nOwor
ICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIEpTU3RyaW5nKiBqc0VtcHR5
U3RyaW5nKEpTR2xvYmFsRGF0YSopOwogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNT
dGF0ZSopOwpAQCAtMjQwLDYgKzI0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2
YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAg
ICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNvbHZlUm9wZShFeGVjU3RhdGUq
KSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlOChMQ2hhciopIGNvbnN0
OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2UoVUNoYXIqKSBjb25zdDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDEw
NjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMTsgLy8gV2ViQ29yZSB1c2VzIE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQgdG8gbWFrZSBkb2N1bWVudC5hbGwgdW5kZXRlY3RhYmxlLgogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPSAxIDw8IDE7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIE92ZXJyaWRlc0hhc0luc3RhbmNlID0gMSA8PCAyOwpAQCAtODcsNiAr
ODksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAg
IGJvb2wgaXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnIDw9
ICgxIDw8IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBmbGFnOyB9CiAgICAgICAgIGJvb2wgaXNTZXRP
bkZsYWdzMih1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnID49ICgxIDw8IDgpKTsg
cmV0dXJuIG1fZmxhZ3MyICYgKGZsYWcgPj4gOCk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYs
MTAgKzExNiw5IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEUKICAg
ICByZXR1cm4gSlNOb3RBbk9iamVjdDo6Y3JlYXRlKGV4ZWMpOwogfQogCi0jaWZuZGVmIE5ERUJV
RwogY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogewotICAgIHN0YXRpYyBjb25zdCBzaXpl
X3Qgc2l6ZSA9IDY0OworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZSA9IDEyODsKICAgICBz
dGF0aWMgY2hhciBkZXNjcmlwdGlvbltzaXplXTsKIAogICAgIGlmICghKnRoaXMpCkBAIC0xMjgs
MTQgKzEyNywxNCBAQCBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiAgICAgICAgIHNucHJp
bnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiSW50MzI6ICVkIiwgYXNJbnQzMigpKTsKICAgICBlbHNl
IGlmIChpc0RvdWJsZSgpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc25wcmludGYo
ZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVsZiwgJWx4IiwgYXNEb3VibGUoKSwgcmVpbnRl
cnByZXREb3VibGVUb0ludHB0cihhc0RvdWJsZSgpKSk7CisgICAgICAgIHNucHJpbnRmKGRlc2Ny
aXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbHgsICVsZiIsIHJlaW50ZXJwcmV0RG91YmxlVG9JbnRw
dHIoYXNEb3VibGUoKSksIGFzRG91YmxlKCkpOwogI2Vsc2UKICAgICAgICAgdW5pb24gewogICAg
ICAgICAgICAgZG91YmxlIGFzRG91YmxlOwogICAgICAgICAgICAgdWludDMyX3QgYXNUd29JbnQz
MnNbMl07CiAgICAgICAgIH0gdTsKICAgICAgICAgdS5hc0RvdWJsZSA9IGFzRG91YmxlKCk7Ci0g
ICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICUwOHg6JTA4
eCIsIGFzRG91YmxlKCksIHUuYXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0pOworICAg
ICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJTA4eDolMDh4LCAlbGYi
LCB1LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdLCBhc0RvdWJsZSgpKTsKICNlbmRp
ZgogICAgIH0gZWxzZSBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9u
LCBzaXplLCAiQ2VsbDogJXAiLCBhc0NlbGwoKSk7CkBAIC0xNTIsNyArMTUxLDYgQEAgY2hhciog
SlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogCiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQotI2Vu
ZGlmCiAKIC8vIFRoaXMgaW4gdGhlIFRvSW50MzIgb3BlcmF0aW9uIGlzIGRlZmluZWQgaW4gc2Vj
dGlvbiA5LjUgb2YgdGhlIEVDTUEtMjYyIHNwZWMuCiAvLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRp
b24gaXMgaWRlbnRpY2FsIHRvIFRvVUludDMyIG90aGVyIHRoYW4gdG8gaW50ZXJwcmV0YXRpb24K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHJldmlzaW9uIDEw
NjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMyLDkgKzIzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU0Nl
bGwqIGFzQ2VsbCgpIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFs
aWRDYWxsZWUoKTsKIAotI2lmbmRlZiBOREVCVUcKICAgICAgICAgY2hhciogZGVzY3JpcHRpb24o
KTsKLSNlbmRpZgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpT
VmFsdWUoV3JpdGVCYXJyaWVyQmFzZTxUPik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiAxMDYwNDUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDEwICszOCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBSZWdpc3RlcjsKIAogICAgIGNsYXNz
IEpTVmFyaWFibGVPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNl
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlz
aW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxMCBAQCB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rp
b25Gb3JDb25zdHJ1Y3RJbmxpCiAKIHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOwogCitp
bnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworaW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CitpbnQzMl90IGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwpAQCAtMTM3LDYgKzE0MSwxMCBAQCB2b2lkIGlu
aXRpYWxpemVPcHRpb25zKCkKICAgICAKICAgICBTRVQobWF4aW11bUlubGluaW5nRGVwdGgsIDUp
OwogCisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwLCAgICAg
LTEwMCk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29v
biwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOworICAgIFNFVChleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JKSVRTb29uLCAgICAgICAgICAgIC0xMDApOworCiAgICAgU0VUKGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAsICAgICAtMTAwMCk7CiAg
ICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwLCAt
NTAwMCk7CiAgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRp
bWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CkBAIC0xODUsNiAr
MTkzLDggQEAgdm9pZCBpbml0aWFsaXplT3B0aW9ucygpCiAgICAgaWYgKGNwdXNUb1VzZSA8IDEp
CiAgICAgICAgIGNwdXNUb1VzZSA9IDE7CiAgICAgCisgICAgY3B1c1RvVXNlID0gMTsKKyAgICAK
ICAgICBTRVQobnVtYmVyT2ZHQ01hcmtlcnMsIGNwdXNUb1VzZSk7CiAKICAgICBBU1NFUlQoZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24gPD0gZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2
ICszNywxMCBAQCBleHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RyCiAKIGV4
dGVybiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsgLy8gRGVwdGggb2YgaW5saW5lIHN0
YWNrLCBzbyAxID0gbm8gaW5saW5pbmcsIDIgPSBvbmUgbGV2ZWwsIGV0Yy4KIAorZXh0ZXJuIGlu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitleHRlcm4gaW50
MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CitleHRlcm4g
aW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBleHRlcm4gaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogZXh0ZXJuIGlu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7CiBl
eHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1l
U29vbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJ
KHJldmlzaW9uIDEwNjA0NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3Bl
Q2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAg
Y2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNs
YXNzIFNjb3BlQ2hhaW5JdGVyYXRvcjsKICAgICBjbGFzcyBTbG90VmlzaXRvcjsKICAgICAKQEAg
LTkxLDYgKzkyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlRE
QVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbjsK
ICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIEpT
QyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVy
dHlOYW1lQXJyYXk7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhOwogICAgIGNsYXNz
IFN0cnVjdHVyZUNoYWluOwpAQCAtMTk2LDYgKzE5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAg
cHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAg
ICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEm
LCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNv
bnN0IENsYXNzSW5mbyopOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAg
ICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNp
b24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hh
aW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsK
IAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7
CiAKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbiA6IHB1YmxpYyBKU0NlbGwgewpAQCAtNzQsNiAr
NzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAg
IFN0cnVjdHVyZUNoYWluKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0
aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiA+IG1fdmVjdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxh
dGZvcm0uaAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9Q
bGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MjAsNiArOTIwLDE4IEBACiAjZGVmaW5lIEVO
QUJMRV9KSVQgMQogI2VuZGlmCiAKKy8qIE9uIHNvbWUgb2YgdGhlIHBsYXRmb3JtcyB3aGVyZSB3
ZSBoYXZlIGEgSklULCB3ZSB3YW50IHRvIGFsc28gaGF2ZSB0aGUgCisgICBsb3ctbGV2ZWwgaW50
ZXJwcmV0ZXIuICovCisjaWYgIWRlZmluZWQoRU5BQkxFX0xMSU5UKSAmJiBFTkFCTEUoSklUKSAm
JiBQTEFURk9STShNQUMpICYmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIEVOQUJMRV9MTElO
VCAxCisjZW5kaWYKKworLyogSWYgd2UgaGF2ZSBMTEludCBlbmFibGVkIGFuZCB0aGUgSklUIGVu
YWJsZWQsIHdlIGFsc28gZW5hYmxlIE9TUmluZyBmcm9tCisgICBMTEludCB0byB0aGUgSklULiAq
LworI2lmICFkZWZpbmVkKEVOQUJMRV9MTElOVF9PU1JfVE9fSklUKSAmJiBFTkFCTEUoSklUKSAm
JiBFTkFCTEUoTExJTlQpCisjZGVmaW5lIEVOQUJMRV9MTElOVF9PU1JfVE9fSklUIDEKKyNlbmRp
ZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0RGR19KSVQpICYmIEVOQUJMRShKSVQpCiAvKiBFbmFi
bGUgdGhlIERGRyBKSVQgb24gWDg2IGFuZCBYODZfNjQuICBPbmx5IHRlc3RlZCBvbiBNYWMgYW5k
IEdOVS9MaW51eC4gKi8KICNpZiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpICYmIChQTEFURk9S
TShNQUMpIHx8IE9TKExJTlVYKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2Vu
dGluZWxMaW5rZWRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9TZW50aW5lbExpbmtlZExpc3QuaAkocmV2aXNpb24gMTA2MDQ1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtODYs
NiArODYsOCBAQCBwdWJsaWM6CiAKICAgICBpdGVyYXRvciBiZWdpbigpOwogICAgIGl0ZXJhdG9y
IGVuZCgpOworICAgIAorICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIGJlZ2luKCkgPT0gZW5k
KCk7IH0KIAogcHJpdmF0ZToKICAgICBSYXdOb2RlIG1faGVhZFNlbnRpbmVsOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAxMDYw
NDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZTdHJp
bmcgKiBDRlN0cmkKIC8vIExhbmRpbmcgdGhlIGZpbGUgbW92ZXMgaW4gb25lIHBhdGNoLCB3aWxs
IGZvbGxvdyBvbiB3aXRoIHBhdGNoZXMgdG8gY2hhbmdlIHRoZSBuYW1lc3BhY2VzLgogbmFtZXNw
YWNlIEpTQyB7CiBzdHJ1Y3QgSWRlbnRpZmllckNTdHJpbmdUcmFuc2xhdG9yOworY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJZGVudGlm
aWVyQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiBzdHJ1Y3QgSWRlbnRpZmllckxDaGFyRnJvbVVDaGFy
VHJhbnNsYXRvcjsKIH0KQEAgLTcyLDcgKzczLDggQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAg
ZnJpZW5kIHN0cnVjdCBXVEY6OlN1YnN0cmluZ1RyYW5zbGF0b3I7CiAgICAgZnJpZW5kIHN0cnVj
dCBXVEY6OlVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKICAgICBmcmllbmQgY2xhc3MgQXRvbWljU3Ry
aW5nSW1wbDsKLQorICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAKIHByaXZhdGU6CiAgICAgZW51bSBCdWZmZXJPd25lcnNoaXAgewogICAgICAgICBCdWZm
ZXJJbnRlcm5hbCwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjA1NSkKKysrIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAx
LTI2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgSlNDIHNob3Vs
ZCBiZSBhIHRyaXBsZS10aWVyIFZNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD03NTgxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAwNzk2OTQ+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCBF
RkwncyBidWlsZCBzeXN0ZW0gdG8gaW5jbHVkZSBhIG5ldyBkaXJlY3RvcnkgaW4gSmF2YVNjcmlw
dENvcmUuCisgICAgICAgIAorICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBubyBiZWhhdmlv
ciBjaGFuZ2VkLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMTItMDEtMjYgIE5v
ZWwgR29yZG9uICA8bm9lbC5nb3Jkb25AZ21haWwuY29tPgogCiAgICAgICAgIEZpbGUgZXh0ZW5z
aW9uIGZvciB3ZWJwIGZpbGVzIGlzIC53ZWJwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMTA2MDQ1KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTc0LDYgKzc0LDcgQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIKKyAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjA3
MCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTItMDEtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAg
ICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDaGFuZ2VkIEVGTCdzIGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9y
eSBpbiBKYXZhU2NyaXB0Q29yZS4KKyAgICAgICAgCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisKIDIwMTItMDEtMTEgIEphY2t5IEppYW5nICA8emhhamlhbmdAcmltLmNvbT4KIAogICAgICAg
ICBbQmxhY2tCZXJyeV0gQVNTRVJUIGZhaWx1cmUgaW4gQmFja2luZ1N0b3JlUHJpdmF0ZTo6Ymxp
dFZpc2libGVDb250ZW50cygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNjA0
NSkKKysrIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDYgKzQ0LDcgQEAgU0VUKFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVy
cHJldGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L3J1bnRpbWUiCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124229</attachid>
            <date>2012-01-26 18:03:42 -0800</date>
            <delta_ts>2012-01-26 20:12:46 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_54.diff</filename>
            <type>text/plain</type>
            <size>441974</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MDcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5NyBA
QAorMjAxMi0wMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi52c3Byb3BzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDog
QWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Omlz
U2V0KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAg
IChDYWxsTGlua1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmVzY2FwZVF1b3Rlcyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWlu
Z0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RXZh
bENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6
amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1w
bCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dXNlc09wY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAg
KCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0Q29tcGls
ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
aWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxp
a2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlr
ZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1
ZW50RXhpdFNpdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29v
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50
RXhlY3V0ZUNvdW50ZXIpOgorICAgICAgICAoUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChF
dmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBi
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6
CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OkdldEJ5SWRTdGF0dXMpOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjp3YXNTZWVuSW5KSVQpOgorICAgICAgICAoR2V0QnlJZFN0YXR1
cyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgIChJbnN0cnVj
dGlvbik6CisgICAgICAgICgpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZv
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0lu
Zm86OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKExMSW50Q2FsbExpbmtJbmZvKToKKyAg
ICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6OkxM
SW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAg
IChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAoUHV0QnlJZFN0YXR1cyk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0
UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaCk6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0
UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRD
b21waWxlci5jcHA6CisgICAgICAgICgpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKCk6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChBbGxvY2F0aW9uU3BhY2UpOgorICAgICAgICAoKToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAo
SGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAoSlNDOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFt
ZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJy
ZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZy
YW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmls
ZSk6CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKToKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAg
KiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpJVENvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2Rl
Ojppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAg
ICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToK
KyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93
KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RV
Ql9GVU5DVElPTik6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJ
VC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1v
bi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChEYXRhKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50
RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRF
dmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2lu
dCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBv
aW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxl
cik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9u
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpM
TEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQv
TExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChK
U0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmVudHJ5T1NSKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJlc29sdmVHbG9iYWwpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9z
dENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRk
ZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludE9m
ZnNldHNFeHRyYWN0b3IpOgorICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDog
QWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3Ry
dWN0RW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZv
ckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpMTEludDo6ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20u
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRy
YWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAg
ICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFz
bS9zZXR0aW5ncy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6
IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgor
ICAgICAgICAoKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAg
ICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAoQ29tbW9u
U2xvd1BhdGhzKToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjpvcEluc3RhbmNlT2ZT
bG93KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpq
ZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpqaXRDb21w
aWxlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnNhbXBsaW5nRGVzY3JpcHRpb24p
OgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpQ
cm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbCk6CisgICAgICAg
ICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoKToKKyAg
ICAgICAgKEV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKFByb2dyYW1FeGVjdXRhYmxlKToKKyAg
ICAgICAgKEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZTo6aml0Q29tcGlsZUZvcik6CisgICAgICAgICogcnVudGltZS9FeGVjdXRpb25IYXJuZXNz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZvckV4ZWN1
dGlvbik6CisgICAgICAgIChKU0M6OnByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbik6CisgICAg
ICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uaDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9u
Ojp0ZWFyT2ZmKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKCk6CisgICAgICAgIChKU0NlbGwpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTRnVuY3Rpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNHbG9iYWxEYXRhKToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxEYXRhOjpzY3JhdGNoQnVmZmVyRm9yU2l6ZSk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoKToKKyAgICAgICAgKEpTT2JqZWN0KToKKyAgICAgICAgKEpTRmluYWxPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
dHJpbmcuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU1N0cmluZyk6CisgICAgICAgICog
cnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoVHlwZUluZm8p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjpkZXNjcmlwdGlvbik6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVl
Lmg6CisgICAgICAgIChKU1ZhbHVlKToKKyAgICAgICAgKCk6CisgICAgICAgICogcnVudGltZS9K
U1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNWYXJpYWJsZU9i
amVjdCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKE9wdGlvbnMp
OgorICAgICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAgICAgICog
cnVudGltZS9PcHRpb25zLmg6CisgICAgICAgIChPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1l
L1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChTY29wZUNoYWluTm9kZSk6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChTdHJ1Y3R1cmVDaGFpbik6CisgICAgICAgICogd3RmL1BsYXRm
b3JtLmg6CisgICAgICAgICogd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oOgorICAgICAgICAoU2Vu
dGluZWxMaW5rZWRMaXN0KToKKyAgICAgICAgKFdURjo6U2VudGluZWxMaW5rZWRMaXN0Ojppc0Vt
cHR5KToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoU3RyaW5nSW1wbCk6CisgICAgICAgICgpOgorCiAyMDEyLTAxLTI2ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQWxsIERGRyBoZWxwZXJzIHRoYXQg
bWF5IGNhbGwgb3V0IHRvIGFyYml0cmFyeSBKUyBjb2RlIG11c3Qga25vdyB3aGVyZSB0aGV5Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDYwNzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTExLDYgKzExLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L3BhcnNlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZSIKQEAgLTk1LDYgKzk2LDcgQEAgU0VUKEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKICAgICBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwCiAKICAgICBq
aXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5j
cHAKICAgICBqaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAogICAgIGppdC9KSVRBcml0aG1ldGlj
LmNwcAogICAgIGppdC9KSVRDYWxsMzJfNjQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmFtCShyZXZpc2lvbiAxMDYwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
R05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgamF2YXNjcmlw
dGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCisJLUkkKHNyY2RpcikvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDYw
NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2lu
ZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmNwcCBcCkBAIC0xMDIsNiArMTAzLDcgQEAgamF2YXNjcmlwdGNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9u
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTGluZUluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8uaCBcCkBAIC0yNzksNiArMjgxLDggQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Db21wYWN0
SklUQ29kZU1hcC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0
b3IuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNw
cCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIFwKQEAgLTMwMiw2ICszMDYsNyBAQCBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNp
YWxpemVkVGh1bmtKSVQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vcy13aW4zMi9zdGRib29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vcy13aW4zMi9zdGRpbnQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmggXApAQCAtMzUyLDYgKzM1Nyw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaCBcCkBAIC0zODAsNiArMzg2LDcgQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHJldmlzaW9uIDEwNjA3MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIw
LDYgKzIwLDcgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9kZWJ1Z2dlciBc
CiAgICAgJCRTT1VSQ0VfRElSL2ludGVycHJldGVyIFwKICAgICAkJFNPVVJDRV9ESVIvaml0IFwK
KyAgICAkJFNPVVJDRV9ESVIvbGxpbnQgXAogICAgICQkU09VUkNFX0RJUi9wYXJzZXIgXAogICAg
ICQkU09VUkNFX0RJUi9wcm9maWxlciBcCiAgICAgJCRTT1VSQ0VfRElSL3J1bnRpbWUgXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwNjA3MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDcg
QEAgU09VUkNFUyArPSBcCiAgICAgaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCiAgICAg
aml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgXAogICAgIGppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yLmNwcCBcCisgICAgaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKICAg
ICBqaXQvSklUQXJpdGhtZXRpYy5jcHAgXAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3Bw
IFwKICAgICBqaXQvSklUQ2FsbC5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwNjA3MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMwLDYgKzE3
MzAsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cLi5caml0XEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcSklULmNwcCIKIAkJCQk+CiAJCQk8
L0ZpbGU+CkBAIC0xODE1LDYgKzE4MTksMTQgQEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJ
CTxGaWx0ZXIKKwkJCU5hbWU9ImxsaW50IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXGxsaW50XExMSW50RGF0YS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0
ZXI+CisJCTxGaWx0ZXIKIAkJCU5hbWU9ImludGVycHJldGVyIgogCQkJPgogCQkJPEZpbGUKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMJKHJldmlzaW9uIDEwNjA3MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmVDb21tb24udnNwcm9wcwkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJ
PFRvb2wKIAkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29y
ZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsu
Li8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL2RmZy87Li4vLi4vaml0LzsuLi8uLi9ydW50aW1lLzsu
Li8uLi9ieXRlY29kZS87Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJvZmls
ZXI7Li4vLi4vYXNzZW1ibGVyLzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7JChX
ZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNE
aXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
aW5jbHVkZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZh
U2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxw
cml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRz
JnF1b3Q7IgorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXCZxdW90Ozsu
Li8uLi87Li4vLi4vQVBJLzsuLi8uLi9wYXJzZXIvOy4uLy4uL2J5dGVjb21waWxlci87Li4vLi4v
ZGZnLzsuLi8uLi9qaXQvOy4uLy4uL2xsaW50LzsuLi8uLi9ydW50aW1lLzsuLi8uLi9ieXRlY29k
ZS87Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJvZmlsZXI7Li4vLi4vYXNz
ZW1ibGVyLzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7JChXZWJLaXRMaWJyYXJp
ZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVc
cHJpdmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZSZxdW90
OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZx
dW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7
OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7IgogCQlQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX19TVERfQyIKIAkJRm9yY2VkSW5jbHVkZUZpbGVzPSJJ
Q1VWZXJzaW9uLmgiCiAJLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxMDYwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE1IEBACiAJ
b2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJ
MEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0Njgw
QUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdn
cmVnYXRlVGFyZ2V0ICJMTEludCBPZmZzZXRzIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJ
CTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8s
CisJCQkpOworCQkJbmFtZSA9ICJMTEludCBPZmZzZXRzIjsKKwkJCXByb2R1Y3ROYW1lID0gIkRl
cml2ZWQgU291cmNlcyI7CisJCX07CiAJCTY1RkIzRjY2MDlEMTFFOTEwMEY0OURFQiAvKiBEZXJp
dmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CiAJCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gNjVGQjNGNzcwOUQxMUVCRDAwRjQ5REVCIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJEZXJpdmVkIFNvdXJjZXMi
ICovOwpAQCAtMTQsNiArMjMsOSBAQAogCQkJCTY1RkIzRjY1MDlEMTFFOTEwMEY0OURFQiAvKiBH
ZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJNUQzNURFRTEwQzdDMTQwQjAwODY0OEIy
IC8qIEdlbmVyYXRlIERUcmFjZSBoZWFkZXIgKi8sCiAJCQkpOworCQkJZGVwZW5kZW5jaWVzID0g
KAorCQkJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICov
LAorCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJCXByb2R1Y3ROYW1lID0g
IkRlcml2ZWQgU291cmNlcyI7CiAJCX07CkBAIC00OCw2ICs2MCwxMCBAQAogCQkwQkFDOTRBMDEz
Mzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJBQzk0OUUxMzM4NzI4NDAwQ0Yx
MzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkNEODM1NzE0ODU4NDUyMDBFQTIwMDMgLyog
VGVtcG9yYXJ5Q2hhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJGMjhBMjkx
MUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVM
aW1pdHMuY3BwICovOyB9OworCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRy
eXBvaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi87IH07
CisJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NjE0QkNGNDVB
MDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTElu
dFRodW5rcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovOyB9OworCQkw
RjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTUxNEJDRjUwNDAw
ODg1QjRGIC8qIENvZGVUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBODE0
QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhw
cmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTgs
OSArNzQsMTMgQEAKIAkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5r
SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYw
QjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I3MTRCQ0Y4RTEw
MDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJl
c29sdmVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVj
b2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEZDNDU4MTRCRDE1RjEw
MEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21t
b25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE2RDcyNjE0MkMz
OUMwMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3Iu
Y3BwICovOyB9OwogCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJpdmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI2NjE0QkU1
RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlv
bkhhcm5lc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0QxNEJFNzI3
QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29u
dmVudGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyNDJEQTcxM0Yz
QjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAv
KiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NkYxNDczOEYzMTAwMTIxRTRGIC8qIERGR0NvZGVC
bG9ja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NzAxNDczOEYzNTAwMTIx
RTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3Mu
Y3BwICovOyB9OwpAQCAtNzEsNiArOTEsMTkgQEAKIAkJMEY0MzE3MzgxNDZCQUM2OTAwN0UzODkw
IC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4
MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDdGMTRC
QTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTMxNEJB
N0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50
RXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUYxNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZM
QUdTID0gIi1Xbm8tdW51c2VkLXBhcmFtZXRlciI7IH07IH07CisJCTBGNDY4MEE1MTRCQTdGOEQw
MEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2
ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIw
MEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovOyB9OworCQkwRjQ2ODBBODE0
QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBM
TEludEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyog
TExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENCMTRCQkIxNzIw
MEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTElu
dE9mZmxpbmVBc21Db25maWcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnBy
ZXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi87IH07
CisJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDODE0QkJC
MTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAv
KiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi87IH07CisJ
CTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAv
KiBMTEludERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBE
MDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi87IH07CisJCTBG
NDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMTE0QkJDNUY4MDBC
RkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0
cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLzsgfTsKIAkJMEY1
NUYwRjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBB
YnN0cmFjdFBDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYwOENF
MTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM4NSw3ICs0MTgsNyBAQAog
CQk4NkI5OUFFMzExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI5OUFFMTExN0U1NzgxMDBERjVB
OTAgLyogU3RyaW5nQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODZCQjA5QzAxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkUx
MzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwICovOyB9OwogCQk4NkJCMDlDMTEzOEUz
ODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2gu
aCAqLzsgfTsKLQkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBF
RTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgfTsKKwkJODZDMzZFRUEwRUUx
Mjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9B
c3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REQxMUEy
MTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCAqLzsgfTsKIAkJODZDNTY4RTEx
MUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8q
IE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwogCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3RjAg
LyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCAqLzsg
fTsKQEAgLTc1NCw2ICs3ODcsMjAgQEAKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLworCQkwRjQ2ODBCMTE0
QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0g
UEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0
MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJ
CXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyOworCQkJcmVt
b3RlSW5mbyA9ICJMTEludCBPZmZzZXRzIjsKKwkJfTsKKwkJMEY0NjgwQjMxNEJBODIxNDAwQkZF
MjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5l
ckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMw
NyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9i
YWxJRFN0cmluZyA9IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSBK
U0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCX07CiAJCTE0MTIxNEJFMEE0OTE5MEUwMDQ4MDI1
NSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJ
dGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcg
LyogUHJvamVjdCBvYmplY3QgKi87CkBAIC03OTksNiArODQ2LDE1IEBACiAvKiBFbmQgUEJYQ29u
dGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsKKwkJ
CWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCX07CiAJCTVEQkIxNTExMTMxRDBCMTMw
MDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0gewogCQkJaXNhID0gUEJYQ29weUZp
bGVzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOwpAQCAtODM5LDYgKzg5NSwx
MCBAQAogCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRSZXN0cmljdGlv
blZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCQ0Q4MzU0MTQ4NTg0
MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGVtcG9yYXJ5Q2hhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpemVMaW1pdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEVudHJ5cG9p
bnRzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBv
aW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEVudHJ5cG9pbnRz
Lmg7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludFRodW5rcy5jcHA7IHBhdGgg
PSBsbGludC9MTEludFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
MEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMTEludFRodW5rcy5oOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRG
IC8qIENvZGVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0
RiAvKiBIYW5kbGVySW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5k
bGVySW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBQTE0QkNGNUI5
MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFeHByZXNzaW9uUmFuZ2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04NDksOSArOTA5LDEzIEBACiAJCTBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBN
ZXRob2RDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0
aG9kQ2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I2
MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHbG9iYWxSZXNvbHZlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50Q2FsbExpbmtJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25T
bG93UGF0aHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uU2xvd1Bh
dGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTZENzI0MTQyQzM5QTIwMENG
Nzg0QSAvKiBCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQml0VmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyMUMyNjYx
NEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKSVREcml2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMy
NzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0
aW9uSGFybmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRpb25I
YXJuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdFMTRCRUFBODAw
MEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVudGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RDE0NzM4RjJFMDAxMjFF
NEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBERkdDb2RlQmxvY2tzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYy
QzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtODYyLDYgKzkyNiwyMCBAQAogCQkwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyog
TGlzdGFibGVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpc3Rh
YmxlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA3RjE0QkE1
NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKSVRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBh
dGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CisJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFeGNlcHRpb25z
LmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFeGNlcHRpb25zLmg7IHBh
dGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEhlbHBlcnMuY3BwOyBwYXRoID0gbGxp
bnQvTExJbnRIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0Njgw
QTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBMTEludEhlbHBlcnMuaDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIg
LyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHBhdGggPSBsbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBD
NTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gTExJbnRDb21tb24uaDsgcGF0aCA9IGxsaW50L0xMSW50Q29tbW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBM
TEludE9mZmxpbmVBc21Db25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHBhdGggPSBsbGludC9MTEludE9mZmxpbmVBc21Db25m
aWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzcxNEJCQjE2OTAwQkZF
MjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHBhdGggPSBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzgx
NEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5oOyBwYXRoID0gbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBD
RTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IExMSW50RGF0YS5jcHA7IHBhdGggPSBsbGludC9MTEludERhdGEuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIg
LyogTExJbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RGF0
YS5oOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUy
NzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFic3RyYWN0UEMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdFBDLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENDMTQ2QkU2MDIwMDA0NzJBOSAvKiBERkdCeXRlQ29k
ZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0J5dGVDb2RlQ2Fj
aGUuaDsgcGF0aCA9IGRmZy9ERkdCeXRlQ29kZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNTgzLDYgKzE2NjEsMTMgQEAKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNl
Y3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwor
CQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9
IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRTBBNDg3OTNDMDA0ODAyNTUgLyogRnJhbWV3b3Jr
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTE2NDEsNiArMTcyNiw3IEBACiAJCQkJMTQxMjExMjAw
QTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYwQTNFOEY5MDAwQkFG
NTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJNjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RS
ZWdFeHAgKi8sCisJCQkJMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0
c0V4dHJhY3RvciAqLywKIAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMTY3MSw2ICsxNzU3LDcgQEAKIAkJCQlGNUMyOTBFNjAyODRGOThF
MDE4NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5
QjBGMDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcg
LyogY29uZmlnLmggKi8sCisJCQkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICov
LAogCQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIw
RUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBG
MUY2ODEgLyogYnl0ZWNvZGUgKi8sCkBAIC0xNzA5LDYgKzE3OTYsMjggQEAKIAkJCXRhYldpZHRo
ID0gNDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcy
IC8qIGxsaW50ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8sCisJ
CQkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLywKKwkJ
CQkwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovLAorCQkJCTBG
MEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovLAorCQkJCTBGNDY4MENF
MTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovLAorCQkJCTBGNDY4MENGMTRCQkIz
RDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLywKKwkJCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUy
NzIgLyogTExJbnRDb21tb24uaCAqLywKKwkJCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyog
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi8sCisJCQkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcy
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovLAorCQkJCTBGNDY4MEM4MTRCQkIxNjkwMEJG
RTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi8sCisJCQkJMEY0NjgwOUQxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8sCisJCQkJMEY0NjgwOUUxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovLAorCQkJCTBGNDY4MDlGMTRCQTdGODIwMEJG
RTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovLAorCQkJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludEhlbHBlcnMuaCAqLywKKwkJCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gbGxpbnQ7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAy
NTUgLyogdGVzdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtMTc0Myw2ICsxODUyLDggQEAKIAkJMTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY0NjgwRDAx
NEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovLAorCQkJCTBGNDY4
MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8sCiAJCQkJMEY0
NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovLAogCQkJCTBGNDY4
MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEZEODJFMzcx
NDFBQjE0MjAwMTc5Qzk0IC8qIENvbXBhY3RKSVRDb2RlTWFwLmggKi8sCkBAIC0yMTcyLDYgKzIy
ODMsOCBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYyMUMyNzkxNEJFNzI3MzAw
QURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLywKKwkJCQkwRjIxQzI3QTE0QkU3
MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovLAogCQkJCTBGMTVGMTVEMTRCN0E3
M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4
MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjRE
IC8qIEFyZ0xpc3QuaCAqLywKQEAgLTI1MzEsNiArMjY0NCw4IEBACiAJCTk2OUEwNzhGMEVEMUQz
QUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVu
dGlvbnMuaCAqLywKKwkJCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlu
a0luZm8uaCAqLywKIAkJCQkwRjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0
dXMuY3BwICovLAogCQkJCTBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1
cy5oICovLAogCQkJCTBGOTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNw
cCAqLywKQEAgLTMwODIsNyArMzE5NywxNiBAQAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3
QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCNDMxMkRCOEE4MTAw
QTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1
RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50
Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyog
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDRDE0QkJC
MTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9p
bnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAv
KiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRG
IC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4
ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDkxLDcg
KzMyMTUsMTEgQEAKIAkJCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExp
bmtJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyog
R2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I5MTRCQ0Y5NUYw
MDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJpdmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhlY3V0
aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRC
IC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdG
MTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjdCMjk0QTE0QzNDRDI5MDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QzE0QzNDRDQzMDA3QzNEQjEgLyogREZHQnl0
ZUNvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTEwLDYgKzMyMzgsMjQgQEAKIC8qIEVu
ZCBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWE5hdGl2ZVRh
cmdldCBzZWN0aW9uICovCisJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9m
ZnNldHNFeHRyYWN0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRy
YWN0b3IiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwOEIxNEJBN0U1RTAwQkZF
MjcyIC8qIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1l
d29ya3MgKi8sCisJCQkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLywK
KwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJ
CQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJ
CSk7CisJCQluYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdE5hbWUg
PSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMEY0Njgw
OEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXBy
b2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CiAJCTE0MTIx
MTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovID0gewogCQkJaXNhID0gUEJYTmF0aXZl
VGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MTIxMTM5MEE0ODc5ODQwMDQ4
MDI1NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWlu
aWRvbSIgKi87CkBAIC0zMjM2LDExICszMzgyLDI5IEBACiAJCQkJMTRCRDU5QkUwQTNFOEY5MDAw
QkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJOTMyRjVCREEwODIyQTFDNzAwNzM2OTc1IC8qIGpz
YyAqLywKIAkJCQk2NTExMjJGNzE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJ
CQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICov
LAorCQkJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovLAogCQkJ
KTsKIAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU2hl
bGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcy
IC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2Ny
aXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxl
cyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL2xsaW50L0xv
d0xldmVsQXNzZW1ibGVyLmFzbSIsCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBEZXJpdmVk
IFNvdXJjZXMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElS
KS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oIiwKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7
CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTElu
dE9mZnNldHMvXCJcblxuL3Vzci9iaW4vZW52IHJ1YnkgXCIke1NSQ1JPT1R9L29mZmxpbmVhc20v
Z2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYlwiIFwiJHtTUkNST09UfS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbVwiIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9M
TEludERlc2lyZWRPZmZzZXRzLmhcIlxuIjsKKwkJfTsKIAkJMzcxM0YwMTQxNDI5MDUyNDAwMzYz
ODdGIC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzICov
ID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKQEAgLTMzNDYsNyArMzUxMCw3IEBACiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlzaGVsbFBhdGggPSAvYmluL3No
OwotCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNf
RElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7
U1JDUk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2YVNj
cmlwdENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJcblxubWFrZSAt
LW5vLWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
XCIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNwdWBcbiI7CisJCQlzaGVsbFNjcmlwdCA9
ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9kb2NzXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlXCJcblxuL2Jpbi9sbiAtc2ZoIFwiJHtTUkNST09UfVwiIEphdmFTY3Jp
cHRDb3JlXG5leHBvcnQgSmF2YVNjcmlwdENvcmU9XCJKYXZhU2NyaXB0Q29yZVwiXG5leHBvcnQg
QlVJTFRfUFJPRFVDVFNfRElSPVwiLi4vLi5cIlxuXG5tYWtlIC0tbm8tYnVpbHRpbi1ydWxlcyAt
ZiBcIkphdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2VcIiAtaiBgL3Vzci9zYmluL3N5
c2N0bCAtbiBody5uY3B1YFxuXG4vdXNyL2Jpbi9lbnYgcnVieSBKYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2FzbS5yYiBKYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bSAke0JVSUxUX1BST0RVQ1RTX0RJUn0vSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIExMSW50QXNz
ZW1ibHkuaFxuIjsKIAkJfTsKIAkJOTMxOTU4NkIwOUQ5RjkxQTAwQTU2RkQ0IC8qIENoZWNrIEZv
ciBHbG9iYWwgSW5pdGlhbGl6ZXJzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWls
ZFBoYXNlOwpAQCAtMzM4MSw2ICszNTQ1LDE0IEBACiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLworCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLyA9IHsKKwkJCWlz
YSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFEMEE0ODc5M0MwMDQ4
MDI1NSAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzYzOSw3ICszODExLDE0IEBACiAJ
CQkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJ
bnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3
MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwODMxNEJB
NTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0
NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1
cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYg
LyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QzE0QkNG
NDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgz
QjAxNEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjBCODNCNDE0QkNGODYwMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUY2OUU4NkMzMTRDNkU1NTEwMDJDMkM2MiAvKiBOdW1iZXJPZkNvcmVz
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzY2Miw2ICszODQxLDE2IEBACiAvKiBFbmQgUEJYU291
cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5
IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0g
MEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi87CisJCQl0YXJnZXRQ
cm94eSA9IDBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki87CisJCX07CisJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRl
bmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBG
NDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJ
CQl0YXJnZXRQcm94eSA9IDBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJ
dGVtUHJveHkgKi87CisJCX07CiAJCTE0MTIxNEJGMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhUYXJn
ZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJCXRh
cmdldCA9IDE0MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovOwpAQCAtMzY5NSw2
ICszODg0LDE0OCBAQAogLyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTBGNDY4MDk2MTRCQTdF
NUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBO
TzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhB
U0VfU1RSSVAgPSBOTzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJ
CUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05T
ID0gWUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9D
RVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVk
KSIsCisJCQkJKTsKKwkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5POworCQkJCUdD
Q19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0Nf
V0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01J
U1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9
IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9T
RUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BB
VEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJ
CU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05B
TUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRI
UyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NF
QVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwOTcx
NEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BB
VEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlD
T1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJk
d2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJ
CQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBj
b20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMy
X0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZ
UEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdD
Q19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1th
cmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19E
SVIpL0xMSW50T2Zmc2V0cyQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJH
RVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNI
X1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFE
RVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBG
NDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJD
SF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQp
IjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZP
Uk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0g
Z251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZF
UlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJO
XzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lO
R19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVT
OworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJD
SF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
IiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJP
RFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJ
CVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
TExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQ
cm9maWxpbmc7CisJCX07CisJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9u
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQo
QVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJ
CQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0Nf
Q19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJ
T05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNs
YW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJ
CUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9B
Qk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZ
RVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJ
CWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQki
JChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9U
QVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJ
U0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3Ug
JChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUQxNEJBN0ZE
OTAwQkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJj
ZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODBBRTE0QkE3
RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBT
b3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODBB
RjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJE
ZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsK
KwkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVD
VF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVj
dGlvbjsKKwkJfTsKIAkJMTQxMjExM0EwQTQ4Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovID0gewog
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewpAQCAt
MzkzNiw2ICs0MjY3LDI4IEBACiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOUEx
NEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZl
VGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovID0geworCQkJaXNhID0gWENDb25m
aWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwOTYx
NEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3
MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxp
bmcgKi8sCisJCQkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJ
CQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUMxNEJBN0ZEOTAw
QkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0
ICJMTEludCBPZmZzZXRzIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJ
CQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAv
KiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLywK
KwkJCQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4
MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRD
b25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9
IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi8gPSB7CiAJ
CQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShy
ZXZpc2lvbiAxMDYwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2RlZmluZSBHTE9CQUxf
VEhVTktfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0x
KSkKICNkZWZpbmUgUkVHRVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KC0yKSkKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+CisjaW5j
bHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVDb252ZW50aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgQnl0ZWNvZGVDb252ZW50aW9uc19oCisjZGVmaW5lIEJ5dGVjb2RlQ29u
dmVudGlvbnNfaAorCisvLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0
aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6Cisv
LyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBD
YWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lz
dGVyRmlsZS5oLgorLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGlj
ZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFy
aWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgorLy8gICAgICAweDQwMDAwMDAwLTB4
N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmll
cyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgorc3RhdGljIGNvbnN0IGlu
dCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7CisKKyNlbmRpZiAvLyBC
eXRlY29kZUNvbnZlbnRpb25zX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDYwNzEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNywxNyArMjcsNDAgQEAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
RnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFN
KGJ5dGVjb2RlSW5kZXgpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNv
ZGVJbmRleDsKKyAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaW5zdHJ1Y3Rp
b25bNF0udS5jYWxsTGlua0luZm87CisgICAgCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNh
bGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCksIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0
dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKKyNlbmRpZgorfQorCiBDYWxsTGlua1N0YXR1
cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2sp
OwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklUKSAmJiBF
TkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKAotICAgICAg
ICBwcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5D
YWxsZWUuZ2V0KCksCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKGJ5
dGVjb2RlSW5kZXgpKTsKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mQ2FsbExpbmtJ
bmZvcygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBi
eXRlY29kZUluZGV4KTsKKyAgICAKKyAgICBpZiAocHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xv
d0Nhc2UoYnl0ZWNvZGVJbmRleCkpCisgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygwLCB0
cnVlKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBwcm9maWxlZEJsb2NrLT5nZXRD
YWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CisgICAgaWYg
KCF0YXJnZXQpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ss
IGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQs
IGZhbHNlKTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKICNl
bmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
U3RhdHVzLmgJKHJldmlzaW9uIDEwNjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNSArNDcsMTcgQEAg
cHVibGljOgogICAgIAogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKENvZGVC
bG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBj
b25zdCB7IHJldHVybiAhIW1fY2FsbFRhcmdldDsgfQorICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7
IHJldHVybiAhIW1fY2FsbFRhcmdldCB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCi0g
ICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsVGFyZ2V0OyB9CisgICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQogICAgIAogICAgIGJv
b2wgY291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvdWxkVGFrZVNsb3dQYXRo
OyB9CiAgICAgCiAgICAgSlNGdW5jdGlvbiogY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbFRhcmdldDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMg
Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAg
ICAKICAgICBKU0Z1bmN0aW9uKiBtX2NhbGxUYXJnZXQ7CiAgICAgYm9vbCBtX2NvdWxkVGFrZVNs
b3dQYXRoOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCShyZXZpc2lvbiAxMDYwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNp
bmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgi
CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTU5LDggKzYwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiB1
c2luZyBuYW1lc3BhY2UgREZHOwogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVO
QUJMRShPUENPREVfU0FNUExJTkcpCi0KIHN0YXRpYyBVU3RyaW5nIGVzY2FwZVF1b3Rlcyhjb25z
dCBVU3RyaW5nJiBzdHIpCiB7CiAgICAgVVN0cmluZyByZXN1bHQgPSBzdHI7CkBAIC0zNTgsMTAg
KzM1NywxMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bjb2Rl
TGVuZ3Roc1tleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtp
XS51Lm9wY29kZSldKQogICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7CiAKLSAgICBwcmludGYo
IiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVk
IGNhbGxlZSByZWdpc3RlcihzKVxuXG4iLAorICAgIHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rpb25z
OyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMp
OyAlZCB2YXJpYWJsZShzKVxuXG4iLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
PihpbnN0cnVjdGlvbkNvdW50KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4o
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSksCi0gICAgICAgIHRo
aXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgICAgICB0aGlz
LCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX251bVZhcnMpOwogCiAg
ICAgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4gPSBpbnN0cnVjdGlv
bnMoKS5iZWdpbigpOwogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IGluc3RydWN0aW9ucygpLmVuZCgpOwpAQCAtODk4LDYgKzg5NywxNCBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5SWRP
cChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsK
KyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQdXRC
eUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTI5MSw4ICsxMjk4LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhl
Y1N0YXRlKiBleGVjLCBjbwogICAgIH0KIH0KIAotI2VuZGlmIC8vICFkZWZpbmVkKE5ERUJVRykg
fHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNU
SUNTCiBzdGF0aWMgSGFzaFNldDxDb2RlQmxvY2sqPiBsaXZlQ29kZUJsb2NrU2V0OwogI2VuZGlm
CkBAIC0xNDU5LDYgKzE0NjQsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxv
Y2tUYWcsCiB7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1QYXJhbWV0ZXJzKCkpOwog
ICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogICAgIAog
ICAgIGlmIChvdGhlci5tX3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNl
c3NhcnkoKTsKQEAgLTE1MDcsNiArMTUxMyw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlw
dEV4ZWN1dGFibGUqIG8KICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIAogICAgIG9wdGltaXpl
QWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogCiAjaWYgRFVNUF9DT0RFX0JM
T0NLX1NUQVRJU1RJQ1MKICAgICBsaXZlQ29kZUJsb2NrU2V0LmFkZCh0aGlzKTsKQEAgLTE1MjQs
NyArMTUzMSwxMSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2lmIEVOQUJMRShWRVJCT1NF
X1ZBTFVFX1BST0ZJTEUpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNlbmRpZgotICAgIAor
CisjaWYgRU5BQkxFKExMSU5UKSAgICAKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMu
YmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWlu
Z0xMSW50Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQog
I2lmIEVOQUJMRShKSVQpCiAgICAgLy8gV2UgbWF5IGJlIGRlc3Ryb3llZCBiZWZvcmUgYW55IENv
ZGVCbG9ja3MgdGhhdCByZWZlciB0byB1cyBhcmUgZGVzdHJveWVkLgogICAgIC8vIENvbnNpZGVy
IHRoYXQgdHdvIENvZGVCbG9ja3MgYmVjb21lIHVucmVhY2hhYmxlIGF0IHRoZSBzYW1lIHRpbWUu
IFRoZXJlCkBAIC0xNzM2LDggKzE3NDcsNTkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5j
b25kaXRpb25hbGx5KAogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5saW5r
aW5nID0gZmFsc2U7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAg
CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xv
YmFsRGF0YS0+aW50ZXJwcmV0ZXI7CisgICAgLy8gaW50ZXJwcmV0ZXItPmVuYWJsZWQoKSByZXR1
cm5zIHRydWUgaWYgdGhlIG9sZCBDKysgaW50ZXJwcmV0ZXIgaXMgZW5hYmxlZC4gSWYgdGhhdCdz
IGVuYWJsZWQKKyAgICAvLyB0aGVuIHdlJ3JlIG5vdCB1c2luZyBMTEludC4KKyAgICBpZiAoIWlu
dGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgewor
ICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygp
W21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgc3dpdGNoIChp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpKSB7Cisg
ICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkOgorICAgICAgICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUg
fHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlv
bls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9u
WzVdLnUub3BlcmFuZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAgICAgIGlmIChIZWFwOjpp
c01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUu
Z2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0
aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigp
OworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmNsZWFyKCk7
CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5jbGVh
cigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlID0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBzaXplID0g
bV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlv
bnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgQVNTRVJU
KGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0g
b3BfcmVzb2x2ZV9nbG9iYWwKKyAgICAgICAgICAgICAgICAgICB8fCBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFs
X2R5bmFtaWMpOworICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVy
ZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQoKSkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlvblsz
XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5v
cGVyYW5kID0gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChtX2xs
aW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpICYmICFIZWFwOjppc01hcmtlZChtX2xsaW50
Q2FsbExpbmtJbmZvc1tpXS5jYWxsZWUuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcgTExJ
bnQgY2FsbCBmcm9tICVwLlxuIiwgdGhpcyk7CisgICAgICAgICAgICAgICAgbV9sbGludENhbGxM
aW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoISFt
X2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQo
bV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQorICAgICAgICAg
ICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlLmNsZWFyKCk7Cisg
ICAgICAgIH0KKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCiAjaWYgRU5BQkxFKERG
R19KSVQpCiAgICAgLy8gQ2hlY2sgaWYgd2UncmUgbm90IGxpdmUuIElmIHdlIGFyZSwgdGhlbiBq
ZXR0aXNvbi4KICAgICBpZiAoIShzaG91bGRJbW1lZGlhdGVseUFzc3VtZUxpdmVuZXNzRHVyaW5n
U2NhbigpIHx8IG1fZGZnRGF0YS0+bGl2ZW5lc3NIYXNCZWVuUHJvdmVkKSkgewpAQCAtMTg1OCwx
MCArMTkyMCwxMiBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVjbHMuc2l6ZSgpOyArK2kpCiAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9uRGVjbHNbaV0pOwogI2lmIEVOQUJMRShJ
TlRFUlBSRVRFUikKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICB2aXNpdFN0cnVj
dHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bnNbaV1dKTsKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rp
b25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0dXJl
cyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ld
XSk7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPmVuYWJsZWQoKSkgeworICAg
ICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXpl
KCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZp
c2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7
CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMu
c2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHZpc2l0U3RydWN0dXJl
cyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ld
XSk7CisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTIwNzAsNiArMjEz
NCwxMiBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogewogICAgIGlmICghIW1fYWx0
ZXJuYXRpdmUpCiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPnVubGlua0NhbGxzKCk7CisjaWYgRU5B
QkxFKExMSU5UKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sbGludENhbGxMaW5rSW5m
b3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlz
TGlua2VkKCkpCisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsK
KyAgICB9CisjZW5kaWYKICAgICBpZiAoIShtX2NhbGxMaW5rSW5mb3Muc2l6ZSgpIHx8IG1fbWV0
aG9kQ2FsbExpbmtJbmZvcy5zaXplKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2ds
b2JhbERhdGEtPmNhblVzZUpJVCgpKQpAQCAtMjA4NCwxMCArMjE1NCwzOSBAQCB2b2lkIENvZGVC
bG9jazo6dW5saW5rQ2FsbHMoKQogCiB2b2lkIENvZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxs
cygpCiB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIHdoaWxlIChtX2luY29taW5nTExJbnRDYWxs
cy5iZWdpbigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQorICAgICAgICBtX2luY29t
aW5nTExJbnRDYWxscy5iZWdpbigpLT51bmxpbmsoKTsKKyNlbmRpZgorICAgIGlmIChtX2luY29t
aW5nQ2FsbHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAgICAgUmVwYXRjaEJ1ZmZlciBy
ZXBhdGNoQnVmZmVyKHRoaXMpOwogICAgIHdoaWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAh
PSBtX2luY29taW5nQ2FsbHMuZW5kKCkpCiAgICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigp
LT51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CiB9CisKK3Vuc2lnbmVkIENv
ZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChyZXR1cm5BZGRy
ZXNzLnZhbHVlKCkgPj0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfYmVnaW4pCisgICAgICAg
ICYmIHJldHVybkFkZHJlc3MudmFsdWUoKSA8PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9l
bmQpKSB7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSk7CisgICAgICAgIEFTU0VS
VChleGVjLT5jb2RlQmxvY2soKSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6Omlz
QmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOworICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24gPSBleGVjLT5jdXJyZW50VlBDKCk7CisgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbik7
CisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldChpbnN0cnVjdGlvbik7CisgICAgfQorI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisjZW5kaWYKKyAgICBpZiAoIW1fcmFyZURhdGEp
CisgICAgICAgIHJldHVybiAxOworICAgIFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29k
ZU9mZnNldD4mIGNhbGxJbmRpY2VzID0gbV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0
b3I7CisgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCisgICAgICAgIHJldHVybiAxOworICAg
IHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVu
c2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5k
aWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkp
KS0+Ynl0ZWNvZGVPZmZzZXQ7Cit9CiAjZW5kaWYKIAogdm9pZCBDb2RlQmxvY2s6OmNsZWFyRXZh
bENhY2hlKCkKQEAgLTIxODMsMjQgKzIyODIsNDUgQEAgYm9vbCBGdW5jdGlvbkNvZGVCbG9jazo6
Y2FuQ29tcGlsZVdpdGhERgogCiB2b2lkIFByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsK
LSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBB
U1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VS
VCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRh
YmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERh
dGEoKSk7CiB9CiAKIHZvaWQgRXZhbENvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VS
VChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRD
b2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0g
cmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4
ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAog
dm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRU
eXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09w
dGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1l
bnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRh
YmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGVGb3IoKmdsb2JhbERhdGEoKSwgbV9pc0NvbnN0
cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKIH0KKwordm9pZCBQcm9n
cmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7
CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsK
KyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZ2xv
YmFsRGF0YSk7Cit9CisKK3ZvaWQgRXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29k
ZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxl
KCkpLT5qaXRDb21waWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEZ1bmN0aW9uQ29kZUJsb2Nr
OjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJU
KGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQo
dGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25F
eGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlRm9yKGdsb2JhbERhdGEs
IG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7Cit9CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTIzMDMsNiArMjQyMywxOCBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsZXMoKQogfQogI2VuZGlmCiAKK3ZvaWQg
Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpCit7CisjaWYg
IUVOQUJMRShPUENPREVfU0FNUExJTkcpICYmICFFTkFCTEUoTExJTlQpCisgICAgaWYgKEJ5dGVj
b2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmICghIWFsdGVybmF0aXZlKCkpCisgICAgICAgIGRpc2NhcmRCeXRlY29kZSgpOworICAgIGVs
c2UKKyAgICAgICAgZGlzY2FyZEJ5dGVjb2RlTGF0ZXIoKTsKKyNlbmRpZgorfQorCiAjaWZuZGVm
IE5ERUJVRwogYm9vbCBDb2RlQmxvY2s6OnVzZXNPcGNvZGUoT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZp
c2lvbiAxMDYwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpZm5kZWYgQ29kZUJsb2NrX2gK
ICNkZWZpbmUgQ29kZUJsb2NrX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIK
ICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJDYWxsUmV0dXJuT2Zmc2V0VG9C
eXRlY29kZU9mZnNldC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKQEAgLTUwLDYgKzUxLDcg
QEAKICNpbmNsdWRlICJKSVRXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJbmZv
LmgiCiAjaW5jbHVkZSAiTGluZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUg
IlByZWRpY3Rpb25UcmFja2VyLmgiCkBAIC02NSwxNiArNjcsMTEgQEAKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKIAotLy8gUmVnaXN0ZXIg
bnVtYmVycyB1c2VkIGluIGJ5dGVjb2RlIG9wZXJhdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbWVhbmlu
ZyBhY2NvcmRpbmcgdG8gdGhlaXIgcmFuZ2VzOgotLy8gICAgICAweDgwMDAwMDAwLTB4RkZGRkZG
RkYgIE5lZ2F0aXZlIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGVudHJp
ZXMgaW4gdGhlIGNhbGwgZnJhbWUsIHNlZSBSZWdpc3RlckZpbGUuaC4KLS8vICAgICAgMHgwMDAw
MDAwMC0weDNGRkZGRkZGICBGb3J3YXJkcyBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2lu
dGVyIGFyZSBsb2NhbCB2YXJzIGFuZCB0ZW1wb3JhcmllcyB3aXRoIHRoZSBmdW5jdGlvbidzIGNh
bGxmcmFtZS4KLS8vICAgICAgMHg0MDAwMDAwMC0weDdGRkZGRkZGICBQb3NpdGl2ZSBpbmRpY2Vz
IGZyb20gMHg0MDAwMDAwMCBzcGVjaWZ5IGVudHJpZXMgaW4gdGhlIGNvbnN0YW50IHBvb2wgb24g
dGhlIENvZGVCbG9jay4KLXN0YXRpYyBjb25zdCBpbnQgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXggPSAweDQwMDAwMDAwOwotCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEV4ZWNTdGF0
ZTsKICAgICBjbGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBpbmxpbmUgaW50IHVubW9kaWZpZWRB
cmd1bWVudHNSZWdpc3RlcihpbnQgYXJndW1lbnRzUmVnaXN0ZXIpIHsgcmV0dXJuIGFyZ3VtZW50
c1JlZ2lzdGVyIC0gMTsgfQogCkBAIC04Myw2ICs4MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBVbmNvbmRpdGlvbmFsRmluYWxpemVyLCBwdWJsaWMg
V2Vha1JlZmVyZW5jZUhhcnZlc3RlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBDb3B5UGFyc2VkQmxv
Y2tUYWcgeyBDb3B5UGFyc2VkQmxvY2sgfTsKICAgICBwcm90ZWN0ZWQ6CkBAIC0xMjMsNyArMTIx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB3aGlsZSAocmVzdWx0LT5hbHRlcm5h
dGl2ZSgpKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC0+YWx0ZXJuYXRpdmUoKTsK
ICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC0+
Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VS
VChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogI2VuZGlmCkBAIC0xMzQsMTEgKzEzMiw5
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNz
KCk7CiAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRV9PUENPREVfU0FNUExJTkcKICAg
ICAgICAgdm9pZCBkdW1wKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50U3Ry
dWN0dXJlcyhjb25zdCBJbnN0cnVjdGlvbiopIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50U3Ry
dWN0dXJlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQp
IGNvbnN0OwotI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2lzU3RyaWN0TW9kZTsgfQogCkBAIC0xOTQsMTUgKzE5MCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgcmV0dXJuICooYmluYXJ5U2VhcmNoPE1ldGhvZENhbGxMaW5rSW5m
bywgdW5zaWduZWQsIGdldE1ldGhvZENhbGxMaW5rSW5mb0J5dGVjb2RlSW5kZXg+KG1fbWV0aG9k
Q2FsbExpbmtJbmZvcy5iZWdpbigpLCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpLCBieXRl
Y29kZUluZGV4KSk7CiAgICAgICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9yYXJlRGF0YSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAg
IFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0g
bV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7Ci0gICAgICAgICAgICBpZiAoIWNh
bGxJbmRpY2VzLnNpemUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAg
IHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVu
c2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5k
aWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkp
KS0+Ynl0ZWNvZGVPZmZzZXQ7Ci0gICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQoRXhlY1N0YXRlKiwgUmV0dXJuQWRkcmVzc1B0cik7CiAKICAgICAgICAgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXRGb3JDYWxsQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAgewpA
QCAtMjIzLDExICsyMTEsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAg
ICAgIG1faW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nKTsKICAgICAgICAgfQorI2lmIEVOQUJM
RShMTElOVCkKKyAgICAgICAgdm9pZCBsaW5rSW5jb21pbmdDYWxsKExMSW50Q2FsbExpbmtJbmZv
KiBpbmNvbWluZykKKyAgICAgICAgeworICAgICAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMu
cHVzaChpbmNvbWluZyk7CisgICAgICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAgICAg
ICAgIAogICAgICAgICB2b2lkIHVubGlua0luY29taW5nQ2FsbHMoKTsKLSNlbmRpZgorI2VuZGlm
IC8vIEVOQUJMRShKSVQpCiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJ
VCkgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICB2b2lkIHNldEpJVENvZGVNYXAoUGFzc093blB0
cjxDb21wYWN0SklUQ29kZU1hcD4gaml0Q29kZU1hcCkKICAgICAgICAgewogICAgICAgICAgICAg
bV9qaXRDb2RlTWFwID0gaml0Q29kZU1hcDsKQEAgLTIzNiw3ICsyMzAsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG1faml0Q29kZU1hcC5nZXQoKTsK
ICAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIAorI2lmIEVOQUJMRShERkdfSklUKQogICAgICAg
ICB2b2lkIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmICghIW1fZGZnRGF0YSkKQEAgLTMzNSwxMiArMzMxLDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJlc3MpCiAgICAgICAg
IHsKKyAgICAgICAgICAgIEFTU0VSVChyZXR1cm5BZGRyZXNzID49IGluc3RydWN0aW9ucygpLmJl
Z2luKCkgJiYgcmV0dXJuQWRkcmVzcyA8IGluc3RydWN0aW9ucygpLmVuZCgpKTsKICAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnN0cnVjdGlvbio+KHJldHVybkFkZHJlc3MpIC0gaW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICAgICAgfQotI2VuZGlmCiAKICAgICAgICAgdm9pZCBz
ZXRJc051bWVyaWNDb21wYXJlRnVuY3Rpb24oYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24p
IHsgbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb24gPSBpc051bWVyaWNDb21wYXJlRnVuY3Rpb247
IH0KICAgICAgICAgYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24oKSB7IHJldHVybiBtX2lz
TnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQpAQCAtMzU0LDE3ICszNDksOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgbV9zaG91bGREaXNjYXJkQnl0ZWNvZGUgPSB0
cnVlOwogICAgICAgICB9Ci0gICAgICAgIHZvaWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bw
b3J0dW5pdHkoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoISFhbHRlcm5hdGl2ZSgpKQot
ICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZSgpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZUxhdGVyKCk7Ci0gICAgICAgIH0KKyAgICAgICAg
dm9pZCBoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAgICAgICAKLSNp
Zm5kZWYgTkRFQlVHCiAgICAgICAgIGJvb2wgdXNlc09wY29kZShPcGNvZGVJRCk7Ci0jZW5kaWYK
IAogICAgICAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50KCkgeyByZXR1cm4gbV9pbnN0cnVj
dGlvbkNvdW50OyB9CiAgICAgICAgIHZvaWQgc2V0SW5zdHJ1Y3Rpb25Db3VudCh1bnNpZ25lZCBp
bnN0cnVjdGlvbkNvdW50KSB7IG1faW5zdHJ1Y3Rpb25Db3VudCA9IGluc3RydWN0aW9uQ291bnQ7
IH0KQEAgLTM4NywxNyArMzc0LDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeGVjdXRh
YmxlTWVtb3J5SGFuZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgeyByZXR1cm4gZ2V0SklUQ29kZSgp
LmdldEV4ZWN1dGFibGVNZW1vcnkoKTsgfQogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21w
aWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKikgPSAwOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgamV0dGlzb24oKSA9IDA7CisgICAgICAgIGJvb2wgaml0Q29tcGlsZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChnZXRKSVRU
eXBlKCkgIT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykgeworICAgICAgICAgICAgICAgIEFT
U0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGppdENvbXBpbGVJ
bXBsKGdsb2JhbERhdGEpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAg
ICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgPSAwOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKSA9IDA7CiAgICAgICAgIGJvb2wgaGFzT3B0aW1p
emVkUmVwbGFjZW1lbnQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlw
ZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2Rl
Ojppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIGJvb2wgcmVzdWx0
ID0gcmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID4gZ2V0SklUVHlwZSgpOwogI2lmICFBU1NF
UlRfRElTQUJMRUQKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAgQVNT
RVJUKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwogICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmdl
dEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgQVNT
RVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSkp
OwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpID09IHRoaXMpOwogICAgICAg
ICAgICAgfQogI2VuZGlmCkBAIC00NTYsMTggKzQ1MiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICB2b2lkIGNsZWFyRXZhbENhY2hlKCk7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIp
CiAgICAgICAgIHZvaWQgYWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbih1bnNpZ25lZCBwcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZ2xv
YmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CisgICAgICAgICAg
ICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbih1bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBt
X2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlv
bik7CisgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb25BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBhZGRMTElu
dENhbGxMaW5rSW5mbygpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0lu
Zm9zLmFwcGVuZChMTEludENhbGxMaW5rSW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiAmbV9s
bGludENhbGxMaW5rSW5mb3MubGFzdCgpOworICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUo
SklUKQogICAgICAgICB2b2lkIHNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKHNpemVfdCBz
aXplKSB7IG1fc3RydWN0dXJlU3R1YkluZm9zLmdyb3coc2l6ZSk7IH0KQEAgLTQ3Niw4ICs0NzUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbmZv
KHVuc2lnbmVkIGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAg
ICAgaWYgKG1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9i
YWxSZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbikpOworICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2Jh
bFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOwogICAgICAgICB9CiAgICAg
ICAgIEdsb2JhbFJlc29sdmVJbmZvJiBnbG9iYWxSZXNvbHZlSW5mbyhpbnQgaW5kZXgpIHsgcmV0
dXJuIG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2luZGV4XTsgfQogICAgICAgICBib29sIGhhc0dsb2Jh
bFJlc29sdmVJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CkBA
IC00ODgsNiArNDg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBhZGRNZXRo
b2RDYWxsTGlua0luZm9zKHVuc2lnbmVkIG4pIHsgQVNTRVJUKG1fZ2xvYmFsRGF0YS0+Y2FuVXNl
SklUKCkpOyBtX21ldGhvZENhbGxMaW5rSW5mb3MuZ3JvdyhuKTsgfQogICAgICAgICBNZXRob2RD
YWxsTGlua0luZm8mIG1ldGhvZENhbGxMaW5rSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJuIG1fbWV0
aG9kQ2FsbExpbmtJbmZvc1tpbmRleF07IH0KKyAgICAgICAgc2l6ZV90IG51bWJlck9mTWV0aG9k
Q2FsbExpbmtJbmZvcygpIHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCk7IH0K
ICNlbmRpZgogICAgICAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC01MjgsNiAr
NTI3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJvZmlsZSA9PSByZXN1bHQp
OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQorICAgICAgICBQcmVkaWN0
ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNv
ZGVPZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZVByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigp
OworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCB0b3RhbE51bWJlck9mVmFs
dWVQcm9maWxlcygpCiAgICAgICAgIHsKQEAgLTU1NCwxMiArNTU3LDE2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTbG93Q2FzZShpbnQgYnl0
ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2Fz
ZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
dW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29k
ZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRpb25z
OjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+
KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VT
bG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBjb3Vs
ZFRha2VTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJl
dHVybiB2YWx1ZSA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBz
dGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRp
b25zOjpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQpAQCAtNTc4LDEyICs1
ODUsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRv
VGFrZVNwZWNpYWxGYXN0Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQg
PSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQp
LT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gc3BlY2lhbEZhc3RDYXNlQ291bnQgPj0g
T3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8
ZG91YmxlPihzcGVjaWFsRmFzdENhc2VDb3VudCkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0g
T3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKGludCBieXRlY29k
ZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJv
ZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNp
Z25lZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFz
dENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRl
Y29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gc2xv
d0Nhc2VDb3VudCAtIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNTkyLDYgKzYwMyw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VBbnlTbG93
Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVt
YmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5z
aWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNp
Z25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgKyBzcGVjaWFsRmFzdENhc2VDb3VudDsKQEAgLTY4
OSw3ICs3MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgYWRk
RnJlcXVlbnRFeGl0U2l0ZShjb25zdCBERkc6OkZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxp
bmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJ
VFR5cGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIG1fZXhpdFByb2ZpbGUuYWRkKHNpdGUpOwog
ICAgICAgICB9CiAKQEAgLTc5NCw2ICs4MDcsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgY29weVBvc3RQYXJzZURhdGFGcm9tKENvZGVCbG9jayogYWx0ZXJuYXRpdmUpOwogICAg
ICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbUFsdGVybmF0aXZlKCk7CiAgICAgICAgIAor
ICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gSklUdGluZyBraWNrcyBp
biwgaW4gYSBtaXhlZCBtb2RlCisgICAgICAgIC8vIGV4ZWN1dGlvbiB3b3JsZC4KKyAgICAgICAg
CisgICAgICAgIHZvaWQgZG9udEpJVEFueXRpbWVTb29uKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yRG9udEpJVEFueXRpbWVTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lk
IGppdEFmdGVyV2FybVVwKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVD
b3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0U29vbigpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvckpJVFNvb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludDMy
X3QgbGxpbnRFeGVjdXRlQ291bnRlcigpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAg
IC8vIEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiB0aWVyZWQgY29tcGlsYXRpb24ga2lj
a3MgaW4uIFRoaXMKICAgICAgICAgLy8gY29udHJvbHMgYm90aCB3aGVuIHRoZSBvcHRpbWl6aW5n
IGNvbXBpbGVyIGlzIGludm9rZWQgYW5kIHdoZW4gT1NSCiAgICAgICAgIC8vIGVudHJ5IGhhcHBl
bnMuIFR3byB0cmlnZ2VycyBleGlzdDogdGhlIGxvb3AgdHJpZ2dlciBhbmQgdGhlIHJldHVybgpA
QCAtOTg2LDYgKzEwMjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3Nob3Vs
ZERpc2NhcmRCeXRlY29kZTsKIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB2b2lk
IGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCk7CiAgICAgICAgIApAQCAtOTk4LDcgKzEwMzUsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCB0YWxseUZyZXF1ZW50RXhpdFNpdGVzKCkg
eyB9CiAjZW5kaWYKICAgICAgICAgCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BD
T0RFX1NBTVBMSU5HKQogICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKiwgY29uc3QgVmVjdG9y
PEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImIGJlZ2luLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+
Ojpjb25zdF9pdGVyYXRvciYpIGNvbnN0OwogCiAgICAgICAgIENTdHJpbmcgcmVnaXN0ZXJOYW1l
KEV4ZWNTdGF0ZSosIGludCByKSBjb25zdDsKQEAgLTEwMDgsNyArMTA0NCw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIHByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2Nh
dGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBv
cCkgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRDYWxsT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0
aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9w
KSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFB1dEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9j
YXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciog
b3ApIGNvbnN0OwotI2VuZGlmCiAgICAgICAgIHZvaWQgdmlzaXRTdHJ1Y3R1cmVzKFNsb3RWaXNp
dG9yJiwgSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3Q7CiAgICAgICAgIAogI2lmIEVOQUJMRShERkdf
SklUKQpAQCAtMTA2OSw5ICsxMTA0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQ
dHI8U291cmNlUHJvdmlkZXI+IG1fc291cmNlOwogICAgICAgICB1bnNpZ25lZCBtX3NvdXJjZU9m
ZnNldDsKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgVmVjdG9yPHVuc2lnbmVk
PiBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zOwogICAgICAgICBWZWN0b3I8dW5zaWduZWQ+
IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uczsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAg
IFNlZ21lbnRlZFZlY3RvcjxMTEludENhbGxMaW5rSW5mbywgOD4gbV9sbGludENhbGxMaW5rSW5m
b3M7CisgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxMTEludENhbGxMaW5rSW5mbywgQmFzaWNS
YXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0xMSW50Q2FsbHM7
CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBWZWN0b3I8U3RydWN0dXJlU3R1Yklu
Zm8+IG1fc3RydWN0dXJlU3R1YkluZm9zOwpAQCAtMTA4Miw5ICsxMTE5LDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlV2l0aEFyaXR5
Q2hlY2s7CiAgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxDYWxsTGlua0luZm8sIEJhc2ljUmF3
U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5nQ2FsbHM7CiAjZW5kaWYKLSNp
ZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQog
ICAgICAgICBPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IG1faml0Q29kZU1hcDsKLSAgICAgICAg
CisjZW5kaWYKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgc3RydWN0IFdlYWtSZWZlcmVu
Y2VUcmFuc2l0aW9uIHsKICAgICAgICAgICAgIFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uKCkgeyB9
CiAgICAgICAgICAgICAKQEAgLTExNDcsMTIgKzExODUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgT3duUHRyPENvZGVCbG9jaz4gbV9hbHRlcm5hdGl2ZTsKICAgICAgICAgCisgICAg
ICAgIGludDMyX3QgbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICAKICAgICAgICAgaW50
MzJfdCBtX2ppdEV4ZWN1dGVDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZl
U3VjY2Vzc0NvdW50ZXI7CiAgICAgICAgIHVpbnQzMl90IG1fc3BlY3VsYXRpdmVGYWlsQ291bnRl
cjsKICAgICAgICAgdWludDhfdCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcjsKICAgICAgICAg
dWludDhfdCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwotCisgICAgICAgIAogICAgICAg
ICBzdHJ1Y3QgUmFyZURhdGEgewogICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICAgICAgcHVibGljOgpAQCAtMTIyNSw2ICsxMjY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVk
KEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0
aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRh
Jik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtMTI1OSw2ICsxMzAw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpT
T2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0
Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiBy
ZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsK
ICNlbmRpZgpAQCAtMTI5Niw2ICsxMzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVj
dGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0
ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAg
ICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJv
b2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTA2MDcxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNywyMCArMjcsNDkgQEAKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgi
CiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVy
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRC
bG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworICAgIFVOVVNFRF9QQVJB
TShpZGVudCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4
OworICAgIAorICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9tZXRo
b2RfY2hlY2spCisgICAgICAgIGluc3RydWN0aW9uKys7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOworICAgIGlmICghc3RydWN0
dXJlKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1
cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gc3Ry
dWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlm
IChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5m
b3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOworICAgIAorICAgIHJl
dHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZURpcmVjdCwgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSks
IG9mZnNldCwgZmFsc2UpOworI2Vsc2UKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9y
bWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyNlbmRpZgorfQorCiBH
ZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAg
ICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2Rl
SW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5B
QkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZTdHJ1
Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmls
ZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAgIC8vIEZpcnN0IGNoZWNr
IGlmIGl0IG1ha2VzIGVpdGhlciBjYWxscywgaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIHN1
cGVyIGNhcmVmdWwsIG9yCiAgICAgLy8gaWYgaXQncyBub3Qgc2V0IGF0IGFsbCwgaW4gd2hpY2gg
Y2FzZSB3ZSBwdW50LgogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVk
QmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1YkluZm8uc2Vl
bikKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJl
U2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmls
ZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgIAogICAgIFBvbHltb3JwaGljQWNj
ZXNzU3RydWN0dXJlTGlzdCogbGlzdDsKICAgICBpbnQgbGlzdFNpemU7CkBAIC02MCwxOCArODks
MTkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIH0KICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKICAgICAgICAgaWYgKCFsaXN0
LT5saXN0W2ldLmlzRGlyZWN0KQotICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTWFr
ZXNDYWxscywgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgICAgIHJldHVybiBH
ZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7
CiAgICAgfQogICAgIAogICAgIC8vIE5leHQgY2hlY2sgaWYgaXQgdGFrZXMgc2xvdyBjYXNlLCBp
biB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUga2luZCBvZiBjYXJlZnVsLgogICAgIGlmIChwcm9m
aWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKLSAgICAgICAg
cmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgU3RydWN0dXJlU2V0KCksIG5vdEZv
dW5kKTsKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgU3RydWN0
dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsKICAgICAKICAgICAvLyBGaW5hbGx5IGZpZ3VyZSBv
dXQgaWYgd2UgY2FuIGRlcml2ZSBhbiBhY2Nlc3Mgc3RyYXRlZ3kuCiAgICAgR2V0QnlJZFN0YXR1
cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fd2FzU2VlbkluSklUID0gdHJ1ZTsKICAgICBzd2l0Y2gg
KHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIGFjY2Vzc191bnNldDoKLSAgICAgICAg
cmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZv
dW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0
ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRf
c2VsZjogewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZvLnUuZ2V0QnlJ
ZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKQEAgLTEzMCw3ICsxNjAsNyBAQCBHZXRC
eUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgCiAgICAgcmV0dXJuIHJl
c3VsdDsKICNlbHNlIC8vIEVOQUJMRShKSVQpCi0gICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9J
bmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICByZXR1cm4gR2V0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsK
ICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEwNjA3MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDEwICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAgICBHZXRC
eUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwg
c2l6ZV90IG9mZnNldCkKKyAgICBHZXRCeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBTdHJ1
Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6ZV90IG9mZnNldCwgYm9vbCB3YXNTZWVuSW5KSVQp
CiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX3N0cnVjdHVyZVNldChzdHJ1
Y3R1cmVTZXQpCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICAgICAsIG1fd2FzU2Vl
bkluSklUKHdhc1NlZW5JbkpJVCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoc3RhdGUgPT0gU2lt
cGxlRGlyZWN0KSA9PSAob2Zmc2V0ICE9IG5vdEZvdW5kKSk7CiAgICAgfQpAQCAtNzAsMTAgKzcx
LDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9CiAgICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCisgICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBjb25z
dCB7IHJldHVybiBtX3dhc1NlZW5JbkpJVDsgfQorICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMg
R2V0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0
cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKICAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgYm9v
bCBtX3dhc1NlZW5JbkpJVDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHJldmlzaW9uIDEwNjA3
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpT
Q2VsbDsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47Cisg
ICAgc3RydWN0IExMSW50Q2FsbExpbmtJbmZvOwogICAgIHN0cnVjdCBWYWx1ZVByb2ZpbGU7CiAK
ICNpZiBFTkFCTEUoSklUKQpAQCAtMTQ2LDYgKzE0NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICNl
bmRpZgogCiAgICAgc3RydWN0IEluc3RydWN0aW9uIHsKKyAgICAgICAgSW5zdHJ1Y3Rpb24oKQor
ICAgICAgICB7CisgICAgICAgICAgICB1LmpzQ2VsbC5jbGVhcigpOworICAgICAgICB9CisgICAg
ICAgIAogICAgICAgICBJbnN0cnVjdGlvbihPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAjaWYg
IUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQpAQCAtMTgyLDYgKzE4OCw4IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIEluc3RydWN0aW9uKFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jIGdldHRlckZ1bmMpIHsgdS5nZXR0ZXJGdW5jID0gZ2V0dGVyRnVuYzsgfQogICAgICAg
ICAKKyAgICAgICAgSW5zdHJ1Y3Rpb24oTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykg
eyB1LmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsgfQorICAgICAgICAKICAgICAgICAgSW5z
dHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBwcm9maWxlKSB7IHUucHJvZmlsZSA9IHByb2ZpbGU7IH0K
IAogICAgICAgICB1bmlvbiB7CkBAIC0xOTEsNyArMTk5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBzdHJ1Y3R1cmVDaGFp
bjsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8SlNDZWxsPiBqc0NlbGw7CiAgICAgICAg
ICAgICBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jOworICAgICAgICAgICAg
TExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbzsKICAgICAgICAgICAgIFZhbHVlUHJvZmls
ZSogcHJvZmlsZTsKKyAgICAgICAgICAgIHZvaWQqIHBvaW50ZXI7CiAgICAgICAgIH0gdTsKICAg
ICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MTEludENhbGxMaW5rSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBMTEludENhbGxMaW5rSW5mb19oCisjZGVmaW5lIExMSW50Q2FsbExpbmtJ
bmZvX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK3N0cnVjdCBMTEludENhbGxMaW5r
SW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4gewor
ICAgIExMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAgfQorICAgIAorICAgIH5MTEludENh
bGxMaW5rSW5mbygpCisgICAgeworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAg
IHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4gY2Fs
bGVlOyB9CisgICAgCisgICAgdm9pZCB1bmxpbmsoKQorICAgIHsKKyAgICAgICAgY2FsbGVlLmNs
ZWFyKCk7CisgICAgICAgIG1hY2hpbmVDb2RlVGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KCk7CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAg
fQorICAgIAorICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxsZWU7CisgICAgV3JpdGVC
YXJyaWVyPEpTRnVuY3Rpb24+IGxhc3RTZWVuQ2FsbGVlOworICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciBtYWNoaW5lQ29kZVRhcmdldDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gTExJbnRDYWxsTGlua0luZm9faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9u
IDEwNjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlu
a1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDExIEBAIE1ldGhvZENhbGxM
aW5rU3RhdHVzIE1ldGhvZENhbGxMaW5rU3RhdHUKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRC
bG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lmIEVOQUJMRShKSVQp
ICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAvLyBOT1RFOiBUaGlzIGRvZXMgbm90IGhh
dmUgYW4gTExJbnQgZmFsbC1iYWNrIGJlY2F1c2UgTExJbnQgZG9lcyBub3QgZG8gYW55IG1ldGhv
ZAorICAgIC8vIGNhbGwgbGluayBjYWNoaW5nLgorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVt
YmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKCkpCisgICAgICAgIHJldHVybiBNZXRob2RDYWxsTGlu
a1N0YXR1cygpOworICAgIAogICAgIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9kQ2FsbCA9IHBy
b2ZpbGVkQmxvY2stPmdldE1ldGhvZENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KTsKICAgICAK
ICAgICBpZiAoIW1ldGhvZENhbGwuc2VlbiB8fCAhbWV0aG9kQ2FsbC5jYWNoZWRTdHJ1Y3R1cmUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAx
MDYwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFj
cm8ob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5
X2lkLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uLCA5KSBcCisg
ICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwgOSkgXAorICAgICAg
ICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwKICAgICAgICAgbWFj
cm8ob3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lk
X2dlbmVyaWMsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBcCkBAIC0yMDIs
NiArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgZW51bSB7IEZPUl9F
QUNIX09QQ09ERV9JRChPUENPREVfSURfRU5VTSkgfSBPcGNvZGVJRDsKICAgICAjdW5kZWYgT1BD
T0RFX0lEX0VOVU0KIAorICAgIGNvbnN0IGludCBtYXhPcGNvZGVMZW5ndGggPSA5OwogICAgIGNv
bnN0IGludCBudW1PcGNvZGVJRHMgPSBvcF9lbmQgKyAxOwogCiAgICAgI2RlZmluZSBPUENPREVf
SURfTEVOR1RIUyhpZCwgbGVuZ3RoKSBjb25zdCBpbnQgaWQjI19sZW5ndGggPSBsZW5ndGg7CkBA
IC0yMTgsNyArMjIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZPUl9FQUNIX09QQ09E
RV9JRChWRVJJRllfT1BDT0RFX0lEKTsKICAgICAjdW5kZWYgVkVSSUZZX09QQ09ERV9JRAogCi0j
aWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVE
X0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICNpZiBDT01QSUxFUihSVkNUKSB8
fCBDT01QSUxFUihJTlRFTCkKICAgICB0eXBlZGVmIHZvaWQqIE9wY29kZTsKICNlbHNlCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
CShyZXZpc2lvbiAxMDYwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDI3ICsyNyw2OSBAQAogI2luY2x1
ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUg
Ikxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRl
ICJTdHJ1Y3R1cmVDaGFpbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorUHV0QnlJZFN0YXR1cyBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgVU5VU0VE
X1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsK
KyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
ICsgYnl0ZWNvZGVJbmRleDsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rp
b25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUpCisgICAgICAgIHJl
dHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAg
ICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lk
KSB7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9j
ay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQp
CisgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAw
LCBub3RGb3VuZCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1w
bGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIEFT
U0VSVChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3QKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxp
bnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAKKyAgICBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpOworICAgIFN0
cnVjdHVyZUNoYWluKiBjaGFpbiA9IGluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0
KCk7CisgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7CisgICAgQVNTRVJUKGNoYWluKTsKKyAgICAK
KyAgICBzaXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmds
b2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsK
KyAgICAKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVUcmFuc2l0aW9uLCBzdHJ1Y3R1
cmUsIG5ld1N0cnVjdHVyZSwgY2hhaW4sIG9mZnNldCk7CisjZWxzZQorICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyNlbmRpZgorfQor
CiBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9m
aWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKIHsK
ICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVj
b2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYg
RU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZT
dHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJv
ZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAgIGlmIChwcm9maWxl
ZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKICAgICAgICAgcmV0
dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOwogICAg
IAogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVkQmxvY2stPmdldFN0
dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1YkluZm8uc2VlbikKLSAgICAgICAg
cmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOwor
ICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUlu
ZGV4LCBpZGVudCk7CiAgICAgCiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAg
ICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5m
b3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9t
TExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAg
ICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTogewogICAgICAgICBzaXplX3Qgb2Zmc2V0
ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJ
KHJldmlzaW9uIDEwNjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDggQEAgcHVibGljOgogICAg
IHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAogcHJpdmF0
ZToKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayos
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKICAgICBTdGF0ZSBt
X3N0YXRlOwogICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJlKiBt
X25ld1N0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMDYwNzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkJhdGNoZWRUcmFu
c2l0aW9uT3B0aW1pemVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVVN0
cmluZy5oIgpAQCAtMTE2LDI2ICsxMTcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZXhwZWN0
ZWQgYnkgdGhlIGNhbGxlZS4KICovCiAKLSNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgYm9vbCBzX2R1
bXBzR2VuZXJhdGVkQ29kZSA9IGZhbHNlOwotI2VuZGlmCiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZShib29sIGR1bXBzR2VuZXJhdGVkQ29kZSkKIHsKLSNp
Zm5kZWYgTkRFQlVHCiAgICAgc19kdW1wc0dlbmVyYXRlZENvZGUgPSBkdW1wc0dlbmVyYXRlZENv
ZGU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkdW1wc0dlbmVyYXRlZENvZGUpOwotI2VuZGlm
CiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpCiB7Ci0j
aWZuZGVmIE5ERUJVRwogICAgIHJldHVybiBzX2R1bXBzR2VuZXJhdGVkQ29kZTsKLSNlbHNlCi0g
ICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAKIEpTT2JqZWN0KiBCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGUoKQpAQCAtMTQ4LDEwICsxMzksOCBAQCBKU09iamVjdCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRlKCkKIAogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVjdGlvbkNvdW50
KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogCi0jaWZuZGVmIE5ERUJVRwog
ICAgIGlmIChzX2R1bXBzR2VuZXJhdGVkQ29kZSkKICAgICAgICAgbV9jb2RlQmxvY2stPmR1bXAo
bV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7Ci0jZW5kaWYKIAogICAg
IGlmICgobV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNvZGUgJiYgIW1fY29kZUJsb2NrLT5uZWVkc0Z1
bGxTY29wZUNoYWluKCkgJiYgIW1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpIHx8IG1fY29k
ZVR5cGUgPT0gRXZhbENvZGUpCiAgICAgICAgIHN5bWJvbFRhYmxlKCkuY2xlYXIoKTsKQEAgLTEy
NzYsOSArMTI2NSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wK
ICNpZiBFTkFCTEUoSklUKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUlu
Zm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRF
UikKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0
cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IGVtaXRQcm9maWxlZE9wY29kZShyZXF1aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZl
X2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDQwLDkgKzE0MjcsNyBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2Nv
ZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNl
bmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBW
YWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWlj
Q2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDkwLDkgKzE0NzUs
NyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxF
KEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVC
bG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
Ci0jZW5kaWYKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUo
cmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jl
c29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgo
KSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBA
IC0xNTExLDkgKzE0OTQsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TWV0aG9kQ2hl
Y2soCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJZChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQog
ewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBW
YWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2J5X2lkKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKQEAgLTE1MzksOSArMTUy
MCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXIKIAogUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFC
TEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1pdE9wY29kZShv
cF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsK
QEAgLTE1NTcsOSArMTUzNiw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHV0QnkKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlk
KFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklE
KiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFk
ZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRp
ZgogICAgIAogICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBAIC0xODQ4LDcgKzE4MjUsMTEgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKAogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxs
QXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAv
LyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQ
cm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7
CkBAIC0xOTUyLDcgKzE5MzMsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDb25zdAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVu
YwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChj
YWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVO
QUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExM
SW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7
CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBp
Z25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFBy
b2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0yMjEzLDcgKzIxOTgsMTEgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaAogewogICAgIG1fdXNlc0V4
Y2VwdGlvbnMgPSB0cnVlOwogI2lmIEVOQUJMRShKSVQpCisjaWYgRU5BQkxFKExMSU5UKQorICAg
IEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCks
IGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3Bl
RGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX2Nh
dGNoKSkgfTsKKyNlbHNlCiAgICAgSGFuZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwg
MCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29w
ZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0aW9uTGFiZWwoKSB9OworI2VuZGlm
CiAjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQt
PmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCAr
IG1fYmFzZVNjb3BlRGVwdGggfTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEwNjA3MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MDQsOSArNjA0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIFVOVVNFRF9Q
QVJBTShub2RlSW5kZXgpOwogICAgICAgICAKLSAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxl
ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRl
Y29kZU9mZnNldChieXRlY29kZUluZGV4KTsKLSAgICAgICAgQVNTRVJUKHByb2ZpbGUpOwotICAg
ICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oKTsKKyAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQog
ICAgICAgICBwcmludGYoIkR5bmFtaWMgW0AldSwgYmMjJXVdIHByZWRpY3Rpb246ICVzXG4iLCBu
b2RlSW5kZXgsIGJ5dGVjb2RlSW5kZXgsIHByZWRpY3Rpb25Ub1N0cmluZyhwcmVkaWN0aW9uKSk7
CiAjZW5kaWYKQEAgLTEwNDEsNiArMTAzOSw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUlubGluaW5nKGJvb2wKICAgICAKICAgICAvLyBJZiB3ZSBnZXQgaGVyZSB0aGVuIGl0IGxvb2tz
IGxpa2Ugd2Ugc2hvdWxkIGRlZmluaXRlbHkgaW5saW5lIHRoaXMgY29kZS4gUHJvY2VlZAogICAg
IC8vIHdpdGggcGFyc2luZyB0aGUgY29kZSB0byBnZXQgYnl0ZWNvZGUsIHNvIHRoYXQgd2UgY2Fu
IHRoZW4gcGFyc2UgdGhlIGJ5dGVjb2RlLgorICAgIC8vIE5vdGUgdGhhdCBpZiBMTEludCBpcyBl
bmFibGVkLCB0aGUgYnl0ZWNvZGUgd2lsbCBhbHdheXMgYmUgYXZhaWxhYmxlLiBBbHNvIG5vdGUK
KyAgICAvLyB0aGF0IGlmIExMSW50IGlzIGVuYWJsZWQsIHdlIG1heSBpbmxpbmUgYSBjb2RlIGJs
b2NrIHRoYXQgaGFzIG5ldmVyIGJlZW4gSklUdGVkCisgICAgLy8gYmVmb3JlIQogICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2tDYWNoZS5nZXQoQ29kZUJsb2NrS2V5KGV4ZWN1
dGFibGUsIGtpbmQpLCBleHBlY3RlZEZ1bmN0aW9uLT5zY29wZSgpKTsKICAgICBpZiAoIWNvZGVC
bG9jaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTc0MSw3ICsxNzQyLDcgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9jdXJyZW50SW5kZXgpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBpZiAobWV0aG9kQ2FsbFN0YXR1cy5pc1NldCgpCi0gICAgICAgICAg
ICAgICAgJiYgIWdldEJ5SWRTdGF0dXMuaXNTZXQoKQorICAgICAgICAgICAgICAgICYmICFnZXRC
eUlkU3RhdHVzLndhc1NlZW5JbkpJVCgpCiAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hl
KSkgewogICAgICAgICAgICAgICAgIC8vIEl0J3MgbW9ub21vcnBoaWMgYXMgZmFyIGFzIHdlIGNh
biB0ZWxsLCBzaW5jZSB0aGUgbWV0aG9kX2NoZWNrIHdhcyBsaW5rZWQKICAgICAgICAgICAgICAg
ICAvLyBidXQgdGhlIHNsb3cgcGF0aCAoaS5lLiB0aGUgbm9ybWFsIGdldF9ieV9pZCkgbmV2ZXIg
ZmlyZWQuCkBAIC0xODEwLDcgKzE4MTEsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9ieV9pZCk7CiAg
ICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6IHsKKyAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Ogor
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogewogICAgICAgICAg
ICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQp
OwogICAgICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9p
bmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZF07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmgJKHJldmlzaW9uIDEwNjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw2ICsxMTEsOCBAQCBpbmxpbmUg
Ym9vbCBjYW5Db21waWxlT3Bjb2RlKE9wY29kZUlEIG9wCiAgICAgY2FzZSBvcF9wdXRfc2NvcGVk
X3ZhcjoKICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBjYXNlIG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyOgogICAg
IGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6CiAgICAgY2FzZSBvcF9qbXA6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lv
biAxMDYwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDIxIEBAIHZvaWQgY29tcGlsZU9TUkV4
aXQoRXhlY1N0YXRlKiBleGVjKQogICAgIHVpbnQzMl90IGV4aXRJbmRleCA9IGdsb2JhbERhdGEt
Pm9zckV4aXRJbmRleDsKICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrLT5vc3JFeGl0KGV4
aXRJbmRleCk7CiAgICAgCisgICAgLy8gTWFrZSBzdXJlIGFsbCBjb2RlIG9uIG91ciBpbmxpbmUg
c3RhY2sgaXMgSklUIGNvbXBpbGVkLiBUaGlzIGlzIG5lY2Vzc2FyeSBzaW5jZQorICAgIC8vIHdl
IG1heSBvcHQgdG8gaW5saW5lIGEgY29kZSBibG9jayBldmVuIGJlZm9yZSBpdCBoYWQgZXZlciBi
ZWVuIGNvbXBpbGVkIGJ5IHRoZQorICAgIC8vIEpJVCwgYnV0IG91ciBPU1IgZXhpdCBpbmZyYXN0
cnVjdHVyZSBjdXJyZW50bHkgb25seSB3b3JrcyBpZiB0aGUgdGFyZ2V0IG9mIHRoZQorICAgIC8v
IE9TUiBleGl0IGlzIEpJVCBjb2RlLiBUaGlzIGNvdWxkIGJlIGNoYW5nZWQgc2luY2UgdGhlcmUg
aXMgbm90aGluZyBwYXJ0aWN1bGFybHkKKyAgICAvLyBoYXJkIGFib3V0IGRvaW5nIGFuIE9TUiBl
eGl0IGludG8gdGhlIGludGVycHJldGVyLCBidXQgZm9yIG5vdyB0aGlzIHNlZW1zIHRvIG1ha2UK
KyAgICAvLyBzZW5zZSBpbiB0aGF0IGlmIHdlJ3JlIE9TUiBleGl0aW5nIGZyb20gaW5saW5lZCBj
b2RlIG9mIGEgREZHIGNvZGUgYmxvY2ssIHRoZW4KKyAgICAvLyBwcm9iYWJseSBpdCdzIGEgZ29v
ZCBzaWduIHRoYXQgdGhlIHRoaW5nIHdlJ3JlIGV4aXRpbmcgaW50byBpcyBob3QuIEV2ZW4gbW9y
ZQorICAgIC8vIGludGVyZXN0aW5nbHksIHNpbmNlIHRoZSBjb2RlIHdhcyBpbmxpbmVkLCBpdCBt
YXkgbmV2ZXIgb3RoZXJ3aXNlIGdldCBKSVQKKyAgICAvLyBjb21waWxlZCBzaW5jZSB0aGUgYWN0
IG9mIGlubGluaW5nIGl0IG1heSBlbnN1cmUgdGhhdCBpdCBvdGhlcndpc2UgbmV2ZXIgcnVucy4K
KyAgICBmb3IgKENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luOyBjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZTsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lLT5jYWxsZXIpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4oY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpCisgICAgICAg
ICAgICAtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5p
c0NhbGwgPyBDb2RlRm9yQ2FsbCA6IENvZGVGb3JDb25zdHJ1Y3QpCisgICAgICAgICAgICAtPmpp
dENvbXBpbGUoKmdsb2JhbERhdGEpOworICAgIH0KKyAgICAKICAgICBTcGVjdWxhdGlvblJlY292
ZXJ5KiByZWNvdmVyeSA9IDA7CiAgICAgaWYgKGV4aXQubV9yZWNvdmVyeUluZGV4KQogICAgICAg
ICByZWNvdmVyeSA9ICZjb2RlQmxvY2stPnNwZWN1bGF0aW9uUmVjb3ZlcnkoZXhpdC5tX3JlY292
ZXJ5SW5kZXggLSAxKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMTA2MDcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKICNpbmNsdWRlICJE
RkdSZXBhdGNoLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUg
IkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIklubGluZUFTTS5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCkBAIC02NzEsNDggKzY3Miw2IEBAIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvbkNvbXBhcmVTdHIKICAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUo
KTsKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdp
dGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7Ci0KLSNpZiBDUFUoWDg2XzY0KQotYXNtICgKLSIuZ2xv
YmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9T
VFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglcjEz
KSwgJXIxM1xuIgotICAgICJtb3YgJXIxMywgJXJkaVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RS
SU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIK
LSk7Ci0jZWxpZiBDUFUoWDg2KQotYXNtICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgotICAgICJtb3YgJWVk
aSwgNCglZXNwKVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoQVJNX1RI
VU1CMikKLWFzbSAoCi0iLnRleHQiICJcbiIKLSIuYWxpZ24gMiIgIlxuIgotIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotIi50aHVtYiIgIlxuIgotIi50aHVtYl9mdW5jICIg
VEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RS
SU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgImxkciByNSwgW3I1LCAj
LTQwXSIgIlxuIgotICAgICJjcHkgcjAsIHI1IiAiXG4iCi0gICAgImIgIiBTWU1CT0xfU1RSSU5H
X1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7
Ci0jZW5kaWYKLQotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVy
blZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOwotICAgIAotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQotCiBz
dGF0aWMgdm9pZCogaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVl
IGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9BbGxvY2F0aW9uU3BhY2UuaAkocmV2aXNpb24gMTA2MDcxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvQWxsb2NhdGlvblNwYWNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM0LDYgKzM0LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOworY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgTWFya2VkQmxvY2s7CiAKIGNsYXNzIEFsbG9j
YXRpb25TcGFjZSB7CkBAIC02Nyw2ICs2OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNocmluaygp
OwogICAgIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworICAgIAogICAgIGVudW0gQWxsb2NhdGlvbkVmZm9ydCB7IEFsbG9jYXRpb25DYW5GYWlsLCBB
bGxvY2F0aW9uTXVzdFN1Y2NlZWQgfTsKIAogICAgIHZvaWQqIGFsbG9jYXRlKE1hcmtlZFNwYWNl
OjpTaXplQ2xhc3MmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZp
c2lvbiAxMDYwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtODM3LDcgKzgzNyw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRv
Z2dsZSBzd2VlcFRvZ2cKICAgICAgICAgc2V0SGlnaFdhdGVyTWFyayhtYXgocHJvcG9ydGlvbmFs
Qnl0ZXMsIG1fbWluQnl0ZXNQZXJDeWNsZSkpOwogICAgIH0KICAgICBKQVZBU0NSSVBUQ09SRV9H
Q19FTkQoKTsKLQorICAgIAogICAgICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwogfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMDYwNzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpT
VmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAgICBjbGFz
cyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTEzNiwxMSArMTM3LDEyIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9v
dHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZnJp
ZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQWxsb2NhdGlvblNw
YWNlOworICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOworICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxv
Y2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBCdW1wU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBTbG90VmlzaXRvcjsKLSAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKIAogICAgICAg
ICBzaXplX3Qgd2F0ZXJNYXJrKCk7CiAgICAgICAgIHNpemVfdCBoaWdoV2F0ZXJNYXJrKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDEw
NjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMwNCw3ICszMDQsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHZp
c2l0Q2hpbGRyZW4oCiAjZW5kaWYKIAogICAgIEFTU0VSVChIZWFwOjppc01hcmtlZChjZWxsKSk7
Ci0KKyAgICAKICAgICBpZiAoaXNKU1N0cmluZyhjZWxsKSkgewogICAgICAgICBKU1N0cmluZzo6
dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAg
ICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5o
CShyZXZpc2lvbiAxMDYwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
Y2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKK2Ns
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsKIGNsYXNzIFNs
b3RWaXNpdG9yOwogCkBAIC03Nyw2ICs3OCw4IEBAIHB1YmxpYzoKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBGdW5jdG9yPiB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIGZvckVhY2hCbG9jaygp
OwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgCiAgICAgLy8gWyAzMi4uLiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lz
ZVN0ZXAgPSBNYXJrZWRCbG9jazo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBw
cmVjaXNlQ3V0b2ZmID0gMjU2OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTA2MDcxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiAr
MTIyLDkgQEAgbmFtZXNwYWNlIEpTQyAgewogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAg
ICAgSW5zdHJ1Y3Rpb24qIHJldHVyblZQQygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJG
aWxlOjpSZXR1cm5QQ10udlBDKCk7IH0KICNlbmRpZgorI2lmIEVOQUJMRShMTElOVCkKKyAgICAg
ICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8
SW5zdHJ1Y3Rpb24qPih0aGlzW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0udGFnKCkpOyB9
CisjZW5kaWYKIAogICAgICAgICB2b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogY2FsbGVy
RnJhbWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OkNhbGxl
ckZyYW1lXSA9IGNhbGxlckZyYW1lOyB9CiAgICAgICAgIHZvaWQgc2V0U2NvcGVDaGFpbihTY29w
ZUNoYWluTm9kZSogc2NvcGVDaGFpbikgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1Jl
Z2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0gPSBzY29wZUNoYWluOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9u
IDEwNjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRlICJKSVQuaCIK
ICNlbmRpZgogCi0jZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAo
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkK
KyNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EICgoRU5BQkxFKENP
TVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkpICYmICFkZWZpbmVkKF9f
bGx2bV9fKSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNTQ3LDE3ICs1NDcsNDMgQEAg
SW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKIHsKIH0KIAotdm9pZCBJbnRlcnByZXRlcjo6aW5p
dGlhbGl6ZShib29sIGNhblVzZUpJVCkKK0ludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIoKQogewot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkK
KyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICBkZWxldGVbXSBtX29wY29kZVRhYmxlOworI2Vu
ZGlmCit9CisKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRhdGEqIGxsaW50
RGF0YSwgYm9vbCBjYW5Vc2VKSVQpCit7CisgICAgVU5VU0VEX1BBUkFNKGxsaW50RGF0YSk7Cisg
ICAgVU5VU0VEX1BBUkFNKGNhblVzZUpJVCk7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpCisgICAgLy8gSGF2aW5nIExMSW50IGVuYWJsZWQsIGJ1dCBub3QgYmVpbmcgYWJs
ZSB0byB1c2UgdGhlIEpJVCwgYW5kIG5vdCBoYXZpbmcKKyAgICAvLyBhIGNvbXB1dGVkIGdvdG8g
aW50ZXJwcmV0ZXIsIGlzIG5vdCBzdXBwb3J0ZWQuIE5vdCBiZWNhdXNlIHdlIGNhbm5vdAorICAg
IC8vIHN1cHBvcnQgaXQsIGJ1dCBiZWNhdXNlIEkgZGVjaWRlZCB0byBkcmF3IHRoZSBsaW5lIGF0
IHRoZSBudW1iZXIgb2YKKyAgICAvLyBwZXJtdXRhdGlvbnMgb2YgZXhlY3V0aW9uIGVuZ2luZXMg
dGhhdCBJIHdhbnRlZCB0aGlzIGNvZGUgdG8gZ3Jvay4KKyAgICBBU1NFUlQoY2FuVXNlSklUKTsK
KyNlbmRpZgogICAgIGlmIChjYW5Vc2VKSVQpIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAg
IG1fb3Bjb2RlVGFibGUgPSBsbGludERhdGEtPm9wY29kZU1hcCgpOworICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQorICAgICAgICAgICAgbV9vcGNvZGVJRFRh
YmxlLmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworI2Vs
c2UKICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0
aW5hdGlvbnMgZm9yIG9wY29kZXMuCiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlID0gYml0
d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpKTsKICAgICAgICAgICAg
IG1fb3Bjb2RlVGFibGVbaV0gPSBvcGNvZGU7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0gZWxz
ZSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbmV3IE9wY29k
ZVtudW1PcGNvZGVJRHNdOworI2VuZGlmCiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRpYWxp
emVBbmRSZXR1cm4sIDAsIDApOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBudW1PcGNvZGVJRHM7ICsraSkKQEAgLTU2Niw3ICs1OTIsNiBAQCB2b2lkIEludGVycHJldGVy
Ojppbml0aWFsaXplKGJvb2wgY2FuVXNlCiAgICAgICAgIG1fZW5hYmxlZCA9IHRydWU7CiAgICAg
fQogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2FuVXNlSklUKTsKICNpZiBFTkFCTEUoSU5URVJQ
UkVURVIpCiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICNlbHNlCkBAIC02NjcsOSArNjkyLDExIEBA
IHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW0KIAogYm9vbCBJbnRlcnBy
ZXRlcjo6aXNPcGNvZGUoT3Bjb2RlIG9wY29kZSkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09U
T19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwg
RU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoTExJTlQpCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAg
ICAgICAgIHJldHVybiBvcGNvZGUgPj0gMCAmJiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSkgPD0gb3BfZW5kOworI2VuZGlmCiAgICAgcmV0dXJu
IG9wY29kZSAhPSBIYXNoVHJhaXRzPE9wY29kZT46OmVtcHR5VmFsdWUoKQogICAgICAgICAmJiAh
SGFzaFRyYWl0czxPcGNvZGU+Ojppc0RlbGV0ZWRWYWx1ZShvcGNvZGUpCiAgICAgICAgICYmIG1f
b3Bjb2RlSURUYWJsZS5jb250YWlucyhvcGNvZGUpOwpAQCAtNzI2LDExICs3NTMsMTEgQEAgTkVW
RVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbAogICAgIC8vIGhhdmUgdG8gc3Vi
dHJhY3QgMS4KICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgaWYg
KGNhbGxlckZyYW1lLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCkpCi0gICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkp
OworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2Fs
bGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAgICAgZWxzZQogICAgICAgICBieXRl
Y29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5W
UEMoKSkgLSAxOwogI2VsaWYgRU5BQkxFKEpJVCkKLSAgICBieXRlY29kZU9mZnNldCA9IGNvZGVC
bG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29k
ZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFt
ZS0+cmV0dXJuUEMoKSk7CiAjZWxzZQogICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5i
eXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZW5kaWYKQEAgLTUx
NzAsMTAgKzUxOTcsMTAgQEAgdm9pZCBJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKENh
bAogICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZz
ZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSk7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBlbHNlCi0g
ICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChj
YWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNv
ZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMo
KSk7CiAjZW5kaWYKICNlbHNlCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZz
ZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJh
bWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAgICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVCbG9j
ay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAg
c291cmNlSUQgPSBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgJKHJldmlzaW9uIDEwNjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVk
ZSAiUmVnaXN0ZXJGaWxlLmgiCiAKQEAgLTQ1LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNs
YXNzIFNjb3BlQ2hhaW5Ob2RlOwpAQCAtMTAwLDE5ICsxMDIsMjEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBJbnRlcnByZXRlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2Fj
aGVkQ2FsbDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBwdWJsaWM6CiAgICAgICAgIEludGVycHJldGVy
KCk7CisgICAgICAgIH5JbnRlcnByZXRlcigpOwogICAgICAgICAKLSAgICAgICAgdm9pZCBpbml0
aWFsaXplKGJvb2wgY2FuVXNlSklUKTsKKyAgICAgICAgdm9pZCBpbml0aWFsaXplKExMSW50OjpE
YXRhKiwgYm9vbCBjYW5Vc2VKSVQpOwogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJG
aWxlKCkgeyByZXR1cm4gbV9yZWdpc3RlckZpbGU7IH0KICAgICAgICAgCiAgICAgICAgIE9wY29k
ZSBnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCht
X2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNp
ZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQogICAg
ICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlVGFibGVbaWRdOwogI2Vsc2UKICAgICAgICAgICAgIHJl
dHVybiBpZDsKQEAgLTEyMiw3ICsxMjYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9w
Y29kZUlEIGdldE9wY29kZUlEKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBS
RVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bj
b2RlKSk7CisgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVJRFRhYmxlLmdldChvcGNvZGUpOwor
I2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgICAgICBBU1NF
UlQoaXNPcGNvZGUob3Bjb2RlKSk7CiAgICAgICAgICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAg
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KG9wY29kZSkpOwpAQCAtMTMyLDYgKzEzOSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIHJldHVybiBvcGNvZGU7CiAjZW5kaWYKICAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgYm9vbCBlbmFibGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZW5h
YmxlZDsKKyAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIApAQCAt
MTk5LDcgKzIxMSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlckZpbGUg
bV9yZWdpc3RlckZpbGU7CiAgICAgICAgIAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVS
UFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgT3Bjb2RlKiBtX29wY29kZVRhYmxl
OyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCisgICAgICAgIEhhc2hN
YXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBP
cGNvZGVJRCBmb3IgZGVjb21waWxpbmcKKyNlbGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVS
UFJFVEVSKQogICAgICAgICBPcGNvZGUgbV9vcGNvZGVUYWJsZVtudW1PcGNvZGVJRHNdOyAvLyBN
YXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCiAgICAgICAgIEhhc2hNYXA8T3Bj
b2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJ
RCBmb3IgZGVjb21waWxpbmcKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkocmV2aXNpb24gMTA2MDcxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29uc2Vy
dmF0aXZlUm9vdHM7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBSZWdpc3RlckZpbGUgewogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShSZWdpc3RlckZpbGUpOwpAQCAtODEsNiArODIsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgZ3Jvd1Nsb3dD
YXNlKFJlZ2lzdGVyKik7CiAgICAgICAgIHZvaWQgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CiAg
ICAgICAgIHZvaWQgYWRkVG9Db21taXR0ZWRCeXRlQ291bnQobG9uZyk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJI
b3N0Q2FsbFJldHVyblZhbHVlLmgiCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRl
ICJJbmxpbmVBU00uaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTVmFsdWVJ
bmxpbmVNZXRob2RzLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorCituYW1lc3BhY2UgSlND
IHsKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09Q
VElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqKTsKKwor
I2lmIENQVShYODZfNjQpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCisgICAgIm1vdiAlcjEzLCAl
cmRpXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShYODYpCithc20gKAor
Ii5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lN
Qk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQw
KCVlZGkpLCAlZWRpXG4iCisgICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCisgICAgImptcCAiIFNZ
TUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0
ZSkgIlxuIgorKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorYXNtICgKKyIudGV4dCIgIlxuIgor
Ii5hbGlnbiAyIiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCisi
LnRodW1iIiAiXG4iCisiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkg
IjoiICJcbiIKKyAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCisgICAgImNweSByMCwgcjUi
ICJcbiIKKyAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVy
blZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbmRpZgorCitleHRlcm4gIkMiIEVuY29k
ZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJu
VmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RD
YWxsUmV0dXJuVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisjZGVmaW5lIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAor
CisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5o
IgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ0FMTElOR19DT05WRU5USU9OX0lT
X1NURENBTEwKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gQ0RFQ0wKKyNl
bHNlCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OCisjZW5kaWYKKworbmFt
ZXNwYWNlIEpTQyB7CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5f
VkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKK30KKworI2VuZGlmIC8vIEhv
c3RDYWxsUmV0dXJuVmFsdWVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShy
ZXZpc2lvbiAxMDYwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVN
YWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dpbGxfY2FsbCkKICAgICAg
ICAgREVGSU5FX09QKG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVz
aF9zY29wZSkKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6Cisg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJ
TkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2luZGV4KQog
ICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKQEAgLTQ4Nyw2ICs0ODksOCBAQCB2b2lk
IEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfcG9zdF9pbmMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVfZGVjKQog
ICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2luYykKKyAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lk
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsKQpAQCAtNTI2LDYgKzUzMCwxMCBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiBKSVRDb2RlIEpJVDo6cHJpdmF0
ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2spCiB7CisjaWYgRU5BQkxF
KEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIkNvbXBpbGluZyBKSVQgY29kZSFcbiIpOwor
I2VuZGlmCisgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogICAgIG1fY2FuQmVPcHRp
bWl6ZWQgPSBtX2NvZGVCbG9jay0+Y2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtNjkw
LDggKzY5OCwxMiBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAg
ICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gbV9jb2RlQmxvY2stPnN0cnVjdHVyZVN0
dWJJbmZvKG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mb1tpXS5wcm9wZXJ0eUFjY2Vzc0luZGV4
KS5jYWxsUmV0dXJuTG9jYXRpb247CiAgICAgfQogCi0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAg
aWYgKG1fY2FuQmVPcHRpbWl6ZWQpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExM
SU5UKQorICAgIGlmIChtX2NhbkJlT3B0aW1pemVkCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAg
ICB8fCB0cnVlCisjZW5kaWYKKyAgICAgICAgKSB7CiAgICAgICAgIENvbXBhY3RKSVRDb2RlTWFw
OjpFbmNvZGVyIGppdENvZGVNYXBFbmNvZGVyOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBtX2xhYmVscy5zaXplKCk7ICsrYnl0ZWNv
ZGVPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChtX2xhYmVsc1tieXRlY29kZU9mZnNldF0uaXNT
ZXQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCShyZXZpc2lvbiAxMDYw
NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSklUQ29kZSgpIHsg
fQogI2VuZGlmCiAgICAgcHVibGljOgotICAgICAgICBlbnVtIEpJVFR5cGUgeyBIb3N0Q2FsbFRo
dW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CisgICAgICAgIGVudW0gSklUVHlwZSB7IE5vbmUs
IEhvc3RDYWxsVGh1bmssIEludGVycHJldGVyVGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsK
ICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKSVRUeXBlIGJvdHRvbVRpZXJKSVQoKQogICAgICAg
ICB7CkBAIC02Niw4ICs2NiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBERkdKSVQ7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBib29sIGlzT3B0
aW1pemluZ0pJVChKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBqaXRUeXBlID09IERGR0pJVDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3RhdGlj
IGJvb2wgaXNCYXNlbGluZUNvZGUoSklUVHlwZSBqaXRUeXBlKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gaml0VHlwZSA9PSBJbnRlcnByZXRlclRodW5rIHx8IGppdFR5cGUgPT0gQmFz
ZWxpbmVKSVQ7CisgICAgICAgIH0KKyAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAg
SklUQ29kZSgpCisgICAgICAgICAgICA6IG1faml0VHlwZShOb25lKQogICAgICAgICB7CiAgICAg
ICAgIH0KIApAQCAtNzUsNiArODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIDog
bV9yZWYocmVmKQogICAgICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKICAgICAgICAgewor
ICAgICAgICAgICAgQVNTRVJUKGppdFR5cGUgIT0gTm9uZSk7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIGJvb2wgb3BlcmF0b3IgISgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVERyaXZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklURHJpdmVyLmgJKHJldmlzaW9uIDEwNjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURHJpdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE1ICszMywyMSBAQAog
I2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCiAj
aW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KIGlubGluZSBib29s
IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRy
PENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENvZGU6OkpJ
VFR5cGUgaml0VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5
cGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFnbG9iYWxEYXRhLmNh
blVzZUpJVCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVu
bGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7
CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAgICAgICBkZmdDb21waWxl
ZCA9IERGRzo6dHJ5Q29tcGlsZShnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUp
OwpAQCAtNTUsMTAgKzYxLDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUo
SlNHbAogICAgICAgICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERh
dGEsIGNvZGVCbG9jay5nZXQoKSk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5H
KQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQotICAg
ICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7Ci0j
ZW5kaWYKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5
KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cigpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY2LDkgKzY5LDE0IEBAIGlubGlu
ZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2wKIAogaW5saW5lIGJvb2wgaml0Q29t
cGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0
cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxl
KiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAgICBpZiAoaml0
VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgCiAgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKICAg
ICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29kZTo6
REZHSklUKQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZUZ1bmN0aW9uKGds
b2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNr
KTsKQEAgLTgzLDExICs5MSw3IEBAIGlubGluZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklmQXBw
cm9wcmkKICAgICAgICAgfQogICAgICAgICBqaXRDb2RlID0gSklUOjpjb21waWxlKCZnbG9iYWxE
YXRhLCBjb2RlQmxvY2suZ2V0KCksICZqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAgIH0KLSNp
ZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLSAgICBpZiAoIUJ5dGVjb2RlR2VuZXJhdG9yOjpk
dW1wc0dlbmVyYXRlZENvZGUoKSkKLSAgICAgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURp
c2NhcmRpbmdPcHBvcnR1bml0eSgpOwotI2VuZGlmCi0gICAgCisgICAgY29kZUJsb2NrLT5oYW5k
bGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAgIGNvZGVCbG9jay0+c2V0SklU
Q29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAgIAogICAgIHJldHVybiB0
cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3Bw
CShyZXZpc2lvbiAxMDYwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2Vw
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIEV4Y2VwdGlvbkhhbmRs
ZXIgZ2VuZXJpY1Rocm93KEpTR2xvYmFsRGEKIAogRXhjZXB0aW9uSGFuZGxlciBqaXRUaHJvdyhK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4
Y2VwdGlvblZhbHVlLCBSZXR1cm5BZGRyZXNzUHRyIGZhdWx0TG9jYXRpb24pCiB7Ci0gICAgcmV0
dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCBj
YWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChmYXVsdExvY2F0aW9uKSk7Cisg
ICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGV4Y2VwdGlvblZh
bHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUsIGZh
dWx0TG9jYXRpb24pKTsKIH0KIAogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRT
dHVicy5jcHAJKHJldmlzaW9uIDEwNjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTI4LDcgKzE5MjgsNyBAQCBERUZJTkVf
U1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCA9IHN0YWNrRnJhbWUuYXJnc1swXS5pbnQzMigpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJC
T1NFX09TUikKLSAgICBwcmludGYoIkVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhl
Y3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1p
emF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIo
KSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9w
dGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkIG9wdGlt
aXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0
cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxv
Y2ssIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXph
dGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigp
KTsKICNlbmRpZgogCiAgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQo
KSkgewpAQCAtMjE4Myw0NSArMjE4MywxMyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwg
b3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIENhbGxGcmFtZSog
YXJpdHlDaGVja0ZvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3Rl
ckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBj
YWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpOwotICAgIEFTU0VSVCghY2Fs
bGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZj
YWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKLSAgICBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKCk7Ci0KLSAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0
aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNh
bGxlci4KLSAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhjYWxsRnJhbWUtPnJlZ2lzdGVycygp
ICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBBU1NFUlQoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Ci0KLSAg
ICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywg
dGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgotICAgIHNpemVf
dCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXM7Ci0gICAgUmVnaXN0ZXIqIHNyYyA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7
Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKLQot
ICAgIGludCBpOwotICAgIGludCBlbmQgPSAtQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQotICAg
ICAgICBkc3RbaV0gPSBzcmNbaV07Ci0KLSAgICBlbmQgLT0gZGVsdGE7Ci0gICAgZm9yICggOyBp
ID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOwotCi0gICAgQ2Fs
bEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShkc3QpOwotICAgIEFTU0VS
VCgodm9pZCopbmV3Q2FsbEZyYW1lIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOwotICAgIHJldHVy
biBuZXdDYWxsRnJhbWU7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxs
X2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwog
CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAg
IENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNr
RnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxs
RnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0Zy
YW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQog
ICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1l
LCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJv
cihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKIApAQCAtMjIzNCw3ICsyMjAyLDcgQEAgREVG
SU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAogCiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2Fs
bEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxl
LCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1v
blNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJG
aWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBpZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAg
cmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZy
YW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZy
YW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDEwNjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAg
QEAKICNpZm5kZWYgSlNJbnRlcmZhY2VKSVRfaAogI2RlZmluZSBKU0ludGVyZmFjZUpJVF9oCiAK
KyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgog
I2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJK
U1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJSZWdpc3Rl
ckZpbGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9u
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENvbW1vbl9oCisjZGVmaW5lIExM
SW50Q29tbW9uX2gKKworI2RlZmluZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lORyAwCisjZGVmaW5l
IExMSU5UX0hFTFBFUl9UUkFDSU5HIDAKKworI2VuZGlmIC8vIExMSW50Q29tbW9uX2gKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCisK
KyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUg
Ikxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK0RhdGE6OkRhdGEoKQorICAgIDogbV9leGNlcHRp
b25JbnN0cnVjdGlvbnMobmV3IEluc3RydWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdKQorICAg
ICwgbV9vcGNvZGVNYXAobmV3IE9wY29kZVtudW1PcGNvZGVJRHNdKQoreworICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAgICAgICBtX2V4Y2VwdGlv
bkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90
aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lKTsKKyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29k
ZSwgbGVuZ3RoKSBtX29wY29kZU1hcFtvcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxp
bnRfIyNvcGNvZGUpOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkpOworI3Vu
ZGVmIE9QQ09ERV9FTlRSWQorfQorCitEYXRhOjp+RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9l
eGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgZGVsZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIExMSW50RGF0YV9oCisjZGVmaW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRl
ICJPcGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7
CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKworI2lmIEVOQUJM
RShMTElOVCkKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIERhdGEoKTsKKyAgICB+RGF0YSgp
OworICAgIAorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAg
ICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7
CisgICAgfQorcHJpdmF0ZToKKyAgICBJbnN0cnVjdGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlv
bnM7CisgICAgT3Bjb2RlKiBtX29wY29kZU1hcDsKK307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQp
CisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2Vu
ZGlmCisKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25J
bnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorfTsKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBv
cAorI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnREYXRhX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFbnRy
eXBvaW50cy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSklUQ29kZS5oIgor
I2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5j
bHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpJVENvZGUmIGppdENvZGUsIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjaykKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEu
Y2FuVXNlSklUKCkpIHsKKyAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAg
ICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSkpKTsKKyAg
ICAgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JD
b25zdHJ1Y3QpOworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVy
Q29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0
cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5
X2NoZWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKGtpbmQgPT0g
Q29kZUZvckNhbGwpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRD
VElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1
YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3Qp
OworICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZv
ckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KTsKKyAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7Cit9CisKK3ZvaWQgZ2V0RXZh
bEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQor
eworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0g
SklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1h
bmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF9ldmFsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtH
ZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKK30KKwordm9pZCBnZXRQcm9n
cmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUp
Cit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUg
PSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxm
TWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihwcm9ncmFtRW50
cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQorCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRz
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVudHJ5cG9pbnRzX2gKKyNkZWZp
bmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lm
IEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV2YWxDb2RlQmxvY2s7CitjbGFzcyBKSVRDb2RlOwor
Y2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOworY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKKworbmFtZXNw
YWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCwgSklUQ29kZSYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYg
YXJpdHlDaGVjayk7Cit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENv
ZGUmKTsKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYp
OworCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
RXZhbENvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0RXZhbEVudHJ5cG9p
bnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9ncmFtQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0
Q29kZSkKK3sKKyAgICBnZXRQcm9ncmFtRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsK
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJ
TlQpCisKKyNlbmRpZiAvLyBMTEludEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9u
cy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJK
SVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMb3dM
ZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewor
Cit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElO
VF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzLlxuIiwg
Z2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJp
Y1Rocm93KAorICAgICAgICBnbG9iYWxEYXRhLCBleGVjLT5jYWxsZXJGcmFtZSgpLCBnbG9iYWxE
YXRhLT5leGNlcHRpb24sCisgICAgICAgIGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygp
LT5ieXRlY29kZU9mZnNldChleGVjLT5jYWxsZXJGcmFtZSgpLCBleGVjLT5yZXR1cm5QQygpKSk7
Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmxsaW50RGF0YS5l
eGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3co
RXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lO
RworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93KS5cbiIs
IGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVy
aWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhl
Yy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVy
biBnbG9iYWxEYXRhLT5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK3Zv
aWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAg
IEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJ
TlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAoY2Fs
bFRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2Vu
ZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2Vw
dGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7Cisg
ICAgCisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2R1cmluZ19j
YWxsX3RyYW1wb2xpbmUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2Vu
ZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBM
TEludEV4Y2VwdGlvbnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5B
QkxFKExMSU5UKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0
IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisvLyBUaHJvdyB0aGUgY3VycmVu
dGx5IGFjdGl2ZSBleGNlcHRpb24gaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNhbGxlcidzIGNhbGwg
ZnJhbWUuCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqKTsKKworLy8g
VGVsbHMgeW91IHdoZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0dXJuLXRvLXRocm93
LCBhZnRlciB5b3UndmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQg
dG8gdGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhy
b3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0aGUgY3VycmVudCBQQyBpbiB0
aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlvdSBhIFBDCisvLyB0
aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4gYWR2
YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0cnVj
dGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBleGNlcHRpb24gaGFu
ZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhjZXB0aW9uIGhhbmRs
aW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhhdCBQQyB3aXRob3V0
IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVhZCBleGNlcHRpb24g
aGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5CisvLyBvdGhl
ciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1
Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxsIHRo
dW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNl
bmRpZiAvLyBMTEludEV4Y2VwdGlvbnNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDI5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEhlbHBlcnMuaCIKKworI2lmIEVO
QUJMRShMTElOVCkKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkNhbGxGcmFt
ZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0
dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVC5oIgor
I2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1
ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIK
KyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdGF0aWNT
Y29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5o
IgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgi
CisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMu
aCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKKyNkZWZpbmUgTExJTlRf
T1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRSKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorI2RlZmlu
ZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5vcGVyYW5kKSkKKworI2Rl
ZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsgICAgICAgXAorICAgICAg
ICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
ICAgIHZvaWQqIGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAg
IHZvaWQqIGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSBwYWly
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50NjRfdCBp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IF9fcnRfdTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5hID0gZmly
c3Q7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5iID0gc2Vjb25k
OyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19ydF91Lmk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5U
X0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykKKworI2RlZmluZSBMTElOVF9U
SFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBKU0dsb2JhbERhdGEmIF9fdF9nbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOyAg
ICAgICAgXAorICAgICAgICBfX3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9U
aHJvdyk7ICAgICAgICAgICAgXAorICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUg
KGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpIGRvIHsgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmdsb2JhbERhdGEoKS5leGNl
cHRpb24pKSB7ICAgXAorICAgICAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5U
X0VORCgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUg
TExJTlRfQlJBTkNIKG9wY29kZSwgY29uZGl0aW9uKSBkbyB7ICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgYm9vbCBfX2JfY29uZGl0aW9uID0gKGNvbmRpdGlvbik7ICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9fYl9jb25kaXRpb24pICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9
IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsgICAgICAgIFwKKyAgICAg
ICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bjb2RlKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2Rl
ZmluZSBMTElOVF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAgICAgXAorICAgICAgICBK
U1ZhbHVlIF9fcl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAorICAgICAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9PUCgxKSA9
IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExM
SU5UX1JFVFVSTl9QUk9GSUxFRChvcGNvZGUsIHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAgXAor
ICAgICAgICBKU1ZhbHVlIF9fcnBfcmV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0gX19ycF9yZXR1cm5WYWx1
ZTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwY1tPUENPREVfTEVOR1RIKG9w
Y29kZSkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IFwKKyAgICAgICAgICAgIEpTVmFs
dWU6OmVuY29kZShfX3JwX3JldHVyblZhbHVlKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfRU5EX0lNUEwoZXhl
YywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RXTygoY2FsbFRhcmdldCksIChleGVjKSkKKwor
I2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBleGNlcHRpb25Ub1Rocm93KSBkbyB7
ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3RfZXhlYyA9IChleGVjKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiog
X19jdF9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBKU0dsb2JhbERhdGEmIF9fY3RfZ2xvYmFsRGF0YSA9IChfX2N0X2V4ZWMpLT5nbG9iYWxE
YXRhKCk7ICAgICAgXAorICAgICAgICBfX2N0X2dsb2JhbERhdGEuZXhjZXB0aW9uID0gKGV4Y2Vw
dGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9J
TVBMKF9fY3RfZXhlYywgY2FsbFRvVGhyb3coX19jdF9leGVjLCBfX2N0X3BjKSk7IFwKKyAgICB9
IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVj
LCBwYykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9f
Y2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBJbnN0cnVjdGlvbiogX19jY2VfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoX19jY2VfZXhlYy0+Z2xvYmFsRGF0
YSgpLmV4Y2VwdGlvbikpICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTExJTlRfQ0FMTF9F
TkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2NjZV9leGVjLCBfX2NjZV9wYykpOyBc
CisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9SRVRVUk4oZXhlYywg
cGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0
YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9pZCogX19jcl9jYWxsVGFyZ2V0ID0gKGNh
bGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0FM
TF9DSEVDS19FWENFUFRJT04oX19jcl9leGVjLT5jYWxsZXJGcmFtZSgpLCBfX2NyX3BjKTsgIFwK
KyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NyX2V4ZWMsIF9fY3JfY2FsbFRhcmdldCk7
ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworZXh0ZXJuICJDIiBIZWxw
ZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVj
dGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIHByaW50ZigiJXAg
LyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkXG4iLAorICAg
ICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAg
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9u
cygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJvbVdoZXJlLAorICAg
ICAgICAgICBvcGVyYW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQpOworICAg
IExMSU5UX0VORCgpOworfQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJh
Y2VfdmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUs
IGludCBvcGVyYW5kKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKG9wZXJhbmQp
LmpzVmFsdWUoKTsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1
aW50MzJfdCB0YWc7CisgICAgICAgICAgICB1aW50MzJfdCBwYXlsb2FkOworICAgICAgICB9IGJp
dHM7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlIGFzVmFsdWU7CisgICAgfSB1OworICAgIHUuYXNW
YWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVj
dXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWQ6ICUwOHg6JTA4eCIsCisgICAg
ICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBz
dGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUsCisgICAg
ICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCwKKyAgICAg
ICAgICAgdS5iaXRzLnRhZywKKyAgICAgICAgICAgdS5iaXRzLnBheWxvYWQpOworI2lmbmRlZiBO
REVCVUcKKyAgICBwcmludGYoIjogJXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgor
ICAgIHByaW50ZigiXG4iKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0wodHJhY2VfcHJvbG9ndWUpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiBwcm9sb2d1ZS5c
biIsIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworc3Rh
dGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hh
ciogY29tbWVudCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEpTRnVuY3Rp
b24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7
CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAl
cDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZVJlZ2lzdGVycyA9
ICV1LlxuIiwKKyAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBjb21tZW50LCBjYWxsZWUsIGV4
ZWN1dGFibGUsCisgICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAg
IHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBwcm9sb2d1ZSIsIENvZGVGb3JDYWxs
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9n
dWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUo
ZXhlYywgImNvbnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxs
KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBhcml0eSBjaGVjayIs
IENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
dHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9s
b2d1ZShleGVjLCAiY29uc3RydWN0IGFyaXR5IGNoZWNrIiwgQ29kZUZvckNvbnN0cnVjdCk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKQoreworICAgIHBy
aW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgIiwKKyAgICAgICAgICAgZXhlYy0+Y29k
ZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0
cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7Cisj
aWZuZGVmIE5ERUJVRworICAgIHByaW50ZigiJXMsICIsIG9wY29kZU5hbWVzW2V4ZWMtPmdsb2Jh
bERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpXSk7CisjZWxz
ZQorICAgIHByaW50Zigib3AjJXUsICIsIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpKTsKKyNlbmRpZgorICAgIHByaW50Zigic2NvcGUg
JXBcbiIsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2UpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVj
dXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJldHVybiBQQyBpcyAlcFxuIiwKKyAg
ICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAg
IHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVy
LT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGV4ZWMtPnJldHVyblBD
KCkudmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2lubGluZSBib29sIHNob3VsZEpJ
VChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gWW91IGNhbiBtb2RpZnkgdGhpcyB0byB0dXJu
IG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0aGUgd29ybGQuCisgICAgcmV0dXJuIGV4
ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKTsKK30KKworZW51bSBFbnRyeUtpbmQgeyBQcm9s
b2d1ZSwgQXJpdHlDaGVjayB9Oworc3RhdGljIEhlbHBlclJldHVyblR5cGUgZW50cnlPU1IoRXhl
Y1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25z
dCBjaGFyICpuYW1lLCBFbnRyeUtpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0Vf
T1NSKQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgJXMgd2l0aCBleGVjdXRlQ291bnRlciA9ICVk
XG4iLCBjb2RlQmxvY2ssIG5hbWUsIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsK
KyNlbmRpZgorICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGNvZGVC
bG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwg
ZXhlYyk7CisgICAgfQorICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2Jh
bERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICBwcmludGYo
IiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICB9CisgICAg
Y29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgaWYgKGtpbmQgPT0gUHJvbG9ndWUpCisgICAgICAg
IExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3NBdE9mZnNldCgwKSwgZXhlYyk7CisgICAgQVNTRVJUKGtpbmQgPT0gQXJpdHlDaGVjayk7Cisg
ICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGVXaXRoQXJpdHlDaGVjaygp
LmV4ZWN1dGFibGVBZGRyZXNzKCksIGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRy
eV9vc3IpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCBleGVjLT5jb2RlQmxvY2so
KSwgImVudHJ5X29zciIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlf
b3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywg
JmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0
ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsIiwgUHJv
bG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4
ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVG
b3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QiLCBQcm9sb2d1
ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24o
ZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29k
ZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2siLCBBcml0
eUNoZWNrKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZh
c0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVj
b2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOworfQorCitMTElOVF9IRUxQRVJfREVDTChsb29w
X29zcikKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwor
ICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJl
ZCBsb29wX29zciB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywgY29kZUJs
b2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91
bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsK
KyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgCisgICAgaWYg
KCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJM
RShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50ZigiICAgIENvZGUgd2FzIGFscmVhZHkg
Y29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxvY2stPmppdFNvb24oKTsK
KyAgICAKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFz
ZWxpbmVKSVQpOworICAgIAorICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+IG1h
cDsKKyAgICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKG1hcCk7CisgICAgQnl0ZWNv
ZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2VhcmNoPEJ5dGVjb2RlQW5kTWFj
aGluZU9mZnNldCwgdW5zaWduZWQsIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldDo6Z2V0Qnl0ZWNv
ZGVJbmRleD4obWFwLmJlZ2luKCksIG1hcC5zaXplKCksIHBjIC0gY29kZUJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpKTsKKyAgICBBU1NFUlQobWFwcGluZyk7CisgICAgQVNTRVJUKG1hcHBp
bmctPm1fYnl0ZWNvZGVJbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocGMgLSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyAgICAKKyAgICB2b2lkKiBqdW1wVGFyZ2V0
ID0gY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChtYXBw
aW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQoanVtcFRhcmdldCk7CisgICAg
CisgICAgTExJTlRfUkVUVVJOX1RXTyhqdW1wVGFyZ2V0LCBleGVjKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0wocmVwbGFjZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNv
ZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRm
KCIlcDogRW50ZXJlZCByZXBsYWNlIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJs
b2NrLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAg
ICBpZiAoc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21w
aWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQor
ICAgICAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOwor
I2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgfSBl
bHNlCisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spCit7Cisj
aWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIkNoZWNraW5nIHN0YWNrIGhlaWdo
dCB3aXRoIGV4ZWMgPSAlcC5cbiIsIGV4ZWMpOworICAgIHByaW50ZigiQ29kZUJsb2NrID0gJXAu
XG4iLCBleGVjLT5jb2RlQmxvY2soKSk7CisgICAgcHJpbnRmKCJOdW0gY2FsbGVlIHJlZ2lzdGVy
cyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAg
ICBwcmludGYoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1WYXJz
KTsKKyAgICBwcmludGYoIkN1cnJlbnQgZW5kIGlzIGF0ICVwLlxuIiwgZXhlYy0+Z2xvYmFsRGF0
YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5lbmQoKSk7CisjZW5kaWYKKyAgICBBU1NF
UlQoJmV4ZWMtPnJlZ2lzdGVycygpW2V4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lz
dGVyc10gPiBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmVu
ZCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+
cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCkt
Pm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJG
cmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3Rh
Y2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIo
ZXhlYyk7CisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihleGVj
KTsKKyAgICB9CisgICAgTExJTlRfRU5EX0lNUEwoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21t
b25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRl
cnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDYWxsKTsKKyAgICBpZiAoIW5ld0V4ZWMp
IHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmds
b2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Cisg
ICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAgTExJTlRfUkVU
VVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBl
eGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIEV4ZWNT
dGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmZXhl
Yy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNvbnN0
cnVjdCk7CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJG
cmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3Rh
Y2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIo
ZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9U
V08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0
aXZhdGlvbikKK3sKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ3JlYXRp
bmcgYW4gYWN0aXZhdGlvbiwgZXhlYyA9ICVwIVxuIiwgZXhlYyk7CisjZW5kaWYKKyAgICBKU0Fj
dGl2YXRpb24qIGFjdGl2YXRpb24gPSBKU0FjdGl2YXRpb246OmNyZWF0ZShleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMsIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWMtPmNvZGVC
bG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSkpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhl
Yy0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2YXRpb24pKTsKKyAgICBMTElOVF9SRVRVUk4oSlNW
YWx1ZShhY3RpdmF0aW9uKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVf
YXJndW1lbnRzKQoreworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1bWVudHM6
OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFuZCkgPSBhcmd1bWVu
dHM7CisgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNb
MV0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAgICBKU0Z1bmN0aW9uKiBjb25z
dHJ1Y3RvciA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIAorI2lmICFBU1NFUlRf
RElTQUJMRUQKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQVNTRVJUKGNv
bnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBj
b25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlmCisgICAgCisgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgSlNWYWx1ZSBwcm90byA9IExMSU5UX09QKDIpLmpzVmFs
dWUoKTsKKyAgICBpZiAocHJvdG8uaXNPYmplY3QoKSkKKyAgICAgICAgc3RydWN0dXJlID0gYXNP
YmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGVsc2UK
KyAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCktPmdsb2JhbE9iamVjdC0+
ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0
RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jb252ZXJ0X3RoaXMpCit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QKDEpLmpzVmFs
dWUoKTsKKyAgICBBU1NFUlQodjEuaXNQcmltaXRpdmUoKSk7CisgICAgTExJTlRfUkVUVVJOKHYx
LnRvVGhpc09iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdf
b2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpCit7CisgICAgTExJTlRf
UkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4oJkxMSU5U
X09QKDIpKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uZXdfYXJyYXlfYnVmZmVyKQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RBcnJheShl
eGVjLCBleGVjLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIocGNbMl0udS5vcGVyYW5kKSwg
cGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfcmVn
ZXhwKQoreworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlZ2V4cChw
Y1syXS51Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCisgICAgICAgIExM
SU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIGZsYWcgc3VwcGxpZWQg
dG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2JqZWN0
OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCks
IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4cCkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KQoreworICAgIExMSU5UX1JFVFVS
Tihqc0Jvb2xlYW4oIUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6ZXF1YWwoZXhlYywg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1
ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcykKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihq
c0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKQor
eworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJl
X2luYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgp
LnRvTnVtYmVyKGV4ZWMpICsgMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJl
X2RlYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgp
LnRvTnVtYmVyKGV4ZWMpIC0gMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9z
dF9pbmMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051
bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCArIDEpOworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Bvc3RfZGVjKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQg
LSAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIo
LUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9hZGQpCit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QX0MoMiku
anNWYWx1ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAg
ICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVHJ5aW5nIHRvIGFkZCAl
cyIsIHYxLmRlc2NyaXB0aW9uKCkpOworICAgIHByaW50ZigiIHRvICVzLlxuIiwgdjIuZGVzY3Jp
cHRpb24oKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNTdHJpbmcoKSAmJiAhdjIuaXNP
YmplY3QoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYx
KSwgdjIudG9TdHJpbmcoZXhlYykpKTsKKyAgICAKKyAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2
Mi5pc051bWJlcigpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIodjEuYXNOdW1iZXIo
KSArIHYyLmFzTnVtYmVyKCkpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNBZGRTbG93Q2Fz
ZShleGVjLCB2MSwgdjIpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCkKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1i
ZXIoZXhlYykgKiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKQoreworICAgIExMSU5UX1JFVFVSTihqc051
bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAtIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9kaXYpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIo
ZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCkKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIoZm1vZChMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihl
eGVjKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPDwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3JzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9JbnQzMihleGVjKSA+PiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQz
MihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdXJzaGlmdCkKK3sKKyAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9VSW50MzIo
ZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSAmIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2JpdG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKS50b0ludDMyKGV4ZWMpIHwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihl
eGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKQoreworICAgIExM
SU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMp
IF4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfYml0bm90KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcih+
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQoreworICAgIEpTVmFsdWUgYmFzZVZh
bCA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworI2lmbmRlZiBOREVCVUcKKyAgICBUeXBlSW5m
byB0eXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VSVCghYmFzZVZhbC5pc09iamVj
dCgpCisgICAgICAgICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVjdChiYXNlVmFsKS0+c3RydWN0
dXJlKCktPnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKTsKKyNlbmRpZgorICAg
IExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4ZWMsICJpbnN0YW5jZW9mIiwg
YmFzZVZhbCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZikKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbnN0YW5jZU9m
U2xvdyhleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoNCkuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfdHlwZW9mKQoreworICAgIExMSU5UX1JFVFVSTihqc1R5cGVTdHJpbmdGb3JWYWx1ZShl
eGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfdW5kZWZpbmVkKQoreworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QX0MoMikuanNW
YWx1ZSgpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4odi5pc0NlbGwoKSA/IHYuYXNDZWxs
KCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSA6IHYu
aXNVbmRlZmluZWQoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVh
bikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5UX09QX0MoMikuanNWYWx1ZSgp
LmlzQm9vbGVhbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIp
Cit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS5p
c051bWJlcigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19zdHJpbmcpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihpc0pTU3RyaW5nKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc09iamVjdFR5cGUoTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbikK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUoTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbikKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihleGVjLCBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKQoreworICAgIExMSU5UX1JFVFVSTl9Q
Uk9GSUxFRChvcF9yZXNvbHZlLCBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZShleGVjLCBleGVj
LT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApCit7CisgICAgTExJTlRfUkVUVVJOX1BS
T0ZJTEVEKAorICAgICAgICBvcF9yZXNvbHZlX3NraXAsCisgICAgICAgIENvbW1vblNsb3dQYXRo
czo6b3BSZXNvbHZlU2tpcCgKKyAgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgICBleGVjLT5j
b2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAgICAgICAgICAgcGNb
M10udS5vcGVyYW5kKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlIHJlc29sdmVHbG9iYWwoRXhlY1N0
YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
Y29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5pc0ds
b2JhbE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICAKKyAg
ICBBU1NFUlRfVU5VU0VEKHN0cnVjdHVyZSwgc3RydWN0dXJlICE9IGdsb2JhbE9iamVjdC0+c3Ry
dWN0dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVu
dGlmaWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3QpOwor
ICAgIAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwg
c2xvdCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGlk
ZW50KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmICFnbG9iYWxPYmpl
Y3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAm
JiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICBwY1szXS51
LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAg
ICAgICAgICAgIHBjWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgZXhlYy0+Z2xvYmFs
RGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRl
bnQpOworICAgIHJldHVybiBKU1ZhbHVlKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9yZXNvbHZlX2dsb2JhbCkKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2
ZV9nbG9iYWwsIHJlc29sdmVHbG9iYWwoZXhlYywgcGMpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfUkVUVVJOX1BS
T0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIHJlc29sdmVHbG9iYWwoZXhlYywgcGMp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMsIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVC
bG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSkKK3sKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4
ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKHBj
WzNdLnUub3BlcmFuZCkgeworICAgICAgICBKU1ZhbHVlIGJhc2UgPSBKU0M6OnJlc29sdmVCYXNl
KGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIHRydWUpOworICAgICAgICBpZiAoIWJh
c2UpCisgICAgICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxB
c3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgICAgICBMTElOVF9SRVRVUk4o
YmFzZSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZl
X2Jhc2UsIEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwg
ZmFsc2UpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9l
eGlzdHMpCit7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpz
VmFsdWUoKSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKKyAgICBJZGVudGlmaWVy
JiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7
CisgICAgaWYgKCFvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkpCisg
ICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQo
ZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKK3sKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aEJhc2UoZXhlYywgZXhlYy0+Y29kZUJs
b2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0OworICAgIC8v
IEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcsIGJ1dCB3ZSBkb24ndCBk
byBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCit7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhUaGlzKGV4ZWMsIGV4
ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEp
KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3Vs
dDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5nLCBidXQg
d2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4KKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCkKK3sKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXIm
IGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0
KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBM
TElOVF9PUCgxKSA9IHJlc3VsdDsKKworICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAg
ICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCisgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBi
YXNlVmFsdWUKKyAgICAgICAgJiYgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0
eVNsb3Q6OlZhbHVlKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFz
ZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxs
LT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2Fj
aGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygp
LnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpKSB7CisgICAgICAgICAgICBwY1s0XS51LnN0cnVj
dHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcGNbNV0udS5vcGVy
YW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICBwY1tPUENPREVfTEVOR1RIKG9wX2dldF9ieV9pZCkgLSAxXS51LnBy
b2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5n
dGgpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAg
ICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJh
bmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAg
IFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisgICAgTExJTlRfUkVUVVJOKGJhc2VWYWx1
ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3B1dF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9j
aygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJd
LnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFs
dWUoKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
KTsKKyAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAgICBhc09iamVjdChiYXNlVmFsdWUp
LT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCksIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVu
dCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOworICAgIAorICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xv
dC5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0g
YmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VD
ZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1Vu
Y2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5m
bygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpCisgICAgICAgICAgICAmJiBiYXNlQ2VsbCA9
PSBzbG90LmJhc2UoKSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc2xvdC50eXBl
KCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgeworICAgICAgICAgICAgICAgIGlm
ICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgYmVjYXVz
ZSBzb21lIG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKKyAgICAgICAgICAgICAgICAgICAgLy8gYmVs
b3cgbWF5IEdDLgorICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisKKyAgICAgICAgICAgICAgICAgICAg
bm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgp
LT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0
KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgICAgICAg
ICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2Yo
SlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3RydWN0dXJlLnNldCgKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJl
Q2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbN10udS5z
dHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxE
YXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNoYWluKTsKKyAgICAgICAgICAg
ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCisgICAg
ICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBj
WzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsK
KyAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAg
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3Ry
dWN0dXJlKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9m
ZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
ZGVsX2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2Nr
KCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50
b09iamVjdChleGVjKTsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9k
VGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgY29kZUJsb2NrLT5pZGVu
dGlmaWVyKHBjWzNdLnUub3BlcmFuZCkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAg
ICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHBy
b3BlcnR5LiIpKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9
CisKK2lubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNl
VmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQoreworICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlz
Q2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBpZiAoSlNWYWx1ZSBy
ZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eShleGVjLCBhc1N0
cmluZyhzdWJzY3JpcHQpLT52YWx1ZShleGVjKSkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKyAgICAKKyAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKKyAgICAgICAg
dWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU1N0cmlu
ZyhiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAg
ICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVB
cnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBh
c0J5dGVBcnJheShiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAg
ICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGkpOworICAgIH0KKyAgICAKKyAgICBJZGVu
dGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpOworICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5KTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV92YWwpCit7CisgICAgTExJTlRfUkVUVVJOX1BS
T0ZJTEVEKG9wX2dldF9ieV92YWwsIGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IExM
SU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykgeworICAgICAgICBhcmd1
bWVudHMgPSBBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpOworICAg
ICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgTExJTlRfT1AoMikgPSBhcmd1
bWVudHM7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lz
dGVyKHBjWzJdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOworICAgIH0KKyAgICAKKyAgICBMTElO
VF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgYXJndW1lbnRzLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKQoreworICAg
IExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5U
X09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5
X3ZhbCkKK3sKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRh
KCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAg
IEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBpZiAo
TElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vi
c2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgewor
ICAgICAgICAgICAgSlNBcnJheSoganNBcnJheSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAg
ICAgICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkKKyAgICAgICAgICAgICAgICBqc0Fy
cmF5LT5zZXRJbmRleChnbG9iYWxEYXRhLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgSlNBcnJheTo6cHV0QnlJbmRleChqc0FycmF5LCBleGVjLCBpLCB2YWx1
ZSk7CisgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNK
U0J5dGVBcnJheShiYXNlVmFsdWUpCisgICAgICAgICAgICAmJiBhc0J5dGVBcnJheShiYXNlVmFs
dWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICAgICAgSlNCeXRlQXJyYXkqIGpzQnl0
ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZS5p
c0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFs
dWUuYXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAg
anNCeXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICAgICAg
ICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJhc2VW
YWx1ZS5wdXQoZXhlYywgaSwgdmFsdWUpOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9Cisg
ICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAg
IGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpCit7CisgICAg
SlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU09iamVj
dCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICAKKyAgICBKU1Zh
bHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAgIGJvb2wg
Y291bGREZWxldGU7CisgICAgCisgICAgdWludDMyX3QgaTsKKyAgICBpZiAoc3Vic2NyaXB0Lmdl
dFVJbnQzMihpKSkKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYmFzZU9iamVjdCwgZXhlYywgaSk7CisgICAgZWxz
ZSB7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBJZGVudGlmaWVy
IHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwor
ICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgY291bGREZWxldGUgPSBi
YXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVj
LCBwcm9wZXJ0eSk7CisgICAgfQorICAgIAorICAgIGlmICghY291bGREZWxldGUgJiYgZXhlYy0+
Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVU
eXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgIAorICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCkKK3sKKyAgICBMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KS5wdXQoZXhlYywgcGNbMl0udS5vcGVyYW5kLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVy
KQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAg
SlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAg
IElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0u
dS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNWYWx1ZSgpLmlzT2JqZWN0KCkp
OworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZUdldHRlcihiYXNlT2JqLCBleGVj
LCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfc2V0dGVyKQoreworICAg
IEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgSlNPYmplY3Qq
IGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIElkZW50aWZp
ZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5k
KTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMykuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIGJh
c2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmluZVNldHRlcihiYXNlT2JqLCBleGVjLCBpZGVudCwg
YXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKQoreworICAgIHVuc2lnbmVk
IGNvdW50ID0gcGNbMV0udS5vcGVyYW5kOworICAgIFNjb3BlQ2hhaW5Ob2RlKiB0bXAgPSBleGVj
LT5zY29wZUNoYWluKCk7CisgICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAgIHRtcCA9IHRtcC0+
cG9wKCk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbih0bXApOworICAgIHBjICs9IHBjWzJdLnUu
b3BlcmFuZDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2p0cnVlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qdHJ1ZSwgTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pm
YWxzZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamZhbHNlLCAhTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ps
ZXNzKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzcywganNMZXNzPHRydWU+KGV4ZWMsIExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKQoreworICAgIExMSU5UX0JSQU5DSChvcF9q
bmxlc3MsICFqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3Jl
YXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXIsIGpzTGVzczxmYWxzZT4oZXhl
YywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpCit7CisgICAgTExJTlRfQlJB
TkNIKG9wX2puZ3JlYXRlciwgIWpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbGVzc2VxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzc2VxLCBqc0xlc3NF
cTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKQoreworICAg
IExMSU5UX0JSQU5DSChvcF9qbmxlc3NlcSwgIWpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09Q
X0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamdy
ZWF0ZXJlcSwganNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBM
TElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
am5ncmVhdGVyZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlcmVxLCAhanNMZXNz
RXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpz
VmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSkKK3sK
KyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIEFT
U0VSVChzY3J1dGluZWUuaXNEb3VibGUoKSk7CisgICAgZG91YmxlIHZhbHVlID0gc2NydXRpbmVl
LmFzRG91YmxlKCk7CisgICAgaW50MzJfdCBpbnRWYWx1ZSA9IHN0YXRpY19jYXN0PGludDMyX3Q+
KHZhbHVlKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBp
ZiAodmFsdWUgPT0gaW50VmFsdWUpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5pbW1lZGlhdGVTd2l0
Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShpbnRWYWx1ZSwgZGVm
YXVsdE9mZnNldCk7CisgICAgfSBlbHNlCisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3Ry
aW5nKQoreworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7
CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKCFzY3J1
dGluZWUuaXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBlbHNl
IHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAg
ICAgICAgcGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVy
YW5kKS5vZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGluZWUpLT52YWx1ZShleGVjKS5pbXBs
KCksIGRlZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUoKSAh
PSBGdW5jdGlvbkNvZGUKKyAgICAgICAgICAgfHwgIWNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVD
aGFpbigpCisgICAgICAgICAgIHx8IGV4ZWMtPnVuY2hlY2tlZFIoY29kZUJsb2NrLT5hY3RpdmF0
aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAg
IHByaW50ZigiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKKyNlbmRpZgorICAgIExMSU5UX1JFVFVS
Tihjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1syXS51Lm9wZXJhbmQpLT5tYWtlKGV4ZWMsIGV4
ZWMtPnNjb3BlQ2hhaW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1
bmNfZXhwKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25F
eHByKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNGdW5jdGlvbiogZnVuYyA9IGZ1bmN0aW9uLT5t
YWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgCisgICAgaWYgKCFmdW5jdGlvbi0+
bmFtZSgpLmlzTnVsbCgpKSB7CisgICAgICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIGZ1bmN0aW9u
U2NvcGVPYmplY3QgPSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgZnVuY3Rpb24t
Pm5hbWUoKSwgZnVuYywgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgZnVuYy0+c2V0
U2NvcGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jLT5zY29wZSgpLT5wdXNoKGZ1bmN0aW9uU2Nv
cGVPYmplY3QpKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKGZ1bmMpOworfQorCitz
dGF0aWMgSGVscGVyUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxs
ZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFt
ZSgpOworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7
CisKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7Cisg
ICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworCisgICAgaWYgKGtpbmQgPT0gQ29kZUZv
ckNhbGwpIHsKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEoY2FsbGVlLCBjYWxsRGF0YSk7CisgICAgCisgICAgICAgIEFT
U0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZUpTKTsKKyAgICAKKyAgICAgICAgaWYgKGNhbGxUeXBl
ID09IENhbGxUeXBlSG9zdCkgeworICAgICAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1
cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0Nh
bGxlZSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVj
Q2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkpOworICAgICAgICB9CisgICAgICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAg
ICAgIHByaW50ZigiQ2FsbCBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUu
ZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGVOb25lKTsKKyAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90
QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQg
PT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgCisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3RE
YXRhOworICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEo
Y2FsbGVlLCBjb25zdHJ1Y3REYXRhKTsKKyAgICAKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAh
PSBDb25zdHJ1Y3RUeXBlSlMpOworICAgIAorICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0
cnVjdFR5cGVIb3N0KSB7CisgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxl
ZSkpOworICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICAKKyNp
ZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgICAgICBwcmludGYoIkNvbnN0cnVjdG9yIGNhbGxl
ZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRp
ZgorCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZU5vbmUpOworICAg
IExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4
ZWMsIGNhbGxlZSkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhl
Y1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCwgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlLCBMTEludENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gMCkKK3sKKyAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNG
dW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKKyAgICBpZiAoIWNhbGxlZUFzRnVuY3Rpb25DZWxsKQor
ICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgcGMsIGNhbGxlZUFzVmFs
dWUsIGtpbmQpOworICAgIAorICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oY2Fs
bGVlQXNGdW5jdGlvbkNlbGwpOworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oY2FsbGVl
LT5zY29wZVVuY2hlY2tlZCgpKTsKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IGNh
bGxlZS0+ZXhlY3V0YWJsZSgpOworICAgIAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2Rl
UHRyOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKKyAgICBpZiAoZXhlY3V0YWJsZS0+
aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmdlbmVyYXRl
ZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICAgICAgSlNPYmplY3QqIGVycm9yID0g
ZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21waWxlRm9yKGV4ZWNDYWxsZWUsIGNhbGxlZS0+c2NvcGUo
KSwga2luZCk7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIExMSU5UX0NBTExfVEhS
T1coZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKSwgcGMsIGVycm9yKTsKKyAgICAgICAgY29kZUJs
b2NrID0gJmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7Cisg
ICAgICAgIEFTU0VSVChjb2RlQmxvY2spOworICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkpKQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJs
ZS0+Z2VuZXJhdGVkSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRD
b2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgfQorICAgIAorICAgIGlmIChjYWxs
TGlua0luZm8pIHsKKyAgICAgICAgaWYgKGNhbGxMaW5rSW5mby0+aXNPbkxpc3QoKSkKKyAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+cmVtb3ZlKCk7CisgICAgICAgIEV4ZWNTdGF0ZSogZXhlY0Nh
bGxlciA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+
Y2FsbGVlLnNldChleGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4ZWNDYWxsZXItPmNvZGVCbG9j
aygpLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5s
YXN0U2VlbkNhbGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBleGVjQ2FsbGVyLT5j
b2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAgICAgIGNhbGxMaW5r
SW5mby0+bWFjaGluZUNvZGVUYXJnZXQgPSBjb2RlUHRyOworICAgICAgICBpZiAoY29kZUJsb2Nr
KQorICAgICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKGNhbGxMaW5rSW5mbyk7
CisgICAgfQorICAgIAorICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCBjb2Rl
UHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJuVHlwZSBn
ZW5lcmljQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQg
dXAgYSBjYWxsIGZyYW1lLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNv
bXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gSWYgcG9zc2libGUsIGxpbmsgdGhlIGNh
bGwncyBpbmxpbmUgY2FjaGUuCisgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNv
ZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCisgICAgCisgICAgSlNW
YWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgCisgICAg
RXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAg
ICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJh
bmQpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0g
Y2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAg
ICAKKyAgICBBU1NFUlQocGNbNF0udS5jYWxsTGlua0luZm8pOworICAgIHJldHVybiBzZXRVcENh
bGwoZXhlY0NhbGxlZSwgcGMsIGtpbmQsIGNhbGxlZUFzVmFsdWUsIHBjWzRdLnUuY2FsbExpbmtJ
bmZvKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpCit7CisgICAgcmV0dXJu
IGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jb25zdHJ1Y3QpCit7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBj
LCBDb2RlRm9yQ29uc3RydWN0KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxf
dmFyYXJncykKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2Fs
bCBmcmFtZSB3aGlsZSByZXNwZWN0aW5nIHRoZSB2YXJpYWJsZSBhcmd1bWVudHMuCisgICAgLy8g
LSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCisg
ICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFu
ZCB0aGUgbmV3IGNhbGwgZnJhbWUuCisgICAgCisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0g
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVl
ID0gbG9hZFZhcmFyZ3MoCisgICAgICAgIGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJw
cmV0ZXItPnJlZ2lzdGVyRmlsZSgpLAorICAgICAgICBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHBjWzRdLnUub3BlcmFuZCk7CisgICAgTExJTlRfQ0FM
TF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpOworICAgIAorICAgIGV4ZWNDYWxsZWUtPnVuY2hl
Y2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2Fs
bGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKFJlZ2lzdGVy
RmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4ocGMgKyBP
UENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykpOworICAgIAorICAgIHJldHVybiBzZXRVcENh
bGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCkKK3sKKyAgICBKU1ZhbHVlIGNhbGxlZUFz
VmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVj
Q2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVl
LT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lz
dGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0U2Nv
cGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBD
KGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KCZsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkp
OworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKyAgICBleGVjLT51bmNoZWNrZWRS
KFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJf
dD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfZXZhbCkpOworICAgIAorICAgIGlmICghaXNI
b3N0RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQorICAgICAgICByZXR1
cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7
CisgICAgCisgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0gZXZhbChleGVjQ2Fs
bGVlKTsKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKK3sKKyAgICBBU1NFUlQoZXhlYy0+Y29k
ZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgSlNWYWx1ZSBhY3RpdmF0aW9u
VmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhY3RpdmF0aW9uVmFsdWUp
IHsKKyAgICAgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFy
Z3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSkgeworICAgICAgICAg
ICAgaWYgKCFleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICAg
ICAgYXNBcmd1bWVudHModiktPnRlYXJPZmYoZXhlYyk7CisgICAgICAgIH0KKyAgICAgICAgTExJ
TlRfRU5EKCk7CisgICAgfQorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGFzQWN0aXZh
dGlvbihhY3RpdmF0aW9uVmFsdWUpOworICAgIGFjdGl2YXRpb24tPnRlYXJPZmYoZXhlYy0+Z2xv
YmFsRGF0YSgpKTsKKyAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlm
aWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKQorICAgICAg
ICBhc0FyZ3VtZW50cyh2KS0+ZGlkVGVhck9mZkFjdGl2YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBhY3RpdmF0aW9uKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cykKK3sKKyAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2Nr
KCktPnVzZXNBcmd1bWVudHMoKSAmJiAhZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3Bl
Q2hhaW4oKSk7CisgICAgYXNBcmd1bWVudHMoZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKS0+dGVhck9mZihleGVj
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNh
dCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNTdHJpbmcoZXhlYywgJkxMSU5UX09QKDIpLCBwY1sz
XS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2
ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9QcmltaXRp
dmUoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X3BuYW1lcykKK3sK
KyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKHYuaXNVbmRl
ZmluZWRPck51bGwoKSkgeworICAgICAgICBwYyArPSBwY1s1XS51Lm9wZXJhbmQ7CisgICAgICAg
IExMSU5UX0VORCgpOworICAgIH0KKyAgICAKKyAgICBKU09iamVjdCogbyA9IHYudG9PYmplY3Qo
ZXhlYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvLT5zdHJ1Y3R1cmUoKTsKKyAgICBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gc3RydWN0dXJl
LT5lbnVtZXJhdGlvbkNhY2hlKCk7CisgICAgaWYgKCFqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yIHx8
IGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmNhY2hlZFByb3RvdHlwZUNoYWluKCkgIT0gc3RydWN0
dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSkKKyAgICAgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRv
ciA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBvKTsKKyAgICAKKyAgICBM
TElOVF9PUCgxKSA9IEpTVmFsdWUoanNQcm9wZXJ0eU5hbWVJdGVyYXRvcik7CisgICAgTExJTlRf
T1AoMikgPSBKU1ZhbHVlKG8pOworICAgIExMSU5UX09QKDMpID0gUmVnaXN0ZXI6OndpdGhJbnQo
MCk7CisgICAgTExJTlRfT1AoNCkgPSBSZWdpc3Rlcjo6d2l0aEludChqc1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLT5zaXplKCkpOworICAgIAorICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X3Bu
YW1lcyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXh0X3BuYW1lKQoreworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoTExJTlRfT1AoMiku
anNWYWx1ZSgpKTsKKyAgICBKU1N0cmluZyogcHJvcGVydHkgPSBhc1N0cmluZyhMTElOVF9PUCgx
KS5qc1ZhbHVlKCkpOworICAgIGlmIChiYXNlLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVy
KGV4ZWMsIHByb3BlcnR5LT52YWx1ZShleGVjKSkpKSB7CisgICAgICAgIC8vIEdvIHRvIHRhcmdl
dC4KKyAgICAgICAgcGMgKz0gcGNbNl0udS5vcGVyYW5kOworICAgIH0gLy8gRWxzZSwgZG9uJ3Qg
Y2hhbmdlIHRoZSBQQywgc28gdGhlIGludGVycHJldGVyIHdpbGwgcmVsb29wLgorICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSkKK3sKKyAg
ICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIG8gPSB2
LnRvT2JqZWN0KGV4ZWMpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAg
IExMSU5UX09QKDEpID0gbzsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hh
aW4oKS0+cHVzaChvKSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUpCit7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVj
LT5zY29wZUNoYWluKCktPnBvcCgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKQoreworICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIHNjb3BlID0gSlNTdGF0aWNT
Y29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9w
ZXJhbmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIERvbnREZWxldGUpOworICAgIGV4ZWMtPnNl
dFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKHNjb3BlKSk7CisgICAgTExJTlRf
UkVUVVJOKHNjb3BlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KQorewor
ICAgIExMSU5UX1RIUk9XKExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKK3sKKyAgICBMTElOVF9USFJP
VyhjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2RlYnVnKQoreworICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBp
bnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOworICAgIGludCBsYXN0TGluZSA9IHBjWzNd
LnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmRl
YnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGlu
ZSwgbGFzdExpbmUpOworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxl
ZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT53aWxsRXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1Zh
bHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJvZmlsZV9kaWRfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZl
cmVuY2UoKSktPmRpZEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAv
LyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRI
ZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
SGVscGVycy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50SGVscGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50SGVscGVyc19o
CisjZGVmaW5lIExMSW50SGVscGVyc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25h
bWVzcGFjZSBMTEludCB7CisKK3R5cGVkZWYgaW50NjRfdCBIZWxwZXJSZXR1cm5UeXBlOworCitl
eHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUq
LCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKK2V4dGVybiAiQyIg
SGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUqLCBJbnN0cnVjdGlv
biosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKKworI2RlZmluZSBMTElOVF9IRUxQRVJf
REVDTChuYW1lKSBcCisgICAgZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50XyMjbmFt
ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKKworTExJTlRfSEVMUEVSX0RFQ0wo
dHJhY2VfcHJvbG9ndWUpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rp
b25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9j
YWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCk7
CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZSk7CitMTElOVF9IRUxQRVJfREVDTChzcGVjaWFsX3Ry
YWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcik7CitMTElOVF9IRUxQRVJfREVDTChl
bnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1
bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChs
b29wX29zcik7CitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KHJlZ2lzdGVyX2ZpbGVfY2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJp
dHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2sp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jcmVhdGVfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29udmVydF90aGlz
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXdfYXJyYXkpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJh
eV9idWZmZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdleHApOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25vdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
c3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3RlcSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2Vx
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9kZWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Bvc3RfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25lZ2F0ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9tdWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1Yik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2Qp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Jp
dG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2JpdG5vdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2lu
c3RhbmNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9mKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3Vu
ZGVmaW5lZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbik7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX29iamVjdCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2luKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9yZXNvbHZlX3NraXApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmVfZ2xvYmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbF9keW5h
bWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2Jh
bF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9yZXNvbHZlX3dpdGhfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5
X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9kZWxfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV92YWwpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHV0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wdXRfZ2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfc2V0dGVyKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qdHJ1ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZhbHNlKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5s
ZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfam5ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2Vx
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfamdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVy
ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9pbW0pOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3N3aXRjaF9jaGFyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0
Y2hfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYyk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmNfZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y2FsbF9ldmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9u
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3N0cmNhdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9f
cHJpbWl0aXZlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uZXh0X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wdXNoX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl90aHJvdyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNl
X2Vycm9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1Zyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Byb2ZpbGVfZGlkX2NhbGwpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2Vu
ZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50SGVscGVyc19oCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29u
ZmlnLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRP
ZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludE9mZmxp
bmVBc21Db25maWdfaAorI2RlZmluZSBMTEludE9mZmxpbmVBc21Db25maWdfaAorCisjaW5jbHVk
ZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4NikKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2
IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisjZW5kaWYKKworI2lmIENQVShB
Uk12NykKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElO
RV9BU01fQVJNdjcgMAorI2VuZGlmCisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisjZGVmaW5lIE9G
RkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FT
U0VSVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgQ1BVKEJJR19FTkRJQU4pCisjZGVmaW5lIE9G
RkxJTkVfQVNNX0JJR19FTkRJQU4gMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VO
RElBTiAwCisjZW5kaWYKKworI2lmIEVOQUJMRShMTElOVF9PU1JfVE9fSklUKQorI2RlZmluZSBP
RkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRf
RU5BQkxFRCAwCisjZW5kaWYKKworI2lmIExMSU5UX0VYRUNVVElPTl9UUkFDSU5HCisjZGVmaW5l
IE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVf
QVNNX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNlbmRpZgorCisjZW5kaWYgLy8gTExJbnRPZmZsaW5l
QXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQWxsb2NhdGlvblNwYWNlLmgi
CisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1
ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVFN0dWJz
LmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNUeXBl
SW5mby5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKdW1wVGFi
bGUuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRlICJNYXJr
ZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgorI2luY2x1ZGUgIlNjb3BlQ2hh
aW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5o
IgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0lt
cGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgT0ZGTElORV9BU01fT0ZGU0VUT0Yo
Y2xhenosIGZpZWxkKSBPQkpFQ1RfT0ZGU0VUT0YoY2xhenosIGZpZWxkKQorCitjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCog
ZHVtbXkoKTsKK307CisKK2NvbnN0IHVuc2lnbmVkKiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KCkKK3sKKyNpbmNsdWRlICJMTEludERlc2lyZWRPZmZzZXRzLmgiCisgICAgcmV0dXJuIGV4
dHJhY3RvclRhYmxlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworaW50IG1haW4oaW50LCBj
aGFyKiopCit7CisgICAgLy8gT3V0IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0aW9uLCBtYWtlIHN1
cmUgdGhhdCBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkgaXMgbGl2ZSwKKyAgICAvLyBh
bmQgdGhlIGV4dHJhY3RvclRhYmxlIGlzIGxpdmUsIHRvby4KKyAgICBwcmludGYoIiVwXG4iLCBK
U0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSk7CisgICAgcmV0dXJuIDA7Cit9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludFRo
dW5rcy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSlNJbnRlcmZhY2VKSVQu
aCIKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIHZvaWQgKCp0YXJnZXQpKCkpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0Owor
ICAgIAorICAgIC8vIEZJWE1FOiB0aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0byBkbyBp
dCBvbiBYODYsIGJ1dCBJJ20gbm90IHN1cmUgSSBjYXJlLgorICAgIGppdC5tb3ZlKEpTSW50ZXJm
YWNlSklUOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSksIEpTSW50
ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsK
KyAgICAKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0LCBHTE9C
QUxfVEhVTktfSUQpOworICAgIHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0
b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSk7
Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1
bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2Fs
bEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7Cisg
ICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1
bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFs
RGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7Cit9CisKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2Jh
bERhdGEsIGxsaW50X2V2YWxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQorewor
ICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9wcm9n
cmFtX3Byb2xvZ3VlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRUaHVua3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRUaHVua3NfaAor
I2RlZmluZSBMTEludFRodW5rc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lm
IEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRhOworCituYW1lc3BhY2UgTExJbnQg
eworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNv
bnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFs
RGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlD
aGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2Vu
ZGlmIC8vIExMSW50VGh1bmtzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjM4MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworCisjIENyYXNoIGNvdXJzZSBvbiB0aGUgbGFuZ3VhZ2UgdGhhdCB0aGlzIGlzIHdy
aXR0ZW4gaW4gKHdoaWNoIEkganVzdCBjYWxsCisjICJhc3NlbWJseSIgZXZlbiB0aG91Z2ggaXQn
cyBtb3JlIHRoYW4gdGhhdCk6CisjCisjIC0gTW9zdGx5IGdhcy1zdHlsZSBvcGVyYW5kIG9yZGVy
aW5nLiBUaGUgbGFzdCBvcGVyYW5kIHRlbmRzIHRvIGJlIHRoZQorIyAgIGRlc3RpbmF0aW9uLiBT
byAiYSA6PSBiIiBpcyB3cml0dGVuIGFzICJtb3YgYiwgYSIuIEJ1dCB1bmxpa2UgZ2FzLAorIyAg
IGNvbXBhcmlzb25zIGFyZSBpbi1vcmRlciwgc28gImlmIChhIDwgYikiIGlzIHdyaXR0ZW4gYXMK
KyMgICAiYmlsdCBhLCBiLCAuLi4iLgorIworIyAtICJiIiA9IGJ5dGUsICJoIiA9IDE2LWJpdCB3
b3JkLCAiaSIgPSAzMi1iaXQgd29yZCwgInAiID0gcG9pbnRlci4KKyMgICBDdXJyZW50bHkgdGhp
cyBpcyBqdXN0IDMyLWJpdCBzbyAiaSIgYW5kICJwIiBhcmUgaW50ZXJjaGFuZ2VhYmxlCisjICAg
ZXhjZXB0IHdoZW4gYW4gb3Agc3VwcG9ydHMgb25lIGJ1dCBub3QgdGhlIG90aGVyLgorIworIyAt
IEluIGdlbmVyYWwsIHZhbGlkIG9wZXJhbmRzIGZvciBtYWNybyBpbnZvY2F0aW9ucyBhbmQgaW5z
dHJ1Y3Rpb25zIGFyZQorIyAgIHJlZ2lzdGVycyAoZWcgInQwIiksIGFkZHJlc3NlcyAoZWcgIjRb
dDBdIiksIGJhc2UtaW5kZXggYWRkcmVzc2VzCisjICAgKGVnICI3W3QwLCB0MSwgMl0iKSwgYWJz
b2x1dGUgYWRkcmVzc2VzIChlZyAiMHhhMDAwMDAwMFtdIiksIG9yIGxhYmVscworIyAgIChlZyAi
X2ZvbyIgb3IgIi5mb28iKS4gTWFjcm8gaW52b2NhdGlvbnMgY2FuIGFsc28gdGFrZSBhbm9ueW1v
dXMKKyMgICBtYWNyb3MgYXMgb3BlcmFuZHMuIEluc3RydWN0aW9ucyBjYW5ub3QgdGFrZSBhbm9u
eW1vdXMgbWFjcm9zLgorIworIyAtIExhYmVscyBtdXN0IGhhdmUgbmFtZXMgdGhhdCBiZWdpbiB3
aXRoIGVpdGhlciAiXyIgb3IgIi4iLiAgQSAiLiIgbGFiZWwKKyMgICBpcyBsb2NhbCBhbmQgZ2V0
cyByZW5hbWVkIGJlZm9yZSBjb2RlIGdlbiB0byBtaW5pbWl6ZSBuYW1lc3BhY2UKKyMgICBwb2xs
dXRpb24uIEEgIl8iIGxhYmVsIGlzIGFuIGV4dGVybiBzeW1ib2wgKGkuZS4gIi5nbG9ibCIpLiBU
aGUgIl8iCisjICAgbWF5IG9yIG1heSBub3QgYmUgcmVtb3ZlZCBkdXJpbmcgY29kZSBnZW4gZGVw
ZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGFzbQorIyAgIGNvbnZlbnRpb25zIGZvciBDIG5hbWUgbWFu
Z2xpbmcgb24gdGhlIHRhcmdldCBwbGF0Zm9ybSBtYW5kYXRlIGEgIl8iCisjICAgcHJlZml4Lgor
IworIyAtIEEgIm1hY3JvIiBpcyBhIGxhbWJkYSBleHByZXNzaW9uLCB3aGljaCBtYXkgYmUgZWl0
aGVyIGFub255bW91cyBvcgorIyAgIG5hbWVkLiBCdXQgdGhpcyBoYXMgY2F2ZWF0cy4gIm1hY3Jv
IiBjYW4gdGFrZSB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLAorIyAgIHdoaWNoIG1heSBiZSBtYWNy
b3Mgb3IgYW55IHZhbGlkIG9wZXJhbmRzLCBidXQgaXQgY2FuIG9ubHkgcmV0dXJuCisjICAgY29k
ZS4gQnV0IHlvdSBjYW4gZG8gVHVyaW5nLWNvbXBsZXRlIHRoaW5ncyB2aWEgY29udGludWF0aW9u
IHBhc3NpbmcKKyMgICBzdHlsZTogIm1hY3JvIGZvbyAoYSwgYikgYihhKSBlbmQgZm9vKGZvbywg
Zm9vKSIuIEFjdHVhbGx5LCBkb24ndCBkbworIyAgIHRoYXQsIHNpbmNlIHlvdSdsbCBqdXN0IGNy
YXNoIHRoZSBhc3NlbWJsZXIuCisjCisjIC0gQW4gImlmIiBpcyBhIGNvbmRpdGlvbmFsIG9uIHNl
dHRpbmdzLiBBbnkgaWRlbnRpZmllciBzdXBwbGllZCBpbiB0aGUKKyMgICBwcmVkaWNhdGUgb2Yg
YW4gImlmIiBpcyBhc3N1bWVkIHRvIGJlIGEgI2RlZmluZSB0aGF0IGlzIGF2YWlsYWJsZQorIyAg
IGR1cmluZyBjb2RlIGdlbi4gU28geW91IGNhbid0IHVzZSAiaWYiIGZvciBjb21wdXRhdGlvbiBp
biBhIG1hY3JvLCBidXQKKyMgICB5b3UgY2FuIHVzZSBpdCB0byBzZWxlY3QgZGlmZmVyZW50IHBp
ZWNlcyBvZiBjb2RlIGZvciBkaWZmZXJlbnQKKyMgICBwbGF0Zm9ybXMuCisjCisjIC0gQXJndW1l
bnRzIHRvIG1hY3JvcyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIHJhdGhlciB0aGFuIGR5bmFtaWMg
c2NvcGluZy4KKyMgICBDb25zdCdzIGFsc28gZm9sbG93IGxleGljYWwgc2NvcGluZyBhbmQgbWF5
IG92ZXJyaWRlIChoaWRlKSBhcmd1bWVudHMKKyMgICBvciBvdGhlciBjb25zdHMuIEFsbCB2YXJp
YWJsZXMgKGFyZ3VtZW50cyBhbmQgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBvcGVy
YW5kcy4gQWRkaXRpb25hbGx5LCBhcmd1bWVudHMgKGJ1dCBub3QgY29uc3RhbnRzKSBjYW4gYmUg
Ym91bmQKKyMgICB0byBtYWNyb3MuCisKKworIyBUaGVzZSBkZWNsYXJhdGlvbnMgbXVzdCBtYXRj
aCBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaC4KK2NvbnN0IENhbGxGcmFtZUhlYWRlclNpemUg
PSA0OAorY29uc3QgQXJndW1lbnRDb3VudCA9IC00OAorY29uc3QgQ2FsbGVyRnJhbWUgPSAtNDAK
K2NvbnN0IENhbGxlZSA9IC0zMgorY29uc3QgU2NvcGVDaGFpbiA9IC0yNAorY29uc3QgUmV0dXJu
UEMgPSAtMTYKK2NvbnN0IENvZGVCbG9jayA9IC04CisKK2NvbnN0IFRoaXNBcmd1bWVudE9mZnNl
dCA9IC1DYWxsRnJhbWVIZWFkZXJTaXplIC0gOAorCisjIERlY2xhcmUgc29tZSBhbGlhc2VzIGZv
ciB0aGUgcmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAorCisjIE9mZnNldHMg
bmVlZGVkIGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRpb24uCitpZiBCSUdf
RU5ESUFOCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQg
PSA0CitlbHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0IFBheWxvYWRPZmZz
ZXQgPSAwCitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCitjb25zdCBJ
bnQzMlRhZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51bGxUYWcgPSAtMwor
Y29uc3QgVW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQorY29uc3QgRW1wdHlW
YWx1ZVRhZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29uc3QgTG93ZXN0VGFn
ID0gRGVsZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25zdCBTdHJpbmdUeXBl
ID0gNQorY29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFncyBjb25zdGFudHMuCitj
b25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVtZW50c0hhc0luc3Rh
bmNlID0gMgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDgKKworIyBIZWFw
IGFsbG9jYXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4
ID0gMworCisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3QgRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNvbnN0YW50cy4KK2Nv
bnN0IEdsb2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0IEZ1bmN0aW9uQ29k
ZSA9IDIKKworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0aGUgYXJn
dW1lbnQgY291bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRhZ09m
ZnNldAorCisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25zdCBWZWN0b3JTaXpl
T2Zmc2V0ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisjIFN0cmluZyBmbGFn
cy4KK2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxpdGllcworbWFjcm8g
Y3Jhc2goKQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3ZlIDAsIHQwCisgICAg
Y2FsbCB0MAorZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAgaWYgQVNTRVJUX0VO
QUJMRUQKKyAgICAgICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAgY3Jhc2goKQorICAgIC5vazoK
KyAgICBlbmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVz
dGluYXRpb25SZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGxyLCBkZXN0aW5h
dGlvblJlZ2lzdGVyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBvcCBkZXN0aW5hdGlvblJlZ2lz
dGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIHJlc3Rv
cmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQorICAgIGlmIEFSTXY3
CisgICAgICAgIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAgZWxzaWYgWDg2CisgICAgICAg
IHB1c2ggc291cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitl
bmQKKworbWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQwor
ICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHBjT2Zm
c2V0KQorICAgIGxzaGlmdGkgMiwgcGNPZmZzZXQKKyAgICBhZGRwIHBjT2Zmc2V0LCBQQworICAg
IGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZzZXQpCisgICAgbG9h
ZGkgcGNPZmZzZXQsIHQwCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQwKQorZW5kCisK
K21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFn
T2Zmc2V0W2Nmcl0sIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBjQ2FsbDIoZnVuY3Rp
b24sIGFyZzEsIGFyZzIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAg
ICAgICBtb3ZlIGFyZzIsIHQxCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAor
ICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisg
ICAgY2FsbCBmdW5jdGlvbgorZW5kCisKKyMgVGhpcyBiYXJlbHkgd29ya3MuIGFyZzMgYW5kIGFy
ZzQgc2hvdWxkIHByb2JhYmx5IGJlIGltbWVkaWF0ZXMuCittYWNybyBjQ2FsbDQoZnVuY3Rpb24s
IGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcx
LCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgICAgIG1vdmUgYXJnMywgdDIKKyAgICAg
ICAgbW92ZSBhcmc0LCB0MworICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAg
ICAgICAgcG9rZSBhcmcyLCAxCisgICAgICAgIHBva2UgYXJnMywgMgorICAgICAgICBwb2tlIGFy
ZzQsIDMKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlv
bgorZW5kCisKK21hY3JvIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGNDYWxsMihoZWxwZXIsIGNm
ciwgUEMpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVn
Z2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVyYW5kIGluIHRoZSBp
bnN0cnVjdGlvbiBzdHJlYW0uIGZyb21XaGVyZQorIyBzaG91bGQgYmUgYW4gaW1tZWRpYXRlIGlu
dGVnZXIgLSBhbnkgaW50ZWdlciB5b3UgbGlrZTsgdXNlIGl0IHRvIGlkZW50aWZ5IHRoZSBwbGFj
ZSB5b3UncmUKKyMgZGVidWdnaW5nIGZyb20uIG9wZXJhbmQgc2hvdWxkIGxpa2V3aXNlIGJlIGFu
IGltbWVkaWF0ZSwgYW5kIHNob3VsZCBpZGVudGlmeSB0aGUgb3BlcmFuZAorIyBpbiB0aGUgaW5z
dHJ1Y3Rpb24gc3RyZWFtIHlvdSdkIGxpa2UgdG8gcHJpbnQgb3V0LgorbWFjcm8gdHJhY2VPcGVy
YW5kKGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX29wZXJhbmQs
IGNmciwgUEMsIGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUg
dDEsIGNmcgorZW5kCisKKyMgRGVidWdnaW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBsaWtlIHRvIHBy
aW50IHRoZSB2YWx1ZSBvZiBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbgorIyBzdHJlYW0u
IFNhbWUgYXMgdHJhY2VPcGVyYW5kKCksIGJ1dCBhc3N1bWVzIHRoYXQgdGhlIG9wZXJhbmQgaXMg
YSByZWdpc3RlciwgYW5kIHByaW50cyBpdHMKKyMgdmFsdWUuCittYWNybyB0cmFjZVZhbHVlKGZy
b21XaGVyZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX3ZhbHVlLCBjZnIsIFBD
LCBmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIK
K2VuZAorCittYWNybyB0cmFjZUV4ZWN1dGlvbigpCisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcK
KyAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfdHJhY2UpCisgICAgZW5kCitlbmQKKworIyBDYWxs
IGEgaGVscGVyIGZvciBjYWxsIG9wY29kZXMuCittYWNybyBjYWxsQ2FsbEhlbHBlcihhZHZhbmNl
LCBoZWxwZXIsIGFjdGlvbikKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQywgdDAKKyAgICBzdG9y
ZXAgdDAsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIGNDYWxsMihoZWxwZXIs
IGNmciwgUEMpCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYWN0aW9uKHQwKQorZW5kCisKK21hY3Jv
IHNsb3dQYXRoRm9yQ2FsbChhZHZhbmNlLCBoZWxwZXIpCisgICAgY2FsbENhbGxIZWxwZXIoCisg
ICAgICAgIGFkdmFuY2UsCisgICAgICAgIGhlbHBlciwKKyAgICAgICAgbWFjcm8gKGNhbGxlZSkK
KyAgICAgICAgICAgIGNhbGwgY2FsbGVlCisgICAgICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbCgp
CisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklUKGluY3JlbWVudCwg
YWN0aW9uKQorICAgIGlmIEpJVF9FTkFCTEVECisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0MAorICAgICAgICBiYWRkaXMgaW5jcmVtZW50LCBDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRl
Q291bnRlclt0MF0sIC5jb250aW51ZQorICAgICAgICBhY3Rpb24oKQorICAgIC5jb250aW51ZToK
KyAgICBlbmQKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgY2hl
Y2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMSwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAg
IHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgICAgICAgICBj
Q2FsbDIoX2xsaW50X2xvb3Bfb3NyLCBjZnIsIFBDKQorICAgICAgICAgICAgbW92ZSB0MSwgY2Zy
CisgICAgICAgICAgICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAgICAgICAgam1wIHQwCisgICAg
ICAgIC5yZWNvdmVyOgorICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNl
dFtjZnJdLCBQQworICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZv
ckVwaWxvZ3VlKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxMCwKKyAgICAgICAg
bWFjcm8gKCkKKyAgICAgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlcGxhY2UpCisgICAgICAg
IGVuZCkKK2VuZAorCittYWNybyBhc3NlcnROb3RDb25zdGFudChpbmRleCkKKyAgICBhc3NlcnQo
bWFjcm8gKG9rKSBiaWx0IGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgb2sgZW5k
KQorZW5kCisKKyMgSW5kZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVn
aXN0ZXJzLiBJbmRleCBpcyBub3QKKyMgY2hhbmdlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxv
YWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
cGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2Yg
ZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2
YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxvYWRwIFRhZ09m
ZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5
bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4IGFuZCBwYXls
b2FkIG1heSBiZSB0aGUgc2FtZSByZWdpc3Rlci4gSW5kZXggbWF5IGJlIGNsb2JiZXJlZC4KK21h
Y3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAg
YmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAg
bG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6Cisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhZworICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25z
dGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFt0YWddLCB0YWcKKyAgICAjIFRoZXJl
IGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0g
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBi
ZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAg
ICBsc2hpZnRpIDMsIGluZGV4CisgICAgYWRkcCBpbmRleCwgdGFnCisgICAgbG9hZHAgUGF5bG9h
ZE9mZnNldFt0YWddLCBwYXlsb2FkCisgICAgbG9hZHAgVGFnT2Zmc2V0W3RhZ10sIHRhZworLmRv
bmU6CitlbmQKKworbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20o
aW5kZXgsIHRhZ0NoZWNrLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtjZnIsIGlu
ZGV4LCA4XSkKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2Fk
CisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBh
eWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JC
dWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2
aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFs
dWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICB0YWdDaGVjayhUYWdP
ZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdKQorICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9h
ZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4IGFuZCBwYXlsb2Fk
IG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90IG11dGF0ZWQuIFVzZQor
IyB0aGlzIGlmIHlvdSBrbm93IHdoYXQgdGhlIHRhZyBvZiB0aGUgdmFyaWFibGUgc2hvdWxkIGJl
LiBEb2luZyB0aGUgdGFnCisjIHRlc3QgYXMgcGFydCBvZiBsb2FkaW5nIHRoZSB2YXJpYWJsZSBy
ZWR1Y2VzIHJlZ2lzdGVyIHVzZSwgYnV0IG1heSBub3QKKyMgYmUgZmFzdGVyIHRoYW4gZG9pbmcg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSBmb2xsb3dlZCBieSBhIGJyYW5jaCBvbiB0aGUKKyMgdGFn
LgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFn
LCBwYXlsb2FkLCBzbG93KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3Vz
dG9tKAorICAgICAgICBpbmRleCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykgYmluZXEgYWN0
dWFsVGFnLCBleHBlY3RlZFRhZywgc2xvdyBlbmQsCisgICAgICAgIHBheWxvYWQpCitlbmQKKwor
bWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQoaW5kZXgsIHBheWxv
YWQpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCisgICAgICAg
IGluZGV4LAorICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBlbmQsCisgICAgICAgIHBheWxvYWQp
CitlbmQKKworbWFjcm8gd3JpdGVCYXJyaWVyKHRhZywgcGF5bG9hZCkKKyAgICAjIE5vdGhpbmcg
dG8gZG8sIHNpbmNlIHdlIGRvbid0IGhhdmUgYSBnZW5lcmF0aW9uYWwgb3IgaW5jcmVtZW50YWwg
Y29sbGVjdG9yLgorZW5kCisKK21hY3JvIHZhbHVlUHJvZmlsZSh0YWcsIHBheWxvYWQsIHByb2Zp
bGUpCisgICAgc3RvcmVpIHRhZywgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRb
cHJvZmlsZV0KKyAgICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQ
YXlsb2FkT2Zmc2V0W3Byb2ZpbGVdCitlbmQKKworCisjIEluZGljYXRlIHRoZSBiZWdpbm5pbmcg
b2YgTExJbnQuCitfbGxpbnRfYmVnaW46CisgICAgY3Jhc2goKQorCisKKyMgRW50cnlwb2ludHMg
aW50byB0aGUgaW50ZXJwcmV0ZXIKKworbWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0
dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3Rl
cgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRh
cmdldFJlZ2lzdGVyCisgICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0Zv
ckNhbGxbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1bmN0
aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRw
IENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhl
Y3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgRnVuY3Rp
b25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRSZWdpc3Rlcl0sIHRh
cmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodGFy
Z2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCitl
bmQKKworbWFjcm8gZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCisgICAg
c3RvcmVwIHNvdXJjZVJlZ2lzdGVyLCBDb2RlQmxvY2tbY2ZyXQorZW5kCisKK21hY3JvIG5vdEZ1
bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgICMgTm90aGluZyB0byBk
byEKK2VuZAorCisjIERvIHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8gZXhlY3V0ZSBjb2Rl
LiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENvZGVCbG9jayoKKyMgaW4gdDEuIE1heSBhbHNv
IHRyaWdnZXIgcHJvbG9ndWUgZW50cnkgT1NSLgorbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0
dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zckhlbHBlciwgdHJhY2VIZWxwZXIpCisgICAgcHJlc2Vy
dmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIAorICAgICMgU2V0IHVwIHRoZSBjYWxs
IGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgorICAgIHN0b3JlcCB0MiwgUmV0dXJu
UENbY2ZyXQorICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAgICAgIGNhbGxIZWxwZXIodHJh
Y2VIZWxwZXIpCisgICAgZW5kCisgICAgY29kZUJsb2NrR2V0dGVyKHQxKQorICAgIGlmIEpJVF9F
TkFCTEVECisgICAgICAgIGJhZGRpcyA1LCBDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRl
clt0MV0sIC5jb250aW51ZQorICAgICAgICBjQ2FsbDIob3NySGVscGVyLCBjZnIsIFBDKQorICAg
ICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgYnRweiB0MCwgLnJlY292ZXIKKyAgICAgICAgbG9h
ZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVS
ZXR1cm4odDIpCisgICAgICAgIGptcCB0MAorICAgIC5yZWNvdmVyOgorICAgICAgICBjb2RlQmxv
Y2tHZXR0ZXIodDEpCisgICAgLmNvbnRpbnVlOgorICAgIGVuZAorICAgIGNvZGVCbG9ja1NldHRl
cih0MSkKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgUEMuCisgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2luc3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpJbnN0cnVjdGlvbnM6
Om1faW5zdHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKK2VuZAorCisjIEV4
cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBs
ZWF2ZXMgYmVoaW5kLgorIyBNdXN0IGNhbGwgZGlzcGF0Y2goMCkgYWZ0ZXIgY2FsbGluZyB0aGlz
LgorbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbihwcm9maWxlQXJnU2tpcCkKKyAgICAjIFBy
b2ZpbGUgdGhlIGFyZ3VtZW50cy4gVW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBubyBjaG9pY2UgYnV0
IHRvIGRvIHRoaXMuIFRoaXMKKyAgICAjIGNvZGUgaXMgcHJldHR5IGhvcnJlbmRvdXMgYmVjYXVz
ZSBvZiB0aGUgZGlmZmVyZW5jZSBpbiBvcmRlcmluZyBiZXR3ZWVuCisgICAgIyBhcmd1bWVudHMg
YW5kIHZhbHVlIHByb2ZpbGVzLCB0aGUgZGVzaXJlIHRvIGhhdmUgYSBzaW1wbGUgbG9vcC1kb3du
LXRvLXplcm8KKyAgICAjIGxvb3AsIGFuZCB0aGUgZGVzaXJlIHRvIHVzZSBvbmx5IHRocmVlIHJl
Z2lzdGVycyBzbyBhcyB0byBwcmVzZXJ2ZSB0aGUgUEMgYW5kCisgICAgIyB0aGUgY29kZSBibG9j
ay4gSXQgaXMgbGlrZWx5IHRoYXQgdGhpcyBjb2RlIHNob3VsZCBiZSByZXdyaXR0ZW4gaW4gYSBt
b3JlCisgICAgIyBvcHRpbWFsIHdheSBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGhhdmUgbW9yZSB0
aGFuIGZpdmUgcmVnaXN0ZXJzIGF2YWlsYWJsZQorICAgICMgZm9yIGFyYml0cmFyeSB1c2UgaW4g
dGhlIGludGVycHJldGVyLgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3Qx
XSwgdDAKKyAgICBhZGRpIC1wcm9maWxlQXJnU2tpcCwgdDAgIyBVc2UgYWRkaSBiZWNhdXNlIHRo
YXQncyB3aGF0IGhhcyB0aGUgcGVlcGhvbGUKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWd0ZXEg
dDAsIDAsIG9rIGVuZCkKKyAgICBidGl6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9uZQorICAgIGxv
YWRwIENvZGVCbG9jazo6bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbdDFdLCB0MworICAgIG11bGkgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDAsIHQyICMgQWFhYWFo
aGhoISBOZWVkIHN0cmVuZ3RoIHJlZHVjdGlvbiEKKyAgICBuZWdpIHQwCisgICAgbHNoaWZ0aSAz
LCB0MAorICAgIGFkZHAgdDIsIHQzCisuYXJndW1lbnRQcm9maWxlTG9vcDoKKyAgICBsb2FkaSBU
aGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXQgKyA4IC0gcHJvZmlsZUFyZ1NraXAgKiA4W2Nm
ciwgdDBdLCB0MgorICAgIHN1YnAgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDMKKyAgICBzdG9yZWkg
dDIsIHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVlUHJvZmlsZTo6
bV9idWNrZXRzICsgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCAr
IFBheWxvYWRPZmZzZXQgKyA4IC0gcHJvZmlsZUFyZ1NraXAgKiA4W2NmciwgdDBdLCB0MgorICAg
IHN0b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBzaXplb2YgVmFsdWVQcm9maWxlICsgVmFsdWVQ
cm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGJhZGRpbnogOCwgdDAs
IC5hcmd1bWVudFByb2ZpbGVMb29wCisuYXJndW1lbnRQcm9maWxlRG9uZToKKyAgICAKKyAgICAj
IENoZWNrIHN0YWNrIGhlaWdodC4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVn
aXN0ZXJzW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQy
CisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjppbnRlcnByZXRlclt0Ml0sIHQyICAgIyBGSVhNRTog
Q2FuIGdldCB0byB0aGUgUmVnaXN0ZXJGaWxlIGZyb20gdGhlIEpJVFN0YWNrRnJhbWUKKyAgICBs
c2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MCwgY2ZyLCB0MAorICAgIGJwYWVxIEludGVycHJldGVy
OjptX3JlZ2lzdGVyRmlsZSArIFJlZ2lzdGVyRmlsZTo6bV9lbmRbdDJdLCB0MCwgLnN0YWNrSGVp
Z2h0T0sKKworICAgICMgU3RhY2sgaGVpZ2h0IGNoZWNrIGZhaWxlZCAtIG5lZWQgdG8gY2FsbCBh
IGhlbHBlci4KKyAgICBjYWxsSGVscGVyKF9sbGludF9yZWdpc3Rlcl9maWxlX2NoZWNrKQorLnN0
YWNrSGVpZ2h0T0s6CitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3
aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KK21hY3JvIGZ1bmN0aW9uQXJp
dHlDaGVjayhkb25lTGFiZWwsIGhlbHBlcikKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJn
dW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGJpYWVxIHQwLCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1l
dGVyc1t0MV0sIGRvbmVMYWJlbAorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpICAgIyBUaGlz
IGhlbHBlciBoYXMgYSBzaW1wbGUgcHJvdG9jb2w6IHQwID0gMCA9PiBubyBlcnJvciwgdDAgIT0g
MCA9PiBlcnJvcgorICAgIG1vdmUgdDEsIGNmcgorICAgIGJ0aXogdDAsIC5jb250aW51ZQorICAg
IGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xv
YmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6
OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorLmNvbnRpbnVlOgorICAgICMgUmVsb2FkIENv
ZGVCbG9jayBhbmQgUEMsIHNpbmNlIHRoZSBoZWxwZXIgY2xvYmJlcmVkIGl0LgorICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNb
dDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0aW9u
cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCisgICAgam1wIGRvbmVMYWJlbAorZW5kCisK
K19sbGludF9wcm9ncmFtX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJs
b2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwg
X2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2V2YWxf
cHJvbG9ndWU6CisgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1
bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJv
bG9ndWUpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJv
bG9ndWU6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5j
dGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCwg
X2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQorLmZ1bmN0aW9uRm9yQ2Fs
bEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKKyAgICBkaXNwYXRjaCgwKQor
ICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKKyAgICBwcm9s
b2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxv
Y2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCwgX2xsaW50
X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCisuZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCisgICAgZGlzcGF0Y2go
MCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrOgorICAgIHBy
b2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tT
ZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjaywgX2xs
aW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5m
dW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X2hlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCisKKwor
X2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUo
ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0
dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaywg
X2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKKyAgICBmdW5jdGlvbkFyaXR5
Q2hlY2soLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9sbGludF9oZWxwZXJfY29uc3RydWN0
X2FyaXR5Q2hlY2spCisKKyMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25zCisKK19sbGludF9v
cF9lbnRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQyCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVZhcnNbdDJdLCB0MgorICAgIGJ0aXogdDIs
IC5vcEVudGVyRG9uZQorICAgIG1vdmUgVW5kZWZpbmVkVGFnLCB0MAorICAgIG1vdmUgMCwgdDEK
Ky5vcEVudGVyTG9vcDoKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAg
ICBidGlueiB0MiwgLm9wRW50ZXJMb29wCisub3BFbnRlckRvbmU6CisgICAgZGlzcGF0Y2goMSkK
KworCitfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1w
dHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pCisub3BDcmVhdGVBY3RpdmF0aW9uRG9uZToKKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbml0X2xhenlfcmVnOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jcmVhdGVfYXJndW1lbnRzOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKKy5vcENyZWF0
ZUFyZ3VtZW50c0RvbmU6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBhbGxvY2F0ZUJhc2lj
SlNPYmplY3Qoc2l6ZUNsYXNzSW5kZXgsIGNsYXNzSW5mb09mZnNldCwgc3RydWN0dXJlLCByZXN1
bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2xvd0Nhc2UpCisgICAgY29uc3Qgb2Zmc2V0T2ZNeVNp
emVDbGFzcyA9IEpTR2xvYmFsRGF0YTo6aGVhcCArIEhlYXA6Om1fb2JqZWN0U3BhY2UgKyBBbGxv
Y2F0aW9uU3BhY2U6Om1fbWFya2VkU3BhY2UgKyBNYXJrZWRTcGFjZTo6bV9wcmVjaXNlU2l6ZUNs
YXNzZXMgKyBzaXplQ2xhc3NJbmRleCAqIHNpemVvZiBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzCisg
ICAgCisgICAgIyBGSVhNRTogd2UgY2FuIGdldCB0aGUgZ2xvYmFsIGRhdGEgaW4gb25lIGxvYWQg
ZnJvbSB0aGUgc3RhY2suCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gxCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbc2NyYXRjaDFdLCBzY3JhdGNoMQorICAgIAor
ICAgICMgR2V0IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LiAgICAKKyAgICBsb2FkcCBv
ZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2Vs
bFtzY3JhdGNoMV0sIHJlc3VsdAorICAgIGJ0cHogcmVzdWx0LCBzbG93Q2FzZQorICAgIAorICAg
ICMgUmVtb3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LgorICAgIGxvYWRwIFtyZXN1
bHRdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNoMiwgb2Zmc2V0T2ZNeVNpemVDbGFzcyAr
IE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdCisKKyAgICAj
IEluaXRpYWxpemUgdGhlIG9iamVjdC4KKyAgICBsb2FkcCBjbGFzc0luZm9PZmZzZXRbc2NyYXRj
aDFdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3VsdF0KKyAgICBzdG9yZXAg
c3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3VsdF0KKyAgICBzdG9yZXAgMCwgSlNP
YmplY3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0XQorICAgIGFkZHAgc2l6ZW9mIEpTT2JqZWN0LCBy
ZXN1bHQsIHNjcmF0Y2gxCisgICAgc3RvcmVwIHNjcmF0Y2gxLCBKU09iamVjdDo6bV9wcm9wZXJ0
eVN0b3JhZ2VbcmVzdWx0XQorZW5kCisKK19sbGludF9vcF9jcmVhdGVfdGhpczoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQo
dDApCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDcmVhdGVU
aGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBPYmplY3RUeXBlLCAub3BDcmVhdGVUaGlzU2xv
dworICAgIGxvYWRwIEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3QwXSwgdDIKKyAgICBidHB6IHQy
LCAub3BDcmVhdGVUaGlzU2xvdworICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2Jq
ZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywg
dDIsIHQwLCB0MSwgdDMsIC5vcENyZWF0ZVRoaXNTbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQor
ICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BDcmVhdGVU
aGlzU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX3RoaXMpCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZ2V0X2NhbGxlZToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldCArIENhbGxl
ZVtjZnJdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF9jb252ZXJ0X3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywg
Lm9wQ29udmVydFRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBiYmIgU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MF0sIE9iamVjdFR5cGUsIC5vcENv
bnZlcnRUaGlzU2xvdworICAgIGRpc3BhdGNoKDIpCisKKy5vcENvbnZlcnRUaGlzU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY29udmVydF90aGlzKQorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX25ld19vYmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmpl
Y3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0
dXJlW3QwXSwgdDEKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVD
bGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIHQxLCB0MCwg
dDIsIHQzLCAub3BOZXdPYmplY3RTbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3Jl
aSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BOZXdPYmplY3RTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfb2JqZWN0KQorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX25ld19hcnJheToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9uZXdfYXJyYXlfYnVmZmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2FycmF5X2J1ZmZlcikKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9uZXdfcmVnZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfbmV3X3JlZ2V4cCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9tb3Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0
MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0Mywg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X25vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9h
ZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDIsIHQzKQorICAg
IGJpbmVxIHQyLCBCb29sZWFuVGFnLCAub3BOb3RTbG93CisgICAgeG9yaSAxLCB0MworICAgIHN0
b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wTm90U2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfbm90KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9h
ZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQz
LCAub3BFcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BFcVNsb3cKKyAgICBiaWIgdDIs
IExvd2VzdFRhZywgLm9wRXFTbG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2llcSB0MCwg
dDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisK
Ky5vcEVxU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZXEpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3Rh
bnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcEVx
TnVsbEltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAg
IHRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkLCB0MQorICAgIGptcCAub3BFcU51bGxOb3RJbW1lZGlhdGUKKy5v
cEVxTnVsbEltbWVkaWF0ZToKKyAgICBjaWVxIHQxLCBOdWxsVGFnLCB0MgorICAgIGNpZXEgdDEs
IFVuZGVmaW5lZFRhZywgdDEKKyAgICBvcmkgdDIsIHQxCisub3BFcU51bGxOb3RJbW1lZGlhdGU6
CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3Jl
aSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xs
aW50X29wX25lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0Mgor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0
MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVx
IHQyLCB0MywgLm9wTmVxU2xvdworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcE5lcVNsb3cKKyAg
ICBiaWIgdDIsIExvd2VzdFRhZywgLm9wTmVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAg
IGNpbmVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2Nmciwg
dDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlz
cGF0Y2goNCkKKworLm9wTmVxU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmVx
KQorICAgIGRpc3BhdGNoKDQpCisgICAgCisKK19sbGludF9vcF9uZXFfbnVsbDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisg
ICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEg
dDEsIENlbGxUYWcsIC5vcE5lcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDEKKyAgICB0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQorICAgIGptcCAub3BOZXFO
dWxsTm90SW1tZWRpYXRlCisub3BOZXFOdWxsSW1tZWRpYXRlOgorICAgIGNpbmVxIHQxLCBOdWxs
VGFnLCB0MgorICAgIGNpbmVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgYW5kaSB0MiwgdDEK
Ky5vcE5lcU51bGxOb3RJbW1lZGlhdGU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNl
dFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQor
ICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gc3RyaWN0RXEoZXF1YWxpdHlPcGVyYXRpb24sIGhl
bHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAuc2xvdworICAgIGJpYiB0Miwg
TG93ZXN0VGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBDZWxsVGFnLCAubm90U3RyaW5nCisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MV0sIHQzCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUlu
Zm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5ub3RTdHJpbmcKKyAgICBiYmVxIFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDNdLCBTdHJpbmdUeXBlLCAuc2xvdwor
Lm5vdFN0cmluZzoKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBlcXVhbGl0eU9wZXJhdGlvbih0
MCwgdDEsIHQwKQorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0K
KyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0
KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCg0KQorZW5k
CisKK19sbGludF9vcF9zdHJpY3RlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc3RyaWN0
RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBl
bmQsIF9sbGludF9oZWxwZXJfc3RyaWN0ZXEpCisKKworX2xsaW50X29wX25zdHJpY3RlcToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1
bHQpIGNpbmVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVscGVyX25zdHJpY3Rl
cSkKKworCitfbGxpbnRfb3BfbGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2xlc3MpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
bGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfbGVzc2VxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dyZWF0ZXI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyKQor
ICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dyZWF0ZXJlcSkKKyAgICBkaXNw
YXRjaCg0KQorCisKK19sbGludF9vcF9wcmVfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMy
VGFnLCAub3BQcmVJbmNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDEKKyAgICBiYWRkaW8gMSwgdDEsIC5vcFByZUluY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVJbmNTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfaW5jKQorICAgIGRpc3BhdGNoKDIpCisK
KworX2xsaW50X29wX3ByZV9kZWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBy
ZURlY1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJz
dWJpbyAxLCB0MSwgLm9wUHJlRGVjU2xvdworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcFByZURlY1Nsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3ByZV9kZWMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRf
b3BfcG9zdF9pbmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50
MzJUYWcsIC5vcFBvc3RJbmNTbG93CisgICAgYmllcSB0MCwgdDEsIC5vcFBvc3RJbmNEb25lCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBtb3ZlIHQyLCB0Mwor
ICAgIGJhZGRpbyAxLCB0MywgLm9wUG9zdEluY1Nsb3cKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRh
Z09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorLm9wUG9zdElu
Y0RvbmU6CisgICAgZGlzcGF0Y2goMykKKworLm9wUG9zdEluY1Nsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Bvc3RfaW5jKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X3Bvc3RfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMy
VGFnLCAub3BQb3N0RGVjU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0RGVjRG9uZQorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAg
ICBic3ViaW8gMSwgdDMsIC5vcFBvc3REZWNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3REZWNE
b25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3REZWNTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9wb3N0X2RlYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF90
b19qc251bWJlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDIsIHQz
KQorICAgIGJpZXEgdDIsIEludDMyVGFnLCAub3BUb0pzbnVtYmVySXNJbnQKKyAgICBiaWFlcSB0
MiwgRW1wdHlWYWx1ZVRhZywgLm9wVG9Kc251bWJlclNsb3cKKy5vcFRvSnNudW1iZXJJc0ludDoK
KyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5
bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvSnNudW1iZXJT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19qc251bWJlcikKKyAgICBkaXNw
YXRjaCgzKQorCisKK19sbGludF9vcF9uZWdhdGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDAsIHQxLCB0MikKKyAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcE5lZ2F0ZVNy
Y05vdEludAorICAgIGJ0aXogdDIsIDB4N2ZmZmZmZmYsIC5vcE5lZ2F0ZVNsb3cKKyAgICBuZWdp
IHQyCisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorLm9wTmVn
YXRlU3JjTm90SW50OgorICAgIGJpYSB0MSwgTG93ZXN0VGFnLCAub3BOZWdhdGVTbG93CisgICAg
eG9yaSAweDgwMDAwMDAwLCB0MQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhd
CisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2go
MykKKworLm9wTmVnYXRlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmVnYXRl
KQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZShpbnRlZ2Vy
T3BlcmF0aW9uQW5kU3RvcmUsIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEy
W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkK
KyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MywgSW50MzJU
YWcsIC5vcDJOb3RJbnQKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBpbnRlZ2VyT3BlcmF0aW9u
QW5kU3RvcmUodDMsIHQxLCB0MCwgLnNsb3csIHQyKQorICAgIGRpc3BhdGNoKDUpCisKKy5vcDFO
b3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90IGFuIGludCwgdGhl
IHNlY29uZCBvcGVyYW5kIGNvdWxkIGJlIGFueXRoaW5nLgorICAgIGJpYSB0MiwgTG93ZXN0VGFn
LCAuc2xvdworICAgIGJpYiB0MywgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisgICAg
YmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDEsIGZ0MQorICAgIGptcCAub3Ax
Tm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDEsIHQzLCBmdDEK
Ky5vcDFOb3RJbnRSZWFkeToKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBmaWkyZCB0MCwgdDIs
IGZ0MAorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2Zy
LCB0MSwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3AyTm90SW50OgorICAgICMgRmlyc3Qgb3Bl
cmFuZCBpcyBkZWZpbml0ZWx5IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGlzIGRlZmluaXRl
bHkgbm90LgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGJpYSB0MywgTG93ZXN0VGFnLCAuc2xv
dworICAgIGNpMmQgdDAsIGZ0MAorICAgIGZpaTJkIHQxLCB0MywgZnQxCisgICAgZG91YmxlT3Bl
cmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQyLCA4XQorICAgIGRpc3Bh
dGNoKDUpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDUp
CitlbmQKKworbWFjcm8gYmluYXJ5T3AoaW50ZWdlck9wZXJhdGlvbiwgZG91YmxlT3BlcmF0aW9u
LCBoZWxwZXIpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMy
VGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBpbnRlZ2VyT3BlcmF0
aW9uKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdP
ZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9m
ZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIGRvdWJsZU9wZXJhdGlv
biwgaGVscGVyKQorZW5kCisKK19sbGludF9vcF9hZGQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJhZGRpbyBs
ZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgYWRkZCBs
ZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYWRkKQorCisKK19sbGludF9v
cF9tdWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisg
ICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAg
ICAgICAgY29uc3Qgc2NyYXRjaCA9IGludDMyVGFnICAgIyBXZSBrbm93IHRoYXQgd2UgY2FuIHJl
dXNlIHRoZSBpbnQzMlRhZyByZWdpc3RlciBzaW5jZSBpdCBoYXMgYSBjb25zdGFudC4KKyAgICAg
ICAgICAgIG1vdmUgcmlnaHQsIHNjcmF0Y2gKKyAgICAgICAgICAgIGJtdWxpbyBsZWZ0LCBzY3Jh
dGNoLCBzbG93CisgICAgICAgICAgICBidGlueiBzY3JhdGNoLCAuZG9uZQorICAgICAgICAgICAg
YmlsdCBsZWZ0LCAwLCAuc2xvdworICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgLnNsb3cKKyAg
ICAgICAgLmRvbmU6CisgICAgICAgICAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIs
IGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFBheWxvYWRPZmZzZXRbY2Zy
LCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIG11
bGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX211bCkKKworCitfbGxp
bnRfb3Bfc3ViOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBic3ViaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIHN1YmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX3N1YikKKworCitfbGxpbnRfb3BfZGl2OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcs
IGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGNpMmQgbGVmdCwgZnQwCisg
ICAgICAgICAgICBjaTJkIHJpZ2h0LCBmdDEKKyAgICAgICAgICAgIGRpdmQgZnQwLCBmdDEKKyAg
ICAgICAgICAgIGJjZDJpIGZ0MSwgcmlnaHQsIC5ub3RJbnQKKyAgICAgICAgICAgIHN0b3JlaSBp
bnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmln
aHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIGptcCAuZG9uZQor
ICAgICAgICAubm90SW50OgorICAgICAgICAgICAgc3RvcmVkIGZ0MSwgW2NmciwgaW5kZXgsIDhd
CisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCkgZGl2ZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfZGl2KQorCisK
K19sbGludF9vcF9tb2Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9tb2QpCisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBiaXRPcChvcGVyYXRp
b24sIGhlbHBlciwgYWR2YW5jZSkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQ
Q10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDMsIEludDMyVGFn
LCAuc2xvdworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBsb2FkaSA0W1BDXSwg
dDIKKyAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xvdykKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNl
dFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQor
ICAgIGRpc3BhdGNoKGFkdmFuY2UpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQor
ICAgIGRpc3BhdGNoKGFkdmFuY2UpCitlbmQKKworX2xsaW50X29wX2xzaGlmdDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xv
dykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbHNoaWZ0
LAorICAgICAgICA0KQorCisKK19sbGludF9vcF9yc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkg
bGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3JzaGlmdCwKKyAgICAgICAg
NCkKKworCitfbGxpbnRfb3BfdXJzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0
T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHVyc2hp
ZnRpIGxlZnQsIHJpZ2h0CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAg
IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl91cnNoaWZ0LAorICAgICAgICA0KQorCisKK19s
bGludF9vcF9iaXRhbmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2JpdGFuZCwKKyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0eG9y
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl9iaXR4b3IsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG9yOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBv
cmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdG9yLAorICAgICAg
ICA1KQorCisKK19sbGludF9vcF9iaXRub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDEsIHQyLCB0MykKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcEJpdG5vdFNsb3cK
KyAgICBub3RpIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBz
dG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisu
b3BCaXRub3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9iaXRub3QpCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93KQorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2Us
IC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ2hlY2tIYXNJ
bnN0YW5jZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NoZWNrX2hhc19pbnN0
YW5jZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbnN0YW5jZW9mOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICAjIENoZWNrIHRoYXQgYmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBk
ZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9yLgorICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJl
IGRlcHJlY2F0ZWQuCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkVW5jaGVja2VkKHQxLCB0MCkKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjpt
X2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgLm9wSW5zdGFuY2VvZlNs
b3cKKyAgICAKKyAgICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgorICAgIGxvYWRpIDE2W1BDXSwg
dDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEluc3RhbmNlb2ZTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRh
ZywgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQorICAgIAorICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQx
ID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCisgICAgbW92ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxv
b3A6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCisgICAgbG9hZGkgU3Ry
dWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDJdLCB0MgorICAgIGJwZXEgdDIs
IHQxLCAub3BJbnN0YW5jZW9mRG9uZQorICAgIGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcAor
CisgICAgbW92ZSAwLCB0MAorLm9wSW5zdGFuY2VvZkRvbmU6CisgICAgc3RvcmVpIEJvb2xlYW5U
YWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEluc3RhbmNlb2ZTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbnN0YW5jZW9mKQorICAgIGRpc3BhdGNoKDUpCisKKwor
X2xsaW50X29wX3R5cGVvZjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3R5cGVvZikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc191
bmRlZmluZWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9pc191bmRlZmluZWQpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfYm9v
bGVhbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2lzX2Jvb2xlYW4pCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfbnVtYmVyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfbnVt
YmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3N0cmluZzoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3N0cmluZykKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19vYmplY3Q6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19vYmplY3QpCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfaXNfZnVuY3Rpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19mdW5jdGlvbikKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9pbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2luKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29s
dmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9y
ZXNvbHZlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29sdmVfc2tpcDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVf
c2tpcCkKKyAgICBkaXNwYXRjaCg1KQorCisKK21hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xv
dykKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5h
dGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIFByb3BlcnR5IGlkZW50aWZpZXIgaW5k
ZXggaW4gdGhlIGNvZGUgYmxvY2suCisgICAgIyAxMltQQ10gIFN0cnVjdHVyZSBwb2ludGVyLCBp
bml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAgICAjIDE2W1BDXSAgT2Zm
c2V0IGluIGdsb2JhbCBvYmplY3QsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJh
dG9yLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6
bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MQorICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cKKyAgICBsb2FkaSAxNltQQ10sIHQxCisg
ICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKKyAgICBsb2FkaSBU
YWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwg
OF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBs
b2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQwCisgICAgdmFsdWVQcm9maWxlKHQyLCB0MywgdDAp
CitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICByZXNvbHZlR2xvYmFsKDYsIC5vcFJlc29sdmVHbG9iYWxTbG93KQorICAgIGRpc3BhdGNo
KDYpCisKKy5vcFJlc29sdmVHbG9iYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNwYXRjaCg2KQorCisKKyMgR2l2ZXMgeW91IHRoZSBz
Y29wZSBpbiB0MCwgd2hpbGUgYWxsb3dpbmcgeW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRp
dGlvbmFsIGNoZWNrcyBvbiB0aGUKKyMgc2NvcGVzIGFzIHRoZXkgYXJlIHRyYXZlcnNlZC4gc2Nv
cGVDaGVjaygpIGlzIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSByZWdpc3RlcgorIyBo
b2xkaW5nIHRoZSBzY29wZSwgYW5kIGEgcmVnaXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc2Ny
YXRjaC4gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QKKyMgdXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQg
c3R1ZmYgaW4gdDMgaWYgbmVlZCBiZS4KK21hY3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3Bl
cmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2FkcCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtj
ZnJdLCB0MAorICAgIGxvYWRpIGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIKKyAgICAKKyAgICBi
dGl6IHQyLCAuZG9uZQorICAgIAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGJp
bmVxIENvZGVCbG9jazo6bV9jb2RlVHlwZVt0MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AKKyAgICBi
dGJ6IENvZGVCbG9jazo6bV9uZWVkc0Z1bGxTY29wZUNoYWluW3QxXSwgLmxvb3AKKyAgICAKKyAg
ICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEKKworICAgICMg
TmVlZCB0byBjb25kaXRpb25hbGx5IHNraXAgb3ZlciBvbmUgc2NvcGUuCisgICAgYmllcSBUYWdP
ZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2YXRpb24KKyAgICBzY29w
ZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisu
bm9BY3RpdmF0aW9uOgorICAgIHN1YmkgMSwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQor
Lmxvb3A6CisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6
Om5leHRbdDBdLCB0MAorICAgIHN1YmkgMSwgdDIKKyAgICBidGlueiB0MiwgLmxvb3AKKworLmRv
bmU6CitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0Mwor
ICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0aXZhdGlvblN0cnVjdHVyZVt0M10sIHQzCisgICAg
Z2V0U2NvcGUoCisgICAgICAgIDIwW1BDXSwKKyAgICAgICAgbWFjcm8gKHNjb3BlLCBzY3JhdGNo
KQorICAgICAgICAgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0
Y2gKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAu
b3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdworICAgICAgICBlbmQpCisgICAgcmVzb2x2
ZUdsb2JhbCg3LCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3cpCisgICAgZGlzcGF0Y2goNykK
KworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCisgICAgZGlzcGF0
Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQorICAgIGRpc3BhdGNoKDcpCisKKwor
X2xsaW50X29wX2dldF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIE9w
ZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhl
IGxvYWQuCisgICAgIyA4W1BDXSAgIEluZGV4IG9mIHJlZ2lzdGVyIGluIHRoZSBzY29wZS4KKyAg
ICAjIDEyW1BDXSAgRGUgQnJ1aWppbiBpbmRleC4KKyAgICBnZXRTY29wZSgxMltQQ10sIG1hY3Jv
IChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIDhb
UENdLCB0MgorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3RbdDBdLCB0MAorICAgIGxv
YWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbdDAsIHQyLCA4XSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0s
IHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgdmFs
dWVQcm9maWxlKHQzLCB0MCwgdDEpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfcHV0
X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGdldFNjb3BlKDhbUENdLCBt
YWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDMsIHQyKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAg
IHdyaXRlQmFycmllcih0MywgdDIpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0
MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAor
ICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxv
YWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9n
bG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAg
ICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9i
amVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhd
LCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDEKKyAgICBzdG9yZWkg
dDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQzLCA4XQorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQx
LCB0MykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQw
CisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAg
d3JpdGVCYXJyaWVyKHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFt0MCwgdDEsIDhd
CisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9yZXNvbHZlX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2Jhc2UpCisgICAgZGlzcGF0Y2goNSkK
KworCitfbGxpbnRfb3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0czoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMp
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX2Jhc2U6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3dp
dGhfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfdGhp
czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jl
c29sdmVfd2l0aF90aGlzKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2dldF9ieV9p
ZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdl
dF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQorICAgICMg
b3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55
dGltZSBpZiBmYWlscywgc2luY2UKKyAgICAjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0
IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCisgICAgIyB0byB0
YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0
aCwgd2hpY2ggaXMgd2hhdAorICAgICMgd2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4K
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAg
ICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdl
W3QzXSwgdDAKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5
SWRTbG93CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0Ml0s
IHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDJdLCB0MgorICAgIHN0b3JlaSB0Mywg
VGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgbG9hZGkgMzJbUENdLCB0MQorICAgIHZhbHVlUHJvZmlsZSh0MywgdDIsIHQx
KQorICAgIGRpc3BhdGNoKDkpCisKKy5vcEdldEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9nZXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOSkKKworCitfbGxpbnRfb3BfZ2V0
X2FyZ3VtZW50c19sZW5ndGg6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdworICAgIGxvYWRpIEFy
Z3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQyCisgICAgc3ViaSAxLCB0MgorICAg
IHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QXJndW1l
bnRzTGVuZ3RoU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50
c19sZW5ndGgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10s
IHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAu
b3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6
Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MCwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQwLCB0
MikKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDFdCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBkaXNwYXRjaCg5KQorCisub3BQdXRCeUlkU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X2lkKQorICAgIGRpc3BhdGNoKDkpCisK
KworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcykKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJ
ZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0Mywg
Lm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0
OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYWRkcCB0MSwgdDMKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDEsIHQyKQorICAgIHdyaXRlQmFycmllcih0MSwgdDIp
CisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgMjRbUENdLCB0MQorICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdCisgICAgZGlzcGF0Y2goOSkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0OgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1
Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAorICAgICAgICBtYWNybyAob2xk
U3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQorICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0g
b2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRo
ZSBwcm90bworICAgICAgICAKKyAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAorICAg
ICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgICAg
ICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisg
ICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAg
ICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0
dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAgICAgICAgLmxvb3A6CisgICAgICAgICAgICBsb2FkaSBT
dHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90
b0NlbGwKKyAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwg
b2xkU3RydWN0dXJlCisgICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwg
c2xvdworICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCisgICAgICAgICAgICBiaW5lcSBTdHJ1
Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5s
b29wCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQpCisKKworX2xsaW50X29wX2RlbF9ieV9p
ZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Rl
bF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfdmFsOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2Fk
aSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2dsb2JhbERhdGFbdDFdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQy
LCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6
anNBcnJheUNsYXNzSW5mb1t0MV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQodDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAgIGJwbmVxIFt0MF0sIHQy
LCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDBdLCB0Mwor
ICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xv
dworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3Ig
KyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVj
dG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQorICAgIGJpZXEgdDIsIEVtcHR5VmFs
dWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgbG9hZGkg
MTZbUENdLCB0MAorICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQwKQorICAgIGRpc3BhdGNoKDUp
CisKKy5vcEdldEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5
X3ZhbCkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFs
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAx
MltQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFn
LCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQxLCBJbnQzMlRhZywgdDIsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93KQorICAgIGFkZGkg
MSwgdDIKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQor
ICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAgICBuZWdpIHQyCisg
ICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zm
c2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0
MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNw
YXRjaCg0KQorCisub3BHZXRBcmd1bWVudEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9nZXRfYnlfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BD
XSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEs
IC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICBicG5lcSB0MSwg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywg
dDIsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDAKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDJdLCB0MAorICAgIGJwbmVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hl
ZFN0cnVjdHVyZVt0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkgMjRbUENdLCB0MAor
ICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAKKyAgICBzdWJpIDEsIHQwCisgICAgYmlhZXEgdDAs
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2FjaGVhYmxlU2xvdHNbdDNdLCAub3BHZXRC
eVBuYW1lU2xvdworICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0Ml0sIHQy
CisgICAgbG9hZGkgVGFnT2Zmc2V0W3QyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFt0MiwgdDAsIDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MSwg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCisgICAgZGlzcGF0Y2goNykKKworLm9wR2V0QnlQbmFtZVNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9wbmFtZSkKKyAgICBkaXNwYXRjaCg3KQorCisKK19s
bGludF9vcF9wdXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEs
IC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MCwgSW50MzJUYWcsIHQyLCAub3BQdXRCeVZhbFNsb3cpCisgICAg
bG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERh
dGFbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MF0s
IHQwCisgICAgYnBuZXEgW3QxXSwgdDAsIC5vcFB1dEJ5VmFsU2xvdworICAgIGJpYWVxIHQyLCBK
U0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MV0sIC5vcFB1dEJ5VmFsU2xvdworICAgIGxvYWRwIEpT
QXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQwCisgICAgYmllcSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9y
ICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFB1dEJ5VmFsRW1wdHkK
Ky5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQ6CisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MSwgdDMpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0
MykKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAs
IHQyLCA4XQorICAgIHN0b3JlaSB0MywgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRP
ZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcFB1dEJ5VmFsRW1wdHk6Cisg
ICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCisgICAgYmli
IHQyLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAor
ICAgIGFkZGkgMSwgdDIsIHQxCisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3Ro
W3QwXQorICAgIGptcCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisKKy5vcFB1dEJ5VmFsU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9kZWxfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9wdXRfYnlfaW5kZXg6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaW5kZXgpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfcHV0X2dldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3B1dF9nZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfcHV0X3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3B1dF9zZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbG9v
cDoKKyAgICBub3AKK19sbGludF9vcF9qbXA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRp
c3BhdGNoQnJhbmNoKDRbUENdKQorCisKK19sbGludF9vcF9qbXBfc2NvcGVzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfam1wX3Njb3BlcykKKyAg
ICBkaXNwYXRjaCgwKQorCisKK21hY3JvIGp1bXBUcnVlT3JGYWxzZShjb25kaXRpb25PcCwgc2xv
dykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MSwgQm9vbGVhblRhZywgdDAsIC5zbG93KQorICAgIGNvbmRpdGlvbk9wKHQwLCAudGFyZ2V0
KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10p
CisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoc2xvdykKKyAgICBkaXNwYXRjaCgwKQorZW5kCisK
K19sbGludF9vcF9sb29wX2lmX3RydWU6CisgICAgbm9wCitfbGxpbnRfb3BfanRydWU6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAgbWFjcm8gKHZh
bHVlLCB0YXJnZXQpIGJ0aW56IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVs
cGVyX2p0cnVlKQorCisKK19sbGludF9vcF9sb29wX2lmX2ZhbHNlOgorICAgIG5vcAorX2xsaW50
X29wX2pmYWxzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAganVtcFRydWVPckZhbHNlKAor
ICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpeiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl9qZmFsc2UpCisKKworbWFjcm8gZXF1YWxOdWxsKGNlbGxIYW5k
bGVyLCBpbW1lZGlhdGVIYW5kbGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAuaW1tZWRpYXRlCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgY2VsbEhhbmRsZXIoU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMp
CisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5pbW1lZGlhdGU6Cisg
ICAgb3JpIDEsIHQxCisgICAgaW1tZWRpYXRlSGFuZGxlcih0MSwgLnRhcmdldCkKKyAgICBkaXNw
YXRjaCgzKQorZW5kCisKK19sbGludF9vcF9qZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRibnogdmFs
dWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2
YWx1ZSwgdGFyZ2V0KSBiaWVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorICAgIAorCitf
bGxpbnRfb3Bfam5lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwo
CisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJ6IHZhbHVlLCBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmlu
ZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisKKworX2xsaW50X29wX2puZXFfcHRyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BD
XSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcEpuZXFQ
dHJCcmFuY2gKKyAgICBicGVxIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxLCAub3BKbmVx
UHRyRmFsbFRocm91Z2gKKy5vcEpuZXFQdHJCcmFuY2g6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJb
UENdKQorLm9wSm5lcVB0ckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8g
Y29tcGFyZShpbnRlZ2VyQ29tcGFyZSwgZG91YmxlQ29tcGFyZSwgaGVscGVyKQorICAgIGxvYWRp
IDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDIsIHQwLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MywgdDIsIHQz
KQorICAgIGJpbmVxIHQwLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAgIGJpbmVxIHQyLCBJbnQz
MlRhZywgLm9wMk5vdEludAorICAgIGludGVnZXJDb21wYXJlKHQxLCB0MywgLmp1bXBUYXJnZXQp
CisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5vdEludDoKKyAgICBiaWEgdDAsIExvd2VzdFRhZywg
LnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJp
bmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQzLCBmdDEKKyAgICBqbXAgLm9wMU5v
dEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQzLCB0MiwgZnQxCisu
b3AxTm90SW50UmVhZHk6CisgICAgZmlpMmQgdDEsIHQwLCBmdDAKKyAgICBkb3VibGVDb21wYXJl
KGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisub3AyTm90SW50Ogor
ICAgIGNpMmQgdDEsIGZ0MAorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGZpaTJk
IHQzLCB0MiwgZnQxCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisg
ICAgZGlzcGF0Y2goNCkKKworLmp1bXBUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENd
KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCgwKQorZW5k
CisKK19sbGludF9vcF9sb29wX2lmX2xlc3M6CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3M6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl9qbGVzcykKKworCitfbGxpbnRfb3Bfam5sZXNzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzKQorCisKK19sbGludF9vcF9sb29wX2lmX2dyZWF0
ZXI6CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxl
ZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmRndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9q
Z3JlYXRlcikKKworCitfbGxpbnRfb3Bfam5ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVx
IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRh
cmdldCkgYmRsdGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfam5ncmVhdGVyKQorCisKK19sbGludF9vcF9sb29wX2lmX2xlc3NlcToKKyAgICBub3AK
K19sbGludF9vcF9qbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxIGxl
ZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2psZXNzZXEpCisK
KworX2xsaW50X29wX2pubGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJl
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3R1biBs
ZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmxlc3NlcSkK
KworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyZXE6CisgICAgbm9wCitfbGxpbnRfb3Bfamdy
ZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcSBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcmVxKQorCisKK19sbGlu
dF9vcF9qbmdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0dW4gbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5ncmVhdGVyZXEpCisK
KworX2xsaW50X29wX2xvb3BfaGludDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tT
d2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N3aXRj
aF9pbW06CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBs
b2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVE
YXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQzICAgIyBGSVhN
RTogd291bGQgYmUgbmljZSB0byBwZWVwaG9sZSB0aGlzIQorICAgIGxvYWRwIENvZGVCbG9jazo6
UmFyZURhdGE6Om1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNl
dFt0Ml0sIHQyCisgICAgYWRkcCB0MywgdDIKKyAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcFN3
aXRjaEltbU5vdEludAorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAg
IGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zm
c2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTaW1wbGVKdW1wVGFi
bGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MworICAgIGxvYWRp
IFt0MywgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEsIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisg
ICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQorCisub3BTd2l0Y2hJbW1Ob3RJbnQ6Cisg
ICAgYmliIHQxLCBMb3dlc3RUYWcsIC5vcFN3aXRjaEltbVNsb3cgICMgR28gdG8gc2xvdyBwYXRo
IGlmIGl0J3MgYSBkb3VibGUuCisub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRj
aEJyYW5jaCg4W1BDXSkKKworLm9wU3dpdGNoSW1tU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfc3dpdGNoX2ltbSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9zd2l0
Y2hfY2hhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAg
IGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkK
KyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFy
ZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMKKyAgICBs
b2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXMgKyBW
ZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEgdDEs
IENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJ
bmZvOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAg
ICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MF0sIHQwCisgICAgYmluZXEgU3RyaW5nSW1wbDo6
bV9sZW5ndGhbdDBdLCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTdHJp
bmdJbXBsOjptX2RhdGE4W3QwXSwgdDEKKyAgICBidGlueiBTdHJpbmdJbXBsOjptX2hhc2hBbmRG
bGFnc1t0MF0sIEhhc2hGbGFnczhCaXRCdWZmZXIsIC5vcFN3aXRjaENoYXI4Qml0CisgICAgbG9h
ZGggW3QxXSwgdDAKKyAgICBqbXAgLm9wU3dpdGNoQ2hhclJlYWR5Cisub3BTd2l0Y2hDaGFyOEJp
dDoKKyAgICBsb2FkYiBbdDFdLCB0MAorLm9wU3dpdGNoQ2hhclJlYWR5OgorICAgIHN1YmkgU2lt
cGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6
OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxU
aHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9y
QnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBsb2FkaSBbdDIsIHQwLCA0XSwgdDEKKyAgICBidGl6
IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNl
dCh0MSkKKworLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhb
UENdKQorCisKK19sbGludF9vcF9zd2l0Y2hfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX3N0cmluZykKKyAgICBkaXNwYXRj
aCgwKQorCisKK19sbGludF9vcF9uZXdfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
YnRpeiAxMltQQ10sIC5vcE5ld0Z1bmNVbmNoZWNrZWQKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcE5ld0Z1bmNE
b25lCisub3BOZXdGdW5jVW5jaGVja2VkOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9u
ZXdfZnVuYykKKy5vcE5ld0Z1bmNEb25lOgorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X25ld19mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX25ld19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGRvQ2Fs
bChoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAg
IGxvYWRwIExMSW50Q2FsbExpbmtJbmZvOjpjYWxsZWVbdDFdLCB0MgorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wQ2FsbFNsb3cpCisgICAgYmlu
ZXEgdDMsIHQyLCAub3BDYWxsU2xvdworICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBhZGRwIDI0
LCBQQworICAgIGxzaGlmdGkgMywgdDMKKyAgICBhZGRwIGNmciwgdDMgICMgdDMgY29udGFpbnMg
dGhlIG5ldyB2YWx1ZSBvZiBjZnIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX3Njb3BlQ2hhaW5b
dDJdLCB0MAorICAgIHN0b3JlaSB0MiwgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBz
dG9yZWkgdDAsIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGxvYWRpIDggLSAy
NFtQQ10sIHQyCisgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0K
KyAgICBzdG9yZXAgY2ZyLCBDYWxsZXJGcmFtZVt0M10KKyAgICBzdG9yZWkgdDIsIEFyZ3VtZW50
Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBU
YWdPZmZzZXRbdDNdCisgICAgc3RvcmVpIENlbGxUYWcsIFNjb3BlQ2hhaW4gKyBUYWdPZmZzZXRb
dDNdCisgICAgbW92ZSB0MywgY2ZyCisgICAgY2FsbCBMTEludENhbGxMaW5rSW5mbzo6bWFjaGlu
ZUNvZGVUYXJnZXRbdDFdCisgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorCisub3BDYWxsU2xvdzoK
KyAgICBzbG93UGF0aEZvckNhbGwoNiwgaGVscGVyKQorZW5kCisKK19sbGludF9vcF9jYWxsOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBlcl9jYWxsKQorCisK
K19sbGludF9vcF9jb25zdHJ1Y3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRvQ2FsbChf
bGxpbnRfaGVscGVyX2NvbnN0cnVjdCkKKworCitfbGxpbnRfb3BfY2FsbF92YXJhcmdzOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzbG93UGF0aEZvckNhbGwoNiwgX2xsaW50X2hlbHBlcl9j
YWxsX3ZhcmFyZ3MpCisKKworX2xsaW50X29wX2NhbGxfZXZhbDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgCisgICAgIyBFdmFsIGlzIGV4ZWN1dGVkIGluIG9uZSBvZiB0d28gbW9kZXM6Cisg
ICAgIworICAgICMgMSkgV2UgZmluZCB0aGF0IHdlJ3JlIHJlYWxseSBpbnZva2luZyBldmFsKCkg
aW4gd2hpY2ggY2FzZSB0aGUKKyAgICAjICAgIGV4ZWN1dGlvbiBpcyBwZXJmb21lZCBlbnRpcmVs
eSBpbnNpZGUgdGhlIGhlbHBlciwgYW5kIGl0CisgICAgIyAgICByZXR1cm5zIHRoZSBQQyBvZiBh
IGZ1bmN0aW9uIHRoYXQganVzdCByZXR1cm5zIHRoZSByZXR1cm4gdmFsdWUKKyAgICAjICAgIHRo
YXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAgIworICAgICMgMikgV2UgZmluZCB0aGF0IHdlJ3Jl
IGludm9raW5nIHNvbWV0aGluZyBjYWxsZWQgZXZhbCgpIHRoYXQgaXMgbm90CisgICAgIyAgICB0
aGUgcmVhbCBldmFsLiBUaGVuIHRoZSBoZWxwZXIgcmV0dXJucyB0aGUgUEMgb2YgdGhlIHRoaW5n
IHRvCisgICAgIyAgICBjYWxsLCBhbmQgd2UgY2FsbCBpdC4KKyAgICAjCisgICAgIyBUaGlzIGFs
bG93cyB1cyB0byBoYW5kbGUgdHdvIGNhc2VzLCB3aGljaCB3b3VsZCByZXF1aXJlIGEgdG90YWwg
b2YKKyAgICAjIHVwIHRvIGZvdXIgcGllY2VzIG9mIHN0YXRlIHRoYXQgY2Fubm90IGJlIGVhc2ls
eSBwYWNrZWQgaW50byB0d28KKyAgICAjIHJlZ2lzdGVycyAoQyBmdW5jdGlvbnMgY2FuIHJldHVy
biB1cCB0byB0d28gcmVnaXN0ZXJzLCBlYXNpbHkpOgorICAgICMKKyAgICAjIC0gVGhlIGNhbGwg
ZnJhbWUgcmVnaXN0ZXIuIFRoaXMgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVuIG1vZGlmaWVkCisg
ICAgIyAgIGJ5IHRoZSBoZWxwZXIsIGJ1dCB0aGUgY29udmVudGlvbiBpcyB0aGF0IGl0IHJldHVy
bnMgaXQuIEl0J3Mgbm90CisgICAgIyAgIHRvdGFsbHkgY2xlYXIgaWYgdGhhdCdzIG5lY2Vzc2Fy
eSwgc2luY2UgdGhlIGNmciBpcyBjYWxsZWUgc2F2ZS4KKyAgICAjICAgQnV0IHRoYXQncyBvdXIg
c3R5bGUgaW4gdGhpcyBoZXJlIGludGVycHJldGVyIHNvIHdlIHN0aWNrIHdpdGggaXQuCisgICAg
IworICAgICMgLSBBIGJpdCB0byBzYXkgaWYgdGhlIGhlbHBlciBzdWNjZXNzZnVsbHkgZXhlY3V0
ZWQgdGhlIGV2YWwgYW5kIGhhcworICAgICMgICB0aGUgcmV0dXJuIHZhbHVlLCBvciBkaWQgbm90
IGV4ZWN1dGUgdGhlIGV2YWwgYnV0IGhhcyBhIFBDIGZvciB1cworICAgICMgICB0byBjYWxsLgor
ICAgICMKKyAgICAjIC0gRWl0aGVyOgorICAgICMgICAtIFRoZSBKUyByZXR1cm4gdmFsdWUgKHR3
byByZWdpc3RlcnMpLCBvcgorICAgICMKKyAgICAjICAgLSBUaGUgUEMgdG8gY2FsbC4KKyAgICAj
CisgICAgIyBJdCB0dXJucyBvdXQgdG8gYmUgZWFzaWVyIHRvIGp1c3QgYWx3YXlzIGhhdmUgdGhp
cyByZXR1cm4gdGhlIGNmcgorICAgICMgYW5kIGEgUEMgdG8gY2FsbCwgYW5kIHRoYXQgUEMgbWF5
IGJlIGEgZHVtbXkgdGh1bmsgdGhhdCBqdXN0CisgICAgIyByZXR1cm5zIHRoZSBKUyB2YWx1ZSB0
aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgIAorICAgIHNsb3dQYXRoRm9yQ2FsbCg0LCBfbGxp
bnRfaGVscGVyX2NhbGxfZXZhbCkKKworCitfbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQ6Cisg
ICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorCisKK19sbGludF9vcF90ZWFyX29mZl9hY3RpdmF0aW9u
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSA4
W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcs
IC5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZAorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQKKy5vcFRl
YXJPZmZBY3RpdmF0aW9uQ3JlYXRlZDoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGVh
cl9vZmZfYWN0aXZhdGlvbikKKy5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZDoKKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF90ZWFyX29mZl9hcmd1bWVudHM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN1YmkgMSwgdDAgICAjIEdldCB0
aGUgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cykKKy5vcFRlYXJPZmZB
cmd1bWVudHNOb3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFjcm8gZG9SZXR1cm4o
KQorICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCisgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2Zy
XSwgY2ZyCisgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4odDIpCisgICAgcmV0
CitlbmQKKworX2xsaW50X29wX3JldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tT
d2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF9v
cF9jYWxsX3B1dF9yZXN1bHQ6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10s
IHQzCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB2YWx1ZVByb2ZpbGUodDEsIHQwLCB0MykK
KyAgICB0cmFjZUV4ZWN1dGlvbigpICMgTmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIGl0IHdvdWxk
IGNsb2JiZXIgdDEsIHQwCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmV0X29iamVj
dF9vcl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9y
RXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wUmV0T2JqZWN0T3JUaGlz
Tm90T2JqZWN0CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJi
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBl
LCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBkb1JldHVybigpCisKKy5vcFJldE9i
amVjdE9yVGhpc05vdE9iamVjdDoKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF9vcF9t
ZXRob2RfY2hlY2s6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgV2UgaWdub3JlIG1ldGhv
ZCBjaGVja3MgYW5kIHVzZSBub3JtYWwgZ2V0X2J5X2lkIG9wdGltaXphdGlvbnMuCisgICAgZGlz
cGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3RyY2F0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3RyY2F0KQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX3RvX3ByaW1pdGl2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
OFtQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MiwgdDEsIHQwKQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BUb1ByaW1pdGl2ZUlzSW1t
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJuZXEgU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5vcFRv
UHJpbWl0aXZlU2xvd0Nhc2UKKy5vcFRvUHJpbWl0aXZlSXNJbW06CisgICAgc3RvcmVpIHQxLCBU
YWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb1ByaW1pdGl2ZVNsb3dDYXNlOgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19wcmltaXRpdmUpCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfZ2V0X3BuYW1lczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2dldF9wbmFtZXMpCisgICAgZGlzcGF0Y2goMCkgIyBUaGUgaGVs
cGVyIGVpdGhlciBhZHZhbmNlcyB0aGUgUEMgb3IganVtcHMgdXMgdG8gc29tZXdoZXJlIGVsc2Uu
CisKKworX2xsaW50X29wX25leHRfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkaSAxNltQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XSwgdDAKKyAgICBiaWVxIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIs
IDhdLCAub3BOZXh0UG5hbWVFbmQKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjptX2pzU3RyaW5nc1t0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgOF0sIHQzCisgICAg
YWRkaSAxLCB0MAorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAg
IGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA4
W1BDXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MworICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGJwbmVxIHQxLCBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIC5vcE5leHRQbmFtZVNsb3cKKyAg
ICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFByb3RvdHlwZUNoYWluW3Qy
XSwgdDAKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDBdLCB0MAorICAgIGJ0
cHogW3QwXSwgLm9wTmV4dFBuYW1lVGFyZ2V0Cisub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxv
b3A6CisgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W3QxXSwgTnVs
bFRhZywgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUg
KyBQYXlsb2FkT2Zmc2V0W3QxXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qy
XSwgdDEKKyAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGFkZHAgNCwg
dDAKKyAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKKy5vcE5l
eHRQbmFtZVRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgyNFtQQ10pCisKKy5vcE5leHRQbmFt
ZUVuZDoKKyAgICBkaXNwYXRjaCg3KQorCisub3BOZXh0UG5hbWVTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9uZXh0X3BuYW1lKSAjIFRoaXMgZWl0aGVyIGtlZXBzIHRoZSBQQyB3
aGVyZSBpdCB3YXMgKGNhdXNpbmcgdXMgdG8gbG9vcCkgb3Igc2V0cyBpdCB0byB0YXJnZXQuCisg
ICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfcHVzaF9zY29wZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfc2NvcGUpCisgICAgZGlz
cGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9wX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9wX3Njb3BlKQorICAgIGRpc3BhdGNoKDEp
CisKKworX2xsaW50X29wX3B1c2hfbmV3X3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9uZXdfc2NvcGUpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfY2F0Y2g6CisgICAgIyBUaGlzIGlzIHdoZXJlIHdlIGVuZCB1cCBm
cm9tIHRoZSBKSVQncyB0aHJvdyB0cmFtcG9saW5lIChiZWNhdXNlIHRoZQorICAgICMgbWFjaGlu
ZSBjb2RlIHJldHVybiBhZGRyZXNzIHdpbGwgYmUgc2V0IHRvIF9sbGludF9vcF9jYXRjaCksIGFu
ZCBmcm9tCisgICAgIyB0aGUgaW50ZXJwcmV0ZXIncyB0aHJvdyB0cmFtcG9saW5lIChzZWUgX2xs
aW50X3Rocm93X3RyYW1wb2xpbmUpLgorICAgICMgVGhlIEpJVCB0aHJvd2luZyBwcm90b2NvbCBj
YWxscyBmb3IgdGhlIGNmciB0byBiZSBpbiB0MC4gVGhlIHRocm93aW5nCisgICAgIyBjb2RlIG11
c3QgaGF2ZSBrbm93biB0aGF0IHdlIHdlcmUgdGhyb3dpbmcgdG8gdGhlIGludGVycHJldGVyLCBh
bmQgaGF2ZQorICAgICMgc2V0IEpTR2xvYmFsRGF0YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRo
cm93LgorICAgIG1vdmUgdDAsIGNmcgorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERh
dGFbc3BdLCB0MworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0Zv
clRocm93W3QzXSwgUEMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxv
YWRPZmZzZXRbdDNdLCB0MAorICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFn
T2Zmc2V0W3QzXSwgdDEKKyAgICBzdG9yZWkgMCwgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQ
YXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBKU0dsb2JhbERhdGE6
OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10gICAgICAgCisgICAgbG9hZGkgNFtQQ10sIHQyCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBU
YWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB0cmFjZUV4ZWN1dGlvbigpICAjIFRoaXMgbmVlZHMg
dG8gYmUgaGVyZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY2xvYmJlciB0MCwgdDEsIHQyLCB0
MyBhYm92ZS4KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvdzoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rocm93KQorICAgIGRp
c3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93X3JlZmVyZW5jZV9lcnJvcjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rocm93X3JlZmVyZW5j
ZV9lcnJvcikKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9qc3I6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFkZGkgMyAqIDQsIFBDLCB0MQor
ICAgIHN0b3JlaSB0MSwgW2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisK
KworX2xsaW50X29wX3NyZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENd
LCB0MAorICAgIGxvYWRwIFtjZnIsIHQwLCA4XSwgUEMKKyAgICBkaXNwYXRjaCgwKQorCisKK19s
bGludF9vcF9kZWJ1ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2RlYnVnKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Byb2ZpbGVf
d2lsbF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1l
OjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCB0MAorICAgIGJ0cHogW3QwXSwgLm9wUHJv
ZmlsZVdpbGxDYWxsRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcm9maWxlX3dp
bGxfY2FsbCkKKy5vcFByb2ZpbGVXaWxsQ2FsbERvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitf
bGxpbnRfb3BfcHJvZmlsZV9kaWRfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZHAgSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgdDAKKyAgICBi
dHB6IFt0MF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKKy5vcFByb2ZpbGVEaWRDYWxsRG9uZToKKyAgICBkaXNw
YXRjaCgyKQorCisKK19sbGludF9vcF9lbmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNo
ZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9h
ZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQwCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF90aHJvd19mcm9tX2hlbHBl
cl90cmFtcG9saW5lOgorICAgICMgV2hlbiB0aHJvd2luZyBmcm9tIHRoZSBpbnRlcnByZXRlciAo
aS5lLiB0aHJvd2luZyBmcm9tIExMSW50SGVscGVycyksIHNvCisgICAgIyB0aGUgdGhyb3cgdGFy
Z2V0IGlzIG5vdCBuZWNlc3NhcmlseSBpbnRlcnByZXRlZCBjb2RlLCB3ZSBjb21lIHRvIGhlcmUu
CisgICAgIyBUaGlzIGVzc2VudGlhbGx5IGVtdWxhdGVzIHRoZSBKSVQncyB0aHJvd2luZyBwcm90
b2NvbC4KKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBs
b2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNH
bG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCitfbGxpbnRfdGhyb3df
ZHVyaW5nX2NhbGxfdHJhbXBvbGluZToKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNh
bGwodDIpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAg
bG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpT
R2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworIyBMYXN0bHksIG1h
a2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxs
IG9wY29kZXMuCisjIFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcg
TExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CisjIGFzIG11Y2guCisKK21hY3JvIG5vdFN1
cHBvcnRlZCgpCisgICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgY3Jhc2goKQorICAgIGVs
c2UKKyAgICAgICAgIyBXZSBzaG91bGQgdXNlIHdoYXRldmVyIHRoZSBzbWFsbGVzdCBwb3NzaWJs
ZSBpbnN0cnVjdGlvbiBpcywganVzdCB0bworICAgICAgICAjIGVuc3VyZSB0aGF0IHRoZXJlIGlz
IGEgZ2FwIGJldHdlZW4gaW5zdHJ1Y3Rpb24gbGFiZWxzLiBJZiBtdWx0aXBsZQorICAgICAgICAj
IHNtYWxsZXN0IGluc3RydWN0aW9ucyBleGlzdCwgd2Ugc2hvdWxkIHBpY2sgdGhlIG9uZSB0aGF0
IGlzIG1vc3QKKyAgICAgICAgIyBsaWtlbHkgcmVzdWx0IGluIGV4ZWN1dGlvbiBiZWluZyBoYWx0
ZWQuIEN1cnJlbnRseSB0aGF0IGlzIHRoZSBicmVhaworICAgICAgICAjIGluc3RydWN0aW9uIG9u
IGFsbCBhcmNoaXRlY3R1cmVzIHdlJ3JlIGludGVyZXN0ZWQgaW4uIChCcmVhayBpcyBpbnQzCisg
ICAgICAgICMgb24gSW50ZWwsIHdoaWNoIGlzIDEgYnl0ZSwgYW5kIGJrcHQgb24gQVJNdjcsIHdo
aWNoIGlzIDIgYnl0ZXMuKQorICAgICAgICBicmVhaworICAgIGVuZAorZW5kCisKK19sbGludF9v
cF9nZXRfYXJyYXlfbGVuZ3RoOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9j
dXN0b21fY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9j
dXN0b21fcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9j
dXN0b21fc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dl
bmVyaWM6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJf
Y2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJf
cHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJf
c2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3Byb3RvOgor
ICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfc2VsZjoKKyAgICBub3RT
dXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X3N0cmluZ19sZW5ndGg6CisgICAgbm90U3VwcG9y
dGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgp
CisKK19sbGludF9vcF9wdXRfYnlfaWRfcmVwbGFjZToKKyAgICBub3RTdXBwb3J0ZWQoKQorCitf
bGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb246CisgICAgbm90U3VwcG9ydGVkKCkKKworCisj
IEluZGljYXRlIHRoZSBlbmQgb2YgTExJbnQuCitfbGxpbnRfZW5kOgorICAgIGNyYXNoKCkKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCisjaWYgRU5BQkxFKExM
SU5UKQorCisjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCisKKyNpbmNsdWRlICJM
TEludEFzc2VtYmx5LmgiCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisj
ZGVmaW5lIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworI2RlZmluZSBM
TElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29kZSwgbGVuZ3RoKSBleHRlcm4gIkMiIHZvaWQgbGxp
bnRfIyNvcGNvZGUoKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoTExJTlRfSU5TVFJVQ1RJT05f
REVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJVQ1RJT05fREVDTAorCitleHRlcm4gIkMiIHZvaWQg
bGxpbnRfYmVnaW4oKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9lbmQoKTsKK2V4dGVybiAiQyIg
dm9pZCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZXZh
bF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3By
b2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9w
cm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9h
cml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50
KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSgp
OworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUoKTsK
KworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExvd0xldmVsSW50ZXJwcmV0
ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMg
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK2NsYXNzIFNwZWNpYWxSZWdpc3RlcgorICBkZWYgaW5pdGlhbGl6ZShuYW1l
KQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBA
bmFtZQorICBlbmQKK2VuZAorCitBUk12N19EQVRBX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5uZXco
ImlwIikKK0FSTXY3X0FERFJfUkVHID0gU3BlY2lhbFJlZ2lzdGVyLm5ldygicjMiKQorCitkZWYg
bW92ZUltbWVkaWF0ZSh2YWx1ZSwgcmVnaXN0ZXIpCisgICMgQ3VycmVudGx5IHdlIG9ubHkgaGFu
ZGxlIHRoZSBzaW1wbGUgY2FzZXMsIGFuZCBmYWxsIGJhY2sgdG8gbW92L21vdnQgZm9yIHRoZSBj
b21wbGV4IG9uZXMuCisgIGlmIHZhbHVlID49IDAgJiYgdmFsdWUgPCAyNTYKKyAgICAkYXNtLnB1
dHMgIm1vdncgXCMje3ZhbHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNpZiAo
fnZhbHVlKSA+PSAwICYmICh+dmFsdWUpIDwgMjU2CisgICAgJGFzbS5wdXRzICJtdm53IFwjI3t+
dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgIGVsc2UKKyAgICAkYXNtLnB1dHMg
Im1vdncgXCMje3ZhbHVlICYgMHhmZmZmfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAg
IGlmICh2YWx1ZSAmIDB4ZmZmZjAwMDApICE9IDAKKyAgICAgICRhc20ucHV0cyAibW92dCBcIyN7
dmFsdWUgPj4gMTZ9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgICAgZW5kCisgIGVuZAor
ZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFt
ZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgInIwIgorICAgIHdoZW4gInQxIiwg
ImExIiwgInIxIgorICAgICAgInIxIgorICAgIHdoZW4gInQyIiwgImEyIgorICAgICAgInIyIgor
ICAgIHdoZW4gImEzIgorICAgICAgInIzIgorICAgIHdoZW4gInQzIgorICAgICAgInI0IgorICAg
IHdoZW4gInQ0IgorICAgICAgInI3IgorICAgIHdoZW4gImNmciIKKyAgICAgICJyNSIKKyAgICBl
bHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQ
b3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9y
eU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3Rv
cmVXcmFwCisgICAgeWllbGQKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgIGRl
ZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAiZnIiCisgICAg
ICAiZDAiCisgICAgd2hlbiAiZnIxIiwKKyAgICAgICJkMSIKKyAgICB3aGVuICJmcjIiCisgICAg
ICAiZDIiCisgICAgd2hlbiAiZnIzIgorICAgICAgImQzIgorICAgIHdoZW4gImZyNCIKKyAgICAg
ICJkNCIKKyAgICB3aGVuICJmcjUiCisgICAgICAiZDUiCisgICAgZWxzZQorICAgICAgcmFpc2UK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVy
YW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgYXJt
VjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlpZWxk
IHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiBhcm1WN09wZXJhbmQK
KyAgICByYWlzZSAiSW52YWxpZCBpbW1lZGlhdGUgI3t2YWx1ZX0iIGlmIHZhbHVlIDwgMCBvciB2
YWx1ZSA+IDI1NQorICAgICIjJHt2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFy
ZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVt
b3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRT
dG9yZVdyYXAKKyAgICB5aWVsZCBzZWxmCisgIGVuZAorZW5kCisKK21vZHVsZSBBUk12N0FkZHJl
c3NVdGlsaXRpZXMKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHNlbGYuYXJtVjdQcmVw
YXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgJGFzbS5wdXRzICJcdGxkciAje3NlbGYuYXJt
VjdQb3NzaWJseU1lbW9yeU9wZXJhbmR9LCAje0FSTXY3X0RBVEFfUkVHLmFybVY3T3BlcmFuZH0i
CisgICAgeWllbGQgQVJNdjdfREFUQV9SRUcKKyAgICAkYXNtLnB1dHMgIlx0c3RyICN7QVJNdjdf
REFUQV9SRUcuYXJtVjdPcGVyYW5kfSwgI3tzZWxmLmFybVY3UG9zc2libHlNZW1vcnlPcGVyYW5k
fSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBpbmNsdWRlIEFSTXY3QWRkcmVzc1V0
aWxpdGllcworCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBp
ZiBvZmZzZXQudmFsdWUgPCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgbW92
ZUltbWVkaWF0ZShvZmZzZXQudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1
ZSA8IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICAiWyN7YmFzZS5hcm1WN09w
ZXJhbmR9LCAje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH1dIgorICAgIGVsc2UKKyAgICAg
ICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7b2Zmc2V0LmFybVY3T3BlcmFuZH1dIgorICAgIGVu
ZAorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NV
dGlsaXRpZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAg
aWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAgIG1vdmVJbW1lZGlhdGUob2Zmc2V0LnZhbHVlLCBB
Uk12N19BRERSX1JFRykKKyAgICAgICRhc20ucHV0cyAiYWRkdyAje0FSTXY3X0FERFJfUkVHLmFy
bVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSAhPSAw
CisgICAgICAiWyN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfSwgI3tpbmRleC5hcm1WN09w
ZXJhbmR9LCBsc2wgXCMje3NjYWxlfV0iCisgICAgZWxzZQorICAgICAgIlsje2Jhc2UuYXJtVjdP
cGVyYW5kfSwgI3tpbmRleC5hcm1WN09wZXJhbmR9LCBsc2wgXCMje3NjYWxlfV0iCisgICAgZW5k
CisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBpbmNsdWRlIEFSTXY3QWRk
cmVzc1V0aWxpdGllcworICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFu
ZAorICAgIG1vdmVJbW1lZGlhdGUoYWRkcmVzcy52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgIGVu
ZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgIlsje0FSTXY3X0FE
RFJfUkVHLmFybVY3T3BlcmFuZH1dIgorICBlbmQKK2VuZAorCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA4IEBA
CisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMi
CityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJz
ZXIiCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworY2xhc3MgQXNz
ZW1ibGVyCisgIGRlZiBpbml0aWFsaXplKG91dHApCisgICAgQG91dHAgPSBvdXRwCisgICAgQHN0
YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBlbnRlckFzbQorICAgIEBvdXRwLnB1dHMgImFz
bSAoIgorICAgIEBzdGF0ZSA9IDphc20KKyAgZW5kCisgIAorICBkZWYgbGVhdmVBc20KKyAgICBA
b3V0cC5wdXRzICIpOyIKKyAgICBAc3RhdGUgPSA6Y3BwCisgIGVuZAorICAKKyAgZGVmIGluQXNt
CisgICAgZW50ZXJBc20KKyAgICB5aWVsZAorICAgIGxlYXZlQXNtCisgIGVuZAorICAKKyAgZGVm
IHB1dHMobGluZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5w
dXRzKChsaW5lICsgIlxuIikuaW5zcGVjdCkKKyAgZW5kCisgIAorICBkZWYgY29tbWVudCh0ZXh0
KQorICAgIEBvdXRwLnB1dHMgIi8vICN7dGV4dH0iCisgIGVuZAorZW5kCisKK2FzbUZpbGUgPSBB
UkdWLnNoaWZ0CitvZmZzZXRzRmlsZSA9IEFSR1Yuc2hpZnQKK291dHB1dEZsbm0gPSBBUkdWLnNo
aWZ0CisKK29mZnNldHNMaXN0LCBjb25maWdJbmRleCA9IG9mZnNldHNBbmRDb25maWd1cmF0aW9u
SW5kZXgob2Zmc2V0c0ZpbGUpCitpbnB1dERhdGEgPSBJTzo6cmVhZChhc21GaWxlKQorCitpbnB1
dEhhc2ggPQorICAiLy8gb2ZmbGluZWFzbSBpbnB1dCBoYXNoOiAiICsgRGlnZXN0OjpTSEExLmhl
eGRpZ2VzdChpbnB1dERhdGEpICsKKyAgIiAiICsgRGlnZXN0OjpTSEExLmhleGRpZ2VzdCgob2Zm
c2V0c0xpc3QgKyBbY29uZmlnSW5kZXhdKS5qb2luKCcgJykpCisKK2lmIEZpbGVUZXN0LmV4aXN0
PyBvdXRwdXRGbG5tCisgIEZpbGUub3BlbihvdXRwdXRGbG5tLCAiciIpIHsKKyAgICB8IGlucCB8
CisgICAgZmlyc3RMaW5lID0gaW5wLmdldHMKKyAgICBpZiBmaXJzdExpbmUgYW5kIGZpcnN0TGlu
ZS5jaG9tcCA9PSBpbnB1dEhhc2gKKyAgICAgICRzdGRlcnIucHV0cyAiTm90aGluZyBjaGFuZ2Vk
LiIKKyAgICAgIGV4aXQgMAorICAgIGVuZAorICB9CitlbmQKKworRmlsZS5vcGVuKG91dHB1dEZs
bm0sICJ3IikgeworICB8IG91dHAgfAorICAkb3V0cHV0ID0gb3V0cAorICAkb3V0cHV0LnB1dHMg
aW5wdXRIYXNoCisgIAorICAkYXNtID0gQXNzZW1ibGVyLm5ldygkb3V0cHV0KQorICAKKyAgYXN0
ID0gcGFyc2UobGV4KGlucHV0RGF0YSkpCisgIAorICBmb3JTZXR0aW5ncyhjb21wdXRlU2V0dGlu
Z3NDb21iaW5hdGlvbnMoYXN0KVtjb25maWdJbmRleF0sIGFzdCkgeworICAgIHwgY29uY3JldGVT
ZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgIGFzc2VydENvbmZpZ3VyYXRpb24o
Y29uY3JldGVTZXR0aW5ncykKKyAgICBsb3dMZXZlbEFTVCA9IGxvd0xldmVsQVNULnJlc29sdmUo
KmJ1aWxkT2Zmc2V0c01hcChsb3dMZXZlbEFTVCwgb2Zmc2V0c0xpc3QpKQorICAgIGVtaXRDb2Rl
SW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kKSB7
CisgICAgICAkYXNtLmluQXNtIHsKKyAgICAgICAgbG93TGV2ZWxBU1QubG93ZXIoYmFja2VuZCkK
KyAgICAgIH0KKyAgICB9CisgIH0KK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2FzdC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODEzIEBACisjIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjCisjIEJhc2UgdXRpbGl0eSB0eXBlcyBmb3IgdGhl
IEFTVC4KKyMKKworIyBWYWxpZCBtZXRob2RzIGZvciBOb2RlOgorIworIyBub2RlLmNoaWxkcmVu
IC0+IFJldHVybnMgYW4gYXJyYXkgb2YgaW1tZWRpYXRlIGNoaWxkcmVuLgorIworIyBub2RlLmRl
c2NlbmRlbnRzIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHN0cmljdCBkZXNjZW5kYW50cyAo
Y2hpbGRyZW4KKyMgICAgIGFuZCBjaGlsZHJlbiBvZiBjaGlsZHJlbiwgdHJhbnNpdGl2ZWx5KS4K
KyMKKyMgbm9kZS5mbGF0dGVuIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgc3Ry
aWN0IGRlc2NlbmRhbnRzIGFuZAorIyAgICAgdGhlIG5vZGUgaXRzZWxmLgorIworIyBub2RlLmZp
bHRlcih0eXBlKSAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhvc2UgZWxlbWVudHMg
aW4KKyMgICAgIG5vZGUuZmxhdHRlbiB0aGF0IGFyZSBvZiB0aGUgZ2l2ZW4gdHlwZSAoaXNfYT8g
dHlwZSByZXR1cm5zIHRydWUpLgorIworIyBub2RlLm1hcENoaWxkcmVue3x2fCAuLi59IC0+IFJl
dHVybnMgYSBuZXcgbm9kZSB3aXRoIGFsbCBjaGlsZHJlbgorIyAgICAgcmVwbGFjZWQgYWNjb3Jk
aW5nIHRvIHRoZSBnaXZlbiBibG9jay4KKyMKKyMgRXhhbXBsZXM6CisjCisjIG5vZGUuZmlsdGVy
KFNldHRpbmcpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHNldHRpbmdzIHRoYXQgdGhlIEFT
VCdzCisjICAgICBJZlRoZW5FbHNlIGJsb2NrcyBkZXBlbmQgb24uCisjCisjIG5vZGUuZmlsdGVy
KFN0cnVjdE9mZnNldCkudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc3RydWN0dXJlIG9mZnNl
dHMKKyMgICAgIHRoYXQgdGhlIEFTVCBkZXBlbmRzIG9uLgorCitjbGFzcyBOb2RlCisgIGF0dHJf
cmVhZGVyIDpjb2RlT3JpZ2luCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAg
IEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICBlbmQKKyAgCisgIGRlZiBjb2RlT3JpZ2luU3Ry
aW5nCisgICAgImxpbmUgbnVtYmVyICN7QGNvZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBk
ZXNjZW5kYW50cworICAgIGNoaWxkcmVuLmNvbGxlY3R7fHZ8IHYuZmxhdHRlbn0uZmxhdHRlbgor
ICBlbmQKKyAgCisgIGRlZiBmbGF0dGVuCisgICAgW3NlbGZdICsgZGVzY2VuZGFudHMKKyAgZW5k
CisgIAorICBkZWYgZmlsdGVyKHR5cGUpCisgICAgZmxhdHRlbi5zZWxlY3R7fHZ8IHYuaXNfYT8g
dHlwZX0KKyAgZW5kCitlbmQKKworY2xhc3MgTm9DaGlsZHJlbiA8IE5vZGUKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIFtdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgc2Vs
ZgorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXRLZXkKKyAgYXR0cl9yZWFkZXIgOnN0
cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShzdHJ1Y3QsIGZpZWxkKQorICAgIEBz
dHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisgIGRlZiBoYXNo
CisgICAgQHN0cnVjdC5oYXNoICsgQGZpZWxkLmhhc2ggKiAzCisgIGVuZAorICAKKyAgZGVmIGVx
bD8ob3RoZXIpCisgICAgQHN0cnVjdCA9PSBvdGhlci5zdHJ1Y3QgYW5kIEBmaWVsZCA9PSBvdGhl
ci5maWVsZAorICBlbmQKK2VuZAorICAgIAorIworIyBBU1Qgbm9kZXMuCisjCisKK2NsYXNzIFN0
cnVjdE9mZnNldCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisg
IGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvckZpZWxkKGNvZGVP
cmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAga2V5ID0gU3RydWN0T2Zmc2V0S2V5Lm5ldyhzdHJ1
Y3QsIGZpZWxkKQorICAgIAorICAgIHVubGVzcyBAQG1hcHBpbmdba2V5XQorICAgICAgQEBtYXBw
aW5nW2tleV0gPSBTdHJ1Y3RPZmZzZXQubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisg
ICAgZW5kCisgICAgQEBtYXBwaW5nW2tleV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIj
e3N0cnVjdH06OiN7ZmllbGR9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIpCisgICAgaWYg
QHN0cnVjdCAhPSBvdGhlci5zdHJ1Y3QKKyAgICAgIHJldHVybiBAc3RydWN0IDw9PiBvdGhlci5z
dHJ1Y3QKKyAgICBlbmQKKyAgICBAZmllbGQgPD0+IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisK
K2NsYXNzIFNpemVvZiA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVjdAorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQHN0cnVjdCA9IHN0cnVjdAorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAor
ICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICB1bmxlc3MgQEBtYXBw
aW5nW3N0cnVjdF0KKyAgICAgIEBAbWFwcGluZ1tzdHJ1Y3RdID0gU2l6ZW9mLm5ldyhjb2RlT3Jp
Z2luLCBzdHJ1Y3QpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW3N0cnVjdF0KKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICJzaXplb2YgI3tAc3RydWN0fSIKKyAgZW5kCisgIAorICBkZWYgPD0+
KG90aGVyKQorICAgIEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICBlbmQKK2VuZAorCitjbGFz
cyBJbW1lZGlhdGUgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDp2YWx1ZQorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFsdWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7dmFsdWV9Igor
ICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBvdGhlci5pc19hPyBJbW1lZGlhdGUgYW5k
IG90aGVyLnZhbHVlID09IEB2YWx1ZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVz
IDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBs
ZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVu
CisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAg
QWRkSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdo
dCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSArICN7cmlnaHQu
ZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRy
X3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBs
ZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAg
IEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBA
cmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgU3ViSW1tZWRpYXRlcy5u
ZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAtICN7cmlnaHQuZHVtcH0pIgorICBlbmQK
K2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwg
OnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAor
ICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTXVsSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwg
KHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiKCN7bGVmdC5kdW1wfSAqICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBO
ZWdJbW1lZGlhdGUgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAY2hp
bGQgPSBjaGlsZAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAY2hpbGRdCisgIGVu
ZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTmVnSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2lu
LCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoLSN7QGNoaWxk
LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAg
YXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBA
QG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFJlZ2lz
dGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVd
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEZQ
UmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
bmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYu
Zm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAg
ICAgIEBAbWFwcGluZ1tuYW1lXSA9IEZQUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkK
KyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
IG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUgPCBOb0NoaWxkcmVuCisgIGF0dHJf
cmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBw
aW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1
bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBWYXJpYWJsZS5u
ZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcyA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2UsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIGJhc2UsIG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBi
YXNlID0gYmFzZQorICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbQGJhc2UsIEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisg
ICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBvZmZzZXQp
KQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1w
fV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIg
OmJhc2UsIDppbmRleCwgOnNjYWxlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBiYXNlID0gYmFzZQorICAgIEBpbmRleCA9IGluZGV4CisgICAgQHNjYWxlID0gc2Nh
bGUKKyAgICByYWlzZSB1bmxlc3MgWzEsIDIsIDQsIDhdLm1lbWJlcj8gQHNjYWxlCisgICAgQG9m
ZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwgQGlu
ZGV4LCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEJhc2VJbmRl
eC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBpbmRleCksIEBzY2FsZSwg
KHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1
bXB9WyN7YmFzZS5kdW1wfSwgI3tpbmRleC5kdW1wfSwgI3tzY2FsZX1dIgorICBlbmQKK2VuZAor
CitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDphZGRy
ZXNzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBhZGRyZXNzKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQGFkZHJlc3MgPSBhZGRyZXNzCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiI3thZGRyZXNzLmR1bXB9W10iCisgIGVuZAorZW5kCisKK2NsYXNzIEluc3RydWN0
aW9uIDwgTm9kZQorICBhdHRyX3JlYWRlciA6b3Bjb2RlLCA6b3BlcmFuZHMKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIG9wY29kZSwgb3BlcmFuZHMpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAb3Bjb2RlID0gb3Bjb2RlCisgICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAg
ZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbigmcHJvYykKKyAgICBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgQG9wY29k
ZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHQi
ICsgb3Bjb2RlLnRvX3MgKyAiICIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4o
IiwgIikKKyAgZW5kCitlbmQKKworY2xhc3MgRXJyb3IgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICJcdGVycm9yIgorICBlbmQKK2VuZAorCitjbGFzcyBDb25zdERlY2wgPCBO
b2RlCisgIGF0dHJfcmVhZGVyIDp2YXJpYWJsZSwgOnZhbHVlCisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAdmFyaWFibGUgPSB2YXJpYWJsZQorICAgIEB2YWx1ZSA9IHZhbHVlCisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgW0B2YXJpYWJsZSwgQHZhbHVlXQorICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbgorICAgIENvbnN0RGVjbC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEB2YXJpYWJs
ZSksICh5aWVsZCBAdmFsdWUpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImNvbnN0ICN7
QHZhcmlhYmxlLmR1bXB9ID0gI3tAdmFsdWUuZHVtcH0iCisgIGVuZAorZW5kCisKKyRsYWJlbE1h
cHBpbmcgPSB7fQorCitjbGFzcyBMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5h
bWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgc2VsZi5mb3JOYW1l
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgaWYgJGxhYmVsTWFwcGluZ1tuYW1lXQorICAgICAgcmFp
c2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9IiB1bmxlc3MgJGxhYmVsTWFwcGluZ1tu
YW1lXS5pc19hPyBMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBM
YWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5nW25h
bWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5kCisK
K2NsYXNzIExvY2FsTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorCisgIEBAdW5pcXVlTmFtZUNvdW50ZXIgPSAwCisg
IAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgaWYgJGxhYmVsTWFw
cGluZ1tuYW1lXQorICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9IiB1
bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMb2NhbExhYmVsCisgICAgZWxzZQorICAg
ICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExvY2FsTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBzZWxm
LnVuaXF1ZShjb21tZW50KQorICAgIG5ld05hbWUgPSAiXyN7Y29tbWVudH0iCisgICAgaWYgJGxh
YmVsTWFwcGluZ1tuZXdOYW1lXQorICAgICAgd2hpbGUgJGxhYmVsTWFwcGluZ1tuZXdOYW1lID0g
Il8je0BAdW5pcXVlTmFtZUNvdW50ZXJ9XyN7Y29tbWVudH0iXQorICAgICAgICBAQHVuaXF1ZU5h
bWVDb3VudGVyICs9IDEKKyAgICAgIGVuZAorICAgIGVuZAorICAgIGZvck5hbWUobmlsLCBuZXdO
YW1lKQorICBlbmQKKyAgCisgIGRlZiBjbGVhbk5hbWUKKyAgICBpZiBuYW1lID1+IC9eXC4vCisg
ICAgICAiXyIgKyBuYW1lWzEuLi0xXQorICAgIGVsc2UKKyAgICAgIG5hbWUKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xhc3Mg
TGFiZWxSZWZlcmVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
bGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxdCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVP
cmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwu
bmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQorICBlbmQKK2VuZAor
CitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExvY2Fs
TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAg
CisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
bGFiZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZSA8IE5vZGUKKyAgYXR0cl9y
ZWFkZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxpc3QpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGlzdCA9IGxpc3QKKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBsaXN0CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAg
IFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBAbGlzdC5tYXAoJnByb2MpKQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIlxuIikKKyAgZW5k
CitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBz
dXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IFRydWUubmV3CisgIAorICBkZWYg
c2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAg
ICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAidHJ1ZSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgRmFsc2UgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIobmls
KQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBGYWxzZS5uZXcKKyAgCisgIGRlZiBzZWxmLmlu
c3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIGZhbHNl
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiZmFsc2UiCisgIGVuZAorZW5kCisKK2NsYXNz
IFRydWVDbGFzcworICBkZWYgYXNOb2RlCisgICAgVHJ1ZS5pbnN0YW5jZQorICBlbmQKK2VuZAor
CitjbGFzcyBGYWxzZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBGYWxzZS5pbnN0YW5jZQorICBl
bmQKK2VuZAorCitjbGFzcyBTZXR0aW5nIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFt
ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9Cisg
IAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFw
cGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gU2V0dGluZy5uZXcoY29kZU9yaWdp
biwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kIDwgTm9kZQorICBhdHRyX3Jl
YWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0
LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEBy
aWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmln
aHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQW5kLm5ldyhjb2RlT3JpZ2lu
LCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xh
c3MgT3IgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBvciAje3JpZ2h0LmR1bXB9
KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTm90IDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAg
ICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOb3Qu
bmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAgPCBOb0No
aWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdHNraXAiCisgIGVuZAorZW5kCisKK2Ns
YXNzIElmVGhlbkVsc2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpwcmVkaWNhdGUsIDp0aGVuQ2Fz
ZQorICBhdHRyX2FjY2Vzc29yIDplbHNlQ2FzZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBw
cmVkaWNhdGUgPSBwcmVkaWNhdGUKKyAgICBAdGhlbkNhc2UgPSB0aGVuQ2FzZQorICAgIEBlbHNl
Q2FzZSA9IFNraXAubmV3KGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisg
ICAgaWYgQGVsc2VDYXNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNlLCBAZWxzZUNhc2Vd
CisgICAgZWxzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZV0KKyAgICBlbmQKKyAgZW5k
CisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCAo
eWllbGQgQHByZWRpY2F0ZSksICh5aWVsZCBAdGhlbkNhc2UpLCAoeWllbGQgQGVsc2VDYXNlKSkK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJpZiAje3ByZWRpY2F0ZS5kdW1wfVxuIiArIHRo
ZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsgZWxzZUNhc2UuZHVtcCArICJcbmVuZCIKKyAgZW5k
CitlbmQKKworY2xhc3MgTWFjcm8gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6dmFyaWFi
bGVzLCA6Ym9keQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFi
bGVzLCBib2R5KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAg
QHZhcmlhYmxlcyA9IHZhcmlhYmxlcworICAgIEBib2R5ID0gYm9keQorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIEB2YXJpYWJsZXMgKyBbQGJvZHldCisgIGVuZAorICAKKyAgZGVmIG1h
cENoaWxkcmVuCisgICAgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAdmFyaWFibGVzLm1h
cHt8dnwgeWllbGQgdn0sICh5aWVsZCBAYm9keSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFibGVzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigi
LCAiKSArICIpXG4iICsgYm9keS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBN
YWNyb0NhbGwgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6b3BlcmFuZHMKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAgICBy
YWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAgQG9wZXJhbmRzLmVhY2h7fHZ8IHJhaXNlIHVubGVz
cyB2fQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEBvcGVyYW5kcworICBlbmQKKyAg
CisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4s
IEBuYW1lLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICJcdCN7bmFtZX0oIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSAr
ICIpIgorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisjIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJl
ICJ4ODYiCisKK0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIsCisgICAiQVJNdjciCisgIF0KKwor
V09SS0lOR19CQUNLRU5EUyA9CisgIFsKKyAgICJYODYiCisgIF0KKworQkFDS0VORF9QQVRURVJO
ID0gUmVnZXhwLm5ldygnXFxBKCcgKyBCQUNLRU5EUy5qb2luKCcpfCgnKSArICcpXFxaJykKKwor
Y2xhc3MgTm9kZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBzZW5kKCJsb3dlciIgKyBuYW1lKQor
ICBlbmQKK2VuZAorCisjIE92ZXJyaWRlcyBmb3IgbG93ZXIoKSBmb3IgdGhvc2Ugbm9kZXMgdGhh
dCBhcmUgYmFja2VuZC1hZ25vc3RpYworCitkZWYgc2FuaXRpemVMYWJlbE5hbWUobmFtZSkKKyAg
IyBTb21lIHBsYXRmb3JtcyBkb24ndCB3YW50IHRoZSBsZWFkaW5nICJfIi4gSWYgd2UgZXZlciB3
YW50IHRvIGRvIHNvbWV0aGluZworICAjIGFib3V0IHRoYXQsIGl0IHdvdWxkIGJlIGhlcmUuCisg
IG5hbWUKK2VuZAorCitjbGFzcyBMYWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1
dHMgIi5nbG9ibCAje3Nhbml0aXplTGFiZWxOYW1lKHNlbGYubmFtZSl9IgorICAgICRhc20ucHV0
cyAiI3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxmLm5hbWUpfToiCisgIGVuZAorZW5kCisKK2NsYXNz
IExvY2FsTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzICJMX29mZmxpbmVh
c21fI3tzZWxmLm5hbWVbMS4uLTFdfToiCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAKKyAgZGVm
IGxvd2VyKG5hbWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBsb3dlcihu
YW1lKQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUubG93ZXIo
bmFtZSkKKyAgICB9CisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5y
YgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVy
YXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODcgQEAKKyMh
L3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNrZW5kcyIKK3Jl
cXVpcmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNlciIK
K3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitpbnB1dEZsbm0gPSBB
UkdWLnNoaWZ0CitvdXRwdXRGbG5tID0gQVJHVi5zaGlmdAorCitkZWYgZW1pdE1hZ2ljTnVtYmVy
CisgIE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVhY2ggeworICAgIHwgbnVtYmVyIHwKKyAgICAkb3V0
cHV0LnB1dHMgIiN7bnVtYmVyfSwiCisgIH0KK2VuZAorCitpbnB1dERhdGEgPSBJTzo6cmVhZChp
bnB1dEZsbm0pCitpbnB1dEhhc2ggPSBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0YSkK
KworaWYgRmlsZVRlc3QuZXhpc3Q/IG91dHB1dEZsbm0KKyAgRmlsZS5vcGVuKG91dHB1dEZsbm0s
ICJyIikgeworICAgIHwgaW5wIHwKKyAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAgIGlmIGZp
cnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09ICIvLyBvZmZsaW5lYXNtIGlucHV0IGhhc2g6
ICN7aW5wdXRIYXNofSIKKyAgICAgICRzdGRlcnIucHV0cyAiTm90aGluZyBjaGFuZ2VkLiIKKyAg
ICAgIGV4aXQgMAorICAgIGVuZAorICB9CitlbmQKKworb3JpZ2luYWxBU1QgPSBwYXJzZShsZXgo
aW5wdXREYXRhKSkKKworRmlsZS5vcGVuKG91dHB1dEZsbm0sICJ3IikgeworICB8IG91dHAgfAor
ICAkb3V0cHV0ID0gb3V0cAorICBvdXRwLnB1dHMgIi8vIG9mZmxpbmVhc20gaW5wdXQgaGFzaDog
I3tpbnB1dEhhc2h9IgorICBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMob3JpZ2luYWxBU1Qp
IHsKKyAgICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICBvZmZzZXRzTGlz
dCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKKyAgICBzaXplc0xpc3QgPSBh
c3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CisgICAgCisgICAgbGVuZ3RoID0gKE9GRlNFVF9N
QUdJQ19OVU1CRVJTLnNpemUgKyAxKSAqICgxICsgb2Zmc2V0c0xpc3Quc2l6ZSArIHNpemVzTGlz
dC5zaXplKQorICAgIAorICAgIG91dHAucHV0cyAic3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4dHJh
Y3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICAgIGVtaXRNYWdpY051bWJlcgorICAgIG91dHAu
cHV0cyAiI3tpbmRleH0sIgorICAgIG9mZnNldHNMaXN0LmVhY2ggeworICAgICAgfCBvZmZzZXQg
fAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICBvdXRwLnB1dHMgIk9GRkxJTkVfQVNNX09G
RlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSksIgorICAgIH0KKyAgICBz
aXplc0xpc3QuZWFjaCB7CisgICAgICB8IG9mZnNldCB8CisgICAgICBlbWl0TWFnaWNOdW1iZXIK
KyAgICAgIG91dHAucHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0cnVjdH0pLCIKKyAgICB9CisgICAg
b3V0cC5wdXRzICJ9OyIKKyAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxODggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01BQ1JP
X0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJhZGRpIiwKKyAgICJhbmRpIiwKKyAgICJsc2hpZnRp
IiwKKyAgICJtdWxpIiwKKyAgICJuZWdpIiwKKyAgICJub3RpIiwKKyAgICJvcmkiLAorICAgInJz
aGlmdGkiLAorICAgInVyc2hpZnRpIiwKKyAgICJzdWJpIiwKKyAgICJ4b3JpIiwKKyAgICJsb2Fk
aSIsCisgICAibG9hZGIiLAorICAgImxvYWRoIiwKKyAgICJzdG9yZWkiLAorICAgInN0b3JlYiIs
CisgICAibG9hZGQiLAorICAgIm1vdmVkIiwKKyAgICJzdG9yZWQiLAorICAgImFkZGQiLAorICAg
ImRpdmQiLAorICAgInN1YmQiLAorICAgIm11bGQiLAorICAgInNxcnRkIiwKKyAgICJjaTJkIiwK
KyAgICJmaWkyZCIsICMgdXNhZ2U6IGZpaTJkIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBi
aXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxmcHI+CisgICAiZmQyaWki
LCAjIHVzYWdlOiBmZDJpaSA8ZnByPiwgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+
LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPgorICAgImJkZXEiLAorICAgImJkbmVx
IiwKKyAgICJiZGd0IiwKKyAgICJiZGd0ZXEiLAorICAgImJkbHQiLAorICAgImJkbHRlcSIsCisg
ICAiYmRlcXVuIiwKKyAgICJiZG5lcXVuIiwKKyAgICJiZGd0dW4iLAorICAgImJkZ3RlcXVuIiwK
KyAgICJiZGx0dW4iLAorICAgImJkbHRlcXVuIiwKKyAgICJidGQyaSIsCisgICAidGQyaSIsCisg
ICAiYmNkMmkiLAorICAgIm1vdmR6IiwKKyAgICJwb3AiLAorICAgInB1c2giLAorICAgIm1vdmUi
LAorICAgInN4aTJwIiwKKyAgICJ6eGkycCIsCisgICAibm9wIiwKKyAgICJiaWVxIiwKKyAgICJi
aW5lcSIsCisgICAiYmlhIiwKKyAgICJiaWFlcSIsCisgICAiYmliIiwKKyAgICJiaWJlcSIsCisg
ICAiYmlndCIsCisgICAiYmlndGVxIiwKKyAgICJiaWx0IiwKKyAgICJiaWx0ZXEiLAorICAgImJi
ZXEiLAorICAgImJibmVxIiwKKyAgICJiYmEiLAorICAgImJiYWVxIiwKKyAgICJiYmIiLAorICAg
ImJiYmVxIiwKKyAgICJiYmd0IiwKKyAgICJiYmd0ZXEiLAorICAgImJibHQiLAorICAgImJibHRl
cSIsCisgICAiYnRpbyIsCisgICAiYnRpcyIsCisgICAiYnRpeiIsCisgICAiYnRpbnoiLAorICAg
ImJ0Ym8iLAorICAgImJ0YnMiLAorICAgImJ0YnoiLAorICAgImJ0Ym56IiwKKyAgICJqbXAiLAor
ICAgImJhZGRpbyIsCisgICAiYmFkZGlzIiwKKyAgICJiYWRkaXoiLAorICAgImJhZGRpbnoiLAor
ICAgImJzdWJpbyIsCisgICAiYnN1YmlzIiwKKyAgICJic3ViaXoiLAorICAgImJzdWJpbnoiLAor
ICAgImJtdWxpbyIsCisgICAiYm11bGlzIiwKKyAgICJibXVsaXoiLAorICAgImJtdWxpbnoiLAor
ICAgImJvcmlvIiwKKyAgICJib3JpcyIsCisgICAiYm9yaXoiLAorICAgImJvcmlueiIsCisgICAi
YnJlYWsiLAorICAgImNhbGwiLAorICAgInJldCIsCisgICAiY2llcSIsCisgICAiY2luZXEiLAor
ICAgImNpYSIsCisgICAiY2lhZXEiLAorICAgImNpYiIsCisgICAiY2liZXEiLAorICAgImNpZ3Qi
LAorICAgImNpZ3RlcSIsCisgICAiY2lsdCIsCisgICAiY2lsdGVxIiwKKyAgICJ0aW8iLAorICAg
InRpcyIsCisgICAidGl6IiwKKyAgICJ0aW56IiwKKyAgICJ0Ym8iLAorICAgInRicyIsCisgICAi
dGJ6IiwKKyAgICJ0Ym56IiwKKyAgICJwZWVrIiwKKyAgICJwb2tlIiwKKyAgICJicGVxIiwKKyAg
ICJicG5lcSIsCisgICAiYnBhIiwKKyAgICJicGFlcSIsCisgICAiYnBiIiwKKyAgICJicGJlcSIs
CisgICAiYnBndCIsCisgICAiYnBndGVxIiwKKyAgICJicGx0IiwKKyAgICJicGx0ZXEiLAorICAg
ImFkZHAiLAorICAgImFuZHAiLAorICAgIm9ycCIsCisgICAic3VicCIsCisgICAieG9ycCIsCisg
ICAibG9hZHAiLAorICAgImNwZXEiLAorICAgImNwbmVxIiwKKyAgICJjcGEiLAorICAgImNwYWVx
IiwKKyAgICJjcGIiLAorICAgImNwYmVxIiwKKyAgICJjcGd0IiwKKyAgICJjcGd0ZXEiLAorICAg
ImNwbHQiLAorICAgImNwbHRlcSIsCisgICAic3RvcmVwIiwKKyAgICJidHBvIiwKKyAgICJidHBz
IiwKKyAgICJidHB6IiwKKyAgICJidHBueiIsCisgICAiYmFkZHBvIiwKKyAgICJiYWRkcHMiLAor
ICAgImJhZGRweiIsCisgICAiYmFkZHBueiIKKyAgXQorCitYODZfSU5TVFJVQ1RJT05TID0KKyAg
WworICAgImNkcWkiLAorICAgImlkaXZpIgorICBdCisKK0lOU1RSVUNUSU9OUyA9IE1BQ1JPX0lO
U1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMKKworSU5TVFJVQ1RJT05fUEFUVEVSTiA9IFJl
Z2V4cC5uZXcoJ1xcQSgoJyArIElOU1RSVUNUSU9OUy5qb2luKCcpfCgnKSArICcpKVxcWicpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2Nv
bnN0YW50cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitNQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKwor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJi
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJhY3Rvcl9j
b25zdGFudHMiCisKK09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVl
NzU1IF0KKworIworIyBvZmZzZXRzTGlzdChhc3QpCisjIHNpemVzTGlzdChhc3QpCisjCisjIFJl
dHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhlIEFTVC4KKyMKKwor
ZGVmIG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29y
dAorZW5kCisKK2RlZiBzaXplc0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5z
b3J0CitlbmQKKworIworIyBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGFzdCwgZmlsZSkg
LT4KKyMgICAgIFtvZmZzZXRzLCBpbmRleF0KKyMKKyMgUGFyc2VzIHRoZSBvZmZzZXRzIGZyb20g
YSBmaWxlIGFuZCByZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCB0aGUKKyMgaW5kZXggb2Yg
dGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB2YWxpZCBpbiB0aGlzIGJ1aWxkIHRhcmdldC4KKyMK
KworZGVmIG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgoZmlsZSkKKyAgaW5kZXggPSBuaWwK
KyAgb2Zmc2V0cyA9IFtdCisgIGVuZGlhbm5lc3NNYXJrZXJCeXRlcyA9IG5pbAorICAKKyAgZGVm
IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgIGJ5dGVzID0gW10KKyAgICA0LnRpbWVzIHsK
KyAgICAgIGJ5dGVzIDw8IGlucC5nZXRieXRlCisgICAgfQorICAgIAorICAgIGlmIGVuZGlhbm5l
c3MgPT0gOmxpdHRsZQorICAgICAgIyBMaXR0bGUgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwg
MCB8CisgICAgICAgYnl0ZXNbMV0gPDwgOCB8CisgICAgICAgYnl0ZXNbMl0gPDwgMTYgfAorICAg
ICAgIGJ5dGVzWzNdIDw8IDI0KQorICAgIGVsc2UKKyAgICAgICMgQmlnIGVuZGlhbgorICAgICAg
KGJ5dGVzWzBdIDw8IDI0IHwKKyAgICAgICBieXRlc1sxXSA8PCAxNiB8CisgICAgICAgYnl0ZXNb
Ml0gPDwgOCB8CisgICAgICAgYnl0ZXNbM10gPDwgMCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBb
OmxpdHRsZSwgOmJpZ10uZWFjaCB7CisgICAgfCBlbmRpYW5uZXNzIHwKKyAgICBtYWdpY0J5dGVz
ID0gW10KKyAgICBNQUdJQ19OVU1CRVJTLmVhY2ggeworICAgICAgfCBudW1iZXIgfAorICAgICAg
Y3VycmVudEJ5dGVzID0gW10KKyAgICAgIDQudGltZXMgeworICAgICAgICBjdXJyZW50Qnl0ZXMg
PDwgKG51bWJlciAmIDB4ZmYpCisgICAgICAgIG51bWJlciA+Pj0gOAorICAgICAgfQorICAgICAg
aWYgZW5kaWFubmVzcyA9PSA6YmlnCisgICAgICAgIGN1cnJlbnRCeXRlcy5yZXZlcnNlIQorICAg
ICAgZW5kCisgICAgICBtYWdpY0J5dGVzICs9IGN1cnJlbnRCeXRlcworICAgIH0KKyAgICAKKyAg
ICBGaWxlLm9wZW4oZmlsZSwgInIiKSB7CisgICAgICB8IGlucCB8CisgICAgICB3aGVyZUluTWFy
a2VyID0gMAorICAgICAgbG9vcCB7CisgICAgICAgIGJ5dGUgPSBpbnAuZ2V0Ynl0ZQorICAgICAg
ICBicmVhayB1bmxlc3MgYnl0ZQorICAgICAgICBpZiBieXRlID09IG1hZ2ljQnl0ZXNbd2hlcmVJ
bk1hcmtlcl0KKyAgICAgICAgICB3aGVyZUluTWFya2VyICs9IDEKKyAgICAgICAgICBpZiB3aGVy
ZUluTWFya2VyID09IG1hZ2ljQnl0ZXMuc2l6ZQorICAgICAgICAgICAgIyBXZSBoYXZlIGEgbWF0
Y2ghIElmIHdlIGhhdmUgbm90IHlldCByZWFkIHRoZSBlbmRpYW5uZXNzIG1hcmtlciBhbmQgaW5k
ZXgsCisgICAgICAgICAgICAjIHRoZW4gcmVhZCB0aG9zZSBub3c7IG90aGVyd2lzZSByZWFkIGFu
IG9mZnNldC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgbm90IGluZGV4CisgICAgICAg
ICAgICAgIGluZGV4ID0gcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgIG9mZnNldHMgPDwgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAg
ICAgICAgICBlbmQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAK
KyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAw
CisgICAgICAgIGVuZAorICAgICAgfQorICAgIH0KKyAgICAKKyAgICBicmVhayBpZiBpbmRleAor
ICB9CisgIAorICByYWlzZSB1bmxlc3MgaW5kZXgKKyAgCisgIFtvZmZzZXRzLCBpbmRleF0KK2Vu
ZAorCisjCisjIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAtPiBbb2Zmc2V0cywg
c2l6ZXNdCisjCisjIEJ1aWxkcyBhIG1hcHBpbmcgYmV0d2VlbiBTdHJ1Y3RPZmZzZXQgbm9kZXMg
YW5kIHRoZWlyIHZhbHVlcy4KKyMKKworZGVmIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNM
aXN0KQorICBvZmZzZXRzTWFwID0ge30KKyAgc2l6ZXNNYXAgPSB7fQorICBhc3RPZmZzZXRzTGlz
dCA9IG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0U2l6ZXNMaXN0ID0gc2l6ZXNMaXN0KGFzdCkKKyAg
cmFpc2UgdW5sZXNzIGFzdE9mZnNldHNMaXN0LnNpemUgKyBhc3RTaXplc0xpc3Quc2l6ZSA9PSBv
ZmZzZXRzTGlzdC5zaXplCisgIG9mZnNldHNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAg
ICB8IHN0cnVjdE9mZnNldCwgaW5kZXggfAorICAgIG9mZnNldHNNYXBbc3RydWN0T2Zmc2V0XSA9
IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgc2l6ZXNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4
IHsKKyAgICB8IHNpemVvZiwgaW5kZXggfAorICAgIHNpemVzTWFwW3NpemVvZl0gPSBvZmZzZXRz
TGlzdC5zaGlmdAorICB9CisgIFtvZmZzZXRzTWFwLCBzaXplc01hcF0KK2VuZAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDU4NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiaW5zdHJ1Y3Rpb25zIgorcmVxdWlyZSAicmVnaXN0
ZXJzIgorCitjbGFzcyBUb2tlbgorICBhdHRyX3JlYWRlciA6Y29kZU9yaWdpbiwgOnN0cmluZwor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RyaW5nKQorICAgIEBjb2RlT3JpZ2lu
ID0gY29kZU9yaWdpbgorICAgIEBzdHJpbmcgPSBzdHJpbmcKKyAgZW5kCisgIAorICBkZWYgPT0o
b3RoZXIpCisgICAgaWYgb3RoZXIuaXNfYT8gVG9rZW4KKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIu
c3RyaW5nCisgICAgZWxzZQorICAgICAgQHN0cmluZyA9PSBvdGhlcgorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiA9fihvdGhlcikKKyAgICBAc3RyaW5nID1+IG90aGVyCisgIGVuZAorICAKKyAg
ZGVmIHRvX3MKKyAgICAiI3tAc3RyaW5nLmluc3BlY3R9IGF0IGxpbmUgI3tjb2RlT3JpZ2lufSIK
KyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBpZiBjb21tZW50LmVt
cHR5PworICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9IgorICAgIGVsc2UKKyAgICAg
IHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfTogI3tjb21tZW50WzBdfSIKKyAgICBlbmQKKyAg
ZW5kCitlbmQKKworIworIyBUaGUgbGV4ZXIuIFRha2VzIGEgc3RyaW5nIGFuZCByZXR1cm5zIGFu
IGFycmF5IG9mIHRva2Vucy4KKyMKKworZGVmIGxleChzdHIpCisgIHJlc3VsdCA9IFtdCisgIGxp
bmVOdW1iZXIgPSAxCisgIHdoaWxlIG5vdCBzdHIuZW1wdHk/CisgICAgY2FzZSBzdHIKKyAgICB3
aGVuIC9cQVwjKFteXG5dKikvCisgICAgICAjIGNvbW1lbnQsIGlnbm9yZQorICAgIHdoZW4gL1xB
XG4vCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAgbGlu
ZU51bWJlciArPSAxCisgICAgd2hlbiAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKS8KKyAgICAg
IHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFcLihbYS16
QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisg
ICAgd2hlbiAvXEFfKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhs
aW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQShbIFx0XSspLworICAgICAgIyB3aGl0ZXNwYWNl
LCBpZ25vcmUKKyAgICB3aGVuIC9cQTB4KFswLTlhLWZBLUZdKykvCisgICAgICByZXN1bHQgPDwg
VG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLmhleC50b19zKQorICAgIHdoZW4gL1xBMChbMC03XSsp
LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5vY3QudG9fcykKKyAg
ICB3aGVuIC9cQShbMC05XSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVy
LCAkJikKKyAgICB3aGVuIC9cQTo6LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVt
YmVyLCAkJikKKyAgICB3aGVuIC9cQVs6LFwoXClcW1xdPVwrXC0qXS8KKyAgICAgIHJlc3VsdCA8
PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgZWxzZQorICAgICAgcmFpc2UgIkxleGVy
IGVycm9yIGF0IGxpbmUgbnVtYmVyICN7bGluZU51bWJlcn0sIHVuZXhwZWN0ZWQgc2VxdWVuY2Ug
I3tzdHJbMC4uMjBdLmluc3BlY3R9IgorICAgIGVuZAorICAgIHN0ciA9ICR+LnBvc3RfbWF0Y2gK
KyAgZW5kCisgIHJlc3VsdAorZW5kCisKKyMKKyMgVG9rZW4gaWRlbnRpZmljYXRpb24uCisjCisK
K2RlZiBpc1JlZ2lzdGVyKHRva2VuKQorICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOCitlbmQK
KworZGVmIGlzSW5zdHJ1Y3Rpb24odG9rZW4pCisgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRF
Uk4KK2VuZAorCitkZWYgaXNLZXl3b3JkKHRva2VuKQorICB0b2tlbiA9fiAvXEEoKHRydWUpfChm
YWxzZSl8KGlmKXwodGhlbil8KGVsc2UpfChlbHNpZil8KGVuZCl8KGFuZCl8KG9yKXwobm90KXwo
bWFjcm8pfChjb25zdCl8KHNpemVvZil8KGVycm9yKSlcWi8gb3IKKyAgICB0b2tlbiA9fiBSRUdJ
U1RFUl9QQVRURVJOIG9yCisgICAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisK
K2RlZiBpc0lkZW50aWZpZXIodG9rZW4pCisgIHRva2VuID1+IC9cQVthLXpBLVpdKFthLXpBLVow
LTlfXSopXFovIGFuZCBub3QgaXNLZXl3b3JkKHRva2VuKQorZW5kCisKK2RlZiBpc0xhYmVsKHRv
a2VuKQorICB0b2tlbiA9fiAvXEFfKFthLXpBLVowLTlfXSopXFovCitlbmQKKworZGVmIGlzTG9j
YWxMYWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXC4oW2EtekEtWjAtOV9dKilcWi8KK2VuZAor
CitkZWYgaXNWYXJpYWJsZSh0b2tlbikKKyAgaXNJZGVudGlmaWVyKHRva2VuKSBvciBpc1JlZ2lz
dGVyKHRva2VuKQorZW5kCisKK2RlZiBpc0ludGVnZXIodG9rZW4pCisgIHRva2VuID1+IC9cQVsw
LTldLworZW5kCisKKyMKKyMgVGhlIHBhcnNlci4gVGFrZXMgYW4gYXJyYXkgb2YgdG9rZW5zIGFu
ZCByZXR1cm5zIGFuIEFTVC4gTWV0aG9kcworIyBvdGhlciB0aGFuIHBhcnNlKHRva2VucykgYXJl
IG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9uLgorIworCitjbGFzcyBQYXJzZXIKKyAgZGVmIGlu
aXRpYWxpemUodG9rZW5zKQorICAgIEB0b2tlbnMgPSB0b2tlbnMKKyAgICBAaWR4ID0gMAorICBl
bmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIEB0b2tlbnNbQGlkeF0K
KyAgICAgIEB0b2tlbnNbQGlkeF0ucGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBlbHNlCisgICAg
ICBpZiBjb21tZW50LmVtcHR5PworICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9m
IGZpbGUiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2Yg
ZmlsZTogI3tjb21tZW50WzBdfSIKKyAgICAgIGVuZAorICAgIGVuZAorICBlbmQKKyAgCisgIGRl
ZiBjb25zdW1lKHJlZ2V4cCkKKyAgICBpZiByZWdleHAKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNz
IEB0b2tlbnNbQGlkeF0gPX4gcmVnZXhwCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1bmxl
c3MgQGlkeCA9PSBAdG9rZW5zLmxlbmd0aAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICBlbmQK
KyAgCisgIGRlZiBza2lwTmV3TGluZQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgor
ICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRl
QXRvbQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm5vdCIKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAg
ICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJlc3VsdCA9IHBhcnNlUHJl
ZGljYXRlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgorICAg
ICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJ0
cnVlIgorICAgICAgcmVzdWx0ID0gVHJ1ZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAg
ICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJmYWxzZSIKKyAgICAgIHJlc3Vs
dCA9IEZhbHNlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVs
c2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBTZXR0aW5nLmZv
ck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAg
ICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgor
ICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZUFuZAorICAgIHJlc3VsdCA9
IHBhcnNlUHJlZGljYXRlQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImFuZCIKKyAg
ICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0g
MQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisg
ICAgICByZXN1bHQgPSBBbmQubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5k
CisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlCisgICAgIyBzb21l
IGV4YW1wbGVzIG9mIHByZWNlZGVuY2U6CisgICAgIyBub3QgYSBhbmQgYiAtPiAobm90IGEpIGFu
ZCBiCisgICAgIyBhIGFuZCBiIG9yIGMgLT4gKGEgYW5kIGIpIG9yIGMKKyAgICAjIGEgb3IgYiBh
bmQgYyAtPiBhIG9yIChiIGFuZCBjKQorICAgIAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRl
QW5kCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAib3IiCisgICAgICBjb2RlT3JpZ2luID0g
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdM
aW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgICByZXN1bHQgPSBPci5u
ZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5k
CisgIAorICBkZWYgcGFyc2VWYXJpYWJsZQorICAgIGlmIGlzUmVnaXN0ZXIoQHRva2Vuc1tAaWR4
XSkKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPX4gRlBSX1BBVFRFUk4KKyAgICAgICAgcmVzdWx0
ID0gRlBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5z
W0BpZHhdLnN0cmluZykKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUmVnaXN0ZXJJRC5m
b3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisg
ICAgICBlbmQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgIHJl
c3VsdCA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5z
W0BpZHhdLnN0cmluZykKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgICAg
QGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQWRkcmVzcyhvZmZz
ZXQpCisgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICBjb2Rl
T3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgCisgICAgIyBUaHJlZSBwb3Nz
aWJpbGl0aWVzOgorICAgICMgW10gICAgICAgLT4gQWJzb2x1dGVBZGRyZXNzCisgICAgIyBbYV0g
ICAgICAtPiBBZGRyZXNzCisgICAgIyBbYSxiXSAgICAtPiBCYXNlSW5kZXggd2l0aCBzY2FsZSA9
IDEKKyAgICAjIFthLGIsY10gIC0+IEJhc2VJbmRleAorICAgIAorICAgIEBpZHggKz0gMQorICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJldHVybiBB
YnNvbHV0ZUFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIG9mZnNldCkKKyAgICBlbmQKKyAgICBhID0g
cGFyc2VWYXJpYWJsZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICByZXN1bHQg
PSBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBhLCBvZmZzZXQpCisgICAgZWxzZQorICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgYiA9IHBhcnNlVmFyaWFibGUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAg
ICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgMSwgb2Zmc2V0KQor
ICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIs
IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgWyIxIiwgIjIi
LCAiNCIsICI4Il0ubWVtYmVyPyBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBjID0gQHRv
a2Vuc1tAaWR4XS5zdHJpbmcudG9faQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUlu
ZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCBjLCBvZmZzZXQpCisgICAgICBlbmQKKyAgICBlbmQK
KyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VDb2xvbkNv
bG9uCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0K
KyAgICBuYW1lcyA9IFtAdG9rZW5zW0BpZHhdLnN0cmluZ10KKyAgICBAaWR4ICs9IDEKKyAgICB3
aGlsZSBAdG9rZW5zW0BpZHhdID09ICI6OiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIG5hbWVzIDw8IEB0
b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgICByYWlzZSBp
ZiBuYW1lcy5lbXB0eT8KKyAgICBbY29kZU9yaWdpbiwgbmFtZXNdCisgIGVuZAorICAKKyAgZGVm
IHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICBza2lwTmV3TGluZQorICAgIGlmIEB0b2tlbnNbQGlk
eF0gPT0gIi0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIE5lZ0ltbWVkaWF0ZS5uZXcoQHRva2Vu
c1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQgPSBwYXJz
ZUV4cHJlc3Npb24KKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiki
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSW50ZWdlciBAdG9r
ZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faSkKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIGNv
ZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBpZiBuYW1lcy5zaXplID4g
MQorICAgICAgICBTdHJ1Y3RPZmZzZXQuZm9yRmllbGQoY29kZU9yaWdpbiwgbmFtZXNbMC4uLTJd
LmpvaW4oJzo6JyksIG5hbWVzWy0xXSkKKyAgICAgIGVsc2UKKyAgICAgICAgVmFyaWFibGUuZm9y
TmFtZShjb2RlT3JpZ2luLCBuYW1lc1swXSkKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzUmVnaXN0
ZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcGFyc2VWYXJpYWJsZQorICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gInNpemVvZiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgY29kZU9yaWdpbiwgbmFt
ZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIFNpemVvZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5h
bWVzLmpvaW4oJzo6JykpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICBza2lwTmV3TGluZQorICAgIHJl
c3VsdCA9IHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIq
IgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIHJlc3VsdCA9IE11bEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmln
aW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFp
c2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBjb3Vs
ZEJlRXhwcmVzc2lvbgorICAgIEB0b2tlbnNbQGlkeF0gPT0gIi0iIG9yIEB0b2tlbnNbQGlkeF0g
PT0gInNpemVvZiIgb3IgaXNJbnRlZ2VyKEB0b2tlbnNbQGlkeF0pIG9yIGlzVmFyaWFibGUoQHRv
a2Vuc1tAaWR4XSkgb3IgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgZW5kCisgIAorICBkZWYgcGFy
c2VFeHByZXNzaW9uCisgICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Np
b25NdWwKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIrIiBvciBAdG9rZW5zW0BpZHhdID09
ICItIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKyIKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIHJlc3VsdCA9IEFkZEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVP
cmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAiLSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IFN1YkltbWVk
aWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHBy
ZXNzaW9uTXVsKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5k
CisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlT3BlcmFuZChjb21tZW50KQorICAg
IGlmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgICBleHByID0gcGFyc2VFeHByZXNzaW9uCisgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAgICBwYXJzZUFkZHJlc3MoZXhwcikKKyAg
ICAgIGVsc2UKKyAgICAgICAgZXhwcgorICAgICAgZW5kCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4
XSA9PSAiWyIKKyAgICAgIHBhcnNlQWRkcmVzcyhJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbiwgMCkpCisgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICBy
ZXN1bHQgPSBMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMYWJl
bC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcp
KQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0xvY2FsTGFiZWwg
QHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMb2NhbExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAgICAg
IHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IoY29tbWVudCkKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgIHNraXBOZXdMaW5lCisgICAg
Y29uc3VtZSgvXEFcKFxaLykKKyAgICB2YXJpYWJsZXMgPSBbXQorICAgIGxvb3AgeworICAgICAg
c2tpcE5ld0xpbmUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlk
eF0pCisgICAgICAgIHZhcmlhYmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICBza2lwTmV3TGluZQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gIiwiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICBw
YXJzZUVycm9yCisgICAgICAgIGVuZAorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yCisg
ICAgICBlbmQKKyAgICB9CisgICAgdmFyaWFibGVzCisgIGVuZAorICAKKyAgZGVmIHBhcnNlU2Vx
dWVuY2UoZmluYWwsIGNvbW1lbnQpCisgICAgZmlyc3RDb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luCisgICAgbGlzdCA9IFtdCisgICAgbG9vcCB7CisgICAgICBpZiAoQGlkeCA9
PSBAdG9rZW5zLmxlbmd0aCBhbmQgbm90IGZpbmFsKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlk
eF0gPX4gZmluYWwpCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJcbiIKKyAgICAgICAgIyBpZ25vcmUKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICJjb25zdCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIGlzVmFyaWFibGUgQHRva2Vuc1tAaWR4XQorICAgICAgICB2YXJpYWJsZSA9
IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhd
LnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0
b2tlbnNbQGlkeF0gPT0gIj0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YWx1ZSA9IHBh
cnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGNvbnN0ICN7dmFyaWFibGUubmFtZX0iKQorICAg
ICAgICBsaXN0IDw8IENvbnN0RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCB2YXJp
YWJsZSwgdmFsdWUpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJlcnJvciIKKyAgICAg
ICAgbGlzdCA8PCBFcnJvci5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luKQorICAgICAgICBA
aWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImlmIgorICAgICAgICBjb2Rl
T3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICBza2lwTmV3TGluZQorICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAg
ICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgIHNraXBOZXdMaW5lCisg
ICAgICAgIGlmVGhlbkVsc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUs
IHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lk
ZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgbGlzdCA8PCBpZlRoZW5F
bHNlCisgICAgICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImVsc2lmIgorICAgICAgICAgIGNv
ZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGlj
YXRlCisgICAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICAgIHNr
aXBOZXdMaW5lCisgICAgICAgICAgZWxzZUNhc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2lu
LCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywg
IndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgICBp
ZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNhc2UKKyAgICAgICAgICBpZlRoZW5FbHNlID0gZWxz
ZUNhc2UKKyAgICAgICAgZW5kCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gImVsc2UiCisg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IHBhcnNl
U2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGVsc2UgY2FzZSBmb3IgXCJpZiAj
e3ByZWRpY2F0ZS5kdW1wfVwiIikKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQor
ICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gImVuZCIKKyAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJtYWNybyIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcGFyc2VFcnJv
ciB1bmxlc3MgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIG5hbWUgPSBAdG9r
ZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFyaWFibGVzID0g
cGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRc
Wi8sICJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gI3tuYW1lfSIpCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBsaXN0IDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMsIGJv
ZHkpCisgICAgICBlbHNpZiBpc0luc3RydWN0aW9uIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29k
ZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vu
c1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIChub3QgZmluYWwg
YW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4g
ZmluYWwpCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24sIGFuZCBpdCdzIHRo
ZSBsYXN0IG9uZS4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2lu
LCBuYW1lLCBbXSkKKyAgICAgICAgICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICJcbiIKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbi4KKyAgICAgICAg
ICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgICMgSXQncyBkZWZpbml0ZWx5IGFu
IGluc3RydWN0aW9uLCBhbmQgaXQgaGFzIGF0IGxlYXN0IG9uZSBvcGVyYW5kLgorICAgICAgICAg
IG9wZXJhbmRzID0gW10KKyAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gZmFsc2UKKyAgICAgICAg
ICBsb29wIHsKKyAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5z
aWRlIG9mIGluc3RydWN0aW9uICN7bmFtZX0iKQorICAgICAgICAgICAgaWYgKG5vdCBmaW5hbCBh
bmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBm
aW5hbCkKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbiBhbmQgb2Yg
dGhlIHNlcXVlbmNlLgorICAgICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gdHJ1ZQorICAgICAg
ICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAg
ICAgICAgICAgICAgIyBIYXMgYW5vdGhlciBvcGVyYW5kLgorICAgICAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICAg
ICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uLgorICAgICAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgcGFy
c2VFcnJvcigiRXhwZWN0ZWQgYSBjb21tYSwgbmV3bGluZSwgb3IgI3tmaW5hbH0gYWZ0ZXIgI3tv
cGVyYW5kcy5sYXN0LmR1bXB9IikKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgIH0KKyAgICAg
ICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykK
KyAgICAgICAgICBpZiBlbmRPZlNlcXVlbmNlCisgICAgICAgICAgICBicmVhaworICAgICAgICAg
IGVuZAorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhd
CisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAg
bmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBp
ZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgICAgICMgTWFjcm8gaW52b2NhdGlvbi4KKyAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAgc2tp
cE5ld0xpbmUKKyAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAg
QGlkeCArPSAxCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9vcCB7CisgICAgICAgICAg
ICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3Jv
IgorICAgICAgICAgICAgICAgICMgSXQncyBhIG1hY3JvIGxhbWJkYSEKKyAgICAgICAgICAgICAg
ICBjb2RlT3JpZ2luSW5uZXIgPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3JvVmFy
aWFibGVzCisgICAgICAgICAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAi
d2hpbGUgaW5zaWRlIG9mIGFub255bW91cyBtYWNybyBwYXNzZWQgYXMgYXJndW1lbnQgdG8gI3tu
YW1lfSIpCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgb3BlcmFu
ZHMgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJpYWJsZXMsIGJvZHkpCisg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJh
bmQoIndoaWxlIGluc2lkZSBvZiBtYWNybyBjYWxsIHRvICN7bmFtZX0iKQorICAgICAgICAgICAg
ICBlbmQKKyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vu
c1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAg
ICBicmVhaworICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAg
ICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cGFyc2VFcnJvciAiVW5leHBlY3RlZCAje0B0b2tlbnNbQGlkeF0uc3RyaW5nLmluc3BlY3R9IHdo
aWxlIHBhcnNpbmcgaW52b2NhdGlvbiBvZiBtYWNybyAje25hbWV9IgorICAgICAgICAgICAgICBl
bmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbmQKKyAgICAgICAgICBsaXN0IDw8IE1hY3Jv
Q2FsbC5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9IgorICAgICAgICBl
bmQKKyAgICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XSBvciBpc0xvY2FsTGFiZWwgQHRv
a2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
CisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiOiIKKyAgICAgICAg
IyBJdCdzIGEgbGFiZWwuCisgICAgICAgIGlmIGlzTGFiZWwgbmFtZQorICAgICAgICAgIGxpc3Qg
PDwgTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbHNlCisgICAgICAg
ICAgbGlzdCA8PCBMb2NhbExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAg
ZW5kCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yICJF
eHBlY3RpbmcgdGVybWluYWwgI3tmaW5hbH0gI3tjb21tZW50fSIKKyAgICAgIGVuZAorICAgIH0K
KyAgICBTZXF1ZW5jZS5uZXcoZmlyc3RDb2RlT3JpZ2luLCBsaXN0KQorICBlbmQKK2VuZAorCitk
ZWYgcGFyc2UodG9rZW5zKQorICBwYXJzZXIgPSBQYXJzZXIubmV3KHRva2VucykKKyAgcGFyc2Vy
LnBhcnNlU2VxdWVuY2UobmlsLCAiIikKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDU5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitHUFJTID0K
KyAgWworICAgInQwIiwKKyAgICJ0MSIsCisgICAidDIiLAorICAgInQzIiwKKyAgICJ0NCIsCisg
ICAiY2ZyIiwKKyAgICJhMCIsCisgICAiYTEiLAorICAgInIwIiwKKyAgICJyMSIsCisgICAic3Ai
CisgIF0KKworRlBSUyA9CisgIFsKKyAgICJmdDAiLAorICAgImZ0MSIsCisgICAiZnQyIiwKKyAg
ICJmdDMiLAorICAgImZ0NCIsCisgICAiZnQ1IiwKKyAgICJmYTAiLAorICAgImZhMSIsCisgICAi
ZmEyIiwKKyAgICJmYTMiLAorICAgImZyIgorICBdCisKK1JFR0lTVEVSUyA9IEdQUlMgKyBGUFJT
CisKK0dQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgR1BSUy5qb2luKCcpfCgnKSAr
ICcpKVxcWicpCitGUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMuam9pbign
KXwoJykgKyAnKSlcXFonKQorCitSRUdJU1RFUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgn
ICsgUkVHSVNURVJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjA1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1
aXJlICJhc3QiCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUg
InRyYW5zZm9ybSIKKworIworIyBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSAtPiBz
ZXR0aW5nc0NvbWJpYXRpb25zCisjCisjIENvbXB1dGVzIGFuIGFycmF5IG9mIHNldHRpbmdzIG1h
cHMsIHdoZXJlIGEgc2V0dGluZ3MgbWFwIGNvbnN0aXR1dGVzCisjIGEgY29uZmlndXJhdGlvbiBm
b3IgdGhlIGFzc2VtYmx5IGNvZGUgYmVpbmcgZ2VuZXJhdGVkLiBUaGUgbWFwCisjIGNvbnRhaW5z
IGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBzZXR0aW5ncyBuYW1lcyAoc3RyaW5ncykg
YW5kCisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xlYW5zICh0cnVlIGZvciBlbmFibGVkLCBmYWxzZSBm
b3IgZGlzYWJsZWQpLgorIworCitkZWYgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkK
KyAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBbXQorICAKKyAgZGVmIHNldHRpbmdzQ29tYmluYXRv
cihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbWFwU29GYXIsIHJlbWFpbmluZykKKyAgICBpZiByZW1h
aW5pbmcuZW1wdHk/CisgICAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA8PCBtYXBTb0ZhcgorICAg
ICAgcmV0dXJuCisgICAgZW5kCisgICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAg
bmV3TWFwW3JlbWFpbmluZ1swXV0gPSB0cnVlCisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRp
bmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmluZ1sxLi4tMV0pCisgICAgCisgICAgbmV3
TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSBmYWxzZQorICAg
IHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5p
bmdbMS4uLTFdKQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJp
bmF0aW9ucywge30sIChhc3QuZmlsdGVyKFNldHRpbmcpLnVuaXEuY29sbGVjdHt8dnwgdi5uYW1l
fSArIFsiWDg2IiwgIkFSTXY3Il0pLnVuaXEpCisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucwor
ZW5kCisKKyMKKyMgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7CisjICAgICB8
IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwgLi4uIH0KKyMKKyMgRGV0
ZXJtaW5lcyBpZiB0aGUgc2V0dGluZ3MgY29tYmluYXRpb24gaXMgdmFsaWQsIGFuZCBpZiBzbywg
Y2FsbHMKKyMgdGhlIGJsb2NrIHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSBuZWVkIHRvIGdlbmVy
YXRlIGNvZGUuCisjCisKK2RlZiBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpCisg
ICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0aGlzIGNvbWJpbmF0b3IgY2xhaW1zIHRvIHN1
cHBvcnQuCisgIG51bUNsYWltZWRCYWNrZW5kcyA9IDAKKyAgc2VsZWN0ZWRCYWNrZW5kID0gbmls
CisgIEJBQ0tFTkRTLmVhY2ggeworICAgIHwgYmFja2VuZCB8CisgICAgaXNTdXBwb3J0ZWQgPSBj
b25jcmV0ZVNldHRpbmdzW2JhY2tlbmRdCisgICAgcmFpc2UgdW5sZXNzIGlzU3VwcG9ydGVkICE9
IG5pbAorICAgIG51bUNsYWltZWRCYWNrZW5kcyArPSBpZiBpc1N1cHBvcnRlZCB0aGVuIDEgZWxz
ZSAwIGVuZAorICAgIGlmIGlzU3VwcG9ydGVkCisgICAgICBzZWxlY3RlZEJhY2tlbmQgPSBiYWNr
ZW5kCisgICAgZW5kCisgIH0KKyAgCisgIHJldHVybiBpZiBudW1DbGFpbWVkQmFja2VuZHMgPiAx
CisgIAorICAjIFJlc29sdmUgdGhlIEFTVCBkb3duIHRvIGEgbG93LWxldmVsIGZvcm0gKG5vIG1h
Y3JvcyBvciBjb25kaXRpb25hbHMpLgorICBsb3dMZXZlbEFTVCA9IGFzdC5yZXNvbHZlU2V0dGlu
Z3MoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xl
dmVsQVNULCBzZWxlY3RlZEJhY2tlbmQKK2VuZAorCisjCisjIGZvckVhY2hWYWxpZFNldHRpbmdz
Q29tYmluYXRpb24oYXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2Vu
ZCwgaW5kZXggfCAuLi4gfQorIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFz
dCwgc2V0dGluZ3NDb21iaW5hdGlvbnMpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0
LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9CisjCisjIEV4ZWN1dGVzIHRoZSBnaXZlbiBibG9jayBm
b3IgZWFjaCB2YWxpZCBzZXR0aW5ncyBjb21iaW5hdGlvbiBpbiB0aGUKKyMgc2V0dGluZ3MgbWFw
LiBUaGUgYXN0IHBhc3NlZCBpbnRvIHRoZSBibG9jayBpcyByZXNvbHZlZAorIyAoYXN0LnJlc29s
dmUpIGFnYWluc3QgdGhlIHNldHRpbmdzLgorIworIyBUaGUgZmlyc3QgZm9ybSB3aWxsIGNhbGwg
Y29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgZm9yIHlvdS4KKyMKKworZGVmIGZvckVh
Y2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCAqb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0
aW9ucykKKyAgcmFpc2UgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucy5zaXplID4gMQor
ICAKKyAgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucy5lbXB0eT8KKyAgICBzZXR0aW5n
c0NvbWJpbmF0aW9ucyA9IGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIGVsc2UK
KyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IG9wdGlvbmFsU2V0dGluZ3NDb21iaWF0aW9uc1sw
XQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zLmVhY2hfd2l0aF9pbmRleCB7Cisg
ICAgfCBjb25jcmV0ZVNldHRpbmdzLCBpbmRleCB8CisgICAgZm9yU2V0dGluZ3MoY29uY3JldGVT
ZXR0aW5ncywgYXN0KSB7CisgICAgICB8IGNvbmNyZXRlU2V0dGluZ3NfLCBsb3dMZXZlbEFTVCwg
YmFja2VuZCB8CisgICAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFj
a2VuZCwgaW5kZXgKKyAgICB9CisgIH0KK2VuZAorCisjCisjIGNwcFNldHRpbmdzVGVzdChjb25j
cmV0ZVNldHRpbmdzKQorIworIyBSZXR1cm5zIHRoZSBDKysgY29kZSB1c2VkIHRvIHRlc3QgaWYg
d2UgYXJlIGluIGEgY29uZmlndXJhdGlvbiB0aGF0CisjIGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZl
biBjb25jcmV0ZSBzZXR0aW5ncy4KKyMKKworZGVmIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNl
dHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdzLnRvX2EuY29sbGVjdHsKKyAgICB8
IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisgICAgICAgIiIKKyAgICAgZWxzZQorICAgICAgICIh
IgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIgKyBwYWlyWzBdCisgIH0uam9pbigiICYmICIp
CitlbmQKKworIworIyBpc0FTVEVycm9uZW91cyhhc3QpCisjCisjIFRlc3RzIHRvIHNlZSBpZiB0
aGUgQVNUIGNsYWltcyB0aGF0IHRoZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUKKyMgdXNl
cidzIGNvZGUsIGFmdGVyIHNldHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4KKyMK
KworZGVmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAgbm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5
PworZW5kCisKKyMKKyMgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorIwor
IyBFbWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBnaXZlbiBj
b25maWd1cmF0aW9uLgorIworCitkZWYgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRp
bmdzKQorICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisg
ICRvdXRwdXQucHV0cyAiI2Vsc2UiCisgICRvdXRwdXQucHV0cyAiI2Vycm9yIFwiQ29uZmlndXJh
dGlvbiBtaXNtYXRjaC5cIiIKKyAgJG91dHB1dC5wdXRzICIjZW5kaWYiCitlbmQKKworIworIyBl
bWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpIHsK
KyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4uIH0KKyMKKyMgRW1p
dHMgYWxsIHJlbGV2YW50IGd1YXJkcyB0byBzZWUgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaG9sZHMg
YW5kCisjIGNhbGxzIHRoZSBibG9jayBpZiB0aGUgY29uZmlndXJhdGlvbiBpcyBub3QgZXJyb25l
b3VzLgorIworCitkZWYgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywg
YXN0LCBiYWNrZW5kKQorICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0
dGluZ3MpCisgIAorICBpZiBpc0FTVEVycm9uZW91cyhhc3QpCisgICAgJG91dHB1dC5wdXRzICIj
ZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uXCIiCisgIGVsc2lmIG5vdCBXT1JLSU5HX0JB
Q0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIlRoaXMg
YmFja2VuZCBpcyBub3Qgc3VwcG9ydGVkIHlldC5cIiIKKyAgZWxzZQorICAgIHlpZWxkIGNvbmNy
ZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZAorICBlbmQKKyAgCisgICRvdXRwdXQucHV0cyAiI2Vu
ZGlmIgorZW5kCisKKyMKKyMgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkgeworIyAg
ICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0KKyMKKyMg
RW1pdHMgZ3VhcmQgY29kZXMgZm9yIGFsbCB2YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxz
IHRoZSBibG9jaworIyBmb3IgdGhvc2UgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5k
IG5vdCBlcnJvbmVvdXMuCisjCisKK2RlZiBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0
KQorICBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworICAgIHwgY29uY3Jl
dGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICAkb3V0cHV0LnB1
dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICAgeWllbGQgY29uY3JldGVT
ZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgJG91dHB1dC5wdXRzICIj
ZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNDIg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIK
KworIworIyBub2RlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyMKKyMgQ29uc3RydWN0IGEg
bmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IElmVGhlbkVsc2Ugbm9kZXMgYnkKKyMgc3Vi
c3RpdHV0aW5nIGNvbmNyZXRlIGJvb2xlYW4gdmFsdWVzIGZvciBlYWNoIFNldHRpbmcuCisjCisK
K2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBtYXBDaGls
ZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUKKyAgZGVmIHJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlCisgIGRl
ZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFz
cyBTZXR0aW5nCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2V0dGluZ3Nb
QG5hbWVdLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQKKyAgZGVmIHJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1
ZSBhbmQgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBl
bmQKK2VuZAorCitjbGFzcyBPcgorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAg
IChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIG9yIEByaWdodC5yZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgTm90
CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKG5vdCBAY2hpbGQucmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIElm
VGhlbkVsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBpZiBAcHJlZGlj
YXRlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUKKyAgICAgIEB0aGVuQ2FzZS5yZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZWxzZQorICAgICAgQGVsc2VDYXNlLnJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UK
KyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBA
bGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpCisgICAgICBpZiBpdGVtLmlzX2E/IFNlcXVlbmNlCisgICAgICAgIG5l
d0xpc3QgKz0gaXRlbS5saXN0CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbQor
ICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQor
ICBlbmQKK2VuZAorCisjCisjIG5vZGUuZGVtYWNyb2lmeShtYWNyb3MpCisjIG5vZGUuc3Vic3Rp
dHV0ZShtYXBwaW5nKQorIworIyBkZW1hY3JvaWZ5KCkgY29uc3RydWN0cyBhIG5ldyBBU1QgdGhh
dCBkb2VzIG5vdCBoYXZlIGFueSBNYWNybworIyBub2Rlcywgd2hpbGUgc3Vic3RpdHV0ZSgpIHJl
cGxhY2VzIFZhcmlhYmxlIG5vZGVzIHdpdGggdGhlIGdpdmVuCisjIG5vZGVzIGluIHRoZSBtYXBw
aW5nLgorIworCitjbGFzcyBOb2RlCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBtYXBD
aGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLmRlbWFjcm9pZnkobWFjcm9z
KQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG1hcENo
aWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShtYXBwaW5n
KQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAg
IG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxh
YmVscyhtYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8KKyAgZGVmIHN1
YnN0aXR1dGUobWFwcGluZykKKyAgICBteU1hcHBpbmcgPSB7fQorICAgIG1hcHBpbmcuZWFjaF9w
YWlyIHsKKyAgICAgIHwga2V5LCB2YWx1ZSB8CisgICAgICB1bmxlc3MgQHZhcmlhYmxlcy5pbmNs
dWRlPyBrZXkKKyAgICAgICAgbXlNYXBwaW5nW2tleV0gPSB2YWx1ZQorICAgICAgZW5kCisgICAg
fQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3Rp
dHV0ZShteU1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZQorICBk
ZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBp
bmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2Ns
YXNzIExvY2FsTGFiZWwKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBpZiBt
YXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgor
ICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgc3Vic3RpdHV0ZShj
b25zdGFudHMpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbXlDb25zdGFudHMgPSBjb25zdGFudHMu
ZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19h
PyBDb25zdERlY2wKKyAgICAgICAgbXlDb25zdGFudHNbaXRlbS52YXJpYWJsZV0gPSBpdGVtLnZh
bHVlLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3Qg
PDwgaXRlbS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZW5kCisgICAgfQorICAgIFNl
cXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKKyAgCisgIGRlZiByZW5hbWVM
YWJlbHMoY29tbWVudCkKKyAgICBtYXBwaW5nID0ge30KKyAgICAKKyAgICBAbGlzdC5lYWNoIHsK
KyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAg
bWFwcGluZ1tpdGVtXSA9IExvY2FsTGFiZWwudW5pcXVlKGlmIGNvbW1lbnQgdGhlbiBjb21tZW50
ICsgIl8iIGVsc2UgIiIgZW5kICsgaXRlbS5jbGVhbk5hbWUpCisgICAgICBlbmQKKyAgICB9Cisg
ICAgCisgICAgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICBlbmQKKyAgCisgIGRlZiBkZW1h
Y3JvaWZ5KG1hY3JvcykKKyAgICBteU1hY3JvcyA9IG1hY3Jvcy5kdXAKKyAgICBAbGlzdC5lYWNo
IHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgIG15
TWFjcm9zW2l0ZW0ubmFtZV0gPSBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdCA9
IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19h
PyBNYWNybworICAgICAgICAjIElnbm9yZS4KKyAgICAgIGVsc2lmIGl0ZW0uaXNfYT8gTWFjcm9D
YWxsCisgICAgICAgIG1hcHBpbmcgPSB7fQorICAgICAgICBteU15TWFjcm9zID0gbXlNYWNyb3Mu
ZHVwCisgICAgICAgIHJhaXNlICJDb3VsZCBub3QgZmluZCBtYWNybyAje2l0ZW0ubmFtZX0gYXQg
I3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgbXlNYWNyb3NbaXRlbS5uYW1lXQorICAg
ICAgICByYWlzZSAiQXJndW1lbnQgY291bnQgbWlzbWF0Y2ggZm9yIGNhbGwgdG8gI3tpdGVtLm5h
bWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIGl0ZW0ub3BlcmFuZHMuc2l6
ZSA9PSBteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlcy5zaXplCisgICAgICAgIGl0ZW0ub3Bl
cmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgfCBpZHggfAorICAgICAgICAgIGlmIGl0ZW0u
b3BlcmFuZHNbaWR4XS5pc19hPyBWYXJpYWJsZSBhbmQgbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tp
ZHhdLm5hbWVdCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFy
aWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAg
ICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1l
XSA9IG5pbAorICAgICAgICAgIGVsc2lmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBNYWNybwor
ICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhd
Lm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9z
W2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1d
ID0gbmlsCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVz
W2lkeF1dID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAg
ICAgICAgbmV3TGlzdCArPSBteU1hY3Jvc1tpdGVtLm5hbWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBw
aW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNyb3MpLnJlbmFtZUxhYmVscyhpdGVtLm5hbWUpLmxpc3QK
KyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtLmRlbWFjcm9pZnkobXlNYWNyb3Mp
CisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3Qp
LnN1YnN0aXR1dGUoe30pCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5yZXNvbHZlT2Zmc2V0cyhv
ZmZzZXRzLCBzaXplcykKKyMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGhhcyBvZmZzZXQg
dmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMKKyMgb2Zmc2V0cy4KKyMKKworY2xhc3MgTm9kZQor
ICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgbWFwQ2hpbGRyZW4gewor
ICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXpl
cykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldAorICBkZWYgcmVzb2x2
ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgb2Zmc2V0c1tzZWxmXQorICAgICAgSW1t
ZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXRzW3NlbGZdKQorICAgIGVsc2UKKyAgICAgIHNl
bGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mCisgIGRlZiByZXNvbHZlT2Zm
c2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBzaXplc1tzZWxmXQorICAgICAgSW1tZWRpYXRl
Lm5ldyhjb2RlT3JpZ2luLCBzaXplc1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBwdXRzICJDb3Vs
ZCBub3QgZmluZCAje3NlbGYuaW5zcGVjdH0gaW4gI3tzaXplcy5rZXlzLmluc3BlY3R9IgorICAg
ICAgcHV0cyAic2l6ZXMgPSAje3NpemVzLmluc3BlY3R9IgorICAgICAgc2VsZgorICAgIGVuZAor
ICBlbmQKK2VuZAorCisjCisjIG5vZGUuZm9sZAorIworIyBSZXNvbHZlIGNvbnN0YW50IHJlZmVy
ZW5jZXMgYW5kIGNvbXB1dGUgYXJpdGhtZXRpYyBleHByZXNzaW9ucy4KKyMKKworY2xhc3MgTm9k
ZQorICBkZWYgZm9sZAorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAg
Y2hpbGQuZm9sZAorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcworICBk
ZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xk
CisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVy
biBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhj
b2RlT3JpZ2luLCBAbGVmdC52YWx1ZSArIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xh
c3MgU3ViSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAg
IEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/
IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRl
CisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAtIEByaWdodC52YWx1
ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBs
ZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNl
bGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBA
cmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVm
dC52YWx1ZSAqIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRl
CisgIGRlZiBmb2xkCisgICAgQGNoaWxkID0gQGNoaWxkLmZvbGQKKyAgICByZXR1cm4gc2VsZiB1
bmxlc3MgQGNoaWxkLmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdp
biwgLUBjaGlsZC52YWx1ZSkKKyAgZW5kCitlbmQKKworIworIyBub2RlLnJlc29sdmVBZnRlclNl
dHRpbmdzKG9mZnNldHMsIHNpemVzKQorIworIyBDb21waWxlIGFzc2VtYmx5IGFnYWluc3QgYSBz
ZXQgb2Ygb2Zmc2V0cy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZShvZmZzZXRzLCBz
aXplcykKKyAgICBkZW1hY3JvaWZ5KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcyku
Zm9sZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
eDg2LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
eDg2LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgc3VwcG9ydHM4Qml0
T25YODYKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0MSIsICJh
MSIsICJyMSIsICJ0MiIsICJ0MyIKKyAgICAgIHRydWUKKyAgICB3aGVuICJ0NCIsICJjZnIiCisg
ICAgICBmYWxzZQorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIs
ICJyMCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWFsIgor
ICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWF4IgorICAgICAgd2hlbiA6aW50CisgICAgICAg
ICIlZWF4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAi
dDEiLCAiYTEiLCAicjEiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAg
ICAgIiVkbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVkeCIKKyAgICAgIHdoZW4gOmlu
dAorICAgICAgICAiJWVkeCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAor
ICAgIHdoZW4gInQyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAg
ICIlY2wiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlY3giCisgICAgICB3aGVuIDppbnQK
KyAgICAgICAgIiVlY3giCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAg
ICB3aGVuICJ0MyIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAi
JWJsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWJ4IgorICAgICAgd2hlbiA6aW50Cisg
ICAgICAgICIlZWJ4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAg
d2hlbiAidDQiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVz
aWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc2kiCisgICAgICB3aGVuIDppbnQKKyAg
ICAgICAgIiVlc2kiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3
aGVuICJjZnIiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVk
aWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZGkiCisgICAgICB3aGVuIDppbnQKKyAg
ICAgICAgIiVlZGkiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3
aGVuICJzcCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNw
bCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVzcCIKKyAgICAgIHdoZW4gOmludAorICAg
ICAgICAiJWVzcCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVs
c2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2lu
ZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVn
aXN0ZXJJRAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIHJhaXNlIHVubGVzcyBraW5kID09
IDpkb3VibGUKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAiZmEwIiwgImZyIgorICAg
ICAgIiV4bW0wIgorICAgIHdoZW4gImZ0MSIsICJmYTEiCisgICAgICAiJXhtbTEiCisgICAgd2hl
biAiZnQyIiwgImZhMiIKKyAgICAgICIleG1tMiIKKyAgICB3aGVuICJmdDMiLCAiZmEzIgorICAg
ICAgIiV4bW0zIgorICAgIHdoZW4gImZ0NCIKKyAgICAgICIleG1tNCIKKyAgICB3aGVuICJmdDUi
CisgICAgICAiJXhtbTUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisg
IGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAg
IiQje3ZhbHVlfSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIje3Zh
bHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25Y
ODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIj
e29mZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9KSIKKyAgZW5kCisgIGRlZiB4
ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitl
bmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUK
KyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVl
fSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0sICN7aW5kZXgueDg2T3BlcmFuZCg6aW50KX0sICN7
c2NhbGV9KSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4
Nm9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAg
ZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9w
ZXJhbmQoa2luZCkKKyAgICAiI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCisKKyAgZGVmIHg4NkNh
bGxPcGVyYW5kKGtpbmQpCisgICAgIioje2FkZHJlc3MudmFsdWV9IgorICBlbmQKK2VuZAorCitj
bGFzcyBMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2TGFiZWwKKyAgICBzYW5pdGl6ZUxhYmVsTmFt
ZShuYW1lKQorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgeDg2TGFiZWwK
KyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2TGFiZWwK
KyAgICAiTF9vZmZsaW5lYXNtXyIrbmFtZVsxLi4tMV0KKyAgZW5kCisgIGRlZiB4ODZDYWxsT3Bl
cmFuZChraW5kKQorICAgIHg4NkxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIEluc3RydWN0aW9u
CisgIGRlZiB4ODZPcGVyYW5kcygqa2luZHMpCisgICAgcmFpc2UgdW5sZXNzIGtpbmRzLnNpemUg
PT0gb3BlcmFuZHMuc2l6ZQorICAgIHJlc3VsdCA9IFtdCisgICAga2luZHMuc2l6ZS50aW1lcyB7
CisgICAgICB8IGlkeCB8CisgICAgICByZXN1bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZPcGVyYW5k
KGtpbmRzW2lkeF0pCisgICAgfQorICAgIHJlc3VsdC5qb2luKCIsICIpCisgIGVuZAorCisgIGRl
ZiB4ODZTdWZmaXgoa2luZCkKKyAgICBjYXNlIGtpbmQKKyAgICB3aGVuIDpieXRlCisgICAgICAi
YiIKKyAgICB3aGVuIDpoYWxmCisgICAgICAidyIKKyAgICB3aGVuIDppbnQKKyAgICAgICJsIgor
ICAgIHdoZW4gOmRvdWJsZQorICAgICAgInNkIgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwg
a2luZCwgbnVtT3BlcmFuZHMpCisgICAgaWYgbnVtT3BlcmFuZHMgPT0gMworICAgICAgaWYgb3Bl
cmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQo
a2luZCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAg
JGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNt
LnB1dHMgIlx0bW92I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChr
aW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICRhc20ucHV0
cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5k
c1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20u
cHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFu
ZGxlWDg2T3Aob3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9w
Y29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2hp
ZnQob3Bjb2RlLCBraW5kKQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBvciBv
cGVyYW5kc1swXSA9PSBSZWdpc3RlcklELmZvck5hbWUobmlsLCAidDIiKQorICAgICAgJGFzbS5w
dXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0
eGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICAgICRhc20u
cHV0cyAiXHQje29wY29kZX0gJWNsLCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9Igor
ICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0s
ICVlY3giCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkRvdWJsZUJyYW5jaChi
cmFuY2hPcGNvZGUsIG1vZGUpCisgICAgY2FzZSBtb2RlCisgICAgd2hlbiA6bm9ybWFsCisgICAg
ICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gOnJldmVyc2UK
KyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91
YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgZWxzZQorICAg
ICAgcmFpc2UgbW9kZS5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNo
T3Bjb2RlfSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxl
WDg2SW50Q29tcGFyZShvcGNvZGVTdWZmaXgsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNf
YT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1sxXS5p
c19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXgg
PT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzaWYgb3BlcmFuZHNbMV0uaXNfYT8g
SW1tZWRpYXRlIGFuZCBvcGVyYW5kc1sxXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1swXS5pc19h
PyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0g
Im5lIikKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdGNt
cCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBo
YW5kbGVYODZJbnRCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NkludENv
bXBhcmUoYnJhbmNoT3Bjb2RlWzEuLi0xXSwga2luZCkKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFu
Y2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5k
bGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kKQorICAgIGlmIG9wZXJhbmQuc3VwcG9ydHM4Qml0
T25YODYKKyAgICAgICRhc20ucHV0cyAiXHQje3NldE9wY29kZX0gI3tvcGVyYW5kLng4Nk9wZXJh
bmQoOmJ5dGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgI3tvcGVyYW5kLng4Nk9wZXJh
bmQoOmJ5dGUpfSwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAg
ICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisg
ICAgICAkYXNtLnB1dHMgIlx0I3tzZXRPcGNvZGV9ICVhbCIKKyAgICAgICRhc20ucHV0cyAiXHRt
b3Z6YmwgJWFsLCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZC54ODZP
cGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2
SW50Q29tcGFyZVNldChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShz
ZXRPcGNvZGVbMy4uLTFdLCBraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJh
bmRzWzJdKQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgdmFsdWUg
PSBvcGVyYW5kc1swXQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gMgorICAgICAg
bWFzayA9IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLTEpCisgICAgd2hlbiAzCisgICAgICBt
YXNrID0gb3BlcmFuZHNbMV0KKyAgICBlbHNlCisgICAgICByYWlzZSAiRXhwZWN0ZWQgMiBvciAz
IG9wZXJhbmRzLCBidXQgZ290ICN7b3BlcmFuZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5n
fSIKKyAgICBlbmQKKyAgICAKKyAgICBpZiBtYXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52
YWx1ZSA9PSAtMQorICAgICAgaWYgdmFsdWUuaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNt
LnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9
LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1
dHMgIlx0Y21wI3t4ODZTdWZmaXgoa2luZCl9ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZp
eChraW5kKX0gI3ttYXNrLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2lu
ZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZCcmFuY2hUZXN0KGJyYW5j
aE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgJGFzbS5wdXRzICJc
dCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzLmxhc3QueDg2TGFiZWx9IgorICBlbmQKKyAgCisg
IGRlZiBoYW5kbGVYODZTZXRUZXN0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0
KGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHMubGFzdCkKKyAgZW5k
CisgIAorICBkZWYgaGFuZGxlWDg2T3BCcmFuY2gob3Bjb2RlLCBicmFuY2hPcGNvZGUsIGtpbmQp
CisgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5z
aXplIC0gMSkKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAgIGp1bXBU
YXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9IG9wZXJh
bmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5kCisgICAg
JGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQueDg2TGFiZWx9IgorICBl
bmQKKyAgCisgIGRlZiBoYW5kbGVYODZTdWJCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAg
IGlmIG9wZXJhbmRzLnNpemUgPT0gNCBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAg
ICAgICRhc20ucHV0cyAiXHRuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIGhhbmRsZVg4
Nk9wV2l0aE51bU9wZXJhbmRzKCJzdWIje3g4NlN1ZmZpeChraW5kKX0iLCBraW5kLCBvcGVyYW5k
cy5zaXplIC0gMSkKKyAgICBlbmQKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQK
KyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRh
cmdldCA9IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0Cisg
ICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQueDg2
TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBsb3dlclg4NgorICAgICRhc20uY29tbWVudCBjb2Rl
T3JpZ2luU3RyaW5nCisgICAgY2FzZSBvcGNvZGUKKyAgICB3aGVuICJhZGRpIiwgImFkZHAiCisg
ICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0
ZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAg
ICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICBp
ZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCisgICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09
IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAg
ICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRzICJcdGxlYWwgI3tv
cGVyYW5kc1swXS52YWx1ZX0oI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgb3Bl
cmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisgICAgICAg
IHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNl
IHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAi
XHRsZWFsICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
IGVsc2UKKyAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1sw
XQorICAgICAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9
IgorICAgICAgICBlbmQKKyAgICAgIGVuZAorICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAgICAg
IGhhbmRsZVg4Nk9wKCJhbmRsIiwgOmludCkKKyAgICB3aGVuICJsc2hpZnRpIgorICAgICAgaGFu
ZGxlWDg2U2hpZnQoInNhbGwiLCA6aW50KQorICAgIHdoZW4gIm11bGkiCisgICAgICBpZiBvcGVy
YW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAk
YXNtLnB1dHMgIlx0aW11bGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50LCA6aW50KX0iCisgICAg
ICBlbHNlCisgICAgICAgICMgRklYTUU6IGNvdWxkIGRvIHNvbWUgcGVlcGhvbGUgaW4gY2FzZSB0
aGUgbGVmdCBvcGVyYW5kIGlzIGltbWVkaWF0ZSBhbmQgaXQncworICAgICAgICAjIGEgcG93ZXIg
b2YgdHdvLgorICAgICAgICBoYW5kbGVYODZPcCgiaW11bGwiLCA6aW50KQorICAgICAgZW5kCisg
ICAgd2hlbiAibmVnaSIKKyAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7eDg2T3BlcmFuZHMoOmlu
dCl9IgorICAgIHdoZW4gIm5vdGkiCisgICAgICAkYXNtLnB1dHMgIlx0bm90bCAje3g4Nk9wZXJh
bmRzKDppbnQpfSIKKyAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgaGFuZGxlWDg2T3AoIm9y
bCIsIDppbnQpCisgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYXJs
IiwgOmludCkKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzaHJs
IiwgOmludCkKKyAgICB3aGVuICJzdWJpIiwgInN1YnAiCisgICAgICBpZiBvcGVyYW5kcy5zaXpl
ID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAi
XHRuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICRhc20ucHV0
cyAiXHRhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIGhhbmRsZVg4Nk9wKCJzdWJs
IiwgOmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gInhvcmkiLCAieG9ycCIKKyAgICAgIGhhbmRs
ZVg4Nk9wKCJ4b3JsIiwgOmludCkKKyAgICB3aGVuICJsb2FkaSIsICJzdG9yZWkiLCAibG9hZHAi
LCAic3RvcmVwIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6
aW50KX0iCisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJsICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgIHdoZW4gImxvYWRoIgorICAgICAgJGFzbS5wdXRzICJcdG1vdnp3bCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQp
fSIKKyAgICB3aGVuICJzdG9yZWIiCisgICAgICAkYXNtLnB1dHMgIlx0bW92YiAje3g4Nk9wZXJh
bmRzKDpieXRlLCA6Ynl0ZSl9IgorICAgIHdoZW4gImxvYWRkIiwgIm1vdmVkIiwgInN0b3JlZCIK
KyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUp
fSIKKyAgICB3aGVuICJhZGRkIgorICAgICAgJGFzbS5wdXRzICJcdGFkZHNkICN7eDg2T3BlcmFu
ZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImRpdmQiCisgICAgICAkYXNtLnB1dHMg
Ilx0ZGl2c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3Vi
ZCIKKyAgICAgICRhc20ucHV0cyAiXHRzdWJzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3Vi
bGUpfSIKKyAgICB3aGVuICJtdWxkIgorICAgICAgJGFzbS5wdXRzICJcdG11bHNkICN7eDg2T3Bl
cmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInNxcnRkIgorICAgICAgJGFzbS5w
dXRzICJcdHNxcnRzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImNpMmQiCisgICAgICAkYXNt
LnB1dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJiZGVxIgorICAgICAgaXNV
bm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRlcSIpCisgICAgICAkYXNtLnB1dHMgIlx0
dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7TGFiZWxSZWZl
cmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS54ODZMYWJlbH0iCisgICAgICAkYXNt
LnB1dHMgIlx0amUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgb3BlcmFuZHNbMl0p
Lng4NkxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJk
bmVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqbmUiLCA6bm9ybWFsKQorICAgIHdo
ZW4gImJkZ3QiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphIiwgOm5vcm1hbCkKKyAg
ICB3aGVuICJiZGd0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIsIDpub3Jt
YWwpCisgICAgd2hlbiAiYmRsdCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6
cmV2ZXJzZSkKKyAgICB3aGVuICJiZGx0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2go
ImphZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJs
ZUJyYW5jaCgiamUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbmVxdW4iCisgICAgICBpc1Vub3Jk
ZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgIGlzRXF1YWwgPSBMb2Nh
bExhYmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdGpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNv
ZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0amUg
I3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNFcXVhbCkueDg2TGFiZWx9IgorICAg
ICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAgICAkYXNtLnB1dHMgIlx0am1wICN7b3Bl
cmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAgaXNFcXVhbC5sb3dlcigiWDg2IikKKyAgICB3aGVu
ICJiZGd0dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOnJldmVyc2UpCisg
ICAgd2hlbiAiYmRndGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpy
ZXZlcnNlKQorICAgIHdoZW4gImJkbHR1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgi
amIiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91Ymxl
QnJhbmNoKCJqYmUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJ0ZDJpIgorICAgICAgJGFzbS5wdXRz
ICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGNtcGwgJDB4ODAw
MDAwMDAgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAi
XHRqZSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICB3aGVuICJ0ZDJpIgorICAgICAgJGFz
bS5wdXRzICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJjZDJpIgorICAgICAg
JGFzbS5wdXRzICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdHRl
c3RsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tvcGVyYW5kc1syXS54ODZMYWJl
bH0iCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDppbnQpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje29w
ZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiXHRqbmUgI3tvcGVyYW5kc1sy
XS54ODZMYWJlbH0iCisgICAgd2hlbiAibW92ZHoiCisgICAgICAkYXNtLnB1dHMgIlx0eG9ycGQg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJwb3AiCisgICAgICAkYXNtLnB1dHMgIlx0cG9wICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicHVzaCIKKyAgICAgICRh
c20ucHV0cyAiXHRwdXNoICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hl
biAibW92ZSIsICJzeGkycCIsICJ6eGkycCIKKyAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAw
KSA9PSBvcGVyYW5kc1swXSBhbmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAg
ICAkYXNtLnB1dHMgIlx0eG9ybCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMF0gIT0g
b3BlcmFuZHNbMV0KKyAgICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3t4ODZPcGVyYW5kcyg6aW50
LCA6aW50KX0iCisgICAgICBlbmQKKyAgICB3aGVuICJub3AiCisgICAgICAkYXNtLnB1dHMgIlx0
bm9wIgorICAgIHdoZW4gImJpZXEiLCAiYnBlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgi
amUiLCA6aW50KQorICAgIHdoZW4gImJpbmVxIiwgImJwbmVxIgorICAgICAgaGFuZGxlWDg2SW50
QnJhbmNoKCJqbmUiLCA6aW50KQorICAgIHdoZW4gImJpYSIsICJicGEiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImphIiwgOmludCkKKyAgICB3aGVuICJiaWFlcSIsICJicGFlcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmludCkKKyAgICB3aGVuICJiaWIiLCAiYnBiIgor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDppbnQpCisgICAgd2hlbiAiYmliZXEiLCAi
YnBiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDppbnQpCisgICAgd2hlbiAi
YmlndCIsICJicGd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDppbnQpCisgICAg
d2hlbiAiYmlndGVxIiwgImJwZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwg
OmludCkKKyAgICB3aGVuICJiaWx0IiwgImJwbHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpsIiwgOmludCkKKyAgICB3aGVuICJiaWx0ZXEiLCAiYnBsdGVxIgorICAgICAgaGFuZGxlWDg2
SW50QnJhbmNoKCJqbGUiLCA6aW50KQorICAgIHdoZW4gImJiZXEiCisgICAgICBoYW5kbGVYODZJ
bnRCcmFuY2goImplIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJuZXEiCisgICAgICBoYW5kbGVYODZJ
bnRCcmFuY2goImpuZSIsIDpieXRlKQorICAgIHdoZW4gImJiYSIKKyAgICAgIGhhbmRsZVg4Nklu
dEJyYW5jaCgiamEiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmFlcSIKKyAgICAgIGhhbmRsZVg4Nklu
dEJyYW5jaCgiamFlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiIgorICAgICAgaGFuZGxlWDg2SW50
QnJhbmNoKCJqYiIsIDpieXRlKQorICAgIHdoZW4gImJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50
QnJhbmNoKCJqYmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0IgorICAgICAgaGFuZGxlWDg2SW50
QnJhbmNoKCJqZyIsIDpieXRlKQorICAgIHdoZW4gImJiZ3RlcSIKKyAgICAgIGhhbmRsZVg4Nklu
dEJyYW5jaCgiamdlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdCIKKyAgICAgIGhhbmRsZVg4Nklu
dEJyYW5jaCgiamwiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0ZXEiCisgICAgICBoYW5kbGVYODZJ
bnRCcmFuY2goImpsdGVxIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRpbyIsICJidHBvIgorICAgICAg
aGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6aW50KQorICAgIHdoZW4gImJ0aXMiLCAiYnRwcyIK
KyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmludCkKKyAgICB3aGVuICJidGl6Iiwg
ImJ0cHoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDppbnQpCisgICAgd2hlbiAi
YnRpbnoiLCAiYnRwbnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6aW50KQor
ICAgIHdoZW4gImJ0Ym8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpieXRlKQor
ICAgIHdoZW4gImJ0YnMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDpieXRlKQor
ICAgIHdoZW4gImJ0YnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDpieXRlKQor
ICAgIHdoZW4gImJ0Ym56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmJ5dGUp
CisgICAgd2hlbiAiam1wIgorICAgICAgJGFzbS5wdXRzICJcdGptcCAje29wZXJhbmRzWzBdLng4
NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiYWRkaW8iLCAiYmFkZHBvIgorICAgICAg
aGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJhZGRpcyIs
ICJiYWRkcHMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqcyIsIDppbnQpCisg
ICAgd2hlbiAiYmFkZGl6IiwgImJhZGRweiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRs
IiwgImp6IiwgOmludCkKKyAgICB3aGVuICJiYWRkaW56IiwgImJhZGRwbnoiCisgICAgICBoYW5k
bGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbyIKKyAg
ICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam8iLCA6aW50KQorICAgIHdoZW4gImJzdWJpcyIKKyAg
ICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianMiLCA6aW50KQorICAgIHdoZW4gImJzdWJpeiIKKyAg
ICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbnoiCisg
ICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpueiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlvIgor
ICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJi
bXVsaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAianMiLCA6aW50KQorICAg
IHdoZW4gImJtdWxpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqeiIsIDpp
bnQpCisgICAgd2hlbiAiYm11bGlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIs
ICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJvcmlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2go
Im9ybCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXMiCisgICAgICBoYW5kbGVYODZPcEJy
YW5jaCgib3JsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJib3JpeiIKKyAgICAgIGhhbmRsZVg4
Nk9wQnJhbmNoKCJvcmwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJvcmlueiIKKyAgICAgIGhh
bmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJicmVhayIKKyAg
ICAgICRhc20ucHV0cyAiXHRpbnQgJDMiCisgICAgd2hlbiAiY2FsbCIKKyAgICAgICRhc20ucHV0
cyAiXHRjYWxsICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdoZW4g
InJldCIKKyAgICAgICRhc20ucHV0cyAiXHRyZXQiCisgICAgd2hlbiAiY2llcSIsICJjcGVxIgor
ICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQpCisgICAgd2hlbiAiY2lu
ZXEiLCAiY3BuZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRuZSIsIDppbnQp
CisgICAgd2hlbiAiY2lhIiwgImNwYSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNl
dGEiLCA6aW50KQorICAgIHdoZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAgaGFuZGxlWDg2SW50
Q29tcGFyZVNldCgic2V0YWUiLCA6aW50KQorICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAgICBo
YW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiIiwgOmludCkKKyAgICB3aGVuICJjaWJlcSIsICJj
cGJlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGJlIiwgOmludCkKKyAgICB3
aGVuICJjaWd0IiwgImNwZ3QiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnIiwg
OmludCkKKyAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29t
cGFyZVNldCgic2V0Z2UiLCA6aW50KQorICAgIHdoZW4gImNpbHQiLCAiY3BsdCIKKyAgICAgIGhh
bmRsZVg4NkludENvbXBhcmVTZXQoInNldGwiLCA6aW50KQorICAgIHdoZW4gImNpbHRlcSIsICJj
cGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisgICAg
d2hlbiAidGlvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQpCisgICAgd2hl
biAidGlzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDppbnQpCisgICAgd2hlbiAi
dGl6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDppbnQpCisgICAgd2hlbiAidGlu
eiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmludCkKKyAgICB3aGVuICJ0Ym8i
CisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgd2hlbiAidGJzIgor
ICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAgIHdoZW4gInRieiIKKyAg
ICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ym56IgorICAg
ICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJwZWVrIgorICAg
ICAgJGFzbS5wdXRzICJcdG1vdmwgI3tvcGVyYW5kc1swXS52YWx1ZSAqIDR9KCVlc3ApLCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInBva2UiCisgICAgICAkYXNt
LnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRz
WzFdLnZhbHVlICogNH0oJWVzcCkiCisgICAgd2hlbiAiY2RxaSIKKyAgICAgICRhc20ucHV0cyAi
XHRjZHEiCisgICAgd2hlbiAiaWRpdmkiCisgICAgICAkYXNtLnB1dHMgIlx0aWRpdmwgI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJmaWkyZCIKKyAgICAgICRhc20u
cHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNb
Ml0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwc2xs
cSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHBvciAleG1tNywgI3tvcGVyYW5kc1sy
XS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRhc20ucHV0
cyAiXHRtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cHNy
bHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAleG1tNywgI3tvcGVyYW5k
c1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiQmFkIG9wY29k
ZTogI3tvcGNvZGV9IgorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29kZVNwZWNpYWxpemF0
aW9uS2luZF9oCisjZGVmaW5lIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCituYW1lc3BhY2Ug
SlNDIHsKKworZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVG
b3JDb25zdHJ1Y3QgfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDEwNjA3MSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAjZGVmaW5lIENvbW1vblNsb3dQYXRoc19oCiAKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKIApAQCAtNDEsNiArNDIs
MzggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMgewogCitB
TFdBWVNfSU5MSU5FIEV4ZWNTdGF0ZSogYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFJl
Z2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7
CisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7Cisg
ICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOworICAgIENvZGVCbG9jayogbmV3
Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9y
KGtpbmQpOworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CisKKyAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNw
YWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQg
YnkgdGhlIGNhbGxlci4KKyAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhleGVjLT5yZWdpc3Rl
cnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2NrLT5tX251
bUNhbGxlZVJlZ2lzdGVycykpCisgICAgICAgIHJldHVybiAwOworCisgICAgQVNTRVJUKGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwor
CisgICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1lIGFuZCBhcmd1bWVu
dHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5lZC4KKyAgICBz
aXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzOworICAgIFJlZ2lzdGVyKiBzcmMgPSBleGVjLT5yZWdpc3RlcnMoKTsK
KyAgICBSZWdpc3RlciogZHN0ID0gZXhlYy0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKKworICAgIGlu
dCBpOworICAgIGludCBlbmQgPSAtRXhlY1N0YXRlOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpOworICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQorICAgICAgICBk
c3RbaV0gPSBzcmNbaV07CisKKyAgICBlbmQgLT0gZGVsdGE7CisgICAgZm9yICggOyBpID49IGVu
ZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOworCisgICAgRXhlY1N0YXRl
KiBuZXdFeGVjID0gRXhlY1N0YXRlOjpjcmVhdGUoZHN0KTsKKyAgICBBU1NFUlQoKHZvaWQqKW5l
d0V4ZWMgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7CisgICAgcmV0dXJuIG5ld0V4ZWM7Cit9CisK
IEFMV0FZU19JTkxJTkUgYm9vbCBvcEluc3RhbmNlT2ZTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSwgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3RvKQogewogICAgIEFTU0VS
VCghdmFsdWUuaXNDZWxsKCkgfHwgIWJhc2VWYWwuaXNDZWxsKCkgfHwgIXByb3RvLmlzQ2VsbCgp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAko
cmV2aXNpb24gMTA2MDcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCeXRl
Y29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0Ry
aXZlci5oIgorI2luY2x1ZGUgIkV4ZWN1dGlvbkhhcm5lc3MuaCIKICNpbmNsdWRlICJKSVQuaCIK
ICNpbmNsdWRlICJKSVREcml2ZXIuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKQEAgLTg0LDcgKzg1
LDcgQEAgSW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6OmludHJpbnNpYygpIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KIHN0YXRpYyB2b2lkIGpldHRpc29uQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgT3duUHRyPFQ+JiBjb2RlQmxvY2spCiB7Ci0gICAgQVNTRVJUKGNvZGVCbG9j
ay0+Z2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklU
Q29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKSk7CiAgICAgQVNT
RVJUKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgT3duUHRyPFQ+IGNvZGVCbG9ja1Rv
SmV0dGlzb24gPSBjb2RlQmxvY2sucmVsZWFzZSgpOwogICAgIGNvZGVCbG9jayA9IHN0YXRpY19w
b2ludGVyX2Nhc3Q8VD4oY29kZUJsb2NrVG9KZXR0aXNvbi0+cmVsZWFzZUFsdGVybmF0aXZlKCkp
OwpAQCAtMTY3LDkgKzE2OCwzMCBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVP
cHRpbWl6CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEV2YWxFeGVjdXRhYmxlOjpqaXRD
b21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGpp
dENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRD
b2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0KTsKK30KKworaW5saW5lIGNvbnN0IGNoYXIqIHNhbXBsaW5nRGVzY3Jp
cHRpb24oSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworICAgIHN3aXRjaCAoaml0VHlwZSkg
eworICAgIGNhc2UgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAgICAgcmV0dXJuICJJ
bnRlcnByZXRlciBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBjYXNlIEpJVENvZGU6OkJhc2Vs
aW5lSklUOgorICAgICAgICByZXR1cm4gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiOwor
ICAgIGNhc2UgSklUQ29kZTo6REZHSklUOgorICAgICAgICByZXR1cm4gIkRGRyBDb21waWxhdGlv
biAoVE9UQUwpIjsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6
OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNo
YWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxp
bmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAg
ICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5
cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7
CkBAIC0yMTAsNyArMjMyLDcgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50
ZXJuYQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlSWZBcHBy
b3ByaWF0ZSgqZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBq
aXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVjdXRpb24oKmdsb2JhbERhdGEsIG1fZXZh
bENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAw
OwogI2VuZGlmCiAKQEAgLTI5NSw5ICszMTcsMTUgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRh
YmxlOjpjb21waWxlT3B0aQogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBQcm9ncmFtRXhl
Y3V0YWJsZTo6aml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9v
bCByZXN1bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX3Byb2dyYW1D
b2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEpTT2JqZWN0KiBQcm9ncmFt
RXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5v
ZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJ
VCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRP
VEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3Jp
cHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJB
TShqaXRUeXBlKTsKQEAgLTMzNiw3ICszNjQsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFi
bGU6OmNvbXBpbGVJbnRlCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENv
bXBpbGVJZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0
Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xv
YmFsRGF0YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNDEyLDcgKzQ0MCw3IEBAIEZ1bmN0aW9u
Q29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmIKICAgICB3aGlsZSAocmVzdWx0LT5hbHRl
cm5hdGl2ZSgpKQogICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9j
ayo+KHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgQVNT
RVJUKHJlc3VsdC0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBB
U1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MzgsNiArNDY2LDE4IEBAIEpTT2JqZWN0KiBGdW5j
dGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVPcHQKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQg
RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJp
YXRlKGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9q
aXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0
b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2
b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25J
ZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENv
ZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5
bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQpOworfQorCiBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRh
YmxlOjpjb2RlQmxvY2tXaXRoQnl0ZWNvZGVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQogewogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9j
a0ZvcihraW5kKTsKQEAgLTQ4Miw3ICs1MjIsNyBAQCBQYXNzT3duUHRyPEZ1bmN0aW9uQ29kZUJs
b2NrPiBGdW5jdGlvbkV4CiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVG
b3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFp
bk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBz
YW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5l
IENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAg
U2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBl
KSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAt
NTA0LDcgKzU0NCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IK
ICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDYWxsLT5zaGFyZWRTeW1ib2xUYWJs
ZSgpOwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBw
cm9wcmlhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29k
ZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwg
aml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29k
ZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSwgQ29kZUZvckNh
bGwpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC01MjQsNyArNTY0LDcgQEAgSlNP
YmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogCiBKU09iamVjdCogRnVuY3Rp
b25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVj
LCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlw
ZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENv
ZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBD
b21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24o
c2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAg
ICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtNTQ2LDcgKzU4Niw3IEBAIEpTT2JqZWN0KiBG
dW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2Rl
QmxvY2tGb3JDb25zdHJ1Y3QtPnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklU
KQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9iYWxE
YXRhKCksIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1f
aml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBl
KSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxEYXRh
KCksIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0
Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBD
b2RlRm9yQ29uc3RydWN0KSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTA2MDcx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEV4ZWN1dGFibGVfaAogCiAjaW5jbHVk
ZSAiQ2FsbERhdGEuaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAi
Tm9kZXMuaCIKQEAgLTM5LDEyICs0MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBE
ZWJ1Z2dlcjsKICAgICBjbGFzcyBFdmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIEZ1bmN0aW9uQ29k
ZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9n
cmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwogCiAgICAgc3RydWN0IEV4
Y2VwdGlvbkluZm87CiAgICAgCi0gICAgZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29k
ZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKICAgICBlbnVtIENvbXBpbGF0aW9uS2luZCB7
IEZpcnN0Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21waWxhdGlvbiB9OwogCiAgICAgaW5saW5l
IGJvb2wgaXNDYWxsKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAgLTMxOSw2ICszMjAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUg
OiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1
dGFibGUgQmFzZTsKIApAQCAtMzM4LDYgKzM0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZShK
U0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYpOwog
I2VuZGlmCiAKICAgICAgICAgRXZhbENvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAt
Mzg0LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBQcm9n
cmFtRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVk
ZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC00MTEsNiArNDE1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25P
cHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNH
bG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBQcm9ncmFtQ29kZUJsb2NrJiBnZW5lcmF0
ZWRCeXRlY29kZSgpCkBAIC00NTMsNiArNDU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUg
QmFzZTsKIApAQCAtNTA4LDYgKzUxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNp
ZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNhbGwo
SlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNhbGwoSlNHbG9iYWxE
YXRhJik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ2FsbCgpIGNvbnN0
CkBAIC01MzUsNiArNTQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJM
RShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KEpT
R2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoSlNHbG9i
YWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ29uc3RydWN0
KCkgY29uc3QKQEAgLTU4Miw2ICs1OTAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICAgICAgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdENvbXBpbGVG
b3IoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAg
ICAgICAgICAgICAgaml0Q29tcGlsZUZvckNhbGwoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29k
ZUZvckNvbnN0cnVjdCk7CisgICAgICAgICAgICBqaXRDb21waWxlRm9yQ29uc3RydWN0KGdsb2Jh
bERhdGEpOworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNHZW5l
cmF0ZWRGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIEV4ZWN1dGlvbkhhcm5lc3NfaAorI2RlZmluZSBFeGVj
dXRpb25IYXJuZXNzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxF
KEpJVCkKKworI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2lu
dHMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5
cGU+CitpbmxpbmUgYm9vbCBwcmVwYXJlRm9yRXhlY3V0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUs
IEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYg
KEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9m
ZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RW50cnlw
b2ludChnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUpOworICAgICAgICBjb2Rl
QmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorICAgIHJl
dHVybiBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENv
ZGUsIGppdFR5cGUpOworfQorCitpbmxpbmUgYm9vbCBwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBj
b2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29k
ZVdpdGhBcml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBKSVRDb2Rl
OjpKSVRUeXBlIGppdFR5cGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7
CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAg
ICAgICBMTEludDo6Z2V0RnVuY3Rpb25FbnRyeXBvaW50KGdsb2JhbERhdGEsIGtpbmQsIGppdENv
ZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29k
ZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShraW5kKTsKKyNlbmRpZiAvLyBFTkFCTEUo
TExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFs
RGF0YSwgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIHN5bWJvbFRh
YmxlLCBqaXRUeXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFC
TEUoSklUKQorCisjZW5kaWYgLy8gRXhlY3V0aW9uSGFybmVzc19oCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMDYwNzEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93
bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBhZG9wdEFy
cmF5UHRyKG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bcmVnaXN0ZXJBcnJheVNpemVdKTsKICAg
ICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMgPSByZWdpc3RlckFycmF5Lmdl
dCgpICsgcmVnaXN0ZXJPZmZzZXQ7Ci0KKyAgICAgICAgCiAgICAgICAgIC8vIENvcHkgYWxsIGFy
Z3VtZW50cyB0aGF0IGNhbiBiZSBjYXB0dXJlZCBieSBuYW1lIG9yIGJ5IHRoZSBhcmd1bWVudHMg
b2JqZWN0LgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbnVtQ2FwdHVyZWRBcmdzOyAr
K2kpIHsKICAgICAgICAgICAgIGludCBpbmRleCA9IENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQo
aSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lv
biAxMDYwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgSlNBcnJheTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBzdHJ1
Y3QgU3BhcnNlQXJyYXlFbnRyeSA6IHB1YmxpYyBXcml0ZUJhcnJpZXI8VW5rbm93bj4gewogICAg
ICAgICB0eXBlZGVmIFdyaXRlQmFycmllcjxVbmtub3duPiBCYXNlOwpAQCAtMTIyLDYgKzEyMyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBKU0FycmF5IDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgV2Fsa2VyOwogCiAgICAgcHJvdGVjdGVkOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDEwNjA3
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw5ICszNiwxMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0ds
b2JhbE9iamVjdDsKLSAgICBjbGFzcyBTdHJ1Y3R1cmU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9w
ZXJ0eU5hbWVBcnJheTsKKyAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBlbnVtIEVudW1lcmF0
aW9uTW9kZSB7CiAgICAgICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsCkBAIC0xNjQsNiAr
MTY1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBjb25zdCBDbGFzc0lu
Zm8qIG1fY2xhc3NJbmZvOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVj
dHVyZTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaAkocmV2aXNpb24gMTA2MDcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEpTQWN0aXZh
dGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBTb3VyY2VD
b2RlOwogICAgIG5hbWVzcGFjZSBERkcgewpAQCAtMTQwLDYgKzE0MSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hv
c3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFy
Z3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJ
KHJldmlzaW9uIDEwNjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsOCBAQCBKU0dsb2JhbERh
dGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgLCBrZXl3b3JkcyhhZG9wdFB0cihu
ZXcgS2V5d29yZHModGhpcykpKQogICAgICwgaW50ZXJwcmV0ZXIoMCkKICAgICAsIGhlYXAodGhp
cywgaGVhcFNpemUpCisgICAgLCBqc0FycmF5Q2xhc3NJbmZvKCZKU0FycmF5OjpzX2luZm8pCisg
ICAgLCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvKCZKU0ZpbmFsT2JqZWN0OjpzX2luZm8pCiAjaWYg
RU5BQkxFKERGR19KSVQpCiAgICAgLCBzaXplT2ZMYXN0U2NyYXRjaEJ1ZmZlcigwKQogI2VuZGlm
CkBAIC0yMTYsNyArMjE4LDcgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0
YVR5cAogICAgIGppdFN0dWJzID0gYWRvcHRQdHIobmV3IEpJVFRodW5rcyh0aGlzKSk7CiAjZW5k
aWYKIAotICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKHRoaXMtPmNhblVzZUpJVCgpKTsKKyAg
ICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSgmbGxpbnREYXRhLCB0aGlzLT5jYW5Vc2VKSVQoKSk7
CiAKICAgICBoZWFwLm5vdGlmeUlzU2FmZVRvQ29sbGVjdCgpOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDEwNjA3MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCwxNSArMzAsMTYgQEAKICNkZWZpbmUgSlNHbG9iYWxEYXRhX2gKIAogI2lu
Y2x1ZGUgIkNhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJJbnRyaW5z
aWMuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2VDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFi
bGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCi0jaW5jbHVkZSAiU3Ryb25nLmgiCisj
aW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJK
U1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTnVtZXJpY1N0cmlu
Z3MuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKICNp
bmNsdWRlICJUZXJtaW5hdG9yLmgiCiAjaW5jbHVkZSAiVGltZW91dENoZWNrZXIuaCIKICNpbmNs
dWRlICJXZWFrUmFuZG9tLmgiCkBAIC02NSw2ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEtl
eXdvcmRzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRp
dmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFBhcnNlckFyZW5hOwogICAgIGNsYXNzIFJlZ0V4cENh
Y2hlOwpAQCAtMjQxLDYgKzI0MywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSGVhcCBo
ZWFwOwogCiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uOworCisgICAgICAgIGNvbnN0IENsYXNz
SW5mbyogY29uc3QganNBcnJheUNsYXNzSW5mbzsKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBj
b25zdCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOworCisgICAgICAgIExMSW50OjpEYXRhIGxsaW50
RGF0YTsKKwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIgZXhjZXB0
aW9uTG9jYXRpb247CiAgICAgICAgIEpTVmFsdWUgaG9zdENhbGxSZXR1cm5WYWx1ZTsKQEAgLTM0
Niw2ICszNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICN1bmRlZiByZWdpc3RlclR5cGVkQXJyYXlG
dW5jdGlvbgogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlw
ZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbERh
dGEqJiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAgICAgIHZvaWQgY3JlYXRlTmF0aXZl
VGh1bmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAkocmV2aXNpb24gMTA2MDcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBH
ZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgR2xvYmFsQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogICAg
IGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CkBA
IC0zMzUsNiArMzM2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBpbnQgY291bnQp
OwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBGb2xkIHJlc2V0IGludG8gaW5pdC4K
ICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUp
OwogICAgICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTA2MDcxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAg
ICAgY2xhc3MgSGFzaEVudHJ5OwogICAgIGNsYXNzIEludGVybmFsRnVuY3Rpb247CisgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgIGNs
YXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKQEAg
LTI2OSw2ICsyNzAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNPYmplY3QoSlNHbG9i
YWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpOwogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAgICAgCiAgICAgICAgIC8vIE5vYm9keSBzaG91bGQgZXZlciBhc2sgYW55IG9mIHRoZXNl
IHF1ZXN0aW9ucyBvbiBzb21ldGhpbmcgYWxyZWFkeSBrbm93biB0byBiZSBhIEpTT2JqZWN0Lgog
ICAgICAgICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyOwogICAgICAgICB1c2luZyBK
U0NlbGw6OmlzR2V0dGVyU2V0dGVyOwpAQCAtMzgxLDYgKzM4NCw4IEBAIENPTVBJTEVfQVNTRVJU
KChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0NlbGwqKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgICAg
ICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQogICAg
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAxMDYwNzEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJZGVudGlm
aWVyOwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIAogICAgIGNsYXNzIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTk2LDYgKzk3LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlE
YXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9jYWNoZWRTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDEwNjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNTdHJpbmc7CisgICAgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoSlNHbG9iYWxE
YXRhKik7CiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKik7CkBAIC0yNDAs
NiArMjQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAg
ICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2U4KExDaGFyKikgY29uc3Q7CiAgICAgICAgIHZvaWQg
cmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hhciopIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNpb24gMTA2MDcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw2ICszNCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgPSAxOyAvLyBXZWJDb3JlIHVzZXMgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCB0byBtYWtl
IGRvY3VtZW50LmFsbCB1bmRldGVjdGFibGUuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIElt
cGxlbWVudHNIYXNJbnN0YW5jZSA9IDEgPDwgMTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
T3ZlcnJpZGVzSGFzSW5zdGFuY2UgPSAxIDw8IDI7CkBAIC04Nyw2ICs4OSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBpc1NldE9uRmxh
Z3MxKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPD0gKDEgPDwgNykpOyByZXR1
cm4gbV9mbGFncyAmIGZsYWc7IH0KICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MyKHVuc2lnbmVk
IGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1cm4gbV9mbGFnczIg
JiAoZmxhZyA+PiA4KTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhbHVlLmNwcAkocmV2aXNpb24gMTA2MDcxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiwxMCArMTE2LDkgQEAgSlNP
YmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoRQogICAgIHJldHVybiBKU05vdEFu
T2JqZWN0OjpjcmVhdGUoZXhlYyk7CiB9CiAKLSNpZm5kZWYgTkRFQlVHCiBjaGFyKiBKU1ZhbHVl
OjpkZXNjcmlwdGlvbigpCiB7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0gNjQ7Cisg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0gMTI4OwogICAgIHN0YXRpYyBjaGFyIGRlc2Ny
aXB0aW9uW3NpemVdOwogCiAgICAgaWYgKCEqdGhpcykKQEAgLTEyOCwxNCArMTI3LDE0IEBAIGNo
YXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKICAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24s
IHNpemUsICJJbnQzMjogJWQiLCBhc0ludDMyKCkpOwogICAgIGVsc2UgaWYgKGlzRG91YmxlKCkp
IHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6
ZSwgIkRvdWJsZTogJWxmLCAlbHgiLCBhc0RvdWJsZSgpLCByZWludGVycHJldERvdWJsZVRvSW50
cHRyKGFzRG91YmxlKCkpKTsKKyAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJE
b3VibGU6ICVseCwgJWxmIiwgcmVpbnRlcnByZXREb3VibGVUb0ludHB0cihhc0RvdWJsZSgpKSwg
YXNEb3VibGUoKSk7CiAjZWxzZQogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBkb3VibGUg
YXNEb3VibGU7CiAgICAgICAgICAgICB1aW50MzJfdCBhc1R3b0ludDMyc1syXTsKICAgICAgICAg
fSB1OwogICAgICAgICB1LmFzRG91YmxlID0gYXNEb3VibGUoKTsKLSAgICAgICAgc25wcmludGYo
ZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVsZiwgJTA4eDolMDh4IiwgYXNEb3VibGUoKSwg
dS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSk7CisgICAgICAgIHNucHJpbnRmKGRl
c2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlMDh4OiUwOHgsICVsZiIsIHUuYXNUd29JbnQzMnNb
MV0sIHUuYXNUd29JbnQzMnNbMF0sIGFzRG91YmxlKCkpOwogI2VuZGlmCiAgICAgfSBlbHNlIGlm
IChpc0NlbGwoKSkKICAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJDZWxsOiAl
cCIsIGFzQ2VsbCgpKTsKQEAgLTE1Miw3ICsxNTEsNiBAQCBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlw
dGlvbigpCiAKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9Ci0jZW5kaWYKIAogLy8gVGhpcyBp
biB0aGUgVG9JbnQzMiBvcGVyYXRpb24gaXMgZGVmaW5lZCBpbiBzZWN0aW9uIDkuNSBvZiB0aGUg
RUNNQS0yNjIgc3BlYy4KIC8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBpZGVudGljYWwg
dG8gVG9VSW50MzIgb3RoZXIgdGhhbiB0byBpbnRlcnByZXRhdGlvbgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2aXNpb24gMTA2MDcxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIs
OSArMjMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTQ2VsbCogYXNDZWxsKCkgY29u
c3Q7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZENhbGxlZSgpOwogCi0j
aWZuZGVmIE5ERUJVRwogICAgICAgICBjaGFyKiBkZXNjcmlwdGlvbigpOwotI2VuZGlmCiAKICAg
ICBwcml2YXRlOgogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gSlNWYWx1ZShXcml0ZUJhcnJp
ZXJCYXNlPFQ+KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFi
bGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEwNjA3MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAg
KzM4LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogCiAgICAgY2xhc3MgSlNWYXJpYWJsZU9iamVj
dCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsK
KyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHB1Ymxp
YzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTA2MDcxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDYgKzUyLDEwIEBAIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElu
bGkKIAogdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7CiAKK2ludDMyX3QgZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9ySklUU29vbjsKKwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFm
dGVyV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVy
TG9uZ1dhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXpl
QW55dGltZVNvb247CkBAIC0xMzcsNiArMTQxLDEwIEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMo
KQogICAgIAogICAgIFNFVChtYXhpbXVtSW5saW5pbmdEZXB0aCwgNSk7CiAKKyAgICBTRVQoZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXAsICAgICAtMTAwKTsKKyAgICBTRVQo
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptaW4oKSk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckpJVFNvb24sICAgICAgICAgICAgLTEwMCk7CisKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCwgICAgIC0xMDAwKTsKICAgICBTRVQoZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAsIC01MDAwKTsKICAgICBTRVQo
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKQEAgLTE4NSw2ICsxOTMsOCBAQCB2b2lkIGlu
aXRpYWxpemVPcHRpb25zKCkKICAgICBpZiAoY3B1c1RvVXNlIDwgMSkKICAgICAgICAgY3B1c1Rv
VXNlID0gMTsKICAgICAKKyAgICBjcHVzVG9Vc2UgPSAxOworICAgIAogICAgIFNFVChudW1iZXJP
ZkdDTWFya2VycywgY3B1c1RvVXNlKTsKIAogICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JP
cHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxMDYwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEwIEBAIGV4dGVy
biB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHIKIAogZXh0ZXJuIHVuc2lnbmVkIG1h
eGltdW1JbmxpbmluZ0RlcHRoOyAvLyBEZXB0aCBvZiBpbmxpbmUgc3RhY2ssIHNvIDEgPSBubyBp
bmxpbmluZywgMiA9IG9uZSBsZXZlbCwgZXRjLgogCitleHRlcm4gaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBleHRlcm4gaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gMTA2MDcx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xv
YmFsRGF0YTsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU2NvcGVDaGFpbkl0
ZXJhdG9yOwogICAgIGNsYXNzIFNsb3RWaXNpdG9yOwogICAgIApAQCAtOTEsNiArOTIsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJ
bmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuOwogICAgIH07CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMDYw
NzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAg
ICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47
CkBAIC0xOTYsNiArMTk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19F
WFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKik7
CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmKTsKICAgICAgICAgU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAxMDYwNzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGNsYXNzIFN0
cnVjdHVyZUNoYWluIDogcHVibGljIEpTQ2VsbCB7CkBAIC03NCw2ICs3NSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgU3RydWN0dXJlQ2hhaW4o
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+ID4g
bV92ZWN0b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lv
biAxMDYwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTkyMCw2ICs5MjAsMTggQEAKICNkZWZpbmUgRU5BQkxFX0pJVCAxCiAjZW5k
aWYKIAorLyogT24gc29tZSBvZiB0aGUgcGxhdGZvcm1zIHdoZXJlIHdlIGhhdmUgYSBKSVQsIHdl
IHdhbnQgdG8gYWxzbyBoYXZlIHRoZSAKKyAgIGxvdy1sZXZlbCBpbnRlcnByZXRlci4gKi8KKyNp
ZiAhZGVmaW5lZChFTkFCTEVfTExJTlQpICYmIEVOQUJMRShKSVQpICYmIFBMQVRGT1JNKE1BQykg
JiYgVVNFKEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyNlbmRpZgorCisv
KiBJZiB3ZSBoYXZlIExMSW50IGVuYWJsZWQgYW5kIHRoZSBKSVQgZW5hYmxlZCwgd2UgYWxzbyBl
bmFibGUgT1NSaW5nIGZyb20KKyAgIExMSW50IHRvIHRoZSBKSVQuICovCisjaWYgIWRlZmluZWQo
RU5BQkxFX0xMSU5UX09TUl9UT19KSVQpICYmIEVOQUJMRShKSVQpICYmIEVOQUJMRShMTElOVCkK
KyNkZWZpbmUgRU5BQkxFX0xMSU5UX09TUl9UT19KSVQgMQorI2VuZGlmCisKICNpZiAhZGVmaW5l
ZChFTkFCTEVfREZHX0pJVCkgJiYgRU5BQkxFKEpJVCkKIC8qIEVuYWJsZSB0aGUgREZHIEpJVCBv
biBYODYgYW5kIFg4Nl82NC4gIE9ubHkgdGVzdGVkIG9uIE1hYyBhbmQgR05VL0xpbnV4LiAqLwog
I2lmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSkgJiYgKFBMQVRGT1JNKE1BQykgfHwgT1MoTElO
VVgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2Vk
TGlzdC5oCShyZXZpc2lvbiAxMDYwNzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Nl
bnRpbmVsTGlua2VkTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4IEBAIHB1Ymxp
YzoKIAogICAgIGl0ZXJhdG9yIGJlZ2luKCk7CiAgICAgaXRlcmF0b3IgZW5kKCk7CisgICAgCisg
ICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gYmVnaW4oKSA9PSBlbmQoKTsgfQogCiBwcml2YXRl
OgogICAgIFJhd05vZGUgbV9oZWFkU2VudGluZWw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDEwNjA3MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQz
LDYgKzQzLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlN0cmluZyAqIENGU3RyaQogLy8g
TGFuZGluZyB0aGUgZmlsZSBtb3ZlcyBpbiBvbmUgcGF0Y2gsIHdpbGwgZm9sbG93IG9uIHdpdGgg
cGF0Y2hlcyB0byBjaGFuZ2UgdGhlIG5hbWVzcGFjZXMuCiBuYW1lc3BhY2UgSlNDIHsKIHN0cnVj
dCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5zbGF0b3I7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElkZW50aWZpZXJDaGFyQnVmZmVyVHJh
bnNsYXRvcjsKIHN0cnVjdCBJZGVudGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9yOwogfQpA
QCAtNzIsNyArNzMsOCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICBmcmllbmQgc3RydWN0IFdU
Rjo6U3Vic3RyaW5nVHJhbnNsYXRvcjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6VUNoYXJCdWZm
ZXJUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmdJbXBsOwotCisgICAg
ZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogcHJpdmF0ZToK
ICAgICBlbnVtIEJ1ZmZlck93bmVyc2hpcCB7CiAgICAgICAgIEJ1ZmZlckludGVybmFsLApJbmRl
eDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MDcxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDEtMjYgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRp
ZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1
ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1aWxkIHN5c3Rl
bSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4KKyAgICAgICAg
CisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIG5vIGJlaGF2aW9yIGNoYW5nZWQuCisKKyAg
ICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxMi0wMS0yNiAgQ3JpcyBOZWNrYXIgIDxjZG5A
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRoZSByZWdpc3RyYXRpb24gb2Ygc2NoZW1lcyBpcyBj
dXJyZW50bHkgcmFjZXkgYXMgdGhleSBhcmUgbm90IHJlZ2lzdGVyZWQgZnJvbSB0aGUgbWFpbiB0
aHJlYWQuIApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNjA3MSkKKysrIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCw3
IEBAIFNFVChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIi
CiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3BhcnNlciIKICAgICAiJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
cnVudGltZSIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDYwNzEpCisrKyBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAxLTI2ICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgSlNDIHNob3VsZCBiZSBh
IHRyaXBsZS10aWVyIFZNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NTgxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAwNzk2OTQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCBFRkwncyBi
dWlsZCBzeXN0ZW0gdG8gaW5jbHVkZSBhIG5ldyBkaXJlY3RvcnkgaW4gSmF2YVNjcmlwdENvcmUu
CisgICAgICAgIAorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAxLTExICBKYWNr
eSBKaWFuZyAgPHpoYWppYW5nQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIEFTU0VS
VCBmYWlsdXJlIGluIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMoKQpJ
bmRleDogU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDYwNzEpCisrKyBTb3VyY2UvV2ViS2l0
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIFNFVChXZWJL
aXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdn
ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2ppdCIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50Igog
ICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vcHJvZmlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124248</attachid>
            <date>2012-01-26 20:12:46 -0800</date>
            <delta_ts>2012-01-27 13:37:03 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_55.diff</filename>
            <type>text/plain</type>
            <size>441237</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MDgyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5NyBA
QAorMjAxMi0wMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi52c3Byb3BzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDog
QWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Omlz
U2V0KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAg
IChDYWxsTGlua1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmVzY2FwZVF1b3Rlcyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWlu
Z0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RXZh
bENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6
amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1w
bCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dXNlc09wY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAg
KCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0Q29tcGls
ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
aWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxp
a2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlr
ZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1
ZW50RXhpdFNpdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29v
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50
RXhlY3V0ZUNvdW50ZXIpOgorICAgICAgICAoUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChF
dmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBi
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6
CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OkdldEJ5SWRTdGF0dXMpOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjp3YXNTZWVuSW5KSVQpOgorICAgICAgICAoR2V0QnlJZFN0YXR1
cyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgIChJbnN0cnVj
dGlvbik6CisgICAgICAgICgpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZv
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0lu
Zm86OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKExMSW50Q2FsbExpbmtJbmZvKToKKyAg
ICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6OkxM
SW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAg
IChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAoUHV0QnlJZFN0YXR1cyk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0
UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaCk6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0
UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRD
b21waWxlci5jcHA6CisgICAgICAgICgpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKCk6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChBbGxvY2F0aW9uU3BhY2UpOgorICAgICAgICAoKToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAo
SGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAoSlNDOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFt
ZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJy
ZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZy
YW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmls
ZSk6CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKToKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAg
KiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpJVENvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2Rl
Ojppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAg
ICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToK
KyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93
KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RV
Ql9GVU5DVElPTik6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJ
VC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1v
bi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChEYXRhKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50
RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRF
dmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2lu
dCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBv
aW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxl
cik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9u
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpM
TEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQv
TExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChK
U0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmVudHJ5T1NSKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJlc29sdmVHbG9iYWwpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9z
dENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRk
ZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludE9m
ZnNldHNFeHRyYWN0b3IpOgorICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDog
QWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3Ry
dWN0RW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZv
ckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpMTEludDo6ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20u
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRy
YWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAg
ICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFz
bS9zZXR0aW5ncy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6
IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgor
ICAgICAgICAoKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAg
ICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAoQ29tbW9u
U2xvd1BhdGhzKToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjpvcEluc3RhbmNlT2ZT
bG93KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpq
ZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpqaXRDb21w
aWxlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnNhbXBsaW5nRGVzY3JpcHRpb24p
OgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpQ
cm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbCk6CisgICAgICAg
ICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoKToKKyAg
ICAgICAgKEV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKFByb2dyYW1FeGVjdXRhYmxlKToKKyAg
ICAgICAgKEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZTo6aml0Q29tcGlsZUZvcik6CisgICAgICAgICogcnVudGltZS9FeGVjdXRpb25IYXJuZXNz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZvckV4ZWN1
dGlvbik6CisgICAgICAgIChKU0M6OnByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbik6CisgICAg
ICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uaDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9u
Ojp0ZWFyT2ZmKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKCk6CisgICAgICAgIChKU0NlbGwpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTRnVuY3Rpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNHbG9iYWxEYXRhKToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxEYXRhOjpzY3JhdGNoQnVmZmVyRm9yU2l6ZSk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoKToKKyAgICAgICAgKEpTT2JqZWN0KToKKyAgICAgICAgKEpTRmluYWxPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
dHJpbmcuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU1N0cmluZyk6CisgICAgICAgICog
cnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoVHlwZUluZm8p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjpkZXNjcmlwdGlvbik6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVl
Lmg6CisgICAgICAgIChKU1ZhbHVlKToKKyAgICAgICAgKCk6CisgICAgICAgICogcnVudGltZS9K
U1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNWYXJpYWJsZU9i
amVjdCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKE9wdGlvbnMp
OgorICAgICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAgICAgICog
cnVudGltZS9PcHRpb25zLmg6CisgICAgICAgIChPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1l
L1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChTY29wZUNoYWluTm9kZSk6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChTdHJ1Y3R1cmVDaGFpbik6CisgICAgICAgICogd3RmL1BsYXRm
b3JtLmg6CisgICAgICAgICogd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oOgorICAgICAgICAoU2Vu
dGluZWxMaW5rZWRMaXN0KToKKyAgICAgICAgKFdURjo6U2VudGluZWxMaW5rZWRMaXN0Ojppc0Vt
cHR5KToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoU3RyaW5nSW1wbCk6CisgICAgICAgICgpOgorCiAyMDEyLTAxLTI2ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQWxsIERGRyBoZWxwZXJzIHRoYXQg
bWF5IGNhbGwgb3V0IHRvIGFyYml0cmFyeSBKUyBjb2RlIG11c3Qga25vdyB3aGVyZSB0aGV5Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDYwODIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTExLDYgKzExLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L3BhcnNlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZSIKQEAgLTk0LDYgKzk1LDcgQEAgU0VUKEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKICAgICBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwCiAKICAgICBq
aXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5j
cHAKICAgICBqaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAogICAgIGppdC9KSVRBcml0aG1ldGlj
LmNwcAogICAgIGppdC9KSVRDYWxsMzJfNjQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmFtCShyZXZpc2lvbiAxMDYwODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
R05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgamF2YXNjcmlw
dGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCisJLUkkKHNyY2RpcikvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDYw
ODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2lu
ZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmNwcCBcCkBAIC0xMDIsNiArMTAzLDcgQEAgamF2YXNjcmlwdGNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9u
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTGluZUluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8uaCBcCkBAIC0yNzcsNiArMjc5LDggQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Db21wYWN0
SklUQ29kZU1hcC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0
b3IuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNw
cCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIFwKQEAgLTMwMCw2ICszMDQsNyBAQCBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNp
YWxpemVkVGh1bmtKSVQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vcy13aW4zMi9zdGRib29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vcy13aW4zMi9zdGRpbnQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmggXApAQCAtMzUwLDYgKzM1NSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaCBcCkBAIC0zNzgsNiArMzg0LDcgQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHJldmlzaW9uIDEwNjA4MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIw
LDYgKzIwLDcgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9kZWJ1Z2dlciBc
CiAgICAgJCRTT1VSQ0VfRElSL2ludGVycHJldGVyIFwKICAgICAkJFNPVVJDRV9ESVIvaml0IFwK
KyAgICAkJFNPVVJDRV9ESVIvbGxpbnQgXAogICAgICQkU09VUkNFX0RJUi9wYXJzZXIgXAogICAg
ICQkU09VUkNFX0RJUi9wcm9maWxlciBcCiAgICAgJCRTT1VSQ0VfRElSL3J1bnRpbWUgXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwNjA4MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcg
QEAgU09VUkNFUyArPSBcCiAgICAgaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCiAgICAg
aml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgXAogICAgIGppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yLmNwcCBcCisgICAgaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKICAg
ICBqaXQvSklUQXJpdGhtZXRpYy5jcHAgXAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3Bw
IFwKICAgICBqaXQvSklUQ2FsbC5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwNjA4MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMwLDYgKzE3
MzAsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cLi5caml0XEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcSklULmNwcCIKIAkJCQk+CiAJCQk8
L0ZpbGU+CkBAIC0xODE1LDYgKzE4MTksMTQgQEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJ
CTxGaWx0ZXIKKwkJCU5hbWU9ImxsaW50IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXGxsaW50XExMSW50RGF0YS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0
ZXI+CisJCTxGaWx0ZXIKIAkJCU5hbWU9ImludGVycHJldGVyIgogCQkJPgogCQkJPEZpbGUKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMJKHJldmlzaW9uIDEwNjA4MikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmVDb21tb24udnNwcm9wcwkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJ
PFRvb2wKIAkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29y
ZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsu
Li8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL2RmZy87Li4vLi4vaml0LzsuLi8uLi9ydW50aW1lLzsu
Li8uLi9ieXRlY29kZS87Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJvZmls
ZXI7Li4vLi4vYXNzZW1ibGVyLzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7JChX
ZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNE
aXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
aW5jbHVkZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZh
U2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxw
cml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRz
JnF1b3Q7IgorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXCZxdW90Ozsu
Li8uLi87Li4vLi4vQVBJLzsuLi8uLi9wYXJzZXIvOy4uLy4uL2J5dGVjb21waWxlci87Li4vLi4v
ZGZnLzsuLi8uLi9qaXQvOy4uLy4uL2xsaW50LzsuLi8uLi9ydW50aW1lLzsuLi8uLi9ieXRlY29k
ZS87Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJvZmlsZXI7Li4vLi4vYXNz
ZW1ibGVyLzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7JChXZWJLaXRMaWJyYXJp
ZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVc
cHJpdmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZSZxdW90
OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZx
dW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7
OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7IgogCQlQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX19TVERfQyIKIAkJRm9yY2VkSW5jbHVkZUZpbGVzPSJJ
Q1VWZXJzaW9uLmgiCiAJLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxMDYwODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE1IEBACiAJ
b2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJ
MEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0Njgw
QUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdn
cmVnYXRlVGFyZ2V0ICJMTEludCBPZmZzZXRzIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJ
CTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8s
CisJCQkpOworCQkJbmFtZSA9ICJMTEludCBPZmZzZXRzIjsKKwkJCXByb2R1Y3ROYW1lID0gIkRl
cml2ZWQgU291cmNlcyI7CisJCX07CiAJCTY1RkIzRjY2MDlEMTFFOTEwMEY0OURFQiAvKiBEZXJp
dmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CiAJCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gNjVGQjNGNzcwOUQxMUVCRDAwRjQ5REVCIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJEZXJpdmVkIFNvdXJjZXMi
ICovOwpAQCAtMTQsNiArMjMsOSBAQAogCQkJCTY1RkIzRjY1MDlEMTFFOTEwMEY0OURFQiAvKiBH
ZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJNUQzNURFRTEwQzdDMTQwQjAwODY0OEIy
IC8qIEdlbmVyYXRlIERUcmFjZSBoZWFkZXIgKi8sCiAJCQkpOworCQkJZGVwZW5kZW5jaWVzID0g
KAorCQkJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICov
LAorCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJCXByb2R1Y3ROYW1lID0g
IkRlcml2ZWQgU291cmNlcyI7CiAJCX07CkBAIC00OCw2ICs2MCwxMCBAQAogCQkwQkFDOTRBMDEz
Mzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJBQzk0OUUxMzM4NzI4NDAwQ0Yx
MzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkNEODM1NzE0ODU4NDUyMDBFQTIwMDMgLyog
VGVtcG9yYXJ5Q2hhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJGMjhBMjkx
MUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVM
aW1pdHMuY3BwICovOyB9OworCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRy
eXBvaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi87IH07
CisJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NjE0QkNGNDVB
MDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTElu
dFRodW5rcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovOyB9OworCQkw
RjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTUxNEJDRjUwNDAw
ODg1QjRGIC8qIENvZGVUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBODE0
QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhw
cmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTgs
OSArNzQsMTMgQEAKIAkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5r
SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYw
QjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I3MTRCQ0Y4RTEw
MDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJl
c29sdmVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVj
b2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEZDNDU4MTRCRDE1RjEw
MEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21t
b25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE2RDcyNjE0MkMz
OUMwMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3Iu
Y3BwICovOyB9OwogCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJpdmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI2NjE0QkU1
RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlv
bkhhcm5lc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0QxNEJFNzI3
QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29u
dmVudGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyNDJEQTcxM0Yz
QjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAv
KiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NkYxNDczOEYzMTAwMTIxRTRGIC8qIERGR0NvZGVC
bG9ja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NzAxNDczOEYzNTAwMTIx
RTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3Mu
Y3BwICovOyB9OwpAQCAtNzEsNiArOTEsMTkgQEAKIAkJMEY0MzE3MzgxNDZCQUM2OTAwN0UzODkw
IC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4
MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDdGMTRC
QTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTMxNEJB
N0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50
RXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUYxNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZM
QUdTID0gIi1Xbm8tdW51c2VkLXBhcmFtZXRlciI7IH07IH07CisJCTBGNDY4MEE1MTRCQTdGOEQw
MEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2
ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIw
MEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovOyB9OworCQkwRjQ2ODBBODE0
QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBM
TEludEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyog
TExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENCMTRCQkIxNzIw
MEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTElu
dE9mZmxpbmVBc21Db25maWcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnBy
ZXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi87IH07
CisJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDODE0QkJC
MTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAv
KiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi87IH07CisJ
CTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAv
KiBMTEludERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBE
MDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi87IH07CisJCTBG
NDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMTE0QkJDNUY4MDBC
RkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0
cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLzsgfTsKIAkJMEY1
NUYwRjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBB
YnN0cmFjdFBDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYwOENF
MTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM4NSw3ICs0MTgsNyBAQAog
CQk4NkI5OUFFMzExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI5OUFFMTExN0U1NzgxMDBERjVB
OTAgLyogU3RyaW5nQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODZCQjA5QzAxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkUx
MzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwICovOyB9OwogCQk4NkJCMDlDMTEzOEUz
ODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2gu
aCAqLzsgfTsKLQkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBF
RTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgfTsKKwkJODZDMzZFRUEwRUUx
Mjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9B
c3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REQxMUEy
MTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCAqLzsgfTsKIAkJODZDNTY4RTEx
MUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8q
IE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwogCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3RjAg
LyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCAqLzsg
fTsKQEAgLTc1Miw2ICs3ODUsMjAgQEAKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLworCQkwRjQ2ODBCMTE0
QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0g
UEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0
MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJ
CXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyOworCQkJcmVt
b3RlSW5mbyA9ICJMTEludCBPZmZzZXRzIjsKKwkJfTsKKwkJMEY0NjgwQjMxNEJBODIxNDAwQkZF
MjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5l
ckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMw
NyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9i
YWxJRFN0cmluZyA9IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSBK
U0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCX07CiAJCTE0MTIxNEJFMEE0OTE5MEUwMDQ4MDI1
NSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJ
dGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcg
LyogUHJvamVjdCBvYmplY3QgKi87CkBAIC03OTcsNiArODQ0LDE1IEBACiAvKiBFbmQgUEJYQ29u
dGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsKKwkJ
CWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCX07CiAJCTVEQkIxNTExMTMxRDBCMTMw
MDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0gewogCQkJaXNhID0gUEJYQ29weUZp
bGVzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOwpAQCAtODM3LDYgKzg5Mywx
MCBAQAogCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRSZXN0cmljdGlv
blZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCQ0Q4MzU0MTQ4NTg0
MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGVtcG9yYXJ5Q2hhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpemVMaW1pdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEVudHJ5cG9p
bnRzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBv
aW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEVudHJ5cG9pbnRz
Lmg7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludFRodW5rcy5jcHA7IHBhdGgg
PSBsbGludC9MTEludFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
MEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMTEludFRodW5rcy5oOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRG
IC8qIENvZGVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0
RiAvKiBIYW5kbGVySW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5k
bGVySW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBQTE0QkNGNUI5
MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFeHByZXNzaW9uUmFuZ2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04NDcsOSArOTA3LDEzIEBACiAJCTBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBN
ZXRob2RDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0
aG9kQ2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I2
MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHbG9iYWxSZXNvbHZlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50Q2FsbExpbmtJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25T
bG93UGF0aHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uU2xvd1Bh
dGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTZENzI0MTQyQzM5QTIwMENG
Nzg0QSAvKiBCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQml0VmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyMUMyNjYx
NEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKSVREcml2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMy
NzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0
aW9uSGFybmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRpb25I
YXJuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdFMTRCRUFBODAw
MEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVudGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RDE0NzM4RjJFMDAxMjFF
NEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBERkdDb2RlQmxvY2tzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYy
QzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtODYwLDYgKzkyNCwyMCBAQAogCQkwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyog
TGlzdGFibGVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpc3Rh
YmxlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA3RjE0QkE1
NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKSVRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBh
dGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CisJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFeGNlcHRpb25z
LmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFeGNlcHRpb25zLmg7IHBh
dGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEhlbHBlcnMuY3BwOyBwYXRoID0gbGxp
bnQvTExJbnRIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0Njgw
QTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBMTEludEhlbHBlcnMuaDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIg
LyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHBhdGggPSBsbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBD
NTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gTExJbnRDb21tb24uaDsgcGF0aCA9IGxsaW50L0xMSW50Q29tbW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBM
TEludE9mZmxpbmVBc21Db25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHBhdGggPSBsbGludC9MTEludE9mZmxpbmVBc21Db25m
aWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzcxNEJCQjE2OTAwQkZF
MjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHBhdGggPSBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzgx
NEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5oOyBwYXRoID0gbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBD
RTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IExMSW50RGF0YS5jcHA7IHBhdGggPSBsbGludC9MTEludERhdGEuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIg
LyogTExJbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RGF0
YS5oOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUy
NzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFic3RyYWN0UEMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdFBDLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENDMTQ2QkU2MDIwMDA0NzJBOSAvKiBERkdCeXRlQ29k
ZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0J5dGVDb2RlQ2Fj
aGUuaDsgcGF0aCA9IGRmZy9ERkdCeXRlQ29kZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNTc5LDYgKzE2NTcsMTMgQEAKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNl
Y3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwor
CQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9
IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRTBBNDg3OTNDMDA0ODAyNTUgLyogRnJhbWV3b3Jr
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTE2MzcsNiArMTcyMiw3IEBACiAJCQkJMTQxMjExMjAw
QTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYwQTNFOEY5MDAwQkFG
NTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJNjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RS
ZWdFeHAgKi8sCisJCQkJMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0
c0V4dHJhY3RvciAqLywKIAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMTY2Nyw2ICsxNzUzLDcgQEAKIAkJCQlGNUMyOTBFNjAyODRGOThF
MDE4NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5
QjBGMDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcg
LyogY29uZmlnLmggKi8sCisJCQkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICov
LAogCQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIw
RUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBG
MUY2ODEgLyogYnl0ZWNvZGUgKi8sCkBAIC0xNzA1LDYgKzE3OTIsMjggQEAKIAkJCXRhYldpZHRo
ID0gNDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcy
IC8qIGxsaW50ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8sCisJ
CQkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLywKKwkJ
CQkwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovLAorCQkJCTBG
MEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovLAorCQkJCTBGNDY4MENF
MTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovLAorCQkJCTBGNDY4MENGMTRCQkIz
RDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLywKKwkJCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUy
NzIgLyogTExJbnRDb21tb24uaCAqLywKKwkJCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyog
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi8sCisJCQkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcy
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovLAorCQkJCTBGNDY4MEM4MTRCQkIxNjkwMEJG
RTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi8sCisJCQkJMEY0NjgwOUQxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8sCisJCQkJMEY0NjgwOUUxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovLAorCQkJCTBGNDY4MDlGMTRCQTdGODIwMEJG
RTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovLAorCQkJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludEhlbHBlcnMuaCAqLywKKwkJCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gbGxpbnQ7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAy
NTUgLyogdGVzdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtMTczOSw2ICsxODQ4LDggQEAKIAkJMTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY0NjgwRDAx
NEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovLAorCQkJCTBGNDY4
MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8sCiAJCQkJMEY0
NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovLAogCQkJCTBGNDY4
MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEZEODJFMzcx
NDFBQjE0MjAwMTc5Qzk0IC8qIENvbXBhY3RKSVRDb2RlTWFwLmggKi8sCkBAIC0yMTY2LDYgKzIy
NzcsOCBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYyMUMyNzkxNEJFNzI3MzAw
QURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLywKKwkJCQkwRjIxQzI3QTE0QkU3
MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovLAogCQkJCTBGMTVGMTVEMTRCN0E3
M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4
MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjRE
IC8qIEFyZ0xpc3QuaCAqLywKQEAgLTI1MjUsNiArMjYzOCw4IEBACiAJCTk2OUEwNzhGMEVEMUQz
QUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVu
dGlvbnMuaCAqLywKKwkJCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlu
a0luZm8uaCAqLywKIAkJCQkwRjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0
dXMuY3BwICovLAogCQkJCTBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1
cy5oICovLAogCQkJCTBGOTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNw
cCAqLywKQEAgLTMwNzUsNyArMzE5MCwxNiBAQAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3
QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCNDMxMkRCOEE4MTAw
QTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1
RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50
Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyog
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDRDE0QkJC
MTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9p
bnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAv
KiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRG
IC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4
ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDg0LDcg
KzMyMDgsMTEgQEAKIAkJCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExp
bmtJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyog
R2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I5MTRCQ0Y5NUYw
MDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJpdmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhlY3V0
aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRC
IC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdG
MTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjdCMjk0QTE0QzNDRDI5MDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QzE0QzNDRDQzMDA3QzNEQjEgLyogREZHQnl0
ZUNvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTAzLDYgKzMyMzEsMjQgQEAKIC8qIEVu
ZCBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWE5hdGl2ZVRh
cmdldCBzZWN0aW9uICovCisJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9m
ZnNldHNFeHRyYWN0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRy
YWN0b3IiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwOEIxNEJBN0U1RTAwQkZF
MjcyIC8qIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1l
d29ya3MgKi8sCisJCQkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLywK
KwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJ
CQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJ
CSk7CisJCQluYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdE5hbWUg
PSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMEY0Njgw
OEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXBy
b2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CiAJCTE0MTIx
MTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovID0gewogCQkJaXNhID0gUEJYTmF0aXZl
VGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MTIxMTM5MEE0ODc5ODQwMDQ4
MDI1NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWlu
aWRvbSIgKi87CkBAIC0zMjI5LDExICszMzc1LDI5IEBACiAJCQkJMTRCRDU5QkUwQTNFOEY5MDAw
QkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJOTMyRjVCREEwODIyQTFDNzAwNzM2OTc1IC8qIGpz
YyAqLywKIAkJCQk2NTExMjJGNzE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJ
CQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICov
LAorCQkJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovLAogCQkJ
KTsKIAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU2hl
bGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcy
IC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2Ny
aXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxl
cyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL2xsaW50L0xv
d0xldmVsQXNzZW1ibGVyLmFzbSIsCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBEZXJpdmVk
IFNvdXJjZXMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElS
KS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oIiwKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7
CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTElu
dE9mZnNldHMvXCJcblxuL3Vzci9iaW4vZW52IHJ1YnkgXCIke1NSQ1JPT1R9L29mZmxpbmVhc20v
Z2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYlwiIFwiJHtTUkNST09UfS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbVwiIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9M
TEludERlc2lyZWRPZmZzZXRzLmhcIlxuIjsKKwkJfTsKIAkJMzcxM0YwMTQxNDI5MDUyNDAwMzYz
ODdGIC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzICov
ID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKQEAgLTMzMzksNyArMzUwMyw3IEBACiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlzaGVsbFBhdGggPSAvYmluL3No
OwotCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNf
RElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7
U1JDUk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2YVNj
cmlwdENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJcblxubWFrZSAt
LW5vLWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
XCIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNwdWBcbiI7CisJCQlzaGVsbFNjcmlwdCA9
ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9kb2NzXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlXCJcblxuL2Jpbi9sbiAtc2ZoIFwiJHtTUkNST09UfVwiIEphdmFTY3Jp
cHRDb3JlXG5leHBvcnQgSmF2YVNjcmlwdENvcmU9XCJKYXZhU2NyaXB0Q29yZVwiXG5leHBvcnQg
QlVJTFRfUFJPRFVDVFNfRElSPVwiLi4vLi5cIlxuXG5tYWtlIC0tbm8tYnVpbHRpbi1ydWxlcyAt
ZiBcIkphdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2VcIiAtaiBgL3Vzci9zYmluL3N5
c2N0bCAtbiBody5uY3B1YFxuXG4vdXNyL2Jpbi9lbnYgcnVieSBKYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2FzbS5yYiBKYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bSAke0JVSUxUX1BST0RVQ1RTX0RJUn0vSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIExMSW50QXNz
ZW1ibHkuaFxuIjsKIAkJfTsKIAkJOTMxOTU4NkIwOUQ5RjkxQTAwQTU2RkQ0IC8qIENoZWNrIEZv
ciBHbG9iYWwgSW5pdGlhbGl6ZXJzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWls
ZFBoYXNlOwpAQCAtMzM3NCw2ICszNTM4LDE0IEBACiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLworCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLyA9IHsKKwkJCWlz
YSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFEMEE0ODc5M0MwMDQ4
MDI1NSAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzYzMSw3ICszODAzLDE0IEBACiAJ
CQkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJ
bnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3
MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwODMxNEJB
NTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0
NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1
cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYg
LyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QzE0QkNG
NDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgz
QjAxNEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjBCODNCNDE0QkNGODYwMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUY2OUU4NkMzMTRDNkU1NTEwMDJDMkM2MiAvKiBOdW1iZXJPZkNvcmVz
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzY1NCw2ICszODMzLDE2IEBACiAvKiBFbmQgUEJYU291
cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5
IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0g
MEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi87CisJCQl0YXJnZXRQ
cm94eSA9IDBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki87CisJCX07CisJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRl
bmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBG
NDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJ
CQl0YXJnZXRQcm94eSA9IDBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJ
dGVtUHJveHkgKi87CisJCX07CiAJCTE0MTIxNEJGMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhUYXJn
ZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJCXRh
cmdldCA9IDE0MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovOwpAQCAtMzY4Nyw2
ICszODc2LDE0OCBAQAogLyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTBGNDY4MDk2MTRCQTdF
NUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBO
TzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhB
U0VfU1RSSVAgPSBOTzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJ
CUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05T
ID0gWUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9D
RVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVk
KSIsCisJCQkJKTsKKwkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5POworCQkJCUdD
Q19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0Nf
V0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01J
U1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9
IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9T
RUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BB
VEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJ
CU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05B
TUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRI
UyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NF
QVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwOTcx
NEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BB
VEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlD
T1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJk
d2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJ
CQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBj
b20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMy
X0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZ
UEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdD
Q19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1th
cmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19E
SVIpL0xMSW50T2Zmc2V0cyQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJH
RVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNI
X1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFE
RVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBG
NDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJD
SF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQp
IjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZP
Uk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0g
Z251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZF
UlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJO
XzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lO
R19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVT
OworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJD
SF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
IiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJP
RFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJ
CVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
TExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQ
cm9maWxpbmc7CisJCX07CisJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9u
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQo
QVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJ
CQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0Nf
Q19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJ
T05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNs
YW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJ
CUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9B
Qk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZ
RVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJ
CWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQki
JChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9U
QVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJ
U0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3Ug
JChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUQxNEJBN0ZE
OTAwQkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJj
ZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODBBRTE0QkE3
RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBT
b3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODBB
RjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJE
ZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsK
KwkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVD
VF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVj
dGlvbjsKKwkJfTsKIAkJMTQxMjExM0EwQTQ4Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovID0gewog
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewpAQCAt
MzkyOCw2ICs0MjU5LDI4IEBACiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOUEx
NEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZl
VGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovID0geworCQkJaXNhID0gWENDb25m
aWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwOTYx
NEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3
MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxp
bmcgKi8sCisJCQkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJ
CQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUMxNEJBN0ZEOTAw
QkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0
ICJMTEludCBPZmZzZXRzIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJ
CQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAv
KiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLywK
KwkJCQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4
MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRD
b25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9
IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi8gPSB7CiAJ
CQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShy
ZXZpc2lvbiAxMDYwODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2RlZmluZSBHTE9CQUxf
VEhVTktfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0x
KSkKICNkZWZpbmUgUkVHRVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KC0yKSkKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+CisjaW5j
bHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVDb252ZW50aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgQnl0ZWNvZGVDb252ZW50aW9uc19oCisjZGVmaW5lIEJ5dGVjb2RlQ29u
dmVudGlvbnNfaAorCisvLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0
aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6Cisv
LyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBD
YWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lz
dGVyRmlsZS5oLgorLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGlj
ZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFy
aWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgorLy8gICAgICAweDQwMDAwMDAwLTB4
N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmll
cyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgorc3RhdGljIGNvbnN0IGlu
dCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7CisKKyNlbmRpZiAvLyBC
eXRlY29kZUNvbnZlbnRpb25zX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDYwODIpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNywxNyArMjcsNDAgQEAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
RnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFN
KGJ5dGVjb2RlSW5kZXgpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNv
ZGVJbmRleDsKKyAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaW5zdHJ1Y3Rp
b25bNF0udS5jYWxsTGlua0luZm87CisgICAgCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNh
bGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCksIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0
dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKKyNlbmRpZgorfQorCiBDYWxsTGlua1N0YXR1
cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2sp
OwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklUKSAmJiBF
TkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKAotICAgICAg
ICBwcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5D
YWxsZWUuZ2V0KCksCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKGJ5
dGVjb2RlSW5kZXgpKTsKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mQ2FsbExpbmtJ
bmZvcygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBi
eXRlY29kZUluZGV4KTsKKyAgICAKKyAgICBpZiAocHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xv
d0Nhc2UoYnl0ZWNvZGVJbmRleCkpCisgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygwLCB0
cnVlKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBwcm9maWxlZEJsb2NrLT5nZXRD
YWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CisgICAgaWYg
KCF0YXJnZXQpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ss
IGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQs
IGZhbHNlKTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKICNl
bmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
U3RhdHVzLmgJKHJldmlzaW9uIDEwNjA4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNSArNDcsMTcgQEAg
cHVibGljOgogICAgIAogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKENvZGVC
bG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBj
b25zdCB7IHJldHVybiAhIW1fY2FsbFRhcmdldDsgfQorICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7
IHJldHVybiAhIW1fY2FsbFRhcmdldCB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCi0g
ICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsVGFyZ2V0OyB9CisgICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQogICAgIAogICAgIGJv
b2wgY291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvdWxkVGFrZVNsb3dQYXRo
OyB9CiAgICAgCiAgICAgSlNGdW5jdGlvbiogY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbFRhcmdldDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMg
Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAg
ICAKICAgICBKU0Z1bmN0aW9uKiBtX2NhbGxUYXJnZXQ7CiAgICAgYm9vbCBtX2NvdWxkVGFrZVNs
b3dQYXRoOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCShyZXZpc2lvbiAxMDYwODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNp
bmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgi
CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTU5LDggKzYwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiB1
c2luZyBuYW1lc3BhY2UgREZHOwogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVO
QUJMRShPUENPREVfU0FNUExJTkcpCi0KIHN0YXRpYyBVU3RyaW5nIGVzY2FwZVF1b3Rlcyhjb25z
dCBVU3RyaW5nJiBzdHIpCiB7CiAgICAgVVN0cmluZyByZXN1bHQgPSBzdHI7CkBAIC0zNTgsMTAg
KzM1NywxMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bjb2Rl
TGVuZ3Roc1tleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtp
XS51Lm9wY29kZSldKQogICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7CiAKLSAgICBwcmludGYo
IiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVk
IGNhbGxlZSByZWdpc3RlcihzKVxuXG4iLAorICAgIHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rpb25z
OyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMp
OyAlZCB2YXJpYWJsZShzKVxuXG4iLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
PihpbnN0cnVjdGlvbkNvdW50KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4o
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSksCi0gICAgICAgIHRo
aXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgICAgICB0aGlz
LCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX251bVZhcnMpOwogCiAg
ICAgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4gPSBpbnN0cnVjdGlv
bnMoKS5iZWdpbigpOwogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IGluc3RydWN0aW9ucygpLmVuZCgpOwpAQCAtODk4LDYgKzg5NywxNCBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5SWRP
cChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsK
KyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQdXRC
eUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTI5MSw4ICsxMjk4LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhl
Y1N0YXRlKiBleGVjLCBjbwogICAgIH0KIH0KIAotI2VuZGlmIC8vICFkZWZpbmVkKE5ERUJVRykg
fHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNU
SUNTCiBzdGF0aWMgSGFzaFNldDxDb2RlQmxvY2sqPiBsaXZlQ29kZUJsb2NrU2V0OwogI2VuZGlm
CkBAIC0xNDU5LDYgKzE0NjQsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxv
Y2tUYWcsCiB7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1QYXJhbWV0ZXJzKCkpOwog
ICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogICAgIAog
ICAgIGlmIChvdGhlci5tX3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNl
c3NhcnkoKTsKQEAgLTE1MDcsNiArMTUxMyw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlw
dEV4ZWN1dGFibGUqIG8KICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIAogICAgIG9wdGltaXpl
QWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogCiAjaWYgRFVNUF9DT0RFX0JM
T0NLX1NUQVRJU1RJQ1MKICAgICBsaXZlQ29kZUJsb2NrU2V0LmFkZCh0aGlzKTsKQEAgLTE1MjQs
NyArMTUzMSwxMSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2lmIEVOQUJMRShWRVJCT1NF
X1ZBTFVFX1BST0ZJTEUpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNlbmRpZgotICAgIAor
CisjaWYgRU5BQkxFKExMSU5UKSAgICAKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMu
YmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWlu
Z0xMSW50Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQog
I2lmIEVOQUJMRShKSVQpCiAgICAgLy8gV2UgbWF5IGJlIGRlc3Ryb3llZCBiZWZvcmUgYW55IENv
ZGVCbG9ja3MgdGhhdCByZWZlciB0byB1cyBhcmUgZGVzdHJveWVkLgogICAgIC8vIENvbnNpZGVy
IHRoYXQgdHdvIENvZGVCbG9ja3MgYmVjb21lIHVucmVhY2hhYmxlIGF0IHRoZSBzYW1lIHRpbWUu
IFRoZXJlCkBAIC0xNzM2LDggKzE3NDcsNTkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5j
b25kaXRpb25hbGx5KAogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5saW5r
aW5nID0gZmFsc2U7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAg
CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xv
YmFsRGF0YS0+aW50ZXJwcmV0ZXI7CisgICAgLy8gaW50ZXJwcmV0ZXItPmVuYWJsZWQoKSByZXR1
cm5zIHRydWUgaWYgdGhlIG9sZCBDKysgaW50ZXJwcmV0ZXIgaXMgZW5hYmxlZC4gSWYgdGhhdCdz
IGVuYWJsZWQKKyAgICAvLyB0aGVuIHdlJ3JlIG5vdCB1c2luZyBMTEludC4KKyAgICBpZiAoIWlu
dGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgewor
ICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygp
W21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgc3dpdGNoIChp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpKSB7Cisg
ICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkOgorICAgICAgICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUg
fHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlv
bls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9u
WzVdLnUub3BlcmFuZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAgICAgIGlmIChIZWFwOjpp
c01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAg
ICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUu
Z2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0
aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigp
OworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmNsZWFyKCk7
CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5jbGVh
cigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlID0gaW50ZXJw
cmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBzaXplID0g
bV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlv
bnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgQVNTRVJU
KGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0g
b3BfcmVzb2x2ZV9nbG9iYWwKKyAgICAgICAgICAgICAgICAgICB8fCBpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFs
X2R5bmFtaWMpOworICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVy
ZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQoKSkp
CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlvblsz
XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5v
cGVyYW5kID0gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChtX2xs
aW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpICYmICFIZWFwOjppc01hcmtlZChtX2xsaW50
Q2FsbExpbmtJbmZvc1tpXS5jYWxsZWUuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcgTExJ
bnQgY2FsbCBmcm9tICVwLlxuIiwgdGhpcyk7CisgICAgICAgICAgICAgICAgbV9sbGludENhbGxM
aW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoISFt
X2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQo
bV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQorICAgICAgICAg
ICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlLmNsZWFyKCk7Cisg
ICAgICAgIH0KKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCiAjaWYgRU5BQkxFKERG
R19KSVQpCiAgICAgLy8gQ2hlY2sgaWYgd2UncmUgbm90IGxpdmUuIElmIHdlIGFyZSwgdGhlbiBq
ZXR0aXNvbi4KICAgICBpZiAoIShzaG91bGRJbW1lZGlhdGVseUFzc3VtZUxpdmVuZXNzRHVyaW5n
U2NhbigpIHx8IG1fZGZnRGF0YS0+bGl2ZW5lc3NIYXNCZWVuUHJvdmVkKSkgewpAQCAtMTg1OCwx
MCArMTkyMCwxMiBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVjbHMuc2l6ZSgpOyArK2kpCiAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9uRGVjbHNbaV0pOwogI2lmIEVOQUJMRShJ
TlRFUlBSRVRFUikKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICB2aXNpdFN0cnVj
dHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bnNbaV1dKTsKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rp
b25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0dXJl
cyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ld
XSk7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPmVuYWJsZWQoKSkgeworICAg
ICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXpl
KCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZp
c2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7
CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMu
c2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHZpc2l0U3RydWN0dXJl
cyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ld
XSk7CisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTIwNzAsNiArMjEz
NCwxMiBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogewogICAgIGlmICghIW1fYWx0
ZXJuYXRpdmUpCiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPnVubGlua0NhbGxzKCk7CisjaWYgRU5B
QkxFKExMSU5UKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sbGludENhbGxMaW5rSW5m
b3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlz
TGlua2VkKCkpCisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsK
KyAgICB9CisjZW5kaWYKICAgICBpZiAoIShtX2NhbGxMaW5rSW5mb3Muc2l6ZSgpIHx8IG1fbWV0
aG9kQ2FsbExpbmtJbmZvcy5zaXplKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2ds
b2JhbERhdGEtPmNhblVzZUpJVCgpKQpAQCAtMjA4NCwxMCArMjE1NCwzOSBAQCB2b2lkIENvZGVC
bG9jazo6dW5saW5rQ2FsbHMoKQogCiB2b2lkIENvZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxs
cygpCiB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIHdoaWxlIChtX2luY29taW5nTExJbnRDYWxs
cy5iZWdpbigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQorICAgICAgICBtX2luY29t
aW5nTExJbnRDYWxscy5iZWdpbigpLT51bmxpbmsoKTsKKyNlbmRpZgorICAgIGlmIChtX2luY29t
aW5nQ2FsbHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAgICAgUmVwYXRjaEJ1ZmZlciBy
ZXBhdGNoQnVmZmVyKHRoaXMpOwogICAgIHdoaWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAh
PSBtX2luY29taW5nQ2FsbHMuZW5kKCkpCiAgICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigp
LT51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CiB9CisKK3Vuc2lnbmVkIENv
ZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChyZXR1cm5BZGRy
ZXNzLnZhbHVlKCkgPj0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfYmVnaW4pCisgICAgICAg
ICYmIHJldHVybkFkZHJlc3MudmFsdWUoKSA8PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9l
bmQpKSB7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSk7CisgICAgICAgIEFTU0VS
VChleGVjLT5jb2RlQmxvY2soKSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6Omlz
QmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOworICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24gPSBleGVjLT5jdXJyZW50VlBDKCk7CisgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbik7
CisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldChpbnN0cnVjdGlvbik7CisgICAgfQorI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisjZW5kaWYKKyAgICBpZiAoIW1fcmFyZURhdGEp
CisgICAgICAgIHJldHVybiAxOworICAgIFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29k
ZU9mZnNldD4mIGNhbGxJbmRpY2VzID0gbV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0
b3I7CisgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCisgICAgICAgIHJldHVybiAxOworICAg
IHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVu
c2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5k
aWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkp
KS0+Ynl0ZWNvZGVPZmZzZXQ7Cit9CiAjZW5kaWYKIAogdm9pZCBDb2RlQmxvY2s6OmNsZWFyRXZh
bENhY2hlKCkKQEAgLTIxODMsMjQgKzIyODIsNDUgQEAgYm9vbCBGdW5jdGlvbkNvZGVCbG9jazo6
Y2FuQ29tcGlsZVdpdGhERgogCiB2b2lkIFByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsK
LSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBB
U1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VS
VCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRh
YmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERh
dGEoKSk7CiB9CiAKIHZvaWQgRXZhbENvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VS
VChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRD
b2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0g
cmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4
ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAog
dm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRU
eXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09w
dGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1l
bnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRh
YmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGVGb3IoKmdsb2JhbERhdGEoKSwgbV9pc0NvbnN0
cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKIH0KKwordm9pZCBQcm9n
cmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7
CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsK
KyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZ2xv
YmFsRGF0YSk7Cit9CisKK3ZvaWQgRXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29k
ZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7
CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxl
KCkpLT5qaXRDb21waWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEZ1bmN0aW9uQ29kZUJsb2Nr
OjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJU
KGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQo
dGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25F
eGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlRm9yKGdsb2JhbERhdGEs
IG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7Cit9CiAj
ZW5kaWYKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTIzMDMsNiArMjQyMywxOCBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsZXMoKQogfQogI2VuZGlmCiAKK3ZvaWQg
Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpCit7CisjaWYg
IUVOQUJMRShPUENPREVfU0FNUExJTkcpICYmICFFTkFCTEUoTExJTlQpCisgICAgaWYgKEJ5dGVj
b2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKKyAgICAgICAgcmV0dXJuOworICAg
IGlmICghIWFsdGVybmF0aXZlKCkpCisgICAgICAgIGRpc2NhcmRCeXRlY29kZSgpOworICAgIGVs
c2UKKyAgICAgICAgZGlzY2FyZEJ5dGVjb2RlTGF0ZXIoKTsKKyNlbmRpZgorfQorCiAjaWZuZGVm
IE5ERUJVRwogYm9vbCBDb2RlQmxvY2s6OnVzZXNPcGNvZGUoT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZp
c2lvbiAxMDYwODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpZm5kZWYgQ29kZUJsb2NrX2gK
ICNkZWZpbmUgQ29kZUJsb2NrX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIK
ICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJDYWxsUmV0dXJuT2Zmc2V0VG9C
eXRlY29kZU9mZnNldC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKQEAgLTUwLDYgKzUxLDcg
QEAKICNpbmNsdWRlICJKSVRXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dC5oIgogI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJbmZv
LmgiCiAjaW5jbHVkZSAiTGluZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUg
IlByZWRpY3Rpb25UcmFja2VyLmgiCkBAIC02NSwxNiArNjcsMTEgQEAKICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKIAotLy8gUmVnaXN0ZXIg
bnVtYmVycyB1c2VkIGluIGJ5dGVjb2RlIG9wZXJhdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbWVhbmlu
ZyBhY2NvcmRpbmcgdG8gdGhlaXIgcmFuZ2VzOgotLy8gICAgICAweDgwMDAwMDAwLTB4RkZGRkZG
RkYgIE5lZ2F0aXZlIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGVudHJp
ZXMgaW4gdGhlIGNhbGwgZnJhbWUsIHNlZSBSZWdpc3RlckZpbGUuaC4KLS8vICAgICAgMHgwMDAw
MDAwMC0weDNGRkZGRkZGICBGb3J3YXJkcyBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2lu
dGVyIGFyZSBsb2NhbCB2YXJzIGFuZCB0ZW1wb3JhcmllcyB3aXRoIHRoZSBmdW5jdGlvbidzIGNh
bGxmcmFtZS4KLS8vICAgICAgMHg0MDAwMDAwMC0weDdGRkZGRkZGICBQb3NpdGl2ZSBpbmRpY2Vz
IGZyb20gMHg0MDAwMDAwMCBzcGVjaWZ5IGVudHJpZXMgaW4gdGhlIGNvbnN0YW50IHBvb2wgb24g
dGhlIENvZGVCbG9jay4KLXN0YXRpYyBjb25zdCBpbnQgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXggPSAweDQwMDAwMDAwOwotCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEV4ZWNTdGF0
ZTsKICAgICBjbGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBpbmxpbmUgaW50IHVubW9kaWZpZWRB
cmd1bWVudHNSZWdpc3RlcihpbnQgYXJndW1lbnRzUmVnaXN0ZXIpIHsgcmV0dXJuIGFyZ3VtZW50
c1JlZ2lzdGVyIC0gMTsgfQogCkBAIC04Myw2ICs4MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBVbmNvbmRpdGlvbmFsRmluYWxpemVyLCBwdWJsaWMg
V2Vha1JlZmVyZW5jZUhhcnZlc3RlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBDb3B5UGFyc2VkQmxv
Y2tUYWcgeyBDb3B5UGFyc2VkQmxvY2sgfTsKICAgICBwcm90ZWN0ZWQ6CkBAIC0xMjMsNyArMTIx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB3aGlsZSAocmVzdWx0LT5hbHRlcm5h
dGl2ZSgpKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC0+YWx0ZXJuYXRpdmUoKTsK
ICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC0+
Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VS
VChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogI2VuZGlmCkBAIC0xMzQsMTEgKzEzMiw5
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNz
KCk7CiAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRV9PUENPREVfU0FNUExJTkcKICAg
ICAgICAgdm9pZCBkdW1wKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50U3Ry
dWN0dXJlcyhjb25zdCBJbnN0cnVjdGlvbiopIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50U3Ry
dWN0dXJlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQp
IGNvbnN0OwotI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJl
dHVybiBtX2lzU3RyaWN0TW9kZTsgfQogCkBAIC0xOTQsMTUgKzE5MCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgcmV0dXJuICooYmluYXJ5U2VhcmNoPE1ldGhvZENhbGxMaW5rSW5m
bywgdW5zaWduZWQsIGdldE1ldGhvZENhbGxMaW5rSW5mb0J5dGVjb2RlSW5kZXg+KG1fbWV0aG9k
Q2FsbExpbmtJbmZvcy5iZWdpbigpLCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpLCBieXRl
Y29kZUluZGV4KSk7CiAgICAgICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9yYXJlRGF0YSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAg
IFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0g
bV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7Ci0gICAgICAgICAgICBpZiAoIWNh
bGxJbmRpY2VzLnNpemUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAg
IHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVu
c2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5k
aWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkp
KS0+Ynl0ZWNvZGVPZmZzZXQ7Ci0gICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQoRXhlY1N0YXRlKiwgUmV0dXJuQWRkcmVzc1B0cik7CiAKICAgICAgICAgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXRGb3JDYWxsQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAgewpA
QCAtMjIzLDExICsyMTEsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAg
ICAgIG1faW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nKTsKICAgICAgICAgfQorI2lmIEVOQUJM
RShMTElOVCkKKyAgICAgICAgdm9pZCBsaW5rSW5jb21pbmdDYWxsKExMSW50Q2FsbExpbmtJbmZv
KiBpbmNvbWluZykKKyAgICAgICAgeworICAgICAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMu
cHVzaChpbmNvbWluZyk7CisgICAgICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAgICAg
ICAgIAogICAgICAgICB2b2lkIHVubGlua0luY29taW5nQ2FsbHMoKTsKLSNlbmRpZgorI2VuZGlm
IC8vIEVOQUJMRShKSVQpCiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJ
VCkgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICB2b2lkIHNldEpJVENvZGVNYXAoUGFzc093blB0
cjxDb21wYWN0SklUQ29kZU1hcD4gaml0Q29kZU1hcCkKICAgICAgICAgewogICAgICAgICAgICAg
bV9qaXRDb2RlTWFwID0gaml0Q29kZU1hcDsKQEAgLTIzNiw3ICsyMzAsOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG1faml0Q29kZU1hcC5nZXQoKTsK
ICAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIAorI2lmIEVOQUJMRShERkdfSklUKQogICAgICAg
ICB2b2lkIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmICghIW1fZGZnRGF0YSkKQEAgLTMzNSwxMiArMzMxLDExIEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJlc3MpCiAgICAgICAg
IHsKKyAgICAgICAgICAgIEFTU0VSVChyZXR1cm5BZGRyZXNzID49IGluc3RydWN0aW9ucygpLmJl
Z2luKCkgJiYgcmV0dXJuQWRkcmVzcyA8IGluc3RydWN0aW9ucygpLmVuZCgpKTsKICAgICAgICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnN0cnVjdGlvbio+KHJldHVybkFkZHJlc3MpIC0gaW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICAgICAgfQotI2VuZGlmCiAKICAgICAgICAgdm9pZCBz
ZXRJc051bWVyaWNDb21wYXJlRnVuY3Rpb24oYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24p
IHsgbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb24gPSBpc051bWVyaWNDb21wYXJlRnVuY3Rpb247
IH0KICAgICAgICAgYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24oKSB7IHJldHVybiBtX2lz
TnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQpAQCAtMzU0LDE3ICszNDksOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgbV9zaG91bGREaXNjYXJkQnl0ZWNvZGUgPSB0
cnVlOwogICAgICAgICB9Ci0gICAgICAgIHZvaWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bw
b3J0dW5pdHkoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoISFhbHRlcm5hdGl2ZSgpKQot
ICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZSgpOwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZUxhdGVyKCk7Ci0gICAgICAgIH0KKyAgICAgICAg
dm9pZCBoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAgICAgICAKLSNp
Zm5kZWYgTkRFQlVHCiAgICAgICAgIGJvb2wgdXNlc09wY29kZShPcGNvZGVJRCk7Ci0jZW5kaWYK
IAogICAgICAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50KCkgeyByZXR1cm4gbV9pbnN0cnVj
dGlvbkNvdW50OyB9CiAgICAgICAgIHZvaWQgc2V0SW5zdHJ1Y3Rpb25Db3VudCh1bnNpZ25lZCBp
bnN0cnVjdGlvbkNvdW50KSB7IG1faW5zdHJ1Y3Rpb25Db3VudCA9IGluc3RydWN0aW9uQ291bnQ7
IH0KQEAgLTM4NywxNyArMzc0LDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeGVjdXRh
YmxlTWVtb3J5SGFuZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgeyByZXR1cm4gZ2V0SklUQ29kZSgp
LmdldEV4ZWN1dGFibGVNZW1vcnkoKTsgfQogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21w
aWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKikgPSAwOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgamV0dGlzb24oKSA9IDA7CisgICAgICAgIGJvb2wgaml0Q29tcGlsZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChnZXRKSVRU
eXBlKCkgIT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykgeworICAgICAgICAgICAgICAgIEFT
U0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGppdENvbXBpbGVJ
bXBsKGdsb2JhbERhdGEpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAg
ICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgPSAwOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKSA9IDA7CiAgICAgICAgIGJvb2wgaGFzT3B0aW1p
emVkUmVwbGFjZW1lbnQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlw
ZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2Rl
Ojppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIGJvb2wgcmVzdWx0
ID0gcmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID4gZ2V0SklUVHlwZSgpOwogI2lmICFBU1NF
UlRfRElTQUJMRUQKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAgQVNT
RVJUKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwogICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmdl
dEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgQVNT
RVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSkp
OwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpID09IHRoaXMpOwogICAgICAg
ICAgICAgfQogI2VuZGlmCkBAIC00NTYsMTggKzQ1MiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICB2b2lkIGNsZWFyRXZhbENhY2hlKCk7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIp
CiAgICAgICAgIHZvaWQgYWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbih1bnNpZ25lZCBwcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZ2xv
YmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CisgICAgICAgICAg
ICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbih1bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBt
X2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlv
bik7CisgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb25BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0
KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBhZGRMTElu
dENhbGxMaW5rSW5mbygpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0lu
Zm9zLmFwcGVuZChMTEludENhbGxMaW5rSW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiAmbV9s
bGludENhbGxMaW5rSW5mb3MubGFzdCgpOworICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUo
SklUKQogICAgICAgICB2b2lkIHNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKHNpemVfdCBz
aXplKSB7IG1fc3RydWN0dXJlU3R1YkluZm9zLmdyb3coc2l6ZSk7IH0KQEAgLTQ3Niw4ICs0NzUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbmZv
KHVuc2lnbmVkIGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAg
ICAgaWYgKG1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9i
YWxSZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbikpOworICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2Jh
bFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOwogICAgICAgICB9CiAgICAg
ICAgIEdsb2JhbFJlc29sdmVJbmZvJiBnbG9iYWxSZXNvbHZlSW5mbyhpbnQgaW5kZXgpIHsgcmV0
dXJuIG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2luZGV4XTsgfQogICAgICAgICBib29sIGhhc0dsb2Jh
bFJlc29sdmVJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CkBA
IC00ODgsNiArNDg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBhZGRNZXRo
b2RDYWxsTGlua0luZm9zKHVuc2lnbmVkIG4pIHsgQVNTRVJUKG1fZ2xvYmFsRGF0YS0+Y2FuVXNl
SklUKCkpOyBtX21ldGhvZENhbGxMaW5rSW5mb3MuZ3JvdyhuKTsgfQogICAgICAgICBNZXRob2RD
YWxsTGlua0luZm8mIG1ldGhvZENhbGxMaW5rSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJuIG1fbWV0
aG9kQ2FsbExpbmtJbmZvc1tpbmRleF07IH0KKyAgICAgICAgc2l6ZV90IG51bWJlck9mTWV0aG9k
Q2FsbExpbmtJbmZvcygpIHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCk7IH0K
ICNlbmRpZgogICAgICAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC01MjgsNiAr
NTI3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJvZmlsZSA9PSByZXN1bHQp
OwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQorICAgICAgICBQcmVkaWN0
ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNv
ZGVPZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZVByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigp
OworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCB0b3RhbE51bWJlck9mVmFs
dWVQcm9maWxlcygpCiAgICAgICAgIHsKQEAgLTU1NCwxMiArNTU3LDE2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTbG93Q2FzZShpbnQgYnl0
ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2Fz
ZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
dW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29k
ZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRpb25z
OjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+
KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VT
bG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBjb3Vs
ZFRha2VTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJl
dHVybiB2YWx1ZSA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBz
dGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRp
b25zOjpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQpAQCAtNTc4LDEyICs1
ODUsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRv
VGFrZVNwZWNpYWxGYXN0Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQg
PSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQp
LT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gc3BlY2lhbEZhc3RDYXNlQ291bnQgPj0g
T3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8
ZG91YmxlPihzcGVjaWFsRmFzdENhc2VDb3VudCkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0g
T3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKGludCBieXRlY29k
ZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJv
ZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNp
Z25lZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFz
dENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRl
Y29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gc2xv
d0Nhc2VDb3VudCAtIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNTkyLDYgKzYwMyw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VBbnlTbG93
Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVt
YmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5z
aWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNp
Z25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgKyBzcGVjaWFsRmFzdENhc2VDb3VudDsKQEAgLTY4
OSw3ICs3MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgYWRk
RnJlcXVlbnRFeGl0U2l0ZShjb25zdCBERkc6OkZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxp
bmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJ
VFR5cGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIG1fZXhpdFByb2ZpbGUuYWRkKHNpdGUpOwog
ICAgICAgICB9CiAKQEAgLTc5NCw2ICs4MDcsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHZvaWQgY29weVBvc3RQYXJzZURhdGFGcm9tKENvZGVCbG9jayogYWx0ZXJuYXRpdmUpOwogICAg
ICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbUFsdGVybmF0aXZlKCk7CiAgICAgICAgIAor
ICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gSklUdGluZyBraWNrcyBp
biwgaW4gYSBtaXhlZCBtb2RlCisgICAgICAgIC8vIGV4ZWN1dGlvbiB3b3JsZC4KKyAgICAgICAg
CisgICAgICAgIHZvaWQgZG9udEpJVEFueXRpbWVTb29uKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yRG9udEpJVEFueXRpbWVTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lk
IGppdEFmdGVyV2FybVVwKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVD
b3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0U29vbigpCisgICAgICAgIHsK
KyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvckpJVFNvb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludDMy
X3QgbGxpbnRFeGVjdXRlQ291bnRlcigpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAg
IC8vIEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiB0aWVyZWQgY29tcGlsYXRpb24ga2lj
a3MgaW4uIFRoaXMKICAgICAgICAgLy8gY29udHJvbHMgYm90aCB3aGVuIHRoZSBvcHRpbWl6aW5n
IGNvbXBpbGVyIGlzIGludm9rZWQgYW5kIHdoZW4gT1NSCiAgICAgICAgIC8vIGVudHJ5IGhhcHBl
bnMuIFR3byB0cmlnZ2VycyBleGlzdDogdGhlIGxvb3AgdHJpZ2dlciBhbmQgdGhlIHJldHVybgpA
QCAtOTg2LDYgKzEwMjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3Nob3Vs
ZERpc2NhcmRCeXRlY29kZTsKIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB2b2lk
IGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCk7CiAgICAgICAgIApAQCAtOTk4LDcgKzEwMzUsNiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCB0YWxseUZyZXF1ZW50RXhpdFNpdGVzKCkg
eyB9CiAjZW5kaWYKICAgICAgICAgCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BD
T0RFX1NBTVBMSU5HKQogICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKiwgY29uc3QgVmVjdG9y
PEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImIGJlZ2luLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+
Ojpjb25zdF9pdGVyYXRvciYpIGNvbnN0OwogCiAgICAgICAgIENTdHJpbmcgcmVnaXN0ZXJOYW1l
KEV4ZWNTdGF0ZSosIGludCByKSBjb25zdDsKQEAgLTEwMDgsNyArMTA0NCw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIHByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2Nh
dGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBv
cCkgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRDYWxsT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0
aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9w
KSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFB1dEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9j
YXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciog
b3ApIGNvbnN0OwotI2VuZGlmCiAgICAgICAgIHZvaWQgdmlzaXRTdHJ1Y3R1cmVzKFNsb3RWaXNp
dG9yJiwgSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3Q7CiAgICAgICAgIAogI2lmIEVOQUJMRShERkdf
SklUKQpAQCAtMTA2OSw5ICsxMTA0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQ
dHI8U291cmNlUHJvdmlkZXI+IG1fc291cmNlOwogICAgICAgICB1bnNpZ25lZCBtX3NvdXJjZU9m
ZnNldDsKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgVmVjdG9yPHVuc2lnbmVk
PiBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zOwogICAgICAgICBWZWN0b3I8dW5zaWduZWQ+
IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uczsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAg
IFNlZ21lbnRlZFZlY3RvcjxMTEludENhbGxMaW5rSW5mbywgOD4gbV9sbGludENhbGxMaW5rSW5m
b3M7CisgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxMTEludENhbGxMaW5rSW5mbywgQmFzaWNS
YXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0xMSW50Q2FsbHM7
CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBWZWN0b3I8U3RydWN0dXJlU3R1Yklu
Zm8+IG1fc3RydWN0dXJlU3R1YkluZm9zOwpAQCAtMTA4Miw5ICsxMTE5LDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlV2l0aEFyaXR5
Q2hlY2s7CiAgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxDYWxsTGlua0luZm8sIEJhc2ljUmF3
U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5nQ2FsbHM7CiAjZW5kaWYKLSNp
ZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQog
ICAgICAgICBPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IG1faml0Q29kZU1hcDsKLSAgICAgICAg
CisjZW5kaWYKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgc3RydWN0IFdlYWtSZWZlcmVu
Y2VUcmFuc2l0aW9uIHsKICAgICAgICAgICAgIFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uKCkgeyB9
CiAgICAgICAgICAgICAKQEAgLTExNDcsMTIgKzExODUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgT3duUHRyPENvZGVCbG9jaz4gbV9hbHRlcm5hdGl2ZTsKICAgICAgICAgCisgICAg
ICAgIGludDMyX3QgbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICAKICAgICAgICAgaW50
MzJfdCBtX2ppdEV4ZWN1dGVDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZl
U3VjY2Vzc0NvdW50ZXI7CiAgICAgICAgIHVpbnQzMl90IG1fc3BlY3VsYXRpdmVGYWlsQ291bnRl
cjsKICAgICAgICAgdWludDhfdCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcjsKICAgICAgICAg
dWludDhfdCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwotCisgICAgICAgIAogICAgICAg
ICBzdHJ1Y3QgUmFyZURhdGEgewogICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICAgICAgcHVibGljOgpAQCAtMTIyNSw2ICsxMjY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVk
KEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0
aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRh
Jik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtMTI1OSw2ICsxMzAw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpT
T2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0
Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiBy
ZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsK
ICNlbmRpZgpAQCAtMTI5Niw2ICsxMzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVj
dGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0
ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOwor
ICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAg
ICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJv
b2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTA2MDgyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNywyMCArMjcsNDkgQEAKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgi
CiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVy
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRC
bG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworICAgIFVOVVNFRF9QQVJB
TShpZGVudCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4
OworICAgIAorICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9tZXRo
b2RfY2hlY2spCisgICAgICAgIGluc3RydWN0aW9uKys7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOworICAgIGlmICghc3RydWN0
dXJlKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1
cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gc3Ry
dWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlm
IChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5m
b3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOworICAgIAorICAgIHJl
dHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZURpcmVjdCwgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSks
IG9mZnNldCwgZmFsc2UpOworI2Vsc2UKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9y
bWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyNlbmRpZgorfQorCiBH
ZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAg
ICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2Rl
SW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5B
QkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZTdHJ1
Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmls
ZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAgIC8vIEZpcnN0IGNoZWNr
IGlmIGl0IG1ha2VzIGVpdGhlciBjYWxscywgaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIHN1
cGVyIGNhcmVmdWwsIG9yCiAgICAgLy8gaWYgaXQncyBub3Qgc2V0IGF0IGFsbCwgaW4gd2hpY2gg
Y2FzZSB3ZSBwdW50LgogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVk
QmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1YkluZm8uc2Vl
bikKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJl
U2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmls
ZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgIAogICAgIFBvbHltb3JwaGljQWNj
ZXNzU3RydWN0dXJlTGlzdCogbGlzdDsKICAgICBpbnQgbGlzdFNpemU7CkBAIC02MCwxOCArODks
MTkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIH0KICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKICAgICAgICAgaWYgKCFsaXN0
LT5saXN0W2ldLmlzRGlyZWN0KQotICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTWFr
ZXNDYWxscywgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgICAgIHJldHVybiBH
ZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7
CiAgICAgfQogICAgIAogICAgIC8vIE5leHQgY2hlY2sgaWYgaXQgdGFrZXMgc2xvdyBjYXNlLCBp
biB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUga2luZCBvZiBjYXJlZnVsLgogICAgIGlmIChwcm9m
aWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKLSAgICAgICAg
cmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgU3RydWN0dXJlU2V0KCksIG5vdEZv
dW5kKTsKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgU3RydWN0
dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsKICAgICAKICAgICAvLyBGaW5hbGx5IGZpZ3VyZSBv
dXQgaWYgd2UgY2FuIGRlcml2ZSBhbiBhY2Nlc3Mgc3RyYXRlZ3kuCiAgICAgR2V0QnlJZFN0YXR1
cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fd2FzU2VlbkluSklUID0gdHJ1ZTsKICAgICBzd2l0Y2gg
KHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIGFjY2Vzc191bnNldDoKLSAgICAgICAg
cmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZv
dW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0
ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRf
c2VsZjogewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZvLnUuZ2V0QnlJ
ZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKQEAgLTEzMCw3ICsxNjAsNyBAQCBHZXRC
eUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgCiAgICAgcmV0dXJuIHJl
c3VsdDsKICNlbHNlIC8vIEVOQUJMRShKSVQpCi0gICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9J
bmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICByZXR1cm4gR2V0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsK
ICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEwNjA4MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDEwICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAgICBHZXRC
eUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwg
c2l6ZV90IG9mZnNldCkKKyAgICBHZXRCeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBTdHJ1
Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6ZV90IG9mZnNldCwgYm9vbCB3YXNTZWVuSW5KSVQp
CiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX3N0cnVjdHVyZVNldChzdHJ1
Y3R1cmVTZXQpCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICAgICAsIG1fd2FzU2Vl
bkluSklUKHdhc1NlZW5JbkpJVCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoc3RhdGUgPT0gU2lt
cGxlRGlyZWN0KSA9PSAob2Zmc2V0ICE9IG5vdEZvdW5kKSk7CiAgICAgfQpAQCAtNzAsMTAgKzcx
LDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9CiAgICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0
IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCisgICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBjb25z
dCB7IHJldHVybiBtX3dhc1NlZW5JbkpJVDsgfQorICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMg
R2V0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVj
b2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0
cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKICAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgYm9v
bCBtX3dhc1NlZW5JbkpJVDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHJldmlzaW9uIDEwNjA4
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpT
Q2VsbDsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47Cisg
ICAgc3RydWN0IExMSW50Q2FsbExpbmtJbmZvOwogICAgIHN0cnVjdCBWYWx1ZVByb2ZpbGU7CiAK
ICNpZiBFTkFCTEUoSklUKQpAQCAtMTQ2LDYgKzE0NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICNl
bmRpZgogCiAgICAgc3RydWN0IEluc3RydWN0aW9uIHsKKyAgICAgICAgSW5zdHJ1Y3Rpb24oKQor
ICAgICAgICB7CisgICAgICAgICAgICB1LmpzQ2VsbC5jbGVhcigpOworICAgICAgICB9CisgICAg
ICAgIAogICAgICAgICBJbnN0cnVjdGlvbihPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAjaWYg
IUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQpAQCAtMTgyLDYgKzE4OCw4IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIEluc3RydWN0aW9uKFByb3BlcnR5U2xvdDo6R2V0VmFs
dWVGdW5jIGdldHRlckZ1bmMpIHsgdS5nZXR0ZXJGdW5jID0gZ2V0dGVyRnVuYzsgfQogICAgICAg
ICAKKyAgICAgICAgSW5zdHJ1Y3Rpb24oTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykg
eyB1LmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsgfQorICAgICAgICAKICAgICAgICAgSW5z
dHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBwcm9maWxlKSB7IHUucHJvZmlsZSA9IHByb2ZpbGU7IH0K
IAogICAgICAgICB1bmlvbiB7CkBAIC0xOTEsNyArMTk5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBzdHJ1Y3R1cmVDaGFp
bjsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8SlNDZWxsPiBqc0NlbGw7CiAgICAgICAg
ICAgICBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jOworICAgICAgICAgICAg
TExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbzsKICAgICAgICAgICAgIFZhbHVlUHJvZmls
ZSogcHJvZmlsZTsKKyAgICAgICAgICAgIHZvaWQqIHBvaW50ZXI7CiAgICAgICAgIH0gdTsKICAg
ICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MTEludENhbGxMaW5rSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBMTEludENhbGxMaW5rSW5mb19oCisjZGVmaW5lIExMSW50Q2FsbExpbmtJ
bmZvX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CisKK25hbWVz
cGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK3N0cnVjdCBMTEludENhbGxMaW5r
SW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4gewor
ICAgIExMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAgfQorICAgIAorICAgIH5MTEludENh
bGxMaW5rSW5mbygpCisgICAgeworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAg
IHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4gY2Fs
bGVlOyB9CisgICAgCisgICAgdm9pZCB1bmxpbmsoKQorICAgIHsKKyAgICAgICAgY2FsbGVlLmNs
ZWFyKCk7CisgICAgICAgIG1hY2hpbmVDb2RlVGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KCk7CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAg
fQorICAgIAorICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxsZWU7CisgICAgV3JpdGVC
YXJyaWVyPEpTRnVuY3Rpb24+IGxhc3RTZWVuQ2FsbGVlOworICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciBtYWNoaW5lQ29kZVRhcmdldDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gTExJbnRDYWxsTGlua0luZm9faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9u
IDEwNjA4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlu
a1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDExIEBAIE1ldGhvZENhbGxM
aW5rU3RhdHVzIE1ldGhvZENhbGxMaW5rU3RhdHUKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRC
bG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lmIEVOQUJMRShKSVQp
ICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAvLyBOT1RFOiBUaGlzIGRvZXMgbm90IGhh
dmUgYW4gTExJbnQgZmFsbC1iYWNrIGJlY2F1c2UgTExJbnQgZG9lcyBub3QgZG8gYW55IG1ldGhv
ZAorICAgIC8vIGNhbGwgbGluayBjYWNoaW5nLgorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVt
YmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKCkpCisgICAgICAgIHJldHVybiBNZXRob2RDYWxsTGlu
a1N0YXR1cygpOworICAgIAogICAgIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9kQ2FsbCA9IHBy
b2ZpbGVkQmxvY2stPmdldE1ldGhvZENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KTsKICAgICAK
ICAgICBpZiAoIW1ldGhvZENhbGwuc2VlbiB8fCAhbWV0aG9kQ2FsbC5jYWNoZWRTdHJ1Y3R1cmUp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAx
MDYwODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFj
cm8ob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5
X2lkLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uLCA5KSBcCisg
ICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwgOSkgXAorICAgICAg
ICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwKICAgICAgICAgbWFj
cm8ob3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lk
X2dlbmVyaWMsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBcCkBAIC0yMDIs
NiArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgZW51bSB7IEZPUl9F
QUNIX09QQ09ERV9JRChPUENPREVfSURfRU5VTSkgfSBPcGNvZGVJRDsKICAgICAjdW5kZWYgT1BD
T0RFX0lEX0VOVU0KIAorICAgIGNvbnN0IGludCBtYXhPcGNvZGVMZW5ndGggPSA5OwogICAgIGNv
bnN0IGludCBudW1PcGNvZGVJRHMgPSBvcF9lbmQgKyAxOwogCiAgICAgI2RlZmluZSBPUENPREVf
SURfTEVOR1RIUyhpZCwgbGVuZ3RoKSBjb25zdCBpbnQgaWQjI19sZW5ndGggPSBsZW5ndGg7CkBA
IC0yMTgsNyArMjIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZPUl9FQUNIX09QQ09E
RV9JRChWRVJJRllfT1BDT0RFX0lEKTsKICAgICAjdW5kZWYgVkVSSUZZX09QQ09ERV9JRAogCi0j
aWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVE
X0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICNpZiBDT01QSUxFUihSVkNUKSB8
fCBDT01QSUxFUihJTlRFTCkKICAgICB0eXBlZGVmIHZvaWQqIE9wY29kZTsKICNlbHNlCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3Bw
CShyZXZpc2lvbiAxMDYwODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDI3ICsyNyw2OSBAQAogI2luY2x1
ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUg
Ikxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRl
ICJTdHJ1Y3R1cmVDaGFpbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorUHV0QnlJZFN0YXR1cyBQ
dXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgVU5VU0VE
X1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsK
KyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
ICsgYnl0ZWNvZGVJbmRleDsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rp
b25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUpCisgICAgICAgIHJl
dHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAg
ICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lk
KSB7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9j
ay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQp
CisgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAw
LCBub3RGb3VuZCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1w
bGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIEFT
U0VSVChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3QKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxp
bnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAKKyAgICBTdHJ1Y3R1cmUq
IG5ld1N0cnVjdHVyZSA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpOworICAgIFN0
cnVjdHVyZUNoYWluKiBjaGFpbiA9IGluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0
KCk7CisgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7CisgICAgQVNTRVJUKGNoYWluKTsKKyAgICAK
KyAgICBzaXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmds
b2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsK
KyAgICAKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVUcmFuc2l0aW9uLCBzdHJ1Y3R1
cmUsIG5ld1N0cnVjdHVyZSwgY2hhaW4sIG9mZnNldCk7CisjZWxzZQorICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyNlbmRpZgorfQor
CiBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9m
aWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKIHsK
ICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVj
b2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYg
RU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZT
dHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJv
ZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAgIGlmIChwcm9maWxl
ZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKICAgICAgICAgcmV0
dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOwogICAg
IAogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVkQmxvY2stPmdldFN0
dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1YkluZm8uc2VlbikKLSAgICAgICAg
cmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOwor
ICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUlu
ZGV4LCBpZGVudCk7CiAgICAgCiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAg
ICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5m
b3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9t
TExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAg
ICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTogewogICAgICAgICBzaXplX3Qgb2Zmc2V0
ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJ
KHJldmlzaW9uIDEwNjA4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDggQEAgcHVibGljOgogICAg
IHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAogcHJpdmF0
ZToKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayos
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKICAgICBTdGF0ZSBt
X3N0YXRlOwogICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJlKiBt
X25ld1N0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMDYwODIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkJhdGNoZWRUcmFu
c2l0aW9uT3B0aW1pemVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUg
IlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVVN0
cmluZy5oIgpAQCAtMTE2LDI2ICsxMTcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZXhwZWN0
ZWQgYnkgdGhlIGNhbGxlZS4KICovCiAKLSNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgYm9vbCBzX2R1
bXBzR2VuZXJhdGVkQ29kZSA9IGZhbHNlOwotI2VuZGlmCiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZShib29sIGR1bXBzR2VuZXJhdGVkQ29kZSkKIHsKLSNp
Zm5kZWYgTkRFQlVHCiAgICAgc19kdW1wc0dlbmVyYXRlZENvZGUgPSBkdW1wc0dlbmVyYXRlZENv
ZGU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkdW1wc0dlbmVyYXRlZENvZGUpOwotI2VuZGlm
CiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpCiB7Ci0j
aWZuZGVmIE5ERUJVRwogICAgIHJldHVybiBzX2R1bXBzR2VuZXJhdGVkQ29kZTsKLSNlbHNlCi0g
ICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAKIEpTT2JqZWN0KiBCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGUoKQpAQCAtMTQ4LDEwICsxMzksOCBAQCBKU09iamVjdCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmdlbmVyYXRlKCkKIAogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVjdGlvbkNvdW50
KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogCi0jaWZuZGVmIE5ERUJVRwog
ICAgIGlmIChzX2R1bXBzR2VuZXJhdGVkQ29kZSkKICAgICAgICAgbV9jb2RlQmxvY2stPmR1bXAo
bV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7Ci0jZW5kaWYKIAogICAg
IGlmICgobV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNvZGUgJiYgIW1fY29kZUJsb2NrLT5uZWVkc0Z1
bGxTY29wZUNoYWluKCkgJiYgIW1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpIHx8IG1fY29k
ZVR5cGUgPT0gRXZhbENvZGUpCiAgICAgICAgIHN5bWJvbFRhYmxlKCkuY2xlYXIoKTsKQEAgLTEy
NzYsOSArMTI2NSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wK
ICNpZiBFTkFCTEUoSklUKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUlu
Zm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRF
UikKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0
cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IGVtaXRQcm9maWxlZE9wY29kZShyZXF1aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZl
X2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDQwLDkgKzE0MjcsNyBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2Nv
ZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNl
bmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBW
YWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWlj
Q2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDkwLDkgKzE0NzUs
NyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxF
KEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25z
KCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVC
bG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
Ci0jZW5kaWYKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUo
cmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jl
c29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgo
KSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBA
IC0xNTExLDkgKzE0OTQsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TWV0aG9kQ2hl
Y2soCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJZChSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQog
ewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBW
YWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2J5X2lkKTsK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKQEAgLTE1MzksOSArMTUy
MCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXIKIAogUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFC
TEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1pdE9wY29kZShv
cF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsK
QEAgLTE1NTcsOSArMTUzNiw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UHV0QnkKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlk
KFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklE
KiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFk
ZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRp
ZgogICAgIAogICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBAIC0xODQ4LDcgKzE4MjUsMTEgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKAogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxs
QXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAv
LyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQ
cm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7
CkBAIC0xOTUyLDcgKzE5MzMsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDb25zdAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVu
YwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChj
YWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVO
QUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExM
SW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7
CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBp
Z25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFBy
b2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0yMjEzLDcgKzIxOTgsMTEgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaAogewogICAgIG1fdXNlc0V4
Y2VwdGlvbnMgPSB0cnVlOwogI2lmIEVOQUJMRShKSVQpCisjaWYgRU5BQkxFKExMSU5UKQorICAg
IEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCks
IGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3Bl
RGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX2Nh
dGNoKSkgfTsKKyNlbHNlCiAgICAgSGFuZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwg
MCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29w
ZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0aW9uTGFiZWwoKSB9OworI2VuZGlm
CiAjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQt
PmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCAr
IG1fYmFzZVNjb3BlRGVwdGggfTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEwNjA4MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02MDQsOSArNjA0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIFVOVVNFRF9Q
QVJBTShub2RlSW5kZXgpOwogICAgICAgICAKLSAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxl
ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRl
Y29kZU9mZnNldChieXRlY29kZUluZGV4KTsKLSAgICAgICAgQVNTRVJUKHByb2ZpbGUpOwotICAg
ICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFBy
ZWRpY3Rpb24oKTsKKyAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQog
ICAgICAgICBwcmludGYoIkR5bmFtaWMgW0AldSwgYmMjJXVdIHByZWRpY3Rpb246ICVzXG4iLCBu
b2RlSW5kZXgsIGJ5dGVjb2RlSW5kZXgsIHByZWRpY3Rpb25Ub1N0cmluZyhwcmVkaWN0aW9uKSk7
CiAjZW5kaWYKQEAgLTEwNDEsNiArMTAzOSw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRs
ZUlubGluaW5nKGJvb2wKICAgICAKICAgICAvLyBJZiB3ZSBnZXQgaGVyZSB0aGVuIGl0IGxvb2tz
IGxpa2Ugd2Ugc2hvdWxkIGRlZmluaXRlbHkgaW5saW5lIHRoaXMgY29kZS4gUHJvY2VlZAogICAg
IC8vIHdpdGggcGFyc2luZyB0aGUgY29kZSB0byBnZXQgYnl0ZWNvZGUsIHNvIHRoYXQgd2UgY2Fu
IHRoZW4gcGFyc2UgdGhlIGJ5dGVjb2RlLgorICAgIC8vIE5vdGUgdGhhdCBpZiBMTEludCBpcyBl
bmFibGVkLCB0aGUgYnl0ZWNvZGUgd2lsbCBhbHdheXMgYmUgYXZhaWxhYmxlLiBBbHNvIG5vdGUK
KyAgICAvLyB0aGF0IGlmIExMSW50IGlzIGVuYWJsZWQsIHdlIG1heSBpbmxpbmUgYSBjb2RlIGJs
b2NrIHRoYXQgaGFzIG5ldmVyIGJlZW4gSklUdGVkCisgICAgLy8gYmVmb3JlIQogICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2tDYWNoZS5nZXQoQ29kZUJsb2NrS2V5KGV4ZWN1
dGFibGUsIGtpbmQpLCBleHBlY3RlZEZ1bmN0aW9uLT5zY29wZSgpKTsKICAgICBpZiAoIWNvZGVC
bG9jaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTc0MSw3ICsxNzQyLDcgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9jdXJyZW50SW5kZXgpOwogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBpZiAobWV0aG9kQ2FsbFN0YXR1cy5pc1NldCgpCi0gICAgICAgICAg
ICAgICAgJiYgIWdldEJ5SWRTdGF0dXMuaXNTZXQoKQorICAgICAgICAgICAgICAgICYmICFnZXRC
eUlkU3RhdHVzLndhc1NlZW5JbkpJVCgpCiAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3Rh
Y2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hl
KSkgewogICAgICAgICAgICAgICAgIC8vIEl0J3MgbW9ub21vcnBoaWMgYXMgZmFyIGFzIHdlIGNh
biB0ZWxsLCBzaW5jZSB0aGUgbWV0aG9kX2NoZWNrIHdhcyBsaW5rZWQKICAgICAgICAgICAgICAg
ICAvLyBidXQgdGhlIHNsb3cgcGF0aCAoaS5lLiB0aGUgbm9ybWFsIGdldF9ieV9pZCkgbmV2ZXIg
ZmlyZWQuCkBAIC0xODEwLDcgKzE4MTEsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJs
b2NrKHVuc2lnbmVkCiAKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9ieV9pZCk7CiAg
ICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6IHsKKyAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Ogor
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogewogICAgICAgICAg
ICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQp
OwogICAgICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFd
LnUub3BlcmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9p
bmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzJdLnUu
b3BlcmFuZF07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmgJKHJldmlzaW9uIDEwNjA4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw2ICsxMTEsOCBAQCBpbmxpbmUg
Ym9vbCBjYW5Db21waWxlT3Bjb2RlKE9wY29kZUlEIG9wCiAgICAgY2FzZSBvcF9wdXRfc2NvcGVk
X3ZhcjoKICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBjYXNlIG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyOgogICAg
IGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6CiAgICAgY2FzZSBvcF9qbXA6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lv
biAxMDYwODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDIxIEBAIHZvaWQgY29tcGlsZU9TUkV4
aXQoRXhlY1N0YXRlKiBleGVjKQogICAgIHVpbnQzMl90IGV4aXRJbmRleCA9IGdsb2JhbERhdGEt
Pm9zckV4aXRJbmRleDsKICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrLT5vc3JFeGl0KGV4
aXRJbmRleCk7CiAgICAgCisgICAgLy8gTWFrZSBzdXJlIGFsbCBjb2RlIG9uIG91ciBpbmxpbmUg
c3RhY2sgaXMgSklUIGNvbXBpbGVkLiBUaGlzIGlzIG5lY2Vzc2FyeSBzaW5jZQorICAgIC8vIHdl
IG1heSBvcHQgdG8gaW5saW5lIGEgY29kZSBibG9jayBldmVuIGJlZm9yZSBpdCBoYWQgZXZlciBi
ZWVuIGNvbXBpbGVkIGJ5IHRoZQorICAgIC8vIEpJVCwgYnV0IG91ciBPU1IgZXhpdCBpbmZyYXN0
cnVjdHVyZSBjdXJyZW50bHkgb25seSB3b3JrcyBpZiB0aGUgdGFyZ2V0IG9mIHRoZQorICAgIC8v
IE9TUiBleGl0IGlzIEpJVCBjb2RlLiBUaGlzIGNvdWxkIGJlIGNoYW5nZWQgc2luY2UgdGhlcmUg
aXMgbm90aGluZyBwYXJ0aWN1bGFybHkKKyAgICAvLyBoYXJkIGFib3V0IGRvaW5nIGFuIE9TUiBl
eGl0IGludG8gdGhlIGludGVycHJldGVyLCBidXQgZm9yIG5vdyB0aGlzIHNlZW1zIHRvIG1ha2UK
KyAgICAvLyBzZW5zZSBpbiB0aGF0IGlmIHdlJ3JlIE9TUiBleGl0aW5nIGZyb20gaW5saW5lZCBj
b2RlIG9mIGEgREZHIGNvZGUgYmxvY2ssIHRoZW4KKyAgICAvLyBwcm9iYWJseSBpdCdzIGEgZ29v
ZCBzaWduIHRoYXQgdGhlIHRoaW5nIHdlJ3JlIGV4aXRpbmcgaW50byBpcyBob3QuIEV2ZW4gbW9y
ZQorICAgIC8vIGludGVyZXN0aW5nbHksIHNpbmNlIHRoZSBjb2RlIHdhcyBpbmxpbmVkLCBpdCBt
YXkgbmV2ZXIgb3RoZXJ3aXNlIGdldCBKSVQKKyAgICAvLyBjb21waWxlZCBzaW5jZSB0aGUgYWN0
IG9mIGlubGluaW5nIGl0IG1heSBlbnN1cmUgdGhhdCBpdCBvdGhlcndpc2UgbmV2ZXIgcnVucy4K
KyAgICBmb3IgKENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luOyBjb2Rl
T3JpZ2luLmlubGluZUNhbGxGcmFtZTsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lLT5jYWxsZXIpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4oY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpCisgICAgICAg
ICAgICAtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5p
c0NhbGwgPyBDb2RlRm9yQ2FsbCA6IENvZGVGb3JDb25zdHJ1Y3QpCisgICAgICAgICAgICAtPmpp
dENvbXBpbGUoKmdsb2JhbERhdGEpOworICAgIH0KKyAgICAKICAgICBTcGVjdWxhdGlvblJlY292
ZXJ5KiByZWNvdmVyeSA9IDA7CiAgICAgaWYgKGV4aXQubV9yZWNvdmVyeUluZGV4KQogICAgICAg
ICByZWNvdmVyeSA9ICZjb2RlQmxvY2stPnNwZWN1bGF0aW9uUmVjb3ZlcnkoZXhpdC5tX3JlY292
ZXJ5SW5kZXggLSAxKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcAkocmV2aXNpb24gMTA2MDgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKICNpbmNsdWRlICJE
RkdSZXBhdGNoLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUg
IkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIklubGluZUFTTS5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCkBAIC02NzEsNDggKzY3Miw2IEBAIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJh
dGlvbkNvbXBhcmVTdHIKICAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwog
fQogCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUo
KTsKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdp
dGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7Ci0KLSNpZiBDUFUoWDg2XzY0KQotYXNtICgKLSIuZ2xv
YmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9T
VFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglcjEz
KSwgJXIxM1xuIgotICAgICJtb3YgJXIxMywgJXJkaVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RS
SU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIK
LSk7Ci0jZWxpZiBDUFUoWDg2KQotYXNtICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgotICAgICJtb3YgJWVk
aSwgNCglZXNwKVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoQVJNX1RI
VU1CMikKLWFzbSAoCi0iLnRleHQiICJcbiIKLSIuYWxpZ24gMiIgIlxuIgotIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotIi50aHVtYiIgIlxuIgotIi50aHVtYl9mdW5jICIg
VEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RS
SU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgImxkciByNSwgW3I1LCAj
LTQwXSIgIlxuIgotICAgICJjcHkgcjAsIHI1IiAiXG4iCi0gICAgImIgIiBTWU1CT0xfU1RSSU5H
X1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7
Ci0jZW5kaWYKLQotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVy
blZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOwotICAgIAotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQotCiBz
dGF0aWMgdm9pZCogaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVl
IGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTA2MDgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzNyw3ICs4MzcsNyBAQCB2b2lkIEhl
YXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnCiAgICAgICAgIHNldEhpZ2hXYXRlck1h
cmsobWF4KHByb3BvcnRpb25hbEJ5dGVzLCBtX21pbkJ5dGVzUGVyQ3ljbGUpKTsKICAgICB9CiAg
ICAgSkFWQVNDUklQVENPUkVfR0NfRU5EKCk7Ci0KKyAgICAKICAgICAoKm1fYWN0aXZpdHlDYWxs
YmFjaykoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24g
MTA2MDgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFs
RGF0YTsKICAgICBjbGFzcyBKU1ZhbHVlOwogICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQXJndW1l
bnRCdWZmZXI7CiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlOwogICAgIGNsYXNzIFVTdHJpbmc7CkBA
IC0xMzUsMTEgKzEzNiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBnZXRDb25z
ZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAogICAgIHBy
aXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRT
cGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQg
Y2xhc3MgQnVtcFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7Ci0gICAg
ICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAKICAgICAgICAgc2l6ZV90IHdhdGVyTWFyaygp
OwogICAgICAgICBzaXplX3QgaGlnaFdhdGVyTWFyaygpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCShyZXZpc2lvbiAxMDYwODIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNyAr
MzA0LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKAogI2VuZGlm
CiAKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwotCisgICAgCiAgICAgaWYgKGlz
SlNTdHJpbmcoY2VsbCkpIHsKICAgICAgICAgSlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4oY29uc3Rf
Y2FzdDxKU0NlbGwqPihjZWxsKSwgdmlzaXRvcik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMTA2MDgyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEhlYXA7CiBjbGFzcyBK
U0NlbGw7CiBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CitjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiBjbGFzcyBXZWFrR0NIYW5kbGU7CiBjbGFzcyBTbG90VmlzaXRvcjsKIApAQCAtODcs
NiArODgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBmcmVlQmxvY2tzKE1hcmtlZEJsb2NrKiBoZWFk
KTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgIAogICAgIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2UoU2l6ZUNsYXNzJik7CiAgICAgdm9pZCog
dHJ5QWxsb2NhdGVIZWxwZXIoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwogICAgIHZvaWQqIHRy
eUFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDEwNjA4MikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBj
b3B5KQpAQCAtMTIyLDYgKzEyMiw5IEBAIG5hbWVzcGFjZSBKU0MgIHsKICNpZiBFTkFCTEUoSU5U
RVJQUkVURVIpCiAgICAgICAgIEluc3RydWN0aW9uKiByZXR1cm5WUEMoKSBjb25zdCB7IHJldHVy
biB0aGlzW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdLnZQQygpOyB9CiAjZW5kaWYKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgICAgIEluc3RydWN0aW9uKiBjdXJyZW50VlBDKCkgY29uc3QgeyByZXR1
cm4gYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4odGhpc1tSZWdpc3RlckZpbGU6OkFyZ3VtZW50
Q291bnRdLnRhZygpKTsgfQorI2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXRDYWxsZXJGcmFtZShD
YWxsRnJhbWUqIGNhbGxlckZyYW1lKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVn
aXN0ZXJGaWxlOjpDYWxsZXJGcmFtZV0gPSBjYWxsZXJGcmFtZTsgfQogICAgICAgICB2b2lkIHNl
dFNjb3BlQ2hhaW4oU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pIHsgc3RhdGljX2Nhc3Q8UmVn
aXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW5dID0gc2NvcGVDaGFpbjsgfQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCShyZXZpc2lvbiAxMDYwODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBACiAj
aW5jbHVkZSAiSklULmgiCiAjZW5kaWYKIAotI2RlZmluZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9H
T1RPX1dPUktBUk9VTkQgKEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSAmJiAhZGVm
aW5lZChfX2xsdm1fXykpCisjZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FS
T1VORCAoKEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQp
KSAmJiAhZGVmaW5lZChfX2xsdm1fXykpCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTU0
NywxNyArNTQ3LDQzIEBAIEludGVycHJldGVyOjpJbnRlcnByZXRlcigpCiB7CiB9CiAKLXZvaWQg
SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQpCitJbnRlcnByZXRlcjo6fklu
dGVycHJldGVyKCkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNp
ZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fZW5hYmxlZCkKKyAgICAgICAgZGVsZXRlW10gbV9v
cGNvZGVUYWJsZTsKKyNlbmRpZgorfQorCit2b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKExM
SW50OjpEYXRhKiBsbGludERhdGEsIGJvb2wgY2FuVXNlSklUKQoreworICAgIFVOVVNFRF9QQVJB
TShsbGludERhdGEpOworICAgIFVOVVNFRF9QQVJBTShjYW5Vc2VKSVQpOworI2lmIEVOQUJMRShD
T01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJMRShD
T01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorICAgIC8vIEhhdmluZyBMTEludCBlbmFibGVkLCBi
dXQgbm90IGJlaW5nIGFibGUgdG8gdXNlIHRoZSBKSVQsIGFuZCBub3QgaGF2aW5nCisgICAgLy8g
YSBjb21wdXRlZCBnb3RvIGludGVycHJldGVyLCBpcyBub3Qgc3VwcG9ydGVkLiBOb3QgYmVjYXVz
ZSB3ZSBjYW5ub3QKKyAgICAvLyBzdXBwb3J0IGl0LCBidXQgYmVjYXVzZSBJIGRlY2lkZWQgdG8g
ZHJhdyB0aGUgbGluZSBhdCB0aGUgbnVtYmVyIG9mCisgICAgLy8gcGVybXV0YXRpb25zIG9mIGV4
ZWN1dGlvbiBlbmdpbmVzIHRoYXQgSSB3YW50ZWQgdGhpcyBjb2RlIHRvIGdyb2suCisgICAgQVNT
RVJUKGNhblVzZUpJVCk7CisjZW5kaWYKICAgICBpZiAoY2FuVXNlSklUKSB7CisjaWYgRU5BQkxF
KExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbGxpbnREYXRhLT5vcGNvZGVNYXAoKTsK
KyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKKyAgICAgICAg
ICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNvZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8T3Bj
b2RlSUQ+KGkpKTsKKyNlbHNlCiAgICAgICAgIC8vIElmIHRoZSBKSVQgaXMgcHJlc2VudCwgZG9u
J3QgdXNlIGp1bXAgZGVzdGluYXRpb25zIGZvciBvcGNvZGVzLgogICAgICAgICAKICAgICAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkgewogICAgICAgICAgICAgT3Bj
b2RlIG9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90Pihp
KSk7CiAgICAgICAgICAgICBtX29wY29kZVRhYmxlW2ldID0gb3Bjb2RlOwogICAgICAgICB9Cisj
ZW5kaWYKICAgICB9IGVsc2UgeworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVU
YWJsZSA9IG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXTsKKyNlbmRpZgogICAgICAgICBwcml2YXRl
RXhlY3V0ZShJbml0aWFsaXplQW5kUmV0dXJuLCAwLCAwKTsKICAgICAgICAgCiAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpCkBAIC01NjYsNyArNTkyLDYgQEAg
dm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShib29sIGNhblVzZQogICAgICAgICBtX2VuYWJs
ZWQgPSB0cnVlOwogICAgIH0KICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNhblVzZUpJVCk7CiAj
aWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fZW5hYmxlZCA9IHRydWU7CiAjZWxzZQpAQCAt
NjY3LDkgKzY5MiwxMSBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFt
CiAKIGJvb2wgSW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKE9wY29kZSBvcGNvZGUpCiB7Ci0jaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
SU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKExMSU5UKQogICAgIGlm
ICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm4gb3Bjb2RlID49IDAgJiYgc3RhdGljX2Nhc3Q8
T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29kZSkpIDw9IG9wX2VuZDsKKyNl
bmRpZgogICAgIHJldHVybiBvcGNvZGUgIT0gSGFzaFRyYWl0czxPcGNvZGU+OjplbXB0eVZhbHVl
KCkKICAgICAgICAgJiYgIUhhc2hUcmFpdHM8T3Bjb2RlPjo6aXNEZWxldGVkVmFsdWUob3Bjb2Rl
KQogICAgICAgICAmJiBtX29wY29kZUlEVGFibGUuY29udGFpbnMob3Bjb2RlKTsKQEAgLTcyNiwx
MSArNzUzLDExIEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjp1bndpbmRDYWwKICAg
ICAvLyBoYXZlIHRvIHN1YnRyYWN0IDEuCiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKElOVEVS
UFJFVEVSKQogICAgIGlmIChjYWxsZXJGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQot
ICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZy
YW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5
dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogICAgIGVs
c2UKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNh
bGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbGlmIEVOQUJMRShKSVQpCi0gICAgYnl0ZWNv
ZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMo
KSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxl
ckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2Vsc2UKICAgICBieXRlY29kZU9mZnNl
dCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAx
OwogI2VuZGlmCkBAIC01MTcwLDEwICs1MTk3LDEwIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OnJldHJp
ZXZlTGFzdENhbGxlcihDYWwKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpOwogI2lmIEVOQUJMRShK
SVQpCiAgICAgZWxzZQotICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+
Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVP
ZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxs
RnJhbWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAjZWxzZQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0g
Y2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOwor
ICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxs
ZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogICAgIGxpbmVOdW1iZXIg
PSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCAtIDEpOwogICAgIHNvdXJjZUlEID0gY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKS0+c291cmNlSUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxMDYwODIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMs
NiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNp
bmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk9w
Y29kZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgogCkBAIC00NSw2ICs0Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBK
U0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBS
ZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKQEAgLTEwMCwxOSArMTAyLDIxIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgogICAg
ICAgICBJbnRlcnByZXRlcigpOworICAgICAgICB+SW50ZXJwcmV0ZXIoKTsKICAgICAgICAgCi0g
ICAgICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGNhblVzZUpJVCk7CisgICAgICAgIHZvaWQgaW5p
dGlhbGl6ZShMTEludDo6RGF0YSosIGJvb2wgY2FuVXNlSklUKTsKIAogICAgICAgICBSZWdpc3Rl
ckZpbGUmIHJlZ2lzdGVyRmlsZSgpIHsgcmV0dXJuIG1fcmVnaXN0ZXJGaWxlOyB9CiAgICAgICAg
IAogICAgICAgICBPcGNvZGUgZ2V0T3Bjb2RlKE9wY29kZUlEIGlkKQogICAgICAgICB7CiAgICAg
ICAgICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
SU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVO
QUJMRShMTElOVCkKICAgICAgICAgICAgIHJldHVybiBtX29wY29kZVRhYmxlW2lkXTsKICNlbHNl
CiAgICAgICAgICAgICByZXR1cm4gaWQ7CkBAIC0xMjIsNyArMTI2LDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUgb3Bjb2RlKQogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBV
VEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgQVNT
RVJUKGlzT3Bjb2RlKG9wY29kZSkpOworICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlSURUYWJs
ZS5nZXQob3Bjb2RlKTsKKyNlbGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQog
ICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOwogICAgICAgICAgICAgaWYgKCFt
X2VuYWJsZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZUlEPihi
aXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKTsKQEAgLTEzMiw2ICsxMzksMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgZW5hYmxlZCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiBtX2VuYWJsZWQ7CisgICAgICAgIH0KIAogICAgICAgICBib29sIGlzT3Bjb2Rl
KE9wY29kZSk7CiAKQEAgLTE5OSw3ICsyMTEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgUmVnaXN0ZXJGaWxlIG1fcmVnaXN0ZXJGaWxlOwogICAgICAgICAKLSNpZiBFTkFCTEUoQ09N
UFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIE9wY29k
ZSogbV9vcGNvZGVUYWJsZTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGlu
ZworICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8g
TWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCisjZWxpZiBFTkFCTEUoQ09N
UFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVt
T3Bjb2RlSURzXTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAg
ICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBP
cGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHJldmlzaW9u
IDEwNjA4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZp
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7Cisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxl
IHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVnaXN0ZXJGaWxlKTsKQEAgLTgxLDYg
KzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAg
ICBib29sIGdyb3dTbG93Q2FzZShSZWdpc3RlciopOwogICAgICAgICB2b2lkIHJlbGVhc2VFeGNl
c3NDYXBhY2l0eSgpOwogICAgICAgICB2b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJu
VmFsdWUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0
Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorCisjaW5jbHVkZSAiQ2FsbEZy
YW1lLmgiCisjaW5jbHVkZSAiSW5saW5lQVNNLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNp
bmNsdWRlICJKU1ZhbHVlSW5saW5lTWV0aG9kcy5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxM
X1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUo
RXhlY1N0YXRlKik7CisKKyNpZiBDUFUoWDg2XzY0KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xf
U1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgor
ICAgICJtb3YgJXIxMywgJXJkaVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJ
T04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBD
UFUoWDg2KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJc
biIKKyAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgorICAgICJtb3YgJWVkaSwgNCglZXNwKVxu
IgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKK2FzbSAo
CisiLnRleHQiICJcbiIKKyIuYWxpZ24gMiIgIlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkco
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIlxuIgorIi50aHVtYiIgIlxuIgorIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19Q
QVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgor
ICAgICJjcHkgcjAsIHI1IiAiXG4iCisgICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04o
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZW5kaWYKKwor
ZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1
cm5WYWx1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorI2RlZmluZSBIb3N0Q2Fs
bFJldHVyblZhbHVlX2gKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJNYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENBTExJ
TkdfQ09OVkVOVElPTl9JU19TVERDQUxMCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVf
T1BUSU9OIENERUNMCisjZWxzZQorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElP
TgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0MgeworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBI
T1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Cit9
CisKKyNlbmRpZiAvLyBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTA2MDgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDggQEAgdm9pZCBKSVQ6
OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Aob3BfcHJvZmlsZV93
aWxsX2NhbGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX25ld19zY29wZSkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1c2hfc2NvcGUpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bDoKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX09QKG9w
X3B1dF9ieV9pbmRleCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92YWwpCkBAIC00ODcs
NiArNDg5LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX3Bvc3RfaW5jKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfcHJlX2RlYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9pbmMpCisg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV92
YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2dsb2JhbCkKQEAgLTUy
Niw2ICs1MzAsMTAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKIAogSklU
Q29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bmN0aW9uRW50cnlBcml0eUNoZWNr
KQogeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCJDb21waWxpbmcg
SklUIGNvZGUhXG4iKTsKKyNlbmRpZgorICAgIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikK
ICAgICBtX2NhbkJlT3B0aW1pemVkID0gbV9jb2RlQmxvY2stPmNhbkNvbXBpbGVXaXRoREZHKCk7
CiAjZW5kaWYKQEAgLTY5MCw4ICs2OTgsMTIgQEAgSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxl
KENvZGVQdHIqIGZ1bgogICAgICAgICBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IG1fY29kZUJs
b2NrLT5zdHJ1Y3R1cmVTdHViSW5mbyhtX21ldGhvZENhbGxDb21waWxhdGlvbkluZm9baV0ucHJv
cGVydHlBY2Nlc3NJbmRleCkuY2FsbFJldHVybkxvY2F0aW9uOwogICAgIH0KIAotI2lmIEVOQUJM
RShERkdfSklUKQotICAgIGlmIChtX2NhbkJlT3B0aW1pemVkKSB7CisjaWYgRU5BQkxFKERGR19K
SVQpIHx8IEVOQUJMRShMTElOVCkKKyAgICBpZiAobV9jYW5CZU9wdGltaXplZAorI2lmIEVOQUJM
RShMTElOVCkKKyAgICAgICAgfHwgdHJ1ZQorI2VuZGlmCisgICAgICAgICkgewogICAgICAgICBD
b21wYWN0SklUQ29kZU1hcDo6RW5jb2RlciBqaXRDb2RlTWFwRW5jb2RlcjsKICAgICAgICAgZm9y
ICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0IDwgbV9sYWJlbHMu
c2l6ZSgpOyArK2J5dGVjb2RlT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAobV9sYWJlbHNbYnl0
ZWNvZGVPZmZzZXRdLmlzU2V0KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUu
aAkocmV2aXNpb24gMTA2MDgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEpJVENvZGUoKSB7IH0KICNlbmRpZgogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBKSVRU
eXBlIHsgSG9zdENhbGxUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OworICAgICAgICBlbnVt
IEpJVFR5cGUgeyBOb25lLCBIb3N0Q2FsbFRodW5rLCBJbnRlcnByZXRlclRodW5rLCBCYXNlbGlu
ZUpJVCwgREZHSklUIH07CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgSklUVHlwZSBib3R0b21U
aWVySklUKCkKICAgICAgICAgewpAQCAtNjYsOCArNjYsMTkgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICByZXR1cm4gREZHSklUOwogICAgICAgICB9CiAgICAgICAgIAorICAgICAgICBz
dGF0aWMgYm9vbCBpc09wdGltaXppbmdKSVQoSklUVHlwZSBqaXRUeXBlKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBERkdKSVQ7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHN0YXRpYyBib29sIGlzQmFzZWxpbmVDb2RlKEpJVFR5cGUgaml0VHlwZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gSW50ZXJwcmV0ZXJUaHVuayB8
fCBqaXRUeXBlID09IEJhc2VsaW5lSklUOworICAgICAgICB9CisgICAgICAgIAogI2lmIEVOQUJM
RShKSVQpCiAgICAgICAgIEpJVENvZGUoKQorICAgICAgICAgICAgOiBtX2ppdFR5cGUoTm9uZSkK
ICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTc1LDYgKzg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICA6IG1fcmVmKHJlZikKICAgICAgICAgICAgICwgbV9qaXRUeXBlKGppdFR5
cGUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChqaXRUeXBlICE9IE5vbmUpOwogICAg
ICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yICEoKSBjb25zdApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCShyZXZpc2lvbiAxMDYwODIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MywxNSArMzMsMjEgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUg
IkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2lu
dHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5
cGU+CiBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRD
b2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CisgICAgaWYgKGppdFR5cGUgPT0gY29k
ZUJsb2NrLT5nZXRKSVRUeXBlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAogICAgIGlm
ICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisg
ICAgY29kZUJsb2NrLT51bmxpbmtJbmNvbWluZ0NhbGxzKCk7CisgICAgCiAgICAgYm9vbCBkZmdD
b21waWxlZCA9IGZhbHNlOwogICAgIGlmIChqaXRUeXBlID09IEpJVENvZGU6OkRGR0pJVCkKICAg
ICAgICAgZGZnQ29tcGlsZWQgPSBERkc6OnRyeUNvbXBpbGUoZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LmdldCgpLCBqaXRDb2RlKTsKQEAgLTU1LDEwICs2MSw3IEBAIGlubGluZSBib29sIGppdENvbXBp
bGVJZkFwcHJvcHJpYXRlKEpTR2wKICAgICAgICAgfQogICAgICAgICBqaXRDb2RlID0gSklUOjpj
b21waWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCkpOwogICAgIH0KLSNpZiAhRU5BQkxF
KE9QQ09ERV9TQU1QTElORykKLSAgICBpZiAoIUJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVy
YXRlZENvZGUoKSkKLSAgICAgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdP
cHBvcnR1bml0eSgpOwotI2VuZGlmCisgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2Nh
cmRpbmdPcHBvcnR1bml0eSgpOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkBAIC02Niw5
ICs2OSwxNCBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShKU0dsCiAKIGlu
bGluZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBjb2RlQmxvY2ssIEpJVENvZGUm
IGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBT
aGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUp
CiB7CisgICAgaWYgKGppdFR5cGUgPT0gY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIAogICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisgICAgY29kZUJsb2NrLT51bmxpbmtJbmNvbWluZ0Nh
bGxzKCk7CisgICAgCiAgICAgYm9vbCBkZmdDb21waWxlZCA9IGZhbHNlOwogICAgIGlmIChqaXRU
eXBlID09IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAgZGZnQ29tcGlsZWQgPSBERkc6OnRyeUNv
bXBpbGVGdW5jdGlvbihnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUsIGppdENv
ZGVXaXRoQXJpdHlDaGVjayk7CkBAIC04MywxMSArOTEsNyBAQCBpbmxpbmUgYm9vbCBqaXRDb21w
aWxlRnVuY3Rpb25JZkFwcHJvcHJpCiAgICAgICAgIH0KICAgICAgICAgaml0Q29kZSA9IEpJVDo6
Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCAmaml0Q29kZVdpdGhBcml0eUNo
ZWNrKTsKICAgICB9Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRl
Y29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+
aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgotICAgIAorICAg
IGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBj
b2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKICAg
ICAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
RXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMTA2MDgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBA
QCBFeGNlcHRpb25IYW5kbGVyIGdlbmVyaWNUaHJvdyhKU0dsb2JhbERhCiAKIEV4Y2VwdGlvbkhh
bmRsZXIgaml0VGhyb3coSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVjU3RhdGUqIGNhbGxG
cmFtZSwgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSwgUmV0dXJuQWRkcmVzc1B0ciBmYXVsdExvY2F0
aW9uKQogewotICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBl
eGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZmF1
bHRMb2NhdGlvbikpOworICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgY2FsbEZy
YW1lLCBleGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZz
ZXQoY2FsbEZyYW1lLCBmYXVsdExvY2F0aW9uKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMDYwODIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkyOCw3ICsx
OTI4LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogICAgIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaW50MzIoKTsKIAogI2lm
IEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgcHJpbnRmKCJFbnRlcmVkIG9wdGltaXplX2Zy
b21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2stPmpp
dEV4ZWN1dGVDb3VudGVyKCksIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIo
KSwgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CisgICAgcHJpbnRmKCIl
cDogRW50ZXJlZCBvcHRpbWl6ZV9mcm9tX2xvb3Agd2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCBy
ZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIg
PSAldVxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCksIGNvZGVC
bG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29kZUJsb2NrLT5vcHRpbWl6YXRp
b25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYKIAogICAgIGlmIChjb2RlQmxvY2stPmhhc09wdGlt
aXplZFJlcGxhY2VtZW50KCkpIHsKQEAgLTIxODMsNDUgKzIxODMsMTMgQEAgREVGSU5FX1NUVUJf
RlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlu
bGluZSBDYWxsRnJhbWUqIGFyaXR5Q2hlY2tGb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lz
dGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCi17Ci0g
ICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKTsK
LSAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgQ29kZUJsb2NrKiBu
ZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVG
b3Ioa2luZCk7Ci0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOwotCi0gICAgLy8gVGhpcyBlbnN1cmVzIGVu
b3VnaCBzcGFjZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1bWVudHMg
cGFzc2VkIGJ5IHRoZSBjYWxsZXIuCi0gICAgaWYgKCFyZWdpc3RlckZpbGUtPmdyb3coY2FsbEZy
YW1lLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29k
ZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
QVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpOwotCi0gICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1l
IGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVm
aW5lZC4KLSAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAt
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwotICAgIFJlZ2lzdGVyKiBzcmMgPSBjYWxsRnJh
bWUtPnJlZ2lzdGVycygpOwotICAgIFJlZ2lzdGVyKiBkc3QgPSBjYWxsRnJhbWUtPnJlZ2lzdGVy
cygpICsgZGVsdGE7Ci0KLSAgICBpbnQgaTsKLSAgICBpbnQgZW5kID0gLUNhbGxGcmFtZTo6b2Zm
c2V0Rm9yKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKLSAgICBmb3IgKGkgPSAtMTsgaSA+
PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0gc3JjW2ldOwotCi0gICAgZW5kIC09IGRlbHRh
OwotICAgIGZvciAoIDsgaSA+PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0ganNVbmRlZmlu
ZWQoKTsKLQotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUo
ZHN0KTsKLSAgICBBU1NFUlQoKHZvaWQqKW5ld0NhbGxGcmFtZSA8PSByZWdpc3RlckZpbGUtPmVu
ZCgpKTsKLSAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElP
Tih2b2lkKiwgb3BfY2FsbF9hcml0eUNoZWNrKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFN
RShzdGFja0ZyYW1lKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5j
YWxsRnJhbWU7CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3Io
Y2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOworICAgIENh
bGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNh
bGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDYWxsKTsKICAgICBpZiAo
IW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2
b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKQEAgLTIyMzQs
NyArMjIwMiw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKIAog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAgICBD
YWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0Zy
YW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgQ2FsbEZyYW1lKiBuZXdD
YWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFj
a0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7CiAgICAgaWYgKCFuZXdDYWxs
RnJhbWUpCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0
YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVy
Zmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxMDYwODIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDggKzI2LDEwIEBACiAjaWZuZGVmIEpTSW50ZXJmYWNlSklUX2gKICNkZWZpbmUgSlNJ
bnRlcmZhY2VKSVRfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1
ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTU3RyaW5n
LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAj
aW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRDb21tb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDb21t
b25faAorI2RlZmluZSBMTEludENvbW1vbl9oCisKKyNkZWZpbmUgTExJTlRfRVhFQ1VUSU9OX1RS
QUNJTkcgMAorI2RlZmluZSBMTElOVF9IRUxQRVJfVFJBQ0lORyAwCisKKyNlbmRpZiAvLyBMTElu
dENvbW1vbl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0
YS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkxMSW50RGF0YS5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSW5zdHJ1Y3Rp
b24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiT3Bjb2Rl
LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitEYXRhOjpEYXRhKCkK
KyAgICA6IG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKG5ldyBJbnN0cnVjdGlvblttYXhPcGNvZGVM
ZW5ndGggKyAxXSkKKyAgICAsIG1fb3Bjb2RlTWFwKG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXSkK
K3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heE9wY29kZUxlbmd0aCArIDE7ICsraSkKKyAg
ICAgICAgbV9leGNlcHRpb25JbnN0cnVjdGlvbnNbaV0udS5wb2ludGVyID0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSk7CisjZGVmaW5lIE9Q
Q09ERV9FTlRSWShvcGNvZGUsIGxlbmd0aCkgbV9vcGNvZGVNYXBbb3Bjb2RlXSA9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50XyMjb3Bjb2RlKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoT1BD
T0RFX0VOVFJZKTsKKyN1bmRlZiBPUENPREVfRU5UUlkKK30KKworRGF0YTo6fkRhdGEoKQorewor
ICAgIGRlbGV0ZVtdIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIGRlbGV0ZVtdIG1fb3Bj
b2RlTWFwOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludERhdGFfaAorI2RlZmluZSBMTEludERh
dGFfaAorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisK
K25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTElu
dCB7CisKKyNpZiBFTkFCTEUoTExJTlQpCitjbGFzcyBEYXRhIHsKK3B1YmxpYzoKKyAgICBEYXRh
KCk7CisgICAgfkRhdGEoKTsKKyAgICAKKyAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsK
KyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fb3Bjb2RlTWFwOworICAgIH0KK3ByaXZhdGU6CisgICAgSW5zdHJ1Y3Rpb24qIG1fZXhj
ZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIE9wY29kZSogbV9vcGNvZGVNYXA7Cit9OworI2Vsc2Ug
Ly8gRU5BQkxFKExMSU5UKQorCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWlzc2lu
Zy1ub3JldHVybiIKKyNlbmRpZgorCitjbGFzcyBEYXRhIHsKK3B1YmxpYzoKKyAgICBJbnN0cnVj
dGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBv
cGNvZGVNYXAoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KK307CisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xh
bmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50RGF0YV9oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRy
eXBvaW50cy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1
ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJMTElu
dFRodW5rcy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKSVRD
b2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2spCit7CisgICAg
aWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGlmIChraW5kID09IENvZGVG
b3JDYWxsKSB7CisgICAgICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1i
bGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9w
cm9sb2d1ZSkpKSk7CisgICAgICAgICAgICBhcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQo
a2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhv
c3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJl
ZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkpKSk7CisgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eV9jaGVjaykpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2Rl
KGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9y
KSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgICAgIGFyaXR5Q2hlY2sgPSBnbG9i
YWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9y
KS5jb2RlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBD
b2RlRm9yQ29uc3RydWN0KTsKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENU
SVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1
YihmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpOwor
fQorCit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklU
Q29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAg
ICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfZXZhbF9wcm9sb2d1ZSkpKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHVi
KGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cit9
CisKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBK
SVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgewor
ICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENU
SVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFC
TEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBv
aW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVu
dHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFbnRyeXBvaW50cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRFbnRy
eXBvaW50c19oCisjZGVmaW5lIExMSW50RW50cnlwb2ludHNfaAorCisjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6
YXRpb25LaW5kLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFdmFsQ29kZUJsb2NrOwor
Y2xhc3MgSklUQ29kZTsKK2NsYXNzIEpTR2xvYmFsRGF0YTsKK2NsYXNzIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cjsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKK2NsYXNzIFByb2dyYW1Db2Rl
QmxvY2s7CisKK25hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50
KEpTR2xvYmFsRGF0YSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIEpJVENvZGUmLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2spOwordm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0ds
b2JhbERhdGEmLCBKSVRDb2RlJik7Cit2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFs
RGF0YSYsIEpJVENvZGUmKTsKKworaW5saW5lIHZvaWQgZ2V0RW50cnlwb2ludChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIEV2YWxDb2RlQmxvY2sqLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAg
IGdldEV2YWxFbnRyeXBvaW50KGdsb2JhbERhdGEsIGppdENvZGUpOworfQorCitpbmxpbmUgdm9p
ZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvZ3JhbUNvZGVCbG9j
ayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoZ2xvYmFs
RGF0YSwgaml0Q29kZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5k
aWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRFbnRyeXBvaW50c19oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlv
bnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJMTEludEV4Y2VwdGlvbnMuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkNh
bGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkluc3RydWN0aW9u
LmgiCisjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgi
CisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIExMSW50IHsKKwordm9pZCBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoRXhlY1N0YXRl
KiBleGVjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxE
YXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4
Y2VwdGlvbiAlcy5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNl
bmRpZgorICAgIGdlbmVyaWNUaHJvdygKKyAgICAgICAgZ2xvYmFsRGF0YSwgZXhlYy0+Y2FsbGVy
RnJhbWUoKSwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLAorICAgICAgICBleGVjLT5jYWxsZXJGcmFt
ZSgpLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZXhlYy0+Y2FsbGVyRnJhbWUoKSwgZXhl
Yy0+cmV0dXJuUEMoKSkpOworfQorCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvd0ZvclRocm93
bkV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERh
dGEoKS5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK0luc3RydWN0aW9u
KiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAg
IEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJ
TlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAocmV0
dXJuVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7Cisj
ZW5kaWYKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhj
ZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsK
KyAgICAKKyAgICByZXR1cm4gZ2xvYmFsRGF0YS0+bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0
aW9ucygpOworfQorCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0
aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFs
RGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBl
eGNlcHRpb24gJXMgKGNhbGxUb1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNj
cmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBn
bG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9u
cygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgTExJbnRFeGNlcHRpb25zX2gKKyNkZWZpbmUgTExJbnRFeGNlcHRpb25z
X2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRy
YXMuaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4
ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKworLy8g
VGhyb3cgdGhlIGN1cnJlbnRseSBhY3RpdmUgZXhjZXB0aW9uIGluIHRoZSBjb250ZXh0IG9mIHRo
ZSBjYWxsZXIncyBjYWxsIGZyYW1lLgordm9pZCBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoRXhl
Y1N0YXRlKik7CisKKy8vIFRlbGxzIHlvdSB3aGVyZSB0byBqdW1wIHRvIGlmIHlvdSB3YW50IHRv
IHJldHVybi10by10aHJvdywgYWZ0ZXIgeW91J3ZlIGFscmVhZHkKKy8vIHNldCB1cCBhbGwgaW5m
b3JtYXRpb24gbmVlZGVkIHRvIHRocm93IHRoZSBleGNlcHRpb24uCitJbnN0cnVjdGlvbiogcmV0
dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihFeGVjU3RhdGUqKTsKKworLy8gU2F2ZXMgdGhl
IGN1cnJlbnQgUEMgaW4gdGhlIGdsb2JhbCBkYXRhIGZvciBzYWZlLWtlZXBpbmcsIGFuZCBnaXZl
cyB5b3UgYSBQQworLy8gdGhhdCB5b3UgY2FuIHRlbGwgdGhlIGludGVycHJldGVyIHRvIGdvIHRv
LCB3aGljaCB3aGVuIGFkdmFuY2VkIGJldHdlZW4gMQorLy8gYW5kIDkgc2xvdHMgd2lsbCBnaXZl
IHlvdSBhbiAiaW5zdHJ1Y3Rpb24iIHRoYXQgdGhyZWFkcyB0byB0aGUgaW50ZXJwcmV0ZXIncwor
Ly8gZXhjZXB0aW9uIGhhbmRsZXIuIE5vdGUgdGhhdCBpZiB5b3UgZ2l2ZSBpdCB0aGUgUEMgZm9y
IGV4Y2VwdGlvbiBoYW5kbGluZywKKy8vIGl0J3Mgc21hcnQgZW5vdWdoIHRvIGp1c3QgcmV0dXJu
IHRoYXQgUEMgd2l0aG91dCBkb2luZyBhbnl0aGluZyBlbHNlOyB0aGlzCisvLyBsZXRzIHlvdSB0
aHJlYWQgZXhjZXB0aW9uIGhhbmRsaW5nIHRocm91Z2ggY29tbW9uIGhlbHBlciBmdW5jdGlvbnMg
dXNlZCBieQorLy8gb3RoZXIgaGVscGVycy4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4
ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisKKy8vIFVzZSB0aGlzIHdoZW4geW91J3JlIHRocm93
aW5nIHRvIGEgY2FsbCB0aHVuay4KK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSosIEluc3Ry
dWN0aW9uKik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5B
QkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRFeGNlcHRpb25zX2gKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTQyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRIZWxw
ZXJzLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNp
bmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKKyNpbmNs
dWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNp
bmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJKSVREcml2ZXIuaCIKKyNpbmNsdWRlICJKU0FjdGl2
YXRpb24uaCIKKyNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgIkxM
SW50RXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewor
CisjZGVmaW5lIExMSU5UX09QKGluZGV4KSAoZXhlYy0+dW5jaGVja2VkUihwY1tpbmRleF0udS5v
cGVyYW5kKSkKKyNkZWZpbmUgTExJTlRfT1BfQyhpbmRleCkgKGV4ZWMtPnIocGNbaW5kZXhdLnUu
b3BlcmFuZCkpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOX1RXTyhmaXJzdCwgc2Vjb25kKSBkbyB7
ICAgICAgIFwKKyAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgICAgICB2b2lkKiBhOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgICAgICB2b2lkKiBiOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIH0gcGFpcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIGludDY0X3QgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
fSBfX3J0X3U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX19y
dF91LnBhaXIuYSA9IGZpcnN0OyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX19ydF91
LnBhaXIuYiA9IHNlY29uZDsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9f
cnRfdS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkK
KworI2RlZmluZSBMTElOVF9FTkRfSU1QTCgpIExMSU5UX1JFVFVSTl9UV08ocGMsIGV4ZWMpCisK
KyNkZWZpbmUgTExJTlRfVEhST1coZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBfX3RfZ2xvYmFsRGF0YSA9IGV4ZWMt
Pmdsb2JhbERhdGEoKTsgICAgICAgIFwKKyAgICAgICAgX190X2dsb2JhbERhdGEuZXhjZXB0aW9u
ID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgIFwKKyAgICAgICAgcGMgPSByZXR1cm5U
b1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
TExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DSEVDS19FWENFUFRJT04o
KSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VMWShleGVjLT5n
bG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgeyAgIFwKKyAgICAgICAgICAgIHBjID0gcmV0dXJuVG9U
aHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTExJTlRfRU5EX0lN
UEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkK
KworI2RlZmluZSBMTElOVF9FTkQoKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBM
TElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZh
bHNlKQorCisjZGVmaW5lIExMSU5UX0JSQU5DSChvcGNvZGUsIGNvbmRpdGlvbikgZG8geyAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIGJvb2wgX19iX2NvbmRpdGlvbiA9IChjb25kaXRp
b24pOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChf
X2JfY29uZGl0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICBwYyArPSBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51Lm9wZXJhbmQ7
ICAgICAgICBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwYyArPSBPUENPREVfTEVOR1RIKG9w
Y29kZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBM
KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGls
ZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOKHZhbHVlKSBkbyB7ICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgSlNWYWx1ZSBfX3JfcmV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgIFwK
KyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgTExJTlRfT1AoMSkgPSBfX3JfcmV0dXJuVmFsdWU7ICAgICAgICAgIFwKKyAgICAgICAgTExJ
TlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxz
ZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fUFJPRklMRUQob3Bjb2RlLCB2YWx1ZSkgZG8geyAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgSlNWYWx1ZSBfX3JwX3JldHVyblZhbHVlID0gKHZhbHVl
KTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9PUCgxKSA9
IF9fcnBfcmV0dXJuVmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcGNb
T1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5wcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBcCisg
ICAgICAgICAgICBKU1ZhbHVlOjplbmNvZGUoX19ycF9yZXR1cm5WYWx1ZSk7ICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9D
QUxMX0VORF9JTVBMKGV4ZWMsIGNhbGxUYXJnZXQpIExMSU5UX1JFVFVSTl9UV08oKGNhbGxUYXJn
ZXQpLCAoZXhlYykpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgZXhjZXB0
aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2N0
X2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgSW5zdHJ1Y3Rpb24qIF9fY3RfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBfX2N0X2dsb2JhbERhdGEgPSAoX19j
dF9leGVjKS0+Z2xvYmFsRGF0YSgpOyAgICAgIFwKKyAgICAgICAgX19jdF9nbG9iYWxEYXRhLmV4
Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
TExJTlRfQ0FMTF9FTkRfSU1QTChfX2N0X2V4ZWMsIGNhbGxUb1Rocm93KF9fY3RfZXhlYywgX19j
dF9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9DSEVD
S19FWENFUFRJT04oZXhlYywgcGMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgRXhlY1N0YXRlKiBfX2NjZV9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY2NlX3BjID0gKHBjKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKF9fY2Nl
X2V4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jY2VfZXhlYywgY2FsbFRvVGhyb3coX19jY2VfZXhl
YywgX19jY2VfcGMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NB
TExfUkVUVVJOKGV4ZWMsIHBjLCBjYWxsVGFyZ2V0KSBkbyB7ICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIEV4ZWNTdGF0ZSogX19jcl9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2NyX3BjID0gKHBjKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHZvaWQqIF9fY3Jf
Y2FsbFRhcmdldCA9IChjYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKF9fY3JfZXhlYy0+Y2FsbGVyRnJhbWUo
KSwgX19jcl9wYyk7ICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jcl9leGVjLCBf
X2NyX2NhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
K2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0
ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkKK3sK
KyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6
ICVkOiAlZFxuIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4
ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9j
aygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAg
IGZyb21XaGVyZSwKKyAgICAgICAgICAgb3BlcmFuZCwKKyAgICAgICAgICAgcGNbb3BlcmFuZF0u
dS5vcGVyYW5kKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1
cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBj
LCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkKK3sKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJ
TlRfT1BfQyhvcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3Qg
eworICAgICAgICAgICAgdWludDMyX3QgdGFnOworICAgICAgICAgICAgdWludDMyX3QgcGF5bG9h
ZDsKKyAgICAgICAgfSBiaXRzOworICAgICAgICBFbmNvZGVkSlNWYWx1ZSBhc1ZhbHVlOworICAg
IH0gdTsKKyAgICB1LmFzVmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOworICAgIHByaW50
ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkOiAl
MDh4OiUwOHgiLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhl
YywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2Nr
KCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRh
KCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAg
ZnJvbVdoZXJlLAorICAgICAgICAgICBvcGVyYW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51
Lm9wZXJhbmQsCisgICAgICAgICAgIHUuYml0cy50YWcsCisgICAgICAgICAgIHUuYml0cy5wYXls
b2FkKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgcHJpbnRmKCI6ICVzIiwgdmFsdWUuZGVzY3JpcHRp
b24oKSk7CisjZW5kaWYKKyAgICBwcmludGYoIlxuIik7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlKQoreworICAgIHByaW50ZigiJXAgLyAl
cDogaW4gcHJvbG9ndWUuXG4iLCBleGVjLT5jb2RlQmxvY2soKSwgZXhlYyk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK3N0YXRpYyB2b2lkIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IGNoYXIqIGNvbW1lbnQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
K3sKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsK
KyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmpzRXhlY3V0YWJs
ZSgpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gJmV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5
dGVjb2RlRm9yKGtpbmQpOworICAgIHByaW50ZigiJXAgLyAlcDogaW4gJXMgb2YgZnVuY3Rpb24g
JXAsIGV4ZWN1dGFibGUgJXA7IG51bVZhcnMgPSAldSwgbnVtUGFyYW1ldGVycyA9ICV1LCBudW1D
YWxsZWVSZWdpc3RlcnMgPSAldS5cbiIsCisgICAgICAgICAgIGNvZGVCbG9jaywgZXhlYywgY29t
bWVudCwgY2FsbGVlLCBleGVjdXRhYmxlLAorICAgICAgICAgICBjb2RlQmxvY2stPm1fbnVtVmFy
cywgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdp
c3RlcnMpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9m
b3JfY2FsbCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNhbGwgcHJvbG9n
dWUiLCBDb2RlRm9yQ2FsbCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgdHJhY2VG
dW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjb25zdHJ1Y3QgcHJvbG9ndWUiLCBDb2RlRm9yQ29uc3Ry
dWN0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJp
dHlDaGVja19mb3JfY2FsbCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNh
bGwgYXJpdHkgY2hlY2siLCBDb2RlRm9yQ2FsbCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0
cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBhcml0eSBjaGVjayIsIENvZGVG
b3JDb25zdHJ1Y3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0
cmFjZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsICIsCisgICAg
ICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBz
dGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSkpOworI2lmbmRlZiBOREVCVUcKKyAgICBwcmludGYoIiVzLCAiLCBvcGNvZGVO
YW1lc1tleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUu
b3Bjb2RlKV0pOworI2Vsc2UKKyAgICBwcmludGYoIm9wIyV1LCAiLCBleGVjLT5nbG9iYWxEYXRh
KCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSk7CisjZW5kaWYKKyAg
ICBwcmludGYoInNjb3BlICVwXG4iLCBleGVjLT5zY29wZUNoYWluKCkpOworICAgIExMSU5UX0VO
RCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChzcGVjaWFsX3RyYWNlKQoreworICAgIHByaW50
ZigiJXAgLyAlcDogZXhlY3V0aW5nIHNwZWNpYWwgY2FzZSBiYyMlenUsIG9wIyV1LCByZXR1cm4g
UEMgaXMgJXBcbiIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBl
eGVjLAorICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxv
Y2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAg
ICBleGVjLT5yZXR1cm5QQygpLnZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitpbmxp
bmUgYm9vbCBzaG91bGRKSVQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIFlvdSBjYW4gbW9k
aWZ5IHRoaXMgdG8gdHVybiBvZmYgSklUdGluZyB3aXRob3V0IHJlYnVpbGRpbmcgdGhlIHdvcmxk
LgorICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCk7Cit9CisKK2VudW0g
RW50cnlLaW5kIHsgUHJvbG9ndWUsIEFyaXR5Q2hlY2sgfTsKK3N0YXRpYyBIZWxwZXJSZXR1cm5U
eXBlIGVudHJ5T1NSKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgY29uc3QgY2hhciAqbmFtZSwgRW50cnlLaW5kIGtpbmQpCit7CisjaWYgRU5B
QkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkICVzIHdpdGggZXhl
Y3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBuYW1lLCBjb2RlQmxvY2stPmxsaW50RXhl
Y3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoIXNob3VsZEpJVChleGVjKSkg
eworICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgICAgICBMTElO
VF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAgICBpZiAoIWNvZGVCbG9jay0+aml0Q29t
cGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikK
KyAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2Vu
ZGlmCisgICAgfQorICAgIGNvZGVCbG9jay0+aml0U29vbigpOworICAgIGlmIChraW5kID09IFBy
b2xvZ3VlKQorICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+Z2V0SklUQ29kZSgp
LmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoMCksIGV4ZWMpOworICAgIEFTU0VSVChraW5kID09
IEFyaXR5Q2hlY2spOworICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRDb2Rl
V2l0aEFyaXR5Q2hlY2soKS5leGVjdXRhYmxlQWRkcmVzcygpLCBleGVjKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woZW50cnlfb3NyKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywg
ZXhlYy0+Y29kZUJsb2NrKCksICJlbnRyeV9vc3IiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCkKK3sKKyAgICByZXR1cm4gZW50
cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxl
KCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDYWxsKSwgImVudHJ5X29zcl9mdW5jdGlv
bl9mb3JfY2FsbCIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBj
LCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRC
eXRlY29kZUZvcihDb2RlRm9yQ29uc3RydWN0KSwgImVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29u
c3RydWN0IiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywg
cGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRl
ZEJ5dGVjb2RlRm9yKENvZGVGb3JDYWxsKSwgImVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eUNoZWNrIiwgQXJpdHlDaGVjayk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29z
cl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2spCit7CisgICAgcmV0dXJuIGVudHJ5
T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgp
LT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ29uc3RydWN0KSwgImVudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2siLCBBcml0eUNoZWNrKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0wobG9vcF9vc3IpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVj
LT5jb2RlQmxvY2soKTsKKyAgICAKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHBy
aW50ZigiJXA6IEVudGVyZWQgbG9vcF9vc3Igd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBj
b2RlQmxvY2ssIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAg
IAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJ
VEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7CisgICAg
fQorICAgIAorICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEo
KSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICBwcmludGYoIiAgICBD
b2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICB9CisgICAgY29kZUJs
b2NrLT5qaXRTb29uKCk7CisgICAgCisgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgp
ID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAKKyAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRN
YWNoaW5lT2Zmc2V0PiBtYXA7CisgICAgY29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRlY29kZSht
YXApOworICAgIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCogbWFwcGluZyA9IGJpbmFyeVNlYXJj
aDxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQsIHVuc2lnbmVkLCBCeXRlY29kZUFuZE1hY2hpbmVP
ZmZzZXQ6OmdldEJ5dGVjb2RlSW5kZXg+KG1hcC5iZWdpbigpLCBtYXAuc2l6ZSgpLCBwYyAtIGNv
ZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgQVNTRVJUKG1hcHBpbmcpOwor
ICAgIEFTU0VSVChtYXBwaW5nLT5tX2J5dGVjb2RlSW5kZXggPT0gc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisgICAgCisgICAg
dm9pZCoganVtcFRhcmdldCA9IGNvZGVCbG9jay0+Z2V0SklUQ29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzQXRPZmZzZXQobWFwcGluZy0+bV9tYWNoaW5lQ29kZU9mZnNldCk7CisgICAgQVNTRVJUKGp1
bXBUYXJnZXQpOworICAgIAorICAgIExMSU5UX1JFVFVSTl9UV08oanVtcFRhcmdldCwgZXhlYyk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpCit7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0Vf
T1NSKQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgcmVwbGFjZSB3aXRoIGV4ZWN1dGVDb3VudGVy
ID0gJWRcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOwor
I2VuZGlmCisgICAgCisgICAgaWYgKHNob3VsZEpJVChleGVjKSkgeworICAgICAgICBpZiAoIWNv
ZGVCbG9jay0+aml0Q29tcGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5BQkxFKEpJ
VF9WRVJCT1NFX09TUikKKyAgICAgICAgICAgIHByaW50ZigiICAgIENvZGUgd2FzIGFscmVhZHkg
Y29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIGNvZGVCbG9jay0+aml0
U29vbigpOworICAgIH0gZWxzZQorICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29v
bigpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9m
aWxlX2NoZWNrKQoreworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDaGVj
a2luZyBzdGFjayBoZWlnaHQgd2l0aCBleGVjID0gJXAuXG4iLCBleGVjKTsKKyAgICBwcmludGYo
IkNvZGVCbG9jayA9ICVwLlxuIiwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAgIHByaW50ZigiTnVt
IGNhbGxlZSByZWdpc3RlcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxl
ZVJlZ2lzdGVycyk7CisgICAgcHJpbnRmKCJOdW0gdmFycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJs
b2NrKCktPm1fbnVtVmFycyk7CisgICAgcHJpbnRmKCJDdXJyZW50IGVuZCBpcyBhdCAlcC5cbiIs
IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOwor
I2VuZGlmCisgICAgQVNTRVJUKCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+
bV9udW1DYWxsZWVSZWdpc3RlcnNdID4gZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5y
ZWdpc3RlckZpbGUoKS5lbmQoKSk7CisgICAgaWYgKFVOTElLRUxZKCFleGVjLT5nbG9iYWxEYXRh
KCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmdyb3coJmV4ZWMtPnJlZ2lzdGVycygpW2V4
ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVyc10pKSkgeworICAgICAgICBleGVj
ID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2Vw
dGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0
ZXJUaHJvd0luQ2FsbGVyKGV4ZWMpOworICAgICAgICBwYyA9IHJldHVyblRvVGhyb3dGb3JUaHJv
d25FeGNlcHRpb24oZXhlYyk7CisgICAgfQorICAgIExMSU5UX0VORF9JTVBMKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0YXRl
KiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5n
bG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ2FsbCk7Cisg
ICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOwor
ICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxv
d0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYyk7Cisg
ICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3
RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVj
aykKK3sKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hl
Y2tGb3IoZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxl
KCksIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBleGVj
ID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2Vw
dGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0
ZXJUaHJvd0luQ2FsbGVyKGV4ZWMpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSksIGV4ZWMpOworICAgIH0KKyAg
ICBMTElOVF9SRVRVUk5fVFdPKDAsIG5ld0V4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pCit7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAg
ICBwcmludGYoIkNyZWF0aW5nIGFuIGFjdGl2YXRpb24sIGV4ZWMgPSAlcCFcbiIsIGV4ZWMpOwor
I2VuZGlmCisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gSlNBY3RpdmF0aW9uOjpjcmVh
dGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFi
bGUqPihleGVjLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkpKTsKKyAgICBleGVjLT5z
ZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChhY3RpdmF0aW9uKSk7CisgICAg
TExJTlRfUkVUVVJOKEpTVmFsdWUoYWN0aXZhdGlvbikpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKK3sKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpT
VmFsdWUoQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKSk7CisgICAg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgZXhlYy0+dW5jaGVja2VkUihwY1sxXS51Lm9w
ZXJhbmQpID0gYXJndW1lbnRzOworICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3Vt
ZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOworICAgIExMSU5UX0VO
RCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3RoaXMpCit7CisgICAg
SlNGdW5jdGlvbiogY29uc3RydWN0b3IgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAg
ICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRh
OworICAgIEFTU0VSVChjb25zdHJ1Y3Rvci0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0
YShjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSkgPT0gQ29uc3RydWN0VHlwZUpTKTsKKyNlbmRp
ZgorICAgIAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOworICAgIEpTVmFsdWUgcHJvdG8gPSBM
TElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKHByb3RvLmlzT2JqZWN0KCkpCisgICAgICAg
IHN0cnVjdHVyZSA9IGFzT2JqZWN0KHByb3RvKS0+aW5oZXJpdG9ySUQoZXhlYy0+Z2xvYmFsRGF0
YSgpKTsKKyAgICBlbHNlCisgICAgICAgIHN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5zY29wZSgp
LT5nbG9iYWxPYmplY3QtPmVtcHR5T2JqZWN0U3RydWN0dXJlKCk7CisgICAgCisgICAgTExJTlRf
UkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY29udmVydF90aGlzKQoreworICAgIEpTVmFsdWUgdjEgPSBM
TElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHYxLmlzUHJpbWl0aXZlKCkpOworICAg
IExMSU5UX1JFVFVSTih2MS50b1RoaXNPYmplY3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbmV3X29iamVjdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1w
dHlPYmplY3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5
KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RBcnJheShleGVjLCBiaXR3aXNlX2Nhc3Q8
SlNWYWx1ZSo+KCZMTElOVF9PUCgyKSksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZlcikKK3sKKyAgICBMTElOVF9SRVRVUk4o
Y29uc3RydWN0QXJyYXkoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKHBj
WzJdLnUub3BlcmFuZCksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbmV3X3JlZ2V4cCkKK3sKKyAgICBSZWdFeHAqIHJlZ0V4cCA9IGV4ZWMtPmNvZGVC
bG9jaygpLT5yZWdleHAocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIXJlZ0V4cC0+aXNWYWxp
ZCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxp
ZCBmbGFnIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSk7CisgICAgTExJTlRfUkVU
VVJOKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVj
dHVyZSgpLCByZWdFeHApKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCkKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0Jv
b2xlYW4oZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2VxKQoreworICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFs
dWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVxKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oIUpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2xlc3MpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8dHJ1ZT4o
ZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKQoreworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ3JlYXRlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczxmYWxz
ZT4oZXhlYywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgp
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcmVxKQoreworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3ByZV9pbmMpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5U
X09QKDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSArIDEpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3ByZV9kZWMpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5U
X09QKDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAtIDEpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Bvc3RfaW5jKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgy
KS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihy
ZXN1bHQgKyAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0g
TExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0g
anNOdW1iZXIocmVzdWx0IC0gMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKC1MTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKQoreworICAgIEpTVmFsdWUgdjEg
PSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHYyID0gTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCk7CisgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYo
IlRyeWluZyB0byBhZGQgJXMiLCB2MS5kZXNjcmlwdGlvbigpKTsKKyAgICBwcmludGYoIiB0byAl
cy5cbiIsIHYyLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKHYxLmlzU3Ry
aW5nKCkgJiYgIXYyLmlzT2JqZWN0KCkpCisgICAgICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhl
eGVjLCBhc1N0cmluZyh2MSksIHYyLnRvU3RyaW5nKGV4ZWMpKSk7CisgICAgCisgICAgaWYgKHYx
LmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKHYxLmFzTnVtYmVyKCkgKyB2Mi5hc051bWJlcigpKSk7CisgICAgCisgICAgTExJTlRfUkVU
VVJOKGpzQWRkU2xvd0Nhc2UoZXhlYywgdjEsIHYyKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9tdWwpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICogTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1i
ZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1YikKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhl
YykgLSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAvIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9t
b2QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYyksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4
ZWMpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KQoreworICAgIExM
SU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMp
IDw8IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVy
KExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Vyc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLnRvVUludDMyKGV4ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMy
KGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhl
YykgJiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIo
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSB8IExMSU5UX09QX0MoMykuanNW
YWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Jp
dHhvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9JbnQzMihleGVjKSBeIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCkKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIofkxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKK3sKKyAg
ICBKU1ZhbHVlIGJhc2VWYWwgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyNpZm5kZWYgTkRF
QlVHCisgICAgVHlwZUluZm8gdHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKTsKKyAgICBBU1NFUlQo
IWJhc2VWYWwuaXNPYmplY3QoKQorICAgICAgICAgICB8fCAhKHR5cGVJbmZvID0gYXNPYmplY3Qo
YmFzZVZhbCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2Uo
KSk7CisjZW5kaWYKKyAgICBMTElOVF9USFJPVyhjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihleGVj
LCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2luc3RhbmNlb2YpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0
aHM6Om9wSW5zdGFuY2VPZlNsb3coZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQpLmpzVmFsdWUoKSkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNUeXBl
U3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCkKK3sKKyAgICBKU1ZhbHVlIHYgPSBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKHYuaXND
ZWxsKCkgPyB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkKCkgOiB2LmlzVW5kZWZpbmVkKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX2Jvb2xlYW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaXNfc3RyaW5nKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oaXNKU1N0cmluZyhM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2lzX29iamVjdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNPYmplY3RUeXBl
KExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaXNfZnVuY3Rpb24pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rp
b25UeXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0
aHM6Om9wSW4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSkKK3sKKyAg
ICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZSwgQ29tbW9uU2xvd1BhdGhzOjpvcFJl
c29sdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5k
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKQoreworICAg
IExMSU5UX1JFVFVSTl9QUk9GSUxFRCgKKyAgICAgICAgb3BfcmVzb2x2ZV9za2lwLAorICAgICAg
ICBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVNraXAoCisgICAgICAgICAgICBleGVjLAorICAg
ICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwK
KyAgICAgICAgICAgIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitzdGF0aWMgSlNWYWx1ZSByZXNv
bHZlR2xvYmFsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGds
b2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0u
dS5vcGVyYW5kOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUu
Z2V0KCk7CisgICAgCisgICAgQVNTRVJUX1VOVVNFRChzdHJ1Y3R1cmUsIHN0cnVjdHVyZSAhPSBn
bG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9
IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qo
Z2xvYmFsT2JqZWN0KTsKKyAgICAKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNs
b3QoZXhlYywgaWRlbnQsIHNsb3QpKSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5n
ZXRWYWx1ZShleGVjLCBpZGVudCk7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUo
KSAmJiAhZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnko
KQorICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgeworICAg
ICAgICAgICAgcGNbM10udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmds
b2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5z
dHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAor
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVVbmRlZmluZWRWYXJpYWJs
ZUVycm9yKGV4ZWMsIGlkZW50KTsKKyAgICByZXR1cm4gSlNWYWx1ZSgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCit7CisgICAgTExJTlRfUkVUVVJOX1BS
T0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFsLCByZXNvbHZlR2xvYmFsKGV4ZWMsIHBjKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQoreworICAg
IExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljLCByZXNvbHZl
R2xvYmFsKGV4ZWMsIHBjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZl
X2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQoreworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxF
RChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljLCBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZShl
eGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAgSWRlbnRp
ZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJh
bmQpOworICAgIGlmIChwY1szXS51Lm9wZXJhbmQpIHsKKyAgICAgICAgSlNWYWx1ZSBiYXNlID0g
SlNDOjpyZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCB0cnVlKTsK
KyAgICAgICAgaWYgKCFiYXNlKQorICAgICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JG
b3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICAg
ICAgTExJTlRfUkVUVVJOKGJhc2UpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk5fUFJP
RklMRUQob3BfcmVzb2x2ZV9iYXNlLCBKU0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVj
LT5zY29wZUNoYWluKCksIGZhbHNlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9l
bnN1cmVfcHJvcGVydHlfZXhpc3RzKQoreworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVj
dChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7
CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihw
Y1syXS51Lm9wZXJhbmQpOworICAgIGlmICghb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywg
aWRlbnQsIHNsb3QpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRH
bG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpCit7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhCYXNlKGV4
ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5U
X09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9
IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5n
LCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4KKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90
aGlzKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVX
aXRoVGhpcyhleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJh
bmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJ
TlRfT1AoMikgPSByZXN1bHQ7CisgICAgLy8gRklYTUU6IHRlY2huaWNhbGx5IHNob3VsZCBoYXZl
IHByb2ZpbGluZywgYnV0IHdlIGRvbid0IGRvIGl0IGJlY2F1c2UgdGhlIERGRyB3b24ndCB1c2Ug
aXQuCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRf
YnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsK
KyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9w
ZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7
CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKKworICAgIEpTVmFsdWUgcmVzdWx0
ID0gYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CisgICAgTExJTlRfT1AoMSkgPSByZXN1bHQ7CisKKyAgICBpZiAoYmFzZVZhbHVl
LmlzQ2VsbCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKQorICAgICAgICAmJiBzbG90
LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlCisgICAgICAgICYmIHNsb3QuY2FjaGVkUHJvcGVydHlU
eXBlKCkgPT0gUHJvcGVydHlTbG90OjpWYWx1ZSkgeworICAgICAgICAKKyAgICAgICAgSlNDZWxs
KiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0
cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVj
dHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgeworICAgICAgICAg
ICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAg
ICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1
ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcGNbT1BDT0RFX0xFTkdUSChvcF9nZXRf
YnlfaWQpIC0gMV0udS5wcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVz
dWx0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dl
dF9hcmd1bWVudHNfbGVuZ3RoKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZp
ZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIp
LmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworICAgIExMSU5U
X1JFVFVSTihiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+
aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY29kZUJsb2Nr
LT5pc1N0cmljdE1vZGUoKSk7CisgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAgICAgYXNP
YmplY3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgaWRlbnQsIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICBlbHNlCisgICAgICAgIGJhc2VWYWx1
ZS5wdXQoZXhlYywgaWRlbnQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgp
CisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKSkgeworICAgICAgICAKKyAgICAgICAgSlND
ZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAo
IXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0
cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKQorICAgICAgICAg
ICAgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgc3RydWN0dXJl
LT5wcmV2aW91c0lEKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gc3RydWN0dXJlLT5w
cm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMg
aXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBvZiB0aGUgbWV0aG9kcyB3ZSBjYWxsCisgICAgICAgICAg
ICAgICAgICAgIC8vIGJlbG93IG1heSBHQy4KKyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5v
cGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworCisgICAg
ICAgICAgICAgICAgICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsK
KyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1
cmUtPnByZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzRd
LnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcmV2aW91c0lE
KCkpOworICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9m
ZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBwY1s2XS51LnN0
cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCks
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAg
ICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4o
ZXhlYyk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFpbik7CisgICAgICAgICAgICAg
ICAgICAgIHBjWzddLnUuc3RydWN0dXJlQ2hhaW4uc2V0KAorICAgICAgICAgICAgICAgICAgICAg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjaGFp
bik7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0u
dS5vcGVyYW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51
Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50
X29wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAor
ICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5k
ID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJh
c2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMs
IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpKTsKKyAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5h
YmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihj
b3VsZERlbGV0ZSkpOworfQorCitpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKK3sKKyAgICBpZiAoTElL
RUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAg
ICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJv
cGVydHkoZXhlYywgYXNTdHJpbmcoc3Vic2NyaXB0KS0+dmFsdWUoZXhlYykpKQorICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQz
MigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAg
ICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5H
ZXRJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJ
bmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VW
YWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpCisgICAg
ICAgICAgICByZXR1cm4gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7
CisgICAgICAgIAorICAgICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBpKTsKKyAgICB9
CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBwcm9w
ZXJ0eSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKQoreworICAg
IExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9nZXRfYnlfdmFsLCBnZXRCeVZhbChleGVjLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpCit7CisgICAgSlNWYWx1
ZSBhcmd1bWVudHMgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhcmd1bWVudHMp
IHsKKyAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIExM
SU5UX09QKDIpID0gYXJndW1lbnRzOworICAgICAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAgICB9
CisgICAgCisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIGFyZ3VtZW50cywgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9i
eV9wbmFtZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJTlRfT1AoMiku
anNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3B1dF9ieV92YWwpCit7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0g
ZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7
CisgICAgCisgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKKyAgICAgICAg
dWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU0FycmF5
KGJhc2VWYWx1ZSkpIHsKKyAgICAgICAgICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5KGJh
c2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAoanNBcnJheS0+Y2FuU2V0SW5kZXgoaSkpCisgICAg
ICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgoZ2xvYmFsRGF0YSwgaSwgdmFsdWUpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5kZXgoanNBcnJh
eSwgZXhlYywgaSwgdmFsdWUpOworICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKQorICAgICAgICAgICAgJiYgYXNC
eXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAgICAgICAgICAgIEpT
Qnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7CisgICAgICAg
ICAgICBpZiAodmFsdWUuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXkt
PnNldEluZGV4KGksIHZhbHVlLmFzSW50MzIoKSk7CisgICAgICAgICAgICAgICAgTExJTlRfRU5E
KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgewor
ICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5hc051bWJlcigp
KTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgTExJTlRf
RU5EKCk7CisgICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2Ny
aXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZXhlYy0+Y29kZUJsb2NrKCktPmlzU3Ry
aWN0TW9kZSgpKTsKKyAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIHByb3BlcnR5LCB2YWx1ZSwgc2xv
dCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxf
YnlfdmFsKQoreworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZXhlYyk7
CisgICAgCisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsK
KyAgICAKKyAgICBib29sIGNvdWxkRGVsZXRlOworICAgIAorICAgIHVpbnQzMl90IGk7CisgICAg
aWYgKHN1YnNjcmlwdC5nZXRVSW50MzIoaSkpCisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9i
amVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KGJhc2VPYmplY3QsIGV4
ZWMsIGkpOworICAgIGVsc2UgeworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAg
ICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAg
IGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHko
YmFzZU9iamVjdCwgZXhlYywgcHJvcGVydHkpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNvdWxk
RGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJ
TlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5
LiIpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpCit7CisgICAgTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCkucHV0KGV4ZWMsIHBjWzJdLnUub3BlcmFuZCwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcHV0X2dldHRlcikKK3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlz
T2JqZWN0KCkpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSku
anNWYWx1ZSgpKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5p
ZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpzVmFs
dWUoKS5pc09iamVjdCgpKTsKKyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVHZXR0
ZXIoYmFzZU9iaiwgZXhlYywgaWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUoKSks
IDApOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0
X3NldHRlcikKK3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0KCkp
OworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgp
KTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVy
KHBjWzJdLnUub3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpzVmFsdWUoKS5pc09i
amVjdCgpKTsKKyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVTZXR0ZXIoYmFzZU9i
aiwgZXhlYywgaWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUoKSksIDApOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam1wX3Njb3BlcykK
K3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBTY29wZUNoYWlu
Tm9kZSogdG1wID0gZXhlYy0+c2NvcGVDaGFpbigpOworICAgIHdoaWxlIChjb3VudC0tKQorICAg
ICAgICB0bXAgPSB0bXAtPnBvcCgpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4odG1wKTsKKyAg
ICBwYyArPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qdHJ1ZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfanRydWUsIExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9qZmFsc2UpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pmYWxzZSwgIUxM
SU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9qbGVzcykKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3MsIGpzTGVz
czx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcykKK3sKKyAgICBM
TElOVF9CUkFOQ0gob3Bfam5sZXNzLCAhanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfamdyZWF0ZXIpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVhdGVyLCBq
c0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEp
LmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKQor
eworICAgIExMSU5UX0JSQU5DSChvcF9qbmdyZWF0ZXIsICFqc0xlc3M8ZmFsc2U+KGV4ZWMsIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3NlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bf
amxlc3NlcSwganNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bmxlc3NlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzZXEsICFqc0xlc3NFcTx0cnVl
PihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEpCit7CisgICAgTExJ
TlRfQlJBTkNIKG9wX2pncmVhdGVyZXEsIGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmdy
ZWF0ZXJlcSwgIWpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3N3aXRjaF9pbW0pCit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKTsKKyAgICBBU1NFUlQoc2NydXRpbmVlLmlzRG91YmxlKCkpOworICAgIGRvdWJsZSB2
YWx1ZSA9IHNjcnV0aW5lZS5hc0RvdWJsZSgpOworICAgIGludDMyX3QgaW50VmFsdWUgPSBzdGF0
aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51
Lm9wZXJhbmQ7CisgICAgaWYgKHZhbHVlID09IGludFZhbHVlKSB7CisgICAgICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9j
ay0+aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFs
dWUoaW50VmFsdWUsIGRlZmF1bHRPZmZzZXQpOworICAgIH0gZWxzZQorICAgICAgICBwYyArPSBk
ZWZhdWx0T2Zmc2V0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfc3dpdGNoX3N0cmluZykKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5k
OworICAgIGlmICghc2NydXRpbmVlLmlzU3RyaW5nKCkpCisgICAgICAgIHBjICs9IGRlZmF1bHRP
ZmZzZXQ7CisgICAgZWxzZSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRh
YmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoYXNTdHJpbmcoc2NydXRpbmVlKS0+
dmFsdWUoZXhlYykuaW1wbCgpLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYykKK3sKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxv
Y2stPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlCisgICAgICAgICAgIHx8ICFjb2RlQmxvY2st
Pm5lZWRzRnVsbFNjb3BlQ2hhaW4oKQorICAgICAgICAgICB8fCBleGVjLT51bmNoZWNrZWRSKGNv
ZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CisjaWYgTExJTlRfSEVM
UEVSX1RSQUNJTkcKKyAgICBwcmludGYoIkNyZWF0aW5nIGZ1bmN0aW9uIVxuIik7CisjZW5kaWYK
KyAgICBMTElOVF9SRVRVUk4oY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbMl0udS5vcGVyYW5k
KS0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25ld19mdW5jX2V4cCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2Rl
QmxvY2stPmZ1bmN0aW9uRXhwcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTRnVuY3Rpb24qIGZ1
bmMgPSBmdW5jdGlvbi0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpOworICAgIAorICAg
IGlmICghZnVuY3Rpb24tPm5hbWUoKS5pc051bGwoKSkgeworICAgICAgICBKU1N0YXRpY1Njb3Bl
T2JqZWN0KiBmdW5jdGlvblNjb3BlT2JqZWN0ID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRl
KGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKCksIGZ1bmMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7Cisg
ICAgICAgIGZ1bmMtPnNldFNjb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuYy0+c2NvcGUoKS0+
cHVzaChmdW5jdGlvblNjb3BlT2JqZWN0KSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVS
TihmdW5jKTsKK30KKworc3RhdGljIEhlbHBlclJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhl
Y1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgY2FsbGVlLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0Nh
bGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhl
Yy0+Z2xvYmFsRGF0YSgpOworCisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5z
Y29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKworICAgIGlm
IChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAg
ICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxlZSwgY2FsbERhdGEpOwor
ICAgIAorICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVKUyk7CisgICAgCisgICAg
ICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUhvc3QpIHsKKyAgICAgICAgICAgIGdsb2JhbERh
dGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZl
LmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTExJTlRf
Q0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICAgICAgfQorICAgICAgICAKKyNpZiBMTElOVF9IRUxQ
RVJfVFJBQ0lORworICAgICAgICBwcmludGYoIkNhbGwgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9u
OiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICAgICAgQVNTRVJU
KGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSk7CisgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhl
YywgcGMsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgIH0KKwor
ICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIAorICAgIENvbnN0cnVj
dERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBn
ZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0RGF0YSk7CisgICAgCisgICAgQVNTRVJU
KGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZUpTKTsKKyAgICAKKyAgICBpZiAoY29uc3Ry
dWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlSG9zdCkgeworICAgICAgICBnbG9iYWxEYXRhLT5ob3N0
Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1
bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxl
ZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsK
KyAgICB9CisgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAgICAgcHJpbnRmKCJD
b25zdHJ1Y3RvciBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUuZGVzY3Jp
cHRpb24oKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVj
dFR5cGVOb25lKTsKKyAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBQ29u
c3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5
cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSwgTExJbnRDYWxs
TGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCit7CisgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0
aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSk7CisgICAgaWYgKCFjYWxsZWVB
c0Z1bmN0aW9uQ2VsbCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUs
IHBjLCBjYWxsZWVBc1ZhbHVlLCBraW5kKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUg
PSBhc0Z1bmN0aW9uKGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRT
Y29wZUNoYWluKGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKSk7CisgICAgRXhlY3V0YWJsZUJhc2Uq
IGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAgICAKKyAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgY29kZVB0cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CisgICAg
aWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGNvZGVQdHIgPSBleGVj
dXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAg
ZWxzZSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0g
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAgICAgIEpT
T2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVjQ2FsbGVl
LCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAg
ICBMTElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCksIHBjLCBlcnJvcik7
CisgICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVj
b2RlRm9yKGtpbmQpOworICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICAgICAgaWYgKGV4
ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXpl
X3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIGNvZGVQdHIgPSBm
dW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihraW5k
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJs
ZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIH0KKyAg
ICAKKyAgICBpZiAoY2FsbExpbmtJbmZvKSB7CisgICAgICAgIGlmIChjYWxsTGlua0luZm8tPmlz
T25MaXN0KCkpCisgICAgICAgICAgICBjYWxsTGlua0luZm8tPnJlbW92ZSgpOworICAgICAgICBF
eGVjU3RhdGUqIGV4ZWNDYWxsZXIgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgICAg
ICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBleGVj
Q2FsbGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAgICAg
IGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEo
KSwgZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOwor
ICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKKyAgICAg
ICAgaWYgKGNvZGVCbG9jaykKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2Fs
bChjYWxsTGlua0luZm8pOworICAgIH0KKyAgICAKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVj
Q2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKK30KKworaW5saW5lIEhl
bHBlclJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiog
cGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRv
OgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hh
dCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIElmIHBvc3Np
YmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAgIC8vIC0gUmV0dXJuIGEgdHVw
bGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1l
LgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1
ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9w
ZXJhbmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVy
RmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVy
RnJhbWUoZXhlYyk7CisgICAgCisgICAgQVNTRVJUKHBjWzRdLnUuY2FsbExpbmtJbmZvKTsKKyAg
ICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCBw
Y1s0XS51LmNhbGxMaW5rSW5mbyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxs
KQoreworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0KQoreworICAgIHJldHVybiBnZW5l
cmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0cnVjdCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAv
LyAtIFNldCB1cCBhIGNhbGwgZnJhbWUgd2hpbGUgcmVzcGVjdGluZyB0aGUgdmFyaWFibGUgYXJn
dW1lbnRzLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQg
aWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFk
ZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUg
Y2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNT
dGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAorICAgICAgICBleGVjLCAmZXhlYy0+Z2xv
YmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwKKyAgICAgICAgTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBwY1s0XS51Lm9wZXJhbmQp
OworICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKTsKKyAgICAKKyAgICBl
eGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFs
dWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlYy0+dW5j
aGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0d2lzZV9jYXN0
PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpKTsKKyAgICAKKyAg
ICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNW
YWx1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpCit7CisgICAg
SlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIAorICAg
IEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAgSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAgIGV4
ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFuZCk7
CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlY0NhbGxlZS0+
dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4
ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2Fs
bGVlLT5zZXRSZXR1cm5QQyhiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbGxpbnRfZ2VuZXJp
Y19yZXR1cm5fcG9pbnQpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CisgICAg
ZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0
d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX2V2YWwpKTsKKyAg
ICAKKyAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFs
KSkKKyAgICAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGws
IGNhbGxlZUFzVmFsdWUpOworICAgIAorICAgIGdsb2JhbERhdGEuaG9zdENhbGxSZXR1cm5WYWx1
ZSA9IGV2YWwoZXhlY0NhbGxlZSk7CisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwg
cGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCit7CisgICAg
QVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIEpT
VmFsdWUgYWN0aXZhdGlvblZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIGlmICgh
YWN0aXZhdGlvblZhbHVlKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNr
ZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVl
KCkpIHsKKyAgICAgICAgICAgIGlmICghZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgp
KQorICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT50ZWFyT2ZmKGV4ZWMpOworICAgICAg
ICB9CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2
YXRpb24gPSBhc0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVlKTsKKyAgICBhY3RpdmF0aW9uLT50
ZWFyT2ZmKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnVu
Y2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpLmpz
VmFsdWUoKSkKKyAgICAgICAgYXNBcmd1bWVudHModiktPmRpZFRlYXJPZmZBY3RpdmF0aW9uKGV4
ZWMtPmdsb2JhbERhdGEoKSwgYWN0aXZhdGlvbik7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCit7CisgICAgQVNTRVJU
KGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkgJiYgIWV4ZWMtPmNvZGVCbG9jaygp
LT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIGFzQXJndW1lbnRzKGV4ZWMtPnVuY2hlY2tl
ZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpLmpzVmFsdWUo
KSktPnRlYXJPZmYoZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9zdHJjYXQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsICZM
TElOVF9PUCgyKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90b19wcmltaXRpdmUpCit7CisgICAgTExJTlRfUkVUVVJOKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2dldF9wbmFtZXMpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOwor
ICAgIGlmICh2LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcGMgKz0gcGNbNV0udS5v
cGVyYW5kOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSlNPYmplY3Qq
IG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gby0+c3Ry
dWN0dXJlKCk7CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVy
YXRvciA9IHN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpOworICAgIGlmICghanNQcm9wZXJ0
eU5hbWVJdGVyYXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQcm90b3R5cGVD
aGFpbigpICE9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCisgICAgICAgIGpzUHJv
cGVydHlOYW1lSXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywg
byk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBKU1ZhbHVlKGpzUHJvcGVydHlOYW1lSXRlcmF0
b3IpOworICAgIExMSU5UX09QKDIpID0gSlNWYWx1ZShvKTsKKyAgICBMTElOVF9PUCgzKSA9IFJl
Z2lzdGVyOjp3aXRoSW50KDApOworICAgIExMSU5UX09QKDQpID0gUmVnaXN0ZXI6OndpdGhJbnQo
anNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAgICAKKyAgICBwYyArPSBPUENPREVf
TEVOR1RIKG9wX2dldF9wbmFtZXMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSkKK3sKKyAgICBKU09iamVjdCogYmFzZSA9IGFzT2Jq
ZWN0KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CisgICAgSlNTdHJpbmcqIHByb3BlcnR5ID0gYXNT
dHJpbmcoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBpZiAoYmFzZS0+aGFzUHJvcGVydHko
ZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eS0+dmFsdWUoZXhlYykpKSkgeworICAgICAg
ICAvLyBHbyB0byB0YXJnZXQuCisgICAgICAgIHBjICs9IHBjWzZdLnUub3BlcmFuZDsKKyAgICB9
IC8vIEVsc2UsIGRvbid0IGNoYW5nZSB0aGUgUEMsIHNvIHRoZSBpbnRlcnByZXRlciB3aWxsIHJl
bG9vcC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1
c2hfc2NvcGUpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAg
IEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9IG87CisgICAgZXhlYy0+c2V0U2NvcGVDaGFp
bihleGVjLT5zY29wZUNoYWluKCktPnB1c2gobykpOworICAgIAorICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9wX3Njb3BlKQoreworICAgIGV4ZWMtPnNl
dFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wb3AoKSk7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSkKK3sKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBz
Y29wZSA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBjb2RlQmxvY2stPmlkZW50
aWZpZXIocGNbMl0udS5vcGVyYW5kKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpLCBEb250RGVsZXRl
KTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChzY29w
ZSkpOworICAgIExMSU5UX1JFVFVSTihzY29wZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90aHJvdykKK3sKKyAgICBMTElOVF9USFJPVyhMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpCit7
CisgICAgTExJTlRfVEhST1coY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgTExJTlRfT1BfQygx
KS5qc1ZhbHVlKCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9kZWJ1ZykKK3sKKyAgICBpbnQgZGVidWdIb29rSUQgPSBwY1sxXS51
Lm9wZXJhbmQ7CisgICAgaW50IGZpcnN0TGluZSA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpbnQg
bGFzdExpbmUgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LmludGVycHJldGVyLT5kZWJ1ZyhleGVjLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdI
b29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQoreworICAgICgq
UHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSgpKS0+d2lsbEV4ZWN1dGUoZXhlYywg
TExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCit7CisgICAgKCpQcm9maWxlcjo6ZW5h
YmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT5kaWRFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpz
VmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpM
TEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNzIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludEhlbHBlcnNfaAorI2RlZmluZSBMTEludEhlbHBlcnNfaAorCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxF
KExMSU5UKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IElu
c3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCit0eXBlZGVmIGludDY0X3QgSGVscGVy
UmV0dXJuVHlwZTsKKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29w
ZXJhbmQoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFu
ZCk7CitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0
YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7CisKKyNkZWZp
bmUgTExJTlRfSEVMUEVSX0RFQ0wobmFtZSkgXAorICAgIGV4dGVybiAiQyIgSGVscGVyUmV0dXJu
VHlwZSBsbGludF8jI25hbWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCisKK0xM
SU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNl
X3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3By
b2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2Vf
YXJpdHlDaGVja19mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNr
X2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2UpOworTExJTlRfSEVMUEVS
X0RFQ0woc3BlY2lhbF90cmFjZSk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpOworTExJ
TlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2spOworTExJ
TlRfSEVMUEVSX0RFQ0wobG9vcF9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSk7CitM
TElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0
cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZh
dGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NvbnZlcnRfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVjdCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdf
cmVnZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3Ry
aWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2xlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcik7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wcmVfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cG9zdF9kZWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Fk
ZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9zdWIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rpdik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbW9kKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3JzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
dXJzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9iaXRvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NoZWNrX2hhc19pbnN0YW5jZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFu
Y2VvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pc191bmRlZmluZWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Jv
b2xlYW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJlcik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19v
YmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9pbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVz
b2x2ZV9nbG9iYWxfZHluYW1pYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9m
b3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVz
b2x2ZV9iYXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhp
c3RzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dldF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3Vt
ZW50c19sZW5ndGgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9nZXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlf
dmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rl
bF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2dldHRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHV0X3NldHRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam1wX3Njb3Blcyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2pmYWxzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3MpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2pubGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXIp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfamxlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2puZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1t
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfY2hhcik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfc3dpdGNoX3N0cmluZyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3
X2Z1bmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jX2V4cCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3Ry
dWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVh
cl9vZmZfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYXJn
dW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X3BuYW1lcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cG9wX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Rocm93X3JlZmVyZW5jZV9lcnJvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVidWcp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKTsKKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludEhl
bHBlcnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKKyNkZWZpbmUgTExJbnRPZmZsaW5lQXNtQ29u
ZmlnX2gKKworI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENQVShYODYpCisjZGVmaW5l
IE9GRkxJTkVfQVNNX1g4NiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMAorI2Vu
ZGlmCisKKyNpZiBDUFUoQVJNdjcpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDEKKyNlbHNl
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDAKKyNlbmRpZgorCisjaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAxCisjZWxzZQorI2RlZmlu
ZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIENQVShCSUdfRU5E
SUFOKQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDEKKyNlbHNlCisjZGVmaW5lIE9G
RkxJTkVfQVNNX0JJR19FTkRJQU4gMAorI2VuZGlmCisKKyNpZiBFTkFCTEUoTExJTlRfT1NSX1RP
X0pJVCkKKyNkZWZpbmUgT0ZGTElORV9BU01fSklUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUg
T0ZGTElORV9BU01fSklUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBMTElOVF9FWEVDVVRJT05f
VFJBQ0lORworI2RlZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAxCisjZWxzZQor
I2RlZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAwCisjZW5kaWYKKworI2VuZGlm
IC8vIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJIZWFwLmgiCisj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUg
IkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIK
KyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKKyNpbmNs
dWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCisjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVk
ZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKKyNp
bmNsdWRlICJSZWdpc3RlckZpbGUuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisjaW5jbHVk
ZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJW
YWx1ZVByb2ZpbGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CisKK25hbWVz
cGFjZSBKU0MgeworCisjZGVmaW5lIE9GRkxJTkVfQVNNX09GRlNFVE9GKGNsYXp6LCBmaWVsZCkg
T0JKRUNUX09GRlNFVE9GKGNsYXp6LCBmaWVsZCkKKworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQqIGR1bW15KCk7Cit9Owor
Citjb25zdCB1bnNpZ25lZCogTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpCit7CisjaW5j
bHVkZSAiTExJbnREZXNpcmVkT2Zmc2V0cy5oIgorICAgIHJldHVybiBleHRyYWN0b3JUYWJsZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK2ludCBtYWluKGludCwgY2hhcioqKQoreworICAg
IC8vIE91dCBvZiBhbiBhYnVuZGFuY2Ugb2YgY2F1dGlvbiwgbWFrZSBzdXJlIHRoYXQgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpIGlzIGxpdmUsCisgICAgLy8gYW5kIHRoZSBleHRyYWN0
b3JUYWJsZSBpcyBsaXZlLCB0b28uCisgICAgcHJpbnRmKCIlcFxuIiwgSlNDOjpMTEludE9mZnNl
dHNFeHRyYWN0b3I6OmR1bW15KCkpOworICAgIHJldHVybiAwOworfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKKworI2lm
IEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgiCisjaW5jbHVkZSAi
TGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCB2b2lk
ICgqdGFyZ2V0KSgpKQoreworICAgIEpTSW50ZXJmYWNlSklUIGppdDsKKyAgICAKKyAgICAvLyBG
SVhNRTogdGhlcmUncyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gaXQgb24gWDg2LCBidXQg
SSdtIG5vdCBzdXJlIEkgY2FyZS4KKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3Rl
ZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdldCkpLCBKU0ludGVyZmFjZUpJVDo6cmVn
VDApOworICAgIGppdC5qdW1wKEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgCisgICAgTGlu
a0J1ZmZlciBwYXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsK
KyAgICByZXR1cm4gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7Cit9CisKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xv
YmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhK
dW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSk7
Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1
bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0
cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7
CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQor
eworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9l
dmFsX3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRo
dW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2Vu
ZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSk7
Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExM
SU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50VGh1bmtzX2gKKyNkZWZpbmUgTExJbnRU
aHVua3NfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQp
CisKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIEpTR2xvYmFsRGF0YTsKKworbmFtZXNwYWNlIExMSW50IHsKKworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxE
YXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRo
dW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0
aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVu
a0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFt
RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludFRo
dW5rc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIz
ODAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBD
cmFzaCBjb3Vyc2Ugb24gdGhlIGxhbmd1YWdlIHRoYXQgdGhpcyBpcyB3cml0dGVuIGluICh3aGlj
aCBJIGp1c3QgY2FsbAorIyAiYXNzZW1ibHkiIGV2ZW4gdGhvdWdoIGl0J3MgbW9yZSB0aGFuIHRo
YXQpOgorIworIyAtIE1vc3RseSBnYXMtc3R5bGUgb3BlcmFuZCBvcmRlcmluZy4gVGhlIGxhc3Qg
b3BlcmFuZCB0ZW5kcyB0byBiZSB0aGUKKyMgICBkZXN0aW5hdGlvbi4gU28gImEgOj0gYiIgaXMg
d3JpdHRlbiBhcyAibW92IGIsIGEiLiBCdXQgdW5saWtlIGdhcywKKyMgICBjb21wYXJpc29ucyBh
cmUgaW4tb3JkZXIsIHNvICJpZiAoYSA8IGIpIiBpcyB3cml0dGVuIGFzCisjICAgImJpbHQgYSwg
YiwgLi4uIi4KKyMKKyMgLSAiYiIgPSBieXRlLCAiaCIgPSAxNi1iaXQgd29yZCwgImkiID0gMzIt
Yml0IHdvcmQsICJwIiA9IHBvaW50ZXIuCisjICAgQ3VycmVudGx5IHRoaXMgaXMganVzdCAzMi1i
aXQgc28gImkiIGFuZCAicCIgYXJlIGludGVyY2hhbmdlYWJsZQorIyAgIGV4Y2VwdCB3aGVuIGFu
IG9wIHN1cHBvcnRzIG9uZSBidXQgbm90IHRoZSBvdGhlci4KKyMKKyMgLSBJbiBnZW5lcmFsLCB2
YWxpZCBvcGVyYW5kcyBmb3IgbWFjcm8gaW52b2NhdGlvbnMgYW5kIGluc3RydWN0aW9ucyBhcmUK
KyMgICByZWdpc3RlcnMgKGVnICJ0MCIpLCBhZGRyZXNzZXMgKGVnICI0W3QwXSIpLCBiYXNlLWlu
ZGV4IGFkZHJlc3NlcworIyAgIChlZyAiN1t0MCwgdDEsIDJdIiksIGFic29sdXRlIGFkZHJlc3Nl
cyAoZWcgIjB4YTAwMDAwMDBbXSIpLCBvciBsYWJlbHMKKyMgICAoZWcgIl9mb28iIG9yICIuZm9v
IikuIE1hY3JvIGludm9jYXRpb25zIGNhbiBhbHNvIHRha2UgYW5vbnltb3VzCisjICAgbWFjcm9z
IGFzIG9wZXJhbmRzLiBJbnN0cnVjdGlvbnMgY2Fubm90IHRha2UgYW5vbnltb3VzIG1hY3Jvcy4K
KyMKKyMgLSBMYWJlbHMgbXVzdCBoYXZlIG5hbWVzIHRoYXQgYmVnaW4gd2l0aCBlaXRoZXIgIl8i
IG9yICIuIi4gIEEgIi4iIGxhYmVsCisjICAgaXMgbG9jYWwgYW5kIGdldHMgcmVuYW1lZCBiZWZv
cmUgY29kZSBnZW4gdG8gbWluaW1pemUgbmFtZXNwYWNlCisjICAgcG9sbHV0aW9uLiBBICJfIiBs
YWJlbCBpcyBhbiBleHRlcm4gc3ltYm9sIChpLmUuICIuZ2xvYmwiKS4gVGhlICJfIgorIyAgIG1h
eSBvciBtYXkgbm90IGJlIHJlbW92ZWQgZHVyaW5nIGNvZGUgZ2VuIGRlcGVuZGluZyBvbiB3aGV0
aGVyIHRoZSBhc20KKyMgICBjb252ZW50aW9ucyBmb3IgQyBuYW1lIG1hbmdsaW5nIG9uIHRoZSB0
YXJnZXQgcGxhdGZvcm0gbWFuZGF0ZSBhICJfIgorIyAgIHByZWZpeC4KKyMKKyMgLSBBICJtYWNy
byIgaXMgYSBsYW1iZGEgZXhwcmVzc2lvbiwgd2hpY2ggbWF5IGJlIGVpdGhlciBhbm9ueW1vdXMg
b3IKKyMgICBuYW1lZC4gQnV0IHRoaXMgaGFzIGNhdmVhdHMuICJtYWNybyIgY2FuIHRha2UgemVy
byBvciBtb3JlIGFyZ3VtZW50cywKKyMgICB3aGljaCBtYXkgYmUgbWFjcm9zIG9yIGFueSB2YWxp
ZCBvcGVyYW5kcywgYnV0IGl0IGNhbiBvbmx5IHJldHVybgorIyAgIGNvZGUuIEJ1dCB5b3UgY2Fu
IGRvIFR1cmluZy1jb21wbGV0ZSB0aGluZ3MgdmlhIGNvbnRpbnVhdGlvbiBwYXNzaW5nCisjICAg
c3R5bGU6ICJtYWNybyBmb28gKGEsIGIpIGIoYSkgZW5kIGZvbyhmb28sIGZvbykiLiBBY3R1YWxs
eSwgZG9uJ3QgZG8KKyMgICB0aGF0LCBzaW5jZSB5b3UnbGwganVzdCBjcmFzaCB0aGUgYXNzZW1i
bGVyLgorIworIyAtIEFuICJpZiIgaXMgYSBjb25kaXRpb25hbCBvbiBzZXR0aW5ncy4gQW55IGlk
ZW50aWZpZXIgc3VwcGxpZWQgaW4gdGhlCisjICAgcHJlZGljYXRlIG9mIGFuICJpZiIgaXMgYXNz
dW1lZCB0byBiZSBhICNkZWZpbmUgdGhhdCBpcyBhdmFpbGFibGUKKyMgICBkdXJpbmcgY29kZSBn
ZW4uIFNvIHlvdSBjYW4ndCB1c2UgImlmIiBmb3IgY29tcHV0YXRpb24gaW4gYSBtYWNybywgYnV0
CisjICAgeW91IGNhbiB1c2UgaXQgdG8gc2VsZWN0IGRpZmZlcmVudCBwaWVjZXMgb2YgY29kZSBm
b3IgZGlmZmVyZW50CisjICAgcGxhdGZvcm1zLgorIworIyAtIEFyZ3VtZW50cyB0byBtYWNyb3Mg
Zm9sbG93IGxleGljYWwgc2NvcGluZyByYXRoZXIgdGhhbiBkeW5hbWljIHNjb3BpbmcuCisjICAg
Q29uc3QncyBhbHNvIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgYW5kIG1heSBvdmVycmlkZSAoaGlk
ZSkgYXJndW1lbnRzCisjICAgb3Igb3RoZXIgY29uc3RzLiBBbGwgdmFyaWFibGVzIChhcmd1bWVu
dHMgYW5kIGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gb3BlcmFuZHMuIEFkZGl0aW9u
YWxseSwgYXJndW1lbnRzIChidXQgbm90IGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8g
bWFjcm9zLgorCisKKyMgVGhlc2UgZGVjbGFyYXRpb25zIG11c3QgbWF0Y2ggaW50ZXJwcmV0ZXIv
UmVnaXN0ZXJGaWxlLmguCitjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gNDgKK2NvbnN0IEFy
Z3VtZW50Q291bnQgPSAtNDgKK2NvbnN0IENhbGxlckZyYW1lID0gLTQwCitjb25zdCBDYWxsZWUg
PSAtMzIKK2NvbnN0IFNjb3BlQ2hhaW4gPSAtMjQKK2NvbnN0IFJldHVyblBDID0gLTE2Citjb25z
dCBDb2RlQmxvY2sgPSAtOAorCitjb25zdCBUaGlzQXJndW1lbnRPZmZzZXQgPSAtQ2FsbEZyYW1l
SGVhZGVyU2l6ZSAtIDgKKworIyBEZWNsYXJlIHNvbWUgYWxpYXNlcyBmb3IgdGhlIHJlZ2lzdGVy
cyB3ZSB3aWxsIHVzZS4KK2NvbnN0IFBDID0gdDQKKworIyBPZmZzZXRzIG5lZWRlZCBmb3IgcmVh
c29uaW5nIGFib3V0IHZhbHVlIHJlcHJlc2VudGF0aW9uLgoraWYgQklHX0VORElBTgorICAgIGNv
bnN0IFRhZ09mZnNldCA9IDAKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gNAorZWxzZQorICAg
IGNvbnN0IFRhZ09mZnNldCA9IDQKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gMAorZW5kCisK
KyMgVmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgorY29uc3QgSW50MzJUYWcgPSAtMQor
Y29uc3QgQm9vbGVhblRhZyA9IC0yCitjb25zdCBOdWxsVGFnID0gLTMKK2NvbnN0IFVuZGVmaW5l
ZFRhZyA9IC00Citjb25zdCBDZWxsVGFnID0gLTUKK2NvbnN0IEVtcHR5VmFsdWVUYWcgPSAtNgor
Y29uc3QgRGVsZXRlZFZhbHVlVGFnID0gLTcKK2NvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1
ZVRhZworCisjIFR5cGUgY29uc3RhbnRzLgorY29uc3QgU3RyaW5nVHlwZSA9IDUKK2NvbnN0IE9i
amVjdFR5cGUgPSAxMAorCisjIFR5cGUgZmxhZ3MgY29uc3RhbnRzLgorY29uc3QgTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCA9IDEKK2NvbnN0IEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDIKK2NvbnN0
IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSA4CisKKyMgSGVhcCBhbGxvY2F0aW9uIGNv
bnN0YW50cy4KK2NvbnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9IDMKKworIyBCeXRl
Y29kZSBvcGVyYW5kIGNvbnN0YW50cy4KK2NvbnN0IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
ID0gMHg0MDAwMDAwMAorCisjIENvZGUgdHlwZSBjb25zdGFudHMuCitjb25zdCBHbG9iYWxDb2Rl
ID0gMAorY29uc3QgRXZhbENvZGUgPSAxCitjb25zdCBGdW5jdGlvbkNvZGUgPSAyCisKKyMgVGhl
IGludGVycHJldGVyIHN0ZWFscyB0aGUgdGFnIHdvcmQgb2YgdGhlIGFyZ3VtZW50IGNvdW50Lgor
Y29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQKKworIyBUaGlz
IG11c3QgbWF0Y2ggd3RmL1ZlY3Rvci5oLgorY29uc3QgVmVjdG9yU2l6ZU9mZnNldCA9IDAKK2Nv
bnN0IFZlY3RvckJ1ZmZlck9mZnNldCA9IDQKKworIyBTdHJpbmcgZmxhZ3MuCitjb25zdCBIYXNo
RmxhZ3M4Qml0QnVmZmVyID0gNjQKKworIyBVdGlsaXRpZXMKK21hY3JvIGNyYXNoKCkKKyAgICBz
dG9yZWkgMCwgMHhiYmFkYmVlZltdCisgICAgbW92ZSAwLCB0MAorICAgIGNhbGwgdDAKK2VuZAor
CittYWNybyBhc3NlcnQoYXNzZXJ0aW9uKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAg
IGFzc2VydGlvbigub2spCisgICAgICAgIGNyYXNoKCkKKyAgICAub2s6CisgICAgZW5kCitlbmQK
KworbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0
ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBsciwgZGVzdGluYXRpb25SZWdpc3Rlcgor
ICAgIGVsc2lmIFg4NgorICAgICAgICBwb3AgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2UK
KyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyByZXN0b3JlUmV0dXJuQWRkcmVz
c0JlZm9yZVJldHVybihzb3VyY2VSZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3Zl
IHNvdXJjZVJlZ2lzdGVyLCBscgorICAgIGVsc2lmIFg4NgorICAgICAgICBwdXNoIHNvdXJjZVJl
Z2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIGRp
c3BhdGNoKGFkdmFuY2UpCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMKKyAgICBqbXAgW1BDXQor
ZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldChwY09mZnNldCkKKyAgICBsc2hp
ZnRpIDIsIHBjT2Zmc2V0CisgICAgYWRkcCBwY09mZnNldCwgUEMKKyAgICBqbXAgW1BDXQorZW5k
CisKK21hY3JvIGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQorICAgIGxvYWRpIHBjT2Zmc2V0LCB0
MAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MCkKK2VuZAorCittYWNybyBkaXNwYXRj
aEFmdGVyQ2FsbCgpCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQ
QworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcy
KQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcy
LCB0MQorICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9rZSBh
cmcyLCAxCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rp
b24KK2VuZAorCisjIFRoaXMgYmFyZWx5IHdvcmtzLiBhcmczIGFuZCBhcmc0IHNob3VsZCBwcm9i
YWJseSBiZSBpbW1lZGlhdGVzLgorbWFjcm8gY0NhbGw0KGZ1bmN0aW9uLCBhcmcxLCBhcmcyLCBh
cmczLCBhcmc0KQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAg
bW92ZSBhcmcyLCB0MQorICAgICAgICBtb3ZlIGFyZzMsIHQyCisgICAgICAgIG1vdmUgYXJnNCwg
dDMKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBhcmcxLCAwCisgICAgICAgIHBva2UgYXJn
MiwgMQorICAgICAgICBwb2tlIGFyZzMsIDIKKyAgICAgICAgcG9rZSBhcmc0LCAzCisgICAgZWxz
ZQorICAgICAgICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCittYWNy
byBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1v
dmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9u
IGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3Ry
ZWFtLiBmcm9tV2hlcmUKKyMgc2hvdWxkIGJlIGFuIGltbWVkaWF0ZSBpbnRlZ2VyIC0gYW55IGlu
dGVnZXIgeW91IGxpa2U7IHVzZSBpdCB0byBpZGVudGlmeSB0aGUgcGxhY2UgeW91J3JlCisjIGRl
YnVnZ2luZyBmcm9tLiBvcGVyYW5kIHNob3VsZCBsaWtld2lzZSBiZSBhbiBpbW1lZGlhdGUsIGFu
ZCBzaG91bGQgaWRlbnRpZnkgdGhlIG9wZXJhbmQKKyMgaW4gdGhlIGluc3RydWN0aW9uIHN0cmVh
bSB5b3UnZCBsaWtlIHRvIHByaW50IG91dC4KK21hY3JvIHRyYWNlT3BlcmFuZChmcm9tV2hlcmUs
IG9wZXJhbmQpCisgICAgY0NhbGw0KF9sbGludF90cmFjZV9vcGVyYW5kLCBjZnIsIFBDLCBmcm9t
V2hlcmUsIG9wZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAor
CisjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCB0aGUgdmFsdWUg
b2YgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24KKyMgc3RyZWFtLiBTYW1lIGFzIHRyYWNl
T3BlcmFuZCgpLCBidXQgYXNzdW1lcyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgcmVnaXN0ZXIsIGFu
ZCBwcmludHMgaXRzCisjIHZhbHVlLgorbWFjcm8gdHJhY2VWYWx1ZShmcm9tV2hlcmUsIG9wZXJh
bmQpCisgICAgY0NhbGw0KF9sbGludF90cmFjZV92YWx1ZSwgY2ZyLCBQQywgZnJvbVdoZXJlLCBv
cGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworbWFjcm8g
dHJhY2VFeGVjdXRpb24oKQorICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAgICAgIGNhbGxI
ZWxwZXIoX2xsaW50X3RyYWNlKQorICAgIGVuZAorZW5kCisKKyMgQ2FsbCBhIGhlbHBlciBmb3Ig
Y2FsbCBvcGNvZGVzLgorbWFjcm8gY2FsbENhbGxIZWxwZXIoYWR2YW5jZSwgaGVscGVyLCBhY3Rp
b24pCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMsIHQwCisgICAgc3RvcmVwIHQwLCBBcmd1bWVu
dENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAg
IG1vdmUgdDEsIGNmcgorICAgIGFjdGlvbih0MCkKK2VuZAorCittYWNybyBzbG93UGF0aEZvckNh
bGwoYWR2YW5jZSwgaGVscGVyKQorICAgIGNhbGxDYWxsSGVscGVyKAorICAgICAgICBhZHZhbmNl
LAorICAgICAgICBoZWxwZXIsCisgICAgICAgIG1hY3JvIChjYWxsZWUpCisgICAgICAgICAgICBj
YWxsIGNhbGxlZQorICAgICAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgICAgICBlbmQp
CitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVChpbmNyZW1lbnQsIGFjdGlvbikKKyAgICBp
ZiBKSVRfRU5BQkxFRAorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICAgICAg
YmFkZGlzIGluY3JlbWVudCwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJbdDBdLCAu
Y29udGludWUKKyAgICAgICAgYWN0aW9uKCkKKyAgICAuY29udGludWU6CisgICAgZW5kCitlbmQK
KworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQo
CisgICAgICAgIDEsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBzdG9yZWkgUEMsIEFy
Z3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgICAgICAgICAgY0NhbGwyKF9sbGludF9s
b29wX29zciwgY2ZyLCBQQykKKyAgICAgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAgICAgICAg
YnRweiB0MCwgLnJlY292ZXIKKyAgICAgICAgICAgIGptcCB0MAorICAgICAgICAucmVjb3ZlcjoK
KyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAg
ICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisg
ICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMTAsCisgICAgICAgIG1hY3JvICgpCisgICAg
ICAgICAgICBjYWxsSGVscGVyKF9sbGludF9yZXBsYWNlKQorICAgICAgICBlbmQpCitlbmQKKwor
bWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoaW5kZXgpCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmls
dCBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIG9rIGVuZCkKK2VuZAorCisjIElu
ZGV4LCB0YWcsIGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXgg
aXMgbm90CisjIGNoYW5nZWQuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKGluZGV4LCB0
YWcsIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5k
b25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRb
cGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYg
dGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgs
CisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsb2FkcCBUYWdPZmZzZXRbcGF5bG9hZCwg
aW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4
XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBtYXkgYmUgdGhl
IHNhbWUgcmVnaXN0ZXIuIEluZGV4IG1heSBiZSBjbG9iYmVyZWQuCittYWNybyBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwg
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNl
dFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4
LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCB0YWcKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMg
KyBWZWN0b3JCdWZmZXJPZmZzZXRbdGFnXSwgdGFnCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBl
dmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZh
bHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbHNoaWZ0aSAzLCBp
bmRleAorICAgIGFkZHAgaW5kZXgsIHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdGFnXSwg
cGF5bG9hZAorICAgIGxvYWRwIFRhZ09mZnNldFt0YWddLCB0YWcKKy5kb25lOgorZW5kCisKK21h
Y3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKGluZGV4LCB0YWdDaGVj
aywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
LCAuY29uc3RhbnQKKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0pCisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9u
ZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3Bh
eWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRo
ZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAor
ICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0W3BheWxvYWQs
IGluZGV4LCA4XSkKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwg
cGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZl
cmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdCBtdXRhdGVkLiBVc2UKKyMgdGhpcyBpZiB5b3Ug
a25vdyB3aGF0IHRoZSB0YWcgb2YgdGhlIHZhcmlhYmxlIHNob3VsZCBiZS4gRG9pbmcgdGhlIHRh
ZworIyB0ZXN0IGFzIHBhcnQgb2YgbG9hZGluZyB0aGUgdmFyaWFibGUgcmVkdWNlcyByZWdpc3Rl
ciB1c2UsIGJ1dCBtYXkgbm90CisjIGJlIGZhc3RlciB0aGFuIGRvaW5nIGxvYWRDb25zdGFudE9y
VmFyaWFibGUgZm9sbG93ZWQgYnkgYSBicmFuY2ggb24gdGhlCisjIHRhZy4KK21hY3JvIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywgcGF5bG9hZCwgc2xv
dykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgKKyAgICAgICAg
aW5kZXgsCisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGJpbmVxIGFjdHVhbFRhZywgZXhwZWN0
ZWRUYWcsIHNsb3cgZW5kLAorICAgICAgICBwYXlsb2FkKQorZW5kCisKK21hY3JvIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKGluZGV4LCBwYXlsb2FkKQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKAorICAgICAgICBpbmRleCwKKyAgICAg
ICAgbWFjcm8gKGFjdHVhbFRhZykgZW5kLAorICAgICAgICBwYXlsb2FkKQorZW5kCisKK21hY3Jv
IHdyaXRlQmFycmllcih0YWcsIHBheWxvYWQpCisgICAgIyBOb3RoaW5nIHRvIGRvLCBzaW5jZSB3
ZSBkb24ndCBoYXZlIGEgZ2VuZXJhdGlvbmFsIG9yIGluY3JlbWVudGFsIGNvbGxlY3Rvci4KK2Vu
ZAorCittYWNybyB2YWx1ZVByb2ZpbGUodGFnLCBwYXlsb2FkLCBwcm9maWxlKQorICAgIHN0b3Jl
aSB0YWcsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3Byb2ZpbGVdCisgICAg
c3RvcmVpIHBheWxvYWQsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFtw
cm9maWxlXQorZW5kCisKKworIyBJbmRpY2F0ZSB0aGUgYmVnaW5uaW5nIG9mIExMSW50LgorX2xs
aW50X2JlZ2luOgorICAgIGNyYXNoKCkKKworCisjIEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVy
cHJldGVyCisKK21hY3JvIGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdp
c3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBK
U0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3Rlcgor
ICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsW3RhcmdldFJl
Z2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkZvckNvbnN0cnVj
dENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwg
dGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0
UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3Rlcgor
ZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQor
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1
bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgIHN0b3JlcCBzb3VyY2VS
ZWdpc3RlciwgQ29kZUJsb2NrW2Nmcl0KK2VuZAorCittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9j
a1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAgICAjIE5vdGhpbmcgdG8gZG8hCitlbmQKKworIyBE
byB0aGUgYmFyZSBtaW5pbXVtIHJlcXVpcmVkIHRvIGV4ZWN1dGUgY29kZS4gU2V0cyB1cCB0aGUg
UEMsIGxlYXZlIHRoZSBDb2RlQmxvY2sqCisjIGluIHQxLiBNYXkgYWxzbyB0cmlnZ2VyIHByb2xv
Z3VlIGVudHJ5IE9TUi4KK21hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2Nr
U2V0dGVyLCBvc3JIZWxwZXIsIHRyYWNlSGVscGVyKQorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVz
c0FmdGVyQ2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hl
Y2sgaWYgd2Ugc2hvdWxkIE9TUi4KKyAgICBzdG9yZXAgdDIsIFJldHVyblBDW2Nmcl0KKyAgICBp
ZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKHRyYWNlSGVscGVyKQorICAg
IGVuZAorICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAg
ICBiYWRkaXMgNSwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJbdDFdLCAuY29udGlu
dWUKKyAgICAgICAgY0NhbGwyKG9zckhlbHBlciwgY2ZyLCBQQykKKyAgICAgICAgbW92ZSB0MSwg
Y2ZyCisgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgIGxvYWRwIFJldHVyblBDW2Nm
cl0sIHQyCisgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAg
ICAgICBqbXAgdDAKKyAgICAucmVjb3ZlcjoKKyAgICAgICAgY29kZUJsb2NrR2V0dGVyKHQxKQor
ICAgIC5jb250aW51ZToKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tTZXR0ZXIodDEpCisgICAgCisg
ICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNb
dDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0aW9u
cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29k
ZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4K
KyMgTXVzdCBjYWxsIGRpc3BhdGNoKDApIGFmdGVyIGNhbGxpbmcgdGhpcy4KK21hY3JvIGZ1bmN0
aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1NraXApCisgICAgIyBQcm9maWxlIHRoZSBhcmd1
bWVudHMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hvaWNlIGJ1dCB0byBkbyB0aGlzLiBU
aGlzCisgICAgIyBjb2RlIGlzIHByZXR0eSBob3JyZW5kb3VzIGJlY2F1c2Ugb2YgdGhlIGRpZmZl
cmVuY2UgaW4gb3JkZXJpbmcgYmV0d2VlbgorICAgICMgYXJndW1lbnRzIGFuZCB2YWx1ZSBwcm9m
aWxlcywgdGhlIGRlc2lyZSB0byBoYXZlIGEgc2ltcGxlIGxvb3AtZG93bi10by16ZXJvCisgICAg
IyBsb29wLCBhbmQgdGhlIGRlc2lyZSB0byB1c2Ugb25seSB0aHJlZSByZWdpc3RlcnMgc28gYXMg
dG8gcHJlc2VydmUgdGhlIFBDIGFuZAorICAgICMgdGhlIGNvZGUgYmxvY2suIEl0IGlzIGxpa2Vs
eSB0aGF0IHRoaXMgY29kZSBzaG91bGQgYmUgcmV3cml0dGVuIGluIGEgbW9yZQorICAgICMgb3B0
aW1hbCB3YXkgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBoYXZlIG1vcmUgdGhhbiBmaXZlIHJlZ2lz
dGVycyBhdmFpbGFibGUKKyAgICAjIGZvciBhcmJpdHJhcnkgdXNlIGluIHRoZSBpbnRlcnByZXRl
ci4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIHQwCisgICAgYWRk
aSAtcHJvZmlsZUFyZ1NraXAsIHQwICMgVXNlIGFkZGkgYmVjYXVzZSB0aGF0J3Mgd2hhdCBoYXMg
dGhlIHBlZXBob2xlCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHQwLCAwLCBvayBlbmQp
CisgICAgYnRpeiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QxXSwgdDMKKyAg
ICBtdWxpIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0MiAjIEFhYWFhaGhoaCEgTmVlZCBzdHJl
bmd0aCByZWR1Y3Rpb24hCisgICAgbmVnaSB0MAorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRw
IHQyLCB0MworLmFyZ3VtZW50UHJvZmlsZUxvb3A6CisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zm
c2V0ICsgVGFnT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIKKyAg
ICBzdWJwIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQzCisgICAgc3RvcmVpIHQyLCBwcm9maWxlQXJn
U2tpcCAqIHNpemVvZiBWYWx1ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRh
Z09mZnNldFt0M10KKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zmc2V0
ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIsIHBy
b2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVlUHJvZmlsZTo6bV9idWNr
ZXRzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBiYWRkaW56IDgsIHQwLCAuYXJndW1lbnRQcm9m
aWxlTG9vcAorLmFyZ3VtZW50UHJvZmlsZURvbmU6CisgICAgCisgICAgIyBDaGVjayBzdGFjayBo
ZWlnaHQuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lzdGVyc1t0MV0sIHQw
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MgorICAgIGxvYWRwIEpT
R2xvYmFsRGF0YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MiAgICMgRklYTUU6IENhbiBnZXQgdG8gdGhl
IFJlZ2lzdGVyRmlsZSBmcm9tIHRoZSBKSVRTdGFja0ZyYW1lCisgICAgbHNoaWZ0aSAzLCB0MAor
ICAgIGFkZHAgdDAsIGNmciwgdDAKKyAgICBicGFlcSBJbnRlcnByZXRlcjo6bV9yZWdpc3RlckZp
bGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCisKKyAgICAj
IFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBoZWxwZXIuCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVjaykKKy5zdGFja0hlaWdodE9LOgor
ZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBw
cm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCittYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxh
YmVsLCBoZWxwZXIpCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2Zy
XSwgdDAKKyAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25l
TGFiZWwKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKSAgICMgVGhpcyBoZWxwZXIgaGFzIGEg
c2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4gbm8gZXJyb3IsIHQwICE9IDAgPT4gZXJyb3IKKyAg
ICBtb3ZlIHQxLCBjZnIKKyAgICBidGl6IHQwLCAuY29udGludWUKKyAgICBsb2FkcCBKSVRTdGFj
a0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxG
cmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5l
UENGb3JUaHJvd1t0MV0KKy5jb250aW51ZToKKyAgICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIFBD
LCBzaW5jZSB0aGUgaGVscGVyIGNsb2JiZXJlZCBpdC4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZm
ZXJPZmZzZXRbdDBdLCBQQworICAgIGptcCBkb25lTGFiZWwKK2VuZAorCitfbGxpbnRfcHJvZ3Jh
bV9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90
RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9w
cm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9ldmFsX3Byb2xvZ3VlOgorICAg
IHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9j
a1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRp
c3BhdGNoKDApCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgorICAgIHBy
b2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tT
ZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwsIF9sbGludF90cmFjZV9w
cm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKKy5mdW5jdGlvbkZvckNhbGxCZWdpbjoKKyAgICBm
dW5jdGlvbkluaXRpYWxpemF0aW9uKDApCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25G
b3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxp
bnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGludF90cmFjZV9wcm9sb2d1
ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQorLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46Cisg
ICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigxKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19s
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShmdW5jdGlv
bkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRf
ZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0
eUNoZWNrX2Zvcl9jYWxsKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDYWxs
QmVnaW4sIF9sbGludF9oZWxwZXJfY2FsbF9hcml0eUNoZWNrKQorCisKK19sbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29u
c3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2Vu
dHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9h
cml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlv
bkZvckNvbnN0cnVjdEJlZ2luLCBfbGxpbnRfaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQor
CisjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9ucworCitfbGxpbnRfb3BfZW50ZXI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRp
IENvZGVCbG9jazo6bV9udW1WYXJzW3QyXSwgdDIKKyAgICBidGl6IHQyLCAub3BFbnRlckRvbmUK
KyAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAKKyAgICBtb3ZlIDAsIHQxCisub3BFbnRlckxvb3A6
CisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgYnRpbnogdDIsIC5v
cEVudGVyTG9vcAorLm9wRW50ZXJEb25lOgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29w
X2NyZWF0ZV9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5v
cENyZWF0ZUFjdGl2YXRpb25Eb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0
ZV9hY3RpdmF0aW9uKQorLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmU6CisgICAgZGlzcGF0Y2goMikK
KworCitfbGxpbnRfb3BfaW5pdF9sYXp5X3JlZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtjZnIs
IHQwLCA4XQorICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlz
cGF0Y2goMikKKworCitfbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBcmd1bWVudHNEb25lCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCisub3BDcmVhdGVBcmd1bWVudHNEb25l
OgorICAgIGRpc3BhdGNoKDIpCisKKworbWFjcm8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNpemVD
bGFzc0luZGV4LCBjbGFzc0luZm9PZmZzZXQsIHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoMSwg
c2NyYXRjaDIsIHNsb3dDYXNlKQorICAgIGNvbnN0IG9mZnNldE9mTXlTaXplQ2xhc3MgPSBKU0ds
b2JhbERhdGE6OmhlYXAgKyBIZWFwOjptX29iamVjdFNwYWNlICsgTWFya2VkU3BhY2U6Om1fcHJl
Y2lzZVNpemVDbGFzc2VzICsgc2l6ZUNsYXNzSW5kZXggKiBzaXplb2YgTWFya2VkU3BhY2U6OlNp
emVDbGFzcworICAgIAorICAgICMgRklYTUU6IHdlIGNhbiBnZXQgdGhlIGdsb2JhbCBkYXRhIGlu
IG9uZSBsb2FkIGZyb20gdGhlIHN0YWNrLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3Jh
dGNoMQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRj
aDEKKyAgICAKKyAgICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4gICAgCisg
ICAgbG9hZHAgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZp
cnN0RnJlZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKKyAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UK
KyAgICAKKyAgICAjIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAgICBs
b2FkcCBbcmVzdWx0XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIG9mZnNldE9mTXlT
aXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gx
XQorCisgICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgbG9hZHAgY2xhc3NJbmZvT2Zm
c2V0W3NjcmF0Y2gxXSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCisg
ICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCisgICAgc3Rv
cmVwIDAsIEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0KKyAgICBhZGRwIHNpemVvZiBK
U09iamVjdCwgcmVzdWx0LCBzY3JhdGNoMQorICAgIHN0b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6
Om1fcHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KK2VuZAorCitfbGxpbnRfb3BfY3JlYXRlX3RoaXM6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGFzc2VydE5v
dENvbnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywg
Lm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBTdHJ1Y3R1
cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wQ3Jl
YXRlVGhpc1Nsb3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFt0MF0sIHQyCisg
ICAgYnRweiB0MiwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qo
SlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RD
bGFzc0luZm8sIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkaSA0
W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
c3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKwor
Lm9wQ3JlYXRlVGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV90
aGlzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRPZmZz
ZXQgKyBDYWxsZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlz
cGF0Y2goMikKKworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0s
IENlbGxUYWcsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAg
YmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RU
eXBlLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0VGhp
c1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAgICBk
aXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
Z2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9i
amVjdFN0cnVjdHVyZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxP
YmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZv
LCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEK
KyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3T2Jq
ZWN0U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkKKyAgICBk
aXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheV9idWZmZXIpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdleHApCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQxLCB0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBz
dG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9ub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0
MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQy
LCB0MykKKyAgICBiaW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90U2xvdworICAgIHhvcmkgMSwg
dDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0Mywg
UGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5vdFNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0
MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQz
LCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJp
bmVxIHQyLCB0MywgLm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93Cisg
ICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAg
IGNpZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNw
YXRjaCg0KQorCisub3BFcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2VxKQor
ICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2VxX251bGw6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2Vy
dE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxs
VGFnLCAub3BFcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDEKKyAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdz
W3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1t
ZWRpYXRlCisub3BFcU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIKKyAg
ICBjaWVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQyLCB0MQorLm9wRXFOdWxsTm90
SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0K
KyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEy
W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkK
KyAgICBiaW5lcSB0MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BO
ZXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0W1BD
XSwgdDIKKyAgICBjaW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09m
ZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4
XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX25lcSkKKyAgICBkaXNwYXRjaCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251bGw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRb
UENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAor
ICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBq
bXAgLm9wTmVxTnVsbE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBjaW5l
cSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIGFu
ZGkgdDIsIHQxCisub3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3Bl
cmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0
MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKKyAg
ICBiaWIgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0
cmluZworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJl
cSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlw
ZSwgLnNsb3cKKy5ub3RTdHJpbmc6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlP
cGVyYXRpb24odDAsIHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAg
ZGlzcGF0Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0
Y2goNCkKK2VuZAorCitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0
LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVscGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3Ry
aWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCBy
aWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBl
cl9uc3RyaWN0ZXEpCisKKworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX2xlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2xlc3NlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVh
dGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
Z3JlYXRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCBJbnQzMlRhZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQxCisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVp
IHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJl
SW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNw
YXRjaCgyKQorCisKK19sbGludF9vcF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMy
VGFnLCAub3BQcmVEZWNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDEKKyAgICBic3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisK
KworX2xsaW50X29wX3Bvc3RfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIEludDMyVGFnLCAub3BQb3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0
SW5jRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92
ZSB0MiwgdDMKKyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIElu
dDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0K
Ky5vcFBvc3RJbmNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9wb3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCBJbnQzMlRhZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERl
Y0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUg
dDIsIHQzCisgICAgYnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQz
MlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisu
b3BQb3N0RGVjRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfdG9fanNudW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhb
UENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDAsIHQyLCB0MykKKyAgICBiaWVxIHQyLCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklzSW50Cisg
ICAgYmlhZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcFRvSnNudW1iZXJTbG93Cisub3BUb0pzbnVt
YmVySXNJbnQ6CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BU
b0pzbnVtYmVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fanNudW1iZXIp
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MSwgdDIpCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAu
b3BOZWdhdGVTcmNOb3RJbnQKKyAgICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93
CisgICAgbmVnaSB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhd
CisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2go
MykKKy5vcE5lZ2F0ZVNyY05vdEludDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRl
U2xvdworICAgIHhvcmkgMHg4MDAwMDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtj
ZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAg
IGRpc3BhdGNoKDMpCisKKy5vcE5lZ2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX25lZ2F0ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3Rv
cmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAg
ICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQw
LCB0MiwgdDApCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEg
dDMsIEludDMyVGFnLCAub3AyTm90SW50CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50ZWdl
ck9wZXJhdGlvbkFuZFN0b3JlKHQzLCB0MSwgdDAsIC5zbG93LCB0MikKKyAgICBkaXNwYXRjaCg1
KQorCisub3AxTm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBh
biBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEgdDIs
IExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRv
dWJsZQorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQxLCBmdDEKKyAg
ICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQx
LCB0MywgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgZmlp
MmQgdDAsIHQyLCBmdDAKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVk
IGZ0MCwgW2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wMk5vdEludDoKKyAgICAj
IEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBp
cyBkZWZpbml0ZWx5IG5vdC4KKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBiaWEgdDMsIExvd2Vz
dFRhZywgLnNsb3cKKyAgICBjaTJkIHQwLCBmdDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorICAg
IGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0K
KyAgICBkaXNwYXRjaCg1KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBk
aXNwYXRjaCg1KQorZW5kCisKK21hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJs
ZU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1h
Y3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgaW50
ZWdlck9wZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHN0b3JlaSBpbnQz
MlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQs
IFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBkb3Vi
bGVPcGVyYXRpb24sIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfYWRkOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93
KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2FkZCkKKwor
CitfbGxpbnRfb3BfbXVsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3Rv
bVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRl
eCkKKyAgICAgICAgICAgIGNvbnN0IHNjcmF0Y2ggPSBpbnQzMlRhZyAgICMgV2Uga25vdyB0aGF0
IHdlIGNhbiByZXVzZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEgY29uc3Rh
bnQuCisgICAgICAgICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoCisgICAgICAgICAgICBibXVsaW8g
bGVmdCwgc2NyYXRjaCwgc2xvdworICAgICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRvbmUKKyAg
ICAgICAgICAgIGJpbHQgbGVmdCwgMCwgLnNsb3cKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAs
IC5zbG93CisgICAgICAgIC5kb25lOgorICAgICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdP
ZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0KSBtdWxkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9tdWwp
CisKKworX2xsaW50X29wX3N1YjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3Ao
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1YmlvIGxlZnQsIHJpZ2h0LCBz
bG93IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxlZnQsIHJpZ2h0IGVu
ZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9zdWIpCisKKworX2xsaW50X29wX2RpdjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8g
KGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjaTJkIGxl
ZnQsIGZ0MAorICAgICAgICAgICAgY2kyZCByaWdodCwgZnQxCisgICAgICAgICAgICBkaXZkIGZ0
MCwgZnQxCisgICAgICAgICAgICBiY2QyaSBmdDEsIHJpZ2h0LCAubm90SW50CisgICAgICAgICAg
ICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAg
c3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBq
bXAgLmRvbmUKKyAgICAgICAgLm5vdEludDoKKyAgICAgICAgICAgIHN0b3JlZCBmdDEsIFtjZnIs
IGluZGV4LCA4XQorICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQpIGRpdmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVy
X2RpdikKKworCitfbGxpbnRfb3BfbW9kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfbW9kKQorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8gYml0
T3Aob3BlcmF0aW9uLCBoZWxwZXIsIGFkdmFuY2UpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAg
IGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQz
LCBJbnQzMlRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgbG9h
ZGkgNFtQQ10sIHQyCisgICAgb3BlcmF0aW9uKHQxLCB0MCwgLnNsb3cpCisgICAgc3RvcmVpIHQz
LCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MiwgOF0KKyAgICBkaXNwYXRjaChhZHZhbmNlKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVy
KGhlbHBlcikKKyAgICBkaXNwYXRjaChhZHZhbmNlKQorZW5kCisKK19sbGludF9vcF9sc2hpZnQ6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHNsb3cpIGxzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVs
cGVyX2xzaGlmdCwKKyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfcnNoaWZ0OgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93
KSByc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9yc2hpZnQs
CisgICAgICAgIDQpCisKKworX2xsaW50X29wX3Vyc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAg
ICAgICB1cnNoaWZ0aSBsZWZ0LCByaWdodAorICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xv
dworICAgICAgICBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfdXJzaGlmdCwKKyAgICAgICAg
NCkKKworCitfbGxpbnRfb3BfYml0YW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRP
cCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBhbmRpIGxlZnQsIHJpZ2h0IGVu
ZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXRhbmQsCisgICAgICAgIDUpCisKKworX2xsaW50
X29wX2JpdHhvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgc2xvdykgeG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9s
bGludF9oZWxwZXJfYml0eG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRvcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgc2xvdykgb3JpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXRv
ciwKKyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0bm90OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3BC
aXRub3RTbG93CisgICAgbm90aSB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0
Y2goMykKKworLm9wQml0bm90U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfYml0
bm90KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIENlbGxUYWcsIHQwLCAub3BDaGVja0hhc0luc3RhbmNl
U2xvdykKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0hh
c0luc3RhbmNlLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdworICAgIGRpc3BhdGNoKDIpCisKKy5v
cENoZWNrSGFzSW5zdGFuY2VTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jaGVj
a19oYXNfaW5zdGFuY2UpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5zdGFuY2Vv
ZjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBDaGVjayB0aGF0IGJhc2VWYWwgaW1wbGVt
ZW50cyB0aGUgZGVmYXVsdCBIYXNJbnN0YW5jZSBiZWhhdmlvci4KKyAgICAjIEZJWE1FOiBUaGlz
IHNob3VsZCBiZSBkZXByZWNhdGVkLgorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZCh0MSwgdDApCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBU
eXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UsIC5vcElu
c3RhbmNlb2ZTbG93CisgICAgCisgICAgIyBBY3R1YWxseSBkbyB0aGUgd29yay4KKyAgICBsb2Fk
aSAxNltQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BJbnN0YW5jZW9mU2xvdykKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcEluc3RhbmNlb2ZTbG93
CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDAsIENlbGxUYWcsIHQyLCAub3BJbnN0YW5jZW9mU2xvdykKKyAgICAKKyAgICAjIFJlZ2lzdGVy
IHN0YXRlOiB0MSA9IHByb3RvdHlwZSwgdDIgPSB2YWx1ZQorICAgIG1vdmUgMSwgdDAKKy5vcElu
c3RhbmNlb2ZMb29wOgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MgorICAg
IGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QyXSwgdDIKKyAg
ICBicGVxIHQyLCB0MSwgLm9wSW5zdGFuY2VvZkRvbmUKKyAgICBidGlueiB0MiwgLm9wSW5zdGFu
Y2VvZkxvb3AKKworICAgIG1vdmUgMCwgdDAKKy5vcEluc3RhbmNlb2ZEb25lOgorICAgIHN0b3Jl
aSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3BJbnN0YW5jZW9mU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW5zdGFuY2VvZikKKyAgICBkaXNwYXRj
aCg1KQorCisKK19sbGludF9vcF90eXBlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl90eXBlb2YpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfaXNfdW5kZWZpbmVkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfaXNfdW5kZWZpbmVkKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX2lzX2Jvb2xlYW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9pc19ib29sZWFuKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lz
X251bWJlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2lzX251bWJlcikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19zdHJpbmc6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19z
dHJpbmcpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfb2JqZWN0OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfb2JqZWN0KQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX2Z1bmN0aW9uOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfZnVuY3Rpb24pCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaW46CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9yZXNvbHZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcmVzb2x2ZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9yZXNvbHZl
X3NraXA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9yZXNvbHZlX3NraXApCisgICAgZGlzcGF0Y2goNSkKKworCittYWNybyByZXNvbHZlR2xvYmFs
KHNpemUsIHNsb3cpCisgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENd
ICAgRGVzdGluYXRpb24gZm9yIHRoZSBsb2FkLgorICAgICMgOFtQQ10gICBQcm9wZXJ0eSBpZGVu
dGlmaWVyIGluZGV4IGluIHRoZSBjb2RlIGJsb2NrLgorICAgICMgMTJbUENdICBTdHJ1Y3R1cmUg
cG9pbnRlciwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgIyAx
NltQQ10gIE9mZnNldCBpbiBnbG9iYWwgb2JqZWN0LCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVj
b2RlIGdlbmVyYXRvci4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDEKKyAgICBicG5lcSB0MSwgMTJbUENdLCBzbG93CisgICAgbG9hZGkgMTZb
UENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFt0MCwgdDEsIDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MiwgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdCisgICAgbG9hZGkgKHNpemUgLSAxKSAqIDRbUENdLCB0MAorICAgIHZhbHVlUHJvZmlsZSh0
MiwgdDMsIHQwKQorZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgcmVzb2x2ZUdsb2JhbCg2LCAub3BSZXNvbHZlR2xvYmFsU2xvdykKKyAg
ICBkaXNwYXRjaCg2KQorCisub3BSZXNvbHZlR2xvYmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCisgICAgZGlzcGF0Y2goNikKKworCisjIEdpdmVz
IHlvdSB0aGUgc2NvcGUgaW4gdDAsIHdoaWxlIGFsbG93aW5nIHlvdSB0byBvcHRpb25hbGx5IHBl
cmZvcm0gYWRkaXRpb25hbCBjaGVja3Mgb24gdGhlCisjIHNjb3BlcyBhcyB0aGV5IGFyZSB0cmF2
ZXJzZWQuIHNjb3BlQ2hlY2soKSBpcyBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiB0aGUgcmVn
aXN0ZXIKKyMgaG9sZGluZyB0aGUgc2NvcGUsIGFuZCBhIHJlZ2lzdGVyIHRoYXQgY2FuIGJlIHVz
ZWQgZm9yIHNjcmF0Y2guIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90CisjIHVzZSB0Mywgc28geW91
IGNhbiBob2xkIHN0dWZmIGluIHQzIGlmIG5lZWQgYmUuCittYWNybyBnZXRTY29wZShkZUJydWlq
aW5JbmRleE9wZXJhbmQsIHNjb3BlQ2hlY2spCisgICAgbG9hZHAgU2NvcGVDaGFpbiArIFBheWxv
YWRPZmZzZXRbY2ZyXSwgdDAKKyAgICBsb2FkaSBkZUJydWlqaW5JbmRleE9wZXJhbmQsIHQyCisg
ICAgCisgICAgYnRpeiB0MiwgLmRvbmUKKyAgICAKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDEKKyAgICBiaW5lcSBDb2RlQmxvY2s6Om1fY29kZVR5cGVbdDFdLCBGdW5jdGlvbkNvZGUsIC5s
b29wCisgICAgYnRieiBDb2RlQmxvY2s6Om1fbmVlZHNGdWxsU2NvcGVDaGFpblt0MV0sIC5sb29w
CisgICAgCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX2FjdGl2YXRpb25SZWdpc3Rlclt0MV0sIHQx
CisKKyAgICAjIE5lZWQgdG8gY29uZGl0aW9uYWxseSBza2lwIG92ZXIgb25lIHNjb3BlLgorICAg
IGJpZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAubm9BY3RpdmF0aW9u
CisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRb
dDBdLCB0MAorLm5vQWN0aXZhdGlvbjoKKyAgICBzdWJpIDEsIHQyCisgICAgCisgICAgYnRpeiB0
MiwgLmRvbmUKKy5sb29wOgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3Bl
Q2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKyAgICBzdWJpIDEsIHQyCisgICAgYnRpbnogdDIsIC5s
b29wCisKKy5kb25lOgorZW5kCisKK19sbGludF9vcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRh
W3NwXSwgdDMKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmFjdGl2YXRpb25TdHJ1Y3R1cmVbdDNd
LCB0MworICAgIGdldFNjb3BlKAorICAgICAgICAyMFtQQ10sCisgICAgICAgIG1hY3JvIChzY29w
ZSwgc2NyYXRjaCkKKyAgICAgICAgICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3Rbc2Nv
cGVdLCBzY3JhdGNoCisgICAgICAgICAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3NjcmF0
Y2hdLCB0MywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3cKKyAgICAgICAgZW5kKQor
ICAgIHJlc29sdmVHbG9iYWwoNywgLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93KQorICAgIGRp
c3BhdGNoKDcpCisKKy5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQor
ICAgIGRpc3BhdGNoKDcpCisKKy5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKKyAgICBkaXNwYXRj
aCg3KQorCisKK19sbGludF9vcF9nZXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgIyBPcGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVzdGluYXRp
b24gZm9yIHRoZSBsb2FkLgorICAgICMgOFtQQ10gICBJbmRleCBvZiByZWdpc3RlciBpbiB0aGUg
c2NvcGUuCisgICAgIyAxMltQQ10gIERlIEJydWlqaW4gaW5kZXguCisgICAgZ2V0U2NvcGUoMTJb
UENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwg
dDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAg
bG9hZGkgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0
MCwgdDIsIDhdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
c3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgMTZbUENdLCB0
MQorICAgIHZhbHVlUHJvZmlsZSh0MywgdDAsIHQxKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xs
aW50X29wX3B1dF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBnZXRTY29w
ZSg4W1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgMTJbUENdLCB0
MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQzLCB0MikKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDMsIHQyKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2Rl
OjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJz
W3QwXSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVp
IHQyLCBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9nZXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQw
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAg
SlNHbG9iYWxPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRb
dDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQxCisg
ICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgdmFsdWVQcm9m
aWxlKHQyLCB0MSwgdDMpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dsb2Jh
bF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmpl
Y3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQw
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGxvYWRpIDRbUENd
LCB0MQorICAgIHdyaXRlQmFycmllcih0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRb
dDAsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9iYXNlOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9iYXNlKQorICAgIGRp
c3BhdGNoKDUpCisKKworX2xsaW50X29wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHM6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9lbnN1cmVfcHJvcGVy
dHlfZXhpc3RzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF9i
YXNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cmVzb2x2ZV93aXRoX2Jhc2UpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfcmVzb2x2
ZV93aXRoX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9v
cF9nZXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgV2Ugb25seSBkbyBtb25v
bW9ycGhpYyBnZXRfYnlfaWQgY2FjaGluZyBmb3Igbm93LCBhbmQgd2UgZG8gbm90IG1vZGlmeSB0
aGUKKyAgICAjIG9wY29kZS4gV2UgZG8sIGhvd2V2ZXIsIGFsbG93IGZvciB0aGUgY2FjaGUgdG8g
Y2hhbmdlIGFueXRpbWUgaWYgZmFpbHMsIHNpbmNlCisgICAgIyBwaW5nLXBvbmdpbmcgaXMgZnJl
ZS4gQXQgYmVzdCB3ZSBnZXQgbHVja3kgYW5kIHRoZSBnZXRfYnlfaWQgd2lsbCBjb250aW51ZQor
ICAgICMgdG8gdGFrZSBmYXN0IHBhdGggb24gdGhlIG5ldyBjYWNoZS4gQXQgd29yc3Qgd2UgdGFr
ZSBzbG93IHBhdGgsIHdoaWNoIGlzIHdoYXQKKyAgICAjIHdlIHdvdWxkIGhhdmUgYmVlbiBkb2lu
ZyBhbnl3YXkuCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wR2V0QnlJ
ZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3Bl
cnR5U3RvcmFnZVt0M10sIHQwCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQx
LCAub3BHZXRCeUlkU2xvdworICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIFRhZ09mZnNl
dFt0MCwgdDJdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyXSwgdDIKKyAgICBz
dG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDMyW1BDXSwgdDEKKyAgICB2YWx1ZVByb2ZpbGUo
dDMsIHQyLCB0MSkKKyAgICBkaXNwYXRjaCg5KQorCisub3BHZXRCeUlkU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X2lkKQorICAgIGRpc3BhdGNoKDkpCisKKworX2xs
aW50X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50c0xlbmd0aFNsb3cKKyAg
ICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MgorICAgIHN1Ymkg
MSwgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0
b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5v
cEdldEFyZ3VtZW50c0xlbmd0aFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dl
dF9hcmd1bWVudHNfbGVuZ3RoKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9i
eV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9h
ZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxs
VGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRw
IEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYnBuZXEgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGxvYWRpIDIwW1BDXSwgdDEK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDAsIHQyKQorICAgIHdyaXRlQmFy
cmllcih0MCwgdDIpCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbdDMsIHQxXQorICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFt0MywgdDFdCisgICAgZGlzcGF0Y2goOSkKKworLm9wUHV0QnlJ
ZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pZCkKKyAgICBkaXNw
YXRjaCg5KQorCisKK21hY3JvIHB1dEJ5SWRUcmFuc2l0aW9uKGFkZGl0aW9uYWxDaGVja3MpCisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BD
XSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAs
IC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBicG5lcSBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgYWRkaXRpb25hbENoZWNr
cyh0MSwgdDMsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAgICBsb2Fk
cCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGFkZHAgdDEsIHQzCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQxLCB0MikKKyAgICB3cml0ZUJhcnJp
ZXIodDEsIHQyKQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIDI0W1BD
XSwgdDEKKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVwIHQxLCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXQorICAgIGRpc3BhdGNoKDkpCitlbmQKKworX2xsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBwdXRCeUlkVHJhbnNpdGlvbihtYWNy
byAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KSBlbmQpCisKKworX2xsaW50X29wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICBwdXRCeUlkVHJhbnNpdGlvbigKKyAgICAgICAg
bWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykKKyAgICAgICAgICAgIGNvbnN0IHBy
b3RvQ2VsbCA9IG9sZFN0cnVjdHVyZSAgICMgUmV1c2luZyB0aGUgb2xkU3RydWN0dXJlIHJlZ2lz
dGVyIGZvciB0aGUgcHJvdG8KKyAgICAgICAgCisgICAgICAgICAgICBsb2FkcCAyOFtQQ10sIHNj
cmF0Y2gKKyAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVu
ZCkKKyAgICAgICAgICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3RvcltzY3JhdGNoXSwg
c2NyYXRjaAorICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sg
ZW5kKQorICAgICAgICAgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0
W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5kb25lCisgICAgICAgIC5sb29wOgorICAgICAgICAg
ICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbb2xkU3RydWN0
dXJlXSwgcHJvdG9DZWxsCisgICAgICAgICAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3By
b3RvQ2VsbF0sIG9sZFN0cnVjdHVyZQorICAgICAgICAgICAgYnBuZXEgb2xkU3RydWN0dXJlLCBb
c2NyYXRjaF0sIHNsb3cKKyAgICAgICAgICAgIGFkZHAgNCwgc2NyYXRjaAorICAgICAgICAgICAg
YmluZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBO
dWxsVGFnLCAubG9vcAorICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kKQorCisKK19sbGludF9v
cF9kZWxfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9kZWxfYnlfaWQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5
X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQx
CisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBsb2FkcCBKU0ds
b2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDFdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBicG5l
cSBbdDBdLCB0MiwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdl
W3QwXSwgdDMKKyAgICBiaWFlcSB0MSwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDBdLCAub3BH
ZXRCeVZhbFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6
Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgQXJyYXlTdG9y
YWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKyAgICBiaWVxIHQy
LCBFbXB0eVZhbHVlVGFnLCAub3BHZXRCeVZhbFNsb3cKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQor
ICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MCkKKyAgICBk
aXNwYXRjaCg1KQorCisub3BHZXRCeVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2dldF9ieV92YWwpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZ2V0X2FyZ3Vt
ZW50X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1w
dHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MSwgSW50MzJUYWcsIHQyLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdykK
KyAgICBhZGRpIDEsIHQyCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRb
Y2ZyXSwgdDEKKyAgICBiaWFlcSB0MiwgdDEsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAg
bmVnaSB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNl
dCArIFRhZ09mZnNldFtjZnIsIHQyLCA4XSwgdDAKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZz
ZXQgKyBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MQorICAgIHN0b3JlaSB0MCwgVGFnT2Zm
c2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhd
CisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QXJndW1lbnRCeVZhbFNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfZ2V0X2J5X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSAxMltQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENl
bGxUYWcsIHQxLCAub3BHZXRCeVBuYW1lU2xvdykKKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAg
YnBuZXEgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIC5vcEdldEJ5UG5hbWVTbG93Cisg
ICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAs
IENlbGxUYWcsIHQyLCAub3BHZXRCeVBuYW1lU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQwCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QyXSwgdDAKKyAgICBicG5lcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDI0
W1BDXSwgdDAKKyAgICBsb2FkaSBbY2ZyLCB0MCwgOF0sIHQwCisgICAgc3ViaSAxLCB0MAorICAg
IGJpYWVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX251bUNhY2hlYWJsZVNsb3RzW3Qz
XSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3Jh
Z2VbdDJdLCB0MgorICAgIGxvYWRpIFRhZ09mZnNldFt0MiwgdDAsIDhdLCB0MQorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbdDIsIHQwLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBz
dG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDcpCisKKy5vcEdldEJ5UG5hbWVTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfcG5hbWUpCisgICAgZGlzcGF0Y2go
NykKKworCitfbGxpbnRfb3BfcHV0X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENl
bGxUYWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIEludDMyVGFnLCB0MiwgLm9wUHV0QnlWYWxT
bG93KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6
bV9nbG9iYWxEYXRhW3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFz
c0luZm9bdDBdLCB0MAorICAgIGJwbmVxIFt0MV0sIHQwLCAub3BQdXRCeVZhbFNsb3cKKyAgICBi
aWFlcSB0MiwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDFdLCAub3BQdXRCeVZhbFNsb3cKKyAg
ICBsb2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDFdLCB0MAorICAgIGJpZXEgQXJyYXlTdG9yYWdl
OjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BQdXRC
eVZhbEVtcHR5Cisub3BQdXRCeVZhbFN0b3JlUmVzdWx0OgorICAgIGxvYWRpIDEyW1BDXSwgdDMK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MywgdDEsIHQzKQorICAgIHdyaXRlQmFy
cmllcih0MSwgdDMpCisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFn
T2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBzdG9yZWkgdDMsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3Ig
KyBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BQdXRCeVZh
bEVtcHR5OgorICAgIGFkZGkgMSwgQXJyYXlTdG9yYWdlOjptX251bVZhbHVlc0luVmVjdG9yW3Qw
XQorICAgIGJpYiB0MiwgQXJyYXlTdG9yYWdlOjptX2xlbmd0aFt0MF0sIC5vcFB1dEJ5VmFsU3Rv
cmVSZXN1bHQKKyAgICBhZGRpIDEsIHQyLCB0MQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdl
OjptX2xlbmd0aFt0MF0KKyAgICBqbXAgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorCisub3BQdXRC
eVZhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV92YWwpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZGVsX2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV92YWwpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2luZGV4OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X2luZGV4KQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX3B1dF9nZXR0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfZ2V0dGVyKQorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX3B1dF9zZXR0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfc2V0dGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX2xvb3A6CisgICAgbm9wCitfbGxpbnRfb3Bfam1wOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBkaXNwYXRjaEJyYW5jaCg0W1BDXSkKKworCitfbGxpbnRfb3Bfam1wX3Njb3BlczoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2ptcF9z
Y29wZXMpCisgICAgZGlzcGF0Y2goMCkKKworCittYWNybyBqdW1wVHJ1ZU9yRmFsc2UoY29uZGl0
aW9uT3AsIHNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDEsIEJvb2xlYW5UYWcsIHQwLCAuc2xvdykKKyAgICBjb25kaXRpb25PcCh0
MCwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJh
bmNoKDhbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKHNsb3cpCisgICAgZGlzcGF0Y2go
MCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl90cnVlOgorICAgIG5vcAorX2xsaW50X29wX2p0
cnVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAg
IG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9qdHJ1ZSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKKyAgICBu
b3AKK19sbGludF9vcF9qZmFsc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVl
T3JGYWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIHRhcmdl
dCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamZhbHNlKQorCisKK21hY3JvIGVxdWFsTnVs
bChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxIYW5kbGVyKFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKKyAgICBk
aXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuaW1t
ZWRpYXRlOgorICAgIG9yaSAxLCB0MQorICAgIGltbWVkaWF0ZUhhbmRsZXIodDEsIC50YXJnZXQp
CisgICAgZGlzcGF0Y2goMykKK2VuZAorCitfbGxpbnRfb3BfamVxX251bGw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQp
IGJ0Ym56IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAg
ICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmllcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkK
KyAgICAKKworX2xsaW50X29wX2puZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
ZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRieiB2YWx1ZSwgTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0
YXJnZXQpIGJpbmVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorCisKK19sbGludF9vcF9q
bmVxX3B0cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
bG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFn
LCAub3BKbmVxUHRyQnJhbmNoCisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MSwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCisub3BKbmVxUHRyQnJhbmNoOgorICAgIGRpc3BhdGNo
QnJhbmNoKDEyW1BDXSkKKy5vcEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaCg0KQor
CisKK21hY3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUsIGhlbHBlcikK
KyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWco
dDMsIHQyLCB0MykKKyAgICBiaW5lcSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5l
cSB0MiwgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5q
dW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgYmlhIHQwLCBM
b3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3Vi
bGUKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MywgZnQxCisgICAg
am1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0Mywg
dDIsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGZpaTJkIHQxLCB0MCwgZnQwCisgICAgZG91
YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9w
Mk5vdEludDoKKyAgICBjaTJkIHQxLCBmdDAKKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cK
KyAgICBmaWkyZCB0MywgdDIsIGZ0MQorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1w
VGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5qdW1wVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJh
bmNoKDEyW1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0
Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzOgorICAgIG5vcAorX2xsaW50X29w
X2psZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHQgbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3MpCisKKworX2xsaW50X29wX2pubGVz
czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzcykKKworCitfbGxpbnRfb3BfbG9v
cF9pZl9ncmVhdGVyOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJkZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfamdyZWF0ZXIpCisKKworX2xsaW50X29wX2puZ3JlYXRlcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJkbHRlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcikKKworCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzZXE6
CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0
LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJkbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9q
bGVzc2VxKQorCisKK19sbGludF9vcF9qbmxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiZGd0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
am5sZXNzZXEpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcmVxOgorICAgIG5vcAorX2xs
aW50X29wX2pncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRh
cmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXEgbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXJlcSkK
KworCitfbGxpbnRfb3Bfam5ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNv
bXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJp
Z2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRs
dHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3Jl
YXRlcmVxKQorCisKK19sbGludF9vcF9sb29wX2hpbnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGlu
dF9vcF9zd2l0Y2hfaW1tOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10s
IHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwg
dDEsIHQwKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9j
azo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0
MyAgICMgRklYTUU6IHdvdWxkIGJlIG5pY2UgdG8gcGVlcGhvbGUgdGhpcyEKKyAgICBsb2FkcCBD
b2RlQmxvY2s6OlJhcmVEYXRhOjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JC
dWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEgdDEsIEludDMy
VGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3Qy
XSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVj
dG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2lt
cGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDMK
KyAgICBsb2FkaSBbdDMsIHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxs
VGhyb3VnaAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoSW1t
Tm90SW50OgorICAgIGJpYiB0MSwgTG93ZXN0VGFnLCAub3BTd2l0Y2hJbW1TbG93ICAjIEdvIHRv
IHNsb3cgcGF0aCBpZiBpdCdzIGEgZG91YmxlLgorLm9wU3dpdGNoSW1tRmFsbFRocm91Z2g6Cisg
ICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5vcFN3aXRjaEltbVNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9pbW0pCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxp
bnRfb3Bfc3dpdGNoX2NoYXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BD
XSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQy
LCB0MSwgdDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUs
IHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJTd2l0Y2hKdW1w
VGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAg
IGJpbmVxIHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxU
aHJvdWdoCisgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0MAorICAgIGJpbmVxIFN0
cmluZ0ltcGw6Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAg
bG9hZHAgU3RyaW5nSW1wbDo6bV9kYXRhOFt0MF0sIHQxCisgICAgYnRpbnogU3RyaW5nSW1wbDo6
bV9oYXNoQW5kRmxhZ3NbdDBdLCBIYXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0Y2hDaGFyOEJp
dAorICAgIGxvYWRoIFt0MV0sIHQwCisgICAgam1wIC5vcFN3aXRjaENoYXJSZWFkeQorLm9wU3dp
dGNoQ2hhcjhCaXQ6CisgICAgbG9hZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENoYXJSZWFkeToKKyAg
ICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxl
SnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRj
aENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0
cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQx
CisgICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5j
aFdpdGhPZmZzZXQodDEpCisKKy5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRj
aEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9zdHJpbmcpCisg
ICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmM6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGJ0aXogMTJbUENdLCAub3BOZXdGdW5jVW5jaGVja2VkCisgICAgbG9hZGkgNFtQ
Q10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAu
b3BOZXdGdW5jRG9uZQorLm9wTmV3RnVuY1VuY2hlY2tlZDoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfbmV3X2Z1bmMpCisub3BOZXdGdW5jRG9uZToKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9uZXdfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuY19leHApCisgICAgZGlzcGF0Y2goMykKKworCitt
YWNybyBkb0NhbGwoaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDE2W1BD
XSwgdDEKKyAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93
KQorICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBsb2FkaSAxMltQQ10sIHQzCisg
ICAgYWRkcCAyNCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgYWRkcCBjZnIsIHQzICAjIHQz
IGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9z
Y29wZUNoYWluW3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRb
dDNdCisgICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBs
b2FkaSA4IC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09m
ZnNldFtjZnJdCisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNdCisgICAgc3RvcmVpIHQy
LCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywg
Q2FsbGVlICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBTY29wZUNoYWluICsg
VGFnT2Zmc2V0W3QzXQorICAgIG1vdmUgdDMsIGNmcgorICAgIGNhbGwgTExJbnRDYWxsTGlua0lu
Zm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworLm9w
Q2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhlbHBlcikKK2VuZAorCitfbGxpbnRf
b3BfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJf
Y2FsbCkKKworCitfbGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBkb0NhbGwoX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3QpCisKKworX2xsaW50X29wX2NhbGxfdmFy
YXJnczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIF9sbGlu
dF9oZWxwZXJfY2FsbF92YXJhcmdzKQorCisKK19sbGludF9vcF9jYWxsX2V2YWw6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIAorICAgICMgRXZhbCBpcyBleGVjdXRlZCBpbiBvbmUgb2YgdHdv
IG1vZGVzOgorICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSByZWFsbHkgaW52b2tp
bmcgZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBleGVjdXRpb24gaXMgcGVyZm9t
ZWQgZW50aXJlbHkgaW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBpdAorICAgICMgICAgcmV0dXJucyB0
aGUgUEMgb2YgYSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0aGUgcmV0dXJuIHZhbHVlCisg
ICAgIyAgICB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgICMKKyAgICAjIDIpIFdlIGZpbmQg
dGhhdCB3ZSdyZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwoKSB0aGF0IGlzIG5vdAor
ICAgICMgICAgdGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVscGVyIHJldHVybnMgdGhlIFBDIG9m
IHRoZSB0aGluZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQuCisgICAgIworICAg
ICMgVGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywgd2hpY2ggd291bGQgcmVxdWly
ZSBhIHRvdGFsIG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0ZSB0aGF0IGNhbm5v
dCBiZSBlYXNpbHkgcGFja2VkIGludG8gdHdvCisgICAgIyByZWdpc3RlcnMgKEMgZnVuY3Rpb25z
IGNhbiByZXR1cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5KToKKyAgICAjCisgICAgIyAt
IFRoZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBt
b2RpZmllZAorICAgICMgICBieSB0aGUgaGVscGVyLCBidXQgdGhlIGNvbnZlbnRpb24gaXMgdGhh
dCBpdCByZXR1cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0b3RhbGx5IGNsZWFyIGlmIHRoYXQn
cyBuZWNlc3NhcnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUuCisgICAgIyAgIEJ1dCB0
aGF0J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRlciBzbyB3ZSBzdGljayB3aXRo
IGl0LgorICAgICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBoZWxwZXIgc3VjY2Vzc2Z1
bGx5IGV4ZWN1dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAjICAgdGhlIHJldHVybiB2YWx1ZSwg
b3IgZGlkIG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3IgdXMKKyAgICAjICAg
dG8gY2FsbC4KKyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAgICAjICAgLSBUaGUgSlMgcmV0dXJu
IHZhbHVlICh0d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisgICAgIyAgIC0gVGhlIFBDIHRvIGNh
bGwuCisgICAgIworICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2llciB0byBqdXN0IGFsd2F5
cyBoYXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBhIFBDIHRvIGNhbGwsIGFuZCB0
aGF0IFBDIG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAorICAgICMgcmV0dXJucyB0aGUg
SlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAKKyAgICBzbG93UGF0aEZvckNh
bGwoNCwgX2xsaW50X2hlbHBlcl9jYWxsX2V2YWwpCisKKworX2xsaW50X2dlbmVyaWNfcmV0dXJu
X3BvaW50OgorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitfbGxpbnRfb3BfdGVhcl9vZmZf
YWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0
eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQKKyAgICBiaWVxIFRhZ09mZnNl
dFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVh
dGVkCisub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCisub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0
ZWQ6CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYXJndW1lbnRzOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdWJpIDEsIHQw
ICAgIyBHZXQgdGhlIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcgorICAgIGJpZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3Jl
YXRlZAorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCisu
b3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3Jv
IGRvUmV0dXJuKCkKKyAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgIGxvYWRwIENhbGxl
ckZyYW1lW2Nmcl0sIGNmcgorICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQy
KQorICAgIHJldAorZW5kCisKK19sbGludF9vcF9yZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKwor
CitfbGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxv
YWRpIDhbUENdLCB0MworICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAg
c3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdmFsdWVQcm9maWxlKHQx
LCB0MCwgdDMpCisgICAgdHJhY2VFeGVjdXRpb24oKSAjIE5lZWRzIHRvIGJlIGhlcmUgYmVjYXVz
ZSBpdCB3b3VsZCBjbG9iYmVyIHQxLCB0MAorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X3JldF9vYmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0
Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFJldE9i
amVjdE9yVGhpc05vdE9iamVjdAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwg
T2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgZG9SZXR1cm4oKQor
Cisub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3Q6CisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitf
bGxpbnRfb3BfbWV0aG9kX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIGln
bm9yZSBtZXRob2QgY2hlY2tzIGFuZCB1c2Ugbm9ybWFsIGdldF9ieV9pZCBvcHRpbWl6YXRpb25z
LgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N0cmNhdDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N0cmNhdCkKKyAgICBkaXNwYXRj
aCg0KQorCisKK19sbGludF9vcF90b19wcmltaXRpdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9Qcmlt
aXRpdmVJc0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJi
bmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdU
eXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisub3BUb1ByaW1pdGl2ZUlzSW1tOgorICAgIHN0
b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9QcmltaXRpdmVTbG93Q2Fz
ZToKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fcHJpbWl0aXZlKQorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX2dldF9wbmFtZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfcG5hbWVzKQorICAgIGRpc3BhdGNoKDAp
ICMgVGhlIGhlbHBlciBlaXRoZXIgYWR2YW5jZXMgdGhlIFBDIG9yIGp1bXBzIHVzIHRvIHNvbWV3
aGVyZSBlbHNlLgorCisKK19sbGludF9vcF9uZXh0X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZGkgMTZbUENdLCB0MgorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQwCisgICAgYmllcSB0MCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQyLCA4XSwgLm9wTmV4dFBuYW1lRW5kCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAgbG9hZHAgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6bV9qc1N0cmluZ3NbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDhd
LCB0MworICAgIGFkZGkgMSwgdDAKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwg
dDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAgICBicG5lcSB0MSwg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5h
bWVTbG93CisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5
cGVDaGFpblt0Ml0sIHQwCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwg
dDAKKyAgICBidHB6IFt0MF0sIC5vcE5leHRQbmFtZVRhcmdldAorLm9wTmV4dFBuYW1lQ2hlY2tQ
cm90b3R5cGVMb29wOgorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNl
dFt0MV0sIE51bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1f
cHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0Ml0sIHQxCisgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKKyAg
ICBhZGRwIDQsIHQwCisgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVM
b29wCisub3BOZXh0UG5hbWVUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMjRbUENdKQorCisu
b3BOZXh0UG5hbWVFbmQ6CisgICAgZGlzcGF0Y2goNykKKworLm9wTmV4dFBuYW1lU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV4dF9wbmFtZSkgIyBUaGlzIGVpdGhlciBrZWVw
cyB0aGUgUEMgd2hlcmUgaXQgd2FzIChjYXVzaW5nIHVzIHRvIGxvb3ApIG9yIHNldHMgaXQgdG8g
dGFyZ2V0LgorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3B1c2hfc2NvcGU6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX3Njb3Bl
KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3BvcF9zY29wZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3BvcF9zY29wZSkKKyAgICBk
aXNwYXRjaCgxKQorCisKK19sbGludF9vcF9wdXNoX25ld19zY29wZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfbmV3X3Njb3BlKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2NhdGNoOgorICAgICMgVGhpcyBpcyB3aGVyZSB3
ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKKyAg
ICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3Bf
Y2F0Y2gpLCBhbmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGlu
ZSAoc2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRoZSBKSVQgdGhyb3dpbmcg
cHJvdG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0aHJvd2luZworICAg
ICMgY29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93aW5nIHRvIHRoZSBpbnRl
cnByZXRlciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJl
dGVyUENGb3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1l
OjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVy
cHJldGVyUENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRp
b24gKyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2Vw
dGlvbiArIFRhZ09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhj
ZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNH
bG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAgICAgIAorICAgIGxvYWRpIDRb
UENdLCB0MgorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0
b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdHJhY2VFeGVjdXRpb24oKSAgIyBU
aGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIgdDAs
IHQxLCB0MiwgdDMgYWJvdmUuCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3c6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJv
dykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3I6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJv
d19yZWZlcmVuY2VfZXJyb3IpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfanNyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBhZGRpIDMgKiA0
LCBQQywgdDEKKyAgICBzdG9yZWkgdDEsIFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoQnJhbmNo
KDhbUENdKQorCisKK19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkcCBbY2ZyLCB0MCwgOF0sIFBDCisgICAgZGlzcGF0Y2go
MCkKKworCitfbGxpbnRfb3BfZGVidWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9kZWJ1ZykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9wcm9maWxlX3dpbGxfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklU
U3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgdDAKKyAgICBidHB6IFt0
MF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cHJvZmlsZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENhbGxEb25lOgorICAgIGRpc3BhdGNo
KDIpCisKKworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0s
IHQwCisgICAgYnRweiBbdDBdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERvbmU6
CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhyb3df
ZnJvbV9oZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50
ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMpLCBzbworICAgICMgdGhl
IHRocm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29t
ZSB0byBoZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhy
b3dpbmcgcHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0s
IHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisg
ICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworX2xs
aW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5BZGRy
ZXNzQWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3Bd
LCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAor
ICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKKyMg
TGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBz
dXBwb3J0IGFsbCBvcGNvZGVzLgorIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3
aGVuIHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAorIyBhcyBtdWNoLgorCitt
YWNybyBub3RTdXBwb3J0ZWQoKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGNyYXNo
KCkKKyAgICBlbHNlCisgICAgICAgICMgV2Ugc2hvdWxkIHVzZSB3aGF0ZXZlciB0aGUgc21hbGxl
c3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24gaXMsIGp1c3QgdG8KKyAgICAgICAgIyBlbnN1cmUgdGhh
dCB0aGVyZSBpcyBhIGdhcCBiZXR3ZWVuIGluc3RydWN0aW9uIGxhYmVscy4gSWYgbXVsdGlwbGUK
KyAgICAgICAgIyBzbWFsbGVzdCBpbnN0cnVjdGlvbnMgZXhpc3QsIHdlIHNob3VsZCBwaWNrIHRo
ZSBvbmUgdGhhdCBpcyBtb3N0CisgICAgICAgICMgbGlrZWx5IHJlc3VsdCBpbiBleGVjdXRpb24g
YmVpbmcgaGFsdGVkLiBDdXJyZW50bHkgdGhhdCBpcyB0aGUgYnJlYWsKKyAgICAgICAgIyBpbnN0
cnVjdGlvbiBvbiBhbGwgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBpbnRlcmVzdGVkIGluLiAoQnJlYWsg
aXMgaW50MworICAgICAgICAjIG9uIEludGVsLCB3aGljaCBpcyAxIGJ5dGUsIGFuZCBia3B0IG9u
IEFSTXY3LCB3aGljaCBpcyAyIGJ5dGVzLikKKyAgICAgICAgYnJlYWsKKyAgICBlbmQKK2VuZAor
CitfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxp
bnRfb3BfZ2V0X2J5X2lkX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9n
ZXRfYnlfaWRfY3VzdG9tX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9n
ZXRfYnlfaWRfY3VzdG9tX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9n
ZXRfYnlfaWRfY3VzdG9tX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dl
dF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfZ2V0dGVyX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfZ2V0dGVyX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfZ2V0dGVyX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9p
ZF9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3NlbGY6
CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9zdHJpbmdfbGVuZ3RoOgorICAg
IG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RT
dXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3JlcGxhY2U6CisgICAgbm90U3VwcG9y
dGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uOgorICAgIG5vdFN1cHBvcnRl
ZCgpCisKKworIyBJbmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50LgorX2xsaW50X2VuZDoKKyAgICBj
cmFzaCgpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworI2lm
IEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorCisj
aW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExvd0xldmVsSW50ZXJw
cmV0ZXJfaAorI2RlZmluZSBMb3dMZXZlbEludGVycHJldGVyX2gKKworI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisK
KyNkZWZpbmUgTExJTlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxlbmd0aCkgZXh0ZXJuICJD
IiB2b2lkIGxsaW50XyMjb3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKExMSU5UX0lO
U1RSVUNUSU9OX0RFQ0wpOworI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wKKworZXh0ZXJu
ICJDIiB2b2lkIGxsaW50X2JlZ2luKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW5kKCk7Citl
eHRlcm4gIkMiIHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2V2YWxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9nZW5lcmljX3Jl
dHVybl9wb2ludCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2Zyb21faGVscGVyX3Ry
YW1wb2xpbmUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFt
cG9saW5lKCk7CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMb3dMZXZl
bEludGVycHJldGVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fy
bXY3LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fy
bXY3LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXJtdjcucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkzIEBACisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitjbGFzcyBTcGVjaWFsUmVnaXN0ZXIKKyAgZGVmIGluaXRp
YWxpemUobmFtZSkKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgYXJtVjdPcGVy
YW5kCisgICAgQG5hbWUKKyAgZW5kCitlbmQKKworQVJNdjdfREFUQV9SRUcgPSBTcGVjaWFsUmVn
aXN0ZXIubmV3KCJpcCIpCitBUk12N19BRERSX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoInIz
IikKKworZGVmIG1vdmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJlbnRseSB3
ZSBvbmx5IGhhbmRsZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1vdi9tb3Z0
IGZvciB0aGUgY29tcGxleCBvbmVzLgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2Cisg
ICAgJGFzbS5wdXRzICJtb3Z3IFwjI3t2YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIK
KyAgZWxzaWYgKH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20ucHV0cyAi
bXZudyBcIyN7fnZhbHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNlCisgICAg
JGFzbS5wdXRzICJtb3Z3IFwjI3t2YWx1ZSAmIDB4ZmZmZn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVy
YW5kfSIKKyAgICBpZiAodmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCisgICAgICAkYXNtLnB1dHMg
Im1vdnQgXCMje3ZhbHVlID4+IDE2fSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAgIGVu
ZAorICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAg
ICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICJyMCIKKyAgICB3
aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgICJyMSIKKyAgICB3aGVuICJ0MiIsICJhMiIKKyAg
ICAgICJyMiIKKyAgICB3aGVuICJhMyIKKyAgICAgICJyMyIKKyAgICB3aGVuICJ0MyIKKyAgICAg
ICJyNCIKKyAgICB3aGVuICJ0NCIKKyAgICAgICJyNyIKKyAgICB3aGVuICJjZnIiCisgICAgICAi
cjUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJt
VjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9z
c2libGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFy
bVY3TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0
ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwg
ImZyIgorICAgICAgImQwIgorICAgIHdoZW4gImZyMSIsCisgICAgICAiZDEiCisgICAgd2hlbiAi
ZnIyIgorICAgICAgImQyIgorICAgIHdoZW4gImZyMyIKKyAgICAgICJkMyIKKyAgICB3aGVuICJm
cjQiCisgICAgICAiZDQiCisgICAgd2hlbiAiZnI1IgorICAgICAgImQ1IgorICAgIGVsc2UKKyAg
ICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxl
TWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFu
ZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAK
KyAgICB5aWVsZCBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgYXJt
VjdPcGVyYW5kCisgICAgcmFpc2UgIkludmFsaWQgaW1tZWRpYXRlICN7dmFsdWV9IiBpZiB2YWx1
ZSA8IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAiIyR7dmFsdWV9IgorICBlbmQKKyAgCisgIGRlZiBh
cm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQ
b3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYg
YXJtVjdMb2FkU3RvcmVXcmFwCisgICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCittb2R1bGUg
QVJNdjdBZGRyZXNzVXRpbGl0aWVzCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICBzZWxm
LmFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICRhc20ucHV0cyAiXHRsZHIg
I3tzZWxmLmFybVY3UG9zc2libHlNZW1vcnlPcGVyYW5kfSwgI3tBUk12N19EQVRBX1JFRy5hcm1W
N09wZXJhbmR9IgorICAgIHlpZWxkIEFSTXY3X0RBVEFfUkVHCisgICAgJGFzbS5wdXRzICJcdHN0
ciAje0FSTXY3X0RBVEFfUkVHLmFybVY3T3BlcmFuZH0sICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVt
b3J5T3BlcmFuZH0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgaW5jbHVkZSBBUk12
N0FkZHJlc3NVdGlsaXRpZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVy
YW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYK
KyAgICAgIG1vdmVJbW1lZGlhdGUob2Zmc2V0LnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgICBl
bmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBv
ZmZzZXQudmFsdWUgPCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgIlsje2Jh
c2UuYXJtVjdPcGVyYW5kfSwgI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgICBl
bHNlCisgICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje29mZnNldC5hcm1WN09wZXJhbmR9
XSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGluY2x1ZGUgQVJN
djdBZGRyZXNzVXRpbGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3Bl
cmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNl
dC52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgICAgICAkYXNtLnB1dHMgImFkZHcgI3tBUk12N19B
RERSX1JFRy5hcm1WN09wZXJhbmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQu
dmFsdWUgIT0gMAorICAgICAgIlsje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH0sICN7aW5k
ZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVsc2UKKyAgICAgICJbI3ti
YXNlLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1d
IgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgaW5jbHVk
ZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1l
bW9yeU9wZXJhbmQKKyAgICBtb3ZlSW1tZWRpYXRlKGFkZHJlc3MudmFsdWUsIEFSTXY3X0FERFJf
UkVHKQorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICJb
I3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgZW5kCitlbmQKKworCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEwOCBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUg
ImJhY2tlbmRzIgorcmVxdWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJvZmZzZXRzIgorcmVx
dWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisK
K2NsYXNzIEFzc2VtYmxlcgorICBkZWYgaW5pdGlhbGl6ZShvdXRwKQorICAgIEBvdXRwID0gb3V0
cAorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBkZWYgZW50ZXJBc20KKyAgICBAb3V0
cC5wdXRzICJhc20gKCIKKyAgICBAc3RhdGUgPSA6YXNtCisgIGVuZAorICAKKyAgZGVmIGxlYXZl
QXNtCisgICAgQG91dHAucHV0cyAiKTsiCisgICAgQHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisg
IGRlZiBpbkFzbQorICAgIGVudGVyQXNtCisgICAgeWllbGQKKyAgICBsZWF2ZUFzbQorICBlbmQK
KyAgCisgIGRlZiBwdXRzKGxpbmUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisg
ICAgQG91dHAucHV0cygobGluZSArICJcbiIpLmluc3BlY3QpCisgIGVuZAorICAKKyAgZGVmIGNv
bW1lbnQodGV4dCkKKyAgICBAb3V0cC5wdXRzICIvLyAje3RleHR9IgorICBlbmQKK2VuZAorCith
c21GaWxlID0gQVJHVi5zaGlmdAorb2Zmc2V0c0ZpbGUgPSBBUkdWLnNoaWZ0CitvdXRwdXRGbG5t
ID0gQVJHVi5zaGlmdAorCitvZmZzZXRzTGlzdCwgY29uZmlnSW5kZXggPSBvZmZzZXRzQW5kQ29u
ZmlndXJhdGlvbkluZGV4KG9mZnNldHNGaWxlKQoraW5wdXREYXRhID0gSU86OnJlYWQoYXNtRmls
ZSkKKworaW5wdXRIYXNoID0KKyAgIi8vIG9mZmxpbmVhc20gaW5wdXQgaGFzaDogIiArIERpZ2Vz
dDo6U0hBMS5oZXhkaWdlc3QoaW5wdXREYXRhKSArCisgICIgIiArIERpZ2VzdDo6U0hBMS5oZXhk
aWdlc3QoKG9mZnNldHNMaXN0ICsgW2NvbmZpZ0luZGV4XSkuam9pbignICcpKQorCitpZiBGaWxl
VGVzdC5leGlzdD8gb3V0cHV0RmxubQorICBGaWxlLm9wZW4ob3V0cHV0RmxubSwgInIiKSB7Cisg
ICAgfCBpbnAgfAorICAgIGZpcnN0TGluZSA9IGlucC5nZXRzCisgICAgaWYgZmlyc3RMaW5lIGFu
ZCBmaXJzdExpbmUuY2hvbXAgPT0gaW5wdXRIYXNoCisgICAgICAkc3RkZXJyLnB1dHMgIk5vdGhp
bmcgY2hhbmdlZC4iCisgICAgICBleGl0IDAKKyAgICBlbmQKKyAgfQorZW5kCisKK0ZpbGUub3Bl
bihvdXRwdXRGbG5tLCAidyIpIHsKKyAgfCBvdXRwIHwKKyAgJG91dHB1dCA9IG91dHAKKyAgJG91
dHB1dC5wdXRzIGlucHV0SGFzaAorICAKKyAgJGFzbSA9IEFzc2VtYmxlci5uZXcoJG91dHB1dCkK
KyAgCisgIGFzdCA9IHBhcnNlKGxleChpbnB1dERhdGEpKQorICAKKyAgZm9yU2V0dGluZ3MoY29t
cHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdClbY29uZmlnSW5kZXhdLCBhc3QpIHsKKyAgICB8
IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICBhc3NlcnRDb25m
aWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgICAgbG93TGV2ZWxBU1QgPSBsb3dMZXZlbEFT
VC5yZXNvbHZlKCpidWlsZE9mZnNldHNNYXAobG93TGV2ZWxBU1QsIG9mZnNldHNMaXN0KSkKKyAg
ICBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwg
YmFja2VuZCkgeworICAgICAgJGFzbS5pbkFzbSB7CisgICAgICAgIGxvd0xldmVsQVNULmxvd2Vy
KGJhY2tlbmQpCisgICAgICB9CisgICAgfQorICB9Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9hc3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxMyBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIworIyBCYXNlIHV0aWxpdHkgdHlw
ZXMgZm9yIHRoZSBBU1QuCisjCisKKyMgVmFsaWQgbWV0aG9kcyBmb3IgTm9kZToKKyMKKyMgbm9k
ZS5jaGlsZHJlbiAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGltbWVkaWF0ZSBjaGlsZHJlbi4KKyMK
KyMgbm9kZS5kZXNjZW5kZW50cyAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBzdHJpY3QgZGVz
Y2VuZGFudHMgKGNoaWxkcmVuCisjICAgICBhbmQgY2hpbGRyZW4gb2YgY2hpbGRyZW4sIHRyYW5z
aXRpdmVseSkuCisjCisjIG5vZGUuZmxhdHRlbiAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5p
bmcgdGhlIHN0cmljdCBkZXNjZW5kYW50cyBhbmQKKyMgICAgIHRoZSBub2RlIGl0c2VsZi4KKyMK
KyMgbm9kZS5maWx0ZXIodHlwZSkgLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRob3Nl
IGVsZW1lbnRzIGluCisjICAgICBub2RlLmZsYXR0ZW4gdGhhdCBhcmUgb2YgdGhlIGdpdmVuIHR5
cGUgKGlzX2E/IHR5cGUgcmV0dXJucyB0cnVlKS4KKyMKKyMgbm9kZS5tYXBDaGlsZHJlbnt8dnwg
Li4ufSAtPiBSZXR1cm5zIGEgbmV3IG5vZGUgd2l0aCBhbGwgY2hpbGRyZW4KKyMgICAgIHJlcGxh
Y2VkIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gYmxvY2suCisjCisjIEV4YW1wbGVzOgorIworIyBu
b2RlLmZpbHRlcihTZXR0aW5nKS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzZXR0aW5ncyB0
aGF0IHRoZSBBU1QncworIyAgICAgSWZUaGVuRWxzZSBibG9ja3MgZGVwZW5kIG9uLgorIworIyBu
b2RlLmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHN0cnVj
dHVyZSBvZmZzZXRzCisjICAgICB0aGF0IHRoZSBBU1QgZGVwZW5kcyBvbi4KKworY2xhc3MgTm9k
ZQorICBhdHRyX3JlYWRlciA6Y29kZU9yaWdpbgorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbikKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgZW5kCisgIAorICBkZWYgY29k
ZU9yaWdpblN0cmluZworICAgICJsaW5lIG51bWJlciAje0Bjb2RlT3JpZ2lufSIKKyAgZW5kCisg
IAorICBkZWYgZGVzY2VuZGFudHMKKyAgICBjaGlsZHJlbi5jb2xsZWN0e3x2fCB2LmZsYXR0ZW59
LmZsYXR0ZW4KKyAgZW5kCisgIAorICBkZWYgZmxhdHRlbgorICAgIFtzZWxmXSArIGRlc2NlbmRh
bnRzCisgIGVuZAorICAKKyAgZGVmIGZpbHRlcih0eXBlKQorICAgIGZsYXR0ZW4uc2VsZWN0e3x2
fCB2LmlzX2E/IHR5cGV9CisgIGVuZAorZW5kCisKK2NsYXNzIE5vQ2hpbGRyZW4gPCBOb2RlCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJl
bgorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0S2V5CisgIGF0dHJf
cmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUoc3RydWN0LCBmaWVs
ZCkKKyAgICBAc3RydWN0ID0gc3RydWN0CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5kCisgIAor
ICBkZWYgaGFzaAorICAgIEBzdHJ1Y3QuaGFzaCArIEBmaWVsZC5oYXNoICogMworICBlbmQKKyAg
CisgIGRlZiBlcWw/KG90aGVyKQorICAgIEBzdHJ1Y3QgPT0gb3RoZXIuc3RydWN0IGFuZCBAZmll
bGQgPT0gb3RoZXIuZmllbGQKKyAgZW5kCitlbmQKKyAgICAKKyMKKyMgQVNUIG5vZGVzLgorIwor
CitjbGFzcyBTdHJ1Y3RPZmZzZXQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3Qs
IDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQg
PSBmaWVsZAorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JG
aWVsZChjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGtleSA9IFN0cnVjdE9mZnNldEtl
eS5uZXcoc3RydWN0LCBmaWVsZCkKKyAgICAKKyAgICB1bmxlc3MgQEBtYXBwaW5nW2tleV0KKyAg
ICAgIEBAbWFwcGluZ1trZXldID0gU3RydWN0T2Zmc2V0Lm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3Qs
IGZpZWxkKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1trZXldCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiI3tzdHJ1Y3R9Ojoje2ZpZWxkfSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVy
KQorICAgIGlmIEBzdHJ1Y3QgIT0gb3RoZXIuc3RydWN0CisgICAgICByZXR1cm4gQHN0cnVjdCA8
PT4gb3RoZXIuc3RydWN0CisgICAgZW5kCisgICAgQGZpZWxkIDw9PiBvdGhlci5maWVsZAorICBl
bmQKK2VuZAorCitjbGFzcyBTaXplb2YgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1
Y3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgZW5kCisgIAorICBAQG1hcHBpbmcg
PSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgdW5s
ZXNzIEBAbWFwcGluZ1tzdHJ1Y3RdCisgICAgICBAQG1hcHBpbmdbc3RydWN0XSA9IFNpemVvZi5u
ZXcoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tzdHJ1Y3RdCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAic2l6ZW9mICN7QHN0cnVjdH0iCisgIGVuZAorICAK
KyAgZGVmIDw9PihvdGhlcikKKyAgICBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgZW5kCitl
bmQKKworY2xhc3MgSW1tZWRpYXRlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6dmFsdWUK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhbHVlKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIj
e3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYgPT0ob3RoZXIpCisgICAgb3RoZXIuaXNfYT8gSW1t
ZWRpYXRlIGFuZCBvdGhlci52YWx1ZSA9PSBAdmFsdWUKKyAgZW5kCitlbmQKKworY2xhc3MgQWRk
SW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbgorICAgIEFkZEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5
aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0g
KyAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcyA8IE5v
ZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9
IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIFN1Yklt
bWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gLSAje3JpZ2h0LmR1bXB9
KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFk
ZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwg
cmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmln
aHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0
XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE11bEltbWVkaWF0ZXMubmV3KGNv
ZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKiAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQK
KworY2xhc3MgTmVnSW1tZWRpYXRlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGNo
aWxkXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5lZ0ltbWVkaWF0ZS5uZXco
Y29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
KC0je0BjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQgPCBOb0No
aWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVu
ZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdp
biwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFt
ZV0gPSBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFw
cGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAor
CitjbGFzcyBGUFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisg
IGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5n
W25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBGUFJlZ2lzdGVySUQubmV3KGNvZGVPcmln
aW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlIDwgTm9DaGlsZHJl
bgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAg
CisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5h
bWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0g
VmFyaWFibGUubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25h
bWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNz
IEFkZHJlc3MgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6b2Zmc2V0CisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgW0BiYXNlLCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVs
ZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsj
e2Jhc2UuZHVtcH1dIgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXggPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpiYXNlLCA6aW5kZXgsIDpzY2FsZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAaW5kZXggPSBpbmRleAorICAgIEBz
Y2FsZSA9IHNjYWxlCisgICAgcmFpc2UgdW5sZXNzIFsxLCAyLCA0LCA4XS5tZW1iZXI/IEBzY2Fs
ZQorICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBb
QGJhc2UsIEBpbmRleCwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAaW5kZXgp
LCBAc2NhbGUsICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIj
e29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH0sICN7aW5kZXguZHVtcH0sICN7c2NhbGV9XSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzIDwgTm9DaGlsZHJlbgorICBhdHRyX3Jl
YWRlciA6YWRkcmVzcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYWRkcmVzcykK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBhZGRyZXNzID0gYWRkcmVzcworICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIiN7YWRkcmVzcy5kdW1wfVtdIgorICBlbmQKK2VuZAorCitjbGFz
cyBJbnN0cnVjdGlvbiA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBvcGNvZGUsIG9wZXJhbmRzKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQG9wY29kZSA9IG9wY29kZQorICAgIEBvcGVyYW5kcyA9IG9w
ZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgb3BlcmFuZHMKKyAgZW5kCisg
IAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmln
aW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIlx0IiArIG9wY29kZS50b19zICsgIiAiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5k
dW1wfS5qb2luKCIsICIpCisgIGVuZAorZW5kCisKK2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRlcnJvciIKKyAgZW5kCitlbmQKKworY2xhc3MgQ29u
c3REZWNsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6dmFyaWFibGUsIDp2YWx1ZQorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQHZhcmlhYmxlID0gdmFyaWFibGUKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBl
bmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAdmFyaWFibGUsIEB2YWx1ZV0KKyAgZW5kCisg
IAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBDb25zdERlY2wubmV3KGNvZGVPcmlnaW4sICh5aWVs
ZCBAdmFyaWFibGUpLCAoeWllbGQgQHZhbHVlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICJjb25zdCAje0B2YXJpYWJsZS5kdW1wfSA9ICN7QHZhbHVlLmR1bXB9IgorICBlbmQKK2VuZAor
CiskbGFiZWxNYXBwaW5nID0ge30KKworY2xhc3MgTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJf
cmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIHNl
bGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0K
KyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJl
bE1hcHBpbmdbbmFtZV0uaXNfYT8gTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5n
W25hbWVdID0gTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVs
TWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBl
bmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKworICBAQHVuaXF1ZU5hbWVDb3Vu
dGVyID0gMAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlm
ICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjog
I3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTG9jYWxMYWJlbAorICAg
IGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBMb2NhbExhYmVsLm5ldyhjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAor
ICBkZWYgc2VsZi51bmlxdWUoY29tbWVudCkKKyAgICBuZXdOYW1lID0gIl8je2NvbW1lbnR9Igor
ICAgIGlmICRsYWJlbE1hcHBpbmdbbmV3TmFtZV0KKyAgICAgIHdoaWxlICRsYWJlbE1hcHBpbmdb
bmV3TmFtZSA9ICJfI3tAQHVuaXF1ZU5hbWVDb3VudGVyfV8je2NvbW1lbnR9Il0KKyAgICAgICAg
QEB1bmlxdWVOYW1lQ291bnRlciArPSAxCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBmb3JOYW1l
KG5pbCwgbmV3TmFtZSkKKyAgZW5kCisgIAorICBkZWYgY2xlYW5OYW1lCisgICAgaWYgbmFtZSA9
fiAvXlwuLworICAgICAgIl8iICsgbmFtZVsxLi4tMV0KKyAgICBlbHNlCisgICAgICBuYW1lCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5k
CisKK2NsYXNzIExhYmVsUmVmZXJlbmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBb
QGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExhYmVsUmVmZXJlbmNl
Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxhYmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQor
ICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAg
ZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZSA8IE5vQ2hpbGRyZW4KKyAgYXR0
cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxhYmVsKSkK
KyAgZW5kCisgIAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgIGxhYmVsLm5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UgPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpsaXN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBs
aXN0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxpc3QgPSBsaXN0CisgIGVuZAorICAK
KyAgZGVmIGNoaWxkcmVuCisgICAgbGlzdAorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigm
cHJvYykKKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgQGxpc3QubWFwKCZwcm9jKSkKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxpc3QuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCJc
biIpCisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFs
aXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBUcnVlLm5ldwor
ICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVm
IHZhbHVlCisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgInRydWUiCisgIGVu
ZAorZW5kCisKK2NsYXNzIEZhbHNlIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQorICAg
IHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNlID0gRmFsc2UubmV3CisgIAorICBk
ZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUK
KyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImZhbHNlIgorICBlbmQKK2Vu
ZAorCitjbGFzcyBUcnVlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAgIFRydWUuaW5zdGFuY2UKKyAg
ZW5kCitlbmQKKworY2xhc3MgRmFsc2VDbGFzcworICBkZWYgYXNOb2RlCisgICAgRmFsc2UuaW5z
dGFuY2UKKyAgZW5kCitlbmQKKworY2xhc3MgU2V0dGluZyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9y
ZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBp
bmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVu
bGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFNldHRpbmcubmV3
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZCA8IE5vZGUK
KyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxl
ZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtA
bGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFuZC5uZXco
Y29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBhbmQgI3tyaWdodC5kdW1wfSkiCisgIGVuZAor
ZW5kCisKK2NsYXNzIE9yIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAK
KyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1h
cENoaWxkcmVuCisgICAgT3IubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBA
cmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gb3IgI3ty
aWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE5vdCA8IE5vZGUKKyAgYXR0cl9yZWFk
ZXIgOmNoaWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNo
aWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
CisgICAgTm90Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICIobm90ICN7Y2hpbGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBT
a2lwIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRza2lwIgorICBlbmQK
K2VuZAorCitjbGFzcyBJZlRoZW5FbHNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6cHJlZGljYXRl
LCA6dGhlbkNhc2UKKyAgYXR0cl9hY2Nlc3NvciA6ZWxzZUNhc2UKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgdGhlbkNhc2UpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAcHJlZGljYXRlID0gcHJlZGljYXRlCisgICAgQHRoZW5DYXNlID0gdGhlbkNhc2UK
KyAgICBAZWxzZUNhc2UgPSBTa2lwLm5ldyhjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIGlmIEBlbHNlQ2FzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZSwg
QGVsc2VDYXNlXQorICAgIGVsc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2VdCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgSWZUaGVuRWxzZS5uZXcoY29k
ZU9yaWdpbiwgKHlpZWxkIEBwcmVkaWNhdGUpLCAoeWllbGQgQHRoZW5DYXNlKSwgKHlpZWxkIEBl
bHNlQ2FzZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiaWYgI3twcmVkaWNhdGUuZHVt
cH1cbiIgKyB0aGVuQ2FzZS5kdW1wICsgIlxuZWxzZVxuIiArIGVsc2VDYXNlLmR1bXAgKyAiXG5l
bmQiCisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFt
ZSwgOnZhcmlhYmxlcywgOmJvZHkKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5h
bWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0g
bmFtZQorICAgIEB2YXJpYWJsZXMgPSB2YXJpYWJsZXMKKyAgICBAYm9keSA9IGJvZHkKKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAdmFyaWFibGVzICsgW0Bib2R5XQorICBlbmQKKyAg
CisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQHZh
cmlhYmxlcy5tYXB7fHZ8IHlpZWxkIHZ9LCAoeWllbGQgQGJvZHkpKQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgIm1hY3JvICN7bmFtZX0oIiArIHZhcmlhYmxlcy5jb2xsZWN0e3x2fCB2LmR1
bXB9LmpvaW4oIiwgIikgKyAiKVxuIiArIGJvZHkuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQK
KworY2xhc3MgTWFjcm9DYWxsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOm9wZXJhbmRz
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAgIEBvcGVyYW5kcyA9IG9wZXJh
bmRzCisgICAgcmFpc2UgdW5sZXNzIEBvcGVyYW5kcworICAgIEBvcGVyYW5kcy5lYWNoe3x2fCBy
YWlzZSB1bmxlc3Mgdn0KKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAb3BlcmFuZHMK
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgTWFjcm9DYWxsLm5ldyhj
b2RlT3JpZ2luLCBAbmFtZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICAiXHQje25hbWV9KCIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9Lmpv
aW4oIiwgIikgKyAiKSIKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYmFja2VuZHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4
MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0
IgorcmVxdWlyZSAieDg2IgorCitCQUNLRU5EUyA9CisgIFsKKyAgICJYODYiLAorICAgIkFSTXY3
IgorICBdCisKK1dPUktJTkdfQkFDS0VORFMgPQorICBbCisgICAiWDg2IgorICBdCisKK0JBQ0tF
TkRfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgnICsgQkFDS0VORFMuam9pbignKXwoJykgKyAn
KVxcWicpCisKK2NsYXNzIE5vZGUKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgc2VuZCgibG93ZXIi
ICsgbmFtZSkKKyAgZW5kCitlbmQKKworIyBPdmVycmlkZXMgZm9yIGxvd2VyKCkgZm9yIHRob3Nl
IG5vZGVzIHRoYXQgYXJlIGJhY2tlbmQtYWdub3N0aWMKKworZGVmIHNhbml0aXplTGFiZWxOYW1l
KG5hbWUpCisgICMgU29tZSBwbGF0Zm9ybXMgZG9uJ3Qgd2FudCB0aGUgbGVhZGluZyAiXyIuIElm
IHdlIGV2ZXIgd2FudCB0byBkbyBzb21ldGhpbmcKKyAgIyBhYm91dCB0aGF0LCBpdCB3b3VsZCBi
ZSBoZXJlLgorICBuYW1lCitlbmQKKworY2xhc3MgTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisg
ICAgJGFzbS5wdXRzICIuZ2xvYmwgI3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxmLm5hbWUpfSIKKyAg
ICAkYXNtLnB1dHMgIiN7c2FuaXRpemVMYWJlbE5hbWUoc2VsZi5uYW1lKX06IgorICBlbmQKK2Vu
ZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAgICRhc20ucHV0cyAi
TF9vZmZsaW5lYXNtXyN7c2VsZi5uYW1lWzEuLi0xXX06IgorICBlbmQKK2VuZAorCitjbGFzcyBT
a2lwCisgIGRlZiBsb3dlcihuYW1lKQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBk
ZWYgbG93ZXIobmFtZSkKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBu
b2RlLmxvd2VyKG5hbWUpCisgICAgfQorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9l
eHRyYWN0b3IucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDg3IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMg
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFj
a2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJl
ICJwYXJzZXIiCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworaW5w
dXRGbG5tID0gQVJHVi5zaGlmdAorb3V0cHV0RmxubSA9IEFSR1Yuc2hpZnQKKworZGVmIGVtaXRN
YWdpY051bWJlcgorICBPRkZTRVRfTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICB8IG51bWJlciB8
CisgICAgJG91dHB1dC5wdXRzICIje251bWJlcn0sIgorICB9CitlbmQKKworaW5wdXREYXRhID0g
SU86OnJlYWQoaW5wdXRGbG5tKQoraW5wdXRIYXNoID0gRGlnZXN0OjpTSEExLmhleGRpZ2VzdChp
bnB1dERhdGEpCisKK2lmIEZpbGVUZXN0LmV4aXN0PyBvdXRwdXRGbG5tCisgIEZpbGUub3Blbihv
dXRwdXRGbG5tLCAiciIpIHsKKyAgICB8IGlucCB8CisgICAgZmlyc3RMaW5lID0gaW5wLmdldHMK
KyAgICBpZiBmaXJzdExpbmUgYW5kIGZpcnN0TGluZS5jaG9tcCA9PSAiLy8gb2ZmbGluZWFzbSBp
bnB1dCBoYXNoOiAje2lucHV0SGFzaH0iCisgICAgICAkc3RkZXJyLnB1dHMgIk5vdGhpbmcgY2hh
bmdlZC4iCisgICAgICBleGl0IDAKKyAgICBlbmQKKyAgfQorZW5kCisKK29yaWdpbmFsQVNUID0g
cGFyc2UobGV4KGlucHV0RGF0YSkpCisKK0ZpbGUub3BlbihvdXRwdXRGbG5tLCAidyIpIHsKKyAg
fCBvdXRwIHwKKyAgJG91dHB1dCA9IG91dHAKKyAgb3V0cC5wdXRzICIvLyBvZmZsaW5lYXNtIGlu
cHV0IGhhc2g6ICN7aW5wdXRIYXNofSIKKyAgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKG9y
aWdpbmFsQVNUKSB7CisgICAgfCBzZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8CisgICAg
b2Zmc2V0c0xpc3QgPSBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CisgICAgc2l6
ZXNMaXN0ID0gYXN0LmZpbHRlcihTaXplb2YpLnVuaXEuc29ydAorICAgIAorICAgIGxlbmd0aCA9
IChPRkZTRVRfTUFHSUNfTlVNQkVSUy5zaXplICsgMSkgKiAoMSArIG9mZnNldHNMaXN0LnNpemUg
KyBzaXplc0xpc3Quc2l6ZSkKKyAgICAKKyAgICBvdXRwLnB1dHMgInN0YXRpYyBjb25zdCB1bnNp
Z25lZCBleHRyYWN0b3JUYWJsZVsje2xlbmd0aH1dID0geyIKKyAgICBlbWl0TWFnaWNOdW1iZXIK
KyAgICBvdXRwLnB1dHMgIiN7aW5kZXh9LCIKKyAgICBvZmZzZXRzTGlzdC5lYWNoIHsKKyAgICAg
IHwgb2Zmc2V0IHwKKyAgICAgIGVtaXRNYWdpY051bWJlcgorICAgICAgb3V0cC5wdXRzICJPRkZM
SU5FX0FTTV9PRkZTRVRPRigje29mZnNldC5zdHJ1Y3R9LCAje29mZnNldC5maWVsZH0pLCIKKyAg
ICB9CisgICAgc2l6ZXNMaXN0LmVhY2ggeworICAgICAgfCBvZmZzZXQgfAorICAgICAgZW1pdE1h
Z2ljTnVtYmVyCisgICAgICBvdXRwLnB1dHMgInNpemVvZigje29mZnNldC5zdHJ1Y3R9KSwiCisg
ICAgfQorICAgIG91dHAucHV0cyAifTsiCisgIH0KK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTg4IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitNQUNST19JTlNUUlVDVElPTlMgPQorICBbCisgICAiYWRkaSIsCisgICAiYW5kaSIsCisg
ICAibHNoaWZ0aSIsCisgICAibXVsaSIsCisgICAibmVnaSIsCisgICAibm90aSIsCisgICAib3Jp
IiwKKyAgICJyc2hpZnRpIiwKKyAgICJ1cnNoaWZ0aSIsCisgICAic3ViaSIsCisgICAieG9yaSIs
CisgICAibG9hZGkiLAorICAgImxvYWRiIiwKKyAgICJsb2FkaCIsCisgICAic3RvcmVpIiwKKyAg
ICJzdG9yZWIiLAorICAgImxvYWRkIiwKKyAgICJtb3ZlZCIsCisgICAic3RvcmVkIiwKKyAgICJh
ZGRkIiwKKyAgICJkaXZkIiwKKyAgICJzdWJkIiwKKyAgICJtdWxkIiwKKyAgICJzcXJ0ZCIsCisg
ICAiY2kyZCIsCisgICAiZmlpMmQiLCAjIHVzYWdlOiBmaWkyZCA8Z3ByIHdpdGggbGVhc3Qgc2ln
bmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+LCA8ZnByPgor
ICAgImZkMmlpIiwgIyB1c2FnZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0aCBsZWFzdCBzaWduaWZp
Y2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4KKyAgICJiZGVxIiwK
KyAgICJiZG5lcSIsCisgICAiYmRndCIsCisgICAiYmRndGVxIiwKKyAgICJiZGx0IiwKKyAgICJi
ZGx0ZXEiLAorICAgImJkZXF1biIsCisgICAiYmRuZXF1biIsCisgICAiYmRndHVuIiwKKyAgICJi
ZGd0ZXF1biIsCisgICAiYmRsdHVuIiwKKyAgICJiZGx0ZXF1biIsCisgICAiYnRkMmkiLAorICAg
InRkMmkiLAorICAgImJjZDJpIiwKKyAgICJtb3ZkeiIsCisgICAicG9wIiwKKyAgICJwdXNoIiwK
KyAgICJtb3ZlIiwKKyAgICJzeGkycCIsCisgICAienhpMnAiLAorICAgIm5vcCIsCisgICAiYmll
cSIsCisgICAiYmluZXEiLAorICAgImJpYSIsCisgICAiYmlhZXEiLAorICAgImJpYiIsCisgICAi
YmliZXEiLAorICAgImJpZ3QiLAorICAgImJpZ3RlcSIsCisgICAiYmlsdCIsCisgICAiYmlsdGVx
IiwKKyAgICJiYmVxIiwKKyAgICJiYm5lcSIsCisgICAiYmJhIiwKKyAgICJiYmFlcSIsCisgICAi
YmJiIiwKKyAgICJiYmJlcSIsCisgICAiYmJndCIsCisgICAiYmJndGVxIiwKKyAgICJiYmx0IiwK
KyAgICJiYmx0ZXEiLAorICAgImJ0aW8iLAorICAgImJ0aXMiLAorICAgImJ0aXoiLAorICAgImJ0
aW56IiwKKyAgICJidGJvIiwKKyAgICJidGJzIiwKKyAgICJidGJ6IiwKKyAgICJidGJueiIsCisg
ICAiam1wIiwKKyAgICJiYWRkaW8iLAorICAgImJhZGRpcyIsCisgICAiYmFkZGl6IiwKKyAgICJi
YWRkaW56IiwKKyAgICJic3ViaW8iLAorICAgImJzdWJpcyIsCisgICAiYnN1Yml6IiwKKyAgICJi
c3ViaW56IiwKKyAgICJibXVsaW8iLAorICAgImJtdWxpcyIsCisgICAiYm11bGl6IiwKKyAgICJi
bXVsaW56IiwKKyAgICJib3JpbyIsCisgICAiYm9yaXMiLAorICAgImJvcml6IiwKKyAgICJib3Jp
bnoiLAorICAgImJyZWFrIiwKKyAgICJjYWxsIiwKKyAgICJyZXQiLAorICAgImNpZXEiLAorICAg
ImNpbmVxIiwKKyAgICJjaWEiLAorICAgImNpYWVxIiwKKyAgICJjaWIiLAorICAgImNpYmVxIiwK
KyAgICJjaWd0IiwKKyAgICJjaWd0ZXEiLAorICAgImNpbHQiLAorICAgImNpbHRlcSIsCisgICAi
dGlvIiwKKyAgICJ0aXMiLAorICAgInRpeiIsCisgICAidGlueiIsCisgICAidGJvIiwKKyAgICJ0
YnMiLAorICAgInRieiIsCisgICAidGJueiIsCisgICAicGVlayIsCisgICAicG9rZSIsCisgICAi
YnBlcSIsCisgICAiYnBuZXEiLAorICAgImJwYSIsCisgICAiYnBhZXEiLAorICAgImJwYiIsCisg
ICAiYnBiZXEiLAorICAgImJwZ3QiLAorICAgImJwZ3RlcSIsCisgICAiYnBsdCIsCisgICAiYnBs
dGVxIiwKKyAgICJhZGRwIiwKKyAgICJhbmRwIiwKKyAgICJvcnAiLAorICAgInN1YnAiLAorICAg
InhvcnAiLAorICAgImxvYWRwIiwKKyAgICJjcGVxIiwKKyAgICJjcG5lcSIsCisgICAiY3BhIiwK
KyAgICJjcGFlcSIsCisgICAiY3BiIiwKKyAgICJjcGJlcSIsCisgICAiY3BndCIsCisgICAiY3Bn
dGVxIiwKKyAgICJjcGx0IiwKKyAgICJjcGx0ZXEiLAorICAgInN0b3JlcCIsCisgICAiYnRwbyIs
CisgICAiYnRwcyIsCisgICAiYnRweiIsCisgICAiYnRwbnoiLAorICAgImJhZGRwbyIsCisgICAi
YmFkZHBzIiwKKyAgICJiYWRkcHoiLAorICAgImJhZGRwbnoiCisgIF0KKworWDg2X0lOU1RSVUNU
SU9OUyA9CisgIFsKKyAgICJjZHFpIiwKKyAgICJpZGl2aSIKKyAgXQorCitJTlNUUlVDVElPTlMg
PSBNQUNST19JTlNUUlVDVElPTlMgKyBYODZfSU5TVFJVQ1RJT05TCisKK0lOU1RSVUNUSU9OX1BB
VFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbignKXwoJykgKyAn
KSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4
dHJhY3Rvcl9jb25zdGFudHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0
YW50cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgwZmY1
ZTc1NSBdCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0
cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZz
ZXRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
b2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTAgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIm9mZnNldF9l
eHRyYWN0b3JfY29uc3RhbnRzIgorCitPRkZTRVRfTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2Fj
NywgMHgwZmY1ZTc1NSBdCisKKyMKKyMgb2Zmc2V0c0xpc3QoYXN0KQorIyBzaXplc0xpc3QoYXN0
KQorIworIyBSZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCBzaXplcyB1c2VkIGJ5IHRoZSBB
U1QuCisjCisKK2RlZiBvZmZzZXRzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0
KS51bmlxLnNvcnQKK2VuZAorCitkZWYgc2l6ZXNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTaXpl
b2YpLnVuaXEuc29ydAorZW5kCisKKyMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChh
c3QsIGZpbGUpIC0+CisjICAgICBbb2Zmc2V0cywgaW5kZXhdCisjCisjIFBhcnNlcyB0aGUgb2Zm
c2V0cyBmcm9tIGEgZmlsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgdGhlCisj
IGluZGV4IG9mIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgaXMgdmFsaWQgaW4gdGhpcyBidWlsZCB0
YXJnZXQuCisjCisKK2RlZiBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUpCisgIGlu
ZGV4ID0gbmlsCisgIG9mZnNldHMgPSBbXQorICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBuaWwK
KyAgCisgIGRlZiByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICBieXRlcyA9IFtdCisgICAg
NC50aW1lcyB7CisgICAgICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQorICAgIH0KKyAgICAKKyAgICBp
ZiBlbmRpYW5uZXNzID09IDpsaXR0bGUKKyAgICAgICMgTGl0dGxlIGVuZGlhbgorICAgICAgKGJ5
dGVzWzBdIDw8IDAgfAorICAgICAgIGJ5dGVzWzFdIDw8IDggfAorICAgICAgIGJ5dGVzWzJdIDw8
IDE2IHwKKyAgICAgICBieXRlc1szXSA8PCAyNCkKKyAgICBlbHNlCisgICAgICAjIEJpZyBlbmRp
YW4KKyAgICAgIChieXRlc1swXSA8PCAyNCB8CisgICAgICAgYnl0ZXNbMV0gPDwgMTYgfAorICAg
ICAgIGJ5dGVzWzJdIDw8IDggfAorICAgICAgIGJ5dGVzWzNdIDw8IDApCisgICAgZW5kCisgIGVu
ZAorICAKKyAgWzpsaXR0bGUsIDpiaWddLmVhY2ggeworICAgIHwgZW5kaWFubmVzcyB8CisgICAg
bWFnaWNCeXRlcyA9IFtdCisgICAgTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICAgIHwgbnVtYmVy
IHwKKyAgICAgIGN1cnJlbnRCeXRlcyA9IFtdCisgICAgICA0LnRpbWVzIHsKKyAgICAgICAgY3Vy
cmVudEJ5dGVzIDw8IChudW1iZXIgJiAweGZmKQorICAgICAgICBudW1iZXIgPj49IDgKKyAgICAg
IH0KKyAgICAgIGlmIGVuZGlhbm5lc3MgPT0gOmJpZworICAgICAgICBjdXJyZW50Qnl0ZXMucmV2
ZXJzZSEKKyAgICAgIGVuZAorICAgICAgbWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0ZXMKKyAgICB9
CisgICAgCisgICAgRmlsZS5vcGVuKGZpbGUsICJyIikgeworICAgICAgfCBpbnAgfAorICAgICAg
d2hlcmVJbk1hcmtlciA9IDAKKyAgICAgIGxvb3AgeworICAgICAgICBieXRlID0gaW5wLmdldGJ5
dGUKKyAgICAgICAgYnJlYWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgaWYgYnl0ZSA9PSBtYWdpY0J5
dGVzW3doZXJlSW5NYXJrZXJdCisgICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisgICAgICAg
ICAgaWYgd2hlcmVJbk1hcmtlciA9PSBtYWdpY0J5dGVzLnNpemUKKyAgICAgICAgICAgICMgV2Ug
aGF2ZSBhIG1hdGNoISBJZiB3ZSBoYXZlIG5vdCB5ZXQgcmVhZCB0aGUgZW5kaWFubmVzcyBtYXJr
ZXIgYW5kIGluZGV4LAorICAgICAgICAgICAgIyB0aGVuIHJlYWQgdGhvc2Ugbm93OyBvdGhlcndp
c2UgcmVhZCBhbiBvZmZzZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIG5vdCBpbmRl
eAorICAgICAgICAgICAgICBpbmRleCA9IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICBvZmZzZXRzIDw8IHJlYWRJbnQoZW5kaWFubmVzcywg
aW5wKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdoZXJlSW5N
YXJrZXIgPSAwCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICB3aGVyZUlu
TWFya2VyID0gMAorICAgICAgICBlbmQKKyAgICAgIH0KKyAgICB9CisgICAgCisgICAgYnJlYWsg
aWYgaW5kZXgKKyAgfQorICAKKyAgcmFpc2UgdW5sZXNzIGluZGV4CisgIAorICBbb2Zmc2V0cywg
aW5kZXhdCitlbmQKKworIworIyBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkgLT4g
W29mZnNldHMsIHNpemVzXQorIworIyBCdWlsZHMgYSBtYXBwaW5nIGJldHdlZW4gU3RydWN0T2Zm
c2V0IG5vZGVzIGFuZCB0aGVpciB2YWx1ZXMuCisjCisKK2RlZiBidWlsZE9mZnNldHNNYXAoYXN0
LCBvZmZzZXRzTGlzdCkKKyAgb2Zmc2V0c01hcCA9IHt9CisgIHNpemVzTWFwID0ge30KKyAgYXN0
T2Zmc2V0c0xpc3QgPSBvZmZzZXRzTGlzdChhc3QpCisgIGFzdFNpemVzTGlzdCA9IHNpemVzTGlz
dChhc3QpCisgIHJhaXNlIHVubGVzcyBhc3RPZmZzZXRzTGlzdC5zaXplICsgYXN0U2l6ZXNMaXN0
LnNpemUgPT0gb2Zmc2V0c0xpc3Quc2l6ZQorICBvZmZzZXRzTGlzdChhc3QpLmVhY2hfd2l0aF9p
bmRleCB7CisgICAgfCBzdHJ1Y3RPZmZzZXQsIGluZGV4IHwKKyAgICBvZmZzZXRzTWFwW3N0cnVj
dE9mZnNldF0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIHNpemVzTGlzdChhc3QpLmVhY2hf
d2l0aF9pbmRleCB7CisgICAgfCBzaXplb2YsIGluZGV4IHwKKyAgICBzaXplc01hcFtzaXplb2Zd
ID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQorICBbb2Zmc2V0c01hcCwgc2l6ZXNNYXBdCitlbmQK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1ODUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMg
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImluc3RydWN0aW9ucyIKK3JlcXVp
cmUgInJlZ2lzdGVycyIKKworY2xhc3MgVG9rZW4KKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4s
IDpzdHJpbmcKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cmluZykKKyAgICBA
Y29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgICBAc3RyaW5nID0gc3RyaW5nCisgIGVuZAorICAK
KyAgZGVmID09KG90aGVyKQorICAgIGlmIG90aGVyLmlzX2E/IFRva2VuCisgICAgICBAc3RyaW5n
ID09IG90aGVyLnN0cmluZworICAgIGVsc2UKKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIKKyAgICBl
bmQKKyAgZW5kCisgIAorICBkZWYgPX4ob3RoZXIpCisgICAgQHN0cmluZyA9fiBvdGhlcgorICBl
bmQKKyAgCisgIGRlZiB0b19zCisgICAgIiN7QHN0cmluZy5pbnNwZWN0fSBhdCBsaW5lICN7Y29k
ZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYg
Y29tbWVudC5lbXB0eT8KKyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfSIKKyAgICBl
bHNlCisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc306ICN7Y29tbWVudFswXX0iCisg
ICAgZW5kCisgIGVuZAorZW5kCisKKyMKKyMgVGhlIGxleGVyLiBUYWtlcyBhIHN0cmluZyBhbmQg
cmV0dXJucyBhbiBhcnJheSBvZiB0b2tlbnMuCisjCisKK2RlZiBsZXgoc3RyKQorICByZXN1bHQg
PSBbXQorICBsaW5lTnVtYmVyID0gMQorICB3aGlsZSBub3Qgc3RyLmVtcHR5PworICAgIGNhc2Ug
c3RyCisgICAgd2hlbiAvXEFcIyhbXlxuXSopLworICAgICAgIyBjb21tZW50LCBpZ25vcmUKKyAg
ICB3aGVuIC9cQVxuLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikK
KyAgICAgIGxpbmVOdW1iZXIgKz0gMQorICAgIHdoZW4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9d
KikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4g
L1xBXC4oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1i
ZXIsICQmKQorICAgIHdoZW4gL1xBXyhbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBU
b2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEEoWyBcdF0rKS8KKyAgICAgICMg
d2hpdGVzcGFjZSwgaWdub3JlCisgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSspLworICAgICAg
cmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAgICB3aGVuIC9c
QTAoWzAtN10rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYub2N0
LnRvX3MpCisgICAgd2hlbiAvXEEoWzAtOV0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXco
bGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEE6Oi8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5u
ZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFbOixcKFwpXFtcXT1cK1wtKl0vCisgICAg
ICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIGVsc2UKKyAgICAgIHJh
aXNlICJMZXhlciBlcnJvciBhdCBsaW5lIG51bWJlciAje2xpbmVOdW1iZXJ9LCB1bmV4cGVjdGVk
IHNlcXVlbmNlICN7c3RyWzAuLjIwXS5pbnNwZWN0fSIKKyAgICBlbmQKKyAgICBzdHIgPSAkfi5w
b3N0X21hdGNoCisgIGVuZAorICByZXN1bHQKK2VuZAorCisjCisjIFRva2VuIGlkZW50aWZpY2F0
aW9uLgorIworCitkZWYgaXNSZWdpc3Rlcih0b2tlbikKKyAgdG9rZW4gPX4gUkVHSVNURVJfUEFU
VEVSTgorZW5kCisKK2RlZiBpc0luc3RydWN0aW9uKHRva2VuKQorICB0b2tlbiA9fiBJTlNUUlVD
VElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzS2V5d29yZCh0b2tlbikKKyAgdG9rZW4gPX4gL1xB
KCh0cnVlKXwoZmFsc2UpfChpZil8KHRoZW4pfChlbHNlKXwoZWxzaWYpfChlbmQpfChhbmQpfChv
cil8KG5vdCl8KG1hY3JvKXwoY29uc3QpfChzaXplb2YpfChlcnJvcikpXFovIG9yCisgICAgdG9r
ZW4gPX4gUkVHSVNURVJfUEFUVEVSTiBvcgorICAgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRF
Uk4KK2VuZAorCitkZWYgaXNJZGVudGlmaWVyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbYS16QS1a
XShbYS16QS1aMC05X10qKVxaLyBhbmQgbm90IGlzS2V5d29yZCh0b2tlbikKK2VuZAorCitkZWYg
aXNMYWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXyhbYS16QS1aMC05X10qKVxaLworZW5kCisK
K2RlZiBpc0xvY2FsTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQVwuKFthLXpBLVowLTlfXSop
XFovCitlbmQKKworZGVmIGlzVmFyaWFibGUodG9rZW4pCisgIGlzSWRlbnRpZmllcih0b2tlbikg
b3IgaXNSZWdpc3Rlcih0b2tlbikKK2VuZAorCitkZWYgaXNJbnRlZ2VyKHRva2VuKQorICB0b2tl
biA9fiAvXEFbMC05XS8KK2VuZAorCisjCisjIFRoZSBwYXJzZXIuIFRha2VzIGFuIGFycmF5IG9m
IHRva2VucyBhbmQgcmV0dXJucyBhbiBBU1QuIE1ldGhvZHMKKyMgb3RoZXIgdGhhbiBwYXJzZSh0
b2tlbnMpIGFyZSBub3QgZm9yIHB1YmxpYyBjb25zdW1wdGlvbi4KKyMKKworY2xhc3MgUGFyc2Vy
CisgIGRlZiBpbml0aWFsaXplKHRva2VucykKKyAgICBAdG9rZW5zID0gdG9rZW5zCisgICAgQGlk
eCA9IDAKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBpZiBAdG9r
ZW5zW0BpZHhdCisgICAgICBAdG9rZW5zW0BpZHhdLnBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAg
ZWxzZQorICAgICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9y
IGF0IGVuZCBvZiBmaWxlIgorICAgICAgZWxzZQorICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3Ig
YXQgZW5kIG9mIGZpbGU6ICN7Y29tbWVudFswXX0iCisgICAgICBlbmQKKyAgICBlbmQKKyAgZW5k
CisgIAorICBkZWYgY29uc3VtZShyZWdleHApCisgICAgaWYgcmVnZXhwCisgICAgICBwYXJzZUVy
cm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID1+IHJlZ2V4cAorICAgIGVsc2UKKyAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIEBpZHggPT0gQHRva2Vucy5sZW5ndGgKKyAgICBlbmQKKyAgICBAaWR4ICs9
IDEKKyAgZW5kCisgIAorICBkZWYgc2tpcE5ld0xpbmUKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhd
ID09ICJcbiIKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJz
ZVByZWRpY2F0ZUF0b20KKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJub3QiCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHBhcnNlUHJlZGljYXRlQXRvbQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0g
PT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByZXN1bHQg
PSBwYXJzZVByZWRpY2F0ZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9
PSAiKSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAidHJ1ZSIKKyAgICAgIHJlc3VsdCA9IFRydWUuaW5zdGFuY2UKKyAgICAgIEBpZHgg
Kz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZmFsc2UiCisg
ICAgICByZXN1bHQgPSBGYWxzZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1
bHQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0g
U2V0dGluZy5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5z
dHJpbmcpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBh
cnNlRXJyb3IKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBbmQKKyAg
ICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09
ICJhbmQiCisgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAg
ICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGlj
YXRlQXRvbQorICAgICAgcmVzdWx0ID0gQW5kLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0
KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZQor
ICAgICMgc29tZSBleGFtcGxlcyBvZiBwcmVjZWRlbmNlOgorICAgICMgbm90IGEgYW5kIGIgLT4g
KG5vdCBhKSBhbmQgYgorICAgICMgYSBhbmQgYiBvciBjIC0+IChhIGFuZCBiKSBvciBjCisgICAg
IyBhIG9yIGIgYW5kIGMgLT4gYSBvciAoYiBhbmQgYykKKyAgICAKKyAgICByZXN1bHQgPSBwYXJz
ZVByZWRpY2F0ZUFuZAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIm9yIgorICAgICAgY29k
ZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAg
ICBza2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAgICAgcmVz
dWx0ID0gT3IubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5kCisgICAgcmVz
dWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlVmFyaWFibGUKKyAgICBpZiBpc1JlZ2lzdGVyKEB0
b2tlbnNbQGlkeF0pCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID1+IEZQUl9QQVRURVJOCisgICAg
ICAgIHJlc3VsdCA9IEZQUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdp
biwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IFJl
Z2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0u
c3RyaW5nKQorICAgICAgZW5kCisgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0p
CisgICAgICByZXN1bHQgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdp
biwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAg
IGVuZAorICAgIEBpZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUFk
ZHJlc3Mob2Zmc2V0KQorICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIlsi
CisgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIAorICAgICMg
VGhyZWUgcG9zc2liaWxpdGllczoKKyAgICAjIFtdICAgICAgIC0+IEFic29sdXRlQWRkcmVzcwor
ICAgICMgW2FdICAgICAgLT4gQWRkcmVzcworICAgICMgW2EsYl0gICAgLT4gQmFzZUluZGV4IHdp
dGggc2NhbGUgPSAxCisgICAgIyBbYSxiLGNdICAtPiBCYXNlSW5kZXgKKyAgICAKKyAgICBAaWR4
ICs9IDEKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgQGlkeCArPSAxCisgICAg
ICByZXR1cm4gQWJzb2x1dGVBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXQpCisgICAgZW5k
CisgICAgYSA9IHBhcnNlVmFyaWFibGUKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAg
ICAgcmVzdWx0ID0gQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgYSwgb2Zmc2V0KQorICAgIGVsc2UK
KyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIGIgPSBwYXJzZVZhcmlhYmxlCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIDEs
IG9mZnNldCkKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tA
aWR4XSA9PSAiLCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNz
IFsiMSIsICIyIiwgIjQiLCAiOCJdLm1lbWJlcj8gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAg
ICAgYyA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAgIHJlc3Vs
dCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgYywgb2Zmc2V0KQorICAgICAgZW5k
CisgICAgZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBh
cnNlQ29sb25Db2xvbgorICAgIHNraXBOZXdMaW5lCisgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbgorICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9r
ZW5zW0BpZHhdCisgICAgbmFtZXMgPSBbQHRva2Vuc1tAaWR4XS5zdHJpbmddCisgICAgQGlkeCAr
PSAxCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiOjoiCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICBu
YW1lcyA8PCBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgQGlkeCArPSAxCisgICAgZW5kCisg
ICAgcmFpc2UgaWYgbmFtZXMuZW1wdHk/CisgICAgW2NvZGVPcmlnaW4sIG5hbWVzXQorICBlbmQK
KyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgc2tpcE5ld0xpbmUKKyAgICBpZiBA
dG9rZW5zW0BpZHhdID09ICItIgorICAgICAgQGlkeCArPSAxCisgICAgICBOZWdJbW1lZGlhdGUu
bmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHBhcnNlRXhwcmVzc2lvbkF0b20pCisg
ICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVz
dWx0ID0gcGFyc2VFeHByZXNzaW9uCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0Bp
ZHhdID09ICIpIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lu
dGVnZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gSW1tZWRpYXRlLm5ldyhAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kpCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhd
CisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAgaWYgbmFt
ZXMuc2l6ZSA+IDEKKyAgICAgICAgU3RydWN0T2Zmc2V0LmZvckZpZWxkKGNvZGVPcmlnaW4sIG5h
bWVzWzAuLi0yXS5qb2luKCc6OicpLCBuYW1lc1stMV0pCisgICAgICBlbHNlCisgICAgICAgIFZh
cmlhYmxlLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXNbMF0pCisgICAgICBlbmQKKyAgICBlbHNp
ZiBpc1JlZ2lzdGVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHBhcnNlVmFyaWFibGUKKyAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICJzaXplb2YiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIGNvZGVP
cmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBTaXplb2YuZm9yTmFtZShjb2Rl
T3JpZ2luLCBuYW1lcy5qb2luKCc6OicpKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAg
ICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uTXVsCisgICAgc2tpcE5ld0xp
bmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgd2hpbGUgQHRva2Vuc1tA
aWR4XSA9PSAiKiIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICByZXN1bHQgPSBNdWxJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAx
XS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbkF0b20pCisgICAgICBlbHNlCisg
ICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAor
ICBkZWYgY291bGRCZUV4cHJlc3Npb24KKyAgICBAdG9rZW5zW0BpZHhdID09ICItIiBvciBAdG9r
ZW5zW0BpZHhdID09ICJzaXplb2YiIG9yIGlzSW50ZWdlcihAdG9rZW5zW0BpZHhdKSBvciBpc1Zh
cmlhYmxlKEB0b2tlbnNbQGlkeF0pIG9yIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgIGVuZAorICAK
KyAgZGVmIHBhcnNlRXhwcmVzc2lvbgorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0gcGFy
c2VFeHByZXNzaW9uTXVsCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKyIgb3IgQHRva2Vu
c1tAaWR4XSA9PSAiLSIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIisiCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICByZXN1bHQgPSBBZGRJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHgg
LSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkKKyAgICAgIGVsc2lm
IEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQg
PSBTdWJJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQs
IHBhcnNlRXhwcmVzc2lvbk11bCkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVu
ZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZU9wZXJhbmQoY29t
bWVudCkKKyAgICBpZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgICAgZXhwciA9IHBhcnNlRXhwcmVz
c2lvbgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgICAgcGFyc2VBZGRyZXNz
KGV4cHIpCisgICAgICBlbHNlCisgICAgICAgIGV4cHIKKyAgICAgIGVuZAorICAgIGVsc2lmIEB0
b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICBwYXJzZUFkZHJlc3MoSW1tZWRpYXRlLm5ldyhAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4sIDApKQorICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4
XQorICAgICAgcmVzdWx0ID0gTGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbiwgTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlk
eF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNM
b2NhbExhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IExvY2FsTGFiZWxSZWZlcmVu
Y2UubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgTG9jYWxMYWJlbC5mb3JOYW1lKEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQorICAgICAgQGlkeCAr
PSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yKGNvbW1lbnQpCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICBza2lwTmV3
TGluZQorICAgIGNvbnN1bWUoL1xBXChcWi8pCisgICAgdmFyaWFibGVzID0gW10KKyAgICBsb29w
IHsKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmllcihA
dG9rZW5zW0BpZHhdKQorICAgICAgICB2YXJpYWJsZXMgPDwgVmFyaWFibGUuZm9yTmFtZShAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
KSIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBicmVhaworICAgICAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisg
ICAgICAgICAgcGFyc2VFcnJvcgorICAgICAgICBlbmQKKyAgICAgIGVsc2UKKyAgICAgICAgcGFy
c2VFcnJvcgorICAgICAgZW5kCisgICAgfQorICAgIHZhcmlhYmxlcworICBlbmQKKyAgCisgIGRl
ZiBwYXJzZVNlcXVlbmNlKGZpbmFsLCBjb21tZW50KQorICAgIGZpcnN0Q29kZU9yaWdpbiA9IEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIGxpc3QgPSBbXQorICAgIGxvb3AgeworICAgICAg
aWYgKEBpZHggPT0gQHRva2Vucy5sZW5ndGggYW5kIG5vdCBmaW5hbCkgb3IgKGZpbmFsIGFuZCBA
dG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgQHRva2Vu
c1tAaWR4XSA9PSAiXG4iCisgICAgICAgICMgaWdub3JlCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiY29uc3QiCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICBwYXJzZUVycm9yIHVubGVzcyBpc1ZhcmlhYmxlIEB0b2tlbnNbQGlkeF0KKyAgICAgICAg
dmFyaWFibGUgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRv
a2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9y
IHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI9IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
dmFsdWUgPSBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBjb25zdCAje3ZhcmlhYmxlLm5h
bWV9IikKKyAgICAgICAgbGlzdCA8PCBDb25zdERlY2wubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZXJy
b3IiCisgICAgICAgIGxpc3QgPDwgRXJyb3IubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbikK
KyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJpZiIKKyAg
ICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVk
aWNhdGUKKyAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICBza2lw
TmV3TGluZQorICAgICAgICBpZlRoZW5FbHNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwg
cHJlZGljYXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3
aGlsZSBpbnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAgIGxpc3Qg
PDwgaWZUaGVuRWxzZQorICAgICAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJlbHNpZiIKKyAg
ICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAg
QGlkeCArPSAxCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBwcmVkaWNhdGUgPSBw
YXJzZVByZWRpY2F0ZQorICAgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAg
ICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIGVsc2VDYXNlID0gSWZUaGVuRWxzZS5uZXco
Y29kZU9yaWdpbiwgcHJlZGljYXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVs
c2lmKSlcWi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikpCisg
ICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IGVsc2VDYXNlCisgICAgICAgICAgaWZUaGVu
RWxzZSA9IGVsc2VDYXNlCisgICAgICAgIGVuZAorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICJlbHNlIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGlmVGhlbkVsc2UuZWxzZUNh
c2UgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBlbHNlIGNhc2Ug
Zm9yIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpCisgICAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJl
bmQiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgQHRva2Vu
c1tAaWR4XSA9PSAibWFjcm8iCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAg
IHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICBu
YW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZh
cmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVu
Y2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIG1hY3JvICN7bmFtZX0iKQorICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgbGlzdCA8PCBNYWNyby5uZXcoY29kZU9yaWdpbiwgbmFtZSwgdmFy
aWFibGVzLCBib2R5KQorICAgICAgZWxzaWYgaXNJbnN0cnVjdGlvbiBAdG9rZW5zW0BpZHhdCisg
ICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFt
ZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBpZiAo
bm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5z
W0BpZHhdID1+IGZpbmFsKQorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLCBh
bmQgaXQncyB0aGUgbGFzdCBvbmUuCisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
Y29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24u
CisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10p
CisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICAjIEl0J3MgZGVm
aW5pdGVseSBhbiBpbnN0cnVjdGlvbiwgYW5kIGl0IGhhcyBhdCBsZWFzdCBvbmUgb3BlcmFuZC4K
KyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9IGZhbHNl
CisgICAgICAgICAgbG9vcCB7CisgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQo
IndoaWxlIGluc2lkZSBvZiBpbnN0cnVjdGlvbiAje25hbWV9IikKKyAgICAgICAgICAgIGlmIChu
b3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNb
QGlkeF0gPX4gZmluYWwpCisgICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rp
b24gYW5kIG9mIHRoZSBzZXF1ZW5jZS4KKyAgICAgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9IHRy
dWUKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0g
PT0gIiwiCisgICAgICAgICAgICAgICMgSGFzIGFub3RoZXIgb3BlcmFuZC4KKyAgICAgICAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAg
ICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbi4KKyAgICAgICAgICAgICAg
QGlkeCArPSAxCisgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIGEgY29tbWEsIG5ld2xpbmUsIG9yICN7ZmluYWx9
IGFmdGVyICN7b3BlcmFuZHMubGFzdC5kdW1wfSIpCisgICAgICAgICAgICBlbmQKKyAgICAgICAg
ICB9CisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwg
b3BlcmFuZHMpCisgICAgICAgICAgaWYgZW5kT2ZTZXF1ZW5jZQorICAgICAgICAgICAgYnJlYWsK
KyAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRv
a2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
CisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgICAgICAjIE1hY3JvIGludm9j
YXRpb24uCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgb3BlcmFuZHMgPSBbXQorICAg
ICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAg
ICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvb3Agewor
ICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhd
ID09ICJtYWNybyIKKyAgICAgICAgICAgICAgICAjIEl0J3MgYSBtYWNybyBsYW1iZGEhCisgICAg
ICAgICAgICAgICAgY29kZU9yaWdpbklubmVyID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisg
ICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgdmFyaWFibGVzID0gcGFy
c2VNYWNyb1ZhcmlhYmxlcworICAgICAgICAgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9c
QWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBhbm9ueW1vdXMgbWFjcm8gcGFzc2VkIGFzIGFyZ3Vt
ZW50IHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAg
ICAgIG9wZXJhbmRzIDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luSW5uZXIsIG5pbCwgdmFyaWFibGVz
LCBib2R5KQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwg
cGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gY2FsbCB0byAje25hbWV9IikKKyAg
ICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAi
LCIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHBhcnNlRXJyb3IgIlVuZXhwZWN0ZWQgI3tAdG9rZW5zW0BpZHhdLnN0cmluZy5p
bnNwZWN0fSB3aGlsZSBwYXJzaW5nIGludm9jYXRpb24gb2YgbWFjcm8gI3tuYW1lfSIKKyAgICAg
ICAgICAgICAgZW5kCisgICAgICAgICAgICB9CisgICAgICAgICAgZW5kCisgICAgICAgICAgbGlz
dCA8PCBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAgICBl
bHNlCisgICAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0ZWQgXCIoXCIgYWZ0ZXIgI3tuYW1lfSIK
KyAgICAgICAgZW5kCisgICAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0gb3IgaXNMb2Nh
bExhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAg
QGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIjoi
CisgICAgICAgICMgSXQncyBhIGxhYmVsLgorICAgICAgICBpZiBpc0xhYmVsIG5hbWUKKyAgICAg
ICAgICBsaXN0IDw8IExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZWxz
ZQorICAgICAgICAgIGxpc3QgPDwgTG9jYWxMYWJlbC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgICAgIGVuZAorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2UKKyAgICAgICAgcGFy
c2VFcnJvciAiRXhwZWN0aW5nIHRlcm1pbmFsICN7ZmluYWx9ICN7Y29tbWVudH0iCisgICAgICBl
bmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGZpcnN0Q29kZU9yaWdpbiwgbGlzdCkKKyAgZW5k
CitlbmQKKworZGVmIHBhcnNlKHRva2VucykKKyAgcGFyc2VyID0gUGFyc2VyLm5ldyh0b2tlbnMp
CisgIHBhcnNlci5wYXJzZVNlcXVlbmNlKG5pbCwgIiIpCitlbmQKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1OSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworR1BSUyA9CisgIFsKKyAgICJ0MCIsCisgICAidDEiLAorICAgInQyIiwKKyAgICJ0MyIsCisg
ICAidDQiLAorICAgImNmciIsCisgICAiYTAiLAorICAgImExIiwKKyAgICJyMCIsCisgICAicjEi
LAorICAgInNwIgorICBdCisKK0ZQUlMgPQorICBbCisgICAiZnQwIiwKKyAgICJmdDEiLAorICAg
ImZ0MiIsCisgICAiZnQzIiwKKyAgICJmdDQiLAorICAgImZ0NSIsCisgICAiZmEwIiwKKyAgICJm
YTEiLAorICAgImZhMiIsCisgICAiZmEzIiwKKyAgICJmciIKKyAgXQorCitSRUdJU1RFUlMgPSBH
UFJTICsgRlBSUworCitHUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEdQUlMuam9p
bignKXwoJykgKyAnKSlcXFonKQorRlBSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBG
UFJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKKworUkVHSVNURVJfUEFUVEVSTiA9IFJlZ2V4cC5u
ZXcoJ1xcQSgoJyArIFJFR0lTVEVSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIwNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJwYXJzZXIi
CityZXF1aXJlICJ0cmFuc2Zvcm0iCisKKyMKKyMgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25z
KGFzdCkgLT4gc2V0dGluZ3NDb21iaWF0aW9ucworIworIyBDb21wdXRlcyBhbiBhcnJheSBvZiBz
ZXR0aW5ncyBtYXBzLCB3aGVyZSBhIHNldHRpbmdzIG1hcCBjb25zdGl0dXRlcworIyBhIGNvbmZp
Z3VyYXRpb24gZm9yIHRoZSBhc3NlbWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIG1hcAor
IyBjb250YWlucyBrZXkgdmFsdWUgcGFpcnMgd2hlcmUga2V5cyBhcmUgc2V0dGluZ3MgbmFtZXMg
KHN0cmluZ3MpIGFuZAorIyB0aGUgdmFsdWVzIGFyZSBib29sZWFucyAodHJ1ZSBmb3IgZW5hYmxl
ZCwgZmFsc2UgZm9yIGRpc2FibGVkKS4KKyMKKworZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0
aW9ucyhhc3QpCisgIHNldHRpbmdzQ29tYmluYXRpb25zID0gW10KKyAgCisgIGRlZiBzZXR0aW5n
c0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG1hcFNvRmFyLCByZW1haW5pbmcpCisg
ICAgaWYgcmVtYWluaW5nLmVtcHR5PworICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFw
U29GYXIKKyAgICAgIHJldHVybgorICAgIGVuZAorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFy
LmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gdHJ1ZQorICAgIHNldHRpbmdzQ29tYmlu
YXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICAg
IAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0g
ZmFsc2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01h
cCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0
dGluZ3NDb21iaW5hdGlvbnMsIHt9LCAoYXN0LmZpbHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7
fHZ8IHYubmFtZX0gKyBbIlg4NiIsICJBUk12NyJdKS51bmlxKQorICAKKyAgc2V0dGluZ3NDb21i
aW5hdGlvbnMKK2VuZAorCisjCisjIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkg
eworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8IC4uLiB9
CisjCisjIERldGVybWluZXMgaWYgdGhlIHNldHRpbmdzIGNvbWJpbmF0aW9uIGlzIHZhbGlkLCBh
bmQgaWYgc28sIGNhbGxzCisjIHRoZSBibG9jayB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgbmVl
ZCB0byBnZW5lcmF0ZSBjb2RlLgorIworCitkZWYgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5n
cywgYXN0KQorICAjIENoZWNrIHdoaWNoIGFyY2hpdGVjdHVyZXMgdGhpcyBjb21iaW5hdG9yIGNs
YWltcyB0byBzdXBwb3J0LgorICBudW1DbGFpbWVkQmFja2VuZHMgPSAwCisgIHNlbGVjdGVkQmFj
a2VuZCA9IG5pbAorICBCQUNLRU5EUy5lYWNoIHsKKyAgICB8IGJhY2tlbmQgfAorICAgIGlzU3Vw
cG9ydGVkID0gY29uY3JldGVTZXR0aW5nc1tiYWNrZW5kXQorICAgIHJhaXNlIHVubGVzcyBpc1N1
cHBvcnRlZCAhPSBuaWwKKyAgICBudW1DbGFpbWVkQmFja2VuZHMgKz0gaWYgaXNTdXBwb3J0ZWQg
dGhlbiAxIGVsc2UgMCBlbmQKKyAgICBpZiBpc1N1cHBvcnRlZAorICAgICAgc2VsZWN0ZWRCYWNr
ZW5kID0gYmFja2VuZAorICAgIGVuZAorICB9CisgIAorICByZXR1cm4gaWYgbnVtQ2xhaW1lZEJh
Y2tlbmRzID4gMQorICAKKyAgIyBSZXNvbHZlIHRoZSBBU1QgZG93biB0byBhIGxvdy1sZXZlbCBm
b3JtIChubyBtYWNyb3Mgb3IgY29uZGl0aW9uYWxzKS4KKyAgbG93TGV2ZWxBU1QgPSBhc3QucmVz
b2x2ZVNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICB5aWVsZCBjb25jcmV0ZVNldHRp
bmdzLCBsb3dMZXZlbEFTVCwgc2VsZWN0ZWRCYWNrZW5kCitlbmQKKworIworIyBmb3JFYWNoVmFs
aWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBh
c3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0KKyMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21i
aW5hdGlvbihhc3QsIHNldHRpbmdzQ29tYmluYXRpb25zKSB7CisjICAgICB8IGNvbmNyZXRlU2V0
dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBFeGVjdXRlcyB0aGUgZ2l2
ZW4gYmxvY2sgZm9yIGVhY2ggdmFsaWQgc2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlCisjIHNl
dHRpbmdzIG1hcC4gVGhlIGFzdCBwYXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQKKyMg
KGFzdC5yZXNvbHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4KKyMKKyMgVGhlIGZpcnN0IGZvcm0g
d2lsbCBjYWxsIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIGZvciB5b3UuCisjCisK
K2RlZiBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgKm9wdGlvbmFsU2V0dGlu
Z3NDb21iaW5hdGlvbnMpCisgIHJhaXNlIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMu
c2l6ZSA+IDEKKyAgCisgIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuZW1wdHk/Cisg
ICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0
KQorICBlbHNlCisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBvcHRpb25hbFNldHRpbmdzQ29t
YmlhdGlvbnNbMF0KKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucy5lYWNoX3dpdGhf
aW5kZXggeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgaW5kZXggfAorICAgIGZvclNldHRpbmdz
KGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgeworICAgICAgfCBjb25jcmV0ZVNldHRpbmdzXywgbG93
TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2
ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgfQorICB9CitlbmQKKworIworIyBjcHBTZXR0aW5n
c1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyMKKyMgUmV0dXJucyB0aGUgQysrIGNvZGUgdXNlZCB0
byB0ZXN0IGlmIHdlIGFyZSBpbiBhIGNvbmZpZ3VyYXRpb24gdGhhdAorIyBjb3JyZXNwb25kcyB0
byB0aGUgZ2l2ZW4gY29uY3JldGUgc2V0dGluZ3MuCisjCisKK2RlZiBjcHBTZXR0aW5nc1Rlc3Qo
Y29uY3JldGVTZXR0aW5ncykKKyAgIiNpZiAiICsgY29uY3JldGVTZXR0aW5ncy50b19hLmNvbGxl
Y3R7CisgICAgfCBwYWlyIHwKKyAgICAoaWYgcGFpclsxXQorICAgICAgICIiCisgICAgIGVsc2UK
KyAgICAgICAiISIKKyAgICAgZW5kKSArICJPRkZMSU5FX0FTTV8iICsgcGFpclswXQorICB9Lmpv
aW4oIiAmJiAiKQorZW5kCisKKyMKKyMgaXNBU1RFcnJvbmVvdXMoYXN0KQorIworIyBUZXN0cyB0
byBzZWUgaWYgdGhlIEFTVCBjbGFpbXMgdGhhdCB0aGVyZSBpcyBhbiBlcnJvciAtIGkuZS4gaWYg
dGhlCisjIHVzZXIncyBjb2RlLCBhZnRlciBzZXR0aW5ncyByZXNvbHV0aW9uLCBoYXMgRXJyb3Ig
bm9kZXMuCisjCisKK2RlZiBpc0FTVEVycm9uZW91cyhhc3QpCisgIG5vdCBhc3QuZmlsdGVyKEVy
cm9yKS5lbXB0eT8KK2VuZAorCisjCisjIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0
aW5ncykKKyMKKyMgRW1pdHMgYSBjaGVjayB0aGF0IGFzc2VydHMgdGhhdCB3ZSdyZSB1c2luZyB0
aGUgZ2l2ZW4gY29uZmlndXJhdGlvbi4KKyMKKworZGVmIGFzc2VydENvbmZpZ3VyYXRpb24oY29u
Y3JldGVTZXR0aW5ncykKKyAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNl
dHRpbmdzKQorICAkb3V0cHV0LnB1dHMgIiNlbHNlIgorICAkb3V0cHV0LnB1dHMgIiNlcnJvciBc
IkNvbmZpZ3VyYXRpb24gbWlzbWF0Y2guXCIiCisgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5k
CisKKyMKKyMgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBi
YWNrZW5kKSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCB8IC4uLiB9
CisjCisjIEVtaXRzIGFsbCByZWxldmFudCBndWFyZHMgdG8gc2VlIGlmIHRoZSBjb25maWd1cmF0
aW9uIGhvbGRzIGFuZAorIyBjYWxscyB0aGUgYmxvY2sgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMg
bm90IGVycm9uZW91cy4KKyMKKworZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRl
U2V0dGluZ3MsIGFzdCwgYmFja2VuZCkKKyAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChj
b25jcmV0ZVNldHRpbmdzKQorICAKKyAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAgICRvdXRw
dXQucHV0cyAiI2Vycm9yIFwiSW52YWxpZCBjb25maWd1cmF0aW9uLlwiIgorICBlbHNpZiBub3Qg
V09SS0lOR19CQUNLRU5EUy5pbmNsdWRlPyBiYWNrZW5kCisgICAgJG91dHB1dC5wdXRzICIjZXJy
b3IgXCJUaGlzIGJhY2tlbmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UKKyAgICB5
aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICAkb3V0cHV0
LnB1dHMgIiNlbmRpZiIKK2VuZAorCisjCisjIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhh
c3QpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4u
LiB9CisjCisjIEVtaXRzIGd1YXJkIGNvZGVzIGZvciBhbGwgdmFsaWQgY29uZmlndXJhdGlvbnMs
IGFuZCBjYWxscyB0aGUgYmxvY2sKKyMgZm9yIHRob3NlIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJl
IHZhbGlkIGFuZCBub3QgZXJyb25lb3VzLgorIworCitkZWYgZW1pdENvZGVJbkFsbENvbmZpZ3Vy
YXRpb25zKGFzdCkKKyAgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsKKyAg
ICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleCB8CisgICAg
JG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAgIHlpZWxk
IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgICRvdXRw
dXQucHV0cyAiI2VuZGlmIgorICB9CitlbmQKKworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzQyIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1
aXJlICJhc3QiCisKKyMKKyMgbm9kZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisjCisjIENv
bnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBJZlRoZW5FbHNlIG5vZGVz
IGJ5CisjIHN1YnN0aXR1dGluZyBjb25jcmV0ZSBib29sZWFuIHZhbHVlcyBmb3IgZWFjaCBTZXR0
aW5nLgorIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisg
ICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlCisgIGRlZiBy
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBG
YWxzZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitl
bmQKKworY2xhc3MgU2V0dGluZworICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAg
IHNldHRpbmdzW0BuYW1lXS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kCisgIGRlZiBy
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykudmFsdWUgYW5kIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5h
c05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgT3IKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykKKyAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBvciBAcmln
aHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisK
K2NsYXNzIE5vdAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChub3QgQGNo
aWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAor
CitjbGFzcyBJZlRoZW5FbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAg
aWYgQHByZWRpY2F0ZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlCisgICAgICBAdGhl
bkNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVsc2UKKyAgICAgIEBlbHNlQ2Fz
ZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNz
IFNlcXVlbmNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgbmV3TGlzdCA9
IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaXRlbSA9IGl0ZW0u
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgaWYgaXRlbS5pc19hPyBTZXF1ZW5jZQor
ICAgICAgICBuZXdMaXN0ICs9IGl0ZW0ubGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0
IDw8IGl0ZW0KKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwg
bmV3TGlzdCkKKyAgZW5kCitlbmQKKworIworIyBub2RlLmRlbWFjcm9pZnkobWFjcm9zKQorIyBu
b2RlLnN1YnN0aXR1dGUobWFwcGluZykKKyMKKyMgZGVtYWNyb2lmeSgpIGNvbnN0cnVjdHMgYSBu
ZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgTWFjcm8KKyMgbm9kZXMsIHdoaWxlIHN1YnN0
aXR1dGUoKSByZXBsYWNlcyBWYXJpYWJsZSBub2RlcyB3aXRoIHRoZSBnaXZlbgorIyBub2RlcyBp
biB0aGUgbWFwcGluZy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgZGVtYWNyb2lmeShtYWNyb3Mp
CisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5kZW1hY3Jv
aWZ5KG1hY3JvcykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykK
KyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1
dGUobWFwcGluZykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFw
cGluZykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1
YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3Jv
CisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbXlNYXBwaW5nID0ge30KKyAgICBtYXBw
aW5nLmVhY2hfcGFpciB7CisgICAgICB8IGtleSwgdmFsdWUgfAorICAgICAgdW5sZXNzIEB2YXJp
YWJsZXMuaW5jbHVkZT8ga2V5CisgICAgICAgIG15TWFwcGluZ1trZXldID0gdmFsdWUKKyAgICAg
IGVuZAorICAgIH0KKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNo
aWxkLnN1YnN0aXR1dGUobXlNYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVmFy
aWFibGUKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisg
ICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQK
K2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcp
CisgICAgaWYgbWFwcGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAg
ICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHN1
YnN0aXR1dGUoY29uc3RhbnRzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIG15Q29uc3RhbnRzID0g
Y29uc3RhbnRzLmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlm
IGl0ZW0uaXNfYT8gQ29uc3REZWNsCisgICAgICAgIG15Q29uc3RhbnRzW2l0ZW0udmFyaWFibGVd
ID0gaXRlbS52YWx1ZS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZWxzZQorICAgICAg
ICBuZXdMaXN0IDw8IGl0ZW0uc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgIGVuZAorICAg
IH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5kCisgIAorICBk
ZWYgcmVuYW1lTGFiZWxzKGNvbW1lbnQpCisgICAgbWFwcGluZyA9IHt9CisgICAgCisgICAgQGxp
c3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBMb2NhbExhYmVs
CisgICAgICAgIG1hcHBpbmdbaXRlbV0gPSBMb2NhbExhYmVsLnVuaXF1ZShpZiBjb21tZW50IHRo
ZW4gY29tbWVudCArICJfIiBlbHNlICIiIGVuZCArIGl0ZW0uY2xlYW5OYW1lKQorICAgICAgZW5k
CisgICAgfQorICAgIAorICAgIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgZW5kCisgIAor
ICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbXlNYWNyb3MgPSBtYWNyb3MuZHVwCisgICAg
QGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybwor
ICAgICAgICBteU1hY3Jvc1tpdGVtLm5hbWVdID0gaXRlbQorICAgICAgZW5kCisgICAgfQorICAg
IG5ld0xpc3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlm
IGl0ZW0uaXNfYT8gTWFjcm8KKyAgICAgICAgIyBJZ25vcmUuCisgICAgICBlbHNpZiBpdGVtLmlz
X2E/IE1hY3JvQ2FsbAorICAgICAgICBtYXBwaW5nID0ge30KKyAgICAgICAgbXlNeU1hY3JvcyA9
IG15TWFjcm9zLmR1cAorICAgICAgICByYWlzZSAiQ291bGQgbm90IGZpbmQgbWFjcm8gI3tpdGVt
Lm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG15TWFjcm9zW2l0ZW0u
bmFtZV0KKyAgICAgICAgcmFpc2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxsIHRv
ICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVtLm9w
ZXJhbmRzLnNpemUgPT0gbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQorICAgICAg
ICBpdGVtLm9wZXJhbmRzLnNpemUudGltZXMgeworICAgICAgICAgIHwgaWR4IHwKKyAgICAgICAg
ICBpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gVmFyaWFibGUgYW5kIG15TWFjcm9zW2l0ZW0u
b3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVt
Lm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhd
Lm5hbWVdCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVz
W2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNf
YT8gTWFjcm8KKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJp
YWJsZXNbaWR4XS5uYW1lXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgbWFwcGlu
Z1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlh
Ymxlc1tpZHhdXSA9IG5pbAorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVd
LnZhcmlhYmxlc1tpZHhdXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgIGVuZAorICAg
ICAgICB9CisgICAgICAgIG5ld0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5LnN1YnN0
aXR1dGUobWFwcGluZykuZGVtYWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMoaXRlbS5u
YW1lKS5saXN0CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5kZW1hY3JvaWZ5
KG15TWFjcm9zKQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2lu
LCBuZXdMaXN0KS5zdWJzdGl0dXRlKHt9KQorICBlbmQKK2VuZAorCisjCisjIG5vZGUucmVzb2x2
ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBo
YXMgb2Zmc2V0IHZhbHVlcyBpbnN0ZWFkIG9mIHN5bWJvbGljCisjIG9mZnNldHMuCisjCisKK2Ns
YXNzIE5vZGUKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIG1hcENo
aWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZU9mZnNldHMob2Zm
c2V0cywgc2l6ZXMpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXQKKyAg
ZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlmIG9mZnNldHNbc2VsZl0K
KyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0c1tzZWxmXSkKKyAgICBlbHNl
CisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZgorICBkZWYg
cmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgc2l6ZXNbc2VsZl0KKyAgICAg
IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgc2l6ZXNbc2VsZl0pCisgICAgZWxzZQorICAgICAg
cHV0cyAiQ291bGQgbm90IGZpbmQgI3tzZWxmLmluc3BlY3R9IGluICN7c2l6ZXMua2V5cy5pbnNw
ZWN0fSIKKyAgICAgIHB1dHMgInNpemVzID0gI3tzaXplcy5pbnNwZWN0fSIKKyAgICAgIHNlbGYK
KyAgICBlbmQKKyAgZW5kCitlbmQKKworIworIyBub2RlLmZvbGQKKyMKKyMgUmVzb2x2ZSBjb25z
dGFudCByZWZlcmVuY2VzIGFuZCBjb21wdXRlIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMuCisjCisK
K2NsYXNzIE5vZGUKKyAgZGVmIGZvbGQKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxk
IHwKKyAgICAgIGNoaWxkLmZvbGQKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVk
aWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBA
cmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUK
KyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVk
aWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgKyBAcmlnaHQudmFsdWUpCisgIGVuZAor
ZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0
LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBA
bGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/
IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgLSBA
cmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMKKyAgZGVmIGZv
bGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAg
IHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2Vs
ZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9y
aWdpbiwgQGxlZnQudmFsdWUgKiBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE5l
Z0ltbWVkaWF0ZQorICBkZWYgZm9sZAorICAgIEBjaGlsZCA9IEBjaGlsZC5mb2xkCisgICAgcmV0
dXJuIHNlbGYgdW5sZXNzIEBjaGlsZC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3
KGNvZGVPcmlnaW4sIC1AY2hpbGQudmFsdWUpCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5yZXNv
bHZlQWZ0ZXJTZXR0aW5ncyhvZmZzZXRzLCBzaXplcykKKyMKKyMgQ29tcGlsZSBhc3NlbWJseSBh
Z2FpbnN0IGEgc2V0IG9mIG9mZnNldHMuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmUo
b2Zmc2V0cywgc2l6ZXMpCisgICAgZGVtYWNyb2lmeSh7fSkucmVzb2x2ZU9mZnNldHMob2Zmc2V0
cywgc2l6ZXMpLmZvbGQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NzMgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIHN1
cHBvcnRzOEJpdE9uWDg2CisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAi
LCAidDEiLCAiYTEiLCAicjEiLCAidDIiLCAidDMiCisgICAgICB0cnVlCisgICAgd2hlbiAidDQi
LCAiY2ZyIgorICAgICAgZmFsc2UKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAi
dDAiLCAiYTAiLCAicjAiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAg
ICAgIiVhbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVheCIKKyAgICAgIHdoZW4gOmlu
dAorICAgICAgICAiJWVheCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAor
ICAgIHdoZW4gInQxIiwgImExIiwgInIxIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpi
eXRlCisgICAgICAgICIlZGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZHgiCisgICAg
ICB3aGVuIDppbnQKKyAgICAgICAgIiVlZHgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisg
ICAgICBlbmQKKyAgICB3aGVuICJ0MiIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0
ZQorICAgICAgICAiJWNsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWN4IgorICAgICAg
d2hlbiA6aW50CisgICAgICAgICIlZWN4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAg
ICAgZW5kCisgICAgd2hlbiAidDMiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUK
KyAgICAgICAgIiVibCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVieCIKKyAgICAgIHdo
ZW4gOmludAorICAgICAgICAiJWVieCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAg
IGVuZAorICAgIHdoZW4gInQ0IgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisg
ICAgICAgICIlc2lsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNpIgorICAgICAgd2hl
biA6aW50CisgICAgICAgICIlZXNpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAg
ZW5kCisgICAgd2hlbiAiY2ZyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisg
ICAgICAgICIlZGlsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWRpIgorICAgICAgd2hl
biA6aW50CisgICAgICAgICIlZWRpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAg
ZW5kCisgICAgd2hlbiAic3AiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAg
ICAgICAgIiVzcGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc3AiCisgICAgICB3aGVu
IDppbnQKKyAgICAgICAgIiVlc3AiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBl
bmQKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxP
cGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitj
bGFzcyBGUFJlZ2lzdGVySUQKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICByYWlzZSB1bmxl
c3Mga2luZCA9PSA6ZG91YmxlCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZhMCIs
ICJmciIKKyAgICAgICIleG1tMCIKKyAgICB3aGVuICJmdDEiLCAiZmExIgorICAgICAgIiV4bW0x
IgorICAgIHdoZW4gImZ0MiIsICJmYTIiCisgICAgICAiJXhtbTIiCisgICAgd2hlbiAiZnQzIiwg
ImZhMyIKKyAgICAgICIleG1tMyIKKyAgICB3aGVuICJmdDQiCisgICAgICAiJXhtbTQiCisgICAg
d2hlbiAiZnQ1IgorICAgICAgIiV4bW01IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5k
CisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChr
aW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgeDg2T3BlcmFuZChr
aW5kKQorICAgICIkI3t2YWx1ZX0iCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkK
KyAgICAiI3t2YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIHN1cHBv
cnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2lu
ZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSkiCisgIGVu
ZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0i
CisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYK
KyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje29m
ZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9LCAje2luZGV4Lng4Nk9wZXJhbmQo
OmludCl9LCAje3NjYWxlfSkiCisgIGVuZAorCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQor
ICAgICIqI3t4ODZvcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVB
ZGRyZXNzCisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisg
IGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7YWRkcmVzcy52YWx1ZX0iCisgIGVuZAorCisg
IGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5k
CitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAgZGVmIHg4NkxhYmVsCisgICAgc2FuaXRp
emVMYWJlbE5hbWUobmFtZSkKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAg
IHg4NkxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UKKyAgZGVm
IHg4NkxhYmVsCisgICAgIkxfb2ZmbGluZWFzbV8iK25hbWVbMS4uLTFdCisgIGVuZAorICBkZWYg
eDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICB4ODZMYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBJ
bnN0cnVjdGlvbgorICBkZWYgeDg2T3BlcmFuZHMoKmtpbmRzKQorICAgIHJhaXNlIHVubGVzcyBr
aW5kcy5zaXplID09IG9wZXJhbmRzLnNpemUKKyAgICByZXN1bHQgPSBbXQorICAgIGtpbmRzLnNp
emUudGltZXMgeworICAgICAgfCBpZHggfAorICAgICAgcmVzdWx0IDw8IG9wZXJhbmRzW2lkeF0u
eDg2T3BlcmFuZChraW5kc1tpZHhdKQorICAgIH0KKyAgICByZXN1bHQuam9pbigiLCAiKQorICBl
bmQKKworICBkZWYgeDg2U3VmZml4KGtpbmQpCisgICAgY2FzZSBraW5kCisgICAgd2hlbiA6Ynl0
ZQorICAgICAgImIiCisgICAgd2hlbiA6aGFsZgorICAgICAgInciCisgICAgd2hlbiA6aW50Cisg
ICAgICAibCIKKyAgICB3aGVuIDpkb3VibGUKKyAgICAgICJzZCIKKyAgICBlbHNlCisgICAgICBy
YWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5k
cyhvcGNvZGUsIGtpbmQsIG51bU9wZXJhbmRzKQorICAgIGlmIG51bU9wZXJhbmRzID09IDMKKyAg
ICAgIGlmIG9wZXJhbmRzWzBdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiXHQj
e29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54
ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJd
CisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2UKKyAg
ICAgICAgJGFzbS5wdXRzICJcdG1vdiN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAg
ICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0s
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNlCisg
ICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5k
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIGhhbmRsZVg4Nk9wKG9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhOdW1P
cGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUpCisgIGVuZAorICAKKyAgZGVmIGhh
bmRsZVg4NlNoaWZ0KG9wY29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1l
ZGlhdGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0ZXJJRC5mb3JOYW1lKG5pbCwgInQyIikKKyAg
ICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRl
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzZQorICAgICAgJGFz
bS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisg
ICAgICAkYXNtLnB1dHMgIlx0I3tvcGNvZGV9ICVjbCwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KGtpbmQpfSIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmludCl9LCAlZWN4IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZEb3Vi
bGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAgIGNhc2UgbW9kZQorICAgIHdoZW4gOm5v
cm1hbAorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVu
IDpyZXZlcnNlCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAg
IGVsc2UKKyAgICAgIHJhaXNlIG1vZGUuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAi
XHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgIGVuZAorICAKKyAg
ZGVmIGhhbmRsZVg4NkludENvbXBhcmUob3Bjb2RlU3VmZml4LCBraW5kKQorICAgIGlmIG9wZXJh
bmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMF0udmFsdWUgPT0gMCBhbmQgb3Bl
cmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bj
b2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtp
bmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2lmIG9wZXJhbmRz
WzFdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMCBhbmQgb3BlcmFu
ZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2Rl
U3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtpbmQp
fSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRhc20u
cHV0cyAiXHRjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtp
bmQpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisg
IAorICBkZWYgaGFuZGxlWDg2SW50QnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5k
bGVYODZJbnRDb21wYXJlKGJyYW5jaE9wY29kZVsxLi4tMV0sIGtpbmQpCisgICAgJGFzbS5wdXRz
ICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgZW5kCisgIAor
ICBkZWYgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZCkKKyAgICBpZiBvcGVyYW5kLnN1
cHBvcnRzOEJpdE9uWDg2CisgICAgICAkYXNtLnB1dHMgIlx0I3tzZXRPcGNvZGV9ICN7b3BlcmFu
ZC54ODZPcGVyYW5kKDpieXRlKX0iCisgICAgICAkYXNtLnB1dHMgIlx0bW92emJsICN7b3BlcmFu
ZC54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBl
bHNlCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9
LCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJcdCN7c2V0T3Bjb2RlfSAlYWwiCisgICAgICAkYXNt
LnB1dHMgIlx0bW92emJsICVhbCwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29w
ZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVm
IGhhbmRsZVg4NkludENvbXBhcmVTZXQoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nklu
dENvbXBhcmUoc2V0T3Bjb2RlWzMuLi0xXSwga2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0T3Bj
b2RlLCBvcGVyYW5kc1syXSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2VGVzdChraW5kKQor
ICAgIHZhbHVlID0gb3BlcmFuZHNbMF0KKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVu
IDIKKyAgICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAgIHdoZW4g
MworICAgICAgbWFzayA9IG9wZXJhbmRzWzFdCisgICAgZWxzZQorICAgICAgcmFpc2UgIkV4cGVj
dGVkIDIgb3IgMyBvcGVyYW5kcywgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9y
aWdpblN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAgaWYgbWFzay5pc19hPyBJbW1lZGlhdGUg
YW5kIG1hc2sudmFsdWUgPT0gLTEKKyAgICAgIGlmIHZhbHVlLmlzX2E/IFJlZ2lzdGVySUQKKyAg
ICAgICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3t2YWx1ZS54ODZPcGVy
YW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2UKKyAgICAg
ICAgJGFzbS5wdXRzICJcdGNtcCN7eDg2U3VmZml4KGtpbmQpfSAkMCwgI3t2YWx1ZS54ODZPcGVy
YW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR0ZXN0
I3t4ODZTdWZmaXgoa2luZCl9ICN7bWFzay54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2QnJhbmNo
VGVzdChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgICRh
c20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kcy5sYXN0Lng4NkxhYmVsfSIKKyAg
ZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0VGVzdChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFu
ZGxlWDg2VGVzdChraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRzLmxh
c3QpCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wQnJhbmNoKG9wY29kZSwgYnJhbmNoT3Bj
b2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwg
b3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiA0Cisg
ICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1bXBUYXJn
ZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAg
IGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0Lng4Nkxh
YmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9wY29kZSwg
a2luZCkKKyAgICBpZiBvcGVyYW5kcy5zaXplID09IDQgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJh
bmRzWzJdCisgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAg
ICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcygic3ViI3t4ODZTdWZmaXgoa2luZCl9Iiwga2lu
ZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgZW5kCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisg
ICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMKKyAg
ICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYu
aW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiXHQje2JyYW5jaE9wY29kZX0gI3tqdW1w
VGFyZ2V0Lng4NkxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgbG93ZXJYODYKKyAgICAkYXNtLmNv
bW1lbnQgY29kZU9yaWdpblN0cmluZworICAgIGNhc2Ugb3Bjb2RlCisgICAgd2hlbiAiYWRkaSIs
ICJhZGRwIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19h
PyBJbW1lZGlhdGUKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lz
dGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQK
KyAgICAgICAgaWYgb3BlcmFuZHNbMF0udmFsdWUgPT0gMAorICAgICAgICAgIHVubGVzcyBvcGVy
YW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICRhc20ucHV0cyAi
XHRsZWFsICN7b3BlcmFuZHNbMF0udmFsdWV9KCN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50
KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICBlbmQKKyAgICAg
IGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJ
RAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAg
ICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAk
YXNtLnB1dHMgIlx0bGVhbCAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgICBlbHNlCisgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0g
b3BlcmFuZHNbMF0KKyAgICAgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje3g4Nk9wZXJhbmRzKDpp
bnQsIDppbnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbmQKKyAgICB3aGVuICJhbmRpIiwgImFu
ZHAiCisgICAgICBoYW5kbGVYODZPcCgiYW5kbCIsIDppbnQpCisgICAgd2hlbiAibHNoaWZ0aSIK
KyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYWxsIiwgOmludCkKKyAgICB3aGVuICJtdWxpIgorICAg
ICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUK
KyAgICAgICAgJGFzbS5wdXRzICJcdGltdWxsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCwgOmlu
dCl9IgorICAgICAgZWxzZQorICAgICAgICAjIEZJWE1FOiBjb3VsZCBkbyBzb21lIHBlZXBob2xl
IGluIGNhc2UgdGhlIGxlZnQgb3BlcmFuZCBpcyBpbW1lZGlhdGUgYW5kIGl0J3MKKyAgICAgICAg
IyBhIHBvd2VyIG9mIHR3by4KKyAgICAgICAgaGFuZGxlWDg2T3AoImltdWxsIiwgOmludCkKKyAg
ICAgIGVuZAorICAgIHdoZW4gIm5lZ2kiCisgICAgICAkYXNtLnB1dHMgIlx0bmVnbCAje3g4Nk9w
ZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJub3RpIgorICAgICAgJGFzbS5wdXRzICJcdG5vdGwg
I3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAib3JpIiwgIm9ycCIKKyAgICAgIGhhbmRs
ZVg4Nk9wKCJvcmwiLCA6aW50KQorICAgIHdoZW4gInJzaGlmdGkiCisgICAgICBoYW5kbGVYODZT
aGlmdCgic2FybCIsIDppbnQpCisgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICBoYW5kbGVYODZT
aGlmdCgic2hybCIsIDppbnQpCisgICAgd2hlbiAic3ViaSIsICJzdWJwIgorICAgICAgaWYgb3Bl
cmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAk
YXNtLnB1dHMgIlx0bmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
ICAkYXNtLnB1dHMgIlx0YWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29w
ZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICBoYW5kbGVY
ODZPcCgic3VibCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJ4b3JpIiwgInhvcnAiCisg
ICAgICBoYW5kbGVYODZPcCgieG9ybCIsIDppbnQpCisgICAgd2hlbiAibG9hZGkiLCAic3RvcmVp
IiwgImxvYWRwIiwgInN0b3JlcCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7eDg2T3BlcmFu
ZHMoOmludCwgOmludCl9IgorICAgIHdoZW4gImxvYWRiIgorICAgICAgJGFzbS5wdXRzICJcdG1v
dnpibCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJsb2FkaCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6
d2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpoYWxmKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgd2hlbiAic3RvcmViIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmIg
I3t4ODZPcGVyYW5kcyg6Ynl0ZSwgOmJ5dGUpfSIKKyAgICB3aGVuICJsb2FkZCIsICJtb3ZlZCIs
ICJzdG9yZWQiCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91Ymxl
LCA6ZG91YmxlKX0iCisgICAgd2hlbiAiYWRkZCIKKyAgICAgICRhc20ucHV0cyAiXHRhZGRzZCAj
e3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJkaXZkIgorICAgICAg
JGFzbS5wdXRzICJcdGRpdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAg
IHdoZW4gInN1YmQiCisgICAgICAkYXNtLnB1dHMgIlx0c3Vic2QgI3t4ODZPcGVyYW5kcyg6ZG91
YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAibXVsZCIKKyAgICAgICRhc20ucHV0cyAiXHRtdWxz
ZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJzcXJ0ZCIKKyAg
ICAgICRhc20ucHV0cyAiXHRzcXJ0c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUp
fSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJjaTJkIgor
ICAgICAgJGFzbS5wdXRzICJcdGN2dHNpMnNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiYmRlcSIK
KyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUoImJkZXEiKQorICAgICAgJGFz
bS5wdXRzICJcdHVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAj
e0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkueDg2TGFiZWx9Igor
ICAgICAgJGFzbS5wdXRzICJcdGplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIG9w
ZXJhbmRzWzJdKS54ODZMYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAg
ICB3aGVuICJiZG5lcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiam5lIiwgOm5vcm1h
bCkKKyAgICB3aGVuICJiZGd0IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpu
b3JtYWwpCisgICAgd2hlbiAiYmRndGVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJq
YWUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHQiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFu
Y2goImphIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdGVxIgorICAgICAgaGFuZGxlWDg2RG91
YmxlQnJhbmNoKCJqYWUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGVxdW4iCisgICAgICBoYW5k
bGVYODZEb3VibGVCcmFuY2goImplIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZG5lcXVuIgorICAg
ICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICBpc0Vx
dWFsID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4iKQorICAgICAgJGFzbS5wdXRzICJcdHVj
b21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje0xhYmVsUmVmZXJl
bmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkueDg2TGFiZWx9IgorICAgICAgJGFzbS5w
dXRzICJcdGplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzRXF1YWwpLng4Nkxh
YmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgICAgJGFzbS5wdXRzICJc
dGptcCAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAgIGlzRXF1YWwubG93ZXIoIlg4NiIp
CisgICAgd2hlbiAiYmRndHVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpy
ZXZlcnNlKQorICAgIHdoZW4gImJkZ3RlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNo
KCJqYmUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGx0dW4iCisgICAgICBoYW5kbGVYODZEb3Vi
bGVCcmFuY2goImpiIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0ZXF1biIKKyAgICAgIGhhbmRs
ZVg4NkRvdWJsZUJyYW5jaCgiamJlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJidGQyaSIKKyAgICAg
ICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUp
fSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRj
bXBsICQweDgwMDAwMDAwICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAk
YXNtLnB1dHMgIlx0amUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgd2hlbiAidGQyaSIK
KyAgICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpk
b3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiY2Qy
aSIKKyAgICAgICRhc20ucHV0cyAiXHRjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20u
cHV0cyAiXHR0ZXN0bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdGplICN7b3BlcmFuZHNb
Ml0ueDg2TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJcdGN2dHNpMnNkICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJcdHVjb21pc2QgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMg
Ilx0anAgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0am5lICN7
b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgIHdoZW4gIm1vdmR6IgorICAgICAgJGFzbS5wdXRz
ICJcdHhvcnBkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAicG9wIgorICAgICAgJGFzbS5wdXRz
ICJcdHBvcCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInB1c2gi
CisgICAgICAkYXNtLnB1dHMgIlx0cHVzaCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgIHdoZW4gIm1vdmUiLCAic3hpMnAiLCAienhpMnAiCisgICAgICBpZiBJbW1lZGlhdGUu
bmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0gYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVy
SUQKKyAgICAgICAgJGFzbS5wdXRzICJcdHhvcmwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpp
bnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2lmIG9wZXJh
bmRzWzBdICE9IG9wZXJhbmRzWzFdCisgICAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7eDg2T3Bl
cmFuZHMoOmludCwgOmludCl9IgorICAgICAgZW5kCisgICAgd2hlbiAibm9wIgorICAgICAgJGFz
bS5wdXRzICJcdG5vcCIKKyAgICB3aGVuICJiaWVxIiwgImJwZXEiCisgICAgICBoYW5kbGVYODZJ
bnRCcmFuY2goImplIiwgOmludCkKKyAgICB3aGVuICJiaW5lcSIsICJicG5lcSIKKyAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmludCkKKyAgICB3aGVuICJiaWEiLCAiYnBhIgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDppbnQpCisgICAgd2hlbiAiYmlhZXEiLCAiYnBh
ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphZSIsIDppbnQpCisgICAgd2hlbiAiYmli
IiwgImJwYiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6aW50KQorICAgIHdoZW4g
ImJpYmVxIiwgImJwYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6aW50KQor
ICAgIHdoZW4gImJpZ3QiLCAiYnBndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamciLCA6
aW50KQorICAgIHdoZW4gImJpZ3RlcSIsICJicGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImpnZSIsIDppbnQpCisgICAgd2hlbiAiYmlsdCIsICJicGx0IgorICAgICAgaGFuZGxlWDg2
SW50QnJhbmNoKCJqbCIsIDppbnQpCisgICAgd2hlbiAiYmlsdGVxIiwgImJwbHRlcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamxlIiwgOmludCkKKyAgICB3aGVuICJiYmVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDpieXRlKQorICAgIHdoZW4gImJibmVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmEiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImphIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhZXEiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImphZSIsIDpieXRlKQorICAgIHdoZW4gImJiYiIKKyAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiamIiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmJlcSIKKyAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJndCIKKyAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiamciLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0ZXEiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImpnZSIsIDpieXRlKQorICAgIHdoZW4gImJibHQiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImpsIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdGVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqbHRlcSIsIDpieXRlKQorICAgIHdoZW4gImJ0aW8iLCAiYnRw
byIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmludCkKKyAgICB3aGVuICJidGlz
IiwgImJ0cHMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDppbnQpCisgICAgd2hl
biAiYnRpeiIsICJidHB6IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6aW50KQor
ICAgIHdoZW4gImJ0aW56IiwgImJ0cG56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56
IiwgOmludCkKKyAgICB3aGVuICJidGJvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8i
LCA6Ynl0ZSkKKyAgICB3aGVuICJidGJzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMi
LCA6Ynl0ZSkKKyAgICB3aGVuICJidGJ6IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoi
LCA6Ynl0ZSkKKyAgICB3aGVuICJidGJueiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpu
eiIsIDpieXRlKQorICAgIHdoZW4gImptcCIKKyAgICAgICRhc20ucHV0cyAiXHRqbXAgI3tvcGVy
YW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiYmFkZGlvIiwgImJhZGRw
byIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpvIiwgOmludCkKKyAgICB3aGVu
ICJiYWRkaXMiLCAiYmFkZHBzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianMi
LCA6aW50KQorICAgIHdoZW4gImJhZGRpeiIsICJiYWRkcHoiCisgICAgICBoYW5kbGVYODZPcEJy
YW5jaCgiYWRkbCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlueiIsICJiYWRkcG56Igor
ICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJi
c3ViaW8iCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpvIiwgOmludCkKKyAgICB3aGVuICJi
c3ViaXMiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpzIiwgOmludCkKKyAgICB3aGVuICJi
c3ViaXoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImp6IiwgOmludCkKKyAgICB3aGVuICJi
c3ViaW56IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbnoiLCA6aW50KQorICAgIHdoZW4g
ImJtdWxpbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbyIsIDppbnQpCisg
ICAgd2hlbiAiYm11bGlzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpzIiwg
OmludCkKKyAgICB3aGVuICJibXVsaXoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwi
LCAianoiLCA6aW50KQorICAgIHdoZW4gImJtdWxpbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5j
aCgiaW11bGwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJib3JpbyIKKyAgICAgIGhhbmRsZVg4
Nk9wQnJhbmNoKCJvcmwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJvcmlzIgorICAgICAgaGFu
ZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXoiCisgICAg
ICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJib3Jpbnoi
CisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAi
YnJlYWsiCisgICAgICAkYXNtLnB1dHMgIlx0aW50ICQzIgorICAgIHdoZW4gImNhbGwiCisgICAg
ICAkYXNtLnB1dHMgIlx0Y2FsbCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIK
KyAgICB3aGVuICJyZXQiCisgICAgICAkYXNtLnB1dHMgIlx0cmV0IgorICAgIHdoZW4gImNpZXEi
LCAiY3BlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGUiLCA6aW50KQorICAg
IHdoZW4gImNpbmVxIiwgImNwbmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
bmUiLCA6aW50KQorICAgIHdoZW4gImNpYSIsICJjcGEiCisgICAgICBoYW5kbGVYODZJbnRDb21w
YXJlU2V0KCJzZXRhIiwgOmludCkKKyAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAgICAgIGhh
bmRsZVg4NkludENvbXBhcmVTZXQoInNldGFlIiwgOmludCkKKyAgICB3aGVuICJjaWIiLCAiY3Bi
IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YiIsIDppbnQpCisgICAgd2hlbiAi
Y2liZXEiLCAiY3BiZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiZSIsIDpp
bnQpCisgICAgd2hlbiAiY2lndCIsICJjcGd0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNl
dCgic2V0ZyIsIDppbnQpCisgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIKKyAgICAgIGhhbmRs
ZVg4NkludENvbXBhcmVTZXQoInNldGdlIiwgOmludCkKKyAgICB3aGVuICJjaWx0IiwgImNwbHQi
CisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsIiwgOmludCkKKyAgICB3aGVuICJj
aWx0ZXEiLCAiY3BsdGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bGUiLCA6
aW50KQorICAgIHdoZW4gInRpbyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6aW50
KQorICAgIHdoZW4gInRpcyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6aW50KQor
ICAgIHdoZW4gInRpeiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6aW50KQorICAg
IHdoZW4gInRpbnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDppbnQpCisgICAg
d2hlbiAidGJvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDpieXRlKQorICAgIHdo
ZW4gInRicyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6Ynl0ZSkKKyAgICB3aGVu
ICJ0YnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmJ5dGUpCisgICAgd2hlbiAi
dGJueiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmJ5dGUpCisgICAgd2hlbiAi
cGVlayIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZsICN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fSgl
ZXNwKSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJwb2tlIgor
ICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwg
I3tvcGVyYW5kc1sxXS52YWx1ZSAqIDR9KCVlc3ApIgorICAgIHdoZW4gImNkcWkiCisgICAgICAk
YXNtLnB1dHMgIlx0Y2RxIgorICAgIHdoZW4gImlkaXZpIgorICAgICAgJGFzbS5wdXRzICJcdGlk
aXZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiZmlpMmQiCisg
ICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJcdG1v
dmQgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNtLnB1
dHMgIlx0cHNsbHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwb3IgJXhtbTcsICN7
b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiZmQyaWkiCisgICAg
ICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdG1vdnNk
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFzbS5w
dXRzICJcdHBzcmxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0bW92c2QgJXhtbTcs
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgcmFpc2Ug
IkJhZCBvcGNvZGU6ICN7b3Bjb2RlfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlv
bktpbmQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVTcGVjaWFsaXphdGlvbktpbmQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENvZGVT
cGVjaWFsaXphdGlvbktpbmRfaAorI2RlZmluZSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2VudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7IENvZGVGb3JD
YWxsLCBDb2RlRm9yQ29uc3RydWN0IH07CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAxMDYwODIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBDb21tb25TbG93UGF0aHNfaAogCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgog
I2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAKQEAg
LTQxLDYgKzQyLDM4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgQ29tbW9uU2xvd1Bh
dGhzIHsKIAorQUxXQVlTX0lOTElORSBFeGVjU3RhdGUqIGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXRl
KiBleGVjLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kKQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2Fs
bGVlKCkpOworICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKKyAgICBDb2Rl
QmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRC
eXRlY29kZUZvcihraW5kKTsKKyAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBl
eGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOworCisgICAgLy8gVGhpcyBlbnN1cmVz
IGVub3VnaCBzcGFjZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1bWVu
dHMgcGFzc2VkIGJ5IHRoZSBjYWxsZXIuCisgICAgaWYgKCFyZWdpc3RlckZpbGUtPmdyb3coZXhl
Yy0+cmVnaXN0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVC
bG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFT
U0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1l
dGVycygpKTsKKworICAgIC8vIFRvbyBmZXcgYXJndW1lbnRzIC0tIGNvcHkgY2FsbCBmcmFtZSBh
bmQgYXJndW1lbnRzLCB0aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1bWVudHMgd2l0aCB1bmRlZmlu
ZWQuCisgICAgc2l6ZV90IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKKyAgICBSZWdpc3Rlciogc3JjID0gZXhlYy0+cmVn
aXN0ZXJzKCk7CisgICAgUmVnaXN0ZXIqIGRzdCA9IGV4ZWMtPnJlZ2lzdGVycygpICsgZGVsdGE7
CisKKyAgICBpbnQgaTsKKyAgICBpbnQgZW5kID0gLUV4ZWNTdGF0ZTo6b2Zmc2V0Rm9yKGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKKyAgICBmb3IgKGkgPSAtMTsgaSA+PSBlbmQ7IC0taSkK
KyAgICAgICAgZHN0W2ldID0gc3JjW2ldOworCisgICAgZW5kIC09IGRlbHRhOworICAgIGZvciAo
IDsgaSA+PSBlbmQ7IC0taSkKKyAgICAgICAgZHN0W2ldID0ganNVbmRlZmluZWQoKTsKKworICAg
IEV4ZWNTdGF0ZSogbmV3RXhlYyA9IEV4ZWNTdGF0ZTo6Y3JlYXRlKGRzdCk7CisgICAgQVNTRVJU
KCh2b2lkKiluZXdFeGVjIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOworICAgIHJldHVybiBuZXdF
eGVjOworfQorCiBBTFdBWVNfSU5MSU5FIGJvb2wgb3BJbnN0YW5jZU9mU2xvdyhFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgYmFzZVZhbCwgSlNWYWx1ZSBwcm90bykKIHsK
ICAgICBBU1NFUlQoIXZhbHVlLmlzQ2VsbCgpIHx8ICFiYXNlVmFsLmlzQ2VsbCgpIHx8ICFwcm90
by5pc0NlbGwoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5jcHAJKHJldmlzaW9uIDEwNjA4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5j
bHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNs
dWRlICJERkdEcml2ZXIuaCIKKyNpbmNsdWRlICJFeGVjdXRpb25IYXJuZXNzLmgiCiAjaW5jbHVk
ZSAiSklULmgiCiAjaW5jbHVkZSAiSklURHJpdmVyLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCkBA
IC04NCw3ICs4NSw3IEBAIEludHJpbnNpYyBOYXRpdmVFeGVjdXRhYmxlOjppbnRyaW5zaWMoKSAK
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdGF0aWMgdm9pZCBqZXR0aXNvbkNvZGVCbG9jayhKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxUPiYgY29kZUJsb2NrKQogewotICAgIEFTU0VS
VChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAg
QVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkp
OwogICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwogICAgIE93blB0cjxUPiBj
b2RlQmxvY2tUb0pldHRpc29uID0gY29kZUJsb2NrLnJlbGVhc2UoKTsKICAgICBjb2RlQmxvY2sg
PSBzdGF0aWNfcG9pbnRlcl9jYXN0PFQ+KGNvZGVCbG9ja1RvSmV0dGlzb24tPnJlbGVhc2VBbHRl
cm5hdGl2ZSgpKTsKQEAgLTE2Nyw5ICsxNjgsMzAgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxl
Ojpjb21waWxlT3B0aW1pegogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBFdmFsRXhlY3V0
YWJsZTo6aml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCBy
ZXN1bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxv
Y2ssIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK2lubGluZSBjb25zdCBjaGFyKiBzYW1w
bGluZ0Rlc2NyaXB0aW9uKEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyAgICBzd2l0Y2gg
KGppdFR5cGUpIHsKKyAgICBjYXNlIEpJVENvZGU6OkludGVycHJldGVyVGh1bms6CisgICAgICAg
IHJldHVybiAiSW50ZXJwcmV0ZXIgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRD
b2RlOjpCYXNlbGluZUpJVDoKKyAgICAgICAgcmV0dXJuICJCYXNlbGluZSBDb21waWxhdGlvbiAo
VE9UQUwpIjsKKyAgICBjYXNlIEpJVENvZGU6OkRGR0pJVDoKKyAgICAgICAgcmV0dXJuICJERkcg
Q29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwogSlNPYmplY3QqIEV2YWxF
eGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9k
ZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1w
bGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklU
ID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9U
QUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlw
dGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFN
KGppdFR5cGUpOwpAQCAtMjEwLDcgKzIzMiw3IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6
Y29tcGlsZUludGVybmEKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29t
cGlsZUlmQXBwcm9wcmlhdGUoKmdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2Rl
Rm9yQ2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKCpnbG9iYWxE
YXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAgICAg
ICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC0yOTUsOSArMzE3LDE1IEBAIEpTT2JqZWN0KiBQcm9n
cmFtRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGkKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQg
UHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQor
eworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwg
bV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVy
SklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCiBKU09iamVj
dCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNj
b3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQog
ewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBp
bGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1w
bGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBV
TlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC0zMzYsNyArMzY0LDcgQEAgSlNPYmplY3QqIFByb2dy
YW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAg
aWYgKCFqaXRDb21waWxlSWZBcHByb3ByaWF0ZSgqZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29kZUJs
b2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVj
dXRpb24oKmdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwg
aml0VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTQxMiw3ICs0NDAsNyBA
QCBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpiCiAgICAgd2hpbGUgKHJl
c3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RnVuY3Rp
b25Db2RlQmxvY2sqPihyZXN1bHQtPmFsdGVybmF0aXZlKCkpOwogICAgIEFTU0VSVChyZXN1bHQp
OwotICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJ
VCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlw
ZSgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDM4LDYgKzQ2NiwxOCBAQCBKU09i
amVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlT3B0CiAgICAgcmV0dXJuIGVycm9yOwog
fQogCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0aW9u
SWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZv
ckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgSklU
Q29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0
KTsKK30KKwordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1Y3Qo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGls
ZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVj
dCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlD
aGVjaywgbV9zeW1ib2xUYWJsZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwogRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrV2l0aEJ5dGVjb2RlRm9yKENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCkKIHsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxp
bmVDb2RlQmxvY2tGb3Ioa2luZCk7CkBAIC00ODIsNyArNTIyLDcgQEAgUGFzc093blB0cjxGdW5j
dGlvbkNvZGVCbG9jaz4gRnVuY3Rpb25FeAogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxl
Ojpjb21waWxlRm9yQ2FsbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUq
IHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxp
bmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/
ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFM
KSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRp
b24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShl
eGVjKTsKQEAgLTUwNCw3ICs1NDQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b21waWxlRm9yCiAgICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC0+c2hhcmVk
U3ltYm9sVGFibGUoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVu
Y3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDYWxs
LCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3lt
Ym9sVGFibGUsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9u
KGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxs
LCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUs
IENvZGVGb3JDYWxsKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNTI0LDcgKzU2
NCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKIAogSlNPYmpl
Y3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKEV4ZWNT
dGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRU
eXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlw
ZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwp
IiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFC
TEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTU0Niw3ICs1ODYsNyBAQCBK
U09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAgICAgbV9zeW1ib2xUYWJs
ZSA9IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LT5zaGFyZWRTeW1ib2xUYWJsZSgpOwogCiAjaWYg
RU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29u
c3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJs
ZSwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYy0+
Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3Ry
dWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwg
aml0VHlwZSwgQ29kZUZvckNvbnN0cnVjdCkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlz
aW9uIDEwNjA4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBFeGVjdXRhYmxlX2gK
IAogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIk5vZGVzLmgiCkBAIC0zOSwxMiArNDAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgRGVidWdnZXI7CiAgICAgY2xhc3MgRXZhbENvZGVCbG9jazsKICAgICBjbGFzcyBG
dW5jdGlvbkNvZGVCbG9jazsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAg
Y2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKIAogICAg
IHN0cnVjdCBFeGNlcHRpb25JbmZvOwogICAgIAotICAgIGVudW0gQ29kZVNwZWNpYWxpemF0aW9u
S2luZCB7IENvZGVGb3JDYWxsLCBDb2RlRm9yQ29uc3RydWN0IH07CiAgICAgZW51bSBDb21waWxh
dGlvbktpbmQgeyBGaXJzdENvbXBpbGF0aW9uLCBPcHRpbWl6aW5nQ29tcGlsYXRpb24gfTsKIAog
ICAgIGlubGluZSBib29sIGlzQ2FsbChDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0z
MTksNiArMzIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEV2YWxF
eGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBT
Y3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTMzOCw2ICszNDAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGlt
aXplZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShKU0dsb2Jh
bERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIEV2YWxDb2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVj
b2RlKCkKQEAgLTM4NCw2ICszODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAg
Y2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAg
ICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNDExLDYgKzQxNSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lk
IGpldHRpc29uT3B0aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRD
b21waWxlKEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgUHJvZ3JhbUNvZGVCbG9j
ayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAtNDUzLDYgKzQ1OCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFi
bGUgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRF
eGVjdXRhYmxlIEJhc2U7CiAKQEAgLTUwOCw2ICs1MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENv
ZGVGb3JDYWxsKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDYWxs
KEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNh
bGwoKSBjb25zdApAQCAtNTM1LDYgKzU0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAK
ICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNv
bnN0cnVjdChKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ29uc3Ry
dWN0KEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZv
ckNvbnN0cnVjdCgpIGNvbnN0CkBAIC01ODIsNiArNTkwLDE2IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgICAgIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChnbG9iYWxE
YXRhKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBq
aXRDb21waWxlRm9yKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2Fs
bCkgeworICAgICAgICAgICAgICAgIGppdENvbXBpbGVGb3JDYWxsKGdsb2JhbERhdGEpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVChr
aW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICAgICAgaml0Q29tcGlsZUZvckNvbnN0
cnVjdChnbG9iYWxEYXRhKTsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBi
b29sIGlzR2VuZXJhdGVkRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJu
ZXNzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBFeGVjdXRpb25IYXJuZXNzX2gKKyNk
ZWZpbmUgRXhlY3V0aW9uSGFybmVzc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKwor
I2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJKSVREcml2ZXIuaCIKKyNpbmNsdWRlICJMTElu
dEVudHJ5cG9pbnRzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBD
b2RlQmxvY2tUeXBlPgoraW5saW5lIGJvb2wgcHJlcGFyZUZvckV4ZWN1dGlvbihKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBKSVRDb2Rl
JiBqaXRDb2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisjaWYgRU5BQkxFKExMSU5U
KQorICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkgeworICAgICAgICAv
LyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRlcnByZXRlci4KKyAgICAgICAgTExJbnQ6
OmdldEVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsKKyAg
ICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0
cigpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgY29kZUJs
b2NrLCBqaXRDb2RlLCBqaXRUeXBlKTsKK30KKworaW5saW5lIGJvb2wgcHJlcGFyZUZ1bmN0aW9u
Rm9yRXhlY3V0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29k
ZUJsb2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHImIGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJs
ZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
Cit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShq
aXRUeXBlKSkgeworICAgICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRlcnBy
ZXRlci4KKyAgICAgICAgTExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludChnbG9iYWxEYXRhLCBr
aW5kLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBjb2RlQmxvY2st
PnNldEpJVENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oa2luZCk7CisjZW5kaWYg
Ly8gRU5BQkxFKExMSU5UKQorICAgIHJldHVybiBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJp
YXRlKGdsb2JhbERhdGEsIGNvZGVCbG9jaywgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNr
LCBzeW1ib2xUYWJsZSwgaml0VHlwZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIEV4ZWN1dGlvbkhhcm5lc3NfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkocmV2aXNp
b24gMTA2MDgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5
ID0gYWRvcHRBcnJheVB0cihuZXcgV3JpdGVCYXJyaWVyPFVua25vd24+W3JlZ2lzdGVyQXJyYXlT
aXplXSk7CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzID0gcmVnaXN0
ZXJBcnJheS5nZXQoKSArIHJlZ2lzdGVyT2Zmc2V0OwotCisgICAgICAgIAogICAgICAgICAvLyBD
b3B5IGFsbCBhcmd1bWVudHMgdGhhdCBjYW4gYmUgY2FwdHVyZWQgYnkgbmFtZSBvciBieSB0aGUg
YXJndW1lbnRzIG9iamVjdC4KICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX251bUNhcHR1
cmVkQXJnczsgKytpKSB7CiAgICAgICAgICAgICBpbnQgaW5kZXggPSBDYWxsRnJhbWU6OmFyZ3Vt
ZW50T2Zmc2V0KGkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aAkocmV2aXNpb24gMTA2MDgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEpTQXJyYXk7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
CiAgICAgc3RydWN0IFNwYXJzZUFycmF5RW50cnkgOiBwdWJsaWMgV3JpdGVCYXJyaWVyPFVua25v
d24+IHsKICAgICAgICAgdHlwZWRlZiBXcml0ZUJhcnJpZXI8VW5rbm93bj4gQmFzZTsKQEAgLTEy
Miw2ICsxMjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgSlNBcnJh
eSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdhbGtlcjsKIAogICAgIHBy
b3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZp
c2lvbiAxMDYwODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAko
d29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0gICAgY2xhc3MgU3RydWN0dXJlOworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAg
Y2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CisgICAgY2xhc3MgU3RydWN0dXJlOwogCiAgICAgZW51
bSBFbnVtZXJhdGlvbk1vZGUgewogICAgICAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLApA
QCAtMTY0LDYgKzE2NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgYm9vbCBn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVu
dGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgY29u
c3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9zdHJ1Y3R1cmU7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDEwNjA4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFz
cyBKU0FjdGl2YXRpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xh
c3MgU291cmNlQ29kZTsKICAgICBuYW1lc3BhY2UgREZHIHsKQEAgLTE0MCw2ICsxNDEsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwq
LCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMg
SlNWYWx1ZSBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRp
ZmllciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwCShyZXZpc2lvbiAxMDYwODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDggQEAg
SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgICwga2V5d29yZHMo
YWRvcHRQdHIobmV3IEtleXdvcmRzKHRoaXMpKSkKICAgICAsIGludGVycHJldGVyKDApCiAgICAg
LCBoZWFwKHRoaXMsIGhlYXBTaXplKQorICAgICwganNBcnJheUNsYXNzSW5mbygmSlNBcnJheTo6
c19pbmZvKQorICAgICwganNGaW5hbE9iamVjdENsYXNzSW5mbygmSlNGaW5hbE9iamVjdDo6c19p
bmZvKQogI2lmIEVOQUJMRShERkdfSklUKQogICAgICwgc2l6ZU9mTGFzdFNjcmF0Y2hCdWZmZXIo
MCkKICNlbmRpZgpAQCAtMjE2LDcgKzIxOCw3IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRh
KEdsb2JhbERhdGFUeXAKICAgICBqaXRTdHVicyA9IGFkb3B0UHRyKG5ldyBKSVRUaHVua3ModGhp
cykpOwogI2VuZGlmCiAKLSAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSh0aGlzLT5jYW5Vc2VK
SVQoKSk7CisgICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUoJmxsaW50RGF0YSwgdGhpcy0+Y2Fu
VXNlSklUKCkpOwogCiAgICAgaGVhcC5ub3RpZnlJc1NhZmVUb0NvbGxlY3QoKTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lv
biAxMDYwODIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTUgKzMwLDE2IEBACiAjZGVmaW5lIEpTR2xvYmFsRGF0
YV9oCiAKICNpbmNsdWRlICJDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgiCi0jaW5jbHVk
ZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRl
ICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIlN0
cm9uZy5oIgorI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAj
aW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk51
bWVyaWNTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU3Ry
b25nLmgiCiAjaW5jbHVkZSAiVGVybWluYXRvci5oIgogI2luY2x1ZGUgIlRpbWVvdXRDaGVja2Vy
LmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgpAQCAtNjUsNiArNjYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKICAg
ICBjbGFzcyBLZXl3b3JkczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAg
Y2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAgICBjbGFz
cyBSZWdFeHBDYWNoZTsKQEAgLTI0MSw2ICsyNDMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEhlYXAgaGVhcDsKIAogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKKworICAgICAgICBj
b25zdCBDbGFzc0luZm8qIGNvbnN0IGpzQXJyYXlDbGFzc0luZm87CisgICAgICAgIGNvbnN0IENs
YXNzSW5mbyogY29uc3QganNGaW5hbE9iamVjdENsYXNzSW5mbzsKKworICAgICAgICBMTEludDo6
RGF0YSBsbGludERhdGE7CisKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZXR1cm5BZGRyZXNz
UHRyIGV4Y2VwdGlvbkxvY2F0aW9uOwogICAgICAgICBKU1ZhbHVlIGhvc3RDYWxsUmV0dXJuVmFs
dWU7CkBAIC0zNDYsNiArMzU0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjdW5kZWYgcmVnaXN0ZXJU
eXBlZEFycmF5RnVuY3Rpb24KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU0dsb2JhbERhdGEoR2xv
YmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUpOwogICAgICAgICBzdGF0aWMg
SlNHbG9iYWxEYXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwogICAgICAgICB2b2lkIGNy
ZWF0ZU5hdGl2ZVRodW5rKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDEwNjA4MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYg
KzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAg
ICAgY2xhc3MgR2V0dGVyU2V0dGVyOwogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1
Y3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFJlZ0V4cENvbnN0
cnVjdG9yOwpAQCAtMzM1LDYgKzMzNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGFkZFN0YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiwg
aW50IGNvdW50KTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogRm9sZCByZXNldCBp
bnRvIGluaXQuCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdChKU09iamVjdCog
dGhpc1ZhbHVlKTsKICAgICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEwNjA4
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgR2V0dGVy
U2V0dGVyOwogICAgIGNsYXNzIEhhc2hFbnRyeTsKICAgICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9u
OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRCbG9j
azsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1l
QXJyYXk7CkBAIC0yNjksNiArMjcwLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTT2Jq
ZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9y
YWdlKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIgYXNrIGFu
eSBvZiB0aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25vd24gdG8gYmUgYSBK
U09iamVjdC4KICAgICAgICAgdXNpbmcgSlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcjsKICAgICAg
ICAgdXNpbmcgSlNDZWxsOjppc0dldHRlclNldHRlcjsKQEAgLTM4MSw2ICszODQsOCBAQCBDT01Q
SUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgZXhwbGljaXQgSlNGaW5h
bE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5lU3Rv
cmFnZSkKICAgICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkocmV2aXNpb24gMTA2MDgyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC05Niw2ICs5Nyw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5
TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpOwogCiAgICAgICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FjaGVkU3RydWN0dXJlOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxMDYwODIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2
ICszMiw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTU3RyaW5nOworICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5n
KEpTR2xvYmFsRGF0YSopOwogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSop
OwpAQCAtMjQwLDYgKzI0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNvbHZlUm9wZShFeGVjU3RhdGUqKSBjb25z
dDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlOChMQ2hhciopIGNvbnN0OwogICAg
ICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2UoVUNoYXIqKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDEwNjA4MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkID0gMTsgLy8gV2ViQ29yZSB1c2VzIE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQgdG8gbWFrZSBkb2N1bWVudC5hbGwgdW5kZXRlY3RhYmxlLgogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPSAxIDw8IDE7CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIE92ZXJyaWRlc0hhc0luc3RhbmNlID0gMSA8PCAyOwpAQCAtODcsNiArODksOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wg
aXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnIDw9ICgxIDw8
IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBmbGFnOyB9CiAgICAgICAgIGJvb2wgaXNTZXRPbkZsYWdz
Mih1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnID49ICgxIDw8IDgpKTsgcmV0dXJu
IG1fZmxhZ3MyICYgKGZsYWcgPj4gOCk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDEwNjA4MikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsMTAgKzEx
Niw5IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEUKICAgICByZXR1
cm4gSlNOb3RBbk9iamVjdDo6Y3JlYXRlKGV4ZWMpOwogfQogCi0jaWZuZGVmIE5ERUJVRwogY2hh
ciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogewotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6
ZSA9IDY0OworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZSA9IDEyODsKICAgICBzdGF0aWMg
Y2hhciBkZXNjcmlwdGlvbltzaXplXTsKIAogICAgIGlmICghKnRoaXMpCkBAIC0xMjgsMTQgKzEy
NywxNCBAQCBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiAgICAgICAgIHNucHJpbnRmKGRl
c2NyaXB0aW9uLCBzaXplLCAiSW50MzI6ICVkIiwgYXNJbnQzMigpKTsKICAgICBlbHNlIGlmIChp
c0RvdWJsZSgpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc25wcmludGYoZGVzY3Jp
cHRpb24sIHNpemUsICJEb3VibGU6ICVsZiwgJWx4IiwgYXNEb3VibGUoKSwgcmVpbnRlcnByZXRE
b3VibGVUb0ludHB0cihhc0RvdWJsZSgpKSk7CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9u
LCBzaXplLCAiRG91YmxlOiAlbHgsICVsZiIsIHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIoYXNE
b3VibGUoKSksIGFzRG91YmxlKCkpOwogI2Vsc2UKICAgICAgICAgdW5pb24gewogICAgICAgICAg
ICAgZG91YmxlIGFzRG91YmxlOwogICAgICAgICAgICAgdWludDMyX3QgYXNUd29JbnQzMnNbMl07
CiAgICAgICAgIH0gdTsKICAgICAgICAgdS5hc0RvdWJsZSA9IGFzRG91YmxlKCk7Ci0gICAgICAg
IHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICUwOHg6JTA4eCIsIGFz
RG91YmxlKCksIHUuYXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0pOworICAgICAgICBz
bnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJTA4eDolMDh4LCAlbGYiLCB1LmFz
VHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdLCBhc0RvdWJsZSgpKTsKICNlbmRpZgogICAg
IH0gZWxzZSBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXpl
LCAiQ2VsbDogJXAiLCBhc0NlbGwoKSk7CkBAIC0xNTIsNyArMTUxLDYgQEAgY2hhciogSlNWYWx1
ZTo6ZGVzY3JpcHRpb24oKQogCiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQotI2VuZGlmCiAK
IC8vIFRoaXMgaW4gdGhlIFRvSW50MzIgb3BlcmF0aW9uIGlzIGRlZmluZWQgaW4gc2VjdGlvbiA5
LjUgb2YgdGhlIEVDTUEtMjYyIHNwZWMuCiAvLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMg
aWRlbnRpY2FsIHRvIFRvVUludDMyIG90aGVyIHRoYW4gdG8gaW50ZXJwcmV0YXRpb24KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHJldmlzaW9uIDEwNjA4MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMyLDkgKzIzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU0NlbGwqIGFz
Q2VsbCgpIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRDYWxs
ZWUoKTsKIAotI2lmbmRlZiBOREVCVUcKICAgICAgICAgY2hhciogZGVzY3JpcHRpb24oKTsKLSNl
bmRpZgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpTVmFsdWUo
V3JpdGVCYXJyaWVyQmFzZTxUPik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiAxMDYwODIpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDEwICszOCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBSZWdpc3RlcjsKIAogICAgIGNsYXNzIEpTVmFy
aWFibGVPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAK
ICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDEw
NjA4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxMCBAQCB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JD
b25zdHJ1Y3RJbmxpCiAKIHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOwogCitpbnQzMl90
IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworaW50MzJfdCBleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CitpbnQzMl90IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvckpJVFNvb247CisKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
T3B0aW1pemVBZnRlcldhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVBZnRlckxvbmdXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRv
bnRPcHRpbWl6ZUFueXRpbWVTb29uOwpAQCAtMTM3LDYgKzE0MSwxMCBAQCB2b2lkIGluaXRpYWxp
emVPcHRpb25zKCkKICAgICAKICAgICBTRVQobWF4aW11bUlubGluaW5nRGVwdGgsIDUpOwogCisg
ICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwLCAgICAgLTEwMCk7
CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbiwgc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOworICAgIFNFVChleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JKSVRTb29uLCAgICAgICAgICAgIC0xMDApOworCiAgICAgU0VUKGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAsICAgICAtMTAwMCk7CiAgICAgU0VU
KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwLCAtNTAwMCk7
CiAgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29u
LCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CkBAIC0xODUsNiArMTkzLDgg
QEAgdm9pZCBpbml0aWFsaXplT3B0aW9ucygpCiAgICAgaWYgKGNwdXNUb1VzZSA8IDEpCiAgICAg
ICAgIGNwdXNUb1VzZSA9IDE7CiAgICAgCisgICAgY3B1c1RvVXNlID0gMTsKKyAgICAKICAgICBT
RVQobnVtYmVyT2ZHQ01hcmtlcnMsIGNwdXNUb1VzZSk7CiAKICAgICBBU1NFUlQoZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24gPD0gZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTA2MDgyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywx
MCBAQCBleHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RyCiAKIGV4dGVybiB1
bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsgLy8gRGVwdGggb2YgaW5saW5lIHN0YWNrLCBz
byAxID0gbm8gaW5saW5pbmcsIDIgPSBvbmUgbGV2ZWwsIGV0Yy4KIAorZXh0ZXJuIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitleHRlcm4gaW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CitleHRlcm4gaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBleHRlcm4gaW50MzJfdCBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogZXh0ZXJuIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7CiBleHRlcm4g
aW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHJldmlz
aW9uIDEwNjA4MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4u
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3Mg
SlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFNj
b3BlQ2hhaW5JdGVyYXRvcjsKICAgICBjbGFzcyBTbG90VmlzaXRvcjsKICAgICAKQEAgLTkxLDYg
KzkyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNv
bnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbjsKICAgICB9
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2
aXNpb24gMTA2MDgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1l
QXJyYXk7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhOwogICAgIGNsYXNzIFN0cnVj
dHVyZUNoYWluOwpAQCAtMTk2LDYgKzE5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBz
dGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0
ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAg
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENs
YXNzSW5mbyopOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIFN0
cnVjdHVyZShKU0dsb2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMTA2
MDgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAg
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAg
ICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbiA6IHB1YmxpYyBKU0NlbGwgewpAQCAtNzQsNiArNzUsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIFN0cnVj
dHVyZUNoYWluKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgdm9p
ZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8U3Ry
dWN0dXJlPiA+IG1fdmVjdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0u
aAkocmV2aXNpb24gMTA2MDgyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9y
bS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MjAsNiArOTIwLDE4IEBACiAjZGVmaW5lIEVOQUJMRV9K
SVQgMQogI2VuZGlmCiAKKy8qIE9uIHNvbWUgb2YgdGhlIHBsYXRmb3JtcyB3aGVyZSB3ZSBoYXZl
IGEgSklULCB3ZSB3YW50IHRvIGFsc28gaGF2ZSB0aGUgCisgICBsb3ctbGV2ZWwgaW50ZXJwcmV0
ZXIuICovCisjaWYgIWRlZmluZWQoRU5BQkxFX0xMSU5UKSAmJiBFTkFCTEUoSklUKSAmJiBQTEFU
Rk9STShNQUMpICYmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIEVOQUJMRV9MTElOVCAxCisj
ZW5kaWYKKworLyogSWYgd2UgaGF2ZSBMTEludCBlbmFibGVkIGFuZCB0aGUgSklUIGVuYWJsZWQs
IHdlIGFsc28gZW5hYmxlIE9TUmluZyBmcm9tCisgICBMTEludCB0byB0aGUgSklULiAqLworI2lm
ICFkZWZpbmVkKEVOQUJMRV9MTElOVF9PU1JfVE9fSklUKSAmJiBFTkFCTEUoSklUKSAmJiBFTkFC
TEUoTExJTlQpCisjZGVmaW5lIEVOQUJMRV9MTElOVF9PU1JfVE9fSklUIDEKKyNlbmRpZgorCiAj
aWYgIWRlZmluZWQoRU5BQkxFX0RGR19KSVQpICYmIEVOQUJMRShKSVQpCiAvKiBFbmFibGUgdGhl
IERGRyBKSVQgb24gWDg2IGFuZCBYODZfNjQuICBPbmx5IHRlc3RlZCBvbiBNYWMgYW5kIEdOVS9M
aW51eC4gKi8KICNpZiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpICYmIChQTEFURk9STShNQUMp
IHx8IE9TKExJTlVYKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxM
aW5rZWRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50
aW5lbExpbmtlZExpc3QuaAkocmV2aXNpb24gMTA2MDgyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYs
OCBAQCBwdWJsaWM6CiAKICAgICBpdGVyYXRvciBiZWdpbigpOwogICAgIGl0ZXJhdG9yIGVuZCgp
OworICAgIAorICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIGJlZ2luKCkgPT0gZW5kKCk7IH0K
IAogcHJpdmF0ZToKICAgICBSYXdOb2RlIG1faGVhZFNlbnRpbmVsOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAxMDYwODIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Myw2ICs0Myw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZTdHJpbmcgKiBD
RlN0cmkKIC8vIExhbmRpbmcgdGhlIGZpbGUgbW92ZXMgaW4gb25lIHBhdGNoLCB3aWxsIGZvbGxv
dyBvbiB3aXRoIHBhdGNoZXMgdG8gY2hhbmdlIHRoZSBuYW1lc3BhY2VzLgogbmFtZXNwYWNlIEpT
QyB7CiBzdHJ1Y3QgSWRlbnRpZmllckNTdHJpbmdUcmFuc2xhdG9yOworY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJZGVudGlmaWVyQ2hh
ckJ1ZmZlclRyYW5zbGF0b3I7CiBzdHJ1Y3QgSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyVHJhbnNs
YXRvcjsKIH0KQEAgLTcyLDcgKzczLDggQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgZnJpZW5k
IHN0cnVjdCBXVEY6OlN1YnN0cmluZ1RyYW5zbGF0b3I7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6
OlVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKICAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5nSW1w
bDsKLQorICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAK
IHByaXZhdGU6CiAgICAgZW51bSBCdWZmZXJPd25lcnNoaXAgewogICAgICAgICBCdWZmZXJJbnRl
cm5hbCwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjA4MikKKysrIFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAxLTI2ICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgSlNDIHNob3VsZCBiZSBh
IHRyaXBsZS10aWVyIFZNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD03NTgxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAwNzk2OTQ+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCBFRkwncyBi
dWlsZCBzeXN0ZW0gdG8gaW5jbHVkZSBhIG5ldyBkaXJlY3RvcnkgaW4gSmF2YVNjcmlwdENvcmUu
CisgICAgICAgIAorICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBubyBiZWhhdmlvciBjaGFu
Z2VkLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMTItMDEtMjYgIFBhYmxvIEZs
b3VyZXQgIDxwYWJsb2ZAbW90b3JvbGEuY29tPgogCiAgICAgICAgIEZpeCBiYWQgY29kZSBnZW5l
cmF0ZWQgYnkgdGhlIEpTQyBpZGwgY29kZSBnZW5lcmF0b3IgZm9yIFtDYWNoZWRBdHRyaWJ1dGVd
IGF0dHJpYnV0ZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDYwODIpCisr
KyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiAr
NzQsNyBAQCBTRVQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQ
VENPUkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJl
dGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L3J1bnRpbWUiCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MDgyKQorKysgU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0y
NiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQg
YmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQgRUZM
J3MgYnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3JpcHRD
b3JlLgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxMi0wMS0xMSAg
SmFja3kgSmlhbmcgIDx6aGFqaWFuZ0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBB
U1NFUlQgZmFpbHVyZSBpbiBCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRz
KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA2MDgyKQorKysgU291cmNlL1dl
YktpdC9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBTRVQo
V2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2Rl
YnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGlu
dCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3BhcnNlciIKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZSIK
</data>
<flag name="commit-queue"
          id="125465"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124360</attachid>
            <date>2012-01-27 13:37:03 -0800</date>
            <delta_ts>2012-01-27 14:42:19 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_56.diff</filename>
            <type>text/plain</type>
            <size>442496</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MTQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5NyBA
QAorMjAxMi0wMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi52c3Byb3BzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDog
QWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Omlz
U2V0KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAg
IChDYWxsTGlua1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmVzY2FwZVF1b3Rlcyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWlu
Z0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RXZh
bENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6
amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1w
bCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dXNlc09wY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAg
KCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0Q29tcGls
ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
aWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxp
a2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlr
ZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1
ZW50RXhpdFNpdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29v
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50
RXhlY3V0ZUNvdW50ZXIpOgorICAgICAgICAoUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChF
dmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBi
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6
CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OkdldEJ5SWRTdGF0dXMpOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjp3YXNTZWVuSW5KSVQpOgorICAgICAgICAoR2V0QnlJZFN0YXR1
cyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgIChJbnN0cnVj
dGlvbik6CisgICAgICAgICgpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZv
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0lu
Zm86OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKExMSW50Q2FsbExpbmtJbmZvKToKKyAg
ICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6OkxM
SW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAg
IChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAoUHV0QnlJZFN0YXR1cyk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0
UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaCk6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0
UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRD
b21waWxlci5jcHA6CisgICAgICAgICgpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKCk6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChBbGxvY2F0aW9uU3BhY2UpOgorICAgICAgICAoKToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAo
SGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAoSlNDOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFt
ZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJy
ZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZy
YW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmls
ZSk6CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKToKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAg
KiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpJVENvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2Rl
Ojppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAg
ICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToK
KyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93
KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RV
Ql9GVU5DVElPTik6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJ
VC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1v
bi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChEYXRhKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50
RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRF
dmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2lu
dCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBv
aW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxl
cik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9u
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpM
TEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQv
TExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChK
U0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmVudHJ5T1NSKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJlc29sdmVHbG9iYWwpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9z
dENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRk
ZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludE9m
ZnNldHNFeHRyYWN0b3IpOgorICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDog
QWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3Ry
dWN0RW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZv
ckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpMTEludDo6ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20u
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRy
YWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAg
ICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFz
bS9zZXR0aW5ncy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6
IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBBZGRlZC4KKyAgICAgICAgKiBy
dW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgor
ICAgICAgICAoKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAg
ICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAoQ29tbW9u
U2xvd1BhdGhzKToKKyAgICAgICAgKEpTQzo6Q29tbW9uU2xvd1BhdGhzOjpvcEluc3RhbmNlT2ZT
bG93KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpq
ZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpqaXRDb21w
aWxlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnNhbXBsaW5nRGVzY3JpcHRpb24p
OgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpQ
cm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OkZ1bmN0
aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlv
bkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGdW5j
dGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbCk6CisgICAgICAg
ICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoKToKKyAg
ICAgICAgKEV2YWxFeGVjdXRhYmxlKToKKyAgICAgICAgKFByb2dyYW1FeGVjdXRhYmxlKToKKyAg
ICAgICAgKEZ1bmN0aW9uRXhlY3V0YWJsZSk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0
YWJsZTo6aml0Q29tcGlsZUZvcik6CisgICAgICAgICogcnVudGltZS9FeGVjdXRpb25IYXJuZXNz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZvckV4ZWN1
dGlvbik6CisgICAgICAgIChKU0M6OnByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbik6CisgICAg
ICAgICogcnVudGltZS9KU0FjdGl2YXRpb24uaDoKKyAgICAgICAgKEpTQzo6SlNBY3RpdmF0aW9u
Ojp0ZWFyT2ZmKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXkuaDoKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0FycmF5KToKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKCk6CisgICAgICAgIChKU0NlbGwpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTRnVuY3Rpb24pOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNHbG9iYWxEYXRhKToKKyAgICAgICAgKEpTQzo6
SlNHbG9iYWxEYXRhOjpzY3JhdGNoQnVmZmVyRm9yU2l6ZSk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoKToKKyAgICAgICAgKEpTT2JqZWN0KToKKyAgICAgICAgKEpTRmluYWxPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTUHJvcGVydHlOYW1lSXRlcmF0b3IpOgorICAgICAgICAqIHJ1bnRpbWUvSlNT
dHJpbmcuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU1N0cmluZyk6CisgICAgICAgICog
cnVudGltZS9KU1R5cGVJbmZvLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoVHlwZUluZm8p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpKU1ZhbHVlOjpkZXNjcmlwdGlvbik6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVl
Lmg6CisgICAgICAgIChKU1ZhbHVlKToKKyAgICAgICAgKCk6CisgICAgICAgICogcnVudGltZS9K
U1ZhcmlhYmxlT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNWYXJpYWJsZU9i
amVjdCk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKE9wdGlvbnMp
OgorICAgICAgICAoSlNDOjpPcHRpb25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAgICAgICog
cnVudGltZS9PcHRpb25zLmg6CisgICAgICAgIChPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1l
L1Njb3BlQ2hhaW4uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChTY29wZUNoYWluTm9kZSk6
CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChTdHJ1Y3R1cmVDaGFpbik6CisgICAgICAgICogd3RmL1BsYXRm
b3JtLmg6CisgICAgICAgICogd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oOgorICAgICAgICAoU2Vu
dGluZWxMaW5rZWRMaXN0KToKKyAgICAgICAgKFdURjo6U2VudGluZWxMaW5rZWRMaXN0Ojppc0Vt
cHR5KToKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoU3RyaW5nSW1wbCk6CisgICAgICAgICgpOgorCiAyMDEyLTAxLTI2ICBGaWxpcCBQ
aXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQWxsIERGRyBoZWxwZXJzIHRoYXQg
bWF5IGNhbGwgb3V0IHRvIGFyYml0cmFyeSBKUyBjb2RlIG11c3Qga25vdyB3aGVyZSB0aGV5Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDYxNDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTExLDYgKzExLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L3BhcnNlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZSIKQEAgLTk0LDYgKzk1LDcgQEAgU0VUKEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKICAgICBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwCiAKICAgICBq
aXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5j
cHAKICAgICBqaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAogICAgIGppdC9KSVRBcml0aG1ldGlj
LmNwcAogICAgIGppdC9KSVRDYWxsMzJfNjQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmFtCShyZXZpc2lvbiAxMDYxNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
R05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgamF2YXNjcmlw
dGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCisJLUkkKHNyY2RpcikvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDYx
NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2lu
ZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmNwcCBcCkBAIC0xMDIsNiArMTAzLDcgQEAgamF2YXNjcmlwdGNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9u
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTGluZUluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8uaCBcCkBAIC0yNzcsNiArMjc5LDggQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Db21wYWN0
SklUQ29kZU1hcC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0
b3IuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNw
cCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIFwKQEAgLTMwMCw2ICszMDQsNyBAQCBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNp
YWxpemVkVGh1bmtKSVQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vcy13aW4zMi9zdGRib29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vcy13aW4zMi9zdGRpbnQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmggXApAQCAtMzUwLDYgKzM1NSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaCBcCkBAIC0zNzgsNiArMzg0LDcgQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHJldmlzaW9uIDEwNjE0NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIw
LDYgKzIwLDcgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9kZWJ1Z2dlciBc
CiAgICAgJCRTT1VSQ0VfRElSL2ludGVycHJldGVyIFwKICAgICAkJFNPVVJDRV9ESVIvaml0IFwK
KyAgICAkJFNPVVJDRV9ESVIvbGxpbnQgXAogICAgICQkU09VUkNFX0RJUi9wYXJzZXIgXAogICAg
ICQkU09VUkNFX0RJUi9wcm9maWxlciBcCiAgICAgJCRTT1VSQ0VfRElSL3J1bnRpbWUgXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwNjE0NCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcg
QEAgU09VUkNFUyArPSBcCiAgICAgaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCiAgICAg
aml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgXAogICAgIGppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yLmNwcCBcCisgICAgaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKICAg
ICBqaXQvSklUQXJpdGhtZXRpYy5jcHAgXAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3Bw
IFwKICAgICBqaXQvSklUQ2FsbC5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwNjE0NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMwLDYgKzE3
MzAsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cLi5caml0XEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcSklULmNwcCIKIAkJCQk+CiAJCQk8
L0ZpbGU+CkBAIC0xODE1LDYgKzE4MTksMTQgQEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJ
CTxGaWx0ZXIKKwkJCU5hbWU9ImxsaW50IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXGxsaW50XExMSW50RGF0YS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0
ZXI+CisJCTxGaWx0ZXIKIAkJCU5hbWU9ImludGVycHJldGVyIgogCQkJPgogCQkJPEZpbGUKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMJKHJldmlzaW9uIDEwNjE0NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmVDb21tb24udnNwcm9wcwkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJ
PFRvb2wKIAkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29y
ZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsu
Li8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL2RmZy87Li4vLi4vaml0LzsuLi8uLi9ydW50aW1lLzsu
Li8uLi9ieXRlY29kZS87Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJvZmls
ZXI7Li4vLi4vYXNzZW1ibGVyLzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7JChX
ZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNE
aXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
aW5jbHVkZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZh
U2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxw
cml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRz
JnF1b3Q7IgorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcb2JqXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXCZxdW90Ozsu
Li8uLi87Li4vLi4vQVBJLzsuLi8uLi9wYXJzZXIvOy4uLy4uL2J5dGVjb21waWxlci87Li4vLi4v
ZGZnLzsuLi8uLi9qaXQvOy4uLy4uL2xsaW50LzsuLi8uLi9ydW50aW1lLzsuLi8uLi9ieXRlY29k
ZS87Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJvZmlsZXI7Li4vLi4vYXNz
ZW1ibGVyLzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7JChXZWJLaXRMaWJyYXJp
ZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVc
cHJpdmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZSZxdW90
OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZx
dW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7
OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7IgogCQlQ
cmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX19TVERfQyIKIAkJRm9yY2VkSW5jbHVkZUZpbGVzPSJJ
Q1VWZXJzaW9uLmgiCiAJLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29y
ZS9jb3B5LWZpbGVzLmNtZAkocmV2aXNpb24gMTA2MTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZpbGVzLmNtZAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBmb3IgJSVkIGluICgKICAgICBkZWJ1Z2dl
cgogICAgIGludGVycHJldGVyCiAgICAgaml0CisgICAgbGxpbnQKICAgICBwYXJzZXIKICAgICBw
cm9maWxlcgogICAgIHJ1bnRpbWUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAxMDYxNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE1IEBA
CiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8K
KwkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8gPSB7CisJCQlp
c2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0
NjgwQUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJY
QWdncmVnYXRlVGFyZ2V0ICJMTEludCBPZmZzZXRzIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAor
CQkJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMg
Ki8sCisJCQkpOworCQkJbmFtZSA9ICJMTEludCBPZmZzZXRzIjsKKwkJCXByb2R1Y3ROYW1lID0g
IkRlcml2ZWQgU291cmNlcyI7CisJCX07CiAJCTY1RkIzRjY2MDlEMTFFOTEwMEY0OURFQiAvKiBE
ZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CiAJCQli
dWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNjVGQjNGNzcwOUQxMUVCRDAwRjQ5REVCIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJEZXJpdmVkIFNvdXJj
ZXMiICovOwpAQCAtMTQsNiArMjMsOSBAQAogCQkJCTY1RkIzRjY1MDlEMTFFOTEwMEY0OURFQiAv
KiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJNUQzNURFRTEwQzdDMTQwQjAwODY0
OEIyIC8qIEdlbmVyYXRlIERUcmFjZSBoZWFkZXIgKi8sCiAJCQkpOworCQkJZGVwZW5kZW5jaWVz
ID0gKAorCQkJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJCXByb2R1Y3ROYW1l
ID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCX07CkBAIC00OCw2ICs2MCwxMCBAQAogCQkwQkFDOTRB
MDEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJBQzk0OUUxMzM4NzI4NDAw
Q0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkNEODM1NzE0ODU4NDUyMDBFQTIwMDMg
LyogVGVtcG9yYXJ5Q2hhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJGMjhB
MjkxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNp
emVMaW1pdHMuY3BwICovOyB9OworCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRF
bnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi87
IH07CisJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NjE0QkNG
NDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBM
TEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovOyB9Owor
CQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0
RiAvKiBMTEludFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTUxNEJDRjUw
NDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZv
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNB
ODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyog
RXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUlu
Zm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
NTgsOSArNzQsMTMgQEAKIAkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxM
aW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I3MTRCQ0Y4
RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2Jh
bFJlc29sdmVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5
dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNv
ZGVPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEZDNDU4MTRCRDE1
RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBD
b21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE2RDcyNjE0
MkMzOUMwMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0
b3IuY3BwICovOyB9OwogCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJpdmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI2NjE0
QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1
dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0QxNEJF
NzI3QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAv
KiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2Rl
Q29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyNDJEQTcx
M0YzQjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjQyREE1MTNGM0IxQkIwMDdBREQ0
QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NkYxNDczOEYzMTAwMTIxRTRGIC8qIERGR0Nv
ZGVCbG9ja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NzAxNDczOEYzNTAw
MTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9j
a3MuY3BwICovOyB9OwpAQCAtNzEsNiArOTEsMTkgQEAKIAkJMEY0MzE3MzgxNDZCQUM2OTAwN0Uz
ODkwIC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
NDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIg
LyogSklURXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDdG
MTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTMx
NEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExM
SW50RXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUYxNEJB
N0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi87IHNldHRpbmdzID0ge0NPTVBJTEVS
X0ZMQUdTID0gIi1Xbm8tdW51c2VkLXBhcmFtZXRlciI7IH07IH07CisJCTBGNDY4MEE1MTRCQTdG
OEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBl
cnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdG
ODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovOyB9OworCQkwRjQ2ODBB
ODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIg
LyogTExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENCMTRCQkIx
NzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBM
TEludE9mZmxpbmVBc21Db25maWcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRl
cnByZXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi87
IH07CisJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDODE0
QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3
MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi87IH07
CisJCTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENGMTRCQkIzRDEwMEJGRTI3
MiAvKiBMTEludERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2
ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi87IH07CisJ
CTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMTE0QkJDNUY4
MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBB
YnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLzsgfTsKIAkJ
MEY1NUYwRjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAv
KiBBYnN0cmFjdFBDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYw
OENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM4NSw3ICs0MTgsNyBA
QAogCQk4NkI5OUFFMzExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI5OUFFMTExN0U1NzgxMDBE
RjVBOTAgLyogU3RyaW5nQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJODZCQjA5QzAxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2gu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5
QkUxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwICovOyB9OwogCQk4NkJCMDlDMTEz
OEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0
Y2guaCAqLzsgfTsKLQkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVF
OTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgfTsKKwkJODZDMzZFRUEw
RUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFj
cm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REQx
MUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCAqLzsgfTsKIAkJODZDNTY4
RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0Yw
IC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwogCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3
RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCAq
LzsgfTsKQEAgLTc1Miw2ICs3ODUsMjAgQEAKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLworCQkwRjQ2ODBC
MTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNh
ID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBG
RTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsK
KwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyOworCQkJ
cmVtb3RlSW5mbyA9ICJMTEludCBPZmZzZXRzIjsKKwkJfTsKKwkJMEY0NjgwQjMxNEJBODIxNDAw
QkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRh
aW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJB
QUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVH
bG9iYWxJRFN0cmluZyA9IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8g
PSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCX07CiAJCTE0MTIxNEJFMEE0OTE5MEUwMDQ4
MDI1NSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWlu
ZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFD
MDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC03OTcsNiArODQ0LDE1IEBACiAvKiBFbmQgUEJY
Q29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29weUZpbGVzQnVp
bGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5Rmls
ZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsK
KwkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCX07CiAJCTVEQkIxNTExMTMxRDBC
MTMwMDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0gewogCQkJaXNhID0gUEJYQ29w
eUZpbGVzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOwpAQCAtODM3LDYgKzg5
MywxMCBAQAogCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25W
ZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRSZXN0cmlj
dGlvblZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCQ0Q4MzU0MTQ4
NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGVtcG9yYXJ5Q2hhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpemVMaW1pdHMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBv
aW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEVudHJ5
cG9pbnRzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRy
eXBvaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEVudHJ5cG9p
bnRzLmg7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludFRodW5rcy5jcHA7IHBh
dGggPSBsbGludC9MTEludFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludFRodW5rcy5oOyBwYXRoID0gbGxpbnQvTExJbnRUaHVu
a3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTUxNEJDRjUwNDAwODg1
QjRGIC8qIENvZGVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVU
eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0E4MTRCQ0Y1NUUwMDg4
NUI0RiAvKiBIYW5kbGVySW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBI
YW5kbGVySW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBQTE0QkNG
NUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBFeHByZXNzaW9uUmFuZ2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC04NDcsOSArOTA3LDEzIEBACiAJCTBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAv
KiBNZXRob2RDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWV0aG9kQ2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4
M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHbG9iYWxSZXNvbHZlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNl
dFRvQnl0ZWNvZGVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2Fs
bFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50Q2FsbExpbmtJbmZvLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21t
b25TbG93UGF0aHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uU2xv
d1BhdGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTZENzI0MTQyQzM5QTIw
MENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQml0VmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyMUMy
NjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKSVREcml2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYy
MUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhl
Y3V0aW9uSGFybmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRp
b25IYXJuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdFMTRCRUFB
ODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVudGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZl
c3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RDE0NzM4RjJFMDAx
MjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBERkdDb2RlQmxvY2tzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODYwLDYgKzkyNCwyMCBAQAogCQkwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAg
LyogTGlzdGFibGVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExp
c3RhYmxlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA3RjE0
QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKSVRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0Rmls
ZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7
IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CisJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlv
bnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFeGNlcHRp
b25zLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlv
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFeGNlcHRpb25zLmg7
IHBhdGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEhlbHBlcnMuY3BwOyBwYXRoID0g
bGxpbnQvTExJbnRIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0
NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMTEludEhlbHBlcnMuaDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVy
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUy
NzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHBhdGggPSBsbGludC9MTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTExJbnRDb21tb24uaDsgcGF0aCA9IGxsaW50L0xMSW50Q29tbW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAv
KiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHBhdGggPSBsbGludC9MTEludE9mZmxpbmVBc21D
b25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzcxNEJCQjE2OTAw
QkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHBhdGggPSBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0Njgw
QzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5oOyBwYXRoID0gbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RGF0YS5jcHA7IHBhdGggPSBsbGludC9MTEludERhdGEu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUy
NzIgLyogTExJbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50
RGF0YS5oOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFs
dWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMTE0QkJDNUY4MDBC
RkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFic3RyYWN0UEMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdFBDLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENDMTQ2QkU2MDIwMDA0NzJBOSAvKiBERkdCeXRl
Q29kZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0J5dGVDb2Rl
Q2FjaGUuaDsgcGF0aCA9IGRmZy9ERkdCeXRlQ29kZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xNTc5LDYgKzE2NTcsMTMgQEAKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNl
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LworCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlz
YSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRTBBNDg3OTNDMDA0ODAyNTUgLyogRnJhbWV3
b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTE2MzcsNiArMTcyMiw3IEBACiAJCQkJMTQxMjEx
MjAwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYwQTNFOEY5MDAw
QkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJNjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFEIC8qIHRl
c3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zm
c2V0c0V4dHJhY3RvciAqLywKIAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMTY2Nyw2ICsxNzUzLDcgQEAKIAkJCQlGNUMyOTBFNjAyODRG
OThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLywKIAkJCQk0NUUxMkQ4ODA2
QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYw
RjcgLyogY29uZmlnLmggKi8sCisJCQkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50
ICovLAogCQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENC
MTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FF
MDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8sCkBAIC0xNzA1LDYgKzE3OTIsMjggQEAKIAkJCXRhYldp
ZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZF
MjcyIC8qIGxsaW50ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgK
KwkJCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8s
CisJCQkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLywK
KwkJCQkwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovLAorCQkJ
CTBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovLAorCQkJCTBGNDY4
MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovLAorCQkJCTBGNDY4MENGMTRC
QkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLywKKwkJCQkwRjQ2ODBDNTE0QkJCMTY5MDBC
RkUyNzIgLyogTExJbnRDb21tb24uaCAqLywKKwkJCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIg
LyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi8sCisJCQkJMEY0NjgwQzcxNEJCQjE2OTAwQkZF
MjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovLAorCQkJCTBGNDY4MEM4MTRCQkIxNjkw
MEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi8sCisJCQkJMEY0NjgwOUQxNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8sCisJCQkJMEY0NjgwOUUxNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovLAorCQkJCTBGNDY4MDlGMTRCQTdGODIw
MEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovLAorCQkJCTBGNDY4MEEwMTRCQTdGODIwMEJG
RTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLywKKwkJCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIg
LyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gbGxpbnQ7
CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxNDEyMTEwMDBBNDg3NzI2MDA0
ODAyNTUgLyogdGVzdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0g
KApAQCAtMTczOSw2ICsxODQ4LDggQEAKIAkJMTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGpp
dCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY0Njgw
RDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovLAorCQkJCTBG
NDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8sCiAJCQkJ
MEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovLAogCQkJCTBG
NDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEZEODJF
MzcxNDFBQjE0MjAwMTc5Qzk0IC8qIENvbXBhY3RKSVRDb2RlTWFwLmggKi8sCkBAIC0yMTY2LDYg
KzIyNzcsOCBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYyMUMyNzkxNEJFNzI3
MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLywKKwkJCQkwRjIxQzI3QTE0
QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovLAogCQkJCTBGMTVGMTVEMTRC
N0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAz
RUY4MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlB
NjREIC8qIEFyZ0xpc3QuaCAqLywKQEAgLTI1MjUsNiArMjYzOCw4IEBACiAJCTk2OUEwNzhGMEVE
MUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29u
dmVudGlvbnMuaCAqLywKKwkJCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxs
TGlua0luZm8uaCAqLywKIAkJCQkwRjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtT
dGF0dXMuY3BwICovLAogCQkJCTBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0
YXR1cy5oICovLAogCQkJCTBGOTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVz
LmNwcCAqLywKQEAgLTMwNzUsNyArMzE5MCwxNiBAQAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5
RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCNDMxMkRCOEE4
MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1
RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExM
SW50Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIg
LyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDRDE0
QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5
cG9pbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyog
TExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0
RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTkxNEJDRjU2MjAwODg1
QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJC
MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDg0
LDcgKzMyMDgsMTEgQEAKIAkJCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2Fs
bExpbmtJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYg
LyogR2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I5MTRCQ0Y5
NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZv
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJp
dmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhl
Y3V0aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0QxNEJFNzI3QTAwQURD
NjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFD
MjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjdCMjk0QTE0QzNDRDI5MDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QzE0QzNDRDQzMDA3QzNEQjEgLyogREZH
Qnl0ZUNvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTAzLDYgKzMyMzEsMjQgQEAKIC8q
IEVuZCBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWE5hdGl2
ZVRhcmdldCBzZWN0aW9uICovCisJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTElu
dE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQli
dWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNF
eHRyYWN0b3IiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwOEIxNEJBN0U1RTAw
QkZFMjcyIC8qIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZy
YW1ld29ya3MgKi8sCisJCQkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAq
LywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgK
KwkJCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywK
KwkJCSk7CisJCQluYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdE5h
bWUgPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMEY0
NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJ
CXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CiAJCTE0
MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovID0gewogCQkJaXNhID0gUEJYTmF0
aXZlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MTIxMTM5MEE0ODc5ODQw
MDQ4MDI1NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAi
bWluaWRvbSIgKi87CkBAIC0zMjI5LDExICszMzc1LDI5IEBACiAJCQkJMTRCRDU5QkUwQTNFOEY5
MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJOTMyRjVCREEwODIyQTFDNzAwNzM2OTc1IC8q
IGpzYyAqLywKIAkJCQk2NTExMjJGNzE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywK
KwkJCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9y
ICovLAorCQkJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovLAog
CQkJKTsKIAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
U2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwQUExNEJBN0ZEOTAwQkZF
MjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxs
U2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlm
aWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL2xsaW50
L0xvd0xldmVsQXNzZW1ibGVyLmFzbSIsCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBEZXJp
dmVkIFNvdXJjZXMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoQlVJTFRfUFJPRFVDVFNf
RElSKS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oIiwKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4v
c2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9M
TEludE9mZnNldHMvXCJcblxuL3Vzci9iaW4vZW52IHJ1YnkgXCIke1NSQ1JPT1R9L29mZmxpbmVh
c20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYlwiIFwiJHtTUkNST09UfS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbVwiIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0
cy9MTEludERlc2lyZWRPZmZzZXRzLmhcIlxuIjsKKwkJfTsKIAkJMzcxM0YwMTQxNDI5MDUyNDAw
MzYzODdGIC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVz
ICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTMzMzksNyArMzUwMyw3IEBACiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlzaGVsbFBhdGggPSAvYmlu
L3NoOwotCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0v
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBcIiR7QlVJTFRfUFJPRFVD
VFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBc
IiR7U1JDUk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2
YVNjcmlwdENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJcblxubWFr
ZSAtLW5vLWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlXCIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNwdWBcbiI7CisJCQlzaGVsbFNjcmlw
dCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9kb2NzXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlXCJcblxuL2Jpbi9sbiAtc2ZoIFwiJHtTUkNST09UfVwiIEphdmFT
Y3JpcHRDb3JlXG5leHBvcnQgSmF2YVNjcmlwdENvcmU9XCJKYXZhU2NyaXB0Q29yZVwiXG5leHBv
cnQgQlVJTFRfUFJPRFVDVFNfRElSPVwiLi4vLi5cIlxuXG5tYWtlIC0tbm8tYnVpbHRpbi1ydWxl
cyAtZiBcIkphdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2VcIiAtaiBgL3Vzci9zYmlu
L3N5c2N0bCAtbiBody5uY3B1YFxuXG4vdXNyL2Jpbi9lbnYgcnVieSBKYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2FzbS5yYiBKYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbSAke0JVSUxUX1BST0RVQ1RTX0RJUn0vSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIExMSW50
QXNzZW1ibHkuaFxuIjsKIAkJfTsKIAkJOTMxOTU4NkIwOUQ5RjkxQTAwQTU2RkQ0IC8qIENoZWNr
IEZvciBHbG9iYWwgSW5pdGlhbGl6ZXJzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRC
dWlsZFBoYXNlOwpAQCAtMzM3NCw2ICszNTM4LDE0IEBACiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2Vj
dGlvbiAqLworCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFEMEE0ODc5M0Mw
MDQ4MDI1NSAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7
CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzYzMSw3ICszODAzLDE0IEBA
CiAJCQkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hl
Y2tlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyog
TExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJG
RTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwODMx
NEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxS
ZXR1cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVC
NEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QzE0
QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYw
QjgzQjAxNEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjBCODNCNDE0QkNGODYwMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUY2OUU4NkMzMTRDNkU1NTEwMDJDMkM2MiAvKiBOdW1iZXJPZkNv
cmVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzY1NCw2ICszODMzLDE2IEBACiAvKiBFbmQgUEJY
U291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRl
bmN5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0
ID0gMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi87CisJCQl0YXJn
ZXRQcm94eSA9IDBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJv
eHkgKi87CisJCX07CisJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBl
bmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9
IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87
CisJCQl0YXJnZXRQcm94eSA9IDBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi87CisJCX07CiAJCTE0MTIxNEJGMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJ
CXRhcmdldCA9IDE0MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovOwpAQCAtMzY4
Nyw2ICszODc2LDE0OCBAQAogLyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTBGNDY4MDk2MTRC
QTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMg
PSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlf
UEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5Owor
CQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJ
T05TID0gWUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQ
Uk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJp
dGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5POworCQkJ
CUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlH
Q0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VU
X01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQ
RSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURF
Ul9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQo
QlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNI
X1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43Owor
CQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VU
X05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9Q
QVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVS
X1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0Njgw
OTcxNEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VS
X1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJ
CQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9
ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7
CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04g
PSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RP
XzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9U
T1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJ
CUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRI
U1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNU
U19ESVIpL0xMSW50T2Zmc2V0cyQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJ
TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChU
QVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VB
UkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChI
RUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJ
CTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NF
QVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9C
SVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9O
X0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJE
ID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0ND
X1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19X
QVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlT
U0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0g
WUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NF
QVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlM
VF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFU
SFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJ
UFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4Owor
CQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUg
PSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0
aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0g
IiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsK
KwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlH
Q0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENF
UFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZt
LmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POwor
CQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FS
Tl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUg
PSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJ
CQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJ
CQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVO
VF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJ
CQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBp
Y3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFU
SFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUQxNEJB
N0ZEOTAwQkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNv
dXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODBBRTE0
QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZl
ZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2
ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9
ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJ
fTsKKwkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJP
RFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJv
ZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjExM0EwQTQ4Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovID0g
ewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewpA
QCAtMzkyOCw2ICs0MjU5LDI4IEBACiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlv
biAqLwogCiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMEY0Njgw
OUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0
aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovID0geworCQkJaXNhID0gWEND
b25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0Njgw
OTYxNEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MDk3MTRCQTdFNUUwMEJG
RTI3MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9m
aWxpbmcgKi8sCisJCQkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8s
CisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUMxNEJBN0ZE
OTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFy
Z2V0ICJMTEludCBPZmZzZXRzIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7
CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3
MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAq
LywKKwkJCQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBG
NDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1
bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFt
ZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi8gPSB7
CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5o
CShyZXZpc2lvbiAxMDYxNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xp
bmtCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2RlZmluZSBHTE9C
QUxfVEhVTktfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+
KC0xKSkKICNkZWZpbmUgUkVHRVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KC0yKSkKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+Cisj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Qnl0ZWNvZGVDb252ZW50aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgQnl0ZWNvZGVDb252ZW50aW9uc19oCisjZGVmaW5lIEJ5dGVjb2Rl
Q29udmVudGlvbnNfaAorCisvLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3Bl
cmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6
CisvLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRo
ZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJl
Z2lzdGVyRmlsZS5oLgorLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGlu
ZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBv
cmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgorLy8gICAgICAweDQwMDAwMDAw
LTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50
cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgorc3RhdGljIGNvbnN0
IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7CisKKyNlbmRpZiAv
LyBCeXRlY29kZUNvbnZlbnRpb25zX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDYxNDQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNywxNyArMjcsNDAgQEAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgog
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21w
dXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BB
UkFNKGJ5dGVjb2RlSW5kZXgpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0
ZWNvZGVJbmRleDsKKyAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaW5zdHJ1
Y3Rpb25bNF0udS5jYWxsTGlua0luZm87CisgICAgCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVz
KGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCksIGZhbHNlKTsKKyNlbHNlCisgICAg
cmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKKyNlbmRpZgorfQorCiBDYWxsTGlua1N0
YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ss
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxv
Y2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklUKSAm
JiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKAotICAg
ICAgICBwcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNl
ZW5DYWxsZWUuZ2V0KCksCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNl
KGJ5dGVjb2RlSW5kZXgpKTsKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mQ2FsbExp
bmtJbmZvcygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2Nr
LCBieXRlY29kZUluZGV4KTsKKyAgICAKKyAgICBpZiAocHJvZmlsZWRCbG9jay0+Y291bGRUYWtl
U2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCisgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygw
LCB0cnVlKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBwcm9maWxlZEJsb2NrLT5n
ZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CisgICAg
aWYgKCF0YXJnZXQpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxv
Y2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJn
ZXQsIGZhbHNlKTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsK
ICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rU3RhdHVzLmgJKHJldmlzaW9uIDEwNjE0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNSArNDcsMTcg
QEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKENv
ZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAgIGJvb2wgaXNTZXQo
KSBjb25zdCB7IHJldHVybiAhIW1fY2FsbFRhcmdldDsgfQorICAgIGJvb2wgaXNTZXQoKSBjb25z
dCB7IHJldHVybiAhIW1fY2FsbFRhcmdldCB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAg
Ci0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsVGFyZ2V0OyB9Cisg
ICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQogICAgIAogICAg
IGJvb2wgY291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvdWxkVGFrZVNsb3dQ
YXRoOyB9CiAgICAgCiAgICAgSlNGdW5jdGlvbiogY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJu
IG1fY2FsbFRhcmdldDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0
dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsK
KyAgICAKICAgICBKU0Z1bmN0aW9uKiBtX2NhbGxUYXJnZXQ7CiAgICAgYm9vbCBtX2NvdWxkVGFr
ZVNsb3dQYXRoOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMDYxNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRl
LmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTU5LDggKzYwLDYgQEAgbmFtZXNwYWNlIEpTQyB7
CiB1c2luZyBuYW1lc3BhY2UgREZHOwogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8
IEVOQUJMRShPUENPREVfU0FNUExJTkcpCi0KIHN0YXRpYyBVU3RyaW5nIGVzY2FwZVF1b3Rlcyhj
b25zdCBVU3RyaW5nJiBzdHIpCiB7CiAgICAgVVN0cmluZyByZXN1bHQgPSBzdHI7CkBAIC0zNTgs
MTAgKzM1NywxMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bj
b2RlTGVuZ3Roc1tleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMo
KVtpXS51Lm9wY29kZSldKQogICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7CiAKLSAgICBwcmlu
dGYoIiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7
ICVkIGNhbGxlZSByZWdpc3RlcihzKVxuXG4iLAorICAgIHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rp
b25zOyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVy
KHMpOyAlZCB2YXJpYWJsZShzKVxuXG4iLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBs
b25nPihpbnN0cnVjdGlvbkNvdW50KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
Zz4oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSksCi0gICAgICAg
IHRoaXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgICAgICB0
aGlzLCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX251bVZhcnMpOwog
CiAgICAgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4gPSBpbnN0cnVj
dGlvbnMoKS5iZWdpbigpOwogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IGluc3RydWN0aW9ucygpLmVuZCgpOwpAQCAtODk4LDYgKzg5NywxNCBAQCB2b2lkIENv
ZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5
SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6
IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0K
ICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQ
dXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMTI5MSw4ICsxMjk4LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAo
RXhlY1N0YXRlKiBleGVjLCBjbwogICAgIH0KIH0KIAotI2VuZGlmIC8vICFkZWZpbmVkKE5ERUJV
RykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFU
SVNUSUNTCiBzdGF0aWMgSGFzaFNldDxDb2RlQmxvY2sqPiBsaXZlQ29kZUJsb2NrU2V0OwogI2Vu
ZGlmCkBAIC0xNDU5LDYgKzE0NjQsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2Vk
QmxvY2tUYWcsCiB7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1QYXJhbWV0ZXJzKCkp
OwogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogICAg
IAogICAgIGlmIChvdGhlci5tX3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZO
ZWNlc3NhcnkoKTsKQEAgLTE1MDcsNiArMTUxMyw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNj
cmlwdEV4ZWN1dGFibGUqIG8KICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIAogICAgIG9wdGlt
aXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogCiAjaWYgRFVNUF9DT0RF
X0JMT0NLX1NUQVRJU1RJQ1MKICAgICBsaXZlQ29kZUJsb2NrU2V0LmFkZCh0aGlzKTsKQEAgLTE1
MjQsNyArMTUzMSwxMSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2lmIEVOQUJMRShWRVJC
T1NFX1ZBTFVFX1BST0ZJTEUpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNlbmRpZgotICAg
IAorCisjaWYgRU5BQkxFKExMSU5UKSAgICAKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2Fs
bHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNv
bWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5U
KQogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gV2UgbWF5IGJlIGRlc3Ryb3llZCBiZWZvcmUgYW55
IENvZGVCbG9ja3MgdGhhdCByZWZlciB0byB1cyBhcmUgZGVzdHJveWVkLgogICAgIC8vIENvbnNp
ZGVyIHRoYXQgdHdvIENvZGVCbG9ja3MgYmVjb21lIHVucmVhY2hhYmxlIGF0IHRoZSBzYW1lIHRp
bWUuIFRoZXJlCkBAIC0xNzM2LDggKzE3NDcsNTkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXpl
VW5jb25kaXRpb25hbGx5KAogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5s
aW5raW5nID0gZmFsc2U7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAg
ICAgCisjaWYgRU5BQkxFKExMSU5UKQorICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1f
Z2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXI7CisgICAgLy8gaW50ZXJwcmV0ZXItPmVuYWJsZWQoKSBy
ZXR1cm5zIHRydWUgaWYgdGhlIG9sZCBDKysgaW50ZXJwcmV0ZXIgaXMgZW5hYmxlZC4gSWYgdGhh
dCdzIGVuYWJsZWQKKyAgICAvLyB0aGVuIHdlJ3JlIG5vdCB1c2luZyBMTEludC4KKyAgICBpZiAo
IWludGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1f
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkg
eworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9u
cygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgc3dpdGNo
IChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpKSB7
CisgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkOgorICAgICAgICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1
cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkp
KQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVj
dGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0
aW9uWzVdLnUub3BlcmFuZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAgICAgIGlmIChIZWFw
Ojppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAg
ICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1
cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3Ry
dWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVh
cigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmNsZWFy
KCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5j
bGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlID0gaW50
ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBzaXpl
ID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVj
dGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgQVNT
RVJUKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkg
PT0gb3BfcmVzb2x2ZV9nbG9iYWwKKyAgICAgICAgICAgICAgICAgICB8fCBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMpOworICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvblszXS51LnN0cnVj
dHVyZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQo
KSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlv
blszXS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0u
dS5vcGVyYW5kID0gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmICht
X2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpICYmICFIZWFwOjppc01hcmtlZChtX2xs
aW50Q2FsbExpbmtJbmZvc1tpXS5jYWxsZWUuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgaWYg
KHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcg
TExJbnQgY2FsbCBmcm9tICVwLlxuIiwgdGhpcyk7CisgICAgICAgICAgICAgICAgbV9sbGludENh
bGxMaW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAo
ISFtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJr
ZWQobV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQorICAgICAg
ICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlLmNsZWFyKCk7
CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCiAjaWYgRU5BQkxF
KERGR19KSVQpCiAgICAgLy8gQ2hlY2sgaWYgd2UncmUgbm90IGxpdmUuIElmIHdlIGFyZSwgdGhl
biBqZXR0aXNvbi4KICAgICBpZiAoIShzaG91bGRJbW1lZGlhdGVseUFzc3VtZUxpdmVuZXNzRHVy
aW5nU2NhbigpIHx8IG1fZGZnRGF0YS0+bGl2ZW5lc3NIYXNCZWVuUHJvdmVkKSkgewpAQCAtMTg1
OCwxMCArMTkyMCwxMiBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVy
CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVjbHMuc2l6ZSgpOyArK2kp
CiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9uRGVjbHNbaV0pOwogI2lmIEVOQUJM
RShJTlRFUlBSRVRFUikKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICB2aXNpdFN0
cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbnNbaV1dKTsKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0
dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25z
W2ldXSk7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPmVuYWJsZWQoKSkgewor
ICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5z
aXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVz
KHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ld
XSk7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlv
bnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHZpc2l0U3RydWN0
dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25z
W2ldXSk7CisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTIwNzAsNiAr
MjEzNCwxMiBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogewogICAgIGlmICghIW1f
YWx0ZXJuYXRpdmUpCiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPnVubGlua0NhbGxzKCk7CisjaWYg
RU5BQkxFKExMSU5UKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sbGludENhbGxMaW5r
SW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ld
LmlzTGlua2VkKCkpCisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmso
KTsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoIShtX2NhbGxMaW5rSW5mb3Muc2l6ZSgpIHx8IG1f
bWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFt
X2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQpAQCAtMjA4NCwxMCArMjE1NCwzOSBAQCB2b2lkIENv
ZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogCiB2b2lkIENvZGVCbG9jazo6dW5saW5rSW5jb21pbmdD
YWxscygpCiB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIHdoaWxlIChtX2luY29taW5nTExJbnRD
YWxscy5iZWdpbigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQorICAgICAgICBtX2lu
Y29taW5nTExJbnRDYWxscy5iZWdpbigpLT51bmxpbmsoKTsKKyNlbmRpZgorICAgIGlmIChtX2lu
Y29taW5nQ2FsbHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAgICAgUmVwYXRjaEJ1ZmZl
ciByZXBhdGNoQnVmZmVyKHRoaXMpOwogICAgIHdoaWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4o
KSAhPSBtX2luY29taW5nQ2FsbHMuZW5kKCkpCiAgICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdp
bigpLT51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CiB9CisKK3Vuc2lnbmVk
IENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNz
UHRyIHJldHVybkFkZHJlc3MpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChyZXR1cm5B
ZGRyZXNzLnZhbHVlKCkgPj0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfYmVnaW4pCisgICAg
ICAgICYmIHJldHVybkFkZHJlc3MudmFsdWUoKSA8PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF9lbmQpKSB7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSk7CisgICAgICAgIEFT
U0VSVChleGVjLT5jb2RlQmxvY2soKSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6
OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOworICAgICAgICBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24gPSBleGVjLT5jdXJyZW50VlBDKCk7CisgICAgICAgIEFTU0VSVChpbnN0cnVjdGlv
bik7CisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldChpbnN0cnVjdGlvbik7CisgICAgfQor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisjZW5kaWYKKyAgICBpZiAoIW1fcmFyZURh
dGEpCisgICAgICAgIHJldHVybiAxOworICAgIFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0gbV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhW
ZWN0b3I7CisgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCisgICAgICAgIHJldHVybiAxOwor
ICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQs
IHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxs
SW5kaWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVl
KCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7Cit9CiAjZW5kaWYKIAogdm9pZCBDb2RlQmxvY2s6OmNsZWFy
RXZhbENhY2hlKCkKQEAgLTIxODMsMjQgKzIyODIsNDUgQEAgYm9vbCBGdW5jdGlvbkNvZGVCbG9j
azo6Y2FuQ29tcGlsZVdpdGhERgogCiB2b2lkIFByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKCkK
IHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAg
ICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFT
U0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVj
dXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2Jh
bERhdGEoKSk7CiB9CiAKIHZvaWQgRXZhbENvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFT
U0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChK
SVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMg
PT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25l
ckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0K
IAogdm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRK
SVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFj
ZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVj
dXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGVGb3IoKmdsb2JhbERhdGEoKSwgbV9pc0Nv
bnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKIH0KKwordm9pZCBQ
cm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEp
Cit7CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KTsKKyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUo
Z2xvYmFsRGF0YSk7Cit9CisKK3ZvaWQgRXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklU
Q29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQo
KSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRh
YmxlKCkpLT5qaXRDb21waWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEZ1bmN0aW9uQ29kZUJs
b2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNT
RVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NF
UlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlRm9yKGdsb2JhbERh
dGEsIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7Cit9
CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTIzMDMsNiArMjQyMywx
OCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsZXMoKQogfQogI2VuZGlmCiAKK3Zv
aWQgQ29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpCit7Cisj
aWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpICYmICFFTkFCTEUoTExJTlQpCisgICAgaWYgKEJ5
dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGlmICghIWFsdGVybmF0aXZlKCkpCisgICAgICAgIGRpc2NhcmRCeXRlY29kZSgpOworICAg
IGVsc2UKKyAgICAgICAgZGlzY2FyZEJ5dGVjb2RlTGF0ZXIoKTsKKyNlbmRpZgorfQorCiAjaWZu
ZGVmIE5ERUJVRwogYm9vbCBDb2RlQmxvY2s6OnVzZXNPcGNvZGUoT3Bjb2RlSUQgb3Bjb2RlSUQp
CiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShy
ZXZpc2lvbiAxMDYxNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJs
b2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpZm5kZWYgQ29kZUJsb2Nr
X2gKICNkZWZpbmUgQ29kZUJsb2NrX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMu
aCIKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJDYWxsUmV0dXJuT2Zmc2V0
VG9CeXRlY29kZU9mZnNldC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKQEAgLTUwLDYgKzUx
LDcgQEAKICNpbmNsdWRlICJKSVRXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9i
amVjdC5oIgogI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJ
bmZvLmgiCiAjaW5jbHVkZSAiTGluZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1
ZGUgIlByZWRpY3Rpb25UcmFja2VyLmgiCkBAIC02NSwxNiArNjcsMTEgQEAKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKIAotLy8gUmVnaXN0
ZXIgbnVtYmVycyB1c2VkIGluIGJ5dGVjb2RlIG9wZXJhdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbWVh
bmluZyBhY2NvcmRpbmcgdG8gdGhlaXIgcmFuZ2VzOgotLy8gICAgICAweDgwMDAwMDAwLTB4RkZG
RkZGRkYgIE5lZ2F0aXZlIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGVu
dHJpZXMgaW4gdGhlIGNhbGwgZnJhbWUsIHNlZSBSZWdpc3RlckZpbGUuaC4KLS8vICAgICAgMHgw
MDAwMDAwMC0weDNGRkZGRkZGICBGb3J3YXJkcyBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBw
b2ludGVyIGFyZSBsb2NhbCB2YXJzIGFuZCB0ZW1wb3JhcmllcyB3aXRoIHRoZSBmdW5jdGlvbidz
IGNhbGxmcmFtZS4KLS8vICAgICAgMHg0MDAwMDAwMC0weDdGRkZGRkZGICBQb3NpdGl2ZSBpbmRp
Y2VzIGZyb20gMHg0MDAwMDAwMCBzcGVjaWZ5IGVudHJpZXMgaW4gdGhlIGNvbnN0YW50IHBvb2wg
b24gdGhlIENvZGVCbG9jay4KLXN0YXRpYyBjb25zdCBpbnQgRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXggPSAweDQwMDAwMDAwOwotCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEV4ZWNT
dGF0ZTsKICAgICBjbGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBpbmxpbmUgaW50IHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3RlcihpbnQgYXJndW1lbnRzUmVnaXN0ZXIpIHsgcmV0dXJuIGFyZ3Vt
ZW50c1JlZ2lzdGVyIC0gMTsgfQogCkBAIC04Myw2ICs4MCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBVbmNvbmRpdGlvbmFsRmluYWxpemVyLCBwdWJs
aWMgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBDb3B5UGFyc2Vk
QmxvY2tUYWcgeyBDb3B5UGFyc2VkQmxvY2sgfTsKICAgICBwcm90ZWN0ZWQ6CkBAIC0xMjMsNyAr
MTIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB3aGlsZSAocmVzdWx0LT5hbHRl
cm5hdGl2ZSgpKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC0+YWx0ZXJuYXRpdmUo
KTsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3Vs
dC0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFT
U0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogI2VuZGlmCkBAIC0xMzQsMTEgKzEz
Miw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0
aWNzKCk7CiAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRV9PUENPREVfU0FNUExJTkcK
ICAgICAgICAgdm9pZCBkdW1wKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50
U3RydWN0dXJlcyhjb25zdCBJbnN0cnVjdGlvbiopIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50
U3RydWN0dXJlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJh
bmQpIGNvbnN0OwotI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7
IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogCkBAIC0xOTQsMTUgKzE5MCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuICooYmluYXJ5U2VhcmNoPE1ldGhvZENhbGxMaW5r
SW5mbywgdW5zaWduZWQsIGdldE1ldGhvZENhbGxMaW5rSW5mb0J5dGVjb2RlSW5kZXg+KG1fbWV0
aG9kQ2FsbExpbmtJbmZvcy5iZWdpbigpLCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpLCBi
eXRlY29kZUluZGV4KSk7CiAgICAgICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCi0gICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghbV9yYXJlRGF0YSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAg
ICAgIFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2Vz
ID0gbV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7Ci0gICAgICAgICAgICBpZiAo
IWNhbGxJbmRpY2VzLnNpemUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAg
ICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQs
IHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxs
SW5kaWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVl
KCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7Ci0gICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQoRXhlY1N0YXRlKiwgUmV0dXJuQWRkcmVzc1B0cik7CiAKICAgICAgICAgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXRGb3JDYWxsQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAg
ewpAQCAtMjIzLDExICsyMTEsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAg
ICAgICAgIG1faW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nKTsKICAgICAgICAgfQorI2lmIEVO
QUJMRShMTElOVCkKKyAgICAgICAgdm9pZCBsaW5rSW5jb21pbmdDYWxsKExMSW50Q2FsbExpbmtJ
bmZvKiBpbmNvbWluZykKKyAgICAgICAgeworICAgICAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2Fs
bHMucHVzaChpbmNvbWluZyk7CisgICAgICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAg
ICAgICAgIAogICAgICAgICB2b2lkIHVubGlua0luY29taW5nQ2FsbHMoKTsKLSNlbmRpZgorI2Vu
ZGlmIC8vIEVOQUJMRShKSVQpCiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoREZH
X0pJVCkgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICB2b2lkIHNldEpJVENvZGVNYXAoUGFzc093
blB0cjxDb21wYWN0SklUQ29kZU1hcD4gaml0Q29kZU1hcCkKICAgICAgICAgewogICAgICAgICAg
ICAgbV9qaXRDb2RlTWFwID0gaml0Q29kZU1hcDsKQEAgLTIzNiw3ICsyMzAsOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG1faml0Q29kZU1hcC5nZXQo
KTsKICAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIAorI2lmIEVOQUJMRShERkdfSklUKQogICAg
ICAgICB2b2lkIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghIW1fZGZnRGF0YSkKQEAgLTMzNSwxMiArMzMxLDExIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAg
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJlc3MpCiAgICAg
ICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXR1cm5BZGRyZXNzID49IGluc3RydWN0aW9ucygp
LmJlZ2luKCkgJiYgcmV0dXJuQWRkcmVzcyA8IGluc3RydWN0aW9ucygpLmVuZCgpKTsKICAgICAg
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnN0cnVjdGlvbio+KHJldHVybkFkZHJlc3MpIC0g
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICAgICAgfQotI2VuZGlmCiAKICAgICAgICAgdm9p
ZCBzZXRJc051bWVyaWNDb21wYXJlRnVuY3Rpb24oYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rp
b24pIHsgbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb24gPSBpc051bWVyaWNDb21wYXJlRnVuY3Rp
b247IH0KICAgICAgICAgYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24oKSB7IHJldHVybiBt
X2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQpAQCAtMzU0LDE3ICszNDksOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgbV9zaG91bGREaXNjYXJkQnl0ZWNvZGUg
PSB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIHZvaWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5n
T3Bwb3J0dW5pdHkoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoISFhbHRlcm5hdGl2ZSgp
KQotICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZSgpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZUxhdGVyKCk7Ci0gICAgICAgIH0KKyAgICAg
ICAgdm9pZCBoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAgICAgICAK
LSNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGJvb2wgdXNlc09wY29kZShPcGNvZGVJRCk7Ci0jZW5k
aWYKIAogICAgICAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50KCkgeyByZXR1cm4gbV9pbnN0
cnVjdGlvbkNvdW50OyB9CiAgICAgICAgIHZvaWQgc2V0SW5zdHJ1Y3Rpb25Db3VudCh1bnNpZ25l
ZCBpbnN0cnVjdGlvbkNvdW50KSB7IG1faW5zdHJ1Y3Rpb25Db3VudCA9IGluc3RydWN0aW9uQ291
bnQ7IH0KQEAgLTM4NywxNyArMzc0LDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeGVj
dXRhYmxlTWVtb3J5SGFuZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgeyByZXR1cm4gZ2V0SklUQ29k
ZSgpLmdldEV4ZWN1dGFibGVNZW1vcnkoKTsgfQogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBj
b21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKikgPSAwOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKSA9IDA7CisgICAgICAgIGJvb2wgaml0Q29tcGlsZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChnZXRK
SVRUeXBlKCkgIT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykgeworICAgICAgICAgICAgICAg
IEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGppdENvbXBp
bGVJbXBsKGdsb2JhbERhdGEpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0K
ICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgPSAwOwogICAgICAgICB2
aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKSA9IDA7CiAgICAgICAgIGJvb2wgaGFzT3B0
aW1pemVkUmVwbGFjZW1lbnQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklU
VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRD
b2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIGJvb2wgcmVz
dWx0ID0gcmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID4gZ2V0SklUVHlwZSgpOwogI2lmICFB
U1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAg
QVNTRVJUKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwog
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCkt
PmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUo
KSkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpID09IHRoaXMpOwogICAg
ICAgICAgICAgfQogI2VuZGlmCkBAIC00NTYsMTggKzQ1MiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICB2b2lkIGNsZWFyRXZhbENhY2hlKCk7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVU
RVIpCiAgICAgICAgIHZvaWQgYWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbih1bnNpZ25lZCBw
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1f
Z2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CisgICAgICAg
ICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbih1bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAg
ICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbik7CisgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGds
b2JhbFJlc29sdmVJbnN0cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBoYXNHbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb25BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBhZGRM
TEludENhbGxMaW5rSW5mbygpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlu
a0luZm9zLmFwcGVuZChMTEludENhbGxMaW5rSW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiAm
bV9sbGludENhbGxMaW5rSW5mb3MubGFzdCgpOworICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFC
TEUoSklUKQogICAgICAgICB2b2lkIHNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKHNpemVf
dCBzaXplKSB7IG1fc3RydWN0dXJlU3R1YkluZm9zLmdyb3coc2l6ZSk7IH0KQEAgLTQ3Niw4ICs0
NzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJ
bmZvKHVuc2lnbmVkIGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAg
ICAgICAgaWYgKG1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9n
bG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbikpOworICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEds
b2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOwogICAgICAgICB9CiAg
ICAgICAgIEdsb2JhbFJlc29sdmVJbmZvJiBnbG9iYWxSZXNvbHZlSW5mbyhpbnQgaW5kZXgpIHsg
cmV0dXJuIG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2luZGV4XTsgfQogICAgICAgICBib29sIGhhc0ds
b2JhbFJlc29sdmVJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7
CkBAIC00ODgsNiArNDg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBhZGRN
ZXRob2RDYWxsTGlua0luZm9zKHVuc2lnbmVkIG4pIHsgQVNTRVJUKG1fZ2xvYmFsRGF0YS0+Y2Fu
VXNlSklUKCkpOyBtX21ldGhvZENhbGxMaW5rSW5mb3MuZ3JvdyhuKTsgfQogICAgICAgICBNZXRo
b2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGxMaW5rSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJuIG1f
bWV0aG9kQ2FsbExpbmtJbmZvc1tpbmRleF07IH0KKyAgICAgICAgc2l6ZV90IG51bWJlck9mTWV0
aG9kQ2FsbExpbmtJbmZvcygpIHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCk7
IH0KICNlbmRpZgogICAgICAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC01Mjgs
NiArNTI3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJvZmlsZSA9PSByZXN1
bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQorICAgICAgICBQcmVk
aWN0ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChpbnQgYnl0
ZWNvZGVPZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZVByb2ZpbGVG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bigpOworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCB0b3RhbE51bWJlck9m
VmFsdWVQcm9maWxlcygpCiAgICAgICAgIHsKQEAgLTU1NCwxMiArNTU3LDE2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTbG93Q2FzZShpbnQg
Ynl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJl
Q2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRl
Y29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRp
b25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rh
a2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBj
b3VsZFRha2VTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAg
IHJldHVybiB2YWx1ZSA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCAm
JiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBP
cHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQpAQCAtNTc4LDEy
ICs1ODUsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2Vs
eVRvVGFrZVNwZWNpYWxGYXN0Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291
bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gc3BlY2lhbEZhc3RDYXNlQ291bnQg
Pj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nh
c3Q8ZG91YmxlPihzcGVjaWFsRmFzdENhc2VDb3VudCkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQg
Pj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKGludCBieXRl
Y29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNl
UHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1
bnNpZ25lZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFs
RmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0g
c2xvd0Nhc2VDb3VudCAtIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNTkyLDYgKzYwMyw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VBbnlT
bG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgh
bnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAg
dW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1
bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgKyBzcGVjaWFsRmFzdENhc2VDb3VudDsKQEAg
LTY4OSw3ICs3MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wg
YWRkRnJlcXVlbnRFeGl0U2l0ZShjb25zdCBERkc6OkZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFz
ZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdl
dEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIG1fZXhpdFByb2ZpbGUuYWRkKHNpdGUp
OwogICAgICAgICB9CiAKQEAgLTc5NCw2ICs4MDcsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgY29weVBvc3RQYXJzZURhdGFGcm9tKENvZGVCbG9jayogYWx0ZXJuYXRpdmUpOwog
ICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbUFsdGVybmF0aXZlKCk7CiAgICAgICAg
IAorICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gSklUdGluZyBraWNr
cyBpbiwgaW4gYSBtaXhlZCBtb2RlCisgICAgICAgIC8vIGV4ZWN1dGlvbiB3b3JsZC4KKyAgICAg
ICAgCisgICAgICAgIHZvaWQgZG9udEpJVEFueXRpbWVTb29uKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2
b2lkIGppdEFmdGVyV2FybVVwKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1
dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJt
VXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0U29vbigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlu
dDMyX3QgbGxpbnRFeGVjdXRlQ291bnRlcigpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAg
ICAgIC8vIEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiB0aWVyZWQgY29tcGlsYXRpb24g
a2lja3MgaW4uIFRoaXMKICAgICAgICAgLy8gY29udHJvbHMgYm90aCB3aGVuIHRoZSBvcHRpbWl6
aW5nIGNvbXBpbGVyIGlzIGludm9rZWQgYW5kIHdoZW4gT1NSCiAgICAgICAgIC8vIGVudHJ5IGhh
cHBlbnMuIFR3byB0cmlnZ2VycyBleGlzdDogdGhlIGxvb3AgdHJpZ2dlciBhbmQgdGhlIHJldHVy
bgpAQCAtOTg2LDYgKzEwMjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3No
b3VsZERpc2NhcmRCeXRlY29kZTsKIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB2
b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCk7CiAgICAgICAgIApAQCAtOTk4LDcgKzEwMzUs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCB0YWxseUZyZXF1ZW50RXhpdFNpdGVz
KCkgeyB9CiAjZW5kaWYKICAgICAgICAgCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUo
T1BDT0RFX1NBTVBMSU5HKQogICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKiwgY29uc3QgVmVj
dG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImIGJlZ2luLCBWZWN0b3I8SW5zdHJ1Y3Rp
b24+Ojpjb25zdF9pdGVyYXRvciYpIGNvbnN0OwogCiAgICAgICAgIENTdHJpbmcgcmVnaXN0ZXJO
YW1lKEV4ZWNTdGF0ZSosIGludCByKSBjb25zdDsKQEAgLTEwMDgsNyArMTA0NCw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBs
b2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFy
KiBvcCkgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRDYWxsT3AoRXhlY1N0YXRlKiwgaW50IGxv
Y2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIq
IG9wKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFB1dEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQg
bG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hh
ciogb3ApIGNvbnN0OwotI2VuZGlmCiAgICAgICAgIHZvaWQgdmlzaXRTdHJ1Y3R1cmVzKFNsb3RW
aXNpdG9yJiwgSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3Q7CiAgICAgICAgIAogI2lmIEVOQUJMRShE
RkdfSklUKQpAQCAtMTA2OSw5ICsxMTA0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBS
ZWZQdHI8U291cmNlUHJvdmlkZXI+IG1fc291cmNlOwogICAgICAgICB1bnNpZ25lZCBtX3NvdXJj
ZU9mZnNldDsKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgVmVjdG9yPHVuc2ln
bmVkPiBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zOwogICAgICAgICBWZWN0b3I8dW5zaWdu
ZWQ+IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uczsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAg
ICAgIFNlZ21lbnRlZFZlY3RvcjxMTEludENhbGxMaW5rSW5mbywgOD4gbV9sbGludENhbGxMaW5r
SW5mb3M7CisgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxMTEludENhbGxMaW5rSW5mbywgQmFz
aWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0xMSW50Q2Fs
bHM7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBWZWN0b3I8U3RydWN0dXJlU3R1
YkluZm8+IG1fc3RydWN0dXJlU3R1YkluZm9zOwpAQCAtMTA4Miw5ICsxMTE5LDEwIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlV2l0aEFy
aXR5Q2hlY2s7CiAgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxDYWxsTGlua0luZm8sIEJhc2lj
UmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5nQ2FsbHM7CiAjZW5kaWYK
LSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5U
KQogICAgICAgICBPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IG1faml0Q29kZU1hcDsKLSAgICAg
ICAgCisjZW5kaWYKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgc3RydWN0IFdlYWtSZWZl
cmVuY2VUcmFuc2l0aW9uIHsKICAgICAgICAgICAgIFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uKCkg
eyB9CiAgICAgICAgICAgICAKQEAgLTExNDcsMTIgKzExODUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgT3duUHRyPENvZGVCbG9jaz4gbV9hbHRlcm5hdGl2ZTsKICAgICAgICAgCisg
ICAgICAgIGludDMyX3QgbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICAKICAgICAgICAg
aW50MzJfdCBtX2ppdEV4ZWN1dGVDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0
aXZlU3VjY2Vzc0NvdW50ZXI7CiAgICAgICAgIHVpbnQzMl90IG1fc3BlY3VsYXRpdmVGYWlsQ291
bnRlcjsKICAgICAgICAgdWludDhfdCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcjsKICAgICAg
ICAgdWludDhfdCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwotCisgICAgICAgIAogICAg
ICAgICBzdHJ1Y3QgUmFyZURhdGEgewogICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICAgICAgcHVibGljOgpAQCAtMTIyNSw2ICsxMjY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1p
emVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBq
ZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxE
YXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtMTI1OSw2ICsx
MzAwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFs
IEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQg
aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2Nr
KiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkco
KTsKICNlbmRpZgpAQCAtMTI5Niw2ICsxMzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJv
dGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNT
dGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigp
OworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAg
ICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFs
IGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTA2MTQ0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNywyMCArMjcsNDkgQEAKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVz
LmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJl
dGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6
OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmls
ZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworICAgIFVOVVNFRF9Q
QVJBTShpZGVudCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEluc3RydWN0aW9uKiBpbnN0cnVj
dGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUlu
ZGV4OworICAgIAorICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9t
ZXRob2RfY2hlY2spCisgICAgICAgIGluc3RydWN0aW9uKys7CisKKyAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOworICAgIGlmICghc3Ry
dWN0dXJlKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1
Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0g
c3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAg
IGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5v
SW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOworICAgIAorICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZURpcmVjdCwgU3RydWN0dXJlU2V0KHN0cnVjdHVy
ZSksIG9mZnNldCwgZmFsc2UpOworI2Vsc2UKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0lu
Zm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyNlbmRpZgorfQor
CiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9m
aWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKIHsK
ICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVj
b2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYg
RU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZT
dHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJv
ZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAgIC8vIEZpcnN0IGNo
ZWNrIGlmIGl0IG1ha2VzIGVpdGhlciBjYWxscywgaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJl
IHN1cGVyIGNhcmVmdWwsIG9yCiAgICAgLy8gaWYgaXQncyBub3Qgc2V0IGF0IGFsbCwgaW4gd2hp
Y2ggY2FzZSB3ZSBwdW50LgogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2Zp
bGVkQmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1YkluZm8u
c2VlbikKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0
dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJv
ZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgIAogICAgIFBvbHltb3JwaGlj
QWNjZXNzU3RydWN0dXJlTGlzdCogbGlzdDsKICAgICBpbnQgbGlzdFNpemU7CkBAIC02MCwxOCAr
ODksMTkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIH0K
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKICAgICAgICAgaWYgKCFs
aXN0LT5saXN0W2ldLmlzRGlyZWN0KQotICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMo
TWFrZXNDYWxscywgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgICAgIHJldHVy
biBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1
ZSk7CiAgICAgfQogICAgIAogICAgIC8vIE5leHQgY2hlY2sgaWYgaXQgdGFrZXMgc2xvdyBjYXNl
LCBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUga2luZCBvZiBjYXJlZnVsLgogICAgIGlmIChw
cm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKLSAgICAg
ICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgU3RydWN0dXJlU2V0KCksIG5v
dEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgU3Ry
dWN0dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsKICAgICAKICAgICAvLyBGaW5hbGx5IGZpZ3Vy
ZSBvdXQgaWYgd2UgY2FuIGRlcml2ZSBhbiBhY2Nlc3Mgc3RyYXRlZ3kuCiAgICAgR2V0QnlJZFN0
YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fd2FzU2VlbkluSklUID0gdHJ1ZTsKICAgICBzd2l0
Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIGFjY2Vzc191bnNldDoKLSAgICAg
ICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5v
dEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywg
Ynl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlf
aWRfc2VsZjogewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZvLnUuZ2V0
QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKQEAgLTEzMCw3ICsxNjAsNyBAQCBH
ZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgCiAgICAgcmV0dXJu
IHJlc3VsdDsKICNlbHNlIC8vIEVOQUJMRShKSVQpCi0gICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMo
Tm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICByZXR1cm4gR2V0
QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNl
KTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEwNjE0NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5LDEwICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAgICBH
ZXRCeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNl
dCwgc2l6ZV90IG9mZnNldCkKKyAgICBHZXRCeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBT
dHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6ZV90IG9mZnNldCwgYm9vbCB3YXNTZWVuSW5K
SVQpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX3N0cnVjdHVyZVNldChz
dHJ1Y3R1cmVTZXQpCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICAgICAsIG1fd2Fz
U2VlbkluSklUKHdhc1NlZW5JbkpJVCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoc3RhdGUgPT0g
U2ltcGxlRGlyZWN0KSA9PSAob2Zmc2V0ICE9IG5vdEZvdW5kKSk7CiAgICAgfQpAQCAtNzAsMTAg
KzcxLDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9CiAgICAgc2l6ZV90IG9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCisgICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBj
b25zdCB7IHJldHVybiBtX3dhc1NlZW5JbkpJVDsgfQorICAgIAogcHJpdmF0ZToKKyAgICBzdGF0
aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAg
IFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKICAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAg
Ym9vbCBtX3dhc1NlZW5JbkpJVDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHJldmlzaW9uIDEw
NjE0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IEpTQ2VsbDsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47
CisgICAgc3RydWN0IExMSW50Q2FsbExpbmtJbmZvOwogICAgIHN0cnVjdCBWYWx1ZVByb2ZpbGU7
CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTQ2LDYgKzE0NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICNlbmRpZgogCiAgICAgc3RydWN0IEluc3RydWN0aW9uIHsKKyAgICAgICAgSW5zdHJ1Y3Rpb24o
KQorICAgICAgICB7CisgICAgICAgICAgICB1LmpzQ2VsbC5jbGVhcigpOworICAgICAgICB9Cisg
ICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAj
aWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQpAQCAtMTgyLDYgKzE4OCw4IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEluc3RydWN0aW9uKFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jIGdldHRlckZ1bmMpIHsgdS5nZXR0ZXJGdW5jID0gZ2V0dGVyRnVuYzsgfQogICAg
ICAgICAKKyAgICAgICAgSW5zdHJ1Y3Rpb24oTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5m
bykgeyB1LmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsgfQorICAgICAgICAKICAgICAgICAg
SW5zdHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBwcm9maWxlKSB7IHUucHJvZmlsZSA9IHByb2ZpbGU7
IH0KIAogICAgICAgICB1bmlvbiB7CkBAIC0xOTEsNyArMTk5LDkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBzdHJ1Y3R1cmVD
aGFpbjsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8SlNDZWxsPiBqc0NlbGw7CiAgICAg
ICAgICAgICBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jOworICAgICAgICAg
ICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbzsKICAgICAgICAgICAgIFZhbHVlUHJv
ZmlsZSogcHJvZmlsZTsKKyAgICAgICAgICAgIHZvaWQqIHBvaW50ZXI7CiAgICAgICAgIH0gdTsK
ICAgICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9MTEludENhbGxMaW5rSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBMTEludENhbGxMaW5rSW5mb19oCisjZGVmaW5lIExMSW50Q2FsbExp
bmtJbmZvX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CisKK25h
bWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK3N0cnVjdCBMTEludENhbGxM
aW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4g
eworICAgIExMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAgfQorICAgIAorICAgIH5MTElu
dENhbGxMaW5rSW5mbygpCisgICAgeworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAg
ICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4g
Y2FsbGVlOyB9CisgICAgCisgICAgdm9pZCB1bmxpbmsoKQorICAgIHsKKyAgICAgICAgY2FsbGVl
LmNsZWFyKCk7CisgICAgICAgIG1hY2hpbmVDb2RlVGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyKCk7CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAgICAgcmVtb3ZlKCk7Cisg
ICAgfQorICAgIAorICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxsZWU7CisgICAgV3Jp
dGVCYXJyaWVyPEpTRnVuY3Rpb24+IGxhc3RTZWVuQ2FsbGVlOworICAgIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBtYWNoaW5lQ29kZVRhcmdldDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gTExJbnRDYWxsTGlua0luZm9faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAJKHJldmlz
aW9uIDEwNjE0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxs
TGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDExIEBAIE1ldGhvZENh
bGxMaW5rU3RhdHVzIE1ldGhvZENhbGxMaW5rU3RhdHUKICAgICBVTlVTRURfUEFSQU0ocHJvZmls
ZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lmIEVOQUJMRShK
SVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAvLyBOT1RFOiBUaGlzIGRvZXMgbm90
IGhhdmUgYW4gTExJbnQgZmFsbC1iYWNrIGJlY2F1c2UgTExJbnQgZG9lcyBub3QgZG8gYW55IG1l
dGhvZAorICAgIC8vIGNhbGwgbGluayBjYWNoaW5nLgorICAgIGlmICghcHJvZmlsZWRCbG9jay0+
bnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKCkpCisgICAgICAgIHJldHVybiBNZXRob2RDYWxs
TGlua1N0YXR1cygpOworICAgIAogICAgIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9kQ2FsbCA9
IHByb2ZpbGVkQmxvY2stPmdldE1ldGhvZENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KTsKICAg
ICAKICAgICBpZiAoIW1ldGhvZENhbGwuc2VlbiB8fCAhbWV0aG9kQ2FsbC5jYWNoZWRTdHJ1Y3R1
cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lv
biAxMDYxNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
bWFjcm8ob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0
X2J5X2lkLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uLCA5KSBc
CisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwgOSkgXAorICAg
ICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwKICAgICAgICAg
bWFjcm8ob3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5
X2lkX2dlbmVyaWMsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBcCkBAIC0y
MDIsNiArMjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgZW51bSB7IEZP
Ul9FQUNIX09QQ09ERV9JRChPUENPREVfSURfRU5VTSkgfSBPcGNvZGVJRDsKICAgICAjdW5kZWYg
T1BDT0RFX0lEX0VOVU0KIAorICAgIGNvbnN0IGludCBtYXhPcGNvZGVMZW5ndGggPSA5OwogICAg
IGNvbnN0IGludCBudW1PcGNvZGVJRHMgPSBvcF9lbmQgKyAxOwogCiAgICAgI2RlZmluZSBPUENP
REVfSURfTEVOR1RIUyhpZCwgbGVuZ3RoKSBjb25zdCBpbnQgaWQjI19sZW5ndGggPSBsZW5ndGg7
CkBAIC0yMTgsNyArMjIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZPUl9FQUNIX09Q
Q09ERV9JRChWRVJJRllfT1BDT0RFX0lEKTsKICAgICAjdW5kZWYgVkVSSUZZX09QQ09ERV9JRAog
Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBV
VEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICNpZiBDT01QSUxFUihSVkNU
KSB8fCBDT01QSUxFUihJTlRFTCkKICAgICB0eXBlZGVmIHZvaWQqIE9wY29kZTsKICNlbHNlCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMu
Y3BwCShyZXZpc2lvbiAxMDYxNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDI3ICsyNyw2OSBAQAogI2lu
Y2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1
ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNs
dWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorUHV0QnlJZFN0YXR1
cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9j
aywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgVU5V
U0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4
KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpICsgYnl0ZWNvZGVJbmRleDsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1
Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUpCisgICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsK
KyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5
X2lkKSB7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRC
bG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gbm90Rm91
bmQpCisgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAw
LCAwLCBub3RGb3VuZCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhT
aW1wbGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9mZnNldCk7CisgICAgfQorICAgIAorICAg
IEFTU0VSVChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9kaXJlY3QKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0g
bGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAKKyAgICBTdHJ1Y3R1
cmUqIG5ld1N0cnVjdHVyZSA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpOworICAg
IFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IGluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4u
Z2V0KCk7CisgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7CisgICAgQVNTRVJUKGNoYWluKTsKKyAg
ICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2st
Pmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAg
ICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5k
KTsKKyAgICAKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVUcmFuc2l0aW9uLCBzdHJ1
Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY2hhaW4sIG9mZnNldCk7CisjZWxzZQorICAgIHJldHVybiBQ
dXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyNlbmRpZgor
fQorCiBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkK
IHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5
dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5BQkxFKEpJVCkg
JiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVy
T2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQo
cHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAgIGlmIChwcm9m
aWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKICAgICAgICAg
cmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOwog
ICAgIAogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVkQmxvY2stPmdl
dFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1YkluZm8uc2VlbikKLSAgICAg
ICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQp
OworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29k
ZUluZGV4LCBpZGVudCk7CiAgICAgCiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7
CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5v
SW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVG
cm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAK
ICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTogewogICAgICAgICBzaXplX3Qgb2Zm
c2V0ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQo
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVz
LmgJKHJldmlzaW9uIDEwNjE0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Q
dXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDggQEAgcHVibGljOgog
ICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAogcHJp
dmF0ZToKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9j
ayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKICAgICBTdGF0
ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJl
KiBtX25ld1N0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGls
ZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMDYxNDQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkJhdGNoZWRU
cmFuc2l0aW9uT3B0aW1pemVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1
ZGUgIlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
VVN0cmluZy5oIgpAQCAtMTE2LDI2ICsxMTcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZXhw
ZWN0ZWQgYnkgdGhlIGNhbGxlZS4KICovCiAKLSNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgYm9vbCBz
X2R1bXBzR2VuZXJhdGVkQ29kZSA9IGZhbHNlOwotI2VuZGlmCiAKIHZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZShib29sIGR1bXBzR2VuZXJhdGVkQ29kZSkKIHsK
LSNpZm5kZWYgTkRFQlVHCiAgICAgc19kdW1wc0dlbmVyYXRlZENvZGUgPSBkdW1wc0dlbmVyYXRl
ZENvZGU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkdW1wc0dlbmVyYXRlZENvZGUpOwotI2Vu
ZGlmCiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpCiB7
Ci0jaWZuZGVmIE5ERUJVRwogICAgIHJldHVybiBzX2R1bXBzR2VuZXJhdGVkQ29kZTsKLSNlbHNl
Ci0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAKIEpTT2JqZWN0KiBCeXRlY29kZUdlbmVy
YXRvcjo6Z2VuZXJhdGUoKQpAQCAtMTQ4LDEwICsxMzksOCBAQCBKU09iamVjdCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRlKCkKIAogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVjdGlvbkNv
dW50KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogCi0jaWZuZGVmIE5ERUJV
RwogICAgIGlmIChzX2R1bXBzR2VuZXJhdGVkQ29kZSkKICAgICAgICAgbV9jb2RlQmxvY2stPmR1
bXAobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7Ci0jZW5kaWYKIAog
ICAgIGlmICgobV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNvZGUgJiYgIW1fY29kZUJsb2NrLT5uZWVk
c0Z1bGxTY29wZUNoYWluKCkgJiYgIW1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpIHx8IG1f
Y29kZVR5cGUgPT0gRXZhbENvZGUpCiAgICAgICAgIHN5bWJvbFRhYmxlKCkuY2xlYXIoKTsKQEAg
LTEyNzYsOSArMTI2NSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVz
b2wKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2
ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBS
RVRFUikKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihp
bnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJv
ZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShyZXF1aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNv
bHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDQwLDkgKzE0MjcsNyBAQCBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBt
X2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
ICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xv
YmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAg
ICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5h
bWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFs
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDkwLDkgKzE0
NzUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5B
QkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2Nv
ZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUo
KSk7Ci0jZW5kaWYKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNv
ZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9w
X3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5k
ZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7
CkBAIC0xNTExLDkgKzE0OTQsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TWV0aG9k
Q2hlY2soCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJZChSZWdp
c3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
KQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAg
ICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2J5X2lk
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKQEAgLTE1MzksOSAr
MTUyMCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXIKIAogUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2Us
IGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBF
TkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5z
dHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1pdE9wY29k
ZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgp
KTsKQEAgLTE1NTcsOSArMTUzNiw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHV0QnkKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRC
eUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3Rl
cklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2st
PmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNl
bmRpZgogICAgIAogICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBAIC0xODQ4LDcgKzE4MjUsMTEgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKAogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChj
YWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkp
OyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFs
dWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3Vs
dCk7CkBAIC0xOTUyLDcgKzE5MzMsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDb25zdAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8g
ZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lm
IEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFk
ZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAh
PSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1p
dFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0yMjEzLDcgKzIxOTgsMTEg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaAogewogICAgIG1fdXNl
c0V4Y2VwdGlvbnMgPSB0cnVlOwogI2lmIEVOQUJMRShKSVQpCisjaWYgRU5BQkxFKExMSU5UKQor
ICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwg
MCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNj
b3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29w
X2NhdGNoKSkgfTsKKyNlbHNlCiAgICAgSGFuZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQo
MCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNT
Y29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0aW9uTGFiZWwoKSB9OworI2Vu
ZGlmCiAjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBl
bmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0
aCArIG1fYmFzZVNjb3BlRGVwdGggfTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEwNjE0NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02MDQsOSArNjA0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIFVOVVNF
RF9QQVJBTShub2RlSW5kZXgpOwogICAgICAgICAKLSAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9m
aWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsKLSAgICAgICAgQVNTRVJUKHByb2ZpbGUpOwot
ICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLT5jb21wdXRlVXBkYXRl
ZFByZWRpY3Rpb24oKTsKKyAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gbV9pbmxp
bmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NF
KQogICAgICAgICBwcmludGYoIkR5bmFtaWMgW0AldSwgYmMjJXVdIHByZWRpY3Rpb246ICVzXG4i
LCBub2RlSW5kZXgsIGJ5dGVjb2RlSW5kZXgsIHByZWRpY3Rpb25Ub1N0cmluZyhwcmVkaWN0aW9u
KSk7CiAjZW5kaWYKQEAgLTEwNDEsNiArMTAzOSw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6Omhh
bmRsZUlubGluaW5nKGJvb2wKICAgICAKICAgICAvLyBJZiB3ZSBnZXQgaGVyZSB0aGVuIGl0IGxv
b2tzIGxpa2Ugd2Ugc2hvdWxkIGRlZmluaXRlbHkgaW5saW5lIHRoaXMgY29kZS4gUHJvY2VlZAog
ICAgIC8vIHdpdGggcGFyc2luZyB0aGUgY29kZSB0byBnZXQgYnl0ZWNvZGUsIHNvIHRoYXQgd2Ug
Y2FuIHRoZW4gcGFyc2UgdGhlIGJ5dGVjb2RlLgorICAgIC8vIE5vdGUgdGhhdCBpZiBMTEludCBp
cyBlbmFibGVkLCB0aGUgYnl0ZWNvZGUgd2lsbCBhbHdheXMgYmUgYXZhaWxhYmxlLiBBbHNvIG5v
dGUKKyAgICAvLyB0aGF0IGlmIExMSW50IGlzIGVuYWJsZWQsIHdlIG1heSBpbmxpbmUgYSBjb2Rl
IGJsb2NrIHRoYXQgaGFzIG5ldmVyIGJlZW4gSklUdGVkCisgICAgLy8gYmVmb3JlIQogICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2tDYWNoZS5nZXQoQ29kZUJsb2NrS2V5KGV4
ZWN1dGFibGUsIGtpbmQpLCBleHBlY3RlZEZ1bmN0aW9uLT5zY29wZSgpKTsKICAgICBpZiAoIWNv
ZGVCbG9jaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTc0MSw3ICsxNzQyLDcgQEAgYm9v
bCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1f
aW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9jdXJyZW50SW5kZXgpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBpZiAobWV0aG9kQ2FsbFN0YXR1cy5pc1NldCgpCi0gICAgICAg
ICAgICAgICAgJiYgIWdldEJ5SWRTdGF0dXMuaXNTZXQoKQorICAgICAgICAgICAgICAgICYmICFn
ZXRCeUlkU3RhdHVzLndhc1NlZW5JbkpJVCgpCiAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5l
U3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENh
Y2hlKSkgewogICAgICAgICAgICAgICAgIC8vIEl0J3MgbW9ub21vcnBoaWMgYXMgZmFyIGFzIHdl
IGNhbiB0ZWxsLCBzaW5jZSB0aGUgbWV0aG9kX2NoZWNrIHdhcyBsaW5rZWQKICAgICAgICAgICAg
ICAgICAvLyBidXQgdGhlIHNsb3cgcGF0aCAoaS5lLiB0aGUgbm9ybWFsIGdldF9ieV9pZCkgbmV2
ZXIgZmlyZWQuCkBAIC0xODEwLDcgKzE4MTEsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkCiAKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9ieV9pZCk7
CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6IHsKKyAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogewogICAgICAg
ICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJh
bmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9u
WzFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0g
bV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzJd
LnUub3BlcmFuZF07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmgJKHJldmlzaW9uIDEwNjE0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw2ICsxMTEsOCBAQCBpbmxp
bmUgYm9vbCBjYW5Db21waWxlT3Bjb2RlKE9wY29kZUlEIG9wCiAgICAgY2FzZSBvcF9wdXRfc2Nv
cGVkX3ZhcjoKICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoK
KyAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBjYXNlIG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyOgog
ICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6CiAgICAgY2FzZSBvcF9qbXA6CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZp
c2lvbiAxMDYxNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDIxIEBAIHZvaWQgY29tcGlsZU9T
UkV4aXQoRXhlY1N0YXRlKiBleGVjKQogICAgIHVpbnQzMl90IGV4aXRJbmRleCA9IGdsb2JhbERh
dGEtPm9zckV4aXRJbmRleDsKICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrLT5vc3JFeGl0
KGV4aXRJbmRleCk7CiAgICAgCisgICAgLy8gTWFrZSBzdXJlIGFsbCBjb2RlIG9uIG91ciBpbmxp
bmUgc3RhY2sgaXMgSklUIGNvbXBpbGVkLiBUaGlzIGlzIG5lY2Vzc2FyeSBzaW5jZQorICAgIC8v
IHdlIG1heSBvcHQgdG8gaW5saW5lIGEgY29kZSBibG9jayBldmVuIGJlZm9yZSBpdCBoYWQgZXZl
ciBiZWVuIGNvbXBpbGVkIGJ5IHRoZQorICAgIC8vIEpJVCwgYnV0IG91ciBPU1IgZXhpdCBpbmZy
YXN0cnVjdHVyZSBjdXJyZW50bHkgb25seSB3b3JrcyBpZiB0aGUgdGFyZ2V0IG9mIHRoZQorICAg
IC8vIE9TUiBleGl0IGlzIEpJVCBjb2RlLiBUaGlzIGNvdWxkIGJlIGNoYW5nZWQgc2luY2UgdGhl
cmUgaXMgbm90aGluZyBwYXJ0aWN1bGFybHkKKyAgICAvLyBoYXJkIGFib3V0IGRvaW5nIGFuIE9T
UiBleGl0IGludG8gdGhlIGludGVycHJldGVyLCBidXQgZm9yIG5vdyB0aGlzIHNlZW1zIHRvIG1h
a2UKKyAgICAvLyBzZW5zZSBpbiB0aGF0IGlmIHdlJ3JlIE9TUiBleGl0aW5nIGZyb20gaW5saW5l
ZCBjb2RlIG9mIGEgREZHIGNvZGUgYmxvY2ssIHRoZW4KKyAgICAvLyBwcm9iYWJseSBpdCdzIGEg
Z29vZCBzaWduIHRoYXQgdGhlIHRoaW5nIHdlJ3JlIGV4aXRpbmcgaW50byBpcyBob3QuIEV2ZW4g
bW9yZQorICAgIC8vIGludGVyZXN0aW5nbHksIHNpbmNlIHRoZSBjb2RlIHdhcyBpbmxpbmVkLCBp
dCBtYXkgbmV2ZXIgb3RoZXJ3aXNlIGdldCBKSVQKKyAgICAvLyBjb21waWxlZCBzaW5jZSB0aGUg
YWN0IG9mIGlubGluaW5nIGl0IG1heSBlbnN1cmUgdGhhdCBpdCBvdGhlcndpc2UgbmV2ZXIgcnVu
cy4KKyAgICBmb3IgKENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luOyBj
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lLT5jYWxsZXIpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4oY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpCisgICAg
ICAgICAgICAtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
LT5pc0NhbGwgPyBDb2RlRm9yQ2FsbCA6IENvZGVGb3JDb25zdHJ1Y3QpCisgICAgICAgICAgICAt
PmppdENvbXBpbGUoKmdsb2JhbERhdGEpOworICAgIH0KKyAgICAKICAgICBTcGVjdWxhdGlvblJl
Y292ZXJ5KiByZWNvdmVyeSA9IDA7CiAgICAgaWYgKGV4aXQubV9yZWNvdmVyeUluZGV4KQogICAg
ICAgICByZWNvdmVyeSA9ICZjb2RlQmxvY2stPnNwZWN1bGF0aW9uUmVjb3ZlcnkoZXhpdC5tX3Jl
Y292ZXJ5SW5kZXggLSAxKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTA2MTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKICNpbmNsdWRl
ICJERkdSZXBhdGNoLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1
ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIklubGluZUFTTS5oIgogI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCkBAIC02NzEsNDggKzY3Miw2IEBAIHNpemVfdCBERkdfT1BFUkFUSU9OIG9w
ZXJhdGlvbkNvbXBhcmVTdHIKICAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywg
SlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikp
OwogfQogCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUoKTsKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7Ci0KLSNpZiBDUFUoWDg2XzY0KQotYXNtICgKLSIu
Z2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJP
TF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCgl
cjEzKSwgJXIxM1xuIgotICAgICJtb3YgJXIxMywgJXJkaVxuIgotICAgICJqbXAgIiBTWU1CT0xf
U1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJc
biIKLSk7Ci0jZWxpZiBDUFUoWDg2KQotYXNtICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgotICAgICJtb3Yg
JWVkaSwgNCglZXNwKVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoQVJN
X1RIVU1CMikKLWFzbSAoCi0iLnRleHQiICJcbiIKLSIuYWxpZ24gMiIgIlxuIgotIi5nbG9ibCAi
IFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0wo
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotIi50aHVtYiIgIlxuIgotIi50aHVtYl9mdW5j
ICIgVEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xf
U1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgImxkciByNSwgW3I1
LCAjLTQwXSIgIlxuIgotICAgICJjcHkgcjAsIHI1IiAiXG4iCi0gICAgImIgIiBTWU1CT0xfU1RS
SU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIK
LSk7Ci0jZW5kaWYKLQotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOwotICAgIAotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQot
CiBzdGF0aWMgdm9pZCogaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1Zh
bHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTA2MTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzNyw3ICs4MzcsNyBAQCB2b2lk
IEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnCiAgICAgICAgIHNldEhpZ2hXYXRl
ck1hcmsobWF4KHByb3BvcnRpb25hbEJ5dGVzLCBtX21pbkJ5dGVzUGVyQ3ljbGUpKTsKICAgICB9
CiAgICAgSkFWQVNDUklQVENPUkVfR0NfRU5EKCk7Ci0KKyAgICAKICAgICAoKm1fYWN0aXZpdHlD
YWxsYmFjaykoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNp
b24gMTA2MTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xv
YmFsRGF0YTsKICAgICBjbGFzcyBKU1ZhbHVlOwogICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRv
cjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQXJn
dW1lbnRCdWZmZXI7CiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlOwogICAgIGNsYXNzIFVTdHJpbmc7
CkBAIC0xMzUsMTEgKzEzNiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBnZXRD
b25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJr
ZWRTcGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmll
bmQgY2xhc3MgQnVtcFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7Ci0g
ICAgICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAKICAgICAgICAgc2l6ZV90IHdhdGVyTWFy
aygpOwogICAgICAgICBzaXplX3QgaGlnaFdhdGVyTWFyaygpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCShyZXZpc2lvbiAxMDYxNDQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQs
NyArMzA0LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKAogI2Vu
ZGlmCiAKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwotCisgICAgCiAgICAgaWYg
KGlzSlNTdHJpbmcoY2VsbCkpIHsKICAgICAgICAgSlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4oY29u
c3RfY2FzdDxKU0NlbGwqPihjZWxsKSwgdmlzaXRvcik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMTA2MTQ0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBj
b3B5KQpAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEhlYXA7CiBjbGFz
cyBKU0NlbGw7CiBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CitjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiBjbGFzcyBXZWFrR0NIYW5kbGU7CiBjbGFzcyBTbG90VmlzaXRvcjsKIApAQCAt
ODcsNiArODgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBmcmVlQmxvY2tzKE1hcmtlZEJsb2NrKiBo
ZWFkKTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworICAgIAogICAgIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2UoU2l6ZUNsYXNzJik7CiAgICAgdm9p
ZCogdHJ5QWxsb2NhdGVIZWxwZXIoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwogICAgIHZvaWQq
IHRyeUFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDEwNjE0NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIyLDYgKzEyMiw5IEBAIG5hbWVzcGFjZSBKU0MgIHsKICNpZiBFTkFCTEUo
SU5URVJQUkVURVIpCiAgICAgICAgIEluc3RydWN0aW9uKiByZXR1cm5WUEMoKSBjb25zdCB7IHJl
dHVybiB0aGlzW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdLnZQQygpOyB9CiAjZW5kaWYKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgICAgIEluc3RydWN0aW9uKiBjdXJyZW50VlBDKCkgY29uc3QgeyBy
ZXR1cm4gYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4odGhpc1tSZWdpc3RlckZpbGU6OkFyZ3Vt
ZW50Q291bnRdLnRhZygpKTsgfQorI2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXRDYWxsZXJGcmFt
ZShDYWxsRnJhbWUqIGNhbGxlckZyYW1lKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylb
UmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZV0gPSBjYWxsZXJGcmFtZTsgfQogICAgICAgICB2b2lk
IHNldFNjb3BlQ2hhaW4oU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pIHsgc3RhdGljX2Nhc3Q8
UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW5dID0gc2NvcGVDaGFpbjsg
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCShyZXZpc2lvbiAxMDYxNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBA
CiAjaW5jbHVkZSAiSklULmgiCiAjZW5kaWYKIAotI2RlZmluZSBXVEZfVVNFX0dDQ19DT01QVVRF
RF9HT1RPX1dPUktBUk9VTkQgKEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSAmJiAh
ZGVmaW5lZChfX2xsdm1fXykpCisjZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09S
S0FST1VORCAoKEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJ
TlQpKSAmJiAhZGVmaW5lZChfX2xsdm1fXykpCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAg
LTU0NywxNyArNTQ3LDQzIEBAIEludGVycHJldGVyOjpJbnRlcnByZXRlcigpCiB7CiB9CiAKLXZv
aWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQpCitJbnRlcnByZXRlcjo6
fkludGVycHJldGVyKCkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fZW5hYmxlZCkKKyAgICAgICAgZGVsZXRlW10g
bV9vcGNvZGVUYWJsZTsKKyNlbmRpZgorfQorCit2b2lkIEludGVycHJldGVyOjppbml0aWFsaXpl
KExMSW50OjpEYXRhKiBsbGludERhdGEsIGJvb2wgY2FuVXNlSklUKQoreworICAgIFVOVVNFRF9Q
QVJBTShsbGludERhdGEpOworICAgIFVOVVNFRF9QQVJBTShjYW5Vc2VKSVQpOworI2lmIEVOQUJM
RShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJM
RShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorICAgIC8vIEhhdmluZyBMTEludCBlbmFibGVk
LCBidXQgbm90IGJlaW5nIGFibGUgdG8gdXNlIHRoZSBKSVQsIGFuZCBub3QgaGF2aW5nCisgICAg
Ly8gYSBjb21wdXRlZCBnb3RvIGludGVycHJldGVyLCBpcyBub3Qgc3VwcG9ydGVkLiBOb3QgYmVj
YXVzZSB3ZSBjYW5ub3QKKyAgICAvLyBzdXBwb3J0IGl0LCBidXQgYmVjYXVzZSBJIGRlY2lkZWQg
dG8gZHJhdyB0aGUgbGluZSBhdCB0aGUgbnVtYmVyIG9mCisgICAgLy8gcGVybXV0YXRpb25zIG9m
IGV4ZWN1dGlvbiBlbmdpbmVzIHRoYXQgSSB3YW50ZWQgdGhpcyBjb2RlIHRvIGdyb2suCisgICAg
QVNTRVJUKGNhblVzZUpJVCk7CisjZW5kaWYKICAgICBpZiAoY2FuVXNlSklUKSB7CisjaWYgRU5B
QkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbGxpbnREYXRhLT5vcGNvZGVNYXAo
KTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKKyAgICAg
ICAgICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNvZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8
T3Bjb2RlSUQ+KGkpKTsKKyNlbHNlCiAgICAgICAgIC8vIElmIHRoZSBKSVQgaXMgcHJlc2VudCwg
ZG9uJ3QgdXNlIGp1bXAgZGVzdGluYXRpb25zIGZvciBvcGNvZGVzLgogICAgICAgICAKICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkgewogICAgICAgICAgICAg
T3Bjb2RlIG9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90
PihpKSk7CiAgICAgICAgICAgICBtX29wY29kZVRhYmxlW2ldID0gb3Bjb2RlOwogICAgICAgICB9
CisjZW5kaWYKICAgICB9IGVsc2UgeworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNv
ZGVUYWJsZSA9IG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXTsKKyNlbmRpZgogICAgICAgICBwcml2
YXRlRXhlY3V0ZShJbml0aWFsaXplQW5kUmV0dXJuLCAwLCAwKTsKICAgICAgICAgCiAgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpCkBAIC01NjYsNyArNTkyLDYg
QEAgdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShib29sIGNhblVzZQogICAgICAgICBtX2Vu
YWJsZWQgPSB0cnVlOwogICAgIH0KICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNhblVzZUpJVCk7
CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fZW5hYmxlZCA9IHRydWU7CiAjZWxzZQpA
QCAtNjY3LDkgKzY5MiwxMSBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxG
cmFtCiAKIGJvb2wgSW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKE9wY29kZSBvcGNvZGUpCiB7Ci0jaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dP
VE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKExMSU5UKQogICAg
IGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm4gb3Bjb2RlID49IDAgJiYgc3RhdGljX2Nh
c3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29kZSkpIDw9IG9wX2VuZDsK
KyNlbmRpZgogICAgIHJldHVybiBvcGNvZGUgIT0gSGFzaFRyYWl0czxPcGNvZGU+OjplbXB0eVZh
bHVlKCkKICAgICAgICAgJiYgIUhhc2hUcmFpdHM8T3Bjb2RlPjo6aXNEZWxldGVkVmFsdWUob3Bj
b2RlKQogICAgICAgICAmJiBtX29wY29kZUlEVGFibGUuY29udGFpbnMob3Bjb2RlKTsKQEAgLTcy
NiwxMSArNzUzLDExIEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjp1bndpbmRDYWwK
ICAgICAvLyBoYXZlIHRvIHN1YnRyYWN0IDEuCiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKElO
VEVSUFJFVEVSKQogICAgIGlmIChjYWxsZXJGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgp
KQotICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2Fs
bEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogICAg
IGVsc2UKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0
KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbGlmIEVOQUJMRShKSVQpCi0gICAgYnl0
ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJu
UEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNh
bGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2Vsc2UKICAgICBieXRlY29kZU9m
ZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkg
LSAxOwogI2VuZGlmCkBAIC01MTcwLDEwICs1MTk3LDEwIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OnJl
dHJpZXZlTGFzdENhbGxlcihDYWwKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2Rl
QmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpOwogI2lmIEVOQUJM
RShKSVQpCiAgICAgZWxzZQotICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9j
ay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNv
ZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBj
YWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAjZWxzZQotICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkp
OworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChj
YWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogICAgIGxpbmVOdW1i
ZXIgPSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29k
ZU9mZnNldCAtIDEpOwogICAgIHNvdXJjZUlEID0gY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKS0+c291cmNlSUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxMDYxNDQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIK
ICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUg
Ik9wY29kZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgogCkBAIC00NSw2ICs0Niw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFz
cyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBjbGFz
cyBSZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKQEAgLTEwMCwxOSArMTAyLDIx
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgog
ICAgICAgICBJbnRlcnByZXRlcigpOworICAgICAgICB+SW50ZXJwcmV0ZXIoKTsKICAgICAgICAg
Ci0gICAgICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGNhblVzZUpJVCk7CisgICAgICAgIHZvaWQg
aW5pdGlhbGl6ZShMTEludDo6RGF0YSosIGJvb2wgY2FuVXNlSklUKTsKIAogICAgICAgICBSZWdp
c3RlckZpbGUmIHJlZ2lzdGVyRmlsZSgpIHsgcmV0dXJuIG1fcmVnaXN0ZXJGaWxlOyB9CiAgICAg
ICAgIAogICAgICAgICBPcGNvZGUgZ2V0T3Bjb2RlKE9wY29kZUlEIGlkKQogICAgICAgICB7CiAg
ICAgICAgICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dP
VE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8
IEVOQUJMRShMTElOVCkKICAgICAgICAgICAgIHJldHVybiBtX29wY29kZVRhYmxlW2lkXTsKICNl
bHNlCiAgICAgICAgICAgICByZXR1cm4gaWQ7CkBAIC0xMjIsNyArMTI2LDEwIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUgb3Bjb2RlKQogICAg
ICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENP
TVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICAgICAg
QVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOworICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlSURU
YWJsZS5nZXQob3Bjb2RlKTsKKyNlbGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KQogICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOwogICAgICAgICAgICAgaWYg
KCFtX2VuYWJsZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZUlE
PihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKTsKQEAgLTEzMiw2ICsxMzksMTEgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgZW5hYmxlZCgpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBtX2VuYWJsZWQ7CisgICAgICAgIH0KIAogICAgICAgICBib29sIGlzT3Bj
b2RlKE9wY29kZSk7CiAKQEAgLTE5OSw3ICsyMTEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgUmVnaXN0ZXJGaWxlIG1fcmVnaXN0ZXJGaWxlOwogICAgICAgICAKLSNpZiBFTkFCTEUo
Q09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIE9w
Y29kZSogbV9vcGNvZGVUYWJsZTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBp
bGluZworICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsg
Ly8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCisjZWxpZiBFTkFCTEUo
Q09NUFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVb
bnVtT3Bjb2RlSURzXTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwog
ICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFw
cyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHJldmlz
aW9uIDEwNjE0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rl
ckZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7
CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgUmVnaXN0ZXJG
aWxlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVnaXN0ZXJGaWxlKTsKQEAgLTgx
LDYgKzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAg
ICAgICBib29sIGdyb3dTbG93Q2FzZShSZWdpc3RlciopOwogICAgICAgICB2b2lkIHJlbGVhc2VF
eGNlc3NDYXBhY2l0eSgpOwogICAgICAgICB2b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxv
bmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0
dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9I
b3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorCisjaWYgQ09NUElMRVIo
R0NDKQorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSW5saW5lQVNNLmgiCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1ZhbHVlSW5saW5lTWV0aG9kcy5oIgor
I2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2V4dGVybiAiQyIg
RW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7CisKKyNpZiBDUFUoWDg2XzY0KQor
YXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJc
biIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAi
bW92IC00MCglcjEzKSwgJXIxM1xuIgorICAgICJtb3YgJXIxMywgJXJkaVxuIgorICAgICJqbXAg
IiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVj
U3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUoWDg2KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xf
U1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgor
ICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9D
QVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxp
ZiBDUFUoQVJNX1RIVU1CMikKK2FzbSAoCisiLnRleHQiICJcbiIKKyIuYWxpZ24gMiIgIlxuIgor
Ii5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElE
RV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorIi50aHVtYiIgIlxuIgorIi50
aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4i
CitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgImxk
ciByNSwgW3I1LCAjLTQwXSIgIlxuIgorICAgICJjcHkgcjAsIHI1IiAiXG4iCisgICAgImIgIiBT
WU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3Rh
dGUpICJcbiIKKyk7CisjZW5kaWYKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NB
TExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0
ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5n
bG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gQ09NUElMRVIoR0NDKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisjZGVmaW5lIEhvc3RDYWxsUmV0
dXJuVmFsdWVfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisvLyBVbmZvcnR1bmF0
ZWx5IHRoaXMgb25seSB3b3JrcyBvbiBHQ0MtbGlrZSBjb21waWxlcnMuIEFuZCBpdCdzIGN1cnJl
bnRseSBvbmx5IHVzZWQKKy8vIGJ5IExMSW50IGFuZCBERkcsIHdoaWNoIGFsc28gYXJlIHJlc3Ry
aWN0ZWQgdG8gR0NDLWxpa2UgY29tcGlsZXJzLiBXZSBzaG91bGQKKy8vIHByb2JhYmx5IGZpeCB0
aGF0IGF0IHNvbWUgcG9pbnQuCisjaWYgQ09NUElMRVIoR0NDKQorCisjaWYgQ0FMTElOR19DT05W
RU5USU9OX0lTX1NURENBTEwKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04g
Q0RFQ0wKKyNlbHNlCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OCisjZW5k
aWYKKworbmFtZXNwYWNlIEpTQyB7CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FM
TF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKK30KKworI2Vu
ZGlmIC8vIENPTVBJTEVSKEdDQykKKworI2VuZGlmIC8vIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMDYxNDQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2
ICszMjUsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERF
RklORV9PUChvcF9wcm9maWxlX3dpbGxfY2FsbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hf
bmV3X3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9zY29wZSkKKyAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQog
ICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3Bf
cHV0X2J5X3ZhbCkKQEAgLTQ4Nyw2ICs0ODksOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcG9zdF9pbmMpCiAgICAg
ICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVfZGVjKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfcHJlX2luYykKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xP
V0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jl
c29sdmVfZ2xvYmFsKQpAQCAtNTI2LDYgKzUzMCwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVTbG93Q2FzZXMoKQogCiBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVu
Y3Rpb25FbnRyeUFyaXR5Q2hlY2spCiB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAg
ICBwcmludGYoIkNvbXBpbGluZyBKSVQgY29kZSFcbiIpOworI2VuZGlmCisgICAgCiAjaWYgRU5B
QkxFKFZBTFVFX1BST0ZJTEVSKQogICAgIG1fY2FuQmVPcHRpbWl6ZWQgPSBtX2NvZGVCbG9jay0+
Y2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtNjkwLDggKzY5OCwxMiBAQCBKSVRDb2Rl
IEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAgICAgICAgIGluZm8uY2FsbFJldHVy
bkxvY2F0aW9uID0gbV9jb2RlQmxvY2stPnN0cnVjdHVyZVN0dWJJbmZvKG1fbWV0aG9kQ2FsbENv
bXBpbGF0aW9uSW5mb1tpXS5wcm9wZXJ0eUFjY2Vzc0luZGV4KS5jYWxsUmV0dXJuTG9jYXRpb247
CiAgICAgfQogCi0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQp
IHsKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2NhbkJl
T3B0aW1pemVkCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICB8fCB0cnVlCisjZW5kaWYKKyAg
ICAgICAgKSB7CiAgICAgICAgIENvbXBhY3RKSVRDb2RlTWFwOjpFbmNvZGVyIGppdENvZGVNYXBF
bmNvZGVyOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNv
ZGVPZmZzZXQgPCBtX2xhYmVscy5zaXplKCk7ICsrYnl0ZWNvZGVPZmZzZXQpIHsKICAgICAgICAg
ICAgIGlmIChtX2xhYmVsc1tieXRlY29kZU9mZnNldF0uaXNTZXQoKSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ29kZS5oCShyZXZpc2lvbiAxMDYxNDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgSklUQ29kZSgpIHsgfQogI2VuZGlmCiAgICAgcHVibGlj
OgotICAgICAgICBlbnVtIEpJVFR5cGUgeyBIb3N0Q2FsbFRodW5rLCBCYXNlbGluZUpJVCwgREZH
SklUIH07CisgICAgICAgIGVudW0gSklUVHlwZSB7IE5vbmUsIEhvc3RDYWxsVGh1bmssIEludGVy
cHJldGVyVGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsKICAgICAgICAgCiAgICAgICAgIHN0
YXRpYyBKSVRUeXBlIGJvdHRvbVRpZXJKSVQoKQogICAgICAgICB7CkBAIC02Niw4ICs2NiwxOSBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBERkdKSVQ7CiAgICAgICAgIH0K
ICAgICAgICAgCisgICAgICAgIHN0YXRpYyBib29sIGlzT3B0aW1pemluZ0pJVChKSVRUeXBlIGpp
dFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IERGR0pJVDsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3RhdGljIGJvb2wgaXNCYXNlbGluZUNvZGUo
SklUVHlwZSBqaXRUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9
PSBJbnRlcnByZXRlclRodW5rIHx8IGppdFR5cGUgPT0gQmFzZWxpbmVKSVQ7CisgICAgICAgIH0K
KyAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgSklUQ29kZSgpCisgICAgICAgICAg
ICA6IG1faml0VHlwZShOb25lKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNzUsNiArODYs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIDogbV9yZWYocmVmKQogICAgICAgICAg
ICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGpp
dFR5cGUgIT0gTm9uZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0
b3IgISgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHJl
dmlzaW9uIDEwNjE0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDE1ICszMywyMSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2Vu
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCiAjaW5jbHVkZSAiSklULmgiCisjaW5j
bHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJp
YXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2Rl
QmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAg
ICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgCiAgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsK
KyAgICAKICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0g
SklUQ29kZTo6REZHSklUKQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZShn
bG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUpOwpAQCAtNTUsMTAgKzYxLDcgQEAg
aW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbAogICAgICAgICB9CiAgICAg
ICAgIGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSk7
CiAgICAgfQotI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVH
ZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRs
ZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7Ci0jZW5kaWYKKyAgICBjb2RlQmxvY2st
PmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5z
ZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKICAgICAKICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTY2LDkgKzY5LDE0IEBAIGlubGluZSBib29sIGppdENvbXBpbGVJZkFw
cHJvcHJpYXRlKEpTR2wKIAogaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3By
aWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4m
IGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRD
b2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENv
ZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdl
dEpJVFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFnbG9iYWxE
YXRhLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBjb2RlQmxv
Y2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBpbGVkID0g
ZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAgICAgICBkZmdD
b21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZUZ1bmN0aW9uKGdsb2JhbERhdGEsIGNvZGVCbG9jay5n
ZXQoKSwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKQEAgLTgzLDExICs5MSw3IEBA
IGlubGluZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmkKICAgICAgICAgfQogICAg
ICAgICBqaXRDb2RlID0gSklUOjpjb21waWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCks
ICZqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAgIH0KLSNpZiAhRU5BQkxFKE9QQ09ERV9TQU1Q
TElORykKLSAgICBpZiAoIUJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkK
LSAgICAgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgp
OwotI2VuZGlmCi0gICAgCisgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdP
cHBvcnR1bml0eSgpOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2Rl
V2l0aEFyaXR5Q2hlY2spOwogICAgIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAxMDYxNDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw3ICs2NCw3IEBAIEV4Y2VwdGlvbkhhbmRsZXIgZ2VuZXJpY1Rocm93KEpTR2xv
YmFsRGEKIAogRXhjZXB0aW9uSGFuZGxlciBqaXRUaHJvdyhKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEsIEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBSZXR1cm5B
ZGRyZXNzUHRyIGZhdWx0TG9jYXRpb24pCiB7Ci0gICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9i
YWxEYXRhLCBjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
LT5ieXRlY29kZU9mZnNldChmYXVsdExvY2F0aW9uKSk7CisgICAgcmV0dXJuIGdlbmVyaWNUaHJv
dyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUsIGZhdWx0TG9jYXRpb24pKTsKIH0KIAog
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDEw
NjE0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTI4LDcgKzE5MjgsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBv
cHRpbWl6ZV9mcm9tCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNrRnJhbWUuYXJn
c1swXS5pbnQzMigpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmludGYo
IkVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVv
cHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0g
JXVcbiIsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGlt
aXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRl
cigpKTsKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4
ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGlt
aXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+aml0RXhl
Y3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBj
b2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAgaWYg
KGNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewpAQCAtMjE4Myw0NSArMjE4
MywxMyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNh
bGxGcmFtZS0+Y2FsbGVlKCkpOwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigp
KTsKLSAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgp
LT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAg
ICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJp
byBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lz
dGVyRmlsZS0+Z3JvdyhjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBu
ZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50
cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3Npbmcg
YXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVn
aXN0ZXIqIHNyYyA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9
IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGludCBl
bmQgPSAtQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwot
ICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07
Ci0KLSAgICBlbmQgLT0gZGVsdGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAgICAg
ICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUg
PSBDYWxsRnJhbWU6OmNyZWF0ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1l
IDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0K
IERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAg
U1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZy
YW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBD
b2RlRm9yQ2FsbCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0
aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29k
ZUZvckNhbGwpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dF
eGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVU
VVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZy
YW1lKCkpKTsKIApAQCAtMjIzNCw3ICsyMjAyLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9p
ZCosIG9wX2NvbnN0cnVjdAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1l
LmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0Zv
cihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsK
KyAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVj
a0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0
KTsKICAgICBpZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9u
RnJvbU9wQ2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERS
RVNTLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJl
dmlzaW9uIDEwNjE0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VK
SVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgSlNJbnRlcmZh
Y2VKSVRfaAogI2RlZmluZSBKU0ludGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNv
bnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgi
CisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAi
TWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBMTEludENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2RlZmlu
ZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFDSU5H
IDAKKworI2VuZGlmIC8vIExMSW50Q29tbW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisK
KyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIu
aCIKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTElu
dCB7CisKK0RhdGE6OkRhdGEoKQorICAgIDogbV9leGNlcHRpb25JbnN0cnVjdGlvbnMobmV3IElu
c3RydWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdKQorICAgICwgbV9vcGNvZGVNYXAobmV3IE9w
Y29kZVtudW1PcGNvZGVJRHNdKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2Rl
TGVuZ3RoICsgMTsgKytpKQorICAgICAgICBtX2V4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBv
aW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFt
cG9saW5lKTsKKyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBtX29wY29kZU1h
cFtvcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUpOworICAgIEZP
Ul9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkpOworI3VuZGVmIE9QQ09ERV9FTlRSWQorfQor
CitEYXRhOjp+RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7
CisgICAgZGVsZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpM
TEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RGF0
YV9oCisjZGVmaW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlv
bjsKKworbmFtZXNwYWNlIExMSW50IHsKKworI2lmIEVOQUJMRShMTElOVCkKK2NsYXNzIERhdGEg
eworcHVibGljOgorICAgIERhdGEoKTsKKyAgICB+RGF0YSgpOworICAgIAorICAgIEluc3RydWN0
aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhj
ZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgp
CisgICAgeworICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgfQorcHJpdmF0ZToKKyAg
ICBJbnN0cnVjdGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgT3Bjb2RlKiBtX29w
Y29kZU1hcDsKK307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQpCisKKyNpZiBDT01QSUxFUihDTEFO
RykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlmCisKK2NsYXNzIERhdGEgewor
cHVibGljOgorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsK
KyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0K
KyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfTsKKworI2lmIENPTVBJTEVS
KENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisKKyNlbmRpZiAv
LyBFTkFCTEUoTExJTlQpCisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYg
Ly8gTExJbnREYXRhX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RW50cnlwb2ludHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCisjaWYgRU5B
QkxFKExMSU5UKQorCisjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0
YS5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnBy
ZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRG
dW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQsIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYg
YXJpdHlDaGVjaykKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAg
ICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgIGppdENvZGUgPSBKSVRD
b2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdl
ZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgICAgIGFyaXR5Q2hlY2sg
PSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorCisgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBq
aXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3Jl
YXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8
dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSkpKTsKKyAgICAg
ICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAg
ICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2Fs
bEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICAg
ICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0
eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGppdENvZGUgPSBKSVRD
b2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtH
ZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBhcml0eUNoZWNrID0g
Z2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5r
R2VuZXJhdG9yKS5jb2RlKCk7Cit9CisKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0
YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9u
KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9ldmFsX3Byb2xvZ3VlKSkp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShn
bG9iYWxEYXRhLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJ
bnRlcnByZXRlclRodW5rKTsKK30KKwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxE
YXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rp
b24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Byb2dyYW1fcHJvbG9n
dWUpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGppdENvZGUgPSBKSVRD
b2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIEpJ
VENvZGU6OkludGVycHJldGVyVGh1bmspOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJ
bnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBMTEludEVudHJ5cG9pbnRzX2gKKyNkZWZpbmUgTExJbnRFbnRyeXBvaW50c19o
CisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2lu
Y2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEV2YWxDb2RlQmxvY2s7CitjbGFzcyBKSVRDb2RlOworY2xhc3MgSlNHbG9iYWxEYXRhOwor
Y2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OworY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKKworbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBn
ZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCwgSklUQ29kZSYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjayk7Cit2b2lkIGdl
dEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKK3ZvaWQgZ2V0UHJvZ3Jh
bUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYpOworCitpbmxpbmUgdm9pZCBnZXRF
bnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXZhbENvZGVCbG9jayosIEpJVENv
ZGUmIGppdENvZGUpCit7CisgICAgZ2V0RXZhbEVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29k
ZSk7Cit9CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBQcm9ncmFtQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRQcm9n
cmFtRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTElu
dEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4
Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorCisjaWYgRU5BQkxFKExM
SU5UKQorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5j
bHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisK
K25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGludGVycHJldGVyVGhy
b3dJbkNhbGxlcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAg
IHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9u
LmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KAorICAgICAgICBnbG9i
YWxEYXRhLCBleGVjLT5jYWxsZXJGcmFtZSgpLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sCisgICAg
ICAgIGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChleGVj
LT5jYWxsZXJGcmFtZSgpLCBleGVjLT5yZXR1cm5QQygpKSk7Cit9CisKK0luc3RydWN0aW9uKiBy
ZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBy
ZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMo
KTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0
cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmds
b2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dp
bmcgZXhjZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlv
bi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBl
eGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBnbG9iYWxEYXRhLT5sbGludERh
dGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNT
dGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAg
ICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAoY2FsbFRvVGhyb3cpLlxuIiwgZ2xvYmFs
RGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93
KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2Rl
QmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJuIGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpOworfQor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRp
b25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNfaAorI2Rl
ZmluZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1l
c3BhY2UgTExJbnQgeworCisvLyBUaHJvdyB0aGUgY3VycmVudGx5IGFjdGl2ZSBleGNlcHRpb24g
aW4gdGhlIGNvbnRleHQgb2YgdGhlIGNhbGxlcidzIGNhbGwgZnJhbWUuCit2b2lkIGludGVycHJl
dGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqKTsKKworLy8gVGVsbHMgeW91IHdoZXJlIHRvIGp1
bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0dXJuLXRvLXRocm93LCBhZnRlciB5b3UndmUgYWxyZWFk
eQorLy8gc2V0IHVwIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gdGhyb3cgdGhlIGV4Y2VwdGlv
bi4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0
ZSopOworCisvLyBTYXZlcyB0aGUgY3VycmVudCBQQyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNh
ZmUta2VlcGluZywgYW5kIGdpdmVzIHlvdSBhIFBDCisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUg
aW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisvLyBh
bmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRv
IHRoZSBpbnRlcnByZXRlcidzCisvLyBleGNlcHRpb24gaGFuZGxlci4gTm90ZSB0aGF0IGlmIHlv
dSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nLAorLy8gaXQncyBzbWFydCBl
bm91Z2ggdG8ganVzdCByZXR1cm4gdGhhdCBQQyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7
IHRoaXMKKy8vIGxldHMgeW91IHRocmVhZCBleGNlcHRpb24gaGFuZGxpbmcgdGhyb3VnaCBjb21t
b24gaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5CisvLyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rp
b24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRo
aXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxsIHRodW5rLgordm9pZCogY2FsbFRvVGhy
b3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxM
SW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludEV4Y2VwdGlv
bnNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxw
ZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDI5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJMTEludEhlbHBlcnMuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1
ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1v
blNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVERyaXZlci5o
IgorI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisj
aW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgorI2luY2x1
ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50Q29t
bW9uLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJ
bnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBMTEludCB7CisKKyNkZWZpbmUgTExJTlRfT1AoaW5kZXgpIChleGVjLT51bmNo
ZWNrZWRSKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorI2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAo
ZXhlYy0+cihwY1tpbmRleF0udS5vcGVyYW5kKSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fVFdP
KGZpcnN0LCBzZWNvbmQpIGRvIHsgICAgICAgXAorICAgICAgICB1bmlvbiB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGE7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGI7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSBwYWlyOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50NjRfdCBpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICB9IF9fcnRfdTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5hID0gZmlyc3Q7ICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBfX3J0X3UucGFpci5iID0gc2Vjb25kOyAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICByZXR1cm4gX19ydF91Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVU
VVJOX1RXTyhwYywgZXhlYykKKworI2RlZmluZSBMTElOVF9USFJPVyhleGNlcHRpb25Ub1Rocm93
KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9f
dF9nbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOyAgICAgICAgXAorICAgICAgICBfX3Rf
Z2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgXAor
ICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
aWYgKFVOTElLRUxZKGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSB7ICAgXAorICAgICAg
ICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORCgpIGRvIHsgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAg
ICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQlJBTkNIKG9wY29kZSwg
Y29uZGl0aW9uKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYm9vbCBfX2Jf
Y29uZGl0aW9uID0gKGNvbmRpdGlvbik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgaWYgKF9fYl9jb25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IHBjW09QQ09ERV9MRU5HVEgob3Bj
b2RlKSAtIDFdLnUub3BlcmFuZDsgICAgICAgIFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBj
ICs9IE9QQ09ERV9MRU5HVEgob3Bjb2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk4odmFs
dWUpIGRvIHsgICAgICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcl9yZXR1cm5WYWx1
ZSA9ICh2YWx1ZSk7ICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAg
ICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9PUCgxKSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAg
ICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9QUk9GSUxFRChv
cGNvZGUsIHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcnBf
cmV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIExMSU5UX09QKDEpID0gX19ycF9yZXR1cm5WYWx1ZTsgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51LnByb2ZpbGUt
Pm1fYnVja2V0c1swXSA9IFwKKyAgICAgICAgICAgIEpTVmFsdWU6OmVuY29kZShfX3JwX3JldHVy
blZhbHVlKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNl
KQorCisjZGVmaW5lIExMSU5UX0NBTExfRU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRf
UkVUVVJOX1RXTygoY2FsbFRhcmdldCksIChleGVjKSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RI
Uk9XKGV4ZWMsIHBjLCBleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAg
ICAgICBFeGVjU3RhdGUqIF9fY3RfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9f
Y3RfZ2xvYmFsRGF0YSA9IChfX2N0X2V4ZWMpLT5nbG9iYWxEYXRhKCk7ICAgICAgXAorICAgICAg
ICBfX2N0X2dsb2JhbERhdGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3RfZXhlYywgY2FsbFRv
VGhyb3coX19jdF9leGVjLCBfX2N0X3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2Rl
ZmluZSBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19j
Y2VfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBpZiAoVU5MSUtFTFkoX19jY2VfZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBj
YWxsVG9UaHJvdyhfX2NjZV9leGVjLCBfX2NjZV9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2Up
CisKKyNkZWZpbmUgTExJTlRfQ0FMTF9SRVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhl
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rp
b24qIF9fY3JfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgdm9pZCogX19jcl9jYWxsVGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19j
cl9leGVjLT5jYWxsZXJGcmFtZSgpLCBfX2NyX3BjKTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9F
TkRfSU1QTChfX2NyX2V4ZWMsIF9fY3JfY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgIFwKKyAg
ICB9IHdoaWxlIChmYWxzZSkKKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3Ry
YWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hl
cmUsIGludCBvcGVyYW5kKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6
dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkXG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxv
Y2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+
KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAg
ICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUu
b3Bjb2RlKSwKKyAgICAgICAgICAgZnJvbVdoZXJlLAorICAgICAgICAgICBvcGVyYW5kLAorICAg
ICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQpOworICAgIExMSU5UX0VORCgpOworfQorCitl
eHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBl
eGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAg
IEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKG9wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICB1bmlv
biB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCB0YWc7CisgICAgICAg
ICAgICB1aW50MzJfdCBwYXlsb2FkOworICAgICAgICB9IGJpdHM7CisgICAgICAgIEVuY29kZWRK
U1ZhbHVlIGFzVmFsdWU7CisgICAgfSB1OworICAgIHUuYXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29k
ZSh2YWx1ZSk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTog
VHJhY2UoJWQpOiAlZDogJWQ6ICUwOHg6JTA4eCIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9j
aygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4o
cGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAg
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5v
cGNvZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUsCisgICAgICAgICAgIG9wZXJhbmQsCisgICAg
ICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCwKKyAgICAgICAgICAgdS5iaXRzLnRhZywKKyAg
ICAgICAgICAgdS5iaXRzLnBheWxvYWQpOworI2lmbmRlZiBOREVCVUcKKyAgICBwcmludGYoIjog
JXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIHByaW50ZigiXG4iKTsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpCit7
CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiBwcm9sb2d1ZS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygp
LCBleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlv
blByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rp
b24oZXhlYy0+Y2FsbGVlKCkpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9
IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXhl
Y3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgcHJpbnRmKCIlcCAvICVw
OiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1Q
YXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZVJlZ2lzdGVycyA9ICV1LlxuIiwKKyAgICAgICAgICAg
Y29kZUJsb2NrLCBleGVjLCBjb21tZW50LCBjYWxsZWUsIGV4ZWN1dGFibGUsCisgICAgICAgICAg
IGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJs
b2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNl
X3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1
ZShleGVjLCAiY2FsbCBwcm9sb2d1ZSIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBwcm9s
b2d1ZSIsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rp
b25Qcm9sb2d1ZShleGVjLCAiY2FsbCBhcml0eSBjaGVjayIsIENvZGVGb3JDYWxsKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3Jf
Y29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0
IGFyaXR5IGNoZWNrIiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0
aW5nIGJjIyV6dSwgIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAg
IGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVC
bG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisjaWZuZGVmIE5ERUJVRworICAgIHBy
aW50ZigiJXMsICIsIG9wY29kZU5hbWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpXSk7CisjZWxzZQorICAgIHByaW50Zigib3AjJXUs
ICIsIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5v
cGNvZGUpKTsKKyNlbmRpZgorICAgIHByaW50Zigic2NvcGUgJXBcbiIsIGV4ZWMtPnNjb3BlQ2hh
aW4oKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxf
dHJhY2UpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJj
IyV6dSwgb3AjJXUsIHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJs
b2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90
PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAg
ICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51
Lm9wY29kZSksCisgICAgICAgICAgIGV4ZWMtPnJldHVyblBDKCkudmFsdWUoKSk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK2lubGluZSBib29sIHNob3VsZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgLy8gWW91IGNhbiBtb2RpZnkgdGhpcyB0byB0dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQg
cmVidWlsZGluZyB0aGUgd29ybGQuCisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5V
c2VKSVQoKTsKK30KKworZW51bSBFbnRyeUtpbmQgeyBQcm9sb2d1ZSwgQXJpdHlDaGVjayB9Owor
c3RhdGljIEhlbHBlclJldHVyblR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVj
dGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBjaGFyICpuYW1lLCBFbnRyeUtp
bmQga2luZCkKK3sKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6
IEVudGVyZWQgJXMgd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIG5hbWUs
IGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlm
ICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVT
b29uKCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIGlm
ICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFC
TEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5
IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICB9CisgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7
CisgICAgaWYgKGtpbmQgPT0gUHJvbG9ndWUpCisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29k
ZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7
CisgICAgQVNTRVJUKGtpbmQgPT0gQXJpdHlDaGVjayk7CisgICAgTExJTlRfUkVUVVJOX1RXTyhj
b2RlQmxvY2stPmdldEpJVENvZGVXaXRoQXJpdHlDaGVjaygpLmV4ZWN1dGFibGVBZGRyZXNzKCks
IGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpCit7CisgICAgcmV0dXJu
IGVudHJ5T1NSKGV4ZWMsIHBjLCBleGVjLT5jb2RlQmxvY2soKSwgImVudHJ5X29zciIsIFByb2xv
Z3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxs
KQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2Fs
bGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwp
LCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1
cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVj
dXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlf
b3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKQoreworICAgIHJl
dHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4
ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2siLCBBcml0eUNoZWNrKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykK
K3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxl
ZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1
Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayIsIEFyaXR5
Q2hlY2spOworfQorCitMTElOVF9IRUxQRVJfREVDTChsb29wX29zcikKK3sKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRf
VkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCBsb29wX29zciB3aXRoIGV4ZWN1
dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3Vu
dGVyKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAg
ICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJO
X1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBp
bGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisg
ICAgICAgIHByaW50ZigiICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRp
ZgorICAgIH0KKyAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICAKKyAgICBBU1NFUlQoY29k
ZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIAorICAg
IFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+IG1hcDsKKyAgICBjb2RlQmxvY2stPmpp
dENvZGVNYXAoKS0+ZGVjb2RlKG1hcCk7CisgICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBt
YXBwaW5nID0gYmluYXJ5U2VhcmNoPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQs
IEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldDo6Z2V0Qnl0ZWNvZGVJbmRleD4obWFwLmJlZ2luKCks
IG1hcC5zaXplKCksIHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAg
ICBBU1NFUlQobWFwcGluZyk7CisgICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9
PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJl
Z2luKCkpKTsKKyAgICAKKyAgICB2b2lkKiBqdW1wVGFyZ2V0ID0gY29kZUJsb2NrLT5nZXRKSVRD
b2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChtYXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zm
c2V0KTsKKyAgICBBU1NFUlQoanVtcFRhcmdldCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOX1RX
TyhqdW1wVGFyZ2V0LCBleGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSkKK3sK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lm
IEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCByZXBsYWNl
IHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50
RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoc2hvdWxkSklUKGV4ZWMp
KSB7CisgICAgICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEo
KSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICAgICAgcHJpbnRmKCIg
ICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlmCisgICAgICAgIH0KKyAg
ICAgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgfSBlbHNlCisgICAgICAgIGNvZGVCbG9j
ay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spCit7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJ
TkcKKyAgICBwcmludGYoIkNoZWNraW5nIHN0YWNrIGhlaWdodCB3aXRoIGV4ZWMgPSAlcC5cbiIs
IGV4ZWMpOworICAgIHByaW50ZigiQ29kZUJsb2NrID0gJXAuXG4iLCBleGVjLT5jb2RlQmxvY2so
KSk7CisgICAgcHJpbnRmKCJOdW0gY2FsbGVlIHJlZ2lzdGVycyA9ICV1LlxuIiwgZXhlYy0+Y29k
ZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICBwcmludGYoIk51bSB2YXJzID0g
JXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1WYXJzKTsKKyAgICBwcmludGYoIkN1cnJl
bnQgZW5kIGlzIGF0ICVwLlxuIiwgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdp
c3RlckZpbGUoKS5lbmQoKSk7CisjZW5kaWYKKyAgICBBU1NFUlQoJmV4ZWMtPnJlZ2lzdGVycygp
W2V4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVyc10gPiBleGVjLT5nbG9iYWxE
YXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKKyAgICBpZiAoVU5MSUtF
TFkoIWV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3Jvdygm
ZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJz
XSkpKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVj
LT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMp
OworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIHBjID0g
cmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihleGVjKTsKKyAgICB9CisgICAgTExJTlRf
RU5EX0lNUEwoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVj
aykKK3sKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hl
Y2tGb3IoZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxl
KCksIENvZGVGb3JDYWxsKTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4
ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24g
PSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhy
b3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8
dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKKyAgICB9CisgICAgTExJ
TlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1v
blNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVy
cHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgaWYgKCFuZXdF
eGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVj
LT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMp
OworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIExMSU5U
X1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEp
KSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKK3sKKyNpZiBMTElO
VF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ3JlYXRpbmcgYW4gYWN0aXZhdGlvbiwgZXhl
YyA9ICVwIVxuIiwgZXhlYyk7CisjZW5kaWYKKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24g
PSBKU0FjdGl2YXRpb246OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMsIHN0YXRpY19j
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFi
bGUoKSkpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNo
KGFjdGl2YXRpb24pKTsKKyAgICBMTElOVF9SRVRVUk4oSlNWYWx1ZShhY3RpdmF0aW9uKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQoreworICAgIEpT
VmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxE
YXRhKCksIGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBleGVjLT51
bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFuZCkgPSBhcmd1bWVudHM7CisgICAgZXhlYy0+dW5jaGVj
a2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkgPSBhcmd1
bWVudHM7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
cmVhdGVfdGhpcykKK3sKKyAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGFzRnVuY3Rpb24o
ZXhlYy0+Y2FsbGVlKCkpOworICAgIAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBDb25zdHJ1
Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tZXRob2RUYWJs
ZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25z
dHJ1Y3RUeXBlSlMpOworI2VuZGlmCisgICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7Cisg
ICAgSlNWYWx1ZSBwcm90byA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAocHJvdG8u
aXNPYmplY3QoKSkKKyAgICAgICAgc3RydWN0dXJlID0gYXNPYmplY3QocHJvdG8pLT5pbmhlcml0
b3JJRChleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGVsc2UKKyAgICAgICAgc3RydWN0dXJlID0g
Y29uc3RydWN0b3ItPnNjb3BlKCktPmdsb2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUo
KTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3Ry
dWN0dXJlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpCit7
CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQodjEu
aXNQcmltaXRpdmUoKSk7CisgICAgTExJTlRfUkVUVVJOKHYxLnRvVGhpc09iamVjdChleGVjKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfb2JqZWN0KQoreworICAgIExMSU5U
X1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXdfYXJyYXkpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5
KGV4ZWMsIGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4oJkxMSU5UX09QKDIpKSwgcGNbM10udS5vcGVy
YW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQor
eworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RBcnJheShleGVjLCBleGVjLT5jb2RlQmxvY2so
KS0+Y29uc3RhbnRCdWZmZXIocGNbMl0udS5vcGVyYW5kKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfcmVnZXhwKQoreworICAgIFJlZ0V4cCog
cmVnRXhwID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlZ2V4cChwY1syXS51Lm9wZXJhbmQpOworICAg
IGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRh
eEVycm9yKGV4ZWMsICJJbnZhbGlkIGZsYWcgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9y
LiIpKTsKKyAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2JqZWN0OjpjcmVhdGUoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4cCkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbm90KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUxMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVh
bChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpz
dHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKGpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNz
ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTx0cnVlPihleGVjLCBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9n
cmVhdGVyZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4o
ZXhlYywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2luYykKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICsgMSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYykKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gMSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9pbmMpCit7CisgICAgZG91Ymxl
IHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElO
VF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCArIDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKQorewor
ICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7
CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQgLSAxKTsKKyAgICBMTElOVF9SRVRV
Uk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19q
c251bWJlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
Z2F0ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoLUxMSU5UX09QX0MoMikuanNWYWx1
ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQp
Cit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFs
dWUgdjIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyNpZiBMTElOVF9IRUxQRVJf
VFJBQ0lORworICAgIHByaW50ZigiVHJ5aW5nIHRvIGFkZCAlcyIsIHYxLmRlc2NyaXB0aW9uKCkp
OworICAgIHByaW50ZigiIHRvICVzLlxuIiwgdjIuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAg
ICAKKyAgICBpZiAodjEuaXNTdHJpbmcoKSAmJiAhdjIuaXNPYmplY3QoKSkKKyAgICAgICAgTExJ
TlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9TdHJpbmcoZXhlYykp
KTsKKyAgICAKKyAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIodjEuYXNOdW1iZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsK
KyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNBZGRTbG93Q2FzZShleGVjLCB2MSwgdjIpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKiBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfc3ViKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKSAtIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVy
KGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
IC8gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX21vZCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoZm1v
ZChMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSwgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9sc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLnRvSW50MzIoZXhlYykgPDwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIo
ZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3JzaGlmdCkKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVj
KSA+PiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfdXJzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2JpdGFuZCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9JbnQzMihleGVjKSAmIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIo
ZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG9yKQoreworICAgIExM
SU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMp
IHwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfYml0eG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIF4gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0
bm90KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcih+TExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tf
aGFzX2luc3RhbmNlKQoreworICAgIEpTVmFsdWUgYmFzZVZhbCA9IExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpOworI2lmbmRlZiBOREVCVUcKKyAgICBUeXBlSW5mbyB0eXBlSW5mbyhVbnNwZWNpZmll
ZFR5cGUpOworICAgIEFTU0VSVCghYmFzZVZhbC5pc09iamVjdCgpCisgICAgICAgICAgIHx8ICEo
dHlwZUluZm8gPSBhc09iamVjdChiYXNlVmFsKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkpLmlt
cGxlbWVudHNIYXNJbnN0YW5jZSgpKTsKKyNlbmRpZgorICAgIExMSU5UX1RIUk9XKGNyZWF0ZUlu
dmFsaWRQYXJhbUVycm9yKGV4ZWMsICJpbnN0YW5jZW9mIiwgYmFzZVZhbCkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbnN0YW5jZU9mU2xvdyhleGVjLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoNCkuanNW
YWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKQoreworICAg
IExMSU5UX1JFVFVSTihqc1R5cGVTdHJpbmdGb3JWYWx1ZShleGVjLCBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKQor
eworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4odi5pc0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBl
SW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLmlzQm9vbGVhbigpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS5pc051bWJlcigpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19zdHJpbmcpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihpc0pTU3RyaW5nKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oanNJc09iamVjdFR5cGUoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbikKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9yZXNvbHZlKQoreworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlLCBD
b21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRp
ZmllcihwY1syXS51Lm9wZXJhbmQpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9y
ZXNvbHZlX3NraXApCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKAorICAgICAgICBvcF9y
ZXNvbHZlX3NraXAsCisgICAgICAgIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlU2tpcCgKKyAg
ICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmll
cihwY1syXS51Lm9wZXJhbmQpLAorICAgICAgICAgICAgcGNbM10udS5vcGVyYW5kKSk7Cit9CisK
K3N0YXRpYyBKU1ZhbHVlIHJlc29sdmVHbG9iYWwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlv
biogcGMpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsK
KyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmpl
Y3QoKTsKKyAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpKTsKKyAgICBp
bnQgcHJvcGVydHkgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBwY1szXS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICAKKyAgICBBU1NFUlRfVU5VU0VEKHN0cnVj
dHVyZSwgc3RydWN0dXJlICE9IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOworICAgIAorICAg
IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KTsKKyAg
ICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3QpOworICAgIAorICAgIGlmIChnbG9iYWxP
YmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkpIHsKKyAgICAgICAgSlNW
YWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KTsKKyAgICAgICAgaWYgKHNs
b3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmICFnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5pc1Vu
Y2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0g
Z2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICBwY1szXS51LnN0cnVjdHVyZS5zZXQoCisgICAg
ICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIHBjWzRdID0gc2xv
dC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisgICAgCisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNy
ZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpOworICAgIHJldHVybiBKU1Zh
bHVlKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCkKK3sK
KyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWwsIHJlc29sdmVHbG9i
YWwoZXhlYywgcGMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMsIHJlc29sdmVHbG9iYWwoZXhlYywgcGMpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAg
TExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIENvbW1vblNs
b3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBj
WzJdLnUub3BlcmFuZCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVf
YmFzZSkKK3sKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVu
dGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKHBjWzNdLnUub3BlcmFuZCkgeworICAg
ICAgICBKU1ZhbHVlIGJhc2UgPSBKU0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5z
Y29wZUNoYWluKCksIHRydWUpOworICAgICAgICBpZiAoIWJhc2UpCisgICAgICAgICAgICBMTElO
VF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50
LnVzdHJpbmcoKSkpOworICAgICAgICBMTElOVF9SRVRVUk4oYmFzZSk7CisgICAgfQorICAgIAor
ICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2Jhc2UsIEpTQzo6cmVzb2x2ZUJh
c2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgZmFsc2UpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCit7CisgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgUHJvcGVy
dHlTbG90IHNsb3Qob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVC
bG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFvYmplY3QtPmdl
dFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNy
ZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygp
KSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNv
bHZlX3dpdGhfYmFzZSkKK3sKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6
b3BSZXNvbHZlV2l0aEJhc2UoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNb
M10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
OworICAgIExMSU5UX09QKDIpID0gcmVzdWx0OworICAgIC8vIEZJWE1FOiB0ZWNobmljYWxseSBz
aG91bGQgaGF2ZSBwcm9maWxpbmcsIGJ1dCB3ZSBkb24ndCBkbyBpdCBiZWNhdXNlIHRoZSBERkcg
d29uJ3QgdXNlIGl0LgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCit7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25T
bG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhUaGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVu
dGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19F
WENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVj
aG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVz
ZSB0aGUgREZHIHdvbid0IHVzZSBpdC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5p
ZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwor
CisgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KTsK
KyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgxKSA9IHJlc3VsdDsK
KworICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJs
ZSgpCisgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUKKyAgICAgICAgJiYg
c2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OlZhbHVlKSB7CisgICAg
ICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAg
ICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAg
ICAgCisgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisg
ICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2Fj
aGluZygpKSB7CisgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAg
ICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBz
dHJ1Y3R1cmUpOworICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZz
ZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwY1tP
UENPREVfTEVOR1RIKG9wX2dldF9ieV9pZCkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9
IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCit7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9
IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFz
ZVZhbHVlID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJh
c2VWYWx1ZSk7CisgICAgTExJTlRfUkVUVVJOKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNs
b3QpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCkKK3sKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXIm
IGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBpZiAocGNbOF0udS5v
cGVyYW5kKQorICAgICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5wdXREaXJlY3QoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIGVs
c2UKKyAgICAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCksIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIGlm
IChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7Cisg
ICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOwor
ICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAg
ICAgICAgCisgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgp
CisgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5
Q2FjaGluZygpCisgICAgICAgICAgICAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAg
ICAgICAgICAgCisgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90
OjpOZXdQcm9wZXJ0eSkgeworICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rp
b25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNp
dHkoKSA9PSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAg
ICAgICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lIG9mIHRoZSBtZXRob2Rz
IHdlIGNhbGwKKyAgICAgICAgICAgICAgICAgICAgLy8gYmVsb3cgbWF5IEdDLgorICAgICAgICAg
ICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29w
X3B1dF9ieV9pZCk7CisKKyAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hh
aW4oZXhlYywgYmFzZUNlbGwpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAg
ICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBz
dHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3Bl
cmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAg
ICAgICAgICAgIHBjWzZdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0
dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0
dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNo
YWluKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisg
ICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCksIGNoYWluKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCisgICAgICAgICAgICAgICAgICAgICAgICBw
Y1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s0
XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEo
KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAg
ICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFs
dWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIExMSU5UX0VO
RCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X2lkKQoreworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIGJh
c2VPYmplY3QgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b09iamVjdChleGVjKTsKKyAgICBi
b29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVy
dHkoYmFzZU9iamVjdCwgZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFu
ZCkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGlmICghY291bGREZWxldGUg
JiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRl
VHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICBMTElO
VF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlIGdl
dEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2Ny
aXB0KQoreworICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5p
c1N0cmluZygpKSkgeworICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXND
ZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eShleGVjLCBhc1N0cmluZyhzdWJzY3JpcHQpLT52YWx1
ZShleGVjKSkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBp
ZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlw
dC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpICYmIGFzU3Ry
aW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzU3Ry
aW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAgaWYg
KGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5B
Y2Nlc3NJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc0J5dGVBcnJheShiYXNlVmFsdWUp
LT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBiYXNlVmFsdWUu
Z2V0KGV4ZWMsIGkpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMs
IHN1YnNjcmlwdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIHJldHVybiBiYXNl
VmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2dldF9ieV92YWwpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9ieV92YWws
IGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5
X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsK
KyAgICBpZiAoIWFyZ3VtZW50cykgeworICAgICAgICBhcmd1bWVudHMgPSBBcmd1bWVudHM6OmNy
ZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpOworICAgICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKKyAgICAgICAgTExJTlRfT1AoMikgPSBhcmd1bWVudHM7CisgICAgICAgIGV4ZWMt
PnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkp
ID0gYXJndW1lbnRzOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhl
YywgYXJndW1lbnRzLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKQoreworICAgIExMSU5UX1JFVFVSTihnZXRCeVZh
bChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCkKK3sKKyAgICBKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNj
cmlwdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJ
bnQzMigpKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7Cisg
ICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgeworICAgICAgICAgICAgSlNBcnJheSog
anNBcnJheSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChqc0FycmF5LT5j
YW5TZXRJbmRleChpKSkKKyAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRleChnbG9iYWxE
YXRhLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgSlNBcnJh
eTo6cHV0QnlJbmRleChqc0FycmF5LCBleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBMTElO
VF9FTkQoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUp
CisgICAgICAgICAgICAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChp
KSkgeworICAgICAgICAgICAgSlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXko
YmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAg
ICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNJbnQzMigpKTsKKyAgICAg
ICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2
YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4
KGksIHZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaSwgdmFs
dWUpOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBw
cm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChleGVj
LT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywg
cHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VW
YWx1ZS50b09iamVjdChleGVjKTsKKyAgICAKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5U
X09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAgIGJvb2wgY291bGREZWxldGU7CisgICAgCisg
ICAgdWludDMyX3QgaTsKKyAgICBpZiAoc3Vic2NyaXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAg
Y291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5
SW5kZXgoYmFzZU9iamVjdCwgZXhlYywgaSk7CisgICAgZWxzZSB7CisgICAgICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOworICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNj
cmlwdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICBMTElOVF9DSEVDS19F
WENFUFRJT04oKTsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBwcm9wZXJ0eSk7CisgICAgfQor
ICAgIAorICAgIGlmICghY291bGREZWxldGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0
TW9kZSgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJs
ZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0Jvb2xl
YW4oY291bGREZWxldGUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9p
bmRleCkKK3sKKyAgICBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS5wdXQoZXhlYywgcGNbMl0udS5v
cGVyYW5kLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyKQoreworICAgIEFTU0VSVChMTElO
VF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBh
c09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIElkZW50aWZpZXImIGlkZW50ID0g
ZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBBU1NF
UlQoTExJTlRfT1AoMykuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIGJhc2VPYmotPm1ldGhv
ZFRhYmxlKCktPmRlZmluZUdldHRlcihiYXNlT2JqLCBleGVjLCBpZGVudCwgYXNPYmplY3QoTExJ
TlRfT1AoMykuanNWYWx1ZSgpKSwgMCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wdXRfc2V0dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5q
c1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChM
TElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29k
ZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRf
T1AoMykuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCkt
PmRlZmluZVNldHRlcihiYXNlT2JqLCBleGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMyku
anNWYWx1ZSgpKSwgMCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbXBfc2NvcGVzKQoreworICAgIHVuc2lnbmVkIGNvdW50ID0gcGNbMV0udS5vcGVy
YW5kOworICAgIFNjb3BlQ2hhaW5Ob2RlKiB0bXAgPSBleGVjLT5zY29wZUNoYWluKCk7CisgICAg
d2hpbGUgKGNvdW50LS0pCisgICAgICAgIHRtcCA9IHRtcC0+cG9wKCk7CisgICAgZXhlYy0+c2V0
U2NvcGVDaGFpbih0bXApOworICAgIHBjICs9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKQoreworICAgIExMSU5U
X0JSQU5DSChvcF9qdHJ1ZSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pmYWxzZSkKK3sKKyAgICBMTElOVF9C
UkFOQ0gob3BfamZhbHNlLCAhTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKQoreworICAgIExMSU5UX0JS
QU5DSChvcF9qbGVzcywganNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfam5sZXNzKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmxlc3MsICFqc0xlc3M8dHJ1ZT4o
ZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcikKK3sKKyAgICBMTElOVF9C
UkFOQ0gob3BfamdyZWF0ZXIsIGpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbmdyZWF0ZXIpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlciwgIWpz
TGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSku
anNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKQorewor
ICAgIExMSU5UX0JSQU5DSChvcF9qbGVzc2VxLCBqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9P
UF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmxl
c3NlcSwgIWpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdy
ZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXJlcSwganNMZXNzRXE8ZmFs
c2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyZXEpCit7CisgICAg
TExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlcmVxLCAhanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSkKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5l
ZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIEFTU0VSVChzY3J1dGluZWUuaXNEb3Vi
bGUoKSk7CisgICAgZG91YmxlIHZhbHVlID0gc2NydXRpbmVlLmFzRG91YmxlKCk7CisgICAgaW50
MzJfdCBpbnRWYWx1ZSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKTsKKyAgICBpbnQgZGVm
YXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAodmFsdWUgPT0gaW50VmFsdWUp
IHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAg
ICAgICAgcGMgKz0gY29kZUJsb2NrLT5pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5v
cGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShpbnRWYWx1ZSwgZGVmYXVsdE9mZnNldCk7CisgICAgfSBl
bHNlCisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKQoreworICAgIEpTVmFsdWUg
c2NydXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgaW50IGRlZmF1bHRPZmZz
ZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKCFzY3J1dGluZWUuaXNTdHJpbmcoKSkKKyAg
ICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBlbHNlIHsKKyAgICAgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2Nr
LT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShh
c1N0cmluZyhzY3J1dGluZWUpLT52YWx1ZShleGVjKS5pbXBsKCksIGRlZmF1bHRPZmZzZXQpOwor
ICAgIH0KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
d19mdW5jKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CisgICAgQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUKKyAgICAg
ICAgICAgfHwgIWNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpCisgICAgICAgICAgIHx8
IGV4ZWMtPnVuY2hlY2tlZFIoY29kZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1
ZSgpKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ3JlYXRpbmcgZnVu
Y3Rpb24hXG4iKTsKKyNlbmRpZgorICAgIExMSU5UX1JFVFVSTihjb2RlQmxvY2stPmZ1bmN0aW9u
RGVjbChwY1syXS51Lm9wZXJhbmQpLT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmNfZXhwKQoreworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgRnVuY3Rpb25FeGVjdXRh
YmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzJdLnUub3BlcmFuZCk7
CisgICAgSlNGdW5jdGlvbiogZnVuYyA9IGZ1bmN0aW9uLT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3Bl
Q2hhaW4oKSk7CisgICAgCisgICAgaWYgKCFmdW5jdGlvbi0+bmFtZSgpLmlzTnVsbCgpKSB7Cisg
ICAgICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIGZ1bmN0aW9uU2NvcGVPYmplY3QgPSBKU1N0YXRp
Y1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgZnVuY3Rpb24tPm5hbWUoKSwgZnVuYywgUmVhZE9u
bHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgZnVuYy0+c2V0U2NvcGUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBmdW5jLT5zY29wZSgpLT5wdXNoKGZ1bmN0aW9uU2NvcGVPYmplY3QpKTsKKyAgICB9Cisg
ICAgCisgICAgTExJTlRfUkVUVVJOKGZ1bmMpOworfQorCitzdGF0aWMgSGVscGVyUmV0dXJuVHlw
ZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywg
SlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgIEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisKKyAgICBleGVjQ2FsbGVlLT5z
ZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29k
ZUJsb2NrKDApOworCisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
Y2FsbGVlLCBjYWxsRGF0YSk7CisgICAgCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxs
VHlwZUpTKTsKKyAgICAKKyAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSG9zdCkgewor
ICAgICAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICAgICAg
CisgICAgICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgICAgICB9CisgICAg
ICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgICAgIHByaW50ZigiQ2FsbCBjYWxs
ZWUgaXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5k
aWYKKworICAgICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKTsKKyAgICAgICAg
TExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywg
Y2FsbGVlKSk7CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7
CisgICAgCisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIENvbnN0cnVjdFR5
cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEoY2FsbGVlLCBjb25zdHJ1Y3REYXRh
KTsKKyAgICAKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlSlMpOwor
ICAgIAorICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVIb3N0KSB7CisgICAg
ICAgIGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29u
c3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICBMTElOVF9D
QUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lO
RworICAgICAgICBwcmludGYoIkNvbnN0cnVjdG9yIGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjog
JXNcbiIsIGNhbGxlZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorCisgICAgQVNTRVJUKGNvbnN0
cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZU5vbmUpOworICAgIExMSU5UX0NBTExfVEhST1coZXhl
YywgcGMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworfQorCitp
bmxpbmUgSGVscGVyUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJ
bnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSlNWYWx1ZSBjYWxs
ZWVBc1ZhbHVlLCBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gMCkKK3sKKyAgICBK
U0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVl
KTsKKyAgICBpZiAoIWNhbGxlZUFzRnVuY3Rpb25DZWxsKQorICAgICAgICByZXR1cm4gaGFuZGxl
SG9zdENhbGwoZXhlY0NhbGxlZSwgcGMsIGNhbGxlZUFzVmFsdWUsIGtpbmQpOworICAgIAorICAg
IEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOwor
ICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oY2FsbGVlLT5zY29wZVVuY2hlY2tlZCgpKTsK
KyAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOwor
ICAgIAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOworICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gMDsKKyAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAg
ICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRk
cmVzc0ZvckNhbGwoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVj
dXRhYmxlKTsKKyAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5j
b21waWxlRm9yKGV4ZWNDYWxsZWUsIGNhbGxlZS0+c2NvcGUoKSwga2luZCk7CisgICAgICAgIGlm
IChlcnJvcikKKyAgICAgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlY0NhbGxlZS0+Y2FsbGVy
RnJhbWUoKSwgcGMsIGVycm9yKTsKKyAgICAgICAgY29kZUJsb2NrID0gJmZ1bmN0aW9uRXhlY3V0
YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgICAgIEFTU0VSVChjb2RlQmxv
Y2spOworICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMo
KSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQorICAg
ICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZVdp
dGhBcml0eUNoZWNrRm9yKGtpbmQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUHRy
ID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NG
b3JDYWxsKCk7CisgICAgfQorICAgIAorICAgIGlmIChjYWxsTGlua0luZm8pIHsKKyAgICAgICAg
aWYgKGNhbGxMaW5rSW5mby0+aXNPbkxpc3QoKSkKKyAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+
cmVtb3ZlKCk7CisgICAgICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlciA9IGV4ZWNDYWxsZWUtPmNh
bGxlckZyYW1lKCk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+Y2FsbGVlLnNldChleGVjQ2FsbGVy
LT5nbG9iYWxEYXRhKCksIGV4ZWNDYWxsZXItPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUo
KSwgY2FsbGVlKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5zZXQoZXhl
Y0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBleGVjQ2FsbGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVj
dXRhYmxlKCksIGNhbGxlZSk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+bWFjaGluZUNvZGVUYXJn
ZXQgPSBjb2RlUHRyOworICAgICAgICBpZiAoY29kZUJsb2NrKQorICAgICAgICAgICAgY29kZUJs
b2NrLT5saW5rSW5jb21pbmdDYWxsKGNhbGxMaW5rSW5mbyk7CisgICAgfQorICAgIAorICAgIExM
SU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNz
KCkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChFeGVjU3RhdGUq
IGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorewor
ICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lLgorICAg
IC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5
LgorICAgIC8vIC0gSWYgcG9zc2libGUsIGxpbmsgdGhlIGNhbGwncyBpbmxpbmUgY2FjaGUuCisg
ICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFu
ZCB0aGUgbmV3IGNhbGwgZnJhbWUuCisgICAgCisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0g
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVl
ID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUt
PnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBl
eGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICAKKyAgICBBU1NFUlQocGNbNF0u
dS5jYWxsTGlua0luZm8pOworICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIGtp
bmQsIGNhbGxlZUFzVmFsdWUsIHBjWzRdLnUuY2FsbExpbmtJbmZvKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NhbGwpCit7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBj
LCBDb2RlRm9yQ2FsbCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3Qp
Cit7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ29uc3RydWN0KTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncykKK3sKKyAgICAvLyBU
aGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZSB3aGlsZSByZXNwZWN0
aW5nIHRoZSB2YXJpYWJsZSBhcmd1bWVudHMuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8g
Y2FsbCBhbmQgY29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBSZXR1cm4gYSB0dXBs
ZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUu
CisgICAgCisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVl
KCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gbG9hZFZhcmFyZ3MoCisgICAg
ICAgIGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgp
LAorICAgICAgICBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCksIHBjWzRdLnUub3BlcmFuZCk7CisgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhl
YywgcGMpOworICAgIAorICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpD
YWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShl
eGVjKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCku
dGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxf
dmFyYXJncykpOworICAgIAorICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENv
ZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2NhbGxfZXZhbCkKK3sKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKS5q
c1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNd
LnUub3BlcmFuZDsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxE
YXRhKCk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVj
KTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNh
bGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNo
YWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVj
dGlvbio+KCZsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOworICAgIGV4ZWNDYWxsZWUtPnNl
dENvZGVCbG9jaygwKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1l
bnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4ocGMgKyBPUENPREVfTEVOR1RI
KG9wX2NhbGxfZXZhbCkpOworICAgIAorICAgIGlmICghaXNIb3N0RnVuY3Rpb24oY2FsbGVlQXNW
YWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQorICAgICAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxs
ZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7CisgICAgCisgICAgZ2xvYmFsRGF0
YS5ob3N0Q2FsbFJldHVyblZhbHVlID0gZXZhbChleGVjQ2FsbGVlKTsKKyAgICBMTElOVF9DQUxM
X1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZf
YWN0aXZhdGlvbikKK3sKKyAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNj
b3BlQ2hhaW4oKSk7CisgICAgSlNWYWx1ZSBhY3RpdmF0aW9uVmFsdWUgPSBMTElOVF9PUCgxKS5q
c1ZhbHVlKCk7CisgICAgaWYgKCFhY3RpdmF0aW9uVmFsdWUpIHsKKyAgICAgICAgaWYgKEpTVmFs
dWUgdiA9IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJd
LnUub3BlcmFuZCkpLmpzVmFsdWUoKSkgeworICAgICAgICAgICAgaWYgKCFleGVjLT5jb2RlQmxv
Y2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICAgICAgYXNBcmd1bWVudHModiktPnRl
YXJPZmYoZXhlYyk7CisgICAgICAgIH0KKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAg
IEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGFzQWN0aXZhdGlvbihhY3RpdmF0aW9uVmFsdWUp
OworICAgIGFjdGl2YXRpb24tPnRlYXJPZmYoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBpZiAo
SlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIo
cGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKQorICAgICAgICBhc0FyZ3VtZW50cyh2KS0+ZGlk
VGVhck9mZkFjdGl2YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBhY3RpdmF0aW9uKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3Vt
ZW50cykKK3sKKyAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCktPnVzZXNBcmd1bWVudHMoKSAm
JiAhZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgYXNBcmd1
bWVudHMoZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMV0u
dS5vcGVyYW5kKSkuanNWYWx1ZSgpKS0+dGVhck9mZihleGVjKTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNhdCkKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNTdHJpbmcoZXhlYywgJkxMSU5UX09QKDIpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSkKK3sKKyAgICBMTElOVF9SRVRV
Uk4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9QcmltaXRpdmUoZXhlYykpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X3BuYW1lcykKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElO
VF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKHYuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAg
ICAgICBwYyArPSBwY1s1XS51Lm9wZXJhbmQ7CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0K
KyAgICAKKyAgICBKU09iamVjdCogbyA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBvLT5zdHJ1Y3R1cmUoKTsKKyAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
KiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gc3RydWN0dXJlLT5lbnVtZXJhdGlvbkNhY2hlKCk7
CisgICAgaWYgKCFqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yIHx8IGpzUHJvcGVydHlOYW1lSXRlcmF0
b3ItPmNhY2hlZFByb3RvdHlwZUNoYWluKCkgIT0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihl
eGVjKSkKKyAgICAgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IEpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6OmNyZWF0ZShleGVjLCBvKTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9IEpTVmFsdWUo
anNQcm9wZXJ0eU5hbWVJdGVyYXRvcik7CisgICAgTExJTlRfT1AoMikgPSBKU1ZhbHVlKG8pOwor
ICAgIExMSU5UX09QKDMpID0gUmVnaXN0ZXI6OndpdGhJbnQoMCk7CisgICAgTExJTlRfT1AoNCkg
PSBSZWdpc3Rlcjo6d2l0aEludChqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5zaXplKCkpOworICAg
IAorICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X3BuYW1lcyk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXh0X3BuYW1lKQoreworICAgIEpT
T2JqZWN0KiBiYXNlID0gYXNPYmplY3QoTExJTlRfT1AoMikuanNWYWx1ZSgpKTsKKyAgICBKU1N0
cmluZyogcHJvcGVydHkgPSBhc1N0cmluZyhMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIGlm
IChiYXNlLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5LT52YWx1
ZShleGVjKSkpKSB7CisgICAgICAgIC8vIEdvIHRvIHRhcmdldC4KKyAgICAgICAgcGMgKz0gcGNb
Nl0udS5vcGVyYW5kOworICAgIH0gLy8gRWxzZSwgZG9uJ3QgY2hhbmdlIHRoZSBQQywgc28gdGhl
IGludGVycHJldGVyIHdpbGwgcmVsb29wLgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSkKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9P
UCgxKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIExMSU5UX09QKDEpID0gbzsKKyAg
ICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChvKSk7CisgICAg
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bfc2Nv
cGUpCit7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnBvcCgp
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hf
bmV3X3Njb3BlKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2Nr
KCk7CisgICAgSlNPYmplY3QqIHNjb3BlID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4
ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgzKS5q
c1ZhbHVlKCksIERvbnREZWxldGUpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2Nv
cGVDaGFpbigpLT5wdXNoKHNjb3BlKSk7CisgICAgTExJTlRfUkVUVVJOKHNjb3BlKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KQoreworICAgIExMSU5UX1RIUk9XKExMSU5U
X09QX0MoMSkuanNWYWx1ZSgpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93
X3JlZmVyZW5jZV9lcnJvcikKK3sKKyAgICBMTElOVF9USFJPVyhjcmVhdGVSZWZlcmVuY2VFcnJv
cihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKQoreworICAgIGludCBk
ZWJ1Z0hvb2tJRCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0u
dS5vcGVyYW5kOworICAgIGludCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAg
ICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0
PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIAor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93
aWxsX2NhbGwpCit7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkp
LT53aWxsRXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VO
RCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKK3sK
KyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPmRpZEV4ZWN1dGUo
ZXhlYywgTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50SGVscGVyc19oCisjZGVmaW5lIExMSW50SGVscGVy
c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBF
eGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKK3R5
cGVkZWYgaW50NjRfdCBIZWxwZXJSZXR1cm5UeXBlOworCitleHRlcm4gIkMiIEhlbHBlclJldHVy
blR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBm
cm9tV2hlcmUsIGludCBvcGVyYW5kKTsKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGlu
dF90cmFjZV92YWx1ZShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGlu
dCBvcGVyYW5kKTsKKworI2RlZmluZSBMTElOVF9IRUxQRVJfREVDTChuYW1lKSBcCisgICAgZXh0
ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50XyMjbmFtZShFeGVjU3RhdGUqIGV4ZWMsIElu
c3RydWN0aW9uKiBwYykKKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpOworTExJ
TlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRf
SEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElO
VF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0
cmFjZSk7CitMTElOVF9IRUxQRVJfREVDTChzcGVjaWFsX3RyYWNlKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGVudHJ5X29zcik7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9y
X2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChsb29wX29zcik7CitMTElOVF9IRUxQ
RVJfREVDTChyZXBsYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2sp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVh
dGVfYXJndW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29udmVydF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25ld19yZWdleHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25v
dCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25lcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25zdHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVz
cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3ByZV9kZWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
dG9fanNudW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfYWRkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1Yik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
ZGl2KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2QpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2xzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9i
aXRhbmQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG9yKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9iaXR4b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9pbnN0YW5jZW9mKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBl
b2YpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNf
bnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19zdHJpbmcpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2lzX29iamVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNf
ZnVuY3Rpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9yZXNvbHZlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3Nr
aXApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmVfd2l0aF9iYXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhp
cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHV0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2dldF9hcmd1bWVudF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9i
eV9wbmFtZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHV0X2J5X2luZGV4KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfc2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qbXBfc2NvcGVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qdHJ1ZSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfamZhbHNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9qZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVy
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbmxlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3N3aXRjaF9pbW0pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9j
aGFyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3
X2Z1bmNfZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxf
dmFyYXJncyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0
cmNhdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXh0X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3B1c2hfbmV3X3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9kZWJ1Zyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93
aWxsX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpOwor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkK
KworI2VuZGlmIC8vIExMSW50SGVscGVyc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludE9mZmxpbmVBc21Db25maWdfaAorI2RlZmlu
ZSBMTEludE9mZmxpbmVBc21Db25maWdfaAorCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisj
aWYgQ1BVKFg4NikKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDEKKyNlbHNlCisjZGVmaW5lIE9G
RkxJTkVfQVNNX1g4NiAwCisjZW5kaWYKKworI2lmIENQVShBUk12NykKKyNkZWZpbmUgT0ZGTElO
RV9BU01fQVJNdjcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMAorI2VuZGlm
CisKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFC
TEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDAKKyNlbmRp
ZgorCisjaWYgQ1BVKEJJR19FTkRJQU4pCisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4g
MQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAwCisjZW5kaWYKKworI2lm
IEVOQUJMRShMTElOVF9PU1JfVE9fSklUKQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxF
RCAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAwCisjZW5kaWYKKwor
I2lmIExMSU5UX0VYRUNVVElPTl9UUkFDSU5HCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElP
Tl9UUkFDSU5HIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5H
IDAKKyNlbmRpZgorCisjZW5kaWYgLy8gTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgor
I2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJ
VFN0dWJzLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAi
SlNUeXBlSW5mby5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKKyNpbmNsdWRlICJK
dW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRl
ICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgorI2luY2x1ZGUgIlNj
b3BlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVD
aGFpbi5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgT0ZGTElORV9BU01fT0ZG
U0VUT0YoY2xhenosIGZpZWxkKSBPQkpFQ1RfT0ZGU0VUT0YoY2xhenosIGZpZWxkKQorCitjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCogZHVtbXkoKTsKK307CisKK2NvbnN0IHVuc2lnbmVkKiBMTEludE9mZnNldHNFeHRyYWN0
b3I6OmR1bW15KCkKK3sKKyNpbmNsdWRlICJMTEludERlc2lyZWRPZmZzZXRzLmgiCisgICAgcmV0
dXJuIGV4dHJhY3RvclRhYmxlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworaW50IG1haW4o
aW50LCBjaGFyKiopCit7CisgICAgLy8gT3V0IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0aW9uLCBt
YWtlIHN1cmUgdGhhdCBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkgaXMgbGl2ZSwKKyAg
ICAvLyBhbmQgdGhlIGV4dHJhY3RvclRhYmxlIGlzIGxpdmUsIHRvby4KKyAgICBwcmludGYoIiVw
XG4iLCBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSk7CisgICAgcmV0dXJuIDA7
Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3Mu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJM
TEludFRodW5rcy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSlNJbnRlcmZh
Y2VKSVQuaCIKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRl
cnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworc3RhdGlj
IE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEsIHZvaWQgKCp0YXJnZXQpKCkpCit7CisgICAgSlNJbnRlcmZhY2VKSVQg
aml0OworICAgIAorICAgIC8vIEZJWE1FOiB0aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0
byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20gbm90IHN1cmUgSSBjYXJlLgorICAgIGppdC5tb3ZlKEpT
SW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSks
IEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJl
Z1QwKTsKKyAgICAKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0
LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUo
KTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtH
ZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0
ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9s
b2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVu
dHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVy
biBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9u
Rm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEp
Cit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8o
Z2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7Cit9
CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRv
KGdsb2JhbERhdGEsIGxsaW50X2V2YWxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
KQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGlu
dF9wcm9ncmFtX3Byb2xvZ3VlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisK
KyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRUaHVu
a3NfaAorI2RlZmluZSBMTEludFRodW5rc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4K
KworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRhOworCituYW1lc3BhY2Ug
TExJbnQgeworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVu
a0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlv
bkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpT
R2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0
QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOwor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkK
KworI2VuZGlmIC8vIExMSW50VGh1bmtzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjM4MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworCisjIENyYXNoIGNvdXJzZSBvbiB0aGUgbGFuZ3VhZ2UgdGhhdCB0aGlz
IGlzIHdyaXR0ZW4gaW4gKHdoaWNoIEkganVzdCBjYWxsCisjICJhc3NlbWJseSIgZXZlbiB0aG91
Z2ggaXQncyBtb3JlIHRoYW4gdGhhdCk6CisjCisjIC0gTW9zdGx5IGdhcy1zdHlsZSBvcGVyYW5k
IG9yZGVyaW5nLiBUaGUgbGFzdCBvcGVyYW5kIHRlbmRzIHRvIGJlIHRoZQorIyAgIGRlc3RpbmF0
aW9uLiBTbyAiYSA6PSBiIiBpcyB3cml0dGVuIGFzICJtb3YgYiwgYSIuIEJ1dCB1bmxpa2UgZ2Fz
LAorIyAgIGNvbXBhcmlzb25zIGFyZSBpbi1vcmRlciwgc28gImlmIChhIDwgYikiIGlzIHdyaXR0
ZW4gYXMKKyMgICAiYmlsdCBhLCBiLCAuLi4iLgorIworIyAtICJiIiA9IGJ5dGUsICJoIiA9IDE2
LWJpdCB3b3JkLCAiaSIgPSAzMi1iaXQgd29yZCwgInAiID0gcG9pbnRlci4KKyMgICBDdXJyZW50
bHkgdGhpcyBpcyBqdXN0IDMyLWJpdCBzbyAiaSIgYW5kICJwIiBhcmUgaW50ZXJjaGFuZ2VhYmxl
CisjICAgZXhjZXB0IHdoZW4gYW4gb3Agc3VwcG9ydHMgb25lIGJ1dCBub3QgdGhlIG90aGVyLgor
IworIyAtIEluIGdlbmVyYWwsIHZhbGlkIG9wZXJhbmRzIGZvciBtYWNybyBpbnZvY2F0aW9ucyBh
bmQgaW5zdHJ1Y3Rpb25zIGFyZQorIyAgIHJlZ2lzdGVycyAoZWcgInQwIiksIGFkZHJlc3NlcyAo
ZWcgIjRbdDBdIiksIGJhc2UtaW5kZXggYWRkcmVzc2VzCisjICAgKGVnICI3W3QwLCB0MSwgMl0i
KSwgYWJzb2x1dGUgYWRkcmVzc2VzIChlZyAiMHhhMDAwMDAwMFtdIiksIG9yIGxhYmVscworIyAg
IChlZyAiX2ZvbyIgb3IgIi5mb28iKS4gTWFjcm8gaW52b2NhdGlvbnMgY2FuIGFsc28gdGFrZSBh
bm9ueW1vdXMKKyMgICBtYWNyb3MgYXMgb3BlcmFuZHMuIEluc3RydWN0aW9ucyBjYW5ub3QgdGFr
ZSBhbm9ueW1vdXMgbWFjcm9zLgorIworIyAtIExhYmVscyBtdXN0IGhhdmUgbmFtZXMgdGhhdCBi
ZWdpbiB3aXRoIGVpdGhlciAiXyIgb3IgIi4iLiAgQSAiLiIgbGFiZWwKKyMgICBpcyBsb2NhbCBh
bmQgZ2V0cyByZW5hbWVkIGJlZm9yZSBjb2RlIGdlbiB0byBtaW5pbWl6ZSBuYW1lc3BhY2UKKyMg
ICBwb2xsdXRpb24uIEEgIl8iIGxhYmVsIGlzIGFuIGV4dGVybiBzeW1ib2wgKGkuZS4gIi5nbG9i
bCIpLiBUaGUgIl8iCisjICAgbWF5IG9yIG1heSBub3QgYmUgcmVtb3ZlZCBkdXJpbmcgY29kZSBn
ZW4gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGFzbQorIyAgIGNvbnZlbnRpb25zIGZvciBDIG5h
bWUgbWFuZ2xpbmcgb24gdGhlIHRhcmdldCBwbGF0Zm9ybSBtYW5kYXRlIGEgIl8iCisjICAgcHJl
Zml4LgorIworIyAtIEEgIm1hY3JvIiBpcyBhIGxhbWJkYSBleHByZXNzaW9uLCB3aGljaCBtYXkg
YmUgZWl0aGVyIGFub255bW91cyBvcgorIyAgIG5hbWVkLiBCdXQgdGhpcyBoYXMgY2F2ZWF0cy4g
Im1hY3JvIiBjYW4gdGFrZSB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLAorIyAgIHdoaWNoIG1heSBi
ZSBtYWNyb3Mgb3IgYW55IHZhbGlkIG9wZXJhbmRzLCBidXQgaXQgY2FuIG9ubHkgcmV0dXJuCisj
ICAgY29kZS4gQnV0IHlvdSBjYW4gZG8gVHVyaW5nLWNvbXBsZXRlIHRoaW5ncyB2aWEgY29udGlu
dWF0aW9uIHBhc3NpbmcKKyMgICBzdHlsZTogIm1hY3JvIGZvbyAoYSwgYikgYihhKSBlbmQgZm9v
KGZvbywgZm9vKSIuIEFjdHVhbGx5LCBkb24ndCBkbworIyAgIHRoYXQsIHNpbmNlIHlvdSdsbCBq
dXN0IGNyYXNoIHRoZSBhc3NlbWJsZXIuCisjCisjIC0gQW4gImlmIiBpcyBhIGNvbmRpdGlvbmFs
IG9uIHNldHRpbmdzLiBBbnkgaWRlbnRpZmllciBzdXBwbGllZCBpbiB0aGUKKyMgICBwcmVkaWNh
dGUgb2YgYW4gImlmIiBpcyBhc3N1bWVkIHRvIGJlIGEgI2RlZmluZSB0aGF0IGlzIGF2YWlsYWJs
ZQorIyAgIGR1cmluZyBjb2RlIGdlbi4gU28geW91IGNhbid0IHVzZSAiaWYiIGZvciBjb21wdXRh
dGlvbiBpbiBhIG1hY3JvLCBidXQKKyMgICB5b3UgY2FuIHVzZSBpdCB0byBzZWxlY3QgZGlmZmVy
ZW50IHBpZWNlcyBvZiBjb2RlIGZvciBkaWZmZXJlbnQKKyMgICBwbGF0Zm9ybXMuCisjCisjIC0g
QXJndW1lbnRzIHRvIG1hY3JvcyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIHJhdGhlciB0aGFuIGR5
bmFtaWMgc2NvcGluZy4KKyMgICBDb25zdCdzIGFsc28gZm9sbG93IGxleGljYWwgc2NvcGluZyBh
bmQgbWF5IG92ZXJyaWRlIChoaWRlKSBhcmd1bWVudHMKKyMgICBvciBvdGhlciBjb25zdHMuIEFs
bCB2YXJpYWJsZXMgKGFyZ3VtZW50cyBhbmQgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0
byBvcGVyYW5kcy4gQWRkaXRpb25hbGx5LCBhcmd1bWVudHMgKGJ1dCBub3QgY29uc3RhbnRzKSBj
YW4gYmUgYm91bmQKKyMgICB0byBtYWNyb3MuCisKKworIyBUaGVzZSBkZWNsYXJhdGlvbnMgbXVz
dCBtYXRjaCBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaC4KK2NvbnN0IENhbGxGcmFtZUhlYWRl
clNpemUgPSA0OAorY29uc3QgQXJndW1lbnRDb3VudCA9IC00OAorY29uc3QgQ2FsbGVyRnJhbWUg
PSAtNDAKK2NvbnN0IENhbGxlZSA9IC0zMgorY29uc3QgU2NvcGVDaGFpbiA9IC0yNAorY29uc3Qg
UmV0dXJuUEMgPSAtMTYKK2NvbnN0IENvZGVCbG9jayA9IC04CisKK2NvbnN0IFRoaXNBcmd1bWVu
dE9mZnNldCA9IC1DYWxsRnJhbWVIZWFkZXJTaXplIC0gOAorCisjIERlY2xhcmUgc29tZSBhbGlh
c2VzIGZvciB0aGUgcmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAorCisjIE9m
ZnNldHMgbmVlZGVkIGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRpb24uCitp
ZiBCSUdfRU5ESUFOCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBheWxvYWRP
ZmZzZXQgPSA0CitlbHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0IFBheWxv
YWRPZmZzZXQgPSAwCitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCitj
b25zdCBJbnQzMlRhZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51bGxUYWcg
PSAtMworY29uc3QgVW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQorY29uc3Qg
RW1wdHlWYWx1ZVRhZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29uc3QgTG93
ZXN0VGFnID0gRGVsZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25zdCBTdHJp
bmdUeXBlID0gNQorY29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFncyBjb25zdGFu
dHMuCitjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVtZW50c0hh
c0luc3RhbmNlID0gMgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDgKKwor
IyBIZWFwIGFsbG9jYXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFz
c0luZGV4ID0gMworCisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3QgRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNvbnN0YW50
cy4KK2NvbnN0IEdsb2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0IEZ1bmN0
aW9uQ29kZSA9IDIKKworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0
aGUgYXJndW1lbnQgY291bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCAr
IFRhZ09mZnNldAorCisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25zdCBWZWN0
b3JTaXplT2Zmc2V0ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisjIFN0cmlu
ZyBmbGFncy4KK2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxpdGllcwor
bWFjcm8gY3Jhc2goKQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3ZlIDAsIHQw
CisgICAgY2FsbCB0MAorZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAgaWYgQVNT
RVJUX0VOQUJMRUQKKyAgICAgICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAgY3Jhc2goKQorICAg
IC5vazoKKyAgICBlbmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNh
bGwoZGVzdGluYXRpb25SZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGxyLCBk
ZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBvcCBkZXN0aW5hdGlv
blJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3Jv
IHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQorICAgIGlm
IEFSTXY3CisgICAgICAgIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAgZWxzaWYgWDg2Cisg
ICAgICAgIHB1c2ggc291cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAg
ZW5kCitlbmQKKworbWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRwIGFkdmFuY2UgKiA0
LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0
KHBjT2Zmc2V0KQorICAgIGxzaGlmdGkgMiwgcGNPZmZzZXQKKyAgICBhZGRwIHBjT2Zmc2V0LCBQ
QworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZzZXQpCisg
ICAgbG9hZGkgcGNPZmZzZXQsIHQwCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQwKQor
ZW5kCisKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBjQ2FsbDIo
ZnVuY3Rpb24sIGFyZzEsIGFyZzIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0
MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJn
MSwgMAorICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAg
ZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5kCisKKyMgVGhpcyBiYXJlbHkgd29ya3MuIGFyZzMg
YW5kIGFyZzQgc2hvdWxkIHByb2JhYmx5IGJlIGltbWVkaWF0ZXMuCittYWNybyBjQ2FsbDQoZnVu
Y3Rpb24sIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92
ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgICAgIG1vdmUgYXJnMywgdDIK
KyAgICAgICAgbW92ZSBhcmc0LCB0MworICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEs
IDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisgICAgICAgIHBva2UgYXJnMywgMgorICAgICAgICBw
b2tlIGFyZzQsIDMKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBm
dW5jdGlvbgorZW5kCisKK21hY3JvIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGNDYWxsMihoZWxw
ZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisj
IERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVyYW5kIGlu
IHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uIGZyb21XaGVyZQorIyBzaG91bGQgYmUgYW4gaW1tZWRp
YXRlIGludGVnZXIgLSBhbnkgaW50ZWdlciB5b3UgbGlrZTsgdXNlIGl0IHRvIGlkZW50aWZ5IHRo
ZSBwbGFjZSB5b3UncmUKKyMgZGVidWdnaW5nIGZyb20uIG9wZXJhbmQgc2hvdWxkIGxpa2V3aXNl
IGJlIGFuIGltbWVkaWF0ZSwgYW5kIHNob3VsZCBpZGVudGlmeSB0aGUgb3BlcmFuZAorIyBpbiB0
aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtIHlvdSdkIGxpa2UgdG8gcHJpbnQgb3V0LgorbWFjcm8gdHJh
Y2VPcGVyYW5kKGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX29w
ZXJhbmQsIGNmciwgUEMsIGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAg
IG1vdmUgdDEsIGNmcgorZW5kCisKKyMgRGVidWdnaW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBsaWtl
IHRvIHByaW50IHRoZSB2YWx1ZSBvZiBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbgorIyBz
dHJlYW0uIFNhbWUgYXMgdHJhY2VPcGVyYW5kKCksIGJ1dCBhc3N1bWVzIHRoYXQgdGhlIG9wZXJh
bmQgaXMgYSByZWdpc3RlciwgYW5kIHByaW50cyBpdHMKKyMgdmFsdWUuCittYWNybyB0cmFjZVZh
bHVlKGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX3ZhbHVlLCBj
ZnIsIFBDLCBmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQx
LCBjZnIKK2VuZAorCittYWNybyB0cmFjZUV4ZWN1dGlvbigpCisgICAgaWYgRVhFQ1VUSU9OX1RS
QUNJTkcKKyAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfdHJhY2UpCisgICAgZW5kCitlbmQKKwor
IyBDYWxsIGEgaGVscGVyIGZvciBjYWxsIG9wY29kZXMuCittYWNybyBjYWxsQ2FsbEhlbHBlcihh
ZHZhbmNlLCBoZWxwZXIsIGFjdGlvbikKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQywgdDAKKyAg
ICBzdG9yZXAgdDAsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIGNDYWxsMiho
ZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYWN0aW9uKHQwKQorZW5kCisK
K21hY3JvIHNsb3dQYXRoRm9yQ2FsbChhZHZhbmNlLCBoZWxwZXIpCisgICAgY2FsbENhbGxIZWxw
ZXIoCisgICAgICAgIGFkdmFuY2UsCisgICAgICAgIGhlbHBlciwKKyAgICAgICAgbWFjcm8gKGNh
bGxlZSkKKyAgICAgICAgICAgIGNhbGwgY2FsbGVlCisgICAgICAgICAgICBkaXNwYXRjaEFmdGVy
Q2FsbCgpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklUKGluY3Jl
bWVudCwgYWN0aW9uKQorICAgIGlmIEpJVF9FTkFCTEVECisgICAgICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCB0MAorICAgICAgICBiYWRkaXMgaW5jcmVtZW50LCBDb2RlQmxvY2s6Om1fbGxpbnRF
eGVjdXRlQ291bnRlclt0MF0sIC5jb250aW51ZQorICAgICAgICBhY3Rpb24oKQorICAgIC5jb250
aW51ZToKKyAgICBlbmQKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisg
ICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMSwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAg
ICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgICAg
ICAgICBjQ2FsbDIoX2xsaW50X2xvb3Bfb3NyLCBjZnIsIFBDKQorICAgICAgICAgICAgbW92ZSB0
MSwgY2ZyCisgICAgICAgICAgICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAgICAgICAgam1wIHQw
CisgICAgICAgIC5yZWNvdmVyOgorICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRh
Z09mZnNldFtjZnJdLCBQQworICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hU
b0pJVEZvckVwaWxvZ3VlKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxMCwKKyAg
ICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlcGxhY2UpCisg
ICAgICAgIGVuZCkKK2VuZAorCittYWNybyBhc3NlcnROb3RDb25zdGFudChpbmRleCkKKyAgICBh
c3NlcnQobWFjcm8gKG9rKSBiaWx0IGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwg
b2sgZW5kKQorZW5kCisKKyMgSW5kZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJl
bnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QKKyMgY2hhbmdlZC4KK21hY3JvIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2Zy
LCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0s
IHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyAr
IFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBi
aXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFs
IHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxvYWRw
IFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZz
ZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4IGFu
ZCBwYXlsb2FkIG1heSBiZSB0aGUgc2FtZSByZWdpc3Rlci4gSW5kZXggbWF5IGJlIGNsb2JiZXJl
ZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQp
CisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50
CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3Rh
bnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhZworICAgIGxvYWRwIENvZGVCbG9jazo6
bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFt0YWddLCB0YWcKKyAgICAj
IFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFs
dWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMg
d2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwg
My4KKyAgICBsc2hpZnRpIDMsIGluZGV4CisgICAgYWRkcCBpbmRleCwgdGFnCisgICAgbG9hZHAg
UGF5bG9hZE9mZnNldFt0YWddLCBwYXlsb2FkCisgICAgbG9hZHAgVGFnT2Zmc2V0W3RhZ10sIHRh
ZworLmRvbmU6CitlbmQKKworbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdD
dXN0b20oaW5kZXgsIHRhZ0NoZWNrLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtj
ZnIsIGluZGV4LCA4XSkKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBw
YXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBW
ZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0
IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0
byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICB0YWdDaGVj
ayhUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdKQorICAgIGxvYWRwIFBheWxvYWRPZmZzZXRb
cGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4IGFuZCBw
YXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90IG11dGF0ZWQu
IFVzZQorIyB0aGlzIGlmIHlvdSBrbm93IHdoYXQgdGhlIHRhZyBvZiB0aGUgdmFyaWFibGUgc2hv
dWxkIGJlLiBEb2luZyB0aGUgdGFnCisjIHRlc3QgYXMgcGFydCBvZiBsb2FkaW5nIHRoZSB2YXJp
YWJsZSByZWR1Y2VzIHJlZ2lzdGVyIHVzZSwgYnV0IG1heSBub3QKKyMgYmUgZmFzdGVyIHRoYW4g
ZG9pbmcgbG9hZENvbnN0YW50T3JWYXJpYWJsZSBmb2xsb3dlZCBieSBhIGJyYW5jaCBvbiB0aGUK
KyMgdGFnLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVj
dGVkVGFnLCBwYXlsb2FkLCBzbG93KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
VGFnQ3VzdG9tKAorICAgICAgICBpbmRleCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykgYmlu
ZXEgYWN0dWFsVGFnLCBleHBlY3RlZFRhZywgc2xvdyBlbmQsCisgICAgICAgIHBheWxvYWQpCitl
bmQKKworbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQoaW5kZXgs
IHBheWxvYWQpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCisg
ICAgICAgIGluZGV4LAorICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBlbmQsCisgICAgICAgIHBh
eWxvYWQpCitlbmQKKworbWFjcm8gd3JpdGVCYXJyaWVyKHRhZywgcGF5bG9hZCkKKyAgICAjIE5v
dGhpbmcgdG8gZG8sIHNpbmNlIHdlIGRvbid0IGhhdmUgYSBnZW5lcmF0aW9uYWwgb3IgaW5jcmVt
ZW50YWwgY29sbGVjdG9yLgorZW5kCisKK21hY3JvIHZhbHVlUHJvZmlsZSh0YWcsIHBheWxvYWQs
IHByb2ZpbGUpCisgICAgc3RvcmVpIHRhZywgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdP
ZmZzZXRbcHJvZmlsZV0KKyAgICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1Y2tl
dHMgKyBQYXlsb2FkT2Zmc2V0W3Byb2ZpbGVdCitlbmQKKworCisjIEluZGljYXRlIHRoZSBiZWdp
bm5pbmcgb2YgTExJbnQuCitfbGxpbnRfYmVnaW46CisgICAgY3Jhc2goKQorCisKKyMgRW50cnlw
b2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIKKworbWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29kZUJs
b2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRS
ZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rl
cl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVC
bG9ja0ZvckNhbGxbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3Jv
IGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAg
IGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rpb246
Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAg
RnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRSZWdpc3Rl
cl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0
ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhcmdldFJlZ2lz
dGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIp
CisgICAgc3RvcmVwIHNvdXJjZVJlZ2lzdGVyLCBDb2RlQmxvY2tbY2ZyXQorZW5kCisKK21hY3Jv
IG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgICMgTm90aGlu
ZyB0byBkbyEKK2VuZAorCisjIERvIHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8gZXhlY3V0
ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENvZGVCbG9jayoKKyMgaW4gdDEuIE1h
eSBhbHNvIHRyaWdnZXIgcHJvbG9ndWUgZW50cnkgT1NSLgorbWFjcm8gcHJvbG9ndWUoY29kZUJs
b2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zckhlbHBlciwgdHJhY2VIZWxwZXIpCisgICAg
cHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIAorICAgICMgU2V0IHVwIHRo
ZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgorICAgIHN0b3JlcCB0Miwg
UmV0dXJuUENbY2ZyXQorICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAgICAgIGNhbGxIZWxw
ZXIodHJhY2VIZWxwZXIpCisgICAgZW5kCisgICAgY29kZUJsb2NrR2V0dGVyKHQxKQorICAgIGlm
IEpJVF9FTkFCTEVECisgICAgICAgIGJhZGRpcyA1LCBDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRl
Q291bnRlclt0MV0sIC5jb250aW51ZQorICAgICAgICBjQ2FsbDIob3NySGVscGVyLCBjZnIsIFBD
KQorICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgYnRweiB0MCwgLnJlY292ZXIKKyAgICAg
ICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NC
ZWZvcmVSZXR1cm4odDIpCisgICAgICAgIGptcCB0MAorICAgIC5yZWNvdmVyOgorICAgICAgICBj
b2RlQmxvY2tHZXR0ZXIodDEpCisgICAgLmNvbnRpbnVlOgorICAgIGVuZAorICAgIGNvZGVCbG9j
a1NldHRlcih0MSkKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgUEMuCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2luc3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpJbnN0cnVj
dGlvbnM6Om1faW5zdHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKK2VuZAor
CisjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9n
dWUoKSBsZWF2ZXMgYmVoaW5kLgorIyBNdXN0IGNhbGwgZGlzcGF0Y2goMCkgYWZ0ZXIgY2FsbGlu
ZyB0aGlzLgorbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbihwcm9maWxlQXJnU2tpcCkKKyAg
ICAjIFByb2ZpbGUgdGhlIGFyZ3VtZW50cy4gVW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBubyBjaG9p
Y2UgYnV0IHRvIGRvIHRoaXMuIFRoaXMKKyAgICAjIGNvZGUgaXMgcHJldHR5IGhvcnJlbmRvdXMg
YmVjYXVzZSBvZiB0aGUgZGlmZmVyZW5jZSBpbiBvcmRlcmluZyBiZXR3ZWVuCisgICAgIyBhcmd1
bWVudHMgYW5kIHZhbHVlIHByb2ZpbGVzLCB0aGUgZGVzaXJlIHRvIGhhdmUgYSBzaW1wbGUgbG9v
cC1kb3duLXRvLXplcm8KKyAgICAjIGxvb3AsIGFuZCB0aGUgZGVzaXJlIHRvIHVzZSBvbmx5IHRo
cmVlIHJlZ2lzdGVycyBzbyBhcyB0byBwcmVzZXJ2ZSB0aGUgUEMgYW5kCisgICAgIyB0aGUgY29k
ZSBibG9jay4gSXQgaXMgbGlrZWx5IHRoYXQgdGhpcyBjb2RlIHNob3VsZCBiZSByZXdyaXR0ZW4g
aW4gYSBtb3JlCisgICAgIyBvcHRpbWFsIHdheSBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGhhdmUg
bW9yZSB0aGFuIGZpdmUgcmVnaXN0ZXJzIGF2YWlsYWJsZQorICAgICMgZm9yIGFyYml0cmFyeSB1
c2UgaW4gdGhlIGludGVycHJldGVyLgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1QYXJhbWV0
ZXJzW3QxXSwgdDAKKyAgICBhZGRpIC1wcm9maWxlQXJnU2tpcCwgdDAgIyBVc2UgYWRkaSBiZWNh
dXNlIHRoYXQncyB3aGF0IGhhcyB0aGUgcGVlcGhvbGUKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBi
aWd0ZXEgdDAsIDAsIG9rIGVuZCkKKyAgICBidGl6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9uZQor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMgKyBWZWN0b3JCdWZm
ZXJPZmZzZXRbdDFdLCB0MworICAgIG11bGkgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDAsIHQyICMg
QWFhYWFoaGhoISBOZWVkIHN0cmVuZ3RoIHJlZHVjdGlvbiEKKyAgICBuZWdpIHQwCisgICAgbHNo
aWZ0aSAzLCB0MAorICAgIGFkZHAgdDIsIHQzCisuYXJndW1lbnRQcm9maWxlTG9vcDoKKyAgICBs
b2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXQgKyA4IC0gcHJvZmlsZUFyZ1NraXAg
KiA4W2NmciwgdDBdLCB0MgorICAgIHN1YnAgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDMKKyAgICBz
dG9yZWkgdDIsIHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVlUHJv
ZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9m
ZnNldCArIFBheWxvYWRPZmZzZXQgKyA4IC0gcHJvZmlsZUFyZ1NraXAgKiA4W2NmciwgdDBdLCB0
MgorICAgIHN0b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBzaXplb2YgVmFsdWVQcm9maWxlICsg
VmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGJhZGRpbnog
OCwgdDAsIC5hcmd1bWVudFByb2ZpbGVMb29wCisuYXJndW1lbnRQcm9maWxlRG9uZToKKyAgICAK
KyAgICAjIENoZWNrIHN0YWNrIGhlaWdodC4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0
MV0sIHQyCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjppbnRlcnByZXRlclt0Ml0sIHQyICAgIyBG
SVhNRTogQ2FuIGdldCB0byB0aGUgUmVnaXN0ZXJGaWxlIGZyb20gdGhlIEpJVFN0YWNrRnJhbWUK
KyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MCwgY2ZyLCB0MAorICAgIGJwYWVxIEludGVy
cHJldGVyOjptX3JlZ2lzdGVyRmlsZSArIFJlZ2lzdGVyRmlsZTo6bV9lbmRbdDJdLCB0MCwgLnN0
YWNrSGVpZ2h0T0sKKworICAgICMgU3RhY2sgaGVpZ2h0IGNoZWNrIGZhaWxlZCAtIG5lZWQgdG8g
Y2FsbCBhIGhlbHBlci4KKyAgICBjYWxsSGVscGVyKF9sbGludF9yZWdpc3Rlcl9maWxlX2NoZWNr
KQorLnN0YWNrSGVpZ2h0T0s6CitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGlu
IHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KK21hY3JvIGZ1bmN0
aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIGhlbHBlcikKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGJpYWVxIHQwLCBDb2RlQmxvY2s6Om1fbnVt
UGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJlbAorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpICAg
IyBUaGlzIGhlbHBlciBoYXMgYSBzaW1wbGUgcHJvdG9jb2w6IHQwID0gMCA9PiBubyBlcnJvciwg
dDAgIT0gMCA9PiBlcnJvcgorICAgIG1vdmUgdDEsIGNmcgorICAgIGJ0aXogdDAsIC5jb250aW51
ZQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRw
IEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2Jh
bERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorLmNvbnRpbnVlOgorICAgICMgUmVs
b2FkIENvZGVCbG9jayBhbmQgUEMsIHNpbmNlIHRoZSBoZWxwZXIgY2xvYmJlcmVkIGl0LgorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVj
dGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3Ry
dWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCisgICAgam1wIGRvbmVMYWJlbAor
ZW5kCisKK19sbGludF9wcm9ncmFtX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9u
Q29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5
X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50
X2V2YWxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIs
IG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJh
Y2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVy
LCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3Jf
Y2FsbCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQorLmZ1bmN0aW9u
Rm9yQ2FsbEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKKyAgICBkaXNwYXRj
aCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKKyAg
ICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25D
b2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCwg
X2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCisuZnVuY3Rpb25G
b3JDb25zdHJ1Y3RCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCisgICAgZGlz
cGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrOgor
ICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2Rl
QmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVj
aywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCisgICAgZnVuY3Rpb25Bcml0eUNo
ZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X2hlbHBlcl9jYWxsX2FyaXR5Q2hlY2sp
CisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2s6CisgICAgcHJv
bG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJs
b2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlD
aGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKKyAgICBmdW5jdGlv
bkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9sbGludF9oZWxwZXJfY29u
c3RydWN0X2FyaXR5Q2hlY2spCisKKyMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25zCisKK19s
bGludF9vcF9lbnRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQyCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVZhcnNbdDJdLCB0MgorICAgIGJ0
aXogdDIsIC5vcEVudGVyRG9uZQorICAgIG1vdmUgVW5kZWZpbmVkVGFnLCB0MAorICAgIG1vdmUg
MCwgdDEKKy5vcEVudGVyTG9vcDoKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIHQwLCBUYWdP
ZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Miwg
OF0KKyAgICBidGlueiB0MiwgLm9wRW50ZXJMb29wCisub3BFbnRlckRvbmU6CisgICAgZGlzcGF0
Y2goMSkKKworCitfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pCisub3BDcmVhdGVBY3RpdmF0aW9uRG9u
ZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbml0X2xhenlfcmVnOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgRW1wdHlWYWx1
ZVRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIDAsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jcmVhdGVfYXJndW1l
bnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5l
cSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFyZ3VtZW50
c0RvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKKy5v
cENyZWF0ZUFyZ3VtZW50c0RvbmU6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBhbGxvY2F0
ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kZXgsIGNsYXNzSW5mb09mZnNldCwgc3RydWN0dXJl
LCByZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2xvd0Nhc2UpCisgICAgY29uc3Qgb2Zmc2V0
T2ZNeVNpemVDbGFzcyA9IEpTR2xvYmFsRGF0YTo6aGVhcCArIEhlYXA6Om1fb2JqZWN0U3BhY2Ug
KyBNYXJrZWRTcGFjZTo6bV9wcmVjaXNlU2l6ZUNsYXNzZXMgKyBzaXplQ2xhc3NJbmRleCAqIHNp
emVvZiBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzCisgICAgCisgICAgIyBGSVhNRTogd2UgY2FuIGdl
dCB0aGUgZ2xvYmFsIGRhdGEgaW4gb25lIGxvYWQgZnJvbSB0aGUgc3RhY2suCisgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gxCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERh
dGFbc2NyYXRjaDFdLCBzY3JhdGNoMQorICAgIAorICAgICMgR2V0IHRoZSBvYmplY3QgZnJvbSB0
aGUgZnJlZSBsaXN0LiAgICAKKyAgICBsb2FkcCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2Vk
U3BhY2U6OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0sIHJlc3VsdAorICAgIGJ0
cHogcmVzdWx0LCBzbG93Q2FzZQorICAgIAorICAgICMgUmVtb3ZlIHRoZSBvYmplY3QgZnJvbSB0
aGUgZnJlZSBsaXN0LgorICAgIGxvYWRwIFtyZXN1bHRdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBz
Y3JhdGNoMiwgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZp
cnN0RnJlZUNlbGxbc2NyYXRjaDFdCisKKyAgICAjIEluaXRpYWxpemUgdGhlIG9iamVjdC4KKyAg
ICBsb2FkcCBjbGFzc0luZm9PZmZzZXRbc2NyYXRjaDFdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBz
Y3JhdGNoMiwgW3Jlc3VsdF0KKyAgICBzdG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0
dXJlW3Jlc3VsdF0KKyAgICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0
XQorICAgIGFkZHAgc2l6ZW9mIEpTT2JqZWN0LCByZXN1bHQsIHNjcmF0Y2gxCisgICAgc3RvcmVw
IHNjcmF0Y2gxLCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbcmVzdWx0XQorZW5kCisKK19s
bGludF9vcF9jcmVhdGVfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQwCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQxCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDFd
LCBPYmplY3RUeXBlLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGxvYWRwIEpTT2JqZWN0OjptX2lu
aGVyaXRvcklEW3QwXSwgdDIKKyAgICBidHB6IHQyLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGFs
bG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFs
RGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywgdDIsIHQwLCB0MSwgdDMsIC5vcENyZWF0ZVRo
aXNTbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBkaXNwYXRjaCgzKQorCisub3BDcmVhdGVUaGlzU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfY3JlYXRlX3RoaXMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bf
Z2V0X2NhbGxlZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgbG9hZHAgUGF5bG9hZE9mZnNldCArIENhbGxlZVtjZnJdLCB0MQorICAgIHN0b3JlaSBDZWxs
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jb252ZXJ0X3RoaXM6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ29udmVydFRoaXNTbG93CisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDAKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fdHlwZVt0MF0sIE9iamVjdFR5cGUsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGRpc3BhdGNo
KDIpCisKKy5vcENvbnZlcnRUaGlzU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
Y29udmVydF90aGlzKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX25ld19vYmplY3Q6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAg
IGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xv
YmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0dXJlW3QwXSwgdDEKKyAgICBhbGxvY2F0ZUJh
c2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6Ompz
RmluYWxPYmplY3RDbGFzc0luZm8sIHQxLCB0MCwgdDIsIHQzLCAub3BOZXdPYmplY3RTbG93KQor
ICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNw
YXRjaCgyKQorCisub3BOZXdPYmplY3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9uZXdfb2JqZWN0KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX25ld19hcnJheToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19h
cnJheSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfYXJyYXlfYnVmZmVyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Fy
cmF5X2J1ZmZlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfcmVnZXhwOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X3Jl
Z2V4cCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9tb3Y6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MCwgdDIsIHQzKQorICAgIGJpbmVxIHQyLCBCb29sZWFuVGFnLCAub3BO
b3RTbG93CisgICAgeG9yaSAxLCB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0
Y2goMykKKworLm9wTm90U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbm90KQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
KHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAub3BFcVNsb3cKKyAgICBiaWVxIHQyLCBD
ZWxsVGFnLCAub3BFcVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wRXFTbG93CisgICAg
bG9hZGkgNFtQQ10sIHQyCisgICAgY2llcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5U
YWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEVxU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZXFfbnVs
bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkg
NFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
CisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcEVxTnVsbEltbWVkaWF0ZQorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRibnogU3RydWN0dXJlOjptX3R5cGVJbmZv
ICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQorICAg
IGptcCAub3BFcU51bGxOb3RJbW1lZGlhdGUKKy5vcEVxTnVsbEltbWVkaWF0ZToKKyAgICBjaWVx
IHQxLCBOdWxsVGFnLCB0MgorICAgIGNpZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKKyAgICBvcmkg
dDIsIHQxCisub3BFcU51bGxOb3RJbW1lZGlhdGU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRh
Z09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQz
LCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25lcToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLm9wTmVxU2xvdworICAgIGJp
ZXEgdDIsIENlbGxUYWcsIC5vcE5lcVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wTmVx
U2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpbmVxIHQwLCB0MSwgdDAKKyAgICBzdG9y
ZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wTmVxU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmVxKQorICAgIGRpc3BhdGNoKDQpCisgICAgCisK
K19sbGludF9vcF9uZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcE5lcU51bGxJbW1l
ZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0YnogU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkLCB0MQorICAgIGptcCAub3BOZXFOdWxsTm90SW1tZWRpYXRlCisub3BOZXFOdWxs
SW1tZWRpYXRlOgorICAgIGNpbmVxIHQxLCBOdWxsVGFnLCB0MgorICAgIGNpbmVxIHQxLCBVbmRl
ZmluZWRUYWcsIHQxCisgICAgYW5kaSB0MiwgdDEKKy5vcE5lcU51bGxOb3RJbW1lZGlhdGU6Cisg
ICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0
MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8g
c3RyaWN0RXEoZXF1YWxpdHlPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQy
CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMs
IHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmlu
ZXEgdDIsIHQzLCAuc2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpbmVx
IHQyLCBDZWxsVGFnLCAubm90U3RyaW5nCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQzCisgICAgYmJuZXEg
U3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUs
IC5ub3RTdHJpbmcKKyAgICBiYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjpt
X3R5cGVbdDNdLCBTdHJpbmdUeXBlLCAuc2xvdworLm5vdFN0cmluZzoKKyAgICBsb2FkaSA0W1BD
XSwgdDIKKyAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIHQwKQorICAgIHN0b3JlaSBCb29s
ZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVy
KGhlbHBlcikKKyAgICBkaXNwYXRjaCg0KQorZW5kCisKK19sbGludF9vcF9zdHJpY3RlcToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1
bHQpIGNpZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9oZWxwZXJfc3RyaWN0ZXEp
CisKKworX2xsaW50X29wX25zdHJpY3RlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc3Ry
aWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpbmVxIGxlZnQsIHJpZ2h0LCByZXN1
bHQgZW5kLCBfbGxpbnRfaGVscGVyX25zdHJpY3RlcSkKKworCitfbGxpbnRfb3BfbGVzczoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3MpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzc2VxKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX2dyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX2dyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2dyZWF0ZXJlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcmVf
aW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5l
cSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVJbmNTbG93CisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBiYWRkaW8gMSwgdDEsIC5vcFBy
ZUluY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBk
aXNwYXRjaCgyKQorCisub3BQcmVJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9wcmVfaW5jKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3ByZV9kZWM6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZURlY1Nsb3cKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJzdWJpbyAxLCB0MSwgLm9wUHJlRGVjU2xvdwor
ICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIp
CisKKy5vcFByZURlY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3ByZV9kZWMp
CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9zdF9pbmM6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3RJbmNTbG93CisgICAg
YmllcSB0MCwgdDEsIC5vcFBvc3RJbmNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDIKKyAgICBtb3ZlIHQyLCB0MworICAgIGJhZGRpbyAxLCB0MywgLm9wUG9zdElu
Y1Nsb3cKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0
b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQorLm9wUG9zdEluY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKwor
Lm9wUG9zdEluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfaW5jKQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Bvc3RfZGVjOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5l
cSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0RGVjU2xvdworICAgIGJp
ZXEgdDAsIHQxLCAub3BQb3N0RGVjRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBic3ViaW8gMSwgdDMsIC5vcFBvc3REZWNT
bG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3REZWNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5v
cFBvc3REZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2RlYykKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF90b19qc251bWJlcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDIsIHQzKQorICAgIGJpZXEgdDIsIEludDMyVGFnLCAu
b3BUb0pzbnVtYmVySXNJbnQKKyAgICBiaWFlcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wVG9Kc251
bWJlclNsb3cKKy5vcFRvSnNudW1iZXJJc0ludDoKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAg
IGRpc3BhdGNoKDMpCisKKy5vcFRvSnNudW1iZXJTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl90b19qc251bWJlcikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZWdh
dGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRp
IDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQxLCB0MikKKyAgICBi
aW5lcSB0MSwgSW50MzJUYWcsIC5vcE5lZ2F0ZVNyY05vdEludAorICAgIGJ0aXogdDIsIDB4N2Zm
ZmZmZmYsIC5vcE5lZ2F0ZVNsb3cKKyAgICBuZWdpIHQyCisgICAgc3RvcmVpIEludDMyVGFnLCBU
YWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MywgOF0KKyAgICBkaXNwYXRjaCgzKQorLm9wTmVnYXRlU3JjTm90SW50OgorICAgIGJpYSB0MSwg
TG93ZXN0VGFnLCAub3BOZWdhdGVTbG93CisgICAgeG9yaSAweDgwMDAwMDAwLCB0MQorICAgIHN0
b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wTmVnYXRlU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmVnYXRlKQorICAgIGRpc3BhdGNoKDMpCisKKworbWFj
cm8gYmluYXJ5T3BDdXN0b21TdG9yZShpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUsIGRvdWJsZU9w
ZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5v
cDFOb3RJbnQKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBsb2FkaSA0
W1BDXSwgdDIKKyAgICBpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUodDMsIHQxLCB0MCwgLnNsb3cs
IHQyKQorICAgIGRpc3BhdGNoKDUpCisKKy5vcDFOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5k
IGlzIGRlZmluaXRlbHkgbm90IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGNvdWxkIGJlIGFu
eXRoaW5nLgorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MywgTG93ZXN0
VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdwor
ICAgIGNpMmQgdDEsIGZ0MQorICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJE
b3VibGU6CisgICAgZmlpMmQgdDEsIHQzLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICBmaWkyZCB0MCwgdDIsIGZ0MAorICAgIGRvdWJsZU9wZXJhdGlvbihm
dDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg1KQor
Cisub3AyTm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IGFuIGludCwg
dGhlIHNlY29uZCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90LgorICAgIGxvYWRpIDRbUENdLCB0
MgorICAgIGJpYSB0MywgTG93ZXN0VGFnLCAuc2xvdworICAgIGNpMmQgdDAsIGZ0MAorICAgIGZp
aTJkIHQxLCB0MywgZnQxCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3Jl
ZCBmdDAsIFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5zbG93OgorICAgIGNhbGxI
ZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDUpCitlbmQKKworbWFjcm8gYmluYXJ5T3AoaW50
ZWdlck9wZXJhdGlvbiwgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCisgICAgYmluYXJ5T3BDdXN0
b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5k
ZXgpCisgICAgICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KQorICAg
ICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAg
ICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAg
ICBlbmQsCisgICAgICAgIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorZW5kCisKK19sbGludF9v
cF9hZGQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHNsb3cpIGJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCkgYWRkZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9s
bGludF9oZWxwZXJfYWRkKQorCisKK19sbGludF9vcF9tdWw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVm
dCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgY29uc3Qgc2NyYXRjaCA9IGludDMy
VGFnICAgIyBXZSBrbm93IHRoYXQgd2UgY2FuIHJldXNlIHRoZSBpbnQzMlRhZyByZWdpc3RlciBz
aW5jZSBpdCBoYXMgYSBjb25zdGFudC4KKyAgICAgICAgICAgIG1vdmUgcmlnaHQsIHNjcmF0Y2gK
KyAgICAgICAgICAgIGJtdWxpbyBsZWZ0LCBzY3JhdGNoLCBzbG93CisgICAgICAgICAgICBidGlu
eiBzY3JhdGNoLCAuZG9uZQorICAgICAgICAgICAgYmlsdCBsZWZ0LCAwLCAuc2xvdworICAgICAg
ICAgICAgYmlsdCByaWdodCwgMCwgLnNsb3cKKyAgICAgICAgLmRvbmU6CisgICAgICAgICAgICBz
dG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3Rv
cmVpIHNjcmF0Y2gsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIG11bGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX211bCkKKworCitfbGxpbnRfb3Bfc3ViOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBi
c3ViaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQp
IHN1YmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3N1YikKKworCitf
bGxpbnRfb3BfZGl2OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0
b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkK
KyAgICAgICAgICAgIGNpMmQgbGVmdCwgZnQwCisgICAgICAgICAgICBjaTJkIHJpZ2h0LCBmdDEK
KyAgICAgICAgICAgIGRpdmQgZnQwLCBmdDEKKyAgICAgICAgICAgIGJjZDJpIGZ0MSwgcmlnaHQs
IC5ub3RJbnQKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5k
ZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0KKyAgICAgICAgICAgIGptcCAuZG9uZQorICAgICAgICAubm90SW50OgorICAgICAgICAg
ICAgc3RvcmVkIGZ0MSwgW2NmciwgaW5kZXgsIDhdCisgICAgICAgIC5kb25lOgorICAgICAgICBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgZGl2ZCBsZWZ0LCByaWdodCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfZGl2KQorCisKK19sbGludF9vcF9tb2Q6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9tb2QpCisgICAgZGlzcGF0
Y2goNCkKKworCittYWNybyBiaXRPcChvcGVyYXRpb24sIGhlbHBlciwgYWR2YW5jZSkKKyAgICBs
b2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0
MiwgdDApCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBJbnQz
MlRhZywgLnNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBvcGVyYXRpb24odDEsIHQwLCAu
c2xvdykKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCisKKy5z
bG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCitlbmQK
KworX2xsaW50X29wX2xzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfbHNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9v
cF9yc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX3JzaGlmdCwKKyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfdXJzaGlmdDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgc2xvdykKKyAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0CisgICAgICAgICAg
ICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAgIGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl91cnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF9iaXRhbmQ6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cp
IGFuZGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdGFuZCwKKyAg
ICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQsIHJp
Z2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXR4b3IsCisgICAgICAgIDUpCisKKwor
X2xsaW50X29wX2JpdG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2JpdG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRub3Q6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBiaW5l
cSB0MiwgSW50MzJUYWcsIC5vcEJpdG5vdFNsb3cKKyAgICBub3RpIHQzCisgICAgc3RvcmVpIHQy
LCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BCaXRub3RTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9iaXRub3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bf
Y2hlY2tfaGFzX2luc3RhbmNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAs
IC5vcENoZWNrSGFzSW5zdGFuY2VTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxh
Z3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93Cisg
ICAgZGlzcGF0Y2goMikKKworLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKKyAgICBkaXNwYXRjaCgyKQorCisK
K19sbGludF9vcF9pbnN0YW5jZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIENoZWNr
IHRoYXQgYmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9y
LgorICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuCisgICAgbG9hZGkgMTJb
UENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKHQxLCB0
MCkKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1
bHRIYXNJbnN0YW5jZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICAKKyAgICAjIEFjdHVhbGx5IGRv
IHRoZSB3b3JrLgorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEluc3Rh
bmNlb2ZTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGJi
YiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlw
ZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQor
ICAgIAorICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCisg
ICAgbW92ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxvb3A6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0Ml0sIHQyCisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxv
YWRPZmZzZXRbdDJdLCB0MgorICAgIGJwZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQorICAg
IGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcAorCisgICAgbW92ZSAwLCB0MAorLm9wSW5zdGFu
Y2VvZkRvbmU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQor
ICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDUp
CisKKy5vcEluc3RhbmNlb2ZTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbnN0
YW5jZW9mKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3R5cGVvZjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3R5cGVvZikKKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc191bmRlZmluZWQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc191bmRlZmluZWQpCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfYm9vbGVhbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Jvb2xlYW4pCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfaXNfbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX2lzX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2lzX3N0cmluZykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9pc19vYmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9pc19vYmplY3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfZnVu
Y3Rpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9pc19mdW5jdGlvbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pbjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luKQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29sdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlKQorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX3Jlc29sdmVfc2tpcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfc2tpcCkKKyAgICBkaXNwYXRjaCg1KQorCisK
K21hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBm
b2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4
W1BDXSAgIFByb3BlcnR5IGlkZW50aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2suCisgICAg
IyAxMltQQ10gIFN0cnVjdHVyZSBwb2ludGVyLCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2Rl
IGdlbmVyYXRvci4KKyAgICAjIDE2W1BDXSAgT2Zmc2V0IGluIGdsb2JhbCBvYmplY3QsIGluaXRp
YWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJwbmVxIHQxLCAxMltQQ10s
IHNsb3cKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVy
dHlTdG9yYWdlW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQw
CisgICAgdmFsdWVQcm9maWxlKHQyLCB0MywgdDApCitlbmQKKworX2xsaW50X29wX3Jlc29sdmVf
Z2xvYmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICByZXNvbHZlR2xvYmFsKDYsIC5vcFJl
c29sdmVHbG9iYWxTbG93KQorICAgIGRpc3BhdGNoKDYpCisKKy5vcFJlc29sdmVHbG9iYWxTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNw
YXRjaCg2KQorCisKKyMgR2l2ZXMgeW91IHRoZSBzY29wZSBpbiB0MCwgd2hpbGUgYWxsb3dpbmcg
eW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0aGUKKyMgc2Nv
cGVzIGFzIHRoZXkgYXJlIHRyYXZlcnNlZC4gc2NvcGVDaGVjaygpIGlzIGNhbGxlZCB3aXRoIHR3
byBhcmd1bWVudHM6IHRoZSByZWdpc3RlcgorIyBob2xkaW5nIHRoZSBzY29wZSwgYW5kIGEgcmVn
aXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc2NyYXRjaC4gTm90ZSB0aGF0IHRoaXMgZG9lcyBu
b3QKKyMgdXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQgc3R1ZmYgaW4gdDMgaWYgbmVlZCBiZS4KK21h
Y3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2Fk
cCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIGRlQnJ1aWpp
bkluZGV4T3BlcmFuZCwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorICAgIAorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGJpbmVxIENvZGVCbG9jazo6bV9jb2RlVHlwZVt0
MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AKKyAgICBidGJ6IENvZGVCbG9jazo6bV9uZWVkc0Z1bGxT
Y29wZUNoYWluW3QxXSwgLmxvb3AKKyAgICAKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZh
dGlvblJlZ2lzdGVyW3QxXSwgdDEKKworICAgICMgTmVlZCB0byBjb25kaXRpb25hbGx5IHNraXAg
b3ZlciBvbmUgc2NvcGUuCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFs
dWVUYWcsIC5ub0FjdGl2YXRpb24KKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBT
Y29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisubm9BY3RpdmF0aW9uOgorICAgIHN1YmkgMSwg
dDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorLmxvb3A6CisgICAgc2NvcGVDaGVjayh0MCwg
dDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MAorICAgIHN1YmkgMSwg
dDIKKyAgICBidGlueiB0MiwgLmxvb3AKKworLmRvbmU6CitlbmQKKworX2xsaW50X29wX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0
YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0
aXZhdGlvblN0cnVjdHVyZVt0M10sIHQzCisgICAgZ2V0U2NvcGUoCisgICAgICAgIDIwW1BDXSwK
KyAgICAgICAgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKQorICAgICAgICAgICAgbG9hZHAgU2NvcGVD
aGFpbk5vZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGJwbmVxIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVy
U2xvdworICAgICAgICBlbmQpCisgICAgcmVzb2x2ZUdsb2JhbCg3LCAub3BSZXNvbHZlR2xvYmFs
RHluYW1pY1Nsb3cpCisgICAgZGlzcGF0Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNT
dXBlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWMpCisgICAgZGlzcGF0Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5
bmFtaWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbF9k
eW5hbWljKQorICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX2dldF9zY29wZWRfdmFyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAg
ICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIEluZGV4
IG9mIHJlZ2lzdGVyIGluIHRoZSBzY29wZS4KKyAgICAjIDEyW1BDXSAgRGUgQnJ1aWppbiBpbmRl
eC4KKyAgICBnZXRTY29wZSgxMltQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAg
IGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRwIFNjb3BlQ2hh
aW5Ob2RlOjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVn
aXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgdDMKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MCwgdDEpCisgICAg
ZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGdldFNjb3BlKDhbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkK
KyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDMs
IHQyKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHdyaXRlQmFycmllcih0MywgdDIpCisgICAg
bG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJs
ZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W3Qw
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0
W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAor
ICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbdDAsIHQxLCA4XSwgdDEKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQor
ICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGxvYWRpIDEyW1BD
XSwgdDMKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MykKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgOFtQQ10sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6
Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0Miwg
dDMpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQyLCB0MykKKyAgICBz
dG9yZWkgdDIsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zm
c2V0W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX2Jh
c2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9y
ZXNvbHZlX2Jhc2UpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZW5zdXJlX3Byb3Bl
cnR5X2V4aXN0czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfcmVzb2x2ZV93aXRoX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQor
CisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQorICAgIGRpc3Bh
dGNoKDUpCisKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFu
ZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQorICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxs
b3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKKyAgICAj
IHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9i
eV9pZCB3aWxsIGNvbnRpbnVlCisgICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNh
Y2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAorICAgICMgd2Ug
d291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENl
bGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9h
ZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKKyAgICBicG5lcSBKU0NlbGw6
Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgbG9hZGkgNFtQQ10sIHQx
CisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0Ml0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFt0MCwgdDJdLCB0MgorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgMzJbUENdLCB0
MQorICAgIHZhbHVlUHJvZmlsZSh0MywgdDIsIHQxKQorICAgIGRpc3BhdGNoKDkpCisKKy5vcEdl
dEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfaWQpCisgICAg
ZGlzcGF0Y2goOSkKKworCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQor
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJn
dW1lbnRzTGVuZ3RoU2xvdworICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0
W2Nmcl0sIHQyCisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAx
MltQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMK
KyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93Cisg
ICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0
MCwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQwLCB0MikKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNl
dFt0MywgdDFdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBkaXNw
YXRjaCg5KQorCisub3BQdXRCeUlkU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cHV0X2J5X2lkKQorICAgIGRpc3BhdGNoKDkpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24o
YWRkaXRpb25hbENoZWNrcykKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQzCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0
MgorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cK
KyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkg
MjBbUENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQz
CisgICAgYWRkcCB0MSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDEs
IHQyKQorICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRb
dDNdCisgICAgbG9hZGkgMjRbUENdLCB0MQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0
M10KKyAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgZGlzcGF0Y2go
OSkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIHB1
dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkK
KworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgIHB1dEJ5SWRU
cmFuc2l0aW9uKAorICAgICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQor
ICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRo
ZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bworICAgICAgICAKKyAgICAgICAg
ICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAorICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykg
YnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46
Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9r
KSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9w
cm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAgICAg
ICAgLmxvb3A6CisgICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5
bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICAgICAgICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgICAgICAgICBi
cG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdworICAgICAgICAgICAgYWRkcCA0LCBz
Y3JhdGNoCisgICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zm
c2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisgICAgICAgIC5kb25lOgorICAgICAg
ICBlbmQpCisKKworX2xsaW50X29wX2RlbF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9nZXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQ
Q10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxT
bG93KQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MV0sIHQyCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIEludDMyVGFnLCB0MSwgLm9wR2V0
QnlWYWxTbG93KQorICAgIGJwbmVxIFt0MF0sIHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2Fk
cCBKU0FycmF5OjptX3N0b3JhZ2VbdDBdLCB0MworICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3Zl
Y3Rvckxlbmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIK
KyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEs
IDhdLCB0MQorICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAg
IHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIHZhbHVlUHJvZmls
ZSh0MiwgdDEsIHQwKQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEdldEJ5VmFsU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg1KQorCisK
K19sbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdwor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBJbnQzMlRhZywgdDIsIC5vcEdl
dEFyZ3VtZW50QnlWYWxTbG93KQorICAgIGFkZGkgMSwgdDIKKyAgICBsb2FkaSBBcmd1bWVudENv
dW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQorICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJn
dW1lbnRCeVZhbFNsb3cKKyAgICBuZWdpIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9h
ZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxv
YWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisg
ICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudEJ5
VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3Zh
bCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfcG5hbWU6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxv
YWRpIDE2W1BDXSwgdDAKKyAgICBicG5lcSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
Lm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5UG5hbWVTbG93KQorICAg
IGxvYWRpIDIwW1BDXSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAorICAgIGJwbmVxIHQwLCBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0M10sIC5vcEdldEJ5UG5h
bWVTbG93CisgICAgbG9hZGkgMjRbUENdLCB0MAorICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAK
KyAgICBzdWJpIDEsIHQwCisgICAgYmlhZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1f
bnVtQ2FjaGVhYmxlU2xvdHNbdDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRwIEpTT2Jq
ZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QyLCB0
MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MiwgdDAsIDhdLCB0MworICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
c3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNykKKwor
Lm9wR2V0QnlQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9w
bmFtZSkKKyAgICBkaXNwYXRjaCg3KQorCisKK19sbGludF9vcF9wdXRfYnlfdmFsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgSW50MzJU
YWcsIHQyLCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xv
YmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MF0sIHQwCisgICAgYnBuZXEgW3QxXSwgdDAsIC5v
cFB1dEJ5VmFsU2xvdworICAgIGJpYWVxIHQyLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MV0s
IC5vcFB1dEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQwCisg
ICAgYmllcSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIEVt
cHR5VmFsdWVUYWcsIC5vcFB1dEJ5VmFsRW1wdHkKKy5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQ6Cisg
ICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0
MSwgdDMpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MykKKyAgICBzdG9yZWkgdDEsIEFycmF5U3Rv
cmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0b3JlaSB0MywgQXJy
YXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3Bh
dGNoKDQpCisKKy5vcFB1dEJ5VmFsRW1wdHk6CisgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1f
bnVtVmFsdWVzSW5WZWN0b3JbdDBdCisgICAgYmliIHQyLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3Ro
W3QwXSwgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorICAgIGFkZGkgMSwgdDIsIHQxCisgICAgc3Rv
cmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXQorICAgIGptcCAub3BQdXRCeVZhbFN0
b3JlUmVzdWx0CisKKy5vcFB1dEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcHV0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9kZWxfYnlfdmFs
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVs
X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaW5kZXg6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlf
aW5kZXgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dldHRlcjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9nZXR0ZXIp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X3NldHRlcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9zZXR0ZXIpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbG9vcDoKKyAgICBub3AKK19sbGludF9vcF9qbXA6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRpc3BhdGNoQnJhbmNoKDRbUENdKQorCisKK19s
bGludF9vcF9qbXBfc2NvcGVzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfam1wX3Njb3BlcykKKyAgICBkaXNwYXRjaCgwKQorCisKK21hY3JvIGp1
bXBUcnVlT3JGYWxzZShjb25kaXRpb25PcCwgc2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQm9vbGVhblRhZywgdDAsIC5zbG93
KQorICAgIGNvbmRpdGlvbk9wKHQwLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJn
ZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIo
c2xvdykKKyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX3RydWU6Cisg
ICAgbm9wCitfbGxpbnRfb3BfanRydWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBU
cnVlT3JGYWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aW56IHZhbHVlLCB0
YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2p0cnVlKQorCisKK19sbGludF9vcF9s
b29wX2lmX2ZhbHNlOgorICAgIG5vcAorX2xsaW50X29wX2pmYWxzZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAganVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdl
dCkgYnRpeiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZmFsc2Up
CisKKworbWFjcm8gZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYW5kbGVyKQorICAg
IGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxs
VGFnLCAuaW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisg
ICAgY2VsbEhhbmRsZXIoU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDJdLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hC
cmFuY2goOFtQQ10pCisKKy5pbW1lZGlhdGU6CisgICAgb3JpIDEsIHQxCisgICAgaW1tZWRpYXRl
SGFuZGxlcih0MSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorZW5kCisKK19sbGludF9vcF9q
ZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBt
YWNybyAodmFsdWUsIHRhcmdldCkgYnRibnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQs
IHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaWVxIHZhbHVlLCBO
dWxsVGFnLCB0YXJnZXQgZW5kKQorICAgIAorCitfbGxpbnRfb3Bfam5lcV9udWxsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFy
Z2V0KSBidGJ6IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAg
ICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmluZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBl
bmQpCisKKworX2xsaW50X29wX2puZXFfcHRyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcEpuZXFQdHJCcmFuY2gKKyAgICBicGVxIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKKy5vcEpuZXFQdHJC
cmFuY2g6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorLm9wSm5lcVB0ckZhbGxUaHJvdWdo
OgorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8gY29tcGFyZShpbnRlZ2VyQ29tcGFyZSwgZG91
YmxlQ29tcGFyZSwgaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENd
LCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwLCB0MSkKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MywgdDIsIHQzKQorICAgIGJpbmVxIHQwLCBJbnQzMlRhZywg
Lm9wMU5vdEludAorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGludGVn
ZXJDb21wYXJlKHQxLCB0MywgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5v
dEludDoKKyAgICBiaWEgdDAsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRh
ZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAg
ICBjaTJkIHQzLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91
YmxlOgorICAgIGZpaTJkIHQzLCB0MiwgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgZmlpMmQg
dDEsIHQwLCBmdDAKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAg
ICBkaXNwYXRjaCg0KQorCisub3AyTm90SW50OgorICAgIGNpMmQgdDEsIGZ0MAorICAgIGJpYSB0
MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGZpaTJkIHQzLCB0MiwgZnQxCisgICAgZG91YmxlQ29t
cGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLmp1bXBUYXJn
ZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVy
KGhlbHBlcikKKyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX2xlc3M6
CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNv
bXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJp
Z2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRs
dCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzcykK
KworCitfbGxpbnRfb3Bfam5sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJl
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVx
dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNz
KQorCisKK19sbGludF9vcF9sb29wX2lmX2dyZWF0ZXI6CisgICAgbm9wCitfbGxpbnRfb3Bfamdy
ZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndCBsZWZ0LCByaWdodCwgdGFyZ2V0
IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcikKKworCitfbGxpbnRfb3Bfam5n
cmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxdW4gbGVmdCwgcmlnaHQs
IHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5ncmVhdGVyKQorCisKK19sbGlu
dF9vcF9sb29wX2lmX2xlc3NlcToKKyAgICBub3AKK19sbGludF9vcF9qbGVzc2VxOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAg
ICAgICBfbGxpbnRfaGVscGVyX2psZXNzZXEpCisKKworX2xsaW50X29wX2pubGVzc2VxOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3R1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl9qbmxlc3NlcSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVh
dGVyZXE6CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJp
Z3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJkZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9qZ3JlYXRlcmVxKQorCisKK19sbGludF9vcF9qbmdyZWF0ZXJlcToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0
YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiZGx0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfam5ncmVhdGVyZXEpCisKKworX2xsaW50X29wX2xvb3BfaGludDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGRp
c3BhdGNoKDEpCisKKworX2xsaW50X29wX3N3aXRjaF9pbW06CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQy
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVv
ZiBTaW1wbGVKdW1wVGFibGUsIHQzICAgIyBGSVhNRTogd291bGQgYmUgbmljZSB0byBwZWVwaG9s
ZSB0aGlzIQorICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1faW1tZWRpYXRlU3dpdGNo
SnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgYWRkcCB0MywgdDIK
KyAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcFN3aXRjaEltbU5vdEludAorICAgIHN1YmkgU2lt
cGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6
OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRo
cm91Z2gKKyAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JC
dWZmZXJPZmZzZXRbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDRdLCB0MQorICAgIGJ0aXog
dDEsIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0
KHQxKQorCisub3BTd2l0Y2hJbW1Ob3RJbnQ6CisgICAgYmliIHQxLCBMb3dlc3RUYWcsIC5vcFN3
aXRjaEltbVNsb3cgICMgR28gdG8gc2xvdyBwYXRoIGlmIGl0J3MgYSBkb3VibGUuCisub3BTd2l0
Y2hJbW1GYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLm9wU3dpdGNo
SW1tU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX2ltbSkKKyAgICBk
aXNwYXRjaCgwKQorCisKK19sbGludF9vcF9zd2l0Y2hfY2hhcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6
ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjpt
X2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0Mgor
ICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxs
VGhyb3VnaAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJibmVx
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBl
LCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0
MF0sIHQwCisgICAgYmluZXEgU3RyaW5nSW1wbDo6bV9sZW5ndGhbdDBdLCAxLCAub3BTd2l0Y2hD
aGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTdHJpbmdJbXBsOjptX2RhdGE4W3QwXSwgdDEKKyAg
ICBidGlueiBTdHJpbmdJbXBsOjptX2hhc2hBbmRGbGFnc1t0MF0sIEhhc2hGbGFnczhCaXRCdWZm
ZXIsIC5vcFN3aXRjaENoYXI4Qml0CisgICAgbG9hZGggW3QxXSwgdDAKKyAgICBqbXAgLm9wU3dp
dGNoQ2hhclJlYWR5Cisub3BTd2l0Y2hDaGFyOEJpdDoKKyAgICBsb2FkYiBbdDFdLCB0MAorLm9w
U3dpdGNoQ2hhclJlYWR5OgorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAor
ICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXpl
T2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVt
cFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBs
b2FkaSBbdDIsIHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3Vn
aAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoQ2hhckZhbGxU
aHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zd2l0Y2hf
c3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfc3dpdGNoX3N0cmluZykKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9uZXdfZnVu
YzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYnRpeiAxMltQQ10sIC5vcE5ld0Z1bmNVbmNo
ZWNrZWQKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MSwg
OF0sIEVtcHR5VmFsdWVUYWcsIC5vcE5ld0Z1bmNEb25lCisub3BOZXdGdW5jVW5jaGVja2VkOgor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuYykKKy5vcE5ld0Z1bmNEb25lOgor
ICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19mdW5jX2V4cDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19mdW5jX2V4cCkKKyAg
ICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGRvQ2FsbChoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRwIExMSW50Q2FsbExpbmtJbmZvOjpj
YWxsZWVbdDFdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxs
VGFnLCB0MywgLm9wQ2FsbFNsb3cpCisgICAgYmluZXEgdDMsIHQyLCAub3BDYWxsU2xvdworICAg
IGxvYWRpIDEyW1BDXSwgdDMKKyAgICBhZGRwIDI0LCBQQworICAgIGxzaGlmdGkgMywgdDMKKyAg
ICBhZGRwIGNmciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBjZnIKKyAgICBs
b2FkcCBKU0Z1bmN0aW9uOjptX3Njb3BlQ2hhaW5bdDJdLCB0MAorICAgIHN0b3JlaSB0MiwgQ2Fs
bGVlICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgdDAsIFNjb3BlQ2hhaW4gKyBQYXls
b2FkT2Zmc2V0W3QzXQorICAgIGxvYWRpIDggLSAyNFtQQ10sIHQyCisgICAgc3RvcmVpIFBDLCBB
cmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBzdG9yZXAgY2ZyLCBDYWxsZXJGcmFt
ZVt0M10KKyAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQor
ICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNdCisgICAgc3RvcmVpIENl
bGxUYWcsIFNjb3BlQ2hhaW4gKyBUYWdPZmZzZXRbdDNdCisgICAgbW92ZSB0MywgY2ZyCisgICAg
Y2FsbCBMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdCisgICAgZGlzcGF0
Y2hBZnRlckNhbGwoKQorCisub3BDYWxsU2xvdzoKKyAgICBzbG93UGF0aEZvckNhbGwoNiwgaGVs
cGVyKQorZW5kCisKK19sbGludF9vcF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBk
b0NhbGwoX2xsaW50X2hlbHBlcl9jYWxsKQorCisKK19sbGludF9vcF9jb25zdHJ1Y3Q6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRfaGVscGVyX2NvbnN0cnVjdCkKKwor
CitfbGxpbnRfb3BfY2FsbF92YXJhcmdzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzbG93
UGF0aEZvckNhbGwoNiwgX2xsaW50X2hlbHBlcl9jYWxsX3ZhcmFyZ3MpCisKKworX2xsaW50X29w
X2NhbGxfZXZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgCisgICAgIyBFdmFsIGlzIGV4
ZWN1dGVkIGluIG9uZSBvZiB0d28gbW9kZXM6CisgICAgIworICAgICMgMSkgV2UgZmluZCB0aGF0
IHdlJ3JlIHJlYWxseSBpbnZva2luZyBldmFsKCkgaW4gd2hpY2ggY2FzZSB0aGUKKyAgICAjICAg
IGV4ZWN1dGlvbiBpcyBwZXJmb21lZCBlbnRpcmVseSBpbnNpZGUgdGhlIGhlbHBlciwgYW5kIGl0
CisgICAgIyAgICByZXR1cm5zIHRoZSBQQyBvZiBhIGZ1bmN0aW9uIHRoYXQganVzdCByZXR1cm5z
IHRoZSByZXR1cm4gdmFsdWUKKyAgICAjICAgIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAg
IworICAgICMgMikgV2UgZmluZCB0aGF0IHdlJ3JlIGludm9raW5nIHNvbWV0aGluZyBjYWxsZWQg
ZXZhbCgpIHRoYXQgaXMgbm90CisgICAgIyAgICB0aGUgcmVhbCBldmFsLiBUaGVuIHRoZSBoZWxw
ZXIgcmV0dXJucyB0aGUgUEMgb2YgdGhlIHRoaW5nIHRvCisgICAgIyAgICBjYWxsLCBhbmQgd2Ug
Y2FsbCBpdC4KKyAgICAjCisgICAgIyBUaGlzIGFsbG93cyB1cyB0byBoYW5kbGUgdHdvIGNhc2Vz
LCB3aGljaCB3b3VsZCByZXF1aXJlIGEgdG90YWwgb2YKKyAgICAjIHVwIHRvIGZvdXIgcGllY2Vz
IG9mIHN0YXRlIHRoYXQgY2Fubm90IGJlIGVhc2lseSBwYWNrZWQgaW50byB0d28KKyAgICAjIHJl
Z2lzdGVycyAoQyBmdW5jdGlvbnMgY2FuIHJldHVybiB1cCB0byB0d28gcmVnaXN0ZXJzLCBlYXNp
bHkpOgorICAgICMKKyAgICAjIC0gVGhlIGNhbGwgZnJhbWUgcmVnaXN0ZXIuIFRoaXMgbWF5IG9y
IG1heSBub3QgaGF2ZSBiZWVuIG1vZGlmaWVkCisgICAgIyAgIGJ5IHRoZSBoZWxwZXIsIGJ1dCB0
aGUgY29udmVudGlvbiBpcyB0aGF0IGl0IHJldHVybnMgaXQuIEl0J3Mgbm90CisgICAgIyAgIHRv
dGFsbHkgY2xlYXIgaWYgdGhhdCdzIG5lY2Vzc2FyeSwgc2luY2UgdGhlIGNmciBpcyBjYWxsZWUg
c2F2ZS4KKyAgICAjICAgQnV0IHRoYXQncyBvdXIgc3R5bGUgaW4gdGhpcyBoZXJlIGludGVycHJl
dGVyIHNvIHdlIHN0aWNrIHdpdGggaXQuCisgICAgIworICAgICMgLSBBIGJpdCB0byBzYXkgaWYg
dGhlIGhlbHBlciBzdWNjZXNzZnVsbHkgZXhlY3V0ZWQgdGhlIGV2YWwgYW5kIGhhcworICAgICMg
ICB0aGUgcmV0dXJuIHZhbHVlLCBvciBkaWQgbm90IGV4ZWN1dGUgdGhlIGV2YWwgYnV0IGhhcyBh
IFBDIGZvciB1cworICAgICMgICB0byBjYWxsLgorICAgICMKKyAgICAjIC0gRWl0aGVyOgorICAg
ICMgICAtIFRoZSBKUyByZXR1cm4gdmFsdWUgKHR3byByZWdpc3RlcnMpLCBvcgorICAgICMKKyAg
ICAjICAgLSBUaGUgUEMgdG8gY2FsbC4KKyAgICAjCisgICAgIyBJdCB0dXJucyBvdXQgdG8gYmUg
ZWFzaWVyIHRvIGp1c3QgYWx3YXlzIGhhdmUgdGhpcyByZXR1cm4gdGhlIGNmcgorICAgICMgYW5k
IGEgUEMgdG8gY2FsbCwgYW5kIHRoYXQgUEMgbWF5IGJlIGEgZHVtbXkgdGh1bmsgdGhhdCBqdXN0
CisgICAgIyByZXR1cm5zIHRoZSBKUyB2YWx1ZSB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAg
IAorICAgIHNsb3dQYXRoRm9yQ2FsbCg0LCBfbGxpbnRfaGVscGVyX2NhbGxfZXZhbCkKKworCitf
bGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQ6CisgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorCisK
K19sbGludF9vcF90ZWFyX29mZl9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRl
ZAorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFy
T2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQKKy5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZDoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKKy5vcFRlYXJP
ZmZBY3RpdmF0aW9uTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF90
ZWFyX29mZl9hcmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENd
LCB0MAorICAgIHN1YmkgMSwgdDAgICAjIEdldCB0aGUgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lz
dGVyCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRl
YXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rl
YXJfb2ZmX2FyZ3VtZW50cykKKy5vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkOgorICAgIGRp
c3BhdGNoKDIpCisKKworbWFjcm8gZG9SZXR1cm4oKQorICAgIGxvYWRwIFJldHVyblBDW2Nmcl0s
IHQyCisgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgY2ZyCisgICAgcmVzdG9yZVJldHVybkFk
ZHJlc3NCZWZvcmVSZXR1cm4odDIpCisgICAgcmV0CitlbmQKKworX2xsaW50X29wX3JldDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDAp
CisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF9vcF9jYWxsX3B1dF9yZXN1bHQ6CisgICAgbG9h
ZGkgNFtQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgc3RvcmVpIHQxLCBUYWdPZmZz
ZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0K
KyAgICB2YWx1ZVByb2ZpbGUodDEsIHQwLCB0MykKKyAgICB0cmFjZUV4ZWN1dGlvbigpICMgTmVl
ZHMgdG8gYmUgaGVyZSBiZWNhdXNlIGl0IHdvdWxkIGNsb2JiZXIgdDEsIHQwCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfcmV0X29iamVjdF9vcl90aGlzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENd
LCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0
MSwgQ2VsbFRhZywgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmpl
Y3QKKyAgICBkb1JldHVybigpCisKKy5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdDoKKyAgICBs
b2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisg
ICAgZG9SZXR1cm4oKQorCisKK19sbGludF9vcF9tZXRob2RfY2hlY2s6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgICMgV2UgaWdub3JlIG1ldGhvZCBjaGVja3MgYW5kIHVzZSBub3JtYWwgZ2V0
X2J5X2lkIG9wdGltaXphdGlvbnMuCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3Ry
Y2F0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
c3RyY2F0KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3RvX3ByaW1pdGl2ZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10s
IHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGJpbmVxIHQx
LCBDZWxsVGFnLCAub3BUb1ByaW1pdGl2ZUlzSW1tCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQyCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2UKKy5vcFRvUHJp
bWl0aXZlSXNJbW06CisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBz
dG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisu
b3BUb1ByaW1pdGl2ZVNsb3dDYXNlOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19w
cmltaXRpdmUpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZ2V0X3BuYW1lczoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9wbmFt
ZXMpCisgICAgZGlzcGF0Y2goMCkgIyBUaGUgaGVscGVyIGVpdGhlciBhZHZhbmNlcyB0aGUgUEMg
b3IganVtcHMgdXMgdG8gc29tZXdoZXJlIGVsc2UuCisKKworX2xsaW50X29wX25leHRfcG5hbWU6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkaSAx
NltQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSwgdDAKKyAgICBi
aWVxIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCAub3BOZXh0UG5hbWVFbmQKKyAgICBs
b2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIK
KyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2pzU3RyaW5nc1t0Ml0sIHQzCisg
ICAgbG9hZGkgW3QzLCB0MCwgOF0sIHQzCisgICAgYWRkaSAxLCB0MAorICAgIHN0b3JlaSB0MCwg
UGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3Jl
aSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDMsIDhdLCB0MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNd
LCB0MQorICAgIGJwbmVxIHQxLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVj
dHVyZVt0Ml0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjptX2NhY2hlZFByb3RvdHlwZUNoYWluW3QyXSwgdDAKKyAgICBsb2FkcCBTdHJ1Y3R1cmVD
aGFpbjo6bV92ZWN0b3JbdDBdLCB0MAorICAgIGJ0cHogW3QwXSwgLm9wTmV4dFBuYW1lVGFyZ2V0
Cisub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3A6CisgICAgYmllcSBTdHJ1Y3R1cmU6Om1f
cHJvdG90eXBlICsgVGFnT2Zmc2V0W3QxXSwgTnVsbFRhZywgLm9wTmV4dFBuYW1lU2xvdworICAg
IGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QxXSwgdDIKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDEKKyAgICBicG5lcSB0MSwgW3QwXSwg
Lm9wTmV4dFBuYW1lU2xvdworICAgIGFkZHAgNCwgdDAKKyAgICBidHBueiBbdDBdLCAub3BOZXh0
UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKKy5vcE5leHRQbmFtZVRhcmdldDoKKyAgICBkaXNwYXRj
aEJyYW5jaCgyNFtQQ10pCisKKy5vcE5leHRQbmFtZUVuZDoKKyAgICBkaXNwYXRjaCg3KQorCisu
b3BOZXh0UG5hbWVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXh0X3BuYW1l
KSAjIFRoaXMgZWl0aGVyIGtlZXBzIHRoZSBQQyB3aGVyZSBpdCB3YXMgKGNhdXNpbmcgdXMgdG8g
bG9vcCkgb3Igc2V0cyBpdCB0byB0YXJnZXQuCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRf
b3BfcHVzaF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3B1c2hfc2NvcGUpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9w
X3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcG9wX3Njb3BlKQorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3B1c2hfbmV3X3Nj
b3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cHVzaF9uZXdfc2NvcGUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfY2F0Y2g6Cisg
ICAgIyBUaGlzIGlzIHdoZXJlIHdlIGVuZCB1cCBmcm9tIHRoZSBKSVQncyB0aHJvdyB0cmFtcG9s
aW5lIChiZWNhdXNlIHRoZQorICAgICMgbWFjaGluZSBjb2RlIHJldHVybiBhZGRyZXNzIHdpbGwg
YmUgc2V0IHRvIF9sbGludF9vcF9jYXRjaCksIGFuZCBmcm9tCisgICAgIyB0aGUgaW50ZXJwcmV0
ZXIncyB0aHJvdyB0cmFtcG9saW5lIChzZWUgX2xsaW50X3Rocm93X3RyYW1wb2xpbmUpLgorICAg
ICMgVGhlIEpJVCB0aHJvd2luZyBwcm90b2NvbCBjYWxscyBmb3IgdGhlIGNmciB0byBiZSBpbiB0
MC4gVGhlIHRocm93aW5nCisgICAgIyBjb2RlIG11c3QgaGF2ZSBrbm93biB0aGF0IHdlIHdlcmUg
dGhyb3dpbmcgdG8gdGhlIGludGVycHJldGVyLCBhbmQgaGF2ZQorICAgICMgc2V0IEpTR2xvYmFs
RGF0YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93LgorICAgIG1vdmUgdDAsIGNmcgorICAg
IGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRpIEpTR2xv
YmFsRGF0YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93W3QzXSwgUEMKKyAgICBsb2FkaSBK
U0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdLCB0MAorICAgIGxvYWRp
IEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSwgdDEKKyAgICBzdG9yZWkg
MCwgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3Jl
aSBFbXB0eVZhbHVlVGFnLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10g
ICAgICAgCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB0
cmFjZUV4ZWN1dGlvbigpICAjIFRoaXMgbmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIHdlIGRvbid0
IHdhbnQgdG8gY2xvYmJlciB0MCwgdDEsIHQyLCB0MyBhYm92ZS4KKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF90aHJvdzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Rocm93KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Ro
cm93X3JlZmVyZW5jZV9lcnJvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF9qc3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENd
LCB0MAorICAgIGFkZGkgMyAqIDQsIFBDLCB0MQorICAgIHN0b3JlaSB0MSwgW2NmciwgdDAsIDhd
CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKworX2xsaW50X29wX3NyZXQ6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFtjZnIsIHQwLCA4
XSwgUEMKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9kZWJ1ZzoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlYnVnKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX3Byb2ZpbGVfd2lsbF9jYWxsOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vb
c3BdLCB0MAorICAgIGJ0cHogW3QwXSwgLm9wUHJvZmlsZVdpbGxDYWxsRG9uZQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCkKKy5vcFByb2ZpbGVXaWxsQ2Fs
bERvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJvZmlsZV9kaWRfY2FsbDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFBy
b2ZpbGVyUmVmZXJlbmNlW3NwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5vcFByb2ZpbGVXaWxsQ2Fs
bERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKKy5v
cFByb2ZpbGVEaWRDYWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9lbmQ6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgp
CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgZG9SZXR1cm4o
KQorCisKK19sbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lOgorICAgICMgV2hlbiB0
aHJvd2luZyBmcm9tIHRoZSBpbnRlcnByZXRlciAoaS5lLiB0aHJvd2luZyBmcm9tIExMSW50SGVs
cGVycyksIHNvCisgICAgIyB0aGUgdGhyb3cgdGFyZ2V0IGlzIG5vdCBuZWNlc3NhcmlseSBpbnRl
cnByZXRlZCBjb2RlLCB3ZSBjb21lIHRvIGhlcmUuCisgICAgIyBUaGlzIGVzc2VudGlhbGx5IGVt
dWxhdGVzIHRoZSBKSVQncyB0aHJvd2luZyBwcm90b2NvbC4KKyAgICBsb2FkcCBKSVRTdGFja0Zy
YW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFt
ZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENG
b3JUaHJvd1t0MV0KKworCitfbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZToKKyAg
ICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpCisgICAgbG9hZHAgSklUU3RhY2tG
cmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJh
bWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBD
Rm9yVGhyb3dbdDFdCisKKworIyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2
ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMuCisjIFRoZXNlIG9wY29kZXMg
c2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNz
ZXJ0CisjIGFzIG11Y2guCisKK21hY3JvIG5vdFN1cHBvcnRlZCgpCisgICAgaWYgQVNTRVJUX0VO
QUJMRUQKKyAgICAgICAgY3Jhc2goKQorICAgIGVsc2UKKyAgICAgICAgIyBXZSBzaG91bGQgdXNl
IHdoYXRldmVyIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBpbnN0cnVjdGlvbiBpcywganVzdCB0bwor
ICAgICAgICAjIGVuc3VyZSB0aGF0IHRoZXJlIGlzIGEgZ2FwIGJldHdlZW4gaW5zdHJ1Y3Rpb24g
bGFiZWxzLiBJZiBtdWx0aXBsZQorICAgICAgICAjIHNtYWxsZXN0IGluc3RydWN0aW9ucyBleGlz
dCwgd2Ugc2hvdWxkIHBpY2sgdGhlIG9uZSB0aGF0IGlzIG1vc3QKKyAgICAgICAgIyBsaWtlbHkg
cmVzdWx0IGluIGV4ZWN1dGlvbiBiZWluZyBoYWx0ZWQuIEN1cnJlbnRseSB0aGF0IGlzIHRoZSBi
cmVhaworICAgICAgICAjIGluc3RydWN0aW9uIG9uIGFsbCBhcmNoaXRlY3R1cmVzIHdlJ3JlIGlu
dGVyZXN0ZWQgaW4uIChCcmVhayBpcyBpbnQzCisgICAgICAgICMgb24gSW50ZWwsIHdoaWNoIGlz
IDEgYnl0ZSwgYW5kIGJrcHQgb24gQVJNdjcsIHdoaWNoIGlzIDIgYnl0ZXMuKQorICAgICAgICBi
cmVhaworICAgIGVuZAorZW5kCisKK19sbGludF9vcF9nZXRfYXJyYXlfbGVuZ3RoOgorICAgIG5v
dFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY2hhaW46CisgICAgbm90U3VwcG9y
dGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jdXN0b21fY2hhaW46CisgICAgbm90U3VwcG9y
dGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jdXN0b21fcHJvdG86CisgICAgbm90U3VwcG9y
dGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jdXN0b21fc2VsZjoKKyAgICBub3RTdXBwb3J0
ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dlbmVyaWM6CisgICAgbm90U3VwcG9ydGVkKCkK
KworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJfY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkK
KworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJfcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkK
KworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJfc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQor
CitfbGxpbnRfb3BfZ2V0X2J5X2lkX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGlu
dF9vcF9nZXRfYnlfaWRfc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0
X3N0cmluZ19sZW5ndGg6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9p
ZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfcmVw
bGFjZToKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b246CisgICAgbm90U3VwcG9ydGVkKCkKKworCisjIEluZGljYXRlIHRoZSBlbmQgb2YgTExJbnQu
CitfbGxpbnRfZW5kOgorICAgIGNyYXNoKCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJ
bnRlcnByZXRlci5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiTExJbnRPZmZs
aW5lQXNtQ29uZmlnLmgiCisKKyNpbmNsdWRlICJMTEludEFzc2VtYmx5LmgiCisKKyNlbmRpZiAv
LyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisjZGVmaW5lIExvd0xldmVsSW50ZXJwcmV0ZXJf
aAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNp
bmNsdWRlICJPcGNvZGUuaCIKKworI2RlZmluZSBMTElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29k
ZSwgbGVuZ3RoKSBleHRlcm4gIkMiIHZvaWQgbGxpbnRfIyNvcGNvZGUoKTsKKyAgICBGT1JfRUFD
SF9PUENPREVfSUQoTExJTlRfSU5TVFJVQ1RJT05fREVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJV
Q1RJT05fREVDTAorCitleHRlcm4gIkMiIHZvaWQgbGxpbnRfYmVnaW4oKTsKK2V4dGVybiAiQyIg
dm9pZCBsbGludF9lbmQoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9wcm9ncmFtX3Byb2xvZ3Vl
KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZXZhbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2
b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQg
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQg
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2
b2lkIGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
dGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Ro
cm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUoKTsKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkK
KworI2VuZGlmIC8vIExvd0xldmVsSW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTMg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2NsYXNzIFNwZWNpYWxS
ZWdpc3RlcgorICBkZWYgaW5pdGlhbGl6ZShuYW1lKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQK
KyAgCisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBAbmFtZQorICBlbmQKK2VuZAorCitBUk12N19E
QVRBX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoImlwIikKK0FSTXY3X0FERFJfUkVHID0gU3Bl
Y2lhbFJlZ2lzdGVyLm5ldygicjMiKQorCitkZWYgbW92ZUltbWVkaWF0ZSh2YWx1ZSwgcmVnaXN0
ZXIpCisgICMgQ3VycmVudGx5IHdlIG9ubHkgaGFuZGxlIHRoZSBzaW1wbGUgY2FzZXMsIGFuZCBm
YWxsIGJhY2sgdG8gbW92L21vdnQgZm9yIHRoZSBjb21wbGV4IG9uZXMuCisgIGlmIHZhbHVlID49
IDAgJiYgdmFsdWUgPCAyNTYKKyAgICAkYXNtLnB1dHMgIm1vdncgXCMje3ZhbHVlfSwgI3tyZWdp
c3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNpZiAofnZhbHVlKSA+PSAwICYmICh+dmFsdWUpIDwg
MjU2CisgICAgJGFzbS5wdXRzICJtdm53IFwjI3t+dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3Bl
cmFuZH0iCisgIGVsc2UKKyAgICAkYXNtLnB1dHMgIm1vdncgXCMje3ZhbHVlICYgMHhmZmZmfSwg
I3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAgIGlmICh2YWx1ZSAmIDB4ZmZmZjAwMDApICE9
IDAKKyAgICAgICRhc20ucHV0cyAibW92dCBcIyN7dmFsdWUgPj4gMTZ9LCAje3JlZ2lzdGVyLmFy
bVY3T3BlcmFuZH0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAg
ZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIw
IgorICAgICAgInIwIgorICAgIHdoZW4gInQxIiwgImExIiwgInIxIgorICAgICAgInIxIgorICAg
IHdoZW4gInQyIiwgImEyIgorICAgICAgInIyIgorICAgIHdoZW4gImEzIgorICAgICAgInIzIgor
ICAgIHdoZW4gInQzIgorICAgICAgInI0IgorICAgIHdoZW4gInQ0IgorICAgICAgInI3IgorICAg
IHdoZW4gImNmciIKKyAgICAgICJyNSIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5k
CisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQK
KyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgeWllbGQKKyAgZW5kCitl
bmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5h
bWUKKyAgICB3aGVuICJmdDAiLCAiZnIiCisgICAgICAiZDAiCisgICAgd2hlbiAiZnIxIiwKKyAg
ICAgICJkMSIKKyAgICB3aGVuICJmcjIiCisgICAgICAiZDIiCisgICAgd2hlbiAiZnIzIgorICAg
ICAgImQzIgorICAgIHdoZW4gImZyNCIKKyAgICAgICJkNCIKKyAgICB3aGVuICJmcjUiCisgICAg
ICAiZDUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYg
YXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3
UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVm
IGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3Mg
SW1tZWRpYXRlCisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICByYWlzZSAiSW52YWxpZCBpbW1lZGlh
dGUgI3t2YWx1ZX0iIGlmIHZhbHVlIDwgMCBvciB2YWx1ZSA+IDI1NQorICAgICIjJHt2YWx1ZX0i
CisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBl
bmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFu
ZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZCBzZWxmCisg
IGVuZAorZW5kCisKK21vZHVsZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKyAgZGVmIGFybVY3TG9h
ZFN0b3JlV3JhcAorICAgIHNlbGYuYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisg
ICAgJGFzbS5wdXRzICJcdGxkciAje3NlbGYuYXJtVjdQb3NzaWJseU1lbW9yeU9wZXJhbmR9LCAj
e0FSTXY3X0RBVEFfUkVHLmFybVY3T3BlcmFuZH0iCisgICAgeWllbGQgQVJNdjdfREFUQV9SRUcK
KyAgICAkYXNtLnB1dHMgIlx0c3RyICN7QVJNdjdfREFUQV9SRUcuYXJtVjdPcGVyYW5kfSwgI3tz
ZWxmLmFybVY3UG9zc2libHlNZW1vcnlPcGVyYW5kfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRk
cmVzcworICBpbmNsdWRlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworCisgIGRlZiBhcm1WN1ByZXBh
cmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiB8fCBv
ZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgbW92ZUltbWVkaWF0ZShvZmZzZXQudmFsdWUsIEFS
TXY3X0FERFJfUkVHKQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVt
b3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+
IDB4ZmZmCisgICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje0FSTXY3X0FERFJfUkVHLmFy
bVY3T3BlcmFuZH1dIgorICAgIGVsc2UKKyAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7
b2Zmc2V0LmFybVY3T3BlcmFuZH1dIgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBCYXNl
SW5kZXgKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKworICBkZWYgYXJtVjdQcmVw
YXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAg
IG1vdmVJbW1lZGlhdGUob2Zmc2V0LnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgICAgICRhc20u
cHV0cyAiYWRkdyAje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09w
ZXJhbmR9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3Bl
cmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICAiWyN7QVJNdjdfQUREUl9SRUcu
YXJtVjdPcGVyYW5kfSwgI3tpbmRleC5hcm1WN09wZXJhbmR9LCBsc2wgXCMje3NjYWxlfV0iCisg
ICAgZWxzZQorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tpbmRleC5hcm1WN09wZXJh
bmR9LCBsc2wgXCMje3NjYWxlfV0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29s
dXRlQWRkcmVzcworICBpbmNsdWRlIEFSTXY3QWRkcmVzc1V0aWxpdGllcworICAKKyAgZGVmIGFy
bVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIG1vdmVJbW1lZGlhdGUoYWRkcmVz
cy52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVN
ZW1vcnlPcGVyYW5kCisgICAgIlsje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH1dIgorICBl
bmQKK2VuZAorCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA4IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShf
X0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3Jl
cXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZXR0aW5ncyIKK3Jl
cXVpcmUgInRyYW5zZm9ybSIKKworY2xhc3MgQXNzZW1ibGVyCisgIGRlZiBpbml0aWFsaXplKG91
dHApCisgICAgQG91dHAgPSBvdXRwCisgICAgQHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRl
ZiBlbnRlckFzbQorICAgIEBvdXRwLnB1dHMgImFzbSAoIgorICAgIEBzdGF0ZSA9IDphc20KKyAg
ZW5kCisgIAorICBkZWYgbGVhdmVBc20KKyAgICBAb3V0cC5wdXRzICIpOyIKKyAgICBAc3RhdGUg
PSA6Y3BwCisgIGVuZAorICAKKyAgZGVmIGluQXNtCisgICAgZW50ZXJBc20KKyAgICB5aWVsZAor
ICAgIGxlYXZlQXNtCisgIGVuZAorICAKKyAgZGVmIHB1dHMobGluZSkKKyAgICByYWlzZSB1bmxl
c3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wdXRzKChsaW5lICsgIlxuIikuaW5zcGVjdCkK
KyAgZW5kCisgIAorICBkZWYgY29tbWVudCh0ZXh0KQorICAgIEBvdXRwLnB1dHMgIi8vICN7dGV4
dH0iCisgIGVuZAorZW5kCisKK2FzbUZpbGUgPSBBUkdWLnNoaWZ0CitvZmZzZXRzRmlsZSA9IEFS
R1Yuc2hpZnQKK291dHB1dEZsbm0gPSBBUkdWLnNoaWZ0CisKK29mZnNldHNMaXN0LCBjb25maWdJ
bmRleCA9IG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgob2Zmc2V0c0ZpbGUpCitpbnB1dERh
dGEgPSBJTzo6cmVhZChhc21GaWxlKQorCitpbnB1dEhhc2ggPQorICAiLy8gb2ZmbGluZWFzbSBp
bnB1dCBoYXNoOiAiICsgRGlnZXN0OjpTSEExLmhleGRpZ2VzdChpbnB1dERhdGEpICsKKyAgIiAi
ICsgRGlnZXN0OjpTSEExLmhleGRpZ2VzdCgob2Zmc2V0c0xpc3QgKyBbY29uZmlnSW5kZXhdKS5q
b2luKCcgJykpCisKK2lmIEZpbGVUZXN0LmV4aXN0PyBvdXRwdXRGbG5tCisgIEZpbGUub3Blbihv
dXRwdXRGbG5tLCAiciIpIHsKKyAgICB8IGlucCB8CisgICAgZmlyc3RMaW5lID0gaW5wLmdldHMK
KyAgICBpZiBmaXJzdExpbmUgYW5kIGZpcnN0TGluZS5jaG9tcCA9PSBpbnB1dEhhc2gKKyAgICAg
ICRzdGRlcnIucHV0cyAiTm90aGluZyBjaGFuZ2VkLiIKKyAgICAgIGV4aXQgMAorICAgIGVuZAor
ICB9CitlbmQKKworRmlsZS5vcGVuKG91dHB1dEZsbm0sICJ3IikgeworICB8IG91dHAgfAorICAk
b3V0cHV0ID0gb3V0cAorICAkb3V0cHV0LnB1dHMgaW5wdXRIYXNoCisgIAorICAkYXNtID0gQXNz
ZW1ibGVyLm5ldygkb3V0cHV0KQorICAKKyAgYXN0ID0gcGFyc2UobGV4KGlucHV0RGF0YSkpCisg
IAorICBmb3JTZXR0aW5ncyhjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KVtjb25maWdJ
bmRleF0sIGFzdCkgeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tl
bmQgfAorICAgIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAgICBsb3dM
ZXZlbEFTVCA9IGxvd0xldmVsQVNULnJlc29sdmUoKmJ1aWxkT2Zmc2V0c01hcChsb3dMZXZlbEFT
VCwgb2Zmc2V0c0xpc3QpKQorICAgIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0
dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kKSB7CisgICAgICAkYXNtLmluQXNtIHsKKyAgICAg
ICAgbG93TGV2ZWxBU1QubG93ZXIoYmFja2VuZCkKKyAgICAgIH0KKyAgICB9CisgIH0KK30KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODEzIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisj
CisjIEJhc2UgdXRpbGl0eSB0eXBlcyBmb3IgdGhlIEFTVC4KKyMKKworIyBWYWxpZCBtZXRob2Rz
IGZvciBOb2RlOgorIworIyBub2RlLmNoaWxkcmVuIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgaW1t
ZWRpYXRlIGNoaWxkcmVuLgorIworIyBub2RlLmRlc2NlbmRlbnRzIC0+IFJldHVybnMgYW4gYXJy
YXkgb2YgYWxsIHN0cmljdCBkZXNjZW5kYW50cyAoY2hpbGRyZW4KKyMgICAgIGFuZCBjaGlsZHJl
biBvZiBjaGlsZHJlbiwgdHJhbnNpdGl2ZWx5KS4KKyMKKyMgbm9kZS5mbGF0dGVuIC0+IFJldHVy
bnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgc3RyaWN0IGRlc2NlbmRhbnRzIGFuZAorIyAgICAg
dGhlIG5vZGUgaXRzZWxmLgorIworIyBub2RlLmZpbHRlcih0eXBlKSAtPiBSZXR1cm5zIGFuIGFy
cmF5IGNvbnRhaW5pbmcgdGhvc2UgZWxlbWVudHMgaW4KKyMgICAgIG5vZGUuZmxhdHRlbiB0aGF0
IGFyZSBvZiB0aGUgZ2l2ZW4gdHlwZSAoaXNfYT8gdHlwZSByZXR1cm5zIHRydWUpLgorIworIyBu
b2RlLm1hcENoaWxkcmVue3x2fCAuLi59IC0+IFJldHVybnMgYSBuZXcgbm9kZSB3aXRoIGFsbCBj
aGlsZHJlbgorIyAgICAgcmVwbGFjZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBibG9jay4KKyMK
KyMgRXhhbXBsZXM6CisjCisjIG5vZGUuZmlsdGVyKFNldHRpbmcpLnVuaXEgLT4gUmV0dXJucyBh
bGwgb2YgdGhlIHNldHRpbmdzIHRoYXQgdGhlIEFTVCdzCisjICAgICBJZlRoZW5FbHNlIGJsb2Nr
cyBkZXBlbmQgb24uCisjCisjIG5vZGUuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcSAtPiBSZXR1
cm5zIGFsbCBvZiB0aGUgc3RydWN0dXJlIG9mZnNldHMKKyMgICAgIHRoYXQgdGhlIEFTVCBkZXBl
bmRzIG9uLgorCitjbGFzcyBOb2RlCisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgor
ICBlbmQKKyAgCisgIGRlZiBjb2RlT3JpZ2luU3RyaW5nCisgICAgImxpbmUgbnVtYmVyICN7QGNv
ZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBkZXNjZW5kYW50cworICAgIGNoaWxkcmVuLmNv
bGxlY3R7fHZ8IHYuZmxhdHRlbn0uZmxhdHRlbgorICBlbmQKKyAgCisgIGRlZiBmbGF0dGVuCisg
ICAgW3NlbGZdICsgZGVzY2VuZGFudHMKKyAgZW5kCisgIAorICBkZWYgZmlsdGVyKHR5cGUpCisg
ICAgZmxhdHRlbi5zZWxlY3R7fHZ8IHYuaXNfYT8gdHlwZX0KKyAgZW5kCitlbmQKKworY2xhc3Mg
Tm9DaGlsZHJlbiA8IE5vZGUKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtdCisgIGVuZAor
ICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1
Y3RPZmZzZXRLZXkKKyAgYXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5p
dGlhbGl6ZShzdHJ1Y3QsIGZpZWxkKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQg
PSBmaWVsZAorICBlbmQKKyAgCisgIGRlZiBoYXNoCisgICAgQHN0cnVjdC5oYXNoICsgQGZpZWxk
Lmhhc2ggKiAzCisgIGVuZAorICAKKyAgZGVmIGVxbD8ob3RoZXIpCisgICAgQHN0cnVjdCA9PSBv
dGhlci5zdHJ1Y3QgYW5kIEBmaWVsZCA9PSBvdGhlci5maWVsZAorICBlbmQKK2VuZAorICAgIAor
IworIyBBU1Qgbm9kZXMuCisjCisKK2NsYXNzIFN0cnVjdE9mZnNldCA8IE5vQ2hpbGRyZW4KKyAg
YXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9
IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30K
KyAgCisgIGRlZiBzZWxmLmZvckZpZWxkKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAg
a2V5ID0gU3RydWN0T2Zmc2V0S2V5Lm5ldyhzdHJ1Y3QsIGZpZWxkKQorICAgIAorICAgIHVubGVz
cyBAQG1hcHBpbmdba2V5XQorICAgICAgQEBtYXBwaW5nW2tleV0gPSBTdHJ1Y3RPZmZzZXQubmV3
KGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW2tleV0K
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje3N0cnVjdH06OiN7ZmllbGR9IgorICBlbmQK
KyAgCisgIGRlZiA8PT4ob3RoZXIpCisgICAgaWYgQHN0cnVjdCAhPSBvdGhlci5zdHJ1Y3QKKyAg
ICAgIHJldHVybiBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgICBlbmQKKyAgICBAZmllbGQg
PD0+IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZiA8IE5vQ2hpbGRyZW4K
KyAgYXR0cl9yZWFkZXIgOnN0cnVjdAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
c3RydWN0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICBl
bmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmln
aW4sIHN0cnVjdCkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW3N0cnVjdF0KKyAgICAgIEBAbWFwcGlu
Z1tzdHJ1Y3RdID0gU2l6ZW9mLm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgZW5kCisgICAg
QEBtYXBwaW5nW3N0cnVjdF0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJzaXplb2YgI3tA
c3RydWN0fSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAgIEBzdHJ1Y3QgPD0+IG90
aGVyLnN0cnVjdAorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUgPCBOb0NoaWxkcmVuCisg
IGF0dHJfcmVhZGVyIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFs
dWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIiN7dmFsdWV9IgorICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikK
KyAgICBvdGhlci5pc19hPyBJbW1lZGlhdGUgYW5kIG90aGVyLnZhbHVlID09IEB2YWx1ZQorICBl
bmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVm
dCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJp
Z2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVu
ZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQWRkSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdp
biwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiKCN7bGVmdC5kdW1wfSArICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFz
cyBTdWJJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAK
KyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1h
cENoaWxkcmVuCisgICAgU3ViSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0
KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5k
dW1wfSAtICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVz
IDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBs
ZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVu
CisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAg
TXVsSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdo
dCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAqICN7cmlnaHQu
ZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBOZWdJbW1lZGlhdGUgPCBOb2RlCisgIGF0dHJf
cmVhZGVyIDpjaGlsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAY2hpbGQgPSBjaGlsZAorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIFtAY2hpbGRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisg
ICAgTmVnSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIoLSN7QGNoaWxkLmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xh
c3MgUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNl
bGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0K
KyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAg
YXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBA
QG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IEZQUmVn
aXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFt
ZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3Mg
VmFyaWFibGUgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5h
bWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZv
ck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAg
ICBAQG1hcHBpbmdbbmFtZV0gPSBWYXJpYWJsZS5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBl
bmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUK
KyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2Us
IDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGJhc2UsIG9mZnNldCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBiYXNlID0gYmFzZQorICAgIEBvZmZzZXQgPSBv
ZmZzZXQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBvZmZzZXRdCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwg
KHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJh
c2VJbmRleCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2UsIDppbmRleCwgOnNjYWxlLCA6b2Zm
c2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBpbmRleCwgc2NhbGUs
IG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBiYXNlID0gYmFzZQorICAgIEBp
bmRleCA9IGluZGV4CisgICAgQHNjYWxlID0gc2NhbGUKKyAgICByYWlzZSB1bmxlc3MgWzEsIDIs
IDQsIDhdLm1lbWJlcj8gQHNjYWxlCisgICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisg
IGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwgQGluZGV4LCBAb2Zmc2V0XQorICBlbmQKKyAgCisg
IGRlZiBtYXBDaGlsZHJlbgorICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBi
YXNlKSwgKHlpZWxkIEBpbmRleCksIEBzY2FsZSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfSwgI3tpbmRleC5k
dW1wfSwgI3tzY2FsZX1dIgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MgPCBO
b0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDphZGRyZXNzCisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBhZGRyZXNzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGFkZHJlc3Mg
PSBhZGRyZXNzCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3thZGRyZXNzLmR1bXB9W10i
CisgIGVuZAorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uIDwgTm9kZQorICBhdHRyX3JlYWRlciA6
b3Bjb2RlLCA6b3BlcmFuZHMKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG9wY29k
ZSwgb3BlcmFuZHMpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAb3Bjb2RlID0gb3Bjb2Rl
CisgICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAg
ICBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBJbnN0
cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgQG9wY29kZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHQiICsgb3Bjb2RlLnRvX3MgKyAiICIgKyBvcGVy
YW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikKKyAgZW5kCitlbmQKKworY2xhc3Mg
RXJyb3IgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdGVycm9yIgorICBl
bmQKK2VuZAorCitjbGFzcyBDb25zdERlY2wgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDp2YXJpYWJs
ZSwgOnZhbHVlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFs
dWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAdmFyaWFibGUgPSB2YXJpYWJsZQorICAg
IEB2YWx1ZSA9IHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0B2YXJpYWJs
ZSwgQHZhbHVlXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIENvbnN0RGVjbC5u
ZXcoY29kZU9yaWdpbiwgKHlpZWxkIEB2YXJpYWJsZSksICh5aWVsZCBAdmFsdWUpKQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgImNvbnN0ICN7QHZhcmlhYmxlLmR1bXB9ID0gI3tAdmFsdWUu
ZHVtcH0iCisgIGVuZAorZW5kCisKKyRsYWJlbE1hcHBpbmcgPSB7fQorCitjbGFzcyBMYWJlbCA8
IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUK
KyAgZW5kCisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgaWYg
JGxhYmVsTWFwcGluZ1tuYW1lXQorICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAj
e25hbWV9IiB1bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMYWJlbAorICAgIGVsc2UK
KyAgICAgICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkK
KyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwgPCBOb0NoaWxk
cmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAor
CisgIEBAdW5pcXVlTmFtZUNvdW50ZXIgPSAwCisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgaWYgJGxhYmVsTWFwcGluZ1tuYW1lXQorICAgICAgcmFpc2UgIkxh
YmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9IiB1bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5p
c19hPyBMb2NhbExhYmVsCisgICAgZWxzZQorICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExv
Y2FsTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGlu
Z1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBzZWxmLnVuaXF1ZShjb21tZW50KQorICAgIG5ld05h
bWUgPSAiXyN7Y29tbWVudH0iCisgICAgaWYgJGxhYmVsTWFwcGluZ1tuZXdOYW1lXQorICAgICAg
d2hpbGUgJGxhYmVsTWFwcGluZ1tuZXdOYW1lID0gIl8je0BAdW5pcXVlTmFtZUNvdW50ZXJ9XyN7
Y29tbWVudH0iXQorICAgICAgICBAQHVuaXF1ZU5hbWVDb3VudGVyICs9IDEKKyAgICAgIGVuZAor
ICAgIGVuZAorICAgIGZvck5hbWUobmlsLCBuZXdOYW1lKQorICBlbmQKKyAgCisgIGRlZiBjbGVh
bk5hbWUKKyAgICBpZiBuYW1lID1+IC9eXC4vCisgICAgICAiXyIgKyBuYW1lWzEuLi0xXQorICAg
IGVsc2UKKyAgICAgIG5hbWUKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIj
e25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisg
IGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
CisgICAgTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBl
bmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgbGFiZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNl
IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0g
bGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAg
CisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmln
aW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFt
ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQorICBlbmQKK2VuZAorCitj
bGFzcyBTZXF1ZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGxpc3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGlz
dCA9IGxpc3QKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBsaXN0CisgIGVuZAorICAK
KyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBA
bGlzdC5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0
e3x2fCB2LmR1bXB9LmpvaW4oIlxuIikKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hp
bGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBp
bnN0YW5jZSA9IFRydWUubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFu
Y2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAidHJ1ZSIKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UgPCBOb0NoaWxkcmVuCisg
IGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2Ug
PSBGYWxzZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBl
bmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiZmFsc2UiCisgIGVuZAorZW5kCisKK2NsYXNzIFRydWVDbGFzcworICBkZWYgYXNOb2RlCisg
ICAgVHJ1ZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZUNsYXNzCisgIGRlZiBh
c05vZGUKKyAgICBGYWxzZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nIDwg
Tm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQor
ICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5n
W25hbWVdID0gU2V0dGluZy5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1h
cHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQK
KworY2xhc3MgQW5kIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENo
aWxkcmVuCisgICAgQW5kLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJp
Z2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3Jp
Z2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgT3IgPCBOb2RlCisgIGF0dHJfcmVhZGVy
IDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJp
Z2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0
ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0K
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
KCN7bGVmdC5kdW1wfSBvciAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTm90
IDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisg
IAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOb3QubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hp
bGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisg
IGVuZAorZW5kCisKK2NsYXNzIFNraXAgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICJcdHNraXAiCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpwcmVkaWNhdGUsIDp0aGVuQ2FzZQorICBhdHRyX2FjY2Vzc29yIDplbHNlQ2Fz
ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZSkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBwcmVkaWNhdGUgPSBwcmVkaWNhdGUKKyAgICBA
dGhlbkNhc2UgPSB0aGVuQ2FzZQorICAgIEBlbHNlQ2FzZSA9IFNraXAubmV3KGNvZGVPcmlnaW4p
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgaWYgQGVsc2VDYXNlCisgICAgICBbQHBy
ZWRpY2F0ZSwgQHRoZW5DYXNlLCBAZWxzZUNhc2VdCisgICAgZWxzZQorICAgICAgW0BwcmVkaWNh
dGUsIEB0aGVuQ2FzZV0KKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHByZWRpY2F0ZSksICh5aWVsZCBA
dGhlbkNhc2UpLCAoeWllbGQgQGVsc2VDYXNlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICJpZiAje3ByZWRpY2F0ZS5kdW1wfVxuIiArIHRoZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsg
ZWxzZUNhc2UuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8gPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6dmFyaWFibGVzLCA6Ym9keQorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQHZhcmlhYmxlcyA9IHZhcmlhYmxlcworICAg
IEBib2R5ID0gYm9keQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEB2YXJpYWJsZXMg
KyBbQGJvZHldCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTWFjcm8ubmV3KGNv
ZGVPcmlnaW4sIEBuYW1lLCBAdmFyaWFibGVzLm1hcHt8dnwgeWllbGQgdn0sICh5aWVsZCBAYm9k
eSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFi
bGVzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpXG4iICsgYm9keS5kdW1wICsg
IlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBNYWNyb0NhbGwgPCBOb2RlCisgIGF0dHJfcmVh
ZGVyIDpuYW1lLCA6b3BlcmFuZHMKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5h
bWUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisg
ICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAgICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAg
QG9wZXJhbmRzLmVhY2h7fHZ8IHJhaXNlIHVubGVzcyB2fQorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIEBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykK
KyAgICBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAb3BlcmFuZHMubWFwKCZwcm9j
KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdCN7bmFtZX0oIiArIG9wZXJhbmRzLmNv
bGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpIgorICBlbmQKK2VuZAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJ4ODYiCisKK0JBQ0tFTkRTID0KKyAgWwor
ICAgIlg4NiIsCisgICAiQVJNdjciCisgIF0KKworV09SS0lOR19CQUNLRU5EUyA9CisgIFsKKyAg
ICJYODYiCisgIF0KKworQkFDS0VORF9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCcgKyBCQUNL
RU5EUy5qb2luKCcpfCgnKSArICcpXFxaJykKKworY2xhc3MgTm9kZQorICBkZWYgbG93ZXIobmFt
ZSkKKyAgICBzZW5kKCJsb3dlciIgKyBuYW1lKQorICBlbmQKK2VuZAorCisjIE92ZXJyaWRlcyBm
b3IgbG93ZXIoKSBmb3IgdGhvc2Ugbm9kZXMgdGhhdCBhcmUgYmFja2VuZC1hZ25vc3RpYworCitk
ZWYgc2FuaXRpemVMYWJlbE5hbWUobmFtZSkKKyAgIyBTb21lIHBsYXRmb3JtcyBkb24ndCB3YW50
IHRoZSBsZWFkaW5nICJfIi4gSWYgd2UgZXZlciB3YW50IHRvIGRvIHNvbWV0aGluZworICAjIGFi
b3V0IHRoYXQsIGl0IHdvdWxkIGJlIGhlcmUuCisgIG5hbWUKK2VuZAorCitjbGFzcyBMYWJlbAor
ICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHMgIi5nbG9ibCAje3Nhbml0aXplTGFiZWxO
YW1lKHNlbGYubmFtZSl9IgorICAgICRhc20ucHV0cyAiI3tzYW5pdGl6ZUxhYmVsTmFtZShzZWxm
Lm5hbWUpfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIGxvd2VyKG5h
bWUpCisgICAgJGFzbS5wdXRzICJMX29mZmxpbmVhc21fI3tzZWxmLm5hbWVbMS4uLTFdfToiCisg
IGVuZAorZW5kCisKK2NsYXNzIFNraXAKKyAgZGVmIGxvd2VyKG5hbWUpCisgIGVuZAorZW5kCisK
K2NsYXNzIFNlcXVlbmNlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIEBsaXN0LmVhY2ggeworICAg
ICAgfCBub2RlIHwKKyAgICAgIG5vZGUubG93ZXIobmFtZSkKKyAgICB9CisgIGVuZAorZW5kCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9l
eHRyYWN0b3IucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsODcgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
IyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklM
RV9fKQorCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgImRpZ2VzdC9zaGExIgorcmVxdWly
ZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWly
ZSAidHJhbnNmb3JtIgorCitpbnB1dEZsbm0gPSBBUkdWLnNoaWZ0CitvdXRwdXRGbG5tID0gQVJH
Vi5zaGlmdAorCitkZWYgZW1pdE1hZ2ljTnVtYmVyCisgIE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVh
Y2ggeworICAgIHwgbnVtYmVyIHwKKyAgICAkb3V0cHV0LnB1dHMgIiN7bnVtYmVyfSwiCisgIH0K
K2VuZAorCitpbnB1dERhdGEgPSBJTzo6cmVhZChpbnB1dEZsbm0pCitpbnB1dEhhc2ggPSBEaWdl
c3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0YSkKKworaWYgRmlsZVRlc3QuZXhpc3Q/IG91dHB1
dEZsbm0KKyAgRmlsZS5vcGVuKG91dHB1dEZsbm0sICJyIikgeworICAgIHwgaW5wIHwKKyAgICBm
aXJzdExpbmUgPSBpbnAuZ2V0cworICAgIGlmIGZpcnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21w
ID09ICIvLyBvZmZsaW5lYXNtIGlucHV0IGhhc2g6ICN7aW5wdXRIYXNofSIKKyAgICAgICRzdGRl
cnIucHV0cyAiTm90aGluZyBjaGFuZ2VkLiIKKyAgICAgIGV4aXQgMAorICAgIGVuZAorICB9Citl
bmQKKworb3JpZ2luYWxBU1QgPSBwYXJzZShsZXgoaW5wdXREYXRhKSkKKworRmlsZS5vcGVuKG91
dHB1dEZsbm0sICJ3IikgeworICB8IG91dHAgfAorICAkb3V0cHV0ID0gb3V0cAorICBvdXRwLnB1
dHMgIi8vIG9mZmxpbmVhc20gaW5wdXQgaGFzaDogI3tpbnB1dEhhc2h9IgorICBlbWl0Q29kZUlu
QWxsQ29uZmlndXJhdGlvbnMob3JpZ2luYWxBU1QpIHsKKyAgICB8IHNldHRpbmdzLCBhc3QsIGJh
Y2tlbmQsIGluZGV4IHwKKyAgICBvZmZzZXRzTGlzdCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0
KS51bmlxLnNvcnQKKyAgICBzaXplc0xpc3QgPSBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0
CisgICAgCisgICAgbGVuZ3RoID0gKE9GRlNFVF9NQUdJQ19OVU1CRVJTLnNpemUgKyAxKSAqICgx
ICsgb2Zmc2V0c0xpc3Quc2l6ZSArIHNpemVzTGlzdC5zaXplKQorICAgIAorICAgIG91dHAucHV0
cyAic3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7Igor
ICAgIGVtaXRNYWdpY051bWJlcgorICAgIG91dHAucHV0cyAiI3tpbmRleH0sIgorICAgIG9mZnNl
dHNMaXN0LmVhY2ggeworICAgICAgfCBvZmZzZXQgfAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisg
ICAgICBvdXRwLnB1dHMgIk9GRkxJTkVfQVNNX09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7
b2Zmc2V0LmZpZWxkfSksIgorICAgIH0KKyAgICBzaXplc0xpc3QuZWFjaCB7CisgICAgICB8IG9m
ZnNldCB8CisgICAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICAgIG91dHAucHV0cyAic2l6ZW9mKCN7
b2Zmc2V0LnN0cnVjdH0pLCIKKyAgICB9CisgICAgb3V0cC5wdXRzICJ9OyIKKyAgfQorfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5y
YgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3Ry
dWN0aW9ucy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxODggQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01BQ1JPX0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJh
ZGRpIiwKKyAgICJhbmRpIiwKKyAgICJsc2hpZnRpIiwKKyAgICJtdWxpIiwKKyAgICJuZWdpIiwK
KyAgICJub3RpIiwKKyAgICJvcmkiLAorICAgInJzaGlmdGkiLAorICAgInVyc2hpZnRpIiwKKyAg
ICJzdWJpIiwKKyAgICJ4b3JpIiwKKyAgICJsb2FkaSIsCisgICAibG9hZGIiLAorICAgImxvYWRo
IiwKKyAgICJzdG9yZWkiLAorICAgInN0b3JlYiIsCisgICAibG9hZGQiLAorICAgIm1vdmVkIiwK
KyAgICJzdG9yZWQiLAorICAgImFkZGQiLAorICAgImRpdmQiLAorICAgInN1YmQiLAorICAgIm11
bGQiLAorICAgInNxcnRkIiwKKyAgICJjaTJkIiwKKyAgICJmaWkyZCIsICMgdXNhZ2U6IGZpaTJk
IDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlm
aWNhbnQgYml0cz4sIDxmcHI+CisgICAiZmQyaWkiLCAjIHVzYWdlOiBmZDJpaSA8ZnByPiwgPGdw
ciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2Fu
dCBiaXRzPgorICAgImJkZXEiLAorICAgImJkbmVxIiwKKyAgICJiZGd0IiwKKyAgICJiZGd0ZXEi
LAorICAgImJkbHQiLAorICAgImJkbHRlcSIsCisgICAiYmRlcXVuIiwKKyAgICJiZG5lcXVuIiwK
KyAgICJiZGd0dW4iLAorICAgImJkZ3RlcXVuIiwKKyAgICJiZGx0dW4iLAorICAgImJkbHRlcXVu
IiwKKyAgICJidGQyaSIsCisgICAidGQyaSIsCisgICAiYmNkMmkiLAorICAgIm1vdmR6IiwKKyAg
ICJwb3AiLAorICAgInB1c2giLAorICAgIm1vdmUiLAorICAgInN4aTJwIiwKKyAgICJ6eGkycCIs
CisgICAibm9wIiwKKyAgICJiaWVxIiwKKyAgICJiaW5lcSIsCisgICAiYmlhIiwKKyAgICJiaWFl
cSIsCisgICAiYmliIiwKKyAgICJiaWJlcSIsCisgICAiYmlndCIsCisgICAiYmlndGVxIiwKKyAg
ICJiaWx0IiwKKyAgICJiaWx0ZXEiLAorICAgImJiZXEiLAorICAgImJibmVxIiwKKyAgICJiYmEi
LAorICAgImJiYWVxIiwKKyAgICJiYmIiLAorICAgImJiYmVxIiwKKyAgICJiYmd0IiwKKyAgICJi
Ymd0ZXEiLAorICAgImJibHQiLAorICAgImJibHRlcSIsCisgICAiYnRpbyIsCisgICAiYnRpcyIs
CisgICAiYnRpeiIsCisgICAiYnRpbnoiLAorICAgImJ0Ym8iLAorICAgImJ0YnMiLAorICAgImJ0
YnoiLAorICAgImJ0Ym56IiwKKyAgICJqbXAiLAorICAgImJhZGRpbyIsCisgICAiYmFkZGlzIiwK
KyAgICJiYWRkaXoiLAorICAgImJhZGRpbnoiLAorICAgImJzdWJpbyIsCisgICAiYnN1YmlzIiwK
KyAgICJic3ViaXoiLAorICAgImJzdWJpbnoiLAorICAgImJtdWxpbyIsCisgICAiYm11bGlzIiwK
KyAgICJibXVsaXoiLAorICAgImJtdWxpbnoiLAorICAgImJvcmlvIiwKKyAgICJib3JpcyIsCisg
ICAiYm9yaXoiLAorICAgImJvcmlueiIsCisgICAiYnJlYWsiLAorICAgImNhbGwiLAorICAgInJl
dCIsCisgICAiY2llcSIsCisgICAiY2luZXEiLAorICAgImNpYSIsCisgICAiY2lhZXEiLAorICAg
ImNpYiIsCisgICAiY2liZXEiLAorICAgImNpZ3QiLAorICAgImNpZ3RlcSIsCisgICAiY2lsdCIs
CisgICAiY2lsdGVxIiwKKyAgICJ0aW8iLAorICAgInRpcyIsCisgICAidGl6IiwKKyAgICJ0aW56
IiwKKyAgICJ0Ym8iLAorICAgInRicyIsCisgICAidGJ6IiwKKyAgICJ0Ym56IiwKKyAgICJwZWVr
IiwKKyAgICJwb2tlIiwKKyAgICJicGVxIiwKKyAgICJicG5lcSIsCisgICAiYnBhIiwKKyAgICJi
cGFlcSIsCisgICAiYnBiIiwKKyAgICJicGJlcSIsCisgICAiYnBndCIsCisgICAiYnBndGVxIiwK
KyAgICJicGx0IiwKKyAgICJicGx0ZXEiLAorICAgImFkZHAiLAorICAgImFuZHAiLAorICAgIm9y
cCIsCisgICAic3VicCIsCisgICAieG9ycCIsCisgICAibG9hZHAiLAorICAgImNwZXEiLAorICAg
ImNwbmVxIiwKKyAgICJjcGEiLAorICAgImNwYWVxIiwKKyAgICJjcGIiLAorICAgImNwYmVxIiwK
KyAgICJjcGd0IiwKKyAgICJjcGd0ZXEiLAorICAgImNwbHQiLAorICAgImNwbHRlcSIsCisgICAi
c3RvcmVwIiwKKyAgICJidHBvIiwKKyAgICJidHBzIiwKKyAgICJidHB6IiwKKyAgICJidHBueiIs
CisgICAiYmFkZHBvIiwKKyAgICJiYWRkcHMiLAorICAgImJhZGRweiIsCisgICAiYmFkZHBueiIK
KyAgXQorCitYODZfSU5TVFJVQ1RJT05TID0KKyAgWworICAgImNkcWkiLAorICAgImlkaXZpIgor
ICBdCisKK0lOU1RSVUNUSU9OUyA9IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElP
TlMKKworSU5TVFJVQ1RJT05fUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIElOU1RSVUNU
SU9OUy5qb2luKCcpfCgnKSArICcpKVxcWicpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50
cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29m
ZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBA
CisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitNQUdJQ19OVU1CRVJTID0g
WyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1
MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0
IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMiCisKK09GRlNFVF9NQUdJQ19O
VU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworIworIyBvZmZzZXRzTGlzdChh
c3QpCisjIHNpemVzTGlzdChhc3QpCisjCisjIFJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5k
IHNpemVzIHVzZWQgYnkgdGhlIEFTVC4KKyMKKworZGVmIG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0
LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorZW5kCisKK2RlZiBzaXplc0xpc3QoYXN0
KQorICBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CitlbmQKKworIworIyBvZmZzZXRzQW5k
Q29uZmlndXJhdGlvbkluZGV4KGFzdCwgZmlsZSkgLT4KKyMgICAgIFtvZmZzZXRzLCBpbmRleF0K
KyMKKyMgUGFyc2VzIHRoZSBvZmZzZXRzIGZyb20gYSBmaWxlIGFuZCByZXR1cm5zIGEgbGlzdCBv
ZiBvZmZzZXRzIGFuZCB0aGUKKyMgaW5kZXggb2YgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB2
YWxpZCBpbiB0aGlzIGJ1aWxkIHRhcmdldC4KKyMKKworZGVmIG9mZnNldHNBbmRDb25maWd1cmF0
aW9uSW5kZXgoZmlsZSkKKyAgaW5kZXggPSBuaWwKKyAgb2Zmc2V0cyA9IFtdCisgIGVuZGlhbm5l
c3NNYXJrZXJCeXRlcyA9IG5pbAorICAKKyAgZGVmIHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQor
ICAgIGJ5dGVzID0gW10KKyAgICA0LnRpbWVzIHsKKyAgICAgIGJ5dGVzIDw8IGlucC5nZXRieXRl
CisgICAgfQorICAgIAorICAgIGlmIGVuZGlhbm5lc3MgPT0gOmxpdHRsZQorICAgICAgIyBMaXR0
bGUgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMCB8CisgICAgICAgYnl0ZXNbMV0gPDwgOCB8
CisgICAgICAgYnl0ZXNbMl0gPDwgMTYgfAorICAgICAgIGJ5dGVzWzNdIDw8IDI0KQorICAgIGVs
c2UKKyAgICAgICMgQmlnIGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDI0IHwKKyAgICAgICBi
eXRlc1sxXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbMl0gPDwgOCB8CisgICAgICAgYnl0ZXNbM10g
PDwgMCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBbOmxpdHRsZSwgOmJpZ10uZWFjaCB7CisgICAg
fCBlbmRpYW5uZXNzIHwKKyAgICBtYWdpY0J5dGVzID0gW10KKyAgICBNQUdJQ19OVU1CRVJTLmVh
Y2ggeworICAgICAgfCBudW1iZXIgfAorICAgICAgY3VycmVudEJ5dGVzID0gW10KKyAgICAgIDQu
dGltZXMgeworICAgICAgICBjdXJyZW50Qnl0ZXMgPDwgKG51bWJlciAmIDB4ZmYpCisgICAgICAg
IG51bWJlciA+Pj0gOAorICAgICAgfQorICAgICAgaWYgZW5kaWFubmVzcyA9PSA6YmlnCisgICAg
ICAgIGN1cnJlbnRCeXRlcy5yZXZlcnNlIQorICAgICAgZW5kCisgICAgICBtYWdpY0J5dGVzICs9
IGN1cnJlbnRCeXRlcworICAgIH0KKyAgICAKKyAgICBGaWxlLm9wZW4oZmlsZSwgInIiKSB7Cisg
ICAgICB8IGlucCB8CisgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgbG9vcCB7CisgICAg
ICAgIGJ5dGUgPSBpbnAuZ2V0Ynl0ZQorICAgICAgICBicmVhayB1bmxlc3MgYnl0ZQorICAgICAg
ICBpZiBieXRlID09IG1hZ2ljQnl0ZXNbd2hlcmVJbk1hcmtlcl0KKyAgICAgICAgICB3aGVyZUlu
TWFya2VyICs9IDEKKyAgICAgICAgICBpZiB3aGVyZUluTWFya2VyID09IG1hZ2ljQnl0ZXMuc2l6
ZQorICAgICAgICAgICAgIyBXZSBoYXZlIGEgbWF0Y2ghIElmIHdlIGhhdmUgbm90IHlldCByZWFk
IHRoZSBlbmRpYW5uZXNzIG1hcmtlciBhbmQgaW5kZXgsCisgICAgICAgICAgICAjIHRoZW4gcmVh
ZCB0aG9zZSBub3c7IG90aGVyd2lzZSByZWFkIGFuIG9mZnNldC4KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgbm90IGluZGV4CisgICAgICAgICAgICAgIGluZGV4ID0gcmVhZEludChlbmRp
YW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIG9mZnNldHMgPDwg
cmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxz
ZQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICAgIGVuZAorICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBicmVhayBpZiBpbmRleAorICB9CisgIAorICByYWlzZSB1bmxlc3MgaW5k
ZXgKKyAgCisgIFtvZmZzZXRzLCBpbmRleF0KK2VuZAorCisjCisjIGJ1aWxkT2Zmc2V0c01hcChh
c3QsIG9mZnNldHNMaXN0KSAtPiBbb2Zmc2V0cywgc2l6ZXNdCisjCisjIEJ1aWxkcyBhIG1hcHBp
bmcgYmV0d2VlbiBTdHJ1Y3RPZmZzZXQgbm9kZXMgYW5kIHRoZWlyIHZhbHVlcy4KKyMKKworZGVm
IGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KQorICBvZmZzZXRzTWFwID0ge30KKyAg
c2l6ZXNNYXAgPSB7fQorICBhc3RPZmZzZXRzTGlzdCA9IG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0
U2l6ZXNMaXN0ID0gc2l6ZXNMaXN0KGFzdCkKKyAgcmFpc2UgdW5sZXNzIGFzdE9mZnNldHNMaXN0
LnNpemUgKyBhc3RTaXplc0xpc3Quc2l6ZSA9PSBvZmZzZXRzTGlzdC5zaXplCisgIG9mZnNldHNM
aXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHN0cnVjdE9mZnNldCwgaW5kZXggfAor
ICAgIG9mZnNldHNNYXBbc3RydWN0T2Zmc2V0XSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAg
c2l6ZXNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHNpemVvZiwgaW5kZXggfAor
ICAgIHNpemVzTWFwW3NpemVvZl0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIFtvZmZzZXRz
TWFwLCBzaXplc01hcF0KK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9wYXJzZXIucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vcGFyc2VyLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vcGFyc2VyLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4NSBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
IyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAi
aW5zdHJ1Y3Rpb25zIgorcmVxdWlyZSAicmVnaXN0ZXJzIgorCitjbGFzcyBUb2tlbgorICBhdHRy
X3JlYWRlciA6Y29kZU9yaWdpbiwgOnN0cmluZworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgc3RyaW5nKQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICAgIEBzdHJpbmcg
PSBzdHJpbmcKKyAgZW5kCisgIAorICBkZWYgPT0ob3RoZXIpCisgICAgaWYgb3RoZXIuaXNfYT8g
VG9rZW4KKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIuc3RyaW5nCisgICAgZWxzZQorICAgICAgQHN0
cmluZyA9PSBvdGhlcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiA9fihvdGhlcikKKyAgICBA
c3RyaW5nID1+IG90aGVyCisgIGVuZAorICAKKyAgZGVmIHRvX3MKKyAgICAiI3tAc3RyaW5nLmlu
c3BlY3R9IGF0IGxpbmUgI3tjb2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJv
cigqY29tbWVudCkKKyAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgcmFpc2UgIlBhcnNlIGVy
cm9yOiAje3RvX3N9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19z
fTogI3tjb21tZW50WzBdfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIworIyBUaGUgbGV4ZXIu
IFRha2VzIGEgc3RyaW5nIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRva2Vucy4KKyMKKworZGVm
IGxleChzdHIpCisgIHJlc3VsdCA9IFtdCisgIGxpbmVOdW1iZXIgPSAxCisgIHdoaWxlIG5vdCBz
dHIuZW1wdHk/CisgICAgY2FzZSBzdHIKKyAgICB3aGVuIC9cQVwjKFteXG5dKikvCisgICAgICAj
IGNvbW1lbnQsIGlnbm9yZQorICAgIHdoZW4gL1xBXG4vCisgICAgICByZXN1bHQgPDwgVG9rZW4u
bmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAgbGluZU51bWJlciArPSAxCisgICAgd2hlbiAvXEFb
YS16QS1aXShbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51
bWJlciwgJCYpCisgICAgd2hlbiAvXEFcLihbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8
PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFfKFthLXpBLVowLTlfXSop
LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9c
QShbIFx0XSspLworICAgICAgIyB3aGl0ZXNwYWNlLCBpZ25vcmUKKyAgICB3aGVuIC9cQTB4KFsw
LTlhLWZBLUZdKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLmhl
eC50b19zKQorICAgIHdoZW4gL1xBMChbMC03XSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5l
dyhsaW5lTnVtYmVyLCAkJi5vY3QudG9fcykKKyAgICB3aGVuIC9cQShbMC05XSspLworICAgICAg
cmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQTo6LworICAg
ICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVs6LFwo
XClcW1xdPVwrXC0qXS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYp
CisgICAgZWxzZQorICAgICAgcmFpc2UgIkxleGVyIGVycm9yIGF0IGxpbmUgbnVtYmVyICN7bGlu
ZU51bWJlcn0sIHVuZXhwZWN0ZWQgc2VxdWVuY2UgI3tzdHJbMC4uMjBdLmluc3BlY3R9IgorICAg
IGVuZAorICAgIHN0ciA9ICR+LnBvc3RfbWF0Y2gKKyAgZW5kCisgIHJlc3VsdAorZW5kCisKKyMK
KyMgVG9rZW4gaWRlbnRpZmljYXRpb24uCisjCisKK2RlZiBpc1JlZ2lzdGVyKHRva2VuKQorICB0
b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOCitlbmQKKworZGVmIGlzSW5zdHJ1Y3Rpb24odG9rZW4p
CisgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNLZXl3b3JkKHRv
a2VuKQorICB0b2tlbiA9fiAvXEEoKHRydWUpfChmYWxzZSl8KGlmKXwodGhlbil8KGVsc2UpfChl
bHNpZil8KGVuZCl8KGFuZCl8KG9yKXwobm90KXwobWFjcm8pfChjb25zdCl8KHNpemVvZil8KGVy
cm9yKSlcWi8gb3IKKyAgICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOIG9yCisgICAgdG9rZW4g
PX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0lkZW50aWZpZXIodG9rZW4pCisg
IHRva2VuID1+IC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopXFovIGFuZCBub3QgaXNLZXl3b3Jk
KHRva2VuKQorZW5kCisKK2RlZiBpc0xhYmVsKHRva2VuKQorICB0b2tlbiA9fiAvXEFfKFthLXpB
LVowLTlfXSopXFovCitlbmQKKworZGVmIGlzTG9jYWxMYWJlbCh0b2tlbikKKyAgdG9rZW4gPX4g
L1xBXC4oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNWYXJpYWJsZSh0b2tlbikKKyAg
aXNJZGVudGlmaWVyKHRva2VuKSBvciBpc1JlZ2lzdGVyKHRva2VuKQorZW5kCisKK2RlZiBpc0lu
dGVnZXIodG9rZW4pCisgIHRva2VuID1+IC9cQVswLTldLworZW5kCisKKyMKKyMgVGhlIHBhcnNl
ci4gVGFrZXMgYW4gYXJyYXkgb2YgdG9rZW5zIGFuZCByZXR1cm5zIGFuIEFTVC4gTWV0aG9kcwor
IyBvdGhlciB0aGFuIHBhcnNlKHRva2VucykgYXJlIG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9u
LgorIworCitjbGFzcyBQYXJzZXIKKyAgZGVmIGluaXRpYWxpemUodG9rZW5zKQorICAgIEB0b2tl
bnMgPSB0b2tlbnMKKyAgICBAaWR4ID0gMAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpj
b21tZW50KQorICAgIGlmIEB0b2tlbnNbQGlkeF0KKyAgICAgIEB0b2tlbnNbQGlkeF0ucGFyc2VF
cnJvcigqY29tbWVudCkKKyAgICBlbHNlCisgICAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAg
ICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZpbGUiCisgICAgICBlbHNlCisgICAgICAg
IHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZTogI3tjb21tZW50WzBdfSIKKyAgICAg
IGVuZAorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBjb25zdW1lKHJlZ2V4cCkKKyAgICBpZiBy
ZWdleHAKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPX4gcmVnZXhwCisg
ICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQGlkeCA9PSBAdG9rZW5zLmxlbmd0aAor
ICAgIGVuZAorICAgIEBpZHggKz0gMQorICBlbmQKKyAgCisgIGRlZiBza2lwTmV3TGluZQorICAg
IHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgQGlkeCArPSAxCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQXRvbQorICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gIm5vdCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5l
d0xpbmUKKyAgICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlCisgICAgICBwYXJzZUVycm9yIHVu
bGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQK
KyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJ0cnVlIgorICAgICAgcmVzdWx0ID0gVHJ1ZS5p
bnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5z
W0BpZHhdID09ICJmYWxzZSIKKyAgICAgIHJlc3VsdCA9IEZhbHNlLmluc3RhbmNlCisgICAgICBA
aWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0Bp
ZHhdCisgICAgICByZXN1bHQgPSBTZXR0aW5nLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0
CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBw
YXJzZVByZWRpY2F0ZUFuZAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlQXRvbQorICAgIHdo
aWxlIEB0b2tlbnNbQGlkeF0gPT0gImFuZCIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAg
IHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgICByZXN1bHQgPSBBbmQubmV3KGNvZGVP
cmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAg
ZGVmIHBhcnNlUHJlZGljYXRlCisgICAgIyBzb21lIGV4YW1wbGVzIG9mIHByZWNlZGVuY2U6Cisg
ICAgIyBub3QgYSBhbmQgYiAtPiAobm90IGEpIGFuZCBiCisgICAgIyBhIGFuZCBiIG9yIGMgLT4g
KGEgYW5kIGIpIG9yIGMKKyAgICAjIGEgb3IgYiBhbmQgYyAtPiBhIG9yIChiIGFuZCBjKQorICAg
IAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4
XSA9PSAib3IiCisgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisg
ICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJl
ZGljYXRlQW5kCisgICAgICByZXN1bHQgPSBPci5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdo
dCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VWYXJpYWJsZQor
ICAgIGlmIGlzUmVnaXN0ZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0g
PX4gRlBSX1BBVFRFUk4KKyAgICAgICAgcmVzdWx0ID0gRlBSZWdpc3RlcklELmZvck5hbWUoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVsc2UK
KyAgICAgICAgcmVzdWx0ID0gUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBlbmQKKyAgICBlbHNpZiBpc0lkZW50
aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgIHJlc3VsdCA9IFZhcmlhYmxlLmZvck5hbWUoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICBlbHNlCisg
ICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVu
ZAorICAKKyAgZGVmIHBhcnNlQWRkcmVzcyhvZmZzZXQpCisgICAgcGFyc2VFcnJvciB1bmxlc3Mg
QHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgCisgICAgIyBUaHJlZSBwb3NzaWJpbGl0aWVzOgorICAgICMgW10gICAgICAg
LT4gQWJzb2x1dGVBZGRyZXNzCisgICAgIyBbYV0gICAgICAtPiBBZGRyZXNzCisgICAgIyBbYSxi
XSAgICAtPiBCYXNlSW5kZXggd2l0aCBzY2FsZSA9IDEKKyAgICAjIFthLGIsY10gIC0+IEJhc2VJ
bmRleAorICAgIAorICAgIEBpZHggKz0gMQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisg
ICAgICBAaWR4ICs9IDEKKyAgICAgIHJldHVybiBBYnNvbHV0ZUFkZHJlc3MubmV3KGNvZGVPcmln
aW4sIG9mZnNldCkKKyAgICBlbmQKKyAgICBhID0gcGFyc2VWYXJpYWJsZQorICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gIl0iCisgICAgICByZXN1bHQgPSBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBh
LCBvZmZzZXQpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4
XSA9PSAiLCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgYiA9IHBhcnNlVmFyaWFibGUKKyAgICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXco
Y29kZU9yaWdpbiwgYSwgYiwgMSwgb2Zmc2V0KQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVy
cm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgcGFyc2VFcnJvciB1bmxlc3MgWyIxIiwgIjIiLCAiNCIsICI4Il0ubWVtYmVyPyBAdG9rZW5z
W0BpZHhdLnN0cmluZworICAgICAgICBjID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faQorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9
PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCBj
LCBvZmZzZXQpCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQK
KyAgZW5kCisgIAorICBkZWYgcGFyc2VDb2xvbkNvbG9uCisgICAgc2tpcE5ld0xpbmUKKyAgICBj
b2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgcGFyc2VFcnJvciB1bmxl
c3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICBuYW1lcyA9IFtAdG9rZW5zW0BpZHhd
LnN0cmluZ10KKyAgICBAaWR4ICs9IDEKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICI6OiIK
KyAgICAgIEBpZHggKz0gMQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0
b2tlbnNbQGlkeF0KKyAgICAgIG5hbWVzIDw8IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICBA
aWR4ICs9IDEKKyAgICBlbmQKKyAgICByYWlzZSBpZiBuYW1lcy5lbXB0eT8KKyAgICBbY29kZU9y
aWdpbiwgbmFtZXNdCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICBz
a2lwTmV3TGluZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICBAaWR4ICs9IDEK
KyAgICAgIE5lZ0ltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcGFy
c2VFeHByZXNzaW9uQXRvbSkKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAg
QGlkeCArPSAxCisgICAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIHBhcnNlRXJy
b3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJl
c3VsdAorICAgIGVsc2lmIGlzSW50ZWdlciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBJ
bW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJp
bmcudG9faSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVu
dGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xv
bkNvbG9uCisgICAgICBpZiBuYW1lcy5zaXplID4gMQorICAgICAgICBTdHJ1Y3RPZmZzZXQuZm9y
RmllbGQoY29kZU9yaWdpbiwgbmFtZXNbMC4uLTJdLmpvaW4oJzo6JyksIG5hbWVzWy0xXSkKKyAg
ICAgIGVsc2UKKyAgICAgICAgVmFyaWFibGUuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lc1swXSkK
KyAgICAgIGVuZAorICAgIGVsc2lmIGlzUmVnaXN0ZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcGFy
c2VWYXJpYWJsZQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIKKyAgICAgIEBp
ZHggKz0gMQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAg
IFNpemVvZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzLmpvaW4oJzo6JykpCisgICAgZWxzZQor
ICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Np
b25NdWwKKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbkF0b20K
KyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9
PSAiKiIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IE11bEltbWVkaWF0ZXMu
bmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9u
QXRvbSkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVuZAorICAg
IHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgIEB0b2tlbnNb
QGlkeF0gPT0gIi0iIG9yIEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIgb3IgaXNJbnRlZ2VyKEB0
b2tlbnNbQGlkeF0pIG9yIGlzVmFyaWFibGUoQHRva2Vuc1tAaWR4XSkgb3IgQHRva2Vuc1tAaWR4
XSA9PSAiKCIKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uCisgICAgc2tpcE5ld0xp
bmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICB3aGlsZSBAdG9rZW5zW0Bp
ZHhdID09ICIrIiBvciBAdG9rZW5zW0BpZHhdID09ICItIgorICAgICAgaWYgQHRva2Vuc1tAaWR4
XSA9PSAiKyIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IEFkZEltbWVkaWF0
ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNz
aW9uTXVsKQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIHJlc3VsdCA9IFN1YkltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFd
LmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzZQorICAg
ICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAg
ZGVmIHBhcnNlT3BlcmFuZChjb21tZW50KQorICAgIGlmIGNvdWxkQmVFeHByZXNzaW9uCisgICAg
ICBleHByID0gcGFyc2VFeHByZXNzaW9uCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJbIgor
ICAgICAgICBwYXJzZUFkZHJlc3MoZXhwcikKKyAgICAgIGVsc2UKKyAgICAgICAgZXhwcgorICAg
ICAgZW5kCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgIHBhcnNlQWRkcmVz
cyhJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgMCkpCisgICAgZWxzaWYg
aXNMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBMYWJlbFJlZmVyZW5jZS5uZXco
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAxCisgICAgICBy
ZXN1bHQKKyAgICBlbHNpZiBpc0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0
ID0gTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMb2Nh
bExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0
cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBh
cnNlRXJyb3IoY29tbWVudCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VNYWNyb1Zh
cmlhYmxlcworICAgIHNraXBOZXdMaW5lCisgICAgY29uc3VtZSgvXEFcKFxaLykKKyAgICB2YXJp
YWJsZXMgPSBbXQorICAgIGxvb3AgeworICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gIikiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBicmVhaworICAgICAg
ZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIHZhcmlhYmxlcyA8PCBW
YXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5z
dHJpbmcpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBp
ZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGJy
ZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yCisgICAgICAgIGVuZAorICAg
ICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yCisgICAgICBlbmQKKyAgICB9CisgICAgdmFyaWFi
bGVzCisgIGVuZAorICAKKyAgZGVmIHBhcnNlU2VxdWVuY2UoZmluYWwsIGNvbW1lbnQpCisgICAg
Zmlyc3RDb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgbGlzdCA9IFtd
CisgICAgbG9vcCB7CisgICAgICBpZiAoQGlkeCA9PSBAdG9rZW5zLmxlbmd0aCBhbmQgbm90IGZp
bmFsKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgIGJyZWFr
CisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgIyBpZ25vcmUKKyAg
ICAgICAgQGlkeCArPSAxCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJjb25zdCIKKyAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzVmFyaWFibGUgQHRv
a2Vuc1tAaWR4XQorICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAx
CisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIj0iCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICB2YWx1ZSA9IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9m
IGNvbnN0ICN7dmFyaWFibGUubmFtZX0iKQorICAgICAgICBsaXN0IDw8IENvbnN0RGVjbC5uZXco
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICJlcnJvciIKKyAgICAgICAgbGlzdCA8PCBFcnJvci5uZXcoQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gImlmIgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBw
cmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxu
KSlcWi8pCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmVGhlbkVsc2UgPSBJZlRoZW5F
bHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwo
ZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9
XCIiKSkKKyAgICAgICAgbGlzdCA8PCBpZlRoZW5FbHNlCisgICAgICAgIHdoaWxlIEB0b2tlbnNb
QGlkeF0gPT0gImVsc2lmIgorICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4KKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBza2lwTmV3TGluZQorICAg
ICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgICAgY29uc3VtZSgvXEEo
KHRoZW4pfChcbikpXFovKQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgZWxzZUNh
c2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2Uo
L1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJl
ZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNh
c2UKKyAgICAgICAgICBpZlRoZW5FbHNlID0gZWxzZUNhc2UKKyAgICAgICAgZW5kCisgICAgICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gImVsc2UiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUg
aW5zaWRlIG9mIGVsc2UgY2FzZSBmb3IgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikKKyAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNz
IEB0b2tlbnNbQGlkeF0gPT0gImVuZCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZW5k
CisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAgY29kZU9yaWdp
biA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
c2tpcE5ld0xpbmUKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyKEB0b2tl
bnNbQGlkeF0pCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAg
ICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8g
I3tuYW1lfSIpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBsaXN0IDw8IE1hY3JvLm5ldyhj
b2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICBlbHNpZiBpc0luc3RydWN0
aW9uIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlk
eCArPSAxCisgICAgICAgIGlmIChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBv
ciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgICAgIyBaZXJvIG9w
ZXJhbmQgaW5zdHJ1Y3Rpb24sIGFuZCBpdCdzIHRoZSBsYXN0IG9uZS4KKyAgICAgICAgICBsaXN0
IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBicmVh
aworICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAjIFplcm8g
b3BlcmFuZCBpbnN0cnVjdGlvbi4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhj
b2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICMgSXQncyBkZWZpbml0ZWx5IGFuIGluc3RydWN0aW9uLCBhbmQgaXQgaGFzIGF0
IGxlYXN0IG9uZSBvcGVyYW5kLgorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBl
bmRPZlNlcXVlbmNlID0gZmFsc2UKKyAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgIG9wZXJh
bmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGluc3RydWN0aW9uICN7bmFtZX0i
KQorICAgICAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9y
IChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAgICAgIyBUaGUg
ZW5kIG9mIHRoZSBpbnN0cnVjdGlvbiBhbmQgb2YgdGhlIHNlcXVlbmNlLgorICAgICAgICAgICAg
ICBlbmRPZlNlcXVlbmNlID0gdHJ1ZQorICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgIyBIYXMgYW5vdGhlciBv
cGVyYW5kLgorICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0
aW9uLgorICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQgYSBjb21tYSwg
bmV3bGluZSwgb3IgI3tmaW5hbH0gYWZ0ZXIgI3tvcGVyYW5kcy5sYXN0LmR1bXB9IikKKyAgICAg
ICAgICAgIGVuZAorICAgICAgICAgIH0KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgICBpZiBlbmRPZlNlcXVlbmNl
CisgICAgICAgICAgICBicmVhaworICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgIGVs
c2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5n
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAg
ICAgICAgICMgTWFjcm8gaW52b2NhdGlvbi4KKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
ICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBpZiBAdG9r
ZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbG9vcCB7CisgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAg
ICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgorICAgICAgICAgICAgICAgICMgSXQncyBh
IG1hY3JvIGxhbWJkYSEKKyAgICAgICAgICAgICAgICBjb2RlT3JpZ2luSW5uZXIgPSBAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAg
ICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgICAgICAgICAgYm9k
eSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGFub255bW91cyBt
YWNybyBwYXNzZWQgYXMgYXJndW1lbnQgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW5J
bm5lciwgbmlsLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBtYWNybyBj
YWxsIHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgc2tpcE5l
d0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGFyc2VFcnJvciAiVW5leHBlY3RlZCAje0B0
b2tlbnNbQGlkeF0uc3RyaW5nLmluc3BlY3R9IHdoaWxlIHBhcnNpbmcgaW52b2NhdGlvbiBvZiBt
YWNybyAje25hbWV9IgorICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICBlbmQKKyAgICAgICAgICBsaXN0IDw8IE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgbmFtZSwg
b3BlcmFuZHMpCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBc
IihcIiBhZnRlciAje25hbWV9IgorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzTGFiZWwgQHRv
a2Vuc1tAaWR4XSBvciBpc0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3Jp
Z2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0Bp
ZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3Mg
QHRva2Vuc1tAaWR4XSA9PSAiOiIKKyAgICAgICAgIyBJdCdzIGEgbGFiZWwuCisgICAgICAgIGlm
IGlzTGFiZWwgbmFtZQorICAgICAgICAgIGxpc3QgPDwgTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2lu
LCBuYW1lKQorICAgICAgICBlbHNlCisgICAgICAgICAgbGlzdCA8PCBMb2NhbExhYmVsLmZvck5h
bWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RpbmcgdGVybWluYWwgI3tmaW5hbH0g
I3tjb21tZW50fSIKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoZmlyc3RDb2Rl
T3JpZ2luLCBsaXN0KQorICBlbmQKK2VuZAorCitkZWYgcGFyc2UodG9rZW5zKQorICBwYXJzZXIg
PSBQYXJzZXIubmV3KHRva2VucykKKyAgcGFyc2VyLnBhcnNlU2VxdWVuY2UobmlsLCAiIikKK2Vu
ZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJz
LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVn
aXN0ZXJzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitHUFJTID0KKyAgWworICAgInQwIiwKKyAgICJ0MSIsCisg
ICAidDIiLAorICAgInQzIiwKKyAgICJ0NCIsCisgICAiY2ZyIiwKKyAgICJhMCIsCisgICAiYTEi
LAorICAgInIwIiwKKyAgICJyMSIsCisgICAic3AiCisgIF0KKworRlBSUyA9CisgIFsKKyAgICJm
dDAiLAorICAgImZ0MSIsCisgICAiZnQyIiwKKyAgICJmdDMiLAorICAgImZ0NCIsCisgICAiZnQ1
IiwKKyAgICJmYTAiLAorICAgImZhMSIsCisgICAiZmEyIiwKKyAgICJmYTMiLAorICAgImZyIgor
ICBdCisKK1JFR0lTVEVSUyA9IEdQUlMgKyBGUFJTCisKK0dQUl9QQVRURVJOID0gUmVnZXhwLm5l
dygnXFxBKCgnICsgR1BSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCitGUFJfUEFUVEVSTiA9IFJl
Z2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQorCitSRUdJU1RF
Ul9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgUkVHSVNURVJTLmpvaW4oJyl8KCcpICsg
JykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdz
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRp
bmdzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
c2V0dGluZ3MucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjA1IEBACisjIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJiYWNrZW5k
cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworIworIyBjb21wdXRl
U2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25zCisjCisjIENv
bXB1dGVzIGFuIGFycmF5IG9mIHNldHRpbmdzIG1hcHMsIHdoZXJlIGEgc2V0dGluZ3MgbWFwIGNv
bnN0aXR1dGVzCisjIGEgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFzc2VtYmx5IGNvZGUgYmVpbmcg
Z2VuZXJhdGVkLiBUaGUgbWFwCisjIGNvbnRhaW5zIGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlz
IGFyZSBzZXR0aW5ncyBuYW1lcyAoc3RyaW5ncykgYW5kCisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xl
YW5zICh0cnVlIGZvciBlbmFibGVkLCBmYWxzZSBmb3IgZGlzYWJsZWQpLgorIworCitkZWYgY29t
cHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBb
XQorICAKKyAgZGVmIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbWFw
U29GYXIsIHJlbWFpbmluZykKKyAgICBpZiByZW1haW5pbmcuZW1wdHk/CisgICAgICBzZXR0aW5n
c0NvbWJpbmF0aW9ucyA8PCBtYXBTb0ZhcgorICAgICAgcmV0dXJuCisgICAgZW5kCisgICAgCisg
ICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSB0cnVl
CisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJl
bWFpbmluZ1sxLi4tMV0pCisgICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3
TWFwW3JlbWFpbmluZ1swXV0gPSBmYWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5n
c0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICBlbmQKKyAgCisgIHNl
dHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywge30sIChhc3QuZmlsdGVyKFNl
dHRpbmcpLnVuaXEuY29sbGVjdHt8dnwgdi5uYW1lfSArIFsiWDg2IiwgIkFSTXY3Il0pLnVuaXEp
CisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucworZW5kCisKKyMKKyMgZm9yU2V0dGluZ3MoY29u
Y3JldGVTZXR0aW5ncywgYXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVs
QVNULCBiYWNrZW5kIHwgLi4uIH0KKyMKKyMgRGV0ZXJtaW5lcyBpZiB0aGUgc2V0dGluZ3MgY29t
YmluYXRpb24gaXMgdmFsaWQsIGFuZCBpZiBzbywgY2FsbHMKKyMgdGhlIGJsb2NrIHdpdGggdGhl
IGluZm9ybWF0aW9uIHlvdSBuZWVkIHRvIGdlbmVyYXRlIGNvZGUuCisjCisKK2RlZiBmb3JTZXR0
aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJl
cyB0aGlzIGNvbWJpbmF0b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWltZWRCYWNrZW5k
cyA9IDAKKyAgc2VsZWN0ZWRCYWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2ggeworICAgIHwg
YmFja2VuZCB8CisgICAgaXNTdXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2JhY2tlbmRdCisg
ICAgcmFpc2UgdW5sZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWltZWRCYWNrZW5k
cyArPSBpZiBpc1N1cHBvcnRlZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlzU3VwcG9ydGVk
CisgICAgICBzZWxlY3RlZEJhY2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0KKyAgCisgIHJl
dHVybiBpZiBudW1DbGFpbWVkQmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUgdGhlIEFTVCBk
b3duIHRvIGEgbG93LWxldmVsIGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25hbHMpLgorICBs
b3dMZXZlbEFTVCA9IGFzdC5yZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAgCisg
IHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJhY2tlbmQKK2Vu
ZAorCisjCisjIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7CisjICAgICB8
IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBmb3JF
YWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgc2V0dGluZ3NDb21iaW5hdGlvbnMpIHsK
KyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9Cisj
CisjIEV4ZWN1dGVzIHRoZSBnaXZlbiBibG9jayBmb3IgZWFjaCB2YWxpZCBzZXR0aW5ncyBjb21i
aW5hdGlvbiBpbiB0aGUKKyMgc2V0dGluZ3MgbWFwLiBUaGUgYXN0IHBhc3NlZCBpbnRvIHRoZSBi
bG9jayBpcyByZXNvbHZlZAorIyAoYXN0LnJlc29sdmUpIGFnYWluc3QgdGhlIHNldHRpbmdzLgor
IworIyBUaGUgZmlyc3QgZm9ybSB3aWxsIGNhbGwgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25z
KGFzdCkgZm9yIHlvdS4KKyMKKworZGVmIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24o
YXN0LCAqb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucykKKyAgcmFpc2UgaWYgb3B0aW9uYWxT
ZXR0aW5nc0NvbWJpbmF0aW9ucy5zaXplID4gMQorICAKKyAgaWYgb3B0aW9uYWxTZXR0aW5nc0Nv
bWJpbmF0aW9ucy5lbXB0eT8KKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IGNvbXB1dGVTZXR0
aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIGVsc2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9
IG9wdGlvbmFsU2V0dGluZ3NDb21iaWF0aW9uc1swXQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29t
YmluYXRpb25zLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBpbmRl
eCB8CisgICAgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7CisgICAgICB8IGNv
bmNyZXRlU2V0dGluZ3NfLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgICB5aWVsZCBjb25j
cmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICB9CisgIH0KK2Vu
ZAorCisjCisjIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorIworIyBSZXR1cm5z
IHRoZSBDKysgY29kZSB1c2VkIHRvIHRlc3QgaWYgd2UgYXJlIGluIGEgY29uZmlndXJhdGlvbiB0
aGF0CisjIGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBjb25jcmV0ZSBzZXR0aW5ncy4KKyMKKwor
ZGVmIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0
ZVNldHRpbmdzLnRvX2EuY29sbGVjdHsKKyAgICB8IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisg
ICAgICAgIiIKKyAgICAgZWxzZQorICAgICAgICIhIgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNN
XyIgKyBwYWlyWzBdCisgIH0uam9pbigiICYmICIpCitlbmQKKworIworIyBpc0FTVEVycm9uZW91
cyhhc3QpCisjCisjIFRlc3RzIHRvIHNlZSBpZiB0aGUgQVNUIGNsYWltcyB0aGF0IHRoZXJlIGlz
IGFuIGVycm9yIC0gaS5lLiBpZiB0aGUKKyMgdXNlcidzIGNvZGUsIGFmdGVyIHNldHRpbmdzIHJl
c29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4KKyMKKworZGVmIGlzQVNURXJyb25lb3VzKGFzdCkK
KyAgbm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5PworZW5kCisKKyMKKyMgYXNzZXJ0Q29uZmln
dXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorIworIyBFbWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0
cyB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uLgorIworCitkZWYgYXNz
ZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICAkb3V0cHV0LnB1dHMgY3BwU2V0
dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICRvdXRwdXQucHV0cyAiI2Vsc2UiCisgICRv
dXRwdXQucHV0cyAiI2Vycm9yIFwiQ29uZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAgJG91dHB1
dC5wdXRzICIjZW5kaWYiCitlbmQKKworIworIyBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25j
cmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywg
YXN0LCBiYWNrZW5kIHwgLi4uIH0KKyMKKyMgRW1pdHMgYWxsIHJlbGV2YW50IGd1YXJkcyB0byBz
ZWUgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaG9sZHMgYW5kCisjIGNhbGxzIHRoZSBibG9jayBpZiB0
aGUgY29uZmlndXJhdGlvbiBpcyBub3QgZXJyb25lb3VzLgorIworCitkZWYgZW1pdENvZGVJbkNv
bmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKQorICAkb3V0cHV0LnB1
dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICBpZiBpc0FTVEVycm9u
ZW91cyhhc3QpCisgICAgJG91dHB1dC5wdXRzICIjZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRp
b24uXCIiCisgIGVsc2lmIG5vdCBXT1JLSU5HX0JBQ0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAg
ICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIlRoaXMgYmFja2VuZCBpcyBub3Qgc3VwcG9ydGVkIHll
dC5cIiIKKyAgZWxzZQorICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZAor
ICBlbmQKKyAgCisgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMKKyMgZW1pdENvZGVJ
bkFsbENvbmZpZ3VyYXRpb25zKGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3Qs
IGJhY2tlbmQsIGluZGV4IHwgLi4uIH0KKyMKKyMgRW1pdHMgZ3VhcmQgY29kZXMgZm9yIGFsbCB2
YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxzIHRoZSBibG9jaworIyBmb3IgdGhvc2UgY29u
ZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5kIG5vdCBlcnJvbmVvdXMuCisjCisKK2RlZiBl
bWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KQorICBmb3JFYWNoVmFsaWRTZXR0aW5nc0Nv
bWJpbmF0aW9uKGFzdCkgeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJh
Y2tlbmQsIGluZGV4IHwKKyAgICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRl
U2V0dGluZ3MpCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tl
bmQsIGluZGV4CisgICAgJG91dHB1dC5wdXRzICIjZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5y
YgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNDIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKKworIworIyBub2RlLnJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykKKyMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUg
YW55IElmVGhlbkVsc2Ugbm9kZXMgYnkKKyMgc3Vic3RpdHV0aW5nIGNvbmNyZXRlIGJvb2xlYW4g
dmFsdWVzIGZvciBlYWNoIFNldHRpbmcuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAg
ICAgIGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICB9CisgIGVuZAorZW5kCisK
K2NsYXNzIFRydWUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisg
IGVuZAorZW5kCisKK2NsYXNzIEZhbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
CisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nCisgIGRlZiByZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpCisgICAgc2V0dGluZ3NbQG5hbWVdLmFzTm9kZQorICBlbmQKK2VuZAor
CitjbGFzcyBBbmQKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQu
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBhbmQgQHJpZ2h0LnJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBPcgorICBkZWYg
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpLnZhbHVlIG9yIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5h
c05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgTm90CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpCisgICAgKG5vdCBAY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSku
YXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UKKyAgZGVmIHJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICBpZiBAcHJlZGljYXRlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykudmFsdWUKKyAgICAgIEB0aGVuQ2FzZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAg
ZWxzZQorICAgICAgQGVsc2VDYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbmQK
KyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8
CisgICAgICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICBpZiBp
dGVtLmlzX2E/IFNlcXVlbmNlCisgICAgICAgIG5ld0xpc3QgKz0gaXRlbS5saXN0CisgICAgICBl
bHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVl
bmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKK2VuZAorCisjCisjIG5vZGUuZGVt
YWNyb2lmeShtYWNyb3MpCisjIG5vZGUuc3Vic3RpdHV0ZShtYXBwaW5nKQorIworIyBkZW1hY3Jv
aWZ5KCkgY29uc3RydWN0cyBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBNYWNybwor
IyBub2Rlcywgd2hpbGUgc3Vic3RpdHV0ZSgpIHJlcGxhY2VzIFZhcmlhYmxlIG5vZGVzIHdpdGgg
dGhlIGdpdmVuCisjIG5vZGVzIGluIHRoZSBtYXBwaW5nLgorIworCitjbGFzcyBOb2RlCisgIGRl
ZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwK
KyAgICAgIGNoaWxkLmRlbWFjcm9pZnkobWFjcm9zKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYg
c3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAor
ICAgICAgY2hpbGQuc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYg
c3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hp
bGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIH0KKyAgZW5k
CitlbmQKKworY2xhc3MgTWFjcm8KKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBteU1h
cHBpbmcgPSB7fQorICAgIG1hcHBpbmcuZWFjaF9wYWlyIHsKKyAgICAgIHwga2V5LCB2YWx1ZSB8
CisgICAgICB1bmxlc3MgQHZhcmlhYmxlcy5pbmNsdWRlPyBrZXkKKyAgICAgICAgbXlNYXBwaW5n
W2tleV0gPSB2YWx1ZQorICAgICAgZW5kCisgICAgfQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAg
IHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShteU1hcHBpbmcpCisgICAgfQorICBl
bmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZQorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAg
IGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBz
ZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIHN1YnN0
aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5n
W3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFz
cyBTZXF1ZW5jZQorICBkZWYgc3Vic3RpdHV0ZShjb25zdGFudHMpCisgICAgbmV3TGlzdCA9IFtd
CisgICAgbXlDb25zdGFudHMgPSBjb25zdGFudHMuZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAg
ICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAgICAgbXlDb25z
dGFudHNbaXRlbS52YXJpYWJsZV0gPSBpdGVtLnZhbHVlLnN1YnN0aXR1dGUobXlDb25zdGFudHMp
CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5zdWJzdGl0dXRlKG15Q29uc3Rh
bnRzKQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdM
aXN0KQorICBlbmQKKyAgCisgIGRlZiByZW5hbWVMYWJlbHMoY29tbWVudCkKKyAgICBtYXBwaW5n
ID0ge30KKyAgICAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBp
dGVtLmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAgbWFwcGluZ1tpdGVtXSA9IExvY2FsTGFiZWwu
dW5pcXVlKGlmIGNvbW1lbnQgdGhlbiBjb21tZW50ICsgIl8iIGVsc2UgIiIgZW5kICsgaXRlbS5j
bGVhbk5hbWUpCisgICAgICBlbmQKKyAgICB9CisgICAgCisgICAgc3Vic3RpdHV0ZUxhYmVscyht
YXBwaW5nKQorICBlbmQKKyAgCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBteU1hY3Jv
cyA9IG1hY3Jvcy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBp
ZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBpdGVtCisg
ICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAg
ICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICAjIElnbm9yZS4K
KyAgICAgIGVsc2lmIGl0ZW0uaXNfYT8gTWFjcm9DYWxsCisgICAgICAgIG1hcHBpbmcgPSB7fQor
ICAgICAgICBteU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisgICAgICAgIHJhaXNlICJDb3VsZCBu
b3QgZmluZCBtYWNybyAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1
bmxlc3MgbXlNYWNyb3NbaXRlbS5uYW1lXQorICAgICAgICByYWlzZSAiQXJndW1lbnQgY291bnQg
bWlzbWF0Y2ggZm9yIGNhbGwgdG8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3Ry
aW5nfSIgdW5sZXNzIGl0ZW0ub3BlcmFuZHMuc2l6ZSA9PSBteU1hY3Jvc1tpdGVtLm5hbWVdLnZh
cmlhYmxlcy5zaXplCisgICAgICAgIGl0ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAg
ICAgfCBpZHggfAorICAgICAgICAgIGlmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBWYXJpYWJs
ZSBhbmQgbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAgICBteU15
TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jv
c1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3Nb
aXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2lmIGl0
ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBNYWNybworICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1h
Y3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhd
CisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0u
bmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFj
cm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gbmlsCisgICAgICAgICAgICBtYXBwaW5n
W215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gaXRlbS5vcGVyYW5kc1tpZHhd
CisgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCArPSBteU1hY3Jvc1tp
dGVtLm5hbWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNyb3Mp
LnJlbmFtZUxhYmVscyhpdGVtLm5hbWUpLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlz
dCA8PCBpdGVtLmRlbWFjcm9pZnkobXlNYWNyb3MpCisgICAgICBlbmQKKyAgICB9CisgICAgU2Vx
dWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpLnN1YnN0aXR1dGUoe30pCisgIGVuZAorZW5k
CisKKyMKKyMgbm9kZS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyMKKyMgQ29uc3Ry
dWN0IGEgbmV3IEFTVCB0aGF0IGhhcyBvZmZzZXQgdmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMK
KyMgb2Zmc2V0cy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0
cywgc2l6ZXMpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGls
ZC5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICB9CisgIGVuZAorZW5kCisKK2Ns
YXNzIFN0cnVjdE9mZnNldAorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisg
ICAgaWYgb2Zmc2V0c1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBvZmZz
ZXRzW3NlbGZdKQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKwor
Y2xhc3MgU2l6ZW9mCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBp
ZiBzaXplc1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBzaXplc1tzZWxm
XSkKKyAgICBlbHNlCisgICAgICBwdXRzICJDb3VsZCBub3QgZmluZCAje3NlbGYuaW5zcGVjdH0g
aW4gI3tzaXplcy5rZXlzLmluc3BlY3R9IgorICAgICAgcHV0cyAic2l6ZXMgPSAje3NpemVzLmlu
c3BlY3R9IgorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCisjCisjIG5vZGUuZm9s
ZAorIworIyBSZXNvbHZlIGNvbnN0YW50IHJlZmVyZW5jZXMgYW5kIGNvbXB1dGUgYXJpdGhtZXRp
YyBleHByZXNzaW9ucy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgZm9sZAorICAgIG1hcENoaWxk
cmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuZm9sZAorICAgIH0KKyAgZW5kCitl
bmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQu
Zm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBs
ZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8g
SW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSArIEBy
aWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcworICBkZWYgZm9s
ZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAg
cmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxm
IHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3Jp
Z2luLCBAbGVmdC52YWx1ZSAtIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTXVs
SW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdo
dCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVk
aWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAg
SW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAqIEByaWdodC52YWx1ZSkKKyAg
ZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlCisgIGRlZiBmb2xkCisgICAgQGNoaWxkID0g
QGNoaWxkLmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGNoaWxkLmlzX2E/IEltbWVkaWF0
ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLUBjaGlsZC52YWx1ZSkKKyAgZW5kCitl
bmQKKworIworIyBub2RlLnJlc29sdmVBZnRlclNldHRpbmdzKG9mZnNldHMsIHNpemVzKQorIwor
IyBDb21waWxlIGFzc2VtYmx5IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4KKyMKKworY2xhc3Mg
Tm9kZQorICBkZWYgcmVzb2x2ZShvZmZzZXRzLCBzaXplcykKKyAgICBkZW1hY3JvaWZ5KHt9KS5y
ZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykuZm9sZAorICBlbmQKK2VuZAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDY3MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisj
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3Mg
UmVnaXN0ZXJJRAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICBjYXNlIG5hbWUKKyAgICB3
aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0MSIsICJhMSIsICJyMSIsICJ0MiIsICJ0MyIKKyAgICAg
IHRydWUKKyAgICB3aGVuICJ0NCIsICJjZnIiCisgICAgICBmYWxzZQorICAgIGVsc2UKKyAgICAg
IHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICBj
YXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgIGNhc2Uga2luZAorICAg
ICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWFsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAi
JWF4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWF4IgorICAgICAgZWxzZQorICAgICAg
ICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAgICBjYXNl
IGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkbCIKKyAgICAgIHdoZW4gOmhhbGYK
KyAgICAgICAgIiVkeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkeCIKKyAgICAgIGVs
c2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQyIgorICAgICAgY2FzZSBr
aW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlY2wiCisgICAgICB3aGVuIDpoYWxmCisg
ICAgICAgICIlY3giCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlY3giCisgICAgICBlbHNl
CisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MyIKKyAgICAgIGNhc2Uga2lu
ZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWJsIgorICAgICAgd2hlbiA6aGFsZgorICAg
ICAgICAiJWJ4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWJ4IgorICAgICAgZWxzZQor
ICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDQiCisgICAgICBjYXNlIGtpbmQK
KyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAg
ICAgICIlc2kiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlc2kiCisgICAgICBlbHNlCisg
ICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJjZnIiCisgICAgICBjYXNlIGtpbmQK
KyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAg
ICAgICIlZGkiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlZGkiCisgICAgICBlbHNlCisg
ICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJzcCIKKyAgICAgIGNhc2Uga2luZAor
ICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNwbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAg
ICAgIiVzcCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzcCIKKyAgICAgIGVsc2UKKyAg
ICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisg
IGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5k
KX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgeDg2T3BlcmFuZChr
aW5kKQorICAgIHJhaXNlIHVubGVzcyBraW5kID09IDpkb3VibGUKKyAgICBjYXNlIG5hbWUKKyAg
ICB3aGVuICJmdDAiLCAiZmEwIiwgImZyIgorICAgICAgIiV4bW0wIgorICAgIHdoZW4gImZ0MSIs
ICJmYTEiCisgICAgICAiJXhtbTEiCisgICAgd2hlbiAiZnQyIiwgImZhMiIKKyAgICAgICIleG1t
MiIKKyAgICB3aGVuICJmdDMiLCAiZmEzIgorICAgICAgIiV4bW0zIgorICAgIHdoZW4gImZ0NCIK
KyAgICAgICIleG1tNCIKKyAgICB3aGVuICJmdDUiCisgICAgICAiJXhtbTUiCisgICAgZWxzZQor
ICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQor
ICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRl
CisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiQje3ZhbHVlfSIKKyAgZW5kCisgIGRlZiB4
ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIje3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3Mg
QWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAgIAor
ICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje29mZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9w
ZXJhbmQoOmludCl9KSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIq
I3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRl
ZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVy
YW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0s
ICN7aW5kZXgueDg2T3BlcmFuZCg6aW50KX0sICN7c2NhbGV9KSIKKyAgZW5kCisKKyAgZGVmIHg4
NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nm9wZXJhbmQoa2luZCl9IgorICBlbmQKK2Vu
ZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAg
dHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3thZGRyZXNz
LnZhbHVlfSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje2Fk
ZHJlc3MudmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZQorICBkZWYg
eDg2TGFiZWwKKyAgICBzYW5pdGl6ZUxhYmVsTmFtZShuYW1lKQorICBlbmQKKyAgZGVmIHg4NkNh
bGxPcGVyYW5kKGtpbmQpCisgICAgeDg2TGFiZWwKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxM
YWJlbFJlZmVyZW5jZQorICBkZWYgeDg2TGFiZWwKKyAgICAiTF9vZmZsaW5lYXNtXyIrbmFtZVsx
Li4tMV0KKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgIHg4NkxhYmVsCisg
IGVuZAorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgIGRlZiB4ODZPcGVyYW5kcygqa2luZHMp
CisgICAgcmFpc2UgdW5sZXNzIGtpbmRzLnNpemUgPT0gb3BlcmFuZHMuc2l6ZQorICAgIHJlc3Vs
dCA9IFtdCisgICAga2luZHMuc2l6ZS50aW1lcyB7CisgICAgICB8IGlkeCB8CisgICAgICByZXN1
bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZPcGVyYW5kKGtpbmRzW2lkeF0pCisgICAgfQorICAgIHJl
c3VsdC5qb2luKCIsICIpCisgIGVuZAorCisgIGRlZiB4ODZTdWZmaXgoa2luZCkKKyAgICBjYXNl
IGtpbmQKKyAgICB3aGVuIDpieXRlCisgICAgICAiYiIKKyAgICB3aGVuIDpoYWxmCisgICAgICAi
dyIKKyAgICB3aGVuIDppbnQKKyAgICAgICJsIgorICAgIHdoZW4gOmRvdWJsZQorICAgICAgInNk
IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRs
ZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgbnVtT3BlcmFuZHMpCisgICAgaWYg
bnVtT3BlcmFuZHMgPT0gMworICAgICAgaWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0KKyAg
ICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2lu
ZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzaWYgb3BlcmFu
ZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2lu
ZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgIlx0bW92I3t4ODZTdWZmaXgoa2lu
ZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3Bl
cmFuZChraW5kKX0iCisgICAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAg
ICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3Aob3Bjb2RlLCBraW5kKQorICAg
IGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSkK
KyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2hpZnQob3Bjb2RlLCBraW5kKQorICAgIGlmIG9w
ZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBvciBvcGVyYW5kc1swXSA9PSBSZWdpc3RlcklELmZv
ck5hbWUobmlsLCAidDIiKQorICAgICAgJGFzbS5wdXRzICJcdCN7b3Bjb2RlfSAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIlx0eGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDppbnQpfSwgJWVjeCIKKyAgICAgICRhc20ucHV0cyAiXHQje29wY29kZX0gJWNsLCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgJGFzbS5wdXRzICJcdHhjaGdsICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIGhhbmRsZVg4NkRvdWJsZUJyYW5jaChicmFuY2hPcGNvZGUsIG1vZGUpCisgICAgY2Fz
ZSBtb2RlCisgICAgd2hlbiA6bm9ybWFsCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9IgorICAgIHdoZW4gOnJldmVyc2UKKyAgICAgICRhc20ucHV0cyAiXHR1Y29taXNk
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0iCisgICAgZWxzZQorICAgICAgcmFpc2UgbW9kZS5pbnNwZWN0CisgICAg
ZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLng4Nkxh
YmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29tcGFyZShvcGNvZGVTdWZmaXgs
IGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1sw
XS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2Rl
U3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAi
XHR0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0i
CisgICAgZWxzaWYgb3BlcmFuZHNbMV0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1sxXS52
YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3Vm
Zml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAiXHR0
ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisg
ICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJcdGNtcCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRCcmFuY2goYnJhbmNoT3Bj
b2RlLCBraW5kKQorICAgIGhhbmRsZVg4NkludENvbXBhcmUoYnJhbmNoT3Bjb2RlWzEuLi0xXSwg
a2luZCkKKyAgICAkYXNtLnB1dHMgIlx0I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0ueDg2
TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5k
KQorICAgIGlmIG9wZXJhbmQuc3VwcG9ydHM4Qml0T25YODYKKyAgICAgICRhc20ucHV0cyAiXHQj
e3NldE9wY29kZX0gI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSIKKyAgICAgICRhc20ucHV0
cyAiXHRtb3Z6YmwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiXHR4Y2hnbCAje29wZXJh
bmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgICAkYXNtLnB1dHMgIlx0I3tzZXRPcGNv
ZGV9ICVhbCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3Z6YmwgJWFsLCAlZWF4IgorICAgICAgJGFz
bS5wdXRzICJcdHhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICBl
bmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29tcGFyZVNldChzZXRPcGNvZGUsIGtp
bmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShzZXRPcGNvZGVbMy4uLTFdLCBraW5kKQorICAg
IGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRzWzJdKQorICBlbmQKKyAgCisgIGRlZiBo
YW5kbGVYODZUZXN0KGtpbmQpCisgICAgdmFsdWUgPSBvcGVyYW5kc1swXQorICAgIGNhc2Ugb3Bl
cmFuZHMuc2l6ZQorICAgIHdoZW4gMgorICAgICAgbWFzayA9IEltbWVkaWF0ZS5uZXcoY29kZU9y
aWdpbiwgLTEpCisgICAgd2hlbiAzCisgICAgICBtYXNrID0gb3BlcmFuZHNbMV0KKyAgICBlbHNl
CisgICAgICByYWlzZSAiRXhwZWN0ZWQgMiBvciAzIG9wZXJhbmRzLCBidXQgZ290ICN7b3BlcmFu
ZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKyAgICAKKyAgICBpZiBt
YXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQorICAgICAgaWYgdmFsdWUu
aXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgIlx0dGVzdCN7eDg2U3VmZml4KGtp
bmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgIlx0Y21wI3t4ODZTdWZmaXgoa2luZCl9
ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5kCisgICAgZWxzZQorICAg
ICAgJGFzbS5wdXRzICJcdHRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3ttYXNrLng4Nk9wZXJhbmQo
a2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBoYW5kbGVYODZCcmFuY2hUZXN0KGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVY
ODZUZXN0KGtpbmQpCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRz
Lmxhc3QueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTZXRUZXN0KHNldE9w
Y29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNl
dE9wY29kZSwgb3BlcmFuZHMubGFzdCkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3BCcmFu
Y2gob3Bjb2RlLCBicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3Bl
cmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXplIC0gMSkKKyAgICBjYXNlIG9wZXJhbmRz
LnNpemUKKyAgICB3aGVuIDQKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdo
ZW4gMworICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFp
c2Ugc2VsZi5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7YnJhbmNoT3Bjb2Rl
fSAje2p1bXBUYXJnZXQueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTdWJC
cmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gNCBhbmQg
b3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIlx0YWRkbCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgIGVsc2UKKyAgICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKCJzdWIje3g4
NlN1ZmZpeChraW5kKX0iLCBraW5kLCBvcGVyYW5kcy5zaXplIC0gMSkKKyAgICBlbmQKKyAgICBj
YXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5k
c1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAgZWxz
ZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICJcdCN7
YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQueDg2TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBs
b3dlclg4NgorICAgICRhc20uY29tbWVudCBjb2RlT3JpZ2luU3RyaW5nCisgICAgY2FzZSBvcGNv
ZGUKKyAgICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMg
YW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3Bl
cmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNb
Ml0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCisg
ICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAk
YXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisg
ICAgICAgICAgJGFzbS5wdXRzICJcdGxlYWwgI3tvcGVyYW5kc1swXS52YWx1ZX0oI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgICAgIGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5k
c1swXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5p
c19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBS
ZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiXHRsZWFsICgje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5k
c1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgdW5sZXNzIEltbWVk
aWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAgICRhc20ucHV0cyAiXHRh
ZGRsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgICBlbmQKKyAgICAgIGVuZAor
ICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJhbmRsIiwgOmludCkK
KyAgICB3aGVuICJsc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNhbGwiLCA6aW50KQor
ICAgIHdoZW4gIm11bGkiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRz
WzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAkYXNtLnB1dHMgIlx0aW11bGwgI3t4ODZPcGVy
YW5kcyg6aW50LCA6aW50LCA6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgICMgRklYTUU6IGNv
dWxkIGRvIHNvbWUgcGVlcGhvbGUgaW4gY2FzZSB0aGUgbGVmdCBvcGVyYW5kIGlzIGltbWVkaWF0
ZSBhbmQgaXQncworICAgICAgICAjIGEgcG93ZXIgb2YgdHdvLgorICAgICAgICBoYW5kbGVYODZP
cCgiaW11bGwiLCA6aW50KQorICAgICAgZW5kCisgICAgd2hlbiAibmVnaSIKKyAgICAgICRhc20u
cHV0cyAiXHRuZWdsICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm5vdGkiCisgICAg
ICAkYXNtLnB1dHMgIlx0bm90bCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJvcmki
LCAib3JwIgorICAgICAgaGFuZGxlWDg2T3AoIm9ybCIsIDppbnQpCisgICAgd2hlbiAicnNoaWZ0
aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYXJsIiwgOmludCkKKyAgICB3aGVuICJ1cnNoaWZ0
aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzaHJsIiwgOmludCkKKyAgICB3aGVuICJzdWJpIiwg
InN1YnAiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9w
ZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiXHRuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICAgICRhc20ucHV0cyAiXHRhZGRsICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBl
bHNlCisgICAgICAgIGhhbmRsZVg4Nk9wKCJzdWJsIiwgOmludCkKKyAgICAgIGVuZAorICAgIHdo
ZW4gInhvcmkiLCAieG9ycCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJ4b3JsIiwgOmludCkKKyAgICB3
aGVuICJsb2FkaSIsICJzdG9yZWkiLCAibG9hZHAiLCAic3RvcmVwIgorICAgICAgJGFzbS5wdXRz
ICJcdG1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgd2hlbiAibG9hZGIiCisg
ICAgICAkYXNtLnB1dHMgIlx0bW92emJsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImxvYWRoIgorICAg
ICAgJGFzbS5wdXRzICJcdG1vdnp3bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJzdG9yZWIiCisgICAg
ICAkYXNtLnB1dHMgIlx0bW92YiAje3g4Nk9wZXJhbmRzKDpieXRlLCA6Ynl0ZSl9IgorICAgIHdo
ZW4gImxvYWRkIiwgIm1vdmVkIiwgInN0b3JlZCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZzZCAj
e3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJhZGRkIgorICAgICAg
JGFzbS5wdXRzICJcdGFkZHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAg
IHdoZW4gImRpdmQiCisgICAgICAkYXNtLnB1dHMgIlx0ZGl2c2QgI3t4ODZPcGVyYW5kcyg6ZG91
YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3ViZCIKKyAgICAgICRhc20ucHV0cyAiXHRzdWJz
ZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJtdWxkIgorICAg
ICAgJGFzbS5wdXRzICJcdG11bHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9Igor
ICAgIHdoZW4gInNxcnRkIgorICAgICAgJGFzbS5wdXRzICJcdHNxcnRzZCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
IgorICAgIHdoZW4gImNpMmQiCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0c2kyc2QgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUp
fSIKKyAgICB3aGVuICJiZGVxIgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1
ZSgiYmRlcSIpCisgICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAg
ICAgJGFzbS5wdXRzICJcdGpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5v
cmRlcmVkKS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tMYWJlbFJlZmVyZW5j
ZS5uZXcoY29kZU9yaWdpbiwgb3BlcmFuZHNbMl0pLng4NkxhYmVsfSIKKyAgICAgIGlzVW5vcmRl
cmVkLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkbmVxIgorICAgICAgaGFuZGxlWDg2RG91Ymxl
QnJhbmNoKCJqbmUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3QiCisgICAgICBoYW5kbGVYODZE
b3VibGVCcmFuY2goImphIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGd0ZXEiCisgICAgICBoYW5k
bGVYODZEb3VibGVCcmFuY2goImphZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRsdCIKKyAgICAg
IGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGx0ZXEi
CisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIsIDpyZXZlcnNlKQorICAgIHdoZW4g
ImJkZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamUiLCA6bm9ybWFsKQorICAg
IHdoZW4gImJkbmVxdW4iCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJi
ZG5lcXVuIikKKyAgICAgIGlzRXF1YWwgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1biIpCisg
ICAgICAkYXNtLnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRz
ICJcdGpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS54ODZM
YWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0amUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9y
aWdpbiwgaXNFcXVhbCkueDg2TGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIp
CisgICAgICAkYXNtLnB1dHMgIlx0am1wICN7b3BlcmFuZHNbMl0ueDg2TGFiZWx9IgorICAgICAg
aXNFcXVhbC5sb3dlcigiWDg2IikKKyAgICB3aGVuICJiZGd0dW4iCisgICAgICBoYW5kbGVYODZE
b3VibGVCcmFuY2goImpiIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRndGVxdW4iCisgICAgICBo
YW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHR1biIK
KyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6bm9ybWFsKQorICAgIHdoZW4gImJk
bHRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6bm9ybWFsKQorICAg
IHdoZW4gImJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHRzZDJzaSAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgICAgJGFzbS5wdXRzICJcdGNtcGwgJDB4ODAwMDAwMDAgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiXHRqZSAje29wZXJhbmRzWzJdLng4NkxhYmVs
fSIKKyAgICB3aGVuICJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHRzZDJzaSAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgIHdoZW4gImJjZDJpIgorICAgICAgJGFzbS5wdXRzICJcdGN2dHRzZDJzaSAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgJGFzbS5wdXRzICJcdHRlc3RsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1
dHMgIlx0amUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgICAkYXNtLnB1dHMgIlx0Y3Z0
c2kyc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNt
LnB1dHMgIlx0dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1t
NyIKKyAgICAgICRhc20ucHV0cyAiXHRqcCAje29wZXJhbmRzWzJdLng4NkxhYmVsfSIKKyAgICAg
ICRhc20ucHV0cyAiXHRqbmUgI3tvcGVyYW5kc1syXS54ODZMYWJlbH0iCisgICAgd2hlbiAibW92
ZHoiCisgICAgICAkYXNtLnB1dHMgIlx0eG9ycGQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpk
b3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJw
b3AiCisgICAgICAkYXNtLnB1dHMgIlx0cG9wICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgd2hlbiAicHVzaCIKKyAgICAgICRhc20ucHV0cyAiXHRwdXNoICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6eGkycCIK
KyAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXSBhbmQgb3BlcmFu
ZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgIlx0eG9ybCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMF0gIT0gb3BlcmFuZHNbMV0KKyAgICAgICAgJGFzbS5w
dXRzICJcdG1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgICBlbmQKKyAgICB3
aGVuICJub3AiCisgICAgICAkYXNtLnB1dHMgIlx0bm9wIgorICAgIHdoZW4gImJpZXEiLCAiYnBl
cSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6aW50KQorICAgIHdoZW4gImJpbmVx
IiwgImJwbmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6aW50KQorICAgIHdo
ZW4gImJpYSIsICJicGEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphIiwgOmludCkKKyAg
ICB3aGVuICJiaWFlcSIsICJicGFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwg
OmludCkKKyAgICB3aGVuICJiaWIiLCAiYnBiIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJq
YiIsIDppbnQpCisgICAgd2hlbiAiYmliZXEiLCAiYnBiZXEiCisgICAgICBoYW5kbGVYODZJbnRC
cmFuY2goImpiZSIsIDppbnQpCisgICAgd2hlbiAiYmlndCIsICJicGd0IgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqZyIsIDppbnQpCisgICAgd2hlbiAiYmlndGVxIiwgImJwZ3RlcSIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmludCkKKyAgICB3aGVuICJiaWx0IiwgImJw
bHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwgOmludCkKKyAgICB3aGVuICJiaWx0
ZXEiLCAiYnBsdGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbGUiLCA6aW50KQorICAg
IHdoZW4gImJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmJ5dGUpCisgICAg
d2hlbiAiYmJuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDpieXRlKQorICAg
IHdoZW4gImJiYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6Ynl0ZSkKKyAgICB3
aGVuICJiYmFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmJ5dGUpCisgICAg
d2hlbiAiYmJiIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDpieXRlKQorICAgIHdo
ZW4gImJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6Ynl0ZSkKKyAgICB3
aGVuICJiYmd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDpieXRlKQorICAgIHdo
ZW4gImJiZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmJ5dGUpCisgICAg
d2hlbiAiYmJsdCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6Ynl0ZSkKKyAgICB3
aGVuICJiYmx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsdGVxIiwgOmJ5dGUpCisg
ICAgd2hlbiAiYnRpbyIsICJidHBvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6
aW50KQorICAgIHdoZW4gImJ0aXMiLCAiYnRwcyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3Qo
ImpzIiwgOmludCkKKyAgICB3aGVuICJidGl6IiwgImJ0cHoiCisgICAgICBoYW5kbGVYODZCcmFu
Y2hUZXN0KCJqeiIsIDppbnQpCisgICAgd2hlbiAiYnRpbnoiLCAiYnRwbnoiCisgICAgICBoYW5k
bGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6aW50KQorICAgIHdoZW4gImJ0Ym8iCisgICAgICBoYW5k
bGVYODZCcmFuY2hUZXN0KCJqbyIsIDpieXRlKQorICAgIHdoZW4gImJ0YnMiCisgICAgICBoYW5k
bGVYODZCcmFuY2hUZXN0KCJqcyIsIDpieXRlKQorICAgIHdoZW4gImJ0YnoiCisgICAgICBoYW5k
bGVYODZCcmFuY2hUZXN0KCJqeiIsIDpieXRlKQorICAgIHdoZW4gImJ0Ym56IgorICAgICAgaGFu
ZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmJ5dGUpCisgICAgd2hlbiAiam1wIgorICAgICAgJGFz
bS5wdXRzICJcdGptcCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3
aGVuICJiYWRkaW8iLCAiYmFkZHBvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAi
am8iLCA6aW50KQorICAgIHdoZW4gImJhZGRpcyIsICJiYWRkcHMiCisgICAgICBoYW5kbGVYODZP
cEJyYW5jaCgiYWRkbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYmFkZGl6IiwgImJhZGRweiIK
KyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJi
YWRkaW56IiwgImJhZGRwbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbnoi
LCA6aW50KQorICAgIHdoZW4gImJzdWJpbyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam8i
LCA6aW50KQorICAgIHdoZW4gImJzdWJpcyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianMi
LCA6aW50KQorICAgIHdoZW4gImJzdWJpeiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianoi
LCA6aW50KQorICAgIHdoZW4gImJzdWJpbnoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpu
eiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImlt
dWxsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJibXVsaXMiCisgICAgICBoYW5kbGVYODZPcEJy
YW5jaCgiaW11bGwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJtdWxpeiIKKyAgICAgIGhhbmRs
ZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlueiIKKyAg
ICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJv
cmlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqbyIsIDppbnQpCisgICAgd2hl
biAiYm9yaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpzIiwgOmludCkKKyAg
ICB3aGVuICJib3JpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianoiLCA6aW50
KQorICAgIHdoZW4gImJvcmlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAiam56
IiwgOmludCkKKyAgICB3aGVuICJicmVhayIKKyAgICAgICRhc20ucHV0cyAiXHRpbnQgJDMiCisg
ICAgd2hlbiAiY2FsbCIKKyAgICAgICRhc20ucHV0cyAiXHRjYWxsICN7b3BlcmFuZHNbMF0ueDg2
Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInJldCIKKyAgICAgICRhc20ucHV0cyAiXHRy
ZXQiCisgICAgd2hlbiAiY2llcSIsICJjcGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNl
dCgic2V0ZSIsIDppbnQpCisgICAgd2hlbiAiY2luZXEiLCAiY3BuZXEiCisgICAgICBoYW5kbGVY
ODZJbnRDb21wYXJlU2V0KCJzZXRuZSIsIDppbnQpCisgICAgd2hlbiAiY2lhIiwgImNwYSIKKyAg
ICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGEiLCA6aW50KQorICAgIHdoZW4gImNpYWVx
IiwgImNwYWVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YWUiLCA6aW50KQor
ICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRi
IiwgOmludCkKKyAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAgIGhhbmRsZVg4NkludENv
bXBhcmVTZXQoInNldGJlIiwgOmludCkKKyAgICB3aGVuICJjaWd0IiwgImNwZ3QiCisgICAgICBo
YW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnIiwgOmludCkKKyAgICB3aGVuICJjaWd0ZXEiLCAi
Y3BndGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0Z2UiLCA6aW50KQorICAg
IHdoZW4gImNpbHQiLCAiY3BsdCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGwi
LCA6aW50KQorICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRD
b21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisgICAgd2hlbiAidGlvIgorICAgICAgaGFuZGxlWDg2
U2V0VGVzdCgic2V0byIsIDppbnQpCisgICAgd2hlbiAidGlzIgorICAgICAgaGFuZGxlWDg2U2V0
VGVzdCgic2V0cyIsIDppbnQpCisgICAgd2hlbiAidGl6IgorICAgICAgaGFuZGxlWDg2U2V0VGVz
dCgic2V0eiIsIDppbnQpCisgICAgd2hlbiAidGlueiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3Qo
InNldG56IiwgOmludCkKKyAgICB3aGVuICJ0Ym8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJz
ZXRvIiwgOmJ5dGUpCisgICAgd2hlbiAidGJzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0
cyIsIDpieXRlKQorICAgIHdoZW4gInRieiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoi
LCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ym56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoi
LCA6Ynl0ZSkKKyAgICB3aGVuICJwZWVrIgorICAgICAgJGFzbS5wdXRzICJcdG1vdmwgI3tvcGVy
YW5kc1swXS52YWx1ZSAqIDR9KCVlc3ApLCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgIHdoZW4gInBva2UiCisgICAgICAkYXNtLnB1dHMgIlx0bW92bCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLnZhbHVlICogNH0oJWVzcCkiCisgICAg
d2hlbiAiY2RxaSIKKyAgICAgICRhc20ucHV0cyAiXHRjZHEiCisgICAgd2hlbiAiaWRpdmkiCisg
ICAgICAkYXNtLnB1dHMgIlx0aWRpdmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICB3aGVuICJmaWkyZCIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisg
ICAgICAkYXNtLnB1dHMgIlx0bW92ZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAl
eG1tNyIKKyAgICAgICRhc20ucHV0cyAiXHRwc2xscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5w
dXRzICJcdHBvciAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAg
ICB3aGVuICJmZDJpaSIKKyAgICAgICRhc20ucHV0cyAiXHRtb3ZkICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAkYXNtLnB1dHMgIlx0bW92c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwg
JXhtbTciCisgICAgICAkYXNtLnB1dHMgIlx0cHNybHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20u
cHV0cyAiXHRtb3ZzZCAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICBlbHNlCisgICAgICByYWlzZSAiQmFkIG9wY29kZTogI3tvcGNvZGV9IgorICAgIGVuZAorICBl
bmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lh
bGl6YXRpb25LaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisjZGVmaW5lIENvZGVTcGVj
aWFsaXphdGlvbktpbmRfaAorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJl
dmlzaW9uIDEwNjE0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNs
b3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIENvbW1v
blNsb3dQYXRoc19oCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1
ZGUgIkpTQXJyYXkuaCIKIApAQCAtNDEsNiArNDIsMzggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5h
bWVzcGFjZSBDb21tb25TbG93UGF0aHMgewogCitBTFdBWVNfSU5MSU5FIEV4ZWNTdGF0ZSogYXJp
dHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0g
YXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1
bmN0aW9uKCkpOworICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVj
dXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgIGludCBhcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CisK
KyAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2Vu
YXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KKyAgICBpZiAoIXJl
Z2lzdGVyRmlsZS0+Z3JvdyhleGVjLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpICsgbmV3Q29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCisgICAgICAg
IHJldHVybiAwOworCisgICAgQVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3
Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworCisgICAgLy8gVG9vIGZldyBhcmd1bWVudHMg
LS0gY29weSBjYWxsIGZyYW1lIGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFy
Z3VtZW50cyB3aXRoIHVuZGVmaW5lZC4KKyAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOworICAgIFJlZ2lz
dGVyKiBzcmMgPSBleGVjLT5yZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlciogZHN0ID0gZXhlYy0+
cmVnaXN0ZXJzKCkgKyBkZWx0YTsKKworICAgIGludCBpOworICAgIGludCBlbmQgPSAtRXhlY1N0
YXRlOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgIGZvciAoaSA9
IC0xOyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBzcmNbaV07CisKKyAgICBlbmQg
LT0gZGVsdGE7CisgICAgZm9yICggOyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBq
c1VuZGVmaW5lZCgpOworCisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gRXhlY1N0YXRlOjpjcmVh
dGUoZHN0KTsKKyAgICBBU1NFUlQoKHZvaWQqKW5ld0V4ZWMgPD0gcmVnaXN0ZXJGaWxlLT5lbmQo
KSk7CisgICAgcmV0dXJuIG5ld0V4ZWM7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBvcEluc3Rh
bmNlT2ZTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBiYXNlVmFs
LCBKU1ZhbHVlIHByb3RvKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNDZWxsKCkgfHwgIWJhc2VW
YWwuaXNDZWxsKCkgfHwgIXByb3RvLmlzQ2VsbCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMTA2MTQ0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgorI2luY2x1ZGUgIkV4ZWN1dGlv
bkhhcm5lc3MuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVREcml2ZXIuaCIKICNp
bmNsdWRlICJQYXJzZXIuaCIKQEAgLTg0LDcgKzg1LDcgQEAgSW50cmluc2ljIE5hdGl2ZUV4ZWN1
dGFibGU6OmludHJpbnNpYygpIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRpYyB2b2lkIGpl
dHRpc29uQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPFQ+JiBjb2Rl
QmxvY2spCiB7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpICE9IEpJVENvZGU6
OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVC
bG9jay0+Z2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUo
KSk7CiAgICAgT3duUHRyPFQ+IGNvZGVCbG9ja1RvSmV0dGlzb24gPSBjb2RlQmxvY2sucmVsZWFz
ZSgpOwogICAgIGNvZGVCbG9jayA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8VD4oY29kZUJsb2NrVG9K
ZXR0aXNvbi0+cmVsZWFzZUFsdGVybmF0aXZlKCkpOwpAQCAtMTY3LDkgKzE2OCwzMCBAQCBKU09i
amVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpbWl6CiAgICAgcmV0dXJuIGVycm9yOwog
fQogCit2b2lkIEV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2Jh
bERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9t
VGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKworaW5s
aW5lIGNvbnN0IGNoYXIqIHNhbXBsaW5nRGVzY3JpcHRpb24oSklUQ29kZTo6SklUVHlwZSBqaXRU
eXBlKQoreworICAgIHN3aXRjaCAoaml0VHlwZSkgeworICAgIGNhc2UgSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuazoKKyAgICAgICAgcmV0dXJuICJJbnRlcnByZXRlciBDb21waWxhdGlvbiAoVE9U
QUwpIjsKKyAgICBjYXNlIEpJVENvZGU6OkJhc2VsaW5lSklUOgorICAgICAgICByZXR1cm4gIkJh
c2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6REZHSklUOgor
ICAgICAgICByZXR1cm4gIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
fQorCiBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUq
IGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBq
aXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAi
REZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1Jl
Z2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJ
VCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC0yMTAsNyArMjMyLDcgQEAgSlNPYmpl
Y3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYQogICAgIH0KIAogI2lmIEVOQUJMRShK
SVQpCi0gICAgaWYgKCFqaXRDb21waWxlSWZBcHByb3ByaWF0ZSgqZ2xvYmFsRGF0YSwgbV9ldmFs
Q29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVG
b3JFeGVjdXRpb24oKmdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2Fs
bCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTI5NSw5ICszMTcs
MTUgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlT3B0aQogICAgIHJldHVy
biBlcnJvcjsKIH0KIAordm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlSWZBcHBy
b3ByaWF0ZShnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGws
IEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7Cit9CisKIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFs
KEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2Rl
OjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24o
aml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAo
VE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lm
ICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTMzNiw3ICszNjQs
NyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlCiAgICAgfQogCiAj
aWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJpYXRlKCpnbG9iYWxE
YXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAg
IGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29kZUJsb2Nr
LCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYK
IApAQCAtNDEyLDcgKzQ0MCw3IEBAIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFi
bGU6OmIKICAgICB3aGlsZSAocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKQogICAgICAgICByZXN1bHQg
PSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSk7
CiAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgQVNTRVJUKHJlc3VsdC0+Z2V0SklUVHlwZSgpID09
IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNv
ZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00
MzgsNiArNDY2LDE4IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVPcHQK
ICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21w
aWxlRm9yQ2FsbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQg
PSBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fY29kZUJsb2Nr
Rm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNr
LCBtX3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0
Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9v
bCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1f
Y29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZv
ckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0b21U
aWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCiBGdW5j
dGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tXaXRoQnl0ZWNvZGVG
b3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEZ1bmN0aW9uQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcihraW5kKTsKQEAgLTQ4Miw3ICs1MjIs
NyBAQCBQYXNzT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBGdW5jdGlvbkV4CiAKIEpTT2JqZWN0
KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiBl
eGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0
VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJ
VENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRG
RyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdp
b24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQp
CiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNTA0LDcgKzU0NCw3IEBAIEpTT2JqZWN0KiBG
dW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2Rl
QmxvY2tGb3JDYWxsLT5zaGFyZWRTeW1ib2xUYWJsZSgpOwogCiAjaWYgRU5BQkxFKEpJVCkKLSAg
ICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxX
aXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJl
RnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNh
bGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9z
eW1ib2xUYWJsZSwgaml0VHlwZSwgQ29kZUZvckNhbGwpKQogICAgICAgICByZXR1cm4gMDsKICNl
bmRpZgogCkBAIC01MjQsNyArNTY0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29tcGlsZUZvcgogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29u
c3RydWN0SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFp
bk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBz
YW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5l
IENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAg
U2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBl
KSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpA
QCAtNTQ2LDcgKzU4Niw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVG
b3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnNoYXJlZFN5
bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0
aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0
eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlv
bkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0
LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNo
ZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9yQ29uc3RydWN0KSkKICAgICAgICAg
cmV0dXJuIDA7CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTA2MTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAj
ZGVmaW5lIEV4ZWN1dGFibGVfaAogCiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIKKyNpbmNsdWRlICJD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTM5LDEyICs0MCwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1Z2dlcjsKICAgICBjbGFzcyBFdmFsQ29k
ZUJsb2NrOwogICAgIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFNj
b3BlQ2hhaW5Ob2RlOwogCiAgICAgc3RydWN0IEV4Y2VwdGlvbkluZm87CiAgICAgCi0gICAgZW51
bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3Qg
fTsKICAgICBlbnVtIENvbXBpbGF0aW9uS2luZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9wdGltaXpp
bmdDb21waWxhdGlvbiB9OwogCiAgICAgaW5saW5lIGJvb2wgaXNDYWxsKENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKQEAgLTMxOSw2ICszMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9
OwogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGlj
OgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtMzM4LDYgKzM0
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAg
ICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9p
ZCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgRXZhbENvZGVC
bG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAtMzg0LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIH07CiAKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3Jp
cHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwog
CkBAIC00MTEsNiArNDE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJM
RShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYp
OworICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAg
ICAgICBQcm9ncmFtQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC00NTMsNiArNDU4
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBw
dWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAg
ICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNTA4LDYgKzUxNCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lk
IGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZv
aWQgaml0Q29tcGlsZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBi
b29sIGlzR2VuZXJhdGVkRm9yQ2FsbCgpIGNvbnN0CkBAIC01MzUsNiArNTQyLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlz
b25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lk
IGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAg
ICBib29sIGlzR2VuZXJhdGVkRm9yQ29uc3RydWN0KCkgY29uc3QKQEAgLTU4Miw2ICs1OTAsMTYg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgamV0dGlzb25PcHRpbWl6ZWRDb2Rl
Rm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICB2b2lkIGppdENvbXBpbGVGb3IoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAgICAgICAgaml0Q29tcGlsZUZvckNh
bGwoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgICAg
ICBqaXRDb21waWxlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOworICAgICAgICB9CiAjZW5kaWYK
ICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3IoQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9u
SGFybmVzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEV4
ZWN1dGlvbkhhcm5lc3NfaAorI2RlZmluZSBFeGVjdXRpb25IYXJuZXNzX2gKKworI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkpJVERyaXZl
ci5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K3RlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+CitpbmxpbmUgYm9vbCBwcmVwYXJlRm9y
RXhlY3V0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+
JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkK
K3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGpp
dFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJl
dGVyLgorICAgICAgICBMTEludDo6Z2V0RW50cnlwb2ludChnbG9iYWxEYXRhLCBjb2RlQmxvY2su
Z2V0KCksIGppdENvZGUpOworICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9Cisj
ZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorICAgIHJldHVybiBqaXRDb21waWxlSWZBcHByb3ByaWF0
ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdFR5cGUpOworfQorCitpbmxpbmUg
Ym9vbCBwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUs
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFyZWRTeW1i
b2xUYWJsZSomIHN5bWJvbFRhYmxlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENv
ZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0
aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RnVuY3Rpb25FbnRy
eXBvaW50KGdsb2JhbERhdGEsIGtpbmQsIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7
CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5
Q2hlY2spOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9Q
QVJBTShraW5kKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBp
bGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLCBqaXRDb2RlLCBq
aXRDb2RlV2l0aEFyaXR5Q2hlY2ssIHN5bWJvbFRhYmxlLCBqaXRUeXBlKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8gRXhlY3V0
aW9uSGFybmVzc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0
aXZhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMDYxNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FjdGl2YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtu
b3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBhZG9wdEFycmF5UHRyKG5ldyBXcml0ZUJhcnJpZXI8VW5r
bm93bj5bcmVnaXN0ZXJBcnJheVNpemVdKTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+
KiByZWdpc3RlcnMgPSByZWdpc3RlckFycmF5LmdldCgpICsgcmVnaXN0ZXJPZmZzZXQ7Ci0KKyAg
ICAgICAgCiAgICAgICAgIC8vIENvcHkgYWxsIGFyZ3VtZW50cyB0aGF0IGNhbiBiZSBjYXB0dXJl
ZCBieSBuYW1lIG9yIGJ5IHRoZSBhcmd1bWVudHMgb2JqZWN0LgogICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG1fbnVtQ2FwdHVyZWRBcmdzOyArK2kpIHsKICAgICAgICAgICAgIGludCBpbmRl
eCA9IENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoaSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAxMDYxNDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcg
QEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNBcnJheTsKKyAgICBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBzdHJ1Y3QgU3BhcnNlQXJyYXlFbnRyeSA6IHB1Ymxp
YyBXcml0ZUJhcnJpZXI8VW5rbm93bj4gewogICAgICAgICB0eXBlZGVmIFdyaXRlQmFycmllcjxV
bmtub3duPiBCYXNlOwpAQCAtMTIyLDYgKzEyMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07
CiAKICAgICBjbGFzcyBKU0FycmF5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xh
c3MgV2Fsa2VyOwogCiAgICAgcHJvdGVjdGVkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDEwNjE0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiwxMCBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKLSAgICBjbGFzcyBTdHJ1
Y3R1cmU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3Bl
cnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKKyAgICBjbGFzcyBT
dHJ1Y3R1cmU7CiAKICAgICBlbnVtIEVudW1lcmF0aW9uTW9kZSB7CiAgICAgICAgIEV4Y2x1ZGVE
b250RW51bVByb3BlcnRpZXMsCkBAIC0xNjQsNiArMTY1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4
ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgICAgIAogICAgICAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwogICAgICAgICBX
cml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKICAgICB9OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTA2MTQ0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9u
UHJvdG90eXBlOwogICAgIGNsYXNzIEpTQWN0aXZhdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9i
amVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZl
RXhlY3V0YWJsZTsKICAgICBjbGFzcyBTb3VyY2VDb2RlOwogICAgIG5hbWVzcGFjZSBERkcgewpA
QCAtMTQwLDYgKzE0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2
aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgorICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0
OwogCiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBK
U1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDEwNjE0NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0MSw2ICsxNDEsOCBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRh
VHlwCiAgICAgLCBrZXl3b3JkcyhhZG9wdFB0cihuZXcgS2V5d29yZHModGhpcykpKQogICAgICwg
aW50ZXJwcmV0ZXIoMCkKICAgICAsIGhlYXAodGhpcywgaGVhcFNpemUpCisgICAgLCBqc0FycmF5
Q2xhc3NJbmZvKCZKU0FycmF5OjpzX2luZm8pCisgICAgLCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZv
KCZKU0ZpbmFsT2JqZWN0OjpzX2luZm8pCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLCBzaXpl
T2ZMYXN0U2NyYXRjaEJ1ZmZlcigwKQogI2VuZGlmCkBAIC0yMTYsNyArMjE4LDcgQEAgSlNHbG9i
YWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgIGppdFN0dWJzID0gYWRvcHRQ
dHIobmV3IEpJVFRodW5rcyh0aGlzKSk7CiAjZW5kaWYKIAotICAgIGludGVycHJldGVyLT5pbml0
aWFsaXplKHRoaXMtPmNhblVzZUpJVCgpKTsKKyAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSgm
bGxpbnREYXRhLCB0aGlzLT5jYW5Vc2VKSVQoKSk7CiAKICAgICBoZWFwLm5vdGlmeUlzU2FmZVRv
Q29sbGVjdCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxEYXRhLmgJKHJldmlzaW9uIDEwNjE0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTYgQEAK
ICNkZWZpbmUgSlNHbG9iYWxEYXRhX2gKIAogI2luY2x1ZGUgIkNhY2hlZFRyYW5zY2VuZGVudGFs
RnVuY3Rpb24uaCIKLSNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFu
Y2VDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJI
ZWFwLmgiCi0jaW5jbHVkZSAiU3Ryb25nLmgiCisjaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5j
bHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnRE
YXRhLmgiCiAjaW5jbHVkZSAiTnVtZXJpY1N0cmluZ3MuaCIKICNpbmNsdWRlICJTbWFsbFN0cmlu
Z3MuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUZXJtaW5hdG9yLmgiCiAjaW5j
bHVkZSAiVGltZW91dENoZWNrZXIuaCIKICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCkBAIC02NSw2
ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAg
IGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEtleXdvcmRzOworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFBh
cnNlckFyZW5hOwogICAgIGNsYXNzIFJlZ0V4cENhY2hlOwpAQCAtMjQxLDYgKzI0MywxMiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgSGVhcCBoZWFwOwogCiAgICAgICAgIEpTVmFsdWUgZXhj
ZXB0aW9uOworCisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QganNBcnJheUNsYXNzSW5m
bzsKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZv
OworCisgICAgICAgIExMSW50OjpEYXRhIGxsaW50RGF0YTsKKwogI2lmIEVOQUJMRShKSVQpCiAg
ICAgICAgIFJldHVybkFkZHJlc3NQdHIgZXhjZXB0aW9uTG9jYXRpb247CiAgICAgICAgIEpTVmFs
dWUgaG9zdENhbGxSZXR1cm5WYWx1ZTsKQEAgLTM0Niw2ICszNTQsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICN1bmRlZiByZWdpc3RlclR5cGVkQXJyYXlGdW5jdGlvbgogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIEpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6
ZSk7CiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEqJiBzaGFyZWRJbnN0YW5jZUludGVybmFs
KCk7CiAgICAgICAgIHZvaWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTA2MTQ0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBG
dW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgR2xv
YmFsQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFz
cyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAg
ICAgY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CkBAIC0zMzUsNiArMzM2LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkU3RhdGljR2xvYmFscyhH
bG9iYWxQcm9wZXJ0eUluZm8qLCBpbnQgY291bnQpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8v
IEZJWE1FOiBGb2xkIHJlc2V0IGludG8gaW5pdC4KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBpbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpOwogICAgICAgICB2b2lkIHJlc2V0KEpTVmFs
dWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAkocmV2aXNpb24gMTA2MTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgSGFzaEVudHJ5OwogICAgIGNs
YXNzIEludGVybmFsRnVuY3Rpb247CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAg
ICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKQEAgLTI2OSw2ICsyNzAsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgSlNPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVy
dHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIE5vYm9k
eSBzaG91bGQgZXZlciBhc2sgYW55IG9mIHRoZXNlIHF1ZXN0aW9ucyBvbiBzb21ldGhpbmcgYWxy
ZWFkeSBrbm93biB0byBiZSBhIEpTT2JqZWN0LgogICAgICAgICB1c2luZyBKU0NlbGw6OmlzQVBJ
VmFsdWVXcmFwcGVyOwogICAgICAgICB1c2luZyBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyOwpAQCAt
MzgxLDYgKzM4NCw4IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IK
ICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHByaXZhdGU6Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAg
ICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0
cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQogICAgICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShy
ZXZpc2lvbiAxMDYxNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICBjbGFzcyBJZGVudGlmaWVyOwogICAgIGNsYXNzIEpTT2JqZWN0Owor
ICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsK
QEAgLTk2LDYgKzk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZh
dGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAg
IAogICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFt
ZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xv
dCk7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRTdHJ1Y3R1cmU7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9u
IDEwNjE0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgSlNTdHJpbmc7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgSlNT
dHJpbmcqIGpzRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7CiAgICAgSlNTdHJpbmcqIGpzRW1w
dHlTdHJpbmcoRXhlY1N0YXRlKik7CkBAIC0yNDAsNiArMjQxLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlc29sdmVS
b3BlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2U4
KExDaGFyKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hhciop
IGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8u
aAkocmV2aXNpb24gMTA2MTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCiAgICAgc3RhdGljIGNv
bnN0IHVuc2lnbmVkIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxOyAvLyBXZWJDb3JlIHVzZXMg
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCB0byBtYWtlIGRvY3VtZW50LmFsbCB1bmRldGVjdGFibGUu
CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDEgPDwg
MTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJpZGVzSGFzSW5zdGFuY2UgPSAxIDw8
IDI7CkBAIC04Nyw2ICs4OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBw
cml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAg
ICAgICAKICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MxKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsg
QVNTRVJUKGZsYWcgPD0gKDEgPDwgNykpOyByZXR1cm4gbV9mbGFncyAmIGZsYWc7IH0KICAgICAg
ICAgYm9vbCBpc1NldE9uRmxhZ3MyKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcg
Pj0gKDEgPDwgOCkpOyByZXR1cm4gbV9mbGFnczIgJiAoZmxhZyA+PiA4KTsgfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24gMTA2MTQ0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTExNiwxMCArMTE2LDkgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQ
cm90b3R5cGUoRQogICAgIHJldHVybiBKU05vdEFuT2JqZWN0OjpjcmVhdGUoZXhlYyk7CiB9CiAK
LSNpZm5kZWYgTkRFQlVHCiBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiB7Ci0gICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBzaXplID0gNjQ7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXpl
ID0gMTI4OwogICAgIHN0YXRpYyBjaGFyIGRlc2NyaXB0aW9uW3NpemVdOwogCiAgICAgaWYgKCEq
dGhpcykKQEAgLTEyOCwxNCArMTI3LDE0IEBAIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkK
ICAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJJbnQzMjogJWQiLCBhc0ludDMy
KCkpOwogICAgIGVsc2UgaWYgKGlzRG91YmxlKCkpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAg
ICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlbHgiLCBhc0Rv
dWJsZSgpLCByZWludGVycHJldERvdWJsZVRvSW50cHRyKGFzRG91YmxlKCkpKTsKKyAgICAgICAg
c25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVseCwgJWxmIiwgcmVpbnRlcnBy
ZXREb3VibGVUb0ludHB0cihhc0RvdWJsZSgpKSwgYXNEb3VibGUoKSk7CiAjZWxzZQogICAgICAg
ICB1bmlvbiB7CiAgICAgICAgICAgICBkb3VibGUgYXNEb3VibGU7CiAgICAgICAgICAgICB1aW50
MzJfdCBhc1R3b0ludDMyc1syXTsKICAgICAgICAgfSB1OwogICAgICAgICB1LmFzRG91YmxlID0g
YXNEb3VibGUoKTsKLSAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6
ICVsZiwgJTA4eDolMDh4IiwgYXNEb3VibGUoKSwgdS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0lu
dDMyc1swXSk7CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAl
MDh4OiUwOHgsICVsZiIsIHUuYXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0sIGFzRG91
YmxlKCkpOwogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChpc0NlbGwoKSkKICAgICAgICAgc25wcmlu
dGYoZGVzY3JpcHRpb24sIHNpemUsICJDZWxsOiAlcCIsIGFzQ2VsbCgpKTsKQEAgLTE1Miw3ICsx
NTEsNiBAQCBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiAKICAgICByZXR1cm4gZGVzY3Jp
cHRpb247CiB9Ci0jZW5kaWYKIAogLy8gVGhpcyBpbiB0aGUgVG9JbnQzMiBvcGVyYXRpb24gaXMg
ZGVmaW5lZCBpbiBzZWN0aW9uIDkuNSBvZiB0aGUgRUNNQS0yNjIgc3BlYy4KIC8vIE5vdGUgdGhh
dCB0aGlzIG9wZXJhdGlvbiBpcyBpZGVudGljYWwgdG8gVG9VSW50MzIgb3RoZXIgdGhhbiB0byBp
bnRlcnByZXRhdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUu
aAkocmV2aXNpb24gMTA2MTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsOSArMjMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEpTQ2VsbCogYXNDZWxsKCkgY29uc3Q7CiAgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIGJvb2wgaXNWYWxpZENhbGxlZSgpOwogCi0jaWZuZGVmIE5ERUJVRwogICAgICAgICBjaGFy
KiBkZXNjcmlwdGlvbigpOwotI2VuZGlmCiAKICAgICBwcml2YXRlOgogICAgICAgICB0ZW1wbGF0
ZSA8Y2xhc3MgVD4gSlNWYWx1ZShXcml0ZUJhcnJpZXJCYXNlPFQ+KTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9u
IDEwNjE0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEyIEBACiAKIG5hbWVzcGFjZSBKU0Mg
ewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFJlZ2lzdGVy
OwogCiAgICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZp
bmFsT2JqZWN0IEJhc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcAkocmV2aXNpb24gMTA2MTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDEwIEBAIHVuc2lnbmVk
IG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGkKIAogdW5zaWduZWQgbWF4aW11bUlubGlu
aW5nRGVwdGg7CiAKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJt
VXA7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsK
K2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogaW50MzJfdCBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogaW50MzJfdCBleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGludDMyX3QgZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkBAIC0xMzcsNiArMTQx
LDEwIEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIAogICAgIFNFVChtYXhpbXVtSW5s
aW5pbmdEZXB0aCwgNSk7CiAKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0
ZXJXYXJtVXAsICAgICAtMTAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9u
dEpJVEFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7Cisg
ICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb24sICAgICAgICAgICAgLTEwMCk7
CisKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCwg
ICAgIC0xMDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRl
ckxvbmdXYXJtVXAsIC01MDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9u
dE9wdGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigp
KTsKQEAgLTE4NSw2ICsxOTMsOCBAQCB2b2lkIGluaXRpYWxpemVPcHRpb25zKCkKICAgICBpZiAo
Y3B1c1RvVXNlIDwgMSkKICAgICAgICAgY3B1c1RvVXNlID0gMTsKICAgICAKKyAgICBjcHVzVG9V
c2UgPSAxOworICAgIAogICAgIFNFVChudW1iZXJPZkdDTWFya2VycywgY3B1c1RvVXNlKTsKIAog
ICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29v
biA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxMDYx
NDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDYgKzM3LDEwIEBAIGV4dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25G
b3JDb25zdHIKIAogZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOyAvLyBEZXB0
aCBvZiBpbmxpbmUgc3RhY2ssIHNvIDEgPSBubyBpbmxpbmluZywgMiA9IG9uZSBsZXZlbCwgZXRj
LgogCitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1V
cDsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1l
U29vbjsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisK
IGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJt
VXA7CiBleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVy
TG9uZ1dhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRP
cHRpbWl6ZUFueXRpbWVTb29uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gMTA2MTQ0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBKU0dsb2Jh
bE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9yOwogICAgIGNsYXNzIFNsb3RWaXNp
dG9yOwogICAgIApAQCAtOTEsNiArOTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAog
ICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNW
aXNpdENoaWxkcmVuOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMDYxNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAog
CiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURh
dGE7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CkBAIC0xOTYsNiArMTk3LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBz
X2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJl
KEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0
IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2Jh
bERhdGEmKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVy
ZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVD
aGFpbi5oCShyZXZpc2lvbiAxMDYxNDQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNs
YXNzIFN0cnVjdHVyZTsKIAogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluIDogcHVibGljIEpTQ2Vs
bCB7CkBAIC03NCw2ICs3NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBw
cml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAg
ICAgICAKICAgICAgICAgU3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7
CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIE93bkFycmF5
UHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAxMDYxNDQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyMCw2ICs5MjAsMTgg
QEAKICNkZWZpbmUgRU5BQkxFX0pJVCAxCiAjZW5kaWYKIAorLyogT24gc29tZSBvZiB0aGUgcGxh
dGZvcm1zIHdoZXJlIHdlIGhhdmUgYSBKSVQsIHdlIHdhbnQgdG8gYWxzbyBoYXZlIHRoZSAKKyAg
IGxvdy1sZXZlbCBpbnRlcnByZXRlci4gKi8KKyNpZiAhZGVmaW5lZChFTkFCTEVfTExJTlQpICYm
IEVOQUJMRShKSVQpICYmIFBMQVRGT1JNKE1BQykgJiYgVVNFKEpTVkFMVUUzMl82NCkKKyNkZWZp
bmUgRU5BQkxFX0xMSU5UIDEKKyNlbmRpZgorCisvKiBJZiB3ZSBoYXZlIExMSW50IGVuYWJsZWQg
YW5kIHRoZSBKSVQgZW5hYmxlZCwgd2UgYWxzbyBlbmFibGUgT1NSaW5nIGZyb20KKyAgIExMSW50
IHRvIHRoZSBKSVQuICovCisjaWYgIWRlZmluZWQoRU5BQkxFX0xMSU5UX09TUl9UT19KSVQpICYm
IEVOQUJMRShKSVQpICYmIEVOQUJMRShMTElOVCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UX09TUl9U
T19KSVQgMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfREZHX0pJVCkgJiYgRU5BQkxF
KEpJVCkKIC8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBYODYgYW5kIFg4Nl82NC4gIE9ubHkgdGVz
dGVkIG9uIE1hYyBhbmQgR05VL0xpbnV4LiAqLwogI2lmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0
KSkgJiYgKFBMQVRGT1JNKE1BQykgfHwgT1MoTElOVVgpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCShyZXZpc2lvbiAxMDYxNDQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC04Niw2ICs4Niw4IEBAIHB1YmxpYzoKIAogICAgIGl0ZXJhdG9yIGJlZ2luKCk7
CiAgICAgaXRlcmF0b3IgZW5kKCk7CisgICAgCisgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4g
YmVnaW4oKSA9PSBlbmQoKTsgfQogCiBwcml2YXRlOgogICAgIFJhd05vZGUgbV9oZWFkU2VudGlu
ZWw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJ
KHJldmlzaW9uIDEwNjE0NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJp
bmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgX19DRlN0cmluZyAqIENGU3RyaQogLy8gTGFuZGluZyB0aGUgZmlsZSBtb3ZlcyBpbiBv
bmUgcGF0Y2gsIHdpbGwgZm9sbG93IG9uIHdpdGggcGF0Y2hlcyB0byBjaGFuZ2UgdGhlIG5hbWVz
cGFjZXMuCiBuYW1lc3BhY2UgSlNDIHsKIHN0cnVjdCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5zbGF0
b3I7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4g
c3RydWN0IElkZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjsKIHN0cnVjdCBJZGVudGlmaWVy
TENoYXJGcm9tVUNoYXJUcmFuc2xhdG9yOwogfQpAQCAtNzIsNyArNzMsOCBAQCBjbGFzcyBTdHJp
bmdJbXBsIHsKICAgICBmcmllbmQgc3RydWN0IFdURjo6U3Vic3RyaW5nVHJhbnNsYXRvcjsKICAg
ICBmcmllbmQgc3RydWN0IFdURjo6VUNoYXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBj
bGFzcyBBdG9taWNTdHJpbmdJbXBsOwotCisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgIAogcHJpdmF0ZToKICAgICBlbnVtIEJ1ZmZlck93bmVyc2hpcCB7
CiAgICAgICAgIEJ1ZmZlckludGVybmFsLApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MTQ0
KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTItMDEtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAg
ICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDaGFuZ2VkIEVGTCdzIGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9y
eSBpbiBKYXZhU2NyaXB0Q29yZS4KKyAgICAgICAgCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNh
dXNlIG5vIGJlaGF2aW9yIGNoYW5nZWQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwog
MjAxMi0wMS0yNyAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgU3VwcG9ydCB0aGUgW1N1cHBsZW1lbnRhbF0gSURMIGZvciBjb25zdGFudHMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDYxNDQpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsNyBAQCBTRVQoV2ViQ29yZV9J
TkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZWJ1Z2dlciIK
ICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyIgogICAgICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQiCiAgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElS
fS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUiCkluZGV4OiBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkocmV2aXNpb24gMTA2MTQ0KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGlu
Y2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3JpcHRDb3JlLgorICAgICAgICAKKyAgICAg
ICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxMi0wMS0xMSAgSmFja3kgSmlhbmcgIDx6aGFqaWFu
Z0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBBU1NFUlQgZmFpbHVyZSBpbiBCYWNr
aW5nU3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNvbnRlbnRzKCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DTWFrZUxpc3Rz
LnR4dAkocmV2aXNpb24gMTA2MTQ0KQorKysgU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBTRVQoV2ViS2l0X0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9q
aXQiCisgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L3BhcnNlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgog
ICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZSIKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9lZmwvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNjE0NCkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIs
NyBAQCBTRVQoRHVtcFJlbmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9oZWFwCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVy
CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdAorICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9sbGludAogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lCiAgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L3d0Zgo=
</data>
<flag name="commit-queue"
          id="125606"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124372</attachid>
            <date>2012-01-27 14:42:19 -0800</date>
            <delta_ts>2012-01-27 14:50:37 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_57.diff</filename>
            <type>text/plain</type>
            <size>446522</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MTUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5OSBA
QAorMjAxMi0wMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi52c3Byb3BzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDog
QWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Omlz
U2V0KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAg
IChDYWxsTGlua1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmVzY2FwZVF1b3Rlcyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWlu
Z0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RXZh
bENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6
amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1w
bCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dXNlc09wY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAg
KCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0Q29tcGls
ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
aWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxp
a2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlr
ZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1
ZW50RXhpdFNpdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29v
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50
RXhlY3V0ZUNvdW50ZXIpOgorICAgICAgICAoUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChF
dmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBi
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6
CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OkdldEJ5SWRTdGF0dXMpOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjp3YXNTZWVuSW5KSVQpOgorICAgICAgICAoR2V0QnlJZFN0YXR1
cyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgIChJbnN0cnVj
dGlvbik6CisgICAgICAgICgpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZv
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0lu
Zm86OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKExMSW50Q2FsbExpbmtJbmZvKToKKyAg
ICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6OkxM
SW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAg
IChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAoUHV0QnlJZFN0YXR1cyk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0
UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaCk6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0
UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRD
b21waWxlci5jcHA6CisgICAgICAgICgpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKCk6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChBbGxvY2F0aW9uU3BhY2UpOgorICAgICAgICAoKToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAo
SGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAoSlNDOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFt
ZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJy
ZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZy
YW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmls
ZSk6CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKToKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAg
KiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpJVENvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2Rl
Ojppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAg
ICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToK
KyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93
KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RV
Ql9GVU5DVElPTik6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJ
VC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1v
bi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChEYXRhKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50
RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRF
dmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2lu
dCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBv
aW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxl
cik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9u
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpM
TEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQv
TExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChK
U0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmVudHJ5T1NSKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJlc29sdmVHbG9iYWwpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9z
dENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRk
ZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludE9m
ZnNldHNFeHRyYWN0b3IpOgorICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDog
QWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3Ry
dWN0RW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZv
ckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpMTEludDo6ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20u
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRy
YWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAg
ICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFz
bS9zZWxmX2hhc2gucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2V0dGluZ3MucmI6
IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBBZGRlZC4KKyAgICAg
ICAgKiBvZmZsaW5lYXNtL3g4Ni5yYjogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKCk6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9u
U2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAgKENvbW1vblNsb3dQYXRocyk6Cisg
ICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6b3BJbnN0YW5jZU9mU2xvdyk6CisgICAgICAg
ICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6amV0dGlzb25Db2RlQmxv
Y2spOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6CisgICAgICAg
IChKU0MpOgorICAgICAgICAoSlNDOjpzYW1wbGluZ0Rlc2NyaXB0aW9uKToKKyAgICAgICAgKEpT
Qzo6RXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OlByb2dy
YW1FeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFi
bGU6OmNvbXBpbGVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6
YmFzZWxpbmVDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6
OmppdENvbXBpbGVGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpq
aXRDb21waWxlRm9yQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
Ojpjb21waWxlRm9yQ2FsbEludGVybmFsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvRXhl
Y3V0YWJsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKCk6CisgICAgICAgIChFdmFsRXhl
Y3V0YWJsZSk6CisgICAgICAgIChQcm9ncmFtRXhlY3V0YWJsZSk6CisgICAgICAgIChGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBp
bGVGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnByZXBhcmVGb3JFeGVjdXRpb24pOgorICAgICAg
ICAoSlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBY3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dGVhck9mZik6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNB
cnJheSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoSlNDZWxsKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24u
aDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0Z1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9i
YWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTR2xvYmFsRGF0YSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6
c2NyYXRjaEJ1ZmZlckZvclNpemUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgICog
cnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKCk6CisgICAgICAg
IChKU09iamVjdCk6CisgICAgICAgIChKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoSlNTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBl
SW5mby5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFR5cGVJbmZvKToKKyAgICAgICAgKiBy
dW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SlNWYWx1
ZTo6ZGVzY3JpcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5oOgorICAgICAgICAo
SlNWYWx1ZSk6CisgICAgICAgICgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVj
dC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTVmFyaWFibGVPYmplY3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChPcHRpb25zKToKKyAgICAgICAgKEpT
Qzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
cy5oOgorICAgICAgICAoT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoU2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoU3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAqIHd0Zi9JbmxpbmVBU00uaDoKKyAgICAg
ICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg6
CisgICAgICAgIChTZW50aW5lbExpbmtlZExpc3QpOgorICAgICAgICAoV1RGOjpTZW50aW5lbExp
bmtlZExpc3Q6OmlzRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChTdHJpbmdJbXBsKToKKyAgICAgICAgKCk6CisKIDIwMTIt
MDEtMjcgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAKICAgICAgICAgW1dU
Rl0gV1RGU3RyaW5nLmggaGFzIHNvbWUgZXh0cmEgSlNfRVhQT1JUX1BSSVZBVEVzCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDYxNTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDYg
KzExLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
aW50ZXJwcmV0ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAgIiR7SkFW
QVNDUklQVENPUkVfRElSfS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3BhcnNl
ciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vcnVudGltZSIKQEAgLTk0LDYgKzk1LDcgQEAgU0VUKEphdmFTY3JpcHRDb3Jl
X1NPVVJDRVMKICAgICBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwCiAKICAgICBqaXQvRXhl
Y3V0YWJsZUFsbG9jYXRvci5jcHAKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKICAg
ICBqaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljLmNwcAog
ICAgIGppdC9KSVRDYWxsMzJfNjQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmFtCShyZXZpc2lvbiAxMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgamF2YXNjcmlwdGNvcmVf
Y3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCisJLUkkKHNyY2RpcikvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIgXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDYxNTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5
KQpAQCAtODEsNiArODEsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rU3RhdHVzLmNwcCBcCkBAIC0xMDIsNiArMTAzLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTGluZUluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZENhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9NZXRob2RDYWxsTGlua0luZm8uaCBcCkBAIC0yNzcsNiArMjc5LDggQEAgamF2YXNjcmlwdGNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Db21wYWN0SklUQ29k
ZU1hcC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3Iu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIFwKQEAgLTMwMCw2ICszMDQsNyBAQCBqYXZhc2NyaXB0
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVk
VGh1bmtKSVQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIFwKKwlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vcy13aW4zMi9zdGRib29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13
aW4zMi9zdGRpbnQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVy
LmggXApAQCAtMzUwLDYgKzM1NSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2xhc3NJbmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVT
cGVjaWFsaXphdGlvbktpbmQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uSWRlbnRpZmllcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25JZGVudGlmaWVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaCBcCkBAIC0zNzgsNiArMzg0LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHJldmlzaW9uIDEwNjE1MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIw
LDcgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9kZWJ1Z2dlciBcCiAgICAg
JCRTT1VSQ0VfRElSL2ludGVycHJldGVyIFwKICAgICAkJFNPVVJDRV9ESVIvaml0IFwKKyAgICAk
JFNPVVJDRV9ESVIvbGxpbnQgXAogICAgICQkU09VUkNFX0RJUi9wYXJzZXIgXAogICAgICQkU09V
UkNFX0RJUi9wcm9maWxlciBcCiAgICAgJCRTT1VSQ0VfRElSL3J1bnRpbWUgXApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcgQEAgU09V
UkNFUyArPSBcCiAgICAgaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCiAgICAgaml0L0V4
ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgXAogICAgIGppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yLmNwcCBcCisgICAgaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKICAgICBqaXQv
SklUQXJpdGhtZXRpYy5jcHAgXAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwKICAg
ICBqaXQvSklUQ2FsbC5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwNjE1MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMwLDYgKzE3MzAsMTAg
QEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5c
aml0XEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxl
CiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcSklULmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+
CkBAIC0xODE1LDYgKzE4MTksMTQgQEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0
ZXIKKwkJCU5hbWU9ImxsaW50IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XC4uXGxsaW50XExMSW50RGF0YS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJ
CTxGaWx0ZXIKIAkJCU5hbWU9ImludGVycHJldGVyIgogCQkJPgogCQkJPEZpbGUKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlQ29tbW9uLnZzcHJvcHMJKHJldmlzaW9uIDEwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVD
b21tb24udnNwcm9wcwkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJPFRvb2wK
IAkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmll
cz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJp
dmVkU291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9i
eXRlY29tcGlsZXIvOy4uLy4uL2RmZy87Li4vLi4vaml0LzsuLi8uLi9ydW50aW1lLzsuLi8uLi9i
eXRlY29kZS87Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJvZmlsZXI7Li4v
Li4vYXNzZW1ibGVyLzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7JChXZWJLaXRM
aWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGlu
Y2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVk
ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0
Q29yZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRl
JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7
IgorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcb2JqXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXCZxdW90OzsuLi8uLi87
Li4vLi4vQVBJLzsuLi8uLi9wYXJzZXIvOy4uLy4uL2J5dGVjb21waWxlci87Li4vLi4vZGZnLzsu
Li8uLi9qaXQvOy4uLy4uL2xsaW50LzsuLi8uLi9ydW50aW1lLzsuLi8uLi9ieXRlY29kZS87Li4v
Li4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJvZmlsZXI7Li4vLi4vYXNzZW1ibGVy
LzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIp
XGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0
ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZSZxdW90OzsmcXVv
dDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90Ozsm
cXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90
OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7IgogCQlQcmVwcm9j
ZXNzb3JEZWZpbml0aW9ucz0iX19TVERfQyIKIAkJRm9yY2VkSW5jbHVkZUZpbGVzPSJJQ1VWZXJz
aW9uLmgiCiAJLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5
LWZpbGVzLmNtZAkocmV2aXNpb24gMTA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZpbGVzLmNtZAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBmb3IgJSVkIGluICgKICAgICBkZWJ1Z2dlcgogICAg
IGludGVycHJldGVyCiAgICAgaml0CisgICAgbGxpbnQKICAgICBwYXJzZXIKICAgICBwcm9maWxl
cgogICAgIHJ1bnRpbWUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAxMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE1IEBACiAJb2Jq
ZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0
NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwQUMx
NEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVn
YXRlVGFyZ2V0ICJMTEludCBPZmZzZXRzIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBG
NDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCisJ
CQkpOworCQkJbmFtZSA9ICJMTEludCBPZmZzZXRzIjsKKwkJCXByb2R1Y3ROYW1lID0gIkRlcml2
ZWQgU291cmNlcyI7CisJCX07CiAJCTY1RkIzRjY2MDlEMTFFOTEwMEY0OURFQiAvKiBEZXJpdmVk
IFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CiAJCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gNjVGQjNGNzcwOUQxMUVCRDAwRjQ5REVCIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJEZXJpdmVkIFNvdXJjZXMiICov
OwpAQCAtMTQsNiArMjMsOSBAQAogCQkJCTY1RkIzRjY1MDlEMTFFOTEwMEY0OURFQiAvKiBHZW5l
cmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJNUQzNURFRTEwQzdDMTQwQjAwODY0OEIyIC8q
IEdlbmVyYXRlIERUcmFjZSBoZWFkZXIgKi8sCiAJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAor
CQkJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAor
CQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJCXByb2R1Y3ROYW1lID0gIkRl
cml2ZWQgU291cmNlcyI7CiAJCX07CkBAIC00OCw2ICs2MCwxMCBAQAogCQkwQkFDOTRBMDEzMzg3
Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVC
IC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkNEODM1NzE0ODU4NDUyMDBFQTIwMDMgLyogVGVt
cG9yYXJ5Q2hhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJGMjhBMjkxMUEz
M0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1p
dHMuY3BwICovOyB9OworCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRyeXBv
aW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi87IH07CisJ
CTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NjE0QkNGNDVBMDA4
ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRo
dW5rcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovOyB9OworCQkwRjBC
ODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBM
TEludFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTUxNEJDRjUwNDAwODg1
QjRGIC8qIENvZGVUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBODE0QkNG
NTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVz
c2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTgsOSAr
NzQsMTMgQEAKIAkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgz
QjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4
NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29s
dmVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2Rl
T2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZz
ZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEZDNDU4MTRCRDE1RjEwMEI4
MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25T
bG93UGF0aHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE2RDcyNjE0MkMzOUMw
MDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3Bw
ICovOyB9OwogCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJpdmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI2NjE0QkU1RjVF
MDBBREM2NEIgLyogSklURHJpdmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlvbkhh
cm5lc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0QxNEJFNzI3QTAw
QURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVu
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyNDJEQTcxM0YzQjFF
ODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBX
ZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NkYxNDczOEYzMTAwMTIxRTRGIC8qIERGR0NvZGVCbG9j
a3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1
NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NzAxNDczOEYzNTAwMTIxRTRG
IC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3Bw
ICovOyB9OwpAQCAtNzEsNiArOTEsMTkgQEAKIAkJMEY0MzE3MzgxNDZCQUM2OTAwN0UzODkwIC8q
IExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4MDgy
MTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklU
RXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDdGMTRCQTU3
MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTMxNEJBN0Y4
RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhj
ZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUYxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdT
ID0gIi1Xbm8tdW51c2VkLXBhcmFtZXRlciI7IH07IH07CisJCTBGNDY4MEE1MTRCQTdGOEQwMEJG
RTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBB
NzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJG
RTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovOyB9OworCQkwRjQ2ODBBODE0QkE3
RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJ
bnRDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENCMTRCQkIxNzIwMEJG
RTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9m
ZmxpbmVBc21Db25maWcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRl
ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2
ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi87IH07CisJ
CTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDODE0QkJCMTY5
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBM
TEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi87IH07CisJCTBG
NDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBM
TEludERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMDE0
QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi87IH07CisJCTBGNDY4
MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMTE0QkJDNUY4MDBCRkUy
NzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0cmFj
dFBDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLzsgfTsKIAkJMEY1NUYw
RjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0
cmFjdFBDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYwOENFMTQ2
Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM4NSw3ICs0MTgsNyBAQAogCQk4
NkI5OUFFMzExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI5OUFFMTExN0U1NzgxMDBERjVBOTAg
LyogU3RyaW5nQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJODZCQjA5QzAxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkUxMzhF
MzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwICovOyB9OwogCQk4NkJCMDlDMTEzOEUzODFC
MDA1NjcwMkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZCQjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCAq
LzsgfTsKLQkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEy
ODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgfTsKKwkJODZDMzZFRUEwRUUxMjg5
RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3Nl
bWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REQxMUEyMTNF
RTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCAqLzsgfTsKIAkJODZDNTY4RTExMUEy
MTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1h
Y3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwogCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyog
TUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCAqLzsgfTsK
QEAgLTc1Miw2ICs3ODUsMjAgQEAKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLworCQkwRjQ2ODBCMTE0QkE4
MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJY
Q29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4
RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJl
bW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyOworCQkJcmVtb3Rl
SW5mbyA9ICJMTEludCBPZmZzZXRzIjsKKwkJfTsKKwkJMEY0NjgwQjMxNEJBODIxNDAwQkZFMjcy
IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0
ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAv
KiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJ
RFN0cmluZyA9IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSBKU0NM
TEludE9mZnNldHNFeHRyYWN0b3I7CisJCX07CiAJCTE0MTIxNEJFMEE0OTE5MEUwMDQ4MDI1NSAv
KiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVt
UHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyog
UHJvamVjdCBvYmplY3QgKi87CkBAIC03OTcsNiArODQ0LDE1IEBACiAvKiBFbmQgUEJYQ29udGFp
bmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCisJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8g
PSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsKKwkJCWRz
dFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCX07CiAJCTVEQkIxNTExMTMxRDBCMTMwMDU2
QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0gewogCQkJaXNhID0gUEJYQ29weUZpbGVz
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOwpAQCAtODM3LDYgKzg5MywxMCBA
QAogCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmll
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRSZXN0cmljdGlvblZl
cmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCQ0Q4MzU0MTQ4NTg0MTIw
MEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gVGVtcG9yYXJ5Q2hhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBC
RjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpemVMaW1pdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEVudHJ5cG9pbnRz
LmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEVudHJ5cG9pbnRzLmg7
IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludFRodW5rcy5jcHA7IHBhdGggPSBs
bGludC9MTEludFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4
Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBMTEludFRodW5rcy5oOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3MuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8q
IENvZGVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVUeXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAv
KiBIYW5kbGVySW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5kbGVy
SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBQTE0QkNGNUI5MDA4
ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFeHByZXNzaW9uUmFuZ2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC04NDcsOSArOTA3LDEzIEBACiAJCTBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRo
b2RDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0aG9k
Q2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I2MTRC
Q0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHbG9iYWxSZXNvbHZlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0
ZWNvZGVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFJldHVy
bk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50Q2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93
UGF0aHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uU2xvd1BhdGhz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTZENzI0MTQyQzM5QTIwMENGNzg0
QSAvKiBCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
Qml0VmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyMUMyNjYxNEJF
NUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKSVREcml2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyNzkx
NEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9u
SGFybmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRpb25IYXJu
ZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdFMTRCRUFBODAwMEFE
QzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEJ5dGVjb2RlQ29udmVudGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYg
LyogREZHQ29kZUJsb2Nrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBERkdDb2RlQmxvY2tzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1
NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtODYwLDYgKzkyNCwyMCBAQAogCQkwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlz
dGFibGVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpc3RhYmxl
SGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA3RjE0QkE1NzI3
MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKSVRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRz
RXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUg
PSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGgg
PSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CisJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFeGNlcHRpb25zLmNw
cDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFeGNlcHRpb25zLmg7IHBhdGgg
PSBsbGludC9MTEludEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEhlbHBlcnMuY3BwOyBwYXRoID0gbGxpbnQv
TExJbnRIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQTAx
NEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBMTEludEhlbHBlcnMuaDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVycy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHBhdGggPSBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNTE0
QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTExJbnRDb21tb24uaDsgcGF0aCA9IGxsaW50L0xMSW50Q29tbW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTElu
dE9mZmxpbmVBc21Db25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmg7IHBhdGggPSBsbGludC9MTEludE9mZmxpbmVBc21Db25maWcu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcy
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHBhdGggPSBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzgxNEJC
QjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5oOyBwYXRoID0gbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDRTE0
QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IExMSW50RGF0YS5jcHA7IHBhdGggPSBsbGludC9MTEludERhdGEuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyog
TExJbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RGF0YS5o
OyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIg
LyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBIb3N0Q2FsbFJldHVyblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
NTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFic3RyYWN0UEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdFBDLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNUYwOENDMTQ2QkU2MDIwMDA0NzJBOSAvKiBERkdCeXRlQ29kZUNh
Y2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0J5dGVDb2RlQ2FjaGUu
aDsgcGF0aCA9IGRmZy9ERkdCeXRlQ29kZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNTc5LDYgKzE2NTcsMTMgQEAKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkw
RjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBC
WEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
KwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQl9OwogCQkxNDEyMTExRTBBNDg3OTNDMDA0ODAyNTUgLyogRnJhbWV3b3JrcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKQEAgLTE2MzcsNiArMTcyMiw3IEBACiAJCQkJMTQxMjExMjAwQTQ4
NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYwQTNFOEY5MDAwQkFGNTlD
IC8qIHRlc3RhcGkgKi8sCiAJCQkJNjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdF
eHAgKi8sCisJCQkJMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4
dHJhY3RvciAqLywKIAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMTY2Nyw2ICsxNzUzLDcgQEAKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4
NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBG
MDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyog
Y29uZmlnLmggKi8sCisJCQkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovLAog
CQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQx
MkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2
ODEgLyogYnl0ZWNvZGUgKi8sCkBAIC0xNzA1LDYgKzE3OTIsMjggQEAKIAkJCXRhYldpZHRoID0g
NDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8q
IGxsaW50ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkw
RjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8sCisJCQkJ
MEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLywKKwkJCQkw
RjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovLAorCQkJCTBGMEI4
Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovLAorCQkJCTBGNDY4MENFMTRC
QkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovLAorCQkJCTBGNDY4MENGMTRCQkIzRDEw
MEJGRTI3MiAvKiBMTEludERhdGEuaCAqLywKKwkJCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIg
LyogTExJbnRDb21tb24uaCAqLywKKwkJCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmggKi8sCisJCQkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8q
IExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovLAorCQkJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3
MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi8sCisJCQkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8sCisJCQkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovLAorCQkJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludEhlbHBlcnMuY3BwICovLAorCQkJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludEhlbHBlcnMuaCAqLywKKwkJCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gbGxpbnQ7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAyNTUg
LyogdGVzdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAt
MTczOSw2ICsxODQ4LDggQEAKIAkJMTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY0NjgwRDAxNEJC
QzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovLAorCQkJCTBGNDY4MEQx
MTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8sCiAJCQkJMEY0Njgw
N0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovLAogCQkJCTBGNDY4MDgw
MTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEZEODJFMzcxNDFB
QjE0MjAwMTc5Qzk0IC8qIENvbXBhY3RKSVRDb2RlTWFwLmggKi8sCkBAIC0yMTY2LDYgKzIyNzcs
OCBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYyMUMyNzkxNEJFNzI3MzAwQURD
NjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLywKKwkJCQkwRjIxQzI3QTE0QkU3Mjcz
MDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovLAogCQkJCTBGMTVGMTVEMTRCN0E3M0Ew
MDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBC
OUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8q
IEFyZ0xpc3QuaCAqLywKQEAgLTI1MjUsNiArMjYzOCw4IEBACiAJCTk2OUEwNzhGMEVEMUQzQUUw
MEYxRjY4MSAvKiBieXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlv
bnMuaCAqLywKKwkJCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0lu
Zm8uaCAqLywKIAkJCQkwRjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMu
Y3BwICovLAogCQkJCTBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5o
ICovLAogCQkJCTBGOTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAq
LywKQEAgLTMwNzUsNyArMzE5MCwxNiBAQAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCNDMxMkRCOEE4MTAwQTlG
RTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1RjE0
QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJCQkw
RjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29t
bW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDRDE0QkJCMTdE
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0
NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRz
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRU
aHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBD
b2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8q
IEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVC
NEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDg0LDcgKzMy
MDgsMTEgQEAKIAkJCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJ
bmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyogR2xv
YmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4
NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJpdmVyLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhlY3V0aW9u
SGFybmVzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8q
IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdGMTRC
RUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjdCMjk0QTE0QzNDRDI5MDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QzE0QzNDRDQzMDA3QzNEQjEgLyogREZHQnl0ZUNv
ZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTAzLDYgKzMyMzEsMjQgQEAKIC8qIEVuZCBQ
QlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdl
dCBzZWN0aW9uICovCisJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNl
dHNFeHRyYWN0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0
b3IiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcy
IC8qIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1ld29y
a3MgKi8sCisJCQkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLywKKwkJ
CSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkw
RjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7
CisJCQluYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdE5hbWUgPSBK
U0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMEY0NjgwOEYx
NEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXByb2R1
Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CiAJCTE0MTIxMTFG
MEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovID0gewogCQkJaXNhID0gUEJYTmF0aXZlVGFy
Z2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1
NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRv
bSIgKi87CkBAIC0zMjI5LDExICszMzc1LDI5IEBACiAJCQkJMTRCRDU5QkUwQTNFOEY5MDAwQkFG
NTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJOTMyRjVCREEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAq
LywKIAkJCQk2NTExMjJGNzE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkw
RjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAor
CQkJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovLAogCQkJKTsK
IAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU2hlbGxT
Y3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8q
IEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9
ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL2xsaW50L0xvd0xl
dmVsQXNzZW1ibGVyLmFzbSIsCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNv
dXJjZXMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9M
TEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJ
CQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9m
ZnNldHMvXCJcblxuL3Vzci9iaW4vZW52IHJ1YnkgXCIke1NSQ1JPT1R9L29mZmxpbmVhc20vZ2Vu
ZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYlwiIFwiJHtTUkNST09UfS9sbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmFzbVwiIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9MTElu
dERlc2lyZWRPZmZzZXRzLmhcIlxuIjsKKwkJfTsKIAkJMzcxM0YwMTQxNDI5MDUyNDAwMzYzODdG
IC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzICovID0g
ewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNr
ID0gMjE0NzQ4MzY0NzsKQEAgLTMzMzksNyArMzUwMyw3IEBACiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwot
CQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNfRElS
fS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7U1JD
Uk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2YVNjcmlw
dENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJcblxubWFrZSAtLW5v
LWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlXCIg
LWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNwdWBcbiI7CisJCQlzaGVsbFNjcmlwdCA9ICJt
a2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZS9kb2NzXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlXCJcblxuL2Jpbi9sbiAtc2ZoIFwiJHtTUkNST09UfVwiIEphdmFTY3JpcHRD
b3JlXG5leHBvcnQgSmF2YVNjcmlwdENvcmU9XCJKYXZhU2NyaXB0Q29yZVwiXG5leHBvcnQgQlVJ
TFRfUFJPRFVDVFNfRElSPVwiLi4vLi5cIlxuXG5tYWtlIC0tbm8tYnVpbHRpbi1ydWxlcyAtZiBc
IkphdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2VcIiAtaiBgL3Vzci9zYmluL3N5c2N0
bCAtbiBody5uY3B1YFxuXG4vdXNyL2Jpbi9lbnYgcnVieSBKYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FzbS5yYiBKYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAk
e0JVSUxUX1BST0RVQ1RTX0RJUn0vSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIExMSW50QXNzZW1i
bHkuaFxuIjsKIAkJfTsKIAkJOTMxOTU4NkIwOUQ5RjkxQTAwQTU2RkQ0IC8qIENoZWNrIEZvciBH
bG9iYWwgSW5pdGlhbGl6ZXJzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBo
YXNlOwpAQCAtMzM3NCw2ICszNTM4LDE0IEBACiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAq
LworCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9
IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
KwkJCWZpbGVzID0gKAorCQkJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFEMEE0ODc5M0MwMDQ4MDI1
NSAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzYzMSw3ICszODAzLDE0IEBACiAJCQkJ
ODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRI
ZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAv
KiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwODMxNEJBNTcz
MTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0Njgw
Q0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5W
YWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyog
TExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QzE0QkNGNDYz
MDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjAx
NEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjBCODNCNDE0QkNGODYwMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUY2OUU4NkMzMTRDNkU1NTEwMDJDMkM2MiAvKiBOdW1iZXJPZkNvcmVzLmNw
cCBpbiBTb3VyY2VzICovLApAQCAtMzY1NCw2ICszODMzLDE2IEBACiAvKiBFbmQgUEJYU291cmNl
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5IHNl
Y3Rpb24gKi8KKwkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMEY0
NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi87CisJCQl0YXJnZXRQcm94
eSA9IDBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87
CisJCX07CisJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4
MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQl0
YXJnZXRQcm94eSA9IDBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVt
UHJveHkgKi87CisJCX07CiAJCTE0MTIxNEJGMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhUYXJnZXRE
ZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJCXRhcmdl
dCA9IDE0MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovOwpAQCAtMzY4Nyw2ICsz
ODc2LDE0OCBAQAogLyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTBGNDY4MDk2MTRCQTdFNUUw
MEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsK
KwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0Vf
U1RSSVAgPSBOTzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdD
Q19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0g
WUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNT
T1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIs
CisJCQkJKTsKKwkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5POworCQkJCUdDQ19W
RVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FS
Tl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJ
TkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlF
UzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFS
Q0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRf
UFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhT
KSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCU9O
TFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUp
IjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9
ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJD
SF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwOTcxNEJB
N0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhT
ID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZ
X1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2Fy
Zi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJ
R0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20u
YXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJ
VF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVT
ID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19X
QVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNo
PSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIp
L0xMSW50T2Zmc2V0cyQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NY
X0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRf
TkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BB
VEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJf
U0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4
MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9V
U0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsK
KwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1B
VCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251
OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJ
T04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0
X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19Q
Uk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOwor
CQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9Q
QVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9E
VUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwK
KwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVD
VF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVT
RVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJ
bnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9m
aWxpbmc7CisJCX07CisJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJD
SFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlE
RUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19M
QU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05T
ID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5n
LjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdD
Q19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9V
VF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7
CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWlj
dSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChI
RUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJH
RVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RL
Uk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChC
VUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsK
KwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUQxNEJBN0ZEOTAw
QkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMg
Y29weSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODBBRTE0QkE3RkQ5
MDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3Vy
Y2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODBBRjE0
QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJp
dmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJ
MEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9O
QU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlv
bjsKKwkJfTsKIAkJMTQxMjExM0EwQTQ4Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovID0gewogCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewpAQCAtMzky
OCw2ICs0MjU5LDI4IEBACiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOUExNEJB
N0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFy
Z2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovID0geworCQkJaXNhID0gWENDb25maWd1
cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwOTYxNEJB
N0U1RTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAv
KiBSZWxlYXNlICovLAorCQkJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcg
Ki8sCisJCQkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkp
OworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUMxNEJBN0ZEOTAwQkZF
MjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJM
TEludCBPZmZzZXRzIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQli
dWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBE
ZWJ1ZyAqLywKKwkJCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJ
CQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MEIw
MTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25m
aWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFBy
b2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi8gPSB7CiAJCQlp
c2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShyZXZp
c2lvbiAxMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2RlZmluZSBHTE9CQUxfVEhV
TktfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0xKSkK
ICNkZWZpbmUgUkVHRVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nh
c3Q8aW50cHRyX3Q+KC0yKSkKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+CisjaW5jbHVk
ZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNv
ZGVDb252ZW50aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgQnl0ZWNvZGVDb252ZW50aW9uc19oCisjZGVmaW5lIEJ5dGVjb2RlQ29udmVu
dGlvbnNfaAorCisvLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9u
cyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6CisvLyAg
ICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxs
RnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVy
RmlsZS5oLgorLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMg
ZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVz
IHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgorLy8gICAgICAweDQwMDAwMDAwLTB4N0ZG
RkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBp
biB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgorc3RhdGljIGNvbnN0IGludCBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7CisKKyNlbmRpZiAvLyBCeXRl
Y29kZUNvbnZlbnRpb25zX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDYxNTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yNywxNyArMjcsNDAgQEAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJv
bUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkK
K3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5
dGVjb2RlSW5kZXgpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJ
bmRleDsKKyAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaW5zdHJ1Y3Rpb25b
NF0udS5jYWxsTGlua0luZm87CisgICAgCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNhbGxM
aW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCksIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJu
IENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKKyNlbmRpZgorfQorCiBDYWxsTGlua1N0YXR1cyBD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwog
ICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFC
TEUoVkFMVUVfUFJPRklMRVIpCi0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKAotICAgICAgICBw
cm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxs
ZWUuZ2V0KCksCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKGJ5dGVj
b2RlSW5kZXgpKTsKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mQ2FsbExpbmtJbmZv
cygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRl
Y29kZUluZGV4KTsKKyAgICAKKyAgICBpZiAocHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nh
c2UoYnl0ZWNvZGVJbmRleCkpCisgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygwLCB0cnVl
KTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBwcm9maWxlZEJsb2NrLT5nZXRDYWxs
TGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CisgICAgaWYgKCF0
YXJnZXQpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5
dGVjb2RlSW5kZXgpOworICAgIAorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQsIGZh
bHNlKTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKICNlbmRp
ZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmgJKHJldmlzaW9uIDEwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNSArNDcsMTcgQEAgcHVi
bGljOgogICAgIAogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9j
ayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25z
dCB7IHJldHVybiAhIW1fY2FsbFRhcmdldDsgfQorICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJl
dHVybiAhIW1fY2FsbFRhcmdldCB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCi0gICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsVGFyZ2V0OyB9CisgICAgYm9v
bCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQogICAgIAogICAgIGJvb2wg
Y291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9
CiAgICAgCiAgICAgSlNGdW5jdGlvbiogY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2Fs
bFRhcmdldDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29t
cHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAgICAK
ICAgICBKU0Z1bmN0aW9uKiBtX2NhbGxUYXJnZXQ7CiAgICAgYm9vbCBtX2NvdWxkVGFrZVNsb3dQ
YXRoOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCShyZXZpc2lvbiAxMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAj
aW5jbHVkZSA8c3RkaW8uaD4KQEAgLTU5LDggKzYwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiB1c2lu
ZyBuYW1lc3BhY2UgREZHOwogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJM
RShPUENPREVfU0FNUExJTkcpCi0KIHN0YXRpYyBVU3RyaW5nIGVzY2FwZVF1b3Rlcyhjb25zdCBV
U3RyaW5nJiBzdHIpCiB7CiAgICAgVVN0cmluZyByZXN1bHQgPSBzdHI7CkBAIC0zNTgsMTAgKzM1
NywxMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bjb2RlTGVu
Z3Roc1tleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtpXS51
Lm9wY29kZSldKQogICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7CiAKLSAgICBwcmludGYoIiVs
dSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNh
bGxlZSByZWdpc3RlcihzKVxuXG4iLAorICAgIHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rpb25zOyAl
bHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpOyAl
ZCB2YXJpYWJsZShzKVxuXG4iLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihp
bnN0cnVjdGlvbkNvdW50KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSksCi0gICAgICAgIHRoaXMs
IG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgICAgICB0aGlzLCBt
X251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX251bVZhcnMpOwogCiAgICAg
VmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4gPSBpbnN0cnVjdGlvbnMo
KS5iZWdpbigpOwogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGluc3RydWN0aW9ucygpLmVuZCgpOwpAQCAtODk4LDYgKzg5NywxNCBAQCB2b2lkIENvZGVCbG9j
azo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChl
eGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
InB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKKyAg
ICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlk
T3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAgICAg
IGJyZWFrOwpAQCAtMTI5MSw4ICsxMjk4LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0
YXRlKiBleGVjLCBjbwogICAgIH0KIH0KIAotI2VuZGlmIC8vICFkZWZpbmVkKE5ERUJVRykgfHwg
RU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNT
CiBzdGF0aWMgSGFzaFNldDxDb2RlQmxvY2sqPiBsaXZlQ29kZUJsb2NrU2V0OwogI2VuZGlmCkBA
IC0xNDU5LDYgKzE0NjQsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tU
YWcsCiB7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1QYXJhbWV0ZXJzKCkpOwogICAg
IG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogICAgIAogICAg
IGlmIChvdGhlci5tX3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nh
cnkoKTsKQEAgLTE1MDcsNiArMTUxMyw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4
ZWN1dGFibGUqIG8KICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIAogICAgIG9wdGltaXplQWZ0
ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogCiAjaWYgRFVNUF9DT0RFX0JMT0NL
X1NUQVRJU1RJQ1MKICAgICBsaXZlQ29kZUJsb2NrU2V0LmFkZCh0aGlzKTsKQEAgLTE1MjQsNyAr
MTUzMSwxMSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2lmIEVOQUJMRShWRVJCT1NFX1ZB
TFVFX1BST0ZJTEUpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNlbmRpZgotICAgIAorCisj
aWYgRU5BQkxFKExMSU5UKSAgICAKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVn
aW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xM
SW50Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogI2lm
IEVOQUJMRShKSVQpCiAgICAgLy8gV2UgbWF5IGJlIGRlc3Ryb3llZCBiZWZvcmUgYW55IENvZGVC
bG9ja3MgdGhhdCByZWZlciB0byB1cyBhcmUgZGVzdHJveWVkLgogICAgIC8vIENvbnNpZGVyIHRo
YXQgdHdvIENvZGVCbG9ja3MgYmVjb21lIHVucmVhY2hhYmxlIGF0IHRoZSBzYW1lIHRpbWUuIFRo
ZXJlCkBAIC0xNzM2LDggKzE3NDcsNTkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25k
aXRpb25hbGx5KAogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5saW5raW5n
ID0gZmFsc2U7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgCisj
aWYgRU5BQkxFKExMSU5UKQorICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFs
RGF0YS0+aW50ZXJwcmV0ZXI7CisgICAgLy8gaW50ZXJwcmV0ZXItPmVuYWJsZWQoKSByZXR1cm5z
IHRydWUgaWYgdGhlIG9sZCBDKysgaW50ZXJwcmV0ZXIgaXMgZW5hYmxlZC4gSWYgdGhhdCdzIGVu
YWJsZWQKKyAgICAvLyB0aGVuIHdlJ3JlIG5vdCB1c2luZyBMTEludC4KKyAgICBpZiAoIWludGVy
cHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAg
ICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW21f
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgc3dpdGNoIChpbnRl
cnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpKSB7CisgICAg
ICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
OgorICAgICAgICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUgfHwg
SGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0
XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzVd
LnUub3BlcmFuZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAgICAgIGlmIChIZWFwOjppc01h
cmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgICAg
ICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0
KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9u
WzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigpOwor
ICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmNsZWFyKCk7Cisg
ICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5jbGVhcigp
OworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlID0gaW50ZXJwcmV0
ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9n
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsK
KyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMo
KVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgQVNTRVJUKGlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3Bf
cmVzb2x2ZV9nbG9iYWwKKyAgICAgICAgICAgICAgICAgICB8fCBpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsX2R5
bmFtaWMpOworICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZSB8
fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQoKSkpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlvblszXS51
LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5vcGVy
YW5kID0gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9s
bGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChtX2xsaW50
Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpICYmICFIZWFwOjppc01hcmtlZChtX2xsaW50Q2Fs
bExpbmtJbmZvc1tpXS5jYWxsZWUuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcgTExJbnQg
Y2FsbCBmcm9tICVwLlxuIiwgdGhpcyk7CisgICAgICAgICAgICAgICAgbV9sbGludENhbGxMaW5r
SW5mb3NbaV0udW5saW5rKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoISFtX2xs
aW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobV9s
bGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQorICAgICAgICAgICAg
ICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlLmNsZWFyKCk7CisgICAg
ICAgIH0KKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCiAjaWYgRU5BQkxFKERGR19K
SVQpCiAgICAgLy8gQ2hlY2sgaWYgd2UncmUgbm90IGxpdmUuIElmIHdlIGFyZSwgdGhlbiBqZXR0
aXNvbi4KICAgICBpZiAoIShzaG91bGRJbW1lZGlhdGVseUFzc3VtZUxpdmVuZXNzRHVyaW5nU2Nh
bigpIHx8IG1fZGZnRGF0YS0+bGl2ZW5lc3NIYXNCZWVuUHJvdmVkKSkgewpAQCAtMTg1OCwxMCAr
MTkyMCwxMiBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVjbHMuc2l6ZSgpOyArK2kpCiAgICAg
ICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9uRGVjbHNbaV0pOwogI2lmIEVOQUJMRShJTlRF
UlBSRVRFUikKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0
aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICB2aXNpdFN0cnVjdHVy
ZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNb
aV1dKTsKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25z
LnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0dXJlcyh2
aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXSk7
CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPmVuYWJsZWQoKSkgeworICAgICAg
ICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCks
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0
b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7Cisg
ICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6
ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHZpc2l0U3RydWN0dXJlcyh2
aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXSk7
CisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTIwNzAsNiArMjEzNCwx
MiBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogewogICAgIGlmICghIW1fYWx0ZXJu
YXRpdmUpCiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPnVubGlua0NhbGxzKCk7CisjaWYgRU5BQkxF
KExMSU5UKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sbGludENhbGxMaW5rSW5mb3Mu
c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlu
a2VkKCkpCisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAg
ICB9CisjZW5kaWYKICAgICBpZiAoIShtX2NhbGxMaW5rSW5mb3Muc2l6ZSgpIHx8IG1fbWV0aG9k
Q2FsbExpbmtJbmZvcy5zaXplKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2dsb2Jh
bERhdGEtPmNhblVzZUpJVCgpKQpAQCAtMjA4NCwxMCArMjE1NCwzOSBAQCB2b2lkIENvZGVCbG9j
azo6dW5saW5rQ2FsbHMoKQogCiB2b2lkIENvZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxscygp
CiB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIHdoaWxlIChtX2luY29taW5nTExJbnRDYWxscy5i
ZWdpbigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQorICAgICAgICBtX2luY29taW5n
TExJbnRDYWxscy5iZWdpbigpLT51bmxpbmsoKTsKKyNlbmRpZgorICAgIGlmIChtX2luY29taW5n
Q2FsbHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBh
dGNoQnVmZmVyKHRoaXMpOwogICAgIHdoaWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAhPSBt
X2luY29taW5nQ2FsbHMuZW5kKCkpCiAgICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigpLT51
bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CiB9CisKK3Vuc2lnbmVkIENvZGVC
bG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJl
dHVybkFkZHJlc3MpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChyZXR1cm5BZGRyZXNz
LnZhbHVlKCkgPj0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfYmVnaW4pCisgICAgICAgICYm
IHJldHVybkFkZHJlc3MudmFsdWUoKSA8PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQp
KSB7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSk7CisgICAgICAgIEFTU0VSVChl
eGVjLT5jb2RlQmxvY2soKSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFz
ZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOworICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24gPSBleGVjLT5jdXJyZW50VlBDKCk7CisgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbik7Cisg
ICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldChpbnN0cnVjdGlvbik7CisgICAgfQorI2Vsc2UK
KyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisjZW5kaWYKKyAgICBpZiAoIW1fcmFyZURhdGEpCisg
ICAgICAgIHJldHVybiAxOworICAgIFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9m
ZnNldD4mIGNhbGxJbmRpY2VzID0gbV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7
CisgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCisgICAgICAgIHJldHVybiAxOworICAgIHJl
dHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2ln
bmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNl
cy5zaXplKCksIGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+
Ynl0ZWNvZGVPZmZzZXQ7Cit9CiAjZW5kaWYKIAogdm9pZCBDb2RlQmxvY2s6OmNsZWFyRXZhbENh
Y2hlKCkKQEAgLTIxODMsMjQgKzIyODIsNDUgQEAgYm9vbCBGdW5jdGlvbkNvZGVCbG9jazo6Y2Fu
Q29tcGlsZVdpdGhERgogCiB2b2lkIFByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAg
ICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NF
UlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0
aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxl
Kj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEo
KSk7CiB9CiAKIHZvaWQgRXZhbENvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChn
ZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2Rl
Ojppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVw
bGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1
dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9p
ZCBGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBl
KCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGlt
aXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQo
KSk7CiAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxl
KCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGVGb3IoKmdsb2JhbERhdGEoKSwgbV9pc0NvbnN0cnVj
dG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKIH0KKwordm9pZCBQcm9ncmFt
Q29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7Cisg
ICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAg
ICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZ2xvYmFs
RGF0YSk7Cit9CisKK3ZvaWQgRXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7Cisg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkp
LT5qaXRDb21waWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpq
aXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdl
dEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhp
cyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVj
dXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlRm9yKGdsb2JhbERhdGEsIG1f
aXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7Cit9CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTIzMDMsNiArMjQyMywxOCBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsZXMoKQogfQogI2VuZGlmCiAKK3ZvaWQgQ29k
ZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpCit7CisjaWYgIUVO
QUJMRShPUENPREVfU0FNUExJTkcpICYmICFFTkFCTEUoTExJTlQpCisgICAgaWYgKEJ5dGVjb2Rl
R2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlm
ICghIWFsdGVybmF0aXZlKCkpCisgICAgICAgIGRpc2NhcmRCeXRlY29kZSgpOworICAgIGVsc2UK
KyAgICAgICAgZGlzY2FyZEJ5dGVjb2RlTGF0ZXIoKTsKKyNlbmRpZgorfQorCiAjaWZuZGVmIE5E
RUJVRwogYm9vbCBDb2RlQmxvY2s6OnVzZXNPcGNvZGUoT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lv
biAxMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpZm5kZWYgQ29kZUJsb2NrX2gKICNk
ZWZpbmUgQ29kZUJsb2NrX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNp
bmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKQEAgLTUwLDYgKzUxLDcgQEAK
ICNpbmNsdWRlICJKSVRXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5o
IgogI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJbmZvLmgi
CiAjaW5jbHVkZSAiTGluZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlBy
ZWRpY3Rpb25UcmFja2VyLmgiCkBAIC02NSwxNiArNjcsMTEgQEAKICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKIAotLy8gUmVnaXN0ZXIgbnVt
YmVycyB1c2VkIGluIGJ5dGVjb2RlIG9wZXJhdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbWVhbmluZyBh
Y2NvcmRpbmcgdG8gdGhlaXIgcmFuZ2VzOgotLy8gICAgICAweDgwMDAwMDAwLTB4RkZGRkZGRkYg
IE5lZ2F0aXZlIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGVudHJpZXMg
aW4gdGhlIGNhbGwgZnJhbWUsIHNlZSBSZWdpc3RlckZpbGUuaC4KLS8vICAgICAgMHgwMDAwMDAw
MC0weDNGRkZGRkZGICBGb3J3YXJkcyBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVy
IGFyZSBsb2NhbCB2YXJzIGFuZCB0ZW1wb3JhcmllcyB3aXRoIHRoZSBmdW5jdGlvbidzIGNhbGxm
cmFtZS4KLS8vICAgICAgMHg0MDAwMDAwMC0weDdGRkZGRkZGICBQb3NpdGl2ZSBpbmRpY2VzIGZy
b20gMHg0MDAwMDAwMCBzcGVjaWZ5IGVudHJpZXMgaW4gdGhlIGNvbnN0YW50IHBvb2wgb24gdGhl
IENvZGVCbG9jay4KLXN0YXRpYyBjb25zdCBpbnQgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgg
PSAweDQwMDAwMDAwOwotCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEV4ZWNTdGF0ZTsK
ICAgICBjbGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBpbmxpbmUgaW50IHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcihpbnQgYXJndW1lbnRzUmVnaXN0ZXIpIHsgcmV0dXJuIGFyZ3VtZW50c1Jl
Z2lzdGVyIC0gMTsgfQogCkBAIC04Myw2ICs4MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNs
YXNzIENvZGVCbG9jayA6IHB1YmxpYyBVbmNvbmRpdGlvbmFsRmluYWxpemVyLCBwdWJsaWMgV2Vh
a1JlZmVyZW5jZUhhcnZlc3RlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
ICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBDb3B5UGFyc2VkQmxvY2tU
YWcgeyBDb3B5UGFyc2VkQmxvY2sgfTsKICAgICBwcm90ZWN0ZWQ6CkBAIC0xMjMsNyArMTIxLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB3aGlsZSAocmVzdWx0LT5hbHRlcm5hdGl2
ZSgpKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC0+YWx0ZXJuYXRpdmUoKTsKICAg
ICAgICAgICAgIEFTU0VSVChyZXN1bHQpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC0+Z2V0
SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChK
SVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogI2VuZGlmCkBAIC0xMzQsMTEgKzEzMiw5IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7
CiAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRV9PUENPREVfU0FNUExJTkcKICAgICAg
ICAgdm9pZCBkdW1wKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50U3RydWN0
dXJlcyhjb25zdCBJbnN0cnVjdGlvbiopIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50U3RydWN0
dXJlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpIGNv
bnN0OwotI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVy
biBtX2lzU3RyaWN0TW9kZTsgfQogCkBAIC0xOTQsMTUgKzE5MCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgcmV0dXJuICooYmluYXJ5U2VhcmNoPE1ldGhvZENhbGxMaW5rSW5mbywg
dW5zaWduZWQsIGdldE1ldGhvZENhbGxMaW5rSW5mb0J5dGVjb2RlSW5kZXg+KG1fbWV0aG9kQ2Fs
bExpbmtJbmZvcy5iZWdpbigpLCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpLCBieXRlY29k
ZUluZGV4KSk7CiAgICAgICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9yYXJlRGF0YSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIFZl
Y3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0gbV9y
YXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7Ci0gICAgICAgICAgICBpZiAoIWNhbGxJ
bmRpY2VzLnNpemUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIHJl
dHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2ln
bmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNl
cy5zaXplKCksIGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+
Ynl0ZWNvZGVPZmZzZXQ7Ci0gICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQoRXhlY1N0YXRlKiwgUmV0dXJuQWRkcmVzc1B0cik7CiAKICAgICAgICAgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXRGb3JDYWxsQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAgewpAQCAt
MjIzLDExICsyMTEsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAg
IG1faW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nKTsKICAgICAgICAgfQorI2lmIEVOQUJMRShM
TElOVCkKKyAgICAgICAgdm9pZCBsaW5rSW5jb21pbmdDYWxsKExMSW50Q2FsbExpbmtJbmZvKiBp
bmNvbWluZykKKyAgICAgICAgeworICAgICAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMucHVz
aChpbmNvbWluZyk7CisgICAgICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAgICAgICAg
IAogICAgICAgICB2b2lkIHVubGlua0luY29taW5nQ2FsbHMoKTsKLSNlbmRpZgorI2VuZGlmIC8v
IEVOQUJMRShKSVQpCiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJVCkg
fHwgRU5BQkxFKExMSU5UKQogICAgICAgICB2b2lkIHNldEpJVENvZGVNYXAoUGFzc093blB0cjxD
b21wYWN0SklUQ29kZU1hcD4gaml0Q29kZU1hcCkKICAgICAgICAgewogICAgICAgICAgICAgbV9q
aXRDb2RlTWFwID0gaml0Q29kZU1hcDsKQEAgLTIzNiw3ICsyMzAsOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG1faml0Q29kZU1hcC5nZXQoKTsKICAg
ICAgICAgfQorI2VuZGlmCiAgICAgICAgIAorI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICB2
b2lkIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
ICghIW1fZGZnRGF0YSkKQEAgLTMzNSwxMiArMzMxLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgdW5zaWdu
ZWQgYnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJlc3MpCiAgICAgICAgIHsK
KyAgICAgICAgICAgIEFTU0VSVChyZXR1cm5BZGRyZXNzID49IGluc3RydWN0aW9ucygpLmJlZ2lu
KCkgJiYgcmV0dXJuQWRkcmVzcyA8IGluc3RydWN0aW9ucygpLmVuZCgpKTsKICAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxJbnN0cnVjdGlvbio+KHJldHVybkFkZHJlc3MpIC0gaW5zdHJ1
Y3Rpb25zKCkuYmVnaW4oKTsKICAgICAgICAgfQotI2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXRJ
c051bWVyaWNDb21wYXJlRnVuY3Rpb24oYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24pIHsg
bV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb24gPSBpc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0K
ICAgICAgICAgYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24oKSB7IHJldHVybiBtX2lzTnVt
ZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQpAQCAtMzU0LDE3ICszNDksOSBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICAgICAgbV9zaG91bGREaXNjYXJkQnl0ZWNvZGUgPSB0cnVl
OwogICAgICAgICB9Ci0gICAgICAgIHZvaWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0
dW5pdHkoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoISFhbHRlcm5hdGl2ZSgpKQotICAg
ICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZSgpOwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIGRpc2NhcmRCeXRlY29kZUxhdGVyKCk7Ci0gICAgICAgIH0KKyAgICAgICAgdm9p
ZCBoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAgICAgICAKLSNpZm5k
ZWYgTkRFQlVHCiAgICAgICAgIGJvb2wgdXNlc09wY29kZShPcGNvZGVJRCk7Ci0jZW5kaWYKIAog
ICAgICAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50KCkgeyByZXR1cm4gbV9pbnN0cnVjdGlv
bkNvdW50OyB9CiAgICAgICAgIHZvaWQgc2V0SW5zdHJ1Y3Rpb25Db3VudCh1bnNpZ25lZCBpbnN0
cnVjdGlvbkNvdW50KSB7IG1faW5zdHJ1Y3Rpb25Db3VudCA9IGluc3RydWN0aW9uQ291bnQ7IH0K
QEAgLTM4NywxNyArMzc0LDI2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeGVjdXRhYmxl
TWVtb3J5SGFuZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgeyByZXR1cm4gZ2V0SklUQ29kZSgpLmdl
dEV4ZWN1dGFibGVNZW1vcnkoKTsgfQogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxl
T3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKikgPSAwOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgamV0dGlzb24oKSA9IDA7CisgICAgICAgIGJvb2wgaml0Q29tcGlsZShKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChnZXRKSVRUeXBl
KCkgIT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykgeworICAgICAgICAgICAgICAgIEFTU0VS
VChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGppdENvbXBpbGVJbXBs
KGdsb2JhbERhdGEpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAg
ICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgPSAwOwogICAgICAgICB2aXJ0dWFs
IGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKSA9IDA7CiAgICAgICAgIGJvb2wgaGFzT3B0aW1pemVk
UmVwbGFjZW1lbnQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgp
ID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjpp
c0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0g
cmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID4gZ2V0SklUVHlwZSgpOwogI2lmICFBU1NFUlRf
RElTQUJMRUQKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAgQVNTRVJU
KHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwogICAgICAg
ICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmdldEpJ
VFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgQVNTRVJU
KEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSkpOwog
ICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpID09IHRoaXMpOwogICAgICAgICAg
ICAgfQogI2VuZGlmCkBAIC00NTYsMTggKzQ1MiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICB2b2lkIGNsZWFyRXZhbENhY2hlKCk7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAg
ICAgICAgIHZvaWQgYWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbih1bnNpZ25lZCBwcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZ2xvYmFs
RGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBt
X3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0
aW9uKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlv
bih1bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX2ds
b2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik7
CisgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJl
c29sdmVJbnN0cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxSZXNv
bHZlSW5zdHJ1Y3Rpb25BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBhZGRMTEludENh
bGxMaW5rSW5mbygpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9z
LmFwcGVuZChMTEludENhbGxMaW5rSW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiAmbV9sbGlu
dENhbGxMaW5rSW5mb3MubGFzdCgpOworICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSklU
KQogICAgICAgICB2b2lkIHNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKHNpemVfdCBzaXpl
KSB7IG1fc3RydWN0dXJlU3R1YkluZm9zLmdyb3coc2l6ZSk7IH0KQEAgLTQ3Niw4ICs0NzUsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbmZvKHVu
c2lnbmVkIGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAg
aWYgKG1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9iYWxS
ZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbikpOworICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2JhbFJl
c29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOwogICAgICAgICB9CiAgICAgICAg
IEdsb2JhbFJlc29sdmVJbmZvJiBnbG9iYWxSZXNvbHZlSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJu
IG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2luZGV4XTsgfQogICAgICAgICBib29sIGhhc0dsb2JhbFJl
c29sdmVJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CkBAIC00
ODgsNiArNDg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBhZGRNZXRob2RD
YWxsTGlua0luZm9zKHVuc2lnbmVkIG4pIHsgQVNTRVJUKG1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklU
KCkpOyBtX21ldGhvZENhbGxMaW5rSW5mb3MuZ3JvdyhuKTsgfQogICAgICAgICBNZXRob2RDYWxs
TGlua0luZm8mIG1ldGhvZENhbGxMaW5rSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJuIG1fbWV0aG9k
Q2FsbExpbmtJbmZvc1tpbmRleF07IH0KKyAgICAgICAgc2l6ZV90IG51bWJlck9mTWV0aG9kQ2Fs
bExpbmtJbmZvcygpIHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCk7IH0KICNl
bmRpZgogICAgICAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC01MjgsNiArNTI3
LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJvZmlsZSA9PSByZXN1bHQpOwog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQorICAgICAgICBQcmVkaWN0ZWRU
eXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVP
ZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZVByb2ZpbGVGb3JCeXRl
Y29kZU9mZnNldChieXRlY29kZU9mZnNldCktPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOwor
ICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCB0b3RhbE51bWJlck9mVmFsdWVQ
cm9maWxlcygpCiAgICAgICAgIHsKQEAgLTU1NCwxMiArNTU3LDE2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTbG93Q2FzZShpbnQgYnl0ZWNv
ZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVBy
b2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5z
aWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRpb25zOjps
aWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZh
bHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93
Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBjb3VsZFRh
a2VTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlm
ICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRl
Y29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVy
biB2YWx1ZSA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0
aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25z
Ojpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQpAQCAtNTc4LDEyICs1ODUs
MTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFr
ZVNwZWNpYWxGYXN0Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBz
cGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5t
X2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gc3BlY2lhbEZhc3RDYXNlQ291bnQgPj0gT3B0
aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91
YmxlPihzcGVjaWFsRmFzdENhc2VDb3VudCkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0
aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKGludCBieXRlY29kZU9m
ZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmls
ZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENh
c2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29k
ZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gc2xvd0Nh
c2VDb3VudCAtIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNTkyLDYgKzYwMyw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VBbnlTbG93Q2Fz
ZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVy
T2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWdu
ZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25l
ZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgKyBzcGVjaWFsRmFzdENhc2VDb3VudDsKQEAgLTY4OSw3
ICs3MDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgYWRkRnJl
cXVlbnRFeGl0U2l0ZShjb25zdCBERkc6OkZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVK
SVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5
cGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIG1fZXhpdFByb2ZpbGUuYWRkKHNpdGUpOwogICAg
ICAgICB9CiAKQEAgLTc5NCw2ICs4MDcsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgY29weVBvc3RQYXJzZURhdGFGcm9tKENvZGVCbG9jayogYWx0ZXJuYXRpdmUpOwogICAgICAg
ICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbUFsdGVybmF0aXZlKCk7CiAgICAgICAgIAorICAg
ICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gSklUdGluZyBraWNrcyBpbiwg
aW4gYSBtaXhlZCBtb2RlCisgICAgICAgIC8vIGV4ZWN1dGlvbiB3b3JsZC4KKyAgICAgICAgCisg
ICAgICAgIHZvaWQgZG9udEpJVEFueXRpbWVTb29uKCkKKyAgICAgICAgeworICAgICAgICAgICAg
bV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
RG9udEpJVEFueXRpbWVTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGpp
dEFmdGVyV2FybVVwKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVDb3Vu
dGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0U29vbigpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvckpJVFNvb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludDMyX3Qg
bGxpbnRFeGVjdXRlQ291bnRlcigpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIC8v
IEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiB0aWVyZWQgY29tcGlsYXRpb24ga2lja3Mg
aW4uIFRoaXMKICAgICAgICAgLy8gY29udHJvbHMgYm90aCB3aGVuIHRoZSBvcHRpbWl6aW5nIGNv
bXBpbGVyIGlzIGludm9rZWQgYW5kIHdoZW4gT1NSCiAgICAgICAgIC8vIGVudHJ5IGhhcHBlbnMu
IFR3byB0cmlnZ2VycyBleGlzdDogdGhlIGxvb3AgdHJpZ2dlciBhbmQgdGhlIHJldHVybgpAQCAt
OTg2LDYgKzEwMjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3Nob3VsZERp
c2NhcmRCeXRlY29kZTsKIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB2b2lkIGpp
dENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHZp
c2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGZp
bmFsaXplVW5jb25kaXRpb25hbGx5KCk7CiAgICAgICAgIApAQCAtOTk4LDcgKzEwMzUsNiBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCB0YWxseUZyZXF1ZW50RXhpdFNpdGVzKCkgeyB9
CiAjZW5kaWYKICAgICAgICAgCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RF
X1NBTVBMSU5HKQogICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKiwgY29uc3QgVmVjdG9yPElu
c3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImIGJlZ2luLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpj
b25zdF9pdGVyYXRvciYpIGNvbnN0OwogCiAgICAgICAgIENTdHJpbmcgcmVnaXN0ZXJOYW1lKEV4
ZWNTdGF0ZSosIGludCByKSBjb25zdDsKQEAgLTEwMDgsNyArMTA0NCw2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB2b2lkIHByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlv
biwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkg
Y29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRDYWxsT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9u
LCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBj
b25zdDsKICAgICAgICAgdm9pZCBwcmludFB1dEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRp
b24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3Ap
IGNvbnN0OwotI2VuZGlmCiAgICAgICAgIHZvaWQgdmlzaXRTdHJ1Y3R1cmVzKFNsb3RWaXNpdG9y
JiwgSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3Q7CiAgICAgICAgIAogI2lmIEVOQUJMRShERkdfSklU
KQpAQCAtMTA2OSw5ICsxMTA0LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8
U291cmNlUHJvdmlkZXI+IG1fc291cmNlOwogICAgICAgICB1bnNpZ25lZCBtX3NvdXJjZU9mZnNl
dDsKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBt
X3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zOwogICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IG1f
Z2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uczsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIFNl
Z21lbnRlZFZlY3RvcjxMTEludENhbGxMaW5rSW5mbywgOD4gbV9sbGludENhbGxMaW5rSW5mb3M7
CisgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxMTEludENhbGxMaW5rSW5mbywgQmFzaWNSYXdT
ZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0xMSW50Q2FsbHM7CiAj
ZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+
IG1fc3RydWN0dXJlU3R1YkluZm9zOwpAQCAtMTA4Miw5ICsxMTE5LDEwIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlV2l0aEFyaXR5Q2hl
Y2s7CiAgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxDYWxsTGlua0luZm8sIEJhc2ljUmF3U2Vu
dGluZWxOb2RlPENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5nQ2FsbHM7CiAjZW5kaWYKLSNpZiBF
TkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQogICAg
ICAgICBPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IG1faml0Q29kZU1hcDsKLSAgICAgICAgCisj
ZW5kaWYKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgc3RydWN0IFdlYWtSZWZlcmVuY2VU
cmFuc2l0aW9uIHsKICAgICAgICAgICAgIFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uKCkgeyB9CiAg
ICAgICAgICAgICAKQEAgLTExNDcsMTIgKzExODUsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgT3duUHRyPENvZGVCbG9jaz4gbV9hbHRlcm5hdGl2ZTsKICAgICAgICAgCisgICAgICAg
IGludDMyX3QgbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICAKICAgICAgICAgaW50MzJf
dCBtX2ppdEV4ZWN1dGVDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlU3Vj
Y2Vzc0NvdW50ZXI7CiAgICAgICAgIHVpbnQzMl90IG1fc3BlY3VsYXRpdmVGYWlsQ291bnRlcjsK
ICAgICAgICAgdWludDhfdCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcjsKICAgICAgICAgdWlu
dDhfdCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwotCisgICAgICAgIAogICAgICAgICBz
dHJ1Y3QgUmFyZURhdGEgewogICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAg
ICAgICAgcHVibGljOgpAQCAtMTIyNSw2ICsxMjY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4
ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNv
bigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7
CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtMTI1OSw2ICsxMzAwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2Jq
ZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29t
cGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBs
YWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkcoKTsKICNl
bmRpZgpAQCAtMTI5Niw2ICsxMzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVk
OgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSos
IFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAg
IHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
Y2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTA2MTUwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNywyMCArMjcsNDkgQEAKICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAK
ICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogCitHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1
dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9j
ayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworICAgIFVOVVNFRF9QQVJBTShp
ZGVudCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9
IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4Owor
ICAgIAorICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9tZXRob2Rf
Y2hlY2spCisgICAgICAgIGluc3RydWN0aW9uKys7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOworICAgIGlmICghc3RydWN0dXJl
KQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVT
ZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0
dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlmIChv
ZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3Jt
YXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOworICAgIAorICAgIHJldHVy
biBHZXRCeUlkU3RhdHVzKFNpbXBsZURpcmVjdCwgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIG9m
ZnNldCwgZmFsc2UpOworI2Vsc2UKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyNlbmRpZgorfQorCiBHZXRC
eUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJs
b2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBV
TlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5k
ZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxF
KFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZTdHJ1Y3R1
cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRC
bG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAgIC8vIEZpcnN0IGNoZWNrIGlm
IGl0IG1ha2VzIGVpdGhlciBjYWxscywgaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIHN1cGVy
IGNhcmVmdWwsIG9yCiAgICAgLy8gaWYgaXQncyBub3Qgc2V0IGF0IGFsbCwgaW4gd2hpY2ggY2Fz
ZSB3ZSBwdW50LgogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVkQmxv
Y2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1YkluZm8uc2VlbikK
LSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0
KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRC
bG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgIAogICAgIFBvbHltb3JwaGljQWNjZXNz
U3RydWN0dXJlTGlzdCogbGlzdDsKICAgICBpbnQgbGlzdFNpemU7CkBAIC02MCwxOCArODksMTkg
QEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIH0KICAgICBm
b3IgKGludCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKICAgICAgICAgaWYgKCFsaXN0LT5s
aXN0W2ldLmlzRGlyZWN0KQotICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTWFrZXND
YWxscywgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgICAgIHJldHVybiBHZXRC
eUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7CiAg
ICAgfQogICAgIAogICAgIC8vIE5leHQgY2hlY2sgaWYgaXQgdGFrZXMgc2xvdyBjYXNlLCBpbiB3
aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUga2luZCBvZiBjYXJlZnVsLgogICAgIGlmIChwcm9maWxl
ZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKLSAgICAgICAgcmV0
dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5k
KTsKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgU3RydWN0dXJl
U2V0KCksIG5vdEZvdW5kLCB0cnVlKTsKICAgICAKICAgICAvLyBGaW5hbGx5IGZpZ3VyZSBvdXQg
aWYgd2UgY2FuIGRlcml2ZSBhbiBhY2Nlc3Mgc3RyYXRlZ3kuCiAgICAgR2V0QnlJZFN0YXR1cyBy
ZXN1bHQ7CisgICAgcmVzdWx0Lm1fd2FzU2VlbkluSklUID0gdHJ1ZTsKICAgICBzd2l0Y2ggKHN0
dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIGFjY2Vzc191bnNldDoKLSAgICAgICAgcmV0
dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5k
KTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNv
ZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2Vs
ZjogewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFNl
bGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKQEAgLTEzMCw3ICsxNjAsNyBAQCBHZXRCeUlk
U3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgCiAgICAgcmV0dXJuIHJlc3Vs
dDsKICNlbHNlIC8vIEVOQUJMRShKSVQpCi0gICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKICNl
bmRpZiAvLyBFTkFCTEUoSklUKQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEwNjE1MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDEwICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAgICBHZXRCeUlk
U3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6
ZV90IG9mZnNldCkKKyAgICBHZXRCeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBTdHJ1Y3R1
cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6ZV90IG9mZnNldCwgYm9vbCB3YXNTZWVuSW5KSVQpCiAg
ICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1
cmVTZXQpCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICAgICAsIG1fd2FzU2Vlbklu
SklUKHdhc1NlZW5JbkpJVCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoc3RhdGUgPT0gU2ltcGxl
RGlyZWN0KSA9PSAob2Zmc2V0ICE9IG5vdEZvdW5kKSk7CiAgICAgfQpAQCAtNzAsMTAgKzcxLDE1
IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0
IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9CiAgICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsg
cmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCisgICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBjb25zdCB7
IHJldHVybiBtX3dhc1NlZW5JbkpJVDsgfQorICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgR2V0
QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cnVj
dHVyZVNldCBtX3N0cnVjdHVyZVNldDsKICAgICBzaXplX3QgbV9vZmZzZXQ7CisgICAgYm9vbCBt
X3dhc1NlZW5JbkpJVDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHJldmlzaW9uIDEwNjE1MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTQ2Vs
bDsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CisgICAg
c3RydWN0IExMSW50Q2FsbExpbmtJbmZvOwogICAgIHN0cnVjdCBWYWx1ZVByb2ZpbGU7CiAKICNp
ZiBFTkFCTEUoSklUKQpAQCAtMTQ2LDYgKzE0NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRp
ZgogCiAgICAgc3RydWN0IEluc3RydWN0aW9uIHsKKyAgICAgICAgSW5zdHJ1Y3Rpb24oKQorICAg
ICAgICB7CisgICAgICAgICAgICB1LmpzQ2VsbC5jbGVhcigpOworICAgICAgICB9CisgICAgICAg
IAogICAgICAgICBJbnN0cnVjdGlvbihPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAjaWYgIUVO
QUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQpAQCAtMTgyLDYgKzE4OCw4IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIEluc3RydWN0aW9uKFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jIGdldHRlckZ1bmMpIHsgdS5nZXR0ZXJGdW5jID0gZ2V0dGVyRnVuYzsgfQogICAgICAgICAK
KyAgICAgICAgSW5zdHJ1Y3Rpb24oTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykgeyB1
LmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsgfQorICAgICAgICAKICAgICAgICAgSW5zdHJ1
Y3Rpb24oVmFsdWVQcm9maWxlKiBwcm9maWxlKSB7IHUucHJvZmlsZSA9IHByb2ZpbGU7IH0KIAog
ICAgICAgICB1bmlvbiB7CkBAIC0xOTEsNyArMTk5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBzdHJ1Y3R1cmVDaGFpbjsK
ICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8SlNDZWxsPiBqc0NlbGw7CiAgICAgICAgICAg
ICBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jOworICAgICAgICAgICAgTExJ
bnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbzsKICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSog
cHJvZmlsZTsKKyAgICAgICAgICAgIHZvaWQqIHBvaW50ZXI7CiAgICAgICAgIH0gdTsKICAgICAg
ICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9M
TEludENhbGxMaW5rSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBMTEludENhbGxMaW5rSW5mb19oCisjZGVmaW5lIExMSW50Q2FsbExpbmtJbmZv
X2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CisKK25hbWVzcGFj
ZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK3N0cnVjdCBMTEludENhbGxMaW5rSW5m
byA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4geworICAg
IExMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAgfQorICAgIAorICAgIH5MTEludENhbGxM
aW5rSW5mbygpCisgICAgeworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJl
bW92ZSgpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4gY2FsbGVl
OyB9CisgICAgCisgICAgdm9pZCB1bmxpbmsoKQorICAgIHsKKyAgICAgICAgY2FsbGVlLmNsZWFy
KCk7CisgICAgICAgIG1hY2hpbmVDb2RlVGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7
CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgfQor
ICAgIAorICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxsZWU7CisgICAgV3JpdGVCYXJy
aWVyPEpTRnVuY3Rpb24+IGxhc3RTZWVuQ2FsbGVlOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciBtYWNoaW5lQ29kZVRhcmdldDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYg
Ly8gTExJbnRDYWxsTGlua0luZm9faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDEw
NjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0
YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDExIEBAIE1ldGhvZENhbGxMaW5r
U3RhdHVzIE1ldGhvZENhbGxMaW5rU3RhdHUKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9j
ayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lmIEVOQUJMRShKSVQpICYm
IEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAvLyBOT1RFOiBUaGlzIGRvZXMgbm90IGhhdmUg
YW4gTExJbnQgZmFsbC1iYWNrIGJlY2F1c2UgTExJbnQgZG9lcyBub3QgZG8gYW55IG1ldGhvZAor
ICAgIC8vIGNhbGwgbGluayBjYWNoaW5nLgorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVy
T2ZNZXRob2RDYWxsTGlua0luZm9zKCkpCisgICAgICAgIHJldHVybiBNZXRob2RDYWxsTGlua1N0
YXR1cygpOworICAgIAogICAgIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9kQ2FsbCA9IHByb2Zp
bGVkQmxvY2stPmdldE1ldGhvZENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KTsKICAgICAKICAg
ICBpZiAoIW1ldGhvZENhbGwuc2VlbiB8fCAhbWV0aG9kQ2FsbC5jYWNoZWRTdHJ1Y3R1cmUpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMDYx
NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8o
b3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lk
LCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uLCA5KSBcCisgICAg
ICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwgOSkgXAorICAgICAgICBt
YWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwKICAgICAgICAgbWFjcm8o
b3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX2dl
bmVyaWMsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBcCkBAIC0yMDIsNiAr
MjA0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgZW51bSB7IEZPUl9FQUNI
X09QQ09ERV9JRChPUENPREVfSURfRU5VTSkgfSBPcGNvZGVJRDsKICAgICAjdW5kZWYgT1BDT0RF
X0lEX0VOVU0KIAorICAgIGNvbnN0IGludCBtYXhPcGNvZGVMZW5ndGggPSA5OwogICAgIGNvbnN0
IGludCBudW1PcGNvZGVJRHMgPSBvcF9lbmQgKyAxOwogCiAgICAgI2RlZmluZSBPUENPREVfSURf
TEVOR1RIUyhpZCwgbGVuZ3RoKSBjb25zdCBpbnQgaWQjI19sZW5ndGggPSBsZW5ndGg7CkBAIC0y
MTgsNyArMjIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9J
RChWRVJJRllfT1BDT0RFX0lEKTsKICAgICAjdW5kZWYgVkVSSUZZX09QQ09ERV9JRAogCi0jaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dP
VE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICNpZiBDT01QSUxFUihSVkNUKSB8fCBD
T01QSUxFUihJTlRFTCkKICAgICB0eXBlZGVmIHZvaWQqIE9wY29kZTsKICNlbHNlCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShy
ZXZpc2lvbiAxMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDI3ICsyNyw2OSBAQAogI2luY2x1ZGUg
IlB1dEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkxv
d0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJT
dHJ1Y3R1cmVDaGFpbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorUHV0QnlJZFN0YXR1cyBQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgVU5VU0VEX1BB
UkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyAg
ICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlv
biogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsg
Ynl0ZWNvZGVJbmRleDsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25b
NF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUpCisgICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAK
KyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkKSB7
CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+
Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisg
ICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBu
b3RGb3VuZCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVS
ZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIEFTU0VS
VChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3QKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRf
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIG5l
d1N0cnVjdHVyZSA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpOworICAgIFN0cnVj
dHVyZUNoYWluKiBjaGFpbiA9IGluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCk7
CisgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7CisgICAgQVNTRVJUKGNoYWluKTsKKyAgICAKKyAg
ICBzaXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2Jh
bERhdGEoKSwgaWRlbnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgIHJl
dHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAg
ICAKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVUcmFuc2l0aW9uLCBzdHJ1Y3R1cmUs
IG5ld1N0cnVjdHVyZSwgY2hhaW4sIG9mZnNldCk7CisjZWxzZQorICAgIHJldHVybiBQdXRCeUlk
U3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyNlbmRpZgorfQorCiBQ
dXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAg
ICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2Rl
SW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5B
QkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZTdHJ1
Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmls
ZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAgIGlmIChwcm9maWxlZEJs
b2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKICAgICAgICAgcmV0dXJu
IFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOwogICAgIAog
ICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJ
bmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmV0
dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAg
ICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4
LCBpZGVudCk7CiAgICAgCiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAg
Y2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3Jt
YXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJ
bnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAgICBj
YXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTogewogICAgICAgICBzaXplX3Qgb2Zmc2V0ID0g
c3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHJl
dmlzaW9uIDEwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
U3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDggQEAgcHVibGljOgogICAgIHNp
emVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAogcHJpdmF0ZToK
KyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKICAgICBTdGF0ZSBtX3N0
YXRlOwogICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJlKiBtX25l
d1N0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMDYxNTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkJhdGNoZWRUcmFuc2l0
aW9uT3B0aW1pemVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlNj
b3BlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVVN0cmlu
Zy5oIgpAQCAtMTE2LDI2ICsxMTcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZXhwZWN0ZWQg
YnkgdGhlIGNhbGxlZS4KICovCiAKLSNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgYm9vbCBzX2R1bXBz
R2VuZXJhdGVkQ29kZSA9IGZhbHNlOwotI2VuZGlmCiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OnNldER1bXBzR2VuZXJhdGVkQ29kZShib29sIGR1bXBzR2VuZXJhdGVkQ29kZSkKIHsKLSNpZm5k
ZWYgTkRFQlVHCiAgICAgc19kdW1wc0dlbmVyYXRlZENvZGUgPSBkdW1wc0dlbmVyYXRlZENvZGU7
Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkdW1wc0dlbmVyYXRlZENvZGUpOwotI2VuZGlmCiB9
CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpCiB7Ci0jaWZu
ZGVmIE5ERUJVRwogICAgIHJldHVybiBzX2R1bXBzR2VuZXJhdGVkQ29kZTsKLSNlbHNlCi0gICAg
cmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAKIEpTT2JqZWN0KiBCeXRlY29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGUoKQpAQCAtMTQ4LDEwICsxMzksOCBAQCBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKCkKIAogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVjdGlvbkNvdW50KG1f
Y29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogCi0jaWZuZGVmIE5ERUJVRwogICAg
IGlmIChzX2R1bXBzR2VuZXJhdGVkQ29kZSkKICAgICAgICAgbV9jb2RlQmxvY2stPmR1bXAobV9z
Y29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7Ci0jZW5kaWYKIAogICAgIGlm
ICgobV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNvZGUgJiYgIW1fY29kZUJsb2NrLT5uZWVkc0Z1bGxT
Y29wZUNoYWluKCkgJiYgIW1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpIHx8IG1fY29kZVR5
cGUgPT0gRXZhbENvZGUpCiAgICAgICAgIHN5bWJvbFRhYmxlKCkuY2xlYXIoKTsKQEAgLTEyNzYs
OSArMTI2NSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNp
ZiBFTkFCTEUoSklUKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8o
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikK
ICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVj
dGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9
IGVtaXRQcm9maWxlZE9wY29kZShyZXF1aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZlX2ds
b2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFk
ZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDQwLDkgKzE0MjcsNyBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVC
bG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRp
ZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVz
b2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBWYWx1
ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hl
Y2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDkwLDkgKzE0NzUsNyBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9j
ay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0j
ZW5kaWYKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUocmVx
dWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29s
dmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0x
NTExLDkgKzE0OTQsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TWV0aG9kQ2hlY2so
CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJZChSZWdpc3RlcklE
KiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogewot
I2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nl
c3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBWYWx1
ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2J5X2lkKTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKQEAgLTE1MzksOSArMTUyMCw3
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXIKIAogUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUo
SU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1pdE9wY29kZShvcF9w
dXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAg
LTE1NTcsOSArMTUzNiw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0
QnkKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKFJl
Z2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2
YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFBy
b3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgog
ICAgIAogICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBAIC0xODQ4LDcgKzE4MjUsMTEgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChm
dW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJn
dW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyBy
ZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
MCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQcm9m
aWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBA
IC0xOTUyLDcgKzE5MzMsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRD
b25zdAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxs
QXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJM
RShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50
Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7Cisj
ZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25v
cmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2Zp
bGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0yMjEzLDcgKzIxOTgsMTEgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaAogewogICAgIG1fdXNlc0V4Y2Vw
dGlvbnMgPSB0cnVlOwogI2lmIEVOQUJMRShKSVQpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIEhh
bmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGlu
c3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVw
dGgsIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX2NhdGNo
KSkgfTsKKyNlbHNlCiAgICAgSGFuZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwgMCks
IGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29wZURl
cHRoICsgbV9iYXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0aW9uTGFiZWwoKSB9OworI2VuZGlmCiAj
ZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJp
bmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1f
YmFzZVNjb3BlRGVwdGggfTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEwNjE1MCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02MDQsOSArNjA0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIFVOVVNFRF9QQVJB
TShub2RlSW5kZXgpOwogICAgICAgICAKLSAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0g
bV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29k
ZU9mZnNldChieXRlY29kZUluZGV4KTsKLSAgICAgICAgQVNTRVJUKHByb2ZpbGUpOwotICAgICAg
ICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRp
Y3Rpb24oKTsKKyAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gbV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAg
ICAgICBwcmludGYoIkR5bmFtaWMgW0AldSwgYmMjJXVdIHByZWRpY3Rpb246ICVzXG4iLCBub2Rl
SW5kZXgsIGJ5dGVjb2RlSW5kZXgsIHByZWRpY3Rpb25Ub1N0cmluZyhwcmVkaWN0aW9uKSk7CiAj
ZW5kaWYKQEAgLTEwNDEsNiArMTAzOSw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlu
bGluaW5nKGJvb2wKICAgICAKICAgICAvLyBJZiB3ZSBnZXQgaGVyZSB0aGVuIGl0IGxvb2tzIGxp
a2Ugd2Ugc2hvdWxkIGRlZmluaXRlbHkgaW5saW5lIHRoaXMgY29kZS4gUHJvY2VlZAogICAgIC8v
IHdpdGggcGFyc2luZyB0aGUgY29kZSB0byBnZXQgYnl0ZWNvZGUsIHNvIHRoYXQgd2UgY2FuIHRo
ZW4gcGFyc2UgdGhlIGJ5dGVjb2RlLgorICAgIC8vIE5vdGUgdGhhdCBpZiBMTEludCBpcyBlbmFi
bGVkLCB0aGUgYnl0ZWNvZGUgd2lsbCBhbHdheXMgYmUgYXZhaWxhYmxlLiBBbHNvIG5vdGUKKyAg
ICAvLyB0aGF0IGlmIExMSW50IGlzIGVuYWJsZWQsIHdlIG1heSBpbmxpbmUgYSBjb2RlIGJsb2Nr
IHRoYXQgaGFzIG5ldmVyIGJlZW4gSklUdGVkCisgICAgLy8gYmVmb3JlIQogICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2tDYWNoZS5nZXQoQ29kZUJsb2NrS2V5KGV4ZWN1dGFi
bGUsIGtpbmQpLCBleHBlY3RlZEZ1bmN0aW9uLT5zY29wZSgpKTsKICAgICBpZiAoIWNvZGVCbG9j
aykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTc0MSw3ICsxNzQyLDcgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9jdXJyZW50SW5kZXgpOwogICAgICAgICAgICAg
CiAgICAgICAgICAgICBpZiAobWV0aG9kQ2FsbFN0YXR1cy5pc1NldCgpCi0gICAgICAgICAgICAg
ICAgJiYgIWdldEJ5SWRTdGF0dXMuaXNTZXQoKQorICAgICAgICAgICAgICAgICYmICFnZXRCeUlk
U3RhdHVzLndhc1NlZW5JbkpJVCgpCiAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tU
b3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSkg
ewogICAgICAgICAgICAgICAgIC8vIEl0J3MgbW9ub21vcnBoaWMgYXMgZmFyIGFzIHdlIGNhbiB0
ZWxsLCBzaW5jZSB0aGUgbWV0aG9kX2NoZWNrIHdhcyBsaW5rZWQKICAgICAgICAgICAgICAgICAv
LyBidXQgdGhlIHNsb3cgcGF0aCAoaS5lLiB0aGUgbm9ybWFsIGdldF9ieV9pZCkgbmV2ZXIgZmly
ZWQuCkBAIC0xODEwLDcgKzE4MTEsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2Nr
KHVuc2lnbmVkCiAKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9ieV9pZCk7CiAgICAg
ICAgIH0KLSAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6IHsKKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWQ6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogewogICAgICAgICAgICAg
Tm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwog
ICAgICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUu
b3BlcmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxp
bmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzJdLnUub3Bl
cmFuZF07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVz
LmgJKHJldmlzaW9uIDEwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw2ICsxMTEsOCBAQCBpbmxpbmUgYm9v
bCBjYW5Db21waWxlT3Bjb2RlKE9wY29kZUlEIG9wCiAgICAgY2FzZSBvcF9wdXRfc2NvcGVkX3Zh
cjoKICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBjYXNlIG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyOgogICAgIGNh
c2Ugb3BfcHV0X2dsb2JhbF92YXI6CiAgICAgY2FzZSBvcF9qbXA6CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAx
MDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDIxIEBAIHZvaWQgY29tcGlsZU9TUkV4aXQo
RXhlY1N0YXRlKiBleGVjKQogICAgIHVpbnQzMl90IGV4aXRJbmRleCA9IGdsb2JhbERhdGEtPm9z
ckV4aXRJbmRleDsKICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrLT5vc3JFeGl0KGV4aXRJ
bmRleCk7CiAgICAgCisgICAgLy8gTWFrZSBzdXJlIGFsbCBjb2RlIG9uIG91ciBpbmxpbmUgc3Rh
Y2sgaXMgSklUIGNvbXBpbGVkLiBUaGlzIGlzIG5lY2Vzc2FyeSBzaW5jZQorICAgIC8vIHdlIG1h
eSBvcHQgdG8gaW5saW5lIGEgY29kZSBibG9jayBldmVuIGJlZm9yZSBpdCBoYWQgZXZlciBiZWVu
IGNvbXBpbGVkIGJ5IHRoZQorICAgIC8vIEpJVCwgYnV0IG91ciBPU1IgZXhpdCBpbmZyYXN0cnVj
dHVyZSBjdXJyZW50bHkgb25seSB3b3JrcyBpZiB0aGUgdGFyZ2V0IG9mIHRoZQorICAgIC8vIE9T
UiBleGl0IGlzIEpJVCBjb2RlLiBUaGlzIGNvdWxkIGJlIGNoYW5nZWQgc2luY2UgdGhlcmUgaXMg
bm90aGluZyBwYXJ0aWN1bGFybHkKKyAgICAvLyBoYXJkIGFib3V0IGRvaW5nIGFuIE9TUiBleGl0
IGludG8gdGhlIGludGVycHJldGVyLCBidXQgZm9yIG5vdyB0aGlzIHNlZW1zIHRvIG1ha2UKKyAg
ICAvLyBzZW5zZSBpbiB0aGF0IGlmIHdlJ3JlIE9TUiBleGl0aW5nIGZyb20gaW5saW5lZCBjb2Rl
IG9mIGEgREZHIGNvZGUgYmxvY2ssIHRoZW4KKyAgICAvLyBwcm9iYWJseSBpdCdzIGEgZ29vZCBz
aWduIHRoYXQgdGhlIHRoaW5nIHdlJ3JlIGV4aXRpbmcgaW50byBpcyBob3QuIEV2ZW4gbW9yZQor
ICAgIC8vIGludGVyZXN0aW5nbHksIHNpbmNlIHRoZSBjb2RlIHdhcyBpbmxpbmVkLCBpdCBtYXkg
bmV2ZXIgb3RoZXJ3aXNlIGdldCBKSVQKKyAgICAvLyBjb21waWxlZCBzaW5jZSB0aGUgYWN0IG9m
IGlubGluaW5nIGl0IG1heSBlbnN1cmUgdGhhdCBpdCBvdGhlcndpc2UgbmV2ZXIgcnVucy4KKyAg
ICBmb3IgKENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luOyBjb2RlT3Jp
Z2luLmlubGluZUNhbGxGcmFtZTsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lLT5jYWxsZXIpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4o
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpCisgICAgICAgICAg
ICAtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5pc0Nh
bGwgPyBDb2RlRm9yQ2FsbCA6IENvZGVGb3JDb25zdHJ1Y3QpCisgICAgICAgICAgICAtPmppdENv
bXBpbGUoKmdsb2JhbERhdGEpOworICAgIH0KKyAgICAKICAgICBTcGVjdWxhdGlvblJlY292ZXJ5
KiByZWNvdmVyeSA9IDA7CiAgICAgaWYgKGV4aXQubV9yZWNvdmVyeUluZGV4KQogICAgICAgICBy
ZWNvdmVyeSA9ICZjb2RlQmxvY2stPnNwZWN1bGF0aW9uUmVjb3ZlcnkoZXhpdC5tX3JlY292ZXJ5
SW5kZXggLSAxKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRp
b25zLmNwcAkocmV2aXNpb24gMTA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKICNpbmNsdWRlICJERkdS
ZXBhdGNoLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgogI2luY2x1ZGUgIklubGluZUFTTS5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCkBAIC02NzEsNDggKzY3Miw2IEBAIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlv
bkNvbXBhcmVTdHIKICAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgSlNWYWx1
ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogfQog
Ci1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsK
LUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhF
eGVjU3RhdGUoRXhlY1N0YXRlKik7Ci0KLSNpZiBDUFUoWDg2XzY0KQotYXNtICgKLSIuZ2xvYmwg
IiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJ
TkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglcjEzKSwg
JXIxM1xuIgotICAgICJtb3YgJXIxMywgJXJkaVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RSSU5H
X1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7
Ci0jZWxpZiBDUFUoWDg2KQotYXNtICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgotICAgICJtb3YgJWVkaSwg
NCglZXNwKVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoQVJNX1RIVU1C
MikKLWFzbSAoCi0iLnRleHQiICJcbiIKLSIuYWxpZ24gMiIgIlxuIgotIi5nbG9ibCAiIFNZTUJP
TF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotIi50aHVtYiIgIlxuIgotIi50aHVtYl9mdW5jICIgVEhV
TUJfRlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5H
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgImxkciByNSwgW3I1LCAjLTQw
XSIgIlxuIgotICAgICJjcHkgcjAsIHI1IiAiXG4iCi0gICAgImIgIiBTWU1CT0xfU1RSSU5HX1JF
TE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0j
ZW5kaWYKLQotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZh
bHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOwotICAgIAotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQotCiBzdGF0
aWMgdm9pZCogaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNh
bGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmNwcAkocmV2aXNpb24gMTA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzNyw3ICs4MzcsNyBAQCB2b2lkIEhlYXA6
OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnCiAgICAgICAgIHNldEhpZ2hXYXRlck1hcmso
bWF4KHByb3BvcnRpb25hbEJ5dGVzLCBtX21pbkJ5dGVzUGVyQ3ljbGUpKTsKICAgICB9CiAgICAg
SkFWQVNDUklQVENPUkVfR0NfRU5EKCk7Ci0KKyAgICAKICAgICAoKm1fYWN0aXZpdHlDYWxsYmFj
aykoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTA2
MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0
YTsKICAgICBjbGFzcyBKU1ZhbHVlOwogICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQXJndW1lbnRC
dWZmZXI7CiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlOwogICAgIGNsYXNzIFVTdHJpbmc7CkBAIC0x
MzUsMTEgKzEzNiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2
YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAogICAgIHByaXZh
dGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRTcGFj
ZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xh
c3MgQnVtcFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7Ci0gICAgICAg
IGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAKICAgICAgICAgc2l6ZV90IHdhdGVyTWFyaygpOwog
ICAgICAgICBzaXplX3QgaGlnaFdhdGVyTWFyaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrU3RhY2suY3BwCShyZXZpc2lvbiAxMDYxNTApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNyArMzA0
LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKAogI2VuZGlmCiAK
ICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwotCisgICAgCiAgICAgaWYgKGlzSlNT
dHJpbmcoY2VsbCkpIHsKICAgICAgICAgSlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4oY29uc3RfY2Fz
dDxKU0NlbGwqPihjZWxsKSwgdmlzaXRvcik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMTA2MTUwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpA
QCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEhlYXA7CiBjbGFzcyBKU0Nl
bGw7CiBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiBjbGFzcyBXZWFrR0NIYW5kbGU7CiBjbGFzcyBTbG90VmlzaXRvcjsKIApAQCAtODcsNiAr
ODgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBmcmVlQmxvY2tzKE1hcmtlZEJsb2NrKiBoZWFkKTsK
IAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAg
IAogICAgIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2UoU2l6ZUNsYXNzJik7CiAgICAgdm9pZCogdHJ5
QWxsb2NhdGVIZWxwZXIoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwogICAgIHZvaWQqIHRyeUFs
bG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDEwNjE1MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMTIyLDYgKzEyMiw5IEBAIG5hbWVzcGFjZSBKU0MgIHsKICNpZiBFTkFCTEUoSU5URVJQ
UkVURVIpCiAgICAgICAgIEluc3RydWN0aW9uKiByZXR1cm5WUEMoKSBjb25zdCB7IHJldHVybiB0
aGlzW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdLnZQQygpOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgICAgIEluc3RydWN0aW9uKiBjdXJyZW50VlBDKCkgY29uc3QgeyByZXR1cm4g
Yml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4odGhpc1tSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291
bnRdLnRhZygpKTsgfQorI2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXRDYWxsZXJGcmFtZShDYWxs
RnJhbWUqIGNhbGxlckZyYW1lKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0
ZXJGaWxlOjpDYWxsZXJGcmFtZV0gPSBjYWxsZXJGcmFtZTsgfQogICAgICAgICB2b2lkIHNldFNj
b3BlQ2hhaW4oU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4pIHsgc3RhdGljX2Nhc3Q8UmVnaXN0
ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW5dID0gc2NvcGVDaGFpbjsgfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCShyZXZpc2lvbiAxMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBACiAjaW5j
bHVkZSAiSklULmgiCiAjZW5kaWYKIAotI2RlZmluZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9HT1RP
X1dPUktBUk9VTkQgKEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSAmJiAhZGVmaW5l
ZChfX2xsdm1fXykpCisjZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VO
RCAoKEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpKSAm
JiAhZGVmaW5lZChfX2xsdm1fXykpCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTU0Nywx
NyArNTQ3LDQzIEBAIEludGVycHJldGVyOjpJbnRlcnByZXRlcigpCiB7CiB9CiAKLXZvaWQgSW50
ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQpCitJbnRlcnByZXRlcjo6fkludGVy
cHJldGVyKCkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgaWYgKG1fZW5hYmxlZCkKKyAgICAgICAgZGVsZXRlW10gbV9vcGNv
ZGVUYWJsZTsKKyNlbmRpZgorfQorCit2b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKExMSW50
OjpEYXRhKiBsbGludERhdGEsIGJvb2wgY2FuVXNlSklUKQoreworICAgIFVOVVNFRF9QQVJBTShs
bGludERhdGEpOworICAgIFVOVVNFRF9QQVJBTShjYW5Vc2VKSVQpOworI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorICAgIC8vIEhhdmluZyBMTEludCBlbmFibGVkLCBidXQg
bm90IGJlaW5nIGFibGUgdG8gdXNlIHRoZSBKSVQsIGFuZCBub3QgaGF2aW5nCisgICAgLy8gYSBj
b21wdXRlZCBnb3RvIGludGVycHJldGVyLCBpcyBub3Qgc3VwcG9ydGVkLiBOb3QgYmVjYXVzZSB3
ZSBjYW5ub3QKKyAgICAvLyBzdXBwb3J0IGl0LCBidXQgYmVjYXVzZSBJIGRlY2lkZWQgdG8gZHJh
dyB0aGUgbGluZSBhdCB0aGUgbnVtYmVyIG9mCisgICAgLy8gcGVybXV0YXRpb25zIG9mIGV4ZWN1
dGlvbiBlbmdpbmVzIHRoYXQgSSB3YW50ZWQgdGhpcyBjb2RlIHRvIGdyb2suCisgICAgQVNTRVJU
KGNhblVzZUpJVCk7CisjZW5kaWYKICAgICBpZiAoY2FuVXNlSklUKSB7CisjaWYgRU5BQkxFKExM
SU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbGxpbnREYXRhLT5vcGNvZGVNYXAoKTsKKyAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKKyAgICAgICAgICAg
IG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNvZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8T3Bjb2Rl
SUQ+KGkpKTsKKyNlbHNlCiAgICAgICAgIC8vIElmIHRoZSBKSVQgaXMgcHJlc2VudCwgZG9uJ3Qg
dXNlIGp1bXAgZGVzdGluYXRpb25zIGZvciBvcGNvZGVzLgogICAgICAgICAKICAgICAgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkgewogICAgICAgICAgICAgT3Bjb2Rl
IG9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihpKSk7
CiAgICAgICAgICAgICBtX29wY29kZVRhYmxlW2ldID0gb3Bjb2RlOwogICAgICAgICB9CisjZW5k
aWYKICAgICB9IGVsc2UgeworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJs
ZSA9IG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXTsKKyNlbmRpZgogICAgICAgICBwcml2YXRlRXhl
Y3V0ZShJbml0aWFsaXplQW5kUmV0dXJuLCAwLCAwKTsKICAgICAgICAgCiAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpCkBAIC01NjYsNyArNTkyLDYgQEAgdm9p
ZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShib29sIGNhblVzZQogICAgICAgICBtX2VuYWJsZWQg
PSB0cnVlOwogICAgIH0KICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNhblVzZUpJVCk7CiAjaWYg
RU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fZW5hYmxlZCA9IHRydWU7CiAjZWxzZQpAQCAtNjY3
LDkgKzY5MiwxMSBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtCiAK
IGJvb2wgSW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKE9wY29kZSBvcGNvZGUpCiB7Ci0jaWYgRU5BQkxF
KENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKExMSU5UKQogICAgIGlmICgh
bV9lbmFibGVkKQogICAgICAgICByZXR1cm4gb3Bjb2RlID49IDAgJiYgc3RhdGljX2Nhc3Q8T3Bj
b2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29kZSkpIDw9IG9wX2VuZDsKKyNlbmRp
ZgogICAgIHJldHVybiBvcGNvZGUgIT0gSGFzaFRyYWl0czxPcGNvZGU+OjplbXB0eVZhbHVlKCkK
ICAgICAgICAgJiYgIUhhc2hUcmFpdHM8T3Bjb2RlPjo6aXNEZWxldGVkVmFsdWUob3Bjb2RlKQog
ICAgICAgICAmJiBtX29wY29kZUlEVGFibGUuY29udGFpbnMob3Bjb2RlKTsKQEAgLTcyNiwxMSAr
NzUzLDExIEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJldGVyOjp1bndpbmRDYWwKICAgICAv
LyBoYXZlIHRvIHN1YnRyYWN0IDEuCiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKElOVEVSUFJF
VEVSKQogICAgIGlmIChjYWxsZXJGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQotICAg
ICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1l
LT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogICAgIGVsc2UK
ICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxG
cmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbGlmIEVOQUJMRShKSVQpCi0gICAgYnl0ZWNvZGVP
ZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7
CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZy
YW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2Vsc2UKICAgICBieXRlY29kZU9mZnNldCA9
IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAxOwog
I2VuZGlmCkBAIC01MTcwLDEwICs1MTk3LDEwIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OnJldHJpZXZl
TGFzdENhbGxlcihDYWwKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpOwogI2lmIEVOQUJMRShKSVQp
CiAgICAgZWxzZQotICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0
ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJh
bWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAjZWxzZQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2Fs
bGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAg
IGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJG
cmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogICAgIGxpbmVOdW1iZXIgPSBj
YWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCAtIDEpOwogICAgIHNvdXJjZUlEID0gY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KS0+c291cmNlSUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNs
dWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk9wY29k
ZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgogCkBAIC00NSw2ICs0Niw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBKU0Z1
bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdp
c3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKQEAgLTEwMCwxOSArMTAyLDIxIEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIENhY2hlZENhbGw7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgogICAgICAg
ICBJbnRlcnByZXRlcigpOworICAgICAgICB+SW50ZXJwcmV0ZXIoKTsKICAgICAgICAgCi0gICAg
ICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGNhblVzZUpJVCk7CisgICAgICAgIHZvaWQgaW5pdGlh
bGl6ZShMTEludDo6RGF0YSosIGJvb2wgY2FuVXNlSklUKTsKIAogICAgICAgICBSZWdpc3RlckZp
bGUmIHJlZ2lzdGVyRmlsZSgpIHsgcmV0dXJuIG1fcmVnaXN0ZXJGaWxlOyB9CiAgICAgICAgIAog
ICAgICAgICBPcGNvZGUgZ2V0T3Bjb2RlKE9wY29kZUlEIGlkKQogICAgICAgICB7CiAgICAgICAg
ICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJM
RShMTElOVCkKICAgICAgICAgICAgIHJldHVybiBtX29wY29kZVRhYmxlW2lkXTsKICNlbHNlCiAg
ICAgICAgICAgICByZXR1cm4gaWQ7CkBAIC0xMjIsNyArMTI2LDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7
CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVE
X0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgQVNTRVJU
KGlzT3Bjb2RlKG9wY29kZSkpOworICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlSURUYWJsZS5n
ZXQob3Bjb2RlKTsKKyNlbGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAg
ICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOwogICAgICAgICAgICAgaWYgKCFtX2Vu
YWJsZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3
aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKTsKQEAgLTEzMiw2ICsxMzksMTEgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIGJvb2wgZW5hYmxlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBtX2VuYWJsZWQ7CisgICAgICAgIH0KIAogICAgICAgICBib29sIGlzT3Bjb2RlKE9w
Y29kZSk7CiAKQEAgLTE5OSw3ICsyMTEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
UmVnaXN0ZXJGaWxlIG1fcmVnaXN0ZXJGaWxlOwogICAgICAgICAKLSNpZiBFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIE9wY29kZSog
bV9vcGNvZGVUYWJsZTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwor
ICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFw
cyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCisjZWxpZiBFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bj
b2RlSURzXTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAg
ICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNv
ZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHJldmlzaW9uIDEw
NjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
IGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlIHsK
ICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVnaXN0ZXJGaWxlKTsKQEAgLTgxLDYgKzgy
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBi
b29sIGdyb3dTbG93Q2FzZShSZWdpc3RlciopOwogICAgICAgICB2b2lkIHJlbGVhc2VFeGNlc3ND
YXBhY2l0eSgpOwogICAgICAgICB2b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFs
dWUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2Fs
bFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorCisjaWYgQ09NUElMRVIoR0NDKQor
CisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSW5saW5lQVNNLmgiCisjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1ZhbHVlSW5saW5lTWV0aG9kcy5oIgorI2luY2x1
ZGUgIlNjb3BlQ2hhaW4uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2V4dGVybiAiQyIgRW5jb2Rl
ZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7CisKKyNpZiBDUFUoWDg2XzY0KQorYXNtICgK
KyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00
MCglcjEzKSwgJXIxM1xuIgorICAgICJtb3YgJXIxMywgJXJkaVxuIgorICAgICJqbXAgIiBTWU1C
T0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUp
ICJcbiIKKyk7CisjZWxpZiBDUFUoWDg2KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5H
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgorICAgICJt
b3YgJWVkaSwgNCglZXNwKVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04o
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUo
QVJNX1RIVU1CMikKK2FzbSAoCisiLnRleHQiICJcbiIKKyIuYWxpZ24gMiIgIlxuIgorIi5nbG9i
bCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1C
T0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorIi50aHVtYiIgIlxuIgorIi50aHVtYl9m
dW5jICIgVEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1C
T0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgImxkciByNSwg
W3I1LCAjLTQwXSIgIlxuIgorICAgICJjcHkgcjAsIHI1IiAiXG4iCisgICAgImIgIiBTWU1CT0xf
U1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJc
biIKKyk7CisjZW5kaWYKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVU
VVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxE
YXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gQ09NUElMRVIoR0NDKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisjZGVmaW5lIEhvc3RDYWxsUmV0dXJuVmFs
dWVfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisvLyBVbmZvcnR1bmF0ZWx5IHRo
aXMgb25seSB3b3JrcyBvbiBHQ0MtbGlrZSBjb21waWxlcnMuIEFuZCBpdCdzIGN1cnJlbnRseSBv
bmx5IHVzZWQKKy8vIGJ5IExMSW50IGFuZCBERkcsIHdoaWNoIGFsc28gYXJlIHJlc3RyaWN0ZWQg
dG8gR0NDLWxpa2UgY29tcGlsZXJzLiBXZSBzaG91bGQKKy8vIHByb2JhYmx5IGZpeCB0aGF0IGF0
IHNvbWUgcG9pbnQuCisjaWYgQ09NUElMRVIoR0NDKQorCisjaWYgQ0FMTElOR19DT05WRU5USU9O
X0lTX1NURENBTEwKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gQ0RFQ0wK
KyNlbHNlCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OCisjZW5kaWYKKwor
bmFtZXNwYWNlIEpTQyB7CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRV
Uk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKK30KKworI2VuZGlmIC8v
IENPTVBJTEVSKEdDQykKKworI2VuZGlmIC8vIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMDYxNTApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUs
OCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9P
UChvcF9wcm9maWxlX3dpbGxfY2FsbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfbmV3X3Nj
b3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9zY29wZSkKKyAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAg
ICBERUZJTkVfT1Aob3BfcHV0X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5
X3ZhbCkKQEAgLTQ4Nyw2ICs0ODksOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2Fz
ZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcG9zdF9pbmMpCiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9wcmVfZGVjKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Ao
b3BfcHJlX2luYykKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6
CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfcHV0X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVf
Z2xvYmFsKQpAQCAtNTI2LDYgKzUzMCwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93
Q2FzZXMoKQogCiBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25F
bnRyeUFyaXR5Q2hlY2spCiB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmlu
dGYoIkNvbXBpbGluZyBKSVQgY29kZSFcbiIpOworI2VuZGlmCisgICAgCiAjaWYgRU5BQkxFKFZB
TFVFX1BST0ZJTEVSKQogICAgIG1fY2FuQmVPcHRpbWl6ZWQgPSBtX2NvZGVCbG9jay0+Y2FuQ29t
cGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtNjkwLDggKzY5OCwxMiBAQCBKSVRDb2RlIEpJVDo6
cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAgICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0
aW9uID0gbV9jb2RlQmxvY2stPnN0cnVjdHVyZVN0dWJJbmZvKG1fbWV0aG9kQ2FsbENvbXBpbGF0
aW9uSW5mb1tpXS5wcm9wZXJ0eUFjY2Vzc0luZGV4KS5jYWxsUmV0dXJuTG9jYXRpb247CiAgICAg
fQogCi0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQpIHsKKyNp
ZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2NhbkJlT3B0aW1p
emVkCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICB8fCB0cnVlCisjZW5kaWYKKyAgICAgICAg
KSB7CiAgICAgICAgIENvbXBhY3RKSVRDb2RlTWFwOjpFbmNvZGVyIGppdENvZGVNYXBFbmNvZGVy
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZz
ZXQgPCBtX2xhYmVscy5zaXplKCk7ICsrYnl0ZWNvZGVPZmZzZXQpIHsKICAgICAgICAgICAgIGlm
IChtX2xhYmVsc1tieXRlY29kZU9mZnNldF0uaXNTZXQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ29kZS5oCShyZXZpc2lvbiAxMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgSklUQ29kZSgpIHsgfQogI2VuZGlmCiAgICAgcHVibGljOgotICAg
ICAgICBlbnVtIEpJVFR5cGUgeyBIb3N0Q2FsbFRodW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07
CisgICAgICAgIGVudW0gSklUVHlwZSB7IE5vbmUsIEhvc3RDYWxsVGh1bmssIEludGVycHJldGVy
VGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBK
SVRUeXBlIGJvdHRvbVRpZXJKSVQoKQogICAgICAgICB7CkBAIC02Niw4ICs2NiwxOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBERkdKSVQ7CiAgICAgICAgIH0KICAgICAg
ICAgCisgICAgICAgIHN0YXRpYyBib29sIGlzT3B0aW1pemluZ0pJVChKSVRUeXBlIGppdFR5cGUp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IERGR0pJVDsKKyAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgc3RhdGljIGJvb2wgaXNCYXNlbGluZUNvZGUoSklUVHlw
ZSBqaXRUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBJbnRl
cnByZXRlclRodW5rIHx8IGppdFR5cGUgPT0gQmFzZWxpbmVKSVQ7CisgICAgICAgIH0KKyAgICAg
ICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgSklUQ29kZSgpCisgICAgICAgICAgICA6IG1f
aml0VHlwZShOb25lKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNzUsNiArODYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIDogbV9yZWYocmVmKQogICAgICAgICAgICAgLCBt
X2ppdFR5cGUoaml0VHlwZSkKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGppdFR5cGUg
IT0gTm9uZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3IgISgp
IGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHJldmlzaW9u
IDEwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDE1ICszMywyMSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9y
LmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCiAjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAi
TExJbnRFbnRyeXBvaW50cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5h
bWUgQ29kZUJsb2NrVHlwZT4KIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ss
IEpJVENvZGUmIGppdENvZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAgICBpZiAo
aml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgCiAgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4g
dHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAK
ICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29k
ZTo6REZHSklUKQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZShnbG9iYWxE
YXRhLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUpOwpAQCAtNTUsMTAgKzYxLDcgQEAgaW5saW5l
IGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbAogICAgICAgICB9CiAgICAgICAgIGpp
dENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSk7CiAgICAg
fQotI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0
b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVj
b2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7Ci0jZW5kaWYKKyAgICBjb2RlQmxvY2stPmhhbmRs
ZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRD
b2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKICAgICAKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTY2LDkgKzY5LDE0IEBAIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJp
YXRlKEpTR2wKIAogaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVC
bG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0
aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJ
VFR5cGUgaml0VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5
cGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFnbG9iYWxEYXRhLmNh
blVzZUpJVCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVu
bGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7
CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAgICAgICBkZmdDb21waWxl
ZCA9IERGRzo6dHJ5Q29tcGlsZUZ1bmN0aW9uKGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwg
aml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKQEAgLTgzLDExICs5MSw3IEBAIGlubGlu
ZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmkKICAgICAgICAgfQogICAgICAgICBq
aXRDb2RlID0gSklUOjpjb21waWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksICZqaXRD
b2RlV2l0aEFyaXR5Q2hlY2spOwogICAgIH0KLSNpZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykK
LSAgICBpZiAoIUJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKLSAgICAg
ICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwotI2Vu
ZGlmCi0gICAgCisgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1
bml0eSgpOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFy
aXR5Q2hlY2spOwogICAgIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAxMDYxNTApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NCw3ICs2NCw3IEBAIEV4Y2VwdGlvbkhhbmRsZXIgZ2VuZXJpY1Rocm93KEpTR2xvYmFsRGEK
IAogRXhjZXB0aW9uSGFuZGxlciBqaXRUaHJvdyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4
ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBSZXR1cm5BZGRyZXNz
UHRyIGZhdWx0TG9jYXRpb24pCiB7Ci0gICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRh
LCBjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRl
Y29kZU9mZnNldChmYXVsdExvY2F0aW9uKSk7CisgICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9i
YWxEYXRhLCBjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
LT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUsIGZhdWx0TG9jYXRpb24pKTsKIH0KIAogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDEwNjE1MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xOTI4LDcgKzE5MjgsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6
ZV9mcm9tCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNrRnJhbWUuYXJnc1swXS5p
bnQzMigpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmludGYoIkVudGVy
ZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6
YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIs
IGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlv
blJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsK
KyAgICBwcmludGYoIiVwOiBFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVD
b3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlv
bkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNv
dW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxv
Y2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAgaWYgKGNvZGVC
bG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewpAQCAtMjE4Myw0NSArMjE4MywxMyBA
QCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotaW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFt
ZS0+Y2FsbGVlKCkpOwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAg
ICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5l
cmF0ZWRCeXRlY29kZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAgICAvLyBU
aGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6
ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lzdGVyRmls
ZS0+Z3JvdyhjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBj
b3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1l
bnRzIHdpdGggdW5kZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVnaXN0ZXIq
IHNyYyA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGNhbGxG
cmFtZS0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGludCBlbmQgPSAt
Q2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZv
ciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07Ci0KLSAg
ICBlbmQgLT0gZGVsdGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3Rb
aV0gPSBqc1VuZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxs
RnJhbWU6OmNyZWF0ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1lIDw9IHJl
Z2lzdGVyRmlsZS0+ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0KIERFRklO
RV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9J
TklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0g
YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9y
Q2FsbCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFy
aXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNh
bGwpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRp
b25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FE
RFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkp
KTsKIApAQCAtMjIzNCw3ICsyMjAyLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9w
X2NvbnN0cnVjdAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxG
cmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxs
RnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBD
YWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zvcihj
YWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKICAg
ICBpZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9w
Q2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBj
cmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9u
IDEwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgSlNJbnRlcmZhY2VKSVRf
aAogI2RlZmluZSBKU0ludGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRp
b25zLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9B
c3NlbWJsZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBMTEludENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2RlZmluZSBMTElO
VF9FWEVDVVRJT05fVFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFDSU5HIDAKKwor
I2VuZGlmIC8vIExMSW50Q29tbW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNs
dWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNp
bmNsdWRlICJPcGNvZGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisK
K0RhdGE6OkRhdGEoKQorICAgIDogbV9leGNlcHRpb25JbnN0cnVjdGlvbnMobmV3IEluc3RydWN0
aW9uW21heE9wY29kZUxlbmd0aCArIDFdKQorICAgICwgbV9vcGNvZGVNYXAobmV3IE9wY29kZVtu
dW1PcGNvZGVJRHNdKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3Ro
ICsgMTsgKytpKQorICAgICAgICBtX2V4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIg
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5l
KTsKKyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBtX29wY29kZU1hcFtvcGNv
ZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUpOworICAgIEZPUl9FQUNI
X09QQ09ERV9JRChPUENPREVfRU5UUlkpOworI3VuZGVmIE9QQ09ERV9FTlRSWQorfQorCitEYXRh
Ojp+RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAg
ZGVsZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAor
CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RGF0YV9oCisj
ZGVmaW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKwor
bmFtZXNwYWNlIExMSW50IHsKKworI2lmIEVOQUJMRShMTElOVCkKK2NsYXNzIERhdGEgeworcHVi
bGljOgorICAgIERhdGEoKTsKKyAgICB+RGF0YSgpOworICAgIAorICAgIEluc3RydWN0aW9uKiBl
eGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAg
eworICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgfQorcHJpdmF0ZToKKyAgICBJbnN0
cnVjdGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgT3Bjb2RlKiBtX29wY29kZU1h
cDsKK307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQpCisKKyNpZiBDT01QSUxFUihDTEFORykKKyNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdu
b3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlmCisKK2NsYXNzIERhdGEgeworcHVibGlj
OgorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAK
KyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfTsKKworI2lmIENPTVBJTEVSKENMQU5H
KQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFC
TEUoTExJTlQpCisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJ
bnREYXRhX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlw
b2ludHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCisjaWYgRU5BQkxFKExM
SU5UKQorCisjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgor
I2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5o
IgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlv
bkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlD
aGVjaykKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaWYg
KGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpI
b3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVS
ZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBqaXRDb2Rl
ID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2Vs
Zk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgYXJp
dHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgaml0
Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5
VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICAgICAgYXJp
dHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNr
VGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFT
U0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGppdENvZGUgPSBKSVRDb2RlKGds
b2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0
b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBhcml0eUNoZWNrID0gZ2xvYmFs
RGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJh
dG9yKS5jb2RlKCk7Cit9CisKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5V
c2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVy
Q29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9ldmFsX3Byb2xvZ3VlKSkpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxE
YXRhLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnBy
ZXRlclRodW5rKTsKK30KKwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNh
blVzZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGds
b2JhbERhdGEuZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwor
I2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEVudHJ5cG9pbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBMTEludEVudHJ5cG9pbnRzX2gKKyNkZWZpbmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNp
bmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUg
IkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV2
YWxDb2RlQmxvY2s7CitjbGFzcyBKSVRDb2RlOworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOworY2xh
c3MgUHJvZ3JhbUNvZGVCbG9jazsKKworbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5j
dGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgSklU
Q29kZSYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjayk7Cit2b2lkIGdldEV2YWxF
bnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5
cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYpOworCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBv
aW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXZhbENvZGVCbG9jayosIEpJVENvZGUmIGpp
dENvZGUpCit7CisgICAgZ2V0RXZhbEVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9
CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQ
cm9ncmFtQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRQcm9ncmFtRW50
cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludEVudHJ5
cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4
Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQor
CisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVk
ZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAi
TExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNh
bGxlcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0g
JmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50
ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2Ny
aXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KAorICAgICAgICBnbG9iYWxEYXRh
LCBleGVjLT5jYWxsZXJGcmFtZSgpLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sCisgICAgICAgIGV4
ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChleGVjLT5jYWxs
ZXJGcmFtZSgpLCBleGVjLT5yZXR1cm5QQygpKSk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5U
b1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4g
ZXhlYy0+Z2xvYmFsRGF0YSgpLmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30K
KworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlv
biogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERh
dGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhj
ZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNj
cmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBn
bG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9u
cygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBnbG9iYWxEYXRhLT5sbGludERhdGEuZXhj
ZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSog
ZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9
ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmlu
dGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAoY2FsbFRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+
ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2Jh
bERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2so
KS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpOworfQorCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmluZSBM
TEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2Ug
TExJbnQgeworCisvLyBUaHJvdyB0aGUgY3VycmVudGx5IGFjdGl2ZSBleGNlcHRpb24gaW4gdGhl
IGNvbnRleHQgb2YgdGhlIGNhbGxlcidzIGNhbGwgZnJhbWUuCit2b2lkIGludGVycHJldGVyVGhy
b3dJbkNhbGxlcihFeGVjU3RhdGUqKTsKKworLy8gVGVsbHMgeW91IHdoZXJlIHRvIGp1bXAgdG8g
aWYgeW91IHdhbnQgdG8gcmV0dXJuLXRvLXRocm93LCBhZnRlciB5b3UndmUgYWxyZWFkeQorLy8g
c2V0IHVwIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gdGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0lu
c3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOwor
CisvLyBTYXZlcyB0aGUgY3VycmVudCBQQyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2Vl
cGluZywgYW5kIGdpdmVzIHlvdSBhIFBDCisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJw
cmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBz
bG90cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBp
bnRlcnByZXRlcidzCisvLyBleGNlcHRpb24gaGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZl
IGl0IHRoZSBQQyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2gg
dG8ganVzdCByZXR1cm4gdGhhdCBQQyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMK
Ky8vIGxldHMgeW91IHRocmVhZCBleGNlcHRpb24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVs
cGVyIGZ1bmN0aW9ucyB1c2VkIGJ5CisvLyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJl
dHVyblRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hl
biB5b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxsIHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhl
Y1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisK
KyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludEV4Y2VwdGlvbnNfaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJMTEludEhlbHBlcnMuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkFy
Z3VtZW50cy5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQ
YXRocy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgorI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2lu
Y2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgi
CisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnBy
ZXRlci5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBMTEludCB7CisKKyNkZWZpbmUgTExJTlRfT1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRS
KHBjW2luZGV4XS51Lm9wZXJhbmQpKQorI2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+
cihwY1tpbmRleF0udS5vcGVyYW5kKSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0
LCBzZWNvbmQpIGRvIHsgICAgICAgXAorICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGE7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGI7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgfSBwYWlyOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgaW50NjRfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICB9IF9fcnRfdTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBfX3J0X3UucGFpci5hID0gZmlyc3Q7ICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBfX3J0X3UucGFpci5iID0gc2Vjb25kOyAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICByZXR1cm4gX19ydF91Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0g
d2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RX
TyhwYywgZXhlYykKKworI2RlZmluZSBMTElOVF9USFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fdF9nbG9i
YWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOyAgICAgICAgXAorICAgICAgICBfX3RfZ2xvYmFs
RGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgXAorICAgICAg
ICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVO
TElLRUxZKGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSB7ICAgXAorICAgICAgICAgICAg
cGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
fSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0g
d2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORCgpIGRvIHsgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAg
ICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQlJBTkNIKG9wY29kZSwgY29uZGl0
aW9uKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYm9vbCBfX2JfY29uZGl0
aW9uID0gKGNvbmRpdGlvbik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgaWYgKF9fYl9jb25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAt
IDFdLnUub3BlcmFuZDsgICAgICAgIFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9Q
Q09ERV9MRU5HVEgob3Bjb2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
TExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk4odmFsdWUpIGRv
IHsgICAgICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcl9yZXR1cm5WYWx1ZSA9ICh2
YWx1ZSk7ICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAg
ICAgICAgXAorICAgICAgICBMTElOVF9PUCgxKSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAg
XAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcGNvZGUs
IHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcnBfcmV0dXJu
VmFsdWUgPSAodmFsdWUpOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IExMSU5UX09QKDEpID0gX19ycF9yZXR1cm5WYWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51LnByb2ZpbGUtPm1fYnVj
a2V0c1swXSA9IFwKKyAgICAgICAgICAgIEpTVmFsdWU6OmVuY29kZShfX3JwX3JldHVyblZhbHVl
KTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisj
ZGVmaW5lIExMSU5UX0NBTExfRU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJO
X1RXTygoY2FsbFRhcmdldCksIChleGVjKSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4
ZWMsIHBjLCBleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBF
eGVjU3RhdGUqIF9fY3RfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fY3RfZ2xv
YmFsRGF0YSA9IChfX2N0X2V4ZWMpLT5nbG9iYWxEYXRhKCk7ICAgICAgXAorICAgICAgICBfX2N0
X2dsb2JhbERhdGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3RfZXhlYywgY2FsbFRvVGhyb3co
X19jdF9leGVjLCBfX2N0X3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBM
TElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jY2VfcGMg
PSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAo
VU5MSUtFTFkoX19jY2VfZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9U
aHJvdyhfX2NjZV9leGVjLCBfX2NjZV9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNk
ZWZpbmUgTExJTlRfQ0FMTF9SRVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9f
Y3JfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgdm9pZCogX19jcl9jYWxsVGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19jcl9leGVj
LT5jYWxsZXJGcmFtZSgpLCBfX2NyX3BjKTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1Q
TChfX2NyX2V4ZWMsIF9fY3JfY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdo
aWxlIChmYWxzZSkKKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29w
ZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGlu
dCBvcGVyYW5kKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3Aj
JXU6IFRyYWNlKCVkKTogJWQ6ICVkXG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwK
KyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0g
ZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICBl
eGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2Rl
KSwKKyAgICAgICAgICAgZnJvbVdoZXJlLAorICAgICAgICAgICBvcGVyYW5kLAorICAgICAgICAg
ICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQpOworICAgIExMSU5UX0VORCgpOworfQorCitleHRlcm4g
IkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJ
bnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIEpTVmFs
dWUgdmFsdWUgPSBMTElOVF9PUF9DKG9wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICB1bmlvbiB7Cisg
ICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCB0YWc7CisgICAgICAgICAgICB1
aW50MzJfdCBwYXlsb2FkOworICAgICAgICB9IGJpdHM7CisgICAgICAgIEVuY29kZWRKU1ZhbHVl
IGFzVmFsdWU7CisgICAgfSB1OworICAgIHUuYXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1
ZSk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2Uo
JWQpOiAlZDogJWQ6ICUwOHg6JTA4eCIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAor
ICAgICAgICAgICBleGVjLAorICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBl
eGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4
ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUp
LAorICAgICAgICAgICBmcm9tV2hlcmUsCisgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAgICAg
IHBjW29wZXJhbmRdLnUub3BlcmFuZCwKKyAgICAgICAgICAgdS5iaXRzLnRhZywKKyAgICAgICAg
ICAgdS5iaXRzLnBheWxvYWQpOworI2lmbmRlZiBOREVCVUcKKyAgICBwcmludGYoIjogJXMiLCB2
YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIHByaW50ZigiXG4iKTsKKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpCit7CisgICAg
cHJpbnRmKCIlcCAvICVwOiBpbiBwcm9sb2d1ZS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVj
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xv
Z3VlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhl
Yy0+Y2FsbGVlKCkpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxl
ZS0+anNFeGVjdXRhYmxlKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXhlY3V0YWJs
ZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiAl
cyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0
ZXJzID0gJXUsIG51bUNhbGxlZVJlZ2lzdGVycyA9ICV1LlxuIiwKKyAgICAgICAgICAgY29kZUJs
b2NrLCBleGVjLCBjb21tZW50LCBjYWxsZWUsIGV4ZWN1dGFibGUsCisgICAgICAgICAgIGNvZGVC
bG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5t
X251bUNhbGxlZVJlZ2lzdGVycyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xv
Z3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVj
LCAiY2FsbCBwcm9sb2d1ZSIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkK
K3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBwcm9sb2d1ZSIs
IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9s
b2d1ZShleGVjLCAiY2FsbCBhcml0eSBjaGVjayIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3Ry
dWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IGFyaXR5
IGNoZWNrIiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKHRyYWNlKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJj
IyV6dSwgIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMs
CisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygp
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50Zigi
JXMsICIsIG9wY29kZU5hbWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQocGNbMF0udS5vcGNvZGUpXSk7CisjZWxzZQorICAgIHByaW50Zigib3AjJXUsICIsIGV4
ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUp
KTsKKyNlbmRpZgorICAgIHByaW50Zigic2NvcGUgJXBcbiIsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2Up
Cit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwg
b3AjJXUsIHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCks
CisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAt
IGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29k
ZSksCisgICAgICAgICAgIGV4ZWMtPnJldHVyblBDKCkudmFsdWUoKSk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK2lubGluZSBib29sIHNob3VsZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
Ly8gWW91IGNhbiBtb2RpZnkgdGhpcyB0byB0dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWls
ZGluZyB0aGUgd29ybGQuCisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQo
KTsKK30KKworZW51bSBFbnRyeUtpbmQgeyBQcm9sb2d1ZSwgQXJpdHlDaGVjayB9Oworc3RhdGlj
IEhlbHBlclJldHVyblR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiog
cGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBjaGFyICpuYW1lLCBFbnRyeUtpbmQga2lu
ZCkKK3sKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6IEVudGVy
ZWQgJXMgd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIG5hbWUsIGNvZGVC
bG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICghc2hv
dWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7
CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIGlmICghY29k
ZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklU
X1ZFUkJPU0VfT1NSKQorICAgICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBp
bGVkLlxuIik7CisjZW5kaWYKKyAgICB9CisgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAg
aWYgKGtpbmQgPT0gUHJvbG9ndWUpCisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2Nr
LT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7CisgICAg
QVNTRVJUKGtpbmQgPT0gQXJpdHlDaGVjayk7CisgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxv
Y2stPmdldEpJVENvZGVXaXRoQXJpdHlDaGVjaygpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGV4ZWMp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpCit7CisgICAgcmV0dXJuIGVudHJ5
T1NSKGV4ZWMsIHBjLCBleGVjLT5jb2RlQmxvY2soKSwgImVudHJ5X29zciIsIFByb2xvZ3VlKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKQorewor
ICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkp
LT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50
cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZW50
cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxl
KCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3QiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBl
bnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFi
bGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2siLCBBcml0eUNoZWNrKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAg
ICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+
anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAi
ZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2sp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChsb29wX29zcikKK3sKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9T
RV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCBsb29wX29zciB3aXRoIGV4ZWN1dGVDb3Vu
dGVyID0gJWRcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkp
OworI2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29k
ZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygw
LCBleGVjKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhl
Yy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAg
IHByaW50ZigiICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAg
IH0KKyAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICAKKyAgICBBU1NFUlQoY29kZUJsb2Nr
LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIAorICAgIFZlY3Rv
cjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+IG1hcDsKKyAgICBjb2RlQmxvY2stPmppdENvZGVN
YXAoKS0+ZGVjb2RlKG1hcCk7CisgICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5n
ID0gYmluYXJ5U2VhcmNoPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQsIEJ5dGVj
b2RlQW5kTWFjaGluZU9mZnNldDo6Z2V0Qnl0ZWNvZGVJbmRleD4obWFwLmJlZ2luKCksIG1hcC5z
aXplKCksIHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICBBU1NF
UlQobWFwcGluZyk7CisgICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9PSBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4ocGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkp
KTsKKyAgICAKKyAgICB2b2lkKiBqdW1wVGFyZ2V0ID0gY29kZUJsb2NrLT5nZXRKSVRDb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChtYXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsK
KyAgICBBU1NFUlQoanVtcFRhcmdldCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOX1RXTyhqdW1w
VGFyZ2V0LCBleGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSkKK3sKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJM
RShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCByZXBsYWNlIHdpdGgg
ZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0
ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoc2hvdWxkSklUKGV4ZWMpKSB7Cisg
ICAgICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsK
KyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICAgICAgcHJpbnRmKCIgICAgQ29k
ZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAg
Y29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgfSBlbHNlCisgICAgICAgIGNvZGVCbG9jay0+ZG9u
dEpJVEFueXRpbWVTb29uKCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spCit7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAg
ICBwcmludGYoIkNoZWNraW5nIHN0YWNrIGhlaWdodCB3aXRoIGV4ZWMgPSAlcC5cbiIsIGV4ZWMp
OworICAgIHByaW50ZigiQ29kZUJsb2NrID0gJXAuXG4iLCBleGVjLT5jb2RlQmxvY2soKSk7Cisg
ICAgcHJpbnRmKCJOdW0gY2FsbGVlIHJlZ2lzdGVycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2Nr
KCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICBwcmludGYoIk51bSB2YXJzID0gJXUuXG4i
LCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1WYXJzKTsKKyAgICBwcmludGYoIkN1cnJlbnQgZW5k
IGlzIGF0ICVwLlxuIiwgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZp
bGUoKS5lbmQoKSk7CisjZW5kaWYKKyAgICBBU1NFUlQoJmV4ZWMtPnJlZ2lzdGVycygpW2V4ZWMt
PmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVyc10gPiBleGVjLT5nbG9iYWxEYXRhKCku
aW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWV4
ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+
cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7
CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9i
YWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAg
ICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIHBjID0gcmV0dXJu
VG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihleGVjKTsKKyAgICB9CisgICAgTExJTlRfRU5EX0lN
UEwoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKK3sK
KyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3Io
ZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENv
ZGVGb3JDYWxsKTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNh
bGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNh
bGxlcihleGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVU
VVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0
cnVjdF9hcml0eUNoZWNrKQoreworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQ
YXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVy
LT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgaWYgKCFuZXdFeGVjKSB7
CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9i
YWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAg
ICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVS
Tl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhl
Yyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKK3sKKyNpZiBMTElOVF9IRUxQ
RVJfVFJBQ0lORworICAgIHByaW50ZigiQ3JlYXRpbmcgYW4gYWN0aXZhdGlvbiwgZXhlYyA9ICVw
IVxuIiwgZXhlYyk7CisjZW5kaWYKKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBKU0Fj
dGl2YXRpb246OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMsIHN0YXRpY19jYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSkp
OworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2
YXRpb24pKTsKKyAgICBMTElOVF9SRVRVUk4oSlNWYWx1ZShhY3RpdmF0aW9uKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQoreworICAgIEpTVmFsdWUg
YXJndW1lbnRzID0gSlNWYWx1ZShBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBleGVjLT51bmNoZWNr
ZWRSKHBjWzFdLnUub3BlcmFuZCkgPSBhcmd1bWVudHM7CisgICAgZXhlYy0+dW5jaGVja2VkUih1
bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVf
dGhpcykKK3sKKyAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGFzRnVuY3Rpb24oZXhlYy0+
Y2FsbGVlKCkpOworICAgIAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBDb25zdHJ1Y3REYXRh
IGNvbnN0cnVjdERhdGE7CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5n
ZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RU
eXBlSlMpOworI2VuZGlmCisgICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgSlNW
YWx1ZSBwcm90byA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAocHJvdG8uaXNPYmpl
Y3QoKSkKKyAgICAgICAgc3RydWN0dXJlID0gYXNPYmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChl
eGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGVsc2UKKyAgICAgICAgc3RydWN0dXJlID0gY29uc3Ry
dWN0b3ItPnNjb3BlKCktPmdsb2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAg
ICAKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJl
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpCit7CisgICAg
SlNWYWx1ZSB2MSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQodjEuaXNQcmlt
aXRpdmUoKSk7CisgICAgTExJTlRfUkVUVVJOKHYxLnRvVGhpc09iamVjdChleGVjKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVS
Tihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9uZXdfYXJyYXkpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMs
IGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4oJkxMSU5UX09QKDIpKSwgcGNbM10udS5vcGVyYW5kKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQoreworICAg
IExMSU5UX1JFVFVSTihjb25zdHJ1Y3RBcnJheShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+Y29u
c3RhbnRCdWZmZXIocGNbMl0udS5vcGVyYW5kKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfcmVnZXhwKQoreworICAgIFJlZ0V4cCogcmVnRXhw
ID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlZ2V4cChwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICgh
cmVnRXhwLT5pc1ZhbGlkKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9y
KGV4ZWMsICJJbnZhbGlkIGZsYWcgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsK
KyAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2JqZWN0OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KS0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4cCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbm90KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUxMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVhbChleGVj
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbighSlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
c3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpzdHJpY3RF
cXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KGpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xl
YW4oanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVy
ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2luYykKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICsgMSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYykKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gMSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9pbmMpCit7CisgICAgZG91YmxlIHJlc3Vs
dCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgy
KSA9IGpzTnVtYmVyKHJlc3VsdCArIDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1
bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKQoreworICAgIGRv
dWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAg
TExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQgLSAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJl
cikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSkK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoLUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRv
TnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpCit7Cisg
ICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdjIg
PSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lO
RworICAgIHByaW50ZigiVHJ5aW5nIHRvIGFkZCAlcyIsIHYxLmRlc2NyaXB0aW9uKCkpOworICAg
IHByaW50ZigiIHRvICVzLlxuIiwgdjIuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICAKKyAg
ICBpZiAodjEuaXNTdHJpbmcoKSAmJiAhdjIuaXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfUkVU
VVJOKGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9TdHJpbmcoZXhlYykpKTsKKyAg
ICAKKyAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIodjEuYXNOdW1iZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKKyAgICAK
KyAgICBMTElOVF9SRVRVUk4oanNBZGRTbG93Q2FzZShleGVjLCB2MSwgdjIpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIo
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKiBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
c3ViKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KS50b051bWJlcihleGVjKSAtIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX21vZCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoZm1vZChMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkudG9OdW1iZXIoZXhlYykpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hp
ZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgp
LnRvSW50MzIoZXhlYykgPDwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3JzaGlmdCkKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA+PiBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfdXJzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Jp
dGFuZCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9JbnQzMihleGVjKSAmIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG9yKQoreworICAgIExMSU5UX1JF
VFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIHwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfYml0eG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIF4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCku
dG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KQor
eworICAgIExMSU5UX1JFVFVSTihqc051bWJlcih+TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9J
bnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2lu
c3RhbmNlKQoreworICAgIEpTVmFsdWUgYmFzZVZhbCA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
OworI2lmbmRlZiBOREVCVUcKKyAgICBUeXBlSW5mbyB0eXBlSW5mbyhVbnNwZWNpZmllZFR5cGUp
OworICAgIEFTU0VSVCghYmFzZVZhbC5pc09iamVjdCgpCisgICAgICAgICAgIHx8ICEodHlwZUlu
Zm8gPSBhc09iamVjdChiYXNlVmFsKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkpLmltcGxlbWVu
dHNIYXNJbnN0YW5jZSgpKTsKKyNlbmRpZgorICAgIExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRQ
YXJhbUVycm9yKGV4ZWMsICJpbnN0YW5jZW9mIiwgYmFzZVZhbCkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KENvbW1vblNsb3dQYXRoczo6b3BJbnN0YW5jZU9mU2xvdyhleGVjLCBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoNCkuanNWYWx1ZSgp
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKQoreworICAgIExMSU5U
X1JFVFVSTihqc1R5cGVTdHJpbmdGb3JWYWx1ZShleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKQoreworICAg
IEpTVmFsdWUgdiA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4odi5pc0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLmlzQm9vbGVhbigpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS5pc051bWJlcigpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9pc19zdHJpbmcpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihpc0pTU3RyaW5nKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4o
anNJc09iamVjdFR5cGUoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKGpzSXNGdW5jdGlvblR5cGUoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KENvbW1vblNsb3dQYXRoczo6b3BJbihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9y
ZXNvbHZlKQoreworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlLCBDb21tb25T
bG93UGF0aHM6Om9wUmVzb2x2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihw
Y1syXS51Lm9wZXJhbmQpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZl
X3NraXApCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKAorICAgICAgICBvcF9yZXNvbHZl
X3NraXAsCisgICAgICAgIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlU2tpcCgKKyAgICAgICAg
ICAgIGV4ZWMsCisgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1sy
XS51Lm9wZXJhbmQpLAorICAgICAgICAgICAgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK3N0YXRp
YyBKU1ZhbHVlIHJlc29sdmVHbG9iYWwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMp
Cit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsK
KyAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpKTsKKyAgICBpbnQgcHJv
cGVydHkgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1sz
XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICAKKyAgICBBU1NFUlRfVU5VU0VEKHN0cnVjdHVyZSwg
c3RydWN0dXJlICE9IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOworICAgIAorICAgIElkZW50
aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KTsKKyAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3QpOworICAgIAorICAgIGlmIChnbG9iYWxPYmplY3Qt
PmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkpIHsKKyAgICAgICAgSlNWYWx1ZSBy
ZXN1bHQgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KTsKKyAgICAgICAgaWYgKHNsb3QuaXND
YWNoZWFibGVWYWx1ZSgpICYmICFnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVh
YmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFs
T2JqZWN0KSB7CisgICAgICAgICAgICBwY1szXS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAg
ICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBn
bG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIHBjWzRdID0gc2xvdC5jYWNo
ZWRPZmZzZXQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CisgICAgCisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVVu
ZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpOworICAgIHJldHVybiBKU1ZhbHVlKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCkKK3sKKyAgICBM
TElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWwsIHJlc29sdmVHbG9iYWwoZXhl
YywgcGMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5
bmFtaWMpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFsX2R5
bmFtaWMsIHJlc29sdmVHbG9iYWwoZXhlYywgcGMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRf
UkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIENvbW1vblNsb3dQYXRo
czo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUu
b3BlcmFuZCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSkK
K3sKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVy
KHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKHBjWzNdLnUub3BlcmFuZCkgeworICAgICAgICBK
U1ZhbHVlIGJhc2UgPSBKU0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNo
YWluKCksIHRydWUpOworICAgICAgICBpZiAoIWJhc2UpCisgICAgICAgICAgICBMTElOVF9USFJP
VyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJp
bmcoKSkpOworICAgICAgICBMTElOVF9SRVRVUk4oYmFzZSk7CisgICAgfQorICAgIAorICAgIExM
SU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2Jhc2UsIEpTQzo6cmVzb2x2ZUJhc2UoZXhl
YywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgZmFsc2UpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCit7CisgICAgSlNPYmplY3QqIG9i
amVjdCA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgUHJvcGVydHlTbG90
IHNsb3Qob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygp
LT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFvYmplY3QtPmdldFByb3Bl
cnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVy
cm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dp
dGhfYmFzZSkKK3sKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNv
bHZlV2l0aEJhc2UoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5v
cGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAg
IExMSU5UX09QKDIpID0gcmVzdWx0OworICAgIC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQg
aGF2ZSBwcm9maWxpbmcsIGJ1dCB3ZSBkb24ndCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3Qg
dXNlIGl0LgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cmVzb2x2ZV93aXRoX3RoaXMpCit7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0
aHM6Om9wUmVzb2x2ZVdpdGhUaGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVy
KHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2Fs
bHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUg
REZHIHdvbid0IHVzZSBpdC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dldF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMt
PmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlm
aWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworCisgICAg
SlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgxKSA9IHJlc3VsdDsKKworICAg
IGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCisg
ICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUKKyAgICAgICAgJiYgc2xvdC5j
YWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OlZhbHVlKSB7CisgICAgICAgIAor
ICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisg
ICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAg
ICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygp
KSB7CisgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1
cmUpOworICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAq
IHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwY1tPUENPREVf
TEVOR1RIKG9wX2dldF9ieV9pZCkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCit7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVC
bG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1
ZSk7CisgICAgTExJTlRfUkVUVVJOKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCkKK3sKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50
ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBpZiAocGNbOF0udS5vcGVyYW5k
KQorICAgICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIGVsc2UKKyAg
ICAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCks
IHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIGlmIChiYXNl
VmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAg
IAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAg
ICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAg
CisgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAg
ICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGlu
ZygpCisgICAgICAgICAgICAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAgICAgICAg
ICAgCisgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQ
cm9wZXJ0eSkgeworICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnko
KSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9
PSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lIG9mIHRoZSBtZXRob2RzIHdlIGNh
bGwKKyAgICAgICAgICAgICAgICAgICAgLy8gYmVsb3cgbWF5IEdDLgorICAgICAgICAgICAgICAg
ICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9i
eV9pZCk7CisKKyAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhl
YywgYmFzZUNlbGwpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAg
QVNTRVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1
cmUtPnByZXZpb3VzSUQoKSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9
IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAg
ICAgIHBjWzZdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMt
Pmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsK
KyAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5w
cm90b3R5cGVDaGFpbihleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsK
KyAgICAgICAgICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAg
ICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCksIGNoYWluKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAg
ICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51
Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX2RpcmVjdCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s0XS51LnN0
cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBw
Y1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X2lkKQoreworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmpl
Y3QgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b09iamVjdChleGVjKTsKKyAgICBib29sIGNv
dWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFz
ZU9iamVjdCwgZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCkpOwor
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGlmICghY291bGREZWxldGUgJiYgY29k
ZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlIGdldEJ5VmFs
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQor
eworICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmlu
ZygpKSkgeworICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCkt
PmZhc3RHZXRPd25Qcm9wZXJ0eShleGVjLCBhc1N0cmluZyhzdWJzY3JpcHQpLT52YWx1ZShleGVj
KSkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBpZiAoc3Vi
c2NyaXB0LmlzVUludDMyKCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJ
bnQzMigpOworICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJh
c2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGJh
c2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzSlNC
eXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJ
bmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5nZXRJ
bmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4
ZWMsIGkpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNj
cmlwdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIHJldHVybiBiYXNlVmFsdWUu
Z2V0KGV4ZWMsIHByb3BlcnR5KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9i
eV92YWwpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9ieV92YWwsIGdldEJ5
VmFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkK
K3sKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBp
ZiAoIWFyZ3VtZW50cykgeworICAgICAgICBhcmd1bWVudHMgPSBBcmd1bWVudHM6OmNyZWF0ZShl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpOworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKKyAgICAgICAgTExJTlRfT1AoMikgPSBhcmd1bWVudHM7CisgICAgICAgIGV4ZWMtPnVuY2hl
Y2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpID0gYXJn
dW1lbnRzOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgYXJn
dW1lbnRzLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZ2V0X2J5X3BuYW1lKQoreworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVj
LCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCkKK3sKKyAgICBKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNl
VmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigp
KSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAg
IGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgeworICAgICAgICAgICAgSlNBcnJheSoganNBcnJh
eSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChqc0FycmF5LT5jYW5TZXRJ
bmRleChpKSkKKyAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRleChnbG9iYWxEYXRhLCBp
LCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgSlNBcnJheTo6cHV0
QnlJbmRleChqc0FycmF5LCBleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBMTElOVF9FTkQo
KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpCisgICAg
ICAgICAgICAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgewor
ICAgICAgICAgICAgSlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZh
bHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAg
ICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNJbnQzMigpKTsKKyAgICAgICAgICAg
ICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZS5p
c051bWJlcigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZh
bHVlLmFzTnVtYmVyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaSwgdmFsdWUpOwor
ICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0
eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChleGVjLT5jb2Rl
QmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVy
dHksIHZhbHVlLCBzbG90KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2RlbF9ieV92YWwpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50
b09iamVjdChleGVjKTsKKyAgICAKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpOworICAgIAorICAgIGJvb2wgY291bGREZWxldGU7CisgICAgCisgICAgdWlu
dDMyX3QgaTsKKyAgICBpZiAoc3Vic2NyaXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAgY291bGRE
ZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
YmFzZU9iamVjdCwgZXhlYywgaSk7CisgICAgZWxzZSB7CisgICAgICAgIExMSU5UX0NIRUNLX0VY
Q0VQVElPTigpOworICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5k
ZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBwcm9wZXJ0eSk7CisgICAgfQorICAgIAor
ICAgIGlmICghY291bGREZWxldGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgp
KQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBk
ZWxldGUgcHJvcGVydHkuIikpOworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291
bGREZWxldGUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCkK
K3sKKyAgICBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS5wdXQoZXhlYywgcGNbMl0udS5vcGVyYW5k
LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgx
KS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVj
dChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+
Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJ
TlRfT1AoMykuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxl
KCktPmRlZmluZUdldHRlcihiYXNlT2JqLCBleGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1Ao
MykuanNWYWx1ZSgpKSwgMCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wdXRfc2V0dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVl
KCkuaXNPYmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9P
UCgxKS5qc1ZhbHVlKCkpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2Nr
KCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMyku
anNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIGJhc2VPYmotPm1ldGhvZFRhYmxlKCktPmRlZmlu
ZVNldHRlcihiYXNlT2JqLCBleGVjLCBpZGVudCwgYXNPYmplY3QoTExJTlRfT1AoMykuanNWYWx1
ZSgpKSwgMCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qbXBfc2NvcGVzKQoreworICAgIHVuc2lnbmVkIGNvdW50ID0gcGNbMV0udS5vcGVyYW5kOwor
ICAgIFNjb3BlQ2hhaW5Ob2RlKiB0bXAgPSBleGVjLT5zY29wZUNoYWluKCk7CisgICAgd2hpbGUg
KGNvdW50LS0pCisgICAgICAgIHRtcCA9IHRtcC0+cG9wKCk7CisgICAgZXhlYy0+c2V0U2NvcGVD
aGFpbih0bXApOworICAgIHBjICs9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKQoreworICAgIExMSU5UX0JSQU5D
SChvcF9qdHJ1ZSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pmYWxzZSkKK3sKKyAgICBMTElOVF9CUkFOQ0go
b3BfamZhbHNlLCAhTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKQoreworICAgIExMSU5UX0JSQU5DSChv
cF9qbGVzcywganNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5s
ZXNzKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmxlc3MsICFqc0xlc3M8dHJ1ZT4oZXhlYywg
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0go
b3BfamdyZWF0ZXIsIGpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qbmdyZWF0ZXIpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlciwgIWpzTGVzczxm
YWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1
ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKQoreworICAgIExM
SU5UX0JSQU5DSChvcF9qbGVzc2VxLCBqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2pubGVzc2VxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmxlc3NlcSwg
IWpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJl
cSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXJlcSwganNMZXNzRXE8ZmFsc2U+KGV4
ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyZXEpCit7CisgICAgTExJTlRf
QlJBTkNIKG9wX2puZ3JlYXRlcmVxLCAhanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSkKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExM
SU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIEFTU0VSVChzY3J1dGluZWUuaXNEb3VibGUoKSk7
CisgICAgZG91YmxlIHZhbHVlID0gc2NydXRpbmVlLmFzRG91YmxlKCk7CisgICAgaW50MzJfdCBp
bnRWYWx1ZSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKTsKKyAgICBpbnQgZGVmYXVsdE9m
ZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAodmFsdWUgPT0gaW50VmFsdWUpIHsKKyAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAg
cGMgKz0gY29kZUJsb2NrLT5pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5k
KS5vZmZzZXRGb3JWYWx1ZShpbnRWYWx1ZSwgZGVmYXVsdE9mZnNldCk7CisgICAgfSBlbHNlCisg
ICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKQoreworICAgIEpTVmFsdWUgc2NydXRp
bmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBw
Y1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKCFzY3J1dGluZWUuaXNTdHJpbmcoKSkKKyAgICAgICAg
cGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBlbHNlIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5zdHJp
bmdTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShhc1N0cmlu
ZyhzY3J1dGluZWUpLT52YWx1ZShleGVjKS5pbXBsKCksIGRlZmF1bHRPZmZzZXQpOworICAgIH0K
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5j
KQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAg
QVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUKKyAgICAgICAgICAg
fHwgIWNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpCisgICAgICAgICAgIHx8IGV4ZWMt
PnVuY2hlY2tlZFIoY29kZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsK
KyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ3JlYXRpbmcgZnVuY3Rpb24h
XG4iKTsKKyNlbmRpZgorICAgIExMSU5UX1JFVFVSTihjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChw
Y1syXS51Lm9wZXJhbmQpLT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmNfZXhwKQoreworICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBm
dW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzJdLnUub3BlcmFuZCk7CisgICAg
SlNGdW5jdGlvbiogZnVuYyA9IGZ1bmN0aW9uLT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4o
KSk7CisgICAgCisgICAgaWYgKCFmdW5jdGlvbi0+bmFtZSgpLmlzTnVsbCgpKSB7CisgICAgICAg
IEpTU3RhdGljU2NvcGVPYmplY3QqIGZ1bmN0aW9uU2NvcGVPYmplY3QgPSBKU1N0YXRpY1Njb3Bl
T2JqZWN0OjpjcmVhdGUoZXhlYywgZnVuY3Rpb24tPm5hbWUoKSwgZnVuYywgUmVhZE9ubHkgfCBE
b250RGVsZXRlKTsKKyAgICAgICAgZnVuYy0+c2V0U2NvcGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBm
dW5jLT5zY29wZSgpLT5wdXNoKGZ1bmN0aW9uU2NvcGVPYmplY3QpKTsKKyAgICB9CisgICAgCisg
ICAgTExJTlRfUkVUVVJOKGZ1bmMpOworfQorCitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBoYW5k
bGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1
ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgIEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29w
ZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2Nr
KDApOworCisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoY2FsbGVl
LCBjYWxsRGF0YSk7CisgICAgCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZUpT
KTsKKyAgICAKKyAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSG9zdCkgeworICAgICAg
ICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShj
YWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICAgICAgCisgICAg
ICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2Fz
dDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgICAgICB9CisgICAgICAgIAor
I2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgICAgIHByaW50ZigiQ2FsbCBjYWxsZWUgaXMg
bm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKwor
ICAgICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKTsKKyAgICAgICAgTExJTlRf
Q0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVl
KSk7CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAg
CisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIENvbnN0cnVjdFR5cGUgY29u
c3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEoY2FsbGVlLCBjb25zdHJ1Y3REYXRhKTsKKyAg
ICAKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlSlMpOworICAgIAor
ICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVIb3N0KSB7CisgICAgICAgIGds
b2JhbERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0
RGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICBMTElOVF9DQUxMX1JF
VFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAg
ICAgICBwcmludGYoIkNvbnN0cnVjdG9yIGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIs
IGNhbGxlZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5
cGUgPT0gQ29uc3RydWN0VHlwZU5vbmUpOworICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMs
IGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGNhbGxlZSkpOworfQorCitpbmxpbmUg
SGVscGVyUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVj
dGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSlNWYWx1ZSBjYWxsZWVBc1Zh
bHVlLCBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gMCkKK3sKKyAgICBKU0NlbGwq
IGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKKyAg
ICBpZiAoIWNhbGxlZUFzRnVuY3Rpb25DZWxsKQorICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENh
bGwoZXhlY0NhbGxlZSwgcGMsIGNhbGxlZUFzVmFsdWUsIGtpbmQpOworICAgIAorICAgIEpTRnVu
Y3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oY2FsbGVlQXNGdW5jdGlvbkNlbGwpOworICAgIGV4
ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oY2FsbGVlLT5zY29wZVVuY2hlY2tlZCgpKTsKKyAgICBF
eGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgpOworICAgIAor
ICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOworICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gMDsKKyAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAg
Y29kZVB0ciA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVzc0Zv
ckNhbGwoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlv
bkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxl
KTsKKyAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21waWxl
Rm9yKGV4ZWNDYWxsZWUsIGNhbGxlZS0+c2NvcGUoKSwga2luZCk7CisgICAgICAgIGlmIChlcnJv
cikKKyAgICAgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUo
KSwgcGMsIGVycm9yKTsKKyAgICAgICAgY29kZUJsb2NrID0gJmZ1bmN0aW9uRXhlY3V0YWJsZS0+
Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgICAgIEFTU0VSVChjb2RlQmxvY2spOwor
ICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0
YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQorICAgICAgICAg
ICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZVdpdGhBcml0
eUNoZWNrRm9yKGtpbmQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2RlUHRyID0gZnVu
Y3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxs
KCk7CisgICAgfQorICAgIAorICAgIGlmIChjYWxsTGlua0luZm8pIHsKKyAgICAgICAgaWYgKGNh
bGxMaW5rSW5mby0+aXNPbkxpc3QoKSkKKyAgICAgICAgICAgIGNhbGxMaW5rSW5mby0+cmVtb3Zl
KCk7CisgICAgICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlciA9IGV4ZWNDYWxsZWUtPmNhbGxlckZy
YW1lKCk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+Y2FsbGVlLnNldChleGVjQ2FsbGVyLT5nbG9i
YWxEYXRhKCksIGV4ZWNDYWxsZXItPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwgY2Fs
bGVlKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5zZXQoZXhlY0NhbGxl
ci0+Z2xvYmFsRGF0YSgpLCBleGVjQ2FsbGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxl
KCksIGNhbGxlZSk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+bWFjaGluZUNvZGVUYXJnZXQgPSBj
b2RlUHRyOworICAgICAgICBpZiAoY29kZUJsb2NrKQorICAgICAgICAgICAgY29kZUJsb2NrLT5s
aW5rSW5jb21pbmdDYWxsKGNhbGxMaW5rSW5mbyk7CisgICAgfQorICAgIAorICAgIExMSU5UX0NB
TExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCBjb2RlUHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwor
fQorCitpbmxpbmUgSGVscGVyUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChFeGVjU3RhdGUqIGV4ZWMs
IEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIC8v
IFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lLgorICAgIC8vIC0g
RmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAg
IC8vIC0gSWYgcG9zc2libGUsIGxpbmsgdGhlIGNhbGwncyBpbmxpbmUgY2FjaGUuCisgICAgLy8g
LSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUg
bmV3IGNhbGwgZnJhbWUuCisgICAgCisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhl
YyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hl
Y2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2Fs
bGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICAKKyAgICBBU1NFUlQocGNbNF0udS5jYWxs
TGlua0luZm8pOworICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIGtpbmQsIGNh
bGxlZUFzVmFsdWUsIHBjWzRdLnUuY2FsbExpbmtJbmZvKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2NhbGwpCit7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2Rl
Rm9yQ2FsbCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpCit7Cisg
ICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ29uc3RydWN0KTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncykKK3sKKyAgICAvLyBUaGlzIG5l
ZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZSB3aGlsZSByZXNwZWN0aW5nIHRo
ZSB2YXJpYWJsZSBhcmd1bWVudHMuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBh
bmQgY29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBt
YWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCisgICAg
CisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7Cisg
ICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gbG9hZFZhcmFyZ3MoCisgICAgICAgIGV4
ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLAorICAg
ICAgICBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHBj
WzRdLnUub3BlcmFuZCk7CisgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMp
OworICAgIAorICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUp
ID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsK
KyAgICBleGVjLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkg
PSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJn
cykpOworICAgIAorICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JD
YWxsLCBjYWxsZWVBc1ZhbHVlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxf
ZXZhbCkKK3sKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVl
KCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3Bl
cmFuZDsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7
CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNb
Ml0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAg
ICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFz
VmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkp
OworICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+
KCZsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVC
bG9jaygwKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3Vu
dCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2Nh
bGxfZXZhbCkpOworICAgIAorICAgIGlmICghaXNIb3N0RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwg
Z2xvYmFsRnVuY0V2YWwpKQorICAgICAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBj
LCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7CisgICAgCisgICAgZ2xvYmFsRGF0YS5ob3N0
Q2FsbFJldHVyblZhbHVlID0gZXZhbChleGVjQ2FsbGVlKTsKKyAgICBMTElOVF9DQUxMX1JFVFVS
TihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZh
dGlvbikKK3sKKyAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hh
aW4oKSk7CisgICAgSlNWYWx1ZSBhY3RpdmF0aW9uVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVl
KCk7CisgICAgaWYgKCFhY3RpdmF0aW9uVmFsdWUpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgdiA9
IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3Bl
cmFuZCkpLmpzVmFsdWUoKSkgeworICAgICAgICAgICAgaWYgKCFleGVjLT5jb2RlQmxvY2soKS0+
aXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICAgICAgYXNBcmd1bWVudHModiktPnRlYXJPZmYo
ZXhlYyk7CisgICAgICAgIH0KKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIEpTQWN0
aXZhdGlvbiogYWN0aXZhdGlvbiA9IGFzQWN0aXZhdGlvbihhY3RpdmF0aW9uVmFsdWUpOworICAg
IGFjdGl2YXRpb24tPnRlYXJPZmYoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBpZiAoSlNWYWx1
ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0u
dS5vcGVyYW5kKSkuanNWYWx1ZSgpKQorICAgICAgICBhc0FyZ3VtZW50cyh2KS0+ZGlkVGVhck9m
ZkFjdGl2YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBhY3RpdmF0aW9uKTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cykK
K3sKKyAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCktPnVzZXNBcmd1bWVudHMoKSAmJiAhZXhl
Yy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgYXNBcmd1bWVudHMo
ZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVy
YW5kKSkuanNWYWx1ZSgpKS0+dGVhck9mZihleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNhdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNT
dHJpbmcoZXhlYywgJkxMSU5UX09QKDIpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkudG9QcmltaXRpdmUoZXhlYykpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZ2V0X3BuYW1lcykKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgy
KS5qc1ZhbHVlKCk7CisgICAgaWYgKHYuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBw
YyArPSBwY1s1XS51Lm9wZXJhbmQ7CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAK
KyAgICBKU09iamVjdCogbyA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBvLT5zdHJ1Y3R1cmUoKTsKKyAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1By
b3BlcnR5TmFtZUl0ZXJhdG9yID0gc3RydWN0dXJlLT5lbnVtZXJhdGlvbkNhY2hlKCk7CisgICAg
aWYgKCFqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yIHx8IGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmNh
Y2hlZFByb3RvdHlwZUNoYWluKCkgIT0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSkK
KyAgICAgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
OmNyZWF0ZShleGVjLCBvKTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9IEpTVmFsdWUoanNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcik7CisgICAgTExJTlRfT1AoMikgPSBKU1ZhbHVlKG8pOworICAgIExM
SU5UX09QKDMpID0gUmVnaXN0ZXI6OndpdGhJbnQoMCk7CisgICAgTExJTlRfT1AoNCkgPSBSZWdp
c3Rlcjo6d2l0aEludChqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5zaXplKCkpOworICAgIAorICAg
IHBjICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X3BuYW1lcyk7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXh0X3BuYW1lKQoreworICAgIEpTT2JqZWN0
KiBiYXNlID0gYXNPYmplY3QoTExJTlRfT1AoMikuanNWYWx1ZSgpKTsKKyAgICBKU1N0cmluZyog
cHJvcGVydHkgPSBhc1N0cmluZyhMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIGlmIChiYXNl
LT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5LT52YWx1ZShleGVj
KSkpKSB7CisgICAgICAgIC8vIEdvIHRvIHRhcmdldC4KKyAgICAgICAgcGMgKz0gcGNbNl0udS5v
cGVyYW5kOworICAgIH0gLy8gRWxzZSwgZG9uJ3QgY2hhbmdlIHRoZSBQQywgc28gdGhlIGludGVy
cHJldGVyIHdpbGwgcmVsb29wLgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHVzaF9zY29wZSkKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgxKS5q
c1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIExMSU5UX09QKDEpID0gbzsKKyAgICBleGVj
LT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChvKSk7CisgICAgCisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUpCit7
CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnBvcCgpKTsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Nj
b3BlKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Cisg
ICAgSlNPYmplY3QqIHNjb3BlID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGNv
ZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVl
KCksIERvbnREZWxldGUpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFp
bigpLT5wdXNoKHNjb3BlKSk7CisgICAgTExJTlRfUkVUVVJOKHNjb3BlKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KQoreworICAgIExMSU5UX1RIUk9XKExMSU5UX09QX0Mo
MSkuanNWYWx1ZSgpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93X3JlZmVy
ZW5jZV9lcnJvcikKK3sKKyAgICBMTElOVF9USFJPVyhjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVj
LCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKQoreworICAgIGludCBkZWJ1Z0hv
b2tJRCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVy
YW5kOworICAgIGludCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVj
LT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVn
SG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIAorICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2Nh
bGwpCit7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT53aWxs
RXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKK3sKKyAgICAo
KlByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPmRpZEV4ZWN1dGUoZXhlYywg
TExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIExMSW50SGVscGVyc19oCisjZGVmaW5lIExMSW50SGVscGVyc19oCisK
KyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CisKKyNpZiBFTkFCTEUoTExJTlQpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3Rh
dGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKK3R5cGVkZWYg
aW50NjRfdCBIZWxwZXJSZXR1cm5UeXBlOworCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUg
bGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hl
cmUsIGludCBvcGVyYW5kKTsKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFj
ZV92YWx1ZShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVy
YW5kKTsKKworI2RlZmluZSBMTElOVF9IRUxQRVJfREVDTChuYW1lKSBcCisgICAgZXh0ZXJuICJD
IiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50XyMjbmFtZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0
aW9uKiBwYykKKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpOworTExJTlRfSEVM
UEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVS
X0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQ
RVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRy
YWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZSk7
CitMTElOVF9IRUxQRVJfREVDTChzcGVjaWFsX3RyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVu
dHJ5X29zcik7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwp
OworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOwor
TExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2sp
OworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChsb29wX29zcik7CitMTElOVF9IRUxQRVJfREVD
TChyZXBsYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2NyZWF0ZV9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJn
dW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcyk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY29udmVydF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uZXdfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25ld19yZWdleHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
cSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25zdHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3By
ZV9kZWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wb3N0X2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNu
dW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfYWRkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3N1Yik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2xzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl91cnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9iaXR4b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9pbnN0YW5jZW9mKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaXNfYm9vbGVhbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVy
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19zdHJpbmcpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2lzX29iamVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rp
b24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9yZXNvbHZlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3Vy
ZV9wcm9wZXJ0eV9leGlzdHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0
aF9iYXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0
X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2dldF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dl
dF9hcmd1bWVudF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFt
ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZGVsX2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5
X2luZGV4KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wdXRfc2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bXBfc2NvcGVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qdHJ1ZSk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfamZhbHNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qbmxlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3N3aXRjaF9pbW0pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9jaGFyKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXdfZnVuYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmNf
ZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJn
cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl90ZWFyX29mZl9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNhdCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZlKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9nZXRfcG5hbWVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXh0X3Bu
YW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hf
bmV3X3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9kZWJ1Zyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2Nh
bGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpOworCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2Vu
ZGlmIC8vIExMSW50SGVscGVyc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZmxpbmVBc21Db25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBMTEludE9mZmxpbmVBc21Db25maWdfaAorI2RlZmluZSBMTElu
dE9mZmxpbmVBc21Db25maWdfaAorCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BV
KFg4NikKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVf
QVNNX1g4NiAwCisjZW5kaWYKKworI2lmIENQVShBUk12NykKKyNkZWZpbmUgT0ZGTElORV9BU01f
QVJNdjcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMAorI2VuZGlmCisKKyNp
ZiAhQVNTRVJUX0RJU0FCTEVECisjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDEK
KyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDAKKyNlbmRpZgorCisj
aWYgQ1BVKEJJR19FTkRJQU4pCisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMQorI2Vs
c2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAwCisjZW5kaWYKKworI2lmIEVOQUJM
RShMTElOVF9PU1JfVE9fSklUKQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAxCisj
ZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIExM
SU5UX0VYRUNVVElPTl9UUkFDSU5HCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFD
SU5HIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNl
bmRpZgorCisjZW5kaWYgLy8gTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1
ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVFN0dWJz
LmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNUeXBl
SW5mby5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKdW1wVGFi
bGUuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRlICJNYXJr
ZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgorI2luY2x1ZGUgIlNjb3BlQ2hh
aW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5o
IgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0lt
cGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgT0ZGTElORV9BU01fT0ZGU0VUT0Yo
Y2xhenosIGZpZWxkKSBPQkpFQ1RfT0ZGU0VUT0YoY2xhenosIGZpZWxkKQorCitjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCog
ZHVtbXkoKTsKK307CisKK2NvbnN0IHVuc2lnbmVkKiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KCkKK3sKKyNpbmNsdWRlICJMTEludERlc2lyZWRPZmZzZXRzLmgiCisgICAgcmV0dXJuIGV4
dHJhY3RvclRhYmxlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworaW50IG1haW4oaW50LCBj
aGFyKiopCit7CisgICAgLy8gT3V0IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0aW9uLCBtYWtlIHN1
cmUgdGhhdCBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkgaXMgbGl2ZSwKKyAgICAvLyBh
bmQgdGhlIGV4dHJhY3RvclRhYmxlIGlzIGxpdmUsIHRvby4KKyAgICBwcmludGYoIiVwXG4iLCBK
U0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSk7CisgICAgcmV0dXJuIDA7Cit9Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludFRo
dW5rcy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSlNJbnRlcmZhY2VKSVQu
aCIKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworc3RhdGljIE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIHZvaWQgKCp0YXJnZXQpKCkpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0Owor
ICAgIAorICAgIC8vIEZJWE1FOiB0aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0byBkbyBp
dCBvbiBYODYsIGJ1dCBJJ20gbm90IHN1cmUgSSBjYXJlLgorICAgIGppdC5tb3ZlKEpTSW50ZXJm
YWNlSklUOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSksIEpTSW50
ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsK
KyAgICAKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0LCBHTE9C
QUxfVEhVTktfSUQpOworICAgIHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0
b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSk7
Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1
bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2Fs
bEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7Cisg
ICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1
bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFs
RGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7Cit9CisKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2Jh
bERhdGEsIGxsaW50X2V2YWxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQorewor
ICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9wcm9n
cmFtX3Byb2xvZ3VlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRUaHVua3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRUaHVua3NfaAor
I2RlZmluZSBMTEludFRodW5rc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lm
IEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRhOworCituYW1lc3BhY2UgTExJbnQg
eworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNv
bnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFs
RGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlD
aGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
IGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2Vu
ZGlmIC8vIExMSW50VGh1bmtzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjM4MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworCisjIENyYXNoIGNvdXJzZSBvbiB0aGUgbGFuZ3VhZ2UgdGhhdCB0aGlzIGlzIHdy
aXR0ZW4gaW4gKHdoaWNoIEkganVzdCBjYWxsCisjICJhc3NlbWJseSIgZXZlbiB0aG91Z2ggaXQn
cyBtb3JlIHRoYW4gdGhhdCk6CisjCisjIC0gTW9zdGx5IGdhcy1zdHlsZSBvcGVyYW5kIG9yZGVy
aW5nLiBUaGUgbGFzdCBvcGVyYW5kIHRlbmRzIHRvIGJlIHRoZQorIyAgIGRlc3RpbmF0aW9uLiBT
byAiYSA6PSBiIiBpcyB3cml0dGVuIGFzICJtb3YgYiwgYSIuIEJ1dCB1bmxpa2UgZ2FzLAorIyAg
IGNvbXBhcmlzb25zIGFyZSBpbi1vcmRlciwgc28gImlmIChhIDwgYikiIGlzIHdyaXR0ZW4gYXMK
KyMgICAiYmlsdCBhLCBiLCAuLi4iLgorIworIyAtICJiIiA9IGJ5dGUsICJoIiA9IDE2LWJpdCB3
b3JkLCAiaSIgPSAzMi1iaXQgd29yZCwgInAiID0gcG9pbnRlci4KKyMgICBDdXJyZW50bHkgdGhp
cyBpcyBqdXN0IDMyLWJpdCBzbyAiaSIgYW5kICJwIiBhcmUgaW50ZXJjaGFuZ2VhYmxlCisjICAg
ZXhjZXB0IHdoZW4gYW4gb3Agc3VwcG9ydHMgb25lIGJ1dCBub3QgdGhlIG90aGVyLgorIworIyAt
IEluIGdlbmVyYWwsIHZhbGlkIG9wZXJhbmRzIGZvciBtYWNybyBpbnZvY2F0aW9ucyBhbmQgaW5z
dHJ1Y3Rpb25zIGFyZQorIyAgIHJlZ2lzdGVycyAoZWcgInQwIiksIGFkZHJlc3NlcyAoZWcgIjRb
dDBdIiksIGJhc2UtaW5kZXggYWRkcmVzc2VzCisjICAgKGVnICI3W3QwLCB0MSwgMl0iKSwgYWJz
b2x1dGUgYWRkcmVzc2VzIChlZyAiMHhhMDAwMDAwMFtdIiksIG9yIGxhYmVscworIyAgIChlZyAi
X2ZvbyIgb3IgIi5mb28iKS4gTWFjcm8gaW52b2NhdGlvbnMgY2FuIGFsc28gdGFrZSBhbm9ueW1v
dXMKKyMgICBtYWNyb3MgYXMgb3BlcmFuZHMuIEluc3RydWN0aW9ucyBjYW5ub3QgdGFrZSBhbm9u
eW1vdXMgbWFjcm9zLgorIworIyAtIExhYmVscyBtdXN0IGhhdmUgbmFtZXMgdGhhdCBiZWdpbiB3
aXRoIGVpdGhlciAiXyIgb3IgIi4iLiAgQSAiLiIgbGFiZWwKKyMgICBpcyBsb2NhbCBhbmQgZ2V0
cyByZW5hbWVkIGJlZm9yZSBjb2RlIGdlbiB0byBtaW5pbWl6ZSBuYW1lc3BhY2UKKyMgICBwb2xs
dXRpb24uIEEgIl8iIGxhYmVsIGlzIGFuIGV4dGVybiBzeW1ib2wgKGkuZS4gIi5nbG9ibCIpLiBU
aGUgIl8iCisjICAgbWF5IG9yIG1heSBub3QgYmUgcmVtb3ZlZCBkdXJpbmcgY29kZSBnZW4gZGVw
ZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGFzbQorIyAgIGNvbnZlbnRpb25zIGZvciBDIG5hbWUgbWFu
Z2xpbmcgb24gdGhlIHRhcmdldCBwbGF0Zm9ybSBtYW5kYXRlIGEgIl8iCisjICAgcHJlZml4Lgor
IworIyAtIEEgIm1hY3JvIiBpcyBhIGxhbWJkYSBleHByZXNzaW9uLCB3aGljaCBtYXkgYmUgZWl0
aGVyIGFub255bW91cyBvcgorIyAgIG5hbWVkLiBCdXQgdGhpcyBoYXMgY2F2ZWF0cy4gIm1hY3Jv
IiBjYW4gdGFrZSB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLAorIyAgIHdoaWNoIG1heSBiZSBtYWNy
b3Mgb3IgYW55IHZhbGlkIG9wZXJhbmRzLCBidXQgaXQgY2FuIG9ubHkgcmV0dXJuCisjICAgY29k
ZS4gQnV0IHlvdSBjYW4gZG8gVHVyaW5nLWNvbXBsZXRlIHRoaW5ncyB2aWEgY29udGludWF0aW9u
IHBhc3NpbmcKKyMgICBzdHlsZTogIm1hY3JvIGZvbyAoYSwgYikgYihhKSBlbmQgZm9vKGZvbywg
Zm9vKSIuIEFjdHVhbGx5LCBkb24ndCBkbworIyAgIHRoYXQsIHNpbmNlIHlvdSdsbCBqdXN0IGNy
YXNoIHRoZSBhc3NlbWJsZXIuCisjCisjIC0gQW4gImlmIiBpcyBhIGNvbmRpdGlvbmFsIG9uIHNl
dHRpbmdzLiBBbnkgaWRlbnRpZmllciBzdXBwbGllZCBpbiB0aGUKKyMgICBwcmVkaWNhdGUgb2Yg
YW4gImlmIiBpcyBhc3N1bWVkIHRvIGJlIGEgI2RlZmluZSB0aGF0IGlzIGF2YWlsYWJsZQorIyAg
IGR1cmluZyBjb2RlIGdlbi4gU28geW91IGNhbid0IHVzZSAiaWYiIGZvciBjb21wdXRhdGlvbiBp
biBhIG1hY3JvLCBidXQKKyMgICB5b3UgY2FuIHVzZSBpdCB0byBzZWxlY3QgZGlmZmVyZW50IHBp
ZWNlcyBvZiBjb2RlIGZvciBkaWZmZXJlbnQKKyMgICBwbGF0Zm9ybXMuCisjCisjIC0gQXJndW1l
bnRzIHRvIG1hY3JvcyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIHJhdGhlciB0aGFuIGR5bmFtaWMg
c2NvcGluZy4KKyMgICBDb25zdCdzIGFsc28gZm9sbG93IGxleGljYWwgc2NvcGluZyBhbmQgbWF5
IG92ZXJyaWRlIChoaWRlKSBhcmd1bWVudHMKKyMgICBvciBvdGhlciBjb25zdHMuIEFsbCB2YXJp
YWJsZXMgKGFyZ3VtZW50cyBhbmQgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBvcGVy
YW5kcy4gQWRkaXRpb25hbGx5LCBhcmd1bWVudHMgKGJ1dCBub3QgY29uc3RhbnRzKSBjYW4gYmUg
Ym91bmQKKyMgICB0byBtYWNyb3MuCisKKworIyBUaGVzZSBkZWNsYXJhdGlvbnMgbXVzdCBtYXRj
aCBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaC4KK2NvbnN0IENhbGxGcmFtZUhlYWRlclNpemUg
PSA0OAorY29uc3QgQXJndW1lbnRDb3VudCA9IC00OAorY29uc3QgQ2FsbGVyRnJhbWUgPSAtNDAK
K2NvbnN0IENhbGxlZSA9IC0zMgorY29uc3QgU2NvcGVDaGFpbiA9IC0yNAorY29uc3QgUmV0dXJu
UEMgPSAtMTYKK2NvbnN0IENvZGVCbG9jayA9IC04CisKK2NvbnN0IFRoaXNBcmd1bWVudE9mZnNl
dCA9IC1DYWxsRnJhbWVIZWFkZXJTaXplIC0gOAorCisjIERlY2xhcmUgc29tZSBhbGlhc2VzIGZv
ciB0aGUgcmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAorCisjIE9mZnNldHMg
bmVlZGVkIGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRpb24uCitpZiBCSUdf
RU5ESUFOCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQg
PSA0CitlbHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0IFBheWxvYWRPZmZz
ZXQgPSAwCitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCitjb25zdCBJ
bnQzMlRhZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51bGxUYWcgPSAtMwor
Y29uc3QgVW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQorY29uc3QgRW1wdHlW
YWx1ZVRhZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29uc3QgTG93ZXN0VGFn
ID0gRGVsZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25zdCBTdHJpbmdUeXBl
ID0gNQorY29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFncyBjb25zdGFudHMuCitj
b25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVtZW50c0hhc0luc3Rh
bmNlID0gMgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDgKKworIyBIZWFw
IGFsbG9jYXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4
ID0gMworCisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3QgRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNvbnN0YW50cy4KK2Nv
bnN0IEdsb2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0IEZ1bmN0aW9uQ29k
ZSA9IDIKKworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0aGUgYXJn
dW1lbnQgY291bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRhZ09m
ZnNldAorCisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25zdCBWZWN0b3JTaXpl
T2Zmc2V0ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisjIFN0cmluZyBmbGFn
cy4KK2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxpdGllcworbWFjcm8g
Y3Jhc2goKQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3ZlIDAsIHQwCisgICAg
Y2FsbCB0MAorZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAgaWYgQVNTRVJUX0VO
QUJMRUQKKyAgICAgICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAgY3Jhc2goKQorICAgIC5vazoK
KyAgICBlbmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVz
dGluYXRpb25SZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGxyLCBkZXN0aW5h
dGlvblJlZ2lzdGVyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBvcCBkZXN0aW5hdGlvblJlZ2lz
dGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIHJlc3Rv
cmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQorICAgIGlmIEFSTXY3
CisgICAgICAgIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAgZWxzaWYgWDg2CisgICAgICAg
IHB1c2ggc291cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitl
bmQKKworbWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQwor
ICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHBjT2Zm
c2V0KQorICAgIGxzaGlmdGkgMiwgcGNPZmZzZXQKKyAgICBhZGRwIHBjT2Zmc2V0LCBQQworICAg
IGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZzZXQpCisgICAgbG9h
ZGkgcGNPZmZzZXQsIHQwCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQwKQorZW5kCisK
K21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFn
T2Zmc2V0W2Nmcl0sIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBjQ2FsbDIoZnVuY3Rp
b24sIGFyZzEsIGFyZzIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAg
ICAgICBtb3ZlIGFyZzIsIHQxCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAor
ICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisg
ICAgY2FsbCBmdW5jdGlvbgorZW5kCisKKyMgVGhpcyBiYXJlbHkgd29ya3MuIGFyZzMgYW5kIGFy
ZzQgc2hvdWxkIHByb2JhYmx5IGJlIGltbWVkaWF0ZXMuCittYWNybyBjQ2FsbDQoZnVuY3Rpb24s
IGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcx
LCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgICAgIG1vdmUgYXJnMywgdDIKKyAgICAg
ICAgbW92ZSBhcmc0LCB0MworICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAg
ICAgICAgcG9rZSBhcmcyLCAxCisgICAgICAgIHBva2UgYXJnMywgMgorICAgICAgICBwb2tlIGFy
ZzQsIDMKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlv
bgorZW5kCisKK21hY3JvIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGNDYWxsMihoZWxwZXIsIGNm
ciwgUEMpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVn
Z2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVyYW5kIGluIHRoZSBp
bnN0cnVjdGlvbiBzdHJlYW0uIGZyb21XaGVyZQorIyBzaG91bGQgYmUgYW4gaW1tZWRpYXRlIGlu
dGVnZXIgLSBhbnkgaW50ZWdlciB5b3UgbGlrZTsgdXNlIGl0IHRvIGlkZW50aWZ5IHRoZSBwbGFj
ZSB5b3UncmUKKyMgZGVidWdnaW5nIGZyb20uIG9wZXJhbmQgc2hvdWxkIGxpa2V3aXNlIGJlIGFu
IGltbWVkaWF0ZSwgYW5kIHNob3VsZCBpZGVudGlmeSB0aGUgb3BlcmFuZAorIyBpbiB0aGUgaW5z
dHJ1Y3Rpb24gc3RyZWFtIHlvdSdkIGxpa2UgdG8gcHJpbnQgb3V0LgorbWFjcm8gdHJhY2VPcGVy
YW5kKGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX29wZXJhbmQs
IGNmciwgUEMsIGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUg
dDEsIGNmcgorZW5kCisKKyMgRGVidWdnaW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBsaWtlIHRvIHBy
aW50IHRoZSB2YWx1ZSBvZiBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbgorIyBzdHJlYW0u
IFNhbWUgYXMgdHJhY2VPcGVyYW5kKCksIGJ1dCBhc3N1bWVzIHRoYXQgdGhlIG9wZXJhbmQgaXMg
YSByZWdpc3RlciwgYW5kIHByaW50cyBpdHMKKyMgdmFsdWUuCittYWNybyB0cmFjZVZhbHVlKGZy
b21XaGVyZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX3ZhbHVlLCBjZnIsIFBD
LCBmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIK
K2VuZAorCittYWNybyB0cmFjZUV4ZWN1dGlvbigpCisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcK
KyAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfdHJhY2UpCisgICAgZW5kCitlbmQKKworIyBDYWxs
IGEgaGVscGVyIGZvciBjYWxsIG9wY29kZXMuCittYWNybyBjYWxsQ2FsbEhlbHBlcihhZHZhbmNl
LCBoZWxwZXIsIGFjdGlvbikKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQywgdDAKKyAgICBzdG9y
ZXAgdDAsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIGNDYWxsMihoZWxwZXIs
IGNmciwgUEMpCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYWN0aW9uKHQwKQorZW5kCisKK21hY3Jv
IHNsb3dQYXRoRm9yQ2FsbChhZHZhbmNlLCBoZWxwZXIpCisgICAgY2FsbENhbGxIZWxwZXIoCisg
ICAgICAgIGFkdmFuY2UsCisgICAgICAgIGhlbHBlciwKKyAgICAgICAgbWFjcm8gKGNhbGxlZSkK
KyAgICAgICAgICAgIGNhbGwgY2FsbGVlCisgICAgICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbCgp
CisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklUKGluY3JlbWVudCwg
YWN0aW9uKQorICAgIGlmIEpJVF9FTkFCTEVECisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0MAorICAgICAgICBiYWRkaXMgaW5jcmVtZW50LCBDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRl
Q291bnRlclt0MF0sIC5jb250aW51ZQorICAgICAgICBhY3Rpb24oKQorICAgIC5jb250aW51ZToK
KyAgICBlbmQKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgY2hl
Y2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMSwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAg
IHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgICAgICAgICBj
Q2FsbDIoX2xsaW50X2xvb3Bfb3NyLCBjZnIsIFBDKQorICAgICAgICAgICAgbW92ZSB0MSwgY2Zy
CisgICAgICAgICAgICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAgICAgICAgam1wIHQwCisgICAg
ICAgIC5yZWNvdmVyOgorICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNl
dFtjZnJdLCBQQworICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZv
ckVwaWxvZ3VlKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxMCwKKyAgICAgICAg
bWFjcm8gKCkKKyAgICAgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlcGxhY2UpCisgICAgICAg
IGVuZCkKK2VuZAorCittYWNybyBhc3NlcnROb3RDb25zdGFudChpbmRleCkKKyAgICBhc3NlcnQo
bWFjcm8gKG9rKSBiaWx0IGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgb2sgZW5k
KQorZW5kCisKKyMgSW5kZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVn
aXN0ZXJzLiBJbmRleCBpcyBub3QKKyMgY2hhbmdlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFy
aWFibGUoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxv
YWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
cGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2Yg
ZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2
YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxvYWRwIFRhZ09m
ZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5
bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4IGFuZCBwYXls
b2FkIG1heSBiZSB0aGUgc2FtZSByZWdpc3Rlci4gSW5kZXggbWF5IGJlIGNsb2JiZXJlZC4KK21h
Y3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAg
YmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAg
bG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6Cisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhZworICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25z
dGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFt0YWddLCB0YWcKKyAgICAjIFRoZXJl
IGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0g
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBi
ZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAg
ICBsc2hpZnRpIDMsIGluZGV4CisgICAgYWRkcCBpbmRleCwgdGFnCisgICAgbG9hZHAgUGF5bG9h
ZE9mZnNldFt0YWddLCBwYXlsb2FkCisgICAgbG9hZHAgVGFnT2Zmc2V0W3RhZ10sIHRhZworLmRv
bmU6CitlbmQKKworbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20o
aW5kZXgsIHRhZ0NoZWNrLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtjZnIsIGlu
ZGV4LCA4XSkKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2Fk
CisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBh
eWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JC
dWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2
aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFs
dWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICB0YWdDaGVjayhUYWdP
ZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdKQorICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9h
ZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4IGFuZCBwYXlsb2Fk
IG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90IG11dGF0ZWQuIFVzZQor
IyB0aGlzIGlmIHlvdSBrbm93IHdoYXQgdGhlIHRhZyBvZiB0aGUgdmFyaWFibGUgc2hvdWxkIGJl
LiBEb2luZyB0aGUgdGFnCisjIHRlc3QgYXMgcGFydCBvZiBsb2FkaW5nIHRoZSB2YXJpYWJsZSBy
ZWR1Y2VzIHJlZ2lzdGVyIHVzZSwgYnV0IG1heSBub3QKKyMgYmUgZmFzdGVyIHRoYW4gZG9pbmcg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSBmb2xsb3dlZCBieSBhIGJyYW5jaCBvbiB0aGUKKyMgdGFn
LgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFn
LCBwYXlsb2FkLCBzbG93KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3Vz
dG9tKAorICAgICAgICBpbmRleCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykgYmluZXEgYWN0
dWFsVGFnLCBleHBlY3RlZFRhZywgc2xvdyBlbmQsCisgICAgICAgIHBheWxvYWQpCitlbmQKKwor
bWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQoaW5kZXgsIHBheWxv
YWQpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCisgICAgICAg
IGluZGV4LAorICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBlbmQsCisgICAgICAgIHBheWxvYWQp
CitlbmQKKworbWFjcm8gd3JpdGVCYXJyaWVyKHRhZywgcGF5bG9hZCkKKyAgICAjIE5vdGhpbmcg
dG8gZG8sIHNpbmNlIHdlIGRvbid0IGhhdmUgYSBnZW5lcmF0aW9uYWwgb3IgaW5jcmVtZW50YWwg
Y29sbGVjdG9yLgorZW5kCisKK21hY3JvIHZhbHVlUHJvZmlsZSh0YWcsIHBheWxvYWQsIHByb2Zp
bGUpCisgICAgc3RvcmVpIHRhZywgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRb
cHJvZmlsZV0KKyAgICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQ
YXlsb2FkT2Zmc2V0W3Byb2ZpbGVdCitlbmQKKworCisjIEluZGljYXRlIHRoZSBiZWdpbm5pbmcg
b2YgTExJbnQuCitfbGxpbnRfYmVnaW46CisgICAgY3Jhc2goKQorCisKKyMgRW50cnlwb2ludHMg
aW50byB0aGUgaW50ZXJwcmV0ZXIKKworbWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0
dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3Rl
cgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRh
cmdldFJlZ2lzdGVyCisgICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0Zv
ckNhbGxbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1bmN0
aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRw
IENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhl
Y3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgRnVuY3Rp
b25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRSZWdpc3Rlcl0sIHRh
cmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodGFy
Z2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCitl
bmQKKworbWFjcm8gZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCisgICAg
c3RvcmVwIHNvdXJjZVJlZ2lzdGVyLCBDb2RlQmxvY2tbY2ZyXQorZW5kCisKK21hY3JvIG5vdEZ1
bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgICMgTm90aGluZyB0byBk
byEKK2VuZAorCisjIERvIHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8gZXhlY3V0ZSBjb2Rl
LiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENvZGVCbG9jayoKKyMgaW4gdDEuIE1heSBhbHNv
IHRyaWdnZXIgcHJvbG9ndWUgZW50cnkgT1NSLgorbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0
dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zckhlbHBlciwgdHJhY2VIZWxwZXIpCisgICAgcHJlc2Vy
dmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIAorICAgICMgU2V0IHVwIHRoZSBjYWxs
IGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgorICAgIHN0b3JlcCB0MiwgUmV0dXJu
UENbY2ZyXQorICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAgICAgIGNhbGxIZWxwZXIodHJh
Y2VIZWxwZXIpCisgICAgZW5kCisgICAgY29kZUJsb2NrR2V0dGVyKHQxKQorICAgIGlmIEpJVF9F
TkFCTEVECisgICAgICAgIGJhZGRpcyA1LCBDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRl
clt0MV0sIC5jb250aW51ZQorICAgICAgICBjQ2FsbDIob3NySGVscGVyLCBjZnIsIFBDKQorICAg
ICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgYnRweiB0MCwgLnJlY292ZXIKKyAgICAgICAgbG9h
ZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVS
ZXR1cm4odDIpCisgICAgICAgIGptcCB0MAorICAgIC5yZWNvdmVyOgorICAgICAgICBjb2RlQmxv
Y2tHZXR0ZXIodDEpCisgICAgLmNvbnRpbnVlOgorICAgIGVuZAorICAgIGNvZGVCbG9ja1NldHRl
cih0MSkKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgUEMuCisgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2luc3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpJbnN0cnVjdGlvbnM6
Om1faW5zdHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKK2VuZAorCisjIEV4
cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBs
ZWF2ZXMgYmVoaW5kLgorIyBNdXN0IGNhbGwgZGlzcGF0Y2goMCkgYWZ0ZXIgY2FsbGluZyB0aGlz
LgorbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbihwcm9maWxlQXJnU2tpcCkKKyAgICAjIFBy
b2ZpbGUgdGhlIGFyZ3VtZW50cy4gVW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBubyBjaG9pY2UgYnV0
IHRvIGRvIHRoaXMuIFRoaXMKKyAgICAjIGNvZGUgaXMgcHJldHR5IGhvcnJlbmRvdXMgYmVjYXVz
ZSBvZiB0aGUgZGlmZmVyZW5jZSBpbiBvcmRlcmluZyBiZXR3ZWVuCisgICAgIyBhcmd1bWVudHMg
YW5kIHZhbHVlIHByb2ZpbGVzLCB0aGUgZGVzaXJlIHRvIGhhdmUgYSBzaW1wbGUgbG9vcC1kb3du
LXRvLXplcm8KKyAgICAjIGxvb3AsIGFuZCB0aGUgZGVzaXJlIHRvIHVzZSBvbmx5IHRocmVlIHJl
Z2lzdGVycyBzbyBhcyB0byBwcmVzZXJ2ZSB0aGUgUEMgYW5kCisgICAgIyB0aGUgY29kZSBibG9j
ay4gSXQgaXMgbGlrZWx5IHRoYXQgdGhpcyBjb2RlIHNob3VsZCBiZSByZXdyaXR0ZW4gaW4gYSBt
b3JlCisgICAgIyBvcHRpbWFsIHdheSBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGhhdmUgbW9yZSB0
aGFuIGZpdmUgcmVnaXN0ZXJzIGF2YWlsYWJsZQorICAgICMgZm9yIGFyYml0cmFyeSB1c2UgaW4g
dGhlIGludGVycHJldGVyLgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3Qx
XSwgdDAKKyAgICBhZGRpIC1wcm9maWxlQXJnU2tpcCwgdDAgIyBVc2UgYWRkaSBiZWNhdXNlIHRo
YXQncyB3aGF0IGhhcyB0aGUgcGVlcGhvbGUKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWd0ZXEg
dDAsIDAsIG9rIGVuZCkKKyAgICBidGl6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9uZQorICAgIGxv
YWRwIENvZGVCbG9jazo6bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbdDFdLCB0MworICAgIG11bGkgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDAsIHQyICMgQWFhYWFo
aGhoISBOZWVkIHN0cmVuZ3RoIHJlZHVjdGlvbiEKKyAgICBuZWdpIHQwCisgICAgbHNoaWZ0aSAz
LCB0MAorICAgIGFkZHAgdDIsIHQzCisuYXJndW1lbnRQcm9maWxlTG9vcDoKKyAgICBsb2FkaSBU
aGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXQgKyA4IC0gcHJvZmlsZUFyZ1NraXAgKiA4W2Nm
ciwgdDBdLCB0MgorICAgIHN1YnAgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDMKKyAgICBzdG9yZWkg
dDIsIHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVlUHJvZmlsZTo6
bV9idWNrZXRzICsgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCAr
IFBheWxvYWRPZmZzZXQgKyA4IC0gcHJvZmlsZUFyZ1NraXAgKiA4W2NmciwgdDBdLCB0MgorICAg
IHN0b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBzaXplb2YgVmFsdWVQcm9maWxlICsgVmFsdWVQ
cm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGJhZGRpbnogOCwgdDAs
IC5hcmd1bWVudFByb2ZpbGVMb29wCisuYXJndW1lbnRQcm9maWxlRG9uZToKKyAgICAKKyAgICAj
IENoZWNrIHN0YWNrIGhlaWdodC4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVn
aXN0ZXJzW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQy
CisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjppbnRlcnByZXRlclt0Ml0sIHQyICAgIyBGSVhNRTog
Q2FuIGdldCB0byB0aGUgUmVnaXN0ZXJGaWxlIGZyb20gdGhlIEpJVFN0YWNrRnJhbWUKKyAgICBs
c2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MCwgY2ZyLCB0MAorICAgIGJwYWVxIEludGVycHJldGVy
OjptX3JlZ2lzdGVyRmlsZSArIFJlZ2lzdGVyRmlsZTo6bV9lbmRbdDJdLCB0MCwgLnN0YWNrSGVp
Z2h0T0sKKworICAgICMgU3RhY2sgaGVpZ2h0IGNoZWNrIGZhaWxlZCAtIG5lZWQgdG8gY2FsbCBh
IGhlbHBlci4KKyAgICBjYWxsSGVscGVyKF9sbGludF9yZWdpc3Rlcl9maWxlX2NoZWNrKQorLnN0
YWNrSGVpZ2h0T0s6CitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3
aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KK21hY3JvIGZ1bmN0aW9uQXJp
dHlDaGVjayhkb25lTGFiZWwsIGhlbHBlcikKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJn
dW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGJpYWVxIHQwLCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1l
dGVyc1t0MV0sIGRvbmVMYWJlbAorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpICAgIyBUaGlz
IGhlbHBlciBoYXMgYSBzaW1wbGUgcHJvdG9jb2w6IHQwID0gMCA9PiBubyBlcnJvciwgdDAgIT0g
MCA9PiBlcnJvcgorICAgIG1vdmUgdDEsIGNmcgorICAgIGJ0aXogdDAsIC5jb250aW51ZQorICAg
IGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xv
YmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6
OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorLmNvbnRpbnVlOgorICAgICMgUmVsb2FkIENv
ZGVCbG9jayBhbmQgUEMsIHNpbmNlIHRoZSBoZWxwZXIgY2xvYmJlcmVkIGl0LgorICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNb
dDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0aW9u
cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCisgICAgam1wIGRvbmVMYWJlbAorZW5kCisK
K19sbGludF9wcm9ncmFtX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJs
b2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwg
X2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2V2YWxf
cHJvbG9ndWU6CisgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1
bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJv
bG9ndWUpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJv
bG9ndWU6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5j
dGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCwg
X2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQorLmZ1bmN0aW9uRm9yQ2Fs
bEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKKyAgICBkaXNwYXRjaCgwKQor
ICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKKyAgICBwcm9s
b2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxv
Y2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCwgX2xsaW50
X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCisuZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCisgICAgZGlzcGF0Y2go
MCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrOgorICAgIHBy
b2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tT
ZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjaywgX2xs
aW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5m
dW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X2hlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCisKKwor
X2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUo
ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0
dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaywg
X2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKKyAgICBmdW5jdGlvbkFyaXR5
Q2hlY2soLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9sbGludF9oZWxwZXJfY29uc3RydWN0
X2FyaXR5Q2hlY2spCisKKyMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25zCisKK19sbGludF9v
cF9lbnRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQyCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVZhcnNbdDJdLCB0MgorICAgIGJ0aXogdDIs
IC5vcEVudGVyRG9uZQorICAgIG1vdmUgVW5kZWZpbmVkVGFnLCB0MAorICAgIG1vdmUgMCwgdDEK
Ky5vcEVudGVyTG9vcDoKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRb
Y2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAg
ICBidGlueiB0MiwgLm9wRW50ZXJMb29wCisub3BFbnRlckRvbmU6CisgICAgZGlzcGF0Y2goMSkK
KworCitfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1w
dHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pCisub3BDcmVhdGVBY3RpdmF0aW9uRG9uZToKKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbml0X2xhenlfcmVnOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jcmVhdGVfYXJndW1lbnRzOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKKy5vcENyZWF0
ZUFyZ3VtZW50c0RvbmU6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBhbGxvY2F0ZUJhc2lj
SlNPYmplY3Qoc2l6ZUNsYXNzSW5kZXgsIGNsYXNzSW5mb09mZnNldCwgc3RydWN0dXJlLCByZXN1
bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2xvd0Nhc2UpCisgICAgY29uc3Qgb2Zmc2V0T2ZNeVNp
emVDbGFzcyA9IEpTR2xvYmFsRGF0YTo6aGVhcCArIEhlYXA6Om1fb2JqZWN0U3BhY2UgKyBNYXJr
ZWRTcGFjZTo6bV9wcmVjaXNlU2l6ZUNsYXNzZXMgKyBzaXplQ2xhc3NJbmRleCAqIHNpemVvZiBN
YXJrZWRTcGFjZTo6U2l6ZUNsYXNzCisgICAgCisgICAgIyBGSVhNRTogd2UgY2FuIGdldCB0aGUg
Z2xvYmFsIGRhdGEgaW4gb25lIGxvYWQgZnJvbSB0aGUgc3RhY2suCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHNjcmF0Y2gxCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbc2Ny
YXRjaDFdLCBzY3JhdGNoMQorICAgIAorICAgICMgR2V0IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJl
ZSBsaXN0LiAgICAKKyAgICBsb2FkcCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6
OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0sIHJlc3VsdAorICAgIGJ0cHogcmVz
dWx0LCBzbG93Q2FzZQorICAgIAorICAgICMgUmVtb3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgZnJl
ZSBsaXN0LgorICAgIGxvYWRwIFtyZXN1bHRdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNo
Miwgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJl
ZUNlbGxbc2NyYXRjaDFdCisKKyAgICAjIEluaXRpYWxpemUgdGhlIG9iamVjdC4KKyAgICBsb2Fk
cCBjbGFzc0luZm9PZmZzZXRbc2NyYXRjaDFdLCBzY3JhdGNoMgorICAgIHN0b3JlcCBzY3JhdGNo
MiwgW3Jlc3VsdF0KKyAgICBzdG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jl
c3VsdF0KKyAgICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0XQorICAg
IGFkZHAgc2l6ZW9mIEpTT2JqZWN0LCByZXN1bHQsIHNjcmF0Y2gxCisgICAgc3RvcmVwIHNjcmF0
Y2gxLCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbcmVzdWx0XQorZW5kCisKK19sbGludF9v
cF9jcmVhdGVfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQw
CisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCBDZWxsVGFnLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisg
ICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBPYmpl
Y3RUeXBlLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGxvYWRwIEpTT2JqZWN0OjptX2luaGVyaXRv
cklEW3QwXSwgdDIKKyAgICBidHB6IHQyLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGFsbG9jYXRl
QmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6
anNGaW5hbE9iamVjdENsYXNzSW5mbywgdDIsIHQwLCB0MSwgdDMsIC5vcENyZWF0ZVRoaXNTbG93
KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBk
aXNwYXRjaCgzKQorCisub3BDcmVhdGVUaGlzU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfY3JlYXRlX3RoaXMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZ2V0X2Nh
bGxlZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9h
ZHAgUGF5bG9hZE9mZnNldCArIENhbGxlZVtjZnJdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jb252ZXJ0X3RoaXM6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ29udmVydFRoaXNTbG93CisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDAKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlw
ZVt0MF0sIE9iamVjdFR5cGUsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGRpc3BhdGNoKDIpCisK
Ky5vcENvbnZlcnRUaGlzU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY29udmVy
dF90aGlzKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX25ld19vYmplY3Q6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRw
IENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2Jq
ZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0dXJlW3QwXSwgdDEKKyAgICBhbGxvY2F0ZUJhc2ljSlNP
YmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxP
YmplY3RDbGFzc0luZm8sIHQxLCB0MCwgdDIsIHQzLCAub3BOZXdPYmplY3RTbG93KQorICAgIGxv
YWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgy
KQorCisub3BOZXdPYmplY3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdf
b2JqZWN0KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX25ld19hcnJheToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheSkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfYXJyYXlfYnVmZmVyOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2FycmF5X2J1
ZmZlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfcmVnZXhwOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X3JlZ2V4cCkK
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9tb3Y6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIs
IHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX25vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MCwgdDIsIHQzKQorICAgIGJpbmVxIHQyLCBCb29sZWFuVGFnLCAub3BOb3RTbG93
CisgICAgeG9yaSAxLCB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykK
KworLm9wTm90U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbm90KQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0
MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAub3BFcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFn
LCAub3BFcVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wRXFTbG93CisgICAgbG9hZGkg
NFtQQ10sIHQyCisgICAgY2llcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRh
Z09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQy
LCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEVxU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZXFfbnVsbDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10s
IHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAg
YmluZXEgdDEsIENlbGxUYWcsIC5vcEVxTnVsbEltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlw
ZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQorICAgIGptcCAu
b3BFcU51bGxOb3RJbW1lZGlhdGUKKy5vcEVxTnVsbEltbWVkaWF0ZToKKyAgICBjaWVxIHQxLCBO
dWxsVGFnLCB0MgorICAgIGNpZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKKyAgICBvcmkgdDIsIHQx
Cisub3BFcU51bGxOb3RJbW1lZGlhdGU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNl
dFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Zyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLm9wTmVxU2xvdworICAgIGJpZXEgdDIs
IENlbGxUYWcsIC5vcE5lcVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wTmVxU2xvdwor
ICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpbmVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9v
bGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wTmVxU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfbmVxKQorICAgIGRpc3BhdGNoKDQpCisgICAgCisKK19sbGlu
dF9vcF9uZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQw
CisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9h
ZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcE5lcU51bGxJbW1lZGlhdGUK
KyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0YnogU3RydWN0dXJl
OjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkLCB0MQorICAgIGptcCAub3BOZXFOdWxsTm90SW1tZWRpYXRlCisub3BOZXFOdWxsSW1tZWRp
YXRlOgorICAgIGNpbmVxIHQxLCBOdWxsVGFnLCB0MgorICAgIGNpbmVxIHQxLCBVbmRlZmluZWRU
YWcsIHQxCisgICAgYW5kaSB0MiwgdDEKKy5vcE5lcU51bGxOb3RJbW1lZGlhdGU6CisgICAgc3Rv
cmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5
bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gc3RyaWN0
RXEoZXF1YWxpdHlPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIs
IHQzLCAuc2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBD
ZWxsVGFnLCAubm90U3RyaW5nCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQy
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQzCisgICAgYmJuZXEgU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5ub3RT
dHJpbmcKKyAgICBiYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDNdLCBTdHJpbmdUeXBlLCAuc2xvdworLm5vdFN0cmluZzoKKyAgICBsb2FkaSA0W1BDXSwgdDIK
KyAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIHQwKQorICAgIHN0b3JlaSBCb29sZWFuVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBl
cikKKyAgICBkaXNwYXRjaCg0KQorZW5kCisKK19sbGludF9vcF9zdHJpY3RlcToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgc3RyaWN0RXEobWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNp
ZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9oZWxwZXJfc3RyaWN0ZXEpCisKKwor
X2xsaW50X29wX25zdHJpY3RlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc3RyaWN0RXEo
bWFjcm8gKGxlZnQsIHJpZ2h0LCByZXN1bHQpIGNpbmVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5k
LCBfbGxpbnRfaGVscGVyX25zdHJpY3RlcSkKKworCitfbGxpbnRfb3BfbGVzczoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3MpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzc2VxKQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX2dyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9ncmVhdGVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dy
ZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2dyZWF0ZXJlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcmVfaW5jOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVJbmNTbG93CisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBiYWRkaW8gMSwgdDEsIC5vcFByZUluY1Ns
b3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRj
aCgyKQorCisub3BQcmVJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVf
aW5jKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3ByZV9kZWM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZURlY1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MQorICAgIGJzdWJpbyAxLCB0MSwgLm9wUHJlRGVjU2xvdworICAgIHN0
b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5v
cFByZURlY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3ByZV9kZWMpCisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9zdF9pbmM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3RJbmNTbG93CisgICAgYmllcSB0
MCwgdDEsIC5vcFBvc3RJbmNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDIKKyAgICBtb3ZlIHQyLCB0MworICAgIGJhZGRpbyAxLCB0MywgLm9wUG9zdEluY1Nsb3cK
KyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0
MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQorLm9wUG9zdEluY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKworLm9wUG9z
dEluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfaW5jKQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX3Bvc3RfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0RGVjU2xvdworICAgIGJpZXEgdDAs
IHQxLCAub3BQb3N0RGVjRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBic3ViaW8gMSwgdDMsIC5vcFBvc3REZWNTbG93Cisg
ICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0KKy5vcFBvc3REZWNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3RE
ZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2RlYykKKyAgICBkaXNw
YXRjaCgzKQorCisKK19sbGludF9vcF90b19qc251bWJlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MCwgdDIsIHQzKQorICAgIGJpZXEgdDIsIEludDMyVGFnLCAub3BUb0pz
bnVtYmVySXNJbnQKKyAgICBiaWFlcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wVG9Kc251bWJlclNs
b3cKKy5vcFRvSnNudW1iZXJJc0ludDoKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQx
LCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3Bh
dGNoKDMpCisKKy5vcFRvSnNudW1iZXJTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl90b19qc251bWJlcikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZWdhdGU6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENd
LCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQxLCB0MikKKyAgICBiaW5lcSB0
MSwgSW50MzJUYWcsIC5vcE5lZ2F0ZVNyY05vdEludAorICAgIGJ0aXogdDIsIDB4N2ZmZmZmZmYs
IC5vcE5lZ2F0ZVNsb3cKKyAgICBuZWdpIHQyCisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0K
KyAgICBkaXNwYXRjaCgzKQorLm9wTmVnYXRlU3JjTm90SW50OgorICAgIGJpYSB0MSwgTG93ZXN0
VGFnLCAub3BOZWdhdGVTbG93CisgICAgeG9yaSAweDgwMDAwMDAwLCB0MQorICAgIHN0b3JlaSB0
MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wTmVnYXRlU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfbmVnYXRlKQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gYmlu
YXJ5T3BDdXN0b21TdG9yZShpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUsIGRvdWJsZU9wZXJhdGlv
biwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJ
bnQKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBsb2FkaSA0W1BDXSwg
dDIKKyAgICBpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUodDMsIHQxLCB0MCwgLnNsb3csIHQyKQor
ICAgIGRpc3BhdGNoKDUpCisKKy5vcDFOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRl
ZmluaXRlbHkgbm90IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGNvdWxkIGJlIGFueXRoaW5n
LgorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MywgTG93ZXN0VGFnLCAu
b3AxTm90SW50T3AyRG91YmxlCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGNp
MmQgdDEsIGZ0MQorICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6
CisgICAgZmlpMmQgdDEsIHQzLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBmaWkyZCB0MCwgdDIsIGZ0MAorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0
MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3Ay
Tm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IGFuIGludCwgdGhlIHNl
Y29uZCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90LgorICAgIGxvYWRpIDRbUENdLCB0MgorICAg
IGJpYSB0MywgTG93ZXN0VGFnLCAuc2xvdworICAgIGNpMmQgdDAsIGZ0MAorICAgIGZpaTJkIHQx
LCB0MywgZnQxCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAs
IFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIo
aGVscGVyKQorICAgIGRpc3BhdGNoKDUpCitlbmQKKworbWFjcm8gYmluYXJ5T3AoaW50ZWdlck9w
ZXJhdGlvbiwgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCisgICAgYmluYXJ5T3BDdXN0b21TdG9y
ZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisg
ICAgICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAg
ICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAg
IHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQs
CisgICAgICAgIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorZW5kCisKK19sbGludF9vcF9hZGQ6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHNsb3cpIGJhZGRpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCkgYWRkZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfYWRkKQorCisKK19sbGludF9vcF9tdWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmln
aHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgY29uc3Qgc2NyYXRjaCA9IGludDMyVGFnICAg
IyBXZSBrbm93IHRoYXQgd2UgY2FuIHJldXNlIHRoZSBpbnQzMlRhZyByZWdpc3RlciBzaW5jZSBp
dCBoYXMgYSBjb25zdGFudC4KKyAgICAgICAgICAgIG1vdmUgcmlnaHQsIHNjcmF0Y2gKKyAgICAg
ICAgICAgIGJtdWxpbyBsZWZ0LCBzY3JhdGNoLCBzbG93CisgICAgICAgICAgICBidGlueiBzY3Jh
dGNoLCAuZG9uZQorICAgICAgICAgICAgYmlsdCBsZWZ0LCAwLCAuc2xvdworICAgICAgICAgICAg
YmlsdCByaWdodCwgMCwgLnNsb3cKKyAgICAgICAgLmRvbmU6CisgICAgICAgICAgICBzdG9yZWkg
SW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHNj
cmF0Y2gsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQpIG11bGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX211bCkKKworCitfbGxpbnRfb3Bfc3ViOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBic3ViaW8g
bGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIHN1YmQg
bGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3N1YikKKworCitfbGxpbnRf
b3BfZGl2OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAor
ICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAg
ICAgICAgIGNpMmQgbGVmdCwgZnQwCisgICAgICAgICAgICBjaTJkIHJpZ2h0LCBmdDEKKyAgICAg
ICAgICAgIGRpdmQgZnQwLCBmdDEKKyAgICAgICAgICAgIGJjZDJpIGZ0MSwgcmlnaHQsIC5ub3RJ
bnQKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhd
CisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0K
KyAgICAgICAgICAgIGptcCAuZG9uZQorICAgICAgICAubm90SW50OgorICAgICAgICAgICAgc3Rv
cmVkIGZ0MSwgW2NmciwgaW5kZXgsIDhdCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgZGl2ZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfZGl2KQorCisKK19sbGludF9vcF9tb2Q6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9tb2QpCisgICAgZGlzcGF0Y2goNCkK
KworCittYWNybyBiaXRPcChvcGVyYXRpb24sIGhlbHBlciwgYWR2YW5jZSkKKyAgICBsb2FkaSAx
MltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDAp
CisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywg
LnNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xvdykK
KyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCisKKy5zbG93Ogor
ICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCitlbmQKKworX2xs
aW50X29wX2xzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfbHNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF9yc2hp
ZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRf
aGVscGVyX3JzaGlmdCwKKyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfdXJzaGlmdDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
c2xvdykKKyAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0CisgICAgICAgICAgICBiaWx0
IHJpZ2h0LCAwLCBzbG93CisgICAgICAgIGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl91cnNo
aWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF9iaXRhbmQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGFuZGkg
bGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdGFuZCwKKyAgICAgICAg
NSkKKworCitfbGxpbnRfb3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRP
cCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQsIHJpZ2h0IGVu
ZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXR4b3IsCisgICAgICAgIDUpCisKKworX2xsaW50
X29wX2JpdG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX2JpdG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRub3Q6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBiaW5lcSB0Miwg
SW50MzJUYWcsIC5vcEJpdG5vdFNsb3cKKyAgICBub3RpIHQzCisgICAgc3RvcmVpIHQyLCBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BCaXRub3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9iaXRub3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfY2hlY2tf
aGFzX2luc3RhbmNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDEK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAsIC5vcENo
ZWNrSGFzSW5zdGFuY2VTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBd
LCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgZGlz
cGF0Y2goMikKKworLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9pbnN0YW5jZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIENoZWNrIHRoYXQg
YmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9yLgorICAg
ICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuCisgICAgbG9hZGkgMTJbUENdLCB0
MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKHQxLCB0MCkKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6
bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJ
bnN0YW5jZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICAKKyAgICAjIEFjdHVhbGx5IGRvIHRoZSB3
b3JrLgorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEluc3RhbmNlb2ZT
bG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGJiYiBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9w
SW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQorICAgIAor
ICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCisgICAgbW92
ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxvb3A6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0Ml0sIHQyCisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZz
ZXRbdDJdLCB0MgorICAgIGJwZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQorICAgIGJ0aW56
IHQyLCAub3BJbnN0YW5jZW9mTG9vcAorCisgICAgbW92ZSAwLCB0MAorLm9wSW5zdGFuY2VvZkRv
bmU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5v
cEluc3RhbmNlb2ZTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbnN0YW5jZW9m
KQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3R5cGVvZjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3R5cGVvZikKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9pc191bmRlZmluZWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc191bmRlZmluZWQpCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfaXNfYm9vbGVhbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Jvb2xlYW4pCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfaXNfbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfaXNfbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX2lzX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2lzX3N0cmluZykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19v
YmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9pc19vYmplY3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfZnVuY3Rpb246
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19m
dW5jdGlvbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pbjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX3Jlc29sdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX3Jlc29sdmVfc2tpcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Jlc29sdmVfc2tpcCkKKyAgICBkaXNwYXRjaCg1KQorCisKK21hY3Jv
IHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dz
OgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAg
IFByb3BlcnR5IGlkZW50aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2suCisgICAgIyAxMltQ
Q10gIFN0cnVjdHVyZSBwb2ludGVyLCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVy
YXRvci4KKyAgICAjIDE2W1BDXSAgT2Zmc2V0IGluIGdsb2JhbCBvYmplY3QsIGluaXRpYWxpemVk
IHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cK
KyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9y
YWdlW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
c3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQwCisgICAg
dmFsdWVQcm9maWxlKHQyLCB0MywgdDApCitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFs
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICByZXNvbHZlR2xvYmFsKDYsIC5vcFJlc29sdmVH
bG9iYWxTbG93KQorICAgIGRpc3BhdGNoKDYpCisKKy5vcFJlc29sdmVHbG9iYWxTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNwYXRjaCg2
KQorCisKKyMgR2l2ZXMgeW91IHRoZSBzY29wZSBpbiB0MCwgd2hpbGUgYWxsb3dpbmcgeW91IHRv
IG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0aGUKKyMgc2NvcGVzIGFz
IHRoZXkgYXJlIHRyYXZlcnNlZC4gc2NvcGVDaGVjaygpIGlzIGNhbGxlZCB3aXRoIHR3byBhcmd1
bWVudHM6IHRoZSByZWdpc3RlcgorIyBob2xkaW5nIHRoZSBzY29wZSwgYW5kIGEgcmVnaXN0ZXIg
dGhhdCBjYW4gYmUgdXNlZCBmb3Igc2NyYXRjaC4gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QKKyMg
dXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQgc3R1ZmYgaW4gdDMgaWYgbmVlZCBiZS4KK21hY3JvIGdl
dFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2FkcCBTY29w
ZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIGRlQnJ1aWppbkluZGV4
T3BlcmFuZCwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorICAgIAorICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MQorICAgIGJpbmVxIENvZGVCbG9jazo6bV9jb2RlVHlwZVt0MV0sIEZ1
bmN0aW9uQ29kZSwgLmxvb3AKKyAgICBidGJ6IENvZGVCbG9jazo6bV9uZWVkc0Z1bGxTY29wZUNo
YWluW3QxXSwgLmxvb3AKKyAgICAKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZhdGlvblJl
Z2lzdGVyW3QxXSwgdDEKKworICAgICMgTmVlZCB0byBjb25kaXRpb25hbGx5IHNraXAgb3ZlciBv
bmUgc2NvcGUuCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcs
IC5ub0FjdGl2YXRpb24KKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNo
YWluTm9kZTo6bmV4dFt0MF0sIHQwCisubm9BY3RpdmF0aW9uOgorICAgIHN1YmkgMSwgdDIKKyAg
ICAKKyAgICBidGl6IHQyLCAuZG9uZQorLmxvb3A6CisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisg
ICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MAorICAgIHN1YmkgMSwgdDIKKyAg
ICBidGlueiB0MiwgLmxvb3AKKworLmRvbmU6CitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJh
bWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0aXZhdGlv
blN0cnVjdHVyZVt0M10sIHQzCisgICAgZ2V0U2NvcGUoCisgICAgICAgIDIwW1BDXSwKKyAgICAg
ICAgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKQorICAgICAgICAgICAgbG9hZHAgU2NvcGVDaGFpbk5v
ZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdwor
ICAgICAgICBlbmQpCisgICAgcmVzb2x2ZUdsb2JhbCg3LCAub3BSZXNvbHZlR2xvYmFsRHluYW1p
Y1Nsb3cpCisgICAgZGlzcGF0Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMpCisgICAgZGlzcGF0Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbF9keW5hbWlj
KQorICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX2dldF9zY29wZWRfdmFyOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQ
Q10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIEluZGV4IG9mIHJl
Z2lzdGVyIGluIHRoZSBzY29wZS4KKyAgICAjIDEyW1BDXSAgRGUgQnJ1aWppbiBpbmRleC4KKyAg
ICBnZXRTY29wZSgxMltQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRp
IDRbUENdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2Rl
OjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJz
W3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgdDMKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBs
b2FkaSAxNltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MCwgdDEpCisgICAgZGlzcGF0
Y2goNSkKKworCitfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGdldFNjb3BlKDhbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBs
b2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDMsIHQyKQor
ICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHdyaXRlQmFycmllcih0MywgdDIpCisgICAgbG9hZHAg
U2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVj
dDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W3QwLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwg
dDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxv
YWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAs
IHQxLCA4XSwgdDEKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0
b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGxvYWRpIDEyW1BDXSwgdDMK
KyAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9wdXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fcmVn
aXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisg
ICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQyLCB0MykKKyAgICBzdG9yZWkg
dDIsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W3Qw
LCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX2Jhc2U6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZl
X2Jhc2UpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZW5zdXJlX3Byb3BlcnR5X2V4
aXN0czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bf
cmVzb2x2ZV93aXRoX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19s
bGludF9vcF9yZXNvbHZlX3dpdGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQorICAgIGRpc3BhdGNoKDUp
CisKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBX
ZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBk
byBub3QgbW9kaWZ5IHRoZQorICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cgZm9y
IHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKKyAgICAjIHBpbmct
cG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3
aWxsIGNvbnRpbnVlCisgICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBB
dCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAorICAgICMgd2Ugd291bGQg
aGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAx
NltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcs
IHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZHAgSlNP
YmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKKyAgICBicG5lcSBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAg
bG9hZGkgVGFnT2Zmc2V0W3QwLCB0Ml0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwg
dDJdLCB0MgorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVp
IHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgMzJbUENdLCB0MQorICAg
IHZhbHVlUHJvZmlsZSh0MywgdDIsIHQxKQorICAgIGRpc3BhdGNoKDkpCisKKy5vcEdldEJ5SWRT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfaWQpCisgICAgZGlzcGF0
Y2goOSkKKworCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRz
TGVuZ3RoU2xvdworICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0s
IHQyCisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlz
cGF0Y2goNCkKKworLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10s
IHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBi
cG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgbG9h
ZGkgMjBbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MCwgdDIp
CisgICAgd3JpdGVCYXJyaWVyKHQwLCB0MikKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0Mywg
dDFdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBkaXNwYXRjaCg5
KQorCisub3BQdXRCeUlkU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5
X2lkKQorICAgIGRpc3BhdGNoKDkpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRp
b25hbENoZWNrcykKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisg
ICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQz
LCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAg
IGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBh
ZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENd
LCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAg
YWRkcCB0MSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDEsIHQyKQor
ICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbdDNdCisg
ICAgbG9hZGkgMjRbUENdLCB0MQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAg
ICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgZGlzcGF0Y2goOSkKK2Vu
ZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIHB1dEJ5SWRU
cmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKworCitf
bGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgIHB1dEJ5SWRUcmFuc2l0
aW9uKAorICAgICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQorICAgICAg
ICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRT
dHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bworICAgICAgICAKKyAgICAgICAgICAgIGxv
YWRwIDI4W1BDXSwgc2NyYXRjaAorICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnog
c2NyYXRjaCwgb2sgZW5kKQorICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVj
dG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBu
eiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5
cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAgICAgICAgLmxv
b3A6CisgICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9m
ZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgICAgICAgICBicG5lcSBv
bGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdworICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNo
CisgICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29s
ZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQp
CisKKworX2xsaW50X29wX2RlbF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9nZXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQQ10sIHQz
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQor
ICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MV0sIHQyCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxT
bG93KQorICAgIGJwbmVxIFt0MF0sIHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0Fy
cmF5OjptX3N0b3JhZ2VbdDBdLCB0MworICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3ZlY3Rvckxl
bmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRp
IEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAgICBs
b2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0
MQorICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAgIHN0b3Jl
aSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIHZhbHVlUHJvZmlsZSh0Miwg
dDEsIHQwKQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEdldEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGlu
dF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBJbnQzMlRhZywgdDIsIC5vcEdldEFyZ3Vt
ZW50QnlWYWxTbG93KQorICAgIGFkZGkgMSwgdDIKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsg
UGF5bG9hZE9mZnNldFtjZnJdLCB0MQorICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJndW1lbnRC
eVZhbFNsb3cKKyAgICBuZWdpIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgVGhp
c0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxvYWRpIFRo
aXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgc3Rv
cmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudEJ5VmFsU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfcG5hbWU6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDE2
W1BDXSwgdDAKKyAgICBicG5lcSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgLm9wR2V0
QnlQbmFtZVNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRp
IDIwW1BDXSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MworICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAorICAgIGJwbmVxIHQwLCBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0M10sIC5vcEdldEJ5UG5hbWVTbG93
CisgICAgbG9hZGkgMjRbUENdLCB0MAorICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAKKyAgICBz
dWJpIDEsIHQwCisgICAgYmlhZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2Fj
aGVhYmxlU2xvdHNbdDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRwIEpTT2JqZWN0Ojpt
X3Byb3BlcnR5U3RvcmFnZVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QyLCB0MCwgOF0s
IHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MiwgdDAsIDhdLCB0MworICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVp
IHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNykKKworLm9wR2V0
QnlQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9wbmFtZSkK
KyAgICBkaXNwYXRjaCg3KQorCisKK19sbGludF9vcF9wdXRfYnlfdmFsOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgSW50MzJUYWcsIHQy
LCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsRGF0
YTo6anNBcnJheUNsYXNzSW5mb1t0MF0sIHQwCisgICAgYnBuZXEgW3QxXSwgdDAsIC5vcFB1dEJ5
VmFsU2xvdworICAgIGJpYWVxIHQyLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MV0sIC5vcFB1
dEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQwCisgICAgYmll
cSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIEVtcHR5VmFs
dWVUYWcsIC5vcFB1dEJ5VmFsRW1wdHkKKy5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQ6CisgICAgbG9h
ZGkgMTJbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MSwgdDMp
CisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MykKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6
bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0b3JlaSB0MywgQXJyYXlTdG9y
YWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQp
CisKKy5vcFB1dEJ5VmFsRW1wdHk6CisgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFs
dWVzSW5WZWN0b3JbdDBdCisgICAgYmliIHQyLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXSwg
Lm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorICAgIGFkZGkgMSwgdDIsIHQxCisgICAgc3RvcmVpIHQx
LCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXQorICAgIGptcCAub3BQdXRCeVZhbFN0b3JlUmVz
dWx0CisKKy5vcFB1dEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0
X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9kZWxfYnlfdmFsOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X3Zh
bCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaW5kZXg6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaW5kZXgp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dldHRlcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9nZXR0ZXIpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9zZXR0ZXIpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfbG9vcDoKKyAgICBub3AKK19sbGludF9vcF9qbXA6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGRpc3BhdGNoQnJhbmNoKDRbUENdKQorCisKK19sbGludF9v
cF9qbXBfc2NvcGVzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfam1wX3Njb3BlcykKKyAgICBkaXNwYXRjaCgwKQorCisKK21hY3JvIGp1bXBUcnVl
T3JGYWxzZShjb25kaXRpb25PcCwgc2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQm9vbGVhblRhZywgdDAsIC5zbG93KQorICAg
IGNvbmRpdGlvbk9wKHQwLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6Cisg
ICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoc2xvdykK
KyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX3RydWU6CisgICAgbm9w
CitfbGxpbnRfb3BfanRydWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JG
YWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aW56IHZhbHVlLCB0YXJnZXQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2p0cnVlKQorCisKK19sbGludF9vcF9sb29wX2lm
X2ZhbHNlOgorICAgIG5vcAorX2xsaW50X29wX2pmYWxzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAganVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRp
eiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZmFsc2UpCisKKwor
bWFjcm8gZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYW5kbGVyKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
aW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgY2Vs
bEhhbmRsZXIoU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAu
dGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2go
OFtQQ10pCisKKy5pbW1lZGlhdGU6CisgICAgb3JpIDEsIHQxCisgICAgaW1tZWRpYXRlSGFuZGxl
cih0MSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorZW5kCisKK19sbGludF9vcF9qZXFfbnVs
bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAo
dmFsdWUsIHRhcmdldCkgYnRibnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdl
dCBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaWVxIHZhbHVlLCBOdWxsVGFn
LCB0YXJnZXQgZW5kKQorICAgIAorCitfbGxpbnRfb3Bfam5lcV9udWxsOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBi
dGJ6IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBt
YWNybyAodmFsdWUsIHRhcmdldCkgYmluZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisK
KworX2xsaW50X29wX2puZXFfcHRyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIENlbGxUYWcsIC5vcEpuZXFQdHJCcmFuY2gKKyAgICBicGVxIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQxLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKKy5vcEpuZXFQdHJCcmFuY2g6
CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorLm9wSm5lcVB0ckZhbGxUaHJvdWdoOgorICAg
IGRpc3BhdGNoKDQpCisKKworbWFjcm8gY29tcGFyZShpbnRlZ2VyQ29tcGFyZSwgZG91YmxlQ29t
cGFyZSwgaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0Mwor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZyh0MywgdDIsIHQzKQorICAgIGJpbmVxIHQwLCBJbnQzMlRhZywgLm9wMU5v
dEludAorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGludGVnZXJDb21w
YXJlKHQxLCB0MywgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5vdEludDoK
KyAgICBiaWEgdDAsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9w
MU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJk
IHQzLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgor
ICAgIGZpaTJkIHQzLCB0MiwgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgZmlpMmQgdDEsIHQw
LCBmdDAKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNw
YXRjaCg0KQorCisub3AyTm90SW50OgorICAgIGNpMmQgdDEsIGZ0MAorICAgIGJpYSB0MiwgTG93
ZXN0VGFnLCAuc2xvdworICAgIGZpaTJkIHQzLCB0MiwgZnQxCisgICAgZG91YmxlQ29tcGFyZShm
dDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLmp1bXBUYXJnZXQ6Cisg
ICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBl
cikKKyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX2xlc3M6CisgICAg
bm9wCitfbGxpbnRfb3Bfamxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUo
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdCBsZWZ0
LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzcykKKworCitf
bGxpbnRfb3Bfam5sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxdW4gbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzKQorCisK
K19sbGludF9vcF9sb29wX2lmX2dyZWF0ZXI6CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXI6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcikKKworCitfbGxpbnRfb3Bfam5ncmVhdGVy
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5ncmVhdGVyKQorCisKK19sbGludF9vcF9s
b29wX2lmX2xlc3NlcToKKyAgICBub3AKK19sbGludF9vcF9qbGVzc2VxOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmRsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2psZXNzZXEpCisKKworX2xsaW50X29wX2pubGVzc2VxOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRh
cmdldCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJkZ3R1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9qbmxlc3NlcSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyZXE6
CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBs
ZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJkZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl9qZ3JlYXRlcmVxKQorCisKK19sbGludF9vcF9qbmdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgdGFyZ2V0KSBiZGx0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfam5ncmVhdGVyZXEpCisKKworX2xsaW50X29wX2xvb3BfaGludDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGRpc3BhdGNo
KDEpCisKKworX2xsaW50X29wX3N3aXRjaF9pbW06CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1w
bGVKdW1wVGFibGUsIHQzICAgIyBGSVhNRTogd291bGQgYmUgbmljZSB0byBwZWVwaG9sZSB0aGlz
IQorICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1faW1tZWRpYXRlU3dpdGNoSnVtcFRh
YmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgYWRkcCB0MywgdDIKKyAgICBi
aW5lcSB0MSwgSW50MzJUYWcsIC5vcFN3aXRjaEltbU5vdEludAorICAgIHN1YmkgU2ltcGxlSnVt
cFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5j
aE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gK
KyAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJP
ZmZzZXRbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEsIC5v
cFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQor
Cisub3BTd2l0Y2hJbW1Ob3RJbnQ6CisgICAgYmliIHQxLCBMb3dlc3RUYWcsIC5vcFN3aXRjaElt
bVNsb3cgICMgR28gdG8gc2xvdyBwYXRoIGlmIGl0J3MgYSBkb3VibGUuCisub3BTd2l0Y2hJbW1G
YWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLm9wU3dpdGNoSW1tU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX2ltbSkKKyAgICBkaXNwYXRj
aCgwKQorCisKK19sbGludF9vcF9zd2l0Y2hfY2hhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6ZW9mIFNp
bXBsZUp1bXBUYWJsZSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2NoYXJh
Y3RlclN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGFk
ZHAgdDMsIHQyCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3Vn
aAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJibmVxIFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BT
d2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MF0sIHQw
CisgICAgYmluZXEgU3RyaW5nSW1wbDo6bV9sZW5ndGhbdDBdLCAxLCAub3BTd2l0Y2hDaGFyRmFs
bFRocm91Z2gKKyAgICBsb2FkcCBTdHJpbmdJbXBsOjptX2RhdGE4W3QwXSwgdDEKKyAgICBidGlu
eiBTdHJpbmdJbXBsOjptX2hhc2hBbmRGbGFnc1t0MF0sIEhhc2hGbGFnczhCaXRCdWZmZXIsIC5v
cFN3aXRjaENoYXI4Qml0CisgICAgbG9hZGggW3QxXSwgdDAKKyAgICBqbXAgLm9wU3dpdGNoQ2hh
clJlYWR5Cisub3BTd2l0Y2hDaGFyOEJpdDoKKyAgICBsb2FkYiBbdDFdLCB0MAorLm9wU3dpdGNo
Q2hhclJlYWR5OgorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJp
YWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0
W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxl
OjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBsb2FkaSBb
dDIsIHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAg
IGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdo
OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zd2l0Y2hfc3RyaW5n
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dp
dGNoX3N0cmluZykKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9uZXdfZnVuYzoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYnRpeiAxMltQQ10sIC5vcE5ld0Z1bmNVbmNoZWNrZWQK
KyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVt
cHR5VmFsdWVUYWcsIC5vcE5ld0Z1bmNEb25lCisub3BOZXdGdW5jVW5jaGVja2VkOgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuYykKKy5vcE5ld0Z1bmNEb25lOgorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19mdW5jX2V4cCkKKyAgICBkaXNw
YXRjaCgzKQorCisKK21hY3JvIGRvQ2FsbChoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRwIExMSW50Q2FsbExpbmtJbmZvOjpjYWxsZWVb
dDFdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0
MywgLm9wQ2FsbFNsb3cpCisgICAgYmluZXEgdDMsIHQyLCAub3BDYWxsU2xvdworICAgIGxvYWRp
IDEyW1BDXSwgdDMKKyAgICBhZGRwIDI0LCBQQworICAgIGxzaGlmdGkgMywgdDMKKyAgICBhZGRw
IGNmciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1ZSBvZiBjZnIKKyAgICBsb2FkcCBK
U0Z1bmN0aW9uOjptX3Njb3BlQ2hhaW5bdDJdLCB0MAorICAgIHN0b3JlaSB0MiwgQ2FsbGVlICsg
UGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgdDAsIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zm
c2V0W3QzXQorICAgIGxvYWRpIDggLSAyNFtQQ10sIHQyCisgICAgc3RvcmVpIFBDLCBBcmd1bWVu
dENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBzdG9yZXAgY2ZyLCBDYWxsZXJGcmFtZVt0M10K
KyAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0
b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNdCisgICAgc3RvcmVpIENlbGxUYWcs
IFNjb3BlQ2hhaW4gKyBUYWdPZmZzZXRbdDNdCisgICAgbW92ZSB0MywgY2ZyCisgICAgY2FsbCBM
TEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRbdDFdCisgICAgZGlzcGF0Y2hBZnRl
ckNhbGwoKQorCisub3BDYWxsU2xvdzoKKyAgICBzbG93UGF0aEZvckNhbGwoNiwgaGVscGVyKQor
ZW5kCisKK19sbGludF9vcF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwo
X2xsaW50X2hlbHBlcl9jYWxsKQorCisKK19sbGludF9vcF9jb25zdHJ1Y3Q6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRfaGVscGVyX2NvbnN0cnVjdCkKKworCitfbGxp
bnRfb3BfY2FsbF92YXJhcmdzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzbG93UGF0aEZv
ckNhbGwoNiwgX2xsaW50X2hlbHBlcl9jYWxsX3ZhcmFyZ3MpCisKKworX2xsaW50X29wX2NhbGxf
ZXZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgCisgICAgIyBFdmFsIGlzIGV4ZWN1dGVk
IGluIG9uZSBvZiB0d28gbW9kZXM6CisgICAgIworICAgICMgMSkgV2UgZmluZCB0aGF0IHdlJ3Jl
IHJlYWxseSBpbnZva2luZyBldmFsKCkgaW4gd2hpY2ggY2FzZSB0aGUKKyAgICAjICAgIGV4ZWN1
dGlvbiBpcyBwZXJmb21lZCBlbnRpcmVseSBpbnNpZGUgdGhlIGhlbHBlciwgYW5kIGl0CisgICAg
IyAgICByZXR1cm5zIHRoZSBQQyBvZiBhIGZ1bmN0aW9uIHRoYXQganVzdCByZXR1cm5zIHRoZSBy
ZXR1cm4gdmFsdWUKKyAgICAjICAgIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAgIworICAg
ICMgMikgV2UgZmluZCB0aGF0IHdlJ3JlIGludm9raW5nIHNvbWV0aGluZyBjYWxsZWQgZXZhbCgp
IHRoYXQgaXMgbm90CisgICAgIyAgICB0aGUgcmVhbCBldmFsLiBUaGVuIHRoZSBoZWxwZXIgcmV0
dXJucyB0aGUgUEMgb2YgdGhlIHRoaW5nIHRvCisgICAgIyAgICBjYWxsLCBhbmQgd2UgY2FsbCBp
dC4KKyAgICAjCisgICAgIyBUaGlzIGFsbG93cyB1cyB0byBoYW5kbGUgdHdvIGNhc2VzLCB3aGlj
aCB3b3VsZCByZXF1aXJlIGEgdG90YWwgb2YKKyAgICAjIHVwIHRvIGZvdXIgcGllY2VzIG9mIHN0
YXRlIHRoYXQgY2Fubm90IGJlIGVhc2lseSBwYWNrZWQgaW50byB0d28KKyAgICAjIHJlZ2lzdGVy
cyAoQyBmdW5jdGlvbnMgY2FuIHJldHVybiB1cCB0byB0d28gcmVnaXN0ZXJzLCBlYXNpbHkpOgor
ICAgICMKKyAgICAjIC0gVGhlIGNhbGwgZnJhbWUgcmVnaXN0ZXIuIFRoaXMgbWF5IG9yIG1heSBu
b3QgaGF2ZSBiZWVuIG1vZGlmaWVkCisgICAgIyAgIGJ5IHRoZSBoZWxwZXIsIGJ1dCB0aGUgY29u
dmVudGlvbiBpcyB0aGF0IGl0IHJldHVybnMgaXQuIEl0J3Mgbm90CisgICAgIyAgIHRvdGFsbHkg
Y2xlYXIgaWYgdGhhdCdzIG5lY2Vzc2FyeSwgc2luY2UgdGhlIGNmciBpcyBjYWxsZWUgc2F2ZS4K
KyAgICAjICAgQnV0IHRoYXQncyBvdXIgc3R5bGUgaW4gdGhpcyBoZXJlIGludGVycHJldGVyIHNv
IHdlIHN0aWNrIHdpdGggaXQuCisgICAgIworICAgICMgLSBBIGJpdCB0byBzYXkgaWYgdGhlIGhl
bHBlciBzdWNjZXNzZnVsbHkgZXhlY3V0ZWQgdGhlIGV2YWwgYW5kIGhhcworICAgICMgICB0aGUg
cmV0dXJuIHZhbHVlLCBvciBkaWQgbm90IGV4ZWN1dGUgdGhlIGV2YWwgYnV0IGhhcyBhIFBDIGZv
ciB1cworICAgICMgICB0byBjYWxsLgorICAgICMKKyAgICAjIC0gRWl0aGVyOgorICAgICMgICAt
IFRoZSBKUyByZXR1cm4gdmFsdWUgKHR3byByZWdpc3RlcnMpLCBvcgorICAgICMKKyAgICAjICAg
LSBUaGUgUEMgdG8gY2FsbC4KKyAgICAjCisgICAgIyBJdCB0dXJucyBvdXQgdG8gYmUgZWFzaWVy
IHRvIGp1c3QgYWx3YXlzIGhhdmUgdGhpcyByZXR1cm4gdGhlIGNmcgorICAgICMgYW5kIGEgUEMg
dG8gY2FsbCwgYW5kIHRoYXQgUEMgbWF5IGJlIGEgZHVtbXkgdGh1bmsgdGhhdCBqdXN0CisgICAg
IyByZXR1cm5zIHRoZSBKUyB2YWx1ZSB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgIAorICAg
IHNsb3dQYXRoRm9yQ2FsbCg0LCBfbGxpbnRfaGVscGVyX2NhbGxfZXZhbCkKKworCitfbGxpbnRf
Z2VuZXJpY19yZXR1cm5fcG9pbnQ6CisgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorCisKK19sbGlu
dF9vcF90ZWFyX29mZl9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA0W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZAorICAg
IGJpZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0
aXZhdGlvbk5vdENyZWF0ZWQKKy5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZDoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKKy5vcFRlYXJPZmZBY3Rp
dmF0aW9uTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF90ZWFyX29m
Zl9hcmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIHN1YmkgMSwgdDAgICAjIEdldCB0aGUgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyCisg
ICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZB
cmd1bWVudHNOb3RDcmVhdGVkCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2Zm
X2FyZ3VtZW50cykKKy5vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkOgorICAgIGRpc3BhdGNo
KDIpCisKKworbWFjcm8gZG9SZXR1cm4oKQorICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCisg
ICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgY2ZyCisgICAgcmVzdG9yZVJldHVybkFkZHJlc3NC
ZWZvcmVSZXR1cm4odDIpCisgICAgcmV0CitlbmQKKworX2xsaW50X29wX3JldDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2Fk
aSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAg
ZG9SZXR1cm4oKQorCisKK19sbGludF9vcF9jYWxsX3B1dF9yZXN1bHQ6CisgICAgbG9hZGkgNFtQ
Q10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2Zy
LCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB2
YWx1ZVByb2ZpbGUodDEsIHQwLCB0MykKKyAgICB0cmFjZUV4ZWN1dGlvbigpICMgTmVlZHMgdG8g
YmUgaGVyZSBiZWNhdXNlIGl0IHdvdWxkIGNsb2JiZXIgdDEsIHQwCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfcmV0X29iamVjdF9vcl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0Mgor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2Vs
bFRhZywgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAg
ICBkb1JldHVybigpCisKKy5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdDoKKyAgICBsb2FkaSA4
W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgZG9S
ZXR1cm4oKQorCisKK19sbGludF9vcF9tZXRob2RfY2hlY2s6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgICMgV2UgaWdub3JlIG1ldGhvZCBjaGVja3MgYW5kIHVzZSBub3JtYWwgZ2V0X2J5X2lk
IG9wdGltaXphdGlvbnMuCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3RyY2F0Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3RyY2F0
KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3RvX3ByaW1pdGl2ZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGJpbmVxIHQxLCBDZWxs
VGFnLCAub3BUb1ByaW1pdGl2ZUlzSW1tCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQyCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlw
ZVt0Ml0sIFN0cmluZ1R5cGUsIC5vcFRvUHJpbWl0aXZlU2xvd0Nhc2UKKy5vcFRvUHJpbWl0aXZl
SXNJbW06CisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkg
dDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb1By
aW1pdGl2ZVNsb3dDYXNlOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19wcmltaXRp
dmUpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZ2V0X3BuYW1lczoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9wbmFtZXMpCisg
ICAgZGlzcGF0Y2goMCkgIyBUaGUgaGVscGVyIGVpdGhlciBhZHZhbmNlcyB0aGUgUEMgb3IganVt
cHMgdXMgdG8gc29tZXdoZXJlIGVsc2UuCisKKworX2xsaW50X29wX25leHRfcG5hbWU6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkaSAxNltQQ10s
IHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XSwgdDAKKyAgICBiaWVxIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCAub3BOZXh0UG5hbWVFbmQKKyAgICBsb2FkaSAy
MFtQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICBs
b2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2pzU3RyaW5nc1t0Ml0sIHQzCisgICAgbG9h
ZGkgW3QzLCB0MCwgOF0sIHQzCisgICAgYWRkaSAxLCB0MAorICAgIHN0b3JlaSB0MCwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxs
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDMsIDhdLCB0MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQor
ICAgIGJwbmVxIHQxLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0
Ml0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpt
X2NhY2hlZFByb3RvdHlwZUNoYWluW3QyXSwgdDAKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6
bV92ZWN0b3JbdDBdLCB0MAorICAgIGJ0cHogW3QwXSwgLm9wTmV4dFBuYW1lVGFyZ2V0Cisub3BO
ZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3A6CisgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90
eXBlICsgVGFnT2Zmc2V0W3QxXSwgTnVsbFRhZywgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRw
IFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W3QxXSwgdDIKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDEKKyAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4
dFBuYW1lU2xvdworICAgIGFkZHAgNCwgdDAKKyAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVD
aGVja1Byb3RvdHlwZUxvb3AKKy5vcE5leHRQbmFtZVRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5j
aCgyNFtQQ10pCisKKy5vcE5leHRQbmFtZUVuZDoKKyAgICBkaXNwYXRjaCg3KQorCisub3BOZXh0
UG5hbWVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXh0X3BuYW1lKSAjIFRo
aXMgZWl0aGVyIGtlZXBzIHRoZSBQQyB3aGVyZSBpdCB3YXMgKGNhdXNpbmcgdXMgdG8gbG9vcCkg
b3Igc2V0cyBpdCB0byB0YXJnZXQuCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfcHVz
aF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3B1c2hfc2NvcGUpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9wX3Njb3Bl
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9w
X3Njb3BlKQorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3B1c2hfbmV3X3Njb3BlOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9u
ZXdfc2NvcGUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfY2F0Y2g6CisgICAgIyBU
aGlzIGlzIHdoZXJlIHdlIGVuZCB1cCBmcm9tIHRoZSBKSVQncyB0aHJvdyB0cmFtcG9saW5lIChi
ZWNhdXNlIHRoZQorICAgICMgbWFjaGluZSBjb2RlIHJldHVybiBhZGRyZXNzIHdpbGwgYmUgc2V0
IHRvIF9sbGludF9vcF9jYXRjaCksIGFuZCBmcm9tCisgICAgIyB0aGUgaW50ZXJwcmV0ZXIncyB0
aHJvdyB0cmFtcG9saW5lIChzZWUgX2xsaW50X3Rocm93X3RyYW1wb2xpbmUpLgorICAgICMgVGhl
IEpJVCB0aHJvd2luZyBwcm90b2NvbCBjYWxscyBmb3IgdGhlIGNmciB0byBiZSBpbiB0MC4gVGhl
IHRocm93aW5nCisgICAgIyBjb2RlIG11c3QgaGF2ZSBrbm93biB0aGF0IHdlIHdlcmUgdGhyb3dp
bmcgdG8gdGhlIGludGVycHJldGVyLCBhbmQgaGF2ZQorICAgICMgc2V0IEpTR2xvYmFsRGF0YTo6
dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93LgorICAgIG1vdmUgdDAsIGNmcgorICAgIGxvYWRw
IEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRpIEpTR2xvYmFsRGF0
YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93W3QzXSwgUEMKKyAgICBsb2FkaSBKU0dsb2Jh
bERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdLCB0MAorICAgIGxvYWRpIEpTR2xv
YmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSwgdDEKKyAgICBzdG9yZWkgMCwgSlNH
bG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBFbXB0
eVZhbHVlVGFnLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10gICAgICAg
CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDIsIDhdCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB0cmFjZUV4
ZWN1dGlvbigpICAjIFRoaXMgbmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQg
dG8gY2xvYmJlciB0MCwgdDEsIHQyLCB0MyBhYm92ZS4KKyAgICBkaXNwYXRjaCgyKQorCisKK19s
bGludF9vcF90aHJvdzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3Rocm93KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93X3Jl
ZmVyZW5jZV9lcnJvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKKyAgICBkaXNwYXRjaCgyKQorCisKK19s
bGludF9vcF9qc3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGFkZGkgMyAqIDQsIFBDLCB0MQorICAgIHN0b3JlaSB0MSwgW2NmciwgdDAsIDhdCisgICAg
ZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKworX2xsaW50X29wX3NyZXQ6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFtjZnIsIHQwLCA4XSwgUEMK
KyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9kZWJ1ZzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlYnVnKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX3Byb2ZpbGVfd2lsbF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCB0
MAorICAgIGJ0cHogW3QwXSwgLm9wUHJvZmlsZVdpbGxDYWxsRG9uZQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCkKKy5vcFByb2ZpbGVXaWxsQ2FsbERvbmU6
CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJvZmlsZV9kaWRfY2FsbDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVy
UmVmZXJlbmNlW3NwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKKy5vcFByb2Zp
bGVEaWRDYWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9lbmQ6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgZG9SZXR1cm4oKQorCisK
K19sbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lOgorICAgICMgV2hlbiB0aHJvd2lu
ZyBmcm9tIHRoZSBpbnRlcnByZXRlciAoaS5lLiB0aHJvd2luZyBmcm9tIExMSW50SGVscGVycyks
IHNvCisgICAgIyB0aGUgdGhyb3cgdGFyZ2V0IGlzIG5vdCBuZWNlc3NhcmlseSBpbnRlcnByZXRl
ZCBjb2RlLCB3ZSBjb21lIHRvIGhlcmUuCisgICAgIyBUaGlzIGVzc2VudGlhbGx5IGVtdWxhdGVz
IHRoZSBKSVQncyB0aHJvd2luZyBwcm90b2NvbC4KKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpn
bG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRo
cm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJv
d1t0MV0KKworCitfbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZToKKyAgICBwcmVz
ZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6
Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JU
aHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhy
b3dbdDFdCisKKworIyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhv
dWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMuCisjIFRoZXNlIG9wY29kZXMgc2hvdWxk
IG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0Cisj
IGFzIG11Y2guCisKK21hY3JvIG5vdFN1cHBvcnRlZCgpCisgICAgaWYgQVNTRVJUX0VOQUJMRUQK
KyAgICAgICAgY3Jhc2goKQorICAgIGVsc2UKKyAgICAgICAgIyBXZSBzaG91bGQgdXNlIHdoYXRl
dmVyIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBpbnN0cnVjdGlvbiBpcywganVzdCB0bworICAgICAg
ICAjIGVuc3VyZSB0aGF0IHRoZXJlIGlzIGEgZ2FwIGJldHdlZW4gaW5zdHJ1Y3Rpb24gbGFiZWxz
LiBJZiBtdWx0aXBsZQorICAgICAgICAjIHNtYWxsZXN0IGluc3RydWN0aW9ucyBleGlzdCwgd2Ug
c2hvdWxkIHBpY2sgdGhlIG9uZSB0aGF0IGlzIG1vc3QKKyAgICAgICAgIyBsaWtlbHkgcmVzdWx0
IGluIGV4ZWN1dGlvbiBiZWluZyBoYWx0ZWQuIEN1cnJlbnRseSB0aGF0IGlzIHRoZSBicmVhawor
ICAgICAgICAjIGluc3RydWN0aW9uIG9uIGFsbCBhcmNoaXRlY3R1cmVzIHdlJ3JlIGludGVyZXN0
ZWQgaW4uIChCcmVhayBpcyBpbnQzCisgICAgICAgICMgb24gSW50ZWwsIHdoaWNoIGlzIDEgYnl0
ZSwgYW5kIGJrcHQgb24gQVJNdjcsIHdoaWNoIGlzIDIgYnl0ZXMuKQorICAgICAgICBicmVhawor
ICAgIGVuZAorZW5kCisKK19sbGludF9vcF9nZXRfYXJyYXlfbGVuZ3RoOgorICAgIG5vdFN1cHBv
cnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkK
KworX2xsaW50X29wX2dldF9ieV9pZF9jdXN0b21fY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkK
KworX2xsaW50X29wX2dldF9ieV9pZF9jdXN0b21fcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkK
KworX2xsaW50X29wX2dldF9ieV9pZF9jdXN0b21fc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQor
CitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dlbmVyaWM6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xs
aW50X29wX2dldF9ieV9pZF9nZXR0ZXJfY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xs
aW50X29wX2dldF9ieV9pZF9nZXR0ZXJfcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xs
aW50X29wX2dldF9ieV9pZF9nZXR0ZXJfc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxp
bnRfb3BfZ2V0X2J5X2lkX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9n
ZXRfYnlfaWRfc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X3N0cmlu
Z19sZW5ndGg6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9nZW5l
cmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfcmVwbGFjZToK
KyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb246Cisg
ICAgbm90U3VwcG9ydGVkKCkKKworCisjIEluZGljYXRlIHRoZSBlbmQgb2YgTExJbnQuCitfbGxp
bnRfZW5kOgorICAgIGNyYXNoKCkKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnBy
ZXRlci5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5oPgorCisjaW5jbHVkZSAiTExJbnRB
c3NlbWJseS5oIgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorI2RlZmlu
ZSBMb3dMZXZlbEludGVycHJldGVyX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisj
aWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKKyNkZWZpbmUgTExJTlRf
SU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxlbmd0aCkgZXh0ZXJuICJDIiB2b2lkIGxsaW50XyMj
b3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wp
OworI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wKKworZXh0ZXJuICJDIiB2b2lkIGxsaW50
X2JlZ2luKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW5kKCk7CitleHRlcm4gIkMiIHZvaWQg
bGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2V2YWxfcHJv
bG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1
ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9n
dWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
aygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlf
Y2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9nZW5lcmljX3JldHVybl9wb2ludCgpOwor
ZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUoKTsKK2V4
dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKCk7CisKKyNl
bmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMb3dMZXZlbEludGVycHJldGVyX2gK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTkzIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitjbGFzcyBTcGVjaWFsUmVnaXN0ZXIKKyAgZGVmIGluaXRpYWxpemUobmFtZSkKKyAg
ICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgQG5hbWUK
KyAgZW5kCitlbmQKKworQVJNdjdfREFUQV9SRUcgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJpcCIp
CitBUk12N19BRERSX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoInIzIikKKworZGVmIG1vdmVJ
bW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJlbnRseSB3ZSBvbmx5IGhhbmRsZSB0
aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1vdi9tb3Z0IGZvciB0aGUgY29tcGxl
eCBvbmVzLgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2CisgICAgJGFzbS5wdXRzICJt
b3Z3IFwjI3t2YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzaWYgKH52YWx1
ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20ucHV0cyAibXZudyBcIyN7fnZhbHVl
fSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNlCisgICAgJGFzbS5wdXRzICJtb3Z3
IFwjI3t2YWx1ZSAmIDB4ZmZmZn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBpZiAo
dmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCisgICAgICAkYXNtLnB1dHMgIm1vdnQgXCMje3ZhbHVl
ID4+IDE2fSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorICBlbmQKK2VuZAor
CitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUKKyAg
ICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICJyMCIKKyAgICB3aGVuICJ0MSIsICJhMSIs
ICJyMSIKKyAgICAgICJyMSIKKyAgICB3aGVuICJ0MiIsICJhMiIKKyAgICAgICJyMiIKKyAgICB3
aGVuICJhMyIKKyAgICAgICJyMyIKKyAgICB3aGVuICJ0MyIKKyAgICAgICJyNCIKKyAgICB3aGVu
ICJ0NCIKKyAgICAgICJyNyIKKyAgICB3aGVuICJjZnIiCisgICAgICAicjUiCisgICAgZWxzZQor
ICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2li
bGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVy
YW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3Jh
cAorICAgIHlpZWxkCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgYXJt
VjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZyIgorICAgICAgImQw
IgorICAgIHdoZW4gImZyMSIsCisgICAgICAiZDEiCisgICAgd2hlbiAiZnIyIgorICAgICAgImQy
IgorICAgIHdoZW4gImZyMyIKKyAgICAgICJkMyIKKyAgICB3aGVuICJmcjQiCisgICAgICAiZDQi
CisgICAgd2hlbiAiZnI1IgorICAgICAgImQ1IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAor
ICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3Bl
cmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICB5aWVsZCBzZWxm
CisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgYXJtVjdPcGVyYW5kCisgICAg
cmFpc2UgIkludmFsaWQgaW1tZWRpYXRlICN7dmFsdWV9IiBpZiB2YWx1ZSA8IDAgb3IgdmFsdWUg
PiAyNTUKKyAgICAiIyR7dmFsdWV9IgorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3Nz
aWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9w
ZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2FkU3RvcmVX
cmFwCisgICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCittb2R1bGUgQVJNdjdBZGRyZXNzVXRp
bGl0aWVzCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAgICBzZWxmLmFybVY3UHJlcGFyZVBv
c3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICRhc20ucHV0cyAiXHRsZHIgI3tzZWxmLmFybVY3UG9z
c2libHlNZW1vcnlPcGVyYW5kfSwgI3tBUk12N19EQVRBX1JFRy5hcm1WN09wZXJhbmR9IgorICAg
IHlpZWxkIEFSTXY3X0RBVEFfUkVHCisgICAgJGFzbS5wdXRzICJcdHN0ciAje0FSTXY3X0RBVEFf
UkVHLmFybVY3T3BlcmFuZH0sICN7c2VsZi5hcm1WN1Bvc3NpYmx5TWVtb3J5T3BlcmFuZH0iCisg
IGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NVdGlsaXRp
ZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgaWYgb2Zm
c2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAgIG1vdmVJbW1l
ZGlhdGUob2Zmc2V0LnZhbHVlLCBBUk12N19BRERSX1JFRykKKyAgICBlbmQKKyAgZW5kCisgIAor
ICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgPCAt
MHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5k
fSwgI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgICBlbHNlCisgICAgICAiWyN7
YmFzZS5hcm1WN09wZXJhbmR9LCAje29mZnNldC5hcm1WN09wZXJhbmR9XSIKKyAgICBlbmQKKyAg
ZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGluY2x1ZGUgQVJNdjdBZGRyZXNzVXRpbGl0
aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9m
ZnNldC52YWx1ZSAhPSAwCisgICAgICBtb3ZlSW1tZWRpYXRlKG9mZnNldC52YWx1ZSwgQVJNdjdf
QUREUl9SRUcpCisgICAgICAkYXNtLnB1dHMgImFkZHcgI3tBUk12N19BRERSX1JFRy5hcm1WN09w
ZXJhbmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYg
YXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAg
ICAgIlsje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5k
fSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVsc2UKKyAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFu
ZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVuZAorICBl
bmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgaW5jbHVkZSBBUk12N0FkZHJlc3NV
dGlsaXRpZXMKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAg
ICBtb3ZlSW1tZWRpYXRlKGFkZHJlc3MudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICBlbmQKKyAg
CisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICJbI3tBUk12N19BRERSX1JF
Ry5hcm1WN09wZXJhbmR9XSIKKyAgZW5kCitlbmQKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzNSBAQAorIyEv
dXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVx
dWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgor
cmVxdWlyZSAic2VsZl9oYXNoIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zv
cm0iCisKK2NsYXNzIEFzc2VtYmxlcgorICBkZWYgaW5pdGlhbGl6ZShvdXRwKQorICAgIEBvdXRw
ID0gb3V0cAorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBkZWYgZW50ZXJBc20KKyAg
ICBAb3V0cC5wdXRzICJhc20gKCIKKyAgICBAc3RhdGUgPSA6YXNtCisgIGVuZAorICAKKyAgZGVm
IGxlYXZlQXNtCisgICAgQG91dHAucHV0cyAiKTsiCisgICAgQHN0YXRlID0gOmNwcAorICBlbmQK
KyAgCisgIGRlZiBpbkFzbQorICAgIGVudGVyQXNtCisgICAgeWllbGQKKyAgICBsZWF2ZUFzbQor
ICBlbmQKKyAgCisgIGRlZiBwdXRzKCpsaW5lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0g
OmFzbQorICAgIEBvdXRwLnB1dHMoIlwiXFx0IiArIGxpbmUuam9pbignJykgKyAiXFxuXCIiKQor
ICBlbmQKKyAgCisgIGRlZiBwcmludChsaW5lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0g
OmFzbQorICAgIEBvdXRwLnByaW50KCJcIiIgKyBsaW5lICsgIlwiIikKKyAgZW5kCisgIAorICBk
ZWYgcHV0c0xhYmVsKGxhYmVsTmFtZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20K
KyAgICBAb3V0cC5wdXRzKCJcIi5nbG9ibCBcIiBTWU1CT0xfU1RSSU5HKCN7bGFiZWxOYW1lfSkg
XCJcXG5cIiIpCisgICAgQG91dHAucHV0cygiSElERV9TWU1CT0woI3tsYWJlbE5hbWV9KSBcIlxc
blwiIikKKyAgICBAb3V0cC5wdXRzKCJTWU1CT0xfU1RSSU5HKCN7bGFiZWxOYW1lfSkgXCI6XFxu
XCIiKQorICBlbmQKKyAgCisgIGRlZiBwdXRzTG9jYWxMYWJlbChsYWJlbE5hbWUpCisgICAgcmFp
c2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAgQG91dHAucHV0cygiTE9DQUxfTEFCRUxfU1RS
SU5HKCN7bGFiZWxOYW1lfSkgXCI6XFxuXCIiKQorICBlbmQKKyAgCisgIGRlZiBzZWxmLmxhYmVs
UmVmZXJlbmNlKGxhYmVsTmFtZSkKKyAgICAiXCIgU1lNQk9MX1NUUklORygje2xhYmVsTmFtZX0p
IFwiIgorICBlbmQKKyAgCisgIGRlZiBzZWxmLmxvY2FsTGFiZWxSZWZlcmVuY2UobGFiZWxOYW1l
KQorICAgICJcIiBMT0NBTF9MQUJFTF9TVFJJTkcoI3tsYWJlbE5hbWV9KSBcIiIKKyAgZW5kCisg
IAorICBkZWYgY29tbWVudCh0ZXh0KQorICAgIEBvdXRwLnB1dHMgIi8vICN7dGV4dH0iCisgIGVu
ZAorZW5kCisKK2FzbUZpbGUgPSBBUkdWLnNoaWZ0CitvZmZzZXRzRmlsZSA9IEFSR1Yuc2hpZnQK
K291dHB1dEZsbm0gPSBBUkdWLnNoaWZ0CisKK29mZnNldHNMaXN0LCBjb25maWdJbmRleCA9IG9m
ZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgob2Zmc2V0c0ZpbGUpCitpbnB1dERhdGEgPSBJTzo6
cmVhZChhc21GaWxlKQorCitpbnB1dEhhc2ggPQorICAiLy8gb2ZmbGluZWFzbSBpbnB1dCBoYXNo
OiAiICsgRGlnZXN0OjpTSEExLmhleGRpZ2VzdChpbnB1dERhdGEpICsKKyAgIiAiICsgRGlnZXN0
OjpTSEExLmhleGRpZ2VzdCgob2Zmc2V0c0xpc3QgKyBbY29uZmlnSW5kZXhdKS5qb2luKCcgJykp
ICsKKyAgIiAiICsgc2VsZkhhc2gKKworaWYgRmlsZVRlc3QuZXhpc3Q/IG91dHB1dEZsbm0KKyAg
RmlsZS5vcGVuKG91dHB1dEZsbm0sICJyIikgeworICAgIHwgaW5wIHwKKyAgICBmaXJzdExpbmUg
PSBpbnAuZ2V0cworICAgIGlmIGZpcnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09IGlucHV0
SGFzaAorICAgICAgJHN0ZGVyci5wdXRzICJOb3RoaW5nIGNoYW5nZWQuIgorICAgICAgZXhpdCAw
CisgICAgZW5kCisgIH0KK2VuZAorCitGaWxlLm9wZW4ob3V0cHV0RmxubSwgInciKSB7CisgIHwg
b3V0cCB8CisgICRvdXRwdXQgPSBvdXRwCisgICRvdXRwdXQucHV0cyBpbnB1dEhhc2gKKyAgCisg
ICRhc20gPSBBc3NlbWJsZXIubmV3KCRvdXRwdXQpCisgIAorICBhc3QgPSBwYXJzZShsZXgoaW5w
dXREYXRhKSkKKyAgCisgIGZvclNldHRpbmdzKGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhh
c3QpW2NvbmZpZ0luZGV4XSwgYXN0KSB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZl
bEFTVCwgYmFja2VuZCB8CisgICAgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdz
KQorICAgIGxvd0xldmVsQVNUID0gbG93TGV2ZWxBU1QucmVzb2x2ZSgqYnVpbGRPZmZzZXRzTWFw
KGxvd0xldmVsQVNULCBvZmZzZXRzTGlzdCkpCisgICAgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24o
Y29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQpIHsKKyAgICAgICRhc20uaW5B
c20geworICAgICAgICBsb3dMZXZlbEFTVC5sb3dlcihiYWNrZW5kKQorICAgICAgfQorICAgIH0K
KyAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4MTMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyMKKyMgQmFzZSB1dGlsaXR5IHR5cGVzIGZvciB0aGUgQVNULgorIworCisjIFZh
bGlkIG1ldGhvZHMgZm9yIE5vZGU6CisjCisjIG5vZGUuY2hpbGRyZW4gLT4gUmV0dXJucyBhbiBh
cnJheSBvZiBpbW1lZGlhdGUgY2hpbGRyZW4uCisjCisjIG5vZGUuZGVzY2VuZGVudHMgLT4gUmV0
dXJucyBhbiBhcnJheSBvZiBhbGwgc3RyaWN0IGRlc2NlbmRhbnRzIChjaGlsZHJlbgorIyAgICAg
YW5kIGNoaWxkcmVuIG9mIGNoaWxkcmVuLCB0cmFuc2l0aXZlbHkpLgorIworIyBub2RlLmZsYXR0
ZW4gLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBzdHJpY3QgZGVzY2VuZGFudHMg
YW5kCisjICAgICB0aGUgbm9kZSBpdHNlbGYuCisjCisjIG5vZGUuZmlsdGVyKHR5cGUpIC0+IFJl
dHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aG9zZSBlbGVtZW50cyBpbgorIyAgICAgbm9kZS5m
bGF0dGVuIHRoYXQgYXJlIG9mIHRoZSBnaXZlbiB0eXBlIChpc19hPyB0eXBlIHJldHVybnMgdHJ1
ZSkuCisjCisjIG5vZGUubWFwQ2hpbGRyZW57fHZ8IC4uLn0gLT4gUmV0dXJucyBhIG5ldyBub2Rl
IHdpdGggYWxsIGNoaWxkcmVuCisjICAgICByZXBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVu
IGJsb2NrLgorIworIyBFeGFtcGxlczoKKyMKKyMgbm9kZS5maWx0ZXIoU2V0dGluZykudW5pcSAt
PiBSZXR1cm5zIGFsbCBvZiB0aGUgc2V0dGluZ3MgdGhhdCB0aGUgQVNUJ3MKKyMgICAgIElmVGhl
bkVsc2UgYmxvY2tzIGRlcGVuZCBvbi4KKyMKKyMgbm9kZS5maWx0ZXIoU3RydWN0T2Zmc2V0KS51
bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzdHJ1Y3R1cmUgb2Zmc2V0cworIyAgICAgdGhhdCB0
aGUgQVNUIGRlcGVuZHMgb24uCisKK2NsYXNzIE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmln
aW4KKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgQGNvZGVPcmlnaW4gPSBj
b2RlT3JpZ2luCisgIGVuZAorICAKKyAgZGVmIGNvZGVPcmlnaW5TdHJpbmcKKyAgICAibGluZSBu
dW1iZXIgI3tAY29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVmIGRlc2NlbmRhbnRzCisgICAg
Y2hpbGRyZW4uY29sbGVjdHt8dnwgdi5mbGF0dGVufS5mbGF0dGVuCisgIGVuZAorICAKKyAgZGVm
IGZsYXR0ZW4KKyAgICBbc2VsZl0gKyBkZXNjZW5kYW50cworICBlbmQKKyAgCisgIGRlZiBmaWx0
ZXIodHlwZSkKKyAgICBmbGF0dGVuLnNlbGVjdHt8dnwgdi5pc19hPyB0eXBlfQorICBlbmQKK2Vu
ZAorCitjbGFzcyBOb0NoaWxkcmVuIDwgTm9kZQorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAg
W10KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBzZWxmCisgIGVuZAorZW5kCisK
K2NsYXNzIFN0cnVjdE9mZnNldEtleQorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAg
CisgIGRlZiBpbml0aWFsaXplKHN0cnVjdCwgZmllbGQpCisgICAgQHN0cnVjdCA9IHN0cnVjdAor
ICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAgZGVmIGhhc2gKKyAgICBAc3RydWN0Lmhh
c2ggKyBAZmllbGQuaGFzaCAqIDMKKyAgZW5kCisgIAorICBkZWYgZXFsPyhvdGhlcikKKyAgICBA
c3RydWN0ID09IG90aGVyLnN0cnVjdCBhbmQgQGZpZWxkID09IG90aGVyLmZpZWxkCisgIGVuZAor
ZW5kCisgICAgCisjCisjIEFTVCBub2Rlcy4KKyMKKworY2xhc3MgU3RydWN0T2Zmc2V0IDwgTm9D
aGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAc3RydWN0ID0gc3RydWN0CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5kCisgIAorICBAQG1h
cHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yRmllbGQoY29kZU9yaWdpbiwgc3RydWN0LCBm
aWVsZCkKKyAgICBrZXkgPSBTdHJ1Y3RPZmZzZXRLZXkubmV3KHN0cnVjdCwgZmllbGQpCisgICAg
CisgICAgdW5sZXNzIEBAbWFwcGluZ1trZXldCisgICAgICBAQG1hcHBpbmdba2V5XSA9IFN0cnVj
dE9mZnNldC5uZXcoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBlbmQKKyAgICBAQG1h
cHBpbmdba2V5XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7c3RydWN0fTo6I3tmaWVs
ZH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAgICBpZiBAc3RydWN0ICE9IG90aGVy
LnN0cnVjdAorICAgICAgcmV0dXJuIEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICAgIGVuZAor
ICAgIEBmaWVsZCA8PT4gb3RoZXIuZmllbGQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mIDwg
Tm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0g
c3RydWN0CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5h
bWUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHVubGVzcyBAQG1hcHBpbmdbc3RydWN0XQorICAg
ICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBTaXplb2YubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAg
ICBlbmQKKyAgICBAQG1hcHBpbmdbc3RydWN0XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
InNpemVvZiAje0BzdHJ1Y3R9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIpCisgICAgQHN0
cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZSA8IE5v
Q2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnZhbHVlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YWx1ZSA9IHZhbHVl
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3t2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVm
ID09KG90aGVyKQorICAgIG90aGVyLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUgPT0g
QHZhbHVlCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJf
cmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxl
ZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAg
QHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEBy
aWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBZGRJbW1lZGlhdGVzLm5l
dyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICsgI3tyaWdodC5kdW1wfSkiCisgIGVuZAor
ZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6
cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisg
IAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBTdWJJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAo
eWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICIoI3tsZWZ0LmR1bXB9IC0gI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE11
bEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBk
ZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hp
bGRyZW4KKyAgICBNdWxJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAo
eWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9
ICogI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0ZSA8IE5v
ZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BjaGlsZF0KKyAgZW5kCisgIAorICBkZWYgbWFw
Q2hpbGRyZW4KKyAgICBOZWdJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQp
KQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigtI3tAY2hpbGQuZHVtcH0pIgorICBlbmQK
K2VuZAorCitjbGFzcyBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFt
ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9Cisg
IAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFw
cGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gUmVnaXN0ZXJJRC5uZXcoY29kZU9y
aWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklEIDwgTm9D
aGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBl
bmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmln
aW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25h
bWVdID0gRlBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBA
bWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2Vu
ZAorCitjbGFzcyBWYXJpYWJsZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAg
ZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdb
bmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFZhcmlhYmxlLm5ldyhjb2RlT3JpZ2luLCBu
YW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzIDwgTm9kZQorICBhdHRyX3Jl
YWRlciA6YmFzZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFz
ZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisgICAg
QG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwg
QG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBZGRyZXNzLm5ldyhj
b2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQG9mZnNldCkpCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQuZHVtcH1bI3tiYXNlLmR1bXB9XSIKKyAgZW5kCitlbmQK
KworY2xhc3MgQmFzZUluZGV4IDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFzZSwgOmluZGV4LCA6
c2NhbGUsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGJhc2UsIGlu
ZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBi
YXNlCisgICAgQGluZGV4ID0gaW5kZXgKKyAgICBAc2NhbGUgPSBzY2FsZQorICAgIHJhaXNlIHVu
bGVzcyBbMSwgMiwgNCwgOF0ubWVtYmVyPyBAc2NhbGUKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0Cisg
IGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BiYXNlLCBAaW5kZXgsIEBvZmZzZXRdCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2lu
LCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQGluZGV4KSwgQHNjYWxlLCAoeWllbGQgQG9mZnNldCkp
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQuZHVtcH1bI3tiYXNlLmR1bXB9
LCAje2luZGV4LmR1bXB9LCAje3NjYWxlfV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRl
QWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmFkZHJlc3MKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIGFkZHJlc3MpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje2FkZHJl
c3MuZHVtcH1bXSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24gPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpvcGNvZGUsIDpvcGVyYW5kcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgb3Bjb2RlLCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBvcGNv
ZGUgPSBvcGNvZGUKKyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9j
KQorICAgIEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBAb3Bjb2RlLCBAb3BlcmFuZHMubWFw
KCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdCIgKyBvcGNvZGUudG9fcyAr
ICIgIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKQorICBlbmQKK2Vu
ZAorCitjbGFzcyBFcnJvciA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
bikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0
ZXJyb3IiCisgIGVuZAorZW5kCisKK2NsYXNzIENvbnN0RGVjbCA8IE5vZGUKKyAgYXR0cl9yZWFk
ZXIgOnZhcmlhYmxlLCA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZh
cmlhYmxlLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YXJpYWJsZSA9IHZh
cmlhYmxlCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAg
ICBbQHZhcmlhYmxlLCBAdmFsdWVdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAg
Q29uc3REZWNsLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHZhcmlhYmxlKSwgKHlpZWxkIEB2YWx1
ZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiY29uc3QgI3tAdmFyaWFibGUuZHVtcH0g
PSAje0B2YWx1ZS5kdW1wfSIKKyAgZW5kCitlbmQKKworJGxhYmVsTWFwcGluZyA9IHt9CisKK2Ns
YXNzIExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBu
YW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFt
ZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBj
b2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExhYmVs
CisgICAgZWxzZQorICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExhYmVsLm5ldyhjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJl
bCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5h
bWUKKyAgZW5kCisKKyAgQEB1bmlxdWVOYW1lQ291bnRlciA9IDAKKyAgCisgIGRlZiBzZWxmLmZv
ck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAg
ICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBw
aW5nW25hbWVdLmlzX2E/IExvY2FsTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5n
W25hbWVdID0gTG9jYWxMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAk
bGFiZWxNYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIHNlbGYudW5pcXVlKGNvbW1lbnQp
CisgICAgbmV3TmFtZSA9ICJfI3tjb21tZW50fSIKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25ld05h
bWVdCisgICAgICB3aGlsZSAkbGFiZWxNYXBwaW5nW25ld05hbWUgPSAiXyN7QEB1bmlxdWVOYW1l
Q291bnRlcn1fI3tjb21tZW50fSJdCisgICAgICAgIEBAdW5pcXVlTmFtZUNvdW50ZXIgKz0gMQor
ICAgICAgZW5kCisgICAgZW5kCisgICAgZm9yTmFtZShuaWwsIG5ld05hbWUpCisgIGVuZAorICAK
KyAgZGVmIGNsZWFuTmFtZQorICAgIGlmIG5hbWUgPX4gL15cLi8KKyAgICAgICJfIiArIG5hbWVb
MS4uLTFdCisgICAgZWxzZQorICAgICAgbmFtZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZSA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBsYWJlbCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisg
IGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBs
YWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFi
ZWxSZWZlcmVuY2UgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxd
CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTG9jYWxMYWJlbFJlZmVyZW5jZS5u
ZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAg
ICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVu
ZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGlzdAorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGlzdCkKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBsaXN0ID0gbGlzdAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIGxpc3QK
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgU2VxdWVuY2UubmV3KGNv
ZGVPcmlnaW4sIEBsaXN0Lm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBs
aXN0LmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiXG4iKQorICBlbmQKK2VuZAorCitjbGFzcyBU
cnVlIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQorICAgIHN1cGVyKG5pbCkKKyAgZW5k
CisgIAorICBAQGluc3RhbmNlID0gVHJ1ZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisg
ICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIHRydWUKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICJ0cnVlIgorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZSA8IE5v
Q2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAg
QEBpbnN0YW5jZSA9IEZhbHNlLm5ldworICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGlu
c3RhbmNlCisgIGVuZAorICAKKyAgZGVmIHZhbHVlCisgICAgZmFsc2UKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICJmYWxzZSIKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZUNsYXNzCisgIGRl
ZiBhc05vZGUKKyAgICBUcnVlLmluc3RhbmNlCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlQ2xh
c3MKKyAgZGVmIGFzTm9kZQorICAgIEZhbHNlLmluc3RhbmNlCisgIGVuZAorZW5kCisKK2NsYXNz
IFNldHRpbmcgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5h
bWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZv
ck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAg
ICBAQG1hcHBpbmdbbmFtZV0gPSBTZXR0aW5nLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVu
ZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQor
ICBlbmQKK2VuZAorCitjbGFzcyBBbmQgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmln
aHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAg
ZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAor
ICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBbmQubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCks
ICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVt
cH0gYW5kICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBPciA8IE5vZGUKKyAg
YXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQK
KyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVm
dCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE9yLm5ldyhjb2Rl
T3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IG9yICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAor
CitjbGFzcyBOb3QgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAY2hp
bGQgPSBjaGlsZAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0
XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5vdC5uZXcoY29kZU9yaWdpbiwg
KHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKG5vdCAje2NoaWxk
LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgU2tpcCA8IE5vQ2hpbGRyZW4KKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIlx0c2tpcCIKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZSA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnByZWRpY2F0ZSwgOnRoZW5DYXNlCisgIGF0dHJfYWNjZXNz
b3IgOmVsc2VDYXNlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBwcmVkaWNhdGUs
IHRoZW5DYXNlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHByZWRpY2F0ZSA9IHByZWRp
Y2F0ZQorICAgIEB0aGVuQ2FzZSA9IHRoZW5DYXNlCisgICAgQGVsc2VDYXNlID0gU2tpcC5uZXco
Y29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBpZiBAZWxzZUNhc2UK
KyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2UsIEBlbHNlQ2FzZV0KKyAgICBlbHNlCisgICAg
ICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNlXQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAcHJlZGljYXRl
KSwgKHlpZWxkIEB0aGVuQ2FzZSksICh5aWVsZCBAZWxzZUNhc2UpKQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgImlmICN7cHJlZGljYXRlLmR1bXB9XG4iICsgdGhlbkNhc2UuZHVtcCArICJc
bmVsc2VcbiIgKyBlbHNlQ2FzZS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBN
YWNybyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5hbWUsIDp2YXJpYWJsZXMsIDpib2R5CisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgICBAdmFyaWFibGVzID0gdmFy
aWFibGVzCisgICAgQGJvZHkgPSBib2R5CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAg
QHZhcmlhYmxlcyArIFtAYm9keV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBN
YWNyby5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEB2YXJpYWJsZXMubWFwe3x2fCB5aWVsZCB2fSwg
KHlpZWxkIEBib2R5KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJtYWNybyAje25hbWV9
KCIgKyB2YXJpYWJsZXMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpICsgIilcbiIgKyBi
b2R5LmR1bXAgKyAiXG5lbmQiCisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvQ2FsbCA8IE5vZGUK
KyAgYXR0cl9yZWFkZXIgOm5hbWUsIDpvcGVyYW5kcworICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFt
ZSA9IG5hbWUKKyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcworICAgIHJhaXNlIHVubGVzcyBAb3Bl
cmFuZHMKKyAgICBAb3BlcmFuZHMuZWFjaHt8dnwgcmFpc2UgdW5sZXNzIHZ9CisgIGVuZAorICAK
KyAgZGVmIGNoaWxkcmVuCisgICAgQG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxk
cmVuKCZwcm9jKQorICAgIE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEBvcGVyYW5k
cy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0I3tuYW1lfSgiICsg
b3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpICsgIikiCisgIGVuZAorZW5k
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJi
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2Vu
ZHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIng4NiIKKworQkFDS0VO
RFMgPQorICBbCisgICAiWDg2IiwKKyAgICJBUk12NyIKKyAgXQorCitXT1JLSU5HX0JBQ0tFTkRT
ID0KKyAgWworICAgIlg4NiIKKyAgXQorCitCQUNLRU5EX1BBVFRFUk4gPSBSZWdleHAubmV3KCdc
XEEoJyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFonKQorCitjbGFzcyBOb2RlCisgIGRl
ZiBsb3dlcihuYW1lKQorICAgIHNlbmQoImxvd2VyIiArIG5hbWUpCisgIGVuZAorZW5kCisKKyMg
T3ZlcnJpZGVzIGZvciBsb3dlcigpIGZvciB0aG9zZSBub2RlcyB0aGF0IGFyZSBiYWNrZW5kLWFn
bm9zdGljCisKK2NsYXNzIExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAgICRhc20ucHV0c0xh
YmVsKHNlbGYubmFtZVsxLi4tMV0pCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAg
ZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzTG9jYWxMYWJlbCAiX29mZmxpbmVhc21fI3tz
ZWxmLm5hbWVbMS4uLTFdfSIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAg
ZGVmIGFzbUxhYmVsCisgICAgQXNzZW1ibGVyLmxhYmVsUmVmZXJlbmNlKG5hbWVbMS4uLTFdKQor
ICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCisgIGRlZiBhc21MYWJlbAor
ICAgIEFzc2VtYmxlci5sb2NhbExhYmVsUmVmZXJlbmNlKCJfb2ZmbGluZWFzbV8iK25hbWVbMS4u
LTFdKQorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwCisgIGRlZiBsb3dlcihuYW1lKQorICBlbmQK
K2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBAbGlzdC5lYWNo
IHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBub2RlLmxvd2VyKG5hbWUpCisgICAgfQorICBlbmQK
K2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9v
ZmZzZXRfZXh0cmFjdG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9y
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg4IEBACisjIS91c3IvYmluL2VudiBydWJ5CisK
KyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFt
ZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIK
K3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZWxmX2hhc2gi
CityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworaW5wdXRGbG5tID0g
QVJHVi5zaGlmdAorb3V0cHV0RmxubSA9IEFSR1Yuc2hpZnQKKworZGVmIGVtaXRNYWdpY051bWJl
cgorICBPRkZTRVRfTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICB8IG51bWJlciB8CisgICAgJG91
dHB1dC5wdXRzICIje251bWJlcn0sIgorICB9CitlbmQKKworaW5wdXREYXRhID0gSU86OnJlYWQo
aW5wdXRGbG5tKQoraW5wdXRIYXNoID0gIi8vIG9mZmxpbmVhc20gaW5wdXQgaGFzaDogI3tEaWdl
c3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0YSl9ICN7c2VsZkhhc2h9IgorCitpZiBGaWxlVGVz
dC5leGlzdD8gb3V0cHV0RmxubQorICBGaWxlLm9wZW4ob3V0cHV0RmxubSwgInIiKSB7CisgICAg
fCBpbnAgfAorICAgIGZpcnN0TGluZSA9IGlucC5nZXRzCisgICAgaWYgZmlyc3RMaW5lIGFuZCBm
aXJzdExpbmUuY2hvbXAgPT0gaW5wdXRIYXNoCisgICAgICAkc3RkZXJyLnB1dHMgIk5vdGhpbmcg
Y2hhbmdlZC4iCisgICAgICBleGl0IDAKKyAgICBlbmQKKyAgfQorZW5kCisKK29yaWdpbmFsQVNU
ID0gcGFyc2UobGV4KGlucHV0RGF0YSkpCisKK0ZpbGUub3BlbihvdXRwdXRGbG5tLCAidyIpIHsK
KyAgfCBvdXRwIHwKKyAgJG91dHB1dCA9IG91dHAKKyAgb3V0cC5wdXRzIGlucHV0SGFzaAorICBl
bWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMob3JpZ2luYWxBU1QpIHsKKyAgICB8IHNldHRpbmdz
LCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICBvZmZzZXRzTGlzdCA9IGFzdC5maWx0ZXIoU3Ry
dWN0T2Zmc2V0KS51bmlxLnNvcnQKKyAgICBzaXplc0xpc3QgPSBhc3QuZmlsdGVyKFNpemVvZiku
dW5pcS5zb3J0CisgICAgCisgICAgbGVuZ3RoID0gKE9GRlNFVF9NQUdJQ19OVU1CRVJTLnNpemUg
KyAxKSAqICgxICsgb2Zmc2V0c0xpc3Quc2l6ZSArIHNpemVzTGlzdC5zaXplKQorICAgIAorICAg
IG91dHAucHV0cyAic3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3Ro
fV0gPSB7IgorICAgIGVtaXRNYWdpY051bWJlcgorICAgIG91dHAucHV0cyAiI3tpbmRleH0sIgor
ICAgIG9mZnNldHNMaXN0LmVhY2ggeworICAgICAgfCBvZmZzZXQgfAorICAgICAgZW1pdE1hZ2lj
TnVtYmVyCisgICAgICBvdXRwLnB1dHMgIk9GRkxJTkVfQVNNX09GRlNFVE9GKCN7b2Zmc2V0LnN0
cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSksIgorICAgIH0KKyAgICBzaXplc0xpc3QuZWFjaCB7Cisg
ICAgICB8IG9mZnNldCB8CisgICAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICAgIG91dHAucHV0cyAi
c2l6ZW9mKCN7b2Zmc2V0LnN0cnVjdH0pLCIKKyAgICB9CisgICAgb3V0cC5wdXRzICJ9OyIKKyAg
fQorfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25z
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3Ry
dWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxODggQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01BQ1JPX0lOU1RSVUNUSU9OUyA9Cisg
IFsKKyAgICJhZGRpIiwKKyAgICJhbmRpIiwKKyAgICJsc2hpZnRpIiwKKyAgICJtdWxpIiwKKyAg
ICJuZWdpIiwKKyAgICJub3RpIiwKKyAgICJvcmkiLAorICAgInJzaGlmdGkiLAorICAgInVyc2hp
ZnRpIiwKKyAgICJzdWJpIiwKKyAgICJ4b3JpIiwKKyAgICJsb2FkaSIsCisgICAibG9hZGIiLAor
ICAgImxvYWRoIiwKKyAgICJzdG9yZWkiLAorICAgInN0b3JlYiIsCisgICAibG9hZGQiLAorICAg
Im1vdmVkIiwKKyAgICJzdG9yZWQiLAorICAgImFkZGQiLAorICAgImRpdmQiLAorICAgInN1YmQi
LAorICAgIm11bGQiLAorICAgInNxcnRkIiwKKyAgICJjaTJkIiwKKyAgICJmaWkyZCIsICMgdXNh
Z2U6IGZpaTJkIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1v
c3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxmcHI+CisgICAiZmQyaWkiLCAjIHVzYWdlOiBmZDJpaSA8
ZnByPiwgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBz
aWduaWZpY2FudCBiaXRzPgorICAgImJkZXEiLAorICAgImJkbmVxIiwKKyAgICJiZGd0IiwKKyAg
ICJiZGd0ZXEiLAorICAgImJkbHQiLAorICAgImJkbHRlcSIsCisgICAiYmRlcXVuIiwKKyAgICJi
ZG5lcXVuIiwKKyAgICJiZGd0dW4iLAorICAgImJkZ3RlcXVuIiwKKyAgICJiZGx0dW4iLAorICAg
ImJkbHRlcXVuIiwKKyAgICJidGQyaSIsCisgICAidGQyaSIsCisgICAiYmNkMmkiLAorICAgIm1v
dmR6IiwKKyAgICJwb3AiLAorICAgInB1c2giLAorICAgIm1vdmUiLAorICAgInN4aTJwIiwKKyAg
ICJ6eGkycCIsCisgICAibm9wIiwKKyAgICJiaWVxIiwKKyAgICJiaW5lcSIsCisgICAiYmlhIiwK
KyAgICJiaWFlcSIsCisgICAiYmliIiwKKyAgICJiaWJlcSIsCisgICAiYmlndCIsCisgICAiYmln
dGVxIiwKKyAgICJiaWx0IiwKKyAgICJiaWx0ZXEiLAorICAgImJiZXEiLAorICAgImJibmVxIiwK
KyAgICJiYmEiLAorICAgImJiYWVxIiwKKyAgICJiYmIiLAorICAgImJiYmVxIiwKKyAgICJiYmd0
IiwKKyAgICJiYmd0ZXEiLAorICAgImJibHQiLAorICAgImJibHRlcSIsCisgICAiYnRpbyIsCisg
ICAiYnRpcyIsCisgICAiYnRpeiIsCisgICAiYnRpbnoiLAorICAgImJ0Ym8iLAorICAgImJ0YnMi
LAorICAgImJ0YnoiLAorICAgImJ0Ym56IiwKKyAgICJqbXAiLAorICAgImJhZGRpbyIsCisgICAi
YmFkZGlzIiwKKyAgICJiYWRkaXoiLAorICAgImJhZGRpbnoiLAorICAgImJzdWJpbyIsCisgICAi
YnN1YmlzIiwKKyAgICJic3ViaXoiLAorICAgImJzdWJpbnoiLAorICAgImJtdWxpbyIsCisgICAi
Ym11bGlzIiwKKyAgICJibXVsaXoiLAorICAgImJtdWxpbnoiLAorICAgImJvcmlvIiwKKyAgICJi
b3JpcyIsCisgICAiYm9yaXoiLAorICAgImJvcmlueiIsCisgICAiYnJlYWsiLAorICAgImNhbGwi
LAorICAgInJldCIsCisgICAiY2llcSIsCisgICAiY2luZXEiLAorICAgImNpYSIsCisgICAiY2lh
ZXEiLAorICAgImNpYiIsCisgICAiY2liZXEiLAorICAgImNpZ3QiLAorICAgImNpZ3RlcSIsCisg
ICAiY2lsdCIsCisgICAiY2lsdGVxIiwKKyAgICJ0aW8iLAorICAgInRpcyIsCisgICAidGl6IiwK
KyAgICJ0aW56IiwKKyAgICJ0Ym8iLAorICAgInRicyIsCisgICAidGJ6IiwKKyAgICJ0Ym56IiwK
KyAgICJwZWVrIiwKKyAgICJwb2tlIiwKKyAgICJicGVxIiwKKyAgICJicG5lcSIsCisgICAiYnBh
IiwKKyAgICJicGFlcSIsCisgICAiYnBiIiwKKyAgICJicGJlcSIsCisgICAiYnBndCIsCisgICAi
YnBndGVxIiwKKyAgICJicGx0IiwKKyAgICJicGx0ZXEiLAorICAgImFkZHAiLAorICAgImFuZHAi
LAorICAgIm9ycCIsCisgICAic3VicCIsCisgICAieG9ycCIsCisgICAibG9hZHAiLAorICAgImNw
ZXEiLAorICAgImNwbmVxIiwKKyAgICJjcGEiLAorICAgImNwYWVxIiwKKyAgICJjcGIiLAorICAg
ImNwYmVxIiwKKyAgICJjcGd0IiwKKyAgICJjcGd0ZXEiLAorICAgImNwbHQiLAorICAgImNwbHRl
cSIsCisgICAic3RvcmVwIiwKKyAgICJidHBvIiwKKyAgICJidHBzIiwKKyAgICJidHB6IiwKKyAg
ICJidHBueiIsCisgICAiYmFkZHBvIiwKKyAgICJiYWRkcHMiLAorICAgImJhZGRweiIsCisgICAi
YmFkZHBueiIKKyAgXQorCitYODZfSU5TVFJVQ1RJT05TID0KKyAgWworICAgImNkcWkiLAorICAg
ImlkaXZpIgorICBdCisKK0lOU1RSVUNUSU9OUyA9IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9J
TlNUUlVDVElPTlMKKworSU5TVFJVQ1RJT05fUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyAr
IElOU1RSVUNUSU9OUy5qb2luKCcpfCgnKSArICcpKVxcWicpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9y
X2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitNQUdJQ19O
VU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE1MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVx
dWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMiCisKK09GRlNF
VF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworIworIyBvZmZz
ZXRzTGlzdChhc3QpCisjIHNpemVzTGlzdChhc3QpCisjCisjIFJldHVybnMgYSBsaXN0IG9mIG9m
ZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhlIEFTVC4KKyMKKworZGVmIG9mZnNldHNMaXN0KGFz
dCkKKyAgYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorZW5kCisKK2RlZiBzaXpl
c0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CitlbmQKKworIworIyBv
ZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGFzdCwgZmlsZSkgLT4KKyMgICAgIFtvZmZzZXRz
LCBpbmRleF0KKyMKKyMgUGFyc2VzIHRoZSBvZmZzZXRzIGZyb20gYSBmaWxlIGFuZCByZXR1cm5z
IGEgbGlzdCBvZiBvZmZzZXRzIGFuZCB0aGUKKyMgaW5kZXggb2YgdGhlIGNvbmZpZ3VyYXRpb24g
dGhhdCBpcyB2YWxpZCBpbiB0aGlzIGJ1aWxkIHRhcmdldC4KKyMKKworZGVmIG9mZnNldHNBbmRD
b25maWd1cmF0aW9uSW5kZXgoZmlsZSkKKyAgaW5kZXggPSBuaWwKKyAgb2Zmc2V0cyA9IFtdCisg
IGVuZGlhbm5lc3NNYXJrZXJCeXRlcyA9IG5pbAorICAKKyAgZGVmIHJlYWRJbnQoZW5kaWFubmVz
cywgaW5wKQorICAgIGJ5dGVzID0gW10KKyAgICA0LnRpbWVzIHsKKyAgICAgIGJ5dGVzIDw8IGlu
cC5nZXRieXRlCisgICAgfQorICAgIAorICAgIGlmIGVuZGlhbm5lc3MgPT0gOmxpdHRsZQorICAg
ICAgIyBMaXR0bGUgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMCB8CisgICAgICAgYnl0ZXNb
MV0gPDwgOCB8CisgICAgICAgYnl0ZXNbMl0gPDwgMTYgfAorICAgICAgIGJ5dGVzWzNdIDw8IDI0
KQorICAgIGVsc2UKKyAgICAgICMgQmlnIGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDI0IHwK
KyAgICAgICBieXRlc1sxXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbMl0gPDwgOCB8CisgICAgICAg
Ynl0ZXNbM10gPDwgMCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBbOmxpdHRsZSwgOmJpZ10uZWFj
aCB7CisgICAgfCBlbmRpYW5uZXNzIHwKKyAgICBtYWdpY0J5dGVzID0gW10KKyAgICBNQUdJQ19O
VU1CRVJTLmVhY2ggeworICAgICAgfCBudW1iZXIgfAorICAgICAgY3VycmVudEJ5dGVzID0gW10K
KyAgICAgIDQudGltZXMgeworICAgICAgICBjdXJyZW50Qnl0ZXMgPDwgKG51bWJlciAmIDB4ZmYp
CisgICAgICAgIG51bWJlciA+Pj0gOAorICAgICAgfQorICAgICAgaWYgZW5kaWFubmVzcyA9PSA6
YmlnCisgICAgICAgIGN1cnJlbnRCeXRlcy5yZXZlcnNlIQorICAgICAgZW5kCisgICAgICBtYWdp
Y0J5dGVzICs9IGN1cnJlbnRCeXRlcworICAgIH0KKyAgICAKKyAgICBGaWxlLm9wZW4oZmlsZSwg
InIiKSB7CisgICAgICB8IGlucCB8CisgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgbG9v
cCB7CisgICAgICAgIGJ5dGUgPSBpbnAuZ2V0Ynl0ZQorICAgICAgICBicmVhayB1bmxlc3MgYnl0
ZQorICAgICAgICBpZiBieXRlID09IG1hZ2ljQnl0ZXNbd2hlcmVJbk1hcmtlcl0KKyAgICAgICAg
ICB3aGVyZUluTWFya2VyICs9IDEKKyAgICAgICAgICBpZiB3aGVyZUluTWFya2VyID09IG1hZ2lj
Qnl0ZXMuc2l6ZQorICAgICAgICAgICAgIyBXZSBoYXZlIGEgbWF0Y2ghIElmIHdlIGhhdmUgbm90
IHlldCByZWFkIHRoZSBlbmRpYW5uZXNzIG1hcmtlciBhbmQgaW5kZXgsCisgICAgICAgICAgICAj
IHRoZW4gcmVhZCB0aG9zZSBub3c7IG90aGVyd2lzZSByZWFkIGFuIG9mZnNldC4KKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgbm90IGluZGV4CisgICAgICAgICAgICAgIGluZGV4ID0gcmVh
ZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIG9m
ZnNldHMgPDwgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbmQKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgICBlbmQKKyAg
ICAgICAgZWxzZQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICAgIGVuZAorICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICBicmVhayBpZiBpbmRleAorICB9CisgIAorICByYWlzZSB1
bmxlc3MgaW5kZXgKKyAgCisgIFtvZmZzZXRzLCBpbmRleF0KK2VuZAorCisjCisjIGJ1aWxkT2Zm
c2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAtPiBbb2Zmc2V0cywgc2l6ZXNdCisjCisjIEJ1aWxk
cyBhIG1hcHBpbmcgYmV0d2VlbiBTdHJ1Y3RPZmZzZXQgbm9kZXMgYW5kIHRoZWlyIHZhbHVlcy4K
KyMKKworZGVmIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KQorICBvZmZzZXRzTWFw
ID0ge30KKyAgc2l6ZXNNYXAgPSB7fQorICBhc3RPZmZzZXRzTGlzdCA9IG9mZnNldHNMaXN0KGFz
dCkKKyAgYXN0U2l6ZXNMaXN0ID0gc2l6ZXNMaXN0KGFzdCkKKyAgcmFpc2UgdW5sZXNzIGFzdE9m
ZnNldHNMaXN0LnNpemUgKyBhc3RTaXplc0xpc3Quc2l6ZSA9PSBvZmZzZXRzTGlzdC5zaXplCisg
IG9mZnNldHNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHN0cnVjdE9mZnNldCwg
aW5kZXggfAorICAgIG9mZnNldHNNYXBbc3RydWN0T2Zmc2V0XSA9IG9mZnNldHNMaXN0LnNoaWZ0
CisgIH0KKyAgc2l6ZXNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHNpemVvZiwg
aW5kZXggfAorICAgIHNpemVzTWFwW3NpemVvZl0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9Cisg
IFtvZmZzZXRzTWFwLCBzaXplc01hcF0KK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9wYXJzZXIucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4NSBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0Igor
cmVxdWlyZSAiaW5zdHJ1Y3Rpb25zIgorcmVxdWlyZSAicmVnaXN0ZXJzIgorCitjbGFzcyBUb2tl
bgorICBhdHRyX3JlYWRlciA6Y29kZU9yaWdpbiwgOnN0cmluZworICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgc3RyaW5nKQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICAg
IEBzdHJpbmcgPSBzdHJpbmcKKyAgZW5kCisgIAorICBkZWYgPT0ob3RoZXIpCisgICAgaWYgb3Ro
ZXIuaXNfYT8gVG9rZW4KKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIuc3RyaW5nCisgICAgZWxzZQor
ICAgICAgQHN0cmluZyA9PSBvdGhlcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiA9fihvdGhl
cikKKyAgICBAc3RyaW5nID1+IG90aGVyCisgIGVuZAorICAKKyAgZGVmIHRvX3MKKyAgICAiI3tA
c3RyaW5nLmluc3BlY3R9IGF0IGxpbmUgI3tjb2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYg
cGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgcmFpc2Ug
IlBhcnNlIGVycm9yOiAje3RvX3N9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJQYXJzZSBlcnJv
cjogI3t0b19zfTogI3tjb21tZW50WzBdfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIworIyBU
aGUgbGV4ZXIuIFRha2VzIGEgc3RyaW5nIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRva2Vucy4K
KyMKKworZGVmIGxleChzdHIpCisgIHJlc3VsdCA9IFtdCisgIGxpbmVOdW1iZXIgPSAxCisgIHdo
aWxlIG5vdCBzdHIuZW1wdHk/CisgICAgY2FzZSBzdHIKKyAgICB3aGVuIC9cQVwjKFteXG5dKikv
CisgICAgICAjIGNvbW1lbnQsIGlnbm9yZQorICAgIHdoZW4gL1xBXG4vCisgICAgICByZXN1bHQg
PDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAgbGluZU51bWJlciArPSAxCisgICAg
d2hlbiAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5u
ZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFcLihbYS16QS1aMC05X10qKS8KKyAgICAg
IHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFfKFthLXpB
LVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAg
ICB3aGVuIC9cQShbIFx0XSspLworICAgICAgIyB3aGl0ZXNwYWNlLCBpZ25vcmUKKyAgICB3aGVu
IC9cQTB4KFswLTlhLWZBLUZdKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1i
ZXIsICQmLmhleC50b19zKQorICAgIHdoZW4gL1xBMChbMC03XSspLworICAgICAgcmVzdWx0IDw8
IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5vY3QudG9fcykKKyAgICB3aGVuIC9cQShbMC05XSsp
LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9c
QTo6LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVu
IC9cQVs6LFwoXClcW1xdPVwrXC0qXS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51
bWJlciwgJCYpCisgICAgZWxzZQorICAgICAgcmFpc2UgIkxleGVyIGVycm9yIGF0IGxpbmUgbnVt
YmVyICN7bGluZU51bWJlcn0sIHVuZXhwZWN0ZWQgc2VxdWVuY2UgI3tzdHJbMC4uMjBdLmluc3Bl
Y3R9IgorICAgIGVuZAorICAgIHN0ciA9ICR+LnBvc3RfbWF0Y2gKKyAgZW5kCisgIHJlc3VsdAor
ZW5kCisKKyMKKyMgVG9rZW4gaWRlbnRpZmljYXRpb24uCisjCisKK2RlZiBpc1JlZ2lzdGVyKHRv
a2VuKQorICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOCitlbmQKKworZGVmIGlzSW5zdHJ1Y3Rp
b24odG9rZW4pCisgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNL
ZXl3b3JkKHRva2VuKQorICB0b2tlbiA9fiAvXEEoKHRydWUpfChmYWxzZSl8KGlmKXwodGhlbil8
KGVsc2UpfChlbHNpZil8KGVuZCl8KGFuZCl8KG9yKXwobm90KXwobWFjcm8pfChjb25zdCl8KHNp
emVvZil8KGVycm9yKSlcWi8gb3IKKyAgICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOIG9yCisg
ICAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0lkZW50aWZpZXIo
dG9rZW4pCisgIHRva2VuID1+IC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopXFovIGFuZCBub3Qg
aXNLZXl3b3JkKHRva2VuKQorZW5kCisKK2RlZiBpc0xhYmVsKHRva2VuKQorICB0b2tlbiA9fiAv
XEFfKFthLXpBLVowLTlfXSopXFovCitlbmQKKworZGVmIGlzTG9jYWxMYWJlbCh0b2tlbikKKyAg
dG9rZW4gPX4gL1xBXC4oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNWYXJpYWJsZSh0
b2tlbikKKyAgaXNJZGVudGlmaWVyKHRva2VuKSBvciBpc1JlZ2lzdGVyKHRva2VuKQorZW5kCisK
K2RlZiBpc0ludGVnZXIodG9rZW4pCisgIHRva2VuID1+IC9cQVswLTldLworZW5kCisKKyMKKyMg
VGhlIHBhcnNlci4gVGFrZXMgYW4gYXJyYXkgb2YgdG9rZW5zIGFuZCByZXR1cm5zIGFuIEFTVC4g
TWV0aG9kcworIyBvdGhlciB0aGFuIHBhcnNlKHRva2VucykgYXJlIG5vdCBmb3IgcHVibGljIGNv
bnN1bXB0aW9uLgorIworCitjbGFzcyBQYXJzZXIKKyAgZGVmIGluaXRpYWxpemUodG9rZW5zKQor
ICAgIEB0b2tlbnMgPSB0b2tlbnMKKyAgICBAaWR4ID0gMAorICBlbmQKKyAgCisgIGRlZiBwYXJz
ZUVycm9yKCpjb21tZW50KQorICAgIGlmIEB0b2tlbnNbQGlkeF0KKyAgICAgIEB0b2tlbnNbQGlk
eF0ucGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBlbHNlCisgICAgICBpZiBjb21tZW50LmVtcHR5
PworICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZpbGUiCisgICAgICBlbHNl
CisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZTogI3tjb21tZW50WzBd
fSIKKyAgICAgIGVuZAorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBjb25zdW1lKHJlZ2V4cCkK
KyAgICBpZiByZWdleHAKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPX4g
cmVnZXhwCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQGlkeCA9PSBAdG9rZW5z
Lmxlbmd0aAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICBlbmQKKyAgCisgIGRlZiBza2lwTmV3
TGluZQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgQGlkeCArPSAxCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQXRvbQorICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gIm5vdCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcGFyc2VQcmVkaWNhdGVB
dG9tCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlCisgICAgICBwYXJz
ZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgQGlkeCArPSAxCisgICAg
ICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJ0cnVlIgorICAgICAgcmVzdWx0
ID0gVHJ1ZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICJmYWxzZSIKKyAgICAgIHJlc3VsdCA9IEZhbHNlLmluc3RhbmNl
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBA
dG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBTZXR0aW5nLmZvck5hbWUoQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBwYXJzZVByZWRpY2F0ZUFuZAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlQXRv
bQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImFuZCIKKyAgICAgIGNvZGVPcmlnaW4gPSBA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xp
bmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgICByZXN1bHQgPSBBbmQu
bmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVu
ZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlCisgICAgIyBzb21lIGV4YW1wbGVzIG9mIHByZWNl
ZGVuY2U6CisgICAgIyBub3QgYSBhbmQgYiAtPiAobm90IGEpIGFuZCBiCisgICAgIyBhIGFuZCBi
IG9yIGMgLT4gKGEgYW5kIGIpIG9yIGMKKyAgICAjIGEgb3IgYiBhbmQgYyAtPiBhIG9yIChiIGFu
ZCBjKQorICAgIAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgd2hpbGUgQHRv
a2Vuc1tAaWR4XSA9PSAib3IiCisgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9
IHBhcnNlUHJlZGljYXRlQW5kCisgICAgICByZXN1bHQgPSBPci5uZXcoY29kZU9yaWdpbiwgcmVz
dWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VW
YXJpYWJsZQorICAgIGlmIGlzUmVnaXN0ZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgIGlmIEB0b2tl
bnNbQGlkeF0gPX4gRlBSX1BBVFRFUk4KKyAgICAgICAgcmVzdWx0ID0gRlBSZWdpc3RlcklELmZv
ck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAg
ICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBlbmQKKyAgICBlbHNp
ZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgIHJlc3VsdCA9IFZhcmlhYmxlLmZv
ck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAg
ICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVz
dWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQWRkcmVzcyhvZmZzZXQpCisgICAgcGFyc2VFcnJv
ciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luCisgICAgCisgICAgIyBUaHJlZSBwb3NzaWJpbGl0aWVzOgorICAgICMg
W10gICAgICAgLT4gQWJzb2x1dGVBZGRyZXNzCisgICAgIyBbYV0gICAgICAtPiBBZGRyZXNzCisg
ICAgIyBbYSxiXSAgICAtPiBCYXNlSW5kZXggd2l0aCBzY2FsZSA9IDEKKyAgICAjIFthLGIsY10g
IC0+IEJhc2VJbmRleAorICAgIAorICAgIEBpZHggKz0gMQorICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gIl0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJldHVybiBBYnNvbHV0ZUFkZHJlc3MubmV3
KGNvZGVPcmlnaW4sIG9mZnNldCkKKyAgICBlbmQKKyAgICBhID0gcGFyc2VWYXJpYWJsZQorICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICByZXN1bHQgPSBBZGRyZXNzLm5ldyhjb2Rl
T3JpZ2luLCBhLCBvZmZzZXQpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRv
a2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgYiA9IHBhcnNlVmFyaWFi
bGUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAgIHJlc3VsdCA9IEJhc2VJ
bmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgMSwgb2Zmc2V0KQorICAgICAgZWxzZQorICAgICAg
ICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgWyIxIiwgIjIiLCAiNCIsICI4Il0ubWVtYmVy
PyBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBjID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcu
dG9faQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vu
c1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2lu
LCBhLCBiLCBjLCBvZmZzZXQpCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAg
ICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VDb2xvbkNvbG9uCisgICAgc2tpcE5ld0xp
bmUKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgcGFyc2VF
cnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICBuYW1lcyA9IFtAdG9r
ZW5zW0BpZHhdLnN0cmluZ10KKyAgICBAaWR4ICs9IDEKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhd
ID09ICI6OiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVu
dGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIG5hbWVzIDw8IEB0b2tlbnNbQGlkeF0uc3RyaW5n
CisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgICByYWlzZSBpZiBuYW1lcy5lbXB0eT8KKyAg
ICBbY29kZU9yaWdpbiwgbmFtZXNdCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbkF0
b20KKyAgICBza2lwTmV3TGluZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICBA
aWR4ICs9IDEKKyAgICAgIE5lZ0ltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9y
aWdpbiwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIo
IgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAg
IHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEK
KyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSW50ZWdlciBAdG9rZW5zW0BpZHhdCisgICAgICBy
ZXN1bHQgPSBJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tA
aWR4XS5zdHJpbmcudG9faSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxz
aWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0g
cGFyc2VDb2xvbkNvbG9uCisgICAgICBpZiBuYW1lcy5zaXplID4gMQorICAgICAgICBTdHJ1Y3RP
ZmZzZXQuZm9yRmllbGQoY29kZU9yaWdpbiwgbmFtZXNbMC4uLTJdLmpvaW4oJzo6JyksIG5hbWVz
Wy0xXSkKKyAgICAgIGVsc2UKKyAgICAgICAgVmFyaWFibGUuZm9yTmFtZShjb2RlT3JpZ2luLCBu
YW1lc1swXSkKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzUmVnaXN0ZXIgQHRva2Vuc1tAaWR4XQor
ICAgICAgcGFyc2VWYXJpYWJsZQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIK
KyAgICAgIEBpZHggKz0gMQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29s
b24KKyAgICAgIFNpemVvZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzLmpvaW4oJzo6JykpCisg
ICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJz
ZUV4cHJlc3Npb25NdWwKKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVz
c2lvbkF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgaWYgQHRva2Vu
c1tAaWR4XSA9PSAiKiIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IE11bElt
bWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VF
eHByZXNzaW9uQXRvbSkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAg
IGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBjb3VsZEJlRXhwcmVzc2lvbgorICAg
IEB0b2tlbnNbQGlkeF0gPT0gIi0iIG9yIEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIgb3IgaXNJ
bnRlZ2VyKEB0b2tlbnNbQGlkeF0pIG9yIGlzVmFyaWFibGUoQHRva2Vuc1tAaWR4XSkgb3IgQHRv
a2Vuc1tAaWR4XSA9PSAiKCIKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uCisgICAg
c2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICB3aGlsZSBA
dG9rZW5zW0BpZHhdID09ICIrIiBvciBAdG9rZW5zW0BpZHhdID09ICItIgorICAgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiKyIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IEFk
ZEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFy
c2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IFN1YkltbWVkaWF0ZXMubmV3KEB0b2tlbnNb
QGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAg
ZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVu
ZAorICAKKyAgZGVmIHBhcnNlT3BlcmFuZChjb21tZW50KQorICAgIGlmIGNvdWxkQmVFeHByZXNz
aW9uCisgICAgICBleHByID0gcGFyc2VFeHByZXNzaW9uCisgICAgICBpZiBAdG9rZW5zW0BpZHhd
ID09ICJbIgorICAgICAgICBwYXJzZUFkZHJlc3MoZXhwcikKKyAgICAgIGVsc2UKKyAgICAgICAg
ZXhwcgorICAgICAgZW5kCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgIHBh
cnNlQWRkcmVzcyhJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgMCkpCisg
ICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBMYWJlbFJlZmVy
ZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMYWJlbC5mb3JOYW1lKEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAx
CisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAg
ICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luLCBMb2NhbExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5z
W0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UK
KyAgICAgIHBhcnNlRXJyb3IoY29tbWVudCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFy
c2VNYWNyb1ZhcmlhYmxlcworICAgIHNraXBOZXdMaW5lCisgICAgY29uc3VtZSgvXEFcKFxaLykK
KyAgICB2YXJpYWJsZXMgPSBbXQorICAgIGxvb3AgeworICAgICAgc2tpcE5ld0xpbmUKKyAgICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBicmVh
aworICAgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIHZhcmlh
YmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vu
c1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yCisgICAgICAg
IGVuZAorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yCisgICAgICBlbmQKKyAgICB9Cisg
ICAgdmFyaWFibGVzCisgIGVuZAorICAKKyAgZGVmIHBhcnNlU2VxdWVuY2UoZmluYWwsIGNvbW1l
bnQpCisgICAgZmlyc3RDb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAg
bGlzdCA9IFtdCisgICAgbG9vcCB7CisgICAgICBpZiAoQGlkeCA9PSBAdG9rZW5zLmxlbmd0aCBh
bmQgbm90IGZpbmFsKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAg
ICAgIGJyZWFrCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgIyBp
Z25vcmUKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJj
b25zdCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzVmFy
aWFibGUgQHRva2Vuc1tAaWR4XQorICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZvck5hbWUo
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAg
QGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIj0i
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YWx1ZSA9IHBhcnNlT3BlcmFuZCgid2hpbGUg
aW5zaWRlIG9mIGNvbnN0ICN7dmFyaWFibGUubmFtZX0iKQorICAgICAgICBsaXN0IDw8IENvbnN0
RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAg
ICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJlcnJvciIKKyAgICAgICAgbGlzdCA8PCBFcnJvci5u
ZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVs
c2lmIEB0b2tlbnNbQGlkeF0gPT0gImlmIgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgICBjb25zdW1lKC9cQSgo
dGhlbil8KFxuKSlcWi8pCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmVGhlbkVsc2Ug
PSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xB
KChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGlj
YXRlLmR1bXB9XCIiKSkKKyAgICAgICAgbGlzdCA8PCBpZlRoZW5FbHNlCisgICAgICAgIHdoaWxl
IEB0b2tlbnNbQGlkeF0gPT0gImVsc2lmIgorICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBza2lwTmV3
TGluZQorICAgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgICAgY29u
c3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAg
ICAgZWxzZUNhc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNl
U2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBc
ImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNl
ID0gZWxzZUNhc2UKKyAgICAgICAgICBpZlRoZW5FbHNlID0gZWxzZUNhc2UKKyAgICAgICAgZW5k
CisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gImVsc2UiCisgICAgICAgICAgQGlkeCArPSAx
CisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFov
LCAid2hpbGUgaW5zaWRlIG9mIGVsc2UgY2FzZSBmb3IgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwi
IikKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJy
b3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gImVuZCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgZW5kCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAg
Y29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlm
aWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZwor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxl
cworICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUg
b2YgbWFjcm8gI3tuYW1lfSIpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBsaXN0IDw8IE1h
Y3JvLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICBlbHNpZiBp
c0luc3RydWN0aW9uIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vu
cy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgICAg
IyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24sIGFuZCBpdCdzIHRoZSBsYXN0IG9uZS4KKyAgICAg
ICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAg
ICAgICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAg
ICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbi4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0
aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICMgSXQncyBkZWZpbml0ZWx5IGFuIGluc3RydWN0aW9uLCBhbmQg
aXQgaGFzIGF0IGxlYXN0IG9uZSBvcGVyYW5kLgorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAg
ICAgICAgICBlbmRPZlNlcXVlbmNlID0gZmFsc2UKKyAgICAgICAgICBsb29wIHsKKyAgICAgICAg
ICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGluc3RydWN0aW9u
ICN7bmFtZX0iKQorICAgICAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5z
LnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAg
ICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbiBhbmQgb2YgdGhlIHNlcXVlbmNlLgorICAg
ICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gdHJ1ZQorICAgICAgICAgICAgICBicmVhaworICAg
ICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgIyBIYXMg
YW5vdGhlciBvcGVyYW5kLgorICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVs
c2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhl
IGluc3RydWN0aW9uLgorICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQg
YSBjb21tYSwgbmV3bGluZSwgb3IgI3tmaW5hbH0gYWZ0ZXIgI3tvcGVyYW5kcy5sYXN0LmR1bXB9
IikKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgIH0KKyAgICAgICAgICBsaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgICBpZiBlbmRP
ZlNlcXVlbmNlCisgICAgICAgICAgICBicmVhaworICAgICAgICAgIGVuZAorICAgICAgICBlbmQK
KyAgICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmln
aW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlk
eF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICIoIgorICAgICAgICAgICMgTWFjcm8gaW52b2NhdGlvbi4KKyAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbG9vcCB7CisgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisg
ICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgorICAgICAgICAgICAgICAg
ICMgSXQncyBhIG1hY3JvIGxhbWJkYSEKKyAgICAgICAgICAgICAgICBjb2RlT3JpZ2luSW5uZXIg
PSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgICAg
ICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGFu
b255bW91cyBtYWNybyBwYXNzZWQgYXMgYXJndW1lbnQgdG8gI3tuYW1lfSIpCisgICAgICAgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwgTWFjcm8ubmV3KGNv
ZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBv
ZiBtYWNybyBjYWxsIHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAg
ICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAg
ICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGFyc2VFcnJvciAiVW5leHBl
Y3RlZCAje0B0b2tlbnNbQGlkeF0uc3RyaW5nLmluc3BlY3R9IHdoaWxlIHBhcnNpbmcgaW52b2Nh
dGlvbiBvZiBtYWNybyAje25hbWV9IgorICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICBlbmQKKyAgICAgICAgICBsaXN0IDw8IE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdp
biwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yICJF
eHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9IgorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlz
TGFiZWwgQHRva2Vuc1tAaWR4XSBvciBpc0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAg
ICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBA
dG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJv
ciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiOiIKKyAgICAgICAgIyBJdCdzIGEgbGFiZWwuCisg
ICAgICAgIGlmIGlzTGFiZWwgbmFtZQorICAgICAgICAgIGxpc3QgPDwgTGFiZWwuZm9yTmFtZShj
b2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbHNlCisgICAgICAgICAgbGlzdCA8PCBMb2NhbExh
YmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RpbmcgdGVybWluYWwg
I3tmaW5hbH0gI3tjb21tZW50fSIKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXco
Zmlyc3RDb2RlT3JpZ2luLCBsaXN0KQorICBlbmQKK2VuZAorCitkZWYgcGFyc2UodG9rZW5zKQor
ICBwYXJzZXIgPSBQYXJzZXIubmV3KHRva2VucykKKyAgcGFyc2VyLnBhcnNlU2VxdWVuY2Uobmls
LCAiIikKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdp
c3RlcnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
cmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACisjIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitHUFJTID0KKyAgWworICAgInQwIiwKKyAg
ICJ0MSIsCisgICAidDIiLAorICAgInQzIiwKKyAgICJ0NCIsCisgICAiY2ZyIiwKKyAgICJhMCIs
CisgICAiYTEiLAorICAgInIwIiwKKyAgICJyMSIsCisgICAic3AiCisgIF0KKworRlBSUyA9Cisg
IFsKKyAgICJmdDAiLAorICAgImZ0MSIsCisgICAiZnQyIiwKKyAgICJmdDMiLAorICAgImZ0NCIs
CisgICAiZnQ1IiwKKyAgICJmYTAiLAorICAgImZhMSIsCisgICAiZmEyIiwKKyAgICJmYTMiLAor
ICAgImZyIgorICBdCisKK1JFR0lTVEVSUyA9IEdQUlMgKyBGUFJTCisKK0dQUl9QQVRURVJOID0g
UmVnZXhwLm5ldygnXFxBKCgnICsgR1BSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCitGUFJfUEFU
VEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQor
CitSRUdJU1RFUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgUkVHSVNURVJTLmpvaW4o
Jyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3NlbGZfaGFzaC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9zZWxmX2hhc2gucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9zZWxmX2hhc2gucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKyMh
L3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworcmVxdWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJwYXRobmFtZSIKKworIworIyBzZWxm
SGFzaCAtPiBTSEExIGhleGRpZ2VzdAorIworIyBSZXR1cm5zIGEgaGFzaCBvZiB0aGUgb2ZmbGlu
ZWFzbSBzb3VyY2UgY29kZS4gVGhpcyBhbGxvd3MgZGVwZW5kZW5jeQorIyB0cmFja2luZyBmb3Ig
bm90IGp1c3QgY2hhbmdlcyBpbiBpbnB1dCwgYnV0IGFsc28gY2hhbmdlcyBpbiB0aGUgYXNzZW1i
bGVyCisjIGl0c2VsZi4KKyMKKworZGVmIHNlbGZIYXNoCisgIGNvbnRlbnRzID0gIiIKKyAgbXlQ
YXRoID0gUGF0aG5hbWUubmV3KF9fRklMRV9fKS5kaXJuYW1lCisgIERpci5mb3JlYWNoKG15UGF0
aCkgeworICAgIHwgZW50cnkgfAorICAgIGlmIGVudHJ5ID1+IC9cLnJiJC8KKyAgICAgIGNvbnRl
bnRzICs9IElPOjpyZWFkKG15UGF0aCArIGVudHJ5KQorICAgIGVuZAorICB9CisgIHJldHVybiBE
aWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGNvbnRlbnRzKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjA1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCity
ZXF1aXJlICJhc3QiCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVp
cmUgInRyYW5zZm9ybSIKKworIworIyBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSAt
PiBzZXR0aW5nc0NvbWJpYXRpb25zCisjCisjIENvbXB1dGVzIGFuIGFycmF5IG9mIHNldHRpbmdz
IG1hcHMsIHdoZXJlIGEgc2V0dGluZ3MgbWFwIGNvbnN0aXR1dGVzCisjIGEgY29uZmlndXJhdGlv
biBmb3IgdGhlIGFzc2VtYmx5IGNvZGUgYmVpbmcgZ2VuZXJhdGVkLiBUaGUgbWFwCisjIGNvbnRh
aW5zIGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBzZXR0aW5ncyBuYW1lcyAoc3RyaW5n
cykgYW5kCisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xlYW5zICh0cnVlIGZvciBlbmFibGVkLCBmYWxz
ZSBmb3IgZGlzYWJsZWQpLgorIworCitkZWYgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFz
dCkKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBbXQorICAKKyAgZGVmIHNldHRpbmdzQ29tYmlu
YXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbWFwU29GYXIsIHJlbWFpbmluZykKKyAgICBpZiBy
ZW1haW5pbmcuZW1wdHk/CisgICAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA8PCBtYXBTb0Zhcgor
ICAgICAgcmV0dXJuCisgICAgZW5kCisgICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisg
ICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSB0cnVlCisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNl
dHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmluZ1sxLi4tMV0pCisgICAgCisgICAg
bmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSBmYWxzZQor
ICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1h
aW5pbmdbMS4uLTFdKQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0Nv
bWJpbmF0aW9ucywge30sIChhc3QuZmlsdGVyKFNldHRpbmcpLnVuaXEuY29sbGVjdHt8dnwgdi5u
YW1lfSArIFsiWDg2IiwgIkFSTXY3Il0pLnVuaXEpCisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9u
cworZW5kCisKKyMKKyMgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7CisjICAg
ICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwgLi4uIH0KKyMKKyMg
RGV0ZXJtaW5lcyBpZiB0aGUgc2V0dGluZ3MgY29tYmluYXRpb24gaXMgdmFsaWQsIGFuZCBpZiBz
bywgY2FsbHMKKyMgdGhlIGJsb2NrIHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSBuZWVkIHRvIGdl
bmVyYXRlIGNvZGUuCisjCisKK2RlZiBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3Qp
CisgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0aGlzIGNvbWJpbmF0b3IgY2xhaW1zIHRv
IHN1cHBvcnQuCisgIG51bUNsYWltZWRCYWNrZW5kcyA9IDAKKyAgc2VsZWN0ZWRCYWNrZW5kID0g
bmlsCisgIEJBQ0tFTkRTLmVhY2ggeworICAgIHwgYmFja2VuZCB8CisgICAgaXNTdXBwb3J0ZWQg
PSBjb25jcmV0ZVNldHRpbmdzW2JhY2tlbmRdCisgICAgcmFpc2UgdW5sZXNzIGlzU3VwcG9ydGVk
ICE9IG5pbAorICAgIG51bUNsYWltZWRCYWNrZW5kcyArPSBpZiBpc1N1cHBvcnRlZCB0aGVuIDEg
ZWxzZSAwIGVuZAorICAgIGlmIGlzU3VwcG9ydGVkCisgICAgICBzZWxlY3RlZEJhY2tlbmQgPSBi
YWNrZW5kCisgICAgZW5kCisgIH0KKyAgCisgIHJldHVybiBpZiBudW1DbGFpbWVkQmFja2VuZHMg
PiAxCisgIAorICAjIFJlc29sdmUgdGhlIEFTVCBkb3duIHRvIGEgbG93LWxldmVsIGZvcm0gKG5v
IG1hY3JvcyBvciBjb25kaXRpb25hbHMpLgorICBsb3dMZXZlbEFTVCA9IGFzdC5yZXNvbHZlU2V0
dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxv
d0xldmVsQVNULCBzZWxlY3RlZEJhY2tlbmQKK2VuZAorCisjCisjIGZvckVhY2hWYWxpZFNldHRp
bmdzQ29tYmluYXRpb24oYXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFj
a2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9u
KGFzdCwgc2V0dGluZ3NDb21iaW5hdGlvbnMpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywg
YXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9CisjCisjIEV4ZWN1dGVzIHRoZSBnaXZlbiBibG9j
ayBmb3IgZWFjaCB2YWxpZCBzZXR0aW5ncyBjb21iaW5hdGlvbiBpbiB0aGUKKyMgc2V0dGluZ3Mg
bWFwLiBUaGUgYXN0IHBhc3NlZCBpbnRvIHRoZSBibG9jayBpcyByZXNvbHZlZAorIyAoYXN0LnJl
c29sdmUpIGFnYWluc3QgdGhlIHNldHRpbmdzLgorIworIyBUaGUgZmlyc3QgZm9ybSB3aWxsIGNh
bGwgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgZm9yIHlvdS4KKyMKKworZGVmIGZv
ckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCAqb3B0aW9uYWxTZXR0aW5nc0NvbWJp
bmF0aW9ucykKKyAgcmFpc2UgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucy5zaXplID4g
MQorICAKKyAgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucy5lbXB0eT8KKyAgICBzZXR0
aW5nc0NvbWJpbmF0aW9ucyA9IGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIGVs
c2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IG9wdGlvbmFsU2V0dGluZ3NDb21iaWF0aW9u
c1swXQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zLmVhY2hfd2l0aF9pbmRleCB7
CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBpbmRleCB8CisgICAgZm9yU2V0dGluZ3MoY29uY3Jl
dGVTZXR0aW5ncywgYXN0KSB7CisgICAgICB8IGNvbmNyZXRlU2V0dGluZ3NfLCBsb3dMZXZlbEFT
VCwgYmFja2VuZCB8CisgICAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwg
YmFja2VuZCwgaW5kZXgKKyAgICB9CisgIH0KK2VuZAorCisjCisjIGNwcFNldHRpbmdzVGVzdChj
b25jcmV0ZVNldHRpbmdzKQorIworIyBSZXR1cm5zIHRoZSBDKysgY29kZSB1c2VkIHRvIHRlc3Qg
aWYgd2UgYXJlIGluIGEgY29uZmlndXJhdGlvbiB0aGF0CisjIGNvcnJlc3BvbmRzIHRvIHRoZSBn
aXZlbiBjb25jcmV0ZSBzZXR0aW5ncy4KKyMKKworZGVmIGNwcFNldHRpbmdzVGVzdChjb25jcmV0
ZVNldHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdzLnRvX2EuY29sbGVjdHsKKyAg
ICB8IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisgICAgICAgIiIKKyAgICAgZWxzZQorICAgICAg
ICIhIgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIgKyBwYWlyWzBdCisgIH0uam9pbigiICYm
ICIpCitlbmQKKworIworIyBpc0FTVEVycm9uZW91cyhhc3QpCisjCisjIFRlc3RzIHRvIHNlZSBp
ZiB0aGUgQVNUIGNsYWltcyB0aGF0IHRoZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUKKyMg
dXNlcidzIGNvZGUsIGFmdGVyIHNldHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4K
KyMKKworZGVmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAgbm90IGFzdC5maWx0ZXIoRXJyb3IpLmVt
cHR5PworZW5kCisKKyMKKyMgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQor
IworIyBFbWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBnaXZl
biBjb25maWd1cmF0aW9uLgorIworCitkZWYgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNl
dHRpbmdzKQorICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3Mp
CisgICRvdXRwdXQucHV0cyAiI2Vsc2UiCisgICRvdXRwdXQucHV0cyAiI2Vycm9yIFwiQ29uZmln
dXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAgJG91dHB1dC5wdXRzICIjZW5kaWYiCitlbmQKKworIwor
IyBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQp
IHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4uIH0KKyMKKyMg
RW1pdHMgYWxsIHJlbGV2YW50IGd1YXJkcyB0byBzZWUgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaG9s
ZHMgYW5kCisjIGNhbGxzIHRoZSBibG9jayBpZiB0aGUgY29uZmlndXJhdGlvbiBpcyBub3QgZXJy
b25lb3VzLgorIworCitkZWYgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5n
cywgYXN0LCBiYWNrZW5kKQorICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRl
U2V0dGluZ3MpCisgIAorICBpZiBpc0FTVEVycm9uZW91cyhhc3QpCisgICAgJG91dHB1dC5wdXRz
ICIjZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uXCIiCisgIGVsc2lmIG5vdCBXT1JLSU5H
X0JBQ0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIlRo
aXMgYmFja2VuZCBpcyBub3Qgc3VwcG9ydGVkIHlldC5cIiIKKyAgZWxzZQorICAgIHlpZWxkIGNv
bmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZAorICBlbmQKKyAgCisgICRvdXRwdXQucHV0cyAi
I2VuZGlmIgorZW5kCisKKyMKKyMgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkgewor
IyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0KKyMK
KyMgRW1pdHMgZ3VhcmQgY29kZXMgZm9yIGFsbCB2YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIGNh
bGxzIHRoZSBibG9jaworIyBmb3IgdGhvc2UgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQg
YW5kIG5vdCBlcnJvbmVvdXMuCisjCisKK2RlZiBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMo
YXN0KQorICBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworICAgIHwgY29u
Y3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICAkb3V0cHV0
LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICAgeWllbGQgY29uY3Jl
dGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgJG91dHB1dC5wdXRz
ICIjZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
NDIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFz
dCIKKworIworIyBub2RlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyMKKyMgQ29uc3RydWN0
IGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IElmVGhlbkVsc2Ugbm9kZXMgYnkKKyMg
c3Vic3RpdHV0aW5nIGNvbmNyZXRlIGJvb2xlYW4gdmFsdWVzIGZvciBlYWNoIFNldHRpbmcuCisj
CisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBtYXBD
aGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUKKyAgZGVmIHJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlCisg
IGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitj
bGFzcyBTZXR0aW5nCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2V0dGlu
Z3NbQG5hbWVdLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQKKyAgZGVmIHJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52
YWx1ZSBhbmQgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQor
ICBlbmQKK2VuZAorCitjbGFzcyBPcgorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQor
ICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIG9yIEByaWdodC5yZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3Mg
Tm90CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKG5vdCBAY2hpbGQucmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNz
IElmVGhlbkVsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBpZiBAcHJl
ZGljYXRlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUKKyAgICAgIEB0aGVuQ2FzZS5y
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZWxzZQorICAgICAgQGVsc2VDYXNlLnJlc29s
dmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVu
Y2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBuZXdMaXN0ID0gW10KKyAg
ICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpdGVtID0gaXRlbS5yZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICBpZiBpdGVtLmlzX2E/IFNlcXVlbmNlCisgICAgICAg
IG5ld0xpc3QgKz0gaXRlbS5saXN0CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRl
bQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0
KQorICBlbmQKK2VuZAorCisjCisjIG5vZGUuZGVtYWNyb2lmeShtYWNyb3MpCisjIG5vZGUuc3Vi
c3RpdHV0ZShtYXBwaW5nKQorIworIyBkZW1hY3JvaWZ5KCkgY29uc3RydWN0cyBhIG5ldyBBU1Qg
dGhhdCBkb2VzIG5vdCBoYXZlIGFueSBNYWNybworIyBub2Rlcywgd2hpbGUgc3Vic3RpdHV0ZSgp
IHJlcGxhY2VzIFZhcmlhYmxlIG5vZGVzIHdpdGggdGhlIGdpdmVuCisjIG5vZGVzIGluIHRoZSBt
YXBwaW5nLgorIworCitjbGFzcyBOb2RlCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBt
YXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLmRlbWFjcm9pZnkobWFj
cm9zKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG1h
cENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShtYXBw
aW5nKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQor
ICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0
ZUxhYmVscyhtYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8KKyAgZGVm
IHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBteU1hcHBpbmcgPSB7fQorICAgIG1hcHBpbmcuZWFj
aF9wYWlyIHsKKyAgICAgIHwga2V5LCB2YWx1ZSB8CisgICAgICB1bmxlc3MgQHZhcmlhYmxlcy5p
bmNsdWRlPyBrZXkKKyAgICAgICAgbXlNYXBwaW5nW2tleV0gPSB2YWx1ZQorICAgICAgZW5kCisg
ICAgfQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vi
c3RpdHV0ZShteU1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZQor
ICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1h
cHBpbmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisK
K2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBp
ZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2Vs
ZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgc3Vic3RpdHV0
ZShjb25zdGFudHMpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbXlDb25zdGFudHMgPSBjb25zdGFu
dHMuZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5p
c19hPyBDb25zdERlY2wKKyAgICAgICAgbXlDb25zdGFudHNbaXRlbS52YXJpYWJsZV0gPSBpdGVt
LnZhbHVlLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICBlbHNlCisgICAgICAgIG5ld0xp
c3QgPDwgaXRlbS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZW5kCisgICAgfQorICAg
IFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKKyAgCisgIGRlZiByZW5h
bWVMYWJlbHMoY29tbWVudCkKKyAgICBtYXBwaW5nID0ge30KKyAgICAKKyAgICBAbGlzdC5lYWNo
IHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IExvY2FsTGFiZWwKKyAgICAg
ICAgbWFwcGluZ1tpdGVtXSA9IExvY2FsTGFiZWwudW5pcXVlKGlmIGNvbW1lbnQgdGhlbiBjb21t
ZW50ICsgIl8iIGVsc2UgIiIgZW5kICsgaXRlbS5jbGVhbk5hbWUpCisgICAgICBlbmQKKyAgICB9
CisgICAgCisgICAgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICBlbmQKKyAgCisgIGRlZiBk
ZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBteU1hY3JvcyA9IG1hY3Jvcy5kdXAKKyAgICBAbGlzdC5l
YWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAg
IG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlz
dCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5p
c19hPyBNYWNybworICAgICAgICAjIElnbm9yZS4KKyAgICAgIGVsc2lmIGl0ZW0uaXNfYT8gTWFj
cm9DYWxsCisgICAgICAgIG1hcHBpbmcgPSB7fQorICAgICAgICBteU15TWFjcm9zID0gbXlNYWNy
b3MuZHVwCisgICAgICAgIHJhaXNlICJDb3VsZCBub3QgZmluZCBtYWNybyAje2l0ZW0ubmFtZX0g
YXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgbXlNYWNyb3NbaXRlbS5uYW1lXQor
ICAgICAgICByYWlzZSAiQXJndW1lbnQgY291bnQgbWlzbWF0Y2ggZm9yIGNhbGwgdG8gI3tpdGVt
Lm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIGl0ZW0ub3BlcmFuZHMu
c2l6ZSA9PSBteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlcy5zaXplCisgICAgICAgIGl0ZW0u
b3BlcmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgfCBpZHggfAorICAgICAgICAgIGlmIGl0
ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBWYXJpYWJsZSBhbmQgbXlNYWNyb3NbaXRlbS5vcGVyYW5k
c1tpZHhdLm5hbWVdCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0u
dmFyaWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0K
KyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5u
YW1lXSA9IG5pbAorICAgICAgICAgIGVsc2lmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBNYWNy
bworICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tp
ZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgICBtYXBwaW5nW215TWFj
cm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNl
CisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lk
eF1dID0gbmlsCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFi
bGVzW2lkeF1dID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgZW5kCisgICAgICAgIH0K
KyAgICAgICAgbmV3TGlzdCArPSBteU1hY3Jvc1tpdGVtLm5hbWVdLmJvZHkuc3Vic3RpdHV0ZSht
YXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNyb3MpLnJlbmFtZUxhYmVscyhpdGVtLm5hbWUpLmxp
c3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtLmRlbWFjcm9pZnkobXlNYWNy
b3MpCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xp
c3QpLnN1YnN0aXR1dGUoe30pCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5yZXNvbHZlT2Zmc2V0
cyhvZmZzZXRzLCBzaXplcykKKyMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGhhcyBvZmZz
ZXQgdmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMKKyMgb2Zmc2V0cy4KKyMKKworY2xhc3MgTm9k
ZQorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgbWFwQ2hpbGRyZW4g
eworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBz
aXplcykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldAorICBkZWYgcmVz
b2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgb2Zmc2V0c1tzZWxmXQorICAgICAg
SW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXRzW3NlbGZdKQorICAgIGVsc2UKKyAgICAg
IHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mCisgIGRlZiByZXNvbHZl
T2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBzaXplc1tzZWxmXQorICAgICAgSW1tZWRp
YXRlLm5ldyhjb2RlT3JpZ2luLCBzaXplc1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBwdXRzICJD
b3VsZCBub3QgZmluZCAje3NlbGYuaW5zcGVjdH0gaW4gI3tzaXplcy5rZXlzLmluc3BlY3R9Igor
ICAgICAgcHV0cyAic2l6ZXMgPSAje3NpemVzLmluc3BlY3R9IgorICAgICAgc2VsZgorICAgIGVu
ZAorICBlbmQKK2VuZAorCisjCisjIG5vZGUuZm9sZAorIworIyBSZXNvbHZlIGNvbnN0YW50IHJl
ZmVyZW5jZXMgYW5kIGNvbXB1dGUgYXJpdGhtZXRpYyBleHByZXNzaW9ucy4KKyMKKworY2xhc3Mg
Tm9kZQorICBkZWYgZm9sZAorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAg
ICAgY2hpbGQuZm9sZAorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcwor
ICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5m
b2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJl
dHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5l
dyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSArIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKwor
Y2xhc3MgU3ViSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAor
ICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0Lmlz
X2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRp
YXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAtIEByaWdodC52
YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAg
IEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJu
IHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVz
cyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBA
bGVmdC52YWx1ZSAqIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRp
YXRlCisgIGRlZiBmb2xkCisgICAgQGNoaWxkID0gQGNoaWxkLmZvbGQKKyAgICByZXR1cm4gc2Vs
ZiB1bmxlc3MgQGNoaWxkLmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9y
aWdpbiwgLUBjaGlsZC52YWx1ZSkKKyAgZW5kCitlbmQKKworIworIyBub2RlLnJlc29sdmVBZnRl
clNldHRpbmdzKG9mZnNldHMsIHNpemVzKQorIworIyBDb21waWxlIGFzc2VtYmx5IGFnYWluc3Qg
YSBzZXQgb2Ygb2Zmc2V0cy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZShvZmZzZXRz
LCBzaXplcykKKyAgICBkZW1hY3JvaWZ5KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXpl
cykuZm9sZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20veDg2LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20veDg2LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2NyBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgc3VwcG9ydHM4
Qml0T25YODYKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0MSIs
ICJhMSIsICJyMSIsICJ0MiIsICJ0MyIKKyAgICAgIHRydWUKKyAgICB3aGVuICJ0NCIsICJjZnIi
CisgICAgICBmYWxzZQorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJh
MCIsICJyMCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWFs
IgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWF4IgorICAgICAgd2hlbiA6aW50CisgICAg
ICAgICIlZWF4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hl
biAidDEiLCAiYTEiLCAicjEiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAg
ICAgICAgIiVkbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVkeCIKKyAgICAgIHdoZW4g
OmludAorICAgICAgICAiJWVkeCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVu
ZAorICAgIHdoZW4gInQyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAg
ICAgICIlY2wiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlY3giCisgICAgICB3aGVuIDpp
bnQKKyAgICAgICAgIiVlY3giCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQK
KyAgICB3aGVuICJ0MyIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAg
ICAiJWJsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWJ4IgorICAgICAgd2hlbiA6aW50
CisgICAgICAgICIlZWJ4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisg
ICAgd2hlbiAidDQiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAg
IiVzaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc2kiCisgICAgICB3aGVuIDppbnQK
KyAgICAgICAgIiVlc2kiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAg
ICB3aGVuICJjZnIiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAg
IiVkaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZGkiCisgICAgICB3aGVuIDppbnQK
KyAgICAgICAgIiVlZGkiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAg
ICB3aGVuICJzcCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAi
JXNwbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVzcCIKKyAgICAgIHdoZW4gOmludAor
ICAgICAgICAiJWVzcCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAg
IGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQo
a2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEZQ
UmVnaXN0ZXJJRAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIHJhaXNlIHVubGVzcyBraW5k
ID09IDpkb3VibGUKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAiZmEwIiwgImZyIgor
ICAgICAgIiV4bW0wIgorICAgIHdoZW4gImZ0MSIsICJmYTEiCisgICAgICAiJXhtbTEiCisgICAg
d2hlbiAiZnQyIiwgImZhMiIKKyAgICAgICIleG1tMiIKKyAgICB3aGVuICJmdDMiLCAiZmEzIgor
ICAgICAgIiV4bW0zIgorICAgIHdoZW4gImZ0NCIKKyAgICAgICIleG1tNCIKKyAgICB3aGVuICJm
dDUiCisgICAgICAiJXhtbTUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5k
CisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIK
KyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisg
ICAgIiQje3ZhbHVlfSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIj
e3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0
T25YODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAg
ICIje29mZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9KSIKKyAgZW5kCisgIGRl
ZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5k
CitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRy
dWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZh
bHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0sICN7aW5kZXgueDg2T3BlcmFuZCg6aW50KX0s
ICN7c2NhbGV9KSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioj
e3g4Nm9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MK
KyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4
Nk9wZXJhbmQoa2luZCkKKyAgICAiI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCisKKyAgZGVmIHg4
NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje2FkZHJlc3MudmFsdWV9IgorICBlbmQKK2VuZAor
CitjbGFzcyBMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICBh
c21MYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCisgIGRlZiB4
ODZDYWxsT3BlcmFuZChraW5kKQorICAgIGFzbUxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIElu
c3RydWN0aW9uCisgIGRlZiB4ODZPcGVyYW5kcygqa2luZHMpCisgICAgcmFpc2UgdW5sZXNzIGtp
bmRzLnNpemUgPT0gb3BlcmFuZHMuc2l6ZQorICAgIHJlc3VsdCA9IFtdCisgICAga2luZHMuc2l6
ZS50aW1lcyB7CisgICAgICB8IGlkeCB8CisgICAgICByZXN1bHQgPDwgb3BlcmFuZHNbaWR4XS54
ODZPcGVyYW5kKGtpbmRzW2lkeF0pCisgICAgfQorICAgIHJlc3VsdC5qb2luKCIsICIpCisgIGVu
ZAorCisgIGRlZiB4ODZTdWZmaXgoa2luZCkKKyAgICBjYXNlIGtpbmQKKyAgICB3aGVuIDpieXRl
CisgICAgICAiYiIKKyAgICB3aGVuIDpoYWxmCisgICAgICAidyIKKyAgICB3aGVuIDppbnQKKyAg
ICAgICJsIgorICAgIHdoZW4gOmRvdWJsZQorICAgICAgInNkIgorICAgIGVsc2UKKyAgICAgIHJh
aXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRz
KG9wY29kZSwga2luZCwgbnVtT3BlcmFuZHMpCisgICAgaWYgbnVtT3BlcmFuZHMgPT0gMworICAg
ICAgaWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICIje29w
Y29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisg
ICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5k
KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNlCisgICAgICAg
ICRhc20ucHV0cyAibW92I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICRhc20u
cHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFu
ZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICAkYXNt
LnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5k
bGVYODZPcChvcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bj
b2RlLCBraW5kLCBvcGVyYW5kcy5zaXplKQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTaGlm
dChvcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIG9yIG9w
ZXJhbmRzWzBdID09IFJlZ2lzdGVySUQuZm9yTmFtZShuaWwsICJ0MiIpCisgICAgICAkYXNtLnB1
dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgInhjaGds
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAgICAkYXNtLnB1dHMg
IiN7b3Bjb2RlfSAlY2wsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAk
YXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkRvdWJsZUJyYW5jaChicmFuY2hPcGNv
ZGUsIG1vZGUpCisgICAgY2FzZSBtb2RlCisgICAgd2hlbiA6bm9ybWFsCisgICAgICAkYXNtLnB1
dHMgInVjb21pc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuIDpyZXZlcnNlCisgICAgICAkYXNt
LnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSBtb2Rl
Lmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJh
bmRzWzJdLmFzbUxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29tcGFyZShv
cGNvZGVTdWZmaXgsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFu
ZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklE
IGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikKKyAgICAg
ICRhc20ucHV0cyAidGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoa2luZCl9IgorICAgIGVsc2lmIG9wZXJhbmRzWzFdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3Bl
cmFuZHNbMV0udmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQg
KG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNt
LnB1dHMgInRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgImNtcCN7eDg2U3VmZml4KGtpbmQpfSAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
a2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRCcmFuY2goYnJh
bmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NkludENvbXBhcmUoYnJhbmNoT3Bjb2RlWzEu
Li0xXSwga2luZCkKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJd
LmFzbUxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3Bl
cmFuZCkKKyAgICBpZiBvcGVyYW5kLnN1cHBvcnRzOEJpdE9uWDg2CisgICAgICAkYXNtLnB1dHMg
IiN7c2V0T3Bjb2RlfSAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9IgorICAgICAgJGFzbS5w
dXRzICJtb3Z6YmwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVyYW5k
Lng4Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgICAgJGFzbS5wdXRzICIje3NldE9wY29kZX0g
JWFsIgorICAgICAgJGFzbS5wdXRzICJtb3Z6YmwgJWFsLCAlZWF4IgorICAgICAgJGFzbS5wdXRz
ICJ4Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmVTZXQoc2V0T3Bjb2RlLCBraW5kKQorICAg
IGhhbmRsZVg4NkludENvbXBhcmUoc2V0T3Bjb2RlWzMuLi0xXSwga2luZCkKKyAgICBoYW5kbGVY
ODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kc1syXSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2
VGVzdChraW5kKQorICAgIHZhbHVlID0gb3BlcmFuZHNbMF0KKyAgICBjYXNlIG9wZXJhbmRzLnNp
emUKKyAgICB3aGVuIDIKKyAgICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0x
KQorICAgIHdoZW4gMworICAgICAgbWFzayA9IG9wZXJhbmRzWzFdCisgICAgZWxzZQorICAgICAg
cmFpc2UgIkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5kcywgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9
IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAgaWYgbWFzay5pc19h
PyBJbW1lZGlhdGUgYW5kIG1hc2sudmFsdWUgPT0gLTEKKyAgICAgIGlmIHZhbHVlLmlzX2E/IFJl
Z2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7dmFs
dWUueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBl
bHNlCisgICAgICAgICRhc20ucHV0cyAiY21wI3t4ODZTdWZmaXgoa2luZCl9ICQwLCAje3ZhbHVl
Lng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRz
ICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7bWFzay54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1
ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2
QnJhbmNoVGVzdChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQor
ICAgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHMubGFzdC5hc21MYWJlbH0i
CisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldFRlc3Qoc2V0T3Bjb2RlLCBraW5kKQorICAg
IGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5k
cy5sYXN0KQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcEJyYW5jaChvcGNvZGUsIGJyYW5j
aE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtp
bmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4g
NAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgd2hlbiAzCisgICAgICBqdW1w
VGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICByYWlzZSBzZWxmLmluc3BlY3QK
KyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQuYXNt
TGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTdWJCcmFuY2goYnJhbmNoT3Bjb2Rl
LCBraW5kKQorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gNCBhbmQgb3BlcmFuZHNbMV0gPT0gb3Bl
cmFuZHNbMl0KKyAgICAgICRhc20ucHV0cyAibmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgJGFzbS5wdXRzICJhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAg
aGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMoInN1YiN7eDg2U3VmZml4KGtpbmQpfSIsIGtpbmQs
IG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGVuZAorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAg
IHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgd2hlbiAzCisgICAg
ICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICByYWlzZSBzZWxmLmlu
c3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJn
ZXQuYXNtTGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBsb3dlclg4NgorICAgICRhc20uY29tbWVu
dCBjb2RlT3JpZ2luU3RyaW5nCisgICAgY2FzZSBvcGNvZGUKKyAgICB3aGVuICJhZGRpIiwgImFk
ZHAiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IElt
bWVkaWF0ZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJ
RAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAg
ICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCisgICAgICAgICAgdW5sZXNzIG9wZXJhbmRz
WzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdmwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICRhc20ucHV0cyAibGVhbCAj
e29wZXJhbmRzWzBdLnZhbHVlfSgje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBv
cGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAg
ICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFp
c2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRz
ICJsZWFsICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
IGVsc2UKKyAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1sw
XQorICAgICAgICAgICRhc20ucHV0cyAiYWRkbCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIK
KyAgICAgICAgZW5kCisgICAgICBlbmQKKyAgICB3aGVuICJhbmRpIiwgImFuZHAiCisgICAgICBo
YW5kbGVYODZPcCgiYW5kbCIsIDppbnQpCisgICAgd2hlbiAibHNoaWZ0aSIKKyAgICAgIGhhbmRs
ZVg4NlNoaWZ0KCJzYWxsIiwgOmludCkKKyAgICB3aGVuICJtdWxpIgorICAgICAgaWYgb3BlcmFu
ZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgJGFz
bS5wdXRzICJpbXVsbCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQsIDppbnQpfSIKKyAgICAgIGVs
c2UKKyAgICAgICAgIyBGSVhNRTogY291bGQgZG8gc29tZSBwZWVwaG9sZSBpbiBjYXNlIHRoZSBs
ZWZ0IG9wZXJhbmQgaXMgaW1tZWRpYXRlIGFuZCBpdCdzCisgICAgICAgICMgYSBwb3dlciBvZiB0
d28uCisgICAgICAgIGhhbmRsZVg4Nk9wKCJpbXVsbCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3
aGVuICJuZWdpIgorICAgICAgJGFzbS5wdXRzICJuZWdsICN7eDg2T3BlcmFuZHMoOmludCl9Igor
ICAgIHdoZW4gIm5vdGkiCisgICAgICAkYXNtLnB1dHMgIm5vdGwgI3t4ODZPcGVyYW5kcyg6aW50
KX0iCisgICAgd2hlbiAib3JpIiwgIm9ycCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJvcmwiLCA6aW50
KQorICAgIHdoZW4gInJzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2FybCIsIDppbnQp
CisgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2hybCIsIDppbnQp
CisgICAgd2hlbiAic3ViaSIsICJzdWJwIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFu
ZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1dHMgIm5lZ2wgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgJGFzbS5wdXRzICJhZGRsICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIGhhbmRsZVg4Nk9wKCJzdWJsIiwgOmludCkKKyAg
ICAgIGVuZAorICAgIHdoZW4gInhvcmkiLCAieG9ycCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJ4b3Js
IiwgOmludCkKKyAgICB3aGVuICJsb2FkaSIsICJzdG9yZWkiLCAibG9hZHAiLCAic3RvcmVwIgor
ICAgICAgJGFzbS5wdXRzICJtb3ZsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgIHdo
ZW4gImxvYWRiIgorICAgICAgJGFzbS5wdXRzICJtb3Z6YmwgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAi
bG9hZGgiCisgICAgICAkYXNtLnB1dHMgIm1vdnp3bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmhhbGYpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJzdG9y
ZWIiCisgICAgICAkYXNtLnB1dHMgIm1vdmIgI3t4ODZPcGVyYW5kcyg6Ynl0ZSwgOmJ5dGUpfSIK
KyAgICB3aGVuICJsb2FkZCIsICJtb3ZlZCIsICJzdG9yZWQiCisgICAgICAkYXNtLnB1dHMgIm1v
dnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImFkZGQiCisg
ICAgICAkYXNtLnB1dHMgImFkZHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9Igor
ICAgIHdoZW4gImRpdmQiCisgICAgICAkYXNtLnB1dHMgImRpdnNkICN7eDg2T3BlcmFuZHMoOmRv
dWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInN1YmQiCisgICAgICAkYXNtLnB1dHMgInN1YnNk
ICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gIm11bGQiCisgICAg
ICAkYXNtLnB1dHMgIm11bHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAg
IHdoZW4gInNxcnRkIgorICAgICAgJGFzbS5wdXRzICJzcXJ0c2QgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAg
ICB3aGVuICJjaTJkIgorICAgICAgJGFzbS5wdXRzICJjdnRzaTJzZCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAg
IHdoZW4gImJkZXEiCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZGVx
IikKKyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5w
dXRzICJqcCAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkuYXNt
TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3Jp
Z2luLCBvcGVyYW5kc1syXSkuYXNtTGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4
NiIpCisgICAgd2hlbiAiYmRuZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpuZSIs
IDpub3JtYWwpCisgICAgd2hlbiAiYmRndCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgi
amEiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJy
YW5jaCgiamFlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0IgorICAgICAgaGFuZGxlWDg2RG91
YmxlQnJhbmNoKCJqYSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHRlcSIKKyAgICAgIGhhbmRs
ZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRlcXVuIgorICAg
ICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRuZXF1
biIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4iKQorICAg
ICAgaXNFcXVhbCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgICRhc20ucHV0
cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJqcCAje0xhYmVsUmVm
ZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkuYXNtTGFiZWx9IgorICAgICAgJGFz
bS5wdXRzICJqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc0VxdWFsKS5hc21M
YWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICAgICRhc20ucHV0cyAi
am1wICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgaXNFcXVhbC5sb3dlcigiWDg2IikK
KyAgICB3aGVuICJiZGd0dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOnJl
dmVyc2UpCisgICAgd2hlbiAiYmRndGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2go
ImpiZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHR1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJs
ZUJyYW5jaCgiamIiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJ0ZDJpIgorICAgICAg
JGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiY21wbCAk
MHg4MDAwMDAwMCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5w
dXRzICJqZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJ0ZDJpIgorICAgICAg
JGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiY2QyaSIKKyAgICAg
ICRhc20ucHV0cyAiY3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0s
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgInRlc3Rs
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgImplICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9Igor
ICAgICAgJGFzbS5wdXRzICJjdnRzaTJzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9
LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAianAgI3tvcGVyYW5kc1syXS5h
c21MYWJlbH0iCisgICAgICAkYXNtLnB1dHMgImpuZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIK
KyAgICB3aGVuICJtb3ZkeiIKKyAgICAgICRhc20ucHV0cyAieG9ycGQgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIK
KyAgICB3aGVuICJwb3AiCisgICAgICAkYXNtLnB1dHMgInBvcCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgIHdoZW4gInB1c2giCisgICAgICAkYXNtLnB1dHMgInB1c2ggI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwg
Inp4aTJwIgorICAgICAgaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdIGFu
ZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAieG9ybCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMF0gIT0gb3BlcmFuZHNbMV0KKyAgICAgICAg
JGFzbS5wdXRzICJtb3ZsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgZW5kCisg
ICAgd2hlbiAibm9wIgorICAgICAgJGFzbS5wdXRzICJub3AiCisgICAgd2hlbiAiYmllcSIsICJi
cGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDppbnQpCisgICAgd2hlbiAiYmlu
ZXEiLCAiYnBuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDppbnQpCisgICAg
d2hlbiAiYmlhIiwgImJwYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6aW50KQor
ICAgIHdoZW4gImJpYWVxIiwgImJwYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUi
LCA6aW50KQorICAgIHdoZW4gImJpYiIsICJicGIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpiIiwgOmludCkKKyAgICB3aGVuICJiaWJlcSIsICJicGJlcSIKKyAgICAgIGhhbmRsZVg4Nklu
dEJyYW5jaCgiamJlIiwgOmludCkKKyAgICB3aGVuICJiaWd0IiwgImJwZ3QiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImpnIiwgOmludCkKKyAgICB3aGVuICJiaWd0ZXEiLCAiYnBndGVxIgor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6aW50KQorICAgIHdoZW4gImJpbHQiLCAi
YnBsdCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6aW50KQorICAgIHdoZW4gImJp
bHRlcSIsICJicGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsZSIsIDppbnQpCisg
ICAgd2hlbiAiYmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6Ynl0ZSkKKyAg
ICB3aGVuICJiYm5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmJ5dGUpCisg
ICAgd2hlbiAiYmJhIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDpieXRlKQorICAg
IHdoZW4gImJiYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6Ynl0ZSkKKyAg
ICB3aGVuICJiYmIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmJ5dGUpCisgICAg
d2hlbiAiYmJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRlKQorICAg
IHdoZW4gImJiZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmJ5dGUpCisgICAg
d2hlbiAiYmJndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6Ynl0ZSkKKyAg
ICB3aGVuICJiYmx0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDpieXRlKQorICAg
IHdoZW4gImJibHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6Ynl0ZSkK
KyAgICB3aGVuICJidGlvIiwgImJ0cG8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIs
IDppbnQpCisgICAgd2hlbiAiYnRpcyIsICJidHBzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVz
dCgianMiLCA6aW50KQorICAgIHdoZW4gImJ0aXoiLCAiYnRweiIKKyAgICAgIGhhbmRsZVg4NkJy
YW5jaFRlc3QoImp6IiwgOmludCkKKyAgICB3aGVuICJidGlueiIsICJidHBueiIKKyAgICAgIGhh
bmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDppbnQpCisgICAgd2hlbiAiYnRibyIKKyAgICAgIGhh
bmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRicyIKKyAgICAgIGhh
bmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRieiIKKyAgICAgIGhh
bmRsZVg4NkJyYW5jaFRlc3QoImp6IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRibnoiCisgICAgICBo
YW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJqbXAiCisgICAgICAk
YXNtLnB1dHMgImptcCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3
aGVuICJiYWRkaW8iLCAiYmFkZHBvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAi
am8iLCA6aW50KQorICAgIHdoZW4gImJhZGRpcyIsICJiYWRkcHMiCisgICAgICBoYW5kbGVYODZP
cEJyYW5jaCgiYWRkbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYmFkZGl6IiwgImJhZGRweiIK
KyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJi
YWRkaW56IiwgImJhZGRwbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbnoi
LCA6aW50KQorICAgIHdoZW4gImJzdWJpbyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam8i
LCA6aW50KQorICAgIHdoZW4gImJzdWJpcyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianMi
LCA6aW50KQorICAgIHdoZW4gImJzdWJpeiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianoi
LCA6aW50KQorICAgIHdoZW4gImJzdWJpbnoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpu
eiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImlt
dWxsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJibXVsaXMiCisgICAgICBoYW5kbGVYODZPcEJy
YW5jaCgiaW11bGwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJtdWxpeiIKKyAgICAgIGhhbmRs
ZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlueiIKKyAg
ICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJv
cmlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqbyIsIDppbnQpCisgICAgd2hl
biAiYm9yaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpzIiwgOmludCkKKyAg
ICB3aGVuICJib3JpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianoiLCA6aW50
KQorICAgIHdoZW4gImJvcmlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAiam56
IiwgOmludCkKKyAgICB3aGVuICJicmVhayIKKyAgICAgICRhc20ucHV0cyAiaW50ICQzIgorICAg
IHdoZW4gImNhbGwiCisgICAgICAkYXNtLnB1dHMgImNhbGwgI3tvcGVyYW5kc1swXS54ODZDYWxs
T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicmV0IgorICAgICAgJGFzbS5wdXRzICJyZXQiCisg
ICAgd2hlbiAiY2llcSIsICJjcGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
ZSIsIDppbnQpCisgICAgd2hlbiAiY2luZXEiLCAiY3BuZXEiCisgICAgICBoYW5kbGVYODZJbnRD
b21wYXJlU2V0KCJzZXRuZSIsIDppbnQpCisgICAgd2hlbiAiY2lhIiwgImNwYSIKKyAgICAgIGhh
bmRsZVg4NkludENvbXBhcmVTZXQoInNldGEiLCA6aW50KQorICAgIHdoZW4gImNpYWVxIiwgImNw
YWVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YWUiLCA6aW50KQorICAgIHdo
ZW4gImNpYiIsICJjcGIiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiIiwgOmlu
dCkKKyAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVT
ZXQoInNldGJlIiwgOmludCkKKyAgICB3aGVuICJjaWd0IiwgImNwZ3QiCisgICAgICBoYW5kbGVY
ODZJbnRDb21wYXJlU2V0KCJzZXRnIiwgOmludCkKKyAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVx
IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0Z2UiLCA6aW50KQorICAgIHdoZW4g
ImNpbHQiLCAiY3BsdCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGwiLCA6aW50
KQorICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJl
U2V0KCJzZXRsZSIsIDppbnQpCisgICAgd2hlbiAidGlvIgorICAgICAgaGFuZGxlWDg2U2V0VGVz
dCgic2V0byIsIDppbnQpCisgICAgd2hlbiAidGlzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgi
c2V0cyIsIDppbnQpCisgICAgd2hlbiAidGl6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0
eiIsIDppbnQpCisgICAgd2hlbiAidGlueiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56
IiwgOmludCkKKyAgICB3aGVuICJ0Ym8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwg
OmJ5dGUpCisgICAgd2hlbiAidGJzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpi
eXRlKQorICAgIHdoZW4gInRieiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6Ynl0
ZSkKKyAgICB3aGVuICJ0Ym56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6Ynl0
ZSkKKyAgICB3aGVuICJwZWVrIgorICAgICAgJGFzbS5wdXRzICJtb3ZsICN7b3BlcmFuZHNbMF0u
dmFsdWUgKiA0fSglZXNwKSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3
aGVuICJwb2tlIgorICAgICAgJGFzbS5wdXRzICJtb3ZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6aW50KX0sICN7b3BlcmFuZHNbMV0udmFsdWUgKiA0fSglZXNwKSIKKyAgICB3aGVuICJjZHFp
IgorICAgICAgJGFzbS5wdXRzICJjZHEiCisgICAgd2hlbiAiaWRpdmkiCisgICAgICAkYXNtLnB1
dHMgImlkaXZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiZmlp
MmQiCisgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQp
fSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAi
bW92ZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20u
cHV0cyAicHNsbHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAicG9yICV4bW03LCAje29w
ZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImZkMmlpIgorICAgICAg
JGFzbS5wdXRzICJtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIm1vdnNkICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJw
c3JscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJtb3ZzZCAleG1tNywgI3tvcGVyYW5k
c1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiQmFkIG9wY29k
ZTogI3tvcGNvZGV9IgorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29kZVNwZWNpYWxpemF0
aW9uS2luZF9oCisjZGVmaW5lIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCituYW1lc3BhY2Ug
SlNDIHsKKworZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVG
b3JDb25zdHJ1Y3QgfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDEwNjE1MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAjZGVmaW5lIENvbW1vblNsb3dQYXRoc19oCiAKICNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAi
RXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKIApAQCAtNDEsNiArNDIs
MzggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMgewogCitB
TFdBWVNfSU5MSU5FIEV4ZWNTdGF0ZSogYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFJl
Z2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7
CisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7Cisg
ICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOworICAgIENvZGVCbG9jayogbmV3
Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9y
KGtpbmQpOworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CisKKyAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNw
YWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQg
YnkgdGhlIGNhbGxlci4KKyAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhleGVjLT5yZWdpc3Rl
cnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2NrLT5tX251
bUNhbGxlZVJlZ2lzdGVycykpCisgICAgICAgIHJldHVybiAwOworCisgICAgQVNTRVJUKGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwor
CisgICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1lIGFuZCBhcmd1bWVu
dHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5lZC4KKyAgICBz
aXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzOworICAgIFJlZ2lzdGVyKiBzcmMgPSBleGVjLT5yZWdpc3RlcnMoKTsK
KyAgICBSZWdpc3RlciogZHN0ID0gZXhlYy0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKKworICAgIGlu
dCBpOworICAgIGludCBlbmQgPSAtRXhlY1N0YXRlOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMpOworICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQorICAgICAgICBk
c3RbaV0gPSBzcmNbaV07CisKKyAgICBlbmQgLT0gZGVsdGE7CisgICAgZm9yICggOyBpID49IGVu
ZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOworCisgICAgRXhlY1N0YXRl
KiBuZXdFeGVjID0gRXhlY1N0YXRlOjpjcmVhdGUoZHN0KTsKKyAgICBBU1NFUlQoKHZvaWQqKW5l
d0V4ZWMgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7CisgICAgcmV0dXJuIG5ld0V4ZWM7Cit9CisK
IEFMV0FZU19JTkxJTkUgYm9vbCBvcEluc3RhbmNlT2ZTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSB2YWx1ZSwgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3RvKQogewogICAgIEFTU0VS
VCghdmFsdWUuaXNDZWxsKCkgfHwgIWJhc2VWYWwuaXNDZWxsKCkgfHwgIXByb3RvLmlzQ2VsbCgp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAko
cmV2aXNpb24gMTA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCeXRl
Y29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0Ry
aXZlci5oIgorI2luY2x1ZGUgIkV4ZWN1dGlvbkhhcm5lc3MuaCIKICNpbmNsdWRlICJKSVQuaCIK
ICNpbmNsdWRlICJKSVREcml2ZXIuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKQEAgLTg0LDcgKzg1
LDcgQEAgSW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6OmludHJpbnNpYygpIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KIHN0YXRpYyB2b2lkIGpldHRpc29uQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgT3duUHRyPFQ+JiBjb2RlQmxvY2spCiB7Ci0gICAgQVNTRVJUKGNvZGVCbG9j
ay0+Z2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklU
Q29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKSk7CiAgICAgQVNT
RVJUKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgT3duUHRyPFQ+IGNvZGVCbG9ja1Rv
SmV0dGlzb24gPSBjb2RlQmxvY2sucmVsZWFzZSgpOwogICAgIGNvZGVCbG9jayA9IHN0YXRpY19w
b2ludGVyX2Nhc3Q8VD4oY29kZUJsb2NrVG9KZXR0aXNvbi0+cmVsZWFzZUFsdGVybmF0aXZlKCkp
OwpAQCAtMTY3LDkgKzE2OCwzMCBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVP
cHRpbWl6CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEV2YWxFeGVjdXRhYmxlOjpqaXRD
b21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGpp
dENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRD
b2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VE
KHJlc3VsdCwgcmVzdWx0KTsKK30KKworaW5saW5lIGNvbnN0IGNoYXIqIHNhbXBsaW5nRGVzY3Jp
cHRpb24oSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworICAgIHN3aXRjaCAoaml0VHlwZSkg
eworICAgIGNhc2UgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAgICAgcmV0dXJuICJJ
bnRlcnByZXRlciBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBjYXNlIEpJVENvZGU6OkJhc2Vs
aW5lSklUOgorICAgICAgICByZXR1cm4gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiOwor
ICAgIGNhc2UgSklUQ29kZTo6REZHSklUOgorICAgICAgICByZXR1cm4gIkRGRyBDb21waWxhdGlv
biAoVE9UQUwpIjsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6
OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNo
YWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxp
bmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAg
ICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5
cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7
CkBAIC0yMTAsNyArMjMyLDcgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50
ZXJuYQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlSWZBcHBy
b3ByaWF0ZSgqZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBq
aXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVjdXRpb24oKmdsb2JhbERhdGEsIG1fZXZh
bENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAw
OwogI2VuZGlmCiAKQEAgLTI5NSw5ICszMTcsMTUgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRh
YmxlOjpjb21waWxlT3B0aQogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBQcm9ncmFtRXhl
Y3V0YWJsZTo6aml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9v
bCByZXN1bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX3Byb2dyYW1D
b2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEpTT2JqZWN0KiBQcm9ncmFt
RXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5v
ZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJ
VCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRP
VEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3Jp
cHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJB
TShqaXRUeXBlKTsKQEAgLTMzNiw3ICszNjQsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFi
bGU6OmNvbXBpbGVJbnRlCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENv
bXBpbGVJZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0
Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xv
YmFsRGF0YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkK
ICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNDEyLDcgKzQ0MCw3IEBAIEZ1bmN0aW9u
Q29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmIKICAgICB3aGlsZSAocmVzdWx0LT5hbHRl
cm5hdGl2ZSgpKQogICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9j
ayo+KHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgQVNT
RVJUKHJlc3VsdC0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBB
U1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MzgsNiArNDY2LDE4IEBAIEpTT2JqZWN0KiBGdW5j
dGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVPcHQKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQg
RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJp
YXRlKGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9q
aXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0
b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2
b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25J
ZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENv
ZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5
bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQpOworfQorCiBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRh
YmxlOjpjb2RlQmxvY2tXaXRoQnl0ZWNvZGVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQogewogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9j
a0ZvcihraW5kKTsKQEAgLTQ4Miw3ICs1MjIsNyBAQCBQYXNzT3duUHRyPEZ1bmN0aW9uQ29kZUJs
b2NrPiBGdW5jdGlvbkV4CiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVG
b3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFp
bk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBz
YW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5l
IENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAg
U2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBl
KSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAt
NTA0LDcgKzU0NCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IK
ICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDYWxsLT5zaGFyZWRTeW1ib2xUYWJs
ZSgpOwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBw
cm9wcmlhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29k
ZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwg
aml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYy0+Z2xv
YmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29k
ZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSwgQ29kZUZvckNh
bGwpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC01MjQsNyArNTY0LDcgQEAgSlNP
YmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogCiBKU09iamVjdCogRnVuY3Rp
b25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVj
LCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlw
ZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENv
ZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBD
b21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24o
c2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAg
ICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtNTQ2LDcgKzU4Niw3IEBAIEpTT2JqZWN0KiBG
dW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2Rl
QmxvY2tGb3JDb25zdHJ1Y3QtPnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklU
KQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9iYWxE
YXRhKCksIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1f
aml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBl
KSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxEYXRh
KCksIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0
Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBD
b2RlRm9yQ29uc3RydWN0KSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTA2MTUw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEV4ZWN1dGFibGVfaAogCiAjaW5jbHVk
ZSAiQ2FsbERhdGEuaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5j
bHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAi
Tm9kZXMuaCIKQEAgLTM5LDEyICs0MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBE
ZWJ1Z2dlcjsKICAgICBjbGFzcyBFdmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIEZ1bmN0aW9uQ29k
ZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9n
cmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwogCiAgICAgc3RydWN0IEV4
Y2VwdGlvbkluZm87CiAgICAgCi0gICAgZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29k
ZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKICAgICBlbnVtIENvbXBpbGF0aW9uS2luZCB7
IEZpcnN0Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21waWxhdGlvbiB9OwogCiAgICAgaW5saW5l
IGJvb2wgaXNDYWxsKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAgLTMxOSw2ICszMjAs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUg
OiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1
dGFibGUgQmFzZTsKIApAQCAtMzM4LDYgKzM0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZShK
U0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYpOwog
I2VuZGlmCiAKICAgICAgICAgRXZhbENvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAt
Mzg0LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBQcm9n
cmFtRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVk
ZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC00MTEsNiArNDE1LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25P
cHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNH
bG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBQcm9ncmFtQ29kZUJsb2NrJiBnZW5lcmF0
ZWRCeXRlY29kZSgpCkBAIC00NTMsNiArNDU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUg
QmFzZTsKIApAQCAtNTA4LDYgKzUxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNp
ZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNhbGwo
SlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNhbGwoSlNHbG9iYWxE
YXRhJik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ2FsbCgpIGNvbnN0
CkBAIC01MzUsNiArNTQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJM
RShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KEpT
R2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoSlNHbG9i
YWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ29uc3RydWN0
KCkgY29uc3QKQEAgLTU4Miw2ICs1OTAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICAgICAgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdENvbXBpbGVG
b3IoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAg
ICAgICAgICAgICAgaml0Q29tcGlsZUZvckNhbGwoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29k
ZUZvckNvbnN0cnVjdCk7CisgICAgICAgICAgICBqaXRDb21waWxlRm9yQ29uc3RydWN0KGdsb2Jh
bERhdGEpOworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNHZW5l
cmF0ZWRGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIEV4ZWN1dGlvbkhhcm5lc3NfaAorI2RlZmluZSBFeGVj
dXRpb25IYXJuZXNzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxF
KEpJVCkKKworI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2lu
dHMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5
cGU+CitpbmxpbmUgYm9vbCBwcmVwYXJlRm9yRXhlY3V0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUs
IEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYg
KEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9m
ZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RW50cnlw
b2ludChnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUpOworICAgICAgICBjb2Rl
QmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorICAgIHJl
dHVybiBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENv
ZGUsIGppdFR5cGUpOworfQorCitpbmxpbmUgYm9vbCBwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBj
b2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29k
ZVdpdGhBcml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBKSVRDb2Rl
OjpKSVRUeXBlIGppdFR5cGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7
CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAg
ICAgICBMTEludDo6Z2V0RnVuY3Rpb25FbnRyeXBvaW50KGdsb2JhbERhdGEsIGtpbmQsIGppdENv
ZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29k
ZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShraW5kKTsKKyNlbmRpZiAvLyBFTkFCTEUo
TExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFs
RGF0YSwgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIHN5bWJvbFRh
YmxlLCBqaXRUeXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFC
TEUoSklUKQorCisjZW5kaWYgLy8gRXhlY3V0aW9uSGFybmVzc19oCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMDYxNTAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93
bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBhZG9wdEFy
cmF5UHRyKG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bcmVnaXN0ZXJBcnJheVNpemVdKTsKICAg
ICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMgPSByZWdpc3RlckFycmF5Lmdl
dCgpICsgcmVnaXN0ZXJPZmZzZXQ7Ci0KKyAgICAgICAgCiAgICAgICAgIC8vIENvcHkgYWxsIGFy
Z3VtZW50cyB0aGF0IGNhbiBiZSBjYXB0dXJlZCBieSBuYW1lIG9yIGJ5IHRoZSBhcmd1bWVudHMg
b2JqZWN0LgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbnVtQ2FwdHVyZWRBcmdzOyAr
K2kpIHsKICAgICAgICAgICAgIGludCBpbmRleCA9IENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQo
aSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lv
biAxMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgSlNBcnJheTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBzdHJ1
Y3QgU3BhcnNlQXJyYXlFbnRyeSA6IHB1YmxpYyBXcml0ZUJhcnJpZXI8VW5rbm93bj4gewogICAg
ICAgICB0eXBlZGVmIFdyaXRlQmFycmllcjxVbmtub3duPiBCYXNlOwpAQCAtMTIyLDYgKzEyMyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBKU0FycmF5IDogcHVibGlj
IEpTTm9uRmluYWxPYmplY3QgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgV2Fsa2VyOwogCiAgICAgcHJvdGVjdGVkOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDEwNjE1
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNiw5ICszNiwxMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0ds
b2JhbE9iamVjdDsKLSAgICBjbGFzcyBTdHJ1Y3R1cmU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9w
ZXJ0eU5hbWVBcnJheTsKKyAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBlbnVtIEVudW1lcmF0
aW9uTW9kZSB7CiAgICAgICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsCkBAIC0xNjQsNiAr
MTY1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQ
cm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBjb25zdCBDbGFzc0lu
Zm8qIG1fY2xhc3NJbmZvOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVj
dHVyZTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uaAkocmV2aXNpb24gMTA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEpTQWN0aXZh
dGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBTb3VyY2VD
b2RlOwogICAgIG5hbWVzcGFjZSBERkcgewpAQCAtMTQwLDYgKzE0MSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNp
dG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hv
c3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFy
Z3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJ
KHJldmlzaW9uIDEwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsOCBAQCBKU0dsb2JhbERh
dGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgLCBrZXl3b3JkcyhhZG9wdFB0cihu
ZXcgS2V5d29yZHModGhpcykpKQogICAgICwgaW50ZXJwcmV0ZXIoMCkKICAgICAsIGhlYXAodGhp
cywgaGVhcFNpemUpCisgICAgLCBqc0FycmF5Q2xhc3NJbmZvKCZKU0FycmF5OjpzX2luZm8pCisg
ICAgLCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvKCZKU0ZpbmFsT2JqZWN0OjpzX2luZm8pCiAjaWYg
RU5BQkxFKERGR19KSVQpCiAgICAgLCBzaXplT2ZMYXN0U2NyYXRjaEJ1ZmZlcigwKQogI2VuZGlm
CkBAIC0yMTYsNyArMjE4LDcgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0
YVR5cAogICAgIGppdFN0dWJzID0gYWRvcHRQdHIobmV3IEpJVFRodW5rcyh0aGlzKSk7CiAjZW5k
aWYKIAotICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKHRoaXMtPmNhblVzZUpJVCgpKTsKKyAg
ICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSgmbGxpbnREYXRhLCB0aGlzLT5jYW5Vc2VKSVQoKSk7
CiAKICAgICBoZWFwLm5vdGlmeUlzU2FmZVRvQ29sbGVjdCgpOwogfQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDEwNjE1MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCwxNSArMzAsMTYgQEAKICNkZWZpbmUgSlNHbG9iYWxEYXRhX2gKIAogI2lu
Y2x1ZGUgIkNhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJJbnRyaW5z
aWMuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2VDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFi
bGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCi0jaW5jbHVkZSAiU3Ryb25nLmgiCisj
aW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJK
U1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTnVtZXJpY1N0cmlu
Z3MuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKICNp
bmNsdWRlICJUZXJtaW5hdG9yLmgiCiAjaW5jbHVkZSAiVGltZW91dENoZWNrZXIuaCIKICNpbmNs
dWRlICJXZWFrUmFuZG9tLmgiCkBAIC02NSw2ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEtl
eXdvcmRzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRp
dmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFBhcnNlckFyZW5hOwogICAgIGNsYXNzIFJlZ0V4cENh
Y2hlOwpAQCAtMjQxLDYgKzI0MywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSGVhcCBo
ZWFwOwogCiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uOworCisgICAgICAgIGNvbnN0IENsYXNz
SW5mbyogY29uc3QganNBcnJheUNsYXNzSW5mbzsKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBj
b25zdCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOworCisgICAgICAgIExMSW50OjpEYXRhIGxsaW50
RGF0YTsKKwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIgZXhjZXB0
aW9uTG9jYXRpb247CiAgICAgICAgIEpTVmFsdWUgaG9zdENhbGxSZXR1cm5WYWx1ZTsKQEAgLTM0
Niw2ICszNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICN1bmRlZiByZWdpc3RlclR5cGVkQXJyYXlG
dW5jdGlvbgogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlw
ZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbERh
dGEqJiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAgICAgIHZvaWQgY3JlYXRlTmF0aXZl
VGh1bmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAkocmV2aXNpb24gMTA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBH
ZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgR2xvYmFsQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogICAg
IGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CkBA
IC0zMzUsNiArMzM2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBpbnQgY291bnQp
OwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBGb2xkIHJlc2V0IGludG8gaW5pdC4K
ICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUp
OwogICAgICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTA2MTUwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAt
NDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAg
ICAgY2xhc3MgSGFzaEVudHJ5OwogICAgIGNsYXNzIEludGVybmFsRnVuY3Rpb247CisgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgIGNs
YXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKQEAg
LTI2OSw2ICsyNzAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNPYmplY3QoSlNHbG9i
YWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpOwogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAgICAgCiAgICAgICAgIC8vIE5vYm9keSBzaG91bGQgZXZlciBhc2sgYW55IG9mIHRoZXNl
IHF1ZXN0aW9ucyBvbiBzb21ldGhpbmcgYWxyZWFkeSBrbm93biB0byBiZSBhIEpTT2JqZWN0Lgog
ICAgICAgICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyOwogICAgICAgICB1c2luZyBK
U0NlbGw6OmlzR2V0dGVyU2V0dGVyOwpAQCAtMzgxLDYgKzM4NCw4IEBAIENPTVBJTEVfQVNTRVJU
KChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShK
U0NlbGwqKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgICAg
ICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQogICAg
ICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAxMDYxNTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJZGVudGlm
aWVyOwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIAogICAgIGNsYXNzIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IgOiBwdWJsaWMgSlNDZWxsIHsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTk2LDYgKzk3LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlE
YXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9jYWNoZWRTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDEwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAK
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNTdHJpbmc7CisgICAgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoSlNHbG9iYWxE
YXRhKik7CiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKik7CkBAIC0yNDAs
NiArMjQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAg
ICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2U4KExDaGFyKikgY29uc3Q7CiAgICAgICAgIHZvaWQg
cmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hhciopIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNpb24gMTA2MTUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw2ICszNCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgPSAxOyAvLyBXZWJDb3JlIHVzZXMgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCB0byBtYWtl
IGRvY3VtZW50LmFsbCB1bmRldGVjdGFibGUuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIElt
cGxlbWVudHNIYXNJbnN0YW5jZSA9IDEgPDwgMTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
T3ZlcnJpZGVzSGFzSW5zdGFuY2UgPSAxIDw8IDI7CkBAIC04Nyw2ICs4OSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBpc1NldE9uRmxh
Z3MxKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPD0gKDEgPDwgNykpOyByZXR1
cm4gbV9mbGFncyAmIGZsYWc7IH0KICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MyKHVuc2lnbmVk
IGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1cm4gbV9mbGFnczIg
JiAoZmxhZyA+PiA4KTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhbHVlLmNwcAkocmV2aXNpb24gMTA2MTUwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiwxMCArMTE2LDkgQEAgSlNP
YmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoRQogICAgIHJldHVybiBKU05vdEFu
T2JqZWN0OjpjcmVhdGUoZXhlYyk7CiB9CiAKLSNpZm5kZWYgTkRFQlVHCiBjaGFyKiBKU1ZhbHVl
OjpkZXNjcmlwdGlvbigpCiB7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0gNjQ7Cisg
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0gMTI4OwogICAgIHN0YXRpYyBjaGFyIGRlc2Ny
aXB0aW9uW3NpemVdOwogCiAgICAgaWYgKCEqdGhpcykKQEAgLTEyOCwxNCArMTI3LDE0IEBAIGNo
YXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKICAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24s
IHNpemUsICJJbnQzMjogJWQiLCBhc0ludDMyKCkpOwogICAgIGVsc2UgaWYgKGlzRG91YmxlKCkp
IHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6
ZSwgIkRvdWJsZTogJWxmLCAlbHgiLCBhc0RvdWJsZSgpLCByZWludGVycHJldERvdWJsZVRvSW50
cHRyKGFzRG91YmxlKCkpKTsKKyAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJE
b3VibGU6ICVseCwgJWxmIiwgcmVpbnRlcnByZXREb3VibGVUb0ludHB0cihhc0RvdWJsZSgpKSwg
YXNEb3VibGUoKSk7CiAjZWxzZQogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBkb3VibGUg
YXNEb3VibGU7CiAgICAgICAgICAgICB1aW50MzJfdCBhc1R3b0ludDMyc1syXTsKICAgICAgICAg
fSB1OwogICAgICAgICB1LmFzRG91YmxlID0gYXNEb3VibGUoKTsKLSAgICAgICAgc25wcmludGYo
ZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVsZiwgJTA4eDolMDh4IiwgYXNEb3VibGUoKSwg
dS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSk7CisgICAgICAgIHNucHJpbnRmKGRl
c2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlMDh4OiUwOHgsICVsZiIsIHUuYXNUd29JbnQzMnNb
MV0sIHUuYXNUd29JbnQzMnNbMF0sIGFzRG91YmxlKCkpOwogI2VuZGlmCiAgICAgfSBlbHNlIGlm
IChpc0NlbGwoKSkKICAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJDZWxsOiAl
cCIsIGFzQ2VsbCgpKTsKQEAgLTE1Miw3ICsxNTEsNiBAQCBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlw
dGlvbigpCiAKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9Ci0jZW5kaWYKIAogLy8gVGhpcyBp
biB0aGUgVG9JbnQzMiBvcGVyYXRpb24gaXMgZGVmaW5lZCBpbiBzZWN0aW9uIDkuNSBvZiB0aGUg
RUNNQS0yNjIgc3BlYy4KIC8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBpZGVudGljYWwg
dG8gVG9VSW50MzIgb3RoZXIgdGhhbiB0byBpbnRlcnByZXRhdGlvbgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2aXNpb24gMTA2MTUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIs
OSArMjMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTQ2VsbCogYXNDZWxsKCkgY29u
c3Q7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZENhbGxlZSgpOwogCi0j
aWZuZGVmIE5ERUJVRwogICAgICAgICBjaGFyKiBkZXNjcmlwdGlvbigpOwotI2VuZGlmCiAKICAg
ICBwcml2YXRlOgogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gSlNWYWx1ZShXcml0ZUJhcnJp
ZXJCYXNlPFQ+KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFi
bGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAg
KzM4LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogCiAgICAgY2xhc3MgSlNWYXJpYWJsZU9iamVj
dCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsK
KyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHB1Ymxp
YzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTA2MTUwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDYgKzUyLDEwIEBAIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElu
bGkKIAogdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7CiAKK2ludDMyX3QgZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9ySklUU29vbjsKKwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFm
dGVyV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVy
TG9uZ1dhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXpl
QW55dGltZVNvb247CkBAIC0xMzcsNiArMTQxLDEwIEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMo
KQogICAgIAogICAgIFNFVChtYXhpbXVtSW5saW5pbmdEZXB0aCwgNSk7CiAKKyAgICBTRVQoZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXAsICAgICAtMTAwKTsKKyAgICBTRVQo
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptaW4oKSk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckpJVFNvb24sICAgICAgICAgICAgLTEwMCk7CisKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCwgICAgIC0xMDAwKTsKICAgICBTRVQoZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAsIC01MDAwKTsKICAgICBTRVQo
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKQEAgLTE4NSw2ICsxOTMsOCBAQCB2b2lkIGlu
aXRpYWxpemVPcHRpb25zKCkKICAgICBpZiAoY3B1c1RvVXNlIDwgMSkKICAgICAgICAgY3B1c1Rv
VXNlID0gMTsKICAgICAKKyAgICBjcHVzVG9Vc2UgPSAxOworICAgIAogICAgIFNFVChudW1iZXJP
ZkdDTWFya2VycywgY3B1c1RvVXNlKTsKIAogICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JP
cHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxMDYxNTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEwIEBAIGV4dGVy
biB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHIKIAogZXh0ZXJuIHVuc2lnbmVkIG1h
eGltdW1JbmxpbmluZ0RlcHRoOyAvLyBEZXB0aCBvZiBpbmxpbmUgc3RhY2ssIHNvIDEgPSBubyBp
bmxpbmluZywgMiA9IG9uZSBsZXZlbCwgZXRjLgogCitleHRlcm4gaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBleHRlcm4gaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gMTA2MTUw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xv
YmFsRGF0YTsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU2NvcGVDaGFpbkl0
ZXJhdG9yOwogICAgIGNsYXNzIFNsb3RWaXNpdG9yOwogICAgIApAQCAtOTEsNiArOTIsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJ
bmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuOwogICAgIH07CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMDYx
NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAg
ICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47
CkBAIC0xOTYsNiArMTk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19F
WFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKik7
CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmKTsKICAgICAgICAgU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAxMDYxNTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGNsYXNzIFN0
cnVjdHVyZUNoYWluIDogcHVibGljIEpTQ2VsbCB7CkBAIC03NCw2ICs3NSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgU3RydWN0dXJlQ2hhaW4o
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+ID4g
bV92ZWN0b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0lubGluZUFTTS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSW5saW5lQVNNLmgJKHJldmlz
aW9uIDEwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSW5saW5lQVNNLmgJKHdv
cmtpbmcgY29weSkKQEAgLTY4LDQgKzY4LDExIEBACiAjZGVmaW5lIEhJREVfU1lNQk9MKG5hbWUp
CiAjZW5kaWYKIAorLy8gRklYTUU6IGZpZ3VyZSBvdXQgaG93IHRoaXMgd29ya3Mgb24gYWxsIHRo
ZSBwbGF0Zm9ybXMuIEkga25vdyB0aGF0CisvLyBvbiBMaW51eCwgdGhlIHByZWZlcnJlZCBmb3Jt
IGlzICIuTHN0dWZmIiBhcyBvcHBvc2VkIHRvICJMc3R1ZmYiLgorLy8gRG9uJ3Qga25vdyBhYm91
dCBhbnkgb2YgdGhlIG90aGVycy4KKyNpZiBQTEFURk9STShNQUMpCisjZGVmaW5lIExPQ0FMX0xB
QkVMX1NUUklORyhuYW1lKSAiTCIgI25hbWUKKyNlbmRpZgorCiAjZW5kaWYgLy8gSW5saW5lQVNN
X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEwNjE1
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5
KQpAQCAtOTIwLDYgKzkyMCwxOCBAQAogI2RlZmluZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCisv
KiBPbiBzb21lIG9mIHRoZSBwbGF0Zm9ybXMgd2hlcmUgd2UgaGF2ZSBhIEpJVCwgd2Ugd2FudCB0
byBhbHNvIGhhdmUgdGhlIAorICAgbG93LWxldmVsIGludGVycHJldGVyLiAqLworI2lmICFkZWZp
bmVkKEVOQUJMRV9MTElOVCkgJiYgRU5BQkxFKEpJVCkgJiYgUExBVEZPUk0oTUFDKSAmJiBVU0Uo
SlNWQUxVRTMyXzY0KQorI2RlZmluZSBFTkFCTEVfTExJTlQgMQorI2VuZGlmCisKKy8qIElmIHdl
IGhhdmUgTExJbnQgZW5hYmxlZCBhbmQgdGhlIEpJVCBlbmFibGVkLCB3ZSBhbHNvIGVuYWJsZSBP
U1JpbmcgZnJvbQorICAgTExJbnQgdG8gdGhlIEpJVC4gKi8KKyNpZiAhZGVmaW5lZChFTkFCTEVf
TExJTlRfT1NSX1RPX0pJVCkgJiYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKExMSU5UKQorI2RlZmlu
ZSBFTkFCTEVfTExJTlRfT1NSX1RPX0pJVCAxCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJM
RV9ERkdfSklUKSAmJiBFTkFCTEUoSklUKQogLyogRW5hYmxlIHRoZSBERkcgSklUIG9uIFg4NiBh
bmQgWDg2XzY0LiAgT25seSB0ZXN0ZWQgb24gTWFjIGFuZCBHTlUvTGludXguICovCiAjaWYgKENQ
VShYODYpIHx8IENQVShYODZfNjQpKSAmJiAoUExBVEZPUk0oTUFDKSB8fCBPUyhMSU5VWCkpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJ
KHJldmlzaW9uIDEwNjE1MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxM
aW5rZWRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDggQEAgcHVibGljOgogCiAg
ICAgaXRlcmF0b3IgYmVnaW4oKTsKICAgICBpdGVyYXRvciBlbmQoKTsKKyAgICAKKyAgICBib29s
IGlzRW1wdHkoKSB7IHJldHVybiBiZWdpbigpID09IGVuZCgpOyB9CiAKIHByaXZhdGU6CiAgICAg
UmF3Tm9kZSBtX2hlYWRTZW50aW5lbDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gMTA2MTUwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMs
NyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpCiAvLyBMYW5kaW5n
IHRoZSBmaWxlIG1vdmVzIGluIG9uZSBwYXRjaCwgd2lsbCBmb2xsb3cgb24gd2l0aCBwYXRjaGVz
IHRvIGNoYW5nZSB0aGUgbmFtZXNwYWNlcy4KIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IElkZW50
aWZpZXJDU3RyaW5nVHJhbnNsYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSWRlbnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9y
Owogc3RydWN0IElkZW50aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5zbGF0b3I7CiB9CkBAIC03Miw3
ICs3Myw4IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpTdWJz
dHJpbmdUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZlclRyYW5z
bGF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7Ci0KKyAgICBmcmllbmQg
Y2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiBwcml2YXRlOgogICAgIGVu
dW0gQnVmZmVyT3duZXJzaGlwIHsKICAgICAgICAgQnVmZmVySW50ZXJuYWwsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMDYxNTApCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGlu
Y2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3JpcHRDb3JlLgorICAgICAgICAKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8gYmVoYXZpb3IgY2hhbmdlZC4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAxLTI3ICBLZW4gQnVjaGFuYW4gIDxrZW5yYkBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggaW4gdXBkYXRlRmlyc3RMZXR0ZXIoKSBmcm9tIHVu
bmVjZXNzYXJ5IGFub255bW91cyBibG9jawpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDEwNjE1MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC03NCw2ICs3NCw3IEBAIFNFVChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L3BhcnNlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZSIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDYxNTAp
CisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1
IEBACisyMDEyLTAxLTI2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAg
ICAgSlNDIHNob3VsZCBiZSBhIHRyaXBsZS10aWVyIFZNCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
MTAwNzk2OTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ2hhbmdlZCBFRkwncyBidWlsZCBzeXN0ZW0gdG8gaW5jbHVkZSBhIG5ldyBkaXJlY3Rvcnkg
aW4gSmF2YVNjcmlwdENvcmUuCisgICAgICAgIAorICAgICAgICAqIENNYWtlTGlzdHMudHh0Ogor
CiAyMDEyLTAxLTExICBKYWNreSBKaWFuZyAgPHpoYWppYW5nQHJpbS5jb20+CiAKICAgICAgICAg
W0JsYWNrQmVycnldIEFTU0VSVCBmYWlsdXJlIGluIEJhY2tpbmdTdG9yZVByaXZhdGU6OmJsaXRW
aXNpYmxlQ29udGVudHMoKQpJbmRleDogU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDYxNTAp
CisrKyBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00NCw2
ICs0NCw3IEBAIFNFVChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9pbnRlcnBy
ZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIKKyAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcGFyc2VyIgogICAg
ICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9ydW50aW1lIgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MTUwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMjcgIEZpbGlwIFBpemxvICA8ZnBpemxv
QGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1aWxkIHN5c3RlbSB0byBpbmNs
dWRlIGEgbmV3IGRpcmVjdG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4KKworICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dDoKKwogMjAxMi0wMS0yNyAgTWFydGluIFJvYmlu
c29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gW1dLMl0gSW1wbGVt
ZW50IHRoZSBwb2xpY3kgY2xpZW50CkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAxMDYxNTApCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTY4LDEwICs2OCwxMiBAQCBTRVQoRHVt
cFJlbmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElS
fQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9BUEkKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vYXNzZW1ibGVyCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2RlCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2RmZwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9oZWFwCiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyCiAgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2ppdAorICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludAogICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9ydW50aW1lCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0ZvcndhcmRp
bmdIZWFkZXJzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3d0Zgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>124373</attachid>
            <date>2012-01-27 14:43:10 -0800</date>
            <delta_ts>2012-01-27 14:43:10 -0800</delta_ts>
            <desc>LLIntAssembly.h</desc>
            <filename>LLIntAssembly.h</filename>
            <type>text/plain</type>
            <size>220757</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">Ly8gb2ZmbGluZWFzbSBpbnB1dCBoYXNoOiA3YmRjY2QwMTc4MzJhY2MxYWY5OGQ3NDgyMjdmOGQ3
Yzc5NTE4NzhkIGQ4N2FjYjk5Yzc5OWNkMTdiNzhhM2U5MTAwMzdhYzliNzc2NmVjYTkgMThlZWI5
MWI3YTI3NmY5MzYwZDI1YzdlNmU0MTY3MjYxOTQwYmVjZgojaWYgT0ZGTElORV9BU01fWDg2ICYm
IE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEICYmICFPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lO
RyAmJiAhT0ZGTElORV9BU01fQklHX0VORElBTiAmJiAhT0ZGTElORV9BU01fQVJNdjcgJiYgT0ZG
TElORV9BU01fQVNTRVJUX0VOQUJMRUQKI2Vsc2UKI2Vycm9yICJDb25maWd1cmF0aW9uIG1pc21h
dGNoLiIKI2VuZGlmCiNpZiBPRkZMSU5FX0FTTV9YODYgJiYgT0ZGTElORV9BU01fSklUX0VOQUJM
RUQgJiYgIU9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HICYmICFPRkZMSU5FX0FTTV9CSUdf
RU5ESUFOICYmICFPRkZMSU5FX0FTTV9BUk12NyAmJiBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxF
RAphc20gKAoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9iZWdpbikgIlxuIgpISURFX1NZ
TUJPTChsbGludF9iZWdpbikgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X2JlZ2luKSAiOlxuIgov
LyBsaW5lIG51bWJlciAxMzUKIlx0bW92bCAkMCwgMzE0ODcyNTk5OVxuIgovLyBsaW5lIG51bWJl
ciAxMzYKIlx0eG9ybCAlZWF4LCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDEzNwoiXHRjYWxsICol
ZWF4XG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpICJc
biIKSElERV9TWU1CT0wobGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkgIlxuIgpTWU1CT0xfU1RSSU5H
KGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE1MgoiXHRwb3Ag
JWVjeFxuIgovLyBsaW5lIG51bWJlciA0MjEKIlx0bW92bCAlZWN4LCAtMTYoJWVkaSlcbiIKLy8g
bGluZSBudW1iZXIgNDA0CiJcdG1vdmwgLTgoJWVkaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIg
NDI3CiJcdGFkZGwgJDUsIDE0NTIoJWVkeClcbiIKIlx0anMgIiBMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fcHJvbG9ndWVfX2NvbnRpbnVlKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoi
XHRtb3ZsICVlZGksIDAoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwg
NCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxp
bnRfZW50cnlfb3NyKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDQyOQoiXHRtb3ZsICVlZHgsICVlZGlc
biIKLy8gbGluZSBudW1iZXIgNDMwCiJcdHRlc3RsICVlYXgsICVlYXhcbiIKIlx0anogIiBMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fcHJvbG9ndWVfX3JlY292ZXIpICJcbiIKLy8gbGlu
ZSBudW1iZXIgNDMxCiJcdG1vdmwgLTE2KCVlZGkpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDE2
MgoiXHRwdXNoICVlY3hcbiIKLy8gbGluZSBudW1iZXIgNDMzCiJcdGptcCAqJWVheFxuIgpMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fcHJvbG9ndWVfX3JlY292ZXIpICI6XG4iCi8vIGxp
bmUgbnVtYmVyIDQwNAoiXHRtb3ZsIC04KCVlZGkpLCAlZWR4XG4iCkxPQ0FMX0xBQkVMX1NUUklO
Ryhfb2ZmbGluZWFzbV9wcm9sb2d1ZV9fY29udGludWUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDQ0
MQoiXHRtb3ZsIDUyKCVlZHgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDQ0MgoiXHRtb3ZsIDMy
KCVlYXgpLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQovLyBsaW5lIG51bWJlciAxNzAKIlx0
am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2V2YWxfcHJvbG9n
dWUpICJcbiIKSElERV9TWU1CT0wobGxpbnRfZXZhbF9wcm9sb2d1ZSkgIlxuIgpTWU1CT0xfU1RS
SU5HKGxsaW50X2V2YWxfcHJvbG9ndWUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE1MgoiXHRwb3Ag
JWVjeFxuIgovLyBsaW5lIG51bWJlciA0MjEKIlx0bW92bCAlZWN4LCAtMTYoJWVkaSlcbiIKLy8g
bGluZSBudW1iZXIgNDA0CiJcdG1vdmwgLTgoJWVkaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIg
NDI3CiJcdGFkZGwgJDUsIDE0NTIoJWVkeClcbiIKIlx0anMgIiBMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fMF9wcm9sb2d1ZV9fY29udGludWUpICJcbiIKLy8gbGluZSBudW1iZXIgMTk0
CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNp
LCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhs
bGludF9lbnRyeV9vc3IpICJcbiIKLy8gbGluZSBudW1iZXIgNDI5CiJcdG1vdmwgJWVkeCwgJWVk
aVxuIgovLyBsaW5lIG51bWJlciA0MzAKIlx0dGVzdGwgJWVheCwgJWVheFxuIgoiXHRqeiAiIExP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8wX3Byb2xvZ3VlX19yZWNvdmVyKSAiXG4iCi8v
IGxpbmUgbnVtYmVyIDQzMQoiXHRtb3ZsIC0xNiglZWRpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJl
ciAxNjIKIlx0cHVzaCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDQzMwoiXHRqbXAgKiVlYXhcbiIK
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzBfcHJvbG9ndWVfX3JlY292ZXIpICI6XG4i
Ci8vIGxpbmUgbnVtYmVyIDQwNAoiXHRtb3ZsIC04KCVlZGkpLCAlZWR4XG4iCkxPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV8wX3Byb2xvZ3VlX19jb250aW51ZSkgIjpcbiIKLy8gbGluZSBu
dW1iZXIgNDQxCiJcdG1vdmwgNTIoJWVkeCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgNDQyCiJc
dG1vdmwgMzIoJWVheCksICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTY5Ci8vIGxpbmUgbnVtYmVy
IDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpICJcbiIKSElERV9TWU1CT0wobGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfcHJvbG9ndWUpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9wcm9sb2d1ZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTUyCiJcdHBvcCAlZWN4XG4iCi8v
IGxpbmUgbnVtYmVyIDQyMQoiXHRtb3ZsICVlY3gsIC0xNiglZWRpKVxuIgovLyBsaW5lIG51bWJl
ciAzOTIKIlx0bW92bCAtMzIoJWVkaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzkzCiJcdG1v
dmwgNDgoJWVkeCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzk0CiJcdG1vdmwgODgoJWVkeCks
ICVlZHhcbiIKLy8gbGluZSBudW1iZXIgNDI3CiJcdGFkZGwgJDUsIDE0NTIoJWVkeClcbiIKIlx0
anMgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMV9wcm9sb2d1ZV9fY29udGludWUp
ICJcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5l
IG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoi
XHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwp
ICJcbiIKLy8gbGluZSBudW1iZXIgNDI5CiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51
bWJlciA0MzAKIlx0dGVzdGwgJWVheCwgJWVheFxuIgoiXHRqeiAiIExPQ0FMX0xBQkVMX1NUUklO
Ryhfb2ZmbGluZWFzbV8xX3Byb2xvZ3VlX19yZWNvdmVyKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDQz
MQoiXHRtb3ZsIC0xNiglZWRpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAxNjIKIlx0cHVzaCAl
ZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDQzMwoiXHRqbXAgKiVlYXhcbiIKTE9DQUxfTEFCRUxfU1RS
SU5HKF9vZmZsaW5lYXNtXzFfcHJvbG9ndWVfX3JlY292ZXIpICI6XG4iCi8vIGxpbmUgbnVtYmVy
IDM5MgoiXHRtb3ZsIC0zMiglZWRpKSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzOTMKIlx0bW92
bCA0OCglZWR4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzOTQKIlx0bW92bCA4OCglZWR4KSwg
JWVkeFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMV9wcm9sb2d1ZV9fY29udGlu
dWUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDQwOAoiXHRtb3ZsICVlZHgsIC04KCVlZGkpXG4iCi8v
IGxpbmUgbnVtYmVyIDQ0MQoiXHRtb3ZsIDUyKCVlZHgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVy
IDQ0MgoiXHRtb3ZsIDMyKCVlYXgpLCAlZXNpXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGlu
ZWFzbV9mdW5jdGlvbkZvckNhbGxCZWdpbikgIjpcbiIKLy8gbGluZSBudW1iZXIgNDU1CiJcdG1v
dmwgNDAoJWVkeCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgNDU2Ci8vIGxpbmUgbnVtYmVyIDQ1
NwoiXHRjbXBsICQwLCAlZWF4XG4iCiJcdGpnZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGlu
ZWFzbV9mdW5jdGlvbkluaXRpYWxpemF0aW9uX19hc3NlcnRfX29rKSAiXG4iCi8vIGxpbmUgbnVt
YmVyIDEzNQoiXHRtb3ZsICQwLCAzMTQ4NzI1OTk5XG4iCi8vIGxpbmUgbnVtYmVyIDEzNgoiXHR4
b3JsICVlYXgsICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMTM3CiJcdGNhbGwgKiVlYXhcbiIKTE9D
QUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2Z1bmN0aW9uSW5pdGlhbGl6YXRpb25fX2Fzc2Vy
dF9fb2spICI6XG4iCi8vIGxpbmUgbnVtYmVyIDQ1OAoiXHR0ZXN0bCAlZWF4LCAlZWF4XG4iCiJc
dGp6ICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2Z1bmN0aW9uSW5pdGlhbGl6YXRp
b25fX2FyZ3VtZW50UHJvZmlsZURvbmUpICJcbiIKLy8gbGluZSBudW1iZXIgNDU5CiJcdG1vdmwg
NTQwKCVlZHgpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDQ2MAoiXHRpbXVsbCAkMjgsICVlYXgs
ICVlY3hcbiIKLy8gbGluZSBudW1iZXIgNDYxCiJcdG5lZ2wgJWVheFxuIgovLyBsaW5lIG51bWJl
ciA0NjIKIlx0c2FsbCAkMywgJWVheFxuIgovLyBsaW5lIG51bWJlciA0NjMKIlx0YWRkbCAlZWN4
LCAlZWJ4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9mdW5jdGlvbkluaXRpYWxp
emF0aW9uX19hcmd1bWVudFByb2ZpbGVMb29wKSAiOlxuIgovLyBsaW5lIG51bWJlciA0NjUKIlx0
bW92bCAtNDQoJWVkaSwgJWVheCwgMSksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgNDY2CiJcdHN1
YmwgJDI4LCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDQ2NwoiXHRtb3ZsICVlY3gsIDE2KCVlYngp
XG4iCi8vIGxpbmUgbnVtYmVyIDQ2OAoiXHRtb3ZsIC00OCglZWRpLCAlZWF4LCAxKSwgJWVjeFxu
IgovLyBsaW5lIG51bWJlciA0NjkKIlx0bW92bCAlZWN4LCAxMiglZWJ4KVxuIgovLyBsaW5lIG51
bWJlciA0NzAKIlx0YWRkbCAkOCwgJWVheFxuIgoiXHRqbnogIiBMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fZnVuY3Rpb25Jbml0aWFsaXphdGlvbl9fYXJndW1lbnRQcm9maWxlTG9vcCkg
IlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fZnVuY3Rpb25Jbml0aWFsaXphdGlv
bl9fYXJndW1lbnRQcm9maWxlRG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgNDc0CiJcdG1vdmwg
MjQoJWVkeCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgNDc1CiJcdG1vdmwgNDgoJWVkeCksICVl
Y3hcbiIKLy8gbGluZSBudW1iZXIgNDc2CiJcdG1vdmwgMzUwMCglZWN4KSwgJWVjeFxuIgovLyBs
aW5lIG51bWJlciA0NzcKIlx0c2FsbCAkMywgJWVheFxuIgovLyBsaW5lIG51bWJlciA0NzgKIlx0
bGVhbCAoJWVheCwgJWVkaSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgNDc5CiJcdGNtcGwgJWVh
eCwgMTIoJWVjeClcbiIKIlx0amFlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2Z1
bmN0aW9uSW5pdGlhbGl6YXRpb25fX3N0YWNrSGVpZ2h0T0spICJcbiIKLy8gbGluZSBudW1iZXIg
MTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAl
ZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklO
RyhsbGludF9yZWdpc3Rlcl9maWxlX2NoZWNrKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRt
b3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxu
IgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fZnVuY3Rpb25Jbml0aWFsaXphdGlvbl9f
c3RhY2tIZWlnaHRPSykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTY5Ci8vIGxpbmUgbnVtYmVyIDE3
MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkgIlxuIgpISURFX1NZTUJPTChsbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTUyCiJcdHBv
cCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDQyMQoiXHRtb3ZsICVlY3gsIC0xNiglZWRpKVxuIgov
LyBsaW5lIG51bWJlciAzOTgKIlx0bW92bCAtMzIoJWVkaSksICVlZHhcbiIKLy8gbGluZSBudW1i
ZXIgMzk5CiJcdG1vdmwgNDgoJWVkeCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgNDAwCiJcdG1v
dmwgOTIoJWVkeCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgNDI3CiJcdGFkZGwgJDUsIDE0NTIo
JWVkeClcbiIKIlx0anMgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMl9wcm9sb2d1
ZV9fY29udGludWUpICJcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNw
KVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUg
bnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9lbnRyeV9vc3JfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdCkgIlxuIgovLyBsaW5lIG51bWJlciA0MjkKIlx0bW92bCAlZWR4LCAl
ZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDQzMAoiXHR0ZXN0bCAlZWF4LCAlZWF4XG4iCiJcdGp6ICIg
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzJfcHJvbG9ndWVfX3JlY292ZXIpICJcbiIK
Ly8gbGluZSBudW1iZXIgNDMxCiJcdG1vdmwgLTE2KCVlZGkpLCAlZWN4XG4iCi8vIGxpbmUgbnVt
YmVyIDE2MgoiXHRwdXNoICVlY3hcbiIKLy8gbGluZSBudW1iZXIgNDMzCiJcdGptcCAqJWVheFxu
IgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMl9wcm9sb2d1ZV9fcmVjb3ZlcikgIjpc
biIKLy8gbGluZSBudW1iZXIgMzk4CiJcdG1vdmwgLTMyKCVlZGkpLCAlZWR4XG4iCi8vIGxpbmUg
bnVtYmVyIDM5OQoiXHRtb3ZsIDQ4KCVlZHgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDQwMAoi
XHRtb3ZsIDkyKCVlZHgpLCAlZWR4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8y
X3Byb2xvZ3VlX19jb250aW51ZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgNDA4CiJcdG1vdmwgJWVk
eCwgLTgoJWVkaSlcbiIKLy8gbGluZSBudW1iZXIgNDQxCiJcdG1vdmwgNTIoJWVkeCksICVlYXhc
biIKLy8gbGluZSBudW1iZXIgNDQyCiJcdG1vdmwgMzIoJWVheCksICVlc2lcbiIKTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtX2Z1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4pICI6XG4iCi8v
IGxpbmUgbnVtYmVyIDQ1NQoiXHRtb3ZsIDQwKCVlZHgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVy
IDQ1NgoiXHRhZGRsICQtMSwgJWVheFxuIgovLyBsaW5lIG51bWJlciA0NTcKIlx0Y21wbCAkMCwg
JWVheFxuIgoiXHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fZnVuY3Rpb25J
bml0aWFsaXphdGlvbl9fMl9hc3NlcnRfX29rKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDEzNQoiXHRt
b3ZsICQwLCAzMTQ4NzI1OTk5XG4iCi8vIGxpbmUgbnVtYmVyIDEzNgoiXHR4b3JsICVlYXgsICVl
YXhcbiIKLy8gbGluZSBudW1iZXIgMTM3CiJcdGNhbGwgKiVlYXhcbiIKTE9DQUxfTEFCRUxfU1RS
SU5HKF9vZmZsaW5lYXNtX2Z1bmN0aW9uSW5pdGlhbGl6YXRpb25fXzJfYXNzZXJ0X19vaykgIjpc
biIKLy8gbGluZSBudW1iZXIgNDU4CiJcdHRlc3RsICVlYXgsICVlYXhcbiIKIlx0anogIiBMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMl9mdW5jdGlvbkluaXRpYWxpemF0aW9uX19hcmd1
bWVudFByb2ZpbGVEb25lKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDQ1OQoiXHRtb3ZsIDU0MCglZWR4
KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciA0NjAKIlx0aW11bGwgJDI4LCAlZWF4LCAlZWN4XG4i
Ci8vIGxpbmUgbnVtYmVyIDQ2MQoiXHRuZWdsICVlYXhcbiIKLy8gbGluZSBudW1iZXIgNDYyCiJc
dHNhbGwgJDMsICVlYXhcbiIKLy8gbGluZSBudW1iZXIgNDYzCiJcdGFkZGwgJWVjeCwgJWVieFxu
IgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMl9mdW5jdGlvbkluaXRpYWxpemF0aW9u
X19hcmd1bWVudFByb2ZpbGVMb29wKSAiOlxuIgovLyBsaW5lIG51bWJlciA0NjUKIlx0bW92bCAt
NTIoJWVkaSwgJWVheCwgMSksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgNDY2CiJcdHN1YmwgJDI4
LCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDQ2NwoiXHRtb3ZsICVlY3gsIDQ0KCVlYngpXG4iCi8v
IGxpbmUgbnVtYmVyIDQ2OAoiXHRtb3ZsIC01NiglZWRpLCAlZWF4LCAxKSwgJWVjeFxuIgovLyBs
aW5lIG51bWJlciA0NjkKIlx0bW92bCAlZWN4LCA0MCglZWJ4KVxuIgovLyBsaW5lIG51bWJlciA0
NzAKIlx0YWRkbCAkOCwgJWVheFxuIgoiXHRqbnogIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxp
bmVhc21fMl9mdW5jdGlvbkluaXRpYWxpemF0aW9uX19hcmd1bWVudFByb2ZpbGVMb29wKSAiXG4i
CkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8yX2Z1bmN0aW9uSW5pdGlhbGl6YXRpb25f
X2FyZ3VtZW50UHJvZmlsZURvbmUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDQ3NAoiXHRtb3ZsIDI0
KCVlZHgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDQ3NQoiXHRtb3ZsIDQ4KCVlZHgpLCAlZWN4
XG4iCi8vIGxpbmUgbnVtYmVyIDQ3NgoiXHRtb3ZsIDM1MDAoJWVjeCksICVlY3hcbiIKLy8gbGlu
ZSBudW1iZXIgNDc3CiJcdHNhbGwgJDMsICVlYXhcbiIKLy8gbGluZSBudW1iZXIgNDc4CiJcdGxl
YWwgKCVlYXgsICVlZGkpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDQ3OQoiXHRjbXBsICVlYXgs
IDEyKCVlY3gpXG4iCiJcdGphZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8yX2Z1
bmN0aW9uSW5pdGlhbGl6YXRpb25fX3N0YWNrSGVpZ2h0T0spICJcbiIKLy8gbGluZSBudW1iZXIg
MTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAl
ZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklO
RyhsbGludF9yZWdpc3Rlcl9maWxlX2NoZWNrKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRt
b3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxu
IgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMl9mdW5jdGlvbkluaXRpYWxpemF0aW9u
X19zdGFja0hlaWdodE9LKSAiOlxuIgovLyBsaW5lIG51bWJlciAxNjkKLy8gbGluZSBudW1iZXIg
MTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaykgIlxuIgpISURFX1NZTUJPTChsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eV9jaGVjaykgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSAiOlxuIgovLyBsaW5lIG51bWJlciAxNTIKIlx0cG9wICVl
Y3hcbiIKLy8gbGluZSBudW1iZXIgNDIxCiJcdG1vdmwgJWVjeCwgLTE2KCVlZGkpXG4iCi8vIGxp
bmUgbnVtYmVyIDM5MgoiXHRtb3ZsIC0zMiglZWRpKSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAz
OTMKIlx0bW92bCA0OCglZWR4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzOTQKIlx0bW92bCA4
OCglZWR4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciA0MjcKIlx0YWRkbCAkNSwgMTQ1MiglZWR4
KVxuIgoiXHRqcyAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8zX3Byb2xvZ3VlX19j
b250aW51ZSkgIlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4i
Ci8vIGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1i
ZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eUNoZWNrKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDQyOQoiXHRtb3ZsICVlZHgs
ICVlZGlcbiIKLy8gbGluZSBudW1iZXIgNDMwCiJcdHRlc3RsICVlYXgsICVlYXhcbiIKIlx0anog
IiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fM19wcm9sb2d1ZV9fcmVjb3ZlcikgIlxu
IgovLyBsaW5lIG51bWJlciA0MzEKIlx0bW92bCAtMTYoJWVkaSksICVlY3hcbiIKLy8gbGluZSBu
dW1iZXIgMTYyCiJcdHB1c2ggJWVjeFxuIgovLyBsaW5lIG51bWJlciA0MzMKIlx0am1wIColZWF4
XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8zX3Byb2xvZ3VlX19yZWNvdmVyKSAi
OlxuIgovLyBsaW5lIG51bWJlciAzOTIKIlx0bW92bCAtMzIoJWVkaSksICVlZHhcbiIKLy8gbGlu
ZSBudW1iZXIgMzkzCiJcdG1vdmwgNDgoJWVkeCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzk0
CiJcdG1vdmwgODgoJWVkeCksICVlZHhcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNt
XzNfcHJvbG9ndWVfX2NvbnRpbnVlKSAiOlxuIgovLyBsaW5lIG51bWJlciA0MDgKIlx0bW92bCAl
ZWR4LCAtOCglZWRpKVxuIgovLyBsaW5lIG51bWJlciA0NDEKIlx0bW92bCA1MiglZWR4KSwgJWVh
eFxuIgovLyBsaW5lIG51bWJlciA0NDIKIlx0bW92bCAzMiglZWF4KSwgJWVzaVxuIgovLyBsaW5l
IG51bWJlciA0ODgKIlx0bW92bCAtNDgoJWVkaSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgNDg5
CiJcdGNtcGwgNDAoJWVkeCksICVlYXhcbiIKIlx0amFlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9v
ZmZsaW5lYXNtX2Z1bmN0aW9uRm9yQ2FsbEJlZ2luKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoi
XHRtb3ZsICVlZGksIDAoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwg
NCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxp
bnRfaGVscGVyX2NhbGxfYXJpdHlDaGVjaykgIlxuIgovLyBsaW5lIG51bWJlciA0OTEKIlx0bW92
bCAlZWR4LCAlZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDQ5MgoiXHR0ZXN0bCAlZWF4LCAlZWF4XG4i
CiJcdGp6ICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2Z1bmN0aW9uQXJpdHlDaGVj
a19fY29udGludWUpICJcbiIKLy8gbGluZSBudW1iZXIgNDkzCiJcdG1vdmwgMTAwKCVlc3ApLCAl
ZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDQ5NAoiXHRtb3ZsIDU0NzYoJWVkeCksICVlYXhcbiIKLy8g
bGluZSBudW1iZXIgNDk1CiJcdGptcCAqNTQ4MCglZWR4KVxuIgpMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fZnVuY3Rpb25Bcml0eUNoZWNrX19jb250aW51ZSkgIjpcbiIKLy8gbGluZSBu
dW1iZXIgNDk4CiJcdG1vdmwgLTgoJWVkaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgNDk5CiJc
dG1vdmwgNTIoJWVkeCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgNTAwCiJcdG1vdmwgMzIoJWVh
eCksICVlc2lcbiIKLy8gbGluZSBudW1iZXIgNTAxCiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklO
Ryhfb2ZmbGluZWFzbV9mdW5jdGlvbkZvckNhbGxCZWdpbikgIlxuIgoiLmdsb2JsICIgU1lNQk9M
X1NUUklORyhsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSAiXG4iCkhJ
REVfU1lNQk9MKGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spICJcbiIK
U1lNQk9MX1NUUklORyhsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSAi
OlxuIgovLyBsaW5lIG51bWJlciAxNTIKIlx0cG9wICVlY3hcbiIKLy8gbGluZSBudW1iZXIgNDIx
CiJcdG1vdmwgJWVjeCwgLTE2KCVlZGkpXG4iCi8vIGxpbmUgbnVtYmVyIDM5OAoiXHRtb3ZsIC0z
MiglZWRpKSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzOTkKIlx0bW92bCA0OCglZWR4KSwgJWVk
eFxuIgovLyBsaW5lIG51bWJlciA0MDAKIlx0bW92bCA5MiglZWR4KSwgJWVkeFxuIgovLyBsaW5l
IG51bWJlciA0MjcKIlx0YWRkbCAkNSwgMTQ1MiglZWR4KVxuIgoiXHRqcyAiIExPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV80X3Byb2xvZ3VlX19jb250aW51ZSkgIlxuIgovLyBsaW5lIG51
bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5NQoiXHRt
b3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xf
U1RSSU5HKGxsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2sp
ICJcbiIKLy8gbGluZSBudW1iZXIgNDI5CiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51
bWJlciA0MzAKIlx0dGVzdGwgJWVheCwgJWVheFxuIgoiXHRqeiAiIExPQ0FMX0xBQkVMX1NUUklO
Ryhfb2ZmbGluZWFzbV80X3Byb2xvZ3VlX19yZWNvdmVyKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDQz
MQoiXHRtb3ZsIC0xNiglZWRpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAxNjIKIlx0cHVzaCAl
ZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDQzMwoiXHRqbXAgKiVlYXhcbiIKTE9DQUxfTEFCRUxfU1RS
SU5HKF9vZmZsaW5lYXNtXzRfcHJvbG9ndWVfX3JlY292ZXIpICI6XG4iCi8vIGxpbmUgbnVtYmVy
IDM5OAoiXHRtb3ZsIC0zMiglZWRpKSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzOTkKIlx0bW92
bCA0OCglZWR4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciA0MDAKIlx0bW92bCA5MiglZWR4KSwg
JWVkeFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNF9wcm9sb2d1ZV9fY29udGlu
dWUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDQwOAoiXHRtb3ZsICVlZHgsIC04KCVlZGkpXG4iCi8v
IGxpbmUgbnVtYmVyIDQ0MQoiXHRtb3ZsIDUyKCVlZHgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVy
IDQ0MgoiXHRtb3ZsIDMyKCVlYXgpLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDQ4OAoiXHRtb3Zs
IC00OCglZWRpKSwgJWVheFxuIgovLyBsaW5lIG51bWJlciA0ODkKIlx0Y21wbCA0MCglZWR4KSwg
JWVheFxuIgoiXHRqYWUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fZnVuY3Rpb25G
b3JDb25zdHJ1Y3RCZWdpbikgIlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAw
KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8g
bGluZSBudW1iZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9jb25z
dHJ1Y3RfYXJpdHlDaGVjaykgIlxuIgovLyBsaW5lIG51bWJlciA0OTEKIlx0bW92bCAlZWR4LCAl
ZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDQ5MgoiXHR0ZXN0bCAlZWF4LCAlZWF4XG4iCiJcdGp6ICIg
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzRfZnVuY3Rpb25Bcml0eUNoZWNrX19jb250
aW51ZSkgIlxuIgovLyBsaW5lIG51bWJlciA0OTMKIlx0bW92bCAxMDAoJWVzcCksICVlZHhcbiIK
Ly8gbGluZSBudW1iZXIgNDk0CiJcdG1vdmwgNTQ3NiglZWR4KSwgJWVheFxuIgovLyBsaW5lIG51
bWJlciA0OTUKIlx0am1wICo1NDgwKCVlZHgpXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGlu
ZWFzbV80X2Z1bmN0aW9uQXJpdHlDaGVja19fY29udGludWUpICI6XG4iCi8vIGxpbmUgbnVtYmVy
IDQ5OAoiXHRtb3ZsIC04KCVlZGkpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDQ5OQoiXHRtb3Zs
IDUyKCVlZHgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDUwMAoiXHRtb3ZsIDMyKCVlYXgpLCAl
ZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDUwMQoiXHRqbXAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29m
ZmxpbmVhc21fZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbikgIlxuIgoiLmdsb2JsICIgU1lNQk9M
X1NUUklORyhsbGludF9vcF9lbnRlcikgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9lbnRlcikg
IlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2VudGVyKSAiOlxuIgovLyBsaW5lIG51bWJlciA1
NDEKIlx0bW92bCAtOCglZWRpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciA1NDIKIlx0bW92bCAy
OCglZWN4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciA1NDMKIlx0dGVzdGwgJWVjeCwgJWVjeFxu
IgoiXHRqeiAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcEVudGVyRG9uZSkgIlxu
IgovLyBsaW5lIG51bWJlciA1NDQKIlx0bW92bCAkLTQsICVlYXhcbiIKLy8gbGluZSBudW1iZXIg
NTQ1CiJcdHhvcmwgJWVkeCwgJWVkeFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21f
b3BFbnRlckxvb3ApICI6XG4iCi8vIGxpbmUgbnVtYmVyIDU0NwoiXHRzdWJsICQxLCAlZWN4XG4i
Ci8vIGxpbmUgbnVtYmVyIDU0OAoiXHRtb3ZsICVlYXgsIDQoJWVkaSwgJWVjeCwgOClcbiIKLy8g
bGluZSBudW1iZXIgNTQ5CiJcdG1vdmwgJWVkeCwgMCglZWRpLCAlZWN4LCA4KVxuIgovLyBsaW5l
IG51bWJlciA1NTAKIlx0dGVzdGwgJWVjeCwgJWVjeFxuIgoiXHRqbnogIiBMT0NBTF9MQUJFTF9T
VFJJTkcoX29mZmxpbmVhc21fb3BFbnRlckxvb3ApICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9v
ZmZsaW5lYXNtX29wRW50ZXJEb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAk
NCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwg
IiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2NyZWF0ZV9hY3RpdmF0aW9uKSAiXG4iCkhJREVfU1lN
Qk9MKGxsaW50X29wX2NyZWF0ZV9hY3RpdmF0aW9uKSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRf
b3BfY3JlYXRlX2FjdGl2YXRpb24pICI6XG4iCi8vIGxpbmUgbnVtYmVyIDU1NwoiXHRtb3ZsIDQo
JWVzaSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgNTU4CiJcdGNtcGwgJC02LCA0KCVlZGksICVl
YXgsIDgpXG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcENyZWF0
ZUFjdGl2YXRpb25Eb25lKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGksIDAo
JWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgovLyBs
aW5lIG51bWJlciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfaGVscGVyX2NyZWF0
ZV9hY3RpdmF0aW9uKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lc
biIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxuIgpMT0NBTF9MQUJFTF9T
VFJJTkcoX29mZmxpbmVhc21fb3BDcmVhdGVBY3RpdmF0aW9uRG9uZSkgIjpcbiIKLy8gbGluZSBu
dW1iZXIgMTY5CiJcdGFkZGwgJDgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAq
MCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9pbml0X2xhenlfcmVn
KSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX2luaXRfbGF6eV9yZWcpICJcbiIKU1lNQk9MX1NU
UklORyhsbGludF9vcF9pbml0X2xhenlfcmVnKSAiOlxuIgovLyBsaW5lIG51bWJlciA1NjYKIlx0
bW92bCA0KCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDU2NwoiXHRtb3ZsICQtNiwgNCgl
ZWRpLCAlZWF4LCA4KVxuIgovLyBsaW5lIG51bWJlciA1NjgKIlx0bW92bCAkMCwgMCglZWRpLCAl
ZWF4LCA4KVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkOCwgJWVzaVxuIgovLyBsaW5l
IG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxs
aW50X29wX2NyZWF0ZV9hcmd1bWVudHMpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfY3JlYXRl
X2FyZ3VtZW50cykgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2NyZWF0ZV9hcmd1bWVudHMp
ICI6XG4iCi8vIGxpbmUgbnVtYmVyIDU3NAoiXHRtb3ZsIDQoJWVzaSksICVlYXhcbiIKLy8gbGlu
ZSBudW1iZXIgNTc1CiJcdGNtcGwgJC02LCA0KCVlZGksICVlYXgsIDgpXG4iCiJcdGpuZSAiIExP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcENyZWF0ZUFyZ3VtZW50c0RvbmUpICJcbiIK
Ly8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJl
ciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxs
ICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykgIlxuIgovLyBs
aW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoi
XHRtb3ZsICVlZHgsICVlZGlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wQ3Jl
YXRlQXJndW1lbnRzRG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDgsICVl
c2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lN
Qk9MX1NUUklORyhsbGludF9vcF9jcmVhdGVfdGhpcykgIlxuIgpISURFX1NZTUJPTChsbGludF9v
cF9jcmVhdGVfdGhpcykgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2NyZWF0ZV90aGlzKSAi
OlxuIgovLyBsaW5lIG51bWJlciA2MDcKIlx0bW92bCA4KCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUg
bnVtYmVyIDMwMgoiXHRjbXBsICQxMDczNzQxODI0LCAlZWF4XG4iCiJcdGpsICIgTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtX2Fzc2VydE5vdENvbnN0YW50X180X2Fzc2VydF9fb2spICJc
biIKLy8gbGluZSBudW1iZXIgMTM1CiJcdG1vdmwgJDAsIDMxNDg3MjU5OTlcbiIKLy8gbGluZSBu
dW1iZXIgMTM2CiJcdHhvcmwgJWVheCwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxMzcKIlx0Y2Fs
bCAqJWVheFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYXNzZXJ0Tm90Q29uc3Rh
bnRfXzRfYXNzZXJ0X19vaykgIjpcbiIKLy8gbGluZSBudW1iZXIgNjA5CiJcdGNtcGwgJC01LCA0
KCVlZGksICVlYXgsIDgpXG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFz
bV9vcENyZWF0ZVRoaXNTbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDYxMAoiXHRtb3ZsIDAoJWVk
aSwgJWVheCwgOCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgNjExCiJcdG1vdmwgNCglZWF4KSwg
JWVkeFxuIgovLyBsaW5lIG51bWJlciA2MTIKIlx0Y21wYiAkMTAsIDgoJWVkeClcbiIKIlx0amIg
IiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BDcmVhdGVUaGlzU2xvdykgIlxuIgov
LyBsaW5lIG51bWJlciA2MTMKIlx0bW92bCAxMiglZWF4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJl
ciA2MTQKIlx0dGVzdGwgJWVjeCwgJWVjeFxuIgoiXHRqeiAiIExPQ0FMX0xBQkVMX1NUUklORyhf
b2ZmbGluZWFzbV9vcENyZWF0ZVRoaXNTbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDU4NQoiXHRt
b3ZsIC04KCVlZGkpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDU4NgoiXHRtb3ZsIDQ4KCVlZHgp
LCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDU4OQoiXHRtb3ZsIDM2MTYoJWVkeCksICVlYXhcbiIK
Ly8gbGluZSBudW1iZXIgNTkwCiJcdHRlc3RsICVlYXgsICVlYXhcbiIKIlx0anogIiBMT0NBTF9M
QUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BDcmVhdGVUaGlzU2xvdykgIlxuIgovLyBsaW5lIG51
bWJlciA1OTMKIlx0bW92bCAwKCVlYXgpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDU5NAoiXHRt
b3ZsICVlYngsIDM2MTYoJWVkeClcbiIKLy8gbGluZSBudW1iZXIgNTk3CiJcdG1vdmwgNTQ1Migl
ZWR4KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciA1OTgKIlx0bW92bCAlZWJ4LCAwKCVlYXgpXG4i
Ci8vIGxpbmUgbnVtYmVyIDU5OQoiXHRtb3ZsICVlY3gsIDQoJWVheClcbiIKLy8gbGluZSBudW1i
ZXIgNjAwCiJcdG1vdmwgJDAsIDEyKCVlYXgpXG4iCi8vIGxpbmUgbnVtYmVyIDYwMQoiXHRsZWFs
IDE2KCVlYXgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDYwMgoiXHRtb3ZsICVlZHgsIDgoJWVh
eClcbiIKLy8gbGluZSBudW1iZXIgNjE2CiJcdG1vdmwgNCglZXNpKSwgJWVkeFxuIgovLyBsaW5l
IG51bWJlciA2MTcKIlx0bW92bCAkLTUsIDQoJWVkaSwgJWVkeCwgOClcbiIKLy8gbGluZSBudW1i
ZXIgNjE4CiJcdG1vdmwgJWVheCwgMCglZWRpLCAlZWR4LCA4KVxuIgovLyBsaW5lIG51bWJlciAx
NjkKIlx0YWRkbCAkMTIsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNp
KVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BDcmVhdGVUaGlzU2xvdykgIjpc
biIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51
bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRj
YWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfY3JlYXRlX3RoaXMpICJcbiIKLy8gbGlu
ZSBudW1iZXIgMjIyCiJcdG1vdmwgJWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAyMjMKIlx0
bW92bCAlZWR4LCAlZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQxMiwgJWVzaVxu
IgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xf
U1RSSU5HKGxsaW50X29wX2dldF9jYWxsZWUpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfZ2V0
X2NhbGxlZSkgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2dldF9jYWxsZWUpICI6XG4iCi8v
IGxpbmUgbnVtYmVyIDYyOAoiXHRtb3ZsIDQoJWVzaSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIg
NjI5CiJcdG1vdmwgLTMyKCVlZGkpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDYzMAoiXHRtb3Zs
ICQtNSwgNCglZWRpLCAlZWF4LCA4KVxuIgovLyBsaW5lIG51bWJlciA2MzEKIlx0bW92bCAlZWR4
LCAwKCVlZGksICVlYXgsIDgpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQ4LCAlZXNp
XG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJP
TF9TVFJJTkcobGxpbnRfb3BfY29udmVydF90aGlzKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29w
X2NvbnZlcnRfdGhpcykgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2NvbnZlcnRfdGhpcykg
IjpcbiIKLy8gbGluZSBudW1iZXIgNjM3CiJcdG1vdmwgNCglZXNpKSwgJWVheFxuIgovLyBsaW5l
IG51bWJlciA2MzgKIlx0Y21wbCAkLTUsIDQoJWVkaSwgJWVheCwgOClcbiIKIlx0am5lICIgTE9D
QUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wQ29udmVydFRoaXNTbG93KSAiXG4iCi8vIGxp
bmUgbnVtYmVyIDYzOQoiXHRtb3ZsIDAoJWVkaSwgJWVheCwgOCksICVlYXhcbiIKLy8gbGluZSBu
dW1iZXIgNjQwCiJcdG1vdmwgNCglZWF4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciA2NDEKIlx0
Y21wYiAkMTAsIDgoJWVheClcbiIKIlx0amIgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVh
c21fb3BDb252ZXJ0VGhpc1Nsb3cpICJcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDgs
ICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgpMT0NBTF9MQUJF
TF9TVFJJTkcoX29mZmxpbmVhc21fb3BDb252ZXJ0VGhpc1Nsb3cpICI6XG4iCi8vIGxpbmUgbnVt
YmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk1CiJcdG1v
dmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9T
VFJJTkcobGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykgIlxuIgovLyBsaW5lIG51bWJlciAyMjIK
Ilx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRtb3ZsICVlZHgsICVl
ZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDgsICVlc2lcbiIKLy8gbGluZSBudW1i
ZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9v
cF9uZXdfb2JqZWN0KSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX25ld19vYmplY3QpICJcbiIK
U1lNQk9MX1NUUklORyhsbGludF9vcF9uZXdfb2JqZWN0KSAiOlxuIgovLyBsaW5lIG51bWJlciA2
NTEKIlx0bW92bCAtOCglZWRpKSwgJWVheFxuIgovLyBsaW5lIG51bWJlciA2NTIKIlx0bW92bCAx
NiglZWF4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciA2NTMKIlx0bW92bCAyMzIoJWVheCksICVl
ZHhcbiIKLy8gbGluZSBudW1iZXIgNTg1CiJcdG1vdmwgLTgoJWVkaSksICVlY3hcbiIKLy8gbGlu
ZSBudW1iZXIgNTg2CiJcdG1vdmwgNDgoJWVjeCksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgNTg5
CiJcdG1vdmwgMzYxNiglZWN4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciA1OTAKIlx0dGVzdGwg
JWVheCwgJWVheFxuIgoiXHRqeiAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcE5l
d09iamVjdFNsb3cpICJcbiIKLy8gbGluZSBudW1iZXIgNTkzCiJcdG1vdmwgMCglZWF4KSwgJWVi
eFxuIgovLyBsaW5lIG51bWJlciA1OTQKIlx0bW92bCAlZWJ4LCAzNjE2KCVlY3gpXG4iCi8vIGxp
bmUgbnVtYmVyIDU5NwoiXHRtb3ZsIDU0NTIoJWVjeCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIg
NTk4CiJcdG1vdmwgJWVieCwgMCglZWF4KVxuIgovLyBsaW5lIG51bWJlciA1OTkKIlx0bW92bCAl
ZWR4LCA0KCVlYXgpXG4iCi8vIGxpbmUgbnVtYmVyIDYwMAoiXHRtb3ZsICQwLCAxMiglZWF4KVxu
IgovLyBsaW5lIG51bWJlciA2MDEKIlx0bGVhbCAxNiglZWF4KSwgJWVjeFxuIgovLyBsaW5lIG51
bWJlciA2MDIKIlx0bW92bCAlZWN4LCA4KCVlYXgpXG4iCi8vIGxpbmUgbnVtYmVyIDY1NQoiXHRt
b3ZsIDQoJWVzaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgNjU2CiJcdG1vdmwgJC01LCA0KCVl
ZGksICVlZHgsIDgpXG4iCi8vIGxpbmUgbnVtYmVyIDY1NwoiXHRtb3ZsICVlYXgsIDAoJWVkaSwg
JWVkeCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDgsICVlc2lcbiIKLy8gbGlu
ZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxp
bmVhc21fb3BOZXdPYmplY3RTbG93KSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAl
ZWRpLCAwKCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClc
biIKLy8gbGluZSBudW1iZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBl
cl9uZXdfb2JqZWN0KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lc
biIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJl
ciAxNjkKIlx0YWRkbCAkOCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVl
c2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX25ld19hcnJheSkgIlxuIgpI
SURFX1NZTUJPTChsbGludF9vcF9uZXdfYXJyYXkpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9v
cF9uZXdfYXJyYXkpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVz
cClcbiIKLy8gbGluZSBudW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5l
IG51bWJlciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfaGVscGVyX25ld19hcnJh
eSkgIlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUg
bnVtYmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFk
ZGwgJDE2LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcikgIlxuIgpISURF
X1NZTUJPTChsbGludF9vcF9uZXdfYXJyYXlfYnVmZmVyKSAiXG4iClNZTUJPTF9TVFJJTkcobGxp
bnRfb3BfbmV3X2FycmF5X2J1ZmZlcikgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwg
JWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3Ap
XG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxw
ZXJfbmV3X2FycmF5X2J1ZmZlcikgIlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4
LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8gbGlu
ZSBudW1iZXIgMTY5CiJcdGFkZGwgJDE2LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRq
bXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfbmV3X3JlZ2V4
cCkgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9uZXdfcmVnZXhwKSAiXG4iClNZTUJPTF9TVFJJ
TkcobGxpbnRfb3BfbmV3X3JlZ2V4cCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwg
JWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3Ap
XG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxw
ZXJfbmV3X3JlZ2V4cCkgIlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNp
XG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8gbGluZSBudW1i
ZXIgMTY5CiJcdGFkZGwgJDEyLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAo
JWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfbW92KSAiXG4iCkhJREVf
U1lNQk9MKGxsaW50X29wX21vdikgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX21vdikgIjpc
biIKLy8gbGluZSBudW1iZXIgNjg1CiJcdG1vdmwgOCglZXNpKSwgJWVkeFxuIgovLyBsaW5lIG51
bWJlciA2ODYKIlx0bW92bCA0KCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDMwOAoiXHRj
bXBsICQxMDczNzQxODI0LCAlZWR4XG4iCiJcdGpnZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2Zm
bGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkgIlxuIgovLyBsaW5lIG51
bWJlciAzMDkKIlx0bW92bCA0KCVlZGksICVlZHgsIDgpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVy
IDMxMAoiXHRtb3ZsIDAoJWVkaSwgJWVkeCwgOCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzEx
CiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlX19kb25lKSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMzEzCiJcdG1v
dmwgLTgoJWVkaSksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzE0CiJcdG1vdmwgMTQxMiglZWJ4
KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAzMTcKIlx0bW92bCA0KCVlYngsICVlZHgsIDgpLCAl
ZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMxOAoiXHRtb3ZsIDAoJWVieCwgJWVkeCwgOCksICVlYnhc
biIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVf
X2RvbmUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDY4OAoiXHRtb3ZsICVlY3gsIDQoJWVkaSwgJWVh
eCwgOClcbiIKLy8gbGluZSBudW1iZXIgNjg5CiJcdG1vdmwgJWVieCwgMCglZWRpLCAlZWF4LCA4
KVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMTIsICVlc2lcbiIKLy8gbGluZSBudW1i
ZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9v
cF9ub3QpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3Bfbm90KSAiXG4iClNZTUJPTF9TVFJJTkco
bGxpbnRfb3Bfbm90KSAiOlxuIgovLyBsaW5lIG51bWJlciA2OTUKIlx0bW92bCA4KCVlc2kpLCAl
ZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDY5NgoiXHRtb3ZsIDQoJWVzaSksICVlZHhcbiIKLy8gbGlu
ZSBudW1iZXIgMzA4CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlYXhcbiIKIlx0amdlICIgTE9DQUxf
TEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3Rh
bnQpICJcbiIKLy8gbGluZSBudW1iZXIgMzA5CiJcdG1vdmwgNCglZWRpLCAlZWF4LCA4KSwgJWVj
eFxuIgovLyBsaW5lIG51bWJlciAzMTAKIlx0bW92bCAwKCVlZGksICVlYXgsIDgpLCAlZWJ4XG4i
Ci8vIGxpbmUgbnVtYmVyIDMxMQoiXHRqbXAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVh
c21fNF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklO
Ryhfb2ZmbGluZWFzbV80X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KSAiOlxuIgov
LyBsaW5lIG51bWJlciAzMTMKIlx0bW92bCAtOCglZWRpKSwgJWVieFxuIgovLyBsaW5lIG51bWJl
ciAzMTQKIlx0bW92bCAxNDEyKCVlYngpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMxNwoiXHRt
b3ZsIDQoJWVieCwgJWVheCwgOCksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMzE4CiJcdG1vdmwg
MCglZWJ4LCAlZWF4LCA4KSwgJWVieFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21f
NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciA2OTgK
Ilx0Y21wbCAkLTIsICVlY3hcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5l
YXNtX29wTm90U2xvdykgIlxuIgovLyBsaW5lIG51bWJlciA2OTkKIlx0eG9ybCAkMSwgJWVieFxu
IgovLyBsaW5lIG51bWJlciA3MDAKIlx0bW92bCAlZWN4LCA0KCVlZGksICVlZHgsIDgpXG4iCi8v
IGxpbmUgbnVtYmVyIDcwMQoiXHRtb3ZsICVlYngsIDAoJWVkaSwgJWVkeCwgOClcbiIKLy8gbGlu
ZSBudW1iZXIgMTY5CiJcdGFkZGwgJDEyLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRq
bXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wTm90U2xvdykg
IjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5l
IG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoi
XHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfbm90KSAiXG4iCi8vIGxpbmUgbnVt
YmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwg
JWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMTIsICVlc2lcbiIKLy8g
bGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklO
RyhsbGludF9vcF9lcSkgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9lcSkgIlxuIgpTWU1CT0xf
U1RSSU5HKGxsaW50X29wX2VxKSAiOlxuIgovLyBsaW5lIG51bWJlciA3MTEKIlx0bW92bCAxMigl
ZXNpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciA3MTIKIlx0bW92bCA4KCVlc2kpLCAlZWF4XG4i
Ci8vIGxpbmUgbnVtYmVyIDMwOAoiXHRjbXBsICQxMDczNzQxODI0LCAlZWN4XG4iCiJcdGpnZSAi
IExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV81X2xvYWRDb25zdGFudE9yVmFyaWFibGVf
X2NvbnN0YW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDMwOQoiXHRtb3ZsIDQoJWVkaSwgJWVjeCwg
OCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzEwCiJcdG1vdmwgMCglZWRpLCAlZWN4LCA4KSwg
JWVkeFxuIgovLyBsaW5lIG51bWJlciAzMTEKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9v
ZmZsaW5lYXNtXzVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkgIlxuIgpMT0NBTF9MQUJF
TF9TVFJJTkcoX29mZmxpbmVhc21fNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkg
IjpcbiIKLy8gbGluZSBudW1iZXIgMzEzCiJcdG1vdmwgLTgoJWVkaSksICVlZHhcbiIKLy8gbGlu
ZSBudW1iZXIgMzE0CiJcdG1vdmwgMTQxMiglZWR4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAz
MTcKIlx0bW92bCA0KCVlZHgsICVlY3gsIDgpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMxOAoi
XHRtb3ZsIDAoJWVkeCwgJWVjeCwgOCksICVlZHhcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZs
aW5lYXNtXzVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkgIjpcbiIKLy8gbGluZSBudW1i
ZXIgMzI0CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlYXhcbiIKIlx0amdlICIgTE9DQUxfTEFCRUxf
U1RSSU5HKF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkg
IlxuIgovLyBsaW5lIG51bWJlciAzMjUKIlx0bW92bCA0KCVlZGksICVlYXgsIDgpLCAlZWN4XG4i
Ci8vIGxpbmUgbnVtYmVyIDMyNgoiXHRtb3ZsIDAoJWVkaSwgJWVheCwgOCksICVlYXhcbiIKLy8g
bGluZSBudW1iZXIgMzI3CiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KSAiOlxuIgov
LyBsaW5lIG51bWJlciAzMjkKIlx0bW92bCAtOCglZWRpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJl
ciAzMzAKIlx0bW92bCAxNDEyKCVlY3gpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzMwoiXHRz
YWxsICQzLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDMzNAoiXHRhZGRsICVlYXgsICVlY3hcbiIK
Ly8gbGluZSBudW1iZXIgMzM1CiJcdG1vdmwgMCglZWN4KSwgJWVheFxuIgovLyBsaW5lIG51bWJl
ciAzMzYKIlx0bW92bCA0KCVlY3gpLCAlZWN4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGlu
ZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSkgIjpcbiIKLy8gbGluZSBudW1i
ZXIgNzE1CiJcdGNtcGwgJWVieCwgJWVjeFxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fb3BFcVNsb3cpICJcbiIKLy8gbGluZSBudW1iZXIgNzE2CiJcdGNtcGwgJC01
LCAlZWN4XG4iCiJcdGplICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wRXFTbG93
KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDcxNwoiXHRjbXBsICQtNywgJWVjeFxuIgoiXHRqYiAiIExP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcEVxU2xvdykgIlxuIgovLyBsaW5lIG51bWJl
ciA3MTgKIlx0bW92bCA0KCVlc2kpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDcxOQoiXHRjbXBs
ICVlZHgsICVlYXhcbiIKIlx0c2V0ZSAlYWxcbiIKIlx0bW92emJsICVhbCwgJWVheFxuIgovLyBs
aW5lIG51bWJlciA3MjAKIlx0bW92bCAkLTIsIDQoJWVkaSwgJWVjeCwgOClcbiIKLy8gbGluZSBu
dW1iZXIgNzIxCiJcdG1vdmwgJWVheCwgMCglZWRpLCAlZWN4LCA4KVxuIgovLyBsaW5lIG51bWJl
ciAxNjkKIlx0YWRkbCAkMTYsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCgl
ZXNpKVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BFcVNsb3cpICI6XG4iCi8v
IGxpbmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVzcClcbiIKLy8gbGluZSBudW1iZXIg
MTk1CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTkKIlx0Y2FsbCAi
IFNZTUJPTF9TVFJJTkcobGxpbnRfaGVscGVyX2VxKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoi
XHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVk
aVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMTYsICVlc2lcbiIKLy8gbGluZSBudW1i
ZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9v
cF9lcV9udWxsKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX2VxX251bGwpICJcbiIKU1lNQk9M
X1NUUklORyhsbGludF9vcF9lcV9udWxsKSAiOlxuIgovLyBsaW5lIG51bWJlciA3MzEKIlx0bW92
bCA4KCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDczMgoiXHRtb3ZsIDQoJWVzaSksICVl
YnhcbiIKLy8gbGluZSBudW1iZXIgMzAyCiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlYXhcbiIKIlx0
amwgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYXNzZXJ0Tm90Q29uc3RhbnRfXzVf
YXNzZXJ0X19vaykgIlxuIgovLyBsaW5lIG51bWJlciAxMzUKIlx0bW92bCAkMCwgMzE0ODcyNTk5
OVxuIgovLyBsaW5lIG51bWJlciAxMzYKIlx0eG9ybCAlZWF4LCAlZWF4XG4iCi8vIGxpbmUgbnVt
YmVyIDEzNwoiXHRjYWxsIColZWF4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9h
c3NlcnROb3RDb25zdGFudF9fNV9hc3NlcnRfX29rKSAiOlxuIgovLyBsaW5lIG51bWJlciA3MzQK
Ilx0bW92bCA0KCVlZGksICVlYXgsIDgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDczNQoiXHRt
b3ZsIDAoJWVkaSwgJWVheCwgOCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgNzM2CiJcdGNtcGwg
JC01LCAlZWR4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcEVx
TnVsbEltbWVkaWF0ZSkgIlxuIgovLyBsaW5lIG51bWJlciA3MzcKIlx0bW92bCA0KCVlYXgpLCAl
ZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDczOAoiXHR0ZXN0YiAkMSwgOSglZWR4KVxuIgoiXHRzZXRu
eiAlZGxcbiIKIlx0bW92emJsICVkbCwgJWVkeFxuIgovLyBsaW5lIG51bWJlciA3MzkKIlx0am1w
ICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wRXFOdWxsTm90SW1tZWRpYXRlKSAi
XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcEVxTnVsbEltbWVkaWF0ZSkgIjpc
biIKLy8gbGluZSBudW1iZXIgNzQxCiJcdGNtcGwgJC0zLCAlZWR4XG4iCiJcdHNldGUgJWNsXG4i
CiJcdG1vdnpibCAlY2wsICVlY3hcbiIKLy8gbGluZSBudW1iZXIgNzQyCiJcdGNtcGwgJC00LCAl
ZWR4XG4iCiJcdHNldGUgJWRsXG4iCiJcdG1vdnpibCAlZGwsICVlZHhcbiIKLy8gbGluZSBudW1i
ZXIgNzQzCiJcdG9ybCAlZWN4LCAlZWR4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFz
bV9vcEVxTnVsbE5vdEltbWVkaWF0ZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgNzQ1CiJcdG1vdmwg
JC0yLCA0KCVlZGksICVlYngsIDgpXG4iCi8vIGxpbmUgbnVtYmVyIDc0NgoiXHRtb3ZsICVlZHgs
IDAoJWVkaSwgJWVieCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDEyLCAlZXNp
XG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJP
TF9TVFJJTkcobGxpbnRfb3BfbmVxKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX25lcSkgIlxu
IgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX25lcSkgIjpcbiIKLy8gbGluZSBudW1iZXIgNzUyCiJc
dG1vdmwgMTIoJWVzaSksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgNzUzCiJcdG1vdmwgOCglZXNp
KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMDgKIlx0Y21wbCAkMTA3Mzc0MTgyNCwgJWVjeFxu
IgoiXHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNl9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlX19jb25zdGFudCkgIlxuIgovLyBsaW5lIG51bWJlciAzMDkKIlx0bW92bCA0KCVl
ZGksICVlY3gsIDgpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMxMAoiXHRtb3ZsIDAoJWVkaSwg
JWVjeCwgOCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzExCiJcdGptcCAiIExPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV82X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpICJcbiIK
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzZfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9f
Y29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMxMwoiXHRtb3ZsIC04KCVlZGkpLCAlZWR4
XG4iCi8vIGxpbmUgbnVtYmVyIDMxNAoiXHRtb3ZsIDE0MTIoJWVkeCksICVlZHhcbiIKLy8gbGlu
ZSBudW1iZXIgMzE3CiJcdG1vdmwgNCglZWR4LCAlZWN4LCA4KSwgJWVieFxuIgovLyBsaW5lIG51
bWJlciAzMTgKIlx0bW92bCAwKCVlZHgsICVlY3gsIDgpLCAlZWR4XG4iCkxPQ0FMX0xBQkVMX1NU
UklORyhfb2ZmbGluZWFzbV82X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpICI6XG4iCi8v
IGxpbmUgbnVtYmVyIDMyNAoiXHRjbXBsICQxMDczNzQxODI0LCAlZWF4XG4iCiJcdGpnZSAiIExP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV82X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
X19jb25zdGFudCkgIlxuIgovLyBsaW5lIG51bWJlciAzMjUKIlx0bW92bCA0KCVlZGksICVlYXgs
IDgpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMyNgoiXHRtb3ZsIDAoJWVkaSwgJWVheCwgOCks
ICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzI3CiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhf
b2ZmbGluZWFzbV82X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKSAiXG4iCkxPQ0FM
X0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV82X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19j
b25zdGFudCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMzI5CiJcdG1vdmwgLTgoJWVkaSksICVlY3hc
biIKLy8gbGluZSBudW1iZXIgMzMwCiJcdG1vdmwgMTQxMiglZWN4KSwgJWVjeFxuIgovLyBsaW5l
IG51bWJlciAzMzMKIlx0c2FsbCAkMywgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMzQKIlx0YWRk
bCAlZWF4LCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzNQoiXHRtb3ZsIDAoJWVjeCksICVlYXhc
biIKLy8gbGluZSBudW1iZXIgMzM2CiJcdG1vdmwgNCglZWN4KSwgJWVjeFxuIgpMT0NBTF9MQUJF
TF9TVFJJTkcoX29mZmxpbmVhc21fNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSkg
IjpcbiIKLy8gbGluZSBudW1iZXIgNzU2CiJcdGNtcGwgJWVieCwgJWVjeFxuIgoiXHRqbmUgIiBM
T0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BOZXFTbG93KSAiXG4iCi8vIGxpbmUgbnVt
YmVyIDc1NwoiXHRjbXBsICQtNSwgJWVjeFxuIgoiXHRqZSAiIExPQ0FMX0xBQkVMX1NUUklORyhf
b2ZmbGluZWFzbV9vcE5lcVNsb3cpICJcbiIKLy8gbGluZSBudW1iZXIgNzU4CiJcdGNtcGwgJC03
LCAlZWN4XG4iCiJcdGpiICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wTmVxU2xv
dykgIlxuIgovLyBsaW5lIG51bWJlciA3NTkKIlx0bW92bCA0KCVlc2kpLCAlZWN4XG4iCi8vIGxp
bmUgbnVtYmVyIDc2MAoiXHRjbXBsICVlZHgsICVlYXhcbiIKIlx0c2V0bmUgJWFsXG4iCiJcdG1v
dnpibCAlYWwsICVlYXhcbiIKLy8gbGluZSBudW1iZXIgNzYxCiJcdG1vdmwgJC0yLCA0KCVlZGks
ICVlY3gsIDgpXG4iCi8vIGxpbmUgbnVtYmVyIDc2MgoiXHRtb3ZsICVlYXgsIDAoJWVkaSwgJWVj
eCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDE2LCAlZXNpXG4iCi8vIGxpbmUg
bnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5l
YXNtX29wTmVxU2xvdykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCgl
ZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxp
bmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfbmVxKSAi
XG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1i
ZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAk
MTYsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2Js
ICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9uZXFfbnVsbCkgIlxuIgpISURFX1NZTUJPTChsbGlu
dF9vcF9uZXFfbnVsbCkgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX25lcV9udWxsKSAiOlxu
IgovLyBsaW5lIG51bWJlciA3NzIKIlx0bW92bCA4KCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVt
YmVyIDc3MwoiXHRtb3ZsIDQoJWVzaSksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzAyCiJcdGNt
cGwgJDEwNzM3NDE4MjQsICVlYXhcbiIKIlx0amwgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxp
bmVhc21fYXNzZXJ0Tm90Q29uc3RhbnRfXzZfYXNzZXJ0X19vaykgIlxuIgovLyBsaW5lIG51bWJl
ciAxMzUKIlx0bW92bCAkMCwgMzE0ODcyNTk5OVxuIgovLyBsaW5lIG51bWJlciAxMzYKIlx0eG9y
bCAlZWF4LCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDEzNwoiXHRjYWxsIColZWF4XG4iCkxPQ0FM
X0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9hc3NlcnROb3RDb25zdGFudF9fNl9hc3NlcnRfX29r
KSAiOlxuIgovLyBsaW5lIG51bWJlciA3NzUKIlx0bW92bCA0KCVlZGksICVlYXgsIDgpLCAlZWR4
XG4iCi8vIGxpbmUgbnVtYmVyIDc3NgoiXHRtb3ZsIDAoJWVkaSwgJWVheCwgOCksICVlYXhcbiIK
Ly8gbGluZSBudW1iZXIgNzc3CiJcdGNtcGwgJC01LCAlZWR4XG4iCiJcdGpuZSAiIExPQ0FMX0xB
QkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcE5lcU51bGxJbW1lZGlhdGUpICJcbiIKLy8gbGluZSBu
dW1iZXIgNzc4CiJcdG1vdmwgNCglZWF4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciA3NzkKIlx0
dGVzdGIgJDEsIDkoJWVkeClcbiIKIlx0c2V0eiAlZGxcbiIKIlx0bW92emJsICVkbCwgJWVkeFxu
IgovLyBsaW5lIG51bWJlciA3ODAKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5l
YXNtX29wTmVxTnVsbE5vdEltbWVkaWF0ZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxp
bmVhc21fb3BOZXFOdWxsSW1tZWRpYXRlKSAiOlxuIgovLyBsaW5lIG51bWJlciA3ODIKIlx0Y21w
bCAkLTMsICVlZHhcbiIKIlx0c2V0bmUgJWNsXG4iCiJcdG1vdnpibCAlY2wsICVlY3hcbiIKLy8g
bGluZSBudW1iZXIgNzgzCiJcdGNtcGwgJC00LCAlZWR4XG4iCiJcdHNldG5lICVkbFxuIgoiXHRt
b3Z6YmwgJWRsLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDc4NAoiXHRhbmRsICVlY3gsICVlZHhc
biIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wTmVxTnVsbE5vdEltbWVkaWF0ZSkg
IjpcbiIKLy8gbGluZSBudW1iZXIgNzg2CiJcdG1vdmwgJC0yLCA0KCVlZGksICVlYngsIDgpXG4i
Ci8vIGxpbmUgbnVtYmVyIDc4NwoiXHRtb3ZsICVlZHgsIDAoJWVkaSwgJWVieCwgOClcbiIKLy8g
bGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDEyLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoi
XHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3Bfc3RyaWN0
ZXEpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3Bfc3RyaWN0ZXEpICJcbiIKU1lNQk9MX1NUUklO
RyhsbGludF9vcF9zdHJpY3RlcSkgIjpcbiIKLy8gbGluZSBudW1iZXIgNzkyCiJcdG1vdmwgMTIo
JWVzaSksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgNzkzCiJcdG1vdmwgOCglZXNpKSwgJWVheFxu
IgovLyBsaW5lIG51bWJlciAzMDgKIlx0Y21wbCAkMTA3Mzc0MTgyNCwgJWVjeFxuIgoiXHRqZ2Ug
IiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fc3RyaWN0RXFfXzdfbG9hZENvbnN0YW50
T3JWYXJpYWJsZV9fY29uc3RhbnQpICJcbiIKLy8gbGluZSBudW1iZXIgMzA5CiJcdG1vdmwgNCgl
ZWRpLCAlZWN4LCA4KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAzMTAKIlx0bW92bCAwKCVlZGks
ICVlY3gsIDgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMxMQoiXHRqbXAgIiBMT0NBTF9MQUJF
TF9TVFJJTkcoX29mZmxpbmVhc21fc3RyaWN0RXFfXzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9f
ZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fc3RyaWN0RXFfXzdfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMxMwoi
XHRtb3ZsIC04KCVlZGkpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMxNAoiXHRtb3ZsIDE0MTIo
JWVkeCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzE3CiJcdG1vdmwgNCglZWR4LCAlZWN4LCA4
KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAzMTgKIlx0bW92bCAwKCVlZHgsICVlY3gsIDgpLCAl
ZWR4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9zdHJpY3RFcV9fN19sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19kb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciAzMjQKIlx0Y21wbCAk
MTA3Mzc0MTgyNCwgJWVheFxuIgoiXHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVh
c21fc3RyaWN0RXFfXzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KSAiXG4i
Ci8vIGxpbmUgbnVtYmVyIDMyNQoiXHRtb3ZsIDQoJWVkaSwgJWVheCwgOCksICVlY3hcbiIKLy8g
bGluZSBudW1iZXIgMzI2CiJcdG1vdmwgMCglZWRpLCAlZWF4LCA4KSwgJWVheFxuIgovLyBsaW5l
IG51bWJlciAzMjcKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX3N0cmlj
dEVxX183X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKSAiXG4iCkxPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV9zdHJpY3RFcV9fN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Z19fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMyOQoiXHRtb3ZsIC04KCVlZGkpLCAl
ZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzMAoiXHRtb3ZsIDE0MTIoJWVjeCksICVlY3hcbiIKLy8g
bGluZSBudW1iZXIgMzMzCiJcdHNhbGwgJDMsICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzM0CiJc
dGFkZGwgJWVheCwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMzUKIlx0bW92bCAwKCVlY3gpLCAl
ZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDMzNgoiXHRtb3ZsIDQoJWVjeCksICVlY3hcbiIKTE9DQUxf
TEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX3N0cmljdEVxX183X2xvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnX19kb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciA3OTYKIlx0Y21wbCAlZWJ4LCAlZWN4
XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9zdHJpY3RFcV9fc2xv
dykgIlxuIgovLyBsaW5lIG51bWJlciA3OTcKIlx0Y21wbCAkLTcsICVlY3hcbiIKIlx0amIgIiBM
T0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fc3RyaWN0RXFfX3Nsb3cpICJcbiIKLy8gbGlu
ZSBudW1iZXIgNzk4CiJcdGNtcGwgJC01LCAlZWN4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NU
UklORyhfb2ZmbGluZWFzbV9zdHJpY3RFcV9fbm90U3RyaW5nKSAiXG4iCi8vIGxpbmUgbnVtYmVy
IDc5OQoiXHRtb3ZsIDQoJWVheCksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgODAwCiJcdG1vdmwg
NCglZWR4KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciA4MDEKIlx0Y21wYiAkNSwgOCglZWN4KVxu
IgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fc3RyaWN0RXFfX25vdFN0
cmluZykgIlxuIgovLyBsaW5lIG51bWJlciA4MDIKIlx0Y21wYiAkNSwgOCglZWJ4KVxuIgoiXHRq
ZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9zdHJpY3RFcV9fc2xvdykgIlxuIgpM
T0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fc3RyaWN0RXFfX25vdFN0cmluZykgIjpcbiIK
Ly8gbGluZSBudW1iZXIgODA0CiJcdG1vdmwgNCglZXNpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJl
ciA4MTcKIlx0Y21wbCAlZWR4LCAlZWF4XG4iCiJcdHNldGUgJWFsXG4iCiJcdG1vdnpibCAlYWws
ICVlYXhcbiIKLy8gbGluZSBudW1iZXIgODA2CiJcdG1vdmwgJC0yLCA0KCVlZGksICVlY3gsIDgp
XG4iCi8vIGxpbmUgbnVtYmVyIDgwNwoiXHRtb3ZsICVlYXgsIDAoJWVkaSwgJWVjeCwgOClcbiIK
Ly8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDE2LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3
MAoiXHRqbXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX3N0cmlj
dEVxX19zbG93KSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3Ap
XG4iCi8vIGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBu
dW1iZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9zdHJpY3RlcSkg
IlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVt
YmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwg
JDE2LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9i
bCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfbnN0cmljdGVxKSAiXG4iCkhJREVfU1lNQk9MKGxs
aW50X29wX25zdHJpY3RlcSkgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX25zdHJpY3RlcSkg
IjpcbiIKLy8gbGluZSBudW1iZXIgNzkyCiJcdG1vdmwgMTIoJWVzaSksICVlY3hcbiIKLy8gbGlu
ZSBudW1iZXIgNzkzCiJcdG1vdmwgOCglZXNpKSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMDgK
Ilx0Y21wbCAkMTA3Mzc0MTgyNCwgJWVjeFxuIgoiXHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fc3RyaWN0RXFfXzhfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQp
ICJcbiIKLy8gbGluZSBudW1iZXIgMzA5CiJcdG1vdmwgNCglZWRpLCAlZWN4LCA4KSwgJWVieFxu
IgovLyBsaW5lIG51bWJlciAzMTAKIlx0bW92bCAwKCVlZGksICVlY3gsIDgpLCAlZWR4XG4iCi8v
IGxpbmUgbnVtYmVyIDMxMQoiXHRqbXAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21f
c3RyaWN0RXFfXzhfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkgIlxuIgpMT0NBTF9MQUJF
TF9TVFJJTkcoX29mZmxpbmVhc21fc3RyaWN0RXFfXzhfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9f
Y29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMxMwoiXHRtb3ZsIC04KCVlZGkpLCAlZWR4
XG4iCi8vIGxpbmUgbnVtYmVyIDMxNAoiXHRtb3ZsIDE0MTIoJWVkeCksICVlZHhcbiIKLy8gbGlu
ZSBudW1iZXIgMzE3CiJcdG1vdmwgNCglZWR4LCAlZWN4LCA4KSwgJWVieFxuIgovLyBsaW5lIG51
bWJlciAzMTgKIlx0bW92bCAwKCVlZHgsICVlY3gsIDgpLCAlZWR4XG4iCkxPQ0FMX0xBQkVMX1NU
UklORyhfb2ZmbGluZWFzbV9zdHJpY3RFcV9fOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25l
KSAiOlxuIgovLyBsaW5lIG51bWJlciAzMjQKIlx0Y21wbCAkMTA3Mzc0MTgyNCwgJWVheFxuIgoi
XHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fc3RyaWN0RXFfXzhfbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDMyNQoi
XHRtb3ZsIDQoJWVkaSwgJWVheCwgOCksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMzI2CiJcdG1v
dmwgMCglZWRpLCAlZWF4LCA4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMjcKIlx0am1wICIg
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX3N0cmljdEVxX184X2xvYWRDb25zdGFudE9y
VmFyaWFibGUyUmVnX19kb25lKSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9z
dHJpY3RFcV9fOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQpICI6XG4iCi8v
IGxpbmUgbnVtYmVyIDMyOQoiXHRtb3ZsIC04KCVlZGkpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVy
IDMzMAoiXHRtb3ZsIDE0MTIoJWVjeCksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMzMzCiJcdHNh
bGwgJDMsICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzM0CiJcdGFkZGwgJWVheCwgJWVjeFxuIgov
LyBsaW5lIG51bWJlciAzMzUKIlx0bW92bCAwKCVlY3gpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVy
IDMzNgoiXHRtb3ZsIDQoJWVjeCksICVlY3hcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5l
YXNtX3N0cmljdEVxX184X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKSAiOlxuIgov
LyBsaW5lIG51bWJlciA3OTYKIlx0Y21wbCAlZWJ4LCAlZWN4XG4iCiJcdGpuZSAiIExPQ0FMX0xB
QkVMX1NUUklORyhfb2ZmbGluZWFzbV84X3N0cmljdEVxX19zbG93KSAiXG4iCi8vIGxpbmUgbnVt
YmVyIDc5NwoiXHRjbXBsICQtNywgJWVjeFxuIgoiXHRqYiAiIExPQ0FMX0xBQkVMX1NUUklORyhf
b2ZmbGluZWFzbV84X3N0cmljdEVxX19zbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDc5OAoiXHRj
bXBsICQtNSwgJWVjeFxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21f
OF9zdHJpY3RFcV9fbm90U3RyaW5nKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDc5OQoiXHRtb3ZsIDQo
JWVheCksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgODAwCiJcdG1vdmwgNCglZWR4KSwgJWVieFxu
IgovLyBsaW5lIG51bWJlciA4MDEKIlx0Y21wYiAkNSwgOCglZWN4KVxuIgoiXHRqbmUgIiBMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fOF9zdHJpY3RFcV9fbm90U3RyaW5nKSAiXG4iCi8v
IGxpbmUgbnVtYmVyIDgwMgoiXHRjbXBiICQ1LCA4KCVlYngpXG4iCiJcdGplICIgTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtXzhfc3RyaWN0RXFfX3Nsb3cpICJcbiIKTE9DQUxfTEFCRUxf
U1RSSU5HKF9vZmZsaW5lYXNtXzhfc3RyaWN0RXFfX25vdFN0cmluZykgIjpcbiIKLy8gbGluZSBu
dW1iZXIgODA0CiJcdG1vdmwgNCglZXNpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciA4MjIKIlx0
Y21wbCAlZWR4LCAlZWF4XG4iCiJcdHNldG5lICVhbFxuIgoiXHRtb3Z6YmwgJWFsLCAlZWF4XG4i
Ci8vIGxpbmUgbnVtYmVyIDgwNgoiXHRtb3ZsICQtMiwgNCglZWRpLCAlZWN4LCA4KVxuIgovLyBs
aW5lIG51bWJlciA4MDcKIlx0bW92bCAlZWF4LCAwKCVlZGksICVlY3gsIDgpXG4iCi8vIGxpbmUg
bnVtYmVyIDE2OQoiXHRhZGRsICQxNiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1w
ICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV84X3N0cmljdEVxX19z
bG93KSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8v
IGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIg
MTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9uc3RyaWN0ZXEpICJcbiIK
Ly8gbGluZSBudW1iZXIgMjIyCiJcdG1vdmwgJWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAy
MjMKIlx0bW92bCAlZWR4LCAlZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQxNiwg
JWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBT
WU1CT0xfU1RSSU5HKGxsaW50X29wX2xlc3MpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfbGVz
cykgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2xlc3MpICI6XG4iCi8vIGxpbmUgbnVtYmVy
IDE5NAoiXHRtb3ZsICVlZGksIDAoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk1CiJcdG1vdmwg
JWVzaSwgNCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9TVFJJ
TkcobGxpbnRfaGVscGVyX2xlc3MpICJcbiIKLy8gbGluZSBudW1iZXIgMjIyCiJcdG1vdmwgJWVh
eCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAyMjMKIlx0bW92bCAlZWR4LCAlZWRpXG4iCi8vIGxp
bmUgbnVtYmVyIDE2OQoiXHRhZGRsICQxNiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0
am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2xlc3NlcSkg
IlxuIgpISURFX1NZTUJPTChsbGludF9vcF9sZXNzZXEpICJcbiIKU1lNQk9MX1NUUklORyhsbGlu
dF9vcF9sZXNzZXEpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVz
cClcbiIKLy8gbGluZSBudW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5l
IG51bWJlciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfaGVscGVyX2xlc3NlcSkg
IlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVt
YmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwg
JDE2LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9i
bCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfZ3JlYXRlcikgIlxuIgpISURFX1NZTUJPTChsbGlu
dF9vcF9ncmVhdGVyKSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfZ3JlYXRlcikgIjpcbiIK
Ly8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJl
ciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxs
ICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfZ3JlYXRlcikgIlxuIgovLyBsaW5lIG51bWJl
ciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRtb3ZsICVl
ZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDE2LCAlZXNpXG4iCi8vIGxp
bmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkco
bGxpbnRfb3BfZ3JlYXRlcmVxKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX2dyZWF0ZXJlcSkg
IlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2dyZWF0ZXJlcSkgIjpcbiIKLy8gbGluZSBudW1i
ZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92
bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NU
UklORyhsbGludF9oZWxwZXJfZ3JlYXRlcmVxKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRt
b3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxu
IgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMTYsICVlc2lcbiIKLy8gbGluZSBudW1iZXIg
MTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9w
cmVfaW5jKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX3ByZV9pbmMpICJcbiIKU1lNQk9MX1NU
UklORyhsbGludF9vcF9wcmVfaW5jKSAiOlxuIgovLyBsaW5lIG51bWJlciA4NTEKIlx0bW92bCA0
KCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDg1MgoiXHRjbXBsICQtMSwgNCglZWRpLCAl
ZWF4LCA4KVxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BQcmVJ
bmNTbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDg1MwoiXHRtb3ZsIDAoJWVkaSwgJWVheCwgOCks
ICVlZHhcbiIKLy8gbGluZSBudW1iZXIgODU0CiJcdGFkZGwgJDEsICVlZHhcbiIKIlx0am8gIiBM
T0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BQcmVJbmNTbG93KSAiXG4iCi8vIGxpbmUg
bnVtYmVyIDg1NQoiXHRtb3ZsICVlZHgsIDAoJWVkaSwgJWVheCwgOClcbiIKLy8gbGluZSBudW1i
ZXIgMTY5CiJcdGFkZGwgJDgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCgl
ZXNpKVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BQcmVJbmNTbG93KSAiOlxu
IgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxpbmUgbnVt
YmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5CiJcdGNh
bGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9wcmVfaW5jKSAiXG4iCi8vIGxpbmUgbnVt
YmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwg
JWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkOCwgJWVzaVxuIgovLyBs
aW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5H
KGxsaW50X29wX3ByZV9kZWMpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfcHJlX2RlYykgIlxu
IgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX3ByZV9kZWMpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDg2
NQoiXHRtb3ZsIDQoJWVzaSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgODY2CiJcdGNtcGwgJC0x
LCA0KCVlZGksICVlYXgsIDgpXG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGlu
ZWFzbV9vcFByZURlY1Nsb3cpICJcbiIKLy8gbGluZSBudW1iZXIgODY3CiJcdG1vdmwgMCglZWRp
LCAlZWF4LCA4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciA4NjgKIlx0c3VibCAkMSwgJWVkeFxu
IgoiXHRqbyAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcFByZURlY1Nsb3cpICJc
biIKLy8gbGluZSBudW1iZXIgODY5CiJcdG1vdmwgJWVkeCwgMCglZWRpLCAlZWF4LCA4KVxuIgov
LyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkOCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAK
Ilx0am1wICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcFByZURl
Y1Nsb3cpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVzcClcbiIK
Ly8gbGluZSBudW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5lIG51bWJl
ciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfaGVscGVyX3ByZV9kZWMpICJcbiIK
Ly8gbGluZSBudW1iZXIgMjIyCiJcdG1vdmwgJWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAy
MjMKIlx0bW92bCAlZWR4LCAlZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQ4LCAl
ZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcobGxpbnRfb3BfcG9zdF9pbmMpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3Bf
cG9zdF9pbmMpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9wb3N0X2luYykgIjpcbiIKLy8g
bGluZSBudW1iZXIgODc5CiJcdG1vdmwgOCglZXNpKSwgJWVheFxuIgovLyBsaW5lIG51bWJlciA4
ODAKIlx0bW92bCA0KCVlc2kpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDg4MQoiXHRjbXBsICQt
MSwgNCglZWRpLCAlZWF4LCA4KVxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxp
bmVhc21fb3BQb3N0SW5jU2xvdykgIlxuIgovLyBsaW5lIG51bWJlciA4ODIKIlx0Y21wbCAlZWR4
LCAlZWF4XG4iCiJcdGplICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wUG9zdElu
Y0RvbmUpICJcbiIKLy8gbGluZSBudW1iZXIgODgzCiJcdG1vdmwgMCglZWRpLCAlZWF4LCA4KSwg
JWVjeFxuIgovLyBsaW5lIG51bWJlciA4ODQKIlx0bW92bCAlZWN4LCAlZWJ4XG4iCi8vIGxpbmUg
bnVtYmVyIDg4NQoiXHRhZGRsICQxLCAlZWJ4XG4iCiJcdGpvICIgTE9DQUxfTEFCRUxfU1RSSU5H
KF9vZmZsaW5lYXNtX29wUG9zdEluY1Nsb3cpICJcbiIKLy8gbGluZSBudW1iZXIgODg2CiJcdG1v
dmwgJC0xLCA0KCVlZGksICVlZHgsIDgpXG4iCi8vIGxpbmUgbnVtYmVyIDg4NwoiXHRtb3ZsICVl
Y3gsIDAoJWVkaSwgJWVkeCwgOClcbiIKLy8gbGluZSBudW1iZXIgODg4CiJcdG1vdmwgJWVieCwg
MCglZWRpLCAlZWF4LCA4KVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BQb3N0
SW5jRG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDEyLCAlZXNpXG4iCi8v
IGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9v
ZmZsaW5lYXNtX29wUG9zdEluY1Nsb3cpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoiXHRtb3Zs
ICVlZGksIDAoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwgNCglZXNw
KVxuIgovLyBsaW5lIG51bWJlciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfaGVs
cGVyX3Bvc3RfaW5jKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lc
biIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJl
ciAxNjkKIlx0YWRkbCAkMTIsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCgl
ZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9wb3N0X2RlYykgIlxuIgpI
SURFX1NZTUJPTChsbGludF9vcF9wb3N0X2RlYykgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29w
X3Bvc3RfZGVjKSAiOlxuIgovLyBsaW5lIG51bWJlciA4OTkKIlx0bW92bCA4KCVlc2kpLCAlZWF4
XG4iCi8vIGxpbmUgbnVtYmVyIDkwMAoiXHRtb3ZsIDQoJWVzaSksICVlZHhcbiIKLy8gbGluZSBu
dW1iZXIgOTAxCiJcdGNtcGwgJC0xLCA0KCVlZGksICVlYXgsIDgpXG4iCiJcdGpuZSAiIExPQ0FM
X0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcFBvc3REZWNTbG93KSAiXG4iCi8vIGxpbmUgbnVt
YmVyIDkwMgoiXHRjbXBsICVlZHgsICVlYXhcbiIKIlx0amUgIiBMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fb3BQb3N0RGVjRG9uZSkgIlxuIgovLyBsaW5lIG51bWJlciA5MDMKIlx0bW92
bCAwKCVlZGksICVlYXgsIDgpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDkwNAoiXHRtb3ZsICVl
Y3gsICVlYnhcbiIKLy8gbGluZSBudW1iZXIgOTA1CiJcdHN1YmwgJDEsICVlYnhcbiIKIlx0am8g
IiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BQb3N0RGVjU2xvdykgIlxuIgovLyBs
aW5lIG51bWJlciA5MDYKIlx0bW92bCAkLTEsIDQoJWVkaSwgJWVkeCwgOClcbiIKLy8gbGluZSBu
dW1iZXIgOTA3CiJcdG1vdmwgJWVjeCwgMCglZWRpLCAlZWR4LCA4KVxuIgovLyBsaW5lIG51bWJl
ciA5MDgKIlx0bW92bCAlZWJ4LCAwKCVlZGksICVlYXgsIDgpXG4iCkxPQ0FMX0xBQkVMX1NUUklO
Ryhfb2ZmbGluZWFzbV9vcFBvc3REZWNEb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0
YWRkbCAkMTIsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgpM
T0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BQb3N0RGVjU2xvdykgIjpcbiIKLy8gbGlu
ZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUK
Ilx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lN
Qk9MX1NUUklORyhsbGludF9oZWxwZXJfcG9zdF9kZWMpICJcbiIKLy8gbGluZSBudW1iZXIgMjIy
CiJcdG1vdmwgJWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAyMjMKIlx0bW92bCAlZWR4LCAl
ZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQxMiwgJWVzaVxuIgovLyBsaW5lIG51
bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50
X29wX3RvX2pzbnVtYmVyKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX3RvX2pzbnVtYmVyKSAi
XG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfdG9fanNudW1iZXIpICI6XG4iCi8vIGxpbmUgbnVt
YmVyIDkxOQoiXHRtb3ZsIDgoJWVzaSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgOTIwCiJcdG1v
dmwgNCglZXNpKSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzMDgKIlx0Y21wbCAkMTA3Mzc0MTgy
NCwgJWVheFxuIgoiXHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fOV9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkgIlxuIgovLyBsaW5lIG51bWJlciAzMDkKIlx0
bW92bCA0KCVlZGksICVlYXgsIDgpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMxMAoiXHRtb3Zs
IDAoJWVkaSwgJWVheCwgOCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzExCiJcdGptcCAiIExP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV85X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Rv
bmUpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzlfbG9hZENvbnN0YW50T3JW
YXJpYWJsZV9fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMxMwoiXHRtb3ZsIC04KCVl
ZGkpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMxNAoiXHRtb3ZsIDE0MTIoJWVieCksICVlYnhc
biIKLy8gbGluZSBudW1iZXIgMzE3CiJcdG1vdmwgNCglZWJ4LCAlZWF4LCA4KSwgJWVjeFxuIgov
LyBsaW5lIG51bWJlciAzMTgKIlx0bW92bCAwKCVlYngsICVlYXgsIDgpLCAlZWJ4XG4iCkxPQ0FM
X0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV85X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUp
ICI6XG4iCi8vIGxpbmUgbnVtYmVyIDkyMgoiXHRjbXBsICQtMSwgJWVjeFxuIgoiXHRqZSAiIExP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcFRvSnNudW1iZXJJc0ludCkgIlxuIgovLyBs
aW5lIG51bWJlciA5MjMKIlx0Y21wbCAkLTYsICVlY3hcbiIKIlx0amFlICIgTE9DQUxfTEFCRUxf
U1RSSU5HKF9vZmZsaW5lYXNtX29wVG9Kc251bWJlclNsb3cpICJcbiIKTE9DQUxfTEFCRUxfU1RS
SU5HKF9vZmZsaW5lYXNtX29wVG9Kc251bWJlcklzSW50KSAiOlxuIgovLyBsaW5lIG51bWJlciA5
MjUKIlx0bW92bCAlZWN4LCA0KCVlZGksICVlZHgsIDgpXG4iCi8vIGxpbmUgbnVtYmVyIDkyNgoi
XHRtb3ZsICVlYngsIDAoJWVkaSwgJWVkeCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFk
ZGwgJDEyLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKTE9D
QUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wVG9Kc251bWJlclNsb3cpICI6XG4iCi8vIGxp
bmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk1
CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTkKIlx0Y2FsbCAiIFNZ
TUJPTF9TVFJJTkcobGxpbnRfaGVscGVyX3RvX2pzbnVtYmVyKSAiXG4iCi8vIGxpbmUgbnVtYmVy
IDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVk
eCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMTIsICVlc2lcbiIKLy8gbGlu
ZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhs
bGludF9vcF9uZWdhdGUpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfbmVnYXRlKSAiXG4iClNZ
TUJPTF9TVFJJTkcobGxpbnRfb3BfbmVnYXRlKSAiOlxuIgovLyBsaW5lIG51bWJlciA5MzYKIlx0
bW92bCA4KCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDkzNwoiXHRtb3ZsIDQoJWVzaSks
ICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzA4CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlYXhcbiIK
Ilx0amdlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzEwX2xvYWRDb25zdGFudE9y
VmFyaWFibGVfX2NvbnN0YW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDMwOQoiXHRtb3ZsIDQoJWVk
aSwgJWVheCwgOCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzEwCiJcdG1vdmwgMCglZWRpLCAl
ZWF4LCA4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMTEKIlx0am1wICIgTE9DQUxfTEFCRUxf
U1RSSU5HKF9vZmZsaW5lYXNtXzEwX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpICJcbiIK
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzEwX2xvYWRDb25zdGFudE9yVmFyaWFibGVf
X2NvbnN0YW50KSAiOlxuIgovLyBsaW5lIG51bWJlciAzMTMKIlx0bW92bCAtOCglZWRpKSwgJWVj
eFxuIgovLyBsaW5lIG51bWJlciAzMTQKIlx0bW92bCAxNDEyKCVlY3gpLCAlZWN4XG4iCi8vIGxp
bmUgbnVtYmVyIDMxNwoiXHRtb3ZsIDQoJWVjeCwgJWVheCwgOCksICVlZHhcbiIKLy8gbGluZSBu
dW1iZXIgMzE4CiJcdG1vdmwgMCglZWN4LCAlZWF4LCA4KSwgJWVjeFxuIgpMT0NBTF9MQUJFTF9T
VFJJTkcoX29mZmxpbmVhc21fMTBfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkgIjpcbiIK
Ly8gbGluZSBudW1iZXIgOTM5CiJcdGNtcGwgJC0xLCAlZWR4XG4iCiJcdGpuZSAiIExPQ0FMX0xB
QkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcE5lZ2F0ZVNyY05vdEludCkgIlxuIgovLyBsaW5lIG51
bWJlciA5NDAKIlx0dGVzdGwgJDIxNDc0ODM2NDcsICVlY3hcbiIKIlx0anogIiBMT0NBTF9MQUJF
TF9TVFJJTkcoX29mZmxpbmVhc21fb3BOZWdhdGVTbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDk0
MQoiXHRuZWdsICVlY3hcbiIKLy8gbGluZSBudW1iZXIgOTQyCiJcdG1vdmwgJC0xLCA0KCVlZGks
ICVlYngsIDgpXG4iCi8vIGxpbmUgbnVtYmVyIDk0MwoiXHRtb3ZsICVlY3gsIDAoJWVkaSwgJWVi
eCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDEyLCAlZXNpXG4iCi8vIGxpbmUg
bnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5l
YXNtX29wTmVnYXRlU3JjTm90SW50KSAiOlxuIgovLyBsaW5lIG51bWJlciA5NDYKIlx0Y21wbCAk
LTcsICVlZHhcbiIKIlx0amEgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BOZWdh
dGVTbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDk0NwoiXHR4b3JsICQyMTQ3NDgzNjQ4LCAlZWR4
XG4iCi8vIGxpbmUgbnVtYmVyIDk0OAoiXHRtb3ZsICVlZHgsIDQoJWVkaSwgJWVieCwgOClcbiIK
Ly8gbGluZSBudW1iZXIgOTQ5CiJcdG1vdmwgJWVjeCwgMCglZWRpLCAlZWJ4LCA4KVxuIgovLyBs
aW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMTIsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJc
dGptcCAqMCglZXNpKVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BOZWdhdGVT
bG93KSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8v
IGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIg
MTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9uZWdhdGUpICJcbiIKLy8g
bGluZSBudW1iZXIgMjIyCiJcdG1vdmwgJWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAyMjMK
Ilx0bW92bCAlZWR4LCAlZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQxMiwgJWVz
aVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1C
T0xfU1RSSU5HKGxsaW50X29wX2FkZCkgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9hZGQpICJc
biIKU1lNQk9MX1NUUklORyhsbGludF9vcF9hZGQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDk1OAoi
XHRtb3ZsIDEyKCVlc2kpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDk1OQoiXHRtb3ZsIDgoJWVz
aSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzA4CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlY3hc
biIKIlx0amdlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5h
cnlPcEN1c3RvbVN0b3JlX18xMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkgIlxu
IgovLyBsaW5lIG51bWJlciAzMDkKIlx0bW92bCA0KCVlZGksICVlY3gsIDgpLCAlZWJ4XG4iCi8v
IGxpbmUgbnVtYmVyIDMxMAoiXHRtb3ZsIDAoJWVkaSwgJWVjeCwgOCksICVlZHhcbiIKLy8gbGlu
ZSBudW1iZXIgMzExCiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9iaW5h
cnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTFfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9u
ZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9w
Q3VzdG9tU3RvcmVfXzExX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KSAiOlxuIgov
LyBsaW5lIG51bWJlciAzMTMKIlx0bW92bCAtOCglZWRpKSwgJWVkeFxuIgovLyBsaW5lIG51bWJl
ciAzMTQKIlx0bW92bCAxNDEyKCVlZHgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMxNwoiXHRt
b3ZsIDQoJWVkeCwgJWVjeCwgOCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzE4CiJcdG1vdmwg
MCglZWR4LCAlZWN4LCA4KSwgJWVkeFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21f
YmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzExX2xvYWRDb25zdGFudE9yVmFyaWFibGVf
X2RvbmUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMyNAoiXHRjbXBsICQxMDczNzQxODI0LCAlZWF4
XG4iCiJcdGpnZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmlu
YXJ5T3BDdXN0b21TdG9yZV9fMTFfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50
KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDMyNQoiXHRtb3ZsIDQoJWVkaSwgJWVheCwgOCksICVlY3hc
biIKLy8gbGluZSBudW1iZXIgMzI2CiJcdG1vdmwgMCglZWRpLCAlZWF4LCA4KSwgJWVheFxuIgov
LyBsaW5lIG51bWJlciAzMjcKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNt
X2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX18xMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZ19fZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYmluYXJ5T3Bf
X2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzExX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25z
dGFudCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMzI5CiJcdG1vdmwgLTgoJWVkaSksICVlY3hcbiIK
Ly8gbGluZSBudW1iZXIgMzMwCiJcdG1vdmwgMTQxMiglZWN4KSwgJWVjeFxuIgovLyBsaW5lIG51
bWJlciAzMzMKIlx0c2FsbCAkMywgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMzQKIlx0YWRkbCAl
ZWF4LCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzNQoiXHRtb3ZsIDAoJWVjeCksICVlYXhcbiIK
Ly8gbGluZSBudW1iZXIgMzM2CiJcdG1vdmwgNCglZWN4KSwgJWVjeFxuIgpMT0NBTF9MQUJFTF9T
VFJJTkcoX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzExX2xvYWRD
b25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciA5NjIKIlx0
Y21wbCAkLTEsICVlY3hcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNt
X2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnQpICJcbiIKLy8gbGluZSBu
dW1iZXIgOTYzCiJcdGNtcGwgJC0xLCAlZWJ4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklO
Ryhfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AyTm90SW50KSAi
XG4iCi8vIGxpbmUgbnVtYmVyIDk2NAoiXHRtb3ZsIDQoJWVzaSksICVlY3hcbiIKLy8gbGluZSBu
dW1iZXIgMTAxMgoiXHRhZGRsICVlZHgsICVlYXhcbiIKIlx0am8gIiBMT0NBTF9MQUJFTF9TVFJJ
TkcoX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3cpICJcbiIK
Ly8gbGluZSBudW1iZXIgMTAwMwoiXHRtb3ZsICVlYngsIDQoJWVkaSwgJWVjeCwgOClcbiIKLy8g
bGluZSBudW1iZXIgMTAwNAoiXHRtb3ZsICVlYXgsIDAoJWVkaSwgJWVjeCwgOClcbiIKLy8gbGlu
ZSBudW1iZXIgMTY5CiJcdGFkZGwgJDIwLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRq
bXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9wX19i
aW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDk3MAoi
XHRjbXBsICQtNywgJWVjeFxuIgoiXHRqYSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFz
bV9iaW5hcnlPcF9fYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdykgIlxuIgovLyBsaW5lIG51bWJl
ciA5NzEKIlx0Y21wbCAkLTcsICVlYnhcbiIKIlx0amIgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29m
ZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludE9wMkRvdWJs
ZSkgIlxuIgovLyBsaW5lIG51bWJlciA5NzIKIlx0Y21wbCAkLTEsICVlYnhcbiIKIlx0am5lICIg
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0
b3JlX19zbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDk3MwoiXHRjdnRzaTJzZCAlZWR4LCAleG1t
MVxuIgovLyBsaW5lIG51bWJlciA5NzQKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZs
aW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnRSZWFkeSkgIlxu
IgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9t
U3RvcmVfX29wMU5vdEludE9wMkRvdWJsZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgOTc2CiJcdG1v
dmQgJWVkeCwgJXhtbTFcbiIKIlx0bW92ZCAlZWJ4LCAleG1tN1xuIgoiXHRwc2xscSAkMzIsICV4
bW03XG4iCiJcdHBvciAleG1tNywgJXhtbTFcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5l
YXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnRSZWFkeSkgIjpcbiIK
Ly8gbGluZSBudW1iZXIgOTc4CiJcdG1vdmwgNCglZXNpKSwgJWVkeFxuIgovLyBsaW5lIG51bWJl
ciA5NzkKIlx0bW92ZCAlZWF4LCAleG1tMFxuIgoiXHRtb3ZkICVlY3gsICV4bW03XG4iCiJcdHBz
bGxxICQzMiwgJXhtbTdcbiIKIlx0cG9yICV4bW03LCAleG1tMFxuIgovLyBsaW5lIG51bWJlciAx
MDEzCiJcdGFkZHNkICV4bW0xLCAleG1tMFxuIgovLyBsaW5lIG51bWJlciA5ODEKIlx0bW92c2Qg
JXhtbTAsIDAoJWVkaSwgJWVkeCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDIw
LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDJO
b3RJbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDk4NgoiXHRtb3ZsIDQoJWVzaSksICVlY3hcbiIK
Ly8gbGluZSBudW1iZXIgOTg3CiJcdGNtcGwgJC03LCAlZWJ4XG4iCiJcdGphICIgTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93
KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDk4OAoiXHRjdnRzaTJzZCAlZWF4LCAleG1tMFxuIgovLyBs
aW5lIG51bWJlciA5ODkKIlx0bW92ZCAlZWR4LCAleG1tMVxuIgoiXHRtb3ZkICVlYngsICV4bW03
XG4iCiJcdHBzbGxxICQzMiwgJXhtbTdcbiIKIlx0cG9yICV4bW03LCAleG1tMVxuIgovLyBsaW5l
IG51bWJlciAxMDEzCiJcdGFkZHNkICV4bW0xLCAleG1tMFxuIgovLyBsaW5lIG51bWJlciA5OTEK
Ilx0bW92c2QgJXhtbTAsIDAoJWVkaSwgJWVjeCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJc
dGFkZGwgJDIwLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIK
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1c3RvbVN0
b3JlX19zbG93KSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3Ap
XG4iCi8vIGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBu
dW1iZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9hZGQpICJcbiIK
Ly8gbGluZSBudW1iZXIgMjIyCiJcdG1vdmwgJWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAy
MjMKIlx0bW92bCAlZWR4LCAlZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQyMCwg
JWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBT
WU1CT0xfU1RSSU5HKGxsaW50X29wX211bCkgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9tdWwp
ICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9tdWwpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDk1
OAoiXHRtb3ZsIDEyKCVlc2kpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDk1OQoiXHRtb3ZsIDgo
JWVzaSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzA4CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVl
Y3hcbiIKIlx0amdlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9wQ3Vz
dG9tU3RvcmVfXzEyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KSAiXG4iCi8vIGxp
bmUgbnVtYmVyIDMwOQoiXHRtb3ZsIDQoJWVkaSwgJWVjeCwgOCksICVlYnhcbiIKLy8gbGluZSBu
dW1iZXIgMzEwCiJcdG1vdmwgMCglZWRpLCAlZWN4LCA4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJl
ciAzMTEKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9wQ3Vz
dG9tU3RvcmVfXzEyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpICJcbiIKTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzEyX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2NvbnN0YW50KSAiOlxuIgovLyBsaW5lIG51bWJlciAzMTMKIlx0bW92bCAt
OCglZWRpKSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzMTQKIlx0bW92bCAxNDEyKCVlZHgpLCAl
ZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMxNwoiXHRtb3ZsIDQoJWVkeCwgJWVjeCwgOCksICVlYnhc
biIKLy8gbGluZSBudW1iZXIgMzE4CiJcdG1vdmwgMCglZWR4LCAlZWN4LCA4KSwgJWVkeFxuIgpM
T0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTJfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMzI0CiJcdGNt
cGwgJDEwNzM3NDE4MjQsICVlYXhcbiIKIlx0amdlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZs
aW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzEyX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
X19jb25zdGFudCkgIlxuIgovLyBsaW5lIG51bWJlciAzMjUKIlx0bW92bCA0KCVlZGksICVlYXgs
IDgpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMyNgoiXHRtb3ZsIDAoJWVkaSwgJWVheCwgOCks
ICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzI3CiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhf
b2ZmbGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3JlX18xMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZ19fZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYmluYXJ5T3BD
dXN0b21TdG9yZV9fMTJfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KSAiOlxu
IgovLyBsaW5lIG51bWJlciAzMjkKIlx0bW92bCAtOCglZWRpKSwgJWVjeFxuIgovLyBsaW5lIG51
bWJlciAzMzAKIlx0bW92bCAxNDEyKCVlY3gpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzMwoi
XHRzYWxsICQzLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDMzNAoiXHRhZGRsICVlYXgsICVlY3hc
biIKLy8gbGluZSBudW1iZXIgMzM1CiJcdG1vdmwgMCglZWN4KSwgJWVheFxuIgovLyBsaW5lIG51
bWJlciAzMzYKIlx0bW92bCA0KCVlY3gpLCAlZWN4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2Zm
bGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3JlX18xMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Z19fZG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgOTYyCiJcdGNtcGwgJC0xLCAlZWN4XG4iCiJc
dGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8xMl9iaW5hcnlPcEN1c3RvbVN0
b3JlX19vcDFOb3RJbnQpICJcbiIKLy8gbGluZSBudW1iZXIgOTYzCiJcdGNtcGwgJC0xLCAlZWJ4
XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8xMl9iaW5hcnlPcEN1
c3RvbVN0b3JlX19vcDJOb3RJbnQpICJcbiIKLy8gbGluZSBudW1iZXIgOTY0CiJcdG1vdmwgNCgl
ZXNpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAxMDIyCiJcdG1vdmwgJWVheCwgJWVieFxuIgov
LyBsaW5lIG51bWJlciAxMDIzCiJcdGltdWxsICVlZHgsICVlYnhcbiIKIlx0am8gIiBMT0NBTF9M
QUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMTJfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdykgIlxu
IgovLyBsaW5lIG51bWJlciAxMDI0CiJcdHRlc3RsICVlYngsICVlYnhcbiIKIlx0am56ICIgTE9D
QUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX2ludGVnZXJP
cGVyYXRpb25BbmRTdG9yZV9fZG9uZSkgIlxuIgovLyBsaW5lIG51bWJlciAxMDI1CiJcdGNtcGwg
JDAsICVlZHhcbiIKIlx0amwgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMTJfYmlu
YXJ5T3BDdXN0b21TdG9yZV9fc2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxMDI2CiJcdGNtcGwg
JDAsICVlYXhcbiIKIlx0amwgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMTJfYmlu
YXJ5T3BDdXN0b21TdG9yZV9fc2xvdykgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVh
c21fYmluYXJ5T3BDdXN0b21TdG9yZV9faW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlX19kb25lKSAi
OlxuIgovLyBsaW5lIG51bWJlciAxMDI4CiJcdG1vdmwgJC0xLCA0KCVlZGksICVlY3gsIDgpXG4i
Ci8vIGxpbmUgbnVtYmVyIDEwMjkKIlx0bW92bCAlZWJ4LCAwKCVlZGksICVlY3gsIDgpXG4iCi8v
IGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQyMCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAK
Ilx0am1wICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8xMl9iaW5h
cnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDk3MAoiXHRj
bXBsICQtNywgJWVjeFxuIgoiXHRqYSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8x
Ml9iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDk3MQoiXHRj
bXBsICQtNywgJWVieFxuIgoiXHRqYiAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8x
Ml9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnRPcDJEb3VibGUpICJcbiIKLy8gbGluZSBu
dW1iZXIgOTcyCiJcdGNtcGwgJC0xLCAlZWJ4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklO
Ryhfb2ZmbGluZWFzbV8xMl9iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93KSAiXG4iCi8vIGxpbmUg
bnVtYmVyIDk3MwoiXHRjdnRzaTJzZCAlZWR4LCAleG1tMVxuIgovLyBsaW5lIG51bWJlciA5NzQK
Ilx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzEyX2JpbmFyeU9wQ3VzdG9t
U3RvcmVfX29wMU5vdEludFJlYWR5KSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFz
bV8xMl9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnRPcDJEb3VibGUpICI6XG4iCi8vIGxp
bmUgbnVtYmVyIDk3NgoiXHRtb3ZkICVlZHgsICV4bW0xXG4iCiJcdG1vdmQgJWVieCwgJXhtbTdc
biIKIlx0cHNsbHEgJDMyLCAleG1tN1xuIgoiXHRwb3IgJXhtbTcsICV4bW0xXG4iCkxPQ0FMX0xB
QkVMX1NUUklORyhfb2ZmbGluZWFzbV8xMl9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnRS
ZWFkeSkgIjpcbiIKLy8gbGluZSBudW1iZXIgOTc4CiJcdG1vdmwgNCglZXNpKSwgJWVkeFxuIgov
LyBsaW5lIG51bWJlciA5NzkKIlx0bW92ZCAlZWF4LCAleG1tMFxuIgoiXHRtb3ZkICVlY3gsICV4
bW03XG4iCiJcdHBzbGxxICQzMiwgJXhtbTdcbiIKIlx0cG9yICV4bW03LCAleG1tMFxuIgovLyBs
aW5lIG51bWJlciAxMDMxCiJcdG11bHNkICV4bW0xLCAleG1tMFxuIgovLyBsaW5lIG51bWJlciA5
ODEKIlx0bW92c2QgJXhtbTAsIDAoJWVkaSwgJWVkeCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTY5
CiJcdGFkZGwgJDIwLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlc
biIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzEyX2JpbmFyeU9wQ3VzdG9tU3RvcmVf
X29wMk5vdEludCkgIjpcbiIKLy8gbGluZSBudW1iZXIgOTg2CiJcdG1vdmwgNCglZXNpKSwgJWVj
eFxuIgovLyBsaW5lIG51bWJlciA5ODcKIlx0Y21wbCAkLTcsICVlYnhcbiIKIlx0amEgIiBMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMTJfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdykg
IlxuIgovLyBsaW5lIG51bWJlciA5ODgKIlx0Y3Z0c2kyc2QgJWVheCwgJXhtbTBcbiIKLy8gbGlu
ZSBudW1iZXIgOTg5CiJcdG1vdmQgJWVkeCwgJXhtbTFcbiIKIlx0bW92ZCAlZWJ4LCAleG1tN1xu
IgoiXHRwc2xscSAkMzIsICV4bW03XG4iCiJcdHBvciAleG1tNywgJXhtbTFcbiIKLy8gbGluZSBu
dW1iZXIgMTAzMQoiXHRtdWxzZCAleG1tMSwgJXhtbTBcbiIKLy8gbGluZSBudW1iZXIgOTkxCiJc
dG1vdnNkICV4bW0wLCAwKCVlZGksICVlY3gsIDgpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRh
ZGRsICQyMCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCkxP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8xMl9iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93
KSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxp
bmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5
CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9tdWwpICJcbiIKLy8gbGluZSBu
dW1iZXIgMjIyCiJcdG1vdmwgJWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAyMjMKIlx0bW92
bCAlZWR4LCAlZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQyMCwgJWVzaVxuIgov
LyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RS
SU5HKGxsaW50X29wX3N1YikgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9zdWIpICJcbiIKU1lN
Qk9MX1NUUklORyhsbGludF9vcF9zdWIpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDk1OAoiXHRtb3Zs
IDEyKCVlc2kpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDk1OQoiXHRtb3ZsIDgoJWVzaSksICVl
YXhcbiIKLy8gbGluZSBudW1iZXIgMzA4CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlY3hcbiIKIlx0
amdlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9wX19iaW5hcnlPcEN1
c3RvbVN0b3JlX18xM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkgIlxuIgovLyBs
aW5lIG51bWJlciAzMDkKIlx0bW92bCA0KCVlZGksICVlY3gsIDgpLCAlZWJ4XG4iCi8vIGxpbmUg
bnVtYmVyIDMxMAoiXHRtb3ZsIDAoJWVkaSwgJWVjeCwgOCksICVlZHhcbiIKLy8gbGluZSBudW1i
ZXIgMzExCiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9iaW5hcnlPcF9f
YmluYXJ5T3BDdXN0b21TdG9yZV9fMTNfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkgIlxu
IgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9t
U3RvcmVfXzEzX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KSAiOlxuIgovLyBsaW5l
IG51bWJlciAzMTMKIlx0bW92bCAtOCglZWRpKSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzMTQK
Ilx0bW92bCAxNDEyKCVlZHgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMxNwoiXHRtb3ZsIDQo
JWVkeCwgJWVjeCwgOCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzE4CiJcdG1vdmwgMCglZWR4
LCAlZWN4LCA4KSwgJWVkeFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYmluYXJ5
T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzEzX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUp
ICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMyNAoiXHRjbXBsICQxMDczNzQxODI0LCAlZWF4XG4iCiJc
dGpnZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9iaW5hcnlPcF9fYmluYXJ5T3BD
dXN0b21TdG9yZV9fMTNfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KSAiXG4i
Ci8vIGxpbmUgbnVtYmVyIDMyNQoiXHRtb3ZsIDQoJWVkaSwgJWVheCwgOCksICVlY3hcbiIKLy8g
bGluZSBudW1iZXIgMzI2CiJcdG1vdmwgMCglZWRpLCAlZWF4LCA4KSwgJWVheFxuIgovLyBsaW5l
IG51bWJlciAzMjcKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFy
eU9wX19iaW5hcnlPcEN1c3RvbVN0b3JlX18xM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19f
ZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFy
eU9wQ3VzdG9tU3RvcmVfXzEzX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkg
IjpcbiIKLy8gbGluZSBudW1iZXIgMzI5CiJcdG1vdmwgLTgoJWVkaSksICVlY3hcbiIKLy8gbGlu
ZSBudW1iZXIgMzMwCiJcdG1vdmwgMTQxMiglZWN4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAz
MzMKIlx0c2FsbCAkMywgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMzQKIlx0YWRkbCAlZWF4LCAl
ZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzNQoiXHRtb3ZsIDAoJWVjeCksICVlYXhcbiIKLy8gbGlu
ZSBudW1iZXIgMzM2CiJcdG1vdmwgNCglZWN4KSwgJWVjeFxuIgpMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fYmluYXJ5T3BfX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzEzX2xvYWRDb25zdGFu
dE9yVmFyaWFibGUyUmVnX19kb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciA5NjIKIlx0Y21wbCAk
LTEsICVlY3hcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFy
eU9wX18xM19iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnQpICJcbiIKLy8gbGluZSBudW1i
ZXIgOTYzCiJcdGNtcGwgJC0xLCAlZWJ4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhf
b2ZmbGluZWFzbV9iaW5hcnlPcF9fMTNfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AyTm90SW50KSAi
XG4iCi8vIGxpbmUgbnVtYmVyIDk2NAoiXHRtb3ZsIDQoJWVzaSksICVlY3hcbiIKLy8gbGluZSBu
dW1iZXIgMTAzOAoiXHRzdWJsICVlZHgsICVlYXhcbiIKIlx0am8gIiBMT0NBTF9MQUJFTF9TVFJJ
TkcoX29mZmxpbmVhc21fYmluYXJ5T3BfXzEzX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3cpICJc
biIKLy8gbGluZSBudW1iZXIgMTAwMwoiXHRtb3ZsICVlYngsIDQoJWVkaSwgJWVjeCwgOClcbiIK
Ly8gbGluZSBudW1iZXIgMTAwNAoiXHRtb3ZsICVlYXgsIDAoJWVkaSwgJWVjeCwgOClcbiIKLy8g
bGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDIwLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoi
XHRqbXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9w
X18xM19iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVy
IDk3MAoiXHRjbXBsICQtNywgJWVjeFxuIgoiXHRqYSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2Zm
bGluZWFzbV9iaW5hcnlPcF9fMTNfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdykgIlxuIgovLyBs
aW5lIG51bWJlciA5NzEKIlx0Y21wbCAkLTcsICVlYnhcbiIKIlx0amIgIiBMT0NBTF9MQUJFTF9T
VFJJTkcoX29mZmxpbmVhc21fYmluYXJ5T3BfXzEzX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5v
dEludE9wMkRvdWJsZSkgIlxuIgovLyBsaW5lIG51bWJlciA5NzIKIlx0Y21wbCAkLTEsICVlYnhc
biIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9wX18xM19i
aW5hcnlPcEN1c3RvbVN0b3JlX19zbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDk3MwoiXHRjdnRz
aTJzZCAlZWR4LCAleG1tMVxuIgovLyBsaW5lIG51bWJlciA5NzQKIlx0am1wICIgTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9wX18xM19iaW5hcnlPcEN1c3RvbVN0b3JlX19v
cDFOb3RJbnRSZWFkeSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYmluYXJ5
T3BfXzEzX2JpbmFyeU9wQ3VzdG9tU3RvcmVfX29wMU5vdEludE9wMkRvdWJsZSkgIjpcbiIKLy8g
bGluZSBudW1iZXIgOTc2CiJcdG1vdmQgJWVkeCwgJXhtbTFcbiIKIlx0bW92ZCAlZWJ4LCAleG1t
N1xuIgoiXHRwc2xscSAkMzIsICV4bW03XG4iCiJcdHBvciAleG1tNywgJXhtbTFcbiIKTE9DQUxf
TEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9wX18xM19iaW5hcnlPcEN1c3RvbVN0b3Jl
X19vcDFOb3RJbnRSZWFkeSkgIjpcbiIKLy8gbGluZSBudW1iZXIgOTc4CiJcdG1vdmwgNCglZXNp
KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciA5NzkKIlx0bW92ZCAlZWF4LCAleG1tMFxuIgoiXHRt
b3ZkICVlY3gsICV4bW03XG4iCiJcdHBzbGxxICQzMiwgJXhtbTdcbiIKIlx0cG9yICV4bW03LCAl
eG1tMFxuIgovLyBsaW5lIG51bWJlciAxMDM5CiJcdHN1YnNkICV4bW0xLCAleG1tMFxuIgovLyBs
aW5lIG51bWJlciA5ODEKIlx0bW92c2QgJXhtbTAsIDAoJWVkaSwgJWVkeCwgOClcbiIKLy8gbGlu
ZSBudW1iZXIgMTY5CiJcdGFkZGwgJDIwLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRq
bXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9wX18x
M19iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDJOb3RJbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDk4
NgoiXHRtb3ZsIDQoJWVzaSksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgOTg3CiJcdGNtcGwgJC03
LCAlZWJ4XG4iCiJcdGphICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9w
X18xM19iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDk4OAoi
XHRjdnRzaTJzZCAlZWF4LCAleG1tMFxuIgovLyBsaW5lIG51bWJlciA5ODkKIlx0bW92ZCAlZWR4
LCAleG1tMVxuIgoiXHRtb3ZkICVlYngsICV4bW03XG4iCiJcdHBzbGxxICQzMiwgJXhtbTdcbiIK
Ilx0cG9yICV4bW03LCAleG1tMVxuIgovLyBsaW5lIG51bWJlciAxMDM5CiJcdHN1YnNkICV4bW0x
LCAleG1tMFxuIgovLyBsaW5lIG51bWJlciA5OTEKIlx0bW92c2QgJXhtbTAsIDAoJWVkaSwgJWVj
eCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDIwLCAlZXNpXG4iCi8vIGxpbmUg
bnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5l
YXNtX2JpbmFyeU9wX18xM19iaW5hcnlPcEN1c3RvbVN0b3JlX19zbG93KSAiOlxuIgovLyBsaW5l
IG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5NQoi
XHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5CiJcdGNhbGwgIiBTWU1C
T0xfU1RSSU5HKGxsaW50X2hlbHBlcl9zdWIpICJcbiIKLy8gbGluZSBudW1iZXIgMjIyCiJcdG1v
dmwgJWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAyMjMKIlx0bW92bCAlZWR4LCAlZWRpXG4i
Ci8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQyMCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAx
NzAKIlx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2Rp
dikgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9kaXYpICJcbiIKU1lNQk9MX1NUUklORyhsbGlu
dF9vcF9kaXYpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDk1OAoiXHRtb3ZsIDEyKCVlc2kpLCAlZWN4
XG4iCi8vIGxpbmUgbnVtYmVyIDk1OQoiXHRtb3ZsIDgoJWVzaSksICVlYXhcbiIKLy8gbGluZSBu
dW1iZXIgMzA4CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlY3hcbiIKIlx0amdlICIgTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzE0X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2NvbnN0YW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDMwOQoiXHRtb3ZsIDQo
JWVkaSwgJWVjeCwgOCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzEwCiJcdG1vdmwgMCglZWRp
LCAlZWN4LCA4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzMTEKIlx0am1wICIgTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3RvcmVfXzE0X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2RvbmUpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2Jp
bmFyeU9wQ3VzdG9tU3RvcmVfXzE0X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KSAi
OlxuIgovLyBsaW5lIG51bWJlciAzMTMKIlx0bW92bCAtOCglZWRpKSwgJWVkeFxuIgovLyBsaW5l
IG51bWJlciAzMTQKIlx0bW92bCAxNDEyKCVlZHgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMx
NwoiXHRtb3ZsIDQoJWVkeCwgJWVjeCwgOCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzE4CiJc
dG1vdmwgMCglZWR4LCAlZWN4LCA4KSwgJWVkeFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxp
bmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9u
ZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMzI0CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlYXhcbiIK
Ilx0amdlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpbmFyeU9wQ3VzdG9tU3Rv
cmVfXzE0X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkgIlxuIgovLyBsaW5l
IG51bWJlciAzMjUKIlx0bW92bCA0KCVlZGksICVlYXgsIDgpLCAlZWN4XG4iCi8vIGxpbmUgbnVt
YmVyIDMyNgoiXHRtb3ZsIDAoJWVkaSwgJWVheCwgOCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIg
MzI3CiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9iaW5hcnlPcEN1c3Rv
bVN0b3JlX18xNF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSkgIlxuIgpMT0NBTF9M
QUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9fMTRfbG9hZENvbnN0
YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KSAiOlxuIgovLyBsaW5lIG51bWJlciAzMjkKIlx0
bW92bCAtOCglZWRpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMzAKIlx0bW92bCAxNDEyKCVl
Y3gpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzMwoiXHRzYWxsICQzLCAlZWF4XG4iCi8vIGxp
bmUgbnVtYmVyIDMzNAoiXHRhZGRsICVlYXgsICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMzM1CiJc
dG1vdmwgMCglZWN4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMzYKIlx0bW92bCA0KCVlY3gp
LCAlZWN4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0
b3JlX18xNF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSkgIjpcbiIKLy8gbGluZSBu
dW1iZXIgOTYyCiJcdGNtcGwgJC0xLCAlZWN4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklO
Ryhfb2ZmbGluZWFzbV8xNF9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDFOb3RJbnQpICJcbiIKLy8g
bGluZSBudW1iZXIgOTYzCiJcdGNtcGwgJC0xLCAlZWJ4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV8xNF9iaW5hcnlPcEN1c3RvbVN0b3JlX19vcDJOb3RJbnQpICJc
biIKLy8gbGluZSBudW1iZXIgOTY0CiJcdG1vdmwgNCglZXNpKSwgJWVjeFxuIgovLyBsaW5lIG51
bWJlciAxMDQ3CiJcdGN2dHNpMnNkICVlZHgsICV4bW0wXG4iCi8vIGxpbmUgbnVtYmVyIDEwNDgK
Ilx0Y3Z0c2kyc2QgJWVheCwgJXhtbTFcbiIKLy8gbGluZSBudW1iZXIgMTA0OQoiXHRkaXZzZCAl
eG1tMCwgJXhtbTFcbiIKLy8gbGluZSBudW1iZXIgMTA1MAoiXHRjdnR0c2Qyc2kgJXhtbTEsICVl
YXhcbiIKIlx0dGVzdGwgJWVheCwgJWVheFxuIgoiXHRqZSAiIExPQ0FMX0xBQkVMX1NUUklORyhf
b2ZmbGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3JlX19pbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmVf
X25vdEludCkgIlxuIgoiXHRjdnRzaTJzZCAlZWF4LCAleG1tN1xuIgoiXHR1Y29taXNkICV4bW0x
LCAleG1tN1xuIgoiXHRqcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9iaW5hcnlP
cEN1c3RvbVN0b3JlX19pbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmVfX25vdEludCkgIlxuIgoiXHRq
bmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9f
aW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlX19ub3RJbnQpICJcbiIKLy8gbGluZSBudW1iZXIgMTA1
MQoiXHRtb3ZsICVlYngsIDQoJWVkaSwgJWVjeCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTA1Mgoi
XHRtb3ZsICVlYXgsIDAoJWVkaSwgJWVjeCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTA1MwoiXHRq
bXAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYmluYXJ5T3BDdXN0b21TdG9yZV9f
MTRfaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlX19kb25lKSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklO
Ryhfb2ZmbGluZWFzbV9iaW5hcnlPcEN1c3RvbVN0b3JlX19pbnRlZ2VyT3BlcmF0aW9uQW5kU3Rv
cmVfX25vdEludCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTA1NQoiXHRtb3ZzZCAleG1tMSwgMCgl
ZWRpLCAlZWN4LCA4KVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYmluYXJ5T3BD
dXN0b21TdG9yZV9fMTRfaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlX19kb25lKSAiOlxuIgovLyBs
aW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMjAsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJc
dGptcCAqMCglZXNpKVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMTRfYmluYXJ5
T3BDdXN0b21TdG9yZV9fb3AxTm90SW50KSAiOlxuIgovLyBsaW5lIG51bWJlciA5NzAKIlx0Y21w
bCAkLTcsICVlY3hcbiIKIlx0amEgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMTRf
YmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdykgIlxuIgovLyBsaW5lIG51bWJlciA5NzEKIlx0Y21w
bCAkLTcsICVlYnhcbiIKIlx0amIgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMTRf
YmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50T3AyRG91YmxlKSAiXG4iCi8vIGxpbmUgbnVt
YmVyIDk3MgoiXHRjbXBsICQtMSwgJWVieFxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fMTRfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdykgIlxuIgovLyBsaW5lIG51
bWJlciA5NzMKIlx0Y3Z0c2kyc2QgJWVkeCwgJXhtbTFcbiIKLy8gbGluZSBudW1iZXIgOTc0CiJc
dGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8xNF9iaW5hcnlPcEN1c3RvbVN0
b3JlX19vcDFOb3RJbnRSZWFkeSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21f
MTRfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50T3AyRG91YmxlKSAiOlxuIgovLyBsaW5l
IG51bWJlciA5NzYKIlx0bW92ZCAlZWR4LCAleG1tMVxuIgoiXHRtb3ZkICVlYngsICV4bW03XG4i
CiJcdHBzbGxxICQzMiwgJXhtbTdcbiIKIlx0cG9yICV4bW03LCAleG1tMVxuIgpMT0NBTF9MQUJF
TF9TVFJJTkcoX29mZmxpbmVhc21fMTRfYmluYXJ5T3BDdXN0b21TdG9yZV9fb3AxTm90SW50UmVh
ZHkpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDk3OAoiXHRtb3ZsIDQoJWVzaSksICVlZHhcbiIKLy8g
bGluZSBudW1iZXIgOTc5CiJcdG1vdmQgJWVheCwgJXhtbTBcbiIKIlx0bW92ZCAlZWN4LCAleG1t
N1xuIgoiXHRwc2xscSAkMzIsICV4bW03XG4iCiJcdHBvciAleG1tNywgJXhtbTBcbiIKLy8gbGlu
ZSBudW1iZXIgMTA1OAoiXHRkaXZzZCAleG1tMSwgJXhtbTBcbiIKLy8gbGluZSBudW1iZXIgOTgx
CiJcdG1vdnNkICV4bW0wLCAwKCVlZGksICVlZHgsIDgpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoi
XHRhZGRsICQyMCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4i
CkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8xNF9iaW5hcnlPcEN1c3RvbVN0b3JlX19v
cDJOb3RJbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDk4NgoiXHRtb3ZsIDQoJWVzaSksICVlY3hc
biIKLy8gbGluZSBudW1iZXIgOTg3CiJcdGNtcGwgJC03LCAlZWJ4XG4iCiJcdGphICIgTE9DQUxf
TEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzE0X2JpbmFyeU9wQ3VzdG9tU3RvcmVfX3Nsb3cpICJc
biIKLy8gbGluZSBudW1iZXIgOTg4CiJcdGN2dHNpMnNkICVlYXgsICV4bW0wXG4iCi8vIGxpbmUg
bnVtYmVyIDk4OQoiXHRtb3ZkICVlZHgsICV4bW0xXG4iCiJcdG1vdmQgJWVieCwgJXhtbTdcbiIK
Ilx0cHNsbHEgJDMyLCAleG1tN1xuIgoiXHRwb3IgJXhtbTcsICV4bW0xXG4iCi8vIGxpbmUgbnVt
YmVyIDEwNTgKIlx0ZGl2c2QgJXhtbTEsICV4bW0wXG4iCi8vIGxpbmUgbnVtYmVyIDk5MQoiXHRt
b3ZzZCAleG1tMCwgMCglZWRpLCAlZWN4LCA4KVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRk
bCAkMjAsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgpMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMTRfYmluYXJ5T3BDdXN0b21TdG9yZV9fc2xvdykg
IjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5l
IG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoi
XHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfZGl2KSAiXG4iCi8vIGxpbmUgbnVt
YmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwg
JWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMjAsICVlc2lcbiIKLy8g
bGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklO
RyhsbGludF9vcF9tb2QpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfbW9kKSAiXG4iClNZTUJP
TF9TVFJJTkcobGxpbnRfb3BfbW9kKSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAl
ZWRpLCAwKCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClc
biIKLy8gbGluZSBudW1iZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBl
cl9tb2QpICJcbiIKLy8gbGluZSBudW1iZXIgMjIyCiJcdG1vdmwgJWVheCwgJWVzaVxuIgovLyBs
aW5lIG51bWJlciAyMjMKIlx0bW92bCAlZWR4LCAlZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoi
XHRhZGRsICQxNiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4i
CiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2xzaGlmdCkgIlxuIgpISURFX1NZTUJP
TChsbGludF9vcF9sc2hpZnQpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9sc2hpZnQpICI6
XG4iCi8vIGxpbmUgbnVtYmVyIDEwNjkKIlx0bW92bCAxMiglZXNpKSwgJWVjeFxuIgovLyBsaW5l
IG51bWJlciAxMDcwCiJcdG1vdmwgOCglZXNpKSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMDgK
Ilx0Y21wbCAkMTA3Mzc0MTgyNCwgJWVjeFxuIgoiXHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fYml0T3BfXzE1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KSAi
XG4iCi8vIGxpbmUgbnVtYmVyIDMwOQoiXHRtb3ZsIDQoJWVkaSwgJWVjeCwgOCksICVlYnhcbiIK
Ly8gbGluZSBudW1iZXIgMzEwCiJcdG1vdmwgMCglZWRpLCAlZWN4LCA4KSwgJWVkeFxuIgovLyBs
aW5lIG51bWJlciAzMTEKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2Jp
dE9wX18xNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKSAiXG4iCkxPQ0FMX0xBQkVMX1NU
UklORyhfb2ZmbGluZWFzbV9iaXRPcF9fMTVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3Rh
bnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMxMwoiXHRtb3ZsIC04KCVlZGkpLCAlZWR4XG4iCi8v
IGxpbmUgbnVtYmVyIDMxNAoiXHRtb3ZsIDE0MTIoJWVkeCksICVlZHhcbiIKLy8gbGluZSBudW1i
ZXIgMzE3CiJcdG1vdmwgNCglZWR4LCAlZWN4LCA4KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAz
MTgKIlx0bW92bCAwKCVlZHgsICVlY3gsIDgpLCAlZWR4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhf
b2ZmbGluZWFzbV9iaXRPcF9fMTVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkgIjpcbiIK
Ly8gbGluZSBudW1iZXIgMzI0CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlYXhcbiIKIlx0amdlICIg
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpdE9wX18xNV9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZ19fY29uc3RhbnQpICJcbiIKLy8gbGluZSBudW1iZXIgMzI1CiJcdG1vdmwgNCgl
ZWRpLCAlZWF4LCA4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMjYKIlx0bW92bCAwKCVlZGks
ICVlYXgsIDgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDMyNwoiXHRqbXAgIiBMT0NBTF9MQUJF
TF9TVFJJTkcoX29mZmxpbmVhc21fYml0T3BfXzE1X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
X19kb25lKSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9iaXRPcF9fMTVfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KSAiOlxuIgovLyBsaW5lIG51bWJlciAz
MjkKIlx0bW92bCAtOCglZWRpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMzAKIlx0bW92bCAx
NDEyKCVlY3gpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzMwoiXHRzYWxsICQzLCAlZWF4XG4i
Ci8vIGxpbmUgbnVtYmVyIDMzNAoiXHRhZGRsICVlYXgsICVlY3hcbiIKLy8gbGluZSBudW1iZXIg
MzM1CiJcdG1vdmwgMCglZWN4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMzYKIlx0bW92bCA0
KCVlY3gpLCAlZWN4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9iaXRPcF9fMTVf
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDEw
NzMKIlx0Y21wbCAkLTEsICVlYnhcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZs
aW5lYXNtX2JpdE9wX19zbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDEwNzQKIlx0Y21wbCAkLTEs
ICVlY3hcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpdE9wX19z
bG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDEwNzUKIlx0bW92bCA0KCVlc2kpLCAlZWN4XG4iCi8v
IGxpbmUgbnVtYmVyIDEwODkKIlx0eGNoZ2wgJWVkeCwgJWVjeFxuIgoiXHRzYWxsICVjbCwgJWVh
eFxuIgoiXHR4Y2hnbCAlZWR4LCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDEwNzcKIlx0bW92bCAl
ZWJ4LCA0KCVlZGksICVlY3gsIDgpXG4iCi8vIGxpbmUgbnVtYmVyIDEwNzgKIlx0bW92bCAlZWF4
LCAwKCVlZGksICVlY3gsIDgpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQxNiwgJWVz
aVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVMX1NU
UklORyhfb2ZmbGluZWFzbV9iaXRPcF9fc2xvdykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJc
dG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0
KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGlu
dF9oZWxwZXJfbHNoaWZ0KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVl
c2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51
bWJlciAxNjkKIlx0YWRkbCAkMTYsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAq
MCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9yc2hpZnQpICJcbiIK
SElERV9TWU1CT0wobGxpbnRfb3BfcnNoaWZ0KSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3Bf
cnNoaWZ0KSAiOlxuIgovLyBsaW5lIG51bWJlciAxMDY5CiJcdG1vdmwgMTIoJWVzaSksICVlY3hc
biIKLy8gbGluZSBudW1iZXIgMTA3MAoiXHRtb3ZsIDgoJWVzaSksICVlYXhcbiIKLy8gbGluZSBu
dW1iZXIgMzA4CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlY3hcbiIKIlx0amdlICIgTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpdE9wX18xNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19j
b25zdGFudCkgIlxuIgovLyBsaW5lIG51bWJlciAzMDkKIlx0bW92bCA0KCVlZGksICVlY3gsIDgp
LCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMxMAoiXHRtb3ZsIDAoJWVkaSwgJWVjeCwgOCksICVl
ZHhcbiIKLy8gbGluZSBudW1iZXIgMzExCiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2Zm
bGluZWFzbV9iaXRPcF9fMTZfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkgIlxuIgpMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYml0T3BfXzE2X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2NvbnN0YW50KSAiOlxuIgovLyBsaW5lIG51bWJlciAzMTMKIlx0bW92bCAtOCglZWRpKSwg
JWVkeFxuIgovLyBsaW5lIG51bWJlciAzMTQKIlx0bW92bCAxNDEyKCVlZHgpLCAlZWR4XG4iCi8v
IGxpbmUgbnVtYmVyIDMxNwoiXHRtb3ZsIDQoJWVkeCwgJWVjeCwgOCksICVlYnhcbiIKLy8gbGlu
ZSBudW1iZXIgMzE4CiJcdG1vdmwgMCglZWR4LCAlZWN4LCA4KSwgJWVkeFxuIgpMT0NBTF9MQUJF
TF9TVFJJTkcoX29mZmxpbmVhc21fYml0T3BfXzE2X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Rv
bmUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMyNAoiXHRjbXBsICQxMDczNzQxODI0LCAlZWF4XG4i
CiJcdGpnZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9iaXRPcF9fMTZfbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDMyNQoi
XHRtb3ZsIDQoJWVkaSwgJWVheCwgOCksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMzI2CiJcdG1v
dmwgMCglZWRpLCAlZWF4LCA4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMjcKIlx0am1wICIg
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpdE9wX18xNl9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZ19fZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYml0
T3BfXzE2X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkgIjpcbiIKLy8gbGlu
ZSBudW1iZXIgMzI5CiJcdG1vdmwgLTgoJWVkaSksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMzMw
CiJcdG1vdmwgMTQxMiglZWN4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMzMKIlx0c2FsbCAk
MywgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMzQKIlx0YWRkbCAlZWF4LCAlZWN4XG4iCi8vIGxp
bmUgbnVtYmVyIDMzNQoiXHRtb3ZsIDAoJWVjeCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzM2
CiJcdG1vdmwgNCglZWN4KSwgJWVjeFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21f
Yml0T3BfXzE2X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKSAiOlxuIgovLyBsaW5l
IG51bWJlciAxMDczCiJcdGNtcGwgJC0xLCAlZWJ4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NU
UklORyhfb2ZmbGluZWFzbV8xNl9iaXRPcF9fc2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxMDc0
CiJcdGNtcGwgJC0xLCAlZWN4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGlu
ZWFzbV8xNl9iaXRPcF9fc2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxMDc1CiJcdG1vdmwgNCgl
ZXNpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAxMDk3CiJcdHhjaGdsICVlZHgsICVlY3hcbiIK
Ilx0c2FybCAlY2wsICVlYXhcbiIKIlx0eGNoZ2wgJWVkeCwgJWVjeFxuIgovLyBsaW5lIG51bWJl
ciAxMDc3CiJcdG1vdmwgJWVieCwgNCglZWRpLCAlZWN4LCA4KVxuIgovLyBsaW5lIG51bWJlciAx
MDc4CiJcdG1vdmwgJWVheCwgMCglZWRpLCAlZWN4LCA4KVxuIgovLyBsaW5lIG51bWJlciAxNjkK
Ilx0YWRkbCAkMTYsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxu
IgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMTZfYml0T3BfX3Nsb3cpICI6XG4iCi8v
IGxpbmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVzcClcbiIKLy8gbGluZSBudW1iZXIg
MTk1CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTkKIlx0Y2FsbCAi
IFNZTUJPTF9TVFJJTkcobGxpbnRfaGVscGVyX3JzaGlmdCkgIlxuIgovLyBsaW5lIG51bWJlciAy
MjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRtb3ZsICVlZHgs
ICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDE2LCAlZXNpXG4iCi8vIGxpbmUg
bnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxp
bnRfb3BfdXJzaGlmdCkgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF91cnNoaWZ0KSAiXG4iClNZ
TUJPTF9TVFJJTkcobGxpbnRfb3BfdXJzaGlmdCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTA2OQoi
XHRtb3ZsIDEyKCVlc2kpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDEwNzAKIlx0bW92bCA4KCVl
c2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDMwOAoiXHRjbXBsICQxMDczNzQxODI0LCAlZWN4
XG4iCiJcdGpnZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9iaXRPcF9fMTdfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpICJcbiIKLy8gbGluZSBudW1iZXIgMzA5CiJc
dG1vdmwgNCglZWRpLCAlZWN4LCA4KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAzMTAKIlx0bW92
bCAwKCVlZGksICVlY3gsIDgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMxMQoiXHRqbXAgIiBM
T0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYml0T3BfXzE3X2xvYWRDb25zdGFudE9yVmFy
aWFibGVfX2RvbmUpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpdE9wX18x
N19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkgIjpcbiIKLy8gbGluZSBudW1iZXIg
MzEzCiJcdG1vdmwgLTgoJWVkaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzE0CiJcdG1vdmwg
MTQxMiglZWR4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzMTcKIlx0bW92bCA0KCVlZHgsICVl
Y3gsIDgpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMxOAoiXHRtb3ZsIDAoJWVkeCwgJWVjeCwg
OCksICVlZHhcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpdE9wX18xN19sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlX19kb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciAzMjQKIlx0Y21w
bCAkMTA3Mzc0MTgyNCwgJWVheFxuIgoiXHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxp
bmVhc21fYml0T3BfXzE3X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkgIlxu
IgovLyBsaW5lIG51bWJlciAzMjUKIlx0bW92bCA0KCVlZGksICVlYXgsIDgpLCAlZWN4XG4iCi8v
IGxpbmUgbnVtYmVyIDMyNgoiXHRtb3ZsIDAoJWVkaSwgJWVheCwgOCksICVlYXhcbiIKLy8gbGlu
ZSBudW1iZXIgMzI3CiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9iaXRP
cF9fMTdfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUpICJcbiIKTE9DQUxfTEFCRUxf
U1RSSU5HKF9vZmZsaW5lYXNtX2JpdE9wX18xN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19f
Y29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMyOQoiXHRtb3ZsIC04KCVlZGkpLCAlZWN4
XG4iCi8vIGxpbmUgbnVtYmVyIDMzMAoiXHRtb3ZsIDE0MTIoJWVjeCksICVlY3hcbiIKLy8gbGlu
ZSBudW1iZXIgMzMzCiJcdHNhbGwgJDMsICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzM0CiJcdGFk
ZGwgJWVheCwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMzUKIlx0bW92bCAwKCVlY3gpLCAlZWF4
XG4iCi8vIGxpbmUgbnVtYmVyIDMzNgoiXHRtb3ZsIDQoJWVjeCksICVlY3hcbiIKTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpdE9wX18xN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Z19fZG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTA3MwoiXHRjbXBsICQtMSwgJWVieFxuIgoi
XHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMTdfYml0T3BfX3Nsb3cpICJc
biIKLy8gbGluZSBudW1iZXIgMTA3NAoiXHRjbXBsICQtMSwgJWVjeFxuIgoiXHRqbmUgIiBMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMTdfYml0T3BfX3Nsb3cpICJcbiIKLy8gbGluZSBu
dW1iZXIgMTA3NQoiXHRtb3ZsIDQoJWVzaSksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMTEwNgoi
XHR4Y2hnbCAlZWR4LCAlZWN4XG4iCiJcdHNocmwgJWNsLCAlZWF4XG4iCiJcdHhjaGdsICVlZHgs
ICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMTEwNwoiXHRjbXBsICQwLCAlZWF4XG4iCiJcdGpsICIg
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzE3X2JpdE9wX19zbG93KSAiXG4iCi8vIGxp
bmUgbnVtYmVyIDEwNzcKIlx0bW92bCAlZWJ4LCA0KCVlZGksICVlY3gsIDgpXG4iCi8vIGxpbmUg
bnVtYmVyIDEwNzgKIlx0bW92bCAlZWF4LCAwKCVlZGksICVlY3gsIDgpXG4iCi8vIGxpbmUgbnVt
YmVyIDE2OQoiXHRhZGRsICQxNiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICow
KCVlc2kpXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8xN19iaXRPcF9fc2xvdykg
IjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5l
IG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoi
XHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfdXJzaGlmdCkgIlxuIgovLyBsaW5l
IG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRt
b3ZsICVlZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDE2LCAlZXNpXG4i
Ci8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9T
VFJJTkcobGxpbnRfb3BfYml0YW5kKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX2JpdGFuZCkg
IlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2JpdGFuZCkgIjpcbiIKLy8gbGluZSBudW1iZXIg
MTA2OQoiXHRtb3ZsIDEyKCVlc2kpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDEwNzAKIlx0bW92
bCA4KCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDMwOAoiXHRjbXBsICQxMDczNzQxODI0
LCAlZWN4XG4iCiJcdGpnZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9iaXRPcF9f
MThfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpICJcbiIKLy8gbGluZSBudW1iZXIg
MzA5CiJcdG1vdmwgNCglZWRpLCAlZWN4LCA4KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAzMTAK
Ilx0bW92bCAwKCVlZGksICVlY3gsIDgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMxMQoiXHRq
bXAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYml0T3BfXzE4X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2RvbmUpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2Jp
dE9wX18xOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkgIjpcbiIKLy8gbGluZSBu
dW1iZXIgMzEzCiJcdG1vdmwgLTgoJWVkaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzE0CiJc
dG1vdmwgMTQxMiglZWR4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzMTcKIlx0bW92bCA0KCVl
ZHgsICVlY3gsIDgpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMxOAoiXHRtb3ZsIDAoJWVkeCwg
JWVjeCwgOCksICVlZHhcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpdE9wX18x
OF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciAzMjQK
Ilx0Y21wbCAkMTA3Mzc0MTgyNCwgJWVheFxuIgoiXHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fYml0T3BfXzE4X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFu
dCkgIlxuIgovLyBsaW5lIG51bWJlciAzMjUKIlx0bW92bCA0KCVlZGksICVlYXgsIDgpLCAlZWN4
XG4iCi8vIGxpbmUgbnVtYmVyIDMyNgoiXHRtb3ZsIDAoJWVkaSwgJWVheCwgOCksICVlYXhcbiIK
Ly8gbGluZSBudW1iZXIgMzI3CiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFz
bV9iaXRPcF9fMThfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUpICJcbiIKTE9DQUxf
TEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpdE9wX18xOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZ19fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMyOQoiXHRtb3ZsIC04KCVlZGkp
LCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzMAoiXHRtb3ZsIDE0MTIoJWVjeCksICVlY3hcbiIK
Ly8gbGluZSBudW1iZXIgMzMzCiJcdHNhbGwgJDMsICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzM0
CiJcdGFkZGwgJWVheCwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMzUKIlx0bW92bCAwKCVlY3gp
LCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDMzNgoiXHRtb3ZsIDQoJWVjeCksICVlY3hcbiIKTE9D
QUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpdE9wX18xOF9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZ19fZG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTA3MwoiXHRjbXBsICQtMSwgJWVi
eFxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMThfYml0T3BfX3Ns
b3cpICJcbiIKLy8gbGluZSBudW1iZXIgMTA3NAoiXHRjbXBsICQtMSwgJWVjeFxuIgoiXHRqbmUg
IiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMThfYml0T3BfX3Nsb3cpICJcbiIKLy8g
bGluZSBudW1iZXIgMTA3NQoiXHRtb3ZsIDQoJWVzaSksICVlY3hcbiIKLy8gbGluZSBudW1iZXIg
MTExNgoiXHRhbmRsICVlZHgsICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMTA3NwoiXHRtb3ZsICVl
YngsIDQoJWVkaSwgJWVjeCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTA3OAoiXHRtb3ZsICVlYXgs
IDAoJWVkaSwgJWVjeCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDIwLCAlZXNp
XG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RS
SU5HKF9vZmZsaW5lYXNtXzE4X2JpdE9wX19zbG93KSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQK
Ilx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ks
IDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxs
aW50X2hlbHBlcl9iaXRhbmQpICJcbiIKLy8gbGluZSBudW1iZXIgMjIyCiJcdG1vdmwgJWVheCwg
JWVzaVxuIgovLyBsaW5lIG51bWJlciAyMjMKIlx0bW92bCAlZWR4LCAlZWRpXG4iCi8vIGxpbmUg
bnVtYmVyIDE2OQoiXHRhZGRsICQyMCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1w
ICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2JpdHhvcikgIlxu
IgpISURFX1NZTUJPTChsbGludF9vcF9iaXR4b3IpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9v
cF9iaXR4b3IpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDEwNjkKIlx0bW92bCAxMiglZXNpKSwgJWVj
eFxuIgovLyBsaW5lIG51bWJlciAxMDcwCiJcdG1vdmwgOCglZXNpKSwgJWVheFxuIgovLyBsaW5l
IG51bWJlciAzMDgKIlx0Y21wbCAkMTA3Mzc0MTgyNCwgJWVjeFxuIgoiXHRqZ2UgIiBMT0NBTF9M
QUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYml0T3BfXzE5X2xvYWRDb25zdGFudE9yVmFyaWFibGVf
X2NvbnN0YW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDMwOQoiXHRtb3ZsIDQoJWVkaSwgJWVjeCwg
OCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzEwCiJcdG1vdmwgMCglZWRpLCAlZWN4LCA4KSwg
JWVkeFxuIgovLyBsaW5lIG51bWJlciAzMTEKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9v
ZmZsaW5lYXNtX2JpdE9wX18xOV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKSAiXG4iCkxP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9iaXRPcF9fMTlfbG9hZENvbnN0YW50T3JWYXJp
YWJsZV9fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMxMwoiXHRtb3ZsIC04KCVlZGkp
LCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMxNAoiXHRtb3ZsIDE0MTIoJWVkeCksICVlZHhcbiIK
Ly8gbGluZSBudW1iZXIgMzE3CiJcdG1vdmwgNCglZWR4LCAlZWN4LCA4KSwgJWVieFxuIgovLyBs
aW5lIG51bWJlciAzMTgKIlx0bW92bCAwKCVlZHgsICVlY3gsIDgpLCAlZWR4XG4iCkxPQ0FMX0xB
QkVMX1NUUklORyhfb2ZmbGluZWFzbV9iaXRPcF9fMTlfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9f
ZG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMzI0CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlYXhc
biIKIlx0amdlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpdE9wX18xOV9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQpICJcbiIKLy8gbGluZSBudW1iZXIgMzI1
CiJcdG1vdmwgNCglZWRpLCAlZWF4LCA4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMjYKIlx0
bW92bCAwKCVlZGksICVlYXgsIDgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDMyNwoiXHRqbXAg
IiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYml0T3BfXzE5X2xvYWRDb25zdGFudE9y
VmFyaWFibGUyUmVnX19kb25lKSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9i
aXRPcF9fMTlfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KSAiOlxuIgovLyBs
aW5lIG51bWJlciAzMjkKIlx0bW92bCAtOCglZWRpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAz
MzAKIlx0bW92bCAxNDEyKCVlY3gpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzMwoiXHRzYWxs
ICQzLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDMzNAoiXHRhZGRsICVlYXgsICVlY3hcbiIKLy8g
bGluZSBudW1iZXIgMzM1CiJcdG1vdmwgMCglZWN4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAz
MzYKIlx0bW92bCA0KCVlY3gpLCAlZWN4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFz
bV9iaXRPcF9fMTlfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUpICI6XG4iCi8vIGxp
bmUgbnVtYmVyIDEwNzMKIlx0Y21wbCAkLTEsICVlYnhcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxf
U1RSSU5HKF9vZmZsaW5lYXNtXzE5X2JpdE9wX19zbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDEw
NzQKIlx0Y21wbCAkLTEsICVlY3hcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZs
aW5lYXNtXzE5X2JpdE9wX19zbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDEwNzUKIlx0bW92bCA0
KCVlc2kpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDExMjQKIlx0eG9ybCAlZWR4LCAlZWF4XG4i
Ci8vIGxpbmUgbnVtYmVyIDEwNzcKIlx0bW92bCAlZWJ4LCA0KCVlZGksICVlY3gsIDgpXG4iCi8v
IGxpbmUgbnVtYmVyIDEwNzgKIlx0bW92bCAlZWF4LCAwKCVlZGksICVlY3gsIDgpXG4iCi8vIGxp
bmUgbnVtYmVyIDE2OQoiXHRhZGRsICQyMCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0
am1wICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8xOV9iaXRPcF9f
c2xvdykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgov
LyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVy
IDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfYml0eG9yKSAiXG4iCi8v
IGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIz
CiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMjAsICVl
c2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lN
Qk9MX1NUUklORyhsbGludF9vcF9iaXRvcikgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9iaXRv
cikgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2JpdG9yKSAiOlxuIgovLyBsaW5lIG51bWJl
ciAxMDY5CiJcdG1vdmwgMTIoJWVzaSksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMTA3MAoiXHRt
b3ZsIDgoJWVzaSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzA4CiJcdGNtcGwgJDEwNzM3NDE4
MjQsICVlY3hcbiIKIlx0amdlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2JpdE9w
X18yMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkgIlxuIgovLyBsaW5lIG51bWJl
ciAzMDkKIlx0bW92bCA0KCVlZGksICVlY3gsIDgpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMx
MAoiXHRtb3ZsIDAoJWVkaSwgJWVjeCwgOCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzExCiJc
dGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9iaXRPcF9fMjBfbG9hZENvbnN0
YW50T3JWYXJpYWJsZV9fZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21f
Yml0T3BfXzIwX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KSAiOlxuIgovLyBsaW5l
IG51bWJlciAzMTMKIlx0bW92bCAtOCglZWRpKSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzMTQK
Ilx0bW92bCAxNDEyKCVlZHgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMxNwoiXHRtb3ZsIDQo
JWVkeCwgJWVjeCwgOCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzE4CiJcdG1vdmwgMCglZWR4
LCAlZWN4LCA4KSwgJWVkeFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYml0T3Bf
XzIwX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMy
NAoiXHRjbXBsICQxMDczNzQxODI0LCAlZWF4XG4iCiJcdGpnZSAiIExPQ0FMX0xBQkVMX1NUUklO
Ryhfb2ZmbGluZWFzbV9iaXRPcF9fMjBfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0
YW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDMyNQoiXHRtb3ZsIDQoJWVkaSwgJWVheCwgOCksICVl
Y3hcbiIKLy8gbGluZSBudW1iZXIgMzI2CiJcdG1vdmwgMCglZWRpLCAlZWF4LCA4KSwgJWVheFxu
IgovLyBsaW5lIG51bWJlciAzMjcKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5l
YXNtX2JpdE9wX18yMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSkgIlxuIgpMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYml0T3BfXzIwX2xvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnX19jb25zdGFudCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMzI5CiJcdG1vdmwgLTgoJWVk
aSksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMzMwCiJcdG1vdmwgMTQxMiglZWN4KSwgJWVjeFxu
IgovLyBsaW5lIG51bWJlciAzMzMKIlx0c2FsbCAkMywgJWVheFxuIgovLyBsaW5lIG51bWJlciAz
MzQKIlx0YWRkbCAlZWF4LCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzNQoiXHRtb3ZsIDAoJWVj
eCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzM2CiJcdG1vdmwgNCglZWN4KSwgJWVjeFxuIgpM
T0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fYml0T3BfXzIwX2xvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnX19kb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciAxMDczCiJcdGNtcGwgJC0xLCAl
ZWJ4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8yMF9iaXRPcF9f
c2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxMDc0CiJcdGNtcGwgJC0xLCAlZWN4XG4iCiJcdGpu
ZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8yMF9iaXRPcF9fc2xvdykgIlxuIgov
LyBsaW5lIG51bWJlciAxMDc1CiJcdG1vdmwgNCglZXNpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJl
ciAxMTMyCiJcdG9ybCAlZWR4LCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDEwNzcKIlx0bW92bCAl
ZWJ4LCA0KCVlZGksICVlY3gsIDgpXG4iCi8vIGxpbmUgbnVtYmVyIDEwNzgKIlx0bW92bCAlZWF4
LCAwKCVlZGksICVlY3gsIDgpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQyMCwgJWVz
aVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVMX1NU
UklORyhfb2ZmbGluZWFzbV8yMF9iaXRPcF9fc2xvdykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0
CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNp
LCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhs
bGludF9oZWxwZXJfYml0b3IpICJcbiIKLy8gbGluZSBudW1iZXIgMjIyCiJcdG1vdmwgJWVheCwg
JWVzaVxuIgovLyBsaW5lIG51bWJlciAyMjMKIlx0bW92bCAlZWR4LCAlZWRpXG4iCi8vIGxpbmUg
bnVtYmVyIDE2OQoiXHRhZGRsICQyMCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1w
ICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2JpdG5vdCkgIlxu
IgpISURFX1NZTUJPTChsbGludF9vcF9iaXRub3QpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9v
cF9iaXRub3QpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDExMzkKIlx0bW92bCA4KCVlc2kpLCAlZWR4
XG4iCi8vIGxpbmUgbnVtYmVyIDExNDAKIlx0bW92bCA0KCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUg
bnVtYmVyIDMwOAoiXHRjbXBsICQxMDczNzQxODI0LCAlZWR4XG4iCiJcdGpnZSAiIExPQ0FMX0xB
QkVMX1NUUklORyhfb2ZmbGluZWFzbV8yMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFu
dCkgIlxuIgovLyBsaW5lIG51bWJlciAzMDkKIlx0bW92bCA0KCVlZGksICVlZHgsIDgpLCAlZWN4
XG4iCi8vIGxpbmUgbnVtYmVyIDMxMAoiXHRtb3ZsIDAoJWVkaSwgJWVkeCwgOCksICVlYnhcbiIK
Ly8gbGluZSBudW1iZXIgMzExCiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFz
bV8yMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklO
Ryhfb2ZmbGluZWFzbV8yMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkgIjpcbiIK
Ly8gbGluZSBudW1iZXIgMzEzCiJcdG1vdmwgLTgoJWVkaSksICVlYnhcbiIKLy8gbGluZSBudW1i
ZXIgMzE0CiJcdG1vdmwgMTQxMiglZWJ4KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAzMTcKIlx0
bW92bCA0KCVlYngsICVlZHgsIDgpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMxOAoiXHRtb3Zs
IDAoJWVieCwgJWVkeCwgOCksICVlYnhcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNt
XzIxX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDEx
NDIKIlx0Y21wbCAkLTEsICVlY3hcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZs
aW5lYXNtX29wQml0bm90U2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxMTQzCiJcdG5vdGwgJWVi
eFxuIgovLyBsaW5lIG51bWJlciAxMTQ0CiJcdG1vdmwgJWVjeCwgNCglZWRpLCAlZWF4LCA4KVxu
IgovLyBsaW5lIG51bWJlciAxMTQ1CiJcdG1vdmwgJWVieCwgMCglZWRpLCAlZWF4LCA4KVxuIgov
LyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMTIsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcw
CiJcdGptcCAqMCglZXNpKVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BCaXRu
b3RTbG93KSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4i
Ci8vIGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1i
ZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9iaXRub3QpICJcbiIK
Ly8gbGluZSBudW1iZXIgMjIyCiJcdG1vdmwgJWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAy
MjMKIlx0bW92bCAlZWR4LCAlZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQxMiwg
JWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBT
WU1CT0xfU1RSSU5HKGxsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZSkgIlxuIgpISURFX1NZTUJP
TChsbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2UpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9v
cF9jaGVja19oYXNfaW5zdGFuY2UpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDExNTUKIlx0bW92bCA0
KCVlc2kpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDM0MQoiXHRjbXBsICQxMDczNzQxODI0LCAl
ZWR4XG4iCiJcdGpnZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0
b21fX2NvbnN0YW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDM2MwoiXHRjbXBsICQtNSwgNCglZWRp
LCAlZWR4LCA4KVxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BD
aGVja0hhc0luc3RhbmNlU2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAzNDMKIlx0bW92bCAwKCVl
ZGksICVlZHgsIDgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDM0NAoiXHRqbXAgIiBMT0NBTF9M
QUJFTF9TVFJJTkcoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfX2xv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lKSAiXG4iCkxPQ0FMX0xB
QkVMX1NUUklORyhfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50KSAiOlxuIgovLyBs
aW5lIG51bWJlciAzNDYKIlx0bW92bCAtOCglZWRpKSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAz
NDcKIlx0bW92bCAxNDEyKCVlYXgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDM2MwoiXHRjbXBs
ICQtNSwgNCglZWF4LCAlZWR4LCA4KVxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29m
ZmxpbmVhc21fb3BDaGVja0hhc0luc3RhbmNlU2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAzNTEK
Ilx0bW92bCAwKCVlYXgsICVlZHgsIDgpLCAlZWF4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2Zm
bGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDExNTcKIlx0
bW92bCA0KCVlYXgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDExNTgKIlx0dGVzdGIgJDIsIDko
JWVheClcbiIKIlx0anogIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BDaGVja0hh
c0luc3RhbmNlU2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkOCwgJWVzaVxu
IgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVMX1NUUklO
Ryhfb2ZmbGluZWFzbV9vcENoZWNrSGFzSW5zdGFuY2VTbG93KSAiOlxuIgovLyBsaW5lIG51bWJl
ciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5NQoiXHRtb3Zs
ICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RS
SU5HKGxsaW50X2hlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpICJcbiIKLy8gbGluZSBudW1iZXIg
MjIyCiJcdG1vdmwgJWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAyMjMKIlx0bW92bCAlZWR4
LCAlZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQ4LCAlZXNpXG4iCi8vIGxpbmUg
bnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxp
bnRfb3BfaW5zdGFuY2VvZikgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9pbnN0YW5jZW9mKSAi
XG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfaW5zdGFuY2VvZikgIjpcbiIKLy8gbGluZSBudW1i
ZXIgMTE3MAoiXHRtb3ZsIDEyKCVlc2kpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDM0MQoiXHRj
bXBsICQxMDczNzQxODI0LCAlZWR4XG4iCiJcdGpnZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2Zm
bGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZF9fMjFfbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50KSAiXG4iCi8vIGxpbmUg
bnVtYmVyIDM0MwoiXHRtb3ZsIDAoJWVkaSwgJWVkeCwgOCksICVlYXhcbiIKLy8gbGluZSBudW1i
ZXIgMzQ0CiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZF9fMjFfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRUYWdDdXN0b21fX2RvbmUpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNt
X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkX18yMV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVy
IDM0NgoiXHRtb3ZsIC04KCVlZGkpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDM0NwoiXHRtb3Zs
IDE0MTIoJWVheCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzUxCiJcdG1vdmwgMCglZWF4LCAl
ZWR4LCA4KSwgJWVheFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWRfXzIxX2xvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkVGFnQ3VzdG9tX19kb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciAxMTcyCiJcdG1vdmwg
NCglZWF4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxMTczCiJcdHRlc3RiICQ4LCA5KCVlYXgp
XG4iCiJcdGp6ICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wSW5zdGFuY2VvZlNs
b3cpICJcbiIKLy8gbGluZSBudW1iZXIgMTE3NgoiXHRtb3ZsIDE2KCVlc2kpLCAlZWF4XG4iCi8v
IGxpbmUgbnVtYmVyIDExNzcKIlx0bW92bCA0KCVlc2kpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVy
IDM0MQoiXHRjbXBsICQxMDczNzQxODI0LCAlZWF4XG4iCiJcdGpnZSAiIExPQ0FMX0xBQkVMX1NU
UklORyhfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjJfbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50KSAiXG4iCi8vIGxpbmUg
bnVtYmVyIDM2MwoiXHRjbXBsICQtNSwgNCglZWRpLCAlZWF4LCA4KVxuIgoiXHRqbmUgIiBMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BJbnN0YW5jZW9mU2xvdykgIlxuIgovLyBsaW5l
IG51bWJlciAzNDMKIlx0bW92bCAwKCVlZGksICVlYXgsIDgpLCAlZWR4XG4iCi8vIGxpbmUgbnVt
YmVyIDM0NAoiXHRqbXAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRfXzIyX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFn
Q3VzdG9tX19kb25lKSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjJfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRU
YWdDdXN0b21fX2NvbnN0YW50KSAiOlxuIgovLyBsaW5lIG51bWJlciAzNDYKIlx0bW92bCAtOCgl
ZWRpKSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzNDcKIlx0bW92bCAxNDEyKCVlZHgpLCAlZWR4
XG4iCi8vIGxpbmUgbnVtYmVyIDM2MwoiXHRjbXBsICQtNSwgNCglZWR4LCAlZWF4LCA4KVxuIgoi
XHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BJbnN0YW5jZW9mU2xvdykg
IlxuIgovLyBsaW5lIG51bWJlciAzNTEKIlx0bW92bCAwKCVlZHgsICVlYXgsIDgpLCAlZWR4XG4i
CkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZF9fMjJfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUpICI6
XG4iCi8vIGxpbmUgbnVtYmVyIDExNzkKIlx0bW92bCA0KCVlZHgpLCAlZWN4XG4iCi8vIGxpbmUg
bnVtYmVyIDExODAKIlx0Y21wYiAkMTAsIDgoJWVjeClcbiIKIlx0amIgIiBMT0NBTF9MQUJFTF9T
VFJJTkcoX29mZmxpbmVhc21fb3BJbnN0YW5jZW9mU2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAx
MTgxCiJcdG1vdmwgOCglZXNpKSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAzNDEKIlx0Y21wbCAk
MTA3Mzc0MTgyNCwgJWVheFxuIgoiXHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVh
c21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzIzX2xvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCkgIlxuIgovLyBsaW5lIG51bWJlciAzNjMKIlx0
Y21wbCAkLTUsIDQoJWVkaSwgJWVheCwgOClcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5H
KF9vZmZsaW5lYXNtX29wSW5zdGFuY2VvZlNsb3cpICJcbiIKLy8gbGluZSBudW1iZXIgMzQzCiJc
dG1vdmwgMCglZWRpLCAlZWF4LCA4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzNDQKIlx0am1w
ICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkX18yM19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSkg
IlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWRfXzIzX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25z
dGFudCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMzQ2CiJcdG1vdmwgLTgoJWVkaSksICVlY3hcbiIK
Ly8gbGluZSBudW1iZXIgMzQ3CiJcdG1vdmwgMTQxMiglZWN4KSwgJWVjeFxuIgovLyBsaW5lIG51
bWJlciAzNjMKIlx0Y21wbCAkLTUsIDQoJWVjeCwgJWVheCwgOClcbiIKIlx0am5lICIgTE9DQUxf
TEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wSW5zdGFuY2VvZlNsb3cpICJcbiIKLy8gbGluZSBu
dW1iZXIgMzUxCiJcdG1vdmwgMCglZWN4LCAlZWF4LCA4KSwgJWVjeFxuIgpMT0NBTF9MQUJFTF9T
VFJJTkcoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzIzX2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lKSAiOlxuIgovLyBsaW5lIG51
bWJlciAxMTg1CiJcdG1vdmwgJDEsICVlYXhcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5l
YXNtX29wSW5zdGFuY2VvZkxvb3ApICI6XG4iCi8vIGxpbmUgbnVtYmVyIDExODcKIlx0bW92bCA0
KCVlY3gpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDExODgKIlx0bW92bCAxNiglZWN4KSwgJWVj
eFxuIgovLyBsaW5lIG51bWJlciAxMTg5CiJcdGNtcGwgJWVkeCwgJWVjeFxuIgoiXHRqZSAiIExP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcEluc3RhbmNlb2ZEb25lKSAiXG4iCi8vIGxp
bmUgbnVtYmVyIDExOTAKIlx0dGVzdGwgJWVjeCwgJWVjeFxuIgoiXHRqbnogIiBMT0NBTF9MQUJF
TF9TVFJJTkcoX29mZmxpbmVhc21fb3BJbnN0YW5jZW9mTG9vcCkgIlxuIgovLyBsaW5lIG51bWJl
ciAxMTkyCiJcdHhvcmwgJWVheCwgJWVheFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVh
c21fb3BJbnN0YW5jZW9mRG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTE5NAoiXHRtb3ZsICQt
MiwgNCglZWRpLCAlZWJ4LCA4KVxuIgovLyBsaW5lIG51bWJlciAxMTk1CiJcdG1vdmwgJWVheCwg
MCglZWRpLCAlZWJ4LCA4KVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMjAsICVlc2lc
biIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgpMT0NBTF9MQUJFTF9TVFJJ
TkcoX29mZmxpbmVhc21fb3BJbnN0YW5jZW9mU2xvdykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0
CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNp
LCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhs
bGludF9oZWxwZXJfaW5zdGFuY2VvZikgIlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAl
ZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8g
bGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDIwLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoi
XHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfdHlwZW9m
KSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX3R5cGVvZikgIlxuIgpTWU1CT0xfU1RSSU5HKGxs
aW50X29wX3R5cGVvZikgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCgl
ZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxp
bmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfdHlwZW9m
KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBu
dW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRk
bCAkMTIsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmds
b2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9pc191bmRlZmluZWQpICJcbiIKSElERV9TWU1C
T0wobGxpbnRfb3BfaXNfdW5kZWZpbmVkKSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfaXNf
dW5kZWZpbmVkKSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3Ap
XG4iCi8vIGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBu
dW1iZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9pc191bmRlZmlu
ZWQpICJcbiIKLy8gbGluZSBudW1iZXIgMjIyCiJcdG1vdmwgJWVheCwgJWVzaVxuIgovLyBsaW5l
IG51bWJlciAyMjMKIlx0bW92bCAlZWR4LCAlZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRh
ZGRsICQxMiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCiIu
Z2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2lzX2Jvb2xlYW4pICJcbiIKSElERV9TWU1C
T0wobGxpbnRfb3BfaXNfYm9vbGVhbikgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2lzX2Jv
b2xlYW4pICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVzcClcbiIK
Ly8gbGluZSBudW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5lIG51bWJl
ciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfaGVscGVyX2lzX2Jvb2xlYW4pICJc
biIKLy8gbGluZSBudW1iZXIgMjIyCiJcdG1vdmwgJWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJl
ciAyMjMKIlx0bW92bCAlZWR4LCAlZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQx
MiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwg
IiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2lzX251bWJlcikgIlxuIgpISURFX1NZTUJPTChsbGlu
dF9vcF9pc19udW1iZXIpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9pc19udW1iZXIpICI6
XG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVzcClcbiIKLy8gbGluZSBu
dW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTkKIlx0
Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfaGVscGVyX2lzX251bWJlcikgIlxuIgovLyBsaW5l
IG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRt
b3ZsICVlZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDEyLCAlZXNpXG4i
Ci8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9T
VFJJTkcobGxpbnRfb3BfaXNfc3RyaW5nKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX2lzX3N0
cmluZykgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2lzX3N0cmluZykgIjpcbiIKLy8gbGlu
ZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUK
Ilx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lN
Qk9MX1NUUklORyhsbGludF9oZWxwZXJfaXNfc3RyaW5nKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIy
MgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwg
JWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMTIsICVlc2lcbiIKLy8gbGluZSBu
dW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGlu
dF9vcF9pc19vYmplY3QpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfaXNfb2JqZWN0KSAiXG4i
ClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfaXNfb2JqZWN0KSAiOlxuIgovLyBsaW5lIG51bWJlciAx
OTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVl
c2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5H
KGxsaW50X2hlbHBlcl9pc19vYmplY3QpICJcbiIKLy8gbGluZSBudW1iZXIgMjIyCiJcdG1vdmwg
JWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAyMjMKIlx0bW92bCAlZWR4LCAlZWRpXG4iCi8v
IGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQxMiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAK
Ilx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2lzX2Z1
bmN0aW9uKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX2lzX2Z1bmN0aW9uKSAiXG4iClNZTUJP
TF9TVFJJTkcobGxpbnRfb3BfaXNfZnVuY3Rpb24pICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoi
XHRtb3ZsICVlZGksIDAoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwg
NCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxp
bnRfaGVscGVyX2lzX2Z1bmN0aW9uKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVl
YXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBs
aW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMTIsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJc
dGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9pbikgIlxu
IgpISURFX1NZTUJPTChsbGludF9vcF9pbikgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2lu
KSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxp
bmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5
CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9pbikgIlxuIgovLyBsaW5lIG51
bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRtb3Zs
ICVlZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDE2LCAlZXNpXG4iCi8v
IGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJ
TkcobGxpbnRfb3BfcmVzb2x2ZSkgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9yZXNvbHZlKSAi
XG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfcmVzb2x2ZSkgIjpcbiIKLy8gbGluZSBudW1iZXIg
MTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAl
ZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklO
RyhsbGludF9oZWxwZXJfcmVzb2x2ZSkgIlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAl
ZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8g
bGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDE2LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoi
XHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfcmVzb2x2
ZV9za2lwKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX3Jlc29sdmVfc2tpcCkgIlxuIgpTWU1C
T0xfU1RSSU5HKGxsaW50X29wX3Jlc29sdmVfc2tpcCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0
CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNp
LCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhs
bGludF9oZWxwZXJfcmVzb2x2ZV9za2lwKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRtb3Zs
ICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxuIgov
LyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMjAsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcw
CiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9yZXNv
bHZlX2dsb2JhbCkgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9yZXNvbHZlX2dsb2JhbCkgIlxu
IgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX3Jlc29sdmVfZ2xvYmFsKSAiOlxuIgovLyBsaW5lIG51
bWJlciAxMjY5CiJcdG1vdmwgLTgoJWVkaSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMTI3MAoi
XHRtb3ZsIDE2KCVlYXgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDEyNzEKIlx0bW92bCA0KCVl
YXgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDEyNzIKIlx0Y21wbCAxMiglZXNpKSwgJWVkeFxu
IgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BSZXNvbHZlR2xvYmFs
U2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxMjczCiJcdG1vdmwgMTYoJWVzaSksICVlZHhcbiIK
Ly8gbGluZSBudW1iZXIgMTI3NAoiXHRtb3ZsIDgoJWVheCksICVlYXhcbiIKLy8gbGluZSBudW1i
ZXIgMTI3NQoiXHRtb3ZsIDQoJWVheCwgJWVkeCwgOCksICVlY3hcbiIKLy8gbGluZSBudW1iZXIg
MTI3NgoiXHRtb3ZsIDAoJWVheCwgJWVkeCwgOCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMTI3
NwoiXHRtb3ZsIDQoJWVzaSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMTI3OAoiXHRtb3ZsICVl
Y3gsIDQoJWVkaSwgJWVheCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTI3OQoiXHRtb3ZsICVlYngs
IDAoJWVkaSwgJWVheCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTI4MAoiXHRtb3ZsIDIwKCVlc2kp
LCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDM3OQoiXHRtb3ZsICVlY3gsIDE2KCVlYXgpXG4iCi8v
IGxpbmUgbnVtYmVyIDM4MAoiXHRtb3ZsICVlYngsIDEyKCVlYXgpXG4iCi8vIGxpbmUgbnVtYmVy
IDE2OQoiXHRhZGRsICQyNCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVl
c2kpXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcFJlc29sdmVHbG9iYWxTbG93
KSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxp
bmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5
CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkgIlxu
IgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVy
IDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDI0
LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAi
IFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykgIlxuIgpISURF
X1NZTUJPTChsbGludF9vcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKSAiXG4iClNZTUJPTF9TVFJJ
TkcobGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykgIjpcbiIKLy8gbGluZSBudW1iZXIg
MTMyOQoiXHRtb3ZsIDEwMCglZXNwKSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAxMzMwCiJcdG1v
dmwgMTIwKCVlYngpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDEyOTkKIlx0bW92bCAtMjQoJWVk
aSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMTMwMAoiXHRtb3ZsIDIwKCVlc2kpLCAlZWN4XG4i
Ci8vIGxpbmUgbnVtYmVyIDEzMDIKIlx0dGVzdGwgJWVjeCwgJWVjeFxuIgoiXHRqeiAiIExPQ0FM
X0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9nZXRTY29wZV9fZG9uZSkgIlxuIgovLyBsaW5lIG51
bWJlciAxMzA0CiJcdG1vdmwgLTgoJWVkaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMTMwNQoi
XHRjbXBsICQyLCA3NiglZWR4KVxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxp
bmVhc21fZ2V0U2NvcGVfX2xvb3ApICJcbiIKLy8gbGluZSBudW1iZXIgMTMwNgoiXHRjbXBiICQw
LCA3MiglZWR4KVxuIgoiXHRqeiAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9nZXRT
Y29wZV9fbG9vcCkgIlxuIgovLyBsaW5lIG51bWJlciAxMzA4CiJcdG1vdmwgNjgoJWVkeCksICVl
ZHhcbiIKLy8gbGluZSBudW1iZXIgMTMxMQoiXHRjbXBsICQtNiwgNCglZWRpLCAlZWR4LCA4KVxu
IgoiXHRqZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9nZXRTY29wZV9fbm9BY3Rp
dmF0aW9uKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDEzMzQKIlx0bW92bCAxNiglZWF4KSwgJWVkeFxu
IgovLyBsaW5lIG51bWJlciAxMzM1CiJcdGNtcGwgJWVieCwgNCglZWR4KVxuIgoiXHRqbmUgIiBM
T0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVy
U2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxMzEzCiJcdG1vdmwgMTIoJWVheCksICVlYXhcbiIK
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2dldFNjb3BlX19ub0FjdGl2YXRpb24pICI6
XG4iCi8vIGxpbmUgbnVtYmVyIDEzMTUKIlx0c3VibCAkMSwgJWVjeFxuIgovLyBsaW5lIG51bWJl
ciAxMzE3CiJcdHRlc3RsICVlY3gsICVlY3hcbiIKIlx0anogIiBMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fZ2V0U2NvcGVfX2RvbmUpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZs
aW5lYXNtX2dldFNjb3BlX19sb29wKSAiOlxuIgovLyBsaW5lIG51bWJlciAxMzM0CiJcdG1vdmwg
MTYoJWVheCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMTMzNQoiXHRjbXBsICVlYngsIDQoJWVk
eClcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wUmVzb2x2ZUds
b2JhbER5bmFtaWNTdXBlclNsb3cpICJcbiIKLy8gbGluZSBudW1iZXIgMTMyMAoiXHRtb3ZsIDEy
KCVlYXgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDEzMjEKIlx0c3VibCAkMSwgJWVjeFxuIgov
LyBsaW5lIG51bWJlciAxMzIyCiJcdHRlc3RsICVlY3gsICVlY3hcbiIKIlx0am56ICIgTE9DQUxf
TEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2dldFNjb3BlX19sb29wKSAiXG4iCkxPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV9nZXRTY29wZV9fZG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIg
MTI2OQoiXHRtb3ZsIC04KCVlZGkpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDEyNzAKIlx0bW92
bCAxNiglZWF4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxMjcxCiJcdG1vdmwgNCglZWF4KSwg
JWVkeFxuIgovLyBsaW5lIG51bWJlciAxMjcyCiJcdGNtcGwgMTIoJWVzaSksICVlZHhcbiIKIlx0
am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wUmVzb2x2ZUdsb2JhbER5bmFt
aWNTbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDEyNzMKIlx0bW92bCAxNiglZXNpKSwgJWVkeFxu
IgovLyBsaW5lIG51bWJlciAxMjc0CiJcdG1vdmwgOCglZWF4KSwgJWVheFxuIgovLyBsaW5lIG51
bWJlciAxMjc1CiJcdG1vdmwgNCglZWF4LCAlZWR4LCA4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJl
ciAxMjc2CiJcdG1vdmwgMCglZWF4LCAlZWR4LCA4KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAx
Mjc3CiJcdG1vdmwgNCglZXNpKSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxMjc4CiJcdG1vdmwg
JWVjeCwgNCglZWRpLCAlZWF4LCA4KVxuIgovLyBsaW5lIG51bWJlciAxMjc5CiJcdG1vdmwgJWVi
eCwgMCglZWRpLCAlZWF4LCA4KVxuIgovLyBsaW5lIG51bWJlciAxMjgwCiJcdG1vdmwgMjQoJWVz
aSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzc5CiJcdG1vdmwgJWVjeCwgMTYoJWVheClcbiIK
Ly8gbGluZSBudW1iZXIgMzgwCiJcdG1vdmwgJWVieCwgMTIoJWVheClcbiIKLy8gbGluZSBudW1i
ZXIgMTY5CiJcdGFkZGwgJDI4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAo
JWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wUmVzb2x2ZUdsb2JhbER5
bmFtaWNTdXBlclNsb3cpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGksIDAo
JWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgovLyBs
aW5lIG51bWJlciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfaGVscGVyX3Jlc29s
dmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpICJcbiIKLy8gbGluZSBudW1iZXIgMjIyCiJc
dG1vdmwgJWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAyMjMKIlx0bW92bCAlZWR4LCAlZWRp
XG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQyOCwgJWVzaVxuIgovLyBsaW5lIG51bWJl
ciAxNzAKIlx0am1wICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9v
cFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1v
dmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVl
c3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9o
ZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykgIlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0
bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlc
biIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDI4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVy
IDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3Bf
Z2V0X3Njb3BlZF92YXIpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfZ2V0X3Njb3BlZF92YXIp
ICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9nZXRfc2NvcGVkX3ZhcikgIjpcbiIKLy8gbGlu
ZSBudW1iZXIgMTI5OQoiXHRtb3ZsIC0yNCglZWRpKSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAx
MzAwCiJcdG1vdmwgMTIoJWVzaSksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMTMwMgoiXHR0ZXN0
bCAlZWN4LCAlZWN4XG4iCiJcdGp6ICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzIz
X2dldFNjb3BlX19kb25lKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDEzMDQKIlx0bW92bCAtOCglZWRp
KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAxMzA1CiJcdGNtcGwgJDIsIDc2KCVlZHgpXG4iCiJc
dGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8yM19nZXRTY29wZV9fbG9vcCkg
IlxuIgovLyBsaW5lIG51bWJlciAxMzA2CiJcdGNtcGIgJDAsIDcyKCVlZHgpXG4iCiJcdGp6ICIg
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzIzX2dldFNjb3BlX19sb29wKSAiXG4iCi8v
IGxpbmUgbnVtYmVyIDEzMDgKIlx0bW92bCA2OCglZWR4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJl
ciAxMzExCiJcdGNtcGwgJC02LCA0KCVlZGksICVlZHgsIDgpXG4iCiJcdGplICIgTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtXzIzX2dldFNjb3BlX19ub0FjdGl2YXRpb24pICJcbiIKLy8g
bGluZSBudW1iZXIgMTMxMwoiXHRtb3ZsIDEyKCVlYXgpLCAlZWF4XG4iCkxPQ0FMX0xBQkVMX1NU
UklORyhfb2ZmbGluZWFzbV8yM19nZXRTY29wZV9fbm9BY3RpdmF0aW9uKSAiOlxuIgovLyBsaW5l
IG51bWJlciAxMzE1CiJcdHN1YmwgJDEsICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMTMxNwoiXHR0
ZXN0bCAlZWN4LCAlZWN4XG4iCiJcdGp6ICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNt
XzIzX2dldFNjb3BlX19kb25lKSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8y
M19nZXRTY29wZV9fbG9vcCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTMyMAoiXHRtb3ZsIDEyKCVl
YXgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDEzMjEKIlx0c3VibCAkMSwgJWVjeFxuIgovLyBs
aW5lIG51bWJlciAxMzIyCiJcdHRlc3RsICVlY3gsICVlY3hcbiIKIlx0am56ICIgTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtXzIzX2dldFNjb3BlX19sb29wKSAiXG4iCkxPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV8yM19nZXRTY29wZV9fZG9uZSkgIjpcbiIKLy8gbGluZSBudW1i
ZXIgMTM1NgoiXHRtb3ZsIDQoJWVzaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMTM1NwoiXHRt
b3ZsIDgoJWVzaSksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMTM1OAoiXHRtb3ZsIDE2KCVlYXgp
LCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDEzNTkKIlx0bW92bCA1MiglZWF4KSwgJWVheFxuIgov
LyBsaW5lIG51bWJlciAxMzYwCiJcdG1vdmwgNCglZWF4LCAlZWN4LCA4KSwgJWVieFxuIgovLyBs
aW5lIG51bWJlciAxMzYxCiJcdG1vdmwgMCglZWF4LCAlZWN4LCA4KSwgJWVheFxuIgovLyBsaW5l
IG51bWJlciAxMzYyCiJcdG1vdmwgJWVieCwgNCglZWRpLCAlZWR4LCA4KVxuIgovLyBsaW5lIG51
bWJlciAxMzYzCiJcdG1vdmwgJWVheCwgMCglZWRpLCAlZWR4LCA4KVxuIgovLyBsaW5lIG51bWJl
ciAxMzY0CiJcdG1vdmwgMTYoJWVzaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzc5CiJcdG1v
dmwgJWVieCwgMTYoJWVkeClcbiIKLy8gbGluZSBudW1iZXIgMzgwCiJcdG1vdmwgJWVheCwgMTIo
JWVkeClcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDIwLCAlZXNpXG4iCi8vIGxpbmUg
bnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxp
bnRfb3BfcHV0X3Njb3BlZF92YXIpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfcHV0X3Njb3Bl
ZF92YXIpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9wdXRfc2NvcGVkX3ZhcikgIjpcbiIK
Ly8gbGluZSBudW1iZXIgMTI5OQoiXHRtb3ZsIC0yNCglZWRpKSwgJWVheFxuIgovLyBsaW5lIG51
bWJlciAxMzAwCiJcdG1vdmwgOCglZXNpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAxMzAyCiJc
dHRlc3RsICVlY3gsICVlY3hcbiIKIlx0anogIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVh
c21fMjRfZ2V0U2NvcGVfX2RvbmUpICJcbiIKLy8gbGluZSBudW1iZXIgMTMwNAoiXHRtb3ZsIC04
KCVlZGkpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDEzMDUKIlx0Y21wbCAkMiwgNzYoJWVkeClc
biIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzI0X2dldFNjb3BlX19s
b29wKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDEzMDYKIlx0Y21wYiAkMCwgNzIoJWVkeClcbiIKIlx0
anogIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMjRfZ2V0U2NvcGVfX2xvb3ApICJc
biIKLy8gbGluZSBudW1iZXIgMTMwOAoiXHRtb3ZsIDY4KCVlZHgpLCAlZWR4XG4iCi8vIGxpbmUg
bnVtYmVyIDEzMTEKIlx0Y21wbCAkLTYsIDQoJWVkaSwgJWVkeCwgOClcbiIKIlx0amUgIiBMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMjRfZ2V0U2NvcGVfX25vQWN0aXZhdGlvbikgIlxu
IgovLyBsaW5lIG51bWJlciAxMzEzCiJcdG1vdmwgMTIoJWVheCksICVlYXhcbiIKTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtXzI0X2dldFNjb3BlX19ub0FjdGl2YXRpb24pICI6XG4iCi8v
IGxpbmUgbnVtYmVyIDEzMTUKIlx0c3VibCAkMSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAxMzE3
CiJcdHRlc3RsICVlY3gsICVlY3hcbiIKIlx0anogIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxp
bmVhc21fMjRfZ2V0U2NvcGVfX2RvbmUpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5l
YXNtXzI0X2dldFNjb3BlX19sb29wKSAiOlxuIgovLyBsaW5lIG51bWJlciAxMzIwCiJcdG1vdmwg
MTIoJWVheCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMTMyMQoiXHRzdWJsICQxLCAlZWN4XG4i
Ci8vIGxpbmUgbnVtYmVyIDEzMjIKIlx0dGVzdGwgJWVjeCwgJWVjeFxuIgoiXHRqbnogIiBMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMjRfZ2V0U2NvcGVfX2xvb3ApICJcbiIKTE9DQUxf
TEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzI0X2dldFNjb3BlX19kb25lKSAiOlxuIgovLyBsaW5l
IG51bWJlciAxMzcyCiJcdG1vdmwgMTIoJWVzaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzA4
CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlZHhcbiIKIlx0amdlICIgTE9DQUxfTEFCRUxfU1RSSU5H
KF9vZmZsaW5lYXNtXzI0X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KSAiXG4iCi8v
IGxpbmUgbnVtYmVyIDMwOQoiXHRtb3ZsIDQoJWVkaSwgJWVkeCwgOCksICVlYnhcbiIKLy8gbGlu
ZSBudW1iZXIgMzEwCiJcdG1vdmwgMCglZWRpLCAlZWR4LCA4KSwgJWVjeFxuIgovLyBsaW5lIG51
bWJlciAzMTEKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzI0X2xvYWRD
b25zdGFudE9yVmFyaWFibGVfX2RvbmUpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5l
YXNtXzI0X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KSAiOlxuIgovLyBsaW5lIG51
bWJlciAzMTMKIlx0bW92bCAtOCglZWRpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMTQKIlx0
bW92bCAxNDEyKCVlY3gpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMxNwoiXHRtb3ZsIDQoJWVj
eCwgJWVkeCwgOCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzE4CiJcdG1vdmwgMCglZWN4LCAl
ZWR4LCA4KSwgJWVjeFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMjRfbG9hZENv
bnN0YW50T3JWYXJpYWJsZV9fZG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTM3NAoiXHRtb3Zs
IDQoJWVzaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMTM3NgoiXHRtb3ZsIDE2KCVlYXgpLCAl
ZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDEzNzcKIlx0bW92bCA1MiglZWF4KSwgJWVheFxuIgovLyBs
aW5lIG51bWJlciAxMzc4CiJcdG1vdmwgJWVieCwgNCglZWF4LCAlZWR4LCA4KVxuIgovLyBsaW5l
IG51bWJlciAxMzc5CiJcdG1vdmwgJWVjeCwgMCglZWF4LCAlZWR4LCA4KVxuIgovLyBsaW5lIG51
bWJlciAxNjkKIlx0YWRkbCAkMTYsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAq
MCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9nZXRfZ2xvYmFsX3Zh
cikgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9nZXRfZ2xvYmFsX3ZhcikgIlxuIgpTWU1CT0xf
U1RSSU5HKGxsaW50X29wX2dldF9nbG9iYWxfdmFyKSAiOlxuIgovLyBsaW5lIG51bWJlciAxMzg1
CiJcdG1vdmwgOCglZXNpKSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAxMzg2CiJcdG1vdmwgNCgl
ZXNpKSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAxMzg3CiJcdG1vdmwgLTgoJWVkaSksICVlYXhc
biIKLy8gbGluZSBudW1iZXIgMTM4OAoiXHRtb3ZsIDE2KCVlYXgpLCAlZWF4XG4iCi8vIGxpbmUg
bnVtYmVyIDEzODkKIlx0bW92bCA1MiglZWF4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxMzkw
CiJcdG1vdmwgNCglZWF4LCAlZWR4LCA4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAxMzkxCiJc
dG1vdmwgMCglZWF4LCAlZWR4LCA4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAxMzkyCiJcdG1v
dmwgJWVjeCwgNCglZWRpLCAlZWJ4LCA4KVxuIgovLyBsaW5lIG51bWJlciAxMzkzCiJcdG1vdmwg
JWVkeCwgMCglZWRpLCAlZWJ4LCA4KVxuIgovLyBsaW5lIG51bWJlciAxMzk0CiJcdG1vdmwgMTIo
JWVzaSksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzc5CiJcdG1vdmwgJWVjeCwgMTYoJWVieClc
biIKLy8gbGluZSBudW1iZXIgMzgwCiJcdG1vdmwgJWVkeCwgMTIoJWVieClcbiIKLy8gbGluZSBu
dW1iZXIgMTY5CiJcdGFkZGwgJDE2LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAg
KjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfcHV0X2dsb2JhbF92
YXIpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfcHV0X2dsb2JhbF92YXIpICJcbiIKU1lNQk9M
X1NUUklORyhsbGludF9vcF9wdXRfZ2xvYmFsX3ZhcikgIjpcbiIKLy8gbGluZSBudW1iZXIgMTQw
MQoiXHRtb3ZsIDgoJWVzaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMTQwMgoiXHRtb3ZsIC04
KCVlZGkpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDE0MDMKIlx0bW92bCAxNiglZWF4KSwgJWVh
eFxuIgovLyBsaW5lIG51bWJlciAxNDA0CiJcdG1vdmwgNTIoJWVheCksICVlYXhcbiIKLy8gbGlu
ZSBudW1iZXIgMzA4CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlZHhcbiIKIlx0amdlICIgTE9DQUxf
TEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzI1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0
YW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDMwOQoiXHRtb3ZsIDQoJWVkaSwgJWVkeCwgOCksICVl
Y3hcbiIKLy8gbGluZSBudW1iZXIgMzEwCiJcdG1vdmwgMCglZWRpLCAlZWR4LCA4KSwgJWVieFxu
IgovLyBsaW5lIG51bWJlciAzMTEKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5l
YXNtXzI1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpICJcbiIKTE9DQUxfTEFCRUxfU1RS
SU5HKF9vZmZsaW5lYXNtXzI1X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KSAiOlxu
IgovLyBsaW5lIG51bWJlciAzMTMKIlx0bW92bCAtOCglZWRpKSwgJWVieFxuIgovLyBsaW5lIG51
bWJlciAzMTQKIlx0bW92bCAxNDEyKCVlYngpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMxNwoi
XHRtb3ZsIDQoJWVieCwgJWVkeCwgOCksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMzE4CiJcdG1v
dmwgMCglZWJ4LCAlZWR4LCA4KSwgJWVieFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVh
c21fMjVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIg
MTQwNgoiXHRtb3ZsIDQoJWVzaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMTQwOAoiXHRtb3Zs
ICVlY3gsIDQoJWVheCwgJWVkeCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTQwOQoiXHRtb3ZsICVl
YngsIDAoJWVheCwgJWVkeCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDEyLCAl
ZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcobGxpbnRfb3BfcmVzb2x2ZV9iYXNlKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50
X29wX3Jlc29sdmVfYmFzZSkgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX3Jlc29sdmVfYmFz
ZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBs
aW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5
OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfcmVzb2x2ZV9iYXNlKSAiXG4i
Ci8vIGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIg
MjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMjAs
ICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIg
U1lNQk9MX1NUUklORyhsbGludF9vcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKSAiXG4iCkhJREVf
U1lNQk9MKGxsaW50X29wX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpICJcbiIKU1lNQk9MX1NUUklO
RyhsbGludF9vcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKSAiOlxuIgovLyBsaW5lIG51bWJlciAx
OTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVl
c2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5H
KGxsaW50X2hlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKSAiXG4iCi8vIGxpbmUgbnVtYmVy
IDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVk
eCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMTIsICVlc2lcbiIKLy8gbGlu
ZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhs
bGludF9vcF9yZXNvbHZlX3dpdGhfYmFzZSkgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9yZXNv
bHZlX3dpdGhfYmFzZSkgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX3Jlc29sdmVfd2l0aF9i
YXNlKSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8v
IGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIg
MTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfYmFz
ZSkgIlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUg
bnVtYmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFk
ZGwgJDIwLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfcmVzb2x2ZV93aXRoX3RoaXMpICJcbiIKSElE
RV9TWU1CT0wobGxpbnRfb3BfcmVzb2x2ZV93aXRoX3RoaXMpICJcbiIKU1lNQk9MX1NUUklORyhs
bGludF9vcF9yZXNvbHZlX3dpdGhfdGhpcykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1v
dmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVl
c3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9o
ZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpICJcbiIKLy8gbGluZSBudW1iZXIgMjIyCiJcdG1vdmwg
JWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAyMjMKIlx0bW92bCAlZWR4LCAlZWRpXG4iCi8v
IGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQyMCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAK
Ilx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2dldF9i
eV9pZCkgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9nZXRfYnlfaWQpICJcbiIKU1lNQk9MX1NU
UklORyhsbGludF9vcF9nZXRfYnlfaWQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE0NDQKIlx0bW92
bCA4KCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDE0NDUKIlx0bW92bCAxNiglZXNpKSwg
JWVkeFxuIgovLyBsaW5lIG51bWJlciAzNDEKIlx0Y21wbCAkMTA3Mzc0MTgyNCwgJWVheFxuIgoi
XHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRfXzI1X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19j
b25zdGFudCkgIlxuIgovLyBsaW5lIG51bWJlciAzNjMKIlx0Y21wbCAkLTUsIDQoJWVkaSwgJWVh
eCwgOClcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wR2V0QnlJ
ZFNsb3cpICJcbiIKLy8gbGluZSBudW1iZXIgMzQzCiJcdG1vdmwgMCglZWRpLCAlZWF4LCA4KSwg
JWVieFxuIgovLyBsaW5lIG51bWJlciAzNDQKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9v
ZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yNV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzI1X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCkgIjpcbiIKLy8gbGluZSBudW1i
ZXIgMzQ2CiJcdG1vdmwgLTgoJWVkaSksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzQ3CiJcdG1v
dmwgMTQxMiglZWJ4KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAzNjMKIlx0Y21wbCAkLTUsIDQo
JWVieCwgJWVheCwgOClcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNt
X29wR2V0QnlJZFNsb3cpICJcbiIKLy8gbGluZSBudW1iZXIgMzUxCiJcdG1vdmwgMCglZWJ4LCAl
ZWF4LCA4KSwgJWVieFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWRfXzI1X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFn
Q3VzdG9tX19kb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciAxNDQ3CiJcdG1vdmwgMjAoJWVzaSks
ICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMTQ0OAoiXHRtb3ZsIDgoJWVieCksICVlYXhcbiIKLy8g
bGluZSBudW1iZXIgMTQ0OQoiXHRjbXBsICVlZHgsIDQoJWVieClcbiIKIlx0am5lICIgTE9DQUxf
TEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wR2V0QnlJZFNsb3cpICJcbiIKLy8gbGluZSBudW1i
ZXIgMTQ1MAoiXHRtb3ZsIDQoJWVzaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMTQ1MQoiXHRt
b3ZsIDQoJWVheCwgJWVjeCwgMSksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMTQ1MgoiXHRtb3Zs
IDAoJWVheCwgJWVjeCwgMSksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMTQ1MwoiXHRtb3ZsICVl
YngsIDQoJWVkaSwgJWVkeCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTQ1NAoiXHRtb3ZsICVlY3gs
IDAoJWVkaSwgJWVkeCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTQ1NQoiXHRtb3ZsIDMyKCVlc2kp
LCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDM3OQoiXHRtb3ZsICVlYngsIDE2KCVlZHgpXG4iCi8v
IGxpbmUgbnVtYmVyIDM4MAoiXHRtb3ZsICVlY3gsIDEyKCVlZHgpXG4iCi8vIGxpbmUgbnVtYmVy
IDE2OQoiXHRhZGRsICQzNiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVl
c2kpXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcEdldEJ5SWRTbG93KSAiOlxu
IgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxpbmUgbnVt
YmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5CiJcdGNh
bGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9nZXRfYnlfaWQpICJcbiIKLy8gbGluZSBu
dW1iZXIgMjIyCiJcdG1vdmwgJWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAyMjMKIlx0bW92
bCAlZWR4LCAlZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQzNiwgJWVzaVxuIgov
LyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RS
SU5HKGxsaW50X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50
X29wX2dldF9hcmd1bWVudHNfbGVuZ3RoKSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfZ2V0
X2FyZ3VtZW50c19sZW5ndGgpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE0NjYKIlx0bW92bCA4KCVl
c2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDE0NjcKIlx0bW92bCA0KCVlc2kpLCAlZWR4XG4i
Ci8vIGxpbmUgbnVtYmVyIDE0NjgKIlx0Y21wbCAkLTYsIDQoJWVkaSwgJWVheCwgOClcbiIKIlx0
am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wR2V0QXJndW1lbnRzTGVuZ3Ro
U2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxNDY5CiJcdG1vdmwgLTQ4KCVlZGkpLCAlZWN4XG4i
Ci8vIGxpbmUgbnVtYmVyIDE0NzAKIlx0c3VibCAkMSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAx
NDcxCiJcdG1vdmwgJC0xLCA0KCVlZGksICVlZHgsIDgpXG4iCi8vIGxpbmUgbnVtYmVyIDE0NzIK
Ilx0bW92bCAlZWN4LCAwKCVlZGksICVlZHgsIDgpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRh
ZGRsICQxNiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCkxP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcEdldEFyZ3VtZW50c0xlbmd0aFNsb3cpICI6
XG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVzcClcbiIKLy8gbGluZSBu
dW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTkKIlx0
Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKSAi
XG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1i
ZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAk
MTYsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2Js
ICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9wdXRfYnlfaWQpICJcbiIKSElERV9TWU1CT0wobGxp
bnRfb3BfcHV0X2J5X2lkKSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfcHV0X2J5X2lkKSAi
OlxuIgovLyBsaW5lIG51bWJlciAxNDgyCiJcdG1vdmwgNCglZXNpKSwgJWVieFxuIgovLyBsaW5l
IG51bWJlciAxNDgzCiJcdG1vdmwgMTYoJWVzaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzQx
CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlYnhcbiIKIlx0amdlICIgTE9DQUxfTEFCRUxfU1RSSU5H
KF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yNl9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQpICJcbiIKLy8gbGluZSBudW1i
ZXIgMzYzCiJcdGNtcGwgJC01LCA0KCVlZGksICVlYngsIDgpXG4iCiJcdGpuZSAiIExPQ0FMX0xB
QkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcFB1dEJ5SWRTbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVy
IDM0MwoiXHRtb3ZsIDAoJWVkaSwgJWVieCwgOCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzQ0
CiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZF9fMjZfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21f
X2RvbmUpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkX18yNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3Rv
bV9fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDM0NgoiXHRtb3ZsIC04KCVlZGkpLCAl
ZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDM0NwoiXHRtb3ZsIDE0MTIoJWVheCksICVlYXhcbiIKLy8g
bGluZSBudW1iZXIgMzYzCiJcdGNtcGwgJC01LCA0KCVlYXgsICVlYngsIDgpXG4iCiJcdGpuZSAi
IExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcFB1dEJ5SWRTbG93KSAiXG4iCi8vIGxp
bmUgbnVtYmVyIDM1MQoiXHRtb3ZsIDAoJWVheCwgJWVieCwgOCksICVlYXhcbiIKTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yNl9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSkgIjpcbiIKLy8gbGlu
ZSBudW1iZXIgMTQ4NQoiXHRtb3ZsIDEyKCVlc2kpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDE0
ODYKIlx0bW92bCA4KCVlYXgpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDE0ODcKIlx0Y21wbCAl
ZWR4LCA0KCVlYXgpXG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9v
cFB1dEJ5SWRTbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE0ODgKIlx0bW92bCAyMCglZXNpKSwg
JWVkeFxuIgovLyBsaW5lIG51bWJlciAzMjQKIlx0Y21wbCAkMTA3Mzc0MTgyNCwgJWVjeFxuIgoi
XHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMjZfbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWdfX2NvbnN0YW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDMyNQoiXHRtb3ZsIDQo
JWVkaSwgJWVjeCwgOCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzI2CiJcdG1vdmwgMCglZWRp
LCAlZWN4LCA4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMjcKIlx0am1wICIgTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtXzI2X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25l
KSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8yNl9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZ19fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMyOQoiXHRtb3ZsIC04
KCVlZGkpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDMzMAoiXHRtb3ZsIDE0MTIoJWVheCksICVl
YXhcbiIKLy8gbGluZSBudW1iZXIgMzMzCiJcdHNhbGwgJDMsICVlY3hcbiIKLy8gbGluZSBudW1i
ZXIgMzM0CiJcdGFkZGwgJWVjeCwgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMzUKIlx0bW92bCAw
KCVlYXgpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzNgoiXHRtb3ZsIDQoJWVheCksICVlYXhc
biIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzI2X2xvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnX19kb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciAxNDkxCiJcdG1vdmwgJWVheCwgNCgl
ZWJ4LCAlZWR4LCAxKVxuIgovLyBsaW5lIG51bWJlciAxNDkyCiJcdG1vdmwgJWVjeCwgMCglZWJ4
LCAlZWR4LCAxKVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMzYsICVlc2lcbiIKLy8g
bGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29m
ZmxpbmVhc21fb3BQdXRCeUlkU2xvdykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwg
JWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3Ap
XG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxw
ZXJfcHV0X2J5X2lkKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lc
biIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJl
ciAxNjkKIlx0YWRkbCAkMzYsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCgl
ZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3QpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0KSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0KSAiOlxuIgovLyBsaW5lIG51bWJlciAxNTAyCiJcdG1vdmwgNCglZXNpKSwgJWVi
eFxuIgovLyBsaW5lIG51bWJlciAxNTAzCiJcdG1vdmwgMTYoJWVzaSksICVlZHhcbiIKLy8gbGlu
ZSBudW1iZXIgMzQxCiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlYnhcbiIKIlx0amdlICIgTE9DQUxf
TEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19sb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZF9fMjdfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0
b21fX2NvbnN0YW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDM2MwoiXHRjbXBsICQtNSwgNCglZWRp
LCAlZWJ4LCA4KVxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BQ
dXRCeUlkU2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAzNDMKIlx0bW92bCAwKCVlZGksICVlYngs
IDgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDM0NAoiXHRqbXAgIiBMT0NBTF9MQUJFTF9TVFJJ
TkcoX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2xvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkX18yN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSkg
IlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2xv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDM0NgoiXHRtb3Zs
IC04KCVlZGkpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDM0NwoiXHRtb3ZsIDE0MTIoJWVheCks
ICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzYzCiJcdGNtcGwgJC01LCA0KCVlYXgsICVlYngsIDgp
XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcFB1dEJ5SWRTbG93
KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDM1MQoiXHRtb3ZsIDAoJWVheCwgJWVieCwgOCksICVlYXhc
biIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjdfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRUYWdDdXN0b21fX2RvbmUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE1MDUKIlx0bW92bCAxMigl
ZXNpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAxNTA2CiJcdGNtcGwgJWVkeCwgNCglZWF4KVxu
IgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BQdXRCeUlkU2xvdykg
IlxuIgovLyBsaW5lIG51bWJlciAxNTA4CiJcdG1vdmwgMjAoJWVzaSksICVlZHhcbiIKLy8gbGlu
ZSBudW1iZXIgMTUwOQoiXHRtb3ZsIDgoJWVheCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMTUx
MAoiXHRhZGRsICVlZHgsICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzI0CiJcdGNtcGwgJDEwNzM3
NDE4MjQsICVlY3hcbiIKIlx0amdlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX3B1
dEJ5SWRUcmFuc2l0aW9uX18yN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQp
ICJcbiIKLy8gbGluZSBudW1iZXIgMzI1CiJcdG1vdmwgNCglZWRpLCAlZWN4LCA4KSwgJWVkeFxu
IgovLyBsaW5lIG51bWJlciAzMjYKIlx0bW92bCAwKCVlZGksICVlY3gsIDgpLCAlZWN4XG4iCi8v
IGxpbmUgbnVtYmVyIDMyNwoiXHRqbXAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21f
cHV0QnlJZFRyYW5zaXRpb25fXzI3X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKSAi
XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fMjdf
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KSAiOlxuIgovLyBsaW5lIG51bWJl
ciAzMjkKIlx0bW92bCAtOCglZWRpKSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzMzAKIlx0bW92
bCAxNDEyKCVlZHgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMzMwoiXHRzYWxsICQzLCAlZWN4
XG4iCi8vIGxpbmUgbnVtYmVyIDMzNAoiXHRhZGRsICVlY3gsICVlZHhcbiIKLy8gbGluZSBudW1i
ZXIgMzM1CiJcdG1vdmwgMCglZWR4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMzYKIlx0bW92
bCA0KCVlZHgpLCAlZWR4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9wdXRCeUlk
VHJhbnNpdGlvbl9fMjdfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUpICI6XG4iCi8v
IGxpbmUgbnVtYmVyIDE1MTMKIlx0bW92bCAlZWR4LCA0KCVlYngpXG4iCi8vIGxpbmUgbnVtYmVy
IDE1MTQKIlx0bW92bCAyNCglZXNpKSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAxNTE1CiJcdG1v
dmwgJWVjeCwgMCglZWJ4KVxuIgovLyBsaW5lIG51bWJlciAxNTE2CiJcdG1vdmwgJWVkeCwgNCgl
ZWF4KVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMzYsICVlc2lcbiIKLy8gbGluZSBu
dW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGlu
dF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpICJcbiIKSElERV9TWU1CT0wobGxpbnRf
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRf
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKSAiOlxuIgovLyBsaW5lIG51bWJlciAxNTAy
CiJcdG1vdmwgNCglZXNpKSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAxNTAzCiJcdG1vdmwgMTYo
JWVzaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzQxCiJcdGNtcGwgJDEwNzM3NDE4MjQsICVl
YnhcbiIKIlx0amdlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFu
c2l0aW9uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjhfbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDM2
MwoiXHRjbXBsICQtNSwgNCglZWRpLCAlZWJ4LCA4KVxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9T
VFJJTkcoX29mZmxpbmVhc21fb3BQdXRCeUlkU2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAzNDMK
Ilx0bW92bCAwKCVlZGksICVlYngsIDgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDM0NAoiXHRq
bXAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2xv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZFRhZ0N1c3RvbV9fZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21f
cHV0QnlJZFRyYW5zaXRpb25fX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yOF9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQpICI6XG4iCi8vIGxp
bmUgbnVtYmVyIDM0NgoiXHRtb3ZsIC04KCVlZGkpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDM0
NwoiXHRtb3ZsIDE0MTIoJWVheCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzYzCiJcdGNtcGwg
JC01LCA0KCVlYXgsICVlYngsIDgpXG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2Zm
bGluZWFzbV9vcFB1dEJ5SWRTbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDM1MQoiXHRtb3ZsIDAo
JWVheCwgJWVieCwgOCksICVlYXhcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX3B1
dEJ5SWRUcmFuc2l0aW9uX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMjhfbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUpICI6XG4iCi8vIGxpbmUgbnVt
YmVyIDE1MDUKIlx0bW92bCAxMiglZXNpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAxNTA2CiJc
dGNtcGwgJWVkeCwgNCglZWF4KVxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxp
bmVhc21fb3BQdXRCeUlkU2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxNTI5CiJcdG1vdmwgMjgo
JWVzaSksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMTUzMAoiXHR0ZXN0bCAlZWJ4LCAlZWJ4XG4i
CiJcdGpueiAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlv
bl9fYWRkaXRpb25hbENoZWNrc19fMjhfYXNzZXJ0X19vaykgIlxuIgovLyBsaW5lIG51bWJlciAx
MzUKIlx0bW92bCAkMCwgMzE0ODcyNTk5OVxuIgovLyBsaW5lIG51bWJlciAxMzYKIlx0eG9ybCAl
ZWF4LCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDEzNwoiXHRjYWxsIColZWF4XG4iCkxPQ0FMX0xB
QkVMX1NUUklORyhfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fYWRkaXRpb25hbENoZWNr
c19fMjhfYXNzZXJ0X19vaykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTUzMQoiXHRtb3ZsIDgoJWVi
eCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMTUzMgoiXHR0ZXN0bCAlZWJ4LCAlZWJ4XG4iCiJc
dGpueiAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9f
YWRkaXRpb25hbENoZWNrc19fMjlfYXNzZXJ0X19vaykgIlxuIgovLyBsaW5lIG51bWJlciAxMzUK
Ilx0bW92bCAkMCwgMzE0ODcyNTk5OVxuIgovLyBsaW5lIG51bWJlciAxMzYKIlx0eG9ybCAlZWF4
LCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDEzNwoiXHRjYWxsIColZWF4XG4iCkxPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlvbl9fYWRkaXRpb25hbENoZWNrc19f
MjlfYXNzZXJ0X19vaykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTUzMwoiXHRjbXBsICQtMywgMjAo
JWVkeClcbiIKIlx0amUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fcHV0QnlJZFRy
YW5zaXRpb25fX2FkZGl0aW9uYWxDaGVja3NfX2RvbmUpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5H
KF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX19hZGRpdGlvbmFsQ2hlY2tzX19sb29wKSAi
OlxuIgovLyBsaW5lIG51bWJlciAxNTM1CiJcdG1vdmwgMTYoJWVkeCksICVlZHhcbiIKLy8gbGlu
ZSBudW1iZXIgMTUzNgoiXHRtb3ZsIDQoJWVkeCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMTUz
NwoiXHRjbXBsIDAoJWVieCksICVlZHhcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9v
ZmZsaW5lYXNtX29wUHV0QnlJZFNsb3cpICJcbiIKLy8gbGluZSBudW1iZXIgMTUzOAoiXHRhZGRs
ICQ0LCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDE1MzkKIlx0Y21wbCAkLTMsIDIwKCVlZHgpXG4i
CiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9wdXRCeUlkVHJhbnNpdGlv
bl9fYWRkaXRpb25hbENoZWNrc19fbG9vcCkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxp
bmVhc21fcHV0QnlJZFRyYW5zaXRpb25fX2FkZGl0aW9uYWxDaGVja3NfX2RvbmUpICI6XG4iCi8v
IGxpbmUgbnVtYmVyIDE1MDgKIlx0bW92bCAyMCglZXNpKSwgJWVkeFxuIgovLyBsaW5lIG51bWJl
ciAxNTA5CiJcdG1vdmwgOCglZWF4KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAxNTEwCiJcdGFk
ZGwgJWVkeCwgJWVieFxuIgovLyBsaW5lIG51bWJlciAzMjQKIlx0Y21wbCAkMTA3Mzc0MTgyNCwg
JWVjeFxuIgoiXHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fcHV0QnlJZFRy
YW5zaXRpb25fXzI5X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkgIlxuIgov
LyBsaW5lIG51bWJlciAzMjUKIlx0bW92bCA0KCVlZGksICVlY3gsIDgpLCAlZWR4XG4iCi8vIGxp
bmUgbnVtYmVyIDMyNgoiXHRtb3ZsIDAoJWVkaSwgJWVjeCwgOCksICVlY3hcbiIKLy8gbGluZSBu
dW1iZXIgMzI3CiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9wdXRCeUlk
VHJhbnNpdGlvbl9fMjlfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUpICJcbiIKTE9D
QUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0aW9uX18yOV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMyOQoi
XHRtb3ZsIC04KCVlZGkpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMzMAoiXHRtb3ZsIDE0MTIo
JWVkeCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzMzCiJcdHNhbGwgJDMsICVlY3hcbiIKLy8g
bGluZSBudW1iZXIgMzM0CiJcdGFkZGwgJWVjeCwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzMzUK
Ilx0bW92bCAwKCVlZHgpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzNgoiXHRtb3ZsIDQoJWVk
eCksICVlZHhcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX3B1dEJ5SWRUcmFuc2l0
aW9uX18yOV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSkgIjpcbiIKLy8gbGluZSBu
dW1iZXIgMTUxMwoiXHRtb3ZsICVlZHgsIDQoJWVieClcbiIKLy8gbGluZSBudW1iZXIgMTUxNAoi
XHRtb3ZsIDI0KCVlc2kpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDE1MTUKIlx0bW92bCAlZWN4
LCAwKCVlYngpXG4iCi8vIGxpbmUgbnVtYmVyIDE1MTYKIlx0bW92bCAlZWR4LCA0KCVlYXgpXG4i
Ci8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQzNiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAx
NzAKIlx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2Rl
bF9ieV9pZCkgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9kZWxfYnlfaWQpICJcbiIKU1lNQk9M
X1NUUklORyhsbGludF9vcF9kZWxfYnlfaWQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoiXHRt
b3ZsICVlZGksIDAoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwgNCgl
ZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxpbnRf
aGVscGVyX2RlbF9ieV9pZCkgIlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAl
ZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8gbGluZSBu
dW1iZXIgMTY5CiJcdGFkZGwgJDE2LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAg
KjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfZ2V0X2J5X3ZhbCkg
IlxuIgpISURFX1NZTUJPTChsbGludF9vcF9nZXRfYnlfdmFsKSAiXG4iClNZTUJPTF9TVFJJTkco
bGxpbnRfb3BfZ2V0X2J5X3ZhbCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTU1MgoiXHRtb3ZsIC04
KCVlZGkpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDE1NTMKIlx0bW92bCA4KCVlc2kpLCAlZWN4
XG4iCi8vIGxpbmUgbnVtYmVyIDE1NTQKIlx0bW92bCAxMiglZXNpKSwgJWVieFxuIgovLyBsaW5l
IG51bWJlciAxNTU1CiJcdG1vdmwgNDgoJWVkeCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzQx
CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlY3hcbiIKIlx0amdlICIgTE9DQUxfTEFCRUxfU1RSSU5H
KF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18yOV9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQpICJcbiIKLy8gbGluZSBudW1i
ZXIgMzYzCiJcdGNtcGwgJC01LCA0KCVlZGksICVlY3gsIDgpXG4iCiJcdGpuZSAiIExPQ0FMX0xB
QkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcEdldEJ5VmFsU2xvdykgIlxuIgovLyBsaW5lIG51bWJl
ciAzNDMKIlx0bW92bCAwKCVlZGksICVlY3gsIDgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDM0
NAoiXHRqbXAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRfXzI5X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9t
X19kb25lKSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZF9fMjlfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0
b21fX2NvbnN0YW50KSAiOlxuIgovLyBsaW5lIG51bWJlciAzNDYKIlx0bW92bCAtOCglZWRpKSwg
JWVheFxuIgovLyBsaW5lIG51bWJlciAzNDcKIlx0bW92bCAxNDEyKCVlYXgpLCAlZWF4XG4iCi8v
IGxpbmUgbnVtYmVyIDM2MwoiXHRjbXBsICQtNSwgNCglZWF4LCAlZWN4LCA4KVxuIgoiXHRqbmUg
IiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BHZXRCeVZhbFNsb3cpICJcbiIKLy8g
bGluZSBudW1iZXIgMzUxCiJcdG1vdmwgMCglZWF4LCAlZWN4LCA4KSwgJWVheFxuIgpMT0NBTF9M
QUJFTF9TVFJJTkcoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzI5
X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lKSAiOlxuIgovLyBs
aW5lIG51bWJlciAxNTU3CiJcdG1vdmwgNTQ0OCglZWR4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJl
ciAzNDEKIlx0Y21wbCAkMTA3Mzc0MTgyNCwgJWVieFxuIgoiXHRqZ2UgIiBMT0NBTF9MQUJFTF9T
VFJJTkcoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzMwX2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCkgIlxuIgovLyBsaW5l
IG51bWJlciAzNjMKIlx0Y21wbCAkLTEsIDQoJWVkaSwgJWVieCwgOClcbiIKIlx0am5lICIgTE9D
QUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wR2V0QnlWYWxTbG93KSAiXG4iCi8vIGxpbmUg
bnVtYmVyIDM0MwoiXHRtb3ZsIDAoJWVkaSwgJWVieCwgOCksICVlZHhcbiIKLy8gbGluZSBudW1i
ZXIgMzQ0CiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZF9fMzBfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdD
dXN0b21fX2RvbmUpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkX18zMF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRh
Z0N1c3RvbV9fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDM0NgoiXHRtb3ZsIC04KCVl
ZGkpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDM0NwoiXHRtb3ZsIDE0MTIoJWVkeCksICVlZHhc
biIKLy8gbGluZSBudW1iZXIgMzYzCiJcdGNtcGwgJC0xLCA0KCVlZHgsICVlYngsIDgpXG4iCiJc
dGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcEdldEJ5VmFsU2xvdykgIlxu
IgovLyBsaW5lIG51bWJlciAzNTEKIlx0bW92bCAwKCVlZHgsICVlYngsIDgpLCAlZWR4XG4iCkxP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZF9fMzBfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUpICI6XG4i
Ci8vIGxpbmUgbnVtYmVyIDE1NTkKIlx0Y21wbCAlZWN4LCAwKCVlYXgpXG4iCiJcdGpuZSAiIExP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcEdldEJ5VmFsU2xvdykgIlxuIgovLyBsaW5l
IG51bWJlciAxNTYwCiJcdG1vdmwgNTYoJWVheCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMTU2
MQoiXHRjbXBsIDQ4KCVlYXgpLCAlZWR4XG4iCiJcdGphZSAiIExPQ0FMX0xBQkVMX1NUUklORyhf
b2ZmbGluZWFzbV9vcEdldEJ5VmFsU2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxNTYyCiJcdG1v
dmwgNCglZXNpKSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxNTYzCiJcdG1vdmwgMTYoJWVieCwg
JWVkeCwgOCksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMTU2NAoiXHRtb3ZsIDEyKCVlYngsICVl
ZHgsIDgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDE1NjUKIlx0Y21wbCAkLTYsICVlY3hcbiIK
Ilx0amUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BHZXRCeVZhbFNsb3cpICJc
biIKLy8gbGluZSBudW1iZXIgMTU2NgoiXHRtb3ZsICVlY3gsIDQoJWVkaSwgJWVheCwgOClcbiIK
Ly8gbGluZSBudW1iZXIgMTU2NwoiXHRtb3ZsICVlZHgsIDAoJWVkaSwgJWVheCwgOClcbiIKLy8g
bGluZSBudW1iZXIgMTU2OAoiXHRtb3ZsIDE2KCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVy
IDM3OQoiXHRtb3ZsICVlY3gsIDE2KCVlYXgpXG4iCi8vIGxpbmUgbnVtYmVyIDM4MAoiXHRtb3Zs
ICVlZHgsIDEyKCVlYXgpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQyMCwgJWVzaVxu
IgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVMX1NUUklO
Ryhfb2ZmbGluZWFzbV9vcEdldEJ5VmFsU2xvdykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJc
dG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0
KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGlu
dF9oZWxwZXJfZ2V0X2J5X3ZhbCkgIlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4
LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8gbGlu
ZSBudW1iZXIgMTY5CiJcdGFkZGwgJDIwLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRq
bXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfZ2V0X2FyZ3Vt
ZW50X2J5X3ZhbCkgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFs
KSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkgIjpcbiIK
Ly8gbGluZSBudW1iZXIgMTU3OQoiXHRtb3ZsIDgoJWVzaSksICVlYXhcbiIKLy8gbGluZSBudW1i
ZXIgMTU4MAoiXHRtb3ZsIDEyKCVlc2kpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDE1ODEKIlx0
Y21wbCAkLTYsIDQoJWVkaSwgJWVheCwgOClcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5H
KF9vZmZsaW5lYXNtX29wR2V0QXJndW1lbnRCeVZhbFNsb3cpICJcbiIKLy8gbGluZSBudW1iZXIg
MzQxCiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlZHhcbiIKIlx0amdlICIgTE9DQUxfTEFCRUxfU1RS
SU5HKF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zMV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQpICJcbiIKLy8gbGluZSBu
dW1iZXIgMzYzCiJcdGNtcGwgJC0xLCA0KCVlZGksICVlZHgsIDgpXG4iCiJcdGpuZSAiIExPQ0FM
X0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcEdldEFyZ3VtZW50QnlWYWxTbG93KSAiXG4iCi8v
IGxpbmUgbnVtYmVyIDM0MwoiXHRtb3ZsIDAoJWVkaSwgJWVkeCwgOCksICVlY3hcbiIKLy8gbGlu
ZSBudW1iZXIgMzQ0CiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzFfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRUYWdDdXN0b21fX2RvbmUpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2xv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDM0NgoiXHRtb3Zs
IC04KCVlZGkpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDM0NwoiXHRtb3ZsIDE0MTIoJWVjeCks
ICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMzYzCiJcdGNtcGwgJC0xLCA0KCVlY3gsICVlZHgsIDgp
XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcEdldEFyZ3VtZW50
QnlWYWxTbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDM1MQoiXHRtb3ZsIDAoJWVjeCwgJWVkeCwg
OCksICVlY3hcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkX18zMV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3Rv
bV9fZG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTU4MwoiXHRhZGRsICQxLCAlZWN4XG4iCi8v
IGxpbmUgbnVtYmVyIDE1ODQKIlx0bW92bCAtNDgoJWVkaSksICVlZHhcbiIKLy8gbGluZSBudW1i
ZXIgMTU4NQoiXHRjbXBsICVlZHgsICVlY3hcbiIKIlx0amFlICIgTE9DQUxfTEFCRUxfU1RSSU5H
KF9vZmZsaW5lYXNtX29wR2V0QXJndW1lbnRCeVZhbFNsb3cpICJcbiIKLy8gbGluZSBudW1iZXIg
MTU4NgoiXHRuZWdsICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMTU4NwoiXHRtb3ZsIDQoJWVzaSks
ICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMTU4OAoiXHRtb3ZsIC01MiglZWRpLCAlZWN4LCA4KSwg
JWVheFxuIgovLyBsaW5lIG51bWJlciAxNTg5CiJcdG1vdmwgLTU2KCVlZGksICVlY3gsIDgpLCAl
ZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDE1OTAKIlx0bW92bCAlZWF4LCA0KCVlZGksICVlYngsIDgp
XG4iCi8vIGxpbmUgbnVtYmVyIDE1OTEKIlx0bW92bCAlZWR4LCAwKCVlZGksICVlYngsIDgpXG4i
Ci8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQxNiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAx
NzAKIlx0am1wICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcEdl
dEFyZ3VtZW50QnlWYWxTbG93KSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRp
LCAwKCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIK
Ly8gbGluZSBudW1iZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9n
ZXRfYXJndW1lbnRfYnlfdmFsKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgs
ICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5l
IG51bWJlciAxNjkKIlx0YWRkbCAkMTYsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGpt
cCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9nZXRfYnlfcG5h
bWUpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfZ2V0X2J5X3BuYW1lKSAiXG4iClNZTUJPTF9T
VFJJTkcobGxpbnRfb3BfZ2V0X2J5X3BuYW1lKSAiOlxuIgovLyBsaW5lIG51bWJlciAxNjAxCiJc
dG1vdmwgMTIoJWVzaSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzQxCiJcdGNtcGwgJDEwNzM3
NDE4MjQsICVlYXhcbiIKIlx0amdlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2xv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQpICJcbiIKLy8gbGluZSBudW1iZXIgMzYzCiJcdGNtcGwg
JC01LCA0KCVlZGksICVlYXgsIDgpXG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2Zm
bGluZWFzbV9vcEdldEJ5UG5hbWVTbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDM0MwoiXHRtb3Zs
IDAoJWVkaSwgJWVheCwgOCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzQ0CiJcdGptcCAiIExP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZF9fMzJfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUpICJcbiIK
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkX18zMl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQp
ICI6XG4iCi8vIGxpbmUgbnVtYmVyIDM0NgoiXHRtb3ZsIC04KCVlZGkpLCAlZWR4XG4iCi8vIGxp
bmUgbnVtYmVyIDM0NwoiXHRtb3ZsIDE0MTIoJWVkeCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIg
MzYzCiJcdGNtcGwgJC01LCA0KCVlZHgsICVlYXgsIDgpXG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV9vcEdldEJ5UG5hbWVTbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVy
IDM1MQoiXHRtb3ZsIDAoJWVkeCwgJWVheCwgOCksICVlZHhcbiIKTE9DQUxfTEFCRUxfU1RSSU5H
KF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zMl9sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIg
MTYwMwoiXHRtb3ZsIDE2KCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDE2MDQKIlx0Y21w
bCAwKCVlZGksICVlYXgsIDgpLCAlZWR4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhf
b2ZmbGluZWFzbV9vcEdldEJ5UG5hbWVTbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE2MDUKIlx0
bW92bCA4KCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDM0MQoiXHRjbXBsICQxMDczNzQx
ODI0LCAlZWF4XG4iCiJcdGpnZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzNfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRUYWdDdXN0b21fX2NvbnN0YW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDM2MwoiXHRjbXBsICQt
NSwgNCglZWRpLCAlZWF4LCA4KVxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxp
bmVhc21fb3BHZXRCeVBuYW1lU2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAzNDMKIlx0bW92bCAw
KCVlZGksICVlYXgsIDgpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDM0NAoiXHRqbXAgIiBMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRf
XzMzX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lKSAiXG4iCkxP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZF9fMzNfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50KSAi
OlxuIgovLyBsaW5lIG51bWJlciAzNDYKIlx0bW92bCAtOCglZWRpKSwgJWVjeFxuIgovLyBsaW5l
IG51bWJlciAzNDcKIlx0bW92bCAxNDEyKCVlY3gpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDM2
MwoiXHRjbXBsICQtNSwgNCglZWN4LCAlZWF4LCA4KVxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9T
VFJJTkcoX29mZmxpbmVhc21fb3BHZXRCeVBuYW1lU2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAz
NTEKIlx0bW92bCAwKCVlY3gsICVlYXgsIDgpLCAlZWN4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhf
b2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzNfbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE2
MDcKIlx0bW92bCAyMCglZXNpKSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxNjA4CiJcdG1vdmwg
MCglZWRpLCAlZWF4LCA4KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAxNjA5CiJcdG1vdmwgNCgl
ZWN4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxNjEwCiJcdGNtcGwgOCglZWJ4KSwgJWVheFxu
IgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BHZXRCeVBuYW1lU2xv
dykgIlxuIgovLyBsaW5lIG51bWJlciAxNjExCiJcdG1vdmwgMjQoJWVzaSksICVlYXhcbiIKLy8g
bGluZSBudW1iZXIgMTYxMgoiXHRtb3ZsIDAoJWVkaSwgJWVheCwgOCksICVlYXhcbiIKLy8gbGlu
ZSBudW1iZXIgMTYxMwoiXHRzdWJsICQxLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDE2MTQKIlx0
Y21wbCAxNiglZWJ4KSwgJWVheFxuIgoiXHRqYWUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxp
bmVhc21fb3BHZXRCeVBuYW1lU2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxNjE1CiJcdG1vdmwg
OCglZWN4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAxNjE2CiJcdG1vdmwgNCglZWN4LCAlZWF4
LCA4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAxNjE3CiJcdG1vdmwgMCglZWN4LCAlZWF4LCA4
KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAxNjE4CiJcdG1vdmwgNCglZXNpKSwgJWVheFxuIgov
LyBsaW5lIG51bWJlciAxNjE5CiJcdG1vdmwgJWVkeCwgNCglZWRpLCAlZWF4LCA4KVxuIgovLyBs
aW5lIG51bWJlciAxNjIwCiJcdG1vdmwgJWVieCwgMCglZWRpLCAlZWF4LCA4KVxuIgovLyBsaW5l
IG51bWJlciAxNjkKIlx0YWRkbCAkMjgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGpt
cCAqMCglZXNpKVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BHZXRCeVBuYW1l
U2xvdykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgov
LyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVy
IDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfZ2V0X2J5X3BuYW1lKSAi
XG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1i
ZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAk
MjgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2Js
ICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9wdXRfYnlfdmFsKSAiXG4iCkhJREVfU1lNQk9MKGxs
aW50X29wX3B1dF9ieV92YWwpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9wdXRfYnlfdmFs
KSAiOlxuIgovLyBsaW5lIG51bWJlciAxNjMwCiJcdG1vdmwgNCglZXNpKSwgJWVheFxuIgovLyBs
aW5lIG51bWJlciAzNDEKIlx0Y21wbCAkMTA3Mzc0MTgyNCwgJWVheFxuIgoiXHRqZ2UgIiBMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRf
XzM0X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCkgIlxu
IgovLyBsaW5lIG51bWJlciAzNjMKIlx0Y21wbCAkLTUsIDQoJWVkaSwgJWVheCwgOClcbiIKIlx0
am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wUHV0QnlWYWxTbG93KSAiXG4i
Ci8vIGxpbmUgbnVtYmVyIDM0MwoiXHRtb3ZsIDAoJWVkaSwgJWVheCwgOCksICVlZHhcbiIKLy8g
bGluZSBudW1iZXIgMzQ0CiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzRfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRUYWdDdXN0b21fX2RvbmUpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNt
X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zNF9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDM0NgoiXHRt
b3ZsIC04KCVlZGkpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDM0NwoiXHRtb3ZsIDE0MTIoJWVk
eCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzYzCiJcdGNtcGwgJC01LCA0KCVlZHgsICVlYXgs
IDgpXG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcFB1dEJ5VmFs
U2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAzNTEKIlx0bW92bCAwKCVlZHgsICVlYXgsIDgpLCAl
ZWR4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZF9fMzRfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2Rv
bmUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE2MzIKIlx0bW92bCA4KCVlc2kpLCAlZWF4XG4iCi8v
IGxpbmUgbnVtYmVyIDM0MQoiXHRjbXBsICQxMDczNzQxODI0LCAlZWF4XG4iCiJcdGpnZSAiIExP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZF9fMzVfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50KSAi
XG4iCi8vIGxpbmUgbnVtYmVyIDM2MwoiXHRjbXBsICQtMSwgNCglZWRpLCAlZWF4LCA4KVxuIgoi
XHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BQdXRCeVZhbFNsb3cpICJc
biIKLy8gbGluZSBudW1iZXIgMzQzCiJcdG1vdmwgMCglZWRpLCAlZWF4LCA4KSwgJWVjeFxuIgov
LyBsaW5lIG51bWJlciAzNDQKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNt
X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVh
c21fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzM1X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFudCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMzQ2CiJc
dG1vdmwgLTgoJWVkaSksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMzQ3CiJcdG1vdmwgMTQxMigl
ZWN4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzNjMKIlx0Y21wbCAkLTEsIDQoJWVjeCwgJWVh
eCwgOClcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wUHV0QnlW
YWxTbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDM1MQoiXHRtb3ZsIDAoJWVjeCwgJWVheCwgOCks
ICVlY3hcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2xvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkX18zNV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9f
ZG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTYzNAoiXHRtb3ZsIC04KCVlZGkpLCAlZWF4XG4i
Ci8vIGxpbmUgbnVtYmVyIDE2MzUKIlx0bW92bCA0OCglZWF4KSwgJWVheFxuIgovLyBsaW5lIG51
bWJlciAxNjM2CiJcdG1vdmwgNTQ0OCglZWF4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxNjM3
CiJcdGNtcGwgJWVheCwgMCglZWR4KVxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29m
ZmxpbmVhc21fb3BQdXRCeVZhbFNsb3cpICJcbiIKLy8gbGluZSBudW1iZXIgMTYzOAoiXHRjbXBs
IDQ4KCVlZHgpLCAlZWN4XG4iCiJcdGphZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFz
bV9vcFB1dEJ5VmFsU2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxNjM5CiJcdG1vdmwgNTYoJWVk
eCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMTY0MAoiXHRjbXBsICQtNiwgMTYoJWVheCwgJWVj
eCwgOClcbiIKIlx0amUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BQdXRCeVZh
bEVtcHR5KSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcFB1dEJ5VmFsU3Rv
cmVSZXN1bHQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE2NDIKIlx0bW92bCAxMiglZXNpKSwgJWVi
eFxuIgovLyBsaW5lIG51bWJlciAzMjQKIlx0Y21wbCAkMTA3Mzc0MTgyNCwgJWVieFxuIgoiXHRq
Z2UgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMzVfbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWdfX2NvbnN0YW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDMyNQoiXHRtb3ZsIDQoJWVk
aSwgJWVieCwgOCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzI2CiJcdG1vdmwgMCglZWRpLCAl
ZWJ4LCA4KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAzMjcKIlx0am1wICIgTE9DQUxfTEFCRUxf
U1RSSU5HKF9vZmZsaW5lYXNtXzM1X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKSAi
XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8zNV9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZ19fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMyOQoiXHRtb3ZsIC04KCVl
ZGkpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMzMAoiXHRtb3ZsIDE0MTIoJWVkeCksICVlZHhc
biIKLy8gbGluZSBudW1iZXIgMzMzCiJcdHNhbGwgJDMsICVlYnhcbiIKLy8gbGluZSBudW1iZXIg
MzM0CiJcdGFkZGwgJWVieCwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzMzUKIlx0bW92bCAwKCVl
ZHgpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMzNgoiXHRtb3ZsIDQoJWVkeCksICVlZHhcbiIK
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzM1X2xvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnX19kb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciAxNjQ1CiJcdG1vdmwgJWVkeCwgMTYoJWVh
eCwgJWVjeCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTY0NgoiXHRtb3ZsICVlYngsIDEyKCVlYXgs
ICVlY3gsIDgpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQxNiwgJWVzaVxuIgovLyBs
aW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2Zm
bGluZWFzbV9vcFB1dEJ5VmFsRW1wdHkpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE2NTAKIlx0YWRk
bCAkMSwgNCglZWF4KVxuIgovLyBsaW5lIG51bWJlciAxNjUxCiJcdGNtcGwgMCglZWF4KSwgJWVj
eFxuIgoiXHRqYiAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcFB1dEJ5VmFsU3Rv
cmVSZXN1bHQpICJcbiIKLy8gbGluZSBudW1iZXIgMTY1MgoiXHRsZWFsIDEoJWVjeCksICVlZHhc
biIKLy8gbGluZSBudW1iZXIgMTY1MwoiXHRtb3ZsICVlZHgsIDAoJWVheClcbiIKLy8gbGluZSBu
dW1iZXIgMTY1NAoiXHRqbXAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BQdXRC
eVZhbFN0b3JlUmVzdWx0KSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcFB1
dEJ5VmFsU2xvdykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNw
KVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUg
bnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfcHV0X2J5X3Zh
bCkgIlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUg
bnVtYmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFk
ZGwgJDE2LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfZGVsX2J5X3ZhbCkgIlxuIgpISURFX1NZTUJP
TChsbGludF9vcF9kZWxfYnlfdmFsKSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfZGVsX2J5
X3ZhbCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgov
LyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVy
IDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfZGVsX2J5X3ZhbCkgIlxu
IgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVy
IDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDE2
LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAi
IFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfcHV0X2J5X2luZGV4KSAiXG4iCkhJREVfU1lNQk9MKGxs
aW50X29wX3B1dF9ieV9pbmRleCkgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX3B1dF9ieV9p
bmRleCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgov
LyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVy
IDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfcHV0X2J5X2luZGV4KSAi
XG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1i
ZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAk
MTYsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2Js
ICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9wdXRfZ2V0dGVyKSAiXG4iCkhJREVfU1lNQk9MKGxs
aW50X29wX3B1dF9nZXR0ZXIpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9wdXRfZ2V0dGVy
KSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxp
bmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5
CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9wdXRfZ2V0dGVyKSAiXG4iCi8v
IGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIz
CiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMTYsICVl
c2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lN
Qk9MX1NUUklORyhsbGludF9vcF9wdXRfc2V0dGVyKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29w
X3B1dF9zZXR0ZXIpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9wdXRfc2V0dGVyKSAiOlxu
IgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxpbmUgbnVt
YmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5CiJcdGNh
bGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9wdXRfc2V0dGVyKSAiXG4iCi8vIGxpbmUg
bnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1v
dmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMTYsICVlc2lcbiIK
Ly8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NU
UklORyhsbGludF9vcF9sb29wKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX2xvb3ApICJcbiIK
U1lNQk9MX1NUUklORyhsbGludF9vcF9sb29wKSAiOlxuIgovLyBsaW5lIG51bWJlciAxNjg2CiJc
dG5vcFxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9qbXApICJcbiIKSElERV9T
WU1CT0wobGxpbnRfb3Bfam1wKSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3Bfam1wKSAiOlxu
IgovLyBsaW5lIG51bWJlciAxODAKIlx0bW92bCA0KCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVt
YmVyIDE3NAoiXHRzYWxsICQyLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDE3NQoiXHRhZGRsICVl
YXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTc2CiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2Js
ICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9qbXBfc2NvcGVzKSAiXG4iCkhJREVfU1lNQk9MKGxs
aW50X29wX2ptcF9zY29wZXMpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9qbXBfc2NvcGVz
KSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxp
bmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5
CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9qbXBfc2NvcGVzKSAiXG4iCi8v
IGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIz
CiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKLy8gbGluZSBudW1iZXIg
MTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9s
b29wX2lmX3RydWUpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfbG9vcF9pZl90cnVlKSAiXG4i
ClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfbG9vcF9pZl90cnVlKSAiOlxuIgovLyBsaW5lIG51bWJl
ciAxNzEzCiJcdG5vcFxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9qdHJ1ZSkg
IlxuIgpISURFX1NZTUJPTChsbGludF9vcF9qdHJ1ZSkgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50
X29wX2p0cnVlKSAiOlxuIgovLyBsaW5lIG51bWJlciAxNjk5CiJcdG1vdmwgNCglZXNpKSwgJWVk
eFxuIgovLyBsaW5lIG51bWJlciAzNDEKIlx0Y21wbCAkMTA3Mzc0MTgyNCwgJWVkeFxuIgoiXHRq
Z2UgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fanVtcFRydWVPckZhbHNlX19sb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzZfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRUYWdDdXN0b21fX2NvbnN0YW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDM2MwoiXHRjbXBsICQt
MiwgNCglZWRpLCAlZWR4LCA4KVxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxp
bmVhc21fanVtcFRydWVPckZhbHNlX19zbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDM0MwoiXHRt
b3ZsIDAoJWVkaSwgJWVkeCwgOCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzQ0CiJcdGptcCAi
IExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9qdW1wVHJ1ZU9yRmFsc2VfX2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkX18zNl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRh
Z0N1c3RvbV9fZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fanVtcFRy
dWVPckZhbHNlX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzZfbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2NvbnN0YW50KSAiOlxuIgovLyBsaW5lIG51bWJl
ciAzNDYKIlx0bW92bCAtOCglZWRpKSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAzNDcKIlx0bW92
bCAxNDEyKCVlYXgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDM2MwoiXHRjbXBsICQtMiwgNCgl
ZWF4LCAlZWR4LCA4KVxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21f
anVtcFRydWVPckZhbHNlX19zbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDM1MQoiXHRtb3ZsIDAo
JWVheCwgJWVkeCwgOCksICVlYXhcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2p1
bXBUcnVlT3JGYWxzZV9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzM2X2xvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lKSAiOlxuIgovLyBsaW5lIG51bWJl
ciAxNzE3CiJcdHRlc3RsICVlYXgsICVlYXhcbiIKIlx0am56ICIgTE9DQUxfTEFCRUxfU1RSSU5H
KF9vZmZsaW5lYXNtX2p1bXBUcnVlT3JGYWxzZV9fdGFyZ2V0KSAiXG4iCi8vIGxpbmUgbnVtYmVy
IDE2OQoiXHRhZGRsICQxMiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVl
c2kpXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9qdW1wVHJ1ZU9yRmFsc2VfX3Rh
cmdldCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTgwCiJcdG1vdmwgOCglZXNpKSwgJWVheFxuIgov
LyBsaW5lIG51bWJlciAxNzQKIlx0c2FsbCAkMiwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxNzUK
Ilx0YWRkbCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3NgoiXHRqbXAgKjAoJWVzaSlc
biIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2p1bXBUcnVlT3JGYWxzZV9fc2xvdykg
IjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5l
IG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoi
XHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfanRydWUpICJcbiIKLy8gbGluZSBu
dW1iZXIgMjIyCiJcdG1vdmwgJWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAyMjMKIlx0bW92
bCAlZWR4LCAlZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQovLyBsaW5lIG51bWJlciAxNzAKIlx0
am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2xvb3BfaWZf
ZmFsc2UpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfbG9vcF9pZl9mYWxzZSkgIlxuIgpTWU1C
T0xfU1RSSU5HKGxsaW50X29wX2xvb3BfaWZfZmFsc2UpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE3
MjIKIlx0bm9wXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2pmYWxzZSkgIlxu
IgpISURFX1NZTUJPTChsbGludF9vcF9qZmFsc2UpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9v
cF9qZmFsc2UpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE2OTkKIlx0bW92bCA0KCVlc2kpLCAlZWR4
XG4iCi8vIGxpbmUgbnVtYmVyIDM0MQoiXHRjbXBsICQxMDczNzQxODI0LCAlZWR4XG4iCiJcdGpn
ZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9qdW1wVHJ1ZU9yRmFsc2VfX2xvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZFRhZ0N1c3RvbV9fY29uc3RhbnQpICJcbiIKLy8gbGluZSBudW1iZXIgMzYzCiJcdGNtcGwgJC0y
LCA0KCVlZGksICVlZHgsIDgpXG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGlu
ZWFzbV8zN19qdW1wVHJ1ZU9yRmFsc2VfX3Nsb3cpICJcbiIKLy8gbGluZSBudW1iZXIgMzQzCiJc
dG1vdmwgMCglZWRpLCAlZWR4LCA4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAzNDQKIlx0am1w
ICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2p1bXBUcnVlT3JGYWxzZV9fbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWRfXzM3X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
VGFnQ3VzdG9tX19kb25lKSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9qdW1w
VHJ1ZU9yRmFsc2VfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkX18zN19sb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVt
YmVyIDM0NgoiXHRtb3ZsIC04KCVlZGkpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDM0NwoiXHRt
b3ZsIDE0MTIoJWVheCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzYzCiJcdGNtcGwgJC0yLCA0
KCVlYXgsICVlZHgsIDgpXG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFz
bV8zN19qdW1wVHJ1ZU9yRmFsc2VfX3Nsb3cpICJcbiIKLy8gbGluZSBudW1iZXIgMzUxCiJcdG1v
dmwgMCglZWF4LCAlZWR4LCA4KSwgJWVheFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVh
c21fanVtcFRydWVPckZhbHNlX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fMzdfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUpICI6XG4iCi8vIGxpbmUg
bnVtYmVyIDE3MjYKIlx0dGVzdGwgJWVheCwgJWVheFxuIgoiXHRqeiAiIExPQ0FMX0xBQkVMX1NU
UklORyhfb2ZmbGluZWFzbV8zN19qdW1wVHJ1ZU9yRmFsc2VfX3RhcmdldCkgIlxuIgovLyBsaW5l
IG51bWJlciAxNjkKIlx0YWRkbCAkMTIsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGpt
cCAqMCglZXNpKVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMzdfanVtcFRydWVP
ckZhbHNlX190YXJnZXQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE4MAoiXHRtb3ZsIDgoJWVzaSks
ICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMTc0CiJcdHNhbGwgJDIsICVlYXhcbiIKLy8gbGluZSBu
dW1iZXIgMTc1CiJcdGFkZGwgJWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzYKIlx0am1w
ICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8zN19qdW1wVHJ1ZU9y
RmFsc2VfX3Nsb3cpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVz
cClcbiIKLy8gbGluZSBudW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5l
IG51bWJlciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfaGVscGVyX2pmYWxzZSkg
IlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVt
YmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5Ci8vIGxpbmUg
bnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxp
bnRfb3BfamVxX251bGwpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfamVxX251bGwpICJcbiIK
U1lNQk9MX1NUUklORyhsbGludF9vcF9qZXFfbnVsbCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTcz
MQoiXHRtb3ZsIDQoJWVzaSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMTczMgoiXHRtb3ZsIDQo
JWVkaSwgJWVheCwgOCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMTczMwoiXHRtb3ZsIDAoJWVk
aSwgJWVheCwgOCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMTczNAoiXHRjbXBsICQtNSwgJWVk
eFxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fZXF1YWxOdWxsX19p
bW1lZGlhdGUpICJcbiIKLy8gbGluZSBudW1iZXIgMTczNQoiXHRtb3ZsIDQoJWVheCksICVlY3hc
biIKLy8gbGluZSBudW1iZXIgMTc1MQoiXHR0ZXN0YiAkMSwgOSglZWN4KVxuIgoiXHRqbnogIiBM
T0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fZXF1YWxOdWxsX190YXJnZXQpICJcbiIKLy8g
bGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDEyLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoi
XHRqbXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2VxdWFsTnVs
bF9fdGFyZ2V0KSAiOlxuIgovLyBsaW5lIG51bWJlciAxODAKIlx0bW92bCA4KCVlc2kpLCAlZWF4
XG4iCi8vIGxpbmUgbnVtYmVyIDE3NAoiXHRzYWxsICQyLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVy
IDE3NQoiXHRhZGRsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTc2CiJcdGptcCAqMCgl
ZXNpKVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fZXF1YWxOdWxsX19pbW1lZGlh
dGUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE3NDMKIlx0b3JsICQxLCAlZWR4XG4iCi8vIGxpbmUg
bnVtYmVyIDE3NTIKIlx0Y21wbCAkLTMsICVlZHhcbiIKIlx0amUgIiBMT0NBTF9MQUJFTF9TVFJJ
TkcoX29mZmxpbmVhc21fZXF1YWxOdWxsX190YXJnZXQpICJcbiIKLy8gbGluZSBudW1iZXIgMTY5
CiJcdGFkZGwgJDEyLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlc
biIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3Bfam5lcV9udWxsKSAiXG4iCkhJREVf
U1lNQk9MKGxsaW50X29wX2puZXFfbnVsbCkgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2pu
ZXFfbnVsbCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTczMQoiXHRtb3ZsIDQoJWVzaSksICVlYXhc
biIKLy8gbGluZSBudW1iZXIgMTczMgoiXHRtb3ZsIDQoJWVkaSwgJWVheCwgOCksICVlZHhcbiIK
Ly8gbGluZSBudW1iZXIgMTczMwoiXHRtb3ZsIDAoJWVkaSwgJWVheCwgOCksICVlYXhcbiIKLy8g
bGluZSBudW1iZXIgMTczNAoiXHRjbXBsICQtNSwgJWVkeFxuIgoiXHRqbmUgIiBMT0NBTF9MQUJF
TF9TVFJJTkcoX29mZmxpbmVhc21fMzdfZXF1YWxOdWxsX19pbW1lZGlhdGUpICJcbiIKLy8gbGlu
ZSBudW1iZXIgMTczNQoiXHRtb3ZsIDQoJWVheCksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMTc1
OAoiXHR0ZXN0YiAkMSwgOSglZWN4KVxuIgoiXHRqeiAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2Zm
bGluZWFzbV8zN19lcXVhbE51bGxfX3RhcmdldCkgIlxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0
YWRkbCAkMTIsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgpM
T0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMzdfZXF1YWxOdWxsX190YXJnZXQpICI6XG4i
Ci8vIGxpbmUgbnVtYmVyIDE4MAoiXHRtb3ZsIDgoJWVzaSksICVlYXhcbiIKLy8gbGluZSBudW1i
ZXIgMTc0CiJcdHNhbGwgJDIsICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMTc1CiJcdGFkZGwgJWVh
eCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzYKIlx0am1wICowKCVlc2kpXG4iCkxPQ0FMX0xB
QkVMX1NUUklORyhfb2ZmbGluZWFzbV8zN19lcXVhbE51bGxfX2ltbWVkaWF0ZSkgIjpcbiIKLy8g
bGluZSBudW1iZXIgMTc0MwoiXHRvcmwgJDEsICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMTc1OQoi
XHRjbXBsICQtMywgJWVkeFxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVh
c21fMzdfZXF1YWxOdWxsX190YXJnZXQpICJcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwg
JDEyLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9i
bCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3Bfam5lcV9wdHIpICJcbiIKSElERV9TWU1CT0wobGxp
bnRfb3Bfam5lcV9wdHIpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9qbmVxX3B0cikgIjpc
biIKLy8gbGluZSBudW1iZXIgMTc2NAoiXHRtb3ZsIDQoJWVzaSksICVlYXhcbiIKLy8gbGluZSBu
dW1iZXIgMTc2NQoiXHRtb3ZsIDgoJWVzaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMTc2Ngoi
XHRjbXBsICQtNSwgNCglZWRpLCAlZWF4LCA4KVxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJ
TkcoX29mZmxpbmVhc21fb3BKbmVxUHRyQnJhbmNoKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE3NjcK
Ilx0Y21wbCAlZWR4LCAwKCVlZGksICVlYXgsIDgpXG4iCiJcdGplICIgTE9DQUxfTEFCRUxfU1RS
SU5HKF9vZmZsaW5lYXNtX29wSm5lcVB0ckZhbGxUaHJvdWdoKSAiXG4iCkxPQ0FMX0xBQkVMX1NU
UklORyhfb2ZmbGluZWFzbV9vcEpuZXFQdHJCcmFuY2gpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE4
MAoiXHRtb3ZsIDEyKCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDE3NAoiXHRzYWxsICQy
LCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDE3NQoiXHRhZGRsICVlYXgsICVlc2lcbiIKLy8gbGlu
ZSBudW1iZXIgMTc2CiJcdGptcCAqMCglZXNpKVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxp
bmVhc21fb3BKbmVxUHRyRmFsbFRocm91Z2gpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRh
ZGRsICQxNiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCiIu
Z2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2xvb3BfaWZfbGVzcykgIlxuIgpISURFX1NZ
TUJPTChsbGludF9vcF9sb29wX2lmX2xlc3MpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9s
b29wX2lmX2xlc3MpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE4MTMKIlx0bm9wXG4iCiIuZ2xvYmwg
IiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2psZXNzKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29w
X2psZXNzKSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3Bfamxlc3MpICI6XG4iCi8vIGxpbmUg
bnVtYmVyIDE3NzUKIlx0bW92bCA0KCVlc2kpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDE3NzYK
Ilx0bW92bCA4KCVlc2kpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMwOAoiXHRjbXBsICQxMDcz
NzQxODI0LCAlZWN4XG4iCiJcdGpnZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9j
b21wYXJlX18zN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkgIlxuIgovLyBsaW5l
IG51bWJlciAzMDkKIlx0bW92bCA0KCVlZGksICVlY3gsIDgpLCAlZWF4XG4iCi8vIGxpbmUgbnVt
YmVyIDMxMAoiXHRtb3ZsIDAoJWVkaSwgJWVjeCwgOCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIg
MzExCiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9jb21wYXJlX18zN19s
b2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2Zm
bGluZWFzbV9jb21wYXJlX18zN19sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkgIjpc
biIKLy8gbGluZSBudW1iZXIgMzEzCiJcdG1vdmwgLTgoJWVkaSksICVlZHhcbiIKLy8gbGluZSBu
dW1iZXIgMzE0CiJcdG1vdmwgMTQxMiglZWR4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzMTcK
Ilx0bW92bCA0KCVlZHgsICVlY3gsIDgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDMxOAoiXHRt
b3ZsIDAoJWVkeCwgJWVjeCwgOCksICVlZHhcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5l
YXNtX2NvbXBhcmVfXzM3X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpICI6XG4iCi8vIGxp
bmUgbnVtYmVyIDMyNAoiXHRjbXBsICQxMDczNzQxODI0LCAlZWJ4XG4iCiJcdGpnZSAiIExPQ0FM
X0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9jb21wYXJlX18zN19sb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZ19fY29uc3RhbnQpICJcbiIKLy8gbGluZSBudW1iZXIgMzI1CiJcdG1vdmwgNCglZWRp
LCAlZWJ4LCA4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMjYKIlx0bW92bCAwKCVlZGksICVl
YngsIDgpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMyNwoiXHRqbXAgIiBMT0NBTF9MQUJFTF9T
VFJJTkcoX29mZmxpbmVhc21fY29tcGFyZV9fMzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdf
X2RvbmUpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzM3X2xv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkgIjpcbiIKLy8gbGluZSBudW1iZXIg
MzI5CiJcdG1vdmwgLTgoJWVkaSksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMzMwCiJcdG1vdmwg
MTQxMiglZWN4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMzMKIlx0c2FsbCAkMywgJWVieFxu
IgovLyBsaW5lIG51bWJlciAzMzQKIlx0YWRkbCAlZWJ4LCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVy
IDMzNQoiXHRtb3ZsIDAoJWVjeCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzM2CiJcdG1vdmwg
NCglZWN4KSwgJWVjeFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fY29tcGFyZV9f
MzdfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2RvbmUpICI6XG4iCi8vIGxpbmUgbnVtYmVy
IDE3NzkKIlx0Y21wbCAkLTEsICVlYXhcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9v
ZmZsaW5lYXNtX2NvbXBhcmVfX29wMU5vdEludCkgIlxuIgovLyBsaW5lIG51bWJlciAxNzgwCiJc
dGNtcGwgJC0xLCAlZWN4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFz
bV9jb21wYXJlX19vcDJOb3RJbnQpICJcbiIKLy8gbGluZSBudW1iZXIgMTgxNwoiXHRjbXBsICVl
YngsICVlZHhcbiIKIlx0amwgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fY29tcGFy
ZV9fanVtcFRhcmdldCkgIlxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMTYsICVlc2lc
biIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgpMT0NBTF9MQUJFTF9TVFJJ
TkcoX29mZmxpbmVhc21fY29tcGFyZV9fb3AxTm90SW50KSAiOlxuIgovLyBsaW5lIG51bWJlciAx
Nzg1CiJcdGNtcGwgJC03LCAlZWF4XG4iCiJcdGphICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZs
aW5lYXNtX2NvbXBhcmVfX3Nsb3cpICJcbiIKLy8gbGluZSBudW1iZXIgMTc4NgoiXHRjbXBsICQt
NywgJWVjeFxuIgoiXHRqYiAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9jb21wYXJl
X19vcDFOb3RJbnRPcDJEb3VibGUpICJcbiIKLy8gbGluZSBudW1iZXIgMTc4NwoiXHRjbXBsICQt
MSwgJWVjeFxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fY29tcGFy
ZV9fc2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxNzg4CiJcdGN2dHNpMnNkICVlYngsICV4bW0x
XG4iCi8vIGxpbmUgbnVtYmVyIDE3ODkKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZs
aW5lYXNtX2NvbXBhcmVfX29wMU5vdEludFJlYWR5KSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhf
b2ZmbGluZWFzbV9jb21wYXJlX19vcDFOb3RJbnRPcDJEb3VibGUpICI6XG4iCi8vIGxpbmUgbnVt
YmVyIDE3OTEKIlx0bW92ZCAlZWJ4LCAleG1tMVxuIgoiXHRtb3ZkICVlY3gsICV4bW03XG4iCiJc
dHBzbGxxICQzMiwgJXhtbTdcbiIKIlx0cG9yICV4bW03LCAleG1tMVxuIgpMT0NBTF9MQUJFTF9T
VFJJTkcoX29mZmxpbmVhc21fY29tcGFyZV9fb3AxTm90SW50UmVhZHkpICI6XG4iCi8vIGxpbmUg
bnVtYmVyIDE3OTMKIlx0bW92ZCAlZWR4LCAleG1tMFxuIgoiXHRtb3ZkICVlYXgsICV4bW03XG4i
CiJcdHBzbGxxICQzMiwgJXhtbTdcbiIKIlx0cG9yICV4bW03LCAleG1tMFxuIgovLyBsaW5lIG51
bWJlciAxODE4CiJcdHVjb21pc2QgJXhtbTAsICV4bW0xXG4iCiJcdGphICIgTE9DQUxfTEFCRUxf
U1RSSU5HKF9vZmZsaW5lYXNtX2NvbXBhcmVfX2p1bXBUYXJnZXQpICJcbiIKLy8gbGluZSBudW1i
ZXIgMTY5CiJcdGFkZGwgJDE2LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAo
JWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2NvbXBhcmVfX29wMk5vdElu
dCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTc5OAoiXHRjdnRzaTJzZCAlZWR4LCAleG1tMFxuIgov
LyBsaW5lIG51bWJlciAxNzk5CiJcdGNtcGwgJC03LCAlZWN4XG4iCiJcdGphICIgTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtX2NvbXBhcmVfX3Nsb3cpICJcbiIKLy8gbGluZSBudW1iZXIg
MTgwMAoiXHRtb3ZkICVlYngsICV4bW0xXG4iCiJcdG1vdmQgJWVjeCwgJXhtbTdcbiIKIlx0cHNs
bHEgJDMyLCAleG1tN1xuIgoiXHRwb3IgJXhtbTcsICV4bW0xXG4iCi8vIGxpbmUgbnVtYmVyIDE4
MTgKIlx0dWNvbWlzZCAleG1tMCwgJXhtbTFcbiIKIlx0amEgIiBMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fY29tcGFyZV9fanVtcFRhcmdldCkgIlxuIgovLyBsaW5lIG51bWJlciAxNjkK
Ilx0YWRkbCAkMTYsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxu
IgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fY29tcGFyZV9fanVtcFRhcmdldCkgIjpc
biIKLy8gbGluZSBudW1iZXIgMTgwCiJcdG1vdmwgMTIoJWVzaSksICVlYXhcbiIKLy8gbGluZSBu
dW1iZXIgMTc0CiJcdHNhbGwgJDIsICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMTc1CiJcdGFkZGwg
JWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzYKIlx0am1wICowKCVlc2kpXG4iCkxPQ0FM
X0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9jb21wYXJlX19zbG93KSAiOlxuIgovLyBsaW5lIG51
bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5NQoiXHRt
b3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xf
U1RSSU5HKGxsaW50X2hlbHBlcl9qbGVzcykgIlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92
bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIK
Ly8gbGluZSBudW1iZXIgMTY5Ci8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIK
Ii5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3Bfam5sZXNzKSAiXG4iCkhJREVfU1lNQk9M
KGxsaW50X29wX2pubGVzcykgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2pubGVzcykgIjpc
biIKLy8gbGluZSBudW1iZXIgMTc3NQoiXHRtb3ZsIDQoJWVzaSksICVlY3hcbiIKLy8gbGluZSBu
dW1iZXIgMTc3NgoiXHRtb3ZsIDgoJWVzaSksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzA4CiJc
dGNtcGwgJDEwNzM3NDE4MjQsICVlY3hcbiIKIlx0amdlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9v
ZmZsaW5lYXNtX2NvbXBhcmVfXzM4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KSAi
XG4iCi8vIGxpbmUgbnVtYmVyIDMwOQoiXHRtb3ZsIDQoJWVkaSwgJWVjeCwgOCksICVlYXhcbiIK
Ly8gbGluZSBudW1iZXIgMzEwCiJcdG1vdmwgMCglZWRpLCAlZWN4LCA4KSwgJWVkeFxuIgovLyBs
aW5lIG51bWJlciAzMTEKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2Nv
bXBhcmVfXzM4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpICJcbiIKTE9DQUxfTEFCRUxf
U1RSSU5HKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzM4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2Nv
bnN0YW50KSAiOlxuIgovLyBsaW5lIG51bWJlciAzMTMKIlx0bW92bCAtOCglZWRpKSwgJWVkeFxu
IgovLyBsaW5lIG51bWJlciAzMTQKIlx0bW92bCAxNDEyKCVlZHgpLCAlZWR4XG4iCi8vIGxpbmUg
bnVtYmVyIDMxNwoiXHRtb3ZsIDQoJWVkeCwgJWVjeCwgOCksICVlYXhcbiIKLy8gbGluZSBudW1i
ZXIgMzE4CiJcdG1vdmwgMCglZWR4LCAlZWN4LCA4KSwgJWVkeFxuIgpMT0NBTF9MQUJFTF9TVFJJ
TkcoX29mZmxpbmVhc21fY29tcGFyZV9fMzhfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkg
IjpcbiIKLy8gbGluZSBudW1iZXIgMzI0CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlYnhcbiIKIlx0
amdlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzM4X2xvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkgIlxuIgovLyBsaW5lIG51bWJlciAzMjUKIlx0
bW92bCA0KCVlZGksICVlYngsIDgpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMyNgoiXHRtb3Zs
IDAoJWVkaSwgJWVieCwgOCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzI3CiJcdGptcCAiIExP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9jb21wYXJlX18zOF9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZ19fZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fY29t
cGFyZV9fMzhfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KSAiOlxuIgovLyBs
aW5lIG51bWJlciAzMjkKIlx0bW92bCAtOCglZWRpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAz
MzAKIlx0bW92bCAxNDEyKCVlY3gpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzMwoiXHRzYWxs
ICQzLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMzNAoiXHRhZGRsICVlYngsICVlY3hcbiIKLy8g
bGluZSBudW1iZXIgMzM1CiJcdG1vdmwgMCglZWN4KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAz
MzYKIlx0bW92bCA0KCVlY3gpLCAlZWN4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFz
bV9jb21wYXJlX18zOF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSkgIjpcbiIKLy8g
bGluZSBudW1iZXIgMTc3OQoiXHRjbXBsICQtMSwgJWVheFxuIgoiXHRqbmUgIiBMT0NBTF9MQUJF
TF9TVFJJTkcoX29mZmxpbmVhc21fMzhfY29tcGFyZV9fb3AxTm90SW50KSAiXG4iCi8vIGxpbmUg
bnVtYmVyIDE3ODAKIlx0Y21wbCAkLTEsICVlY3hcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RS
SU5HKF9vZmZsaW5lYXNtXzM4X2NvbXBhcmVfX29wMk5vdEludCkgIlxuIgovLyBsaW5lIG51bWJl
ciAxODI1CiJcdGNtcGwgJWVieCwgJWVkeFxuIgoiXHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fMzhfY29tcGFyZV9fanVtcFRhcmdldCkgIlxuIgovLyBsaW5lIG51bWJlciAx
NjkKIlx0YWRkbCAkMTYsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNp
KVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMzhfY29tcGFyZV9fb3AxTm90SW50
KSAiOlxuIgovLyBsaW5lIG51bWJlciAxNzg1CiJcdGNtcGwgJC03LCAlZWF4XG4iCiJcdGphICIg
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzM4X2NvbXBhcmVfX3Nsb3cpICJcbiIKLy8g
bGluZSBudW1iZXIgMTc4NgoiXHRjbXBsICQtNywgJWVjeFxuIgoiXHRqYiAiIExPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV8zOF9jb21wYXJlX19vcDFOb3RJbnRPcDJEb3VibGUpICJcbiIK
Ly8gbGluZSBudW1iZXIgMTc4NwoiXHRjbXBsICQtMSwgJWVjeFxuIgoiXHRqbmUgIiBMT0NBTF9M
QUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMzhfY29tcGFyZV9fc2xvdykgIlxuIgovLyBsaW5lIG51
bWJlciAxNzg4CiJcdGN2dHNpMnNkICVlYngsICV4bW0xXG4iCi8vIGxpbmUgbnVtYmVyIDE3ODkK
Ilx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzM4X2NvbXBhcmVfX29wMU5v
dEludFJlYWR5KSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8zOF9jb21wYXJl
X19vcDFOb3RJbnRPcDJEb3VibGUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE3OTEKIlx0bW92ZCAl
ZWJ4LCAleG1tMVxuIgoiXHRtb3ZkICVlY3gsICV4bW03XG4iCiJcdHBzbGxxICQzMiwgJXhtbTdc
biIKIlx0cG9yICV4bW03LCAleG1tMVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21f
MzhfY29tcGFyZV9fb3AxTm90SW50UmVhZHkpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE3OTMKIlx0
bW92ZCAlZWR4LCAleG1tMFxuIgoiXHRtb3ZkICVlYXgsICV4bW03XG4iCiJcdHBzbGxxICQzMiwg
JXhtbTdcbiIKIlx0cG9yICV4bW03LCAleG1tMFxuIgovLyBsaW5lIG51bWJlciAxODI2CiJcdHVj
b21pc2QgJXhtbTAsICV4bW0xXG4iCiJcdGpiZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGlu
ZWFzbV8zOF9jb21wYXJlX19qdW1wVGFyZ2V0KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRh
ZGRsICQxNiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCkxP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8zOF9jb21wYXJlX19vcDJOb3RJbnQpICI6XG4i
Ci8vIGxpbmUgbnVtYmVyIDE3OTgKIlx0Y3Z0c2kyc2QgJWVkeCwgJXhtbTBcbiIKLy8gbGluZSBu
dW1iZXIgMTc5OQoiXHRjbXBsICQtNywgJWVjeFxuIgoiXHRqYSAiIExPQ0FMX0xBQkVMX1NUUklO
Ryhfb2ZmbGluZWFzbV8zOF9jb21wYXJlX19zbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE4MDAK
Ilx0bW92ZCAlZWJ4LCAleG1tMVxuIgoiXHRtb3ZkICVlY3gsICV4bW03XG4iCiJcdHBzbGxxICQz
MiwgJXhtbTdcbiIKIlx0cG9yICV4bW03LCAleG1tMVxuIgovLyBsaW5lIG51bWJlciAxODI2CiJc
dHVjb21pc2QgJXhtbTAsICV4bW0xXG4iCiJcdGpiZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2Zm
bGluZWFzbV8zOF9jb21wYXJlX19qdW1wVGFyZ2V0KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoi
XHRhZGRsICQxNiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4i
CkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8zOF9jb21wYXJlX19qdW1wVGFyZ2V0KSAi
OlxuIgovLyBsaW5lIG51bWJlciAxODAKIlx0bW92bCAxMiglZXNpKSwgJWVheFxuIgovLyBsaW5l
IG51bWJlciAxNzQKIlx0c2FsbCAkMiwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxNzUKIlx0YWRk
bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3NgoiXHRqbXAgKjAoJWVzaSlcbiIKTE9D
QUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzM4X2NvbXBhcmVfX3Nsb3cpICI6XG4iCi8vIGxp
bmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk1
CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTkKIlx0Y2FsbCAiIFNZ
TUJPTF9TVFJJTkcobGxpbnRfaGVscGVyX2pubGVzcykgIlxuIgovLyBsaW5lIG51bWJlciAyMjIK
Ilx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRtb3ZsICVlZHgsICVl
ZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5Ci8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVz
aSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyKSAi
XG4iCkhJREVfU1lNQk9MKGxsaW50X29wX2xvb3BfaWZfZ3JlYXRlcikgIlxuIgpTWU1CT0xfU1RS
SU5HKGxsaW50X29wX2xvb3BfaWZfZ3JlYXRlcikgIjpcbiIKLy8gbGluZSBudW1iZXIgMTgzMQoi
XHRub3BcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfamdyZWF0ZXIpICJcbiIK
SElERV9TWU1CT0wobGxpbnRfb3BfamdyZWF0ZXIpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9v
cF9qZ3JlYXRlcikgIjpcbiIKLy8gbGluZSBudW1iZXIgMTc3NQoiXHRtb3ZsIDQoJWVzaSksICVl
Y3hcbiIKLy8gbGluZSBudW1iZXIgMTc3NgoiXHRtb3ZsIDgoJWVzaSksICVlYnhcbiIKLy8gbGlu
ZSBudW1iZXIgMzA4CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlY3hcbiIKIlx0amdlICIgTE9DQUxf
TEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzM5X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2NvbnN0YW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDMwOQoiXHRtb3ZsIDQoJWVkaSwgJWVj
eCwgOCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzEwCiJcdG1vdmwgMCglZWRpLCAlZWN4LCA4
KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzMTEKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5H
KF9vZmZsaW5lYXNtX2NvbXBhcmVfXzM5X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpICJc
biIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzM5X2xvYWRDb25zdGFu
dE9yVmFyaWFibGVfX2NvbnN0YW50KSAiOlxuIgovLyBsaW5lIG51bWJlciAzMTMKIlx0bW92bCAt
OCglZWRpKSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzMTQKIlx0bW92bCAxNDEyKCVlZHgpLCAl
ZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMxNwoiXHRtb3ZsIDQoJWVkeCwgJWVjeCwgOCksICVlYXhc
biIKLy8gbGluZSBudW1iZXIgMzE4CiJcdG1vdmwgMCglZWR4LCAlZWN4LCA4KSwgJWVkeFxuIgpM
T0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fY29tcGFyZV9fMzlfbG9hZENvbnN0YW50T3JW
YXJpYWJsZV9fZG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMzI0CiJcdGNtcGwgJDEwNzM3NDE4
MjQsICVlYnhcbiIKIlx0amdlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2NvbXBh
cmVfXzM5X2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkgIlxuIgovLyBsaW5l
IG51bWJlciAzMjUKIlx0bW92bCA0KCVlZGksICVlYngsIDgpLCAlZWN4XG4iCi8vIGxpbmUgbnVt
YmVyIDMyNgoiXHRtb3ZsIDAoJWVkaSwgJWVieCwgOCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIg
MzI3CiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9jb21wYXJlX18zOV9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fY29tcGFyZV9fMzlfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0
YW50KSAiOlxuIgovLyBsaW5lIG51bWJlciAzMjkKIlx0bW92bCAtOCglZWRpKSwgJWVjeFxuIgov
LyBsaW5lIG51bWJlciAzMzAKIlx0bW92bCAxNDEyKCVlY3gpLCAlZWN4XG4iCi8vIGxpbmUgbnVt
YmVyIDMzMwoiXHRzYWxsICQzLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMzNAoiXHRhZGRsICVl
YngsICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMzM1CiJcdG1vdmwgMCglZWN4KSwgJWVieFxuIgov
LyBsaW5lIG51bWJlciAzMzYKIlx0bW92bCA0KCVlY3gpLCAlZWN4XG4iCkxPQ0FMX0xBQkVMX1NU
UklORyhfb2ZmbGluZWFzbV9jb21wYXJlX18zOV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19f
ZG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTc3OQoiXHRjbXBsICQtMSwgJWVheFxuIgoiXHRq
bmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMzlfY29tcGFyZV9fb3AxTm90SW50
KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE3ODAKIlx0Y21wbCAkLTEsICVlY3hcbiIKIlx0am5lICIg
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzM5X2NvbXBhcmVfX29wMk5vdEludCkgIlxu
IgovLyBsaW5lIG51bWJlciAxODM1CiJcdGNtcGwgJWVieCwgJWVkeFxuIgoiXHRqZyAiIExPQ0FM
X0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8zOV9jb21wYXJlX19qdW1wVGFyZ2V0KSAiXG4iCi8v
IGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQxNiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAK
Ilx0am1wICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8zOV9jb21w
YXJlX19vcDFOb3RJbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE3ODUKIlx0Y21wbCAkLTcsICVl
YXhcbiIKIlx0amEgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMzlfY29tcGFyZV9f
c2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxNzg2CiJcdGNtcGwgJC03LCAlZWN4XG4iCiJcdGpi
ICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzM5X2NvbXBhcmVfX29wMU5vdEludE9w
MkRvdWJsZSkgIlxuIgovLyBsaW5lIG51bWJlciAxNzg3CiJcdGNtcGwgJC0xLCAlZWN4XG4iCiJc
dGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8zOV9jb21wYXJlX19zbG93KSAi
XG4iCi8vIGxpbmUgbnVtYmVyIDE3ODgKIlx0Y3Z0c2kyc2QgJWVieCwgJXhtbTFcbiIKLy8gbGlu
ZSBudW1iZXIgMTc4OQoiXHRqbXAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMzlf
Y29tcGFyZV9fb3AxTm90SW50UmVhZHkpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5l
YXNtXzM5X2NvbXBhcmVfX29wMU5vdEludE9wMkRvdWJsZSkgIjpcbiIKLy8gbGluZSBudW1iZXIg
MTc5MQoiXHRtb3ZkICVlYngsICV4bW0xXG4iCiJcdG1vdmQgJWVjeCwgJXhtbTdcbiIKIlx0cHNs
bHEgJDMyLCAleG1tN1xuIgoiXHRwb3IgJXhtbTcsICV4bW0xXG4iCkxPQ0FMX0xBQkVMX1NUUklO
Ryhfb2ZmbGluZWFzbV8zOV9jb21wYXJlX19vcDFOb3RJbnRSZWFkeSkgIjpcbiIKLy8gbGluZSBu
dW1iZXIgMTc5MwoiXHRtb3ZkICVlZHgsICV4bW0wXG4iCiJcdG1vdmQgJWVheCwgJXhtbTdcbiIK
Ilx0cHNsbHEgJDMyLCAleG1tN1xuIgoiXHRwb3IgJXhtbTcsICV4bW0wXG4iCi8vIGxpbmUgbnVt
YmVyIDE4MzYKIlx0dWNvbWlzZCAleG1tMSwgJXhtbTBcbiIKIlx0amEgIiBMT0NBTF9MQUJFTF9T
VFJJTkcoX29mZmxpbmVhc21fMzlfY29tcGFyZV9fanVtcFRhcmdldCkgIlxuIgovLyBsaW5lIG51
bWJlciAxNjkKIlx0YWRkbCAkMTYsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAq
MCglZXNpKVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMzlfY29tcGFyZV9fb3Ay
Tm90SW50KSAiOlxuIgovLyBsaW5lIG51bWJlciAxNzk4CiJcdGN2dHNpMnNkICVlZHgsICV4bW0w
XG4iCi8vIGxpbmUgbnVtYmVyIDE3OTkKIlx0Y21wbCAkLTcsICVlY3hcbiIKIlx0amEgIiBMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fMzlfY29tcGFyZV9fc2xvdykgIlxuIgovLyBsaW5l
IG51bWJlciAxODAwCiJcdG1vdmQgJWVieCwgJXhtbTFcbiIKIlx0bW92ZCAlZWN4LCAleG1tN1xu
IgoiXHRwc2xscSAkMzIsICV4bW03XG4iCiJcdHBvciAleG1tNywgJXhtbTFcbiIKLy8gbGluZSBu
dW1iZXIgMTgzNgoiXHR1Y29taXNkICV4bW0xLCAleG1tMFxuIgoiXHRqYSAiIExPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV8zOV9jb21wYXJlX19qdW1wVGFyZ2V0KSAiXG4iCi8vIGxpbmUg
bnVtYmVyIDE2OQoiXHRhZGRsICQxNiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1w
ICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV8zOV9jb21wYXJlX19q
dW1wVGFyZ2V0KSAiOlxuIgovLyBsaW5lIG51bWJlciAxODAKIlx0bW92bCAxMiglZXNpKSwgJWVh
eFxuIgovLyBsaW5lIG51bWJlciAxNzQKIlx0c2FsbCAkMiwgJWVheFxuIgovLyBsaW5lIG51bWJl
ciAxNzUKIlx0YWRkbCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3NgoiXHRqbXAgKjAo
JWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzM5X2NvbXBhcmVfX3Nsb3cp
ICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVzcClcbiIKLy8gbGlu
ZSBudW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTkK
Ilx0Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfaGVscGVyX2pncmVhdGVyKSAiXG4iCi8vIGxp
bmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJc
dG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKLy8gbGluZSBudW1iZXIgMTcw
CiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9qbmdy
ZWF0ZXIpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3Bfam5ncmVhdGVyKSAiXG4iClNZTUJPTF9T
VFJJTkcobGxpbnRfb3Bfam5ncmVhdGVyKSAiOlxuIgovLyBsaW5lIG51bWJlciAxNzc1CiJcdG1v
dmwgNCglZXNpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAxNzc2CiJcdG1vdmwgOCglZXNpKSwg
JWVieFxuIgovLyBsaW5lIG51bWJlciAzMDgKIlx0Y21wbCAkMTA3Mzc0MTgyNCwgJWVjeFxuIgoi
XHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fY29tcGFyZV9fNDBfbG9hZENv
bnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpICJcbiIKLy8gbGluZSBudW1iZXIgMzA5CiJcdG1v
dmwgNCglZWRpLCAlZWN4LCA4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMTAKIlx0bW92bCAw
KCVlZGksICVlY3gsIDgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMxMQoiXHRqbXAgIiBMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fY29tcGFyZV9fNDBfbG9hZENvbnN0YW50T3JWYXJp
YWJsZV9fZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fY29tcGFyZV9f
NDBfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVy
IDMxMwoiXHRtb3ZsIC04KCVlZGkpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMxNAoiXHRtb3Zs
IDE0MTIoJWVkeCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzE3CiJcdG1vdmwgNCglZWR4LCAl
ZWN4LCA4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMTgKIlx0bW92bCAwKCVlZHgsICVlY3gs
IDgpLCAlZWR4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9jb21wYXJlX180MF9s
b2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciAzMjQKIlx0
Y21wbCAkMTA3Mzc0MTgyNCwgJWVieFxuIgoiXHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29m
ZmxpbmVhc21fY29tcGFyZV9fNDBfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50
KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDMyNQoiXHRtb3ZsIDQoJWVkaSwgJWVieCwgOCksICVlY3hc
biIKLy8gbGluZSBudW1iZXIgMzI2CiJcdG1vdmwgMCglZWRpLCAlZWJ4LCA4KSwgJWVieFxuIgov
LyBsaW5lIG51bWJlciAzMjcKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNt
X2NvbXBhcmVfXzQwX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKSAiXG4iCkxPQ0FM
X0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9jb21wYXJlX180MF9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZ19fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMyOQoiXHRtb3ZsIC04KCVl
ZGkpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzMAoiXHRtb3ZsIDE0MTIoJWVjeCksICVlY3hc
biIKLy8gbGluZSBudW1iZXIgMzMzCiJcdHNhbGwgJDMsICVlYnhcbiIKLy8gbGluZSBudW1iZXIg
MzM0CiJcdGFkZGwgJWVieCwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMzUKIlx0bW92bCAwKCVl
Y3gpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMzNgoiXHRtb3ZsIDQoJWVjeCksICVlY3hcbiIK
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzQwX2xvYWRDb25zdGFudE9y
VmFyaWFibGUyUmVnX19kb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciAxNzc5CiJcdGNtcGwgJC0x
LCAlZWF4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80MF9jb21w
YXJlX19vcDFOb3RJbnQpICJcbiIKLy8gbGluZSBudW1iZXIgMTc4MAoiXHRjbXBsICQtMSwgJWVj
eFxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNDBfY29tcGFyZV9f
b3AyTm90SW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE4NDMKIlx0Y21wbCAlZWJ4LCAlZWR4XG4i
CiJcdGpsZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80MF9jb21wYXJlX19qdW1w
VGFyZ2V0KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQxNiwgJWVzaVxuIgovLyBs
aW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2Zm
bGluZWFzbV80MF9jb21wYXJlX19vcDFOb3RJbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE3ODUK
Ilx0Y21wbCAkLTcsICVlYXhcbiIKIlx0amEgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVh
c21fNDBfY29tcGFyZV9fc2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxNzg2CiJcdGNtcGwgJC03
LCAlZWN4XG4iCiJcdGpiICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQwX2NvbXBh
cmVfX29wMU5vdEludE9wMkRvdWJsZSkgIlxuIgovLyBsaW5lIG51bWJlciAxNzg3CiJcdGNtcGwg
JC0xLCAlZWN4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80MF9j
b21wYXJlX19zbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE3ODgKIlx0Y3Z0c2kyc2QgJWVieCwg
JXhtbTFcbiIKLy8gbGluZSBudW1iZXIgMTc4OQoiXHRqbXAgIiBMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fNDBfY29tcGFyZV9fb3AxTm90SW50UmVhZHkpICJcbiIKTE9DQUxfTEFCRUxf
U1RSSU5HKF9vZmZsaW5lYXNtXzQwX2NvbXBhcmVfX29wMU5vdEludE9wMkRvdWJsZSkgIjpcbiIK
Ly8gbGluZSBudW1iZXIgMTc5MQoiXHRtb3ZkICVlYngsICV4bW0xXG4iCiJcdG1vdmQgJWVjeCwg
JXhtbTdcbiIKIlx0cHNsbHEgJDMyLCAleG1tN1xuIgoiXHRwb3IgJXhtbTcsICV4bW0xXG4iCkxP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80MF9jb21wYXJlX19vcDFOb3RJbnRSZWFkeSkg
IjpcbiIKLy8gbGluZSBudW1iZXIgMTc5MwoiXHRtb3ZkICVlZHgsICV4bW0wXG4iCiJcdG1vdmQg
JWVheCwgJXhtbTdcbiIKIlx0cHNsbHEgJDMyLCAleG1tN1xuIgoiXHRwb3IgJXhtbTcsICV4bW0w
XG4iCi8vIGxpbmUgbnVtYmVyIDE4NDQKIlx0dWNvbWlzZCAleG1tMSwgJXhtbTBcbiIKIlx0amJl
ICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQwX2NvbXBhcmVfX2p1bXBUYXJnZXQp
ICJcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDE2LCAlZXNpXG4iCi8vIGxpbmUgbnVt
YmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNt
XzQwX2NvbXBhcmVfX29wMk5vdEludCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTc5OAoiXHRjdnRz
aTJzZCAlZWR4LCAleG1tMFxuIgovLyBsaW5lIG51bWJlciAxNzk5CiJcdGNtcGwgJC03LCAlZWN4
XG4iCiJcdGphICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQwX2NvbXBhcmVfX3Ns
b3cpICJcbiIKLy8gbGluZSBudW1iZXIgMTgwMAoiXHRtb3ZkICVlYngsICV4bW0xXG4iCiJcdG1v
dmQgJWVjeCwgJXhtbTdcbiIKIlx0cHNsbHEgJDMyLCAleG1tN1xuIgoiXHRwb3IgJXhtbTcsICV4
bW0xXG4iCi8vIGxpbmUgbnVtYmVyIDE4NDQKIlx0dWNvbWlzZCAleG1tMSwgJXhtbTBcbiIKIlx0
amJlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQwX2NvbXBhcmVfX2p1bXBUYXJn
ZXQpICJcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDE2LCAlZXNpXG4iCi8vIGxpbmUg
bnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5l
YXNtXzQwX2NvbXBhcmVfX2p1bXBUYXJnZXQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE4MAoiXHRt
b3ZsIDEyKCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDE3NAoiXHRzYWxsICQyLCAlZWF4
XG4iCi8vIGxpbmUgbnVtYmVyIDE3NQoiXHRhZGRsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1i
ZXIgMTc2CiJcdGptcCAqMCglZXNpKVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21f
NDBfY29tcGFyZV9fc2xvdykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwg
MCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8v
IGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfam5n
cmVhdGVyKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8g
bGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkK
Ly8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NU
UklORyhsbGludF9vcF9sb29wX2lmX2xlc3NlcSkgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9s
b29wX2lmX2xlc3NlcSkgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2xvb3BfaWZfbGVzc2Vx
KSAiOlxuIgovLyBsaW5lIG51bWJlciAxODQ5CiJcdG5vcFxuIgoiLmdsb2JsICIgU1lNQk9MX1NU
UklORyhsbGludF9vcF9qbGVzc2VxKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX2psZXNzZXEp
ICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9qbGVzc2VxKSAiOlxuIgovLyBsaW5lIG51bWJl
ciAxNzc1CiJcdG1vdmwgNCglZXNpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAxNzc2CiJcdG1v
dmwgOCglZXNpKSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAzMDgKIlx0Y21wbCAkMTA3Mzc0MTgy
NCwgJWVjeFxuIgoiXHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fY29tcGFy
ZV9fNDFfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpICJcbiIKLy8gbGluZSBudW1i
ZXIgMzA5CiJcdG1vdmwgNCglZWRpLCAlZWN4LCA4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAz
MTAKIlx0bW92bCAwKCVlZGksICVlY3gsIDgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMxMQoi
XHRqbXAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fY29tcGFyZV9fNDFfbG9hZENv
bnN0YW50T3JWYXJpYWJsZV9fZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVh
c21fY29tcGFyZV9fNDFfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpICI6XG4iCi8v
IGxpbmUgbnVtYmVyIDMxMwoiXHRtb3ZsIC04KCVlZGkpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVy
IDMxNAoiXHRtb3ZsIDE0MTIoJWVkeCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzE3CiJcdG1v
dmwgNCglZWR4LCAlZWN4LCA4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMTgKIlx0bW92bCAw
KCVlZHgsICVlY3gsIDgpLCAlZWR4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9j
b21wYXJlX180MV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKSAiOlxuIgovLyBsaW5lIG51
bWJlciAzMjQKIlx0Y21wbCAkMTA3Mzc0MTgyNCwgJWVieFxuIgoiXHRqZ2UgIiBMT0NBTF9MQUJF
TF9TVFJJTkcoX29mZmxpbmVhc21fY29tcGFyZV9fNDFfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWdfX2NvbnN0YW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDMyNQoiXHRtb3ZsIDQoJWVkaSwgJWVi
eCwgOCksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMzI2CiJcdG1vdmwgMCglZWRpLCAlZWJ4LCA4
KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAzMjcKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5H
KF9vZmZsaW5lYXNtX2NvbXBhcmVfXzQxX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25l
KSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9jb21wYXJlX180MV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZ19fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMyOQoi
XHRtb3ZsIC04KCVlZGkpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzMAoiXHRtb3ZsIDE0MTIo
JWVjeCksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMzMzCiJcdHNhbGwgJDMsICVlYnhcbiIKLy8g
bGluZSBudW1iZXIgMzM0CiJcdGFkZGwgJWVieCwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMzUK
Ilx0bW92bCAwKCVlY3gpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMzNgoiXHRtb3ZsIDQoJWVj
eCksICVlY3hcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzQxX2xv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciAxNzc5
CiJcdGNtcGwgJC0xLCAlZWF4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGlu
ZWFzbV80MV9jb21wYXJlX19vcDFOb3RJbnQpICJcbiIKLy8gbGluZSBudW1iZXIgMTc4MAoiXHRj
bXBsICQtMSwgJWVjeFxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21f
NDFfY29tcGFyZV9fb3AyTm90SW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE4NTMKIlx0Y21wbCAl
ZWJ4LCAlZWR4XG4iCiJcdGpsZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80MV9j
b21wYXJlX19qdW1wVGFyZ2V0KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQxNiwg
JWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV80MV9jb21wYXJlX19vcDFOb3RJbnQpICI6XG4iCi8vIGxpbmUg
bnVtYmVyIDE3ODUKIlx0Y21wbCAkLTcsICVlYXhcbiIKIlx0amEgIiBMT0NBTF9MQUJFTF9TVFJJ
TkcoX29mZmxpbmVhc21fNDFfY29tcGFyZV9fc2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxNzg2
CiJcdGNtcGwgJC03LCAlZWN4XG4iCiJcdGpiICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5l
YXNtXzQxX2NvbXBhcmVfX29wMU5vdEludE9wMkRvdWJsZSkgIlxuIgovLyBsaW5lIG51bWJlciAx
Nzg3CiJcdGNtcGwgJC0xLCAlZWN4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2Zm
bGluZWFzbV80MV9jb21wYXJlX19zbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE3ODgKIlx0Y3Z0
c2kyc2QgJWVieCwgJXhtbTFcbiIKLy8gbGluZSBudW1iZXIgMTc4OQoiXHRqbXAgIiBMT0NBTF9M
QUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNDFfY29tcGFyZV9fb3AxTm90SW50UmVhZHkpICJcbiIK
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQxX2NvbXBhcmVfX29wMU5vdEludE9wMkRv
dWJsZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTc5MQoiXHRtb3ZkICVlYngsICV4bW0xXG4iCiJc
dG1vdmQgJWVjeCwgJXhtbTdcbiIKIlx0cHNsbHEgJDMyLCAleG1tN1xuIgoiXHRwb3IgJXhtbTcs
ICV4bW0xXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80MV9jb21wYXJlX19vcDFO
b3RJbnRSZWFkeSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTc5MwoiXHRtb3ZkICVlZHgsICV4bW0w
XG4iCiJcdG1vdmQgJWVheCwgJXhtbTdcbiIKIlx0cHNsbHEgJDMyLCAleG1tN1xuIgoiXHRwb3Ig
JXhtbTcsICV4bW0wXG4iCi8vIGxpbmUgbnVtYmVyIDE4NTQKIlx0dWNvbWlzZCAleG1tMCwgJXht
bTFcbiIKIlx0amFlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQxX2NvbXBhcmVf
X2p1bXBUYXJnZXQpICJcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDE2LCAlZXNpXG4i
Ci8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5H
KF9vZmZsaW5lYXNtXzQxX2NvbXBhcmVfX29wMk5vdEludCkgIjpcbiIKLy8gbGluZSBudW1iZXIg
MTc5OAoiXHRjdnRzaTJzZCAlZWR4LCAleG1tMFxuIgovLyBsaW5lIG51bWJlciAxNzk5CiJcdGNt
cGwgJC03LCAlZWN4XG4iCiJcdGphICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQx
X2NvbXBhcmVfX3Nsb3cpICJcbiIKLy8gbGluZSBudW1iZXIgMTgwMAoiXHRtb3ZkICVlYngsICV4
bW0xXG4iCiJcdG1vdmQgJWVjeCwgJXhtbTdcbiIKIlx0cHNsbHEgJDMyLCAleG1tN1xuIgoiXHRw
b3IgJXhtbTcsICV4bW0xXG4iCi8vIGxpbmUgbnVtYmVyIDE4NTQKIlx0dWNvbWlzZCAleG1tMCwg
JXhtbTFcbiIKIlx0amFlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQxX2NvbXBh
cmVfX2p1bXBUYXJnZXQpICJcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDE2LCAlZXNp
XG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RS
SU5HKF9vZmZsaW5lYXNtXzQxX2NvbXBhcmVfX2p1bXBUYXJnZXQpICI6XG4iCi8vIGxpbmUgbnVt
YmVyIDE4MAoiXHRtb3ZsIDEyKCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDE3NAoiXHRz
YWxsICQyLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDE3NQoiXHRhZGRsICVlYXgsICVlc2lcbiIK
Ly8gbGluZSBudW1iZXIgMTc2CiJcdGptcCAqMCglZXNpKVxuIgpMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fNDFfY29tcGFyZV9fc2xvdykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJc
dG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0
KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGlu
dF9oZWxwZXJfamxlc3NlcSkgIlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAl
ZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8gbGluZSBu
dW1iZXIgMTY5Ci8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAi
IFNZTUJPTF9TVFJJTkcobGxpbnRfb3Bfam5sZXNzZXEpICJcbiIKSElERV9TWU1CT0wobGxpbnRf
b3Bfam5sZXNzZXEpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9qbmxlc3NlcSkgIjpcbiIK
Ly8gbGluZSBudW1iZXIgMTc3NQoiXHRtb3ZsIDQoJWVzaSksICVlY3hcbiIKLy8gbGluZSBudW1i
ZXIgMTc3NgoiXHRtb3ZsIDgoJWVzaSksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzA4CiJcdGNt
cGwgJDEwNzM3NDE4MjQsICVlY3hcbiIKIlx0amdlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZs
aW5lYXNtX2NvbXBhcmVfXzQyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KSAiXG4i
Ci8vIGxpbmUgbnVtYmVyIDMwOQoiXHRtb3ZsIDQoJWVkaSwgJWVjeCwgOCksICVlYXhcbiIKLy8g
bGluZSBudW1iZXIgMzEwCiJcdG1vdmwgMCglZWRpLCAlZWN4LCA4KSwgJWVkeFxuIgovLyBsaW5l
IG51bWJlciAzMTEKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2NvbXBh
cmVfXzQyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpICJcbiIKTE9DQUxfTEFCRUxfU1RS
SU5HKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzQyX2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0
YW50KSAiOlxuIgovLyBsaW5lIG51bWJlciAzMTMKIlx0bW92bCAtOCglZWRpKSwgJWVkeFxuIgov
LyBsaW5lIG51bWJlciAzMTQKIlx0bW92bCAxNDEyKCVlZHgpLCAlZWR4XG4iCi8vIGxpbmUgbnVt
YmVyIDMxNwoiXHRtb3ZsIDQoJWVkeCwgJWVjeCwgOCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIg
MzE4CiJcdG1vdmwgMCglZWR4LCAlZWN4LCA4KSwgJWVkeFxuIgpMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fY29tcGFyZV9fNDJfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkgIjpc
biIKLy8gbGluZSBudW1iZXIgMzI0CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlYnhcbiIKIlx0amdl
ICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzQyX2xvYWRDb25zdGFu
dE9yVmFyaWFibGUyUmVnX19jb25zdGFudCkgIlxuIgovLyBsaW5lIG51bWJlciAzMjUKIlx0bW92
bCA0KCVlZGksICVlYngsIDgpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMyNgoiXHRtb3ZsIDAo
JWVkaSwgJWVieCwgOCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzI3CiJcdGptcCAiIExPQ0FM
X0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9jb21wYXJlX180Ml9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZ19fZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fY29tcGFy
ZV9fNDJfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KSAiOlxuIgovLyBsaW5l
IG51bWJlciAzMjkKIlx0bW92bCAtOCglZWRpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMzAK
Ilx0bW92bCAxNDEyKCVlY3gpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzMwoiXHRzYWxsICQz
LCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMzNAoiXHRhZGRsICVlYngsICVlY3hcbiIKLy8gbGlu
ZSBudW1iZXIgMzM1CiJcdG1vdmwgMCglZWN4KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAzMzYK
Ilx0bW92bCA0KCVlY3gpLCAlZWN4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9j
b21wYXJlX180Ml9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSkgIjpcbiIKLy8gbGlu
ZSBudW1iZXIgMTc3OQoiXHRjbXBsICQtMSwgJWVheFxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9T
VFJJTkcoX29mZmxpbmVhc21fNDJfY29tcGFyZV9fb3AxTm90SW50KSAiXG4iCi8vIGxpbmUgbnVt
YmVyIDE3ODAKIlx0Y21wbCAkLTEsICVlY3hcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5H
KF9vZmZsaW5lYXNtXzQyX2NvbXBhcmVfX29wMk5vdEludCkgIlxuIgovLyBsaW5lIG51bWJlciAx
ODYxCiJcdGNtcGwgJWVieCwgJWVkeFxuIgoiXHRqZyAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2Zm
bGluZWFzbV80Ml9jb21wYXJlX19qdW1wVGFyZ2V0KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoi
XHRhZGRsICQxNiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4i
CkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80Ml9jb21wYXJlX19vcDFOb3RJbnQpICI6
XG4iCi8vIGxpbmUgbnVtYmVyIDE3ODUKIlx0Y21wbCAkLTcsICVlYXhcbiIKIlx0amEgIiBMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNDJfY29tcGFyZV9fc2xvdykgIlxuIgovLyBsaW5l
IG51bWJlciAxNzg2CiJcdGNtcGwgJC03LCAlZWN4XG4iCiJcdGpiICIgTE9DQUxfTEFCRUxfU1RS
SU5HKF9vZmZsaW5lYXNtXzQyX2NvbXBhcmVfX29wMU5vdEludE9wMkRvdWJsZSkgIlxuIgovLyBs
aW5lIG51bWJlciAxNzg3CiJcdGNtcGwgJC0xLCAlZWN4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV80Ml9jb21wYXJlX19zbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVy
IDE3ODgKIlx0Y3Z0c2kyc2QgJWVieCwgJXhtbTFcbiIKLy8gbGluZSBudW1iZXIgMTc4OQoiXHRq
bXAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNDJfY29tcGFyZV9fb3AxTm90SW50
UmVhZHkpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQyX2NvbXBhcmVfX29w
MU5vdEludE9wMkRvdWJsZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTc5MQoiXHRtb3ZkICVlYngs
ICV4bW0xXG4iCiJcdG1vdmQgJWVjeCwgJXhtbTdcbiIKIlx0cHNsbHEgJDMyLCAleG1tN1xuIgoi
XHRwb3IgJXhtbTcsICV4bW0xXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80Ml9j
b21wYXJlX19vcDFOb3RJbnRSZWFkeSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTc5MwoiXHRtb3Zk
ICVlZHgsICV4bW0wXG4iCiJcdG1vdmQgJWVheCwgJXhtbTdcbiIKIlx0cHNsbHEgJDMyLCAleG1t
N1xuIgoiXHRwb3IgJXhtbTcsICV4bW0wXG4iCi8vIGxpbmUgbnVtYmVyIDE4NjIKIlx0dWNvbWlz
ZCAleG1tMCwgJXhtbTFcbiIKIlx0amIgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21f
NDJfY29tcGFyZV9fanVtcFRhcmdldCkgIlxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAk
MTYsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgpMT0NBTF9M
QUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNDJfY29tcGFyZV9fb3AyTm90SW50KSAiOlxuIgovLyBs
aW5lIG51bWJlciAxNzk4CiJcdGN2dHNpMnNkICVlZHgsICV4bW0wXG4iCi8vIGxpbmUgbnVtYmVy
IDE3OTkKIlx0Y21wbCAkLTcsICVlY3hcbiIKIlx0amEgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29m
ZmxpbmVhc21fNDJfY29tcGFyZV9fc2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxODAwCiJcdG1v
dmQgJWVieCwgJXhtbTFcbiIKIlx0bW92ZCAlZWN4LCAleG1tN1xuIgoiXHRwc2xscSAkMzIsICV4
bW03XG4iCiJcdHBvciAleG1tNywgJXhtbTFcbiIKLy8gbGluZSBudW1iZXIgMTg2MgoiXHR1Y29t
aXNkICV4bW0wLCAleG1tMVxuIgoiXHRqYiAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFz
bV80Ml9jb21wYXJlX19qdW1wVGFyZ2V0KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRs
ICQxNiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCkxPQ0FM
X0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80Ml9jb21wYXJlX19qdW1wVGFyZ2V0KSAiOlxuIgov
LyBsaW5lIG51bWJlciAxODAKIlx0bW92bCAxMiglZXNpKSwgJWVheFxuIgovLyBsaW5lIG51bWJl
ciAxNzQKIlx0c2FsbCAkMiwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxNzUKIlx0YWRkbCAlZWF4
LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3NgoiXHRqbXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQyX2NvbXBhcmVfX3Nsb3cpICI6XG4iCi8vIGxpbmUgbnVt
YmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk1CiJcdG1v
dmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9T
VFJJTkcobGxpbnRfaGVscGVyX2pubGVzc2VxKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRt
b3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxu
IgovLyBsaW5lIG51bWJlciAxNjkKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxu
IgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9sb29wX2lmX2dyZWF0ZXJlcSkgIlxu
IgpISURFX1NZTUJPTChsbGludF9vcF9sb29wX2lmX2dyZWF0ZXJlcSkgIlxuIgpTWU1CT0xfU1RS
SU5HKGxsaW50X29wX2xvb3BfaWZfZ3JlYXRlcmVxKSAiOlxuIgovLyBsaW5lIG51bWJlciAxODY3
CiJcdG5vcFxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9qZ3JlYXRlcmVxKSAi
XG4iCkhJREVfU1lNQk9MKGxsaW50X29wX2pncmVhdGVyZXEpICJcbiIKU1lNQk9MX1NUUklORyhs
bGludF9vcF9qZ3JlYXRlcmVxKSAiOlxuIgovLyBsaW5lIG51bWJlciAxNzc1CiJcdG1vdmwgNCgl
ZXNpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAxNzc2CiJcdG1vdmwgOCglZXNpKSwgJWVieFxu
IgovLyBsaW5lIG51bWJlciAzMDgKIlx0Y21wbCAkMTA3Mzc0MTgyNCwgJWVjeFxuIgoiXHRqZ2Ug
IiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fY29tcGFyZV9fNDNfbG9hZENvbnN0YW50
T3JWYXJpYWJsZV9fY29uc3RhbnQpICJcbiIKLy8gbGluZSBudW1iZXIgMzA5CiJcdG1vdmwgNCgl
ZWRpLCAlZWN4LCA4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMTAKIlx0bW92bCAwKCVlZGks
ICVlY3gsIDgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMxMQoiXHRqbXAgIiBMT0NBTF9MQUJF
TF9TVFJJTkcoX29mZmxpbmVhc21fY29tcGFyZV9fNDNfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9f
ZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fY29tcGFyZV9fNDNfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMxMwoi
XHRtb3ZsIC04KCVlZGkpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMxNAoiXHRtb3ZsIDE0MTIo
JWVkeCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzE3CiJcdG1vdmwgNCglZWR4LCAlZWN4LCA4
KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMTgKIlx0bW92bCAwKCVlZHgsICVlY3gsIDgpLCAl
ZWR4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9jb21wYXJlX180M19sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19kb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciAzMjQKIlx0Y21wbCAk
MTA3Mzc0MTgyNCwgJWVieFxuIgoiXHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVh
c21fY29tcGFyZV9fNDNfbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KSAiXG4i
Ci8vIGxpbmUgbnVtYmVyIDMyNQoiXHRtb3ZsIDQoJWVkaSwgJWVieCwgOCksICVlY3hcbiIKLy8g
bGluZSBudW1iZXIgMzI2CiJcdG1vdmwgMCglZWRpLCAlZWJ4LCA4KSwgJWVieFxuIgovLyBsaW5l
IG51bWJlciAzMjcKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2NvbXBh
cmVfXzQzX2xvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnX19kb25lKSAiXG4iCkxPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV9jb21wYXJlX180M19sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Z19fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMyOQoiXHRtb3ZsIC04KCVlZGkpLCAl
ZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzMAoiXHRtb3ZsIDE0MTIoJWVjeCksICVlY3hcbiIKLy8g
bGluZSBudW1iZXIgMzMzCiJcdHNhbGwgJDMsICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzM0CiJc
dGFkZGwgJWVieCwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMzUKIlx0bW92bCAwKCVlY3gpLCAl
ZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMzNgoiXHRtb3ZsIDQoJWVjeCksICVlY3hcbiIKTE9DQUxf
TEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzQzX2xvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnX19kb25lKSAiOlxuIgovLyBsaW5lIG51bWJlciAxNzc5CiJcdGNtcGwgJC0xLCAlZWF4
XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80M19jb21wYXJlX19v
cDFOb3RJbnQpICJcbiIKLy8gbGluZSBudW1iZXIgMTc4MAoiXHRjbXBsICQtMSwgJWVjeFxuIgoi
XHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNDNfY29tcGFyZV9fb3AyTm90
SW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE4NzEKIlx0Y21wbCAlZWJ4LCAlZWR4XG4iCiJcdGpn
ZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80M19jb21wYXJlX19qdW1wVGFyZ2V0
KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQxNiwgJWVzaVxuIgovLyBsaW5lIG51
bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFz
bV80M19jb21wYXJlX19vcDFOb3RJbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE3ODUKIlx0Y21w
bCAkLTcsICVlYXhcbiIKIlx0amEgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNDNf
Y29tcGFyZV9fc2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxNzg2CiJcdGNtcGwgJC03LCAlZWN4
XG4iCiJcdGpiICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQzX2NvbXBhcmVfX29w
MU5vdEludE9wMkRvdWJsZSkgIlxuIgovLyBsaW5lIG51bWJlciAxNzg3CiJcdGNtcGwgJC0xLCAl
ZWN4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80M19jb21wYXJl
X19zbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE3ODgKIlx0Y3Z0c2kyc2QgJWVieCwgJXhtbTFc
biIKLy8gbGluZSBudW1iZXIgMTc4OQoiXHRqbXAgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxp
bmVhc21fNDNfY29tcGFyZV9fb3AxTm90SW50UmVhZHkpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5H
KF9vZmZsaW5lYXNtXzQzX2NvbXBhcmVfX29wMU5vdEludE9wMkRvdWJsZSkgIjpcbiIKLy8gbGlu
ZSBudW1iZXIgMTc5MQoiXHRtb3ZkICVlYngsICV4bW0xXG4iCiJcdG1vdmQgJWVjeCwgJXhtbTdc
biIKIlx0cHNsbHEgJDMyLCAleG1tN1xuIgoiXHRwb3IgJXhtbTcsICV4bW0xXG4iCkxPQ0FMX0xB
QkVMX1NUUklORyhfb2ZmbGluZWFzbV80M19jb21wYXJlX19vcDFOb3RJbnRSZWFkeSkgIjpcbiIK
Ly8gbGluZSBudW1iZXIgMTc5MwoiXHRtb3ZkICVlZHgsICV4bW0wXG4iCiJcdG1vdmQgJWVheCwg
JXhtbTdcbiIKIlx0cHNsbHEgJDMyLCAleG1tN1xuIgoiXHRwb3IgJXhtbTcsICV4bW0wXG4iCi8v
IGxpbmUgbnVtYmVyIDE4NzIKIlx0dWNvbWlzZCAleG1tMSwgJXhtbTBcbiIKIlx0amFlICIgTE9D
QUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQzX2NvbXBhcmVfX2p1bXBUYXJnZXQpICJcbiIK
Ly8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDE2LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3
MAoiXHRqbXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQzX2Nv
bXBhcmVfX29wMk5vdEludCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTc5OAoiXHRjdnRzaTJzZCAl
ZWR4LCAleG1tMFxuIgovLyBsaW5lIG51bWJlciAxNzk5CiJcdGNtcGwgJC03LCAlZWN4XG4iCiJc
dGphICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQzX2NvbXBhcmVfX3Nsb3cpICJc
biIKLy8gbGluZSBudW1iZXIgMTgwMAoiXHRtb3ZkICVlYngsICV4bW0xXG4iCiJcdG1vdmQgJWVj
eCwgJXhtbTdcbiIKIlx0cHNsbHEgJDMyLCAleG1tN1xuIgoiXHRwb3IgJXhtbTcsICV4bW0xXG4i
Ci8vIGxpbmUgbnVtYmVyIDE4NzIKIlx0dWNvbWlzZCAleG1tMSwgJXhtbTBcbiIKIlx0amFlICIg
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQzX2NvbXBhcmVfX2p1bXBUYXJnZXQpICJc
biIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDE2LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVy
IDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQz
X2NvbXBhcmVfX2p1bXBUYXJnZXQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE4MAoiXHRtb3ZsIDEy
KCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDE3NAoiXHRzYWxsICQyLCAlZWF4XG4iCi8v
IGxpbmUgbnVtYmVyIDE3NQoiXHRhZGRsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTc2
CiJcdGptcCAqMCglZXNpKVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNDNfY29t
cGFyZV9fc2xvdykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNw
KVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUg
bnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfamdyZWF0ZXJl
cSkgIlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUg
bnVtYmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5Ci8vIGxp
bmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkco
bGxpbnRfb3Bfam5ncmVhdGVyZXEpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3Bfam5ncmVhdGVy
ZXEpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9qbmdyZWF0ZXJlcSkgIjpcbiIKLy8gbGlu
ZSBudW1iZXIgMTc3NQoiXHRtb3ZsIDQoJWVzaSksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMTc3
NgoiXHRtb3ZsIDgoJWVzaSksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzA4CiJcdGNtcGwgJDEw
NzM3NDE4MjQsICVlY3hcbiIKIlx0amdlICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNt
X2NvbXBhcmVfXzQ0X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KSAiXG4iCi8vIGxp
bmUgbnVtYmVyIDMwOQoiXHRtb3ZsIDQoJWVkaSwgJWVjeCwgOCksICVlYXhcbiIKLy8gbGluZSBu
dW1iZXIgMzEwCiJcdG1vdmwgMCglZWRpLCAlZWN4LCA4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJl
ciAzMTEKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzQ0
X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9v
ZmZsaW5lYXNtX2NvbXBhcmVfXzQ0X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KSAi
OlxuIgovLyBsaW5lIG51bWJlciAzMTMKIlx0bW92bCAtOCglZWRpKSwgJWVkeFxuIgovLyBsaW5l
IG51bWJlciAzMTQKIlx0bW92bCAxNDEyKCVlZHgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMx
NwoiXHRtb3ZsIDQoJWVkeCwgJWVjeCwgOCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzE4CiJc
dG1vdmwgMCglZWR4LCAlZWN4LCA4KSwgJWVkeFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxp
bmVhc21fY29tcGFyZV9fNDRfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkgIjpcbiIKLy8g
bGluZSBudW1iZXIgMzI0CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlYnhcbiIKIlx0amdlICIgTE9D
QUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2NvbXBhcmVfXzQ0X2xvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnX19jb25zdGFudCkgIlxuIgovLyBsaW5lIG51bWJlciAzMjUKIlx0bW92bCA0KCVl
ZGksICVlYngsIDgpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMyNgoiXHRtb3ZsIDAoJWVkaSwg
JWVieCwgOCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMzI3CiJcdGptcCAiIExPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV9jb21wYXJlX180NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Z19fZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fY29tcGFyZV9fNDRf
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWdfX2NvbnN0YW50KSAiOlxuIgovLyBsaW5lIG51bWJl
ciAzMjkKIlx0bW92bCAtOCglZWRpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAzMzAKIlx0bW92
bCAxNDEyKCVlY3gpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMzMwoiXHRzYWxsICQzLCAlZWJ4
XG4iCi8vIGxpbmUgbnVtYmVyIDMzNAoiXHRhZGRsICVlYngsICVlY3hcbiIKLy8gbGluZSBudW1i
ZXIgMzM1CiJcdG1vdmwgMCglZWN4KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAzMzYKIlx0bW92
bCA0KCVlY3gpLCAlZWN4XG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9jb21wYXJl
X180NF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZ19fZG9uZSkgIjpcbiIKLy8gbGluZSBudW1i
ZXIgMTc3OQoiXHRjbXBsICQtMSwgJWVheFxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fNDRfY29tcGFyZV9fb3AxTm90SW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE3
ODAKIlx0Y21wbCAkLTEsICVlY3hcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZs
aW5lYXNtXzQ0X2NvbXBhcmVfX29wMk5vdEludCkgIlxuIgovLyBsaW5lIG51bWJlciAxODc5CiJc
dGNtcGwgJWVieCwgJWVkeFxuIgoiXHRqbCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFz
bV80NF9jb21wYXJlX19qdW1wVGFyZ2V0KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRs
ICQxNiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCkxPQ0FM
X0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80NF9jb21wYXJlX19vcDFOb3RJbnQpICI6XG4iCi8v
IGxpbmUgbnVtYmVyIDE3ODUKIlx0Y21wbCAkLTcsICVlYXhcbiIKIlx0amEgIiBMT0NBTF9MQUJF
TF9TVFJJTkcoX29mZmxpbmVhc21fNDRfY29tcGFyZV9fc2xvdykgIlxuIgovLyBsaW5lIG51bWJl
ciAxNzg2CiJcdGNtcGwgJC03LCAlZWN4XG4iCiJcdGpiICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9v
ZmZsaW5lYXNtXzQ0X2NvbXBhcmVfX29wMU5vdEludE9wMkRvdWJsZSkgIlxuIgovLyBsaW5lIG51
bWJlciAxNzg3CiJcdGNtcGwgJC0xLCAlZWN4XG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklO
Ryhfb2ZmbGluZWFzbV80NF9jb21wYXJlX19zbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE3ODgK
Ilx0Y3Z0c2kyc2QgJWVieCwgJXhtbTFcbiIKLy8gbGluZSBudW1iZXIgMTc4OQoiXHRqbXAgIiBM
T0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNDRfY29tcGFyZV9fb3AxTm90SW50UmVhZHkp
ICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQ0X2NvbXBhcmVfX29wMU5vdElu
dE9wMkRvdWJsZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTc5MQoiXHRtb3ZkICVlYngsICV4bW0x
XG4iCiJcdG1vdmQgJWVjeCwgJXhtbTdcbiIKIlx0cHNsbHEgJDMyLCAleG1tN1xuIgoiXHRwb3Ig
JXhtbTcsICV4bW0xXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80NF9jb21wYXJl
X19vcDFOb3RJbnRSZWFkeSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTc5MwoiXHRtb3ZkICVlZHgs
ICV4bW0wXG4iCiJcdG1vdmQgJWVheCwgJXhtbTdcbiIKIlx0cHNsbHEgJDMyLCAleG1tN1xuIgoi
XHRwb3IgJXhtbTcsICV4bW0wXG4iCi8vIGxpbmUgbnVtYmVyIDE4ODAKIlx0dWNvbWlzZCAleG1t
MSwgJXhtbTBcbiIKIlx0amIgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNDRfY29t
cGFyZV9fanVtcFRhcmdldCkgIlxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMTYsICVl
c2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgpMT0NBTF9MQUJFTF9T
VFJJTkcoX29mZmxpbmVhc21fNDRfY29tcGFyZV9fb3AyTm90SW50KSAiOlxuIgovLyBsaW5lIG51
bWJlciAxNzk4CiJcdGN2dHNpMnNkICVlZHgsICV4bW0wXG4iCi8vIGxpbmUgbnVtYmVyIDE3OTkK
Ilx0Y21wbCAkLTcsICVlY3hcbiIKIlx0amEgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVh
c21fNDRfY29tcGFyZV9fc2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAxODAwCiJcdG1vdmQgJWVi
eCwgJXhtbTFcbiIKIlx0bW92ZCAlZWN4LCAleG1tN1xuIgoiXHRwc2xscSAkMzIsICV4bW03XG4i
CiJcdHBvciAleG1tNywgJXhtbTFcbiIKLy8gbGluZSBudW1iZXIgMTg4MAoiXHR1Y29taXNkICV4
bW0xLCAleG1tMFxuIgoiXHRqYiAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80NF9j
b21wYXJlX19qdW1wVGFyZ2V0KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQxNiwg
JWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV80NF9jb21wYXJlX19qdW1wVGFyZ2V0KSAiOlxuIgovLyBsaW5l
IG51bWJlciAxODAKIlx0bW92bCAxMiglZXNpKSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxNzQK
Ilx0c2FsbCAkMiwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxNzUKIlx0YWRkbCAlZWF4LCAlZXNp
XG4iCi8vIGxpbmUgbnVtYmVyIDE3NgoiXHRqbXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RS
SU5HKF9vZmZsaW5lYXNtXzQ0X2NvbXBhcmVfX3Nsb3cpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE5
NAoiXHRtb3ZsICVlZGksIDAoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk1CiJcdG1vdmwgJWVz
aSwgNCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9TVFJJTkco
bGxpbnRfaGVscGVyX2puZ3JlYXRlcmVxKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRtb3Zs
ICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxuIgov
LyBsaW5lIG51bWJlciAxNjkKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoi
Lmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9sb29wX2hpbnQpICJcbiIKSElERV9TWU1C
T0wobGxpbnRfb3BfbG9vcF9oaW50KSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfbG9vcF9o
aW50KSAiOlxuIgovLyBsaW5lIG51bWJlciAyNzIKIlx0bW92bCAtOCglZWRpKSwgJWVheFxuIgov
LyBsaW5lIG51bWJlciAyNzMKIlx0YWRkbCAkMSwgMTQ1MiglZWF4KVxuIgoiXHRqcyAiIExPQ0FM
X0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9jaGVja1N3aXRjaFRvSklURm9yTG9vcF9fY2hlY2tT
d2l0Y2hUb0pJVF9fY29udGludWUpICJcbiIKLy8gbGluZSBudW1iZXIgMjgzCiJcdG1vdmwgJWVz
aSwgLTQ0KCVlZGkpXG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVzcClc
biIKLy8gbGluZSBudW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5lIG51
bWJlciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfbG9vcF9vc3IpICJcbiIKLy8g
bGluZSBudW1iZXIgMjg1CiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAyODYK
Ilx0dGVzdGwgJWVheCwgJWVheFxuIgoiXHRqeiAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGlu
ZWFzbV9jaGVja1N3aXRjaFRvSklURm9yTG9vcF9fY2hlY2tTd2l0Y2hUb0pJVF9fYWN0aW9uX19y
ZWNvdmVyKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDI4NwoiXHRqbXAgKiVlYXhcbiIKTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtX2NoZWNrU3dpdGNoVG9KSVRGb3JMb29wX19jaGVja1N3aXRj
aFRvSklUX19hY3Rpb25fX3JlY292ZXIpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDI4OQoiXHRtb3Zs
IC00NCglZWRpKSwgJWVzaVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fY2hlY2tT
d2l0Y2hUb0pJVEZvckxvb3BfX2NoZWNrU3dpdGNoVG9KSVRfX2NvbnRpbnVlKSAiOlxuIgovLyBs
aW5lIG51bWJlciAxNjkKIlx0YWRkbCAkNCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0
am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX3N3aXRjaF9p
bW0pICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3Bfc3dpdGNoX2ltbSkgIlxuIgpTWU1CT0xfU1RS
SU5HKGxsaW50X29wX3N3aXRjaF9pbW0pICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE4OTIKIlx0bW92
bCAxMiglZXNpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAxODkzCiJcdG1vdmwgNCglZXNpKSwg
JWVieFxuIgovLyBsaW5lIG51bWJlciAzMDgKIlx0Y21wbCAkMTA3Mzc0MTgyNCwgJWVjeFxuIgoi
XHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNDVfbG9hZENvbnN0YW50T3JW
YXJpYWJsZV9fY29uc3RhbnQpICJcbiIKLy8gbGluZSBudW1iZXIgMzA5CiJcdG1vdmwgNCglZWRp
LCAlZWN4LCA4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzMTAKIlx0bW92bCAwKCVlZGksICVl
Y3gsIDgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDMxMQoiXHRqbXAgIiBMT0NBTF9MQUJFTF9T
VFJJTkcoX29mZmxpbmVhc21fNDVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkgIlxuIgpM
T0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNDVfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9f
Y29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMxMwoiXHRtb3ZsIC04KCVlZGkpLCAlZWF4
XG4iCi8vIGxpbmUgbnVtYmVyIDMxNAoiXHRtb3ZsIDE0MTIoJWVheCksICVlYXhcbiIKLy8gbGlu
ZSBudW1iZXIgMzE3CiJcdG1vdmwgNCglZWF4LCAlZWN4LCA4KSwgJWVkeFxuIgovLyBsaW5lIG51
bWJlciAzMTgKIlx0bW92bCAwKCVlYXgsICVlY3gsIDgpLCAlZWF4XG4iCkxPQ0FMX0xBQkVMX1NU
UklORyhfb2ZmbGluZWFzbV80NV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKSAiOlxuIgov
LyBsaW5lIG51bWJlciAxODk1CiJcdG1vdmwgLTgoJWVkaSksICVlY3hcbiIKLy8gbGluZSBudW1i
ZXIgMTg5NgoiXHRtb3ZsIDE0NzIoJWVjeCksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMTg5Nwoi
XHRpbXVsbCAkMzIsICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMTg5OAoiXHRtb3ZsIDQwKCVlY3gp
LCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDE4OTkKIlx0YWRkbCAlZWJ4LCAlZWN4XG4iCi8vIGxp
bmUgbnVtYmVyIDE5MDAKIlx0Y21wbCAkLTEsICVlZHhcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxf
U1RSSU5HKF9vZmZsaW5lYXNtX29wU3dpdGNoSW1tTm90SW50KSAiXG4iCi8vIGxpbmUgbnVtYmVy
IDE5MDEKIlx0c3VibCAxMiglZWN4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxOTAyCiJcdGNt
cGwgMCglZWN4KSwgJWVheFxuIgoiXHRqYWUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVh
c21fb3BTd2l0Y2hJbW1GYWxsVGhyb3VnaCkgIlxuIgovLyBsaW5lIG51bWJlciAxOTAzCiJcdG1v
dmwgNCglZWN4KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAxOTA0CiJcdG1vdmwgMCglZWJ4LCAl
ZWF4LCA0KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAxOTA1CiJcdHRlc3RsICVlZHgsICVlZHhc
biIKIlx0anogIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BTd2l0Y2hJbW1GYWxs
VGhyb3VnaCkgIlxuIgovLyBsaW5lIG51bWJlciAxNzQKIlx0c2FsbCAkMiwgJWVkeFxuIgovLyBs
aW5lIG51bWJlciAxNzUKIlx0YWRkbCAlZWR4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3Ngoi
XHRqbXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wU3dpdGNo
SW1tTm90SW50KSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTA5CiJcdGNtcGwgJC03LCAlZWR4XG4i
CiJcdGpiICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wU3dpdGNoSW1tU2xvdykg
IlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BTd2l0Y2hJbW1GYWxsVGhyb3Vn
aCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTgwCiJcdG1vdmwgOCglZXNpKSwgJWVheFxuIgovLyBs
aW5lIG51bWJlciAxNzQKIlx0c2FsbCAkMiwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxNzUKIlx0
YWRkbCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3NgoiXHRqbXAgKjAoJWVzaSlcbiIK
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wU3dpdGNoSW1tU2xvdykgIjpcbiIKLy8g
bGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAx
OTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIg
U1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfc3dpdGNoX2ltbSkgIlxuIgovLyBsaW5lIG51bWJl
ciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRtb3ZsICVl
ZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5Ci8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAg
KjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3Bfc3dpdGNoX2NoYXIp
ICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3Bfc3dpdGNoX2NoYXIpICJcbiIKU1lNQk9MX1NUUklO
RyhsbGludF9vcF9zd2l0Y2hfY2hhcikgIjpcbiIKLy8gbGluZSBudW1iZXIgMTkyMAoiXHRtb3Zs
IDEyKCVlc2kpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDE5MjEKIlx0bW92bCA0KCVlc2kpLCAl
ZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDMwOAoiXHRjbXBsICQxMDczNzQxODI0LCAlZWN4XG4iCiJc
dGpnZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80Nl9sb2FkQ29uc3RhbnRPclZh
cmlhYmxlX19jb25zdGFudCkgIlxuIgovLyBsaW5lIG51bWJlciAzMDkKIlx0bW92bCA0KCVlZGks
ICVlY3gsIDgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMxMAoiXHRtb3ZsIDAoJWVkaSwgJWVj
eCwgOCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzExCiJcdGptcCAiIExPQ0FMX0xBQkVMX1NU
UklORyhfb2ZmbGluZWFzbV80Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19kb25lKSAiXG4iCkxP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19j
b25zdGFudCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMzEzCiJcdG1vdmwgLTgoJWVkaSksICVlYXhc
biIKLy8gbGluZSBudW1iZXIgMzE0CiJcdG1vdmwgMTQxMiglZWF4KSwgJWVheFxuIgovLyBsaW5l
IG51bWJlciAzMTcKIlx0bW92bCA0KCVlYXgsICVlY3gsIDgpLCAlZWR4XG4iCi8vIGxpbmUgbnVt
YmVyIDMxOAoiXHRtb3ZsIDAoJWVheCwgJWVjeCwgOCksICVlYXhcbiIKTE9DQUxfTEFCRUxfU1RS
SU5HKF9vZmZsaW5lYXNtXzQ2X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpICI6XG4iCi8v
IGxpbmUgbnVtYmVyIDE5MjMKIlx0bW92bCAtOCglZWRpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJl
ciAxOTI0CiJcdG1vdmwgMTQ3MiglZWN4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAxOTI1CiJc
dGltdWxsICQzMiwgJWVieFxuIgovLyBsaW5lIG51bWJlciAxOTI2CiJcdG1vdmwgNTIoJWVjeCks
ICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMTkyNwoiXHRhZGRsICVlYngsICVlY3hcbiIKLy8gbGlu
ZSBudW1iZXIgMTkyOAoiXHRjbXBsICQtNSwgJWVkeFxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9T
VFJJTkcoX29mZmxpbmVhc21fb3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gpICJcbiIKLy8gbGluZSBu
dW1iZXIgMTkyOQoiXHRtb3ZsIDQoJWVheCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMTkzMAoi
XHRjbXBiICQ1LCA4KCVlZHgpXG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGlu
ZWFzbV9vcFN3aXRjaENoYXJGYWxsVGhyb3VnaCkgIlxuIgovLyBsaW5lIG51bWJlciAxOTMxCiJc
dG1vdmwgMTYoJWVheCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMTkzMgoiXHRjbXBsICQxLCA0
KCVlYXgpXG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcFN3aXRj
aENoYXJGYWxsVGhyb3VnaCkgIlxuIgovLyBsaW5lIG51bWJlciAxOTMzCiJcdG1vdmwgOCglZWF4
KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAxOTM0CiJcdHRlc3RsICQ2NCwgMTYoJWVheClcbiIK
Ilx0am56ICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wU3dpdGNoQ2hhcjhCaXQp
ICJcbiIKLy8gbGluZSBudW1iZXIgMTkzNQoiXHRtb3Z6d2wgMCglZWR4KSwgJWVheFxuIgovLyBs
aW5lIG51bWJlciAxOTM2CiJcdGptcCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9v
cFN3aXRjaENoYXJSZWFkeSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BT
d2l0Y2hDaGFyOEJpdCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTkzOAoiXHRtb3Z6YmwgMCglZWR4
KSwgJWVheFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BTd2l0Y2hDaGFyUmVh
ZHkpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE5NDAKIlx0c3VibCAxMiglZWN4KSwgJWVheFxuIgov
LyBsaW5lIG51bWJlciAxOTQxCiJcdGNtcGwgMCglZWN4KSwgJWVheFxuIgoiXHRqYWUgIiBMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gpICJcbiIK
Ly8gbGluZSBudW1iZXIgMTk0MgoiXHRtb3ZsIDQoJWVjeCksICVlY3hcbiIKLy8gbGluZSBudW1i
ZXIgMTk0MwoiXHRtb3ZsIDAoJWVjeCwgJWVheCwgNCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIg
MTk0NAoiXHR0ZXN0bCAlZWR4LCAlZWR4XG4iCiJcdGp6ICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9v
ZmZsaW5lYXNtX29wU3dpdGNoSW1tRmFsbFRocm91Z2gpICJcbiIKLy8gbGluZSBudW1iZXIgMTc0
CiJcdHNhbGwgJDIsICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMTc1CiJcdGFkZGwgJWVkeCwgJWVz
aVxuIgovLyBsaW5lIG51bWJlciAxNzYKIlx0am1wICowKCVlc2kpXG4iCkxPQ0FMX0xBQkVMX1NU
UklORyhfb2ZmbGluZWFzbV9vcFN3aXRjaENoYXJGYWxsVGhyb3VnaCkgIjpcbiIKLy8gbGluZSBu
dW1iZXIgMTgwCiJcdG1vdmwgOCglZXNpKSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxNzQKIlx0
c2FsbCAkMiwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxNzUKIlx0YWRkbCAlZWF4LCAlZXNpXG4i
Ci8vIGxpbmUgbnVtYmVyIDE3NgoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9T
VFJJTkcobGxpbnRfb3Bfc3dpdGNoX3N0cmluZykgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9z
d2l0Y2hfc3RyaW5nKSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3Bfc3dpdGNoX3N0cmluZykg
IjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5l
IG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoi
XHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfc3dpdGNoX3N0cmluZykgIlxuIgov
LyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIy
MwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5Ci8vIGxpbmUgbnVtYmVy
IDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3Bf
bmV3X2Z1bmMpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfbmV3X2Z1bmMpICJcbiIKU1lNQk9M
X1NUUklORyhsbGludF9vcF9uZXdfZnVuYykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk1OQoiXHRj
bXBsICQwLCAxMiglZXNpKVxuIgoiXHRqeiAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFz
bV9vcE5ld0Z1bmNVbmNoZWNrZWQpICJcbiIKLy8gbGluZSBudW1iZXIgMTk2MAoiXHRtb3ZsIDQo
JWVzaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMTk2MQoiXHRjbXBsICQtNiwgNCglZWRpLCAl
ZWR4LCA4KVxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BOZXdG
dW5jRG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BOZXdGdW5jVW5j
aGVja2VkKSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4i
Ci8vIGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1i
ZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9uZXdfZnVuYykgIlxu
IgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVy
IDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNt
X29wTmV3RnVuY0RvbmUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQxNiwgJWVz
aVxuIgovLyBsaW5lIG51bWJlciAxNzAKIlx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1C
T0xfU1RSSU5HKGxsaW50X29wX25ld19mdW5jX2V4cCkgIlxuIgpISURFX1NZTUJPTChsbGludF9v
cF9uZXdfZnVuY19leHApICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9uZXdfZnVuY19leHAp
ICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVzcClcbiIKLy8gbGlu
ZSBudW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTkK
Ilx0Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfaGVscGVyX25ld19mdW5jX2V4cCkgIlxuIgov
LyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIy
MwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDEyLCAl
ZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcobGxpbnRfb3BfY2FsbCkgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9jYWxs
KSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfY2FsbCkgIjpcbiIKLy8gbGluZSBudW1iZXIg
MTk3NQoiXHRtb3ZsIDQoJWVzaSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMTk3NgoiXHRtb3Zs
IDE2KCVlc2kpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDE5NzcKIlx0bW92bCA4KCVlZHgpLCAl
ZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDM0MQoiXHRjbXBsICQxMDczNzQxODI0LCAlZWF4XG4iCiJc
dGpnZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9kb0NhbGxfX2xvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkX180Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1
c3RvbV9fY29uc3RhbnQpICJcbiIKLy8gbGluZSBudW1iZXIgMzYzCiJcdGNtcGwgJC01LCA0KCVl
ZGksICVlYXgsIDgpXG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9k
b0NhbGxfX29wQ2FsbFNsb3cpICJcbiIKLy8gbGluZSBudW1iZXIgMzQzCiJcdG1vdmwgMCglZWRp
LCAlZWF4LCA4KSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAzNDQKIlx0am1wICIgTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtX2RvQ2FsbF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRfXzQ2X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19kb25lKSAiXG4i
CkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9kb0NhbGxfX2xvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkX180Nl9sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9f
Y29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDM0NgoiXHRtb3ZsIC04KCVlZGkpLCAlZWJ4
XG4iCi8vIGxpbmUgbnVtYmVyIDM0NwoiXHRtb3ZsIDE0MTIoJWVieCksICVlYnhcbiIKLy8gbGlu
ZSBudW1iZXIgMzYzCiJcdGNtcGwgJC01LCA0KCVlYngsICVlYXgsIDgpXG4iCiJcdGpuZSAiIExP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9kb0NhbGxfX29wQ2FsbFNsb3cpICJcbiIKLy8g
bGluZSBudW1iZXIgMzUxCiJcdG1vdmwgMCglZWJ4LCAlZWF4LCA4KSwgJWVieFxuIgpMT0NBTF9M
QUJFTF9TVFJJTkcoX29mZmxpbmVhc21fZG9DYWxsX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZF9fNDZfbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUpICI6
XG4iCi8vIGxpbmUgbnVtYmVyIDE5NzkKIlx0Y21wbCAlZWN4LCAlZWJ4XG4iCiJcdGpuZSAiIExP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9kb0NhbGxfX29wQ2FsbFNsb3cpICJcbiIKLy8g
bGluZSBudW1iZXIgMTk4MAoiXHRtb3ZsIDEyKCVlc2kpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVy
IDE5ODEKIlx0YWRkbCAkMjQsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTk4MgoiXHRzYWxsICQz
LCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDE5ODMKIlx0YWRkbCAlZWRpLCAlZWJ4XG4iCi8vIGxp
bmUgbnVtYmVyIDE5ODQKIlx0bW92bCA1MiglZWN4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAx
OTg1CiJcdG1vdmwgJWVjeCwgLTMyKCVlYngpXG4iCi8vIGxpbmUgbnVtYmVyIDE5ODYKIlx0bW92
bCAlZWF4LCAtMjQoJWVieClcbiIKLy8gbGluZSBudW1iZXIgMTk4NwoiXHRtb3ZsIC0xNiglZXNp
KSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAxOTg4CiJcdG1vdmwgJWVzaSwgLTQ0KCVlZGkpXG4i
Ci8vIGxpbmUgbnVtYmVyIDE5ODkKIlx0bW92bCAlZWRpLCAtNDAoJWVieClcbiIKLy8gbGluZSBu
dW1iZXIgMTk5MAoiXHRtb3ZsICVlY3gsIC00OCglZWJ4KVxuIgovLyBsaW5lIG51bWJlciAxOTkx
CiJcdG1vdmwgJC01LCAtMjgoJWVieClcbiIKLy8gbGluZSBudW1iZXIgMTk5MgoiXHRtb3ZsICQt
NSwgLTIwKCVlYngpXG4iCi8vIGxpbmUgbnVtYmVyIDE5OTMKIlx0bW92bCAlZWJ4LCAlZWRpXG4i
Ci8vIGxpbmUgbnVtYmVyIDE5OTQKIlx0Y2FsbCAqMTYoJWVkeClcbiIKLy8gbGluZSBudW1iZXIg
MTg1CiJcdG1vdmwgLTQ0KCVlZGkpLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE4NgoiXHRqbXAg
KjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2RvQ2FsbF9fb3BDYWxs
U2xvdykgIjpcbiIKLy8gbGluZSBudW1iZXIgMjUzCiJcdGxlYWwgMjQoJWVzaSksICVlYXhcbiIK
Ly8gbGluZSBudW1iZXIgMjU0CiJcdG1vdmwgJWVheCwgLTQ0KCVlZGkpXG4iCi8vIGxpbmUgbnVt
YmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk1CiJcdG1v
dmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9T
VFJJTkcobGxpbnRfaGVscGVyX2NhbGwpICJcbiIKLy8gbGluZSBudW1iZXIgMjU2CiJcdG1vdmwg
JWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAyNjUKIlx0Y2FsbCAqJWVheFxuIgovLyBsaW5l
IG51bWJlciAxODUKIlx0bW92bCAtNDQoJWVkaSksICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTg2
CiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9jb25z
dHJ1Y3QpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfY29uc3RydWN0KSAiXG4iClNZTUJPTF9T
VFJJTkcobGxpbnRfb3BfY29uc3RydWN0KSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTc1CiJcdG1v
dmwgNCglZXNpKSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxOTc2CiJcdG1vdmwgMTYoJWVzaSks
ICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMTk3NwoiXHRtb3ZsIDgoJWVkeCksICVlY3hcbiIKLy8g
bGluZSBudW1iZXIgMzQxCiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlYXhcbiIKIlx0amdlICIgTE9D
QUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2RvQ2FsbF9fbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWRfXzQ3X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25z
dGFudCkgIlxuIgovLyBsaW5lIG51bWJlciAzNjMKIlx0Y21wbCAkLTUsIDQoJWVkaSwgJWVheCwg
OClcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQ3X2RvQ2FsbF9f
b3BDYWxsU2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAzNDMKIlx0bW92bCAwKCVlZGksICVlYXgs
IDgpLCAlZWJ4XG4iCi8vIGxpbmUgbnVtYmVyIDM0NAoiXHRqbXAgIiBMT0NBTF9MQUJFTF9TVFJJ
TkcoX29mZmxpbmVhc21fZG9DYWxsX19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZF9fNDdf
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b21fX2RvbmUpICJcbiIKTE9DQUxf
TEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX2RvQ2FsbF9fbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWRfXzQ3X2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tX19jb25zdGFu
dCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMzQ2CiJcdG1vdmwgLTgoJWVkaSksICVlYnhcbiIKLy8g
bGluZSBudW1iZXIgMzQ3CiJcdG1vdmwgMTQxMiglZWJ4KSwgJWVieFxuIgovLyBsaW5lIG51bWJl
ciAzNjMKIlx0Y21wbCAkLTUsIDQoJWVieCwgJWVheCwgOClcbiIKIlx0am5lICIgTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQ3X2RvQ2FsbF9fb3BDYWxsU2xvdykgIlxuIgovLyBsaW5l
IG51bWJlciAzNTEKIlx0bW92bCAwKCVlYngsICVlYXgsIDgpLCAlZWJ4XG4iCkxPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV9kb0NhbGxfX2xvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
X180N19sb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbV9fZG9uZSkgIjpcbiIK
Ly8gbGluZSBudW1iZXIgMTk3OQoiXHRjbXBsICVlY3gsICVlYnhcbiIKIlx0am5lICIgTE9DQUxf
TEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQ3X2RvQ2FsbF9fb3BDYWxsU2xvdykgIlxuIgovLyBs
aW5lIG51bWJlciAxOTgwCiJcdG1vdmwgMTIoJWVzaSksICVlYnhcbiIKLy8gbGluZSBudW1iZXIg
MTk4MQoiXHRhZGRsICQyNCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxOTgyCiJcdHNhbGwgJDMs
ICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMTk4MwoiXHRhZGRsICVlZGksICVlYnhcbiIKLy8gbGlu
ZSBudW1iZXIgMTk4NAoiXHRtb3ZsIDUyKCVlY3gpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDE5
ODUKIlx0bW92bCAlZWN4LCAtMzIoJWVieClcbiIKLy8gbGluZSBudW1iZXIgMTk4NgoiXHRtb3Zs
ICVlYXgsIC0yNCglZWJ4KVxuIgovLyBsaW5lIG51bWJlciAxOTg3CiJcdG1vdmwgLTE2KCVlc2kp
LCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDE5ODgKIlx0bW92bCAlZXNpLCAtNDQoJWVkaSlcbiIK
Ly8gbGluZSBudW1iZXIgMTk4OQoiXHRtb3ZsICVlZGksIC00MCglZWJ4KVxuIgovLyBsaW5lIG51
bWJlciAxOTkwCiJcdG1vdmwgJWVjeCwgLTQ4KCVlYngpXG4iCi8vIGxpbmUgbnVtYmVyIDE5OTEK
Ilx0bW92bCAkLTUsIC0yOCglZWJ4KVxuIgovLyBsaW5lIG51bWJlciAxOTkyCiJcdG1vdmwgJC01
LCAtMjAoJWVieClcbiIKLy8gbGluZSBudW1iZXIgMTk5MwoiXHRtb3ZsICVlYngsICVlZGlcbiIK
Ly8gbGluZSBudW1iZXIgMTk5NAoiXHRjYWxsICoxNiglZWR4KVxuIgovLyBsaW5lIG51bWJlciAx
ODUKIlx0bW92bCAtNDQoJWVkaSksICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTg2CiJcdGptcCAq
MCglZXNpKVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNDdfZG9DYWxsX19vcENh
bGxTbG93KSAiOlxuIgovLyBsaW5lIG51bWJlciAyNTMKIlx0bGVhbCAyNCglZXNpKSwgJWVheFxu
IgovLyBsaW5lIG51bWJlciAyNTQKIlx0bW92bCAlZWF4LCAtNDQoJWVkaSlcbiIKLy8gbGluZSBu
dW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0
bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9M
X1NUUklORyhsbGludF9oZWxwZXJfY29uc3RydWN0KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDI1Ngoi
XHRtb3ZsICVlZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMjY1CiJcdGNhbGwgKiVlYXhcbiIK
Ly8gbGluZSBudW1iZXIgMTg1CiJcdG1vdmwgLTQ0KCVlZGkpLCAlZXNpXG4iCi8vIGxpbmUgbnVt
YmVyIDE4NgoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRf
b3BfY2FsbF92YXJhcmdzKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX2NhbGxfdmFyYXJncykg
IlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2NhbGxfdmFyYXJncykgIjpcbiIKLy8gbGluZSBu
dW1iZXIgMjUzCiJcdGxlYWwgMjQoJWVzaSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMjU0CiJc
dG1vdmwgJWVheCwgLTQ0KCVlZGkpXG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGks
IDAoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgov
LyBsaW5lIG51bWJlciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfaGVscGVyX2Nh
bGxfdmFyYXJncykgIlxuIgovLyBsaW5lIG51bWJlciAyNTYKIlx0bW92bCAlZWR4LCAlZWRpXG4i
Ci8vIGxpbmUgbnVtYmVyIDI2NQoiXHRjYWxsIColZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDE4NQoi
XHRtb3ZsIC00NCglZWRpKSwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxODYKIlx0am1wICowKCVl
c2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2NhbGxfZXZhbCkgIlxuIgpI
SURFX1NZTUJPTChsbGludF9vcF9jYWxsX2V2YWwpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9v
cF9jYWxsX2V2YWwpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDI1MwoiXHRsZWFsIDE2KCVlc2kpLCAl
ZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDI1NAoiXHRtb3ZsICVlYXgsIC00NCglZWRpKVxuIgovLyBs
aW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5
NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5CiJcdGNhbGwgIiBT
WU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9jYWxsX2V2YWwpICJcbiIKLy8gbGluZSBudW1iZXIg
MjU2CiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAyNjUKIlx0Y2FsbCAqJWVh
eFxuIgovLyBsaW5lIG51bWJlciAxODUKIlx0bW92bCAtNDQoJWVkaSksICVlc2lcbiIKLy8gbGlu
ZSBudW1iZXIgMTg2CiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhs
bGludF9nZW5lcmljX3JldHVybl9wb2ludCkgIlxuIgpISURFX1NZTUJPTChsbGludF9nZW5lcmlj
X3JldHVybl9wb2ludCkgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X2dlbmVyaWNfcmV0dXJuX3Bv
aW50KSAiOlxuIgovLyBsaW5lIG51bWJlciAxODUKIlx0bW92bCAtNDQoJWVkaSksICVlc2lcbiIK
Ly8gbGluZSBudW1iZXIgMTg2CiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NU
UklORyhsbGludF9vcF90ZWFyX29mZl9hY3RpdmF0aW9uKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50
X29wX3RlYXJfb2ZmX2FjdGl2YXRpb24pICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF90ZWFy
X29mZl9hY3RpdmF0aW9uKSAiOlxuIgovLyBsaW5lIG51bWJlciAyMDYxCiJcdG1vdmwgNCglZXNp
KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAyMDYyCiJcdG1vdmwgOCglZXNpKSwgJWVkeFxuIgov
LyBsaW5lIG51bWJlciAyMDYzCiJcdGNtcGwgJC02LCA0KCVlZGksICVlYXgsIDgpXG4iCiJcdGpu
ZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcFRlYXJPZmZBY3RpdmF0aW9uQ3Jl
YXRlZCkgIlxuIgovLyBsaW5lIG51bWJlciAyMDY0CiJcdGNtcGwgJC02LCA0KCVlZGksICVlZHgs
IDgpXG4iCiJcdGplICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wVGVhck9mZkFj
dGl2YXRpb25Ob3RDcmVhdGVkKSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9v
cFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1v
dmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVl
c3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9o
ZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikgIlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92
bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIK
TE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVh
dGVkKSAiOlxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMTIsICVlc2lcbiIKLy8gbGlu
ZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhs
bGludF9vcF90ZWFyX29mZl9hcmd1bWVudHMpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfdGVh
cl9vZmZfYXJndW1lbnRzKSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfdGVhcl9vZmZfYXJn
dW1lbnRzKSAiOlxuIgovLyBsaW5lIG51bWJlciAyMDczCiJcdG1vdmwgNCglZXNpKSwgJWVheFxu
IgovLyBsaW5lIG51bWJlciAyMDc0CiJcdHN1YmwgJDEsICVlYXhcbiIKLy8gbGluZSBudW1iZXIg
MjA3NQoiXHRjbXBsICQtNiwgNCglZWRpLCAlZWF4LCA4KVxuIgoiXHRqZSAiIExPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV9vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkKSAiXG4iCi8v
IGxpbmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVzcClcbiIKLy8gbGluZSBudW1iZXIg
MTk1CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTkKIlx0Y2FsbCAi
IFNZTUJPTF9TVFJJTkcobGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cykgIlxuIgovLyBs
aW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoi
XHRtb3ZsICVlZHgsICVlZGlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wVGVh
ck9mZkFyZ3VtZW50c05vdENyZWF0ZWQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRs
ICQ4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9i
bCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfcmV0KSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29w
X3JldCkgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX3JldCkgIjpcbiIKLy8gbGluZSBudW1i
ZXIgMjcyCiJcdG1vdmwgLTgoJWVkaSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMjczCiJcdGFk
ZGwgJDEwLCAxNDUyKCVlYXgpXG4iCiJcdGpzICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5l
YXNtX2NoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZV9fNDdfY2hlY2tTd2l0Y2hUb0pJVF9fY29u
dGludWUpICJcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgov
LyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVy
IDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9yZXBsYWNlKSAiXG4iCi8vIGxpbmUg
bnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1v
dmwgJWVkeCwgJWVkaVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fY2hlY2tTd2l0
Y2hUb0pJVEZvckVwaWxvZ3VlX180N19jaGVja1N3aXRjaFRvSklUX19jb250aW51ZSkgIjpcbiIK
Ly8gbGluZSBudW1iZXIgMjA5MQoiXHRtb3ZsIDQoJWVzaSksICVlY3hcbiIKLy8gbGluZSBudW1i
ZXIgMzA4CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlY3hcbiIKIlx0amdlICIgTE9DQUxfTEFCRUxf
U1RSSU5HKF9vZmZsaW5lYXNtXzQ3X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KSAi
XG4iCi8vIGxpbmUgbnVtYmVyIDMwOQoiXHRtb3ZsIDQoJWVkaSwgJWVjeCwgOCksICVlZHhcbiIK
Ly8gbGluZSBudW1iZXIgMzEwCiJcdG1vdmwgMCglZWRpLCAlZWN4LCA4KSwgJWVheFxuIgovLyBs
aW5lIG51bWJlciAzMTEKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQ3
X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpICJcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9v
ZmZsaW5lYXNtXzQ3X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0YW50KSAiOlxuIgovLyBs
aW5lIG51bWJlciAzMTMKIlx0bW92bCAtOCglZWRpKSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAz
MTQKIlx0bW92bCAxNDEyKCVlYXgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDMxNwoiXHRtb3Zs
IDQoJWVheCwgJWVjeCwgOCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzE4CiJcdG1vdmwgMCgl
ZWF4LCAlZWN4LCA4KSwgJWVheFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNDdf
bG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMjA4Mgoi
XHRtb3ZsIC0xNiglZWRpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAyMDgzCiJcdG1vdmwgLTQw
KCVlZGkpLCAlZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDE2MgoiXHRwdXNoICVlY3hcbiIKLy8gbGlu
ZSBudW1iZXIgMjA4NQoiXHRyZXRcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3Bf
Y2FsbF9wdXRfcmVzdWx0KSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX2NhbGxfcHV0X3Jlc3Vs
dCkgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2NhbGxfcHV0X3Jlc3VsdCkgIjpcbiIKLy8g
bGluZSBudW1iZXIgMjA5NwoiXHRtb3ZsIDQoJWVzaSksICVlY3hcbiIKLy8gbGluZSBudW1iZXIg
MjA5OAoiXHRtb3ZsIDgoJWVzaSksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMjA5OQoiXHRtb3Zs
ICVlZHgsIDQoJWVkaSwgJWVjeCwgOClcbiIKLy8gbGluZSBudW1iZXIgMjEwMAoiXHRtb3ZsICVl
YXgsIDAoJWVkaSwgJWVjeCwgOClcbiIKLy8gbGluZSBudW1iZXIgMzc5CiJcdG1vdmwgJWVkeCwg
MTYoJWVieClcbiIKLy8gbGluZSBudW1iZXIgMzgwCiJcdG1vdmwgJWVheCwgMTIoJWVieClcbiIK
Ly8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDEyLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3
MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfcmV0
X29iamVjdF9vcl90aGlzKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX3JldF9vYmplY3Rfb3Jf
dGhpcykgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpcykgIjpc
biIKLy8gbGluZSBudW1iZXIgMjcyCiJcdG1vdmwgLTgoJWVkaSksICVlYXhcbiIKLy8gbGluZSBu
dW1iZXIgMjczCiJcdGFkZGwgJDEwLCAxNDUyKCVlYXgpXG4iCiJcdGpzICIgTE9DQUxfTEFCRUxf
U1RSSU5HKF9vZmZsaW5lYXNtX2NoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZV9fNDhfY2hlY2tT
d2l0Y2hUb0pJVF9fY29udGludWUpICJcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVk
aSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4i
Ci8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9yZXBsYWNl
KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBu
dW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxp
bmVhc21fY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlX180OF9jaGVja1N3aXRjaFRvSklUX19j
b250aW51ZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMjEwOQoiXHRtb3ZsIDQoJWVzaSksICVlY3hc
biIKLy8gbGluZSBudW1iZXIgMzA4CiJcdGNtcGwgJDEwNzM3NDE4MjQsICVlY3hcbiIKIlx0amdl
ICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQ4X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2NvbnN0YW50KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDMwOQoiXHRtb3ZsIDQoJWVkaSwgJWVj
eCwgOCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMzEwCiJcdG1vdmwgMCglZWRpLCAlZWN4LCA4
KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMTEKIlx0am1wICIgTE9DQUxfTEFCRUxfU1RSSU5H
KF9vZmZsaW5lYXNtXzQ4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2RvbmUpICJcbiIKTE9DQUxf
TEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQ4X2xvYWRDb25zdGFudE9yVmFyaWFibGVfX2NvbnN0
YW50KSAiOlxuIgovLyBsaW5lIG51bWJlciAzMTMKIlx0bW92bCAtOCglZWRpKSwgJWVheFxuIgov
LyBsaW5lIG51bWJlciAzMTQKIlx0bW92bCAxNDEyKCVlYXgpLCAlZWF4XG4iCi8vIGxpbmUgbnVt
YmVyIDMxNwoiXHRtb3ZsIDQoJWVheCwgJWVjeCwgOCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIg
MzE4CiJcdG1vdmwgMCglZWF4LCAlZWN4LCA4KSwgJWVheFxuIgpMT0NBTF9MQUJFTF9TVFJJTkco
X29mZmxpbmVhc21fNDhfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9fZG9uZSkgIjpcbiIKLy8gbGlu
ZSBudW1iZXIgMjExMQoiXHRjbXBsICQtNSwgJWVkeFxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9T
VFJJTkcoX29mZmxpbmVhc21fb3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QpICJcbiIKLy8gbGlu
ZSBudW1iZXIgMjExMgoiXHRtb3ZsIDQoJWVheCksICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMjEx
MwoiXHRjbXBiICQxMCwgOCglZWN4KVxuIgoiXHRqYiAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2Zm
bGluZWFzbV9vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdCkgIlxuIgovLyBsaW5lIG51bWJlciAy
MDgyCiJcdG1vdmwgLTE2KCVlZGkpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDIwODMKIlx0bW92
bCAtNDAoJWVkaSksICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTYyCiJcdHB1c2ggJWVjeFxuIgov
LyBsaW5lIG51bWJlciAyMDg1CiJcdHJldFxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVh
c21fb3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDIxMTcK
Ilx0bW92bCA4KCVlc2kpLCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDMwOAoiXHRjbXBsICQxMDcz
NzQxODI0LCAlZWN4XG4iCiJcdGpnZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80
OV9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkgIlxuIgovLyBsaW5lIG51bWJlciAz
MDkKIlx0bW92bCA0KCVlZGksICVlY3gsIDgpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMxMAoi
XHRtb3ZsIDAoJWVkaSwgJWVjeCwgOCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzExCiJcdGpt
cCAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80OV9sb2FkQ29uc3RhbnRPclZhcmlh
YmxlX19kb25lKSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV80OV9sb2FkQ29u
c3RhbnRPclZhcmlhYmxlX19jb25zdGFudCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMzEzCiJcdG1v
dmwgLTgoJWVkaSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMzE0CiJcdG1vdmwgMTQxMiglZWF4
KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAzMTcKIlx0bW92bCA0KCVlYXgsICVlY3gsIDgpLCAl
ZWR4XG4iCi8vIGxpbmUgbnVtYmVyIDMxOAoiXHRtb3ZsIDAoJWVheCwgJWVjeCwgOCksICVlYXhc
biIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtXzQ5X2xvYWRDb25zdGFudE9yVmFyaWFi
bGVfX2RvbmUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDIwODIKIlx0bW92bCAtMTYoJWVkaSksICVl
Y3hcbiIKLy8gbGluZSBudW1iZXIgMjA4MwoiXHRtb3ZsIC00MCglZWRpKSwgJWVkaVxuIgovLyBs
aW5lIG51bWJlciAxNjIKIlx0cHVzaCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDIwODUKIlx0cmV0
XG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX21ldGhvZF9jaGVjaykgIlxuIgpI
SURFX1NZTUJPTChsbGludF9vcF9tZXRob2RfY2hlY2spICJcbiIKU1lNQk9MX1NUUklORyhsbGlu
dF9vcF9tZXRob2RfY2hlY2spICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQ0LCAl
ZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcobGxpbnRfb3Bfc3RyY2F0KSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX3N0
cmNhdCkgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX3N0cmNhdCkgIjpcbiIKLy8gbGluZSBu
dW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0
bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9M
X1NUUklORyhsbGludF9oZWxwZXJfc3RyY2F0KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRt
b3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxu
IgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMTYsICVlc2lcbiIKLy8gbGluZSBudW1iZXIg
MTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF90
b19wcmltaXRpdmUpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfdG9fcHJpbWl0aXZlKSAiXG4i
ClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfdG9fcHJpbWl0aXZlKSAiOlxuIgovLyBsaW5lIG51bWJl
ciAyMTM2CiJcdG1vdmwgOCglZXNpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAyMTM3CiJcdG1v
dmwgNCglZXNpKSwgJWVieFxuIgovLyBsaW5lIG51bWJlciAzMDgKIlx0Y21wbCAkMTA3Mzc0MTgy
NCwgJWVjeFxuIgoiXHRqZ2UgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNTBfbG9h
ZENvbnN0YW50T3JWYXJpYWJsZV9fY29uc3RhbnQpICJcbiIKLy8gbGluZSBudW1iZXIgMzA5CiJc
dG1vdmwgNCglZWRpLCAlZWN4LCA4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAzMTAKIlx0bW92
bCAwKCVlZGksICVlY3gsIDgpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDMxMQoiXHRqbXAgIiBM
T0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNTBfbG9hZENvbnN0YW50T3JWYXJpYWJsZV9f
ZG9uZSkgIlxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fNTBfbG9hZENvbnN0YW50
T3JWYXJpYWJsZV9fY29uc3RhbnQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDMxMwoiXHRtb3ZsIC04
KCVlZGkpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDMxNAoiXHRtb3ZsIDE0MTIoJWVheCksICVl
YXhcbiIKLy8gbGluZSBudW1iZXIgMzE3CiJcdG1vdmwgNCglZWF4LCAlZWN4LCA4KSwgJWVkeFxu
IgovLyBsaW5lIG51bWJlciAzMTgKIlx0bW92bCAwKCVlYXgsICVlY3gsIDgpLCAlZWF4XG4iCkxP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV81MF9sb2FkQ29uc3RhbnRPclZhcmlhYmxlX19k
b25lKSAiOlxuIgovLyBsaW5lIG51bWJlciAyMTM5CiJcdGNtcGwgJC01LCAlZWR4XG4iCiJcdGpu
ZSAiIExPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcFRvUHJpbWl0aXZlSXNJbW0pICJc
biIKLy8gbGluZSBudW1iZXIgMjE0MAoiXHRtb3ZsIDQoJWVheCksICVlY3hcbiIKLy8gbGluZSBu
dW1iZXIgMjE0MQoiXHRjbXBiICQ1LCA4KCVlY3gpXG4iCiJcdGpuZSAiIExPQ0FMX0xBQkVMX1NU
UklORyhfb2ZmbGluZWFzbV9vcFRvUHJpbWl0aXZlU2xvd0Nhc2UpICJcbiIKTE9DQUxfTEFCRUxf
U1RSSU5HKF9vZmZsaW5lYXNtX29wVG9QcmltaXRpdmVJc0ltbSkgIjpcbiIKLy8gbGluZSBudW1i
ZXIgMjE0MwoiXHRtb3ZsICVlZHgsIDQoJWVkaSwgJWVieCwgOClcbiIKLy8gbGluZSBudW1iZXIg
MjE0NAoiXHRtb3ZsICVlYXgsIDAoJWVkaSwgJWVieCwgOClcbiIKLy8gbGluZSBudW1iZXIgMTY5
CiJcdGFkZGwgJDEyLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlc
biIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wVG9QcmltaXRpdmVTbG93Q2FzZSkg
IjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5l
IG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoi
XHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfdG9fcHJpbWl0aXZlKSAiXG4iCi8v
IGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIz
CiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMTIsICVl
c2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lN
Qk9MX1NUUklORyhsbGludF9vcF9nZXRfcG5hbWVzKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29w
X2dldF9wbmFtZXMpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9nZXRfcG5hbWVzKSAiOlxu
IgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxpbmUgbnVt
YmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5CiJcdGNh
bGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9nZXRfcG5hbWVzKSAiXG4iCi8vIGxpbmUg
bnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIzCiJcdG1v
dmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKLy8gbGluZSBudW1iZXIgMTcwCiJc
dGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9uZXh0X3Bu
YW1lKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX25leHRfcG5hbWUpICJcbiIKU1lNQk9MX1NU
UklORyhsbGludF9vcF9uZXh0X3BuYW1lKSAiOlxuIgovLyBsaW5lIG51bWJlciAyMTYwCiJcdG1v
dmwgMTIoJWVzaSksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMjE2MQoiXHRtb3ZsIDE2KCVlc2kp
LCAlZWN4XG4iCi8vIGxpbmUgbnVtYmVyIDIxNjIKIlx0bW92bCAwKCVlZGksICVlZHgsIDgpLCAl
ZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDIxNjMKIlx0Y21wbCAwKCVlZGksICVlY3gsIDgpLCAlZWF4
XG4iCiJcdGplICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wTmV4dFBuYW1lRW5k
KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIxNjQKIlx0bW92bCAyMCglZXNpKSwgJWVjeFxuIgovLyBs
aW5lIG51bWJlciAyMTY1CiJcdG1vdmwgMCglZWRpLCAlZWN4LCA4KSwgJWVjeFxuIgovLyBsaW5l
IG51bWJlciAyMTY2CiJcdG1vdmwgMjQoJWVjeCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMjE2
NwoiXHRtb3ZsIDAoJWVieCwgJWVheCwgOCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMjE2OAoi
XHRhZGRsICQxLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDIxNjkKIlx0bW92bCAlZWF4LCAwKCVl
ZGksICVlZHgsIDgpXG4iCi8vIGxpbmUgbnVtYmVyIDIxNzAKIlx0bW92bCA0KCVlc2kpLCAlZWR4
XG4iCi8vIGxpbmUgbnVtYmVyIDIxNzEKIlx0bW92bCAkLTUsIDQoJWVkaSwgJWVkeCwgOClcbiIK
Ly8gbGluZSBudW1iZXIgMjE3MgoiXHRtb3ZsICVlYngsIDAoJWVkaSwgJWVkeCwgOClcbiIKLy8g
bGluZSBudW1iZXIgMjE3MwoiXHRtb3ZsIDgoJWVzaSksICVlYnhcbiIKLy8gbGluZSBudW1iZXIg
MjE3NAoiXHRtb3ZsIDAoJWVkaSwgJWVieCwgOCksICVlYnhcbiIKLy8gbGluZSBudW1iZXIgMjE3
NQoiXHRtb3ZsIDQoJWVieCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMjE3NgoiXHRjbXBsIDgo
JWVjeCksICVlZHhcbiIKIlx0am5lICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29w
TmV4dFBuYW1lU2xvdykgIlxuIgovLyBsaW5lIG51bWJlciAyMTc3CiJcdG1vdmwgMTIoJWVjeCks
ICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMjE3OAoiXHRtb3ZsIDgoJWVheCksICVlYXhcbiIKLy8g
bGluZSBudW1iZXIgMjE3OQoiXHRjbXBsICQwLCAwKCVlYXgpXG4iCiJcdGp6ICIgTE9DQUxfTEFC
RUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wTmV4dFBuYW1lVGFyZ2V0KSAiXG4iCkxPQ0FMX0xBQkVM
X1NUUklORyhfb2ZmbGluZWFzbV9vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcCkgIjpcbiIK
Ly8gbGluZSBudW1iZXIgMjE4MQoiXHRjbXBsICQtMywgMjAoJWVkeClcbiIKIlx0amUgIiBMT0NB
TF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BOZXh0UG5hbWVTbG93KSAiXG4iCi8vIGxpbmUg
bnVtYmVyIDIxODIKIlx0bW92bCAxNiglZWR4KSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAyMTgz
CiJcdG1vdmwgNCglZWN4KSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAyMTg0CiJcdGNtcGwgMCgl
ZWF4KSwgJWVkeFxuIgoiXHRqbmUgIiBMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fb3BO
ZXh0UG5hbWVTbG93KSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIxODUKIlx0YWRkbCAkNCwgJWVheFxu
IgovLyBsaW5lIG51bWJlciAyMTg2CiJcdGNtcGwgJDAsIDAoJWVheClcbiIKIlx0am56ICIgTE9D
QUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29w
KSAiXG4iCkxPQ0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcE5leHRQbmFtZVRhcmdldCkg
IjpcbiIKLy8gbGluZSBudW1iZXIgMTgwCiJcdG1vdmwgMjQoJWVzaSksICVlYXhcbiIKLy8gbGlu
ZSBudW1iZXIgMTc0CiJcdHNhbGwgJDIsICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMTc1CiJcdGFk
ZGwgJWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzYKIlx0am1wICowKCVlc2kpXG4iCkxP
Q0FMX0xBQkVMX1NUUklORyhfb2ZmbGluZWFzbV9vcE5leHRQbmFtZUVuZCkgIjpcbiIKLy8gbGlu
ZSBudW1iZXIgMTY5CiJcdGFkZGwgJDI4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRq
bXAgKjAoJWVzaSlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wTmV4dFBuYW1l
U2xvdykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgov
LyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVy
IDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9oZWxwZXJfbmV4dF9wbmFtZSkgIlxu
IgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVy
IDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5Ci8vIGxpbmUgbnVt
YmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRf
b3BfcHVzaF9zY29wZSkgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9wdXNoX3Njb3BlKSAiXG4i
ClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfcHVzaF9zY29wZSkgIjpcbiIKLy8gbGluZSBudW1iZXIg
MTk0CiJcdG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAl
ZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklO
RyhsbGludF9oZWxwZXJfcHVzaF9zY29wZSkgIlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92
bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIK
Ly8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcw
CiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9wb3Bf
c2NvcGUpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfcG9wX3Njb3BlKSAiXG4iClNZTUJPTF9T
VFJJTkcobGxpbnRfb3BfcG9wX3Njb3BlKSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92
bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVz
cClcbiIKLy8gbGluZSBudW1iZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hl
bHBlcl9wb3Bfc2NvcGUpICJcbiIKLy8gbGluZSBudW1iZXIgMjIyCiJcdG1vdmwgJWVheCwgJWVz
aVxuIgovLyBsaW5lIG51bWJlciAyMjMKIlx0bW92bCAlZWR4LCAlZWRpXG4iCi8vIGxpbmUgbnVt
YmVyIDE2OQoiXHRhZGRsICQ0LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAo
JWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfcHVzaF9uZXdfc2NvcGUp
ICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfcHVzaF9uZXdfc2NvcGUpICJcbiIKU1lNQk9MX1NU
UklORyhsbGludF9vcF9wdXNoX25ld19zY29wZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJc
dG1vdmwgJWVkaSwgMCglZXNwKVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0
KCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGlu
dF9oZWxwZXJfcHVzaF9uZXdfc2NvcGUpICJcbiIKLy8gbGluZSBudW1iZXIgMjIyCiJcdG1vdmwg
JWVheCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAyMjMKIlx0bW92bCAlZWR4LCAlZWRpXG4iCi8v
IGxpbmUgbnVtYmVyIDE2OQoiXHRhZGRsICQxNiwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAxNzAK
Ilx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2NhdGNo
KSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX2NhdGNoKSAiXG4iClNZTUJPTF9TVFJJTkcobGxp
bnRfb3BfY2F0Y2gpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDIyMjMKIlx0bW92bCAlZWF4LCAlZWRp
XG4iCi8vIGxpbmUgbnVtYmVyIDIyMjQKIlx0bW92bCAxMDAoJWVzcCksICVlYnhcbiIKLy8gbGlu
ZSBudW1iZXIgMjIyNQoiXHRtb3ZsIDU0ODQoJWVieCksICVlc2lcbiIKLy8gbGluZSBudW1iZXIg
MjIyNgoiXHRtb3ZsIDU0NDAoJWVieCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMjIyNwoiXHRt
b3ZsIDU0NDQoJWVieCksICVlZHhcbiIKLy8gbGluZSBudW1iZXIgMjIyOAoiXHRtb3ZsICQwLCA1
NDQwKCVlYngpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMjkKIlx0bW92bCAkLTYsIDU0NDQoJWVieClc
biIKLy8gbGluZSBudW1iZXIgMjIzMAoiXHRtb3ZsIDQoJWVzaSksICVlY3hcbiIKLy8gbGluZSBu
dW1iZXIgMjIzMQoiXHRtb3ZsICVlYXgsIDAoJWVkaSwgJWVjeCwgOClcbiIKLy8gbGluZSBudW1i
ZXIgMjIzMgoiXHRtb3ZsICVlZHgsIDQoJWVkaSwgJWVjeCwgOClcbiIKLy8gbGluZSBudW1iZXIg
MTY5CiJcdGFkZGwgJDgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNp
KVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF90aHJvdykgIlxuIgpISURFX1NZ
TUJPTChsbGludF9vcF90aHJvdykgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX3Rocm93KSAi
OlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxpbmUg
bnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5CiJc
dGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl90aHJvdykgIlxuIgovLyBsaW5lIG51
bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDIyMwoiXHRtb3Zs
ICVlZHgsICVlZGlcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFkZGwgJDgsICVlc2lcbiIKLy8g
bGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklO
RyhsbGludF9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3IpICJcbiIKSElERV9TWU1CT0wobGxpbnRf
b3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfdGhy
b3dfcmVmZXJlbmNlX2Vycm9yKSAiOlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRp
LCAwKCVlc3ApXG4iCi8vIGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIK
Ly8gbGluZSBudW1iZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl90
aHJvd19yZWZlcmVuY2VfZXJyb3IpICJcbiIKLy8gbGluZSBudW1iZXIgMjIyCiJcdG1vdmwgJWVh
eCwgJWVzaVxuIgovLyBsaW5lIG51bWJlciAyMjMKIlx0bW92bCAlZWR4LCAlZWRpXG4iCi8vIGxp
bmUgbnVtYmVyIDE2OQoiXHRhZGRsICQ4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRq
bXAgKjAoJWVzaSlcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfanNyKSAiXG4i
CkhJREVfU1lNQk9MKGxsaW50X29wX2pzcikgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2pz
cikgIjpcbiIKLy8gbGluZSBudW1iZXIgMjI1MQoiXHRtb3ZsIDQoJWVzaSksICVlYXhcbiIKLy8g
bGluZSBudW1iZXIgMjI1MgoiXHRsZWFsIDEyKCVlc2kpLCAlZWR4XG4iCi8vIGxpbmUgbnVtYmVy
IDIyNTMKIlx0bW92bCAlZWR4LCAwKCVlZGksICVlYXgsIDgpXG4iCi8vIGxpbmUgbnVtYmVyIDE4
MAoiXHRtb3ZsIDgoJWVzaSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMTc0CiJcdHNhbGwgJDIs
ICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMTc1CiJcdGFkZGwgJWVheCwgJWVzaVxuIgovLyBsaW5l
IG51bWJlciAxNzYKIlx0am1wICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxs
aW50X29wX3NyZXQpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3Bfc3JldCkgIlxuIgpTWU1CT0xf
U1RSSU5HKGxsaW50X29wX3NyZXQpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDIyNTkKIlx0bW92bCA0
KCVlc2kpLCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDIyNjAKIlx0bW92bCAwKCVlZGksICVlYXgs
IDgpLCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE2OQovLyBsaW5lIG51bWJlciAxNzAKIlx0am1w
ICowKCVlc2kpXG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2RlYnVnKSAiXG4i
CkhJREVfU1lNQk9MKGxsaW50X29wX2RlYnVnKSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3Bf
ZGVidWcpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE5NAoiXHRtb3ZsICVlZGksIDAoJWVzcClcbiIK
Ly8gbGluZSBudW1iZXIgMTk1CiJcdG1vdmwgJWVzaSwgNCglZXNwKVxuIgovLyBsaW5lIG51bWJl
ciAxOTkKIlx0Y2FsbCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfaGVscGVyX2RlYnVnKSAiXG4iCi8v
IGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIz
CiJcdG1vdmwgJWVkeCwgJWVkaVxuIgovLyBsaW5lIG51bWJlciAxNjkKIlx0YWRkbCAkMTYsICVl
c2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmdsb2JsICIgU1lN
Qk9MX1NUUklORyhsbGludF9vcF9wcm9maWxlX3dpbGxfY2FsbCkgIlxuIgpISURFX1NZTUJPTChs
bGludF9vcF9wcm9maWxlX3dpbGxfY2FsbCkgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX3By
b2ZpbGVfd2lsbF9jYWxsKSAiOlxuIgovLyBsaW5lIG51bWJlciAyMjcyCiJcdG1vdmwgOTYoJWVz
cCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMjI3MwoiXHRjbXBsICQwLCAwKCVlYXgpXG4iCiJc
dGp6ICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wUHJvZmlsZVdpbGxDYWxsRG9u
ZSkgIlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4iCi8vIGxp
bmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1iZXIgMTk5
CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCkg
IlxuIgovLyBsaW5lIG51bWJlciAyMjIKIlx0bW92bCAlZWF4LCAlZXNpXG4iCi8vIGxpbmUgbnVt
YmVyIDIyMwoiXHRtb3ZsICVlZHgsICVlZGlcbiIKTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5l
YXNtX29wUHJvZmlsZVdpbGxDYWxsRG9uZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTY5CiJcdGFk
ZGwgJDgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMTcwCiJcdGptcCAqMCglZXNpKVxuIgoiLmds
b2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9wcm9maWxlX2RpZF9jYWxsKSAiXG4iCkhJREVf
U1lNQk9MKGxsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGwpICJcbiIKU1lNQk9MX1NUUklORyhsbGlu
dF9vcF9wcm9maWxlX2RpZF9jYWxsKSAiOlxuIgovLyBsaW5lIG51bWJlciAyMjgxCiJcdG1vdmwg
OTYoJWVzcCksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMjI4MgoiXHRjbXBsICQwLCAwKCVlYXgp
XG4iCiJcdGp6ICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9vZmZsaW5lYXNtX29wUHJvZmlsZVdpbGxD
YWxsRG9uZSkgIlxuIgovLyBsaW5lIG51bWJlciAxOTQKIlx0bW92bCAlZWRpLCAwKCVlc3ApXG4i
Ci8vIGxpbmUgbnVtYmVyIDE5NQoiXHRtb3ZsICVlc2ksIDQoJWVzcClcbiIKLy8gbGluZSBudW1i
ZXIgMTk5CiJcdGNhbGwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X2hlbHBlcl9wcm9maWxlX2RpZF9j
YWxsKSAiXG4iCi8vIGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGlu
ZSBudW1iZXIgMjIzCiJcdG1vdmwgJWVkeCwgJWVkaVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29m
ZmxpbmVhc21fb3BQcm9maWxlRGlkQ2FsbERvbmUpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDE2OQoi
XHRhZGRsICQ4LCAlZXNpXG4iCi8vIGxpbmUgbnVtYmVyIDE3MAoiXHRqbXAgKjAoJWVzaSlcbiIK
Ii5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfZW5kKSAiXG4iCkhJREVfU1lNQk9MKGxs
aW50X29wX2VuZCkgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2VuZCkgIjpcbiIKLy8gbGlu
ZSBudW1iZXIgMjcyCiJcdG1vdmwgLTgoJWVkaSksICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMjcz
CiJcdGFkZGwgJDEwLCAxNDUyKCVlYXgpXG4iCiJcdGpzICIgTE9DQUxfTEFCRUxfU1RSSU5HKF9v
ZmZsaW5lYXNtX2NoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZV9fNTBfY2hlY2tTd2l0Y2hUb0pJ
VF9fY29udGludWUpICJcbiIKLy8gbGluZSBudW1iZXIgMTk0CiJcdG1vdmwgJWVkaSwgMCglZXNw
KVxuIgovLyBsaW5lIG51bWJlciAxOTUKIlx0bW92bCAlZXNpLCA0KCVlc3ApXG4iCi8vIGxpbmUg
bnVtYmVyIDE5OQoiXHRjYWxsICIgU1lNQk9MX1NUUklORyhsbGludF9yZXBsYWNlKSAiXG4iCi8v
IGxpbmUgbnVtYmVyIDIyMgoiXHRtb3ZsICVlYXgsICVlc2lcbiIKLy8gbGluZSBudW1iZXIgMjIz
CiJcdG1vdmwgJWVkeCwgJWVkaVxuIgpMT0NBTF9MQUJFTF9TVFJJTkcoX29mZmxpbmVhc21fY2hl
Y2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlX181MF9jaGVja1N3aXRjaFRvSklUX19jb250aW51ZSkg
IjpcbiIKLy8gbGluZSBudW1iZXIgMjI5MQoiXHRtb3ZsIDQoJWVzaSksICVlYXhcbiIKLy8gbGlu
ZSBudW1iZXIgMjI5MgoiXHRtb3ZsIDQoJWVkaSwgJWVheCwgOCksICVlZHhcbiIKLy8gbGluZSBu
dW1iZXIgMjI5MwoiXHRtb3ZsIDAoJWVkaSwgJWVheCwgOCksICVlYXhcbiIKLy8gbGluZSBudW1i
ZXIgMjA4MgoiXHRtb3ZsIC0xNiglZWRpKSwgJWVjeFxuIgovLyBsaW5lIG51bWJlciAyMDgzCiJc
dG1vdmwgLTQwKCVlZGkpLCAlZWRpXG4iCi8vIGxpbmUgbnVtYmVyIDE2MgoiXHRwdXNoICVlY3hc
biIKLy8gbGluZSBudW1iZXIgMjA4NQoiXHRyZXRcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkco
bGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSkgIlxuIgpISURFX1NZTUJPTChsbGlu
dF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lKSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRf
dGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSkgIjpcbiIKLy8gbGluZSBudW1iZXIgMjMwMQoi
XHRtb3ZsIDEwMCglZXNwKSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAyMzAyCiJcdG1vdmwgNTQ3
NiglZWR4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAyMzAzCiJcdGptcCAqNTQ4MCglZWR4KVxu
IgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9s
aW5lKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUp
ICJcbiIKU1lNQk9MX1NUUklORyhsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKSAi
OlxuIgovLyBsaW5lIG51bWJlciAxNTIKIlx0cG9wICVlY3hcbiIKLy8gbGluZSBudW1iZXIgMjMw
OAoiXHRtb3ZsIDEwMCglZXNwKSwgJWVkeFxuIgovLyBsaW5lIG51bWJlciAyMzA5CiJcdG1vdmwg
NTQ3NiglZWR4KSwgJWVheFxuIgovLyBsaW5lIG51bWJlciAyMzEwCiJcdGptcCAqNTQ4MCglZWR4
KVxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9nZXRfYXJyYXlfbGVuZ3RoKSAi
XG4iCkhJREVfU1lNQk9MKGxsaW50X29wX2dldF9hcnJheV9sZW5ndGgpICJcbiIKU1lNQk9MX1NU
UklORyhsbGludF9vcF9nZXRfYXJyYXlfbGVuZ3RoKSAiOlxuIgovLyBsaW5lIG51bWJlciAxMzUK
Ilx0bW92bCAkMCwgMzE0ODcyNTk5OVxuIgovLyBsaW5lIG51bWJlciAxMzYKIlx0eG9ybCAlZWF4
LCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDEzNwoiXHRjYWxsIColZWF4XG4iCiIuZ2xvYmwgIiBT
WU1CT0xfU1RSSU5HKGxsaW50X29wX2dldF9ieV9pZF9jaGFpbikgIlxuIgpISURFX1NZTUJPTChs
bGludF9vcF9nZXRfYnlfaWRfY2hhaW4pICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9nZXRf
YnlfaWRfY2hhaW4pICI6XG4iCi8vIGxpbmUgbnVtYmVyIDEzNQoiXHRtb3ZsICQwLCAzMTQ4NzI1
OTk5XG4iCi8vIGxpbmUgbnVtYmVyIDEzNgoiXHR4b3JsICVlYXgsICVlYXhcbiIKLy8gbGluZSBu
dW1iZXIgMTM3CiJcdGNhbGwgKiVlYXhcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRf
b3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbikgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9nZXRf
YnlfaWRfY3VzdG9tX2NoYWluKSAiXG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfZ2V0X2J5X2lk
X2N1c3RvbV9jaGFpbikgIjpcbiIKLy8gbGluZSBudW1iZXIgMTM1CiJcdG1vdmwgJDAsIDMxNDg3
MjU5OTlcbiIKLy8gbGluZSBudW1iZXIgMTM2CiJcdHhvcmwgJWVheCwgJWVheFxuIgovLyBsaW5l
IG51bWJlciAxMzcKIlx0Y2FsbCAqJWVheFxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGlu
dF9vcF9nZXRfYnlfaWRfY3VzdG9tX3Byb3RvKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX2dl
dF9ieV9pZF9jdXN0b21fcHJvdG8pICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9nZXRfYnlf
aWRfY3VzdG9tX3Byb3RvKSAiOlxuIgovLyBsaW5lIG51bWJlciAxMzUKIlx0bW92bCAkMCwgMzE0
ODcyNTk5OVxuIgovLyBsaW5lIG51bWJlciAxMzYKIlx0eG9ybCAlZWF4LCAlZWF4XG4iCi8vIGxp
bmUgbnVtYmVyIDEzNwoiXHRjYWxsIColZWF4XG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxs
aW50X29wX2dldF9ieV9pZF9jdXN0b21fc2VsZikgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9n
ZXRfYnlfaWRfY3VzdG9tX3NlbGYpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9nZXRfYnlf
aWRfY3VzdG9tX3NlbGYpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDEzNQoiXHRtb3ZsICQwLCAzMTQ4
NzI1OTk5XG4iCi8vIGxpbmUgbnVtYmVyIDEzNgoiXHR4b3JsICVlYXgsICVlYXhcbiIKLy8gbGlu
ZSBudW1iZXIgMTM3CiJcdGNhbGwgKiVlYXhcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxp
bnRfb3BfZ2V0X2J5X2lkX2dlbmVyaWMpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfZ2V0X2J5
X2lkX2dlbmVyaWMpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9nZXRfYnlfaWRfZ2VuZXJp
YykgIjpcbiIKLy8gbGluZSBudW1iZXIgMTM1CiJcdG1vdmwgJDAsIDMxNDg3MjU5OTlcbiIKLy8g
bGluZSBudW1iZXIgMTM2CiJcdHhvcmwgJWVheCwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxMzcK
Ilx0Y2FsbCAqJWVheFxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9nZXRfYnlf
aWRfZ2V0dGVyX2NoYWluKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX2dldF9ieV9pZF9nZXR0
ZXJfY2hhaW4pICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX2No
YWluKSAiOlxuIgovLyBsaW5lIG51bWJlciAxMzUKIlx0bW92bCAkMCwgMzE0ODcyNTk5OVxuIgov
LyBsaW5lIG51bWJlciAxMzYKIlx0eG9ybCAlZWF4LCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDEz
NwoiXHRjYWxsIColZWF4XG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2dldF9i
eV9pZF9nZXR0ZXJfcHJvdG8pICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfZ2V0X2J5X2lkX2dl
dHRlcl9wcm90bykgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJf
cHJvdG8pICI6XG4iCi8vIGxpbmUgbnVtYmVyIDEzNQoiXHRtb3ZsICQwLCAzMTQ4NzI1OTk5XG4i
Ci8vIGxpbmUgbnVtYmVyIDEzNgoiXHR4b3JsICVlYXgsICVlYXhcbiIKLy8gbGluZSBudW1iZXIg
MTM3CiJcdGNhbGwgKiVlYXhcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfZ2V0
X2J5X2lkX2dldHRlcl9zZWxmKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX2dldF9ieV9pZF9n
ZXR0ZXJfc2VsZikgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJf
c2VsZikgIjpcbiIKLy8gbGluZSBudW1iZXIgMTM1CiJcdG1vdmwgJDAsIDMxNDg3MjU5OTlcbiIK
Ly8gbGluZSBudW1iZXIgMTM2CiJcdHhvcmwgJWVheCwgJWVheFxuIgovLyBsaW5lIG51bWJlciAx
MzcKIlx0Y2FsbCAqJWVheFxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9nZXRf
YnlfaWRfcHJvdG8pICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3BfZ2V0X2J5X2lkX3Byb3RvKSAi
XG4iClNZTUJPTF9TVFJJTkcobGxpbnRfb3BfZ2V0X2J5X2lkX3Byb3RvKSAiOlxuIgovLyBsaW5l
IG51bWJlciAxMzUKIlx0bW92bCAkMCwgMzE0ODcyNTk5OVxuIgovLyBsaW5lIG51bWJlciAxMzYK
Ilx0eG9ybCAlZWF4LCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDEzNwoiXHRjYWxsIColZWF4XG4i
CiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX2dldF9ieV9pZF9zZWxmKSAiXG4iCkhJ
REVfU1lNQk9MKGxsaW50X29wX2dldF9ieV9pZF9zZWxmKSAiXG4iClNZTUJPTF9TVFJJTkcobGxp
bnRfb3BfZ2V0X2J5X2lkX3NlbGYpICI6XG4iCi8vIGxpbmUgbnVtYmVyIDEzNQoiXHRtb3ZsICQw
LCAzMTQ4NzI1OTk5XG4iCi8vIGxpbmUgbnVtYmVyIDEzNgoiXHR4b3JsICVlYXgsICVlYXhcbiIK
Ly8gbGluZSBudW1iZXIgMTM3CiJcdGNhbGwgKiVlYXhcbiIKIi5nbG9ibCAiIFNZTUJPTF9TVFJJ
TkcobGxpbnRfb3BfZ2V0X3N0cmluZ19sZW5ndGgpICJcbiIKSElERV9TWU1CT0wobGxpbnRfb3Bf
Z2V0X3N0cmluZ19sZW5ndGgpICJcbiIKU1lNQk9MX1NUUklORyhsbGludF9vcF9nZXRfc3RyaW5n
X2xlbmd0aCkgIjpcbiIKLy8gbGluZSBudW1iZXIgMTM1CiJcdG1vdmwgJDAsIDMxNDg3MjU5OTlc
biIKLy8gbGluZSBudW1iZXIgMTM2CiJcdHhvcmwgJWVheCwgJWVheFxuIgovLyBsaW5lIG51bWJl
ciAxMzcKIlx0Y2FsbCAqJWVheFxuIgoiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsbGludF9vcF9w
dXRfYnlfaWRfZ2VuZXJpYykgIlxuIgpISURFX1NZTUJPTChsbGludF9vcF9wdXRfYnlfaWRfZ2Vu
ZXJpYykgIlxuIgpTWU1CT0xfU1RSSU5HKGxsaW50X29wX3B1dF9ieV9pZF9nZW5lcmljKSAiOlxu
IgovLyBsaW5lIG51bWJlciAxMzUKIlx0bW92bCAkMCwgMzE0ODcyNTk5OVxuIgovLyBsaW5lIG51
bWJlciAxMzYKIlx0eG9ybCAlZWF4LCAlZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDEzNwoiXHRjYWxs
IColZWF4XG4iCiIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxsaW50X29wX3B1dF9ieV9pZF9yZXBs
YWNlKSAiXG4iCkhJREVfU1lNQk9MKGxsaW50X29wX3B1dF9ieV9pZF9yZXBsYWNlKSAiXG4iClNZ
TUJPTF9TVFJJTkcobGxpbnRfb3BfcHV0X2J5X2lkX3JlcGxhY2UpICI6XG4iCi8vIGxpbmUgbnVt
YmVyIDEzNQoiXHRtb3ZsICQwLCAzMTQ4NzI1OTk5XG4iCi8vIGxpbmUgbnVtYmVyIDEzNgoiXHR4
b3JsICVlYXgsICVlYXhcbiIKLy8gbGluZSBudW1iZXIgMTM3CiJcdGNhbGwgKiVlYXhcbiIKIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcobGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pICJcbiIK
SElERV9TWU1CT0wobGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pICJcbiIKU1lNQk9MX1NU
UklORyhsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbikgIjpcbiIKLy8gbGluZSBudW1iZXIg
MTM1CiJcdG1vdmwgJDAsIDMxNDg3MjU5OTlcbiIKLy8gbGluZSBudW1iZXIgMTM2CiJcdHhvcmwg
JWVheCwgJWVheFxuIgovLyBsaW5lIG51bWJlciAxMzcKIlx0Y2FsbCAqJWVheFxuIgoiLmdsb2Js
ICIgU1lNQk9MX1NUUklORyhsbGludF9lbmQpICJcbiIKSElERV9TWU1CT0wobGxpbnRfZW5kKSAi
XG4iClNZTUJPTF9TVFJJTkcobGxpbnRfZW5kKSAiOlxuIgovLyBsaW5lIG51bWJlciAxMzUKIlx0
bW92bCAkMCwgMzE0ODcyNTk5OVxuIgovLyBsaW5lIG51bWJlciAxMzYKIlx0eG9ybCAlZWF4LCAl
ZWF4XG4iCi8vIGxpbmUgbnVtYmVyIDEzNwoiXHRjYWxsIColZWF4XG4iCik7CiNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124374</attachid>
            <date>2012-01-27 14:50:37 -0800</date>
            <delta_ts>2012-01-28 00:41:10 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_58.diff</filename>
            <type>text/plain</type>
            <size>446701</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MTUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5OSBA
QAorMjAxMi0wMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi52c3Byb3BzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDog
QWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Omlz
U2V0KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAg
IChDYWxsTGlua1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmVzY2FwZVF1b3Rlcyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWlu
Z0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RXZh
bENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6
amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1w
bCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dXNlc09wY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAg
KCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0Q29tcGls
ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
aWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxp
a2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlr
ZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1
ZW50RXhpdFNpdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29v
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50
RXhlY3V0ZUNvdW50ZXIpOgorICAgICAgICAoUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChF
dmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBi
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6
CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OkdldEJ5SWRTdGF0dXMpOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjp3YXNTZWVuSW5KSVQpOgorICAgICAgICAoR2V0QnlJZFN0YXR1
cyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgIChJbnN0cnVj
dGlvbik6CisgICAgICAgICgpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZv
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0lu
Zm86OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKExMSW50Q2FsbExpbmtJbmZvKToKKyAg
ICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6OkxM
SW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAg
IChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAoUHV0QnlJZFN0YXR1cyk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0
UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaCk6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0
UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRD
b21waWxlci5jcHA6CisgICAgICAgICgpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKCk6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChBbGxvY2F0aW9uU3BhY2UpOgorICAgICAgICAoKToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAo
SGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAoSlNDOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFt
ZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJy
ZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZy
YW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmls
ZSk6CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKToKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAg
KiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpJVENvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2Rl
Ojppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAg
ICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToK
KyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93
KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RV
Ql9GVU5DVElPTik6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJ
VC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1v
bi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChEYXRhKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50
RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRF
dmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2lu
dCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBv
aW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxl
cik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9u
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpM
TEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQv
TExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChK
U0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmVudHJ5T1NSKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJlc29sdmVHbG9iYWwpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9z
dENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRk
ZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludE9m
ZnNldHNFeHRyYWN0b3IpOgorICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDog
QWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3Ry
dWN0RW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZv
ckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpMTEludDo6ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20u
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRy
YWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAg
ICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFz
bS9zZWxmX2hhc2gucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2V0dGluZ3MucmI6
IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBBZGRlZC4KKyAgICAg
ICAgKiBvZmZsaW5lYXNtL3g4Ni5yYjogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKCk6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9u
U2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAgKENvbW1vblNsb3dQYXRocyk6Cisg
ICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6b3BJbnN0YW5jZU9mU2xvdyk6CisgICAgICAg
ICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6amV0dGlzb25Db2RlQmxv
Y2spOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6CisgICAgICAg
IChKU0MpOgorICAgICAgICAoSlNDOjpzYW1wbGluZ0Rlc2NyaXB0aW9uKToKKyAgICAgICAgKEpT
Qzo6RXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OlByb2dy
YW1FeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFi
bGU6OmNvbXBpbGVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6
YmFzZWxpbmVDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6
OmppdENvbXBpbGVGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpq
aXRDb21waWxlRm9yQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
Ojpjb21waWxlRm9yQ2FsbEludGVybmFsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvRXhl
Y3V0YWJsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKCk6CisgICAgICAgIChFdmFsRXhl
Y3V0YWJsZSk6CisgICAgICAgIChQcm9ncmFtRXhlY3V0YWJsZSk6CisgICAgICAgIChGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBp
bGVGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnByZXBhcmVGb3JFeGVjdXRpb24pOgorICAgICAg
ICAoSlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBY3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dGVhck9mZik6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNB
cnJheSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoSlNDZWxsKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24u
aDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0Z1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9i
YWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTR2xvYmFsRGF0YSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6
c2NyYXRjaEJ1ZmZlckZvclNpemUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgICog
cnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKCk6CisgICAgICAg
IChKU09iamVjdCk6CisgICAgICAgIChKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoSlNTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBl
SW5mby5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFR5cGVJbmZvKToKKyAgICAgICAgKiBy
dW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SlNWYWx1
ZTo6ZGVzY3JpcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5oOgorICAgICAgICAo
SlNWYWx1ZSk6CisgICAgICAgICgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVj
dC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTVmFyaWFibGVPYmplY3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChPcHRpb25zKToKKyAgICAgICAgKEpT
Qzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
cy5oOgorICAgICAgICAoT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoU2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoU3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAqIHd0Zi9JbmxpbmVBU00uaDoKKyAgICAg
ICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg6
CisgICAgICAgIChTZW50aW5lbExpbmtlZExpc3QpOgorICAgICAgICAoV1RGOjpTZW50aW5lbExp
bmtlZExpc3Q6OmlzRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChTdHJpbmdJbXBsKToKKyAgICAgICAgKCk6CisKIDIwMTIt
MDEtMjcgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgogCiAgICAg
ICAgIFtKU0NdIEFzbS1vcmlnaW5hdGVkIHN5bWJvbHMgc2hvdWxkIGJlIG1hcmtlZCBhcyBoaWRk
ZW4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNjE1
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMTEsNiArMTEsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVNDUklQ
VENPUkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIK
KyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpAQCAtOTQsNiArOTUsNyBAQCBTRVQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5jcHAKIAog
ICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorICAgIGppdC9Ib3N0Q2FsbFJldHVyblZh
bHVlLmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCiAgICAgaml0L0pJVEFyaXRo
bWV0aWMuY3BwCiAgICAgaml0L0pJVENhbGwzMl82NC5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDEwNjE1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBqYXZh
c2NyaXB0Y29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0IFwKKwktSSQoc3JjZGly
KS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUgXApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9u
IDEwNjE1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3
b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIFwKQEAgLTEwMiw2ICsxMDMsNyBAQCBqYXZhc2NyaXB0
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5jcHAg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5lSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5oIFwKQEAgLTI3Nyw2ICsyNzksOCBAQCBq
YXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Nv
bXBhY3RKSVRDb2RlTWFwLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFs
bG9jYXRvci5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFs
dWUuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgXApAQCAtMzAwLDYgKzMwNCw3IEBA
IGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
U3BlY2lhbGl6ZWRUaHVua0pJVC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5r
R2VuZXJhdG9ycy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0
b3JzLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL29zLXdpbjMyL3N0ZGJvb2wuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL29zLXdpbjMyL3N0ZGludC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0FTVEJ1aWxkZXIuaCBcCkBAIC0zNTAsNiArMzU1LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuY3BwIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oIFwKQEAgLTM3OCw2ICszODQsNyBAQCBqYXZhc2NyaXB0Y29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggXAorCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIFwKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQkocmV2aXNpb24gMTA2MTUzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQkod29ya2luZyBjb3B5KQpA
QCAtMjAsNiArMjAsNyBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL2RlYnVn
Z2VyIFwKICAgICAkJFNPVVJDRV9ESVIvaW50ZXJwcmV0ZXIgXAogICAgICQkU09VUkNFX0RJUi9q
aXQgXAorICAgICQkU09VUkNFX0RJUi9sbGludCBcCiAgICAgJCRTT1VSQ0VfRElSL3BhcnNlciBc
CiAgICAgJCRTT1VSQ0VfRElSL3Byb2ZpbGVyIFwKICAgICAkJFNPVVJDRV9ESVIvcnVudGltZSBc
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTA2MTUzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsx
MDYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwIFwK
ICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCBcCiAgICAgaml0L0V4
ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAg
XAogICAgIGppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAgICAgaml0L0pJVEFyaXRobWV0aWMzMl82
NC5jcHAgXAogICAgIGppdC9KSVRDYWxsLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24gMTA2
MTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3MzAs
NiArMTczMCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlwuLlxqaXRcSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGppdFxKSVQuY3BwIgogCQkJCT4K
IAkJCTwvRmlsZT4KQEAgLTE4MTUsNiArMTgxOSwxNCBAQAogCQkJPC9GaWxlPgogCQk8L0ZpbHRl
cj4KIAkJPEZpbHRlcgorCQkJTmFtZT0ibGxpbnQiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cLi5cbGxpbnRcTExJbnREYXRhLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8
L0ZpbHRlcj4KKwkJPEZpbHRlcgogCQkJTmFtZT0iaW50ZXJwcmV0ZXIiCiAJCQk+CiAJCQk8Rmls
ZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52c3Byb3BzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwkocmV2aXNpb24gMTA2MTUzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZUNvbW1vbi52c3Byb3BzCSh3b3JraW5nIGNvcHkpCkBAIC02LDcgKzYsNyBAQAog
CT4KIAk8VG9vbAogCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQlBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPSImcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXEphdmFTY3Jp
cHRDb3JlXERlcml2ZWRTb3VyY2VzXCZxdW90OzsuLi8uLi87Li4vLi4vQVBJLzsuLi8uLi9wYXJz
ZXIvOy4uLy4uL2J5dGVjb21waWxlci87Li4vLi4vZGZnLzsuLi8uLi9qaXQvOy4uLy4uL3J1bnRp
bWUvOy4uLy4uL2J5dGVjb2RlLzsuLi8uLi9pbnRlcnByZXRlci87Li4vLi4vd3RmLzsuLi8uLi9w
cm9maWxlcjsuLi8uLi9hc3NlbWJsZXIvOy4uLy4uL2RlYnVnZ2VyLzsuLi8uLi9oZWFwLzsmcXVv
dDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRl
XEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRo
cmVhZHMmcXVvdDsiCisJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNvdXJjZXNcJnF1
b3Q7Oy4uLy4uLzsuLi8uLi9BUEkvOy4uLy4uL3BhcnNlci87Li4vLi4vYnl0ZWNvbXBpbGVyLzsu
Li8uLi9kZmcvOy4uLy4uL2ppdC87Li4vLi4vbGxpbnQvOy4uLy4uL3J1bnRpbWUvOy4uLy4uL2J5
dGVjb2RlLzsuLi8uLi9pbnRlcnByZXRlci87Li4vLi4vd3RmLzsuLi8uLi9wcm9maWxlcjsuLi8u
Li9hc3NlbWJsZXIvOy4uLy4uL2RlYnVnZ2VyLzsuLi8uLi9oZWFwLzsmcXVvdDskKFdlYktpdExp
YnJhcmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5j
bHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRl
JnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRD
b3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGUm
cXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDsi
CiAJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfX1NURF9DIgogCQlGb3JjZWRJbmNsdWRlRmls
ZXM9IklDVVZlcnNpb24uaCIKIAkvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZpbGVzLmNtZAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL2NvcHktZmlsZXMuY21kCShyZXZpc2lvbiAxMDYxNTMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL2NvcHktZmlsZXMu
Y21kCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIGZvciAlJWQgaW4gKAogICAgIGRl
YnVnZ2VyCiAgICAgaW50ZXJwcmV0ZXIKICAgICBqaXQKKyAgICBsbGludAogICAgIHBhcnNlcgog
ICAgIHByb2ZpbGVyCiAgICAgcnVudGltZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDEwNjE1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcs
MTUgQEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlv
biAqLworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLyA9IHsK
KwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3Qg
PSAwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovOworCQkJYnVpbGRQaGFzZXMg
PSAoCisJCQkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291
cmNlcyAqLywKKwkJCSk7CisJCQluYW1lID0gIkxMSW50IE9mZnNldHMiOworCQkJcHJvZHVjdE5h
bWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKIAkJNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVC
IC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsK
IAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2NUZCM0Y3NzA5RDExRUJEMDBGNDlERUIgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkRlcml2ZWQg
U291cmNlcyIgKi87CkBAIC0xNCw2ICsyMyw5IEBACiAJCQkJNjVGQjNGNjUwOUQxMUU5MTAwRjQ5
REVCIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk1RDM1REVFMTBDN0MxNDBC
MDA4NjQ4QjIgLyogR2VuZXJhdGUgRFRyYWNlIGhlYWRlciAqLywKIAkJCSk7CisJCQlkZXBlbmRl
bmNpZXMgPSAoCisJCQkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8sCisJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcHJvZHVj
dE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJfTsKQEAgLTQ4LDYgKzYwLDEwIEBACiAJCTBC
QUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkFDOTQ5RTEzMzg3
Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCQ0Q4MzU3MTQ4NTg0NTIwMEVB
MjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFu
Z2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
QkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQg
LyogU2l6ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBM
TEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNw
cCAqLzsgfTsKKwkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk2
MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRG
IC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi87
IH07CisJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTgxNEJDRjQ1QTAw
ODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBNTE0
QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxl
ckluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0
RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJh
bmdlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CkBAIC01OCw5ICs3NCwxMyBAQAogCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9k
Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjcx
NEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyog
R2xvYmFsUmVzb2x2ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNl
dFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9C
eXRlY29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwRkM0NTgx
NEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdE
IC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTZE
NzI2MTQyQzM5QzAwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJp
dFZlY3Rvci5jcHAgKi87IH07CiAJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFD
MjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyog
RXhlY3V0aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3
RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNzkxNEJFNzI3MzAwQURD
NjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0
ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjI0
MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAw
N0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU2RjE0NzM4RjMxMDAxMjFFNEYgLyog
REZHQ29kZUJsb2Nrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU3MDE0NzM4
RjM1MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29k
ZUJsb2Nrcy5jcHAgKi87IH07CkBAIC03MSw2ICs5MSwxOSBAQAogCQkwRjQzMTczODE0NkJBQzY5
MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVI
YW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDgwMTRCQTU3MjcwMEJG
RTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlv
bnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2
ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIg
LyogTExJbnRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5
RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLzsgc2V0dGluZ3MgPSB7Q09N
UElMRVJfRkxBR1MgPSAiLVduby11bnVzZWQtcGFyYW1ldGVyIjsgfTsgfTsKKwkJMEY0NjgwQTUx
NEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50
SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTEx
NEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi87IH07CisJCTBG
NDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUQxNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MENBMTRCQkIxNkMwMEJG
RTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0Ix
NEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcy
IC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZl
bEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNw
cCAqLzsgfTsKKwkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4
MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDIxNEJCRDE2NTAw
QkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAq
LzsgfTsKKwkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0YxNEJCQjNEMTAw
QkZFMjcyIC8qIExMSW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVy
blZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLzsg
fTsKKwkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEQxMTRC
QkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1NUYwRjQxNEQxMDYzOTAwQUM3NjQ5
IC8qIEFic3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovOyB9
OwogCQkwRjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NUYwRjIxNEQxMDYzNjAwQUM3
NjQ5IC8qIEFic3RyYWN0UEMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZp
bmFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzg1LDcgKzQx
OCw3IEBACiAJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUUxMTE3RTU3
ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVw
YXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkJCMDlCRTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87IH07CiAJCTg2QkIw
OUMxMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZH
UmVwYXRjaC5oICovOyB9OwotCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyB9OworCQk4NkMz
NkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAv
KiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFS
TS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1
NjhERDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9OwogCQk4
NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAw
N0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUw
MDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxl
ci5oICovOyB9OwpAQCAtNzUyLDYgKzc4NSwyMCBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTBG
NDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJ
CQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3
RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUg
PSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzI7
CisJCQlyZW1vdGVJbmZvID0gIkxMSW50IE9mZnNldHMiOworCQl9OworCQkwRjQ2ODBCMzE0QkE4
MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJY
Q29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4
RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJl
bW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyOworCQkJcmVtb3Rl
SW5mbyA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJMTQxMjE0QkUwQTQ5MTkw
RTAwNDgwMjU1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENv
bnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZD
MDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTc5Nyw2ICs4NDQsMTUgQEAKIC8qIEVu
ZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5Rmls
ZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENv
cHlGaWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21h
bjEvOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKIAkJNURCQjE1MTEx
MzFEMEIxMzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhDb3B5RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7CkBAIC04Mzcs
NiArODkzLDEwIEBACiAJCTBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmlj
dGlvblZlcmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFJl
c3RyaWN0aW9uVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJDRDgz
NTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBUZW1wb3JhcnlDaGFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50
RW50cnlwb2ludHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTElu
dEVudHJ5cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RW50
cnlwb2ludHMuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50VGh1bmtzLmNw
cDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50VGh1bmtzLmg7IHBhdGggPSBsbGludC9MTElu
dFRodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBNTE0QkNGNTA0
MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29kZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTgxNEJDRjU1
RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0FB
MTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTg0Nyw5ICs5MDcsMTMgQEAKIAkJMEYwQjgzQjMxNEJDRjg1RTAwODg1
QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBNZXRob2RDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbFJlc29sdmVJbmZvLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJu
T2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRDYWxsTGlua0luZm8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8q
IENvbW1vblNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21t
b25TbG93UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNkQ3MjQxNDJD
MzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpJVERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAv
KiBFeGVjdXRpb25IYXJuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4
ZWN1dGlvbkhhcm5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0Ux
NEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVDb252ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhh
cnZlc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrUmVmZXJlbmNl
SGFydmVzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZEMTQ3MzhG
MkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04NjAsNiArOTI0LDIwIEBACiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdF
Mzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gTGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4
MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRFeGNlcHRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NM
TEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGlj
aXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4
ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhj
ZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEV4
Y2VwdGlvbnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhj
ZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEV4Y2VwdGlv
bnMuaDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50SGVscGVycy5jcHA7IHBh
dGggPSBsbGludC9MTEludEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50SGVscGVycy5oOyBwYXRoID0gbGxpbnQvTExJbnRI
ZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEExMTRCQTdGODIw
MEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgcGF0aCA9IGxsaW50
L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENvbW1vbi5oOyBwYXRoID0gbGxpbnQvTExJbnRDb21t
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzYxNEJCQjE2OTAwQkZF
MjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBMTEludE9mZmxpbmVBc21Db25maWcuaDsgcGF0aCA9IGxsaW50L0xMSW50T2ZmbGlu
ZUFzbUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNzE0QkJC
MTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmNwcDsgcGF0aCA9IGxsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmg7IHBhdGggPSBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnREYXRhLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50
RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENGMTRCQkIzRDEw
MEJGRTI3MiAvKiBMTEludERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TExJbnREYXRhLmg7IHBhdGggPSBsbGludC9MTEludERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFs
dWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSG9zdENhbGxSZXR1
cm5WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQxMTRCQkM1
RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RQQy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFj
dFBDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0UEMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERG
R0J5dGVDb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0
ZUNvZGVDYWNoZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVDb2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE1NzksNiArMTY1NywxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZl
cmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0
aW9uICovCisJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovID0gewor
CQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBG
cmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTYzNyw2ICsxNzIyLDcgQEAKIAkJCQkx
NDEyMTEyMDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4
RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQg
LyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJ
bnRPZmZzZXRzRXh0cmFjdG9yICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjY3LDYgKzE3NTMsNyBAQAogCQkJCUY1QzI5MEU2
MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEy
RDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYw
MUZGNjBGNyAvKiBjb25maWcuaCAqLywKKwkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyog
bGxpbnQgKi8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5
Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVE
MUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKQEAgLTE3MDUsNiArMTc5MiwyOCBAQAogCQkJ
dGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkwRjQ2ODA5QzE0QkE3RjRE
MDBCRkUyNzIgLyogbGxpbnQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNw
cCAqLywKKwkJCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5o
ICovLAorCQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8s
CisJCQkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8sCisJCQkJ
MEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8sCisJCQkJMEY0Njgw
Q0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovLAorCQkJCTBGNDY4MEM1MTRCQkIx
NjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovLAorCQkJCTBGNDY4MEM2MTRCQkIxNjkwMEJG
RTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLywKKwkJCQkwRjQ2ODBDNzE0QkJCMTY5
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8sCisJCQkJMEY0NjgwQzgxNEJC
QjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLywKKwkJCQkwRjQ2ODA5RDE0
QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLywKKwkJCQkwRjQ2ODA5RTE0
QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8sCisJCQkJMEY0NjgwOUYxNEJB
N0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8sCisJCQkJMEY0NjgwQTAxNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovLAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJG
RTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBs
bGludDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3
MjYwMDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCkBAIC0xNzM5LDYgKzE4NDgsOCBAQAogCQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkg
Lyogaml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkw
RjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJ
CQkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywK
IAkJCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJ
CQkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkw
RkQ4MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTIx
NjYsNiArMjI3Nyw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3OTE0
QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovLAorCQkJCTBGMjFD
MjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8sCiAJCQkJMEYxNUYx
NUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovLAogCQkJCUJDRjYwNTEx
MEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4
MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLApAQCAtMjUyNSw2ICsyNjM4LDggQEAKIAkJOTY5QTA3
OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7
CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNv
ZGVDb252ZW50aW9ucy5oICovLAorCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTElu
dENhbGxMaW5rSW5mby5oICovLAogCQkJCTBGOTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxs
TGlua1N0YXR1cy5jcHAgKi8sCiAJCQkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxM
aW5rU3RhdHVzLmggKi8sCiAJCQkJMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRT
dGF0dXMuY3BwICovLApAQCAtMzA3NSw3ICszMTkwLDE2IEBACiAJCQkJODY3MDRCOEExMkRCQTMz
NzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI0MzEy
REI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBl
cnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRF
eGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIg
LyogTExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENCMTRCQkIxNzIwMEJG
RTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4
MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50
RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0
RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTcxNEJDRjUwNzAw
ODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBOTE0QkNGNTYy
MDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRC
Q0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKQEAg
LTMwODQsNyArMzIwOCwxMSBAQAogCQkJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRo
b2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4
NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkx
NEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlu
a0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBK
SVREcml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAv
KiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3RDE0QkU3MjdB
MDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGN0IyOTRBMTRDM0NEMjkwMDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBh
YmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRDMTRDM0NENDMwMDdDM0RCMSAv
KiBERkdCeXRlQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMDMsNiArMzIzMSwyNCBA
QAogLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
TmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpT
Q0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsK
KwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zm
c2V0c0V4dHJhY3RvciIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODA4QjE0QkE3
RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLywKKwkJCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIg
LyogRnJhbWV3b3JrcyAqLywKKwkJCQkwRjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZp
bGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVz
ID0gKAorCQkJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5
ICovLAorCQkJKTsKKwkJCW5hbWUgPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9k
dWN0TmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2Ug
PSAwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICov
OworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsK
IAkJMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8gPSB7CiAJCQlpc2EgPSBQ
QlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQxMjExMzkwQTQ4
Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFy
Z2V0ICJtaW5pZG9tIiAqLzsKQEAgLTMyMjksMTEgKzMzNzUsMjkgQEAKIAkJCQkxNEJENTlCRTBB
M0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk5MzJGNUJEQTA4MjJBMUM3MDA3MzY5
NzUgLyoganNjICovLAogCQkJCTY1MTEyMkY3MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhw
ICovLAorCQkJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRy
YWN0b3IgKi8sCisJCQkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMg
Ki8sCiAJCQkpOwogCQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODBBQTE0QkE3RkQ5
MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJY
U2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsK
KwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoU1JDUk9PVCkv
bGxpbnQvTG93TGV2ZWxBc3NlbWJsZXIuYXNtIiwKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRl
IERlcml2ZWQgU291cmNlcyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9E
VUNUU19ESVIpL0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmgiLAorCQkJKTsKKwkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0g
L2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19E
SVJ9L0xMSW50T2Zmc2V0cy9cIlxuXG4vdXNyL2Jpbi9lbnYgcnVieSBcIiR7U1JDUk9PVH0vb2Zm
bGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiXCIgXCIke1NSQ1JPT1R9L2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtXCIgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRP
ZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaFwiXG4iOworCQl9OwogCQkzNzEzRjAxNDE0Mjkw
NTI0MDAzNjM4N0YgLyogQ2hlY2sgRm9yIEluYXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xhc3Mg
TmFtZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzMzOSw3ICszNTAzLDcgQEAKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9
IC9iaW4vc2g7Ci0JCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNf
RElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9kb2NzXCJcbmNkIFwiJHtCVUlMVF9Q
Uk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlXCJcblxuL2Jpbi9sbiAt
c2ZoIFwiJHtTUkNST09UfVwiIEphdmFTY3JpcHRDb3JlXG5leHBvcnQgSmF2YVNjcmlwdENvcmU9
XCJKYXZhU2NyaXB0Q29yZVwiXG5leHBvcnQgQlVJTFRfUFJPRFVDVFNfRElSPVwiLi4vLi5cIlxu
XG5tYWtlIC0tbm8tYnVpbHRpbi1ydWxlcyAtZiBcIkphdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2VcIiAtaiBgL3Vzci9zYmluL3N5c2N0bCAtbiBody5uY3B1YFxuIjsKKwkJCXNoZWxs
U2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL2RvY3NcIlxuY2QgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmVcIlxuXG4vYmluL2xuIC1zZmggXCIke1NSQ1JPT1R9XCIg
SmF2YVNjcmlwdENvcmVcbmV4cG9ydCBKYXZhU2NyaXB0Q29yZT1cIkphdmFTY3JpcHRDb3JlXCJc
bmV4cG9ydCBCVUlMVF9QUk9EVUNUU19ESVI9XCIuLi8uLlwiXG5cbm1ha2UgLS1uby1idWlsdGlu
LXJ1bGVzIC1mIFwiSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNy
L3NiaW4vc3lzY3RsIC1uIGh3Lm5jcHVgXG5cbi91c3IvYmluL2VudiBydWJ5IEphdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYXNtLnJiIEphdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtICR7QlVJTFRfUFJPRFVDVFNfRElSfS9KU0NMTEludE9mZnNldHNFeHRyYWN0b3Ig
TExJbnRBc3NlbWJseS5oXG4iOwogCQl9OwogCQk5MzE5NTg2QjA5RDlGOTFBMDBBNTZGRDQgLyog
Q2hlY2sgRm9yIEdsb2JhbCBJbml0aWFsaXplcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNj
cmlwdEJ1aWxkUGhhc2U7CkBAIC0zMzc0LDYgKzM1MzgsMTQgQEAKIC8qIEVuZCBQQlhTaGVsbFNj
cmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCisJCTBGNDY4MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovID0g
eworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8q
IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUQwQTQ4
NzkzQzAwNDgwMjU1IC8qIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQ
aGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zNjMxLDcgKzM4MDMs
MTQgQEAKIAkJCQk4NjcwNEI4NjEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4NjcwNEI4OTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCNDIxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50
YXhDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3
MiAvKiBMTEludEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTgxNEJBN0ZB
QjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2
ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRh
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0
Q2FsbFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlBMTRCQ0Y0NUQw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4
MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjBCODNCMDE0QkNGNzE2MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTBGMEI4M0I0MTRCQ0Y4NjAwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8u
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjY5RTg2QzMxNEM2RTU1MTAwMkMyQzYyIC8qIE51bWJl
ck9mQ29yZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNjU0LDYgKzM4MzMsMTYgQEAKIC8qIEVu
ZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERl
cGVuZGVuY3kgc2VjdGlvbiAqLworCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFy
Z2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0
YXJnZXQgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLzsKKwkJ
CXRhcmdldFByb3h5ID0gMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSAqLzsKKwkJfTsKKwkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdl
dERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFy
Z2V0ID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ciAqLzsKKwkJCXRhcmdldFByb3h5ID0gMEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENv
bnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKIAkJMTQxMjE0QkYwQTQ5MTkwRTAwNDgwMjU1IC8q
IFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5
OwogCQkJdGFyZ2V0ID0gMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi87CkBA
IC0zNjg3LDYgKzM4NzYsMTQ4IEBACiAvKiBFbmQgUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMEY0Njgw
OTYxNEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9Q
QVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJ
Q09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251
OTk7CisJCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VY
Q0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0ND
X1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJIkRFQlVHPTEiLAorCQkJCQkiJChp
bmhlcml0ZWQpIiwKKwkJCQkpOworCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gTk87
CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOwor
CQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5f
QUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVS
Tl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQki
SEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJ
CQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9T
RUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEw
Ljc7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChU
QVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VB
UkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChI
RUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkw
RjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNI
X1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCki
OworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9S
TUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBn
bnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVS
U0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5f
NjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5H
X1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7
CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNI
X1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsK
KwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9
ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURF
Ul9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0
cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJ
fTsKKwkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdB
WVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJE
XzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JN
QVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RB
TkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJ
CQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJ
R0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9V
VF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZ
UEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFE
RVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIk
KEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJD
SF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsK
KwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNv
c3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJ
bmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFBy
b2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJD
SFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0g
WUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOwor
CQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpD
X0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJz
Lmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0g
Tk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdD
Q19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJ
QUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJ
LiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIs
CisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBM
T1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUp
IjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9
ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJD
SF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBB
RDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2
ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4
MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJE
ZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJ
CTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9O
QU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5n
OworCQl9OworCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUg
PSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEzQTBBNDg3OTg0MDA0ODAyNTUgLyogRGVidWcg
Ki8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CkBAIC0zOTI4LDYgKzQyNTksMjggQEAKIC8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkw
RjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIgKi8gPSB7CisJCQlpc2Eg
PSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkw
RjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwOTcxNEJBN0U1
RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8q
IFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlv
biAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBBQzE0
QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdh
dGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9u
TGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwQUQxNEJBN0ZEOTAw
QkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxl
YXNlICovLAorCQkJCTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJ
CQkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAq
LyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRp
b25zID0gKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmgJKHJldmlzaW9uIDEwNjE1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTGlua0J1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjZGVmaW5l
IEdMT0JBTF9USFVOS19JRCByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRw
dHJfdD4oLTEpKQogI2RlZmluZSBSRUdFWFBfQ09ERV9JRCByZWludGVycHJldF9jYXN0PHZvaWQq
PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLTIpKQogCi0jaW5jbHVkZSA8TWFjcm9Bc3NlbWJsZXIu
aD4KKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJs
ZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBCeXRlY29kZUNvbnZlbnRpb25zX2gKKyNkZWZpbmUgQnl0
ZWNvZGVDb252ZW50aW9uc19oCisKKy8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29k
ZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJh
bmdlczoKKy8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZy
b20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBz
ZWUgUmVnaXN0ZXJGaWxlLmguCisvLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2Fy
ZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQg
dGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCisvLyAgICAgIDB4NDAw
MDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lm
eSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCitzdGF0aWMg
Y29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKKworI2Vu
ZGlmIC8vIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDEwNjE1MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDE3ICsyNyw0MCBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVz
LmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMTEludENhbGxMaW5rSW5m
by5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVT
RURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEluc3RydWN0
aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkg
KyBieXRlY29kZUluZGV4OworICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBp
bnN0cnVjdGlvbls0XS51LmNhbGxMaW5rSW5mbzsKKyAgICAKKyAgICByZXR1cm4gQ2FsbExpbmtT
dGF0dXMoY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5nZXQoKSwgZmFsc2UpOworI2Vsc2UK
KyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFsc2UpOworI2VuZGlmCit9CisKIENhbGxM
aW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRC
bG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmls
ZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lmIEVOQUJMRShK
SVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMo
Ci0gICAgICAgIHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KS5s
YXN0U2VlbkNhbGxlZS5nZXQoKSwKLSAgICAgICAgcHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xv
d0Nhc2UoYnl0ZWNvZGVJbmRleCkpOworICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZD
YWxsTGlua0luZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVk
QmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIGlmIChwcm9maWxlZEJsb2NrLT5jb3Vs
ZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKKyAgICAgICAgcmV0dXJuIENhbGxMaW5rU3Rh
dHVzKDAsIHRydWUpOworICAgIAorICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IHByb2ZpbGVkQmxv
Y2stPmdldENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KS5sYXN0U2VlbkNhbGxlZS5nZXQoKTsK
KyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmls
ZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVz
KHRhcmdldCwgZmFsc2UpOwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFs
c2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24gMTA2MTUzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE1ICs0
NywxNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVG
b3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAgICAgCi0gICAgYm9vbCBp
c1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0OyB9CisgICAgYm9vbCBpc1NldCgp
IGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0IHx8IG1fY291bGRUYWtlU2xvd1BhdGg7IH0K
ICAgICAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2NhbGxUYXJnZXQ7
IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAg
CiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bGRUYWtl
U2xvd1BhdGg7IH0KICAgICAKICAgICBKU0Z1bmN0aW9uKiBjYWxsVGFyZ2V0KCkgY29uc3QgeyBy
ZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgCiBwcml2YXRlOgorICAgIHN0YXRpYyBDYWxsTGlu
a1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgpOworICAgIAogICAgIEpTRnVuY3Rpb24qIG1fY2FsbFRhcmdldDsKICAgICBib29sIG1fY291
bGRUYWtlU2xvd1BhdGg7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEwNjE1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3
IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVPYmpl
Y3QuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJVU3RyaW5nQ29uY2F0
ZW5hdGUuaCIKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtNTksOCArNjAsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKE5ERUJV
RykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQogc3RhdGljIFVTdHJpbmcgZXNjYXBlUXVv
dGVzKGNvbnN0IFVTdHJpbmcmIHN0cikKIHsKICAgICBVU3RyaW5nIHJlc3VsdCA9IHN0cjsKQEAg
LTM1OCwxMCArMzU3LDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykg
Y28KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc3RydWN0aW9ucygpLnNpemUoKTsgaSAr
PSBvcGNvZGVMZW5ndGhzW2V4ZWMtPmludGVycHJldGVyKCktPmdldE9wY29kZUlEKGluc3RydWN0
aW9ucygpW2ldLnUub3Bjb2RlKV0pCiAgICAgICAgICsraW5zdHJ1Y3Rpb25Db3VudDsKIAotICAg
IHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRl
cihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpXG5cbiIsCisgICAgcHJpbnRmKCIlbHUgbV9pbnN0
cnVjdGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVn
aXN0ZXIocyk7ICVkIHZhcmlhYmxlKHMpXG5cbiIsCiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2ln
bmVkIGxvbmc+KGluc3RydWN0aW9uQ291bnQpLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKSwKLSAg
ICAgICAgdGhpcywgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycyk7CisgICAg
ICAgIHRoaXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMsIG1fbnVtVmFy
cyk7CiAKICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciBiZWdpbiA9IGlu
c3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRl
cmF0b3IgZW5kID0gaW5zdHJ1Y3Rpb25zKCkuZW5kKCk7CkBAIC04OTgsNiArODk3LDE0IEBAIHZv
aWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50
UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uIik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdDogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9j
YXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Iik7CisgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbDogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAi
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9nZW5lcmljOiB7CiAgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjkxLDggKzEyOTgsNiBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgfQogfQogCi0jZW5kaWYgLy8gIWRlZmluZWQo
TkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotCiAjaWYgRFVNUF9DT0RFX0JMT0NL
X1NUQVRJU1RJQ1MKIHN0YXRpYyBIYXNoU2V0PENvZGVCbG9jayo+IGxpdmVDb2RlQmxvY2tTZXQ7
CiAjZW5kaWYKQEAgLTE0NTksNiArMTQ2NCw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQ
YXJzZWRCbG9ja1RhZywKIHsKICAgICBzZXROdW1QYXJhbWV0ZXJzKG90aGVyLm51bVBhcmFtZXRl
cnMoKSk7CiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOworICAgIGppdEFmdGVyV2FybVVwKCk7
CiAgICAgCiAgICAgaWYgKG90aGVyLm1fcmFyZURhdGEpIHsKICAgICAgICAgY3JlYXRlUmFyZURh
dGFJZk5lY2Vzc2FyeSgpOwpAQCAtMTUwNyw2ICsxNTEzLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxv
Y2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgIEFTU0VSVChtX3NvdXJjZSk7CiAgICAgCiAgICAg
b3B0aW1pemVBZnRlcldhcm1VcCgpOworICAgIGppdEFmdGVyV2FybVVwKCk7CiAKICNpZiBEVU1Q
X0NPREVfQkxPQ0tfU1RBVElTVElDUwogICAgIGxpdmVDb2RlQmxvY2tTZXQuYWRkKHRoaXMpOwpA
QCAtMTUyNCw3ICsxNTMxLDExIEBAIENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiAjaWYgRU5BQkxF
KFZFUkJPU0VfVkFMVUVfUFJPRklMRSkKICAgICBkdW1wVmFsdWVQcm9maWxlcygpOwogI2VuZGlm
Ci0gICAgCisKKyNpZiBFTkFCTEUoTExJTlQpICAgIAorICAgIHdoaWxlIChtX2luY29taW5nTExJ
bnRDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQorICAgICAgICBt
X2luY29taW5nTExJbnRDYWxscy5iZWdpbigpLT5yZW1vdmUoKTsKKyNlbmRpZiAvLyBFTkFCTEUo
TExJTlQpCiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBXZSBtYXkgYmUgZGVzdHJveWVkIGJlZm9y
ZSBhbnkgQ29kZUJsb2NrcyB0aGF0IHJlZmVyIHRvIHVzIGFyZSBkZXN0cm95ZWQuCiAgICAgLy8g
Q29uc2lkZXIgdGhhdCB0d28gQ29kZUJsb2NrcyBiZWNvbWUgdW5yZWFjaGFibGUgYXQgdGhlIHNh
bWUgdGltZS4gVGhlcmUKQEAgLTE3MzYsOCArMTc0Nyw1OSBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
YWxpemVVbmNvbmRpdGlvbmFsbHkoCiAjZWxzZQogICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJv
c2VVbmxpbmtpbmcgPSBmYWxzZTsKICNlbmRpZgotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKICAgICAKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVy
ID0gbV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlcjsKKyAgICAvLyBpbnRlcnByZXRlci0+ZW5hYmxl
ZCgpIHJldHVybnMgdHJ1ZSBpZiB0aGUgb2xkIEMrKyBpbnRlcnByZXRlciBpcyBlbmFibGVkLiBJ
ZiB0aGF0J3MgZW5hYmxlZAorICAgIC8vIHRoZW4gd2UncmUgbm90IHVzaW5nIExMSW50LgorICAg
IGlmICghaW50ZXJwcmV0ZXItPmVuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBzaXpl
ID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsg
KytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1
Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV07CisgICAgICAgICAgICBz
d2l0Y2ggKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29k
ZSkpIHsKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWQ6CisgICAgICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51LnN0
cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5n
ZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGN1cklu
c3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5z
dHJ1Y3Rpb25bNV0udS5vcGVyYW5kID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgICAgICAgICAgICAgaWYg
KEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKQorICAg
ICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls2XS51LnN0
cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3Vy
SW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJl
LmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUu
Y2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNo
YWluLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUg
PSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90
IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNp
emU7ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmlu
c3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV07CisgICAgICAgICAg
ICBBU1NFUlQoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bj
b2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbAorICAgICAgICAgICAgICAgICAgIHx8IGludGVycHJl
dGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3BfcmVzb2x2
ZV9nbG9iYWxfZHluYW1pYyk7CisgICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzNdLnUu
c3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJl
LmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGN1ckluc3Ry
dWN0aW9uWzNdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlv
bls0XS51Lm9wZXJhbmQgPSAwOworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAg
aWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhlYXA6OmlzTWFya2Vk
KG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVh
cmluZyBMTEludCBjYWxsIGZyb20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2xs
aW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmICghIW1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlICYmICFIZWFwOjpp
c01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5nZXQoKSkpCisg
ICAgICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUuY2xl
YXIoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKICNpZiBF
TkFCTEUoREZHX0pJVCkKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2UgYXJl
LCB0aGVuIGpldHRpc29uLgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5l
c3NEdXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7CkBA
IC0xODU4LDEwICsxOTIwLDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25n
UmVmZXIKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7
ICsraSkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAjaWYg
RU5BQkxFKElOVEVSUFJFVEVSKQotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZp
c2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uc1tpXV0pOwotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRT
dHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbnNbaV1dKTsKKyAgICBpZiAobV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+ZW5hYmxlZCgp
KSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVj
dHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bnNbaV1dKTsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3Ry
dWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRT
dHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbnNbaV1dKTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMjA3
MCw2ICsyMTM0LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiB7CiAgICAgaWYg
KCEhbV9hbHRlcm5hdGl2ZSkKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+dW5saW5rQ2FsbHMoKTsK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xsaW50Q2Fs
bExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5m
b3NbaV0uaXNMaW5rZWQoKSkKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVu
bGluaygpOworICAgIH0KKyNlbmRpZgogICAgIGlmICghKG1fY2FsbExpbmtJbmZvcy5zaXplKCkg
fHwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBp
ZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0yMDg0LDEwICsyMTU0LDM5IEBAIHZv
aWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiAKIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtJbmNv
bWluZ0NhbGxzKCkKIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgd2hpbGUgKG1faW5jb21pbmdM
TEludENhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisgICAgICAg
IG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCktPnVubGluaygpOworI2VuZGlmCisgICAgaWYg
KG1faW5jb21pbmdDYWxscy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKICAgICBSZXBhdGNo
QnVmZmVyIHJlcGF0Y2hCdWZmZXIodGhpcyk7CiAgICAgd2hpbGUgKG1faW5jb21pbmdDYWxscy5i
ZWdpbigpICE9IG1faW5jb21pbmdDYWxscy5lbmQoKSkKICAgICAgICAgbV9pbmNvbWluZ0NhbGxz
LmJlZ2luKCktPnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKIH0KKwordW5z
aWduZWQgQ29kZUJsb2NrOjpieXRlY29kZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMsIFJldHVybkFk
ZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKHJl
dHVybkFkZHJlc3MudmFsdWUoKSA+PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9iZWdpbikK
KyAgICAgICAgJiYgcmV0dXJuQWRkcmVzcy52YWx1ZSgpIDw9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X2VuZCkpIHsKKyAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAgICAg
ICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpID09IHRoaXMpOworICAgICAgICBBU1NFUlQoSklU
Q29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CisgICAgICAgIEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiA9IGV4ZWMtPmN1cnJlbnRWUEMoKTsKKyAgICAgICAgQVNTRVJUKGluc3Ry
dWN0aW9uKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uKTsKKyAg
ICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyNlbmRpZgorICAgIGlmICghbV9y
YXJlRGF0YSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5J
bmRleFZlY3RvcjsKKyAgICBpZiAoIWNhbGxJbmRpY2VzLnNpemUoKSkKKyAgICAgICAgcmV0dXJu
IDE7CisgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9m
ZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCks
IGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3Mu
dmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKK30KICNlbmRpZgogCiB2b2lkIENvZGVCbG9jazo6
Y2xlYXJFdmFsQ2FjaGUoKQpAQCAtMjE4MywyNCArMjI4Miw0NSBAQCBib29sIEZ1bmN0aW9uQ29k
ZUJsb2NrOjpjYW5Db21waWxlV2l0aERGCiAKIHZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6amV0dGlz
b24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQp
OworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAg
ICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8UHJvZ3Jh
bUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgq
Z2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBFdmFsQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0g
ICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNT
RVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQo
dGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+
KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkp
OwogfQogCiB2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJU
KGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENv
ZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSBy
ZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25l
ckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZUZvcigqZ2xvYmFsRGF0YSgpLCBt
X2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOwogfQorCit2
b2lkIFByb2dyYW1Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVy
VGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29t
cGlsZShnbG9iYWxEYXRhKTsKK30KKwordm9pZCBFdmFsQ29kZUJsb2NrOjpqaXRDb21waWxlSW1w
bChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9
PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNl
bWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4
ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZ2xvYmFsRGF0YSk7Cit9CisKK3ZvaWQgRnVuY3Rpb25D
b2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAg
ICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAg
IEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGVGb3IoZ2xv
YmFsRGF0YSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxs
KTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtMjMwMyw2ICsy
NDIzLDE4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wVmFsdWVQcm9maWxlcygpCiB9CiAjZW5kaWYK
IAordm9pZCBDb2RlQmxvY2s6OmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCkK
K3sKKyNpZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykgJiYgIUVOQUJMRShMTElOVCkKKyAgICBp
ZiAoQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQorICAgICAgICByZXR1
cm47CisgICAgaWYgKCEhYWx0ZXJuYXRpdmUoKSkKKyAgICAgICAgZGlzY2FyZEJ5dGVjb2RlKCk7
CisgICAgZWxzZQorICAgICAgICBkaXNjYXJkQnl0ZWNvZGVMYXRlcigpOworI2VuZGlmCit9CisK
ICNpZm5kZWYgTkRFQlVHCiBib29sIENvZGVCbG9jazo6dXNlc09wY29kZShPcGNvZGVJRCBvcGNv
ZGVJRCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmgJKHJldmlzaW9uIDEwNjE1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBDb2Rl
QmxvY2tfaAogI2RlZmluZSBDb2RlQmxvY2tfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50
aW9ucy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5P
ZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgpAQCAtNTAs
NiArNTEsNyBAQAogI2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRDYWxs
TGlua0luZm8uaCIKICNpbmNsdWRlICJMaW5lSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAj
aW5jbHVkZSAiUHJlZGljdGlvblRyYWNrZXIuaCIKQEAgLTY1LDE2ICs2NywxMSBAQAogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCi0vLyBS
ZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVu
dCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6Ci0vLyAgICAgIDB4ODAwMDAwMDAt
MHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBh
cmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgotLy8gICAg
ICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZy
YW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0
aW9uJ3MgY2FsbGZyYW1lLgotLy8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZl
IGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQg
cG9vbCBvbiB0aGUgQ29kZUJsb2NrLgotc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7Ci0KIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3Mg
RXhlY1N0YXRlOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgRXhlY1N0YXRl
OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGlubGluZSBpbnQgdW5t
b2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGludCBhcmd1bWVudHNSZWdpc3RlcikgeyByZXR1cm4g
YXJndW1lbnRzUmVnaXN0ZXIgLSAxOyB9CiAKQEAgLTgzLDYgKzgwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIs
IHB1YmxpYyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENvcHlQ
YXJzZWRCbG9ja1RhZyB7IENvcHlQYXJzZWRCbG9jayB9OwogICAgIHByb3RlY3RlZDoKQEAgLTEy
Myw3ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHdoaWxlIChyZXN1bHQt
PmFsdGVybmF0aXZlKCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5hbHRlcm5h
dGl2ZSgpOwogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgICAgICBBU1NFUlQo
cmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAg
ICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7
CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAjZW5kaWYKQEAgLTEzNCwx
MSArMTMyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0
YXRpc3RpY3MoKTsKIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFX09QQ09ERV9TQU1Q
TElORwogICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQg
cHJpbnRTdHJ1Y3R1cmVzKGNvbnN0IEluc3RydWN0aW9uKikgY29uc3Q7CiAgICAgICAgIHZvaWQg
cHJpbnRTdHJ1Y3R1cmUoY29uc3QgY2hhciogbmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBpbnQg
b3BlcmFuZCkgY29uc3Q7Ci0jZW5kaWYKIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAKQEAgLTE5NCwxNSArMTkwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9kQ2Fs
bExpbmtJbmZvLCB1bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4o
bV9tZXRob2RDYWxsTGlua0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXpl
KCksIGJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0KFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAg
ICAgICAgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbElu
ZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKLSAgICAgICAgICAg
IGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAg
ICAgICAgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9m
ZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCks
IGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3Mu
dmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKLSAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldChFeGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAgICAgICB1
bnNpZ25lZCBieXRlY29kZU9mZnNldEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAg
ICAgICB7CkBAIC0yMjMsMTEgKzIxMSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewog
ICAgICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwogICAgICAgICB9Cisj
aWYgRU5BQkxFKExMSU5UKQorICAgICAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoTExJbnRDYWxs
TGlua0luZm8qIGluY29taW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2luY29taW5nTExJ
bnRDYWxscy5wdXNoKGluY29taW5nKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKICAgICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5rSW5jb21pbmdDYWxscygpOwotI2VuZGlm
CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJM
RShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIHZvaWQgc2V0SklUQ29kZU1hcChQ
YXNzT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBqaXRDb2RlTWFwKQogICAgICAgICB7CiAgICAg
ICAgICAgICBtX2ppdENvZGVNYXAgPSBqaXRDb2RlTWFwOwpAQCAtMjM2LDcgKzIzMCw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9qaXRDb2RlTWFw
LmdldCgpOwogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgCisjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgICAgIHZvaWQgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKCEhbV9kZmdEYXRhKQpAQCAtMzM1LDEyICszMzEsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAg
ICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykK
ICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJldHVybkFkZHJlc3MgPj0gaW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKSAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zKCkuZW5kKCkpOwog
ICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVz
cykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAg
ICB2b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVG
dW5jdGlvbikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVG
dW5jdGlvbjsgfQogICAgICAgICBib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbigpIHsgcmV0
dXJuIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CkBAIC0zNTQsMTcgKzM0OSw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBtX3Nob3VsZERpc2NhcmRCeXRl
Y29kZSA9IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgdm9pZCBoYW5kbGVCeXRlY29kZURpc2Nh
cmRpbmdPcHBvcnR1bml0eSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghIWFsdGVybmF0
aXZlKCkpCi0gICAgICAgICAgICAgICAgZGlzY2FyZEJ5dGVjb2RlKCk7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgZGlzY2FyZEJ5dGVjb2RlTGF0ZXIoKTsKLSAgICAgICAgfQor
ICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7CiAgICAg
ICAgIAotI2lmbmRlZiBOREVCVUcKICAgICAgICAgYm9vbCB1c2VzT3Bjb2RlKE9wY29kZUlEKTsK
LSNlbmRpZgogCiAgICAgICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQoKSB7IHJldHVybiBt
X2luc3RydWN0aW9uQ291bnQ7IH0KICAgICAgICAgdm9pZCBzZXRJbnN0cnVjdGlvbkNvdW50KHVu
c2lnbmVkIGluc3RydWN0aW9uQ291bnQpIHsgbV9pbnN0cnVjdGlvbkNvdW50ID0gaW5zdHJ1Y3Rp
b25Db3VudDsgfQpAQCAtMzg3LDE3ICszNzQsMjYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGV4ZWN1dGFibGVNZW1vcnkoKSB7IHJldHVybiBnZXRK
SVRDb2RlKCkuZ2V0RXhlY3V0YWJsZU1lbW9yeSgpOyB9CiAgICAgICAgIHZpcnR1YWwgSlNPYmpl
Y3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpID0gMDsKKyAgICAgICAgYm9vbCBqaXRDb21w
aWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaml0
Q29tcGlsZUltcGwoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgfQogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpID0gMDsKICAgICAgICAgYm9vbCBo
YXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChn
ZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJU
KEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgYm9v
bCByZXN1bHQgPSByZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPiBnZXRKSVRUeXBlKCk7CiAj
aWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAg
ICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkRGR0pJ
VCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1l
bnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAg
ICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVwbGFjZW1lbnQoKS0+Z2V0SklU
VHlwZSgpKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCkgPT0gdGhpcyk7
CiAgICAgICAgICAgICB9CiAjZW5kaWYKQEAgLTQ1NiwxOCArNDUyLDIxIEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHZvaWQgY2xlYXJFdmFsQ2FjaGUoKTsKIAotI2lmIEVOQUJMRShJTlRF
UlBSRVRFUikKICAgICAgICAgdm9pZCBhZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKHVuc2ln
bmVkIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlm
ICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX3Byb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKTsKKyAg
ICAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBwZW5kKHByb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAgICAgIHZvaWQgYWRkR2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9uKHVuc2lnbmVkIGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAg
ewotICAgICAgICAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAg
ICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5hcHBlbmQoZ2xvYmFsUmVzb2x2ZUlu
c3RydWN0aW9uKTsKKyAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5hcHBl
bmQoZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICBib29sIGhh
c0dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbkF0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgTExJbnRDYWxsTGlua0luZm8q
IGFkZExMSW50Q2FsbExpbmtJbmZvKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludENh
bGxMaW5rSW5mb3MuYXBwZW5kKExMSW50Q2FsbExpbmtJbmZvKCkpOworICAgICAgICAgICAgcmV0
dXJuICZtX2xsaW50Q2FsbExpbmtJbmZvcy5sYXN0KCk7CisgICAgICAgIH0KICNlbmRpZgogI2lm
IEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgc2V0TnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3Mo
c2l6ZV90IHNpemUpIHsgbV9zdHJ1Y3R1cmVTdHViSW5mb3MuZ3JvdyhzaXplKTsgfQpAQCAtNDc2
LDggKzQ3NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkR2xvYmFsUmVz
b2x2ZUluZm8odW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAobV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAg
ICBtX2dsb2JhbFJlc29sdmVJbmZvcy5hcHBlbmQoR2xvYmFsUmVzb2x2ZUluZm8oZ2xvYmFsUmVz
b2x2ZUluc3RydWN0aW9uKSk7CisgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbmZvcy5hcHBl
bmQoR2xvYmFsUmVzb2x2ZUluZm8oZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKSk7CiAgICAgICAg
IH0KICAgICAgICAgR2xvYmFsUmVzb2x2ZUluZm8mIGdsb2JhbFJlc29sdmVJbmZvKGludCBpbmRl
eCkgeyByZXR1cm4gbV9nbG9iYWxSZXNvbHZlSW5mb3NbaW5kZXhdOyB9CiAgICAgICAgIGJvb2wg
aGFzR2xvYmFsUmVzb2x2ZUluZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KTsKQEAgLTQ4OCw2ICs0ODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lk
IGFkZE1ldGhvZENhbGxMaW5rSW5mb3ModW5zaWduZWQgbikgeyBBU1NFUlQobV9nbG9iYWxEYXRh
LT5jYW5Vc2VKSVQoKSk7IG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5ncm93KG4pOyB9CiAgICAgICAg
IE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9kQ2FsbExpbmtJbmZvKGludCBpbmRleCkgeyByZXR1
cm4gbV9tZXRob2RDYWxsTGlua0luZm9zW2luZGV4XTsgfQorICAgICAgICBzaXplX3QgbnVtYmVy
T2ZNZXRob2RDYWxsTGlua0luZm9zKCkgeyByZXR1cm4gbV9tZXRob2RDYWxsTGlua0luZm9zLnNp
emUoKTsgfQogI2VuZGlmCiAgICAgICAgIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKQEAg
LTUyOCw2ICs1MjcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSkpIC0gMV0udS5wcm9maWxlID09
IHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CisgICAgICAg
IFByZWRpY3RlZFR5cGUgdmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGlu
dCBieXRlY29kZU9mZnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHZhbHVlUHJv
ZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+Y29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKCk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIHRvdGFsTnVt
YmVyT2ZWYWx1ZVByb2ZpbGVzKCkKICAgICAgICAgewpAQCAtNTU0LDEyICs1NTcsMTYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZVNsb3dDYXNl
KGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJP
ZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49
IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0
PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2Vs
eVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBi
b29sIGNvdWxkVGFrZVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAg
ICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHJhcmVDYXNlUHJv
ZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlID49IE9wdGlvbnM6OmNvdWxkVGFrZVNsb3dDYXNlTWluaW11bUNv
dW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50
ID49IE9wdGlvbnM6OmNvdWxkVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CkBAIC01
NzgsMTIgKzU4NSwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wg
bGlrZWx5VG9UYWtlU3BlY2lhbEZhc3RDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAg
eworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENh
c2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29k
ZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiBzcGVjaWFsRmFzdENhc2VD
b3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0
aWNfY2FzdDxkb3VibGU+KHNwZWNpYWxGYXN0Q2FzZUNvdW50KSAvIG1fZXhlY3V0aW9uRW50cnlD
b3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAg
fQogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UoaW50
IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFy
ZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIHVuc2lnbmVkIHNsb3dDYXNlQ291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNw
ZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgdmFs
dWUgPSBzbG93Q2FzZUNvdW50IC0gc3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBAIC01OTIsNiArNjAz
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFr
ZUFueVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAg
aWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAg
ICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2Zp
bGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAg
ICAgIHVuc2lnbmVkIHZhbHVlID0gc2xvd0Nhc2VDb3VudCArIHNwZWNpYWxGYXN0Q2FzZUNvdW50
OwpAQCAtNjg5LDcgKzcwMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAg
Ym9vbCBhZGRGcmVxdWVudEV4aXRTaXRlKGNvbnN0IERGRzo6RnJlcXVlbnRFeGl0U2l0ZSYgc2l0
ZSkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2Rl
OjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNv
ZGUoZ2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gbV9leGl0UHJvZmlsZS5hZGQo
c2l0ZSk7CiAgICAgICAgIH0KIApAQCAtNzk0LDYgKzgwNywyOSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZyb20oQ29kZUJsb2NrKiBhbHRlcm5hdGl2
ZSk7CiAgICAgICAgIHZvaWQgY29weVBvc3RQYXJzZURhdGFGcm9tQWx0ZXJuYXRpdmUoKTsKICAg
ICAgICAgCisgICAgICAgIC8vIEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiBKSVR0aW5n
IGtpY2tzIGluLCBpbiBhIG1peGVkIG1vZGUKKyAgICAgICAgLy8gZXhlY3V0aW9uIHdvcmxkLgor
ICAgICAgICAKKyAgICAgICAgdm9pZCBkb250SklUQW55dGltZVNvb24oKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHZvaWQgaml0QWZ0ZXJXYXJtVXAoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50
RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRl
cldhcm1VcDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRTb29uKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAg
ICAgaW50MzJfdCBsbGludEV4ZWN1dGVDb3VudGVyKCkgY29uc3QKKyAgICAgICAgeworICAgICAg
ICAgICAgcmV0dXJuIG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgfQorICAgICAgICAK
ICAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIHRpZXJlZCBjb21waWxh
dGlvbiBraWNrcyBpbi4gVGhpcwogICAgICAgICAvLyBjb250cm9scyBib3RoIHdoZW4gdGhlIG9w
dGltaXppbmcgY29tcGlsZXIgaXMgaW52b2tlZCBhbmQgd2hlbiBPU1IKICAgICAgICAgLy8gZW50
cnkgaGFwcGVucy4gVHdvIHRyaWdnZXJzIGV4aXN0OiB0aGUgbG9vcCB0cmlnZ2VyIGFuZCB0aGUg
cmV0dXJuCkBAIC05ODYsNiArMTAyMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29s
IG1fc2hvdWxkRGlzY2FyZEJ5dGVjb2RlOwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0
dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJikgPSAwOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgdmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKICAgICAgICAgCkBAIC05OTgsNyAr
MTAzNSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHRhbGx5RnJlcXVlbnRFeGl0
U2l0ZXMoKSB7IH0KICNlbmRpZgogICAgICAgICAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVO
QUJMRShPUENPREVfU0FNUExJTkcpCiAgICAgICAgIHZvaWQgZHVtcChFeGVjU3RhdGUqLCBjb25z
dCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYgYmVnaW4sIFZlY3RvcjxJbnN0
cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJikgY29uc3Q7CiAKICAgICAgICAgQ1N0cmluZyByZWdp
c3Rlck5hbWUoRXhlY1N0YXRlKiwgaW50IHIpIGNvbnN0OwpAQCAtMTAwOCw3ICsxMDQ0LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHJpbnRHZXRCeUlkT3AoRXhlY1N0YXRlKiwg
aW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0
IGNoYXIqIG9wKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludENhbGxPcChFeGVjU3RhdGUqLCBp
bnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3Qg
Y2hhciogb3ApIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50UHV0QnlJZE9wKEV4ZWNTdGF0ZSos
IGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25z
dCBjaGFyKiBvcCkgY29uc3Q7Ci0jZW5kaWYKICAgICAgICAgdm9pZCB2aXNpdFN0cnVjdHVyZXMo
U2xvdFZpc2l0b3ImLCBJbnN0cnVjdGlvbiogdlBDKSBjb25zdDsKICAgICAgICAgCiAjaWYgRU5B
QkxFKERGR19KSVQpCkBAIC0xMDY5LDkgKzExMDQsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9zb3VyY2U7CiAgICAgICAgIHVuc2lnbmVkIG1f
c291cmNlT2Zmc2V0OwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBWZWN0b3I8
dW5zaWduZWQ+IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnM7CiAgICAgICAgIFZlY3Rvcjx1
bnNpZ25lZD4gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zOworI2lmIEVOQUJMRShMTElOVCkK
KyAgICAgICAgU2VnbWVudGVkVmVjdG9yPExMSW50Q2FsbExpbmtJbmZvLCA4PiBtX2xsaW50Q2Fs
bExpbmtJbmZvczsKKyAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PExMSW50Q2FsbExpbmtJbmZv
LCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5nTExJ
bnRDYWxsczsKICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFZlY3RvcjxTdHJ1Y3R1
cmVTdHViSW5mbz4gbV9zdHJ1Y3R1cmVTdHViSW5mb3M7CkBAIC0xMDgyLDkgKzExMTksMTAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2ppdENvZGVX
aXRoQXJpdHlDaGVjazsKICAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxMaW5rSW5mbywg
QmFzaWNSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdDYWxsczsKICNl
bmRpZgotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUo
TExJTlQpCiAgICAgICAgIE93blB0cjxDb21wYWN0SklUQ29kZU1hcD4gbV9qaXRDb2RlTWFwOwot
ICAgICAgICAKKyNlbmRpZgorI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBzdHJ1Y3QgV2Vh
a1JlZmVyZW5jZVRyYW5zaXRpb24gewogICAgICAgICAgICAgV2Vha1JlZmVyZW5jZVRyYW5zaXRp
b24oKSB7IH0KICAgICAgICAgICAgIApAQCAtMTE0NywxMiArMTE4NSwxNCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBPd25QdHI8Q29kZUJsb2NrPiBtX2FsdGVybmF0aXZlOwogICAgICAg
ICAKKyAgICAgICAgaW50MzJfdCBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIAogICAg
ICAgICBpbnQzMl90IG1faml0RXhlY3V0ZUNvdW50ZXI7CiAgICAgICAgIHVpbnQzMl90IG1fc3Bl
Y3VsYXRpdmVTdWNjZXNzQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZUZh
aWxDb3VudGVyOwogICAgICAgICB1aW50OF90IG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyOwog
ICAgICAgICB1aW50OF90IG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXI7Ci0KKyAgICAgICAg
CiAgICAgICAgIHN0cnVjdCBSYXJlRGF0YSB7CiAgICAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgICAgICBwdWJsaWM6CkBAIC0xMjI1LDYgKzEyNjUsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVP
cHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0ds
b2JhbERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC0xMjU5
LDYgKzEzMDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZp
cnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5v
ZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDb2Rl
QmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0
aERGRygpOwogI2VuZGlmCkBAIC0xMjk2LDYgKzEzMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQo
RXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRp
c29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEm
KTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAx
MDYxNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDIwICsyNyw0OSBAQAogI2luY2x1ZGUgIkdldEJ5SWRT
dGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50
ZXJwcmV0ZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0dldEJ5SWRTdGF0dXMgR2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQoreworICAgIFVOVVNFRF9QQVJBTShw
cm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisgICAgVU5V
U0VEX1BBUkFNKGlkZW50KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rpb24qIGlu
c3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVj
b2RlSW5kZXg7CisgICAgCisgICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50
X29wX21ldGhvZF9jaGVjaykKKyAgICAgICAgaW5zdHJ1Y3Rpb24rKzsKKworICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaWYg
KCFzdHJ1Y3R1cmUpCisgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24s
IFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOworICAgIAorICAgIHNpemVfdCBvZmZz
ZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7
CisgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0
dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisgICAg
CisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoU2ltcGxlRGlyZWN0LCBTdHJ1Y3R1cmVTZXQoc3Ry
dWN0dXJlKSwgb2Zmc2V0LCBmYWxzZSk7CisjZWxzZQorICAgIHJldHVybiBHZXRCeUlkU3RhdHVz
KE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOworI2VuZGlm
Cit9CisKIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sq
IHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50
KQogewogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0o
Ynl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKICNpZiBFTkFCTEUoSklU
KSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1i
ZXJPZlN0cnVjdHVyZVN0dWJJbmZvcygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTElu
dChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CisgICAgCiAgICAgLy8gRmly
c3QgY2hlY2sgaWYgaXQgbWFrZXMgZWl0aGVyIGNhbGxzLCBpbiB3aGljaCBjYXNlIHdlIHdhbnQg
dG8gYmUgc3VwZXIgY2FyZWZ1bCwgb3IKICAgICAvLyBpZiBpdCdzIG5vdCBzZXQgYXQgYWxsLCBp
biB3aGljaCBjYXNlIHdlIHB1bnQuCiAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0g
cHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm8oYnl0ZWNvZGVJbmRleCk7CiAgICAgaWYgKCFzdHVi
SW5mby5zZWVuKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBT
dHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTElu
dChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgCiAgICAgUG9seW1v
cnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBsaXN0OwogICAgIGludCBsaXN0U2l6ZTsKQEAgLTYw
LDE4ICs4OSwxOSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAg
ICAgfQogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewogICAgICAgICBp
ZiAoIWxpc3QtPmxpc3RbaV0uaXNEaXJlY3QpCi0gICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhNYWtlc0NhbGxzLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICAgICAg
cmV0dXJuIEdldEJ5SWRTdGF0dXMoTWFrZXNDYWxscywgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5k
LCB0cnVlKTsKICAgICB9CiAgICAgCiAgICAgLy8gTmV4dCBjaGVjayBpZiBpdCB0YWtlcyBzbG93
IGNhc2UsIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBiZSBraW5kIG9mIGNhcmVmdWwuCiAgICAg
aWYgKHByb2ZpbGVkQmxvY2stPmxpa2VseVRvVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQot
ICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCBTdHJ1Y3R1cmVTZXQo
KSwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRo
LCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIHRydWUpOwogICAgIAogICAgIC8vIEZpbmFsbHkg
ZmlndXJlIG91dCBpZiB3ZSBjYW4gZGVyaXZlIGFuIGFjY2VzcyBzdHJhdGVneS4KICAgICBHZXRC
eUlkU3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQubV93YXNTZWVuSW5KSVQgPSB0cnVlOwogICAg
IHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewogICAgIGNhc2UgYWNjZXNzX3Vuc2V0Ogot
ICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQo
KSwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJs
b2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX2dl
dF9ieV9pZF9zZWxmOiB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3R1YkluZm8u
dS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpOwpAQCAtMTMwLDcgKzE2MCw3
IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAKICAgICBy
ZXR1cm4gcmVzdWx0OwogI2Vsc2UgLy8gRU5BQkxFKEpJVCkKLSAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgIHJldHVy
biBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwg
ZmFsc2UpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMTA2MTUzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAot
ICAgIEdldEJ5SWRTdGF0dXMoU3RhdGUgc3RhdGUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0
dXJlU2V0LCBzaXplX3Qgb2Zmc2V0KQorICAgIEdldEJ5SWRTdGF0dXMoU3RhdGUgc3RhdGUsIGNv
bnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0LCBzaXplX3Qgb2Zmc2V0LCBib29sIHdhc1Nl
ZW5JbkpJVCkKICAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQogICAgICAgICAsIG1fc3RydWN0dXJl
U2V0KHN0cnVjdHVyZVNldCkKICAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgICAgICwg
bV93YXNTZWVuSW5KSVQod2FzU2VlbkluSklUKQogICAgIHsKICAgICAgICAgQVNTRVJUKChzdGF0
ZSA9PSBTaW1wbGVEaXJlY3QpID09IChvZmZzZXQgIT0gbm90Rm91bmQpKTsKICAgICB9CkBAIC03
MCwxMCArNzEsMTUgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJl
U2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVTZXQ7IH0KICAgICBzaXplX3Qgb2Zmc2V0
KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKKyAgICBib29sIHdhc1NlZW5JbkpJ
VCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzU2VlbkluSklUOyB9CisgICAgCiBwcml2YXRlOgorICAg
IHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYpOworICAgIAogICAgIFN0YXRlIG1fc3RhdGU7
CiAgICAgU3RydWN0dXJlU2V0IG1fc3RydWN0dXJlU2V0OwogICAgIHNpemVfdCBtX29mZnNldDsK
KyAgICBib29sIG1fd2FzU2VlbkluSklUOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNp
b24gMTA2MTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9u
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
Y2xhc3MgSlNDZWxsOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVD
aGFpbjsKKyAgICBzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm87CiAgICAgc3RydWN0IFZhbHVlUHJv
ZmlsZTsKIAogI2lmIEVOQUJMRShKSVQpCkBAIC0xNDYsNiArMTQ3LDExIEBAIG5hbWVzcGFjZSBK
U0MgewogI2VuZGlmCiAKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb24geworICAgICAgICBJbnN0cnVj
dGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuanNDZWxsLmNsZWFyKCk7CisgICAgICAg
IH0KKyAgICAgICAgCiAgICAgICAgIEluc3RydWN0aW9uKE9wY29kZSBvcGNvZGUpCiAgICAgICAg
IHsKICNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCkBAIC0xODIsNiArMTg4
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSW5zdHJ1Y3Rpb24oUHJvcGVydHlTbG90
OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYykgeyB1LmdldHRlckZ1bmMgPSBnZXR0ZXJGdW5jOyB9
CiAgICAgICAgIAorICAgICAgICBJbnN0cnVjdGlvbihMTEludENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvKSB7IHUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZvOyB9CisgICAgICAgIAogICAg
ICAgICBJbnN0cnVjdGlvbihWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsgdS5wcm9maWxlID0gcHJv
ZmlsZTsgfQogCiAgICAgICAgIHVuaW9uIHsKQEAgLTE5MSw3ICsxOTksOSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IHN0cnVj
dHVyZUNoYWluOwogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxKU0NlbGw+IGpzQ2VsbDsK
ICAgICAgICAgICAgIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1bmM7CisgICAg
ICAgICAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvOwogICAgICAgICAgICAgVmFs
dWVQcm9maWxlKiBwcm9maWxlOworICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsKICAgICAgICAg
fSB1OwogICAgICAgICAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50Q2FsbExpbmtJbmZvX2gKKyNkZWZpbmUgTExJbnRD
YWxsTGlua0luZm9faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworc3RydWN0IExMSW50
Q2FsbExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJ
bmZvPiB7CisgICAgTExJbnRDYWxsTGlua0luZm8oKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
fkxMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAg
ICAgICAgICAgcmVtb3ZlKCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJl
dHVybiBjYWxsZWU7IH0KKyAgICAKKyAgICB2b2lkIHVubGluaygpCisgICAgeworICAgICAgICBj
YWxsZWUuY2xlYXIoKTsKKyAgICAgICAgbWFjaGluZUNvZGVUYXJnZXQgPSBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoKTsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUo
KTsKKyAgICB9CisgICAgCisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGNhbGxlZTsKKyAg
ICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbGFzdFNlZW5DYWxsZWU7CisgICAgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyIG1hY2hpbmVDb2RlVGFyZ2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBMTEludENhbGxMaW5rSW5mb19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAko
cmV2aXNpb24gMTA2MTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhv
ZENhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsMTEgQEAgTWV0
aG9kQ2FsbExpbmtTdGF0dXMgTWV0aG9kQ2FsbExpbmtTdGF0dQogICAgIFVOVVNFRF9QQVJBTShw
cm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAjaWYgRU5B
QkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIC8vIE5PVEU6IFRoaXMgZG9l
cyBub3QgaGF2ZSBhbiBMTEludCBmYWxsLWJhY2sgYmVjYXVzZSBMTEludCBkb2VzIG5vdCBkbyBh
bnkgbWV0aG9kCisgICAgLy8gY2FsbCBsaW5rIGNhY2hpbmcuCisgICAgaWYgKCFwcm9maWxlZEJs
b2NrLT5udW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIE1ldGhv
ZENhbGxMaW5rU3RhdHVzKCk7CisgICAgCiAgICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RD
YWxsID0gcHJvZmlsZWRCbG9jay0+Z2V0TWV0aG9kQ2FsbExpbmtJbmZvKGJ5dGVjb2RlSW5kZXgp
OwogICAgIAogICAgIGlmICghbWV0aG9kQ2FsbC5zZWVuIHx8ICFtZXRob2RDYWxsLmNhY2hlZFN0
cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJl
dmlzaW9uIDEwNjE1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBtYWNybyhvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCwgNCkgXAogICAgICAgICBtYWNybyhv
cF9wdXRfYnlfaWQsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24s
IDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0LCA5KSBc
CisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCwgOSkgXAogICAg
ICAgICBtYWNybyhvcF9wdXRfYnlfaWRfcmVwbGFjZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9w
dXRfYnlfaWRfZ2VuZXJpYywgOSkgXAogICAgICAgICBtYWNybyhvcF9kZWxfYnlfaWQsIDQpIFwK
QEAgLTIwMiw2ICsyMDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBlbnVt
IHsgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9JRF9FTlVNKSB9IE9wY29kZUlEOwogICAgICN1
bmRlZiBPUENPREVfSURfRU5VTQogCisgICAgY29uc3QgaW50IG1heE9wY29kZUxlbmd0aCA9IDk7
CiAgICAgY29uc3QgaW50IG51bU9wY29kZUlEcyA9IG9wX2VuZCArIDE7CiAKICAgICAjZGVmaW5l
IE9QQ09ERV9JRF9MRU5HVEhTKGlkLCBsZW5ndGgpIGNvbnN0IGludCBpZCMjX2xlbmd0aCA9IGxl
bmd0aDsKQEAgLTIxOCw3ICsyMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRk9SX0VB
Q0hfT1BDT0RFX0lEKFZFUklGWV9PUENPREVfSUQpOwogICAgICN1bmRlZiBWRVJJRllfT1BDT0RF
X0lECiAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUo
Q09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQogI2lmIENPTVBJTEVS
KFJWQ1QpIHx8IENPTVBJTEVSKElOVEVMKQogICAgIHR5cGVkZWYgdm9pZCogT3Bjb2RlOwogI2Vs
c2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5jcHAJKHJldmlzaW9uIDEwNjE1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjcgKzI3LDY5IEBA
CiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2Rl
SW5kZXgpOworICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygp
LmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBp
bnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAg
ICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91
bmQpOworICAgIAorICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9w
dXRfYnlfaWQpIHsKKyAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9m
aWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBu
b3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24s
IDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBQdXRCeUlkU3Rh
dHVzKFNpbXBsZVJlcGxhY2UsIHN0cnVjdHVyZSwgMCwgMCwgb2Zmc2V0KTsKKyAgICB9CisgICAg
CisgICAgQVNTRVJUKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX2RpcmVjdAorICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29k
ZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgIAorICAgIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCk7
CisgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gaW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVD
aGFpbi5nZXQoKTsKKyAgICBBU1NFUlQobmV3U3RydWN0dXJlKTsKKyAgICBBU1NFUlQoY2hhaW4p
OworICAgIAorICAgIHNpemVfdCBvZmZzZXQgPSBuZXdTdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRC
bG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkK
KyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90
Rm91bmQpOworICAgIAorICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVRyYW5zaXRpb24s
IHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjaGFpbiwgb2Zmc2V0KTsKKyNlbHNlCisgICAgcmV0
dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworI2Vu
ZGlmCit9CisKIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxv
Y2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlk
ZW50KQogewogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFS
QU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKICNpZiBFTkFCTEUo
SklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5u
dW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21M
TEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CisgICAgCiAgICAgaWYg
KHByb2ZpbGVkQmxvY2stPmxpa2VseVRvVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQogICAg
ICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBub3RGb3Vu
ZCk7CiAgICAgCiAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gcHJvZmlsZWRCbG9j
ay0+Z2V0U3R1YkluZm8oYnl0ZWNvZGVJbmRleCk7CiAgICAgaWYgKCFzdHViSW5mby5zZWVuKQot
ICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RG
b3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5
dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5
cGUpIHsKICAgICBjYXNlIGFjY2Vzc191bnNldDoKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0
dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29t
cHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAg
ICAgIAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNlOiB7CiAgICAgICAgIHNpemVf
dCBvZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUt
PmdldCgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuaAkocmV2aXNpb24gMTA2MTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsOCBAQCBwdWJs
aWM6CiAgICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAg
CiBwcml2YXRlOgorICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoQ29k
ZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYpOworICAgIAogICAg
IFN0YXRlIG1fc3RhdGU7CiAgICAgU3RydWN0dXJlKiBtX29sZFN0cnVjdHVyZTsKICAgICBTdHJ1
Y3R1cmUqIG1fbmV3U3RydWN0dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDEw
NjE1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQmF0
Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5j
bHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiU2NvcGVDaGFpbi5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNs
dWRlICJVU3RyaW5nLmgiCkBAIC0xMTYsMjYgKzExNywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBleHBlY3RlZCBieSB0aGUgY2FsbGVlLgogKi8KIAotI2lmbmRlZiBOREVCVUcKIHN0YXRpYyBi
b29sIHNfZHVtcHNHZW5lcmF0ZWRDb2RlID0gZmFsc2U7Ci0jZW5kaWYKIAogdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6c2V0RHVtcHNHZW5lcmF0ZWRDb2RlKGJvb2wgZHVtcHNHZW5lcmF0ZWRDb2Rl
KQogewotI2lmbmRlZiBOREVCVUcKICAgICBzX2R1bXBzR2VuZXJhdGVkQ29kZSA9IGR1bXBzR2Vu
ZXJhdGVkQ29kZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGR1bXBzR2VuZXJhdGVkQ29kZSk7
Ci0jZW5kaWYKIH0KIAogYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2Rl
KCkKIHsKLSNpZm5kZWYgTkRFQlVHCiAgICAgcmV0dXJuIHNfZHVtcHNHZW5lcmF0ZWRDb2RlOwot
I2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKIH0KIAogSlNPYmplY3QqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSgpCkBAIC0xNDgsMTAgKzEzOSw4IEBAIEpTT2JqZWN0KiBCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogCiAgICAgbV9jb2RlQmxvY2stPnNldEluc3RydWN0
aW9uQ291bnQobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAKLSNpZm5kZWYg
TkRFQlVHCiAgICAgaWYgKHNfZHVtcHNHZW5lcmF0ZWRDb2RlKQogICAgICAgICBtX2NvZGVCbG9j
ay0+ZHVtcChtX3Njb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKTsKLSNlbmRp
ZgogCiAgICAgaWYgKChtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiAhbV9jb2RlQmxvY2st
Pm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSAmJiAhbV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSkg
fHwgbV9jb2RlVHlwZSA9PSBFdmFsQ29kZSkKICAgICAgICAgc3ltYm9sVGFibGUoKS5jbGVhcigp
OwpAQCAtMTI3Niw5ICsxMjY1LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxS
ZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKElO
VEVSUFJFVEVSKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0
aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICAgICAgVmFsdWVQcm9maWxl
KiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9w
X3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE0NDAsOSArMTQyNyw3IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQog
ICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXpl
KCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5h
ZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRp
ZgogICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShyZXF1aXJl
c0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9n
bG9iYWwpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wRHN0LT5pbmRleCgpKTsKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE0OTAs
OSArMTQ3NSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNp
ZiBFTkFCTEUoSklUKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0
cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAg
IG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpKTsKLSNlbmRpZgogICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxl
ZE9wY29kZShyZXF1aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWlj
IDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wRHN0
LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVy
dHkpKTsKQEAgLTE1MTEsOSArMTQ5NCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRN
ZXRob2RDaGVjaygKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlk
KFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHkpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQ
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYK
IAogICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9nZXRf
YnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwpAQCAtMTUz
OSw5ICsxNTIwLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBcgog
CiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewot
I2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nl
c3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBlbWl0
T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmlu
ZGV4KCkpOwpAQCAtMTU1Nyw5ICsxNTM2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRQdXRCeQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVj
dFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJl
Z2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVC
bG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkp
OwotI2VuZGlmCiAgICAgCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE4NDgsNyArMTgyNSwxMSBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoCiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7IC8vIGFyZ0Nv
dW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0ZXJPZmZz
ZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0luZm8oKSk7CisjZWxz
ZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAg
ICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfY2FsbF9wdXRf
cmVzdWx0KTsKQEAgLTE5NTIsNyArMTkzMywxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENvbnN0CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkp
OyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0
CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9j
ay0+YWRkTExJbnRDYWxsTGlua0luZm8oKSk7CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZCgwKTsKKyNlbmRpZgogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAo
ZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUg
PSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKQEAgLTIyMTMsNyArMjE5
OCwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhdGNoCiB7CiAgICAg
bV91c2VzRXhjZXB0aW9ucyA9IHRydWU7CiAjaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUoTExJ
TlQpCisgICAgSGFuZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+Ymlu
ZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9i
YXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxp
bnRfb3BfY2F0Y2gpKSB9OworI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+
YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHlu
YW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoLCBDb2RlTG9jYXRpb25MYWJlbCgpIH07
CisjZW5kaWYKICNlbHNlCiAgICAgSGFuZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwg
MCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29w
ZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCB9OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTA2MTUz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTYwNCw5ICs2MDQsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAg
VU5VU0VEX1BBUkFNKG5vZGVJbmRleCk7CiAgICAgICAgIAotICAgICAgICBWYWx1ZVByb2ZpbGUq
IHByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmls
ZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwotICAgICAgICBBU1NFUlQocHJvZmls
ZSk7Ci0gICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUtPmNvbXB1dGVV
cGRhdGVkUHJlZGljdGlvbigpOworICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBt
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZVByZWRpY3Rpb25G
b3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZF
UkJPU0UpCiAgICAgICAgIHByaW50ZigiRHluYW1pYyBbQCV1LCBiYyMldV0gcHJlZGljdGlvbjog
JXNcbiIsIG5vZGVJbmRleCwgYnl0ZWNvZGVJbmRleCwgcHJlZGljdGlvblRvU3RyaW5nKHByZWRp
Y3Rpb24pKTsKICNlbmRpZgpAQCAtMTA0MSw2ICsxMDM5LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNl
cjo6aGFuZGxlSW5saW5pbmcoYm9vbAogICAgIAogICAgIC8vIElmIHdlIGdldCBoZXJlIHRoZW4g
aXQgbG9va3MgbGlrZSB3ZSBzaG91bGQgZGVmaW5pdGVseSBpbmxpbmUgdGhpcyBjb2RlLiBQcm9j
ZWVkCiAgICAgLy8gd2l0aCBwYXJzaW5nIHRoZSBjb2RlIHRvIGdldCBieXRlY29kZSwgc28gdGhh
dCB3ZSBjYW4gdGhlbiBwYXJzZSB0aGUgYnl0ZWNvZGUuCisgICAgLy8gTm90ZSB0aGF0IGlmIExM
SW50IGlzIGVuYWJsZWQsIHRoZSBieXRlY29kZSB3aWxsIGFsd2F5cyBiZSBhdmFpbGFibGUuIEFs
c28gbm90ZQorICAgIC8vIHRoYXQgaWYgTExJbnQgaXMgZW5hYmxlZCwgd2UgbWF5IGlubGluZSBh
IGNvZGUgYmxvY2sgdGhhdCBoYXMgbmV2ZXIgYmVlbiBKSVR0ZWQKKyAgICAvLyBiZWZvcmUhCiAg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2NvZGVCbG9ja0NhY2hlLmdldChDb2RlQmxvY2tL
ZXkoZXhlY3V0YWJsZSwga2luZCksIGV4cGVjdGVkRnVuY3Rpb24tPnNjb3BlKCkpOwogICAgIGlm
ICghY29kZUJsb2NrKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzQxLDcgKzE3NDIsNyBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAg
ICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2N1cnJlbnRJbmRleCk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChtZXRob2RDYWxsU3RhdHVzLmlzU2V0KCkKLSAg
ICAgICAgICAgICAgICAmJiAhZ2V0QnlJZFN0YXR1cy5pc1NldCgpCisgICAgICAgICAgICAgICAg
JiYgIWdldEJ5SWRTdGF0dXMud2FzU2VlbkluSklUKCkKICAgICAgICAgICAgICAgICAmJiAhbV9p
bmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwg
QmFkQ2FjaGUpKSB7CiAgICAgICAgICAgICAgICAgLy8gSXQncyBtb25vbW9ycGhpYyBhcyBmYXIg
YXMgd2UgY2FuIHRlbGwsIHNpbmNlIHRoZSBtZXRob2RfY2hlY2sgd2FzIGxpbmtlZAogICAgICAg
ICAgICAgICAgIC8vIGJ1dCB0aGUgc2xvdyBwYXRoIChpLmUuIHRoZSBub3JtYWwgZ2V0X2J5X2lk
KSBuZXZlciBmaXJlZC4KQEAgLTE4MTAsNyArMTgxMSw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5
X2lkKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDogeworICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CiAg
ICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUu
b3BlcmFuZCk7CiAgICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1
Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1i
ZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rp
b25bMl0udS5vcGVyYW5kXTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2Fw
YWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdD
YXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTA2MTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw4IEBA
IGlubGluZSBib29sIGNhbkNvbXBpbGVPcGNvZGUoT3Bjb2RlSUQgb3AKICAgICBjYXNlIG9wX3B1
dF9zY29wZWRfdmFyOgogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X2J5
X2lkOgorICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIGNhc2Ug
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92
YXI6CiAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX2ptcDoKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJ
KHJldmlzaW9uIDEwNjE1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMjEgQEAgdm9pZCBjb21w
aWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdWludDMyX3QgZXhpdEluZGV4ID0gZ2xv
YmFsRGF0YS0+b3NyRXhpdEluZGV4OwogICAgIE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2stPm9z
ckV4aXQoZXhpdEluZGV4KTsKICAgICAKKyAgICAvLyBNYWtlIHN1cmUgYWxsIGNvZGUgb24gb3Vy
IGlubGluZSBzdGFjayBpcyBKSVQgY29tcGlsZWQuIFRoaXMgaXMgbmVjZXNzYXJ5IHNpbmNlCisg
ICAgLy8gd2UgbWF5IG9wdCB0byBpbmxpbmUgYSBjb2RlIGJsb2NrIGV2ZW4gYmVmb3JlIGl0IGhh
ZCBldmVyIGJlZW4gY29tcGlsZWQgYnkgdGhlCisgICAgLy8gSklULCBidXQgb3VyIE9TUiBleGl0
IGluZnJhc3RydWN0dXJlIGN1cnJlbnRseSBvbmx5IHdvcmtzIGlmIHRoZSB0YXJnZXQgb2YgdGhl
CisgICAgLy8gT1NSIGV4aXQgaXMgSklUIGNvZGUuIFRoaXMgY291bGQgYmUgY2hhbmdlZCBzaW5j
ZSB0aGVyZSBpcyBub3RoaW5nIHBhcnRpY3VsYXJseQorICAgIC8vIGhhcmQgYWJvdXQgZG9pbmcg
YW4gT1NSIGV4aXQgaW50byB0aGUgaW50ZXJwcmV0ZXIsIGJ1dCBmb3Igbm93IHRoaXMgc2VlbXMg
dG8gbWFrZQorICAgIC8vIHNlbnNlIGluIHRoYXQgaWYgd2UncmUgT1NSIGV4aXRpbmcgZnJvbSBp
bmxpbmVkIGNvZGUgb2YgYSBERkcgY29kZSBibG9jaywgdGhlbgorICAgIC8vIHByb2JhYmx5IGl0
J3MgYSBnb29kIHNpZ24gdGhhdCB0aGUgdGhpbmcgd2UncmUgZXhpdGluZyBpbnRvIGlzIGhvdC4g
RXZlbiBtb3JlCisgICAgLy8gaW50ZXJlc3RpbmdseSwgc2luY2UgdGhlIGNvZGUgd2FzIGlubGlu
ZWQsIGl0IG1heSBuZXZlciBvdGhlcndpc2UgZ2V0IEpJVAorICAgIC8vIGNvbXBpbGVkIHNpbmNl
IHRoZSBhY3Qgb2YgaW5saW5pbmcgaXQgbWF5IGVuc3VyZSB0aGF0IGl0IG90aGVyd2lzZSBuZXZl
ciBydW5zLgorICAgIGZvciAoQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gZXhpdC5tX2NvZGVPcmln
aW47IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUtPmNhbGxlcikgeworICAgICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4
ZWN1dGFibGUqPihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSkK
KyAgICAgICAgICAgIC0+YmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbi5pbmxpbmVDYWxs
RnJhbWUtPmlzQ2FsbCA/IENvZGVGb3JDYWxsIDogQ29kZUZvckNvbnN0cnVjdCkKKyAgICAgICAg
ICAgIC0+aml0Q29tcGlsZSgqZ2xvYmFsRGF0YSk7CisgICAgfQorICAgIAogICAgIFNwZWN1bGF0
aW9uUmVjb3ZlcnkqIHJlY292ZXJ5ID0gMDsKICAgICBpZiAoZXhpdC5tX3JlY292ZXJ5SW5kZXgp
CiAgICAgICAgIHJlY292ZXJ5ID0gJmNvZGVCbG9jay0+c3BlY3VsYXRpb25SZWNvdmVyeShleGl0
Lm1fcmVjb3ZlcnlJbmRleCAtIDEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxMDYxNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3
IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2lu
Y2x1ZGUgIkRGR1JlcGF0Y2guaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAj
aW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW5saW5lQVNNLmgiCiAjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTY3Myw1MCArNjc0LDYgQEAgc2l6ZV90IERGR19PUEVSQVRJ
T04gb3BlcmF0aW9uQ29tcGFyZVN0cgogICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbChl
eGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AyKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSgpOwotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVy
blZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqKTsKLQotI2lmIENQVShYODZfNjQpCi1hc20g
KAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgot
SElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJtb3YgLTQwKCVyMTMpLCAlcjEz
XG4iCi0gICAgIm1vdiAlcjEzLCAlcmRpXG4iCi0gICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVM
T0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNl
bGlmIENQVShYODYpCi1hc20gKAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxu
IgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJt
b3YgLTQwKCVlZGkpLCAlZWRpXG4iCi0gICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCi0gICAgImpt
cCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4
ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKQotYXNtICgKLSIudGV4dCIg
IlxuIgotIi5hbGlnbiAyIiAiXG4iCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAi
XG4iCi0iLnRodW1iIiAiXG4iCi0iLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIjoiICJcbiIKLSAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCi0gICAgImNweSBy
MCwgcjUiICJcbiIKLSAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbmRpZgotCi1FbmNvZGVkSlNW
YWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4
ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+
Z2xvYmFsRGF0YSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0
YSwgZXhlYyk7Ci0gICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxE
YXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Ci19Ci0KIHN0YXRpYyB2b2lkKiBoYW5kbGVIb3N0
Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2Fs
bGVyRnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lv
biAxMDYxNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtODM3LDcgKzgzNyw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2ds
ZSBzd2VlcFRvZ2cKICAgICAgICAgc2V0SGlnaFdhdGVyTWFyayhtYXgocHJvcG9ydGlvbmFsQnl0
ZXMsIG1fbWluQnl0ZXNQZXJDeWNsZSkpOwogICAgIH0KICAgICBKQVZBU0NSSVBUQ09SRV9HQ19F
TkQoKTsKLQorICAgIAogICAgICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwogfQogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMDYxNTMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTVmFs
dWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAgICBjbGFzcyBS
ZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTEzNSwxMSArMTM2LDEyIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMo
SGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5k
IGNsYXNzIENvZGVCbG9jazsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZFNwYWNlOwogICAgICAgICBmcmllbmQg
Y2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBCdW1wU3BhY2U7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKLSAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVC
bG9jazsKIAogICAgICAgICBzaXplX3Qgd2F0ZXJNYXJrKCk7CiAgICAgICAgIHNpemVfdCBoaWdo
V2F0ZXJNYXJrKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5j
cHAJKHJldmlzaW9uIDEwNjE1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtT
dGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICszMDQsNyBAQCBBTFdBWVNfSU5MSU5F
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oCiAjZW5kaWYKIAogICAgIEFTU0VSVChIZWFwOjpp
c01hcmtlZChjZWxsKSk7Ci0KKyAgICAKICAgICBpZiAoaXNKU1N0cmluZyhjZWxsKSkgewogICAg
ICAgICBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2
aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxMDYxNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogY2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIExpdmVPYmpl
Y3RJdGVyYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFdlYWtHQ0hh
bmRsZTsKIGNsYXNzIFNsb3RWaXNpdG9yOwogCkBAIC04Nyw2ICs4OCw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGZyZWVCbG9ja3MoTWFya2VkQmxvY2sqIGhlYWQpOwogCiBwcml2YXRlOgorICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiAgICAgdm9pZCogYWxsb2Nh
dGVTbG93Q2FzZShTaXplQ2xhc3MmKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZUhlbHBlcihNYXJr
ZWRTcGFjZTo6U2l6ZUNsYXNzJik7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGUoTWFya2VkU3BhY2U6
OlNpemVDbGFzcyYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Nh
bGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTA2MTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDkg
QEAgbmFtZXNwYWNlIEpTQyAgewogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgSW5z
dHJ1Y3Rpb24qIHJldHVyblZQQygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxlOjpS
ZXR1cm5QQ10udlBDKCk7IH0KICNlbmRpZgorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgSW5z
dHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5zdHJ1
Y3Rpb24qPih0aGlzW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0udGFnKCkpOyB9CisjZW5k
aWYKIAogICAgICAgICB2b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogY2FsbGVyRnJhbWUp
IHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1l
XSA9IGNhbGxlckZyYW1lOyB9CiAgICAgICAgIHZvaWQgc2V0U2NvcGVDaGFpbihTY29wZUNoYWlu
Tm9kZSogc2NvcGVDaGFpbikgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVy
RmlsZTo6U2NvcGVDaGFpbl0gPSBzY29wZUNoYWluOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEwNjE1
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNlbmRp
ZgogCi0jZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAoRU5BQkxF
KENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKKyNkZWZp
bmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EICgoRU5BQkxFKENPTVBVVEVE
X0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkpICYmICFkZWZpbmVkKF9fbGx2bV9f
KSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNTQ3LDE3ICs1NDcsNDMgQEAgSW50ZXJw
cmV0ZXI6OkludGVycHJldGVyKCkKIHsKIH0KIAotdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6
ZShib29sIGNhblVzZUpJVCkKK0ludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIoKQogewotI2lmIEVO
QUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICBp
ZiAobV9lbmFibGVkKQorICAgICAgICBkZWxldGVbXSBtX29wY29kZVRhYmxlOworI2VuZGlmCit9
CisKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRhdGEqIGxsaW50RGF0YSwg
Ym9vbCBjYW5Vc2VKSVQpCit7CisgICAgVU5VU0VEX1BBUkFNKGxsaW50RGF0YSk7CisgICAgVU5V
U0VEX1BBUkFNKGNhblVzZUpJVCk7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVU
RVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVU
RVIpCisgICAgLy8gSGF2aW5nIExMSW50IGVuYWJsZWQsIGJ1dCBub3QgYmVpbmcgYWJsZSB0byB1
c2UgdGhlIEpJVCwgYW5kIG5vdCBoYXZpbmcKKyAgICAvLyBhIGNvbXB1dGVkIGdvdG8gaW50ZXJw
cmV0ZXIsIGlzIG5vdCBzdXBwb3J0ZWQuIE5vdCBiZWNhdXNlIHdlIGNhbm5vdAorICAgIC8vIHN1
cHBvcnQgaXQsIGJ1dCBiZWNhdXNlIEkgZGVjaWRlZCB0byBkcmF3IHRoZSBsaW5lIGF0IHRoZSBu
dW1iZXIgb2YKKyAgICAvLyBwZXJtdXRhdGlvbnMgb2YgZXhlY3V0aW9uIGVuZ2luZXMgdGhhdCBJ
IHdhbnRlZCB0aGlzIGNvZGUgdG8gZ3Jvay4KKyAgICBBU1NFUlQoY2FuVXNlSklUKTsKKyNlbmRp
ZgogICAgIGlmIChjYW5Vc2VKSVQpIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bj
b2RlVGFibGUgPSBsbGludERhdGEtPm9wY29kZU1hcCgpOworICAgICAgICBmb3IgKGludCBpID0g
MDsgaSA8IG51bU9wY29kZUlEczsgKytpKQorICAgICAgICAgICAgbV9vcGNvZGVJRFRhYmxlLmFk
ZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworI2Vsc2UKICAg
ICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0aW5hdGlv
bnMgZm9yIG9wY29kZXMuCiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51
bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlID0gYml0d2lzZV9j
YXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpKTsKICAgICAgICAgICAgIG1fb3Bj
b2RlVGFibGVbaV0gPSBvcGNvZGU7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0gZWxzZSB7Cisj
aWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbmV3IE9wY29kZVtudW1P
cGNvZGVJRHNdOworI2VuZGlmCiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRpYWxpemVBbmRS
ZXR1cm4sIDAsIDApOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1P
cGNvZGVJRHM7ICsraSkKQEAgLTU2Niw3ICs1OTIsNiBAQCB2b2lkIEludGVycHJldGVyOjppbml0
aWFsaXplKGJvb2wgY2FuVXNlCiAgICAgICAgIG1fZW5hYmxlZCA9IHRydWU7CiAgICAgfQogI2Vs
c2UKLSAgICBVTlVTRURfUEFSQU0oY2FuVXNlSklUKTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIp
CiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICNlbHNlCkBAIC02NjcsOSArNjkyLDExIEBAIHZvaWQg
SW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW0KIAogYm9vbCBJbnRlcnByZXRlcjo6
aXNPcGNvZGUoT3Bjb2RlIG9wY29kZSkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRF
UlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxF
KExMSU5UKQorI2lmICFFTkFCTEUoTExJTlQpCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAg
IHJldHVybiBvcGNvZGUgPj0gMCAmJiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0
PHVpbnRwdHJfdD4ob3Bjb2RlKSkgPD0gb3BfZW5kOworI2VuZGlmCiAgICAgcmV0dXJuIG9wY29k
ZSAhPSBIYXNoVHJhaXRzPE9wY29kZT46OmVtcHR5VmFsdWUoKQogICAgICAgICAmJiAhSGFzaFRy
YWl0czxPcGNvZGU+Ojppc0RlbGV0ZWRWYWx1ZShvcGNvZGUpCiAgICAgICAgICYmIG1fb3Bjb2Rl
SURUYWJsZS5jb250YWlucyhvcGNvZGUpOwpAQCAtNzI2LDExICs3NTMsMTEgQEAgTkVWRVJfSU5M
SU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbAogICAgIC8vIGhhdmUgdG8gc3VidHJhY3Qg
MS4KICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgaWYgKGNhbGxl
ckZyYW1lLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCkpCi0gICAgICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAg
ICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJh
bWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAgICAgZWxzZQogICAgICAgICBieXRlY29kZU9m
ZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkg
LSAxOwogI2VsaWYgRU5BQkxFKEpJVCkKLSAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+
Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNl
dCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0
dXJuUEMoKSk7CiAjZWxzZQogICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29k
ZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZW5kaWYKQEAgLTUxNzAsMTAg
KzUxOTcsMTAgQEAgdm9pZCBJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKENhbAogICAg
ICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2Fs
bEZyYW1lLT5yZXR1cm5WUEMoKSk7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBlbHNlCi0gICAgICAg
IGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJh
bWUtPnJldHVyblBDKCkpOworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9j
ay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAj
ZW5kaWYKICNlbHNlCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBj
YWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJl
dHVyblBDKCkpOwogI2VuZGlmCiAgICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVCbG9jay0+bGlu
ZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAgc291cmNl
SUQgPSBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJ
KHJldmlzaW9uIDEwNjE1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
SlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisj
aW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUmVn
aXN0ZXJGaWxlLmgiCiAKQEAgLTQ1LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNs
YXNzIFByb2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNzIFNj
b3BlQ2hhaW5Ob2RlOwpAQCAtMTAwLDE5ICsxMDIsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBJbnRlcnByZXRlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
ICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkQ2Fs
bDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIEpJVDsKICAgICBwdWJsaWM6CiAgICAgICAgIEludGVycHJldGVyKCk7Cisg
ICAgICAgIH5JbnRlcnByZXRlcigpOwogICAgICAgICAKLSAgICAgICAgdm9pZCBpbml0aWFsaXpl
KGJvb2wgY2FuVXNlSklUKTsKKyAgICAgICAgdm9pZCBpbml0aWFsaXplKExMSW50OjpEYXRhKiwg
Ym9vbCBjYW5Vc2VKSVQpOwogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlKCkg
eyByZXR1cm4gbV9yZWdpc3RlckZpbGU7IH0KICAgICAgICAgCiAgICAgICAgIE9wY29kZSBnZXRP
cGNvZGUoT3Bjb2RlSUQgaWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRp
YWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFC
TEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICAg
ICAgcmV0dXJuIG1fb3Bjb2RlVGFibGVbaWRdOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBp
ZDsKQEAgLTEyMiw3ICsxMjYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9wY29kZUlE
IGdldE9wY29kZUlEKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VS
VChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7
CisgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVJRFRhYmxlLmdldChvcGNvZGUpOworI2VsaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgICAgICBBU1NFUlQoaXNP
cGNvZGUob3Bjb2RlKSk7CiAgICAgICAgICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KG9wY29kZSkpOwpAQCAtMTMyLDYgKzEzOSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHJldHVybiBvcGNvZGU7CiAjZW5kaWYKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
Ym9vbCBlbmFibGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZW5hYmxlZDsK
KyAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIApAQCAtMTk5LDcg
KzIxMSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlckZpbGUgbV9yZWdp
c3RlckZpbGU7CiAgICAgICAgIAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KQorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgT3Bjb2RlKiBtX29wY29kZVRhYmxlOyAvLyBN
YXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCisgICAgICAgIEhhc2hNYXA8T3Bj
b2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJ
RCBmb3IgZGVjb21waWxpbmcKKyNlbGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KQogICAgICAgICBPcGNvZGUgbV9vcGNvZGVUYWJsZVtudW1PcGNvZGVJRHNdOyAvLyBNYXBzIE9w
Y29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCiAgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBP
cGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3Ig
ZGVjb21waWxpbmcKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkocmV2aXNpb24gMTA2MTUzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29uc2VydmF0aXZl
Um9vdHM7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAKICAgICBjbGFzcyBSZWdpc3RlckZpbGUgewogICAgICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShSZWdpc3RlckZpbGUpOwpAQCAtODEsNiArODIsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgZ3Jvd1Nsb3dDYXNlKFJl
Z2lzdGVyKik7CiAgICAgICAgIHZvaWQgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CiAgICAgICAg
IHZvaWQgYWRkVG9Db21taXR0ZWRCeXRlQ291bnQobG9uZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIb3N0Q2Fs
bFJldHVyblZhbHVlLmgiCisKKyNpZiBDT01QSUxFUihHQ0MpCisKKyNpbmNsdWRlICJDYWxsRnJh
bWUuaCIKKyNpbmNsdWRlICJJbmxpbmVBU00uaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTVmFsdWVJbmxpbmVNZXRob2RzLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExf
UkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShF
eGVjU3RhdGUqKTsKKworI2lmIENQVShYODZfNjQpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9T
VFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCisgICAgIm1vdiAlcjEzLCAl
cmRpXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShYODYpCithc20gKAor
Ii5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElE
RV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4i
CisgICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVM
T0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNl
bGlmIENQVShBUk1fVEhVTUIyKQorYXNtICgKKyIudGV4dCIgIlxuIgorIi5hbGlnbiAyIiAiXG4i
CisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitI
SURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCisiLnRodW1iIiAiXG4iCisi
LnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJc
biIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAi
bGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCisgICAgImNweSByMCwgcjUiICJcbiIKKyAgICAiYiAi
IFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNT
dGF0ZSkgIlxuIgorKTsKKyNlbmRpZgorCitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1Rf
Q0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMt
Pmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBDT01QSUxFUihHQ0MpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKyNkZWZpbmUgSG9zdENhbGxS
ZXR1cm5WYWx1ZV9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKy8vIFVuZm9ydHVu
YXRlbHkgdGhpcyBvbmx5IHdvcmtzIG9uIEdDQy1saWtlIGNvbXBpbGVycy4gQW5kIGl0J3MgY3Vy
cmVudGx5IG9ubHkgdXNlZAorLy8gYnkgTExJbnQgYW5kIERGRywgd2hpY2ggYWxzbyBhcmUgcmVz
dHJpY3RlZCB0byBHQ0MtbGlrZSBjb21waWxlcnMuIFdlIHNob3VsZAorLy8gcHJvYmFibHkgZml4
IHRoYXQgYXQgc29tZSBwb2ludC4KKyNpZiBDT01QSUxFUihHQ0MpCisKKyNpZiBDQUxMSU5HX0NP
TlZFTlRJT05fSVNfU1REQ0FMTAorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElP
TiBDREVDTAorI2Vsc2UKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04KKyNl
bmRpZgorCituYW1lc3BhY2UgSlNDIHsKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9D
QUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOworfQorCisj
ZW5kaWYgLy8gQ09NUElMRVIoR0NDKQorCisjZW5kaWYgLy8gSG9zdENhbGxSZXR1cm5WYWx1ZV9o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEwNjE1MykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1
LDYgKzMyNSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
REVGSU5FX09QKG9wX3Byb2ZpbGVfd2lsbF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVz
aF9uZXdfc2NvcGUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX3Njb3BlKQorICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQp
CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaW5kZXgpCiAgICAgICAgIERFRklORV9PUChv
cF9wdXRfYnlfdmFsKQpAQCAtNDg3LDYgKzQ4OSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
cmVzb2x2ZV9nbG9iYWwpCkBAIC01MjYsNiArNTMwLDEwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVNsb3dDYXNlcygpCiAKIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBm
dW5jdGlvbkVudHJ5QXJpdHlDaGVjaykKIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQor
ICAgIHByaW50ZigiQ29tcGlsaW5nIEpJVCBjb2RlIVxuIik7CisjZW5kaWYKKyAgICAKICNpZiBF
TkFCTEUoVkFMVUVfUFJPRklMRVIpCiAgICAgbV9jYW5CZU9wdGltaXplZCA9IG1fY29kZUJsb2Nr
LT5jYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC02OTAsOCArNjk4LDEyIEBAIEpJVENv
ZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAgICAgICAgaW5mby5jYWxsUmV0
dXJuTG9jYXRpb24gPSBtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8obV9tZXRob2RDYWxs
Q29tcGlsYXRpb25JbmZvW2ldLnByb3BlcnR5QWNjZXNzSW5kZXgpLmNhbGxSZXR1cm5Mb2NhdGlv
bjsKICAgICB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAobV9jYW5CZU9wdGltaXpl
ZCkgeworI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fY2Fu
QmVPcHRpbWl6ZWQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHx8IHRydWUKKyNlbmRpZgor
ICAgICAgICApIHsKICAgICAgICAgQ29tcGFjdEpJVENvZGVNYXA6OkVuY29kZXIgaml0Q29kZU1h
cEVuY29kZXI7CiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRl
Y29kZU9mZnNldCA8IG1fbGFiZWxzLnNpemUoKTsgKytieXRlY29kZU9mZnNldCkgewogICAgICAg
ICAgICAgaWYgKG1fbGFiZWxzW2J5dGVjb2RlT2Zmc2V0XS5pc1NldCgpKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEwNjE1MykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKSVRDb2RlKCkgeyB9CiAjZW5kaWYKICAgICBwdWJs
aWM6Ci0gICAgICAgIGVudW0gSklUVHlwZSB7IEhvc3RDYWxsVGh1bmssIEJhc2VsaW5lSklULCBE
RkdKSVQgfTsKKyAgICAgICAgZW51bSBKSVRUeXBlIHsgTm9uZSwgSG9zdENhbGxUaHVuaywgSW50
ZXJwcmV0ZXJUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OwogICAgICAgICAKICAgICAgICAg
c3RhdGljIEpJVFR5cGUgYm90dG9tVGllckpJVCgpCiAgICAgICAgIHsKQEAgLTY2LDggKzY2LDE5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIERGR0pJVDsKICAgICAgICAg
fQogICAgICAgICAKKyAgICAgICAgc3RhdGljIGJvb2wgaXNPcHRpbWl6aW5nSklUKEpJVFR5cGUg
aml0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gREZHSklU
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgYm9vbCBpc0Jhc2VsaW5lQ29k
ZShKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBqaXRUeXBl
ID09IEludGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBCYXNlbGluZUpJVDsKKyAgICAgICAg
fQorICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBKSVRDb2RlKCkKKyAgICAgICAg
ICAgIDogbV9qaXRUeXBlKE5vbmUpCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03NSw2ICs4
Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgOiBtX3JlZihyZWYpCiAgICAgICAg
ICAgICAsIG1faml0VHlwZShqaXRUeXBlKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQo
aml0VHlwZSAhPSBOb25lKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVy
YXRvciAhKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAko
cmV2aXNpb24gMTA2MTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDIxIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVH
ZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKKyNp
bmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgogaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNv
ZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewor
ICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygp
OworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9
PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxl
KGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CkBAIC01NSwxMCArNjEsNyBA
QCBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShKU0dsCiAgICAgICAgIH0KICAg
ICAgICAgaml0Q29kZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgp
KTsKICAgICB9Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRlY29k
ZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+aGFu
ZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgorICAgIGNvZGVCbG9j
ay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2RlQmxvY2st
PnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwogICAgIAogICAg
IHJldHVybiB0cnVlOwpAQCAtNjYsOSArNjksMTQgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlm
QXBwcm9wcmlhdGUoSlNHbAogCiBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJv
cHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2Nr
PiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGpp
dENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwgSklU
Q29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+
Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2Jh
bERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVC
bG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQg
PSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRm
Z0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlRnVuY3Rpb24oZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LmdldCgpLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwpAQCAtODMsMTEgKzkxLDcg
QEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaQogICAgICAgICB9CiAg
ICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQo
KSwgJmppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BDT0RFX1NB
TVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgp
KQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5
KCk7Ci0jZW5kaWYKLSAgICAKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGlu
Z09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENv
ZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEwNjE1MykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3coSlNH
bG9iYWxEYQogCiBFeGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIFJldHVy
bkFkZHJlc3NQdHIgZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGds
b2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPmJ5dGVjb2RlT2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAgICByZXR1cm4gZ2VuZXJpY1Ro
cm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1bHRMb2NhdGlvbikpOwogfQog
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24g
MTA2MTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5MjgsNyArMTkyOCw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQs
IG9wdGltaXplX2Zyb20KICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gc3RhY2tGcmFtZS5h
cmdzWzBdLmludDMyKCk7CiAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50
ZigiRW50ZXJlZCBvcHRpbWl6ZV9mcm9tX2xvb3Agd2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCBy
ZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIg
PSAldVxuIiwgY29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLCBjb2RlQmxvY2stPnJlb3B0
aW1pemF0aW9uUmV0cnlDb3VudGVyKCksIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3Vu
dGVyKCkpOworICAgIHByaW50ZigiJXA6IEVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGgg
ZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0
aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5qaXRF
eGVjdXRlQ291bnRlcigpLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCks
IGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOwogI2VuZGlmCiAKICAgICBp
ZiAoY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpKSB7CkBAIC0yMTgzLDQ1ICsy
MTgzLDEzIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCi1pbmxpbmUgQ2FsbEZyYW1lKiBhcml0eUNoZWNrRm9yKENhbGxG
cmFtZSogY2FsbEZyYW1lLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQotewotICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24o
Y2FsbEZyYW1lLT5jYWxsZWUoKSk7Ci0gICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9u
KCkpOwotICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxl
KCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOwotICAgIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKLQot
ICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5h
cmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgotICAgIGlmICghcmVn
aXN0ZXJGaWxlLT5ncm93KGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpKQotICAg
ICAgICByZXR1cm4gMDsKLQotICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8
IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKLQotICAgIC8vIFRvbyBmZXcgYXJndW1l
bnRzIC0tIGNvcHkgY2FsbCBmcmFtZSBhbmQgYXJndW1lbnRzLCB0aGVuIGZpbGwgaW4gbWlzc2lu
ZyBhcmd1bWVudHMgd2l0aCB1bmRlZmluZWQuCi0gICAgc2l6ZV90IGRlbHRhID0gbmV3Q29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKLSAgICBS
ZWdpc3Rlciogc3JjID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKTsKLSAgICBSZWdpc3RlciogZHN0
ID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIGRlbHRhOwotCi0gICAgaW50IGk7Ci0gICAgaW50
IGVuZCA9IC1DYWxsRnJhbWU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7
Ci0gICAgZm9yIChpID0gLTE7IGkgPj0gZW5kOyAtLWkpCi0gICAgICAgIGRzdFtpXSA9IHNyY1tp
XTsKLQotICAgIGVuZCAtPSBkZWx0YTsKLSAgICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkpCi0gICAg
ICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFt
ZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGRzdCk7Ci0gICAgQVNTRVJUKCh2b2lkKiluZXdDYWxsRnJh
bWUgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7Ci0gICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKLX0K
LQogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxfYXJpdHlDaGVjaykKIHsKICAg
ICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAKICAgICBDYWxsRnJhbWUqIGNh
bGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxs
RnJhbWUgPSBhcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUs
IENvZGVGb3JDYWxsKTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQ
YXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBD
b2RlRm9yQ2FsbCk7CiAgICAgaWYgKCFuZXdDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9S
RVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVy
RnJhbWUoKSkpOwogCkBAIC0yMjM0LDcgKzIyMDIsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2
b2lkKiwgb3BfY29uc3RydWN0CiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJh
bWUuY2FsbEZyYW1lOwogCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBhcml0eUNoZWNr
Rm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDb25zdHJ1Y3Qp
OworICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNo
ZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDb25zdHJ1
Y3QpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRp
b25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FE
RFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkp
KTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAko
cmV2aXNpb24gMTA2MTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFj
ZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiwxMCBAQAogI2lmbmRlZiBKU0ludGVy
ZmFjZUpJVF9oCiAjZGVmaW5lIEpTSW50ZXJmYWNlSklUX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2Rl
Q29udmVudGlvbnMuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMu
aCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRl
ICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIExMSW50Q29tbW9uX2gKKyNkZWZpbmUgTExJbnRDb21tb25faAorCisjZGVm
aW5lIExMSU5UX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNkZWZpbmUgTExJTlRfSEVMUEVSX1RSQUNJ
TkcgMAorCisjZW5kaWYgLy8gTExJbnRDb21tb25faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKKworI2lmIEVOQUJMRShMTElOVCkK
KworI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgorI2luY2x1ZGUgIk9wY29kZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExM
SW50IHsKKworRGF0YTo6RGF0YSgpCisgICAgOiBtX2V4Y2VwdGlvbkluc3RydWN0aW9ucyhuZXcg
SW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsgMV0pCisgICAgLCBtX29wY29kZU1hcChuZXcg
T3Bjb2RlW251bU9wY29kZUlEc10pCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhPcGNv
ZGVMZW5ndGggKyAxOyArK2kpCisgICAgICAgIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUu
cG9pbnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2Zyb21faGVscGVyX3Ry
YW1wb2xpbmUpOworI2RlZmluZSBPUENPREVfRU5UUlkob3Bjb2RlLCBsZW5ndGgpIG1fb3Bjb2Rl
TWFwW29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF8jI29wY29kZSk7CisgICAg
Rk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9FTlRSWSk7CisjdW5kZWYgT1BDT0RFX0VOVFJZCit9
CisKK0RhdGE6On5EYXRhKCkKK3sKKyAgICBkZWxldGVbXSBtX2V4Y2VwdGlvbkluc3RydWN0aW9u
czsKKyAgICBkZWxldGVbXSBtX29wY29kZU1hcDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRE
YXRhX2gKKyNkZWZpbmUgTExJbnREYXRhX2gKKworI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0
aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisjaWYgRU5BQkxFKExMSU5UKQorY2xhc3MgRGF0
YSB7CitwdWJsaWM6CisgICAgRGF0YSgpOworICAgIH5EYXRhKCk7CisgICAgCisgICAgSW5zdHJ1
Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAgeworICAgICAgICByZXR1cm4gbV9l
eGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFw
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX29wY29kZU1hcDsKKyAgICB9Citwcml2YXRlOgor
ICAgIEluc3RydWN0aW9uKiBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBPcGNvZGUqIG1f
b3Bjb2RlTWFwOworfTsKKyNlbHNlIC8vIEVOQUJMRShMTElOVCkKKworI2lmIENPTVBJTEVSKENM
QU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25v
c3RpYyBpZ25vcmVkICItV21pc3Npbmctbm9yZXR1cm4iCisjZW5kaWYKKworY2xhc3MgRGF0YSB7
CitwdWJsaWM6CisgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9OworCisjaWYgQ09NUElM
RVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKworI2VuZGlm
IC8vIEVOQUJMRShMTElOVCkKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRp
ZiAvLyBMTEludERhdGFfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFbnRyeXBvaW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCisKKyNpZiBF
TkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxE
YXRhLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVy
cHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdl
dEZ1bmN0aW9uRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCwgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
JiBhcml0eUNoZWNrKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAg
ICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICAgICAgaml0Q29kZSA9IEpJ
VENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5h
Z2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpKSkpOworICAgICAgICAgICAgYXJpdHlDaGVj
ayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAg
IGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpj
cmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpKSkpOworICAg
ICAgICBhcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lk
Kj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAg
ICAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JD
YWxsRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAg
ICAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEFy
aXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgaml0Q29kZSA9IEpJ
VENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVu
a0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIGFyaXR5Q2hlY2sg
PSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1
bmtHZW5lcmF0b3IpLmNvZGUoKTsKK30KKwordm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxE
YXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rp
b24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2V2YWxfcHJvbG9ndWUp
KSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2Rl
KGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspOworfQorCit2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2Jh
bERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5j
dGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNy
b0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfcHJvZ3JhbV9wcm9s
b2d1ZSkpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJ
VENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwg
SklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpM
TEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIExMSW50RW50cnlwb2ludHNfaAorI2RlZmluZSBMTEludEVudHJ5cG9pbnRz
X2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCisj
aW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgRXZhbENvZGVCbG9jazsKK2NsYXNzIEpJVENvZGU7CitjbGFzcyBKU0dsb2JhbERhdGE7
CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI7CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY7CitjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOworCituYW1lc3BhY2UgTExJbnQgeworCit2b2lk
IGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kLCBKSVRDb2RlJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0eUNoZWNrKTsKK3ZvaWQg
Z2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYpOwordm9pZCBnZXRQcm9n
cmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBKSVRDb2RlJik7CisKK2lubGluZSB2b2lkIGdl
dEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFdmFsQ29kZUJsb2NrKiwgSklU
Q29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRFdmFsRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRD
b2RlKTsKK30KKworaW5saW5lIHZvaWQgZ2V0RW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFByb2dyYW1Db2RlQmxvY2sqLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGdldFBy
b2dyYW1FbnRyeXBvaW50KGdsb2JhbERhdGEsIGppdENvZGUpOworfQorCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExM
SW50RW50cnlwb2ludHNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCisKKyNpZiBFTkFCTEUo
TExJTlQpCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIK
KyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNp
bmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIK
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgaW50ZXJwcmV0ZXJU
aHJvd0luQ2FsbGVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisg
ICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRp
b24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coCisgICAgICAgIGds
b2JhbERhdGEsIGV4ZWMtPmNhbGxlckZyYW1lKCksIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwKKyAg
ICAgICAgZXhlYy0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGV4
ZWMtPmNhbGxlckZyYW1lKCksIGV4ZWMtPnJldHVyblBDKCkpKTsKK30KKworSW5zdHJ1Y3Rpb24q
IHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjKQoreworICAg
IHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkubGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9u
cygpOworfQorCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIElu
c3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+
Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJv
d2luZyBleGNlcHRpb24gJXMgKHJldHVyblRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0
aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEs
IGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJuIGdsb2JhbERhdGEtPmxsaW50
RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKwordm9pZCogY2FsbFRvVGhyb3coRXhl
Y1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORwor
ICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChjYWxsVG9UaHJvdykuXG4iLCBnbG9i
YWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhy
b3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNv
ZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAKKyAgICByZXR1cm4gYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7Cit9
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5U
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2Vw
dGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RXhjZXB0aW9uc19oCisj
ZGVmaW5lIExMSW50RXhjZXB0aW9uc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25h
bWVzcGFjZSBMTEludCB7CisKKy8vIFRocm93IHRoZSBjdXJyZW50bHkgYWN0aXZlIGV4Y2VwdGlv
biBpbiB0aGUgY29udGV4dCBvZiB0aGUgY2FsbGVyJ3MgY2FsbCBmcmFtZS4KK3ZvaWQgaW50ZXJw
cmV0ZXJUaHJvd0luQ2FsbGVyKEV4ZWNTdGF0ZSopOworCisvLyBUZWxscyB5b3Ugd2hlcmUgdG8g
anVtcCB0byBpZiB5b3Ugd2FudCB0byByZXR1cm4tdG8tdGhyb3csIGFmdGVyIHlvdSd2ZSBhbHJl
YWR5CisvLyBzZXQgdXAgYWxsIGluZm9ybWF0aW9uIG5lZWRlZCB0byB0aHJvdyB0aGUgZXhjZXB0
aW9uLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0
YXRlKik7CisKKy8vIFNhdmVzIHRoZSBjdXJyZW50IFBDIGluIHRoZSBnbG9iYWwgZGF0YSBmb3Ig
c2FmZS1rZWVwaW5nLCBhbmQgZ2l2ZXMgeW91IGEgUEMKKy8vIHRoYXQgeW91IGNhbiB0ZWxsIHRo
ZSBpbnRlcnByZXRlciB0byBnbyB0bywgd2hpY2ggd2hlbiBhZHZhbmNlZCBiZXR3ZWVuIDEKKy8v
IGFuZCA5IHNsb3RzIHdpbGwgZ2l2ZSB5b3UgYW4gImluc3RydWN0aW9uIiB0aGF0IHRocmVhZHMg
dG8gdGhlIGludGVycHJldGVyJ3MKKy8vIGV4Y2VwdGlvbiBoYW5kbGVyLiBOb3RlIHRoYXQgaWYg
eW91IGdpdmUgaXQgdGhlIFBDIGZvciBleGNlcHRpb24gaGFuZGxpbmcsCisvLyBpdCdzIHNtYXJ0
IGVub3VnaCB0byBqdXN0IHJldHVybiB0aGF0IFBDIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxz
ZTsgdGhpcworLy8gbGV0cyB5b3UgdGhyZWFkIGV4Y2VwdGlvbiBoYW5kbGluZyB0aHJvdWdoIGNv
bW1vbiBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgYnkKKy8vIG90aGVyIGhlbHBlcnMuCitJbnN0cnVj
dGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOworCisvLyBVc2Ug
dGhpcyB3aGVuIHlvdSdyZSB0aHJvd2luZyB0byBhIGNhbGwgdGh1bmsuCit2b2lkKiBjYWxsVG9U
aHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50RXhjZXB0
aW9uc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJz
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhl
bHBlcnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0MjkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkxMSW50SGVscGVycy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5j
bHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29t
bW9uU2xvd1BhdGhzLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiSklURHJpdmVy
LmgiCisjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIK
KyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkpTUHJvcGVy
dHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCisjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnRD
b21tb24uaCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMb3dMZXZl
bEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIExMSW50IHsKKworI2RlZmluZSBMTElOVF9PUChpbmRleCkgKGV4ZWMtPnVu
Y2hlY2tlZFIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisjZGVmaW5lIExMSU5UX09QX0MoaW5kZXgp
IChleGVjLT5yKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9U
V08oZmlyc3QsIHNlY29uZCkgZG8geyAgICAgICBcCisgICAgICAgIHVuaW9uIHsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdm9pZCogYTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdm9pZCogYjsgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9IHBhaXI7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpbnQ2NF90IGk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIH0gX19ydF91OyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmEgPSBmaXJzdDsgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmIgPSBzZWNvbmQ7ICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIHJldHVybiBfX3J0X3UuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9S
RVRVUk5fVFdPKHBjLCBleGVjKQorCisjZGVmaW5lIExMSU5UX1RIUk9XKGV4Y2VwdGlvblRvVGhy
b3cpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYg
X190X2dsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7ICAgICAgICBcCisgICAgICAgIF9f
dF9nbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICBc
CisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBpZiAoVU5MSUtFTFkoZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpIHsgICBcCisgICAg
ICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfRU5EKCkgZG8geyAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9CUkFOQ0gob3Bjb2Rl
LCBjb25kaXRpb24pIGRvIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBib29sIF9f
Yl9jb25kaXRpb24gPSAoY29uZGl0aW9uKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBpZiAoX19iX2NvbmRpdGlvbikgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0gcGNbT1BDT0RFX0xFTkdUSChv
cGNvZGUpIC0gMV0udS5vcGVyYW5kOyAgICAgICAgXAorICAgICAgICBlbHNlICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
cGMgKz0gT1BDT0RFX0xFTkdUSChvcGNvZGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTih2
YWx1ZSkgZG8geyAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTVmFsdWUgX19yX3JldHVyblZh
bHVlID0gKHZhbHVlKTsgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAg
ICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0gX19yX3JldHVyblZhbHVlOyAg
ICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOX1BST0ZJTEVE
KG9wY29kZSwgdmFsdWUpIGRvIHsgICAgICAgICAgICAgICBcCisgICAgICAgIEpTVmFsdWUgX19y
cF9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgTExJTlRfT1AoMSkgPSBfX3JwX3JldHVyblZhbHVlOyAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUucHJvZmls
ZS0+bV9idWNrZXRzWzBdID0gXAorICAgICAgICAgICAgSlNWYWx1ZTo6ZW5jb2RlKF9fcnBfcmV0
dXJuVmFsdWUpOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFs
c2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0KSBMTElO
VF9SRVRVUk5fVFdPKChjYWxsVGFyZ2V0KSwgKGV4ZWMpKQorCisjZGVmaW5lIExMSU5UX0NBTExf
VEhST1coZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICBcCisg
ICAgICAgIEV4ZWNTdGF0ZSogX19jdF9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2N0X3BjID0gKHBjKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYg
X19jdF9nbG9iYWxEYXRhID0gKF9fY3RfZXhlYyktPmdsb2JhbERhdGEoKTsgICAgICBcCisgICAg
ICAgIF9fY3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jdF9leGVjLCBjYWxs
VG9UaHJvdyhfX2N0X2V4ZWMsIF9fY3RfcGMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisj
ZGVmaW5lIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKSBkbyB7ICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jY2VfZXhlYyA9IChleGVjKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBf
X2NjZV9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIGlmIChVTkxJS0VMWShfX2NjZV9leGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY2NlX2V4ZWMs
IGNhbGxUb1Rocm93KF9fY2NlX2V4ZWMsIF9fY2NlX3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxz
ZSkKKworI2RlZmluZSBMTElOVF9DQUxMX1JFVFVSTihleGVjLCBwYywgY2FsbFRhcmdldCkgZG8g
eyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3JfZXhlYyA9IChl
eGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVj
dGlvbiogX19jcl9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICB2b2lkKiBfX2NyX2NhbGxUYXJnZXQgPSAoY2FsbFRhcmdldCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihf
X2NyX2V4ZWMtPmNhbGxlckZyYW1lKCksIF9fY3JfcGMpOyAgXAorICAgICAgICBMTElOVF9DQUxM
X0VORF9JTVBMKF9fY3JfZXhlYywgX19jcl9jYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgXAor
ICAgIH0gd2hpbGUgKGZhbHNlKQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRf
dHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21X
aGVyZSwgaW50IG9wZXJhbmQpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMj
JXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWRcbiIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVC
bG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJf
dD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAg
ICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0u
dS5vcGNvZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUsCisgICAgICAgICAgIG9wZXJhbmQsCisg
ICAgICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCit7Cisg
ICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0Mob3BlcmFuZCkuanNWYWx1ZSgpOworICAgIHVu
aW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQzMl90IHRhZzsKKyAgICAg
ICAgICAgIHVpbnQzMl90IHBheWxvYWQ7CisgICAgICAgIH0gYml0czsKKyAgICAgICAgRW5jb2Rl
ZEpTVmFsdWUgYXNWYWx1ZTsKKyAgICB9IHU7CisgICAgdS5hc1ZhbHVlID0gSlNWYWx1ZTo6ZW5j
b2RlKHZhbHVlKTsKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsIG9wIyV1
OiBUcmFjZSglZCk6ICVkOiAlZDogJTA4eDolMDh4IiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJs
b2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90
PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAg
ICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51
Lm9wY29kZSksCisgICAgICAgICAgIGZyb21XaGVyZSwKKyAgICAgICAgICAgb3BlcmFuZCwKKyAg
ICAgICAgICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kLAorICAgICAgICAgICB1LmJpdHMudGFnLAor
ICAgICAgICAgICB1LmJpdHMucGF5bG9hZCk7CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50Zigi
OiAlcyIsIHZhbHVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgcHJpbnRmKCJcbiIpOwor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZSkK
K3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGluIHByb2xvZ3VlLlxuIiwgZXhlYy0+Y29kZUJsb2Nr
KCksIGV4ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitzdGF0aWMgdm9pZCB0cmFjZUZ1bmN0
aW9uUHJvbG9ndWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBjb21tZW50LCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5j
dGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9ICZl
eGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICBwcmludGYoIiVwIC8g
JXA6IGluICVzIG9mIGZ1bmN0aW9uICVwLCBleGVjdXRhYmxlICVwOyBudW1WYXJzID0gJXUsIG51
bVBhcmFtZXRlcnMgPSAldSwgbnVtQ2FsbGVlUmVnaXN0ZXJzID0gJXUuXG4iLAorICAgICAgICAg
ICBjb2RlQmxvY2ssIGV4ZWMsIGNvbW1lbnQsIGNhbGxlZSwgZXhlY3V0YWJsZSwKKyAgICAgICAg
ICAgY29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBjb2Rl
QmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJh
Y2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xv
Z3VlKGV4ZWMsICJjYWxsIHByb2xvZ3VlIiwgQ29kZUZvckNhbGwpOworICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29u
c3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IHBy
b2xvZ3VlIiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCit7CisgICAgdHJhY2VGdW5j
dGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIGFyaXR5IGNoZWNrIiwgQ29kZUZvckNhbGwpOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zv
cl9jb25zdHJ1Y3QpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjb25zdHJ1
Y3QgYXJpdHkgY2hlY2siLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2UpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVj
dXRpbmcgYmMjJXp1LCAiLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAg
ICAgZXhlYywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29k
ZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyNpZm5kZWYgTkRFQlVHCisgICAg
cHJpbnRmKCIlcywgIiwgb3Bjb2RlTmFtZXNbZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVy
LT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSldKTsKKyNlbHNlCisgICAgcHJpbnRmKCJvcCMl
dSwgIiwgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51
Lm9wY29kZSkpOworI2VuZGlmCisgICAgcHJpbnRmKCJzY29wZSAlcFxuIiwgZXhlYy0+c2NvcGVD
aGFpbigpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woc3BlY2lh
bF90cmFjZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBzcGVjaWFsIGNhc2Ug
YmMjJXp1LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAorICAgICAgICAgICBleGVjLT5jb2Rl
QmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAg
ICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBd
LnUub3Bjb2RlKSwKKyAgICAgICAgICAgZXhlYy0+cmV0dXJuUEMoKS52YWx1ZSgpKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworaW5saW5lIGJvb2wgc2hvdWxkSklUKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICAvLyBZb3UgY2FuIG1vZGlmeSB0aGlzIHRvIHR1cm4gb2ZmIEpJVHRpbmcgd2l0aG91
dCByZWJ1aWxkaW5nIHRoZSB3b3JsZC4KKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmNh
blVzZUpJVCgpOworfQorCitlbnVtIEVudHJ5S2luZCB7IFByb2xvZ3VlLCBBcml0eUNoZWNrIH07
CitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVjU3RhdGUqIGV4ZWMsIEluc3Ry
dWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUsIEVudHJ5
S2luZCBraW5kKQoreworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIl
cDogRW50ZXJlZCAlcyB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywgbmFt
ZSwgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisgICAg
aWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGlt
ZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAg
aWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVO
QUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50ZigiICAgIENvZGUgd2FzIGFscmVh
ZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxvY2stPmppdFNvb24o
KTsKKyAgICBpZiAoa2luZCA9PSBQcm9sb2d1ZSkKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhj
b2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KDApLCBleGVj
KTsKKyAgICBBU1NFUlQoa2luZCA9PSBBcml0eUNoZWNrKTsKKyAgICBMTElOVF9SRVRVUk5fVFdP
KGNvZGVCbG9jay0+Z2V0SklUQ29kZVdpdGhBcml0eUNoZWNrKCkuZXhlY3V0YWJsZUFkZHJlc3Mo
KSwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcikKK3sKKyAgICByZXR1
cm4gZW50cnlPU1IoZXhlYywgcGMsIGV4ZWMtPmNvZGVCbG9jaygpLCAiZW50cnlfb3NyIiwgUHJv
bG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2Nh
bGwpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5j
YWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ2Fs
bCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQoreworICAgIHJl
dHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4
ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNvbnN0cnVjdCksICJlbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAg
cmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpz
RXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ2FsbCksICJlbnRyeV9v
c3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOworfQorCitMTElO
VF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNr
KQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2Fs
bGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNvbnN0
cnVjdCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrIiwgQXJp
dHlDaGVjayk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3NyKQoreworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgCisjaWYgRU5BQkxFKEpJ
VF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkIGxvb3Bfb3NyIHdpdGggZXhl
Y3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNv
dW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoIXNob3VsZEpJVChleGVjKSkgeworICAg
ICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgICAgICBMTElOVF9SRVRV
Uk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNvZGVCbG9jay0+aml0Q29t
cGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikK
KyAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2Vu
ZGlmCisgICAgfQorICAgIGNvZGVCbG9jay0+aml0U29vbigpOworICAgIAorICAgIEFTU0VSVChj
b2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgCisg
ICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gbWFwOworICAgIGNvZGVCbG9jay0+
aml0Q29kZU1hcCgpLT5kZWNvZGUobWFwKTsKKyAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQq
IG1hcHBpbmcgPSBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25l
ZCwgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29kZUluZGV4PihtYXAuYmVnaW4o
KSwgbWFwLnNpemUoKSwgcGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOwor
ICAgIEFTU0VSVChtYXBwaW5nKTsKKyAgICBBU1NFUlQobWFwcGluZy0+bV9ieXRlY29kZUluZGV4
ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwYyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKSkpOworICAgIAorICAgIHZvaWQqIGp1bXBUYXJnZXQgPSBjb2RlQmxvY2stPmdldEpJ
VENvZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KG1hcHBpbmctPm1fbWFjaGluZUNvZGVP
ZmZzZXQpOworICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk5f
VFdPKGp1bXBUYXJnZXQsIGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKQor
eworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgCisj
aWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkIHJlcGxh
Y2Ugd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+bGxp
bnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmIChzaG91bGRKSVQoZXhl
YykpIHsKKyAgICAgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0
YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgICAgICBwcmludGYo
IiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICAgICAgfQor
ICAgICAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29kZUJs
b2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjaykKK3sKKyNpZiBMTElOVF9IRUxQRVJfVFJB
Q0lORworICAgIHByaW50ZigiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0IHdpdGggZXhlYyA9ICVwLlxu
IiwgZXhlYyk7CisgICAgcHJpbnRmKCJDb2RlQmxvY2sgPSAlcC5cbiIsIGV4ZWMtPmNvZGVCbG9j
aygpKTsKKyAgICBwcmludGYoIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBleGVjLT5j
b2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgIHByaW50ZigiTnVtIHZhcnMg
PSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bVZhcnMpOworICAgIHByaW50ZigiQ3Vy
cmVudCBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJl
Z2lzdGVyRmlsZSgpLmVuZCgpKTsKKyNlbmRpZgorICAgIEFTU0VSVCgmZXhlYy0+cmVnaXN0ZXJz
KClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSA+IGV4ZWMtPmdsb2Jh
bERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOworICAgIGlmIChVTkxJ
S0VMWSghZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5ncm93
KCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3Rl
cnNdKSkpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4
ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhl
Yyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAgcGMg
PSByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKGV4ZWMpOworICAgIH0KKyAgICBMTElO
VF9FTkRfSU1QTCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0eUNo
ZWNrKQoreworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlD
aGVja0ZvcihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZp
bGUoKSwgQ29kZUZvckNhbGwpOworICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBleGVjID0g
ZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlv
biA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0ZXJU
aHJvd0luQ2FsbGVyKGV4ZWMpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGJpdHdpc2VfY2Fz
dDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSksIGV4ZWMpOworICAgIH0KKyAgICBM
TElOVF9SRVRVUk5fVFdPKDAsIG5ld0V4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29t
bW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50
ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBpZiAoIW5l
d0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4
ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhl
Yyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAgTExJ
TlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4o
MSkpLCBleGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQoreworI2lmIExM
SU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGluZyBhbiBhY3RpdmF0aW9uLCBl
eGVjID0gJXAhXG4iLCBleGVjKTsKKyNlbmRpZgorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlv
biA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYywgc3RhdGlj
X2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlYy0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0
YWJsZSgpKSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1
c2goYWN0aXZhdGlvbikpOworICAgIExMSU5UX1JFVFVSTihKU1ZhbHVlKGFjdGl2YXRpb24pKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCit7CisgICAg
SlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGV4ZWMt
PnVuY2hlY2tlZFIocGNbMV0udS5vcGVyYW5kKSA9IGFyZ3VtZW50czsKKyAgICBleGVjLT51bmNo
ZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKSA9IGFy
Z3VtZW50czsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2NyZWF0ZV90aGlzKQoreworICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0gYXNGdW5jdGlv
bihleGVjLT5jYWxsZWUoKSk7CisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIENvbnN0
cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBBU1NFUlQoY29uc3RydWN0b3ItPm1ldGhvZFRh
YmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEpID09IENv
bnN0cnVjdFR5cGVKUyk7CisjZW5kaWYKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsK
KyAgICBKU1ZhbHVlIHByb3RvID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmIChwcm90
by5pc09iamVjdCgpKQorICAgICAgICBzdHJ1Y3R1cmUgPSBhc09iamVjdChwcm90byktPmluaGVy
aXRvcklEKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgZWxzZQorICAgICAgICBzdHJ1Y3R1cmUg
PSBjb25zdHJ1Y3Rvci0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVy
ZSgpOworICAgIAorICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBz
dHJ1Y3R1cmUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcykK
K3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIEFTU0VSVCh2
MS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBMTElOVF9SRVRVUk4odjEudG9UaGlzT2JqZWN0KGV4ZWMp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpCit7CisgICAgTExJ
TlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25ld19hcnJheSkKK3sKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJy
YXkoZXhlYywgYml0d2lzZV9jYXN0PEpTVmFsdWUqPigmTExJTlRfT1AoMikpLCBwY1szXS51Lm9w
ZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIp
Cit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGV4ZWMtPmNvZGVCbG9j
aygpLT5jb25zdGFudEJ1ZmZlcihwY1syXS51Lm9wZXJhbmQpLCBwY1szXS51Lm9wZXJhbmQpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdleHApCit7CisgICAgUmVnRXhw
KiByZWdFeHAgPSBleGVjLT5jb2RlQmxvY2soKS0+cmVnZXhwKHBjWzJdLnUub3BlcmFuZCk7Cisg
ICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlU3lu
dGF4RXJyb3IoZXhlYywgIkludmFsaWQgZmxhZyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0
b3IuIikpOworICAgIExMSU5UX1JFVFVSTihSZWdFeHBPYmplY3Q6OmNyZWF0ZShleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9ub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9lcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OmVx
dWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSkKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6
OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3RlcSkK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVj
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xl
c3NlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPHRydWU+KGV4ZWMs
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2dyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPGZhbHNl
PihleGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKQoreworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKyAx
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKQoreworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSAx
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYykKK3sKKyAgICBkb3Vi
bGUgcmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExM
SU5UX09QKDIpID0ganNOdW1iZXIocmVzdWx0ICsgMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKHJlc3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9kZWMpCit7
CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVj
KTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCAtIDEpOworICAgIExMSU5UX1JF
VFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rv
X2pzbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bmVnYXRlKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcigtTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Fk
ZCkKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB2MiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorI2lmIExMSU5UX0hFTFBF
Ul9UUkFDSU5HCisgICAgcHJpbnRmKCJUcnlpbmcgdG8gYWRkICVzIiwgdjEuZGVzY3JpcHRpb24o
KSk7CisgICAgcHJpbnRmKCIgdG8gJXMuXG4iLCB2Mi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgor
ICAgIAorICAgIGlmICh2MS5pc1N0cmluZygpICYmICF2Mi5pc09iamVjdCgpKQorICAgICAgICBM
TElOVF9SRVRVUk4oanNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEpLCB2Mi50b1N0cmluZyhleGVj
KSkpOworICAgIAorICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCisgICAg
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcih2MS5hc051bWJlcigpICsgdjIuYXNOdW1iZXIoKSkp
OworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0FkZFNsb3dDYXNlKGV4ZWMsIHYxLCB2MikpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKQoreworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAqIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9zdWIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1i
ZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RpdikKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhl
YykgLyBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihm
bW9kKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpLCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2xzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9JbnQzMihleGVjKSA8PCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQz
MihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KQoreworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4
ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KQoreworICAgIExMSU5UX1JFVFVSTihqc051
bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSA+PiBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfYml0YW5kKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpICYgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQz
MihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3IpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhl
YykgfCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVy
KExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgXiBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9i
aXRub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKH5MTElOVF9PUF9DKDIpLmpzVmFs
dWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVj
a19oYXNfaW5zdGFuY2UpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsID0gTExJTlRfT1BfQygxKS5q
c1ZhbHVlKCk7CisjaWZuZGVmIE5ERUJVRworICAgIFR5cGVJbmZvIHR5cGVJbmZvKFVuc3BlY2lm
aWVkVHlwZSk7CisgICAgQVNTRVJUKCFiYXNlVmFsLmlzT2JqZWN0KCkKKyAgICAgICAgICAgfHwg
ISh0eXBlSW5mbyA9IGFzT2JqZWN0KGJhc2VWYWwpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKSku
aW1wbGVtZW50c0hhc0luc3RhbmNlKCkpOworI2VuZGlmCisgICAgTExJTlRfVEhST1coY3JlYXRl
SW52YWxpZFBhcmFtRXJyb3IoZXhlYywgImluc3RhbmNlb2YiLCBiYXNlVmFsKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9mKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluc3RhbmNlT2ZTbG93KGV4ZWMsIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQyg0KS5q
c1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRlZmluZWQp
Cit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbih2LmlzQ2VsbCgpID8gdi5hc0NlbGwoKS0+c3RydWN0dXJlKCktPnR5
cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpIDogdi5pc1VuZGVmaW5lZCgpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKQoreworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkuaXNCb29sZWFuKCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJlcikKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLmlzTnVtYmVyKCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZykKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKGlzSlNTdHJpbmcoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihqc0lzT2JqZWN0VHlwZShMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKQoreworICAgIExMSU5UX1JFVFVS
Tihqc0Jvb2xlYW4oanNJc0Z1bmN0aW9uVHlwZShMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Jlc29sdmUpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmUs
IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVu
dGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfc2tpcCkKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQoCisgICAgICAgIG9w
X3Jlc29sdmVfc2tpcCwKKyAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVTa2lwKAor
ICAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlm
aWVyKHBjWzJdLnUub3BlcmFuZCksCisgICAgICAgICAgICBwY1szXS51Lm9wZXJhbmQpKTsKK30K
Kworc3RhdGljIEpTVmFsdWUgcmVzb2x2ZUdsb2JhbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0
aW9uKiBwYykKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9i
amVjdCgpOworICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkpOworICAg
IGludCBwcm9wZXJ0eSA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IHBjWzNdLnUuc3RydWN0dXJlLmdldCgpOworICAgIAorICAgIEFTU0VSVF9VTlVTRUQoc3Ry
dWN0dXJlLCBzdHJ1Y3R1cmUgIT0gZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgCisg
ICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpOwor
ICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCk7CisgICAgCisgICAgaWYgKGdsb2Jh
bE9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkgeworICAgICAgICBK
U1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpOworICAgICAgICBpZiAo
c2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgJiYgIWdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCktPmlz
VW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9
PSBnbG9iYWxPYmplY3QpIHsKKyAgICAgICAgICAgIHBjWzNdLnUuc3RydWN0dXJlLnNldCgKKyAg
ICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCksIGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgcGNbNF0gPSBz
bG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKyAgICAKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0g
Y3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCk7CisgICAgcmV0dXJuIEpT
VmFsdWUoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQor
eworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbCwgcmVzb2x2ZUds
b2JhbChleGVjLCBwYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9n
bG9iYWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9n
bG9iYWxfZHluYW1pYywgcmVzb2x2ZUdsb2JhbChleGVjLCBwYykpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKK3sKKyAg
ICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYywgQ29tbW9u
U2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIo
cGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2
ZV9iYXNlKQoreworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlk
ZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAocGNbM10udS5vcGVyYW5kKSB7Cisg
ICAgICAgIEpTVmFsdWUgYmFzZSA9IEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMt
PnNjb3BlQ2hhaW4oKSwgdHJ1ZSk7CisgICAgICAgIGlmICghYmFzZSkKKyAgICAgICAgICAgIExM
SU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhlYywgaWRl
bnQudXN0cmluZygpKSk7CisgICAgICAgIExMSU5UX1JFVFVSTihiYXNlKTsKKyAgICB9CisgICAg
CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfYmFzZSwgSlNDOjpyZXNvbHZl
QmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKK3sKKyAgICBKU09i
amVjdCogb2JqZWN0ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29k
ZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIW9iamVjdC0+
Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkKKyAgICAgICAgTExJTlRfVEhST1co
Y3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5n
KCkpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jl
c29sdmVfd2l0aF9iYXNlKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhz
OjpvcFJlc29sdmVXaXRoQmFzZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihw
Y1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgLy8gRklYTUU6IHRlY2huaWNhbGx5
IHNob3VsZCBoYXZlIHByb2ZpbGluZywgYnV0IHdlIGRvbid0IGRvIGl0IGJlY2F1c2UgdGhlIERG
RyB3b24ndCB1c2UgaXQuCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKK3sKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IENvbW1v
blNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aFRoaXMoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlk
ZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0OworICAgIC8vIEZJWE1FOiB0
ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcsIGJ1dCB3ZSBkb24ndCBkbyBpdCBiZWNh
dXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2st
PmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExM
SU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7
CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3Qp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDEpID0gcmVzdWx0
OworCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVh
YmxlKCkKKyAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAm
JiBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAg
ICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7Cisg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAg
ICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkK
KyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlD
YWNoaW5nKCkpIHsKKyAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAg
ICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCks
IHN0cnVjdHVyZSk7CisgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9m
ZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHBj
W09QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X2lkKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBd
ID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKK3sKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50
ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBi
YXNlVmFsdWUgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qo
YmFzZVZhbHVlKTsKKyAgICBMTElOVF9SRVRVUk4oYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwg
c2xvdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKQoreworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmll
ciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgIGlmIChwY1s4XS51
Lm9wZXJhbmQpCisgICAgICAgIGFzT2JqZWN0KGJhc2VWYWx1ZSktPnB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIGlkZW50LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAg
ZWxzZQorICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50LCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAg
aWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsK
KyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7
CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5
KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVy
dHlDYWNoaW5nKCkKKyAgICAgICAgICAgICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNs
b3Q6Ok5ld1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGlj
dGlvbmFyeSgpICYmIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpID09IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkgeworICAgICAg
ICAgICAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWUgb2YgdGhlIG1ldGhv
ZHMgd2UgY2FsbAorICAgICAgICAgICAgICAgICAgICAvLyBiZWxvdyBtYXkgR0MuCisgICAgICAg
ICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
b3BfcHV0X2J5X2lkKTsKKworICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVD
aGFpbihleGVjLCBiYXNlQ2VsbCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOworICAg
ICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCks
IHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5v
cGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1
Y3R1cmUpOworICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBzdHJ1
Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
Y2hhaW4pOworICAgICAgICAgICAgICAgICAgICBwY1s3XS51LnN0cnVjdHVyZUNoYWluLnNldCgK
KyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIHBj
WzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNW
YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpCit7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVjdCog
YmFzZU9iamVjdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvT2JqZWN0KGV4ZWMpOworICAg
IGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9w
ZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVy
YW5kKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgaWYgKCFjb3VsZERlbGV0
ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVh
dGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKworaW5saW5lIEpTVmFsdWUg
Z2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJz
Y3JpcHQpCit7CisgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0
LmlzU3RyaW5nKCkpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5h
c0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KGV4ZWMsIGFzU3RyaW5nKHN1YnNjcmlwdCktPnZh
bHVlKGV4ZWMpKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAg
IGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2Ny
aXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNT
dHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICByZXR1cm4gYXNT
dHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAorICAgICAgICBp
ZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNh
bkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzQnl0ZUFycmF5KGJhc2VWYWx1
ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGJhc2VWYWx1
ZS5nZXQoZXhlYywgaSk7CisgICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhl
Yywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgcmV0dXJuIGJh
c2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVydHkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZ2V0X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfZ2V0X2J5X3Zh
bCwgZ2V0QnlWYWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRf
YnlfdmFsKQoreworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gTExJTlRfT1AoMikuanNWYWx1ZSgp
OworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAgICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6
Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYyk7CisgICAgICAgIExMSU5UX0NIRUNLX0VY
Q0VQVElPTigpOworICAgICAgICBMTElOVF9PUCgyKSA9IGFyZ3VtZW50czsKKyAgICAgICAgZXhl
Yy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5k
KSkgPSBhcmd1bWVudHM7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChl
eGVjLCBhcmd1bWVudHMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpCit7CisgICAgTExJTlRfUkVUVVJOKGdldEJ5
VmFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFsKQoreworICAgIEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3Vi
c2NyaXB0ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExM
SU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0Lmlz
VUludDMyKCkpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsK
KyAgICAgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUpKSB7CisgICAgICAgICAgICBKU0FycmF5
KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYgKGpzQXJyYXkt
PmNhblNldEluZGV4KGkpKQorICAgICAgICAgICAgICAgIGpzQXJyYXktPnNldEluZGV4KGdsb2Jh
bERhdGEsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBKU0Fy
cmF5OjpwdXRCeUluZGV4KGpzQXJyYXksIGV4ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIExM
SU5UX0VORCgpOworICAgICAgICB9CisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1
ZSkKKyAgICAgICAgICAgICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4
KGkpKSB7CisgICAgICAgICAgICBKU0J5dGVBcnJheSoganNCeXRlQXJyYXkgPSBhc0J5dGVBcnJh
eShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkgeworICAgICAg
ICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5hc0ludDMyKCkpOworICAg
ICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5k
ZXgoaSwgdmFsdWUuYXNOdW1iZXIoKSk7CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpLCB2
YWx1ZSk7CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVy
IHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwor
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGV4
ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgYmFzZVZhbHVlLnB1dChleGVj
LCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFz
ZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIAorICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisgICAgYm9vbCBjb3VsZERlbGV0ZTsKKyAgICAK
KyAgICB1aW50MzJfdCBpOworICAgIGlmIChzdWJzY3JpcHQuZ2V0VUludDMyKGkpKQorICAgICAg
ICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5
QnlJbmRleChiYXNlT2JqZWN0LCBleGVjLCBpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vi
c2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRh
YmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMsIHByb3BlcnR5KTsKKyAgICB9
CisgICAgCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJp
Y3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5h
YmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihjb3VsZERlbGV0ZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5
X2luZGV4KQoreworICAgIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnB1dChleGVjLCBwY1syXS51
Lm9wZXJhbmQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIpCit7CisgICAgQVNTRVJUKExM
SU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFzZU9iaiA9
IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRlbnRpZmllciYgaWRlbnQg
PSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEFT
U0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgYmFzZU9iai0+bWV0
aG9kVGFibGUoKS0+ZGVmaW5lR2V0dGVyKGJhc2VPYmosIGV4ZWMsIGlkZW50LCBhc09iamVjdChM
TElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpCit7CisgICAgQVNTRVJUKExMSU5UX09QKDEp
LmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0
KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5j
b2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIEFTU0VSVChMTElO
VF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgYmFzZU9iai0+bWV0aG9kVGFibGUo
KS0+ZGVmaW5lU2V0dGVyKGJhc2VPYmosIGV4ZWMsIGlkZW50LCBhc09iamVjdChMTElOVF9PUCgz
KS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2ptcF9zY29wZXMpCit7CisgICAgdW5zaWduZWQgY291bnQgPSBwY1sxXS51Lm9w
ZXJhbmQ7CisgICAgU2NvcGVDaGFpbk5vZGUqIHRtcCA9IGV4ZWMtPnNjb3BlQ2hhaW4oKTsKKyAg
ICB3aGlsZSAoY291bnQtLSkKKyAgICAgICAgdG1wID0gdG1wLT5wb3AoKTsKKyAgICBleGVjLT5z
ZXRTY29wZUNoYWluKHRtcCk7CisgICAgcGMgKz0gcGNbMl0udS5vcGVyYW5kOworICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpCit7CisgICAgTExJ
TlRfQlJBTkNIKG9wX2p0cnVlLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhl
YykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZhbHNlKQoreworICAgIExMSU5U
X0JSQU5DSChvcF9qZmFsc2UsICFMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhl
YykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3MpCit7CisgICAgTExJTlRf
QlJBTkNIKG9wX2psZXNzLCBqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qbmxlc3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzcywgIWpzTGVzczx0cnVl
PihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKQoreworICAgIExMSU5U
X0JSQU5DSChvcF9qZ3JlYXRlciwganNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2puZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyLCAh
anNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygx
KS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpCit7
CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEsIGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5U
X09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pu
bGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
Z3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlcmVxLCBqc0xlc3NFcTxm
YWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1
ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSkKK3sKKyAg
ICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEsICFqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKQoreworICAgIEpTVmFsdWUgc2NydXRp
bmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHNjcnV0aW5lZS5pc0Rv
dWJsZSgpKTsKKyAgICBkb3VibGUgdmFsdWUgPSBzY3J1dGluZWUuYXNEb3VibGUoKTsKKyAgICBp
bnQzMl90IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpOworICAgIGludCBk
ZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlmICh2YWx1ZSA9PSBpbnRWYWx1
ZSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwor
ICAgICAgICBwYyArPSBjb2RlQmxvY2stPmltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZShwY1sxXS51
Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGludFZhbHVlLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9
IGVsc2UKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpCit7CisgICAgSlNWYWx1
ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBpbnQgZGVmYXVsdE9m
ZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAoIXNjcnV0aW5lZS5pc1N0cmluZygpKQor
ICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIGVsc2UgeworICAgICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2RlQmxv
Y2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVl
KGFzU3RyaW5nKHNjcnV0aW5lZSktPnZhbHVlKGV4ZWMpLmltcGwoKSwgZGVmYXVsdE9mZnNldCk7
CisgICAgfQorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bmV3X2Z1bmMpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2so
KTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZQorICAg
ICAgICAgICB8fCAhY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkKKyAgICAgICAgICAg
fHwgZXhlYy0+dW5jaGVja2VkUihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1Zh
bHVlKCkpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGluZyBm
dW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJTlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVuY3Rp
b25EZWNsKHBjWzJdLnUub3BlcmFuZCktPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApCit7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBGdW5jdGlvbkV4ZWN1
dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbMl0udS5vcGVyYW5k
KTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVuY3Rpb24tPm1ha2UoZXhlYywgZXhlYy0+c2Nv
cGVDaGFpbigpKTsKKyAgICAKKyAgICBpZiAoIWZ1bmN0aW9uLT5uYW1lKCkuaXNOdWxsKCkpIHsK
KyAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25TY29wZU9iamVjdCA9IEpTU3Rh
dGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBmdW5jdGlvbi0+bmFtZSgpLCBmdW5jLCBSZWFk
T25seSB8IERvbnREZWxldGUpOworICAgICAgICBmdW5jLT5zZXRTY29wZShleGVjLT5nbG9iYWxE
YXRhKCksIGZ1bmMtPnNjb3BlKCktPnB1c2goZnVuY3Rpb25TY29wZU9iamVjdCkpOworICAgIH0K
KyAgICAKKyAgICBMTElOVF9SRVRVUk4oZnVuYyk7Cit9CisKK3N0YXRpYyBIZWxwZXJSZXR1cm5U
eXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBj
LCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEV4
ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKworICAgIGV4ZWNDYWxsZWUt
PnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRD
b2RlQmxvY2soMCk7CisKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0
YShjYWxsZWUsIGNhbGxEYXRhKTsKKyAgICAKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENh
bGxUeXBlSlMpOworICAgIAorICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVIb3N0KSB7
CisgICAgICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVy
cHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgICAgIH0KKyAg
ICAgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAgICAgcHJpbnRmKCJDYWxsIGNh
bGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNjcmlwdGlvbigpKTsKKyNl
bmRpZgorCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpOworICAgICAg
ICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihleGVj
LCBjYWxsZWUpKTsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0
KTsKKyAgICAKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQ29uc3RydWN0
VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShjYWxsZWUsIGNvbnN0cnVjdERh
dGEpOworICAgIAorICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGVKUyk7
CisgICAgCisgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZUhvc3QpIHsKKyAg
ICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShj
b25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgIExMSU5U
X0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgfQorICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFD
SU5HCisgICAgICAgIHByaW50ZigiQ29uc3RydWN0b3IgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9u
OiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICBBU1NFUlQoY29u
c3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSk7CisgICAgTExJTlRfQ0FMTF9USFJPVyhl
eGVjLCBwYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7Cit9CisK
K2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUs
IEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU1ZhbHVlIGNh
bGxlZUFzVmFsdWUsIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSAwKQoreworICAg
IEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0aW9uKGNhbGxlZUFzVmFs
dWUpOworICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCisgICAgICAgIHJldHVybiBoYW5k
bGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwga2luZCk7CisgICAgCisg
ICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7
CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCkp
OworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7
CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSAwOworICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQor
ICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5h
ZGRyZXNzRm9yQ2FsbCgpOworICAgIGVsc2UgeworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUq
IGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4
ZWN1dGFibGUpOworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUt
PmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29wZSgpLCBraW5kKTsKKyAgICAgICAg
aWYgKGVycm9yKQorICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjQ2FsbGVlLT5jYWxs
ZXJGcmFtZSgpLCBwYywgZXJyb3IpOworICAgICAgICBjb2RlQmxvY2sgPSAmZnVuY3Rpb25FeGVj
dXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICAgICAgQVNTRVJUKGNvZGVC
bG9jayk7CisgICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCisg
ICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2Rl
V2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVQ
dHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVz
c0ZvckNhbGwoKTsKKyAgICB9CisgICAgCisgICAgaWYgKGNhbGxMaW5rSW5mbykgeworICAgICAg
ICBpZiAoY2FsbExpbmtJbmZvLT5pc09uTGlzdCgpKQorICAgICAgICAgICAgY2FsbExpbmtJbmZv
LT5yZW1vdmUoKTsKKyAgICAgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVyID0gZXhlY0NhbGxlZS0+
Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5jYWxsZWUuc2V0KGV4ZWNDYWxs
ZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJs
ZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLnNldChl
eGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4ZWNDYWxsZXItPmNvZGVCbG9jaygpLT5vd25lckV4
ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5tYWNoaW5lQ29kZVRh
cmdldCA9IGNvZGVQdHI7CisgICAgICAgIGlmIChjb2RlQmxvY2spCisgICAgICAgICAgICBjb2Rl
QmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbExpbmtJbmZvKTsKKyAgICB9CisgICAgCisgICAg
TExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJl
c3MoKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKEV4ZWNTdGF0
ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7
CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUuCisg
ICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGlsZSBpdCBpZiBuZWNlc3Nh
cnkuCisgICAgLy8gLSBJZiBwb3NzaWJsZSwgbGluayB0aGUgY2FsbCdzIGlubGluZSBjYWNoZS4K
KyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwg
YW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUg
PSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxs
ZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIAorICAgIGV4ZWNDYWxsZWUtPnNldEFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFuZCk7CisgICAgZXhlY0NhbGxl
ZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAg
IGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIAorICAgIEFTU0VSVChwY1s0
XS51LmNhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywg
a2luZCwgY2FsbGVlQXNWYWx1ZSwgcGNbNF0udS5jYWxsTGlua0luZm8pOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY2FsbCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywg
cGMsIENvZGVGb3JDYWxsKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVj
dCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1Y3Qp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKQoreworICAgIC8v
IFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lIHdoaWxlIHJlc3Bl
Y3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0
byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIFJldHVybiBhIHR1
cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFt
ZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFs
dWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBsb2FkVmFyYXJncygKKyAg
ICAgICAgZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxl
KCksCisgICAgICAgIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSwgcGNbNF0udS5vcGVyYW5kKTsKKyAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihl
eGVjLCBwYyk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6
OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1l
KGV4ZWMpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50
KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90PihwYyArIE9QQ09ERV9MRU5HVEgob3BfY2Fs
bF92YXJhcmdzKSk7CisgICAgCisgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywg
Q29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY2FsbF9ldmFsKQoreworICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QKDEp
LmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNb
M10udS5vcGVyYW5kOworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2Jh
bERhdGEoKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4
ZWMpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0g
Y2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3Bl
Q2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMoYml0d2lzZV9jYXN0PEluc3Ry
dWN0aW9uKj4oJmxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgZXhlY0NhbGxlZS0+
c2V0Q29kZUJsb2NrKDApOworICAgIGV4ZWMtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpBcmd1
bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90PihwYyArIE9QQ09ERV9MRU5H
VEgob3BfY2FsbF9ldmFsKSk7CisgICAgCisgICAgaWYgKCFpc0hvc3RGdW5jdGlvbihjYWxsZWVB
c1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpCisgICAgICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0Nh
bGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKKyAgICAKKyAgICBnbG9iYWxE
YXRhLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBldmFsKGV4ZWNDYWxsZWUpOworICAgIExMSU5UX0NB
TExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0
Q2FsbFJldHVyblZhbHVlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29m
Zl9hY3RpdmF0aW9uKQoreworICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxs
U2NvcGVDaGFpbigpKTsKKyAgICBKU1ZhbHVlIGFjdGl2YXRpb25WYWx1ZSA9IExMSU5UX09QKDEp
LmpzVmFsdWUoKTsKKyAgICBpZiAoIWFjdGl2YXRpb25WYWx1ZSkgeworICAgICAgICBpZiAoSlNW
YWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNb
Ml0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMtPmNvZGVC
bG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyh2KS0+
dGVhck9mZihleGVjKTsKKyAgICAgICAgfQorICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9Cisg
ICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0aW9uKGFjdGl2YXRpb25WYWx1
ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGlm
IChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rl
cihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpCisgICAgICAgIGFzQXJndW1lbnRzKHYpLT5k
aWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGFjdGl2YXRpb24pOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYXJn
dW1lbnRzKQoreworICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygp
ICYmICFleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBhc0Fy
Z3VtZW50cyhleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sx
XS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpLT50ZWFyT2ZmKGV4ZWMpOworICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KQoreworICAgIExMSU5UX1JF
VFVSTihqc1N0cmluZyhleGVjLCAmTExJTlRfT1AoMiksIHBjWzNdLnUub3BlcmFuZCkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZlKQoreworICAgIExMSU5UX1JF
VFVSTihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1ByaW1pdGl2ZShleGVjKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKQoreworICAgIEpTVmFsdWUgdiA9IExM
SU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAodi5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7Cisg
ICAgICAgIHBjICs9IHBjWzVdLnUub3BlcmFuZDsKKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAg
fQorICAgIAorICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKKyAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVjdHVyZSgpOworICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBzdHJ1Y3R1cmUtPmVudW1lcmF0aW9uQ2FjaGUo
KTsKKyAgICBpZiAoIWpzUHJvcGVydHlOYW1lSXRlcmF0b3IgfHwganNQcm9wZXJ0eU5hbWVJdGVy
YXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4oKSAhPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWlu
KGV4ZWMpKQorICAgICAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8pOworICAgIAorICAgIExMSU5UX09QKDEpID0gSlNWYWx1
ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKKyAgICBMTElOVF9PUCgyKSA9IEpTVmFsdWUobyk7
CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rlcjo6d2l0aEludCgwKTsKKyAgICBMTElOVF9PUCg0
KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPnNpemUoKSk7Cisg
ICAgCisgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcG5hbWVzKTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUpCit7CisgICAg
SlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChMTElOVF9PUCgyKS5qc1ZhbHVlKCkpOworICAgIEpT
U3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3RyaW5nKExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAg
aWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgcHJvcGVydHktPnZh
bHVlKGV4ZWMpKSkpIHsKKyAgICAgICAgLy8gR28gdG8gdGFyZ2V0LgorICAgICAgICBwYyArPSBw
Y1s2XS51Lm9wZXJhbmQ7CisgICAgfSAvLyBFbHNlLCBkb24ndCBjaGFuZ2UgdGhlIFBDLCBzbyB0
aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxvb3AuCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKQoreworICAgIEpTVmFsdWUgdiA9IExMSU5U
X09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogbyA9IHYudG9PYmplY3QoZXhlYyk7Cisg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBvOwor
ICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKG8pKTsKKyAg
ICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9z
Y29wZSkKK3sKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cG9w
KCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVz
aF9uZXdfc2NvcGUpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKKyAgICBKU09iamVjdCogc2NvcGUgPSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUo
ZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCksIExMSU5UX09QKDMp
LmpzVmFsdWUoKSwgRG9udERlbGV0ZSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5z
Y29wZUNoYWluKCktPnB1c2goc2NvcGUpKTsKKyAgICBMTElOVF9SRVRVUk4oc2NvcGUpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpCit7CisgICAgTExJTlRfVEhST1coTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhy
b3dfcmVmZXJlbmNlX2Vycm9yKQoreworICAgIExMSU5UX1RIUk9XKGNyZWF0ZVJlZmVyZW5jZUVy
cm9yKGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVidWcpCit7CisgICAgaW50
IGRlYnVnSG9va0lEID0gcGNbMV0udS5vcGVyYW5kOworICAgIGludCBmaXJzdExpbmUgPSBwY1sy
XS51Lm9wZXJhbmQ7CisgICAgaW50IGxhc3RMaW5lID0gcGNbM10udS5vcGVyYW5kOworICAgIAor
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+ZGVidWcoZXhlYywgc3RhdGljX2Nh
c3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAg
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxl
X3dpbGxfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Uo
KSktPndpbGxFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQor
eworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSgpKS0+ZGlkRXhlY3V0
ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRIZWxwZXJzX2gKKyNkZWZpbmUgTExJbnRIZWxw
ZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKwor
dHlwZWRlZiBpbnQ2NF90IEhlbHBlclJldHVyblR5cGU7CisKK2V4dGVybiAiQyIgSGVscGVyUmV0
dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50
IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxs
aW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwg
aW50IG9wZXJhbmQpOworCisjZGVmaW5lIExMSU5UX0hFTFBFUl9ERUNMKG5hbWUpIFwKKyAgICBl
eHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfIyNuYW1lKEV4ZWNTdGF0ZSogZXhlYywg
SW5zdHJ1Y3Rpb24qIHBjKQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZSk7CitM
TElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCk7CitMTElO
VF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpOworTExJTlRfSEVMUEVS
X0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KHRyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2UpOworTExJTlRfSEVMUEVS
X0RFQ0woZW50cnlfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJp
dHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3NyKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKHJlcGxhY2UpOworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVj
ayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Ny
ZWF0ZV9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25ld19vYmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJh
eSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZlcik7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9s
ZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2luYyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcHJlX2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9pbmMpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl90b19qc251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9kaXYpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbHNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2JpdGFuZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3IpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2JpdHhvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5
cGVvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19udW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZyk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19mdW5jdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4pOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Jlc29sdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVf
c2tpcCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVz
b2x2ZV93aXRoX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90
aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfaWQpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wdXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X2J5X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFsKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wdXRfYnlfaW5kZXgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2ptcF9zY29wZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2psZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2pncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0
ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2pubGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVx
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfc3dpdGNoX2ltbSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNo
X2NoYXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXdfZnVuY19leHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2Fs
bF92YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
c3RyY2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X25leHRfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHVzaF9uZXdfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2RlYnVnKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxl
X3dpbGxfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCk7
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5U
KQorCisjZW5kaWYgLy8gTExJbnRIZWxwZXJzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisjZGVm
aW5lIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgor
I2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisK
KyNpZiBDUFUoWDg2KQorI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMQorI2Vsc2UKKyNkZWZpbmUg
T0ZGTElORV9BU01fWDg2IDAKKyNlbmRpZgorCisjaWYgQ1BVKEFSTXY3KQorI2RlZmluZSBPRkZM
SU5FX0FTTV9BUk12NyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCisjZW5k
aWYKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VO
QUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMAorI2Vu
ZGlmCisKKyNpZiBDUFUoQklHX0VORElBTikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElB
TiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDAKKyNlbmRpZgorCisj
aWYgRU5BQkxFKExMSU5UX09TUl9UT19KSVQpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFC
TEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgor
CisjaWYgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VU
SU9OX1RSQUNJTkcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJ
TkcgMAorI2VuZGlmCisKKyNlbmRpZiAvLyBMTEludE9mZmxpbmVBc21Db25maWdfaApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAi
SklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRl
ICJKU1R5cGVJbmZvLmgiCisjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgorI2luY2x1ZGUg
Ikp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1
ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCisjaW5jbHVkZSAi
U2NvcGVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVy
ZUNoYWluLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSW1wbC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBPRkZMSU5FX0FTTV9P
RkZTRVRPRihjbGF6eiwgZmllbGQpIE9CSkVDVF9PRkZTRVRPRihjbGF6eiwgZmllbGQpCisKK2Ns
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkKiBkdW1teSgpOworfTsKKworY29uc3QgdW5zaWduZWQqIExMSW50T2Zmc2V0c0V4dHJh
Y3Rvcjo6ZHVtbXkoKQoreworI2luY2x1ZGUgIkxMSW50RGVzaXJlZE9mZnNldHMuaCIKKyAgICBy
ZXR1cm4gZXh0cmFjdG9yVGFibGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCitpbnQgbWFp
bihpbnQsIGNoYXIqKikKK3sKKyAgICAvLyBPdXQgb2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRpb24s
IG1ha2Ugc3VyZSB0aGF0IExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSBpcyBsaXZlLAor
ICAgIC8vIGFuZCB0aGUgZXh0cmFjdG9yVGFibGUgaXMgbGl2ZSwgdG9vLgorICAgIHByaW50Zigi
JXBcbiIsIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpKTsKKyAgICByZXR1cm4g
MDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5r
cy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkxMSW50VGh1bmtzLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJKU0ludGVy
ZmFjZUpJVC5oIgorI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbElu
dGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitzdGF0
aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSwgdm9pZCAoKnRhcmdldCkoKSkKK3sKKyAgICBKU0ludGVyZmFjZUpJ
VCBqaXQ7CisgICAgCisgICAgLy8gRklYTUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5
IHRvIGRvIGl0IG9uIFg4NiwgYnV0IEknbSBub3Qgc3VyZSBJIGNhcmUuCisgICAgaml0Lm1vdmUo
SlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQp
KSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6
cmVnVDApOworICAgIAorICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZq
aXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIHBhdGNoQnVmZmVyLmZpbmFsaXplQ29k
ZSgpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVu
a0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3By
b2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0
RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0
dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3RfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rp
b25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
byhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKTsK
K30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG8oZ2xvYmFsRGF0YSwgbGxpbnRfZXZhbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxs
aW50X3Byb2dyYW1fcHJvbG9ndWUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQK
KworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludFRo
dW5rc19oCisjZGVmaW5lIExMSW50VGh1bmtzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0dsb2JhbERhdGE7CisKK25hbWVzcGFj
ZSBMTEludCB7CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRo
dW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0
aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3Io
SlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5U
KQorCisjZW5kaWYgLy8gTExJbnRUaHVua3NfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyMzgwIEBACisjIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisKKyMgQ3Jhc2ggY291cnNlIG9uIHRoZSBsYW5ndWFnZSB0aGF0IHRo
aXMgaXMgd3JpdHRlbiBpbiAod2hpY2ggSSBqdXN0IGNhbGwKKyMgImFzc2VtYmx5IiBldmVuIHRo
b3VnaCBpdCdzIG1vcmUgdGhhbiB0aGF0KToKKyMKKyMgLSBNb3N0bHkgZ2FzLXN0eWxlIG9wZXJh
bmQgb3JkZXJpbmcuIFRoZSBsYXN0IG9wZXJhbmQgdGVuZHMgdG8gYmUgdGhlCisjICAgZGVzdGlu
YXRpb24uIFNvICJhIDo9IGIiIGlzIHdyaXR0ZW4gYXMgIm1vdiBiLCBhIi4gQnV0IHVubGlrZSBn
YXMsCisjICAgY29tcGFyaXNvbnMgYXJlIGluLW9yZGVyLCBzbyAiaWYgKGEgPCBiKSIgaXMgd3Jp
dHRlbiBhcworIyAgICJiaWx0IGEsIGIsIC4uLiIuCisjCisjIC0gImIiID0gYnl0ZSwgImgiID0g
MTYtYml0IHdvcmQsICJpIiA9IDMyLWJpdCB3b3JkLCAicCIgPSBwb2ludGVyLgorIyAgIEN1cnJl
bnRseSB0aGlzIGlzIGp1c3QgMzItYml0IHNvICJpIiBhbmQgInAiIGFyZSBpbnRlcmNoYW5nZWFi
bGUKKyMgICBleGNlcHQgd2hlbiBhbiBvcCBzdXBwb3J0cyBvbmUgYnV0IG5vdCB0aGUgb3RoZXIu
CisjCisjIC0gSW4gZ2VuZXJhbCwgdmFsaWQgb3BlcmFuZHMgZm9yIG1hY3JvIGludm9jYXRpb25z
IGFuZCBpbnN0cnVjdGlvbnMgYXJlCisjICAgcmVnaXN0ZXJzIChlZyAidDAiKSwgYWRkcmVzc2Vz
IChlZyAiNFt0MF0iKSwgYmFzZS1pbmRleCBhZGRyZXNzZXMKKyMgICAoZWcgIjdbdDAsIHQxLCAy
XSIpLCBhYnNvbHV0ZSBhZGRyZXNzZXMgKGVnICIweGEwMDAwMDAwW10iKSwgb3IgbGFiZWxzCisj
ICAgKGVnICJfZm9vIiBvciAiLmZvbyIpLiBNYWNybyBpbnZvY2F0aW9ucyBjYW4gYWxzbyB0YWtl
IGFub255bW91cworIyAgIG1hY3JvcyBhcyBvcGVyYW5kcy4gSW5zdHJ1Y3Rpb25zIGNhbm5vdCB0
YWtlIGFub255bW91cyBtYWNyb3MuCisjCisjIC0gTGFiZWxzIG11c3QgaGF2ZSBuYW1lcyB0aGF0
IGJlZ2luIHdpdGggZWl0aGVyICJfIiBvciAiLiIuICBBICIuIiBsYWJlbAorIyAgIGlzIGxvY2Fs
IGFuZCBnZXRzIHJlbmFtZWQgYmVmb3JlIGNvZGUgZ2VuIHRvIG1pbmltaXplIG5hbWVzcGFjZQor
IyAgIHBvbGx1dGlvbi4gQSAiXyIgbGFiZWwgaXMgYW4gZXh0ZXJuIHN5bWJvbCAoaS5lLiAiLmds
b2JsIikuIFRoZSAiXyIKKyMgICBtYXkgb3IgbWF5IG5vdCBiZSByZW1vdmVkIGR1cmluZyBjb2Rl
IGdlbiBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgYXNtCisjICAgY29udmVudGlvbnMgZm9yIEMg
bmFtZSBtYW5nbGluZyBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtIG1hbmRhdGUgYSAiXyIKKyMgICBw
cmVmaXguCisjCisjIC0gQSAibWFjcm8iIGlzIGEgbGFtYmRhIGV4cHJlc3Npb24sIHdoaWNoIG1h
eSBiZSBlaXRoZXIgYW5vbnltb3VzIG9yCisjICAgbmFtZWQuIEJ1dCB0aGlzIGhhcyBjYXZlYXRz
LiAibWFjcm8iIGNhbiB0YWtlIHplcm8gb3IgbW9yZSBhcmd1bWVudHMsCisjICAgd2hpY2ggbWF5
IGJlIG1hY3JvcyBvciBhbnkgdmFsaWQgb3BlcmFuZHMsIGJ1dCBpdCBjYW4gb25seSByZXR1cm4K
KyMgICBjb2RlLiBCdXQgeW91IGNhbiBkbyBUdXJpbmctY29tcGxldGUgdGhpbmdzIHZpYSBjb250
aW51YXRpb24gcGFzc2luZworIyAgIHN0eWxlOiAibWFjcm8gZm9vIChhLCBiKSBiKGEpIGVuZCBm
b28oZm9vLCBmb28pIi4gQWN0dWFsbHksIGRvbid0IGRvCisjICAgdGhhdCwgc2luY2UgeW91J2xs
IGp1c3QgY3Jhc2ggdGhlIGFzc2VtYmxlci4KKyMKKyMgLSBBbiAiaWYiIGlzIGEgY29uZGl0aW9u
YWwgb24gc2V0dGluZ3MuIEFueSBpZGVudGlmaWVyIHN1cHBsaWVkIGluIHRoZQorIyAgIHByZWRp
Y2F0ZSBvZiBhbiAiaWYiIGlzIGFzc3VtZWQgdG8gYmUgYSAjZGVmaW5lIHRoYXQgaXMgYXZhaWxh
YmxlCisjICAgZHVyaW5nIGNvZGUgZ2VuLiBTbyB5b3UgY2FuJ3QgdXNlICJpZiIgZm9yIGNvbXB1
dGF0aW9uIGluIGEgbWFjcm8sIGJ1dAorIyAgIHlvdSBjYW4gdXNlIGl0IHRvIHNlbGVjdCBkaWZm
ZXJlbnQgcGllY2VzIG9mIGNvZGUgZm9yIGRpZmZlcmVudAorIyAgIHBsYXRmb3Jtcy4KKyMKKyMg
LSBBcmd1bWVudHMgdG8gbWFjcm9zIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgcmF0aGVyIHRoYW4g
ZHluYW1pYyBzY29waW5nLgorIyAgIENvbnN0J3MgYWxzbyBmb2xsb3cgbGV4aWNhbCBzY29waW5n
IGFuZCBtYXkgb3ZlcnJpZGUgKGhpZGUpIGFyZ3VtZW50cworIyAgIG9yIG90aGVyIGNvbnN0cy4g
QWxsIHZhcmlhYmxlcyAoYXJndW1lbnRzIGFuZCBjb25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAg
IHRvIG9wZXJhbmRzLiBBZGRpdGlvbmFsbHksIGFyZ3VtZW50cyAoYnV0IG5vdCBjb25zdGFudHMp
IGNhbiBiZSBib3VuZAorIyAgIHRvIG1hY3Jvcy4KKworCisjIFRoZXNlIGRlY2xhcmF0aW9ucyBt
dXN0IG1hdGNoIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oLgorY29uc3QgQ2FsbEZyYW1lSGVh
ZGVyU2l6ZSA9IDQ4Citjb25zdCBBcmd1bWVudENvdW50ID0gLTQ4Citjb25zdCBDYWxsZXJGcmFt
ZSA9IC00MAorY29uc3QgQ2FsbGVlID0gLTMyCitjb25zdCBTY29wZUNoYWluID0gLTI0Citjb25z
dCBSZXR1cm5QQyA9IC0xNgorY29uc3QgQ29kZUJsb2NrID0gLTgKKworY29uc3QgVGhpc0FyZ3Vt
ZW50T2Zmc2V0ID0gLUNhbGxGcmFtZUhlYWRlclNpemUgLSA4CisKKyMgRGVjbGFyZSBzb21lIGFs
aWFzZXMgZm9yIHRoZSByZWdpc3RlcnMgd2Ugd2lsbCB1c2UuCitjb25zdCBQQyA9IHQ0CisKKyMg
T2Zmc2V0cyBuZWVkZWQgZm9yIHJlYXNvbmluZyBhYm91dCB2YWx1ZSByZXByZXNlbnRhdGlvbi4K
K2lmIEJJR19FTkRJQU4KKyAgICBjb25zdCBUYWdPZmZzZXQgPSAwCisgICAgY29uc3QgUGF5bG9h
ZE9mZnNldCA9IDQKK2Vsc2UKKyAgICBjb25zdCBUYWdPZmZzZXQgPSA0CisgICAgY29uc3QgUGF5
bG9hZE9mZnNldCA9IDAKK2VuZAorCisjIFZhbHVlIHJlcHJlc2VudGF0aW9uIGNvbnN0YW50cy4K
K2NvbnN0IEludDMyVGFnID0gLTEKK2NvbnN0IEJvb2xlYW5UYWcgPSAtMgorY29uc3QgTnVsbFRh
ZyA9IC0zCitjb25zdCBVbmRlZmluZWRUYWcgPSAtNAorY29uc3QgQ2VsbFRhZyA9IC01Citjb25z
dCBFbXB0eVZhbHVlVGFnID0gLTYKK2NvbnN0IERlbGV0ZWRWYWx1ZVRhZyA9IC03Citjb25zdCBM
b3dlc3RUYWcgPSBEZWxldGVkVmFsdWVUYWcKKworIyBUeXBlIGNvbnN0YW50cy4KK2NvbnN0IFN0
cmluZ1R5cGUgPSA1Citjb25zdCBPYmplY3RUeXBlID0gMTAKKworIyBUeXBlIGZsYWdzIGNvbnN0
YW50cy4KK2NvbnN0IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxCitjb25zdCBJbXBsZW1lbnRz
SGFzSW5zdGFuY2UgPSAyCitjb25zdCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID0gOAor
CisjIEhlYXAgYWxsb2NhdGlvbiBjb25zdGFudHMuCitjb25zdCBKU0ZpbmFsT2JqZWN0U2l6ZUNs
YXNzSW5kZXggPSAzCisKKyMgQnl0ZWNvZGUgb3BlcmFuZCBjb25zdGFudHMuCitjb25zdCBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDAKKworIyBDb2RlIHR5cGUgY29uc3Rh
bnRzLgorY29uc3QgR2xvYmFsQ29kZSA9IDAKK2NvbnN0IEV2YWxDb2RlID0gMQorY29uc3QgRnVu
Y3Rpb25Db2RlID0gMgorCisjIFRoZSBpbnRlcnByZXRlciBzdGVhbHMgdGhlIHRhZyB3b3JkIG9m
IHRoZSBhcmd1bWVudCBjb3VudC4KK2NvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0CisKKyMgVGhpcyBtdXN0IG1hdGNoIHd0Zi9WZWN0b3IuaC4KK2NvbnN0IFZl
Y3RvclNpemVPZmZzZXQgPSAwCitjb25zdCBWZWN0b3JCdWZmZXJPZmZzZXQgPSA0CisKKyMgU3Ry
aW5nIGZsYWdzLgorY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDY0CisKKyMgVXRpbGl0aWVz
CittYWNybyBjcmFzaCgpCisgICAgc3RvcmVpIDAsIDB4YmJhZGJlZWZbXQorICAgIG1vdmUgMCwg
dDAKKyAgICBjYWxsIHQwCitlbmQKKworbWFjcm8gYXNzZXJ0KGFzc2VydGlvbikKKyAgICBpZiBB
U1NFUlRfRU5BQkxFRAorICAgICAgICBhc3NlcnRpb24oLm9rKQorICAgICAgICBjcmFzaCgpCisg
ICAgLm9rOgorICAgIGVuZAorZW5kCisKK21hY3JvIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbChkZXN0aW5hdGlvblJlZ2lzdGVyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgbHIs
IGRlc3RpbmF0aW9uUmVnaXN0ZXIKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9wIGRlc3RpbmF0
aW9uUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKworbWFj
cm8gcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oc291cmNlUmVnaXN0ZXIpCisgICAg
aWYgQVJNdjcKKyAgICAgICAgbW92ZSBzb3VyY2VSZWdpc3RlciwgbHIKKyAgICBlbHNpZiBYODYK
KyAgICAgICAgcHVzaCBzb3VyY2VSZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAg
ICBlbmQKK2VuZAorCittYWNybyBkaXNwYXRjaChhZHZhbmNlKQorICAgIGFkZHAgYWR2YW5jZSAq
IDQsIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEJyYW5jaFdpdGhPZmZz
ZXQocGNPZmZzZXQpCisgICAgbHNoaWZ0aSAyLCBwY09mZnNldAorICAgIGFkZHAgcGNPZmZzZXQs
IFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEJyYW5jaChwY09mZnNldCkK
KyAgICBsb2FkaSBwY09mZnNldCwgdDAKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDAp
CitlbmQKKworbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIGxvYWRpIEFyZ3VtZW50Q291
bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGNDYWxs
MihmdW5jdGlvbiwgYXJnMSwgYXJnMikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGFyZzEs
IHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBh
cmcxLCAwCisgICAgICAgIHBva2UgYXJnMiwgMQorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAg
ICBlbmQKKyAgICBjYWxsIGZ1bmN0aW9uCitlbmQKKworIyBUaGlzIGJhcmVseSB3b3Jrcy4gYXJn
MyBhbmQgYXJnNCBzaG91bGQgcHJvYmFibHkgYmUgaW1tZWRpYXRlcy4KK21hY3JvIGNDYWxsNChm
dW5jdGlvbiwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCkKKyAgICBpZiBBUk12NworICAgICAgICBt
b3ZlIGFyZzEsIHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICAgICAgbW92ZSBhcmczLCB0
MgorICAgICAgICBtb3ZlIGFyZzQsIHQzCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJn
MSwgMAorICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICAgICAgcG9rZSBhcmczLCAyCisgICAgICAg
IHBva2UgYXJnNCwgMworICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKKyAgICBjYWxs
IGZ1bmN0aW9uCitlbmQKKworbWFjcm8gY2FsbEhlbHBlcihoZWxwZXIpCisgICAgY0NhbGwyKGhl
bHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisK
KyMgRGVidWdnaW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBsaWtlIHRvIHByaW50IGFuIG9wZXJhbmQg
aW4gdGhlIGluc3RydWN0aW9uIHN0cmVhbS4gZnJvbVdoZXJlCisjIHNob3VsZCBiZSBhbiBpbW1l
ZGlhdGUgaW50ZWdlciAtIGFueSBpbnRlZ2VyIHlvdSBsaWtlOyB1c2UgaXQgdG8gaWRlbnRpZnkg
dGhlIHBsYWNlIHlvdSdyZQorIyBkZWJ1Z2dpbmcgZnJvbS4gb3BlcmFuZCBzaG91bGQgbGlrZXdp
c2UgYmUgYW4gaW1tZWRpYXRlLCBhbmQgc2hvdWxkIGlkZW50aWZ5IHRoZSBvcGVyYW5kCisjIGlu
IHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0geW91J2QgbGlrZSB0byBwcmludCBvdXQuCittYWNybyB0
cmFjZU9wZXJhbmQoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2Vf
b3BlcmFuZCwgY2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisg
ICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxp
a2UgdG8gcHJpbnQgdGhlIHZhbHVlIG9mIGFuIG9wZXJhbmQgaW4gdGhlIGluc3RydWN0aW9uCisj
IHN0cmVhbS4gU2FtZSBhcyB0cmFjZU9wZXJhbmQoKSwgYnV0IGFzc3VtZXMgdGhhdCB0aGUgb3Bl
cmFuZCBpcyBhIHJlZ2lzdGVyLCBhbmQgcHJpbnRzIGl0cworIyB2YWx1ZS4KK21hY3JvIHRyYWNl
VmFsdWUoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2VfdmFsdWUs
IGNmciwgUEMsIGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUg
dDEsIGNmcgorZW5kCisKK21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBpZiBFWEVDVVRJT05f
VFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkKKyAgICBlbmQKK2VuZAor
CisjIENhbGwgYSBoZWxwZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3JvIGNhbGxDYWxsSGVscGVy
KGFkdmFuY2UsIGhlbHBlciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDLCB0MAor
ICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgY0NhbGwy
KGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBhY3Rpb24odDApCitlbmQK
KworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikKKyAgICBjYWxsQ2FsbEhl
bHBlcigKKyAgICAgICAgYWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAorICAgICAgICBtYWNybyAo
Y2FsbGVlKQorICAgICAgICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAgICAgIGRpc3BhdGNoQWZ0
ZXJDYWxsKCkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVQoaW5j
cmVtZW50LCBhY3Rpb24pCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQwCisgICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENvZGVCbG9jazo6bV9sbGlu
dEV4ZWN1dGVDb3VudGVyW3QwXSwgLmNvbnRpbnVlCisgICAgICAgIGFjdGlvbigpCisgICAgLmNv
bnRpbnVlOgorICAgIGVuZAorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkK
KyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxLAorICAgICAgICBtYWNybyAoKQorICAg
ICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICAg
ICAgICAgIGNDYWxsMihfbGxpbnRfbG9vcF9vc3IsIGNmciwgUEMpCisgICAgICAgICAgICBtb3Zl
IHQxLCBjZnIKKyAgICAgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgICAgICBqbXAg
dDAKKyAgICAgICAgLnJlY292ZXI6CisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsg
VGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRj
aFRvSklURm9yRXBpbG9ndWUoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEwLAor
ICAgICAgICBtYWNybyAoKQorICAgICAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVwbGFjZSkK
KyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGFzc2VydE5vdENvbnN0YW50KGluZGV4KQorICAg
IGFzc2VydChtYWNybyAob2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
LCBvayBlbmQpCitlbmQKKworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZl
cmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENvbnN0
YW50T3JWYXJpYWJsZShpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4
XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJz
ICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBh
IGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1
YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9h
ZHAgVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9m
ZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXgg
YW5kIHBheWxvYWQgbWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLiBJbmRleCBtYXkgYmUgY2xvYmJl
cmVkLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9h
ZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3Rh
bnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25z
dGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFnCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3RhZ10sIHRhZworICAg
ICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2
YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwg
MyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8
PCAzLgorICAgIGxzaGlmdGkgMywgaW5kZXgKKyAgICBhZGRwIGluZGV4LCB0YWcKKyAgICBsb2Fk
cCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQKKyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwg
dGFnCisuZG9uZToKK2VuZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRh
Z0N1c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0
W2NmciwgaW5kZXgsIDhdKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0s
IHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyAr
IFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBi
aXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFs
IHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIHRhZ0No
ZWNrKFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0pCisgICAgbG9hZHAgUGF5bG9hZE9mZnNl
dFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5k
IHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QgbXV0YXRl
ZC4gVXNlCisjIHRoaXMgaWYgeW91IGtub3cgd2hhdCB0aGUgdGFnIG9mIHRoZSB2YXJpYWJsZSBz
aG91bGQgYmUuIERvaW5nIHRoZSB0YWcKKyMgdGVzdCBhcyBwYXJ0IG9mIGxvYWRpbmcgdGhlIHZh
cmlhYmxlIHJlZHVjZXMgcmVnaXN0ZXIgdXNlLCBidXQgbWF5IG5vdAorIyBiZSBmYXN0ZXIgdGhh
biBkb2luZyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlIGZvbGxvd2VkIGJ5IGEgYnJhbmNoIG9uIHRo
ZQorIyB0YWcuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhw
ZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRUYWdDdXN0b20oCisgICAgICAgIGluZGV4LAorICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBi
aW5lcSBhY3R1YWxUYWcsIGV4cGVjdGVkVGFnLCBzbG93IGVuZCwKKyAgICAgICAgcGF5bG9hZCkK
K2VuZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZChpbmRl
eCwgcGF5bG9hZCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgK
KyAgICAgICAgaW5kZXgsCisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGVuZCwKKyAgICAgICAg
cGF5bG9hZCkKK2VuZAorCittYWNybyB3cml0ZUJhcnJpZXIodGFnLCBwYXlsb2FkKQorICAgICMg
Tm90aGluZyB0byBkbywgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGdlbmVyYXRpb25hbCBvciBpbmNy
ZW1lbnRhbCBjb2xsZWN0b3IuCitlbmQKKworbWFjcm8gdmFsdWVQcm9maWxlKHRhZywgcGF5bG9h
ZCwgcHJvZmlsZSkKKyAgICBzdG9yZWkgdGFnLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRh
Z09mZnNldFtwcm9maWxlXQorICAgIHN0b3JlaSBwYXlsb2FkLCBWYWx1ZVByb2ZpbGU6Om1fYnVj
a2V0cyArIFBheWxvYWRPZmZzZXRbcHJvZmlsZV0KK2VuZAorCisKKyMgSW5kaWNhdGUgdGhlIGJl
Z2lubmluZyBvZiBMTEludC4KK19sbGludF9iZWdpbjoKKyAgICBjcmFzaCgpCisKKworIyBFbnRy
eXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlcgorCittYWNybyBmdW5jdGlvbkZvckNhbGxDb2Rl
QmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdl
dFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lz
dGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29k
ZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFj
cm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisg
ICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5jdGlv
bjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2Fk
cCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ29uc3RydWN0W3RhcmdldFJlZ2lz
dGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja0dl
dHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFyZ2V0UmVn
aXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3Rl
cikKKyAgICBzdG9yZXAgc291cmNlUmVnaXN0ZXIsIENvZGVCbG9ja1tjZnJdCitlbmQKKworbWFj
cm8gbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCisgICAgIyBOb3Ro
aW5nIHRvIGRvIQorZW5kCisKKyMgRG8gdGhlIGJhcmUgbWluaW11bSByZXF1aXJlZCB0byBleGVj
dXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBsZWF2ZSB0aGUgQ29kZUJsb2NrKgorIyBpbiB0MS4g
TWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1IuCittYWNybyBwcm9sb2d1ZShjb2Rl
QmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NySGVscGVyLCB0cmFjZUhlbHBlcikKKyAg
ICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpCisgICAgCisgICAgIyBTZXQgdXAg
dGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1IuCisgICAgc3RvcmVwIHQy
LCBSZXR1cm5QQ1tjZnJdCisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcKKyAgICAgICAgY2FsbEhl
bHBlcih0cmFjZUhlbHBlcikKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCisgICAg
aWYgSklUX0VOQUJMRUQKKyAgICAgICAgYmFkZGlzIDUsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1
dGVDb3VudGVyW3QxXSwgLmNvbnRpbnVlCisgICAgICAgIGNDYWxsMihvc3JIZWxwZXIsIGNmciwg
UEMpCisgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAgICBidHB6IHQwLCAucmVjb3ZlcgorICAg
ICAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgICAgICByZXN0b3JlUmV0dXJuQWRkcmVz
c0JlZm9yZVJldHVybih0MikKKyAgICAgICAgam1wIHQwCisgICAgLnJlY292ZXI6CisgICAgICAg
IGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICAuY29udGludWU6CisgICAgZW5kCisgICAgY29kZUJs
b2NrU2V0dGVyKHQxKQorICAgIAorICAgICMgU2V0IHVwIHRoZSBQQy4KKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3Ry
dWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworZW5k
CisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9s
b2d1ZSgpIGxlYXZlcyBiZWhpbmQuCisjIE11c3QgY2FsbCBkaXNwYXRjaCgwKSBhZnRlciBjYWxs
aW5nIHRoaXMuCittYWNybyBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTa2lwKQor
ICAgICMgUHJvZmlsZSB0aGUgYXJndW1lbnRzLiBVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIGNo
b2ljZSBidXQgdG8gZG8gdGhpcy4gVGhpcworICAgICMgY29kZSBpcyBwcmV0dHkgaG9ycmVuZG91
cyBiZWNhdXNlIG9mIHRoZSBkaWZmZXJlbmNlIGluIG9yZGVyaW5nIGJldHdlZW4KKyAgICAjIGFy
Z3VtZW50cyBhbmQgdmFsdWUgcHJvZmlsZXMsIHRoZSBkZXNpcmUgdG8gaGF2ZSBhIHNpbXBsZSBs
b29wLWRvd24tdG8temVybworICAgICMgbG9vcCwgYW5kIHRoZSBkZXNpcmUgdG8gdXNlIG9ubHkg
dGhyZWUgcmVnaXN0ZXJzIHNvIGFzIHRvIHByZXNlcnZlIHRoZSBQQyBhbmQKKyAgICAjIHRoZSBj
b2RlIGJsb2NrLiBJdCBpcyBsaWtlbHkgdGhhdCB0aGlzIGNvZGUgc2hvdWxkIGJlIHJld3JpdHRl
biBpbiBhIG1vcmUKKyAgICAjIG9wdGltYWwgd2F5IGZvciBhcmNoaXRlY3R1cmVzIHRoYXQgaGF2
ZSBtb3JlIHRoYW4gZml2ZSByZWdpc3RlcnMgYXZhaWxhYmxlCisgICAgIyBmb3IgYXJiaXRyYXJ5
IHVzZSBpbiB0aGUgaW50ZXJwcmV0ZXIuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVBhcmFt
ZXRlcnNbdDFdLCB0MAorICAgIGFkZGkgLXByb2ZpbGVBcmdTa2lwLCB0MCAjIFVzZSBhZGRpIGJl
Y2F1c2UgdGhhdCdzIHdoYXQgaGFzIHRoZSBwZWVwaG9sZQorICAgIGFzc2VydChtYWNybyAob2sp
IGJpZ3RlcSB0MCwgMCwgb2sgZW5kKQorICAgIGJ0aXogdDAsIC5hcmd1bWVudFByb2ZpbGVEb25l
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcyArIFZlY3RvckJ1
ZmZlck9mZnNldFt0MV0sIHQzCisgICAgbXVsaSBzaXplb2YgVmFsdWVQcm9maWxlLCB0MCwgdDIg
IyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVkdWN0aW9uIQorICAgIG5lZ2kgdDAKKyAgICBs
c2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MiwgdDMKKy5hcmd1bWVudFByb2ZpbGVMb29wOgorICAg
IGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNldCArIDggLSBwcm9maWxlQXJnU2tp
cCAqIDhbY2ZyLCB0MF0sIHQyCisgICAgc3VicCBzaXplb2YgVmFsdWVQcm9maWxlLCB0MworICAg
IHN0b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBzaXplb2YgVmFsdWVQcm9maWxlICsgVmFsdWVQ
cm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50
T2Zmc2V0ICsgUGF5bG9hZE9mZnNldCArIDggLSBwcm9maWxlQXJnU2tpcCAqIDhbY2ZyLCB0MF0s
IHQyCisgICAgc3RvcmVpIHQyLCBwcm9maWxlQXJnU2tpcCAqIHNpemVvZiBWYWx1ZVByb2ZpbGUg
KyBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgYmFkZGlu
eiA4LCB0MCwgLmFyZ3VtZW50UHJvZmlsZUxvb3AKKy5hcmd1bWVudFByb2ZpbGVEb25lOgorICAg
IAorICAgICMgQ2hlY2sgc3RhY2sgaGVpZ2h0LgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1D
YWxsZWVSZWdpc3RlcnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRh
W3QxXSwgdDIKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmludGVycHJldGVyW3QyXSwgdDIgICAj
IEZJWE1FOiBDYW4gZ2V0IHRvIHRoZSBSZWdpc3RlckZpbGUgZnJvbSB0aGUgSklUU3RhY2tGcmFt
ZQorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQwLCBjZnIsIHQwCisgICAgYnBhZXEgSW50
ZXJwcmV0ZXI6Om1fcmVnaXN0ZXJGaWxlICsgUmVnaXN0ZXJGaWxlOjptX2VuZFt0Ml0sIHQwLCAu
c3RhY2tIZWlnaHRPSworCisgICAgIyBTdGFjayBoZWlnaHQgY2hlY2sgZmFpbGVkIC0gbmVlZCB0
byBjYWxsIGEgaGVscGVyLgorICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlZ2lzdGVyX2ZpbGVfY2hl
Y2spCisuc3RhY2tIZWlnaHRPSzoKK2VuZAorCisjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMg
aW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgorbWFjcm8gZnVu
Y3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgaGVscGVyKQorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisgICAgYmlhZXEgdDAsIENvZGVCbG9jazo6bV9u
dW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykg
ICAjIFRoaXMgaGVscGVyIGhhcyBhIHNpbXBsZSBwcm90b2NvbDogdDAgPSAwID0+IG5vIGVycm9y
LCB0MCAhPSAwID0+IGVycm9yCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYnRpeiB0MCwgLmNvbnRp
bnVlCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9h
ZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xv
YmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisuY29udGludWU6CisgICAgIyBS
ZWxvYWQgQ29kZUJsb2NrIGFuZCBQQywgc2luY2UgdGhlIGhlbHBlciBjbG9iYmVyZWQgaXQuCisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3Ry
dWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpJbnN0cnVjdGlvbnM6Om1faW5z
dHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKKyAgICBqbXAgZG9uZUxhYmVs
CitlbmQKKworX2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6CisgICAgcHJvbG9ndWUobm90RnVuY3Rp
b25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50
cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxp
bnRfZXZhbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRl
ciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90
cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0
ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zv
cl9jYWxsLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCisuZnVuY3Rp
b25Gb3JDYWxsQmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigwKQorICAgIGRpc3Bh
dGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlOgor
ICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlv
bkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0
LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKKy5mdW5jdGlv
bkZvckNvbnN0cnVjdEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKKyAgICBk
aXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2s6
CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNv
ZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNo
ZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKKyAgICBmdW5jdGlvbkFyaXR5
Q2hlY2soLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfbGxpbnRfaGVscGVyX2NhbGxfYXJpdHlDaGVj
aykKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjazoKKyAgICBw
cm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2Rl
QmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQorICAgIGZ1bmN0
aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX2xsaW50X2hlbHBlcl9j
b25zdHJ1Y3RfYXJpdHlDaGVjaykKKworIyBJbnN0cnVjdGlvbiBpbXBsZW1lbnRhdGlvbnMKKwor
X2xsaW50X29wX2VudGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDIKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFyc1t0Ml0sIHQyCisgICAg
YnRpeiB0MiwgLm9wRW50ZXJEb25lCisgICAgbW92ZSBVbmRlZmluZWRUYWcsIHQwCisgICAgbW92
ZSAwLCB0MQorLm9wRW50ZXJMb29wOgorICAgIHN1YmkgMSwgdDIKKyAgICBzdG9yZWkgdDAsIFRh
Z09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQy
LCA4XQorICAgIGJ0aW56IHQyLCAub3BFbnRlckxvb3AKKy5vcEVudGVyRG9uZToKKyAgICBkaXNw
YXRjaCgxKQorCisKK19sbGludF9vcF9jcmVhdGVfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBY3RpdmF0aW9uRG9uZQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKKy5vcENyZWF0ZUFjdGl2YXRpb25E
b25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luaXRfbGF6eV9yZWc6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSBFbXB0eVZh
bHVlVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgMCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NyZWF0ZV9hcmd1
bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQXJndW1l
bnRzRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQor
Lm9wQ3JlYXRlQXJndW1lbnRzRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGFsbG9j
YXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJbmRleCwgY2xhc3NJbmZvT2Zmc2V0LCBzdHJ1Y3R1
cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBzbG93Q2FzZSkKKyAgICBjb25zdCBvZmZz
ZXRPZk15U2l6ZUNsYXNzID0gSlNHbG9iYWxEYXRhOjpoZWFwICsgSGVhcDo6bV9vYmplY3RTcGFj
ZSArIE1hcmtlZFNwYWNlOjptX3ByZWNpc2VTaXplQ2xhc3NlcyArIHNpemVDbGFzc0luZGV4ICog
c2l6ZW9mIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MKKyAgICAKKyAgICAjIEZJWE1FOiB3ZSBjYW4g
Z2V0IHRoZSBnbG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRoZSBzdGFjay4KKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgc2NyYXRjaDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFs
RGF0YVtzY3JhdGNoMV0sIHNjcmF0Y2gxCisgICAgCisgICAgIyBHZXQgdGhlIG9iamVjdCBmcm9t
IHRoZSBmcmVlIGxpc3QuICAgIAorICAgIGxvYWRwIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJr
ZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXSwgcmVzdWx0CisgICAg
YnRweiByZXN1bHQsIHNsb3dDYXNlCisgICAgCisgICAgIyBSZW1vdmUgdGhlIG9iamVjdCBmcm9t
IHRoZSBmcmVlIGxpc3QuCisgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0Y2gyCisgICAgc3RvcmVw
IHNjcmF0Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6
Zmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0KKworICAgICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0Lgor
ICAgIGxvYWRwIGNsYXNzSW5mb09mZnNldFtzY3JhdGNoMV0sIHNjcmF0Y2gyCisgICAgc3RvcmVw
IHNjcmF0Y2gyLCBbcmVzdWx0XQorICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbcmVzdWx0XQorICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1
bHRdCisgICAgYWRkcCBzaXplb2YgSlNPYmplY3QsIHJlc3VsdCwgc2NyYXRjaDEKKyAgICBzdG9y
ZXAgc2NyYXRjaDEsIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVtyZXN1bHRdCitlbmQKKwor
X2xsaW50X29wX2NyZWF0ZV90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDEKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0
MV0sIE9iamVjdFR5cGUsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1f
aW5oZXJpdG9ySURbdDBdLCB0MgorICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAg
YWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9i
YWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRl
VGhpc1Nsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4
XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcENyZWF0ZVRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9jcmVhdGVfdGhpcykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9nZXRfY2FsbGVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0ICsgQ2FsbGVlW2Nmcl0sIHQxCisgICAgc3RvcmVpIENl
bGxUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NvbnZlcnRfdGhp
czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5m
bzo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNTbG93CisgICAgZGlzcGF0
Y2goMikKKworLm9wQ29udmVydFRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9jb252ZXJ0X3RoaXMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X29iamVj
dDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNH
bG9iYWxPYmplY3Q6Om1fZW1wdHlPYmplY3RTdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGFsbG9jYXRl
QmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6
anNGaW5hbE9iamVjdENsYXNzSW5mbywgdDEsIHQwLCB0MiwgdDMsIC5vcE5ld09iamVjdFNsb3cp
CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIs
IHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRp
c3BhdGNoKDIpCisKKy5vcE5ld09iamVjdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX25ld19vYmplY3QpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X2FycmF5
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3
X2FycmF5KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19hcnJheV9idWZmZXI6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdf
YXJyYXlfYnVmZmVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19yZWdleHA6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdf
cmVnZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX21vdjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bfbm90OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5v
cE5vdFNsb3cKKyAgICB4b3JpIDEsIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNw
YXRjaCgzKQorCisub3BOb3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ub3Qp
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZXE6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcEVxU2xvdworICAgIGJpZXEgdDIs
IENlbGxUYWcsIC5vcEVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cKKyAg
ICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaWVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVh
blRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wRXFTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9lcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9lcV9u
dWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
aSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisg
ICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0ZQorLm9wRXFOdWxsSW1tZWRpYXRlOgorICAgIGNp
ZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2llcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIG9y
aSB0MiwgdDEKKy5vcEVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywg
VGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVxOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93CisgICAg
YmllcSB0MiwgQ2VsbFRhZywgLm9wTmVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BO
ZXFTbG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2luZXEgdDAsIHQxLCB0MAorICAgIHN0
b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BOZXFTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXEpCisgICAgZGlzcGF0Y2goNCkKKyAgICAK
KworX2xsaW50X29wX25lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkK
KyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbElt
bWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRieiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKKy5vcE5lcU51
bGxJbW1lZGlhdGU6CisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2luZXEgdDEsIFVu
ZGVmaW5lZFRhZywgdDEKKyAgICBhbmRpIHQyLCB0MQorLm9wTmVxTnVsbE5vdEltbWVkaWF0ZToK
KyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVp
IHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCittYWNy
byBzdHJpY3RFcShlcXVhbGl0eU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwg
dDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBi
aW5lcSB0MiwgdDMsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmlu
ZXEgdDIsIENlbGxUYWcsIC5ub3RTdHJpbmcKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKKyAgICBiYm5l
cSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlw
ZSwgLm5vdFN0cmluZworICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93Cisubm90U3RyaW5nOgorICAgIGxvYWRpIDRb
UENdLCB0MgorICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDApCisgICAgc3RvcmVpIEJv
b2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxw
ZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50X29wX3N0cmljdGVxOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJl
c3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9zdHJpY3Rl
cSkKKworCitfbGxpbnRfb3BfbnN0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBz
dHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwgcmlnaHQsIHJl
c3VsdCBlbmQsIF9sbGludF9oZWxwZXJfbnN0cmljdGVxKQorCisKK19sbGludF9vcF9sZXNzOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzcykK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzZXEpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2dyZWF0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfZ3JlYXRlcmVxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3By
ZV9pbmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZUluY1Nsb3cKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJhZGRpbyAxLCB0MSwgLm9w
UHJlSW5jU2xvdworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAg
IGRpc3BhdGNoKDIpCisKKy5vcFByZUluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3ByZV9pbmMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJlX2RlYzoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdworICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNTbG93
CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2go
MikKKworLm9wUHJlRGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2Rl
YykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3N0X2luYzoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAg
YmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdEluY1Nsb3cKKyAg
ICBiaWVxIHQwLCB0MSwgLm9wUG9zdEluY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYmFkZGlvIDEsIHQzLCAub3BQb3N0
SW5jU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0SW5jRG9uZToKKyAgICBkaXNwYXRjaCgzKQor
Cisub3BQb3N0SW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9pbmMp
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcG9zdF9kZWM6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3REZWNTbG93CisgICAg
YmllcSB0MCwgdDEsIC5vcFBvc3REZWNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDIKKyAgICBtb3ZlIHQyLCB0MworICAgIGJzdWJpbyAxLCB0MywgLm9wUG9zdERl
Y1Nsb3cKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0
b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQorLm9wUG9zdERlY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKwor
Lm9wUG9zdERlY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfZGVjKQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3RvX2pzbnVtYmVyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmllcSB0MiwgSW50MzJUYWcs
IC5vcFRvSnNudW1iZXJJc0ludAorICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BUb0pz
bnVtYmVyU2xvdworLm9wVG9Kc251bWJlcklzSW50OgorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgZGlzcGF0Y2goMykKKworLm9wVG9Kc251bWJlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3RvX2pzbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25l
Z2F0ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9h
ZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQorICAg
IGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3
ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdworICAgIG5lZ2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcs
IFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisub3BOZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQx
LCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKKyAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAg
c3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOZWdhdGVTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZWdhdGUpCisgICAgZGlzcGF0Y2goMykKKworCitt
YWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91Ymxl
T3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywg
Lm9wMU5vdEludAorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGxvYWRp
IDRbUENdLCB0MgorICAgIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0MywgdDEsIHQwLCAuc2xv
dywgdDIpCisgICAgZGlzcGF0Y2goNSkKKworLm9wMU5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJh
bmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291bGQgYmUg
YW55dGhpbmcuCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQzLCBMb3dl
c3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93
CisgICAgY2kyZCB0MSwgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9w
MkRvdWJsZToKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGxv
YWRpIDRbUENdLCB0MQorICAgIGZpaTJkIHQwLCB0MiwgZnQwCisgICAgZG91YmxlT3BlcmF0aW9u
KGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDUp
CisKKy5vcDJOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50
LCB0aGUgc2Vjb25kIG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QuCisgICAgbG9hZGkgNFtQQ10s
IHQyCisgICAgYmlhIHQzLCBMb3dlc3RUYWcsIC5zbG93CisgICAgY2kyZCB0MCwgZnQwCisgICAg
ZmlpMmQgdDEsIHQzLCBmdDEKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3Rv
cmVkIGZ0MCwgW2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLnNsb3c6CisgICAgY2Fs
bEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNSkKK2VuZAorCittYWNybyBiaW5hcnlPcChp
bnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBiaW5hcnlPcEN1
c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBp
bmRleCkKKyAgICAgICAgICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCisg
ICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAg
ICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAg
ICAgIGVuZCwKKyAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCitlbmQKKworX2xsaW50
X29wX2FkZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgc2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9hZGQpCisKKworX2xsaW50X29wX211bDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBs
ZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjb25zdCBzY3JhdGNoID0gaW50
MzJUYWcgICAjIFdlIGtub3cgdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIGludDMyVGFnIHJlZ2lzdGVy
IHNpbmNlIGl0IGhhcyBhIGNvbnN0YW50LgorICAgICAgICAgICAgbW92ZSByaWdodCwgc2NyYXRj
aAorICAgICAgICAgICAgYm11bGlvIGxlZnQsIHNjcmF0Y2gsIHNsb3cKKyAgICAgICAgICAgIGJ0
aW56IHNjcmF0Y2gsIC5kb25lCisgICAgICAgICAgICBiaWx0IGxlZnQsIDAsIC5zbG93CisgICAg
ICAgICAgICBiaWx0IHJpZ2h0LCAwLCAuc2xvdworICAgICAgICAuZG9uZToKKyAgICAgICAgICAg
IHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBz
dG9yZWkgc2NyYXRjaCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQs
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfbXVsKQorCisKK19sbGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cp
IGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfc3ViKQorCisK
K19sbGludF9vcF9kaXY6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9t
U3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4
KQorICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0
MQorICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdo
dCwgLm5vdEludAorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBp
bmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGlu
ZGV4LCA4XQorICAgICAgICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6CisgICAgICAg
ICAgICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6CisgICAgICAg
IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwK
KyAgICAgICAgX2xsaW50X2hlbHBlcl9kaXYpCisKKworX2xsaW50X29wX21vZDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkKKyAgICBkaXNw
YXRjaCg0KQorCisKK21hY3JvIGJpdE9wKG9wZXJhdGlvbiwgaGVscGVyLCBhZHZhbmNlKQorICAg
IGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAs
IHQyLCB0MCkKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIElu
dDMyVGFnLCAuc2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIG9wZXJhdGlvbih0MSwgdDAs
IC5zbG93KQorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKKwor
LnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKK2Vu
ZAorCitfbGxpbnRfb3BfbHNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVu
ZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9sc2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50
X29wX3JzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgc2xvdykgcnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfcnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF91cnNoaWZ0
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKKyAgICAgICAg
ICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfaGVs
cGVyX3Vyc2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX2JpdGFuZDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xv
dykgYW5kaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0YW5kLAor
ICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXR4b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwg
cmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdHhvciwKKyAgICAgICAgNSkKKwor
CitfbGxpbnRfb3BfYml0b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfYml0b3IsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG5v
dDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGJp
bmVxIHQyLCBJbnQzMlRhZywgLm9wQml0bm90U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkg
dDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2JpdG5vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRb
UENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0
MCwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9m
bGFnc1t0MF0sIEltcGxlbWVudHNIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cK
KyAgICBkaXNwYXRjaCgyKQorCisub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQorICAgIGRpc3BhdGNoKDIpCisK
KworX2xsaW50X29wX2luc3RhbmNlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgQ2hl
Y2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZp
b3IuCisgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAx
MltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDEs
IHQwKQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVm
YXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIAorICAgICMgQWN0dWFsbHkg
ZG8gdGhlIHdvcmsuCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0Mwor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5z
dGFuY2VvZlNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAg
YmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RU
eXBlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cp
CisgICAgCisgICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUK
KyAgICBtb3ZlIDEsIHQwCisub3BJbnN0YW5jZW9mTG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QyXSwgdDIKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5
bG9hZE9mZnNldFt0Ml0sIHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisg
ICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0
YW5jZW9mRG9uZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhd
CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2go
NSkKKworLm9wSW5zdGFuY2VvZlNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lu
c3RhbmNlb2YpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9pc19udW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19udW1iZXIpCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfaXNfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX2lzX29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2lzX29iamVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19m
dW5jdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2lzX2Z1bmN0aW9uKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2luOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfcmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9za2lwKQorICAgIGRpc3BhdGNoKDUpCisK
KworbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFz
IGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAj
IDhbUENdICAgUHJvcGVydHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAg
ICAjIDEyW1BDXSAgU3RydWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNv
ZGUgZ2VuZXJhdG9yLgorICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5p
dGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYnBuZXEgdDEsIDEyW1BD
XSwgc2xvdworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9w
ZXJ0eVN0b3JhZ2VbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0Mgor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0Mywg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGxvYWRpIChzaXplIC0gMSkgKiA0W1BDXSwg
dDAKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQzLCB0MCkKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2
ZV9nbG9iYWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHJlc29sdmVHbG9iYWwoNiwgLm9w
UmVzb2x2ZUdsb2JhbFNsb3cpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbFNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRp
c3BhdGNoKDYpCisKKworIyBHaXZlcyB5b3UgdGhlIHNjb3BlIGluIHQwLCB3aGlsZSBhbGxvd2lu
ZyB5b3UgdG8gb3B0aW9uYWxseSBwZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9uIHRoZQorIyBz
Y29wZXMgYXMgdGhleSBhcmUgdHJhdmVyc2VkLiBzY29wZUNoZWNrKCkgaXMgY2FsbGVkIHdpdGgg
dHdvIGFyZ3VtZW50czogdGhlIHJlZ2lzdGVyCisjIGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQgYSBy
ZWdpc3RlciB0aGF0IGNhbiBiZSB1c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBkb2Vz
IG5vdAorIyB1c2UgdDMsIHNvIHlvdSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJlLgor
bWFjcm8gZ2V0U2NvcGUoZGVCcnVpamluSW5kZXhPcGVyYW5kLCBzY29wZUNoZWNrKQorICAgIGxv
YWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgZGVCcnVp
amluSW5kZXhPcGVyYW5kLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisgICAgCisgICAg
bG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBl
W3QxXSwgRnVuY3Rpb25Db2RlLCAubG9vcAorICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVs
bFNjb3BlQ2hhaW5bdDFdLCAubG9vcAorICAgIAorICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3Rp
dmF0aW9uUmVnaXN0ZXJbdDFdLCB0MQorCisgICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tp
cCBvdmVyIG9uZSBzY29wZS4KKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlW
YWx1ZVRhZywgLm5vQWN0aXZhdGlvbgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRw
IFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKy5ub0FjdGl2YXRpb246CisgICAgc3ViaSAx
LCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisubG9vcDoKKyAgICBzY29wZUNoZWNrKHQw
LCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisgICAgc3ViaSAx
LCB0MgorICAgIGJ0aW56IHQyLCAubG9vcAorCisuZG9uZToKK2VuZAorCitfbGxpbnRfb3BfcmVz
b2x2ZV9nbG9iYWxfZHluYW1pYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklU
U3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjph
Y3RpdmF0aW9uU3RydWN0dXJlW3QzXSwgdDMKKyAgICBnZXRTY29wZSgKKyAgICAgICAgMjBbUENd
LAorICAgICAgICBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpCisgICAgICAgICAgICBsb2FkcCBTY29w
ZUNoYWluTm9kZTo6b2JqZWN0W3Njb3BlXSwgc2NyYXRjaAorICAgICAgICAgICAgYnBuZXEgSlND
ZWxsOjptX3N0cnVjdHVyZVtzY3JhdGNoXSwgdDMsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3Vw
ZXJTbG93CisgICAgICAgIGVuZCkKKyAgICByZXNvbHZlR2xvYmFsKDcsIC5vcFJlc29sdmVHbG9i
YWxEeW5hbWljU2xvdykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1p
Y1N1cGVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9mb3JfcmVz
b2x2ZV9nbG9iYWxfZHluYW1pYykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFs
RHluYW1pY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFs
X2R5bmFtaWMpCisgICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6Cisg
ICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgSW5k
ZXggb2YgcmVnaXN0ZXIgaW4gdGhlIHNjb3BlLgorICAgICMgMTJbUENdICBEZSBCcnVpamluIGlu
ZGV4LgorICAgIGdldFNjb3BlKDEyW1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisg
ICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZHAgU2NvcGVD
aGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9y
ZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhdLCB0MworICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4
XQorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICB2YWx1ZVByb2ZpbGUodDMsIHQwLCB0MSkKKyAg
ICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgZ2V0U2NvcGUoOFtQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5k
KQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0
MywgdDIpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQzLCB0MikKKyAg
ICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1Zhcmlh
YmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRb
dDAsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmpl
Y3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQw
CisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFt0MCwgdDEsIDhdLCB0MQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhd
CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgbG9hZGkgMTJb
UENdLCB0MworICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQzKQorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVj
dDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQy
LCB0MykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAg
IHN0b3JlaSB0MiwgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRP
ZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVf
YmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3Jlc29sdmVfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9lbnN1cmVfcHJv
cGVydHlfZXhpc3RzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9yZXNvbHZlX3dpdGhfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQorICAgIGRpc3BhdGNoKDUp
CisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCisgICAgZGlz
cGF0Y2goNSkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywg
YW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBh
bGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorICAg
ICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0
X2J5X2lkIHdpbGwgY29udGludWUKKyAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcg
Y2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisgICAgIyB3
ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgorICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwg
Q2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBs
b2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAgIGJwbmVxIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwg
dDEKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W3QwLCB0Ml0sIHQyCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAg
ICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAzMltQQ10s
IHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MiwgdDEpCisgICAgZGlzcGF0Y2goOSkKKworLm9w
R2V0QnlJZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9pZCkKKyAg
ICBkaXNwYXRjaCg5KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQx
CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRB
cmd1bWVudHNMZW5ndGhTbG93CisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZz
ZXRbY2ZyXSwgdDIKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9wdXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRp
IDEyW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0
MworICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cK
KyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIs
IHQwLCB0MikKKyAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQorICAgIHN0b3JlaSB0MCwgVGFnT2Zm
c2V0W3QzLCB0MV0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQorICAgIGRp
c3BhdGNoKDkpCisKKy5vcFB1dEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9wdXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOSkKKworCittYWNybyBwdXRCeUlkVHJhbnNpdGlv
bihhZGRpdGlvbmFsQ2hlY2tzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10s
IHQyCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xv
dworICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2Fk
aSAyMFtQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwg
dDMKKyAgICBhZGRwIHQxLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0
MSwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNl
dFt0M10KKyAgICBsb2FkaSAyNFtQQ10sIHQxCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0
W3QzXQorICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICBkaXNwYXRj
aCg5KQorZW5kCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAg
cHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5k
KQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgcHV0QnlJ
ZFRyYW5zaXRpb24oCisgICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cp
CisgICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcg
dGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAgICAgIAorICAgICAg
ICAgICAgbG9hZHAgMjhbUENdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9r
KSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFp
bjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGFzc2VydChtYWNybyAo
b2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICAgICAgICAgIGJpZXEgU3RydWN0dXJlOjpt
X3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorICAg
ICAgICAubG9vcDoKKyAgICAgICAgICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQ
YXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAgICAgICAgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICAgICAgICAg
IGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCBzbG93CisgICAgICAgICAgICBhZGRwIDQs
IHNjcmF0Y2gKKyAgICAgICAgICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdP
ZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKKyAgICAgICAgLmRvbmU6CisgICAg
ICAgIGVuZCkKKworCitfbGxpbnRfb3BfZGVsX2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X2lkKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX2dldF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDEy
W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQxCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZh
bFNsb3cpCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgSW50MzJUYWcsIHQxLCAub3BH
ZXRCeVZhbFNsb3cpCisgICAgYnBuZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFsU2xvdworICAgIGxv
YWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MF0sIHQzCisgICAgYmlhZXEgdDEsIEpTQXJyYXk6Om1f
dmVjdG9yTGVuZ3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0
MgorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0
MSwgOF0sIHQxCisgICAgYmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93Cisg
ICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgdmFsdWVQcm9m
aWxlKHQyLCB0MSwgdDApCisgICAgZGlzcGF0Y2goNSkKKworLm9wR2V0QnlWYWxTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisK
KworX2xsaW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaW5lcSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEludDMyVGFnLCB0MiwgLm9w
R2V0QXJndW1lbnRCeVZhbFNsb3cpCisgICAgYWRkaSAxLCB0MgorICAgIGxvYWRpIEFyZ3VtZW50
Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisgICAgYmlhZXEgdDIsIHQxLCAub3BHZXRB
cmd1bWVudEJ5VmFsU2xvdworICAgIG5lZ2kgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBs
b2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisgICAg
bG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEK
KyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5
bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEFyZ3VtZW50
QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRfYnlf
dmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV9wbmFtZToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAg
bG9hZGkgMTZbUENdLCB0MAorICAgIGJwbmVxIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisg
ICAgbG9hZGkgMjBbUENdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAs
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQ
bmFtZVNsb3cKKyAgICBsb2FkaSAyNFtQQ10sIHQwCisgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0
MAorICAgIHN1YmkgMSwgdDAKKyAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6
bV9udW1DYWNoZWFibGVTbG90c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZHAgSlNP
YmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDIs
IHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg3KQor
Cisub3BHZXRCeVBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5
X3BuYW1lKQorICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX3B1dF9ieV92YWw6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBJbnQz
MlRhZywgdDIsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MF0sIHQwCisgICAgbG9hZHAgSlNH
bG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QwXSwgdDAKKyAgICBicG5lcSBbdDFdLCB0MCwg
Lm9wUHV0QnlWYWxTbG93CisgICAgYmlhZXEgdDIsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3Qx
XSwgLm9wUHV0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QxXSwgdDAK
KyAgICBiaWVxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwg
RW1wdHlWYWx1ZVRhZywgLm9wUHV0QnlWYWxFbXB0eQorLm9wUHV0QnlWYWxTdG9yZVJlc3VsdDoK
KyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMs
IHQxLCB0MykKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQzKQorICAgIHN0b3JlaSB0MSwgQXJyYXlT
dG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdCisgICAgc3RvcmVpIHQzLCBB
cnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdCisgICAgZGlz
cGF0Y2goNCkKKworLm9wUHV0QnlWYWxFbXB0eToKKyAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6
bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KKyAgICBiaWIgdDIsIEFycmF5U3RvcmFnZTo6bV9sZW5n
dGhbdDBdLCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0MiwgdDEKKyAgICBz
dG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdCisgICAgam1wIC5vcFB1dEJ5VmFs
U3RvcmVSZXN1bHQKKworLm9wUHV0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9wdXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2RlbF9ieV92
YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9k
ZWxfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9pbmRleDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9i
eV9pbmRleCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2V0dGVyOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2dldHRl
cikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfc2V0dGVyOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X3NldHRlcikKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9sb29wOgorICAgIG5vcAorX2xsaW50X29wX2pt
cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0Y2hCcmFuY2goNFtQQ10pCisKKwor
X2xsaW50X29wX2ptcF9zY29wZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9qbXBfc2NvcGVzKQorICAgIGRpc3BhdGNoKDApCisKKworbWFjcm8g
anVtcFRydWVPckZhbHNlKGNvbmRpdGlvbk9wLCBzbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBCb29sZWFuVGFnLCB0MCwgLnNs
b3cpCisgICAgY29uZGl0aW9uT3AodDAsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRh
cmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBl
cihzbG93KQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfdHJ1ZToK
KyAgICBub3AKK19sbGludF9vcF9qdHJ1ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAganVt
cFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpbnogdmFsdWUs
IHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfanRydWUpCisKKworX2xsaW50X29w
X2xvb3BfaWZfZmFsc2U6CisgICAgbm9wCitfbGxpbnRfb3BfamZhbHNlOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFy
Z2V0KSBidGl6IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pmYWxz
ZSkKKworCittYWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhbmRsZXIpCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENl
bGxUYWcsIC5pbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIK
KyAgICBjZWxsSGFuZGxlcihTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFn
c1t0Ml0sIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRj
aEJyYW5jaCg4W1BDXSkKKworLmltbWVkaWF0ZToKKyAgICBvcmkgMSwgdDEKKyAgICBpbW1lZGlh
dGVIYW5kbGVyKHQxLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCitlbmQKKworX2xsaW50X29w
X2plcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAg
IG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJueiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpZXEgdmFsdWUs
IE51bGxUYWcsIHRhcmdldCBlbmQpCisgICAgCisKK19sbGludF9vcF9qbmVxX251bGw6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0
YXJnZXQpIGJ0YnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisg
ICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaW5lcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0
IGVuZCkKKworCitfbGxpbnRfb3Bfam5lcV9wdHI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wSm5lcVB0ckJyYW5jaAorICAgIGJwZXEgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEsIC5vcEpuZXFQdHJGYWxsVGhyb3VnaAorLm9wSm5lcVB0
ckJyYW5jaDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisub3BKbmVxUHRyRmFsbFRocm91
Z2g6CisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBjb21wYXJlKGludGVnZXJDb21wYXJlLCBk
b3VibGVDb21wYXJlLCBoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZGkgOFtQ
Q10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDAsIHQxKQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MiwgdDMpCisgICAgYmluZXEgdDAsIEludDMyVGFn
LCAub3AxTm90SW50CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AyTm90SW50CisgICAgaW50
ZWdlckNvbXBhcmUodDEsIHQzLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisub3Ax
Tm90SW50OgorICAgIGJpYSB0MCwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MiwgTG93ZXN0
VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdwor
ICAgIGNpMmQgdDMsIGZ0MQorICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJE
b3VibGU6CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBmaWky
ZCB0MSwgdDAsIGZ0MAorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQor
ICAgIGRpc3BhdGNoKDQpCisKKy5vcDJOb3RJbnQ6CisgICAgY2kyZCB0MSwgZnQwCisgICAgYmlh
IHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKyAgICBkb3VibGVD
b21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisuanVtcFRh
cmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisKKy5zbG93OgorICAgIGNhbGxIZWxw
ZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfbGVz
czoKKyAgICBub3AKK19sbGludF9vcF9qbGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
ZGx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2psZXNz
KQorCisKK19sbGludF9vcF9qbmxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBh
cmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0
ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmxl
c3MpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcjoKKyAgICBub3AKK19sbGludF9vcF9q
Z3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0IGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVhdGVyKQorCisKK19sbGludF9vcF9q
bmdyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXF1biBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXIpCisKKworX2xs
aW50X29wX2xvb3BfaWZfbGVzc2VxOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzZXE6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfamxlc3NlcSkKKworCitfbGxpbnRfb3Bfam5sZXNzZXE6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAor
ICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzc2VxKQorCisKK19sbGludF9vcF9sb29wX2lmX2dy
ZWF0ZXJlcToKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkg
YmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmRndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX2pncmVhdGVyZXEpCisKKworX2xsaW50X29wX2puZ3JlYXRlcmVxOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHR1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAg
ICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3BfbG9vcF9oaW50Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAg
ZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2ltbToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6
ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMgICAjIEZJWE1FOiB3b3VsZCBiZSBuaWNlIHRvIHBlZXBo
b2xlIHRoaXMhCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9pbW1lZGlhdGVTd2l0
Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0
MgorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wU3dpdGNoSW1tTm90SW50CisgICAgc3ViaSBT
aW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJs
ZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hJbW1GYWxs
VGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFt0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgNF0sIHQxCisgICAgYnRp
eiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZz
ZXQodDEpCisKKy5vcFN3aXRjaEltbU5vdEludDoKKyAgICBiaWIgdDEsIExvd2VzdFRhZywgLm9w
U3dpdGNoSW1tU2xvdyAgIyBHbyB0byBzbG93IHBhdGggaWYgaXQncyBhIGRvdWJsZS4KKy5vcFN3
aXRjaEltbUZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisub3BTd2l0
Y2hJbW1TbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfaW1tKQorICAg
IGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3N3aXRjaF9jaGFyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBz
aXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6
Om1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQy
CisgICAgYWRkcCB0MywgdDIKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wU3dpdGNoQ2hhckZh
bGxUaHJvdWdoCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYmJu
ZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIFN0cmluZ1R5
cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTU3RyaW5nOjptX3ZhbHVl
W3QwXSwgdDAKKyAgICBiaW5lcSBTdHJpbmdJbXBsOjptX2xlbmd0aFt0MF0sIDEsIC5vcFN3aXRj
aENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFN0cmluZ0ltcGw6Om1fZGF0YThbdDBdLCB0MQor
ICAgIGJ0aW56IFN0cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdzW3QwXSwgSGFzaEZsYWdzOEJpdEJ1
ZmZlciwgLm9wU3dpdGNoQ2hhcjhCaXQKKyAgICBsb2FkaCBbdDFdLCB0MAorICAgIGptcCAub3BT
d2l0Y2hDaGFyUmVhZHkKKy5vcFN3aXRjaENoYXI4Qml0OgorICAgIGxvYWRiIFt0MV0sIHQwCisu
b3BTd2l0Y2hDaGFyUmVhZHk6CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQw
CisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNp
emVPZmZzZXRbdDJdLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTaW1wbGVK
dW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAg
IGxvYWRpIFt0MiwgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEsIC5vcFN3aXRjaEltbUZhbGxUaHJv
dWdoCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQorCisub3BTd2l0Y2hDaGFyRmFs
bFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKworX2xsaW50X29wX3N3aXRj
aF9zdHJpbmc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9zd2l0Y2hfc3RyaW5nKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX25ld19m
dW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidGl6IDEyW1BDXSwgLm9wTmV3RnVuY1Vu
Y2hlY2tlZAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQx
LCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wTmV3RnVuY0RvbmUKKy5vcE5ld0Z1bmNVbmNoZWNrZWQ6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19mdW5jKQorLm9wTmV3RnVuY0RvbmU6
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmNfZXhwKQor
ICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gZG9DYWxsKGhlbHBlcikKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAgTExJbnRDYWxsTGlua0luZm86
OmNhbGxlZVt0MV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENl
bGxUYWcsIHQzLCAub3BDYWxsU2xvdykKKyAgICBiaW5lcSB0MywgdDIsIC5vcENhbGxTbG93Cisg
ICAgbG9hZGkgMTJbUENdLCB0MworICAgIGFkZHAgMjQsIFBDCisgICAgbHNoaWZ0aSAzLCB0Mwor
ICAgIGFkZHAgY2ZyLCB0MyAgIyB0MyBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9mIGNmcgorICAg
IGxvYWRwIEpTRnVuY3Rpb246Om1fc2NvcGVDaGFpblt0Ml0sIHQwCisgICAgc3RvcmVpIHQyLCBD
YWxsZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSB0MCwgU2NvcGVDaGFpbiArIFBh
eWxvYWRPZmZzZXRbdDNdCisgICAgbG9hZGkgOCAtIDI0W1BDXSwgdDIKKyAgICBzdG9yZWkgUEMs
IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlcCBjZnIsIENhbGxlckZy
YW1lW3QzXQorICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNd
CisgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10KKyAgICBzdG9yZWkg
Q2VsbFRhZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10KKyAgICBtb3ZlIHQzLCBjZnIKKyAg
ICBjYWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0KKyAgICBkaXNw
YXRjaEFmdGVyQ2FsbCgpCisKKy5vcENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBo
ZWxwZXIpCitlbmQKKworX2xsaW50X29wX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGRvQ2FsbChfbGxpbnRfaGVscGVyX2NhbGwpCisKKworX2xsaW50X29wX2NvbnN0cnVjdDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY29uc3RydWN0KQor
CisKK19sbGludF9vcF9jYWxsX3ZhcmFyZ3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHNs
b3dQYXRoRm9yQ2FsbCg2LCBfbGxpbnRfaGVscGVyX2NhbGxfdmFyYXJncykKKworCitfbGxpbnRf
b3BfY2FsbF9ldmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAKKyAgICAjIEV2YWwgaXMg
ZXhlY3V0ZWQgaW4gb25lIG9mIHR3byBtb2RlczoKKyAgICAjCisgICAgIyAxKSBXZSBmaW5kIHRo
YXQgd2UncmUgcmVhbGx5IGludm9raW5nIGV2YWwoKSBpbiB3aGljaCBjYXNlIHRoZQorICAgICMg
ICAgZXhlY3V0aW9uIGlzIHBlcmZvbWVkIGVudGlyZWx5IGluc2lkZSB0aGUgaGVscGVyLCBhbmQg
aXQKKyAgICAjICAgIHJldHVybnMgdGhlIFBDIG9mIGEgZnVuY3Rpb24gdGhhdCBqdXN0IHJldHVy
bnMgdGhlIHJldHVybiB2YWx1ZQorICAgICMgICAgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAg
ICAjCisgICAgIyAyKSBXZSBmaW5kIHRoYXQgd2UncmUgaW52b2tpbmcgc29tZXRoaW5nIGNhbGxl
ZCBldmFsKCkgdGhhdCBpcyBub3QKKyAgICAjICAgIHRoZSByZWFsIGV2YWwuIFRoZW4gdGhlIGhl
bHBlciByZXR1cm5zIHRoZSBQQyBvZiB0aGUgdGhpbmcgdG8KKyAgICAjICAgIGNhbGwsIGFuZCB3
ZSBjYWxsIGl0LgorICAgICMKKyAgICAjIFRoaXMgYWxsb3dzIHVzIHRvIGhhbmRsZSB0d28gY2Fz
ZXMsIHdoaWNoIHdvdWxkIHJlcXVpcmUgYSB0b3RhbCBvZgorICAgICMgdXAgdG8gZm91ciBwaWVj
ZXMgb2Ygc3RhdGUgdGhhdCBjYW5ub3QgYmUgZWFzaWx5IHBhY2tlZCBpbnRvIHR3bworICAgICMg
cmVnaXN0ZXJzIChDIGZ1bmN0aW9ucyBjYW4gcmV0dXJuIHVwIHRvIHR3byByZWdpc3RlcnMsIGVh
c2lseSk6CisgICAgIworICAgICMgLSBUaGUgY2FsbCBmcmFtZSByZWdpc3Rlci4gVGhpcyBtYXkg
b3IgbWF5IG5vdCBoYXZlIGJlZW4gbW9kaWZpZWQKKyAgICAjICAgYnkgdGhlIGhlbHBlciwgYnV0
IHRoZSBjb252ZW50aW9uIGlzIHRoYXQgaXQgcmV0dXJucyBpdC4gSXQncyBub3QKKyAgICAjICAg
dG90YWxseSBjbGVhciBpZiB0aGF0J3MgbmVjZXNzYXJ5LCBzaW5jZSB0aGUgY2ZyIGlzIGNhbGxl
ZSBzYXZlLgorICAgICMgICBCdXQgdGhhdCdzIG91ciBzdHlsZSBpbiB0aGlzIGhlcmUgaW50ZXJw
cmV0ZXIgc28gd2Ugc3RpY2sgd2l0aCBpdC4KKyAgICAjCisgICAgIyAtIEEgYml0IHRvIHNheSBp
ZiB0aGUgaGVscGVyIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCB0aGUgZXZhbCBhbmQgaGFzCisgICAg
IyAgIHRoZSByZXR1cm4gdmFsdWUsIG9yIGRpZCBub3QgZXhlY3V0ZSB0aGUgZXZhbCBidXQgaGFz
IGEgUEMgZm9yIHVzCisgICAgIyAgIHRvIGNhbGwuCisgICAgIworICAgICMgLSBFaXRoZXI6Cisg
ICAgIyAgIC0gVGhlIEpTIHJldHVybiB2YWx1ZSAodHdvIHJlZ2lzdGVycyksIG9yCisgICAgIwor
ICAgICMgICAtIFRoZSBQQyB0byBjYWxsLgorICAgICMKKyAgICAjIEl0IHR1cm5zIG91dCB0byBi
ZSBlYXNpZXIgdG8ganVzdCBhbHdheXMgaGF2ZSB0aGlzIHJldHVybiB0aGUgY2ZyCisgICAgIyBh
bmQgYSBQQyB0byBjYWxsLCBhbmQgdGhhdCBQQyBtYXkgYmUgYSBkdW1teSB0aHVuayB0aGF0IGp1
c3QKKyAgICAjIHJldHVybnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisg
ICAgCisgICAgc2xvd1BhdGhGb3JDYWxsKDQsIF9sbGludF9oZWxwZXJfY2FsbF9ldmFsKQorCisK
K19sbGludF9nZW5lcmljX3JldHVybl9wb2ludDoKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisK
KworX2xsaW50X29wX3RlYXJfb2ZmX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25DcmVh
dGVkCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRl
YXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZAorLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkOgor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQorLm9wVGVh
ck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X3RlYXJfb2ZmX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgc3ViaSAxLCB0MCAgICMgR2V0IHRoZSB1bm1vZGlmaWVkQXJndW1lbnRzUmVn
aXN0ZXIKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9w
VGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
dGVhcl9vZmZfYXJndW1lbnRzKQorLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAg
ZGlzcGF0Y2goMikKKworCittYWNybyBkb1JldHVybigpCisgICAgbG9hZHAgUmV0dXJuUENbY2Zy
XSwgdDIKKyAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKKyAgICByZXN0b3JlUmV0dXJu
QWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICByZXQKK2VuZAorCitfbGxpbnRfb3BfcmV0Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQor
ICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0
MCkKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX2NhbGxfcHV0X3Jlc3VsdDoKKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBzdG9yZWkgdDEsIFRhZ09m
ZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4
XQorICAgIHZhbHVlUHJvZmlsZSh0MSwgdDAsIHQzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkgIyBO
ZWVkcyB0byBiZSBoZXJlIGJlY2F1c2UgaXQgd291bGQgY2xvYmJlciB0MSwgdDAKKyAgICBkaXNw
YXRjaCgzKQorCisKK19sbGludF9vcF9yZXRfb2JqZWN0X29yX3RoaXM6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQ
Q10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGJpbmVx
IHQxLCBDZWxsVGFnLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsg
VHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcFJldE9iamVjdE9yVGhpc05vdE9i
amVjdAorICAgIGRvUmV0dXJuKCkKKworLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0OgorICAg
IGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkK
KyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX21ldGhvZF9jaGVjazoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNoZWNrcyBhbmQgdXNlIG5vcm1hbCBn
ZXRfYnlfaWQgb3B0aW1pemF0aW9ucy4KKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9z
dHJjYXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9zdHJjYXQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSA0W1BD
XSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEg
dDEsIENlbGxUYWcsIC5vcFRvUHJpbWl0aXZlSXNJbW0KKyAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDIKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5m
bzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm9wVG9QcmltaXRpdmVTbG93Q2FzZQorLm9wVG9Q
cmltaXRpdmVJc0ltbToKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisK
Ky5vcFRvUHJpbWl0aXZlU2xvd0Nhc2U6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rv
X3ByaW1pdGl2ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9nZXRfcG5hbWVzOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X3Bu
YW1lcykKKyAgICBkaXNwYXRjaCgwKSAjIFRoZSBoZWxwZXIgZWl0aGVyIGFkdmFuY2VzIHRoZSBQ
QyBvciBqdW1wcyB1cyB0byBzb21ld2hlcmUgZWxzZS4KKworCitfbGxpbnRfb3BfbmV4dF9wbmFt
ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRp
IDE2W1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MAorICAg
IGJpZXEgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIC5vcE5leHRQbmFtZUVuZAorICAg
IGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0
MgorICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fanNTdHJpbmdzW3QyXSwgdDMK
KyAgICBsb2FkaSBbdDMsIHQwLCA4XSwgdDMKKyAgICBhZGRpIDEsIHQwCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3Rv
cmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
M10sIHQxCisgICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3Ry
dWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0MAorICAgIGxvYWRwIFN0cnVjdHVy
ZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BOZXh0UG5hbWVUYXJn
ZXQKKy5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcDoKKyAgICBiaWVxIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbdDFdLCBOdWxsVGFnLCAub3BOZXh0UG5hbWVTbG93Cisg
ICAgbG9hZHAgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDFdLCB0Mgor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MQorICAgIGJwbmVxIHQxLCBbdDBd
LCAub3BOZXh0UG5hbWVTbG93CisgICAgYWRkcCA0LCB0MAorICAgIGJ0cG56IFt0MF0sIC5vcE5l
eHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcAorLm9wTmV4dFBuYW1lVGFyZ2V0OgorICAgIGRpc3Bh
dGNoQnJhbmNoKDI0W1BDXSkKKworLm9wTmV4dFBuYW1lRW5kOgorICAgIGRpc3BhdGNoKDcpCisK
Ky5vcE5leHRQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25leHRfcG5h
bWUpICMgVGhpcyBlaXRoZXIga2VlcHMgdGhlIFBDIHdoZXJlIGl0IHdhcyAoY2F1c2luZyB1cyB0
byBsb29wKSBvciBzZXRzIGl0IHRvIHRhcmdldC4KKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGlu
dF9vcF9wdXNoX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfcHVzaF9zY29wZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9w
b3Bfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9wb3Bfc2NvcGUpCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfcHVzaF9uZXdf
c2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9wdXNoX25ld19zY29wZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9jYXRjaDoK
KyAgICAjIFRoaXMgaXMgd2hlcmUgd2UgZW5kIHVwIGZyb20gdGhlIEpJVCdzIHRocm93IHRyYW1w
b2xpbmUgKGJlY2F1c2UgdGhlCisgICAgIyBtYWNoaW5lIGNvZGUgcmV0dXJuIGFkZHJlc3Mgd2ls
bCBiZSBzZXQgdG8gX2xsaW50X29wX2NhdGNoKSwgYW5kIGZyb20KKyAgICAjIHRoZSBpbnRlcnBy
ZXRlcidzIHRocm93IHRyYW1wb2xpbmUgKHNlZSBfbGxpbnRfdGhyb3dfdHJhbXBvbGluZSkuCisg
ICAgIyBUaGUgSklUIHRocm93aW5nIHByb3RvY29sIGNhbGxzIGZvciB0aGUgY2ZyIHRvIGJlIGlu
IHQwLiBUaGUgdGhyb3dpbmcKKyAgICAjIGNvZGUgbXVzdCBoYXZlIGtub3duIHRoYXQgd2Ugd2Vy
ZSB0aHJvd2luZyB0byB0aGUgaW50ZXJwcmV0ZXIsIGFuZCBoYXZlCisgICAgIyBzZXQgSlNHbG9i
YWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cuCisgICAgbW92ZSB0MCwgY2ZyCisg
ICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZGkgSlNH
bG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3dbdDNdLCBQQworICAgIGxvYWRp
IEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10sIHQwCisgICAgbG9h
ZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdLCB0MQorICAgIHN0b3Jl
aSAwLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3Rv
cmVpIEVtcHR5VmFsdWVUYWcsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3Qz
XSAgICAgICAKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAg
IHRyYWNlRXhlY3V0aW9uKCkgICMgVGhpcyBuZWVkcyB0byBiZSBoZXJlIGJlY2F1c2Ugd2UgZG9u
J3Qgd2FudCB0byBjbG9iYmVyIHQwLCB0MSwgdDIsIHQzIGFib3ZlLgorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX3Rocm93OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfdGhyb3cpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3Bf
dGhyb3dfcmVmZXJlbmNlX2Vycm9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX2pzcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgYWRkaSAzICogNCwgUEMsIHQxCisgICAgc3RvcmVpIHQxLCBbY2ZyLCB0MCwg
OF0KKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3JldDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZHAgW2NmciwgdDAs
IDhdLCBQQworICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX2RlYnVnOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVidWcpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJvZmlsZV93aWxsX2NhbGw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5j
ZVtzcF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQorLm9wUHJvZmlsZVdpbGxD
YWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wcm9maWxlX2RpZF9jYWxs
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjplbmFibGVk
UHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCB0MAorICAgIGJ0cHogW3QwXSwgLm9wUHJvZmlsZVdpbGxD
YWxsRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQor
Lm9wUHJvZmlsZURpZENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2Vu
ZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3Vl
KCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1JldHVy
bigpCisKKworX2xsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmU6CisgICAgIyBXaGVu
IHRocm93aW5nIGZyb20gdGhlIGludGVycHJldGVyIChpLmUuIHRocm93aW5nIGZyb20gTExJbnRI
ZWxwZXJzKSwgc28KKyAgICAjIHRoZSB0aHJvdyB0YXJnZXQgaXMgbm90IG5lY2Vzc2FyaWx5IGlu
dGVycHJldGVkIGNvZGUsIHdlIGNvbWUgdG8gaGVyZS4KKyAgICAjIFRoaXMgZXNzZW50aWFsbHkg
ZW11bGF0ZXMgdGhlIEpJVCdzIHRocm93aW5nIHByb3RvY29sLgorICAgIGxvYWRwIEpJVFN0YWNr
RnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZy
YW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQ
Q0ZvclRocm93W3QxXQorCisKK19sbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lOgor
ICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICBsb2FkcCBKSVRTdGFj
a0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxG
cmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5l
UENGb3JUaHJvd1t0MV0KKworCisjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsg
ZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KKyMgVGhlc2Ugb3Bjb2Rl
cyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBh
c3NlcnQKKyMgYXMgbXVjaC4KKworbWFjcm8gbm90U3VwcG9ydGVkKCkKKyAgICBpZiBBU1NFUlRf
RU5BQkxFRAorICAgICAgICBjcmFzaCgpCisgICAgZWxzZQorICAgICAgICAjIFdlIHNob3VsZCB1
c2Ugd2hhdGV2ZXIgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIGluc3RydWN0aW9uIGlzLCBqdXN0IHRv
CisgICAgICAgICMgZW5zdXJlIHRoYXQgdGhlcmUgaXMgYSBnYXAgYmV0d2VlbiBpbnN0cnVjdGlv
biBsYWJlbHMuIElmIG11bHRpcGxlCisgICAgICAgICMgc21hbGxlc3QgaW5zdHJ1Y3Rpb25zIGV4
aXN0LCB3ZSBzaG91bGQgcGljayB0aGUgb25lIHRoYXQgaXMgbW9zdAorICAgICAgICAjIGxpa2Vs
eSByZXN1bHQgaW4gZXhlY3V0aW9uIGJlaW5nIGhhbHRlZC4gQ3VycmVudGx5IHRoYXQgaXMgdGhl
IGJyZWFrCisgICAgICAgICMgaW5zdHJ1Y3Rpb24gb24gYWxsIGFyY2hpdGVjdHVyZXMgd2UncmUg
aW50ZXJlc3RlZCBpbi4gKEJyZWFrIGlzIGludDMKKyAgICAgICAgIyBvbiBJbnRlbCwgd2hpY2gg
aXMgMSBieXRlLCBhbmQgYmtwdCBvbiBBUk12Nywgd2hpY2ggaXMgMiBieXRlcy4pCisgICAgICAg
IGJyZWFrCisgICAgZW5kCitlbmQKKworX2xsaW50X29wX2dldF9hcnJheV9sZW5ndGg6CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jaGFpbjoKKyAgICBub3RTdXBw
b3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbjoKKyAgICBub3RTdXBw
b3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9wcm90bzoKKyAgICBub3RTdXBw
b3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9zZWxmOgorICAgIG5vdFN1cHBv
cnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQo
KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQo
KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQo
KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgp
CisKK19sbGludF9vcF9nZXRfYnlfaWRfcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xs
aW50X29wX2dldF9ieV9pZF9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9n
ZXRfc3RyaW5nX2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5
X2lkX2dlbmVyaWM6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9y
ZXBsYWNlOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCisKKyMgSW5kaWNhdGUgdGhlIGVuZCBvZiBMTElu
dC4KK19sbGludF9lbmQ6CisgICAgY3Jhc2goKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMb3dMZXZl
bEludGVycHJldGVyLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJMTEludE9m
ZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CisKKyNpbmNsdWRl
ICJMTEludEFzc2VtYmx5LmgiCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTG93TGV2ZWxJbnRlcnByZXRlcl9o
CisjZGVmaW5lIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3Jt
Lmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworI2RlZmlu
ZSBMTElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29kZSwgbGVuZ3RoKSBleHRlcm4gIkMiIHZvaWQg
bGxpbnRfIyNvcGNvZGUoKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoTExJTlRfSU5TVFJVQ1RJ
T05fREVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJVQ1RJT05fREVDTAorCitleHRlcm4gIkMiIHZv
aWQgbGxpbnRfYmVnaW4oKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9lbmQoKTsKK2V4dGVybiAi
QyIgdm9pZCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
ZXZhbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxs
X3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2dlbmVyaWNfcmV0dXJuX3Bv
aW50KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGlu
ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUo
KTsKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExvd0xldmVsSW50ZXJw
cmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5y
YgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOTMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK2NsYXNzIFNwZWNpYWxSZWdpc3RlcgorICBkZWYgaW5pdGlhbGl6ZShu
YW1lKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBhcm1WN09wZXJhbmQKKyAg
ICBAbmFtZQorICBlbmQKK2VuZAorCitBUk12N19EQVRBX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5u
ZXcoImlwIikKK0FSTXY3X0FERFJfUkVHID0gU3BlY2lhbFJlZ2lzdGVyLm5ldygicjMiKQorCitk
ZWYgbW92ZUltbWVkaWF0ZSh2YWx1ZSwgcmVnaXN0ZXIpCisgICMgQ3VycmVudGx5IHdlIG9ubHkg
aGFuZGxlIHRoZSBzaW1wbGUgY2FzZXMsIGFuZCBmYWxsIGJhY2sgdG8gbW92L21vdnQgZm9yIHRo
ZSBjb21wbGV4IG9uZXMuCisgIGlmIHZhbHVlID49IDAgJiYgdmFsdWUgPCAyNTYKKyAgICAkYXNt
LnB1dHMgIm1vdncgXCMje3ZhbHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNp
ZiAofnZhbHVlKSA+PSAwICYmICh+dmFsdWUpIDwgMjU2CisgICAgJGFzbS5wdXRzICJtdm53IFwj
I3t+dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgIGVsc2UKKyAgICAkYXNtLnB1
dHMgIm1vdncgXCMje3ZhbHVlICYgMHhmZmZmfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9Igor
ICAgIGlmICh2YWx1ZSAmIDB4ZmZmZjAwMDApICE9IDAKKyAgICAgICRhc20ucHV0cyAibW92dCBc
IyN7dmFsdWUgPj4gMTZ9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisgICAgZW5kCisgIGVu
ZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2Ug
bmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgInIwIgorICAgIHdoZW4gInQx
IiwgImExIiwgInIxIgorICAgICAgInIxIgorICAgIHdoZW4gInQyIiwgImEyIgorICAgICAgInIy
IgorICAgIHdoZW4gImEzIgorICAgICAgInIzIgorICAgIHdoZW4gInQzIgorICAgICAgInI0Igor
ICAgIHdoZW4gInQ0IgorICAgICAgInI3IgorICAgIHdoZW4gImNmciIKKyAgICAgICJyNSIKKyAg
ICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1ByZXBh
cmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1l
bW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdMb2Fk
U3RvcmVXcmFwCisgICAgeWllbGQKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisg
IGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAiZnIiCisg
ICAgICAiZDAiCisgICAgd2hlbiAiZnIxIiwKKyAgICAgICJkMSIKKyAgICB3aGVuICJmcjIiCisg
ICAgICAiZDIiCisgICAgd2hlbiAiZnIzIgorICAgICAgImQzIgorICAgIHdoZW4gImZyNCIKKyAg
ICAgICJkNCIKKyAgICB3aGVuICJmcjUiCisgICAgICAiZDUiCisgICAgZWxzZQorICAgICAgcmFp
c2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlP
cGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAg
YXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlp
ZWxkIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiBhcm1WN09wZXJh
bmQKKyAgICByYWlzZSAiSW52YWxpZCBpbW1lZGlhdGUgI3t2YWx1ZX0iIGlmIHZhbHVlIDwgMCBv
ciB2YWx1ZSA+IDI1NQorICAgICIjJHt2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJl
cGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxl
TWVtb3J5T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xv
YWRTdG9yZVdyYXAKKyAgICB5aWVsZCBzZWxmCisgIGVuZAorZW5kCisKK21vZHVsZSBBUk12N0Fk
ZHJlc3NVdGlsaXRpZXMKKyAgZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHNlbGYuYXJtVjdQ
cmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgJGFzbS5wdXRzICJcdGxkciAje3NlbGYu
YXJtVjdQb3NzaWJseU1lbW9yeU9wZXJhbmR9LCAje0FSTXY3X0RBVEFfUkVHLmFybVY3T3BlcmFu
ZH0iCisgICAgeWllbGQgQVJNdjdfREFUQV9SRUcKKyAgICAkYXNtLnB1dHMgIlx0c3RyICN7QVJN
djdfREFUQV9SRUcuYXJtVjdPcGVyYW5kfSwgI3tzZWxmLmFybVY3UG9zc2libHlNZW1vcnlPcGVy
YW5kfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBpbmNsdWRlIEFSTXY3QWRkcmVz
c1V0aWxpdGllcworCisgIGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAg
ICBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAg
bW92ZUltbWVkaWF0ZShvZmZzZXQudmFsdWUsIEFSTXY3X0FERFJfUkVHKQorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52
YWx1ZSA8IC0weGZmIHx8IG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICAiWyN7YmFzZS5hcm1W
N09wZXJhbmR9LCAje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH1dIgorICAgIGVsc2UKKyAg
ICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7b2Zmc2V0LmFybVY3T3BlcmFuZH1dIgorICAg
IGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgaW5jbHVkZSBBUk12N0FkZHJl
c3NVdGlsaXRpZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisg
ICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAgIG1vdmVJbW1lZGlhdGUob2Zmc2V0LnZhbHVl
LCBBUk12N19BRERSX1JFRykKKyAgICAgICRhc20ucHV0cyAiYWRkdyAje0FSTXY3X0FERFJfUkVH
LmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSAh
PSAwCisgICAgICAiWyN7QVJNdjdfQUREUl9SRUcuYXJtVjdPcGVyYW5kfSwgI3tpbmRleC5hcm1W
N09wZXJhbmR9LCBsc2wgXCMje3NjYWxlfV0iCisgICAgZWxzZQorICAgICAgIlsje2Jhc2UuYXJt
VjdPcGVyYW5kfSwgI3tpbmRleC5hcm1WN09wZXJhbmR9LCBsc2wgXCMje3NjYWxlfV0iCisgICAg
ZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBpbmNsdWRlIEFSTXY3
QWRkcmVzc1V0aWxpdGllcworICAKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3Bl
cmFuZAorICAgIG1vdmVJbW1lZGlhdGUoYWRkcmVzcy52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisg
IGVuZAorICAKKyAgZGVmIGFybVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgIlsje0FSTXY3
X0FERFJfUkVHLmFybVY3T3BlcmFuZH1dIgorICBlbmQKK2VuZAorCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTM1
IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2Vu
ZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJw
YXJzZXIiCityZXF1aXJlICJzZWxmX2hhc2giCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUg
InRyYW5zZm9ybSIKKworY2xhc3MgQXNzZW1ibGVyCisgIGRlZiBpbml0aWFsaXplKG91dHApCisg
ICAgQG91dHAgPSBvdXRwCisgICAgQHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBlbnRl
ckFzbQorICAgIEBvdXRwLnB1dHMgImFzbSAoIgorICAgIEBzdGF0ZSA9IDphc20KKyAgZW5kCisg
IAorICBkZWYgbGVhdmVBc20KKyAgICBAb3V0cC5wdXRzICIpOyIKKyAgICBAc3RhdGUgPSA6Y3Bw
CisgIGVuZAorICAKKyAgZGVmIGluQXNtCisgICAgZW50ZXJBc20KKyAgICB5aWVsZAorICAgIGxl
YXZlQXNtCisgIGVuZAorICAKKyAgZGVmIHB1dHMoKmxpbmUpCisgICAgcmFpc2UgdW5sZXNzIEBz
dGF0ZSA9PSA6YXNtCisgICAgQG91dHAucHV0cygiXCJcXHQiICsgbGluZS5qb2luKCcnKSArICJc
XG5cIiIpCisgIGVuZAorICAKKyAgZGVmIHByaW50KGxpbmUpCisgICAgcmFpc2UgdW5sZXNzIEBz
dGF0ZSA9PSA6YXNtCisgICAgQG91dHAucHJpbnQoIlwiIiArIGxpbmUgKyAiXCIiKQorICBlbmQK
KyAgCisgIGRlZiBwdXRzTGFiZWwobGFiZWxOYW1lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUg
PT0gOmFzbQorICAgIEBvdXRwLnB1dHMoIlwiLmdsb2JsIFwiIFNZTUJPTF9TVFJJTkcoI3tsYWJl
bE5hbWV9KSBcIlxcblwiIikKKyAgICBAb3V0cC5wdXRzKCJISURFX1NZTUJPTCgje2xhYmVsTmFt
ZX0pIFwiXFxuXCIiKQorICAgIEBvdXRwLnB1dHMoIlNZTUJPTF9TVFJJTkcoI3tsYWJlbE5hbWV9
KSBcIjpcXG5cIiIpCisgIGVuZAorICAKKyAgZGVmIHB1dHNMb2NhbExhYmVsKGxhYmVsTmFtZSkK
KyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wdXRzKCJMT0NBTF9M
QUJFTF9TVFJJTkcoI3tsYWJlbE5hbWV9KSBcIjpcXG5cIiIpCisgIGVuZAorICAKKyAgZGVmIHNl
bGYubGFiZWxSZWZlcmVuY2UobGFiZWxOYW1lKQorICAgICJcIiBTWU1CT0xfU1RSSU5HKCN7bGFi
ZWxOYW1lfSkgXCIiCisgIGVuZAorICAKKyAgZGVmIHNlbGYubG9jYWxMYWJlbFJlZmVyZW5jZShs
YWJlbE5hbWUpCisgICAgIlwiIExPQ0FMX0xBQkVMX1NUUklORygje2xhYmVsTmFtZX0pIFwiIgor
ICBlbmQKKyAgCisgIGRlZiBjb21tZW50KHRleHQpCisgICAgQG91dHAucHV0cyAiLy8gI3t0ZXh0
fSIKKyAgZW5kCitlbmQKKworYXNtRmlsZSA9IEFSR1Yuc2hpZnQKK29mZnNldHNGaWxlID0gQVJH
Vi5zaGlmdAorb3V0cHV0RmxubSA9IEFSR1Yuc2hpZnQKKworb2Zmc2V0c0xpc3QsIGNvbmZpZ0lu
ZGV4ID0gb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChvZmZzZXRzRmlsZSkKK2lucHV0RGF0
YSA9IElPOjpyZWFkKGFzbUZpbGUpCisKK2lucHV0SGFzaCA9CisgICIvLyBvZmZsaW5lYXNtIGlu
cHV0IGhhc2g6ICIgKyBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0YSkgKworICAiICIg
KyBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KChvZmZzZXRzTGlzdCArIFtjb25maWdJbmRleF0pLmpv
aW4oJyAnKSkgKworICAiICIgKyBzZWxmSGFzaAorCitpZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0
RmxubQorICBGaWxlLm9wZW4ob3V0cHV0RmxubSwgInIiKSB7CisgICAgfCBpbnAgfAorICAgIGZp
cnN0TGluZSA9IGlucC5nZXRzCisgICAgaWYgZmlyc3RMaW5lIGFuZCBmaXJzdExpbmUuY2hvbXAg
PT0gaW5wdXRIYXNoCisgICAgICAkc3RkZXJyLnB1dHMgIk5vdGhpbmcgY2hhbmdlZC4iCisgICAg
ICBleGl0IDAKKyAgICBlbmQKKyAgfQorZW5kCisKK0ZpbGUub3BlbihvdXRwdXRGbG5tLCAidyIp
IHsKKyAgfCBvdXRwIHwKKyAgJG91dHB1dCA9IG91dHAKKyAgJG91dHB1dC5wdXRzIGlucHV0SGFz
aAorICAKKyAgJGFzbSA9IEFzc2VtYmxlci5uZXcoJG91dHB1dCkKKyAgCisgIGFzdCA9IHBhcnNl
KGxleChpbnB1dERhdGEpKQorICAKKyAgZm9yU2V0dGluZ3MoY29tcHV0ZVNldHRpbmdzQ29tYmlu
YXRpb25zKGFzdClbY29uZmlnSW5kZXhdLCBhc3QpIHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3Ms
IGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRl
U2V0dGluZ3MpCisgICAgbG93TGV2ZWxBU1QgPSBsb3dMZXZlbEFTVC5yZXNvbHZlKCpidWlsZE9m
ZnNldHNNYXAobG93TGV2ZWxBU1QsIG9mZnNldHNMaXN0KSkKKyAgICBlbWl0Q29kZUluQ29uZmln
dXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCkgeworICAgICAg
JGFzbS5pbkFzbSB7CisgICAgICAgIGxvd0xldmVsQVNULmxvd2VyKGJhY2tlbmQpCisgICAgICB9
CisgICAgfQorICB9Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
c3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0
LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxMyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworIworIyBCYXNlIHV0aWxpdHkgdHlwZXMgZm9yIHRoZSBBU1QuCisj
CisKKyMgVmFsaWQgbWV0aG9kcyBmb3IgTm9kZToKKyMKKyMgbm9kZS5jaGlsZHJlbiAtPiBSZXR1
cm5zIGFuIGFycmF5IG9mIGltbWVkaWF0ZSBjaGlsZHJlbi4KKyMKKyMgbm9kZS5kZXNjZW5kZW50
cyAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBzdHJpY3QgZGVzY2VuZGFudHMgKGNoaWxkcmVu
CisjICAgICBhbmQgY2hpbGRyZW4gb2YgY2hpbGRyZW4sIHRyYW5zaXRpdmVseSkuCisjCisjIG5v
ZGUuZmxhdHRlbiAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHN0cmljdCBkZXNj
ZW5kYW50cyBhbmQKKyMgICAgIHRoZSBub2RlIGl0c2VsZi4KKyMKKyMgbm9kZS5maWx0ZXIodHlw
ZSkgLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRob3NlIGVsZW1lbnRzIGluCisjICAg
ICBub2RlLmZsYXR0ZW4gdGhhdCBhcmUgb2YgdGhlIGdpdmVuIHR5cGUgKGlzX2E/IHR5cGUgcmV0
dXJucyB0cnVlKS4KKyMKKyMgbm9kZS5tYXBDaGlsZHJlbnt8dnwgLi4ufSAtPiBSZXR1cm5zIGEg
bmV3IG5vZGUgd2l0aCBhbGwgY2hpbGRyZW4KKyMgICAgIHJlcGxhY2VkIGFjY29yZGluZyB0byB0
aGUgZ2l2ZW4gYmxvY2suCisjCisjIEV4YW1wbGVzOgorIworIyBub2RlLmZpbHRlcihTZXR0aW5n
KS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzZXR0aW5ncyB0aGF0IHRoZSBBU1QncworIyAg
ICAgSWZUaGVuRWxzZSBibG9ja3MgZGVwZW5kIG9uLgorIworIyBub2RlLmZpbHRlcihTdHJ1Y3RP
ZmZzZXQpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHN0cnVjdHVyZSBvZmZzZXRzCisjICAg
ICB0aGF0IHRoZSBBU1QgZGVwZW5kcyBvbi4KKworY2xhc3MgTm9kZQorICBhdHRyX3JlYWRlciA6
Y29kZU9yaWdpbgorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBAY29kZU9y
aWdpbiA9IGNvZGVPcmlnaW4KKyAgZW5kCisgIAorICBkZWYgY29kZU9yaWdpblN0cmluZworICAg
ICJsaW5lIG51bWJlciAje0Bjb2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYgZGVzY2VuZGFu
dHMKKyAgICBjaGlsZHJlbi5jb2xsZWN0e3x2fCB2LmZsYXR0ZW59LmZsYXR0ZW4KKyAgZW5kCisg
IAorICBkZWYgZmxhdHRlbgorICAgIFtzZWxmXSArIGRlc2NlbmRhbnRzCisgIGVuZAorICAKKyAg
ZGVmIGZpbHRlcih0eXBlKQorICAgIGZsYXR0ZW4uc2VsZWN0e3x2fCB2LmlzX2E/IHR5cGV9Cisg
IGVuZAorZW5kCisKK2NsYXNzIE5vQ2hpbGRyZW4gPCBOb2RlCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIHNlbGYKKyAgZW5k
CitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0S2V5CisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpm
aWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUoc3RydWN0LCBmaWVsZCkKKyAgICBAc3RydWN0ID0g
c3RydWN0CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5kCisgIAorICBkZWYgaGFzaAorICAgIEBz
dHJ1Y3QuaGFzaCArIEBmaWVsZC5oYXNoICogMworICBlbmQKKyAgCisgIGRlZiBlcWw/KG90aGVy
KQorICAgIEBzdHJ1Y3QgPT0gb3RoZXIuc3RydWN0IGFuZCBAZmllbGQgPT0gb3RoZXIuZmllbGQK
KyAgZW5kCitlbmQKKyAgICAKKyMKKyMgQVNUIG5vZGVzLgorIworCitjbGFzcyBTdHJ1Y3RPZmZz
ZXQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAg
CisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JGaWVsZChjb2RlT3JpZ2luLCBz
dHJ1Y3QsIGZpZWxkKQorICAgIGtleSA9IFN0cnVjdE9mZnNldEtleS5uZXcoc3RydWN0LCBmaWVs
ZCkKKyAgICAKKyAgICB1bmxlc3MgQEBtYXBwaW5nW2tleV0KKyAgICAgIEBAbWFwcGluZ1trZXld
ID0gU3RydWN0T2Zmc2V0Lm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGVuZAor
ICAgIEBAbWFwcGluZ1trZXldCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tzdHJ1Y3R9
Ojoje2ZpZWxkfSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAgIGlmIEBzdHJ1Y3Qg
IT0gb3RoZXIuc3RydWN0CisgICAgICByZXR1cm4gQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0Cisg
ICAgZW5kCisgICAgQGZpZWxkIDw9PiBvdGhlci5maWVsZAorICBlbmQKK2VuZAorCitjbGFzcyBT
aXplb2YgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBz
dHJ1Y3QgPSBzdHJ1Y3QKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNl
bGYuZm9yTmFtZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tzdHJ1
Y3RdCisgICAgICBAQG1hcHBpbmdbc3RydWN0XSA9IFNpemVvZi5uZXcoY29kZU9yaWdpbiwgc3Ry
dWN0KQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tzdHJ1Y3RdCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAic2l6ZW9mICN7QHN0cnVjdH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikK
KyAgICBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRp
YXRlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhbHVl
ID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje3ZhbHVlfSIKKyAgZW5kCisg
IAorICBkZWYgPT0ob3RoZXIpCisgICAgb3RoZXIuaXNfYT8gSW1tZWRpYXRlIGFuZCBvdGhlci52
YWx1ZSA9PSBAdmFsdWUKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUK
KyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxl
ZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtA
bGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZEltbWVk
aWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIK
KyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIg
OmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmln
aHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQg
PSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQor
ICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVP
cmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgIigje2xlZnQuZHVtcH0gLSAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgTXVsSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQK
KyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRl
ZiBtYXBDaGlsZHJlbgorICAgIE11bEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBA
bGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xl
ZnQuZHVtcH0gKiAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRp
YXRlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hp
bGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGNoaWxkXQorICBlbmQKKyAgCisg
IGRlZiBtYXBDaGlsZHJlbgorICAgIE5lZ0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxk
IEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKC0je0BjaGlsZC5kdW1wfSki
CisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVh
ZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5n
ID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxl
c3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBSZWdpc3RlcklELm5l
dyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVy
SUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBu
YW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUo
Y29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1h
cHBpbmdbbmFtZV0gPSBGUFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5k
CisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisg
IGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9
CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBA
bWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gVmFyaWFibGUubmV3KGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MgPCBOb2RlCisg
IGF0dHJfcmVhZGVyIDpiYXNlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBiYXNlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJh
c2UKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAg
W0BiYXNlLCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZHJl
c3MubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH1dIgorICBl
bmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXggPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6
aW5kZXgsIDpzY2FsZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
YmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
YmFzZSA9IGJhc2UKKyAgICBAaW5kZXggPSBpbmRleAorICAgIEBzY2FsZSA9IHNjYWxlCisgICAg
cmFpc2UgdW5sZXNzIFsxLCAyLCA0LCA4XS5tZW1iZXI/IEBzY2FsZQorICAgIEBvZmZzZXQgPSBv
ZmZzZXQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBpbmRleCwgQG9m
ZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBCYXNlSW5kZXgubmV3KGNv
ZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAaW5kZXgpLCBAc2NhbGUsICh5aWVsZCBA
b2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jh
c2UuZHVtcH0sICN7aW5kZXguZHVtcH0sICN7c2NhbGV9XSIKKyAgZW5kCitlbmQKKworY2xhc3Mg
QWJzb2x1dGVBZGRyZXNzIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6YWRkcmVzcworICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYWRkcmVzcykKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBhZGRyZXNzID0gYWRkcmVzcworICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
IiN7YWRkcmVzcy5kdW1wfVtdIgorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbiA8IE5v
ZGUKKyAgYXR0cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBvcGNvZGUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQG9wY29kZSA9IG9wY29kZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgIGVuZAorICAK
KyAgZGVmIGNoaWxkcmVuCisgICAgb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRy
ZW4oJnByb2MpCisgICAgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVy
YW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0IiArIG9wY29k
ZS50b19zICsgIiAiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCisg
IGVuZAorZW5kCisKK2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiXHRlcnJvciIKKyAgZW5kCitlbmQKKworY2xhc3MgQ29uc3REZWNsIDwgTm9kZQorICBh
dHRyX3JlYWRlciA6dmFyaWFibGUsIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhcmlh
YmxlID0gdmFyaWFibGUKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIFtAdmFyaWFibGUsIEB2YWx1ZV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRy
ZW4KKyAgICBDb25zdERlY2wubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAdmFyaWFibGUpLCAoeWll
bGQgQHZhbHVlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJjb25zdCAje0B2YXJpYWJs
ZS5kdW1wfSA9ICN7QHZhbHVlLmR1bXB9IgorICBlbmQKK2VuZAorCiskbGFiZWxNYXBwaW5nID0g
e30KKworY2xhc3MgTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJl
bCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNf
YT8gTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFiZWwubmV3
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBM
b2NhbExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBu
YW1lID0gbmFtZQorICBlbmQKKworICBAQHVuaXF1ZU5hbWVDb3VudGVyID0gMAorICAKKyAgZGVm
IHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFt
ZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRs
YWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTG9jYWxMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJl
bE1hcHBpbmdbbmFtZV0gPSBMb2NhbExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVu
ZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgc2VsZi51bmlxdWUo
Y29tbWVudCkKKyAgICBuZXdOYW1lID0gIl8je2NvbW1lbnR9IgorICAgIGlmICRsYWJlbE1hcHBp
bmdbbmV3TmFtZV0KKyAgICAgIHdoaWxlICRsYWJlbE1hcHBpbmdbbmV3TmFtZSA9ICJfI3tAQHVu
aXF1ZU5hbWVDb3VudGVyfV8je2NvbW1lbnR9Il0KKyAgICAgICAgQEB1bmlxdWVOYW1lQ291bnRl
ciArPSAxCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBmb3JOYW1lKG5pbCwgbmV3TmFtZSkKKyAg
ZW5kCisgIAorICBkZWYgY2xlYW5OYW1lCisgICAgaWYgbmFtZSA9fiAvXlwuLworICAgICAgIl8i
ICsgbmFtZVsxLi4tMV0KKyAgICBlbHNlCisgICAgICBuYW1lCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVm
ZXJlbmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0g
bGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAg
CisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAo
eWllbGQgQGxhYmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5hbWUKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAgZW5kCitlbmQKKworY2xhc3Mg
TG9jYWxMYWJlbFJlZmVyZW5jZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmxhYmVsCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAg
W0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBMb2NhbExhYmVsUmVm
ZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxhYmVsKSkKKyAgZW5kCisgIAorICBkZWYg
bmFtZQorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxhYmVsLm5h
bWUKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDps
aXN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsaXN0KQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQGxpc3QgPSBsaXN0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisg
ICAgbGlzdAorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBTZXF1ZW5j
ZS5uZXcoY29kZU9yaWdpbiwgQGxpc3QubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgIGxpc3QuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCJcbiIpCisgIGVuZAorZW5kCisK
K2NsYXNzIFRydWUgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIobmls
KQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBUcnVlLm5ldworICAKKyAgZGVmIHNlbGYuaW5z
dGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVmIHZhbHVlCisgICAgdHJ1ZQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgInRydWUiCisgIGVuZAorZW5kCisKK2NsYXNzIEZh
bHNlIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQorICAgIHN1cGVyKG5pbCkKKyAgZW5k
CisgIAorICBAQGluc3RhbmNlID0gRmFsc2UubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQor
ICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICBmYWxzZQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgImZhbHNlIgorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlQ2xh
c3MKKyAgZGVmIGFzTm9kZQorICAgIFRydWUuaW5zdGFuY2UKKyAgZW5kCitlbmQKKworY2xhc3Mg
RmFsc2VDbGFzcworICBkZWYgYXNOb2RlCisgICAgRmFsc2UuaW5zdGFuY2UKKyAgZW5kCitlbmQK
KworY2xhc3MgU2V0dGluZyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVm
IHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFt
ZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFNldHRpbmcubmV3KGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxl
ZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSBy
aWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBl
bmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFuZC5uZXcoY29kZU9yaWdpbiwgKHlpZWxk
IEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7
bGVmdC5kdW1wfSBhbmQgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE9yIDwg
Tm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0
ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisg
ICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgT3Iu
bmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gb3IgI3tyaWdodC5kdW1wfSkiCisgIGVu
ZAorZW5kCisKK2NsYXNzIE5vdCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBjaGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0
LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTm90Lm5ldyhjb2Rl
T3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIobm90
ICN7Y2hpbGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwIDwgTm9DaGlsZHJlbgor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRza2lwIgorICBlbmQKK2VuZAorCitjbGFzcyBJZlRo
ZW5FbHNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6cHJlZGljYXRlLCA6dGhlbkNhc2UKKyAgYXR0
cl9hY2Nlc3NvciA6ZWxzZUNhc2UKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHBy
ZWRpY2F0ZSwgdGhlbkNhc2UpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAcHJlZGljYXRl
ID0gcHJlZGljYXRlCisgICAgQHRoZW5DYXNlID0gdGhlbkNhc2UKKyAgICBAZWxzZUNhc2UgPSBT
a2lwLm5ldyhjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIGlmIEBl
bHNlQ2FzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZSwgQGVsc2VDYXNlXQorICAgIGVs
c2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2VdCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmIG1hcENoaWxkcmVuCisgICAgSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBw
cmVkaWNhdGUpLCAoeWllbGQgQHRoZW5DYXNlKSwgKHlpZWxkIEBlbHNlQ2FzZSkpCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiaWYgI3twcmVkaWNhdGUuZHVtcH1cbiIgKyB0aGVuQ2FzZS5k
dW1wICsgIlxuZWxzZVxuIiArIGVsc2VDYXNlLmR1bXAgKyAiXG5lbmQiCisgIGVuZAorZW5kCisK
K2NsYXNzIE1hY3JvIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOnZhcmlhYmxlcywgOmJv
ZHkKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9k
eSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAgIEB2YXJpYWJs
ZXMgPSB2YXJpYWJsZXMKKyAgICBAYm9keSA9IGJvZHkKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBAdmFyaWFibGVzICsgW0Bib2R5XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJl
bgorICAgIE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQHZhcmlhYmxlcy5tYXB7fHZ8IHlp
ZWxkIHZ9LCAoeWllbGQgQGJvZHkpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIm1hY3Jv
ICN7bmFtZX0oIiArIHZhcmlhYmxlcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAi
KVxuIiArIGJvZHkuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm9DYWxs
IDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBuYW1lID0gbmFtZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgICAgcmFpc2UgdW5s
ZXNzIEBvcGVyYW5kcworICAgIEBvcGVyYW5kcy5lYWNoe3x2fCByYWlzZSB1bmxlc3Mgdn0KKyAg
ZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4oJnByb2MpCisgICAgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwg
QG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHQje25h
bWV9KCIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKSIKKyAg
ZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2Vu
ZHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFj
a2VuZHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NSBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAieDg2Igor
CitCQUNLRU5EUyA9CisgIFsKKyAgICJYODYiLAorICAgIkFSTXY3IgorICBdCisKK1dPUktJTkdf
QkFDS0VORFMgPQorICBbCisgICAiWDg2IgorICBdCisKK0JBQ0tFTkRfUEFUVEVSTiA9IFJlZ2V4
cC5uZXcoJ1xcQSgnICsgQkFDS0VORFMuam9pbignKXwoJykgKyAnKVxcWicpCisKK2NsYXNzIE5v
ZGUKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgc2VuZCgibG93ZXIiICsgbmFtZSkKKyAgZW5kCitl
bmQKKworIyBPdmVycmlkZXMgZm9yIGxvd2VyKCkgZm9yIHRob3NlIG5vZGVzIHRoYXQgYXJlIGJh
Y2tlbmQtYWdub3N0aWMKKworY2xhc3MgTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFz
bS5wdXRzTGFiZWwoc2VsZi5uYW1lWzEuLi0xXSkKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxM
YWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHNMb2NhbExhYmVsICJfb2ZmbGlu
ZWFzbV8je3NlbGYubmFtZVsxLi4tMV19IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVy
ZW5jZQorICBkZWYgYXNtTGFiZWwKKyAgICBBc3NlbWJsZXIubGFiZWxSZWZlcmVuY2UobmFtZVsx
Li4tMV0pCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UKKyAgZGVmIGFz
bUxhYmVsCisgICAgQXNzZW1ibGVyLmxvY2FsTGFiZWxSZWZlcmVuY2UoIl9vZmZsaW5lYXNtXyIr
bmFtZVsxLi4tMV0pCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAKKyAgZGVmIGxvd2VyKG5hbWUp
CisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIEBs
aXN0LmVhY2ggeworICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUubG93ZXIobmFtZSkKKyAgICB9
CisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9l
eHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODggQEAKKyMhL3Vzci9iaW4vZW52
IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworJDogPDwgRmls
ZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgImRpZ2Vz
dC9zaGExIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNl
bGZfaGFzaCIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitpbnB1
dEZsbm0gPSBBUkdWLnNoaWZ0CitvdXRwdXRGbG5tID0gQVJHVi5zaGlmdAorCitkZWYgZW1pdE1h
Z2ljTnVtYmVyCisgIE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVhY2ggeworICAgIHwgbnVtYmVyIHwK
KyAgICAkb3V0cHV0LnB1dHMgIiN7bnVtYmVyfSwiCisgIH0KK2VuZAorCitpbnB1dERhdGEgPSBJ
Tzo6cmVhZChpbnB1dEZsbm0pCitpbnB1dEhhc2ggPSAiLy8gb2ZmbGluZWFzbSBpbnB1dCBoYXNo
OiAje0RpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoaW5wdXREYXRhKX0gI3tzZWxmSGFzaH0iCisKK2lm
IEZpbGVUZXN0LmV4aXN0PyBvdXRwdXRGbG5tCisgIEZpbGUub3BlbihvdXRwdXRGbG5tLCAiciIp
IHsKKyAgICB8IGlucCB8CisgICAgZmlyc3RMaW5lID0gaW5wLmdldHMKKyAgICBpZiBmaXJzdExp
bmUgYW5kIGZpcnN0TGluZS5jaG9tcCA9PSBpbnB1dEhhc2gKKyAgICAgICRzdGRlcnIucHV0cyAi
Tm90aGluZyBjaGFuZ2VkLiIKKyAgICAgIGV4aXQgMAorICAgIGVuZAorICB9CitlbmQKKworb3Jp
Z2luYWxBU1QgPSBwYXJzZShsZXgoaW5wdXREYXRhKSkKKworRmlsZS5vcGVuKG91dHB1dEZsbm0s
ICJ3IikgeworICB8IG91dHAgfAorICAkb3V0cHV0ID0gb3V0cAorICBvdXRwLnB1dHMgaW5wdXRI
YXNoCisgIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhvcmlnaW5hbEFTVCkgeworICAgIHwg
c2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfAorICAgIG9mZnNldHNMaXN0ID0gYXN0LmZp
bHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorICAgIHNpemVzTGlzdCA9IGFzdC5maWx0ZXIo
U2l6ZW9mKS51bmlxLnNvcnQKKyAgICAKKyAgICBsZW5ndGggPSAoT0ZGU0VUX01BR0lDX05VTUJF
UlMuc2l6ZSArIDEpICogKDEgKyBvZmZzZXRzTGlzdC5zaXplICsgc2l6ZXNMaXN0LnNpemUpCisg
ICAgCisgICAgb3V0cC5wdXRzICJzdGF0aWMgY29uc3QgdW5zaWduZWQgZXh0cmFjdG9yVGFibGVb
I3tsZW5ndGh9XSA9IHsiCisgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgb3V0cC5wdXRzICIje2lu
ZGV4fSwiCisgICAgb2Zmc2V0c0xpc3QuZWFjaCB7CisgICAgICB8IG9mZnNldCB8CisgICAgICBl
bWl0TWFnaWNOdW1iZXIKKyAgICAgIG91dHAucHV0cyAiT0ZGTElORV9BU01fT0ZGU0VUT0YoI3tv
ZmZzZXQuc3RydWN0fSwgI3tvZmZzZXQuZmllbGR9KSwiCisgICAgfQorICAgIHNpemVzTGlzdC5l
YWNoIHsKKyAgICAgIHwgb2Zmc2V0IHwKKyAgICAgIGVtaXRNYWdpY051bWJlcgorICAgICAgb3V0
cC5wdXRzICJzaXplb2YoI3tvZmZzZXQuc3RydWN0fSksIgorICAgIH0KKyAgICBvdXRwLnB1dHMg
In07IgorICB9Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0
cnVjdGlvbnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vaW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4OCBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworTUFDUk9fSU5TVFJVQ1RJ
T05TID0KKyAgWworICAgImFkZGkiLAorICAgImFuZGkiLAorICAgImxzaGlmdGkiLAorICAgIm11
bGkiLAorICAgIm5lZ2kiLAorICAgIm5vdGkiLAorICAgIm9yaSIsCisgICAicnNoaWZ0aSIsCisg
ICAidXJzaGlmdGkiLAorICAgInN1YmkiLAorICAgInhvcmkiLAorICAgImxvYWRpIiwKKyAgICJs
b2FkYiIsCisgICAibG9hZGgiLAorICAgInN0b3JlaSIsCisgICAic3RvcmViIiwKKyAgICJsb2Fk
ZCIsCisgICAibW92ZWQiLAorICAgInN0b3JlZCIsCisgICAiYWRkZCIsCisgICAiZGl2ZCIsCisg
ICAic3ViZCIsCisgICAibXVsZCIsCisgICAic3FydGQiLAorICAgImNpMmQiLAorICAgImZpaTJk
IiwgIyB1c2FnZTogZmlpMmQgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3By
IHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPiwgPGZwcj4KKyAgICJmZDJpaSIsICMgdXNhZ2U6
IGZkMmlpIDxmcHI+LCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0
aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+CisgICAiYmRlcSIsCisgICAiYmRuZXEiLAorICAgImJk
Z3QiLAorICAgImJkZ3RlcSIsCisgICAiYmRsdCIsCisgICAiYmRsdGVxIiwKKyAgICJiZGVxdW4i
LAorICAgImJkbmVxdW4iLAorICAgImJkZ3R1biIsCisgICAiYmRndGVxdW4iLAorICAgImJkbHR1
biIsCisgICAiYmRsdGVxdW4iLAorICAgImJ0ZDJpIiwKKyAgICJ0ZDJpIiwKKyAgICJiY2QyaSIs
CisgICAibW92ZHoiLAorICAgInBvcCIsCisgICAicHVzaCIsCisgICAibW92ZSIsCisgICAic3hp
MnAiLAorICAgInp4aTJwIiwKKyAgICJub3AiLAorICAgImJpZXEiLAorICAgImJpbmVxIiwKKyAg
ICJiaWEiLAorICAgImJpYWVxIiwKKyAgICJiaWIiLAorICAgImJpYmVxIiwKKyAgICJiaWd0IiwK
KyAgICJiaWd0ZXEiLAorICAgImJpbHQiLAorICAgImJpbHRlcSIsCisgICAiYmJlcSIsCisgICAi
YmJuZXEiLAorICAgImJiYSIsCisgICAiYmJhZXEiLAorICAgImJiYiIsCisgICAiYmJiZXEiLAor
ICAgImJiZ3QiLAorICAgImJiZ3RlcSIsCisgICAiYmJsdCIsCisgICAiYmJsdGVxIiwKKyAgICJi
dGlvIiwKKyAgICJidGlzIiwKKyAgICJidGl6IiwKKyAgICJidGlueiIsCisgICAiYnRibyIsCisg
ICAiYnRicyIsCisgICAiYnRieiIsCisgICAiYnRibnoiLAorICAgImptcCIsCisgICAiYmFkZGlv
IiwKKyAgICJiYWRkaXMiLAorICAgImJhZGRpeiIsCisgICAiYmFkZGlueiIsCisgICAiYnN1Ymlv
IiwKKyAgICJic3ViaXMiLAorICAgImJzdWJpeiIsCisgICAiYnN1YmlueiIsCisgICAiYm11bGlv
IiwKKyAgICJibXVsaXMiLAorICAgImJtdWxpeiIsCisgICAiYm11bGlueiIsCisgICAiYm9yaW8i
LAorICAgImJvcmlzIiwKKyAgICJib3JpeiIsCisgICAiYm9yaW56IiwKKyAgICJicmVhayIsCisg
ICAiY2FsbCIsCisgICAicmV0IiwKKyAgICJjaWVxIiwKKyAgICJjaW5lcSIsCisgICAiY2lhIiwK
KyAgICJjaWFlcSIsCisgICAiY2liIiwKKyAgICJjaWJlcSIsCisgICAiY2lndCIsCisgICAiY2ln
dGVxIiwKKyAgICJjaWx0IiwKKyAgICJjaWx0ZXEiLAorICAgInRpbyIsCisgICAidGlzIiwKKyAg
ICJ0aXoiLAorICAgInRpbnoiLAorICAgInRibyIsCisgICAidGJzIiwKKyAgICJ0YnoiLAorICAg
InRibnoiLAorICAgInBlZWsiLAorICAgInBva2UiLAorICAgImJwZXEiLAorICAgImJwbmVxIiwK
KyAgICJicGEiLAorICAgImJwYWVxIiwKKyAgICJicGIiLAorICAgImJwYmVxIiwKKyAgICJicGd0
IiwKKyAgICJicGd0ZXEiLAorICAgImJwbHQiLAorICAgImJwbHRlcSIsCisgICAiYWRkcCIsCisg
ICAiYW5kcCIsCisgICAib3JwIiwKKyAgICJzdWJwIiwKKyAgICJ4b3JwIiwKKyAgICJsb2FkcCIs
CisgICAiY3BlcSIsCisgICAiY3BuZXEiLAorICAgImNwYSIsCisgICAiY3BhZXEiLAorICAgImNw
YiIsCisgICAiY3BiZXEiLAorICAgImNwZ3QiLAorICAgImNwZ3RlcSIsCisgICAiY3BsdCIsCisg
ICAiY3BsdGVxIiwKKyAgICJzdG9yZXAiLAorICAgImJ0cG8iLAorICAgImJ0cHMiLAorICAgImJ0
cHoiLAorICAgImJ0cG56IiwKKyAgICJiYWRkcG8iLAorICAgImJhZGRwcyIsCisgICAiYmFkZHB6
IiwKKyAgICJiYWRkcG56IgorICBdCisKK1g4Nl9JTlNUUlVDVElPTlMgPQorICBbCisgICAiY2Rx
aSIsCisgICAiaWRpdmkiCisgIF0KKworSU5TVFJVQ1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05T
ICsgWDg2X0lOU1RSVUNUSU9OUworCitJTlNUUlVDVElPTl9QQVRURVJOID0gUmVnZXhwLm5ldygn
XFxBKCgnICsgSU5TVFJVQ1RJT05TLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9l
eHRyYWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K01BR0lDX05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTUwIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJvZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cyIK
KworT0ZGU0VUX01BR0lDX05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisj
CisjIG9mZnNldHNMaXN0KGFzdCkKKyMgc2l6ZXNMaXN0KGFzdCkKKyMKKyMgUmV0dXJucyBhIGxp
c3Qgb2Ygb2Zmc2V0cyBhbmQgc2l6ZXMgdXNlZCBieSB0aGUgQVNULgorIworCitkZWYgb2Zmc2V0
c0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CitlbmQKKwor
ZGVmIHNpemVzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKK2VuZAor
CisjCisjIG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgoYXN0LCBmaWxlKSAtPgorIyAgICAg
W29mZnNldHMsIGluZGV4XQorIworIyBQYXJzZXMgdGhlIG9mZnNldHMgZnJvbSBhIGZpbGUgYW5k
IHJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHRoZQorIyBpbmRleCBvZiB0aGUgY29uZmln
dXJhdGlvbiB0aGF0IGlzIHZhbGlkIGluIHRoaXMgYnVpbGQgdGFyZ2V0LgorIworCitkZWYgb2Zm
c2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChmaWxlKQorICBpbmRleCA9IG5pbAorICBvZmZzZXRz
ID0gW10KKyAgZW5kaWFubmVzc01hcmtlckJ5dGVzID0gbmlsCisgIAorICBkZWYgcmVhZEludChl
bmRpYW5uZXNzLCBpbnApCisgICAgYnl0ZXMgPSBbXQorICAgIDQudGltZXMgeworICAgICAgYnl0
ZXMgPDwgaW5wLmdldGJ5dGUKKyAgICB9CisgICAgCisgICAgaWYgZW5kaWFubmVzcyA9PSA6bGl0
dGxlCisgICAgICAjIExpdHRsZSBlbmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAwIHwKKyAgICAg
ICBieXRlc1sxXSA8PCA4IHwKKyAgICAgICBieXRlc1syXSA8PCAxNiB8CisgICAgICAgYnl0ZXNb
M10gPDwgMjQpCisgICAgZWxzZQorICAgICAgIyBCaWcgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0g
PDwgMjQgfAorICAgICAgIGJ5dGVzWzFdIDw8IDE2IHwKKyAgICAgICBieXRlc1syXSA8PCA4IHwK
KyAgICAgICBieXRlc1szXSA8PCAwKQorICAgIGVuZAorICBlbmQKKyAgCisgIFs6bGl0dGxlLCA6
YmlnXS5lYWNoIHsKKyAgICB8IGVuZGlhbm5lc3MgfAorICAgIG1hZ2ljQnl0ZXMgPSBbXQorICAg
IE1BR0lDX05VTUJFUlMuZWFjaCB7CisgICAgICB8IG51bWJlciB8CisgICAgICBjdXJyZW50Qnl0
ZXMgPSBbXQorICAgICAgNC50aW1lcyB7CisgICAgICAgIGN1cnJlbnRCeXRlcyA8PCAobnVtYmVy
ICYgMHhmZikKKyAgICAgICAgbnVtYmVyID4+PSA4CisgICAgICB9CisgICAgICBpZiBlbmRpYW5u
ZXNzID09IDpiaWcKKyAgICAgICAgY3VycmVudEJ5dGVzLnJldmVyc2UhCisgICAgICBlbmQKKyAg
ICAgIG1hZ2ljQnl0ZXMgKz0gY3VycmVudEJ5dGVzCisgICAgfQorICAgIAorICAgIEZpbGUub3Bl
bihmaWxlLCAiciIpIHsKKyAgICAgIHwgaW5wIHwKKyAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisg
ICAgICBsb29wIHsKKyAgICAgICAgYnl0ZSA9IGlucC5nZXRieXRlCisgICAgICAgIGJyZWFrIHVu
bGVzcyBieXRlCisgICAgICAgIGlmIGJ5dGUgPT0gbWFnaWNCeXRlc1t3aGVyZUluTWFya2VyXQor
ICAgICAgICAgIHdoZXJlSW5NYXJrZXIgKz0gMQorICAgICAgICAgIGlmIHdoZXJlSW5NYXJrZXIg
PT0gbWFnaWNCeXRlcy5zaXplCisgICAgICAgICAgICAjIFdlIGhhdmUgYSBtYXRjaCEgSWYgd2Ug
aGF2ZSBub3QgeWV0IHJlYWQgdGhlIGVuZGlhbm5lc3MgbWFya2VyIGFuZCBpbmRleCwKKyAgICAg
ICAgICAgICMgdGhlbiByZWFkIHRob3NlIG5vdzsgb3RoZXJ3aXNlIHJlYWQgYW4gb2Zmc2V0Lgor
ICAgICAgICAgICAgCisgICAgICAgICAgICBpZiBub3QgaW5kZXgKKyAgICAgICAgICAgICAgaW5k
ZXggPSByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgb2Zmc2V0cyA8PCByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICAgICAgCisgICAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICAg
IGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAg
ZW5kCisgICAgICB9CisgICAgfQorICAgIAorICAgIGJyZWFrIGlmIGluZGV4CisgIH0KKyAgCisg
IHJhaXNlIHVubGVzcyBpbmRleAorICAKKyAgW29mZnNldHMsIGluZGV4XQorZW5kCisKKyMKKyMg
YnVpbGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpIC0+IFtvZmZzZXRzLCBzaXplc10KKyMK
KyMgQnVpbGRzIGEgbWFwcGluZyBiZXR3ZWVuIFN0cnVjdE9mZnNldCBub2RlcyBhbmQgdGhlaXIg
dmFsdWVzLgorIworCitkZWYgYnVpbGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpCisgIG9m
ZnNldHNNYXAgPSB7fQorICBzaXplc01hcCA9IHt9CisgIGFzdE9mZnNldHNMaXN0ID0gb2Zmc2V0
c0xpc3QoYXN0KQorICBhc3RTaXplc0xpc3QgPSBzaXplc0xpc3QoYXN0KQorICByYWlzZSB1bmxl
c3MgYXN0T2Zmc2V0c0xpc3Quc2l6ZSArIGFzdFNpemVzTGlzdC5zaXplID09IG9mZnNldHNMaXN0
LnNpemUKKyAgb2Zmc2V0c0xpc3QoYXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgc3RydWN0
T2Zmc2V0LCBpbmRleCB8CisgICAgb2Zmc2V0c01hcFtzdHJ1Y3RPZmZzZXRdID0gb2Zmc2V0c0xp
c3Quc2hpZnQKKyAgfQorICBzaXplc0xpc3QoYXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAgIHwg
c2l6ZW9mLCBpbmRleCB8CisgICAgc2l6ZXNNYXBbc2l6ZW9mXSA9IG9mZnNldHNMaXN0LnNoaWZ0
CisgIH0KKyAgW29mZnNldHNNYXAsIHNpemVzTWFwXQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTg1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJl
ICJhc3QiCityZXF1aXJlICJpbnN0cnVjdGlvbnMiCityZXF1aXJlICJyZWdpc3RlcnMiCisKK2Ns
YXNzIFRva2VuCisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luLCA6c3RyaW5nCisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJpbmcpCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3Jp
Z2luCisgICAgQHN0cmluZyA9IHN0cmluZworICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAg
ICBpZiBvdGhlci5pc19hPyBUb2tlbgorICAgICAgQHN0cmluZyA9PSBvdGhlci5zdHJpbmcKKyAg
ICBlbHNlCisgICAgICBAc3RyaW5nID09IG90aGVyCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVm
ID1+KG90aGVyKQorICAgIEBzdHJpbmcgPX4gb3RoZXIKKyAgZW5kCisgIAorICBkZWYgdG9fcwor
ICAgICIje0BzdHJpbmcuaW5zcGVjdH0gYXQgbGluZSAje2NvZGVPcmlnaW59IgorICBlbmQKKyAg
CisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAg
ICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc30iCisgICAgZWxzZQorICAgICAgcmFpc2UgIlBh
cnNlIGVycm9yOiAje3RvX3N9OiAje2NvbW1lbnRbMF19IgorICAgIGVuZAorICBlbmQKK2VuZAor
CisjCisjIFRoZSBsZXhlci4gVGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYW4gYXJyYXkgb2Yg
dG9rZW5zLgorIworCitkZWYgbGV4KHN0cikKKyAgcmVzdWx0ID0gW10KKyAgbGluZU51bWJlciA9
IDEKKyAgd2hpbGUgbm90IHN0ci5lbXB0eT8KKyAgICBjYXNlIHN0cgorICAgIHdoZW4gL1xBXCMo
W15cbl0qKS8KKyAgICAgICMgY29tbWVudCwgaWdub3JlCisgICAgd2hlbiAvXEFcbi8KKyAgICAg
IHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICBsaW5lTnVtYmVyICs9
IDEKKyAgICB3aGVuIC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8
IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVwuKFthLXpBLVowLTlfXSop
LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9c
QV8oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIs
ICQmKQorICAgIHdoZW4gL1xBKFsgXHRdKykvCisgICAgICAjIHdoaXRlc3BhY2UsIGlnbm9yZQor
ICAgIHdoZW4gL1xBMHgoWzAtOWEtZkEtRl0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXco
bGluZU51bWJlciwgJCYuaGV4LnRvX3MpCisgICAgd2hlbiAvXEEwKFswLTddKykvCisgICAgICBy
ZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLm9jdC50b19zKQorICAgIHdoZW4gL1xB
KFswLTldKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAg
IHdoZW4gL1xBOjovCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQor
ICAgIHdoZW4gL1xBWzosXChcKVxbXF09XCtcLSpdLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5l
dyhsaW5lTnVtYmVyLCAkJikKKyAgICBlbHNlCisgICAgICByYWlzZSAiTGV4ZXIgZXJyb3IgYXQg
bGluZSBudW1iZXIgI3tsaW5lTnVtYmVyfSwgdW5leHBlY3RlZCBzZXF1ZW5jZSAje3N0clswLi4y
MF0uaW5zcGVjdH0iCisgICAgZW5kCisgICAgc3RyID0gJH4ucG9zdF9tYXRjaAorICBlbmQKKyAg
cmVzdWx0CitlbmQKKworIworIyBUb2tlbiBpZGVudGlmaWNhdGlvbi4KKyMKKworZGVmIGlzUmVn
aXN0ZXIodG9rZW4pCisgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJ
bnN0cnVjdGlvbih0b2tlbikKKyAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisK
K2RlZiBpc0tleXdvcmQodG9rZW4pCisgIHRva2VuID1+IC9cQSgodHJ1ZSl8KGZhbHNlKXwoaWYp
fCh0aGVuKXwoZWxzZSl8KGVsc2lmKXwoZW5kKXwoYW5kKXwob3IpfChub3QpfChtYWNybyl8KGNv
bnN0KXwoc2l6ZW9mKXwoZXJyb3IpKVxaLyBvcgorICAgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRF
Uk4gb3IKKyAgICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzSWRl
bnRpZmllcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKilcWi8g
YW5kIG5vdCBpc0tleXdvcmQodG9rZW4pCitlbmQKKworZGVmIGlzTGFiZWwodG9rZW4pCisgIHRv
a2VuID1+IC9cQV8oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNMb2NhbExhYmVsKHRv
a2VuKQorICB0b2tlbiA9fiAvXEFcLihbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc1Zh
cmlhYmxlKHRva2VuKQorICBpc0lkZW50aWZpZXIodG9rZW4pIG9yIGlzUmVnaXN0ZXIodG9rZW4p
CitlbmQKKworZGVmIGlzSW50ZWdlcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBWzAtOV0vCitlbmQK
KworIworIyBUaGUgcGFyc2VyLiBUYWtlcyBhbiBhcnJheSBvZiB0b2tlbnMgYW5kIHJldHVybnMg
YW4gQVNULiBNZXRob2RzCisjIG90aGVyIHRoYW4gcGFyc2UodG9rZW5zKSBhcmUgbm90IGZvciBw
dWJsaWMgY29uc3VtcHRpb24uCisjCisKK2NsYXNzIFBhcnNlcgorICBkZWYgaW5pdGlhbGl6ZSh0
b2tlbnMpCisgICAgQHRva2VucyA9IHRva2VucworICAgIEBpZHggPSAwCisgIGVuZAorICAKKyAg
ZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgQHRva2Vuc1tAaWR4XQorICAgICAgQHRv
a2Vuc1tAaWR4XS5wYXJzZUVycm9yKCpjb21tZW50KQorICAgIGVsc2UKKyAgICAgIGlmIGNvbW1l
bnQuZW1wdHk/CisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZSIKKyAg
ICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlOiAje2Nv
bW1lbnRbMF19IgorICAgICAgZW5kCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGNvbnN1bWUo
cmVnZXhwKQorICAgIGlmIHJlZ2V4cAorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tA
aWR4XSA9fiByZWdleHAKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAaWR4ID09
IEB0b2tlbnMubGVuZ3RoCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgIGVuZAorICAKKyAgZGVm
IHNraXBOZXdMaW5lCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICBAaWR4
ICs9IDEKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAg
aWYgQHRva2Vuc1tAaWR4XSA9PSAibm90IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZVBy
ZWRpY2F0ZUF0b20KKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCAr
PSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGUKKyAg
ICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9
IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInRydWUiCisgICAg
ICByZXN1bHQgPSBUcnVlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAor
ICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImZhbHNlIgorICAgICAgcmVzdWx0ID0gRmFsc2Uu
aW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVu
dGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IFNldHRpbmcuZm9yTmFtZShAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgQGlkeCAr
PSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQW5kCisgICAgcmVzdWx0ID0gcGFyc2VQcmVk
aWNhdGVBdG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiYW5kIgorICAgICAgY29kZU9y
aWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAgICBz
a2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgIHJlc3Vs
dCA9IEFuZC5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1
bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGUKKyAgICAjIHNvbWUgZXhhbXBsZXMg
b2YgcHJlY2VkZW5jZToKKyAgICAjIG5vdCBhIGFuZCBiIC0+IChub3QgYSkgYW5kIGIKKyAgICAj
IGEgYW5kIGIgb3IgYyAtPiAoYSBhbmQgYikgb3IgYworICAgICMgYSBvciBiIGFuZCBjIC0+IGEg
b3IgKGIgYW5kIGMpCisgICAgCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICB3
aGlsZSBAdG9rZW5zW0BpZHhdID09ICJvciIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAg
IHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICAgIHJlc3VsdCA9IE9yLm5ldyhjb2RlT3Jp
Z2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRl
ZiBwYXJzZVZhcmlhYmxlCisgICAgaWYgaXNSZWdpc3RlcihAdG9rZW5zW0BpZHhdKQorICAgICAg
aWYgQHRva2Vuc1tAaWR4XSA9fiBGUFJfUEFUVEVSTgorICAgICAgICByZXN1bHQgPSBGUFJlZ2lz
dGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3Ry
aW5nKQorICAgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBSZWdpc3RlcklELmZvck5hbWUoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVuZAor
ICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgcmVzdWx0ID0gVmFy
aWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3Ry
aW5nKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEK
KyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VBZGRyZXNzKG9mZnNldCkKKyAgICBw
YXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgIGNvZGVPcmlnaW4gPSBA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAKKyAgICAjIFRocmVlIHBvc3NpYmlsaXRpZXM6
CisgICAgIyBbXSAgICAgICAtPiBBYnNvbHV0ZUFkZHJlc3MKKyAgICAjIFthXSAgICAgIC0+IEFk
ZHJlc3MKKyAgICAjIFthLGJdICAgIC0+IEJhc2VJbmRleCB3aXRoIHNjYWxlID0gMQorICAgICMg
W2EsYixjXSAgLT4gQmFzZUluZGV4CisgICAgCisgICAgQGlkeCArPSAxCisgICAgaWYgQHRva2Vu
c1tAaWR4XSA9PSAiXSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmV0dXJuIEFic29sdXRlQWRk
cmVzcy5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0KQorICAgIGVuZAorICAgIGEgPSBwYXJzZVZhcmlh
YmxlCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIHJlc3VsdCA9IEFkZHJlc3Mu
bmV3KGNvZGVPcmlnaW4sIGEsIG9mZnNldCkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVu
bGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgQGlkeCArPSAxCisgICAgICBiID0gcGFy
c2VWYXJpYWJsZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0
ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCAxLCBvZmZzZXQpCisgICAgICBlbHNl
CisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBbIjEiLCAiMiIsICI0IiwgIjgi
XS5tZW1iZXI/IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIGMgPSBAdG9rZW5zW0BpZHhd
LnN0cmluZy50b19pCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVz
cyBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNv
ZGVPcmlnaW4sIGEsIGIsIGMsIG9mZnNldCkKKyAgICAgIGVuZAorICAgIGVuZAorICAgIEBpZHgg
Kz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUNvbG9uQ29sb24KKyAgICBz
a2lwTmV3TGluZQorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAg
ICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgIG5hbWVz
ID0gW0B0b2tlbnNbQGlkeF0uc3RyaW5nXQorICAgIEBpZHggKz0gMQorICAgIHdoaWxlIEB0b2tl
bnNbQGlkeF0gPT0gIjo6IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZUVycm9yIHVubGVz
cyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgbmFtZXMgPDwgQHRva2Vuc1tAaWR4
XS5zdHJpbmcKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICAgIHJhaXNlIGlmIG5hbWVzLmVt
cHR5PworICAgIFtjb2RlT3JpZ2luLCBuYW1lc10KKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHBy
ZXNzaW9uQXRvbQorICAgIHNraXBOZXdMaW5lCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIK
KyAgICAgIEBpZHggKz0gMQorICAgICAgTmVnSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHggLSAx
XS5jb2RlT3JpZ2luLCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lv
bgorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgIEBp
ZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJbnRlZ2VyIEB0b2tlbnNbQGlkeF0K
KyAgICAgIHJlc3VsdCA9IEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBA
dG9rZW5zW0BpZHhdLnN0cmluZy50b19pKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQK
KyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgY29kZU9yaWdpbiwg
bmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIGlmIG5hbWVzLnNpemUgPiAxCisgICAgICAg
IFN0cnVjdE9mZnNldC5mb3JGaWVsZChjb2RlT3JpZ2luLCBuYW1lc1swLi4tMl0uam9pbignOjon
KSwgbmFtZXNbLTFdKQorICAgICAgZWxzZQorICAgICAgICBWYXJpYWJsZS5mb3JOYW1lKGNvZGVP
cmlnaW4sIG5hbWVzWzBdKQorICAgICAgZW5kCisgICAgZWxzaWYgaXNSZWdpc3RlciBAdG9rZW5z
W0BpZHhdCisgICAgICBwYXJzZVZhcmlhYmxlCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAi
c2l6ZW9mIgorICAgICAgQGlkeCArPSAxCisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNl
Q29sb25Db2xvbgorICAgICAgU2l6ZW9mLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXMuam9pbign
OjonKSkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmIHBhcnNlRXhwcmVzc2lvbk11bAorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0gcGFy
c2VFeHByZXNzaW9uQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICBp
ZiBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0
ID0gTXVsSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0
LCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAg
ZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIGNvdWxkQmVFeHByZXNz
aW9uCisgICAgQHRva2Vuc1tAaWR4XSA9PSAiLSIgb3IgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9m
IiBvciBpc0ludGVnZXIoQHRva2Vuc1tAaWR4XSkgb3IgaXNWYXJpYWJsZShAdG9rZW5zW0BpZHhd
KSBvciBAdG9rZW5zW0BpZHhdID09ICIoIgorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Np
b24KKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbk11bAorICAg
IHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVz
dWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVz
dWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIt
IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gU3ViSW1tZWRpYXRlcy5uZXco
QHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwp
CisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1
bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1lbnQpCisgICAgaWYgY291bGRC
ZUV4cHJlc3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRkcmVzcyhleHByKQorICAgICAgZWxzZQor
ICAgICAgICBleHByCisgICAgICBlbmQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJbIgor
ICAgICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCAwKSkKKyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IExh
YmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExhYmVsLmZvck5hbWUo
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBA
aWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0Bp
ZHhdCisgICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4s
IEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0Cisg
ICAgZWxzZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50KQorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb25zdW1lKC9c
QVwoXFovKQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAgbG9vcCB7CisgICAgICBza2lwTmV3TGlu
ZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIGJyZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAg
ICAgdmFyaWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBO
ZXdMaW5lCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIK
KyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IK
KyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IKKyAgICAgIGVuZAor
ICAgIH0KKyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAorICBkZWYgcGFyc2VTZXF1ZW5jZShmaW5h
bCwgY29tbWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4KKyAgICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAgICAgIGlmIChAaWR4ID09IEB0b2tlbnMu
bGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5h
bCkKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAg
ICAgICAjIGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxl
c3MgaXNWYXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUu
Zm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4
XSA9PSAiPSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhbHVlID0gcGFyc2VPcGVyYW5k
KCJ3aGlsZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5uYW1lfSIpCisgICAgICAgIGxpc3Qg
PDwgQ29uc3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1
ZSkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImVycm9yIgorICAgICAgICBsaXN0IDw8
IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4pCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAgICAgIGNvZGVPcmlnaW4gPSBA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBO
ZXdMaW5lCisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgIGNvbnN1
bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWZU
aGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VTZXF1
ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRlIG9mIFwiaWYg
I3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBsaXN0IDw8IGlmVGhlbkVsc2UKKyAgICAg
ICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisgICAgICAgICAgY29kZU9yaWdpbiA9
IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
IHNraXBOZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAg
ICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgICAgc2tpcE5ld0xpbmUK
KyAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0
ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5z
aWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICAgIGlmVGhlbkVsc2Uu
ZWxzZUNhc2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlmVGhlbkVsc2UgPSBlbHNlQ2FzZQorICAg
ICAgICBlbmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiZWxzZSIKKyAgICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gcGFyc2VTZXF1ZW5jZSgv
XEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNlIGZvciBcImlmICN7cHJlZGljYXRl
LmR1bXB9XCIiKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAg
cGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiZW5kIgorICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgor
ICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBp
c0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0u
c3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3Jv
VmFyaWFibGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxl
IGluc2lkZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGxp
c3QgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICAg
IGVsc2lmIGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0g
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0
cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9
PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAg
ICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5kIGl0J3MgdGhlIGxhc3Qgb25l
LgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtd
KQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgor
ICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLgorICAgICAgICAgIGxpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBJdCdzIGRlZmluaXRlbHkgYW4gaW5zdHJ1Y3Rp
b24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJhbmQuCisgICAgICAgICAgb3BlcmFuZHMg
PSBbXQorICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxzZQorICAgICAgICAgIGxvb3Agewor
ICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgaW5z
dHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09
IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAg
ICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uIGFuZCBvZiB0aGUgc2VxdWVu
Y2UuCisgICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSB0cnVlCisgICAgICAgICAgICAgIGJy
ZWFrCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgICAg
ICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgICAgICMgVGhlIGVu
ZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
ICAgICBicmVhaworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBwYXJzZUVycm9yKCJF
eHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFsfSBhZnRlciAje29wZXJhbmRzLmxh
c3QuZHVtcH0iKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgfQorICAgICAgICAgIGxpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAgICAg
IGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgZW5kCisgICAg
ICAgIGVuZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAg
Y29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRv
a2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIEB0b2tlbnNb
QGlkeF0gPT0gIigiCisgICAgICAgICAgIyBNYWNybyBpbnZvY2F0aW9uLgorICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgICAgc2tpcE5l
d0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAgICAg
ICAgICAgICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQorICAgICAgICAgICAgICAgIGNvZGVPcmln
aW5Jbm5lciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAg
ICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNp
ZGUgb2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1bWVudCB0byAje25hbWV9IikKKyAg
ICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBNYWNy
by5uZXcoY29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlhYmxlcywgYm9keSkKKyAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUg
aW5zaWRlIG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICIpIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAgICAg
QGlkeCArPSAxCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9y
ICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5zcGVjdH0gd2hpbGUgcGFyc2lu
ZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAgICAgICAgIGVuZAorICAgICAg
ICAgICAgfQorICAgICAgICAgIGVuZAorICAgICAgICAgIGxpc3QgPDwgTWFjcm9DYWxsLm5ldyhj
b2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNl
RXJyb3IgIkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFtZX0iCisgICAgICAgIGVuZAorICAgICAg
ZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhd
CisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAg
bmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBw
YXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI6IgorICAgICAgICAjIEl0J3MgYSBs
YWJlbC4KKyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAgICAgbGlzdCA8PCBMYWJlbC5m
b3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVsc2UKKyAgICAgICAgICBsaXN0IDw8
IExvY2FsTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbmQKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgIkV4cGVjdGluZyB0
ZXJtaW5hbCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVl
bmNlLm5ldyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisgIGVuZAorZW5kCisKK2RlZiBwYXJzZSh0
b2tlbnMpCisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9rZW5zKQorICBwYXJzZXIucGFyc2VTZXF1
ZW5jZShuaWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3JlZ2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK0dQUlMgPQorICBbCisgICAi
dDAiLAorICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMiLAorICAgInQ0IiwKKyAgICJjZnIiLAor
ICAgImEwIiwKKyAgICJhMSIsCisgICAicjAiLAorICAgInIxIiwKKyAgICJzcCIKKyAgXQorCitG
UFJTID0KKyAgWworICAgImZ0MCIsCisgICAiZnQxIiwKKyAgICJmdDIiLAorICAgImZ0MyIsCisg
ICAiZnQ0IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisgICAiZmExIiwKKyAgICJmYTIiLAorICAg
ImZhMyIsCisgICAiZnIiCisgIF0KKworUkVHSVNURVJTID0gR1BSUyArIEZQUlMKKworR1BSX1BB
VFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykK
K0ZQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgRlBSUy5qb2luKCcpfCgnKSArICcp
KVxcWicpCisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBSRUdJU1RF
UlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vc2VsZl9oYXNoLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0
OCBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgInBhdGhuYW1lIgorCisj
CisjIHNlbGZIYXNoIC0+IFNIQTEgaGV4ZGlnZXN0CisjCisjIFJldHVybnMgYSBoYXNoIG9mIHRo
ZSBvZmZsaW5lYXNtIHNvdXJjZSBjb2RlLiBUaGlzIGFsbG93cyBkZXBlbmRlbmN5CisjIHRyYWNr
aW5nIGZvciBub3QganVzdCBjaGFuZ2VzIGluIGlucHV0LCBidXQgYWxzbyBjaGFuZ2VzIGluIHRo
ZSBhc3NlbWJsZXIKKyMgaXRzZWxmLgorIworCitkZWYgc2VsZkhhc2gKKyAgY29udGVudHMgPSAi
IgorICBteVBhdGggPSBQYXRobmFtZS5uZXcoX19GSUxFX18pLmRpcm5hbWUKKyAgRGlyLmZvcmVh
Y2gobXlQYXRoKSB7CisgICAgfCBlbnRyeSB8CisgICAgaWYgZW50cnkgPX4gL1wucmIkLworICAg
ICAgY29udGVudHMgKz0gSU86OnJlYWQobXlQYXRoICsgZW50cnkpCisgICAgZW5kCisgIH0KKyAg
cmV0dXJuIERpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoY29udGVudHMpCitlbmQKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyMDUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFyc2Vy
IgorcmVxdWlyZSAidHJhbnNmb3JtIgorCisjCisjIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9u
cyhhc3QpIC0+IHNldHRpbmdzQ29tYmlhdGlvbnMKKyMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkgb2Yg
c2V0dGluZ3MgbWFwcywgd2hlcmUgYSBzZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMKKyMgYSBjb25m
aWd1cmF0aW9uIGZvciB0aGUgYXNzZW1ibHkgY29kZSBiZWluZyBnZW5lcmF0ZWQuIFRoZSBtYXAK
KyMgY29udGFpbnMga2V5IHZhbHVlIHBhaXJzIHdoZXJlIGtleXMgYXJlIHNldHRpbmdzIG5hbWVz
IChzdHJpbmdzKSBhbmQKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVhbnMgKHRydWUgZm9yIGVuYWJs
ZWQsIGZhbHNlIGZvciBkaXNhYmxlZCkuCisjCisKK2RlZiBjb21wdXRlU2V0dGluZ3NDb21iaW5h
dGlvbnMoYXN0KQorICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IFtdCisgIAorICBkZWYgc2V0dGlu
Z3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBtYXBTb0ZhciwgcmVtYWluaW5nKQor
ICAgIGlmIHJlbWFpbmluZy5lbXB0eT8KKyAgICAgIHNldHRpbmdzQ29tYmluYXRpb25zIDw8IG1h
cFNvRmFyCisgICAgICByZXR1cm4KKyAgICBlbmQKKyAgICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zh
ci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IHRydWUKKyAgICBzZXR0aW5nc0NvbWJp
bmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAg
ICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9
IGZhbHNlCisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdN
YXAsIHJlbWFpbmluZ1sxLi4tMV0pCisgIGVuZAorICAKKyAgc2V0dGluZ3NDb21iaW5hdG9yKHNl
dHRpbmdzQ29tYmluYXRpb25zLCB7fSwgKGFzdC5maWx0ZXIoU2V0dGluZykudW5pcS5jb2xsZWN0
e3x2fCB2Lm5hbWV9ICsgWyJYODYiLCAiQVJNdjciXSkudW5pcSkKKyAgCisgIHNldHRpbmdzQ29t
YmluYXRpb25zCitlbmQKKworIworIyBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3Qp
IHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfCAuLi4g
fQorIworIyBEZXRlcm1pbmVzIGlmIHRoZSBzZXR0aW5ncyBjb21iaW5hdGlvbiBpcyB2YWxpZCwg
YW5kIGlmIHNvLCBjYWxscworIyB0aGUgYmxvY2sgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91IG5l
ZWQgdG8gZ2VuZXJhdGUgY29kZS4KKyMKKworZGVmIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGlu
Z3MsIGFzdCkKKyAgIyBDaGVjayB3aGljaCBhcmNoaXRlY3R1cmVzIHRoaXMgY29tYmluYXRvciBj
bGFpbXMgdG8gc3VwcG9ydC4KKyAgbnVtQ2xhaW1lZEJhY2tlbmRzID0gMAorICBzZWxlY3RlZEJh
Y2tlbmQgPSBuaWwKKyAgQkFDS0VORFMuZWFjaCB7CisgICAgfCBiYWNrZW5kIHwKKyAgICBpc1N1
cHBvcnRlZCA9IGNvbmNyZXRlU2V0dGluZ3NbYmFja2VuZF0KKyAgICByYWlzZSB1bmxlc3MgaXNT
dXBwb3J0ZWQgIT0gbmlsCisgICAgbnVtQ2xhaW1lZEJhY2tlbmRzICs9IGlmIGlzU3VwcG9ydGVk
IHRoZW4gMSBlbHNlIDAgZW5kCisgICAgaWYgaXNTdXBwb3J0ZWQKKyAgICAgIHNlbGVjdGVkQmFj
a2VuZCA9IGJhY2tlbmQKKyAgICBlbmQKKyAgfQorICAKKyAgcmV0dXJuIGlmIG51bUNsYWltZWRC
YWNrZW5kcyA+IDEKKyAgCisgICMgUmVzb2x2ZSB0aGUgQVNUIGRvd24gdG8gYSBsb3ctbGV2ZWwg
Zm9ybSAobm8gbWFjcm9zIG9yIGNvbmRpdGlvbmFscykuCisgIGxvd0xldmVsQVNUID0gYXN0LnJl
c29sdmVTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzKQorICAKKyAgeWllbGQgY29uY3JldGVTZXR0
aW5ncywgbG93TGV2ZWxBU1QsIHNlbGVjdGVkQmFja2VuZAorZW5kCisKKyMKKyMgZm9yRWFjaFZh
bGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywg
YXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9CisjCisjIGZvckVhY2hWYWxpZFNldHRpbmdzQ29t
YmluYXRpb24oYXN0LCBzZXR0aW5nc0NvbWJpbmF0aW9ucykgeworIyAgICAgfCBjb25jcmV0ZVNl
dHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0KKyMKKyMgRXhlY3V0ZXMgdGhlIGdp
dmVuIGJsb2NrIGZvciBlYWNoIHZhbGlkIHNldHRpbmdzIGNvbWJpbmF0aW9uIGluIHRoZQorIyBz
ZXR0aW5ncyBtYXAuIFRoZSBhc3QgcGFzc2VkIGludG8gdGhlIGJsb2NrIGlzIHJlc29sdmVkCisj
IChhc3QucmVzb2x2ZSkgYWdhaW5zdCB0aGUgc2V0dGluZ3MuCisjCisjIFRoZSBmaXJzdCBmb3Jt
IHdpbGwgY2FsbCBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSBmb3IgeW91LgorIwor
CitkZWYgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QsICpvcHRpb25hbFNldHRp
bmdzQ29tYmluYXRpb25zKQorICByYWlzZSBpZiBvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25z
LnNpemUgPiAxCisgIAorICBpZiBvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zLmVtcHR5Pwor
ICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFz
dCkKKyAgZWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gb3B0aW9uYWxTZXR0aW5nc0Nv
bWJpYXRpb25zWzBdCisgIGVuZAorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMuZWFjaF93aXRo
X2luZGV4IHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGluZGV4IHwKKyAgICBmb3JTZXR0aW5n
cyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpIHsKKyAgICAgIHwgY29uY3JldGVTZXR0aW5nc18sIGxv
d0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xl
dmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgIH0KKyAgfQorZW5kCisKKyMKKyMgY3BwU2V0dGlu
Z3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisjCisjIFJldHVybnMgdGhlIEMrKyBjb2RlIHVzZWQg
dG8gdGVzdCBpZiB3ZSBhcmUgaW4gYSBjb25maWd1cmF0aW9uIHRoYXQKKyMgY29ycmVzcG9uZHMg
dG8gdGhlIGdpdmVuIGNvbmNyZXRlIHNldHRpbmdzLgorIworCitkZWYgY3BwU2V0dGluZ3NUZXN0
KGNvbmNyZXRlU2V0dGluZ3MpCisgICIjaWYgIiArIGNvbmNyZXRlU2V0dGluZ3MudG9fYS5jb2xs
ZWN0eworICAgIHwgcGFpciB8CisgICAgKGlmIHBhaXJbMV0KKyAgICAgICAiIgorICAgICBlbHNl
CisgICAgICAgIiEiCisgICAgIGVuZCkgKyAiT0ZGTElORV9BU01fIiArIHBhaXJbMF0KKyAgfS5q
b2luKCIgJiYgIikKK2VuZAorCisjCisjIGlzQVNURXJyb25lb3VzKGFzdCkKKyMKKyMgVGVzdHMg
dG8gc2VlIGlmIHRoZSBBU1QgY2xhaW1zIHRoYXQgdGhlcmUgaXMgYW4gZXJyb3IgLSBpLmUuIGlm
IHRoZQorIyB1c2VyJ3MgY29kZSwgYWZ0ZXIgc2V0dGluZ3MgcmVzb2x1dGlvbiwgaGFzIEVycm9y
IG5vZGVzLgorIworCitkZWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICBub3QgYXN0LmZpbHRlcihF
cnJvcikuZW1wdHk/CitlbmQKKworIworIyBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0
dGluZ3MpCisjCisjIEVtaXRzIGEgY2hlY2sgdGhhdCBhc3NlcnRzIHRoYXQgd2UncmUgdXNpbmcg
dGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24uCisjCisKK2RlZiBhc3NlcnRDb25maWd1cmF0aW9uKGNv
bmNyZXRlU2V0dGluZ3MpCisgICRvdXRwdXQucHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVT
ZXR0aW5ncykKKyAgJG91dHB1dC5wdXRzICIjZWxzZSIKKyAgJG91dHB1dC5wdXRzICIjZXJyb3Ig
XCJDb25maWd1cmF0aW9uIG1pc21hdGNoLlwiIgorICAkb3V0cHV0LnB1dHMgIiNlbmRpZiIKK2Vu
ZAorCisjCisjIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwg
YmFja2VuZCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQgfCAuLi4g
fQorIworIyBFbWl0cyBhbGwgcmVsZXZhbnQgZ3VhcmRzIHRvIHNlZSBpZiB0aGUgY29uZmlndXJh
dGlvbiBob2xkcyBhbmQKKyMgY2FsbHMgdGhlIGJsb2NrIGlmIHRoZSBjb25maWd1cmF0aW9uIGlz
IG5vdCBlcnJvbmVvdXMuCisjCisKK2RlZiBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0
ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpCisgICRvdXRwdXQucHV0cyBjcHBTZXR0aW5nc1Rlc3Qo
Y29uY3JldGVTZXR0aW5ncykKKyAgCisgIGlmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAgICAkb3V0
cHV0LnB1dHMgIiNlcnJvciBcIkludmFsaWQgY29uZmlndXJhdGlvbi5cIiIKKyAgZWxzaWYgbm90
IFdPUktJTkdfQkFDS0VORFMuaW5jbHVkZT8gYmFja2VuZAorICAgICRvdXRwdXQucHV0cyAiI2Vy
cm9yIFwiVGhpcyBiYWNrZW5kIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LlwiIgorICBlbHNlCisgICAg
eWllbGQgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kCisgIGVuZAorICAKKyAgJG91dHB1
dC5wdXRzICIjZW5kaWYiCitlbmQKKworIworIyBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMo
YXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAu
Li4gfQorIworIyBFbWl0cyBndWFyZCBjb2RlcyBmb3IgYWxsIHZhbGlkIGNvbmZpZ3VyYXRpb25z
LCBhbmQgY2FsbHMgdGhlIGJsb2NrCisjIGZvciB0aG9zZSBjb25maWd1cmF0aW9ucyB0aGF0IGFy
ZSB2YWxpZCBhbmQgbm90IGVycm9uZW91cy4KKyMKKworZGVmIGVtaXRDb2RlSW5BbGxDb25maWd1
cmF0aW9ucyhhc3QpCisgIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7Cisg
ICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXggfAorICAg
ICRvdXRwdXQucHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgICB5aWVs
ZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICAkb3V0
cHV0LnB1dHMgIiNlbmRpZiIKKyAgfQorZW5kCisKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDM0MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVx
dWlyZSAiYXN0IgorCisjCisjIG5vZGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorIworIyBD
b25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgSWZUaGVuRWxzZSBub2Rl
cyBieQorIyBzdWJzdGl0dXRpbmcgY29uY3JldGUgYm9vbGVhbiB2YWx1ZXMgZm9yIGVhY2ggU2V0
dGluZy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQor
ICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZVNl
dHRpbmdzKHNldHRpbmdzKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZQorICBkZWYg
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3Mg
RmFsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAor
ZW5kCisKK2NsYXNzIFNldHRpbmcKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAg
ICBzZXR0aW5nc1tAbmFtZV0uYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZAorICBkZWYg
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpLnZhbHVlIGFuZCBAcmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSku
YXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE9yCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgb3IgQHJp
Z2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAor
CitjbGFzcyBOb3QKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAobm90IEBj
aGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQK
KworY2xhc3MgSWZUaGVuRWxzZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAg
IGlmIEBwcmVkaWNhdGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZQorICAgICAgQHRo
ZW5DYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbHNlCisgICAgICBAZWxzZUNh
c2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFz
cyBTZXF1ZW5jZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG5ld0xpc3Qg
PSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGl0ZW0gPSBpdGVt
LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgIGlmIGl0ZW0uaXNfYT8gU2VxdWVuY2UK
KyAgICAgICAgbmV3TGlzdCArPSBpdGVtLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlz
dCA8PCBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4s
IG5ld0xpc3QpCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5kZW1hY3JvaWZ5KG1hY3JvcykKKyMg
bm9kZS5zdWJzdGl0dXRlKG1hcHBpbmcpCisjCisjIGRlbWFjcm9pZnkoKSBjb25zdHJ1Y3RzIGEg
bmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IE1hY3JvCisjIG5vZGVzLCB3aGlsZSBzdWJz
dGl0dXRlKCkgcmVwbGFjZXMgVmFyaWFibGUgbm9kZXMgd2l0aCB0aGUgZ2l2ZW4KKyMgbm9kZXMg
aW4gdGhlIG1hcHBpbmcuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIGRlbWFjcm9pZnkobWFjcm9z
KQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuZGVtYWNy
b2lmeShtYWNyb3MpCisgICAgfQorICBlbmQKKyAgCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcp
CisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5zdWJzdGl0
dXRlKG1hcHBpbmcpCisgICAgfQorICBlbmQKKyAgCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1h
cHBpbmcpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5z
dWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBNYWNy
bworICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG15TWFwcGluZyA9IHt9CisgICAgbWFw
cGluZy5lYWNoX3BhaXIgeworICAgICAgfCBrZXksIHZhbHVlIHwKKyAgICAgIHVubGVzcyBAdmFy
aWFibGVzLmluY2x1ZGU/IGtleQorICAgICAgICBteU1hcHBpbmdba2V5XSA9IHZhbHVlCisgICAg
ICBlbmQKKyAgICB9CisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBj
aGlsZC5zdWJzdGl0dXRlKG15TWFwcGluZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFZh
cmlhYmxlCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgaWYgbWFwcGluZ1tzZWxmXQor
ICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5k
CitlbmQKKworY2xhc3MgTG9jYWxMYWJlbAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5n
KQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisg
ICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBz
dWJzdGl0dXRlKGNvbnN0YW50cykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBteUNvbnN0YW50cyA9
IGNvbnN0YW50cy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBp
ZiBpdGVtLmlzX2E/IENvbnN0RGVjbAorICAgICAgICBteUNvbnN0YW50c1tpdGVtLnZhcmlhYmxl
XSA9IGl0ZW0udmFsdWUuc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgIGVsc2UKKyAgICAg
ICAgbmV3TGlzdCA8PCBpdGVtLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICBlbmQKKyAg
ICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisgIGVuZAorICAKKyAg
ZGVmIHJlbmFtZUxhYmVscyhjb21tZW50KQorICAgIG1hcHBpbmcgPSB7fQorICAgIAorICAgIEBs
aXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gTG9jYWxMYWJl
bAorICAgICAgICBtYXBwaW5nW2l0ZW1dID0gTG9jYWxMYWJlbC51bmlxdWUoaWYgY29tbWVudCB0
aGVuIGNvbW1lbnQgKyAiXyIgZWxzZSAiIiBlbmQgKyBpdGVtLmNsZWFuTmFtZSkKKyAgICAgIGVu
ZAorICAgIH0KKyAgICAKKyAgICBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgIGVuZAorICAK
KyAgZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAgIG15TWFjcm9zID0gbWFjcm9zLmR1cAorICAg
IEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gTWFjcm8K
KyAgICAgICAgbXlNYWNyb3NbaXRlbS5uYW1lXSA9IGl0ZW0KKyAgICAgIGVuZAorICAgIH0KKyAg
ICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBp
ZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgICMgSWdub3JlLgorICAgICAgZWxzaWYgaXRlbS5p
c19hPyBNYWNyb0NhbGwKKyAgICAgICAgbWFwcGluZyA9IHt9CisgICAgICAgIG15TXlNYWNyb3Mg
PSBteU1hY3Jvcy5kdXAKKyAgICAgICAgcmFpc2UgIkNvdWxkIG5vdCBmaW5kIG1hY3JvICN7aXRl
bS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBteU1hY3Jvc1tpdGVt
Lm5hbWVdCisgICAgICAgIHJhaXNlICJBcmd1bWVudCBjb3VudCBtaXNtYXRjaCBmb3IgY2FsbCB0
byAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgaXRlbS5v
cGVyYW5kcy5zaXplID09IG15TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzLnNpemUKKyAgICAg
ICAgaXRlbS5vcGVyYW5kcy5zaXplLnRpbWVzIHsKKyAgICAgICAgICB8IGlkeCB8CisgICAgICAg
ICAgaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IFZhcmlhYmxlIGFuZCBteU1hY3Jvc1tpdGVt
Lm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRl
bS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG15TWFjcm9zW2l0ZW0ub3BlcmFuZHNbaWR4
XS5uYW1lXQorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxl
c1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxzaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlz
X2E/IE1hY3JvCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFy
aWFibGVzW2lkeF0ubmFtZV0gPSBpdGVtLm9wZXJhbmRzW2lkeF0KKyAgICAgICAgICAgIG1hcHBp
bmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJp
YWJsZXNbaWR4XV0gPSBuaWwKKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1l
XS52YXJpYWJsZXNbaWR4XV0gPSBpdGVtLm9wZXJhbmRzW2lkeF0KKyAgICAgICAgICBlbmQKKyAg
ICAgICAgfQorICAgICAgICBuZXdMaXN0ICs9IG15TWFjcm9zW2l0ZW0ubmFtZV0uYm9keS5zdWJz
dGl0dXRlKG1hcHBpbmcpLmRlbWFjcm9pZnkobXlNeU1hY3JvcykucmVuYW1lTGFiZWxzKGl0ZW0u
bmFtZSkubGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uZGVtYWNyb2lm
eShteU1hY3JvcykKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdp
biwgbmV3TGlzdCkuc3Vic3RpdHV0ZSh7fSkKKyAgZW5kCitlbmQKKworIworIyBub2RlLnJlc29s
dmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQg
aGFzIG9mZnNldCB2YWx1ZXMgaW5zdGVhZCBvZiBzeW1ib2xpYworIyBvZmZzZXRzLgorIworCitj
bGFzcyBOb2RlCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBtYXBD
aGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnJlc29sdmVPZmZzZXRzKG9m
ZnNldHMsIHNpemVzKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0Cisg
IGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBvZmZzZXRzW3NlbGZd
CisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIG9mZnNldHNbc2VsZl0pCisgICAgZWxz
ZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YKKyAgZGVm
IHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlmIHNpemVzW3NlbGZdCisgICAg
ICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIHNpemVzW3NlbGZdKQorICAgIGVsc2UKKyAgICAg
IHB1dHMgIkNvdWxkIG5vdCBmaW5kICN7c2VsZi5pbnNwZWN0fSBpbiAje3NpemVzLmtleXMuaW5z
cGVjdH0iCisgICAgICBwdXRzICJzaXplcyA9ICN7c2l6ZXMuaW5zcGVjdH0iCisgICAgICBzZWxm
CisgICAgZW5kCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5mb2xkCisjCisjIFJlc29sdmUgY29u
c3RhbnQgcmVmZXJlbmNlcyBhbmQgY29tcHV0ZSBhcml0aG1ldGljIGV4cHJlc3Npb25zLgorIwor
CitjbGFzcyBOb2RlCisgIGRlZiBmb2xkCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGls
ZCB8CisgICAgICBjaGlsZC5mb2xkCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRJbW1l
ZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0g
QHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRl
CisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1l
ZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICsgQHJpZ2h0LnZhbHVlKQorICBlbmQK
K2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVm
dC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3Mg
QGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19h
PyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlIC0g
QHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzCisgIGRlZiBm
b2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAg
ICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNl
bGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVP
cmlnaW4sIEBsZWZ0LnZhbHVlICogQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBO
ZWdJbW1lZGlhdGUKKyAgZGVmIGZvbGQKKyAgICBAY2hpbGQgPSBAY2hpbGQuZm9sZAorICAgIHJl
dHVybiBzZWxmIHVubGVzcyBAY2hpbGQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5l
dyhjb2RlT3JpZ2luLCAtQGNoaWxkLnZhbHVlKQorICBlbmQKK2VuZAorCisjCisjIG5vZGUucmVz
b2x2ZUFmdGVyU2V0dGluZ3Mob2Zmc2V0cywgc2l6ZXMpCisjCisjIENvbXBpbGUgYXNzZW1ibHkg
YWdhaW5zdCBhIHNldCBvZiBvZmZzZXRzLgorIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZl
KG9mZnNldHMsIHNpemVzKQorICAgIGRlbWFjcm9pZnkoe30pLnJlc29sdmVPZmZzZXRzKG9mZnNl
dHMsIHNpemVzKS5mb2xkCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjY3IEBACisjIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBz
dXBwb3J0czhCaXRPblg4NgorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIw
IiwgInQxIiwgImExIiwgInIxIiwgInQyIiwgInQzIgorICAgICAgdHJ1ZQorICAgIHdoZW4gInQ0
IiwgImNmciIKKyAgICAgIGZhbHNlCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIGNhc2UgbmFtZQorICAgIHdoZW4g
InQwIiwgImEwIiwgInIwIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAg
ICAgICIlYWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlYXgiCisgICAgICB3aGVuIDpp
bnQKKyAgICAgICAgIiVlYXgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQK
KyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6
Ynl0ZQorICAgICAgICAiJWRsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWR4IgorICAg
ICAgd2hlbiA6aW50CisgICAgICAgICIlZWR4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQor
ICAgICAgZW5kCisgICAgd2hlbiAidDIiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5
dGUKKyAgICAgICAgIiVjbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVjeCIKKyAgICAg
IHdoZW4gOmludAorICAgICAgICAiJWVjeCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAg
ICAgIGVuZAorICAgIHdoZW4gInQzIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRl
CisgICAgICAgICIlYmwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlYngiCisgICAgICB3
aGVuIDppbnQKKyAgICAgICAgIiVlYngiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAg
ICBlbmQKKyAgICB3aGVuICJ0NCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQor
ICAgICAgICAiJXNpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVzaSIKKyAgICAgIHdo
ZW4gOmludAorICAgICAgICAiJWVzaSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAg
IGVuZAorICAgIHdoZW4gImNmciIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQor
ICAgICAgICAiJWRpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVkaSIKKyAgICAgIHdo
ZW4gOmludAorICAgICAgICAiJWVkaSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAg
IGVuZAorICAgIHdoZW4gInNwIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisg
ICAgICAgICIlc3BsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNwIgorICAgICAgd2hl
biA6aW50CisgICAgICAgICIlZXNwIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAg
ZW5kCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4ODZDYWxs
T3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgRlBSZWdpc3RlcklECisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgcmFpc2UgdW5s
ZXNzIGtpbmQgPT0gOmRvdWJsZQorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIsICJmYTAi
LCAiZnIiCisgICAgICAiJXhtbTAiCisgICAgd2hlbiAiZnQxIiwgImZhMSIKKyAgICAgICIleG1t
MSIKKyAgICB3aGVuICJmdDIiLCAiZmEyIgorICAgICAgIiV4bW0yIgorICAgIHdoZW4gImZ0MyIs
ICJmYTMiCisgICAgICAiJXhtbTMiCisgICAgd2hlbiAiZnQ0IgorICAgICAgIiV4bW00IgorICAg
IHdoZW4gImZ0NSIKKyAgICAgICIleG1tNSIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVu
ZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQo
a2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIHg4Nk9wZXJhbmQo
a2luZCkKKyAgICAiJCN7dmFsdWV9IgorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQp
CisgICAgIiN7dmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGRlZiBzdXBw
b3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtp
bmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0pIgorICBl
bmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9
IgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2
CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3tv
ZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSwgI3tpbmRleC54ODZPcGVyYW5k
KDppbnQpfSwgI3tzY2FsZX0pIgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkK
KyAgICAiKiN7eDg2b3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRl
QWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAgIAor
ICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje2FkZHJlc3MudmFsdWV9IgorICBlbmQKKwor
ICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7YWRkcmVzcy52YWx1ZX0iCisgIGVu
ZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5k
KQorICAgIGFzbUxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UK
KyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgYXNtTGFiZWwKKyAgZW5kCitlbmQKKwor
Y2xhc3MgSW5zdHJ1Y3Rpb24KKyAgZGVmIHg4Nk9wZXJhbmRzKCpraW5kcykKKyAgICByYWlzZSB1
bmxlc3Mga2luZHMuc2l6ZSA9PSBvcGVyYW5kcy5zaXplCisgICAgcmVzdWx0ID0gW10KKyAgICBr
aW5kcy5zaXplLnRpbWVzIHsKKyAgICAgIHwgaWR4IHwKKyAgICAgIHJlc3VsdCA8PCBvcGVyYW5k
c1tpZHhdLng4Nk9wZXJhbmQoa2luZHNbaWR4XSkKKyAgICB9CisgICAgcmVzdWx0LmpvaW4oIiwg
IikKKyAgZW5kCisKKyAgZGVmIHg4NlN1ZmZpeChraW5kKQorICAgIGNhc2Uga2luZAorICAgIHdo
ZW4gOmJ5dGUKKyAgICAgICJiIgorICAgIHdoZW4gOmhhbGYKKyAgICAgICJ3IgorICAgIHdoZW4g
OmludAorICAgICAgImwiCisgICAgd2hlbiA6ZG91YmxlCisgICAgICAic2QiCisgICAgZWxzZQor
ICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3BXaXRoTnVt
T3BlcmFuZHMob3Bjb2RlLCBraW5kLCBudW1PcGVyYW5kcykKKyAgICBpZiBudW1PcGVyYW5kcyA9
PSAzCisgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1
dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRz
WzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMV0gPT0gb3BlcmFu
ZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2UK
KyAgICAgICAgJGFzbS5wdXRzICJtb3Yje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAg
ICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwg
I3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAg
ICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0s
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmIGhhbmRsZVg4Nk9wKG9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVy
YW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUpCisgIGVuZAorICAKKyAgZGVmIGhhbmRs
ZVg4NlNoaWZ0KG9wY29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlh
dGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0ZXJJRC5mb3JOYW1lKG5pbCwgInQyIikKKyAgICAg
ICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0
cyAieGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICAgICRh
c20ucHV0cyAiI3tvcGNvZGV9ICVjbCwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwg
JWVjeCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2RG91YmxlQnJhbmNoKGJy
YW5jaE9wY29kZSwgbW9kZSkKKyAgICBjYXNlIG1vZGUKKyAgICB3aGVuIDpub3JtYWwKKyAgICAg
ICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gOnJldmVyc2UKKyAg
ICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIGVsc2UKKyAgICAgIHJh
aXNlIG1vZGUuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9
ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRD
b21wYXJlKG9wY29kZVN1ZmZpeCwga2luZCkKKyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1l
ZGlhdGUgYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDAgYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJl
Z2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUi
KQorICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzaWYgb3BlcmFuZHNbMV0uaXNfYT8gSW1tZWRpYXRl
IGFuZCBvcGVyYW5kc1sxXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3Rl
cklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikKKyAg
ICAgICRhc20ucHV0cyAidGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiY21wI3t4ODZTdWZmaXgo
a2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludEJy
YW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShicmFuY2hP
cGNvZGVbMS4uLTFdLCBraW5kKQorICAgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7b3Bl
cmFuZHNbMl0uYXNtTGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTZXQoc2V0T3Bj
b2RlLCBvcGVyYW5kKQorICAgIGlmIG9wZXJhbmQuc3VwcG9ydHM4Qml0T25YODYKKyAgICAgICRh
c20ucHV0cyAiI3tzZXRPcGNvZGV9ICN7b3BlcmFuZC54ODZPcGVyYW5kKDpieXRlKX0iCisgICAg
ICAkYXNtLnB1dHMgIm1vdnpibCAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJh
bmQueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJ4Y2hnbCAj
e29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgICAkYXNtLnB1dHMgIiN7c2V0
T3Bjb2RlfSAlYWwiCisgICAgICAkYXNtLnB1dHMgIm1vdnpibCAlYWwsICVlYXgiCisgICAgICAk
YXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICBl
bmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29tcGFyZVNldChzZXRPcGNvZGUsIGtp
bmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShzZXRPcGNvZGVbMy4uLTFdLCBraW5kKQorICAg
IGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRzWzJdKQorICBlbmQKKyAgCisgIGRlZiBo
YW5kbGVYODZUZXN0KGtpbmQpCisgICAgdmFsdWUgPSBvcGVyYW5kc1swXQorICAgIGNhc2Ugb3Bl
cmFuZHMuc2l6ZQorICAgIHdoZW4gMgorICAgICAgbWFzayA9IEltbWVkaWF0ZS5uZXcoY29kZU9y
aWdpbiwgLTEpCisgICAgd2hlbiAzCisgICAgICBtYXNrID0gb3BlcmFuZHNbMV0KKyAgICBlbHNl
CisgICAgICByYWlzZSAiRXhwZWN0ZWQgMiBvciAzIG9wZXJhbmRzLCBidXQgZ290ICN7b3BlcmFu
ZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKyAgICAKKyAgICBpZiBt
YXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQorICAgICAgaWYgdmFsdWUu
aXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChraW5k
KX0gI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJjbXAje3g4NlN1ZmZpeChraW5kKX0gJDAs
ICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICAk
YXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3ttYXNrLng4Nk9wZXJhbmQoa2luZCl9
LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBo
YW5kbGVYODZCcmFuY2hUZXN0KGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0
KGtpbmQpCisgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kcy5sYXN0LmFz
bUxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0VGVzdChzZXRPcGNvZGUsIGtp
bmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUs
IG9wZXJhbmRzLmxhc3QpCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wQnJhbmNoKG9wY29k
ZSwgYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9w
Y29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisg
ICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMKKyAg
ICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYu
aW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7anVtcFRh
cmdldC5hc21MYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlN1YkJyYW5jaChicmFu
Y2hPcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSA0IGFuZCBvcGVyYW5kc1sx
XSA9PSBvcGVyYW5kc1syXQorICAgICAgJGFzbS5wdXRzICJuZWdsICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgImFkZGwgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNl
CisgICAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcygic3ViI3t4ODZTdWZmaXgoa2luZCl9
Iiwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgZW5kCisgICAgY2FzZSBvcGVyYW5kcy5z
aXplCisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVu
IDMKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNl
IHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7
anVtcFRhcmdldC5hc21MYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGxvd2VyWDg2CisgICAgJGFz
bS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICBjYXNlIG9wY29kZQorICAgIHdoZW4gImFk
ZGkiLCAiYWRkcCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0u
aXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBS
ZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3Rl
cklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAgICAgICB1bmxlc3Mg
b3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICRhc20ucHV0cyAibW92bCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRz
ICJsZWFsICN7b3BlcmFuZHNbMF0udmFsdWV9KCN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50
KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICBlbmQKKyAgICAg
IGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJ
RAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAg
ICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAk
YXNtLnB1dHMgImxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgICAgZWxzZQorICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9w
ZXJhbmRzWzBdCisgICAgICAgICAgJGFzbS5wdXRzICJhZGRsICN7eDg2T3BlcmFuZHMoOmludCwg
OmludCl9IgorICAgICAgICBlbmQKKyAgICAgIGVuZAorICAgIHdoZW4gImFuZGkiLCAiYW5kcCIK
KyAgICAgIGhhbmRsZVg4Nk9wKCJhbmRsIiwgOmludCkKKyAgICB3aGVuICJsc2hpZnRpIgorICAg
ICAgaGFuZGxlWDg2U2hpZnQoInNhbGwiLCA6aW50KQorICAgIHdoZW4gIm11bGkiCisgICAgICBp
ZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAg
ICAgICAkYXNtLnB1dHMgImltdWxsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCwgOmludCl9Igor
ICAgICAgZWxzZQorICAgICAgICAjIEZJWE1FOiBjb3VsZCBkbyBzb21lIHBlZXBob2xlIGluIGNh
c2UgdGhlIGxlZnQgb3BlcmFuZCBpcyBpbW1lZGlhdGUgYW5kIGl0J3MKKyAgICAgICAgIyBhIHBv
d2VyIG9mIHR3by4KKyAgICAgICAgaGFuZGxlWDg2T3AoImltdWxsIiwgOmludCkKKyAgICAgIGVu
ZAorICAgIHdoZW4gIm5lZ2kiCisgICAgICAkYXNtLnB1dHMgIm5lZ2wgI3t4ODZPcGVyYW5kcyg6
aW50KX0iCisgICAgd2hlbiAibm90aSIKKyAgICAgICRhc20ucHV0cyAibm90bCAje3g4Nk9wZXJh
bmRzKDppbnQpfSIKKyAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgaGFuZGxlWDg2T3AoIm9y
bCIsIDppbnQpCisgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYXJs
IiwgOmludCkKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzaHJs
IiwgOmludCkKKyAgICB3aGVuICJzdWJpIiwgInN1YnAiCisgICAgICBpZiBvcGVyYW5kcy5zaXpl
ID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAi
bmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAkYXNtLnB1dHMg
ImFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgaGFuZGxlWDg2T3AoInN1YmwiLCA6
aW50KQorICAgICAgZW5kCisgICAgd2hlbiAieG9yaSIsICJ4b3JwIgorICAgICAgaGFuZGxlWDg2
T3AoInhvcmwiLCA6aW50KQorICAgIHdoZW4gImxvYWRpIiwgInN0b3JlaSIsICJsb2FkcCIsICJz
dG9yZXAiCisgICAgICAkYXNtLnB1dHMgIm1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0i
CisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNtLnB1dHMgIm1vdnpibCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICB3aGVuICJsb2FkaCIKKyAgICAgICRhc20ucHV0cyAibW92endsICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6aGFsZil9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdo
ZW4gInN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAibW92YiAje3g4Nk9wZXJhbmRzKDpieXRlLCA6
Ynl0ZSl9IgorICAgIHdoZW4gImxvYWRkIiwgIm1vdmVkIiwgInN0b3JlZCIKKyAgICAgICRhc20u
cHV0cyAibW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAi
YWRkZCIKKyAgICAgICRhc20ucHV0cyAiYWRkc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91
YmxlKX0iCisgICAgd2hlbiAiZGl2ZCIKKyAgICAgICRhc20ucHV0cyAiZGl2c2QgI3t4ODZPcGVy
YW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3ViZCIKKyAgICAgICRhc20ucHV0
cyAic3Vic2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAibXVs
ZCIKKyAgICAgICRhc20ucHV0cyAibXVsc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91Ymxl
KX0iCisgICAgd2hlbiAic3FydGQiCisgICAgICAkYXNtLnB1dHMgInNxcnRzZCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9IgorICAgIHdoZW4gImNpMmQiCisgICAgICAkYXNtLnB1dHMgImN2dHNpMnNkICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0iCisgICAgd2hlbiAiYmRlcSIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlx
dWUoImJkZXEiKQorICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAg
ICAkYXNtLnB1dHMgImpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRl
cmVkKS5hc21MYWJlbH0iCisgICAgICAkYXNtLnB1dHMgImplICN7TGFiZWxSZWZlcmVuY2UubmV3
KGNvZGVPcmlnaW4sIG9wZXJhbmRzWzJdKS5hc21MYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5s
b3dlcigiWDg2IikKKyAgICB3aGVuICJiZG5lcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5j
aCgiam5lIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGd0IgorICAgICAgaGFuZGxlWDg2RG91Ymxl
QnJhbmNoKCJqYSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRndGVxIgorICAgICAgaGFuZGxlWDg2
RG91YmxlQnJhbmNoKCJqYWUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHQiCisgICAgICBoYW5k
bGVYODZEb3VibGVCcmFuY2goImphIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdGVxIgorICAg
ICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYWUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGVx
dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImplIiwgOm5vcm1hbCkKKyAgICB3aGVu
ICJiZG5lcXVuIgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1
biIpCisgICAgICBpc0VxdWFsID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4iKQorICAgICAg
JGFzbS5wdXRzICJ1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgImpwICN7
TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS5hc21MYWJlbH0iCisg
ICAgICAkYXNtLnB1dHMgImplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzRXF1
YWwpLmFzbUxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgICAgJGFz
bS5wdXRzICJqbXAgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICBpc0VxdWFsLmxvd2Vy
KCJYODYiKQorICAgIHdoZW4gImJkZ3R1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgi
amIiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJs
ZUJyYW5jaCgiamJlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdHVuIgorICAgICAgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKCJqYiIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRsdGVxdW4iCisgICAg
ICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYnRkMmki
CisgICAgICAkYXNtLnB1dHMgImN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRz
ICJjbXBsICQweDgwMDAwMDAwICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAkYXNtLnB1dHMgImplICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gInRkMmki
CisgICAgICAkYXNtLnB1dHMgImN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJjZDJp
IgorICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpk
b3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0
cyAidGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiamUgI3tvcGVyYW5kc1syXS5hc21M
YWJlbH0iCisgICAgICAkYXNtLnB1dHMgImN2dHNpMnNkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJqcCAje29wZXJh
bmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiam5lICN7b3BlcmFuZHNbMl0uYXNt
TGFiZWx9IgorICAgIHdoZW4gIm1vdmR6IgorICAgICAgJGFzbS5wdXRzICJ4b3JwZCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9IgorICAgIHdoZW4gInBvcCIKKyAgICAgICRhc20ucHV0cyAicG9wICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicHVzaCIKKyAgICAgICRhc20ucHV0cyAi
cHVzaCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gIm1vdmUiLCAi
c3hpMnAiLCAienhpMnAiCisgICAgICBpZiBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFu
ZHNbMF0gYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRz
ICJ4b3JsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNpZiBvcGVyYW5kc1swXSAhPSBvcGVyYW5kc1sxXQor
ICAgICAgICAkYXNtLnB1dHMgIm1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAg
ICBlbmQKKyAgICB3aGVuICJub3AiCisgICAgICAkYXNtLnB1dHMgIm5vcCIKKyAgICB3aGVuICJi
aWVxIiwgImJwZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmludCkKKyAgICB3
aGVuICJiaW5lcSIsICJicG5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmlu
dCkKKyAgICB3aGVuICJiaWEiLCAiYnBhIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIs
IDppbnQpCisgICAgd2hlbiAiYmlhZXEiLCAiYnBhZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImphZSIsIDppbnQpCisgICAgd2hlbiAiYmliIiwgImJwYiIKKyAgICAgIGhhbmRsZVg4Nklu
dEJyYW5jaCgiamIiLCA6aW50KQorICAgIHdoZW4gImJpYmVxIiwgImJwYmVxIgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6aW50KQorICAgIHdoZW4gImJpZ3QiLCAiYnBndCIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamciLCA6aW50KQorICAgIHdoZW4gImJpZ3RlcSIsICJi
cGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnZSIsIDppbnQpCisgICAgd2hlbiAi
YmlsdCIsICJicGx0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDppbnQpCisgICAg
d2hlbiAiYmlsdGVxIiwgImJwbHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamxlIiwg
OmludCkKKyAgICB3aGVuICJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDpi
eXRlKQorICAgIHdoZW4gImJibmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6
Ynl0ZSkKKyAgICB3aGVuICJiYmEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphIiwgOmJ5
dGUpCisgICAgd2hlbiAiYmJhZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphZSIsIDpi
eXRlKQorICAgIHdoZW4gImJiYiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6Ynl0
ZSkKKyAgICB3aGVuICJiYmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmJ5
dGUpCisgICAgd2hlbiAiYmJndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamciLCA6Ynl0
ZSkKKyAgICB3aGVuICJiYmd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnZSIsIDpi
eXRlKQorICAgIHdoZW4gImJibHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwgOmJ5
dGUpCisgICAgd2hlbiAiYmJsdGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbHRlcSIs
IDpieXRlKQorICAgIHdoZW4gImJ0aW8iLCAiYnRwbyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRl
c3QoImpvIiwgOmludCkKKyAgICB3aGVuICJidGlzIiwgImJ0cHMiCisgICAgICBoYW5kbGVYODZC
cmFuY2hUZXN0KCJqcyIsIDppbnQpCisgICAgd2hlbiAiYnRpeiIsICJidHB6IgorICAgICAgaGFu
ZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6aW50KQorICAgIHdoZW4gImJ0aW56IiwgImJ0cG56Igor
ICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmludCkKKyAgICB3aGVuICJidGJvIgor
ICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJzIgor
ICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJ6Igor
ICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJueiIK
KyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDpieXRlKQorICAgIHdoZW4gImptcCIK
KyAgICAgICRhc20ucHV0cyAiam1wICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9
IgorICAgIHdoZW4gImJhZGRpbyIsICJiYWRkcG8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgi
YWRkbCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlzIiwgImJhZGRwcyIKKyAgICAgIGhh
bmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJiYWRkaXoiLCAi
YmFkZHB6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianoiLCA6aW50KQorICAg
IHdoZW4gImJhZGRpbnoiLCAiYmFkZHBueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRs
IiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlvIgorICAgICAgaGFuZGxlWDg2U3ViQnJh
bmNoKCJqbyIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlzIgorICAgICAgaGFuZGxlWDg2U3ViQnJh
bmNoKCJqcyIsIDppbnQpCisgICAgd2hlbiAiYnN1Yml6IgorICAgICAgaGFuZGxlWDg2U3ViQnJh
bmNoKCJqeiIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlueiIKKyAgICAgIGhhbmRsZVg4NlN1YkJy
YW5jaCgiam56IiwgOmludCkKKyAgICB3aGVuICJibXVsaW8iCisgICAgICBoYW5kbGVYODZPcEJy
YW5jaCgiaW11bGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJtdWxpcyIKKyAgICAgIGhhbmRs
ZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm11bGl6IgorICAg
ICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJibXVs
aW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpueiIsIDppbnQpCisgICAg
d2hlbiAiYm9yaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpvIiwgOmludCkK
KyAgICB3aGVuICJib3JpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianMiLCA6
aW50KQorICAgIHdoZW4gImJvcml6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJq
eiIsIDppbnQpCisgICAgd2hlbiAiYm9yaW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9y
bCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJyZWFrIgorICAgICAgJGFzbS5wdXRzICJpbnQg
JDMiCisgICAgd2hlbiAiY2FsbCIKKyAgICAgICRhc20ucHV0cyAiY2FsbCAje29wZXJhbmRzWzBd
Lng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJyZXQiCisgICAgICAkYXNtLnB1dHMg
InJldCIKKyAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJl
U2V0KCJzZXRlIiwgOmludCkKKyAgICB3aGVuICJjaW5lcSIsICJjcG5lcSIKKyAgICAgIGhhbmRs
ZVg4NkludENvbXBhcmVTZXQoInNldG5lIiwgOmludCkKKyAgICB3aGVuICJjaWEiLCAiY3BhIgor
ICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YSIsIDppbnQpCisgICAgd2hlbiAiY2lh
ZXEiLCAiY3BhZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRhZSIsIDppbnQp
CisgICAgd2hlbiAiY2liIiwgImNwYiIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNl
dGIiLCA6aW50KQorICAgIHdoZW4gImNpYmVxIiwgImNwYmVxIgorICAgICAgaGFuZGxlWDg2SW50
Q29tcGFyZVNldCgic2V0YmUiLCA6aW50KQorICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAg
IGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGciLCA6aW50KQorICAgIHdoZW4gImNpZ3RlcSIs
ICJjcGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnZSIsIDppbnQpCisg
ICAgd2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
bCIsIDppbnQpCisgICAgd2hlbiAiY2lsdGVxIiwgImNwbHRlcSIKKyAgICAgIGhhbmRsZVg4Nklu
dENvbXBhcmVTZXQoInNldGxlIiwgOmludCkKKyAgICB3aGVuICJ0aW8iCisgICAgICBoYW5kbGVY
ODZTZXRUZXN0KCJzZXRvIiwgOmludCkKKyAgICB3aGVuICJ0aXMiCisgICAgICBoYW5kbGVYODZT
ZXRUZXN0KCJzZXRzIiwgOmludCkKKyAgICB3aGVuICJ0aXoiCisgICAgICBoYW5kbGVYODZTZXRU
ZXN0KCJzZXR6IiwgOmludCkKKyAgICB3aGVuICJ0aW56IgorICAgICAgaGFuZGxlWDg2U2V0VGVz
dCgic2V0bnoiLCA6aW50KQorICAgIHdoZW4gInRibyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3Qo
InNldG8iLCA6Ynl0ZSkKKyAgICB3aGVuICJ0YnMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJz
ZXRzIiwgOmJ5dGUpCisgICAgd2hlbiAidGJ6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0
eiIsIDpieXRlKQorICAgIHdoZW4gInRibnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRu
eiIsIDpieXRlKQorICAgIHdoZW4gInBlZWsiCisgICAgICAkYXNtLnB1dHMgIm1vdmwgI3tvcGVy
YW5kc1swXS52YWx1ZSAqIDR9KCVlc3ApLCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgIHdoZW4gInBva2UiCisgICAgICAkYXNtLnB1dHMgIm1vdmwgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS52YWx1ZSAqIDR9KCVlc3ApIgorICAgIHdo
ZW4gImNkcWkiCisgICAgICAkYXNtLnB1dHMgImNkcSIKKyAgICB3aGVuICJpZGl2aSIKKyAgICAg
ICRhc20ucHV0cyAiaWRpdmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3
aGVuICJmaWkyZCIKKyAgICAgICRhc20ucHV0cyAibW92ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFz
bS5wdXRzICJtb3ZkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAg
ICAgJGFzbS5wdXRzICJwc2xscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJwb3IgJXht
bTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiZmQyaWki
CisgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUp
fSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAibW92
c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNt
LnB1dHMgInBzcmxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIm1vdnNkICV4bW03LCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJC
YWQgb3Bjb2RlOiAje29wY29kZX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25L
aW5kLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kX2gKKyNkZWZpbmUgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisKK25h
bWVzcGFjZSBKU0MgeworCitlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2Fs
bCwgQ29kZUZvckNvbnN0cnVjdCB9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8v
IENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkocmV2aXNpb24gMTA2MTUzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQ29tbW9uU2xvd1BhdGhzX2gKIAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNp
bmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogCkBAIC00
MSw2ICs0MiwzOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIENvbW1vblNsb3dQYXRo
cyB7CiAKK0FMV0FZU19JTkxJTkUgRXhlY1N0YXRlKiBhcml0eUNoZWNrRm9yKEV4ZWNTdGF0ZSog
ZXhlYywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxl
ZSgpKTsKKyAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7CisgICAgQ29kZUJs
b2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0
ZWNvZGVGb3Ioa2luZCk7CisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gZXhl
Yy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKKworICAgIC8vIFRoaXMgZW5zdXJlcyBl
bm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8gYXJndW1lbnRz
IHBhc3NlZCBieSB0aGUgY2FsbGVyLgorICAgIGlmICghcmVnaXN0ZXJGaWxlLT5ncm93KGV4ZWMt
PnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxv
Y2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBU1NF
UlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSk7CisKKyAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5k
IGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVk
LgorICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CisgICAgUmVnaXN0ZXIqIHNyYyA9IGV4ZWMtPnJlZ2lz
dGVycygpOworICAgIFJlZ2lzdGVyKiBkc3QgPSBleGVjLT5yZWdpc3RlcnMoKSArIGRlbHRhOwor
CisgICAgaW50IGk7CisgICAgaW50IGVuZCA9IC1FeGVjU3RhdGU6Om9mZnNldEZvcihhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgZm9yIChpID0gLTE7IGkgPj0gZW5kOyAtLWkpCisg
ICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKKworICAgIGVuZCAtPSBkZWx0YTsKKyAgICBmb3IgKCA7
IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7CisKKyAgICBF
eGVjU3RhdGUqIG5ld0V4ZWMgPSBFeGVjU3RhdGU6OmNyZWF0ZShkc3QpOworICAgIEFTU0VSVCgo
dm9pZCopbmV3RXhlYyA8PSByZWdpc3RlckZpbGUtPmVuZCgpKTsKKyAgICByZXR1cm4gbmV3RXhl
YzsKK30KKwogQUxXQVlTX0lOTElORSBib29sIG9wSW5zdGFuY2VPZlNsb3coRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGJhc2VWYWwsIEpTVmFsdWUgcHJvdG8pCiB7CiAg
ICAgQVNTRVJUKCF2YWx1ZS5pc0NlbGwoKSB8fCAhYmFzZVZhbC5pc0NlbGwoKSB8fCAhcHJvdG8u
aXNDZWxsKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCShyZXZpc2lvbiAxMDYxNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1
ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVk
ZSAiREZHRHJpdmVyLmgiCisjaW5jbHVkZSAiRXhlY3V0aW9uSGFybmVzcy5oIgogI2luY2x1ZGUg
IkpJVC5oIgogI2luY2x1ZGUgIkpJVERyaXZlci5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgpAQCAt
ODQsNyArODUsNyBAQCBJbnRyaW5zaWMgTmF0aXZlRXhlY3V0YWJsZTo6aW50cmluc2ljKCkgCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIHZvaWQgamV0dGlzb25Db2RlQmxvY2soSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8VD4mIGNvZGVCbG9jaykKIHsKLSAgICBBU1NFUlQo
Y29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFT
U0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpKTsK
ICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKICAgICBPd25QdHI8VD4gY29k
ZUJsb2NrVG9KZXR0aXNvbiA9IGNvZGVCbG9jay5yZWxlYXNlKCk7CiAgICAgY29kZUJsb2NrID0g
c3RhdGljX3BvaW50ZXJfY2FzdDxUPihjb2RlQmxvY2tUb0pldHRpc29uLT5yZWxlYXNlQWx0ZXJu
YXRpdmUoKSk7CkBAIC0xNjcsOSArMTY4LDMwIEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6
Y29tcGlsZU9wdGltaXoKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRXZhbEV4ZWN1dGFi
bGU6OmppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVz
dWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2Nr
LCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCitpbmxpbmUgY29uc3QgY2hhciogc2FtcGxp
bmdEZXNjcmlwdGlvbihKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisgICAgc3dpdGNoIChq
aXRUeXBlKSB7CisgICAgY2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rOgorICAgICAgICBy
ZXR1cm4gIkludGVycHJldGVyIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklUQ29k
ZTo6QmFzZWxpbmVKSVQ6CisgICAgICAgIHJldHVybiAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRP
VEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6CisgICAgICAgIHJldHVybiAiREZHIENv
bXBpbGF0aW9uIChUT1RBTCkiOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIEpTT2JqZWN0KiBFdmFsRXhl
Y3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUq
IHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxp
bmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/
ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFM
KSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRp
b24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShq
aXRUeXBlKTsKQEAgLTIxMCw3ICsyMzIsNyBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNv
bXBpbGVJbnRlcm5hCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBp
bGVJZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZv
ckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xvYmFsRGF0
YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAgICAg
cmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtMjk1LDkgKzMxNywxNSBAQCBKU09iamVjdCogUHJvZ3Jh
bUV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpCiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIFBy
b2dyYW1FeGVjdXRhYmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sK
KyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1f
cHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJ
VCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwogSlNPYmplY3Qq
IFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29w
ZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsK
LSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJh
c2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxh
dGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxp
bmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5V
U0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtMzM2LDcgKzM2NCw3IEBAIEpTT2JqZWN0KiBQcm9ncmFt
RXhlY3V0YWJsZTo6Y29tcGlsZUludGUKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlm
ICghaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoKmdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9j
aywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0
aW9uKCpnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGpp
dFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC00MTIsNyArNDQwLDcgQEAg
RnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6YgogICAgIHdoaWxlIChyZXN1
bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEZ1bmN0aW9u
Q29kZUJsb2NrKj4ocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKTsKICAgICBBU1NFUlQocmVzdWx0KTsK
LSAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQp
OworICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUo
KSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQzOCw2ICs0NjYsMTggQEAgSlNPYmpl
Y3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZU9wdAogICAgIHJldHVybiBlcnJvcjsKIH0K
IAordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDYWxsKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklm
QXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JD
YWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENv
ZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7
Cit9CisKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ29uc3RydWN0KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVG
dW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3Qs
IG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hl
Y2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJU
X1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlv
bkV4ZWN1dGFibGU6OmNvZGVCbG9ja1dpdGhCeXRlY29kZUZvcihDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQpCiB7CiAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2VsaW5l
Q29kZUJsb2NrRm9yKGtpbmQpOwpAQCAtNDgyLDcgKzUyMiw3IEBAIFBhc3NPd25QdHI8RnVuY3Rp
b25Db2RlQmxvY2s+IEZ1bmN0aW9uRXgKIAogSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29tcGlsZUZvckNhbGxJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBz
Y29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5n
UmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAi
QmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCki
KTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9u
KGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oZXhl
Yyk7CkBAIC01MDQsNyArNTQ0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29t
cGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNhbGwtPnNoYXJlZFN5
bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0
aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ2FsbCwg
bV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJv
bFRhYmxlLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihl
eGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwg
bV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBD
b2RlRm9yQ2FsbCkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTUyNCw3ICs1NjQs
NyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAKIEpTT2JqZWN0
KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbChFeGVjU3Rh
dGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlw
ZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUg
PT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIg
OiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGlu
Z1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxF
KEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC01NDYsNyArNTg2LDcgQEAgSlNP
YmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUg
PSBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+c2hhcmVkU3ltYm9sVGFibGUoKTsKIAogI2lmIEVO
QUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0
cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUs
IGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMtPmds
b2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVj
dCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGpp
dFR5cGUsIENvZGVGb3JDb25zdHJ1Y3QpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lv
biAxMDYxNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRXhlY3V0YWJsZV9oCiAK
ICNpbmNsdWRlICJDYWxsRGF0YS5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNp
bmNsdWRlICJOb2Rlcy5oIgpAQCAtMzksMTIgKzQwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIERlYnVnZ2VyOwogICAgIGNsYXNzIEV2YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgRnVu
Y3Rpb25Db2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNs
YXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKICAgICBz
dHJ1Y3QgRXhjZXB0aW9uSW5mbzsKICAgICAKLSAgICBlbnVtIENvZGVTcGVjaWFsaXphdGlvbktp
bmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogICAgIGVudW0gQ29tcGlsYXRp
b25LaW5kIHsgRmlyc3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CiAKICAg
ICBpbmxpbmUgYm9vbCBpc0NhbGwoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMzE5
LDYgKzMyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBFdmFsRXhl
Y3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2Ny
aXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC0zMzgsNiArMzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6
ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxE
YXRhJik7CiAjZW5kaWYKIAogICAgICAgICBFdmFsQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29k
ZSgpCkBAIC0zODQsNiArMzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNs
YXNzIFByb2dyYW1FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAg
ICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTQxMSw2ICs0MTUsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBq
ZXR0aXNvbk9wdGltaXplZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29t
cGlsZShKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIFByb2dyYW1Db2RlQmxvY2sm
IGdlbmVyYXRlZEJ5dGVjb2RlKCkKQEAgLTQ1Myw2ICs0NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxl
IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhl
Y3V0YWJsZSBCYXNlOwogCkBAIC01MDgsNiArNTE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2Rl
Rm9yQ2FsbChKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ2FsbChK
U0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDYWxs
KCkgY29uc3QKQEAgLTUzNSw2ICs1NDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAj
aWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25z
dHJ1Y3QoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNvbnN0cnVj
dChKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JD
b25zdHJ1Y3QoKSBjb25zdApAQCAtNTgyLDYgKzU5MCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgICAgICBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0
YSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0
Q29tcGlsZUZvcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwp
IHsKKyAgICAgICAgICAgICAgICBqaXRDb21waWxlRm9yQ2FsbChnbG9iYWxEYXRhKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoa2lu
ZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgICAgIGppdENvbXBpbGVGb3JDb25zdHJ1
Y3QoZ2xvYmFsRGF0YSk7CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICAKICAgICAgICAgYm9v
bCBpc0dlbmVyYXRlZEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVz
cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRXhlY3V0aW9uSGFybmVzc19oCisjZGVm
aW5lIEV4ZWN1dGlvbkhhcm5lc3NfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNp
ZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiSklURHJpdmVyLmgiCisjaW5jbHVkZSAiTExJbnRF
bnRyeXBvaW50cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ29k
ZUJsb2NrVHlwZT4KK2lubGluZSBib29sIHByZXBhcmVGb3JFeGVjdXRpb24oSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYg
aml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworI2lmIEVOQUJMRShMTElOVCkK
KyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8g
U3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExMSW50Ojpn
ZXRFbnRyeXBvaW50KGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CisgICAg
ICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIo
KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQp
CisgICAgcmV0dXJuIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIGNvZGVCbG9j
aywgaml0Q29kZSwgaml0VHlwZSk7Cit9CisKK2lubGluZSBib29sIHByZXBhcmVGdW5jdGlvbkZv
ckV4ZWN1dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxGdW5jdGlvbkNvZGVC
bG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
JiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUs
IEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQor
eworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0
VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0
ZXIuCisgICAgICAgIExMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwga2lu
ZCwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgY29kZUJsb2NrLT5z
ZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGtpbmQpOworI2VuZGlmIC8v
IEVOQUJMRShMTElOVCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0
ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjaywg
c3ltYm9sVGFibGUsIGppdFR5cGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIEVOQUJMRShKSVQpCisKKyNlbmRpZiAvLyBFeGVjdXRpb25IYXJuZXNzX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJldmlzaW9u
IDEwNjE1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSA9
IGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPltyZWdpc3RlckFycmF5U2l6
ZV0pOwogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVycyA9IHJlZ2lzdGVy
QXJyYXkuZ2V0KCkgKyByZWdpc3Rlck9mZnNldDsKLQorICAgICAgICAKICAgICAgICAgLy8gQ29w
eSBhbGwgYXJndW1lbnRzIHRoYXQgY2FuIGJlIGNhcHR1cmVkIGJ5IG5hbWUgb3IgYnkgdGhlIGFy
Z3VtZW50cyBvYmplY3QuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9udW1DYXB0dXJl
ZEFyZ3M7ICsraSkgewogICAgICAgICAgICAgaW50IGluZGV4ID0gQ2FsbEZyYW1lOjphcmd1bWVu
dE9mZnNldChpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXku
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJ
KHJldmlzaW9uIDEwNjE1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAog
ICAgIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmllcjxVbmtub3du
PiB7CiAgICAgICAgIHR5cGVkZWYgV3JpdGVCYXJyaWVyPFVua25vd24+IEJhc2U7CkBAIC0xMjIs
NiArMTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEpTQXJyYXkg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwcm90
ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNp
b24gMTA2MTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNs
YXNzIFByb3BlcnR5TmFtZUFycmF5OworICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGVudW0g
RW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywKQEAg
LTE2NCw2ICsxNjUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0
IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+
IG1fc3RydWN0dXJlOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxMDYxNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3Mg
SlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNz
IFNvdXJjZUNvZGU7CiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0xNDAsNiArMTQxLDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBi
b29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgc3RhdGljIEpT
VmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZp
ZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmNwcAkocmV2aXNpb24gMTA2MTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw4IEBAIEpT
R2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICAsIGtleXdvcmRzKGFk
b3B0UHRyKG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRlcnByZXRlcigwKQogICAgICwg
aGVhcCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFzc0luZm8oJkpTQXJyYXk6OnNf
aW5mbykKKyAgICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpTRmluYWxPYmplY3Q6OnNfaW5m
bykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxhc3RTY3JhdGNoQnVmZmVyKDAp
CiAjZW5kaWYKQEAgLTIxNiw3ICsyMTgsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShH
bG9iYWxEYXRhVHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1bmtzKHRoaXMp
KTsKICNlbmRpZgogCi0gICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUodGhpcy0+Y2FuVXNlSklU
KCkpOworICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKCZsbGludERhdGEsIHRoaXMtPmNhblVz
ZUpJVCgpKTsKIAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xsZWN0KCk7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24g
MTA2MTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNiBAQAogI2RlZmluZSBKU0dsb2JhbERhdGFf
aAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oIgotI2luY2x1ZGUg
IkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5jbHVkZSAi
RXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJTdHJv
bmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJOdW1l
cmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlN0cm9u
Zy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJUaW1lb3V0Q2hlY2tlci5o
IgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYgKzY2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAg
Y2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNs
YXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmE7CiAgICAgY2xhc3Mg
UmVnRXhwQ2FjaGU7CkBAIC0yNDEsNiArMjQzLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247CisKKyAgICAgICAgY29u
c3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOworICAgICAgICBjb25zdCBDbGFz
c0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CisKKyAgICAgICAgTExJbnQ6OkRh
dGEgbGxpbnREYXRhOworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0
ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBob3N0Q2FsbFJldHVyblZhbHVl
OwpAQCAtMzQ2LDYgKzM1NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogI3VuZGVmIHJlZ2lzdGVyVHlw
ZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2Jh
bERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKICAgICAgICAgc3RhdGljIEpT
R2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAgdm9pZCBjcmVh
dGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDYxNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAg
IGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CisgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0
b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBSZWdFeHBDb25zdHJ1
Y3RvcjsKQEAgLTMzNSw2ICszMzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyosIGlu
dCBjb3VudCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVzZXQgaW50
byBpbml0LgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluaXQoSlNPYmplY3QqIHRo
aXNWYWx1ZSk7CiAgICAgICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMDYxNTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEdldHRlclNl
dHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQmxvY2s7
CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFy
cmF5OwpAQCAtMjY5LDYgKzI3MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU09iamVj
dChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFn
ZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gTm9ib2R5IHNob3VsZCBldmVyIGFzayBhbnkg
b2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0aGluZyBhbHJlYWR5IGtub3duIHRvIGJlIGEgSlNP
YmplY3QuCiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXI7CiAgICAgICAg
IHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7CkBAIC0zODEsNiArMzg0LDggQEAgQ09NUElM
RV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0IEpTRmluYWxP
YmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3Jh
Z2UpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwNjE1MykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogCiAgICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciA6IHB1YmxpYyBK
U0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtOTYsNiArOTcsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5h
bWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKIAogICAgICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTA2MTUzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1N0cmluZzsKKyAgICBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhK
U0dsb2JhbERhdGEqKTsKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsK
QEAgLTI0MCw2ICsyNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7
CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIqKSBjb25zdDsKICAgICAg
ICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFyKikgY29uc3Q7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAxMDYxNTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
IHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJsZS4KICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8PCAxOwogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEgPDwgMjsKQEAgLTg3LDYgKzg5LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGlz
U2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA8PSAoMSA8PCA3
KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAgICAgICBib29sIGlzU2V0T25GbGFnczIo
dW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8PCA4KSk7IHJldHVybiBt
X2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxMDYxNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDEwICsxMTYs
OSBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiAgICAgcmV0dXJu
IEpTTm90QW5PYmplY3Q6OmNyZWF0ZShleGVjKTsKIH0KIAotI2lmbmRlZiBOREVCVUcKIGNoYXIq
IEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIHsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUg
PSA2NDsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSAxMjg7CiAgICAgc3RhdGljIGNo
YXIgZGVzY3JpcHRpb25bc2l6ZV07CiAKICAgICBpZiAoISp0aGlzKQpAQCAtMTI4LDE0ICsxMjcs
MTQgQEAgY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogICAgICAgICBzbnByaW50ZihkZXNj
cmlwdGlvbiwgc2l6ZSwgIkludDMyOiAlZCIsIGFzSW50MzIoKSk7CiAgICAgZWxzZSBpZiAoaXNE
b3VibGUoKSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHNucHJpbnRmKGRlc2NyaXB0
aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICVseCIsIGFzRG91YmxlKCksIHJlaW50ZXJwcmV0RG91
YmxlVG9JbnRwdHIoYXNEb3VibGUoKSkpOworICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwg
c2l6ZSwgIkRvdWJsZTogJWx4LCAlbGYiLCByZWludGVycHJldERvdWJsZVRvSW50cHRyKGFzRG91
YmxlKCkpLCBhc0RvdWJsZSgpKTsKICNlbHNlCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAg
IGRvdWJsZSBhc0RvdWJsZTsKICAgICAgICAgICAgIHVpbnQzMl90IGFzVHdvSW50MzJzWzJdOwog
ICAgICAgICB9IHU7CiAgICAgICAgIHUuYXNEb3VibGUgPSBhc0RvdWJsZSgpOwotICAgICAgICBz
bnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlMDh4OiUwOHgiLCBhc0Rv
dWJsZSgpLCB1LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdKTsKKyAgICAgICAgc25w
cmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICUwOHg6JTA4eCwgJWxmIiwgdS5hc1R3
b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSwgYXNEb3VibGUoKSk7CiAjZW5kaWYKICAgICB9
IGVsc2UgaWYgKGlzQ2VsbCgpKQogICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwg
IkNlbGw6ICVwIiwgYXNDZWxsKCkpOwpAQCAtMTUyLDcgKzE1MSw2IEBAIGNoYXIqIEpTVmFsdWU6
OmRlc2NyaXB0aW9uKCkKIAogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KLSNlbmRpZgogCiAv
LyBUaGlzIGluIHRoZSBUb0ludDMyIG9wZXJhdGlvbiBpcyBkZWZpbmVkIGluIHNlY3Rpb24gOS41
IG9mIHRoZSBFQ01BLTI2MiBzcGVjLgogLy8gTm90ZSB0aGF0IHRoaXMgb3BlcmF0aW9uIGlzIGlk
ZW50aWNhbCB0byBUb1VJbnQzMiBvdGhlciB0aGFuIHRvIGludGVycHJldGF0aW9uCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAxMDYxNTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIzMiw5ICsyMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNDZWxsKiBhc0Nl
bGwoKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlkQ2FsbGVl
KCk7CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGNoYXIqIGRlc2NyaXB0aW9uKCk7Ci0jZW5k
aWYKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBKU1ZhbHVlKFdy
aXRlQmFycmllckJhc2U8VD4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMTA2MTUzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCwxMCArMzgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAKICAgICBjbGFzcyBKU1Zhcmlh
YmxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBmcmllbmQgY2xh
c3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAg
ICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAxMDYx
NTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNiArNTIsMTAgQEAgdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29u
c3RydWN0SW5saQogCiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsKIAoraW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2ludDMyX3QgZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworaW50MzJfdCBleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JKSVRTb29uOworCiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9w
dGltaXplQWZ0ZXJXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJMb25nV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250
T3B0aW1pemVBbnl0aW1lU29vbjsKQEAgLTEzNyw2ICsxNDEsMTAgQEAgdm9pZCBpbml0aWFsaXpl
T3B0aW9ucygpCiAgICAgCiAgICAgU0VUKG1heGltdW1JbmxpbmluZ0RlcHRoLCA1KTsKIAorICAg
IFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcCwgICAgIC0xMDApOwor
ICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb24sIHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9ySklUU29vbiwgICAgICAgICAgICAtMTAwKTsKKwogICAgIFNFVChleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwLCAgICAgLTEwMDApOwogICAgIFNFVChl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCwgLTUwMDApOwog
ICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiwg
c3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOwpAQCAtMTg1LDYgKzE5Myw4IEBA
IHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIGlmIChjcHVzVG9Vc2UgPCAxKQogICAgICAg
ICBjcHVzVG9Vc2UgPSAxOwogICAgIAorICAgIGNwdXNUb1VzZSA9IDE7CisgICAgCiAgICAgU0VU
KG51bWJlck9mR0NNYXJrZXJzLCBjcHVzVG9Vc2UpOwogCiAgICAgQVNTRVJUKGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uIDw9IGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEwNjE1MykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTAg
QEAgZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cgogCiBleHRlcm4gdW5z
aWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERlcHRoIG9mIGlubGluZSBzdGFjaywgc28g
MSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMuCiAKK2V4dGVybiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworZXh0ZXJuIGludDMyX3QgZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworZXh0ZXJuIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogZXh0ZXJuIGludDMyX3QgZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogZXh0ZXJuIGlu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZpc2lv
biAxMDYxNTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpT
T2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTY29w
ZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCkBAIC05MSw2ICs5
Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25z
dCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAgICAgfTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlz
aW9uIDEwNjE1MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFy
cmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5RGF0YTsKICAgICBjbGFzcyBTdHJ1Y3R1
cmVDaGFpbjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3Rh
dGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAog
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFz
c0luZm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICBTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlzaW9uIDEwNjE1
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogCiAgICAg
Y2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlNDZWxsIHsKQEAgLTc0LDYgKzc1LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBTdHJ1Y3R1
cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFN0cnVj
dHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSW5saW5l
QVNNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9JbmxpbmVBU00u
aAkocmV2aXNpb24gMTA2MTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9JbmxpbmVB
U00uaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNCArNjgsMTEgQEAKICNkZWZpbmUgSElERV9TWU1C
T0wobmFtZSkKICNlbmRpZgogCisvLyBGSVhNRTogZmlndXJlIG91dCBob3cgdGhpcyB3b3JrcyBv
biBhbGwgdGhlIHBsYXRmb3Jtcy4gSSBrbm93IHRoYXQKKy8vIG9uIExpbnV4LCB0aGUgcHJlZmVy
cmVkIGZvcm0gaXMgIi5Mc3R1ZmYiIGFzIG9wcG9zZWQgdG8gIkxzdHVmZiIuCisvLyBEb24ndCBr
bm93IGFib3V0IGFueSBvZiB0aGUgb3RoZXJzLgorI2lmIFBMQVRGT1JNKE1BQykKKyNkZWZpbmUg
TE9DQUxfTEFCRUxfU1RSSU5HKG5hbWUpICJMIiAjbmFtZQorI2VuZGlmCisKICNlbmRpZiAvLyBJ
bmxpbmVBU01faApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNp
b24gMTA2MTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC05MjAsNiArOTIwLDE4IEBACiAjZGVmaW5lIEVOQUJMRV9KSVQgMQogI2Vu
ZGlmCiAKKy8qIE9uIHNvbWUgb2YgdGhlIHBsYXRmb3JtcyB3aGVyZSB3ZSBoYXZlIGEgSklULCB3
ZSB3YW50IHRvIGFsc28gaGF2ZSB0aGUgCisgICBsb3ctbGV2ZWwgaW50ZXJwcmV0ZXIuICovCisj
aWYgIWRlZmluZWQoRU5BQkxFX0xMSU5UKSAmJiBFTkFCTEUoSklUKSAmJiBQTEFURk9STShNQUMp
ICYmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIEVOQUJMRV9MTElOVCAxCisjZW5kaWYKKwor
LyogSWYgd2UgaGF2ZSBMTEludCBlbmFibGVkIGFuZCB0aGUgSklUIGVuYWJsZWQsIHdlIGFsc28g
ZW5hYmxlIE9TUmluZyBmcm9tCisgICBMTEludCB0byB0aGUgSklULiAqLworI2lmICFkZWZpbmVk
KEVOQUJMRV9MTElOVF9PU1JfVE9fSklUKSAmJiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoTExJTlQp
CisjZGVmaW5lIEVOQUJMRV9MTElOVF9PU1JfVE9fSklUIDEKKyNlbmRpZgorCiAjaWYgIWRlZmlu
ZWQoRU5BQkxFX0RGR19KSVQpICYmIEVOQUJMRShKSVQpCiAvKiBFbmFibGUgdGhlIERGRyBKSVQg
b24gWDg2IGFuZCBYODZfNjQuICBPbmx5IHRlc3RlZCBvbiBNYWMgYW5kIEdOVS9MaW51eC4gKi8K
ICNpZiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpICYmIChQTEFURk9STShNQUMpIHx8IE9TKExJ
TlVYKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtl
ZExpc3QuaAkocmV2aXNpb24gMTA2MTUzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9T
ZW50aW5lbExpbmtlZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsOCBAQCBwdWJs
aWM6CiAKICAgICBpdGVyYXRvciBiZWdpbigpOwogICAgIGl0ZXJhdG9yIGVuZCgpOworICAgIAor
ICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIGJlZ2luKCkgPT0gZW5kKCk7IH0KIAogcHJpdmF0
ZToKICAgICBSYXdOb2RlIG1faGVhZFNlbnRpbmVsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAxMDYxNTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw2ICs0Myw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZTdHJpbmcgKiBDRlN0cmkKIC8v
IExhbmRpbmcgdGhlIGZpbGUgbW92ZXMgaW4gb25lIHBhdGNoLCB3aWxsIGZvbGxvdyBvbiB3aXRo
IHBhdGNoZXMgdG8gY2hhbmdlIHRoZSBuYW1lc3BhY2VzLgogbmFtZXNwYWNlIEpTQyB7CiBzdHJ1
Y3QgSWRlbnRpZmllckNTdHJpbmdUcmFuc2xhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJZGVudGlmaWVyQ2hhckJ1ZmZlclRy
YW5zbGF0b3I7CiBzdHJ1Y3QgSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyVHJhbnNsYXRvcjsKIH0K
QEAgLTcyLDcgKzczLDggQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgZnJpZW5kIHN0cnVjdCBX
VEY6OlN1YnN0cmluZ1RyYW5zbGF0b3I7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6OlVDaGFyQnVm
ZmVyVHJhbnNsYXRvcjsKICAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKLQorICAg
IGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKIHByaXZhdGU6
CiAgICAgZW51bSBCdWZmZXJPd25lcnNoaXAgewogICAgICAgICBCdWZmZXJJbnRlcm5hbCwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjE1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAxLTI2ICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgSlNDIHNob3VsZCBiZSBhIHRyaXBsZS10
aWVyIFZNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NTgxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAwNzk2OTQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCBFRkwncyBidWlsZCBzeXN0
ZW0gdG8gaW5jbHVkZSBhIG5ldyBkaXJlY3RvcnkgaW4gSmF2YVNjcmlwdENvcmUuCisgICAgICAg
IAorICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBubyBiZWhhdmlvciBjaGFuZ2VkLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMTItMDEtMjcgIEtlbiBCdWNoYW5hbiAgPGtl
bnJiQGNocm9taXVtLm9yZz4KIAogICAgICAgICBDcmFzaCBpbiB1cGRhdGVGaXJzdExldHRlcigp
IGZyb20gdW5uZWNlc3NhcnkgYW5vbnltb3VzIGJsb2NrCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMTA2MTUzKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2pp
dCIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpJbmRleDogU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEwNjE1MykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDEtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
KworICAgICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRp
cmVjdG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4KKyAgICAgICAgCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisKIDIwMTItMDEtMTEgIEphY2t5IEppYW5nICA8emhhamlhbmdAcmltLmNvbT4KIAog
ICAgICAgICBbQmxhY2tCZXJyeV0gQVNTRVJUIGZhaWx1cmUgaW4gQmFja2luZ1N0b3JlUHJpdmF0
ZTo6YmxpdFZpc2libGVDb250ZW50cygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDEwNjE1MykKKysrIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDYgKzQ0LDcgQEAgU0VUKFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2ludGVycHJldGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJz
ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L3J1bnRpbWUiCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDYxNTMpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0yNyAgRmlsaXAgUGl6bG8g
IDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGll
ciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4
MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQgRUZMJ3MgYnVpbGQgc3lzdGVt
IHRvIGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3JpcHRDb3JlLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAxLTI3ICBNYXJ0
aW4gUm9iaW5zb24gIDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBbV0sy
XSBJbXBsZW1lbnQgdGhlIHBvbGljeSBjbGllbnQKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2VmbC9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9l
ZmwvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNjE1MykKKysrIFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2VmbC9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjgsMTAgKzY4LDEyIEBA
IFNFVChEdW1wUmVuZGVyVHJlZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0FQSQogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9hc3NlbWJsZXIKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUK
ICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGZnCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2hlYXAKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIKICAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vaml0CisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50CiAgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
Rm9yd2FyZGluZ0hlYWRlcnMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vd3RmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124432</attachid>
            <date>2012-01-28 00:41:10 -0800</date>
            <delta_ts>2012-01-29 17:37:38 -0800</delta_ts>
            <desc>the patch, sort of</desc>
            <filename>triple_tier_59.diff</filename>
            <type>text/plain</type>
            <size>451895</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MTg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5OSBA
QAorMjAxMi0wMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi52c3Byb3BzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDog
QWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Omlz
U2V0KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAg
IChDYWxsTGlua1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmVzY2FwZVF1b3Rlcyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWlu
Z0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RXZh
bENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6
amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1w
bCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dXNlc09wY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAg
KCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0Q29tcGls
ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
aWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxp
a2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlr
ZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1
ZW50RXhpdFNpdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29v
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50
RXhlY3V0ZUNvdW50ZXIpOgorICAgICAgICAoUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChF
dmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBi
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6
CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OkdldEJ5SWRTdGF0dXMpOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjp3YXNTZWVuSW5KSVQpOgorICAgICAgICAoR2V0QnlJZFN0YXR1
cyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgIChJbnN0cnVj
dGlvbik6CisgICAgICAgICgpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZv
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0lu
Zm86OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKExMSW50Q2FsbExpbmtJbmZvKToKKyAg
ICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6OkxM
SW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAg
IChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAoUHV0QnlJZFN0YXR1cyk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0
UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaCk6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0
UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRD
b21waWxlci5jcHA6CisgICAgICAgICgpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKCk6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChBbGxvY2F0aW9uU3BhY2UpOgorICAgICAgICAoKToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAo
SGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAoSlNDOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFt
ZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJy
ZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZy
YW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmls
ZSk6CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKToKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAg
KiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpJVENvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2Rl
Ojppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAg
ICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToK
KyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93
KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RV
Ql9GVU5DVElPTik6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJ
VC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1v
bi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChEYXRhKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50
RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRF
dmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2lu
dCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBv
aW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxl
cik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9u
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpM
TEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQv
TExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChK
U0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmVudHJ5T1NSKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJlc29sdmVHbG9iYWwpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9z
dENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRk
ZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludE9m
ZnNldHNFeHRyYWN0b3IpOgorICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDog
QWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3Ry
dWN0RW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZv
ckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpMTEludDo6ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20u
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRy
YWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAg
ICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFz
bS9zZWxmX2hhc2gucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2V0dGluZ3MucmI6
IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBBZGRlZC4KKyAgICAg
ICAgKiBvZmZsaW5lYXNtL3g4Ni5yYjogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKCk6Cisg
ICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuaDoKKyAgICAgICAgKEpTQzo6Q29tbW9u
U2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKToKKyAgICAgICAgKENvbW1vblNsb3dQYXRocyk6Cisg
ICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6b3BJbnN0YW5jZU9mU2xvdyk6CisgICAgICAg
ICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6amV0dGlzb25Db2RlQmxv
Y2spOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6CisgICAgICAg
IChKU0MpOgorICAgICAgICAoSlNDOjpzYW1wbGluZ0Rlc2NyaXB0aW9uKToKKyAgICAgICAgKEpT
Qzo6RXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OlByb2dy
YW1FeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFi
bGU6OmNvbXBpbGVJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6
YmFzZWxpbmVDb2RlQmxvY2tGb3IpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6
OmppdENvbXBpbGVGb3JDYWxsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpq
aXRDb21waWxlRm9yQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
Ojpjb21waWxlRm9yQ2FsbEludGVybmFsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRh
YmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwpOgorICAgICAgICAqIHJ1bnRpbWUvRXhl
Y3V0YWJsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKCk6CisgICAgICAgIChFdmFsRXhl
Y3V0YWJsZSk6CisgICAgICAgIChQcm9ncmFtRXhlY3V0YWJsZSk6CisgICAgICAgIChGdW5jdGlv
bkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBp
bGVGb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oOiBBZGRlZC4KKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OnByZXBhcmVGb3JFeGVjdXRpb24pOgorICAgICAg
ICAoSlNDOjpwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBY3RpdmF0aW9uLmg6CisgICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dGVhck9mZik6Cisg
ICAgICAgICogcnVudGltZS9KU0FycmF5Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNB
cnJheSk6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoSlNDZWxsKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24u
aDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0Z1bmN0aW9uKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9i
YWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTR2xvYmFsRGF0YSk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6
c2NyYXRjaEJ1ZmZlckZvclNpemUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgICog
cnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKCk6CisgICAgICAg
IChKU09iamVjdCk6CisgICAgICAgIChKU0ZpbmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoSlNTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBl
SW5mby5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFR5cGVJbmZvKToKKyAgICAgICAgKiBy
dW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SlNWYWx1
ZTo6ZGVzY3JpcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYWx1ZS5oOgorICAgICAgICAo
SlNWYWx1ZSk6CisgICAgICAgICgpOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVj
dC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTVmFyaWFibGVPYmplY3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChPcHRpb25zKToKKyAgICAgICAgKEpT
Qzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9u
cy5oOgorICAgICAgICAoT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoU2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoU3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAqIHd0Zi9JbmxpbmVBU00uaDoKKyAgICAg
ICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg6
CisgICAgICAgIChTZW50aW5lbExpbmtlZExpc3QpOgorICAgICAgICAoV1RGOjpTZW50aW5lbExp
bmtlZExpc3Q6OmlzRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChTdHJpbmdJbXBsKToKKyAgICAgICAgKCk6CisKIDIwMTIt
MDEtMjcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDYxNjcuCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDYxODQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAgU0VU
KEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIi
CiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3BhcnNlciIKICAgICAiJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
cnVudGltZSIKQEAgLTk0LDYgKzk1LDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAg
ICBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwCiAKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9j
YXRvci5jcHAKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKICAgICBqaXQvSklUQXJp
dGhtZXRpYzMyXzY0LmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljLmNwcAogICAgIGppdC9KSVRD
YWxsMzJfNjQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZp
c2lvbiAxMDYxODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0g
XAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlciBcCiAJLUkk
KHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJLUkkKHNyY2RpcikvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdCBcCisJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyIFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDYxODQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtODEsNiAr
ODEsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9TSDRBc3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQ29udmVudGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0lu
Zm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNw
cCBcCkBAIC0xMDIsNiArMTAzLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MTEludENhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TGluZUluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxM
aW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxs
TGlua0luZm8uaCBcCkBAIC0yNzcsNiArMjc5LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Db21wYWN0SklUQ29kZU1hcC5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCBcCisJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
YWxsMzJfNjQuY3BwIFwKQEAgLTMwMCw2ICszMDQsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13
aW4zMi9zdGRib29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4zMi9zdGRpbnQu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggXApAQCAtMzUw
LDYgKzM1NSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FsbERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJ
bmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlv
bktpbmQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBc
CkBAIC0zNzgsNiArMzg0LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRpb25IYXJuZXNzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5wcmkJKHJldmlzaW9uIDEwNjE4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAgSU5DTFVE
RVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9kZWJ1Z2dlciBcCiAgICAgJCRTT1VSQ0VfRElS
L2ludGVycHJldGVyIFwKICAgICAkJFNPVVJDRV9ESVIvaml0IFwKKyAgICAkJFNPVVJDRV9ESVIv
bGxpbnQgXAogICAgICQkU09VUkNFX0RJUi9wYXJzZXIgXAogICAgICQkU09VUkNFX0RJUi9wcm9m
aWxlciBcCiAgICAgJCRTT1VSQ0VfRElSL3J1bnRpbWUgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Rh
cmdldC5wcmkJKHJldmlzaW9uIDEwNjE4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCiAgICAgaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3JGaXhlZFZNUG9vbC5jcHAgXAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBc
CisgICAgaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKICAgICBqaXQvSklUQXJpdGhtZXRp
Yy5jcHAgXAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwKICAgICBqaXQvSklUQ2Fs
bC5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwNjE4NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMwLDYgKzE3MzAsMTAgQEAKIAkJCQk+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caml0XEhvc3RDYWxs
UmV0dXJuVmFsdWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRp
dmVQYXRoPSIuLlwuLlxqaXRcSklULmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0xODE1LDYg
KzE4MTksMTQgQEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKKwkJCU5hbWU9
ImxsaW50IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGxsaW50XExM
SW50RGF0YS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKIAkJ
CU5hbWU9ImludGVycHJldGVyIgogCQkJPgogCQkJPEZpbGUKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmVDb21tb24udnNwcm9wcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlQ29tbW9uLnZz
cHJvcHMJKHJldmlzaW9uIDEwNjE4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9w
cwkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJPFRvb2wKIAkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1wm
cXVvdDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29tcGlsZXIv
Oy4uLy4uL2RmZy87Li4vLi4vaml0LzsuLi8uLi9ydW50aW1lLzsuLi8uLi9ieXRlY29kZS87Li4v
Li4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJvZmlsZXI7Li4vLi4vYXNzZW1ibGVy
LzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIp
XGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0
ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZSZxdW90OzsmcXVv
dDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90Ozsm
cXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90
OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7IgorCQlBZGRpdGlv
bmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2Jq
XEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXCZxdW90OzsuLi8uLi87Li4vLi4vQVBJLzsu
Li8uLi9wYXJzZXIvOy4uLy4uL2J5dGVjb21waWxlci87Li4vLi4vZGZnLzsuLi8uLi9qaXQvOy4u
Ly4uL2xsaW50LzsuLi8uLi9ydW50aW1lLzsuLi8uLi9ieXRlY29kZS87Li4vLi4vaW50ZXJwcmV0
ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJvZmlsZXI7Li4vLi4vYXNzZW1ibGVyLzsuLi8uLi9kZWJ1
Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVv
dDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVv
dDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKENvbmZpZ3Vy
YXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGli
cmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7IgogCQlQcmVwcm9jZXNzb3JEZWZpbml0
aW9ucz0iX19TVERfQyIKIAkJRm9yY2VkSW5jbHVkZUZpbGVzPSJJQ1VWZXJzaW9uLmgiCiAJLz4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvY29weS1maWxlcy5jbWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZpbGVzLmNtZAko
cmV2aXNpb24gMTA2MTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZpbGVzLmNtZAkod29ya2luZyBjb3B5KQpAQCAt
NDMsNiArNDMsNyBAQCBmb3IgJSVkIGluICgKICAgICBkZWJ1Z2dlcgogICAgIGludGVycHJldGVy
CiAgICAgaml0CisgICAgbGxpbnQKICAgICBwYXJzZXIKICAgICBwcm9maWxlcgogICAgIHJ1bnRp
bWUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDYxODQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE1IEBACiAJb2JqZWN0cyA9IHsKIAog
LyogQmVnaW4gUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwQTkxNEJBN0ZE
OTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8gPSB7CisJCQlpc2EgPSBQQlhBZ2dyZWdhdGVU
YXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwQUMxNEJBN0ZEOTAwQkZF
MjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJM
TEludCBPZmZzZXRzIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MEFBMTRCQTdG
RDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCisJCQkpOworCQkJbmFt
ZSA9ICJMTEludCBPZmZzZXRzIjsKKwkJCXByb2R1Y3ROYW1lID0gIkRlcml2ZWQgU291cmNlcyI7
CisJCX07CiAJCTY1RkIzRjY2MDlEMTFFOTEwMEY0OURFQiAvKiBEZXJpdmVkIFNvdXJjZXMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gNjVGQjNGNzcwOUQxMUVCRDAwRjQ5REVCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJEZXJpdmVkIFNvdXJjZXMiICovOwpAQCAtMTQsNiAr
MjMsOSBAQAogCQkJCTY1RkIzRjY1MDlEMTFFOTEwMEY0OURFQiAvKiBHZW5lcmF0ZSBEZXJpdmVk
IFNvdXJjZXMgKi8sCiAJCQkJNUQzNURFRTEwQzdDMTQwQjAwODY0OEIyIC8qIEdlbmVyYXRlIERU
cmFjZSBoZWFkZXIgKi8sCiAJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4MEI0
MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKIAkJCW5h
bWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJCXByb2R1Y3ROYW1lID0gIkRlcml2ZWQgU291cmNl
cyI7CiAJCX07CkBAIC00OCw2ICs2MCwxMCBAQAogCQkwQkFDOTRBMDEzMzg3Mjg0MDBDRjEzNUIg
LyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJl
c3RyaWN0aW9uVmVyaWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwQkNEODM1NzE0ODU4NDUyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkNEODM1
NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJGMjhBMjkxMUEzM0RDMzAwNjM4Rjg0
IC8qIFNpemVMaW1pdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovOyB9
OworCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NTE0QkNG
NDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi87IH07CisJCTBGMEI4MzlCMTRC
Q0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJ
bnRFbnRyeXBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NzE0QkNG
NDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovOyB9OworCQkwRjBCODM5RDE0QkNGNDY2
MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4
M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVU
eXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYg
LyogSGFuZGxlckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgz
QUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTgsOSArNzQsMTMgQEAKIAkJ
MEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjMxNEJDRjg1RTAw
ODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9i
YWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjkx
NEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCODE0QkNG
OTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBGQzQ1QTE0QkQx
NUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTElu
dENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTVGMTVEMTRC
N0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE2RDcyNjE0MkMzOUMwMDBDRjc4NEEgLyog
Qml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwICovOyB9OwogCQkw
RjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyog
SklURHJpdmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjdBMTRCRTcy
NzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8qIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjdFMTRCRUFB
ODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyNDJEQTcxM0YzQjFFODAwN0FERDRDIC8q
IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNl
SGFydmVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEYyQzU1NkYxNDczOEYzMTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZFMTQ3MzhGMkUw
MDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NzAxNDczOEYzNTAwMTIxRTRGIC8qIERGR0NvZGVC
bG9ja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICovOyB9OwpAQCAt
NzEsNiArOTEsMTkgQEAKIAkJMEY0MzE3MzgxNDZCQUM2OTAwN0UzODkwIC8qIExpc3RhYmxlSGFu
ZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4MDgyMTRCQTU3MkQwMEJG
RTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4
MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8q
IExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEE0
MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExM
SW50SGVscGVycy5jcHAgKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tdW51
c2VkLXBhcmFtZXRlciI7IH07IH07CisJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTElu
dEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBBNzE0QkE3RkExMDBC
RkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwICovOyB9OworCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIg
LyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMu
Y3BwICovOyB9OworCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21tb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM1MTRC
QkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTElu
dE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25m
aWcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNzE0QkJCMTY5
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi87IH07CisJCTBGNDY4MENEMTRC
QkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyog
TG93TGV2ZWxJbnRlcnByZXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0Ux
NEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi87IH07CisJCTBGNDY4MEQzMTRCQkQx
NjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBE
NDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMDE0QkJDNUY4MDBCRkUy
NzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi87IH07CisJCTBGNDY4MEQ1MTRCQkQyNEIw
MEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENh
bGxSZXR1cm5WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTVGMEYxMTREMTA2
MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLzsgfTsKIAkJMEY1NUYwRjUxNEQxMDYzQzAw
QUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1RjA4Q0Yx
NDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJB
OSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM4NSw3ICs0MTgsNyBAQAogCQk4NkI5OUFFMzExN0U1
NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI5OUFFMTExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVm
ZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
ODZCQjA5QzAxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkUxMzhFMzgxQjAwNTY3MDJG
IC8qIERGR1JlcGF0Y2guY3BwICovOyB9OwogCQk4NkJCMDlDMTEzOEUzODFCMDA1NjcwMkYgLyog
REZHUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZCQjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCAqLzsgfTsKLQkJODZD
MzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkg
LyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgfTsKKwkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8q
IE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMDEx
QTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REQxMUEyMTNFRTAwMDdGN0YwIC8q
IE1hY3JvQXNzZW1ibGVyQVJNLmNwcCAqLzsgfTsKIAkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0Yw
IC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVy
TUlQUy5oICovOyB9OwogCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4
REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCAqLzsgfTsKQEAgLTc1Miw2ICs3
ODUsMjAgQEAKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhD
b250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLworCQkwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIg
LyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRl
bVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8q
IFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElE
U3RyaW5nID0gMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9ICJMTElu
dCBPZmZzZXRzIjsKKwkJfTsKKwkJMEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJ
CWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9i
amVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBG
NDY4MDhFMTRCQTdFNUUwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSBKU0NMTEludE9mZnNldHNF
eHRyYWN0b3I7CisJCX07CiAJCTE0MTIxNEJFMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQlj
b250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmpl
Y3QgKi87CkBAIC03OTcsNiArODQ0LDE1IEBACiAvKiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICov
CisJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWRzdFBhdGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsKKwkJCWRzdFN1YmZvbGRlclNw
ZWMgPSAwOworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDE7CisJCX07CiAJCTVEQkIxNTExMTMxRDBCMTMwMDU2QUQzNiAvKiBDb3B5
IFN1cHBvcnQgU2NyaXB0ICovID0gewogCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsK
IAkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOwpAQCAtODM3LDYgKzg5MywxMCBAQAogCQkwQkFDOTQ5
RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBU
ZW1wb3JhcnlDaGFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9y
YXJ5Q2hhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCRjI4QTI4MTFBMzNE
QzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNpemVMaW1pdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEVudHJ5cG9pbnRzLmNwcDsgcGF0aCA9
IGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEVudHJ5cG9pbnRzLmg7IHBhdGggPSBsbGlu
dC9MTEludEVudHJ5cG9pbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4
Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludFRodW5rcy5jcHA7IHBhdGggPSBsbGludC9MTEludFRo
dW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk4MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMTEludFRodW5rcy5oOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3MuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVUeXBlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5m
by5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5kbGVySW5mby5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhw
cmVzc2lvblJhbmdlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHBy
ZXNzaW9uUmFuZ2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDcsOSAr
OTA3LDEzIEBACiAJCTBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0lu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0aG9kQ2FsbExpbmtJbmZv
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0
RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHbG9iYWxSZXNvbHZlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBC
ODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFJldHVybk9mZnNldFRvQnl0
ZWNvZGVPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwRkM0NTgxNEJE
MTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExMSW50Q2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uU2xvd1BhdGhzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0
b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQml0VmVjdG9yLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRC
IC8qIEpJVERyaXZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVREcml2
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyNzkxNEJFNzI3MzAwQURD
NjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRpb25IYXJuZXNzLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRl
Y29kZUNvbnZlbnRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVj
b2RlQ29udmVudGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNDJEQTUx
M0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJs
b2Nrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBERkdDb2RlQmxv
Y2tzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkUxNDczOEYyRTAw
MTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gREZHQ29kZUJsb2Nrcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODYwLDYg
KzkyNCwyMCBAQAogCQkwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpc3RhYmxlSGFuZGxlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBK
SVRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwODAx
NEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSklURXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQu
bWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBKU0NMTEludE9m
ZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTBG
NDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFeGNlcHRpb25zLmNwcDsgcGF0aCA9IGxs
aW50L0xMSW50RXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFeGNlcHRpb25zLmg7IHBhdGggPSBsbGludC9MTElu
dEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUYxNEJB
N0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBMTEludEhlbHBlcnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50SGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBM
TEludEhlbHBlcnMuaDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVycy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHBhdGggPSBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUy
NzIgLyogTExJbnRDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJ
bnRDb21tb24uaDsgcGF0aCA9IGxsaW50L0xMSW50Q29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21D
b25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmg7IHBhdGggPSBsbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTG93
TGV2ZWxJbnRlcnByZXRlci5jcHA7IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcy
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTG93TGV2ZWxJbnRlcnByZXRlci5oOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUy
NzIgLyogTExJbnREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IExMSW50RGF0YS5jcHA7IHBhdGggPSBsbGludC9MTEludERhdGEuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RGF0YS5oOyBwYXRoID0gbGxp
bnQvTExJbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQwMTRC
QkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxS
ZXR1cm5WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIb3N0Q2FsbFJl
dHVyblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTVGMEYxMTREMTA2
MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFic3RyYWN0UEMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdFBDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNUYwOENDMTQ2QkU2MDIwMDA0NzJBOSAvKiBERkdCeXRlQ29kZUNhY2hlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0J5dGVDb2RlQ2FjaGUuaDsgcGF0aCA9IGRm
Zy9ERkdCeXRlQ29kZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTc5
LDYgKzE2NTcsMTMgQEAKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyog
QmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4QzE0QkE3
RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NC
dWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0g
KAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9
OwogCQkxNDEyMTExRTBBNDg3OTNDMDA0ODAyNTUgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlz
YSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKQEAgLTE2MzcsNiArMTcyMiw3IEBACiAJCQkJMTQxMjExMjAwQTQ4NzkzQzAwNDgwMjU1
IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkg
Ki8sCiAJCQkJNjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJ
MEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywK
IAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpA
QCAtMTY2Nyw2ICsxNzUzLDcgQEAKIAkJCQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2
YVNjcmlwdENvcmVQcmVmaXguaCAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyog
anNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8s
CisJCQkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovLAogCQkJCTE0MzJFQkQ3
MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlG
IC8qIGFzc2VtYmxlciAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNv
ZGUgKi8sCkBAIC0xNzA1LDYgKzE3OTIsMjggQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNU
YWJzID0gMDsKIAkJfTsKKwkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovID0g
eworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjBCODM5NTE0QkNG
NDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8sCisJCQkJMEYwQjgzOTYxNEJD
RjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLywKKwkJCQkwRjBCODM5NzE0QkNG
NDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovLAorCQkJCTBGMEI4Mzk4MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovLAorCQkJCTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3
MiAvKiBMTEludERhdGEuY3BwICovLAorCQkJCTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBM
TEludERhdGEuaCAqLywKKwkJCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21t
b24uaCAqLywKKwkJCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmggKi8sCisJCQkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50
ZXJwcmV0ZXIuY3BwICovLAorCQkJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZl
bEludGVycHJldGVyLmggKi8sCisJCQkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50
RXhjZXB0aW9ucy5jcHAgKi8sCisJCQkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50
RXhjZXB0aW9ucy5oICovLAorCQkJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhl
bHBlcnMuY3BwICovLAorCQkJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBl
cnMuaCAqLywKKwkJCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gbGxpbnQ7CisJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOworCQl9OwogCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAyNTUgLyogdGVzdHMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTczOSw2ICsxODQ4
LDggQEAKIAkJMTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcy
IC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovLAorCQkJCTBGNDY4MEQxMTRCQkM1RjgwMEJG
RTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8sCiAJCQkJMEY0NjgwN0YxNEJBNTcyNzAw
QkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovLAogCQkJCTBGNDY4MDgwMTRCQTU3MjcwMEJG
RTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEZEODJFMzcxNDFBQjE0MjAwMTc5Qzk0
IC8qIENvbXBhY3RKSVRDb2RlTWFwLmggKi8sCkBAIC0yMTY2LDYgKzIyNzcsOCBAQAogCQk3RUY2
RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVT
cGVjaWFsaXphdGlvbktpbmQuaCAqLywKKwkJCQkwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyog
RXhlY3V0aW9uSGFybmVzcy5oICovLAogCQkJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBD
b21tb25TbG93UGF0aHMuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJn
TGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAq
LywKQEAgLTI1MjUsNiArMjYzOCw4IEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBi
eXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
MEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLywKKwkJ
CQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKIAkJ
CQkwRjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovLAogCQkJ
CTBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5oICovLAogCQkJCTBG
OTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNwcCAqLywKQEAgLTMwNzUs
NyArMzE5MCwxNiBAQAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVy
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCNDMxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJT
eW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUz
N0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBBMzE0QkE3
RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2
ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyog
TG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwRDMxNEJCRDE2
NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwRDUxNEJC
RDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZv
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVz
c2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMDg0LDcgKzMyMDgsMTEgQEAKIAkJ
CQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUlu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxs
UmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwRkM0
NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJpdmVyLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8qIENvZGVTcGVjaWFs
aXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0
QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QTE0
QzNDRDI5MDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjdCMjk0QzE0QzNDRDQzMDA3QzNEQjEgLyogREZHQnl0ZUNvZGVDYWNoZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMTAzLDYgKzMyMzEsMjQgQEAKIC8qIEVuZCBQQlhIZWFkZXJzQnVp
bGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICov
CisJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3Ig
Ki8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovOworCQkJ
YnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMg
Ki8sCisJCQkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJ
MEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLywKKwkJCSk7CisJCQlidWls
ZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2ODBCMjE0QkE4
MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CisJCQluYW1lID0g
SlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdE5hbWUgPSBKU0NMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMEY0NjgwOEYxNEJBN0U1RTAwQkZF
MjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNv
bS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CiAJCTE0MTIxMTFGMEE0ODc5M0MwMDQ4
MDI1NSAvKiBtaW5pZG9tICovID0gewogCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwogCQkJYnVp
bGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi87CkBAIC0z
MjI5LDExICszMzc1LDI5IEBACiAJCQkJMTRCRDU5QkUwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3Rh
cGkgKi8sCiAJCQkJOTMyRjVCREEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLywKIAkJCQk2NTEx
MjJGNzE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RTE0QkE3
RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAorCQkJCTBGNDY4MEE5
MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovLAogCQkJKTsKIAkJfTsKIC8qIEVu
ZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU2hlbGxTY3JpcHRCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERl
cml2ZWQgU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL2xsaW50L0xvd0xldmVsQXNzZW1ibGVy
LmFzbSIsCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMiOworCQkJ
b3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMv
TExJbnREZXNpcmVkT2Zmc2V0cy5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlw
dCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvXCJcblxu
L3Vzci9iaW4vZW52IHJ1YnkgXCIke1NSQ1JPT1R9L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0
X2V4dHJhY3Rvci5yYlwiIFwiJHtTUkNST09UfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bVwiIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZz
ZXRzLmhcIlxuIjsKKwkJfTsKIAkJMzcxM0YwMTQxNDI5MDUyNDAwMzYzODdGIC8qIENoZWNrIEZv
ciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzICovID0gewogCQkJaXNhID0g
UEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKQEAgLTMzMzksNyArMzUwMyw3IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwotCQkJc2hlbGxTY3Jp
cHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7U1JDUk9PVH1cIiBKYXZh
U2NyaXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2YVNjcmlwdENvcmVcIlxuZXhw
b3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJcblxubWFrZSAtLW5vLWJ1aWx0aW4tcnVs
ZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlXCIgLWogYC91c3Ivc2Jp
bi9zeXNjdGwgLW4gaHcubmNwdWBcbiI7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7
QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9kb2NzXCJc
bmNkIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3Jl
XCJcblxuL2Jpbi9sbiAtc2ZoIFwiJHtTUkNST09UfVwiIEphdmFTY3JpcHRDb3JlXG5leHBvcnQg
SmF2YVNjcmlwdENvcmU9XCJKYXZhU2NyaXB0Q29yZVwiXG5leHBvcnQgQlVJTFRfUFJPRFVDVFNf
RElSPVwiLi4vLi5cIlxuXG5tYWtlIC0tbm8tYnVpbHRpbi1ydWxlcyAtZiBcIkphdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2VcIiAtaiBgL3Vzci9zYmluL3N5c2N0bCAtbiBody5uY3B1
YFxuXG4vdXNyL2Jpbi9lbnYgcnVieSBKYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYiBK
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAke0JVSUxUX1BST0RV
Q1RTX0RJUn0vSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIExMSW50QXNzZW1ibHkuaFxuIjsKIAkJ
fTsKIAkJOTMxOTU4NkIwOUQ5RjkxQTAwQTU2RkQ0IC8qIENoZWNrIEZvciBHbG9iYWwgSW5pdGlh
bGl6ZXJzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwpAQCAtMzM3
NCw2ICszNTM4LDE0IEBACiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24g
Ki8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4
QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNC
dWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0g
KAorCQkJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFEMEE0ODc5M0MwMDQ4MDI1NSAvKiBTb3VyY2Vz
ICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzYzMSw3ICszODAzLDE0IEBACiAJCQkJODY3MDRCODYxMkRC
QTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCODkx
MkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2
NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2Vw
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8q
IEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQ0MxNEJCQjE3QTAw
QkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0
NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRyeXBv
aW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyog
TExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjAxNEJDRjcxNjAwODg1
QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBCODNCNDE0QkNG
ODYwMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUY2OUU4NkMzMTRDNkU1NTEwMDJDMkM2MiAvKiBOdW1iZXJPZkNvcmVzLmNwcCBpbiBTb3VyY2Vz
ICovLApAQCAtMzY1NCw2ICszODMzLDE2IEBACiAvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ug
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KKwkJ
MEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJ
CQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMEY0NjgwQTkxNEJBN0ZE
OTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi87CisJCQl0YXJnZXRQcm94eSA9IDBGNDY4MEIx
MTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTBG
NDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJ
aXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MDhFMTRCQTdFNUUw
MEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQl0YXJnZXRQcm94eSA9
IDBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJ
CX07CiAJCTE0MTIxNEJGMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICov
ID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJCXRhcmdldCA9IDE0MTIxMTFG
MEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovOwpAQCAtMzY4Nyw2ICszODc2LDE0OCBAQAog
LyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBYQ0J1aWxk
Q29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBE
ZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0
aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9
ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsK
KwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19EWU5BTUlDX05P
X1BJQyA9IE5POworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdD
Q19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElP
TlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKKwkJ
CQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5POworCQkJCUdDQ19WRVJTSU9OID0gY29t
LmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9C
SVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBF
UyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0Nf
V0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJj
aD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElS
KS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsK
KwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCU9OTFlfQUNUSVZFX0FS
Q0ggPSBZRVM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtS
T09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOwor
CQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcy
IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJ
QVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQ
ID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0i
OworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9P
QkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGls
ZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9O
ID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJ
CUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9W
QVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJ
CQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0
cyQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRf
VEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJ
CVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhT
KSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4MDk4MTRCQTdFNUUw
MEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0g
Tk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BI
QVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13
aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0ND
X0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBw
bGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9D
T05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0g
WUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJO
X1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpd
IiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xM
SW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJ
CU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQo
VEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NF
QVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQo
SEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07
CisJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZ
U19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRf
NjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1B
VElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFO
REFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJ
CUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlH
Q0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VU
X01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQ
RSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURF
Ul9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQo
QlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNI
X1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43Owor
CQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29z
eDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQlu
YW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8qIERl
YnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9
OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyog
UmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOwor
CQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUy
NzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMg
Y29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJMEY0NjgwQjAxNEJB
N0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2
ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJ
MTQxMjExM0EwQTQ4Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewpAQCAtMzkyOCw2ICs0MjU5LDI4
IEBACiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBY
Q0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcy
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTElu
dE9mZnNldHNFeHRyYWN0b3IiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsK
KwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwOTYxNEJBN0U1RTAwQkZFMjcy
IC8qIERlYnVnICovLAorCQkJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICov
LAorCQkJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY0
NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1l
ID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJMTEludCBPZmZzZXRz
IiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3Vy
YXRpb25zID0gKAorCQkJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLywKKwkJ
CQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODBBRjE0
QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MEIwMTRCQTdGRDkwMEJG
RTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNW
aXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJ
CX07CiAJCTE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZp
Z3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShyZXZpc2lvbiAxMDYxODQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2RlZmluZSBHTE9CQUxfVEhVTktfSUQgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0xKSkKICNkZWZpbmUgUkVH
RVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+
KC0yKSkKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+CisjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9u
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
Qnl0ZWNvZGVDb252ZW50aW9uc19oCisjZGVmaW5lIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCisv
LyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZl
cmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6CisvLyAgICAgIDB4ODAwMDAw
MDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRl
ciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgorLy8g
ICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2Fs
bEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1
bmN0aW9uJ3MgY2FsbGZyYW1lLgorLy8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0
aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3Rh
bnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgorc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7CisKKyNlbmRpZiAvLyBCeXRlY29kZUNvbnZlbnRp
b25zX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDYxODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNyAr
MjcsNDAgQEAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7
CiAKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVC
bG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBVTlVT
RURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgp
OworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9m
aWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKyAgICBM
TEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaW5zdHJ1Y3Rpb25bNF0udS5jYWxsTGlu
a0luZm87CisgICAgCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNhbGxMaW5rSW5mby0+bGFz
dFNlZW5DYWxsZWUuZ2V0KCksIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJuIENhbGxMaW5rU3Rh
dHVzKDAsIGZhbHNlKTsKKyNlbmRpZgorfQorCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1
czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9Q
QVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJP
RklMRVIpCi0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKAotICAgICAgICBwcm9maWxlZEJsb2Nr
LT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0KCksCi0g
ICAgICAgIHByb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKTsK
KyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mQ2FsbExpbmtJbmZvcygpKQorICAgICAg
ICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KTsK
KyAgICAKKyAgICBpZiAocHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJ
bmRleCkpCisgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygwLCB0cnVlKTsKKyAgICAKKyAg
ICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBwcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0
ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CisgICAgaWYgKCF0YXJnZXQpCisgICAg
ICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgp
OworICAgIAorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQsIGZhbHNlKTsKICNlbHNl
CiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKICNlbmRpZgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlz
aW9uIDEwNjE4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNSArNDcsMTcgQEAgcHVibGljOgogICAgIAog
ICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAh
IW1fY2FsbFRhcmdldDsgfQorICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1fY2Fs
bFRhcmdldCB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRv
ciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsVGFyZ2V0OyB9CisgICAgYm9vbCBvcGVyYXRvciEo
KSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQogICAgIAogICAgIGJvb2wgY291bGRUYWtlU2xv
d1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCiAgICAg
SlNGdW5jdGlvbiogY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQog
ICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZyb21MTElu
dChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAgICAKICAgICBKU0Z1bmN0
aW9uKiBtX2NhbGxUYXJnZXQ7CiAgICAgYm9vbCBtX2NvdWxkVGFrZVNsb3dQYXRoOwogfTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZp
c2lvbiAxMDYxODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rp
b24uaCIKICNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNWYWx1
ZS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJSZXBhdGNo
QnVmZmVyLmgiCiAjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAjaW5jbHVkZSA8c3Rk
aW8uaD4KQEAgLTU5LDggKzYwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiB1c2luZyBuYW1lc3BhY2Ug
REZHOwogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRShPUENPREVfU0FN
UExJTkcpCi0KIHN0YXRpYyBVU3RyaW5nIGVzY2FwZVF1b3Rlcyhjb25zdCBVU3RyaW5nJiBzdHIp
CiB7CiAgICAgVVN0cmluZyByZXN1bHQgPSBzdHI7CkBAIC0zNTgsMTAgKzM1NywxMCBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bjb2RlTGVuZ3Roc1tleGVjLT5p
bnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtpXS51Lm9wY29kZSldKQog
ICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7CiAKLSAgICBwcmludGYoIiVsdSBtX2luc3RydWN0
aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3Rl
cihzKVxuXG4iLAorICAgIHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQg
JXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpOyAlZCB2YXJpYWJsZShz
KVxuXG4iLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbkNv
dW50KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSksCi0gICAgICAgIHRoaXMsIG1fbnVtUGFyYW1l
dGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgICAgICB0aGlzLCBtX251bVBhcmFtZXRl
cnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX251bVZhcnMpOwogCiAgICAgVmVjdG9yPEluc3Ry
dWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwog
ICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGluc3RydWN0aW9u
cygpLmVuZCgpOwpAQCAtODk4LDYgKzg5NywxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVj
U3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlv
biwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6IHsKKyAg
ICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKKyAgICAgICAgICAgIHBy
aW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25v
cm1hbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9j
YXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MTI5MSw4ICsxMjk4LDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBj
bwogICAgIH0KIH0KIAotI2VuZGlmIC8vICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09E
RV9TQU1QTElORykKLQogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNTCiBzdGF0aWMgSGFz
aFNldDxDb2RlQmxvY2sqPiBsaXZlQ29kZUJsb2NrU2V0OwogI2VuZGlmCkBAIC0xNDU5LDYgKzE0
NjQsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsCiB7CiAgICAg
c2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1QYXJhbWV0ZXJzKCkpOwogICAgIG9wdGltaXplQWZ0
ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogICAgIAogICAgIGlmIChvdGhlci5t
X3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTE1
MDcsNiArMTUxMyw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8K
ICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIAogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsK
KyAgICBqaXRBZnRlcldhcm1VcCgpOwogCiAjaWYgRFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJQ1MK
ICAgICBsaXZlQ29kZUJsb2NrU2V0LmFkZCh0aGlzKTsKQEAgLTE1MjQsNyArMTUzMSwxMSBAQCBD
b2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2lmIEVOQUJMRShWRVJCT1NFX1ZBTFVFX1BST0ZJTEUp
CiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNlbmRpZgotICAgIAorCisjaWYgRU5BQkxFKExM
SU5UKSAgICAKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2lu
Y29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVn
aW4oKS0+cmVtb3ZlKCk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogI2lmIEVOQUJMRShKSVQp
CiAgICAgLy8gV2UgbWF5IGJlIGRlc3Ryb3llZCBiZWZvcmUgYW55IENvZGVCbG9ja3MgdGhhdCBy
ZWZlciB0byB1cyBhcmUgZGVzdHJveWVkLgogICAgIC8vIENvbnNpZGVyIHRoYXQgdHdvIENvZGVC
bG9ja3MgYmVjb21lIHVucmVhY2hhYmxlIGF0IHRoZSBzYW1lIHRpbWUuIFRoZXJlCkBAIC0xNzM2
LDggKzE3NDcsNjggQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAog
I2Vsc2UKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5saW5raW5nID0gZmFsc2U7CiAj
ZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgCisjaWYgRU5BQkxFKExM
SU5UKQorICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFsRGF0YS0+aW50ZXJw
cmV0ZXI7CisgICAgLy8gaW50ZXJwcmV0ZXItPmVuYWJsZWQoKSByZXR1cm5zIHRydWUgaWYgdGhl
IG9sZCBDKysgaW50ZXJwcmV0ZXIgaXMgZW5hYmxlZC4gSWYgdGhhdCdzIGVuYWJsZWQKKyAgICAv
LyB0aGVuIHdlJ3JlIG5vdCB1c2luZyBMTEludC4KKyAgICBpZiAoIWludGVycHJldGVyLT5lbmFi
bGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgSW5z
dHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nl
c3NJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpKSB7CisgICAgICAgICAgICBjYXNl
IG9wX2dldF9ieV9pZDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICAg
ICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJr
ZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAg
ICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3Mgd2l0
aCBzdHJ1Y3R1cmUgJXAuXG4iLCBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSk7
CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsK
KyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQgPSAwOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3Q6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bDoKKyAgICAgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0u
dS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2Vk
KGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAgICAgICAg
ICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdl
dCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2VVbmxpbmtpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBM
TEludCBwdXQgdHJhbnNpdGlvbiB3aXRoIHN0cnVjdHVyZXMgJXAgLT4gJXAsIGNoYWluICVwLlxu
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0
dXJlLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0u
dS5zdHJ1Y3R1cmUuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJJbnN0cnVj
dGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAg
ICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAg
ICAgICAgICAgIGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAg
ICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSA9IGludGVycHJldGVyLT5n
ZXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAg
ICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9n
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIEFTU0VSVChpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29s
dmVfZ2xvYmFsCisgICAgICAgICAgICAgICAgICAgfHwgaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWlj
KTsKKyAgICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUgfHwgSGVh
cDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBn
bG9iYWwgcmVzb2x2ZSBjYWNoZSB3aXRoIHN0cnVjdHVyZSAlcC5cbiIsIGN1ckluc3RydWN0aW9u
WzNdLnUuc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzNdLnUu
c3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51Lm9wZXJh
bmQgPSAwOworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xs
aW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKG1fbGxpbnRD
YWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxs
TGlua0luZm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9z
ZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBj
YWxsIGZyb20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJ
bmZvc1tpXS51bmxpbmsoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghIW1fbGxp
bnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX2xs
aW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5nZXQoKSkpCisgICAgICAgICAgICAg
ICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUuY2xlYXIoKTsKKyAgICAg
ICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKICNpZiBFTkFCTEUoREZHX0pJ
VCkKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2UgYXJlLCB0aGVuIGpldHRp
c29uLgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2Fu
KCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7CkBAIC0xODU4LDEwICsx
OTI5LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXIKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7ICsraSkKICAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAjaWYgRU5BQkxFKElOVEVS
UFJFVEVSKQotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0dXJl
cyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tp
XV0pOwotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMu
c2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZp
c2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsK
KyAgICBpZiAobV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAgICAg
IGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwg
aSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRv
ciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKKyAg
ICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXpl
KCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZp
c2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsK
KyAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTg2OSw4ICsxOTQyLDkg
QEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgogICAgICAgICAvLyBN
YWtlIHN1cmUgdGhhdCBleGVjdXRhYmxlcyB0aGF0IHdlIGhhdmUgaW5saW5lZCBkb24ndCBkaWUu
CiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGV5IHdvdWxkIGhhdmUgb3RoZXJ3aXNlIGRpZWQsIHdl
IHNob3VsZCBwcm9iYWJseSB0cmlnZ2VyIHJlY29tcGlsYXRpb24uCiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgaW5saW5lQ2FsbEZyYW1lcygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAg
ICAgICB2aXNpdG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZyYW1lcygpW2ldLmV4ZWN1dGFibGUpOwot
ICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZXMoKVtpXS5jYWxsZWUp
OworICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lJiBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVD
YWxsRnJhbWVzKClbaV07CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZy
YW1lLmV4ZWN1dGFibGUpOworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxG
cmFtZS5jYWxsZWUpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCkBAIC0yMDcwLDYgKzIxNDQs
MTIgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIHsKICAgICBpZiAoISFtX2FsdGVy
bmF0aXZlKQogICAgICAgICBtX2FsdGVybmF0aXZlLT51bmxpbmtDYWxscygpOworI2lmIEVOQUJM
RShMTElOVCkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9z
LnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xp
bmtlZCgpKQorICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0udW5saW5rKCk7Cisg
ICAgfQorI2VuZGlmCiAgICAgaWYgKCEobV9jYWxsTGlua0luZm9zLnNpemUoKSB8fCBtX21ldGhv
ZENhbGxMaW5rSW5mb3Muc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9nbG9i
YWxEYXRhLT5jYW5Vc2VKSVQoKSkKQEAgLTIwODQsMTAgKzIxNjQsMzkgQEAgdm9pZCBDb2RlQmxv
Y2s6OnVubGlua0NhbGxzKCkKIAogdm9pZCBDb2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMo
KQogeworI2lmIEVOQUJMRShMTElOVCkKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMu
YmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWlu
Z0xMSW50Q2FsbHMuYmVnaW4oKS0+dW5saW5rKCk7CisjZW5kaWYKKyAgICBpZiAobV9pbmNvbWlu
Z0NhbGxzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIFJlcGF0Y2hCdWZmZXIgcmVw
YXRjaEJ1ZmZlcih0aGlzKTsKICAgICB3aGlsZSAobV9pbmNvbWluZ0NhbGxzLmJlZ2luKCkgIT0g
bV9pbmNvbWluZ0NhbGxzLmVuZCgpKQogICAgICAgICBtX2luY29taW5nQ2FsbHMuYmVnaW4oKS0+
dW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogfQorCit1bnNpZ25lZCBDb2Rl
QmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgUmV0dXJuQWRkcmVzc1B0ciBy
ZXR1cm5BZGRyZXNzKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAocmV0dXJuQWRkcmVz
cy52YWx1ZSgpID49IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2JlZ2luKQorICAgICAgICAm
JiByZXR1cm5BZGRyZXNzLnZhbHVlKCkgPD0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZW5k
KSkgeworICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkpOworICAgICAgICBBU1NFUlQo
ZXhlYy0+Y29kZUJsb2NrKCkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jh
c2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0
aW9uID0gZXhlYy0+Y3VycmVudFZQQygpOworICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb24pOwor
ICAgICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb24pOworICAgIH0KKyNlbHNl
CisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworI2VuZGlmCisgICAgaWYgKCFtX3JhcmVEYXRhKQor
ICAgICAgICByZXR1cm4gMTsKKyAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9y
OworICAgIGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBy
ZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNp
Z25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGlj
ZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSkt
PmJ5dGVjb2RlT2Zmc2V0OworfQogI2VuZGlmCiAKIHZvaWQgQ29kZUJsb2NrOjpjbGVhckV2YWxD
YWNoZSgpCkBAIC0yMTgzLDI0ICsyMjkyLDQ1IEBAIGJvb2wgRnVuY3Rpb25Db2RlQmxvY2s6OmNh
bkNvbXBpbGVXaXRoREYKIAogdm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0g
ICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNT
RVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQo
dGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJs
ZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRh
KCkpOwogfQogCiB2b2lkIEV2YWxDb2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQo
Z2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29k
ZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJl
cGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVj
dXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZv
aWQgRnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlw
ZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRp
bWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50
KCkpOwogICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJs
ZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yKCpnbG9iYWxEYXRhKCksIG1faXNDb25zdHJ1
Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7CiB9CisKK3ZvaWQgUHJvZ3Jh
bUNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorewor
ICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cisg
ICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlKGdsb2Jh
bERhdGEpOworfQorCit2b2lkIEV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgp
KS0+aml0Q29tcGlsZShnbG9iYWxEYXRhKTsKK30KKwordm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6
aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChn
ZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRo
aXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhl
Y3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZUZvcihnbG9iYWxEYXRhLCBt
X2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOworfQogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC0yMzAzLDYgKzI0MzMsMTggQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2ZpbGVzKCkKIH0KICNlbmRpZgogCit2b2lkIENv
ZGVCbG9jazo6aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKQoreworI2lmICFF
TkFCTEUoT1BDT0RFX1NBTVBMSU5HKSAmJiAhRU5BQkxFKExMSU5UKQorICAgIGlmIChCeXRlY29k
ZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoISFhbHRlcm5hdGl2ZSgpKQorICAgICAgICBkaXNjYXJkQnl0ZWNvZGUoKTsKKyAgICBlbHNl
CisgICAgICAgIGRpc2NhcmRCeXRlY29kZUxhdGVyKCk7CisjZW5kaWYKK30KKwogI2lmbmRlZiBO
REVCVUcKIGJvb2wgQ29kZUJsb2NrOjp1c2VzT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlEKQogewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNp
b24gMTA2MTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaWZuZGVmIENvZGVCbG9ja19oCiAj
ZGVmaW5lIENvZGVCbG9ja19oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAj
aW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0
ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCkBAIC01MCw2ICs1MSw3IEBA
CiAjaW5jbHVkZSAiSklUV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKICNpbmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5o
IgogI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQ
cmVkaWN0aW9uVHJhY2tlci5oIgpAQCAtNjUsMTYgKzY3LDExIEBACiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKLS8vIFJlZ2lzdGVyIG51
bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcg
YWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKLS8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZG
ICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVz
IGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCi0vLyAgICAgIDB4MDAwMDAw
MDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRl
ciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxs
ZnJhbWUuCi0vLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBm
cm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRo
ZSBDb2RlQmxvY2suCi1zdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
ID0gMHg0MDAwMDAwMDsKLQogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBFeGVjU3RhdGU7
CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgaW5saW5lIGludCB1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIoaW50IGFyZ3VtZW50c1JlZ2lzdGVyKSB7IHJldHVybiBhcmd1bWVudHNS
ZWdpc3RlciAtIDE7IH0KIApAQCAtODMsNiArODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXplciwgcHVibGljIFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gQ29weVBhcnNlZEJsb2Nr
VGFnIHsgQ29weVBhcnNlZEJsb2NrIH07CiAgICAgcHJvdGVjdGVkOgpAQCAtMTIzLDcgKzEyMSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRp
dmUoKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQtPmFsdGVybmF0aXZlKCk7CiAg
ICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmdl
dEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQo
SklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMTM0LDExICsxMzIsOSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygp
OwogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEVfT1BDT0RFX1NBTVBMSU5HCiAgICAg
ICAgIHZvaWQgZHVtcChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFN0cnVj
dHVyZXMoY29uc3QgSW5zdHJ1Y3Rpb24qKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFN0cnVj
dHVyZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiosIGludCBvcGVyYW5kKSBj
b25zdDsKLSNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1
cm4gbV9pc1N0cmljdE1vZGU7IH0KIApAQCAtMTk0LDE1ICsxOTAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxNZXRob2RDYWxsTGlua0luZm8s
IHVuc2lnbmVkLCBnZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUluZGV4PihtX21ldGhvZENh
bGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSwgYnl0ZWNv
ZGVJbmRleCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQo
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoIW1fcmFyZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBW
ZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1f
cmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOwotICAgICAgICAgICAgaWYgKCFjYWxs
SW5kaWNlcy5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBy
ZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNp
Z25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGlj
ZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSkt
PmJ5dGVjb2RlT2Zmc2V0OwotICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KEV4ZWNTdGF0ZSosIFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAgICAgIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0Rm9yQ2FsbEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKQEAg
LTIyMywxMSArMjExLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAg
ICBtX2luY29taW5nQ2FsbHMucHVzaChpbmNvbWluZyk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgICAgIHZvaWQgbGlua0luY29taW5nQ2FsbChMTEludENhbGxMaW5rSW5mbyog
aW5jb21pbmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLnB1
c2goaW5jb21pbmcpOworICAgICAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogICAgICAg
ICAKICAgICAgICAgdm9pZCB1bmxpbmtJbmNvbWluZ0NhbGxzKCk7Ci0jZW5kaWYKKyNlbmRpZiAv
LyBFTkFCTEUoSklUKQogCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQp
IHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgdm9pZCBzZXRKSVRDb2RlTWFwKFBhc3NPd25QdHI8
Q29tcGFjdEpJVENvZGVNYXA+IGppdENvZGVNYXApCiAgICAgICAgIHsKICAgICAgICAgICAgIG1f
aml0Q29kZU1hcCA9IGppdENvZGVNYXA7CkBAIC0yMzYsNyArMjMwLDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2ppdENvZGVNYXAuZ2V0KCk7CiAg
ICAgICAgIH0KKyNlbmRpZgogICAgICAgICAKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAg
dm9pZCBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoISFtX2RmZ0RhdGEpCkBAIC0zMzUsMTIgKzMzMSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQogICAgICAgICB7
CisgICAgICAgICAgICBBU1NFUlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0cnVjdGlvbnMoKS5iZWdp
bigpICYmIHJldHVybkFkZHJlc3MgPCBpbnN0cnVjdGlvbnMoKS5lbmQoKSk7CiAgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3Ry
dWN0aW9ucygpLmJlZ2luKCk7CiAgICAgICAgIH0KLSNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0
SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7
IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9
CiAgICAgICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgeyByZXR1cm4gbV9pc051
bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KQEAgLTM1NCwxNyArMzQ5LDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIG1fc2hvdWxkRGlzY2FyZEJ5dGVjb2RlID0gdHJ1
ZTsKICAgICAgICAgfQotICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9y
dHVuaXR5KCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCEhYWx0ZXJuYXRpdmUoKSkKLSAg
ICAgICAgICAgICAgICBkaXNjYXJkQnl0ZWNvZGUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBkaXNjYXJkQnl0ZWNvZGVMYXRlcigpOwotICAgICAgICB9CisgICAgICAgIHZv
aWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICAgICAgCi0jaWZu
ZGVmIE5ERUJVRwogICAgICAgICBib29sIHVzZXNPcGNvZGUoT3Bjb2RlSUQpOwotI2VuZGlmCiAK
ICAgICAgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCgpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rp
b25Db3VudDsgfQogICAgICAgICB2b2lkIHNldEluc3RydWN0aW9uQ291bnQodW5zaWduZWQgaW5z
dHJ1Y3Rpb25Db3VudCkgeyBtX2luc3RydWN0aW9uQ291bnQgPSBpbnN0cnVjdGlvbkNvdW50OyB9
CkBAIC0zODcsMTcgKzM3NCwyNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY3V0YWJs
ZU1lbW9yeUhhbmRsZSogZXhlY3V0YWJsZU1lbW9yeSgpIHsgcmV0dXJuIGdldEpJVENvZGUoKS5n
ZXRFeGVjdXRhYmxlTWVtb3J5KCk7IH0KICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGls
ZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopID0gMDsKICAgICAgICAgdmly
dHVhbCB2b2lkIGpldHRpc29uKCkgPSAwOworICAgICAgICBib29sIGppdENvbXBpbGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZ2V0SklUVHlw
ZSgpICE9IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspIHsKKyAgICAgICAgICAgICAgICBBU1NF
UlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBqaXRDb21waWxlSW1w
bChnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAg
ICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpID0gMDsKICAgICAgICAgdmlydHVh
bCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCkgPSAwOwogICAgICAgICBib29sIGhhc09wdGltaXpl
ZFJlcGxhY2VtZW50KCkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUo
KSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6
aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9
IHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA+IGdldEpJVFR5cGUoKTsKICNpZiAhQVNTRVJU
X0RJU0FCTEVECiAgICAgICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgICAgIEFTU0VS
VChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKICAgICAg
ICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRK
SVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgICAgIEFTU0VS
VChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkpKTsK
ICAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKSA9PSB0aGlzKTsKICAgICAgICAg
ICAgIH0KICNlbmRpZgpAQCAtNDU2LDE4ICs0NTIsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgdm9pZCBjbGVhckV2YWxDYWNoZSgpOwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQog
ICAgICAgICB2b2lkIGFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24odW5zaWduZWQgcHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2dsb2Jh
bERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbnMuYXBwZW5kKHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAg
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbik7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rp
b24odW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9n
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24p
OworICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVz
b2x2ZUluc3RydWN0aW9uQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7
CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBMTEludENhbGxMaW5rSW5mbyogYWRkTExJbnRD
YWxsTGlua0luZm8oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZv
cy5hcHBlbmQoTExJbnRDYWxsTGlua0luZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gJm1fbGxp
bnRDYWxsTGlua0luZm9zLmxhc3QoKTsKKyAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICAgICAgdm9pZCBzZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcyhzaXplX3Qgc2l6
ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZvcy5ncm93KHNpemUpOyB9CkBAIC00NzYsOCArNDc1LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5mbyh1
bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGlmIChtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xvYmFs
UmVzb2x2ZUluZm9zLmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb24pKTsKKyAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9iYWxS
ZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKICAgICAgICAgfQogICAgICAg
ICBHbG9iYWxSZXNvbHZlSW5mbyYgZ2xvYmFsUmVzb2x2ZUluZm8oaW50IGluZGV4KSB7IHJldHVy
biBtX2dsb2JhbFJlc29sdmVJbmZvc1tpbmRleF07IH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxS
ZXNvbHZlSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAt
NDg4LDYgKzQ4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkTWV0aG9k
Q2FsbExpbmtJbmZvcyh1bnNpZ25lZCBuKSB7IEFTU0VSVChtX2dsb2JhbERhdGEtPmNhblVzZUpJ
VCgpKTsgbV9tZXRob2RDYWxsTGlua0luZm9zLmdyb3cobik7IH0KICAgICAgICAgTWV0aG9kQ2Fs
bExpbmtJbmZvJiBtZXRob2RDYWxsTGlua0luZm8oaW50IGluZGV4KSB7IHJldHVybiBtX21ldGhv
ZENhbGxMaW5rSW5mb3NbaW5kZXhdOyB9CisgICAgICAgIHNpemVfdCBudW1iZXJPZk1ldGhvZENh
bGxMaW5rSW5mb3MoKSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpOyB9CiAj
ZW5kaWYKICAgICAgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtNTI4LDYgKzUy
NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKSkgLSAxXS51LnByb2ZpbGUgPT0gcmVzdWx0KTsK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KKyAgICAgICAgUHJlZGljdGVk
VHlwZSB2YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2Rl
T2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsK
KyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdW5zaWduZWQgdG90YWxOdW1iZXJPZlZhbHVl
UHJvZmlsZXMoKQogICAgICAgICB7CkBAIC01NTQsMTIgKzU1NywxNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlU2xvd0Nhc2UoaW50IGJ5dGVj
b2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQ
cm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVu
c2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9uczo6
bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2
YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xv
d0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgY291bGRU
YWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1
cm4gdmFsdWUgPj0gT3B0aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3Rh
dGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9u
czo6Y291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KQEAgLTU3OCwxMiArNTg1
LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rh
a2VTcGVjaWFsRmFzdENhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0g
c3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+
bV9jb3VudGVyOwogICAgICAgICAgICAgcmV0dXJuIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID49IE9w
dGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRv
dWJsZT4oc3BlY2lhbEZhc3RDYXNlQ291bnQpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9w
dGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBib29sIGxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZShpbnQgYnl0ZWNvZGVP
ZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2Zp
bGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWdu
ZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RD
YXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dD
YXNlQ291bnQgLSBzcGVjaWFsRmFzdENhc2VDb3VudDsKQEAgLTU5Miw2ICs2MDMsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlQW55U2xvd0Nh
c2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJl
ck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIHVuc2lnbmVkIHNsb3dDYXNlQ291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRl
Y29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2ln
bmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWdu
ZWQgdmFsdWUgPSBzbG93Q2FzZUNvdW50ICsgc3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBAIC02ODks
NyArNzAyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGFkZEZy
ZXF1ZW50RXhpdFNpdGUoY29uc3QgREZHOjpGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5l
SklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRU
eXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBtX2V4aXRQcm9maWxlLmFkZChzaXRlKTsKICAg
ICAgICAgfQogCkBAIC03OTQsNiArODA3LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbShDb2RlQmxvY2sqIGFsdGVybmF0aXZlKTsKICAgICAg
ICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgICAgICAKKyAg
ICAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIEpJVHRpbmcga2lja3MgaW4s
IGluIGEgbWl4ZWQgbW9kZQorICAgICAgICAvLyBleGVjdXRpb24gd29ybGQuCisgICAgICAgIAor
ICAgICAgICB2b2lkIGRvbnRKSVRBbnl0aW1lU29vbigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckRvbnRKSVRBbnl0aW1lU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBq
aXRBZnRlcldhcm1VcCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291
bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdFNvb24oKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JKSVRTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQzMl90
IGxsaW50RXhlY3V0ZUNvdW50ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICAv
LyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gdGllcmVkIGNvbXBpbGF0aW9uIGtpY2tz
IGluLiBUaGlzCiAgICAgICAgIC8vIGNvbnRyb2xzIGJvdGggd2hlbiB0aGUgb3B0aW1pemluZyBj
b21waWxlciBpcyBpbnZva2VkIGFuZCB3aGVuIE9TUgogICAgICAgICAvLyBlbnRyeSBoYXBwZW5z
LiBUd28gdHJpZ2dlcnMgZXhpc3Q6IHRoZSBsb29wIHRyaWdnZXIgYW5kIHRoZSByZXR1cm4KQEAg
LTk4Niw2ICsxMDIyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zaG91bGRE
aXNjYXJkQnl0ZWNvZGU7CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgdm9pZCBq
aXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB2
aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBm
aW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwogICAgICAgICAKQEAgLTk5OCw3ICsxMDM1LDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgdGFsbHlGcmVxdWVudEV4aXRTaXRlcygpIHsg
fQogI2VuZGlmCiAgICAgICAgIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09E
RV9TQU1QTElORykKICAgICAgICAgdm9pZCBkdW1wKEV4ZWNTdGF0ZSosIGNvbnN0IFZlY3RvcjxJ
bnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiBiZWdpbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6
Y29uc3RfaXRlcmF0b3ImKSBjb25zdDsKIAogICAgICAgICBDU3RyaW5nIHJlZ2lzdGVyTmFtZShF
eGVjU3RhdGUqLCBpbnQgcikgY29uc3Q7CkBAIC0xMDA4LDcgKzEwNDQsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdm9pZCBwcmludEdldEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRp
b24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3Ap
IGNvbnN0OwogICAgICAgICB2b2lkIHByaW50Q2FsbE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlv
biwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkg
Y29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0
aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9w
KSBjb25zdDsKLSNlbmRpZgogICAgICAgICB2b2lkIHZpc2l0U3RydWN0dXJlcyhTbG90VmlzaXRv
ciYsIEluc3RydWN0aW9uKiB2UEMpIGNvbnN0OwogICAgICAgICAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKQEAgLTEwNjksOSArMTEwNCwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZz
ZXQ7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4g
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBt
X2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBT
ZWdtZW50ZWRWZWN0b3I8TExJbnRDYWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxsTGlua0luZm9z
OworICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3
U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdMTEludENhbGxzOwog
I2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZv
PiBtX3N0cnVjdHVyZVN0dWJJbmZvczsKQEAgLTEwODIsOSArMTExOSwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNo
ZWNrOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1Nl
bnRpbmVsTm9kZTxDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2VuZGlmCi0jaWYg
RU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAg
ICAgICAgT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAgICAgIAor
I2VuZGlmCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFrUmVmZXJlbmNl
VHJhbnNpdGlvbiB7CiAgICAgICAgICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigpIHsgfQog
ICAgICAgICAgICAgCkBAIC0xMTQ3LDEyICsxMTg1LDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIE93blB0cjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAgIAorICAgICAg
ICBpbnQzMl90IG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAgICAgIGludDMy
X3QgbV9qaXRFeGVjdXRlQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZVN1
Y2Nlc3NDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFpbENvdW50ZXI7
CiAgICAgICAgIHVpbnQ4X3QgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAgICAgIHVp
bnQ4X3QgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKLQorICAgICAgICAKICAgICAgICAg
c3RydWN0IFJhcmVEYXRhIHsKICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgICAgIHB1YmxpYzoKQEAgLTEyMjUsNiArMTI2NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChF
eGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlz
b24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYp
OwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmly
dHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKQEAgLTEyNTksNiArMTMwMCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09i
amVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENv
bXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVw
bGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHKCk7CiAj
ZW5kaWYKQEAgLTEyOTYsNiArMTMzOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3Rl
ZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUq
LCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAg
ICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29s
IGNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEwNjE4NCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjcsMjAgKzI3LDQ5IEBACiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgog
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIAorR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxv
Y2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0o
aWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24g
PSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsK
KyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfbWV0aG9k
X2NoZWNrKQorICAgICAgICBpbnN0cnVjdGlvbisrOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0cnVjdHVy
ZSkKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJl
U2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisgICAgCisgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVj
dHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBpZiAo
b2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9y
bWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAgICByZXR1
cm4gR2V0QnlJZFN0YXR1cyhTaW1wbGVEaXJlY3QsIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBv
ZmZzZXQsIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1h
dGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisjZW5kaWYKK30KKwogR2V0
QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRC
bG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUlu
ZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJM
RShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mU3RydWN0
dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVk
QmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICAvLyBGaXJzdCBjaGVjayBp
ZiBpdCBtYWtlcyBlaXRoZXIgY2FsbHMsIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBiZSBzdXBl
ciBjYXJlZnVsLCBvcgogICAgIC8vIGlmIGl0J3Mgbm90IHNldCBhdCBhbGwsIGluIHdoaWNoIGNh
c2Ugd2UgcHVudC4KICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJs
b2NrLT5nZXRTdHViSW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4p
Ci0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNl
dCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVk
QmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAKICAgICBQb2x5bW9ycGhpY0FjY2Vz
c1N0cnVjdHVyZUxpc3QqIGxpc3Q7CiAgICAgaW50IGxpc3RTaXplOwpAQCAtNjAsMTggKzg5LDE5
IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICB9CiAgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgIGlmICghbGlzdC0+
bGlzdFtpXS5pc0RpcmVjdCkKLSAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2Vz
Q2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgICAgICByZXR1cm4gR2V0
QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIHRydWUpOwog
ICAgIH0KICAgICAKICAgICAvLyBOZXh0IGNoZWNrIGlmIGl0IHRha2VzIHNsb3cgY2FzZSwgaW4g
d2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIGtpbmQgb2YgY2FyZWZ1bC4KICAgICBpZiAocHJvZmls
ZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJl
dHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBub3RGb3Vu
ZCk7CisgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVjdHVy
ZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7CiAgICAgCiAgICAgLy8gRmluYWxseSBmaWd1cmUgb3V0
IGlmIHdlIGNhbiBkZXJpdmUgYW4gYWNjZXNzIHN0cmF0ZWd5LgogICAgIEdldEJ5SWRTdGF0dXMg
cmVzdWx0OworICAgIHJlc3VsdC5tX3dhc1NlZW5JbkpJVCA9IHRydWU7CiAgICAgc3dpdGNoIChz
dHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJl
dHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3Vu
ZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVj
b2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3Nl
bGY6IHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5mby51LmdldEJ5SWRT
ZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CkBAIC0xMzAsNyArMTYwLDcgQEAgR2V0QnlJ
ZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIAogICAgIHJldHVybiByZXN1
bHQ7CiAjZWxzZSAvLyBFTkFCTEUoSklUKQotICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5m
b3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgcmV0dXJuIEdldEJ5SWRT
dGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CiAj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMDYxODQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC00OSwxMCArNDksMTEgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgR2V0QnlJ
ZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNp
emVfdCBvZmZzZXQpCisgICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0
dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQsIGJvb2wgd2FzU2VlbkluSklUKQog
ICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVTZXQoc3RydWN0
dXJlU2V0KQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBtX3dhc1NlZW5J
bkpJVCh3YXNTZWVuSW5KSVQpCiAgICAgewogICAgICAgICBBU1NFUlQoKHN0YXRlID09IFNpbXBs
ZURpcmVjdCkgPT0gKG9mZnNldCAhPSBub3RGb3VuZCkpOwogICAgIH0KQEAgLTcwLDEwICs3MSwx
NSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25z
dCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsgfQogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7
IHJldHVybiBtX29mZnNldDsgfQogICAgIAorICAgIGJvb2wgd2FzU2VlbkluSklUKCkgY29uc3Qg
eyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KKyAgICAKIHByaXZhdGU6CisgICAgc3RhdGljIEdl
dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1
Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CiAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIGJvb2wg
bV93YXNTZWVuSW5KSVQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMDYxODQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0Nl
bGw7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOworICAg
IHN0cnVjdCBMTEludENhbGxMaW5rSW5mbzsKICAgICBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCiAj
aWYgRU5BQkxFKEpJVCkKQEAgLTE0Niw2ICsxNDcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5k
aWYKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlvbiB7CisgICAgICAgIEluc3RydWN0aW9uKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgdS5qc0NlbGwuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAg
ICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogI2lmICFF
TkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKQEAgLTE4Miw2ICsxODgsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYyBnZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7IH0KICAgICAgICAg
CisgICAgICAgIEluc3RydWN0aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pIHsg
dS5jYWxsTGlua0luZm8gPSBjYWxsTGlua0luZm87IH0KKyAgICAgICAgCiAgICAgICAgIEluc3Ry
dWN0aW9uKFZhbHVlUHJvZmlsZSogcHJvZmlsZSkgeyB1LnByb2ZpbGUgPSBwcm9maWxlOyB9CiAK
ICAgICAgICAgdW5pb24gewpAQCAtMTkxLDcgKzE5OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3RydWN0dXJlQ2hhaW47
CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxsOwogICAgICAgICAg
ICAgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKKyAgICAgICAgICAgIExM
SW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm87CiAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUq
IHByb2ZpbGU7CisgICAgICAgICAgICB2b2lkKiBwb2ludGVyOwogICAgICAgICB9IHU7CiAgICAg
ICAgIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TExJbnRDYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgTExJbnRDYWxsTGlua0luZm9faAorI2RlZmluZSBMTEludENhbGxMaW5rSW5m
b19oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOworCitzdHJ1Y3QgTExJbnRDYWxsTGlua0lu
Zm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+IHsKKyAg
ICBMTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgIH0KKyAgICAKKyAgICB+TExJbnRDYWxs
TGlua0luZm8oKQorICAgIHsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAgICBy
ZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIGNhbGxl
ZTsgfQorICAgIAorICAgIHZvaWQgdW5saW5rKCkKKyAgICB7CisgICAgICAgIGNhbGxlZS5jbGVh
cigpOworICAgICAgICBtYWNoaW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigp
OworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0K
KyAgICAKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOworICAgIFdyaXRlQmFy
cmllcjxKU0Z1bmN0aW9uPiBsYXN0U2VlbkNhbGxlZTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIgbWFjaGluZUNvZGVUYXJnZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlm
IC8vIExMSW50Q2FsbExpbmtJbmZvX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAx
MDYxODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtT
dGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwxMSBAQCBNZXRob2RDYWxsTGlu
a1N0YXR1cyBNZXRob2RDYWxsTGlua1N0YXR1CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxv
Y2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklUKSAm
JiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgLy8gTk9URTogVGhpcyBkb2VzIG5vdCBoYXZl
IGFuIExMSW50IGZhbGwtYmFjayBiZWNhdXNlIExMSW50IGRvZXMgbm90IGRvIGFueSBtZXRob2QK
KyAgICAvLyBjYWxsIGxpbmsgY2FjaGluZy4KKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJl
ck9mTWV0aG9kQ2FsbExpbmtJbmZvcygpKQorICAgICAgICByZXR1cm4gTWV0aG9kQ2FsbExpbmtT
dGF0dXMoKTsKKyAgICAKICAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGwgPSBwcm9m
aWxlZEJsb2NrLT5nZXRNZXRob2RDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCk7CiAgICAgCiAg
ICAgaWYgKCFtZXRob2RDYWxsLnNlZW4gfHwgIW1ldGhvZENhbGwuY2FjaGVkU3RydWN0dXJlKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTA2
MTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjMsNiArMTIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3Jv
KG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9p
ZCwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAorICAg
ICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAg
bWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCiAgICAgICAgIG1hY3Jv
KG9wX3B1dF9ieV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9n
ZW5lcmljLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApAQCAtMjAyLDYg
KzIwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIGVudW0geyBGT1JfRUFD
SF9PUENPREVfSUQoT1BDT0RFX0lEX0VOVU0pIH0gT3Bjb2RlSUQ7CiAgICAgI3VuZGVmIE9QQ09E
RV9JRF9FTlVNCiAKKyAgICBjb25zdCBpbnQgbWF4T3Bjb2RlTGVuZ3RoID0gOTsKICAgICBjb25z
dCBpbnQgbnVtT3Bjb2RlSURzID0gb3BfZW5kICsgMTsKIAogICAgICNkZWZpbmUgT1BDT0RFX0lE
X0xFTkdUSFMoaWQsIGxlbmd0aCkgY29uc3QgaW50IGlkIyNfbGVuZ3RoID0gbGVuZ3RoOwpAQCAt
MjE4LDcgKzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGT1JfRUFDSF9PUENPREVf
SUQoVkVSSUZZX09QQ09ERV9JRCk7CiAgICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQKIAotI2lm
IEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9H
T1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAjaWYgQ09NUElMRVIoUlZDVCkgfHwg
Q09NUElMRVIoSU5URUwpCiAgICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAko
cmV2aXNpb24gMTA2MTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyNyArMjcsNjkgQEAKICNpbmNsdWRl
ICJQdXRCeUlkU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJM
b3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlQ2hhaW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK1B1dEJ5SWRTdGF0dXMgUHV0
QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQoreworICAgIFVOVVNFRF9Q
QVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSAr
IGJ5dGVjb2RlSW5kZXg7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9u
WzRdLnUuc3RydWN0dXJlLmdldCgpOworICAgIGlmICghc3RydWN0dXJlKQorICAgICAgICByZXR1
cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAg
CisgICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZCkg
eworICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2st
Pmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgICAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQor
ICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwg
bm90Rm91bmQpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxl
UmVwbGFjZSwgc3RydWN0dXJlLCAwLCAwLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICBBU1NF
UlQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0CisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50
X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgCisgICAgU3RydWN0dXJlKiBu
ZXdTdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBTdHJ1
Y3R1cmVDaGFpbiogY2hhaW4gPSBpbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgp
OworICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUpOworICAgIEFTU0VSVChjaGFpbik7CisgICAgCisg
ICAgc2l6ZV90IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9i
YWxEYXRhKCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICBy
ZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7Cisg
ICAgCisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3RydWN0dXJl
LCBuZXdTdHJ1Y3R1cmUsIGNoYWluLCBvZmZzZXQpOworI2Vsc2UKKyAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisjZW5kaWYKK30KKwog
UHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmls
ZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29k
ZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVO
QUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mU3Ry
dWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2Zp
bGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICBpZiAocHJvZmlsZWRC
bG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCiAgICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKICAgICAK
ICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRTdHVi
SW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJl
dHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAg
ICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRl
eCwgaWRlbnQpOwogICAgIAogICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewogICAg
IGNhc2UgYWNjZXNzX3Vuc2V0OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9y
bWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxM
SW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAgICAg
Y2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6IHsKICAgICAgICAgc2l6ZV90IG9mZnNldCA9
IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0KApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShy
ZXZpc2lvbiAxMDYxODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJ
ZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKICAgICBz
aXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKIHByaXZhdGU6
CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUgbV9z
dGF0ZTsKICAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOwogICAgIFN0cnVjdHVyZSogbV9u
ZXdTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTA2MTg0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJCYXRjaGVkVHJhbnNp
dGlvbk9wdGltaXplci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJT
Y29wZUNoYWluLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVTdHJp
bmcuaCIKQEAgLTExNiwyNiArMTE3LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGV4cGVjdGVk
IGJ5IHRoZSBjYWxsZWUuCiAqLwogCi0jaWZuZGVmIE5ERUJVRwogc3RhdGljIGJvb2wgc19kdW1w
c0dlbmVyYXRlZENvZGUgPSBmYWxzZTsKLSNlbmRpZgogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9y
OjpzZXREdW1wc0dlbmVyYXRlZENvZGUoYm9vbCBkdW1wc0dlbmVyYXRlZENvZGUpCiB7Ci0jaWZu
ZGVmIE5ERUJVRwogICAgIHNfZHVtcHNHZW5lcmF0ZWRDb2RlID0gZHVtcHNHZW5lcmF0ZWRDb2Rl
OwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZHVtcHNHZW5lcmF0ZWRDb2RlKTsKLSNlbmRpZgog
fQogCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKQogewotI2lm
bmRlZiBOREVCVUcKICAgICByZXR1cm4gc19kdW1wc0dlbmVyYXRlZENvZGU7Ci0jZWxzZQotICAg
IHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCiBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmdlbmVyYXRlKCkKQEAgLTE0OCwxMCArMTM5LDggQEAgSlNPYmplY3QqIEJ5dGVjb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZSgpCiAKICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25Db3VudCht
X2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIAotI2lmbmRlZiBOREVCVUcKICAg
ICBpZiAoc19kdW1wc0dlbmVyYXRlZENvZGUpCiAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1wKG1f
c2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpOwotI2VuZGlmCiAKICAgICBp
ZiAoKG1fY29kZVR5cGUgPT0gRnVuY3Rpb25Db2RlICYmICFtX2NvZGVCbG9jay0+bmVlZHNGdWxs
U2NvcGVDaGFpbigpICYmICFtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKSB8fCBtX2NvZGVU
eXBlID09IEV2YWxDb2RlKQogICAgICAgICBzeW1ib2xUYWJsZSgpLmNsZWFyKCk7CkBAIC0xMjc2
LDkgKzEyNjUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAj
aWYgRU5BQkxFKEpJVCkKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZv
KGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIp
CiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUg
PSBlbWl0UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9n
bG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChh
ZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ0MCw5ICsxNDI3LDcgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9jb2Rl
QmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAjZW5k
aWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJl
c29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgVmFs
dWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKHJlcXVpcmVzRHluYW1pY0No
ZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ5MCw5ICsxNDc1LDcg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShK
SVQpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygp
LnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxv
Y2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwot
I2VuZGlmCiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKHJl
cXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNv
bHZlX2dsb2JhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkp
OwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAt
MTUxMSw5ICsxNDk0LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1ldGhvZENoZWNr
KAogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0ZXJJ
RCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsK
LSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgVmFs
dWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2dldF9ieV9pZCk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0xNTM5LDkgKzE1MjAs
NyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyCiAKIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0jaWYgRU5BQkxF
KElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0
aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKIAogICAgIGVtaXRPcGNvZGUob3Bf
cHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBA
IC0xNTU3LDkgKzE1MzYsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dEJ5CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZChS
ZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCog
dmFsdWUpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQ
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYK
ICAgICAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTg0OCw3ICsxODI1LDExIEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCgKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZnVuYy0+aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFy
Z3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsgLy8g
cmVnaXN0ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKG1fY29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDApOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFZhbHVlUHJv
ZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpA
QCAtMTk1Miw3ICsxOTMzLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
Q29uc3QKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1bmMK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2Fs
bEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hZGRMTElu
dENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwor
I2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlmIChkc3QgIT0gaWdu
b3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9m
aWxlZE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMjIxMyw3ICsyMTk4LDExIEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gKIHsKICAgICBtX3VzZXNFeGNl
cHRpb25zID0gdHJ1ZTsKICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICBI
YW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBp
bnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURl
cHRoLCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9jYXRj
aCkpIH07CisjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDAp
LCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVE
ZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKCkgfTsKKyNlbmRpZgog
I2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5i
aW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBt
X2Jhc2VTY29wZURlcHRoIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMDYxODQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNjA0LDkgKzYwNCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBVTlVTRURfUEFS
QU0obm9kZUluZGV4KTsKICAgICAgICAgCi0gICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9
IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIEFTU0VSVChwcm9maWxlKTsKLSAgICAg
ICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVk
aWN0aW9uKCk7CisgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2Rl
T2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAg
ICAgICAgcHJpbnRmKCJEeW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwgbm9k
ZUluZGV4LCBieXRlY29kZUluZGV4LCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikpOwog
I2VuZGlmCkBAIC0xMDQxLDYgKzEwMzksOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJ
bmxpbmluZyhib29sCiAgICAgCiAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhlbiBpdCBsb29rcyBs
aWtlIHdlIHNob3VsZCBkZWZpbml0ZWx5IGlubGluZSB0aGlzIGNvZGUuIFByb2NlZWQKICAgICAv
LyB3aXRoIHBhcnNpbmcgdGhlIGNvZGUgdG8gZ2V0IGJ5dGVjb2RlLCBzbyB0aGF0IHdlIGNhbiB0
aGVuIHBhcnNlIHRoZSBieXRlY29kZS4KKyAgICAvLyBOb3RlIHRoYXQgaWYgTExJbnQgaXMgZW5h
YmxlZCwgdGhlIGJ5dGVjb2RlIHdpbGwgYWx3YXlzIGJlIGF2YWlsYWJsZS4gQWxzbyBub3RlCisg
ICAgLy8gdGhhdCBpZiBMTEludCBpcyBlbmFibGVkLCB3ZSBtYXkgaW5saW5lIGEgY29kZSBibG9j
ayB0aGF0IGhhcyBuZXZlciBiZWVuIEpJVHRlZAorICAgIC8vIGJlZm9yZSEKICAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IG1fY29kZUJsb2NrQ2FjaGUuZ2V0KENvZGVCbG9ja0tleShleGVjdXRh
YmxlLCBraW5kKSwgZXhwZWN0ZWRGdW5jdGlvbi0+c2NvcGUoKSk7CiAgICAgaWYgKCFjb2RlQmxv
Y2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3NDEsNyArMTc0Miw3IEBAIGJvb2wgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGlu
ZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4KTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgaWYgKG1ldGhvZENhbGxTdGF0dXMuaXNTZXQoKQotICAgICAgICAgICAg
ICAgICYmICFnZXRCeUlkU3RhdHVzLmlzU2V0KCkKKyAgICAgICAgICAgICAgICAmJiAhZ2V0QnlJ
ZFN0YXR1cy53YXNTZWVuSW5KSVQoKQogICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNr
VG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkp
IHsKICAgICAgICAgICAgICAgICAvLyBJdCdzIG1vbm9tb3JwaGljIGFzIGZhciBhcyB3ZSBjYW4g
dGVsbCwgc2luY2UgdGhlIG1ldGhvZF9jaGVjayB3YXMgbGlua2VkCiAgICAgICAgICAgICAgICAg
Ly8gYnV0IHRoZSBzbG93IHBhdGggKGkuZS4gdGhlIG5vcm1hbCBnZXRfYnlfaWQpIG5ldmVyIGZp
cmVkLgpAQCAtMTgxMCw3ICsxODExLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZAogCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwogICAg
ICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CisgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAgICAg
IE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsK
ICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51
Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5s
aW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9w
ZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGll
cy5oCShyZXZpc2lvbiAxMDYxODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDggQEAgaW5saW5lIGJv
b2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92
YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBj
YXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24g
MTA2MTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwyMSBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0
KEV4ZWNTdGF0ZSogZXhlYykKICAgICB1aW50MzJfdCBleGl0SW5kZXggPSBnbG9iYWxEYXRhLT5v
c3JFeGl0SW5kZXg7CiAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jay0+b3NyRXhpdChleGl0
SW5kZXgpOwogICAgIAorICAgIC8vIE1ha2Ugc3VyZSBhbGwgY29kZSBvbiBvdXIgaW5saW5lIHN0
YWNrIGlzIEpJVCBjb21waWxlZC4gVGhpcyBpcyBuZWNlc3Nhcnkgc2luY2UKKyAgICAvLyB3ZSBt
YXkgb3B0IHRvIGlubGluZSBhIGNvZGUgYmxvY2sgZXZlbiBiZWZvcmUgaXQgaGFkIGV2ZXIgYmVl
biBjb21waWxlZCBieSB0aGUKKyAgICAvLyBKSVQsIGJ1dCBvdXIgT1NSIGV4aXQgaW5mcmFzdHJ1
Y3R1cmUgY3VycmVudGx5IG9ubHkgd29ya3MgaWYgdGhlIHRhcmdldCBvZiB0aGUKKyAgICAvLyBP
U1IgZXhpdCBpcyBKSVQgY29kZS4gVGhpcyBjb3VsZCBiZSBjaGFuZ2VkIHNpbmNlIHRoZXJlIGlz
IG5vdGhpbmcgcGFydGljdWxhcmx5CisgICAgLy8gaGFyZCBhYm91dCBkb2luZyBhbiBPU1IgZXhp
dCBpbnRvIHRoZSBpbnRlcnByZXRlciwgYnV0IGZvciBub3cgdGhpcyBzZWVtcyB0byBtYWtlCisg
ICAgLy8gc2Vuc2UgaW4gdGhhdCBpZiB3ZSdyZSBPU1IgZXhpdGluZyBmcm9tIGlubGluZWQgY29k
ZSBvZiBhIERGRyBjb2RlIGJsb2NrLCB0aGVuCisgICAgLy8gcHJvYmFibHkgaXQncyBhIGdvb2Qg
c2lnbiB0aGF0IHRoZSB0aGluZyB3ZSdyZSBleGl0aW5nIGludG8gaXMgaG90LiBFdmVuIG1vcmUK
KyAgICAvLyBpbnRlcmVzdGluZ2x5LCBzaW5jZSB0aGUgY29kZSB3YXMgaW5saW5lZCwgaXQgbWF5
IG5ldmVyIG90aGVyd2lzZSBnZXQgSklUCisgICAgLy8gY29tcGlsZWQgc2luY2UgdGhlIGFjdCBv
ZiBpbmxpbmluZyBpdCBtYXkgZW5zdXJlIHRoYXQgaXQgb3RoZXJ3aXNlIG5ldmVyIHJ1bnMuCisg
ICAgZm9yIChDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9y
aWdpbi5pbmxpbmVDYWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZS0+Y2FsbGVyKSB7CisgICAgICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+
KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKQorICAgICAgICAg
ICAgLT5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+aXND
YWxsID8gQ29kZUZvckNhbGwgOiBDb2RlRm9yQ29uc3RydWN0KQorICAgICAgICAgICAgLT5qaXRD
b21waWxlKCpnbG9iYWxEYXRhKTsKKyAgICB9CisgICAgCiAgICAgU3BlY3VsYXRpb25SZWNvdmVy
eSogcmVjb3ZlcnkgPSAwOwogICAgIGlmIChleGl0Lm1fcmVjb3ZlcnlJbmRleCkKICAgICAgICAg
cmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5zcGVjdWxhdGlvblJlY292ZXJ5KGV4aXQubV9yZWNvdmVy
eUluZGV4IC0gMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAJKHJldmlzaW9uIDEwNjE4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiREZH
UmVwYXRjaC5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJH
ZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbmxpbmVBU00uaCIKICNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgpAQCAtNjczLDUwICs2NzQsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRp
b25Db21wYXJlU3RyCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpTVmFs
dWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0K
IAotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7
Ci1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRo
RXhlY1N0YXRlKEV4ZWNTdGF0ZSopOwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmdsb2Js
ICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1ISURFX1NZTUJP
TChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKLSAgICAi
bW92ICVyMTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKFg4
NikKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xf
U1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJWVk
aSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVzcClcbiIKLSAgICAiam1wICIgU1lNQk9M
X1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAi
XG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20gKAotIi50ZXh0IiAiXG4iCi0iLmFs
aWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLSIudGh1
bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIg
IlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKLSAgICAiY3B5IHIwLCByNSIgIlxu
IgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0KLUVuY29kZWRKU1ZhbHVlIERGR19P
UEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBl
eGVjKQotewotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRh
KCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsK
LSAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0
Q2FsbFJldHVyblZhbHVlKTsKLX0KLQogc3RhdGljIHZvaWQqIGhhbmRsZUhvc3RDYWxsKEV4ZWNT
dGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDEwNjE4NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MzcsNyArODM3LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9n
ZwogICAgICAgICBzZXRIaWdoV2F0ZXJNYXJrKG1heChwcm9wb3J0aW9uYWxCeXRlcywgbV9taW5C
eXRlc1BlckN5Y2xlKSk7CiAgICAgfQogICAgIEpBVkFTQ1JJUFRDT1JFX0dDX0VORCgpOwotCisg
ICAgCiAgICAgKCptX2FjdGl2aXR5Q2FsbGJhY2spKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDEwNjE4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNWYWx1ZTsKICAgICBj
bGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogICAgIGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyOwogICAgIGNsYXNzIFJlZ2lzdGVyRmls
ZTsKICAgICBjbGFzcyBVU3RyaW5nOwpAQCAtMTM1LDExICsxMzYsMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgZ2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cyhIYXNoU2V0PEpT
Q2VsbCo+JiByb290cyk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgQ29k
ZUJsb2NrOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAg
ICAgICBmcmllbmQgY2xhc3MgTWFya2VkU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJr
ZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNzIEJ1bXBTcGFjZTsKICAgICAgICAgZnJpZW5k
IGNsYXNzIFNsb3RWaXNpdG9yOwotICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwogCiAg
ICAgICAgIHNpemVfdCB3YXRlck1hcmsoKTsKICAgICAgICAgc2l6ZV90IGhpZ2hXYXRlck1hcmso
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkocmV2aXNp
b24gMTA2MTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZv
aWQgdmlzaXRDaGlsZHJlbigKICNlbmRpZgogCiAgICAgQVNTRVJUKEhlYXA6OmlzTWFya2VkKGNl
bGwpKTsKLQorICAgIAogICAgIGlmIChpc0pTU3RyaW5nKGNlbGwpKSB7CiAgICAgICAgIEpTU3Ry
aW5nOjp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOwog
ICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmgJKHJldmlzaW9uIDEwNjE4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiBjbGFzcyBIZWFwOwogY2xhc3MgSlNDZWxsOwogY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9y
OworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgV2Vha0dDSGFuZGxlOwogY2xh
c3MgU2xvdFZpc2l0b3I7CiAKQEAgLTg3LDYgKzg4LDggQEAgcHVibGljOgogICAgIHZvaWQgZnJl
ZUJsb2NrcyhNYXJrZWRCbG9jayogaGVhZCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNl
KFNpemVDbGFzcyYpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlSGVscGVyKE1hcmtlZFNwYWNlOjpT
aXplQ2xhc3MmKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNz
Jik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZS5oCShyZXZpc2lvbiAxMDYxODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsOSBAQCBuYW1lc3Bh
Y2UgSlNDICB7CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBJbnN0cnVjdGlvbiog
cmV0dXJuVlBDKCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52
UEMoKTsgfQogI2VuZGlmCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBJbnN0cnVjdGlvbiog
Y3VycmVudFZQQygpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KHRo
aXNbUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50XS50YWcoKSk7IH0KKyNlbmRpZgogCiAgICAg
ICAgIHZvaWQgc2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSkgeyBzdGF0aWNf
Y2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWVdID0gY2FsbGVy
RnJhbWU7IH0KICAgICAgICAgdm9pZCBzZXRTY29wZUNoYWluKFNjb3BlQ2hhaW5Ob2RlKiBzY29w
ZUNoYWluKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpTY29w
ZUNoYWluXSA9IHNjb3BlQ2hhaW47IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTA2MTg0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjksNyArNjksNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2VuZGlmCiAKLSNkZWZp
bmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EIChFTkFCTEUoQ09NUFVURURf
R09UT19JTlRFUlBSRVRFUikgJiYgIWRlZmluZWQoX19sbHZtX18pKQorI2RlZmluZSBXVEZfVVNF
X0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQgKChFTkFCTEUoQ09NUFVURURfR09UT19JTlRF
UlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkgJiYgIWRlZmluZWQoX19sbHZtX18pKQogCiB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC01NDcsMTcgKzU0Nyw0MyBAQCBJbnRlcnByZXRlcjo6SW50
ZXJwcmV0ZXIoKQogewogfQogCi12b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKGJvb2wgY2Fu
VXNlSklUKQorSW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcigpCiB7Ci0jaWYgRU5BQkxFKENPTVBV
VEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2VuYWJs
ZWQpCisgICAgICAgIGRlbGV0ZVtdIG1fb3Bjb2RlVGFibGU7CisjZW5kaWYKK30KKwordm9pZCBJ
bnRlcnByZXRlcjo6aW5pdGlhbGl6ZShMTEludDo6RGF0YSogbGxpbnREYXRhLCBib29sIGNhblVz
ZUpJVCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGxpbnREYXRhKTsKKyAgICBVTlVTRURfUEFSQU0o
Y2FuVXNlSklUKTsKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5B
QkxFKExMSU5UKQorI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyAgICAv
LyBIYXZpbmcgTExJbnQgZW5hYmxlZCwgYnV0IG5vdCBiZWluZyBhYmxlIHRvIHVzZSB0aGUgSklU
LCBhbmQgbm90IGhhdmluZworICAgIC8vIGEgY29tcHV0ZWQgZ290byBpbnRlcnByZXRlciwgaXMg
bm90IHN1cHBvcnRlZC4gTm90IGJlY2F1c2Ugd2UgY2Fubm90CisgICAgLy8gc3VwcG9ydCBpdCwg
YnV0IGJlY2F1c2UgSSBkZWNpZGVkIHRvIGRyYXcgdGhlIGxpbmUgYXQgdGhlIG51bWJlciBvZgor
ICAgIC8vIHBlcm11dGF0aW9ucyBvZiBleGVjdXRpb24gZW5naW5lcyB0aGF0IEkgd2FudGVkIHRo
aXMgY29kZSB0byBncm9rLgorICAgIEFTU0VSVChjYW5Vc2VKSVQpOworI2VuZGlmCiAgICAgaWYg
KGNhblVzZUpJVCkgeworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJsZSA9
IGxsaW50RGF0YS0+b3Bjb2RlTWFwKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVt
T3Bjb2RlSURzOyArK2kpCisgICAgICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1fb3Bjb2Rl
VGFibGVbaV0sIHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7CisjZWxzZQogICAgICAgICAvLyBJ
ZiB0aGUgSklUIGlzIHByZXNlbnQsIGRvbid0IHVzZSBqdW1wIGRlc3RpbmF0aW9ucyBmb3Igb3Bj
b2Rlcy4KICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURz
OyArK2kpIHsKICAgICAgICAgICAgIE9wY29kZSBvcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaSkpOwogICAgICAgICAgICAgbV9vcGNvZGVUYWJsZVtp
XSA9IG9wY29kZTsKICAgICAgICAgfQorI2VuZGlmCiAgICAgfSBlbHNlIHsKKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgICAgIG1fb3Bjb2RlVGFibGUgPSBuZXcgT3Bjb2RlW251bU9wY29kZUlEc107
CisjZW5kaWYKICAgICAgICAgcHJpdmF0ZUV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVybiwgMCwg
MCk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsg
KytpKQpAQCAtNTY2LDcgKzU5Miw2IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9v
bCBjYW5Vc2UKICAgICAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICAgICB9CiAjZWxzZQotICAgIFVO
VVNFRF9QQVJBTShjYW5Vc2VKSVQpOwogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2Vu
YWJsZWQgPSB0cnVlOwogI2Vsc2UKQEAgLTY2Nyw5ICs2OTIsMTEgQEAgdm9pZCBJbnRlcnByZXRl
cjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbQogCiBib29sIEludGVycHJldGVyOjppc09wY29kZShP
cGNvZGUgb3Bjb2RlKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQor
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisj
aWYgIUVOQUJMRShMTElOVCkKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG9w
Y29kZSA+PSAwICYmIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihvcGNvZGUpKSA8PSBvcF9lbmQ7CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2RlICE9IEhhc2hU
cmFpdHM8T3Bjb2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJhaXRzPE9wY29k
ZT46OmlzRGVsZXRlZFZhbHVlKG9wY29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJRFRhYmxlLmNv
bnRhaW5zKG9wY29kZSk7CkBAIC03MjYsMTEgKzc1MywxMSBAQCBORVZFUl9JTkxJTkUgYm9vbCBJ
bnRlcnByZXRlcjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAxLgogI2lmIEVO
QUJMRShKSVQpICYmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBpZiAoY2FsbGVyRnJhbWUtPmds
b2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVj
b2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZy
YW1lLT5yZXR1cm5QQygpKTsKICAgICBlbHNlCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29k
ZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZWxp
ZiBFTkFCTEUoSklUKQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9m
ZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJs
b2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsK
ICNlbHNlCiAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNh
bGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbmRpZgpAQCAtNTE3MCwxMCArNTE5NywxMCBA
QCB2b2lkIEludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgICAgIGJ5dGVj
b2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJl
dHVyblZQQygpKTsKICNpZiBFTkFCTEUoSklUKQogICAgIGVsc2UKLSAgICAgICAgYnl0ZWNvZGVP
ZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJu
UEMoKSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29k
ZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogI2Vs
c2UKLSAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQo
Y2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVC
bG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7
CiAjZW5kaWYKICAgICBsaW5lTnVtYmVyID0gY2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVyRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQgLSAxKTsKICAgICBzb3VyY2VJRCA9IGNhbGxl
ckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24g
MTA2MTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIK
ICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJM
TEludERhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUu
aCIKIApAQCAtNDUsNiArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlv
bkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9i
amVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3Jh
bUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5v
ZGU7CkBAIC0xMDAsMTkgKzEwMiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElu
dGVycHJldGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQgY2xh
c3MgSklUOwogICAgIHB1YmxpYzoKICAgICAgICAgSW50ZXJwcmV0ZXIoKTsKKyAgICAgICAgfklu
dGVycHJldGVyKCk7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBjYW5V
c2VKSVQpOworICAgICAgICB2b2lkIGluaXRpYWxpemUoTExJbnQ6OkRhdGEqLCBib29sIGNhblVz
ZUpJVCk7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKSB7IHJldHVybiBt
X3JlZ2lzdGVyRmlsZTsgfQogICAgICAgICAKICAgICAgICAgT3Bjb2RlIGdldE9wY29kZShPcGNv
ZGVJRCBpZCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRF
RF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgICAgICByZXR1cm4g
bV9vcGNvZGVUYWJsZVtpZF07CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIGlkOwpAQCAtMTIy
LDcgKzEyNiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2Rl
SUQoT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlh
bGl6ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJM
RShMTElOVCkKKyAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKKyAgICAgICAg
ICAgIHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CisjZWxpZiBFTkFCTEUoQ09N
UFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNv
ZGUpKTsKICAgICAgICAgICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSk7
CkBAIC0xMzIsNiArMTM5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJu
IG9wY29kZTsKICNlbmRpZgogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGVuYWJs
ZWQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9lbmFibGVkOworICAgICAgICB9
CiAKICAgICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCkBAIC0xOTksNyArMjExLDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSBtX3JlZ2lzdGVyRmlsZTsK
ICAgICAgICAgCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5B
QkxFKExMSU5UKQorICAgICAgICBPcGNvZGUqIG1fb3Bjb2RlVGFibGU7IC8vIE1hcHMgT3Bjb2Rl
SUQgPT4gT3Bjb2RlIGZvciBjb21waWxpbmcKKyAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29k
ZUlEPiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNv
bXBpbGluZworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAg
IE9wY29kZSBtX29wY29kZVRhYmxlW251bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQgPT4g
T3Bjb2RlIGZvciBjb21waWxpbmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBt
X29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGlu
ZwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0
ZXJGaWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1JlZ2lzdGVyRmlsZS5oCShyZXZpc2lvbiAxMDYxODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAg
ICBjbGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IAogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFJlZ2lzdGVyRmlsZSk7CkBAIC04MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIqKTsK
ICAgICAgICAgdm9pZCByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9pZCBhZGRU
b0NvbW1pdHRlZEJ5dGVDb3VudChsb25nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFs
dWUuaCIKKworI2lmIENPTVBJTEVSKEdDQykKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2lu
Y2x1ZGUgIklubGluZUFTTS5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNW
YWx1ZUlubGluZU1ldGhvZHMuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFM
VUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSop
OworCisjaWYgQ1BVKFg4Nl82NCkKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4i
CisgICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKKyAgICAibW92ICVyMTMsICVyZGlcbiIKKyAg
ICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVX
aXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKFg4NikKK2FzbSAoCisiLmdsb2JsICIg
U1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKKyAgICAibW92
ICVlZGksIDQoJWVzcClcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKEFS
TV9USFVNQjIpCithc20gKAorIi50ZXh0IiAiXG4iCisiLmFsaWduIDIiICJcbiIKKyIuZ2xvYmwg
IiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lNQk9M
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKKyIudGh1bWIiICJcbiIKKyIudGh1bWJfZnVu
YyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9M
X1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJsZHIgcjUsIFty
NSwgIy00MF0iICJcbiIKKyAgICAiY3B5IHIwLCByNSIgIlxuIgorICAgICJiICIgU1lNQk9MX1NU
UklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4i
CispOworI2VuZGlmCisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVS
Tl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0
YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIENPTVBJTEVSKEdDQykKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9I
b3N0Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorI2RlZmluZSBIb3N0Q2FsbFJldHVyblZhbHVl
X2gKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworLy8gVW5mb3J0dW5hdGVseSB0aGlz
IG9ubHkgd29ya3Mgb24gR0NDLWxpa2UgY29tcGlsZXJzLiBBbmQgaXQncyBjdXJyZW50bHkgb25s
eSB1c2VkCisvLyBieSBMTEludCBhbmQgREZHLCB3aGljaCBhbHNvIGFyZSByZXN0cmljdGVkIHRv
IEdDQy1saWtlIGNvbXBpbGVycy4gV2Ugc2hvdWxkCisvLyBwcm9iYWJseSBmaXggdGhhdCBhdCBz
b21lIHBvaW50LgorI2lmIENPTVBJTEVSKEdDQykKKworI2lmIENBTExJTkdfQ09OVkVOVElPTl9J
U19TVERDQUxMCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIENERUNMCisj
ZWxzZQorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTgorI2VuZGlmCisKK25h
bWVzcGFjZSBKU0MgeworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJO
X1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Cit9CisKKyNlbmRpZiAvLyBD
T01QSUxFUihHQ0MpCisKKyNlbmRpZiAvLyBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTA2MTg0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDgg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHJvZmlsZV93aWxsX2NhbGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX25ld19zY29w
ZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfc2NvcGUpCisgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9ieV9pbmRleCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92
YWwpCkBAIC00ODcsNiArNDg5LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Bvc3RfaW5jKQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfcHJlX2RlYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X3ByZV9pbmMpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Ogor
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3B1dF9ieV92YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2ds
b2JhbCkKQEAgLTUyNiw2ICs1MzAsMTAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nh
c2VzKCkKIAogSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bmN0aW9uRW50
cnlBcml0eUNoZWNrKQogeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRm
KCJDb21waWxpbmcgSklUIGNvZGUhXG4iKTsKKyNlbmRpZgorICAgIAogI2lmIEVOQUJMRShWQUxV
RV9QUk9GSUxFUikKICAgICBtX2NhbkJlT3B0aW1pemVkID0gbV9jb2RlQmxvY2stPmNhbkNvbXBp
bGVXaXRoREZHKCk7CiAjZW5kaWYKQEAgLTY5MCw4ICs2OTgsMTIgQEAgSklUQ29kZSBKSVQ6OnBy
aXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgogICAgICAgICBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
biA9IG1fY29kZUJsb2NrLT5zdHJ1Y3R1cmVTdHViSW5mbyhtX21ldGhvZENhbGxDb21waWxhdGlv
bkluZm9baV0ucHJvcGVydHlBY2Nlc3NJbmRleCkuY2FsbFJldHVybkxvY2F0aW9uOwogICAgIH0K
IAotI2lmIEVOQUJMRShERkdfSklUKQotICAgIGlmIChtX2NhbkJlT3B0aW1pemVkKSB7CisjaWYg
RU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKKyAgICBpZiAobV9jYW5CZU9wdGltaXpl
ZAorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgfHwgdHJ1ZQorI2VuZGlmCisgICAgICAgICkg
ewogICAgICAgICBDb21wYWN0SklUQ29kZU1hcDo6RW5jb2RlciBqaXRDb2RlTWFwRW5jb2RlcjsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0
IDwgbV9sYWJlbHMuc2l6ZSgpOyArK2J5dGVjb2RlT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAo
bV9sYWJlbHNbYnl0ZWNvZGVPZmZzZXRdLmlzU2V0KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuaAkocmV2aXNpb24gMTA2MTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEpJVENvZGUoKSB7IH0KICNlbmRpZgogICAgIHB1YmxpYzoKLSAgICAg
ICAgZW51bSBKSVRUeXBlIHsgSG9zdENhbGxUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9Owor
ICAgICAgICBlbnVtIEpJVFR5cGUgeyBOb25lLCBIb3N0Q2FsbFRodW5rLCBJbnRlcnByZXRlclRo
dW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgSklU
VHlwZSBib3R0b21UaWVySklUKCkKICAgICAgICAgewpAQCAtNjYsOCArNjYsMTkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gREZHSklUOwogICAgICAgICB9CiAgICAgICAg
IAorICAgICAgICBzdGF0aWMgYm9vbCBpc09wdGltaXppbmdKSVQoSklUVHlwZSBqaXRUeXBlKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBERkdKSVQ7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBib29sIGlzQmFzZWxpbmVDb2RlKEpJVFR5cGUg
aml0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gSW50ZXJw
cmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEJhc2VsaW5lSklUOworICAgICAgICB9CisgICAgICAg
IAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIEpJVENvZGUoKQorICAgICAgICAgICAgOiBtX2pp
dFR5cGUoTm9uZSkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTc1LDYgKzg2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICA6IG1fcmVmKHJlZikKICAgICAgICAgICAgICwgbV9q
aXRUeXBlKGppdFR5cGUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChqaXRUeXBlICE9
IE5vbmUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yICEoKSBj
b25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCShyZXZpc2lvbiAx
MDYxODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMywxNSArMzMsMjEgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5o
IgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkxM
SW50RW50cnlwb2ludHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENvZGVCbG9ja1R5cGU+CiBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBK
SVRDb2RlJiBqaXRDb2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CisgICAgaWYgKGpp
dFR5cGUgPT0gY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIAogICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgCisgICAgY29kZUJsb2NrLT51bmxpbmtJbmNvbWluZ0NhbGxzKCk7CisgICAgCiAg
ICAgYm9vbCBkZmdDb21waWxlZCA9IGZhbHNlOwogICAgIGlmIChqaXRUeXBlID09IEpJVENvZGU6
OkRGR0pJVCkKICAgICAgICAgZGZnQ29tcGlsZWQgPSBERkc6OnRyeUNvbXBpbGUoZ2xvYmFsRGF0
YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsKQEAgLTU1LDEwICs2MSw3IEBAIGlubGluZSBi
b29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2wKICAgICAgICAgfQogICAgICAgICBqaXRD
b2RlID0gSklUOjpjb21waWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCkpOwogICAgIH0K
LSNpZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLSAgICBpZiAoIUJ5dGVjb2RlR2VuZXJhdG9y
OjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKLSAgICAgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29k
ZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwotI2VuZGlmCisgICAgY29kZUJsb2NrLT5oYW5kbGVC
eXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29k
ZShqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRy
dWU7CkBAIC02Niw5ICs2OSwxNCBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0
ZShKU0dsCiAKIGlubGluZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBjb2RlQmxv
Y2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhB
cml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBKSVRDb2RlOjpKSVRU
eXBlIGppdFR5cGUpCiB7CisgICAgaWYgKGppdFR5cGUgPT0gY29kZUJsb2NrLT5nZXRKSVRUeXBl
KCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAogICAgIGlmICghZ2xvYmFsRGF0YS5jYW5V
c2VKSVQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisgICAgY29kZUJsb2NrLT51bmxp
bmtJbmNvbWluZ0NhbGxzKCk7CisgICAgCiAgICAgYm9vbCBkZmdDb21waWxlZCA9IGZhbHNlOwog
ICAgIGlmIChqaXRUeXBlID09IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAgZGZnQ29tcGlsZWQg
PSBERkc6OnRyeUNvbXBpbGVGdW5jdGlvbihnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGpp
dENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CkBAIC04MywxMSArOTEsNyBAQCBpbmxpbmUg
Ym9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpCiAgICAgICAgIH0KICAgICAgICAgaml0
Q29kZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCAmaml0Q29k
ZVdpdGhBcml0eUNoZWNrKTsKICAgICB9Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0g
ICAgaWYgKCFCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAg
IGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRp
ZgotICAgIAorICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5p
dHkoKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0
eUNoZWNrKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMTA2MTg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjQsNyArNjQsNyBAQCBFeGNlcHRpb25IYW5kbGVyIGdlbmVyaWNUaHJvdyhKU0dsb2JhbERhCiAK
IEV4Y2VwdGlvbkhhbmRsZXIgaml0VGhyb3coSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVj
U3RhdGUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSwgUmV0dXJuQWRkcmVzc1B0
ciBmYXVsdExvY2F0aW9uKQogewotICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwg
Y2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNv
ZGVPZmZzZXQoZmF1bHRMb2NhdGlvbikpOworICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFs
RGF0YSwgY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+
Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLCBmYXVsdExvY2F0aW9uKSk7CiB9CiAKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nlc3MzMl82NC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2VzczMy
XzY0LmNwcAkocmV2aXNpb24gMTA2MTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRQcm9wZXJ0eUFjY2VzczMyXzY0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTE3LDcgKzUxNyw3
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW8KICAgICAgICAgc3R1
YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIGlkZW50CiAgICAgICAgIHN0dWJDYWxsLnNraXBBcmd1
bWVudCgpOyAvLyB2YWx1ZQogICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1t
MzIob2xkU3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSk7Ci0gICAgICAgIHN0
dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihuZXdTdHJ1Y3R1cmUtPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkpKTsKKyAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQoVHJ1c3RlZElt
bVB0cihuZXdTdHJ1Y3R1cmUpKTsKICAgICAgICAgc3R1YkNhbGwuY2FsbChyZWdUMCk7CiAKICAg
ICAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4ocmVnVDMpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRQcm9wZXJ0eUFjY2Vzcy5jcHAJKHJldmlz
aW9uIDEwNjE4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUUHJvcGVydHlBY2Nl
c3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDgsNyArNTQ4LDcgQEAgdm9pZCBKSVQ6OnByaXZh
dGVDb21waWxlUHV0QnlJZFRyYW5zaXRpbwogICAgICAgICBzdHViQ2FsbC5za2lwQXJndW1lbnQo
KTsgLy8gaWRlbnQKICAgICAgICAgc3R1YkNhbGwuc2tpcEFyZ3VtZW50KCk7IC8vIHZhbHVlCiAg
ICAgICAgIHN0dWJDYWxsLmFkZEFyZ3VtZW50KFRydXN0ZWRJbW0zMihvbGRTdHJ1Y3R1cmUtPnBy
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpKTsKLSAgICAgICAgc3R1YkNhbGwuYWRkQXJndW1lbnQo
VHJ1c3RlZEltbTMyKG5ld1N0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkpOwor
ICAgICAgICBzdHViQ2FsbC5hZGRBcmd1bWVudChUcnVzdGVkSW1tUHRyKG5ld1N0cnVjdHVyZSkp
OwogICAgICAgICBzdHViQ2FsbC5jYWxsKHJlZ1QwKTsKICAgICAgICAgZW1pdEdldEpJVFN0dWJB
cmcoMiwgcmVnVDEpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNw
cAkocmV2aXNpb24gMTA2MTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NDQsNiArMTQ0NCw3IEBAIERFRklORV9TVFVCX0ZV
TkNUSU9OKHZvaWQsIG9wX3B1dF9ieV9pZF8KICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxs
RnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIEFTU0VSVChiYXNlVmFsdWUu
aXNPYmplY3QoKSk7CisgICAgCiAgICAgYXNPYmplY3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGNh
bGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUo
KSwgc2xvdCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGFja0ZyYW1lLmNh
bGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBAIC0xNDkwLDcgKzE0OTEsOCBAQCBERUZJTkVfU1RVQl9G
VU5DVElPTihKU09iamVjdCosIG9wX3B1dF9iCiAKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IHN0
YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7CiAgICAgaW50MzJfdCBvbGRTaXplID0gc3RhY2tG
cmFtZS5hcmdzWzNdLmludDMyKCk7Ci0gICAgaW50MzJfdCBuZXdTaXplID0gc3RhY2tGcmFtZS5h
cmdzWzRdLmludDMyKCk7CisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBzdGFja0ZyYW1l
LmFyZ3NbNF0uc3RydWN0dXJlKCk7CisgICAgaW50MzJfdCBuZXdTaXplID0gbmV3U3RydWN0dXJl
LT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogCiAgICAgQVNTRVJUKGJhc2VWYWx1ZS5pc09i
amVjdCgpKTsKICAgICBKU09iamVjdCogYmFzZSA9IGFzT2JqZWN0KGJhc2VWYWx1ZSk7CkBAIC0x
OTI4LDcgKzE5MzAsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9mcm9t
CiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNrRnJhbWUuYXJnc1swXS5pbnQzMigp
OwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmludGYoIkVudGVyZWQgb3B0
aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25S
ZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVC
bG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5
Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBw
cmludGYoIiVwOiBFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVy
ID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5
Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIo
KSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9w
dGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAgaWYgKGNvZGVCbG9jay0+
aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewpAQCAtMjE4Myw0NSArMjE4NSwxMyBAQCBERUZJ
TkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3VsdDsK
IH0KIAotaW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJhbWUqIGNhbGxGcmFt
ZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2Fs
bGVlKCkpOwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICBDb2Rl
QmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRC
eXRlY29kZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAgICAvLyBUaGlzIGVu
c3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFy
Z3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3Jv
dyhjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkg
KyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNh
bGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdp
dGggdW5kZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1l
dGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVnaXN0ZXIqIHNyYyA9
IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGNhbGxGcmFtZS0+
cmVnaXN0ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGludCBlbmQgPSAtQ2FsbEZy
YW1lOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZvciAoaSA9
IC0xOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07Ci0KLSAgICBlbmQg
LT0gZGVsdGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBq
c1VuZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6
OmNyZWF0ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1lIDw9IHJlZ2lzdGVy
RmlsZS0+ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0KIERFRklORV9TVFVC
X0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklUX1NU
QUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFj
a0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlD
aGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7
CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hl
Y2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOwog
ICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9t
T3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1Ms
IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKIApA
QCAtMjIzNCw3ICsyMjA0LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NvbnN0
cnVjdAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsK
IAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUs
IHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBDYWxsRnJh
bWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJh
bWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBpZiAo
IW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2
b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmgJKHJldmlzaW9uIDEwNjE4NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTksNiAr
NTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBQdXRQcm9wZXJ0eVNsb3Q7CiAgICAg
Y2xhc3MgUmVnaXN0ZXJGaWxlOwogICAgIGNsYXNzIFJlZ0V4cDsKKyAgICBjbGFzcyBTdHJ1Y3R1
cmU7CiAKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xhc3MgV2VhazsKIApAQCAtNzgsNiAr
NzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciog
cHJvcGVydHlOYW1lSXRlcmF0b3IoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxKU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yKj4oYXNQb2ludGVyKTsgfQogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SlNHbG9iYWxPYmplY3QqPihhc1BvaW50ZXIp
OyB9CiAgICAgICAgIEpTU3RyaW5nKiBqc1N0cmluZygpIHsgcmV0dXJuIHN0YXRpY19jYXN0PEpT
U3RyaW5nKj4oYXNQb2ludGVyKTsgfQorICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSgpIHsg
cmV0dXJuIHN0YXRpY19jYXN0PFN0cnVjdHVyZSo+KGFzUG9pbnRlcik7IH0KICAgICAgICAgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKCkgeyByZXR1cm4gUmV0dXJuQWRkcmVzc1B0cihh
c1BvaW50ZXIpOyB9CiAgICAgfTsKICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDEwNjE4NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYs
MTAgQEAKICNpZm5kZWYgSlNJbnRlcmZhY2VKSVRfaAogI2RlZmluZSBKU0ludGVyZmFjZUpJVF9o
CiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5o
IgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRl
ICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJSZWdp
c3RlckZpbGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1v
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1v
bi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29t
bW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENvbW1vbl9oCisjZGVmaW5l
IExMSW50Q29tbW9uX2gKKworI2RlZmluZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lORyAwCisjZGVm
aW5lIExMSU5UX0hFTFBFUl9UUkFDSU5HIDAKKworI2VuZGlmIC8vIExMSW50Q29tbW9uX2gKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgi
CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1
ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK0RhdGE6OkRhdGEoKQorICAgIDogbV9leGNl
cHRpb25JbnN0cnVjdGlvbnMobmV3IEluc3RydWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdKQor
ICAgICwgbV9vcGNvZGVNYXAobmV3IE9wY29kZVtudW1PcGNvZGVJRHNdKQoreworICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAgICAgICBtX2V4Y2Vw
dGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lKTsKKyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9w
Y29kZSwgbGVuZ3RoKSBtX29wY29kZU1hcFtvcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfIyNvcGNvZGUpOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkpOwor
I3VuZGVmIE9QQ09ERV9FTlRSWQorfQorCitEYXRhOjp+RGF0YSgpCit7CisgICAgZGVsZXRlW10g
bV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgZGVsZXRlW10gbV9vcGNvZGVNYXA7Cit9CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIExMSW50RGF0YV9oCisjZGVmaW5lIExMSW50RGF0YV9oCisKKyNpbmNs
dWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKworI2lmIEVO
QUJMRShMTElOVCkKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIERhdGEoKTsKKyAgICB+RGF0
YSgpOworICAgIAorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIH0KKyAgICAK
KyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcGNvZGVN
YXA7CisgICAgfQorcHJpdmF0ZToKKyAgICBJbnN0cnVjdGlvbiogbV9leGNlcHRpb25JbnN0cnVj
dGlvbnM7CisgICAgT3Bjb2RlKiBtX29wY29kZU1hcDsKK307CisjZWxzZSAvLyBFTkFCTEUoTExJ
TlQpCisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNo
CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgor
I2VuZGlmCisKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIEluc3RydWN0aW9uKiBleGNlcHRp
b25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisg
ICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorfTsKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHBvcAorI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnREYXRhX2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRF
bnRyeXBvaW50cy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSklUQ29kZS5o
IgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisj
aW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNw
YWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpJVENvZGUmIGppdENvZGUs
IE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjaykKK3sKKyAgICBpZiAoIWdsb2JhbERh
dGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAg
ICAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSkpKTsK
KyAgICAgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9j
YXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChraW5kID09IENvZGVG
b3JDb25zdHJ1Y3QpOworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1i
bGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKGtpbmQg
PT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5n
ZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJ
bnRlcnByZXRlclRodW5rKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJ
U3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1
Y3QpOworICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlv
bkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKTsKKyAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9y
Q29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7Cit9CisKK3ZvaWQgZ2V0
RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2Rl
KQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRDb2Rl
ID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2Vs
Zk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9ldmFsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
KyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1
bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKK30KKwordm9pZCBnZXRQ
cm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENv
ZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGppdENv
ZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVT
ZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lk
Kj4oJmxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihwcm9ncmFt
RW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQorCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9p
bnRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVudHJ5cG9pbnRzX2gKKyNk
ZWZpbmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKwor
I2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV2YWxDb2RlQmxvY2s7CitjbGFzcyBKSVRDb2Rl
OworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworY2xh
c3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOworY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKKworbmFt
ZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRh
JiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgSklUQ29kZSYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciYgYXJpdHlDaGVjayk7Cit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJ
VENvZGUmKTsKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29k
ZSYpOworCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgRXZhbENvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0RXZhbEVudHJ5
cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9p
bnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9ncmFtQ29kZUJsb2NrKiwgSklUQ29kZSYg
aml0Q29kZSkKK3sKKyAgICBnZXRQcm9ncmFtRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2Rl
KTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUo
TExJTlQpCisKKyNlbmRpZiAvLyBMTEludEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0
aW9ucy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRl
ICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJM
b3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQg
eworCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBM
TElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzLlxu
IiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2Vu
ZXJpY1Rocm93KAorICAgICAgICBnbG9iYWxEYXRhLCBleGVjLT5jYWxsZXJGcmFtZSgpLCBnbG9i
YWxEYXRhLT5leGNlcHRpb24sCisgICAgICAgIGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9j
aygpLT5ieXRlY29kZU9mZnNldChleGVjLT5jYWxsZXJGcmFtZSgpLCBleGVjLT5yZXR1cm5QQygp
KSk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4
ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmxsaW50RGF0
YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhy
b3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJB
Q0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93KS5c
biIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdl
bmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0g
ZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJl
dHVybiBnbG9iYWxEYXRhLT5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisK
K3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQorewor
ICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYg
TExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAo
Y2FsbFRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOwor
I2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4
Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7
CisgICAgCisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2R1cmlu
Z19jYWxsX3RyYW1wb2xpbmUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwor
I2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYg
RU5BQkxFKExMSU5UKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3Ry
dWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisvLyBUaHJvdyB0aGUgY3Vy
cmVudGx5IGFjdGl2ZSBleGNlcHRpb24gaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNhbGxlcidzIGNh
bGwgZnJhbWUuCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqKTsKKwor
Ly8gVGVsbHMgeW91IHdoZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0dXJuLXRvLXRo
cm93LCBhZnRlciB5b3UndmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBpbmZvcm1hdGlvbiBuZWVk
ZWQgdG8gdGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9y
VGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0aGUgY3VycmVudCBQQyBp
biB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlvdSBhIFBDCisv
LyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4g
YWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0
cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBleGNlcHRpb24g
aGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhjZXB0aW9uIGhh
bmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhhdCBQQyB3aXRo
b3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVhZCBleGNlcHRp
b24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5CisvLyBv
dGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiwgSW5z
dHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxs
IHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisK
KyNlbmRpZiAvLyBMTEludEV4Y2VwdGlvbnNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEhlbHBlcnMuaCIKKworI2lm
IEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkhvc3RDYWxs
UmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVC5o
IgorI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2lu
Y2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
aCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdGF0
aWNTY29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNWYWx1
ZS5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25z
LmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wZXJhdGlv
bnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKKyNkZWZpbmUgTExJ
TlRfT1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRSKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorI2Rl
ZmluZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5vcGVyYW5kKSkKKwor
I2RlZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsgICAgICAgXAorICAg
ICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgICAgIHZvaWQqIGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAg
ICAgIHZvaWQqIGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSBw
YWlyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50NjRf
dCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IF9fcnRfdTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5hID0g
Zmlyc3Q7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5iID0gc2Vj
b25kOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19ydF91Lmk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExM
SU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykKKworI2RlZmluZSBMTElO
VF9USFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBKU0dsb2JhbERhdGEmIF9fdF9nbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgp
OyAgICAgICAgXAorICAgICAgICBfX3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9u
VG9UaHJvdyk7ICAgICAgICAgICAgXAorICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywg
cGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1Q
TCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hp
bGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpIGRvIHsgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmdsb2JhbERhdGEoKS5l
eGNlcHRpb24pKSB7ICAgXAorICAgICAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBj
KTsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExM
SU5UX0VORCgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBM
KCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZp
bmUgTExJTlRfQlJBTkNIKG9wY29kZSwgY29uZGl0aW9uKSBkbyB7ICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgYm9vbCBfX2JfY29uZGl0aW9uID0gKGNvbmRpdGlvbik7ICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9fYl9jb25kaXRpb24p
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBj
ICs9IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsgICAgICAgIFwKKyAg
ICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bjb2RlKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKwor
I2RlZmluZSBMTElOVF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAgICAgXAorICAgICAg
ICBKU1ZhbHVlIF9fcl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAorICAgICAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9PUCgx
KSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgp
OyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5l
IExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcGNvZGUsIHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAg
XAorICAgICAgICBKU1ZhbHVlIF9fcnBfcmV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0gX19ycF9yZXR1cm5W
YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwY1tPUENPREVfTEVOR1RI
KG9wY29kZSkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IFwKKyAgICAgICAgICAgIEpT
VmFsdWU6OmVuY29kZShfX3JwX3JldHVyblZhbHVlKTsgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfRU5EX0lNUEwo
ZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RXTygoY2FsbFRhcmdldCksIChleGVjKSkK
KworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBleGNlcHRpb25Ub1Rocm93KSBk
byB7ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3RfZXhlYyA9IChleGVj
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlv
biogX19jdF9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBKU0dsb2JhbERhdGEmIF9fY3RfZ2xvYmFsRGF0YSA9IChfX2N0X2V4ZWMpLT5nbG9i
YWxEYXRhKCk7ICAgICAgXAorICAgICAgICBfX2N0X2dsb2JhbERhdGEuZXhjZXB0aW9uID0gKGV4
Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0VO
RF9JTVBMKF9fY3RfZXhlYywgY2FsbFRvVGhyb3coX19jdF9leGVjLCBfX2N0X3BjKSk7IFwKKyAg
ICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihl
eGVjLCBwYykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUq
IF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBJbnN0cnVjdGlvbiogX19jY2VfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoX19jY2VfZXhlYy0+Z2xvYmFs
RGF0YSgpLmV4Y2VwdGlvbikpICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTExJTlRfQ0FM
TF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2NjZV9leGVjLCBfX2NjZV9wYykp
OyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9SRVRVUk4oZXhl
YywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhl
Y1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMgPSAocGMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9pZCogX19jcl9jYWxsVGFyZ2V0ID0g
KGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRf
Q0FMTF9DSEVDS19FWENFUFRJT04oX19jcl9leGVjLT5jYWxsZXJGcmFtZSgpLCBfX2NyX3BjKTsg
IFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NyX2V4ZWMsIF9fY3JfY2FsbFRhcmdl
dCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworZXh0ZXJuICJDIiBI
ZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0
cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIHByaW50Zigi
JXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkXG4iLAor
ICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0
aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJvbVdoZXJlLAor
ICAgICAgICAgICBvcGVyYW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQpOwor
ICAgIExMSU5UX0VORCgpOworfQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRf
dHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hl
cmUsIGludCBvcGVyYW5kKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKG9wZXJh
bmQpLmpzVmFsdWUoKTsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAg
ICB1aW50MzJfdCB0YWc7CisgICAgICAgICAgICB1aW50MzJfdCBwYXlsb2FkOworICAgICAgICB9
IGJpdHM7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlIGFzVmFsdWU7CisgICAgfSB1OworICAgIHUu
YXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBl
eGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWQ6ICUwOHg6JTA4eCIsCisg
ICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAg
ICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRl
ci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUsCisg
ICAgICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCwKKyAg
ICAgICAgICAgdS5iaXRzLnRhZywKKyAgICAgICAgICAgdS5iaXRzLnBheWxvYWQpOworI2lmbmRl
ZiBOREVCVUcKKyAgICBwcmludGYoIjogJXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRp
ZgorICAgIHByaW50ZigiXG4iKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0wodHJhY2VfcHJvbG9ndWUpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiBwcm9sb2d1
ZS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
c3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3Qg
Y2hhciogY29tbWVudCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEpTRnVu
Y3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2lu
ZCk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJs
ZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZVJlZ2lzdGVy
cyA9ICV1LlxuIiwKKyAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBjb21tZW50LCBjYWxsZWUs
IGV4ZWN1dGFibGUsCisgICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQorewor
ICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBwcm9sb2d1ZSIsIENvZGVGb3JD
YWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJv
bG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9n
dWUoZXhlYywgImNvbnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9j
YWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBhcml0eSBjaGVj
ayIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Q
cm9sb2d1ZShleGVjLCAiY29uc3RydWN0IGFyaXR5IGNoZWNrIiwgQ29kZUZvckNvbnN0cnVjdCk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKQoreworICAg
IHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgIiwKKyAgICAgICAgICAgZXhlYy0+
Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGlu
dHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7
CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50ZigiJXMsICIsIG9wY29kZU5hbWVzW2V4ZWMtPmds
b2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpXSk7Cisj
ZWxzZQorICAgIHByaW50Zigib3AjJXUsICIsIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRl
ci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpKTsKKyNlbmRpZgorICAgIHByaW50Zigic2Nv
cGUgJXBcbiIsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2UpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBl
eGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJldHVybiBQQyBpcyAlcFxuIiwK
KyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAg
ICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJl
dGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGV4ZWMtPnJldHVy
blBDKCkudmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2lubGluZSBib29sIHNob3Vs
ZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gWW91IGNhbiBtb2RpZnkgdGhpcyB0byB0
dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0aGUgd29ybGQuCisgICAgcmV0dXJu
IGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKTsKK30KKworZW51bSBFbnRyeUtpbmQgeyBQ
cm9sb2d1ZSwgQXJpdHlDaGVjayB9Oworc3RhdGljIEhlbHBlclJldHVyblR5cGUgZW50cnlPU1Io
RXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBj
b25zdCBjaGFyICpuYW1lLCBFbnRyeUtpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUoSklUX1ZFUkJP
U0VfT1NSKQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgJXMgd2l0aCBleGVjdXRlQ291bnRlciA9
ICVkXG4iLCBjb2RlQmxvY2ssIG5hbWUsIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigp
KTsKKyNlbmRpZgorICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGNv
ZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08o
MCwgZXhlYyk7CisgICAgfQorICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmds
b2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICBwcmlu
dGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICB9Cisg
ICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgaWYgKGtpbmQgPT0gUHJvbG9ndWUpCisgICAg
ICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7CisgICAgQVNTRVJUKGtpbmQgPT0gQXJpdHlDaGVjayk7
CisgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGVXaXRoQXJpdHlDaGVj
aygpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChl
bnRyeV9vc3IpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCBleGVjLT5jb2RlQmxv
Y2soKSwgImVudHJ5X29zciIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50
cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBw
YywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVk
Qnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsIiwg
UHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9u
KGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENv
ZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QiLCBQcm9s
b2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2Fs
bF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rp
b24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Io
Q29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2siLCBB
cml0eUNoZWNrKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMs
ICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5
dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOworfQorCitMTElOVF9IRUxQRVJfREVDTChs
b29wX29zcikKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50
ZXJlZCBsb29wX29zciB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywgY29k
ZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKCFz
aG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24o
KTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgCisgICAg
aWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVO
QUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50ZigiICAgIENvZGUgd2FzIGFscmVh
ZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxvY2stPmppdFNvb24o
KTsKKyAgICAKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQpOworICAgIAorICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+
IG1hcDsKKyAgICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKG1hcCk7CisgICAgQnl0
ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2VhcmNoPEJ5dGVjb2RlQW5k
TWFjaGluZU9mZnNldCwgdW5zaWduZWQsIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldDo6Z2V0Qnl0
ZWNvZGVJbmRleD4obWFwLmJlZ2luKCksIG1hcC5zaXplKCksIHBjIC0gY29kZUJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICBBU1NFUlQobWFwcGluZyk7CisgICAgQVNTRVJUKG1h
cHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocGMgLSBjb2Rl
QmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyAgICAKKyAgICB2b2lkKiBqdW1wVGFy
Z2V0ID0gY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCht
YXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQoanVtcFRhcmdldCk7Cisg
ICAgCisgICAgTExJTlRfUkVUVVJOX1RXTyhqdW1wVGFyZ2V0LCBleGVjKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0wocmVwbGFjZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMt
PmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJp
bnRmKCIlcDogRW50ZXJlZCByZXBsYWNlIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29k
ZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAK
KyAgICBpZiAoc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGlmICghY29kZUJsb2NrLT5qaXRD
b21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NS
KQorICAgICAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIp
OworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAg
fSBlbHNlCisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spCit7
CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIkNoZWNraW5nIHN0YWNrIGhl
aWdodCB3aXRoIGV4ZWMgPSAlcC5cbiIsIGV4ZWMpOworICAgIHByaW50ZigiQ29kZUJsb2NrID0g
JXAuXG4iLCBleGVjLT5jb2RlQmxvY2soKSk7CisgICAgcHJpbnRmKCJOdW0gY2FsbGVlIHJlZ2lz
dGVycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsK
KyAgICBwcmludGYoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1W
YXJzKTsKKyAgICBwcmludGYoIkN1cnJlbnQgZW5kIGlzIGF0ICVwLlxuIiwgZXhlYy0+Z2xvYmFs
RGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5lbmQoKSk7CisjZW5kaWYKKyAgICBB
U1NFUlQoJmV4ZWMtPnJlZ2lzdGVycygpW2V4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJl
Z2lzdGVyc10gPiBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgp
LmVuZCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRl
ci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2Nr
KCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxs
ZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRl
U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxs
ZXIoZXhlYyk7CisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihl
eGVjKTsKKyAgICB9CisgICAgTExJTlRfRU5EX0lNUEwoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBD
b21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5p
bnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDYWxsKTsKKyAgICBpZiAoIW5ld0V4
ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMt
Pmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7
CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAgTExJTlRf
UkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkp
LCBleGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIEV4
ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAm
ZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNv
bnN0cnVjdCk7CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxs
ZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRl
U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxs
ZXIoZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihz
dGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVS
Tl9UV08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVf
YWN0aXZhdGlvbikKK3sKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ3Jl
YXRpbmcgYW4gYWN0aXZhdGlvbiwgZXhlYyA9ICVwIVxuIiwgZXhlYyk7CisjZW5kaWYKKyAgICBK
U0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBKU0FjdGl2YXRpb246OmNyZWF0ZShleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMsIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWMtPmNv
ZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSkpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4o
ZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2YXRpb24pKTsKKyAgICBMTElOVF9SRVRVUk4o
SlNWYWx1ZShhY3RpdmF0aW9uKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVh
dGVfYXJndW1lbnRzKQoreworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1bWVu
dHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19F
WENFUFRJT04oKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFuZCkgPSBhcmd1
bWVudHM7CisgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIo
cGNbMV0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAgICBKU0Z1bmN0aW9uKiBj
b25zdHJ1Y3RvciA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIAorI2lmICFBU1NF
UlRfRElTQUJMRUQKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQVNTRVJU
KGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9y
LCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlmCisgICAgCisgICAg
U3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgSlNWYWx1ZSBwcm90byA9IExMSU5UX09QKDIpLmpz
VmFsdWUoKTsKKyAgICBpZiAocHJvdG8uaXNPYmplY3QoKSkKKyAgICAgICAgc3RydWN0dXJlID0g
YXNPYmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGVs
c2UKKyAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCktPmdsb2JhbE9iamVj
dC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oY29uc3Ry
dWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jb252ZXJ0X3RoaXMpCit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QKDEpLmpz
VmFsdWUoKTsKKyAgICBBU1NFUlQodjEuaXNQcmltaXRpdmUoKSk7CisgICAgTExJTlRfUkVUVVJO
KHYxLnRvVGhpc09iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXdfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpCit7CisgICAgTExJ
TlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4oJkxM
SU5UX09QKDIpKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9uZXdfYXJyYXlfYnVmZmVyKQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RBcnJh
eShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIocGNbMl0udS5vcGVyYW5k
KSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdf
cmVnZXhwKQoreworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlZ2V4
cChwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCisgICAgICAg
IExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIGZsYWcgc3VwcGxp
ZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2Jq
ZWN0OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4
cCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KQoreworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oIUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6ZXF1YWwoZXhl
YywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNW
YWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcykK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVlPihleGVjLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVy
KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPGZhbHNlPihleGVjLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJlX2luYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1
ZSgpLnRvTnVtYmVyKGV4ZWMpICsgMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJlX2RlYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1
ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cG9zdF9pbmMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCArIDEpOwor
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Bvc3RfZGVjKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1
bHQgLSAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIoLUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpCit7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsK
KyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVHJ5aW5nIHRvIGFk
ZCAlcyIsIHYxLmRlc2NyaXB0aW9uKCkpOworICAgIHByaW50ZigiIHRvICVzLlxuIiwgdjIuZGVz
Y3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNTdHJpbmcoKSAmJiAhdjIu
aXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5n
KHYxKSwgdjIudG9TdHJpbmcoZXhlYykpKTsKKyAgICAKKyAgICBpZiAodjEuaXNOdW1iZXIoKSAm
JiB2Mi5pc051bWJlcigpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIodjEuYXNOdW1i
ZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNBZGRTbG93
Q2FzZShleGVjLCB2MSwgdjIpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCkK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9O
dW1iZXIoZXhlYykgKiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKQoreworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAtIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9kaXYpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1i
ZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCkKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoZm1vZChMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJl
cihleGVjKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
TnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPDwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3JzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA+PiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJ
bnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdXJzaGlmdCkKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9VSW50
MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCkKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSAmIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2JpdG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIHwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQz
MihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKQoreworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4
ZWMpIF4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cih+TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQoreworICAgIEpTVmFsdWUgYmFz
ZVZhbCA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworI2lmbmRlZiBOREVCVUcKKyAgICBUeXBl
SW5mbyB0eXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VSVCghYmFzZVZhbC5pc09i
amVjdCgpCisgICAgICAgICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVjdChiYXNlVmFsKS0+c3Ry
dWN0dXJlKCktPnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKTsKKyNlbmRpZgor
ICAgIExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4ZWMsICJpbnN0YW5jZW9m
IiwgYmFzZVZhbCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZikK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbnN0YW5j
ZU9mU2xvdyhleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoNCkuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfdHlwZW9mKQoreworICAgIExMSU5UX1JFVFVSTihqc1R5cGVTdHJpbmdGb3JWYWx1
ZShleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaXNfdW5kZWZpbmVkKQoreworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QX0MoMiku
anNWYWx1ZSgpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4odi5pc0NlbGwoKSA/IHYuYXND
ZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSA6
IHYuaXNVbmRlZmluZWQoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9v
bGVhbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLmlzQm9vbGVhbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1i
ZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KS5pc051bWJlcigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19zdHJpbmcp
Cit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihpc0pTU3RyaW5nKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KQor
eworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc09iamVjdFR5cGUoTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlv
bikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUoTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbikK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihleGVj
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKQoreworICAgIExMSU5UX1JFVFVS
Tl9QUk9GSUxFRChvcF9yZXNvbHZlLCBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZShleGVjLCBl
eGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApCit7CisgICAgTExJTlRfUkVUVVJO
X1BST0ZJTEVEKAorICAgICAgICBvcF9yZXNvbHZlX3NraXAsCisgICAgICAgIENvbW1vblNsb3dQ
YXRoczo6b3BSZXNvbHZlU2tpcCgKKyAgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgICBleGVj
LT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAgICAgICAgICAg
cGNbM10udS5vcGVyYW5kKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlIHJlc29sdmVHbG9iYWwoRXhl
Y1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5p
c0dsb2JhbE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkgPSBwY1syXS51Lm9wZXJhbmQ7Cisg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICAK
KyAgICBBU1NFUlRfVU5VU0VEKHN0cnVjdHVyZSwgc3RydWN0dXJlICE9IGdsb2JhbE9iamVjdC0+
c3RydWN0dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5p
ZGVudGlmaWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3Qp
OworICAgIAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVu
dCwgc2xvdCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGV4ZWMs
IGlkZW50KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmICFnbG9iYWxP
YmplY3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAg
ICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICBwY1sz
XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsK
KyAgICAgICAgICAgIHBjWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywg
aWRlbnQpOworICAgIHJldHVybiBKU1ZhbHVlKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9yZXNvbHZlX2dsb2JhbCkKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVz
b2x2ZV9nbG9iYWwsIHJlc29sdmVHbG9iYWwoZXhlYywgcGMpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfUkVUVVJO
X1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIHJlc29sdmVHbG9iYWwoZXhlYywg
cGMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29sdmVf
Z2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVf
Z2xvYmFsX2R5bmFtaWMsIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNv
ZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSkKK3sKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9
IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYg
KHBjWzNdLnUub3BlcmFuZCkgeworICAgICAgICBKU1ZhbHVlIGJhc2UgPSBKU0M6OnJlc29sdmVC
YXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIHRydWUpOworICAgICAgICBpZiAo
IWJhc2UpCisgICAgICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9i
YWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgICAgICBMTElOVF9SRVRV
Uk4oYmFzZSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNv
bHZlX2Jhc2UsIEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4o
KSwgZmFsc2UpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0
eV9leGlzdHMpCit7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KExMSU5UX09QKDEp
LmpzVmFsdWUoKSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKKyAgICBJZGVudGlm
aWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFu
ZCk7CisgICAgaWYgKCFvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkp
CisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1l
bnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKK3sKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aEJhc2UoZXhlYywgZXhlYy0+Y29k
ZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0OworICAg
IC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcsIGJ1dCB3ZSBkb24n
dCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCit7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhUaGlzKGV4ZWMs
IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09Q
KDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJl
c3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5nLCBi
dXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4KKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCkKK3sKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZp
ZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAg
SlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0
eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUu
Z2V0KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAg
ICBMTElOVF9PUCgxKSA9IHJlc3VsdDsKKworICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAg
ICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCisgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9
PSBiYXNlVmFsdWUKKyAgICAgICAgJiYgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9w
ZXJ0eVNsb3Q6OlZhbHVlKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0g
YmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VD
ZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1Vu
Y2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5m
bygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpKSB7CisgICAgICAgICAgICBwY1s0XS51LnN0
cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcGNbNV0udS5v
cGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAg
fQorICAgIH0KKyAgICAKKyAgICBwY1tPUENPREVfTEVOR1RIKG9wX2dldF9ieV9pZCkgLSAxXS51
LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19s
ZW5ndGgpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsK
KyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9w
ZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOwor
ICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisgICAgTExJTlRfUkVUVVJOKGJhc2VW
YWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3B1dF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVC
bG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBj
WzJdLnUub3BlcmFuZCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlzU3Ry
aWN0TW9kZSgpKTsKKyAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAgICBhc09iamVjdChi
YXNlVmFsdWUpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFzZVZhbHVlLnB1dChl
eGVjLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAg
ICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJh
c2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RydWN0
dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0dXJl
LT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpCisgICAgICAgICAgICAmJiBi
YXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAo
c2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgeworICAgICAgICAg
ICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZp
b3VzSUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPnByb3BlcnR5
U3RvcmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBuZWVk
ZWQgYmVjYXVzZSBzb21lIG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKKyAgICAgICAgICAgICAgICAg
ICAgLy8gYmVsb3cgbWF5IEdDLgorICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9
IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisKKyAgICAgICAgICAg
ICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJl
dmlvdXNJRCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1
Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkg
KiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3RydWN0dXJl
LnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAg
U3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsK
KyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsKKyAgICAgICAgICAgICAgICAgICAg
cGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVj
LT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNoYWluKTsKKyAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJh
bmQpCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2Rl
ID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0
X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAg
ICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90
LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIGlmIChmYWxzZSAmJiAhc3RyY21wKGlkZW50LmFzY2lpKCku
ZGF0YSgpLCAicmVuZGVyUmVmbGVjdGlvbnMiKSkKKyAgICAgICAgcHJpbnRmKCJGaW5pc2hpbmcg
YWNjZXNzIHRvIHJlbmRlclJlZmxlY3Rpb25zIGZyb20gTExJbnQgc2xvdyBwYXRoLlxuIik7Cisg
ICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxf
YnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsK
KyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvT2Jq
ZWN0KGV4ZWMpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJs
ZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBjb2RlQmxvY2stPmlkZW50aWZp
ZXIocGNbM10udS5vcGVyYW5kKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
aWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBM
TElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVy
dHkuIikpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKwor
aW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1
ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCit7CisgICAgaWYgKExJS0VMWShiYXNlVmFsdWUuaXNDZWxs
KCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHJlc3Vs
dCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KGV4ZWMsIGFzU3RyaW5n
KHN1YnNjcmlwdCktPnZhbHVlKGV4ZWMpKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorICAgIAorICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgeworICAgICAgICB1aW50
MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTU3RyaW5nKGJh
c2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgoaSkpCisgICAgICAg
ICAgICByZXR1cm4gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAg
ICAgIAorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5
KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzQnl0
ZUFycmF5KGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAg
cmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgaSk7CisgICAgfQorICAgIAorICAgIElkZW50aWZp
ZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7
CisgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVydHkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJPRklM
RUQob3BfZ2V0X2J5X3ZhbCwgZ2V0QnlWYWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9nZXRfYXJndW1lbnRfYnlfdmFsKQoreworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gTExJTlRf
T1AoMikuanNWYWx1ZSgpOworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAgICAgIGFyZ3VtZW50
cyA9IEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYyk7CisgICAgICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBMTElOVF9PUCgyKSA9IGFyZ3VtZW50
czsKKyAgICAgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIo
cGNbMl0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgfQorICAgIAorICAgIExMSU5UX1JF
VFVSTihnZXRCeVZhbChleGVjLCBhcmd1bWVudHMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpCit7CisgICAgTExJ
TlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1Ao
MykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFs
KQoreworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsK
KyAgICAKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOwor
ICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB2YWx1ZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAgIGlmIChMSUtF
TFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3Jp
cHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUpKSB7CisgICAg
ICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOworICAgICAgICAg
ICAgaWYgKGpzQXJyYXktPmNhblNldEluZGV4KGkpKQorICAgICAgICAgICAgICAgIGpzQXJyYXkt
PnNldEluZGV4KGdsb2JhbERhdGEsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4KGpzQXJyYXksIGV4ZWMsIGksIHZhbHVlKTsK
KyAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICB9CisgICAgICAgIGlmIChpc0pTQnl0
ZUFycmF5KGJhc2VWYWx1ZSkKKyAgICAgICAgICAgICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSkt
PmNhbkFjY2Vzc0luZGV4KGkpKSB7CisgICAgICAgICAgICBKU0J5dGVBcnJheSoganNCeXRlQXJy
YXkgPSBhc0J5dGVBcnJheShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYgKHZhbHVlLmlzSW50
MzIoKSkgeworICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5h
c0ludDMyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5
dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNOdW1iZXIoKSk7CisgICAgICAgICAgICAgICAg
TExJTlRfRU5EKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYmFzZVZhbHVl
LnB1dChleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAK
KyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgYmFz
ZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCkKK3sKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBi
YXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIAorICAgIEpTVmFsdWUg
c3Vic2NyaXB0ID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisgICAgYm9vbCBjb3Vs
ZERlbGV0ZTsKKyAgICAKKyAgICB1aW50MzJfdCBpOworICAgIGlmIChzdWJzY3JpcHQuZ2V0VUlu
dDMyKGkpKQorICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNlT2JqZWN0LCBleGVjLCBpKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIElkZW50aWZpZXIgcHJv
cGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAg
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VP
YmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMsIHBy
b3BlcnR5KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBleGVjLT5jb2Rl
QmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVF
cnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgCisgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHV0X2J5X2luZGV4KQoreworICAgIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnB1
dChleGVjLCBwY1syXS51Lm9wZXJhbmQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIpCit7
CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09i
amVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRl
bnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9w
ZXJhbmQpOworICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7Cisg
ICAgYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lR2V0dGVyKGJhc2VPYmosIGV4ZWMsIGlk
ZW50LCBhc09iamVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpCit7CisgICAgQVNT
RVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFz
ZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgSWRlbnRpZmllciYg
aWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOwor
ICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgYmFzZU9i
ai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lU2V0dGVyKGJhc2VPYmosIGV4ZWMsIGlkZW50LCBhc09i
amVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpCit7CisgICAgdW5zaWduZWQgY291
bnQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgU2NvcGVDaGFpbk5vZGUqIHRtcCA9IGV4ZWMtPnNj
b3BlQ2hhaW4oKTsKKyAgICB3aGlsZSAoY291bnQtLSkKKyAgICAgICAgdG1wID0gdG1wLT5wb3Ao
KTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKHRtcCk7CisgICAgcGMgKz0gcGNbMl0udS5vcGVy
YW5kOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRy
dWUpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2p0cnVlLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZhbHNl
KQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZmFsc2UsICFMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3Mp
Cit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzLCBqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVz
cywgIWpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVy
KQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlciwganNMZXNzPGZhbHNlPihleGVjLCBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0go
b3Bfam5ncmVhdGVyLCAhanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2psZXNzZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEsIGpzTGVzc0VxPHRy
dWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpCit7CisgICAgTExJ
TlRfQlJBTkNIKG9wX2pubGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygx
KS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRl
cmVxLCBqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdy
ZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEsICFqc0xlc3NFcTxm
YWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1
ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKQoreworICAg
IEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJU
KHNjcnV0aW5lZS5pc0RvdWJsZSgpKTsKKyAgICBkb3VibGUgdmFsdWUgPSBzY3J1dGluZWUuYXNE
b3VibGUoKTsKKyAgICBpbnQzMl90IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFs
dWUpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlmICh2
YWx1ZSA9PSBpbnRWYWx1ZSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMt
PmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2RlQmxvY2stPmltbWVkaWF0ZVN3aXRjaEp1
bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGludFZhbHVlLCBkZWZhdWx0
T2Zmc2V0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcp
Cit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAg
ICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAoIXNjcnV0aW5l
ZS5pc1N0cmluZygpKQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIGVsc2Ugewor
ICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAg
ICBwYyArPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQp
Lm9mZnNldEZvclZhbHVlKGFzU3RyaW5nKHNjcnV0aW5lZSktPnZhbHVlKGV4ZWMpLmltcGwoKSwg
ZGVmYXVsdE9mZnNldCk7CisgICAgfQorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmV3X2Z1bmMpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEZ1
bmN0aW9uQ29kZQorICAgICAgICAgICB8fCAhY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWlu
KCkKKyAgICAgICAgICAgfHwgZXhlYy0+dW5jaGVja2VkUihjb2RlQmxvY2stPmFjdGl2YXRpb25S
ZWdpc3RlcigpKS5qc1ZhbHVlKCkpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJp
bnRmKCJDcmVhdGluZyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJTlRfUkVUVVJOKGNv
ZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzJdLnUub3BlcmFuZCktPm1ha2UoZXhlYywgZXhlYy0+
c2NvcGVDaGFpbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19l
eHApCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIo
cGNbMl0udS5vcGVyYW5kKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVuY3Rpb24tPm1ha2Uo
ZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICAKKyAgICBpZiAoIWZ1bmN0aW9uLT5uYW1l
KCkuaXNOdWxsKCkpIHsKKyAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25TY29w
ZU9iamVjdCA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBmdW5jdGlvbi0+bmFt
ZSgpLCBmdW5jLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBmdW5jLT5zZXRTY29w
ZShleGVjLT5nbG9iYWxEYXRhKCksIGZ1bmMtPnNjb3BlKCktPnB1c2goZnVuY3Rpb25TY29wZU9i
amVjdCkpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZnVuYyk7Cit9CisKK3N0YXRp
YyBIZWxwZXJSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwg
SW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7
CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKwor
ICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBl
eGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CisKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2Fs
bCkgeworICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBnZXRDYWxsRGF0YShjYWxsZWUsIGNhbGxEYXRhKTsKKyAgICAKKyAgICAgICAgQVNTRVJU
KGNhbGxUeXBlICE9IENhbGxUeXBlSlMpOworICAgIAorICAgICAgICBpZiAoY2FsbFR5cGUgPT0g
Q2FsbFR5cGVIb3N0KSB7CisgICAgICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVl
KSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxs
ZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7
CisgICAgICAgIH0KKyAgICAgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAgICAg
cHJpbnRmKCJDYWxsIGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNj
cmlwdGlvbigpKTsKKyNlbmRpZgorCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlw
ZU5vbmUpOworICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBRnVu
Y3Rpb25FcnJvcihleGVjLCBjYWxsZWUpKTsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBD
b2RlRm9yQ29uc3RydWN0KTsKKyAgICAKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7
CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShjYWxs
ZWUsIGNvbnN0cnVjdERhdGEpOworICAgIAorICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENv
bnN0cnVjdFR5cGVKUyk7CisgICAgCisgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0
VHlwZUhvc3QpIHsKKyAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7
CisgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9j
YXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgfQorICAgIAorI2lmIExM
SU5UX0hFTFBFUl9UUkFDSU5HCisgICAgICAgIHByaW50ZigiQ29uc3RydWN0b3IgY2FsbGVlIGlz
IG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisK
KyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSk7CisgICAgTExJ
TlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywg
Y2FsbGVlKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3Rh
dGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kLCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8gPSAwKQoreworICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0
aW9uKGNhbGxlZUFzVmFsdWUpOworICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCisgICAg
ICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwg
a2luZCk7CisgICAgCisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsZWVB
c0Z1bmN0aW9uQ2VsbCk7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihjYWxsZWUtPnNj
b3BlVW5jaGVja2VkKCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVl
LT5leGVjdXRhYmxlKCk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOworICAgIGlmIChleGVjdXRhYmxlLT5pc0hv
c3RGdW5jdGlvbigpKQorICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklU
Q29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIGVsc2UgeworICAgICAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5j
dGlvbkV4ZWN1dGFibGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29wZSgpLCBr
aW5kKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhl
eGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOworICAgICAgICBjb2RlQmxvY2sg
PSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICAg
ICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSkpCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5n
ZW5lcmF0ZWRKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVG
b3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICB9CisgICAgCisgICAgaWYgKGNhbGxMaW5r
SW5mbykgeworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLT5pc09uTGlzdCgpKQorICAgICAgICAg
ICAgY2FsbExpbmtJbmZvLT5yZW1vdmUoKTsKKyAgICAgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVy
ID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5jYWxs
ZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+Y29kZUJsb2NrKCkt
Pm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPmxhc3RT
ZWVuQ2FsbGVlLnNldChleGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4ZWNDYWxsZXItPmNvZGVC
bG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAgICAgY2FsbExpbmtJbmZv
LT5tYWNoaW5lQ29kZVRhcmdldCA9IGNvZGVQdHI7CisgICAgICAgIGlmIChjb2RlQmxvY2spCisg
ICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbExpbmtJbmZvKTsKKyAg
ICB9CisgICAgCisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIGNvZGVQdHIu
ZXhlY3V0YWJsZUFkZHJlc3MoKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIGdlbmVy
aWNDYWxsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBh
IGNhbGwgZnJhbWUuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGls
ZSBpdCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBJZiBwb3NzaWJsZSwgbGluayB0aGUgY2FsbCdz
IGlubGluZSBjYWNoZS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBh
ZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVl
IGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIAorICAgIGV4
ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFuZCk7
CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxs
ZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIAor
ICAgIEFTU0VSVChwY1s0XS51LmNhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJuIHNldFVwQ2FsbChl
eGVjQ2FsbGVlLCBwYywga2luZCwgY2FsbGVlQXNWYWx1ZSwgcGNbNF0udS5jYWxsTGlua0luZm8p
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCkKK3sKKyAgICByZXR1cm4gZ2Vu
ZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDYWxsKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENv
ZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJh
cmdzKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZy
YW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4KKyAgICAvLyAtIEZp
Z3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAv
LyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRo
ZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBs
b2FkVmFyYXJncygKKyAgICAgICAgZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRl
ci0+cmVnaXN0ZXJGaWxlKCksCisgICAgICAgIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5vcGVyYW5kKTsKKyAgICBMTElOVF9DQUxMX0NI
RUNLX0VYQ0VQVElPTihleGVjLCBwYyk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2Vk
UihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUt
PnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxl
OjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90PihwYyArIE9QQ09E
RV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSk7CisgICAgCisgICAgcmV0dXJuIHNldFVwQ2FsbChl
eGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKQoreworICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1
ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxs
ZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnNl
dENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJG
aWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNo
YWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMoYml0
d2lzZV9jYXN0PEluc3RydWN0aW9uKj4oJmxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7Cisg
ICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworICAgIGV4ZWMtPnVuY2hlY2tlZFIoUmVn
aXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90Pihw
YyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7CisgICAgCisgICAgaWYgKCFpc0hvc3RG
dW5jdGlvbihjYWxsZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpCisgICAgICAgIHJldHVybiBz
ZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKKyAg
ICAKKyAgICBnbG9iYWxEYXRhLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBldmFsKGV4ZWNDYWxsZWUp
OworICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0
PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQoreworICAgIEFTU0VSVChleGVjLT5jb2RlQmxv
Y2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBKU1ZhbHVlIGFjdGl2YXRpb25WYWx1
ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFjdGl2YXRpb25WYWx1ZSkgewor
ICAgICAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1l
bnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKSB7CisgICAgICAgICAgICBp
ZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICBh
c0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAgfQorICAgICAgICBMTElOVF9F
TkQoKTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0aW9u
KGFjdGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihleGVjLT5nbG9iYWxE
YXRhKCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRB
cmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpCisgICAgICAgIGFz
QXJndW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGFj
dGl2YXRpb24pOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfdGVhcl9vZmZfYXJndW1lbnRzKQoreworICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+
dXNlc0FyZ3VtZW50cygpICYmICFleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFp
bigpKTsKKyAgICBhc0FyZ3VtZW50cyhleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVu
dHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpLT50ZWFyT2ZmKGV4ZWMpOwor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KQor
eworICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhleGVjLCAmTExJTlRfT1AoMiksIHBjWzNdLnUu
b3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZlKQor
eworICAgIExMSU5UX1JFVFVSTihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1ByaW1pdGl2ZShl
eGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKQoreworICAg
IEpTVmFsdWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAodi5pc1VuZGVmaW5l
ZE9yTnVsbCgpKSB7CisgICAgICAgIHBjICs9IHBjWzVdLnUub3BlcmFuZDsKKyAgICAgICAgTExJ
TlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVj
KTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVjdHVyZSgpOworICAgIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBzdHJ1Y3R1cmUtPmVu
dW1lcmF0aW9uQ2FjaGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlOYW1lSXRlcmF0b3IgfHwganNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4oKSAhPSBzdHJ1Y3R1cmUt
PnByb3RvdHlwZUNoYWluKGV4ZWMpKQorICAgICAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0g
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8pOworICAgIAorICAgIExMSU5U
X09QKDEpID0gSlNWYWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKKyAgICBMTElOVF9PUCgy
KSA9IEpTVmFsdWUobyk7CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rlcjo6d2l0aEludCgwKTsK
KyAgICBMTElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJvcGVydHlOYW1lSXRlcmF0
b3ItPnNpemUoKSk7CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcG5hbWVz
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRf
cG5hbWUpCit7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChMTElOVF9PUCgyKS5qc1Zh
bHVlKCkpOworICAgIEpTU3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3RyaW5nKExMSU5UX09QKDEpLmpz
VmFsdWUoKSk7CisgICAgaWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhl
YywgcHJvcGVydHktPnZhbHVlKGV4ZWMpKSkpIHsKKyAgICAgICAgLy8gR28gdG8gdGFyZ2V0Lgor
ICAgICAgICBwYyArPSBwY1s2XS51Lm9wZXJhbmQ7CisgICAgfSAvLyBFbHNlLCBkb24ndCBjaGFu
Z2UgdGhlIFBDLCBzbyB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxvb3AuCisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKQoreworICAgIEpT
VmFsdWUgdiA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogbyA9IHYudG9P
YmplY3QoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgTExJ
TlRfT1AoMSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigp
LT5wdXNoKG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3BvcF9zY29wZSkKK3sKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNj
b3BlQ2hhaW4oKS0+cG9wKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogc2NvcGUgPSBKU1N0YXRpY1Njb3Bl
T2JqZWN0OjpjcmVhdGUoZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFu
ZCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgRG9udERlbGV0ZSk7CisgICAgZXhlYy0+c2V0U2Nv
cGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goc2NvcGUpKTsKKyAgICBMTElOVF9SRVRV
Uk4oc2NvcGUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpCit7CisgICAg
TExJTlRfVEhST1coTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQoreworICAgIExMSU5UX1RIUk9XKGNy
ZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVi
dWcpCit7CisgICAgaW50IGRlYnVnSG9va0lEID0gcGNbMV0udS5vcGVyYW5kOworICAgIGludCBm
aXJzdExpbmUgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaW50IGxhc3RMaW5lID0gcGNbM10udS5v
cGVyYW5kOworICAgIAorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+ZGVidWco
ZXhlYywgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBs
YXN0TGluZSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJv
ZmlsZXJSZWZlcmVuY2UoKSktPndpbGxFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUo
KSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9m
aWxlX2RpZF9jYWxsKQoreworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5j
ZSgpKS0+ZGlkRXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExMSU5U
X0VORCgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBl
cnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxw
ZXJzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRI
ZWxwZXJzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRIZWxwZXJzX2gKKyNk
ZWZpbmUgTExJbnRIZWxwZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNw
YWNlIExMSW50IHsKKwordHlwZWRlZiBpbnQ2NF90IEhlbHBlclJldHVyblR5cGU7CisKK2V4dGVy
biAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSosIElu
c3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworZXh0ZXJuICJDIiBIZWxw
ZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwg
aW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworCisjZGVmaW5lIExMSU5UX0hFTFBFUl9ERUNM
KG5hbWUpIFwKKyAgICBleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfIyNuYW1lKEV4
ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFj
ZV9wcm9sb2d1ZSk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9m
b3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwp
OworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKHRyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2Up
OworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5
X29zcl9mdW5jdGlvbl9mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bf
b3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpOworTExJTlRfSEVMUEVSX0RFQ0wocmVn
aXN0ZXJfZmlsZV9jaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0eUNo
ZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2NyZWF0ZV90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25ld19hcnJheSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5X2J1
ZmZlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJp
Y3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVxKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2dyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2luYyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cG9zdF9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bmVnYXRlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX211bCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9kaXYpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9yc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2JpdGFuZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3Ip
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcik7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfYml0bm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFu
Y2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3R5cGVvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZp
bmVkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9pc19udW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0
cmluZyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4p
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Jlc29sdmVfc2tpcCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9n
bG9iYWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5
bmFtaWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfd2l0aF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfaWQp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2RlbF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRf
YnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfdmFsKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3B1dF9nZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2p0cnVlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2psZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3Mp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbmdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfc3dpdGNoX2NoYXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9z
dHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Nh
bGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY2FsbF92YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxs
X2V2YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfc3RyY2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmlt
aXRpdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1
c2hfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Rocm93KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJy
b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJv
ZmlsZV9kaWRfY2FsbCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYg
Ly8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRIZWxwZXJzX2gKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxp
bmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50T2ZmbGluZUFz
bUNvbmZpZ19oCisjZGVmaW5lIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisKKyNpbmNsdWRlICJM
TEludENvbW1vbi5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisKKyNpZiBDUFUoWDg2KQorI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMQor
I2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDAKKyNlbmRpZgorCisjaWYgQ1BVKEFSTXY3
KQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FT
TV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyNkZWZpbmUgT0ZGTElO
RV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJU
X0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUoQklHX0VORElBTikKKyNkZWZpbmUgT0ZGTElO
RV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFO
IDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKExMSU5UX09TUl9UT19KSVQpCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFC
TEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcKKyNkZWZpbmUgT0ZG
TElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01f
RVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisKKyNlbmRpZiAvLyBMTEludE9mZmxpbmVBc21D
b25maWdfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRl
ICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkludGVycHJldGVy
LmgiCisjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVk
ZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFs
RGF0YS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJp
bmcuaCIKKyNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCisjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVj
dC5oIgorI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNv
bmZpZy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJGaWxl
LmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2lu
Y2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmlu
ZSBPRkZMSU5FX0FTTV9PRkZTRVRPRihjbGF6eiwgZmllbGQpIE9CSkVDVF9PRkZTRVRPRihjbGF6
eiwgZmllbGQpCisKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvciB7CitwdWJsaWM6CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkKiBkdW1teSgpOworfTsKKworY29uc3QgdW5zaWduZWQqIExM
SW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKQoreworI2luY2x1ZGUgIkxMSW50RGVzaXJlZE9m
ZnNldHMuaCIKKyAgICByZXR1cm4gZXh0cmFjdG9yVGFibGU7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCitpbnQgbWFpbihpbnQsIGNoYXIqKikKK3sKKyAgICAvLyBPdXQgb2YgYW4gYWJ1bmRh
bmNlIG9mIGNhdXRpb24sIG1ha2Ugc3VyZSB0aGF0IExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVt
bXkoKSBpcyBsaXZlLAorICAgIC8vIGFuZCB0aGUgZXh0cmFjdG9yVGFibGUgaXMgbGl2ZSwgdG9v
LgorICAgIHByaW50ZigiJXBcbiIsIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgp
KTsKKyAgICByZXR1cm4gMDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNp
bmNsdWRlICJKU0ludGVyZmFjZUpJVC5oIgorI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNs
dWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2Ug
TExJbnQgeworCitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRo
SnVtcFRvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgdm9pZCAoKnRhcmdldCkoKSkKK3sKKyAg
ICBKU0ludGVyZmFjZUpJVCBqaXQ7CisgICAgCisgICAgLy8gRklYTUU6IHRoZXJlJ3MgcHJvYmFi
bHkgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0IG9uIFg4NiwgYnV0IEknbSBub3Qgc3VyZSBJIGNhcmUu
CisgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0
PHZvaWQqPih0YXJnZXQpKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICBqaXQuanVtcChK
U0ludGVyZmFjZUpJVDo6cmVnVDApOworICAgIAorICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIo
Kmdsb2JhbERhdGEsICZqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIHBhdGNoQnVm
ZmVyLmZpbmFsaXplQ29kZSgpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25G
b3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7Cisg
ICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0
aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8o
Z2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOworfQorCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtH
ZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0
ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X2FyaXR5X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5r
R2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZXZhbF9wcm9sb2d1ZSk7Cit9CisK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRv
KGdsb2JhbERhdGEsIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpOworfQorCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBMTEludFRodW5rc19oCisjZGVmaW5lIExMSW50VGh1bmtzX2gKKworI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiTWFjcm9B
c3NlbWJsZXJDb2RlUmVmLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0dsb2JhbERh
dGE7CisKK25hbWVzcGFjZSBMTEludCB7CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlv
bkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2Jh
bERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNr
VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxE
YXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3Io
SlNHbG9iYWxEYXRhKik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYg
Ly8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRUaHVua3NfaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMzgwIEBACisjIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyMgQ3Jhc2ggY291cnNlIG9uIHRoZSBs
YW5ndWFnZSB0aGF0IHRoaXMgaXMgd3JpdHRlbiBpbiAod2hpY2ggSSBqdXN0IGNhbGwKKyMgImFz
c2VtYmx5IiBldmVuIHRob3VnaCBpdCdzIG1vcmUgdGhhbiB0aGF0KToKKyMKKyMgLSBNb3N0bHkg
Z2FzLXN0eWxlIG9wZXJhbmQgb3JkZXJpbmcuIFRoZSBsYXN0IG9wZXJhbmQgdGVuZHMgdG8gYmUg
dGhlCisjICAgZGVzdGluYXRpb24uIFNvICJhIDo9IGIiIGlzIHdyaXR0ZW4gYXMgIm1vdiBiLCBh
Ii4gQnV0IHVubGlrZSBnYXMsCisjICAgY29tcGFyaXNvbnMgYXJlIGluLW9yZGVyLCBzbyAiaWYg
KGEgPCBiKSIgaXMgd3JpdHRlbiBhcworIyAgICJiaWx0IGEsIGIsIC4uLiIuCisjCisjIC0gImIi
ID0gYnl0ZSwgImgiID0gMTYtYml0IHdvcmQsICJpIiA9IDMyLWJpdCB3b3JkLCAicCIgPSBwb2lu
dGVyLgorIyAgIEN1cnJlbnRseSB0aGlzIGlzIGp1c3QgMzItYml0IHNvICJpIiBhbmQgInAiIGFy
ZSBpbnRlcmNoYW5nZWFibGUKKyMgICBleGNlcHQgd2hlbiBhbiBvcCBzdXBwb3J0cyBvbmUgYnV0
IG5vdCB0aGUgb3RoZXIuCisjCisjIC0gSW4gZ2VuZXJhbCwgdmFsaWQgb3BlcmFuZHMgZm9yIG1h
Y3JvIGludm9jYXRpb25zIGFuZCBpbnN0cnVjdGlvbnMgYXJlCisjICAgcmVnaXN0ZXJzIChlZyAi
dDAiKSwgYWRkcmVzc2VzIChlZyAiNFt0MF0iKSwgYmFzZS1pbmRleCBhZGRyZXNzZXMKKyMgICAo
ZWcgIjdbdDAsIHQxLCAyXSIpLCBhYnNvbHV0ZSBhZGRyZXNzZXMgKGVnICIweGEwMDAwMDAwW10i
KSwgb3IgbGFiZWxzCisjICAgKGVnICJfZm9vIiBvciAiLmZvbyIpLiBNYWNybyBpbnZvY2F0aW9u
cyBjYW4gYWxzbyB0YWtlIGFub255bW91cworIyAgIG1hY3JvcyBhcyBvcGVyYW5kcy4gSW5zdHJ1
Y3Rpb25zIGNhbm5vdCB0YWtlIGFub255bW91cyBtYWNyb3MuCisjCisjIC0gTGFiZWxzIG11c3Qg
aGF2ZSBuYW1lcyB0aGF0IGJlZ2luIHdpdGggZWl0aGVyICJfIiBvciAiLiIuICBBICIuIiBsYWJl
bAorIyAgIGlzIGxvY2FsIGFuZCBnZXRzIHJlbmFtZWQgYmVmb3JlIGNvZGUgZ2VuIHRvIG1pbmlt
aXplIG5hbWVzcGFjZQorIyAgIHBvbGx1dGlvbi4gQSAiXyIgbGFiZWwgaXMgYW4gZXh0ZXJuIHN5
bWJvbCAoaS5lLiAiLmdsb2JsIikuIFRoZSAiXyIKKyMgICBtYXkgb3IgbWF5IG5vdCBiZSByZW1v
dmVkIGR1cmluZyBjb2RlIGdlbiBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgYXNtCisjICAgY29u
dmVudGlvbnMgZm9yIEMgbmFtZSBtYW5nbGluZyBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtIG1hbmRh
dGUgYSAiXyIKKyMgICBwcmVmaXguCisjCisjIC0gQSAibWFjcm8iIGlzIGEgbGFtYmRhIGV4cHJl
c3Npb24sIHdoaWNoIG1heSBiZSBlaXRoZXIgYW5vbnltb3VzIG9yCisjICAgbmFtZWQuIEJ1dCB0
aGlzIGhhcyBjYXZlYXRzLiAibWFjcm8iIGNhbiB0YWtlIHplcm8gb3IgbW9yZSBhcmd1bWVudHMs
CisjICAgd2hpY2ggbWF5IGJlIG1hY3JvcyBvciBhbnkgdmFsaWQgb3BlcmFuZHMsIGJ1dCBpdCBj
YW4gb25seSByZXR1cm4KKyMgICBjb2RlLiBCdXQgeW91IGNhbiBkbyBUdXJpbmctY29tcGxldGUg
dGhpbmdzIHZpYSBjb250aW51YXRpb24gcGFzc2luZworIyAgIHN0eWxlOiAibWFjcm8gZm9vIChh
LCBiKSBiKGEpIGVuZCBmb28oZm9vLCBmb28pIi4gQWN0dWFsbHksIGRvbid0IGRvCisjICAgdGhh
dCwgc2luY2UgeW91J2xsIGp1c3QgY3Jhc2ggdGhlIGFzc2VtYmxlci4KKyMKKyMgLSBBbiAiaWYi
IGlzIGEgY29uZGl0aW9uYWwgb24gc2V0dGluZ3MuIEFueSBpZGVudGlmaWVyIHN1cHBsaWVkIGlu
IHRoZQorIyAgIHByZWRpY2F0ZSBvZiBhbiAiaWYiIGlzIGFzc3VtZWQgdG8gYmUgYSAjZGVmaW5l
IHRoYXQgaXMgYXZhaWxhYmxlCisjICAgZHVyaW5nIGNvZGUgZ2VuLiBTbyB5b3UgY2FuJ3QgdXNl
ICJpZiIgZm9yIGNvbXB1dGF0aW9uIGluIGEgbWFjcm8sIGJ1dAorIyAgIHlvdSBjYW4gdXNlIGl0
IHRvIHNlbGVjdCBkaWZmZXJlbnQgcGllY2VzIG9mIGNvZGUgZm9yIGRpZmZlcmVudAorIyAgIHBs
YXRmb3Jtcy4KKyMKKyMgLSBBcmd1bWVudHMgdG8gbWFjcm9zIGZvbGxvdyBsZXhpY2FsIHNjb3Bp
bmcgcmF0aGVyIHRoYW4gZHluYW1pYyBzY29waW5nLgorIyAgIENvbnN0J3MgYWxzbyBmb2xsb3cg
bGV4aWNhbCBzY29waW5nIGFuZCBtYXkgb3ZlcnJpZGUgKGhpZGUpIGFyZ3VtZW50cworIyAgIG9y
IG90aGVyIGNvbnN0cy4gQWxsIHZhcmlhYmxlcyAoYXJndW1lbnRzIGFuZCBjb25zdGFudHMpIGNh
biBiZSBib3VuZAorIyAgIHRvIG9wZXJhbmRzLiBBZGRpdGlvbmFsbHksIGFyZ3VtZW50cyAoYnV0
IG5vdCBjb25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAgIHRvIG1hY3Jvcy4KKworCisjIFRoZXNl
IGRlY2xhcmF0aW9ucyBtdXN0IG1hdGNoIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oLgorY29u
c3QgQ2FsbEZyYW1lSGVhZGVyU2l6ZSA9IDQ4Citjb25zdCBBcmd1bWVudENvdW50ID0gLTQ4Citj
b25zdCBDYWxsZXJGcmFtZSA9IC00MAorY29uc3QgQ2FsbGVlID0gLTMyCitjb25zdCBTY29wZUNo
YWluID0gLTI0Citjb25zdCBSZXR1cm5QQyA9IC0xNgorY29uc3QgQ29kZUJsb2NrID0gLTgKKwor
Y29uc3QgVGhpc0FyZ3VtZW50T2Zmc2V0ID0gLUNhbGxGcmFtZUhlYWRlclNpemUgLSA4CisKKyMg
RGVjbGFyZSBzb21lIGFsaWFzZXMgZm9yIHRoZSByZWdpc3RlcnMgd2Ugd2lsbCB1c2UuCitjb25z
dCBQQyA9IHQ0CisKKyMgT2Zmc2V0cyBuZWVkZWQgZm9yIHJlYXNvbmluZyBhYm91dCB2YWx1ZSBy
ZXByZXNlbnRhdGlvbi4KK2lmIEJJR19FTkRJQU4KKyAgICBjb25zdCBUYWdPZmZzZXQgPSAwCisg
ICAgY29uc3QgUGF5bG9hZE9mZnNldCA9IDQKK2Vsc2UKKyAgICBjb25zdCBUYWdPZmZzZXQgPSA0
CisgICAgY29uc3QgUGF5bG9hZE9mZnNldCA9IDAKK2VuZAorCisjIFZhbHVlIHJlcHJlc2VudGF0
aW9uIGNvbnN0YW50cy4KK2NvbnN0IEludDMyVGFnID0gLTEKK2NvbnN0IEJvb2xlYW5UYWcgPSAt
MgorY29uc3QgTnVsbFRhZyA9IC0zCitjb25zdCBVbmRlZmluZWRUYWcgPSAtNAorY29uc3QgQ2Vs
bFRhZyA9IC01Citjb25zdCBFbXB0eVZhbHVlVGFnID0gLTYKK2NvbnN0IERlbGV0ZWRWYWx1ZVRh
ZyA9IC03Citjb25zdCBMb3dlc3RUYWcgPSBEZWxldGVkVmFsdWVUYWcKKworIyBUeXBlIGNvbnN0
YW50cy4KK2NvbnN0IFN0cmluZ1R5cGUgPSA1Citjb25zdCBPYmplY3RUeXBlID0gMTAKKworIyBU
eXBlIGZsYWdzIGNvbnN0YW50cy4KK2NvbnN0IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxCitj
b25zdCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPSAyCitjb25zdCBJbXBsZW1lbnRzRGVmYXVsdEhh
c0luc3RhbmNlID0gOAorCisjIEhlYXAgYWxsb2NhdGlvbiBjb25zdGFudHMuCitjb25zdCBKU0Zp
bmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXggPSAzCisKKyMgQnl0ZWNvZGUgb3BlcmFuZCBjb25zdGFu
dHMuCitjb25zdCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDAKKworIyBD
b2RlIHR5cGUgY29uc3RhbnRzLgorY29uc3QgR2xvYmFsQ29kZSA9IDAKK2NvbnN0IEV2YWxDb2Rl
ID0gMQorY29uc3QgRnVuY3Rpb25Db2RlID0gMgorCisjIFRoZSBpbnRlcnByZXRlciBzdGVhbHMg
dGhlIHRhZyB3b3JkIG9mIHRoZSBhcmd1bWVudCBjb3VudC4KK2NvbnN0IExMSW50UmV0dXJuUEMg
PSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0CisKKyMgVGhpcyBtdXN0IG1hdGNoIHd0Zi9WZWN0
b3IuaC4KK2NvbnN0IFZlY3RvclNpemVPZmZzZXQgPSAwCitjb25zdCBWZWN0b3JCdWZmZXJPZmZz
ZXQgPSA0CisKKyMgU3RyaW5nIGZsYWdzLgorY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDY0
CisKKyMgVXRpbGl0aWVzCittYWNybyBjcmFzaCgpCisgICAgc3RvcmVpIDAsIDB4YmJhZGJlZWZb
XQorICAgIG1vdmUgMCwgdDAKKyAgICBjYWxsIHQwCitlbmQKKworbWFjcm8gYXNzZXJ0KGFzc2Vy
dGlvbikKKyAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBhc3NlcnRpb24oLm9rKQorICAg
ICAgICBjcmFzaCgpCisgICAgLm9rOgorICAgIGVuZAorZW5kCisKK21hY3JvIHByZXNlcnZlUmV0
dXJuQWRkcmVzc0FmdGVyQ2FsbChkZXN0aW5hdGlvblJlZ2lzdGVyKQorICAgIGlmIEFSTXY3Cisg
ICAgICAgIG1vdmUgbHIsIGRlc3RpbmF0aW9uUmVnaXN0ZXIKKyAgICBlbHNpZiBYODYKKyAgICAg
ICAgcG9wIGRlc3RpbmF0aW9uUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAg
ZW5kCitlbmQKKworbWFjcm8gcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oc291cmNl
UmVnaXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBzb3VyY2VSZWdpc3RlciwgbHIK
KyAgICBlbHNpZiBYODYKKyAgICAgICAgcHVzaCBzb3VyY2VSZWdpc3RlcgorICAgIGVsc2UKKyAg
ICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyBkaXNwYXRjaChhZHZhbmNlKQorICAg
IGFkZHAgYWR2YW5jZSAqIDQsIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRj
aEJyYW5jaFdpdGhPZmZzZXQocGNPZmZzZXQpCisgICAgbHNoaWZ0aSAyLCBwY09mZnNldAorICAg
IGFkZHAgcGNPZmZzZXQsIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEJy
YW5jaChwY09mZnNldCkKKyAgICBsb2FkaSBwY09mZnNldCwgdDAKKyAgICBkaXNwYXRjaEJyYW5j
aFdpdGhPZmZzZXQodDApCitlbmQKKworbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIGxv
YWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBqbXAgW1BDXQorZW5k
CisKK21hY3JvIGNDYWxsMihmdW5jdGlvbiwgYXJnMSwgYXJnMikKKyAgICBpZiBBUk12NworICAg
ICAgICBtb3ZlIGFyZzEsIHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICBlbHNpZiBYODYK
KyAgICAgICAgcG9rZSBhcmcxLCAwCisgICAgICAgIHBva2UgYXJnMiwgMQorICAgIGVsc2UKKyAg
ICAgICAgZXJyb3IKKyAgICBlbmQKKyAgICBjYWxsIGZ1bmN0aW9uCitlbmQKKworIyBUaGlzIGJh
cmVseSB3b3Jrcy4gYXJnMyBhbmQgYXJnNCBzaG91bGQgcHJvYmFibHkgYmUgaW1tZWRpYXRlcy4K
K21hY3JvIGNDYWxsNChmdW5jdGlvbiwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCkKKyAgICBpZiBB
Uk12NworICAgICAgICBtb3ZlIGFyZzEsIHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICAg
ICAgbW92ZSBhcmczLCB0MgorICAgICAgICBtb3ZlIGFyZzQsIHQzCisgICAgZWxzaWYgWDg2Cisg
ICAgICAgIHBva2UgYXJnMSwgMAorICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICAgICAgcG9rZSBh
cmczLCAyCisgICAgICAgIHBva2UgYXJnNCwgMworICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAg
ICBlbmQKKyAgICBjYWxsIGZ1bmN0aW9uCitlbmQKKworbWFjcm8gY2FsbEhlbHBlcihoZWxwZXIp
CisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUg
dDEsIGNmcgorZW5kCisKKyMgRGVidWdnaW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBsaWtlIHRvIHBy
aW50IGFuIG9wZXJhbmQgaW4gdGhlIGluc3RydWN0aW9uIHN0cmVhbS4gZnJvbVdoZXJlCisjIHNo
b3VsZCBiZSBhbiBpbW1lZGlhdGUgaW50ZWdlciAtIGFueSBpbnRlZ2VyIHlvdSBsaWtlOyB1c2Ug
aXQgdG8gaWRlbnRpZnkgdGhlIHBsYWNlIHlvdSdyZQorIyBkZWJ1Z2dpbmcgZnJvbS4gb3BlcmFu
ZCBzaG91bGQgbGlrZXdpc2UgYmUgYW4gaW1tZWRpYXRlLCBhbmQgc2hvdWxkIGlkZW50aWZ5IHRo
ZSBvcGVyYW5kCisjIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0geW91J2QgbGlrZSB0byBwcmlu
dCBvdXQuCittYWNybyB0cmFjZU9wZXJhbmQoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxs
NChfbGxpbnRfdHJhY2Vfb3BlcmFuZCwgY2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVyYW5kKQorICAg
IG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0
aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgdGhlIHZhbHVlIG9mIGFuIG9wZXJhbmQgaW4gdGhl
IGluc3RydWN0aW9uCisjIHN0cmVhbS4gU2FtZSBhcyB0cmFjZU9wZXJhbmQoKSwgYnV0IGFzc3Vt
ZXMgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIHJlZ2lzdGVyLCBhbmQgcHJpbnRzIGl0cworIyB2YWx1
ZS4KK21hY3JvIHRyYWNlVmFsdWUoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxp
bnRfdHJhY2VfdmFsdWUsIGNmciwgUEMsIGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQw
LCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKK21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkK
KyAgICBlbmQKK2VuZAorCisjIENhbGwgYSBoZWxwZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3Jv
IGNhbGxDYWxsSGVscGVyKGFkdmFuY2UsIGhlbHBlciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5j
ZSAqIDQsIFBDLCB0MAorICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtj
ZnJdCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBh
Y3Rpb24odDApCitlbmQKKworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikK
KyAgICBjYWxsQ2FsbEhlbHBlcigKKyAgICAgICAgYWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAor
ICAgICAgICBtYWNybyAoY2FsbGVlKQorICAgICAgICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAg
ICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNr
U3dpdGNoVG9KSVQoaW5jcmVtZW50LCBhY3Rpb24pCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENv
ZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3QwXSwgLmNvbnRpbnVlCisgICAgICAgIGFj
dGlvbigpCisgICAgLmNvbnRpbnVlOgorICAgIGVuZAorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNo
VG9KSVRGb3JMb29wKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxLAorICAgICAg
ICBtYWNybyAoKQorICAgICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zm
c2V0W2Nmcl0KKyAgICAgICAgICAgIGNDYWxsMihfbGxpbnRfbG9vcF9vc3IsIGNmciwgUEMpCisg
ICAgICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisg
ICAgICAgICAgICBqbXAgdDAKKyAgICAgICAgLnJlY292ZXI6CisgICAgICAgICAgICBsb2FkaSBB
cmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgICAgIGVuZCkKK2VuZAorCitt
YWNybyBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQo
CisgICAgICAgIDEwLAorICAgICAgICBtYWNybyAoKQorICAgICAgICAgICAgY2FsbEhlbHBlcihf
bGxpbnRfcmVwbGFjZSkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGFzc2VydE5vdENvbnN0
YW50KGluZGV4KQorICAgIGFzc2VydChtYWNybyAob2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4LCBvayBlbmQpCitlbmQKKworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9h
ZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgor
bWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJp
Z3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxv
YWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2Nv
bnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisg
ICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBh
IHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8
PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgp
IDw8IDMuCisgICAgbG9hZHAgVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAg
bG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgor
ZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQgbWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLiBJbmRl
eCBtYXkgYmUgY2xvYmJlcmVkLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5k
ZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRh
ZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBq
bXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFnCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0
W3RhZ10sIHRhZworICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5k
ZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAj
IHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxzaGlmdGkgMywgaW5kZXgKKyAgICBhZGRwIGluZGV4
LCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQKKyAgICBsb2FkcCBU
YWdPZmZzZXRbdGFnXSwgdGFnCisuZG9uZToKK2VuZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxvYWQpCisgICAgYmln
dGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgdGFn
Q2hlY2soVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25z
dGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAg
ICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2
YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwg
MyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8
PCAzLgorICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0pCisgICAgbG9h
ZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5k
CisKKyMgSW5kZXggYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRl
eCBpcyBub3QgbXV0YXRlZC4gVXNlCisjIHRoaXMgaWYgeW91IGtub3cgd2hhdCB0aGUgdGFnIG9m
IHRoZSB2YXJpYWJsZSBzaG91bGQgYmUuIERvaW5nIHRoZSB0YWcKKyMgdGVzdCBhcyBwYXJ0IG9m
IGxvYWRpbmcgdGhlIHZhcmlhYmxlIHJlZHVjZXMgcmVnaXN0ZXIgdXNlLCBidXQgbWF5IG5vdAor
IyBiZSBmYXN0ZXIgdGhhbiBkb2luZyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlIGZvbGxvd2VkIGJ5
IGEgYnJhbmNoIG9uIHRoZQorIyB0YWcuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCisgICAgICAgIGluZGV4LAorICAgICAgICBtYWNy
byAoYWN0dWFsVGFnKSBiaW5lcSBhY3R1YWxUYWcsIGV4cGVjdGVkVGFnLCBzbG93IGVuZCwKKyAg
ICAgICAgcGF5bG9hZCkKK2VuZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZFVuY2hlY2tlZChpbmRleCwgcGF5bG9hZCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZFRhZ0N1c3RvbSgKKyAgICAgICAgaW5kZXgsCisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcp
IGVuZCwKKyAgICAgICAgcGF5bG9hZCkKK2VuZAorCittYWNybyB3cml0ZUJhcnJpZXIodGFnLCBw
YXlsb2FkKQorICAgICMgTm90aGluZyB0byBkbywgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGdlbmVy
YXRpb25hbCBvciBpbmNyZW1lbnRhbCBjb2xsZWN0b3IuCitlbmQKKworbWFjcm8gdmFsdWVQcm9m
aWxlKHRhZywgcGF5bG9hZCwgcHJvZmlsZSkKKyAgICBzdG9yZWkgdGFnLCBWYWx1ZVByb2ZpbGU6
Om1fYnVja2V0cyArIFRhZ09mZnNldFtwcm9maWxlXQorICAgIHN0b3JlaSBwYXlsb2FkLCBWYWx1
ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbcHJvZmlsZV0KK2VuZAorCisKKyMg
SW5kaWNhdGUgdGhlIGJlZ2lubmluZyBvZiBMTEludC4KK19sbGludF9iZWdpbjoKKyAgICBjcmFz
aCgpCisKKworIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlcgorCittYWNybyBmdW5j
dGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ2Fs
bGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRh
YmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBGdW5jdGlvbkV4
ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lz
dGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIodGFy
Z2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCisgICAg
bG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVn
aXN0ZXIKKyAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBub3RGdW5j
dGlvbkNvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkNvZGVCbG9ja1NldHRl
cihzb3VyY2VSZWdpc3RlcikKKyAgICBzdG9yZXAgc291cmNlUmVnaXN0ZXIsIENvZGVCbG9ja1tj
ZnJdCitlbmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0
ZXIpCisgICAgIyBOb3RoaW5nIHRvIGRvIQorZW5kCisKKyMgRG8gdGhlIGJhcmUgbWluaW11bSBy
ZXF1aXJlZCB0byBleGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBsZWF2ZSB0aGUgQ29kZUJs
b2NrKgorIyBpbiB0MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1IuCittYWNy
byBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NySGVscGVyLCB0
cmFjZUhlbHBlcikKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpCisgICAg
CisgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1Iu
CisgICAgc3RvcmVwIHQyLCBSZXR1cm5QQ1tjZnJdCisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcK
KyAgICAgICAgY2FsbEhlbHBlcih0cmFjZUhlbHBlcikKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tH
ZXR0ZXIodDEpCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgYmFkZGlzIDUsIENvZGVCbG9j
azo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3QxXSwgLmNvbnRpbnVlCisgICAgICAgIGNDYWxsMihv
c3JIZWxwZXIsIGNmciwgUEMpCisgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAgICBidHB6IHQw
LCAucmVjb3ZlcgorICAgICAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgICAgICByZXN0
b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICAgICAgam1wIHQwCisgICAgLnJl
Y292ZXI6CisgICAgICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICAuY29udGludWU6CisgICAg
ZW5kCisgICAgY29kZUJsb2NrU2V0dGVyKHQxKQorICAgIAorICAgICMgU2V0IHVwIHRoZSBQQy4K
KyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbdDBdLCBQQworZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hp
Y2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCisjIE11c3QgY2FsbCBkaXNwYXRj
aCgwKSBhZnRlciBjYWxsaW5nIHRoaXMuCittYWNybyBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHBy
b2ZpbGVBcmdTa2lwKQorICAgICMgUHJvZmlsZSB0aGUgYXJndW1lbnRzLiBVbmZvcnR1bmF0ZWx5
LCB3ZSBoYXZlIG5vIGNob2ljZSBidXQgdG8gZG8gdGhpcy4gVGhpcworICAgICMgY29kZSBpcyBw
cmV0dHkgaG9ycmVuZG91cyBiZWNhdXNlIG9mIHRoZSBkaWZmZXJlbmNlIGluIG9yZGVyaW5nIGJl
dHdlZW4KKyAgICAjIGFyZ3VtZW50cyBhbmQgdmFsdWUgcHJvZmlsZXMsIHRoZSBkZXNpcmUgdG8g
aGF2ZSBhIHNpbXBsZSBsb29wLWRvd24tdG8temVybworICAgICMgbG9vcCwgYW5kIHRoZSBkZXNp
cmUgdG8gdXNlIG9ubHkgdGhyZWUgcmVnaXN0ZXJzIHNvIGFzIHRvIHByZXNlcnZlIHRoZSBQQyBh
bmQKKyAgICAjIHRoZSBjb2RlIGJsb2NrLiBJdCBpcyBsaWtlbHkgdGhhdCB0aGlzIGNvZGUgc2hv
dWxkIGJlIHJld3JpdHRlbiBpbiBhIG1vcmUKKyAgICAjIG9wdGltYWwgd2F5IGZvciBhcmNoaXRl
Y3R1cmVzIHRoYXQgaGF2ZSBtb3JlIHRoYW4gZml2ZSByZWdpc3RlcnMgYXZhaWxhYmxlCisgICAg
IyBmb3IgYXJiaXRyYXJ5IHVzZSBpbiB0aGUgaW50ZXJwcmV0ZXIuCisgICAgbG9hZGkgQ29kZUJs
b2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCB0MAorICAgIGFkZGkgLXByb2ZpbGVBcmdTa2lwLCB0
MCAjIFVzZSBhZGRpIGJlY2F1c2UgdGhhdCdzIHdoYXQgaGFzIHRoZSBwZWVwaG9sZQorICAgIGFz
c2VydChtYWNybyAob2spIGJpZ3RlcSB0MCwgMCwgb2sgZW5kKQorICAgIGJ0aXogdDAsIC5hcmd1
bWVudFByb2ZpbGVEb25lCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9m
aWxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MV0sIHQzCisgICAgbXVsaSBzaXplb2YgVmFsdWVQ
cm9maWxlLCB0MCwgdDIgIyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVkdWN0aW9uIQorICAg
IG5lZ2kgdDAKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MiwgdDMKKy5hcmd1bWVudFBy
b2ZpbGVMb29wOgorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNldCArIDgg
LSBwcm9maWxlQXJnU2tpcCAqIDhbY2ZyLCB0MF0sIHQyCisgICAgc3VicCBzaXplb2YgVmFsdWVQ
cm9maWxlLCB0MworICAgIHN0b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBzaXplb2YgVmFsdWVQ
cm9maWxlICsgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbdDNdCisgICAgbG9h
ZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldCArIDggLSBwcm9maWxlQXJnU2tp
cCAqIDhbY2ZyLCB0MF0sIHQyCisgICAgc3RvcmVpIHQyLCBwcm9maWxlQXJnU2tpcCAqIHNpemVv
ZiBWYWx1ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRb
dDNdCisgICAgYmFkZGlueiA4LCB0MCwgLmFyZ3VtZW50UHJvZmlsZUxvb3AKKy5hcmd1bWVudFBy
b2ZpbGVEb25lOgorICAgIAorICAgICMgQ2hlY2sgc3RhY2sgaGVpZ2h0LgorICAgIGxvYWRpIENv
ZGVCbG9jazo6bV9udW1DYWxsZWVSZWdpc3RlcnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9j
azo6bV9nbG9iYWxEYXRhW3QxXSwgdDIKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmludGVycHJl
dGVyW3QyXSwgdDIgICAjIEZJWE1FOiBDYW4gZ2V0IHRvIHRoZSBSZWdpc3RlckZpbGUgZnJvbSB0
aGUgSklUU3RhY2tGcmFtZQorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQwLCBjZnIsIHQw
CisgICAgYnBhZXEgSW50ZXJwcmV0ZXI6Om1fcmVnaXN0ZXJGaWxlICsgUmVnaXN0ZXJGaWxlOjpt
X2VuZFt0Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSworCisgICAgIyBTdGFjayBoZWlnaHQgY2hlY2sg
ZmFpbGVkIC0gbmVlZCB0byBjYWxsIGEgaGVscGVyLgorICAgIGNhbGxIZWxwZXIoX2xsaW50X3Jl
Z2lzdGVyX2ZpbGVfY2hlY2spCisuc3RhY2tIZWlnaHRPSzoKK2VuZAorCisjIEV4cGVjdHMgdGhh
dCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVo
aW5kLgorbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgaGVscGVyKQorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisgICAgYmlhZXEgdDAs
IENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCisgICAgY0NhbGwyKGhl
bHBlciwgY2ZyLCBQQykgICAjIFRoaXMgaGVscGVyIGhhcyBhIHNpbXBsZSBwcm90b2NvbDogdDAg
PSAwID0+IG5vIGVycm9yLCB0MCAhPSAwID0+IGVycm9yCisgICAgbW92ZSB0MSwgY2ZyCisgICAg
YnRpeiB0MCwgLmNvbnRpbnVlCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtz
cF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQw
CisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisuY29u
dGludWU6CisgICAgIyBSZWxvYWQgQ29kZUJsb2NrIGFuZCBQQywgc2luY2UgdGhlIGhlbHBlciBj
bG9iYmVyZWQgaXQuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpJbnN0
cnVjdGlvbnM6Om1faW5zdHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKKyAg
ICBqbXAgZG9uZUxhYmVsCitlbmQKKworX2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6CisgICAgcHJv
bG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0
dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0
Y2goMCkKKworCitfbGxpbnRfZXZhbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlv
bkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRy
eV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGlu
dF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNh
bGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlf
b3NyX2Z1bmN0aW9uX2Zvcl9jYWxsLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9y
X2NhbGwpCisuZnVuY3Rpb25Gb3JDYWxsQmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlv
bigwKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0X3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2Nr
R2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlv
bl9mb3JfY29uc3RydWN0LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdCkKKy5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6
YXRpb24oMSkKKyAgICBkaXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfYXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0
dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKKyAg
ICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfbGxpbnRfaGVscGVy
X2NhbGxfYXJpdHlDaGVjaykKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eV9jaGVjazoKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRl
ciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3Ry
dWN0KQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwg
X2xsaW50X2hlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKKworIyBJbnN0cnVjdGlvbiBpbXBs
ZW1lbnRhdGlvbnMKKworX2xsaW50X29wX2VudGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFy
c1t0Ml0sIHQyCisgICAgYnRpeiB0MiwgLm9wRW50ZXJEb25lCisgICAgbW92ZSBVbmRlZmluZWRU
YWcsIHQwCisgICAgbW92ZSAwLCB0MQorLm9wRW50ZXJMb29wOgorICAgIHN1YmkgMSwgdDIKKyAg
ICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGJ0aW56IHQyLCAub3BFbnRlckxvb3AKKy5vcEVudGVy
RG9uZToKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9jcmVhdGVfYWN0aXZhdGlvbjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBY3RpdmF0aW9uRG9u
ZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKKy5vcENy
ZWF0ZUFjdGl2YXRpb25Eb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luaXRf
bGF6eV9yZWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkg
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50
X29wX2NyZWF0ZV9hcmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywg
Lm9wQ3JlYXRlQXJndW1lbnRzRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVh
dGVfYXJndW1lbnRzKQorLm9wQ3JlYXRlQXJndW1lbnRzRG9uZToKKyAgICBkaXNwYXRjaCgyKQor
CisKK21hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJbmRleCwgY2xhc3NJbmZv
T2Zmc2V0LCBzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBzbG93Q2FzZSkK
KyAgICBjb25zdCBvZmZzZXRPZk15U2l6ZUNsYXNzID0gSlNHbG9iYWxEYXRhOjpoZWFwICsgSGVh
cDo6bV9vYmplY3RTcGFjZSArIE1hcmtlZFNwYWNlOjptX3ByZWNpc2VTaXplQ2xhc3NlcyArIHNp
emVDbGFzc0luZGV4ICogc2l6ZW9mIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MKKyAgICAKKyAgICAj
IEZJWE1FOiB3ZSBjYW4gZ2V0IHRoZSBnbG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRoZSBz
dGFjay4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2NyYXRjaDEKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fZ2xvYmFsRGF0YVtzY3JhdGNoMV0sIHNjcmF0Y2gxCisgICAgCisgICAgIyBHZXQg
dGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuICAgIAorICAgIGxvYWRwIG9mZnNldE9mTXlT
aXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gx
XSwgcmVzdWx0CisgICAgYnRweiByZXN1bHQsIHNsb3dDYXNlCisgICAgCisgICAgIyBSZW1vdmUg
dGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCisgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0
Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3Bh
Y2U6OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0KKworICAgICMgSW5pdGlhbGl6
ZSB0aGUgb2JqZWN0LgorICAgIGxvYWRwIGNsYXNzSW5mb09mZnNldFtzY3JhdGNoMV0sIHNjcmF0
Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gyLCBbcmVzdWx0XQorICAgIHN0b3JlcCBzdHJ1Y3R1cmUs
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQorICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9p
bmhlcml0b3JJRFtyZXN1bHRdCisgICAgYWRkcCBzaXplb2YgSlNPYmplY3QsIHJlc3VsdCwgc2Ny
YXRjaDEKKyAgICBzdG9yZXAgc2NyYXRjaDEsIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVty
ZXN1bHRdCitlbmQKKworX2xsaW50X29wX2NyZWF0ZV90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENyZWF0ZVRoaXNTbG93Cisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlw
ZUluZm86Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9h
ZHAgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbdDBdLCB0MgorICAgIGJ0cHogdDIsIC5vcENyZWF0
ZVRoaXNTbG93CisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xh
c3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MiwgdDAsIHQx
LCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVp
IENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcENyZWF0ZVRoaXNTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfdGhpcykKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9nZXRfY2FsbGVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0ICsgQ2FsbGVlW2Nmcl0sIHQx
CisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0
MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50
X29wX2NvbnZlcnRfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0
VGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNT
bG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ29udmVydFRoaXNTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9jb252ZXJ0X3RoaXMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxp
bnRfb3BfbmV3X29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQw
CisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fZW1wdHlPYmplY3RTdHJ1Y3R1cmVbdDBdLCB0
MQorICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgs
IEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywgdDEsIHQwLCB0MiwgdDMsIC5v
cE5ld09iamVjdFNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcs
IFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQxLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcE5ld09iamVjdFNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX25ld19vYmplY3QpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxp
bnRfb3BfbmV3X2FycmF5OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfbmV3X2FycmF5KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25l
d19hcnJheV9idWZmZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX25ld19yZWdleHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9uZXdfcmVnZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX21v
djoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHN0
b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bfbm90OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwg
dDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmluZXEgdDIs
IEJvb2xlYW5UYWcsIC5vcE5vdFNsb3cKKyAgICB4b3JpIDEsIHQzCisgICAgc3RvcmVpIHQyLCBU
YWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOb3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9ub3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZXE6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcEVxU2xv
dworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcEVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFn
LCAub3BFcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaWVxIHQwLCB0MSwgdDAKKyAg
ICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wRXFTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9lcSkKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRp
YXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJueiBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQsIHQxCisgICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0ZQorLm9wRXFOdWxsSW1t
ZWRpYXRlOgorICAgIGNpZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2llcSB0MSwgVW5kZWZpbmVk
VGFnLCB0MQorICAgIG9yaSB0MiwgdDEKKy5vcEVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9y
ZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVx
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkg
OFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAu
b3BOZXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wTmVxU2xvdworICAgIGJpYiB0Miwg
TG93ZXN0VGFnLCAub3BOZXFTbG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2luZXEgdDAs
IHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAg
ICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQor
Cisub3BOZXFTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXEpCisgICAgZGlz
cGF0Y2goNCkKKyAgICAKKworX2xsaW50X29wX25lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnRO
b3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRh
ZywgLm9wTmVxTnVsbEltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MQorICAgIHRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0
MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5vcE5lcU51bGxOb3RJbW1l
ZGlhdGUKKy5vcE5lcU51bGxJbW1lZGlhdGU6CisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyCisg
ICAgY2luZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKKyAgICBhbmRpIHQyLCB0MQorLm9wTmVxTnVs
bE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMs
IDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0
Y2goMykKKworCittYWNybyBzdHJpY3RFcShlcXVhbGl0eU9wZXJhdGlvbiwgaGVscGVyKQorICAg
IGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAs
IHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcs
IC5zbG93CisgICAgYmluZXEgdDIsIENlbGxUYWcsIC5ub3RTdHJpbmcKKyAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qx
XSwgdDMKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZworICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93Cisubm90U3RyaW5n
OgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDAp
CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3Jl
aSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93
OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50
X29wX3N0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAo
bGVmdCwgcmlnaHQsIHJlc3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50
X2hlbHBlcl9zdHJpY3RlcSkKKworCitfbGxpbnRfb3BfbnN0cmljdGVxOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEg
bGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9oZWxwZXJfbnN0cmljdGVxKQorCisKK19s
bGludF9vcF9sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfbGVzcykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9sZXNzZXE6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzZXEp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dyZWF0ZXIpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcmVxKQorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX3ByZV9pbmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBy
ZUluY1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJh
ZGRpbyAxLCB0MSwgLm9wUHJlSW5jU2xvdworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcFByZUluY1Nsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3ByZV9pbmMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRf
b3BfcHJlX2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdwor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYnN1YmlvIDEsIHQx
LCAub3BQcmVEZWNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlRGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcHJlX2RlYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3N0X2lu
YzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkg
NFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9w
UG9zdEluY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdEluY0RvbmUKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYmFkZGlv
IDEsIHQzLCAub3BQb3N0SW5jU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
c3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0SW5jRG9uZToKKyAg
ICBkaXNwYXRjaCgzKQorCisub3BQb3N0SW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfcG9zdF9pbmMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcG9zdF9kZWM6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRb
UENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBv
c3REZWNTbG93CisgICAgYmllcSB0MCwgdDEsIC5vcFBvc3REZWNEb25lCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBtb3ZlIHQyLCB0MworICAgIGJzdWJpbyAx
LCB0MywgLm9wUG9zdERlY1Nsb3cKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIs
IHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0
b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorLm9wUG9zdERlY0RvbmU6CisgICAg
ZGlzcGF0Y2goMykKKworLm9wUG9zdERlY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3Bvc3RfZGVjKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3RvX2pzbnVtYmVy
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0
W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmll
cSB0MiwgSW50MzJUYWcsIC5vcFRvSnNudW1iZXJJc0ludAorICAgIGJpYWVxIHQyLCBFbXB0eVZh
bHVlVGFnLCAub3BUb0pzbnVtYmVyU2xvdworLm9wVG9Kc251bWJlcklzSW50OgorICAgIHN0b3Jl
aSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9Kc251bWJlclNsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RvX2pzbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX25lZ2F0ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MCwgdDEsIHQyKQorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50Cisg
ICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdworICAgIG5lZ2kgdDIKKyAgICBz
dG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5
bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisub3BOZWdhdGVTcmNOb3RJ
bnQ6CisgICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKKyAgICB4b3JpIDB4ODAw
MDAwMDAsIHQxCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BO
ZWdhdGVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZWdhdGUpCisgICAgZGlz
cGF0Y2goMykKKworCittYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKGludGVnZXJPcGVyYXRpb25B
bmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0Mgor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0
MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVx
IHQyLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLm9wMk5v
dEludAorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0
MywgdDEsIHQwLCAuc2xvdywgdDIpCisgICAgZGlzcGF0Y2goNSkKKworLm9wMU5vdEludDoKKyAg
ICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9w
ZXJhbmQgY291bGQgYmUgYW55dGhpbmcuCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93Cisg
ICAgYmliIHQzLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0Mywg
SW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MSwgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFk
eQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorLm9wMU5vdElu
dFJlYWR5OgorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGZpaTJkIHQwLCB0MiwgZnQwCisgICAg
ZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQxLCA4XQor
ICAgIGRpc3BhdGNoKDUpCisKKy5vcDJOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRl
ZmluaXRlbHkgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QuCisg
ICAgbG9hZGkgNFtQQ10sIHQyCisgICAgYmlhIHQzLCBMb3dlc3RUYWcsIC5zbG93CisgICAgY2ky
ZCB0MCwgZnQwCisgICAgZmlpMmQgdDEsIHQzLCBmdDEKKyAgICBkb3VibGVPcGVyYXRpb24oZnQx
LCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNSkKKwor
LnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNSkKK2VuZAorCitt
YWNybyBiaW5hcnlPcChpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikK
KyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQs
IHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwg
cmlnaHQsIHNsb3cpCisgICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIs
IGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIp
CitlbmQKKworX2xsaW50X29wX2FkZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5
T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0
LCBzbG93IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0
IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9hZGQpCisKKworX2xsaW50X29wX211bDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFj
cm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjb25z
dCBzY3JhdGNoID0gaW50MzJUYWcgICAjIFdlIGtub3cgdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIGlu
dDMyVGFnIHJlZ2lzdGVyIHNpbmNlIGl0IGhhcyBhIGNvbnN0YW50LgorICAgICAgICAgICAgbW92
ZSByaWdodCwgc2NyYXRjaAorICAgICAgICAgICAgYm11bGlvIGxlZnQsIHNjcmF0Y2gsIHNsb3cK
KyAgICAgICAgICAgIGJ0aW56IHNjcmF0Y2gsIC5kb25lCisgICAgICAgICAgICBiaWx0IGxlZnQs
IDAsIHNsb3cKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgLmRvbmU6
CisgICAgICAgICAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQor
ICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0K
KyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIG11bGQgbGVmdCwgcmln
aHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX211bCkKKworCitfbGxpbnRfb3Bfc3ViOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCBzbG93KSBic3ViaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQpIHN1YmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVs
cGVyX3N1YikKKworCitfbGxpbnRfb3BfZGl2OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBi
aW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0
LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGNpMmQgbGVmdCwgZnQwCisgICAgICAgICAgICBj
aTJkIHJpZ2h0LCBmdDEKKyAgICAgICAgICAgIGRpdmQgZnQwLCBmdDEKKyAgICAgICAgICAgIGJj
ZDJpIGZ0MSwgcmlnaHQsIC5ub3RJbnQKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFn
T2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRP
ZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIGptcCAuZG9uZQorICAgICAgICAubm90
SW50OgorICAgICAgICAgICAgc3RvcmVkIGZ0MSwgW2NmciwgaW5kZXgsIDhdCisgICAgICAgIC5k
b25lOgorICAgICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgZGl2ZCBsZWZ0
LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfZGl2KQorCisKK19sbGludF9vcF9t
b2Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9t
b2QpCisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBiaXRPcChvcGVyYXRpb24sIGhlbHBlciwg
YWR2YW5jZSkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAg
IGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBvcGVy
YXRpb24odDEsIHQwLCAuc2xvdykKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4
XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNo
KGFkdmFuY2UpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNo
KGFkdmFuY2UpCitlbmQKKworX2xsaW50X29wX2xzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBs
ZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbHNoaWZ0LAorICAgICAgICA0
KQorCisKK19sbGludF9vcF9yc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9w
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkgbGVmdCwgcmlnaHQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3JzaGlmdCwKKyAgICAgICAgNCkKKworCitfbGxp
bnRfb3BfdXJzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJp
Z2h0CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAgIGVuZCwKKyAgICAg
ICAgX2xsaW50X2hlbHBlcl91cnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF9iaXRh
bmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHNsb3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVs
cGVyX2JpdGFuZCwKKyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0eG9yOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93
KSB4b3JpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXR4b3IsCisg
ICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBvcmkgbGVmdCwgcmln
aHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdG9yLAorICAgICAgICA1KQorCisKK19s
bGludF9vcF9iaXRub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0
MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQy
LCB0MykKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcEJpdG5vdFNsb3cKKyAgICBub3RpIHQz
CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BCaXRub3RTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9iaXRub3QpCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MSwgQ2VsbFRhZywgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93KQorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsg
VHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFz
SW5zdGFuY2VTbG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKKyAgICBk
aXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbnN0YW5jZW9mOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICAjIENoZWNrIHRoYXQgYmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0lu
c3RhbmNlIGJlaGF2aW9yLgorICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQu
CisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
VW5jaGVja2VkKHQxLCB0MCkKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAK
KyAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwg
SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICAKKyAg
ICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICBsb2Fk
aSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRh
ZywgdDEsIC5vcEluc3RhbmNlb2ZTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDFdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcElu
c3RhbmNlb2ZTbG93KQorICAgIAorICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBl
LCB0MiA9IHZhbHVlCisgICAgbW92ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxvb3A6CisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCisgICAgbG9hZGkgU3RydWN0dXJlOjptX3By
b3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDJdLCB0MgorICAgIGJwZXEgdDIsIHQxLCAub3BJbnN0
YW5jZW9mRG9uZQorICAgIGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcAorCisgICAgbW92ZSAw
LCB0MAorLm9wSW5zdGFuY2VvZkRvbmU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNl
dFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQor
ICAgIGRpc3BhdGNoKDUpCisKKy5vcEluc3RhbmNlb2ZTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9pbnN0YW5jZW9mKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3R5
cGVvZjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3R5cGVvZikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc191bmRlZmluZWQ6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc191bmRl
ZmluZWQpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfYm9vbGVhbjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Jvb2xlYW4p
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfbnVtYmVyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfbnVtYmVyKQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3N0cmluZykKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9pc19vYmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19vYmplY3QpCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfaXNfZnVuY3Rpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9pc19mdW5jdGlvbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9pbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2luKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29sdmU6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29sdmVfc2tpcDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfc2tpcCkKKyAgICBk
aXNwYXRjaCg1KQorCisKK21hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKKyAgICAjIE9w
ZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhl
IGxvYWQuCisgICAgIyA4W1BDXSAgIFByb3BlcnR5IGlkZW50aWZpZXIgaW5kZXggaW4gdGhlIGNv
ZGUgYmxvY2suCisgICAgIyAxMltQQ10gIFN0cnVjdHVyZSBwb2ludGVyLCBpbml0aWFsaXplZCB0
byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAgICAjIDE2W1BDXSAgT2Zmc2V0IGluIGdsb2Jh
bCBvYmplY3QsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmpl
Y3RbdDBdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJw
bmVxIHQxLCAxMltQQ10sIHNsb3cKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAgSlNP
YmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAs
IHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQzCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAoc2l6ZSAt
IDEpICogNFtQQ10sIHQwCisgICAgdmFsdWVQcm9maWxlKHQyLCB0MywgdDApCitlbmQKKworX2xs
aW50X29wX3Jlc29sdmVfZ2xvYmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICByZXNvbHZl
R2xvYmFsKDYsIC5vcFJlc29sdmVHbG9iYWxTbG93KQorICAgIGRpc3BhdGNoKDYpCisKKy5vcFJl
c29sdmVHbG9iYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2ds
b2JhbCkKKyAgICBkaXNwYXRjaCg2KQorCisKKyMgR2l2ZXMgeW91IHRoZSBzY29wZSBpbiB0MCwg
d2hpbGUgYWxsb3dpbmcgeW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNr
cyBvbiB0aGUKKyMgc2NvcGVzIGFzIHRoZXkgYXJlIHRyYXZlcnNlZC4gc2NvcGVDaGVjaygpIGlz
IGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSByZWdpc3RlcgorIyBob2xkaW5nIHRoZSBz
Y29wZSwgYW5kIGEgcmVnaXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc2NyYXRjaC4gTm90ZSB0
aGF0IHRoaXMgZG9lcyBub3QKKyMgdXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQgc3R1ZmYgaW4gdDMg
aWYgbmVlZCBiZS4KK21hY3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVD
aGVjaykKKyAgICBsb2FkcCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAg
IGxvYWRpIGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9u
ZQorICAgIAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGJpbmVxIENvZGVCbG9j
azo6bV9jb2RlVHlwZVt0MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AKKyAgICBidGJ6IENvZGVCbG9j
azo6bV9uZWVkc0Z1bGxTY29wZUNoYWluW3QxXSwgLmxvb3AKKyAgICAKKyAgICBsb2FkaSBDb2Rl
QmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEKKworICAgICMgTmVlZCB0byBjb25k
aXRpb25hbGx5IHNraXAgb3ZlciBvbmUgc2NvcGUuCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2YXRpb24KKyAgICBzY29wZUNoZWNrKHQwLCB0
MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisubm9BY3RpdmF0aW9u
OgorICAgIHN1YmkgMSwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorLmxvb3A6CisgICAg
c2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0
MAorICAgIHN1YmkgMSwgdDIKKyAgICBidGlueiB0MiwgLmxvb3AKKworLmRvbmU6CitlbmQKKwor
X2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRwIEpT
R2xvYmFsRGF0YTo6YWN0aXZhdGlvblN0cnVjdHVyZVt0M10sIHQzCisgICAgZ2V0U2NvcGUoCisg
ICAgICAgIDIwW1BDXSwKKyAgICAgICAgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKQorICAgICAgICAg
ICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0Y2gKKyAgICAgICAg
ICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZlR2xv
YmFsRHluYW1pY1N1cGVyU2xvdworICAgICAgICBlbmQpCisgICAgcmVzb2x2ZUdsb2JhbCg3LCAu
b3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3cpCisgICAgZGlzcGF0Y2goNykKKworLm9wUmVzb2x2
ZUdsb2JhbER5bmFtaWNTdXBlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jl
c29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCisgICAgZGlzcGF0Y2goNykKKworLm9w
UmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9y
ZXNvbHZlX2dsb2JhbF9keW5hbWljKQorICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX2dl
dF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIE9wZXJhbmRzIGFyZSBh
cyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAg
IyA4W1BDXSAgIEluZGV4IG9mIHJlZ2lzdGVyIGluIHRoZSBzY29wZS4KKyAgICAjIDEyW1BDXSAg
RGUgQnJ1aWppbiBpbmRleC4KKyAgICBnZXRTY29wZSgxMltQQ10sIG1hY3JvIChzY29wZSwgc2Ny
YXRjaCkgZW5kKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAg
IGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFi
bGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQy
LCA4XSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0sIHQwCisgICAgc3Rv
cmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQz
LCB0MCwgdDEpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGdldFNjb3BlKDhbUENdLCBtYWNybyAoc2NvcGUs
IHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MSwgdDMsIHQyKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHdyaXRlQmFycmll
cih0MywgdDIpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAg
bG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIHN0b3JlaSB0
MywgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDAs
IHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BD
XSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdp
c3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDEKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNl
dFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQor
ICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MykKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQw
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAg
SlNHbG9iYWxPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQxLCB0MiwgdDMpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVy
KHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVp
IHQzLCBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9yZXNvbHZlX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9yZXNvbHZlX2Jhc2UpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRf
b3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKKyAg
ICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfdGhpczoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF90
aGlzKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNo
aW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQorICAgICMgb3Bjb2RlLiBXZSBk
bywgaG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWls
cywgc2luY2UKKyAgICAjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNr
eSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCisgICAgIyB0byB0YWtlIGZhc3QgcGF0
aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMg
d2hhdAorICAgICMgd2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQ
Q10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKKyAg
ICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAg
bG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0Ml0sIHQzCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFt0MCwgdDJdLCB0MgorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2Nm
ciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
bG9hZGkgMzJbUENdLCB0MQorICAgIHZhbHVlUHJvZmlsZSh0MywgdDIsIHQxKQorICAgIGRpc3Bh
dGNoKDkpCisKKy5vcEdldEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9n
ZXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOSkKKworCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19s
ZW5ndGg6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1
ZVRhZywgLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdworICAgIGxvYWRpIEFyZ3VtZW50Q291bnQg
KyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQyCisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSBJbnQz
MlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xv
dykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlT
dG9yYWdlW3QwXSwgdDMKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5v
cFB1dEJ5SWRTbG93CisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnKHQyLCB0MCwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQwLCB0MikKKyAgICBzdG9y
ZWkgdDAsIFRhZ09mZnNldFt0MywgdDFdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3Qz
LCB0MV0KKyAgICBkaXNwYXRjaCg5KQorCisub3BQdXRCeUlkU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcHV0X2J5X2lkKQorICAgIGRpc3BhdGNoKDkpCisKKworbWFjcm8gcHV0
QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcykKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAg
bG9hZGkgMTJbUENdLCB0MgorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwg
Lm9wUHV0QnlJZFNsb3cKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9wUHV0QnlJZFNs
b3cpCisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5
U3RvcmFnZVt0MF0sIHQzCisgICAgYWRkcCB0MSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZyh0MiwgdDEsIHQyKQorICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgc3RvcmVp
IHQxLCBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgMjRbUENdLCB0MQorICAgIHN0b3JlaSB0Miwg
UGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
CisgICAgZGlzcGF0Y2goOSkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0OgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0
Y2gsIHNsb3cpIGVuZCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
OgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAorICAgICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBz
Y3JhdGNoLCBzbG93KQorICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJl
ICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bworICAg
ICAgICAKKyAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAorICAgICAgICAgICAgYXNz
ZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgICAgICAgICAgbG9hZHAg
U3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgICAgICAgICBh
c3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBiaWVx
IFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRh
ZywgLmRvbmUKKyAgICAgICAgLmxvb3A6CisgICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1f
cHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICAg
ICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJl
CisgICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdworICAgICAg
ICAgICAgYWRkcCA0LCBzY3JhdGNoCisgICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJv
dG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisgICAgICAg
IC5kb25lOgorICAgICAgICBlbmQpCisKKworX2xsaW50X29wX2RlbF9ieV9pZDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV9pZCkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIK
KyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFb
dDFdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0
MCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNz
SW5mb1t0MV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIEludDMy
VGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAgIGJwbmVxIFt0MF0sIHQyLCAub3BHZXRCeVZh
bFNsb3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDBdLCB0MworICAgIGJpYWVxIHQx
LCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRb
dDMsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9h
ZE9mZnNldFt0MywgdDEsIDhdLCB0MQorICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdl
dEJ5VmFsU2xvdworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3Rv
cmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgbG9hZGkgMTZbUENdLCB0MAor
ICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQwKQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEdldEJ5
VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3ZhbCkKKyAgICBk
aXNwYXRjaCg1KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxMltQQ10sIHQxCisg
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1
bWVudEJ5VmFsU2xvdworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBJbnQz
MlRhZywgdDIsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93KQorICAgIGFkZGkgMSwgdDIKKyAgICBs
b2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQorICAgIGJpYWVxIHQy
LCB0MSwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAgICBuZWdpIHQyCisgICAgbG9hZGkgNFtQ
Q10sIHQzCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDIs
IDhdLCB0MAorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MiwgOF0sIHQxCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBz
dG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg0KQorCisu
b3BHZXRBcmd1bWVudEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0
X2FyZ3VtZW50X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlf
cG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEdldEJ5UG5h
bWVTbG93KQorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICBicG5lcSB0MSwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5
UG5hbWVTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAor
ICAgIGJwbmVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0
M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkgMjRbUENdLCB0MAorICAgIGxvYWRpIFtj
ZnIsIHQwLCA4XSwgdDAKKyAgICBzdWJpIDEsIHQwCisgICAgYmlhZXEgdDAsIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6Om1fbnVtQ2FjaGVhYmxlU2xvdHNbdDNdLCAub3BHZXRCeVBuYW1lU2xvdwor
ICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0Ml0sIHQyCisgICAgbG9hZGkg
VGFnT2Zmc2V0W3QyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MiwgdDAs
IDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
ZGlzcGF0Y2goNykKKworLm9wR2V0QnlQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2dldF9ieV9wbmFtZSkKKyAgICBkaXNwYXRjaCg3KQorCisKK19sbGludF9vcF9wdXRf
YnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFs
U2xvdykKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MCwgSW50MzJUYWcsIHQyLCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDBdLCB0MAor
ICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MF0sIHQwCisgICAgYnBu
ZXEgW3QxXSwgdDAsIC5vcFB1dEJ5VmFsU2xvdworICAgIGJpYWVxIHQyLCBKU0FycmF5OjptX3Zl
Y3Rvckxlbmd0aFt0MV0sIC5vcFB1dEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3Rv
cmFnZVt0MV0sIHQwCisgICAgYmllcSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0
W3QwLCB0MiwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFB1dEJ5VmFsRW1wdHkKKy5vcFB1dEJ5VmFs
U3RvcmVSZXN1bHQ6CisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnKHQzLCB0MSwgdDMpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MykKKyAgICBzdG9y
ZWkgdDEsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XQorICAg
IHN0b3JlaSB0MywgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDAsIHQy
LCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcFB1dEJ5VmFsRW1wdHk6CisgICAgYWRkaSAxLCBB
cnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCisgICAgYmliIHQyLCBBcnJheVN0
b3JhZ2U6Om1fbGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorICAgIGFkZGkgMSwg
dDIsIHQxCisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXQorICAgIGpt
cCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisKKy5vcFB1dEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9kZWxfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfZGVsX2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9w
dXRfYnlfaW5kZXg6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9wdXRfYnlfaW5kZXgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0
X2dldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3B1dF9nZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X3NldHRl
cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1
dF9zZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbG9vcDoKKyAgICBub3AK
K19sbGludF9vcF9qbXA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRpc3BhdGNoQnJhbmNo
KDRbUENdKQorCisKK19sbGludF9vcF9qbXBfc2NvcGVzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfam1wX3Njb3BlcykKKyAgICBkaXNwYXRjaCgw
KQorCisKK21hY3JvIGp1bXBUcnVlT3JGYWxzZShjb25kaXRpb25PcCwgc2xvdykKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQm9vbGVh
blRhZywgdDAsIC5zbG93KQorICAgIGNvbmRpdGlvbk9wKHQwLCAudGFyZ2V0KQorICAgIGRpc3Bh
dGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5zbG93Ogor
ICAgIGNhbGxIZWxwZXIoc2xvdykKKyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9vcF9s
b29wX2lmX3RydWU6CisgICAgbm9wCitfbGxpbnRfb3BfanRydWU6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQp
IGJ0aW56IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2p0cnVlKQor
CisKK19sbGludF9vcF9sb29wX2lmX2ZhbHNlOgorICAgIG5vcAorX2xsaW50X29wX2pmYWxzZToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAganVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNy
byAodmFsdWUsIHRhcmdldCkgYnRpeiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9qZmFsc2UpCisKKworbWFjcm8gZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlh
dGVIYW5kbGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAg
IGJpbmVxIHQxLCBDZWxsVGFnLCAuaW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQyCisgICAgY2VsbEhhbmRsZXIoU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlw
ZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6
CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5pbW1lZGlhdGU6CisgICAgb3JpIDEsIHQx
CisgICAgaW1tZWRpYXRlSGFuZGxlcih0MSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorZW5k
CisKK19sbGludF9vcF9qZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxO
dWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRibnogdmFsdWUsIE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0
KSBiaWVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorICAgIAorCitfbGxpbnRfb3Bfam5l
cV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1h
Y3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJ6IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0
YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmluZXEgdmFsdWUsIE51
bGxUYWcsIHRhcmdldCBlbmQpCisKKworX2xsaW50X29wX2puZXFfcHRyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcEpuZXFQdHJCcmFuY2gKKyAg
ICBicGVxIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxLCAub3BKbmVxUHRyRmFsbFRocm91
Z2gKKy5vcEpuZXFQdHJCcmFuY2g6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorLm9wSm5l
cVB0ckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8gY29tcGFyZShpbnRl
Z2VyQ29tcGFyZSwgZG91YmxlQ29tcGFyZSwgaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0Mgor
ICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwLCB0
MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MywgdDIsIHQzKQorICAgIGJpbmVx
IHQwLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMk5v
dEludAorICAgIGludGVnZXJDb21wYXJlKHQxLCB0MywgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0
Y2goNCkKKworLm9wMU5vdEludDoKKyAgICBiaWEgdDAsIExvd2VzdFRhZywgLnNsb3cKKyAgICBi
aWIgdDIsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQyLCBJbnQz
MlRhZywgLnNsb3cKKyAgICBjaTJkIHQzLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisu
b3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQzLCB0MiwgZnQxCisub3AxTm90SW50UmVh
ZHk6CisgICAgZmlpMmQgdDEsIHQwLCBmdDAKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAu
anVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisub3AyTm90SW50OgorICAgIGNpMmQgdDEs
IGZ0MAorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGZpaTJkIHQzLCB0MiwgZnQx
CisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2go
NCkKKworLmp1bXBUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorCisuc2xvdzoK
KyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9v
cF9sb29wX2lmX2xlc3M6CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3M6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmRsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9qbGVzcykKKworCitfbGxpbnRfb3Bfam5sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmln
dGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHRhcmdldCkgYmRndGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfam5sZXNzKQorCisKK19sbGludF9vcF9sb29wX2lmX2dyZWF0ZXI6CisgICAgbm9w
CitfbGxpbnRfb3BfamdyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUo
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndCBsZWZ0
LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcikKKwor
CitfbGxpbnRfb3Bfam5ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJl
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVx
dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5ncmVh
dGVyKQorCisKK19sbGludF9vcF9sb29wX2lmX2xlc3NlcToKKyAgICBub3AKK19sbGludF9vcF9q
bGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxIGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2psZXNzZXEpCisKKworX2xsaW50X29w
X2pubGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3R1biBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmxlc3NlcSkKKworCitfbGxpbnRf
b3BfbG9vcF9pZl9ncmVhdGVyZXE6CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXJlcToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcmVxKQorCisKK19sbGludF9vcF9qbmdyZWF0
ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0dW4gbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5ncmVhdGVyZXEpCisKKworX2xsaW50X29w
X2xvb3BfaGludDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZv
ckxvb3AoKQorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N3aXRjaF9pbW06CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwg
dDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIK
KyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQzICAgIyBGSVhNRTogd291bGQgYmUg
bmljZSB0byBwZWVwaG9sZSB0aGlzIQorICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1f
aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisg
ICAgYWRkcCB0MywgdDIKKyAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcFN3aXRjaEltbU5vdElu
dAorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBT
aW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9w
U3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9m
ZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDRd
LCB0MQorICAgIGJ0aXogdDEsIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0Y2hC
cmFuY2hXaXRoT2Zmc2V0KHQxKQorCisub3BTd2l0Y2hJbW1Ob3RJbnQ6CisgICAgYmliIHQxLCBM
b3dlc3RUYWcsIC5vcFN3aXRjaEltbVNsb3cgICMgR28gdG8gc2xvdyBwYXRoIGlmIGl0J3MgYSBk
b3VibGUuCisub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BD
XSkKKworLm9wU3dpdGNoSW1tU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dp
dGNoX2ltbSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9zd2l0Y2hfY2hhcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDRbUENd
LCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0
MgorICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6OlJhcmVEYXRhOjptX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJP
ZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5v
cFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MQorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU1N0
cmluZzo6bV92YWx1ZVt0MF0sIHQwCisgICAgYmluZXEgU3RyaW5nSW1wbDo6bV9sZW5ndGhbdDBd
LCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTdHJpbmdJbXBsOjptX2Rh
dGE4W3QwXSwgdDEKKyAgICBidGlueiBTdHJpbmdJbXBsOjptX2hhc2hBbmRGbGFnc1t0MF0sIEhh
c2hGbGFnczhCaXRCdWZmZXIsIC5vcFN3aXRjaENoYXI4Qml0CisgICAgbG9hZGggW3QxXSwgdDAK
KyAgICBqbXAgLm9wU3dpdGNoQ2hhclJlYWR5Cisub3BTd2l0Y2hDaGFyOEJpdDoKKyAgICBsb2Fk
YiBbdDFdLCB0MAorLm9wU3dpdGNoQ2hhclJlYWR5OgorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxl
OjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNl
dHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAg
bG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0
W3QyXSwgdDIKKyAgICBsb2FkaSBbdDIsIHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0
Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9w
U3dpdGNoQ2hhckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19s
bGludF9vcF9zd2l0Y2hfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX3N0cmluZykKKyAgICBkaXNwYXRjaCgwKQorCisKK19s
bGludF9vcF9uZXdfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYnRpeiAxMltQQ10s
IC5vcE5ld0Z1bmNVbmNoZWNrZWQKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdP
ZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcE5ld0Z1bmNEb25lCisub3BOZXdG
dW5jVW5jaGVja2VkOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuYykKKy5v
cE5ld0Z1bmNEb25lOgorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19mdW5jX2V4
cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25l
d19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGRvQ2FsbChoZWxwZXIpCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRwIExMSW50
Q2FsbExpbmtJbmZvOjpjYWxsZWVbdDFdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wQ2FsbFNsb3cpCisgICAgYmluZXEgdDMsIHQyLCAu
b3BDYWxsU2xvdworICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBhZGRwIDI0LCBQQworICAgIGxz
aGlmdGkgMywgdDMKKyAgICBhZGRwIGNmciwgdDMgICMgdDMgY29udGFpbnMgdGhlIG5ldyB2YWx1
ZSBvZiBjZnIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX3Njb3BlQ2hhaW5bdDJdLCB0MAorICAg
IHN0b3JlaSB0MiwgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgdDAsIFNj
b3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGxvYWRpIDggLSAyNFtQQ10sIHQyCisg
ICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBzdG9yZXAg
Y2ZyLCBDYWxsZXJGcmFtZVt0M10KKyAgICBzdG9yZWkgdDIsIEFyZ3VtZW50Q291bnQgKyBQYXls
b2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBUYWdPZmZzZXRbdDNd
CisgICAgc3RvcmVpIENlbGxUYWcsIFNjb3BlQ2hhaW4gKyBUYWdPZmZzZXRbdDNdCisgICAgbW92
ZSB0MywgY2ZyCisgICAgY2FsbCBMTEludENhbGxMaW5rSW5mbzo6bWFjaGluZUNvZGVUYXJnZXRb
dDFdCisgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorCisub3BDYWxsU2xvdzoKKyAgICBzbG93UGF0
aEZvckNhbGwoNiwgaGVscGVyKQorZW5kCisKK19sbGludF9vcF9jYWxsOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBlcl9jYWxsKQorCisKK19sbGludF9vcF9j
b25zdHJ1Y3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRfaGVscGVy
X2NvbnN0cnVjdCkKKworCitfbGxpbnRfb3BfY2FsbF92YXJhcmdzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBzbG93UGF0aEZvckNhbGwoNiwgX2xsaW50X2hlbHBlcl9jYWxsX3ZhcmFyZ3Mp
CisKKworX2xsaW50X29wX2NhbGxfZXZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgCisg
ICAgIyBFdmFsIGlzIGV4ZWN1dGVkIGluIG9uZSBvZiB0d28gbW9kZXM6CisgICAgIworICAgICMg
MSkgV2UgZmluZCB0aGF0IHdlJ3JlIHJlYWxseSBpbnZva2luZyBldmFsKCkgaW4gd2hpY2ggY2Fz
ZSB0aGUKKyAgICAjICAgIGV4ZWN1dGlvbiBpcyBwZXJmb21lZCBlbnRpcmVseSBpbnNpZGUgdGhl
IGhlbHBlciwgYW5kIGl0CisgICAgIyAgICByZXR1cm5zIHRoZSBQQyBvZiBhIGZ1bmN0aW9uIHRo
YXQganVzdCByZXR1cm5zIHRoZSByZXR1cm4gdmFsdWUKKyAgICAjICAgIHRoYXQgdGhlIGV2YWwg
cmV0dXJuZWQuCisgICAgIworICAgICMgMikgV2UgZmluZCB0aGF0IHdlJ3JlIGludm9raW5nIHNv
bWV0aGluZyBjYWxsZWQgZXZhbCgpIHRoYXQgaXMgbm90CisgICAgIyAgICB0aGUgcmVhbCBldmFs
LiBUaGVuIHRoZSBoZWxwZXIgcmV0dXJucyB0aGUgUEMgb2YgdGhlIHRoaW5nIHRvCisgICAgIyAg
ICBjYWxsLCBhbmQgd2UgY2FsbCBpdC4KKyAgICAjCisgICAgIyBUaGlzIGFsbG93cyB1cyB0byBo
YW5kbGUgdHdvIGNhc2VzLCB3aGljaCB3b3VsZCByZXF1aXJlIGEgdG90YWwgb2YKKyAgICAjIHVw
IHRvIGZvdXIgcGllY2VzIG9mIHN0YXRlIHRoYXQgY2Fubm90IGJlIGVhc2lseSBwYWNrZWQgaW50
byB0d28KKyAgICAjIHJlZ2lzdGVycyAoQyBmdW5jdGlvbnMgY2FuIHJldHVybiB1cCB0byB0d28g
cmVnaXN0ZXJzLCBlYXNpbHkpOgorICAgICMKKyAgICAjIC0gVGhlIGNhbGwgZnJhbWUgcmVnaXN0
ZXIuIFRoaXMgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVuIG1vZGlmaWVkCisgICAgIyAgIGJ5IHRo
ZSBoZWxwZXIsIGJ1dCB0aGUgY29udmVudGlvbiBpcyB0aGF0IGl0IHJldHVybnMgaXQuIEl0J3Mg
bm90CisgICAgIyAgIHRvdGFsbHkgY2xlYXIgaWYgdGhhdCdzIG5lY2Vzc2FyeSwgc2luY2UgdGhl
IGNmciBpcyBjYWxsZWUgc2F2ZS4KKyAgICAjICAgQnV0IHRoYXQncyBvdXIgc3R5bGUgaW4gdGhp
cyBoZXJlIGludGVycHJldGVyIHNvIHdlIHN0aWNrIHdpdGggaXQuCisgICAgIworICAgICMgLSBB
IGJpdCB0byBzYXkgaWYgdGhlIGhlbHBlciBzdWNjZXNzZnVsbHkgZXhlY3V0ZWQgdGhlIGV2YWwg
YW5kIGhhcworICAgICMgICB0aGUgcmV0dXJuIHZhbHVlLCBvciBkaWQgbm90IGV4ZWN1dGUgdGhl
IGV2YWwgYnV0IGhhcyBhIFBDIGZvciB1cworICAgICMgICB0byBjYWxsLgorICAgICMKKyAgICAj
IC0gRWl0aGVyOgorICAgICMgICAtIFRoZSBKUyByZXR1cm4gdmFsdWUgKHR3byByZWdpc3RlcnMp
LCBvcgorICAgICMKKyAgICAjICAgLSBUaGUgUEMgdG8gY2FsbC4KKyAgICAjCisgICAgIyBJdCB0
dXJucyBvdXQgdG8gYmUgZWFzaWVyIHRvIGp1c3QgYWx3YXlzIGhhdmUgdGhpcyByZXR1cm4gdGhl
IGNmcgorICAgICMgYW5kIGEgUEMgdG8gY2FsbCwgYW5kIHRoYXQgUEMgbWF5IGJlIGEgZHVtbXkg
dGh1bmsgdGhhdCBqdXN0CisgICAgIyByZXR1cm5zIHRoZSBKUyB2YWx1ZSB0aGF0IHRoZSBldmFs
IHJldHVybmVkLgorICAgIAorICAgIHNsb3dQYXRoRm9yQ2FsbCg0LCBfbGxpbnRfaGVscGVyX2Nh
bGxfZXZhbCkKKworCitfbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQ6CisgICAgZGlzcGF0Y2hB
ZnRlckNhbGwoKQorCisKK19sbGludF9vcF90ZWFyX29mZl9hY3RpdmF0aW9uOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZB
Y3RpdmF0aW9uQ3JlYXRlZAorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZh
bHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQKKy5vcFRlYXJPZmZBY3RpdmF0
aW9uQ3JlYXRlZDoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGVhcl9vZmZfYWN0aXZh
dGlvbikKKy5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF90ZWFyX29mZl9hcmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN1YmkgMSwgdDAgICAjIEdldCB0aGUgdW5tb2RpZmll
ZEFyZ3VtZW50c1JlZ2lzdGVyCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5
VmFsdWVUYWcsIC5vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cykKKy5vcFRlYXJPZmZBcmd1bWVudHNOb3RD
cmVhdGVkOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFjcm8gZG9SZXR1cm4oKQorICAgIGxvYWRw
IFJldHVyblBDW2Nmcl0sIHQyCisgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgY2ZyCisgICAg
cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4odDIpCisgICAgcmV0CitlbmQKKworX2xs
aW50X29wX3JldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZv
ckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQyLCB0MSwgdDApCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF9vcF9jYWxsX3B1dF9y
ZXN1bHQ6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgc3Rv
cmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MiwgOF0KKyAgICB2YWx1ZVByb2ZpbGUodDEsIHQwLCB0MykKKyAgICB0cmFjZUV4
ZWN1dGlvbigpICMgTmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIGl0IHdvdWxkIGNsb2JiZXIgdDEs
IHQwCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmV0X29iamVjdF9vcl90aGlzOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQor
ICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0
MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0Cisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6
bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BSZXRPYmpl
Y3RPclRoaXNOb3RPYmplY3QKKyAgICBkb1JldHVybigpCisKKy5vcFJldE9iamVjdE9yVGhpc05v
dE9iamVjdDoKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQyLCB0MSwgdDApCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF9vcF9tZXRob2RfY2hlY2s6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgV2UgaWdub3JlIG1ldGhvZCBjaGVja3MgYW5k
IHVzZSBub3JtYWwgZ2V0X2J5X2lkIG9wdGltaXphdGlvbnMuCisgICAgZGlzcGF0Y2goMSkKKwor
CitfbGxpbnRfb3Bfc3RyY2F0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfc3RyY2F0KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Rv
X3ByaW1pdGl2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQyCisg
ICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQw
KQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BUb1ByaW1pdGl2ZUlzSW1tCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5vcFRvUHJpbWl0aXZlU2xv
d0Nhc2UKKy5vcFRvUHJpbWl0aXZlSXNJbW06CisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2Zy
LCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBk
aXNwYXRjaCgzKQorCisub3BUb1ByaW1pdGl2ZVNsb3dDYXNlOgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl90b19wcmltaXRpdmUpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bf
Z2V0X3BuYW1lczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2dldF9wbmFtZXMpCisgICAgZGlzcGF0Y2goMCkgIyBUaGUgaGVscGVyIGVpdGhlciBh
ZHZhbmNlcyB0aGUgUEMgb3IganVtcHMgdXMgdG8gc29tZXdoZXJlIGVsc2UuCisKKworX2xsaW50
X29wX25leHRfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwg
dDEKKyAgICBsb2FkaSAxNltQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XSwgdDAKKyAgICBiaWVxIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCAub3BOZXh0
UG5hbWVFbmQKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQyLCA4XSwgdDIKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2pzU3Ry
aW5nc1t0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgOF0sIHQzCisgICAgYWRkaSAxLCB0MAor
ICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDRbUENd
LCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MworICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGJwbmVxIHQxLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFByb3RvdHlwZUNoYWluW3QyXSwgdDAKKyAgICBs
b2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDBdLCB0MAorICAgIGJ0cHogW3QwXSwgLm9w
TmV4dFBuYW1lVGFyZ2V0Cisub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3A6CisgICAgYmll
cSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W3QxXSwgTnVsbFRhZywgLm9wTmV4
dFBuYW1lU2xvdworICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zm
c2V0W3QxXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDEKKyAgICBi
cG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGFkZHAgNCwgdDAKKyAgICBidHBu
eiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKKy5vcE5leHRQbmFtZVRhcmdl
dDoKKyAgICBkaXNwYXRjaEJyYW5jaCgyNFtQQ10pCisKKy5vcE5leHRQbmFtZUVuZDoKKyAgICBk
aXNwYXRjaCg3KQorCisub3BOZXh0UG5hbWVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9uZXh0X3BuYW1lKSAjIFRoaXMgZWl0aGVyIGtlZXBzIHRoZSBQQyB3aGVyZSBpdCB3YXMg
KGNhdXNpbmcgdXMgdG8gbG9vcCkgb3Igc2V0cyBpdCB0byB0YXJnZXQuCisgICAgZGlzcGF0Y2go
MCkKKworCitfbGxpbnRfb3BfcHVzaF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfc2NvcGUpCisgICAgZGlzcGF0Y2goMikKKwor
CitfbGxpbnRfb3BfcG9wX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcG9wX3Njb3BlKQorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50
X29wX3B1c2hfbmV3X3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcHVzaF9uZXdfc2NvcGUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfY2F0Y2g6CisgICAgIyBUaGlzIGlzIHdoZXJlIHdlIGVuZCB1cCBmcm9tIHRoZSBKSVQn
cyB0aHJvdyB0cmFtcG9saW5lIChiZWNhdXNlIHRoZQorICAgICMgbWFjaGluZSBjb2RlIHJldHVy
biBhZGRyZXNzIHdpbGwgYmUgc2V0IHRvIF9sbGludF9vcF9jYXRjaCksIGFuZCBmcm9tCisgICAg
IyB0aGUgaW50ZXJwcmV0ZXIncyB0aHJvdyB0cmFtcG9saW5lIChzZWUgX2xsaW50X3Rocm93X3Ry
YW1wb2xpbmUpLgorICAgICMgVGhlIEpJVCB0aHJvd2luZyBwcm90b2NvbCBjYWxscyBmb3IgdGhl
IGNmciB0byBiZSBpbiB0MC4gVGhlIHRocm93aW5nCisgICAgIyBjb2RlIG11c3QgaGF2ZSBrbm93
biB0aGF0IHdlIHdlcmUgdGhyb3dpbmcgdG8gdGhlIGludGVycHJldGVyLCBhbmQgaGF2ZQorICAg
ICMgc2V0IEpTR2xvYmFsRGF0YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93LgorICAgIG1v
dmUgdDAsIGNmcgorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0Mwor
ICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRocm93W3QzXSwg
UEMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNd
LCB0MAorICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSwg
dDEKKyAgICBzdG9yZWkgMCwgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0
W3QzXQorICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiAr
IFRhZ09mZnNldFt0M10gICAgICAgCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2Zy
LCB0MiwgOF0KKyAgICB0cmFjZUV4ZWN1dGlvbigpICAjIFRoaXMgbmVlZHMgdG8gYmUgaGVyZSBi
ZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY2xvYmJlciB0MCwgdDEsIHQyLCB0MyBhYm92ZS4KKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvdzoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rocm93KQorICAgIGRpc3BhdGNoKDIpCisK
KworX2xsaW50X29wX3Rocm93X3JlZmVyZW5jZV9lcnJvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9qc3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFkZGkgMyAqIDQsIFBDLCB0MQorICAgIHN0b3JlaSB0
MSwgW2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKworX2xsaW50X29w
X3NyZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxv
YWRwIFtjZnIsIHQwLCA4XSwgUEMKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9kZWJ1
ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Rl
YnVnKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Byb2ZpbGVfd2lsbF9jYWxsOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjplbmFibGVkUHJv
ZmlsZXJSZWZlcmVuY2Vbc3BdLCB0MAorICAgIGJ0cHogW3QwXSwgLm9wUHJvZmlsZVdpbGxDYWxs
RG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCkKKy5v
cFByb2ZpbGVXaWxsQ2FsbERvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJv
ZmlsZV9kaWRfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tG
cmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5v
cFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmls
ZV9kaWRfY2FsbCkKKy5vcFByb2ZpbGVEaWRDYWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisK
K19sbGludF9vcF9lbmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9K
SVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
CisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5l
OgorICAgICMgV2hlbiB0aHJvd2luZyBmcm9tIHRoZSBpbnRlcnByZXRlciAoaS5lLiB0aHJvd2lu
ZyBmcm9tIExMSW50SGVscGVycyksIHNvCisgICAgIyB0aGUgdGhyb3cgdGFyZ2V0IGlzIG5vdCBu
ZWNlc3NhcmlseSBpbnRlcnByZXRlZCBjb2RlLCB3ZSBjb21lIHRvIGhlcmUuCisgICAgIyBUaGlz
IGVzc2VudGlhbGx5IGVtdWxhdGVzIHRoZSBKSVQncyB0aHJvd2luZyBwcm90b2NvbC4KKyAgICBs
b2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2Jh
bERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0
YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCitfbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxf
dHJhbXBvbGluZToKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpCisgICAg
bG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9i
YWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6
dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworIyBMYXN0bHksIG1ha2Ugc3VyZSB0aGF0
IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxsIG9wY29kZXMuCisj
IFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcgTExJbnQgb3IgZWl0
aGVyIEpJVC4gV2UgYXNzZXJ0CisjIGFzIG11Y2guCisKK21hY3JvIG5vdFN1cHBvcnRlZCgpCisg
ICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgY3Jhc2goKQorICAgIGVsc2UKKyAgICAgICAg
IyBXZSBzaG91bGQgdXNlIHdoYXRldmVyIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSBpbnN0cnVjdGlv
biBpcywganVzdCB0bworICAgICAgICAjIGVuc3VyZSB0aGF0IHRoZXJlIGlzIGEgZ2FwIGJldHdl
ZW4gaW5zdHJ1Y3Rpb24gbGFiZWxzLiBJZiBtdWx0aXBsZQorICAgICAgICAjIHNtYWxsZXN0IGlu
c3RydWN0aW9ucyBleGlzdCwgd2Ugc2hvdWxkIHBpY2sgdGhlIG9uZSB0aGF0IGlzIG1vc3QKKyAg
ICAgICAgIyBsaWtlbHkgcmVzdWx0IGluIGV4ZWN1dGlvbiBiZWluZyBoYWx0ZWQuIEN1cnJlbnRs
eSB0aGF0IGlzIHRoZSBicmVhaworICAgICAgICAjIGluc3RydWN0aW9uIG9uIGFsbCBhcmNoaXRl
Y3R1cmVzIHdlJ3JlIGludGVyZXN0ZWQgaW4uIChCcmVhayBpcyBpbnQzCisgICAgICAgICMgb24g
SW50ZWwsIHdoaWNoIGlzIDEgYnl0ZSwgYW5kIGJrcHQgb24gQVJNdjcsIHdoaWNoIGlzIDIgYnl0
ZXMuKQorICAgICAgICBicmVhaworICAgIGVuZAorZW5kCisKK19sbGludF9vcF9nZXRfYXJyYXlf
bGVuZ3RoOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY2hhaW46
CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jdXN0b21fY2hhaW46
CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jdXN0b21fcHJvdG86
CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jdXN0b21fc2VsZjoK
KyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dlbmVyaWM6CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJfY2hhaW46CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJfcHJvdG86CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJfc2VsZjoKKyAgICBu
b3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3Byb3RvOgorICAgIG5vdFN1cHBv
cnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQor
CitfbGxpbnRfb3BfZ2V0X3N0cmluZ19sZW5ndGg6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xs
aW50X29wX3B1dF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9v
cF9wdXRfYnlfaWRfcmVwbGFjZToKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb246CisgICAgbm90U3VwcG9ydGVkKCkKKworCisjIEluZGljYXRlIHRo
ZSBlbmQgb2YgTExJbnQuCitfbGxpbnRfZW5kOgorICAgIGNyYXNoKCkKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5j
bHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCisjaW5jbHVkZSA8d3RmL0lubGluZUFTTS5o
PgorCisjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5U
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExvd0xldmVs
SW50ZXJwcmV0ZXJfaAorI2RlZmluZSBMb3dMZXZlbEludGVycHJldGVyX2gKKworI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiT3Bjb2Rl
LmgiCisKKyNkZWZpbmUgTExJTlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxlbmd0aCkgZXh0
ZXJuICJDIiB2b2lkIGxsaW50XyMjb3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKExM
SU5UX0lOU1RSVUNUSU9OX0RFQ0wpOworI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wKKwor
ZXh0ZXJuICJDIiB2b2lkIGxsaW50X2JlZ2luKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW5k
KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOworZXh0ZXJuICJD
IiB2b2lkIGxsaW50X2V2YWxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9nZW5l
cmljX3JldHVybl9wb2ludCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2Zyb21faGVs
cGVyX3RyYW1wb2xpbmUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19kdXJpbmdfY2Fs
bF90cmFtcG9saW5lKCk7CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBM
b3dMZXZlbEludGVycHJldGVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FybXY3LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FybXY3LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkzIEBACisjIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitjbGFzcyBTcGVjaWFsUmVnaXN0ZXIKKyAgZGVm
IGluaXRpYWxpemUobmFtZSkKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBkZWYgYXJt
VjdPcGVyYW5kCisgICAgQG5hbWUKKyAgZW5kCitlbmQKKworQVJNdjdfREFUQV9SRUcgPSBTcGVj
aWFsUmVnaXN0ZXIubmV3KCJpcCIpCitBUk12N19BRERSX1JFRyA9IFNwZWNpYWxSZWdpc3Rlci5u
ZXcoInIzIikKKworZGVmIG1vdmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJl
bnRseSB3ZSBvbmx5IGhhbmRsZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1v
di9tb3Z0IGZvciB0aGUgY29tcGxleCBvbmVzLgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwg
MjU2CisgICAgJGFzbS5wdXRzICJtb3Z3IFwjI3t2YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVy
YW5kfSIKKyAgZWxzaWYgKH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20u
cHV0cyAibXZudyBcIyN7fnZhbHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNl
CisgICAgJGFzbS5wdXRzICJtb3Z3IFwjI3t2YWx1ZSAmIDB4ZmZmZn0sICN7cmVnaXN0ZXIuYXJt
VjdPcGVyYW5kfSIKKyAgICBpZiAodmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCisgICAgICAkYXNt
LnB1dHMgIm1vdnQgXCMje3ZhbHVlID4+IDE2fSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9Igor
ICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJh
bmQKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICJyMCIK
KyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgICJyMSIKKyAgICB3aGVuICJ0MiIsICJh
MiIKKyAgICAgICJyMiIKKyAgICB3aGVuICJhMyIKKyAgICAgICJyMyIKKyAgICB3aGVuICJ0MyIK
KyAgICAgICJyNCIKKyAgICB3aGVuICJ0NCIKKyAgICAgICJyNyIKKyAgICB3aGVuICJjZnIiCisg
ICAgICAicjUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1vcnlPcGVyYW5kCisgIGVuZAorICAKKyAgZGVmIGFy
bVY3UG9zc2libGVNZW1vcnlPcGVyYW5kCisgICAgYXJtVjdPcGVyYW5kCisgIGVuZAorICAKKyAg
ZGVmIGFybVY3TG9hZFN0b3JlV3JhcAorICAgIHlpZWxkCisgIGVuZAorZW5kCisKK2NsYXNzIEZQ
UmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAi
ZnQwIiwgImZyIgorICAgICAgImQwIgorICAgIHdoZW4gImZyMSIsCisgICAgICAiZDEiCisgICAg
d2hlbiAiZnIyIgorICAgICAgImQyIgorICAgIHdoZW4gImZyMyIKKyAgICAgICJkMyIKKyAgICB3
aGVuICJmcjQiCisgICAgICAiZDQiCisgICAgd2hlbiAiZnI1IgorICAgICAgImQ1IgorICAgIGVs
c2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3UHJlcGFyZVBv
c3NpYmxlTWVtb3J5T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5
T3BlcmFuZAorICAgIGFybVY3T3BlcmFuZAorICBlbmQKKyAgCisgIGRlZiBhcm1WN0xvYWRTdG9y
ZVdyYXAKKyAgICB5aWVsZCBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBk
ZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2UgIkludmFsaWQgaW1tZWRpYXRlICN7dmFsdWV9IiBp
ZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAiIyR7dmFsdWV9IgorICBlbmQKKyAgCisg
IGRlZiBhcm1WN1ByZXBhcmVQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgZW5kCisgIAorICBkZWYg
YXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBhcm1WN09wZXJhbmQKKyAgZW5kCisgIAor
ICBkZWYgYXJtVjdMb2FkU3RvcmVXcmFwCisgICAgeWllbGQgc2VsZgorICBlbmQKK2VuZAorCitt
b2R1bGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisgIGRlZiBhcm1WN0xvYWRTdG9yZVdyYXAKKyAg
ICBzZWxmLmFybVY3UHJlcGFyZVBvc3NpYmxlTWVtb3J5T3BlcmFuZAorICAgICRhc20ucHV0cyAi
XHRsZHIgI3tzZWxmLmFybVY3UG9zc2libHlNZW1vcnlPcGVyYW5kfSwgI3tBUk12N19EQVRBX1JF
Ry5hcm1WN09wZXJhbmR9IgorICAgIHlpZWxkIEFSTXY3X0RBVEFfUkVHCisgICAgJGFzbS5wdXRz
ICJcdHN0ciAje0FSTXY3X0RBVEFfUkVHLmFybVY3T3BlcmFuZH0sICN7c2VsZi5hcm1WN1Bvc3Np
Ymx5TWVtb3J5T3BlcmFuZH0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgaW5jbHVk
ZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKworICBkZWYgYXJtVjdQcmVwYXJlUG9zc2libGVNZW1v
cnlPcGVyYW5kCisgICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgfHwgb2Zmc2V0LnZhbHVlID4g
MHhmZmYKKyAgICAgIG1vdmVJbW1lZGlhdGUob2Zmc2V0LnZhbHVlLCBBUk12N19BRERSX1JFRykK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAg
ICBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiB8fCBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAg
Ilsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIK
KyAgICBlbHNlCisgICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje29mZnNldC5hcm1WN09w
ZXJhbmR9XSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGluY2x1
ZGUgQVJNdjdBZGRyZXNzVXRpbGl0aWVzCisKKyAgZGVmIGFybVY3UHJlcGFyZVBvc3NpYmxlTWVt
b3J5T3BlcmFuZAorICAgIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICBtb3ZlSW1tZWRpYXRl
KG9mZnNldC52YWx1ZSwgQVJNdjdfQUREUl9SRUcpCisgICAgICAkYXNtLnB1dHMgImFkZHcgI3tB
Uk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSIKKyAgICBl
bmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdQb3NzaWJsZU1lbW9yeU9wZXJhbmQKKyAgICBpZiBv
ZmZzZXQudmFsdWUgIT0gMAorICAgICAgIlsje0FSTXY3X0FERFJfUkVHLmFybVY3T3BlcmFuZH0s
ICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZX1dIgorICAgIGVsc2UKKyAgICAg
ICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tz
Y2FsZX1dIgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAg
aW5jbHVkZSBBUk12N0FkZHJlc3NVdGlsaXRpZXMKKyAgCisgIGRlZiBhcm1WN1ByZXBhcmVQb3Nz
aWJsZU1lbW9yeU9wZXJhbmQKKyAgICBtb3ZlSW1tZWRpYXRlKGFkZHJlc3MudmFsdWUsIEFSTXY3
X0FERFJfUkVHKQorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Bvc3NpYmxlTWVtb3J5T3BlcmFuZAor
ICAgICJbI3tBUk12N19BRERSX1JFRy5hcm1WN09wZXJhbmR9XSIKKyAgZW5kCitlbmQKKworCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDEzNSBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3Jl
cXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJvZmZzZXRz
IgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2VsZl9oYXNoIgorcmVxdWlyZSAic2V0dGlu
Z3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2NsYXNzIEFzc2VtYmxlcgorICBkZWYgaW5pdGlh
bGl6ZShvdXRwKQorICAgIEBvdXRwID0gb3V0cAorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisg
IAorICBkZWYgZW50ZXJBc20KKyAgICBAb3V0cC5wdXRzICJhc20gKCIKKyAgICBAc3RhdGUgPSA6
YXNtCisgIGVuZAorICAKKyAgZGVmIGxlYXZlQXNtCisgICAgQG91dHAucHV0cyAiKTsiCisgICAg
QHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBpbkFzbQorICAgIGVudGVyQXNtCisgICAg
eWllbGQKKyAgICBsZWF2ZUFzbQorICBlbmQKKyAgCisgIGRlZiBwdXRzKCpsaW5lKQorICAgIHJh
aXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnB1dHMoIlwiXFx0IiArIGxpbmUu
am9pbignJykgKyAiXFxuXCIiKQorICBlbmQKKyAgCisgIGRlZiBwcmludChsaW5lKQorICAgIHJh
aXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnByaW50KCJcIiIgKyBsaW5lICsg
IlwiIikKKyAgZW5kCisgIAorICBkZWYgcHV0c0xhYmVsKGxhYmVsTmFtZSkKKyAgICByYWlzZSB1
bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wdXRzKCJcIi5nbG9ibCBcIiBTWU1CT0xf
U1RSSU5HKCN7bGFiZWxOYW1lfSkgXCJcXG5cIiIpCisgICAgQG91dHAucHV0cygiSElERV9TWU1C
T0woI3tsYWJlbE5hbWV9KSBcIlxcblwiIikKKyAgICBAb3V0cC5wdXRzKCJTWU1CT0xfU1RSSU5H
KCN7bGFiZWxOYW1lfSkgXCI6XFxuXCIiKQorICBlbmQKKyAgCisgIGRlZiBwdXRzTG9jYWxMYWJl
bChsYWJlbE5hbWUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAgQG91dHAu
cHV0cygiTE9DQUxfTEFCRUxfU1RSSU5HKCN7bGFiZWxOYW1lfSkgXCI6XFxuXCIiKQorICBlbmQK
KyAgCisgIGRlZiBzZWxmLmxhYmVsUmVmZXJlbmNlKGxhYmVsTmFtZSkKKyAgICAiXCIgU1lNQk9M
X1NUUklORygje2xhYmVsTmFtZX0pIFwiIgorICBlbmQKKyAgCisgIGRlZiBzZWxmLmxvY2FsTGFi
ZWxSZWZlcmVuY2UobGFiZWxOYW1lKQorICAgICJcIiBMT0NBTF9MQUJFTF9TVFJJTkcoI3tsYWJl
bE5hbWV9KSBcIiIKKyAgZW5kCisgIAorICBkZWYgY29tbWVudCh0ZXh0KQorICAgIEBvdXRwLnB1
dHMgIi8vICN7dGV4dH0iCisgIGVuZAorZW5kCisKK2FzbUZpbGUgPSBBUkdWLnNoaWZ0CitvZmZz
ZXRzRmlsZSA9IEFSR1Yuc2hpZnQKK291dHB1dEZsbm0gPSBBUkdWLnNoaWZ0CisKK29mZnNldHNM
aXN0LCBjb25maWdJbmRleCA9IG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgob2Zmc2V0c0Zp
bGUpCitpbnB1dERhdGEgPSBJTzo6cmVhZChhc21GaWxlKQorCitpbnB1dEhhc2ggPQorICAiLy8g
b2ZmbGluZWFzbSBpbnB1dCBoYXNoOiAiICsgRGlnZXN0OjpTSEExLmhleGRpZ2VzdChpbnB1dERh
dGEpICsKKyAgIiAiICsgRGlnZXN0OjpTSEExLmhleGRpZ2VzdCgob2Zmc2V0c0xpc3QgKyBbY29u
ZmlnSW5kZXhdKS5qb2luKCcgJykpICsKKyAgIiAiICsgc2VsZkhhc2gKKworaWYgRmlsZVRlc3Qu
ZXhpc3Q/IG91dHB1dEZsbm0KKyAgRmlsZS5vcGVuKG91dHB1dEZsbm0sICJyIikgeworICAgIHwg
aW5wIHwKKyAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAgIGlmIGZpcnN0TGluZSBhbmQgZmly
c3RMaW5lLmNob21wID09IGlucHV0SGFzaAorICAgICAgJHN0ZGVyci5wdXRzICJOb3RoaW5nIGNo
YW5nZWQuIgorICAgICAgZXhpdCAwCisgICAgZW5kCisgIH0KK2VuZAorCitGaWxlLm9wZW4ob3V0
cHV0RmxubSwgInciKSB7CisgIHwgb3V0cCB8CisgICRvdXRwdXQgPSBvdXRwCisgICRvdXRwdXQu
cHV0cyBpbnB1dEhhc2gKKyAgCisgICRhc20gPSBBc3NlbWJsZXIubmV3KCRvdXRwdXQpCisgIAor
ICBhc3QgPSBwYXJzZShsZXgoaW5wdXREYXRhKSkKKyAgCisgIGZvclNldHRpbmdzKGNvbXB1dGVT
ZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpW2NvbmZpZ0luZGV4XSwgYXN0KSB7CisgICAgfCBjb25j
cmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgYXNzZXJ0Q29uZmlndXJh
dGlvbihjb25jcmV0ZVNldHRpbmdzKQorICAgIGxvd0xldmVsQVNUID0gbG93TGV2ZWxBU1QucmVz
b2x2ZSgqYnVpbGRPZmZzZXRzTWFwKGxvd0xldmVsQVNULCBvZmZzZXRzTGlzdCkpCisgICAgZW1p
dENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tl
bmQpIHsKKyAgICAgICRhc20uaW5Bc20geworICAgICAgICBsb3dMZXZlbEFTVC5sb3dlcihiYWNr
ZW5kKQorICAgICAgfQorICAgIH0KKyAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYXN0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MTMgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMKKyMgQmFzZSB1dGlsaXR5IHR5cGVzIGZv
ciB0aGUgQVNULgorIworCisjIFZhbGlkIG1ldGhvZHMgZm9yIE5vZGU6CisjCisjIG5vZGUuY2hp
bGRyZW4gLT4gUmV0dXJucyBhbiBhcnJheSBvZiBpbW1lZGlhdGUgY2hpbGRyZW4uCisjCisjIG5v
ZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgc3RyaWN0IGRlc2NlbmRh
bnRzIChjaGlsZHJlbgorIyAgICAgYW5kIGNoaWxkcmVuIG9mIGNoaWxkcmVuLCB0cmFuc2l0aXZl
bHkpLgorIworIyBub2RlLmZsYXR0ZW4gLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRo
ZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5kCisjICAgICB0aGUgbm9kZSBpdHNlbGYuCisjCisjIG5v
ZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aG9zZSBlbGVt
ZW50cyBpbgorIyAgICAgbm9kZS5mbGF0dGVuIHRoYXQgYXJlIG9mIHRoZSBnaXZlbiB0eXBlIChp
c19hPyB0eXBlIHJldHVybnMgdHJ1ZSkuCisjCisjIG5vZGUubWFwQ2hpbGRyZW57fHZ8IC4uLn0g
LT4gUmV0dXJucyBhIG5ldyBub2RlIHdpdGggYWxsIGNoaWxkcmVuCisjICAgICByZXBsYWNlZCBh
Y2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJsb2NrLgorIworIyBFeGFtcGxlczoKKyMKKyMgbm9kZS5m
aWx0ZXIoU2V0dGluZykudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc2V0dGluZ3MgdGhhdCB0
aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVsc2UgYmxvY2tzIGRlcGVuZCBvbi4KKyMKKyMgbm9kZS5m
aWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzdHJ1Y3R1cmUg
b2Zmc2V0cworIyAgICAgdGhhdCB0aGUgQVNUIGRlcGVuZHMgb24uCisKK2NsYXNzIE5vZGUKKyAg
YXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4p
CisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgIGVuZAorICAKKyAgZGVmIGNvZGVPcmln
aW5TdHJpbmcKKyAgICAibGluZSBudW1iZXIgI3tAY29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAg
ZGVmIGRlc2NlbmRhbnRzCisgICAgY2hpbGRyZW4uY29sbGVjdHt8dnwgdi5mbGF0dGVufS5mbGF0
dGVuCisgIGVuZAorICAKKyAgZGVmIGZsYXR0ZW4KKyAgICBbc2VsZl0gKyBkZXNjZW5kYW50cwor
ICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIodHlwZSkKKyAgICBmbGF0dGVuLnNlbGVjdHt8dnwgdi5p
c19hPyB0eXBlfQorICBlbmQKK2VuZAorCitjbGFzcyBOb0NoaWxkcmVuIDwgTm9kZQorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAK
KyAgZGVmIGNoaWxkcmVuCisgICAgW10KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldEtleQorICBhdHRyX3JlYWRl
ciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKHN0cnVjdCwgZmllbGQpCisg
ICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAgZGVm
IGhhc2gKKyAgICBAc3RydWN0Lmhhc2ggKyBAZmllbGQuaGFzaCAqIDMKKyAgZW5kCisgIAorICBk
ZWYgZXFsPyhvdGhlcikKKyAgICBAc3RydWN0ID09IG90aGVyLnN0cnVjdCBhbmQgQGZpZWxkID09
IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisgICAgCisjCisjIEFTVCBub2Rlcy4KKyMKKworY2xh
c3MgU3RydWN0T2Zmc2V0IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6Zmll
bGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgICAgQGZpZWxkID0gZmll
bGQKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yRmllbGQo
Y29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBrZXkgPSBTdHJ1Y3RPZmZzZXRLZXkubmV3
KHN0cnVjdCwgZmllbGQpCisgICAgCisgICAgdW5sZXNzIEBAbWFwcGluZ1trZXldCisgICAgICBA
QG1hcHBpbmdba2V5XSA9IFN0cnVjdE9mZnNldC5uZXcoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVs
ZCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdba2V5XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgIiN7c3RydWN0fTo6I3tmaWVsZH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAg
ICBpZiBAc3RydWN0ICE9IG90aGVyLnN0cnVjdAorICAgICAgcmV0dXJuIEBzdHJ1Y3QgPD0+IG90
aGVyLnN0cnVjdAorICAgIGVuZAorICAgIEBmaWVsZCA8PT4gb3RoZXIuZmllbGQKKyAgZW5kCitl
bmQKKworY2xhc3MgU2l6ZW9mIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0Cisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30K
KyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHVubGVzcyBA
QG1hcHBpbmdbc3RydWN0XQorICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBTaXplb2YubmV3KGNv
ZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbc3RydWN0XQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgInNpemVvZiAje0BzdHJ1Y3R9IgorICBlbmQKKyAgCisgIGRl
ZiA8PT4ob3RoZXIpCisgICAgQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgIGVuZAorZW5kCisK
K2NsYXNzIEltbWVkaWF0ZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnZhbHVlCisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEB2YWx1ZSA9IHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3t2YWx1
ZX0iCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIG90aGVyLmlzX2E/IEltbWVkaWF0
ZSBhbmQgb3RoZXIudmFsdWUgPT0gQHZhbHVlCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVk
aWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICBBZGRJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQg
QHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICsgI3ty
aWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMgPCBOb2RlCisg
IGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0
CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxl
ZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBTdWJJbW1lZGlh
dGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IC0gI3tyaWdodC5kdW1wfSkiCisg
IGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDps
ZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0g
cmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAg
ZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBNdWxJbW1lZGlhdGVzLm5ldyhjb2RlT3Jp
Z2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgICIoI3tsZWZ0LmR1bXB9ICogI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2Ns
YXNzIE5lZ0ltbWVkaWF0ZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBjaGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BjaGlsZF0K
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOZWdJbW1lZGlhdGUubmV3KGNvZGVP
cmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigtI3tA
Y2hpbGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklEIDwgTm9DaGlsZHJl
bgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAg
CisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5h
bWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0g
UmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdb
bmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xh
c3MgRlBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYg
c2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1l
XQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gRlBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBu
YW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZSA8IE5vQ2hpbGRyZW4KKyAg
YXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBA
QG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFZhcmlh
YmxlLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRy
ZXNzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFzZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgYmFzZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQGJhc2UgPSBiYXNlCisgICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIFtAYmFzZSwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRy
ZW4KKyAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQG9m
ZnNldCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQuZHVtcH1bI3tiYXNl
LmR1bXB9XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9kZQorICBhdHRyX3Jl
YWRlciA6YmFzZSwgOmluZGV4LCA6c2NhbGUsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisgICAgQGluZGV4ID0gaW5kZXgKKyAgICBAc2NhbGUg
PSBzY2FsZQorICAgIHJhaXNlIHVubGVzcyBbMSwgMiwgNCwgOF0ubWVtYmVyPyBAc2NhbGUKKyAg
ICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BiYXNl
LCBAaW5kZXgsIEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQmFz
ZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQGluZGV4KSwgQHNj
YWxlLCAoeWllbGQgQG9mZnNldCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZz
ZXQuZHVtcH1bI3tiYXNlLmR1bXB9LCAje2luZGV4LmR1bXB9LCAje3NjYWxlfV0iCisgIGVuZAor
ZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIg
OmFkZHJlc3MKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGFkZHJlc3MpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICIje2FkZHJlc3MuZHVtcH1bXSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW5z
dHJ1Y3Rpb24gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpvcGNvZGUsIDpvcGVyYW5kcworICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgb3Bjb2RlLCBvcGVyYW5kcykKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBvcGNvZGUgPSBvcGNvZGUKKyAgICBAb3BlcmFuZHMgPSBvcGVyYW5k
cworICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIG9wZXJhbmRzCisgIGVuZAorICAKKyAg
ZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBA
b3Bjb2RlLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICJcdCIgKyBvcGNvZGUudG9fcyArICIgIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0u
am9pbigiLCAiKQorICBlbmQKK2VuZAorCitjbGFzcyBFcnJvciA8IE5vQ2hpbGRyZW4KKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIlx0ZXJyb3IiCisgIGVuZAorZW5kCisKK2NsYXNzIENvbnN0RGVj
bCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnZhcmlhYmxlLCA6dmFsdWUKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEB2YXJpYWJsZSA9IHZhcmlhYmxlCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisg
IAorICBkZWYgY2hpbGRyZW4KKyAgICBbQHZhcmlhYmxlLCBAdmFsdWVdCisgIGVuZAorICAKKyAg
ZGVmIG1hcENoaWxkcmVuCisgICAgQ29uc3REZWNsLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHZh
cmlhYmxlKSwgKHlpZWxkIEB2YWx1ZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiY29u
c3QgI3tAdmFyaWFibGUuZHVtcH0gPSAje0B2YWx1ZS5kdW1wfSIKKyAgZW5kCitlbmQKKworJGxh
YmVsTWFwcGluZyA9IHt9CisKK2NsYXNzIExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRl
ciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBzZWxmLmZv
ck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAg
ICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBw
aW5nW25hbWVdLmlzX2E/IExhYmVsCisgICAgZWxzZQorICAgICAgJGxhYmVsTWFwcGluZ1tuYW1l
XSA9IExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1hcHBp
bmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitl
bmQKKworY2xhc3MgTG9jYWxMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisKKyAgQEB1bmlxdWVOYW1lQ291bnRlciA9
IDAKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFi
ZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFt
ZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExvY2FsTGFiZWwKKyAgICBlbHNl
CisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTG9jYWxMYWJlbC5uZXcoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVm
IHNlbGYudW5pcXVlKGNvbW1lbnQpCisgICAgbmV3TmFtZSA9ICJfI3tjb21tZW50fSIKKyAgICBp
ZiAkbGFiZWxNYXBwaW5nW25ld05hbWVdCisgICAgICB3aGlsZSAkbGFiZWxNYXBwaW5nW25ld05h
bWUgPSAiXyN7QEB1bmlxdWVOYW1lQ291bnRlcn1fI3tjb21tZW50fSJdCisgICAgICAgIEBAdW5p
cXVlTmFtZUNvdW50ZXIgKz0gMQorICAgICAgZW5kCisgICAgZW5kCisgICAgZm9yTmFtZShuaWws
IG5ld05hbWUpCisgIGVuZAorICAKKyAgZGVmIGNsZWFuTmFtZQorICAgIGlmIG5hbWUgPX4gL15c
Li8KKyAgICAgICJfIiArIG5hbWVbMS4uLTFdCisgICAgZWxzZQorICAgICAgbmFtZQorICAgIGVu
ZAorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitj
bGFzcyBMYWJlbFJlZmVyZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxhYmVsCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsYWJl
bF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBMYWJlbFJlZmVyZW5jZS5uZXco
Y29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBs
YWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAor
ZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVh
ZGVyIDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAg
TG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVu
ZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICBsYWJlbC5uYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlIDwgTm9kZQorICBh
dHRyX3JlYWRlciA6bGlzdAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGlzdCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsaXN0ID0gbGlzdAorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIGxpc3QKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2Mp
CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIEBsaXN0Lm1hcCgmcHJvYykpCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICBsaXN0LmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiXG4iKQor
ICBlbmQKK2VuZAorCitjbGFzcyBUcnVlIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQor
ICAgIHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNlID0gVHJ1ZS5uZXcKKyAgCisg
IGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1
ZQorICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJ0cnVlIgorICBlbmQKK2Vu
ZAorCitjbGFzcyBGYWxzZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBl
cihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IEZhbHNlLm5ldworICAKKyAgZGVmIHNl
bGYuaW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVmIHZhbHVlCisgICAg
ZmFsc2UKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJmYWxzZSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgVHJ1ZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBUcnVlLmluc3RhbmNlCisgIGVuZAor
ZW5kCisKK2NsYXNzIEZhbHNlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAgIEZhbHNlLmluc3RhbmNl
CisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVy
IDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0g
e30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3Mg
QEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBTZXR0aW5nLm5ldyhjb2Rl
T3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0Cisg
ICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQs
IEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBbmQubmV3KGNvZGVP
cmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgIigje2xlZnQuZHVtcH0gYW5kICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAor
CitjbGFzcyBPciA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbgorICAgIE9yLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0
KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IG9yICN7cmlnaHQu
ZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBOb3QgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpj
aGlsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAY2hpbGQgPSBjaGlsZAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJl
bgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAg
IE5vdC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiKG5vdCAje2NoaWxkLmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgU2tpcCA8
IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0c2tpcCIKKyAgZW5kCitlbmQK
KworY2xhc3MgSWZUaGVuRWxzZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnByZWRpY2F0ZSwgOnRo
ZW5DYXNlCisgIGF0dHJfYWNjZXNzb3IgOmVsc2VDYXNlCisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBwcmVkaWNhdGUsIHRoZW5DYXNlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQHByZWRpY2F0ZSA9IHByZWRpY2F0ZQorICAgIEB0aGVuQ2FzZSA9IHRoZW5DYXNlCisgICAg
QGVsc2VDYXNlID0gU2tpcC5uZXcoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBpZiBAZWxzZUNhc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2UsIEBlbHNl
Q2FzZV0KKyAgICBlbHNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNlXQorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIElmVGhlbkVsc2UubmV3KGNvZGVPcmln
aW4sICh5aWVsZCBAcHJlZGljYXRlKSwgKHlpZWxkIEB0aGVuQ2FzZSksICh5aWVsZCBAZWxzZUNh
c2UpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImlmICN7cHJlZGljYXRlLmR1bXB9XG4i
ICsgdGhlbkNhc2UuZHVtcCArICJcbmVsc2VcbiIgKyBlbHNlQ2FzZS5kdW1wICsgIlxuZW5kIgor
ICBlbmQKK2VuZAorCitjbGFzcyBNYWNybyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5hbWUsIDp2
YXJpYWJsZXMsIDpib2R5CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCB2
YXJpYWJsZXMsIGJvZHkpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUK
KyAgICBAdmFyaWFibGVzID0gdmFyaWFibGVzCisgICAgQGJvZHkgPSBib2R5CisgIGVuZAorICAK
KyAgZGVmIGNoaWxkcmVuCisgICAgQHZhcmlhYmxlcyArIFtAYm9keV0KKyAgZW5kCisgIAorICBk
ZWYgbWFwQ2hpbGRyZW4KKyAgICBNYWNyby5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEB2YXJpYWJs
ZXMubWFwe3x2fCB5aWVsZCB2fSwgKHlpZWxkIEBib2R5KSkKKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgICJtYWNybyAje25hbWV9KCIgKyB2YXJpYWJsZXMuY29sbGVjdHt8dnwgdi5kdW1wfS5q
b2luKCIsICIpICsgIilcbiIgKyBib2R5LmR1bXAgKyAiXG5lbmQiCisgIGVuZAorZW5kCisKK2Ns
YXNzIE1hY3JvQ2FsbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5hbWUsIDpvcGVyYW5kcworICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcwor
ICAgIHJhaXNlIHVubGVzcyBAb3BlcmFuZHMKKyAgICBAb3BlcmFuZHMuZWFjaHt8dnwgcmFpc2Ug
dW5sZXNzIHZ9CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgQG9wZXJhbmRzCisgIGVu
ZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIE1hY3JvQ2FsbC5uZXcoY29kZU9y
aWdpbiwgQG5hbWUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIlx0I3tuYW1lfSgiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIs
ICIpICsgIikiCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2JhY2tlbmRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODUgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3Jl
cXVpcmUgIng4NiIKKworQkFDS0VORFMgPQorICBbCisgICAiWDg2IiwKKyAgICJBUk12NyIKKyAg
XQorCitXT1JLSU5HX0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIKKyAgXQorCitCQUNLRU5EX1BB
VFRFUk4gPSBSZWdleHAubmV3KCdcXEEoJyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFon
KQorCitjbGFzcyBOb2RlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIHNlbmQoImxvd2VyIiArIG5h
bWUpCisgIGVuZAorZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBsb3dlcigpIGZvciB0aG9zZSBub2Rl
cyB0aGF0IGFyZSBiYWNrZW5kLWFnbm9zdGljCisKK2NsYXNzIExhYmVsCisgIGRlZiBsb3dlcihu
YW1lKQorICAgICRhc20ucHV0c0xhYmVsKHNlbGYubmFtZVsxLi4tMV0pCisgIGVuZAorZW5kCisK
K2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzTG9jYWxM
YWJlbCAiX29mZmxpbmVhc21fI3tzZWxmLm5hbWVbMS4uLTFdfSIKKyAgZW5kCitlbmQKKworY2xh
c3MgTGFiZWxSZWZlcmVuY2UKKyAgZGVmIGFzbUxhYmVsCisgICAgQXNzZW1ibGVyLmxhYmVsUmVm
ZXJlbmNlKG5hbWVbMS4uLTFdKQorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJl
bmNlCisgIGRlZiBhc21MYWJlbAorICAgIEFzc2VtYmxlci5sb2NhbExhYmVsUmVmZXJlbmNlKCJf
b2ZmbGluZWFzbV8iK25hbWVbMS4uLTFdKQorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwCisgIGRl
ZiBsb3dlcihuYW1lKQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXIo
bmFtZSkKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBub2RlLmxvd2Vy
KG5hbWUpCisgICAgfQorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3Iu
cmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5l
cmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg4IEBACisj
IS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCity
ZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIi
CityZXF1aXJlICJzZWxmX2hhc2giCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5z
Zm9ybSIKKworaW5wdXRGbG5tID0gQVJHVi5zaGlmdAorb3V0cHV0RmxubSA9IEFSR1Yuc2hpZnQK
KworZGVmIGVtaXRNYWdpY051bWJlcgorICBPRkZTRVRfTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAg
ICB8IG51bWJlciB8CisgICAgJG91dHB1dC5wdXRzICIje251bWJlcn0sIgorICB9CitlbmQKKwor
aW5wdXREYXRhID0gSU86OnJlYWQoaW5wdXRGbG5tKQoraW5wdXRIYXNoID0gIi8vIG9mZmxpbmVh
c20gaW5wdXQgaGFzaDogI3tEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0YSl9ICN7c2Vs
Zkhhc2h9IgorCitpZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0RmxubQorICBGaWxlLm9wZW4ob3V0
cHV0RmxubSwgInIiKSB7CisgICAgfCBpbnAgfAorICAgIGZpcnN0TGluZSA9IGlucC5nZXRzCisg
ICAgaWYgZmlyc3RMaW5lIGFuZCBmaXJzdExpbmUuY2hvbXAgPT0gaW5wdXRIYXNoCisgICAgICAk
c3RkZXJyLnB1dHMgIk5vdGhpbmcgY2hhbmdlZC4iCisgICAgICBleGl0IDAKKyAgICBlbmQKKyAg
fQorZW5kCisKK29yaWdpbmFsQVNUID0gcGFyc2UobGV4KGlucHV0RGF0YSkpCisKK0ZpbGUub3Bl
bihvdXRwdXRGbG5tLCAidyIpIHsKKyAgfCBvdXRwIHwKKyAgJG91dHB1dCA9IG91dHAKKyAgb3V0
cC5wdXRzIGlucHV0SGFzaAorICBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMob3JpZ2luYWxB
U1QpIHsKKyAgICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICBvZmZzZXRz
TGlzdCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKKyAgICBzaXplc0xpc3Qg
PSBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CisgICAgCisgICAgbGVuZ3RoID0gKE9GRlNF
VF9NQUdJQ19OVU1CRVJTLnNpemUgKyAxKSAqICgxICsgb2Zmc2V0c0xpc3Quc2l6ZSArIHNpemVz
TGlzdC5zaXplKQorICAgIAorICAgIG91dHAucHV0cyAic3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4
dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICAgIGVtaXRNYWdpY051bWJlcgorICAgIG91
dHAucHV0cyAiI3tpbmRleH0sIgorICAgIG9mZnNldHNMaXN0LmVhY2ggeworICAgICAgfCBvZmZz
ZXQgfAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICBvdXRwLnB1dHMgIk9GRkxJTkVfQVNN
X09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSksIgorICAgIH0KKyAg
ICBzaXplc0xpc3QuZWFjaCB7CisgICAgICB8IG9mZnNldCB8CisgICAgICBlbWl0TWFnaWNOdW1i
ZXIKKyAgICAgIG91dHAucHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0cnVjdH0pLCIKKyAgICB9Cisg
ICAgb3V0cC5wdXRzICJ9OyIKKyAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxODggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01B
Q1JPX0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJhZGRpIiwKKyAgICJhbmRpIiwKKyAgICJsc2hp
ZnRpIiwKKyAgICJtdWxpIiwKKyAgICJuZWdpIiwKKyAgICJub3RpIiwKKyAgICJvcmkiLAorICAg
InJzaGlmdGkiLAorICAgInVyc2hpZnRpIiwKKyAgICJzdWJpIiwKKyAgICJ4b3JpIiwKKyAgICJs
b2FkaSIsCisgICAibG9hZGIiLAorICAgImxvYWRoIiwKKyAgICJzdG9yZWkiLAorICAgInN0b3Jl
YiIsCisgICAibG9hZGQiLAorICAgIm1vdmVkIiwKKyAgICJzdG9yZWQiLAorICAgImFkZGQiLAor
ICAgImRpdmQiLAorICAgInN1YmQiLAorICAgIm11bGQiLAorICAgInNxcnRkIiwKKyAgICJjaTJk
IiwKKyAgICJmaWkyZCIsICMgdXNhZ2U6IGZpaTJkIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2Fu
dCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxmcHI+CisgICAiZmQy
aWkiLCAjIHVzYWdlOiBmZDJpaSA8ZnByPiwgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJp
dHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPgorICAgImJkZXEiLAorICAgImJk
bmVxIiwKKyAgICJiZGd0IiwKKyAgICJiZGd0ZXEiLAorICAgImJkbHQiLAorICAgImJkbHRlcSIs
CisgICAiYmRlcXVuIiwKKyAgICJiZG5lcXVuIiwKKyAgICJiZGd0dW4iLAorICAgImJkZ3RlcXVu
IiwKKyAgICJiZGx0dW4iLAorICAgImJkbHRlcXVuIiwKKyAgICJidGQyaSIsCisgICAidGQyaSIs
CisgICAiYmNkMmkiLAorICAgIm1vdmR6IiwKKyAgICJwb3AiLAorICAgInB1c2giLAorICAgIm1v
dmUiLAorICAgInN4aTJwIiwKKyAgICJ6eGkycCIsCisgICAibm9wIiwKKyAgICJiaWVxIiwKKyAg
ICJiaW5lcSIsCisgICAiYmlhIiwKKyAgICJiaWFlcSIsCisgICAiYmliIiwKKyAgICJiaWJlcSIs
CisgICAiYmlndCIsCisgICAiYmlndGVxIiwKKyAgICJiaWx0IiwKKyAgICJiaWx0ZXEiLAorICAg
ImJiZXEiLAorICAgImJibmVxIiwKKyAgICJiYmEiLAorICAgImJiYWVxIiwKKyAgICJiYmIiLAor
ICAgImJiYmVxIiwKKyAgICJiYmd0IiwKKyAgICJiYmd0ZXEiLAorICAgImJibHQiLAorICAgImJi
bHRlcSIsCisgICAiYnRpbyIsCisgICAiYnRpcyIsCisgICAiYnRpeiIsCisgICAiYnRpbnoiLAor
ICAgImJ0Ym8iLAorICAgImJ0YnMiLAorICAgImJ0YnoiLAorICAgImJ0Ym56IiwKKyAgICJqbXAi
LAorICAgImJhZGRpbyIsCisgICAiYmFkZGlzIiwKKyAgICJiYWRkaXoiLAorICAgImJhZGRpbnoi
LAorICAgImJzdWJpbyIsCisgICAiYnN1YmlzIiwKKyAgICJic3ViaXoiLAorICAgImJzdWJpbnoi
LAorICAgImJtdWxpbyIsCisgICAiYm11bGlzIiwKKyAgICJibXVsaXoiLAorICAgImJtdWxpbnoi
LAorICAgImJvcmlvIiwKKyAgICJib3JpcyIsCisgICAiYm9yaXoiLAorICAgImJvcmlueiIsCisg
ICAiYnJlYWsiLAorICAgImNhbGwiLAorICAgInJldCIsCisgICAiY2llcSIsCisgICAiY2luZXEi
LAorICAgImNpYSIsCisgICAiY2lhZXEiLAorICAgImNpYiIsCisgICAiY2liZXEiLAorICAgImNp
Z3QiLAorICAgImNpZ3RlcSIsCisgICAiY2lsdCIsCisgICAiY2lsdGVxIiwKKyAgICJ0aW8iLAor
ICAgInRpcyIsCisgICAidGl6IiwKKyAgICJ0aW56IiwKKyAgICJ0Ym8iLAorICAgInRicyIsCisg
ICAidGJ6IiwKKyAgICJ0Ym56IiwKKyAgICJwZWVrIiwKKyAgICJwb2tlIiwKKyAgICJicGVxIiwK
KyAgICJicG5lcSIsCisgICAiYnBhIiwKKyAgICJicGFlcSIsCisgICAiYnBiIiwKKyAgICJicGJl
cSIsCisgICAiYnBndCIsCisgICAiYnBndGVxIiwKKyAgICJicGx0IiwKKyAgICJicGx0ZXEiLAor
ICAgImFkZHAiLAorICAgImFuZHAiLAorICAgIm9ycCIsCisgICAic3VicCIsCisgICAieG9ycCIs
CisgICAibG9hZHAiLAorICAgImNwZXEiLAorICAgImNwbmVxIiwKKyAgICJjcGEiLAorICAgImNw
YWVxIiwKKyAgICJjcGIiLAorICAgImNwYmVxIiwKKyAgICJjcGd0IiwKKyAgICJjcGd0ZXEiLAor
ICAgImNwbHQiLAorICAgImNwbHRlcSIsCisgICAic3RvcmVwIiwKKyAgICJidHBvIiwKKyAgICJi
dHBzIiwKKyAgICJidHB6IiwKKyAgICJidHBueiIsCisgICAiYmFkZHBvIiwKKyAgICJiYWRkcHMi
LAorICAgImJhZGRweiIsCisgICAiYmFkZHBueiIKKyAgXQorCitYODZfSU5TVFJVQ1RJT05TID0K
KyAgWworICAgImNkcWkiLAorICAgImlkaXZpIgorICBdCisKK0lOU1RSVUNUSU9OUyA9IE1BQ1JP
X0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMKKworSU5TVFJVQ1RJT05fUEFUVEVSTiA9
IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIElOU1RSVUNUSU9OUy5qb2luKCcpfCgnKSArICcpKVxcWicp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9y
X2NvbnN0YW50cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJi
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitNQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0K
KworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRz
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJhY3Rv
cl9jb25zdGFudHMiCisKK09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBm
ZjVlNzU1IF0KKworIworIyBvZmZzZXRzTGlzdChhc3QpCisjIHNpemVzTGlzdChhc3QpCisjCisj
IFJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhlIEFTVC4KKyMK
KworZGVmIG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEu
c29ydAorZW5kCisKK2RlZiBzaXplc0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFNpemVvZikudW5p
cS5zb3J0CitlbmQKKworIworIyBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGFzdCwgZmls
ZSkgLT4KKyMgICAgIFtvZmZzZXRzLCBpbmRleF0KKyMKKyMgUGFyc2VzIHRoZSBvZmZzZXRzIGZy
b20gYSBmaWxlIGFuZCByZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCB0aGUKKyMgaW5kZXgg
b2YgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB2YWxpZCBpbiB0aGlzIGJ1aWxkIHRhcmdldC4K
KyMKKworZGVmIG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgoZmlsZSkKKyAgaW5kZXggPSBu
aWwKKyAgb2Zmc2V0cyA9IFtdCisgIGVuZGlhbm5lc3NNYXJrZXJCeXRlcyA9IG5pbAorICAKKyAg
ZGVmIHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgIGJ5dGVzID0gW10KKyAgICA0LnRpbWVz
IHsKKyAgICAgIGJ5dGVzIDw8IGlucC5nZXRieXRlCisgICAgfQorICAgIAorICAgIGlmIGVuZGlh
bm5lc3MgPT0gOmxpdHRsZQorICAgICAgIyBMaXR0bGUgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0g
PDwgMCB8CisgICAgICAgYnl0ZXNbMV0gPDwgOCB8CisgICAgICAgYnl0ZXNbMl0gPDwgMTYgfAor
ICAgICAgIGJ5dGVzWzNdIDw8IDI0KQorICAgIGVsc2UKKyAgICAgICMgQmlnIGVuZGlhbgorICAg
ICAgKGJ5dGVzWzBdIDw8IDI0IHwKKyAgICAgICBieXRlc1sxXSA8PCAxNiB8CisgICAgICAgYnl0
ZXNbMl0gPDwgOCB8CisgICAgICAgYnl0ZXNbM10gPDwgMCkKKyAgICBlbmQKKyAgZW5kCisgIAor
ICBbOmxpdHRsZSwgOmJpZ10uZWFjaCB7CisgICAgfCBlbmRpYW5uZXNzIHwKKyAgICBtYWdpY0J5
dGVzID0gW10KKyAgICBNQUdJQ19OVU1CRVJTLmVhY2ggeworICAgICAgfCBudW1iZXIgfAorICAg
ICAgY3VycmVudEJ5dGVzID0gW10KKyAgICAgIDQudGltZXMgeworICAgICAgICBjdXJyZW50Qnl0
ZXMgPDwgKG51bWJlciAmIDB4ZmYpCisgICAgICAgIG51bWJlciA+Pj0gOAorICAgICAgfQorICAg
ICAgaWYgZW5kaWFubmVzcyA9PSA6YmlnCisgICAgICAgIGN1cnJlbnRCeXRlcy5yZXZlcnNlIQor
ICAgICAgZW5kCisgICAgICBtYWdpY0J5dGVzICs9IGN1cnJlbnRCeXRlcworICAgIH0KKyAgICAK
KyAgICBGaWxlLm9wZW4oZmlsZSwgInIiKSB7CisgICAgICB8IGlucCB8CisgICAgICB3aGVyZUlu
TWFya2VyID0gMAorICAgICAgbG9vcCB7CisgICAgICAgIGJ5dGUgPSBpbnAuZ2V0Ynl0ZQorICAg
ICAgICBicmVhayB1bmxlc3MgYnl0ZQorICAgICAgICBpZiBieXRlID09IG1hZ2ljQnl0ZXNbd2hl
cmVJbk1hcmtlcl0KKyAgICAgICAgICB3aGVyZUluTWFya2VyICs9IDEKKyAgICAgICAgICBpZiB3
aGVyZUluTWFya2VyID09IG1hZ2ljQnl0ZXMuc2l6ZQorICAgICAgICAgICAgIyBXZSBoYXZlIGEg
bWF0Y2ghIElmIHdlIGhhdmUgbm90IHlldCByZWFkIHRoZSBlbmRpYW5uZXNzIG1hcmtlciBhbmQg
aW5kZXgsCisgICAgICAgICAgICAjIHRoZW4gcmVhZCB0aG9zZSBub3c7IG90aGVyd2lzZSByZWFk
IGFuIG9mZnNldC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgbm90IGluZGV4CisgICAg
ICAgICAgICAgIGluZGV4ID0gcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgIG9mZnNldHMgPDwgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9
IDAKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIg
PSAwCisgICAgICAgIGVuZAorICAgICAgfQorICAgIH0KKyAgICAKKyAgICBicmVhayBpZiBpbmRl
eAorICB9CisgIAorICByYWlzZSB1bmxlc3MgaW5kZXgKKyAgCisgIFtvZmZzZXRzLCBpbmRleF0K
K2VuZAorCisjCisjIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAtPiBbb2Zmc2V0
cywgc2l6ZXNdCisjCisjIEJ1aWxkcyBhIG1hcHBpbmcgYmV0d2VlbiBTdHJ1Y3RPZmZzZXQgbm9k
ZXMgYW5kIHRoZWlyIHZhbHVlcy4KKyMKKworZGVmIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNl
dHNMaXN0KQorICBvZmZzZXRzTWFwID0ge30KKyAgc2l6ZXNNYXAgPSB7fQorICBhc3RPZmZzZXRz
TGlzdCA9IG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0U2l6ZXNMaXN0ID0gc2l6ZXNMaXN0KGFzdCkK
KyAgcmFpc2UgdW5sZXNzIGFzdE9mZnNldHNMaXN0LnNpemUgKyBhc3RTaXplc0xpc3Quc2l6ZSA9
PSBvZmZzZXRzTGlzdC5zaXplCisgIG9mZnNldHNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsK
KyAgICB8IHN0cnVjdE9mZnNldCwgaW5kZXggfAorICAgIG9mZnNldHNNYXBbc3RydWN0T2Zmc2V0
XSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgc2l6ZXNMaXN0KGFzdCkuZWFjaF93aXRoX2lu
ZGV4IHsKKyAgICB8IHNpemVvZiwgaW5kZXggfAorICAgIHNpemVzTWFwW3NpemVvZl0gPSBvZmZz
ZXRzTGlzdC5zaGlmdAorICB9CisgIFtvZmZzZXRzTWFwLCBzaXplc01hcF0KK2VuZAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU4NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiaW5zdHJ1Y3Rpb25zIgorcmVxdWlyZSAicmVn
aXN0ZXJzIgorCitjbGFzcyBUb2tlbgorICBhdHRyX3JlYWRlciA6Y29kZU9yaWdpbiwgOnN0cmlu
ZworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RyaW5nKQorICAgIEBjb2RlT3Jp
Z2luID0gY29kZU9yaWdpbgorICAgIEBzdHJpbmcgPSBzdHJpbmcKKyAgZW5kCisgIAorICBkZWYg
PT0ob3RoZXIpCisgICAgaWYgb3RoZXIuaXNfYT8gVG9rZW4KKyAgICAgIEBzdHJpbmcgPT0gb3Ro
ZXIuc3RyaW5nCisgICAgZWxzZQorICAgICAgQHN0cmluZyA9PSBvdGhlcgorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiA9fihvdGhlcikKKyAgICBAc3RyaW5nID1+IG90aGVyCisgIGVuZAorICAK
KyAgZGVmIHRvX3MKKyAgICAiI3tAc3RyaW5nLmluc3BlY3R9IGF0IGxpbmUgI3tjb2RlT3JpZ2lu
fSIKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBpZiBjb21tZW50
LmVtcHR5PworICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9IgorICAgIGVsc2UKKyAg
ICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfTogI3tjb21tZW50WzBdfSIKKyAgICBlbmQK
KyAgZW5kCitlbmQKKworIworIyBUaGUgbGV4ZXIuIFRha2VzIGEgc3RyaW5nIGFuZCByZXR1cm5z
IGFuIGFycmF5IG9mIHRva2Vucy4KKyMKKworZGVmIGxleChzdHIpCisgIHJlc3VsdCA9IFtdCisg
IGxpbmVOdW1iZXIgPSAxCisgIHdoaWxlIG5vdCBzdHIuZW1wdHk/CisgICAgY2FzZSBzdHIKKyAg
ICB3aGVuIC9cQVwjKFteXG5dKikvCisgICAgICAjIGNvbW1lbnQsIGlnbm9yZQorICAgIHdoZW4g
L1xBXG4vCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAg
bGluZU51bWJlciArPSAxCisgICAgd2hlbiAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKS8KKyAg
ICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFcLihb
YS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYp
CisgICAgd2hlbiAvXEFfKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5l
dyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQShbIFx0XSspLworICAgICAgIyB3aGl0ZXNw
YWNlLCBpZ25vcmUKKyAgICB3aGVuIC9cQTB4KFswLTlhLWZBLUZdKykvCisgICAgICByZXN1bHQg
PDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLmhleC50b19zKQorICAgIHdoZW4gL1xBMChbMC03
XSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5vY3QudG9fcykK
KyAgICB3aGVuIC9cQShbMC05XSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVt
YmVyLCAkJikKKyAgICB3aGVuIC9cQTo6LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5l
TnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVs6LFwoXClcW1xdPVwrXC0qXS8KKyAgICAgIHJlc3Vs
dCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgZWxzZQorICAgICAgcmFpc2UgIkxl
eGVyIGVycm9yIGF0IGxpbmUgbnVtYmVyICN7bGluZU51bWJlcn0sIHVuZXhwZWN0ZWQgc2VxdWVu
Y2UgI3tzdHJbMC4uMjBdLmluc3BlY3R9IgorICAgIGVuZAorICAgIHN0ciA9ICR+LnBvc3RfbWF0
Y2gKKyAgZW5kCisgIHJlc3VsdAorZW5kCisKKyMKKyMgVG9rZW4gaWRlbnRpZmljYXRpb24uCisj
CisKK2RlZiBpc1JlZ2lzdGVyKHRva2VuKQorICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOCitl
bmQKKworZGVmIGlzSW5zdHJ1Y3Rpb24odG9rZW4pCisgIHRva2VuID1+IElOU1RSVUNUSU9OX1BB
VFRFUk4KK2VuZAorCitkZWYgaXNLZXl3b3JkKHRva2VuKQorICB0b2tlbiA9fiAvXEEoKHRydWUp
fChmYWxzZSl8KGlmKXwodGhlbil8KGVsc2UpfChlbHNpZil8KGVuZCl8KGFuZCl8KG9yKXwobm90
KXwobWFjcm8pfChjb25zdCl8KHNpemVvZil8KGVycm9yKSlcWi8gb3IKKyAgICB0b2tlbiA9fiBS
RUdJU1RFUl9QQVRURVJOIG9yCisgICAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5k
CisKK2RlZiBpc0lkZW50aWZpZXIodG9rZW4pCisgIHRva2VuID1+IC9cQVthLXpBLVpdKFthLXpB
LVowLTlfXSopXFovIGFuZCBub3QgaXNLZXl3b3JkKHRva2VuKQorZW5kCisKK2RlZiBpc0xhYmVs
KHRva2VuKQorICB0b2tlbiA9fiAvXEFfKFthLXpBLVowLTlfXSopXFovCitlbmQKKworZGVmIGlz
TG9jYWxMYWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXC4oW2EtekEtWjAtOV9dKilcWi8KK2Vu
ZAorCitkZWYgaXNWYXJpYWJsZSh0b2tlbikKKyAgaXNJZGVudGlmaWVyKHRva2VuKSBvciBpc1Jl
Z2lzdGVyKHRva2VuKQorZW5kCisKK2RlZiBpc0ludGVnZXIodG9rZW4pCisgIHRva2VuID1+IC9c
QVswLTldLworZW5kCisKKyMKKyMgVGhlIHBhcnNlci4gVGFrZXMgYW4gYXJyYXkgb2YgdG9rZW5z
IGFuZCByZXR1cm5zIGFuIEFTVC4gTWV0aG9kcworIyBvdGhlciB0aGFuIHBhcnNlKHRva2Vucykg
YXJlIG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9uLgorIworCitjbGFzcyBQYXJzZXIKKyAgZGVm
IGluaXRpYWxpemUodG9rZW5zKQorICAgIEB0b2tlbnMgPSB0b2tlbnMKKyAgICBAaWR4ID0gMAor
ICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIEB0b2tlbnNbQGlk
eF0KKyAgICAgIEB0b2tlbnNbQGlkeF0ucGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBlbHNlCisg
ICAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5k
IG9mIGZpbGUiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQg
b2YgZmlsZTogI3tjb21tZW50WzBdfSIKKyAgICAgIGVuZAorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBjb25zdW1lKHJlZ2V4cCkKKyAgICBpZiByZWdleHAKKyAgICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIEB0b2tlbnNbQGlkeF0gPX4gcmVnZXhwCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1
bmxlc3MgQGlkeCA9PSBAdG9rZW5zLmxlbmd0aAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICBl
bmQKKyAgCisgIGRlZiBza2lwTmV3TGluZQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIlxu
IgorICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGlj
YXRlQXRvbQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm5vdCIKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIK
KyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJlc3VsdCA9IHBhcnNl
UHJlZGljYXRlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgor
ICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJ0cnVlIgorICAgICAgcmVzdWx0ID0gVHJ1ZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisg
ICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJmYWxzZSIKKyAgICAgIHJl
c3VsdCA9IEZhbHNlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAg
IGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBTZXR0aW5n
LmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykK
KyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJv
cgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZUFuZAorICAgIHJlc3Vs
dCA9IHBhcnNlUHJlZGljYXRlQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImFuZCIK
KyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHgg
Kz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBdG9t
CisgICAgICByZXN1bHQgPSBBbmQubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAg
ZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlCisgICAgIyBz
b21lIGV4YW1wbGVzIG9mIHByZWNlZGVuY2U6CisgICAgIyBub3QgYSBhbmQgYiAtPiAobm90IGEp
IGFuZCBiCisgICAgIyBhIGFuZCBiIG9yIGMgLT4gKGEgYW5kIGIpIG9yIGMKKyAgICAjIGEgb3Ig
YiBhbmQgYyAtPiBhIG9yIChiIGFuZCBjKQorICAgIAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGlj
YXRlQW5kCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAib3IiCisgICAgICBjb2RlT3JpZ2lu
ID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBO
ZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgICByZXN1bHQgPSBP
ci5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VWYXJpYWJsZQorICAgIGlmIGlzUmVnaXN0ZXIoQHRva2Vuc1tA
aWR4XSkKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPX4gRlBSX1BBVFRFUk4KKyAgICAgICAgcmVz
dWx0ID0gRlBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9r
ZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUmVnaXN0ZXJJ
RC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcp
CisgICAgICBlbmQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAg
IHJlc3VsdCA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9r
ZW5zW0BpZHhdLnN0cmluZykKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisg
ICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQWRkcmVzcyhv
ZmZzZXQpCisgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICBj
b2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgCisgICAgIyBUaHJlZSBw
b3NzaWJpbGl0aWVzOgorICAgICMgW10gICAgICAgLT4gQWJzb2x1dGVBZGRyZXNzCisgICAgIyBb
YV0gICAgICAtPiBBZGRyZXNzCisgICAgIyBbYSxiXSAgICAtPiBCYXNlSW5kZXggd2l0aCBzY2Fs
ZSA9IDEKKyAgICAjIFthLGIsY10gIC0+IEJhc2VJbmRleAorICAgIAorICAgIEBpZHggKz0gMQor
ICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJldHVy
biBBYnNvbHV0ZUFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIG9mZnNldCkKKyAgICBlbmQKKyAgICBh
ID0gcGFyc2VWYXJpYWJsZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICByZXN1
bHQgPSBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBhLCBvZmZzZXQpCisgICAgZWxzZQorICAgICAg
cGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgYiA9IHBhcnNlVmFyaWFibGUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisg
ICAgICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgMSwgb2Zmc2V0
KQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09
ICIsIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgWyIxIiwg
IjIiLCAiNCIsICI4Il0ubWVtYmVyPyBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBjID0g
QHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFz
ZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCBjLCBvZmZzZXQpCisgICAgICBlbmQKKyAgICBl
bmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VDb2xv
bkNvbG9uCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luCisgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlk
eF0KKyAgICBuYW1lcyA9IFtAdG9rZW5zW0BpZHhdLnN0cmluZ10KKyAgICBAaWR4ICs9IDEKKyAg
ICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICI6OiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIG5hbWVzIDw8
IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgICByYWlz
ZSBpZiBuYW1lcy5lbXB0eT8KKyAgICBbY29kZU9yaWdpbiwgbmFtZXNdCisgIGVuZAorICAKKyAg
ZGVmIHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICBza2lwTmV3TGluZQorICAgIGlmIEB0b2tlbnNb
QGlkeF0gPT0gIi0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIE5lZ0ltbWVkaWF0ZS5uZXcoQHRv
a2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQgPSBw
YXJzZUV4cHJlc3Npb24KKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0g
IikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSW50ZWdlciBA
dG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faSkKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAg
IGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBpZiBuYW1lcy5zaXpl
ID4gMQorICAgICAgICBTdHJ1Y3RPZmZzZXQuZm9yRmllbGQoY29kZU9yaWdpbiwgbmFtZXNbMC4u
LTJdLmpvaW4oJzo6JyksIG5hbWVzWy0xXSkKKyAgICAgIGVsc2UKKyAgICAgICAgVmFyaWFibGUu
Zm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lc1swXSkKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzUmVn
aXN0ZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcGFyc2VWYXJpYWJsZQorICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gInNpemVvZiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgY29kZU9yaWdpbiwg
bmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIFNpemVvZi5mb3JOYW1lKGNvZGVPcmlnaW4s
IG5hbWVzLmpvaW4oJzo6JykpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICBza2lwTmV3TGluZQorICAg
IHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09
ICIqIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIHJlc3VsdCA9IE11bEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVP
cmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICAgIGVsc2UKKyAgICAgICAg
cmFpc2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBj
b3VsZEJlRXhwcmVzc2lvbgorICAgIEB0b2tlbnNbQGlkeF0gPT0gIi0iIG9yIEB0b2tlbnNbQGlk
eF0gPT0gInNpemVvZiIgb3IgaXNJbnRlZ2VyKEB0b2tlbnNbQGlkeF0pIG9yIGlzVmFyaWFibGUo
QHRva2Vuc1tAaWR4XSkgb3IgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgZW5kCisgIAorICBkZWYg
cGFyc2VFeHByZXNzaW9uCisgICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJl
c3Npb25NdWwKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIrIiBvciBAdG9rZW5zW0BpZHhd
ID09ICItIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKyIKKyAgICAgICAgQGlkeCArPSAx
CisgICAgICAgIHJlc3VsdCA9IEFkZEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNv
ZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzaWYgQHRva2Vu
c1tAaWR4XSA9PSAiLSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IFN1Yklt
bWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VF
eHByZXNzaW9uTXVsKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAg
ZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlT3BlcmFuZChjb21tZW50KQor
ICAgIGlmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgICBleHByID0gcGFyc2VFeHByZXNzaW9uCisg
ICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAgICBwYXJzZUFkZHJlc3MoZXhwcikK
KyAgICAgIGVsc2UKKyAgICAgICAgZXhwcgorICAgICAgZW5kCisgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAiWyIKKyAgICAgIHBhcnNlQWRkcmVzcyhJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgMCkpCisgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAg
ICByZXN1bHQgPSBMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBM
YWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJp
bmcpKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0xvY2FsTGFi
ZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXco
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMb2NhbExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IoY29tbWVudCkKKyAgICBlbmQK
KyAgZW5kCisgIAorICBkZWYgcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgIHNraXBOZXdMaW5lCisg
ICAgY29uc3VtZSgvXEFcKFxaLykKKyAgICB2YXJpYWJsZXMgPSBbXQorICAgIGxvb3AgeworICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNb
QGlkeF0pCisgICAgICAgIHZhcmlhYmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gIiwiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICBwYXJzZUVycm9yCisgICAgICAgIGVuZAorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9y
CisgICAgICBlbmQKKyAgICB9CisgICAgdmFyaWFibGVzCisgIGVuZAorICAKKyAgZGVmIHBhcnNl
U2VxdWVuY2UoZmluYWwsIGNvbW1lbnQpCisgICAgZmlyc3RDb2RlT3JpZ2luID0gQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luCisgICAgbGlzdCA9IFtdCisgICAgbG9vcCB7CisgICAgICBpZiAoQGlk
eCA9PSBAdG9rZW5zLmxlbmd0aCBhbmQgbm90IGZpbmFsKSBvciAoZmluYWwgYW5kIEB0b2tlbnNb
QGlkeF0gPX4gZmluYWwpCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICJcbiIKKyAgICAgICAgIyBpZ25vcmUKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICJjb25zdCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBh
cnNlRXJyb3IgdW5sZXNzIGlzVmFyaWFibGUgQHRva2Vuc1tAaWR4XQorICAgICAgICB2YXJpYWJs
ZSA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0Bp
ZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNz
IEB0b2tlbnNbQGlkeF0gPT0gIj0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YWx1ZSA9
IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGNvbnN0ICN7dmFyaWFibGUubmFtZX0iKQor
ICAgICAgICBsaXN0IDw8IENvbnN0RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCB2
YXJpYWJsZSwgdmFsdWUpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJlcnJvciIKKyAg
ICAgICAgbGlzdCA8PCBFcnJvci5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luKQorICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImlmIgorICAgICAgICBj
b2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQor
ICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgIHNraXBOZXdMaW5l
CisgICAgICAgIGlmVGhlbkVsc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNh
dGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGlu
c2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgbGlzdCA8PCBpZlRo
ZW5FbHNlCisgICAgICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImVsc2lmIgorICAgICAgICAg
IGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJl
ZGljYXRlCisgICAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICAg
IHNraXBOZXdMaW5lCisgICAgICAgICAgZWxzZUNhc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3Jp
Z2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxa
LywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAg
ICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNhc2UKKyAgICAgICAgICBpZlRoZW5FbHNlID0g
ZWxzZUNhc2UKKyAgICAgICAgZW5kCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gImVsc2Ui
CisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IHBh
cnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGVsc2UgY2FzZSBmb3IgXCJp
ZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxz
ZQorICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gImVuZCIKKyAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICJtYWNybyIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdp
bgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIG5hbWUgPSBA
dG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFyaWFibGVz
ID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFl
bmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gI3tuYW1lfSIpCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBsaXN0IDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMs
IGJvZHkpCisgICAgICBlbHNpZiBpc0luc3RydWN0aW9uIEB0b2tlbnNbQGlkeF0KKyAgICAgICAg
Y29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRv
a2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIChub3QgZmlu
YWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0g
PX4gZmluYWwpCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24sIGFuZCBpdCdz
IHRoZSBsYXN0IG9uZS4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3Jp
Z2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0Bp
ZHhdID09ICJcbiIKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbi4KKyAgICAg
ICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgICMgSXQncyBkZWZpbml0ZWx5
IGFuIGluc3RydWN0aW9uLCBhbmQgaXQgaGFzIGF0IGxlYXN0IG9uZSBvcGVyYW5kLgorICAgICAg
ICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gZmFsc2UKKyAgICAg
ICAgICBsb29wIHsKKyAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUg
aW5zaWRlIG9mIGluc3RydWN0aW9uICN7bmFtZX0iKQorICAgICAgICAgICAgaWYgKG5vdCBmaW5h
bCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9
fiBmaW5hbCkKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbiBhbmQg
b2YgdGhlIHNlcXVlbmNlLgorICAgICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gdHJ1ZQorICAg
ICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIK
KyAgICAgICAgICAgICAgIyBIYXMgYW5vdGhlciBvcGVyYW5kLgorICAgICAgICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAg
ICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uLgorICAgICAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
cGFyc2VFcnJvcigiRXhwZWN0ZWQgYSBjb21tYSwgbmV3bGluZSwgb3IgI3tmaW5hbH0gYWZ0ZXIg
I3tvcGVyYW5kcy5sYXN0LmR1bXB9IikKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgIH0KKyAg
ICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5k
cykKKyAgICAgICAgICBpZiBlbmRPZlNlcXVlbmNlCisgICAgICAgICAgICBicmVhaworICAgICAg
ICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0Bp
ZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAg
ICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgICAgICMgTWFjcm8gaW52b2NhdGlvbi4K
KyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAg
c2tpcE5ld0xpbmUKKyAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9vcCB7CisgICAgICAg
ICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm1h
Y3JvIgorICAgICAgICAgICAgICAgICMgSXQncyBhIG1hY3JvIGxhbWJkYSEKKyAgICAgICAgICAg
ICAgICBjb2RlT3JpZ2luSW5uZXIgPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3Jv
VmFyaWFibGVzCisgICAgICAgICAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFov
LCAid2hpbGUgaW5zaWRlIG9mIGFub255bW91cyBtYWNybyBwYXNzZWQgYXMgYXJndW1lbnQgdG8g
I3tuYW1lfSIpCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgb3Bl
cmFuZHMgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJpYWJsZXMsIGJvZHkp
CisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9w
ZXJhbmQoIndoaWxlIGluc2lkZSBvZiBtYWNybyBjYWxsIHRvICN7bmFtZX0iKQorICAgICAgICAg
ICAgICBlbmQKKyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAg
ICAgICBicmVhaworICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAg
ICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgcGFyc2VFcnJvciAiVW5leHBlY3RlZCAje0B0b2tlbnNbQGlkeF0uc3RyaW5nLmluc3BlY3R9
IHdoaWxlIHBhcnNpbmcgaW52b2NhdGlvbiBvZiBtYWNybyAje25hbWV9IgorICAgICAgICAgICAg
ICBlbmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbmQKKyAgICAgICAgICBsaXN0IDw8IE1h
Y3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9IgorICAgICAg
ICBlbmQKKyAgICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XSBvciBpc0xvY2FsTGFiZWwg
QHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiOiIKKyAgICAg
ICAgIyBJdCdzIGEgbGFiZWwuCisgICAgICAgIGlmIGlzTGFiZWwgbmFtZQorICAgICAgICAgIGxp
c3QgPDwgTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbHNlCisgICAg
ICAgICAgbGlzdCA8PCBMb2NhbExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAg
ICAgZW5kCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9y
ICJFeHBlY3RpbmcgdGVybWluYWwgI3tmaW5hbH0gI3tjb21tZW50fSIKKyAgICAgIGVuZAorICAg
IH0KKyAgICBTZXF1ZW5jZS5uZXcoZmlyc3RDb2RlT3JpZ2luLCBsaXN0KQorICBlbmQKK2VuZAor
CitkZWYgcGFyc2UodG9rZW5zKQorICBwYXJzZXIgPSBQYXJzZXIubmV3KHRva2VucykKKyAgcGFy
c2VyLnBhcnNlU2VxdWVuY2UobmlsLCAiIikKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDU5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitHUFJT
ID0KKyAgWworICAgInQwIiwKKyAgICJ0MSIsCisgICAidDIiLAorICAgInQzIiwKKyAgICJ0NCIs
CisgICAiY2ZyIiwKKyAgICJhMCIsCisgICAiYTEiLAorICAgInIwIiwKKyAgICJyMSIsCisgICAi
c3AiCisgIF0KKworRlBSUyA9CisgIFsKKyAgICJmdDAiLAorICAgImZ0MSIsCisgICAiZnQyIiwK
KyAgICJmdDMiLAorICAgImZ0NCIsCisgICAiZnQ1IiwKKyAgICJmYTAiLAorICAgImZhMSIsCisg
ICAiZmEyIiwKKyAgICJmYTMiLAorICAgImZyIgorICBdCisKK1JFR0lTVEVSUyA9IEdQUlMgKyBG
UFJTCisKK0dQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgR1BSUy5qb2luKCcpfCgn
KSArICcpKVxcWicpCitGUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMuam9p
bignKXwoJykgKyAnKSlcXFonKQorCitSRUdJU1RFUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxB
KCgnICsgUkVHSVNURVJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZWxmX2hhc2gucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZWxmX2hhc2gucmIJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDggQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJw
YXRobmFtZSIKKworIworIyBzZWxmSGFzaCAtPiBTSEExIGhleGRpZ2VzdAorIworIyBSZXR1cm5z
IGEgaGFzaCBvZiB0aGUgb2ZmbGluZWFzbSBzb3VyY2UgY29kZS4gVGhpcyBhbGxvd3MgZGVwZW5k
ZW5jeQorIyB0cmFja2luZyBmb3Igbm90IGp1c3QgY2hhbmdlcyBpbiBpbnB1dCwgYnV0IGFsc28g
Y2hhbmdlcyBpbiB0aGUgYXNzZW1ibGVyCisjIGl0c2VsZi4KKyMKKworZGVmIHNlbGZIYXNoCisg
IGNvbnRlbnRzID0gIiIKKyAgbXlQYXRoID0gUGF0aG5hbWUubmV3KF9fRklMRV9fKS5kaXJuYW1l
CisgIERpci5mb3JlYWNoKG15UGF0aCkgeworICAgIHwgZW50cnkgfAorICAgIGlmIGVudHJ5ID1+
IC9cLnJiJC8KKyAgICAgIGNvbnRlbnRzICs9IElPOjpyZWFkKG15UGF0aCArIGVudHJ5KQorICAg
IGVuZAorICB9CisgIHJldHVybiBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGNvbnRlbnRzKQorZW5k
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJi
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGlu
Z3MucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjA1IEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJiYWNrZW5kcyIKK3Jl
cXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworIworIyBjb21wdXRlU2V0dGlu
Z3NDb21iaW5hdGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25zCisjCisjIENvbXB1dGVz
IGFuIGFycmF5IG9mIHNldHRpbmdzIG1hcHMsIHdoZXJlIGEgc2V0dGluZ3MgbWFwIGNvbnN0aXR1
dGVzCisjIGEgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFzc2VtYmx5IGNvZGUgYmVpbmcgZ2VuZXJh
dGVkLiBUaGUgbWFwCisjIGNvbnRhaW5zIGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBz
ZXR0aW5ncyBuYW1lcyAoc3RyaW5ncykgYW5kCisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xlYW5zICh0
cnVlIGZvciBlbmFibGVkLCBmYWxzZSBmb3IgZGlzYWJsZWQpLgorIworCitkZWYgY29tcHV0ZVNl
dHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBbXQorICAK
KyAgZGVmIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbWFwU29GYXIs
IHJlbWFpbmluZykKKyAgICBpZiByZW1haW5pbmcuZW1wdHk/CisgICAgICBzZXR0aW5nc0NvbWJp
bmF0aW9ucyA8PCBtYXBTb0ZhcgorICAgICAgcmV0dXJuCisgICAgZW5kCisgICAgCisgICAgbmV3
TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSB0cnVlCisgICAg
c2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmlu
Z1sxLi4tMV0pCisgICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3Jl
bWFpbmluZ1swXV0gPSBmYWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJp
bmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICBlbmQKKyAgCisgIHNldHRpbmdz
Q29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywge30sIChhc3QuZmlsdGVyKFNldHRpbmcp
LnVuaXEuY29sbGVjdHt8dnwgdi5uYW1lfSArIFsiWDg2IiwgIkFSTXY3Il0pLnVuaXEpCisgIAor
ICBzZXR0aW5nc0NvbWJpbmF0aW9ucworZW5kCisKKyMKKyMgZm9yU2V0dGluZ3MoY29uY3JldGVT
ZXR0aW5ncywgYXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBi
YWNrZW5kIHwgLi4uIH0KKyMKKyMgRGV0ZXJtaW5lcyBpZiB0aGUgc2V0dGluZ3MgY29tYmluYXRp
b24gaXMgdmFsaWQsIGFuZCBpZiBzbywgY2FsbHMKKyMgdGhlIGJsb2NrIHdpdGggdGhlIGluZm9y
bWF0aW9uIHlvdSBuZWVkIHRvIGdlbmVyYXRlIGNvZGUuCisjCisKK2RlZiBmb3JTZXR0aW5ncyhj
b25jcmV0ZVNldHRpbmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0aGlz
IGNvbWJpbmF0b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWltZWRCYWNrZW5kcyA9IDAK
KyAgc2VsZWN0ZWRCYWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2ggeworICAgIHwgYmFja2Vu
ZCB8CisgICAgaXNTdXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2JhY2tlbmRdCisgICAgcmFp
c2UgdW5sZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWltZWRCYWNrZW5kcyArPSBp
ZiBpc1N1cHBvcnRlZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlzU3VwcG9ydGVkCisgICAg
ICBzZWxlY3RlZEJhY2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0KKyAgCisgIHJldHVybiBp
ZiBudW1DbGFpbWVkQmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUgdGhlIEFTVCBkb3duIHRv
IGEgbG93LWxldmVsIGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25hbHMpLgorICBsb3dMZXZl
bEFTVCA9IGFzdC5yZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIHlpZWxk
IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJhY2tlbmQKK2VuZAorCisj
CisjIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7CisjICAgICB8IGNvbmNy
ZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBmb3JFYWNoVmFs
aWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgc2V0dGluZ3NDb21iaW5hdGlvbnMpIHsKKyMgICAg
IHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9CisjCisjIEV4
ZWN1dGVzIHRoZSBnaXZlbiBibG9jayBmb3IgZWFjaCB2YWxpZCBzZXR0aW5ncyBjb21iaW5hdGlv
biBpbiB0aGUKKyMgc2V0dGluZ3MgbWFwLiBUaGUgYXN0IHBhc3NlZCBpbnRvIHRoZSBibG9jayBp
cyByZXNvbHZlZAorIyAoYXN0LnJlc29sdmUpIGFnYWluc3QgdGhlIHNldHRpbmdzLgorIworIyBU
aGUgZmlyc3QgZm9ybSB3aWxsIGNhbGwgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkg
Zm9yIHlvdS4KKyMKKworZGVmIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCAq
b3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucykKKyAgcmFpc2UgaWYgb3B0aW9uYWxTZXR0aW5n
c0NvbWJpbmF0aW9ucy5zaXplID4gMQorICAKKyAgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0
aW9ucy5lbXB0eT8KKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IGNvbXB1dGVTZXR0aW5nc0Nv
bWJpbmF0aW9ucyhhc3QpCisgIGVsc2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IG9wdGlv
bmFsU2V0dGluZ3NDb21iaWF0aW9uc1swXQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmluYXRp
b25zLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBpbmRleCB8Cisg
ICAgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7CisgICAgICB8IGNvbmNyZXRl
U2V0dGluZ3NfLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgICB5aWVsZCBjb25jcmV0ZVNl
dHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICB9CisgIH0KK2VuZAorCisj
CisjIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorIworIyBSZXR1cm5zIHRoZSBD
KysgY29kZSB1c2VkIHRvIHRlc3QgaWYgd2UgYXJlIGluIGEgY29uZmlndXJhdGlvbiB0aGF0Cisj
IGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBjb25jcmV0ZSBzZXR0aW5ncy4KKyMKKworZGVmIGNw
cFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNldHRp
bmdzLnRvX2EuY29sbGVjdHsKKyAgICB8IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisgICAgICAg
IiIKKyAgICAgZWxzZQorICAgICAgICIhIgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIgKyBw
YWlyWzBdCisgIH0uam9pbigiICYmICIpCitlbmQKKworIworIyBpc0FTVEVycm9uZW91cyhhc3Qp
CisjCisjIFRlc3RzIHRvIHNlZSBpZiB0aGUgQVNUIGNsYWltcyB0aGF0IHRoZXJlIGlzIGFuIGVy
cm9yIC0gaS5lLiBpZiB0aGUKKyMgdXNlcidzIGNvZGUsIGFmdGVyIHNldHRpbmdzIHJlc29sdXRp
b24sIGhhcyBFcnJvciBub2Rlcy4KKyMKKworZGVmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAgbm90
IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5PworZW5kCisKKyMKKyMgYXNzZXJ0Q29uZmlndXJhdGlv
bihjb25jcmV0ZVNldHRpbmdzKQorIworIyBFbWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0
IHdlJ3JlIHVzaW5nIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uLgorIworCitkZWYgYXNzZXJ0Q29u
ZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NU
ZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICRvdXRwdXQucHV0cyAiI2Vsc2UiCisgICRvdXRwdXQu
cHV0cyAiI2Vycm9yIFwiQ29uZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAgJG91dHB1dC5wdXRz
ICIjZW5kaWYiCitlbmQKKworIworIyBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNl
dHRpbmdzLCBhc3QsIGJhY2tlbmQpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBi
YWNrZW5kIHwgLi4uIH0KKyMKKyMgRW1pdHMgYWxsIHJlbGV2YW50IGd1YXJkcyB0byBzZWUgaWYg
dGhlIGNvbmZpZ3VyYXRpb24gaG9sZHMgYW5kCisjIGNhbGxzIHRoZSBibG9jayBpZiB0aGUgY29u
ZmlndXJhdGlvbiBpcyBub3QgZXJyb25lb3VzLgorIworCitkZWYgZW1pdENvZGVJbkNvbmZpZ3Vy
YXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKQorICAkb3V0cHV0LnB1dHMgY3Bw
U2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICBpZiBpc0FTVEVycm9uZW91cyhh
c3QpCisgICAgJG91dHB1dC5wdXRzICIjZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uXCIi
CisgIGVsc2lmIG5vdCBXT1JLSU5HX0JBQ0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICAkb3V0
cHV0LnB1dHMgIiNlcnJvciBcIlRoaXMgYmFja2VuZCBpcyBub3Qgc3VwcG9ydGVkIHlldC5cIiIK
KyAgZWxzZQorICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZAorICBlbmQK
KyAgCisgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMKKyMgZW1pdENvZGVJbkFsbENv
bmZpZ3VyYXRpb25zKGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tl
bmQsIGluZGV4IHwgLi4uIH0KKyMKKyMgRW1pdHMgZ3VhcmQgY29kZXMgZm9yIGFsbCB2YWxpZCBj
b25maWd1cmF0aW9ucywgYW5kIGNhbGxzIHRoZSBibG9jaworIyBmb3IgdGhvc2UgY29uZmlndXJh
dGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5kIG5vdCBlcnJvbmVvdXMuCisjCisKK2RlZiBlbWl0Q29k
ZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KQorICBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0
aW9uKGFzdCkgeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQs
IGluZGV4IHwKKyAgICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGlu
Z3MpCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGlu
ZGV4CisgICAgJG91dHB1dC5wdXRzICIjZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzNDIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK3JlcXVpcmUgImFzdCIKKworIworIyBub2RlLnJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykKKyMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IElm
VGhlbkVsc2Ugbm9kZXMgYnkKKyMgc3Vic3RpdHV0aW5nIGNvbmNyZXRlIGJvb2xlYW4gdmFsdWVz
IGZvciBlYWNoIFNldHRpbmcuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNo
aWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNz
IFRydWUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAor
ZW5kCisKK2NsYXNzIEZhbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAg
c2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nCisgIGRlZiByZXNvbHZlU2V0dGluZ3Mo
c2V0dGluZ3MpCisgICAgc2V0dGluZ3NbQG5hbWVdLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFz
cyBBbmQKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQucmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBhbmQgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBPcgorICBkZWYgcmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
LnZhbHVlIG9yIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUK
KyAgZW5kCitlbmQKKworY2xhc3MgTm90CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
CisgICAgKG5vdCBAY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2Rl
CisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykKKyAgICBpZiBAcHJlZGljYXRlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFs
dWUKKyAgICAgIEB0aGVuQ2FzZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZWxzZQor
ICAgICAgQGVsc2VDYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbmQKKyAgZW5k
CitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykK
KyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAg
ICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICBpZiBpdGVtLmlz
X2E/IFNlcXVlbmNlCisgICAgICAgIG5ld0xpc3QgKz0gaXRlbS5saXN0CisgICAgICBlbHNlCisg
ICAgICAgIG5ld0xpc3QgPDwgaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5l
dyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKK2VuZAorCisjCisjIG5vZGUuZGVtYWNyb2lm
eShtYWNyb3MpCisjIG5vZGUuc3Vic3RpdHV0ZShtYXBwaW5nKQorIworIyBkZW1hY3JvaWZ5KCkg
Y29uc3RydWN0cyBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBNYWNybworIyBub2Rl
cywgd2hpbGUgc3Vic3RpdHV0ZSgpIHJlcGxhY2VzIFZhcmlhYmxlIG5vZGVzIHdpdGggdGhlIGdp
dmVuCisjIG5vZGVzIGluIHRoZSBtYXBwaW5nLgorIworCitjbGFzcyBOb2RlCisgIGRlZiBkZW1h
Y3JvaWZ5KG1hY3JvcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAg
IGNoaWxkLmRlbWFjcm9pZnkobWFjcm9zKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3Rp
dHV0ZShtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAg
Y2hpbGQuc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3Rp
dHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAor
ICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQK
KworY2xhc3MgTWFjcm8KKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBteU1hcHBpbmcg
PSB7fQorICAgIG1hcHBpbmcuZWFjaF9wYWlyIHsKKyAgICAgIHwga2V5LCB2YWx1ZSB8CisgICAg
ICB1bmxlc3MgQHZhcmlhYmxlcy5pbmNsdWRlPyBrZXkKKyAgICAgICAgbXlNYXBwaW5nW2tleV0g
PSB2YWx1ZQorICAgICAgZW5kCisgICAgfQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hp
bGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShteU1hcHBpbmcpCisgICAgfQorICBlbmQKK2Vu
ZAorCitjbGFzcyBWYXJpYWJsZQorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIGlmIG1h
cHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxmCisg
ICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIHN1YnN0aXR1dGVM
YWJlbHMobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZd
CisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1
ZW5jZQorICBkZWYgc3Vic3RpdHV0ZShjb25zdGFudHMpCisgICAgbmV3TGlzdCA9IFtdCisgICAg
bXlDb25zdGFudHMgPSBjb25zdGFudHMuZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0
ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAgICAgbXlDb25zdGFudHNb
aXRlbS52YXJpYWJsZV0gPSBpdGVtLnZhbHVlLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAg
ICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQor
ICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQor
ICBlbmQKKyAgCisgIGRlZiByZW5hbWVMYWJlbHMoY29tbWVudCkKKyAgICBtYXBwaW5nID0ge30K
KyAgICAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlz
X2E/IExvY2FsTGFiZWwKKyAgICAgICAgbWFwcGluZ1tpdGVtXSA9IExvY2FsTGFiZWwudW5pcXVl
KGlmIGNvbW1lbnQgdGhlbiBjb21tZW50ICsgIl8iIGVsc2UgIiIgZW5kICsgaXRlbS5jbGVhbk5h
bWUpCisgICAgICBlbmQKKyAgICB9CisgICAgCisgICAgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5n
KQorICBlbmQKKyAgCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBteU1hY3JvcyA9IG1h
Y3Jvcy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVt
LmlzX2E/IE1hY3JvCisgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBpdGVtCisgICAgICBl
bmQKKyAgICB9CisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0
ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICAjIElnbm9yZS4KKyAgICAg
IGVsc2lmIGl0ZW0uaXNfYT8gTWFjcm9DYWxsCisgICAgICAgIG1hcHBpbmcgPSB7fQorICAgICAg
ICBteU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisgICAgICAgIHJhaXNlICJDb3VsZCBub3QgZmlu
ZCBtYWNybyAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mg
bXlNYWNyb3NbaXRlbS5uYW1lXQorICAgICAgICByYWlzZSAiQXJndW1lbnQgY291bnQgbWlzbWF0
Y2ggZm9yIGNhbGwgdG8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIg
dW5sZXNzIGl0ZW0ub3BlcmFuZHMuc2l6ZSA9PSBteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxl
cy5zaXplCisgICAgICAgIGl0ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgfCBp
ZHggfAorICAgICAgICAgIGlmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBWYXJpYWJsZSBhbmQg
bXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAgICBteU15TWFjcm9z
W215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jvc1tpdGVt
Lm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5u
YW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2lmIGl0ZW0ub3Bl
cmFuZHNbaWR4XS5pc19hPyBNYWNybworICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tp
dGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAg
ICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0g
PSBuaWwKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0
ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gbmlsCisgICAgICAgICAgICBtYXBwaW5nW215TWFj
cm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAg
ICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCArPSBteU1hY3Jvc1tpdGVtLm5h
bWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNyb3MpLnJlbmFt
ZUxhYmVscyhpdGVtLm5hbWUpLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBp
dGVtLmRlbWFjcm9pZnkobXlNYWNyb3MpCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2Uu
bmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpLnN1YnN0aXR1dGUoe30pCisgIGVuZAorZW5kCisKKyMK
KyMgbm9kZS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyMKKyMgQ29uc3RydWN0IGEg
bmV3IEFTVCB0aGF0IGhhcyBvZmZzZXQgdmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMKKyMgb2Zm
c2V0cy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6
ZXMpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNv
bHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFN0
cnVjdE9mZnNldAorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYg
b2Zmc2V0c1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXRzW3Nl
bGZdKQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3Mg
U2l6ZW9mCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBzaXpl
c1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBzaXplc1tzZWxmXSkKKyAg
ICBlbHNlCisgICAgICBwdXRzICJDb3VsZCBub3QgZmluZCAje3NlbGYuaW5zcGVjdH0gaW4gI3tz
aXplcy5rZXlzLmluc3BlY3R9IgorICAgICAgcHV0cyAic2l6ZXMgPSAje3NpemVzLmluc3BlY3R9
IgorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCisjCisjIG5vZGUuZm9sZAorIwor
IyBSZXNvbHZlIGNvbnN0YW50IHJlZmVyZW5jZXMgYW5kIGNvbXB1dGUgYXJpdGhtZXRpYyBleHBy
ZXNzaW9ucy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgZm9sZAorICAgIG1hcENoaWxkcmVuIHsK
KyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuZm9sZAorICAgIH0KKyAgZW5kCitlbmQKKwor
Y2xhc3MgQWRkSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAor
ICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0Lmlz
X2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRp
YXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSArIEByaWdodC52
YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAg
IEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJu
IHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVz
cyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBA
bGVmdC52YWx1ZSAtIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRp
YXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEBy
aWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQor
ICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRp
YXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAqIEByaWdodC52YWx1ZSkKKyAgZW5kCitl
bmQKKworY2xhc3MgTmVnSW1tZWRpYXRlCisgIGRlZiBmb2xkCisgICAgQGNoaWxkID0gQGNoaWxk
LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGNoaWxkLmlzX2E/IEltbWVkaWF0ZQorICAg
IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLUBjaGlsZC52YWx1ZSkKKyAgZW5kCitlbmQKKwor
IworIyBub2RlLnJlc29sdmVBZnRlclNldHRpbmdzKG9mZnNldHMsIHNpemVzKQorIworIyBDb21w
aWxlIGFzc2VtYmx5IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4KKyMKKworY2xhc3MgTm9kZQor
ICBkZWYgcmVzb2x2ZShvZmZzZXRzLCBzaXplcykKKyAgICBkZW1hY3JvaWZ5KHt9KS5yZXNvbHZl
T2Zmc2V0cyhvZmZzZXRzLCBzaXplcykuZm9sZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2
NyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgUmVnaXN0
ZXJJRAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0
MCIsICJhMCIsICJyMCIsICJ0MSIsICJhMSIsICJyMSIsICJ0MiIsICJ0MyIKKyAgICAgIHRydWUK
KyAgICB3aGVuICJ0NCIsICJjZnIiCisgICAgICBmYWxzZQorICAgIGVsc2UKKyAgICAgIHJhaXNl
CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICBjYXNlIG5h
bWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hl
biA6Ynl0ZQorICAgICAgICAiJWFsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWF4Igor
ICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWF4IgorICAgICAgZWxzZQorICAgICAgICByYWlz
ZQorICAgICAgZW5kCisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAgICBjYXNlIGtpbmQK
KyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAg
ICAgIiVkeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkeCIKKyAgICAgIGVsc2UKKyAg
ICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQyIgorICAgICAgY2FzZSBraW5kCisg
ICAgICB3aGVuIDpieXRlCisgICAgICAgICIlY2wiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAg
ICIlY3giCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlY3giCisgICAgICBlbHNlCisgICAg
ICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MyIKKyAgICAgIGNhc2Uga2luZAorICAg
ICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWJsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAi
JWJ4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWJ4IgorICAgICAgZWxzZQorICAgICAg
ICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDQiCisgICAgICBjYXNlIGtpbmQKKyAgICAg
IHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIl
c2kiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlc2kiCisgICAgICBlbHNlCisgICAgICAg
IHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJjZnIiCisgICAgICBjYXNlIGtpbmQKKyAgICAg
IHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIl
ZGkiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlZGkiCisgICAgICBlbHNlCisgICAgICAg
IHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJzcCIKKyAgICAgIGNhc2Uga2luZAorICAgICAg
d2hlbiA6Ynl0ZQorICAgICAgICAiJXNwbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVz
cCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzcCIKKyAgICAgIGVsc2UKKyAgICAgICAg
cmFpc2UKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAor
ICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisg
IGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgeDg2T3BlcmFuZChraW5kKQor
ICAgIHJhaXNlIHVubGVzcyBraW5kID09IDpkb3VibGUKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVu
ICJmdDAiLCAiZmEwIiwgImZyIgorICAgICAgIiV4bW0wIgorICAgIHdoZW4gImZ0MSIsICJmYTEi
CisgICAgICAiJXhtbTEiCisgICAgd2hlbiAiZnQyIiwgImZhMiIKKyAgICAgICIleG1tMiIKKyAg
ICB3aGVuICJmdDMiLCAiZmEzIgorICAgICAgIiV4bW0zIgorICAgIHdoZW4gImZ0NCIKKyAgICAg
ICIleG1tNCIKKyAgICB3aGVuICJmdDUiCisgICAgICAiJXhtbTUiCisgICAgZWxzZQorICAgICAg
cmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIq
I3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRl
ZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiQje3ZhbHVlfSIKKyAgZW5kCisgIGRlZiB4ODZDYWxs
T3BlcmFuZChraW5kKQorICAgICIje3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVz
cworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYg
eDg2T3BlcmFuZChraW5kKQorICAgICIje29mZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQo
OmludCl9KSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZP
cGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBzdXBw
b3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtp
bmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0sICN7aW5k
ZXgueDg2T3BlcmFuZCg6aW50KX0sICN7c2NhbGV9KSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxP
cGVyYW5kKGtpbmQpCisgICAgIioje3g4Nm9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitj
bGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQor
ICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3thZGRyZXNzLnZhbHVl
fSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje2FkZHJlc3Mu
dmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2Q2Fs
bE9wZXJhbmQoa2luZCkKKyAgICBhc21MYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExh
YmVsUmVmZXJlbmNlCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgIGFzbUxhYmVsCisg
IGVuZAorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgIGRlZiB4ODZPcGVyYW5kcygqa2luZHMp
CisgICAgcmFpc2UgdW5sZXNzIGtpbmRzLnNpemUgPT0gb3BlcmFuZHMuc2l6ZQorICAgIHJlc3Vs
dCA9IFtdCisgICAga2luZHMuc2l6ZS50aW1lcyB7CisgICAgICB8IGlkeCB8CisgICAgICByZXN1
bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZPcGVyYW5kKGtpbmRzW2lkeF0pCisgICAgfQorICAgIHJl
c3VsdC5qb2luKCIsICIpCisgIGVuZAorCisgIGRlZiB4ODZTdWZmaXgoa2luZCkKKyAgICBjYXNl
IGtpbmQKKyAgICB3aGVuIDpieXRlCisgICAgICAiYiIKKyAgICB3aGVuIDpoYWxmCisgICAgICAi
dyIKKyAgICB3aGVuIDppbnQKKyAgICAgICJsIgorICAgIHdoZW4gOmRvdWJsZQorICAgICAgInNk
IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRs
ZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgbnVtT3BlcmFuZHMpCisgICAgaWYg
bnVtT3BlcmFuZHMgPT0gMworICAgICAgaWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0KKyAg
ICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQp
fSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRz
WzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0i
CisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAibW92I3t4ODZTdWZmaXgoa2luZCl9ICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChr
aW5kKX0iCisgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQK
KyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcChvcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2
T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXplKQorICBlbmQKKyAg
CisgIGRlZiBoYW5kbGVYODZTaGlmdChvcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0u
aXNfYT8gSW1tZWRpYXRlIG9yIG9wZXJhbmRzWzBdID09IFJlZ2lzdGVySUQuZm9yTmFtZShuaWws
ICJ0MiIpCisgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisg
ICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVl
Y3giCisgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAlY2wsICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZChraW5kKX0iCisgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6aW50KX0sICVlY3giCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkRv
dWJsZUJyYW5jaChicmFuY2hPcGNvZGUsIG1vZGUpCisgICAgY2FzZSBtb2RlCisgICAgd2hlbiA6
bm9ybWFsCisgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVu
IDpyZXZlcnNlCisgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICBl
bHNlCisgICAgICByYWlzZSBtb2RlLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIiN7
YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYg
aGFuZGxlWDg2SW50Q29tcGFyZShvcGNvZGVTdWZmaXgsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNb
MF0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5k
c1sxXS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVT
dWZmaXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAidGVzdCN7eDg2U3VmZml4KGtpbmQpfSAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2lmIG9wZXJhbmRzWzFdLmlz
X2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNbMF0u
aXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3VmZml4
ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgImNt
cCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBo
YW5kbGVYODZJbnRCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NkludENv
bXBhcmUoYnJhbmNoT3Bjb2RlWzEuLi0xXSwga2luZCkKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNo
T3Bjb2RlfSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxl
WDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZCkKKyAgICBpZiBvcGVyYW5kLnN1cHBvcnRzOEJpdE9u
WDg2CisgICAgICAkYXNtLnB1dHMgIiN7c2V0T3Bjb2RlfSAje29wZXJhbmQueDg2T3BlcmFuZCg6
Ynl0ZSl9IgorICAgICAgJGFzbS5wdXRzICJtb3Z6YmwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5
dGUpfSwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgICRhc20u
cHV0cyAieGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgICAgJGFz
bS5wdXRzICIje3NldE9wY29kZX0gJWFsIgorICAgICAgJGFzbS5wdXRzICJtb3Z6YmwgJWFsLCAl
ZWF4IgorICAgICAgJGFzbS5wdXRzICJ4Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0s
ICVlYXgiCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmVTZXQo
c2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NkludENvbXBhcmUoc2V0T3Bjb2RlWzMuLi0x
XSwga2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kc1syXSkKKyAgZW5k
CisgIAorICBkZWYgaGFuZGxlWDg2VGVzdChraW5kKQorICAgIHZhbHVlID0gb3BlcmFuZHNbMF0K
KyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDIKKyAgICAgIG1hc2sgPSBJbW1lZGlh
dGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAgIHdoZW4gMworICAgICAgbWFzayA9IG9wZXJhbmRz
WzFdCisgICAgZWxzZQorICAgICAgcmFpc2UgIkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5kcywgYnV0
IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisg
ICAgCisgICAgaWYgbWFzay5pc19hPyBJbW1lZGlhdGUgYW5kIG1hc2sudmFsdWUgPT0gLTEKKyAg
ICAgIGlmIHZhbHVlLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4
ODZTdWZmaXgoa2luZCl9ICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3Bl
cmFuZChraW5kKX0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiY21wI3t4ODZTdWZm
aXgoa2luZCl9ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5kCisgICAg
ZWxzZQorICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7bWFzay54ODZP
cGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5k
CisgIAorICBkZWYgaGFuZGxlWDg2QnJhbmNoVGVzdChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAg
aGFuZGxlWDg2VGVzdChraW5kKQorICAgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7b3Bl
cmFuZHMubGFzdC5hc21MYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldFRlc3Qo
c2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICBoYW5kbGVYODZT
ZXQoc2V0T3Bjb2RlLCBvcGVyYW5kcy5sYXN0KQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZP
cEJyYW5jaChvcGNvZGUsIGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhO
dW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGNhc2Ugb3Bl
cmFuZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisg
ICAgd2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAg
ICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bj
b2RlfSAje2p1bXBUYXJnZXQuYXNtTGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZT
dWJCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gNCBh
bmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICRhc20ucHV0cyAibmVnbCAje29w
ZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJhZGRsICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgZWxzZQorICAgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMoInN1YiN7eDg2
U3VmZml4KGtpbmQpfSIsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGVuZAorICAgIGNh
c2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRz
WzNdCisgICAgd2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNl
CisgICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIiN7YnJh
bmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQuYXNtTGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBsb3dl
clg4NgorICAgICRhc20uY29tbWVudCBjb2RlT3JpZ2luU3RyaW5nCisgICAgY2FzZSBvcGNvZGUK
KyAgICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5k
IG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFu
ZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0u
aXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCisgICAg
ICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAkYXNt
LnB1dHMgIm1vdmwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sy
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICRhc20ucHV0cyAibGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
ICAgZW5kCisgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlz
X2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJl
Z2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVy
SUQKKyAgICAgICAgJGFzbS5wdXRzICJsZWFsICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmlu
dCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXco
bmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAgICRhc20ucHV0cyAiYWRkbCAje3g4Nk9w
ZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbmQKKyAgICB3aGVuICJh
bmRpIiwgImFuZHAiCisgICAgICBoYW5kbGVYODZPcCgiYW5kbCIsIDppbnQpCisgICAgd2hlbiAi
bHNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYWxsIiwgOmludCkKKyAgICB3aGVuICJt
dWxpIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJ
bW1lZGlhdGUKKyAgICAgICAgJGFzbS5wdXRzICJpbXVsbCAje3g4Nk9wZXJhbmRzKDppbnQsIDpp
bnQsIDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgIyBGSVhNRTogY291bGQgZG8gc29tZSBw
ZWVwaG9sZSBpbiBjYXNlIHRoZSBsZWZ0IG9wZXJhbmQgaXMgaW1tZWRpYXRlIGFuZCBpdCdzCisg
ICAgICAgICMgYSBwb3dlciBvZiB0d28uCisgICAgICAgIGhhbmRsZVg4Nk9wKCJpbXVsbCIsIDpp
bnQpCisgICAgICBlbmQKKyAgICB3aGVuICJuZWdpIgorICAgICAgJGFzbS5wdXRzICJuZWdsICN7
eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm5vdGkiCisgICAgICAkYXNtLnB1dHMgIm5v
dGwgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAib3JpIiwgIm9ycCIKKyAgICAgIGhh
bmRsZVg4Nk9wKCJvcmwiLCA6aW50KQorICAgIHdoZW4gInJzaGlmdGkiCisgICAgICBoYW5kbGVY
ODZTaGlmdCgic2FybCIsIDppbnQpCisgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICBoYW5kbGVY
ODZTaGlmdCgic2hybCIsIDppbnQpCisgICAgd2hlbiAic3ViaSIsICJzdWJwIgorICAgICAgaWYg
b3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAg
ICAkYXNtLnB1dHMgIm5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
ICAgJGFzbS5wdXRzICJhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIGhhbmRsZVg4
Nk9wKCJzdWJsIiwgOmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gInhvcmkiLCAieG9ycCIKKyAg
ICAgIGhhbmRsZVg4Nk9wKCJ4b3JsIiwgOmludCkKKyAgICB3aGVuICJsb2FkaSIsICJzdG9yZWki
LCAibG9hZHAiLCAic3RvcmVwIgorICAgICAgJGFzbS5wdXRzICJtb3ZsICN7eDg2T3BlcmFuZHMo
OmludCwgOmludCl9IgorICAgIHdoZW4gImxvYWRiIgorICAgICAgJGFzbS5wdXRzICJtb3Z6Ymwg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGgiCisgICAgICAkYXNtLnB1dHMgIm1vdnp3bCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICB3aGVuICJzdG9yZWIiCisgICAgICAkYXNtLnB1dHMgIm1vdmIgI3t4ODZPcGVy
YW5kcyg6Ynl0ZSwgOmJ5dGUpfSIKKyAgICB3aGVuICJsb2FkZCIsICJtb3ZlZCIsICJzdG9yZWQi
CisgICAgICAkYXNtLnB1dHMgIm1vdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9
IgorICAgIHdoZW4gImFkZGQiCisgICAgICAkYXNtLnB1dHMgImFkZHNkICN7eDg2T3BlcmFuZHMo
OmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImRpdmQiCisgICAgICAkYXNtLnB1dHMgImRp
dnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInN1YmQiCisg
ICAgICAkYXNtLnB1dHMgInN1YnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9Igor
ICAgIHdoZW4gIm11bGQiCisgICAgICAkYXNtLnB1dHMgIm11bHNkICN7eDg2T3BlcmFuZHMoOmRv
dWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInNxcnRkIgorICAgICAgJGFzbS5wdXRzICJzcXJ0
c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJjaTJkIgorICAgICAgJGFzbS5wdXRzICJjdnRz
aTJzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImJkZXEiCisgICAgICBpc1Vub3JkZXJlZCA9IExv
Y2FsTGFiZWwudW5pcXVlKCJiZGVxIikKKyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJqcCAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3Jp
Z2luLCBpc1Vub3JkZXJlZCkuYXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJqZSAje0xhYmVs
UmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBvcGVyYW5kc1syXSkuYXNtTGFiZWx9IgorICAgICAg
aXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRuZXEiCisgICAgICBoYW5kbGVY
ODZEb3VibGVCcmFuY2goImpuZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRndCIKKyAgICAgIGhh
bmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3RlcSIKKyAg
ICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0
IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpyZXZlcnNlKQorICAgIHdoZW4g
ImJkbHRlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOnJldmVyc2UpCisg
ICAgd2hlbiAiYmRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3Jt
YWwpCisgICAgd2hlbiAiYmRuZXF1biIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51
bmlxdWUoImJkbmVxdW4iKQorICAgICAgaXNFcXVhbCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5l
cXVuIikKKyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFz
bS5wdXRzICJqcCAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCku
YXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2Rl
T3JpZ2luLCBpc0VxdWFsKS5hc21MYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2
IikKKyAgICAgICRhc20ucHV0cyAiam1wICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAg
aXNFcXVhbC5sb3dlcigiWDg2IikKKyAgICB3aGVuICJiZGd0dW4iCisgICAgICBoYW5kbGVYODZE
b3VibGVCcmFuY2goImpiIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRndGVxdW4iCisgICAgICBo
YW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHR1biIK
KyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6bm9ybWFsKQorICAgIHdoZW4gImJk
bHRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6bm9ybWFsKQorICAg
IHdoZW4gImJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICAgICRhc20ucHV0cyAiY21wbCAkMHg4MDAwMDAwMCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgJGFzbS5wdXRzICJqZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAg
ICB3aGVuICJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICB3aGVuICJiY2QyaSIKKyAgICAgICRhc20ucHV0cyAiY3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgICAkYXNtLnB1dHMgInRlc3RsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgImplICN7b3Bl
cmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJjdnRzaTJzZCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0
cyAianAgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAkYXNtLnB1dHMgImpuZSAje29w
ZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJtb3ZkeiIKKyAgICAgICRhc20ucHV0cyAi
eG9ycGQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJwb3AiCisgICAgICAkYXNtLnB1dHMgInBv
cCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInB1c2giCisgICAg
ICAkYXNtLnB1dHMgInB1c2ggI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3
aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgaWYgSW1tZWRpYXRlLm5ldyhuaWws
IDApID09IG9wZXJhbmRzWzBdIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAg
ICAgICRhc20ucHV0cyAieG9ybCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMF0gIT0g
b3BlcmFuZHNbMV0KKyAgICAgICAgJGFzbS5wdXRzICJtb3ZsICN7eDg2T3BlcmFuZHMoOmludCwg
OmludCl9IgorICAgICAgZW5kCisgICAgd2hlbiAibm9wIgorICAgICAgJGFzbS5wdXRzICJub3Ai
CisgICAgd2hlbiAiYmllcSIsICJicGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIs
IDppbnQpCisgICAgd2hlbiAiYmluZXEiLCAiYnBuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImpuZSIsIDppbnQpCisgICAgd2hlbiAiYmlhIiwgImJwYSIKKyAgICAgIGhhbmRsZVg4Nklu
dEJyYW5jaCgiamEiLCA6aW50KQorICAgIHdoZW4gImJpYWVxIiwgImJwYWVxIgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6aW50KQorICAgIHdoZW4gImJpYiIsICJicGIiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmludCkKKyAgICB3aGVuICJiaWJlcSIsICJicGJl
cSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmludCkKKyAgICB3aGVuICJiaWd0
IiwgImJwZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmludCkKKyAgICB3aGVu
ICJiaWd0ZXEiLCAiYnBndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6aW50
KQorICAgIHdoZW4gImJpbHQiLCAiYnBsdCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwi
LCA6aW50KQorICAgIHdoZW4gImJpbHRlcSIsICJicGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRC
cmFuY2goImpsZSIsIDppbnQpCisgICAgd2hlbiAiYmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYm5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiam5lIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhIgorICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqYSIsIDpieXRlKQorICAgIHdoZW4gImJiYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqYWUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmIiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImpiIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImpiZSIsIDpieXRlKQorICAgIHdoZW4gImJiZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImpnIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqZ2UiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0IgorICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqbCIsIDpieXRlKQorICAgIHdoZW4gImJibHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamx0ZXEiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGlvIiwgImJ0cG8iCisgICAgICBoYW5k
bGVYODZCcmFuY2hUZXN0KCJqbyIsIDppbnQpCisgICAgd2hlbiAiYnRpcyIsICJidHBzIgorICAg
ICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6aW50KQorICAgIHdoZW4gImJ0aXoiLCAiYnRw
eiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6IiwgOmludCkKKyAgICB3aGVuICJidGlu
eiIsICJidHBueiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDppbnQpCisgICAg
d2hlbiAiYnRibyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmJ5dGUpCisgICAg
d2hlbiAiYnRicyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmJ5dGUpCisgICAg
d2hlbiAiYnRieiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6IiwgOmJ5dGUpCisgICAg
d2hlbiAiYnRibnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6Ynl0ZSkKKyAg
ICB3aGVuICJqbXAiCisgICAgICAkYXNtLnB1dHMgImptcCAje29wZXJhbmRzWzBdLng4NkNhbGxP
cGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiYWRkaW8iLCAiYmFkZHBvIgorICAgICAgaGFuZGxl
WDg2T3BCcmFuY2goImFkZGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJhZGRpcyIsICJiYWRk
cHMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqcyIsIDppbnQpCisgICAgd2hl
biAiYmFkZGl6IiwgImJhZGRweiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImp6
IiwgOmludCkKKyAgICB3aGVuICJiYWRkaW56IiwgImJhZGRwbnoiCisgICAgICBoYW5kbGVYODZP
cEJyYW5jaCgiYWRkbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbyIKKyAgICAgIGhh
bmRsZVg4NlN1YkJyYW5jaCgiam8iLCA6aW50KQorICAgIHdoZW4gImJzdWJpcyIKKyAgICAgIGhh
bmRsZVg4NlN1YkJyYW5jaCgianMiLCA6aW50KQorICAgIHdoZW4gImJzdWJpeiIKKyAgICAgIGhh
bmRsZVg4NlN1YkJyYW5jaCgianoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbnoiCisgICAgICBo
YW5kbGVYODZTdWJCcmFuY2goImpueiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlvIgorICAgICAg
aGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJibXVsaXMi
CisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAianMiLCA6aW50KQorICAgIHdoZW4g
ImJtdWxpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqeiIsIDppbnQpCisg
ICAgd2hlbiAiYm11bGlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbnoi
LCA6aW50KQorICAgIHdoZW4gImJvcmlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIs
ICJqbyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgi
b3JsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJib3JpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJh
bmNoKCJvcmwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJvcmlueiIKKyAgICAgIGhhbmRsZVg4
Nk9wQnJhbmNoKCJvcmwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJicmVhayIKKyAgICAgICRh
c20ucHV0cyAiaW50ICQzIgorICAgIHdoZW4gImNhbGwiCisgICAgICAkYXNtLnB1dHMgImNhbGwg
I3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicmV0IgorICAg
ICAgJGFzbS5wdXRzICJyZXQiCisgICAgd2hlbiAiY2llcSIsICJjcGVxIgorICAgICAgaGFuZGxl
WDg2SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQpCisgICAgd2hlbiAiY2luZXEiLCAiY3BuZXEi
CisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRuZSIsIDppbnQpCisgICAgd2hlbiAi
Y2lhIiwgImNwYSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGEiLCA6aW50KQor
ICAgIHdoZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgi
c2V0YWUiLCA6aW50KQorICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAgICBoYW5kbGVYODZJbnRD
b21wYXJlU2V0KCJzZXRiIiwgOmludCkKKyAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAg
IGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGJlIiwgOmludCkKKyAgICB3aGVuICJjaWd0Iiwg
ImNwZ3QiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnIiwgOmludCkKKyAgICB3
aGVuICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
Z2UiLCA6aW50KQorICAgIHdoZW4gImNpbHQiLCAiY3BsdCIKKyAgICAgIGhhbmRsZVg4NkludENv
bXBhcmVTZXQoInNldGwiLCA6aW50KQorICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiCisgICAg
ICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisgICAgd2hlbiAidGlvIgor
ICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQpCisgICAgd2hlbiAidGlzIgorICAg
ICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDppbnQpCisgICAgd2hlbiAidGl6IgorICAgICAg
aGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDppbnQpCisgICAgd2hlbiAidGlueiIKKyAgICAgIGhh
bmRsZVg4NlNldFRlc3QoInNldG56IiwgOmludCkKKyAgICB3aGVuICJ0Ym8iCisgICAgICBoYW5k
bGVYODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgd2hlbiAidGJzIgorICAgICAgaGFuZGxl
WDg2U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAgIHdoZW4gInRieiIKKyAgICAgIGhhbmRsZVg4
NlNldFRlc3QoInNldHoiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ym56IgorICAgICAgaGFuZGxlWDg2
U2V0VGVzdCgic2V0bnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJwZWVrIgorICAgICAgJGFzbS5wdXRz
ICJtb3ZsICN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fSglZXNwKSwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJwb2tlIgorICAgICAgJGFzbS5wdXRzICJtb3ZsICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0udmFsdWUgKiA0fSgl
ZXNwKSIKKyAgICB3aGVuICJjZHFpIgorICAgICAgJGFzbS5wdXRzICJjZHEiCisgICAgd2hlbiAi
aWRpdmkiCisgICAgICAkYXNtLnB1dHMgImlkaXZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgd2hlbiAiZmlpMmQiCisgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUp
fSIKKyAgICAgICRhc20ucHV0cyAibW92ZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9
LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAicHNsbHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20u
cHV0cyAicG9yICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAg
IHdoZW4gImZkMmlpIgorICAgICAgJGFzbS5wdXRzICJtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAk
YXNtLnB1dHMgIm1vdnNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03
IgorICAgICAgJGFzbS5wdXRzICJwc3JscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJt
b3ZzZCAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisg
ICAgICByYWlzZSAiQmFkIG9wY29kZTogI3tvcGNvZGV9IgorICAgIGVuZAorICBlbmQKK2VuZAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25L
aW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNw
ZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisjZGVmaW5lIENvZGVTcGVjaWFsaXphdGlv
bktpbmRfaAorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKKworfSAvLyBuYW1lc3BhY2UgSlND
CisKKyNlbmRpZiAvLyBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDEw
NjE4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIENvbW1vblNsb3dQYXRo
c19oCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQXJy
YXkuaCIKIApAQCAtNDEsNiArNDIsMzggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBD
b21tb25TbG93UGF0aHMgewogCitBTFdBWVNfSU5MSU5FIEV4ZWNTdGF0ZSogYXJpdHlDaGVja0Zv
cihFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlv
bihleGVjLT5jYWxsZWUoKSk7CisgICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkp
OworICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCkt
PmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyA9IGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CisKKyAgICAvLyBU
aGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6
ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KKyAgICBpZiAoIXJlZ2lzdGVyRmls
ZS0+Z3JvdyhleGVjLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
ICsgbmV3Q29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCisgICAgICAgIHJldHVybiAw
OworCisgICAgQVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2Nr
LT5udW1QYXJhbWV0ZXJzKCkpOworCisgICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBj
YWxsIGZyYW1lIGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3
aXRoIHVuZGVmaW5lZC4KKyAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFt
ZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOworICAgIFJlZ2lzdGVyKiBzcmMg
PSBleGVjLT5yZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlciogZHN0ID0gZXhlYy0+cmVnaXN0ZXJz
KCkgKyBkZWx0YTsKKworICAgIGludCBpOworICAgIGludCBlbmQgPSAtRXhlY1N0YXRlOjpvZmZz
ZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgIGZvciAoaSA9IC0xOyBpID49
IGVuZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBzcmNbaV07CisKKyAgICBlbmQgLT0gZGVsdGE7
CisgICAgZm9yICggOyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5l
ZCgpOworCisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gRXhlY1N0YXRlOjpjcmVhdGUoZHN0KTsK
KyAgICBBU1NFUlQoKHZvaWQqKW5ld0V4ZWMgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7CisgICAg
cmV0dXJuIG5ld0V4ZWM7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBvcEluc3RhbmNlT2ZTbG93
KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVl
IHByb3RvKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNDZWxsKCkgfHwgIWJhc2VWYWwuaXNDZWxs
KCkgfHwgIXByb3RvLmlzQ2VsbCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMTA2MTg0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgorI2luY2x1ZGUgIkV4ZWN1dGlvbkhhcm5lc3Mu
aCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVREcml2ZXIuaCIKICNpbmNsdWRlICJQ
YXJzZXIuaCIKQEAgLTg0LDcgKzg1LDcgQEAgSW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6Omlu
dHJpbnNpYygpIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRpYyB2b2lkIGpldHRpc29uQ29k
ZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPFQ+JiBjb2RlQmxvY2spCiB7
Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5l
SklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+Z2V0
SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CiAgICAg
T3duUHRyPFQ+IGNvZGVCbG9ja1RvSmV0dGlzb24gPSBjb2RlQmxvY2sucmVsZWFzZSgpOwogICAg
IGNvZGVCbG9jayA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8VD4oY29kZUJsb2NrVG9KZXR0aXNvbi0+
cmVsZWFzZUFsdGVybmF0aXZlKCkpOwpAQCAtMTY3LDkgKzE2OCwzMCBAQCBKU09iamVjdCogRXZh
bEV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpbWl6CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lk
IEV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sK
KyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1f
ZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgp
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKworaW5saW5lIGNvbnN0
IGNoYXIqIHNhbXBsaW5nRGVzY3JpcHRpb24oSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQorewor
ICAgIHN3aXRjaCAoaml0VHlwZSkgeworICAgIGNhc2UgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVu
azoKKyAgICAgICAgcmV0dXJuICJJbnRlcnByZXRlciBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAg
ICBjYXNlIEpJVENvZGU6OkJhc2VsaW5lSklUOgorICAgICAgICByZXR1cm4gIkJhc2VsaW5lIENv
bXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6REZHSklUOgorICAgICAgICBy
ZXR1cm4gIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBkZWZhdWx0OgorICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiBKU09i
amVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNj
b3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQog
ewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBp
bGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1w
bGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBV
TlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC0yMTAsNyArMjMyLDcgQEAgSlNPYmplY3QqIEV2YWxF
eGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAg
aWYgKCFqaXRDb21waWxlSWZBcHByb3ByaWF0ZSgqZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2Nr
LCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVjdXRp
b24oKmdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlw
ZSkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTI5NSw5ICszMTcsMTUgQEAgSlNP
YmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlT3B0aQogICAgIHJldHVybiBlcnJvcjsK
IH0KIAordm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShn
bG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6
OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9
CisKIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0
ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBl
IGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9
PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6
ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5n
UmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUo
SklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTMzNiw3ICszNjQsNyBAQCBKU09i
amVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlCiAgICAgfQogCiAjaWYgRU5BQkxF
KEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRhLCBtX3By
b2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJl
cGFyZUZvckV4ZWN1dGlvbigqZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENv
ZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNDEy
LDcgKzQ0MCw3IEBAIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmIKICAg
ICB3aGlsZSAocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKQogICAgICAgICByZXN1bHQgPSBzdGF0aWNf
Y2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgQVNT
RVJUKHJlc3VsdCk7Ci0gICAgQVNTRVJUKHJlc3VsdC0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6
OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0
LT5nZXRKSVRUeXBlKCkpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MzgsNiArNDY2
LDE4IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVPcHQKICAgICByZXR1
cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2Fs
bChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21w
aWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ2FsbCwg
bV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJv
bFRhYmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQpOworfQorCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZv
ckNvbnN0cnVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQg
PSBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fY29kZUJsb2Nr
Rm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVj
dFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkp
OworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCiBGdW5jdGlvbkNvZGVC
bG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tXaXRoQnl0ZWNvZGVGb3IoQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcihraW5kKTsKQEAgLTQ4Miw3ICs1MjIsNyBAQCBQYXNz
T3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBGdW5jdGlvbkV4CiAKIEpTT2JqZWN0KiBGdW5jdGlv
bkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29w
ZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsK
LSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJh
c2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxh
dGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxp
bmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5V
U0VEX1BBUkFNKGV4ZWMpOwpAQCAtNTA0LDcgKzU0NCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JD
YWxsLT5zaGFyZWRTeW1ib2xUYWJsZSgpOwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWpp
dENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVC
bG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlD
aGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25G
b3JFeGVjdXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0
Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJs
ZSwgaml0VHlwZSwgQ29kZUZvckNhbGwpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBA
IC01MjQsNyArNTY0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZv
cgogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50
ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJ
VENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1Jl
Z2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0
aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdS
ZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAg
CiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtNTQ2LDcg
KzU4Niw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBt
X3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnNoYXJlZFN5bWJvbFRhYmxl
KCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHBy
b3ByaWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2pp
dENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBt
X3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENv
ZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5
bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9yQ29uc3RydWN0KSkKICAgICAgICAgcmV0dXJuIDA7
CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuaAkocmV2aXNpb24gMTA2MTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEV4
ZWN1dGFibGVfaAogCiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lh
bGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTM5LDEyICs0MCwxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1Z2dlcjsKICAgICBjbGFzcyBFdmFsQ29kZUJsb2NrOwog
ICAgIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5O
b2RlOwogCiAgICAgc3RydWN0IEV4Y2VwdGlvbkluZm87CiAgICAgCi0gICAgZW51bSBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKICAgICBl
bnVtIENvbXBpbGF0aW9uS2luZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21waWxh
dGlvbiB9OwogCiAgICAgaW5saW5lIGJvb2wgaXNDYWxsKENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKQEAgLTMxOSw2ICszMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAg
Y2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAg
ICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtMzM4LDYgKzM0MCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpl
dHRpc29uT3B0aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21w
aWxlKEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgRXZhbENvZGVCbG9jayYgZ2Vu
ZXJhdGVkQnl0ZWNvZGUoKQpAQCAtMzg0LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IH07CiAKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRh
YmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBw
dWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC00MTEs
NiArNDE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAg
ICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAg
ICB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBQcm9n
cmFtQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC00NTMsNiArNDU4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgU2Ny
aXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBl
ZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNTA4LDYgKzUxNCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29u
T3B0aW1pemVkQ29kZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29t
cGlsZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2Vu
ZXJhdGVkRm9yQ2FsbCgpIGNvbnN0CkBAIC01MzUsNiArNTQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6
ZWRDb2RlRm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBp
bGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlz
R2VuZXJhdGVkRm9yQ29uc3RydWN0KCkgY29uc3QKQEAgLTU4Miw2ICs1OTAsMTYgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3Ry
dWN0KGdsb2JhbERhdGEpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICB2b2lkIGppdENvbXBpbGVGb3IoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChraW5kID09
IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAgICAgICAgaml0Q29tcGlsZUZvckNhbGwoZ2xvYmFs
RGF0YSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgICAgICBqaXRDb21w
aWxlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAg
CiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhh
cm5lc3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEV4ZWN1dGlvbkhh
cm5lc3NfaAorI2RlZmluZSBFeGVjdXRpb25IYXJuZXNzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2lu
Y2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRl
PHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+CitpbmxpbmUgYm9vbCBwcmVwYXJlRm9yRXhlY3V0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxv
Y2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7
CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAg
ICAgICBMTEludDo6Z2V0RW50cnlwb2ludChnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGpp
dENvZGUpOworICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYgLy8g
RU5BQkxFKExMSU5UKQorICAgIHJldHVybiBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxE
YXRhLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdFR5cGUpOworfQorCitpbmxpbmUgYm9vbCBwcmVw
YXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8
RnVuY3Rpb25Db2RlQmxvY2s+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSom
IHN5bWJvbFRhYmxlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUsIENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFz
ZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxl
dmVsIGludGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RnVuY3Rpb25FbnRyeXBvaW50KGds
b2JhbERhdGEsIGtpbmQsIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAg
IGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShraW5k
KTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVGdW5jdGlv
bklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2RlV2l0
aEFyaXR5Q2hlY2ssIHN5bWJvbFRhYmxlLCBqaXRUeXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8gRXhlY3V0aW9uSGFybmVz
c19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlv
bi5oCShyZXZpc2lvbiAxMDYxODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FjdGl2YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJl
Z2lzdGVyQXJyYXkgPSBhZG9wdEFycmF5UHRyKG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bcmVn
aXN0ZXJBcnJheVNpemVdKTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3Rl
cnMgPSByZWdpc3RlckFycmF5LmdldCgpICsgcmVnaXN0ZXJPZmZzZXQ7Ci0KKyAgICAgICAgCiAg
ICAgICAgIC8vIENvcHkgYWxsIGFyZ3VtZW50cyB0aGF0IGNhbiBiZSBjYXB0dXJlZCBieSBuYW1l
IG9yIGJ5IHRoZSBhcmd1bWVudHMgb2JqZWN0LgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG1fbnVtQ2FwdHVyZWRBcmdzOyArK2kpIHsKICAgICAgICAgICAgIGludCBpbmRleCA9IENhbGxG
cmFtZTo6YXJndW1lbnRPZmZzZXQoaSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5oCShyZXZpc2lvbiAxMDYxODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNBcnJheTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAKICAgICBzdHJ1Y3QgU3BhcnNlQXJyYXlFbnRyeSA6IHB1YmxpYyBXcml0ZUJh
cnJpZXI8VW5rbm93bj4gewogICAgICAgICB0eXBlZGVmIFdyaXRlQmFycmllcjxVbmtub3duPiBC
YXNlOwpAQCAtMTIyLDYgKzEyMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBj
bGFzcyBKU0FycmF5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgV2Fsa2Vy
OwogCiAgICAgcHJvdGVjdGVkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmgJKHJldmlzaW9uIDEwNjE4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiwxMCBAQAogbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKLSAgICBjbGFzcyBTdHJ1Y3R1cmU7Cisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3Jp
cHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKKyAgICBjbGFzcyBTdHJ1Y3R1cmU7
CiAKICAgICBlbnVtIEVudW1lcmF0aW9uTW9kZSB7CiAgICAgICAgIEV4Y2x1ZGVEb250RW51bVBy
b3BlcnRpZXMsCkBAIC0xNjQsNiArMTY1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0
YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAog
ICAgICAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwogICAgICAgICBXcml0ZUJhcnJp
ZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTA2MTg0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBl
OwogICAgIGNsYXNzIEpTQWN0aXZhdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJs
ZTsKICAgICBjbGFzcyBTb3VyY2VDb2RlOwogICAgIG5hbWVzcGFjZSBERkcgewpAQCAtMTQwLDYg
KzE0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCiAgICAg
ICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBj
b25zdCBJZGVudGlmaWVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDEwNjE4NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2
ICsxNDEsOCBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAg
LCBrZXl3b3JkcyhhZG9wdFB0cihuZXcgS2V5d29yZHModGhpcykpKQogICAgICwgaW50ZXJwcmV0
ZXIoMCkKICAgICAsIGhlYXAodGhpcywgaGVhcFNpemUpCisgICAgLCBqc0FycmF5Q2xhc3NJbmZv
KCZKU0FycmF5OjpzX2luZm8pCisgICAgLCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvKCZKU0ZpbmFs
T2JqZWN0OjpzX2luZm8pCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLCBzaXplT2ZMYXN0U2Ny
YXRjaEJ1ZmZlcigwKQogI2VuZGlmCkBAIC0yMTYsNyArMjE4LDcgQEAgSlNHbG9iYWxEYXRhOjpK
U0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgIGppdFN0dWJzID0gYWRvcHRQdHIobmV3IEpJ
VFRodW5rcyh0aGlzKSk7CiAjZW5kaWYKIAotICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKHRo
aXMtPmNhblVzZUpJVCgpKTsKKyAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSgmbGxpbnREYXRh
LCB0aGlzLT5jYW5Vc2VKSVQoKSk7CiAKICAgICBoZWFwLm5vdGlmeUlzU2FmZVRvQ29sbGVjdCgp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmgJKHJldmlzaW9uIDEwNjE4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTYgQEAKICNkZWZpbmUg
SlNHbG9iYWxEYXRhX2gKIAogI2luY2x1ZGUgIkNhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24u
aCIKLSNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2VDYWNoZS5o
IgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCi0j
aW5jbHVkZSAiU3Ryb25nLmgiCisjaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiSklU
U3R1YnMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAj
aW5jbHVkZSAiTnVtZXJpY1N0cmluZ3MuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKKyNp
bmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUZXJtaW5hdG9yLmgiCiAjaW5jbHVkZSAiVGlt
ZW91dENoZWNrZXIuaCIKICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCkBAIC02NSw2ICs2Niw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpT
T2JqZWN0OwogICAgIGNsYXNzIEtleXdvcmRzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFBhcnNlckFyZW5h
OwogICAgIGNsYXNzIFJlZ0V4cENhY2hlOwpAQCAtMjQxLDYgKzI0MywxMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgSGVhcCBoZWFwOwogCiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uOwor
CisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QganNBcnJheUNsYXNzSW5mbzsKKyAgICAg
ICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOworCisgICAg
ICAgIExMSW50OjpEYXRhIGxsaW50RGF0YTsKKwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFJl
dHVybkFkZHJlc3NQdHIgZXhjZXB0aW9uTG9jYXRpb247CiAgICAgICAgIEpTVmFsdWUgaG9zdENh
bGxSZXR1cm5WYWx1ZTsKQEAgLTM0Niw2ICszNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICN1bmRl
ZiByZWdpc3RlclR5cGVkQXJyYXlGdW5jdGlvbgogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTR2xv
YmFsRGF0YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CiAgICAg
ICAgIHN0YXRpYyBKU0dsb2JhbERhdGEqJiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAg
ICAgIHZvaWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTA2MTg0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblBy
b3RvdHlwZTsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgR2xvYmFsQ29kZUJs
b2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3Mg
UmVnRXhwQ29uc3RydWN0b3I7CkBAIC0zMzUsNiArMzM2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9w
ZXJ0eUluZm8qLCBpbnQgY291bnQpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBG
b2xkIHJlc2V0IGludG8gaW5pdC4KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0
KEpTT2JqZWN0KiB0aGlzVmFsdWUpOwogICAgICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJvdG90
eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2
aXNpb24gMTA2MTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgSGFzaEVudHJ5OwogICAgIGNsYXNzIEludGVy
bmFsRnVuY3Rpb247CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IE1hcmtlZEJsb2NrOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQ
cm9wZXJ0eU5hbWVBcnJheTsKQEAgLTI2OSw2ICsyNzAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgSlNPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdl
IGlubGluZVN0b3JhZ2UpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIE5vYm9keSBzaG91bGQg
ZXZlciBhc2sgYW55IG9mIHRoZXNlIHF1ZXN0aW9ucyBvbiBzb21ldGhpbmcgYWxyZWFkeSBrbm93
biB0byBiZSBhIEpTT2JqZWN0LgogICAgICAgICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFw
cGVyOwogICAgICAgICB1c2luZyBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyOwpAQCAtMzgxLDYgKzM4
NCw4IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBleHBs
aWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAgICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwg
bV9pbmxpbmVTdG9yYWdlKQogICAgICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAx
MDYxODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBJZGVudGlmaWVyOwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTk2LDYg
Kzk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAg
ICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5RGF0
YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7CiAKICAg
ICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRTdHJ1Y3R1cmU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDEwNjE4NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNTdHJp
bmc7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgSlNTdHJpbmcqIGpz
RW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7CiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmco
RXhlY1N0YXRlKik7CkBAIC0yNDAsNiArMjQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlc29sdmVSb3BlKEV4ZWNT
dGF0ZSopIGNvbnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2U4KExDaGFyKikg
Y29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hhciopIGNvbnN0OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNp
b24gMTA2MTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxOyAvLyBXZWJDb3JlIHVzZXMgTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCB0byBtYWtlIGRvY3VtZW50LmFsbCB1bmRldGVjdGFibGUuCiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDEgPDwgMTsKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJpZGVzSGFzSW5zdGFuY2UgPSAxIDw8IDI7CkBAIC04
Nyw2ICs4OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAg
ICAgICAgYm9vbCBpc1NldE9uRmxhZ3MxKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZs
YWcgPD0gKDEgPDwgNykpOyByZXR1cm4gbV9mbGFncyAmIGZsYWc7IH0KICAgICAgICAgYm9vbCBp
c1NldE9uRmxhZ3MyKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPj0gKDEgPDwg
OCkpOyByZXR1cm4gbV9mbGFnczIgJiAoZmxhZyA+PiA4KTsgfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24gMTA2MTg0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExNiwxMCArMTE2LDkgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUo
RQogICAgIHJldHVybiBKU05vdEFuT2JqZWN0OjpjcmVhdGUoZXhlYyk7CiB9CiAKLSNpZm5kZWYg
TkRFQlVHCiBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiB7Ci0gICAgc3RhdGljIGNvbnN0
IHNpemVfdCBzaXplID0gNjQ7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0gMTI4Owog
ICAgIHN0YXRpYyBjaGFyIGRlc2NyaXB0aW9uW3NpemVdOwogCiAgICAgaWYgKCEqdGhpcykKQEAg
LTEyOCwxNCArMTI3LDE0IEBAIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKICAgICAgICAg
c25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJJbnQzMjogJWQiLCBhc0ludDMyKCkpOwogICAg
IGVsc2UgaWYgKGlzRG91YmxlKCkpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzbnBy
aW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlbHgiLCBhc0RvdWJsZSgpLCBy
ZWludGVycHJldERvdWJsZVRvSW50cHRyKGFzRG91YmxlKCkpKTsKKyAgICAgICAgc25wcmludGYo
ZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVseCwgJWxmIiwgcmVpbnRlcnByZXREb3VibGVU
b0ludHB0cihhc0RvdWJsZSgpKSwgYXNEb3VibGUoKSk7CiAjZWxzZQogICAgICAgICB1bmlvbiB7
CiAgICAgICAgICAgICBkb3VibGUgYXNEb3VibGU7CiAgICAgICAgICAgICB1aW50MzJfdCBhc1R3
b0ludDMyc1syXTsKICAgICAgICAgfSB1OwogICAgICAgICB1LmFzRG91YmxlID0gYXNEb3VibGUo
KTsKLSAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVsZiwgJTA4
eDolMDh4IiwgYXNEb3VibGUoKSwgdS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSk7
CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlMDh4OiUwOHgs
ICVsZiIsIHUuYXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0sIGFzRG91YmxlKCkpOwog
I2VuZGlmCiAgICAgfSBlbHNlIGlmIChpc0NlbGwoKSkKICAgICAgICAgc25wcmludGYoZGVzY3Jp
cHRpb24sIHNpemUsICJDZWxsOiAlcCIsIGFzQ2VsbCgpKTsKQEAgLTE1Miw3ICsxNTEsNiBAQCBj
aGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiAKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9
Ci0jZW5kaWYKIAogLy8gVGhpcyBpbiB0aGUgVG9JbnQzMiBvcGVyYXRpb24gaXMgZGVmaW5lZCBp
biBzZWN0aW9uIDkuNSBvZiB0aGUgRUNNQS0yNjIgc3BlYy4KIC8vIE5vdGUgdGhhdCB0aGlzIG9w
ZXJhdGlvbiBpcyBpZGVudGljYWwgdG8gVG9VSW50MzIgb3RoZXIgdGhhbiB0byBpbnRlcnByZXRh
dGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2aXNp
b24gMTA2MTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzIsOSArMjMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEpTQ2VsbCogYXNDZWxsKCkgY29uc3Q7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wg
aXNWYWxpZENhbGxlZSgpOwogCi0jaWZuZGVmIE5ERUJVRwogICAgICAgICBjaGFyKiBkZXNjcmlw
dGlvbigpOwotI2VuZGlmCiAKICAgICBwcml2YXRlOgogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3Mg
VD4gSlNWYWx1ZShXcml0ZUJhcnJpZXJCYXNlPFQ+KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEwNjE4NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogCiAgICAg
Y2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0
IEJhc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAko
cmV2aXNpb24gMTA2MTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDEwIEBAIHVuc2lnbmVkIG1heGltdW1G
dW5jdGlvbkZvckNvbnN0cnVjdElubGkKIAogdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7
CiAKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitpbnQz
Ml90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2ludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogaW50MzJfdCBleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVy
VmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkBAIC0xMzcsNiArMTQxLDEwIEBAIHZv
aWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIAogICAgIFNFVChtYXhpbXVtSW5saW5pbmdEZXB0
aCwgNSk7CiAKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXAs
ICAgICAtMTAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRp
bWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CisgICAgU0VUKGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb24sICAgICAgICAgICAgLTEwMCk7CisKICAgICBT
RVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCwgICAgIC0xMDAw
KTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJt
VXAsIC01MDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXpl
QW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKQEAgLTE4
NSw2ICsxOTMsOCBAQCB2b2lkIGluaXRpYWxpemVPcHRpb25zKCkKICAgICBpZiAoY3B1c1RvVXNl
IDwgMSkKICAgICAgICAgY3B1c1RvVXNlID0gMTsKICAgICAKKyAgICBjcHVzVG9Vc2UgPSAxOwor
ICAgIAogICAgIFNFVChudW1iZXJPZkdDTWFya2VycywgY3B1c1RvVXNlKTsKIAogICAgIEFTU0VS
VChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiA8PSBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxMDYxODQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM3LDYgKzM3LDEwIEBAIGV4dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHIK
IAogZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOyAvLyBEZXB0aCBvZiBpbmxp
bmUgc3RhY2ssIHNvIDEgPSBubyBpbmxpbmluZywgMiA9IG9uZSBsZXZlbCwgZXRjLgogCitleHRl
cm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2V4dGVy
biBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2V4
dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisKIGV4dGVybiBp
bnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBleHRl
cm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1V
cDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFu
eXRpbWVTb29uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFp
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hh
aW4uaAkocmV2aXNpb24gMTA2MTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2NvcGVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsK
ICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAg
ICAgY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9yOwogICAgIGNsYXNzIFNsb3RWaXNpdG9yOwogICAg
IApAQCAtOTEsNiArOTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VY
UE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxk
cmVuOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcAkocmV2aXNpb24gMTA2MTg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU3RydWN0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIyLDcgKzMyMiw3IEBAIFN0
cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICAgICAgICAgIHRyYW5z
aXRpb24tPmdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgICAgICByZXR1cm4gdHJh
bnNpdGlvbjsKICAgICB9Ci0KKyAgICAKICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBjcmVh
dGUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAogICAgIHRyYW5zaXRpb24tPm1fY2FjaGVkUHJv
dG90eXBlQ2hhaW4uc2V0TWF5QmVOdWxsKGdsb2JhbERhdGEsIHRyYW5zaXRpb24sIHN0cnVjdHVy
ZS0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTA2MTg0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYg
KzQ1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CiAgICAgY2xhc3MgUHJvcGVydHlO
YW1lQXJyYXlEYXRhOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOwpAQCAtMTk2LDYgKzE5Nyw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBD
bGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRF
IFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90
eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyopOwogICAgICAgICBTdHJ1Y3R1
cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBjb25z
dCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMTA2MTg0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcs
NyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbiA6IHB1
YmxpYyBKU0NlbGwgewpAQCAtNzQsNiArNzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
fQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKyAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZUNoYWluKEpTR2xvYmFsRGF0YSYsIFN0
cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAg
ICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiA+IG1fdmVjdG9yOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9JbmxpbmVBU00uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL0lubGluZUFTTS5oCShyZXZpc2lvbiAxMDYxODQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0lubGluZUFTTS5oCSh3b3JraW5nIGNvcHkpCkBAIC03
MCw0ICs3MCwxMSBAQAogI2RlZmluZSBISURFX1NZTUJPTChuYW1lKQogI2VuZGlmCiAKKy8vIEZJ
WE1FOiBmaWd1cmUgb3V0IGhvdyB0aGlzIHdvcmtzIG9uIGFsbCB0aGUgcGxhdGZvcm1zLiBJIGtu
b3cgdGhhdAorLy8gb24gTGludXgsIHRoZSBwcmVmZXJyZWQgZm9ybSBpcyAiLkxzdHVmZiIgYXMg
b3Bwb3NlZCB0byAiTHN0dWZmIi4KKy8vIERvbid0IGtub3cgYWJvdXQgYW55IG9mIHRoZSBvdGhl
cnMuCisjaWYgUExBVEZPUk0oTUFDKQorI2RlZmluZSBMT0NBTF9MQUJFTF9TVFJJTkcobmFtZSkg
IkwiICNuYW1lCisjZW5kaWYKKwogI2VuZGlmIC8vIElubGluZUFTTV9oCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAxMDYxODQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyMCw2ICs5MjAs
MTggQEAKICNkZWZpbmUgRU5BQkxFX0pJVCAxCiAjZW5kaWYKIAorLyogT24gc29tZSBvZiB0aGUg
cGxhdGZvcm1zIHdoZXJlIHdlIGhhdmUgYSBKSVQsIHdlIHdhbnQgdG8gYWxzbyBoYXZlIHRoZSAK
KyAgIGxvdy1sZXZlbCBpbnRlcnByZXRlci4gKi8KKyNpZiAhZGVmaW5lZChFTkFCTEVfTExJTlQp
ICYmIEVOQUJMRShKSVQpICYmIFBMQVRGT1JNKE1BQykgJiYgVVNFKEpTVkFMVUUzMl82NCkKKyNk
ZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyNlbmRpZgorCisvKiBJZiB3ZSBoYXZlIExMSW50IGVuYWJs
ZWQgYW5kIHRoZSBKSVQgZW5hYmxlZCwgd2UgYWxzbyBlbmFibGUgT1NSaW5nIGZyb20KKyAgIExM
SW50IHRvIHRoZSBKSVQuICovCisjaWYgIWRlZmluZWQoRU5BQkxFX0xMSU5UX09TUl9UT19KSVQp
ICYmIEVOQUJMRShKSVQpICYmIEVOQUJMRShMTElOVCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UX09T
Ul9UT19KSVQgMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfREZHX0pJVCkgJiYgRU5B
QkxFKEpJVCkKIC8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBYODYgYW5kIFg4Nl82NC4gIE9ubHkg
dGVzdGVkIG9uIE1hYyBhbmQgR05VL0xpbnV4LiAqLwogI2lmIChDUFUoWDg2KSB8fCBDUFUoWDg2
XzY0KSkgJiYgKFBMQVRGT1JNKE1BQykgfHwgT1MoTElOVVgpKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCShyZXZpc2lvbiAxMDYxODQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4IEBAIHB1YmxpYzoKIAogICAgIGl0ZXJhdG9yIGJlZ2lu
KCk7CiAgICAgaXRlcmF0b3IgZW5kKCk7CisgICAgCisgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1
cm4gYmVnaW4oKSA9PSBlbmQoKTsgfQogCiBwcml2YXRlOgogICAgIFJhd05vZGUgbV9oZWFkU2Vu
dGluZWw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBs
LmgJKHJldmlzaW9uIDEwNjE4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9T
dHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgdHlwZWRlZiBjb25z
dCBzdHJ1Y3QgX19DRlN0cmluZyAqIENGU3RyaQogLy8gTGFuZGluZyB0aGUgZmlsZSBtb3ZlcyBp
biBvbmUgcGF0Y2gsIHdpbGwgZm9sbG93IG9uIHdpdGggcGF0Y2hlcyB0byBjaGFuZ2UgdGhlIG5h
bWVzcGFjZXMuCiBuYW1lc3BhY2UgSlNDIHsKIHN0cnVjdCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5z
bGF0b3I7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4gc3RydWN0IElkZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjsKIHN0cnVjdCBJZGVudGlm
aWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9yOwogfQpAQCAtNzIsNyArNzMsOCBAQCBjbGFzcyBT
dHJpbmdJbXBsIHsKICAgICBmcmllbmQgc3RydWN0IFdURjo6U3Vic3RyaW5nVHJhbnNsYXRvcjsK
ICAgICBmcmllbmQgc3RydWN0IFdURjo6VUNoYXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZyaWVu
ZCBjbGFzcyBBdG9taWNTdHJpbmdJbXBsOwotCisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworICAgIAogcHJpdmF0ZToKICAgICBlbnVtIEJ1ZmZlck93bmVyc2hp
cCB7CiAgICAgICAgIEJ1ZmZlckludGVybmFsLApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2
MTg0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTItMDEtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVj
dG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4KKyAgICAgICAgCisgICAgICAgIE5vIG5ldyB0ZXN0cyBi
ZWNhdXNlIG5vIGJlaGF2aW9yIGNoYW5nZWQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoK
KwogMjAxMi0wMS0yNyAgUmF5bW9uZCBUb3kgIDxydG95QGdvb2dsZS5jb20+CiAKICAgICAgICAg
QXVkaW9QYW5uZXJOb2RlOjpzZXRQYW5uaW5nTW9kZWwoKSBkb2VzIG5vdCB1cGRhdGUgbV9wYW5u
aW5nTW9kZWwgcHJvcGVybHkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDYx
ODQpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
NzQsNiArNzQsNyBAQCBTRVQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFW
QVNDUklQVENPUkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2lu
dGVycHJldGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIi
CiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L3J1bnRpbWUiCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MTg0KQorKysgU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
Mi0wMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBz
aG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5n
ZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFT
Y3JpcHRDb3JlLgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxMi0w
MS0xMSAgSmFja3kgSmlhbmcgIDx6aGFqaWFuZ0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0Jl
cnJ5XSBBU1NFUlQgZmFpbHVyZSBpbiBCYWNraW5nU3RvcmVQcml2YXRlOjpibGl0VmlzaWJsZUNv
bnRlbnRzKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA2MTg0KQorKysgU291
cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBA
QCBTRVQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAgIiR7SkFWQVNDUklQVENPUkVfRElS
fS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3BhcnNlciIKICAgICAiJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcnVu
dGltZSIKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEwNjE4NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDEyLTAxLTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgSlNDIHNob3VsZCBiZSBhIHRyaXBsZS10aWVyIFZNCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgxMgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTAwNzk2OTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2hhbmdlZCBFRkwncyBidWlsZCBzeXN0ZW0gdG8gaW5jbHVkZSBhIG5l
dyBkaXJlY3RvcnkgaW4gSmF2YVNjcmlwdENvcmUuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9lZmwvQ01ha2VMaXN0cy50eHQ6CisKIDIwMTItMDEtMjcgIEtlbnRhcm8gSGFyYSAgPGhhcmFr
ZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRoZSBjcHAgcGFyc2VyIG9mIHByZXBhcmUtQ2hh
bmdlTG9nIHRyZWF0cyBpZiguLi4pIHt9IGFzIGEgbWV0aG9kCkluZGV4OiBUb29scy9EdW1wUmVu
ZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRl
clRyZWUvZWZsL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDYxODQpCisrKyBUb29scy9EdW1w
UmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTY4LDEwICs2
OCwxMiBAQCBTRVQoRHVtcFJlbmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9BUEkKICAgICAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vYXNzZW1ibGVyCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5
dGVjb2RlCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RmZwogICAgICR7SkFWQVNDUklQVENP
UkVfRElSfS9oZWFwCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyCiAgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdAorICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9sbGlu
dAogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lCiAgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3d0Zgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124478</attachid>
            <date>2012-01-29 17:37:38 -0800</date>
            <delta_ts>2012-01-29 22:00:04 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_71.diff</filename>
            <type>text/plain</type>
            <size>459760</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MjAzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwMCBA
QAorMjAxMi0wMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi52c3Byb3BzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDog
QWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Omlz
U2V0KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAg
IChDYWxsTGlua1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmVzY2FwZVF1b3Rlcyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWlu
Z0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RXZh
bENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6
amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1w
bCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dXNlc09wY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAg
KCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0Q29tcGls
ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
aWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxp
a2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlr
ZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1
ZW50RXhpdFNpdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29v
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50
RXhlY3V0ZUNvdW50ZXIpOgorICAgICAgICAoUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChF
dmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBi
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6
CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OkdldEJ5SWRTdGF0dXMpOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjp3YXNTZWVuSW5KSVQpOgorICAgICAgICAoR2V0QnlJZFN0YXR1
cyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgIChJbnN0cnVj
dGlvbik6CisgICAgICAgICgpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZv
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0lu
Zm86OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKExMSW50Q2FsbExpbmtJbmZvKToKKyAg
ICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6OkxM
SW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAg
IChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAoUHV0QnlJZFN0YXR1cyk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0
UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaCk6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0
UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRD
b21waWxlci5jcHA6CisgICAgICAgICgpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKCk6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChBbGxvY2F0aW9uU3BhY2UpOgorICAgICAgICAoKToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAo
SGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAoSlNDOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFt
ZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJy
ZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZy
YW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmls
ZSk6CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKToKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAg
KiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpJVENvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2Rl
Ojppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAg
ICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToK
KyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93
KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RV
Ql9GVU5DVElPTik6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJ
VC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1v
bi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChEYXRhKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50
RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRF
dmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2lu
dCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBv
aW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxl
cik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9u
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpM
TEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQv
TExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChK
U0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmVudHJ5T1NSKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJlc29sdmVHbG9iYWwpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9z
dENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRk
ZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludE9m
ZnNldHNFeHRyYWN0b3IpOgorICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDog
QWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3Ry
dWN0RW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZv
ckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpMTEludDo6ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20u
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRy
YWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb3B0LnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL3BhcnNlci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9yZWdp
c3RlcnMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2VsZl9oYXNoLnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3NldHRpbmdzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBv
ZmZsaW5lYXNtL3RyYW5zZm9ybS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYu
cmI6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVj
a0Zvcik6CisgICAgICAgIChDb21tb25TbG93UGF0aHMpOgorICAgICAgICAoSlNDOjpDb21tb25T
bG93UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3cpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJs
ZS5jcHA6CisgICAgICAgIChKU0M6OmpldHRpc29uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
RXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6c2FtcGxpbmdEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpj
b21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29t
cGlsZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9y
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVj
dCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRl
cm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0
cnVjdEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAg
KEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAoRXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAo
UHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpwcmVwYXJlRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1bmN0
aW9uRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAg
ICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnRlYXJPZmYpOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
cnJheS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQXJyYXkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoKToKKyAgICAgICAgKEpT
Q2VsbCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0dsb2Jh
bERhdGEpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OnNjcmF0Y2hCdWZmZXJGb3JTaXpl
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAoSlNPYmplY3QpOgorICAgICAg
ICAoSlNGaW5hbE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcik6
CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAg
KEpTU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChUeXBlSW5mbyk6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmNwcDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKEpTVmFsdWUpOgorICAgICAgICAo
KToKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU1ZhcmlhYmxlT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMu
Y3BwOgorICAgICAgICAoT3B0aW9ucyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxp
emVPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKE9wdGlv
bnMpOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKFNjb3BlQ2hhaW5Ob2RlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgor
ICAgICAgICAoSlNDKToKKyAgICAgICAgKFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFN0cnVjdHVyZUNoYWlu
KToKKyAgICAgICAgKiB3dGYvSW5saW5lQVNNLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6
CisgICAgICAgICogd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oOgorICAgICAgICAoU2VudGluZWxM
aW5rZWRMaXN0KToKKyAgICAgICAgKFdURjo6U2VudGluZWxMaW5rZWRMaXN0Ojppc0VtcHR5KToK
KyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoU3RyaW5nSW1wbCk6CisgICAgICAgICgpOgorCiAyMDEyLTAxLTI4ICBHYXZpbiBCYXJyYWNs
b3VnaCAgPGJhcnJhY2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXNlcnZlICdsZXQnCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDYyMDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTExLDYgKzExLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L3BhcnNlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZSIKQEAgLTk1LDYgKzk2LDcgQEAgU0VUKEphdmFTY3Jp
cHRDb3JlX1NPVVJDRVMKICAgICBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwCiAKICAgICBq
aXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5j
cHAKICAgICBqaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAogICAgIGppdC9KSVRBcml0aG1ldGlj
LmNwcAogICAgIGppdC9KSVRDYWxsMzJfNjQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmFtCShyZXZpc2lvbiAxMDYyMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
R05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgamF2YXNjcmlw
dGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCisJLUkkKHNyY2RpcikvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmls
ZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDYy
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2lu
ZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9DYWxsTGlua0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmNwcCBcCkBAIC0xMDIsNiArMTAzLDcgQEAgamF2YXNjcmlwdGNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9u
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTGluZUluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8uaCBcCkBAIC0yNzcsNiArMjc5LDggQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Db21wYWN0
SklUQ29kZU1hcC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0
b3IuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNw
cCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIFwKQEAgLTMwMCw2ICszMDQsNyBAQCBqYXZh
c2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNp
YWxpemVkVGh1bmtKSVQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVy
YXRvcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5o
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vcy13aW4zMi9zdGRib29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vcy13aW4zMi9zdGRpbnQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RC
dWlsZGVyLmggXApAQCAtMzUwLDYgKzM1NSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaCBcCkBAIC0zNzgsNiArMzg0LDcgQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHJldmlzaW9uIDEwNjIwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIw
LDYgKzIwLDcgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9kZWJ1Z2dlciBc
CiAgICAgJCRTT1VSQ0VfRElSL2ludGVycHJldGVyIFwKICAgICAkJFNPVVJDRV9ESVIvaml0IFwK
KyAgICAkJFNPVVJDRV9ESVIvbGxpbnQgXAogICAgICQkU09VUkNFX0RJUi9wYXJzZXIgXAogICAg
ICQkU09VUkNFX0RJUi9wcm9maWxlciBcCiAgICAgJCRTT1VSQ0VfRElSL3J1bnRpbWUgXApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwNjIwMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcg
QEAgU09VUkNFUyArPSBcCiAgICAgaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCiAgICAg
aml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgXAogICAgIGppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yLmNwcCBcCisgICAgaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKICAg
ICBqaXQvSklUQXJpdGhtZXRpYy5jcHAgXAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3Bw
IFwKICAgICBqaXQvSklUQ2FsbC5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwNjIwMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzU4LDYgKzE3
NTgsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0i
Li5cLi5caml0XEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJ
CTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcSklULmNwcCIKIAkJCQk+CiAJCQk8
L0ZpbGU+CkBAIC0xODQzLDYgKzE4NDcsMTQgQEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJ
CTxGaWx0ZXIKKwkJCU5hbWU9ImxsaW50IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXC4uXGxsaW50XExMSW50RGF0YS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0
ZXI+CisJCTxGaWx0ZXIKIAkJCU5hbWU9ImludGVycHJldGVyIgogCQkJPgogCQkJPEZpbGUKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMJKHJldmlzaW9uIDEwNjIwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmVDb21tb24udnNwcm9wcwkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJ
PFRvb2wKIAkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJl
Y3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29y
ZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsu
Li8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL2RmZy87Li4vLi4vaml0LzsuLi8uLi9ydW50aW1lLzsu
Li8uLi90b29scy87Li4vLi4vYnl0ZWNvZGUvOy4uLy4uL2ludGVycHJldGVyLzsuLi8uLi93dGYv
Oy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fzc2VtYmxlci87Li4vLi4vZGVidWdnZXIvOy4uLy4uL2hl
YXAvOyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2Vi
S2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5j
bHVkZVxwdGhyZWFkcyZxdW90OyIKKwkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1
b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291
cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29t
cGlsZXIvOy4uLy4uL2RmZy87Li4vLi4vaml0LzsuLi8uLi9sbGludC87Li4vLi4vcnVudGltZS87
Li4vLi4vdG9vbHMvOy4uLy4uL2J5dGVjb2RlLzsuLi8uLi9pbnRlcnByZXRlci87Li4vLi4vd3Rm
LzsuLi8uLi9wcm9maWxlcjsuLi8uLi9hc3NlbWJsZXIvOy4uLy4uL2RlYnVnZ2VyLzsuLi8uLi9o
ZWFwLzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdl
YktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxk
RGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGlu
Y2x1ZGVccHRocmVhZHMmcXVvdDsiCiAJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfX1NURF9D
IgogCQlGb3JjZWRJbmNsdWRlRmlsZXM9IklDVVZlcnNpb24uaCIKIAkvPgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5
LWZpbGVzLmNtZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL2NvcHktZmlsZXMuY21kCShyZXZpc2lvbiAxMDYy
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL2NvcHktZmlsZXMuY21kCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBA
IGZvciAlJWQgaW4gKAogICAgIGRlYnVnZ2VyCiAgICAgaW50ZXJwcmV0ZXIKICAgICBqaXQKKyAg
ICBsbGludAogICAgIHBhcnNlcgogICAgIHByb2ZpbGVyCiAgICAgcnVudGltZQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEwNjIwMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3Jr
aW5nIGNvcHkpCkBAIC03LDYgKzcsMTUgQEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhB
Z2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyog
TExJbnQgT2Zmc2V0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1
aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMi
ICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8q
IEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKKwkJCSk7CisJCQluYW1lID0gIkxMSW50IE9m
ZnNldHMiOworCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKIAkJNjVG
QjNGNjYwOUQxMUU5MTAwRjQ5REVCIC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2NUZCM0Y3
NzA5RDExRUJEMDBGNDlERUIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dy
ZWdhdGVUYXJnZXQgIkRlcml2ZWQgU291cmNlcyIgKi87CkBAIC0xNCw2ICsyMyw5IEBACiAJCQkJ
NjVGQjNGNjUwOUQxMUU5MTAwRjQ5REVCIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywK
IAkJCQk1RDM1REVFMTBDN0MxNDBCMDA4NjQ4QjIgLyogR2VuZXJhdGUgRFRyYWNlIGhlYWRlciAq
LywKIAkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjQxNEJBODIxNDAwQkZF
MjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVk
IFNvdXJjZXMiOwogCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJfTsKQEAg
LTQ4LDYgKzYwLDEwIEBACiAJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0
cmljdGlvblZlcmlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJp
Zmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBCQ0Q4MzU3MTQ4NTg0NTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIwMEVB
MjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYy
OEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4MzlB
MTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRG
IC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYw
QjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludFRodW5rcy5jcHAgKi87IH07CisJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBM
TEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTcxNEJDRjUwNzAw
ODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBOTE0QkNG
NTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5m
by5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
MEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBQTE0QkNGNUI5MDA4
ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01OCw5ICs3NCwxMyBAQAogCQkwRjBCODNCNTE0QkNG
ODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0
aG9kQ2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZv
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNC
NjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVC
NEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAv
KiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAv
KiBMTEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZv
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYx
NUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdE
IC8qIENvbW1vblNsb3dQYXRocy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGMTZENzI2MTQyQzM5QzAwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNkQ3MjQx
NDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCTBGMjFDMjY4MTRCRTVG
NjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3
QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8q
IEV4ZWN1dGlvbkhhcm5lc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RjE0
QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8q
IEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjI0MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5j
ZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU2
RjE0NzM4RjMxMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERG
R0NvZGVCbG9ja3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjJDNTU3MDE0NzM4RjM1MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RDE0NzM4
RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi87IH07CkBAIC03MSw2ICs5MSwxOSBA
QAogCQkwRjQzMTczODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQzMTczNjE0NkJBQzY1
MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4
Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODMxNEJBNTczMTAw
QkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlv
bnMuY3BwICovOyB9OworCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRp
b25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2
ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZF
MjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNw
cCAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby11bnVzZWQtcGFyYW1ldGVy
IjsgfTsgfTsKKwkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTAxNEJB
N0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHAgKi87IH07CisJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2Vw
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi87IH07CisJ
CTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcy
IC8qIExMSW50Q29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNv
bmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENDMTRCQkIx
N0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBM
b3dMZXZlbEludGVycHJldGVyLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcy
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVy
cHJldGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRTE0QkJCM0QxMDBCRkUy
NzIgLyogTExJbnREYXRhLmNwcCAqLzsgfTsKKwkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8q
IExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQ0MTRCQkQyNDkwMEJG
RTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2Fs
bFJldHVyblZhbHVlLmNwcCAqLzsgfTsKKwkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhv
c3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVl
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1
NUYwRjQxNEQxMDYzOTAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8q
IEFic3RyYWN0UEMuY3BwICovOyB9OwogCQkwRjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJz
dHJhY3RQQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcy
QTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0
aW9uYWxGaW5hbGl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtMzg3LDcgKzQyMCw3IEBACiAJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAv
KiBTdHJpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2Qjk5QUUxMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkJCMDlDMDEzOEUz
ODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRj
aC5jcHAgKi87IH07CiAJCTg2QkIwOUMxMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEz
OEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oICovOyB9OwotCQk4NkMzNkVFQTBFRTEyODlE
MDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2Vt
Ymxlci5oICovOyB9OworCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2
RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdG
MCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJs
ZXJBUk0uY3BwICovOyB9OwogCQk4NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3Nl
bWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07
CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAw
N0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovOyB9OwpAQCAtNzU0LDYgKzc4NywyMCBAQAogLyog
RW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSBzZWN0aW9uICovCisJCTBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWlu
ZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQlj
b250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmpl
Y3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2
ODBBOTE0QkE3RkQ5MDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gIkxMSW50IE9mZnNldHMiOwor
CQl9OworCQkwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5
ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9y
dGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJ
cHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwOEUxNEJBN0U1
RTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJ
fTsKIAkJMTQxMjE0QkUwQTQ5MTkwRTAwNDgwMjU1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRh
bCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTc5
OSw2ICs4NDYsMTUgQEAKIC8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEQx
NEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxl
c0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0
aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEvOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlm
aWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MTsKKwkJfTsKIAkJNURCQjE1MTExMzFEMEIxMzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3Jp
cHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMTI7CkBAIC04MzksNiArODk1LDEwIEBACiAJCTBCQUM5NDlFMTMzODcyODQwMENG
MTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEJDRDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5n
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhcnlDaGFuZ2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8q
IFNpemVMaW1pdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6
ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk1MTRCQ0Y0
NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRF
bnRyeXBvaW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk2MTRC
Q0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlw
b2ludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTcxNEJDRjQ1QTAw
ODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IExMSW50VGh1bmtzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExM
SW50VGh1bmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50VGh1bmtz
Lmg7IHBhdGggPSBsbGludC9MTEludFRodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJ
bmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUlu
Zm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg0OSw5ICs5MDksMTMgQEAKIAkJ
MEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRob2RDYWxsTGlua0luZm8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJl
c29sdmVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbFJlc29s
dmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I4MTRCQ0Y5NUIw
MDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQg
LyogTExJbnRDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TExJbnRDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYx
NUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDb21tb25TbG93UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVERyaXZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNw
ZWNpYWxpemF0aW9uS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFD
MjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGlvbkhhcm5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlv
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVDb252ZW50aW9u
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURE
NEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZH
Q29kZUJsb2Nrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxv
Y2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NjIsNiArOTI2LDIwIEBACiAJ
CTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUy
NzIgLyogSklURXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
SVRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDhGMTRC
QTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0
YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMEY0NjgwOUQxNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFeGNl
cHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUUxNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuaDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIg
LyogTExJbnRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IExMSW50SGVscGVycy5jcHA7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRI
ZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50SGVscGVycy5o
OyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENv
bW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENvbW1vbi5oOyBw
YXRoID0gbGxpbnQvTExJbnRDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludE9mZmxpbmVBc21Db25maWcuaDsgcGF0
aCA9IGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJl
dGVyLmNwcDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJ
bnRlcnByZXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMb3dMZXZlbElu
dGVycHJldGVyLmg7IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERh
dGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnREYXRhLmNw
cDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnREYXRhLmg7IHBhdGggPSBsbGludC9MTEludERhdGEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcy
IC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8q
IEFic3RyYWN0UEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJz
dHJhY3RQQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTVGMEYyMTREMTA2
MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEFic3RyYWN0UEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0Mx
NDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5dGVDb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNvZGVDYWNoZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVDb2Rl
Q2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1ODcsNiArMTY2NSwxMyBA
QAogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFt
ZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAv
KiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFF
MEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3
b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTY0
NSw2ICsxNzMwLDcgQEAKIAkJCQkxNDEyMTEyMDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAq
LywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk2NTEx
MjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RjE0QkE3
RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAogCQkJKTsKIAkJCW5h
bWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjc1LDYgKzE3
NjEsNyBAQAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVBy
ZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAog
CQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLywKKwkJCQkwRjQ2ODA5
QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3
QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVy
ICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKQEAgLTE3
MTQsNiArMTgwMSwyOCBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9
OworCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLywKKwkJCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYg
LyogTExJbnRFbnRyeXBvaW50cy5oICovLAorCQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludFRodW5rcy5jcHAgKi8sCisJCQkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExM
SW50VGh1bmtzLmggKi8sCisJCQkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0
YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICov
LAorCQkJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovLAorCQkJ
CTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLywK
KwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAg
Ki8sCisJCQkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIu
aCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNw
cCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmgg
Ki8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8s
CisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovLAorCQkJ
CTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICov
LAorCQkJKTsKKwkJCW5hbWUgPSBsbGludDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJ
CX07CiAJCTE0MTIxMTAwMEE0ODc3MjYwMDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNzQ4LDYgKzE4NTcsOCBAQAogCQkxNDI5
RDkyQzBFRDIyRDcwMDBCODk2MTkgLyogaml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxS
ZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RD
YWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklU
RXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4
Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJ
VENvZGVNYXAuaCAqLywKQEAgLTIxNzUsNiArMjI4Niw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMw
MDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKKwkJCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oICovLAorCQkJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJu
ZXNzLmggKi8sCiAJCQkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRo
cy5oICovLAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywK
IAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLApAQCAtMjU0Nyw2
ICsyNjYwLDggQEAKIAkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3RTE0QkVB
QTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovLAorCQkJCTBGMEZDNDU4MTRC
RDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovLAogCQkJCTBGOTMzMjkzMTRD
QTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgKi8sCiAJCQkJMEY5MzMyOTQxNENB
N0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggKi8sCiAJCQkJMEY5MzMyOTUxNENBN0RD
MTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovLApAQCAtMzA5Nyw3ICszMjEyLDE2IEBA
CiAJCQkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25T
bG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAv
KiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEE1MTRCQTdGOEQw
MEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRC
QTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2
ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVy
cHJldGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyog
TExJbnREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIg
LyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzOUIxNEJD
RjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
MEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZv
LmggaW4gSGVhZGVycyAqLywKQEAgLTMxMDYsNyArMzIzMCwxMSBAQAogCQkJCTBGMEI4M0I1MTRC
Q0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBC
ODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjFDMjY4
MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFD
MjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2Rl
Q29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRBMTRDM0NEMjkwMDdDM0RC
MSAvKiBERkdDQ2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NE
MkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0Iy
OTRDMTRDM0NENDMwMDdDM0RCMSAvKiBERkdCeXRlQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywK
QEAgLTMxMjUsNiArMzI1MywyNCBAQAogLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOEUx
NEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHsKKwkJCWlz
YSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODA5
QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRp
dmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIgKi87CisJCQlidWlsZFBoYXNlcyA9
ICgKKwkJCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLywKKwkJCQkwRjQ2
ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkwRjQ2ODA4RDE0QkE3
RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJ
CQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBKU0NMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0TmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJ
bnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1
Y3QtdHlwZS50b29sIjsKKwkJfTsKIAkJMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlk
b20gKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRp
b25MaXN0ID0gMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24g
bGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLzsKQEAgLTMyNTEsMTEgKzMzOTcs
MjkgQEAKIAkJCQkxNEJENTlCRTBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk5
MzJGNUJEQTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAogCQkJCTY1MTEyMkY3MTQwNDZBNEMw
MDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAv
KiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCisJCQkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZF
MjcyIC8qIExMSW50IE9mZnNldHMgKi8sCiAJCQkpOwogCQl9OwogLyogRW5kIFBCWFByb2plY3Qg
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAq
LworCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2Vz
ICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMg
PSAoCisJCQkJIiQoU1JDUk9PVCkvbGxpbnQvTG93TGV2ZWxBc3NlbWJsZXIuYXNtIiwKKwkJCSk7
CisJCQluYW1lID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CisJCQlvdXRwdXRQYXRocyA9
ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRP
ZmZzZXRzLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1w
IFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9cIlxuXG4vdXNyL2Jpbi9lbnYg
cnVieSBcIiR7U1JDUk9PVH0vb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJi
XCIgXCIke1NSQ1JPT1R9L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtXCIgXCIke0JVSUxU
X1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaFwiXG4iOwor
CQl9OwogCQkzNzEzRjAxNDE0MjkwNTI0MDAzNjM4N0YgLyogQ2hlY2sgRm9yIEluYXBwcm9wcmlh
dGUgT2JqZWN0aXZlLUMgQ2xhc3MgTmFtZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlw
dEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzM2MSw3
ICszNTI1LDcgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7Ci0JCQlzaGVsbFNjcmlwdCA9ICJta2RpciAt
cCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9k
b2NzXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlXCJcblxuL2Jpbi9sbiAtc2ZoIFwiJHtTUkNST09UfVwiIEphdmFTY3JpcHRDb3JlXG5l
eHBvcnQgSmF2YVNjcmlwdENvcmU9XCJKYXZhU2NyaXB0Q29yZVwiXG5leHBvcnQgQlVJTFRfUFJP
RFVDVFNfRElSPVwiLi4vLi5cIlxuXG5tYWtlIC0tbm8tYnVpbHRpbi1ydWxlcyAtZiBcIkphdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2VcIiAtaiBgL3Vzci9zYmluL3N5c2N0bCAtbiBo
dy5uY3B1YFxuIjsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNU
U19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL2RvY3NcIlxuY2QgXCIke0JVSUxU
X1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmVcIlxuXG4vYmluL2xu
IC1zZmggXCIke1NSQ1JPT1R9XCIgSmF2YVNjcmlwdENvcmVcbmV4cG9ydCBKYXZhU2NyaXB0Q29y
ZT1cIkphdmFTY3JpcHRDb3JlXCJcbmV4cG9ydCBCVUlMVF9QUk9EVUNUU19ESVI9XCIuLi8uLlwi
XG5cbm1ha2UgLS1uby1idWlsdGluLXJ1bGVzIC1mIFwiSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZVwiIC1qIGAvdXNyL3NiaW4vc3lzY3RsIC1uIGh3Lm5jcHVgXG5cbi91c3IvYmlu
L2VudiBydWJ5IEphdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiIEphdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtICR7QlVJTFRfUFJPRFVDVFNfRElSfS9KU0NM
TEludE9mZnNldHNFeHRyYWN0b3IgTExJbnRBc3NlbWJseS5oXG4iOwogCQl9OwogCQk5MzE5NTg2
QjA5RDlGOTFBMDBBNTZGRDQgLyogQ2hlY2sgRm9yIEdsb2JhbCBJbml0aWFsaXplcnMgKi8gPSB7
CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CkBAIC0zMzk2LDYgKzM1NjAsMTQg
QEAKIC8qIEVuZCBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhCMTRCQTdFNUUwMEJG
RTI3MiAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJMEY0Njgw
QTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
KwkJfTsKIAkJMTQxMjExMUQwQTQ4NzkzQzAwNDgwMjU1IC8qIFNvdXJjZXMgKi8gPSB7CiAJCQlp
c2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CkBAIC0zNjUzLDcgKzM4MjUsMTQgQEAKIAkJCQk4NjcwNEI4NjEyREJBMzM3MDBBOUZFN0Ig
LyogWWFyckpJVC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4OTEyREJBMzM3MDBBOUZF
N0IgLyogWWFyclBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCNDIxMkRCOEE4
MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
NDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9u
cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93
TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBEMjE0QkJEMTY1
MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQ0MTRC
QkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBCODNCMDE0QkNGNzE2MDA4ODVCNEYgLyogQ2FsbExp
bmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4M0I0MTRCQ0Y4NjAwMDg4NUI0RiAv
KiBNZXRob2RDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjY5RTg2QzMxNEM2
RTU1MTAwMkMyQzYyIC8qIE51bWJlck9mQ29yZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNjc4
LDYgKzM4NTcsMTYgQEAKIC8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLworCQkwRjQ2ODBCMjE0QkE4
MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRh
cmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyog
TExJbnQgT2Zmc2V0cyAqLzsKKwkJCXRhcmdldFByb3h5ID0gMEY0NjgwQjExNEJBODExNTAwQkZF
MjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJMEY0NjgwQjQxNEJBODIx
NDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJn
ZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpT
Q0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXRhcmdldFByb3h5ID0gMEY0NjgwQjMxNEJB
ODIxNDAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKIAkJMTQxMjE0
QkYwQTQ5MTkwRTAwNDgwMjU1IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhUYXJnZXREZXBlbmRlbmN5OwogCQkJdGFyZ2V0ID0gMTQxMjExMUYwQTQ4NzkzQzAwNDgw
MjU1IC8qIG1pbmlkb20gKi87CkBAIC0zNzExLDYgKzM5MDAsMTQ4IEBACiAvKiBFbmQgUEJYVGFy
Z2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9u
IHNlY3Rpb24gKi8KKwkJMEY0NjgwOTYxNEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RB
TkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCUdDQ19DX0xB
TkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CisJ
CQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX09QVElNSVpBVElP
Tl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJ
IkRFQlVHPTEiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOworCQkJCUdDQ19TWU1CT0xT
X1BSSVZBVEVfRVhURVJOID0gTk87CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGls
ZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9O
ID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJ
CUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9W
QVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJ
CQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0
cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9E
RVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKwkJ
CQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7
CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFt
ZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAq
LyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9
IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFS
Q0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJ
REVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0Nf
TEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9O
UyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFu
Zy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlH
Q0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJP
VVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVT
OworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlp
Y3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzJChIRUFERVJfU0VB
UkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43
OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1h
Y29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9E
VUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJ
CQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8qIFBy
b2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNI
UyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZ
RVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJ
CQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNf
RVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMu
bGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBO
TzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0ND
X1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklB
QkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQku
LAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwK
KwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExP
WU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSki
OworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0g
Ii4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNI
X1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJMEY0NjgwOTkx
NEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VS
X1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJ
CQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9
ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7
CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04g
PSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RP
XzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9U
T1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJ
CUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRI
U1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNU
U19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJ
CQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9O
QU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJf
SEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRP
ZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0
aW9uOworCQl9OworCQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
UFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0g
RGVidWc7CisJCX07CisJCTBGNDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovID0g
eworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0gewor
CQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFt
ZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxp
bmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07
CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIg
LyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNv
cHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEzQTBBNDg3
OTg0MDA0ODAyNTUgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CkBAIC0zOTUyLDYgKzQyODMsMjggQEAKIC8qIEVuZCBY
Q0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQ29uZmlndXJhdGlv
bkxpc3Qgc2VjdGlvbiAqLworCQkwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJh
Y3RvciIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25m
aWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8s
CisJCQkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0Njgw
OTgxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODA5OTE0QkE3RTVF
MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9u
OworCQl9OworCQkwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovID0geworCQkJ
aXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJ
CQkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MEFFMTRC
QTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3
MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1
Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOwor
CQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjEx
MzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0
aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7
CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHJldmlzaW9uIDEwNjIwMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
NCw3ICszNCw3IEBACiAjZGVmaW5lIEdMT0JBTF9USFVOS19JRCByZWludGVycHJldF9jYXN0PHZv
aWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLTEpKQogI2RlZmluZSBSRUdFWFBfQ09ERV9JRCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLTIpKQogCi0jaW5j
bHVkZSA8TWFjcm9Bc3NlbWJsZXIuaD4KKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCeXRlY29kZUNvbnZl
bnRpb25zX2gKKyNkZWZpbmUgQnl0ZWNvZGVDb252ZW50aW9uc19oCisKKy8vIFJlZ2lzdGVyIG51
bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcg
YWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKKy8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZG
ICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVz
IGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCisvLyAgICAgIDB4MDAwMDAw
MDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRl
ciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxs
ZnJhbWUuCisvLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBm
cm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRo
ZSBDb2RlQmxvY2suCitzdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
ID0gMHg0MDAwMDAwMDsKKworI2VuZGlmIC8vIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5j
cHAJKHJldmlzaW9uIDEwNjIwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE3ICsyNyw0MCBAQAogI2lu
Y2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNs
dWRlICJMTEludENhbGxMaW5rSW5mby5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorQ2FsbExpbmtT
dGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShwcm9m
aWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisjaWYgRU5BQkxF
KExMSU5UKQorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmlu
c3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworICAgIExMSW50Q2FsbExpbmtJ
bmZvKiBjYWxsTGlua0luZm8gPSBpbnN0cnVjdGlvbls0XS51LmNhbGxMaW5rSW5mbzsKKyAgICAK
KyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5n
ZXQoKSwgZmFsc2UpOworI2Vsc2UKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFsc2Up
OworI2VuZGlmCit9CisKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9y
KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIHsKICAg
ICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2Rl
SW5kZXgpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAgICBy
ZXR1cm4gQ2FsbExpbmtTdGF0dXMoCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5r
SW5mbyhieXRlY29kZUluZGV4KS5sYXN0U2VlbkNhbGxlZS5nZXQoKSwKLSAgICAgICAgcHJvZmls
ZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpOworICAgIGlmICghcHJv
ZmlsZWRCbG9jay0+bnVtYmVyT2ZDYWxsTGlua0luZm9zKCkpCisgICAgICAgIHJldHVybiBjb21w
dXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIGlm
IChwcm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKKyAgICAg
ICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIHRydWUpOworICAgIAorICAgIEpTRnVuY3Rpb24q
IHRhcmdldCA9IHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KS5s
YXN0U2VlbkNhbGxlZS5nZXQoKTsKKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgcmV0dXJuIGNv
bXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAg
cmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldCwgZmFsc2UpOwogI2Vsc2UKICAgICByZXR1cm4g
Q2FsbExpbmtTdGF0dXMoMCwgZmFsc2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24gMTA2MjAzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ3LDE1ICs0NywxNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIENh
bGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCk7CiAgICAgCi0gICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0
OyB9CisgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0IHx8IG1f
Y291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsg
cmV0dXJuICFtX2NhbGxUYXJnZXQ7IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0
dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBKU0Z1bmN0aW9uKiBj
YWxsVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgCiBwcml2YXRl
OgorICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayos
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgIAogICAgIEpTRnVuY3Rpb24qIG1fY2FsbFRh
cmdldDsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7CiB9OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEwNjIwMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVk
ZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNp
bmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtNTks
OCArNjAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAjZW5kaWYK
IAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQogc3Rh
dGljIFVTdHJpbmcgZXNjYXBlUXVvdGVzKGNvbnN0IFVTdHJpbmcmIHN0cikKIHsKICAgICBVU3Ry
aW5nIHJlc3VsdCA9IHN0cjsKQEAgLTM1OCwxMCArMzU3LDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpk
dW1wKEV4ZWNTdGF0ZSogZXhlYykgY28KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc3Ry
dWN0aW9ucygpLnNpemUoKTsgaSArPSBvcGNvZGVMZW5ndGhzW2V4ZWMtPmludGVycHJldGVyKCkt
PmdldE9wY29kZUlEKGluc3RydWN0aW9ucygpW2ldLnUub3Bjb2RlKV0pCiAgICAgICAgICsraW5z
dHJ1Y3Rpb25Db3VudDsKIAotICAgIHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0
ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpXG5cbiIsCisg
ICAgcHJpbnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFyYW1l
dGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocyk7ICVkIHZhcmlhYmxlKHMpXG5cbiIsCiAgICAg
ICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9uQ291bnQpLAogICAgICAg
ICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkgKiBzaXpl
b2YoSW5zdHJ1Y3Rpb24pKSwKLSAgICAgICAgdGhpcywgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNh
bGxlZVJlZ2lzdGVycyk7CisgICAgICAgIHRoaXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxs
ZWVSZWdpc3RlcnMsIG1fbnVtVmFycyk7CiAKICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25z
dF9pdGVyYXRvciBiZWdpbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgVmVjdG9yPElu
c3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW5zdHJ1Y3Rpb25zKCkuZW5kKCk7CkBA
IC04OTgsNiArODk3LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywg
Y28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9i
eV9pZF90cmFuc2l0aW9uIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDogeworICAgICAgICAgICAgcHJp
bnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fZGly
ZWN0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3Ao
ZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsIik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9nZW5l
cmljOiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJw
dXRfYnlfaWRfZ2VuZXJpYyIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjkxLDggKzEyOTgs
NiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgfQogfQog
Ci0jZW5kaWYgLy8gIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQot
CiAjaWYgRFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJQ1MKIHN0YXRpYyBIYXNoU2V0PENvZGVCbG9j
ayo+IGxpdmVDb2RlQmxvY2tTZXQ7CiAjZW5kaWYKQEAgLTE0NjAsNiArMTQ2NSw3IEBAIENvZGVC
bG9jazo6Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywKIHsKICAgICBzZXROdW1QYXJhbWV0
ZXJzKG90aGVyLm51bVBhcmFtZXRlcnMoKSk7CiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOwor
ICAgIGppdEFmdGVyV2FybVVwKCk7CiAgICAgCiAgICAgaWYgKG90aGVyLm1fcmFyZURhdGEpIHsK
ICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwpAQCAtMTUwOCw2ICsxNTE0LDcg
QEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgIEFTU0VSVCht
X3NvdXJjZSk7CiAgICAgCiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOworICAgIGppdEFmdGVy
V2FybVVwKCk7CiAKICNpZiBEVU1QX0NPREVfQkxPQ0tfU1RBVElTVElDUwogICAgIGxpdmVDb2Rl
QmxvY2tTZXQuYWRkKHRoaXMpOwpAQCAtMTUyNSw3ICsxNTMyLDExIEBAIENvZGVCbG9jazo6fkNv
ZGVCbG9jaygpCiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJPRklMRSkKICAgICBkdW1wVmFs
dWVQcm9maWxlcygpOwogI2VuZGlmCi0gICAgCisKKyNpZiBFTkFCTEUoTExJTlQpICAgIAorICAg
IHdoaWxlIChtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdMTEludENh
bGxzLmVuZCgpKQorICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpLT5yZW1vdmUo
KTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBXZSBt
YXkgYmUgZGVzdHJveWVkIGJlZm9yZSBhbnkgQ29kZUJsb2NrcyB0aGF0IHJlZmVyIHRvIHVzIGFy
ZSBkZXN0cm95ZWQuCiAgICAgLy8gQ29uc2lkZXIgdGhhdCB0d28gQ29kZUJsb2NrcyBiZWNvbWUg
dW5yZWFjaGFibGUgYXQgdGhlIHNhbWUgdGltZS4gVGhlcmUKQEAgLTE3MzcsOCArMTc0OCw2OCBA
QCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAjZWxzZQogICAgIHN0
YXRpYyBjb25zdCBib29sIHZlcmJvc2VVbmxpbmtpbmcgPSBmYWxzZTsKICNlbmRpZgotI2VuZGlm
CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAgICAKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW50
ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlcjsKKyAgICAv
LyBpbnRlcnByZXRlci0+ZW5hYmxlZCgpIHJldHVybnMgdHJ1ZSBpZiB0aGUgb2xkIEMrKyBpbnRl
cnByZXRlciBpcyBlbmFibGVkLiBJZiB0aGF0J3MgZW5hYmxlZAorICAgIC8vIHRoZW4gd2UncmUg
bm90IHVzaW5nIExMSW50LgorICAgIGlmICghaW50ZXJwcmV0ZXItPmVuYWJsZWQoKSkgeworICAg
ICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXpl
KCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3Vy
SW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9u
c1tpXV07CisgICAgICAgICAgICBzd2l0Y2ggKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJ
bnN0cnVjdGlvblswXS51Lm9wY29kZSkpIHsKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lk
OgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgICAgICAgICAgaWYgKCFj
dXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVj
dGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQorICAgICAgICAgICAgICAgICAg
ICBwcmludGYoIkNsZWFyaW5nIExMSW50IHByb3BlcnR5IGFjY2VzcyB3aXRoIHN0cnVjdHVyZSAl
cC5cbiIsIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgICAg
ICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAg
ICAgIGN1ckluc3RydWN0aW9uWzVdLnUub3BlcmFuZCA9IDA7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAg
ICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAg
ICAgICAgIGlmIChIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5n
ZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rp
b25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6Omlz
TWFya2VkKGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2lu
ZykgeworICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IHB1dCB0cmFu
c2l0aW9uIHdpdGggc3RydWN0dXJlcyAlcCAtPiAlcCwgY2hhaW4gJXAuXG4iLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5n
ZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzddLnUuc3Ry
dWN0dXJlQ2hhaW4uZ2V0KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj
dXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1
ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3Vy
SW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOworICAgICAgICAgICAgICAg
IGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9w
dXRfYnlfaWQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3Ry
dWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgQVNTRVJUKGludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3BfcmVzb2x2ZV9nbG9iYWwKKyAg
ICAgICAgICAgICAgICAgICB8fCBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rp
b25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpOworICAgICAgICAg
ICAgaWYgKCFjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChj
dXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IGdsb2JhbCByZXNvbHZl
IGNhY2hlIHdpdGggc3RydWN0dXJlICVwLlxuIiwgY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1
cmUuZ2V0KCkpOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuY2xl
YXIoKTsKKyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9IDA7CisgICAg
ICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0lu
Zm9zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5mb3Nb
aV0uaXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQobV9sbGludENhbGxMaW5rSW5mb3NbaV0u
Y2FsbGVlLmdldCgpKSkgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQor
ICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IGNhbGwgZnJvbSAlcC5c
biIsIHRoaXMpOworICAgICAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGlu
aygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCEhbV9sbGludENhbGxMaW5rSW5m
b3NbaV0ubGFzdFNlZW5DYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0lu
Zm9zW2ldLmxhc3RTZWVuQ2FsbGVlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBtX2xsaW50Q2Fs
bExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgICAgICB9CisgICAgfQor
I2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8vIENo
ZWNrIGlmIHdlJ3JlIG5vdCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAgICAgaWYg
KCEoc2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBtX2RmZ0Rh
dGEtPmxpdmVuZXNzSGFzQmVlblByb3ZlZCkpIHsKQEAgLTE4NTksMTAgKzE5MzAsMTIgQEAgdm9p
ZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9mdW5jdGlvbkRlY2xzLnNpemUoKTsgKytpKQogICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmbV9mdW5jdGlvbkRlY2xzW2ldKTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCi0gICAg
Zm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBp
ID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZp
bnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7Ci0gICAgZm9y
IChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAw
OyBpIDwgc2l6ZTsgKytpKQotICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3Ry
dWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIGlmIChtX2ds
b2JhbERhdGEtPmludGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qg
c2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNp
emU7ICsraSkKKyAgICAgICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rp
b25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOworICAgICAgICBmb3IgKHNp
emVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkg
PCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3Ry
dWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIH0KICNlbmRp
ZgogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0xODcwLDggKzE5NDMsOSBAQCB2b2lkIENvZGVC
bG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0
IGV4ZWN1dGFibGVzIHRoYXQgd2UgaGF2ZSBpbmxpbmVkIGRvbid0IGRpZS4KICAgICAgICAgLy8g
RklYTUU6IElmIHRoZXkgd291bGQgaGF2ZSBvdGhlcndpc2UgZGllZCwgd2Ugc2hvdWxkIHByb2Jh
Ymx5IHRyaWdnZXIgcmVjb21waWxhdGlvbi4KICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBpbmxpbmVDYWxsRnJhbWVzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIHZpc2l0b3Iu
YXBwZW5kKCZpbmxpbmVDYWxsRnJhbWVzKClbaV0uZXhlY3V0YWJsZSk7Ci0gICAgICAgICAgICB2
aXNpdG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZyYW1lcygpW2ldLmNhbGxlZSk7CisgICAgICAgICAg
ICBJbmxpbmVDYWxsRnJhbWUmIGlubGluZUNhbGxGcmFtZSA9IGlubGluZUNhbGxGcmFtZXMoKVtp
XTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpbmxpbmVDYWxsRnJhbWUuZXhlY3V0YWJs
ZSk7CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZyYW1lLmNhbGxlZSk7
CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKQEAgLTIwNzEsNiArMjE0NSwxMiBAQCB2b2lkIENv
ZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogewogICAgIGlmICghIW1fYWx0ZXJuYXRpdmUpCiAgICAg
ICAgIG1fYWx0ZXJuYXRpdmUtPnVubGlua0NhbGxzKCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkpCisgICAg
ICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICB9CisjZW5kaWYK
ICAgICBpZiAoIShtX2NhbGxMaW5rSW5mb3Muc2l6ZSgpIHx8IG1fbWV0aG9kQ2FsbExpbmtJbmZv
cy5zaXplKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVz
ZUpJVCgpKQpAQCAtMjA4NSwxMCArMjE2NSwzOSBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2Fs
bHMoKQogCiB2b2lkIENvZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxscygpCiB7CisjaWYgRU5B
QkxFKExMSU5UKQorICAgIHdoaWxlIChtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpICE9IG1f
aW5jb21pbmdMTEludENhbGxzLmVuZCgpKQorICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5i
ZWdpbigpLT51bmxpbmsoKTsKKyNlbmRpZgorICAgIGlmIChtX2luY29taW5nQ2FsbHMuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm47CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRo
aXMpOwogICAgIHdoaWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2Fs
bHMuZW5kKCkpCiAgICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigpLT51bmxpbmsoKm1fZ2xv
YmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CiB9CisKK3Vuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNv
ZGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3Mp
Cit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfYmVnaW4pCisgICAgICAgICYmIHJldHVybkFkZHJl
c3MudmFsdWUoKSA8PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQpKSB7CisgICAgICAg
IEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSk7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxv
Y2soKSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdl
dEpJVFR5cGUoKSkpOworICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBleGVjLT5j
dXJyZW50VlBDKCk7CisgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbik7CisgICAgICAgIHJldHVy
biBieXRlY29kZU9mZnNldChpbnN0cnVjdGlvbik7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0oZXhlYyk7CisjZW5kaWYKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVy
biAxOworICAgIFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJ
bmRpY2VzID0gbV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7CisgICAgaWYgKCFj
YWxsSW5kaWNlcy5zaXplKCkpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiBiaW5hcnlT
ZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxs
UmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdl
dEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZz
ZXQ7Cit9CiAjZW5kaWYKIAogdm9pZCBDb2RlQmxvY2s6OmNsZWFyRXZhbENhY2hlKCkKQEAgLTIx
ODQsMjQgKzIyOTMsNDUgQEAgYm9vbCBGdW5jdGlvbkNvZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhE
RgogCiB2b2lkIFByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0
SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6
aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxh
Y2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVj
dXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZv
aWQgRXZhbENvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkg
IT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXpp
bmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7
CiAgICAgc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpl
dHRpc29uT3B0aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBGdW5jdGlvbkNv
ZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0
SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3Rh
dGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNv
bk9wdGltaXplZENvZGVGb3IoKmdsb2JhbERhdGEoKSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZv
ckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKIH0KKwordm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpq
aXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdl
dEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhp
cyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1
dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZ2xvYmFsRGF0YSk7Cit9CisK
K3ZvaWQgRXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJU
aHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxl
KGdsb2JhbERhdGEpOworfQorCit2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqaXRDb21waWxlSW1w
bChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9
PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNl
bWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3du
ZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlRm9yKGdsb2JhbERhdGEsIG1faXNDb25zdHJ1Y3Rv
ciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7Cit9CiAjZW5kaWYKIAogI2lmIEVO
QUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTIzMDQsNiArMjQzNCwxOCBAQCB2b2lkIENvZGVCbG9j
azo6ZHVtcFZhbHVlUHJvZmlsZXMoKQogfQogI2VuZGlmCiAKK3ZvaWQgQ29kZUJsb2NrOjpoYW5k
bGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpCit7CisjaWYgIUVOQUJMRShPUENPREVf
U0FNUExJTkcpICYmICFFTkFCTEUoTExJTlQpCisgICAgaWYgKEJ5dGVjb2RlR2VuZXJhdG9yOjpk
dW1wc0dlbmVyYXRlZENvZGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghIWFsdGVybmF0
aXZlKCkpCisgICAgICAgIGRpc2NhcmRCeXRlY29kZSgpOworICAgIGVsc2UKKyAgICAgICAgZGlz
Y2FyZEJ5dGVjb2RlTGF0ZXIoKTsKKyNlbmRpZgorfQorCiAjaWZuZGVmIE5ERUJVRwogYm9vbCBD
b2RlQmxvY2s6OnVzZXNPcGNvZGUoT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMDYyMDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpZm5kZWYgQ29kZUJsb2NrX2gKICNkZWZpbmUgQ29kZUJs
b2NrX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJDYWxs
TGlua0luZm8uaCIKICNpbmNsdWRlICJDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5o
IgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKQEAgLTUwLDYgKzUxLDcgQEAKICNpbmNsdWRlICJK
SVRXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUg
Ikp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAi
TGluZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlByZWRpY3Rpb25UcmFj
a2VyLmgiCkBAIC02NSwxNiArNjcsMTEgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKIAotLy8gUmVnaXN0ZXIgbnVtYmVycyB1c2VkIGlu
IGJ5dGVjb2RlIG9wZXJhdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbWVhbmluZyBhY2NvcmRpbmcgdG8g
dGhlaXIgcmFuZ2VzOgotLy8gICAgICAweDgwMDAwMDAwLTB4RkZGRkZGRkYgIE5lZ2F0aXZlIGlu
ZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGVudHJpZXMgaW4gdGhlIGNhbGwg
ZnJhbWUsIHNlZSBSZWdpc3RlckZpbGUuaC4KLS8vICAgICAgMHgwMDAwMDAwMC0weDNGRkZGRkZG
ICBGb3J3YXJkcyBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBsb2NhbCB2
YXJzIGFuZCB0ZW1wb3JhcmllcyB3aXRoIHRoZSBmdW5jdGlvbidzIGNhbGxmcmFtZS4KLS8vICAg
ICAgMHg0MDAwMDAwMC0weDdGRkZGRkZGICBQb3NpdGl2ZSBpbmRpY2VzIGZyb20gMHg0MDAwMDAw
MCBzcGVjaWZ5IGVudHJpZXMgaW4gdGhlIGNvbnN0YW50IHBvb2wgb24gdGhlIENvZGVCbG9jay4K
LXN0YXRpYyBjb25zdCBpbnQgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAw
OwotCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFzcyBE
RkdDb2RlQmxvY2tzOworICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAKICAgICBpbmxpbmUgaW50IHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rl
cihpbnQgYXJndW1lbnRzUmVnaXN0ZXIpIHsgcmV0dXJuIGFyZ3VtZW50c1JlZ2lzdGVyIC0gMTsg
fQogCkBAIC04Myw2ICs4MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIENvZGVCbG9j
ayA6IHB1YmxpYyBVbmNvbmRpdGlvbmFsRmluYWxpemVyLCBwdWJsaWMgV2Vha1JlZmVyZW5jZUhh
cnZlc3RlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBmcmll
bmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBDb3B5UGFyc2VkQmxvY2tUYWcgeyBDb3B5UGFy
c2VkQmxvY2sgfTsKICAgICBwcm90ZWN0ZWQ6CkBAIC0xMjMsNyArMTIxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICB3aGlsZSAocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKQogICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC0+YWx0ZXJuYXRpdmUoKTsKICAgICAgICAgICAgIEFT
U0VSVChyZXN1bHQpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC0+Z2V0SklUVHlwZSgpID09
IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jh
c2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAgICAgfQogI2VuZGlmCkBAIC0xMzQsMTEgKzEzMiw5IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAKLSNpZiAhZGVm
aW5lZChOREVCVUcpIHx8IEVOQUJMRV9PUENPREVfU0FNUExJTkcKICAgICAgICAgdm9pZCBkdW1w
KEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50U3RydWN0dXJlcyhjb25zdCBJ
bnN0cnVjdGlvbiopIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50U3RydWN0dXJlKGNvbnN0IGNo
YXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpIGNvbnN0OwotI2VuZGlm
CiAKICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0
TW9kZTsgfQogCkBAIC0xOTQsMTUgKzE5MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgcmV0dXJuICooYmluYXJ5U2VhcmNoPE1ldGhvZENhbGxMaW5rSW5mbywgdW5zaWduZWQsIGdl
dE1ldGhvZENhbGxMaW5rSW5mb0J5dGVjb2RlSW5kZXg+KG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5i
ZWdpbigpLCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpLCBieXRlY29kZUluZGV4KSk7CiAg
ICAgICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChSZXR1cm5BZGRyZXNz
UHRyIHJldHVybkFkZHJlc3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9yYXJlRGF0
YSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIFZlY3RvcjxDYWxsUmV0
dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0gbV9yYXJlRGF0YS0+bV9j
YWxsUmV0dXJuSW5kZXhWZWN0b3I7Ci0gICAgICAgICAgICBpZiAoIWNhbGxJbmRpY2VzLnNpemUo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIHJldHVybiBiaW5hcnlT
ZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxs
UmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdl
dEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZz
ZXQ7Ci0gICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRl
KiwgUmV0dXJuQWRkcmVzc1B0cik7CiAKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXRG
b3JDYWxsQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAgewpAQCAtMjIzLDExICsyMTEs
MTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIG1faW5jb21pbmdD
YWxscy5wdXNoKGluY29taW5nKTsKICAgICAgICAgfQorI2lmIEVOQUJMRShMTElOVCkKKyAgICAg
ICAgdm9pZCBsaW5rSW5jb21pbmdDYWxsKExMSW50Q2FsbExpbmtJbmZvKiBpbmNvbWluZykKKyAg
ICAgICAgeworICAgICAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMucHVzaChpbmNvbWluZyk7
CisgICAgICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAgICAgICAgIAogICAgICAgICB2
b2lkIHVubGlua0luY29taW5nQ2FsbHMoKTsKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQp
CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExM
SU5UKQogICAgICAgICB2b2lkIHNldEpJVENvZGVNYXAoUGFzc093blB0cjxDb21wYWN0SklUQ29k
ZU1hcD4gaml0Q29kZU1hcCkKICAgICAgICAgewogICAgICAgICAgICAgbV9qaXRDb2RlTWFwID0g
aml0Q29kZU1hcDsKQEAgLTIzNiw3ICsyMzAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ewogICAgICAgICAgICAgcmV0dXJuIG1faml0Q29kZU1hcC5nZXQoKTsKICAgICAgICAgfQorI2Vu
ZGlmCiAgICAgICAgIAorI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICB2b2lkIGNyZWF0ZURG
R0RhdGFJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghIW1fZGZnRGF0
YSkKQEAgLTMzNSwxMiArMzMxLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAjZW5k
aWYKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVP
ZmZzZXQoSW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJlc3MpCiAgICAgICAgIHsKKyAgICAgICAgICAg
IEFTU0VSVChyZXR1cm5BZGRyZXNzID49IGluc3RydWN0aW9ucygpLmJlZ2luKCkgJiYgcmV0dXJu
QWRkcmVzcyA8IGluc3RydWN0aW9ucygpLmVuZCgpKTsKICAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxJbnN0cnVjdGlvbio+KHJldHVybkFkZHJlc3MpIC0gaW5zdHJ1Y3Rpb25zKCkuYmVn
aW4oKTsKICAgICAgICAgfQotI2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXRJc051bWVyaWNDb21w
YXJlRnVuY3Rpb24oYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24pIHsgbV9pc051bWVyaWND
b21wYXJlRnVuY3Rpb24gPSBpc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KICAgICAgICAgYm9v
bCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24oKSB7IHJldHVybiBtX2lzTnVtZXJpY0NvbXBhcmVG
dW5jdGlvbjsgfQpAQCAtMzU0LDE3ICszNDksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ewogICAgICAgICAgICAgbV9zaG91bGREaXNjYXJkQnl0ZWNvZGUgPSB0cnVlOwogICAgICAgICB9
Ci0gICAgICAgIHZvaWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBpZiAoISFhbHRlcm5hdGl2ZSgpKQotICAgICAgICAgICAgICAg
IGRpc2NhcmRCeXRlY29kZSgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGRp
c2NhcmRCeXRlY29kZUxhdGVyKCk7Ci0gICAgICAgIH0KKyAgICAgICAgdm9pZCBoYW5kbGVCeXRl
Y29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAgICAgICAKLSNpZm5kZWYgTkRFQlVHCiAg
ICAgICAgIGJvb2wgdXNlc09wY29kZShPcGNvZGVJRCk7Ci0jZW5kaWYKIAogICAgICAgICB1bnNp
Z25lZCBpbnN0cnVjdGlvbkNvdW50KCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbkNvdW50OyB9CiAg
ICAgICAgIHZvaWQgc2V0SW5zdHJ1Y3Rpb25Db3VudCh1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50
KSB7IG1faW5zdHJ1Y3Rpb25Db3VudCA9IGluc3RydWN0aW9uQ291bnQ7IH0KQEAgLTM4Nyw2ICsz
NzQsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUq
IGV4ZWN1dGFibGVNZW1vcnkoKSB7IHJldHVybiBnZXRKSVRDb2RlKCkuZ2V0RXhlY3V0YWJsZU1l
bW9yeSgpOyB9CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhl
Y1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0
aXNvbigpID0gMDsKKyAgICAgICAgYm9vbCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGdldEpJVFR5cGUoKSAhPSBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUo
KSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaml0Q29tcGlsZUltcGwoZ2xvYmFsRGF0YSk7
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIENv
ZGVCbG9jayogcmVwbGFjZW1lbnQoKSA9IDA7CiAKICAgICAgICAgZW51bSBDb21waWxlV2l0aERG
R1N0YXRlIHsKQEAgLTQwNiwxMyArNDAyLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IGJvb2wgaGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBB
U1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAg
IEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAg
ICAgIGJvb2wgcmVzdWx0ID0gcmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID4gZ2V0SklUVHlw
ZSgpOwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAg
ICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2Rl
OjpERkdKSVQpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJl
cGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlcGxhY2VtZW50KCkt
PmdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpID09
IHRoaXMpOwogICAgICAgICAgICAgfQogI2VuZGlmCkBAIC00NzEsMTggKzQ2NywyMSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGNsZWFyRXZhbENhY2hlKCk7CiAKLSNpZiBFTkFC
TEUoSU5URVJQUkVURVIpCiAgICAgICAgIHZvaWQgYWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bih1bnNpZ25lZCBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9w
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bik7CisgICAgICAgICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIGFkZEdsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbih1bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAg
ICAgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJl
c29sdmVJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlv
bnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAg
Ym9vbCBoYXNHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIExMSW50Q2FsbExp
bmtJbmZvKiBhZGRMTEludENhbGxMaW5rSW5mbygpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1f
bGxpbnRDYWxsTGlua0luZm9zLmFwcGVuZChMTEludENhbGxMaW5rSW5mbygpKTsKKyAgICAgICAg
ICAgIHJldHVybiAmbV9sbGludENhbGxMaW5rSW5mb3MubGFzdCgpOworICAgICAgICB9CiAjZW5k
aWYKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIHNldE51bWJlck9mU3RydWN0dXJlU3R1
YkluZm9zKHNpemVfdCBzaXplKSB7IG1fc3RydWN0dXJlU3R1YkluZm9zLmdyb3coc2l6ZSk7IH0K
QEAgLTQ5MSw4ICs0OTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGFkZEds
b2JhbFJlc29sdmVJbmZvKHVuc2lnbmVkIGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAg
ICAgewotICAgICAgICAgICAgaWYgKG1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAg
ICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGds
b2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOworICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5m
b3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOwog
ICAgICAgICB9CiAgICAgICAgIEdsb2JhbFJlc29sdmVJbmZvJiBnbG9iYWxSZXNvbHZlSW5mbyhp
bnQgaW5kZXgpIHsgcmV0dXJuIG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2luZGV4XTsgfQogICAgICAg
ICBib29sIGhhc0dsb2JhbFJlc29sdmVJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRl
Y29kZU9mZnNldCk7CkBAIC01MDMsNiArNTAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgdm9pZCBhZGRNZXRob2RDYWxsTGlua0luZm9zKHVuc2lnbmVkIG4pIHsgQVNTRVJUKG1fZ2xv
YmFsRGF0YS0+Y2FuVXNlSklUKCkpOyBtX21ldGhvZENhbGxMaW5rSW5mb3MuZ3JvdyhuKTsgfQog
ICAgICAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGxMaW5rSW5mbyhpbnQgaW5kZXgp
IHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpbmRleF07IH0KKyAgICAgICAgc2l6ZV90
IG51bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZvcygpIHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJ
bmZvcy5zaXplKCk7IH0KICNlbmRpZgogICAgICAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklM
RVIpCkBAIC01NDMsNiArNTQyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJv
ZmlsZSA9PSByZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQor
ICAgICAgICBQcmVkaWN0ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9m
ZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2
YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPmNvbXB1dGVVcGRh
dGVkUHJlZGljdGlvbigpOworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCB0
b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpCiAgICAgICAgIHsKQEAgLTU2OSwxMiArNTcyLDE2
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VT
bG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgh
bnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29k
ZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiB2
YWx1ZSA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0
aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25z
OjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgYm9vbCBjb3VsZFRha2VTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJl
Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsK
ICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZU1p
bmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50
cnlDb3VudCA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAg
fQpAQCAtNTkzLDEyICs2MDAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAg
ICBib29sIGxpa2VseVRvVGFrZVNwZWNpYWxGYXN0Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lh
bEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gc3BlY2lhbEZh
c3RDYXNlQ291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQg
JiYgc3RhdGljX2Nhc3Q8ZG91YmxlPihzcGVjaWFsRmFzdENhc2VDb3VudCkgLyBtX2V4ZWN1dGlv
bkVudHJ5Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dD
YXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1i
ZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgICAgICB1bnNpZ25lZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNp
Z25lZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRl
Y29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2ln
bmVkIHZhbHVlID0gc2xvd0Nhc2VDb3VudCAtIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNjA3
LDYgKzYxOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtl
bHlUb1Rha2VBbnlTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVD
YXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwog
ICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENh
c2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAg
ICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgKyBzcGVjaWFsRmFzdENh
c2VDb3VudDsKQEAgLTcwNCw3ICs3MTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAg
ICAgICAgIGJvb2wgYWRkRnJlcXVlbnRFeGl0U2l0ZShjb25zdCBERkc6OkZyZXF1ZW50RXhpdFNp
dGUmIHNpdGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFz
ZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIG1fZXhpdFByb2Zp
bGUuYWRkKHNpdGUpOwogICAgICAgICB9CiAKQEAgLTgwOSw2ICs4MjIsMjkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgY29weVBvc3RQYXJzZURhdGFGcm9tKENvZGVCbG9jayogYWx0
ZXJuYXRpdmUpOwogICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbUFsdGVybmF0aXZl
KCk7CiAgICAgICAgIAorICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4g
SklUdGluZyBraWNrcyBpbiwgaW4gYSBtaXhlZCBtb2RlCisgICAgICAgIC8vIGV4ZWN1dGlvbiB3
b3JsZC4KKyAgICAgICAgCisgICAgICAgIHZvaWQgZG9udEpJVEFueXRpbWVTb29uKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICB2b2lkIGppdEFmdGVyV2FybVVwKCkKKyAgICAgICAgeworICAgICAgICAgICAg
bV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
SklUQWZ0ZXJXYXJtVXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0U29v
bigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlv
bnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIGludDMyX3QgbGxpbnRFeGVjdXRlQ291bnRlcigpIGNvbnN0CisgICAgICAgIHsK
KyAgICAgICAgICAgIHJldHVybiBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIH0KKyAg
ICAgICAgCiAgICAgICAgIC8vIEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiB0aWVyZWQg
Y29tcGlsYXRpb24ga2lja3MgaW4uIFRoaXMKICAgICAgICAgLy8gY29udHJvbHMgYm90aCB3aGVu
IHRoZSBvcHRpbWl6aW5nIGNvbXBpbGVyIGlzIGludm9rZWQgYW5kIHdoZW4gT1NSCiAgICAgICAg
IC8vIGVudHJ5IGhhcHBlbnMuIFR3byB0cmlnZ2VycyBleGlzdDogdGhlIGxvb3AgdHJpZ2dlciBh
bmQgdGhlIHJldHVybgpAQCAtMTAwMSw2ICsxMDM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGJvb2wgbV9zaG91bGREaXNjYXJkQnl0ZWNvZGU7CiAKICAgICBwcm90ZWN0ZWQ6CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwogICAgICAgICAKQEAg
LTEwMTMsNyArMTA1MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHRhbGx5RnJl
cXVlbnRFeGl0U2l0ZXMoKSB7IH0KICNlbmRpZgogICAgICAgICAKLSNpZiAhZGVmaW5lZChOREVC
VUcpIHx8IEVOQUJMRShPUENPREVfU0FNUExJTkcpCiAgICAgICAgIHZvaWQgZHVtcChFeGVjU3Rh
dGUqLCBjb25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYgYmVnaW4sIFZl
Y3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJikgY29uc3Q7CiAKICAgICAgICAgQ1N0
cmluZyByZWdpc3Rlck5hbWUoRXhlY1N0YXRlKiwgaW50IHIpIGNvbnN0OwpAQCAtMTAyMyw3ICsx
MDU5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHJpbnRHZXRCeUlkT3AoRXhl
Y1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRv
ciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludENhbGxPcChFeGVj
U3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9y
JiwgY29uc3QgY2hhciogb3ApIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50UHV0QnlJZE9wKEV4
ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0
b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7Ci0jZW5kaWYKICAgICAgICAgdm9pZCB2aXNpdFN0
cnVjdHVyZXMoU2xvdFZpc2l0b3ImLCBJbnN0cnVjdGlvbiogdlBDKSBjb25zdDsKICAgICAgICAg
CiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0xMDg0LDkgKzExMTksMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9zb3VyY2U7CiAgICAgICAgIHVu
c2lnbmVkIG1fc291cmNlT2Zmc2V0OwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAg
ICBWZWN0b3I8dW5zaWduZWQ+IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnM7CiAgICAgICAg
IFZlY3Rvcjx1bnNpZ25lZD4gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zOworI2lmIEVOQUJM
RShMTElOVCkKKyAgICAgICAgU2VnbWVudGVkVmVjdG9yPExMSW50Q2FsbExpbmtJbmZvLCA4PiBt
X2xsaW50Q2FsbExpbmtJbmZvczsKKyAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PExMSW50Q2Fs
bExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4gPiBtX2lu
Y29taW5nTExJbnRDYWxsczsKICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFZlY3Rv
cjxTdHJ1Y3R1cmVTdHViSW5mbz4gbV9zdHJ1Y3R1cmVTdHViSW5mb3M7CkBAIC0xMDk3LDkgKzEx
MzQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBt
X2ppdENvZGVXaXRoQXJpdHlDaGVjazsKICAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxM
aW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdD
YWxsczsKICNlbmRpZgotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8
fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIE93blB0cjxDb21wYWN0SklUQ29kZU1hcD4gbV9qaXRD
b2RlTWFwOwotICAgICAgICAKKyNlbmRpZgorI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBz
dHJ1Y3QgV2Vha1JlZmVyZW5jZVRyYW5zaXRpb24gewogICAgICAgICAgICAgV2Vha1JlZmVyZW5j
ZVRyYW5zaXRpb24oKSB7IH0KICAgICAgICAgICAgIApAQCAtMTE2MiwxMiArMTIwMCwxNCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBPd25QdHI8Q29kZUJsb2NrPiBtX2FsdGVybmF0aXZl
OwogICAgICAgICAKKyAgICAgICAgaW50MzJfdCBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAg
ICAgIAogICAgICAgICBpbnQzMl90IG1faml0RXhlY3V0ZUNvdW50ZXI7CiAgICAgICAgIHVpbnQz
Ml90IG1fc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVj
dWxhdGl2ZUZhaWxDb3VudGVyOwogICAgICAgICB1aW50OF90IG1fb3B0aW1pemF0aW9uRGVsYXlD
b3VudGVyOwogICAgICAgICB1aW50OF90IG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXI7Ci0K
KyAgICAgICAgCiAgICAgICAgIHN0cnVjdCBSYXJlRGF0YSB7CiAgICAgICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBwdWJsaWM6CkBAIC0xMjQxLDYgKzEyODEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3Qq
IGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxl
SW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2Vt
ZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGR0ludGVybmFsKCk7
CiAjZW5kaWYKQEAgLTEyNzUsNiArMTMxNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3Rh
dGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAg
ICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBi
b29sIGNhbkNvbXBpbGVXaXRoREZHSW50ZXJuYWwoKTsKICNlbmRpZgpAQCAtMTMxMiw2ICsxMzU0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpT
T2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0
Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiBy
ZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkdJbnRl
cm5hbCgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDYyMDMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDIwICsyNyw0OSBAQAogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK0dldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZp
ZXImIGlkZW50KQoreworICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVT
RURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CisgICAgCisgICAgaWYg
KGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX21ldGhvZF9jaGVjaykKKyAgICAg
ICAgaW5zdHJ1Y3Rpb24rKzsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rp
b25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUpCisgICAgICAgIHJl
dHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3Vu
ZCwgZmFsc2UpOworICAgIAorICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJv
ZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgaWYgKG9mZnNldCA9PSBub3RG
b3VuZCkKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0
dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisgICAgCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0
dXMoU2ltcGxlRGlyZWN0LCBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSwgb2Zmc2V0LCBmYWxzZSk7
CisjZWxzZQorICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVy
ZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOworI2VuZGlmCit9CisKIEdldEJ5SWRTdGF0dXMgR2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQogewogICAgIFVOVVNFRF9QQVJBTShw
cm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5V
U0VEX1BBUkFNKGlkZW50KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklM
RVIpCisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcygp
KQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29k
ZUluZGV4LCBpZGVudCk7CisgICAgCiAgICAgLy8gRmlyc3QgY2hlY2sgaWYgaXQgbWFrZXMgZWl0
aGVyIGNhbGxzLCBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUgc3VwZXIgY2FyZWZ1bCwgb3IK
ICAgICAvLyBpZiBpdCdzIG5vdCBzZXQgYXQgYWxsLCBpbiB3aGljaCBjYXNlIHdlIHB1bnQuCiAg
ICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gcHJvZmlsZWRCbG9jay0+Z2V0U3R1Yklu
Zm8oYnl0ZWNvZGVJbmRleCk7CiAgICAgaWYgKCFzdHViSW5mby5zZWVuKQotICAgICAgICByZXR1
cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQp
OworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29k
ZUluZGV4LCBpZGVudCk7CiAgICAgCiAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0
KiBsaXN0OwogICAgIGludCBsaXN0U2l6ZTsKQEAgLTYwLDE4ICs4OSwxOSBAQCBHZXRCeUlkU3Rh
dHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgfQogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbGlzdFNpemU7ICsraSkgewogICAgICAgICBpZiAoIWxpc3QtPmxpc3RbaV0uaXNEaXJl
Y3QpCi0gICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBTdHJ1Y3R1
cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTWFr
ZXNDYWxscywgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsKICAgICB9CiAgICAgCiAg
ICAgLy8gTmV4dCBjaGVjayBpZiBpdCB0YWtlcyBzbG93IGNhc2UsIGluIHdoaWNoIGNhc2Ugd2Ug
d2FudCB0byBiZSBraW5kIG9mIGNhcmVmdWwuCiAgICAgaWYgKHByb2ZpbGVkQmxvY2stPmxpa2Vs
eVRvVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhUYWtlc1Nsb3dQYXRoLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICBy
ZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91
bmQsIHRydWUpOwogICAgIAogICAgIC8vIEZpbmFsbHkgZmlndXJlIG91dCBpZiB3ZSBjYW4gZGVy
aXZlIGFuIGFjY2VzcyBzdHJhdGVneS4KICAgICBHZXRCeUlkU3RhdHVzIHJlc3VsdDsKKyAgICBy
ZXN1bHQubV93YXNTZWVuSW5KSVQgPSB0cnVlOwogICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNz
VHlwZSkgewogICAgIGNhc2UgYWNjZXNzX3Vuc2V0OgotICAgICAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICBy
ZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVu
dCk7CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9zZWxmOiB7CiAgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3R1YkluZm8udS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0
U3RydWN0dXJlLmdldCgpOwpAQCAtMTMwLDcgKzE2MCw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UgLy8g
RU5BQkxFKEpJVCkKLSAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1
Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3Jt
YXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOwogI2VuZGlmIC8vIEVOQUJM
RShKSVQpCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMTA2MjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDEx
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIEdldEJ5SWRTdGF0dXMoU3RhdGUg
c3RhdGUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0LCBzaXplX3Qgb2Zmc2V0KQor
ICAgIEdldEJ5SWRTdGF0dXMoU3RhdGUgc3RhdGUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0
dXJlU2V0LCBzaXplX3Qgb2Zmc2V0LCBib29sIHdhc1NlZW5JbkpJVCkKICAgICAgICAgOiBtX3N0
YXRlKHN0YXRlKQogICAgICAgICAsIG1fc3RydWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAg
ICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgICAgICwgbV93YXNTZWVuSW5KSVQod2FzU2Vlbklu
SklUKQogICAgIHsKICAgICAgICAgQVNTRVJUKChzdGF0ZSA9PSBTaW1wbGVEaXJlY3QpID09IChv
ZmZzZXQgIT0gbm90Rm91bmQpKTsKICAgICB9CkBAIC03MCwxMCArNzEsMTUgQEAgcHVibGljOgog
ICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9z
dHJ1Y3R1cmVTZXQ7IH0KICAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZz
ZXQ7IH0KICAgICAKKyAgICBib29sIHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2Fz
U2VlbkluSklUOyB9CisgICAgCiBwcml2YXRlOgorICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNv
bXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRp
ZmllciYpOworICAgIAogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgU3RydWN0dXJlU2V0IG1fc3Ry
dWN0dXJlU2V0OwogICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBib29sIG1fd2FzU2VlbkluSklU
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTA2MjAzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNDZWxsOwogICAgIGNsYXNz
IFN0cnVjdHVyZTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKKyAgICBzdHJ1Y3QgTExJbnRD
YWxsTGlua0luZm87CiAgICAgc3RydWN0IFZhbHVlUHJvZmlsZTsKIAogI2lmIEVOQUJMRShKSVQp
CkBAIC0xNDYsNiArMTQ3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICAgICBzdHJ1
Y3QgSW5zdHJ1Y3Rpb24geworICAgICAgICBJbnN0cnVjdGlvbigpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHUuanNDZWxsLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIElu
c3RydWN0aW9uKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICNpZiAhRU5BQkxFKENPTVBVVEVE
X0dPVE9fSU5URVJQUkVURVIpCkBAIC0xODIsNiArMTg4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgSW5zdHJ1Y3Rpb24oUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVu
YykgeyB1LmdldHRlckZ1bmMgPSBnZXR0ZXJGdW5jOyB9CiAgICAgICAgIAorICAgICAgICBJbnN0
cnVjdGlvbihMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSB7IHUuY2FsbExpbmtJbmZv
ID0gY2FsbExpbmtJbmZvOyB9CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGUpIHsgdS5wcm9maWxlID0gcHJvZmlsZTsgfQogCiAgICAgICAgIHVuaW9u
IHsKQEAgLTE5MSw3ICsxOTksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFdyaXRl
QmFycmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IHN0cnVjdHVyZUNoYWluOwogICAgICAgICAgICAg
V3JpdGVCYXJyaWVyQmFzZTxKU0NlbGw+IGpzQ2VsbDsKICAgICAgICAgICAgIFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1bmM7CisgICAgICAgICAgICBMTEludENhbGxMaW5rSW5m
byogY2FsbExpbmtJbmZvOwogICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlOworICAg
ICAgICAgICAgdm9pZCogcG9pbnRlcjsKICAgICAgICAgfSB1OwogICAgICAgICAKICAgICBwcml2
YXRlOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50
Q2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExM
SW50Q2FsbExpbmtJbmZvX2gKKyNkZWZpbmUgTExJbnRDYWxsTGlua0luZm9faAorCisjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorI2lu
Y2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0
cnVjdCBJbnN0cnVjdGlvbjsKKworc3RydWN0IExMSW50Q2FsbExpbmtJbmZvIDogcHVibGljIEJh
c2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiB7CisgICAgTExJbnRDYWxsTGlu
a0luZm8oKQorICAgIHsKKyAgICB9CisgICAgCisgICAgfkxMSW50Q2FsbExpbmtJbmZvKCkKKyAg
ICB7CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAg
fQorICAgIAorICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJldHVybiBjYWxsZWU7IH0KKyAgICAKKyAg
ICB2b2lkIHVubGluaygpCisgICAgeworICAgICAgICBjYWxsZWUuY2xlYXIoKTsKKyAgICAgICAg
bWFjaGluZUNvZGVUYXJnZXQgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKKyAgICAgICAgaWYg
KGlzT25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgV3Jp
dGVCYXJyaWVyPEpTRnVuY3Rpb24+IGNhbGxlZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlv
bj4gbGFzdFNlZW5DYWxsZWU7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1hY2hpbmVDb2Rl
VGFyZ2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBMTEludENhbGxM
aW5rSW5mb19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RD
YWxsTGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTA2MjAzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNiArMzUsMTEgQEAgTWV0aG9kQ2FsbExpbmtTdGF0dXMgTWV0aG9k
Q2FsbExpbmtTdGF0dQogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVT
RURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVF
X1BST0ZJTEVSKQorICAgIC8vIE5PVEU6IFRoaXMgZG9lcyBub3QgaGF2ZSBhbiBMTEludCBmYWxs
LWJhY2sgYmVjYXVzZSBMTEludCBkb2VzIG5vdCBkbyBhbnkgbWV0aG9kCisgICAgLy8gY2FsbCBs
aW5rIGNhY2hpbmcuCisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1iZXJPZk1ldGhvZENhbGxM
aW5rSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIE1ldGhvZENhbGxMaW5rU3RhdHVzKCk7CisgICAg
CiAgICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RDYWxsID0gcHJvZmlsZWRCbG9jay0+Z2V0
TWV0aG9kQ2FsbExpbmtJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIAogICAgIGlmICghbWV0aG9k
Q2FsbC5zZWVuIHx8ICFtZXRob2RDYWxsLmNhY2hlZFN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDEwNjIwMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIz
LDYgKzEyMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9nZXRfYXJndW1l
bnRzX2xlbmd0aCwgNCkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWQsIDkpIFwKICAgICAg
ICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24sIDkpIFwKKyAgICAgICAgbWFjcm8ob3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0LCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbCwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRf
cmVwbGFjZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfZ2VuZXJpYywgOSkgXAog
ICAgICAgICBtYWNybyhvcF9kZWxfYnlfaWQsIDQpIFwKQEAgLTIwMiw2ICsyMDQsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBlbnVtIHsgRk9SX0VBQ0hfT1BDT0RFX0lEKE9Q
Q09ERV9JRF9FTlVNKSB9IE9wY29kZUlEOwogICAgICN1bmRlZiBPUENPREVfSURfRU5VTQogCisg
ICAgY29uc3QgaW50IG1heE9wY29kZUxlbmd0aCA9IDk7CiAgICAgY29uc3QgaW50IG51bU9wY29k
ZUlEcyA9IG9wX2VuZCArIDE7CiAKICAgICAjZGVmaW5lIE9QQ09ERV9JRF9MRU5HVEhTKGlkLCBs
ZW5ndGgpIGNvbnN0IGludCBpZCMjX2xlbmd0aCA9IGxlbmd0aDsKQEAgLTIxOCw3ICsyMjEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKFZFUklGWV9PUENP
REVfSUQpOwogICAgICN1bmRlZiBWRVJJRllfT1BDT0RFX0lECiAKLSNpZiBFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRF
UikgfHwgRU5BQkxFKExMSU5UKQogI2lmIENPTVBJTEVSKFJWQ1QpIHx8IENPTVBJTEVSKElOVEVM
KQogICAgIHR5cGVkZWYgdm9pZCogT3Bjb2RlOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEwNjIw
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMjcgKzI3LDY5IEBACiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1
cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWlu
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNv
bXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRC
bG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworICAgIFVOVVNFRF9QQVJB
TShpZGVudCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlv
biA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4
OworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVy
ZS5nZXQoKTsKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0
dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgIAorICAgIGlmIChpbnN0
cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWQpIHsKKyAgICAgICAgc2l6
ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCks
IGlkZW50KTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICAgICAgICAgIHJl
dHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAg
ICAgICAgCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVJlcGxhY2UsIHN0cnVj
dHVyZSwgMCwgMCwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKGluc3RydWN0aW9u
WzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdAorICAg
ICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWwpOworICAgIAorICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0g
aW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgU3RydWN0dXJlQ2hhaW4qIGNo
YWluID0gaW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKTsKKyAgICBBU1NFUlQo
bmV3U3RydWN0dXJlKTsKKyAgICBBU1NFUlQoY2hhaW4pOworICAgIAorICAgIHNpemVfdCBvZmZz
ZXQgPSBuZXdTdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVu
dCk7CisgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRT
dGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgIAorICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKFNpbXBsZVRyYW5zaXRpb24sIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJl
LCBjaGFpbiwgb2Zmc2V0KTsKKyNlbHNlCisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworI2VuZGlmCit9CisKIFB1dEJ5SWRTdGF0dXMg
UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQogewogICAgIFVOVVNFRF9QQVJB
TShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAg
VU5VU0VEX1BBUkFNKGlkZW50KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJP
RklMRVIpCisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZv
cygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRl
Y29kZUluZGV4LCBpZGVudCk7CisgICAgCiAgICAgaWYgKHByb2ZpbGVkQmxvY2stPmxpa2VseVRv
VGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQogICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1
cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBub3RGb3VuZCk7CiAgICAgCiAgICAgU3RydWN0dXJl
U3R1YkluZm8mIHN0dWJJbmZvID0gcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm8oYnl0ZWNvZGVJ
bmRleCk7CiAgICAgaWYgKCFzdHViSW5mby5zZWVuKQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBj
b21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAg
ICAKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIGFjY2Vzc191
bnNldDoKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwg
MCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJs
b2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX3B1
dF9ieV9pZF9yZXBsYWNlOiB7CiAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHViSW5mby51LnB1
dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmdldCgKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMTA2MjAz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAkod29y
a2luZyBjb3B5KQpAQCAtOTMsNiArOTMsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IG9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCiBwcml2YXRlOgorICAgIHN0YXRpYyBQ
dXRCeUlkU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgSWRlbnRpZmllciYpOworICAgIAogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgU3Ry
dWN0dXJlKiBtX29sZFN0cnVjdHVyZTsKICAgICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJlOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDEwNjIwMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIu
aCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNp
bmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgog
I2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCkBAIC0xMTYs
MjYgKzExNywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBleHBlY3RlZCBieSB0aGUgY2FsbGVl
LgogKi8KIAotI2lmbmRlZiBOREVCVUcKIHN0YXRpYyBib29sIHNfZHVtcHNHZW5lcmF0ZWRDb2Rl
ID0gZmFsc2U7Ci0jZW5kaWYKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6c2V0RHVtcHNHZW5l
cmF0ZWRDb2RlKGJvb2wgZHVtcHNHZW5lcmF0ZWRDb2RlKQogewotI2lmbmRlZiBOREVCVUcKICAg
ICBzX2R1bXBzR2VuZXJhdGVkQ29kZSA9IGR1bXBzR2VuZXJhdGVkQ29kZTsKLSNlbHNlCi0gICAg
VU5VU0VEX1BBUkFNKGR1bXBzR2VuZXJhdGVkQ29kZSk7Ci0jZW5kaWYKIH0KIAogYm9vbCBCeXRl
Y29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkKIHsKLSNpZm5kZWYgTkRFQlVHCiAg
ICAgcmV0dXJuIHNfZHVtcHNHZW5lcmF0ZWRDb2RlOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7
Ci0jZW5kaWYKIH0KIAogSlNPYmplY3QqIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCkBA
IC0xNDgsMTAgKzEzOSw4IEBAIEpTT2JqZWN0KiBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUo
KQogCiAgICAgbV9jb2RlQmxvY2stPnNldEluc3RydWN0aW9uQ291bnQobV9jb2RlQmxvY2stPmlu
c3RydWN0aW9ucygpLnNpemUoKSk7CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKHNfZHVtcHNH
ZW5lcmF0ZWRDb2RlKQogICAgICAgICBtX2NvZGVCbG9jay0+ZHVtcChtX3Njb3BlQ2hhaW4tPmds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKTsKLSNlbmRpZgogCiAgICAgaWYgKChtX2NvZGVUeXBl
ID09IEZ1bmN0aW9uQ29kZSAmJiAhbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSAm
JiAhbV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSkgfHwgbV9jb2RlVHlwZSA9PSBFdmFsQ29k
ZSkKICAgICAgICAgc3ltYm9sVGFibGUoKS5jbGVhcigpOwpAQCAtMTI3Niw5ICsxMjY1LDcgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQp
CiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMo
KS5zaXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBtX2Nv
ZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUo
KSk7Ci0jZW5kaWYKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVk
T3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMg
OiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3Qt
PmluZGV4KCkpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJv
cGVydHkpKTsKQEAgLTE0NDAsOSArMTQyNyw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9i
YWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxF
KElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rp
b24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIFZhbHVlUHJvZmlsZSogcHJv
ZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShyZXF1aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNv
bHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChwcm9wRHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
YWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE0OTAsOSArMTQ3NSw3IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgIG1fY29k
ZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2Vu
ZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIFZh
bHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShyZXF1aXJlc0R5bmFtaWND
aGVja3MgPyBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wRHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE1MTEsOSArMTQ5NCw3
IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNZXRob2RDaGVjaygKIAogUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0
ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7Ci0jaWYgRU5BQkxFKElO
VEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9u
KGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKIAogICAgIFZhbHVlUHJvZmlsZSogcHJv
ZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9nZXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwpAQCAtMTUzOSw5ICsxNTIwLDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBcgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYg
cHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikK
ICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlv
bnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTU1Nyw5ICsxNTM2
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogCiBSZWdpc3Rl
cklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFz
ZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lm
IEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJ
bnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgCiAgICAgZW1p
dE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5p
bmRleCgpKTsKQEAgLTE4NDgsNyArMTgyNSwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENhbGwoCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkp
OyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0
CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9j
ay0+YWRkTExJbnRDYWxsTGlua0luZm8oKSk7CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZCgwKTsKKyNlbmRpZgogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAo
ZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUg
PSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKQEAgLTE5NTIsNyArMTkz
MywxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7
IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucmVn
aXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQorICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0luZm8o
KSk7CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkg
ewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3Bf
Y2FsbF9wdXRfcmVzdWx0KTsKQEAgLTIyMTMsNyArMjE5OCwxMSBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENhdGNoCiB7CiAgICAgbV91c2VzRXhjZXB0aW9ucyA9IHRydWU7
CiAjaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSGFuZGxlckluZm8gaW5m
byA9IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0
aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfY2F0Y2gpKSB9OworI2Vsc2UK
ICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAs
IDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VT
Y29wZURlcHRoLCBDb2RlTG9jYXRpb25MYWJlbCgpIH07CisjZW5kaWYKICNlbHNlCiAgICAgSGFu
ZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0
aCB9OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTA2MjAzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNCw5ICs2
MDQsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgVU5VU0VEX1BBUkFNKG5vZGVJbmRleCk7
CiAgICAgICAgIAotICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBtX2lubGluZVN0YWNr
VG9wLT5tX3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlSW5kZXgpOwotICAgICAgICBBU1NFUlQocHJvZmlsZSk7Ci0gICAgICAgIFByZWRpY3RlZFR5
cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOworICAg
ICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2stPnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChieXRlY29k
ZUluZGV4KTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCiAgICAgICAgIHByaW50Zigi
RHluYW1pYyBbQCV1LCBiYyMldV0gcHJlZGljdGlvbjogJXNcbiIsIG5vZGVJbmRleCwgYnl0ZWNv
ZGVJbmRleCwgcHJlZGljdGlvblRvU3RyaW5nKHByZWRpY3Rpb24pKTsKICNlbmRpZgpAQCAtMTA0
MSw2ICsxMDM5LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoYm9vbAog
ICAgIAogICAgIC8vIElmIHdlIGdldCBoZXJlIHRoZW4gaXQgbG9va3MgbGlrZSB3ZSBzaG91bGQg
ZGVmaW5pdGVseSBpbmxpbmUgdGhpcyBjb2RlLiBQcm9jZWVkCiAgICAgLy8gd2l0aCBwYXJzaW5n
IHRoZSBjb2RlIHRvIGdldCBieXRlY29kZSwgc28gdGhhdCB3ZSBjYW4gdGhlbiBwYXJzZSB0aGUg
Ynl0ZWNvZGUuCisgICAgLy8gTm90ZSB0aGF0IGlmIExMSW50IGlzIGVuYWJsZWQsIHRoZSBieXRl
Y29kZSB3aWxsIGFsd2F5cyBiZSBhdmFpbGFibGUuIEFsc28gbm90ZQorICAgIC8vIHRoYXQgaWYg
TExJbnQgaXMgZW5hYmxlZCwgd2UgbWF5IGlubGluZSBhIGNvZGUgYmxvY2sgdGhhdCBoYXMgbmV2
ZXIgYmVlbiBKSVR0ZWQKKyAgICAvLyBiZWZvcmUhCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBtX2NvZGVCbG9ja0NhY2hlLmdldChDb2RlQmxvY2tLZXkoZXhlY3V0YWJsZSwga2luZCksIGV4
cGVjdGVkRnVuY3Rpb24tPnNjb3BlKCkpOwogICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CkBAIC0xNzQxLDcgKzE3NDIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpw
YXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLCBtX2N1cnJlbnRJbmRleCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAg
IGlmIChtZXRob2RDYWxsU3RhdHVzLmlzU2V0KCkKLSAgICAgICAgICAgICAgICAmJiAhZ2V0QnlJ
ZFN0YXR1cy5pc1NldCgpCisgICAgICAgICAgICAgICAgJiYgIWdldEJ5SWRTdGF0dXMud2FzU2Vl
bkluSklUKCkKICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJv
ZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKSB7CiAgICAgICAgICAg
ICAgICAgLy8gSXQncyBtb25vbW9ycGhpYyBhcyBmYXIgYXMgd2UgY2FuIHRlbGwsIHNpbmNlIHRo
ZSBtZXRob2RfY2hlY2sgd2FzIGxpbmtlZAogICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGUgc2xv
dyBwYXRoIChpLmUuIHRoZSBub3JtYWwgZ2V0X2J5X2lkKSBuZXZlciBmaXJlZC4KQEAgLTE4MTAs
NyArMTgxMSw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKIAog
ICAgICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X2lkKTsKICAgICAgICAgfQotICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZDogeworICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CiAgICAgICAgICAgICBOb2RlSW5kZXggdmFs
dWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBO
b2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAg
ICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5t
X2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kXTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24g
MTA2MjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAko
d29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw4IEBAIGlubGluZSBib29sIGNhbkNvbXBpbGVP
cGNvZGUoT3Bjb2RlSUQgb3AKICAgICBjYXNlIG9wX3B1dF9zY29wZWRfdmFyOgogICAgIGNhc2Ug
b3BfZ2V0X2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgIGNhc2Ugb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsOgogICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXI6CiAgICAgY2FzZSBvcF9wdXRfZ2xv
YmFsX3ZhcjoKICAgICBjYXNlIG9wX2ptcDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDEwNjIwMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNiArNDgsMjEgQEAgdm9pZCBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgdWludDMyX3QgZXhpdEluZGV4ID0gZ2xvYmFsRGF0YS0+b3NyRXhpdEluZGV4Owog
ICAgIE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2stPm9zckV4aXQoZXhpdEluZGV4KTsKICAgICAK
KyAgICAvLyBNYWtlIHN1cmUgYWxsIGNvZGUgb24gb3VyIGlubGluZSBzdGFjayBpcyBKSVQgY29t
cGlsZWQuIFRoaXMgaXMgbmVjZXNzYXJ5IHNpbmNlCisgICAgLy8gd2UgbWF5IG9wdCB0byBpbmxp
bmUgYSBjb2RlIGJsb2NrIGV2ZW4gYmVmb3JlIGl0IGhhZCBldmVyIGJlZW4gY29tcGlsZWQgYnkg
dGhlCisgICAgLy8gSklULCBidXQgb3VyIE9TUiBleGl0IGluZnJhc3RydWN0dXJlIGN1cnJlbnRs
eSBvbmx5IHdvcmtzIGlmIHRoZSB0YXJnZXQgb2YgdGhlCisgICAgLy8gT1NSIGV4aXQgaXMgSklU
IGNvZGUuIFRoaXMgY291bGQgYmUgY2hhbmdlZCBzaW5jZSB0aGVyZSBpcyBub3RoaW5nIHBhcnRp
Y3VsYXJseQorICAgIC8vIGhhcmQgYWJvdXQgZG9pbmcgYW4gT1NSIGV4aXQgaW50byB0aGUgaW50
ZXJwcmV0ZXIsIGJ1dCBmb3Igbm93IHRoaXMgc2VlbXMgdG8gbWFrZQorICAgIC8vIHNlbnNlIGlu
IHRoYXQgaWYgd2UncmUgT1NSIGV4aXRpbmcgZnJvbSBpbmxpbmVkIGNvZGUgb2YgYSBERkcgY29k
ZSBibG9jaywgdGhlbgorICAgIC8vIHByb2JhYmx5IGl0J3MgYSBnb29kIHNpZ24gdGhhdCB0aGUg
dGhpbmcgd2UncmUgZXhpdGluZyBpbnRvIGlzIGhvdC4gRXZlbiBtb3JlCisgICAgLy8gaW50ZXJl
c3RpbmdseSwgc2luY2UgdGhlIGNvZGUgd2FzIGlubGluZWQsIGl0IG1heSBuZXZlciBvdGhlcndp
c2UgZ2V0IEpJVAorICAgIC8vIGNvbXBpbGVkIHNpbmNlIHRoZSBhY3Qgb2YgaW5saW5pbmcgaXQg
bWF5IGVuc3VyZSB0aGF0IGl0IG90aGVyd2lzZSBuZXZlciBydW5zLgorICAgIGZvciAoQ29kZU9y
aWdpbiBjb2RlT3JpZ2luID0gZXhpdC5tX2NvZGVPcmlnaW47IGNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lOyBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlcikg
eworICAgICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSkKKyAgICAgICAgICAgIC0+YmFzZWxpbmVD
b2RlQmxvY2tGb3IoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmlzQ2FsbCA/IENvZGVGb3JD
YWxsIDogQ29kZUZvckNvbnN0cnVjdCkKKyAgICAgICAgICAgIC0+aml0Q29tcGlsZSgqZ2xvYmFs
RGF0YSk7CisgICAgfQorICAgIAogICAgIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5ID0g
MDsKICAgICBpZiAoZXhpdC5tX3JlY292ZXJ5SW5kZXgpCiAgICAgICAgIHJlY292ZXJ5ID0gJmNv
ZGVCbG9jay0+c3BlY3VsYXRpb25SZWNvdmVyeShleGl0Lm1fcmVjb3ZlcnlJbmRleCAtIDEpOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZp
c2lvbiAxMDYyMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUgIkRGR1JlcGF0Y2guaCIKKyNp
bmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgi
CiAjaW5jbHVkZSAiSW5saW5lQVNNLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTY3
Myw1MCArNjc0LDYgQEAgc2l6ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cgog
ICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiB9CiAKLUVuY29kZWRKU1Zh
bHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOwotRW5jb2RlZEpTVmFs
dWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVj
U3RhdGUqKTsKLQotI2lmIENQVShYODZfNjQpCi1hc20gKAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJ
TkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAi
OiIgIlxuIgotICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCi0gICAgIm1vdiAlcjEzLCAlcmRp
XG4iCi0gICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVy
blZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQVShYODYpCi1hc20gKAotIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9T
WU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0
Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4iCi0g
ICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCi0gICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NB
VElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbGlm
IENQVShBUk1fVEhVTUIyKQotYXNtICgKLSIudGV4dCIgIlxuIgotIi5hbGlnbiAyIiAiXG4iCi0i
Lmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1ISURF
X1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi0iLnRodW1iIiAiXG4iCi0iLnRo
dW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIK
LVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibGRy
IHI1LCBbcjUsICMtNDBdIiAiXG4iCi0gICAgImNweSByMCwgcjUiICJcbiIKLSAgICAiYiAiIFNZ
TUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0
ZSkgIlxuIgotKTsKLSNlbmRpZgotCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhv
c3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwotICAgIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7Ci0gICAgCi0gICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1
ZSk7Ci19Ci0KIHN0YXRpYyB2b2lkKiBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxs
ZWUsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAg
RXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMDYyMDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODM3LDcgKzgzNyw3
IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKICAgICAgICAgc2V0
SGlnaFdhdGVyTWFyayhtYXgocHJvcG9ydGlvbmFsQnl0ZXMsIG1fbWluQnl0ZXNQZXJDeWNsZSkp
OwogICAgIH0KICAgICBKQVZBU0NSSVBUQ09SRV9HQ19FTkQoKTsKLQorICAgIAogICAgICgqbV9h
Y3Rpdml0eUNhbGxiYWNrKSgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
CShyZXZpc2lvbiAxMDYyMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTVmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVj
dEl0ZXJhdG9yOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBN
YXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAgICBjbGFzcyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3Mg
VVN0cmluZzsKQEAgLTEzNSwxMSArMTM2LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMp
OwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNs
YXNzIE1hcmtlZFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBCdW1wU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTbG90Vmlz
aXRvcjsKLSAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKIAogICAgICAgICBzaXplX3Qg
d2F0ZXJNYXJrKCk7CiAgICAgICAgIHNpemVfdCBoaWdoV2F0ZXJNYXJrKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDEwNjIwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMwNCw3ICszMDQsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRy
ZW4oCiAjZW5kaWYKIAogICAgIEFTU0VSVChIZWFwOjppc01hcmtlZChjZWxsKSk7Ci0KKyAgICAK
ICAgICBpZiAoaXNKU1N0cmluZyhjZWxsKSkgewogICAgICAgICBKU1N0cmluZzo6dmlzaXRDaGls
ZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJu
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lv
biAxMDYyMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSGVh
cDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKK2NsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsKIGNsYXNzIFNsb3RWaXNpdG9y
OwogCkBAIC04Nyw2ICs4OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGZyZWVCbG9ja3MoTWFya2Vk
QmxvY2sqIGhlYWQpOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgCiAgICAgdm9pZCogYWxsb2NhdGVTbG93Q2FzZShTaXplQ2xhc3MmKTsK
ICAgICB2b2lkKiB0cnlBbGxvY2F0ZUhlbHBlcihNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CiAg
ICAgdm9pZCogdHJ5QWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24g
MTA2MjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDkgQEAgbmFtZXNwYWNlIEpTQyAgewogI2lm
IEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgSW5zdHJ1Y3Rpb24qIHJldHVyblZQQygpIGNv
bnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10udlBDKCk7IH0KICNlbmRp
ZgorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBj
b25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPih0aGlzW1JlZ2lzdGVyRmls
ZTo6QXJndW1lbnRDb3VudF0udGFnKCkpOyB9CisjZW5kaWYKIAogICAgICAgICB2b2lkIHNldENh
bGxlckZyYW1lKENhbGxGcmFtZSogY2FsbGVyRnJhbWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIq
Pih0aGlzKVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXSA9IGNhbGxlckZyYW1lOyB9CiAgICAg
ICAgIHZvaWQgc2V0U2NvcGVDaGFpbihTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikgeyBzdGF0
aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0gPSBzY29w
ZUNoYWluOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEwNjIwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcg
KzY5LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNlbmRpZgogCi0jZGVmaW5lIFdURl9VU0VfR0ND
X0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAoRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVU
RVIpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKKyNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURf
R09UT19XT1JLQVJPVU5EICgoRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVO
QUJMRShMTElOVCkpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0
ZDsKIApAQCAtNTQ3LDE3ICs1NDcsNDMgQEAgSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKIHsK
IH0KIAotdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShib29sIGNhblVzZUpJVCkKK0ludGVy
cHJldGVyOjp+SW50ZXJwcmV0ZXIoKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVS
UFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICBk
ZWxldGVbXSBtX29wY29kZVRhYmxlOworI2VuZGlmCit9CisKK3ZvaWQgSW50ZXJwcmV0ZXI6Omlu
aXRpYWxpemUoTExJbnQ6OkRhdGEqIGxsaW50RGF0YSwgYm9vbCBjYW5Vc2VKSVQpCit7CisgICAg
VU5VU0VEX1BBUkFNKGxsaW50RGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKGNhblVzZUpJVCk7Cisj
aWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNp
ZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisgICAgLy8gSGF2aW5nIExMSW50
IGVuYWJsZWQsIGJ1dCBub3QgYmVpbmcgYWJsZSB0byB1c2UgdGhlIEpJVCwgYW5kIG5vdCBoYXZp
bmcKKyAgICAvLyBhIGNvbXB1dGVkIGdvdG8gaW50ZXJwcmV0ZXIsIGlzIG5vdCBzdXBwb3J0ZWQu
IE5vdCBiZWNhdXNlIHdlIGNhbm5vdAorICAgIC8vIHN1cHBvcnQgaXQsIGJ1dCBiZWNhdXNlIEkg
ZGVjaWRlZCB0byBkcmF3IHRoZSBsaW5lIGF0IHRoZSBudW1iZXIgb2YKKyAgICAvLyBwZXJtdXRh
dGlvbnMgb2YgZXhlY3V0aW9uIGVuZ2luZXMgdGhhdCBJIHdhbnRlZCB0aGlzIGNvZGUgdG8gZ3Jv
ay4KKyAgICBBU1NFUlQoY2FuVXNlSklUKTsKKyNlbmRpZgogICAgIGlmIChjYW5Vc2VKSVQpIHsK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bjb2RlVGFibGUgPSBsbGludERhdGEtPm9w
Y29kZU1hcCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytp
KQorICAgICAgICAgICAgbV9vcGNvZGVJRFRhYmxlLmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0
aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworI2Vsc2UKICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBw
cmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0aW5hdGlvbnMgZm9yIG9wY29kZXMuCiAgICAgICAg
IAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAg
ICAgICAgICBPcGNvZGUgb3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KGkpKTsKICAgICAgICAgICAgIG1fb3Bjb2RlVGFibGVbaV0gPSBvcGNvZGU7CiAg
ICAgICAgIH0KKyNlbmRpZgogICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAg
ICBtX29wY29kZVRhYmxlID0gbmV3IE9wY29kZVtudW1PcGNvZGVJRHNdOworI2VuZGlmCiAgICAg
ICAgIHByaXZhdGVFeGVjdXRlKEluaXRpYWxpemVBbmRSZXR1cm4sIDAsIDApOwogICAgICAgICAK
ICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKQEAgLTU2Niw3
ICs1OTIsNiBAQCB2b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKGJvb2wgY2FuVXNlCiAgICAg
ICAgIG1fZW5hYmxlZCA9IHRydWU7CiAgICAgfQogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2Fu
VXNlSklUKTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9lbmFibGVkID0gdHJ1ZTsK
ICNlbHNlCkBAIC02NjcsOSArNjkyLDExIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3Rl
cnMoQ2FsbEZyYW0KIAogYm9vbCBJbnRlcnByZXRlcjo6aXNPcGNvZGUoT3Bjb2RlIG9wY29kZSkK
IHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09N
UFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoTExJ
TlQpCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybiBvcGNvZGUgPj0gMCAmJiBz
dGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSkgPD0g
b3BfZW5kOworI2VuZGlmCiAgICAgcmV0dXJuIG9wY29kZSAhPSBIYXNoVHJhaXRzPE9wY29kZT46
OmVtcHR5VmFsdWUoKQogICAgICAgICAmJiAhSGFzaFRyYWl0czxPcGNvZGU+Ojppc0RlbGV0ZWRW
YWx1ZShvcGNvZGUpCiAgICAgICAgICYmIG1fb3Bjb2RlSURUYWJsZS5jb250YWlucyhvcGNvZGUp
OwpAQCAtNzI2LDExICs3NTMsMTEgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVu
d2luZENhbAogICAgIC8vIGhhdmUgdG8gc3VidHJhY3QgMS4KICNpZiBFTkFCTEUoSklUKSAmJiBF
TkFCTEUoSU5URVJQUkVURVIpCiAgICAgaWYgKGNhbGxlckZyYW1lLT5nbG9iYWxEYXRhKCkuY2Fu
VXNlSklUKCkpCi0gICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9m
ZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNv
ZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMo
KSk7CiAgICAgZWxzZQogICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNv
ZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAxOwogI2VsaWYgRU5BQkxFKEpJVCkK
LSAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1l
LT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVP
ZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZWxzZQogICAgIGJ5
dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVy
blZQQygpKSAtIDE7CiAjZW5kaWYKQEAgLTUxNzAsMTAgKzUxOTcsMTAgQEAgdm9pZCBJbnRlcnBy
ZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKENhbAogICAgICAgICBieXRlY29kZU9mZnNldCA9IGNh
bGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSk7CiAj
aWYgRU5BQkxFKEpJVCkKICAgICBlbHNlCi0gICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVy
Q29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgICAg
ICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVy
RnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYKICNlbHNlCi0gICAgYnl0ZWNv
ZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0
dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2Rl
T2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAgICAg
bGluZU51bWJlciA9IGNhbGxlckNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAgc291cmNlSUQgPSBjYWxsZXJDb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDEwNjIwMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNW
YWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAj
aW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCiAKQEAgLTQ1LDYg
KzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwog
ICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwog
ICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwpAQCAtMTAwLDE5
ICsxMDIsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJbnRlcnByZXRlciB7CiAg
ICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBmcmllbmQgY2xhc3MgSklU
OwogICAgICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkQ2FsbDsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBw
dWJsaWM6CiAgICAgICAgIEludGVycHJldGVyKCk7CisgICAgICAgIH5JbnRlcnByZXRlcigpOwog
ICAgICAgICAKLSAgICAgICAgdm9pZCBpbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKTsKKyAgICAg
ICAgdm9pZCBpbml0aWFsaXplKExMSW50OjpEYXRhKiwgYm9vbCBjYW5Vc2VKSVQpOwogCiAgICAg
ICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlKCkgeyByZXR1cm4gbV9yZWdpc3RlckZpbGU7
IH0KICAgICAgICAgCiAgICAgICAgIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09N
UFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBS
RVRFUikgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlVGFibGVb
aWRdOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBpZDsKQEAgLTEyMiw3ICsxMjYsMTAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKE9wY29kZSBvcGNv
ZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBF
TkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAg
ICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7CisgICAgICAgICAgICByZXR1cm4gbV9v
cGNvZGVJRFRhYmxlLmdldChvcGNvZGUpOworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpCiAgICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7CiAgICAgICAg
ICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29kZSkpOwpAQCAtMTMyLDYgKzEz
OSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBvcGNvZGU7CiAjZW5k
aWYKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBlbmFibGVkKCkKKyAgICAgICAg
eworICAgICAgICAgICAgcmV0dXJuIG1fZW5hYmxlZDsKKyAgICAgICAgfQogCiAgICAgICAgIGJv
b2wgaXNPcGNvZGUoT3Bjb2RlKTsKIApAQCAtMTk5LDcgKzIxMSwxMCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBSZWdpc3RlckZpbGUgbV9yZWdpc3RlckZpbGU7CiAgICAgICAgIAotI2lm
IEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAg
ICAgICAgT3Bjb2RlKiBtX29wY29kZVRhYmxlOyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29kZSBm
b3IgY29tcGlsaW5nCisgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJ
RFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21waWxpbmcKKyNlbGlm
IEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICBPcGNvZGUgbV9vcGNv
ZGVUYWJsZVtudW1PcGNvZGVJRHNdOyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29t
cGlsaW5nCiAgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxl
OyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21waWxpbmcKICNlbmRpZgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUu
aAkocmV2aXNpb24gMTA2MjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1JlZ2lzdGVyRmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7CiAgICAgY2xhc3MgREZHQ29k
ZUJsb2NrczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBS
ZWdpc3RlckZpbGUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShSZWdpc3RlckZpbGUp
OwpAQCAtODEsNiArODIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJp
dmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAg
ICAgCiAgICAgICAgIGJvb2wgZ3Jvd1Nsb3dDYXNlKFJlZ2lzdGVyKik7CiAgICAgICAgIHZvaWQg
cmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CiAgICAgICAgIHZvaWQgYWRkVG9Db21taXR0ZWRCeXRl
Q291bnQobG9uZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0
dXJuVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9z
dENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisKKyNpZiBD
T01QSUxFUihHQ0MpCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJJbmxpbmVB
U00uaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVNZXRo
b2RzLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworZXh0
ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRI
b3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqKTsKKworI2lmIENQVShY
ODZfNjQpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lN
Qk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQw
KCVyMTMpLCAlcjEzXG4iCisgICAgIm1vdiAlcjEzLCAlcmRpXG4iCisgICAgImptcCAiIFNZTUJP
TF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkg
IlxuIgorKTsKKyNlbGlmIENQVShYODYpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkco
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIg
IlxuIgorICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4iCisgICAgIm1vdiAlZWRpLCA0KCVlc3Ap
XG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVy
blZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorYXNt
ICgKKyIudGV4dCIgIlxuIgorIi5hbGlnbiAyIiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklO
RyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSAiXG4iCisiLnRodW1iIiAiXG4iCisiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5D
X1BBUkFNKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4i
CisgICAgImNweSByMCwgcjUiICJcbiIKKyAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElP
TihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbmRpZgor
CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9O
IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJl
dHVyblZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDT01QSUxF
UihHQ0MpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5W
YWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxS
ZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9I
b3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBIb3N0Q2Fs
bFJldHVyblZhbHVlX2gKKyNkZWZpbmUgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKKyNpbmNsdWRl
ICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CisKKy8vIFVuZm9ydHVuYXRlbHkgdGhpcyBvbmx5IHdvcmtzIG9u
IEdDQy1saWtlIGNvbXBpbGVycy4gQW5kIGl0J3MgY3VycmVudGx5IG9ubHkgdXNlZAorLy8gYnkg
TExJbnQgYW5kIERGRywgd2hpY2ggYWxzbyBhcmUgcmVzdHJpY3RlZCB0byBHQ0MtbGlrZSBjb21w
aWxlcnMuIFdlIHNob3VsZAorLy8gcHJvYmFibHkgZml4IHRoYXQgYXQgc29tZSBwb2ludC4KKyNp
ZiBDT01QSUxFUihHQ0MpCisKKyNpZiBDQUxMSU5HX0NPTlZFTlRJT05fSVNfU1REQ0FMTAorI2Rl
ZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBDREVDTAorI2Vsc2UKKyNkZWZpbmUg
SE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04KKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsK
K2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04g
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOworfQorCisjZW5kaWYgLy8gQ09NUElMRVIoR0NDKQor
CisjZW5kaWYgLy8gSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAJKHJldmlzaW9uIDEwNjIwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw4IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3Byb2ZpbGVfd2ls
bF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9uZXdfc2NvcGUpCiAgICAgICAgIERF
RklORV9PUChvcF9wdXNoX3Njb3BlKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6
CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9w
dXRfYnlfaW5kZXgpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsKQpAQCAtNDg3LDYg
KzQ4OSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVfaW5jKQorICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFs
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcmVzb2x2ZV9nbG9iYWwpCkBAIC01MjYs
NiArNTMwLDEwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAKIEpJVENv
ZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaykK
IHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiQ29tcGlsaW5nIEpJ
VCBjb2RlIVxuIik7CisjZW5kaWYKKyAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiAg
ICAgbV9jYW5CZU9wdGltaXplZCA9IG1fY29kZUJsb2NrLT5jYW5Db21waWxlV2l0aERGRygpOwog
I2VuZGlmCkBAIC02OTAsOCArNjk4LDEyIEBAIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShD
b2RlUHRyKiBmdW4KICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBtX2NvZGVCbG9j
ay0+c3RydWN0dXJlU3R1YkluZm8obV9tZXRob2RDYWxsQ29tcGlsYXRpb25JbmZvW2ldLnByb3Bl
cnR5QWNjZXNzSW5kZXgpLmNhbGxSZXR1cm5Mb2NhdGlvbjsKICAgICB9CiAKLSNpZiBFTkFCTEUo
REZHX0pJVCkKLSAgICBpZiAobV9jYW5CZU9wdGltaXplZCkgeworI2lmIEVOQUJMRShERkdfSklU
KSB8fCBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQKKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgICAgIHx8IHRydWUKKyNlbmRpZgorICAgICAgICApIHsKICAgICAgICAgQ29t
cGFjdEpJVENvZGVNYXA6OkVuY29kZXIgaml0Q29kZU1hcEVuY29kZXI7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IG1fbGFiZWxzLnNp
emUoKTsgKytieXRlY29kZU9mZnNldCkgewogICAgICAgICAgICAgaWYgKG1fbGFiZWxzW2J5dGVj
b2RlT2Zmc2V0XS5pc1NldCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJ
KHJldmlzaW9uIDEwNjIwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBKSVRDb2RlKCkgeyB9CiAjZW5kaWYKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gSklUVHlw
ZSB7IEhvc3RDYWxsVGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsKKyAgICAgICAgZW51bSBK
SVRUeXBlIHsgTm9uZSwgSG9zdENhbGxUaHVuaywgSW50ZXJwcmV0ZXJUaHVuaywgQmFzZWxpbmVK
SVQsIERGR0pJVCB9OwogICAgICAgICAKICAgICAgICAgc3RhdGljIEpJVFR5cGUgYm90dG9tVGll
ckpJVCgpCiAgICAgICAgIHsKQEAgLTY2LDggKzY2LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgcmV0dXJuIERGR0pJVDsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3Rh
dGljIGJvb2wgaXNPcHRpbWl6aW5nSklUKEpJVFR5cGUgaml0VHlwZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gREZHSklUOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBzdGF0aWMgYm9vbCBpc0Jhc2VsaW5lQ29kZShKSVRUeXBlIGppdFR5cGUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IEludGVycHJldGVyVGh1bmsgfHwg
aml0VHlwZSA9PSBCYXNlbGluZUpJVDsKKyAgICAgICAgfQorICAgICAgICAKICNpZiBFTkFCTEUo
SklUKQogICAgICAgICBKSVRDb2RlKCkKKyAgICAgICAgICAgIDogbV9qaXRUeXBlKE5vbmUpCiAg
ICAgICAgIHsKICAgICAgICAgfQogCkBAIC03NSw2ICs4Niw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgOiBtX3JlZihyZWYpCiAgICAgICAgICAgICAsIG1faml0VHlwZShqaXRUeXBl
KQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaml0VHlwZSAhPSBOb25lKTsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciAhKCkgY29uc3QKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkocmV2aXNpb24gMTA2MjAzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMs
MTUgKzMzLDIxIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJE
RkdEcml2ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBl
PgogaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29k
ZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVC
bG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAo
IWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAg
IGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29t
cGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAg
ICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlKGdsb2JhbERhdGEsIGNvZGVCbG9jay5n
ZXQoKSwgaml0Q29kZSk7CkBAIC01NSwxMCArNjEsNyBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxl
SWZBcHByb3ByaWF0ZShKU0dsCiAgICAgICAgIH0KICAgICAgICAgaml0Q29kZSA9IEpJVDo6Y29t
cGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpKTsKICAgICB9Ci0jaWYgIUVOQUJMRShP
UENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0
ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bw
b3J0dW5pdHkoKTsKLSNlbmRpZgorICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJk
aW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwogICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtNjYsOSAr
NjksMTQgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbAogCiBpbmxp
bmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBq
aXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hh
cmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQog
eworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxs
cygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlw
ZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21w
aWxlRnVuY3Rpb24oZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlLCBqaXRDb2Rl
V2l0aEFyaXR5Q2hlY2spOwpAQCAtODMsMTEgKzkxLDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGls
ZUZ1bmN0aW9uSWZBcHByb3ByaQogICAgICAgICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNv
bXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgJmppdENvZGVXaXRoQXJpdHlDaGVj
ayk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNv
ZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhh
bmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7Ci0jZW5kaWYKLSAgICAKKyAgICBj
b2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgY29k
ZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAg
CiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4
Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEwNjIwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAg
RXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3coSlNHbG9iYWxEYQogCiBFeGNlcHRpb25IYW5k
bGVyIGppdFRocm93KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhlY1N0YXRlKiBjYWxsRnJh
bWUsIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIFJldHVybkFkZHJlc3NQdHIgZmF1bHRMb2NhdGlv
bikKIHsKLSAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhj
ZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGZhdWx0
TG9jYXRpb24pKTsKKyAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFt
ZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0
KGNhbGxGcmFtZSwgZmF1bHRMb2NhdGlvbikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTA2MjAzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NDYsNiArMTQ0
Niw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV9pZF8KICAgICBQdXRQ
cm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7
CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwog
ICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CisgICAgCiAgICAgYXNPYmplY3QoYmFz
ZVZhbHVlKS0+cHV0RGlyZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgc3RhY2tG
cmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwgc2xvdCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBAIC0xOTMxLDcgKzE5
MzIsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAgdW5z
aWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNrRnJhbWUuYXJnc1swXS5pbnQzMigpOwogCiAjaWYg
RU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmludGYoIkVudGVyZWQgb3B0aW1pemVfZnJv
bV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50
ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jay0+aml0
RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigp
LCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBwcmludGYoIiVw
OiBFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJl
b3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9
ICV1XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJs
b2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlv
bkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1p
emVkUmVwbGFjZW1lbnQoKSkgewpAQCAtMjE4Niw0NSArMjE4NywxMyBAQCBERUZJTkVfU1RVQl9G
VU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5s
aW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0
ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKLXsKLSAg
ICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpOwot
ICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICBDb2RlQmxvY2sqIG5l
d0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZv
cihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAgICAvLyBUaGlzIGVuc3VyZXMgZW5v
dWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBw
YXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhjYWxsRnJh
bWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2Rl
QmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBB
U1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFt
ZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUg
YW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZp
bmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0g
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVnaXN0ZXIqIHNyYyA9IGNhbGxGcmFt
ZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJz
KCkgKyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGludCBlbmQgPSAtQ2FsbEZyYW1lOjpvZmZz
ZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZvciAoaSA9IC0xOyBpID49
IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07Ci0KLSAgICBlbmQgLT0gZGVsdGE7
Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5l
ZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShk
c3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1lIDw9IHJlZ2lzdGVyRmlsZS0+ZW5k
KCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9O
KHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1F
KHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNh
bGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0Zvcihj
YWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CisgICAgQ2Fs
bEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2Fs
bEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOwogICAgIGlmICgh
bmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZv
aWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0
YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKIApAQCAtMjIzNyw3
ICsyMjA2LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAogCiAg
ICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENh
bGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJh
bWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBDYWxsRnJhbWUqIG5ld0Nh
bGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNr
RnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBpZiAoIW5ld0NhbGxG
cmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lkKj4oc3Rh
Y2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVTdGFja092ZXJm
bG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDEwNjIwMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgSlNJbnRlcmZhY2VKSVRfaAogI2RlZmluZSBKU0lu
dGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVk
ZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcu
aCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNp
bmNsdWRlICJSZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENvbW1v
bl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2RlZmluZSBMTElOVF9FWEVDVVRJT05fVFJB
Q0lORyAwCisjZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFDSU5HIDAKKworI2VuZGlmIC8vIExMSW50
Q29tbW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TExJbnREYXRhLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJJbnN0cnVjdGlv
bi5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGNvZGUu
aCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK0RhdGE6OkRhdGEoKQor
ICAgIDogbV9leGNlcHRpb25JbnN0cnVjdGlvbnMobmV3IEluc3RydWN0aW9uW21heE9wY29kZUxl
bmd0aCArIDFdKQorICAgICwgbV9vcGNvZGVNYXAobmV3IE9wY29kZVtudW1PcGNvZGVJRHNdKQor
eworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAg
ICAgICBtX2V4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KCZsbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lKTsKKyNkZWZpbmUgT1BD
T0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBtX29wY29kZU1hcFtvcGNvZGVdID0gYml0d2lzZV9j
YXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUpOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENP
REVfRU5UUlkpOworI3VuZGVmIE9QQ09ERV9FTlRSWQorfQorCitEYXRhOjp+RGF0YSgpCit7Cisg
ICAgZGVsZXRlW10gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgZGVsZXRlW10gbV9vcGNv
ZGVNYXA7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5B
QkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RGF0YV9oCisjZGVmaW5lIExMSW50RGF0
YV9oCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKwor
bmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50
IHsKKworI2lmIEVOQUJMRShMTElOVCkKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIERhdGEo
KTsKKyAgICB+RGF0YSgpOworICAgIAorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVj
dGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOwor
ICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICByZXR1
cm4gbV9vcGNvZGVNYXA7CisgICAgfQorcHJpdmF0ZToKKyAgICBJbnN0cnVjdGlvbiogbV9leGNl
cHRpb25JbnN0cnVjdGlvbnM7CisgICAgT3Bjb2RlKiBtX29wY29kZU1hcDsKK307CisjZWxzZSAv
LyBFTkFCTEUoTExJTlQpCisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlh
Z25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5n
LW5vcmV0dXJuIgorI2VuZGlmCisKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIEluc3RydWN0
aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9w
Y29kZU1hcCgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfQorfTsKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnREYXRhX2gKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5
cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVk
ZSAiSklUQ29kZS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkxMSW50
VGh1bmtzLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpJVENv
ZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjaykKK3sKKyAgICBp
ZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZv
ckNhbGwpIHsKKyAgICAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3By
b2xvZ3VlKSkpKTsKKyAgICAgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hl
Y2spKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChr
aW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9z
dEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X2FyaXR5X2NoZWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisg
ICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGUo
Z2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3Ip
LCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IGdsb2Jh
bERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3Ip
LmNvZGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENv
ZGVGb3JDb25zdHJ1Y3QpOworICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJ
U3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJ
bnRlcnByZXRlclRodW5rKTsKKyAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHVi
KGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7Cit9
CisKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRD
b2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAg
ICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJl
Zjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZsbGludF9ldmFsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIo
ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKK30K
Kwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJ
VENvZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7Cisg
ICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJ
U3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1
bmspOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJM
RShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9p
bnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50
cnlwb2ludHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVudHJ5
cG9pbnRzX2gKKyNkZWZpbmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXph
dGlvbktpbmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV2YWxDb2RlQmxvY2s7Citj
bGFzcyBKSVRDb2RlOworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOworY2xhc3MgUHJvZ3JhbUNvZGVC
bG9jazsKKworbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQo
SlNHbG9iYWxEYXRhJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgSklUQ29kZSYsIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjayk7Cit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xv
YmFsRGF0YSYsIEpJVENvZGUmKTsKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxE
YXRhJiwgSklUQ29kZSYpOworCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgRXZhbENvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAg
Z2V0RXZhbEVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK2lubGluZSB2b2lk
IGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9ncmFtQ29kZUJsb2Nr
KiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRQcm9ncmFtRW50cnlwb2ludChnbG9iYWxE
YXRhLCBqaXRDb2RlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludEVudHJ5cG9pbnRzX2gKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9u
cy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkxMSW50RXhjZXB0aW9ucy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQ2Fs
bEZyYW1lLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24u
aCIKKyNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIK
KyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgTExJbnQgeworCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUq
IGV4ZWMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERh
dGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhj
ZXB0aW9uICVzLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2Vu
ZGlmCisgICAgZ2VuZXJpY1Rocm93KAorICAgICAgICBnbG9iYWxEYXRhLCBleGVjLT5jYWxsZXJG
cmFtZSgpLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sCisgICAgICAgIGV4ZWMtPmNhbGxlckZyYW1l
KCktPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChleGVjLT5jYWxsZXJGcmFtZSgpLCBleGVj
LT5yZXR1cm5QQygpKSk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3du
RXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0
YSgpLmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKworSW5zdHJ1Y3Rpb24q
IHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAg
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElO
VF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChyZXR1
cm5Ub1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNl
bmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNl
cHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOwor
ICAgIAorICAgIHJldHVybiBnbG9iYWxEYXRhLT5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rp
b25zKCk7Cit9CisKK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rp
b24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxE
YXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4
Y2VwdGlvbiAlcyAoY2FsbFRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2Ny
aXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGds
b2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50
X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNf
aAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJh
cy5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhl
Y1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisvLyBU
aHJvdyB0aGUgY3VycmVudGx5IGFjdGl2ZSBleGNlcHRpb24gaW4gdGhlIGNvbnRleHQgb2YgdGhl
IGNhbGxlcidzIGNhbGwgZnJhbWUuCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVj
U3RhdGUqKTsKKworLy8gVGVsbHMgeW91IHdoZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQgdG8g
cmV0dXJuLXRvLXRocm93LCBhZnRlciB5b3UndmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBpbmZv
cm1hdGlvbiBuZWVkZWQgdG8gdGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiByZXR1
cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0aGUg
Y3VycmVudCBQQyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVz
IHlvdSBhIFBDCisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8s
IHdoaWNoIHdoZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUg
eW91IGFuICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisv
LyBleGNlcHRpb24gaGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3Ig
ZXhjZXB0aW9uIGhhbmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4g
dGhhdCBQQyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRo
cmVhZCBleGNlcHRpb24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1
c2VkIGJ5CisvLyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhl
Y1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dp
bmcgdG8gYSBjYWxsIHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1
Y3Rpb24qKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFC
TEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludEV4Y2VwdGlvbnNfaApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEhlbHBl
cnMuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2lu
Y2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1
ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2lu
Y2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZh
dGlvbi5oIgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5j
bHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTExJ
bnRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisK
KyNkZWZpbmUgTExJTlRfT1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRSKHBjW2luZGV4XS51Lm9w
ZXJhbmQpKQorI2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5v
cGVyYW5kKSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsg
ICAgICAgXAorICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgICAgIHZvaWQqIGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgICAgIHZvaWQqIGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgfSBwYWlyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgaW50NjRfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9
IF9fcnRfdTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0
X3UucGFpci5hID0gZmlyc3Q7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3Uu
cGFpci5iID0gc2Vjb25kOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19y
dF91Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQor
CisjZGVmaW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykKKwor
I2RlZmluZSBMTElOVF9USFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fdF9nbG9iYWxEYXRhID0gZXhlYy0+
Z2xvYmFsRGF0YSgpOyAgICAgICAgXAorICAgICAgICBfX3RfZ2xvYmFsRGF0YS5leGNlcHRpb24g
PSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgXAorICAgICAgICBwYyA9IHJldHVyblRv
VGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBM
TElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
IGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmds
b2JhbERhdGEoKS5leGNlcHRpb24pKSB7ICAgXAorICAgICAgICAgICAgcGMgPSByZXR1cm5Ub1Ro
cm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9FTkRfSU1Q
TCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQor
CisjZGVmaW5lIExMSU5UX0VORCgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExM
SU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFs
c2UpCisKKyNkZWZpbmUgTExJTlRfQlJBTkNIKG9wY29kZSwgY29uZGl0aW9uKSBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYm9vbCBfX2JfY29uZGl0aW9uID0gKGNvbmRpdGlv
bik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9f
Yl9jb25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIHBjICs9IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsg
ICAgICAgIFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bj
b2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwo
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxl
IChmYWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAg
ICAgXAorICAgICAgICBKU1ZhbHVlIF9fcl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAor
ICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAg
ICBMTElOVF9PUCgxKSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAgXAorICAgICAgICBMTElO
VF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNl
KQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcGNvZGUsIHZhbHVlKSBkbyB7ICAg
ICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcnBfcmV0dXJuVmFsdWUgPSAodmFsdWUp
OyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0g
X19ycF9yZXR1cm5WYWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwY1tP
UENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IFwKKyAg
ICAgICAgICAgIEpTVmFsdWU6OmVuY29kZShfX3JwX3JldHVyblZhbHVlKTsgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NB
TExfRU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RXTygoY2FsbFRhcmdl
dCksIChleGVjKSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBleGNlcHRp
b25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3Rf
ZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBJbnN0cnVjdGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fY3RfZ2xvYmFsRGF0YSA9IChfX2N0
X2V4ZWMpLT5nbG9iYWxEYXRhKCk7ICAgICAgXAorICAgICAgICBfX2N0X2dsb2JhbERhdGEuZXhj
ZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICBM
TElOVF9DQUxMX0VORF9JTVBMKF9fY3RfZXhlYywgY2FsbFRvVGhyb3coX19jdF9leGVjLCBfX2N0
X3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0NIRUNL
X0VYQ0VQVElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBFeGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jY2VfcGMgPSAocGMpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoX19jY2Vf
ZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2NjZV9leGVj
LCBfX2NjZV9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FM
TF9SRVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgRXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMgPSAocGMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9pZCogX19jcl9j
YWxsVGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19jcl9leGVjLT5jYWxsZXJGcmFtZSgp
LCBfX2NyX3BjKTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NyX2V4ZWMsIF9f
Y3JfY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKwor
ZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRl
KiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQorewor
ICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTog
JWQ6ICVkXG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhl
YywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2Nr
KCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRh
KCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAg
ZnJvbVdoZXJlLAorICAgICAgICAgICBvcGVyYW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51
Lm9wZXJhbmQpOworICAgIExMSU5UX0VORCgpOworfQorCitleHRlcm4gIkMiIEhlbHBlclJldHVy
blR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMs
IGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElO
VF9PUF9DKG9wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7
CisgICAgICAgICAgICB1aW50MzJfdCB0YWc7CisgICAgICAgICAgICB1aW50MzJfdCBwYXlsb2Fk
OworICAgICAgICB9IGJpdHM7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlIGFzVmFsdWU7CisgICAg
fSB1OworICAgIHUuYXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgcHJpbnRm
KCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWQ6ICUw
OHg6JTA4eCIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVj
LAorICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2so
KS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEo
KS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBm
cm9tV2hlcmUsCisgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRdLnUu
b3BlcmFuZCwKKyAgICAgICAgICAgdS5iaXRzLnRhZywKKyAgICAgICAgICAgdS5iaXRzLnBheWxv
YWQpOworI2lmbmRlZiBOREVCVUcKKyAgICBwcmludGYoIjogJXMiLCB2YWx1ZS5kZXNjcmlwdGlv
bigpKTsKKyNlbmRpZgorICAgIHByaW50ZigiXG4iKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpCit7CisgICAgcHJpbnRmKCIlcCAvICVw
OiBpbiBwcm9sb2d1ZS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQor
eworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOwor
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxl
KCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0
ZWNvZGVGb3Ioa2luZCk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAl
cCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNh
bGxlZVJlZ2lzdGVycyA9ICV1LlxuIiwKKyAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBjb21t
ZW50LCBjYWxsZWUsIGV4ZWN1dGFibGUsCisgICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1WYXJz
LCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lz
dGVycyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zv
cl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBwcm9sb2d1
ZSIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1
bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JDb25zdHJ1
Y3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0
eUNoZWNrX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2Fs
bCBhcml0eSBjaGVjayIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQoreworICAgIHRy
YWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IGFyaXR5IGNoZWNrIiwgQ29kZUZv
ckNvbnN0cnVjdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRy
YWNlKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgIiwKKyAgICAg
ICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0
YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpKSk7CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50ZigiJXMsICIsIG9wY29kZU5h
bWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5v
cGNvZGUpXSk7CisjZWxzZQorICAgIHByaW50Zigib3AjJXUsICIsIGV4ZWMtPmdsb2JhbERhdGEo
KS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpKTsKKyNlbmRpZgorICAg
IHByaW50Zigic2NvcGUgJXBcbiIsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2UpCit7CisgICAgcHJpbnRm
KCIlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJldHVybiBQ
QyBpcyAlcFxuIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4
ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9j
aygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAg
IGV4ZWMtPnJldHVyblBDKCkudmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2lubGlu
ZSBib29sIHNob3VsZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gWW91IGNhbiBtb2Rp
ZnkgdGhpcyB0byB0dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0aGUgd29ybGQu
CisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKTsKK30KKworZW51bSBF
bnRyeUtpbmQgeyBQcm9sb2d1ZSwgQXJpdHlDaGVjayB9Oworc3RhdGljIEhlbHBlclJldHVyblR5
cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBjb25zdCBjaGFyICpuYW1lLCBFbnRyeUtpbmQga2luZCkKK3sKKyNpZiBFTkFC
TEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgJXMgd2l0aCBleGVj
dXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIG5hbWUsIGNvZGVCbG9jay0+bGxpbnRFeGVj
dXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7
CisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5U
X1JFVFVSTl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21w
aWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQor
ICAgICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5k
aWYKKyAgICB9CisgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgaWYgKGtpbmQgPT0gUHJv
bG9ndWUpCisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRDb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7CisgICAgQVNTRVJUKGtpbmQgPT0g
QXJpdHlDaGVjayk7CisgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGVX
aXRoQXJpdHlDaGVjaygpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGV4ZWMpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChlbnRyeV9vc3IpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCBl
eGVjLT5jb2RlQmxvY2soKSwgImVudHJ5X29zciIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHJldHVybiBlbnRy
eU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUo
KS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9u
X2Zvcl9jYWxsIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3Jf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMs
ICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5
dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3QiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBw
YywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVk
Qnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5Q2hlY2siLCBBcml0eUNoZWNrKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICByZXR1cm4gZW50cnlP
U1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCkt
PmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOworfQorCitMTElOVF9I
RUxQRVJfREVDTChsb29wX29zcikKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMt
PmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJp
bnRmKCIlcDogRW50ZXJlZCBsb29wX29zciB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNv
ZGVCbG9jaywgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAg
CisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklU
QW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9
CisgICAgCisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgp
KSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50ZigiICAgIENv
ZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxv
Y2stPmppdFNvb24oKTsKKyAgICAKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkg
PT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIAorICAgIFZlY3RvcjxCeXRlY29kZUFuZE1h
Y2hpbmVPZmZzZXQ+IG1hcDsKKyAgICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKG1h
cCk7CisgICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2VhcmNo
PEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQsIEJ5dGVjb2RlQW5kTWFjaGluZU9m
ZnNldDo6Z2V0Qnl0ZWNvZGVJbmRleD4obWFwLmJlZ2luKCksIG1hcC5zaXplKCksIHBjIC0gY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICBBU1NFUlQobWFwcGluZyk7Cisg
ICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyAgICAKKyAgICB2
b2lkKiBqdW1wVGFyZ2V0ID0gY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3NBdE9mZnNldChtYXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQoanVt
cFRhcmdldCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOX1RXTyhqdW1wVGFyZ2V0LCBleGVjKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9P
U1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCByZXBsYWNlIHdpdGggZXhlY3V0ZUNvdW50ZXIg
PSAlZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7Cisj
ZW5kaWYKKyAgICAKKyAgICBpZiAoc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGlmICghY29k
ZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklU
X1ZFUkJPU0VfT1NSKQorICAgICAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBj
b21waWxlZC5cbiIpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgY29kZUJsb2NrLT5qaXRT
b29uKCk7CisgICAgfSBlbHNlCisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29u
KCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2Zp
bGVfY2hlY2spCit7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIkNoZWNr
aW5nIHN0YWNrIGhlaWdodCB3aXRoIGV4ZWMgPSAlcC5cbiIsIGV4ZWMpOworICAgIHByaW50Zigi
Q29kZUJsb2NrID0gJXAuXG4iLCBleGVjLT5jb2RlQmxvY2soKSk7CisgICAgcHJpbnRmKCJOdW0g
Y2FsbGVlIHJlZ2lzdGVycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVl
UmVnaXN0ZXJzKTsKKyAgICBwcmludGYoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxv
Y2soKS0+bV9udW1WYXJzKTsKKyAgICBwcmludGYoIkN1cnJlbnQgZW5kIGlzIGF0ICVwLlxuIiwg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5lbmQoKSk7Cisj
ZW5kaWYKKyAgICBBU1NFUlQoJmV4ZWMtPnJlZ2lzdGVycygpW2V4ZWMtPmNvZGVCbG9jaygpLT5t
X251bUNhbGxlZVJlZ2lzdGVyc10gPiBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJl
Z2lzdGVyRmlsZSgpLmVuZCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWV4ZWMtPmdsb2JhbERhdGEo
KS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbZXhl
Yy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7CisgICAgICAgIGV4ZWMg
PSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0
aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRl
clRocm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvd0ZvclRocm93
bkV4Y2VwdGlvbihleGVjKTsKKyAgICB9CisgICAgTExJTlRfRU5EX0lNUEwoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICBFeGVjU3RhdGUq
IG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmV4ZWMtPmds
b2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDYWxsKTsKKyAg
ICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7Cisg
ICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93
RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAg
ICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oMSkpLCBleGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdF
eGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNr
KQoreworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVj
a0ZvcihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUo
KSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMg
PSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0
aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRl
clRocm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9j
YXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAg
IExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKK3sKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAg
IHByaW50ZigiQ3JlYXRpbmcgYW4gYWN0aXZhdGlvbiwgZXhlYyA9ICVwIVxuIiwgZXhlYyk7Cisj
ZW5kaWYKKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBKU0FjdGl2YXRpb246OmNyZWF0
ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMsIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSkpOworICAgIGV4ZWMtPnNl
dFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2YXRpb24pKTsKKyAgICBM
TElOVF9SRVRVUk4oSlNWYWx1ZShhY3RpdmF0aW9uKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQoreworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNW
YWx1ZShBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpKTsKKyAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3Bl
cmFuZCkgPSBhcmd1bWVudHM7CisgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1l
bnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAgICBK
U0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAg
IAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7
CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRh
KGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlm
CisgICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgSlNWYWx1ZSBwcm90byA9IExM
SU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAocHJvdG8uaXNPYmplY3QoKSkKKyAgICAgICAg
c3RydWN0dXJlID0gYXNPYmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRh
KCkpOworICAgIGVsc2UKKyAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCkt
Pmdsb2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAKKyAgICBMTElOVF9S
RVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpCit7CisgICAgSlNWYWx1ZSB2MSA9IExM
SU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQodjEuaXNQcmltaXRpdmUoKSk7CisgICAg
TExJTlRfUkVUVVJOKHYxLnRvVGhpc09iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXdfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0
eU9iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkp
Cit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxK
U1ZhbHVlKj4oJkxMSU5UX09QKDIpKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQoreworICAgIExMSU5UX1JFVFVSTihj
b25zdHJ1Y3RBcnJheShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIocGNb
Ml0udS5vcGVyYW5kKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfcmVnZXhwKQoreworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29kZUJs
b2NrKCktPnJlZ2V4cChwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1ZhbGlk
KCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlk
IGZsYWcgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9SRVRV
Uk4oUmVnRXhwT2JqZWN0OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0
dXJlKCksIHJlZ0V4cCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvQm9v
bGVhbihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9uZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1
ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbighSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbGVzcykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVlPihl
eGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9ncmVhdGVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPGZhbHNl
PihleGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHJlX2luYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRf
T1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICsgMSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHJlX2RlYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRf
T1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gMSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcG9zdF9pbmMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJl
c3VsdCArIDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBM
TElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBq
c051bWJlcihyZXN1bHQgLSAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcikKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSkKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIoLUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpCit7CisgICAgSlNWYWx1ZSB2MSA9
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKTsKKyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50Zigi
VHJ5aW5nIHRvIGFkZCAlcyIsIHYxLmRlc2NyaXB0aW9uKCkpOworICAgIHByaW50ZigiIHRvICVz
LlxuIiwgdjIuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNTdHJp
bmcoKSAmJiAhdjIuaXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4
ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9TdHJpbmcoZXhlYykpKTsKKyAgICAKKyAgICBpZiAodjEu
aXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIodjEuYXNOdW1iZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKKyAgICAKKyAgICBMTElOVF9SRVRV
Uk4oanNBZGRTbG93Q2FzZShleGVjLCB2MSwgdjIpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX211bCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJl
cihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKQoreworICAgIExM
SU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVj
KSAtIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21v
ZCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoZm1vZChMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKS50b051bWJlcihleGVjKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhl
YykpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykg
PDwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3JzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIo
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA+PiBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
dXJzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9VSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIo
ZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCkKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVj
KSAmIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2JpdG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIHwgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0
eG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KS50b0ludDMyKGV4ZWMpIF4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KQoreworICAgIExMSU5UX1JF
VFVSTihqc051bWJlcih+TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQoreworICAg
IEpTVmFsdWUgYmFzZVZhbCA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworI2lmbmRlZiBOREVC
VUcKKyAgICBUeXBlSW5mbyB0eXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VSVCgh
YmFzZVZhbC5pc09iamVjdCgpCisgICAgICAgICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVjdChi
YXNlVmFsKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgp
KTsKKyNlbmRpZgorICAgIExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4ZWMs
ICJpbnN0YW5jZW9mIiwgYmFzZVZhbCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
aW5zdGFuY2VvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRo
czo6b3BJbnN0YW5jZU9mU2xvdyhleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoNCkuanNWYWx1ZSgpKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKQoreworICAgIExMSU5UX1JFVFVSTihqc1R5cGVT
dHJpbmdGb3JWYWx1ZShleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKQoreworICAgIEpTVmFsdWUgdiA9IExM
SU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4odi5pc0Nl
bGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLmlzQm9vbGVhbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9pc19udW1iZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKS5pc051bWJlcigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9pc19zdHJpbmcpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihpc0pTU3RyaW5nKExM
SU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
aXNfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc09iamVjdFR5cGUo
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9pc19mdW5jdGlvbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5jdGlv
blR5cGUoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9pbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRo
czo6b3BJbihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKQoreworICAg
IExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlLCBDb21tb25TbG93UGF0aHM6Om9wUmVz
b2x2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApCit7CisgICAg
TExJTlRfUkVUVVJOX1BST0ZJTEVEKAorICAgICAgICBvcF9yZXNvbHZlX3NraXAsCisgICAgICAg
IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlU2tpcCgKKyAgICAgICAgICAgIGV4ZWMsCisgICAg
ICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAor
ICAgICAgICAgICAgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlIHJlc29s
dmVHbG9iYWwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBBU1NFUlQoZ2xv
YmFsT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkgPSBwY1syXS51
Lm9wZXJhbmQ7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVyZS5n
ZXQoKTsKKyAgICAKKyAgICBBU1NFUlRfVU5VU0VEKHN0cnVjdHVyZSwgc3RydWN0dXJlICE9IGds
b2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXImIGlkZW50ID0g
Y29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChn
bG9iYWxPYmplY3QpOworICAgIAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5U2xv
dChleGVjLCBpZGVudCwgc2xvdCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90Lmdl
dFZhbHVlKGV4ZWMsIGlkZW50KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgp
ICYmICFnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgp
CisgICAgICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAg
ICAgICAgICBwY1szXS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIHBjWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxl
RXJyb3IoZXhlYywgaWRlbnQpOworICAgIHJldHVybiBKU1ZhbHVlKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCkKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJP
RklMRUQob3BfcmVzb2x2ZV9nbG9iYWwsIHJlc29sdmVHbG9iYWwoZXhlYywgcGMpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAg
TExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIHJlc29sdmVH
bG9iYWwoZXhlYywgcGMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVf
Zm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVE
KG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4
ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSkKK3sKKyAgICBJZGVudGlm
aWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFu
ZCk7CisgICAgaWYgKHBjWzNdLnUub3BlcmFuZCkgeworICAgICAgICBKU1ZhbHVlIGJhc2UgPSBK
U0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIHRydWUpOwor
ICAgICAgICBpZiAoIWJhc2UpCisgICAgICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZv
ckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgICAg
ICBMTElOVF9SRVRVUk4oYmFzZSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTl9QUk9G
SUxFRChvcF9yZXNvbHZlX2Jhc2UsIEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMt
PnNjb3BlQ2hhaW4oKSwgZmFsc2UpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vu
c3VyZV9wcm9wZXJ0eV9leGlzdHMpCit7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0
KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsK
KyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBj
WzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBp
ZGVudCwgc2xvdCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEds
b2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKK3sKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aEJhc2UoZXhl
YywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRf
T1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0g
cmVzdWx0OworICAgIC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcs
IGJ1dCB3ZSBkb24ndCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3Ro
aXMpCit7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdp
dGhUaGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFu
ZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElO
VF9PUCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUg
cHJvZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBp
dC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9i
eV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwor
ICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3Bl
cmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsK
KyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSByZXN1bHQg
PSBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKKyAgICBMTElOVF9PUCgxKSA9IHJlc3VsdDsKKworICAgIGlmIChiYXNlVmFsdWUu
aXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCisgICAgICAgICYmIHNsb3Qu
c2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUKKyAgICAgICAgJiYgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5
cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OlZhbHVlKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwq
IGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3Ry
dWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0
dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpKSB7CisgICAgICAgICAg
ICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVl
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwY1tPUENPREVfTEVOR1RIKG9wX2dldF9i
eV9pZCkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X2FyZ3VtZW50c19sZW5ndGgpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmll
cihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMiku
anNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisgICAgTExJTlRf
UkVUVVJOKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5p
ZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAg
ICBhc09iamVjdChiYXNlVmFsdWUpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBpZGVu
dCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFz
ZVZhbHVlLnB1dChleGVjLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOwor
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIGlmIChiYXNlVmFsdWUuaXND
ZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAgIAorICAgICAg
ICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAg
IGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAm
JiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpCisgICAg
ICAgICAgICAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAgICAgICAgICAgCisgICAg
ICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkg
eworICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1
Y3R1cmUtPnByZXZpb3VzSUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lIG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKKyAgICAg
ICAgICAgICAgICAgICAgLy8gYmVsb3cgbWF5IEdDLgorICAgICAgICAgICAgICAgICAgICBwY1sw
XS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisK
KyAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNl
bGwpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
cGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZp
b3VzSUQoKSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzZd
LnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAg
ICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVD
aGFpbihleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsKKyAgICAgICAg
ICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCks
IGNoYWluKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChw
Y1s4XS51Lm9wZXJhbmQpCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9
IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBj
WzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5z
ZXQoCisgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9w
ZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIGlmIChmYWxzZSAmJiAhc3RyY21wKGlk
ZW50LmFzY2lpKCkuZGF0YSgpLCAicmVuZGVyUmVmbGVjdGlvbnMiKSkKKyAgICAgICAgcHJpbnRm
KCJGaW5pc2hpbmcgYWNjZXNzIHRvIHJlbmRlclJlZmxlY3Rpb25zIGZyb20gTExJbnQgc2xvdyBw
YXRoLlxuIik7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9kZWxfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLnRvT2JqZWN0KGV4ZWMpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBjb2RlQmxv
Y2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
KQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBk
ZWxldGUgcHJvcGVydHkuIikpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxl
dGUpKTsKK30KKworaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCit7CisgICAgaWYgKExJS0VMWShiYXNl
VmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7CisgICAgICAgIGlmIChK
U1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KGV4
ZWMsIGFzU3RyaW5nKHN1YnNjcmlwdCktPnZhbHVlKGV4ZWMpKSkKKyAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorICAgIAorICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgewor
ICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChp
c0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgo
aSkpCisgICAgICAgICAgICByZXR1cm4gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhl
YywgaSk7CisgICAgICAgIAorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYm
IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAg
cmV0dXJuIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgaSk7CisgICAgfQorICAgIAor
ICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CisgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVydHkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9S
RVRVUk5fUFJPRklMRUQob3BfZ2V0X2J5X3ZhbCwgZ2V0QnlWYWwoZXhlYywgTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQoreworICAgIEpTVmFsdWUgYXJndW1l
bnRzID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAg
ICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yyk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBMTElOVF9PUCgy
KSA9IGFyZ3VtZW50czsKKyAgICAgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1l
bnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgfQorICAgIAor
ICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBhcmd1bWVudHMsIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUp
Cit7CisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1AoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wdXRfYnlfdmFsKQoreworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmds
b2JhbERhdGEoKTsKKyAgICAKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSku
anNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAor
ICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CisgICAgICAgIHVpbnQzMl90
IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNBcnJheShiYXNlVmFs
dWUpKSB7CisgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUp
OworICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNhblNldEluZGV4KGkpKQorICAgICAgICAgICAg
ICAgIGpzQXJyYXktPnNldEluZGV4KGdsb2JhbERhdGEsIGksIHZhbHVlKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4KGpzQXJyYXksIGV4ZWMs
IGksIHZhbHVlKTsKKyAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICB9CisgICAgICAg
IGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkKKyAgICAgICAgICAgICYmIGFzQnl0ZUFycmF5
KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CisgICAgICAgICAgICBKU0J5dGVBcnJh
eSoganNCeXRlQXJyYXkgPSBhc0J5dGVBcnJheShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYg
KHZhbHVlLmlzSW50MzIoKSkgeworICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRl
eChpLCB2YWx1ZS5hc0ludDMyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAg
ICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNOdW1iZXIoKSk7CisgICAg
ICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgYmFzZVZhbHVlLnB1dChleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgIExMSU5UX0VORCgpOwor
ICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUo
KSk7CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCkK
K3sKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAg
IEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIAor
ICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisg
ICAgYm9vbCBjb3VsZERlbGV0ZTsKKyAgICAKKyAgICB1aW50MzJfdCBpOworICAgIGlmIChzdWJz
Y3JpcHQuZ2V0VUludDMyKGkpKQorICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1l
dGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNlT2JqZWN0LCBleGVjLCBpKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIElk
ZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERl
bGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb3VsZERlbGV0ZSAm
JiBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9X
KGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7Cisg
ICAgCisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KQoreworICAgIExMSU5UX09QX0MoMSku
anNWYWx1ZSgpLnB1dChleGVjLCBwY1syXS51Lm9wZXJhbmQsIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1
dF9nZXR0ZXIpCit7CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgp
KTsKKyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUo
KSk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmll
cihwY1syXS51Lm9wZXJhbmQpOworICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNP
YmplY3QoKSk7CisgICAgYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lR2V0dGVyKGJhc2VP
YmosIGV4ZWMsIGlkZW50LCBhc09iamVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9zZXR0ZXIp
Cit7CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBK
U09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAg
SWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51
Lm9wZXJhbmQpOworICAgIEFTU0VSVChMTElOVF9PUCgzKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7
CisgICAgYmFzZU9iai0+bWV0aG9kVGFibGUoKS0+ZGVmaW5lU2V0dGVyKGJhc2VPYmosIGV4ZWMs
IGlkZW50LCBhc09iamVjdChMTElOVF9PUCgzKS5qc1ZhbHVlKCkpLCAwKTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpCit7CisgICAg
dW5zaWduZWQgY291bnQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgU2NvcGVDaGFpbk5vZGUqIHRt
cCA9IGV4ZWMtPnNjb3BlQ2hhaW4oKTsKKyAgICB3aGlsZSAoY291bnQtLSkKKyAgICAgICAgdG1w
ID0gdG1wLT5wb3AoKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKHRtcCk7CisgICAgcGMgKz0g
cGNbMl0udS5vcGVyYW5kOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfanRydWUpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2p0cnVlLCBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfamZhbHNlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZmFsc2UsICFMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfamxlc3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzLCBqc0xlc3M8dHJ1ZT4o
ZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpCit7CisgICAgTExJTlRfQlJB
TkNIKG9wX2pubGVzcywgIWpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2pncmVhdGVyKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlciwganNMZXNzPGZh
bHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVl
KCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcikKK3sKKyAgICBM
TElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyLCAhanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2psZXNzZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEs
IGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEp
Cit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywg
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5D
SChvcF9qZ3JlYXRlcmVxLCBqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbmdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEs
ICFqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09Q
X0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hf
aW1tKQoreworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7
CisgICAgQVNTRVJUKHNjcnV0aW5lZS5pc0RvdWJsZSgpKTsKKyAgICBkb3VibGUgdmFsdWUgPSBz
Y3J1dGluZWUuYXNEb3VibGUoKTsKKyAgICBpbnQzMl90IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8
aW50MzJfdD4odmFsdWUpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5k
OworICAgIGlmICh2YWx1ZSA9PSBpbnRWYWx1ZSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2RlQmxvY2stPmltbWVk
aWF0ZVN3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGludFZh
bHVlLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9m
ZnNldDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3
aXRjaF9zdHJpbmcpCit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBp
ZiAoIXNjcnV0aW5lZS5pc1N0cmluZygpKQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0Owor
ICAgIGVsc2UgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9j
aygpOworICAgICAgICBwYyArPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShwY1sx
XS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGFzU3RyaW5nKHNjcnV0aW5lZSktPnZhbHVlKGV4
ZWMpLmltcGwoKSwgZGVmYXVsdE9mZnNldCk7CisgICAgfQorICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmMpCit7CisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2Rl
VHlwZSgpICE9IEZ1bmN0aW9uQ29kZQorICAgICAgICAgICB8fCAhY29kZUJsb2NrLT5uZWVkc0Z1
bGxTY29wZUNoYWluKCkKKyAgICAgICAgICAgfHwgZXhlYy0+dW5jaGVja2VkUihjb2RlQmxvY2st
PmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpOworI2lmIExMSU5UX0hFTFBFUl9UUkFD
SU5HCisgICAgcHJpbnRmKCJDcmVhdGluZyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJ
TlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzJdLnUub3BlcmFuZCktPm1ha2Uo
ZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uZXdfZnVuY19leHApCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2Rl
QmxvY2soKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5m
dW5jdGlvbkV4cHIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVu
Y3Rpb24tPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICAKKyAgICBpZiAoIWZ1
bmN0aW9uLT5uYW1lKCkuaXNOdWxsKCkpIHsKKyAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCog
ZnVuY3Rpb25TY29wZU9iamVjdCA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBm
dW5jdGlvbi0+bmFtZSgpLCBmdW5jLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBm
dW5jLT5zZXRTY29wZShleGVjLT5nbG9iYWxEYXRhKCksIGZ1bmMtPnNjb3BlKCktPnB1c2goZnVu
Y3Rpb25TY29wZU9iamVjdCkpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZnVuYyk7
Cit9CisKK3N0YXRpYyBIZWxwZXJSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSog
ZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNh
bGxlckZyYW1lKCk7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2Jh
bERhdGEoKTsKKworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFp
bigpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CisKKyAgICBpZiAoa2luZCA9
PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2Fs
bFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxsRGF0YShjYWxsZWUsIGNhbGxEYXRhKTsKKyAgICAKKyAg
ICAgICAgQVNTRVJUKGNhbGxUeXBlICE9IENhbGxUeXBlSlMpOworICAgIAorICAgICAgICBpZiAo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGVIb3N0KSB7CisgICAgICAgICAgICBnbG9iYWxEYXRhLT5ob3N0
Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlv
bihleGVjQ2FsbGVlKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIExMSU5UX0NBTExfUkVU
VVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSk7CisgICAgICAgIH0KKyAgICAgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJ
TkcKKyAgICAgICAgcHJpbnRmKCJDYWxsIGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIs
IGNhbGxlZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorCisgICAgICAgIEFTU0VSVChjYWxsVHlw
ZSA9PSBDYWxsVHlwZU5vbmUpOworICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBj
cmVhdGVOb3RBRnVuY3Rpb25FcnJvcihleGVjLCBjYWxsZWUpKTsKKyAgICB9CisKKyAgICBBU1NF
UlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAKKyAgICBDb25zdHJ1Y3REYXRhIGNv
bnN0cnVjdERhdGE7CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3Ry
dWN0RGF0YShjYWxsZWUsIGNvbnN0cnVjdERhdGEpOworICAgIAorICAgIEFTU0VSVChjb25zdHJ1
Y3RUeXBlICE9IENvbnN0cnVjdFR5cGVKUyk7CisgICAgCisgICAgaWYgKGNvbnN0cnVjdFR5cGUg
PT0gQ29uc3RydWN0VHlwZUhvc3QpIHsKKyAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1
cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihl
eGVjQ2FsbGVlKSk7CisgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCBy
ZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgfQor
ICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgICAgIHByaW50ZigiQ29uc3RydWN0
b3IgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkp
OworI2VuZGlmCisKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9u
ZSk7CisgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUNvbnN0cnVjdG9y
RXJyb3IoZXhlYywgY2FsbGVlKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIHNldFVw
Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExpbmtJbmZv
KiBjYWxsTGlua0luZm8gPSAwKQoreworICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwg
PSBnZXRKU0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOworICAgIGlmICghY2FsbGVlQXNGdW5jdGlv
bkNlbGwpCisgICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2Fs
bGVlQXNWYWx1ZSwga2luZCk7CisgICAgCisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5j
dGlvbihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFp
bihjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRh
YmxlID0gY2FsbGVlLT5leGVjdXRhYmxlKCk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2Rl
UHRyIGNvZGVQdHI7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOworICAgIGlmIChleGVj
dXRhYmxlLT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+
Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIGVsc2Ugewor
ICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19j
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOworICAgICAgICBKU09iamVjdCog
ZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVl
LT5zY29wZSgpLCBraW5kKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgTExJTlRf
Q0FMTF9USFJPVyhleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOworICAgICAg
ICBjb2RlQmxvY2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihr
aW5kKTsKKyAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgICAgIGlmIChleGVjQ2FsbGVl
LT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25F
eGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVy
YXRlZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICB9CisgICAgCisgICAg
aWYgKGNhbGxMaW5rSW5mbykgeworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLT5pc09uTGlzdCgp
KQorICAgICAgICAgICAgY2FsbExpbmtJbmZvLT5yZW1vdmUoKTsKKyAgICAgICAgRXhlY1N0YXRl
KiBleGVjQ2FsbGVyID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgY2FsbExp
bmtJbmZvLT5jYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+
Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlu
a0luZm8tPmxhc3RTZWVuQ2FsbGVlLnNldChleGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4ZWND
YWxsZXItPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAgICAg
Y2FsbExpbmtJbmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9IGNvZGVQdHI7CisgICAgICAgIGlmIChj
b2RlQmxvY2spCisgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbExp
bmtJbmZvKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwg
cGMsIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1
cm5UeXBlIGdlbmVyaWNDYWxsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAv
LyAtIFNldCB1cCBhIGNhbGwgZnJhbWUuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2Fs
bCBhbmQgY29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBJZiBwb3NzaWJsZSwgbGlu
ayB0aGUgY2FsbCdzIGlubGluZSBjYWNoZS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1h
Y2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAK
KyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAg
ICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOwor
ICAgIAorICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJd
LnUub3BlcmFuZCk7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNh
bGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4
ZWMpOworICAgIAorICAgIEFTU0VSVChwY1s0XS51LmNhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJu
IHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywga2luZCwgY2FsbGVlQXNWYWx1ZSwgcGNbNF0udS5j
YWxsTGlua0luZm8pOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCkKK3sKKyAg
ICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDYWxsKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwo
ZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY2FsbF92YXJhcmdzKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQg
dXAgYSBjYWxsIGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4K
KyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vz
c2FyeS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRv
IGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFz
VmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4
ZWNDYWxsZWUgPSBsb2FkVmFyYXJncygKKyAgICAgICAgZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEo
KS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksCisgICAgICAgIExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5vcGVyYW5kKTsKKyAgICBM
TElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYyk7CisgICAgCisgICAgZXhlY0NhbGxl
ZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAg
IGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIo
UmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90
PihwYyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSk7CisgICAgCisgICAgcmV0dXJu
IHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKQoreworICAgIEpTVmFsdWUg
Y2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3Rh
dGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBleGVjQ2FsbGVl
LT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4
ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tl
ZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVl
LT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0
UmV0dXJuUEMoYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4oJmxsaW50X2dlbmVyaWNfcmV0dXJu
X3BvaW50KSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworICAgIGV4ZWMtPnVu
Y2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2Fz
dDxpbnQzMl90PihwYyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7CisgICAgCisgICAg
aWYgKCFpc0hvc3RGdW5jdGlvbihjYWxsZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpCisgICAg
ICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVB
c1ZhbHVlKTsKKyAgICAKKyAgICBnbG9iYWxEYXRhLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBldmFs
KGV4ZWNDYWxsZWUpOworICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQoreworICAgIEFTU0VSVChl
eGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBKU1ZhbHVlIGFj
dGl2YXRpb25WYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFjdGl2YXRp
b25WYWx1ZSkgeworICAgICAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1v
ZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKSB7Cisg
ICAgICAgICAgICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAg
ICAgICAgICAgICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAgfQorICAg
ICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0g
YXNBY3RpdmF0aW9uKGFjdGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihl
eGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRS
KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkp
CisgICAgICAgIGFzQXJndW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIGFjdGl2YXRpb24pOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQoreworICAgIEFTU0VSVChleGVjLT5j
b2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygpICYmICFleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNG
dWxsU2NvcGVDaGFpbigpKTsKKyAgICBhc0FyZ3VtZW50cyhleGVjLT51bmNoZWNrZWRSKHVubW9k
aWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpLT50ZWFy
T2ZmKGV4ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfc3RyY2F0KQoreworICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhleGVjLCAmTExJTlRfT1Ao
MiksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9f
cHJpbWl0aXZlKQoreworICAgIExMSU5UX1JFVFVSTihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50
b1ByaW1pdGl2ZShleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5h
bWVzKQoreworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAo
di5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBjICs9IHBjWzVdLnUub3BlcmFuZDsK
KyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBvID0gdi50
b09iamVjdChleGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVjdHVyZSgp
OworICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBz
dHJ1Y3R1cmUtPmVudW1lcmF0aW9uQ2FjaGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlOYW1lSXRl
cmF0b3IgfHwganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4oKSAh
PSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpKQorICAgICAgICBqc1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8pOworICAg
IAorICAgIExMSU5UX09QKDEpID0gSlNWYWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKKyAg
ICBMTElOVF9PUCgyKSA9IEpTVmFsdWUobyk7CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rlcjo6
d2l0aEludCgwKTsKKyAgICBMTElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJvcGVy
dHlOYW1lSXRlcmF0b3ItPnNpemUoKSk7CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChv
cF9nZXRfcG5hbWVzKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25leHRfcG5hbWUpCit7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChMTElO
VF9PUCgyKS5qc1ZhbHVlKCkpOworICAgIEpTU3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3RyaW5nKExM
SU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgaWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElk
ZW50aWZpZXIoZXhlYywgcHJvcGVydHktPnZhbHVlKGV4ZWMpKSkpIHsKKyAgICAgICAgLy8gR28g
dG8gdGFyZ2V0LgorICAgICAgICBwYyArPSBwY1s2XS51Lm9wZXJhbmQ7CisgICAgfSAvLyBFbHNl
LCBkb24ndCBjaGFuZ2UgdGhlIFBDLCBzbyB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxvb3AuCisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3Bl
KQoreworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVj
dCogbyA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgCisgICAgTExJTlRfT1AoMSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+
c2NvcGVDaGFpbigpLT5wdXNoKG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSkKK3sKKyAgICBleGVjLT5zZXRTY29wZUNo
YWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cG9wKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpCit7CisgICAgQ29kZUJsb2Nr
KiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogc2NvcGUgPSBK
U1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBj
WzJdLnUub3BlcmFuZCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgRG9udERlbGV0ZSk7CisgICAg
ZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goc2NvcGUpKTsKKyAg
ICBMTElOVF9SRVRVUk4oc2NvcGUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhy
b3cpCit7CisgICAgTExJTlRfVEhST1coTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQoreworICAgIExM
SU5UX1RIUk9XKGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1
ZSgpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZGVidWcpCit7CisgICAgaW50IGRlYnVnSG9va0lEID0gcGNbMV0udS5vcGVyYW5k
OworICAgIGludCBmaXJzdExpbmUgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaW50IGxhc3RMaW5l
ID0gcGNbM10udS5vcGVyYW5kOworICAgIAorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnBy
ZXRlci0+ZGVidWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwg
Zmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVy
OjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPndpbGxFeGVjdXRlKGV4ZWMsIExMSU5UX09Q
KDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQoreworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9m
aWxlclJlZmVyZW5jZSgpKS0+ZGlkRXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkp
OworICAgIExMSU5UX0VORCgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwor
I2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRIZWxwZXJzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRIZWxwZXJzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRI
ZWxwZXJzX2gKKyNkZWZpbmUgTExJbnRIZWxwZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIEVOQUJMRShMTElOVCkK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlv
bjsKKworbmFtZXNwYWNlIExMSW50IHsKKwordHlwZWRlZiBpbnQ2NF90IEhlbHBlclJldHVyblR5
cGU7CisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4
ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworZXh0
ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSosIElu
c3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworCisjZGVmaW5lIExMSU5U
X0hFTFBFUl9ERUNMKG5hbWUpIFwKKyAgICBleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxp
bnRfIyNuYW1lKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQorCitMTElOVF9IRUxQ
RVJfREVDTCh0cmFjZV9wcm9sb2d1ZSk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1
ZV9mdW5jdGlvbl9mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9m
dW5jdGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hl
Y2tfZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29u
c3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHNw
ZWNpYWxfdHJhY2UpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChl
bnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChlbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChl
bnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGxvb3Bfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpOworTExJTlRfSEVM
UEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJp
dHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252
ZXJ0X3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bmV3X2FycmF5X2J1ZmZlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9lcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9zdHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVxKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9sZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJl
X2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcG9zdF9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVj
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbmVnYXRlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3Vi
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX21vZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9yc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfYml0b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcik7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfYml0bm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVj
a19oYXNfaW5zdGFuY2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaXNfdW5kZWZpbmVkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX3N0cmluZyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbik7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcmVzb2x2ZV9nbG9iYWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFz
ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9nZXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVu
Z3RoKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2RlbF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5
X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wdXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfdmFs
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3B1dF9nZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9z
ZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2p0cnVlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2Up
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qbmxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2psZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bmdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2NoYXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3N3aXRjaF9zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jYWxsX2V2YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2Fj
dGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90b19wcmltaXRpdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3B1c2hfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29w
ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Rocm93KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19y
ZWZlcmVuY2VfZXJyb3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTElu
dAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRIZWxwZXJzX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxp
bmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExM
SW50T2ZmbGluZUFzbUNvbmZpZ19oCisjZGVmaW5lIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisK
KyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBDUFUoWDg2KQorI2RlZmluZSBPRkZMSU5F
X0FTTV9YODYgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDAKKyNlbmRpZgorCisj
aWYgQ1BVKEFSTXY3KQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAxCisjZWxzZQorI2RlZmlu
ZSBPRkZMSU5FX0FTTV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyNk
ZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElO
RV9BU01fQVNTRVJUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUoQklHX0VORElBTikKKyNk
ZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FT
TV9CSUdfRU5ESUFOIDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKExMSU5UX09TUl9UT19KSVQpCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVf
QVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcK
KyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQorI2Vsc2UKKyNkZWZpbmUg
T0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisKKyNlbmRpZiAvLyBMTElu
dE9mZmxpbmVBc21Db25maWdfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJDb2RlQmxvY2su
aCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU0FycmF5
LmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1
ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCisjaW5jbHVkZSAiSlNW
YXJpYWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50
T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5jbHVkZSAi
UmVnaXN0ZXJGaWxlLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVj
dHVyZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9m
aWxlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgorCituYW1lc3BhY2UgSlND
IHsKKworI2RlZmluZSBPRkZMSU5FX0FTTV9PRkZTRVRPRihjbGF6eiwgZmllbGQpIE9CSkVDVF9P
RkZTRVRPRihjbGF6eiwgZmllbGQpCisKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvciB7Citw
dWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkKiBkdW1teSgpOworfTsKKworY29uc3Qg
dW5zaWduZWQqIExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKQoreworI2luY2x1ZGUgIkxM
SW50RGVzaXJlZE9mZnNldHMuaCIKKyAgICByZXR1cm4gZXh0cmFjdG9yVGFibGU7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIEpTQworCitpbnQgbWFpbihpbnQsIGNoYXIqKikKK3sKKyAgICAvLyBPdXQg
b2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRpb24sIG1ha2Ugc3VyZSB0aGF0IExMSW50T2Zmc2V0c0V4
dHJhY3Rvcjo6ZHVtbXkoKSBpcyBsaXZlLAorICAgIC8vIGFuZCB0aGUgZXh0cmFjdG9yVGFibGUg
aXMgbGl2ZSwgdG9vLgorICAgIHByaW50ZigiJXBcbiIsIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFj
dG9yOjpkdW1teSgpKTsKKyAgICByZXR1cm4gMDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
ODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisKKyNpZiBFTkFCTEUo
TExJTlQpCisKKyNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5oIgorI2luY2x1ZGUgIkxpbmtCdWZm
ZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgTExJbnQgeworCitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgdm9pZCAoKnRhcmdl
dCkoKSkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CisgICAgCisgICAgLy8gRklYTUU6IHRo
ZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0IG9uIFg4NiwgYnV0IEknbSBub3Qg
c3VyZSBJIGNhcmUuCisgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIo
Yml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAg
ICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6cmVnVDApOworICAgIAorICAgIExpbmtCdWZmZXIg
cGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0
dXJuIHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEs
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGds
b2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpOworfQorCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hl
Y2spOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0
eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJl
dHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2
YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICBy
ZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZXZhbF9wcm9s
b2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpOworfQorCit9
IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBMTEludFRodW5rc19oCisjZGVmaW5lIExMSW50VGh1bmtzX2gK
KworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5j
bHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFz
cyBKU0dsb2JhbERhdGE7CisKK25hbWVzcGFjZSBMTEludCB7CisKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNh
bGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNH
bG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0
b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1
bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTElu
dAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRUaHVua3NfaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMzgwIEBACisj
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyMgQ3Jhc2ggY291
cnNlIG9uIHRoZSBsYW5ndWFnZSB0aGF0IHRoaXMgaXMgd3JpdHRlbiBpbiAod2hpY2ggSSBqdXN0
IGNhbGwKKyMgImFzc2VtYmx5IiBldmVuIHRob3VnaCBpdCdzIG1vcmUgdGhhbiB0aGF0KToKKyMK
KyMgLSBNb3N0bHkgZ2FzLXN0eWxlIG9wZXJhbmQgb3JkZXJpbmcuIFRoZSBsYXN0IG9wZXJhbmQg
dGVuZHMgdG8gYmUgdGhlCisjICAgZGVzdGluYXRpb24uIFNvICJhIDo9IGIiIGlzIHdyaXR0ZW4g
YXMgIm1vdiBiLCBhIi4gQnV0IHVubGlrZSBnYXMsCisjICAgY29tcGFyaXNvbnMgYXJlIGluLW9y
ZGVyLCBzbyAiaWYgKGEgPCBiKSIgaXMgd3JpdHRlbiBhcworIyAgICJiaWx0IGEsIGIsIC4uLiIu
CisjCisjIC0gImIiID0gYnl0ZSwgImgiID0gMTYtYml0IHdvcmQsICJpIiA9IDMyLWJpdCB3b3Jk
LCAicCIgPSBwb2ludGVyLgorIyAgIEN1cnJlbnRseSB0aGlzIGlzIGp1c3QgMzItYml0IHNvICJp
IiBhbmQgInAiIGFyZSBpbnRlcmNoYW5nZWFibGUKKyMgICBleGNlcHQgd2hlbiBhbiBvcCBzdXBw
b3J0cyBvbmUgYnV0IG5vdCB0aGUgb3RoZXIuCisjCisjIC0gSW4gZ2VuZXJhbCwgdmFsaWQgb3Bl
cmFuZHMgZm9yIG1hY3JvIGludm9jYXRpb25zIGFuZCBpbnN0cnVjdGlvbnMgYXJlCisjICAgcmVn
aXN0ZXJzIChlZyAidDAiKSwgYWRkcmVzc2VzIChlZyAiNFt0MF0iKSwgYmFzZS1pbmRleCBhZGRy
ZXNzZXMKKyMgICAoZWcgIjdbdDAsIHQxLCAyXSIpLCBhYnNvbHV0ZSBhZGRyZXNzZXMgKGVnICIw
eGEwMDAwMDAwW10iKSwgb3IgbGFiZWxzCisjICAgKGVnICJfZm9vIiBvciAiLmZvbyIpLiBNYWNy
byBpbnZvY2F0aW9ucyBjYW4gYWxzbyB0YWtlIGFub255bW91cworIyAgIG1hY3JvcyBhcyBvcGVy
YW5kcy4gSW5zdHJ1Y3Rpb25zIGNhbm5vdCB0YWtlIGFub255bW91cyBtYWNyb3MuCisjCisjIC0g
TGFiZWxzIG11c3QgaGF2ZSBuYW1lcyB0aGF0IGJlZ2luIHdpdGggZWl0aGVyICJfIiBvciAiLiIu
ICBBICIuIiBsYWJlbAorIyAgIGlzIGxvY2FsIGFuZCBnZXRzIHJlbmFtZWQgYmVmb3JlIGNvZGUg
Z2VuIHRvIG1pbmltaXplIG5hbWVzcGFjZQorIyAgIHBvbGx1dGlvbi4gQSAiXyIgbGFiZWwgaXMg
YW4gZXh0ZXJuIHN5bWJvbCAoaS5lLiAiLmdsb2JsIikuIFRoZSAiXyIKKyMgICBtYXkgb3IgbWF5
IG5vdCBiZSByZW1vdmVkIGR1cmluZyBjb2RlIGdlbiBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUg
YXNtCisjICAgY29udmVudGlvbnMgZm9yIEMgbmFtZSBtYW5nbGluZyBvbiB0aGUgdGFyZ2V0IHBs
YXRmb3JtIG1hbmRhdGUgYSAiXyIKKyMgICBwcmVmaXguCisjCisjIC0gQSAibWFjcm8iIGlzIGEg
bGFtYmRhIGV4cHJlc3Npb24sIHdoaWNoIG1heSBiZSBlaXRoZXIgYW5vbnltb3VzIG9yCisjICAg
bmFtZWQuIEJ1dCB0aGlzIGhhcyBjYXZlYXRzLiAibWFjcm8iIGNhbiB0YWtlIHplcm8gb3IgbW9y
ZSBhcmd1bWVudHMsCisjICAgd2hpY2ggbWF5IGJlIG1hY3JvcyBvciBhbnkgdmFsaWQgb3BlcmFu
ZHMsIGJ1dCBpdCBjYW4gb25seSByZXR1cm4KKyMgICBjb2RlLiBCdXQgeW91IGNhbiBkbyBUdXJp
bmctY29tcGxldGUgdGhpbmdzIHZpYSBjb250aW51YXRpb24gcGFzc2luZworIyAgIHN0eWxlOiAi
bWFjcm8gZm9vIChhLCBiKSBiKGEpIGVuZCBmb28oZm9vLCBmb28pIi4gQWN0dWFsbHksIGRvbid0
IGRvCisjICAgdGhhdCwgc2luY2UgeW91J2xsIGp1c3QgY3Jhc2ggdGhlIGFzc2VtYmxlci4KKyMK
KyMgLSBBbiAiaWYiIGlzIGEgY29uZGl0aW9uYWwgb24gc2V0dGluZ3MuIEFueSBpZGVudGlmaWVy
IHN1cHBsaWVkIGluIHRoZQorIyAgIHByZWRpY2F0ZSBvZiBhbiAiaWYiIGlzIGFzc3VtZWQgdG8g
YmUgYSAjZGVmaW5lIHRoYXQgaXMgYXZhaWxhYmxlCisjICAgZHVyaW5nIGNvZGUgZ2VuLiBTbyB5
b3UgY2FuJ3QgdXNlICJpZiIgZm9yIGNvbXB1dGF0aW9uIGluIGEgbWFjcm8sIGJ1dAorIyAgIHlv
dSBjYW4gdXNlIGl0IHRvIHNlbGVjdCBkaWZmZXJlbnQgcGllY2VzIG9mIGNvZGUgZm9yIGRpZmZl
cmVudAorIyAgIHBsYXRmb3Jtcy4KKyMKKyMgLSBBcmd1bWVudHMgdG8gbWFjcm9zIGZvbGxvdyBs
ZXhpY2FsIHNjb3BpbmcgcmF0aGVyIHRoYW4gZHluYW1pYyBzY29waW5nLgorIyAgIENvbnN0J3Mg
YWxzbyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIGFuZCBtYXkgb3ZlcnJpZGUgKGhpZGUpIGFyZ3Vt
ZW50cworIyAgIG9yIG90aGVyIGNvbnN0cy4gQWxsIHZhcmlhYmxlcyAoYXJndW1lbnRzIGFuZCBj
b25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAgIHRvIG9wZXJhbmRzLiBBZGRpdGlvbmFsbHksIGFy
Z3VtZW50cyAoYnV0IG5vdCBjb25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAgIHRvIG1hY3Jvcy4K
KworCisjIFRoZXNlIGRlY2xhcmF0aW9ucyBtdXN0IG1hdGNoIGludGVycHJldGVyL1JlZ2lzdGVy
RmlsZS5oLgorY29uc3QgQ2FsbEZyYW1lSGVhZGVyU2l6ZSA9IDQ4Citjb25zdCBBcmd1bWVudENv
dW50ID0gLTQ4Citjb25zdCBDYWxsZXJGcmFtZSA9IC00MAorY29uc3QgQ2FsbGVlID0gLTMyCitj
b25zdCBTY29wZUNoYWluID0gLTI0Citjb25zdCBSZXR1cm5QQyA9IC0xNgorY29uc3QgQ29kZUJs
b2NrID0gLTgKKworY29uc3QgVGhpc0FyZ3VtZW50T2Zmc2V0ID0gLUNhbGxGcmFtZUhlYWRlclNp
emUgLSA4CisKKyMgRGVjbGFyZSBzb21lIGFsaWFzZXMgZm9yIHRoZSByZWdpc3RlcnMgd2Ugd2ls
bCB1c2UuCitjb25zdCBQQyA9IHQ0CisKKyMgT2Zmc2V0cyBuZWVkZWQgZm9yIHJlYXNvbmluZyBh
Ym91dCB2YWx1ZSByZXByZXNlbnRhdGlvbi4KK2lmIEJJR19FTkRJQU4KKyAgICBjb25zdCBUYWdP
ZmZzZXQgPSAwCisgICAgY29uc3QgUGF5bG9hZE9mZnNldCA9IDQKK2Vsc2UKKyAgICBjb25zdCBU
YWdPZmZzZXQgPSA0CisgICAgY29uc3QgUGF5bG9hZE9mZnNldCA9IDAKK2VuZAorCisjIFZhbHVl
IHJlcHJlc2VudGF0aW9uIGNvbnN0YW50cy4KK2NvbnN0IEludDMyVGFnID0gLTEKK2NvbnN0IEJv
b2xlYW5UYWcgPSAtMgorY29uc3QgTnVsbFRhZyA9IC0zCitjb25zdCBVbmRlZmluZWRUYWcgPSAt
NAorY29uc3QgQ2VsbFRhZyA9IC01Citjb25zdCBFbXB0eVZhbHVlVGFnID0gLTYKK2NvbnN0IERl
bGV0ZWRWYWx1ZVRhZyA9IC03Citjb25zdCBMb3dlc3RUYWcgPSBEZWxldGVkVmFsdWVUYWcKKwor
IyBUeXBlIGNvbnN0YW50cy4KK2NvbnN0IFN0cmluZ1R5cGUgPSA1Citjb25zdCBPYmplY3RUeXBl
ID0gMTAKKworIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KK2NvbnN0IE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQgPSAxCitjb25zdCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPSAyCitjb25zdCBJbXBsZW1l
bnRzRGVmYXVsdEhhc0luc3RhbmNlID0gOAorCisjIEhlYXAgYWxsb2NhdGlvbiBjb25zdGFudHMu
Citjb25zdCBKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXggPSAzCisKKyMgQnl0ZWNvZGUgb3Bl
cmFuZCBjb25zdGFudHMuCitjb25zdCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAw
MDAwMDAKKworIyBDb2RlIHR5cGUgY29uc3RhbnRzLgorY29uc3QgR2xvYmFsQ29kZSA9IDAKK2Nv
bnN0IEV2YWxDb2RlID0gMQorY29uc3QgRnVuY3Rpb25Db2RlID0gMgorCisjIFRoZSBpbnRlcnBy
ZXRlciBzdGVhbHMgdGhlIHRhZyB3b3JkIG9mIHRoZSBhcmd1bWVudCBjb3VudC4KK2NvbnN0IExM
SW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0CisKKyMgVGhpcyBtdXN0IG1h
dGNoIHd0Zi9WZWN0b3IuaC4KK2NvbnN0IFZlY3RvclNpemVPZmZzZXQgPSAwCitjb25zdCBWZWN0
b3JCdWZmZXJPZmZzZXQgPSA0CisKKyMgU3RyaW5nIGZsYWdzLgorY29uc3QgSGFzaEZsYWdzOEJp
dEJ1ZmZlciA9IDY0CisKKyMgVXRpbGl0aWVzCittYWNybyBjcmFzaCgpCisgICAgc3RvcmVpIDAs
IDB4YmJhZGJlZWZbXQorICAgIG1vdmUgMCwgdDAKKyAgICBjYWxsIHQwCitlbmQKKworbWFjcm8g
YXNzZXJ0KGFzc2VydGlvbikKKyAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBhc3NlcnRp
b24oLm9rKQorICAgICAgICBjcmFzaCgpCisgICAgLm9rOgorICAgIGVuZAorZW5kCisKK21hY3Jv
IHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChkZXN0aW5hdGlvblJlZ2lzdGVyKQorICAg
IGlmIEFSTXY3CisgICAgICAgIG1vdmUgbHIsIGRlc3RpbmF0aW9uUmVnaXN0ZXIKKyAgICBlbHNp
ZiBYODYKKyAgICAgICAgcG9wIGRlc3RpbmF0aW9uUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAg
IGVycm9yCisgICAgZW5kCitlbmQKKworbWFjcm8gcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVS
ZXR1cm4oc291cmNlUmVnaXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBzb3VyY2VS
ZWdpc3RlciwgbHIKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcHVzaCBzb3VyY2VSZWdpc3Rlcgor
ICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyBkaXNwYXRjaChh
ZHZhbmNlKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDCisgICAgam1wIFtQQ10KK2VuZAorCitt
YWNybyBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQocGNPZmZzZXQpCisgICAgbHNoaWZ0aSAyLCBw
Y09mZnNldAorICAgIGFkZHAgcGNPZmZzZXQsIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNy
byBkaXNwYXRjaEJyYW5jaChwY09mZnNldCkKKyAgICBsb2FkaSBwY09mZnNldCwgdDAKKyAgICBk
aXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDApCitlbmQKKworbWFjcm8gZGlzcGF0Y2hBZnRlckNh
bGwoKQorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBq
bXAgW1BDXQorZW5kCisKK21hY3JvIGNDYWxsMihmdW5jdGlvbiwgYXJnMSwgYXJnMikKKyAgICBp
ZiBBUk12NworICAgICAgICBtb3ZlIGFyZzEsIHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAg
ICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBhcmcxLCAwCisgICAgICAgIHBva2UgYXJnMiwgMQor
ICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKKyAgICBjYWxsIGZ1bmN0aW9uCitlbmQK
KworIyBUaGlzIGJhcmVseSB3b3Jrcy4gYXJnMyBhbmQgYXJnNCBzaG91bGQgcHJvYmFibHkgYmUg
aW1tZWRpYXRlcy4KK21hY3JvIGNDYWxsNChmdW5jdGlvbiwgYXJnMSwgYXJnMiwgYXJnMywgYXJn
NCkKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGFyZzEsIHQwCisgICAgICAgIG1vdmUgYXJn
MiwgdDEKKyAgICAgICAgbW92ZSBhcmczLCB0MgorICAgICAgICBtb3ZlIGFyZzQsIHQzCisgICAg
ZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAorICAgICAgICBwb2tlIGFyZzIsIDEKKyAg
ICAgICAgcG9rZSBhcmczLCAyCisgICAgICAgIHBva2UgYXJnNCwgMworICAgIGVsc2UKKyAgICAg
ICAgZXJyb3IKKyAgICBlbmQKKyAgICBjYWxsIGZ1bmN0aW9uCitlbmQKKworbWFjcm8gY2FsbEhl
bHBlcihoZWxwZXIpCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQwLCBQ
QworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKKyMgRGVidWdnaW5nIG9wZXJhdGlvbiBpZiB5b3Un
ZCBsaWtlIHRvIHByaW50IGFuIG9wZXJhbmQgaW4gdGhlIGluc3RydWN0aW9uIHN0cmVhbS4gZnJv
bVdoZXJlCisjIHNob3VsZCBiZSBhbiBpbW1lZGlhdGUgaW50ZWdlciAtIGFueSBpbnRlZ2VyIHlv
dSBsaWtlOyB1c2UgaXQgdG8gaWRlbnRpZnkgdGhlIHBsYWNlIHlvdSdyZQorIyBkZWJ1Z2dpbmcg
ZnJvbS4gb3BlcmFuZCBzaG91bGQgbGlrZXdpc2UgYmUgYW4gaW1tZWRpYXRlLCBhbmQgc2hvdWxk
IGlkZW50aWZ5IHRoZSBvcGVyYW5kCisjIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0geW91J2Qg
bGlrZSB0byBwcmludCBvdXQuCittYWNybyB0cmFjZU9wZXJhbmQoZnJvbVdoZXJlLCBvcGVyYW5k
KQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2Vfb3BlcmFuZCwgY2ZyLCBQQywgZnJvbVdoZXJlLCBv
cGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1
Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgdGhlIHZhbHVlIG9mIGFuIG9w
ZXJhbmQgaW4gdGhlIGluc3RydWN0aW9uCisjIHN0cmVhbS4gU2FtZSBhcyB0cmFjZU9wZXJhbmQo
KSwgYnV0IGFzc3VtZXMgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIHJlZ2lzdGVyLCBhbmQgcHJpbnRz
IGl0cworIyB2YWx1ZS4KK21hY3JvIHRyYWNlVmFsdWUoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAg
IGNDYWxsNChfbGxpbnRfdHJhY2VfdmFsdWUsIGNmciwgUEMsIGZyb21XaGVyZSwgb3BlcmFuZCkK
KyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKK21hY3JvIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKF9s
bGludF90cmFjZSkKKyAgICBlbmQKK2VuZAorCisjIENhbGwgYSBoZWxwZXIgZm9yIGNhbGwgb3Bj
b2Rlcy4KK21hY3JvIGNhbGxDYWxsSGVscGVyKGFkdmFuY2UsIGhlbHBlciwgYWN0aW9uKQorICAg
IGFkZHAgYWR2YW5jZSAqIDQsIFBDLCB0MAorICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCAr
IFRhZ09mZnNldFtjZnJdCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQx
LCBjZnIKKyAgICBhY3Rpb24odDApCitlbmQKKworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFu
Y2UsIGhlbHBlcikKKyAgICBjYWxsQ2FsbEhlbHBlcigKKyAgICAgICAgYWR2YW5jZSwKKyAgICAg
ICAgaGVscGVyLAorICAgICAgICBtYWNybyAoY2FsbGVlKQorICAgICAgICAgICAgY2FsbCBjYWxs
ZWUKKyAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAgICAgZW5kKQorZW5kCisK
K21hY3JvIGNoZWNrU3dpdGNoVG9KSVQoaW5jcmVtZW50LCBhY3Rpb24pCisgICAgaWYgSklUX0VO
QUJMRUQKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgICAgIGJhZGRpcyBp
bmNyZW1lbnQsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3QwXSwgLmNvbnRpbnVl
CisgICAgICAgIGFjdGlvbigpCisgICAgLmNvbnRpbnVlOgorICAgIGVuZAorZW5kCisKK21hY3Jv
IGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAg
ICAxLAorICAgICAgICBtYWNybyAoKQorICAgICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENv
dW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICAgICAgICAgIGNDYWxsMihfbGxpbnRfbG9vcF9vc3Is
IGNmciwgUEMpCisgICAgICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgICAgIGJ0cHogdDAs
IC5yZWNvdmVyCisgICAgICAgICAgICBqbXAgdDAKKyAgICAgICAgLnJlY292ZXI6CisgICAgICAg
ICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgICAgIGVu
ZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGNoZWNr
U3dpdGNoVG9KSVQoCisgICAgICAgIDEwLAorICAgICAgICBtYWNybyAoKQorICAgICAgICAgICAg
Y2FsbEhlbHBlcihfbGxpbnRfcmVwbGFjZSkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGFz
c2VydE5vdENvbnN0YW50KGluZGV4KQorICAgIGFzc2VydChtYWNybyAob2spIGJpbHQgaW5kZXgs
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBvayBlbmQpCitlbmQKKworIyBJbmRleCwgdGFn
LCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdAor
IyBjaGFuZ2VkLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShpbmRleCwgdGFnLCBwYXls
b2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25z
dGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNv
bnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRd
LCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRl
eCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMg
dGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9hZHAgVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4
XSwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxv
YWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQgbWF5IGJlIHRoZSBzYW1lIHJl
Z2lzdGVyLiBJbmRleCBtYXkgYmUgY2xvYmJlcmVkLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBp
bmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBh
eWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgdGFnCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9y
QnVmZmVyT2Zmc2V0W3RhZ10sIHRhZworICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJl
OiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxzaGlmdGkgMywgaW5kZXgKKyAg
ICBhZGRwIGluZGV4LCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQK
KyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnCisuZG9uZToKK2VuZAorCittYWNybyBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxv
YWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0
YW50CisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdKQorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25z
dGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVC
bG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwg
cGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXgg
Y29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRo
ZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4KSA8PCAzLgorICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwg
OF0pCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQK
Ky5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVn
aXN0ZXJzLiBJbmRleCBpcyBub3QgbXV0YXRlZC4gVXNlCisjIHRoaXMgaWYgeW91IGtub3cgd2hh
dCB0aGUgdGFnIG9mIHRoZSB2YXJpYWJsZSBzaG91bGQgYmUuIERvaW5nIHRoZSB0YWcKKyMgdGVz
dCBhcyBwYXJ0IG9mIGxvYWRpbmcgdGhlIHZhcmlhYmxlIHJlZHVjZXMgcmVnaXN0ZXIgdXNlLCBi
dXQgbWF5IG5vdAorIyBiZSBmYXN0ZXIgdGhhbiBkb2luZyBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
IGZvbGxvd2VkIGJ5IGEgYnJhbmNoIG9uIHRoZQorIyB0YWcuCittYWNybyBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCisgICAgICAgIGluZGV4LAor
ICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBiaW5lcSBhY3R1YWxUYWcsIGV4cGVjdGVkVGFnLCBz
bG93IGVuZCwKKyAgICAgICAgcGF5bG9hZCkKK2VuZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZFVuY2hlY2tlZChpbmRleCwgcGF5bG9hZCkKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgKKyAgICAgICAgaW5kZXgsCisgICAgICAgIG1hY3Jv
IChhY3R1YWxUYWcpIGVuZCwKKyAgICAgICAgcGF5bG9hZCkKK2VuZAorCittYWNybyB3cml0ZUJh
cnJpZXIodGFnLCBwYXlsb2FkKQorICAgICMgTm90aGluZyB0byBkbywgc2luY2Ugd2UgZG9uJ3Qg
aGF2ZSBhIGdlbmVyYXRpb25hbCBvciBpbmNyZW1lbnRhbCBjb2xsZWN0b3IuCitlbmQKKworbWFj
cm8gdmFsdWVQcm9maWxlKHRhZywgcGF5bG9hZCwgcHJvZmlsZSkKKyAgICBzdG9yZWkgdGFnLCBW
YWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNldFtwcm9maWxlXQorICAgIHN0b3JlaSBw
YXlsb2FkLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbcHJvZmlsZV0K
K2VuZAorCisKKyMgSW5kaWNhdGUgdGhlIGJlZ2lubmluZyBvZiBMTEludC4KK19sbGludF9iZWdp
bjoKKyAgICBjcmFzaCgpCisKKworIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlcgor
CittYWNybyBmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisg
ICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5jdGlv
bjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2Fk
cCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rlcl0s
IHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxv
Y2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJl
Z2lzdGVyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVy
XSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJs
b2NrRm9yQ29uc3RydWN0W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCitt
YWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkNv
ZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAgICBzdG9yZXAgc291cmNlUmVnaXN0ZXIs
IENvZGVCbG9ja1tjZnJdCitlbmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIo
c291cmNlUmVnaXN0ZXIpCisgICAgIyBOb3RoaW5nIHRvIGRvIQorZW5kCisKKyMgRG8gdGhlIGJh
cmUgbWluaW11bSByZXF1aXJlZCB0byBleGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBsZWF2
ZSB0aGUgQ29kZUJsb2NrKgorIyBpbiB0MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRy
eSBPU1IuCittYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwg
b3NySGVscGVyLCB0cmFjZUhlbHBlcikKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNh
bGwodDIpCisgICAgCisgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdl
IHNob3VsZCBPU1IuCisgICAgc3RvcmVwIHQyLCBSZXR1cm5QQ1tjZnJdCisgICAgaWYgRVhFQ1VU
SU9OX1RSQUNJTkcKKyAgICAgICAgY2FsbEhlbHBlcih0cmFjZUhlbHBlcikKKyAgICBlbmQKKyAg
ICBjb2RlQmxvY2tHZXR0ZXIodDEpCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgYmFkZGlz
IDUsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3QxXSwgLmNvbnRpbnVlCisgICAg
ICAgIGNDYWxsMihvc3JIZWxwZXIsIGNmciwgUEMpCisgICAgICAgIG1vdmUgdDEsIGNmcgorICAg
ICAgICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0Mgor
ICAgICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICAgICAgam1w
IHQwCisgICAgLnJlY292ZXI6CisgICAgICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICAuY29u
dGludWU6CisgICAgZW5kCisgICAgY29kZUJsb2NrU2V0dGVyKHQxKQorICAgIAorICAgICMgU2V0
IHVwIHRoZSBQQy4KKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0
b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBp
cyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCisjIE11c3Qg
Y2FsbCBkaXNwYXRjaCgwKSBhZnRlciBjYWxsaW5nIHRoaXMuCittYWNybyBmdW5jdGlvbkluaXRp
YWxpemF0aW9uKHByb2ZpbGVBcmdTa2lwKQorICAgICMgUHJvZmlsZSB0aGUgYXJndW1lbnRzLiBV
bmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIGNob2ljZSBidXQgdG8gZG8gdGhpcy4gVGhpcworICAg
ICMgY29kZSBpcyBwcmV0dHkgaG9ycmVuZG91cyBiZWNhdXNlIG9mIHRoZSBkaWZmZXJlbmNlIGlu
IG9yZGVyaW5nIGJldHdlZW4KKyAgICAjIGFyZ3VtZW50cyBhbmQgdmFsdWUgcHJvZmlsZXMsIHRo
ZSBkZXNpcmUgdG8gaGF2ZSBhIHNpbXBsZSBsb29wLWRvd24tdG8temVybworICAgICMgbG9vcCwg
YW5kIHRoZSBkZXNpcmUgdG8gdXNlIG9ubHkgdGhyZWUgcmVnaXN0ZXJzIHNvIGFzIHRvIHByZXNl
cnZlIHRoZSBQQyBhbmQKKyAgICAjIHRoZSBjb2RlIGJsb2NrLiBJdCBpcyBsaWtlbHkgdGhhdCB0
aGlzIGNvZGUgc2hvdWxkIGJlIHJld3JpdHRlbiBpbiBhIG1vcmUKKyAgICAjIG9wdGltYWwgd2F5
IGZvciBhcmNoaXRlY3R1cmVzIHRoYXQgaGF2ZSBtb3JlIHRoYW4gZml2ZSByZWdpc3RlcnMgYXZh
aWxhYmxlCisgICAgIyBmb3IgYXJiaXRyYXJ5IHVzZSBpbiB0aGUgaW50ZXJwcmV0ZXIuCisgICAg
bG9hZGkgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCB0MAorICAgIGFkZGkgLXByb2Zp
bGVBcmdTa2lwLCB0MCAjIFVzZSBhZGRpIGJlY2F1c2UgdGhhdCdzIHdoYXQgaGFzIHRoZSBwZWVw
aG9sZQorICAgIGFzc2VydChtYWNybyAob2spIGJpZ3RlcSB0MCwgMCwgb2sgZW5kKQorICAgIGJ0
aXogdDAsIC5hcmd1bWVudFByb2ZpbGVEb25lCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2FyZ3Vt
ZW50VmFsdWVQcm9maWxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MV0sIHQzCisgICAgbXVsaSBz
aXplb2YgVmFsdWVQcm9maWxlLCB0MCwgdDIgIyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVk
dWN0aW9uIQorICAgIG5lZ2kgdDAKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MiwgdDMK
Ky5hcmd1bWVudFByb2ZpbGVMb29wOgorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRh
Z09mZnNldCArIDggLSBwcm9maWxlQXJnU2tpcCAqIDhbY2ZyLCB0MF0sIHQyCisgICAgc3VicCBz
aXplb2YgVmFsdWVQcm9maWxlLCB0MworICAgIHN0b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBz
aXplb2YgVmFsdWVQcm9maWxlICsgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRb
dDNdCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldCArIDggLSBw
cm9maWxlQXJnU2tpcCAqIDhbY2ZyLCB0MF0sIHQyCisgICAgc3RvcmVpIHQyLCBwcm9maWxlQXJn
U2tpcCAqIHNpemVvZiBWYWx1ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBh
eWxvYWRPZmZzZXRbdDNdCisgICAgYmFkZGlueiA4LCB0MCwgLmFyZ3VtZW50UHJvZmlsZUxvb3AK
Ky5hcmd1bWVudFByb2ZpbGVEb25lOgorICAgIAorICAgICMgQ2hlY2sgc3RhY2sgaGVpZ2h0Lgor
ICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1DYWxsZWVSZWdpc3RlcnNbdDFdLCB0MAorICAgIGxv
YWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDIKKyAgICBsb2FkcCBKU0dsb2JhbERh
dGE6OmludGVycHJldGVyW3QyXSwgdDIgICAjIEZJWE1FOiBDYW4gZ2V0IHRvIHRoZSBSZWdpc3Rl
ckZpbGUgZnJvbSB0aGUgSklUU3RhY2tGcmFtZQorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRw
IHQwLCBjZnIsIHQwCisgICAgYnBhZXEgSW50ZXJwcmV0ZXI6Om1fcmVnaXN0ZXJGaWxlICsgUmVn
aXN0ZXJGaWxlOjptX2VuZFt0Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSworCisgICAgIyBTdGFjayBo
ZWlnaHQgY2hlY2sgZmFpbGVkIC0gbmVlZCB0byBjYWxsIGEgaGVscGVyLgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X3JlZ2lzdGVyX2ZpbGVfY2hlY2spCisuc3RhY2tIZWlnaHRPSzoKK2VuZAorCisj
IEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUo
KSBsZWF2ZXMgYmVoaW5kLgorbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgaGVs
cGVyKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisg
ICAgYmlhZXEgdDAsIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCisg
ICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykgICAjIFRoaXMgaGVscGVyIGhhcyBhIHNpbXBsZSBw
cm90b2NvbDogdDAgPSAwID0+IG5vIGVycm9yLCB0MCAhPSAwID0+IGVycm9yCisgICAgbW92ZSB0
MSwgY2ZyCisgICAgYnRpeiB0MCwgLmNvbnRpbnVlCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6
Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JU
aHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhy
b3dbdDFdCisuY29udGludWU6CisgICAgIyBSZWxvYWQgQ29kZUJsb2NrIGFuZCBQQywgc2luY2Ug
dGhlIGhlbHBlciBjbG9iYmVyZWQgaXQuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29k
ZUJsb2NrOjpJbnN0cnVjdGlvbnM6Om1faW5zdHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0
W3QwXSwgUEMKKyAgICBqbXAgZG9uZUxhYmVsCitlbmQKKworX2xsaW50X3Byb2dyYW1fcHJvbG9n
dWU6CisgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9u
Q29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUp
CisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfZXZhbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1
ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIs
IF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgw
KQorCisKK19sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShm
dW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBf
bGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVf
ZnVuY3Rpb25fZm9yX2NhbGwpCisuZnVuY3Rpb25Gb3JDYWxsQmVnaW46CisgICAgZnVuY3Rpb25J
bml0aWFsaXphdGlvbigwKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3Ry
dWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5
X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdCkKKy5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgorICAgIGZ1bmN0
aW9uSW5pdGlhbGl6YXRpb24oMSkKKyAgICBkaXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxs
Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29z
cl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19m
b3JfY2FsbCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBf
bGxpbnRfaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENv
ZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3Jf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVj
a19mb3JfY29uc3RydWN0KQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RCZWdpbiwgX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKKworIyBJbnN0
cnVjdGlvbiBpbXBsZW1lbnRhdGlvbnMKKworX2xsaW50X29wX2VudGVyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkaSBDb2RlQmxv
Y2s6Om1fbnVtVmFyc1t0Ml0sIHQyCisgICAgYnRpeiB0MiwgLm9wRW50ZXJEb25lCisgICAgbW92
ZSBVbmRlZmluZWRUYWcsIHQwCisgICAgbW92ZSAwLCB0MQorLm9wRW50ZXJMb29wOgorICAgIHN1
YmkgMSwgdDIKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3Jl
aSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGJ0aW56IHQyLCAub3BFbnRlckxv
b3AKKy5vcEVudGVyRG9uZToKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9jcmVhdGVf
YWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVB
Y3RpdmF0aW9uRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYWN0aXZh
dGlvbikKKy5vcENyZWF0ZUFjdGl2YXRpb25Eb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xs
aW50X29wX2luaXRfbGF6eV9yZWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0K
KyAgICBzdG9yZWkgMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX2NyZWF0ZV9hcmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1w
dHlWYWx1ZVRhZywgLm9wQ3JlYXRlQXJndW1lbnRzRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQorLm9wQ3JlYXRlQXJndW1lbnRzRG9uZToKKyAgICBk
aXNwYXRjaCgyKQorCisKK21hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJbmRl
eCwgY2xhc3NJbmZvT2Zmc2V0LCBzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gy
LCBzbG93Q2FzZSkKKyAgICBjb25zdCBvZmZzZXRPZk15U2l6ZUNsYXNzID0gSlNHbG9iYWxEYXRh
OjpoZWFwICsgSGVhcDo6bV9vYmplY3RTcGFjZSArIE1hcmtlZFNwYWNlOjptX3ByZWNpc2VTaXpl
Q2xhc3NlcyArIHNpemVDbGFzc0luZGV4ICogc2l6ZW9mIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MK
KyAgICAKKyAgICAjIEZJWE1FOiB3ZSBjYW4gZ2V0IHRoZSBnbG9iYWwgZGF0YSBpbiBvbmUgbG9h
ZCBmcm9tIHRoZSBzdGFjay4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgc2NyYXRjaDEKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVtzY3JhdGNoMV0sIHNjcmF0Y2gxCisgICAg
CisgICAgIyBHZXQgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuICAgIAorICAgIGxvYWRw
IG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVD
ZWxsW3NjcmF0Y2gxXSwgcmVzdWx0CisgICAgYnRweiByZXN1bHQsIHNsb3dDYXNlCisgICAgCisg
ICAgIyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCisgICAgbG9hZHAgW3Jl
c3VsdF0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNz
ICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0KKworICAg
ICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgorICAgIGxvYWRwIGNsYXNzSW5mb09mZnNldFtzY3Jh
dGNoMV0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gyLCBbcmVzdWx0XQorICAgIHN0b3Jl
cCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQorICAgIHN0b3JlcCAwLCBK
U09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCisgICAgYWRkcCBzaXplb2YgSlNPYmplY3Qs
IHJlc3VsdCwgc2NyYXRjaDEKKyAgICBzdG9yZXAgc2NyYXRjaDEsIEpTT2JqZWN0OjptX3Byb3Bl
cnR5U3RvcmFnZVtyZXN1bHRdCitlbmQKKworX2xsaW50X29wX2NyZWF0ZV90aGlzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBhc3NlcnROb3RDb25zdGFu
dCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENyZWF0
ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5vcENyZWF0ZVRoaXNT
bG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbdDBdLCB0MgorICAgIGJ0cHog
dDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxP
YmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZv
LCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQx
CisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcENyZWF0
ZVRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfdGhpcykKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9nZXRfY2FsbGVlOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0ICsgQ2Fs
bGVlW2Nmcl0sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQor
ICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX2NvbnZlcnRfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFn
LCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJiYiBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9w
Q29udmVydFRoaXNTbG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ29udmVydFRoaXNTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jb252ZXJ0X3RoaXMpCisgICAgZGlzcGF0Y2go
MikKKworCitfbGxpbnRfb3BfbmV3X29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9i
amVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fZW1wdHlPYmplY3RTdHJ1
Y3R1cmVbdDBdLCB0MQorICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6
ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywgdDEsIHQw
LCB0MiwgdDMsIC5vcE5ld09iamVjdFNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3Rv
cmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcE5ld09iamVjdFNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19vYmplY3QpCisgICAgZGlzcGF0Y2go
MikKKworCitfbGxpbnRfb3BfbmV3X2FycmF5OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2FycmF5KQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX25ld19hcnJheV9idWZmZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX25ld19yZWdleHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfcmVnZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX21vdjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQx
CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIs
IHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQz
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRf
b3Bfbm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisg
ICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5vcE5vdFNsb3cKKyAgICB4b3JpIDEsIHQzCisgICAg
c3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOb3RTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ub3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRf
b3BfZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBs
b2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0Miwg
dDMsIC5vcEVxU2xvdworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcEVxU2xvdworICAgIGJpYiB0
MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaWVxIHQw
LCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkK
KworLm9wRXFTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9lcSkKKyAgICBkaXNw
YXRjaCg0KQorCisKK19sbGludF9vcF9lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25z
dGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9w
RXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisg
ICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0ZQor
Lm9wRXFOdWxsSW1tZWRpYXRlOgorICAgIGNpZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2llcSB0
MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIG9yaSB0MiwgdDEKKy5vcEVxTnVsbE5vdEltbWVkaWF0
ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3Rv
cmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfbmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQy
CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMs
IHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmlu
ZXEgdDIsIHQzLCAub3BOZXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wTmVxU2xvdwor
ICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFTbG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisg
ICAgY2luZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBk
aXNwYXRjaCg0KQorCisub3BOZXFTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9u
ZXEpCisgICAgZGlzcGF0Y2goNCkKKyAgICAKKworX2xsaW50X29wX25lcV9udWxsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMK
KyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5l
cSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbEltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5m
bzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5vcE5l
cU51bGxOb3RJbW1lZGlhdGUKKy5vcE5lcU51bGxJbW1lZGlhdGU6CisgICAgY2luZXEgdDEsIE51
bGxUYWcsIHQyCisgICAgY2luZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKKyAgICBhbmRpIHQyLCB0
MQorLm9wTmVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zm
c2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhd
CisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBzdHJpY3RFcShlcXVhbGl0eU9wZXJhdGlvbiwg
aGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5zbG93CisgICAgYmliIHQy
LCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIENlbGxUYWcsIC5ub3RTdHJpbmcKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QxXSwgdDMKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZworICAgIGJiZXEgU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93
Cisubm90U3RyaW5nOgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGVxdWFsaXR5T3BlcmF0aW9u
KHQwLCB0MSwgdDApCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4
XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNo
KDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDQpCitl
bmQKKworX2xsaW50X29wX3N0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJp
Y3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0
IGVuZCwgX2xsaW50X2hlbHBlcl9zdHJpY3RlcSkKKworCitfbGxpbnRfb3BfbnN0cmljdGVxOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJl
c3VsdCkgY2luZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9oZWxwZXJfbnN0cmlj
dGVxKQorCisKK19sbGludF9vcF9sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfbGVzcykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9sZXNzZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dyZWF0ZXIp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcmVxKQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX3ByZV9pbmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50
MzJUYWcsIC5vcFByZUluY1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MQorICAgIGJhZGRpbyAxLCB0MSwgLm9wUHJlSW5jU2xvdworICAgIHN0b3JlaSB0MSwgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcFByZUluY1Nsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3ByZV9pbmMpCisgICAgZGlzcGF0Y2goMikK
KworCitfbGxpbnRfb3BfcHJlX2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9w
UHJlRGVjU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAg
YnN1YmlvIDEsIHQxLCAub3BQcmVEZWNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlRGVjU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2RlYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9wb3N0X2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQw
CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJ
bnQzMlRhZywgLm9wUG9zdEluY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdEluY0RvbmUK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQz
CisgICAgYmFkZGlvIDEsIHQzLCAub3BQb3N0SW5jU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywg
VGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0
SW5jRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0SW5jU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcG9zdF9pbmMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRf
b3BfcG9zdF9kZWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50
MzJUYWcsIC5vcFBvc3REZWNTbG93CisgICAgYmllcSB0MCwgdDEsIC5vcFBvc3REZWNEb25lCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAgICBtb3ZlIHQyLCB0Mwor
ICAgIGJzdWJpbyAxLCB0MywgLm9wUG9zdERlY1Nsb3cKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRh
Z09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorLm9wUG9zdERl
Y0RvbmU6CisgICAgZGlzcGF0Y2goMykKKworLm9wUG9zdERlY1Nsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Bvc3RfZGVjKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X3RvX2pzbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0Miwg
dDMpCisgICAgYmllcSB0MiwgSW50MzJUYWcsIC5vcFRvSnNudW1iZXJJc0ludAorICAgIGJpYWVx
IHQyLCBFbXB0eVZhbHVlVGFnLCAub3BUb0pzbnVtYmVyU2xvdworLm9wVG9Kc251bWJlcklzSW50
OgorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9Kc251bWJl
clNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RvX2pzbnVtYmVyKQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX25lZ2F0ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRl
U3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdworICAgIG5l
Z2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0
b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisub3BO
ZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKKyAg
ICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0Mywg
OF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRj
aCgzKQorCisub3BOZWdhdGVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZWdh
dGUpCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKGludGVn
ZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkg
MTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQw
KQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAgIGJpbmVxIHQzLCBJbnQz
MlRhZywgLm9wMk5vdEludAorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGludGVnZXJPcGVyYXRp
b25BbmRTdG9yZSh0MywgdDEsIHQwLCAuc2xvdywgdDIpCisgICAgZGlzcGF0Y2goNSkKKworLm9w
MU5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0
aGUgc2Vjb25kIG9wZXJhbmQgY291bGQgYmUgYW55dGhpbmcuCisgICAgYmlhIHQyLCBMb3dlc3RU
YWcsIC5zbG93CisgICAgYmliIHQzLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAg
ICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MSwgZnQxCisgICAgam1wIC5v
cDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MSwgdDMsIGZ0
MQorLm9wMU5vdEludFJlYWR5OgorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGZpaTJkIHQwLCB0
MiwgZnQwCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtj
ZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcDJOb3RJbnQ6CisgICAgIyBGaXJzdCBv
cGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgaXMgZGVmaW5p
dGVseSBub3QuCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgYmlhIHQzLCBMb3dlc3RUYWcsIC5z
bG93CisgICAgY2kyZCB0MCwgZnQwCisgICAgZmlpMmQgdDEsIHQzLCBmdDEKKyAgICBkb3VibGVP
cGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDIsIDhdCisgICAgZGlz
cGF0Y2goNSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2go
NSkKK2VuZAorCittYWNybyBiaW5hcnlPcChpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRp
b24sIGhlbHBlcikKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50
MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGludGVnZXJPcGVy
YXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRh
Z09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2Fk
T2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAgICAgZG91YmxlT3BlcmF0
aW9uLCBoZWxwZXIpCitlbmQKKworX2xsaW50X29wX2FkZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYmFkZGlv
IGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBhZGRk
IGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9hZGQpCisKKworX2xsaW50
X29wX211bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgK
KyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAg
ICAgICAgICBjb25zdCBzY3JhdGNoID0gaW50MzJUYWcgICAjIFdlIGtub3cgdGhhdCB3ZSBjYW4g
cmV1c2UgdGhlIGludDMyVGFnIHJlZ2lzdGVyIHNpbmNlIGl0IGhhcyBhIGNvbnN0YW50LgorICAg
ICAgICAgICAgbW92ZSByaWdodCwgc2NyYXRjaAorICAgICAgICAgICAgYm11bGlvIGxlZnQsIHNj
cmF0Y2gsIHNsb3cKKyAgICAgICAgICAgIGJ0aW56IHNjcmF0Y2gsIC5kb25lCisgICAgICAgICAg
ICBiaWx0IGxlZnQsIDAsIHNsb3cKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAg
ICAgICAgLmRvbmU6CisgICAgICAgICAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIs
IGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFBheWxvYWRPZmZzZXRbY2Zy
LCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIG11
bGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX211bCkKKworCitfbGxp
bnRfb3Bfc3ViOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBic3ViaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIHN1YmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX3N1YikKKworCitfbGxpbnRfb3BfZGl2OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcs
IGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGNpMmQgbGVmdCwgZnQwCisg
ICAgICAgICAgICBjaTJkIHJpZ2h0LCBmdDEKKyAgICAgICAgICAgIGRpdmQgZnQwLCBmdDEKKyAg
ICAgICAgICAgIGJjZDJpIGZ0MSwgcmlnaHQsIC5ub3RJbnQKKyAgICAgICAgICAgIHN0b3JlaSBp
bnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmln
aHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIGptcCAuZG9uZQor
ICAgICAgICAubm90SW50OgorICAgICAgICAgICAgc3RvcmVkIGZ0MSwgW2NmciwgaW5kZXgsIDhd
CisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCkgZGl2ZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfZGl2KQorCisK
K19sbGludF9vcF9tb2Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9tb2QpCisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBiaXRPcChvcGVyYXRp
b24sIGhlbHBlciwgYWR2YW5jZSkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQ
Q10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDMsIEludDMyVGFn
LCAuc2xvdworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBsb2FkaSA0W1BDXSwg
dDIKKyAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xvdykKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNl
dFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQor
ICAgIGRpc3BhdGNoKGFkdmFuY2UpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQor
ICAgIGRpc3BhdGNoKGFkdmFuY2UpCitlbmQKKworX2xsaW50X29wX2xzaGlmdDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xv
dykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbHNoaWZ0
LAorICAgICAgICA0KQorCisKK19sbGludF9vcF9yc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkg
bGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3JzaGlmdCwKKyAgICAgICAg
NCkKKworCitfbGxpbnRfb3BfdXJzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0
T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHVyc2hp
ZnRpIGxlZnQsIHJpZ2h0CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAg
IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl91cnNoaWZ0LAorICAgICAgICA0KQorCisKK19s
bGludF9vcF9iaXRhbmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2JpdGFuZCwKKyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0eG9y
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl9iaXR4b3IsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG9yOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBv
cmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdG9yLAorICAgICAg
ICA1KQorCisKK19sbGludF9vcF9iaXRub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDEsIHQyLCB0MykKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcEJpdG5vdFNsb3cK
KyAgICBub3RpIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBz
dG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisu
b3BCaXRub3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9iaXRub3QpCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93KQorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2Us
IC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ2hlY2tIYXNJ
bnN0YW5jZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NoZWNrX2hhc19pbnN0
YW5jZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbnN0YW5jZW9mOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICAjIENoZWNrIHRoYXQgYmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBk
ZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9yLgorICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJl
IGRlcHJlY2F0ZWQuCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkVW5jaGVja2VkKHQxLCB0MCkKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjpt
X2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgLm9wSW5zdGFuY2VvZlNs
b3cKKyAgICAKKyAgICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgorICAgIGxvYWRpIDE2W1BDXSwg
dDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEluc3RhbmNlb2ZTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRh
ZywgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQorICAgIAorICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQx
ID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCisgICAgbW92ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxv
b3A6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCisgICAgbG9hZGkgU3Ry
dWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDJdLCB0MgorICAgIGJwZXEgdDIs
IHQxLCAub3BJbnN0YW5jZW9mRG9uZQorICAgIGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcAor
CisgICAgbW92ZSAwLCB0MAorLm9wSW5zdGFuY2VvZkRvbmU6CisgICAgc3RvcmVpIEJvb2xlYW5U
YWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEluc3RhbmNlb2ZTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbnN0YW5jZW9mKQorICAgIGRpc3BhdGNoKDUpCisKKwor
X2xsaW50X29wX3R5cGVvZjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3R5cGVvZikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc191
bmRlZmluZWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9pc191bmRlZmluZWQpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfYm9v
bGVhbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2lzX2Jvb2xlYW4pCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfbnVtYmVyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfbnVt
YmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3N0cmluZzoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3N0cmluZykKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19vYmplY3Q6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19vYmplY3QpCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfaXNfZnVuY3Rpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19mdW5jdGlvbikKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9pbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2luKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29s
dmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9y
ZXNvbHZlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29sdmVfc2tpcDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVf
c2tpcCkKKyAgICBkaXNwYXRjaCg1KQorCisKK21hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xv
dykKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5h
dGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIFByb3BlcnR5IGlkZW50aWZpZXIgaW5k
ZXggaW4gdGhlIGNvZGUgYmxvY2suCisgICAgIyAxMltQQ10gIFN0cnVjdHVyZSBwb2ludGVyLCBp
bml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAgICAjIDE2W1BDXSAgT2Zm
c2V0IGluIGdsb2JhbCBvYmplY3QsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJh
dG9yLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6
bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MQorICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cKKyAgICBsb2FkaSAxNltQQ10sIHQxCisg
ICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKKyAgICBsb2FkaSBU
YWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwg
OF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBs
b2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQwCisgICAgdmFsdWVQcm9maWxlKHQyLCB0MywgdDAp
CitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICByZXNvbHZlR2xvYmFsKDYsIC5vcFJlc29sdmVHbG9iYWxTbG93KQorICAgIGRpc3BhdGNo
KDYpCisKKy5vcFJlc29sdmVHbG9iYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNwYXRjaCg2KQorCisKKyMgR2l2ZXMgeW91IHRoZSBz
Y29wZSBpbiB0MCwgd2hpbGUgYWxsb3dpbmcgeW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRp
dGlvbmFsIGNoZWNrcyBvbiB0aGUKKyMgc2NvcGVzIGFzIHRoZXkgYXJlIHRyYXZlcnNlZC4gc2Nv
cGVDaGVjaygpIGlzIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSByZWdpc3RlcgorIyBo
b2xkaW5nIHRoZSBzY29wZSwgYW5kIGEgcmVnaXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc2Ny
YXRjaC4gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QKKyMgdXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQg
c3R1ZmYgaW4gdDMgaWYgbmVlZCBiZS4KK21hY3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3Bl
cmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2FkcCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtj
ZnJdLCB0MAorICAgIGxvYWRpIGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIKKyAgICAKKyAgICBi
dGl6IHQyLCAuZG9uZQorICAgIAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGJp
bmVxIENvZGVCbG9jazo6bV9jb2RlVHlwZVt0MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AKKyAgICBi
dGJ6IENvZGVCbG9jazo6bV9uZWVkc0Z1bGxTY29wZUNoYWluW3QxXSwgLmxvb3AKKyAgICAKKyAg
ICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEKKworICAgICMg
TmVlZCB0byBjb25kaXRpb25hbGx5IHNraXAgb3ZlciBvbmUgc2NvcGUuCisgICAgYmllcSBUYWdP
ZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2YXRpb24KKyAgICBzY29w
ZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisu
bm9BY3RpdmF0aW9uOgorICAgIHN1YmkgMSwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQor
Lmxvb3A6CisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6
Om5leHRbdDBdLCB0MAorICAgIHN1YmkgMSwgdDIKKyAgICBidGlueiB0MiwgLmxvb3AKKworLmRv
bmU6CitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0Mwor
ICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0aXZhdGlvblN0cnVjdHVyZVt0M10sIHQzCisgICAg
Z2V0U2NvcGUoCisgICAgICAgIDIwW1BDXSwKKyAgICAgICAgbWFjcm8gKHNjb3BlLCBzY3JhdGNo
KQorICAgICAgICAgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0
Y2gKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAu
b3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdworICAgICAgICBlbmQpCisgICAgcmVzb2x2
ZUdsb2JhbCg3LCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3cpCisgICAgZGlzcGF0Y2goNykK
KworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCisgICAgZGlzcGF0
Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQorICAgIGRpc3BhdGNoKDcpCisKKwor
X2xsaW50X29wX2dldF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIE9w
ZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhl
IGxvYWQuCisgICAgIyA4W1BDXSAgIEluZGV4IG9mIHJlZ2lzdGVyIGluIHRoZSBzY29wZS4KKyAg
ICAjIDEyW1BDXSAgRGUgQnJ1aWppbiBpbmRleC4KKyAgICBnZXRTY29wZSgxMltQQ10sIG1hY3Jv
IChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIDhb
UENdLCB0MgorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3RbdDBdLCB0MAorICAgIGxv
YWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbdDAsIHQyLCA4XSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0s
IHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgdmFs
dWVQcm9maWxlKHQzLCB0MCwgdDEpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfcHV0
X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGdldFNjb3BlKDhbUENdLCBt
YWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDMsIHQyKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAg
IHdyaXRlQmFycmllcih0MywgdDIpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0
MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAor
ICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxv
YWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9n
bG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAg
ICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9i
amVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhd
LCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDEKKyAgICBzdG9yZWkg
dDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQzLCA4XQorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQx
LCB0MykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQw
CisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAg
d3JpdGVCYXJyaWVyKHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFt0MCwgdDEsIDhd
CisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9yZXNvbHZlX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2Jhc2UpCisgICAgZGlzcGF0Y2goNSkK
KworCitfbGxpbnRfb3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0czoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMp
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV93aXRoX2Jhc2U6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3dp
dGhfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfdGhp
czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jl
c29sdmVfd2l0aF90aGlzKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2dldF9ieV9p
ZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdl
dF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQorICAgICMg
b3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55
dGltZSBpZiBmYWlscywgc2luY2UKKyAgICAjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0
IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRpbnVlCisgICAgIyB0byB0
YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0
aCwgd2hpY2ggaXMgd2hhdAorICAgICMgd2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4K
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAg
ICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdl
W3QzXSwgdDAKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5
SWRTbG93CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0Ml0s
IHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDJdLCB0MgorICAgIHN0b3JlaSB0Mywg
VGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgbG9hZGkgMzJbUENdLCB0MQorICAgIHZhbHVlUHJvZmlsZSh0MywgdDIsIHQx
KQorICAgIGRpc3BhdGNoKDkpCisKKy5vcEdldEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9nZXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOSkKKworCitfbGxpbnRfb3BfZ2V0
X2FyZ3VtZW50c19sZW5ndGg6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdworICAgIGxvYWRpIEFy
Z3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQyCisgICAgc3ViaSAxLCB0MgorICAg
IHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QXJndW1l
bnRzTGVuZ3RoU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50
c19sZW5ndGgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10s
IHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAu
b3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6
Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MCwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQwLCB0
MikKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDFdCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBkaXNwYXRjaCg5KQorCisub3BQdXRCeUlkU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X2lkKQorICAgIGRpc3BhdGNoKDkpCisK
KworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNrcykKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJ
ZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0Mywg
Lm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0
OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYWRkcCB0MSwgdDMKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDEsIHQyKQorICAgIHdyaXRlQmFycmllcih0MSwgdDIp
CisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgMjRbUENdLCB0MQorICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdCisgICAgZGlzcGF0Y2goOSkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0OgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1
Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAorICAgICAgICBtYWNybyAob2xk
U3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQorICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0g
b2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRo
ZSBwcm90bworICAgICAgICAKKyAgICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAorICAg
ICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgICAg
ICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisg
ICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAg
ICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0
dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAgICAgICAgLmxvb3A6CisgICAgICAgICAgICBsb2FkaSBT
dHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90
b0NlbGwKKyAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwg
b2xkU3RydWN0dXJlCisgICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwg
c2xvdworICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCisgICAgICAgICAgICBiaW5lcSBTdHJ1
Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5s
b29wCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQpCisKKworX2xsaW50X29wX2RlbF9ieV9p
ZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Rl
bF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfdmFsOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2Fk
aSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2dsb2JhbERhdGFbdDFdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQy
LCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6
anNBcnJheUNsYXNzSW5mb1t0MV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQodDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAgIGJwbmVxIFt0MF0sIHQy
LCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDBdLCB0Mwor
ICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xv
dworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3Ig
KyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVj
dG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQorICAgIGJpZXEgdDIsIEVtcHR5VmFs
dWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgbG9hZGkg
MTZbUENdLCB0MAorICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQwKQorICAgIGRpc3BhdGNoKDUp
CisKKy5vcEdldEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5
X3ZhbCkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFs
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAx
MltQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFn
LCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQxLCBJbnQzMlRhZywgdDIsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93KQorICAgIGFkZGkg
MSwgdDIKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQor
ICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAgICBuZWdpIHQyCisg
ICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zm
c2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0
MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNw
YXRjaCg0KQorCisub3BHZXRBcmd1bWVudEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9nZXRfYnlfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BD
XSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEs
IC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICBicG5lcSB0MSwg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywg
dDIsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDAKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDJdLCB0MAorICAgIGJwbmVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hl
ZFN0cnVjdHVyZVt0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkgMjRbUENdLCB0MAor
ICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAKKyAgICBzdWJpIDEsIHQwCisgICAgYmlhZXEgdDAs
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2FjaGVhYmxlU2xvdHNbdDNdLCAub3BHZXRC
eVBuYW1lU2xvdworICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0Ml0sIHQy
CisgICAgbG9hZGkgVGFnT2Zmc2V0W3QyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFt0MiwgdDAsIDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MSwg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCisgICAgZGlzcGF0Y2goNykKKworLm9wR2V0QnlQbmFtZVNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9wbmFtZSkKKyAgICBkaXNwYXRjaCg3KQorCisKK19s
bGludF9vcF9wdXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEs
IC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MCwgSW50MzJUYWcsIHQyLCAub3BQdXRCeVZhbFNsb3cpCisgICAg
bG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERh
dGFbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MF0s
IHQwCisgICAgYnBuZXEgW3QxXSwgdDAsIC5vcFB1dEJ5VmFsU2xvdworICAgIGJpYWVxIHQyLCBK
U0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MV0sIC5vcFB1dEJ5VmFsU2xvdworICAgIGxvYWRwIEpT
QXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQwCisgICAgYmllcSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9y
ICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFB1dEJ5VmFsRW1wdHkK
Ky5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQ6CisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MSwgdDMpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0
MykKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAs
IHQyLCA4XQorICAgIHN0b3JlaSB0MywgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRP
ZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcFB1dEJ5VmFsRW1wdHk6Cisg
ICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCisgICAgYmli
IHQyLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXSwgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAor
ICAgIGFkZGkgMSwgdDIsIHQxCisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3Ro
W3QwXQorICAgIGptcCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisKKy5vcFB1dEJ5VmFsU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9kZWxfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9wdXRfYnlfaW5kZXg6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaW5kZXgpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfcHV0X2dldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3B1dF9nZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfcHV0X3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3B1dF9zZXR0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbG9v
cDoKKyAgICBub3AKK19sbGludF9vcF9qbXA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRp
c3BhdGNoQnJhbmNoKDRbUENdKQorCisKK19sbGludF9vcF9qbXBfc2NvcGVzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfam1wX3Njb3BlcykKKyAg
ICBkaXNwYXRjaCgwKQorCisKK21hY3JvIGp1bXBUcnVlT3JGYWxzZShjb25kaXRpb25PcCwgc2xv
dykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MSwgQm9vbGVhblRhZywgdDAsIC5zbG93KQorICAgIGNvbmRpdGlvbk9wKHQwLCAudGFyZ2V0
KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10p
CisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoc2xvdykKKyAgICBkaXNwYXRjaCgwKQorZW5kCisK
K19sbGludF9vcF9sb29wX2lmX3RydWU6CisgICAgbm9wCitfbGxpbnRfb3BfanRydWU6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAgbWFjcm8gKHZh
bHVlLCB0YXJnZXQpIGJ0aW56IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVs
cGVyX2p0cnVlKQorCisKK19sbGludF9vcF9sb29wX2lmX2ZhbHNlOgorICAgIG5vcAorX2xsaW50
X29wX2pmYWxzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAganVtcFRydWVPckZhbHNlKAor
ICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpeiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl9qZmFsc2UpCisKKworbWFjcm8gZXF1YWxOdWxsKGNlbGxIYW5k
bGVyLCBpbW1lZGlhdGVIYW5kbGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAuaW1tZWRpYXRlCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgY2VsbEhhbmRsZXIoU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMp
CisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5pbW1lZGlhdGU6Cisg
ICAgb3JpIDEsIHQxCisgICAgaW1tZWRpYXRlSGFuZGxlcih0MSwgLnRhcmdldCkKKyAgICBkaXNw
YXRjaCgzKQorZW5kCisKK19sbGludF9vcF9qZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRibnogdmFs
dWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2
YWx1ZSwgdGFyZ2V0KSBiaWVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorICAgIAorCitf
bGxpbnRfb3Bfam5lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwo
CisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJ6IHZhbHVlLCBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmlu
ZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisKKworX2xsaW50X29wX2puZXFfcHRyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BD
XSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcEpuZXFQ
dHJCcmFuY2gKKyAgICBicGVxIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxLCAub3BKbmVx
UHRyRmFsbFRocm91Z2gKKy5vcEpuZXFQdHJCcmFuY2g6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJb
UENdKQorLm9wSm5lcVB0ckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8g
Y29tcGFyZShpbnRlZ2VyQ29tcGFyZSwgZG91YmxlQ29tcGFyZSwgaGVscGVyKQorICAgIGxvYWRp
IDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDIsIHQwLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MywgdDIsIHQz
KQorICAgIGJpbmVxIHQwLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAgIGJpbmVxIHQyLCBJbnQz
MlRhZywgLm9wMk5vdEludAorICAgIGludGVnZXJDb21wYXJlKHQxLCB0MywgLmp1bXBUYXJnZXQp
CisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5vdEludDoKKyAgICBiaWEgdDAsIExvd2VzdFRhZywg
LnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJp
bmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQzLCBmdDEKKyAgICBqbXAgLm9wMU5v
dEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQzLCB0MiwgZnQxCisu
b3AxTm90SW50UmVhZHk6CisgICAgZmlpMmQgdDEsIHQwLCBmdDAKKyAgICBkb3VibGVDb21wYXJl
KGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisub3AyTm90SW50Ogor
ICAgIGNpMmQgdDEsIGZ0MAorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGZpaTJk
IHQzLCB0MiwgZnQxCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisg
ICAgZGlzcGF0Y2goNCkKKworLmp1bXBUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENd
KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCgwKQorZW5k
CisKK19sbGludF9vcF9sb29wX2lmX2xlc3M6CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3M6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl9qbGVzcykKKworCitfbGxpbnRfb3Bfam5sZXNzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzKQorCisKK19sbGludF9vcF9sb29wX2lmX2dyZWF0
ZXI6CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxl
ZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmRndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9q
Z3JlYXRlcikKKworCitfbGxpbnRfb3Bfam5ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVx
IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRh
cmdldCkgYmRsdGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfam5ncmVhdGVyKQorCisKK19sbGludF9vcF9sb29wX2lmX2xlc3NlcToKKyAgICBub3AK
K19sbGludF9vcF9qbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxIGxl
ZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2psZXNzZXEpCisK
KworX2xsaW50X29wX2pubGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJl
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3R1biBs
ZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmxlc3NlcSkK
KworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyZXE6CisgICAgbm9wCitfbGxpbnRfb3Bfamdy
ZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcSBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qZ3JlYXRlcmVxKQorCisKK19sbGlu
dF9vcF9qbmdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0dW4gbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5ncmVhdGVyZXEpCisK
KworX2xsaW50X29wX2xvb3BfaGludDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tT
d2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N3aXRj
aF9pbW06CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBs
b2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVE
YXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQzICAgIyBGSVhN
RTogd291bGQgYmUgbmljZSB0byBwZWVwaG9sZSB0aGlzIQorICAgIGxvYWRwIENvZGVCbG9jazo6
UmFyZURhdGE6Om1faW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNl
dFt0Ml0sIHQyCisgICAgYWRkcCB0MywgdDIKKyAgICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcFN3
aXRjaEltbU5vdEludAorICAgIHN1YmkgU2ltcGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAg
IGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zm
c2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTaW1wbGVKdW1wVGFi
bGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MworICAgIGxvYWRp
IFt0MywgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEsIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisg
ICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQorCisub3BTd2l0Y2hJbW1Ob3RJbnQ6Cisg
ICAgYmliIHQxLCBMb3dlc3RUYWcsIC5vcFN3aXRjaEltbVNsb3cgICMgR28gdG8gc2xvdyBwYXRo
IGlmIGl0J3MgYSBkb3VibGUuCisub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRj
aEJyYW5jaCg4W1BDXSkKKworLm9wU3dpdGNoSW1tU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfc3dpdGNoX2ltbSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9zd2l0
Y2hfY2hhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAg
IGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkK
KyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFy
ZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMKKyAgICBs
b2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2NoYXJhY3RlclN3aXRjaEp1bXBUYWJsZXMgKyBW
ZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEgdDEs
IENlbGxUYWcsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJ
bmZvOjptX3R5cGVbdDFdLCBTdHJpbmdUeXBlLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAg
ICBsb2FkcCBKU1N0cmluZzo6bV92YWx1ZVt0MF0sIHQwCisgICAgYmluZXEgU3RyaW5nSW1wbDo6
bV9sZW5ndGhbdDBdLCAxLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTdHJp
bmdJbXBsOjptX2RhdGE4W3QwXSwgdDEKKyAgICBidGlueiBTdHJpbmdJbXBsOjptX2hhc2hBbmRG
bGFnc1t0MF0sIEhhc2hGbGFnczhCaXRCdWZmZXIsIC5vcFN3aXRjaENoYXI4Qml0CisgICAgbG9h
ZGggW3QxXSwgdDAKKyAgICBqbXAgLm9wU3dpdGNoQ2hhclJlYWR5Cisub3BTd2l0Y2hDaGFyOEJp
dDoKKyAgICBsb2FkYiBbdDFdLCB0MAorLm9wU3dpdGNoQ2hhclJlYWR5OgorICAgIHN1YmkgU2lt
cGxlSnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6
OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoQ2hhckZhbGxU
aHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9y
QnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBsb2FkaSBbdDIsIHQwLCA0XSwgdDEKKyAgICBidGl6
IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNl
dCh0MSkKKworLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhb
UENdKQorCisKK19sbGludF9vcF9zd2l0Y2hfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3dpdGNoX3N0cmluZykKKyAgICBkaXNwYXRj
aCgwKQorCisKK19sbGludF9vcF9uZXdfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
YnRpeiAxMltQQ10sIC5vcE5ld0Z1bmNVbmNoZWNrZWQKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcE5ld0Z1bmNE
b25lCisub3BOZXdGdW5jVW5jaGVja2VkOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9u
ZXdfZnVuYykKKy5vcE5ld0Z1bmNEb25lOgorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X25ld19mdW5jX2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX25ld19mdW5jX2V4cCkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGRvQ2Fs
bChoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAg
IGxvYWRwIExMSW50Q2FsbExpbmtJbmZvOjpjYWxsZWVbdDFdLCB0MgorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MywgLm9wQ2FsbFNsb3cpCisgICAgYmlu
ZXEgdDMsIHQyLCAub3BDYWxsU2xvdworICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBhZGRwIDI0
LCBQQworICAgIGxzaGlmdGkgMywgdDMKKyAgICBhZGRwIGNmciwgdDMgICMgdDMgY29udGFpbnMg
dGhlIG5ldyB2YWx1ZSBvZiBjZnIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX3Njb3BlQ2hhaW5b
dDJdLCB0MAorICAgIHN0b3JlaSB0MiwgQ2FsbGVlICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBz
dG9yZWkgdDAsIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGxvYWRpIDggLSAy
NFtQQ10sIHQyCisgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0K
KyAgICBzdG9yZXAgY2ZyLCBDYWxsZXJGcmFtZVt0M10KKyAgICBzdG9yZWkgdDIsIEFyZ3VtZW50
Q291bnQgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBDYWxsZWUgKyBU
YWdPZmZzZXRbdDNdCisgICAgc3RvcmVpIENlbGxUYWcsIFNjb3BlQ2hhaW4gKyBUYWdPZmZzZXRb
dDNdCisgICAgbW92ZSB0MywgY2ZyCisgICAgY2FsbCBMTEludENhbGxMaW5rSW5mbzo6bWFjaGlu
ZUNvZGVUYXJnZXRbdDFdCisgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorCisub3BDYWxsU2xvdzoK
KyAgICBzbG93UGF0aEZvckNhbGwoNiwgaGVscGVyKQorZW5kCisKK19sbGludF9vcF9jYWxsOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBlcl9jYWxsKQorCisK
K19sbGludF9vcF9jb25zdHJ1Y3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRvQ2FsbChf
bGxpbnRfaGVscGVyX2NvbnN0cnVjdCkKKworCitfbGxpbnRfb3BfY2FsbF92YXJhcmdzOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzbG93UGF0aEZvckNhbGwoNiwgX2xsaW50X2hlbHBlcl9j
YWxsX3ZhcmFyZ3MpCisKKworX2xsaW50X29wX2NhbGxfZXZhbDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgCisgICAgIyBFdmFsIGlzIGV4ZWN1dGVkIGluIG9uZSBvZiB0d28gbW9kZXM6Cisg
ICAgIworICAgICMgMSkgV2UgZmluZCB0aGF0IHdlJ3JlIHJlYWxseSBpbnZva2luZyBldmFsKCkg
aW4gd2hpY2ggY2FzZSB0aGUKKyAgICAjICAgIGV4ZWN1dGlvbiBpcyBwZXJmb21lZCBlbnRpcmVs
eSBpbnNpZGUgdGhlIGhlbHBlciwgYW5kIGl0CisgICAgIyAgICByZXR1cm5zIHRoZSBQQyBvZiBh
IGZ1bmN0aW9uIHRoYXQganVzdCByZXR1cm5zIHRoZSByZXR1cm4gdmFsdWUKKyAgICAjICAgIHRo
YXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAgIworICAgICMgMikgV2UgZmluZCB0aGF0IHdlJ3Jl
IGludm9raW5nIHNvbWV0aGluZyBjYWxsZWQgZXZhbCgpIHRoYXQgaXMgbm90CisgICAgIyAgICB0
aGUgcmVhbCBldmFsLiBUaGVuIHRoZSBoZWxwZXIgcmV0dXJucyB0aGUgUEMgb2YgdGhlIHRoaW5n
IHRvCisgICAgIyAgICBjYWxsLCBhbmQgd2UgY2FsbCBpdC4KKyAgICAjCisgICAgIyBUaGlzIGFs
bG93cyB1cyB0byBoYW5kbGUgdHdvIGNhc2VzLCB3aGljaCB3b3VsZCByZXF1aXJlIGEgdG90YWwg
b2YKKyAgICAjIHVwIHRvIGZvdXIgcGllY2VzIG9mIHN0YXRlIHRoYXQgY2Fubm90IGJlIGVhc2ls
eSBwYWNrZWQgaW50byB0d28KKyAgICAjIHJlZ2lzdGVycyAoQyBmdW5jdGlvbnMgY2FuIHJldHVy
biB1cCB0byB0d28gcmVnaXN0ZXJzLCBlYXNpbHkpOgorICAgICMKKyAgICAjIC0gVGhlIGNhbGwg
ZnJhbWUgcmVnaXN0ZXIuIFRoaXMgbWF5IG9yIG1heSBub3QgaGF2ZSBiZWVuIG1vZGlmaWVkCisg
ICAgIyAgIGJ5IHRoZSBoZWxwZXIsIGJ1dCB0aGUgY29udmVudGlvbiBpcyB0aGF0IGl0IHJldHVy
bnMgaXQuIEl0J3Mgbm90CisgICAgIyAgIHRvdGFsbHkgY2xlYXIgaWYgdGhhdCdzIG5lY2Vzc2Fy
eSwgc2luY2UgdGhlIGNmciBpcyBjYWxsZWUgc2F2ZS4KKyAgICAjICAgQnV0IHRoYXQncyBvdXIg
c3R5bGUgaW4gdGhpcyBoZXJlIGludGVycHJldGVyIHNvIHdlIHN0aWNrIHdpdGggaXQuCisgICAg
IworICAgICMgLSBBIGJpdCB0byBzYXkgaWYgdGhlIGhlbHBlciBzdWNjZXNzZnVsbHkgZXhlY3V0
ZWQgdGhlIGV2YWwgYW5kIGhhcworICAgICMgICB0aGUgcmV0dXJuIHZhbHVlLCBvciBkaWQgbm90
IGV4ZWN1dGUgdGhlIGV2YWwgYnV0IGhhcyBhIFBDIGZvciB1cworICAgICMgICB0byBjYWxsLgor
ICAgICMKKyAgICAjIC0gRWl0aGVyOgorICAgICMgICAtIFRoZSBKUyByZXR1cm4gdmFsdWUgKHR3
byByZWdpc3RlcnMpLCBvcgorICAgICMKKyAgICAjICAgLSBUaGUgUEMgdG8gY2FsbC4KKyAgICAj
CisgICAgIyBJdCB0dXJucyBvdXQgdG8gYmUgZWFzaWVyIHRvIGp1c3QgYWx3YXlzIGhhdmUgdGhp
cyByZXR1cm4gdGhlIGNmcgorICAgICMgYW5kIGEgUEMgdG8gY2FsbCwgYW5kIHRoYXQgUEMgbWF5
IGJlIGEgZHVtbXkgdGh1bmsgdGhhdCBqdXN0CisgICAgIyByZXR1cm5zIHRoZSBKUyB2YWx1ZSB0
aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgIAorICAgIHNsb3dQYXRoRm9yQ2FsbCg0LCBfbGxp
bnRfaGVscGVyX2NhbGxfZXZhbCkKKworCitfbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQ6Cisg
ICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorCisKK19sbGludF9vcF90ZWFyX29mZl9hY3RpdmF0aW9u
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSA4
W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcs
IC5vcFRlYXJPZmZBY3RpdmF0aW9uQ3JlYXRlZAorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQKKy5vcFRl
YXJPZmZBY3RpdmF0aW9uQ3JlYXRlZDoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGVh
cl9vZmZfYWN0aXZhdGlvbikKKy5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZDoKKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF90ZWFyX29mZl9hcmd1bWVudHM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN1YmkgMSwgdDAgICAjIEdldCB0
aGUgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cykKKy5vcFRlYXJPZmZB
cmd1bWVudHNOb3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFjcm8gZG9SZXR1cm4o
KQorICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCisgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2Zy
XSwgY2ZyCisgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4odDIpCisgICAgcmV0
CitlbmQKKworX2xsaW50X29wX3JldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tT
d2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF9v
cF9jYWxsX3B1dF9yZXN1bHQ6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10s
IHQzCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB2YWx1ZVByb2ZpbGUodDEsIHQwLCB0MykK
KyAgICB0cmFjZUV4ZWN1dGlvbigpICMgTmVlZHMgdG8gYmUgaGVyZSBiZWNhdXNlIGl0IHdvdWxk
IGNsb2JiZXIgdDEsIHQwCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmV0X29iamVj
dF9vcl90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9y
RXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wUmV0T2JqZWN0T3JUaGlz
Tm90T2JqZWN0CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJi
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBl
LCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBkb1JldHVybigpCisKKy5vcFJldE9i
amVjdE9yVGhpc05vdE9iamVjdDoKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF9vcF9t
ZXRob2RfY2hlY2s6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgV2UgaWdub3JlIG1ldGhv
ZCBjaGVja3MgYW5kIHVzZSBub3JtYWwgZ2V0X2J5X2lkIG9wdGltaXphdGlvbnMuCisgICAgZGlz
cGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3RyY2F0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfc3RyY2F0KQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX3RvX3ByaW1pdGl2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
OFtQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MiwgdDEsIHQwKQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BUb1ByaW1pdGl2ZUlzSW1t
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJuZXEgU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5cGUsIC5vcFRv
UHJpbWl0aXZlU2xvd0Nhc2UKKy5vcFRvUHJpbWl0aXZlSXNJbW06CisgICAgc3RvcmVpIHQxLCBU
YWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb1ByaW1pdGl2ZVNsb3dDYXNlOgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl90b19wcmltaXRpdmUpCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfZ2V0X3BuYW1lczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2dldF9wbmFtZXMpCisgICAgZGlzcGF0Y2goMCkgIyBUaGUgaGVs
cGVyIGVpdGhlciBhZHZhbmNlcyB0aGUgUEMgb3IganVtcHMgdXMgdG8gc29tZXdoZXJlIGVsc2Uu
CisKKworX2xsaW50X29wX25leHRfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkaSAxNltQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XSwgdDAKKyAgICBiaWVxIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIs
IDhdLCAub3BOZXh0UG5hbWVFbmQKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDIKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjptX2pzU3RyaW5nc1t0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgOF0sIHQzCisgICAg
YWRkaSAxLCB0MAorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAg
IGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA4
W1BDXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MworICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGJwbmVxIHQxLCBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIC5vcE5leHRQbmFtZVNsb3cKKyAg
ICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFByb3RvdHlwZUNoYWluW3Qy
XSwgdDAKKyAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDBdLCB0MAorICAgIGJ0
cHogW3QwXSwgLm9wTmV4dFBuYW1lVGFyZ2V0Cisub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxv
b3A6CisgICAgYmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W3QxXSwgTnVs
bFRhZywgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUg
KyBQYXlsb2FkT2Zmc2V0W3QxXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qy
XSwgdDEKKyAgICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGFkZHAgNCwg
dDAKKyAgICBidHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKKy5vcE5l
eHRQbmFtZVRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgyNFtQQ10pCisKKy5vcE5leHRQbmFt
ZUVuZDoKKyAgICBkaXNwYXRjaCg3KQorCisub3BOZXh0UG5hbWVTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9uZXh0X3BuYW1lKSAjIFRoaXMgZWl0aGVyIGtlZXBzIHRoZSBQQyB3
aGVyZSBpdCB3YXMgKGNhdXNpbmcgdXMgdG8gbG9vcCkgb3Igc2V0cyBpdCB0byB0YXJnZXQuCisg
ICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfcHVzaF9zY29wZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfc2NvcGUpCisgICAgZGlz
cGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9wX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9wX3Njb3BlKQorICAgIGRpc3BhdGNoKDEp
CisKKworX2xsaW50X29wX3B1c2hfbmV3X3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9uZXdfc2NvcGUpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfY2F0Y2g6CisgICAgIyBUaGlzIGlzIHdoZXJlIHdlIGVuZCB1cCBm
cm9tIHRoZSBKSVQncyB0aHJvdyB0cmFtcG9saW5lIChiZWNhdXNlIHRoZQorICAgICMgbWFjaGlu
ZSBjb2RlIHJldHVybiBhZGRyZXNzIHdpbGwgYmUgc2V0IHRvIF9sbGludF9vcF9jYXRjaCksIGFu
ZCBmcm9tCisgICAgIyB0aGUgaW50ZXJwcmV0ZXIncyB0aHJvdyB0cmFtcG9saW5lIChzZWUgX2xs
aW50X3Rocm93X3RyYW1wb2xpbmUpLgorICAgICMgVGhlIEpJVCB0aHJvd2luZyBwcm90b2NvbCBj
YWxscyBmb3IgdGhlIGNmciB0byBiZSBpbiB0MC4gVGhlIHRocm93aW5nCisgICAgIyBjb2RlIG11
c3QgaGF2ZSBrbm93biB0aGF0IHdlIHdlcmUgdGhyb3dpbmcgdG8gdGhlIGludGVycHJldGVyLCBh
bmQgaGF2ZQorICAgICMgc2V0IEpTR2xvYmFsRGF0YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0ZvclRo
cm93LgorICAgIG1vdmUgdDAsIGNmcgorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERh
dGFbc3BdLCB0MworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6dGFyZ2V0SW50ZXJwcmV0ZXJQQ0Zv
clRocm93W3QzXSwgUEMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxv
YWRPZmZzZXRbdDNdLCB0MAorICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFn
T2Zmc2V0W3QzXSwgdDEKKyAgICBzdG9yZWkgMCwgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQ
YXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBKU0dsb2JhbERhdGE6
OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10gICAgICAgCisgICAgbG9hZGkgNFtQQ10sIHQyCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBU
YWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICB0cmFjZUV4ZWN1dGlvbigpICAjIFRoaXMgbmVlZHMg
dG8gYmUgaGVyZSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gY2xvYmJlciB0MCwgdDEsIHQyLCB0
MyBhYm92ZS4KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvdzoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rocm93KQorICAgIGRp
c3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93X3JlZmVyZW5jZV9lcnJvcjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Rocm93X3JlZmVyZW5j
ZV9lcnJvcikKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9qc3I6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGFkZGkgMyAqIDQsIFBDLCB0MQor
ICAgIHN0b3JlaSB0MSwgW2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisK
KworX2xsaW50X29wX3NyZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENd
LCB0MAorICAgIGxvYWRwIFtjZnIsIHQwLCA4XSwgUEMKKyAgICBkaXNwYXRjaCgwKQorCisKK19s
bGludF9vcF9kZWJ1ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2RlYnVnKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Byb2ZpbGVf
d2lsbF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1l
OjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCB0MAorICAgIGJ0cHogW3QwXSwgLm9wUHJv
ZmlsZVdpbGxDYWxsRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcm9maWxlX3dp
bGxfY2FsbCkKKy5vcFByb2ZpbGVXaWxsQ2FsbERvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitf
bGxpbnRfb3BfcHJvZmlsZV9kaWRfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZHAgSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgdDAKKyAgICBi
dHB6IFt0MF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCkKKy5vcFByb2ZpbGVEaWRDYWxsRG9uZToKKyAgICBkaXNw
YXRjaCgyKQorCisKK19sbGludF9vcF9lbmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNo
ZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9h
ZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQwCisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF90aHJvd19mcm9tX2hlbHBl
cl90cmFtcG9saW5lOgorICAgICMgV2hlbiB0aHJvd2luZyBmcm9tIHRoZSBpbnRlcnByZXRlciAo
aS5lLiB0aHJvd2luZyBmcm9tIExMSW50SGVscGVycyksIHNvCisgICAgIyB0aGUgdGhyb3cgdGFy
Z2V0IGlzIG5vdCBuZWNlc3NhcmlseSBpbnRlcnByZXRlZCBjb2RlLCB3ZSBjb21lIHRvIGhlcmUu
CisgICAgIyBUaGlzIGVzc2VudGlhbGx5IGVtdWxhdGVzIHRoZSBKSVQncyB0aHJvd2luZyBwcm90
b2NvbC4KKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBs
b2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNH
bG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCitfbGxpbnRfdGhyb3df
ZHVyaW5nX2NhbGxfdHJhbXBvbGluZToKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNh
bGwodDIpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAg
bG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpT
R2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworIyBMYXN0bHksIG1h
a2Ugc3VyZSB0aGF0IHdlIGNhbiBsaW5rIGV2ZW4gdGhvdWdoIHdlIGRvbid0IHN1cHBvcnQgYWxs
IG9wY29kZXMuCisjIFRoZXNlIG9wY29kZXMgc2hvdWxkIG5ldmVyIGFyaXNlIHdoZW4gdXNpbmcg
TExJbnQgb3IgZWl0aGVyIEpJVC4gV2UgYXNzZXJ0CisjIGFzIG11Y2guCisKK21hY3JvIG5vdFN1
cHBvcnRlZCgpCisgICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgY3Jhc2goKQorICAgIGVs
c2UKKyAgICAgICAgIyBXZSBzaG91bGQgdXNlIHdoYXRldmVyIHRoZSBzbWFsbGVzdCBwb3NzaWJs
ZSBpbnN0cnVjdGlvbiBpcywganVzdCB0bworICAgICAgICAjIGVuc3VyZSB0aGF0IHRoZXJlIGlz
IGEgZ2FwIGJldHdlZW4gaW5zdHJ1Y3Rpb24gbGFiZWxzLiBJZiBtdWx0aXBsZQorICAgICAgICAj
IHNtYWxsZXN0IGluc3RydWN0aW9ucyBleGlzdCwgd2Ugc2hvdWxkIHBpY2sgdGhlIG9uZSB0aGF0
IGlzIG1vc3QKKyAgICAgICAgIyBsaWtlbHkgcmVzdWx0IGluIGV4ZWN1dGlvbiBiZWluZyBoYWx0
ZWQuIEN1cnJlbnRseSB0aGF0IGlzIHRoZSBicmVhaworICAgICAgICAjIGluc3RydWN0aW9uIG9u
IGFsbCBhcmNoaXRlY3R1cmVzIHdlJ3JlIGludGVyZXN0ZWQgaW4uIChCcmVhayBpcyBpbnQzCisg
ICAgICAgICMgb24gSW50ZWwsIHdoaWNoIGlzIDEgYnl0ZSwgYW5kIGJrcHQgb24gQVJNdjcsIHdo
aWNoIGlzIDIgYnl0ZXMuKQorICAgICAgICBicmVhaworICAgIGVuZAorZW5kCisKK19sbGludF9v
cF9nZXRfYXJyYXlfbGVuZ3RoOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9j
dXN0b21fY2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9j
dXN0b21fcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9j
dXN0b21fc2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dl
bmVyaWM6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJf
Y2hhaW46CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJf
cHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZXR0ZXJf
c2VsZjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3Byb3RvOgor
ICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfc2VsZjoKKyAgICBub3RT
dXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X3N0cmluZ19sZW5ndGg6CisgICAgbm90U3VwcG9y
dGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgp
CisKK19sbGludF9vcF9wdXRfYnlfaWRfcmVwbGFjZToKKyAgICBub3RTdXBwb3J0ZWQoKQorCitf
bGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb246CisgICAgbm90U3VwcG9ydGVkKCkKKworCisj
IEluZGljYXRlIHRoZSBlbmQgb2YgTExJbnQuCitfbGxpbnRfZW5kOgorICAgIGNyYXNoKCkKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCisjaWYgRU5BQkxFKExM
SU5UKQorCisjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCisjaW5jbHVkZSA8d3Rm
L0lubGluZUFTTS5oPgorCisjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5oIgorCisjZW5kaWYgLy8g
RU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorI2RlZmluZSBMb3dMZXZlbEludGVycHJldGVyX2gK
KworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5j
bHVkZSAiT3Bjb2RlLmgiCisKKyNkZWZpbmUgTExJTlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUs
IGxlbmd0aCkgZXh0ZXJuICJDIiB2b2lkIGxsaW50XyMjb3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hf
T1BDT0RFX0lEKExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wpOworI3VuZGVmIExMSU5UX0lOU1RSVUNU
SU9OX0RFQ0wKKworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2JlZ2luKCk7CitleHRlcm4gIkMiIHZv
aWQgbGxpbnRfZW5kKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgp
OworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2V2YWxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBs
bGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9nZW5lcmljX3JldHVybl9wb2ludCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Ro
cm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJv
d19kdXJpbmdfY2FsbF90cmFtcG9saW5lKCk7CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisK
KyNlbmRpZiAvLyBMb3dMZXZlbEludGVycHJldGVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzczIEBA
CisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCity
ZXF1aXJlICJvcHQiCisKK2NsYXNzIFNwZWNpYWxSZWdpc3RlcgorICBkZWYgaW5pdGlhbGl6ZShu
YW1lKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBhcm1WN09wZXJhbmQKKyAg
ICBAbmFtZQorICBlbmQKK2VuZAorCitBUk12N19FWFRSQV9HUFJTID0gW1NwZWNpYWxSZWdpc3Rl
ci5uZXcoInIzIiksIFNwZWNpYWxSZWdpc3Rlci5uZXcoInI4IiksIFNwZWNpYWxSZWdpc3Rlci5u
ZXcoInI5IildCitBUk12N19FWFRSQV9GUFJTID0gW1NwZWNpYWxSZWdpc3Rlci5uZXcoImQ3Iild
CisKK2RlZiBtb3ZlSW1tZWRpYXRlKHZhbHVlLCByZWdpc3RlcikKKyAgIyBDdXJyZW50bHkgd2Ug
b25seSBoYW5kbGUgdGhlIHNpbXBsZSBjYXNlcywgYW5kIGZhbGwgYmFjayB0byBtb3YvbW92dCBm
b3IgdGhlIGNvbXBsZXggb25lcy4KKyAgaWYgdmFsdWUgPj0gMCAmJiB2YWx1ZSA8IDI1NgorICAg
ICRhc20ucHV0cyAibW92dyBcIyN7dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0iCisg
IGVsc2lmICh+dmFsdWUpID49IDAgJiYgKH52YWx1ZSkgPCAyNTYKKyAgICAkYXNtLnB1dHMgIm12
bncgXCMje352YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzZQorICAgICRh
c20ucHV0cyAibW92dyBcIyN7dmFsdWUgJiAweGZmZmZ9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFu
ZH0iCisgICAgaWYgKHZhbHVlICYgMHhmZmZmMDAwMCkgIT0gMAorICAgICAgJGFzbS5wdXRzICJt
b3Z0IFwjI3t2YWx1ZSA+PiAxNn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQK
KyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAg
Y2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiCisgICAgICAicjAiCisgICAgd2hl
biAidDEiLCAiYTEiLCAicjEiCisgICAgICAicjEiCisgICAgd2hlbiAidDIiLCAiYTIiCisgICAg
ICAicjIiCisgICAgd2hlbiAiYTMiCisgICAgICAicjMiCisgICAgd2hlbiAidDMiCisgICAgICAi
cjQiCisgICAgd2hlbiAidDQiCisgICAgICAicjciCisgICAgd2hlbiAiY2ZyIgorICAgICAgInI1
IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEZQ
UmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAi
ZnQwIiwgImZyIgorICAgICAgImQwIgorICAgIHdoZW4gImZyMSIsCisgICAgICAiZDEiCisgICAg
d2hlbiAiZnIyIgorICAgICAgImQyIgorICAgIHdoZW4gImZyMyIKKyAgICAgICJkMyIKKyAgICB3
aGVuICJmcjQiCisgICAgICAiZDQiCisgICAgd2hlbiAiZnI1IgorICAgICAgImQ1IgorICAgIGVs
c2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQor
ICBkZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2UgIkludmFsaWQgaW1tZWRpYXRlICN7dmFsdWV9
IiBpZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAiIyR7dmFsdWV9IgorICBlbmQKK2Vu
ZAorCitjbGFzcyBBZGRyZXNzCisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICByYWlzZSAiQmFkIG9m
ZnNldCBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiBvciBv
ZmZzZXQudmFsdWUgPiAweGZmZgorICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7b2Zmc2V0
LmFybVY3T3BlcmFuZH1dIgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgZGVmIGFy
bVY3T3BlcmFuZAorICAgIHJhaXNlICJCYWQgb2Zmc2V0IGF0ICN7Y29kZU9yaWdpblN0cmluZ30i
IGlmIG9mZnNldCAhPSAwCisgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tpbmRleC5hcm1W
N09wZXJhbmR9LCBsc2wgXCMje3NjYWxlfV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRl
QWRkcmVzcworICBkZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2UgIlVuY29udmVydGVkIGFic29s
dXRlIGFkZHJlc3MgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgZW5kCitlbmQKKworIworIyBM
b3dlcmluZyBvZiBicmFuY2ggb3BzLiBGb3IgZXhhbXBsZToKKyMKKyMgYmFkZGl6IGZvbywgYmFy
LCBiYXoKKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIGFkZGkgZm9vLCBiYXIKKyMgYnogYmF6Cisj
CisKK2RlZiBhcm1WN0xvd2VyQnJhbmNoT3BzKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0
LmVhY2ggeworICAgIHwgbm9kZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAg
ICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgd2hlbiAvXmIoYWRkaXxzdWJpfG9yaXxtdWxpfGFk
ZHApLworICAgICAgICBvcCA9ICQxCisgICAgICAgIGJyYW5jaCA9ICJiIiArICR+LnBvc3RfbWF0
Y2gKKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBv
cCwgbm9kZS5vcGVyYW5kc1swLi4tMl0pCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KG5vZGUuY29kZU9yaWdpbiwgYnJhbmNoLCBbbm9kZS5vcGVyYW5kc1stMV1dKQorICAgICAg
ZWxzZQorICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAg
IG5ld0xpc3QgPDwgbm9kZQorICAgIGVuZAorICB9CisgIG5ld0xpc3QKK2VuZAorCisjCisjIExv
d2VyaW5nIG9mIG1hbGZvcm1lZCBhZGRyZXNzZXMuIEZvciBleGFtcGxlOgorIworIyBsb2FkcCAx
MDAwMFtmb29dLCBiYXIKKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUgMTAwMDAsIHRtcAor
IyBhZGRwIGZvbywgdG1wCisjIGxvYWRwIDBbdG1wXSwgYmFyCisjCisKK2NsYXNzIE5vZGUKKyAg
ZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXMobGlzdCkKKyAgICBtYXBDaGlsZHJlbiB7
CisgICAgICB8IG5vZGUgfAorICAgICAgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2Vz
KGxpc3QpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGRlZiBhcm1WN0xv
d2VyTWFsZm9ybWVkQWRkcmVzc2VzKGxpc3QpCisgICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYg
b3Igb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAgIHRtcCA9IFRtcC5uZXcoY29kZU9yaWdpbiwg
OmdwcikKKyAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwg
W0ltbWVkaWF0ZS5uZXcob2Zmc2V0KSwgdG1wXSkKKyAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KGNvZGVPcmlnaW4sICJhZGRwIiwgW2Jhc2UsIHRtcF0pCisgICAgICBBZGRyZXNzLm5ldyhj
b2RlT3JpZ2luLCB0bXAsIEltbWVkaWF0ZS5uZXcoMCkpCisgICAgZWxzZQorICAgICAgc2VsZgor
ICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgZGVmIGFybVY3TG93ZXJN
YWxmb3JtZWRBZGRyZXNzZXMobGlzdCkKKyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAgICAg
dG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbSW1tZWRpYXRlLm5ldyhvZmZzZXQpLCB0bXBdKQor
ICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgImFkZHAiLCBbYmFzZSwg
dG1wXSkKKyAgICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgdG1wLCBpbmRleCwgc2NhbGUs
IEltbWVkaWF0ZS5uZXcoMCkpCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQK
K2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRB
ZGRyZXNzZXMobGlzdCkKKyAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmdpbiwgOmdwcikKKyAgICBs
aXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFtJbW1lZGlhdGUubmV3
KGFkZHJlc3MpLCB0bXBdKQorICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIHRtcCwgSW1tZWRp
YXRlLm5ldygwKSkKKyAgZW5kCitlbmQKKworZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNz
ZXMobGlzdCkKKyAgbmV3TGlzdCA9IFtdCisgIGxpc3QuZWFjaCB7CisgICAgfCBub2RlIHwKKyAg
ICBuZXdMaXN0IDw8IG5vZGUuYXJtVjdMb3dlck1hbGZvcmVkQWRkcmVzc2VzKG5ld0xpc3QpCisg
IH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWFsZm9ybWVkIGltbWVkaWF0
ZXMgZXhjZXB0IHdoZW4gdXNlZCBpbiBhICJtb3ZlIiBpbnN0cnVjdGlvbi4KKyMgRm9yIGV4YW1w
bGU6CisjCisjIGFkZHAgNjQyNjQxLCBmb28KKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUg
NjQyNjQxLCB0bXAKKyMgYWRkcCB0bXAsIGZvbworIworCitjbGFzcyBOb2RlCisgIGRlZiBhcm1W
N0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlcyhsaXN0KQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAg
IHwgbm9kZSB8CisgICAgICBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzKGxpc3Qp
CisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3TG93ZXJN
YWxmb3JtZWRJbW1lZGlhdGVzKGxpc3QpCisgICAgaWYgdmFsdWUgPCAwIG9yIHZhbHVlID4gMjU1
CisgICAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICBsaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFtzZWxmLCB0bXBdKQorICAgICAgdG1w
CisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitkZWYgYXJtVjdM
b3dlck1hbGZvcm1lZEltbWVkaWF0ZXMobGlzdCkKKyAgbmV3TGlzdCA9IFtdCisgIGxpc3QuZWFj
aCB7CisgICAgfCBub2RlIHwKKyAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICBj
YXNlIG5vZGUub3Bjb2RlCisgICAgICB3aGVuICJtb3ZlIgorICAgICAgICBuZXdMaXN0IDw8IG5v
ZGUKKyAgICAgIHdoZW4gImFkZGkiLCAiYWRkcCIsICJzdWJpIiwgInN1YnAiCisgICAgICAgIGlm
IG5vZGUub3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZAorICAgICAgICAgICAgbm9kZS5v
cGVyYW5kc1swXS52YWx1ZSA8IDAgYW5kCisgICAgICAgICAgICBub2RlLm9wZXJhbmRzWzBdLnZh
bHVlID49IDI1NQorICAgICAgICAgIGlmIG5vZGUub3Bjb2RlID1+IC9hZGQvCisgICAgICAgICAg
ICBuZXdPcGNvZGUgPSAic3ViIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KKyAgICAgICAgICBlbHNl
CisgICAgICAgICAgICBuZXdPcGNvZGUgPSAiYWRkIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KKyAg
ICAgICAgICBlbmQKKyAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNv
ZGVPcmlnaW4sIG5ld09wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbSW1tZWRpYXRlLm5ldygtbm9kZS5vcGVyYW5kc1swXS52YWx1ZSldICsgbm9kZS5vcGVyYW5k
c1sxLi4tMV0pCisgICAgICAgIGVsc2UKKyAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUuYXJtVjdM
b3dlck1hbGZvcm1lZEltbWVkaWF0ZXMobGlzdCkKKyAgICAgICAgZW5kCisgICAgICBlbHNlCisg
ICAgICAgIG5ld0xpc3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlcyhsaXN0
KQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisg
IH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWlzcGxhY2VkIGFkZHJlc3Nl
cy4gRm9yIGV4YW1wbGU6CisjCisjIGFkZGkgZm9vLCBbYmFyXQorIworIyB3aWxsIGJlY29tZToK
KyMKKyMgbG9hZGkgW2Jhcl0sIHRtcAorIyBhZGRpIGZvbywgdG1wCisjIHN0b3JlaSB0bXAsIFti
YXJdCisjCisjIEFub3RoZXIgZXhhbXBsZToKKyMKKyMgYWRkaSBbZm9vXSwgYmFyCisjCisjIHdp
bGwgYmVjb21lOgorIworIyBsb2FkaSBbZm9vXSwgdG1wCisjIGFkZGkgdG1wLCBiYXIKKyMKKwor
ZGVmIGFybVY3QXNSZWdpc3RlcihwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFuZCwgc3VmZml4LCBu
ZWVkU3RvcmUpCisgIHJldHVybiBvcGVyYW5kIHVubGVzcyBvcGVyYW5kLmFkZHJlc3M/CisgIAor
ICB0bXAgPSBUbXAubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgaWYgc3VmZml4ID09ICJkIiB0aGVu
IDpmcHIgZWxzZSA6Z3ByIGVuZCkKKyAgcHJlTGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFu
ZC5jb2RlT3JpZ2luLCAibG9hZCIgKyBzdWZmaXgsIFtvcGVyYW5kLCB0bXBdKQorICBpZiBuZWVk
U3RvcmUKKyAgICBwb3N0TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5jb2RlT3JpZ2lu
LCAic3RvcmUiICsgc3VmZml4LCBbdG1wLCBvcGVyYW5kXSkKKyAgZW5kCisgIHRtcAorZW5kCisK
K2RlZiBhcm1WN0FzUmVnaXN0ZXJzKHByZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kcywgc3VmZml4
KQorICBuZXdPcGVyYW5kcyA9IFtdCisgIG9wZXJhbmRzLmVhY2hfd2l0aF9pbmRleCB7CisgICAg
fCBvcGVyYW5kLCBpbmRleCB8CisgICAgbmV3T3BlcmFuZHMgPDwgYXJtVjdBc1JlZ2lzdGVyKHBy
ZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kLCBzdWZmaXgsIGluZGV4ID09IG9wZXJhbmRzLnNpemUg
LSAxKQorICB9CisgIG5ld09wZXJhbmRzCitlbmQKKworZGVmIGFybVY3TG93ZXJNaXNwbGFjZWRB
ZGRyZXNzZXMobGlzdCkKKyAgbmV3TGlzdCA9IFtdCisgIGxpc3QuZWFjaCB7CisgICAgfCBub2Rl
IHwKKyAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICBwb3N0SW5zdHJ1Y3Rpb25z
ID0gW10KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdoZW4gImFkZGkiLCAiYWRkcCIs
ICJhbmRpIiwgImFuZHAiLCAibHNoaWZ0aSIsICJtdWxpIiwgIm5lZ2kiLCAibm90aSIsICJvcmki
LCAib3JwIiwgInJzaGlmdGkiLAorICAgICAgICAidXJzaGlmdGkiLCAic3ViaSIsICJzdWJwIiwg
InhvcmkiLCAieG9ycCIsIC9eYmkvLCAvXmJwLywgL15idGkvLCAvXmJ0cC8sICJjYWxsIiwgL15j
aS8sIC9eY3AvLAorICAgICAgICAvXnRpLworICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcm1WN0Fz
UmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJpIikp
CisgICAgICB3aGVuIC9eYmIvLCAvXmJ0Yi8KKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJtVjdB
c1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAiYiIp
KQorICAgICAgd2hlbiAiYWRkZCIsICJkaXZkIiwgInN1YmQiLCAibXVsZCIsICJzcXJ0ZCIsIC9e
YmQvCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwgcG9z
dEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImQiKSkKKyAgICAgIGVsc2UKKyAgICAgICAg
bmV3TGlzdCA8PCBub2RlCisgICAgICBlbmQKKyAgICAgIG5ld0xpc3QgKz0gcG9zdEluc3RydWN0
aW9ucworICAgIGVsc2UKKyAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgIGVuZAorICB9CisgIG5l
d0xpc3QKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXJBUk12NworICAgIG15TGlz
dCA9IGFybVY3TG93ZXJCcmFuY2hPcHMoQGxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1h
bGZvcm1lZEFkZHJlc3NlcyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1hbGZvcm1l
ZEltbWVkaWF0ZXMobXlMaXN0KQorICAgIG15TGlzdCA9IGFybVY3TG93ZXJNaXNwbGFjZWRBZGRy
ZXNzZWQobXlMaXN0KQorICAgIG15TGlzdCA9IGFzc2lnblJlZ2lzdGVyc1RvVGVtcG9yYXJpZXMo
bXlMaXN0LCA6Z3ByLCBBUk12N19FWFRSQV9HUFJTKQorICAgIG15TGlzdCA9IGFzc2lnblJlZ2lz
dGVyc1RvVGVtcG9yYXJpZXMobXlMaXN0LCA6ZnByLCBBUk12N19FWFRSQV9GUFJTKQorICAgIG15
TGlzdC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBub2RlLmxvd2VyKCJBUk12NyIpCisg
ICAgfQorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hc20ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXNtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXNtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzNSBAQAorIyEvdXNyL2Jpbi9lbnYgcnVi
eQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiskOiA8PCBGaWxlLmRp
cm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAiZGlnZXN0L3No
YTEiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2VsZl9o
YXNoIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2NsYXNzIEFz
c2VtYmxlcgorICBkZWYgaW5pdGlhbGl6ZShvdXRwKQorICAgIEBvdXRwID0gb3V0cAorICAgIEBz
dGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBkZWYgZW50ZXJBc20KKyAgICBAb3V0cC5wdXRzICJh
c20gKCIKKyAgICBAc3RhdGUgPSA6YXNtCisgIGVuZAorICAKKyAgZGVmIGxlYXZlQXNtCisgICAg
QG91dHAucHV0cyAiKTsiCisgICAgQHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBpbkFz
bQorICAgIGVudGVyQXNtCisgICAgeWllbGQKKyAgICBsZWF2ZUFzbQorICBlbmQKKyAgCisgIGRl
ZiBwdXRzKCpsaW5lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRw
LnB1dHMoIlwiXFx0IiArIGxpbmUuam9pbignJykgKyAiXFxuXCIiKQorICBlbmQKKyAgCisgIGRl
ZiBwcmludChsaW5lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRw
LnByaW50KCJcIiIgKyBsaW5lICsgIlwiIikKKyAgZW5kCisgIAorICBkZWYgcHV0c0xhYmVsKGxh
YmVsTmFtZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wdXRz
KCJcIi5nbG9ibCBcIiBTWU1CT0xfU1RSSU5HKCN7bGFiZWxOYW1lfSkgXCJcXG5cIiIpCisgICAg
QG91dHAucHV0cygiSElERV9TWU1CT0woI3tsYWJlbE5hbWV9KSBcIlxcblwiIikKKyAgICBAb3V0
cC5wdXRzKCJTWU1CT0xfU1RSSU5HKCN7bGFiZWxOYW1lfSkgXCI6XFxuXCIiKQorICBlbmQKKyAg
CisgIGRlZiBwdXRzTG9jYWxMYWJlbChsYWJlbE5hbWUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0
ZSA9PSA6YXNtCisgICAgQG91dHAucHV0cygiTE9DQUxfTEFCRUxfU1RSSU5HKCN7bGFiZWxOYW1l
fSkgXCI6XFxuXCIiKQorICBlbmQKKyAgCisgIGRlZiBzZWxmLmxhYmVsUmVmZXJlbmNlKGxhYmVs
TmFtZSkKKyAgICAiXCIgU1lNQk9MX1NUUklORygje2xhYmVsTmFtZX0pIFwiIgorICBlbmQKKyAg
CisgIGRlZiBzZWxmLmxvY2FsTGFiZWxSZWZlcmVuY2UobGFiZWxOYW1lKQorICAgICJcIiBMT0NB
TF9MQUJFTF9TVFJJTkcoI3tsYWJlbE5hbWV9KSBcIiIKKyAgZW5kCisgIAorICBkZWYgY29tbWVu
dCh0ZXh0KQorICAgIEBvdXRwLnB1dHMgIi8vICN7dGV4dH0iCisgIGVuZAorZW5kCisKK2FzbUZp
bGUgPSBBUkdWLnNoaWZ0CitvZmZzZXRzRmlsZSA9IEFSR1Yuc2hpZnQKK291dHB1dEZsbm0gPSBB
UkdWLnNoaWZ0CisKK29mZnNldHNMaXN0LCBjb25maWdJbmRleCA9IG9mZnNldHNBbmRDb25maWd1
cmF0aW9uSW5kZXgob2Zmc2V0c0ZpbGUpCitpbnB1dERhdGEgPSBJTzo6cmVhZChhc21GaWxlKQor
CitpbnB1dEhhc2ggPQorICAiLy8gb2ZmbGluZWFzbSBpbnB1dCBoYXNoOiAiICsgRGlnZXN0OjpT
SEExLmhleGRpZ2VzdChpbnB1dERhdGEpICsKKyAgIiAiICsgRGlnZXN0OjpTSEExLmhleGRpZ2Vz
dCgob2Zmc2V0c0xpc3QgKyBbY29uZmlnSW5kZXhdKS5qb2luKCcgJykpICsKKyAgIiAiICsgc2Vs
Zkhhc2gKKworaWYgRmlsZVRlc3QuZXhpc3Q/IG91dHB1dEZsbm0KKyAgRmlsZS5vcGVuKG91dHB1
dEZsbm0sICJyIikgeworICAgIHwgaW5wIHwKKyAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAg
IGlmIGZpcnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09IGlucHV0SGFzaAorICAgICAgJHN0
ZGVyci5wdXRzICJOb3RoaW5nIGNoYW5nZWQuIgorICAgICAgZXhpdCAwCisgICAgZW5kCisgIH0K
K2VuZAorCitGaWxlLm9wZW4ob3V0cHV0RmxubSwgInciKSB7CisgIHwgb3V0cCB8CisgICRvdXRw
dXQgPSBvdXRwCisgICRvdXRwdXQucHV0cyBpbnB1dEhhc2gKKyAgCisgICRhc20gPSBBc3NlbWJs
ZXIubmV3KCRvdXRwdXQpCisgIAorICBhc3QgPSBwYXJzZShsZXgoaW5wdXREYXRhKSkKKyAgCisg
IGZvclNldHRpbmdzKGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpW2NvbmZpZ0luZGV4
XSwgYXN0KSB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8
CisgICAgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICAgIGxvd0xldmVs
QVNUID0gbG93TGV2ZWxBU1QucmVzb2x2ZSgqYnVpbGRPZmZzZXRzTWFwKGxvd0xldmVsQVNULCBv
ZmZzZXRzTGlzdCkpCisgICAgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5n
cywgbG93TGV2ZWxBU1QsIGJhY2tlbmQpIHsKKyAgICAgICRhc20uaW5Bc20geworICAgICAgICBs
b3dMZXZlbEFTVC5sb3dlcihiYWNrZW5kKQorICAgICAgfQorICAgIH0KKyAgfQorfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4MzcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMKKyMg
QmFzZSB1dGlsaXR5IHR5cGVzIGZvciB0aGUgQVNULgorIworCisjIFZhbGlkIG1ldGhvZHMgZm9y
IE5vZGU6CisjCisjIG5vZGUuY2hpbGRyZW4gLT4gUmV0dXJucyBhbiBhcnJheSBvZiBpbW1lZGlh
dGUgY2hpbGRyZW4uCisjCisjIG5vZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJucyBhbiBhcnJheSBv
ZiBhbGwgc3RyaWN0IGRlc2NlbmRhbnRzIChjaGlsZHJlbgorIyAgICAgYW5kIGNoaWxkcmVuIG9m
IGNoaWxkcmVuLCB0cmFuc2l0aXZlbHkpLgorIworIyBub2RlLmZsYXR0ZW4gLT4gUmV0dXJucyBh
biBhcnJheSBjb250YWluaW5nIHRoZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5kCisjICAgICB0aGUg
bm9kZSBpdHNlbGYuCisjCisjIG5vZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVybnMgYW4gYXJyYXkg
Y29udGFpbmluZyB0aG9zZSBlbGVtZW50cyBpbgorIyAgICAgbm9kZS5mbGF0dGVuIHRoYXQgYXJl
IG9mIHRoZSBnaXZlbiB0eXBlIChpc19hPyB0eXBlIHJldHVybnMgdHJ1ZSkuCisjCisjIG5vZGUu
bWFwQ2hpbGRyZW57fHZ8IC4uLn0gLT4gUmV0dXJucyBhIG5ldyBub2RlIHdpdGggYWxsIGNoaWxk
cmVuCisjICAgICByZXBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJsb2NrLgorIworIyBF
eGFtcGxlczoKKyMKKyMgbm9kZS5maWx0ZXIoU2V0dGluZykudW5pcSAtPiBSZXR1cm5zIGFsbCBv
ZiB0aGUgc2V0dGluZ3MgdGhhdCB0aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVsc2UgYmxvY2tzIGRl
cGVuZCBvbi4KKyMKKyMgbm9kZS5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxIC0+IFJldHVybnMg
YWxsIG9mIHRoZSBzdHJ1Y3R1cmUgb2Zmc2V0cworIyAgICAgdGhhdCB0aGUgQVNUIGRlcGVuZHMg
b24uCisKK2NsYXNzIE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgIGVu
ZAorICAKKyAgZGVmIGNvZGVPcmlnaW5TdHJpbmcKKyAgICAibGluZSBudW1iZXIgI3tAY29kZU9y
aWdpbn0iCisgIGVuZAorICAKKyAgZGVmIGRlc2NlbmRhbnRzCisgICAgY2hpbGRyZW4uY29sbGVj
dHt8dnwgdi5mbGF0dGVufS5mbGF0dGVuCisgIGVuZAorICAKKyAgZGVmIGZsYXR0ZW4KKyAgICBb
c2VsZl0gKyBkZXNjZW5kYW50cworICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIodHlwZSkKKyAgICBm
bGF0dGVuLnNlbGVjdHt8dnwgdi5pc19hPyB0eXBlfQorICBlbmQKK2VuZAorCitjbGFzcyBOb0No
aWxkcmVuIDwgTm9kZQorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW10KKyAgZW5kCisgIAor
ICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9m
ZnNldEtleQorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFs
aXplKHN0cnVjdCwgZmllbGQpCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZp
ZWxkCisgIGVuZAorICAKKyAgZGVmIGhhc2gKKyAgICBAc3RydWN0Lmhhc2ggKyBAZmllbGQuaGFz
aCAqIDMKKyAgZW5kCisgIAorICBkZWYgZXFsPyhvdGhlcikKKyAgICBAc3RydWN0ID09IG90aGVy
LnN0cnVjdCBhbmQgQGZpZWxkID09IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisgICAgCisjCisj
IEFTVCBub2Rlcy4KKyMKKworY2xhc3MgU3RydWN0T2Zmc2V0IDwgTm9DaGlsZHJlbgorICBhdHRy
X3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IHN0cnVjdCwgZmllbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3Ry
dWN0CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAK
KyAgZGVmIHNlbGYuZm9yRmllbGQoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBrZXkg
PSBTdHJ1Y3RPZmZzZXRLZXkubmV3KHN0cnVjdCwgZmllbGQpCisgICAgCisgICAgdW5sZXNzIEBA
bWFwcGluZ1trZXldCisgICAgICBAQG1hcHBpbmdba2V5XSA9IFN0cnVjdE9mZnNldC5uZXcoY29k
ZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdba2V5XQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7c3RydWN0fTo6I3tmaWVsZH0iCisgIGVuZAorICAK
KyAgZGVmIDw9PihvdGhlcikKKyAgICBpZiBAc3RydWN0ICE9IG90aGVyLnN0cnVjdAorICAgICAg
cmV0dXJuIEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICAgIGVuZAorICAgIEBmaWVsZCA8PT4g
b3RoZXIuZmllbGQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mIDwgTm9DaGlsZHJlbgorICBh
dHRyX3JlYWRlciA6c3RydWN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1
Y3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgIGVuZAor
ICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwg
c3RydWN0KQorICAgIHVubGVzcyBAQG1hcHBpbmdbc3RydWN0XQorICAgICAgQEBtYXBwaW5nW3N0
cnVjdF0gPSBTaXplb2YubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBlbmQKKyAgICBAQG1h
cHBpbmdbc3RydWN0XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgInNpemVvZiAje0BzdHJ1
Y3R9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIpCisgICAgQHN0cnVjdCA8PT4gb3RoZXIu
c3RydWN0CisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZSA8IE5vQ2hpbGRyZW4KKyAgYXR0
cl9yZWFkZXIgOnZhbHVlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YWx1ZSA9IHZhbHVlCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiI3t2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAg
IG90aGVyLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUgPT0gQHZhbHVlCisgIGVuZAor
ICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1t
ZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJl
bgorICAgIEFkZEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVs
ZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKyAj
e3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcyA8IE5vZGUK
KyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxl
ZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtA
bGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIFN1YkltbWVk
aWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gLSAje3JpZ2h0LmR1bXB9KSIK
KyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIg
OmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmln
aHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQg
PSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQor
ICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE11bEltbWVkaWF0ZXMubmV3KGNvZGVP
cmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgIigje2xlZnQuZHVtcH0gKiAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgTmVnSW1tZWRpYXRlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGNoaWxk
XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5lZ0ltbWVkaWF0ZS5uZXcoY29k
ZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKC0j
e0BjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQgPCBOb0NoaWxk
cmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAor
ICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0g
PSBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGlu
Z1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKKyAgCisgIGRl
ZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRCA8
IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUK
KyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2Rl
T3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGlu
Z1tuYW1lXSA9IEZQUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAg
ICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5k
CisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxzZQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJp
YWJsZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9
IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFt
ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBA
bWFwcGluZ1tuYW1lXSA9IFZhcmlhYmxlLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAor
ICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBl
bmQKK2VuZAorCitjbGFzcyBBZGRyZXNzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFzZSwgOm9m
ZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwgb2Zmc2V0KQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisgICAgQG9mZnNldCA9IG9mZnNl
dAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwgQG9mZnNldF0KKyAgZW5k
CisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCAoeWll
bGQgQGJhc2UpLCAoeWllbGQgQG9mZnNldCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
I3tvZmZzZXQuZHVtcH1bI3tiYXNlLmR1bXB9XSIKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8K
KyAgICB0cnVlCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleCA8IE5vZGUKKyAgYXR0cl9y
ZWFkZXIgOmJhc2UsIDppbmRleCwgOnNjYWxlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBiYXNlID0gYmFzZQorICAgIEBpbmRleCA9IGluZGV4CisgICAgQHNjYWxl
ID0gc2NhbGUKKyAgICByYWlzZSB1bmxlc3MgWzEsIDIsIDQsIDhdLm1lbWJlcj8gQHNjYWxlCisg
ICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFz
ZSwgQGluZGV4LCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEJh
c2VJbmRleC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBpbmRleCksIEBz
Y2FsZSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zm
c2V0LmR1bXB9WyN7YmFzZS5kdW1wfSwgI3tpbmRleC5kdW1wfSwgI3tzY2FsZX1dIgorICBlbmQK
KyAgCisgIGRlZiBhZGRyZXNzPworICAgIHRydWUKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1
dGVBZGRyZXNzIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6YWRkcmVzcworICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgYWRkcmVzcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBhZGRyZXNzID0gYWRkcmVzcworICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7YWRk
cmVzcy5kdW1wfVtdIgorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIHRydWUKKyAgZW5k
CitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpvcGNvZGUs
IDpvcGVyYW5kcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgb3Bjb2RlLCBvcGVy
YW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBvcGNvZGUgPSBvcGNvZGUKKyAgICBA
b3BlcmFuZHMgPSBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIG9wZXJh
bmRzCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIEluc3RydWN0aW9u
Lm5ldyhjb2RlT3JpZ2luLCBAb3Bjb2RlLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICJcdCIgKyBvcGNvZGUudG9fcyArICIgIiArIG9wZXJhbmRzLmNv
bGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKQorICBlbmQKK2VuZAorCitjbGFzcyBFcnJvciA8
IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0ZXJyb3IiCisgIGVuZAorZW5k
CisKK2NsYXNzIENvbnN0RGVjbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnZhcmlhYmxlLCA6dmFs
dWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YXJpYWJsZSA9IHZhcmlhYmxlCisgICAgQHZhbHVl
ID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQHZhcmlhYmxlLCBAdmFs
dWVdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQ29uc3REZWNsLm5ldyhjb2Rl
T3JpZ2luLCAoeWllbGQgQHZhcmlhYmxlKSwgKHlpZWxkIEB2YWx1ZSkpCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiY29uc3QgI3tAdmFyaWFibGUuZHVtcH0gPSAje0B2YWx1ZS5kdW1wfSIK
KyAgZW5kCitlbmQKKworJGxhYmVsTWFwcGluZyA9IHt9CisKK2NsYXNzIExhYmVsIDwgTm9DaGls
ZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQK
KyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxN
YXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0i
IHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExhYmVsCisgICAgZWxzZQorICAgICAg
JGxhYmVsTWFwcGluZ1tuYW1lXSA9IExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVu
ZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIj
e25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbCA8IE5vQ2hpbGRyZW4KKyAg
YXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisKKyAgQEB1
bmlxdWVOYW1lQ291bnRlciA9IDAKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFt
ZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExv
Y2FsTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTG9jYWxMYWJl
bC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5nW25hbWVd
CisgIGVuZAorICAKKyAgZGVmIHNlbGYudW5pcXVlKGNvbW1lbnQpCisgICAgbmV3TmFtZSA9ICJf
I3tjb21tZW50fSIKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25ld05hbWVdCisgICAgICB3aGlsZSAk
bGFiZWxNYXBwaW5nW25ld05hbWUgPSAiXyN7QEB1bmlxdWVOYW1lQ291bnRlcn1fI3tjb21tZW50
fSJdCisgICAgICAgIEBAdW5pcXVlTmFtZUNvdW50ZXIgKz0gMQorICAgICAgZW5kCisgICAgZW5k
CisgICAgZm9yTmFtZShuaWwsIG5ld05hbWUpCisgIGVuZAorICAKKyAgZGVmIGNsZWFuTmFtZQor
ICAgIGlmIG5hbWUgPX4gL15cLi8KKyAgICAgICJfIiArIG5hbWVbMS4uLTFdCisgICAgZWxzZQor
ICAgICAgbmFtZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06
IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFk
ZXIgOmxhYmVsCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAgZGVmIGNo
aWxkcmVuCisgICAgW0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBM
YWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAK
KyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBs
YWJlbC5uYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UgPCBOb0No
aWxkcmVuCisgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAor
ICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVm
IG1hcENoaWxkcmVuCisgICAgTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIFNl
cXVlbmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGlzdAorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgbGlzdCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsaXN0ID0gbGlz
dAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIGxpc3QKKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4oJnByb2MpCisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIEBsaXN0Lm1h
cCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsaXN0LmNvbGxlY3R7fHZ8IHYu
ZHVtcH0uam9pbigiXG4iKQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlIDwgTm9DaGlsZHJlbgor
ICBkZWYgaW5pdGlhbGl6ZQorICAgIHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNl
ID0gVHJ1ZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBl
bmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICJ0cnVlIgorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGlu
aXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IEZhbHNl
Lm5ldworICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAK
KyAgZGVmIHZhbHVlCisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJmYWxz
ZSIKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBUcnVl
Lmluc3RhbmNlCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlQ2xhc3MKKyAgZGVmIGFzTm9kZQor
ICAgIEZhbHNlLmluc3RhbmNlCisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcgPCBOb0NoaWxk
cmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAor
ICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0g
PSBTZXR0aW5nLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tu
YW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFz
cyBBbmQgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICBBbmQubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gYW5kICN7cmlnaHQuZHVt
cH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBPciA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQs
IDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdo
dAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE9yLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxl
ZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0
LmR1bXB9IG9yICN7cmlnaHQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBOb3QgPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
Y2hpbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAY2hpbGQgPSBjaGlsZAorICBlbmQK
KyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRl
ZiBtYXBDaGlsZHJlbgorICAgIE5vdC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKG5vdCAje2NoaWxkLmR1bXB9KSIKKyAgZW5kCitl
bmQKKworY2xhc3MgU2tpcCA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
bikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0
c2tpcCIKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZSA8IE5vZGUKKyAgYXR0cl9yZWFk
ZXIgOnByZWRpY2F0ZSwgOnRoZW5DYXNlCisgIGF0dHJfYWNjZXNzb3IgOmVsc2VDYXNlCisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHRoZW5DYXNlKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQHByZWRpY2F0ZSA9IHByZWRpY2F0ZQorICAgIEB0aGVuQ2Fz
ZSA9IHRoZW5DYXNlCisgICAgQGVsc2VDYXNlID0gU2tpcC5uZXcoY29kZU9yaWdpbikKKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBpZiBAZWxzZUNhc2UKKyAgICAgIFtAcHJlZGljYXRl
LCBAdGhlbkNhc2UsIEBlbHNlQ2FzZV0KKyAgICBlbHNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRo
ZW5DYXNlXQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIElmVGhl
bkVsc2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAcHJlZGljYXRlKSwgKHlpZWxkIEB0aGVuQ2Fz
ZSksICh5aWVsZCBAZWxzZUNhc2UpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImlmICN7
cHJlZGljYXRlLmR1bXB9XG4iICsgdGhlbkNhc2UuZHVtcCArICJcbmVsc2VcbiIgKyBlbHNlQ2Fz
ZS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBNYWNybyA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOm5hbWUsIDp2YXJpYWJsZXMsIDpib2R5CisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAbmFtZSA9IG5hbWUKKyAgICBAdmFyaWFibGVzID0gdmFyaWFibGVzCisgICAgQGJvZHkg
PSBib2R5CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgQHZhcmlhYmxlcyArIFtAYm9k
eV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBNYWNyby5uZXcoY29kZU9yaWdp
biwgQG5hbWUsIEB2YXJpYWJsZXMubWFwe3x2fCB5aWVsZCB2fSwgKHlpZWxkIEBib2R5KSkKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICJtYWNybyAje25hbWV9KCIgKyB2YXJpYWJsZXMuY29s
bGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpICsgIilcbiIgKyBib2R5LmR1bXAgKyAiXG5lbmQi
CisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvQ2FsbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm5h
bWUsIDpvcGVyYW5kcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgb3Bl
cmFuZHMpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgICBAb3Bl
cmFuZHMgPSBvcGVyYW5kcworICAgIHJhaXNlIHVubGVzcyBAb3BlcmFuZHMKKyAgICBAb3BlcmFu
ZHMuZWFjaHt8dnwgcmFpc2UgdW5sZXNzIHZ9CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisg
ICAgQG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIE1h
Y3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0I3tuYW1lfSgiICsgb3BlcmFuZHMuY29sbGVjdHt8
dnwgdi5kdW1wfS5qb2luKCIsICIpICsgIikiCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsODUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIng4NiIKKworQkFDS0VORFMgPQorICBbCisgICAiWDg2
IiwKKyAgICJBUk12NyIKKyAgXQorCitXT1JLSU5HX0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIK
KyAgXQorCitCQUNLRU5EX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoJyArIEJBQ0tFTkRTLmpv
aW4oJyl8KCcpICsgJylcXFonKQorCitjbGFzcyBOb2RlCisgIGRlZiBsb3dlcihuYW1lKQorICAg
IHNlbmQoImxvd2VyIiArIG5hbWUpCisgIGVuZAorZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBsb3dl
cigpIGZvciB0aG9zZSBub2RlcyB0aGF0IGFyZSBiYWNrZW5kLWFnbm9zdGljCisKK2NsYXNzIExh
YmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAgICRhc20ucHV0c0xhYmVsKHNlbGYubmFtZVsxLi4t
MV0pCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisg
ICAgJGFzbS5wdXRzTG9jYWxMYWJlbCAiX29mZmxpbmVhc21fI3tzZWxmLm5hbWVbMS4uLTFdfSIK
KyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAgZGVmIGFzbUxhYmVsCisgICAg
QXNzZW1ibGVyLmxhYmVsUmVmZXJlbmNlKG5hbWVbMS4uLTFdKQorICBlbmQKK2VuZAorCitjbGFz
cyBMb2NhbExhYmVsUmVmZXJlbmNlCisgIGRlZiBhc21MYWJlbAorICAgIEFzc2VtYmxlci5sb2Nh
bExhYmVsUmVmZXJlbmNlKCJfb2ZmbGluZWFzbV8iK25hbWVbMS4uLTFdKQorICBlbmQKK2VuZAor
CitjbGFzcyBTa2lwCisgIGRlZiBsb3dlcihuYW1lKQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1
ZW5jZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8
CisgICAgICBub2RlLmxvd2VyKG5hbWUpCisgICAgfQorICBlbmQKK2VuZAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRl
X29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDg4IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVx
dWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNldHMi
CityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZWxmX2hhc2giCityZXF1aXJlICJzZXR0aW5n
cyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworaW5wdXRGbG5tID0gQVJHVi5zaGlmdAorb3V0cHV0
RmxubSA9IEFSR1Yuc2hpZnQKKworZGVmIGVtaXRNYWdpY051bWJlcgorICBPRkZTRVRfTUFHSUNf
TlVNQkVSUy5lYWNoIHsKKyAgICB8IG51bWJlciB8CisgICAgJG91dHB1dC5wdXRzICIje251bWJl
cn0sIgorICB9CitlbmQKKworaW5wdXREYXRhID0gSU86OnJlYWQoaW5wdXRGbG5tKQoraW5wdXRI
YXNoID0gIi8vIG9mZmxpbmVhc20gaW5wdXQgaGFzaDogI3tEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0
KGlucHV0RGF0YSl9ICN7c2VsZkhhc2h9IgorCitpZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0Rmxu
bQorICBGaWxlLm9wZW4ob3V0cHV0RmxubSwgInIiKSB7CisgICAgfCBpbnAgfAorICAgIGZpcnN0
TGluZSA9IGlucC5nZXRzCisgICAgaWYgZmlyc3RMaW5lIGFuZCBmaXJzdExpbmUuY2hvbXAgPT0g
aW5wdXRIYXNoCisgICAgICAkc3RkZXJyLnB1dHMgIk5vdGhpbmcgY2hhbmdlZC4iCisgICAgICBl
eGl0IDAKKyAgICBlbmQKKyAgfQorZW5kCisKK29yaWdpbmFsQVNUID0gcGFyc2UobGV4KGlucHV0
RGF0YSkpCisKK0ZpbGUub3BlbihvdXRwdXRGbG5tLCAidyIpIHsKKyAgfCBvdXRwIHwKKyAgJG91
dHB1dCA9IG91dHAKKyAgb3V0cC5wdXRzIGlucHV0SGFzaAorICBlbWl0Q29kZUluQWxsQ29uZmln
dXJhdGlvbnMob3JpZ2luYWxBU1QpIHsKKyAgICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGlu
ZGV4IHwKKyAgICBvZmZzZXRzTGlzdCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNv
cnQKKyAgICBzaXplc0xpc3QgPSBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CisgICAgCisg
ICAgbGVuZ3RoID0gKE9GRlNFVF9NQUdJQ19OVU1CRVJTLnNpemUgKyAxKSAqICgxICsgb2Zmc2V0
c0xpc3Quc2l6ZSArIHNpemVzTGlzdC5zaXplKQorICAgIAorICAgIG91dHAucHV0cyAic3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICAgIGVtaXRN
YWdpY051bWJlcgorICAgIG91dHAucHV0cyAiI3tpbmRleH0sIgorICAgIG9mZnNldHNMaXN0LmVh
Y2ggeworICAgICAgfCBvZmZzZXQgfAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICBvdXRw
LnB1dHMgIk9GRkxJTkVfQVNNX09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZp
ZWxkfSksIgorICAgIH0KKyAgICBzaXplc0xpc3QuZWFjaCB7CisgICAgICB8IG9mZnNldCB8Cisg
ICAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICAgIG91dHAucHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0
cnVjdH0pLCIKKyAgICB9CisgICAgb3V0cC5wdXRzICJ9OyIKKyAgfQorfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5y
YgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMDUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKyMgSW50ZXJlc3RpbmcgaW52YXJpYW50LCB3aGljaCB3ZSB0YWtlIGFk
dmFudGFnZSBvZjogYnJhbmNoaW5nIGluc3RydWN0aW9ucworIyBhbHdheXMgYmVnaW4gd2l0aCAi
YiIsIGFuZCBubyBub24tYnJhbmNoaW5nIGluc3RydWN0aW9ucyBiZWdpbiB3aXRoICJiIi4KKyMg
VGVybWluYWwgaW5zdHJ1Y3Rpb25zIGFyZSAiam1wIiBhbmQgInJldCIuCisKK01BQ1JPX0lOU1RS
VUNUSU9OUyA9CisgIFsKKyAgICJhZGRpIiwKKyAgICJhbmRpIiwKKyAgICJsc2hpZnRpIiwKKyAg
ICJtdWxpIiwKKyAgICJuZWdpIiwKKyAgICJub3RpIiwKKyAgICJvcmkiLAorICAgInJzaGlmdGki
LAorICAgInVyc2hpZnRpIiwKKyAgICJzdWJpIiwKKyAgICJ4b3JpIiwKKyAgICJsb2FkaSIsCisg
ICAibG9hZGIiLAorICAgImxvYWRoIiwKKyAgICJzdG9yZWkiLAorICAgInN0b3JlYiIsCisgICAi
bG9hZGQiLAorICAgIm1vdmVkIiwKKyAgICJzdG9yZWQiLAorICAgImFkZGQiLAorICAgImRpdmQi
LAorICAgInN1YmQiLAorICAgIm11bGQiLAorICAgInNxcnRkIiwKKyAgICJjaTJkIiwKKyAgICJm
aWkyZCIsICMgdXNhZ2U6IGZpaTJkIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwg
PGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxmcHI+CisgICAiZmQyaWkiLCAjIHVz
YWdlOiBmZDJpaSA8ZnByPiwgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3By
IHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPgorICAgImJkZXEiLAorICAgImJkbmVxIiwKKyAg
ICJiZGd0IiwKKyAgICJiZGd0ZXEiLAorICAgImJkbHQiLAorICAgImJkbHRlcSIsCisgICAiYmRl
cXVuIiwKKyAgICJiZG5lcXVuIiwKKyAgICJiZGd0dW4iLAorICAgImJkZ3RlcXVuIiwKKyAgICJi
ZGx0dW4iLAorICAgImJkbHRlcXVuIiwKKyAgICJidGQyaSIsCisgICAidGQyaSIsCisgICAiYmNk
MmkiLAorICAgIm1vdmR6IiwKKyAgICJwb3AiLAorICAgInB1c2giLAorICAgIm1vdmUiLAorICAg
InN4aTJwIiwKKyAgICJ6eGkycCIsCisgICAibm9wIiwKKyAgICJiaWVxIiwKKyAgICJiaW5lcSIs
CisgICAiYmlhIiwKKyAgICJiaWFlcSIsCisgICAiYmliIiwKKyAgICJiaWJlcSIsCisgICAiYmln
dCIsCisgICAiYmlndGVxIiwKKyAgICJiaWx0IiwKKyAgICJiaWx0ZXEiLAorICAgImJiZXEiLAor
ICAgImJibmVxIiwKKyAgICJiYmEiLAorICAgImJiYWVxIiwKKyAgICJiYmIiLAorICAgImJiYmVx
IiwKKyAgICJiYmd0IiwKKyAgICJiYmd0ZXEiLAorICAgImJibHQiLAorICAgImJibHRlcSIsCisg
ICAiYnRpbyIsCisgICAiYnRpcyIsCisgICAiYnRpeiIsCisgICAiYnRpbnoiLAorICAgImJ0Ym8i
LAorICAgImJ0YnMiLAorICAgImJ0YnoiLAorICAgImJ0Ym56IiwKKyAgICJqbXAiLAorICAgImJh
ZGRpbyIsCisgICAiYmFkZGlzIiwKKyAgICJiYWRkaXoiLAorICAgImJhZGRpbnoiLAorICAgImJz
dWJpbyIsCisgICAiYnN1YmlzIiwKKyAgICJic3ViaXoiLAorICAgImJzdWJpbnoiLAorICAgImJt
dWxpbyIsCisgICAiYm11bGlzIiwKKyAgICJibXVsaXoiLAorICAgImJtdWxpbnoiLAorICAgImJv
cmlvIiwKKyAgICJib3JpcyIsCisgICAiYm9yaXoiLAorICAgImJvcmlueiIsCisgICAiYnJlYWsi
LAorICAgImNhbGwiLAorICAgInJldCIsCisgICAiY2llcSIsCisgICAiY2luZXEiLAorICAgImNp
YSIsCisgICAiY2lhZXEiLAorICAgImNpYiIsCisgICAiY2liZXEiLAorICAgImNpZ3QiLAorICAg
ImNpZ3RlcSIsCisgICAiY2lsdCIsCisgICAiY2lsdGVxIiwKKyAgICJ0aW8iLAorICAgInRpcyIs
CisgICAidGl6IiwKKyAgICJ0aW56IiwKKyAgICJ0Ym8iLAorICAgInRicyIsCisgICAidGJ6IiwK
KyAgICJ0Ym56IiwKKyAgICJwZWVrIiwKKyAgICJwb2tlIiwKKyAgICJicGVxIiwKKyAgICJicG5l
cSIsCisgICAiYnBhIiwKKyAgICJicGFlcSIsCisgICAiYnBiIiwKKyAgICJicGJlcSIsCisgICAi
YnBndCIsCisgICAiYnBndGVxIiwKKyAgICJicGx0IiwKKyAgICJicGx0ZXEiLAorICAgImFkZHAi
LAorICAgImFuZHAiLAorICAgIm9ycCIsCisgICAic3VicCIsCisgICAieG9ycCIsCisgICAibG9h
ZHAiLAorICAgImNwZXEiLAorICAgImNwbmVxIiwKKyAgICJjcGEiLAorICAgImNwYWVxIiwKKyAg
ICJjcGIiLAorICAgImNwYmVxIiwKKyAgICJjcGd0IiwKKyAgICJjcGd0ZXEiLAorICAgImNwbHQi
LAorICAgImNwbHRlcSIsCisgICAic3RvcmVwIiwKKyAgICJidHBvIiwKKyAgICJidHBzIiwKKyAg
ICJidHB6IiwKKyAgICJidHBueiIsCisgICAiYmFkZHBvIiwKKyAgICJiYWRkcHMiLAorICAgImJh
ZGRweiIsCisgICAiYmFkZHBueiIsCisgICAiYm8iLAorICAgImJzIiwKKyAgICJieiIsCisgICAi
Ym56IgorICBdCisKK1g4Nl9JTlNUUlVDVElPTlMgPQorICBbCisgICAiY2RxaSIsCisgICAiaWRp
dmkiCisgIF0KKworSU5TVFJVQ1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05TICsgWDg2X0lOU1RS
VUNUSU9OUworCitJTlNUUlVDVElPTl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgSU5T
VFJVQ1RJT05TLmpvaW4oJyl8KCcpICsgJykpXFxaJykKKworZGVmIGlzQnJhbmNoKGluc3RydWN0
aW9uKQorICBpbnN0cnVjdGlvbiA9fiAvXmIvCitlbmQKKworZGVmIGhhc0ZhbGxUaHJvdWdoKGlu
c3RydWN0aW9uKQorICBpbnN0cnVjdGlvbiAhPSAicmV0IiBhbmQgaW5zdHJ1Y3Rpb24gIT0gImpt
cCIKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRf
ZXh0cmFjdG9yX2NvbnN0YW50cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29u
c3RhbnRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCitNQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBm
ZjVlNzU1IF0KKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZz
ZXRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29m
ZnNldHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1MCBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0
X2V4dHJhY3Rvcl9jb25zdGFudHMiCisKK09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3
YWM3LCAweDBmZjVlNzU1IF0KKworIworIyBvZmZzZXRzTGlzdChhc3QpCisjIHNpemVzTGlzdChh
c3QpCisjCisjIFJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhl
IEFTVC4KKyMKKworZGVmIG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTdHJ1Y3RPZmZz
ZXQpLnVuaXEuc29ydAorZW5kCisKK2RlZiBzaXplc0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFNp
emVvZikudW5pcS5zb3J0CitlbmQKKworIworIyBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4
KGFzdCwgZmlsZSkgLT4KKyMgICAgIFtvZmZzZXRzLCBpbmRleF0KKyMKKyMgUGFyc2VzIHRoZSBv
ZmZzZXRzIGZyb20gYSBmaWxlIGFuZCByZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCB0aGUK
KyMgaW5kZXggb2YgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB2YWxpZCBpbiB0aGlzIGJ1aWxk
IHRhcmdldC4KKyMKKworZGVmIG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgoZmlsZSkKKyAg
aW5kZXggPSBuaWwKKyAgb2Zmc2V0cyA9IFtdCisgIGVuZGlhbm5lc3NNYXJrZXJCeXRlcyA9IG5p
bAorICAKKyAgZGVmIHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgIGJ5dGVzID0gW10KKyAg
ICA0LnRpbWVzIHsKKyAgICAgIGJ5dGVzIDw8IGlucC5nZXRieXRlCisgICAgfQorICAgIAorICAg
IGlmIGVuZGlhbm5lc3MgPT0gOmxpdHRsZQorICAgICAgIyBMaXR0bGUgZW5kaWFuCisgICAgICAo
Ynl0ZXNbMF0gPDwgMCB8CisgICAgICAgYnl0ZXNbMV0gPDwgOCB8CisgICAgICAgYnl0ZXNbMl0g
PDwgMTYgfAorICAgICAgIGJ5dGVzWzNdIDw8IDI0KQorICAgIGVsc2UKKyAgICAgICMgQmlnIGVu
ZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDI0IHwKKyAgICAgICBieXRlc1sxXSA8PCAxNiB8Cisg
ICAgICAgYnl0ZXNbMl0gPDwgOCB8CisgICAgICAgYnl0ZXNbM10gPDwgMCkKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBbOmxpdHRsZSwgOmJpZ10uZWFjaCB7CisgICAgfCBlbmRpYW5uZXNzIHwKKyAg
ICBtYWdpY0J5dGVzID0gW10KKyAgICBNQUdJQ19OVU1CRVJTLmVhY2ggeworICAgICAgfCBudW1i
ZXIgfAorICAgICAgY3VycmVudEJ5dGVzID0gW10KKyAgICAgIDQudGltZXMgeworICAgICAgICBj
dXJyZW50Qnl0ZXMgPDwgKG51bWJlciAmIDB4ZmYpCisgICAgICAgIG51bWJlciA+Pj0gOAorICAg
ICAgfQorICAgICAgaWYgZW5kaWFubmVzcyA9PSA6YmlnCisgICAgICAgIGN1cnJlbnRCeXRlcy5y
ZXZlcnNlIQorICAgICAgZW5kCisgICAgICBtYWdpY0J5dGVzICs9IGN1cnJlbnRCeXRlcworICAg
IH0KKyAgICAKKyAgICBGaWxlLm9wZW4oZmlsZSwgInIiKSB7CisgICAgICB8IGlucCB8CisgICAg
ICB3aGVyZUluTWFya2VyID0gMAorICAgICAgbG9vcCB7CisgICAgICAgIGJ5dGUgPSBpbnAuZ2V0
Ynl0ZQorICAgICAgICBicmVhayB1bmxlc3MgYnl0ZQorICAgICAgICBpZiBieXRlID09IG1hZ2lj
Qnl0ZXNbd2hlcmVJbk1hcmtlcl0KKyAgICAgICAgICB3aGVyZUluTWFya2VyICs9IDEKKyAgICAg
ICAgICBpZiB3aGVyZUluTWFya2VyID09IG1hZ2ljQnl0ZXMuc2l6ZQorICAgICAgICAgICAgIyBX
ZSBoYXZlIGEgbWF0Y2ghIElmIHdlIGhhdmUgbm90IHlldCByZWFkIHRoZSBlbmRpYW5uZXNzIG1h
cmtlciBhbmQgaW5kZXgsCisgICAgICAgICAgICAjIHRoZW4gcmVhZCB0aG9zZSBub3c7IG90aGVy
d2lzZSByZWFkIGFuIG9mZnNldC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgbm90IGlu
ZGV4CisgICAgICAgICAgICAgIGluZGV4ID0gcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgIG9mZnNldHMgPDwgcmVhZEludChlbmRpYW5uZXNz
LCBpbnApCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd2hlcmVJ
bk1hcmtlciA9IDAKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgIHdoZXJl
SW5NYXJrZXIgPSAwCisgICAgICAgIGVuZAorICAgICAgfQorICAgIH0KKyAgICAKKyAgICBicmVh
ayBpZiBpbmRleAorICB9CisgIAorICByYWlzZSB1bmxlc3MgaW5kZXgKKyAgCisgIFtvZmZzZXRz
LCBpbmRleF0KK2VuZAorCisjCisjIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAt
PiBbb2Zmc2V0cywgc2l6ZXNdCisjCisjIEJ1aWxkcyBhIG1hcHBpbmcgYmV0d2VlbiBTdHJ1Y3RP
ZmZzZXQgbm9kZXMgYW5kIHRoZWlyIHZhbHVlcy4KKyMKKworZGVmIGJ1aWxkT2Zmc2V0c01hcChh
c3QsIG9mZnNldHNMaXN0KQorICBvZmZzZXRzTWFwID0ge30KKyAgc2l6ZXNNYXAgPSB7fQorICBh
c3RPZmZzZXRzTGlzdCA9IG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0U2l6ZXNMaXN0ID0gc2l6ZXNM
aXN0KGFzdCkKKyAgcmFpc2UgdW5sZXNzIGFzdE9mZnNldHNMaXN0LnNpemUgKyBhc3RTaXplc0xp
c3Quc2l6ZSA9PSBvZmZzZXRzTGlzdC5zaXplCisgIG9mZnNldHNMaXN0KGFzdCkuZWFjaF93aXRo
X2luZGV4IHsKKyAgICB8IHN0cnVjdE9mZnNldCwgaW5kZXggfAorICAgIG9mZnNldHNNYXBbc3Ry
dWN0T2Zmc2V0XSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgc2l6ZXNMaXN0KGFzdCkuZWFj
aF93aXRoX2luZGV4IHsKKyAgICB8IHNpemVvZiwgaW5kZXggfAorICAgIHNpemVzTWFwW3NpemVv
Zl0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIFtvZmZzZXRzTWFwLCBzaXplc01hcF0KK2Vu
ZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vcHQucmIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb3B0LnJiCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb3B0LnJiCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDExOCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworcmVxdWlyZSAiYXN0IgorCisjCisjICJPcHRpbWl6YXRpb24iIHBhc3Nlcy4gVGhlc2Ug
YXJlIHVzZWQgdG8gbG93ZXIgdGhlIHJlcHJlc2VudGF0aW9uIGZvcgorIyBiYWNrZW5kcyB0aGF0
IGNhbm5vdCBoYW5kbGUgc29tZSBvZiBvdXIgaGlnaGVyLWxldmVsIGluc3RydWN0aW9ucy4KKyMK
KworIworIyBBIHRlbXBvcmFyeSAtIGEgdmFyaWFibGUgdGhhdCB3aWxsIGJlIGFsbG9jYXRlZCB0
byBhIHJlZ2lzdGVyIGFmdGVyIHdlJ3JlCisjIGRvbmUuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVm
IHJlcGxhY2VUZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkKKyAgICBtYXBDaGlsZHJlbiB7
CisgICAgICB8IG5vZGUgfAorICAgICAgbm9kZS5yZXBsYWNlVGVtcG9yYXJpZXNXaXRoUmVnaXN0
ZXJzKGtpbmQpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBUbXAgPCBOb0NoaWxkcmVuCisg
IGF0dHJfcmVhZGVyIDpmaXJzdE1lbnRpb24sIDpsYXN0TWVudGlvbgorICBhdHRyX3JlYWRlciA6
a2luZAorICBhdHRyX2FjY2Vzc29yIDpyZWdpc3RlcgorCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIGtpbmQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAa2luZCA9IGtpbmQKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICIkdG1wI3tvYmplY3RfaWR9IgorICBlbmQKKyAgCisg
IGRlZiBtZW50aW9uIShwb3NpdGlvbikKKyAgICBpZiBub3QgQGZpcnN0TWVudGlvbiBvciBwb3Np
dGlvbiA8IEBmaXJzdE1lbnRpb24KKyAgICAgIEBmaXJzdE1lbnRpb24gPSBwb3NpdGlvbgorICAg
IGVuZAorICAgIGlmIG5vdCBAbGFzdE1lbnRpb24gb3IgcG9zaXRpb24gPiBAbGFzdE1lbnRpb24K
KyAgICAgIEBsYXN0TWVudGlvbiA9IHBvc2l0aW9uCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVm
IHJlcGxhY2VUZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkKKyAgICBpZiBAa2luZCA9PSBr
aW5kCisgICAgICByYWlzZSAiRGlkIG5vdCBhbGxvY2F0ZSByZWdpc3RlciB0byB0ZW1wb3Jhcnkg
YXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIEByZWdpc3RlcgorICAgICAgQHJlZ2lzdGVy
CisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCisjIEFzc2lnbiBy
ZWdpc3RlcnMgdG8gdGVtcG9yYXJpZXMsIGJ5IGZpbmRpbmcgd2hpY2ggdGVtcG9yYXJpZXMgaW50
ZXJmZXJlCisjIHdpdGggZWFjaCBvdGhlci4gTm90ZSB0aGF0IHRoaXMgcmVsaWVzIG9uIHRlbXBv
cmFyeSBsaXZlIHJhbmdlcyBub3QgY3Jvc3NpbmcKKyMgYmFzaWMgYmxvY2sgYm91bmRhcmllcy4K
KworZGVmIGFzc2lnblJlZ2lzdGVyc1RvVGVtcG9yYXJpZXMobGlzdCwga2luZCwgcmVnaXN0ZXJz
KQorICBsaXN0LmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBub2RlLCBpbmRleCB8CisgICAgbm9k
ZS5maWx0ZXIoVG1wKS51bmlxLmVhY2ggeworICAgICAgfCB0bXAgfAorICAgICAgaWYgdG1wLmtp
bmQgPT0ga2luZAorICAgICAgICB0bXAubWVudGlvbiEgaW5kZXgKKyAgICAgIGVuZAorICAgIH0K
KyAgfQorICAKKyAgZnJlZVJlZ2lzdGVycyA9IHJlZ2lzdGVycy5kdXAKKyAgbGlzdC5lYWNoX3dp
dGhfaW5kZXggeworICAgIHwgbm9kZSwgaW5kZXggfAorICAgIHRtcExpc3QgPSBub2RlLmZpbHRl
cihUbXApLnVuaXEKKyAgICB0bXBMaXN0LmVhY2ggeworICAgICAgfCB0bXAgfAorICAgICAgaWYg
dG1wLmtpbmQgPSBraW5kIGFuZCB0bXAuZmlyc3RNZW50aW9uID09IGluZGV4CisgICAgICAgIHJh
aXNlICJDb3VsZCBub3QgYWxsb2NhdGUgcmVnaXN0ZXIgdG8gdGVtcG9yYXJ5IGF0ICN7bm9kZS5j
b2RlT3JnaW5TdHJpbmd9IiBpZiBmcmVlUmVnaXN0ZXJzLmVtcHR5PworICAgICAgICB0bXAucmVn
aXN0ZXIgPSBmcmVlUmVnaXN0ZXJzLnBvcAorICAgICAgZW5kCisgICAgfQorICAgIHRtcExpc3Qu
ZWFjaCB7CisgICAgICB8IHRtcCB8CisgICAgICBpZiB0bXAua2luZCA9IGtpbmQgYW5kIHRtcC5s
YXN0TWVudGlvbiA9PSBpbmRleAorICAgICAgICBmcmVlUmVnaXN0ZXJzLnB1c2ggdG1wLnJlZ2lz
dGVyCisgICAgICAgIHJhaXNlICJSZWdpc3RlciBhbGxvY2F0aW9uIGluY29uc2lzdGVuY3kgYXQg
I3tub2RlLmNvZGVPcmlnaW5TdHJpbmd9IiBpZiBmcmVlUmVnaXN0ZXJzLnNpemUgPiByZWdpc3Rl
cnMuc2l6ZQorICAgICAgZW5kCisgICAgfQorICB9CisgIAorICBsaXN0Lm1hcCB7CisgICAgfCBu
b2RlIHwKKyAgICBub2RlLnJlcGxhY2VUZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkKKyAg
fQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIu
cmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJz
ZXIucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTg1IEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJpbnN0cnVjdGlvbnMi
CityZXF1aXJlICJyZWdpc3RlcnMiCisKK2NsYXNzIFRva2VuCisgIGF0dHJfcmVhZGVyIDpjb2Rl
T3JpZ2luLCA6c3RyaW5nCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJpbmcp
CisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgICAgQHN0cmluZyA9IHN0cmluZworICBl
bmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBpZiBvdGhlci5pc19hPyBUb2tlbgorICAgICAg
QHN0cmluZyA9PSBvdGhlci5zdHJpbmcKKyAgICBlbHNlCisgICAgICBAc3RyaW5nID09IG90aGVy
CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmID1+KG90aGVyKQorICAgIEBzdHJpbmcgPX4gb3Ro
ZXIKKyAgZW5kCisgIAorICBkZWYgdG9fcworICAgICIje0BzdHJpbmcuaW5zcGVjdH0gYXQgbGlu
ZSAje2NvZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQor
ICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc30i
CisgICAgZWxzZQorICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9OiAje2NvbW1lbnRb
MF19IgorICAgIGVuZAorICBlbmQKK2VuZAorCisjCisjIFRoZSBsZXhlci4gVGFrZXMgYSBzdHJp
bmcgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdG9rZW5zLgorIworCitkZWYgbGV4KHN0cikKKyAg
cmVzdWx0ID0gW10KKyAgbGluZU51bWJlciA9IDEKKyAgd2hpbGUgbm90IHN0ci5lbXB0eT8KKyAg
ICBjYXNlIHN0cgorICAgIHdoZW4gL1xBXCMoW15cbl0qKS8KKyAgICAgICMgY29tbWVudCwgaWdu
b3JlCisgICAgd2hlbiAvXEFcbi8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJl
ciwgJCYpCisgICAgICBsaW5lTnVtYmVyICs9IDEKKyAgICB3aGVuIC9cQVthLXpBLVpdKFthLXpB
LVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAg
ICB3aGVuIC9cQVwuKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhs
aW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQV8oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1
bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBKFsgXHRdKykvCisg
ICAgICAjIHdoaXRlc3BhY2UsIGlnbm9yZQorICAgIHdoZW4gL1xBMHgoWzAtOWEtZkEtRl0rKS8K
KyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYuaGV4LnRvX3MpCisgICAg
d2hlbiAvXEEwKFswLTddKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIs
ICQmLm9jdC50b19zKQorICAgIHdoZW4gL1xBKFswLTldKykvCisgICAgICByZXN1bHQgPDwgVG9r
ZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBOjovCisgICAgICByZXN1bHQgPDwg
VG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBWzosXChcKVxbXF09XCtcLSpd
LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICBlbHNlCisg
ICAgICByYWlzZSAiTGV4ZXIgZXJyb3IgYXQgbGluZSBudW1iZXIgI3tsaW5lTnVtYmVyfSwgdW5l
eHBlY3RlZCBzZXF1ZW5jZSAje3N0clswLi4yMF0uaW5zcGVjdH0iCisgICAgZW5kCisgICAgc3Ry
ID0gJH4ucG9zdF9tYXRjaAorICBlbmQKKyAgcmVzdWx0CitlbmQKKworIworIyBUb2tlbiBpZGVu
dGlmaWNhdGlvbi4KKyMKKworZGVmIGlzUmVnaXN0ZXIodG9rZW4pCisgIHRva2VuID1+IFJFR0lT
VEVSX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJbnN0cnVjdGlvbih0b2tlbikKKyAgdG9rZW4gPX4g
SU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0tleXdvcmQodG9rZW4pCisgIHRva2Vu
ID1+IC9cQSgodHJ1ZSl8KGZhbHNlKXwoaWYpfCh0aGVuKXwoZWxzZSl8KGVsc2lmKXwoZW5kKXwo
YW5kKXwob3IpfChub3QpfChtYWNybyl8KGNvbnN0KXwoc2l6ZW9mKXwoZXJyb3IpKVxaLyBvcgor
ICAgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4gb3IKKyAgICB0b2tlbiA9fiBJTlNUUlVDVElP
Tl9QQVRURVJOCitlbmQKKworZGVmIGlzSWRlbnRpZmllcih0b2tlbikKKyAgdG9rZW4gPX4gL1xB
W2EtekEtWl0oW2EtekEtWjAtOV9dKilcWi8gYW5kIG5vdCBpc0tleXdvcmQodG9rZW4pCitlbmQK
KworZGVmIGlzTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQV8oW2EtekEtWjAtOV9dKilcWi8K
K2VuZAorCitkZWYgaXNMb2NhbExhYmVsKHRva2VuKQorICB0b2tlbiA9fiAvXEFcLihbYS16QS1a
MC05X10qKVxaLworZW5kCisKK2RlZiBpc1ZhcmlhYmxlKHRva2VuKQorICBpc0lkZW50aWZpZXIo
dG9rZW4pIG9yIGlzUmVnaXN0ZXIodG9rZW4pCitlbmQKKworZGVmIGlzSW50ZWdlcih0b2tlbikK
KyAgdG9rZW4gPX4gL1xBWzAtOV0vCitlbmQKKworIworIyBUaGUgcGFyc2VyLiBUYWtlcyBhbiBh
cnJheSBvZiB0b2tlbnMgYW5kIHJldHVybnMgYW4gQVNULiBNZXRob2RzCisjIG90aGVyIHRoYW4g
cGFyc2UodG9rZW5zKSBhcmUgbm90IGZvciBwdWJsaWMgY29uc3VtcHRpb24uCisjCisKK2NsYXNz
IFBhcnNlcgorICBkZWYgaW5pdGlhbGl6ZSh0b2tlbnMpCisgICAgQHRva2VucyA9IHRva2Vucwor
ICAgIEBpZHggPSAwCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAg
aWYgQHRva2Vuc1tAaWR4XQorICAgICAgQHRva2Vuc1tAaWR4XS5wYXJzZUVycm9yKCpjb21tZW50
KQorICAgIGVsc2UKKyAgICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICAgIHJhaXNlICJQYXJz
ZSBlcnJvciBhdCBlbmQgb2YgZmlsZSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlBhcnNl
IGVycm9yIGF0IGVuZCBvZiBmaWxlOiAje2NvbW1lbnRbMF19IgorICAgICAgZW5kCisgICAgZW5k
CisgIGVuZAorICAKKyAgZGVmIGNvbnN1bWUocmVnZXhwKQorICAgIGlmIHJlZ2V4cAorICAgICAg
cGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9fiByZWdleHAKKyAgICBlbHNlCisgICAg
ICBwYXJzZUVycm9yIHVubGVzcyBAaWR4ID09IEB0b2tlbnMubGVuZ3RoCisgICAgZW5kCisgICAg
QGlkeCArPSAxCisgIGVuZAorICAKKyAgZGVmIHNraXBOZXdMaW5lCisgICAgd2hpbGUgQHRva2Vu
c1tAaWR4XSA9PSAiXG4iCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibm90IgorICAg
ICAgQGlkeCArPSAxCisgICAgICBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICBlbHNpZiBAdG9rZW5z
W0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAg
cmVzdWx0ID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNb
QGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0
b2tlbnNbQGlkeF0gPT0gInRydWUiCisgICAgICByZXN1bHQgPSBUcnVlLmluc3RhbmNlCisgICAg
ICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImZh
bHNlIgorICAgICAgcmVzdWx0ID0gRmFsc2UuaW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJl
c3VsdCA9IFNldHRpbmcuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNb
QGlkeF0uc3RyaW5nKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisg
ICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRl
QW5kCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgd2hpbGUgQHRva2Vuc1tA
aWR4XSA9PSAiYW5kIgorICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdp
bgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJz
ZVByZWRpY2F0ZUF0b20KKyAgICAgIHJlc3VsdCA9IEFuZC5uZXcoY29kZU9yaWdpbiwgcmVzdWx0
LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVk
aWNhdGUKKyAgICAjIHNvbWUgZXhhbXBsZXMgb2YgcHJlY2VkZW5jZToKKyAgICAjIG5vdCBhIGFu
ZCBiIC0+IChub3QgYSkgYW5kIGIKKyAgICAjIGEgYW5kIGIgb3IgYyAtPiAoYSBhbmQgYikgb3Ig
YworICAgICMgYSBvciBiIGFuZCBjIC0+IGEgb3IgKGIgYW5kIGMpCisgICAgCisgICAgcmVzdWx0
ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJvciIKKyAg
ICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0g
MQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAg
ICAgIHJlc3VsdCA9IE9yLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVuZAor
ICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVZhcmlhYmxlCisgICAgaWYgaXNSZWdp
c3RlcihAdG9rZW5zW0BpZHhdKQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9fiBGUFJfUEFUVEVS
TgorICAgICAgICByZXN1bHQgPSBGUFJlZ2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgZWxzZQorICAgICAgICByZXN1
bHQgPSBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5z
W0BpZHhdLnN0cmluZykKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5z
W0BpZHhdKQorICAgICAgcmVzdWx0ID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJy
b3IKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYg
cGFyc2VBZGRyZXNzKG9mZnNldCkKKyAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhd
ID09ICJbIgorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAK
KyAgICAjIFRocmVlIHBvc3NpYmlsaXRpZXM6CisgICAgIyBbXSAgICAgICAtPiBBYnNvbHV0ZUFk
ZHJlc3MKKyAgICAjIFthXSAgICAgIC0+IEFkZHJlc3MKKyAgICAjIFthLGJdICAgIC0+IEJhc2VJ
bmRleCB3aXRoIHNjYWxlID0gMQorICAgICMgW2EsYixjXSAgLT4gQmFzZUluZGV4CisgICAgCisg
ICAgQGlkeCArPSAxCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIEBpZHggKz0g
MQorICAgICAgcmV0dXJuIEFic29sdXRlQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0KQor
ICAgIGVuZAorICAgIGEgPSBwYXJzZVZhcmlhYmxlCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
XSIKKyAgICAgIHJlc3VsdCA9IEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIGEsIG9mZnNldCkKKyAg
ICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAg
ICAgQGlkeCArPSAxCisgICAgICBiID0gcGFyc2VWYXJpYWJsZQorICAgICAgaWYgQHRva2Vuc1tA
aWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBh
LCBiLCAxLCBvZmZzZXQpCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0
b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9y
IHVubGVzcyBbIjEiLCAiMiIsICI0IiwgIjgiXS5tZW1iZXI/IEB0b2tlbnNbQGlkeF0uc3RyaW5n
CisgICAgICAgIGMgPSBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAg
ICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIGMsIG9mZnNldCkKKyAg
ICAgIGVuZAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisg
IGRlZiBwYXJzZUNvbG9uQ29sb24KKyAgICBza2lwTmV3TGluZQorICAgIGNvZGVPcmlnaW4gPSBA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZp
ZXIgQHRva2Vuc1tAaWR4XQorICAgIG5hbWVzID0gW0B0b2tlbnNbQGlkeF0uc3RyaW5nXQorICAg
IEBpZHggKz0gMQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIjo6IgorICAgICAgQGlkeCAr
PSAxCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQor
ICAgICAgbmFtZXMgPDwgQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgIEBpZHggKz0gMQorICAg
IGVuZAorICAgIHJhaXNlIGlmIG5hbWVzLmVtcHR5PworICAgIFtjb2RlT3JpZ2luLCBuYW1lc10K
KyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHNraXBOZXdMaW5lCisg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgTmVnSW1t
ZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCBwYXJzZUV4cHJlc3Npb25B
dG9tKQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRv
a2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxz
aWYgaXNJbnRlZ2VyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IEltbWVkaWF0ZS5uZXco
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pKQorICAg
ICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vu
c1tAaWR4XQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAg
IGlmIG5hbWVzLnNpemUgPiAxCisgICAgICAgIFN0cnVjdE9mZnNldC5mb3JGaWVsZChjb2RlT3Jp
Z2luLCBuYW1lc1swLi4tMl0uam9pbignOjonKSwgbmFtZXNbLTFdKQorICAgICAgZWxzZQorICAg
ICAgICBWYXJpYWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzWzBdKQorICAgICAgZW5kCisg
ICAgZWxzaWYgaXNSZWdpc3RlciBAdG9rZW5zW0BpZHhdCisgICAgICBwYXJzZVZhcmlhYmxlCisg
ICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIgorICAgICAgQGlkeCArPSAxCisgICAg
ICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAgU2l6ZW9mLmZvck5h
bWUoY29kZU9yaWdpbiwgbmFtZXMuam9pbignOjonKSkKKyAgICBlbHNlCisgICAgICBwYXJzZUVy
cm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbk11bAorICAgIHNr
aXBOZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHdoaWxlIEB0
b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gTXVsSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tA
aWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAg
ZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVu
ZAorICAKKyAgZGVmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgQHRva2Vuc1tAaWR4XSA9PSAiLSIg
b3IgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIiBvciBpc0ludGVnZXIoQHRva2Vuc1tAaWR4XSkg
b3IgaXNWYXJpYWJsZShAdG9rZW5zW0BpZHhdKSBvciBAdG9rZW5zW0BpZHhdID09ICIoIgorICBl
bmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb24KKyAgICBza2lwTmV3TGluZQorICAgIHJlc3Vs
dCA9IHBhcnNlRXhwcmVzc2lvbk11bAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIisiIG9y
IEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIrIgorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vu
c1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAg
ICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICItIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
cmVzdWx0ID0gU3ViSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwg
cmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisg
ICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VPcGVy
YW5kKGNvbW1lbnQpCisgICAgaWYgY291bGRCZUV4cHJlc3Npb24KKyAgICAgIGV4cHIgPSBwYXJz
ZUV4cHJlc3Npb24KKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgIHBhcnNl
QWRkcmVzcyhleHByKQorICAgICAgZWxzZQorICAgICAgICBleHByCisgICAgICBlbmQKKyAgICBl
bHNpZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5u
ZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCAwKSkKKyAgICBlbHNpZiBpc0xhYmVsIEB0b2tl
bnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4sIExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9r
ZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVs
c2lmIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBMb2NhbExhYmVs
UmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExvY2FsTGFiZWwuZm9yTmFt
ZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAg
IEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcihjb21t
ZW50KQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAg
c2tpcE5ld0xpbmUKKyAgICBjb25zdW1lKC9cQVwoXFovKQorICAgIHZhcmlhYmxlcyA9IFtdCisg
ICAgbG9vcCB7CisgICAgICBza2lwTmV3TGluZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
KSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBpc0lkZW50
aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgdmFyaWFibGVzIDw8IFZhcmlhYmxlLmZvck5h
bWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmIEB0b2tlbnNbQGlk
eF0gPT0gIikiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgYnJlYWsKKyAgICAgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
ZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IKKyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAg
ICAgIHBhcnNlRXJyb3IKKyAgICAgIGVuZAorICAgIH0KKyAgICB2YXJpYWJsZXMKKyAgZW5kCisg
IAorICBkZWYgcGFyc2VTZXF1ZW5jZShmaW5hbCwgY29tbWVudCkKKyAgICBmaXJzdENvZGVPcmln
aW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICBsaXN0ID0gW10KKyAgICBsb29wIHsK
KyAgICAgIGlmIChAaWR4ID09IEB0b2tlbnMubGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5h
bCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lm
IEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAjIGlnbm9yZQorICAgICAgICBAaWR4ICs9
IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImNvbnN0IgorICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNWYXJpYWJsZSBAdG9rZW5zW0BpZHhdCisg
ICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiPSIKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIHZhbHVlID0gcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJp
YWJsZS5uYW1lfSIpCisgICAgICAgIGxpc3QgPDwgQ29uc3REZWNsLm5ldyhAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0g
PT0gImVycm9yIgorICAgICAgICBsaXN0IDw8IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4pCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAi
aWYiCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIHByZWRpY2F0ZSA9IHBh
cnNlUHJlZGljYXRlCisgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWZUaGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVP
cmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikp
XFovLCAid2hpbGUgaW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAg
ICBsaXN0IDw8IGlmVGhlbkVsc2UKKyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxz
aWYiCisgICAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgcHJlZGlj
YXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlc
Wi8pCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVs
c2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChl
bmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1c
IiIpKQorICAgICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBlbHNlQ2FzZQorICAgICAgICAg
IGlmVGhlbkVsc2UgPSBlbHNlQ2FzZQorICAgICAgICBlbmQKKyAgICAgICAgaWYgQHRva2Vuc1tA
aWR4XSA9PSAiZWxzZSIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBpZlRoZW5FbHNl
LmVsc2VDYXNlID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxz
ZSBjYXNlIGZvciBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKQorICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4
XSA9PSAiZW5kIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbmQKKyAgICAgIGVsc2lm
IEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAg
ICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgIGJvZHkgPSBwYXJz
ZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBtYWNybyAje25hbWV9IikKKyAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgIGxpc3QgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5h
bWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICAgIGVsc2lmIGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tA
aWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAg
ICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQg
QHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVj
dGlvbiwgYW5kIGl0J3MgdGhlIGxhc3Qgb25lLgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVs
c2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3Ry
dWN0aW9uLgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5h
bWUsIFtdKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBJ
dCdzIGRlZmluaXRlbHkgYW4gaW5zdHJ1Y3Rpb24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9w
ZXJhbmQuCisgICAgICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgIGVuZE9mU2VxdWVuY2Ug
PSBmYWxzZQorICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VP
cGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgaW5zdHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAg
ICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBA
dG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGlu
c3RydWN0aW9uIGFuZCBvZiB0aGUgc2VxdWVuY2UuCisgICAgICAgICAgICAgIGVuZE9mU2VxdWVu
Y2UgPSB0cnVlCisgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5z
W0BpZHhdID09ICIsIgorICAgICAgICAgICAgICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAg
ICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAi
XG4iCisgICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAj
e2ZpbmFsfSBhZnRlciAje29wZXJhbmRzLmxhc3QuZHVtcH0iKQorICAgICAgICAgICAgZW5kCisg
ICAgICAgICAgfQorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4s
IG5hbWUsIG9wZXJhbmRzKQorICAgICAgICAgIGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgZW5kCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgaXNJZGVudGlm
aWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlk
eCArPSAxCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICAgICAgIyBNYWNy
byBpbnZvY2F0aW9uLgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIG9wZXJhbmRzID0g
W10KKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0g
IikiCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBs
b29wIHsKKyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vu
c1tAaWR4XSA9PSAibWFjcm8iCisgICAgICAgICAgICAgICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRh
IQorICAgICAgICAgICAgICAgIGNvZGVPcmlnaW5Jbm5lciA9IEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxl
cyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1
ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBh
cyBhcmd1bWVudCB0byAje25hbWV9IikKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgICAgICAgICBvcGVyYW5kcyA8PCBNYWNyby5uZXcoY29kZU9yaWdpbklubmVyLCBuaWwsIHZh
cmlhYmxlcywgYm9keSkKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9wZXJh
bmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1l
fSIpCisgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAg
ICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gIiwiCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBwYXJzZUVycm9yICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5z
dHJpbmcuaW5zcGVjdH0gd2hpbGUgcGFyc2luZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0i
CisgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgfQorICAgICAgICAgIGVuZAorICAgICAg
ICAgIGxpc3QgPDwgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAg
ICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IgIkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7
bmFtZX0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9y
IGlzTG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhd
ID09ICI6IgorICAgICAgICAjIEl0J3MgYSBsYWJlbC4KKyAgICAgICAgaWYgaXNMYWJlbCBuYW1l
CisgICAgICAgICAgbGlzdCA8PCBMYWJlbC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
ICAgIGVsc2UKKyAgICAgICAgICBsaXN0IDw8IExvY2FsTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2lu
LCBuYW1lKQorICAgICAgICBlbmQKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNlCisgICAg
ICAgIHBhcnNlRXJyb3IgIkV4cGVjdGluZyB0ZXJtaW5hbCAje2ZpbmFsfSAje2NvbW1lbnR9Igor
ICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhmaXJzdENvZGVPcmlnaW4sIGxpc3Qp
CisgIGVuZAorZW5kCisKK2RlZiBwYXJzZSh0b2tlbnMpCisgIHBhcnNlciA9IFBhcnNlci5uZXco
dG9rZW5zKQorICBwYXJzZXIucGFyc2VTZXF1ZW5jZShuaWwsICIiKQorZW5kCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK0dQUlMgPQorICBbCisgICAidDAiLAorICAgInQxIiwKKyAgICJ0MiIsCisgICAi
dDMiLAorICAgInQ0IiwKKyAgICJjZnIiLAorICAgImEwIiwKKyAgICJhMSIsCisgICAicjAiLAor
ICAgInIxIiwKKyAgICJzcCIKKyAgXQorCitGUFJTID0KKyAgWworICAgImZ0MCIsCisgICAiZnQx
IiwKKyAgICJmdDIiLAorICAgImZ0MyIsCisgICAiZnQ0IiwKKyAgICJmdDUiLAorICAgImZhMCIs
CisgICAiZmExIiwKKyAgICJmYTIiLAorICAgImZhMyIsCisgICAiZnIiCisgIF0KKworUkVHSVNU
RVJTID0gR1BSUyArIEZQUlMKKworR1BSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBH
UFJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKK0ZQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxB
KCgnICsgRlBSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCisKK1JFR0lTVEVSX1BBVFRFUk4gPSBS
ZWdleHAubmV3KCdcXEEoKCcgKyBSRUdJU1RFUlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2VsZl9oYXNoLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5y
YgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisj
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJkaWdlc3Qvc2hh
MSIKK3JlcXVpcmUgInBhdGhuYW1lIgorCisjCisjIHNlbGZIYXNoIC0+IFNIQTEgaGV4ZGlnZXN0
CisjCisjIFJldHVybnMgYSBoYXNoIG9mIHRoZSBvZmZsaW5lYXNtIHNvdXJjZSBjb2RlLiBUaGlz
IGFsbG93cyBkZXBlbmRlbmN5CisjIHRyYWNraW5nIGZvciBub3QganVzdCBjaGFuZ2VzIGluIGlu
cHV0LCBidXQgYWxzbyBjaGFuZ2VzIGluIHRoZSBhc3NlbWJsZXIKKyMgaXRzZWxmLgorIworCitk
ZWYgc2VsZkhhc2gKKyAgY29udGVudHMgPSAiIgorICBteVBhdGggPSBQYXRobmFtZS5uZXcoX19G
SUxFX18pLmRpcm5hbWUKKyAgRGlyLmZvcmVhY2gobXlQYXRoKSB7CisgICAgfCBlbnRyeSB8Cisg
ICAgaWYgZW50cnkgPX4gL1wucmIkLworICAgICAgY29udGVudHMgKz0gSU86OnJlYWQobXlQYXRo
ICsgZW50cnkpCisgICAgZW5kCisgIH0KKyAgcmV0dXJuIERpZ2VzdDo6U0hBMS5oZXhkaWdlc3Qo
Y29udGVudHMpCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
c2V0dGluZ3MucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMDUgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUg
ImJhY2tlbmRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCisjCisj
IGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIC0+IHNldHRpbmdzQ29tYmlhdGlvbnMK
KyMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkgb2Ygc2V0dGluZ3MgbWFwcywgd2hlcmUgYSBzZXR0aW5n
cyBtYXAgY29uc3RpdHV0ZXMKKyMgYSBjb25maWd1cmF0aW9uIGZvciB0aGUgYXNzZW1ibHkgY29k
ZSBiZWluZyBnZW5lcmF0ZWQuIFRoZSBtYXAKKyMgY29udGFpbnMga2V5IHZhbHVlIHBhaXJzIHdo
ZXJlIGtleXMgYXJlIHNldHRpbmdzIG5hbWVzIChzdHJpbmdzKSBhbmQKKyMgdGhlIHZhbHVlcyBh
cmUgYm9vbGVhbnMgKHRydWUgZm9yIGVuYWJsZWQsIGZhbHNlIGZvciBkaXNhYmxlZCkuCisjCisK
K2RlZiBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBzZXR0aW5nc0NvbWJpbmF0
aW9ucyA9IFtdCisgIAorICBkZWYgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRp
b25zLCBtYXBTb0ZhciwgcmVtYWluaW5nKQorICAgIGlmIHJlbWFpbmluZy5lbXB0eT8KKyAgICAg
IHNldHRpbmdzQ29tYmluYXRpb25zIDw8IG1hcFNvRmFyCisgICAgICByZXR1cm4KKyAgICBlbmQK
KyAgICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBd
XSA9IHRydWUKKyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5l
d01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAK
KyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IGZhbHNlCisgICAgc2V0dGluZ3NDb21iaW5hdG9y
KHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmluZ1sxLi4tMV0pCisgIGVuZAor
ICAKKyAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCB7fSwgKGFzdC5m
aWx0ZXIoU2V0dGluZykudW5pcS5jb2xsZWN0e3x2fCB2Lm5hbWV9ICsgWyJYODYiLCAiQVJNdjci
XSkudW5pcSkKKyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zCitlbmQKKworIworIyBmb3JTZXR0
aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywg
bG93TGV2ZWxBU1QsIGJhY2tlbmQgfCAuLi4gfQorIworIyBEZXRlcm1pbmVzIGlmIHRoZSBzZXR0
aW5ncyBjb21iaW5hdGlvbiBpcyB2YWxpZCwgYW5kIGlmIHNvLCBjYWxscworIyB0aGUgYmxvY2sg
d2l0aCB0aGUgaW5mb3JtYXRpb24geW91IG5lZWQgdG8gZ2VuZXJhdGUgY29kZS4KKyMKKworZGVm
IGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkKKyAgIyBDaGVjayB3aGljaCBhcmNo
aXRlY3R1cmVzIHRoaXMgY29tYmluYXRvciBjbGFpbXMgdG8gc3VwcG9ydC4KKyAgbnVtQ2xhaW1l
ZEJhY2tlbmRzID0gMAorICBzZWxlY3RlZEJhY2tlbmQgPSBuaWwKKyAgQkFDS0VORFMuZWFjaCB7
CisgICAgfCBiYWNrZW5kIHwKKyAgICBpc1N1cHBvcnRlZCA9IGNvbmNyZXRlU2V0dGluZ3NbYmFj
a2VuZF0KKyAgICByYWlzZSB1bmxlc3MgaXNTdXBwb3J0ZWQgIT0gbmlsCisgICAgbnVtQ2xhaW1l
ZEJhY2tlbmRzICs9IGlmIGlzU3VwcG9ydGVkIHRoZW4gMSBlbHNlIDAgZW5kCisgICAgaWYgaXNT
dXBwb3J0ZWQKKyAgICAgIHNlbGVjdGVkQmFja2VuZCA9IGJhY2tlbmQKKyAgICBlbmQKKyAgfQor
ICAKKyAgcmV0dXJuIGlmIG51bUNsYWltZWRCYWNrZW5kcyA+IDEKKyAgCisgICMgUmVzb2x2ZSB0
aGUgQVNUIGRvd24gdG8gYSBsb3ctbGV2ZWwgZm9ybSAobm8gbWFjcm9zIG9yIGNvbmRpdGlvbmFs
cykuCisgIGxvd0xldmVsQVNUID0gYXN0LnJlc29sdmVTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdz
KQorICAKKyAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIHNlbGVjdGVkQmFj
a2VuZAorZW5kCisKKyMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsK
KyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9Cisj
CisjIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCBzZXR0aW5nc0NvbWJpbmF0
aW9ucykgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwg
Li4uIH0KKyMKKyMgRXhlY3V0ZXMgdGhlIGdpdmVuIGJsb2NrIGZvciBlYWNoIHZhbGlkIHNldHRp
bmdzIGNvbWJpbmF0aW9uIGluIHRoZQorIyBzZXR0aW5ncyBtYXAuIFRoZSBhc3QgcGFzc2VkIGlu
dG8gdGhlIGJsb2NrIGlzIHJlc29sdmVkCisjIChhc3QucmVzb2x2ZSkgYWdhaW5zdCB0aGUgc2V0
dGluZ3MuCisjCisjIFRoZSBmaXJzdCBmb3JtIHdpbGwgY2FsbCBjb21wdXRlU2V0dGluZ3NDb21i
aW5hdGlvbnMoYXN0KSBmb3IgeW91LgorIworCitkZWYgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21i
aW5hdGlvbihhc3QsICpvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zKQorICByYWlzZSBpZiBv
cHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zLnNpemUgPiAxCisgIAorICBpZiBvcHRpb25hbFNl
dHRpbmdzQ29tYmluYXRpb25zLmVtcHR5PworICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gY29t
cHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgZWxzZQorICAgIHNldHRpbmdzQ29tYmlu
YXRpb25zID0gb3B0aW9uYWxTZXR0aW5nc0NvbWJpYXRpb25zWzBdCisgIGVuZAorICAKKyAgc2V0
dGluZ3NDb21iaW5hdGlvbnMuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IGNvbmNyZXRlU2V0dGlu
Z3MsIGluZGV4IHwKKyAgICBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpIHsKKyAg
ICAgIHwgY29uY3JldGVTZXR0aW5nc18sIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICAgIHlp
ZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgIH0K
KyAgfQorZW5kCisKKyMKKyMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisjCisj
IFJldHVybnMgdGhlIEMrKyBjb2RlIHVzZWQgdG8gdGVzdCBpZiB3ZSBhcmUgaW4gYSBjb25maWd1
cmF0aW9uIHRoYXQKKyMgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIGNvbmNyZXRlIHNldHRpbmdz
LgorIworCitkZWYgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICIjaWYgIiAr
IGNvbmNyZXRlU2V0dGluZ3MudG9fYS5jb2xsZWN0eworICAgIHwgcGFpciB8CisgICAgKGlmIHBh
aXJbMV0KKyAgICAgICAiIgorICAgICBlbHNlCisgICAgICAgIiEiCisgICAgIGVuZCkgKyAiT0ZG
TElORV9BU01fIiArIHBhaXJbMF0KKyAgfS5qb2luKCIgJiYgIikKK2VuZAorCisjCisjIGlzQVNU
RXJyb25lb3VzKGFzdCkKKyMKKyMgVGVzdHMgdG8gc2VlIGlmIHRoZSBBU1QgY2xhaW1zIHRoYXQg
dGhlcmUgaXMgYW4gZXJyb3IgLSBpLmUuIGlmIHRoZQorIyB1c2VyJ3MgY29kZSwgYWZ0ZXIgc2V0
dGluZ3MgcmVzb2x1dGlvbiwgaGFzIEVycm9yIG5vZGVzLgorIworCitkZWYgaXNBU1RFcnJvbmVv
dXMoYXN0KQorICBub3QgYXN0LmZpbHRlcihFcnJvcikuZW1wdHk/CitlbmQKKworIworIyBhc3Nl
cnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisjCisjIEVtaXRzIGEgY2hlY2sgdGhh
dCBhc3NlcnRzIHRoYXQgd2UncmUgdXNpbmcgdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24uCisjCisK
K2RlZiBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgICRvdXRwdXQucHV0
cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgJG91dHB1dC5wdXRzICIjZWxz
ZSIKKyAgJG91dHB1dC5wdXRzICIjZXJyb3IgXCJDb25maWd1cmF0aW9uIG1pc21hdGNoLlwiIgor
ICAkb3V0cHV0LnB1dHMgIiNlbmRpZiIKK2VuZAorCisjCisjIGVtaXRDb2RlSW5Db25maWd1cmF0
aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkgeworIyAgICAgfCBjb25jcmV0ZVNl
dHRpbmdzLCBhc3QsIGJhY2tlbmQgfCAuLi4gfQorIworIyBFbWl0cyBhbGwgcmVsZXZhbnQgZ3Vh
cmRzIHRvIHNlZSBpZiB0aGUgY29uZmlndXJhdGlvbiBob2xkcyBhbmQKKyMgY2FsbHMgdGhlIGJs
b2NrIGlmIHRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBlcnJvbmVvdXMuCisjCisKK2RlZiBlbWl0
Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpCisgICRv
dXRwdXQucHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIGlmIGlz
QVNURXJyb25lb3VzKGFzdCkKKyAgICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIkludmFsaWQgY29u
ZmlndXJhdGlvbi5cIiIKKyAgZWxzaWYgbm90IFdPUktJTkdfQkFDS0VORFMuaW5jbHVkZT8gYmFj
a2VuZAorICAgICRvdXRwdXQucHV0cyAiI2Vycm9yIFwiVGhpcyBiYWNrZW5kIGlzIG5vdCBzdXBw
b3J0ZWQgeWV0LlwiIgorICBlbHNlCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgYXN0LCBi
YWNrZW5kCisgIGVuZAorICAKKyAgJG91dHB1dC5wdXRzICIjZW5kaWYiCitlbmQKKworIworIyBl
bWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGlu
Z3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBFbWl0cyBndWFyZCBjb2RlcyBm
b3IgYWxsIHZhbGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgY2FsbHMgdGhlIGJsb2NrCisjIGZvciB0
aG9zZSBjb25maWd1cmF0aW9ucyB0aGF0IGFyZSB2YWxpZCBhbmQgbm90IGVycm9uZW91cy4KKyMK
KworZGVmIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3QpCisgIGZvckVhY2hWYWxpZFNl
dHRpbmdzQ29tYmluYXRpb24oYXN0KSB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZl
bEFTVCwgYmFja2VuZCwgaW5kZXggfAorICAgICRvdXRwdXQucHV0cyBjcHBTZXR0aW5nc1Rlc3Qo
Y29uY3JldGVTZXR0aW5ncykKKyAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFT
VCwgYmFja2VuZCwgaW5kZXgKKyAgICAkb3V0cHV0LnB1dHMgIiNlbmRpZiIKKyAgfQorZW5kCisK
KworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3Jt
LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJh
bnNmb3JtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0MiBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorCisjCisjIG5vZGUucmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKQorIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgZG9lcyBu
b3QgaGF2ZSBhbnkgSWZUaGVuRWxzZSBub2RlcyBieQorIyBzdWJzdGl0dXRpbmcgY29uY3JldGUg
Ym9vbGVhbiB2YWx1ZXMgZm9yIGVhY2ggU2V0dGluZy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYg
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hp
bGQgfAorICAgICAgY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIH0KKyAgZW5k
CitlbmQKKworY2xhc3MgVHJ1ZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAg
IHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcKKyAgZGVmIHJl
c29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZXR0aW5nc1tAbmFtZV0uYXNOb2RlCisgIGVu
ZAorZW5kCisKK2NsYXNzIEFuZAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAg
IChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIGFuZCBAcmlnaHQucmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE9y
CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykudmFsdWUgb3IgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncyku
dmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBOb3QKKyAgZGVmIHJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICAobm90IEBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
LnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZQorICBkZWYgcmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGlmIEBwcmVkaWNhdGUucmVzb2x2ZVNldHRpbmdz
KHNldHRpbmdzKS52YWx1ZQorICAgICAgQHRoZW5DYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykKKyAgICBlbHNlCisgICAgICBAZWxzZUNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQor
ICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgcmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAg
fCBpdGVtIHwKKyAgICAgIGl0ZW0gPSBpdGVtLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAg
ICAgIGlmIGl0ZW0uaXNfYT8gU2VxdWVuY2UKKyAgICAgICAgbmV3TGlzdCArPSBpdGVtLmxpc3QK
KyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtCisgICAgICBlbmQKKyAgICB9Cisg
ICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisgIGVuZAorZW5kCisKKyMKKyMg
bm9kZS5kZW1hY3JvaWZ5KG1hY3JvcykKKyMgbm9kZS5zdWJzdGl0dXRlKG1hcHBpbmcpCisjCisj
IGRlbWFjcm9pZnkoKSBjb25zdHJ1Y3RzIGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55
IE1hY3JvCisjIG5vZGVzLCB3aGlsZSBzdWJzdGl0dXRlKCkgcmVwbGFjZXMgVmFyaWFibGUgbm9k
ZXMgd2l0aCB0aGUgZ2l2ZW4KKyMgbm9kZXMgaW4gdGhlIG1hcHBpbmcuCisjCisKK2NsYXNzIE5v
ZGUKKyAgZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwg
Y2hpbGQgfAorICAgICAgY2hpbGQuZGVtYWNyb2lmeShtYWNyb3MpCisgICAgfQorICBlbmQKKyAg
CisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBj
aGlsZCB8CisgICAgICBjaGlsZC5zdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgfQorICBlbmQKKyAg
CisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgbWFwQ2hpbGRyZW4geworICAg
ICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5zdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAg
fQorICBlbmQKK2VuZAorCitjbGFzcyBNYWNybworICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQor
ICAgIG15TWFwcGluZyA9IHt9CisgICAgbWFwcGluZy5lYWNoX3BhaXIgeworICAgICAgfCBrZXks
IHZhbHVlIHwKKyAgICAgIHVubGVzcyBAdmFyaWFibGVzLmluY2x1ZGU/IGtleQorICAgICAgICBt
eU1hcHBpbmdba2V5XSA9IHZhbHVlCisgICAgICBlbmQKKyAgICB9CisgICAgbWFwQ2hpbGRyZW4g
eworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5zdWJzdGl0dXRlKG15TWFwcGluZykKKyAg
ICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBp
bmcpCisgICAgaWYgbWFwcGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UK
KyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbAorICBk
ZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAg
IG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5k
CisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBzdWJzdGl0dXRlKGNvbnN0YW50cykKKyAgICBuZXdM
aXN0ID0gW10KKyAgICBteUNvbnN0YW50cyA9IGNvbnN0YW50cy5kdXAKKyAgICBAbGlzdC5lYWNo
IHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IENvbnN0RGVjbAorICAgICAg
ICBteUNvbnN0YW50c1tpdGVtLnZhcmlhYmxlXSA9IGl0ZW0udmFsdWUuc3Vic3RpdHV0ZShteUNv
bnN0YW50cykKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtLnN1YnN0aXR1dGUo
bXlDb25zdGFudHMpCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmln
aW4sIG5ld0xpc3QpCisgIGVuZAorICAKKyAgZGVmIHJlbmFtZUxhYmVscyhjb21tZW50KQorICAg
IG1hcHBpbmcgPSB7fQorICAgIAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAg
ICAgIGlmIGl0ZW0uaXNfYT8gTG9jYWxMYWJlbAorICAgICAgICBtYXBwaW5nW2l0ZW1dID0gTG9j
YWxMYWJlbC51bmlxdWUoaWYgY29tbWVudCB0aGVuIGNvbW1lbnQgKyAiXyIgZWxzZSAiIiBlbmQg
KyBpdGVtLmNsZWFuTmFtZSkKKyAgICAgIGVuZAorICAgIH0KKyAgICAKKyAgICBzdWJzdGl0dXRl
TGFiZWxzKG1hcHBpbmcpCisgIGVuZAorICAKKyAgZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAg
IG15TWFjcm9zID0gbWFjcm9zLmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwK
KyAgICAgIGlmIGl0ZW0uaXNfYT8gTWFjcm8KKyAgICAgICAgbXlNYWNyb3NbaXRlbS5uYW1lXSA9
IGl0ZW0KKyAgICAgIGVuZAorICAgIH0KKyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNo
IHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgICMg
SWdub3JlLgorICAgICAgZWxzaWYgaXRlbS5pc19hPyBNYWNyb0NhbGwKKyAgICAgICAgbWFwcGlu
ZyA9IHt9CisgICAgICAgIG15TXlNYWNyb3MgPSBteU1hY3Jvcy5kdXAKKyAgICAgICAgcmFpc2Ug
IkNvdWxkIG5vdCBmaW5kIG1hY3JvICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0
cmluZ30iIHVubGVzcyBteU1hY3Jvc1tpdGVtLm5hbWVdCisgICAgICAgIHJhaXNlICJBcmd1bWVu
dCBjb3VudCBtaXNtYXRjaCBmb3IgY2FsbCB0byAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVP
cmlnaW5TdHJpbmd9IiB1bmxlc3MgaXRlbS5vcGVyYW5kcy5zaXplID09IG15TWFjcm9zW2l0ZW0u
bmFtZV0udmFyaWFibGVzLnNpemUKKyAgICAgICAgaXRlbS5vcGVyYW5kcy5zaXplLnRpbWVzIHsK
KyAgICAgICAgICB8IGlkeCB8CisgICAgICAgICAgaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/
IFZhcmlhYmxlIGFuZCBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAg
ICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9
IG15TWFjcm9zW2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgbWFwcGluZ1tt
eU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAg
ZWxzaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IE1hY3JvCisgICAgICAgICAgICBteU15TWFj
cm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBpdGVtLm9wZXJh
bmRzW2lkeF0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJs
ZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG15TXlNYWNy
b3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBuaWwKKyAgICAgICAgICAg
IG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBpdGVtLm9wZXJh
bmRzW2lkeF0KKyAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBuZXdMaXN0ICs9IG15
TWFjcm9zW2l0ZW0ubmFtZV0uYm9keS5zdWJzdGl0dXRlKG1hcHBpbmcpLmRlbWFjcm9pZnkobXlN
eU1hY3JvcykucmVuYW1lTGFiZWxzKGl0ZW0ubmFtZSkubGlzdAorICAgICAgZWxzZQorICAgICAg
ICBuZXdMaXN0IDw8IGl0ZW0uZGVtYWNyb2lmeShteU1hY3JvcykKKyAgICAgIGVuZAorICAgIH0K
KyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkuc3Vic3RpdHV0ZSh7fSkKKyAg
ZW5kCitlbmQKKworIworIyBub2RlLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorIwor
IyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgaGFzIG9mZnNldCB2YWx1ZXMgaW5zdGVhZCBvZiBz
eW1ib2xpYworIyBvZmZzZXRzLgorIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlT2Zmc2V0
cyhvZmZzZXRzLCBzaXplcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAg
ICAgIGNoaWxkLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIH0KKyAgZW5kCitl
bmQKKworY2xhc3MgU3RydWN0T2Zmc2V0CisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBz
aXplcykKKyAgICBpZiBvZmZzZXRzW3NlbGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmln
aW4sIG9mZnNldHNbc2VsZl0pCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQK
K2VuZAorCitjbGFzcyBTaXplb2YKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVz
KQorICAgIGlmIHNpemVzW3NlbGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIHNp
emVzW3NlbGZdKQorICAgIGVsc2UKKyAgICAgIHB1dHMgIkNvdWxkIG5vdCBmaW5kICN7c2VsZi5p
bnNwZWN0fSBpbiAje3NpemVzLmtleXMuaW5zcGVjdH0iCisgICAgICBwdXRzICJzaXplcyA9ICN7
c2l6ZXMuaW5zcGVjdH0iCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMKKyMg
bm9kZS5mb2xkCisjCisjIFJlc29sdmUgY29uc3RhbnQgcmVmZXJlbmNlcyBhbmQgY29tcHV0ZSBh
cml0aG1ldGljIGV4cHJlc3Npb25zLgorIworCitjbGFzcyBOb2RlCisgIGRlZiBmb2xkCisgICAg
bWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5mb2xkCisgICAgfQor
ICBlbmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQg
PSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1
bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdo
dC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZh
bHVlICsgQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzCisg
IGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZv
bGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0
dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3
KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlIC0gQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitj
bGFzcyBNdWxJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisg
ICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNf
YT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlh
dGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICogQHJpZ2h0LnZh
bHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBOZWdJbW1lZGlhdGUKKyAgZGVmIGZvbGQKKyAgICBA
Y2hpbGQgPSBAY2hpbGQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAY2hpbGQuaXNfYT8g
SW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtQGNoaWxkLnZhbHVlKQor
ICBlbmQKK2VuZAorCisjCisjIG5vZGUucmVzb2x2ZUFmdGVyU2V0dGluZ3Mob2Zmc2V0cywgc2l6
ZXMpCisjCisjIENvbXBpbGUgYXNzZW1ibHkgYWdhaW5zdCBhIHNldCBvZiBvZmZzZXRzLgorIwor
CitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlKG9mZnNldHMsIHNpemVzKQorICAgIGRlbWFjcm9p
Znkoe30pLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKS5mb2xkCisgIGVuZAorZW5kCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjc1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIGNhc2UgbmFt
ZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIiwgInQxIiwgImExIiwgInIxIiwgInQyIiwgInQz
IgorICAgICAgdHJ1ZQorICAgIHdoZW4gInQ0IiwgImNmciIKKyAgICAgIGZhbHNlCisgICAgZWxz
ZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgeDg2T3BlcmFuZChraW5k
KQorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgY2FzZSBr
aW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlYWwiCisgICAgICB3aGVuIDpoYWxmCisg
ICAgICAgICIlYXgiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYXgiCisgICAgICBlbHNl
CisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAg
ICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWRsIgorICAgICAgd2hl
biA6aGFsZgorICAgICAgICAiJWR4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWR4Igor
ICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDIiCisgICAg
ICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVjbCIKKyAgICAgIHdoZW4g
OmhhbGYKKyAgICAgICAgIiVjeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVjeCIKKyAg
ICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQzIgorICAgICAg
Y2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlYmwiCisgICAgICB3aGVuIDpo
YWxmCisgICAgICAgICIlYngiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYngiCisgICAg
ICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0NCIKKyAgICAgIGNh
c2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNpbCIKKyAgICAgIHdoZW4gOmhh
bGYKKyAgICAgICAgIiVzaSIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzaSIKKyAgICAg
IGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gImNmciIKKyAgICAgIGNh
c2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWRpbCIKKyAgICAgIHdoZW4gOmhh
bGYKKyAgICAgICAgIiVkaSIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkaSIKKyAgICAg
IGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInNwIgorICAgICAgY2Fz
ZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlc3BsIgorICAgICAgd2hlbiA6aGFs
ZgorICAgICAgICAiJXNwIgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZXNwIgorICAgICAg
ZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAg
ICBlbmQKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVy
YW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgIGRlZiB4ODZP
cGVyYW5kKGtpbmQpCisgICAgcmFpc2UgdW5sZXNzIGtpbmQgPT0gOmRvdWJsZQorICAgIGNhc2Ug
bmFtZQorICAgIHdoZW4gImZ0MCIsICJmYTAiLCAiZnIiCisgICAgICAiJXhtbTAiCisgICAgd2hl
biAiZnQxIiwgImZhMSIKKyAgICAgICIleG1tMSIKKyAgICB3aGVuICJmdDIiLCAiZmEyIgorICAg
ICAgIiV4bW0yIgorICAgIHdoZW4gImZ0MyIsICJmYTMiCisgICAgICAiJXhtbTMiCisgICAgd2hl
biAiZnQ0IgorICAgICAgIiV4bW00IgorICAgIHdoZW4gImZ0NSIKKyAgICAgICIleG1tNSIKKyAg
ICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5k
KGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBJ
bW1lZGlhdGUKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiJCN7dmFsdWV9IgorICBlbmQK
KyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIiN7dmFsdWV9IgorICBlbmQKK2VuZAor
CitjbGFzcyBBZGRyZXNzCisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5k
CisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jh
c2UueDg2T3BlcmFuZCg6aW50KX0pIgorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQp
CisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5k
ZXgKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVm
IHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5k
KDppbnQpfSwgI3tpbmRleC54ODZPcGVyYW5kKDppbnQpfSwgI3tzY2FsZX0pIgorICBlbmQKKwor
ICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2b3BlcmFuZChraW5kKX0iCisg
IGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25Y
ODYKKyAgICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIj
e2FkZHJlc3MudmFsdWV9IgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAg
ICAiKiN7YWRkcmVzcy52YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNl
CisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgIGFzbUxhYmVsCisgIGVuZAorZW5kCisK
K2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisg
ICAgYXNtTGFiZWwKKyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24KKyAgZGVmIHg4Nk9w
ZXJhbmRzKCpraW5kcykKKyAgICByYWlzZSB1bmxlc3Mga2luZHMuc2l6ZSA9PSBvcGVyYW5kcy5z
aXplCisgICAgcmVzdWx0ID0gW10KKyAgICBraW5kcy5zaXplLnRpbWVzIHsKKyAgICAgIHwgaWR4
IHwKKyAgICAgIHJlc3VsdCA8PCBvcGVyYW5kc1tpZHhdLng4Nk9wZXJhbmQoa2luZHNbaWR4XSkK
KyAgICB9CisgICAgcmVzdWx0LmpvaW4oIiwgIikKKyAgZW5kCisKKyAgZGVmIHg4NlN1ZmZpeChr
aW5kKQorICAgIGNhc2Uga2luZAorICAgIHdoZW4gOmJ5dGUKKyAgICAgICJiIgorICAgIHdoZW4g
OmhhbGYKKyAgICAgICJ3IgorICAgIHdoZW4gOmludAorICAgICAgImwiCisgICAgd2hlbiA6ZG91
YmxlCisgICAgICAic2QiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisg
IAorICBkZWYgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBudW1PcGVy
YW5kcykKKyAgICBpZiBudW1PcGVyYW5kcyA9PSAzCisgICAgICBpZiBvcGVyYW5kc1swXSA9PSBv
cGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAg
ZWxzaWYgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICIje29w
Y29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJtb3Yje3g4NlN1
ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sy
XS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQp
fSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5k
KX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wKG9wY29kZSwga2luZCkK
KyAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNp
emUpCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNoaWZ0KG9wY29kZSwga2luZCkKKyAgICBp
ZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0ZXJJ
RC5mb3JOYW1lKG5pbCwgInQyIikKKyAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDppbnQpfSwgJWVjeCIKKyAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICVjbCwgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgaGFuZGxlWDg2RG91YmxlQnJhbmNoKGJyYW5jaE9wY29kZSwgbW9kZSkKKyAgICBjYXNlIG1v
ZGUKKyAgICB3aGVuIDpub3JtYWwKKyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9IgorICAgIHdoZW4gOnJldmVyc2UKKyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlIG1vZGUuaW5zcGVjdAorICAgIGVuZAorICAg
ICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICBl
bmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlKG9wY29kZVN1ZmZpeCwga2luZCkKKyAg
ICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09
IDAgYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0g
ImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZT
dWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzaWYg
b3BlcmFuZHNbMV0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1sxXS52YWx1ZSA9PSAwIGFu
ZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBv
ciBvcGNvZGVTdWZmaXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAidGVzdCN7eDg2U3VmZml4
KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAg
ICRhc20ucHV0cyAiY21wI3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZChraW5kKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIGhhbmRsZVg4NkludEJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAg
aGFuZGxlWDg2SW50Q29tcGFyZShicmFuY2hPcGNvZGVbMS4uLTFdLCBraW5kKQorICAgICRhc20u
cHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICBlbmQKKyAg
CisgIGRlZiBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kKQorICAgIGlmIG9wZXJhbmQu
c3VwcG9ydHM4Qml0T25YODYKKyAgICAgICRhc20ucHV0cyAiI3tzZXRPcGNvZGV9ICN7b3BlcmFu
ZC54ODZPcGVyYW5kKDpieXRlKX0iCisgICAgICAkYXNtLnB1dHMgIm1vdnpibCAje29wZXJhbmQu
eDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxz
ZQorICAgICAgJGFzbS5wdXRzICJ4Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVl
YXgiCisgICAgICAkYXNtLnB1dHMgIiN7c2V0T3Bjb2RlfSAlYWwiCisgICAgICAkYXNtLnB1dHMg
Im1vdnpibCAlYWwsICVlYXgiCisgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZC54ODZP
cGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2
SW50Q29tcGFyZVNldChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShz
ZXRPcGNvZGVbMy4uLTFdLCBraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJh
bmRzWzJdKQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgdmFsdWUg
PSBvcGVyYW5kc1swXQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gMgorICAgICAg
bWFzayA9IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLTEpCisgICAgd2hlbiAzCisgICAgICBt
YXNrID0gb3BlcmFuZHNbMV0KKyAgICBlbHNlCisgICAgICByYWlzZSAiRXhwZWN0ZWQgMiBvciAz
IG9wZXJhbmRzLCBidXQgZ290ICN7b3BlcmFuZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5n
fSIKKyAgICBlbmQKKyAgICAKKyAgICBpZiBtYXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52
YWx1ZSA9PSAtMQorICAgICAgaWYgdmFsdWUuaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNt
LnB1dHMgInRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSwg
I3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRz
ICJjbXAje3g4NlN1ZmZpeChraW5kKX0gJDAsICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisg
ICAgICBlbmQKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChraW5k
KX0gI3ttYXNrLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9Igor
ICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZCcmFuY2hUZXN0KGJyYW5jaE9wY29k
ZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgJGFzbS5wdXRzICIje2JyYW5j
aE9wY29kZX0gI3tvcGVyYW5kcy5sYXN0LmFzbUxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFu
ZGxlWDg2U2V0VGVzdChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQor
ICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRzLmxhc3QpCisgIGVuZAorICAKKyAg
ZGVmIGhhbmRsZVg4Nk9wQnJhbmNoKG9wY29kZSwgYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhh
bmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEp
CisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0g
b3BlcmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQor
ICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0
cyAiI3ticmFuY2hPcGNvZGV9ICN7anVtcFRhcmdldC5hc21MYWJlbH0iCisgIGVuZAorICAKKyAg
ZGVmIGhhbmRsZVg4NlN1YkJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFu
ZHMuc2l6ZSA9PSA0IGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgJGFzbS5w
dXRzICJuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1
dHMgImFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54
ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVy
YW5kcygic3ViI3t4ODZTdWZmaXgoa2luZCl9Iiwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisg
ICAgZW5kCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiA0CisgICAgICBqdW1wVGFy
Z2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5k
c1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgICRh
c20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7anVtcFRhcmdldC5hc21MYWJlbH0iCisgIGVuZAor
ICAKKyAgZGVmIGxvd2VyWDg2CisgICAgJGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAg
ICBjYXNlIG9wY29kZQorICAgIHdoZW4gImFkZGkiLCAiYWRkcCIKKyAgICAgIGlmIG9wZXJhbmRz
LnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNl
IHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVz
cyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZh
bHVlID09IDAKKyAgICAgICAgICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAg
ICAgICAgICAgICRhc20ucHV0cyAibW92bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9
LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgIGVuZAorICAgICAg
ICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRzICJsZWFsICN7b3BlcmFuZHNbMF0udmFsdWV9KCN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQg
b3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFu
ZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0u
aXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgImxlYWwgKCN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29w
ZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICB1bmxlc3Mg
SW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgJGFzbS5wdXRz
ICJhZGRsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgICBlbmQKKyAgICAgIGVu
ZAorICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJhbmRsIiwgOmlu
dCkKKyAgICB3aGVuICJsc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNhbGwiLCA6aW50
KQorICAgIHdoZW4gIm11bGkiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJh
bmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAkYXNtLnB1dHMgImltdWxsICN7eDg2T3Bl
cmFuZHMoOmludCwgOmludCwgOmludCl9IgorICAgICAgZWxzZQorICAgICAgICAjIEZJWE1FOiBj
b3VsZCBkbyBzb21lIHBlZXBob2xlIGluIGNhc2UgdGhlIGxlZnQgb3BlcmFuZCBpcyBpbW1lZGlh
dGUgYW5kIGl0J3MKKyAgICAgICAgIyBhIHBvd2VyIG9mIHR3by4KKyAgICAgICAgaGFuZGxlWDg2
T3AoImltdWxsIiwgOmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gIm5lZ2kiCisgICAgICAkYXNt
LnB1dHMgIm5lZ2wgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAibm90aSIKKyAgICAg
ICRhc20ucHV0cyAibm90bCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJvcmkiLCAi
b3JwIgorICAgICAgaGFuZGxlWDg2T3AoIm9ybCIsIDppbnQpCisgICAgd2hlbiAicnNoaWZ0aSIK
KyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYXJsIiwgOmludCkKKyAgICB3aGVuICJ1cnNoaWZ0aSIK
KyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzaHJsIiwgOmludCkKKyAgICB3aGVuICJzdWJpIiwgInN1
YnAiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJh
bmRzWzJdCisgICAgICAgICRhc20ucHV0cyAibmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgICAkYXNtLnB1dHMgImFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAg
ICAgICAgaGFuZGxlWDg2T3AoInN1YmwiLCA6aW50KQorICAgICAgZW5kCisgICAgd2hlbiAieG9y
aSIsICJ4b3JwIgorICAgICAgaGFuZGxlWDg2T3AoInhvcmwiLCA6aW50KQorICAgIHdoZW4gImxv
YWRpIiwgInN0b3JlaSIsICJsb2FkcCIsICJzdG9yZXAiCisgICAgICAkYXNtLnB1dHMgIm1vdmwg
I3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNt
LnB1dHMgIm1vdnpibCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJsb2FkaCIKKyAgICAgICRhc20ucHV0
cyAibW92endsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAi
bW92YiAje3g4Nk9wZXJhbmRzKDpieXRlLCA6Ynl0ZSl9IgorICAgIHdoZW4gImxvYWRkIiwgIm1v
dmVkIiwgInN0b3JlZCIKKyAgICAgICRhc20ucHV0cyAibW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91
YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAiYWRkZCIKKyAgICAgICRhc20ucHV0cyAiYWRkc2Qg
I3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAiZGl2ZCIKKyAgICAg
ICRhc20ucHV0cyAiZGl2c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAg
d2hlbiAic3ViZCIKKyAgICAgICRhc20ucHV0cyAic3Vic2QgI3t4ODZPcGVyYW5kcyg6ZG91Ymxl
LCA6ZG91YmxlKX0iCisgICAgd2hlbiAibXVsZCIKKyAgICAgICRhc20ucHV0cyAibXVsc2QgI3t4
ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3FydGQiCisgICAgICAk
YXNtLnB1dHMgInNxcnRzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImNpMmQiCisgICAgICAk
YXNtLnB1dHMgImN2dHNpMnNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiYmRlcSIKKyAgICAgIGlz
VW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUoImJkZXEiKQorICAgICAgJGFzbS5wdXRzICJ1
Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgImpwICN7TGFiZWxSZWZlcmVu
Y2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS5hc21MYWJlbH0iCisgICAgICAkYXNtLnB1
dHMgImplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIG9wZXJhbmRzWzJdKS5hc21M
YWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICB3aGVuICJiZG5lcSIK
KyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiam5lIiwgOm5vcm1hbCkKKyAgICB3aGVuICJi
ZGd0IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpub3JtYWwpCisgICAgd2hl
biAiYmRndGVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYWUiLCA6bm9ybWFsKQor
ICAgIHdoZW4gImJkbHQiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphIiwgOnJldmVy
c2UpCisgICAgd2hlbiAiYmRsdGVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYWUi
LCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFu
Y2goImplIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZG5lcXVuIgorICAgICAgaXNVbm9yZGVyZWQg
PSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICBpc0VxdWFsID0gTG9jYWxMYWJl
bC51bmlxdWUoImJkbmVxdW4iKQorICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0iCisgICAgICAkYXNtLnB1dHMgImpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4s
IGlzVW5vcmRlcmVkKS5hc21MYWJlbH0iCisgICAgICAkYXNtLnB1dHMgImplICN7TGFiZWxSZWZl
cmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzRXF1YWwpLmFzbUxhYmVsfSIKKyAgICAgIGlzVW5vcmRl
cmVkLmxvd2VyKCJYODYiKQorICAgICAgJGFzbS5wdXRzICJqbXAgI3tvcGVyYW5kc1syXS5hc21M
YWJlbH0iCisgICAgICBpc0VxdWFsLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkZ3R1biIKKyAg
ICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGd0
ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamJlIiwgOnJldmVyc2UpCisgICAg
d2hlbiAiYmRsdHVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpub3JtYWwp
CisgICAgd2hlbiAiYmRsdGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIs
IDpub3JtYWwpCisgICAgd2hlbiAiYnRkMmkiCisgICAgICAkYXNtLnB1dHMgImN2dHRzZDJzaSAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJjbXBsICQweDgwMDAwMDAwICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgImplICN7b3BlcmFuZHNbMl0u
YXNtTGFiZWx9IgorICAgIHdoZW4gInRkMmkiCisgICAgICAkYXNtLnB1dHMgImN2dHRzZDJzaSAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgIHdoZW4gImJjZDJpIgorICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAidGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20u
cHV0cyAiamUgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAkYXNtLnB1dHMgImN2dHNp
MnNkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgJGFzbS5w
dXRzICJ1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03Igor
ICAgICAgJGFzbS5wdXRzICJqcCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICRhc20u
cHV0cyAiam5lICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gIm1vdmR6IgorICAg
ICAgJGFzbS5wdXRzICJ4b3JwZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gInBvcCIKKyAgICAg
ICRhc20ucHV0cyAicG9wICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hl
biAicHVzaCIKKyAgICAgICRhc20ucHV0cyAicHVzaCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgIHdoZW4gIm1vdmUiLCAic3hpMnAiLCAienhpMnAiCisgICAgICBpZiBJbW1l
ZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0gYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJl
Z2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJ4b3JsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNpZiBv
cGVyYW5kc1swXSAhPSBvcGVyYW5kc1sxXQorICAgICAgICAkYXNtLnB1dHMgIm1vdmwgI3t4ODZP
cGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgICBlbmQKKyAgICB3aGVuICJub3AiCisgICAgICAk
YXNtLnB1dHMgIm5vcCIKKyAgICB3aGVuICJiaWVxIiwgImJwZXEiCisgICAgICBoYW5kbGVYODZJ
bnRCcmFuY2goImplIiwgOmludCkKKyAgICB3aGVuICJiaW5lcSIsICJicG5lcSIKKyAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmludCkKKyAgICB3aGVuICJiaWEiLCAiYnBhIgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDppbnQpCisgICAgd2hlbiAiYmlhZXEiLCAiYnBh
ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphZSIsIDppbnQpCisgICAgd2hlbiAiYmli
IiwgImJwYiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6aW50KQorICAgIHdoZW4g
ImJpYmVxIiwgImJwYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6aW50KQor
ICAgIHdoZW4gImJpZ3QiLCAiYnBndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamciLCA6
aW50KQorICAgIHdoZW4gImJpZ3RlcSIsICJicGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImpnZSIsIDppbnQpCisgICAgd2hlbiAiYmlsdCIsICJicGx0IgorICAgICAgaGFuZGxlWDg2
SW50QnJhbmNoKCJqbCIsIDppbnQpCisgICAgd2hlbiAiYmlsdGVxIiwgImJwbHRlcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamxlIiwgOmludCkKKyAgICB3aGVuICJiYmVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDpieXRlKQorICAgIHdoZW4gImJibmVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmEiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImphIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhZXEiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImphZSIsIDpieXRlKQorICAgIHdoZW4gImJiYiIKKyAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiamIiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmJlcSIKKyAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJndCIKKyAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiamciLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0ZXEiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImpnZSIsIDpieXRlKQorICAgIHdoZW4gImJibHQiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImpsIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdGVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqbHRlcSIsIDpieXRlKQorICAgIHdoZW4gImJ0aW8iLCAiYnRw
byIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmludCkKKyAgICB3aGVuICJidGlz
IiwgImJ0cHMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDppbnQpCisgICAgd2hl
biAiYnRpeiIsICJidHB6IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6aW50KQor
ICAgIHdoZW4gImJ0aW56IiwgImJ0cG56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56
IiwgOmludCkKKyAgICB3aGVuICJidGJvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8i
LCA6Ynl0ZSkKKyAgICB3aGVuICJidGJzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMi
LCA6Ynl0ZSkKKyAgICB3aGVuICJidGJ6IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoi
LCA6Ynl0ZSkKKyAgICB3aGVuICJidGJueiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpu
eiIsIDpieXRlKQorICAgIHdoZW4gImptcCIKKyAgICAgICRhc20ucHV0cyAiam1wICN7b3BlcmFu
ZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJhZGRpbyIsICJiYWRkcG8i
CisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAi
YmFkZGlzIiwgImJhZGRwcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpzIiwg
OmludCkKKyAgICB3aGVuICJiYWRkaXoiLCAiYmFkZHB6IgorICAgICAgaGFuZGxlWDg2T3BCcmFu
Y2goImFkZGwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJhZGRpbnoiLCAiYmFkZHBueiIKKyAg
ICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYnN1
YmlvIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbyIsIDppbnQpCisgICAgd2hlbiAiYnN1
YmlzIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqcyIsIDppbnQpCisgICAgd2hlbiAiYnN1
Yml6IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqeiIsIDppbnQpCisgICAgd2hlbiAiYnN1
YmlueiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam56IiwgOmludCkKKyAgICB3aGVuICJi
bXVsaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAiam8iLCA6aW50KQorICAg
IHdoZW4gImJtdWxpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqcyIsIDpp
bnQpCisgICAgd2hlbiAiYm11bGl6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwg
Imp6IiwgOmludCkKKyAgICB3aGVuICJibXVsaW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2go
ImltdWxsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYm9yaW8iCisgICAgICBoYW5kbGVYODZP
cEJyYW5jaCgib3JsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJib3JpcyIKKyAgICAgIGhhbmRs
ZVg4Nk9wQnJhbmNoKCJvcmwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJvcml6IgorICAgICAg
aGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYm9yaW56Igor
ICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJy
ZWFrIgorICAgICAgJGFzbS5wdXRzICJpbnQgJDMiCisgICAgd2hlbiAiY2FsbCIKKyAgICAgICRh
c20ucHV0cyAiY2FsbCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3
aGVuICJyZXQiCisgICAgICAkYXNtLnB1dHMgInJldCIKKyAgICB3aGVuICJjaWVxIiwgImNwZXEi
CisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRlIiwgOmludCkKKyAgICB3aGVuICJj
aW5lcSIsICJjcG5lcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldG5lIiwgOmlu
dCkKKyAgICB3aGVuICJjaWEiLCAiY3BhIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgi
c2V0YSIsIDppbnQpCisgICAgd2hlbiAiY2lhZXEiLCAiY3BhZXEiCisgICAgICBoYW5kbGVYODZJ
bnRDb21wYXJlU2V0KCJzZXRhZSIsIDppbnQpCisgICAgd2hlbiAiY2liIiwgImNwYiIKKyAgICAg
IGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGIiLCA6aW50KQorICAgIHdoZW4gImNpYmVxIiwg
ImNwYmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YmUiLCA6aW50KQorICAg
IHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGci
LCA6aW50KQorICAgIHdoZW4gImNpZ3RlcSIsICJjcGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRD
b21wYXJlU2V0KCJzZXRnZSIsIDppbnQpCisgICAgd2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAg
aGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bCIsIDppbnQpCisgICAgd2hlbiAiY2lsdGVxIiwg
ImNwbHRlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGxlIiwgOmludCkKKyAg
ICB3aGVuICJ0aW8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmludCkKKyAgICB3
aGVuICJ0aXMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmludCkKKyAgICB3aGVu
ICJ0aXoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmludCkKKyAgICB3aGVuICJ0
aW56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6aW50KQorICAgIHdoZW4gInRi
byIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6Ynl0ZSkKKyAgICB3aGVuICJ0YnMi
CisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmJ5dGUpCisgICAgd2hlbiAidGJ6Igor
ICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDpieXRlKQorICAgIHdoZW4gInRibnoiCisg
ICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDpieXRlKQorICAgIHdoZW4gInBlZWsiCisg
ICAgICAkYXNtLnB1dHMgIm1vdmwgI3tvcGVyYW5kc1swXS52YWx1ZSAqIDR9KCVlc3ApLCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInBva2UiCisgICAgICAkYXNt
LnB1dHMgIm1vdmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sx
XS52YWx1ZSAqIDR9KCVlc3ApIgorICAgIHdoZW4gImNkcWkiCisgICAgICAkYXNtLnB1dHMgImNk
cSIKKyAgICB3aGVuICJpZGl2aSIKKyAgICAgICRhc20ucHV0cyAiaWRpdmwgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJmaWkyZCIKKyAgICAgICRhc20ucHV0cyAi
bW92ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJtb3ZkICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJwc2xscSAkMzIsICV4bW03
IgorICAgICAgJGFzbS5wdXRzICJwb3IgJXhtbTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0iCisgICAgd2hlbiAiZmQyaWkiCisgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICAgICRhc20ucHV0cyAibW92c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpk
b3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgInBzcmxxICQzMiwgJXhtbTciCisgICAg
ICAkYXNtLnB1dHMgIm1vdnNkICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgIHdoZW4gImJvIgorICAgICAgJGFzbS5wdXRzICJqbyAje29wZXJhbmRzWzBdLmFzbUxh
YmVsfSIKKyAgICB3aGVuICJicyIKKyAgICAgICRhc20ucHV0cyAianMgI3tvcGVyYW5kc1swXS5h
c21MYWJlbH0iCisgICAgd2hlbiAiYnoiCisgICAgICAkYXNtLnB1dHMgImp6ICN7b3BlcmFuZHNb
MF0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJueiIKKyAgICAgICRhc20ucHV0cyAiam56ICN7b3Bl
cmFuZHNbMF0uYXNtTGFiZWx9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQgb3Bjb2RlOiAj
e29wY29kZX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRp
b25LaW5kLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kX2gKKyNkZWZpbmUgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisKK25hbWVzcGFjZSBKU0Mg
eworCitlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNv
bnN0cnVjdCB9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENvZGVTcGVjaWFs
aXphdGlvbktpbmRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAkocmV2aXNpb24gMTA2MjAzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYg
KzI3LDcgQEAKICNkZWZpbmUgQ29tbW9uU2xvd1BhdGhzX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogCkBAIC00MSw2ICs0MiwzOCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIENvbW1vblNsb3dQYXRocyB7CiAKK0FMV0FZ
U19JTkxJTkUgRXhlY1N0YXRlKiBhcml0eUNoZWNrRm9yKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0
ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAg
ICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBB
U1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7CisgICAgQ29kZUJsb2NrKiBuZXdDb2Rl
QmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2lu
ZCk7CisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gZXhlYy0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKTsKKworICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2Ug
Zm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0
aGUgY2FsbGVyLgorICAgIGlmICghcmVnaXN0ZXJGaWxlLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygp
ICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBU1NFUlQoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CisKKyAg
ICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywg
dGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgorICAgIHNpemVf
dCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXM7CisgICAgUmVnaXN0ZXIqIHNyYyA9IGV4ZWMtPnJlZ2lzdGVycygpOworICAg
IFJlZ2lzdGVyKiBkc3QgPSBleGVjLT5yZWdpc3RlcnMoKSArIGRlbHRhOworCisgICAgaW50IGk7
CisgICAgaW50IGVuZCA9IC1FeGVjU3RhdGU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyk7CisgICAgZm9yIChpID0gLTE7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtp
XSA9IHNyY1tpXTsKKworICAgIGVuZCAtPSBkZWx0YTsKKyAgICBmb3IgKCA7IGkgPj0gZW5kOyAt
LWkpCisgICAgICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7CisKKyAgICBFeGVjU3RhdGUqIG5l
d0V4ZWMgPSBFeGVjU3RhdGU6OmNyZWF0ZShkc3QpOworICAgIEFTU0VSVCgodm9pZCopbmV3RXhl
YyA8PSByZWdpc3RlckZpbGUtPmVuZCgpKTsKKyAgICByZXR1cm4gbmV3RXhlYzsKK30KKwogQUxX
QVlTX0lOTElORSBib29sIG9wSW5zdGFuY2VPZlNsb3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHZhbHVlLCBKU1ZhbHVlIGJhc2VWYWwsIEpTVmFsdWUgcHJvdG8pCiB7CiAgICAgQVNTRVJUKCF2
YWx1ZS5pc0NlbGwoKSB8fCAhYmFzZVZhbC5pc0NlbGwoKSB8fCAhcHJvdG8uaXNDZWxsKCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZp
c2lvbiAxMDYyMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2Rl
R2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVy
LmgiCisjaW5jbHVkZSAiRXhlY3V0aW9uSGFybmVzcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2lu
Y2x1ZGUgIkpJVERyaXZlci5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgpAQCAtODQsNyArODUsNyBA
QCBJbnRyaW5zaWMgTmF0aXZlRXhlY3V0YWJsZTo6aW50cmluc2ljKCkgCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogc3RhdGljIHZvaWQgamV0dGlzb25Db2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBPd25QdHI8VD4mIGNvZGVCbG9jaykKIHsKLSAgICBBU1NFUlQoY29kZUJsb2NrLT5n
ZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2Rl
Ojppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQo
Y29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKICAgICBPd25QdHI8VD4gY29kZUJsb2NrVG9KZXR0
aXNvbiA9IGNvZGVCbG9jay5yZWxlYXNlKCk7CiAgICAgY29kZUJsb2NrID0gc3RhdGljX3BvaW50
ZXJfY2FzdDxUPihjb2RlQmxvY2tUb0pldHRpc29uLT5yZWxlYXNlQWx0ZXJuYXRpdmUoKSk7CkBA
IC0xNjcsOSArMTY4LDMwIEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGlt
aXoKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OmppdENvbXBp
bGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29t
cGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVG
b3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQpOworfQorCitpbmxpbmUgY29uc3QgY2hhciogc2FtcGxpbmdEZXNjcmlwdGlv
bihKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisgICAgc3dpdGNoIChqaXRUeXBlKSB7Cisg
ICAgY2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rOgorICAgICAgICByZXR1cm4gIkludGVy
cHJldGVyIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6QmFzZWxpbmVK
SVQ6CisgICAgICAgIHJldHVybiAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAg
Y2FzZSBKSVRDb2RlOjpERkdKSVQ6CisgICAgICAgIHJldHVybiAiREZHIENvbXBpbGF0aW9uIChU
T1RBTCkiOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29t
cGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5O
b2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBD
b21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNh
bXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkp
OwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAg
LTIxMCw3ICsyMzIsNyBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5h
CiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJp
YXRlKCpnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5
cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xvYmFsRGF0YSwgbV9ldmFsQ29k
ZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAj
ZW5kaWYKIApAQCAtMjk1LDkgKzMxNywxNSBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6
OmNvbXBpbGVPcHRpCiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIFByb2dyYW1FeGVjdXRh
YmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJl
c3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVC
bG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwogSlNPYmplY3QqIFByb2dyYW1FeGVj
dXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSog
c2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGlu
Z1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8g
IkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwp
Iik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlv
bihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGpp
dFR5cGUpOwpAQCAtMzM2LDcgKzM2NCw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6
Y29tcGlsZUludGUKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGls
ZUlmQXBwcm9wcmlhdGUoKmdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2Rl
Rm9yQ2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKCpnbG9iYWxE
YXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAg
ICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC00MTIsNyArNDQwLDcgQEAgRnVuY3Rpb25Db2Rl
QmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6YgogICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0
aXZlKCkpCiAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4o
cmVzdWx0LT5hbHRlcm5hdGl2ZSgpKTsKICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICBBU1NFUlQo
cmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VS
VChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKQEAgLTQzOCw2ICs0NjYsMTggQEAgSlNPYmplY3QqIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y29tcGlsZU9wdAogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBGdW5j
dGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDYWxsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUo
Z2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENv
ZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRp
ZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQg
RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBw
cm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZv
ckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9s
VGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCk7Cit9CisKIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6
OmNvZGVCbG9ja1dpdGhCeXRlY29kZUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7
CiAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9y
KGtpbmQpOwpAQCAtNDgyLDcgKzUyMiw3IEBAIFBhc3NPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+
IEZ1bmN0aW9uRXgKIAogSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNh
bGxJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9k
ZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29t
cGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1w
bGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsK
ICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC01MDQs
NyArNTQ0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAg
IG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNhbGwtPnNoYXJlZFN5bWJvbFRhYmxlKCk7
CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3By
aWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9y
Q2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRU
eXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9y
Q2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9yQ2FsbCkp
CiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTUyNCw3ICs1NjQsNyBAQCBKU09iamVj
dCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNj
b3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQog
ewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBp
bGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1w
bGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBV
TlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC01NDYsNyArNTg2LDcgQEAgSlNPYmplY3QqIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9j
a0ZvckNvbnN0cnVjdC0+c2hhcmVkU3ltYm9sVGFibGUoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0g
ICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRD
b2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUpKQor
ICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwg
bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2Rl
Rm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENvZGVG
b3JDb25zdHJ1Y3QpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxMDYyMDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRXhlY3V0YWJsZV9oCiAKICNpbmNsdWRlICJD
YWxsRGF0YS5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJOb2Rl
cy5oIgpAQCAtMzksMTIgKzQwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIERlYnVn
Z2VyOwogICAgIGNsYXNzIEV2YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgRnVuY3Rpb25Db2RlQmxv
Y2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1D
b2RlQmxvY2s7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKICAgICBzdHJ1Y3QgRXhjZXB0
aW9uSW5mbzsKICAgICAKLSAgICBlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9y
Q2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogICAgIGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmly
c3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CiAKICAgICBpbmxpbmUgYm9v
bCBpc0NhbGwoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMzE5LDYgKzMyMCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1
YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJs
ZSBCYXNlOwogCkBAIC0zMzgsNiArMzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAog
I2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xv
YmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJik7CiAjZW5k
aWYKIAogICAgICAgICBFdmFsQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC0zODQs
NiArMzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIFByb2dyYW1F
eGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBT
Y3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTQxMSw2ICs0MTUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGlt
aXplZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShKU0dsb2Jh
bERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIFByb2dyYW1Db2RlQmxvY2smIGdlbmVyYXRlZEJ5
dGVjb2RlKCkKQEAgLTQ1Myw2ICs0NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNl
OwogCkBAIC01MDgsNiArNTE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVO
QUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ2FsbChKU0ds
b2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEm
KTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDYWxsKCkgY29uc3QKQEAg
LTUzNSw2ICs1NDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoSlNHbG9i
YWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERh
dGEmKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3QoKSBj
b25zdApAQCAtNTgyLDYgKzU5MCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAg
ICBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvcihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAg
ICAgICAgICBqaXRDb21waWxlRm9yQ2FsbChnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9y
Q29uc3RydWN0KTsKKyAgICAgICAgICAgIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0
YSk7CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRl
ZEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgRXhlY3V0aW9uSGFybmVzc19oCisjZGVmaW5lIEV4ZWN1dGlv
bkhhcm5lc3NfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoSklU
KQorCisjaW5jbHVkZSAiSklURHJpdmVyLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4K
K2lubGluZSBib29sIHByZXBhcmVGb3JFeGVjdXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklU
Q29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklU
Q29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGlu
IHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRFbnRyeXBvaW50
KGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CisgICAgICAgIGNvZGVCbG9j
ay0+c2V0SklUQ29kZShqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJu
IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIGNvZGVCbG9jaywgaml0Q29kZSwg
aml0VHlwZSk7Cit9CisKK2lubGluZSBib29sIHByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVC
bG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0
aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJ
VFR5cGUgaml0VHlwZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworI2lmIEVOQUJM
RShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAg
ICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAg
IExMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwga2luZCwgaml0Q29kZSwg
aml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGpp
dENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGtpbmQpOworI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRh
LCBjb2RlQmxvY2ssIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjaywgc3ltYm9sVGFibGUs
IGppdFR5cGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShK
SVQpCisKKyNlbmRpZiAvLyBFeGVjdXRpb25IYXJuZXNzX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDEwNjIwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgT3duQXJy
YXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSA9IGFkb3B0QXJyYXlQ
dHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPltyZWdpc3RlckFycmF5U2l6ZV0pOwogICAgICAg
ICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVycyA9IHJlZ2lzdGVyQXJyYXkuZ2V0KCkg
KyByZWdpc3Rlck9mZnNldDsKLQorICAgICAgICAKICAgICAgICAgLy8gQ29weSBhbGwgYXJndW1l
bnRzIHRoYXQgY2FuIGJlIGNhcHR1cmVkIGJ5IG5hbWUgb3IgYnkgdGhlIGFyZ3VtZW50cyBvYmpl
Y3QuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9udW1DYXB0dXJlZEFyZ3M7ICsraSkg
ewogICAgICAgICAgICAgaW50IGluZGV4ID0gQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEw
NjIwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBK
U0FycmF5OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHN0cnVjdCBT
cGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmllcjxVbmtub3duPiB7CiAgICAgICAg
IHR5cGVkZWYgV3JpdGVCYXJyaWVyPFVua25vd24+IEJhc2U7CkBAIC0xMjIsNiArMTIzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTA2MjAzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDkgKzM2LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTR2xvYmFs
T2JqZWN0OwotICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5
TmFtZUFycmF5OworICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGVudW0gRW51bWVyYXRpb25N
b2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywKQEAgLTE2NCw2ICsxNjUs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyog
bV9jbGFzc0luZm87CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJl
OwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oCShyZXZpc2lvbiAxMDYyMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgSlNBY3RpdmF0aW9u
OwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7
CiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0xNDAsNiArMTQxLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1
bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1l
bnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2
aXNpb24gMTA2MjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw4IEBAIEpTR2xvYmFsRGF0YTo6
SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICAsIGtleXdvcmRzKGFkb3B0UHRyKG5ldyBL
ZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRlcnByZXRlcigwKQogICAgICwgaGVhcCh0aGlzLCBo
ZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFzc0luZm8oJkpTQXJyYXk6OnNfaW5mbykKKyAgICAs
IGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKICNpZiBFTkFC
TEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxhc3RTY3JhdGNoQnVmZmVyKDApCiAjZW5kaWYKQEAg
LTIxNiw3ICsyMTgsNyBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlw
CiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1bmtzKHRoaXMpKTsKICNlbmRpZgog
Ci0gICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUodGhpcy0+Y2FuVXNlSklUKCkpOworICAgIGlu
dGVycHJldGVyLT5pbml0aWFsaXplKCZsbGludERhdGEsIHRoaXMtPmNhblVzZUpJVCgpKTsKIAog
ICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xsZWN0KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gMTA2MjAzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDE1ICszMCwxNiBAQAogI2RlZmluZSBKU0dsb2JhbERhdGFfaAogCiAjaW5jbHVk
ZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkludHJpbnNpYy5o
IgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFs
bG9jYXRvci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJTdHJvbmcuaCIKKyNpbmNs
dWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTVmFs
dWUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5o
IgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1
ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJUaW1lb3V0Q2hlY2tlci5oIgogI2luY2x1ZGUg
IldlYWtSYW5kb20uaCIKQEAgLTY1LDYgKzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgS2V5d29y
ZHM7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4
ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmE7CiAgICAgY2xhc3MgUmVnRXhwQ2FjaGU7
CkBAIC0yNDEsNiArMjQzLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBIZWFwIGhlYXA7
CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247CisKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZv
KiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOworICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0
IGpzRmluYWxPYmplY3RDbGFzc0luZm87CisKKyAgICAgICAgTExJbnQ6OkRhdGEgbGxpbnREYXRh
OworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciBleGNlcHRpb25M
b2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBob3N0Q2FsbFJldHVyblZhbHVlOwpAQCAtMzQ2LDYg
KzM1NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogI3VuZGVmIHJlZ2lzdGVyVHlwZWRBcnJheUZ1bmN0
aW9uCiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBU
aHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSom
IHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVu
aygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCShyZXZpc2lvbiAxMDYyMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEdldHRl
clNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CiAgICAgY2xh
c3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKQEAgLTMz
NSw2ICszMzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyosIGludCBjb3VudCk7CiAK
ICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVzZXQgaW50byBpbml0LgogICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CiAg
ICAgICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMDYyMDMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2
ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBj
bGFzcyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgY2xhc3Mg
UHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwpAQCAtMjY5
LDYgKzI3MCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU09iamVjdChKU0dsb2JhbERh
dGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7CiAKICAgICBw
cml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAg
ICAgICAKICAgICAgICAgLy8gTm9ib2R5IHNob3VsZCBldmVyIGFzayBhbnkgb2YgdGhlc2UgcXVl
c3Rpb25zIG9uIHNvbWV0aGluZyBhbHJlYWR5IGtub3duIHRvIGJlIGEgSlNPYmplY3QuCiAgICAg
ICAgIHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXI7CiAgICAgICAgIHVzaW5nIEpTQ2Vs
bDo6aXNHZXR0ZXJTZXR0ZXI7CkBAIC0zODEsNiArMzg0LDggQEAgQ09NUElMRV9BU1NFUlQoKEpT
RmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2Vs
bCopOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0IEpTRmluYWxPYmplY3QoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgICAgIDog
SlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAg
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwNjIwMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElkZW50aWZpZXI7
CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
CiAgICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciA6IHB1YmxpYyBKU0NlbGwgewogICAg
ICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtOTYsNiArOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3Io
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEs
IHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTA2MjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1N0cmluZzsKKyAgICBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEq
KTsKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsKQEAgLTI0MCw2ICsy
NDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZv
aWQgcmVzb2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNv
bHZlUm9wZVNsb3dDYXNlKFVDaGFyKikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAxMDYyMDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCA9IDE7IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIHRvIG1ha2UgZG9j
dW1lbnQuYWxsIHVuZGV0ZWN0YWJsZS4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW1wbGVt
ZW50c0hhc0luc3RhbmNlID0gMSA8PCAxOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVy
cmlkZXNIYXNJbnN0YW5jZSA9IDEgPDwgMjsKQEAgLTg3LDYgKzg5LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGlzU2V0T25GbGFnczEo
dW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA8PSAoMSA8PCA3KSk7IHJldHVybiBt
X2ZsYWdzICYgZmxhZzsgfQogICAgICAgICBib29sIGlzU2V0T25GbGFnczIodW5zaWduZWQgZmxh
ZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8PCA4KSk7IHJldHVybiBtX2ZsYWdzMiAmIChm
bGFnID4+IDgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFs
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFs
dWUuY3BwCShyZXZpc2lvbiAxMDYyMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDEwICsxMTYsOSBAQCBKU09iamVj
dCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiAgICAgcmV0dXJuIEpTTm90QW5PYmpl
Y3Q6OmNyZWF0ZShleGVjKTsKIH0KIAotI2lmbmRlZiBOREVCVUcKIGNoYXIqIEpTVmFsdWU6OmRl
c2NyaXB0aW9uKCkKIHsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSA2NDsKKyAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSAxMjg7CiAgICAgc3RhdGljIGNoYXIgZGVzY3JpcHRp
b25bc2l6ZV07CiAKICAgICBpZiAoISp0aGlzKQpAQCAtMTI4LDE0ICsxMjcsMTQgQEAgY2hhciog
SlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6
ZSwgIkludDMyOiAlZCIsIGFzSW50MzIoKSk7CiAgICAgZWxzZSBpZiAoaXNEb3VibGUoKSkgewog
I2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAi
RG91YmxlOiAlbGYsICVseCIsIGFzRG91YmxlKCksIHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIo
YXNEb3VibGUoKSkpOworICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJs
ZTogJWx4LCAlbGYiLCByZWludGVycHJldERvdWJsZVRvSW50cHRyKGFzRG91YmxlKCkpLCBhc0Rv
dWJsZSgpKTsKICNlbHNlCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIGRvdWJsZSBhc0Rv
dWJsZTsKICAgICAgICAgICAgIHVpbnQzMl90IGFzVHdvSW50MzJzWzJdOwogICAgICAgICB9IHU7
CiAgICAgICAgIHUuYXNEb3VibGUgPSBhc0RvdWJsZSgpOwotICAgICAgICBzbnByaW50ZihkZXNj
cmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlMDh4OiUwOHgiLCBhc0RvdWJsZSgpLCB1LmFz
VHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdKTsKKyAgICAgICAgc25wcmludGYoZGVzY3Jp
cHRpb24sIHNpemUsICJEb3VibGU6ICUwOHg6JTA4eCwgJWxmIiwgdS5hc1R3b0ludDMyc1sxXSwg
dS5hc1R3b0ludDMyc1swXSwgYXNEb3VibGUoKSk7CiAjZW5kaWYKICAgICB9IGVsc2UgaWYgKGlz
Q2VsbCgpKQogICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkNlbGw6ICVwIiwg
YXNDZWxsKCkpOwpAQCAtMTUyLDcgKzE1MSw2IEBAIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9u
KCkKIAogICAgIHJldHVybiBkZXNjcmlwdGlvbjsKIH0KLSNlbmRpZgogCiAvLyBUaGlzIGluIHRo
ZSBUb0ludDMyIG9wZXJhdGlvbiBpcyBkZWZpbmVkIGluIHNlY3Rpb24gOS41IG9mIHRoZSBFQ01B
LTI2MiBzcGVjLgogLy8gTm90ZSB0aGF0IHRoaXMgb3BlcmF0aW9uIGlzIGlkZW50aWNhbCB0byBU
b1VJbnQzMiBvdGhlciB0aGFuIHRvIGludGVycHJldGF0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAxMDYyMDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw5ICsy
MzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNDZWxsKiBhc0NlbGwoKSBjb25zdDsK
ICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7CiAKLSNpZm5k
ZWYgTkRFQlVHCiAgICAgICAgIGNoYXIqIGRlc2NyaXB0aW9uKCk7Ci0jZW5kaWYKIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIHRlbXBsYXRlIDxjbGFzcyBUPiBKU1ZhbHVlKFdyaXRlQmFycmllckJh
c2U8VD4pOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFy
aWFibGVPYmplY3QuaAkocmV2aXNpb24gMTA2MjAzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgs
MTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAKICAgICBjbGFzcyBKU1ZhcmlhYmxlT2JqZWN0IDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgcHVibGljOgog
ICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAxMDYyMDMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTIsNiArNTIsMTAgQEAgdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saQog
CiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsKIAoraW50MzJfdCBleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yRG9udEpJVEFueXRpbWVTb29uOworaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JK
SVRTb29uOworCiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJX
YXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25n
V2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0
aW1lU29vbjsKQEAgLTEzNyw2ICsxNDEsMTAgQEAgdm9pZCBpbml0aWFsaXplT3B0aW9ucygpCiAg
ICAgCiAgICAgU0VUKG1heGltdW1JbmxpbmluZ0RlcHRoLCA1KTsKIAorICAgIFNFVChleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcCwgICAgIC0xMDApOworICAgIFNFVChleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1p
dHM8aW50MzJfdD46Om1pbigpKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklU
U29vbiwgICAgICAgICAgICAtMTAwKTsKKwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVG
b3JPcHRpbWl6ZUFmdGVyV2FybVVwLCAgICAgLTEwMDApOwogICAgIFNFVChleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCwgLTUwMDApOwogICAgIFNFVChleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiwgc3RkOjpudW1lcmlj
X2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOwpAQCAtMTg1LDYgKzE5Myw4IEBAIHZvaWQgaW5pdGlh
bGl6ZU9wdGlvbnMoKQogICAgIGlmIChjcHVzVG9Vc2UgPCAxKQogICAgICAgICBjcHVzVG9Vc2Ug
PSAxOwogICAgIAorICAgIGNwdXNUb1VzZSA9IDE7CisgICAgCiAgICAgU0VUKG51bWJlck9mR0NN
YXJrZXJzLCBjcHVzVG9Vc2UpOwogCiAgICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJMb25nV2FybVVwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgJKHJldmlzaW9uIDEwNjIwMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTAgQEAgZXh0ZXJuIHVu
c2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cgogCiBleHRlcm4gdW5zaWduZWQgbWF4aW11
bUlubGluaW5nRGVwdGg7IC8vIERlcHRoIG9mIGlubGluZSBzdGFjaywgc28gMSA9IG5vIGlubGlu
aW5nLCAyID0gb25lIGxldmVsLCBldGMuCiAKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9ySklUU29vbjsKKwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogZXh0ZXJuIGludDMyX3QgZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiAxMDYyMDMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxE
YXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OworICAg
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTY29wZUNoYWluSXRlcmF0
b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCkBAIC05MSw2ICs5Miw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8g
c19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1
Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAgICAgfTsKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxMDYy
MDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMjIsNyArMzIyLDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFBy
b3BlcnR5VHJhbnNpdAogICAgICAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd1Byb3BlcnR5U3RvcmFn
ZUNhcGFjaXR5KCk7CiAgICAgICAgIHJldHVybiB0cmFuc2l0aW9uOwogICAgIH0KLQorICAgIAog
ICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNyZWF0ZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUp
OwogCiAgICAgdHJhbnNpdGlvbi0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5zZXRNYXlCZU51bGwo
Z2xvYmFsRGF0YSwgdHJhbnNpdGlvbiwgc3RydWN0dXJlLT5tX2NhY2hlZFByb3RvdHlwZUNoYWlu
LmdldCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5o
CShyZXZpc2lvbiAxMDYyMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0
eU5hbWVBcnJheTsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7CiAgICAgY2xhc3Mg
U3RydWN0dXJlQ2hhaW47CkBAIC0xOTYsNiArMTk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBw
cml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAg
ICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYs
IEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29u
c3QgQ2xhc3NJbmZvKik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmKTsKICAgICAg
ICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVyZSopOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lv
biAxMDYyMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFp
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFN0cnVjdHVyZTsK
IAogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluIDogcHVibGljIEpTQ2VsbCB7CkBAIC03NCw2ICs3
NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAg
U3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmll
cjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9v
bHMvQ29kZVByb2ZpbGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3Rvb2xzL0NvZGVQcm9maWxpbmcuY3BwCShyZXZpc2lvbiAxMDYyMDMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvdG9vbHMvQ29kZVByb2ZpbGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2
LDYgKzM2LDExIEBAIHZvbGF0aWxlIENvZGVQcm9maWxlKiBDb2RlUHJvZmlsaW5nOjpzX3AKIENv
ZGVQcm9maWxpbmc6Ok1vZGUgQ29kZVByb2ZpbGluZzo6c19tb2RlID0gQ29kZVByb2ZpbGluZzo6
RGlzYWJsZWQ7CiBXVEY6Ok1ldGFBbGxvY2F0b3JUcmFja2VyKiBDb2RlUHJvZmlsaW5nOjpzX3Ry
YWNrZXIgPSAwOwogCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0
aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWlzc2luZy1ub3Jl
dHVybiIKKyNlbmRpZgorCiAvLyBIZWxwZXIgZnVuY3Rpb24gdG8gc3RhcnQgJiBzdG9wIHRoZSB0
aW1lci4KIC8vIFByZXNlbnRseSB3ZSdyZSB1c2luZyB0aGUgd2FsbC1jbG9jayB0aW1lciwgc2lu
Y2UgdGhpcyBzZWVtcyB0byBnaXZlIHRoZSBiZXN0IHJlc3VsdHMuCiBzdGF0aWMgdm9pZCBzZXRQ
cm9maWxlVGltZXIodW5zaWduZWQgdXNlYykKQEAgLTU0LDYgKzU5LDEwIEBAIHN0YXRpYyB2b2lk
IHNldFByb2ZpbGVUaW1lcih1bnNpZ25lZCB1c2UKICNlbmRpZgogfQogCisjaWYgQ09NUElMRVIo
Q0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKwogI2lmIFBMQVRG
T1JNKE1BQykgJiYgQ1BVKFg4Nl82NCkKIHN0YXRpYyB2b2lkIHByb2ZpbGluZ1RpbWVyKGludCwg
c2lnaW5mb190Kiwgdm9pZCogdWFwKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9JbmxpbmVBU00uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0lu
bGluZUFTTS5oCShyZXZpc2lvbiAxMDYyMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0lubGluZUFTTS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw0ICs3MCwxMSBAQAogI2RlZmluZSBI
SURFX1NZTUJPTChuYW1lKQogI2VuZGlmCiAKKy8vIEZJWE1FOiBmaWd1cmUgb3V0IGhvdyB0aGlz
IHdvcmtzIG9uIGFsbCB0aGUgcGxhdGZvcm1zLiBJIGtub3cgdGhhdAorLy8gb24gTGludXgsIHRo
ZSBwcmVmZXJyZWQgZm9ybSBpcyAiLkxzdHVmZiIgYXMgb3Bwb3NlZCB0byAiTHN0dWZmIi4KKy8v
IERvbid0IGtub3cgYWJvdXQgYW55IG9mIHRoZSBvdGhlcnMuCisjaWYgUExBVEZPUk0oTUFDKQor
I2RlZmluZSBMT0NBTF9MQUJFTF9TVFJJTkcobmFtZSkgIkwiICNuYW1lCisjZW5kaWYKKwogI2Vu
ZGlmIC8vIElubGluZUFTTV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5o
CShyZXZpc2lvbiAxMDYyMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgJKHdvcmtpbmcgY29weSkKQEAgLTkyMCw2ICs5MjAsMTggQEAKICNkZWZpbmUgRU5BQkxFX0pJ
VCAxCiAjZW5kaWYKIAorLyogT24gc29tZSBvZiB0aGUgcGxhdGZvcm1zIHdoZXJlIHdlIGhhdmUg
YSBKSVQsIHdlIHdhbnQgdG8gYWxzbyBoYXZlIHRoZSAKKyAgIGxvdy1sZXZlbCBpbnRlcnByZXRl
ci4gKi8KKyNpZiAhZGVmaW5lZChFTkFCTEVfTExJTlQpICYmIEVOQUJMRShKSVQpICYmIFBMQVRG
T1JNKE1BQykgJiYgVVNFKEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyNl
bmRpZgorCisvKiBJZiB3ZSBoYXZlIExMSW50IGVuYWJsZWQgYW5kIHRoZSBKSVQgZW5hYmxlZCwg
d2UgYWxzbyBlbmFibGUgT1NSaW5nIGZyb20KKyAgIExMSW50IHRvIHRoZSBKSVQuICovCisjaWYg
IWRlZmluZWQoRU5BQkxFX0xMSU5UX09TUl9UT19KSVQpICYmIEVOQUJMRShKSVQpICYmIEVOQUJM
RShMTElOVCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UX09TUl9UT19KSVQgMQorI2VuZGlmCisKICNp
ZiAhZGVmaW5lZChFTkFCTEVfREZHX0pJVCkgJiYgRU5BQkxFKEpJVCkKIC8qIEVuYWJsZSB0aGUg
REZHIEpJVCBvbiBYODYgYW5kIFg4Nl82NC4gIE9ubHkgdGVzdGVkIG9uIE1hYyBhbmQgR05VL0xp
bnV4LiAqLwogI2lmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSkgJiYgKFBMQVRGT1JNKE1BQykg
fHwgT1MoTElOVVgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExp
bmtlZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRp
bmVsTGlua2VkTGlzdC5oCShyZXZpc2lvbiAxMDYyMDMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4
IEBAIHB1YmxpYzoKIAogICAgIGl0ZXJhdG9yIGJlZ2luKCk7CiAgICAgaXRlcmF0b3IgZW5kKCk7
CisgICAgCisgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gYmVnaW4oKSA9PSBlbmQoKTsgfQog
CiBwcml2YXRlOgogICAgIFJhd05vZGUgbV9oZWFkU2VudGluZWw7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDEwNjIwMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDYgKzQzLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlN0cmluZyAqIENG
U3RyaQogLy8gTGFuZGluZyB0aGUgZmlsZSBtb3ZlcyBpbiBvbmUgcGF0Y2gsIHdpbGwgZm9sbG93
IG9uIHdpdGggcGF0Y2hlcyB0byBjaGFuZ2UgdGhlIG5hbWVzcGFjZXMuCiBuYW1lc3BhY2UgSlND
IHsKIHN0cnVjdCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5zbGF0b3I7CitjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElkZW50aWZpZXJDaGFy
QnVmZmVyVHJhbnNsYXRvcjsKIHN0cnVjdCBJZGVudGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xh
dG9yOwogfQpAQCAtNzIsNyArNzMsOCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICBmcmllbmQg
c3RydWN0IFdURjo6U3Vic3RyaW5nVHJhbnNsYXRvcjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6
VUNoYXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmdJbXBs
OwotCisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAog
cHJpdmF0ZToKICAgICBlbnVtIEJ1ZmZlck93bmVyc2hpcCB7CiAgICAgICAgIEJ1ZmZlckludGVy
bmFsLApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MjAzKQorKysgU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDEtMjYgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mgc2hvdWxkIGJlIGEg
dHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3OTY5ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1
aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4K
KyAgICAgICAgCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIG5vIGJlaGF2aW9yIGNoYW5n
ZWQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxMi0wMS0yOSAgTm9lbCBHb3Jk
b24gIDxub2VsLmdvcmRvbkBnbWFpbC5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBVc2UgZGVj
b2Rpbmcgc3dpenpsZSBvbmx5IG9uIGxpYmpwZWctdHVyYm8gMS4xLjkwKwpJbmRleDogU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNjIwMykKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCw3IEBAIFNFVChXZWJDb3JlX0lOQ0xV
REVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgogICAg
ICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9qaXQiCisgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludCIKICAgICAiJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L3BhcnNlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3By
b2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZSIKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMDYyMDMpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAxLTI2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgSlNDIHNob3VsZCBiZSBhIHRyaXBsZS10aWVyIFZNCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgxMgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMTAwNzk2OTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCBFRkwncyBidWlsZCBzeXN0ZW0gdG8gaW5jbHVk
ZSBhIG5ldyBkaXJlY3RvcnkgaW4gSmF2YVNjcmlwdENvcmUuCisgICAgICAgIAorICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAxLTExICBKYWNreSBKaWFuZyAgPHpoYWppYW5nQHJp
bS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIEFTU0VSVCBmYWlsdXJlIGluIEJhY2tpbmdT
dG9yZVByaXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMoKQpJbmRleDogU291cmNlL1dlYktpdC9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
CShyZXZpc2lvbiAxMDYyMDMpCisrKyBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIFNFVChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVNDUklQ
VENPUkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIK
KyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MjAzKQorKysgVG9vbHMv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMjcgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mgc2hvdWxkIGJlIGEg
dHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3OTY5ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1
aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4K
KworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dDoKKwogMjAxMi0w
MS0yOSAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAg
ICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEwNjEwOS4KSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9lZmwvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNjIwMykKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjgsMTAgKzY4
LDEyIEBAIFNFVChEdW1wUmVuZGVyVHJlZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0FQSQogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9hc3NlbWJsZXIKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0
ZWNvZGUKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGZnCiAgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2hlYXAKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0CisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50
CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vd3RmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124496</attachid>
            <date>2012-01-29 22:00:04 -0800</date>
            <delta_ts>2012-01-30 15:12:29 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_72.diff</filename>
            <type>text/plain</type>
            <size>464592</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MjEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwMCBA
QAorMjAxMi0wMS0yOSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi52c3Byb3BzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDog
QWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Omlz
U2V0KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAg
IChDYWxsTGlua1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmVzY2FwZVF1b3Rlcyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWlu
Z0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RXZh
bENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6
amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1w
bCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dXNlc09wY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAg
KCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0Q29tcGls
ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
aWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxp
a2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlr
ZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1
ZW50RXhpdFNpdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29v
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50
RXhlY3V0ZUNvdW50ZXIpOgorICAgICAgICAoUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChF
dmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBi
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6
CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OkdldEJ5SWRTdGF0dXMpOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjp3YXNTZWVuSW5KSVQpOgorICAgICAgICAoR2V0QnlJZFN0YXR1
cyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgIChJbnN0cnVj
dGlvbik6CisgICAgICAgICgpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZv
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0lu
Zm86OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKExMSW50Q2FsbExpbmtJbmZvKToKKyAg
ICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6OkxM
SW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAg
IChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAoUHV0QnlJZFN0YXR1cyk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0
UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaCk6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0
UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRD
b21waWxlci5jcHA6CisgICAgICAgICgpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKCk6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChBbGxvY2F0aW9uU3BhY2UpOgorICAgICAgICAoKToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAo
SGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAoSlNDOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFt
ZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJy
ZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZy
YW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmls
ZSk6CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKToKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAg
KiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpJVENvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2Rl
Ojppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAg
ICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToK
KyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93
KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RV
Ql9GVU5DVElPTik6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJ
VC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1v
bi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChEYXRhKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50
RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRF
dmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2lu
dCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBv
aW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxl
cik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9u
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpM
TEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQv
TExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChK
U0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmVudHJ5T1NSKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJlc29sdmVHbG9iYWwpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9z
dENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRk
ZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludE9m
ZnNldHNFeHRyYWN0b3IpOgorICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDog
QWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3Ry
dWN0RW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZv
ckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpMTEludDo6ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20u
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRy
YWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb3B0LnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL3BhcnNlci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9yZWdp
c3RlcnMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2VsZl9oYXNoLnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3NldHRpbmdzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBv
ZmZsaW5lYXNtL3RyYW5zZm9ybS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYu
cmI6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVj
a0Zvcik6CisgICAgICAgIChDb21tb25TbG93UGF0aHMpOgorICAgICAgICAoSlNDOjpDb21tb25T
bG93UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3cpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJs
ZS5jcHA6CisgICAgICAgIChKU0M6OmpldHRpc29uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
RXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6c2FtcGxpbmdEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpj
b21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29t
cGlsZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9y
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVj
dCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRl
cm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0
cnVjdEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAg
KEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAoRXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAo
UHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpwcmVwYXJlRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1bmN0
aW9uRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAg
ICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnRlYXJPZmYpOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
cnJheS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQXJyYXkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoKToKKyAgICAgICAgKEpT
Q2VsbCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0dsb2Jh
bERhdGEpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OnNjcmF0Y2hCdWZmZXJGb3JTaXpl
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAoSlNPYmplY3QpOgorICAgICAg
ICAoSlNGaW5hbE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcik6
CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAg
KEpTU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChUeXBlSW5mbyk6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmNwcDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKEpTVmFsdWUpOgorICAgICAgICAo
KToKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU1ZhcmlhYmxlT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMu
Y3BwOgorICAgICAgICAoT3B0aW9ucyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxp
emVPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKE9wdGlv
bnMpOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKFNjb3BlQ2hhaW5Ob2RlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgor
ICAgICAgICAoSlNDKToKKyAgICAgICAgKFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFN0cnVjdHVyZUNoYWlu
KToKKyAgICAgICAgKiB3dGYvSW5saW5lQVNNLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6
CisgICAgICAgICogd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oOgorICAgICAgICAoU2VudGluZWxM
aW5rZWRMaXN0KToKKyAgICAgICAgKFdURjo6U2VudGluZWxMaW5rZWRMaXN0Ojppc0VtcHR5KToK
KyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoU3RyaW5nSW1wbCk6CisgICAgICAgICgpOgorCiAyMDEyLTAxLTI5ICBGaWxpcCBQaXpsbyAg
PGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjEwNTU3Ni1yMTA1NTgy
KTogV2ViIEluc3BlY3RvciBDcmFzaCBpbiBKU0M6OkpTVmFsdWU6OnRvU3RyaW5nKEpTQzo6RXhl
Y1N0YXRlKikgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJl
dmlzaW9uIDEwNjIxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMTEsNiArMTEsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfSU5DTFVE
RV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2ppdCIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50IgogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJv
ZmlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpAQCAtOTUsNiArOTYs
NyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGludGVycHJldGVyL1JlZ2lzdGVy
RmlsZS5jcHAKIAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorICAgIGppdC9Ib3N0
Q2FsbFJldHVyblZhbHVlLmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCiAgICAg
aml0L0pJVEFyaXRobWV0aWMuY3BwCiAgICAgaml0L0pJVENhbGwzMl82NC5jcHAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDEwNjIxMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNTcsNiAr
NTcsNyBAQCBqYXZhc2NyaXB0Y29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0IFwK
KwktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wcm9maWxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3Qu
YW0JKHJldmlzaW9uIDEwNjIxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmls
ZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw3IEBAIGphdmFzY3JpcHRjb3Jl
X3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1
ZmZlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIFwKKwlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIFwKQEAgLTEwMiw2ICsxMDMsNyBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1
bXBUYWJsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUu
aCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5lSW5mby5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5oIFwKQEAgLTI3Nyw2
ICsyNzksOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NvbXBhY3RKSVRDb2RlTWFwLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
RXhlY3V0YWJsZUFsbG9jYXRvci5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RD
YWxsUmV0dXJuVmFsdWUuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxs
UmV0dXJuVmFsdWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGlj
MzJfNjQuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgXApAQCAtMzAw
LDYgKzMwNCw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
VGh1bmtHZW5lcmF0b3JzLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL29zLXdpbjMyL3N0ZGJvb2wuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL29zLXdpbjMyL3N0ZGludC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBcCkBAIC0zNTAsNiArMzU1LDcgQEAgamF2YXNjcmlw
dGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERh
dGEuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIFwKQEAgLTM3OCw2ICszODQsNyBAQCBq
YXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25IZWxwZXJzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIFwK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQkocmV2aXNpb24g
MTA2MjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQkod29y
a2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VS
Q0VfRElSL2RlYnVnZ2VyIFwKICAgICAkJFNPVVJDRV9ESVIvaW50ZXJwcmV0ZXIgXAogICAgICQk
U09VUkNFX0RJUi9qaXQgXAorICAgICQkU09VUkNFX0RJUi9sbGludCBcCiAgICAgJCRTT1VSQ0Vf
RElSL3BhcnNlciBcCiAgICAgJCRTT1VSQ0VfRElSL3Byb2ZpbGVyIFwKICAgICAkJFNPVVJDRV9E
SVIvcnVudGltZSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTA2
MjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkK
QEAgLTEwNiw2ICsxMDYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnRlcnByZXRlci9SZWdpc3Rl
ckZpbGUuY3BwIFwKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCBc
CiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwKKyAgICBqaXQvSG9zdENhbGxSZXR1
cm5WYWx1ZS5jcHAgXAogICAgIGppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAgICAgaml0L0pJVEFy
aXRobWV0aWMzMl82NC5jcHAgXAogICAgIGppdC9KSVRDYWxsLmNwcCBcCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagko
cmV2aXNpb24gMTA2MjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTE3NTgsNiArMTc1OCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJ
CQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAiCisJCQkJ
PgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGppdFxKSVQu
Y3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTE4NDMsNiArMTg0NywxNCBAQAogCQkJPC9GaWxl
PgogCQk8L0ZpbHRlcj4KIAkJPEZpbHRlcgorCQkJTmFtZT0ibGxpbnQiCisJCQk+CisJCQk8Rmls
ZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cbGxpbnRcTExJbnREYXRhLmgiCisJCQkJPgorCQkJ
PC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgogCQkJTmFtZT0iaW50ZXJwcmV0ZXIiCiAJ
CQk+CiAJCQk8RmlsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52c3Byb3BzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwkocmV2aXNpb24gMTA2MjEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52c3Byb3BzCSh3b3JraW5nIGNvcHkpCkBAIC02
LDcgKzYsNyBAQAogCT4KIAk8VG9vbAogCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQlBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXCZxdW90OzsuLi8uLi87Li4vLi4vQVBJ
LzsuLi8uLi9wYXJzZXIvOy4uLy4uL2J5dGVjb21waWxlci87Li4vLi4vZGZnLzsuLi8uLi9qaXQv
Oy4uLy4uL3J1bnRpbWUvOy4uLy4uL3Rvb2xzLzsuLi8uLi9ieXRlY29kZS87Li4vLi4vaW50ZXJw
cmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJvZmlsZXI7Li4vLi4vYXNzZW1ibGVyLzsuLi8uLi9k
ZWJ1Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUm
cXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90Ozsm
cXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKENvbmZp
Z3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0
TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7IgorCQlBZGRpdGlvbmFsSW5jbHVk
ZURpcmVjdG9yaWVzPSImcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXEphdmFTY3Jp
cHRDb3JlXERlcml2ZWRTb3VyY2VzXCZxdW90OzsuLi8uLi87Li4vLi4vQVBJLzsuLi8uLi9wYXJz
ZXIvOy4uLy4uL2J5dGVjb21waWxlci87Li4vLi4vZGZnLzsuLi8uLi9qaXQvOy4uLy4uL2xsaW50
LzsuLi8uLi9ydW50aW1lLzsuLi8uLi90b29scy87Li4vLi4vYnl0ZWNvZGUvOy4uLy4uL2ludGVy
cHJldGVyLzsuLi8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fzc2VtYmxlci87Li4vLi4v
ZGVidWdnZXIvOy4uLy4uL2hlYXAvOyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRl
JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7
JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25m
aWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktp
dExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OyIKIAkJUHJlcHJvY2Vzc29yRGVm
aW5pdGlvbnM9Il9fU1REX0MiCiAJCUZvcmNlZEluY2x1ZGVGaWxlcz0iSUNVVmVyc2lvbi5oIgog
CS8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL2NvcHktZmlsZXMuY21kCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5j
bWQJKHJldmlzaW9uIDEwNjIxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDYgKzQzLDcgQEAgZm9yICUlZCBpbiAoCiAgICAgZGVidWdnZXIKICAgICBpbnRlcnBy
ZXRlcgogICAgIGppdAorICAgIGxsaW50CiAgICAgcGFyc2VyCiAgICAgcHJvZmlsZXIKICAgICBy
dW50aW1lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA2MjEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxNSBAQAogCW9iamVjdHMgPSB7
CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCisJCTBGNDY4MEE5MTRC
QTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovID0geworCQkJaXNhID0gUEJYQWdncmVn
YXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MEFDMTRCQTdGRDkw
MEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdl
dCAiTExJbnQgT2Zmc2V0cyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODBBQTE0
QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAorCQkJKTsKKwkJ
CW5hbWUgPSAiTExJbnQgT2Zmc2V0cyI7CisJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJj
ZXMiOworCQl9OwogCQk2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3VyY2Vz
ICovID0gewogCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0
aW9uTGlzdCA9IDY1RkIzRjc3MDlEMTFFQkQwMEY0OURFQiAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVyaXZlZCBTb3VyY2VzIiAqLzsKQEAgLTE0
LDYgKzIzLDkgQEAKIAkJCQk2NUZCM0Y2NTA5RDExRTkxMDBGNDlERUIgLyogR2VuZXJhdGUgRGVy
aXZlZCBTb3VyY2VzICovLAogCQkJCTVEMzVERUUxMEM3QzE0MEIwMDg2NDhCMiAvKiBHZW5lcmF0
ZSBEVHJhY2UgaGVhZGVyICovLAogCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2
ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CiAJ
CQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNv
dXJjZXMiOwogCQl9OwpAQCAtNDgsNiArNjAsMTAgQEAKIAkJMEJBQzk0QTAxMzM4NzI4NDAwQ0Yx
MzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJl
YWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEJDRDgzNTcxNDg1ODQ1MjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNo
YW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJD
RDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYz
OEY4NCAvKiBTaXplTGltaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAq
LzsgfTsKKwkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTUx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovOyB9OworCQkwRjBCODM5
QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8q
IExMSW50RW50cnlwb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTcx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUQxNEJD
RjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVu
a3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBD
b2RlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTgxNEJDRjU1RTAwODg1
QjRGIC8qIEhhbmRsZXJJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5n
ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU4LDkgKzc0LDEzIEBA
CiAJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0IzMTRCQ0Y4
NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyog
R2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4
M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjgx
NEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwRkM0NUEx
NEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyog
TExJbnRDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1RjE1
RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNkQ3MjYxNDJDMzlDMDAwQ0Y3ODRB
IC8qIEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLzsgfTsK
IAkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRC
IC8qIEpJVERyaXZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3QTE0
QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAv
KiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3RTE0
QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0
QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVy
ZW5jZUhhcnZlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMkM1NTZGMTQ3MzhGMzEwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RTE0NzM4
RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTcwMTQ3MzhGMzUwMDEyMUU0RiAvKiBERkdD
b2RlQmxvY2tzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLzsgfTsK
QEAgLTcxLDYgKzkxLDE5IEBACiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBMaXN0YWJs
ZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MjE0QkE1NzJE
MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlv
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA3RjE0QkE1NzI3MDBCRkUy
NzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3
MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2
ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludEhlbHBlcnMuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25v
LXVudXNlZC1wYXJhbWV0ZXIiOyB9OyB9OworCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyog
TExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTcxNEJBN0ZB
MTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZF
MjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRp
b25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9u
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBD
NTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyog
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzcxNEJC
QjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovOyB9OworCQkwRjQ2ODBD
RDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcy
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRh
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4
MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovOyB9OworCQkwRjQ2ODBEMzE0
QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRh
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0
NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDAxNEJCQzVGODAw
QkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovOyB9OworCQkwRjQ2ODBENTE0QkJE
MjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhv
c3RDYWxsUmV0dXJuVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjU1RjBGNDE0RDEwNjM5MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1RjBGMTE0
RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi87IH07CiAJCTBGNTVGMEY1MTREMTA2
M0MwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUYw
OENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAw
NDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zODcsNyArNDIwLDcgQEAKIAkJODZCOTlBRTMx
MTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCOTlBRTExMTdFNTc4MTAwREY1QTkwIC8qIFN0cmlu
Z0J1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTg2QkIwOUMwMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJFMTM4RTM4MUIwMDU2
NzAyRiAvKiBERkdSZXBhdGNoLmNwcCAqLzsgfTsKIAkJODZCQjA5QzExMzhFMzgxQjAwNTY3MDJG
IC8qIERGR1JlcGF0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2QkIwOUJGMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggKi87IH07Ci0J
CTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNE
RjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IH07CisJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1
OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4
RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OEREMTFBMjEzRUUwMDA3RjdG
MCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgKi87IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3
RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2Vt
Ymxlck1JUFMuaCAqLzsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3Nl
bWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IH07CkBAIC03NTQs
NiArNzg3LDIwIEBACiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
UEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjExNEJBODExNTAwQkZF
MjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5l
ckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMw
NyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9i
YWxJRFN0cmluZyA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSAi
TExJbnQgT2Zmc2V0cyI7CisJCX07CisJCTBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7
CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVj
dCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcg
PSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworCQl9OwogCQkxNDEyMTRCRTBBNDkxOTBFMDA0ODAyNTUgLyogUEJYQ29u
dGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5Owog
CQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qg
b2JqZWN0ICovOwpAQCAtNzk5LDYgKzg0NiwxNSBAQAogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLworCQkwRjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovID0geworCQkJ
aXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CisJCQlkc3RQYXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJmb2xk
ZXJTcGVjID0gMDsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAxOworCQl9OwogCQk1REJCMTUxMTEzMUQwQjEzMDA1NkFEMzYgLyog
Q29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhh
c2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAxMjsKQEAgLTgzOSw2ICs4OTUsMTAgQEAKIAkJMEJB
Qzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMg
LyogVGVtcG9yYXJ5Q2hhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRl
bXBvcmFyeUNoYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkYyOEEyODEx
QTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTaXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5jcHA7IHBh
dGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5oOyBwYXRoID0g
bGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRUaHVua3MuY3BwOyBwYXRoID0gbGxpbnQvTExJ
bnRUaHVua3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5ODE0QkNG
NDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gTExJbnRUaHVua3MuaDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlVHlwZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxl
ckluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlckluZm8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8q
IEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RXhwcmVzc2lvblJhbmdlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQ5
LDkgKzkwOSwxMyBAQAogCQkwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExp
bmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGhvZENhbGxMaW5r
SW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNCNjE0QkNGOERGMDA4
ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gR2xvYmFsUmVzb2x2ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zm
c2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEZDNDU4
MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBMTEludENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vblNsb3dQYXRocy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0
VmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdFZlY3Rv
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjFDMjY2MTRCRTVGNUUwMEFE
QzY0QiAvKiBKSVREcml2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklU
RHJpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjc5MTRCRTcyNzMw
MEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0aW9uSGFybmVzcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyog
Qnl0ZWNvZGVDb252ZW50aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBC
eXRlY29kZUNvbnZlbnRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjQy
REE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0Nv
ZGVCbG9ja3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gREZHQ29k
ZUJsb2Nrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZFMTQ3MzhG
MkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERGR0NvZGVCbG9ja3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2
Miw2ICs5MjYsMjAgQEAKIAkJMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFu
ZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaXN0YWJsZUhhbmRsZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSklURXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4
MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBp
bGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gSlNDTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owor
CQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5jcHA7IHBhdGgg
PSBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5oOyBwYXRoID0gbGxpbnQv
TExJbnRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlG
MTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTExJbnRIZWxwZXJzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50SGVs
cGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEEwMTRCQTdGODIw
MEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTExJbnRIZWxwZXJzLmg7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBM
TEludE9mZnNldHNFeHRyYWN0b3IuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzUxNEJCQjE2OTAw
QkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IExMSW50Q29tbW9uLmg7IHBhdGggPSBsbGludC9MTEludENvbW1vbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50T2ZmbGlu
ZUFzbUNvbmZpZy5oOyBwYXRoID0gbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dM
ZXZlbEludGVycHJldGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM4MTRCQkIxNjkwMEJG
RTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIuaDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0UxNEJCQjNEMTAw
QkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBMTEludERhdGEuY3BwOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludERhdGEuaDsgcGF0aCA9
IGxsaW50L0xMSW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBE
MDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RD
YWxsUmV0dXJuVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSG9zdENh
bGxSZXR1cm5WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1RjBGMTE0
RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBYnN0cmFjdFBDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RQQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyogREZHQnl0ZUNvZGVDYWNoZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCeXRlQ29kZUNhY2hlLmg7IHBhdGgg
PSBkZmcvREZHQnl0ZUNvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTU4Nyw2ICsxNjY1LDEzIEBACiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEMx
NEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxl
cyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
KwkJfTsKIAkJMTQxMjExMUUwQTQ4NzkzQzAwNDgwMjU1IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CkBAIC0xNjQ1LDYgKzE3MzAsNyBAQAogCQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4
MDI1NSAvKiBtaW5pZG9tICovLAogCQkJCTE0QkQ1OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0
YXBpICovLAogCQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAor
CQkJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3Ig
Ki8sCiAJCQkpOwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTE2NzUsNiArMTc2MSw3IEBACiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8q
IEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0
IC8qIGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5o
ICovLAorCQkJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLywKIAkJCQkxNDMy
RUJENzBBMzRDQUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFE
NjQ5RiAvKiBhc3NlbWJsZXIgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5
dGVjb2RlICovLApAQCAtMTcxNCw2ICsxODAxLDI4IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1
c2VzVGFicyA9IDA7CiAJCX07CisJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYwQjgzOTUx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovLAorCQkJCTBGMEI4Mzk2
MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8sCisJCQkJMEYwQjgzOTcx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLywKKwkJCQkwRjBCODM5ODE0QkNG
NDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLywKKwkJCQkwRjQ2ODBDRTE0QkJCM0QxMDBC
RkUyNzIgLyogTExJbnREYXRhLmNwcCAqLywKKwkJCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIg
LyogTExJbnREYXRhLmggKi8sCisJCQkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50
Q29tbW9uLmggKi8sCisJCQkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGlu
ZUFzbUNvbmZpZy5oICovLAorCQkJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZl
bEludGVycHJldGVyLmNwcCAqLywKKwkJCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93
TGV2ZWxJbnRlcnByZXRlci5oICovLAorCQkJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBM
TEludEV4Y2VwdGlvbnMuY3BwICovLAorCQkJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBM
TEludEV4Y2VwdGlvbnMuaCAqLywKKwkJCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJ
bnRIZWxwZXJzLmNwcCAqLywKKwkJCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRI
ZWxwZXJzLmggKi8sCisJCQkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGxsaW50OworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMTQxMjExMDAwQTQ4NzcyNjAwNDgwMjU1IC8qIHRlc3Rz
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE3NDgsNiAr
MTg1Nyw4IEBACiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQgKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNDY4MEQwMTRCQkM1RjgwMEJG
RTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLywKKwkJCQkwRjQ2ODBEMTE0QkJDNUY4
MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovLAogCQkJCTBGNDY4MDdGMTRCQTU3
MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLywKIAkJCQkwRjQ2ODA4MDE0QkE1NzI3
MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovLAogCQkJCTBGRDgyRTM3MTQxQUIxNDIwMDE3
OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oICovLApAQCAtMjE3NSw2ICsyMjg2LDggQEAKIAkJ
N0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi8sCisJCQkJMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRC
IC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLywKIAkJCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0Qg
LyogQ29tbW9uU2xvd1BhdGhzLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8q
IEFyZ0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0
LmggKi8sCkBAIC0yNTQ3LDYgKzI2NjAsOCBAQAogCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEg
LyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAor
CQkJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8s
CisJCQkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8s
CiAJCQkJMEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLywK
IAkJCQkwRjkzMzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCAqLywKIAkJ
CQkwRjkzMzI5NTE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5jcHAgKi8sCkBAIC0z
MDk3LDcgKzMyMTIsMTYgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBh
dHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZ
YXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYxNUYxNEI3QTczRTAw
NURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTMx
NEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGlu
ZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcy
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEQzMTRC
QkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEQ1
MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVy
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4
cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtMzEwNiw3ICszMjMwLDExIEBA
CiAJCQkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29s
dmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyog
Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
MEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3Mu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3RjE0QkVBQTgyMDBB
REM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5
NEExNEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY3QjI5NEMxNEMzQ0Q0MzAwN0MzREIxIC8qIERGR0J5dGVDb2RlQ2FjaGUu
aCBpbiBIZWFkZXJzICovLApAQCAtMzEyNSw2ICszMjUzLDI0IEBACiAvKiBFbmQgUEJYSGVhZGVy
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlv
biAqLworCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFj
dG9yICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0
aW9uTGlzdCA9IDBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLzsK
KwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3Vy
Y2VzICovLAorCQkJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovLAor
CQkJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8sCisJCQkpOworCQkJ
YnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjIx
NEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFt
ZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3ROYW1lID0gSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDBGNDY4MDhGMTRCQTdFNUUw
MEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQlwcm9kdWN0VHlwZSA9
ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OwogCQkxNDEyMTExRjBBNDg3OTND
MDA0ODAyNTUgLyogbWluaWRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJ
CWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovOwpA
QCAtMzI1MSwxMSArMzM5NywyOSBAQAogCQkJCTE0QkQ1OUJFMEEzRThGOTAwMEJBRjU5QyAvKiB0
ZXN0YXBpICovLAogCQkJCTkzMkY1QkRBMDgyMkExQzcwMDczNjk3NSAvKiBqc2MgKi8sCiAJCQkJ
NjUxMTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEUx
NEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKKwkJCQkwRjQ2
ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLywKIAkJCSk7CiAJCX07CiAv
KiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVp
bGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0
ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkp
OworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9sbGludC9Mb3dMZXZlbEFzc2Vt
Ymxlci5hc20iLAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsK
KwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZz
ZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxT
Y3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL1wi
XG5cbi91c3IvYmluL2VudiBydWJ5IFwiJHtTUkNST09UfS9vZmZsaW5lYXNtL2dlbmVyYXRlX29m
ZnNldF9leHRyYWN0b3IucmJcIiBcIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc21cIiBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvTExJbnREZXNpcmVk
T2Zmc2V0cy5oXCJcbiI7CisJCX07CiAJCTM3MTNGMDE0MTQyOTA1MjQwMDM2Mzg3RiAvKiBDaGVj
ayBGb3IgSW5hcHByb3ByaWF0ZSBPYmplY3RpdmUtQyBDbGFzcyBOYW1lcyAqLyA9IHsKIAkJCWlz
YSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CkBAIC0zMzYxLDcgKzM1MjUsNyBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKLQkJCXNoZWxs
U2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL2RvY3NcIlxuY2QgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmVcIlxuXG4vYmluL2xuIC1zZmggXCIke1NSQ1JPT1R9XCIg
SmF2YVNjcmlwdENvcmVcbmV4cG9ydCBKYXZhU2NyaXB0Q29yZT1cIkphdmFTY3JpcHRDb3JlXCJc
bmV4cG9ydCBCVUlMVF9QUk9EVUNUU19ESVI9XCIuLi8uLlwiXG5cbm1ha2UgLS1uby1idWlsdGlu
LXJ1bGVzIC1mIFwiSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNy
L3NiaW4vc3lzY3RsIC1uIGh3Lm5jcHVgXG4iOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAg
XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9j
c1wiXG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7U1JDUk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhw
b3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2YVNjcmlwdENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RV
Q1RTX0RJUj1cIi4uLy4uXCJcblxubWFrZSAtLW5vLWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlXCIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcu
bmNwdWBcblxuL3Vzci9iaW4vZW52IHJ1YnkgSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20u
cmIgSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJHtCVUlMVF9Q
Uk9EVUNUU19ESVJ9L0pTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciBMTEludEFzc2VtYmx5LmhcbiI7
CiAJCX07CiAJCTkzMTk1ODZCMDlEOUY5MUEwMEE1NkZENCAvKiBDaGVjayBGb3IgR2xvYmFsIElu
aXRpYWxpemVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKQEAg
LTMzOTYsNiArMzU2MCwxNCBAQAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0
NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3Vy
Y2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxl
cyA9ICgKKwkJCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRDBBNDg3OTNDMDA0ODAyNTUgLyogU291
cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTM2NTMsNyArMzgyNSwxNCBAQAogCQkJCTg2NzA0Qjg2
MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0
Qjg5MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRF
eGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3
MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MENDMTRCQkIx
N0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50
cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRG
IC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4M0IwMTRCQ0Y3MTYw
MDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjQx
NEJDRjg2MDAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlGNjlFODZDMzE0QzZFNTUxMDAyQzJDNjIgLyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTM2NzgsNiArMzg1NywxNiBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICov
CisJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0g
eworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRC
QTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2
ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9Owor
CQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsK
KwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3
RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJv
eHkgPSAwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICov
OworCQl9OwogCQkxNDEyMTRCRjBBNDkxOTBFMDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5j
eSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEy
MTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLzsKQEAgLTM3MTEsNiArMzkwMCwxNDgg
QEAKIC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENC
dWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIg
LyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJD
SFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0g
Tk87CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1J
Q19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJ
CQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklO
SVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7
CisJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9
IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9f
MzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RP
VFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJ
R0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhT
W2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RT
X0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJ
CSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElW
RV9BUkNIID0gWUVTOworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJ
U0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3Ug
JChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
IjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MDk3MTRCQTdFNUUwMEJG
RTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POwor
CQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9T
VFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1k
c3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFC
TEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNv
bXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVS
U0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsK
KwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVT
RURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAo
CisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9m
ZnNldHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lN
RU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsK
KwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIu
IGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9Q
QVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3
RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRI
UyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09Q
WV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdh
cmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJ
CUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29t
LmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9C
SVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBF
UyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0Nf
V0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJj
aD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElS
KS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsK
KwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9
ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURF
Ul9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0
cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOwor
CQl9OworCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlB
TFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5E
QVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5G
T1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0Vf
U1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsK
KwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJ
CQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9B
Qk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJO
X1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJI
RUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJ
CSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NF
QVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAu
NzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBt
YWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9Owor
CQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAv
KiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOwor
CQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcy
IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5
IjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAw
QkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3Vy
Y2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIw
MTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJE
ZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07
CiAJCTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1NSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKQEAgLTM5NTIsNiArNDI4
MywyOCBAQAogLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTBGNDY4MDlBMTRCQTdFNUYwMEJG
RTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlND
TExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxp
c3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MDk2MTRCQTdFNUUwMEJG
RTI3MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFz
ZSAqLywKKwkJCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJ
CTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRl
ZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9u
TmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zm
c2V0cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25m
aWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8s
CisJCQkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0Njgw
QUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODBCMDE0QkE3RkQ5
MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9u
OworCQl9OwogCQkxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovID0gewogCQkJaXNhID0gWEND
b25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA2
MjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNkZWZpbmUgR0xPQkFMX1RIVU5LX0lEIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigtMSkpCiAjZGVmaW5l
IFJFR0VYUF9DT0RFX0lEIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0
cl90PigtMikpCiAKLSNpbmNsdWRlIDxNYWNyb0Fzc2VtYmxlci5oPgorI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBK
U0MgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVu
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVDb252ZW50aW9ucy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorI2RlZmluZSBCeXRlY29kZUNvbnZlbnRpb25zX2gK
KworLy8gUmVnaXN0ZXIgbnVtYmVycyB1c2VkIGluIGJ5dGVjb2RlIG9wZXJhdGlvbnMgaGF2ZSBk
aWZmZXJlbnQgbWVhbmluZyBhY2NvcmRpbmcgdG8gdGhlaXIgcmFuZ2VzOgorLy8gICAgICAweDgw
MDAwMDAwLTB4RkZGRkZGRkYgIE5lZ2F0aXZlIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBv
aW50ZXIgYXJlIGVudHJpZXMgaW4gdGhlIGNhbGwgZnJhbWUsIHNlZSBSZWdpc3RlckZpbGUuaC4K
Ky8vICAgICAgMHgwMDAwMDAwMC0weDNGRkZGRkZGICBGb3J3YXJkcyBpbmRpY2VzIGZyb20gdGhl
IENhbGxGcmFtZSBwb2ludGVyIGFyZSBsb2NhbCB2YXJzIGFuZCB0ZW1wb3JhcmllcyB3aXRoIHRo
ZSBmdW5jdGlvbidzIGNhbGxmcmFtZS4KKy8vICAgICAgMHg0MDAwMDAwMC0weDdGRkZGRkZGICBQ
b3NpdGl2ZSBpbmRpY2VzIGZyb20gMHg0MDAwMDAwMCBzcGVjaWZ5IGVudHJpZXMgaW4gdGhlIGNv
bnN0YW50IHBvb2wgb24gdGhlIENvZGVCbG9jay4KK3N0YXRpYyBjb25zdCBpbnQgRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwOworCisjZW5kaWYgLy8gQnl0ZWNvZGVDb252
ZW50aW9uc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTA2MjEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcs
MTcgKzI3LDQwIEBACiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgorI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJbmZvLmgiCiAKIG5hbWVzcGFjZSBK
U0MgewogCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAg
VU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUlu
ZGV4KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0g
cHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7Cisg
ICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IGluc3RydWN0aW9uWzRdLnUuY2Fs
bExpbmtJbmZvOworICAgIAorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyhjYWxsTGlua0luZm8t
Pmxhc3RTZWVuQ2FsbGVlLmdldCgpLCBmYWxzZSk7CisjZWxzZQorICAgIHJldHVybiBDYWxsTGlu
a1N0YXR1cygwLCBmYWxzZSk7CisjZW5kaWYKK30KKwogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtT
dGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4KQogewogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVT
RURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVF
X1BST0ZJTEVSKQotICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygKLSAgICAgICAgcHJvZmlsZWRC
bG9jay0+Z2V0Q2FsbExpbmtJbmZvKGJ5dGVjb2RlSW5kZXgpLmxhc3RTZWVuQ2FsbGVlLmdldCgp
LAotICAgICAgICBwcm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4
KSk7CisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1iZXJPZkNhbGxMaW5rSW5mb3MoKSkKKyAg
ICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRl
eCk7CisgICAgCisgICAgaWYgKHByb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKGJ5dGVj
b2RlSW5kZXgpKQorICAgICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgdHJ1ZSk7CisgICAg
CisgICAgSlNGdW5jdGlvbiogdGFyZ2V0ID0gcHJvZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJbmZv
KGJ5dGVjb2RlSW5kZXgpLmxhc3RTZWVuQ2FsbGVlLmdldCgpOworICAgIGlmICghdGFyZ2V0KQor
ICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUlu
ZGV4KTsKKyAgICAKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXModGFyZ2V0LCBmYWxzZSk7CiAj
ZWxzZQogICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygwLCBmYWxzZSk7CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCShy
ZXZpc2lvbiAxMDYyMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTUgKzQ3LDE3IEBAIHB1YmxpYzoKICAg
ICAKICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4KTsKICAgICAKLSAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1
cm4gISFtX2NhbGxUYXJnZXQ7IH0KKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gISFt
X2NhbGxUYXJnZXQgfHwgbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIAotICAgIGJvb2wgb3Bl
cmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbFRhcmdldDsgfQorICAgIGJvb2wgb3BlcmF0
b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KICAgICAKICAgICBib29sIGNvdWxkVGFr
ZVNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIAog
ICAgIEpTRnVuY3Rpb24qIGNhbGxUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQ7
IH0KICAgICAKIHByaXZhdGU6CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9t
TExJbnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisgICAgCiAgICAgSlNG
dW5jdGlvbiogbV9jYWxsVGFyZ2V0OwogICAgIGJvb2wgbV9jb3VsZFRha2VTbG93UGF0aDsKIH07
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAko
cmV2aXNpb24gMTA2MjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgogI2luY2x1ZGUgIkpT
VmFsdWUuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiUmVw
YXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUg
PHN0ZGlvLmg+CkBAIC01OSw4ICs2MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogdXNpbmcgbmFtZXNw
YWNlIERGRzsKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RF
X1NBTVBMSU5HKQotCiBzdGF0aWMgVVN0cmluZyBlc2NhcGVRdW90ZXMoY29uc3QgVVN0cmluZyYg
c3RyKQogewogICAgIFVTdHJpbmcgcmVzdWx0ID0gc3RyOwpAQCAtMzU4LDEwICszNTcsMTAgQEAg
dm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjKSBjbwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBpICs9IG9wY29kZUxlbmd0aHNbZXhl
Yy0+aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbaV0udS5vcGNvZGUp
XSkKICAgICAgICAgKytpbnN0cnVjdGlvbkNvdW50OwogCi0gICAgcHJpbnRmKCIlbHUgbV9pbnN0
cnVjdGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVn
aXN0ZXIocylcblxuIiwKKyAgICBwcmludGYoIiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVz
IGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFi
bGUocylcblxuIiwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rp
b25Db3VudCksCiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9u
cygpLnNpemUoKSAqIHNpemVvZihJbnN0cnVjdGlvbikpLAotICAgICAgICB0aGlzLCBtX251bVBh
cmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgdGhpcywgbV9udW1QYXJh
bWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycywgbV9udW1WYXJzKTsKIAogICAgIFZlY3RvcjxJ
bnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4o
KTsKICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBpbnN0cnVj
dGlvbnMoKS5lbmQoKTsKQEAgLTg5OCw2ICs4OTcsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAo
RXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9j
YXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7
CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3QiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CisgICAgICAgICAg
ICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWwiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkX2dlbmVyaWM6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMs
IGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAgICAgICBicmVhazsK
QEAgLTEyOTEsOCArMTI5OCw2IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhl
YywgY28KICAgICB9CiB9CiAKLSNlbmRpZiAvLyAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRShP
UENPREVfU0FNUExJTkcpCi0KICNpZiBEVU1QX0NPREVfQkxPQ0tfU1RBVElTVElDUwogc3RhdGlj
IEhhc2hTZXQ8Q29kZUJsb2NrKj4gbGl2ZUNvZGVCbG9ja1NldDsKICNlbmRpZgpAQCAtMTQ2MCw2
ICsxNDY1LDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLAogewog
ICAgIHNldE51bVBhcmFtZXRlcnMob3RoZXIubnVtUGFyYW1ldGVycygpKTsKICAgICBvcHRpbWl6
ZUFmdGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsKICAgICAKICAgICBpZiAob3Ro
ZXIubV9yYXJlRGF0YSkgewogICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CkBA
IC0xNTA4LDYgKzE1MTQsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxl
KiBvCiAgICAgQVNTRVJUKG1fc291cmNlKTsKICAgICAKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVw
KCk7CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsKIAogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNU
SUNTCiAgICAgbGl2ZUNvZGVCbG9ja1NldC5hZGQodGhpcyk7CkBAIC0xNTI1LDcgKzE1MzIsMTEg
QEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKICNpZiBFTkFCTEUoVkVSQk9TRV9WQUxVRV9QUk9G
SUxFKQogICAgIGR1bXBWYWx1ZVByb2ZpbGVzKCk7CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJM
RShMTElOVCkgICAgCisgICAgd2hpbGUgKG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCkgIT0g
bV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisgICAgICAgIG1faW5jb21pbmdMTEludENhbGxz
LmJlZ2luKCktPnJlbW92ZSgpOworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKICNpZiBFTkFCTEUo
SklUKQogICAgIC8vIFdlIG1heSBiZSBkZXN0cm95ZWQgYmVmb3JlIGFueSBDb2RlQmxvY2tzIHRo
YXQgcmVmZXIgdG8gdXMgYXJlIGRlc3Ryb3llZC4KICAgICAvLyBDb25zaWRlciB0aGF0IHR3byBD
b2RlQmxvY2tzIGJlY29tZSB1bnJlYWNoYWJsZSBhdCB0aGUgc2FtZSB0aW1lLiBUaGVyZQpAQCAt
MTczNyw4ICsxNzQ4LDY4IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxs
eSgKICNlbHNlCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZVVubGlua2luZyA9IGZhbHNl
OwogI2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogICAgIAorI2lmIEVOQUJM
RShMTElOVCkKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEtPmlu
dGVycHJldGVyOworICAgIC8vIGludGVycHJldGVyLT5lbmFibGVkKCkgcmV0dXJucyB0cnVlIGlm
IHRoZSBvbGQgQysrIGludGVycHJldGVyIGlzIGVuYWJsZWQuIElmIHRoYXQncyBlbmFibGVkCisg
ICAgLy8gdGhlbiB3ZSdyZSBub3QgdXNpbmcgTExJbnQuCisgICAgaWYgKCFpbnRlcnByZXRlci0+
ZW5hYmxlZCgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAg
IEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgeworICAgICAgICAgICAg
Y2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAg
ICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlIHx8IEhlYXA6Omlz
TWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisg
ICAgICAgICAgICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcgTExJbnQgcHJvcGVydHkgYWNjZXNz
IHdpdGggc3RydWN0dXJlICVwLlxuIiwgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0
KCkpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmNsZWFy
KCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kID0gMDsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0OgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWw6CisgICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9u
WzRdLnUuc3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01h
cmtlZChjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgICAg
ICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFp
bi5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlVW5saW5raW5nKSB7CisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiQ2xlYXJp
bmcgTExJbnQgcHV0IHRyYW5zaXRpb24gd2l0aCBzdHJ1Y3R1cmVzICVwIC0+ICVwLCBjaGFpbiAl
cC5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0
cnVjdHVyZS5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9u
WzZdLnUuc3RydWN0dXJlLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VySW5z
dHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmNsZWFyKCk7Cisg
ICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAg
ICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmNsZWFyKCk7
CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPSBpbnRlcnByZXRl
ci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2ds
b2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgewor
ICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygp
W21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV07CisgICAgICAgICAgICBBU1NFUlQoaW50
ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9y
ZXNvbHZlX2dsb2JhbAorICAgICAgICAgICAgICAgICAgIHx8IGludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3BfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYyk7CisgICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlIHx8
IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpKSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcgTExJ
bnQgZ2xvYmFsIHJlc29sdmUgY2FjaGUgd2l0aCBzdHJ1Y3R1cmUgJXAuXG4iLCBjdXJJbnN0cnVj
dGlvblszXS51LnN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlvblsz
XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5v
cGVyYW5kID0gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChtX2xs
aW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpICYmICFIZWFwOjppc01hcmtlZChtX2xsaW50
Q2FsbExpbmtJbmZvc1tpXS5jYWxsZWUuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZl
cmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcgTExJ
bnQgY2FsbCBmcm9tICVwLlxuIiwgdGhpcyk7CisgICAgICAgICAgICAgICAgbV9sbGludENhbGxM
aW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoISFt
X2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQo
bV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQorICAgICAgICAg
ICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlLmNsZWFyKCk7Cisg
ICAgICAgIH0KKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCiAjaWYgRU5BQkxFKERG
R19KSVQpCiAgICAgLy8gQ2hlY2sgaWYgd2UncmUgbm90IGxpdmUuIElmIHdlIGFyZSwgdGhlbiBq
ZXR0aXNvbi4KICAgICBpZiAoIShzaG91bGRJbW1lZGlhdGVseUFzc3VtZUxpdmVuZXNzRHVyaW5n
U2NhbigpIHx8IG1fZGZnRGF0YS0+bGl2ZW5lc3NIYXNCZWVuUHJvdmVkKSkgewpAQCAtMTg1OSwx
MCArMTkzMCwxMiBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyCiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVjbHMuc2l6ZSgpOyArK2kpCiAg
ICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9uRGVjbHNbaV0pOwogI2lmIEVOQUJMRShJ
TlRFUlBSRVRFUikKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICB2aXNpdFN0cnVj
dHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bnNbaV1dKTsKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rp
b25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0dXJl
cyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ld
XSk7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPmVuYWJsZWQoKSkgeworICAg
ICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXpl
KCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZp
c2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7
CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMu
c2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHZpc2l0U3RydWN0dXJl
cyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ld
XSk7CisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTE4NzAsOCArMTk0
Myw5IEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXIKICAgICAgICAg
Ly8gTWFrZSBzdXJlIHRoYXQgZXhlY3V0YWJsZXMgdGhhdCB3ZSBoYXZlIGlubGluZWQgZG9uJ3Qg
ZGllLgogICAgICAgICAvLyBGSVhNRTogSWYgdGhleSB3b3VsZCBoYXZlIG90aGVyd2lzZSBkaWVk
LCB3ZSBzaG91bGQgcHJvYmFibHkgdHJpZ2dlciByZWNvbXBpbGF0aW9uLgogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGlubGluZUNhbGxGcmFtZXMoKS5zaXplKCk7ICsraSkgewotICAg
ICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZXMoKVtpXS5leGVjdXRhYmxl
KTsKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpbmxpbmVDYWxsRnJhbWVzKClbaV0uY2Fs
bGVlKTsKKyAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSYgaW5saW5lQ2FsbEZyYW1lID0gaW5s
aW5lQ2FsbEZyYW1lcygpW2ldOworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNh
bGxGcmFtZS5leGVjdXRhYmxlKTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpbmxpbmVD
YWxsRnJhbWUuY2FsbGVlKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjA3MSw2ICsy
MTQ1LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiB7CiAgICAgaWYgKCEhbV9h
bHRlcm5hdGl2ZSkKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+dW5saW5rQ2FsbHMoKTsKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJ
bmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5mb3NbaV0u
aXNMaW5rZWQoKSkKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygp
OworICAgIH0KKyNlbmRpZgogICAgIGlmICghKG1fY2FsbExpbmtJbmZvcy5zaXplKCkgfHwgbV9t
ZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW1f
Z2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0yMDg1LDEwICsyMTY1LDM5IEBAIHZvaWQgQ29k
ZUJsb2NrOjp1bmxpbmtDYWxscygpCiAKIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0Nh
bGxzKCkKIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgd2hpbGUgKG1faW5jb21pbmdMTEludENh
bGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisgICAgICAgIG1faW5j
b21pbmdMTEludENhbGxzLmJlZ2luKCktPnVubGluaygpOworI2VuZGlmCisgICAgaWYgKG1faW5j
b21pbmdDYWxscy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKICAgICBSZXBhdGNoQnVmZmVy
IHJlcGF0Y2hCdWZmZXIodGhpcyk7CiAgICAgd2hpbGUgKG1faW5jb21pbmdDYWxscy5iZWdpbigp
ICE9IG1faW5jb21pbmdDYWxscy5lbmQoKSkKICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLmJlZ2lu
KCktPnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKIH0KKwordW5zaWduZWQg
Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMsIFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcykKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKHJldHVybkFk
ZHJlc3MudmFsdWUoKSA+PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9iZWdpbikKKyAgICAg
ICAgJiYgcmV0dXJuQWRkcmVzcy52YWx1ZSgpIDw9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50
X2VuZCkpIHsKKyAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAgICAgICAgQVNT
RVJUKGV4ZWMtPmNvZGVCbG9jaygpID09IHRoaXMpOworICAgICAgICBBU1NFUlQoSklUQ29kZTo6
aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CisgICAgICAgIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiA9IGV4ZWMtPmN1cnJlbnRWUEMoKTsKKyAgICAgICAgQVNTRVJUKGluc3RydWN0aW9u
KTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9uKTsKKyAgICB9Cisj
ZWxzZQorICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyNlbmRpZgorICAgIGlmICghbV9yYXJlRGF0
YSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVj
b2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZl
Y3RvcjsKKyAgICBpZiAoIWNhbGxJbmRpY2VzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCwg
dW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNhbGxJ
bmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUo
KSkpLT5ieXRlY29kZU9mZnNldDsKK30KICNlbmRpZgogCiB2b2lkIENvZGVCbG9jazo6Y2xlYXJF
dmFsQ2FjaGUoKQpAQCAtMjE4NCwyNCArMjI5Myw0NSBAQCBib29sIEZ1bmN0aW9uQ29kZUJsb2Nr
OjpjYW5Db21waWxlV2l0aERGCiAKIHZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6amV0dGlzb24oKQog
ewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAg
IEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNT
RVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1
dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xvYmFs
RGF0YSgpKTsKIH0KIAogdm9pZCBFdmFsQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNT
RVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJ
VENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9
PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVy
RXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwogfQog
CiB2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJ
VFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6Omlz
T3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNl
bWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1
dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZUZvcigqZ2xvYmFsRGF0YSgpLCBtX2lzQ29u
c3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOwogfQorCit2b2lkIFBy
b2dyYW1Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
K3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmsp
OworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShn
bG9iYWxEYXRhKTsKK30KKwordm9pZCBFdmFsQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRD
b2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgp
KTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFi
bGUoKSktPmppdENvbXBpbGUoZ2xvYmFsRGF0YSk7Cit9CisKK3ZvaWQgRnVuY3Rpb25Db2RlQmxv
Y2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBBU1NF
UlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VS
VCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxGdW5jdGlv
bkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGVGb3IoZ2xvYmFsRGF0
YSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKK30K
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtMjMwNCw2ICsyNDM0LDE4
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wVmFsdWVQcm9maWxlcygpCiB9CiAjZW5kaWYKIAordm9p
ZCBDb2RlQmxvY2s6OmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCkKK3sKKyNp
ZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykgJiYgIUVOQUJMRShMTElOVCkKKyAgICBpZiAoQnl0
ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQorICAgICAgICByZXR1cm47Cisg
ICAgaWYgKCEhYWx0ZXJuYXRpdmUoKSkKKyAgICAgICAgZGlzY2FyZEJ5dGVjb2RlKCk7CisgICAg
ZWxzZQorICAgICAgICBkaXNjYXJkQnl0ZWNvZGVMYXRlcigpOworI2VuZGlmCit9CisKICNpZm5k
ZWYgTkRFQlVHCiBib29sIENvZGVCbG9jazo6dXNlc09wY29kZShPcGNvZGVJRCBvcGNvZGVJRCkK
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJl
dmlzaW9uIDEwNjIxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBDb2RlQmxvY2tf
aAogI2RlZmluZSBDb2RlQmxvY2tfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5o
IgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgpAQCAtNTAsNiArNTEs
NyBAQAogI2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0lu
Zm8uaCIKICNpbmNsdWRlICJMaW5lSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVk
ZSAiUHJlZGljdGlvblRyYWNrZXIuaCIKQEAgLTY1LDE2ICs2NywxMSBAQAogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCi0vLyBSZWdpc3Rl
ciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFu
aW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6Ci0vLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZG
RkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50
cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgotLy8gICAgICAweDAw
MDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBv
aW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3Mg
Y2FsbGZyYW1lLgotLy8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGlj
ZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBv
biB0aGUgQ29kZUJsb2NrLgotc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCA9IDB4NDAwMDAwMDA7Ci0KIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgRXhlY1N0
YXRlOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgRXhlY1N0YXRlOworICAg
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGlubGluZSBpbnQgdW5tb2RpZmll
ZEFyZ3VtZW50c1JlZ2lzdGVyKGludCBhcmd1bWVudHNSZWdpc3RlcikgeyByZXR1cm4gYXJndW1l
bnRzUmVnaXN0ZXIgLSAxOyB9CiAKQEAgLTgzLDYgKzgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIsIHB1Ymxp
YyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENvcHlQYXJzZWRC
bG9ja1RhZyB7IENvcHlQYXJzZWRCbG9jayB9OwogICAgIHByb3RlY3RlZDoKQEAgLTEyMyw3ICsx
MjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHdoaWxlIChyZXN1bHQtPmFsdGVy
bmF0aXZlKCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5hbHRlcm5hdGl2ZSgp
OwogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0
LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNT
RVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAjZW5kaWYKQEAgLTEzNCwxMSArMTMy
LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQgZHVtcFN0YXRpc3Rp
Y3MoKTsKIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFX09QQ09ERV9TQU1QTElORwog
ICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRT
dHJ1Y3R1cmVzKGNvbnN0IEluc3RydWN0aW9uKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRT
dHJ1Y3R1cmUoY29uc3QgY2hhciogbmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qLCBpbnQgb3BlcmFu
ZCkgY29uc3Q7Ci0jZW5kaWYKIAogICAgICAgICBib29sIGlzU3RyaWN0TW9kZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAKQEAgLTE5NCwxNSArMTkwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9kQ2FsbExpbmtJ
bmZvLCB1bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4obV9tZXRo
b2RDYWxsTGlua0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCksIGJ5
dGVjb2RlSW5kZXgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAg
ICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMg
PSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKLSAgICAgICAgICAgIGlmICgh
Y2FsbEluZGljZXMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAg
ICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCwg
dW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNhbGxJ
bmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUo
KSkpLT5ieXRlY29kZU9mZnNldDsKLSAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldChFeGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7
CkBAIC0yMjMsMTEgKzIxMSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAg
ICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwogICAgICAgICB9CisjaWYgRU5B
QkxFKExMSU5UKQorICAgICAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoTExJbnRDYWxsTGlua0lu
Zm8qIGluY29taW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2luY29taW5nTExJbnRDYWxs
cy5wdXNoKGluY29taW5nKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKICAg
ICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5rSW5jb21pbmdDYWxscygpOwotI2VuZGlmCisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKIAotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShERkdf
SklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIHZvaWQgc2V0SklUQ29kZU1hcChQYXNzT3du
UHRyPENvbXBhY3RKSVRDb2RlTWFwPiBqaXRDb2RlTWFwKQogICAgICAgICB7CiAgICAgICAgICAg
ICBtX2ppdENvZGVNYXAgPSBqaXRDb2RlTWFwOwpAQCAtMjM2LDcgKzIzMCw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9qaXRDb2RlTWFwLmdldCgp
OwogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAg
ICAgIHZvaWQgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKCEhbV9kZmdEYXRhKQpAQCAtMzM1LDEyICszMzEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICB1
bnNpZ25lZCBieXRlY29kZU9mZnNldChJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAgICAg
ICAgeworICAgICAgICAgICAgQVNTRVJUKHJldHVybkFkZHJlc3MgPj0gaW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKSAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zKCkuZW5kKCkpOwogICAgICAg
ICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBp
bnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgICB2b2lk
IHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlv
bikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlv
bjsgfQogICAgICAgICBib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbigpIHsgcmV0dXJuIG1f
aXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CkBAIC0zNTQsMTcgKzM0OSw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBtX3Nob3VsZERpc2NhcmRCeXRlY29kZSA9
IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgdm9pZCBoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdP
cHBvcnR1bml0eSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghIWFsdGVybmF0aXZlKCkp
Ci0gICAgICAgICAgICAgICAgZGlzY2FyZEJ5dGVjb2RlKCk7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgZGlzY2FyZEJ5dGVjb2RlTGF0ZXIoKTsKLSAgICAgICAgfQorICAgICAg
ICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgICAgIAot
I2lmbmRlZiBOREVCVUcKICAgICAgICAgYm9vbCB1c2VzT3Bjb2RlKE9wY29kZUlEKTsKLSNlbmRp
ZgogCiAgICAgICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQoKSB7IHJldHVybiBtX2luc3Ry
dWN0aW9uQ291bnQ7IH0KICAgICAgICAgdm9pZCBzZXRJbnN0cnVjdGlvbkNvdW50KHVuc2lnbmVk
IGluc3RydWN0aW9uQ291bnQpIHsgbV9pbnN0cnVjdGlvbkNvdW50ID0gaW5zdHJ1Y3Rpb25Db3Vu
dDsgfQpAQCAtMzg3LDYgKzM3NCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY3V0
YWJsZU1lbW9yeUhhbmRsZSogZXhlY3V0YWJsZU1lbW9yeSgpIHsgcmV0dXJuIGdldEpJVENvZGUo
KS5nZXRFeGVjdXRhYmxlTWVtb3J5KCk7IH0KICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29t
cGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopID0gMDsKICAgICAgICAg
dmlydHVhbCB2b2lkIGpldHRpc29uKCkgPSAwOworICAgICAgICBib29sIGppdENvbXBpbGUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZ2V0SklU
VHlwZSgpICE9IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspIHsKKyAgICAgICAgICAgICAgICBB
U1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBqaXRDb21waWxl
SW1wbChnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAg
ICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpID0gMDsKIAogICAgICAgICBl
bnVtIENvbXBpbGVXaXRoREZHU3RhdGUgewpAQCAtNDA2LDEzICs0MDIsMTMgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgYm9vbCBoYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpCiAgICAgICAg
IHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVK
SVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5
cGUoKSkpOwogICAgICAgICAgICAgYm9vbCByZXN1bHQgPSByZXBsYWNlbWVudCgpLT5nZXRKSVRU
eXBlKCkgPiBnZXRKSVRUeXBlKCk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAgICAg
aWYgKHJlc3VsdCkKICAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKS0+Z2V0SklU
VHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJh
c2VsaW5lSklUKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNv
ZGUocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KHJlcGxhY2VtZW50KCkgPT0gdGhpcyk7CiAgICAgICAgICAgICB9CiAjZW5kaWYKQEAgLTQ3MSwx
OCArNDY3LDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgY2xlYXJFdmFsQ2Fj
aGUoKTsKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgdm9pZCBhZGRQcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9uKHVuc2lnbmVkIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAg
ICAgICAgICAgICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9uKTsKKyAgICAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbnMuYXBwZW5kKHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAg
ICAgIHZvaWQgYWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKHVuc2lnbmVkIGdsb2JhbFJlc29s
dmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2dsb2JhbERhdGEt
PmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
cy5hcHBlbmQoZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKTsKKyAgICAgICAgICAgIG1fZ2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9ucy5hcHBlbmQoZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKTsKICAg
ICAgICAgfQogICAgICAgICBib29sIGhhc0dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbkF0Qnl0ZWNv
ZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOworI2lmIEVOQUJMRShMTElOVCkKKyAg
ICAgICAgTExJbnRDYWxsTGlua0luZm8qIGFkZExMSW50Q2FsbExpbmtJbmZvKCkKKyAgICAgICAg
eworICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3MuYXBwZW5kKExMSW50Q2FsbExpbmtJ
bmZvKCkpOworICAgICAgICAgICAgcmV0dXJuICZtX2xsaW50Q2FsbExpbmtJbmZvcy5sYXN0KCk7
CisgICAgICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgc2V0TnVt
YmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3Moc2l6ZV90IHNpemUpIHsgbV9zdHJ1Y3R1cmVTdHViSW5m
b3MuZ3JvdyhzaXplKTsgfQpAQCAtNDkxLDggKzQ5MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHZvaWQgYWRkR2xvYmFsUmVzb2x2ZUluZm8odW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUlu
c3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9nbG9iYWxEYXRhLT5jYW5V
c2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbmZvcy5hcHBlbmQoR2xv
YmFsUmVzb2x2ZUluZm8oZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKSk7CisgICAgICAgICAgICBt
X2dsb2JhbFJlc29sdmVJbmZvcy5hcHBlbmQoR2xvYmFsUmVzb2x2ZUluZm8oZ2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9uKSk7CiAgICAgICAgIH0KICAgICAgICAgR2xvYmFsUmVzb2x2ZUluZm8mIGds
b2JhbFJlc29sdmVJbmZvKGludCBpbmRleCkgeyByZXR1cm4gbV9nbG9iYWxSZXNvbHZlSW5mb3Nb
aW5kZXhdOyB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluZm9BdEJ5dGVjb2RlT2Zm
c2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTUwMyw2ICs1MDEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICB2b2lkIGFkZE1ldGhvZENhbGxMaW5rSW5mb3ModW5zaWduZWQg
bikgeyBBU1NFUlQobV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSk7IG1fbWV0aG9kQ2FsbExpbmtJ
bmZvcy5ncm93KG4pOyB9CiAgICAgICAgIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9kQ2FsbExp
bmtJbmZvKGludCBpbmRleCkgeyByZXR1cm4gbV9tZXRob2RDYWxsTGlua0luZm9zW2luZGV4XTsg
fQorICAgICAgICBzaXplX3QgbnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKCkgeyByZXR1cm4g
bV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKTsgfQogI2VuZGlmCiAgICAgICAgIAogI2lmIEVO
QUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTU0Myw2ICs1NDIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0XS51Lm9w
Y29kZSkpIC0gMV0udS5wcm9maWxlID09IHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OwogICAgICAgICB9CisgICAgICAgIFByZWRpY3RlZFR5cGUgdmFsdWVQcm9maWxlUHJlZGlj
dGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zm
c2V0KS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgICAgIH0KICAgICAgICAgCiAg
ICAgICAgIHVuc2lnbmVkIHRvdGFsTnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkKICAgICAgICAgewpA
QCAtNTY5LDEyICs1NzIsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBi
b29sIGxpa2VseVRvVGFrZVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgewor
ICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHJhcmVDYXNl
UHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWlu
aW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRy
eUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAg
ICB9CiAgICAgICAgIAogICAgICAgICBib29sIGNvdWxkVGFrZVNsb3dDYXNlKGludCBieXRlY29k
ZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJv
ZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNp
Z25lZCB2YWx1ZSA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zm
c2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49IE9wdGlvbnM6OmNv
dWxkVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUp
IC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6OmNvdWxkVGFrZVNsb3dDYXNlVGhy
ZXNob2xkOwogICAgICAgICB9CkBAIC01OTMsMTIgKzYwMCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlU3BlY2lhbEZhc3RDYXNlKGludCBi
eXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVD
YXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAg
IHJldHVybiBzcGVjaWFsRmFzdENhc2VDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93
Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHNwZWNpYWxGYXN0Q2FzZUNv
dW50KSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93
Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlU
b1Rha2VEZWVwZXN0U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHNsb3dDYXNlQ291bnQgPSByYXJl
Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsK
ICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RD
YXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwog
ICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBzbG93Q2FzZUNvdW50IC0gc3BlY2lhbEZhc3RD
YXNlQ291bnQ7CkBAIC02MDcsNiArNjE4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAog
ICAgICAgICBib29sIGxpa2VseVRvVGFrZUFueVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkK
ICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCBzbG93
Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3Vu
dCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gc2xvd0Nhc2VDb3Vu
dCArIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNzA0LDcgKzcxNyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBhZGRGcmVxdWVudEV4aXRTaXRlKGNvbnN0IERG
Rzo6RnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJU
KGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NF
UlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gbV9leGl0UHJvZmlsZS5hZGQoc2l0ZSk7CiAgICAgICAgIH0KIApAQCAtODA5LDYgKzgy
MiwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZy
b20oQ29kZUJsb2NrKiBhbHRlcm5hdGl2ZSk7CiAgICAgICAgIHZvaWQgY29weVBvc3RQYXJzZURh
dGFGcm9tQWx0ZXJuYXRpdmUoKTsKICAgICAgICAgCisgICAgICAgIC8vIEZ1bmN0aW9ucyBmb3Ig
Y29udHJvbGxpbmcgd2hlbiBKSVR0aW5nIGtpY2tzIGluLCBpbiBhIG1peGVkIG1vZGUKKyAgICAg
ICAgLy8gZXhlY3V0aW9uIHdvcmxkLgorICAgICAgICAKKyAgICAgICAgdm9pZCBkb250SklUQW55
dGltZVNvb24oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIg
PSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0QWZ0ZXJXYXJtVXAoKQorICAgICAg
ICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgdm9pZCBqaXRTb29uKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1
dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50MzJfdCBsbGludEV4ZWN1dGVDb3VudGVyKCkg
Y29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fbGxpbnRFeGVjdXRlQ291bnRl
cjsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9s
bGluZyB3aGVuIHRpZXJlZCBjb21waWxhdGlvbiBraWNrcyBpbi4gVGhpcwogICAgICAgICAvLyBj
b250cm9scyBib3RoIHdoZW4gdGhlIG9wdGltaXppbmcgY29tcGlsZXIgaXMgaW52b2tlZCBhbmQg
d2hlbiBPU1IKICAgICAgICAgLy8gZW50cnkgaGFwcGVucy4gVHdvIHRyaWdnZXJzIGV4aXN0OiB0
aGUgbG9vcCB0cmlnZ2VyIGFuZCB0aGUgcmV0dXJuCkBAIC0xMDAxLDYgKzEwMzcsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3Nob3VsZERpc2NhcmRCeXRlY29kZTsKIAogICAg
IHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFs
RGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xv
dFZpc2l0b3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5
KCk7CiAgICAgICAgIApAQCAtMTAxMyw3ICsxMDUwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgdGFsbHlGcmVxdWVudEV4aXRTaXRlcygpIHsgfQogI2VuZGlmCiAgICAgICAgIAot
I2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKICAgICAgICAg
dm9pZCBkdW1wKEV4ZWNTdGF0ZSosIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0
ZXJhdG9yJiBiZWdpbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImKSBjb25z
dDsKIAogICAgICAgICBDU3RyaW5nIHJlZ2lzdGVyTmFtZShFeGVjU3RhdGUqLCBpbnQgcikgY29u
c3Q7CkBAIC0xMDIzLDcgKzEwNTksNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBw
cmludEdldEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlv
bj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0OwogICAgICAgICB2b2lk
IHByaW50Q2FsbE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9u
Pjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7CiAgICAgICAgIHZvaWQg
cHJpbnRQdXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rp
b24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKLSNlbmRpZgogICAg
ICAgICB2b2lkIHZpc2l0U3RydWN0dXJlcyhTbG90VmlzaXRvciYsIEluc3RydWN0aW9uKiB2UEMp
IGNvbnN0OwogICAgICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTEwODQsOSArMTExOSwx
MSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBtX3Nv
dXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7CiAKLSNpZiBFTkFCTEUoSU5U
RVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2dsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBTZWdtZW50ZWRWZWN0b3I8TExJbnRD
YWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxsTGlua0luZm9zOworICAgICAgICBTZW50aW5lbExp
bmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2Fs
bExpbmtJbmZvPiA+IG1faW5jb21pbmdMTEludENhbGxzOwogI2VuZGlmCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0cnVjdHVyZVN0dWJJbmZv
czsKQEAgLTEwOTcsOSArMTEzNCwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNoZWNrOwogICAgICAgICBTZW50aW5l
bExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0lu
Zm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2VuZGlmCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYg
RU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgT3duUHRyPENvbXBhY3RK
SVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAgICAgIAorI2VuZGlmCisjaWYgRU5BQkxFKERG
R19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbiB7CiAgICAgICAg
ICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigpIHsgfQogICAgICAgICAgICAgCkBAIC0xMTYy
LDEyICsxMjAwLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93blB0cjxDb2RlQmxv
Y2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAgIAorICAgICAgICBpbnQzMl90IG1fbGxpbnRFeGVj
dXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAgICAgIGludDMyX3QgbV9qaXRFeGVjdXRlQ291bnRl
cjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyOwogICAgICAg
ICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFpbENvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9v
cHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9yZW9wdGltaXphdGlv
blJldHJ5Q291bnRlcjsKLQorICAgICAgICAKICAgICAgICAgc3RydWN0IFJhcmVEYXRhIHsKICAg
ICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHB1YmxpYzoKQEAgLTEy
NDEsNiArMTI4MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAg
dmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWlu
Tm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENv
ZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVX
aXRoREZHSW50ZXJuYWwoKTsKICNlbmRpZgpAQCAtMTI3NSw2ICsxMzE2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxl
T3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNH
bG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwog
ICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkdJbnRlcm5hbCgpOwogI2VuZGlm
CkBAIC0xMzEyLDYgKzEzNTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2Nv
cGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmly
dHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5D
b21waWxlV2l0aERGR0ludGVybmFsKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEwNjIxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMjAgKzI3LDQ5IEBACiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5o
IgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpj
b21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVk
QmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyAgICBVTlVTRURfUEFS
QU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRl
eDsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfbWV0
aG9kX2NoZWNrKQorICAgICAgICBpbnN0cnVjdGlvbisrOworCisgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0cnVj
dHVyZSkKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0
dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisgICAgCisgICAgc2l6ZV90IG9mZnNldCA9IHN0
cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBp
ZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0lu
Zm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAgICBy
ZXR1cm4gR2V0QnlJZFN0YXR1cyhTaW1wbGVEaXJlY3QsIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUp
LCBvZmZzZXQsIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisjZW5kaWYKK30KKwog
R2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmls
ZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29k
ZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVO
QUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mU3Ry
dWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2Zp
bGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICAvLyBGaXJzdCBjaGVj
ayBpZiBpdCBtYWtlcyBlaXRoZXIgY2FsbHMsIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBiZSBz
dXBlciBjYXJlZnVsLCBvcgogICAgIC8vIGlmIGl0J3Mgbm90IHNldCBhdCBhbGwsIGluIHdoaWNo
IGNhc2Ugd2UgcHVudC4KICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxl
ZEJsb2NrLT5nZXRTdHViSW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNl
ZW4pCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVy
ZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2Zp
bGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAKICAgICBQb2x5bW9ycGhpY0Fj
Y2Vzc1N0cnVjdHVyZUxpc3QqIGxpc3Q7CiAgICAgaW50IGxpc3RTaXplOwpAQCAtNjAsMTggKzg5
LDE5IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICB9CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgIGlmICghbGlz
dC0+bGlzdFtpXS5pc0RpcmVjdCkKLSAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1h
a2VzQ2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgICAgICByZXR1cm4g
R2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIHRydWUp
OwogICAgIH0KICAgICAKICAgICAvLyBOZXh0IGNoZWNrIGlmIGl0IHRha2VzIHNsb3cgY2FzZSwg
aW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIGtpbmQgb2YgY2FyZWZ1bC4KICAgICBpZiAocHJv
ZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCi0gICAgICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBub3RG
b3VuZCk7CisgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVj
dHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7CiAgICAgCiAgICAgLy8gRmluYWxseSBmaWd1cmUg
b3V0IGlmIHdlIGNhbiBkZXJpdmUgYW4gYWNjZXNzIHN0cmF0ZWd5LgogICAgIEdldEJ5SWRTdGF0
dXMgcmVzdWx0OworICAgIHJlc3VsdC5tX3dhc1NlZW5JbkpJVCA9IHRydWU7CiAgICAgc3dpdGNo
IChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RG
b3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5
dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lk
X3NlbGY6IHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5mby51LmdldEJ5
SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CkBAIC0xMzAsNyArMTYwLDcgQEAgR2V0
QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIAogICAgIHJldHVybiBy
ZXN1bHQ7CiAjZWxzZSAvLyBFTkFCTEUoSklUKQotICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5v
SW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgcmV0dXJuIEdldEJ5
SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7
CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMDYyMTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OSwxMCArNDksMTEgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgR2V0
QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQs
IHNpemVfdCBvZmZzZXQpCisgICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3Ry
dWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQsIGJvb2wgd2FzU2VlbkluSklU
KQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVTZXQoc3Ry
dWN0dXJlU2V0KQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBtX3dhc1Nl
ZW5JbkpJVCh3YXNTZWVuSW5KSVQpCiAgICAgewogICAgICAgICBBU1NFUlQoKHN0YXRlID09IFNp
bXBsZURpcmVjdCkgPT0gKG9mZnNldCAhPSBub3RGb3VuZCkpOwogICAgIH0KQEAgLTcwLDEwICs3
MSwxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBj
b25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsgfQogICAgIHNpemVfdCBvZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAorICAgIGJvb2wgd2FzU2VlbkluSklUKCkgY29u
c3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KKyAgICAKIHByaXZhdGU6CisgICAgc3RhdGlj
IEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBT
dHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CiAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIGJv
b2wgbV93YXNTZWVuSW5KSVQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMDYy
MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBK
U0NlbGw7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOwor
ICAgIHN0cnVjdCBMTEludENhbGxMaW5rSW5mbzsKICAgICBzdHJ1Y3QgVmFsdWVQcm9maWxlOwog
CiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE0Niw2ICsxNDcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAj
ZW5kaWYKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlvbiB7CisgICAgICAgIEluc3RydWN0aW9uKCkK
KyAgICAgICAgeworICAgICAgICAgICAgdS5qc0NlbGwuY2xlYXIoKTsKKyAgICAgICAgfQorICAg
ICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogI2lm
ICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKQEAgLTE4Miw2ICsxODgsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYyBnZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7IH0KICAgICAg
ICAgCisgICAgICAgIEluc3RydWN0aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8p
IHsgdS5jYWxsTGlua0luZm8gPSBjYWxsTGlua0luZm87IH0KKyAgICAgICAgCiAgICAgICAgIElu
c3RydWN0aW9uKFZhbHVlUHJvZmlsZSogcHJvZmlsZSkgeyB1LnByb2ZpbGUgPSBwcm9maWxlOyB9
CiAKICAgICAgICAgdW5pb24gewpAQCAtMTkxLDcgKzE5OSw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3RydWN0dXJlQ2hh
aW47CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxsOwogICAgICAg
ICAgICAgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKKyAgICAgICAgICAg
IExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm87CiAgICAgICAgICAgICBWYWx1ZVByb2Zp
bGUqIHByb2ZpbGU7CisgICAgICAgICAgICB2b2lkKiBwb2ludGVyOwogICAgICAgICB9IHU7CiAg
ICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTExJbnRDYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgTExJbnRDYWxsTGlua0luZm9faAorI2RlZmluZSBMTEludENhbGxMaW5r
SW5mb19oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOworCitzdHJ1Y3QgTExJbnRDYWxsTGlu
a0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+IHsK
KyAgICBMTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgIH0KKyAgICAKKyAgICB+TExJbnRD
YWxsTGlua0luZm8oKQorICAgIHsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAg
ICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIGNh
bGxlZTsgfQorICAgIAorICAgIHZvaWQgdW5saW5rKCkKKyAgICB7CisgICAgICAgIGNhbGxlZS5j
bGVhcigpOworICAgICAgICBtYWNoaW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0
cigpOworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAg
IH0KKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOworICAgIFdyaXRl
QmFycmllcjxKU0Z1bmN0aW9uPiBsYXN0U2VlbkNhbGxlZTsKKyAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgbWFjaGluZUNvZGVUYXJnZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIExMSW50Q2FsbExpbmtJbmZvX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lv
biAxMDYyMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExp
bmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwxMSBAQCBNZXRob2RDYWxs
TGlua1N0YXR1cyBNZXRob2RDYWxsTGlua1N0YXR1CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVk
QmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklU
KSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgLy8gTk9URTogVGhpcyBkb2VzIG5vdCBo
YXZlIGFuIExMSW50IGZhbGwtYmFjayBiZWNhdXNlIExMSW50IGRvZXMgbm90IGRvIGFueSBtZXRo
b2QKKyAgICAvLyBjYWxsIGxpbmsgY2FjaGluZy4KKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51
bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZvcygpKQorICAgICAgICByZXR1cm4gTWV0aG9kQ2FsbExp
bmtTdGF0dXMoKTsKKyAgICAKICAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGwgPSBw
cm9maWxlZEJsb2NrLT5nZXRNZXRob2RDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCk7CiAgICAg
CiAgICAgaWYgKCFtZXRob2RDYWxsLnNlZW4gfHwgIW1ldGhvZENhbGwuY2FjaGVkU3RydWN0dXJl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24g
MTA2MjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1h
Y3JvKG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9i
eV9pZCwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAor
ICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAg
ICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCiAgICAgICAgIG1h
Y3JvKG9wX3B1dF9ieV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9p
ZF9nZW5lcmljLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApAQCAtMjAy
LDYgKzIwNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIGVudW0geyBGT1Jf
RUFDSF9PUENPREVfSUQoT1BDT0RFX0lEX0VOVU0pIH0gT3Bjb2RlSUQ7CiAgICAgI3VuZGVmIE9Q
Q09ERV9JRF9FTlVNCiAKKyAgICBjb25zdCBpbnQgbWF4T3Bjb2RlTGVuZ3RoID0gOTsKICAgICBj
b25zdCBpbnQgbnVtT3Bjb2RlSURzID0gb3BfZW5kICsgMTsKIAogICAgICNkZWZpbmUgT1BDT0RF
X0lEX0xFTkdUSFMoaWQsIGxlbmd0aCkgY29uc3QgaW50IGlkIyNfbGVuZ3RoID0gbGVuZ3RoOwpA
QCAtMjE4LDcgKzIyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGT1JfRUFDSF9PUENP
REVfSUQoVkVSSUZZX09QQ09ERV9JRCk7CiAgICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQKIAot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRF
RF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAjaWYgQ09NUElMRVIoUlZDVCkg
fHwgQ09NUElMRVIoSU5URUwpCiAgICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNw
cAkocmV2aXNpb24gMTA2MjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyNyArMjcsNjkgQEAKICNpbmNs
dWRlICJQdXRCeUlkU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRl
ICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlQ2hhaW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK1B1dEJ5SWRTdGF0dXMg
UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ss
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQoreworICAgIFVOVVNF
RF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7
CisgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4o
KSArIGJ5dGVjb2RlSW5kZXg7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0
aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOworICAgIGlmICghc3RydWN0dXJlKQorICAgICAgICBy
ZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7Cisg
ICAgCisgICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9p
ZCkgeworICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxv
Y2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgICAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5k
KQorICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwg
MCwgbm90Rm91bmQpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2lt
cGxlUmVwbGFjZSwgc3RydWN0dXJlLCAwLCAwLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICBB
U1NFUlQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0CisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxs
aW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgCisgICAgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBpbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdl
dCgpOworICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUpOworICAgIEFTU0VSVChjaGFpbik7CisgICAg
CisgICAgc2l6ZV90IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5n
bG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAg
ICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7
CisgICAgCisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3RydWN0
dXJlLCBuZXdTdHJ1Y3R1cmUsIGNoYWluLCBvZmZzZXQpOworI2Vsc2UKKyAgICByZXR1cm4gUHV0
QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisjZW5kaWYKK30K
KwogUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRl
Y29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYm
IEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9m
U3RydWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHBy
b2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICBpZiAocHJvZmls
ZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCiAgICAgICAgIHJl
dHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKICAg
ICAKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRT
dHViSW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsK
KyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJ
bmRleCwgaWRlbnQpOwogICAgIAogICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewog
ICAgIGNhc2UgYWNjZXNzX3Vuc2V0OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0lu
Zm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJv
bUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAg
ICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6IHsKICAgICAgICAgc2l6ZV90IG9mZnNl
dCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0KApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5o
CShyZXZpc2lvbiAxMDYyMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKICAg
ICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKIHByaXZh
dGU6CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sq
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUg
bV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOwogICAgIFN0cnVjdHVyZSog
bV9uZXdTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTA2MjEzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJCYXRjaGVkVHJh
bnNpdGlvbk9wdGltaXplci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRl
ICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVT
dHJpbmcuaCIKQEAgLTExNiwyNiArMTE3LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGV4cGVj
dGVkIGJ5IHRoZSBjYWxsZWUuCiAqLwogCi0jaWZuZGVmIE5ERUJVRwogc3RhdGljIGJvb2wgc19k
dW1wc0dlbmVyYXRlZENvZGUgPSBmYWxzZTsKLSNlbmRpZgogCiB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUoYm9vbCBkdW1wc0dlbmVyYXRlZENvZGUpCiB7Ci0j
aWZuZGVmIE5ERUJVRwogICAgIHNfZHVtcHNHZW5lcmF0ZWRDb2RlID0gZHVtcHNHZW5lcmF0ZWRD
b2RlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oZHVtcHNHZW5lcmF0ZWRDb2RlKTsKLSNlbmRp
ZgogfQogCiBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKQogewot
I2lmbmRlZiBOREVCVUcKICAgICByZXR1cm4gc19kdW1wc0dlbmVyYXRlZENvZGU7Ci0jZWxzZQot
ICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgogfQogCiBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlKCkKQEAgLTE0OCwxMCArMTM5LDggQEAgSlNPYmplY3QqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZSgpCiAKICAgICBtX2NvZGVCbG9jay0+c2V0SW5zdHJ1Y3Rpb25Db3Vu
dChtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKIAotI2lmbmRlZiBOREVCVUcK
ICAgICBpZiAoc19kdW1wc0dlbmVyYXRlZENvZGUpCiAgICAgICAgIG1fY29kZUJsb2NrLT5kdW1w
KG1fc2NvcGVDaGFpbi0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpOwotI2VuZGlmCiAKICAg
ICBpZiAoKG1fY29kZVR5cGUgPT0gRnVuY3Rpb25Db2RlICYmICFtX2NvZGVCbG9jay0+bmVlZHNG
dWxsU2NvcGVDaGFpbigpICYmICFtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpKSB8fCBtX2Nv
ZGVUeXBlID09IEV2YWxDb2RlKQogICAgICAgICBzeW1ib2xUYWJsZSgpLmNsZWFyKCk7CkBAIC0x
Mjc2LDkgKzEyNjUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29s
CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJ
bmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVU
RVIpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2Zp
bGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2
ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ0MCw5ICsxNDI3LDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgbV9j
b2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAj
ZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKHJlcXVpcmVzRHluYW1p
Y0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpAQCAtMTQ5MCw5ICsxNDc1
LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJM
RShKSVQpCiAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGluc3RydWN0aW9u
cygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2Rl
QmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkp
OwotI2VuZGlmCiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2Rl
KHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9y
ZXNvbHZlX2dsb2JhbCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BEc3QtPmluZGV4
KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChwcm9wZXJ0eSkpOwpA
QCAtMTUxMSw5ICsxNDk0LDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1ldGhvZENo
ZWNrKAogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0
ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkK
IHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2dldF9ieV9pZCk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0xNTM5LDkgKzE1
MjAsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEFyCiAKIFJlZ2lz
dGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBj
b25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0jaWYgRU5B
QkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKIAogICAgIGVtaXRPcGNvZGUo
b3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7
CkBAIC0xNTU3LDkgKzE1MzYsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dFB1dEJ5CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJ
ZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJ
RCogdmFsdWUpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5h
ZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5k
aWYKICAgICAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTg0OCw3ICsxODI1LDExIEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCgKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2Fs
bEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsg
Ly8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKG1fY29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKDApOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFZhbHVl
UHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQp
OwpAQCAtMTk1Miw3ICsxOTMzLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0Q29uc3QKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1
bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
Y2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hZGRM
TEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDAp
OworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlmIChkc3QgIT0g
aWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQ
cm9maWxlZE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMjIxMyw3ICsyMTk4LDExIEBA
IFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gKIHsKICAgICBtX3VzZXNF
eGNlcHRpb25zID0gdHJ1ZTsKICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShMTElOVCkKKyAg
ICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDAp
LCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29w
ZURlcHRoLCBDb2RlTG9jYXRpb25MYWJlbChiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9j
YXRjaCkpIH07CisjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAs
IDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2Nv
cGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKCkgfTsKKyNlbmRp
ZgogI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5k
LT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGgg
KyBtX2Jhc2VTY29wZURlcHRoIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMDYyMTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjA0LDkgKzYwNCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBVTlVTRURf
UEFSQU0obm9kZUluZGV4KTsKICAgICAgICAgCi0gICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIEFTU0VSVChwcm9maWxlKTsKLSAg
ICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKCk7CisgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkK
ICAgICAgICAgcHJpbnRmKCJEeW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwg
bm9kZUluZGV4LCBieXRlY29kZUluZGV4LCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikp
OwogI2VuZGlmCkBAIC0xMDQxLDYgKzEwMzksOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbmxpbmluZyhib29sCiAgICAgCiAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhlbiBpdCBsb29r
cyBsaWtlIHdlIHNob3VsZCBkZWZpbml0ZWx5IGlubGluZSB0aGlzIGNvZGUuIFByb2NlZWQKICAg
ICAvLyB3aXRoIHBhcnNpbmcgdGhlIGNvZGUgdG8gZ2V0IGJ5dGVjb2RlLCBzbyB0aGF0IHdlIGNh
biB0aGVuIHBhcnNlIHRoZSBieXRlY29kZS4KKyAgICAvLyBOb3RlIHRoYXQgaWYgTExJbnQgaXMg
ZW5hYmxlZCwgdGhlIGJ5dGVjb2RlIHdpbGwgYWx3YXlzIGJlIGF2YWlsYWJsZS4gQWxzbyBub3Rl
CisgICAgLy8gdGhhdCBpZiBMTEludCBpcyBlbmFibGVkLCB3ZSBtYXkgaW5saW5lIGEgY29kZSBi
bG9jayB0aGF0IGhhcyBuZXZlciBiZWVuIEpJVHRlZAorICAgIC8vIGJlZm9yZSEKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IG1fY29kZUJsb2NrQ2FjaGUuZ2V0KENvZGVCbG9ja0tleShleGVj
dXRhYmxlLCBraW5kKSwgZXhwZWN0ZWRGdW5jdGlvbi0+c2NvcGUoKSk7CiAgICAgaWYgKCFjb2Rl
QmxvY2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3NDEsNyArMTc0Miw3IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4KTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKG1ldGhvZENhbGxTdGF0dXMuaXNTZXQoKQotICAgICAgICAg
ICAgICAgICYmICFnZXRCeUlkU3RhdHVzLmlzU2V0KCkKKyAgICAgICAgICAgICAgICAmJiAhZ2V0
QnlJZFN0YXR1cy53YXNTZWVuSW5KSVQoKQogICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0
YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNo
ZSkpIHsKICAgICAgICAgICAgICAgICAvLyBJdCdzIG1vbm9tb3JwaGljIGFzIGZhciBhcyB3ZSBj
YW4gdGVsbCwgc2luY2UgdGhlIG1ldGhvZF9jaGVjayB3YXMgbGlua2VkCiAgICAgICAgICAgICAg
ICAgLy8gYnV0IHRoZSBzbG93IHBhdGggKGkuZS4gdGhlIG5vcm1hbCBnZXRfYnlfaWQpIG5ldmVy
IGZpcmVkLgpAQCAtMTgxMCw3ICsxODExLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwog
ICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoK
KyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAg
ICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
KTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1f
aW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5oCShyZXZpc2lvbiAxMDYyMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDggQEAgaW5saW5l
IGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNhc2Ugb3BfcHV0X3Njb3Bl
ZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6Cisg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAg
ICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNp
b24gMTA2MjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwyMSBAQCB2b2lkIGNvbXBpbGVPU1JF
eGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICB1aW50MzJfdCBleGl0SW5kZXggPSBnbG9iYWxEYXRh
LT5vc3JFeGl0SW5kZXg7CiAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jay0+b3NyRXhpdChl
eGl0SW5kZXgpOwogICAgIAorICAgIC8vIE1ha2Ugc3VyZSBhbGwgY29kZSBvbiBvdXIgaW5saW5l
IHN0YWNrIGlzIEpJVCBjb21waWxlZC4gVGhpcyBpcyBuZWNlc3Nhcnkgc2luY2UKKyAgICAvLyB3
ZSBtYXkgb3B0IHRvIGlubGluZSBhIGNvZGUgYmxvY2sgZXZlbiBiZWZvcmUgaXQgaGFkIGV2ZXIg
YmVlbiBjb21waWxlZCBieSB0aGUKKyAgICAvLyBKSVQsIGJ1dCBvdXIgT1NSIGV4aXQgaW5mcmFz
dHJ1Y3R1cmUgY3VycmVudGx5IG9ubHkgd29ya3MgaWYgdGhlIHRhcmdldCBvZiB0aGUKKyAgICAv
LyBPU1IgZXhpdCBpcyBKSVQgY29kZS4gVGhpcyBjb3VsZCBiZSBjaGFuZ2VkIHNpbmNlIHRoZXJl
IGlzIG5vdGhpbmcgcGFydGljdWxhcmx5CisgICAgLy8gaGFyZCBhYm91dCBkb2luZyBhbiBPU1Ig
ZXhpdCBpbnRvIHRoZSBpbnRlcnByZXRlciwgYnV0IGZvciBub3cgdGhpcyBzZWVtcyB0byBtYWtl
CisgICAgLy8gc2Vuc2UgaW4gdGhhdCBpZiB3ZSdyZSBPU1IgZXhpdGluZyBmcm9tIGlubGluZWQg
Y29kZSBvZiBhIERGRyBjb2RlIGJsb2NrLCB0aGVuCisgICAgLy8gcHJvYmFibHkgaXQncyBhIGdv
b2Qgc2lnbiB0aGF0IHRoZSB0aGluZyB3ZSdyZSBleGl0aW5nIGludG8gaXMgaG90LiBFdmVuIG1v
cmUKKyAgICAvLyBpbnRlcmVzdGluZ2x5LCBzaW5jZSB0aGUgY29kZSB3YXMgaW5saW5lZCwgaXQg
bWF5IG5ldmVyIG90aGVyd2lzZSBnZXQgSklUCisgICAgLy8gY29tcGlsZWQgc2luY2UgdGhlIGFj
dCBvZiBpbmxpbmluZyBpdCBtYXkgZW5zdXJlIHRoYXQgaXQgb3RoZXJ3aXNlIG5ldmVyIHJ1bnMu
CisgICAgZm9yIChDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbjsgY29k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNh
bGxGcmFtZS0+Y2FsbGVyKSB7CisgICAgICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKQorICAgICAg
ICAgICAgLT5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+
aXNDYWxsID8gQ29kZUZvckNhbGwgOiBDb2RlRm9yQ29uc3RydWN0KQorICAgICAgICAgICAgLT5q
aXRDb21waWxlKCpnbG9iYWxEYXRhKTsKKyAgICB9CisgICAgCiAgICAgU3BlY3VsYXRpb25SZWNv
dmVyeSogcmVjb3ZlcnkgPSAwOwogICAgIGlmIChleGl0Lm1fcmVjb3ZlcnlJbmRleCkKICAgICAg
ICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5zcGVjdWxhdGlvblJlY292ZXJ5KGV4aXQubV9yZWNv
dmVyeUluZGV4IC0gMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAJKHJldmlzaW9uIDEwNjIxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAi
REZHUmVwYXRjaC5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRl
ICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbmxpbmVBU00uaCIKICNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgpAQCAtNjczLDUwICs2NzQsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVy
YXRpb25Db21wYXJlU3RyCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KCk7Ci1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVX
aXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmds
b2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1ISURFX1NZ
TUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKLSAg
ICAibW92ICVyMTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9O
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BV
KFg4NikKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1C
T0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAo
JWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVzcClcbiIKLSAgICAiam1wICIgU1lN
Qk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRl
KSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20gKAotIi50ZXh0IiAiXG4iCi0i
LmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLSIu
dGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAi
OiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKLSAgICAiY3B5IHIwLCByNSIg
IlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0KLUVuY29kZWRKU1ZhbHVlIERG
R19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRl
KiBleGVjKQotewotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxE
YXRhKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVj
KTsKLSAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5o
b3N0Q2FsbFJldHVyblZhbHVlKTsKLX0KLQogc3RhdGljIHZvaWQqIGhhbmRsZUhvc3RDYWxsKEV4
ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFt
ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDEwNjIx
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04MzcsNyArODM3LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVw
VG9nZwogICAgICAgICBzZXRIaWdoV2F0ZXJNYXJrKG1heChwcm9wb3J0aW9uYWxCeXRlcywgbV9t
aW5CeXRlc1BlckN5Y2xlKSk7CiAgICAgfQogICAgIEpBVkFTQ1JJUFRDT1JFX0dDX0VORCgpOwot
CisgICAgCiAgICAgKCptX2FjdGl2aXR5Q2FsbGJhY2spKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDEwNjIxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNWYWx1ZTsKICAg
ICBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgIGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyOwogICAgIGNsYXNzIFJlZ2lzdGVy
RmlsZTsKICAgICBjbGFzcyBVU3RyaW5nOwpAQCAtMTM1LDExICsxMzYsMTIgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZ2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cyhIYXNoU2V0
PEpTQ2VsbCo+JiByb290cyk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
Q29kZUJsb2NrOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBN
YXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNzIEJ1bXBTcGFjZTsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwotICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwog
CiAgICAgICAgIHNpemVfdCB3YXRlck1hcmsoKTsKICAgICAgICAgc2l6ZV90IGhpZ2hXYXRlck1h
cmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkocmV2
aXNpb24gMTA2MjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbigKICNlbmRpZgogCiAgICAgQVNTRVJUKEhlYXA6OmlzTWFya2Vk
KGNlbGwpKTsKLQorICAgIAogICAgIGlmIChpc0pTU3RyaW5nKGNlbGwpKSB7CiAgICAgICAgIEpT
U3RyaW5nOjp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0b3Ip
OwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlLmgJKHJldmlzaW9uIDEwNjIxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiBjbGFzcyBIZWFwOwogY2xhc3MgSlNDZWxsOwogY2xhc3MgTGl2ZU9iamVjdEl0ZXJh
dG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgV2Vha0dDSGFuZGxlOwog
Y2xhc3MgU2xvdFZpc2l0b3I7CiAKQEAgLTg3LDYgKzg4LDggQEAgcHVibGljOgogICAgIHZvaWQg
ZnJlZUJsb2NrcyhNYXJrZWRCbG9jayogaGVhZCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICB2b2lkKiBhbGxvY2F0ZVNsb3dD
YXNlKFNpemVDbGFzcyYpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlSGVscGVyKE1hcmtlZFNwYWNl
OjpTaXplQ2xhc3MmKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNs
YXNzJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxG
cmFtZS5oCShyZXZpc2lvbiAxMDYyMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsOSBAQCBuYW1l
c3BhY2UgSlNDICB7CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBJbnN0cnVjdGlv
biogcmV0dXJuVlBDKCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBD
XS52UEMoKTsgfQogI2VuZGlmCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBJbnN0cnVjdGlv
biogY3VycmVudFZQQygpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+
KHRoaXNbUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50XS50YWcoKSk7IH0KKyNlbmRpZgogCiAg
ICAgICAgIHZvaWQgc2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSkgeyBzdGF0
aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWVdID0gY2Fs
bGVyRnJhbWU7IH0KICAgICAgICAgdm9pZCBzZXRTY29wZUNoYWluKFNjb3BlQ2hhaW5Ob2RlKiBz
Y29wZUNoYWluKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpT
Y29wZUNoYWluXSA9IHNjb3BlQ2hhaW47IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTA2MjEzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2VuZGlmCiAKLSNk
ZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EIChFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikgJiYgIWRlZmluZWQoX19sbHZtX18pKQorI2RlZmluZSBXVEZf
VVNFX0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQgKChFTkFCTEUoQ09NUFVURURfR09UT19J
TlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkgJiYgIWRlZmluZWQoX19sbHZtX18pKQogCiB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC01NDcsMTcgKzU0Nyw0MyBAQCBJbnRlcnByZXRlcjo6
SW50ZXJwcmV0ZXIoKQogewogfQogCi12b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKGJvb2wg
Y2FuVXNlSklUKQorSW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcigpCiB7Ci0jaWYgRU5BQkxFKENP
TVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2Vu
YWJsZWQpCisgICAgICAgIGRlbGV0ZVtdIG1fb3Bjb2RlVGFibGU7CisjZW5kaWYKK30KKwordm9p
ZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShMTEludDo6RGF0YSogbGxpbnREYXRhLCBib29sIGNh
blVzZUpJVCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGxpbnREYXRhKTsKKyAgICBVTlVTRURfUEFS
QU0oY2FuVXNlSklUKTsKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwg
RU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyAg
ICAvLyBIYXZpbmcgTExJbnQgZW5hYmxlZCwgYnV0IG5vdCBiZWluZyBhYmxlIHRvIHVzZSB0aGUg
SklULCBhbmQgbm90IGhhdmluZworICAgIC8vIGEgY29tcHV0ZWQgZ290byBpbnRlcnByZXRlciwg
aXMgbm90IHN1cHBvcnRlZC4gTm90IGJlY2F1c2Ugd2UgY2Fubm90CisgICAgLy8gc3VwcG9ydCBp
dCwgYnV0IGJlY2F1c2UgSSBkZWNpZGVkIHRvIGRyYXcgdGhlIGxpbmUgYXQgdGhlIG51bWJlciBv
ZgorICAgIC8vIHBlcm11dGF0aW9ucyBvZiBleGVjdXRpb24gZW5naW5lcyB0aGF0IEkgd2FudGVk
IHRoaXMgY29kZSB0byBncm9rLgorICAgIEFTU0VSVChjYW5Vc2VKSVQpOworI2VuZGlmCiAgICAg
aWYgKGNhblVzZUpJVCkgeworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJs
ZSA9IGxsaW50RGF0YS0+b3Bjb2RlTWFwKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtT3Bjb2RlSURzOyArK2kpCisgICAgICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1fb3Bj
b2RlVGFibGVbaV0sIHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7CisjZWxzZQogICAgICAgICAv
LyBJZiB0aGUgSklUIGlzIHByZXNlbnQsIGRvbid0IHVzZSBqdW1wIGRlc3RpbmF0aW9ucyBmb3Ig
b3Bjb2Rlcy4KICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2Rl
SURzOyArK2kpIHsKICAgICAgICAgICAgIE9wY29kZSBvcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaSkpOwogICAgICAgICAgICAgbV9vcGNvZGVUYWJs
ZVtpXSA9IG9wY29kZTsKICAgICAgICAgfQorI2VuZGlmCiAgICAgfSBlbHNlIHsKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgICAgIG1fb3Bjb2RlVGFibGUgPSBuZXcgT3Bjb2RlW251bU9wY29kZUlE
c107CisjZW5kaWYKICAgICAgICAgcHJpdmF0ZUV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVybiwg
MCwgMCk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlE
czsgKytpKQpAQCAtNTY2LDcgKzU5Miw2IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUo
Ym9vbCBjYW5Vc2UKICAgICAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICAgICB9CiAjZWxzZQotICAg
IFVOVVNFRF9QQVJBTShjYW5Vc2VKSVQpOwogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBt
X2VuYWJsZWQgPSB0cnVlOwogI2Vsc2UKQEAgLTY2Nyw5ICs2OTIsMTEgQEAgdm9pZCBJbnRlcnBy
ZXRlcjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbQogCiBib29sIEludGVycHJldGVyOjppc09wY29k
ZShPcGNvZGUgb3Bjb2RlKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQp
CisjaWYgIUVOQUJMRShMTElOVCkKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJu
IG9wY29kZSA+PSAwICYmIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihvcGNvZGUpKSA8PSBvcF9lbmQ7CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2RlICE9IEhh
c2hUcmFpdHM8T3Bjb2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJhaXRzPE9w
Y29kZT46OmlzRGVsZXRlZFZhbHVlKG9wY29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJRFRhYmxl
LmNvbnRhaW5zKG9wY29kZSk7CkBAIC03MjYsMTEgKzc1MywxMSBAQCBORVZFUl9JTkxJTkUgYm9v
bCBJbnRlcnByZXRlcjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAxLgogI2lm
IEVOQUJMRShKSVQpICYmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBpZiAoY2FsbGVyRnJhbWUt
Pmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2Rl
QmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5
dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2Fs
bEZyYW1lLT5yZXR1cm5QQygpKTsKICAgICBlbHNlCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0g
Y29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAj
ZWxpZiBFTkFCTEUoSklUKQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29k
ZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29k
ZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygp
KTsKICNlbHNlCiAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0
KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbmRpZgpAQCAtNTE3MCwxMCArNTE5Nywx
MCBAQCB2b2lkIEludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgICAgIGJ5
dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUt
PnJldHVyblZQQygpKTsKICNpZiBFTkFCTEUoSklUKQogICAgIGVsc2UKLSAgICAgICAgYnl0ZWNv
ZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0
dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRl
Y29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgog
I2Vsc2UKLSAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZz
ZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNv
ZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMo
KSk7CiAjZW5kaWYKICAgICBsaW5lTnVtYmVyID0gY2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVy
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQgLSAxKTsKICAgICBzb3VyY2VJRCA9IGNh
bGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNp
b24gMTA2MjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0NlbGwu
aCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRl
ICJMTEludERhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJSZWdpc3RlckZp
bGUuaCIKIApAQCAtNDUsNiArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5j
dGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBKU0dsb2Jh
bE9iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJv
Z3JhbUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgY2xhc3MgU2NvcGVDaGFp
bk5vZGU7CkBAIC0xMDAsMTkgKzEwMiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEludGVycHJldGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOwogICAgIHB1YmxpYzoKICAgICAgICAgSW50ZXJwcmV0ZXIoKTsKKyAgICAgICAg
fkludGVycHJldGVyKCk7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBj
YW5Vc2VKSVQpOworICAgICAgICB2b2lkIGluaXRpYWxpemUoTExJbnQ6OkRhdGEqLCBib29sIGNh
blVzZUpJVCk7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKSB7IHJldHVy
biBtX3JlZ2lzdGVyRmlsZTsgfQogICAgICAgICAKICAgICAgICAgT3Bjb2RlIGdldE9wY29kZShP
cGNvZGVJRCBpZCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQp
OwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgICAgICByZXR1
cm4gbV9vcGNvZGVUYWJsZVtpZF07CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIGlkOwpAQCAt
MTIyLDcgKzEyNiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bj
b2RlSUQoT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5p
dGlhbGl6ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVO
QUJMRShMTElOVCkKKyAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKKyAgICAg
ICAgICAgIHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CisjZWxpZiBFTkFCTEUo
Q09NUFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShv
cGNvZGUpKTsKICAgICAgICAgICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICAgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2Rl
KSk7CkBAIC0xMzIsNiArMTM5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0
dXJuIG9wY29kZTsKICNlbmRpZgogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGVu
YWJsZWQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9lbmFibGVkOworICAgICAg
ICB9CiAKICAgICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCkBAIC0xOTksNyArMjExLDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSBtX3JlZ2lzdGVyRmls
ZTsKICAgICAgICAgCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYg
RU5BQkxFKExMSU5UKQorICAgICAgICBPcGNvZGUqIG1fb3Bjb2RlVGFibGU7IC8vIE1hcHMgT3Bj
b2RlSUQgPT4gT3Bjb2RlIGZvciBjb21waWxpbmcKKyAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9w
Y29kZUlEPiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBk
ZWNvbXBpbGluZworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAg
ICAgIE9wY29kZSBtX29wY29kZVRhYmxlW251bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQg
PT4gT3Bjb2RlIGZvciBjb21waWxpbmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlE
PiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBp
bGluZwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVn
aXN0ZXJGaWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oCShyZXZpc2lvbiAxMDYyMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYg
KzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsK
ICAgICBjbGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIAogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFJlZ2lzdGVyRmlsZSk7CkBAIC04MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIq
KTsKICAgICAgICAgdm9pZCByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9pZCBh
ZGRUb0NvbW1pdHRlZEJ5dGVDb3VudChsb25nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJu
VmFsdWUuaCIKKworI2lmIENPTVBJTEVSKEdDQykKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgor
I2luY2x1ZGUgIklubGluZUFTTS5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNWYWx1ZUlubGluZU1ldGhvZHMuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5f
VkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0
ZSopOworCisjaWYgQ1BVKFg4Nl82NCkKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAi
XG4iCisgICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKKyAgICAibW92ICVyMTMsICVyZGlcbiIK
KyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKFg4NikKK2FzbSAoCisiLmdsb2Js
ICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJP
TChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKKyAgICAi
bW92ICVlZGksIDQoJWVzcClcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9O
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BV
KEFSTV9USFVNQjIpCithc20gKAorIi50ZXh0IiAiXG4iCisiLmFsaWduIDIiICJcbiIKKyIuZ2xv
YmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lN
Qk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKKyIudGh1bWIiICJcbiIKKyIudGh1bWJf
ZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lN
Qk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJsZHIgcjUs
IFtyNSwgIy00MF0iICJcbiIKKyAgICAiY3B5IHIwLCByNSIgIlxuIgorICAgICJiICIgU1lNQk9M
X1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAi
XG4iCispOworI2VuZGlmCisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JF
VFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFs
RGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIENPTVBJTEVSKEdDQykKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorI2RlZmluZSBIb3N0Q2FsbFJldHVyblZh
bHVlX2gKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworLy8gVW5mb3J0dW5hdGVseSB0
aGlzIG9ubHkgd29ya3Mgb24gR0NDLWxpa2UgY29tcGlsZXJzLiBBbmQgaXQncyBjdXJyZW50bHkg
b25seSB1c2VkCisvLyBieSBMTEludCBhbmQgREZHLCB3aGljaCBhbHNvIGFyZSByZXN0cmljdGVk
IHRvIEdDQy1saWtlIGNvbXBpbGVycy4gV2Ugc2hvdWxkCisvLyBwcm9iYWJseSBmaXggdGhhdCBh
dCBzb21lIHBvaW50LgorI2lmIENPTVBJTEVSKEdDQykKKworI2lmIENBTExJTkdfQ09OVkVOVElP
Tl9JU19TVERDQUxMCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIENERUNM
CisjZWxzZQorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTgorI2VuZGlmCisK
K25hbWVzcGFjZSBKU0MgeworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVU
VVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Cit9CisKKyNlbmRpZiAv
LyBDT01QSUxFUihHQ0MpCisKKyNlbmRpZiAvLyBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTA2MjEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1
LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVf
T1Aob3BfcHJvZmlsZV93aWxsX2NhbGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX25ld19z
Y29wZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfc2NvcGUpCisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAg
ICAgREVGSU5FX09QKG9wX3B1dF9ieV9pbmRleCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9i
eV92YWwpCkBAIC00ODcsNiArNDg5LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nh
c2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Bvc3RfaW5jKQogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2RlYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3ByZV9pbmMpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX3B1dF9ieV92YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZl
X2dsb2JhbCkKQEAgLTUyNiw2ICs1MzAsMTAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xv
d0Nhc2VzKCkKIAogSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bmN0aW9u
RW50cnlBcml0eUNoZWNrKQogeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJp
bnRmKCJDb21waWxpbmcgSklUIGNvZGUhXG4iKTsKKyNlbmRpZgorICAgIAogI2lmIEVOQUJMRShW
QUxVRV9QUk9GSUxFUikKICAgICBtX2NhbkJlT3B0aW1pemVkID0gbV9jb2RlQmxvY2stPmNhbkNv
bXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKQEAgLTY5MCw4ICs2OTgsMTIgQEAgSklUQ29kZSBKSVQ6
OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgogICAgICAgICBpbmZvLmNhbGxSZXR1cm5Mb2Nh
dGlvbiA9IG1fY29kZUJsb2NrLT5zdHJ1Y3R1cmVTdHViSW5mbyhtX21ldGhvZENhbGxDb21waWxh
dGlvbkluZm9baV0ucHJvcGVydHlBY2Nlc3NJbmRleCkuY2FsbFJldHVybkxvY2F0aW9uOwogICAg
IH0KIAotI2lmIEVOQUJMRShERkdfSklUKQotICAgIGlmIChtX2NhbkJlT3B0aW1pemVkKSB7Cisj
aWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKKyAgICBpZiAobV9jYW5CZU9wdGlt
aXplZAorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgfHwgdHJ1ZQorI2VuZGlmCisgICAgICAg
ICkgewogICAgICAgICBDb21wYWN0SklUQ29kZU1hcDo6RW5jb2RlciBqaXRDb2RlTWFwRW5jb2Rl
cjsKICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zm
c2V0IDwgbV9sYWJlbHMuc2l6ZSgpOyArK2J5dGVjb2RlT2Zmc2V0KSB7CiAgICAgICAgICAgICBp
ZiAobV9sYWJlbHNbYnl0ZWNvZGVPZmZzZXRdLmlzU2V0KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVENvZGUuaAkocmV2aXNpb24gMTA2MjEzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIEpJVENvZGUoKSB7IH0KICNlbmRpZgogICAgIHB1YmxpYzoKLSAg
ICAgICAgZW51bSBKSVRUeXBlIHsgSG9zdENhbGxUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9
OworICAgICAgICBlbnVtIEpJVFR5cGUgeyBOb25lLCBIb3N0Q2FsbFRodW5rLCBJbnRlcnByZXRl
clRodW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CiAgICAgICAgIAogICAgICAgICBzdGF0aWMg
SklUVHlwZSBib3R0b21UaWVySklUKCkKICAgICAgICAgewpAQCAtNjYsOCArNjYsMTkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gREZHSklUOwogICAgICAgICB9CiAgICAg
ICAgIAorICAgICAgICBzdGF0aWMgYm9vbCBpc09wdGltaXppbmdKSVQoSklUVHlwZSBqaXRUeXBl
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBERkdKSVQ7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBib29sIGlzQmFzZWxpbmVDb2RlKEpJVFR5
cGUgaml0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gSW50
ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEJhc2VsaW5lSklUOworICAgICAgICB9CisgICAg
ICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIEpJVENvZGUoKQorICAgICAgICAgICAgOiBt
X2ppdFR5cGUoTm9uZSkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTc1LDYgKzg2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICA6IG1fcmVmKHJlZikKICAgICAgICAgICAgICwg
bV9qaXRUeXBlKGppdFR5cGUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChqaXRUeXBl
ICE9IE5vbmUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yICEo
KSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCShyZXZpc2lv
biAxMDYyMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMywxNSArMzMsMjEgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRv
ci5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUg
IkxMSW50RW50cnlwb2ludHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVu
YW1lIENvZGVCbG9ja1R5cGU+CiBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2Nr
LCBKSVRDb2RlJiBqaXRDb2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CisgICAgaWYg
KGppdFR5cGUgPT0gY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpCisgICAgICAgIHJldHVybiB0cnVl
OworICAgIAogICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgCisgICAgY29kZUJsb2NrLT51bmxpbmtJbmNvbWluZ0NhbGxzKCk7CisgICAg
CiAgICAgYm9vbCBkZmdDb21waWxlZCA9IGZhbHNlOwogICAgIGlmIChqaXRUeXBlID09IEpJVENv
ZGU6OkRGR0pJVCkKICAgICAgICAgZGZnQ29tcGlsZWQgPSBERkc6OnRyeUNvbXBpbGUoZ2xvYmFs
RGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsKQEAgLTU1LDEwICs2MSw3IEBAIGlubGlu
ZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2wKICAgICAgICAgfQogICAgICAgICBq
aXRDb2RlID0gSklUOjpjb21waWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCkpOwogICAg
IH0KLSNpZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLSAgICBpZiAoIUJ5dGVjb2RlR2VuZXJh
dG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKLSAgICAgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRl
Y29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwotI2VuZGlmCisgICAgY29kZUJsb2NrLT5oYW5k
bGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAgIGNvZGVCbG9jay0+c2V0SklU
Q29kZShqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CiAgICAgCiAgICAgcmV0dXJu
IHRydWU7CkBAIC02Niw5ICs2OSwxNCBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3By
aWF0ZShKU0dsCiAKIGlubGluZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBjb2Rl
QmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdp
dGhBcml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBKSVRDb2RlOjpK
SVRUeXBlIGppdFR5cGUpCiB7CisgICAgaWYgKGppdFR5cGUgPT0gY29kZUJsb2NrLT5nZXRKSVRU
eXBlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAogICAgIGlmICghZ2xvYmFsRGF0YS5j
YW5Vc2VKSVQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisgICAgY29kZUJsb2NrLT51
bmxpbmtJbmNvbWluZ0NhbGxzKCk7CisgICAgCiAgICAgYm9vbCBkZmdDb21waWxlZCA9IGZhbHNl
OwogICAgIGlmIChqaXRUeXBlID09IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAgZGZnQ29tcGls
ZWQgPSBERkc6OnRyeUNvbXBpbGVGdW5jdGlvbihnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCks
IGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CkBAIC04MywxMSArOTEsNyBAQCBpbmxp
bmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpCiAgICAgICAgIH0KICAgICAgICAg
aml0Q29kZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCAmaml0
Q29kZVdpdGhBcml0eUNoZWNrKTsKICAgICB9Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcp
Ci0gICAgaWYgKCFCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAg
ICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNl
bmRpZgotICAgIAorICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0
dW5pdHkoKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhB
cml0eUNoZWNrKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMTA2MjEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjQsNyArNjQsNyBAQCBFeGNlcHRpb25IYW5kbGVyIGdlbmVyaWNUaHJvdyhKU0dsb2JhbERh
CiAKIEV4Y2VwdGlvbkhhbmRsZXIgaml0VGhyb3coSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBF
eGVjU3RhdGUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSwgUmV0dXJuQWRkcmVz
c1B0ciBmYXVsdExvY2F0aW9uKQogewotICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0
YSwgY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0
ZWNvZGVPZmZzZXQoZmF1bHRMb2NhdGlvbikpOworICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xv
YmFsRGF0YSwgY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2so
KS0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLCBmYXVsdExvY2F0aW9uKSk7CiB9CiAKIH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMDYyMTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ0Niw2ICsxNDQ2LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0
X2J5X2lkXwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkt
PmlzU3RyaWN0TW9kZSgpKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IHN0YWNrRnJhbWUuYXJn
c1swXS5qc1ZhbHVlKCk7CiAgICAgQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKKyAgICAK
ICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5wdXREaXJlY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRh
KCksIGlkZW50LCBzdGFja0ZyYW1lLmFyZ3NbMl0uanNWYWx1ZSgpLCBzbG90KTsKICAgICAKICAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2so
KTsKQEAgLTE5MzEsNyArMTkzMiw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGlt
aXplX2Zyb20KICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gc3RhY2tGcmFtZS5hcmdzWzBd
LmludDMyKCk7CiAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50ZigiRW50
ZXJlZCBvcHRpbWl6ZV9mcm9tX2xvb3Agd2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCByZW9wdGlt
aXphdGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAldVxu
IiwgY29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0
aW9uUmV0cnlDb3VudGVyKCksIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkp
OworICAgIHByaW50ZigiJXA6IEVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0
ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0
aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5qaXRFeGVjdXRl
Q291bnRlcigpLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCksIGNvZGVC
bG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOwogI2VuZGlmCiAKICAgICBpZiAoY29k
ZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpKSB7CkBAIC0yMTg2LDQ1ICsyMTg3LDEz
IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi1pbmxpbmUgQ2FsbEZyYW1lKiBhcml0eUNoZWNrRm9yKENhbGxGcmFtZSog
Y2FsbEZyYW1lLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQotewotICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oY2FsbEZy
YW1lLT5jYWxsZWUoKSk7Ci0gICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwot
ICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdl
bmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOwotICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKLQotICAgIC8v
IFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9m
IHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgotICAgIGlmICghcmVnaXN0ZXJG
aWxlLT5ncm93KGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm51bVBhcmFt
ZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0Nv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKLQotICAgIC8vIFRvbyBmZXcgYXJndW1lbnRzIC0t
IGNvcHkgY2FsbCBmcmFtZSBhbmQgYXJndW1lbnRzLCB0aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1
bWVudHMgd2l0aCB1bmRlZmluZWQuCi0gICAgc2l6ZV90IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKLSAgICBSZWdpc3Rl
ciogc3JjID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKTsKLSAgICBSZWdpc3RlciogZHN0ID0gY2Fs
bEZyYW1lLT5yZWdpc3RlcnMoKSArIGRlbHRhOwotCi0gICAgaW50IGk7Ci0gICAgaW50IGVuZCA9
IC1DYWxsRnJhbWU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7Ci0gICAg
Zm9yIChpID0gLTE7IGkgPj0gZW5kOyAtLWkpCi0gICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKLQot
ICAgIGVuZCAtPSBkZWx0YTsKLSAgICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkpCi0gICAgICAgIGRz
dFtpXSA9IGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENh
bGxGcmFtZTo6Y3JlYXRlKGRzdCk7Ci0gICAgQVNTRVJUKCh2b2lkKiluZXdDYWxsRnJhbWUgPD0g
cmVnaXN0ZXJGaWxlLT5lbmQoKSk7Ci0gICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKLX0KLQogREVG
SU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxfYXJpdHlDaGVjaykKIHsKICAgICBTVFVC
X0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUg
PSBhcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVG
b3JDYWxsKTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6
YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9y
Q2FsbCk7CiAgICAgaWYgKCFuZXdDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2Vw
dGlvbkZyb21PcENhbGw8dm9pZCo+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5f
QUREUkVTUywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUo
KSkpOwogCkBAIC0yMjM3LDcgKzIyMDYsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwg
b3BfY29uc3RydWN0CiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2Fs
bEZyYW1lOwogCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBhcml0eUNoZWNrRm9yKGNh
bGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDb25zdHJ1Y3QpOworICAg
IENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9y
KGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDb25zdHJ1Y3QpOwog
ICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9t
T3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1Ms
IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNp
b24gMTA2MjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiwxMCBAQAogI2lmbmRlZiBKU0ludGVyZmFjZUpJ
VF9oCiAjZGVmaW5lIEpTSW50ZXJmYWNlSklUX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVu
dGlvbnMuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNp
bmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJNYWNy
b0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIExMSW50Q29tbW9uX2gKKyNkZWZpbmUgTExJbnRDb21tb25faAorCisjZGVmaW5lIExM
SU5UX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNkZWZpbmUgTExJTlRfSEVMUEVSX1RSQUNJTkcgMAor
CisjZW5kaWYgLy8gTExJbnRDb21tb25faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2lu
Y2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgor
I2luY2x1ZGUgIk9wY29kZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsK
KworRGF0YTo6RGF0YSgpCisgICAgOiBtX2V4Y2VwdGlvbkluc3RydWN0aW9ucyhuZXcgSW5zdHJ1
Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsgMV0pCisgICAgLCBtX29wY29kZU1hcChuZXcgT3Bjb2Rl
W251bU9wY29kZUlEc10pCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5n
dGggKyAxOyArK2kpCisgICAgICAgIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRl
ciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xp
bmUpOworI2RlZmluZSBPUENPREVfRU5UUlkob3Bjb2RlLCBsZW5ndGgpIG1fb3Bjb2RlTWFwW29w
Y29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF8jI29wY29kZSk7CisgICAgRk9SX0VB
Q0hfT1BDT0RFX0lEKE9QQ09ERV9FTlRSWSk7CisjdW5kZWYgT1BDT0RFX0VOVFJZCit9CisKK0Rh
dGE6On5EYXRhKCkKK3sKKyAgICBkZWxldGVbXSBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAg
ICBkZWxldGVbXSBtX29wY29kZU1hcDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50
CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnREYXRhX2gK
KyNkZWZpbmUgTExJbnREYXRhX2gKKworI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgPHd0
Zi9QbGF0Zm9ybS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOwor
CituYW1lc3BhY2UgTExJbnQgeworCisjaWYgRU5BQkxFKExMSU5UKQorY2xhc3MgRGF0YSB7Citw
dWJsaWM6CisgICAgRGF0YSgpOworICAgIH5EYXRhKCk7CisgICAgCisgICAgSW5zdHJ1Y3Rpb24q
IGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAgeworICAgICAgICByZXR1cm4gbV9leGNlcHRp
b25JbnN0cnVjdGlvbnM7CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX29wY29kZU1hcDsKKyAgICB9Citwcml2YXRlOgorICAgIElu
c3RydWN0aW9uKiBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBPcGNvZGUqIG1fb3Bjb2Rl
TWFwOworfTsKKyNlbHNlIC8vIEVOQUJMRShMTElOVCkKKworI2lmIENPTVBJTEVSKENMQU5HKQor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBp
Z25vcmVkICItV21pc3Npbmctbm9yZXR1cm4iCisjZW5kaWYKKworY2xhc3MgRGF0YSB7CitwdWJs
aWM6CisgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAgeworICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAg
IAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9OworCisjaWYgQ09NUElMRVIoQ0xB
TkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKworI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBM
TEludERhdGFfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRy
eXBvaW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCisKKyNpZiBFTkFCTEUo
TExJTlQpCisKKyNpbmNsdWRlICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgi
CisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVy
LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1bmN0
aW9uRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCwgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0
eUNoZWNrKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBp
ZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6
Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29k
ZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpKSkpOworICAgICAgICAgICAgYXJpdHlDaGVjayA9IE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eV9jaGVjaykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisK
KyAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIGppdENv
ZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVT
ZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lk
Kj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpKSkpOworICAgICAgICBh
cml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKyAgICAKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBq
aXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsRW50
cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgICAgICBh
cml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hl
Y2tUaHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAg
QVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgaml0Q29kZSA9IEpJVENvZGUo
Z2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVy
YXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIGFyaXR5Q2hlY2sgPSBnbG9i
YWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5l
cmF0b3IpLmNvZGUoKTsKK30KKwordm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNh
blVzZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2V2YWxfcHJvbG9ndWUpKSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2Jh
bERhdGEuZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVy
cHJldGVyVGh1bmspOworfQorCit2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEu
Y2FuVXNlSklUKCkpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihN
YWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkp
KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUo
Z2xvYmFsRGF0YS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29k
ZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAor
CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RW50cnlwb2ludHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIExMSW50RW50cnlwb2ludHNfaAorI2RlZmluZSBMTEludEVudHJ5cG9pbnRzX2gKKwor
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVk
ZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
RXZhbENvZGVCbG9jazsKK2NsYXNzIEpJVENvZGU7CitjbGFzcyBKU0dsb2JhbERhdGE7CitjbGFz
cyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI7CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7Citj
bGFzcyBQcm9ncmFtQ29kZUJsb2NrOworCituYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1
bmN0aW9uRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBK
SVRDb2RlJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0eUNoZWNrKTsKK3ZvaWQgZ2V0RXZh
bEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYpOwordm9pZCBnZXRQcm9ncmFtRW50
cnlwb2ludChKU0dsb2JhbERhdGEmLCBKSVRDb2RlJik7CisKK2lubGluZSB2b2lkIGdldEVudHJ5
cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFdmFsQ29kZUJsb2NrKiwgSklUQ29kZSYg
aml0Q29kZSkKK3sKKyAgICBnZXRFdmFsRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsK
K30KKworaW5saW5lIHZvaWQgZ2V0RW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IFByb2dyYW1Db2RlQmxvY2sqLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGdldFByb2dyYW1F
bnRyeXBvaW50KGdsb2JhbERhdGEsIGppdENvZGUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50RW50
cnlwb2ludHNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCisKKyNpZiBFTkFCTEUoTExJTlQp
CisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNs
dWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRl
ICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvd0lu
Q2FsbGVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEg
PSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJp
bnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVz
Y3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coCisgICAgICAgIGdsb2JhbERh
dGEsIGV4ZWMtPmNhbGxlckZyYW1lKCksIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwKKyAgICAgICAg
ZXhlYy0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGV4ZWMtPmNh
bGxlckZyYW1lKCksIGV4ZWMtPnJldHVyblBDKCkpKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVy
blRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVy
biBleGVjLT5nbG9iYWxEYXRhKCkubGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOwor
fQorCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0
aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFs
RGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBl
eGNlcHRpb24gJXMgKHJldHVyblRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRl
c2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMs
IGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJuIGdsb2JhbERhdGEtPmxsaW50RGF0YS5l
eGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKwordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRl
KiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
ID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHBy
aW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChjYWxsVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRh
LT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coZ2xv
YmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9j
aygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAKKyAgICByZXR1cm4gYml0d2lzZV9j
YXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7Cit9CisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RXhjZXB0aW9uc19oCisjZGVmaW5l
IExMSW50RXhjZXB0aW9uc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRl
IDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVzcGFj
ZSBMTEludCB7CisKKy8vIFRocm93IHRoZSBjdXJyZW50bHkgYWN0aXZlIGV4Y2VwdGlvbiBpbiB0
aGUgY29udGV4dCBvZiB0aGUgY2FsbGVyJ3MgY2FsbCBmcmFtZS4KK3ZvaWQgaW50ZXJwcmV0ZXJU
aHJvd0luQ2FsbGVyKEV4ZWNTdGF0ZSopOworCisvLyBUZWxscyB5b3Ugd2hlcmUgdG8ganVtcCB0
byBpZiB5b3Ugd2FudCB0byByZXR1cm4tdG8tdGhyb3csIGFmdGVyIHlvdSd2ZSBhbHJlYWR5Cisv
LyBzZXQgdXAgYWxsIGluZm9ybWF0aW9uIG5lZWRlZCB0byB0aHJvdyB0aGUgZXhjZXB0aW9uLgor
SW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0YXRlKik7
CisKKy8vIFNhdmVzIHRoZSBjdXJyZW50IFBDIGluIHRoZSBnbG9iYWwgZGF0YSBmb3Igc2FmZS1r
ZWVwaW5nLCBhbmQgZ2l2ZXMgeW91IGEgUEMKKy8vIHRoYXQgeW91IGNhbiB0ZWxsIHRoZSBpbnRl
cnByZXRlciB0byBnbyB0bywgd2hpY2ggd2hlbiBhZHZhbmNlZCBiZXR3ZWVuIDEKKy8vIGFuZCA5
IHNsb3RzIHdpbGwgZ2l2ZSB5b3UgYW4gImluc3RydWN0aW9uIiB0aGF0IHRocmVhZHMgdG8gdGhl
IGludGVycHJldGVyJ3MKKy8vIGV4Y2VwdGlvbiBoYW5kbGVyLiBOb3RlIHRoYXQgaWYgeW91IGdp
dmUgaXQgdGhlIFBDIGZvciBleGNlcHRpb24gaGFuZGxpbmcsCisvLyBpdCdzIHNtYXJ0IGVub3Vn
aCB0byBqdXN0IHJldHVybiB0aGF0IFBDIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxzZTsgdGhp
cworLy8gbGV0cyB5b3UgdGhyZWFkIGV4Y2VwdGlvbiBoYW5kbGluZyB0aHJvdWdoIGNvbW1vbiBo
ZWxwZXIgZnVuY3Rpb25zIHVzZWQgYnkKKy8vIG90aGVyIGhlbHBlcnMuCitJbnN0cnVjdGlvbiog
cmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOworCisvLyBVc2UgdGhpcyB3
aGVuIHlvdSdyZSB0aHJvd2luZyB0byBhIGNhbGwgdGh1bmsuCit2b2lkKiBjYWxsVG9UaHJvdyhF
eGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQK
KworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50RXhjZXB0aW9uc19o
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0MzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkxMSW50SGVscGVycy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAi
QXJndW1lbnRzLmgiCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uU2xv
d1BhdGhzLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiSklURHJpdmVyLmgiCisj
aW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKKyNpbmNs
dWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24u
aCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVy
cHJldGVyLmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFt
ZXNwYWNlIExMSW50IHsKKworI2RlZmluZSBMTElOVF9PUChpbmRleCkgKGV4ZWMtPnVuY2hlY2tl
ZFIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisjZGVmaW5lIExMSU5UX09QX0MoaW5kZXgpIChleGVj
LT5yKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9UV08oZmly
c3QsIHNlY29uZCkgZG8geyAgICAgICBcCisgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdm9pZCogYTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdm9pZCogYjsgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICB9IHBhaXI7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICBpbnQ2NF90IGk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIH0gX19ydF91OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmEgPSBmaXJzdDsgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIF9fcnRfdS5wYWlyLmIgPSBzZWNvbmQ7ICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIHJldHVybiBfX3J0X3UuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
fSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5f
VFdPKHBjLCBleGVjKQorCisjZGVmaW5lIExMSU5UX1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYgX190X2ds
b2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7ICAgICAgICBcCisgICAgICAgIF9fdF9nbG9i
YWxEYXRhLmV4Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICBcCisgICAg
ICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAo
VU5MSUtFTFkoZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpIHsgICBcCisgICAgICAgICAg
ICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
fSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfRU5EKCkgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9CUkFOQ0gob3Bjb2RlLCBjb25k
aXRpb24pIGRvIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBib29sIF9fYl9jb25k
aXRpb24gPSAoY29uZGl0aW9uKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBpZiAoX19iX2NvbmRpdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0gcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUp
IC0gMV0udS5vcGVyYW5kOyAgICAgICAgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0g
T1BDT0RFX0xFTkdUSChvcGNvZGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTih2YWx1ZSkg
ZG8geyAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTVmFsdWUgX19yX3JldHVyblZhbHVlID0g
KHZhbHVlKTsgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAg
ICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0gX19yX3JldHVyblZhbHVlOyAgICAgICAg
ICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wY29k
ZSwgdmFsdWUpIGRvIHsgICAgICAgICAgICAgICBcCisgICAgICAgIEpTVmFsdWUgX19ycF9yZXR1
cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgTExJTlRfT1AoMSkgPSBfX3JwX3JldHVyblZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUucHJvZmlsZS0+bV9i
dWNrZXRzWzBdID0gXAorICAgICAgICAgICAgSlNWYWx1ZTo6ZW5jb2RlKF9fcnBfcmV0dXJuVmFs
dWUpOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
KyNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0KSBMTElOVF9SRVRV
Uk5fVFdPKChjYWxsVGFyZ2V0KSwgKGV4ZWMpKQorCisjZGVmaW5lIExMSU5UX0NBTExfVEhST1co
ZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICBcCisgICAgICAg
IEV4ZWNTdGF0ZSogX19jdF9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2N0X3BjID0gKHBjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYgX19jdF9n
bG9iYWxEYXRhID0gKF9fY3RfZXhlYyktPmdsb2JhbERhdGEoKTsgICAgICBcCisgICAgICAgIF9f
Y3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jdF9leGVjLCBjYWxsVG9UaHJv
dyhfX2N0X2V4ZWMsIF9fY3RfcGMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5l
IExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKSBkbyB7ICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jY2VfZXhlYyA9IChleGVjKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2NjZV9w
YyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlm
IChVTkxJS0VMWShfX2NjZV9leGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY2NlX2V4ZWMsIGNhbGxU
b1Rocm93KF9fY2NlX2V4ZWMsIF9fY2NlX3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKwor
I2RlZmluZSBMTElOVF9DQUxMX1JFVFVSTihleGVjLCBwYywgY2FsbFRhcmdldCkgZG8geyAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3JfZXhlYyA9IChleGVjKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiog
X19jcl9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICB2b2lkKiBfX2NyX2NhbGxUYXJnZXQgPSAoY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihfX2NyX2V4
ZWMtPmNhbGxlckZyYW1lKCksIF9fY3JfcGMpOyAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9J
TVBMKF9fY3JfZXhlYywgX19jcl9jYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgXAorICAgIH0g
d2hpbGUgKGZhbHNlKQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2Vf
b3BlcmFuZChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwg
aW50IG9wZXJhbmQpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBv
cCMldTogVHJhY2UoJWQpOiAlZDogJWRcbiIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygp
LAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMg
LSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAg
IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNv
ZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUsCisgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAg
ICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2V4dGVy
biAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUqIGV4ZWMs
IEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCit7CisgICAgSlNW
YWx1ZSB2YWx1ZSA9IExMSU5UX09QX0Mob3BlcmFuZCkuanNWYWx1ZSgpOworICAgIHVuaW9uIHsK
KyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQzMl90IHRhZzsKKyAgICAgICAgICAg
IHVpbnQzMl90IHBheWxvYWQ7CisgICAgICAgIH0gYml0czsKKyAgICAgICAgRW5jb2RlZEpTVmFs
dWUgYXNWYWx1ZTsKKyAgICB9IHU7CisgICAgdS5hc1ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZh
bHVlKTsKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFj
ZSglZCk6ICVkOiAlZDogJTA4eDolMDh4IiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCks
CisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAt
IGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29k
ZSksCisgICAgICAgICAgIGZyb21XaGVyZSwKKyAgICAgICAgICAgb3BlcmFuZCwKKyAgICAgICAg
ICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kLAorICAgICAgICAgICB1LmJpdHMudGFnLAorICAgICAg
ICAgICB1LmJpdHMucGF5bG9hZCk7CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50ZigiOiAlcyIs
IHZhbHVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgcHJpbnRmKCJcbiIpOworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZSkKK3sKKyAg
ICBwcmludGYoIiVwIC8gJXA6IGluIHByb2xvZ3VlLlxuIiwgZXhlYy0+Y29kZUJsb2NrKCksIGV4
ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitzdGF0aWMgdm9pZCB0cmFjZUZ1bmN0aW9uUHJv
bG9ndWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBjb21tZW50LCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihl
eGVjLT5jYWxsZWUoKSk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2Fs
bGVlLT5qc0V4ZWN1dGFibGUoKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9ICZleGVjdXRh
YmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICBwcmludGYoIiVwIC8gJXA6IGlu
ICVzIG9mIGZ1bmN0aW9uICVwLCBleGVjdXRhYmxlICVwOyBudW1WYXJzID0gJXUsIG51bVBhcmFt
ZXRlcnMgPSAldSwgbnVtQ2FsbGVlUmVnaXN0ZXJzID0gJXUuXG4iLAorICAgICAgICAgICBjb2Rl
QmxvY2ssIGV4ZWMsIGNvbW1lbnQsIGNhbGxlZSwgZXhlY3V0YWJsZSwKKyAgICAgICAgICAgY29k
ZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBjb2RlQmxvY2st
Pm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJv
bG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4
ZWMsICJjYWxsIHByb2xvZ3VlIiwgQ29kZUZvckNhbGwpOworICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0
KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IHByb2xvZ3Vl
IiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCit7CisgICAgdHJhY2VGdW5jdGlvblBy
b2xvZ3VlKGV4ZWMsICJjYWxsIGFyaXR5IGNoZWNrIiwgQ29kZUZvckNhbGwpOworICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25z
dHJ1Y3QpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjb25zdHJ1Y3QgYXJp
dHkgY2hlY2siLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0wodHJhY2UpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcg
YmMjJXp1LCAiLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhl
YywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2Nr
KCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgcHJpbnRm
KCIlcywgIiwgb3Bjb2RlTmFtZXNbZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRP
cGNvZGVJRChwY1swXS51Lm9wY29kZSldKTsKKyNlbHNlCisgICAgcHJpbnRmKCJvcCMldSwgIiwg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29k
ZSkpOworI2VuZGlmCisgICAgcHJpbnRmKCJzY29wZSAlcFxuIiwgZXhlYy0+c2NvcGVDaGFpbigp
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woc3BlY2lhbF90cmFj
ZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBzcGVjaWFsIGNhc2UgYmMjJXp1
LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2so
KSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBj
IC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAg
ICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bj
b2RlKSwKKyAgICAgICAgICAgZXhlYy0+cmV0dXJuUEMoKS52YWx1ZSgpKTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworaW5saW5lIGJvb2wgc2hvdWxkSklUKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICAvLyBZb3UgY2FuIG1vZGlmeSB0aGlzIHRvIHR1cm4gb2ZmIEpJVHRpbmcgd2l0aG91dCByZWJ1
aWxkaW5nIHRoZSB3b3JsZC4KKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJ
VCgpOworfQorCitlbnVtIEVudHJ5S2luZCB7IFByb2xvZ3VlLCBBcml0eUNoZWNrIH07CitzdGF0
aWMgSGVscGVyUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9u
KiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUsIEVudHJ5S2luZCBr
aW5kKQoreworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50
ZXJlZCAlcyB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywgbmFtZSwgY29k
ZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKCFz
aG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24o
KTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgaWYgKCFj
b2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShK
SVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50ZigiICAgIENvZGUgd2FzIGFscmVhZHkgY29t
cGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAg
ICBpZiAoa2luZCA9PSBQcm9sb2d1ZSkKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxv
Y2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KDApLCBleGVjKTsKKyAg
ICBBU1NFUlQoa2luZCA9PSBBcml0eUNoZWNrKTsKKyAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVC
bG9jay0+Z2V0SklUQ29kZVdpdGhBcml0eUNoZWNrKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZXhl
Yyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcikKK3sKKyAgICByZXR1cm4gZW50
cnlPU1IoZXhlYywgcGMsIGV4ZWMtPmNvZGVCbG9jaygpLCAiZW50cnlfb3NyIiwgUHJvbG9ndWUp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwpCit7
CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUo
KSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ2FsbCksICJl
bnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQoreworICAgIHJldHVybiBl
bnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFi
bGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNvbnN0cnVjdCksICJlbnRyeV9vc3Jf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAgcmV0dXJu
IGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0
YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ2FsbCksICJlbnRyeV9vc3JfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrKQorewor
ICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkp
LT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNvbnN0cnVjdCks
ICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrIiwgQXJpdHlDaGVj
ayk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3NyKQoreworICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgCisjaWYgRU5BQkxFKEpJVF9WRVJC
T1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkIGxvb3Bfb3NyIHdpdGggZXhlY3V0ZUNv
dW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIo
KSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoIXNob3VsZEpJVChleGVjKSkgeworICAgICAgICBj
b2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdP
KDAsIGV4ZWMpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNvZGVCbG9jay0+aml0Q29tcGlsZShl
eGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICAg
ICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlmCisg
ICAgfQorICAgIGNvZGVCbG9jay0+aml0U29vbigpOworICAgIAorICAgIEFTU0VSVChjb2RlQmxv
Y2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgCisgICAgVmVj
dG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gbWFwOworICAgIGNvZGVCbG9jay0+aml0Q29k
ZU1hcCgpLT5kZWNvZGUobWFwKTsKKyAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBp
bmcgPSBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25lZCwgQnl0
ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29kZUluZGV4PihtYXAuYmVnaW4oKSwgbWFw
LnNpemUoKSwgcGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIEFT
U0VSVChtYXBwaW5nKTsKKyAgICBBU1NFUlQobWFwcGluZy0+bV9ieXRlY29kZUluZGV4ID09IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihwYyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4o
KSkpOworICAgIAorICAgIHZvaWQqIGp1bXBUYXJnZXQgPSBjb2RlQmxvY2stPmdldEpJVENvZGUo
KS5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KG1hcHBpbmctPm1fbWFjaGluZUNvZGVPZmZzZXQp
OworICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk5fVFdPKGp1
bXBUYXJnZXQsIGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKQoreworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgCisjaWYgRU5B
QkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkIHJlcGxhY2Ugd2l0
aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+bGxpbnRFeGVj
dXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmIChzaG91bGRKSVQoZXhlYykpIHsK
KyAgICAgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkg
eworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgICAgICBwcmludGYoIiAgICBD
b2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICAgICAgfQorICAgICAg
ICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29kZUJsb2NrLT5k
b250SklUQW55dGltZVNvb24oKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjaykKK3sKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORwor
ICAgIHByaW50ZigiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0IHdpdGggZXhlYyA9ICVwLlxuIiwgZXhl
Yyk7CisgICAgcHJpbnRmKCJDb2RlQmxvY2sgPSAlcC5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpKTsK
KyAgICBwcmludGYoIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxv
Y2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgIHByaW50ZigiTnVtIHZhcnMgPSAldS5c
biIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bVZhcnMpOworICAgIHByaW50ZigiQ3VycmVudCBl
bmQgaXMgYXQgJXAuXG4iLCBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVy
RmlsZSgpLmVuZCgpKTsKKyNlbmRpZgorICAgIEFTU0VSVCgmZXhlYy0+cmVnaXN0ZXJzKClbZXhl
Yy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSA+IGV4ZWMtPmdsb2JhbERhdGEo
KS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOworICAgIGlmIChVTkxJS0VMWSgh
ZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5ncm93KCZleGVj
LT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnNdKSkp
IHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmds
b2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Cisg
ICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAgcGMgPSByZXR1
cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9FTkRf
SU1QTCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNrKQor
eworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zv
cihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwg
Q29kZUZvckNhbGwpOworICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBleGVjID0gZXhlYy0+
Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0ZXJUaHJvd0lu
Q2FsbGVyKGV4ZWMpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSksIGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9S
RVRVUk5fVFdPKDAsIG5ld0V4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29u
c3RydWN0X2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xv
d1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0
ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBpZiAoIW5ld0V4ZWMp
IHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmds
b2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7Cisg
ICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAgTExJTlRfUkVU
VVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBl
eGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQoreworI2lmIExMSU5UX0hF
TFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGluZyBhbiBhY3RpdmF0aW9uLCBleGVjID0g
JXAhXG4iLCBleGVjKTsKKyNlbmRpZgorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpT
QWN0aXZhdGlvbjo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYywgc3RhdGljX2Nhc3Q8
RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlYy0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgp
KSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goYWN0
aXZhdGlvbikpOworICAgIExMSU5UX1JFVFVSTihKU1ZhbHVlKGFjdGl2YXRpb24pKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCit7CisgICAgSlNWYWx1
ZSBhcmd1bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGV4ZWMtPnVuY2hl
Y2tlZFIocGNbMV0udS5vcGVyYW5kKSA9IGFyZ3VtZW50czsKKyAgICBleGVjLT51bmNoZWNrZWRS
KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50
czsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0
ZV90aGlzKQoreworICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0gYXNGdW5jdGlvbihleGVj
LT5jYWxsZWUoKSk7CisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIENvbnN0cnVjdERh
dGEgY29uc3RydWN0RGF0YTsKKyAgICBBU1NFUlQoY29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKCkt
PmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVj
dFR5cGVKUyk7CisjZW5kaWYKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBK
U1ZhbHVlIHByb3RvID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmIChwcm90by5pc09i
amVjdCgpKQorICAgICAgICBzdHJ1Y3R1cmUgPSBhc09iamVjdChwcm90byktPmluaGVyaXRvcklE
KGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgZWxzZQorICAgICAgICBzdHJ1Y3R1cmUgPSBjb25z
dHJ1Y3Rvci0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpOwor
ICAgIAorICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1
cmUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcykKK3sKKyAg
ICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIEFTU0VSVCh2MS5pc1By
aW1pdGl2ZSgpKTsKKyAgICBMTElOVF9SRVRVUk4odjEudG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpCit7CisgICAgTExJTlRfUkVU
VVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25ld19hcnJheSkKK3sKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhl
YywgYml0d2lzZV9jYXN0PEpTVmFsdWUqPigmTExJTlRfT1AoMikpLCBwY1szXS51Lm9wZXJhbmQp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5j
b25zdGFudEJ1ZmZlcihwY1syXS51Lm9wZXJhbmQpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdleHApCit7CisgICAgUmVnRXhwKiByZWdF
eHAgPSBleGVjLT5jb2RlQmxvY2soKS0+cmVnZXhwKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYg
KCFyZWdFeHAtPmlzVmFsaWQoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlU3ludGF4RXJy
b3IoZXhlYywgIkludmFsaWQgZmxhZyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikp
OworICAgIExMSU5UX1JFVFVSTihSZWdFeHBPYmplY3Q6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9ub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9lcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4
ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSkKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKCFKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OnN0cmlj
dEVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3RlcSkKK3sKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xl
YW4oanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3NlcSkK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0
ZXJlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPGZhbHNlPihleGVj
LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKQoreworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKyAxKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKQoreworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYykKK3sKKyAgICBkb3VibGUgcmVz
dWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09Q
KDIpID0ganNOdW1iZXIocmVzdWx0ICsgMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJl
c3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9kZWMpCit7CisgICAg
ZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAg
ICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCAtIDEpOworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVt
YmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRl
KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcigtTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2FkZCkKK3sK
KyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2
MiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFD
SU5HCisgICAgcHJpbnRmKCJUcnlpbmcgdG8gYWRkICVzIiwgdjEuZGVzY3JpcHRpb24oKSk7Cisg
ICAgcHJpbnRmKCIgdG8gJXMuXG4iLCB2Mi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIAor
ICAgIGlmICh2MS5pc1N0cmluZygpICYmICF2Mi5pc09iamVjdCgpKQorICAgICAgICBMTElOVF9S
RVRVUk4oanNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEpLCB2Mi50b1N0cmluZyhleGVjKSkpOwor
ICAgIAorICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCisgICAgICAgIExM
SU5UX1JFVFVSTihqc051bWJlcih2MS5hc051bWJlcigpICsgdjIuYXNOdW1iZXIoKSkpOworICAg
IAorICAgIExMSU5UX1JFVFVSTihqc0FkZFNsb3dDYXNlKGV4ZWMsIHYxLCB2MikpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAqIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9zdWIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhl
YykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RpdikKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLyBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbW9kKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihmbW9kKExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKS50b051bWJlcihleGVjKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xz
aGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9JbnQzMihleGVjKSA8PCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVj
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KQoreworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpID4+
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSA+PiBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Yml0YW5kKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKS50b0ludDMyKGV4ZWMpICYgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVj
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3IpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgfCBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9iaXR4b3IpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgXiBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3Qp
Cit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKH5MTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50
b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNf
aW5zdGFuY2UpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFsID0gTExJTlRfT1BfQygxKS5qc1ZhbHVl
KCk7CisjaWZuZGVmIE5ERUJVRworICAgIFR5cGVJbmZvIHR5cGVJbmZvKFVuc3BlY2lmaWVkVHlw
ZSk7CisgICAgQVNTRVJUKCFiYXNlVmFsLmlzT2JqZWN0KCkKKyAgICAgICAgICAgfHwgISh0eXBl
SW5mbyA9IGFzT2JqZWN0KGJhc2VWYWwpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKSkuaW1wbGVt
ZW50c0hhc0luc3RhbmNlKCkpOworI2VuZGlmCisgICAgTExJTlRfVEhST1coY3JlYXRlSW52YWxp
ZFBhcmFtRXJyb3IoZXhlYywgImluc3RhbmNlb2YiLCBiYXNlVmFsKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9mKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xl
YW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluc3RhbmNlT2ZTbG93KGV4ZWMsIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQyg0KS5qc1ZhbHVl
KCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRlZmluZWQpCit7Cisg
ICAgSlNWYWx1ZSB2ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbih2LmlzQ2VsbCgpID8gdi5hc0NlbGwoKS0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpIDogdi5pc1VuZGVmaW5lZCgpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKQoreworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkuaXNCb29sZWFuKCkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLmlzTnVtYmVyKCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKGlzSlNTdHJpbmcoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihqc0lzT2JqZWN0VHlwZShMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oanNJc0Z1bmN0aW9uVHlwZShMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xl
YW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmUpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmUsIENvbW1v
blNsb3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVy
KHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmVfc2tpcCkKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQoCisgICAgICAgIG9wX3Jlc29s
dmVfc2tpcCwKKyAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVTa2lwKAorICAgICAg
ICAgICAgZXhlYywKKyAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBj
WzJdLnUub3BlcmFuZCksCisgICAgICAgICAgICBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworc3Rh
dGljIEpTVmFsdWUgcmVzb2x2ZUdsb2JhbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBw
YykKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgp
OworICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkpOworICAgIGludCBw
cm9wZXJ0eSA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHBj
WzNdLnUuc3RydWN0dXJlLmdldCgpOworICAgIAorICAgIEFTU0VSVF9VTlVTRUQoc3RydWN0dXJl
LCBzdHJ1Y3R1cmUgIT0gZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgCisgICAgSWRl
bnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpOworICAgIFBy
b3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCk7CisgICAgCisgICAgaWYgKGdsb2JhbE9iamVj
dC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkgeworICAgICAgICBKU1ZhbHVl
IHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpOworICAgICAgICBpZiAoc2xvdC5p
c0NhY2hlYWJsZVZhbHVlKCkgJiYgIWdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNo
ZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBnbG9i
YWxPYmplY3QpIHsKKyAgICAgICAgICAgIHBjWzNdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAg
ICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCks
IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgcGNbNF0gPSBzbG90LmNh
Y2hlZE9mZnNldCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0KKyAgICAKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRl
VW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCk7CisgICAgcmV0dXJuIEpTVmFsdWUo
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQoreworICAg
IExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbCwgcmVzb2x2ZUdsb2JhbChl
eGVjLCBwYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWxf
ZHluYW1pYykKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWxf
ZHluYW1pYywgcmVzb2x2ZUdsb2JhbChleGVjLCBwYykpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKK3sKKyAgICBMTElO
VF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYywgQ29tbW9uU2xvd1Bh
dGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0u
dS5vcGVyYW5kKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9iYXNl
KQoreworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZp
ZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAocGNbM10udS5vcGVyYW5kKSB7CisgICAgICAg
IEpTVmFsdWUgYmFzZSA9IEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3Bl
Q2hhaW4oKSwgdHJ1ZSk7CisgICAgICAgIGlmICghYmFzZSkKKyAgICAgICAgICAgIExMSU5UX1RI
Uk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0
cmluZygpKSk7CisgICAgICAgIExMSU5UX1JFVFVSTihiYXNlKTsKKyAgICB9CisgICAgCisgICAg
TExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfYmFzZSwgSlNDOjpyZXNvbHZlQmFzZShl
eGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKK3sKKyAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChvYmplY3QpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2Nr
KCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIW9iamVjdC0+Z2V0UHJv
cGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRl
RXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVf
d2l0aF9iYXNlKQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjpvcFJl
c29sdmVXaXRoQmFzZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51
Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgLy8gRklYTUU6IHRlY2huaWNhbGx5IHNob3Vs
ZCBoYXZlIHByb2ZpbGluZywgYnV0IHdlIGRvbid0IGRvIGl0IGJlY2F1c2UgdGhlIERGRyB3b24n
dCB1c2UgaXQuCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9yZXNvbHZlX3dpdGhfdGhpcykKK3sKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQ
YXRoczo6b3BSZXNvbHZlV2l0aFRoaXMoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZp
ZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0OworICAgIC8vIEZJWE1FOiB0ZWNobmlj
YWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcsIGJ1dCB3ZSBkb24ndCBkbyBpdCBiZWNhdXNlIHRo
ZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZ2V0X2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50
aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDEpID0gcmVzdWx0OworCisg
ICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkK
KyAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAmJiBzbG90
LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAgICAgICAg
CisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAK
KyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAg
ICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5n
KCkpIHsKKyAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAg
ICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVj
dHVyZSk7CisgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgp
ICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHBjW09QQ09E
RV9MRU5HVEgob3BfZ2V0X2J5X2lkKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKK3sKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29k
ZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZh
bHVlKTsKKyAgICBMTElOVF9SRVRVUk4oYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKQoreworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRl
bnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICAKKyAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIFB1dFByb3Bl
cnR5U2xvdCBzbG90KGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgIGlmIChwY1s4XS51
Lm9wZXJhbmQpCisgICAgICAgIGFzT2JqZWN0KGJhc2VWYWx1ZSktPnB1dERpcmVjdChleGVjLT5n
bG9iYWxEYXRhKCksIGlkZW50LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAg
ZWxzZQorICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50LCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAg
aWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsK
KyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7
CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOwor
ICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5
KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVy
dHlDYWNoaW5nKCkKKyAgICAgICAgICAgICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNs
b3Q6Ok5ld1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGlj
dGlvbmFyeSgpICYmIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBh
Y2l0eSgpID09IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkgeworICAgICAg
ICAgICAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWUgb2YgdGhlIG1ldGhv
ZHMgd2UgY2FsbAorICAgICAgICAgICAgICAgICAgICAvLyBiZWxvdyBtYXkgR0MuCisgICAgICAg
ICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
b3BfcHV0X2J5X2lkKTsKKworICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVD
aGFpbihleGVjLCBiYXNlQ2VsbCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOworICAg
ICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCks
IHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5v
cGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1
Y3R1cmUpOworICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBzdHJ1
Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
Y2hhaW4pOworICAgICAgICAgICAgICAgICAgICBwY1s3XS51LnN0cnVjdHVyZUNoYWluLnNldCgK
KyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIHBj
WzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNW
YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKGZh
bHNlICYmICFzdHJjbXAoaWRlbnQuYXNjaWkoKS5kYXRhKCksICJyZW5kZXJSZWZsZWN0aW9ucyIp
KQorICAgICAgICBwcmludGYoIkZpbmlzaGluZyBhY2Nlc3MgdG8gcmVuZGVyUmVmbGVjdGlvbnMg
ZnJvbSBMTEludCBzbG93IHBhdGguXG4iKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0g
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7CisgICAgYm9vbCBjb3VsZERl
bGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmpl
Y3QsIGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpKTsKKyAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKK3sKKyAg
ICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkp
IHsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0
R2V0T3duUHJvcGVydHkoZXhlYywgYXNTdHJpbmcoc3Vic2NyaXB0KS0+dmFsdWUoZXhlYykpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgaWYgKHN1YnNjcmlw
dC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIo
KTsKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFs
dWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc1N0cmluZyhiYXNlVmFs
dWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0pTQnl0ZUFy
cmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgo
aSkpCisgICAgICAgICAgICByZXR1cm4gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5kZXgo
ZXhlYywgaSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBp
KTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZhbHVlLmdldChl
eGVjLCBwcm9wZXJ0eSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFs
KQoreworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9nZXRfYnlfdmFsLCBnZXRCeVZhbChl
eGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpCit7Cisg
ICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFh
cmd1bWVudHMpIHsKKyAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBleGVjKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgICAgIExMSU5UX09QKDIpID0gYXJndW1lbnRzOworICAgICAgICBleGVjLT51bmNoZWNrZWRS
KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50
czsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIGFyZ3VtZW50
cywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2dldF9ieV9wbmFtZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJ
TlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpCit7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCk7CisgICAgCisgICAgaWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsK
KyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAo
aXNKU0FycmF5KGJhc2VWYWx1ZSkpIHsKKyAgICAgICAgICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBh
c0FycmF5KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAoanNBcnJheS0+Y2FuU2V0SW5kZXgo
aSkpCisgICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgoZ2xvYmFsRGF0YSwgaSwgdmFs
dWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5k
ZXgoanNBcnJheSwgZXhlYywgaSwgdmFsdWUpOworICAgICAgICAgICAgTExJTlRfRU5EKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKQorICAgICAgICAg
ICAgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAgICAg
ICAgICAgIEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7
CisgICAgICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAganNC
eXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzSW50MzIoKSk7CisgICAgICAgICAgICAgICAg
TExJTlRfRU5EKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodmFsdWUuaXNOdW1i
ZXIoKSkgeworICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5h
c051bWJlcigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGksIHZhbHVlKTsKKyAgICAg
ICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhl
Yywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoZXhlYy0+Y29kZUJsb2Nr
KCktPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIHByb3BlcnR5LCB2
YWx1ZSwgc2xvdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9kZWxfYnlfdmFsKQoreworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUudG9PYmpl
Y3QoZXhlYyk7CisgICAgCisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKTsKKyAgICAKKyAgICBib29sIGNvdWxkRGVsZXRlOworICAgIAorICAgIHVpbnQzMl90
IGk7CisgICAgaWYgKHN1YnNjcmlwdC5nZXRVSW50MzIoaSkpCisgICAgICAgIGNvdWxkRGVsZXRl
ID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KGJhc2VP
YmplY3QsIGV4ZWMsIGkpOworICAgIGVsc2UgeworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7
CisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRl
UHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgcHJvcGVydHkpOworICAgIH0KKyAgICAKKyAgICBp
ZiAoIWNvdWxkRGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAg
ICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRl
IHByb3BlcnR5LiIpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVs
ZXRlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpCit7Cisg
ICAgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkucHV0KGV4ZWMsIHBjWzJdLnUub3BlcmFuZCwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcHV0X2dldHRlcikKK3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNW
YWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJ
TlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVC
bG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09Q
KDMpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5k
ZWZpbmVHZXR0ZXIoYmFzZU9iaiwgZXhlYywgaWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpz
VmFsdWUoKSksIDApOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcHV0X3NldHRlcikKK3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlz
T2JqZWN0KCkpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSku
anNWYWx1ZSgpKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5p
ZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgQVNTRVJUKExMSU5UX09QKDMpLmpzVmFs
dWUoKS5pc09iamVjdCgpKTsKKyAgICBiYXNlT2JqLT5tZXRob2RUYWJsZSgpLT5kZWZpbmVTZXR0
ZXIoYmFzZU9iaiwgZXhlYywgaWRlbnQsIGFzT2JqZWN0KExMSU5UX09QKDMpLmpzVmFsdWUoKSks
IDApOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam1w
X3Njb3BlcykKK3sKKyAgICB1bnNpZ25lZCBjb3VudCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBT
Y29wZUNoYWluTm9kZSogdG1wID0gZXhlYy0+c2NvcGVDaGFpbigpOworICAgIHdoaWxlIChjb3Vu
dC0tKQorICAgICAgICB0bXAgPSB0bXAtPnBvcCgpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4o
dG1wKTsKKyAgICBwYyArPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qdHJ1ZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bf
anRydWUsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pm
YWxzZSwgIUxMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcykKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxl
c3MsIGpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcykK
K3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzLCAhanNMZXNzPHRydWU+KGV4ZWMsIExMSU5U
X09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXIpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pn
cmVhdGVyLCBqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5n
cmVhdGVyKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmdyZWF0ZXIsICFqc0xlc3M8ZmFsc2U+
KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3NlcSkKK3sKKyAgICBMTElOVF9C
UkFOQ0gob3Bfamxlc3NlcSwganNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbmxlc3NlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzZXEsICFqc0xl
c3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEpCit7
CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVhdGVyZXEsIGpzTGVzc0VxPGZhbHNlPihleGVjLCBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5D
SChvcF9qbmdyZWF0ZXJlcSwgIWpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3N3aXRjaF9pbW0pCit7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoc2NydXRpbmVlLmlzRG91YmxlKCkpOworICAg
IGRvdWJsZSB2YWx1ZSA9IHNjcnV0aW5lZS5hc0RvdWJsZSgpOworICAgIGludDMyX3QgaW50VmFs
dWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQg
PSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKHZhbHVlID09IGludFZhbHVlKSB7CisgICAgICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9
IGNvZGVCbG9jay0+aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zm
c2V0Rm9yVmFsdWUoaW50VmFsdWUsIGRlZmF1bHRPZmZzZXQpOworICAgIH0gZWxzZQorICAgICAg
ICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfc3dpdGNoX3N0cmluZykKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0u
dS5vcGVyYW5kOworICAgIGlmICghc2NydXRpbmVlLmlzU3RyaW5nKCkpCisgICAgICAgIHBjICs9
IGRlZmF1bHRPZmZzZXQ7CisgICAgZWxzZSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+c3RyaW5nU3dp
dGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoYXNTdHJpbmcoc2Ny
dXRpbmVlKS0+dmFsdWUoZXhlYykuaW1wbCgpLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYykKK3sK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VS
VChjb2RlQmxvY2stPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlCisgICAgICAgICAgIHx8ICFj
b2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKQorICAgICAgICAgICB8fCBleGVjLT51bmNo
ZWNrZWRSKGNvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CisjaWYg
TExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIkNyZWF0aW5nIGZ1bmN0aW9uIVxuIik7
CisjZW5kaWYKKyAgICBMTElOVF9SRVRVUk4oY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbMl0u
dS5vcGVyYW5kKS0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jX2V4cCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTRnVu
Y3Rpb24qIGZ1bmMgPSBmdW5jdGlvbi0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpOwor
ICAgIAorICAgIGlmICghZnVuY3Rpb24tPm5hbWUoKS5pc051bGwoKSkgeworICAgICAgICBKU1N0
YXRpY1Njb3BlT2JqZWN0KiBmdW5jdGlvblNjb3BlT2JqZWN0ID0gSlNTdGF0aWNTY29wZU9iamVj
dDo6Y3JlYXRlKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKCksIGZ1bmMsIFJlYWRPbmx5IHwgRG9udERl
bGV0ZSk7CisgICAgICAgIGZ1bmMtPnNldFNjb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuYy0+
c2NvcGUoKS0+cHVzaChmdW5jdGlvblNjb3BlT2JqZWN0KSk7CisgICAgfQorICAgIAorICAgIExM
SU5UX1JFVFVSTihmdW5jKTsKK30KKworc3RhdGljIEhlbHBlclJldHVyblR5cGUgaGFuZGxlSG9z
dENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgY2Fs
bGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgRXhlY1N0YXRlKiBleGVj
ID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworCisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFp
bihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsK
KworICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxE
YXRhOworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxlZSwgY2Fs
bERhdGEpOworICAgIAorICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVKUyk7Cisg
ICAgCisgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUhvc3QpIHsKKyAgICAgICAgICAg
IGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERh
dGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgICAgIAorICAgICAgICAg
ICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICAgICAgfQorICAgICAgICAKKyNpZiBM
TElOVF9IRUxQRVJfVFJBQ0lORworICAgICAgICBwcmludGYoIkNhbGwgY2FsbGVlIGlzIG5vdCBh
IGZ1bmN0aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICAg
ICAgQVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSk7CisgICAgICAgIExMSU5UX0NBTExf
VEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIGNhbGxlZSkpOwor
ICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIAorICAg
IENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVj
dFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0RGF0YSk7CisgICAgCisg
ICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZUpTKTsKKyAgICAKKyAgICBp
ZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlSG9zdCkgeworICAgICAgICBnbG9iYWxE
YXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEu
bmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4o
ZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpKTsKKyAgICB9CisgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAgICAg
cHJpbnRmKCJDb25zdHJ1Y3RvciBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxs
ZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlID09
IENvbnN0cnVjdFR5cGVOb25lKTsKKyAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVh
dGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKK30KKworaW5saW5lIEhlbHBl
clJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24q
IHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSwg
TExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCit7CisgICAgSlNDZWxsKiBjYWxs
ZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSk7CisgICAgaWYg
KCFjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4
ZWNDYWxsZWUsIHBjLCBjYWxsZWVBc1ZhbHVlLCBraW5kKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9u
KiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBleGVjQ2Fs
bGVlLT5zZXRTY29wZUNoYWluKGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKSk7CisgICAgRXhlY3V0
YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAgICAKKyAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IDA7CisgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGNvZGVQ
dHIgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxs
KCk7CisgICAgZWxzZSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVj
dXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7Cisg
ICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihl
eGVjQ2FsbGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOworICAgICAgICBpZiAoZXJyb3IpCisg
ICAgICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCksIHBj
LCBlcnJvcik7CisgICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVy
YXRlZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICAg
ICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNf
Y2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIGNv
ZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVj
a0ZvcihraW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9u
RXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOwor
ICAgIH0KKyAgICAKKyAgICBpZiAoY2FsbExpbmtJbmZvKSB7CisgICAgICAgIGlmIChjYWxsTGlu
a0luZm8tPmlzT25MaXN0KCkpCisgICAgICAgICAgICBjYWxsTGlua0luZm8tPnJlbW92ZSgpOwor
ICAgICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZXIgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgp
OworICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0
YSgpLCBleGVjQ2FsbGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7
CisgICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmds
b2JhbERhdGEoKSwgZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBj
YWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0
cjsKKyAgICAgICAgaWYgKGNvZGVCbG9jaykKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0lu
Y29taW5nQ2FsbChjYWxsTGlua0luZm8pOworICAgIH0KKyAgICAKKyAgICBMTElOVF9DQUxMX1JF
VFVSTihleGVjQ2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKK30KKwor
aW5saW5lIEhlbHBlclJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBJbnN0
cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICAvLyBUaGlz
IG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAvLyAtIEZpZ3Vy
ZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAt
IElmIHBvc3NpYmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAgIC8vIC0gUmV0
dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBj
YWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0Mo
MSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBw
Y1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRS
KFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+
c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgCisgICAgQVNTRVJUKHBjWzRdLnUuY2FsbExpbmtJ
bmZvKTsKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVB
c1ZhbHVlLCBwY1s0XS51LmNhbGxMaW5rSW5mbyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jYWxsKQoreworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNh
bGwpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0KQoreworICAgIHJl
dHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0cnVjdCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0
bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUgd2hpbGUgcmVzcGVjdGluZyB0aGUgdmFy
aWFibGUgYXJndW1lbnRzLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNv
bXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGlu
ZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAg
IEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAor
ICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAorICAgICAgICBleGVjLCAm
ZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwKKyAgICAgICAg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBwY1s0XS51
Lm9wZXJhbmQpOworICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKTsKKyAg
ICAKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNh
bGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAg
ZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0
d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpKTsK
KyAgICAKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwg
Y2FsbGVlQXNWYWx1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwp
Cit7CisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOwor
ICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7
CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAg
IAorICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUu
b3BlcmFuZCk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhl
Y0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVl
OworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAg
ICBleGVjQ2FsbGVlLT5zZXRSZXR1cm5QQyhiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbGxp
bnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2so
MCk7CisgICAgZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRh
ZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX2V2
YWwpKTsKKyAgICAKKyAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2Jh
bEZ1bmNFdmFsKSkKKyAgICAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29k
ZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworICAgIAorICAgIGdsb2JhbERhdGEuaG9zdENhbGxS
ZXR1cm5WYWx1ZSA9IGV2YWwoZXhlY0NhbGxlZSk7CisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhl
Y0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24p
Cit7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkp
OworICAgIEpTVmFsdWUgYWN0aXZhdGlvblZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOwor
ICAgIGlmICghYWN0aXZhdGlvblZhbHVlKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHYgPSBleGVj
LT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQp
KS5qc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGlmICghZXhlYy0+Y29kZUJsb2NrKCktPmlzU3Ry
aWN0TW9kZSgpKQorICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT50ZWFyT2ZmKGV4ZWMp
OworICAgICAgICB9CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICBKU0FjdGl2YXRp
b24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVlKTsKKyAgICBhY3Rp
dmF0aW9uLT50ZWFyT2ZmKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgaWYgKEpTVmFsdWUgdiA9
IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3Bl
cmFuZCkpLmpzVmFsdWUoKSkKKyAgICAgICAgYXNBcmd1bWVudHModiktPmRpZFRlYXJPZmZBY3Rp
dmF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgYWN0aXZhdGlvbik7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCit7Cisg
ICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkgJiYgIWV4ZWMtPmNv
ZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIGFzQXJndW1lbnRzKGV4ZWMt
PnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkp
LmpzVmFsdWUoKSktPnRlYXJPZmYoZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5n
KGV4ZWMsICZMTElOVF9PUCgyKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpCit7CisgICAgTExJTlRfUkVUVVJOKExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dldF9wbmFtZXMpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNW
YWx1ZSgpOworICAgIGlmICh2LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcGMgKz0g
cGNbNV0udS5vcGVyYW5kOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAg
SlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gby0+c3RydWN0dXJlKCk7CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0
eU5hbWVJdGVyYXRvciA9IHN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpOworICAgIGlmICgh
anNQcm9wZXJ0eU5hbWVJdGVyYXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQ
cm90b3R5cGVDaGFpbigpICE9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCisgICAg
ICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVh
dGUoZXhlYywgbyk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBKU1ZhbHVlKGpzUHJvcGVydHlO
YW1lSXRlcmF0b3IpOworICAgIExMSU5UX09QKDIpID0gSlNWYWx1ZShvKTsKKyAgICBMTElOVF9P
UCgzKSA9IFJlZ2lzdGVyOjp3aXRoSW50KDApOworICAgIExMSU5UX09QKDQpID0gUmVnaXN0ZXI6
OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAgICAKKyAgICBwYyAr
PSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFtZXMpOworICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSkKK3sKKyAgICBKU09iamVjdCogYmFz
ZSA9IGFzT2JqZWN0KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CisgICAgSlNTdHJpbmcqIHByb3Bl
cnR5ID0gYXNTdHJpbmcoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBpZiAoYmFzZS0+aGFz
UHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eS0+dmFsdWUoZXhlYykpKSkg
eworICAgICAgICAvLyBHbyB0byB0YXJnZXQuCisgICAgICAgIHBjICs9IHBjWzZdLnUub3BlcmFu
ZDsKKyAgICB9IC8vIEVsc2UsIGRvbid0IGNoYW5nZSB0aGUgUEMsIHNvIHRoZSBpbnRlcnByZXRl
ciB3aWxsIHJlbG9vcC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3B1c2hfc2NvcGUpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMSkuanNWYWx1
ZSgpOworICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKKyAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9IG87CisgICAgZXhlYy0+c2V0
U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2gobykpOworICAgIAorICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9wX3Njb3BlKQoreworICAg
IGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wb3AoKSk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSkK
K3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpT
T2JqZWN0KiBzY29wZSA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBjb2RlQmxv
Y2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpLCBE
b250RGVsZXRlKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+
cHVzaChzY29wZSkpOworICAgIExMSU5UX1JFVFVSTihzY29wZSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl90aHJvdykKK3sKKyAgICBMTElOVF9USFJPVyhMTElOVF9PUF9DKDEpLmpz
VmFsdWUoKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2Vf
ZXJyb3IpCit7CisgICAgTExJTlRfVEhST1coY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1ZykKK3sKKyAgICBpbnQgZGVidWdIb29rSUQg
PSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgaW50IGZpcnN0TGluZSA9IHBjWzJdLnUub3BlcmFuZDsK
KyAgICBpbnQgbGFzdExpbmUgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLmludGVycHJldGVyLT5kZWJ1ZyhleGVjLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJ
RD4oZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQor
eworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSgpKS0+d2lsbEV4ZWN1
dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCit7CisgICAgKCpQcm9m
aWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT5kaWRFeGVjdXRlKGV4ZWMsIExMSU5U
X09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBMTEludEhlbHBlcnNfaAorI2RlZmluZSBMTEludEhlbHBlcnNfaAorCisjaW5j
bHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisj
aWYgRU5BQkxFKExMSU5UKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOwor
c3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCit0eXBlZGVmIGludDY0
X3QgSGVscGVyUmV0dXJuVHlwZTsKKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50
X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBp
bnQgb3BlcmFuZCk7CitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFs
dWUoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7
CisKKyNkZWZpbmUgTExJTlRfSEVMUEVSX0RFQ0wobmFtZSkgXAorICAgIGV4dGVybiAiQyIgSGVs
cGVyUmV0dXJuVHlwZSBsbGludF8jI25hbWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiog
cGMpCisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RF
Q0wodHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9h
cml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2UpOworTExJ
TlRfSEVMUEVSX0RFQ0woc3BlY2lhbF90cmFjZSk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9v
c3IpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hl
Y2spOworTExJTlRfSEVMUEVSX0RFQ0wobG9vcF9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0wocmVw
bGFjZSk7CitMTElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVh
dGVfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50
cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3RoaXMpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3
X29iamVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5KTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9uZXdfcmVnZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9uc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2xlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3Jl
YXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wcmVfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVj
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYyk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcG9zdF9kZWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVy
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2FkZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9zdWIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rpdik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hp
ZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3JzaGlmdCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfdXJzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Yml0eG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaW5zdGFuY2VvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRlZmluZWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2lzX2Jvb2xlYW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJlcik7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9pc19vYmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cmVzb2x2ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcmVzb2x2ZV9iYXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJv
cGVydHlfZXhpc3RzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFz
ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Z2V0X2FyZ3VtZW50c19sZW5ndGgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9p
ZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9nZXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJn
dW1lbnRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2RlbF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRl
eCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2dldHRlcik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHV0X3NldHRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam1wX3Nj
b3Blcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2pmYWxzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3MpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
amdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcik7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfamxlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5s
ZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9z
d2l0Y2hfaW1tKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfY2hhcik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0cmluZyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmV3X2Z1bmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jX2V4cCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVh
cl9vZmZfYXJndW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X3BuYW1lcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcG9wX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19z
Y29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZGVidWcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKTsKKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAv
LyBMTEludEhlbHBlcnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKKyNkZWZpbmUgTExJbnRPZmZs
aW5lQXNtQ29uZmlnX2gKKworI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENQVShYODYp
CisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9Y
ODYgMAorI2VuZGlmCisKKyNpZiBDUFUoQVJNdjcpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3
IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDAKKyNlbmRpZgorCisjaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAxCisjZWxz
ZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIENQ
VShCSUdfRU5ESUFOKQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDEKKyNlbHNlCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMAorI2VuZGlmCisKKyNpZiBFTkFCTEUoTExJ
TlRfT1NSX1RPX0pJVCkKKyNkZWZpbmUgT0ZGTElORV9BU01fSklUX0VOQUJMRUQgMQorI2Vsc2UK
KyNkZWZpbmUgT0ZGTElORV9BU01fSklUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBMTElOVF9F
WEVDVVRJT05fVFJBQ0lORworI2RlZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAx
CisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAwCisjZW5kaWYK
KworI2VuZGlmIC8vIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJI
ZWFwLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKSVRTdHVicy5oIgor
I2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTVHlwZUluZm8u
aCIKKyNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCisjaW5jbHVkZSAiSnVtcFRhYmxlLmgi
CisjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCisjaW5jbHVkZSAiTWFya2VkU3Bh
Y2UuaCIKKyNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgi
CisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKKyNp
bmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVmaW5lIE9GRkxJTkVfQVNNX09GRlNFVE9GKGNsYXp6
LCBmaWVsZCkgT0JKRUNUX09GRlNFVE9GKGNsYXp6LCBmaWVsZCkKKworY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQqIGR1bW15
KCk7Cit9OworCitjb25zdCB1bnNpZ25lZCogTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgp
Cit7CisjaW5jbHVkZSAiTExJbnREZXNpcmVkT2Zmc2V0cy5oIgorICAgIHJldHVybiBleHRyYWN0
b3JUYWJsZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK2ludCBtYWluKGludCwgY2hhcioq
KQoreworICAgIC8vIE91dCBvZiBhbiBhYnVuZGFuY2Ugb2YgY2F1dGlvbiwgbWFrZSBzdXJlIHRo
YXQgTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpIGlzIGxpdmUsCisgICAgLy8gYW5kIHRo
ZSBleHRyYWN0b3JUYWJsZSBpcyBsaXZlLCB0b28uCisgICAgcHJpbnRmKCIlcFxuIiwgSlNDOjpM
TEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkpOworICAgIHJldHVybiAwOworfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3Mu
aCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgiCisj
aW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIK
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3N0YXRpYyBNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhLCB2b2lkICgqdGFyZ2V0KSgpKQoreworICAgIEpTSW50ZXJmYWNlSklUIGppdDsKKyAgICAK
KyAgICAvLyBGSVhNRTogdGhlcmUncyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gaXQgb24g
WDg2LCBidXQgSSdtIG5vdCBzdXJlIEkgY2FyZS4KKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJ
VDo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdldCkpLCBKU0ludGVyZmFj
ZUpJVDo6cmVnVDApOworICAgIGppdC5qdW1wKEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAg
CisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwgJmppdCwgR0xPQkFMX1RI
VU5LX0lEKTsKKyAgICByZXR1cm4gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7Cit9CisKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhK
dW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpOworfQor
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2Vu
ZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9w
cm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0
eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJl
dHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9m
b3JfY2FsbF9hcml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlv
bkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEs
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRh
LCBsbGludF9ldmFsX3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dy
YW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICBy
ZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfcHJvZ3JhbV9w
cm9sb2d1ZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8g
RU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1
bmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1
bmtzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50VGh1bmtzX2gKKyNkZWZp
bmUgTExJbnRUaHVua3NfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFC
TEUoTExJTlQpCisKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsRGF0YTsKKworbmFtZXNwYWNlIExMSW50IHsKKwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3Io
SlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEq
KTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tU
aHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFs
RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAv
LyBMTEludFRodW5rc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDIzODAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKworIyBDcmFzaCBjb3Vyc2Ugb24gdGhlIGxhbmd1YWdlIHRoYXQgdGhpcyBpcyB3cml0dGVu
IGluICh3aGljaCBJIGp1c3QgY2FsbAorIyAiYXNzZW1ibHkiIGV2ZW4gdGhvdWdoIGl0J3MgbW9y
ZSB0aGFuIHRoYXQpOgorIworIyAtIE1vc3RseSBnYXMtc3R5bGUgb3BlcmFuZCBvcmRlcmluZy4g
VGhlIGxhc3Qgb3BlcmFuZCB0ZW5kcyB0byBiZSB0aGUKKyMgICBkZXN0aW5hdGlvbi4gU28gImEg
Oj0gYiIgaXMgd3JpdHRlbiBhcyAibW92IGIsIGEiLiBCdXQgdW5saWtlIGdhcywKKyMgICBjb21w
YXJpc29ucyBhcmUgaW4tb3JkZXIsIHNvICJpZiAoYSA8IGIpIiBpcyB3cml0dGVuIGFzCisjICAg
ImJpbHQgYSwgYiwgLi4uIi4KKyMKKyMgLSAiYiIgPSBieXRlLCAiaCIgPSAxNi1iaXQgd29yZCwg
ImkiID0gMzItYml0IHdvcmQsICJwIiA9IHBvaW50ZXIuCisjICAgQ3VycmVudGx5IHRoaXMgaXMg
anVzdCAzMi1iaXQgc28gImkiIGFuZCAicCIgYXJlIGludGVyY2hhbmdlYWJsZQorIyAgIGV4Y2Vw
dCB3aGVuIGFuIG9wIHN1cHBvcnRzIG9uZSBidXQgbm90IHRoZSBvdGhlci4KKyMKKyMgLSBJbiBn
ZW5lcmFsLCB2YWxpZCBvcGVyYW5kcyBmb3IgbWFjcm8gaW52b2NhdGlvbnMgYW5kIGluc3RydWN0
aW9ucyBhcmUKKyMgICByZWdpc3RlcnMgKGVnICJ0MCIpLCBhZGRyZXNzZXMgKGVnICI0W3QwXSIp
LCBiYXNlLWluZGV4IGFkZHJlc3NlcworIyAgIChlZyAiN1t0MCwgdDEsIDJdIiksIGFic29sdXRl
IGFkZHJlc3NlcyAoZWcgIjB4YTAwMDAwMDBbXSIpLCBvciBsYWJlbHMKKyMgICAoZWcgIl9mb28i
IG9yICIuZm9vIikuIE1hY3JvIGludm9jYXRpb25zIGNhbiBhbHNvIHRha2UgYW5vbnltb3VzCisj
ICAgbWFjcm9zIGFzIG9wZXJhbmRzLiBJbnN0cnVjdGlvbnMgY2Fubm90IHRha2UgYW5vbnltb3Vz
IG1hY3Jvcy4KKyMKKyMgLSBMYWJlbHMgbXVzdCBoYXZlIG5hbWVzIHRoYXQgYmVnaW4gd2l0aCBl
aXRoZXIgIl8iIG9yICIuIi4gIEEgIi4iIGxhYmVsCisjICAgaXMgbG9jYWwgYW5kIGdldHMgcmVu
YW1lZCBiZWZvcmUgY29kZSBnZW4gdG8gbWluaW1pemUgbmFtZXNwYWNlCisjICAgcG9sbHV0aW9u
LiBBICJfIiBsYWJlbCBpcyBhbiBleHRlcm4gc3ltYm9sIChpLmUuICIuZ2xvYmwiKS4gVGhlICJf
IgorIyAgIG1heSBvciBtYXkgbm90IGJlIHJlbW92ZWQgZHVyaW5nIGNvZGUgZ2VuIGRlcGVuZGlu
ZyBvbiB3aGV0aGVyIHRoZSBhc20KKyMgICBjb252ZW50aW9ucyBmb3IgQyBuYW1lIG1hbmdsaW5n
IG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0gbWFuZGF0ZSBhICJfIgorIyAgIHByZWZpeC4KKyMKKyMg
LSBBICJtYWNybyIgaXMgYSBsYW1iZGEgZXhwcmVzc2lvbiwgd2hpY2ggbWF5IGJlIGVpdGhlciBh
bm9ueW1vdXMgb3IKKyMgICBuYW1lZC4gQnV0IHRoaXMgaGFzIGNhdmVhdHMuICJtYWNybyIgY2Fu
IHRha2UgemVybyBvciBtb3JlIGFyZ3VtZW50cywKKyMgICB3aGljaCBtYXkgYmUgbWFjcm9zIG9y
IGFueSB2YWxpZCBvcGVyYW5kcywgYnV0IGl0IGNhbiBvbmx5IHJldHVybgorIyAgIGNvZGUuIEJ1
dCB5b3UgY2FuIGRvIFR1cmluZy1jb21wbGV0ZSB0aGluZ3MgdmlhIGNvbnRpbnVhdGlvbiBwYXNz
aW5nCisjICAgc3R5bGU6ICJtYWNybyBmb28gKGEsIGIpIGIoYSkgZW5kIGZvbyhmb28sIGZvbyki
LiBBY3R1YWxseSwgZG9uJ3QgZG8KKyMgICB0aGF0LCBzaW5jZSB5b3UnbGwganVzdCBjcmFzaCB0
aGUgYXNzZW1ibGVyLgorIworIyAtIEFuICJpZiIgaXMgYSBjb25kaXRpb25hbCBvbiBzZXR0aW5n
cy4gQW55IGlkZW50aWZpZXIgc3VwcGxpZWQgaW4gdGhlCisjICAgcHJlZGljYXRlIG9mIGFuICJp
ZiIgaXMgYXNzdW1lZCB0byBiZSBhICNkZWZpbmUgdGhhdCBpcyBhdmFpbGFibGUKKyMgICBkdXJp
bmcgY29kZSBnZW4uIFNvIHlvdSBjYW4ndCB1c2UgImlmIiBmb3IgY29tcHV0YXRpb24gaW4gYSBt
YWNybywgYnV0CisjICAgeW91IGNhbiB1c2UgaXQgdG8gc2VsZWN0IGRpZmZlcmVudCBwaWVjZXMg
b2YgY29kZSBmb3IgZGlmZmVyZW50CisjICAgcGxhdGZvcm1zLgorIworIyAtIEFyZ3VtZW50cyB0
byBtYWNyb3MgZm9sbG93IGxleGljYWwgc2NvcGluZyByYXRoZXIgdGhhbiBkeW5hbWljIHNjb3Bp
bmcuCisjICAgQ29uc3QncyBhbHNvIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgYW5kIG1heSBvdmVy
cmlkZSAoaGlkZSkgYXJndW1lbnRzCisjICAgb3Igb3RoZXIgY29uc3RzLiBBbGwgdmFyaWFibGVz
IChhcmd1bWVudHMgYW5kIGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gb3BlcmFuZHMu
IEFkZGl0aW9uYWxseSwgYXJndW1lbnRzIChidXQgbm90IGNvbnN0YW50cykgY2FuIGJlIGJvdW5k
CisjICAgdG8gbWFjcm9zLgorCisKKyMgVGhlc2UgZGVjbGFyYXRpb25zIG11c3QgbWF0Y2ggaW50
ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmguCitjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gNDgK
K2NvbnN0IEFyZ3VtZW50Q291bnQgPSAtNDgKK2NvbnN0IENhbGxlckZyYW1lID0gLTQwCitjb25z
dCBDYWxsZWUgPSAtMzIKK2NvbnN0IFNjb3BlQ2hhaW4gPSAtMjQKK2NvbnN0IFJldHVyblBDID0g
LTE2Citjb25zdCBDb2RlQmxvY2sgPSAtOAorCitjb25zdCBUaGlzQXJndW1lbnRPZmZzZXQgPSAt
Q2FsbEZyYW1lSGVhZGVyU2l6ZSAtIDgKKworIyBEZWNsYXJlIHNvbWUgYWxpYXNlcyBmb3IgdGhl
IHJlZ2lzdGVycyB3ZSB3aWxsIHVzZS4KK2NvbnN0IFBDID0gdDQKKworIyBPZmZzZXRzIG5lZWRl
ZCBmb3IgcmVhc29uaW5nIGFib3V0IHZhbHVlIHJlcHJlc2VudGF0aW9uLgoraWYgQklHX0VORElB
TgorICAgIGNvbnN0IFRhZ09mZnNldCA9IDAKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gNAor
ZWxzZQorICAgIGNvbnN0IFRhZ09mZnNldCA9IDQKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0g
MAorZW5kCisKKyMgVmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgorY29uc3QgSW50MzJU
YWcgPSAtMQorY29uc3QgQm9vbGVhblRhZyA9IC0yCitjb25zdCBOdWxsVGFnID0gLTMKK2NvbnN0
IFVuZGVmaW5lZFRhZyA9IC00Citjb25zdCBDZWxsVGFnID0gLTUKK2NvbnN0IEVtcHR5VmFsdWVU
YWcgPSAtNgorY29uc3QgRGVsZXRlZFZhbHVlVGFnID0gLTcKK2NvbnN0IExvd2VzdFRhZyA9IERl
bGV0ZWRWYWx1ZVRhZworCisjIFR5cGUgY29uc3RhbnRzLgorY29uc3QgU3RyaW5nVHlwZSA9IDUK
K2NvbnN0IE9iamVjdFR5cGUgPSAxMAorCisjIFR5cGUgZmxhZ3MgY29uc3RhbnRzLgorY29uc3Qg
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDEKK2NvbnN0IEltcGxlbWVudHNIYXNJbnN0YW5jZSA9
IDIKK2NvbnN0IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSA4CisKKyMgSGVhcCBhbGxv
Y2F0aW9uIGNvbnN0YW50cy4KK2NvbnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9IDMK
KworIyBCeXRlY29kZSBvcGVyYW5kIGNvbnN0YW50cy4KK2NvbnN0IEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4ID0gMHg0MDAwMDAwMAorCisjIENvZGUgdHlwZSBjb25zdGFudHMuCitjb25zdCBH
bG9iYWxDb2RlID0gMAorY29uc3QgRXZhbENvZGUgPSAxCitjb25zdCBGdW5jdGlvbkNvZGUgPSAy
CisKKyMgVGhlIGludGVycHJldGVyIHN0ZWFscyB0aGUgdGFnIHdvcmQgb2YgdGhlIGFyZ3VtZW50
IGNvdW50LgorY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQK
KworIyBUaGlzIG11c3QgbWF0Y2ggd3RmL1ZlY3Rvci5oLgorY29uc3QgVmVjdG9yU2l6ZU9mZnNl
dCA9IDAKK2NvbnN0IFZlY3RvckJ1ZmZlck9mZnNldCA9IDQKKworIyBTdHJpbmcgZmxhZ3MuCitj
b25zdCBIYXNoRmxhZ3M4Qml0QnVmZmVyID0gNjQKKworIyBVdGlsaXRpZXMKK21hY3JvIGNyYXNo
KCkKKyAgICBzdG9yZWkgMCwgMHhiYmFkYmVlZltdCisgICAgbW92ZSAwLCB0MAorICAgIGNhbGwg
dDAKK2VuZAorCittYWNybyBhc3NlcnQoYXNzZXJ0aW9uKQorICAgIGlmIEFTU0VSVF9FTkFCTEVE
CisgICAgICAgIGFzc2VydGlvbigub2spCisgICAgICAgIGNyYXNoKCkKKyAgICAub2s6CisgICAg
ZW5kCitlbmQKKworbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0
aW9uUmVnaXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBsciwgZGVzdGluYXRpb25S
ZWdpc3RlcgorICAgIGVsc2lmIFg4NgorICAgICAgICBwb3AgZGVzdGluYXRpb25SZWdpc3Rlcgor
ICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyByZXN0b3JlUmV0
dXJuQWRkcmVzc0JlZm9yZVJldHVybihzb3VyY2VSZWdpc3RlcikKKyAgICBpZiBBUk12NworICAg
ICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgorICAgIGVsc2lmIFg4NgorICAgICAgICBwdXNo
IHNvdXJjZVJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisK
K21hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMKKyAgICBq
bXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldChwY09mZnNldCkK
KyAgICBsc2hpZnRpIDIsIHBjT2Zmc2V0CisgICAgYWRkcCBwY09mZnNldCwgUEMKKyAgICBqbXAg
W1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQorICAgIGxvYWRpIHBj
T2Zmc2V0LCB0MAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MCkKK2VuZAorCittYWNy
byBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNl
dFtjZnJdLCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBh
cmcxLCBhcmcyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAg
bW92ZSBhcmcyLCB0MQorICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAg
ICAgcG9rZSBhcmcyLCAxCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorICAgIGNh
bGwgZnVuY3Rpb24KK2VuZAorCisjIFRoaXMgYmFyZWx5IHdvcmtzLiBhcmczIGFuZCBhcmc0IHNo
b3VsZCBwcm9iYWJseSBiZSBpbW1lZGlhdGVzLgorbWFjcm8gY0NhbGw0KGZ1bmN0aW9uLCBhcmcx
LCBhcmcyLCBhcmczLCBhcmc0KQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAK
KyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgICAgICBtb3ZlIGFyZzMsIHQyCisgICAgICAgIG1v
dmUgYXJnNCwgdDMKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBhcmcxLCAwCisgICAgICAg
IHBva2UgYXJnMiwgMQorICAgICAgICBwb2tlIGFyZzMsIDIKKyAgICAgICAgcG9rZSBhcmc0LCAz
CisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2Vu
ZAorCittYWNybyBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBD
KQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcg
b3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1
Y3Rpb24gc3RyZWFtLiBmcm9tV2hlcmUKKyMgc2hvdWxkIGJlIGFuIGltbWVkaWF0ZSBpbnRlZ2Vy
IC0gYW55IGludGVnZXIgeW91IGxpa2U7IHVzZSBpdCB0byBpZGVudGlmeSB0aGUgcGxhY2UgeW91
J3JlCisjIGRlYnVnZ2luZyBmcm9tLiBvcGVyYW5kIHNob3VsZCBsaWtld2lzZSBiZSBhbiBpbW1l
ZGlhdGUsIGFuZCBzaG91bGQgaWRlbnRpZnkgdGhlIG9wZXJhbmQKKyMgaW4gdGhlIGluc3RydWN0
aW9uIHN0cmVhbSB5b3UnZCBsaWtlIHRvIHByaW50IG91dC4KK21hY3JvIHRyYWNlT3BlcmFuZChm
cm9tV2hlcmUsIG9wZXJhbmQpCisgICAgY0NhbGw0KF9sbGludF90cmFjZV9vcGVyYW5kLCBjZnIs
IFBDLCBmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBj
ZnIKK2VuZAorCisjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCB0
aGUgdmFsdWUgb2YgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24KKyMgc3RyZWFtLiBTYW1l
IGFzIHRyYWNlT3BlcmFuZCgpLCBidXQgYXNzdW1lcyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgcmVn
aXN0ZXIsIGFuZCBwcmludHMgaXRzCisjIHZhbHVlLgorbWFjcm8gdHJhY2VWYWx1ZShmcm9tV2hl
cmUsIG9wZXJhbmQpCisgICAgY0NhbGw0KF9sbGludF90cmFjZV92YWx1ZSwgY2ZyLCBQQywgZnJv
bVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQK
KworbWFjcm8gdHJhY2VFeGVjdXRpb24oKQorICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAg
ICAgIGNhbGxIZWxwZXIoX2xsaW50X3RyYWNlKQorICAgIGVuZAorZW5kCisKKyMgQ2FsbCBhIGhl
bHBlciBmb3IgY2FsbCBvcGNvZGVzLgorbWFjcm8gY2FsbENhbGxIZWxwZXIoYWR2YW5jZSwgaGVs
cGVyLCBhY3Rpb24pCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMsIHQwCisgICAgc3RvcmVwIHQw
LCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIs
IFBDKQorICAgIG1vdmUgdDEsIGNmcgorICAgIGFjdGlvbih0MCkKK2VuZAorCittYWNybyBzbG93
UGF0aEZvckNhbGwoYWR2YW5jZSwgaGVscGVyKQorICAgIGNhbGxDYWxsSGVscGVyKAorICAgICAg
ICBhZHZhbmNlLAorICAgICAgICBoZWxwZXIsCisgICAgICAgIG1hY3JvIChjYWxsZWUpCisgICAg
ICAgICAgICBjYWxsIGNhbGxlZQorICAgICAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorICAg
ICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVChpbmNyZW1lbnQsIGFjdGlv
bikKKyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAK
KyAgICAgICAgYmFkZGlzIGluY3JlbWVudCwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50
ZXJbdDBdLCAuY29udGludWUKKyAgICAgICAgYWN0aW9uKCkKKyAgICAuY29udGludWU6CisgICAg
ZW5kCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGNoZWNrU3dp
dGNoVG9KSVQoCisgICAgICAgIDEsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBzdG9y
ZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgICAgICAgICAgY0NhbGwy
KF9sbGludF9sb29wX29zciwgY2ZyLCBQQykKKyAgICAgICAgICAgIG1vdmUgdDEsIGNmcgorICAg
ICAgICAgICAgYnRweiB0MCwgLnJlY292ZXIKKyAgICAgICAgICAgIGptcCB0MAorICAgICAgICAu
cmVjb3ZlcjoKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2Zy
XSwgUEMKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGls
b2d1ZSgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMTAsCisgICAgICAgIG1hY3Jv
ICgpCisgICAgICAgICAgICBjYWxsSGVscGVyKF9sbGludF9yZXBsYWNlKQorICAgICAgICBlbmQp
CitlbmQKKworbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoaW5kZXgpCisgICAgYXNzZXJ0KG1hY3Jv
IChvaykgYmlsdCBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIG9rIGVuZCkKK2Vu
ZAorCisjIEluZGV4LCB0YWcsIGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVy
cy4gSW5kZXggaXMgbm90CisjIGNoYW5nZWQuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhd
LCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisg
ICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxv
YWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZm
ZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwg
aGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUg
LSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsb2FkcCBUYWdPZmZzZXRb
cGF5bG9hZCwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQs
IGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBt
YXkgYmUgdGhlIHNhbWUgcmVnaXN0ZXIuIEluZGV4IG1heSBiZSBjbG9iYmVyZWQuCittYWNybyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3Rl
cSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRp
IFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0YWcKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRS
ZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdGFnXSwgdGFnCisgICAgIyBUaGVyZSBpcyBh
IGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1
YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbHNo
aWZ0aSAzLCBpbmRleAorICAgIGFkZHAgaW5kZXgsIHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZz
ZXRbdGFnXSwgcGF5bG9hZAorICAgIGxvYWRwIFRhZ09mZnNldFt0YWddLCB0YWcKKy5kb25lOgor
ZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKGluZGV4
LCB0YWdDaGVjaywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4LCAuY29uc3RhbnQKKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbY2ZyLCBpbmRleCwg
OF0pCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAg
IGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2Fk
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhl
cmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0g
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0
W3BheWxvYWQsIGluZGV4LCA4XSkKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGlu
ZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBtdXN0
IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdCBtdXRhdGVkLiBVc2UKKyMgdGhp
cyBpZiB5b3Uga25vdyB3aGF0IHRoZSB0YWcgb2YgdGhlIHZhcmlhYmxlIHNob3VsZCBiZS4gRG9p
bmcgdGhlIHRhZworIyB0ZXN0IGFzIHBhcnQgb2YgbG9hZGluZyB0aGUgdmFyaWFibGUgcmVkdWNl
cyByZWdpc3RlciB1c2UsIGJ1dCBtYXkgbm90CisjIGJlIGZhc3RlciB0aGFuIGRvaW5nIGxvYWRD
b25zdGFudE9yVmFyaWFibGUgZm9sbG93ZWQgYnkgYSBicmFuY2ggb24gdGhlCisjIHRhZy4KK21h
Y3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywgcGF5
bG9hZCwgc2xvdykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgK
KyAgICAgICAgaW5kZXgsCisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGJpbmVxIGFjdHVhbFRh
ZywgZXhwZWN0ZWRUYWcsIHNsb3cgZW5kLAorICAgICAgICBwYXlsb2FkKQorZW5kCisKK21hY3Jv
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKGluZGV4LCBwYXlsb2FkKQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKAorICAgICAgICBpbmRl
eCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykgZW5kLAorICAgICAgICBwYXlsb2FkKQorZW5k
CisKK21hY3JvIHdyaXRlQmFycmllcih0YWcsIHBheWxvYWQpCisgICAgIyBOb3RoaW5nIHRvIGRv
LCBzaW5jZSB3ZSBkb24ndCBoYXZlIGEgZ2VuZXJhdGlvbmFsIG9yIGluY3JlbWVudGFsIGNvbGxl
Y3Rvci4KK2VuZAorCittYWNybyB2YWx1ZVByb2ZpbGUodGFnLCBwYXlsb2FkLCBwcm9maWxlKQor
ICAgIHN0b3JlaSB0YWcsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3Byb2Zp
bGVdCisgICAgc3RvcmVpIHBheWxvYWQsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9h
ZE9mZnNldFtwcm9maWxlXQorZW5kCisKKworIyBJbmRpY2F0ZSB0aGUgYmVnaW5uaW5nIG9mIExM
SW50LgorX2xsaW50X2JlZ2luOgorICAgIGNyYXNoKCkKKworCisjIEVudHJ5cG9pbnRzIGludG8g
dGhlIGludGVycHJldGVyCisKK21hY3JvIGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlcih0
YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAg
ICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRS
ZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxs
W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkZv
ckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxs
ZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFi
bGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRS
ZWdpc3RlcgorZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJl
Z2lzdGVyKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisK
K21hY3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgIHN0b3Jl
cCBzb3VyY2VSZWdpc3RlciwgQ29kZUJsb2NrW2Nmcl0KK2VuZAorCittYWNybyBub3RGdW5jdGlv
bkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAgICAjIE5vdGhpbmcgdG8gZG8hCitl
bmQKKworIyBEbyB0aGUgYmFyZSBtaW5pbXVtIHJlcXVpcmVkIHRvIGV4ZWN1dGUgY29kZS4gU2V0
cyB1cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2RlQmxvY2sqCisjIGluIHQxLiBNYXkgYWxzbyB0cmln
Z2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KK21hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwg
Y29kZUJsb2NrU2V0dGVyLCBvc3JIZWxwZXIsIHRyYWNlSGVscGVyKQorICAgIHByZXNlcnZlUmV0
dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgY2FsbCBmcmFt
ZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KKyAgICBzdG9yZXAgdDIsIFJldHVyblBDW2Nm
cl0KKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKHRyYWNlSGVs
cGVyKQorICAgIGVuZAorICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICBpZiBKSVRfRU5BQkxF
RAorICAgICAgICBiYWRkaXMgNSwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJbdDFd
LCAuY29udGludWUKKyAgICAgICAgY0NhbGwyKG9zckhlbHBlciwgY2ZyLCBQQykKKyAgICAgICAg
bW92ZSB0MSwgY2ZyCisgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgIGxvYWRwIFJl
dHVyblBDW2Nmcl0sIHQyCisgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJu
KHQyKQorICAgICAgICBqbXAgdDAKKyAgICAucmVjb3ZlcjoKKyAgICAgICAgY29kZUJsb2NrR2V0
dGVyKHQxKQorICAgIC5jb250aW51ZToKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tTZXR0ZXIodDEp
CisgICAgCisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0
cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2lu
c3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCitlbmQKKworIyBFeHBlY3Rz
IHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVz
IGJlaGluZC4KKyMgTXVzdCBjYWxsIGRpc3BhdGNoKDApIGFmdGVyIGNhbGxpbmcgdGhpcy4KK21h
Y3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1NraXApCisgICAgIyBQcm9maWxl
IHRoZSBhcmd1bWVudHMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hvaWNlIGJ1dCB0byBk
byB0aGlzLiBUaGlzCisgICAgIyBjb2RlIGlzIHByZXR0eSBob3JyZW5kb3VzIGJlY2F1c2Ugb2Yg
dGhlIGRpZmZlcmVuY2UgaW4gb3JkZXJpbmcgYmV0d2VlbgorICAgICMgYXJndW1lbnRzIGFuZCB2
YWx1ZSBwcm9maWxlcywgdGhlIGRlc2lyZSB0byBoYXZlIGEgc2ltcGxlIGxvb3AtZG93bi10by16
ZXJvCisgICAgIyBsb29wLCBhbmQgdGhlIGRlc2lyZSB0byB1c2Ugb25seSB0aHJlZSByZWdpc3Rl
cnMgc28gYXMgdG8gcHJlc2VydmUgdGhlIFBDIGFuZAorICAgICMgdGhlIGNvZGUgYmxvY2suIEl0
IGlzIGxpa2VseSB0aGF0IHRoaXMgY29kZSBzaG91bGQgYmUgcmV3cml0dGVuIGluIGEgbW9yZQor
ICAgICMgb3B0aW1hbCB3YXkgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBoYXZlIG1vcmUgdGhhbiBm
aXZlIHJlZ2lzdGVycyBhdmFpbGFibGUKKyAgICAjIGZvciBhcmJpdHJhcnkgdXNlIGluIHRoZSBp
bnRlcnByZXRlci4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIHQw
CisgICAgYWRkaSAtcHJvZmlsZUFyZ1NraXAsIHQwICMgVXNlIGFkZGkgYmVjYXVzZSB0aGF0J3Mg
d2hhdCBoYXMgdGhlIHBlZXBob2xlCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHQwLCAw
LCBvayBlbmQpCisgICAgYnRpeiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3Qx
XSwgdDMKKyAgICBtdWxpIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0MiAjIEFhYWFhaGhoaCEg
TmVlZCBzdHJlbmd0aCByZWR1Y3Rpb24hCisgICAgbmVnaSB0MAorICAgIGxzaGlmdGkgMywgdDAK
KyAgICBhZGRwIHQyLCB0MworLmFyZ3VtZW50UHJvZmlsZUxvb3A6CisgICAgbG9hZGkgVGhpc0Fy
Z3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQw
XSwgdDIKKyAgICBzdWJwIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQzCisgICAgc3RvcmVpIHQyLCBw
cm9maWxlQXJnU2tpcCAqIHNpemVvZiBWYWx1ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6Om1fYnVj
a2V0cyArIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXls
b2FkT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIKKyAgICBzdG9y
ZWkgdDIsIHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVlUHJvZmls
ZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBiYWRkaW56IDgsIHQwLCAuYXJn
dW1lbnRQcm9maWxlTG9vcAorLmFyZ3VtZW50UHJvZmlsZURvbmU6CisgICAgCisgICAgIyBDaGVj
ayBzdGFjayBoZWlnaHQuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lzdGVy
c1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MgorICAg
IGxvYWRwIEpTR2xvYmFsRGF0YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MiAgICMgRklYTUU6IENhbiBn
ZXQgdG8gdGhlIFJlZ2lzdGVyRmlsZSBmcm9tIHRoZSBKSVRTdGFja0ZyYW1lCisgICAgbHNoaWZ0
aSAzLCB0MAorICAgIGFkZHAgdDAsIGNmciwgdDAKKyAgICBicGFlcSBJbnRlcnByZXRlcjo6bV9y
ZWdpc3RlckZpbGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hlaWdodE9L
CisKKyAgICAjIFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBoZWxw
ZXIuCisgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVjaykKKy5zdGFja0hl
aWdodE9LOgorZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2gg
aXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCittYWNybyBmdW5jdGlvbkFyaXR5Q2hl
Y2soZG9uZUxhYmVsLCBoZWxwZXIpCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50
Q291bnRbY2ZyXSwgdDAKKyAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNb
dDFdLCBkb25lTGFiZWwKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKSAgICMgVGhpcyBoZWxw
ZXIgaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4gbm8gZXJyb3IsIHQwICE9IDAgPT4g
ZXJyb3IKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBidGl6IHQwLCAuY29udGludWUKKyAgICBsb2Fk
cCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERh
dGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJn
ZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKy5jb250aW51ZToKKyAgICAjIFJlbG9hZCBDb2RlQmxv
Y2sgYW5kIFBDLCBzaW5jZSB0aGUgaGVscGVyIGNsb2JiZXJlZCBpdC4KKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwg
dDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBW
ZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworICAgIGptcCBkb25lTGFiZWwKK2VuZAorCitfbGxp
bnRfcHJvZ3JhbV9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dl
dHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGlu
dF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9ldmFsX3Byb2xv
Z3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlv
bkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3Vl
KQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3Vl
OgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25D
b2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwsIF9sbGlu
dF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKKy5mdW5jdGlvbkZvckNhbGxCZWdp
bjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCisgICAgZGlzcGF0Y2goMCkKKyAgICAK
KworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUo
ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0
dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGludF90cmFj
ZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQorLmZ1bmN0aW9uRm9yQ29uc3RydWN0
QmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigxKQorICAgIGRpc3BhdGNoKDApCisg
ICAgCisKK19sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1
ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVy
LCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90
cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rp
b25Gb3JDYWxsQmVnaW4sIF9sbGludF9oZWxwZXJfY2FsbF9hcml0eUNoZWNrKQorCisKK19sbGlu
dF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0
aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwg
X2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGlu
dF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNr
KC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfbGxpbnRfaGVscGVyX2NvbnN0cnVjdF9hcml0
eUNoZWNrKQorCisjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9ucworCitfbGxpbnRfb3BfZW50
ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0Mgor
ICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1WYXJzW3QyXSwgdDIKKyAgICBidGl6IHQyLCAub3BF
bnRlckRvbmUKKyAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAKKyAgICBtb3ZlIDAsIHQxCisub3BF
bnRlckxvb3A6CisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2Nmciwg
dDIsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgYnRp
bnogdDIsIC5vcEVudGVyTG9vcAorLm9wRW50ZXJEb25lOgorICAgIGRpc3BhdGNoKDEpCisKKwor
X2xsaW50X29wX2NyZWF0ZV9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFs
dWVUYWcsIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQorLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmU6CisgICAgZGlz
cGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5pdF9sYXp5X3JlZzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBcmd1bWVudHNEb25lCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCisub3BDcmVhdGVBcmd1
bWVudHNEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFjcm8gYWxsb2NhdGVCYXNpY0pTT2Jq
ZWN0KHNpemVDbGFzc0luZGV4LCBjbGFzc0luZm9PZmZzZXQsIHN0cnVjdHVyZSwgcmVzdWx0LCBz
Y3JhdGNoMSwgc2NyYXRjaDIsIHNsb3dDYXNlKQorICAgIGNvbnN0IG9mZnNldE9mTXlTaXplQ2xh
c3MgPSBKU0dsb2JhbERhdGE6OmhlYXAgKyBIZWFwOjptX29iamVjdFNwYWNlICsgTWFya2VkU3Bh
Y2U6Om1fcHJlY2lzZVNpemVDbGFzc2VzICsgc2l6ZUNsYXNzSW5kZXggKiBzaXplb2YgTWFya2Vk
U3BhY2U6OlNpemVDbGFzcworICAgIAorICAgICMgRklYTUU6IHdlIGNhbiBnZXQgdGhlIGdsb2Jh
bCBkYXRhIGluIG9uZSBsb2FkIGZyb20gdGhlIHN0YWNrLgorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCBzY3JhdGNoMQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gx
XSwgc2NyYXRjaDEKKyAgICAKKyAgICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlz
dC4gICAgCisgICAgbG9hZHAgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXpl
Q2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKKyAgICBidHB6IHJlc3VsdCwg
c2xvd0Nhc2UKKyAgICAKKyAgICAjIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlz
dC4KKyAgICBsb2FkcCBbcmVzdWx0XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIG9m
ZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxs
W3NjcmF0Y2gxXQorCisgICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgbG9hZHAgY2xh
c3NJbmZvT2Zmc2V0W3NjcmF0Y2gxXSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIFty
ZXN1bHRdCisgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRd
CisgICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0KKyAgICBhZGRw
IHNpemVvZiBKU09iamVjdCwgcmVzdWx0LCBzY3JhdGNoMQorICAgIHN0b3JlcCBzY3JhdGNoMSwg
SlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KK2VuZAorCitfbGxpbnRfb3BfY3Jl
YXRlX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
Q2VsbFRhZywgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJi
YiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgT2JqZWN0VHlw
ZSwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFt0
MF0sIHQyCisgICAgYnRweiB0MiwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2lj
SlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmlu
YWxPYmplY3RDbGFzc0luZm8sIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAg
ICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0
Y2goMykKKworLm9wQ3JlYXRlVGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2NyZWF0ZV90aGlzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9jYWxsZWU6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBh
eWxvYWRPZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQwCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBd
LCBPYmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BD
b252ZXJ0VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhp
cykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6
bV9lbXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0
KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0
Q2xhc3NJbmZvLCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0
W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
c3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKKwor
Lm9wTmV3T2JqZWN0U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X29iamVj
dCkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfYXJyYXk6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXkpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheV9idWZmZXIp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdleHApCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9ub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDAsIHQyLCB0MykKKyAgICBiaW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90U2xvdworICAg
IHhvcmkgMSwgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0
b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5v
cE5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25vdCkKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
MTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQw
KQorICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9w
RXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxvYWRpIDRbUENd
LCB0MgorICAgIGNpZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0K
KyAgICBkaXNwYXRjaCg0KQorCisub3BFcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2VxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2VxX251bGw6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0Mwor
ICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVx
IHQxLCBDZWxsVGFnLCAub3BFcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QwXSwgdDEKKyAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wRXFO
dWxsTm90SW1tZWRpYXRlCisub3BFcU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0MSwgTnVsbFRh
ZywgdDIKKyAgICBjaWVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQyLCB0MQorLm9w
RXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAs
IHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxs
VGFnLCAub3BOZXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBjaW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5U
YWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX25lcSkKKyAgICBkaXNwYXRjaCg0KQorICAgIAorCitfbGxpbnRfb3Bf
bmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6bV90
eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwg
dDEKKyAgICBqbXAgLm9wTmVxTnVsbE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToK
KyAgICBjaW5lcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0
MQorICAgIGFuZGkgdDIsIHQxCisub3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBC
b29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHN0cmljdEVxKGVx
dWFsaXR5T3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0Mywg
LnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRh
ZywgLm5vdFN0cmluZworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6
bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5n
CisgICAgYmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwg
U3RyaW5nVHlwZSwgLnNsb3cKKy5ub3RTdHJpbmc6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAg
ZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIs
IDhdCisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisg
ICAgZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxl
ZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVscGVyX3N0cmljdGVxKQorCisKK19sbGlu
dF9vcF9uc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3Jv
IChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xs
aW50X2hlbHBlcl9uc3RyaWN0ZXEpCisKKworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX2xlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3NlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfZ3JlYXRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVy
ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9n
cmVhdGVyZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93Cisg
ICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikK
KworLm9wUHJlSW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykK
KyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIEludDMyVGFnLCAub3BQcmVEZWNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDEKKyAgICBic3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkg
dDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVE
ZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3Bh
dGNoKDIpCisKKworX2xsaW50X29wX3Bvc3RfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQx
LCAub3BQb3N0SW5jRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQy
CisgICAgbW92ZSB0MiwgdDMKKyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAg
c3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0KKy5vcFBvc3RJbmNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9wb3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwg
Lm9wUG9zdERlY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0Mgor
ICAgIG1vdmUgdDIsIHQzCisgICAgYnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0
b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCisub3BQb3N0RGVjRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfdG9fanNudW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBiaWVxIHQyLCBJbnQzMlRhZywgLm9wVG9Kc251bWJl
cklzSW50CisgICAgYmlhZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcFRvSnNudW1iZXJTbG93Cisu
b3BUb0pzbnVtYmVySXNJbnQ6CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgz
KQorCisub3BUb0pzbnVtYmVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9f
anNudW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MSwgdDIpCisgICAgYmluZXEgdDEsIElu
dDMyVGFnLCAub3BOZWdhdGVTcmNOb3RJbnQKKyAgICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BO
ZWdhdGVTbG93CisgICAgbmVnaSB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
ZGlzcGF0Y2goMykKKy5vcE5lZ2F0ZVNyY05vdEludDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywg
Lm9wTmVnYXRlU2xvdworICAgIHhvcmkgMHg4MDAwMDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRh
Z09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQz
LCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5lZ2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX25lZ2F0ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9w
Q3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhl
bHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AxTm90SW50Cisg
ICAgYmluZXEgdDMsIEludDMyVGFnLCAub3AyTm90SW50CisgICAgbG9hZGkgNFtQQ10sIHQyCisg
ICAgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHQzLCB0MSwgdDAsIC5zbG93LCB0MikKKyAgICBk
aXNwYXRjaCg1KQorCisub3AxTm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0
ZWx5IG5vdCBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAg
ICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDMsIExvd2VzdFRhZywgLm9wMU5v
dEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQx
LCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAg
IGZpaTJkIHQxLCB0MywgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgbG9hZGkgNFtQQ10sIHQx
CisgICAgZmlpMmQgdDAsIHQyLCBmdDAKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisg
ICAgc3RvcmVkIGZ0MCwgW2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wMk5vdElu
dDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQg
b3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBiaWEg
dDMsIExvd2VzdFRhZywgLnNsb3cKKyAgICBjaTJkIHQwLCBmdDAKKyAgICBmaWkyZCB0MSwgdDMs
IGZ0MQorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2Zy
LCB0MiwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBl
cikKKyAgICBkaXNwYXRjaCg1KQorZW5kCisKK21hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRp
b24sIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisg
ICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAg
ICAgICAgaW50ZWdlck9wZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHN0
b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9y
ZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAg
ICAgICBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfYWRkOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVy
X2FkZCkKKworCitfbGxpbnRfb3BfbXVsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5h
cnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBz
bG93LCBpbmRleCkKKyAgICAgICAgICAgIGNvbnN0IHNjcmF0Y2ggPSBpbnQzMlRhZyAgICMgV2Ug
a25vdyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFz
IGEgY29uc3RhbnQuCisgICAgICAgICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoCisgICAgICAgICAg
ICBibXVsaW8gbGVmdCwgc2NyYXRjaCwgc2xvdworICAgICAgICAgICAgYnRpbnogc2NyYXRjaCwg
LmRvbmUKKyAgICAgICAgICAgIGJpbHQgbGVmdCwgMCwgc2xvdworICAgICAgICAgICAgYmlsdCBy
aWdodCwgMCwgc2xvdworICAgICAgICAuZG9uZToKKyAgICAgICAgICAgIHN0b3JlaSBJbnQzMlRh
ZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwg
UGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfbXVsKQorCisKK19sbGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJp
bmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCBy
aWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCBy
aWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfc3ViKQorCisKK19sbGludF9vcF9kaXY6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAg
IG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAg
Y2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQorICAgICAgICAgICAg
ZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdEludAorICAg
ICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAg
ICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAg
ICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6CisgICAgICAgICAgICBzdG9yZWQgZnQx
LCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCwKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9kaXYpCisKKworX2xsaW50X29wX21vZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK21h
Y3JvIGJpdE9wKG9wZXJhdGlvbiwgaGVscGVyLCBhZHZhbmNlKQorICAgIGxvYWRpIDEyW1BDXSwg
dDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBi
aW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdwor
ICAgIGxvYWRpIDRbUENdLCB0MgorICAgIG9wZXJhdGlvbih0MSwgdDAsIC5zbG93KQorICAgIHN0
b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKKworLnNsb3c6CisgICAgY2Fs
bEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKK2VuZAorCitfbGxpbnRfb3Bf
bHNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCBzbG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9sc2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX3JzaGlmdDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgc2xvdykgcnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
cnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF91cnNoaWZ0OgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQor
ICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKKyAgICAgICAgICAgIGJpbHQgcmlnaHQs
IDAsIHNsb3cKKyAgICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3Vyc2hpZnQsCisg
ICAgICAgIDQpCisKKworX2xsaW50X29wX2JpdGFuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5kaSBsZWZ0LCBy
aWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0YW5kLAorICAgICAgICA1KQorCisK
K19sbGludF9vcF9iaXR4b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAg
ICAgICBfbGxpbnRfaGVscGVyX2JpdHhvciwKKyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0
b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHNsb3cpIG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfYml0b3IsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG5vdDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGJpbmVxIHQyLCBJbnQzMlRh
ZywgLm9wQml0bm90U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAg
IGRpc3BhdGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2JpdG5vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVja19oYXNfaW5z
dGFuY2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9wQ2hlY2tIYXNJ
bnN0YW5jZVNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAg
YnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxl
bWVudHNIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBkaXNwYXRjaCgy
KQorCisub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfY2hlY2tfaGFzX2luc3RhbmNlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2lu
c3RhbmNlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFs
IGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisgICAgIyBGSVhN
RTogVGhpcyBzaG91bGQgYmUgZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDEsIHQwKQorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNl
LCAub3BJbnN0YW5jZW9mU2xvdworICAgIAorICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCisg
ICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6
bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5j
ZW9mU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgCisgICAgIyBS
ZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3ZlIDEsIHQw
Cisub3BJbnN0YW5jZW9mTG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwg
dDIKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0s
IHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRpbnogdDIsIC5v
cEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9mRG9uZToKKyAg
ICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wSW5zdGFu
Y2VvZlNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luc3RhbmNlb2YpCisgICAg
ZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9pc19udW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9pc19udW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNf
c3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX29iamVjdDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX29i
amVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19mdW5jdGlvbjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Z1bmN0aW9u
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2luOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
cmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcmVzb2x2ZV9za2lwKQorICAgIGRpc3BhdGNoKDUpCisKKworbWFjcm8gcmVzb2x2
ZUdsb2JhbChzaXplLCBzbG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAg
IyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgUHJvcGVy
dHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAjIDEyW1BDXSAgU3Ry
dWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgor
ICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBi
eSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYnBuZXEgdDEsIDEyW1BDXSwgc2xvdworICAgIGxv
YWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBd
LCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkg
dDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XQorICAgIGxvYWRpIChzaXplIC0gMSkgKiA0W1BDXSwgdDAKKyAgICB2YWx1ZVBy
b2ZpbGUodDIsIHQzLCB0MCkKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWw6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIHJlc29sdmVHbG9iYWwoNiwgLm9wUmVzb2x2ZUdsb2JhbFNs
b3cpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbFNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3BhdGNoKDYpCisKKwor
IyBHaXZlcyB5b3UgdGhlIHNjb3BlIGluIHQwLCB3aGlsZSBhbGxvd2luZyB5b3UgdG8gb3B0aW9u
YWxseSBwZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9uIHRoZQorIyBzY29wZXMgYXMgdGhleSBh
cmUgdHJhdmVyc2VkLiBzY29wZUNoZWNrKCkgaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czog
dGhlIHJlZ2lzdGVyCisjIGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdpc3RlciB0aGF0IGNh
biBiZSB1c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAorIyB1c2UgdDMs
IHNvIHlvdSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJlLgorbWFjcm8gZ2V0U2NvcGUo
ZGVCcnVpamluSW5kZXhPcGVyYW5kLCBzY29wZUNoZWNrKQorICAgIGxvYWRwIFNjb3BlQ2hhaW4g
KyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgZGVCcnVpamluSW5kZXhPcGVyYW5k
LCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisgICAgCisgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQxCisgICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25D
b2RlLCAubG9vcAorICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFd
LCAubG9vcAorICAgIAorICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0aW9uUmVnaXN0ZXJb
dDFdLCB0MQorCisgICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29w
ZS4KKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0
aXZhdGlvbgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2Rl
OjpuZXh0W3QwXSwgdDAKKy5ub0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0MgorICAgIAorICAg
IGJ0aXogdDIsIC5kb25lCisubG9vcDoKKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2Fk
cCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisgICAgc3ViaSAxLCB0MgorICAgIGJ0aW56
IHQyLCAubG9vcAorCisuZG9uZToKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xv
YmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0aW9uU3RydWN0
dXJlW3QzXSwgdDMKKyAgICBnZXRTY29wZSgKKyAgICAgICAgMjBbUENdLAorICAgICAgICBtYWNy
byAoc2NvcGUsIHNjcmF0Y2gpCisgICAgICAgICAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2Jq
ZWN0W3Njb3BlXSwgc2NyYXRjaAorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVy
ZVtzY3JhdGNoXSwgdDMsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93CisgICAgICAg
IGVuZCkKKyAgICByZXNvbHZlR2xvYmFsKDcsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdykK
KyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCisgICAg
ZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERl
c3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgSW5kZXggb2YgcmVnaXN0ZXIg
aW4gdGhlIHNjb3BlLgorICAgICMgMTJbUENdICBEZSBCcnVpamluIGluZGV4LgorICAgIGdldFNj
b3BlKDEyW1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgNFtQQ10s
IHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVj
dFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0
MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbdDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4
XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDE2
W1BDXSwgdDEKKyAgICB2YWx1ZVByb2ZpbGUodDMsIHQwLCB0MSkKKyAgICBkaXNwYXRjaCg1KQor
CisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Z2V0U2NvcGUoOFtQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDEy
W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MywgdDIpCisgICAgbG9h
ZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQzLCB0MikKKyAgICBsb2FkcCBTY29wZUNo
YWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3Jl
Z2lzdGVyc1t0MF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbdDAsIHQxLCA4XQorICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAg
IGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFn
T2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhd
LCB0MQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIHZh
bHVlUHJvZmlsZSh0MiwgdDEsIHQzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1
dF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEK
KyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xv
YmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNb
dDBdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFn
T2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4
XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfYmFzZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfYmFzZSkK
KyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZW5zdXJl
X3Byb3BlcnR5X2V4aXN0cykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZl
X3dpdGhfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29w
X3Jlc29sdmVfd2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNSkKKworCitf
bGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIG9ubHkg
ZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBt
b2RpZnkgdGhlCisgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNh
Y2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorICAgICMgcGluZy1wb25naW5n
IGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29u
dGludWUKKyAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0
IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJl
ZW4gZG9pbmcgYW55d2F5LgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwg
dDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5v
cEdldEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6
bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSBU
YWdPZmZzZXRbdDAsIHQyXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQy
CisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAzMltQQ10sIHQxCisgICAgdmFsdWVQ
cm9maWxlKHQzLCB0MiwgdDEpCisgICAgZGlzcGF0Y2goOSkKKworLm9wR2V0QnlJZFNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9pZCkKKyAgICBkaXNwYXRjaCg5KQor
CisKK19sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudHNMZW5ndGhT
bG93CisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDIKKyAg
ICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0
KQorCisub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9wdXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0Mwor
ICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAg
ICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGJwbmVxIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBsb2FkaSAyMFtQ
Q10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQwLCB0MikKKyAgICB3
cml0ZUJhcnJpZXIodDAsIHQyKQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KKyAg
ICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQorICAgIGRpc3BhdGNoKDkpCisKKy5v
cFB1dEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaWQpCisg
ICAgZGlzcGF0Y2goOSkKKworCittYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hl
Y2tzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2Fk
aSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxU
YWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgYnBuZXEg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGFkZGl0aW9u
YWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisg
ICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBhZGRwIHQx
LCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCisgICAgd3Jp
dGVCYXJyaWVyKHQxLCB0MikKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICBsb2Fk
aSAyNFtQQ10sIHQxCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3Jl
cCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICBkaXNwYXRjaCg5KQorZW5kCisKK19s
bGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgcHV0QnlJZFRyYW5zaXRp
b24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorCisKK19sbGludF9v
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgcHV0QnlJZFRyYW5zaXRpb24oCisg
ICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCisgICAgICAgICAgICBj
b25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVy
ZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAgICAgIAorICAgICAgICAgICAgbG9hZHAgMjhb
UENdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNo
LCBvayBlbmQpCisgICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2Ny
YXRjaF0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0
Y2gsIG9rIGVuZCkKKyAgICAgICAgICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRh
Z09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorICAgICAgICAubG9vcDoKKyAg
ICAgICAgICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29s
ZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICAgICAgICAgIGJwbmVxIG9sZFN0cnVj
dHVyZSwgW3NjcmF0Y2hdLCBzbG93CisgICAgICAgICAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICAg
ICAgICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0
dXJlXSwgTnVsbFRhZywgLmxvb3AKKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCkKKworCitf
bGxpbnRfb3BfZGVsX2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfZGVsX2J5X2lkKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X2dldF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQxCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNsb3cpCisgICAgbG9h
ZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCisg
ICAgYnBuZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1f
c3RvcmFnZVt0MF0sIHQzCisgICAgYmlhZXEgdDEsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3Qw
XSwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgQXJyYXlT
dG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgIGxvYWRpIEFy
cmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisgICAg
YmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93CisgICAgc3RvcmVpIHQyLCBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgdmFsdWVQcm9maWxlKHQyLCB0MSwgdDAp
CisgICAgZGlzcGF0Y2goNSkKKworLm9wR2V0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2dl
dF9hcmd1bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEludDMyVGFnLCB0MiwgLm9wR2V0QXJndW1lbnRCeVZh
bFNsb3cpCisgICAgYWRkaSAxLCB0MgorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2Fk
T2Zmc2V0W2Nmcl0sIHQxCisgICAgYmlhZXEgdDIsIHQxLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xv
dworICAgIG5lZ2kgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUaGlzQXJndW1l
bnRPZmZzZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisgICAgbG9hZGkgVGhpc0FyZ3Vt
ZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEKKyAgICBzdG9yZWkgdDAs
IFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEFyZ3VtZW50QnlWYWxTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQwLCBDZWxsVGFnLCB0MSwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMTZbUENdLCB0
MAorICAgIGJwbmVxIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAub3BHZXRCeVBuYW1l
U2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMjBbUENd
LCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAsIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBs
b2FkaSAyNFtQQ10sIHQwCisgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAorICAgIHN1YmkgMSwg
dDAKKyAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFibGVT
bG90c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVy
dHlTdG9yYWdlW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQwLCA4XSwgdDEKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg3KQorCisub3BHZXRCeVBuYW1l
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3BuYW1lKQorICAgIGRp
c3BhdGNoKDcpCisKKworX2xsaW50X29wX3B1dF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBJbnQzMlRhZywgdDIsIC5vcFB1
dEJ5VmFsU2xvdykKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fZ2xvYmFsRGF0YVt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0Fy
cmF5Q2xhc3NJbmZvW3QwXSwgdDAKKyAgICBicG5lcSBbdDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93
CisgICAgYmlhZXEgdDIsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QxXSwgLm9wUHV0QnlWYWxT
bG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QxXSwgdDAKKyAgICBiaWVxIEFycmF5
U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywg
Lm9wUHV0QnlWYWxFbXB0eQorLm9wUHV0QnlWYWxTdG9yZVJlc3VsdDoKKyAgICBsb2FkaSAxMltQ
Q10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQxLCB0MykKKyAgICB3
cml0ZUJhcnJpZXIodDEsIHQzKQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3Rv
ciArIFRhZ09mZnNldFt0MCwgdDIsIDhdCisgICAgc3RvcmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1f
dmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9w
UHV0QnlWYWxFbXB0eToKKyAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZl
Y3Rvclt0MF0KKyAgICBiaWIgdDIsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdLCAub3BQdXRC
eVZhbFN0b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0MiwgdDEKKyAgICBzdG9yZWkgdDEsIEFycmF5
U3RvcmFnZTo6bV9sZW5ndGhbdDBdCisgICAgam1wIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQKKwor
Lm9wUHV0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfdmFs
KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2RlbF9ieV92YWw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWxfYnlfdmFsKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9pbmRleDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pbmRleCkKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2V0dGVyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2dldHRlcikKKyAgICBkaXNwYXRj
aCg0KQorCisKK19sbGludF9vcF9wdXRfc2V0dGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X3NldHRlcikKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9sb29wOgorICAgIG5vcAorX2xsaW50X29wX2ptcDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgZGlzcGF0Y2hCcmFuY2goNFtQQ10pCisKKworX2xsaW50X29wX2ptcF9z
Y29wZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9qbXBfc2NvcGVzKQorICAgIGRpc3BhdGNoKDApCisKKworbWFjcm8ganVtcFRydWVPckZhbHNl
KGNvbmRpdGlvbk9wLCBzbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQxLCBCb29sZWFuVGFnLCB0MCwgLnNsb3cpCisgICAgY29uZGl0
aW9uT3AodDAsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNw
YXRjaEJyYW5jaCg4W1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihzbG93KQorICAgIGRp
c3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfdHJ1ZToKKyAgICBub3AKK19sbGlu
dF9vcF9qdHJ1ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAganVtcFRydWVPckZhbHNlKAor
ICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpbnogdmFsdWUsIHRhcmdldCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfanRydWUpCisKKworX2xsaW50X29wX2xvb3BfaWZfZmFsc2U6
CisgICAgbm9wCitfbGxpbnRfb3BfamZhbHNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBq
dW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGl6IHZhbHVl
LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pmYWxzZSkKKworCittYWNybyBl
cXVhbE51bGwoY2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhbmRsZXIpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5pbW1lZGlh
dGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBjZWxsSGFuZGxl
cihTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0Ml0sIC50YXJnZXQp
CisgICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkK
KworLmltbWVkaWF0ZToKKyAgICBvcmkgMSwgdDEKKyAgICBpbW1lZGlhdGVIYW5kbGVyKHQxLCAu
dGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCitlbmQKKworX2xsaW50X29wX2plcV9udWxsOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwg
dGFyZ2V0KSBidGJueiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdl
dCBlbmQpCisgICAgCisKK19sbGludF9vcF9qbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0YnogdmFs
dWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2
YWx1ZSwgdGFyZ2V0KSBiaW5lcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKworCitfbGxp
bnRfb3Bfam5lcV9wdHI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
Q2VsbFRhZywgLm9wSm5lcVB0ckJyYW5jaAorICAgIGJwZXEgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XSwgdDEsIC5vcEpuZXFQdHJGYWxsVGhyb3VnaAorLm9wSm5lcVB0ckJyYW5jaDoKKyAgICBk
aXNwYXRjaEJyYW5jaCgxMltQQ10pCisub3BKbmVxUHRyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0
Y2goNCkKKworCittYWNybyBjb21wYXJlKGludGVnZXJDb21wYXJlLCBkb3VibGVDb21wYXJlLCBo
ZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDAsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnKHQzLCB0MiwgdDMpCisgICAgYmluZXEgdDAsIEludDMyVGFnLCAub3AxTm90SW50Cisg
ICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AyTm90SW50CisgICAgaW50ZWdlckNvbXBhcmUodDEs
IHQzLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisub3AxTm90SW50OgorICAgIGJp
YSB0MCwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3AxTm90SW50
T3AyRG91YmxlCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDMsIGZ0
MQorICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlp
MmQgdDMsIHQyLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBmaWkyZCB0MSwgdDAsIGZ0MAor
ICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQp
CisKKy5vcDJOb3RJbnQ6CisgICAgY2kyZCB0MSwgZnQwCisgICAgYmlhIHQyLCBMb3dlc3RUYWcs
IC5zbG93CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQx
LCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisuanVtcFRhcmdldDoKKyAgICBkaXNw
YXRjaEJyYW5jaCgxMltQQ10pCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAg
IGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfbGVzczoKKyAgICBub3AKK19s
bGludF9vcF9qbGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0IGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2psZXNzKQorCisKK19sbGludF9v
cF9qbmxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXF1biBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmxlc3MpCisKKworX2xsaW50
X29wX2xvb3BfaWZfZ3JlYXRlcjoKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2pncmVhdGVyKQorCisKK19sbGludF9vcF9qbmdyZWF0ZXI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXIpCisKKworX2xsaW50X29wX2xvb3BfaWZf
bGVzc2VxOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0
ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
dGFyZ2V0KSBiZGx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfamxlc3NlcSkKKworCitfbGxpbnRfb3Bfam5sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
aWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHRhcmdldCkgYmRndHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRf
aGVscGVyX2pubGVzc2VxKQorCisKK19sbGludF9vcF9sb29wX2lmX2dyZWF0ZXJlcToKKyAgICBu
b3AKK19sbGludF9vcF9qZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21w
YXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJp
Z2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRn
dGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVh
dGVyZXEpCisKKworX2xsaW50X29wX2puZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBs
ZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJkbHR1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl9qbmdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3BfbG9vcF9oaW50OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgZGlzcGF0Y2goMSkKKwor
CitfbGxpbnRfb3Bfc3dpdGNoX2ltbToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
MTJbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDIsIHQxLCB0MCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBU
YWJsZSwgdDMgICAjIEZJWE1FOiB3b3VsZCBiZSBuaWNlIHRvIHBlZXBob2xlIHRoaXMhCisgICAg
bG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzICsg
VmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVxIHQx
LCBJbnQzMlRhZywgLm9wU3dpdGNoSW1tTm90SW50CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6
Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0
cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGxv
YWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0
Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgNF0sIHQxCisgICAgYnRpeiB0MSwgLm9wU3dpdGNo
SW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCisKKy5vcFN3
aXRjaEltbU5vdEludDoKKyAgICBiaWIgdDEsIExvd2VzdFRhZywgLm9wU3dpdGNoSW1tU2xvdyAg
IyBHbyB0byBzbG93IHBhdGggaWYgaXQncyBhIGRvdWJsZS4KKy5vcFN3aXRjaEltbUZhbGxUaHJv
dWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisub3BTd2l0Y2hJbW1TbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfaW1tKQorICAgIGRpc3BhdGNoKDApCisK
KworX2xsaW50X29wX3N3aXRjaF9jaGFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSAxMltQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZSh0MiwgdDEsIHQwKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRw
IENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVt
cFRhYmxlLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1fY2hhcmFjdGVyU3dp
dGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgYWRkcCB0Mywg
dDIKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYmJuZXEgU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENo
YXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTU3RyaW5nOjptX3ZhbHVlW3QwXSwgdDAKKyAgICBi
aW5lcSBTdHJpbmdJbXBsOjptX2xlbmd0aFt0MF0sIDEsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3Vn
aAorICAgIGxvYWRwIFN0cmluZ0ltcGw6Om1fZGF0YThbdDBdLCB0MQorICAgIGJ0aW56IFN0cmlu
Z0ltcGw6Om1faGFzaEFuZEZsYWdzW3QwXSwgSGFzaEZsYWdzOEJpdEJ1ZmZlciwgLm9wU3dpdGNo
Q2hhcjhCaXQKKyAgICBsb2FkaCBbdDFdLCB0MAorICAgIGptcCAub3BTd2l0Y2hDaGFyUmVhZHkK
Ky5vcFN3aXRjaENoYXI4Qml0OgorICAgIGxvYWRiIFt0MV0sIHQwCisub3BTd2l0Y2hDaGFyUmVh
ZHk6CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAs
IFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAu
b3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5j
aE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGxvYWRpIFt0MiwgdDAs
IDRdLCB0MQorICAgIGJ0aXogdDEsIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0
Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQorCisub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2g6CisgICAg
ZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKworX2xsaW50X29wX3N3aXRjaF9zdHJpbmc6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfc3Ry
aW5nKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX25ld19mdW5jOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBidGl6IDEyW1BDXSwgLm9wTmV3RnVuY1VuY2hlY2tlZAorICAgIGxv
YWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1
ZVRhZywgLm9wTmV3RnVuY0RvbmUKKy5vcE5ld0Z1bmNVbmNoZWNrZWQ6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX25ld19mdW5jKQorLm9wTmV3RnVuY0RvbmU6CisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDMp
CisKKworbWFjcm8gZG9DYWxsKGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2Fk
aSAxNltQQ10sIHQxCisgICAgbG9hZHAgTExJbnRDYWxsTGlua0luZm86OmNhbGxlZVt0MV0sIHQy
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BD
YWxsU2xvdykKKyAgICBiaW5lcSB0MywgdDIsIC5vcENhbGxTbG93CisgICAgbG9hZGkgMTJbUENd
LCB0MworICAgIGFkZHAgMjQsIFBDCisgICAgbHNoaWZ0aSAzLCB0MworICAgIGFkZHAgY2ZyLCB0
MyAgIyB0MyBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9mIGNmcgorICAgIGxvYWRwIEpTRnVuY3Rp
b246Om1fc2NvcGVDaGFpblt0Ml0sIHQwCisgICAgc3RvcmVpIHQyLCBDYWxsZWUgKyBQYXlsb2Fk
T2Zmc2V0W3QzXQorICAgIHN0b3JlaSB0MCwgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZzZXRbdDNd
CisgICAgbG9hZGkgOCAtIDI0W1BDXSwgdDIKKyAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQg
KyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlcCBjZnIsIENhbGxlckZyYW1lW3QzXQorICAgIHN0
b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIENl
bGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVD
aGFpbiArIFRhZ09mZnNldFt0M10KKyAgICBtb3ZlIHQzLCBjZnIKKyAgICBjYWxsIExMSW50Q2Fs
bExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0KKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgp
CisKKy5vcENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBoZWxwZXIpCitlbmQKKwor
X2xsaW50X29wX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRf
aGVscGVyX2NhbGwpCisKKworX2xsaW50X29wX2NvbnN0cnVjdDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY29uc3RydWN0KQorCisKK19sbGludF9vcF9j
YWxsX3ZhcmFyZ3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHNsb3dQYXRoRm9yQ2FsbCg2
LCBfbGxpbnRfaGVscGVyX2NhbGxfdmFyYXJncykKKworCitfbGxpbnRfb3BfY2FsbF9ldmFsOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAKKyAgICAjIEV2YWwgaXMgZXhlY3V0ZWQgaW4gb25l
IG9mIHR3byBtb2RlczoKKyAgICAjCisgICAgIyAxKSBXZSBmaW5kIHRoYXQgd2UncmUgcmVhbGx5
IGludm9raW5nIGV2YWwoKSBpbiB3aGljaCBjYXNlIHRoZQorICAgICMgICAgZXhlY3V0aW9uIGlz
IHBlcmZvbWVkIGVudGlyZWx5IGluc2lkZSB0aGUgaGVscGVyLCBhbmQgaXQKKyAgICAjICAgIHJl
dHVybnMgdGhlIFBDIG9mIGEgZnVuY3Rpb24gdGhhdCBqdXN0IHJldHVybnMgdGhlIHJldHVybiB2
YWx1ZQorICAgICMgICAgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAjCisgICAgIyAyKSBX
ZSBmaW5kIHRoYXQgd2UncmUgaW52b2tpbmcgc29tZXRoaW5nIGNhbGxlZCBldmFsKCkgdGhhdCBp
cyBub3QKKyAgICAjICAgIHRoZSByZWFsIGV2YWwuIFRoZW4gdGhlIGhlbHBlciByZXR1cm5zIHRo
ZSBQQyBvZiB0aGUgdGhpbmcgdG8KKyAgICAjICAgIGNhbGwsIGFuZCB3ZSBjYWxsIGl0LgorICAg
ICMKKyAgICAjIFRoaXMgYWxsb3dzIHVzIHRvIGhhbmRsZSB0d28gY2FzZXMsIHdoaWNoIHdvdWxk
IHJlcXVpcmUgYSB0b3RhbCBvZgorICAgICMgdXAgdG8gZm91ciBwaWVjZXMgb2Ygc3RhdGUgdGhh
dCBjYW5ub3QgYmUgZWFzaWx5IHBhY2tlZCBpbnRvIHR3bworICAgICMgcmVnaXN0ZXJzIChDIGZ1
bmN0aW9ucyBjYW4gcmV0dXJuIHVwIHRvIHR3byByZWdpc3RlcnMsIGVhc2lseSk6CisgICAgIwor
ICAgICMgLSBUaGUgY2FsbCBmcmFtZSByZWdpc3Rlci4gVGhpcyBtYXkgb3IgbWF5IG5vdCBoYXZl
IGJlZW4gbW9kaWZpZWQKKyAgICAjICAgYnkgdGhlIGhlbHBlciwgYnV0IHRoZSBjb252ZW50aW9u
IGlzIHRoYXQgaXQgcmV0dXJucyBpdC4gSXQncyBub3QKKyAgICAjICAgdG90YWxseSBjbGVhciBp
ZiB0aGF0J3MgbmVjZXNzYXJ5LCBzaW5jZSB0aGUgY2ZyIGlzIGNhbGxlZSBzYXZlLgorICAgICMg
ICBCdXQgdGhhdCdzIG91ciBzdHlsZSBpbiB0aGlzIGhlcmUgaW50ZXJwcmV0ZXIgc28gd2Ugc3Rp
Y2sgd2l0aCBpdC4KKyAgICAjCisgICAgIyAtIEEgYml0IHRvIHNheSBpZiB0aGUgaGVscGVyIHN1
Y2Nlc3NmdWxseSBleGVjdXRlZCB0aGUgZXZhbCBhbmQgaGFzCisgICAgIyAgIHRoZSByZXR1cm4g
dmFsdWUsIG9yIGRpZCBub3QgZXhlY3V0ZSB0aGUgZXZhbCBidXQgaGFzIGEgUEMgZm9yIHVzCisg
ICAgIyAgIHRvIGNhbGwuCisgICAgIworICAgICMgLSBFaXRoZXI6CisgICAgIyAgIC0gVGhlIEpT
IHJldHVybiB2YWx1ZSAodHdvIHJlZ2lzdGVycyksIG9yCisgICAgIworICAgICMgICAtIFRoZSBQ
QyB0byBjYWxsLgorICAgICMKKyAgICAjIEl0IHR1cm5zIG91dCB0byBiZSBlYXNpZXIgdG8ganVz
dCBhbHdheXMgaGF2ZSB0aGlzIHJldHVybiB0aGUgY2ZyCisgICAgIyBhbmQgYSBQQyB0byBjYWxs
LCBhbmQgdGhhdCBQQyBtYXkgYmUgYSBkdW1teSB0aHVuayB0aGF0IGp1c3QKKyAgICAjIHJldHVy
bnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAgCisgICAgc2xvd1Bh
dGhGb3JDYWxsKDQsIF9sbGludF9oZWxwZXJfY2FsbF9ldmFsKQorCisKK19sbGludF9nZW5lcmlj
X3JldHVybl9wb2ludDoKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKworX2xsaW50X29wX3Rl
YXJfb2ZmX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENd
LCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkCisgICAgYmllcSBU
YWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9u
Tm90Q3JlYXRlZAorLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkOgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQorLm9wVGVhck9mZkFjdGl2YXRpb25O
b3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3RlYXJfb2ZmX2FyZ3Vt
ZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3Vi
aSAxLCB0MCAgICMgR2V0IHRoZSB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIKKyAgICBiaWVx
IFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFyZ3VtZW50
c05vdENyZWF0ZWQKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGVhcl9vZmZfYXJndW1l
bnRzKQorLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMikKKwor
CittYWNybyBkb1JldHVybigpCisgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICBsb2Fk
cCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKKyAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJl
dHVybih0MikKKyAgICByZXQKK2VuZAorCitfbGxpbnRfb3BfcmV0OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENd
LCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVy
bigpCisKKworX2xsaW50X29wX2NhbGxfcHV0X3Jlc3VsdDoKKyAgICBsb2FkaSA0W1BDXSwgdDIK
KyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4
XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHZhbHVlUHJv
ZmlsZSh0MSwgdDAsIHQzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkgIyBOZWVkcyB0byBiZSBoZXJl
IGJlY2F1c2UgaXQgd291bGQgY2xvYmJlciB0MSwgdDAKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9yZXRfb2JqZWN0X29yX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNo
ZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
b3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlw
ZVt0Ml0sIE9iamVjdFR5cGUsIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAorICAgIGRvUmV0
dXJuKCkKKworLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0OgorICAgIGxvYWRpIDhbUENdLCB0
MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigp
CisKKworX2xsaW50X29wX21ldGhvZF9jaGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
IyBXZSBpZ25vcmUgbWV0aG9kIGNoZWNrcyBhbmQgdXNlIG5vcm1hbCBnZXRfYnlfaWQgb3B0aW1p
emF0aW9ucy4KKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zdHJjYXQ6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zdHJjYXQpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfdG9fcHJpbWl0aXZlOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5v
cFRvUHJpbWl0aXZlSXNJbW0KKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIK
KyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwg
U3RyaW5nVHlwZSwgLm9wVG9QcmltaXRpdmVTbG93Q2FzZQorLm9wVG9QcmltaXRpdmVJc0ltbToK
KyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvUHJpbWl0aXZl
U2xvd0Nhc2U6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RvX3ByaW1pdGl2ZSkKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9nZXRfcG5hbWVzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X3BuYW1lcykKKyAgICBkaXNw
YXRjaCgwKSAjIFRoZSBoZWxwZXIgZWl0aGVyIGFkdmFuY2VzIHRoZSBQQyBvciBqdW1wcyB1cyB0
byBzb21ld2hlcmUgZWxzZS4KKworCitfbGxpbnRfb3BfbmV4dF9wbmFtZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRpIDE2W1BDXSwgdDIKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MAorICAgIGJpZXEgdDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MiwgOF0sIC5vcE5leHRQbmFtZUVuZAorICAgIGxvYWRpIDIwW1BDXSwg
dDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MgorICAgIGxvYWRwIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fanNTdHJpbmdzW3QyXSwgdDMKKyAgICBsb2FkaSBbdDMs
IHQwLCA4XSwgdDMKKyAgICBhZGRpIDEsIHQwCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRh
Z09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XQorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MywgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgYnBu
ZXEgdDEsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9w
TmV4dFBuYW1lU2xvdworICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVk
UHJvdG90eXBlQ2hhaW5bdDJdLCB0MAorICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rv
clt0MF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BOZXh0UG5hbWVUYXJnZXQKKy5vcE5leHRQbmFt
ZUNoZWNrUHJvdG90eXBlTG9vcDoKKyAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBU
YWdPZmZzZXRbdDFdLCBOdWxsVGFnLCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgU3RydWN0
dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDFdLCB0MgorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MQorICAgIGJwbmVxIHQxLCBbdDBdLCAub3BOZXh0UG5hbWVT
bG93CisgICAgYWRkcCA0LCB0MAorICAgIGJ0cG56IFt0MF0sIC5vcE5leHRQbmFtZUNoZWNrUHJv
dG90eXBlTG9vcAorLm9wTmV4dFBuYW1lVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDI0W1BD
XSkKKworLm9wTmV4dFBuYW1lRW5kOgorICAgIGRpc3BhdGNoKDcpCisKKy5vcE5leHRQbmFtZVNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25leHRfcG5hbWUpICMgVGhpcyBlaXRo
ZXIga2VlcHMgdGhlIFBDIHdoZXJlIGl0IHdhcyAoY2F1c2luZyB1cyB0byBsb29wKSBvciBzZXRz
IGl0IHRvIHRhcmdldC4KKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9wdXNoX3Njb3Bl
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVz
aF9zY29wZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3Bfc2NvcGU6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3Bfc2NvcGUp
CisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfcHVzaF9uZXdfc2NvcGU6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX25ld19zY29w
ZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9jYXRjaDoKKyAgICAjIFRoaXMgaXMg
d2hlcmUgd2UgZW5kIHVwIGZyb20gdGhlIEpJVCdzIHRocm93IHRyYW1wb2xpbmUgKGJlY2F1c2Ug
dGhlCisgICAgIyBtYWNoaW5lIGNvZGUgcmV0dXJuIGFkZHJlc3Mgd2lsbCBiZSBzZXQgdG8gX2xs
aW50X29wX2NhdGNoKSwgYW5kIGZyb20KKyAgICAjIHRoZSBpbnRlcnByZXRlcidzIHRocm93IHRy
YW1wb2xpbmUgKHNlZSBfbGxpbnRfdGhyb3dfdHJhbXBvbGluZSkuCisgICAgIyBUaGUgSklUIHRo
cm93aW5nIHByb3RvY29sIGNhbGxzIGZvciB0aGUgY2ZyIHRvIGJlIGluIHQwLiBUaGUgdGhyb3dp
bmcKKyAgICAjIGNvZGUgbXVzdCBoYXZlIGtub3duIHRoYXQgd2Ugd2VyZSB0aHJvd2luZyB0byB0
aGUgaW50ZXJwcmV0ZXIsIGFuZCBoYXZlCisgICAgIyBzZXQgSlNHbG9iYWxEYXRhOjp0YXJnZXRJ
bnRlcnByZXRlclBDRm9yVGhyb3cuCisgICAgbW92ZSB0MCwgY2ZyCisgICAgbG9hZHAgSklUU3Rh
Y2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjp0YXJn
ZXRJbnRlcnByZXRlclBDRm9yVGhyb3dbdDNdLCBQQworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6
ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10sIHQwCisgICAgbG9hZGkgSlNHbG9iYWxEYXRh
OjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdLCB0MQorICAgIHN0b3JlaSAwLCBKU0dsb2JhbERh
dGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIEVtcHR5VmFsdWVU
YWcsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSAgICAgICAKKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0K
KyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHRyYWNlRXhlY3V0aW9u
KCkgICMgVGhpcyBuZWVkcyB0byBiZSBoZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjbG9i
YmVyIHQwLCB0MSwgdDIsIHQzIGFib3ZlLgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29w
X3Rocm93OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfdGhyb3cpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3dfcmVmZXJlbmNl
X2Vycm9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29w
X2pzcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYWRk
aSAzICogNCwgUEMsIHQxCisgICAgc3RvcmVpIHQxLCBbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRj
aEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3JldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZHAgW2NmciwgdDAsIDhdLCBQQworICAgIGRp
c3BhdGNoKDApCisKKworX2xsaW50X29wX2RlYnVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVidWcpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfcHJvZmlsZV93aWxsX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIHQwCisgICAg
YnRweiBbdDBdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQorLm9wUHJvZmlsZVdpbGxDYWxsRG9uZToKKyAgICBk
aXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wcm9maWxlX2RpZF9jYWxsOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjplbmFibGVkUHJvZmlsZXJSZWZlcmVu
Y2Vbc3BdLCB0MAorICAgIGJ0cHogW3QwXSwgLm9wUHJvZmlsZVdpbGxDYWxsRG9uZQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQorLm9wUHJvZmlsZURpZENh
bGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2VuZDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50
X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmU6CisgICAgIyBXaGVuIHRocm93aW5nIGZyb20g
dGhlIGludGVycHJldGVyIChpLmUuIHRocm93aW5nIGZyb20gTExJbnRIZWxwZXJzKSwgc28KKyAg
ICAjIHRoZSB0aHJvdyB0YXJnZXQgaXMgbm90IG5lY2Vzc2FyaWx5IGludGVycHJldGVkIGNvZGUs
IHdlIGNvbWUgdG8gaGVyZS4KKyAgICAjIFRoaXMgZXNzZW50aWFsbHkgZW11bGF0ZXMgdGhlIEpJ
VCdzIHRocm93aW5nIHByb3RvY29sLgorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERh
dGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFd
LCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQor
CisKK19sbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lOgorICAgIHByZXNlcnZlUmV0
dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxE
YXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3Qx
XSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0K
KworCisjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2Ug
ZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KKyMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIg
YXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQKKyMgYXMgbXVj
aC4KKworbWFjcm8gbm90U3VwcG9ydGVkKCkKKyAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgICAg
ICBjcmFzaCgpCisgICAgZWxzZQorICAgICAgICAjIFdlIHNob3VsZCB1c2Ugd2hhdGV2ZXIgdGhl
IHNtYWxsZXN0IHBvc3NpYmxlIGluc3RydWN0aW9uIGlzLCBqdXN0IHRvCisgICAgICAgICMgZW5z
dXJlIHRoYXQgdGhlcmUgaXMgYSBnYXAgYmV0d2VlbiBpbnN0cnVjdGlvbiBsYWJlbHMuIElmIG11
bHRpcGxlCisgICAgICAgICMgc21hbGxlc3QgaW5zdHJ1Y3Rpb25zIGV4aXN0LCB3ZSBzaG91bGQg
cGljayB0aGUgb25lIHRoYXQgaXMgbW9zdAorICAgICAgICAjIGxpa2VseSByZXN1bHQgaW4gZXhl
Y3V0aW9uIGJlaW5nIGhhbHRlZC4gQ3VycmVudGx5IHRoYXQgaXMgdGhlIGJyZWFrCisgICAgICAg
ICMgaW5zdHJ1Y3Rpb24gb24gYWxsIGFyY2hpdGVjdHVyZXMgd2UncmUgaW50ZXJlc3RlZCBpbi4g
KEJyZWFrIGlzIGludDMKKyAgICAgICAgIyBvbiBJbnRlbCwgd2hpY2ggaXMgMSBieXRlLCBhbmQg
YmtwdCBvbiBBUk12Nywgd2hpY2ggaXMgMiBieXRlcy4pCisgICAgICAgIGJyZWFrCisgICAgZW5k
CitlbmQKKworX2xsaW50X29wX2dldF9hcnJheV9sZW5ndGg6CisgICAgbm90U3VwcG9ydGVkKCkK
KworX2xsaW50X29wX2dldF9ieV9pZF9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxp
bnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxp
bnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxp
bnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGlu
dF9vcF9nZXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2dldHRlcl9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2dldHRlcl9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2dldHRlcl9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9n
ZXRfYnlfaWRfcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9p
ZF9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfc3RyaW5nX2xlbmd0
aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX2dlbmVyaWM6Cisg
ICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF9yZXBsYWNlOgorICAgIG5v
dFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbjoKKyAgICBub3RT
dXBwb3J0ZWQoKQorCisKKyMgSW5kaWNhdGUgdGhlIGVuZCBvZiBMTEludC4KK19sbGludF9lbmQ6
CisgICAgY3Jhc2goKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgi
CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcu
aCIKKyNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CisKKyNpbmNsdWRlICJMTEludEFzc2VtYmx5
LmgiCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisjZGVmaW5lIExvd0xl
dmVsSW50ZXJwcmV0ZXJfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFC
TEUoTExJTlQpCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworI2RlZmluZSBMTElOVF9JTlNUUlVD
VElPTl9ERUNMKG9wY29kZSwgbGVuZ3RoKSBleHRlcm4gIkMiIHZvaWQgbGxpbnRfIyNvcGNvZGUo
KTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoTExJTlRfSU5TVFJVQ1RJT05fREVDTCk7CisjdW5k
ZWYgTExJTlRfSU5TVFJVQ1RJT05fREVDTAorCitleHRlcm4gIkMiIHZvaWQgbGxpbnRfYmVnaW4o
KTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9lbmQoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9w
cm9ncmFtX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZXZhbF9wcm9sb2d1ZSgp
OworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKCk7Citl
eHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSgpOwor
ZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKCk7Citl
eHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaygp
OworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KCk7CitleHRlcm4g
IkMiIHZvaWQgbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSgpOworZXh0ZXJuICJD
IiB2b2lkIGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUoKTsKKworI2VuZGlmIC8v
IEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExvd0xldmVsSW50ZXJwcmV0ZXJfaApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1MzkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIm9wdCIKKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVyCisg
IGRlZiBpbml0aWFsaXplKG5hbWUpCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVm
IGFybVY3T3BlcmFuZAorICAgIEBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFybVY3U2luZ2xlCisg
ICAgcmFpc2UgdW5sZXNzIEBuYW1lID1+IC9eZC8KKyAgICAicyIgKyAkfi5wb3N0X21hdGNoLnRv
X2kgKiAyCisgIGVuZAorZW5kCisKK0FSTXY3X0VYVFJBX0dQUlMgPSBbU3BlY2lhbFJlZ2lzdGVy
Lm5ldygicjMiKSwgU3BlY2lhbFJlZ2lzdGVyLm5ldygicjgiKSwgU3BlY2lhbFJlZ2lzdGVyLm5l
dygicjkiKV0KK0FSTXY3X0VYVFJBX0ZQUlMgPSBbU3BlY2lhbFJlZ2lzdGVyLm5ldygiZDciKV0K
KworZGVmIG1vdmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJlbnRseSB3ZSBv
bmx5IGhhbmRsZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1vdi9tb3Z0IGZv
ciB0aGUgY29tcGxleCBvbmVzLgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2CisgICAg
JGFzbS5wdXRzICJtb3Z3IFwjI3t2YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAg
ZWxzaWYgKH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20ucHV0cyAibXZu
dyBcIyN7fnZhbHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNlCisgICAgJGFz
bS5wdXRzICJtb3Z3IFwjI3t2YWx1ZSAmIDB4ZmZmZn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5k
fSIKKyAgICBpZiAodmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCisgICAgICAkYXNtLnB1dHMgIm1v
dnQgXCMje3ZhbHVlID4+IDE2fSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAgIGVuZAor
ICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBj
YXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICJyMCIKKyAgICB3aGVu
ICJ0MSIsICJhMSIsICJyMSIKKyAgICAgICJyMSIKKyAgICB3aGVuICJ0MiIsICJhMiIKKyAgICAg
ICJyMiIKKyAgICB3aGVuICJhMyIKKyAgICAgICJyMyIKKyAgICB3aGVuICJ0MyIKKyAgICAgICJy
NCIKKyAgICB3aGVuICJ0NCIKKyAgICAgICJyNyIKKyAgICB3aGVuICJjZnIiCisgICAgICAicjUi
CisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgRlBS
ZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJm
dDAiLCAiZnIiCisgICAgICAiZDAiCisgICAgd2hlbiAiZnIxIiwKKyAgICAgICJkMSIKKyAgICB3
aGVuICJmcjIiCisgICAgICAiZDIiCisgICAgd2hlbiAiZnIzIgorICAgICAgImQzIgorICAgIHdo
ZW4gImZyNCIKKyAgICAgICJkNCIKKyAgICB3aGVuICJmcjUiCisgICAgICAiZDUiCisgICAgZWxz
ZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdTaW5nbGUKKyAg
ICByYWlzZSB1bmxlc3MgQG5hbWUgPX4gL15kLworICAgICJzIiArICR+LnBvc3RfbWF0Y2gudG9f
aSAqIDIKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiBhcm1WN09wZXJhbmQK
KyAgICByYWlzZSAiSW52YWxpZCBpbW1lZGlhdGUgI3t2YWx1ZX0iIGlmIHZhbHVlIDwgMCBvciB2
YWx1ZSA+IDI1NQorICAgICJcIyN7dmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNz
CisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICByYWlzZSAiQmFkIG9mZnNldCBhdCAje2NvZGVPcmln
aW5TdHJpbmd9IiBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiBvciBvZmZzZXQudmFsdWUgPiAweGZm
ZgorICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7b2Zmc2V0LmFybVY3T3BlcmFuZH1dIgor
ICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIHJh
aXNlICJCYWQgb2Zmc2V0IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIGlmIG9mZnNldCAhPSAwCisg
ICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tpbmRleC5hcm1WN09wZXJhbmR9LCBsc2wgXCMj
e3NjYWxlfV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBkZWYgYXJt
VjdPcGVyYW5kCisgICAgcmFpc2UgIlVuY29udmVydGVkIGFic29sdXRlIGFkZHJlc3MgYXQgI3tj
b2RlT3JpZ2luU3RyaW5nfSIKKyAgZW5kCitlbmQKKworIworIyBMb3dlcmluZyBvZiBicmFuY2gg
b3BzLiBGb3IgZXhhbXBsZToKKyMKKyMgYmFkZGl6IGZvbywgYmFyLCBiYXoKKyMKKyMgd2lsbCBi
ZWNvbWU6CisjCisjIGFkZGkgZm9vLCBiYXIKKyMgYnogYmF6CisjCisKK2RlZiBhcm1WN0xvd2Vy
QnJhbmNoT3BzKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9k
ZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgY2FzZSBub2RlLm9wY29k
ZQorICAgICAgd2hlbiAvXmIoYWRkaXxzdWJpfG9yaXxtdWxpfGFkZHApLworICAgICAgICBvcCA9
ICQxCisgICAgICAgIGJyYW5jaCA9ICJiIiArICR+LnBvc3RfbWF0Y2gKKyAgICAgICAgbmV3TGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBvcCwgbm9kZS5vcGVyYW5kc1sw
Li4tMl0pCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdp
biwgYnJhbmNoLCBbbm9kZS5vcGVyYW5kc1stMV1dKQorICAgICAgZWxzZQorICAgICAgICBuZXdM
aXN0IDw8IG5vZGUKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIG5ld0xpc3QgPDwgbm9kZQor
ICAgIGVuZAorICB9CisgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1hbGZvcm1l
ZCBhZGRyZXNzZXMuIEZvciBleGFtcGxlOgorIworIyBsb2FkcCAxMDAwMFtmb29dLCBiYXIKKyMK
KyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUgMTAwMDAsIHRtcAorIyBhZGRwIGZvbywgdG1wCisj
IGxvYWRwIDBbdG1wXSwgYmFyCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIGFybVY3TG93ZXJNYWxm
b3JtZWRBZGRyZXNzZXMobGlzdCkKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IG5vZGUgfAor
ICAgICAgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzKGxpc3QpCisgICAgfQorICBl
bmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVz
c2VzKGxpc3QpCisgICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgb3Igb2Zmc2V0LnZhbHVlID4g
MHhmZmYKKyAgICAgIHRtcCA9IFRtcC5uZXcoY29kZU9yaWdpbiwgOmdwcikKKyAgICAgIGxpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW0ltbWVkaWF0ZS5uZXcob2Zm
c2V0KSwgdG1wXSkKKyAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJh
ZGRwIiwgW2Jhc2UsIHRtcF0pCisgICAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCB0bXAsIElt
bWVkaWF0ZS5uZXcoMCkpCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2Vu
ZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXMo
bGlzdCkKKyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAgICAgdG1wID0gVG1wLm5ldyhjb2Rl
T3JpZ2luLCA6Z3ByKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwg
Im1vdmUiLCBbSW1tZWRpYXRlLm5ldyhvZmZzZXQpLCB0bXBdKQorICAgICAgbGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgImFkZHAiLCBbYmFzZSwgdG1wXSkKKyAgICAgIEJhc2VJ
bmRleC5uZXcoY29kZU9yaWdpbiwgdG1wLCBpbmRleCwgc2NhbGUsIEltbWVkaWF0ZS5uZXcoMCkp
CisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBBYnNv
bHV0ZUFkZHJlc3MKKyAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXMobGlzdCkKKyAg
ICB0bXAgPSBUbXAubmV3KGNvZGVPcmdpbiwgOmdwcikKKyAgICBsaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFtJbW1lZGlhdGUubmV3KGFkZHJlc3MpLCB0bXBdKQor
ICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldygwKSkKKyAgZW5k
CitlbmQKKworZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXMobGlzdCkKKyAgbmV3TGlz
dCA9IFtdCisgIGxpc3QuZWFjaCB7CisgICAgfCBub2RlIHwKKyAgICBuZXdMaXN0IDw8IG5vZGUu
YXJtVjdMb3dlck1hbGZvcmVkQWRkcmVzc2VzKG5ld0xpc3QpCisgIH0KKyAgbmV3TGlzdAorZW5k
CisKKyMKKyMgTG93ZXJpbmcgb2YgbWFsZm9ybWVkIGltbWVkaWF0ZXMgZXhjZXB0IHdoZW4gdXNl
ZCBpbiBhICJtb3ZlIiBpbnN0cnVjdGlvbi4KKyMgRm9yIGV4YW1wbGU6CisjCisjIGFkZHAgNjQy
NjQxLCBmb28KKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUgNjQyNjQxLCB0bXAKKyMgYWRk
cCB0bXAsIGZvbworIworCitjbGFzcyBOb2RlCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1t
ZWRpYXRlcyhsaXN0KQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBu
b2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzKGxpc3QpCisgICAgfQorICBlbmQKK2Vu
ZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVz
KGxpc3QpCisgICAgaWYgdmFsdWUgPCAwIG9yIHZhbHVlID4gMjU1CisgICAgICB0bXAgPSBUbXAu
bmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2Rl
T3JpZ2luLCAibW92ZSIsIFtzZWxmLCB0bXBdKQorICAgICAgdG1wCisgICAgZWxzZQorICAgICAg
c2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVk
aWF0ZXMobGlzdCkKKyAgbmV3TGlzdCA9IFtdCisgIGxpc3QuZWFjaCB7CisgICAgfCBub2RlIHwK
KyAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICBjYXNlIG5vZGUub3Bjb2RlCisg
ICAgICB3aGVuICJtb3ZlIgorICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgIHdoZW4gImFk
ZGkiLCAiYWRkcCIsICJzdWJpIiwgInN1YnAiCisgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0u
aXNfYT8gSW1tZWRpYXRlIGFuZAorICAgICAgICAgICAgbm9kZS5vcGVyYW5kc1swXS52YWx1ZSA8
IDAgYW5kCisgICAgICAgICAgICBub2RlLm9wZXJhbmRzWzBdLnZhbHVlID49IDI1NQorICAgICAg
ICAgIGlmIG5vZGUub3Bjb2RlID1+IC9hZGQvCisgICAgICAgICAgICBuZXdPcGNvZGUgPSAic3Vi
IiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdP
cGNvZGUgPSAiYWRkIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KKyAgICAgICAgICBlbmQKKyAgICAg
ICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5ld09wY29k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSW1tZWRpYXRlLm5ldygt
bm9kZS5vcGVyYW5kc1swXS52YWx1ZSldICsgbm9kZS5vcGVyYW5kc1sxLi4tMV0pCisgICAgICAg
IGVsc2UKKyAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUuYXJtVjdMb3dlck1hbGZvcm1lZEltbWVk
aWF0ZXMobmV3TGlzdCkKKyAgICAgICAgZW5kCisgICAgICB3aGVuICJtdWxpIgorICAgICAgICBp
ZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgICB0bXAgPSBUbXAubmV3KGNv
ZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9k
ZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtvcGVyYW5kc1swXSwgdG1wXSkKKyAgICAgICAgICBuZXdM
aXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtdWxpIiwgW3RtcF0gKyBv
cGVyYW5kc1sxLi4tMV0pCisgICAgICAgIGVsc2UKKyAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUu
YXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXMobmV3TGlzdCkKKyAgICAgICAgZW5kCisgICAg
ICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRp
YXRlcyhuZXdMaXN0KQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgbmV3TGlzdCA8PCBub2Rl
CisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWlzcGxh
Y2VkIGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGU6CisjCisjIGFkZGkgZm9vLCBbYmFyXQorIworIyB3
aWxsIGJlY29tZToKKyMKKyMgbG9hZGkgW2Jhcl0sIHRtcAorIyBhZGRpIGZvbywgdG1wCisjIHN0
b3JlaSB0bXAsIFtiYXJdCisjCisjIEFub3RoZXIgZXhhbXBsZToKKyMKKyMgYWRkaSBbZm9vXSwg
YmFyCisjCisjIHdpbGwgYmVjb21lOgorIworIyBsb2FkaSBbZm9vXSwgdG1wCisjIGFkZGkgdG1w
LCBiYXIKKyMKKworZGVmIGFybVY3QXNSZWdpc3RlcihwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFu
ZCwgc3VmZml4LCBuZWVkU3RvcmUpCisgIHJldHVybiBvcGVyYW5kIHVubGVzcyBvcGVyYW5kLmFk
ZHJlc3M/CisgIAorICB0bXAgPSBUbXAubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgaWYgc3VmZml4
ID09ICJkIiB0aGVuIDpmcHIgZWxzZSA6Z3ByIGVuZCkKKyAgcHJlTGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAibG9hZCIgKyBzdWZmaXgsIFtvcGVyYW5kLCB0bXBd
KQorICBpZiBuZWVkU3RvcmUKKyAgICBwb3N0TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFu
ZC5jb2RlT3JpZ2luLCAic3RvcmUiICsgc3VmZml4LCBbdG1wLCBvcGVyYW5kXSkKKyAgZW5kCisg
IHRtcAorZW5kCisKK2RlZiBhcm1WN0FzUmVnaXN0ZXJzKHByZUxpc3QsIHBvc3RMaXN0LCBvcGVy
YW5kcywgc3VmZml4KQorICBuZXdPcGVyYW5kcyA9IFtdCisgIG9wZXJhbmRzLmVhY2hfd2l0aF9p
bmRleCB7CisgICAgfCBvcGVyYW5kLCBpbmRleCB8CisgICAgbmV3T3BlcmFuZHMgPDwgYXJtVjdB
c1JlZ2lzdGVyKHByZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kLCBzdWZmaXgsIGluZGV4ID09IG9w
ZXJhbmRzLnNpemUgLSAxKQorICB9CisgIG5ld09wZXJhbmRzCitlbmQKKworZGVmIGFybVY3TG93
ZXJNaXNwbGFjZWRBZGRyZXNzZXMobGlzdCkKKyAgbmV3TGlzdCA9IFtdCisgIGxpc3QuZWFjaCB7
CisgICAgfCBub2RlIHwKKyAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICBwb3N0
SW5zdHJ1Y3Rpb25zID0gW10KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdoZW4gImFk
ZGkiLCAiYWRkcCIsICJhbmRpIiwgImFuZHAiLCAibHNoaWZ0aSIsICJtdWxpIiwgIm5lZ2kiLCAi
bm90aSIsICJvcmkiLCAib3JwIiwgInJzaGlmdGkiLAorICAgICAgICAidXJzaGlmdGkiLCAic3Vi
aSIsICJzdWJwIiwgInhvcmkiLCAieG9ycCIsIC9eYmkvLCAvXmJwLywgL15idGkvLCAvXmJ0cC8s
ICJjYWxsIiwgL15jaS8sIC9eY3AvLAorICAgICAgICAvXnRpLworICAgICAgICBuZXdMaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcm1WN0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3Bl
cmFuZHMsICJpIikpCisgICAgICB3aGVuIC9eYmIvLCAvXmJ0Yi8KKyAgICAgICAgbmV3TGlzdCA8
PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYXJtVjdBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9w
ZXJhbmRzLCAiYiIpKQorICAgICAgd2hlbiAiYWRkZCIsICJkaXZkIiwgInN1YmQiLCAibXVsZCIs
ICJzcXJ0ZCIsIC9eYmQvCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUu
Y29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNv
ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMo
bmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImQiKSkKKyAgICAgIGVs
c2UKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICBlbmQKKyAgICAgIG5ld0xpc3QgKz0g
cG9zdEluc3RydWN0aW9ucworICAgIGVsc2UKKyAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgIGVu
ZAorICB9CisgIG5ld0xpc3QKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXJBUk12
NworICAgIG15TGlzdCA9IGFybVY3TG93ZXJCcmFuY2hPcHMoQGxpc3QpCisgICAgbXlMaXN0ID0g
YXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3NlcyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdM
b3dlck1hbGZvcm1lZEltbWVkaWF0ZXMobXlMaXN0KQorICAgIG15TGlzdCA9IGFybVY3TG93ZXJN
aXNwbGFjZWRBZGRyZXNzZWQobXlMaXN0KQorICAgIG15TGlzdCA9IGFzc2lnblJlZ2lzdGVyc1Rv
VGVtcG9yYXJpZXMobXlMaXN0LCA6Z3ByLCBBUk12N19FWFRSQV9HUFJTKQorICAgIG15TGlzdCA9
IGFzc2lnblJlZ2lzdGVyc1RvVGVtcG9yYXJpZXMobXlMaXN0LCA6ZnByLCBBUk12N19FWFRSQV9G
UFJTKQorICAgIG15TGlzdC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBub2RlLmxvd2Vy
KCJBUk12NyIpCisgICAgfQorICBlbmQKK2VuZAorCitkZWYgYXJtVjdPcGVyYW5kcyhvcGVyYW5k
cykKKyAgb3BlcmFuZHMubWFwe3x2fCB2LmFybVY3T3BlcmFuZH0uam9pbigiICIpCitlbmQKKwor
ZGVmIGFybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKQorICBhcm1WN09wZXJhbmRzKFtvcGVy
YW5kc1stMV1dICsgb3BlcmFuZHNbMC4uLTJdKQorZW5kCisKK2RlZiBlbWl0QXJtVjdDb21wYWN0
KG9wY29kZTIsIG9wY29kZTMsIG9wZXJhbmRzKQorICBpZiBvcGVyYW5kcy5zaXplID09IDMKKyAg
ICAkYXNtLnB1dHMgIiN7b3Bjb2RlM30gI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9
IgorICBlbHNlCisgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzLnNpemUgPT0gMgorICAgIHJhaXNl
IHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgaWYgb3BlcmFuZHNbMF0u
aXNfYT8gSW1tZWRpYXRlCisgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlM30gI3tvcGVyYW5kc1sx
XS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNb
MF0uYXJtVjdPcGVyYW5kfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlMn0g
I3thcm1WN0ZsaXBwZWRPcGVhcm5kcyhvcGVyYW5kcyl9IgorICAgIGVuZAorICBlbmQKK2VuZAor
CitkZWYgZW1pdEFybVY3KG9wY29kZSwgb3BlcmFuZHMpCisgIGlmIG9wZXJhbmRzLnNpemUgPT0g
MworICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFu
ZHMpfSIKKyAgZWxzZQorICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kcy5zaXplID09IDIKKyAgICAk
YXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFu
ZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICBlbmQK
K2VuZAorCitkZWYgZW1pdEFybVY3RG91YmxlQnJhbmNoKGJyYW5jaE9wY29kZSwgb3BlcmFuZHMp
CisgICRhc20ucHV0cyAidmNtcGUuZjY0ICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9
IgorICAkYXNtLnB1dHMgInZtcnMgYXBzcl9uemN2LCBmcHNjciIKKyAgJGFzbS5wdXRzICIje2Jy
YW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCitlbmQKKworY2xhc3MgSW5zdHJ1
Y3Rpb24KKyAgZGVmIGxvd2VyQVJNdjcKKyAgICAkYXNtLmNvbW1lbnQgY29kZU9yaWdpblN0cmlu
ZworICAgIGNhc2Ugb3Bjb2RlCisgICAgd2hlbiAiYWRkaSIsICJhZGRwIgorICAgICAgaWYgb3Bl
cmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAg
cmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2Ug
dW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgaWYgb3BlcmFuZHNb
MF0udmFsdWUgPT0gMAorICAgICAgICAgIHVubGVzcyBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1sy
XQorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3YgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9
LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAkYXNtLnB1dHMgImFkZHMgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVy
YW5kcyl9IgorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQg
b3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFu
ZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0u
aXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgImFkZHMgI3thcm1WN0ZsaXBwZWRP
cGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgZWxzZQorICAgICAgICBpZiBvcGVyYW5kc1swXS5p
c19hPyBJbW1lZGlhdGUKKyAgICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09
IG9wZXJhbmRzWzBdCisgICAgICAgICAgICAkYXNtLnB1dHMgImFkZHMgI3thcm1WN0ZsaXBwZWRP
cGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAg
ICAgJGFzbS5wdXRzICJhZGQgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAg
ICAgICBlbmQKKyAgICAgIGVuZAorICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgIGVtaXRB
cm1WN0NvbXBhY3QoImFuZHMiLCAiYW5kIiwgb3BlcmFuZHMpCisgICAgd2hlbiAib3JpIiwgIm9y
cCIKKyAgICAgIGVtaXRBcm1WN0NvbXBhY3QoIm9ycnMiLCAib3JyIiwgb3BlcmFuZHMpCisgICAg
d2hlbiAieG9yaSIsICJ4b3JwIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgiZW9ycyIsICJlb3Ii
LCBvcGVyYW5kcykKKyAgICB3aGVuICJsc2hpZnRpIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgi
bHNscyIsICJsc2xzIiwgb3BlcmFuZHMpCisgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgIGVtaXRB
cm1WN0NvbXBhY3QoImFzcnMiLCAiYXNycyIsIG9wZXJhbmRzKQorICAgIHdoZW4gInVyc2hpZnRp
IgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgibHNycyIsICJsc3JzIiwgb3BlcmFuZHMpCisgICAg
d2hlbiAibXVsaSIKKyAgICAgIGVtaXRBcm1WNygibXVscyIsIG9wZXJhbmRzKQorICAgIHdoZW4g
InN1YmkiLCAic3VicCIKKyAgICAgIGVtaXRBcm1WN0NvbXBhY3QoInN1YnMiLCAic3VicyIsIG9w
ZXJhbmRzKQorICAgIHdoZW4gIm5lZ2kiCisgICAgICAkYXNtLnB1dHMgInJzYnMgI3tvcGVyYW5k
c1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sIFwjMCIKKyAg
ICB3aGVuICJub3RpIgorICAgICAgJGFzbS5wdXRzICJtdm5zICN7b3BlcmFuZHNbMF0uYXJtVjdP
cGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgIHdoZW4gImxvYWRpIiwg
ImxvYWRwIgorICAgICAgJGFzbS5wdXRzICJsZHIgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVy
YW5kcyl9IgorICAgIHdoZW4gInN0b3JlaSIsICJzdG9yZXAiCisgICAgICAkYXNtLnB1dHMgInN0
ciAje2FybVY3T3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJsb2FkYiIKKyAgICAgICRh
c20ucHV0cyAibGRyYiAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hl
biAic3RvcmViIgorICAgICAgJGFzbS5wdXRzICJzdHJiICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMo
b3BlcmFuZHMpfSIKKyAgICB3aGVuICJsb2FkaCIKKyAgICAgICRhc20ucHV0cyAibGRyaCAje2Fy
bVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAic3RvcmVoIgorICAgICAg
JGFzbS5wdXRzICJzdHJoICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3
aGVuICJhZGRkIgorICAgICAgZW1pdEFybVY3KCJ2YWRkLmY2NCIsIG9wZXJhbmRzKQorICAgIHdo
ZW4gImRpdmQiCisgICAgICBlbWl0QXJtVjcoInZkaXYuZjY0Iiwgb3BlcmFuZHMpCisgICAgd2hl
biAic3ViZCIKKyAgICAgIGVtaXRBcm1WNygidnN1Yi5mNjQiLCBvcGVyYW5kcykKKyAgICB3aGVu
ICJtdWxkIgorICAgICAgZW1pdEFybVY3KCJ2bXVsLmY2NCIsIG9wZXJhbmRzKQorICAgIHdoZW4g
InNxcnRkIgorICAgICAgJGFzbS5wdXRzICJ2c3FydC5mNjQgI3thcm1WN0ZsaXBwZWRPcGVyYW5k
cyhvcGVyYW5kcyl9IgorICAgIHdoZW4gImNpMmQiCisgICAgICAkYXNtLnB1dHMgInZtb3YgI3tv
cGVyYW5kc1sxXS5hcm1WN1NpbmdsZX0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAg
ICAgICRhc20ucHV0cyAidmN2dCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFu
ZHNbMV0uYXJtVjdTaW5nbGV9IgorICAgIHdoZW4gImJkZXEiCisgICAgICBlbWl0QXJtVjdEb3Vi
bGVCcmFuY2goImJlcSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkbmVxIgorICAgICAgJGFzbS5w
dXRzICJ2Y21wZS5mNjQgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAk
YXNtLnB1dHMgInZtcnMgYXBzcl9uemN2LCBmcHNjciIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9j
YWxMYWJlbC51bmlxdWUoImJkbmVxIikKKyAgICAgICRhc20ucHV0cyAiYnZzICN7TGFiZWxSZWZl
cmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS5hc21MYWJlbH0iCisgICAgICAkYXNt
LnB1dHMgImJuZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxv
d2VyKCJBUk12NyIpCisgICAgd2hlbiAiYmRndCIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5j
aCgiYmd0Iiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRndGVxIgorICAgICAgZW1pdEFybVY3RG91
YmxlQnJhbmNoKCJiZ2UiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGx0IgorICAgICAgZW1pdEFy
bVY3RG91YmxlQnJhbmNoKCJibWkiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGx0ZXEiCisgICAg
ICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJscyIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkZXF1
biIKKyAgICAgICRhc20ucHV0cyAidmNtcGUuZjY0ICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1sw
Li4xXSl9IgorICAgICAgJGFzbS5wdXRzICJ2bXJzIGFwc3JfbnpjdiwgZnBzY3IiCisgICAgICAk
YXNtLnB1dHMgImJ2cyAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAi
YmVxICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJkbmVxdW4iCisgICAgICBl
bWl0QXJtVjdEb3VibGVCcmFuY2goImJuZSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkZ3R1biIK
KyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmhpIiwgb3BlcmFuZHMpCisgICAgd2hlbiAi
YmRndGVxdW4iCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJwbCIsIG9wZXJhbmRzKQor
ICAgIHdoZW4gImJkbHR1biIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmx0Iiwgb3Bl
cmFuZHMpCisgICAgd2hlbiAiYmRsdGVxdW4iCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2go
ImJsZSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJ0ZDJpIgorICAgICAgIyBGSVhNRSEKKyAgICBl
bmQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXNtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fz
bS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fz
bS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzUgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkK
KworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJu
YW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgImRpZ2VzdC9zaGEx
IgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNlbGZfaGFz
aCIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitjbGFzcyBBc3Nl
bWJsZXIKKyAgZGVmIGluaXRpYWxpemUob3V0cCkKKyAgICBAb3V0cCA9IG91dHAKKyAgICBAc3Rh
dGUgPSA6Y3BwCisgIGVuZAorICAKKyAgZGVmIGVudGVyQXNtCisgICAgQG91dHAucHV0cyAiYXNt
ICgiCisgICAgQHN0YXRlID0gOmFzbQorICBlbmQKKyAgCisgIGRlZiBsZWF2ZUFzbQorICAgIEBv
dXRwLnB1dHMgIik7IgorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBkZWYgaW5Bc20K
KyAgICBlbnRlckFzbQorICAgIHlpZWxkCisgICAgbGVhdmVBc20KKyAgZW5kCisgIAorICBkZWYg
cHV0cygqbGluZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5w
dXRzKCJcIlxcdCIgKyBsaW5lLmpvaW4oJycpICsgIlxcblwiIikKKyAgZW5kCisgIAorICBkZWYg
cHJpbnQobGluZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5w
cmludCgiXCIiICsgbGluZSArICJcIiIpCisgIGVuZAorICAKKyAgZGVmIHB1dHNMYWJlbChsYWJl
bE5hbWUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAgQG91dHAucHV0cygi
XCIuZ2xvYmwgXCIgU1lNQk9MX1NUUklORygje2xhYmVsTmFtZX0pIFwiXFxuXCIiKQorICAgIEBv
dXRwLnB1dHMoIkhJREVfU1lNQk9MKCN7bGFiZWxOYW1lfSkgXCJcXG5cIiIpCisgICAgQG91dHAu
cHV0cygiU1lNQk9MX1NUUklORygje2xhYmVsTmFtZX0pIFwiOlxcblwiIikKKyAgZW5kCisgIAor
ICBkZWYgcHV0c0xvY2FsTGFiZWwobGFiZWxOYW1lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUg
PT0gOmFzbQorICAgIEBvdXRwLnB1dHMoIkxPQ0FMX0xBQkVMX1NUUklORygje2xhYmVsTmFtZX0p
IFwiOlxcblwiIikKKyAgZW5kCisgIAorICBkZWYgc2VsZi5sYWJlbFJlZmVyZW5jZShsYWJlbE5h
bWUpCisgICAgIlwiIFNZTUJPTF9TVFJJTkcoI3tsYWJlbE5hbWV9KSBcIiIKKyAgZW5kCisgIAor
ICBkZWYgc2VsZi5sb2NhbExhYmVsUmVmZXJlbmNlKGxhYmVsTmFtZSkKKyAgICAiXCIgTE9DQUxf
TEFCRUxfU1RSSU5HKCN7bGFiZWxOYW1lfSkgXCIiCisgIGVuZAorICAKKyAgZGVmIGNvbW1lbnQo
dGV4dCkKKyAgICBAb3V0cC5wdXRzICIvLyAje3RleHR9IgorICBlbmQKK2VuZAorCithc21GaWxl
ID0gQVJHVi5zaGlmdAorb2Zmc2V0c0ZpbGUgPSBBUkdWLnNoaWZ0CitvdXRwdXRGbG5tID0gQVJH
Vi5zaGlmdAorCitvZmZzZXRzTGlzdCwgY29uZmlnSW5kZXggPSBvZmZzZXRzQW5kQ29uZmlndXJh
dGlvbkluZGV4KG9mZnNldHNGaWxlKQoraW5wdXREYXRhID0gSU86OnJlYWQoYXNtRmlsZSkKKwor
aW5wdXRIYXNoID0KKyAgIi8vIG9mZmxpbmVhc20gaW5wdXQgaGFzaDogIiArIERpZ2VzdDo6U0hB
MS5oZXhkaWdlc3QoaW5wdXREYXRhKSArCisgICIgIiArIERpZ2VzdDo6U0hBMS5oZXhkaWdlc3Qo
KG9mZnNldHNMaXN0ICsgW2NvbmZpZ0luZGV4XSkuam9pbignICcpKSArCisgICIgIiArIHNlbGZI
YXNoCisKK2lmIEZpbGVUZXN0LmV4aXN0PyBvdXRwdXRGbG5tCisgIEZpbGUub3BlbihvdXRwdXRG
bG5tLCAiciIpIHsKKyAgICB8IGlucCB8CisgICAgZmlyc3RMaW5lID0gaW5wLmdldHMKKyAgICBp
ZiBmaXJzdExpbmUgYW5kIGZpcnN0TGluZS5jaG9tcCA9PSBpbnB1dEhhc2gKKyAgICAgICRzdGRl
cnIucHV0cyAiTm90aGluZyBjaGFuZ2VkLiIKKyAgICAgIGV4aXQgMAorICAgIGVuZAorICB9Citl
bmQKKworRmlsZS5vcGVuKG91dHB1dEZsbm0sICJ3IikgeworICB8IG91dHAgfAorICAkb3V0cHV0
ID0gb3V0cAorICAkb3V0cHV0LnB1dHMgaW5wdXRIYXNoCisgIAorICAkYXNtID0gQXNzZW1ibGVy
Lm5ldygkb3V0cHV0KQorICAKKyAgYXN0ID0gcGFyc2UobGV4KGlucHV0RGF0YSkpCisgIAorICBm
b3JTZXR0aW5ncyhjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KVtjb25maWdJbmRleF0s
IGFzdCkgeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAor
ICAgIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAgICBsb3dMZXZlbEFT
VCA9IGxvd0xldmVsQVNULnJlc29sdmUoKmJ1aWxkT2Zmc2V0c01hcChsb3dMZXZlbEFTVCwgb2Zm
c2V0c0xpc3QpKQorICAgIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3Ms
IGxvd0xldmVsQVNULCBiYWNrZW5kKSB7CisgICAgICAkYXNtLmluQXNtIHsKKyAgICAgICAgbG93
TGV2ZWxBU1QubG93ZXIoYmFja2VuZCkKKyAgICAgIH0KKyAgICB9CisgIH0KK30KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsODM3IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjCisjIEJh
c2UgdXRpbGl0eSB0eXBlcyBmb3IgdGhlIEFTVC4KKyMKKworIyBWYWxpZCBtZXRob2RzIGZvciBO
b2RlOgorIworIyBub2RlLmNoaWxkcmVuIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgaW1tZWRpYXRl
IGNoaWxkcmVuLgorIworIyBub2RlLmRlc2NlbmRlbnRzIC0+IFJldHVybnMgYW4gYXJyYXkgb2Yg
YWxsIHN0cmljdCBkZXNjZW5kYW50cyAoY2hpbGRyZW4KKyMgICAgIGFuZCBjaGlsZHJlbiBvZiBj
aGlsZHJlbiwgdHJhbnNpdGl2ZWx5KS4KKyMKKyMgbm9kZS5mbGF0dGVuIC0+IFJldHVybnMgYW4g
YXJyYXkgY29udGFpbmluZyB0aGUgc3RyaWN0IGRlc2NlbmRhbnRzIGFuZAorIyAgICAgdGhlIG5v
ZGUgaXRzZWxmLgorIworIyBub2RlLmZpbHRlcih0eXBlKSAtPiBSZXR1cm5zIGFuIGFycmF5IGNv
bnRhaW5pbmcgdGhvc2UgZWxlbWVudHMgaW4KKyMgICAgIG5vZGUuZmxhdHRlbiB0aGF0IGFyZSBv
ZiB0aGUgZ2l2ZW4gdHlwZSAoaXNfYT8gdHlwZSByZXR1cm5zIHRydWUpLgorIworIyBub2RlLm1h
cENoaWxkcmVue3x2fCAuLi59IC0+IFJldHVybnMgYSBuZXcgbm9kZSB3aXRoIGFsbCBjaGlsZHJl
bgorIyAgICAgcmVwbGFjZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBibG9jay4KKyMKKyMgRXhh
bXBsZXM6CisjCisjIG5vZGUuZmlsdGVyKFNldHRpbmcpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2Yg
dGhlIHNldHRpbmdzIHRoYXQgdGhlIEFTVCdzCisjICAgICBJZlRoZW5FbHNlIGJsb2NrcyBkZXBl
bmQgb24uCisjCisjIG5vZGUuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcSAtPiBSZXR1cm5zIGFs
bCBvZiB0aGUgc3RydWN0dXJlIG9mZnNldHMKKyMgICAgIHRoYXQgdGhlIEFTVCBkZXBlbmRzIG9u
LgorCitjbGFzcyBOb2RlCisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICBlbmQK
KyAgCisgIGRlZiBjb2RlT3JpZ2luU3RyaW5nCisgICAgImxpbmUgbnVtYmVyICN7QGNvZGVPcmln
aW59IgorICBlbmQKKyAgCisgIGRlZiBkZXNjZW5kYW50cworICAgIGNoaWxkcmVuLmNvbGxlY3R7
fHZ8IHYuZmxhdHRlbn0uZmxhdHRlbgorICBlbmQKKyAgCisgIGRlZiBmbGF0dGVuCisgICAgW3Nl
bGZdICsgZGVzY2VuZGFudHMKKyAgZW5kCisgIAorICBkZWYgZmlsdGVyKHR5cGUpCisgICAgZmxh
dHRlbi5zZWxlY3R7fHZ8IHYuaXNfYT8gdHlwZX0KKyAgZW5kCitlbmQKKworY2xhc3MgTm9DaGls
ZHJlbiA8IE5vZGUKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtdCisgIGVuZAorICAKKyAg
ZGVmIG1hcENoaWxkcmVuCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZz
ZXRLZXkKKyAgYXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6
ZShzdHJ1Y3QsIGZpZWxkKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVs
ZAorICBlbmQKKyAgCisgIGRlZiBoYXNoCisgICAgQHN0cnVjdC5oYXNoICsgQGZpZWxkLmhhc2gg
KiAzCisgIGVuZAorICAKKyAgZGVmIGVxbD8ob3RoZXIpCisgICAgQHN0cnVjdCA9PSBvdGhlci5z
dHJ1Y3QgYW5kIEBmaWVsZCA9PSBvdGhlci5maWVsZAorICBlbmQKK2VuZAorICAgIAorIworIyBB
U1Qgbm9kZXMuCisjCisKK2NsYXNzIFN0cnVjdE9mZnNldCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9y
ZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBz
dHJ1Y3QsIGZpZWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVj
dAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisg
IGRlZiBzZWxmLmZvckZpZWxkKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAga2V5ID0g
U3RydWN0T2Zmc2V0S2V5Lm5ldyhzdHJ1Y3QsIGZpZWxkKQorICAgIAorICAgIHVubGVzcyBAQG1h
cHBpbmdba2V5XQorICAgICAgQEBtYXBwaW5nW2tleV0gPSBTdHJ1Y3RPZmZzZXQubmV3KGNvZGVP
cmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW2tleV0KKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgICIje3N0cnVjdH06OiN7ZmllbGR9IgorICBlbmQKKyAgCisg
IGRlZiA8PT4ob3RoZXIpCisgICAgaWYgQHN0cnVjdCAhPSBvdGhlci5zdHJ1Y3QKKyAgICAgIHJl
dHVybiBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgICBlbmQKKyAgICBAZmllbGQgPD0+IG90
aGVyLmZpZWxkCisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZiA8IE5vQ2hpbGRyZW4KKyAgYXR0
cl9yZWFkZXIgOnN0cnVjdAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICBlbmQKKyAg
CisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIHN0
cnVjdCkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW3N0cnVjdF0KKyAgICAgIEBAbWFwcGluZ1tzdHJ1
Y3RdID0gU2l6ZW9mLm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgZW5kCisgICAgQEBtYXBw
aW5nW3N0cnVjdF0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJzaXplb2YgI3tAc3RydWN0
fSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAgIEBzdHJ1Y3QgPD0+IG90aGVyLnN0
cnVjdAorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUgPCBOb0NoaWxkcmVuCisgIGF0dHJf
cmVhZGVyIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFsdWUpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgIiN7dmFsdWV9IgorICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBv
dGhlci5pc19hPyBJbW1lZGlhdGUgYW5kIG90aGVyLnZhbHVlID09IEB2YWx1ZQorICBlbmQKKyAg
CisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVk
aWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICBBZGRJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQg
QHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICsgI3ty
aWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMgPCBOb2RlCisg
IGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0
CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxl
ZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBTdWJJbW1lZGlh
dGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IC0gI3tyaWdodC5kdW1wfSkiCisg
IGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDps
ZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0g
cmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAg
ZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBNdWxJbW1lZGlhdGVzLm5ldyhjb2RlT3Jp
Z2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgICIoI3tsZWZ0LmR1bXB9ICogI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2Ns
YXNzIE5lZ0ltbWVkaWF0ZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBjaGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BjaGlsZF0K
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOZWdJbW1lZGlhdGUubmV3KGNvZGVP
cmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigtI3tA
Y2hpbGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklEIDwgTm9DaGlsZHJl
bgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAg
CisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5h
bWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0g
UmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdb
bmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCisgIAorICBkZWYg
YWRkcmVzcz8KKyAgICBmYWxzZQorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQgPCBO
b0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisg
IGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9y
aWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdb
bmFtZV0gPSBGUFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAg
QEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAor
ICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFi
bGUgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBu
YW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUo
Y29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1h
cHBpbmdbbmFtZV0gPSBWYXJpYWJsZS5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAg
ICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5k
CitlbmQKKworY2xhc3MgQWRkcmVzcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2UsIDpvZmZz
ZXQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGJhc2UsIG9mZnNldCkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBiYXNlID0gYmFzZQorICAgIEBvZmZzZXQgPSBvZmZzZXQK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBvZmZzZXRdCisgIGVuZAor
ICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxk
IEBiYXNlKSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7
b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfV0iCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/Cisg
ICAgdHJ1ZQorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXggPCBOb2RlCisgIGF0dHJfcmVh
ZGVyIDpiYXNlLCA6aW5kZXgsIDpzY2FsZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAaW5kZXggPSBpbmRleAorICAgIEBzY2FsZSA9
IHNjYWxlCisgICAgcmFpc2UgdW5sZXNzIFsxLCAyLCA0LCA4XS5tZW1iZXI/IEBzY2FsZQorICAg
IEBvZmZzZXQgPSBvZmZzZXQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2Us
IEBpbmRleCwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBCYXNl
SW5kZXgubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAaW5kZXgpLCBAc2Nh
bGUsICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNl
dC5kdW1wfVsje2Jhc2UuZHVtcH0sICN7aW5kZXguZHVtcH0sICN7c2NhbGV9XSIKKyAgZW5kCisg
IAorICBkZWYgYWRkcmVzcz8KKyAgICB0cnVlCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRl
QWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmFkZHJlc3MKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIGFkZHJlc3MpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje2FkZHJl
c3MuZHVtcH1bXSIKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICB0cnVlCisgIGVuZAor
ZW5kCisKK2NsYXNzIEluc3RydWN0aW9uIDwgTm9kZQorICBhdHRyX3JlYWRlciA6b3Bjb2RlLCA6
b3BlcmFuZHMKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG9wY29kZSwgb3BlcmFu
ZHMpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAb3Bjb2RlID0gb3Bjb2RlCisgICAgQG9w
ZXJhbmRzID0gb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBvcGVyYW5k
cworICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBJbnN0cnVjdGlvbi5u
ZXcoY29kZU9yaWdpbiwgQG9wY29kZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICAiXHQiICsgb3Bjb2RlLnRvX3MgKyAiICIgKyBvcGVyYW5kcy5jb2xs
ZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikKKyAgZW5kCitlbmQKKworY2xhc3MgRXJyb3IgPCBO
b0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdGVycm9yIgorICBlbmQKK2VuZAor
CitjbGFzcyBDb25zdERlY2wgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDp2YXJpYWJsZSwgOnZhbHVl
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAdmFyaWFibGUgPSB2YXJpYWJsZQorICAgIEB2YWx1ZSA9
IHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0B2YXJpYWJsZSwgQHZhbHVl
XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIENvbnN0RGVjbC5uZXcoY29kZU9y
aWdpbiwgKHlpZWxkIEB2YXJpYWJsZSksICh5aWVsZCBAdmFsdWUpKQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgImNvbnN0ICN7QHZhcmlhYmxlLmR1bXB9ID0gI3tAdmFsdWUuZHVtcH0iCisg
IGVuZAorZW5kCisKKyRsYWJlbE1hcHBpbmcgPSB7fQorCitjbGFzcyBMYWJlbCA8IE5vQ2hpbGRy
ZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisg
IAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgaWYgJGxhYmVsTWFw
cGluZ1tuYW1lXQorICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9IiB1
bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMYWJlbAorICAgIGVsc2UKKyAgICAgICRs
YWJlbE1hcHBpbmdbbmFtZV0gPSBMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQK
KyAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tu
YW1lfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0
dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorCisgIEBAdW5p
cXVlTmFtZUNvdW50ZXIgPSAwCisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5h
bWUpCisgICAgaWYgJGxhYmVsTWFwcGluZ1tuYW1lXQorICAgICAgcmFpc2UgIkxhYmVsIG5hbWUg
Y29sbGlzaW9uOiAje25hbWV9IiB1bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMb2Nh
bExhYmVsCisgICAgZWxzZQorICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExvY2FsTGFiZWwu
bmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQor
ICBlbmQKKyAgCisgIGRlZiBzZWxmLnVuaXF1ZShjb21tZW50KQorICAgIG5ld05hbWUgPSAiXyN7
Y29tbWVudH0iCisgICAgaWYgJGxhYmVsTWFwcGluZ1tuZXdOYW1lXQorICAgICAgd2hpbGUgJGxh
YmVsTWFwcGluZ1tuZXdOYW1lID0gIl8je0BAdW5pcXVlTmFtZUNvdW50ZXJ9XyN7Y29tbWVudH0i
XQorICAgICAgICBAQHVuaXF1ZU5hbWVDb3VudGVyICs9IDEKKyAgICAgIGVuZAorICAgIGVuZAor
ICAgIGZvck5hbWUobmlsLCBuZXdOYW1lKQorICBlbmQKKyAgCisgIGRlZiBjbGVhbk5hbWUKKyAg
ICBpZiBuYW1lID1+IC9eXC4vCisgICAgICAiXyIgKyBuYW1lWzEuLi0xXQorICAgIGVsc2UKKyAg
ICAgIG5hbWUKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIK
KyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVy
IDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTGFi
ZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisg
IGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFi
ZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlIDwgTm9DaGls
ZHJlbgorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAg
ZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbgorICAgIExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVs
ZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1
ZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIGxpc3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGlzdCA9IGxpc3QK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBsaXN0CisgIGVuZAorICAKKyAgZGVmIG1h
cENoaWxkcmVuKCZwcm9jKQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBAbGlzdC5tYXAo
JnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0e3x2fCB2LmR1
bXB9LmpvaW4oIlxuIikKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hpbGRyZW4KKyAg
ZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9
IFRydWUubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5k
CisgIAorICBkZWYgdmFsdWUKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
dHJ1ZSIKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0
aWFsaXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBGYWxzZS5u
ZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisg
IGRlZiB2YWx1ZQorICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiZmFsc2Ui
CisgIGVuZAorZW5kCisKK2NsYXNzIFRydWVDbGFzcworICBkZWYgYXNOb2RlCisgICAgVHJ1ZS5p
bnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZUNsYXNzCisgIGRlZiBhc05vZGUKKyAg
ICBGYWxzZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nIDwgTm9DaGlsZHJl
bgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAg
CisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5h
bWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0g
U2V0dGluZy5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFt
ZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3Mg
QW5kIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
IEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxk
cmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisg
ICAgQW5kLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3JpZ2h0LmR1bXB9
KSIKKyAgZW5kCitlbmQKKworY2xhc3MgT3IgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6
cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisg
IAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0
KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5k
dW1wfSBvciAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTm90IDwgTm9kZQor
ICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNo
aWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisg
IAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBOb3QubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5k
CisKK2NsYXNzIFNraXAgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4p
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdHNr
aXAiCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UgPCBOb2RlCisgIGF0dHJfcmVhZGVy
IDpwcmVkaWNhdGUsIDp0aGVuQ2FzZQorICBhdHRyX2FjY2Vzc29yIDplbHNlQ2FzZQorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZSkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBwcmVkaWNhdGUgPSBwcmVkaWNhdGUKKyAgICBAdGhlbkNhc2Ug
PSB0aGVuQ2FzZQorICAgIEBlbHNlQ2FzZSA9IFNraXAubmV3KGNvZGVPcmlnaW4pCisgIGVuZAor
ICAKKyAgZGVmIGNoaWxkcmVuCisgICAgaWYgQGVsc2VDYXNlCisgICAgICBbQHByZWRpY2F0ZSwg
QHRoZW5DYXNlLCBAZWxzZUNhc2VdCisgICAgZWxzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVu
Q2FzZV0KKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBJZlRoZW5F
bHNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHByZWRpY2F0ZSksICh5aWVsZCBAdGhlbkNhc2Up
LCAoeWllbGQgQGVsc2VDYXNlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJpZiAje3By
ZWRpY2F0ZS5kdW1wfVxuIiArIHRoZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsgZWxzZUNhc2Uu
ZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8gPCBOb2RlCisgIGF0dHJf
cmVhZGVyIDpuYW1lLCA6dmFyaWFibGVzLCA6Ym9keQorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQG5hbWUgPSBuYW1lCisgICAgQHZhcmlhYmxlcyA9IHZhcmlhYmxlcworICAgIEBib2R5ID0g
Ym9keQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEB2YXJpYWJsZXMgKyBbQGJvZHld
CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTWFjcm8ubmV3KGNvZGVPcmlnaW4s
IEBuYW1lLCBAdmFyaWFibGVzLm1hcHt8dnwgeWllbGQgdn0sICh5aWVsZCBAYm9keSkpCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFibGVzLmNvbGxl
Y3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpXG4iICsgYm9keS5kdW1wICsgIlxuZW5kIgor
ICBlbmQKK2VuZAorCitjbGFzcyBNYWNyb0NhbGwgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1l
LCA6b3BlcmFuZHMKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJh
bmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQG9wZXJh
bmRzID0gb3BlcmFuZHMKKyAgICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAgQG9wZXJhbmRz
LmVhY2h7fHZ8IHJhaXNlIHVubGVzcyB2fQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IEBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBNYWNy
b0NhbGwubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgICJcdCN7bmFtZX0oIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8
IHYuZHVtcH0uam9pbigiLCAiKSArICIpIgorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDg1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCity
ZXF1aXJlICJhc3QiCityZXF1aXJlICJ4ODYiCisKK0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIs
CisgICAiQVJNdjciCisgIF0KKworV09SS0lOR19CQUNLRU5EUyA9CisgIFsKKyAgICJYODYiCisg
IF0KKworQkFDS0VORF9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCcgKyBCQUNLRU5EUy5qb2lu
KCcpfCgnKSArICcpXFxaJykKKworY2xhc3MgTm9kZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBz
ZW5kKCJsb3dlciIgKyBuYW1lKQorICBlbmQKK2VuZAorCisjIE92ZXJyaWRlcyBmb3IgbG93ZXIo
KSBmb3IgdGhvc2Ugbm9kZXMgdGhhdCBhcmUgYmFja2VuZC1hZ25vc3RpYworCitjbGFzcyBMYWJl
bAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHNMYWJlbChzZWxmLm5hbWVbMS4uLTFd
KQorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAg
ICRhc20ucHV0c0xvY2FsTGFiZWwgIl9vZmZsaW5lYXNtXyN7c2VsZi5uYW1lWzEuLi0xXX0iCisg
IGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgIGRlZiBhc21MYWJlbAorICAgIEFz
c2VtYmxlci5sYWJlbFJlZmVyZW5jZShuYW1lWzEuLi0xXSkKKyAgZW5kCitlbmQKKworY2xhc3Mg
TG9jYWxMYWJlbFJlZmVyZW5jZQorICBkZWYgYXNtTGFiZWwKKyAgICBBc3NlbWJsZXIubG9jYWxM
YWJlbFJlZmVyZW5jZSgiX29mZmxpbmVhc21fIituYW1lWzEuLi0xXSkKKyAgZW5kCitlbmQKKwor
Y2xhc3MgU2tpcAorICBkZWYgbG93ZXIobmFtZSkKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVu
Y2UKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IG5vZGUgfAor
ICAgICAgbm9kZS5sb3dlcihuYW1lKQorICAgIH0KKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9v
ZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4OCBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVp
cmUgImJhY2tlbmRzIgorcmVxdWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJvZmZzZXRzIgor
cmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2VsZl9oYXNoIgorcmVxdWlyZSAic2V0dGluZ3Mi
CityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2lucHV0RmxubSA9IEFSR1Yuc2hpZnQKK291dHB1dEZs
bm0gPSBBUkdWLnNoaWZ0CisKK2RlZiBlbWl0TWFnaWNOdW1iZXIKKyAgT0ZGU0VUX01BR0lDX05V
TUJFUlMuZWFjaCB7CisgICAgfCBudW1iZXIgfAorICAgICRvdXRwdXQucHV0cyAiI3tudW1iZXJ9
LCIKKyAgfQorZW5kCisKK2lucHV0RGF0YSA9IElPOjpyZWFkKGlucHV0RmxubSkKK2lucHV0SGFz
aCA9ICIvLyBvZmZsaW5lYXNtIGlucHV0IGhhc2g6ICN7RGlnZXN0OjpTSEExLmhleGRpZ2VzdChp
bnB1dERhdGEpfSAje3NlbGZIYXNofSIKKworaWYgRmlsZVRlc3QuZXhpc3Q/IG91dHB1dEZsbm0K
KyAgRmlsZS5vcGVuKG91dHB1dEZsbm0sICJyIikgeworICAgIHwgaW5wIHwKKyAgICBmaXJzdExp
bmUgPSBpbnAuZ2V0cworICAgIGlmIGZpcnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09IGlu
cHV0SGFzaAorICAgICAgJHN0ZGVyci5wdXRzICJOb3RoaW5nIGNoYW5nZWQuIgorICAgICAgZXhp
dCAwCisgICAgZW5kCisgIH0KK2VuZAorCitvcmlnaW5hbEFTVCA9IHBhcnNlKGxleChpbnB1dERh
dGEpKQorCitGaWxlLm9wZW4ob3V0cHV0RmxubSwgInciKSB7CisgIHwgb3V0cCB8CisgICRvdXRw
dXQgPSBvdXRwCisgIG91dHAucHV0cyBpbnB1dEhhc2gKKyAgZW1pdENvZGVJbkFsbENvbmZpZ3Vy
YXRpb25zKG9yaWdpbmFsQVNUKSB7CisgICAgfCBzZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRl
eCB8CisgICAgb2Zmc2V0c0xpc3QgPSBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0
CisgICAgc2l6ZXNMaXN0ID0gYXN0LmZpbHRlcihTaXplb2YpLnVuaXEuc29ydAorICAgIAorICAg
IGxlbmd0aCA9IChPRkZTRVRfTUFHSUNfTlVNQkVSUy5zaXplICsgMSkgKiAoMSArIG9mZnNldHNM
aXN0LnNpemUgKyBzaXplc0xpc3Quc2l6ZSkKKyAgICAKKyAgICBvdXRwLnB1dHMgInN0YXRpYyBj
b25zdCB1bnNpZ25lZCBleHRyYWN0b3JUYWJsZVsje2xlbmd0aH1dID0geyIKKyAgICBlbWl0TWFn
aWNOdW1iZXIKKyAgICBvdXRwLnB1dHMgIiN7aW5kZXh9LCIKKyAgICBvZmZzZXRzTGlzdC5lYWNo
IHsKKyAgICAgIHwgb2Zmc2V0IHwKKyAgICAgIGVtaXRNYWdpY051bWJlcgorICAgICAgb3V0cC5w
dXRzICJPRkZMSU5FX0FTTV9PRkZTRVRPRigje29mZnNldC5zdHJ1Y3R9LCAje29mZnNldC5maWVs
ZH0pLCIKKyAgICB9CisgICAgc2l6ZXNMaXN0LmVhY2ggeworICAgICAgfCBvZmZzZXQgfAorICAg
ICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICBvdXRwLnB1dHMgInNpemVvZigje29mZnNldC5zdHJ1
Y3R9KSwiCisgICAgfQorICAgIG91dHAucHV0cyAifTsiCisgIH0KK30KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjA1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisjIEludGVyZXN0aW5nIGludmFyaWFudCwgd2hpY2ggd2UgdGFrZSBhZHZh
bnRhZ2Ugb2Y6IGJyYW5jaGluZyBpbnN0cnVjdGlvbnMKKyMgYWx3YXlzIGJlZ2luIHdpdGggImIi
LCBhbmQgbm8gbm9uLWJyYW5jaGluZyBpbnN0cnVjdGlvbnMgYmVnaW4gd2l0aCAiYiIuCisjIFRl
cm1pbmFsIGluc3RydWN0aW9ucyBhcmUgImptcCIgYW5kICJyZXQiLgorCitNQUNST19JTlNUUlVD
VElPTlMgPQorICBbCisgICAiYWRkaSIsCisgICAiYW5kaSIsCisgICAibHNoaWZ0aSIsCisgICAi
bXVsaSIsCisgICAibmVnaSIsCisgICAibm90aSIsCisgICAib3JpIiwKKyAgICJyc2hpZnRpIiwK
KyAgICJ1cnNoaWZ0aSIsCisgICAic3ViaSIsCisgICAieG9yaSIsCisgICAibG9hZGkiLAorICAg
ImxvYWRiIiwKKyAgICJsb2FkaCIsCisgICAic3RvcmVpIiwKKyAgICJzdG9yZWIiLAorICAgImxv
YWRkIiwKKyAgICJtb3ZlZCIsCisgICAic3RvcmVkIiwKKyAgICJhZGRkIiwKKyAgICJkaXZkIiwK
KyAgICJzdWJkIiwKKyAgICJtdWxkIiwKKyAgICJzcXJ0ZCIsCisgICAiY2kyZCIsCisgICAiZmlp
MmQiLCAjIHVzYWdlOiBmaWkyZCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxn
cHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+LCA8ZnByPgorICAgImZkMmlpIiwgIyB1c2Fn
ZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdwciB3
aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4KKyAgICJiZGVxIiwKKyAgICJiZG5lcSIsCisgICAi
YmRndCIsCisgICAiYmRndGVxIiwKKyAgICJiZGx0IiwKKyAgICJiZGx0ZXEiLAorICAgImJkZXF1
biIsCisgICAiYmRuZXF1biIsCisgICAiYmRndHVuIiwKKyAgICJiZGd0ZXF1biIsCisgICAiYmRs
dHVuIiwKKyAgICJiZGx0ZXF1biIsCisgICAiYnRkMmkiLAorICAgInRkMmkiLAorICAgImJjZDJp
IiwKKyAgICJtb3ZkeiIsCisgICAicG9wIiwKKyAgICJwdXNoIiwKKyAgICJtb3ZlIiwKKyAgICJz
eGkycCIsCisgICAienhpMnAiLAorICAgIm5vcCIsCisgICAiYmllcSIsCisgICAiYmluZXEiLAor
ICAgImJpYSIsCisgICAiYmlhZXEiLAorICAgImJpYiIsCisgICAiYmliZXEiLAorICAgImJpZ3Qi
LAorICAgImJpZ3RlcSIsCisgICAiYmlsdCIsCisgICAiYmlsdGVxIiwKKyAgICJiYmVxIiwKKyAg
ICJiYm5lcSIsCisgICAiYmJhIiwKKyAgICJiYmFlcSIsCisgICAiYmJiIiwKKyAgICJiYmJlcSIs
CisgICAiYmJndCIsCisgICAiYmJndGVxIiwKKyAgICJiYmx0IiwKKyAgICJiYmx0ZXEiLAorICAg
ImJ0aW8iLAorICAgImJ0aXMiLAorICAgImJ0aXoiLAorICAgImJ0aW56IiwKKyAgICJidGJvIiwK
KyAgICJidGJzIiwKKyAgICJidGJ6IiwKKyAgICJidGJueiIsCisgICAiam1wIiwKKyAgICJiYWRk
aW8iLAorICAgImJhZGRpcyIsCisgICAiYmFkZGl6IiwKKyAgICJiYWRkaW56IiwKKyAgICJic3Vi
aW8iLAorICAgImJzdWJpcyIsCisgICAiYnN1Yml6IiwKKyAgICJic3ViaW56IiwKKyAgICJibXVs
aW8iLAorICAgImJtdWxpcyIsCisgICAiYm11bGl6IiwKKyAgICJibXVsaW56IiwKKyAgICJib3Jp
byIsCisgICAiYm9yaXMiLAorICAgImJvcml6IiwKKyAgICJib3JpbnoiLAorICAgImJyZWFrIiwK
KyAgICJjYWxsIiwKKyAgICJyZXQiLAorICAgImNpZXEiLAorICAgImNpbmVxIiwKKyAgICJjaWEi
LAorICAgImNpYWVxIiwKKyAgICJjaWIiLAorICAgImNpYmVxIiwKKyAgICJjaWd0IiwKKyAgICJj
aWd0ZXEiLAorICAgImNpbHQiLAorICAgImNpbHRlcSIsCisgICAidGlvIiwKKyAgICJ0aXMiLAor
ICAgInRpeiIsCisgICAidGlueiIsCisgICAidGJvIiwKKyAgICJ0YnMiLAorICAgInRieiIsCisg
ICAidGJueiIsCisgICAicGVlayIsCisgICAicG9rZSIsCisgICAiYnBlcSIsCisgICAiYnBuZXEi
LAorICAgImJwYSIsCisgICAiYnBhZXEiLAorICAgImJwYiIsCisgICAiYnBiZXEiLAorICAgImJw
Z3QiLAorICAgImJwZ3RlcSIsCisgICAiYnBsdCIsCisgICAiYnBsdGVxIiwKKyAgICJhZGRwIiwK
KyAgICJhbmRwIiwKKyAgICJvcnAiLAorICAgInN1YnAiLAorICAgInhvcnAiLAorICAgImxvYWRw
IiwKKyAgICJjcGVxIiwKKyAgICJjcG5lcSIsCisgICAiY3BhIiwKKyAgICJjcGFlcSIsCisgICAi
Y3BiIiwKKyAgICJjcGJlcSIsCisgICAiY3BndCIsCisgICAiY3BndGVxIiwKKyAgICJjcGx0IiwK
KyAgICJjcGx0ZXEiLAorICAgInN0b3JlcCIsCisgICAiYnRwbyIsCisgICAiYnRwcyIsCisgICAi
YnRweiIsCisgICAiYnRwbnoiLAorICAgImJhZGRwbyIsCisgICAiYmFkZHBzIiwKKyAgICJiYWRk
cHoiLAorICAgImJhZGRwbnoiLAorICAgImJvIiwKKyAgICJicyIsCisgICAiYnoiLAorICAgImJu
eiIKKyAgXQorCitYODZfSU5TVFJVQ1RJT05TID0KKyAgWworICAgImNkcWkiLAorICAgImlkaXZp
IgorICBdCisKK0lOU1RSVUNUSU9OUyA9IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVD
VElPTlMKKworSU5TVFJVQ1RJT05fUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIElOU1RS
VUNUSU9OUy5qb2luKCcpfCgnKSArICcpKVxcWicpCisKK2RlZiBpc0JyYW5jaChpbnN0cnVjdGlv
bikKKyAgaW5zdHJ1Y3Rpb24gPX4gL15iLworZW5kCisKK2RlZiBoYXNGYWxsVGhyb3VnaChpbnN0
cnVjdGlvbikKKyAgaW5zdHJ1Y3Rpb24gIT0gInJldCIgYW5kIGluc3RydWN0aW9uICE9ICJqbXAi
CitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4
dHJhY3Rvcl9jb25zdGFudHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0
YW50cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgwZmY1
ZTc1NSBdCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0
cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZz
ZXRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
b2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTAgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIm9mZnNldF9l
eHRyYWN0b3JfY29uc3RhbnRzIgorCitPRkZTRVRfTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2Fj
NywgMHgwZmY1ZTc1NSBdCisKKyMKKyMgb2Zmc2V0c0xpc3QoYXN0KQorIyBzaXplc0xpc3QoYXN0
KQorIworIyBSZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCBzaXplcyB1c2VkIGJ5IHRoZSBB
U1QuCisjCisKK2RlZiBvZmZzZXRzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0
KS51bmlxLnNvcnQKK2VuZAorCitkZWYgc2l6ZXNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTaXpl
b2YpLnVuaXEuc29ydAorZW5kCisKKyMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChh
c3QsIGZpbGUpIC0+CisjICAgICBbb2Zmc2V0cywgaW5kZXhdCisjCisjIFBhcnNlcyB0aGUgb2Zm
c2V0cyBmcm9tIGEgZmlsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgdGhlCisj
IGluZGV4IG9mIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgaXMgdmFsaWQgaW4gdGhpcyBidWlsZCB0
YXJnZXQuCisjCisKK2RlZiBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUpCisgIGlu
ZGV4ID0gbmlsCisgIG9mZnNldHMgPSBbXQorICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBuaWwK
KyAgCisgIGRlZiByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICBieXRlcyA9IFtdCisgICAg
NC50aW1lcyB7CisgICAgICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQorICAgIH0KKyAgICAKKyAgICBp
ZiBlbmRpYW5uZXNzID09IDpsaXR0bGUKKyAgICAgICMgTGl0dGxlIGVuZGlhbgorICAgICAgKGJ5
dGVzWzBdIDw8IDAgfAorICAgICAgIGJ5dGVzWzFdIDw8IDggfAorICAgICAgIGJ5dGVzWzJdIDw8
IDE2IHwKKyAgICAgICBieXRlc1szXSA8PCAyNCkKKyAgICBlbHNlCisgICAgICAjIEJpZyBlbmRp
YW4KKyAgICAgIChieXRlc1swXSA8PCAyNCB8CisgICAgICAgYnl0ZXNbMV0gPDwgMTYgfAorICAg
ICAgIGJ5dGVzWzJdIDw8IDggfAorICAgICAgIGJ5dGVzWzNdIDw8IDApCisgICAgZW5kCisgIGVu
ZAorICAKKyAgWzpsaXR0bGUsIDpiaWddLmVhY2ggeworICAgIHwgZW5kaWFubmVzcyB8CisgICAg
bWFnaWNCeXRlcyA9IFtdCisgICAgTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICAgIHwgbnVtYmVy
IHwKKyAgICAgIGN1cnJlbnRCeXRlcyA9IFtdCisgICAgICA0LnRpbWVzIHsKKyAgICAgICAgY3Vy
cmVudEJ5dGVzIDw8IChudW1iZXIgJiAweGZmKQorICAgICAgICBudW1iZXIgPj49IDgKKyAgICAg
IH0KKyAgICAgIGlmIGVuZGlhbm5lc3MgPT0gOmJpZworICAgICAgICBjdXJyZW50Qnl0ZXMucmV2
ZXJzZSEKKyAgICAgIGVuZAorICAgICAgbWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0ZXMKKyAgICB9
CisgICAgCisgICAgRmlsZS5vcGVuKGZpbGUsICJyIikgeworICAgICAgfCBpbnAgfAorICAgICAg
d2hlcmVJbk1hcmtlciA9IDAKKyAgICAgIGxvb3AgeworICAgICAgICBieXRlID0gaW5wLmdldGJ5
dGUKKyAgICAgICAgYnJlYWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgaWYgYnl0ZSA9PSBtYWdpY0J5
dGVzW3doZXJlSW5NYXJrZXJdCisgICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisgICAgICAg
ICAgaWYgd2hlcmVJbk1hcmtlciA9PSBtYWdpY0J5dGVzLnNpemUKKyAgICAgICAgICAgICMgV2Ug
aGF2ZSBhIG1hdGNoISBJZiB3ZSBoYXZlIG5vdCB5ZXQgcmVhZCB0aGUgZW5kaWFubmVzcyBtYXJr
ZXIgYW5kIGluZGV4LAorICAgICAgICAgICAgIyB0aGVuIHJlYWQgdGhvc2Ugbm93OyBvdGhlcndp
c2UgcmVhZCBhbiBvZmZzZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIG5vdCBpbmRl
eAorICAgICAgICAgICAgICBpbmRleCA9IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICBvZmZzZXRzIDw8IHJlYWRJbnQoZW5kaWFubmVzcywg
aW5wKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdoZXJlSW5N
YXJrZXIgPSAwCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICB3aGVyZUlu
TWFya2VyID0gMAorICAgICAgICBlbmQKKyAgICAgIH0KKyAgICB9CisgICAgCisgICAgYnJlYWsg
aWYgaW5kZXgKKyAgfQorICAKKyAgcmFpc2UgdW5sZXNzIGluZGV4CisgIAorICBbb2Zmc2V0cywg
aW5kZXhdCitlbmQKKworIworIyBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkgLT4g
W29mZnNldHMsIHNpemVzXQorIworIyBCdWlsZHMgYSBtYXBwaW5nIGJldHdlZW4gU3RydWN0T2Zm
c2V0IG5vZGVzIGFuZCB0aGVpciB2YWx1ZXMuCisjCisKK2RlZiBidWlsZE9mZnNldHNNYXAoYXN0
LCBvZmZzZXRzTGlzdCkKKyAgb2Zmc2V0c01hcCA9IHt9CisgIHNpemVzTWFwID0ge30KKyAgYXN0
T2Zmc2V0c0xpc3QgPSBvZmZzZXRzTGlzdChhc3QpCisgIGFzdFNpemVzTGlzdCA9IHNpemVzTGlz
dChhc3QpCisgIHJhaXNlIHVubGVzcyBhc3RPZmZzZXRzTGlzdC5zaXplICsgYXN0U2l6ZXNMaXN0
LnNpemUgPT0gb2Zmc2V0c0xpc3Quc2l6ZQorICBvZmZzZXRzTGlzdChhc3QpLmVhY2hfd2l0aF9p
bmRleCB7CisgICAgfCBzdHJ1Y3RPZmZzZXQsIGluZGV4IHwKKyAgICBvZmZzZXRzTWFwW3N0cnVj
dE9mZnNldF0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIHNpemVzTGlzdChhc3QpLmVhY2hf
d2l0aF9pbmRleCB7CisgICAgfCBzaXplb2YsIGluZGV4IHwKKyAgICBzaXplc01hcFtzaXplb2Zd
ID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQorICBbb2Zmc2V0c01hcCwgc2l6ZXNNYXBdCitlbmQK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb3B0LnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29wdC5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29wdC5yYgkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMTggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK3JlcXVpcmUgImFzdCIKKworIworIyAiT3B0aW1pemF0aW9uIiBwYXNzZXMuIFRoZXNlIGFy
ZSB1c2VkIHRvIGxvd2VyIHRoZSByZXByZXNlbnRhdGlvbiBmb3IKKyMgYmFja2VuZHMgdGhhdCBj
YW5ub3QgaGFuZGxlIHNvbWUgb2Ygb3VyIGhpZ2hlci1sZXZlbCBpbnN0cnVjdGlvbnMuCisjCisK
KyMKKyMgQSB0ZW1wb3JhcnkgLSBhIHZhcmlhYmxlIHRoYXQgd2lsbCBiZSBhbGxvY2F0ZWQgdG8g
YSByZWdpc3RlciBhZnRlciB3ZSdyZQorIyBkb25lLgorIworCitjbGFzcyBOb2RlCisgIGRlZiBy
ZXBsYWNlVGVtcG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgbWFwQ2hpbGRyZW4gewor
ICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUucmVwbGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lzdGVy
cyhraW5kKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVG1wIDwgTm9DaGlsZHJlbgorICBh
dHRyX3JlYWRlciA6Zmlyc3RNZW50aW9uLCA6bGFzdE1lbnRpb24KKyAgYXR0cl9yZWFkZXIgOmtp
bmQKKyAgYXR0cl9hY2Nlc3NvciA6cmVnaXN0ZXIKKworICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBraW5kKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGtpbmQgPSBraW5kCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiJHRtcCN7b2JqZWN0X2lkfSIKKyAgZW5kCisgIAorICBk
ZWYgbWVudGlvbiEocG9zaXRpb24pCisgICAgaWYgbm90IEBmaXJzdE1lbnRpb24gb3IgcG9zaXRp
b24gPCBAZmlyc3RNZW50aW9uCisgICAgICBAZmlyc3RNZW50aW9uID0gcG9zaXRpb24KKyAgICBl
bmQKKyAgICBpZiBub3QgQGxhc3RNZW50aW9uIG9yIHBvc2l0aW9uID4gQGxhc3RNZW50aW9uCisg
ICAgICBAbGFzdE1lbnRpb24gPSBwb3NpdGlvbgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBy
ZXBsYWNlVGVtcG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgaWYgQGtpbmQgPT0ga2lu
ZAorICAgICAgcmFpc2UgIkRpZCBub3QgYWxsb2NhdGUgcmVnaXN0ZXIgdG8gdGVtcG9yYXJ5IGF0
ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBAcmVnaXN0ZXIKKyAgICAgIEByZWdpc3Rlcgor
ICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIyBBc3NpZ24gcmVn
aXN0ZXJzIHRvIHRlbXBvcmFyaWVzLCBieSBmaW5kaW5nIHdoaWNoIHRlbXBvcmFyaWVzIGludGVy
ZmVyZQorIyB3aXRoIGVhY2ggb3RoZXIuIE5vdGUgdGhhdCB0aGlzIHJlbGllcyBvbiB0ZW1wb3Jh
cnkgbGl2ZSByYW5nZXMgbm90IGNyb3NzaW5nCisjIGJhc2ljIGJsb2NrIGJvdW5kYXJpZXMuCisK
K2RlZiBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFyaWVzKGxpc3QsIGtpbmQsIHJlZ2lzdGVycykK
KyAgbGlzdC5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgbm9kZSwgaW5kZXggfAorICAgIG5vZGUu
ZmlsdGVyKFRtcCkudW5pcS5lYWNoIHsKKyAgICAgIHwgdG1wIHwKKyAgICAgIGlmIHRtcC5raW5k
ID09IGtpbmQKKyAgICAgICAgdG1wLm1lbnRpb24hIGluZGV4CisgICAgICBlbmQKKyAgICB9Cisg
IH0KKyAgCisgIGZyZWVSZWdpc3RlcnMgPSByZWdpc3RlcnMuZHVwCisgIGxpc3QuZWFjaF93aXRo
X2luZGV4IHsKKyAgICB8IG5vZGUsIGluZGV4IHwKKyAgICB0bXBMaXN0ID0gbm9kZS5maWx0ZXIo
VG1wKS51bmlxCisgICAgdG1wTGlzdC5lYWNoIHsKKyAgICAgIHwgdG1wIHwKKyAgICAgIGlmIHRt
cC5raW5kID0ga2luZCBhbmQgdG1wLmZpcnN0TWVudGlvbiA9PSBpbmRleAorICAgICAgICByYWlz
ZSAiQ291bGQgbm90IGFsbG9jYXRlIHJlZ2lzdGVyIHRvIHRlbXBvcmFyeSBhdCAje25vZGUuY29k
ZU9yZ2luU3RyaW5nfSIgaWYgZnJlZVJlZ2lzdGVycy5lbXB0eT8KKyAgICAgICAgdG1wLnJlZ2lz
dGVyID0gZnJlZVJlZ2lzdGVycy5wb3AKKyAgICAgIGVuZAorICAgIH0KKyAgICB0bXBMaXN0LmVh
Y2ggeworICAgICAgfCB0bXAgfAorICAgICAgaWYgdG1wLmtpbmQgPSBraW5kIGFuZCB0bXAubGFz
dE1lbnRpb24gPT0gaW5kZXgKKyAgICAgICAgZnJlZVJlZ2lzdGVycy5wdXNoIHRtcC5yZWdpc3Rl
cgorICAgICAgICByYWlzZSAiUmVnaXN0ZXIgYWxsb2NhdGlvbiBpbmNvbnNpc3RlbmN5IGF0ICN7
bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIgaWYgZnJlZVJlZ2lzdGVycy5zaXplID4gcmVnaXN0ZXJz
LnNpemUKKyAgICAgIGVuZAorICAgIH0KKyAgfQorICAKKyAgbGlzdC5tYXAgeworICAgIHwgbm9k
ZSB8CisgICAgbm9kZS5yZXBsYWNlVGVtcG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgIH0K
K2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJi
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2Vy
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiaW5zdHJ1Y3Rpb25zIgor
cmVxdWlyZSAicmVnaXN0ZXJzIgorCitjbGFzcyBUb2tlbgorICBhdHRyX3JlYWRlciA6Y29kZU9y
aWdpbiwgOnN0cmluZworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RyaW5nKQor
ICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICAgIEBzdHJpbmcgPSBzdHJpbmcKKyAgZW5k
CisgIAorICBkZWYgPT0ob3RoZXIpCisgICAgaWYgb3RoZXIuaXNfYT8gVG9rZW4KKyAgICAgIEBz
dHJpbmcgPT0gb3RoZXIuc3RyaW5nCisgICAgZWxzZQorICAgICAgQHN0cmluZyA9PSBvdGhlcgor
ICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiA9fihvdGhlcikKKyAgICBAc3RyaW5nID1+IG90aGVy
CisgIGVuZAorICAKKyAgZGVmIHRvX3MKKyAgICAiI3tAc3RyaW5nLmluc3BlY3R9IGF0IGxpbmUg
I3tjb2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAg
ICBpZiBjb21tZW50LmVtcHR5PworICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9Igor
ICAgIGVsc2UKKyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfTogI3tjb21tZW50WzBd
fSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIworIyBUaGUgbGV4ZXIuIFRha2VzIGEgc3RyaW5n
IGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRva2Vucy4KKyMKKworZGVmIGxleChzdHIpCisgIHJl
c3VsdCA9IFtdCisgIGxpbmVOdW1iZXIgPSAxCisgIHdoaWxlIG5vdCBzdHIuZW1wdHk/CisgICAg
Y2FzZSBzdHIKKyAgICB3aGVuIC9cQVwjKFteXG5dKikvCisgICAgICAjIGNvbW1lbnQsIGlnbm9y
ZQorICAgIHdoZW4gL1xBXG4vCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIs
ICQmKQorICAgICAgbGluZU51bWJlciArPSAxCisgICAgd2hlbiAvXEFbYS16QS1aXShbYS16QS1a
MC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAg
d2hlbiAvXEFcLihbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGlu
ZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFfKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0
IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQShbIFx0XSspLworICAg
ICAgIyB3aGl0ZXNwYWNlLCBpZ25vcmUKKyAgICB3aGVuIC9cQTB4KFswLTlhLWZBLUZdKykvCisg
ICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLmhleC50b19zKQorICAgIHdo
ZW4gL1xBMChbMC03XSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAk
Ji5vY3QudG9fcykKKyAgICB3aGVuIC9cQShbMC05XSspLworICAgICAgcmVzdWx0IDw8IFRva2Vu
Lm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQTo6LworICAgICAgcmVzdWx0IDw8IFRv
a2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVs6LFwoXClcW1xdPVwrXC0qXS8K
KyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgZWxzZQorICAg
ICAgcmFpc2UgIkxleGVyIGVycm9yIGF0IGxpbmUgbnVtYmVyICN7bGluZU51bWJlcn0sIHVuZXhw
ZWN0ZWQgc2VxdWVuY2UgI3tzdHJbMC4uMjBdLmluc3BlY3R9IgorICAgIGVuZAorICAgIHN0ciA9
ICR+LnBvc3RfbWF0Y2gKKyAgZW5kCisgIHJlc3VsdAorZW5kCisKKyMKKyMgVG9rZW4gaWRlbnRp
ZmljYXRpb24uCisjCisKK2RlZiBpc1JlZ2lzdGVyKHRva2VuKQorICB0b2tlbiA9fiBSRUdJU1RF
Ul9QQVRURVJOCitlbmQKKworZGVmIGlzSW5zdHJ1Y3Rpb24odG9rZW4pCisgIHRva2VuID1+IElO
U1RSVUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNLZXl3b3JkKHRva2VuKQorICB0b2tlbiA9
fiAvXEEoKHRydWUpfChmYWxzZSl8KGlmKXwodGhlbil8KGVsc2UpfChlbHNpZil8KGVuZCl8KGFu
ZCl8KG9yKXwobm90KXwobWFjcm8pfChjb25zdCl8KHNpemVvZil8KGVycm9yKSlcWi8gb3IKKyAg
ICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOIG9yCisgICAgdG9rZW4gPX4gSU5TVFJVQ1RJT05f
UEFUVEVSTgorZW5kCisKK2RlZiBpc0lkZW50aWZpZXIodG9rZW4pCisgIHRva2VuID1+IC9cQVth
LXpBLVpdKFthLXpBLVowLTlfXSopXFovIGFuZCBub3QgaXNLZXl3b3JkKHRva2VuKQorZW5kCisK
K2RlZiBpc0xhYmVsKHRva2VuKQorICB0b2tlbiA9fiAvXEFfKFthLXpBLVowLTlfXSopXFovCitl
bmQKKworZGVmIGlzTG9jYWxMYWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXC4oW2EtekEtWjAt
OV9dKilcWi8KK2VuZAorCitkZWYgaXNWYXJpYWJsZSh0b2tlbikKKyAgaXNJZGVudGlmaWVyKHRv
a2VuKSBvciBpc1JlZ2lzdGVyKHRva2VuKQorZW5kCisKK2RlZiBpc0ludGVnZXIodG9rZW4pCisg
IHRva2VuID1+IC9cQVswLTldLworZW5kCisKKyMKKyMgVGhlIHBhcnNlci4gVGFrZXMgYW4gYXJy
YXkgb2YgdG9rZW5zIGFuZCByZXR1cm5zIGFuIEFTVC4gTWV0aG9kcworIyBvdGhlciB0aGFuIHBh
cnNlKHRva2VucykgYXJlIG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9uLgorIworCitjbGFzcyBQ
YXJzZXIKKyAgZGVmIGluaXRpYWxpemUodG9rZW5zKQorICAgIEB0b2tlbnMgPSB0b2tlbnMKKyAg
ICBAaWR4ID0gMAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlm
IEB0b2tlbnNbQGlkeF0KKyAgICAgIEB0b2tlbnNbQGlkeF0ucGFyc2VFcnJvcigqY29tbWVudCkK
KyAgICBlbHNlCisgICAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgICByYWlzZSAiUGFyc2Ug
ZXJyb3IgYXQgZW5kIG9mIGZpbGUiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlICJQYXJzZSBl
cnJvciBhdCBlbmQgb2YgZmlsZTogI3tjb21tZW50WzBdfSIKKyAgICAgIGVuZAorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiBjb25zdW1lKHJlZ2V4cCkKKyAgICBpZiByZWdleHAKKyAgICAgIHBh
cnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPX4gcmVnZXhwCisgICAgZWxzZQorICAgICAg
cGFyc2VFcnJvciB1bmxlc3MgQGlkeCA9PSBAdG9rZW5zLmxlbmd0aAorICAgIGVuZAorICAgIEBp
ZHggKz0gMQorICBlbmQKKyAgCisgIGRlZiBza2lwTmV3TGluZQorICAgIHdoaWxlIEB0b2tlbnNb
QGlkeF0gPT0gIlxuIgorICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVm
IHBhcnNlUHJlZGljYXRlQXRvbQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm5vdCIKKyAgICAg
IEBpZHggKz0gMQorICAgICAgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJl
c3VsdCA9IHBhcnNlUHJlZGljYXRlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0Bp
ZHhdID09ICIpIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9r
ZW5zW0BpZHhdID09ICJ0cnVlIgorICAgICAgcmVzdWx0ID0gVHJ1ZS5pbnN0YW5jZQorICAgICAg
QGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJmYWxz
ZSIKKyAgICAgIHJlc3VsdCA9IEZhbHNlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAg
IHJlc3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1
bHQgPSBTZXR0aW5nLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0Bp
ZHhdLnN0cmluZykKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzZQorICAg
ICAgcGFyc2VFcnJvcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZUFu
ZAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlk
eF0gPT0gImFuZCIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4K
KyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQ
cmVkaWNhdGVBdG9tCisgICAgICByZXN1bHQgPSBBbmQubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwg
cmlnaHQpCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGlj
YXRlCisgICAgIyBzb21lIGV4YW1wbGVzIG9mIHByZWNlZGVuY2U6CisgICAgIyBub3QgYSBhbmQg
YiAtPiAobm90IGEpIGFuZCBiCisgICAgIyBhIGFuZCBiIG9yIGMgLT4gKGEgYW5kIGIpIG9yIGMK
KyAgICAjIGEgb3IgYiBhbmQgYyAtPiBhIG9yIChiIGFuZCBjKQorICAgIAorICAgIHJlc3VsdCA9
IHBhcnNlUHJlZGljYXRlQW5kCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAib3IiCisgICAg
ICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9IDEK
KyAgICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAg
ICByZXN1bHQgPSBPci5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAg
ICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VWYXJpYWJsZQorICAgIGlmIGlzUmVnaXN0
ZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPX4gRlBSX1BBVFRFUk4K
KyAgICAgICAgcmVzdWx0ID0gRlBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVsc2UKKyAgICAgICAgcmVzdWx0
ID0gUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tA
aWR4XS5zdHJpbmcpCisgICAgICBlbmQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tA
aWR4XSkKKyAgICAgIHJlc3VsdCA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9y
CisgICAgZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBh
cnNlQWRkcmVzcyhvZmZzZXQpCisgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9
PSAiWyIKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgCisg
ICAgIyBUaHJlZSBwb3NzaWJpbGl0aWVzOgorICAgICMgW10gICAgICAgLT4gQWJzb2x1dGVBZGRy
ZXNzCisgICAgIyBbYV0gICAgICAtPiBBZGRyZXNzCisgICAgIyBbYSxiXSAgICAtPiBCYXNlSW5k
ZXggd2l0aCBzY2FsZSA9IDEKKyAgICAjIFthLGIsY10gIC0+IEJhc2VJbmRleAorICAgIAorICAg
IEBpZHggKz0gMQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICBAaWR4ICs9IDEK
KyAgICAgIHJldHVybiBBYnNvbHV0ZUFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIG9mZnNldCkKKyAg
ICBlbmQKKyAgICBhID0gcGFyc2VWYXJpYWJsZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0i
CisgICAgICByZXN1bHQgPSBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBhLCBvZmZzZXQpCisgICAg
ZWxzZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAg
IEBpZHggKz0gMQorICAgICAgYiA9IHBhcnNlVmFyaWFibGUKKyAgICAgIGlmIEB0b2tlbnNbQGlk
eF0gPT0gIl0iCisgICAgICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwg
YiwgMSwgb2Zmc2V0KQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9r
ZW5zW0BpZHhdID09ICIsIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1
bmxlc3MgWyIxIiwgIjIiLCAiNCIsICI4Il0ubWVtYmVyPyBAdG9rZW5zW0BpZHhdLnN0cmluZwor
ICAgICAgICBjID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faQorICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAg
cmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCBjLCBvZmZzZXQpCisgICAg
ICBlbmQKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBk
ZWYgcGFyc2VDb2xvbkNvbG9uCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb2RlT3JpZ2luID0gQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVy
IEB0b2tlbnNbQGlkeF0KKyAgICBuYW1lcyA9IFtAdG9rZW5zW0BpZHhdLnN0cmluZ10KKyAgICBA
aWR4ICs9IDEKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICI6OiIKKyAgICAgIEBpZHggKz0g
MQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAg
ICAgIG5hbWVzIDw8IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICBAaWR4ICs9IDEKKyAgICBl
bmQKKyAgICByYWlzZSBpZiBuYW1lcy5lbXB0eT8KKyAgICBbY29kZU9yaWdpbiwgbmFtZXNdCisg
IGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICBza2lwTmV3TGluZQorICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIE5lZ0ltbWVk
aWF0ZS5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcGFyc2VFeHByZXNzaW9uQXRv
bSkKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisgICAg
ICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tl
bnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lm
IGlzSW50ZWdlciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBJbW1lZGlhdGUubmV3KEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faSkKKyAgICAg
IEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNb
QGlkeF0KKyAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBp
ZiBuYW1lcy5zaXplID4gMQorICAgICAgICBTdHJ1Y3RPZmZzZXQuZm9yRmllbGQoY29kZU9yaWdp
biwgbmFtZXNbMC4uLTJdLmpvaW4oJzo6JyksIG5hbWVzWy0xXSkKKyAgICAgIGVsc2UKKyAgICAg
ICAgVmFyaWFibGUuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lc1swXSkKKyAgICAgIGVuZAorICAg
IGVsc2lmIGlzUmVnaXN0ZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcGFyc2VWYXJpYWJsZQorICAg
IGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIKKyAgICAgIEBpZHggKz0gMQorICAgICAg
Y29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIFNpemVvZi5mb3JOYW1l
KGNvZGVPcmlnaW4sIG5hbWVzLmpvaW4oJzo6JykpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJv
cgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICBza2lw
TmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICB3aGlsZSBAdG9r
ZW5zW0BpZHhdID09ICIqIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgICAg
QGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IE11bEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlk
eCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICAgIGVs
c2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQK
KyAgCisgIGRlZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgIEB0b2tlbnNbQGlkeF0gPT0gIi0iIG9y
IEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIgb3IgaXNJbnRlZ2VyKEB0b2tlbnNbQGlkeF0pIG9y
IGlzVmFyaWFibGUoQHRva2Vuc1tAaWR4XSkgb3IgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgZW5k
CisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uCisgICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQg
PSBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIrIiBvciBA
dG9rZW5zW0BpZHhdID09ICItIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKyIKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IEFkZEltbWVkaWF0ZXMubmV3KEB0b2tlbnNb
QGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJl
c3VsdCA9IFN1YkltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJl
c3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAg
ICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlT3BlcmFu
ZChjb21tZW50KQorICAgIGlmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgICBleHByID0gcGFyc2VF
eHByZXNzaW9uCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAgICBwYXJzZUFk
ZHJlc3MoZXhwcikKKyAgICAgIGVsc2UKKyAgICAgICAgZXhwcgorICAgICAgZW5kCisgICAgZWxz
aWYgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgIHBhcnNlQWRkcmVzcyhJbW1lZGlhdGUubmV3
KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgMCkpCisgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5z
W0BpZHhdCisgICAgICByZXN1bHQgPSBMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luLCBMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vu
c1tAaWR4XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNp
ZiBpc0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJl
ZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMb2NhbExhYmVsLmZvck5hbWUo
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBA
aWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IoY29tbWVu
dCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgIHNr
aXBOZXdMaW5lCisgICAgY29uc3VtZSgvXEFcKFxaLykKKyAgICB2YXJpYWJsZXMgPSBbXQorICAg
IGxvb3AgeworICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIiki
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgaXNJZGVudGlm
aWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIHZhcmlhYmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1l
KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhd
ID09ICIpIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVs
c2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVs
c2UKKyAgICAgICAgICBwYXJzZUVycm9yCisgICAgICAgIGVuZAorICAgICAgZWxzZQorICAgICAg
ICBwYXJzZUVycm9yCisgICAgICBlbmQKKyAgICB9CisgICAgdmFyaWFibGVzCisgIGVuZAorICAK
KyAgZGVmIHBhcnNlU2VxdWVuY2UoZmluYWwsIGNvbW1lbnQpCisgICAgZmlyc3RDb2RlT3JpZ2lu
ID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgbGlzdCA9IFtdCisgICAgbG9vcCB7Cisg
ICAgICBpZiAoQGlkeCA9PSBAdG9rZW5zLmxlbmd0aCBhbmQgbm90IGZpbmFsKSBvciAoZmluYWwg
YW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgIyBpZ25vcmUKKyAgICAgICAgQGlkeCArPSAx
CisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJjb25zdCIKKyAgICAgICAgQGlkeCArPSAx
CisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzVmFyaWFibGUgQHRva2Vuc1tAaWR4XQorICAg
ICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIj0iCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICB2YWx1ZSA9IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGNvbnN0ICN7dmFyaWFi
bGUubmFtZX0iKQorICAgICAgICBsaXN0IDw8IENvbnN0RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJlcnJvciIKKyAgICAgICAgbGlzdCA8PCBFcnJvci5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImlm
IgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwcmVkaWNhdGUgPSBwYXJz
ZVByZWRpY2F0ZQorICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAg
IHNraXBOZXdMaW5lCisgICAgICAgIGlmVGhlbkVsc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3Jp
Z2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxa
LywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAg
bGlzdCA8PCBpZlRoZW5FbHNlCisgICAgICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImVsc2lm
IgorICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIHByZWRpY2F0
ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFov
KQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgZWxzZUNhc2UgPSBJZlRoZW5FbHNl
Lm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5k
KXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIi
KSkKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNhc2UKKyAgICAgICAgICBp
ZlRoZW5FbHNlID0gZWxzZUNhc2UKKyAgICAgICAgZW5kCisgICAgICAgIGlmIEB0b2tlbnNbQGlk
eF0gPT0gImVsc2UiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgaWZUaGVuRWxzZS5l
bHNlQ2FzZSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGVsc2Ug
Y2FzZSBmb3IgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikKKyAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0g
PT0gImVuZCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAg
ICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAg
ICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICBib2R5ID0gcGFyc2VT
ZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gI3tuYW1lfSIpCisgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICBsaXN0IDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBuYW1l
LCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICBlbHNpZiBpc0luc3RydWN0aW9uIEB0b2tlbnNbQGlk
eF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAg
ICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAg
IGlmIChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0
b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rp
b24sIGFuZCBpdCdzIHRoZSBsYXN0IG9uZS4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBicmVhaworICAgICAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVj
dGlvbi4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1l
LCBbXSkKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgICMgSXQn
cyBkZWZpbml0ZWx5IGFuIGluc3RydWN0aW9uLCBhbmQgaXQgaGFzIGF0IGxlYXN0IG9uZSBvcGVy
YW5kLgorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBlbmRPZlNlcXVlbmNlID0g
ZmFsc2UKKyAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3Bl
cmFuZCgid2hpbGUgaW5zaWRlIG9mIGluc3RydWN0aW9uICN7bmFtZX0iKQorICAgICAgICAgICAg
aWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRv
a2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0
cnVjdGlvbiBhbmQgb2YgdGhlIHNlcXVlbmNlLgorICAgICAgICAgICAgICBlbmRPZlNlcXVlbmNl
ID0gdHJ1ZQorICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgIyBIYXMgYW5vdGhlciBvcGVyYW5kLgorICAgICAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxu
IgorICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uLgorICAgICAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQgYSBjb21tYSwgbmV3bGluZSwgb3IgI3tm
aW5hbH0gYWZ0ZXIgI3tvcGVyYW5kcy5sYXN0LmR1bXB9IikKKyAgICAgICAgICAgIGVuZAorICAg
ICAgICAgIH0KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBu
YW1lLCBvcGVyYW5kcykKKyAgICAgICAgICBpZiBlbmRPZlNlcXVlbmNlCisgICAgICAgICAgICBi
cmVhaworICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmll
ciBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgICAgICMgTWFjcm8g
aW52b2NhdGlvbi4KKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBvcGVyYW5kcyA9IFtd
CisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIp
IgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbG9v
cCB7CisgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNb
QGlkeF0gPT0gIm1hY3JvIgorICAgICAgICAgICAgICAgICMgSXQncyBhIG1hY3JvIGxhbWJkYSEK
KyAgICAgICAgICAgICAgICBjb2RlT3JpZ2luSW5uZXIgPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4KKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMg
PSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgICAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVu
Y2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGFub255bW91cyBtYWNybyBwYXNzZWQgYXMg
YXJndW1lbnQgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgICAgICAgb3BlcmFuZHMgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJp
YWJsZXMsIGJvZHkpCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBvcGVyYW5k
cyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBtYWNybyBjYWxsIHRvICN7bmFtZX0i
KQorICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAg
ICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICIsIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgcGFyc2VFcnJvciAiVW5leHBlY3RlZCAje0B0b2tlbnNbQGlkeF0uc3Ry
aW5nLmluc3BlY3R9IHdoaWxlIHBhcnNpbmcgaW52b2NhdGlvbiBvZiBtYWNybyAje25hbWV9Igor
ICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbmQKKyAgICAgICAg
ICBsaXN0IDw8IE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAg
ICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRlciAje25h
bWV9IgorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XSBvciBp
c0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9
PSAiOiIKKyAgICAgICAgIyBJdCdzIGEgbGFiZWwuCisgICAgICAgIGlmIGlzTGFiZWwgbmFtZQor
ICAgICAgICAgIGxpc3QgPDwgTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAg
ICBlbHNlCisgICAgICAgICAgbGlzdCA8PCBMb2NhbExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzZQorICAgICAg
ICBwYXJzZUVycm9yICJFeHBlY3RpbmcgdGVybWluYWwgI3tmaW5hbH0gI3tjb21tZW50fSIKKyAg
ICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoZmlyc3RDb2RlT3JpZ2luLCBsaXN0KQor
ICBlbmQKK2VuZAorCitkZWYgcGFyc2UodG9rZW5zKQorICBwYXJzZXIgPSBQYXJzZXIubmV3KHRv
a2VucykKKyAgcGFyc2VyLnBhcnNlU2VxdWVuY2UobmlsLCAiIikKK2VuZAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitHUFJTID0KKyAgWworICAgInQwIiwKKyAgICJ0MSIsCisgICAidDIiLAorICAgInQz
IiwKKyAgICJ0NCIsCisgICAiY2ZyIiwKKyAgICJhMCIsCisgICAiYTEiLAorICAgInIwIiwKKyAg
ICJyMSIsCisgICAic3AiCisgIF0KKworRlBSUyA9CisgIFsKKyAgICJmdDAiLAorICAgImZ0MSIs
CisgICAiZnQyIiwKKyAgICJmdDMiLAorICAgImZ0NCIsCisgICAiZnQ1IiwKKyAgICJmYTAiLAor
ICAgImZhMSIsCisgICAiZmEyIiwKKyAgICJmYTMiLAorICAgImZyIgorICBdCisKK1JFR0lTVEVS
UyA9IEdQUlMgKyBGUFJTCisKK0dQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgR1BS
Uy5qb2luKCcpfCgnKSArICcpKVxcWicpCitGUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgo
JyArIEZQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQorCitSRUdJU1RFUl9QQVRURVJOID0gUmVn
ZXhwLm5ldygnXFxBKCgnICsgUkVHSVNURVJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZWxmX2hhc2gucmIJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZWxmX2hhc2gucmIJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDggQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiZGlnZXN0L3NoYTEi
CityZXF1aXJlICJwYXRobmFtZSIKKworIworIyBzZWxmSGFzaCAtPiBTSEExIGhleGRpZ2VzdAor
IworIyBSZXR1cm5zIGEgaGFzaCBvZiB0aGUgb2ZmbGluZWFzbSBzb3VyY2UgY29kZS4gVGhpcyBh
bGxvd3MgZGVwZW5kZW5jeQorIyB0cmFja2luZyBmb3Igbm90IGp1c3QgY2hhbmdlcyBpbiBpbnB1
dCwgYnV0IGFsc28gY2hhbmdlcyBpbiB0aGUgYXNzZW1ibGVyCisjIGl0c2VsZi4KKyMKKworZGVm
IHNlbGZIYXNoCisgIGNvbnRlbnRzID0gIiIKKyAgbXlQYXRoID0gUGF0aG5hbWUubmV3KF9fRklM
RV9fKS5kaXJuYW1lCisgIERpci5mb3JlYWNoKG15UGF0aCkgeworICAgIHwgZW50cnkgfAorICAg
IGlmIGVudHJ5ID1+IC9cLnJiJC8KKyAgICAgIGNvbnRlbnRzICs9IElPOjpyZWFkKG15UGF0aCAr
IGVudHJ5KQorICAgIGVuZAorICB9CisgIHJldHVybiBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGNv
bnRlbnRzKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Nl
dHRpbmdzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjA1IEBACisjIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJi
YWNrZW5kcyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworIworIyBj
b21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25zCisj
CisjIENvbXB1dGVzIGFuIGFycmF5IG9mIHNldHRpbmdzIG1hcHMsIHdoZXJlIGEgc2V0dGluZ3Mg
bWFwIGNvbnN0aXR1dGVzCisjIGEgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFzc2VtYmx5IGNvZGUg
YmVpbmcgZ2VuZXJhdGVkLiBUaGUgbWFwCisjIGNvbnRhaW5zIGtleSB2YWx1ZSBwYWlycyB3aGVy
ZSBrZXlzIGFyZSBzZXR0aW5ncyBuYW1lcyAoc3RyaW5ncykgYW5kCisjIHRoZSB2YWx1ZXMgYXJl
IGJvb2xlYW5zICh0cnVlIGZvciBlbmFibGVkLCBmYWxzZSBmb3IgZGlzYWJsZWQpLgorIworCitk
ZWYgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgc2V0dGluZ3NDb21iaW5hdGlv
bnMgPSBbXQorICAKKyAgZGVmIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9u
cywgbWFwU29GYXIsIHJlbWFpbmluZykKKyAgICBpZiByZW1haW5pbmcuZW1wdHk/CisgICAgICBz
ZXR0aW5nc0NvbWJpbmF0aW9ucyA8PCBtYXBTb0ZhcgorICAgICAgcmV0dXJuCisgICAgZW5kCisg
ICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0g
PSB0cnVlCisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdN
YXAsIHJlbWFpbmluZ1sxLi4tMV0pCisgICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisg
ICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSBmYWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihz
ZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICBlbmQKKyAg
CisgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywge30sIChhc3QuZmls
dGVyKFNldHRpbmcpLnVuaXEuY29sbGVjdHt8dnwgdi5uYW1lfSArIFsiWDg2IiwgIkFSTXY3Il0p
LnVuaXEpCisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucworZW5kCisKKyMKKyMgZm9yU2V0dGlu
Z3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxv
d0xldmVsQVNULCBiYWNrZW5kIHwgLi4uIH0KKyMKKyMgRGV0ZXJtaW5lcyBpZiB0aGUgc2V0dGlu
Z3MgY29tYmluYXRpb24gaXMgdmFsaWQsIGFuZCBpZiBzbywgY2FsbHMKKyMgdGhlIGJsb2NrIHdp
dGggdGhlIGluZm9ybWF0aW9uIHlvdSBuZWVkIHRvIGdlbmVyYXRlIGNvZGUuCisjCisKK2RlZiBm
b3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJjaGl0
ZWN0dXJlcyB0aGlzIGNvbWJpbmF0b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWltZWRC
YWNrZW5kcyA9IDAKKyAgc2VsZWN0ZWRCYWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2ggewor
ICAgIHwgYmFja2VuZCB8CisgICAgaXNTdXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2JhY2tl
bmRdCisgICAgcmFpc2UgdW5sZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWltZWRC
YWNrZW5kcyArPSBpZiBpc1N1cHBvcnRlZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlzU3Vw
cG9ydGVkCisgICAgICBzZWxlY3RlZEJhY2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0KKyAg
CisgIHJldHVybiBpZiBudW1DbGFpbWVkQmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUgdGhl
IEFTVCBkb3duIHRvIGEgbG93LWxldmVsIGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25hbHMp
LgorICBsb3dMZXZlbEFTVCA9IGFzdC5yZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykK
KyAgCisgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJhY2tl
bmQKK2VuZAorCisjCisjIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7Cisj
ICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfQorIwor
IyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgc2V0dGluZ3NDb21iaW5hdGlv
bnMpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4u
LiB9CisjCisjIEV4ZWN1dGVzIHRoZSBnaXZlbiBibG9jayBmb3IgZWFjaCB2YWxpZCBzZXR0aW5n
cyBjb21iaW5hdGlvbiBpbiB0aGUKKyMgc2V0dGluZ3MgbWFwLiBUaGUgYXN0IHBhc3NlZCBpbnRv
IHRoZSBibG9jayBpcyByZXNvbHZlZAorIyAoYXN0LnJlc29sdmUpIGFnYWluc3QgdGhlIHNldHRp
bmdzLgorIworIyBUaGUgZmlyc3QgZm9ybSB3aWxsIGNhbGwgY29tcHV0ZVNldHRpbmdzQ29tYmlu
YXRpb25zKGFzdCkgZm9yIHlvdS4KKyMKKworZGVmIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmlu
YXRpb24oYXN0LCAqb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucykKKyAgcmFpc2UgaWYgb3B0
aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucy5zaXplID4gMQorICAKKyAgaWYgb3B0aW9uYWxTZXR0
aW5nc0NvbWJpbmF0aW9ucy5lbXB0eT8KKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IGNvbXB1
dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIGVsc2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0
aW9ucyA9IG9wdGlvbmFsU2V0dGluZ3NDb21iaWF0aW9uc1swXQorICBlbmQKKyAgCisgIHNldHRp
bmdzQ29tYmluYXRpb25zLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdz
LCBpbmRleCB8CisgICAgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7CisgICAg
ICB8IGNvbmNyZXRlU2V0dGluZ3NfLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgICB5aWVs
ZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICB9Cisg
IH0KK2VuZAorCisjCisjIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorIworIyBS
ZXR1cm5zIHRoZSBDKysgY29kZSB1c2VkIHRvIHRlc3QgaWYgd2UgYXJlIGluIGEgY29uZmlndXJh
dGlvbiB0aGF0CisjIGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBjb25jcmV0ZSBzZXR0aW5ncy4K
KyMKKworZGVmIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAiI2lmICIgKyBj
b25jcmV0ZVNldHRpbmdzLnRvX2EuY29sbGVjdHsKKyAgICB8IHBhaXIgfAorICAgIChpZiBwYWly
WzFdCisgICAgICAgIiIKKyAgICAgZWxzZQorICAgICAgICIhIgorICAgICBlbmQpICsgIk9GRkxJ
TkVfQVNNXyIgKyBwYWlyWzBdCisgIH0uam9pbigiICYmICIpCitlbmQKKworIworIyBpc0FTVEVy
cm9uZW91cyhhc3QpCisjCisjIFRlc3RzIHRvIHNlZSBpZiB0aGUgQVNUIGNsYWltcyB0aGF0IHRo
ZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUKKyMgdXNlcidzIGNvZGUsIGFmdGVyIHNldHRp
bmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4KKyMKKworZGVmIGlzQVNURXJyb25lb3Vz
KGFzdCkKKyAgbm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5PworZW5kCisKKyMKKyMgYXNzZXJ0
Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorIworIyBFbWl0cyBhIGNoZWNrIHRoYXQg
YXNzZXJ0cyB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uLgorIworCitk
ZWYgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICAkb3V0cHV0LnB1dHMg
Y3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICRvdXRwdXQucHV0cyAiI2Vsc2Ui
CisgICRvdXRwdXQucHV0cyAiI2Vycm9yIFwiQ29uZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAg
JG91dHB1dC5wdXRzICIjZW5kaWYiCitlbmQKKworIworIyBlbWl0Q29kZUluQ29uZmlndXJhdGlv
bihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0
aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4uIH0KKyMKKyMgRW1pdHMgYWxsIHJlbGV2YW50IGd1YXJk
cyB0byBzZWUgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaG9sZHMgYW5kCisjIGNhbGxzIHRoZSBibG9j
ayBpZiB0aGUgY29uZmlndXJhdGlvbiBpcyBub3QgZXJyb25lb3VzLgorIworCitkZWYgZW1pdENv
ZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKQorICAkb3V0
cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICBpZiBpc0FT
VEVycm9uZW91cyhhc3QpCisgICAgJG91dHB1dC5wdXRzICIjZXJyb3IgXCJJbnZhbGlkIGNvbmZp
Z3VyYXRpb24uXCIiCisgIGVsc2lmIG5vdCBXT1JLSU5HX0JBQ0tFTkRTLmluY2x1ZGU/IGJhY2tl
bmQKKyAgICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIlRoaXMgYmFja2VuZCBpcyBub3Qgc3VwcG9y
dGVkIHlldC5cIiIKKyAgZWxzZQorICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFj
a2VuZAorICBlbmQKKyAgCisgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMKKyMgZW1p
dENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdz
LCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0KKyMKKyMgRW1pdHMgZ3VhcmQgY29kZXMgZm9y
IGFsbCB2YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxzIHRoZSBibG9jaworIyBmb3IgdGhv
c2UgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5kIG5vdCBlcnJvbmVvdXMuCisjCisK
K2RlZiBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KQorICBmb3JFYWNoVmFsaWRTZXR0
aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxB
U1QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNv
bmNyZXRlU2V0dGluZ3MpCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1Qs
IGJhY2tlbmQsIGluZGV4CisgICAgJG91dHB1dC5wdXRzICIjZW5kaWYiCisgIH0KK2VuZAorCisK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5y
YgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5z
Zm9ybS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNDIgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKKworIworIyBub2RlLnJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90
IGhhdmUgYW55IElmVGhlbkVsc2Ugbm9kZXMgYnkKKyMgc3Vic3RpdHV0aW5nIGNvbmNyZXRlIGJv
b2xlYW4gdmFsdWVzIGZvciBlYWNoIFNldHRpbmcuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJl
c29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxk
IHwKKyAgICAgIGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICB9CisgIGVuZAor
ZW5kCisKK2NsYXNzIFRydWUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBz
ZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nCisgIGRlZiByZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2V0dGluZ3NbQG5hbWVdLmFzTm9kZQorICBlbmQK
K2VuZAorCitjbGFzcyBBbmQKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAo
QGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBhbmQgQHJpZ2h0LnJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBPcgor
ICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpLnZhbHVlIG9yIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZh
bHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgTm90CisgIGRlZiByZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpCisgICAgKG5vdCBAY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52
YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UKKyAgZGVmIHJlc29s
dmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBpZiBAcHJlZGljYXRlLnJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykudmFsdWUKKyAgICAgIEB0aGVuQ2FzZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
CisgICAgZWxzZQorICAgICAgQGVsc2VDYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAg
ICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwg
aXRlbSB8CisgICAgICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAg
ICBpZiBpdGVtLmlzX2E/IFNlcXVlbmNlCisgICAgICAgIG5ld0xpc3QgKz0gaXRlbS5saXN0Cisg
ICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbQorICAgICAgZW5kCisgICAgfQorICAg
IFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKK2VuZAorCisjCisjIG5v
ZGUuZGVtYWNyb2lmeShtYWNyb3MpCisjIG5vZGUuc3Vic3RpdHV0ZShtYXBwaW5nKQorIworIyBk
ZW1hY3JvaWZ5KCkgY29uc3RydWN0cyBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBN
YWNybworIyBub2Rlcywgd2hpbGUgc3Vic3RpdHV0ZSgpIHJlcGxhY2VzIFZhcmlhYmxlIG5vZGVz
IHdpdGggdGhlIGdpdmVuCisjIG5vZGVzIGluIHRoZSBtYXBwaW5nLgorIworCitjbGFzcyBOb2Rl
CisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNo
aWxkIHwKKyAgICAgIGNoaWxkLmRlbWFjcm9pZnkobWFjcm9zKQorICAgIH0KKyAgZW5kCisgIAor
ICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hp
bGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIH0KKyAgZW5kCisgIAor
ICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAg
IHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIH0K
KyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8KKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAg
ICBteU1hcHBpbmcgPSB7fQorICAgIG1hcHBpbmcuZWFjaF9wYWlyIHsKKyAgICAgIHwga2V5LCB2
YWx1ZSB8CisgICAgICB1bmxlc3MgQHZhcmlhYmxlcy5pbmNsdWRlPyBrZXkKKyAgICAgICAgbXlN
YXBwaW5nW2tleV0gPSB2YWx1ZQorICAgICAgZW5kCisgICAgfQorICAgIG1hcENoaWxkcmVuIHsK
KyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShteU1hcHBpbmcpCisgICAg
fQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZQorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5n
KQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisg
ICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVm
IHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBt
YXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAor
CitjbGFzcyBTZXF1ZW5jZQorICBkZWYgc3Vic3RpdHV0ZShjb25zdGFudHMpCisgICAgbmV3TGlz
dCA9IFtdCisgICAgbXlDb25zdGFudHMgPSBjb25zdGFudHMuZHVwCisgICAgQGxpc3QuZWFjaCB7
CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAgICAg
bXlDb25zdGFudHNbaXRlbS52YXJpYWJsZV0gPSBpdGVtLnZhbHVlLnN1YnN0aXR1dGUobXlDb25z
dGFudHMpCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5zdWJzdGl0dXRlKG15
Q29uc3RhbnRzKQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2lu
LCBuZXdMaXN0KQorICBlbmQKKyAgCisgIGRlZiByZW5hbWVMYWJlbHMoY29tbWVudCkKKyAgICBt
YXBwaW5nID0ge30KKyAgICAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAg
ICBpZiBpdGVtLmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAgbWFwcGluZ1tpdGVtXSA9IExvY2Fs
TGFiZWwudW5pcXVlKGlmIGNvbW1lbnQgdGhlbiBjb21tZW50ICsgIl8iIGVsc2UgIiIgZW5kICsg
aXRlbS5jbGVhbk5hbWUpCisgICAgICBlbmQKKyAgICB9CisgICAgCisgICAgc3Vic3RpdHV0ZUxh
YmVscyhtYXBwaW5nKQorICBlbmQKKyAgCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBt
eU1hY3JvcyA9IG1hY3Jvcy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8Cisg
ICAgICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBp
dGVtCisgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7
CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICAjIEln
bm9yZS4KKyAgICAgIGVsc2lmIGl0ZW0uaXNfYT8gTWFjcm9DYWxsCisgICAgICAgIG1hcHBpbmcg
PSB7fQorICAgICAgICBteU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisgICAgICAgIHJhaXNlICJD
b3VsZCBub3QgZmluZCBtYWNybyAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJp
bmd9IiB1bmxlc3MgbXlNYWNyb3NbaXRlbS5uYW1lXQorICAgICAgICByYWlzZSAiQXJndW1lbnQg
Y291bnQgbWlzbWF0Y2ggZm9yIGNhbGwgdG8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3Jp
Z2luU3RyaW5nfSIgdW5sZXNzIGl0ZW0ub3BlcmFuZHMuc2l6ZSA9PSBteU1hY3Jvc1tpdGVtLm5h
bWVdLnZhcmlhYmxlcy5zaXplCisgICAgICAgIGl0ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7Cisg
ICAgICAgICAgfCBpZHggfAorICAgICAgICAgIGlmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBW
YXJpYWJsZSBhbmQgbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAg
ICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBt
eU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlN
YWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVs
c2lmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBNYWNybworICAgICAgICAgICAgbXlNeU1hY3Jv
c1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5k
c1tpZHhdCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVz
W2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBteU15TWFjcm9z
W215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gbmlsCisgICAgICAgICAgICBt
YXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gaXRlbS5vcGVyYW5k
c1tpZHhdCisgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCArPSBteU1h
Y3Jvc1tpdGVtLm5hbWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlN
YWNyb3MpLnJlbmFtZUxhYmVscyhpdGVtLm5hbWUpLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAg
bmV3TGlzdCA8PCBpdGVtLmRlbWFjcm9pZnkobXlNYWNyb3MpCisgICAgICBlbmQKKyAgICB9Cisg
ICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpLnN1YnN0aXR1dGUoe30pCisgIGVu
ZAorZW5kCisKKyMKKyMgbm9kZS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyMKKyMg
Q29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGhhcyBvZmZzZXQgdmFsdWVzIGluc3RlYWQgb2Ygc3lt
Ym9saWMKKyMgb2Zmc2V0cy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZU9mZnNldHMo
b2Zmc2V0cywgc2l6ZXMpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAg
ICBjaGlsZC5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICB9CisgIGVuZAorZW5k
CisKK2NsYXNzIFN0cnVjdE9mZnNldAorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6
ZXMpCisgICAgaWYgb2Zmc2V0c1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2lu
LCBvZmZzZXRzW3NlbGZdKQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitl
bmQKKworY2xhc3MgU2l6ZW9mCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykK
KyAgICBpZiBzaXplc1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBzaXpl
c1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBwdXRzICJDb3VsZCBub3QgZmluZCAje3NlbGYuaW5z
cGVjdH0gaW4gI3tzaXplcy5rZXlzLmluc3BlY3R9IgorICAgICAgcHV0cyAic2l6ZXMgPSAje3Np
emVzLmluc3BlY3R9IgorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCisjCisjIG5v
ZGUuZm9sZAorIworIyBSZXNvbHZlIGNvbnN0YW50IHJlZmVyZW5jZXMgYW5kIGNvbXB1dGUgYXJp
dGhtZXRpYyBleHByZXNzaW9ucy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgZm9sZAorICAgIG1h
cENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuZm9sZAorICAgIH0KKyAg
ZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0g
QGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5s
ZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQu
aXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1
ZSArIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcworICBk
ZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xk
CisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVy
biBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhj
b2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAtIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xh
c3MgTXVsSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAg
IEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/
IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRl
CisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAqIEByaWdodC52YWx1
ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlCisgIGRlZiBmb2xkCisgICAgQGNo
aWxkID0gQGNoaWxkLmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGNoaWxkLmlzX2E/IElt
bWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLUBjaGlsZC52YWx1ZSkKKyAg
ZW5kCitlbmQKKworIworIyBub2RlLnJlc29sdmVBZnRlclNldHRpbmdzKG9mZnNldHMsIHNpemVz
KQorIworIyBDb21waWxlIGFzc2VtYmx5IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4KKyMKKwor
Y2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZShvZmZzZXRzLCBzaXplcykKKyAgICBkZW1hY3JvaWZ5
KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykuZm9sZAorICBlbmQKK2VuZAorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY3NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
Y2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICBjYXNlIG5hbWUK
KyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0MSIsICJhMSIsICJyMSIsICJ0MiIsICJ0MyIK
KyAgICAgIHRydWUKKyAgICB3aGVuICJ0NCIsICJjZnIiCisgICAgICBmYWxzZQorICAgIGVsc2UK
KyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkK
KyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgIGNhc2Uga2lu
ZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWFsIgorICAgICAgd2hlbiA6aGFsZgorICAg
ICAgICAiJWF4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWF4IgorICAgICAgZWxzZQor
ICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAg
ICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkbCIKKyAgICAgIHdoZW4g
OmhhbGYKKyAgICAgICAgIiVkeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkeCIKKyAg
ICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQyIgorICAgICAg
Y2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlY2wiCisgICAgICB3aGVuIDpo
YWxmCisgICAgICAgICIlY3giCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlY3giCisgICAg
ICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MyIKKyAgICAgIGNh
c2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWJsIgorICAgICAgd2hlbiA6aGFs
ZgorICAgICAgICAiJWJ4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWJ4IgorICAgICAg
ZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDQiCisgICAgICBjYXNl
IGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzaWwiCisgICAgICB3aGVuIDpoYWxm
CisgICAgICAgICIlc2kiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlc2kiCisgICAgICBl
bHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJjZnIiCisgICAgICBjYXNl
IGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkaWwiCisgICAgICB3aGVuIDpoYWxm
CisgICAgICAgICIlZGkiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlZGkiCisgICAgICBl
bHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJzcCIKKyAgICAgIGNhc2Ug
a2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNwbCIKKyAgICAgIHdoZW4gOmhhbGYK
KyAgICAgICAgIiVzcCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzcCIKKyAgICAgIGVs
c2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAg
ZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFu
ZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgeDg2T3Bl
cmFuZChraW5kKQorICAgIHJhaXNlIHVubGVzcyBraW5kID09IDpkb3VibGUKKyAgICBjYXNlIG5h
bWUKKyAgICB3aGVuICJmdDAiLCAiZmEwIiwgImZyIgorICAgICAgIiV4bW0wIgorICAgIHdoZW4g
ImZ0MSIsICJmYTEiCisgICAgICAiJXhtbTEiCisgICAgd2hlbiAiZnQyIiwgImZhMiIKKyAgICAg
ICIleG1tMiIKKyAgICB3aGVuICJmdDMiLCAiZmEzIgorICAgICAgIiV4bW0zIgorICAgIHdoZW4g
ImZ0NCIKKyAgICAgICIleG1tNCIKKyAgICB3aGVuICJmdDUiCisgICAgICAiJXhtbTUiCisgICAg
ZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChr
aW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW1t
ZWRpYXRlCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiQje3ZhbHVlfSIKKyAgZW5kCisg
IGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIje3ZhbHVlfSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAor
ICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje29mZnNldC52YWx1ZX0oI3tiYXNl
Lng4Nk9wZXJhbmQoOmludCl9KSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQor
ICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4
CisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4
ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6
aW50KX0sICN7aW5kZXgueDg2T3BlcmFuZCg6aW50KX0sICN7c2NhbGV9KSIKKyAgZW5kCisKKyAg
ZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nm9wZXJhbmQoa2luZCl9IgorICBl
bmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2
CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3th
ZGRyZXNzLnZhbHVlfSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAg
Iioje2FkZHJlc3MudmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZQor
ICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICBhc21MYWJlbAorICBlbmQKK2VuZAorCitj
bGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAg
IGFzbUxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgIGRlZiB4ODZPcGVy
YW5kcygqa2luZHMpCisgICAgcmFpc2UgdW5sZXNzIGtpbmRzLnNpemUgPT0gb3BlcmFuZHMuc2l6
ZQorICAgIHJlc3VsdCA9IFtdCisgICAga2luZHMuc2l6ZS50aW1lcyB7CisgICAgICB8IGlkeCB8
CisgICAgICByZXN1bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZPcGVyYW5kKGtpbmRzW2lkeF0pCisg
ICAgfQorICAgIHJlc3VsdC5qb2luKCIsICIpCisgIGVuZAorCisgIGRlZiB4ODZTdWZmaXgoa2lu
ZCkKKyAgICBjYXNlIGtpbmQKKyAgICB3aGVuIDpieXRlCisgICAgICAiYiIKKyAgICB3aGVuIDpo
YWxmCisgICAgICAidyIKKyAgICB3aGVuIDppbnQKKyAgICAgICJsIgorICAgIHdoZW4gOmRvdWJs
ZQorICAgICAgInNkIgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgbnVtT3BlcmFu
ZHMpCisgICAgaWYgbnVtT3BlcmFuZHMgPT0gMworICAgICAgaWYgb3BlcmFuZHNbMF0gPT0gb3Bl
cmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVs
c2lmIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiI3tvcGNv
ZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3Bl
cmFuZChraW5kKX0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAibW92I3t4ODZTdWZm
aXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0u
eDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0i
CisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcChvcGNvZGUsIGtpbmQpCisg
ICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXpl
KQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTaGlmdChvcGNvZGUsIGtpbmQpCisgICAgaWYg
b3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIG9yIG9wZXJhbmRzWzBdID09IFJlZ2lzdGVySUQu
Zm9yTmFtZShuaWwsICJ0MiIpCisgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6aW50KX0sICVlY3giCisgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAlY2wsICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVm
IGhhbmRsZVg4NkRvdWJsZUJyYW5jaChicmFuY2hPcGNvZGUsIG1vZGUpCisgICAgY2FzZSBtb2Rl
CisgICAgd2hlbiA6bm9ybWFsCisgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUp
fSIKKyAgICB3aGVuIDpyZXZlcnNlCisgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSBtb2RlLmluc3BlY3QKKyAgICBlbmQKKyAgICAk
YXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgZW5k
CisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29tcGFyZShvcGNvZGVTdWZmaXgsIGtpbmQpCisgICAg
aWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAw
IGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJl
IiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAidGVzdCN7eDg2U3Vm
Zml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2lmIG9w
ZXJhbmRzWzFdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMCBhbmQg
b3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Ig
b3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChr
aW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAk
YXNtLnB1dHMgImNtcCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
a2luZCl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBoYW5kbGVYODZJbnRCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhh
bmRsZVg4NkludENvbXBhcmUoYnJhbmNoT3Bjb2RlWzEuLi0xXSwga2luZCkKKyAgICAkYXNtLnB1
dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgZW5kCisgIAor
ICBkZWYgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZCkKKyAgICBpZiBvcGVyYW5kLnN1
cHBvcnRzOEJpdE9uWDg2CisgICAgICAkYXNtLnB1dHMgIiN7c2V0T3Bjb2RlfSAje29wZXJhbmQu
eDg2T3BlcmFuZCg6Ynl0ZSl9IgorICAgICAgJGFzbS5wdXRzICJtb3Z6YmwgI3tvcGVyYW5kLng4
Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UK
KyAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4
IgorICAgICAgJGFzbS5wdXRzICIje3NldE9wY29kZX0gJWFsIgorICAgICAgJGFzbS5wdXRzICJt
b3Z6YmwgJWFsLCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJ4Y2hnbCAje29wZXJhbmQueDg2T3Bl
cmFuZCg6aW50KX0sICVlYXgiCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nklu
dENvbXBhcmVTZXQoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NkludENvbXBhcmUoc2V0
T3Bjb2RlWzMuLi0xXSwga2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5k
c1syXSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2VGVzdChraW5kKQorICAgIHZhbHVlID0g
b3BlcmFuZHNbMF0KKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDIKKyAgICAgIG1h
c2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAgIHdoZW4gMworICAgICAgbWFz
ayA9IG9wZXJhbmRzWzFdCisgICAgZWxzZQorICAgICAgcmFpc2UgIkV4cGVjdGVkIDIgb3IgMyBv
cGVyYW5kcywgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30i
CisgICAgZW5kCisgICAgCisgICAgaWYgbWFzay5pc19hPyBJbW1lZGlhdGUgYW5kIG1hc2sudmFs
dWUgPT0gLTEKKyAgICAgIGlmIHZhbHVlLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5w
dXRzICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0sICN7
dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAi
Y21wI3t4ODZTdWZmaXgoa2luZCl9ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAg
ICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9
ICN7bWFzay54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAg
ICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2QnJhbmNoVGVzdChicmFuY2hPcGNvZGUs
IGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgICRhc20ucHV0cyAiI3ticmFuY2hP
cGNvZGV9ICN7b3BlcmFuZHMubGFzdC5hc21MYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRs
ZVg4NlNldFRlc3Qoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAg
ICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kcy5sYXN0KQorICBlbmQKKyAgCisgIGRl
ZiBoYW5kbGVYODZPcEJyYW5jaChvcGNvZGUsIGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5k
bGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQor
ICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9w
ZXJhbmRzWzNdCisgICAgd2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAg
ICBlbHNlCisgICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMg
IiN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQuYXNtTGFiZWx9IgorICBlbmQKKyAgCisgIGRl
ZiBoYW5kbGVYODZTdWJCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGlmIG9wZXJhbmRz
LnNpemUgPT0gNCBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICRhc20ucHV0
cyAibmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRz
ICJhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFu
ZHMoInN1YiN7eDg2U3VmZml4KGtpbmQpfSIsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAg
IGVuZAorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdl
dCA9IG9wZXJhbmRzWzNdCisgICAgd2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNb
Ml0KKyAgICBlbHNlCisgICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNt
LnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQuYXNtTGFiZWx9IgorICBlbmQKKyAg
CisgIGRlZiBsb3dlclg4NgorICAgICRhc20uY29tbWVudCBjb2RlT3JpZ2luU3RyaW5nCisgICAg
Y2FzZSBvcGNvZGUKKyAgICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAgICBpZiBvcGVyYW5kcy5z
aXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICByYWlzZSB1
bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mg
b3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1
ZSA9PSAwCisgICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAg
ICAgICAgICAkYXNtLnB1dHMgIm1vdmwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwg
I3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICBlbmQKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICRhc20ucHV0cyAibGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9w
ZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRz
WzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlz
X2E/IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJsZWFsICgje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgdW5sZXNzIElt
bWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAgICRhc20ucHV0cyAi
YWRkbCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbmQK
KyAgICB3aGVuICJhbmRpIiwgImFuZHAiCisgICAgICBoYW5kbGVYODZPcCgiYW5kbCIsIDppbnQp
CisgICAgd2hlbiAibHNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYWxsIiwgOmludCkK
KyAgICB3aGVuICJtdWxpIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5k
c1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgJGFzbS5wdXRzICJpbXVsbCAje3g4Nk9wZXJh
bmRzKDppbnQsIDppbnQsIDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgIyBGSVhNRTogY291
bGQgZG8gc29tZSBwZWVwaG9sZSBpbiBjYXNlIHRoZSBsZWZ0IG9wZXJhbmQgaXMgaW1tZWRpYXRl
IGFuZCBpdCdzCisgICAgICAgICMgYSBwb3dlciBvZiB0d28uCisgICAgICAgIGhhbmRsZVg4Nk9w
KCJpbXVsbCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJuZWdpIgorICAgICAgJGFzbS5w
dXRzICJuZWdsICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm5vdGkiCisgICAgICAk
YXNtLnB1dHMgIm5vdGwgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAib3JpIiwgIm9y
cCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJvcmwiLCA6aW50KQorICAgIHdoZW4gInJzaGlmdGkiCisg
ICAgICBoYW5kbGVYODZTaGlmdCgic2FybCIsIDppbnQpCisgICAgd2hlbiAidXJzaGlmdGkiCisg
ICAgICBoYW5kbGVYODZTaGlmdCgic2hybCIsIDppbnQpCisgICAgd2hlbiAic3ViaSIsICJzdWJw
IgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5k
c1syXQorICAgICAgICAkYXNtLnB1dHMgIm5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICAgICAgJGFzbS5wdXRzICJhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAg
ICAgIGhhbmRsZVg4Nk9wKCJzdWJsIiwgOmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gInhvcmki
LCAieG9ycCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJ4b3JsIiwgOmludCkKKyAgICB3aGVuICJsb2Fk
aSIsICJzdG9yZWkiLCAibG9hZHAiLCAic3RvcmVwIgorICAgICAgJGFzbS5wdXRzICJtb3ZsICN7
eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgIHdoZW4gImxvYWRiIgorICAgICAgJGFzbS5w
dXRzICJtb3Z6YmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGgiCisgICAgICAkYXNtLnB1dHMg
Im1vdnp3bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJzdG9yZWIiCisgICAgICAkYXNtLnB1dHMgIm1v
dmIgI3t4ODZPcGVyYW5kcyg6Ynl0ZSwgOmJ5dGUpfSIKKyAgICB3aGVuICJsb2FkZCIsICJtb3Zl
ZCIsICJzdG9yZWQiCisgICAgICAkYXNtLnB1dHMgIm1vdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJs
ZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImFkZGQiCisgICAgICAkYXNtLnB1dHMgImFkZHNkICN7
eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImRpdmQiCisgICAgICAk
YXNtLnB1dHMgImRpdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdo
ZW4gInN1YmQiCisgICAgICAkYXNtLnB1dHMgInN1YnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwg
OmRvdWJsZSl9IgorICAgIHdoZW4gIm11bGQiCisgICAgICAkYXNtLnB1dHMgIm11bHNkICN7eDg2
T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInNxcnRkIgorICAgICAgJGFz
bS5wdXRzICJzcXJ0c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJjaTJkIgorICAgICAgJGFz
bS5wdXRzICJjdnRzaTJzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImJkZXEiCisgICAgICBpc1Vu
b3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZGVxIikKKyAgICAgICRhc20ucHV0cyAidWNv
bWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJqcCAje0xhYmVsUmVmZXJlbmNl
Lm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkuYXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRz
ICJqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBvcGVyYW5kc1syXSkuYXNtTGFi
ZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRuZXEiCisg
ICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpuZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRn
dCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6bm9ybWFsKQorICAgIHdoZW4g
ImJkZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOm5vcm1hbCkKKyAg
ICB3aGVuICJiZGx0IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpyZXZlcnNl
KQorICAgIHdoZW4gImJkbHRlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwg
OnJldmVyc2UpCisgICAgd2hlbiAiYmRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNo
KCJqZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRuZXF1biIKKyAgICAgIGlzVW5vcmRlcmVkID0g
TG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4iKQorICAgICAgaXNFcXVhbCA9IExvY2FsTGFiZWwu
dW5pcXVlKCJiZG5lcXVuIikKKyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
IgorICAgICAgJGFzbS5wdXRzICJqcCAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBp
c1Vub3JkZXJlZCkuYXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJqZSAje0xhYmVsUmVmZXJl
bmNlLm5ldyhjb2RlT3JpZ2luLCBpc0VxdWFsKS5hc21MYWJlbH0iCisgICAgICBpc1Vub3JkZXJl
ZC5sb3dlcigiWDg2IikKKyAgICAgICRhc20ucHV0cyAiam1wICN7b3BlcmFuZHNbMl0uYXNtTGFi
ZWx9IgorICAgICAgaXNFcXVhbC5sb3dlcigiWDg2IikKKyAgICB3aGVuICJiZGd0dW4iCisgICAg
ICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRndGVx
dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpyZXZlcnNlKQorICAgIHdo
ZW4gImJkbHR1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6bm9ybWFsKQor
ICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6
bm9ybWFsKQorICAgIHdoZW4gImJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiY21wbCAkMHg4MDAwMDAwMCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJqZSAje29wZXJhbmRzWzJdLmFz
bUxhYmVsfSIKKyAgICB3aGVuICJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICB3aGVuICJiY2QyaSIKKyAgICAgICRhc20ucHV0cyAiY3Z0dHNkMnNpICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgInRlc3RsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1
dHMgImplICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJjdnRzaTJz
ZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0
cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAg
ICAgICRhc20ucHV0cyAianAgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAkYXNtLnB1
dHMgImpuZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJtb3ZkeiIKKyAgICAg
ICRhc20ucHV0cyAieG9ycGQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJwb3AiCisgICAgICAk
YXNtLnB1dHMgInBvcCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4g
InB1c2giCisgICAgICAkYXNtLnB1dHMgInB1c2ggI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgaWYgSW1tZWRp
YXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdp
c3RlcklECisgICAgICAgICRhc20ucHV0cyAieG9ybCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzaWYgb3Bl
cmFuZHNbMF0gIT0gb3BlcmFuZHNbMV0KKyAgICAgICAgJGFzbS5wdXRzICJtb3ZsICN7eDg2T3Bl
cmFuZHMoOmludCwgOmludCl9IgorICAgICAgZW5kCisgICAgd2hlbiAibm9wIgorICAgICAgJGFz
bS5wdXRzICJub3AiCisgICAgd2hlbiAiYmllcSIsICJicGVxIgorICAgICAgaGFuZGxlWDg2SW50
QnJhbmNoKCJqZSIsIDppbnQpCisgICAgd2hlbiAiYmluZXEiLCAiYnBuZXEiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImpuZSIsIDppbnQpCisgICAgd2hlbiAiYmlhIiwgImJwYSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6aW50KQorICAgIHdoZW4gImJpYWVxIiwgImJwYWVx
IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6aW50KQorICAgIHdoZW4gImJpYiIs
ICJicGIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmludCkKKyAgICB3aGVuICJi
aWJlcSIsICJicGJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmludCkKKyAg
ICB3aGVuICJiaWd0IiwgImJwZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmlu
dCkKKyAgICB3aGVuICJiaWd0ZXEiLCAiYnBndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqZ2UiLCA6aW50KQorICAgIHdoZW4gImJpbHQiLCAiYnBsdCIKKyAgICAgIGhhbmRsZVg4Nklu
dEJyYW5jaCgiamwiLCA6aW50KQorICAgIHdoZW4gImJpbHRlcSIsICJicGx0ZXEiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImpsZSIsIDppbnQpCisgICAgd2hlbiAiYmJlcSIKKyAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiamUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYm5lcSIKKyAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhIgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqYSIsIDpieXRlKQorICAgIHdoZW4gImJiYWVxIgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmIiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImpiIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiZXEiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRlKQorICAgIHdoZW4gImJiZ3QiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImpnIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJndGVxIgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0IgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqbCIsIDpieXRlKQorICAgIHdoZW4gImJibHRlcSIKKyAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGlvIiwgImJ0cG8i
CisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDppbnQpCisgICAgd2hlbiAiYnRpcyIs
ICJidHBzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6aW50KQorICAgIHdoZW4g
ImJ0aXoiLCAiYnRweiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6IiwgOmludCkKKyAg
ICB3aGVuICJidGlueiIsICJidHBueiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIs
IDppbnQpCisgICAgd2hlbiAiYnRibyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwg
OmJ5dGUpCisgICAgd2hlbiAiYnRicyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwg
OmJ5dGUpCisgICAgd2hlbiAiYnRieiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6Iiwg
OmJ5dGUpCisgICAgd2hlbiAiYnRibnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoi
LCA6Ynl0ZSkKKyAgICB3aGVuICJqbXAiCisgICAgICAkYXNtLnB1dHMgImptcCAje29wZXJhbmRz
WzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiYWRkaW8iLCAiYmFkZHBvIgor
ICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJh
ZGRpcyIsICJiYWRkcHMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqcyIsIDpp
bnQpCisgICAgd2hlbiAiYmFkZGl6IiwgImJhZGRweiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNo
KCJhZGRsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJiYWRkaW56IiwgImJhZGRwbnoiCisgICAg
ICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJzdWJp
byIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam8iLCA6aW50KQorICAgIHdoZW4gImJzdWJp
cyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianMiLCA6aW50KQorICAgIHdoZW4gImJzdWJp
eiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianoiLCA6aW50KQorICAgIHdoZW4gImJzdWJp
bnoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpueiIsIDppbnQpCisgICAgd2hlbiAiYm11
bGlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpvIiwgOmludCkKKyAgICB3
aGVuICJibXVsaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAianMiLCA6aW50
KQorICAgIHdoZW4gImJtdWxpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJq
eiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJp
bXVsbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJvcmlvIgorICAgICAgaGFuZGxlWDg2T3BC
cmFuY2goIm9ybCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXMiCisgICAgICBoYW5kbGVY
ODZPcEJyYW5jaCgib3JsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJib3JpeiIKKyAgICAgIGhh
bmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJvcmlueiIKKyAg
ICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJicmVh
ayIKKyAgICAgICRhc20ucHV0cyAiaW50ICQzIgorICAgIHdoZW4gImNhbGwiCisgICAgICAkYXNt
LnB1dHMgImNhbGwgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hl
biAicmV0IgorICAgICAgJGFzbS5wdXRzICJyZXQiCisgICAgd2hlbiAiY2llcSIsICJjcGVxIgor
ICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQpCisgICAgd2hlbiAiY2lu
ZXEiLCAiY3BuZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRuZSIsIDppbnQp
CisgICAgd2hlbiAiY2lhIiwgImNwYSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNl
dGEiLCA6aW50KQorICAgIHdoZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAgaGFuZGxlWDg2SW50
Q29tcGFyZVNldCgic2V0YWUiLCA6aW50KQorICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAgICBo
YW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiIiwgOmludCkKKyAgICB3aGVuICJjaWJlcSIsICJj
cGJlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGJlIiwgOmludCkKKyAgICB3
aGVuICJjaWd0IiwgImNwZ3QiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnIiwg
OmludCkKKyAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29t
cGFyZVNldCgic2V0Z2UiLCA6aW50KQorICAgIHdoZW4gImNpbHQiLCAiY3BsdCIKKyAgICAgIGhh
bmRsZVg4NkludENvbXBhcmVTZXQoInNldGwiLCA6aW50KQorICAgIHdoZW4gImNpbHRlcSIsICJj
cGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisgICAg
d2hlbiAidGlvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQpCisgICAgd2hl
biAidGlzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDppbnQpCisgICAgd2hlbiAi
dGl6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDppbnQpCisgICAgd2hlbiAidGlu
eiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmludCkKKyAgICB3aGVuICJ0Ym8i
CisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgd2hlbiAidGJzIgor
ICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAgIHdoZW4gInRieiIKKyAg
ICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ym56IgorICAg
ICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJwZWVrIgorICAg
ICAgJGFzbS5wdXRzICJtb3ZsICN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fSglZXNwKSwgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJwb2tlIgorICAgICAgJGFzbS5w
dXRzICJtb3ZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0u
dmFsdWUgKiA0fSglZXNwKSIKKyAgICB3aGVuICJjZHFpIgorICAgICAgJGFzbS5wdXRzICJjZHEi
CisgICAgd2hlbiAiaWRpdmkiCisgICAgICAkYXNtLnB1dHMgImlkaXZsICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiZmlpMmQiCisgICAgICAkYXNtLnB1dHMgIm1v
dmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVy
YW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAibW92ZCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAicHNsbHEgJDMyLCAleG1tNyIK
KyAgICAgICRhc20ucHV0cyAicG9yICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9IgorICAgIHdoZW4gImZkMmlpIgorICAgICAgJGFzbS5wdXRzICJtb3ZkICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgICAkYXNtLnB1dHMgIm1vdnNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91
YmxlKX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJwc3JscSAkMzIsICV4bW03IgorICAgICAg
JGFzbS5wdXRzICJtb3ZzZCAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICB3aGVuICJibyIKKyAgICAgICRhc20ucHV0cyAiam8gI3tvcGVyYW5kc1swXS5hc21MYWJl
bH0iCisgICAgd2hlbiAiYnMiCisgICAgICAkYXNtLnB1dHMgImpzICN7b3BlcmFuZHNbMF0uYXNt
TGFiZWx9IgorICAgIHdoZW4gImJ6IgorICAgICAgJGFzbS5wdXRzICJqeiAje29wZXJhbmRzWzBd
LmFzbUxhYmVsfSIKKyAgICB3aGVuICJibnoiCisgICAgICAkYXNtLnB1dHMgImpueiAje29wZXJh
bmRzWzBdLmFzbUxhYmVsfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiQmFkIG9wY29kZTogI3tv
cGNvZGV9IgorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZF9oCisjZGVmaW5lIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCituYW1lc3BhY2UgSlNDIHsK
KworZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25z
dHJ1Y3QgfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDEwNjIxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsy
Nyw3IEBACiAjZGVmaW5lIENvbW1vblNsb3dQYXRoc19oCiAKICNpbmNsdWRlICJDb2RlQmxvY2su
aCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiRXhjZXB0
aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKIApAQCAtNDEsNiArNDIsMzggQEAg
bmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMgewogCitBTFdBWVNf
SU5MSU5FIEV4ZWNTdGF0ZSogYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVy
RmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAg
SlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgQVNT
RVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOworICAgIENvZGVCbG9jayogbmV3Q29kZUJs
b2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQp
OworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzKCk7CisKKyAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZv
ciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhl
IGNhbGxlci4KKyAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhleGVjLT5yZWdpc3RlcnMoKSAr
IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2NrLT5tX251bUNhbGxl
ZVJlZ2lzdGVycykpCisgICAgICAgIHJldHVybiAwOworCisgICAgQVNTRVJUKGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworCisgICAg
Ly8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1lIGFuZCBhcmd1bWVudHMsIHRo
ZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5lZC4KKyAgICBzaXplX3Qg
ZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzOworICAgIFJlZ2lzdGVyKiBzcmMgPSBleGVjLT5yZWdpc3RlcnMoKTsKKyAgICBS
ZWdpc3RlciogZHN0ID0gZXhlYy0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKKworICAgIGludCBpOwor
ICAgIGludCBlbmQgPSAtRXhlY1N0YXRlOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpOworICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3RbaV0g
PSBzcmNbaV07CisKKyAgICBlbmQgLT0gZGVsdGE7CisgICAgZm9yICggOyBpID49IGVuZDsgLS1p
KQorICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOworCisgICAgRXhlY1N0YXRlKiBuZXdF
eGVjID0gRXhlY1N0YXRlOjpjcmVhdGUoZHN0KTsKKyAgICBBU1NFUlQoKHZvaWQqKW5ld0V4ZWMg
PD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7CisgICAgcmV0dXJuIG5ld0V4ZWM7Cit9CisKIEFMV0FZ
U19JTkxJTkUgYm9vbCBvcEluc3RhbmNlT2ZTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2
YWx1ZSwgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3RvKQogewogICAgIEFTU0VSVCghdmFs
dWUuaXNDZWxsKCkgfHwgIWJhc2VWYWwuaXNDZWxsKCkgfHwgIXByb3RvLmlzQ2VsbCgpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNp
b24gMTA2MjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUdl
bmVyYXRvci5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5o
IgorI2luY2x1ZGUgIkV4ZWN1dGlvbkhhcm5lc3MuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNs
dWRlICJKSVREcml2ZXIuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKQEAgLTg0LDcgKzg1LDcgQEAg
SW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6OmludHJpbnNpYygpIAogdGVtcGxhdGU8dHlwZW5h
bWUgVD4KIHN0YXRpYyB2b2lkIGpldHRpc29uQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgT3duUHRyPFQ+JiBjb2RlQmxvY2spCiB7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0
SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6
aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKGNv
ZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgT3duUHRyPFQ+IGNvZGVCbG9ja1RvSmV0dGlz
b24gPSBjb2RlQmxvY2sucmVsZWFzZSgpOwogICAgIGNvZGVCbG9jayA9IHN0YXRpY19wb2ludGVy
X2Nhc3Q8VD4oY29kZUJsb2NrVG9KZXR0aXNvbi0+cmVsZWFzZUFsdGVybmF0aXZlKCkpOwpAQCAt
MTY3LDkgKzE2OCwzMCBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpbWl6
CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBp
bGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9y
Q2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0KTsKK30KKworaW5saW5lIGNvbnN0IGNoYXIqIHNhbXBsaW5nRGVzY3JpcHRpb24o
SklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworICAgIHN3aXRjaCAoaml0VHlwZSkgeworICAg
IGNhc2UgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAgICAgcmV0dXJuICJJbnRlcnBy
ZXRlciBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBjYXNlIEpJVENvZGU6OkJhc2VsaW5lSklU
OgorICAgICAgICByZXR1cm4gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNh
c2UgSklUQ29kZTo6REZHSklUOgorICAgICAgICByZXR1cm4gIkRGRyBDb21waWxhdGlvbiAoVE9U
QUwpIjsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAg
ICAgcmV0dXJuIDA7CisgICAgfQorfQorCiBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBp
bGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9k
ZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29t
cGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1w
bGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsK
ICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC0y
MTAsNyArMjMyLDcgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYQog
ICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlSWZBcHByb3ByaWF0
ZSgqZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBl
KSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVjdXRpb24oKmdsb2JhbERhdGEsIG1fZXZhbENvZGVC
bG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogI2Vu
ZGlmCiAKQEAgLTI5NSw5ICszMTcsMTUgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpj
b21waWxlT3B0aQogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBQcm9ncmFtRXhlY3V0YWJs
ZTo6aml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1
bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxv
Y2ssIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0
YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNj
b3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdS
ZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJC
YXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIp
OworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24o
aml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRU
eXBlKTsKQEAgLTMzNiw3ICszNjQsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNv
bXBpbGVJbnRlCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJ
ZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZv
ckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xvYmFsRGF0
YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNDEyLDcgKzQ0MCw3IEBAIEZ1bmN0aW9uQ29kZUJs
b2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmIKICAgICB3aGlsZSAocmVzdWx0LT5hbHRlcm5hdGl2
ZSgpKQogICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KHJl
c3VsdC0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgQVNTRVJUKHJl
c3VsdC0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQo
SklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICByZXR1
cm4gcmVzdWx0OwogfQogCkBAIC00MzgsNiArNDY2LDE4IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvbXBpbGVPcHQKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRnVuY3Rp
b25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEp
Cit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGds
b2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2Rl
Rm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0b21UaWVy
SklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJv
cHJpYXRlKGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JD
b25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRh
YmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQpOworfQorCiBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpj
b2RlQmxvY2tXaXRoQnl0ZWNvZGVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewog
ICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zvcihr
aW5kKTsKQEAgLTQ4Miw3ICs1MjIsNyBAQCBQYXNzT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBG
dW5jdGlvbkV4CiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxs
SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUs
IEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGlu
Z1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBp
bGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxp
bmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAg
ICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNTA0LDcg
KzU0NCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBt
X3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDYWxsLT5zaGFyZWRTeW1ib2xUYWJsZSgpOwog
CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlh
dGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNh
bGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlw
ZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYy0+Z2xvYmFsRGF0
YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNh
bGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSwgQ29kZUZvckNhbGwpKQog
ICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC01MjQsNyArNTY0LDcgQEAgSlNPYmplY3Qq
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogCiBKU09iamVjdCogRnVuY3Rpb25FeGVj
dXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29w
ZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsK
LSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJh
c2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxh
dGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxp
bmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5V
U0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtNTQ2LDcgKzU4Niw3IEBAIEpTT2JqZWN0KiBGdW5jdGlv
bkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tG
b3JDb25zdHJ1Y3QtPnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAg
IGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9iYWxEYXRhKCks
IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29k
ZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAg
ICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1f
Y29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZv
ckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9y
Q29uc3RydWN0KSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTA2MjEzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEV4ZWN1dGFibGVfaAogCiAjaW5jbHVkZSAiQ2Fs
bERhdGEuaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTm9kZXMu
aCIKQEAgLTM5LDEyICs0MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1Z2dl
cjsKICAgICBjbGFzcyBFdmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2Nr
OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29k
ZUJsb2NrOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwogCiAgICAgc3RydWN0IEV4Y2VwdGlv
bkluZm87CiAgICAgCi0gICAgZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNh
bGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKICAgICBlbnVtIENvbXBpbGF0aW9uS2luZCB7IEZpcnN0
Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21waWxhdGlvbiB9OwogCiAgICAgaW5saW5lIGJvb2wg
aXNDYWxsKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAgLTMxOSw2ICszMjAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJs
aWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUg
QmFzZTsKIApAQCAtMzM4LDYgKzM0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNp
ZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZShKU0dsb2Jh
bERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYpOwogI2VuZGlm
CiAKICAgICAgICAgRXZhbENvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAtMzg0LDYg
KzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBQcm9ncmFtRXhl
Y3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2Ny
aXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC00MTEsNiArNDE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6
ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxE
YXRhJik7CiAjZW5kaWYKIAogICAgICAgICBQcm9ncmFtQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRl
Y29kZSgpCkBAIC00NTMsNiArNDU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBG
dW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsK
IApAQCAtNTA4LDYgKzUxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFC
TEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNhbGwoSlNHbG9i
YWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7
CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ2FsbCgpIGNvbnN0CkBAIC01
MzUsNiArNTQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQp
CiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KEpTR2xvYmFs
RGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRh
Jik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ29uc3RydWN0KCkgY29u
c3QKQEAgLTU4Miw2ICs1OTAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAg
amV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdENvbXBpbGVGb3IoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAg
ICAgICAgaml0Q29tcGlsZUZvckNhbGwoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNv
bnN0cnVjdCk7CisgICAgICAgICAgICBqaXRDb21waWxlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEp
OworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRG
b3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIEV4ZWN1dGlvbkhhcm5lc3NfaAorI2RlZmluZSBFeGVjdXRpb25I
YXJuZXNzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKEpJVCkK
KworI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+Citp
bmxpbmUgYm9vbCBwcmVwYXJlRm9yRXhlY3V0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
T3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENv
ZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENv
ZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0
aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RW50cnlwb2ludChn
bG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUpOworICAgICAgICBjb2RlQmxvY2st
PnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOworICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorICAgIHJldHVybiBq
aXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENvZGUsIGpp
dFR5cGUpOworfQorCitpbmxpbmUgYm9vbCBwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBjb2RlQmxv
Y2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhB
cml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBKSVRDb2RlOjpKSVRU
eXBlIGppdFR5cGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAg
ICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAgICAgICBM
TEludDo6Z2V0RnVuY3Rpb25FbnRyeXBvaW50KGdsb2JhbERhdGEsIGtpbmQsIGppdENvZGUsIGpp
dENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRD
b2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShraW5kKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQp
CisgICAgcmV0dXJuIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwg
Y29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIHN5bWJvbFRhYmxlLCBq
aXRUeXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklU
KQorCisjZW5kaWYgLy8gRXhlY3V0aW9uSGFybmVzc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMDYyMTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMTI0LDcgKzEyNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93bkFycmF5
UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBhZG9wdEFycmF5UHRy
KG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bcmVnaXN0ZXJBcnJheVNpemVdKTsKICAgICAgICAg
V3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMgPSByZWdpc3RlckFycmF5LmdldCgpICsg
cmVnaXN0ZXJPZmZzZXQ7Ci0KKyAgICAgICAgCiAgICAgICAgIC8vIENvcHkgYWxsIGFyZ3VtZW50
cyB0aGF0IGNhbiBiZSBjYXB0dXJlZCBieSBuYW1lIG9yIGJ5IHRoZSBhcmd1bWVudHMgb2JqZWN0
LgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbnVtQ2FwdHVyZWRBcmdzOyArK2kpIHsK
ICAgICAgICAgICAgIGludCBpbmRleCA9IENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoaSk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAxMDYy
MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNB
cnJheTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBzdHJ1Y3QgU3Bh
cnNlQXJyYXlFbnRyeSA6IHB1YmxpYyBXcml0ZUJhcnJpZXI8VW5rbm93bj4gewogICAgICAgICB0
eXBlZGVmIFdyaXRlQmFycmllcjxVbmtub3duPiBCYXNlOwpAQCAtMTIyLDYgKzEyMyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBKU0FycmF5IDogcHVibGljIEpTTm9u
RmluYWxPYmplY3QgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogICAgICAgICBmcmllbmQgY2xhc3MgV2Fsa2VyOwogCiAgICAgcHJvdGVjdGVkOgpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDEwNjIxMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zNiw5ICszNiwxMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0dsb2JhbE9i
amVjdDsKLSAgICBjbGFzcyBTdHJ1Y3R1cmU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5h
bWVBcnJheTsKKyAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBlbnVtIEVudW1lcmF0aW9uTW9k
ZSB7CiAgICAgICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsCkBAIC0xNjQsNiArMTY1LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0
eURlc2NyaXB0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBjb25zdCBDbGFzc0luZm8qIG1f
Y2xhc3NJbmZvOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsK
ICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24u
aAkocmV2aXNpb24gMTA2MjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNG
dW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEpTQWN0aXZhdGlvbjsK
ICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBTb3VyY2VDb2RlOwog
ICAgIG5hbWVzcGFjZSBERkcgewpAQCAtMTQwLDYgKzE0MSw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7
CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5j
dGlvbk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3VtZW50
c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlz
aW9uIDEwNjIxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0
YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MSw2ICsxNDEsOCBAQCBKU0dsb2JhbERhdGE6OkpT
R2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgLCBrZXl3b3JkcyhhZG9wdFB0cihuZXcgS2V5
d29yZHModGhpcykpKQogICAgICwgaW50ZXJwcmV0ZXIoMCkKICAgICAsIGhlYXAodGhpcywgaGVh
cFNpemUpCisgICAgLCBqc0FycmF5Q2xhc3NJbmZvKCZKU0FycmF5OjpzX2luZm8pCisgICAgLCBq
c0ZpbmFsT2JqZWN0Q2xhc3NJbmZvKCZKU0ZpbmFsT2JqZWN0OjpzX2luZm8pCiAjaWYgRU5BQkxF
KERGR19KSVQpCiAgICAgLCBzaXplT2ZMYXN0U2NyYXRjaEJ1ZmZlcigwKQogI2VuZGlmCkBAIC0y
MTYsNyArMjE4LDcgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAog
ICAgIGppdFN0dWJzID0gYWRvcHRQdHIobmV3IEpJVFRodW5rcyh0aGlzKSk7CiAjZW5kaWYKIAot
ICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKHRoaXMtPmNhblVzZUpJVCgpKTsKKyAgICBpbnRl
cnByZXRlci0+aW5pdGlhbGl6ZSgmbGxpbnREYXRhLCB0aGlzLT5jYW5Vc2VKSVQoKSk7CiAKICAg
ICBoZWFwLm5vdGlmeUlzU2FmZVRvQ29sbGVjdCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDEwNjIxMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCwxNSArMzAsMTYgQEAKICNkZWZpbmUgSlNHbG9iYWxEYXRhX2gKIAogI2luY2x1ZGUg
IkNhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJJbnRyaW5zaWMuaCIK
ICNpbmNsdWRlICJEYXRlSW5zdGFuY2VDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxv
Y2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCi0jaW5jbHVkZSAiU3Ryb25nLmgiCisjaW5jbHVk
ZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU1ZhbHVl
LmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTnVtZXJpY1N0cmluZ3MuaCIK
ICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRl
ICJUZXJtaW5hdG9yLmgiCiAjaW5jbHVkZSAiVGltZW91dENoZWNrZXIuaCIKICNpbmNsdWRlICJX
ZWFrUmFuZG9tLmgiCkBAIC02NSw2ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEtleXdvcmRz
OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVj
dXRhYmxlOwogICAgIGNsYXNzIFBhcnNlckFyZW5hOwogICAgIGNsYXNzIFJlZ0V4cENhY2hlOwpA
QCAtMjQxLDYgKzI0MywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSGVhcCBoZWFwOwog
CiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uOworCisgICAgICAgIGNvbnN0IENsYXNzSW5mbyog
Y29uc3QganNBcnJheUNsYXNzSW5mbzsKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBq
c0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOworCisgICAgICAgIExMSW50OjpEYXRhIGxsaW50RGF0YTsK
KwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIgZXhjZXB0aW9uTG9j
YXRpb247CiAgICAgICAgIEpTVmFsdWUgaG9zdENhbGxSZXR1cm5WYWx1ZTsKQEAgLTM0Niw2ICsz
NTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICN1bmRlZiByZWdpc3RlclR5cGVkQXJyYXlGdW5jdGlv
bgogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSwgVGhy
ZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEqJiBz
aGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAgICAgIHZvaWQgY3JlYXRlTmF0aXZlVGh1bmso
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmpl
Y3QuaAkocmV2aXNpb24gMTA2MjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBHZXR0ZXJT
ZXR0ZXI7CiAgICAgY2xhc3MgR2xvYmFsQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogICAgIGNsYXNz
IFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CkBAIC0zMzUs
NiArMzM2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZv
aWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBpbnQgY291bnQpOwogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBGb2xkIHJlc2V0IGludG8gaW5pdC4KICAgICAg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpOwogICAg
ICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTA2MjEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiAr
NDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xh
c3MgSGFzaEVudHJ5OwogICAgIGNsYXNzIEludGVybmFsRnVuY3Rpb247CisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgIGNsYXNzIFBy
b3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKQEAgLTI2OSw2
ICsyNzAsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNPYmplY3QoSlNHbG9iYWxEYXRh
JiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpOwogCiAgICAgcHJp
dmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAg
ICAgCiAgICAgICAgIC8vIE5vYm9keSBzaG91bGQgZXZlciBhc2sgYW55IG9mIHRoZXNlIHF1ZXN0
aW9ucyBvbiBzb21ldGhpbmcgYWxyZWFkeSBrbm93biB0byBiZSBhIEpTT2JqZWN0LgogICAgICAg
ICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyOwogICAgICAgICB1c2luZyBKU0NlbGw6
OmlzR2V0dGVyU2V0dGVyOwpAQCAtMzgxLDYgKzM4NCw4IEBAIENPTVBJTEVfQVNTRVJUKChKU0Zp
bmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwq
KTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgICAgICA6IEpT
T2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQogICAgICAgICB7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAxMDYyMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJZGVudGlmaWVyOwog
ICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAog
ICAgIGNsYXNzIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTk2LDYgKzk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4
ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBz
aXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVy
ZT4gbV9jYWNoZWRTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU3RyaW5nLmgJKHJldmlzaW9uIDEwNjIxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNTdHJpbmc7CisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogCiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7
CiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKik7CkBAIC0yNDAsNiArMjQx
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2b2lk
IHJlc29sdmVSb3BlU2xvd0Nhc2U4KExDaGFyKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2
ZVJvcGVTbG93Q2FzZShVQ2hhciopIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNpb24gMTA2MjEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICsz
NCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQg
PSAxOyAvLyBXZWJDb3JlIHVzZXMgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCB0byBtYWtlIGRvY3Vt
ZW50LmFsbCB1bmRldGVjdGFibGUuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEltcGxlbWVu
dHNIYXNJbnN0YW5jZSA9IDEgPDwgMTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJp
ZGVzSGFzSW5zdGFuY2UgPSAxIDw8IDI7CkBAIC04Nyw2ICs4OSw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MxKHVu
c2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPD0gKDEgPDwgNykpOyByZXR1cm4gbV9m
bGFncyAmIGZsYWc7IH0KICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MyKHVuc2lnbmVkIGZsYWcp
IGNvbnN0IHsgQVNTRVJUKGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1cm4gbV9mbGFnczIgJiAoZmxh
ZyA+PiA4KTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVl
LmNwcAkocmV2aXNpb24gMTA2MjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNiwxMCArMTE2LDkgQEAgSlNPYmplY3Qq
IEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoRQogICAgIHJldHVybiBKU05vdEFuT2JqZWN0
OjpjcmVhdGUoZXhlYyk7CiB9CiAKLSNpZm5kZWYgTkRFQlVHCiBjaGFyKiBKU1ZhbHVlOjpkZXNj
cmlwdGlvbigpCiB7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0gNjQ7CisgICAgc3Rh
dGljIGNvbnN0IHNpemVfdCBzaXplID0gMTI4OwogICAgIHN0YXRpYyBjaGFyIGRlc2NyaXB0aW9u
W3NpemVdOwogCiAgICAgaWYgKCEqdGhpcykKQEAgLTEyOCwxNCArMTI3LDE0IEBAIGNoYXIqIEpT
VmFsdWU6OmRlc2NyaXB0aW9uKCkKICAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUs
ICJJbnQzMjogJWQiLCBhc0ludDMyKCkpOwogICAgIGVsc2UgaWYgKGlzRG91YmxlKCkpIHsKICNp
ZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRv
dWJsZTogJWxmLCAlbHgiLCBhc0RvdWJsZSgpLCByZWludGVycHJldERvdWJsZVRvSW50cHRyKGFz
RG91YmxlKCkpKTsKKyAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6
ICVseCwgJWxmIiwgcmVpbnRlcnByZXREb3VibGVUb0ludHB0cihhc0RvdWJsZSgpKSwgYXNEb3Vi
bGUoKSk7CiAjZWxzZQogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBkb3VibGUgYXNEb3Vi
bGU7CiAgICAgICAgICAgICB1aW50MzJfdCBhc1R3b0ludDMyc1syXTsKICAgICAgICAgfSB1Owog
ICAgICAgICB1LmFzRG91YmxlID0gYXNEb3VibGUoKTsKLSAgICAgICAgc25wcmludGYoZGVzY3Jp
cHRpb24sIHNpemUsICJEb3VibGU6ICVsZiwgJTA4eDolMDh4IiwgYXNEb3VibGUoKSwgdS5hc1R3
b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSk7CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0
aW9uLCBzaXplLCAiRG91YmxlOiAlMDh4OiUwOHgsICVsZiIsIHUuYXNUd29JbnQzMnNbMV0sIHUu
YXNUd29JbnQzMnNbMF0sIGFzRG91YmxlKCkpOwogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChpc0Nl
bGwoKSkKICAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJDZWxsOiAlcCIsIGFz
Q2VsbCgpKTsKQEAgLTE1Miw3ICsxNTEsNiBAQCBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigp
CiAKICAgICByZXR1cm4gZGVzY3JpcHRpb247CiB9Ci0jZW5kaWYKIAogLy8gVGhpcyBpbiB0aGUg
VG9JbnQzMiBvcGVyYXRpb24gaXMgZGVmaW5lZCBpbiBzZWN0aW9uIDkuNSBvZiB0aGUgRUNNQS0y
NjIgc3BlYy4KIC8vIE5vdGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBpZGVudGljYWwgdG8gVG9V
SW50MzIgb3RoZXIgdGhhbiB0byBpbnRlcnByZXRhdGlvbgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2aXNpb24gMTA2MjEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsOSArMjMy
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTQ2VsbCogYXNDZWxsKCkgY29uc3Q7CiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNWYWxpZENhbGxlZSgpOwogCi0jaWZuZGVm
IE5ERUJVRwogICAgICAgICBjaGFyKiBkZXNjcmlwdGlvbigpOwotI2VuZGlmCiAKICAgICBwcml2
YXRlOgogICAgICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVD4gSlNWYWx1ZShXcml0ZUJhcnJpZXJCYXNl
PFQ+KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmpl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zhcmlh
YmxlT2JqZWN0LmgJKHJldmlzaW9uIDEwNjIxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEy
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogICAgIGNsYXNzIFJlZ2lzdGVyOwogCiAgICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHB1YmxpYzoKICAg
ICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTA2MjEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUy
LDYgKzUyLDEwIEBAIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGkKIAog
dW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7CiAKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckRvbnRKSVRBbnl0aW1lU29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklU
U29vbjsKKwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2Fy
bVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dh
cm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGlt
ZVNvb247CkBAIC0xMzcsNiArMTQxLDEwIEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAg
IAogICAgIFNFVChtYXhpbXVtSW5saW5pbmdEZXB0aCwgNSk7CiAKKyAgICBTRVQoZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXAsICAgICAtMTAwKTsKKyAgICBTRVQoZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRz
PGludDMyX3Q+OjptaW4oKSk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNv
b24sICAgICAgICAgICAgLTEwMCk7CisKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
T3B0aW1pemVBZnRlcldhcm1VcCwgICAgIC0xMDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAsIC01MDAwKTsKICAgICBTRVQoZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19s
aW1pdHM8aW50MzJfdD46Om1pbigpKTsKQEAgLTE4NSw2ICsxOTMsOCBAQCB2b2lkIGluaXRpYWxp
emVPcHRpb25zKCkKICAgICBpZiAoY3B1c1RvVXNlIDwgMSkKICAgICAgICAgY3B1c1RvVXNlID0g
MTsKICAgICAKKyAgICBjcHVzVG9Vc2UgPSAxOworICAgIAogICAgIFNFVChudW1iZXJPZkdDTWFy
a2VycywgY3B1c1RvVXNlKTsKIAogICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JE
b250T3B0aW1pemVBbnl0aW1lU29vbiA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6
ZUFmdGVyTG9uZ1dhcm1VcCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9P
cHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5oCShyZXZpc2lvbiAxMDYyMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEwIEBAIGV4dGVybiB1bnNp
Z25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHIKIAogZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1J
bmxpbmluZ0RlcHRoOyAvLyBEZXB0aCBvZiBpbmxpbmUgc3RhY2ssIHNvIDEgPSBubyBpbmxpbmlu
ZywgMiA9IG9uZSBsZXZlbCwgZXRjLgogCitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVy
VmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvckpJVFNvb247CisKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVy
VmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gMTA2MjEzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw2ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0
YTsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9y
OwogICAgIGNsYXNzIFNsb3RWaXNpdG9yOwogICAgIApAQCAtOTEsNiArOTIsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0
dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuOwogICAgIH07CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24gMTA2MjEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIyLDcgKzMyMiw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVRyYW5zaXQKICAgICAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dQcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpOwogICAgICAgICByZXR1cm4gdHJhbnNpdGlvbjsKICAgICB9Ci0KKyAgICAKICAg
ICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsK
IAogICAgIHRyYW5zaXRpb24tPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uc2V0TWF5QmVOdWxsKGds
b2JhbERhdGEsIHRyYW5zaXRpb24sIHN0cnVjdHVyZS0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5n
ZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAko
cmV2aXNpb24gMTA2MjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlO
YW1lQXJyYXk7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhOwogICAgIGNsYXNzIFN0
cnVjdHVyZUNoYWluOwpAQCAtMTk2LDYgKzE5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJp
dmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAg
ICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0
IENsYXNzSW5mbyopOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAg
IFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24g
MTA2MjEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
aAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
ICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAK
ICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbiA6IHB1YmxpYyBKU0NlbGwgewpAQCAtNzQsNiArNzUs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIFN0
cnVjdHVyZUNoYWluKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMg
dm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8
U3RydWN0dXJlPiA+IG1fdmVjdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9J
bmxpbmVBU00uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0lubGlu
ZUFTTS5oCShyZXZpc2lvbiAxMDYyMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0lu
bGluZUFTTS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw0ICs3MCwxMSBAQAogI2RlZmluZSBISURF
X1NZTUJPTChuYW1lKQogI2VuZGlmCiAKKy8vIEZJWE1FOiBmaWd1cmUgb3V0IGhvdyB0aGlzIHdv
cmtzIG9uIGFsbCB0aGUgcGxhdGZvcm1zLiBJIGtub3cgdGhhdAorLy8gb24gTGludXgsIHRoZSBw
cmVmZXJyZWQgZm9ybSBpcyAiLkxzdHVmZiIgYXMgb3Bwb3NlZCB0byAiTHN0dWZmIi4KKy8vIERv
bid0IGtub3cgYWJvdXQgYW55IG9mIHRoZSBvdGhlcnMuCisjaWYgUExBVEZPUk0oTUFDKQorI2Rl
ZmluZSBMT0NBTF9MQUJFTF9TVFJJTkcobmFtZSkgIkwiICNuYW1lCisjZW5kaWYKKwogI2VuZGlm
IC8vIElubGluZUFTTV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3Jt
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShy
ZXZpc2lvbiAxMDYyMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTkyMCw2ICs5MjAsMTggQEAKICNkZWZpbmUgRU5BQkxFX0pJVCAx
CiAjZW5kaWYKIAorLyogT24gc29tZSBvZiB0aGUgcGxhdGZvcm1zIHdoZXJlIHdlIGhhdmUgYSBK
SVQsIHdlIHdhbnQgdG8gYWxzbyBoYXZlIHRoZSAKKyAgIGxvdy1sZXZlbCBpbnRlcnByZXRlci4g
Ki8KKyNpZiAhZGVmaW5lZChFTkFCTEVfTExJTlQpICYmIEVOQUJMRShKSVQpICYmIFBMQVRGT1JN
KE1BQykgJiYgVVNFKEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyNlbmRp
ZgorCisvKiBJZiB3ZSBoYXZlIExMSW50IGVuYWJsZWQgYW5kIHRoZSBKSVQgZW5hYmxlZCwgd2Ug
YWxzbyBlbmFibGUgT1NSaW5nIGZyb20KKyAgIExMSW50IHRvIHRoZSBKSVQuICovCisjaWYgIWRl
ZmluZWQoRU5BQkxFX0xMSU5UX09TUl9UT19KSVQpICYmIEVOQUJMRShKSVQpICYmIEVOQUJMRShM
TElOVCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UX09TUl9UT19KSVQgMQorI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChFTkFCTEVfREZHX0pJVCkgJiYgRU5BQkxFKEpJVCkKIC8qIEVuYWJsZSB0aGUgREZH
IEpJVCBvbiBYODYgYW5kIFg4Nl82NC4gIE9ubHkgdGVzdGVkIG9uIE1hYyBhbmQgR05VL0xpbnV4
LiAqLwogI2lmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSkgJiYgKFBMQVRGT1JNKE1BQykgfHwg
T1MoTElOVVgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtl
ZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVs
TGlua2VkTGlzdC5oCShyZXZpc2lvbiAxMDYyMTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4IEBA
IHB1YmxpYzoKIAogICAgIGl0ZXJhdG9yIGJlZ2luKCk7CiAgICAgaXRlcmF0b3IgZW5kKCk7Cisg
ICAgCisgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gYmVnaW4oKSA9PSBlbmQoKTsgfQogCiBw
cml2YXRlOgogICAgIFJhd05vZGUgbV9oZWFkU2VudGluZWw7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDEwNjIxMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQzLDYgKzQzLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlN0cmluZyAqIENGU3Ry
aQogLy8gTGFuZGluZyB0aGUgZmlsZSBtb3ZlcyBpbiBvbmUgcGF0Y2gsIHdpbGwgZm9sbG93IG9u
IHdpdGggcGF0Y2hlcyB0byBjaGFuZ2UgdGhlIG5hbWVzcGFjZXMuCiBuYW1lc3BhY2UgSlNDIHsK
IHN0cnVjdCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5zbGF0b3I7CitjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElkZW50aWZpZXJDaGFyQnVm
ZmVyVHJhbnNsYXRvcjsKIHN0cnVjdCBJZGVudGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9y
OwogfQpAQCAtNzIsNyArNzMsOCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICBmcmllbmQgc3Ry
dWN0IFdURjo6U3Vic3RyaW5nVHJhbnNsYXRvcjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6VUNo
YXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmdJbXBsOwot
CisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogcHJp
dmF0ZToKICAgICBlbnVtIEJ1ZmZlck93bmVyc2hpcCB7CiAgICAgICAgIEJ1ZmZlckludGVybmFs
LApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MjEzKQorKysgU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDEtMjYgIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJp
cGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3OTY5ND4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1aWxk
IHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4KKyAg
ICAgICAgCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIG5vIGJlaGF2aW9yIGNoYW5nZWQu
CisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxMi0wMS0yOSAgRGFsZSBDdXJ0aXMg
IDxkYWxlY3VydGlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBQcmVwYXJlIFdlYkNvcmUuZ3lw
IGZvciBmZm1wZWcgc291cmNlIHRyYW5zaXRpb24uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAko
cmV2aXNpb24gMTA2MjEzKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVNDUklQ
VENPUkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIK
KyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEw
NjIxMykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTItMDEtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVj
dG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4KKyAgICAgICAgCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisKIDIwMTItMDEtMTEgIEphY2t5IEppYW5nICA8emhhamlhbmdAcmltLmNvbT4KIAogICAg
ICAgICBbQmxhY2tCZXJyeV0gQVNTRVJUIGZhaWx1cmUgaW4gQmFja2luZ1N0b3JlUHJpdmF0ZTo6
YmxpdFZpc2libGVDb250ZW50cygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEw
NjIxMykKKysrIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDYgKzQ0LDcgQEAgU0VUKFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFW
QVNDUklQVENPUkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2lu
dGVycHJldGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIi
CiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L3J1bnRpbWUiCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDYyMTMpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0yNyAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBW
TQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRv
IGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3JpcHRDb3JlLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAxLTI5ICBTaGVyaWZm
IEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTA2MTA5LgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMTA2MjEzKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZs
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02OCwxMCArNjgsMTIgQEAgU0VUKER1
bXBSZW5kZXJUcmVlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vQVBJCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2Fzc2VtYmxlcgorICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZQogICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9kZmcKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaGVhcAog
ICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnRlcnByZXRlcgogICAgICR7SkFWQVNDUklQVENP
UkVfRElSfS9qaXQKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQKICAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vcnVudGltZQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9Gb3J3YXJk
aW5nSGVhZGVycwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS93dGYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124608</attachid>
            <date>2012-01-30 15:12:29 -0800</date>
            <delta_ts>2012-01-30 15:56:09 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_73.diff</filename>
            <type>text/plain</type>
            <size>475552</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2MjkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwMCBA
QAorMjAxMi0wMS0zMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi52c3Byb3BzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDog
QWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Omlz
U2V0KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAg
IChDYWxsTGlua1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmVzY2FwZVF1b3Rlcyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWlu
Z0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RXZh
bENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6
amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1w
bCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dXNlc09wY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAg
KCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0Q29tcGls
ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
aWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxp
a2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlr
ZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1
ZW50RXhpdFNpdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29v
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50
RXhlY3V0ZUNvdW50ZXIpOgorICAgICAgICAoUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChF
dmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBi
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6
CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OkdldEJ5SWRTdGF0dXMpOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjp3YXNTZWVuSW5KSVQpOgorICAgICAgICAoR2V0QnlJZFN0YXR1
cyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgIChJbnN0cnVj
dGlvbik6CisgICAgICAgICgpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZv
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0lu
Zm86OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKExMSW50Q2FsbExpbmtJbmZvKToKKyAg
ICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6OkxM
SW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAg
IChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAoUHV0QnlJZFN0YXR1cyk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0
UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaCk6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0
UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRD
b21waWxlci5jcHA6CisgICAgICAgICgpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKCk6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChBbGxvY2F0aW9uU3BhY2UpOgorICAgICAgICAoKToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAo
SGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAoSlNDOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFt
ZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJy
ZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZy
YW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmls
ZSk6CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKToKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAg
KiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpJVENvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2Rl
Ojppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAg
ICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToK
KyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93
KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RV
Ql9GVU5DVElPTik6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJ
VC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1v
bi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChEYXRhKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50
RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRF
dmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2lu
dCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBv
aW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxl
cik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9u
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpM
TEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQv
TExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChK
U0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmVudHJ5T1NSKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJlc29sdmVHbG9iYWwpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9z
dENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRk
ZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludE9m
ZnNldHNFeHRyYWN0b3IpOgorICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDog
QWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3Ry
dWN0RW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZv
ckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpMTEludDo6ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20u
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRy
YWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb3B0LnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL3BhcnNlci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9yZWdp
c3RlcnMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2VsZl9oYXNoLnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3NldHRpbmdzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBv
ZmZsaW5lYXNtL3RyYW5zZm9ybS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYu
cmI6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVj
a0Zvcik6CisgICAgICAgIChDb21tb25TbG93UGF0aHMpOgorICAgICAgICAoSlNDOjpDb21tb25T
bG93UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3cpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJs
ZS5jcHA6CisgICAgICAgIChKU0M6OmpldHRpc29uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
RXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6c2FtcGxpbmdEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpj
b21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29t
cGlsZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9y
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVj
dCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRl
cm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0
cnVjdEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAg
KEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAoRXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAo
UHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpwcmVwYXJlRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1bmN0
aW9uRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAg
ICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnRlYXJPZmYpOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
cnJheS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQXJyYXkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoKToKKyAgICAgICAgKEpT
Q2VsbCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0dsb2Jh
bERhdGEpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OnNjcmF0Y2hCdWZmZXJGb3JTaXpl
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAoSlNPYmplY3QpOgorICAgICAg
ICAoSlNGaW5hbE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcik6
CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAg
KEpTU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChUeXBlSW5mbyk6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmNwcDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKEpTVmFsdWUpOgorICAgICAgICAo
KToKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU1ZhcmlhYmxlT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMu
Y3BwOgorICAgICAgICAoT3B0aW9ucyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxp
emVPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKE9wdGlv
bnMpOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKFNjb3BlQ2hhaW5Ob2RlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgor
ICAgICAgICAoSlNDKToKKyAgICAgICAgKFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFN0cnVjdHVyZUNoYWlu
KToKKyAgICAgICAgKiB3dGYvSW5saW5lQVNNLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6
CisgICAgICAgICogd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oOgorICAgICAgICAoU2VudGluZWxM
aW5rZWRMaXN0KToKKyAgICAgICAgKFdURjo6U2VudGluZWxMaW5rZWRMaXN0Ojppc0VtcHR5KToK
KyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoU3RyaW5nSW1wbCk6CisgICAgICAgICgpOgorCiAyMDEyLTAxLTMwICBZb25nIExpICA8eW9s
aUByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBPUyhRTlgpIGFsc28gaGFzIFRNX0dN
VE9GRiwgVE1fWk9ORSwgYW5kIFRJTUVHTQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMTA2MjkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw2ICsxMSw3IEBAIFNFVChKYXZhU2NyaXB0
Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZWJ1
Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyIgogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQi
CiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUiCkBA
IC05NSw2ICs5Niw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaW50ZXJwcmV0
ZXIvUmVnaXN0ZXJGaWxlLmNwcAogCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCisg
ICAgaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCiAgICAgaml0L0pJVEFyaXRobWV0aWMzMl82
NC5jcHAKICAgICBqaXQvSklUQXJpdGhtZXRpYy5jcHAKICAgICBqaXQvSklUQ2FsbDMyXzY0LmNw
cApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMTA2Mjkx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkp
CkBAIC01Nyw2ICs1Nyw3IEBAIGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzICs9IFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIgXAogCS1JJChzcmNkaXIpL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludCBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlciBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTA2MjkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDcgQEAgamF2
YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9SZXBhdGNoQnVmZmVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvU0g0
QXNzZW1ibGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1i
bGVyLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRp
b25zLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAgXApAQCAtMTAy
LDYgKzEwMyw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSnVtcFRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0p1bXBUYWJsZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxs
TGlua0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xpbmVJbmZvLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8uY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmgg
XApAQCAtMjc3LDYgKzI3OSw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ29tcGFjdEpJVENvZGVNYXAuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEFyaXRobWV0aWMzMl82NC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJp
dGhtZXRpYy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2FsbDMyXzY0LmNw
cCBcCkBAIC0zMDAsNiArMzA0LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmggXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvb3Mtd2luMzIvc3RkYm9v
bC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvb3Mtd2luMzIvc3RkaW50LmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIFwKQEAgLTM1MCw2ICszNTUsNyBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DYWxsRGF0YS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxE
YXRhLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oIFwKKwlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmNwcCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggXApAQCAtMzc4LDYg
KzM4NCw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGFibGUuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9u
SGFybmVzcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3Rv
dHlwZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBy
aQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJp
CShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2ICsyMCw3IEBAIElOQ0xVREVQQVRIICs9IFwK
ICAgICAkJFNPVVJDRV9ESVIvZGVidWdnZXIgXAogICAgICQkU09VUkNFX0RJUi9pbnRlcnByZXRl
ciBcCiAgICAgJCRTT1VSQ0VfRElSL2ppdCBcCisgICAgJCRTT1VSQ0VfRElSL2xsaW50IFwKICAg
ICAkJFNPVVJDRV9ESVIvcGFyc2VyIFwKICAgICAkJFNPVVJDRV9ESVIvcHJvZmlsZXIgXAogICAg
ICQkU09VUkNFX0RJUi9ydW50aW1lIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCShy
ZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkod29y
a2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5jcHAgXAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yRml4ZWRW
TVBvb2wuY3BwIFwKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgXAorICAgIGppdC9I
b3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCiAgICAgaml0L0pJVEFyaXRobWV0aWMuY3BwIFwKICAg
ICBqaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAgICAgaml0L0pJVENhbGwuY3BwIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qCShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTc1OCw2ICsxNzU4LDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgog
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGppdFxIb3N0Q2FsbFJldHVyblZhbHVl
LmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5caml0XEpJVC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtMTg0Myw2ICsxODQ3LDE0IEBA
CiAJCQk8L0ZpbGU+CiAJCTwvRmlsdGVyPgogCQk8RmlsdGVyCisJCQlOYW1lPSJsbGludCIKKwkJ
CT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxsbGludFxMTEludERhdGEuaCIK
KwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCiAJCQlOYW1lPSJpbnRl
cnByZXRlciIKIAkJCT4KIAkJCTxGaWxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlQ29tbW9uLnZz
cHJvcHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52c3Byb3BzCShyZXZp
c2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMJKHdvcmtpbmcg
Y29weSkKQEAgLTYsNyArNiw3IEBACiAJPgogCTxUb29sCiAJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmpcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNvdXJjZXNcJnF1b3Q7Oy4uLy4u
LzsuLi8uLi9BUEkvOy4uLy4uL3BhcnNlci87Li4vLi4vYnl0ZWNvbXBpbGVyLzsuLi8uLi9kZmcv
Oy4uLy4uL2ppdC87Li4vLi4vcnVudGltZS87Li4vLi4vdG9vbHMvOy4uLy4uL2J5dGVjb2RlLzsu
Li8uLi9pbnRlcnByZXRlci87Li4vLi4vd3RmLzsuLi8uLi9wcm9maWxlcjsuLi8uLi9hc3NlbWJs
ZXIvOy4uLy4uL2RlYnVnZ2VyLzsuLi8uLi9oZWFwLzsmcXVvdDskKFdlYktpdExpYnJhcmllc0Rp
cilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwcml2
YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlJnF1b3Q7OyZx
dW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7
OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1
b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDsiCisJCUFkZGl0
aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxv
YmpcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNvdXJjZXNcJnF1b3Q7Oy4uLy4uLzsuLi8uLi9BUEkv
Oy4uLy4uL3BhcnNlci87Li4vLi4vYnl0ZWNvbXBpbGVyLzsuLi8uLi9kZmcvOy4uLy4uL2ppdC87
Li4vLi4vbGxpbnQvOy4uLy4uL3J1bnRpbWUvOy4uLy4uL3Rvb2xzLzsuLi8uLi9ieXRlY29kZS87
Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJvZmlsZXI7Li4vLi4vYXNzZW1i
bGVyLzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNE
aXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHJp
dmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZSZxdW90Ozsm
cXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90
OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZx
dW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7IgogCQlQcmVw
cm9jZXNzb3JEZWZpbml0aW9ucz0iX19TVERfQyIKIAkJRm9yY2VkSW5jbHVkZUZpbGVzPSJJQ1VW
ZXJzaW9uLmgiCiAJLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9j
b3B5LWZpbGVzLmNtZAkocmV2aXNpb24gMTA2MjkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZpbGVzLmNtZAkod29y
a2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBmb3IgJSVkIGluICgKICAgICBkZWJ1Z2dlcgog
ICAgIGludGVycHJldGVyCiAgICAgaml0CisgICAgbGxpbnQKICAgICBwYXJzZXIKICAgICBwcm9m
aWxlcgogICAgIHJ1bnRpbWUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZp
c2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3LDE1IEBACiAJ
b2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJ
MEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0Njgw
QUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdn
cmVnYXRlVGFyZ2V0ICJMTEludCBPZmZzZXRzIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJ
CTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8s
CisJCQkpOworCQkJbmFtZSA9ICJMTEludCBPZmZzZXRzIjsKKwkJCXByb2R1Y3ROYW1lID0gIkRl
cml2ZWQgU291cmNlcyI7CisJCX07CiAJCTY1RkIzRjY2MDlEMTFFOTEwMEY0OURFQiAvKiBEZXJp
dmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CiAJCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gNjVGQjNGNzcwOUQxMUVCRDAwRjQ5REVCIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJEZXJpdmVkIFNvdXJjZXMi
ICovOwpAQCAtMTQsNiArMjMsOSBAQAogCQkJCTY1RkIzRjY1MDlEMTFFOTEwMEY0OURFQiAvKiBH
ZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJNUQzNURFRTEwQzdDMTQwQjAwODY0OEIy
IC8qIEdlbmVyYXRlIERUcmFjZSBoZWFkZXIgKi8sCiAJCQkpOworCQkJZGVwZW5kZW5jaWVzID0g
KAorCQkJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICov
LAorCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJCXByb2R1Y3ROYW1lID0g
IkRlcml2ZWQgU291cmNlcyI7CiAJCX07CkBAIC00OCw2ICs2MCwxMCBAQAogCQkwQkFDOTRBMDEz
Mzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJBQzk0OUUxMzM4NzI4NDAwQ0Yx
MzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkNEODM1NzE0ODU4NDUyMDBFQTIwMDMgLyog
VGVtcG9yYXJ5Q2hhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJGMjhBMjkx
MUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVM
aW1pdHMuY3BwICovOyB9OworCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRy
eXBvaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi87IH07
CisJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NjE0QkNGNDVB
MDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTElu
dFRodW5rcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovOyB9OworCQkw
RjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTUxNEJDRjUwNDAw
ODg1QjRGIC8qIENvZGVUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBODE0
QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhw
cmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNTgs
OSArNzQsMTMgQEAKIAkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5r
SW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYw
QjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I3MTRCQ0Y4RTEw
MDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJl
c29sdmVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVj
b2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEZDNDU4MTRCRDE1RjEw
MEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21t
b25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE2RDcyNjE0MkMz
OUMwMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3Iu
Y3BwICovOyB9OwogCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJpdmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI2NjE0QkU1
RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlv
bkhhcm5lc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0QxNEJFNzI3
QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29u
dmVudGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyNDJEQTcxM0Yz
QjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAv
KiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NkYxNDczOEYzMTAwMTIxRTRGIC8qIERGR0NvZGVC
bG9ja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NzAxNDczOEYzNTAwMTIx
RTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3Mu
Y3BwICovOyB9OwpAQCAtNzEsNiArOTEsMTkgQEAKIAkJMEY0MzE3MzgxNDZCQUM2OTAwN0UzODkw
IC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4
MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyog
SklURXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDdGMTRC
QTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTMxNEJB
N0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50
RXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUYxNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZM
QUdTID0gIi1Xbm8tdW51c2VkLXBhcmFtZXRlciI7IH07IH07CisJCTBGNDY4MEE1MTRCQTdGOEQw
MEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2
ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEExMTRCQTdGODIw
MEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovOyB9OworCQkwRjQ2ODBBODE0
QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBM
TEludEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyog
TExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENCMTRCQkIxNzIw
MEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTElu
dE9mZmxpbmVBc21Db25maWcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnBy
ZXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi87IH07
CisJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDODE0QkJC
MTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAv
KiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi87IH07CisJ
CTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAv
KiBMTEludERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBE
MDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi87IH07CisJCTBG
NDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMTE0QkJDNUY4MDBC
RkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0OSAvKiBBYnN0
cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLzsgfTsKIAkJMEY1
NUYwRjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBB
YnN0cmFjdFBDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUYwOENF
MTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM4Nyw3ICs0MjAsNyBAQAog
CQk4NkI5OUFFMzExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI5OUFFMTExN0U1NzgxMDBERjVB
OTAgLyogU3RyaW5nQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJODZCQjA5QzAxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkUx
MzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwICovOyB9OwogCQk4NkJCMDlDMTEzOEUz
ODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2gu
aCAqLzsgfTsKLQkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBF
RTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgfTsKKwkJODZDMzZFRUEwRUUx
Mjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9B
c3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REQxMUEy
MTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCAqLzsgfTsKIAkJODZDNTY4RTEx
MUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAwMDdGN0YwIC8q
IE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwogCQk4NkM1NjhFMjExQTIxM0VFMDAwN0Y3RjAg
LyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCAqLzsg
fTsKQEAgLTc1NCw2ICs3ODcsMjAgQEAKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLworCQkwRjQ2ODBCMTE0
QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0g
UEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0
MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJ
CXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyOworCQkJcmVt
b3RlSW5mbyA9ICJMTEludCBPZmZzZXRzIjsKKwkJfTsKKwkJMEY0NjgwQjMxNEJBODIxNDAwQkZF
MjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5l
ckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMw
NyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9i
YWxJRFN0cmluZyA9IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSBK
U0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCX07CiAJCTE0MTIxNEJFMEE0OTE5MEUwMDQ4MDI1
NSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb250YWluZXJJ
dGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcg
LyogUHJvamVjdCBvYmplY3QgKi87CkBAIC03OTksNiArODQ2LDE1IEBACiAvKiBFbmQgUEJYQ29u
dGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29weUZpbGVzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsKKwkJ
CWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCX07CiAJCTVEQkIxNTExMTMxRDBCMTMw
MDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0gewogCQkJaXNhID0gUEJYQ29weUZp
bGVzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOwpAQCAtODM5LDYgKzg5NSwx
MCBAQAogCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJp
Zmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRSZXN0cmljdGlv
blZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCQ0Q4MzU0MTQ4NTg0
MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGVtcG9yYXJ5Q2hhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpemVMaW1pdHMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEVudHJ5cG9p
bnRzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBv
aW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEVudHJ5cG9pbnRz
Lmg7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludFRodW5rcy5jcHA7IHBhdGgg
PSBsbGludC9MTEludFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
MEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMTEludFRodW5rcy5oOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3Mu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTUxNEJDRjUwNDAwODg1QjRG
IC8qIENvZGVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVUeXBl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0
RiAvKiBIYW5kbGVySW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBIYW5k
bGVySW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBQTE0QkNGNUI5
MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBFeHByZXNzaW9uUmFuZ2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC04NDksOSArOTA5LDEzIEBACiAJCTBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBN
ZXRob2RDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWV0
aG9kQ2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I2
MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBHbG9iYWxSZXNvbHZlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50Q2FsbExpbmtJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25T
bG93UGF0aHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tbW9uU2xvd1Bh
dGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTZENzI0MTQyQzM5QTIwMENG
Nzg0QSAvKiBCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQml0VmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyMUMyNjYx
NEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKSVREcml2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMy
NzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0
aW9uSGFybmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRpb25I
YXJuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdFMTRCRUFBODAw
MEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVudGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RDE0NzM4RjJFMDAxMjFF
NEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBERkdDb2RlQmxvY2tzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYy
QzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtODYyLDYgKzkyNiwyMCBAQAogCQkwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyog
TGlzdGFibGVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExpc3Rh
YmxlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA3RjE0QkE1
NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKSVRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5
cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBh
dGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CisJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFeGNlcHRpb25z
LmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFeGNlcHRpb25zLmg7IHBh
dGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEhlbHBlcnMuY3BwOyBwYXRoID0gbGxp
bnQvTExJbnRIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0Njgw
QTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBMTEludEhlbHBlcnMuaDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVycy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIg
LyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHBhdGggPSBsbGludC9MTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBD
NTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gTExJbnRDb21tb24uaDsgcGF0aCA9IGxsaW50L0xMSW50Q29tbW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBM
TEludE9mZmxpbmVBc21Db25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0g
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHBhdGggPSBsbGludC9MTEludE9mZmxpbmVBc21Db25m
aWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzcxNEJCQjE2OTAwQkZF
MjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHBhdGggPSBsbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzgx
NEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5oOyBwYXRoID0gbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBD
RTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IExMSW50RGF0YS5jcHA7IHBhdGggPSBsbGludC9MTEludERhdGEuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIg
LyogTExJbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RGF0
YS5oOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUy
NzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFic3RyYWN0UEMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdFBDLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENDMTQ2QkU2MDIwMDA0NzJBOSAvKiBERkdCeXRlQ29k
ZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0J5dGVDb2RlQ2Fj
aGUuaDsgcGF0aCA9IGRmZy9ERkdCeXRlQ29kZUNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0xNTg3LDYgKzE2NjUsMTMgQEAKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNl
Y3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwor
CQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLyA9IHsKKwkJCWlzYSA9
IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRTBBNDg3OTNDMDA0ODAyNTUgLyogRnJhbWV3b3Jr
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTE2NDUsNiArMTczMCw3IEBACiAJCQkJMTQxMjExMjAw
QTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYwQTNFOEY5MDAwQkFG
NTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJNjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RS
ZWdFeHAgKi8sCisJCQkJMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0
c0V4dHJhY3RvciAqLywKIAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMTY3NSw2ICsxNzYxLDcgQEAKIAkJCQlGNUMyOTBFNjAyODRGOThF
MDE4NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLywKIAkJCQk0NUUxMkQ4ODA2QTQ5
QjBGMDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVENEM2MDFGRjYwRjcg
LyogY29uZmlnLmggKi8sCisJCQkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICov
LAogCQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJOTY4OENCMTIw
RUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQk5NjlBMDc4RjBFRDFEM0FFMDBG
MUY2ODEgLyogYnl0ZWNvZGUgKi8sCkBAIC0xNzE0LDYgKzE4MDEsMjggQEAKIAkJCXRhYldpZHRo
ID0gNDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcy
IC8qIGxsaW50ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJ
CQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8sCisJ
CQkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLywKKwkJ
CQkwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovLAorCQkJCTBG
MEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovLAorCQkJCTBGNDY4MENF
MTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovLAorCQkJCTBGNDY4MENGMTRCQkIz
RDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLywKKwkJCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUy
NzIgLyogTExJbnRDb21tb24uaCAqLywKKwkJCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyog
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi8sCisJCQkJMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcy
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovLAorCQkJCTBGNDY4MEM4MTRCQkIxNjkwMEJG
RTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi8sCisJCQkJMEY0NjgwOUQxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8sCisJCQkJMEY0NjgwOUUxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovLAorCQkJCTBGNDY4MDlGMTRCQTdGODIwMEJG
RTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovLAorCQkJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludEhlbHBlcnMuaCAqLywKKwkJCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gbGxpbnQ7CisJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAy
NTUgLyogdGVzdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApA
QCAtMTc0OCw2ICsxODU3LDggQEAKIAkJMTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY0NjgwRDAx
NEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovLAorCQkJCTBGNDY4
MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8sCiAJCQkJMEY0
NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovLAogCQkJCTBGNDY4
MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEZEODJFMzcx
NDFBQjE0MjAwMTc5Qzk0IC8qIENvbXBhY3RKSVRDb2RlTWFwLmggKi8sCkBAIC0yMTc1LDYgKzIy
ODYsOCBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYyMUMyNzkxNEJFNzI3MzAw
QURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLywKKwkJCQkwRjIxQzI3QTE0QkU3
MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovLAogCQkJCTBGMTVGMTVEMTRCN0E3
M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4
MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjRE
IC8qIEFyZ0xpc3QuaCAqLywKQEAgLTI1NDcsNiArMjY2MCw4IEBACiAJCTk2OUEwNzhGMEVEMUQz
QUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCisJCQkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVu
dGlvbnMuaCAqLywKKwkJCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlu
a0luZm8uaCAqLywKIAkJCQkwRjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0
dXMuY3BwICovLAogCQkJCTBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1
cy5oICovLAogCQkJCTBGOTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlkU3RhdHVzLmNw
cCAqLywKQEAgLTMwOTcsNyArMzIxMiwxNiBAQAogCQkJCTg2NzA0QjhBMTJEQkEzMzcwMEE5RkU3
QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCNDMxMkRCOEE4MTAw
QTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE1RjE1
RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50
Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyog
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDRDE0QkJC
MTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9p
bnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAv
KiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRG
IC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4
ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTA2LDcg
KzMyMzAsMTEgQEAKIAkJCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExp
bmtJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyog
R2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I5MTRCQ0Y5NUYw
MDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJpdmVy
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhlY3V0
aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRC
IC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdG
MTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjdCMjk0QTE0QzNDRDI5MDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QzE0QzNDRDQzMDA3QzNEQjEgLyogREZHQnl0
ZUNvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTI1LDYgKzMyNTMsMjQgQEAKIC8qIEVu
ZCBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWE5hdGl2ZVRh
cmdldCBzZWN0aW9uICovCisJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9m
ZnNldHNFeHRyYWN0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRy
YWN0b3IiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwOEIxNEJBN0U1RTAwQkZF
MjcyIC8qIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1l
d29ya3MgKi8sCisJCQkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLywK
KwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJ
CQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJ
CSk7CisJCQluYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdE5hbWUg
PSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMEY0Njgw
OEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXBy
b2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CiAJCTE0MTIx
MTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovID0gewogCQkJaXNhID0gUEJYTmF0aXZl
VGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MTIxMTM5MEE0ODc5ODQwMDQ4
MDI1NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWlu
aWRvbSIgKi87CkBAIC0zMjUxLDExICszMzk3LDI5IEBACiAJCQkJMTRCRDU5QkUwQTNFOEY5MDAw
QkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJOTMyRjVCREEwODIyQTFDNzAwNzM2OTc1IC8qIGpz
YyAqLywKIAkJCQk2NTExMjJGNzE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJ
CQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICov
LAorCQkJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovLAogCQkJ
KTsKIAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU2hl
bGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcy
IC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2Ny
aXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxl
cyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL2xsaW50L0xv
d0xldmVsQXNzZW1ibGVyLmFzbSIsCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBEZXJpdmVk
IFNvdXJjZXMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElS
KS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oIiwKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7
CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTElu
dE9mZnNldHMvXCJcblxuL3Vzci9iaW4vZW52IHJ1YnkgXCIke1NSQ1JPT1R9L29mZmxpbmVhc20v
Z2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYlwiIFwiJHtTUkNST09UfS9sbGludC9Mb3dMZXZl
bEludGVycHJldGVyLmFzbVwiIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9M
TEludERlc2lyZWRPZmZzZXRzLmhcIlxuIjsKKwkJfTsKIAkJMzcxM0YwMTQxNDI5MDUyNDAwMzYz
ODdGIC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzICov
ID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25N
YXNrID0gMjE0NzQ4MzY0NzsKQEAgLTMzNjEsNyArMzUyNSw3IEBACiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlzaGVsbFBhdGggPSAvYmluL3No
OwotCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNf
RElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7
U1JDUk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2YVNj
cmlwdENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJcblxubWFrZSAt
LW5vLWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtl
XCIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNwdWBcbiI7CisJCQlzaGVsbFNjcmlwdCA9
ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9kb2NzXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlXCJcblxuL2Jpbi9sbiAtc2ZoIFwiJHtTUkNST09UfVwiIEphdmFTY3Jp
cHRDb3JlXG5leHBvcnQgSmF2YVNjcmlwdENvcmU9XCJKYXZhU2NyaXB0Q29yZVwiXG5leHBvcnQg
QlVJTFRfUFJPRFVDVFNfRElSPVwiLi4vLi5cIlxuXG5tYWtlIC0tbm8tYnVpbHRpbi1ydWxlcyAt
ZiBcIkphdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2VcIiAtaiBgL3Vzci9zYmluL3N5
c2N0bCAtbiBody5uY3B1YFxuXG4vdXNyL2Jpbi9lbnYgcnVieSBKYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2FzbS5yYiBKYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bSAke0JVSUxUX1BST0RVQ1RTX0RJUn0vSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIExMSW50QXNz
ZW1ibHkuaFxuIjsKIAkJfTsKIAkJOTMxOTU4NkIwOUQ5RjkxQTAwQTU2RkQ0IC8qIENoZWNrIEZv
ciBHbG9iYWwgSW5pdGlhbGl6ZXJzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWls
ZFBoYXNlOwpAQCAtMzM5Niw2ICszNTYwLDE0IEBACiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLworCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLyA9IHsKKwkJCWlz
YSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFEMEE0ODc5M0MwMDQ4
MDI1NSAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzY1Myw3ICszODI1LDE0IEBACiAJ
CQkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJ
bnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3
MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwODMxNEJB
NTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0
NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1
cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYg
LyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QzE0QkNG
NDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgz
QjAxNEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQkwRjBCODNCNDE0QkNGODYwMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUY2OUU4NkMzMTRDNkU1NTEwMDJDMkM2MiAvKiBOdW1iZXJPZkNvcmVz
LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzY3OCw2ICszODU3LDE2IEBACiAvKiBFbmQgUEJYU291
cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5
IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0g
MEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi87CisJCQl0YXJnZXRQ
cm94eSA9IDBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki87CisJCX07CisJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRl
bmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBG
NDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJ
CQl0YXJnZXRQcm94eSA9IDBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJ
dGVtUHJveHkgKi87CisJCX07CiAJCTE0MTIxNEJGMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhUYXJn
ZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJCXRh
cmdldCA9IDE0MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovOwpAQCAtMzcxMSw2
ICszOTAwLDE0OCBAQAogLyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwogCiAv
KiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTBGNDY4MDk2MTRCQTdF
NUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBO
TzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhB
U0VfU1RSSVAgPSBOTzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJ
CUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05T
ID0gWUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9D
RVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVk
KSIsCisJCQkJKTsKKwkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5POworCQkJCUdD
Q19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0Nf
V0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01J
U1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9
IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9T
RUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BB
VEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJ
CU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05B
TUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRI
UyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NF
QVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwOTcx
NEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BB
VEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlD
T1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJk
d2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJ
CQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBj
b20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMy
X0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZ
UEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdD
Q19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1th
cmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19E
SVIpL0xMSW50T2Zmc2V0cyQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJH
RVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNI
X1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFE
RVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBG
NDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJD
SF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQp
IjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZP
Uk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0g
Z251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZF
UlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJO
XzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lO
R19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVT
OworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJD
SF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
IiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJP
RFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJ
CVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
TExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQ
cm9maWxpbmc7CisJCX07CisJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9u
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQo
QVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJ
CQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0Nf
Q19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJ
T05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNs
YW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJ
CUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9B
Qk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZ
RVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJ
CWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQki
JChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9U
QVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJ
U0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3Ug
JChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUQxNEJBN0ZE
OTAwQkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJj
ZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODBBRTE0QkE3
RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBT
b3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODBB
RjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJE
ZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsK
KwkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVD
VF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVj
dGlvbjsKKwkJfTsKIAkJMTQxMjExM0EwQTQ4Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovID0gewog
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewpAQCAt
Mzk1Miw2ICs0MjgzLDI4IEBACiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOUEx
NEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZl
VGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovID0geworCQkJaXNhID0gWENDb25m
aWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwOTYx
NEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3
MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxp
bmcgKi8sCisJCQkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJ
CQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUMxNEJBN0ZEOTAw
QkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0
ICJMTEludCBPZmZzZXRzIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJ
CQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAv
KiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLywK
KwkJCQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4
MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRD
b25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9
IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi8gPSB7CiAJ
CQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShy
ZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2RlZmluZSBHTE9CQUxf
VEhVTktfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0x
KSkKICNkZWZpbmUgUkVHRVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KC0yKSkKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+CisjaW5j
bHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0
ZWNvZGVDb252ZW50aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgQnl0ZWNvZGVDb252ZW50aW9uc19oCisjZGVmaW5lIEJ5dGVjb2RlQ29u
dmVudGlvbnNfaAorCisvLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0
aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6Cisv
LyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBD
YWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lz
dGVyRmlsZS5oLgorLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGlj
ZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFy
aWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgorLy8gICAgICAweDQwMDAwMDAwLTB4
N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmll
cyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgorc3RhdGljIGNvbnN0IGlu
dCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7CisKKyNlbmRpZiAvLyBC
eXRlY29kZUNvbnZlbnRpb25zX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNywxNyArMjcsNDAgQEAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKIAog
bmFtZXNwYWNlIEpTQyB7CiAKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
RnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFN
KGJ5dGVjb2RlSW5kZXgpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNv
ZGVJbmRleDsKKyAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaW5zdHJ1Y3Rp
b25bNF0udS5jYWxsTGlua0luZm87CisgICAgCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNh
bGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCksIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0
dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKKyNlbmRpZgorfQorCiBDYWxsTGlua1N0YXR1
cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2sp
OwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklUKSAmJiBF
TkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKAotICAgICAg
ICBwcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5D
YWxsZWUuZ2V0KCksCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKGJ5
dGVjb2RlSW5kZXgpKTsKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mQ2FsbExpbmtJ
bmZvcygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBi
eXRlY29kZUluZGV4KTsKKyAgICAKKyAgICBpZiAocHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xv
d0Nhc2UoYnl0ZWNvZGVJbmRleCkpCisgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygwLCB0
cnVlKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBwcm9maWxlZEJsb2NrLT5nZXRD
YWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CisgICAgaWYg
KCF0YXJnZXQpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ss
IGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQs
IGZhbHNlKTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKICNl
bmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5r
U3RhdHVzLmgJKHJldmlzaW9uIDEwNjI5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNSArNDcsMTcgQEAg
cHVibGljOgogICAgIAogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKENvZGVC
bG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBj
b25zdCB7IHJldHVybiAhIW1fY2FsbFRhcmdldDsgfQorICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7
IHJldHVybiAhIW1fY2FsbFRhcmdldCB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCi0g
ICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsVGFyZ2V0OyB9CisgICAg
Ym9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQogICAgIAogICAgIGJv
b2wgY291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvdWxkVGFrZVNsb3dQYXRo
OyB9CiAgICAgCiAgICAgSlNGdW5jdGlvbiogY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1f
Y2FsbFRhcmdldDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMg
Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAg
ICAKICAgICBKU0Z1bmN0aW9uKiBtX2NhbGxUYXJnZXQ7CiAgICAgYm9vbCBtX2NvdWxkVGFrZVNs
b3dQYXRoOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2lu
Y2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNp
bmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgi
CiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTU5LDggKzYwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiB1
c2luZyBuYW1lc3BhY2UgREZHOwogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVO
QUJMRShPUENPREVfU0FNUExJTkcpCi0KIHN0YXRpYyBVU3RyaW5nIGVzY2FwZVF1b3Rlcyhjb25z
dCBVU3RyaW5nJiBzdHIpCiB7CiAgICAgVVN0cmluZyByZXN1bHQgPSBzdHI7CkBAIC0zNTgsMTAg
KzM1NywxMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAgICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bjb2Rl
TGVuZ3Roc1tleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtp
XS51Lm9wY29kZSldKQogICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7CiAKLSAgICBwcmludGYo
IiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVk
IGNhbGxlZSByZWdpc3RlcihzKVxuXG4iLAorICAgIHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rpb25z
OyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMp
OyAlZCB2YXJpYWJsZShzKVxuXG4iLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
PihpbnN0cnVjdGlvbkNvdW50KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4o
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSksCi0gICAgICAgIHRo
aXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgICAgICB0aGlz
LCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX251bVZhcnMpOwogCiAg
ICAgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4gPSBpbnN0cnVjdGlv
bnMoKS5iZWdpbigpOwogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IGluc3RydWN0aW9ucygpLmVuZCgpOwpAQCAtODk4LDYgKzg5NywxNCBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5SWRP
cChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsK
KyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQdXRC
eUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTI4NSw4ICsxMjkyLDYgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhl
Y1N0YXRlKiBleGVjLCBjbwogICAgIH0KIH0KIAotI2VuZGlmIC8vICFkZWZpbmVkKE5ERUJVRykg
fHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNU
SUNTCiBzdGF0aWMgSGFzaFNldDxDb2RlQmxvY2sqPiBsaXZlQ29kZUJsb2NrU2V0OwogI2VuZGlm
CkBAIC0xNDU2LDYgKzE0NjEsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxv
Y2tUYWcsCiB7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1QYXJhbWV0ZXJzKCkpOwog
ICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogICAgIAog
ICAgIGlmIChvdGhlci5tX3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNl
c3NhcnkoKTsKQEAgLTE1MDQsNiArMTUxMCw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlw
dEV4ZWN1dGFibGUqIG8KICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIAogICAgIG9wdGltaXpl
QWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogCiAjaWYgRFVNUF9DT0RFX0JM
T0NLX1NUQVRJU1RJQ1MKICAgICBsaXZlQ29kZUJsb2NrU2V0LmFkZCh0aGlzKTsKQEAgLTE1MjEs
NyArMTUyOCwxMSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2lmIEVOQUJMRShWRVJCT1NF
X1ZBTFVFX1BST0ZJTEUpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNlbmRpZgotICAgIAor
CisjaWYgRU5BQkxFKExMSU5UKSAgICAKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMu
YmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWlu
Z0xMSW50Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQog
I2lmIEVOQUJMRShKSVQpCiAgICAgLy8gV2UgbWF5IGJlIGRlc3Ryb3llZCBiZWZvcmUgYW55IENv
ZGVCbG9ja3MgdGhhdCByZWZlciB0byB1cyBhcmUgZGVzdHJveWVkLgogICAgIC8vIENvbnNpZGVy
IHRoYXQgdHdvIENvZGVCbG9ja3MgYmVjb21lIHVucmVhY2hhYmxlIGF0IHRoZSBzYW1lIHRpbWUu
IFRoZXJlCkBAIC0xNzMzLDggKzE3NDQsNjggQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5j
b25kaXRpb25hbGx5KAogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5saW5r
aW5nID0gZmFsc2U7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAg
CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xv
YmFsRGF0YS0+aW50ZXJwcmV0ZXI7CisgICAgLy8gaW50ZXJwcmV0ZXItPmVuYWJsZWQoKSByZXR1
cm5zIHRydWUgaWYgdGhlIG9sZCBDKysgaW50ZXJwcmV0ZXIgaXMgZW5hYmxlZC4gSWYgdGhhdCdz
IGVuYWJsZWQKKyAgICAvLyB0aGVuIHdlJ3JlIG5vdCB1c2luZyBMTEludC4KKyAgICBpZiAoIWlu
dGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgewor
ICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygp
W21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgc3dpdGNoIChp
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpKSB7Cisg
ICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5
X2lkOgorICAgICAgICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUg
fHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpKQor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVu
bGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBwcm9w
ZXJ0eSBhY2Nlc3Mgd2l0aCBzdHJ1Y3R1cmUgJXAuXG4iLCBjdXJJbnN0cnVjdGlvbls0XS51LnN0
cnVjdHVyZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1
Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls1XS51Lm9wZXJh
bmQgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY3Vy
SW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYm
IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpKQorICAg
ICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls3XS51LnN0
cnVjdHVyZUNoYWluLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJp
bnRmKCJDbGVhcmluZyBMTEludCBwdXQgdHJhbnNpdGlvbiB3aXRoIHN0cnVjdHVyZXMgJXAgLT4g
JXAsIGNoYWluICVwLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckluc3RydWN0
aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vy
SW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUu
Y2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5j
bGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hh
aW4uY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSA9
IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3Qg
c2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5z
dHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXTsKKyAgICAgICAgICAg
IEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNv
ZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsCisgICAgICAgICAgICAgICAgICAgfHwgaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZl
X2dsb2JhbF9keW5hbWljKTsKKyAgICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bM10udS5z
dHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUu
Z2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcHJpbnRmKCJD
bGVhcmluZyBMTEludCBnbG9iYWwgcmVzb2x2ZSBjYWNoZSB3aXRoIHN0cnVjdHVyZSAlcC5cbiIs
IGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgICAgIGN1cklu
c3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBjdXJJbnN0cnVj
dGlvbls0XS51Lm9wZXJhbmQgPSAwOworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICAg
ICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhlYXA6OmlzTWFy
a2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKKyAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJD
bGVhcmluZyBMTEludCBjYWxsIGZyb20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBt
X2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmICghIW1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlICYmICFIZWFw
Ojppc01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5nZXQoKSkp
CisgICAgICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUu
Y2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKICNp
ZiBFTkFCTEUoREZHX0pJVCkKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2Ug
YXJlLCB0aGVuIGpldHRpc29uLgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2
ZW5lc3NEdXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7
CkBAIC0xODU1LDEwICsxOTI2LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ry
b25nUmVmZXIKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXpl
KCk7ICsraSkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAj
aWYgRU5BQkxFKElOVEVSUFJFVEVSKQotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAg
IHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9uc1tpXV0pOwotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29s
dmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlz
aXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbnNbaV1dKTsKKyAgICBpZiAobV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+ZW5hYmxl
ZCgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0
cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbnNbaV1dKTsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUlu
c3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlz
aXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbnNbaV1dKTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAt
MTg2Niw4ICsxOTM5LDkgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZl
cgogICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBleGVjdXRhYmxlcyB0aGF0IHdlIGhhdmUgaW5s
aW5lZCBkb24ndCBkaWUuCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGV5IHdvdWxkIGhhdmUgb3Ro
ZXJ3aXNlIGRpZWQsIHdlIHNob3VsZCBwcm9iYWJseSB0cmlnZ2VyIHJlY29tcGlsYXRpb24uCiAg
ICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5saW5lQ2FsbEZyYW1lcygpLnNpemUoKTsg
KytpKSB7Ci0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZyYW1lcygpW2ld
LmV4ZWN1dGFibGUpOwotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFt
ZXMoKVtpXS5jYWxsZWUpOworICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lJiBpbmxpbmVDYWxs
RnJhbWUgPSBpbmxpbmVDYWxsRnJhbWVzKClbaV07CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVu
ZCgmaW5saW5lQ2FsbEZyYW1lLmV4ZWN1dGFibGUpOworICAgICAgICAgICAgdmlzaXRvci5hcHBl
bmQoJmlubGluZUNhbGxGcmFtZS5jYWxsZWUpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCkBA
IC0yMDY3LDYgKzIxNDEsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIHsKICAg
ICBpZiAoISFtX2FsdGVybmF0aXZlKQogICAgICAgICBtX2FsdGVybmF0aXZlLT51bmxpbmtDYWxs
cygpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGxp
bnRDYWxsTGlua0luZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2xsaW50Q2FsbExp
bmtJbmZvc1tpXS5pc0xpbmtlZCgpKQorICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3Nb
aV0udW5saW5rKCk7CisgICAgfQorI2VuZGlmCiAgICAgaWYgKCEobV9jYWxsTGlua0luZm9zLnNp
emUoKSB8fCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKQEAgLTIwODEsMTAgKzIxNjEsMzkg
QEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIAogdm9pZCBDb2RlQmxvY2s6OnVubGlu
a0luY29taW5nQ2FsbHMoKQogeworI2lmIEVOQUJMRShMTElOVCkKKyAgICB3aGlsZSAobV9pbmNv
bWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAg
ICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+dW5saW5rKCk7CisjZW5kaWYKKyAg
ICBpZiAobV9pbmNvbWluZ0NhbGxzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIFJl
cGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcih0aGlzKTsKICAgICB3aGlsZSAobV9pbmNvbWluZ0Nh
bGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0NhbGxzLmVuZCgpKQogICAgICAgICBtX2luY29taW5n
Q2FsbHMuYmVnaW4oKS0+dW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogfQor
Cit1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgUmV0
dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBp
ZiAocmV0dXJuQWRkcmVzcy52YWx1ZSgpID49IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Jl
Z2luKQorICAgICAgICAmJiByZXR1cm5BZGRyZXNzLnZhbHVlKCkgPD0gYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfZW5kKSkgeworICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkpOwor
ICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VS
VChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKKyAgICAgICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uID0gZXhlYy0+Y3VycmVudFZQQygpOworICAgICAgICBBU1NFUlQo
aW5zdHJ1Y3Rpb24pOworICAgICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb24p
OworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworI2VuZGlmCisgICAgaWYg
KCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gMTsKKyAgICBWZWN0b3I8Q2FsbFJldHVybk9m
ZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJl
dHVybkluZGV4VmVjdG9yOworICAgIGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQorICAgICAgICBy
ZXR1cm4gMTsKKyAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVj
b2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVn
aW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRk
cmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OworfQogI2VuZGlmCiAKIHZvaWQgQ29kZUJs
b2NrOjpjbGVhckV2YWxDYWNoZSgpCkBAIC0yMTgwLDI0ICsyMjg5LDQ1IEBAIGJvb2wgRnVuY3Rp
b25Db2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRoREYKIAogdm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpq
ZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGlu
ZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkp
KTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxQ
cm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRD
b2RlKCpnbG9iYWxEYXRhKCkpOwogfQogCiB2b2lkIEV2YWxDb2RlQmxvY2s6OmpldHRpc29uKCkK
IHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAg
ICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFT
U0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRh
YmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERh
dGEoKSk7CiB9CiAKIHZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBB
U1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQo
SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlz
ID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+
KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yKCpnbG9iYWxEYXRh
KCksIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7CiB9
CisKK3ZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5q
aXRDb21waWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEV2YWxDb2RlQmxvY2s6OmppdENvbXBp
bGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlw
ZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJl
cGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93
bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShnbG9iYWxEYXRhKTsKK30KKwordm9pZCBGdW5j
dGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQor
eworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7
CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZUZv
cihnbG9iYWxEYXRhLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZv
ckNhbGwpOworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC0yMzAw
LDYgKzI0MzAsMTggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2ZpbGVzKCkKIH0KICNl
bmRpZgogCit2b2lkIENvZGVCbG9jazo6aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5p
dHkoKQoreworI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKSAmJiAhRU5BQkxFKExMSU5UKQor
ICAgIGlmIChCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCisgICAgICAg
IHJldHVybjsKKyAgICBpZiAoISFhbHRlcm5hdGl2ZSgpKQorICAgICAgICBkaXNjYXJkQnl0ZWNv
ZGUoKTsKKyAgICBlbHNlCisgICAgICAgIGRpc2NhcmRCeXRlY29kZUxhdGVyKCk7CisjZW5kaWYK
K30KKwogI2lmbmRlZiBOREVCVUcKIGJvb2wgQ29kZUJsb2NrOjp1c2VzT3Bjb2RlKE9wY29kZUlE
IG9wY29kZUlEKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAkocmV2aXNpb24gMTA2MjkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaWZuZGVm
IENvZGVCbG9ja19oCiAjZGVmaW5lIENvZGVCbG9ja19oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNv
bnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJl
dHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCkBA
IC01MCw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSklUV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTElu
dENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMu
aCIKICNpbmNsdWRlICJQcmVkaWN0aW9uVHJhY2tlci5oIgpAQCAtNjUsMTYgKzY3LDExIEBACiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAK
LS8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlm
ZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKLS8vICAgICAgMHg4MDAw
MDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2lu
dGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCi0v
LyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBD
YWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUg
ZnVuY3Rpb24ncyBjYWxsZnJhbWUuCi0vLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9z
aXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25z
dGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCi1zdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKLQogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBj
bGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBFeGVj
U3RhdGU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgaW5saW5lIGlu
dCB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoaW50IGFyZ3VtZW50c1JlZ2lzdGVyKSB7IHJl
dHVybiBhcmd1bWVudHNSZWdpc3RlciAtIDE7IH0KIApAQCAtODMsNiArODAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFs
aXplciwgcHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0g
Q29weVBhcnNlZEJsb2NrVGFnIHsgQ29weVBhcnNlZEJsb2NrIH07CiAgICAgcHJvdGVjdGVkOgpA
QCAtMTIzLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgd2hpbGUgKHJl
c3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQtPmFs
dGVybmF0aXZlKCk7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAgICAgICAgIEFT
U0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAg
ICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBl
KCkpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICNlbmRpZgpAQCAt
MTM0LDExICsxMzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCBk
dW1wU3RhdGlzdGljcygpOwogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEVfT1BDT0RF
X1NBTVBMSU5HCiAgICAgICAgIHZvaWQgZHVtcChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAg
dm9pZCBwcmludFN0cnVjdHVyZXMoY29uc3QgSW5zdHJ1Y3Rpb24qKSBjb25zdDsKICAgICAgICAg
dm9pZCBwcmludFN0cnVjdHVyZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbios
IGludCBvcGVyYW5kKSBjb25zdDsKLSNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KIApAQCAtMTk0LDE1ICsxOTAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxNZXRo
b2RDYWxsTGlua0luZm8sIHVuc2lnbmVkLCBnZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUlu
ZGV4PihtX21ldGhvZENhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0luZm9z
LnNpemUoKSwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7
Ci0gICAgICAgICAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBj
YWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOwotICAgICAg
ICAgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7
Ci0gICAgICAgICAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVj
b2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVn
aW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRk
cmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OwotICAgICAgICB9CisgICAgICAgIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSosIFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAg
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Rm9yQ2FsbEF0SW5kZXgodW5zaWduZWQgaW5kZXgp
CiAgICAgICAgIHsKQEAgLTIyMywxMSArMjExLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB7CiAgICAgICAgICAgICBtX2luY29taW5nQ2FsbHMucHVzaChpbmNvbWluZyk7CiAgICAgICAg
IH0KKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHZvaWQgbGlua0luY29taW5nQ2FsbChMTElu
dENhbGxMaW5rSW5mbyogaW5jb21pbmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faW5jb21p
bmdMTEludENhbGxzLnB1c2goaW5jb21pbmcpOworICAgICAgICB9CisjZW5kaWYgLy8gRU5BQkxF
KExMSU5UKQogICAgICAgICAKICAgICAgICAgdm9pZCB1bmxpbmtJbmNvbWluZ0NhbGxzKCk7Ci0j
ZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYg
RU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgdm9pZCBzZXRKSVRDb2Rl
TWFwKFBhc3NPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IGppdENvZGVNYXApCiAgICAgICAgIHsK
ICAgICAgICAgICAgIG1faml0Q29kZU1hcCA9IGppdENvZGVNYXA7CkBAIC0yMzYsNyArMjMwLDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2ppdENv
ZGVNYXAuZ2V0KCk7CiAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAKKyNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICAgICAgdm9pZCBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKQogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoISFtX2RmZ0RhdGEpCkBAIC0zMzUsMTIgKzMzMSwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIp
CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uKiByZXR1cm5BZGRy
ZXNzKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0
cnVjdGlvbnMoKS5iZWdpbigpICYmIHJldHVybkFkZHJlc3MgPCBpbnN0cnVjdGlvbnMoKS5lbmQo
KSk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5B
ZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgICAgIH0KLSNlbmRpZgogCiAg
ICAgICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29t
cGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29t
cGFyZUZ1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkg
eyByZXR1cm4gbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KQEAgLTM1NCwxNyArMzQ5LDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIG1fc2hvdWxkRGlzY2Fy
ZEJ5dGVjb2RlID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2Rl
RGlzY2FyZGluZ09wcG9ydHVuaXR5KCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCEhYWx0
ZXJuYXRpdmUoKSkKLSAgICAgICAgICAgICAgICBkaXNjYXJkQnl0ZWNvZGUoKTsKLSAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBkaXNjYXJkQnl0ZWNvZGVMYXRlcigpOwotICAgICAg
ICB9CisgICAgICAgIHZvaWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsK
ICAgICAgICAgCi0jaWZuZGVmIE5ERUJVRwogICAgICAgICBib29sIHVzZXNPcGNvZGUoT3Bjb2Rl
SUQpOwotI2VuZGlmCiAKICAgICAgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCgpIHsgcmV0
dXJuIG1faW5zdHJ1Y3Rpb25Db3VudDsgfQogICAgICAgICB2b2lkIHNldEluc3RydWN0aW9uQ291
bnQodW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCkgeyBtX2luc3RydWN0aW9uQ291bnQgPSBpbnN0
cnVjdGlvbkNvdW50OyB9CkBAIC0zODcsNiArMzc0LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgeyByZXR1cm4g
Z2V0SklUQ29kZSgpLmdldEV4ZWN1dGFibGVNZW1vcnkoKTsgfQogICAgICAgICB2aXJ0dWFsIEpT
T2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKikgPSAw
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKSA9IDA7CisgICAgICAgIGJvb2wgaml0
Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAg
IGlmIChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykgeworICAgICAg
ICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGppdENvbXBpbGVJbXBsKGdsb2JhbERhdGEpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgPSAwOwog
CiAgICAgICAgIGVudW0gQ29tcGlsZVdpdGhERkdTdGF0ZSB7CkBAIC00MDYsMTMgKzQwMiwxMyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGhhc09wdGltaXplZFJlcGxhY2VtZW50
KCkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2Rl
OjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNv
ZGUoZ2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHJlcGxhY2VtZW50
KCktPmdldEpJVFR5cGUoKSA+IGdldEpJVFR5cGUoKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAg
ICAgICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVu
dCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKICAgICAgICAgICAgIGVsc2Ug
ewotICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjpp
c0Jhc2VsaW5lQ29kZShyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAg
ICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKSA9PSB0aGlzKTsKICAgICAgICAgICAgIH0KICNlbmRp
ZgpAQCAtNDcxLDE4ICs0NjcsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBj
bGVhckV2YWxDYWNoZSgpOwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICB2b2lk
IGFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24odW5zaWduZWQgcHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVz
ZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBw
ZW5kKHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgbV9wcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CiAgICAg
ICAgIH0KICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24odW5zaWduZWQg
Z2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1f
Z2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZl
SW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOworICAgICAgICAg
ICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb24pOwogICAgICAgICB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluc3RydWN0
aW9uQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CisjaWYgRU5BQkxF
KExMSU5UKQorICAgICAgICBMTEludENhbGxMaW5rSW5mbyogYWRkTExJbnRDYWxsTGlua0luZm8o
KQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvcy5hcHBlbmQoTExJ
bnRDYWxsTGlua0luZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gJm1fbGxpbnRDYWxsTGlua0lu
Zm9zLmxhc3QoKTsKKyAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAg
dm9pZCBzZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVj
dHVyZVN0dWJJbmZvcy5ncm93KHNpemUpOyB9CkBAIC00OTEsOCArNDkwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5mbyh1bnNpZ25lZCBnbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2dsb2Jh
bERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9z
LmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKKyAg
ICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhn
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKICAgICAgICAgfQogICAgICAgICBHbG9iYWxSZXNv
bHZlSW5mbyYgZ2xvYmFsUmVzb2x2ZUluZm8oaW50IGluZGV4KSB7IHJldHVybiBtX2dsb2JhbFJl
c29sdmVJbmZvc1tpbmRleF07IH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5mb0F0
Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAtNTAzLDYgKzUwMSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkTWV0aG9kQ2FsbExpbmtJbmZv
cyh1bnNpZ25lZCBuKSB7IEFTU0VSVChtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKTsgbV9tZXRo
b2RDYWxsTGlua0luZm9zLmdyb3cobik7IH0KICAgICAgICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBt
ZXRob2RDYWxsTGlua0luZm8oaW50IGluZGV4KSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5m
b3NbaW5kZXhdOyB9CisgICAgICAgIHNpemVfdCBudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3Mo
KSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpOyB9CiAjZW5kaWYKICAgICAg
ICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtNTQzLDYgKzU0MiwxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVP
ZmZzZXRdLnUub3Bjb2RlKSkgLSAxXS51LnByb2ZpbGUgPT0gcmVzdWx0KTsKICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KKyAgICAgICAgUHJlZGljdGVkVHlwZSB2YWx1ZVBy
b2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgfQog
ICAgICAgICAKICAgICAgICAgdW5zaWduZWQgdG90YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMoKQog
ICAgICAgICB7CkBAIC01NjksMTIgKzU3MiwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
CiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQog
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVl
ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2Nv
dW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtl
U2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4
ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hv
bGQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgY291bGRUYWtlU2xvd0Nhc2Uo
aW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9m
UmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIHVuc2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0g
T3B0aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91
YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6Y291bGRUYWtl
U2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KQEAgLTU5MywxMiArNjAwLDE2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTcGVjaWFsRmFz
dENhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51
bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RD
YXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwog
ICAgICAgICAgICAgcmV0dXJuIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID49IE9wdGlvbnM6Omxpa2Vs
eVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4oc3BlY2lh
bEZhc3RDYXNlQ291bnQpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2Vs
eVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBi
b29sIGxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VD
b3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+
bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBz
cGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5t
X2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgLSBz
cGVjaWFsRmFzdENhc2VDb3VudDsKQEAgLTYwNyw2ICs2MTgsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UoaW50IGJ5dGVj
b2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQ
cm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVu
c2lnbmVkIHNsb3dDYXNlQ291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxG
YXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBz
bG93Q2FzZUNvdW50ICsgc3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBAIC03MDQsNyArNzE3LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGFkZEZyZXF1ZW50RXhpdFNp
dGUoY29uc3QgREZHOjpGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAg
ICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAg
ICAgICAgICAgIHJldHVybiBtX2V4aXRQcm9maWxlLmFkZChzaXRlKTsKICAgICAgICAgfQogCkBA
IC04MDksNiArODIyLDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGNvcHlQb3N0
UGFyc2VEYXRhRnJvbShDb2RlQmxvY2sqIGFsdGVybmF0aXZlKTsKICAgICAgICAgdm9pZCBjb3B5
UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgICAgICAKKyAgICAgICAgLy8gRnVu
Y3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIEpJVHRpbmcga2lja3MgaW4sIGluIGEgbWl4ZWQg
bW9kZQorICAgICAgICAvLyBleGVjdXRpb24gd29ybGQuCisgICAgICAgIAorICAgICAgICB2b2lk
IGRvbnRKSVRBbnl0aW1lU29vbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVj
dXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0
aW1lU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRBZnRlcldhcm1V
cCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlv
bnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICB2b2lkIGppdFNvb24oKQorICAgICAgICB7CisgICAgICAgICAgICBt
X2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JK
SVRTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQzMl90IGxsaW50RXhlY3V0
ZUNvdW50ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9sbGludEV4
ZWN1dGVDb3VudGVyOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICAvLyBGdW5jdGlvbnMg
Zm9yIGNvbnRyb2xsaW5nIHdoZW4gdGllcmVkIGNvbXBpbGF0aW9uIGtpY2tzIGluLiBUaGlzCiAg
ICAgICAgIC8vIGNvbnRyb2xzIGJvdGggd2hlbiB0aGUgb3B0aW1pemluZyBjb21waWxlciBpcyBp
bnZva2VkIGFuZCB3aGVuIE9TUgogICAgICAgICAvLyBlbnRyeSBoYXBwZW5zLiBUd28gdHJpZ2dl
cnMgZXhpc3Q6IHRoZSBsb29wIHRyaWdnZXIgYW5kIHRoZSByZXR1cm4KQEAgLTEwMDEsNiArMTAz
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fc2hvdWxkRGlzY2FyZEJ5dGVj
b2RlOwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUlt
cGwoSlNHbG9iYWxEYXRhJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRXZWFrUmVm
ZXJlbmNlcyhTbG90VmlzaXRvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemVVbmNv
bmRpdGlvbmFsbHkoKTsKICAgICAgICAgCkBAIC0xMDEzLDcgKzEwNTAsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdm9pZCB0YWxseUZyZXF1ZW50RXhpdFNpdGVzKCkgeyB9CiAjZW5kaWYK
ICAgICAgICAgCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5H
KQogICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKiwgY29uc3QgVmVjdG9yPEluc3RydWN0aW9u
Pjo6Y29uc3RfaXRlcmF0b3ImIGJlZ2luLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVy
YXRvciYpIGNvbnN0OwogCiAgICAgICAgIENTdHJpbmcgcmVnaXN0ZXJOYW1lKEV4ZWNTdGF0ZSos
IGludCByKSBjb25zdDsKQEAgLTEwMjMsNyArMTA1OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICB2b2lkIHByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9y
PEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgcHJpbnRDYWxsT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8
SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKICAg
ICAgICAgdm9pZCBwcmludFB1dEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3Rv
cjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0Owot
I2VuZGlmCiAgICAgICAgIHZvaWQgdmlzaXRTdHJ1Y3R1cmVzKFNsb3RWaXNpdG9yJiwgSW5zdHJ1
Y3Rpb24qIHZQQykgY29uc3Q7CiAgICAgICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTA4
NCw5ICsxMTE5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8U291cmNlUHJv
dmlkZXI+IG1fc291cmNlOwogICAgICAgICB1bnNpZ25lZCBtX3NvdXJjZU9mZnNldDsKIAotI2lm
IEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX3Byb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb25zOwogICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZ2xvYmFsUmVz
b2x2ZUluc3RydWN0aW9uczsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIFNlZ21lbnRlZFZl
Y3RvcjxMTEludENhbGxMaW5rSW5mbywgOD4gbV9sbGludENhbGxMaW5rSW5mb3M7CisgICAgICAg
IFNlbnRpbmVsTGlua2VkTGlzdDxMTEludENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5v
ZGU8TExJbnRDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0xMSW50Q2FsbHM7CiAjZW5kaWYKICNp
ZiBFTkFCTEUoSklUKQogICAgICAgICBWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+IG1fc3RydWN0
dXJlU3R1YkluZm9zOwpAQCAtMTA5Nyw5ICsxMTM0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlV2l0aEFyaXR5Q2hlY2s7CiAgICAg
ICAgIFNlbnRpbmVsTGlua2VkTGlzdDxDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2Rl
PENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5nQ2FsbHM7CiAjZW5kaWYKLSNpZiBFTkFCTEUoREZH
X0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICBPd25Q
dHI8Q29tcGFjdEpJVENvZGVNYXA+IG1faml0Q29kZU1hcDsKLSAgICAgICAgCisjZW5kaWYKKyNp
ZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgc3RydWN0IFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9u
IHsKICAgICAgICAgICAgIFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uKCkgeyB9CiAgICAgICAgICAg
ICAKQEAgLTExNjIsMTIgKzEyMDAsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgT3du
UHRyPENvZGVCbG9jaz4gbV9hbHRlcm5hdGl2ZTsKICAgICAgICAgCisgICAgICAgIGludDMyX3Qg
bV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICAKICAgICAgICAgaW50MzJfdCBtX2ppdEV4
ZWN1dGVDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlU3VjY2Vzc0NvdW50
ZXI7CiAgICAgICAgIHVpbnQzMl90IG1fc3BlY3VsYXRpdmVGYWlsQ291bnRlcjsKICAgICAgICAg
dWludDhfdCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcjsKICAgICAgICAgdWludDhfdCBtX3Jl
b3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwotCisgICAgICAgIAogICAgICAgICBzdHJ1Y3QgUmFy
ZURhdGEgewogICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgcHVi
bGljOgpAQCAtMTI0Myw2ICsxMjgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVk
OgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSos
IFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAg
IHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
Y2FuQ29tcGlsZVdpdGhERkdJbnRlcm5hbCgpOwogI2VuZGlmCkBAIC0xMjc3LDYgKzEzMTgsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmpl
Y3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21w
aWxlSW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxh
Y2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGR0ludGVybmFs
KCk7CiAjZW5kaWYKQEAgLTEzMTQsNiArMTM1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHBy
b3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVj
U3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24o
KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwog
ICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVh
bCBib29sIGNhbkNvbXBpbGVXaXRoREZHSW50ZXJuYWwoKTsKICNlbmRpZgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNp
b24gMTA2MjkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMCArMjcsNDkgQEAKICNpbmNsdWRlICJHZXRC
eUlkU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMb3dMZXZl
bEludGVycHJldGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitHZXRCeUlkU3RhdHVzIEdldEJ5
SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBVTlVTRURfUEFS
QU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworICAg
IFVOVVNFRF9QQVJBTShpZGVudCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEluc3RydWN0aW9u
KiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBi
eXRlY29kZUluZGV4OworICAgIAorICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBs
bGludF9vcF9tZXRob2RfY2hlY2spCisgICAgICAgIGluc3RydWN0aW9uKys7CisKKyAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOworICAg
IGlmICghc3RydWN0dXJlKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAgICBzaXplX3Qg
b2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRl
bnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBHZXRCeUlk
U3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOwor
ICAgIAorICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZURpcmVjdCwgU3RydWN0dXJlU2V0
KHN0cnVjdHVyZSksIG9mZnNldCwgZmFsc2UpOworI2Vsc2UKKyAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyNl
bmRpZgorfQorCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJs
b2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBp
ZGVudCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BB
UkFNKGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5BQkxF
KEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9jay0+
bnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9t
TExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAgIC8v
IEZpcnN0IGNoZWNrIGlmIGl0IG1ha2VzIGVpdGhlciBjYWxscywgaW4gd2hpY2ggY2FzZSB3ZSB3
YW50IHRvIGJlIHN1cGVyIGNhcmVmdWwsIG9yCiAgICAgLy8gaWYgaXQncyBub3Qgc2V0IGF0IGFs
bCwgaW4gd2hpY2ggY2FzZSB3ZSBwdW50LgogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5m
byA9IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICgh
c3R1YkluZm8uc2VlbikKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlv
biwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9t
TExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgIAogICAgIFBv
bHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogbGlzdDsKICAgICBpbnQgbGlzdFNpemU7CkBA
IC02MCwxOCArODksMTkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9y
KAogICAgIH0KICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKICAgICAg
ICAgaWYgKCFsaXN0LT5saXN0W2ldLmlzRGlyZWN0KQotICAgICAgICAgICAgcmV0dXJuIEdldEJ5
SWRTdGF0dXMoTWFrZXNDYWxscywgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAg
ICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RG
b3VuZCwgdHJ1ZSk7CiAgICAgfQogICAgIAogICAgIC8vIE5leHQgY2hlY2sgaWYgaXQgdGFrZXMg
c2xvdyBjYXNlLCBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUga2luZCBvZiBjYXJlZnVsLgog
ICAgIGlmIChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4
KSkKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgU3RydWN0dXJl
U2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93
UGF0aCwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsKICAgICAKICAgICAvLyBGaW5h
bGx5IGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGRlcml2ZSBhbiBhY2Nlc3Mgc3RyYXRlZ3kuCiAgICAg
R2V0QnlJZFN0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fd2FzU2VlbkluSklUID0gdHJ1ZTsK
ICAgICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIGFjY2Vzc191bnNl
dDoKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJl
U2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmls
ZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAgICBjYXNlIGFjY2Vz
c19nZXRfYnlfaWRfc2VsZjogewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJ
bmZvLnUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKQEAgLTEzMCw3ICsx
NjAsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgCiAg
ICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlIC8vIEVOQUJMRShKSVQpCi0gICAgcmV0dXJuIEdldEJ5
SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICBy
ZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91
bmQsIGZhbHNlKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEwNjI5
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDEwICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAg
ICAKLSAgICBHZXRCeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0
cnVjdHVyZVNldCwgc2l6ZV90IG9mZnNldCkKKyAgICBHZXRCeUlkU3RhdHVzKFN0YXRlIHN0YXRl
LCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6ZV90IG9mZnNldCwgYm9vbCB3
YXNTZWVuSW5KSVQpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX3N0cnVj
dHVyZVNldChzdHJ1Y3R1cmVTZXQpCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICAg
ICAsIG1fd2FzU2VlbkluSklUKHdhc1NlZW5JbkpJVCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgo
c3RhdGUgPT0gU2ltcGxlRGlyZWN0KSA9PSAob2Zmc2V0ICE9IG5vdEZvdW5kKSk7CiAgICAgfQpA
QCAtNzAsMTAgKzcxLDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVj
dHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9CiAgICAgc2l6ZV90IG9m
ZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCisgICAgYm9vbCB3YXNTZWVu
SW5KSVQoKSBjb25zdCB7IHJldHVybiBtX3dhc1NlZW5JbkpJVDsgfQorICAgIAogcHJpdmF0ZToK
KyAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKICAgICBTdGF0ZSBtX3N0
YXRlOwogICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKICAgICBzaXplX3QgbV9vZmZz
ZXQ7CisgICAgYm9vbCBtX3dhc1NlZW5JbkpJVDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHJl
dmlzaW9uIDEwNjI5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVj
dGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIGNsYXNzIEpTQ2VsbDsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgY2xhc3MgU3RydWN0
dXJlQ2hhaW47CisgICAgc3RydWN0IExMSW50Q2FsbExpbmtJbmZvOwogICAgIHN0cnVjdCBWYWx1
ZVByb2ZpbGU7CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTQ2LDYgKzE0NywxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICNlbmRpZgogCiAgICAgc3RydWN0IEluc3RydWN0aW9uIHsKKyAgICAgICAgSW5z
dHJ1Y3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB1LmpzQ2VsbC5jbGVhcigpOworICAg
ICAgICB9CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihPcGNvZGUgb3Bjb2RlKQogICAg
ICAgICB7CiAjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQpAQCAtMTgyLDYg
KzE4OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEluc3RydWN0aW9uKFByb3BlcnR5
U2xvdDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1bmMpIHsgdS5nZXR0ZXJGdW5jID0gZ2V0dGVyRnVu
YzsgfQogICAgICAgICAKKyAgICAgICAgSW5zdHJ1Y3Rpb24oTExJbnRDYWxsTGlua0luZm8qIGNh
bGxMaW5rSW5mbykgeyB1LmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsgfQorICAgICAgICAK
ICAgICAgICAgSW5zdHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBwcm9maWxlKSB7IHUucHJvZmlsZSA9
IHByb2ZpbGU7IH0KIAogICAgICAgICB1bmlvbiB7CkBAIC0xOTEsNyArMTk5LDkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBz
dHJ1Y3R1cmVDaGFpbjsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8SlNDZWxsPiBqc0Nl
bGw7CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jOwor
ICAgICAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbzsKICAgICAgICAgICAg
IFZhbHVlUHJvZmlsZSogcHJvZmlsZTsKKyAgICAgICAgICAgIHZvaWQqIHBvaW50ZXI7CiAgICAg
ICAgIH0gdTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENhbGxMaW5rSW5mb19oCisjZGVmaW5lIExM
SW50Q2FsbExpbmtJbmZvX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJN
YWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0
Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK3N0cnVjdCBM
TEludENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxM
aW5rSW5mbz4geworICAgIExMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAgfQorICAgIAor
ICAgIH5MTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgICAgICBpZiAoaXNPbkxpc3QoKSkK
KyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzTGlua2VkKCkg
eyByZXR1cm4gY2FsbGVlOyB9CisgICAgCisgICAgdm9pZCB1bmxpbmsoKQorICAgIHsKKyAgICAg
ICAgY2FsbGVlLmNsZWFyKCk7CisgICAgICAgIG1hY2hpbmVDb2RlVGFyZ2V0ID0gTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyKCk7CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAgICAgcmVt
b3ZlKCk7CisgICAgfQorICAgIAorICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxsZWU7
CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGxhc3RTZWVuQ2FsbGVlOworICAgIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciBtYWNoaW5lQ29kZVRhcmdldDsKK307CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCisjZW5kaWYgLy8gTExJbnRDYWxsTGlua0luZm9faAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5j
cHAJKHJldmlzaW9uIDEwNjI5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9N
ZXRob2RDYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDExIEBA
IE1ldGhvZENhbGxMaW5rU3RhdHVzIE1ldGhvZENhbGxMaW5rU3RhdHUKICAgICBVTlVTRURfUEFS
QU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lm
IEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAvLyBOT1RFOiBUaGlz
IGRvZXMgbm90IGhhdmUgYW4gTExJbnQgZmFsbC1iYWNrIGJlY2F1c2UgTExJbnQgZG9lcyBub3Qg
ZG8gYW55IG1ldGhvZAorICAgIC8vIGNhbGwgbGluayBjYWNoaW5nLgorICAgIGlmICghcHJvZmls
ZWRCbG9jay0+bnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKCkpCisgICAgICAgIHJldHVybiBN
ZXRob2RDYWxsTGlua1N0YXR1cygpOworICAgIAogICAgIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0
aG9kQ2FsbCA9IHByb2ZpbGVkQmxvY2stPmdldE1ldGhvZENhbGxMaW5rSW5mbyhieXRlY29kZUlu
ZGV4KTsKICAgICAKICAgICBpZiAoIW1ldGhvZENhbGwuc2VlbiB8fCAhbWV0aG9kQ2FsbC5jYWNo
ZWRTdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2Rl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5o
CShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bj
b2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgsIDQpIFwKICAgICAgICAgbWFj
cm8ob3BfcHV0X2J5X2lkLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uLCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwg
OSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwK
ICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8o
b3BfcHV0X2J5X2lkX2dlbmVyaWMsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0
KSBcCkBAIC0yMDEsNiArMjAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYg
ZW51bSB7IEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfSURfRU5VTSkgfSBPcGNvZGVJRDsKICAg
ICAjdW5kZWYgT1BDT0RFX0lEX0VOVU0KIAorICAgIGNvbnN0IGludCBtYXhPcGNvZGVMZW5ndGgg
PSA5OwogICAgIGNvbnN0IGludCBudW1PcGNvZGVJRHMgPSBvcF9lbmQgKyAxOwogCiAgICAgI2Rl
ZmluZSBPUENPREVfSURfTEVOR1RIUyhpZCwgbGVuZ3RoKSBjb25zdCBpbnQgaWQjI19sZW5ndGgg
PSBsZW5ndGg7CkBAIC0yMTcsNyArMjIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZP
Ul9FQUNIX09QQ09ERV9JRChWRVJJRllfT1BDT0RFX0lEKTsKICAgICAjdW5kZWYgVkVSSUZZX09Q
Q09ERV9JRAogCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICNpZiBDT01Q
SUxFUihSVkNUKSB8fCBDT01QSUxFUihJTlRFTCkKICAgICB0eXBlZGVmIHZvaWQqIE9wY29kZTsK
ICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDI3ICsyNyw2
OSBAQAogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUu
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorUHV0
QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7
CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRl
Y29kZUluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkK
KyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUp
CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5v
dEZvdW5kKTsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRf
b3BfcHV0X2J5X2lkKSB7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgq
cHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgICAgIGlmIChvZmZzZXQg
PT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhTaW1wbGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9mZnNldCk7CisgICAgfQor
ICAgIAorICAgIEFTU0VSVChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5v
cGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAKKyAg
ICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdl
dCgpOworICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IGluc3RydWN0aW9uWzddLnUuc3RydWN0
dXJlQ2hhaW4uZ2V0KCk7CisgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7CisgICAgQVNTRVJUKGNo
YWluKTsKKyAgICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5nZXQoKnByb2Zp
bGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91
bmQpCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAs
IG5vdEZvdW5kKTsKKyAgICAKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVUcmFuc2l0
aW9uLCBzdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY2hhaW4sIG9mZnNldCk7CisjZWxzZQorICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsK
KyNlbmRpZgorfQorCiBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29k
ZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVy
JiBpZGVudCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VE
X1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5B
QkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9j
ay0+bnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVG
cm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAg
IGlmIChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkK
ICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90
Rm91bmQpOwogICAgIAogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVk
QmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1YkluZm8uc2Vl
bikKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwg
bm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2Nr
LCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgCiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nl
c3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlk
U3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJu
IGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwog
ICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTogewogICAgICAgICBz
aXplX3Qgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0
dXJlLT5nZXQoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmgJKHJldmlzaW9uIDEwNjI5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDggQEAg
cHVibGljOgogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQog
ICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50
KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAK
ICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAg
U3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lv
biAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUg
IkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5o
IgogI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAj
aW5jbHVkZSAiVVN0cmluZy5oIgpAQCAtMTE2LDI2ICsxMTcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgZXhwZWN0ZWQgYnkgdGhlIGNhbGxlZS4KICovCiAKLSNpZm5kZWYgTkRFQlVHCiBzdGF0
aWMgYm9vbCBzX2R1bXBzR2VuZXJhdGVkQ29kZSA9IGZhbHNlOwotI2VuZGlmCiAKIHZvaWQgQnl0
ZWNvZGVHZW5lcmF0b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZShib29sIGR1bXBzR2VuZXJhdGVk
Q29kZSkKIHsKLSNpZm5kZWYgTkRFQlVHCiAgICAgc19kdW1wc0dlbmVyYXRlZENvZGUgPSBkdW1w
c0dlbmVyYXRlZENvZGU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkdW1wc0dlbmVyYXRlZENv
ZGUpOwotI2VuZGlmCiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVk
Q29kZSgpCiB7Ci0jaWZuZGVmIE5ERUJVRwogICAgIHJldHVybiBzX2R1bXBzR2VuZXJhdGVkQ29k
ZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAKIEpTT2JqZWN0KiBCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQpAQCAtMTQ4LDEwICsxMzksOCBAQCBKU09iamVjdCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKIAogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0
cnVjdGlvbkNvdW50KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogCi0jaWZu
ZGVmIE5ERUJVRwogICAgIGlmIChzX2R1bXBzR2VuZXJhdGVkQ29kZSkKICAgICAgICAgbV9jb2Rl
QmxvY2stPmR1bXAobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7Ci0j
ZW5kaWYKIAogICAgIGlmICgobV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNvZGUgJiYgIW1fY29kZUJs
b2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgJiYgIW1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRz
KCkpIHx8IG1fY29kZVR5cGUgPT0gRXZhbENvZGUpCiAgICAgICAgIHN5bWJvbFRhYmxlKCkuY2xl
YXIoKTsKQEAgLTEyNzYsOSArMTI2NSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xv
YmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJM
RShJTlRFUlBSRVRFUikKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgICAgIFZhbHVlUHJv
ZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShyZXF1aXJlc0R5bmFtaWNDaGVja3Mg
PyBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDQwLDkgKzE0MjcsNyBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9j
ay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0j
ZW5kaWYKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUocmVx
dWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29s
dmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0x
NDkwLDkgKzE0NzUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29s
CiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8o
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikK
ICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9u
cygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJv
ZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJv
cERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHBy
b3BlcnR5KSk7CkBAIC0xNTExLDkgKzE0OTQsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0TWV0aG9kQ2hlY2soCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0
QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5KQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+
YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2Vu
ZGlmCiAKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3Bf
Z2V0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKQEAg
LTE1MzksOSArMTUyMCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0
QXIKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVy
SUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkK
IHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAg
ZW1pdE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNl
LT5pbmRleCgpKTsKQEAgLTE1NTcsOSArMTUzNiw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UHV0QnkKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRE
aXJlY3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9j
b2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKTsKLSNlbmRpZgogICAgIAogICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBAIC0xODM5LDcgKzE4MTYsMTEg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKAogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBh
cmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVy
T2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOwor
I2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAg
ICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxf
cHV0X3Jlc3VsdCk7CkBAIC0xOTQzLDcgKzE5MjQsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRDb25zdAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRl
eCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9m
ZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2Rl
QmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAg
aWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9m
aWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0yMjA0LDcg
KzIxODksMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaAogewog
ICAgIG1fdXNlc0V4Y2VwdGlvbnMgPSB0cnVlOwogI2lmIEVOQUJMRShKSVQpCisjaWYgRU5BQkxF
KExMSU5UKQorICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQt
PmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCAr
IG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X29wX2NhdGNoKSkgfTsKKyNlbHNlCiAgICAgSGFuZGxlckluZm8gaW5mbyA9IHsgc3Rh
cnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBt
X2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0aW9uTGFiZWwo
KSB9OworI2VuZGlmCiAjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5k
KDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWlj
U2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGggfTsKICNlbmRpZgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDEw
NjI5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MDQsOSArNjA0LDcgQEAgcHJpdmF0ZToKICAgICB7CiAgICAg
ICAgIFVOVVNFRF9QQVJBTShub2RlSW5kZXgpOwogICAgICAgICAKLSAgICAgICAgVmFsdWVQcm9m
aWxlKiBwcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT52YWx1ZVBy
b2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsKLSAgICAgICAgQVNTRVJUKHBy
b2ZpbGUpOwotICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBwcm9maWxlLT5jb21w
dXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9u
ID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0
aW9uRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAjaWYgREZHX0VOQUJMRShERUJV
R19WRVJCT1NFKQogICAgICAgICBwcmludGYoIkR5bmFtaWMgW0AldSwgYmMjJXVdIHByZWRpY3Rp
b246ICVzXG4iLCBub2RlSW5kZXgsIGJ5dGVjb2RlSW5kZXgsIHByZWRpY3Rpb25Ub1N0cmluZyhw
cmVkaWN0aW9uKSk7CiAjZW5kaWYKQEAgLTEwNDEsNiArMTAzOSw5IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKGJvb2wKICAgICAKICAgICAvLyBJZiB3ZSBnZXQgaGVyZSB0
aGVuIGl0IGxvb2tzIGxpa2Ugd2Ugc2hvdWxkIGRlZmluaXRlbHkgaW5saW5lIHRoaXMgY29kZS4g
UHJvY2VlZAogICAgIC8vIHdpdGggcGFyc2luZyB0aGUgY29kZSB0byBnZXQgYnl0ZWNvZGUsIHNv
IHRoYXQgd2UgY2FuIHRoZW4gcGFyc2UgdGhlIGJ5dGVjb2RlLgorICAgIC8vIE5vdGUgdGhhdCBp
ZiBMTEludCBpcyBlbmFibGVkLCB0aGUgYnl0ZWNvZGUgd2lsbCBhbHdheXMgYmUgYXZhaWxhYmxl
LiBBbHNvIG5vdGUKKyAgICAvLyB0aGF0IGlmIExMSW50IGlzIGVuYWJsZWQsIHdlIG1heSBpbmxp
bmUgYSBjb2RlIGJsb2NrIHRoYXQgaGFzIG5ldmVyIGJlZW4gSklUdGVkCisgICAgLy8gYmVmb3Jl
IQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2tDYWNoZS5nZXQoQ29kZUJs
b2NrS2V5KGV4ZWN1dGFibGUsIGtpbmQpLCBleHBlY3RlZEZ1bmN0aW9uLT5zY29wZSgpKTsKICAg
ICBpZiAoIWNvZGVCbG9jaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTc0MSw3ICsxNzQy
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9jdXJyZW50SW5kZXgp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobWV0aG9kQ2FsbFN0YXR1cy5pc1NldCgp
Ci0gICAgICAgICAgICAgICAgJiYgIWdldEJ5SWRTdGF0dXMuaXNTZXQoKQorICAgICAgICAgICAg
ICAgICYmICFnZXRCeUlkU3RhdHVzLndhc1NlZW5JbkpJVCgpCiAgICAgICAgICAgICAgICAgJiYg
IW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5k
ZXgsIEJhZENhY2hlKSkgewogICAgICAgICAgICAgICAgIC8vIEl0J3MgbW9ub21vcnBoaWMgYXMg
ZmFyIGFzIHdlIGNhbiB0ZWxsLCBzaW5jZSB0aGUgbWV0aG9kX2NoZWNrIHdhcyBsaW5rZWQKICAg
ICAgICAgICAgICAgICAvLyBidXQgdGhlIHNsb3cgcGF0aCAoaS5lLiB0aGUgbm9ybWFsIGdldF9i
eV9pZCkgbmV2ZXIgZmlyZWQuCkBAIC0xODEwLDcgKzE4MTEsOSBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dl
dF9ieV9pZCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6IHsKKyAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDog
ewogICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZF07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDEwNjI5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw2ICsxMTEs
OCBAQCBpbmxpbmUgYm9vbCBjYW5Db21waWxlT3Bjb2RlKE9wY29kZUlEIG9wCiAgICAgY2FzZSBv
cF9wdXRfc2NvcGVkX3ZhcjoKICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICBjYXNlIG9wX3B1
dF9ieV9pZDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNlIG9wX2dldF9nbG9i
YWxfdmFyOgogICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6CiAgICAgY2FzZSBvcF9qbXA6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIu
Y3BwCShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDIxIEBAIHZvaWQg
Y29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQogICAgIHVpbnQzMl90IGV4aXRJbmRleCA9
IGdsb2JhbERhdGEtPm9zckV4aXRJbmRleDsKICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2Nr
LT5vc3JFeGl0KGV4aXRJbmRleCk7CiAgICAgCisgICAgLy8gTWFrZSBzdXJlIGFsbCBjb2RlIG9u
IG91ciBpbmxpbmUgc3RhY2sgaXMgSklUIGNvbXBpbGVkLiBUaGlzIGlzIG5lY2Vzc2FyeSBzaW5j
ZQorICAgIC8vIHdlIG1heSBvcHQgdG8gaW5saW5lIGEgY29kZSBibG9jayBldmVuIGJlZm9yZSBp
dCBoYWQgZXZlciBiZWVuIGNvbXBpbGVkIGJ5IHRoZQorICAgIC8vIEpJVCwgYnV0IG91ciBPU1Ig
ZXhpdCBpbmZyYXN0cnVjdHVyZSBjdXJyZW50bHkgb25seSB3b3JrcyBpZiB0aGUgdGFyZ2V0IG9m
IHRoZQorICAgIC8vIE9TUiBleGl0IGlzIEpJVCBjb2RlLiBUaGlzIGNvdWxkIGJlIGNoYW5nZWQg
c2luY2UgdGhlcmUgaXMgbm90aGluZyBwYXJ0aWN1bGFybHkKKyAgICAvLyBoYXJkIGFib3V0IGRv
aW5nIGFuIE9TUiBleGl0IGludG8gdGhlIGludGVycHJldGVyLCBidXQgZm9yIG5vdyB0aGlzIHNl
ZW1zIHRvIG1ha2UKKyAgICAvLyBzZW5zZSBpbiB0aGF0IGlmIHdlJ3JlIE9TUiBleGl0aW5nIGZy
b20gaW5saW5lZCBjb2RlIG9mIGEgREZHIGNvZGUgYmxvY2ssIHRoZW4KKyAgICAvLyBwcm9iYWJs
eSBpdCdzIGEgZ29vZCBzaWduIHRoYXQgdGhlIHRoaW5nIHdlJ3JlIGV4aXRpbmcgaW50byBpcyBo
b3QuIEV2ZW4gbW9yZQorICAgIC8vIGludGVyZXN0aW5nbHksIHNpbmNlIHRoZSBjb2RlIHdhcyBp
bmxpbmVkLCBpdCBtYXkgbmV2ZXIgb3RoZXJ3aXNlIGdldCBKSVQKKyAgICAvLyBjb21waWxlZCBz
aW5jZSB0aGUgYWN0IG9mIGlubGluaW5nIGl0IG1heSBlbnN1cmUgdGhhdCBpdCBvdGhlcndpc2Ug
bmV2ZXIgcnVucy4KKyAgICBmb3IgKENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2Rl
T3JpZ2luOyBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsgY29kZU9yaWdpbiA9IGNvZGVPcmln
aW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4oY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0
KCkpCisgICAgICAgICAgICAtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lLT5pc0NhbGwgPyBDb2RlRm9yQ2FsbCA6IENvZGVGb3JDb25zdHJ1Y3QpCisgICAg
ICAgICAgICAtPmppdENvbXBpbGUoKmdsb2JhbERhdGEpOworICAgIH0KKyAgICAKICAgICBTcGVj
dWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeSA9IDA7CiAgICAgaWYgKGV4aXQubV9yZWNvdmVyeUlu
ZGV4KQogICAgICAgICByZWNvdmVyeSA9ICZjb2RlQmxvY2stPnNwZWN1bGF0aW9uUmVjb3Zlcnko
ZXhpdC5tX3JlY292ZXJ5SW5kZXggLSAxKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTA2MjkxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIK
ICNpbmNsdWRlICJERkdSZXBhdGNoLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5o
IgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIklubGluZUFTTS5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC02NzMsNTAgKzY3NCw2IEBAIHNpemVfdCBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHIKICAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1
YWwoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMikpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUoKTsKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7Ci0KLSNpZiBDUFUoWDg2XzY0KQot
YXNtICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJc
biIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJ
TkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglcjEzKSwg
JXIxM1xuIgotICAgICJtb3YgJXIxMywgJXJkaVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RSSU5H
X1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7
Ci0jZWxpZiBDUFUoWDg2KQotYXNtICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAg
ICAibW92IC00MCglZWRpKSwgJWVkaVxuIgotICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgotICAg
ICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdp
dGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikKLWFzbSAoCi0iLnRl
eHQiICJcbiIKLSIuYWxpZ24gMiIgIlxuIgotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIlxuIgotIi50aHVtYiIgIlxuIgotIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgotICAgICJj
cHkgcjAsIHI1IiAiXG4iCi0gICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZW5kaWYKLQotRW5jb2Rl
ZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0
ZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4
ZWMtPmdsb2JhbERhdGEoKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2Jh
bERhdGEsIGV4ZWMpOwotICAgIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xv
YmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQotCiBzdGF0aWMgdm9pZCogaGFuZGxl
SG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUt
PmNhbGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2
aXNpb24gMTA2MjkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgzNyw3ICs4MzcsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBU
b2dnbGUgc3dlZXBUb2dnCiAgICAgICAgIHNldEhpZ2hXYXRlck1hcmsobWF4KHByb3BvcnRpb25h
bEJ5dGVzLCBtX21pbkJ5dGVzUGVyQ3ljbGUpKTsKICAgICB9CiAgICAgSkFWQVNDUklQVENPUkVf
R0NfRU5EKCk7Ci0KKyAgICAKICAgICAoKm1fYWN0aXZpdHlDYWxsYmFjaykoKTsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTA2MjkxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBK
U1ZhbHVlOwogICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXI7CiAgICAgY2xh
c3MgUmVnaXN0ZXJGaWxlOwogICAgIGNsYXNzIFVTdHJpbmc7CkBAIC0xMzUsMTEgKzEzNiwxMiBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJv
b3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZy
aWVuZCBjbGFzcyBDb2RlQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRTcGFjZTsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQnVtcFNwYWNlOwog
ICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBD
b2RlQmxvY2s7CiAKICAgICAgICAgc2l6ZV90IHdhdGVyTWFyaygpOwogICAgICAgICBzaXplX3Qg
aGlnaFdhdGVyTWFyaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0
YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3Rh
Y2suY3BwCShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNyArMzA0LDcgQEAgQUxXQVlTX0lO
TElORSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKAogI2VuZGlmCiAKICAgICBBU1NFUlQoSGVh
cDo6aXNNYXJrZWQoY2VsbCkpOwotCisgICAgCiAgICAgaWYgKGlzSlNTdHJpbmcoY2VsbCkpIHsK
ICAgICAgICAgSlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4oY29uc3RfY2FzdDxKU0NlbGwqPihjZWxs
KSwgdmlzaXRvcik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMTA2MjkxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEhlYXA7CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBMaXZl
T2JqZWN0SXRlcmF0b3I7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBXZWFr
R0NIYW5kbGU7CiBjbGFzcyBTbG90VmlzaXRvcjsKIApAQCAtODcsNiArODgsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBmcmVlQmxvY2tzKE1hcmtlZEJsb2NrKiBoZWFkKTsKIAogcHJpdmF0ZToKKyAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAgIHZvaWQqIGFs
bG9jYXRlU2xvd0Nhc2UoU2l6ZUNsYXNzJik7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVIZWxwZXIo
TWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlKE1hcmtlZFNw
YWNlOjpTaXplQ2xhc3MmKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDEwNjI5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEy
Miw5IEBAIG5hbWVzcGFjZSBKU0MgIHsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAg
IEluc3RydWN0aW9uKiByZXR1cm5WUEMoKSBjb25zdCB7IHJldHVybiB0aGlzW1JlZ2lzdGVyRmls
ZTo6UmV0dXJuUENdLnZQQygpOyB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAg
IEluc3RydWN0aW9uKiBjdXJyZW50VlBDKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PElu
c3RydWN0aW9uKj4odGhpc1tSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnRdLnRhZygpKTsgfQor
I2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXRDYWxsZXJGcmFtZShDYWxsRnJhbWUqIGNhbGxlckZy
YW1lKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpDYWxsZXJG
cmFtZV0gPSBjYWxsZXJGcmFtZTsgfQogICAgICAgICB2b2lkIHNldFNjb3BlQ2hhaW4oU2NvcGVD
aGFpbk5vZGUqIHNjb3BlQ2hhaW4pIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdp
c3RlckZpbGU6OlNjb3BlQ2hhaW5dID0gc2NvcGVDaGFpbjsgfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAx
MDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAj
ZW5kaWYKIAotI2RlZmluZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQgKEVO
QUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSAmJiAhZGVmaW5lZChfX2xsdm1fXykpCisj
ZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAoKEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpKSAmJiAhZGVmaW5lZChfX2xs
dm1fXykpCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTU0NywxNyArNTQ3LDQzIEBAIElu
dGVycHJldGVyOjpJbnRlcnByZXRlcigpCiB7CiB9CiAKLXZvaWQgSW50ZXJwcmV0ZXI6OmluaXRp
YWxpemUoYm9vbCBjYW5Vc2VKSVQpCitJbnRlcnByZXRlcjo6fkludGVycHJldGVyKCkKIHsKLSNp
ZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgaWYgKG1fZW5hYmxlZCkKKyAgICAgICAgZGVsZXRlW10gbV9vcGNvZGVUYWJsZTsKKyNlbmRp
ZgorfQorCit2b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKExMSW50OjpEYXRhKiBsbGludERh
dGEsIGJvb2wgY2FuVXNlSklUKQoreworICAgIFVOVVNFRF9QQVJBTShsbGludERhdGEpOworICAg
IFVOVVNFRF9QQVJBTShjYW5Vc2VKSVQpOworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVS
UFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVS
UFJFVEVSKQorICAgIC8vIEhhdmluZyBMTEludCBlbmFibGVkLCBidXQgbm90IGJlaW5nIGFibGUg
dG8gdXNlIHRoZSBKSVQsIGFuZCBub3QgaGF2aW5nCisgICAgLy8gYSBjb21wdXRlZCBnb3RvIGlu
dGVycHJldGVyLCBpcyBub3Qgc3VwcG9ydGVkLiBOb3QgYmVjYXVzZSB3ZSBjYW5ub3QKKyAgICAv
LyBzdXBwb3J0IGl0LCBidXQgYmVjYXVzZSBJIGRlY2lkZWQgdG8gZHJhdyB0aGUgbGluZSBhdCB0
aGUgbnVtYmVyIG9mCisgICAgLy8gcGVybXV0YXRpb25zIG9mIGV4ZWN1dGlvbiBlbmdpbmVzIHRo
YXQgSSB3YW50ZWQgdGhpcyBjb2RlIHRvIGdyb2suCisgICAgQVNTRVJUKGNhblVzZUpJVCk7Cisj
ZW5kaWYKICAgICBpZiAoY2FuVXNlSklUKSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBt
X29wY29kZVRhYmxlID0gbGxpbnREYXRhLT5vcGNvZGVNYXAoKTsKKyAgICAgICAgZm9yIChpbnQg
aSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKKyAgICAgICAgICAgIG1fb3Bjb2RlSURUYWJs
ZS5hZGQobV9vcGNvZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsKKyNlbHNl
CiAgICAgICAgIC8vIElmIHRoZSBKSVQgaXMgcHJlc2VudCwgZG9uJ3QgdXNlIGp1bXAgZGVzdGlu
YXRpb25zIGZvciBvcGNvZGVzLgogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBudW1PcGNvZGVJRHM7ICsraSkgewogICAgICAgICAgICAgT3Bjb2RlIG9wY29kZSA9IGJpdHdp
c2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihpKSk7CiAgICAgICAgICAgICBt
X29wY29kZVRhYmxlW2ldID0gb3Bjb2RlOwogICAgICAgICB9CisjZW5kaWYKICAgICB9IGVsc2Ug
eworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJsZSA9IG5ldyBPcGNvZGVb
bnVtT3Bjb2RlSURzXTsKKyNlbmRpZgogICAgICAgICBwcml2YXRlRXhlY3V0ZShJbml0aWFsaXpl
QW5kUmV0dXJuLCAwLCAwKTsKICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtT3Bjb2RlSURzOyArK2kpCkBAIC01NjYsNyArNTkyLDYgQEAgdm9pZCBJbnRlcnByZXRlcjo6
aW5pdGlhbGl6ZShib29sIGNhblVzZQogICAgICAgICBtX2VuYWJsZWQgPSB0cnVlOwogICAgIH0K
ICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNhblVzZUpJVCk7CiAjaWYgRU5BQkxFKElOVEVSUFJF
VEVSKQogICAgIG1fZW5hYmxlZCA9IHRydWU7CiAjZWxzZQpAQCAtNjY3LDkgKzY5MiwxMSBAQCB2
b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtCiAKIGJvb2wgSW50ZXJwcmV0
ZXI6OmlzT3Bjb2RlKE9wY29kZSBvcGNvZGUpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
SU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVO
QUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKExMSU5UKQogICAgIGlmICghbV9lbmFibGVkKQogICAg
ICAgICByZXR1cm4gb3Bjb2RlID49IDAgJiYgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2Vf
Y2FzdDx1aW50cHRyX3Q+KG9wY29kZSkpIDw9IG9wX2VuZDsKKyNlbmRpZgogICAgIHJldHVybiBv
cGNvZGUgIT0gSGFzaFRyYWl0czxPcGNvZGU+OjplbXB0eVZhbHVlKCkKICAgICAgICAgJiYgIUhh
c2hUcmFpdHM8T3Bjb2RlPjo6aXNEZWxldGVkVmFsdWUob3Bjb2RlKQogICAgICAgICAmJiBtX29w
Y29kZUlEVGFibGUuY29udGFpbnMob3Bjb2RlKTsKQEAgLTcyNiwxMSArNzUzLDExIEBAIE5FVkVS
X0lOTElORSBib29sIEludGVycHJldGVyOjp1bndpbmRDYWwKICAgICAvLyBoYXZlIHRvIHN1YnRy
YWN0IDEuCiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIGlmIChj
YWxsZXJGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQotICAgICAgICBieXRlY29kZU9m
ZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsK
KyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxl
ckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogICAgIGVsc2UKICAgICAgICAgYnl0ZWNv
ZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBD
KCkpIC0gMTsKICNlbGlmIEVOQUJMRShKSVQpCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVP
ZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUt
PnJldHVyblBDKCkpOwogI2Vsc2UKICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0
ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAxOwogI2VuZGlmCkBAIC01MTU3
LDEwICs1MTg0LDEwIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcihDYWwK
ICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0
KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpOwogI2lmIEVOQUJMRShKSVQpCiAgICAgZWxzZQotICAg
ICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2Fs
bEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2Rl
QmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkp
OwogI2VuZGlmCiAjZWxzZQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5i
eXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1l
LT5yZXR1cm5QQygpKTsKICNlbmRpZgogICAgIGxpbmVOdW1iZXIgPSBjYWxsZXJDb2RlQmxvY2st
PmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCAtIDEpOwogICAgIHNv
dXJjZUlEID0gY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5oCShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIkpTQ2VsbC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5o
IgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUg
IlJlZ2lzdGVyRmlsZS5oIgogCkBAIC00NSw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNs
YXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFz
cyBTY29wZUNoYWluTm9kZTsKQEAgLTEwMCwxOSArMTAyLDIxIEBAIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hl
ZENhbGw7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgogICAgICAgICBJbnRlcnByZXRlcigp
OworICAgICAgICB+SW50ZXJwcmV0ZXIoKTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgaW5pdGlh
bGl6ZShib29sIGNhblVzZUpJVCk7CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZShMTEludDo6RGF0
YSosIGJvb2wgY2FuVXNlSklUKTsKIAogICAgICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmls
ZSgpIHsgcmV0dXJuIG1fcmVnaXN0ZXJGaWxlOyB9CiAgICAgICAgIAogICAgICAgICBPcGNvZGUg
Z2V0T3Bjb2RlKE9wY29kZUlEIGlkKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9p
bml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICAgICAg
ICAgICAgIHJldHVybiBtX29wY29kZVRhYmxlW2lkXTsKICNlbHNlCiAgICAgICAgICAgICByZXR1
cm4gaWQ7CkBAIC0xMjIsNyArMTI2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPcGNv
ZGVJRCBnZXRPcGNvZGVJRChPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBB
U1NFUlQobV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVU
RVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29k
ZSkpOworICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKKyNl
bGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgQVNTRVJU
KGlzT3Bjb2RlKG9wY29kZSkpOwogICAgICAgICAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihvcGNvZGUpKTsKQEAgLTEzMiw2ICsxMzksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICByZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGJvb2wgZW5hYmxlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2VuYWJs
ZWQ7CisgICAgICAgIH0KIAogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKQEAgLTE5
OSw3ICsyMTEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlIG1f
cmVnaXN0ZXJGaWxlOwogICAgICAgICAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBS
RVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIE9wY29kZSogbV9vcGNvZGVUYWJsZTsg
Ly8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZworICAgICAgICBIYXNoTWFw
PE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bj
b2RlSUQgZm9yIGRlY29tcGlsaW5nCisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBS
RVRFUikKICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2RlSURzXTsgLy8gTWFw
cyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBIYXNoTWFwPE9wY29k
ZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQg
Zm9yIGRlY29tcGlsaW5nCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9SZWdpc3RlckZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHJldmlzaW9uIDEwNjI5MSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkod29ya2luZyBjb3B5
KQpAQCAtMzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnNlcnZh
dGl2ZVJvb3RzOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlIHsKICAgICAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoUmVnaXN0ZXJGaWxlKTsKQEAgLTgxLDYgKzgyLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGdyb3dTbG93Q2Fz
ZShSZWdpc3RlciopOwogICAgICAgICB2b2lkIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwogICAg
ICAgICB2b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSG9z
dENhbGxSZXR1cm5WYWx1ZS5oIgorCisjaWYgQ09NUElMRVIoR0NDKQorCisjaW5jbHVkZSAiQ2Fs
bEZyYW1lLmgiCisjaW5jbHVkZSAiSW5saW5lQVNNLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIK
KyNpbmNsdWRlICJKU1ZhbHVlSW5saW5lTWV0aG9kcy5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4u
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9D
QUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3Rh
dGUoRXhlY1N0YXRlKik7CisKKyNpZiBDUFUoWDg2XzY0KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1C
T0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lNQk9MKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgorICAgICJtb3YgJXIx
MywgJXJkaVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUoWDg2KQorYXNt
ICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIK
K0hJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkco
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglZWRpKSwgJWVk
aVxuIgorICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5H
X1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7
CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKK2FzbSAoCisiLnRleHQiICJcbiIKKyIuYWxpZ24gMiIg
IlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxu
IgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorIi50aHVtYiIgIlxu
IgorIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisg
ICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgorICAgICJjcHkgcjAsIHI1IiAiXG4iCisgICAg
ImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhF
eGVjU3RhdGUpICJcbiIKKyk7CisjZW5kaWYKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBI
T1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4
ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShl
eGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQworCisjZW5kaWYgLy8gQ09NUElMRVIoR0NDKQorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisjZGVmaW5lIEhvc3RD
YWxsUmV0dXJuVmFsdWVfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisvLyBVbmZv
cnR1bmF0ZWx5IHRoaXMgb25seSB3b3JrcyBvbiBHQ0MtbGlrZSBjb21waWxlcnMuIEFuZCBpdCdz
IGN1cnJlbnRseSBvbmx5IHVzZWQKKy8vIGJ5IExMSW50IGFuZCBERkcsIHdoaWNoIGFsc28gYXJl
IHJlc3RyaWN0ZWQgdG8gR0NDLWxpa2UgY29tcGlsZXJzLiBXZSBzaG91bGQKKy8vIHByb2JhYmx5
IGZpeCB0aGF0IGF0IHNvbWUgcG9pbnQuCisjaWYgQ09NUElMRVIoR0NDKQorCisjaWYgQ0FMTElO
R19DT05WRU5USU9OX0lTX1NURENBTEwKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9P
UFRJT04gQ0RFQ0wKKyNlbHNlCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9O
CisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhP
U1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKK30K
KworI2VuZGlmIC8vIENPTVBJTEVSKEdDQykKKworI2VuZGlmIC8vIEhvc3RDYWxsUmV0dXJuVmFs
dWVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMDYyOTEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyNSw2ICszMjUsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAg
ICAgIERFRklORV9PUChvcF9wcm9maWxlX3dpbGxfY2FsbCkKICAgICAgICAgREVGSU5FX09QKG9w
X3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9zY29wZSkKKyAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5
X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2luZGV4KQogICAgICAgICBERUZJTkVf
T1Aob3BfcHV0X2J5X3ZhbCkKQEAgLTQ4Niw2ICs0ODgsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcG9zdF9pbmMp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVfZGVjKQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfcHJlX2luYykKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
OgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3Jlc29sdmVfZ2xvYmFsKQpAQCAtNTI1LDYgKzUyOSwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0
ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2spCiB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09T
UikKKyAgICBwcmludGYoIkNvbXBpbGluZyBKSVQgY29kZSFcbiIpOworI2VuZGlmCisgICAgCiAj
aWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogICAgIG1fY2FuQmVPcHRpbWl6ZWQgPSBtX2NvZGVC
bG9jay0+Y2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtNjg5LDggKzY5NywxMiBAQCBK
SVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAgICAgICAgIGluZm8uY2Fs
bFJldHVybkxvY2F0aW9uID0gbV9jb2RlQmxvY2stPnN0cnVjdHVyZVN0dWJJbmZvKG1fbWV0aG9k
Q2FsbENvbXBpbGF0aW9uSW5mb1tpXS5wcm9wZXJ0eUFjY2Vzc0luZGV4KS5jYWxsUmV0dXJuTG9j
YXRpb247CiAgICAgfQogCi0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgaWYgKG1fY2FuQmVPcHRp
bWl6ZWQpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQorICAgIGlmICht
X2NhbkJlT3B0aW1pemVkCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICB8fCB0cnVlCisjZW5k
aWYKKyAgICAgICAgKSB7CiAgICAgICAgIENvbXBhY3RKSVRDb2RlTWFwOjpFbmNvZGVyIGppdENv
ZGVNYXBFbmNvZGVyOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsg
Ynl0ZWNvZGVPZmZzZXQgPCBtX2xhYmVscy5zaXplKCk7ICsrYnl0ZWNvZGVPZmZzZXQpIHsKICAg
ICAgICAgICAgIGlmIChtX2xhYmVsc1tieXRlY29kZU9mZnNldF0uaXNTZXQoKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSklUQ29kZSgpIHsgfQogI2VuZGlmCiAgICAg
cHVibGljOgotICAgICAgICBlbnVtIEpJVFR5cGUgeyBIb3N0Q2FsbFRodW5rLCBCYXNlbGluZUpJ
VCwgREZHSklUIH07CisgICAgICAgIGVudW0gSklUVHlwZSB7IE5vbmUsIEhvc3RDYWxsVGh1bmss
IEludGVycHJldGVyVGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsKICAgICAgICAgCiAgICAg
ICAgIHN0YXRpYyBKSVRUeXBlIGJvdHRvbVRpZXJKSVQoKQogICAgICAgICB7CkBAIC02Niw4ICs2
NiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBERkdKSVQ7CiAgICAg
ICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBib29sIGlzT3B0aW1pemluZ0pJVChKSVRU
eXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IERG
R0pJVDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3RhdGljIGJvb2wgaXNCYXNlbGlu
ZUNvZGUoSklUVHlwZSBqaXRUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaml0
VHlwZSA9PSBJbnRlcnByZXRlclRodW5rIHx8IGppdFR5cGUgPT0gQmFzZWxpbmVKSVQ7CisgICAg
ICAgIH0KKyAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgSklUQ29kZSgpCisgICAg
ICAgICAgICA6IG1faml0VHlwZShOb25lKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNzUs
NiArODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIDogbV9yZWYocmVmKQogICAg
ICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKICAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKGppdFR5cGUgIT0gTm9uZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wg
b3BlcmF0b3IgISgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERy
aXZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVy
LmgJKHJldmlzaW9uIDEwNjI5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJp
dmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE1ICszMywyMSBAQAogI2luY2x1ZGUgIkJ5dGVj
b2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCiAjaW5jbHVkZSAiSklULmgi
CisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KIGlubGluZSBib29sIGppdENvbXBpbGVJZkFw
cHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+
JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkK
IHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2Fs
bHMoKTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5
cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29t
cGlsZShnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUpOwpAQCAtNTUsMTAgKzYx
LDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbAogICAgICAgICB9
CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5n
ZXQoKSk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0
ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQotICAgICAgICBjb2RlQmxvY2st
PmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7Ci0jZW5kaWYKKyAgICBjb2Rl
QmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJs
b2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKICAgICAK
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY2LDkgKzY5LDE0IEBAIGlubGluZSBib29sIGppdENvbXBp
bGVJZkFwcHJvcHJpYXRlKEpTR2wKIAogaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZB
cHByb3ByaWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxGdW5jdGlvbkNvZGVC
bG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
JiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUs
IEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxv
Y2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFn
bG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBj
b2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBp
bGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAgICAg
ICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZUZ1bmN0aW9uKGdsb2JhbERhdGEsIGNvZGVC
bG9jay5nZXQoKSwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKQEAgLTgzLDExICs5
MSw3IEBAIGlubGluZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmkKICAgICAgICAg
fQogICAgICAgICBqaXRDb2RlID0gSklUOjpjb21waWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2su
Z2V0KCksICZqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAgIH0KLSNpZiAhRU5BQkxFKE9QQ09E
RV9TQU1QTElORykKLSAgICBpZiAoIUJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENv
ZGUoKSkKLSAgICAgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1
bml0eSgpOwotI2VuZGlmCi0gICAgCisgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2Nh
cmRpbmdPcHBvcnR1bml0eSgpOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBq
aXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAgIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAxMDYy
OTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBAIEV4Y2VwdGlvbkhhbmRsZXIgZ2VuZXJpY1Rocm93
KEpTR2xvYmFsRGEKIAogRXhjZXB0aW9uSGFuZGxlciBqaXRUaHJvdyhKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEsIEV4ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBS
ZXR1cm5BZGRyZXNzUHRyIGZhdWx0TG9jYXRpb24pCiB7Ci0gICAgcmV0dXJuIGdlbmVyaWNUaHJv
dyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpLT5ieXRlY29kZU9mZnNldChmYXVsdExvY2F0aW9uKSk7CisgICAgcmV0dXJuIGdlbmVy
aWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUt
PmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUsIGZhdWx0TG9jYXRpb24pKTsK
IH0KIAogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlz
aW9uIDEwNjI5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDQ2LDYgKzE0NDYsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2
b2lkLCBvcF9wdXRfYnlfaWRfCiAgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY2FsbEZyYW1lLT5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gc3Rh
Y2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsKICAgICBBU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0
KCkpOworICAgIAogICAgIGFzT2JqZWN0KGJhc2VWYWx1ZSktPnB1dERpcmVjdChjYWxsRnJhbWUt
Pmdsb2JhbERhdGEoKSwgaWRlbnQsIHN0YWNrRnJhbWUuYXJnc1syXS5qc1ZhbHVlKCksIHNsb3Qp
OwogICAgIAogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gc3RhY2tGcmFtZS5jYWxsRnJhbWUt
PmNvZGVCbG9jaygpOwpAQCAtMTkzMSw3ICsxOTMyLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
dm9pZCwgb3B0aW1pemVfZnJvbQogICAgIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBzdGFja0Zy
YW1lLmFyZ3NbMF0uaW50MzIoKTsKIAogI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAg
cHJpbnRmKCJFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVyID0g
JWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291
bnRlciA9ICV1XG4iLCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCksIGNvZGVCbG9jay0+
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxh
eUNvdW50ZXIoKSk7CisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCBvcHRpbWl6ZV9mcm9tX2xvb3Ag
d2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICV1
LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAldVxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2st
PmppdEV4ZWN1dGVDb3VudGVyKCksIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50
ZXIoKSwgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYKIAog
ICAgIGlmIChjb2RlQmxvY2stPmhhc09wdGltaXplZFJlcGxhY2VtZW50KCkpIHsKQEAgLTIxODYs
NDUgKzIxODcsMTMgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSBDYWxsRnJhbWUqIGFyaXR5Q2hlY2tGb3Io
Q2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQpCi17Ci0gICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5j
dGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKTsKLSAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVu
Y3Rpb24oKSk7Ci0gICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1
dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7Ci0gICAgaW50IGFyZ3VtZW50Q291
bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZyYW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygp
OwotCi0gICAgLy8gVGhpcyBlbnN1cmVzIGVub3VnaCBzcGFjZSBmb3IgdGhlIHdvcnN0IGNhc2Ug
c2NlbmFyaW8gb2YgemVybyBhcmd1bWVudHMgcGFzc2VkIGJ5IHRoZSBjYWxsZXIuCi0gICAgaWYg
KCFyZWdpc3RlckZpbGUtPmdyb3coY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgQVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOwotCi0gICAgLy8gVG9vIGZldyBh
cmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1lIGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBt
aXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5lZC4KLSAgICBzaXplX3QgZGVsdGEgPSBuZXdD
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwot
ICAgIFJlZ2lzdGVyKiBzcmMgPSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpOwotICAgIFJlZ2lzdGVy
KiBkc3QgPSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgZGVsdGE7Ci0KLSAgICBpbnQgaTsKLSAg
ICBpbnQgZW5kID0gLUNhbGxGcmFtZTo6b2Zmc2V0Rm9yKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKTsKLSAgICBmb3IgKGkgPSAtMTsgaSA+PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0g
c3JjW2ldOwotCi0gICAgZW5kIC09IGRlbHRhOwotICAgIGZvciAoIDsgaSA+PSBlbmQ7IC0taSkK
LSAgICAgICAgZHN0W2ldID0ganNVbmRlZmluZWQoKTsKLQotICAgIENhbGxGcmFtZSogbmV3Q2Fs
bEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoZHN0KTsKLSAgICBBU1NFUlQoKHZvaWQqKW5ld0Nh
bGxGcmFtZSA8PSByZWdpc3RlckZpbGUtPmVuZCgpKTsKLSAgICByZXR1cm4gbmV3Q2FsbEZyYW1l
OwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY2FsbF9hcml0eUNoZWNrKQog
ewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKIAogICAgIENhbGxGcmFt
ZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAgICBDYWxsRnJhbWUqIG5l
d0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVy
RmlsZSwgQ29kZUZvckNhbGwpOworICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9u
U2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZp
bGUsIENvZGVGb3JDYWxsKTsKICAgICBpZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJu
IHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBT
VFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5j
YWxsZXJGcmFtZSgpKSk7CiAKQEAgLTIyMzcsNyArMjIwNiw3IEBAIERFRklORV9TVFVCX0ZVTkNU
SU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3Rh
Y2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5
Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0
cnVjdCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFy
aXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNv
bnN0cnVjdCk7CiAgICAgaWYgKCFuZXdDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiB0aHJvd0V4
Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRV
Uk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJh
bWUoKSkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklU
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJ
VC5oCShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50
ZXJmYWNlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDEwIEBACiAjaWZuZGVmIEpT
SW50ZXJmYWNlSklUX2gKICNkZWZpbmUgSlNJbnRlcmZhY2VKSVRfaAogCisjaW5jbHVkZSAiQnl0
ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRT
dHVicy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgTExJbnRDb21tb25faAorI2RlZmluZSBMTEludENvbW1vbl9oCisK
KyNkZWZpbmUgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2RlZmluZSBMTElOVF9IRUxQRVJf
VFJBQ0lORyAwCisKKyNlbmRpZiAvLyBMTEludENvbW1vbl9oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorCisjaWYgRU5BQkxFKExM
SU5UKQorCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVy
cHJldGVyLmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3Bh
Y2UgTExJbnQgeworCitEYXRhOjpEYXRhKCkKKyAgICA6IG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
KG5ldyBJbnN0cnVjdGlvblttYXhPcGNvZGVMZW5ndGggKyAxXSkKKyAgICAsIG1fb3Bjb2RlTWFw
KG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXSkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1h
eE9wY29kZUxlbmd0aCArIDE7ICsraSkKKyAgICAgICAgbV9leGNlcHRpb25JbnN0cnVjdGlvbnNb
aV0udS5wb2ludGVyID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZnJvbV9oZWxw
ZXJfdHJhbXBvbGluZSk7CisjZGVmaW5lIE9QQ09ERV9FTlRSWShvcGNvZGUsIGxlbmd0aCkgbV9v
cGNvZGVNYXBbb3Bjb2RlXSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50XyMjb3Bjb2RlKTsK
KyAgICBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0VOVFJZKTsKKyN1bmRlZiBPUENPREVfRU5U
UlkKK30KKworRGF0YTo6fkRhdGEoKQoreworICAgIGRlbGV0ZVtdIG1fZXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zOworICAgIGRlbGV0ZVtdIG1fb3Bjb2RlTWFwOworfQorCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBM
TEludERhdGFfaAorI2RlZmluZSBMTEludERhdGFfaAorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5z
dHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKKyNpZiBFTkFCTEUoTExJTlQpCitjbGFz
cyBEYXRhIHsKK3B1YmxpYzoKKyAgICBEYXRhKCk7CisgICAgfkRhdGEoKTsKKyAgICAKKyAgICBJ
bnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBvcGNv
ZGVNYXAoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3Bjb2RlTWFwOworICAgIH0KK3ByaXZh
dGU6CisgICAgSW5zdHJ1Y3Rpb24qIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIE9wY29k
ZSogbV9vcGNvZGVNYXA7Cit9OworI2Vsc2UgLy8gRU5BQkxFKExMSU5UKQorCisjaWYgQ09NUElM
RVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIGlnbm9yZWQgIi1XbWlzc2luZy1ub3JldHVybiIKKyNlbmRpZgorCitjbGFzcyBE
YXRhIHsKK3B1YmxpYzoKKyAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQorICAgIHsKKyAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK307CisKKyNpZiBD
T01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorCisj
ZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwor
I2VuZGlmIC8vIExMSW50RGF0YV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEVudHJ5cG9pbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKwor
I2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlICJKU0ds
b2JhbERhdGEuaCIKKyNpbmNsdWRlICJMTEludFRodW5rcy5oIgorI2luY2x1ZGUgIkxvd0xldmVs
SW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3Zv
aWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHImIGFyaXR5Q2hlY2spCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7
CisgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAgICBqaXRDb2Rl
ID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2Vs
Zk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSkpKSk7CisgICAgICAgICAgICBhcml0
eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSk7CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKworICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAg
ICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkpKSk7
CisgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaykpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7
CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlv
bkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7
CisgICAgICAgIGFyaXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JD
YWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBqaXRDb2Rl
ID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRy
eVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgYXJpdHlD
aGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hl
Y2tUaHVua0dlbmVyYXRvcikuY29kZSgpOworfQorCit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWds
b2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RG
dW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihN
YWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZXZhbF9wcm9s
b2d1ZSkpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJ
VENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklU
Q29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cit9CisKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICgh
Z2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9z
dEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9wcm9ncmFt
X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2Rl
ID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0
b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBK
U0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgTExJbnRFbnRyeXBvaW50c19oCisjZGVmaW5lIExMSW50RW50cnlw
b2ludHNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQp
CisKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBFdmFsQ29kZUJsb2NrOworY2xhc3MgSklUQ29kZTsKK2NsYXNzIEpTR2xvYmFs
RGF0YTsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjsKK2NsYXNzIE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjsKK2NsYXNzIFByb2dyYW1Db2RlQmxvY2s7CisKK25hbWVzcGFjZSBMTEludCB7CisK
K3ZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQsIEpJVENvZGUmLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2spOwor
dm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBKSVRDb2RlJik7Cit2b2lkIGdl
dFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKKworaW5saW5lIHZv
aWQgZ2V0RW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEV2YWxDb2RlQmxvY2sq
LCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGdldEV2YWxFbnRyeXBvaW50KGdsb2JhbERhdGEs
IGppdENvZGUpOworfQorCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgUHJvZ3JhbUNvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAg
Z2V0UHJvZ3JhbUVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYg
Ly8gTExJbnRFbnRyeXBvaW50c19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKworI2lmIEVO
QUJMRShMTElOVCkKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgorI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5o
IgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBpbnRlcnBy
ZXRlclRocm93SW5DYWxsZXIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJ
TkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcy5cbiIsIGdsb2JhbERhdGEtPmV4
Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdygKKyAgICAg
ICAgZ2xvYmFsRGF0YSwgZXhlYy0+Y2FsbGVyRnJhbWUoKSwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9u
LAorICAgICAgICBleGVjLT5jYWxsZXJGcmFtZSgpLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZz
ZXQoZXhlYy0+Y2FsbGVyRnJhbWUoKSwgZXhlYy0+cmV0dXJuUEMoKSkpOworfQorCitJbnN0cnVj
dGlvbiogcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMpCit7
CisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1
Y3Rpb25zKCk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSogZXhl
YywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZl
eGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYo
IlRocm93aW5nIGV4Y2VwdGlvbiAlcyAocmV0dXJuVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5l
eGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFs
RGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygp
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAKKyAgICByZXR1cm4gZ2xvYmFsRGF0YS0+
bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworfQorCit2b2lkKiBjYWxsVG9UaHJv
dyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFD
SU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKGNhbGxUb1Rocm93KS5cbiIs
IGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVy
aWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhl
Yy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5l
KTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUo
TExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0
aW9ucy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RXhjZXB0aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRFeGNlcHRpb25z
X2gKKyNkZWZpbmUgTExJbnRFeGNlcHRpb25zX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIEVOQUJMRShMTElOVCkKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsK
KworbmFtZXNwYWNlIExMSW50IHsKKworLy8gVGhyb3cgdGhlIGN1cnJlbnRseSBhY3RpdmUgZXhj
ZXB0aW9uIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjYWxsZXIncyBjYWxsIGZyYW1lLgordm9pZCBp
bnRlcnByZXRlclRocm93SW5DYWxsZXIoRXhlY1N0YXRlKik7CisKKy8vIFRlbGxzIHlvdSB3aGVy
ZSB0byBqdW1wIHRvIGlmIHlvdSB3YW50IHRvIHJldHVybi10by10aHJvdywgYWZ0ZXIgeW91J3Zl
IGFscmVhZHkKKy8vIHNldCB1cCBhbGwgaW5mb3JtYXRpb24gbmVlZGVkIHRvIHRocm93IHRoZSBl
eGNlcHRpb24uCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihF
eGVjU3RhdGUqKTsKKworLy8gU2F2ZXMgdGhlIGN1cnJlbnQgUEMgaW4gdGhlIGdsb2JhbCBkYXRh
IGZvciBzYWZlLWtlZXBpbmcsIGFuZCBnaXZlcyB5b3UgYSBQQworLy8gdGhhdCB5b3UgY2FuIHRl
bGwgdGhlIGludGVycHJldGVyIHRvIGdvIHRvLCB3aGljaCB3aGVuIGFkdmFuY2VkIGJldHdlZW4g
MQorLy8gYW5kIDkgc2xvdHMgd2lsbCBnaXZlIHlvdSBhbiAiaW5zdHJ1Y3Rpb24iIHRoYXQgdGhy
ZWFkcyB0byB0aGUgaW50ZXJwcmV0ZXIncworLy8gZXhjZXB0aW9uIGhhbmRsZXIuIE5vdGUgdGhh
dCBpZiB5b3UgZ2l2ZSBpdCB0aGUgUEMgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZywKKy8vIGl0J3Mg
c21hcnQgZW5vdWdoIHRvIGp1c3QgcmV0dXJuIHRoYXQgUEMgd2l0aG91dCBkb2luZyBhbnl0aGlu
ZyBlbHNlOyB0aGlzCisvLyBsZXRzIHlvdSB0aHJlYWQgZXhjZXB0aW9uIGhhbmRsaW5nIHRocm91
Z2ggY29tbW9uIGhlbHBlciBmdW5jdGlvbnMgdXNlZCBieQorLy8gb3RoZXIgaGVscGVycy4KK0lu
c3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisKKy8v
IFVzZSB0aGlzIHdoZW4geW91J3JlIHRocm93aW5nIHRvIGEgY2FsbCB0aHVuay4KK3ZvaWQqIGNh
bGxUb1Rocm93KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRF
eGNlcHRpb25zX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBl
cnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhl
bHBlcnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQzOSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTExJbnRIZWxwZXJzLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisK
KyNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRl
ICJDb21tb25TbG93UGF0aHMuaCIKKyNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRl
ICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNs
dWRlICJKSVQuaCIKKyNpbmNsdWRlICJKSVREcml2ZXIuaCIKKyNpbmNsdWRlICJKU0FjdGl2YXRp
b24uaCIKKyNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0
RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1
ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1
ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgIkxMSW50
RXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRl
ICJPcGVyYXRpb25zLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCisj
ZGVmaW5lIExMSU5UX09QKGluZGV4KSAoZXhlYy0+dW5jaGVja2VkUihwY1tpbmRleF0udS5vcGVy
YW5kKSkKKyNkZWZpbmUgTExJTlRfT1BfQyhpbmRleCkgKGV4ZWMtPnIocGNbaW5kZXhdLnUub3Bl
cmFuZCkpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOX1RXTyhmaXJzdCwgc2Vjb25kKSBkbyB7ICAg
ICAgIFwKKyAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgICAgICB2b2lkKiBhOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgICAgICB2b2lkKiBiOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIH0gcGFpcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgIGludDY0X3QgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSBf
X3J0X3U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX19ydF91
LnBhaXIuYSA9IGZpcnN0OyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX19ydF91LnBh
aXIuYiA9IHNlY29uZDsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fcnRf
dS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKwor
I2RlZmluZSBMTElOVF9FTkRfSU1QTCgpIExMSU5UX1JFVFVSTl9UV08ocGMsIGV4ZWMpCisKKyNk
ZWZpbmUgTExJTlRfVEhST1coZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBfX3RfZ2xvYmFsRGF0YSA9IGV4ZWMtPmds
b2JhbERhdGEoKTsgICAgICAgIFwKKyAgICAgICAgX190X2dsb2JhbERhdGEuZXhjZXB0aW9uID0g
KGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgIFwKKyAgICAgICAgcGMgPSByZXR1cm5Ub1Ro
cm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJ
TlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DSEVDS19FWENFUFRJT04oKSBk
byB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VMWShleGVjLT5nbG9i
YWxEYXRhKCkuZXhjZXB0aW9uKSkgeyAgIFwKKyAgICAgICAgICAgIHBjID0gcmV0dXJuVG9UaHJv
dyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTExJTlRfRU5EX0lNUEwo
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKwor
I2RlZmluZSBMTElOVF9FTkQoKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElO
VF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNl
KQorCisjZGVmaW5lIExMSU5UX0JSQU5DSChvcGNvZGUsIGNvbmRpdGlvbikgZG8geyAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIGJvb2wgX19iX2NvbmRpdGlvbiA9IChjb25kaXRpb24p
OyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChfX2Jf
Y29uZGl0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICBwYyArPSBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51Lm9wZXJhbmQ7ICAg
ICAgICBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wY29k
ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAo
ZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOKHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgSlNWYWx1ZSBfX3JfcmV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgIFwKKyAg
ICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
TExJTlRfT1AoMSkgPSBfX3JfcmV0dXJuVmFsdWU7ICAgICAgICAgIFwKKyAgICAgICAgTExJTlRf
RU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkK
KworI2RlZmluZSBMTElOVF9SRVRVUk5fUFJPRklMRUQob3Bjb2RlLCB2YWx1ZSkgZG8geyAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgSlNWYWx1ZSBfX3JwX3JldHVyblZhbHVlID0gKHZhbHVlKTsg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9PUCgxKSA9IF9f
cnBfcmV0dXJuVmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcGNbT1BD
T0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5wcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBcCisgICAg
ICAgICAgICBKU1ZhbHVlOjplbmNvZGUoX19ycF9yZXR1cm5WYWx1ZSk7ICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxM
X0VORF9JTVBMKGV4ZWMsIGNhbGxUYXJnZXQpIExMSU5UX1JFVFVSTl9UV08oKGNhbGxUYXJnZXQp
LCAoZXhlYykpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgZXhjZXB0aW9u
VG9UaHJvdykgZG8geyAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2N0X2V4
ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
SW5zdHJ1Y3Rpb24qIF9fY3RfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBfX2N0X2dsb2JhbERhdGEgPSAoX19jdF9l
eGVjKS0+Z2xvYmFsRGF0YSgpOyAgICAgIFwKKyAgICAgICAgX19jdF9nbG9iYWxEYXRhLmV4Y2Vw
dGlvbiA9IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJ
TlRfQ0FMTF9FTkRfSU1QTChfX2N0X2V4ZWMsIGNhbGxUb1Rocm93KF9fY3RfZXhlYywgX19jdF9w
YykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9DSEVDS19F
WENFUFRJT04oZXhlYywgcGMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
RXhlY1N0YXRlKiBfX2NjZV9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY2NlX3BjID0gKHBjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKF9fY2NlX2V4
ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAg
IExMSU5UX0NBTExfRU5EX0lNUEwoX19jY2VfZXhlYywgY2FsbFRvVGhyb3coX19jY2VfZXhlYywg
X19jY2VfcGMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExf
UkVUVVJOKGV4ZWMsIHBjLCBjYWxsVGFyZ2V0KSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIEV4ZWNTdGF0ZSogX19jcl9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2NyX3BjID0gKHBjKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHZvaWQqIF9fY3JfY2Fs
bFRhcmdldCA9IChjYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKF9fY3JfZXhlYy0+Y2FsbGVyRnJhbWUoKSwg
X19jcl9wYyk7ICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jcl9leGVjLCBfX2Ny
X2NhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKK2V4
dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSog
ZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkKK3sKKyAg
ICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVk
OiAlZFxuIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMs
CisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygp
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGZy
b21XaGVyZSwKKyAgICAgICAgICAgb3BlcmFuZCwKKyAgICAgICAgICAgcGNbb3BlcmFuZF0udS5v
cGVyYW5kKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5U
eXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBp
bnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkKK3sKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRf
T1BfQyhvcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3Qgewor
ICAgICAgICAgICAgdWludDMyX3QgdGFnOworICAgICAgICAgICAgdWludDMyX3QgcGF5bG9hZDsK
KyAgICAgICAgfSBiaXRzOworICAgICAgICBFbmNvZGVkSlNWYWx1ZSBhc1ZhbHVlOworICAgIH0g
dTsKKyAgICB1LmFzVmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOworICAgIHByaW50Zigi
JXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkOiAlMDh4
OiUwOHgiLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywK
KyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCkt
Pmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCku
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJv
bVdoZXJlLAorICAgICAgICAgICBvcGVyYW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9w
ZXJhbmQsCisgICAgICAgICAgIHUuYml0cy50YWcsCisgICAgICAgICAgIHUuYml0cy5wYXlsb2Fk
KTsKKyNpZm5kZWYgTkRFQlVHCisgICAgcHJpbnRmKCI6ICVzIiwgdmFsdWUuZGVzY3JpcHRpb24o
KSk7CisjZW5kaWYKKyAgICBwcmludGYoIlxuIik7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlKQoreworICAgIHByaW50ZigiJXAgLyAlcDog
aW4gcHJvbG9ndWUuXG4iLCBleGVjLT5jb2RlQmxvY2soKSwgZXhlYyk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK3N0YXRpYyB2b2lkIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IGNoYXIqIGNvbW1lbnQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sK
KyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmpzRXhlY3V0YWJsZSgp
OworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gJmV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVj
b2RlRm9yKGtpbmQpOworICAgIHByaW50ZigiJXAgLyAlcDogaW4gJXMgb2YgZnVuY3Rpb24gJXAs
IGV4ZWN1dGFibGUgJXA7IG51bVZhcnMgPSAldSwgbnVtUGFyYW1ldGVycyA9ICV1LCBudW1DYWxs
ZWVSZWdpc3RlcnMgPSAldS5cbiIsCisgICAgICAgICAgIGNvZGVCbG9jaywgZXhlYywgY29tbWVu
dCwgY2FsbGVlLCBleGVjdXRhYmxlLAorICAgICAgICAgICBjb2RlQmxvY2stPm1fbnVtVmFycywg
Y29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3Rl
cnMpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3Jf
Y2FsbCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNhbGwgcHJvbG9ndWUi
LCBDb2RlRm9yQ2FsbCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgdHJhY2VGdW5j
dGlvblByb2xvZ3VlKGV4ZWMsICJjb25zdHJ1Y3QgcHJvbG9ndWUiLCBDb2RlRm9yQ29uc3RydWN0
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlD
aGVja19mb3JfY2FsbCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNhbGwg
YXJpdHkgY2hlY2siLCBDb2RlRm9yQ2FsbCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFj
ZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBhcml0eSBjaGVjayIsIENvZGVGb3JD
b25zdHJ1Y3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFj
ZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsICIsCisgICAgICAg
ICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBzdGF0
aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKSkpOworI2lmbmRlZiBOREVCVUcKKyAgICBwcmludGYoIiVzLCAiLCBvcGNvZGVOYW1l
c1tleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bj
b2RlKV0pOworI2Vsc2UKKyAgICBwcmludGYoIm9wIyV1LCAiLCBleGVjLT5nbG9iYWxEYXRhKCku
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSk7CisjZW5kaWYKKyAgICBw
cmludGYoInNjb3BlICVwXG4iLCBleGVjLT5zY29wZUNoYWluKCkpOworICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChzcGVjaWFsX3RyYWNlKQoreworICAgIHByaW50Zigi
JXAgLyAlcDogZXhlY3V0aW5nIHNwZWNpYWwgY2FzZSBiYyMlenUsIG9wIyV1LCByZXR1cm4gUEMg
aXMgJXBcbiIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVj
LAorICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2so
KS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEo
KS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBl
eGVjLT5yZXR1cm5QQygpLnZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitpbmxpbmUg
Ym9vbCBzaG91bGRKSVQoRXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIFlvdSBjYW4gbW9kaWZ5
IHRoaXMgdG8gdHVybiBvZmYgSklUdGluZyB3aXRob3V0IHJlYnVpbGRpbmcgdGhlIHdvcmxkLgor
ICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCk7Cit9CisKK2VudW0gRW50
cnlLaW5kIHsgUHJvbG9ndWUsIEFyaXR5Q2hlY2sgfTsKK3N0YXRpYyBIZWxwZXJSZXR1cm5UeXBl
IGVudHJ5T1NSKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlQmxvY2sqIGNv
ZGVCbG9jaywgY29uc3QgY2hhciAqbmFtZSwgRW50cnlLaW5kIGtpbmQpCit7CisjaWYgRU5BQkxF
KEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkICVzIHdpdGggZXhlY3V0
ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBuYW1lLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0
ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoIXNob3VsZEpJVChleGVjKSkgewor
ICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgICAgICBMTElOVF9S
RVRVUk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAgICBpZiAoIWNvZGVCbG9jay0+aml0Q29tcGls
ZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAg
ICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlm
CisgICAgfQorICAgIGNvZGVCbG9jay0+aml0U29vbigpOworICAgIGlmIChraW5kID09IFByb2xv
Z3VlKQorICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+Z2V0SklUQ29kZSgpLmV4
ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoMCksIGV4ZWMpOworICAgIEFTU0VSVChraW5kID09IEFy
aXR5Q2hlY2spOworICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRDb2RlV2l0
aEFyaXR5Q2hlY2soKS5leGVjdXRhYmxlQWRkcmVzcygpLCBleGVjKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woZW50cnlfb3NyKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgZXhl
Yy0+Y29kZUJsb2NrKCksICJlbnRyeV9vc3IiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCkKK3sKKyAgICByZXR1cm4gZW50cnlP
U1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCkt
PmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDYWxsKSwgImVudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY2FsbCIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAm
YXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRl
Y29kZUZvcihDb2RlRm9yQ29uc3RydWN0KSwgImVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3Ry
dWN0IiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMs
ICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5
dGVjb2RlRm9yKENvZGVGb3JDYWxsKSwgImVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0
eUNoZWNrIiwgQXJpdHlDaGVjayk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2spCit7CisgICAgcmV0dXJuIGVudHJ5T1NS
KGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5n
ZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ29uc3RydWN0KSwgImVudHJ5X29zcl9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2siLCBBcml0eUNoZWNrKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0wobG9vcF9vc3IpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICAKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50
ZigiJXA6IEVudGVyZWQgbG9vcF9vc3Igd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2Rl
QmxvY2ssIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAor
ICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFu
eXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7CisgICAgfQor
ICAgIAorICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkp
IHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICBwcmludGYoIiAgICBDb2Rl
IHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICB9CisgICAgY29kZUJsb2Nr
LT5qaXRTb29uKCk7CisgICAgCisgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpID09
IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAKKyAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNo
aW5lT2Zmc2V0PiBtYXA7CisgICAgY29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRlY29kZShtYXAp
OworICAgIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCogbWFwcGluZyA9IGJpbmFyeVNlYXJjaDxC
eXRlY29kZUFuZE1hY2hpbmVPZmZzZXQsIHVuc2lnbmVkLCBCeXRlY29kZUFuZE1hY2hpbmVPZmZz
ZXQ6OmdldEJ5dGVjb2RlSW5kZXg+KG1hcC5iZWdpbigpLCBtYXAuc2l6ZSgpLCBwYyAtIGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgQVNTRVJUKG1hcHBpbmcpOworICAg
IEFTU0VSVChtYXBwaW5nLT5tX2J5dGVjb2RlSW5kZXggPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisgICAgCisgICAgdm9p
ZCoganVtcFRhcmdldCA9IGNvZGVCbG9jay0+Z2V0SklUQ29kZSgpLmV4ZWN1dGFibGVBZGRyZXNz
QXRPZmZzZXQobWFwcGluZy0+bV9tYWNoaW5lQ29kZU9mZnNldCk7CisgICAgQVNTRVJUKGp1bXBU
YXJnZXQpOworICAgIAorICAgIExMSU5UX1JFVFVSTl9UV08oanVtcFRhcmdldCwgZXhlYyk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NS
KQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgcmVwbGFjZSB3aXRoIGV4ZWN1dGVDb3VudGVyID0g
JWRcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2Vu
ZGlmCisgICAgCisgICAgaWYgKHNob3VsZEpJVChleGVjKSkgeworICAgICAgICBpZiAoIWNvZGVC
bG9jay0+aml0Q29tcGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5BQkxFKEpJVF9W
RVJCT1NFX09TUikKKyAgICAgICAgICAgIHByaW50ZigiICAgIENvZGUgd2FzIGFscmVhZHkgY29t
cGlsZWQuXG4iKTsKKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIGNvZGVCbG9jay0+aml0U29v
bigpOworICAgIH0gZWxzZQorICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigp
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxl
X2NoZWNrKQoreworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDaGVja2lu
ZyBzdGFjayBoZWlnaHQgd2l0aCBleGVjID0gJXAuXG4iLCBleGVjKTsKKyAgICBwcmludGYoIkNv
ZGVCbG9jayA9ICVwLlxuIiwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAgIHByaW50ZigiTnVtIGNh
bGxlZSByZWdpc3RlcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJl
Z2lzdGVycyk7CisgICAgcHJpbnRmKCJOdW0gdmFycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2Nr
KCktPm1fbnVtVmFycyk7CisgICAgcHJpbnRmKCJDdXJyZW50IGVuZCBpcyBhdCAlcC5cbiIsIGV4
ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOworI2Vu
ZGlmCisgICAgQVNTRVJUKCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+bV9u
dW1DYWxsZWVSZWdpc3RlcnNdID4gZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdp
c3RlckZpbGUoKS5lbmQoKSk7CisgICAgaWYgKFVOTElLRUxZKCFleGVjLT5nbG9iYWxEYXRhKCku
aW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmdyb3coJmV4ZWMtPnJlZ2lzdGVycygpW2V4ZWMt
PmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVyc10pKSkgeworICAgICAgICBleGVjID0g
ZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlv
biA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0ZXJU
aHJvd0luQ2FsbGVyKGV4ZWMpOworICAgICAgICBwYyA9IHJldHVyblRvVGhyb3dGb3JUaHJvd25F
eGNlcHRpb24oZXhlYyk7CisgICAgfQorICAgIExMSU5UX0VORF9JTVBMKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0YXRlKiBu
ZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5nbG9i
YWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ2FsbCk7CisgICAg
aWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAg
ICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vy
cm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYyk7CisgICAg
ICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhl
Yyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykK
K3sKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tG
b3IoZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCks
IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBleGVjID0g
ZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlv
biA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0ZXJU
aHJvd0luQ2FsbGVyKGV4ZWMpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGJpdHdpc2VfY2Fz
dDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSksIGV4ZWMpOworICAgIH0KKyAgICBM
TElOVF9SRVRVUk5fVFdPKDAsIG5ld0V4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY3JlYXRlX2FjdGl2YXRpb24pCit7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBw
cmludGYoIkNyZWF0aW5nIGFuIGFjdGl2YXRpb24sIGV4ZWMgPSAlcCFcbiIsIGV4ZWMpOworI2Vu
ZGlmCisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gSlNBY3RpdmF0aW9uOjpjcmVhdGUo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLCBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
PihleGVjLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkpKTsKKyAgICBleGVjLT5zZXRT
Y29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChhY3RpdmF0aW9uKSk7CisgICAgTExJ
TlRfUkVUVVJOKEpTVmFsdWUoYWN0aXZhdGlvbikpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKK3sKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpTVmFs
dWUoQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKSk7CisgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgZXhlYy0+dW5jaGVja2VkUihwY1sxXS51Lm9wZXJh
bmQpID0gYXJndW1lbnRzOworICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOworICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3RoaXMpCit7CisgICAgSlNG
dW5jdGlvbiogY29uc3RydWN0b3IgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICAK
KyNpZiAhQVNTRVJUX0RJU0FCTEVECisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOwor
ICAgIEFTU0VSVChjb25zdHJ1Y3Rvci0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0YShj
b25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSkgPT0gQ29uc3RydWN0VHlwZUpTKTsKKyNlbmRpZgor
ICAgIAorICAgIFN0cnVjdHVyZSogc3RydWN0dXJlOworICAgIEpTVmFsdWUgcHJvdG8gPSBMTElO
VF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKHByb3RvLmlzT2JqZWN0KCkpCisgICAgICAgIHN0
cnVjdHVyZSA9IGFzT2JqZWN0KHByb3RvKS0+aW5oZXJpdG9ySUQoZXhlYy0+Z2xvYmFsRGF0YSgp
KTsKKyAgICBlbHNlCisgICAgICAgIHN0cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5zY29wZSgpLT5n
bG9iYWxPYmplY3QtPmVtcHR5T2JqZWN0U3RydWN0dXJlKCk7CisgICAgCisgICAgTExJTlRfUkVU
VVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIHN0cnVjdHVyZSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY29udmVydF90aGlzKQoreworICAgIEpTVmFsdWUgdjEgPSBMTElO
VF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHYxLmlzUHJpbWl0aXZlKCkpOworICAgIExM
SU5UX1JFVFVSTih2MS50b1RoaXNPYmplY3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbmV3X29iamVjdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlP
YmplY3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5KQor
eworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RBcnJheShleGVjLCBiaXR3aXNlX2Nhc3Q8SlNW
YWx1ZSo+KCZMTElOVF9PUCgyKSksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oY29u
c3RydWN0QXJyYXkoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKHBjWzJd
LnUub3BlcmFuZCksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmV3X3JlZ2V4cCkKK3sKKyAgICBSZWdFeHAqIHJlZ0V4cCA9IGV4ZWMtPmNvZGVCbG9j
aygpLT5yZWdleHAocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgp
KQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBm
bGFnIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSk7CisgICAgTExJTlRfUkVUVVJO
KFJlZ0V4cE9iamVjdDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVy
ZSgpLCByZWdFeHApKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCkKK3sKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0Jvb2xl
YW4oZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2VxKQoreworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbmVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6
OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKQoreworICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVxKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oIUpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgp
LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2xlc3MpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8dHJ1ZT4oZXhl
YywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKQoreworICAgIExMSU5UX1JFVFVS
Tihqc0Jvb2xlYW4oanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZ3JlYXRlcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczxmYWxzZT4o
ZXhlYywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcmVxKQoreworICAgIExMSU5U
X1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3ByZV9pbmMpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09Q
KDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSArIDEpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3ByZV9kZWMpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09Q
KDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAtIDEpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Bvc3RfaW5jKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1
bHQgKyAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJ
TlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0ganNO
dW1iZXIocmVzdWx0IC0gMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpCit7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKC1MTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKQoreworICAgIEpTVmFsdWUgdjEgPSBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHYyID0gTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCk7CisgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRy
eWluZyB0byBhZGQgJXMiLCB2MS5kZXNjcmlwdGlvbigpKTsKKyAgICBwcmludGYoIiB0byAlcy5c
biIsIHYyLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKHYxLmlzU3RyaW5n
KCkgJiYgIXYyLmlzT2JqZWN0KCkpCisgICAgICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhleGVj
LCBhc1N0cmluZyh2MSksIHYyLnRvU3RyaW5nKGV4ZWMpKSk7CisgICAgCisgICAgaWYgKHYxLmlz
TnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVy
KHYxLmFzTnVtYmVyKCkgKyB2Mi5hc051bWJlcigpKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJO
KGpzQWRkU2xvd0Nhc2UoZXhlYywgdjEsIHYyKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9tdWwpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICogTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIo
ZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1YikKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykg
LSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZGl2KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAvIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2Qp
Cit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9OdW1iZXIoZXhlYyksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KQoreworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIDw8
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vy
c2hpZnQpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLnRvVUludDMyKGV4ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4
ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykg
JiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9iaXRvcikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSB8IExMSU5UX09QX0MoMykuanNWYWx1
ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhv
cikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
dG9JbnQzMihleGVjKSBeIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCkKK3sKKyAgICBMTElOVF9SRVRV
Uk4oanNOdW1iZXIofkxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKK3sKKyAgICBK
U1ZhbHVlIGJhc2VWYWwgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyNpZm5kZWYgTkRFQlVH
CisgICAgVHlwZUluZm8gdHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKTsKKyAgICBBU1NFUlQoIWJh
c2VWYWwuaXNPYmplY3QoKQorICAgICAgICAgICB8fCAhKHR5cGVJbmZvID0gYXNPYmplY3QoYmFz
ZVZhbCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSk7
CisjZW5kaWYKKyAgICBMTElOVF9USFJPVyhjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihleGVjLCAi
aW5zdGFuY2VvZiIsIGJhc2VWYWwpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lu
c3RhbmNlb2YpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6
Om9wSW5zdGFuY2VPZlNsb3coZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNUeXBlU3Ry
aW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCkKK3sKKyAgICBKU1ZhbHVlIHYgPSBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKHYuaXNDZWxs
KCkgPyB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkKCkgOiB2LmlzVW5kZWZpbmVkKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2lzX2Jvb2xlYW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaXNfbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
aXNfc3RyaW5nKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oaXNKU1N0cmluZyhMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lz
X29iamVjdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNPYmplY3RUeXBlKExM
SU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
aXNfZnVuY3Rpb24pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rpb25U
eXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaW4pCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6
Om9wSW4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSkKK3sKKyAgICBM
TElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZSwgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29s
dmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKQoreworICAgIExM
SU5UX1JFVFVSTl9QUk9GSUxFRCgKKyAgICAgICAgb3BfcmVzb2x2ZV9za2lwLAorICAgICAgICBD
b21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVNraXAoCisgICAgICAgICAgICBleGVjLAorICAgICAg
ICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwKKyAg
ICAgICAgICAgIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitzdGF0aWMgSlNWYWx1ZSByZXNvbHZl
R2xvYmFsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGdsb2Jh
bE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0udS5v
cGVyYW5kOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0
KCk7CisgICAgCisgICAgQVNTRVJUX1VOVVNFRChzdHJ1Y3R1cmUsIHN0cnVjdHVyZSAhPSBnbG9i
YWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNv
ZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xv
YmFsT2JqZWN0KTsKKyAgICAKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3Qo
ZXhlYywgaWRlbnQsIHNsb3QpKSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRW
YWx1ZShleGVjLCBpZGVudCk7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAm
JiAhZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQor
ICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgeworICAgICAg
ICAgICAgcGNbM10udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2Jh
bERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1
Y3R1cmUoKSk7CisgICAgICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAg
ICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAg
IGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVy
cm9yKGV4ZWMsIGlkZW50KTsKKyAgICByZXR1cm4gSlNWYWx1ZSgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJ
TEVEKG9wX3Jlc29sdmVfZ2xvYmFsLCByZXNvbHZlR2xvYmFsKGV4ZWMsIHBjKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQoreworICAgIExM
SU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljLCByZXNvbHZlR2xv
YmFsKGV4ZWMsIHBjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Zv
cl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQoreworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChv
cF9yZXNvbHZlX2dsb2JhbF9keW5hbWljLCBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZShleGVj
LCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAgSWRlbnRpZmll
ciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQp
OworICAgIGlmIChwY1szXS51Lm9wZXJhbmQpIHsKKyAgICAgICAgSlNWYWx1ZSBiYXNlID0gSlND
OjpyZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCB0cnVlKTsKKyAg
ICAgICAgaWYgKCFiYXNlKQorICAgICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJ
bnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICAgICAg
TExJTlRfUkVUVVJOKGJhc2UpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk5fUFJPRklM
RUQob3BfcmVzb2x2ZV9iYXNlLCBKU0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5z
Y29wZUNoYWluKCksIGZhbHNlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1
cmVfcHJvcGVydHlfZXhpc3RzKQoreworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChM
TElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7Cisg
ICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1sy
XS51Lm9wZXJhbmQpOworICAgIGlmICghb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRl
bnQsIHNsb3QpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9i
YWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpCit7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhCYXNlKGV4ZWMs
IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09Q
KDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJl
c3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5nLCBi
dXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4KKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlz
KQoreworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVXaXRo
VGhpcyhleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQp
LCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRf
T1AoMikgPSByZXN1bHQ7CisgICAgLy8gRklYTUU6IHRlY2huaWNhbGx5IHNob3VsZCBoYXZlIHBy
b2ZpbGluZywgYnV0IHdlIGRvbid0IGRvIGl0IGJlY2F1c2UgdGhlIERGRyB3b24ndCB1c2UgaXQu
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlf
aWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAg
ICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJh
bmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7Cisg
ICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0g
YmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgTExJTlRfT1AoMSkgPSByZXN1bHQ7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlz
Q2VsbCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKQorICAgICAgICAmJiBzbG90LnNs
b3RCYXNlKCkgPT0gYmFzZVZhbHVlCisgICAgICAgICYmIHNsb3QuY2FjaGVkUHJvcGVydHlUeXBl
KCkgPT0gUHJvcGVydHlTbG90OjpWYWx1ZSkgeworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBi
YXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVj
dHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVy
ZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgeworICAgICAgICAgICAg
cGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEo
KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAg
IHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcGNbT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlf
aWQpIC0gMV0udS5wcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9h
cmd1bWVudHNfbGVuZ3RoKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIo
cGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpz
VmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworICAgIExMSU5UX1JF
VFVSTihiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRl
bnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIAorICAgIEpTVmFsdWUgYmFzZVZhbHVlID0g
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY29kZUJs
b2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAgICAg
YXNPYmplY3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgaWRlbnQs
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICBlbHNlCisgICAgICAgIGJhc2VW
YWx1ZS5wdXQoZXhlYywgaWRlbnQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2Vs
bCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKSkgeworICAgICAgICAKKyAgICAgICAg
SlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBp
ZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYg
IXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKQorICAgICAg
ICAgICAgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsK
KyAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgc3RydWN0
dXJlLT5wcmV2aW91c0lEKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gc3RydWN0dXJl
LT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRo
aXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBvZiB0aGUgbWV0aG9kcyB3ZSBjYWxsCisgICAgICAg
ICAgICAgICAgICAgIC8vIGJlbG93IG1heSBHQy4KKyAgICAgICAgICAgICAgICAgICAgcGNbMF0u
dS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworCisg
ICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxs
KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1
Y3R1cmUtPnByZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICAgICAgICAgIHBj
WzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2Jh
bERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcmV2aW91
c0lEKCkpOworICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hl
ZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBwY1s2XS51
LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRh
KCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAg
ICAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hh
aW4oZXhlYyk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFpbik7CisgICAgICAgICAg
ICAgICAgICAgIHBjWzddLnUuc3RydWN0dXJlQ2hhaW4uc2V0KAorICAgICAgICAgICAgICAgICAg
ICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBj
aGFpbik7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAocGNb
OF0udS5vcGVyYW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Qp
OworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwY1sw
XS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X29wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0
KAorICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVy
YW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAoZmFsc2UgJiYgIXN0cmNtcChpZGVu
dC5hc2NpaSgpLmRhdGEoKSwgInJlbmRlclJlZmxlY3Rpb25zIikpCisgICAgICAgIHByaW50Zigi
RmluaXNoaW5nIGFjY2VzcyB0byByZW5kZXJSZWZsZWN0aW9ucyBmcm9tIExMSW50IHNsb3cgcGF0
aC5cbiIpOworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZGVsX2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKS50b09iamVjdChleGVjKTsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+
bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgY29kZUJsb2Nr
LT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOworICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkK
KyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVs
ZXRlIHByb3BlcnR5LiIpKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRl
KSk7Cit9CisKK2lubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQoreworICAgIGlmIChMSUtFTFkoYmFzZVZh
bHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBpZiAoSlNW
YWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eShleGVj
LCBhc1N0cmluZyhzdWJzY3JpcHQpLT52YWx1ZShleGVjKSkpCisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKyAgICAKKyAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKKyAg
ICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNK
U1N0cmluZyhiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkp
KQorICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMs
IGkpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBh
c0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkKKyAgICAgICAgICAgIHJl
dHVybiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAg
CisgICAgICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGkpOworICAgIH0KKyAgICAKKyAg
ICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYykpOworICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5KTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV92YWwpCit7CisgICAgTExJTlRfUkVU
VVJOX1BST0ZJTEVEKG9wX2dldF9ieV92YWwsIGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKK3sKKyAgICBKU1ZhbHVlIGFyZ3VtZW50
cyA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykgeworICAgICAg
ICBhcmd1bWVudHMgPSBBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMp
OworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgTExJTlRfT1AoMikg
PSBhcmd1bWVudHM7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOworICAgIH0KKyAgICAKKyAg
ICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgYXJndW1lbnRzLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKQor
eworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCks
IExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHV0X2J5X3ZhbCkKK3sKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9i
YWxEYXRhKCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgp
OworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAg
ICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgeworICAgICAgICB1aW50MzJfdCBp
ID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVl
KSkgeworICAgICAgICAgICAgSlNBcnJheSoganNBcnJheSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsK
KyAgICAgICAgICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkKKyAgICAgICAgICAgICAg
ICBqc0FycmF5LT5zZXRJbmRleChnbG9iYWxEYXRhLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgSlNBcnJheTo6cHV0QnlJbmRleChqc0FycmF5LCBleGVjLCBp
LCB2YWx1ZSk7CisgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpCisgICAgICAgICAgICAmJiBhc0J5dGVBcnJheShi
YXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICAgICAgSlNCeXRlQXJyYXkq
IGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2
YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgo
aSwgdmFsdWUuYXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAgICAg
ICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzTnVtYmVyKCkpOworICAgICAg
ICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IGJhc2VWYWx1ZS5wdXQoZXhlYywgaSwgdmFsdWUpOworICAgICAgICBMTElOVF9FTkQoKTsKKyAg
ICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkp
OworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpCit7
CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBK
U09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICAKKyAg
ICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAg
IGJvb2wgY291bGREZWxldGU7CisgICAgCisgICAgdWludDMyX3QgaTsKKyAgICBpZiAoc3Vic2Ny
aXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRo
b2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYmFzZU9iamVjdCwgZXhlYywgaSk7Cisg
ICAgZWxzZSB7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBJZGVu
dGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpOworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgY291bGREZWxl
dGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eSk7CisgICAgfQorICAgIAorICAgIGlmICghY291bGREZWxldGUgJiYg
ZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElOVF9USFJPVyhj
cmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAg
IAorICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCkKK3sKKyAgICBMTElOVF9PUF9DKDEpLmpz
VmFsdWUoKS5wdXQoZXhlYywgcGNbMl0udS5vcGVyYW5kLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRf
Z2V0dGVyX3NldHRlcikKK3sKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2Jq
ZWN0KCkpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNW
YWx1ZSgpKTsKKyAgICAKKyAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVy
OjpjcmVhdGUoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAg
SlNWYWx1ZSBnZXR0ZXIgPSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzZXR0
ZXIgPSBMTElOVF9PUCg0KS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKGdldHRlci5pc09iamVjdCgp
IHx8IGdldHRlci5pc1VuZGVmaW5lZCgpKTsKKyAgICBBU1NFUlQoc2V0dGVyLmlzT2JqZWN0KCkg
fHwgc2V0dGVyLmlzVW5kZWZpbmVkKCkpOworICAgIEFTU0VSVChnZXR0ZXIuaXNPYmplY3QoKSB8
fCBzZXR0ZXIuaXNPYmplY3QoKSk7CisgICAgCisgICAgaWYgKCFnZXR0ZXIuaXNVbmRlZmluZWQo
KSkKKyAgICAgICAgYWNjZXNzb3ItPnNldEdldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIGFzT2Jq
ZWN0KGdldHRlcikpOworICAgIGlmICghc2V0dGVyLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIGFj
Y2Vzc29yLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBhc09iamVjdChzZXR0ZXIpKTsK
KyAgICBiYXNlT2JqLT5wdXREaXJlY3RBY2Nlc3NvcigKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLAorICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJh
bmQpLAorICAgICAgICBhY2Nlc3NvciwgQWNjZXNzb3IpOworICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam1wX3Njb3BlcykKK3sKKyAgICB1bnNpZ25lZCBj
b3VudCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBTY29wZUNoYWluTm9kZSogdG1wID0gZXhlYy0+
c2NvcGVDaGFpbigpOworICAgIHdoaWxlIChjb3VudC0tKQorICAgICAgICB0bXAgPSB0bXAtPnBv
cCgpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4odG1wKTsKKyAgICBwYyArPSBwY1syXS51Lm9w
ZXJhbmQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
dHJ1ZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfanRydWUsIExMSU5UX09QX0MoMSkuanNWYWx1
ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFs
c2UpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pmYWxzZSwgIUxMSU5UX09QX0MoMSkuanNWYWx1
ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVz
cykKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3MsIGpzTGVzczx0cnVlPihleGVjLCBMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcykKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5s
ZXNzLCAhanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0
ZXIpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVhdGVyLCBqc0xlc3M8ZmFsc2U+KGV4ZWMs
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKQoreworICAgIExMSU5UX0JSQU5D
SChvcF9qbmdyZWF0ZXIsICFqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfamxlc3NlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3NlcSwganNMZXNzRXE8
dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSkKK3sKKyAgICBM
TElOVF9CUkFOQ0gob3Bfam5sZXNzZXEsICFqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVh
dGVyZXEsIGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pu
Z3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbmdyZWF0ZXJlcSwgIWpzTGVzc0Vx
PGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9pbW0pCit7Cisg
ICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBBU1NF
UlQoc2NydXRpbmVlLmlzRG91YmxlKCkpOworICAgIGRvdWJsZSB2YWx1ZSA9IHNjcnV0aW5lZS5h
c0RvdWJsZSgpOworICAgIGludDMyX3QgaW50VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih2
YWx1ZSk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYg
KHZhbHVlID09IGludFZhbHVlKSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+aW1tZWRpYXRlU3dpdGNo
SnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoaW50VmFsdWUsIGRlZmF1
bHRPZmZzZXQpOworICAgIH0gZWxzZQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0cmlu
ZykKK3sKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOwor
ICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlmICghc2NydXRp
bmVlLmlzU3RyaW5nKCkpCisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7CisgICAgZWxzZSB7
CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAg
ICAgIHBjICs9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFu
ZCkub2Zmc2V0Rm9yVmFsdWUoYXNTdHJpbmcoc2NydXRpbmVlKS0+dmFsdWUoZXhlYykuaW1wbCgp
LCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYykKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVUeXBlKCkgIT0g
RnVuY3Rpb25Db2RlCisgICAgICAgICAgIHx8ICFjb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hh
aW4oKQorICAgICAgICAgICB8fCBleGVjLT51bmNoZWNrZWRSKGNvZGVCbG9jay0+YWN0aXZhdGlv
blJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBw
cmludGYoIkNyZWF0aW5nIGZ1bmN0aW9uIVxuIik7CisjZW5kaWYKKyAgICBMTElOVF9SRVRVUk4o
Y29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbMl0udS5vcGVyYW5kKS0+bWFrZShleGVjLCBleGVj
LT5zY29wZUNoYWluKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5j
X2V4cCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwor
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhw
cihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBmdW5jdGlvbi0+bWFr
ZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpOworICAgIAorICAgIGlmICghZnVuY3Rpb24tPm5h
bWUoKS5pc051bGwoKSkgeworICAgICAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBmdW5jdGlvblNj
b3BlT2JqZWN0ID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGZ1bmN0aW9uLT5u
YW1lKCksIGZ1bmMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGZ1bmMtPnNldFNj
b3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuYy0+c2NvcGUoKS0+cHVzaChmdW5jdGlvblNjb3Bl
T2JqZWN0KSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihmdW5jKTsKK30KKworc3Rh
dGljIEhlbHBlclJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVl
LCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUo
KTsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwor
CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAg
IGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKworICAgIGlmIChraW5kID09IENvZGVGb3JD
YWxsKSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgICAgICBDYWxsVHlwZSBjYWxs
VHlwZSA9IGdldENhbGxEYXRhKGNhbGxlZSwgY2FsbERhdGEpOworICAgIAorICAgICAgICBBU1NF
UlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVKUyk7CisgICAgCisgICAgICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZUhvc3QpIHsKKyAgICAgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0dXJu
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxs
ZWUpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0Nh
bGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
KTsKKyAgICAgICAgfQorICAgICAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgICAg
ICBwcmludGYoIkNhbGwgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwgY2FsbGVlLmRl
c2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlID09IENhbGxU
eXBlTm9uZSk7CisgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFG
dW5jdGlvbkVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09
IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0
YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNh
bGxlZSwgY29uc3RydWN0RGF0YSk7CisgICAgCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0g
Q29uc3RydWN0VHlwZUpTKTsKKyAgICAKKyAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1
Y3RUeXBlSG9zdCkgeworICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUp
KTsKKyAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgCisjaWYg
TExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAgICAgcHJpbnRmKCJDb25zdHJ1Y3RvciBjYWxsZWUg
aXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYK
KworICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVOb25lKTsKKyAgICBM
TElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVj
LCBjYWxsZWUpKTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNT
dGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQsIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSwgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5r
SW5mbyA9IDApCit7CisgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVu
Y3Rpb24oY2FsbGVlQXNWYWx1ZSk7CisgICAgaWYgKCFjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkKKyAg
ICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIHBjLCBjYWxsZWVBc1ZhbHVl
LCBraW5kKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxl
ZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGNhbGxlZS0+
c2NvcGVVbmNoZWNrZWQoKSk7CisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxs
ZWUtPmV4ZWN1dGFibGUoKTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0
cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CisgICAgaWYgKGV4ZWN1dGFibGUtPmlz
SG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRK
SVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgZWxzZSB7CisgICAgICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1
bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVjQ2FsbGVlLCBjYWxsZWUtPnNjb3BlKCks
IGtpbmQpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBMTElOVF9DQUxMX1RIUk9X
KGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCksIHBjLCBlcnJvcik7CisgICAgICAgIGNvZGVCbG9j
ayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOworICAg
ICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUt
PmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihraW5kKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29k
ZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIH0KKyAgICAKKyAgICBpZiAoY2FsbExp
bmtJbmZvKSB7CisgICAgICAgIGlmIChjYWxsTGlua0luZm8tPmlzT25MaXN0KCkpCisgICAgICAg
ICAgICBjYWxsTGlua0luZm8tPnJlbW92ZSgpOworICAgICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxs
ZXIgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBjYWxsTGlua0luZm8tPmNh
bGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBleGVjQ2FsbGVyLT5jb2RlQmxvY2so
KS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+bGFz
dFNlZW5DYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+Y29k
ZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0lu
Zm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKKyAgICAgICAgaWYgKGNvZGVCbG9jaykK
KyAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChjYWxsTGlua0luZm8pOwor
ICAgIH0KKyAgICAKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgY29kZVB0
ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUgZ2Vu
ZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVw
IGEgY2FsbCBmcmFtZS4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21w
aWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIElmIHBvc3NpYmxlLCBsaW5rIHRoZSBjYWxs
J3MgaW5saW5lIGNhY2hlLgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2Rl
IGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFs
dWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4
ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAg
ZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5k
KTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNh
bGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAg
CisgICAgQVNTRVJUKHBjWzRdLnUuY2FsbExpbmtJbmZvKTsKKyAgICByZXR1cm4gc2V0VXBDYWxs
KGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCBwY1s0XS51LmNhbGxMaW5rSW5m
byk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKQoreworICAgIHJldHVybiBn
ZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfY29uc3RydWN0KQoreworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywg
Q29kZUZvckNvbnN0cnVjdCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX3Zh
cmFyZ3MpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwg
ZnJhbWUgd2hpbGUgcmVzcGVjdGluZyB0aGUgdmFyaWFibGUgYXJndW1lbnRzLgorICAgIC8vIC0g
RmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAg
IC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQg
dGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9
IGxvYWRWYXJhcmdzKAorICAgICAgICBleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJl
dGVyLT5yZWdpc3RlckZpbGUoKSwKKyAgICAgICAgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpLCBwY1s0XS51Lm9wZXJhbmQpOworICAgIExMSU5UX0NBTExf
Q0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNr
ZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxl
ZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZp
bGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BD
T0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpKTsKKyAgICAKKyAgICByZXR1cm4gc2V0VXBDYWxs
KGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpCit7CisgICAgSlNWYWx1ZSBjYWxsZWVBc1Zh
bHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0Nh
bGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFuZCk7CisgICAgZXhlY0NhbGxlZS0+
c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3Rl
ckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3Bl
Q2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRSZXR1cm5QQyhi
aXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbGxpbnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsK
KyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CisgICAgZXhlYy0+dW5jaGVja2VkUihS
ZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+
KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX2V2YWwpKTsKKyAgICAKKyAgICBpZiAoIWlzSG9z
dEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFsKSkKKyAgICAgICAgcmV0dXJu
IHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOwor
ICAgIAorICAgIGdsb2JhbERhdGEuaG9zdENhbGxSZXR1cm5WYWx1ZSA9IGV2YWwoZXhlY0NhbGxl
ZSk7CisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCit7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVC
bG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIEpTVmFsdWUgYWN0aXZhdGlvblZh
bHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIGlmICghYWN0aXZhdGlvblZhbHVlKSB7
CisgICAgICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpIHsKKyAgICAgICAgICAg
IGlmICghZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAg
IGFzQXJndW1lbnRzKHYpLT50ZWFyT2ZmKGV4ZWMpOworICAgICAgICB9CisgICAgICAgIExMSU5U
X0VORCgpOworICAgIH0KKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRp
b24oYWN0aXZhdGlvblZhbHVlKTsKKyAgICBhY3RpdmF0aW9uLT50ZWFyT2ZmKGV4ZWMtPmdsb2Jh
bERhdGEoKSk7CisgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmll
ZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSkKKyAgICAgICAg
YXNBcmd1bWVudHModiktPmRpZFRlYXJPZmZBY3RpdmF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwg
YWN0aXZhdGlvbik7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCit7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygp
LT51c2VzQXJndW1lbnRzKCkgJiYgIWV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNo
YWluKCkpOworICAgIGFzQXJndW1lbnRzKGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3Vt
ZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSktPnRlYXJPZmYoZXhlYyk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQp
Cit7CisgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsICZMTElOVF9PUCgyKSwgcGNbM10u
dS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUp
Cit7CisgICAgTExJTlRfUkVUVVJOKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvUHJpbWl0aXZl
KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpCit7Cisg
ICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICh2LmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcGMgKz0gcGNbNV0udS5vcGVyYW5kOworICAgICAgICBM
TElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4
ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gby0+c3RydWN0dXJlKCk7CisgICAgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IHN0cnVjdHVyZS0+
ZW51bWVyYXRpb25DYWNoZSgpOworICAgIGlmICghanNQcm9wZXJ0eU5hbWVJdGVyYXRvciB8fCBq
c1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQcm90b3R5cGVDaGFpbigpICE9IHN0cnVjdHVy
ZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCisgICAgICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3Ig
PSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywgbyk7CisgICAgCisgICAgTExJ
TlRfT1AoMSkgPSBKU1ZhbHVlKGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOworICAgIExMSU5UX09Q
KDIpID0gSlNWYWx1ZShvKTsKKyAgICBMTElOVF9PUCgzKSA9IFJlZ2lzdGVyOjp3aXRoSW50KDAp
OworICAgIExMSU5UX09QKDQpID0gUmVnaXN0ZXI6OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVy
YXRvci0+c2l6ZSgpKTsKKyAgICAKKyAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFt
ZXMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4
dF9wbmFtZSkKK3sKKyAgICBKU09iamVjdCogYmFzZSA9IGFzT2JqZWN0KExMSU5UX09QKDIpLmpz
VmFsdWUoKSk7CisgICAgSlNTdHJpbmcqIHByb3BlcnR5ID0gYXNTdHJpbmcoTExJTlRfT1AoMSku
anNWYWx1ZSgpKTsKKyAgICBpZiAoYmFzZS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihl
eGVjLCBwcm9wZXJ0eS0+dmFsdWUoZXhlYykpKSkgeworICAgICAgICAvLyBHbyB0byB0YXJnZXQu
CisgICAgICAgIHBjICs9IHBjWzZdLnUub3BlcmFuZDsKKyAgICB9IC8vIEVsc2UsIGRvbid0IGNo
YW5nZSB0aGUgUEMsIHNvIHRoZSBpbnRlcnByZXRlciB3aWxsIHJlbG9vcC4KKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpCit7CisgICAg
SlNWYWx1ZSB2ID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBvID0gdi50
b09iamVjdChleGVjKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBM
TElOVF9PUCgxKSA9IG87CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWlu
KCktPnB1c2gobykpOworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcG9wX3Njb3BlKQoreworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+
c2NvcGVDaGFpbigpLT5wb3AoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBzY29wZSA9IEpTU3RhdGljU2Nv
cGVPYmplY3Q6OmNyZWF0ZShleGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVy
YW5kKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpLCBEb250RGVsZXRlKTsKKyAgICBleGVjLT5zZXRT
Y29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChzY29wZSkpOworICAgIExMSU5UX1JF
VFVSTihzY29wZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdykKK3sKKyAg
ICBMTElOVF9USFJPVyhMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpCit7CisgICAgTExJTlRfVEhST1co
Y3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9k
ZWJ1ZykKK3sKKyAgICBpbnQgZGVidWdIb29rSUQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgaW50
IGZpcnN0TGluZSA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgbGFzdExpbmUgPSBwY1szXS51
Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5kZWJ1
ZyhleGVjLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExpbmUs
IGxhc3RMaW5lKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQoreworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQ
cm9maWxlclJlZmVyZW5jZSgpKS0+d2lsbEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1
ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3By
b2ZpbGVfZGlkX2NhbGwpCit7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJl
bmNlKCkpLT5kaWRFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8g
RU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVs
cGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhl
bHBlcnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEhlbHBlcnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEhlbHBlcnNfaAor
I2RlZmluZSBMTEludEhlbHBlcnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1l
c3BhY2UgTExJbnQgeworCit0eXBlZGVmIGludDY0X3QgSGVscGVyUmV0dXJuVHlwZTsKKworZXh0
ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiwg
SW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7CitleHRlcm4gIkMiIEhl
bHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24q
LCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7CisKKyNkZWZpbmUgTExJTlRfSEVMUEVSX0RF
Q0wobmFtZSkgXAorICAgIGV4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF8jI25hbWUo
RXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCisKK0xMSU5UX0hFTFBFUl9ERUNMKHRy
YWNlX3Byb2xvZ3VlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9u
X2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY2Fs
bCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpOwor
TExJTlRfSEVMUEVSX0RFQ0wodHJhY2UpOworTExJTlRfSEVMUEVSX0RFQ0woc3BlY2lhbF90cmFj
ZSk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0woZW50
cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9m
dW5jdGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0wobG9v
cF9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSk7CitMTElOVF9IRUxQRVJfREVDTChy
ZWdpc3Rlcl9maWxlX2NoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5
Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY3JlYXRlX3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVjdCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbmV3X2FycmF5KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlf
YnVmZmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfcmVnZXhwKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9ub3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2VxKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0
cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2xlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3NlcSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wb3N0X2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9kZWMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uZWdhdGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2FkZCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbXVsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2Rpdik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3JzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdXJzaGlmdCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfYml0YW5kKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRv
cik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9iaXRub3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0
YW5jZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfdHlwZW9mKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRl
ZmluZWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Jvb2xlYW4pOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2lzX251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNf
c3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3QpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
bik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcmVzb2x2ZV9za2lwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZl
X2dsb2JhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1p
Yyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxf
ZHluYW1pYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9iYXNlKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcmVzb2x2ZV93aXRoX3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9p
ZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZGVsX2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1
dF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHV0X2dldHRlcl9zZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29w
ZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qZmFsc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pn
cmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2psZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVz
c2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dp
dGNoX2ltbSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2NoYXIpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25ld19mdW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJf
b2ZmX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2dldF9wbmFtZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3BvcF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2Nv
cGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2RlYnVnKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCk7CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8g
TExJbnRIZWxwZXJzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisjZGVmaW5lIExMSW50T2ZmbGlu
ZUFzbUNvbmZpZ19oCisKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBDUFUoWDg2KQor
I2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2
IDAKKyNlbmRpZgorCisjaWYgQ1BVKEFSTXY3KQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAx
CisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NF
UlRfRElTQUJMRUQKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UK
KyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUo
QklHX0VORElBTikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2Rl
ZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKExMSU5U
X09TUl9UT19KSVQpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhF
Q1VUSU9OX1RSQUNJTkcKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQor
I2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisK
KyNlbmRpZiAvLyBMTEludE9mZmxpbmVBc21Db25maWdfaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNs
dWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSGVh
cC5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNp
bmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNGdW5j
dGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1R5cGVJbmZvLmgi
CisjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgor
I2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNl
LmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgor
I2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5j
bHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBPRkZMSU5FX0FTTV9PRkZTRVRPRihjbGF6eiwg
ZmllbGQpIE9CSkVDVF9PRkZTRVRPRihjbGF6eiwgZmllbGQpCisKK2NsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkKiBkdW1teSgp
OworfTsKKworY29uc3QgdW5zaWduZWQqIExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKQor
eworLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zm
c2V0c19leHRyYWN0b3IucmIsIGFuZCBjb250YWlucyBjb2RlCisvLyB0byBjcmVhdGUgYSB0YWJs
ZSBvZiBvZmZzZXRzLCBzaXplcywgYW5kIGEgaGVhZGVyIGlkZW50aWZ5aW5nIHdoYXQgY29tYmlu
YXRpb24gb2YKKy8vIFBsYXRmb3JtLmggbWFjcm9zIHdlIGhhdmUgc2V0LiBXZSBpbmNsdWRlIGl0
IGluc2lkZSBvZiBhIG1ldGhvZCBvbiBMTEludE9mZnNldHNFeHRyYWN0b3IKKy8vIGJlY2F1c2Ug
dGhlIGZpZWxkcyB3aG9zZSBvZmZzZXRzIHdlJ3JlIGV4dHJhY3RpbmcgYXJlIG1vc3RseSBwcml2
YXRlLiBTbyB3ZSBtYWtlIHRoZWlyCisvLyBjbGFzc2VzIGZyaWVuZHMgd2l0aCBMTEludE9mZnNl
dHNFeHRyYWN0b3IsIGFuZCBpbmNsdWRlIHRoZSBoZWFkZXIgaGVyZSwgdG8gZ2V0IHRoZSBDKysK
Ky8vIGNvbXBpbGVyIHRvIGtpbmRseSBzdGVwIGFzaWRlIGFuZCB5aWVsZCB0byBvdXIgYmVzdCBp
bnRlbnRpb25zLgorI2luY2x1ZGUgIkxMSW50RGVzaXJlZE9mZnNldHMuaCIKKyAgICByZXR1cm4g
ZXh0cmFjdG9yVGFibGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCitpbnQgbWFpbihpbnQs
IGNoYXIqKikKK3sKKyAgICAvLyBPdXQgb2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRpb24sIG1ha2Ug
c3VyZSB0aGF0IExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSBpcyBsaXZlLAorICAgIC8v
IGFuZCB0aGUgZXh0cmFjdG9yVGFibGUgaXMgbGl2ZSwgdG9vLgorICAgIHByaW50ZigiJXBcbiIs
IEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpKTsKKyAgICByZXR1cm4gMDsKK30K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50
VGh1bmtzLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJKU0ludGVyZmFjZUpJ
VC5oIgorI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJl
dGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitzdGF0aWMgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgdm9pZCAoKnRhcmdldCkoKSkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7
CisgICAgCisgICAgLy8gRklYTUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRv
IGl0IG9uIFg4NiwgYnV0IEknbSBub3Qgc3VyZSBJIGNhcmUuCisgICAgaml0Lm1vdmUoSlNJbnRl
cmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSwgSlNJ
bnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6cmVnVDAp
OworICAgIAorICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZqaXQsIEdM
T0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOwor
fQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3Vl
KTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlU
aHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JD
YWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sK
KyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9i
YWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKTsKK30KKwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xv
YmFsRGF0YSwgbGxpbnRfZXZhbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7
CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X3By
b2dyYW1fcHJvbG9ndWUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2Vu
ZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludFRodW5rc19o
CisjZGVmaW5lIExMSW50VGh1bmtzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisj
aWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisK
K25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0dsb2JhbERhdGE7CisKK25hbWVzcGFjZSBMTElu
dCB7CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2Vu
ZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9y
Q29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9i
YWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0
eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisj
ZW5kaWYgLy8gTExJbnRUaHVua3NfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyMzc0IEBACisjIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisKKyMgQ3Jhc2ggY291cnNlIG9uIHRoZSBsYW5ndWFnZSB0aGF0IHRoaXMgaXMg
d3JpdHRlbiBpbiAod2hpY2ggSSBqdXN0IGNhbGwKKyMgImFzc2VtYmx5IiBldmVuIHRob3VnaCBp
dCdzIG1vcmUgdGhhbiB0aGF0KToKKyMKKyMgLSBNb3N0bHkgZ2FzLXN0eWxlIG9wZXJhbmQgb3Jk
ZXJpbmcuIFRoZSBsYXN0IG9wZXJhbmQgdGVuZHMgdG8gYmUgdGhlCisjICAgZGVzdGluYXRpb24u
IFNvICJhIDo9IGIiIGlzIHdyaXR0ZW4gYXMgIm1vdiBiLCBhIi4gQnV0IHVubGlrZSBnYXMsCisj
ICAgY29tcGFyaXNvbnMgYXJlIGluLW9yZGVyLCBzbyAiaWYgKGEgPCBiKSIgaXMgd3JpdHRlbiBh
cworIyAgICJiaWx0IGEsIGIsIC4uLiIuCisjCisjIC0gImIiID0gYnl0ZSwgImgiID0gMTYtYml0
IHdvcmQsICJpIiA9IDMyLWJpdCB3b3JkLCAicCIgPSBwb2ludGVyLgorIyAgIEN1cnJlbnRseSB0
aGlzIGlzIGp1c3QgMzItYml0IHNvICJpIiBhbmQgInAiIGFyZSBpbnRlcmNoYW5nZWFibGUKKyMg
ICBleGNlcHQgd2hlbiBhbiBvcCBzdXBwb3J0cyBvbmUgYnV0IG5vdCB0aGUgb3RoZXIuCisjCisj
IC0gSW4gZ2VuZXJhbCwgdmFsaWQgb3BlcmFuZHMgZm9yIG1hY3JvIGludm9jYXRpb25zIGFuZCBp
bnN0cnVjdGlvbnMgYXJlCisjICAgcmVnaXN0ZXJzIChlZyAidDAiKSwgYWRkcmVzc2VzIChlZyAi
NFt0MF0iKSwgYmFzZS1pbmRleCBhZGRyZXNzZXMKKyMgICAoZWcgIjdbdDAsIHQxLCAyXSIpLCBh
YnNvbHV0ZSBhZGRyZXNzZXMgKGVnICIweGEwMDAwMDAwW10iKSwgb3IgbGFiZWxzCisjICAgKGVn
ICJfZm9vIiBvciAiLmZvbyIpLiBNYWNybyBpbnZvY2F0aW9ucyBjYW4gYWxzbyB0YWtlIGFub255
bW91cworIyAgIG1hY3JvcyBhcyBvcGVyYW5kcy4gSW5zdHJ1Y3Rpb25zIGNhbm5vdCB0YWtlIGFu
b255bW91cyBtYWNyb3MuCisjCisjIC0gTGFiZWxzIG11c3QgaGF2ZSBuYW1lcyB0aGF0IGJlZ2lu
IHdpdGggZWl0aGVyICJfIiBvciAiLiIuICBBICIuIiBsYWJlbAorIyAgIGlzIGxvY2FsIGFuZCBn
ZXRzIHJlbmFtZWQgYmVmb3JlIGNvZGUgZ2VuIHRvIG1pbmltaXplIG5hbWVzcGFjZQorIyAgIHBv
bGx1dGlvbi4gQSAiXyIgbGFiZWwgaXMgYW4gZXh0ZXJuIHN5bWJvbCAoaS5lLiAiLmdsb2JsIiku
IFRoZSAiXyIKKyMgICBtYXkgb3IgbWF5IG5vdCBiZSByZW1vdmVkIGR1cmluZyBjb2RlIGdlbiBk
ZXBlbmRpbmcgb24gd2hldGhlciB0aGUgYXNtCisjICAgY29udmVudGlvbnMgZm9yIEMgbmFtZSBt
YW5nbGluZyBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtIG1hbmRhdGUgYSAiXyIKKyMgICBwcmVmaXgu
CisjCisjIC0gQSAibWFjcm8iIGlzIGEgbGFtYmRhIGV4cHJlc3Npb24sIHdoaWNoIG1heSBiZSBl
aXRoZXIgYW5vbnltb3VzIG9yCisjICAgbmFtZWQuIEJ1dCB0aGlzIGhhcyBjYXZlYXRzLiAibWFj
cm8iIGNhbiB0YWtlIHplcm8gb3IgbW9yZSBhcmd1bWVudHMsCisjICAgd2hpY2ggbWF5IGJlIG1h
Y3JvcyBvciBhbnkgdmFsaWQgb3BlcmFuZHMsIGJ1dCBpdCBjYW4gb25seSByZXR1cm4KKyMgICBj
b2RlLiBCdXQgeW91IGNhbiBkbyBUdXJpbmctY29tcGxldGUgdGhpbmdzIHZpYSBjb250aW51YXRp
b24gcGFzc2luZworIyAgIHN0eWxlOiAibWFjcm8gZm9vIChhLCBiKSBiKGEpIGVuZCBmb28oZm9v
LCBmb28pIi4gQWN0dWFsbHksIGRvbid0IGRvCisjICAgdGhhdCwgc2luY2UgeW91J2xsIGp1c3Qg
Y3Jhc2ggdGhlIGFzc2VtYmxlci4KKyMKKyMgLSBBbiAiaWYiIGlzIGEgY29uZGl0aW9uYWwgb24g
c2V0dGluZ3MuIEFueSBpZGVudGlmaWVyIHN1cHBsaWVkIGluIHRoZQorIyAgIHByZWRpY2F0ZSBv
ZiBhbiAiaWYiIGlzIGFzc3VtZWQgdG8gYmUgYSAjZGVmaW5lIHRoYXQgaXMgYXZhaWxhYmxlCisj
ICAgZHVyaW5nIGNvZGUgZ2VuLiBTbyB5b3UgY2FuJ3QgdXNlICJpZiIgZm9yIGNvbXB1dGF0aW9u
IGluIGEgbWFjcm8sIGJ1dAorIyAgIHlvdSBjYW4gdXNlIGl0IHRvIHNlbGVjdCBkaWZmZXJlbnQg
cGllY2VzIG9mIGNvZGUgZm9yIGRpZmZlcmVudAorIyAgIHBsYXRmb3Jtcy4KKyMKKyMgLSBBcmd1
bWVudHMgdG8gbWFjcm9zIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgcmF0aGVyIHRoYW4gZHluYW1p
YyBzY29waW5nLgorIyAgIENvbnN0J3MgYWxzbyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIGFuZCBt
YXkgb3ZlcnJpZGUgKGhpZGUpIGFyZ3VtZW50cworIyAgIG9yIG90aGVyIGNvbnN0cy4gQWxsIHZh
cmlhYmxlcyAoYXJndW1lbnRzIGFuZCBjb25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAgIHRvIG9w
ZXJhbmRzLiBBZGRpdGlvbmFsbHksIGFyZ3VtZW50cyAoYnV0IG5vdCBjb25zdGFudHMpIGNhbiBi
ZSBib3VuZAorIyAgIHRvIG1hY3Jvcy4KKworCisjIFRoZXNlIGRlY2xhcmF0aW9ucyBtdXN0IG1h
dGNoIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oLgorY29uc3QgQ2FsbEZyYW1lSGVhZGVyU2l6
ZSA9IDQ4Citjb25zdCBBcmd1bWVudENvdW50ID0gLTQ4Citjb25zdCBDYWxsZXJGcmFtZSA9IC00
MAorY29uc3QgQ2FsbGVlID0gLTMyCitjb25zdCBTY29wZUNoYWluID0gLTI0Citjb25zdCBSZXR1
cm5QQyA9IC0xNgorY29uc3QgQ29kZUJsb2NrID0gLTgKKworY29uc3QgVGhpc0FyZ3VtZW50T2Zm
c2V0ID0gLUNhbGxGcmFtZUhlYWRlclNpemUgLSA4CisKKyMgRGVjbGFyZSBzb21lIGFsaWFzZXMg
Zm9yIHRoZSByZWdpc3RlcnMgd2Ugd2lsbCB1c2UuCitjb25zdCBQQyA9IHQ0CisKKyMgT2Zmc2V0
cyBuZWVkZWQgZm9yIHJlYXNvbmluZyBhYm91dCB2YWx1ZSByZXByZXNlbnRhdGlvbi4KK2lmIEJJ
R19FTkRJQU4KKyAgICBjb25zdCBUYWdPZmZzZXQgPSAwCisgICAgY29uc3QgUGF5bG9hZE9mZnNl
dCA9IDQKK2Vsc2UKKyAgICBjb25zdCBUYWdPZmZzZXQgPSA0CisgICAgY29uc3QgUGF5bG9hZE9m
ZnNldCA9IDAKK2VuZAorCisjIFZhbHVlIHJlcHJlc2VudGF0aW9uIGNvbnN0YW50cy4KK2NvbnN0
IEludDMyVGFnID0gLTEKK2NvbnN0IEJvb2xlYW5UYWcgPSAtMgorY29uc3QgTnVsbFRhZyA9IC0z
Citjb25zdCBVbmRlZmluZWRUYWcgPSAtNAorY29uc3QgQ2VsbFRhZyA9IC01Citjb25zdCBFbXB0
eVZhbHVlVGFnID0gLTYKK2NvbnN0IERlbGV0ZWRWYWx1ZVRhZyA9IC03Citjb25zdCBMb3dlc3RU
YWcgPSBEZWxldGVkVmFsdWVUYWcKKworIyBUeXBlIGNvbnN0YW50cy4KK2NvbnN0IFN0cmluZ1R5
cGUgPSA1Citjb25zdCBPYmplY3RUeXBlID0gMTAKKworIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4K
K2NvbnN0IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxCitjb25zdCBJbXBsZW1lbnRzSGFzSW5z
dGFuY2UgPSAyCitjb25zdCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID0gOAorCisjIEhl
YXAgYWxsb2NhdGlvbiBjb25zdGFudHMuCitjb25zdCBKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5k
ZXggPSAzCisKKyMgQnl0ZWNvZGUgb3BlcmFuZCBjb25zdGFudHMuCitjb25zdCBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDAKKworIyBDb2RlIHR5cGUgY29uc3RhbnRzLgor
Y29uc3QgR2xvYmFsQ29kZSA9IDAKK2NvbnN0IEV2YWxDb2RlID0gMQorY29uc3QgRnVuY3Rpb25D
b2RlID0gMgorCisjIFRoZSBpbnRlcnByZXRlciBzdGVhbHMgdGhlIHRhZyB3b3JkIG9mIHRoZSBh
cmd1bWVudCBjb3VudC4KK2NvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsgVGFn
T2Zmc2V0CisKKyMgVGhpcyBtdXN0IG1hdGNoIHd0Zi9WZWN0b3IuaC4KK2NvbnN0IFZlY3RvclNp
emVPZmZzZXQgPSAwCitjb25zdCBWZWN0b3JCdWZmZXJPZmZzZXQgPSA0CisKKyMgU3RyaW5nIGZs
YWdzLgorY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDY0CisKKyMgVXRpbGl0aWVzCittYWNy
byBjcmFzaCgpCisgICAgc3RvcmVpIDAsIDB4YmJhZGJlZWZbXQorICAgIG1vdmUgMCwgdDAKKyAg
ICBjYWxsIHQwCitlbmQKKworbWFjcm8gYXNzZXJ0KGFzc2VydGlvbikKKyAgICBpZiBBU1NFUlRf
RU5BQkxFRAorICAgICAgICBhc3NlcnRpb24oLm9rKQorICAgICAgICBjcmFzaCgpCisgICAgLm9r
OgorICAgIGVuZAorZW5kCisKK21hY3JvIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChk
ZXN0aW5hdGlvblJlZ2lzdGVyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgbHIsIGRlc3Rp
bmF0aW9uUmVnaXN0ZXIKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9wIGRlc3RpbmF0aW9uUmVn
aXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKworbWFjcm8gcmVz
dG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oc291cmNlUmVnaXN0ZXIpCisgICAgaWYgQVJN
djcKKyAgICAgICAgbW92ZSBzb3VyY2VSZWdpc3RlciwgbHIKKyAgICBlbHNpZiBYODYKKyAgICAg
ICAgcHVzaCBzb3VyY2VSZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQK
K2VuZAorCittYWNybyBkaXNwYXRjaChhZHZhbmNlKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBD
CisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQocGNP
ZmZzZXQpCisgICAgbHNoaWZ0aSAyLCBwY09mZnNldAorICAgIGFkZHAgcGNPZmZzZXQsIFBDCisg
ICAgam1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEJyYW5jaChwY09mZnNldCkKKyAgICBs
b2FkaSBwY09mZnNldCwgdDAKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDApCitlbmQK
KworbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBU
YWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGNDYWxsMihmdW5j
dGlvbiwgYXJnMSwgYXJnMikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGFyZzEsIHQwCisg
ICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBhcmcxLCAw
CisgICAgICAgIHBva2UgYXJnMiwgMQorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQK
KyAgICBjYWxsIGZ1bmN0aW9uCitlbmQKKworIyBUaGlzIGJhcmVseSB3b3Jrcy4gYXJnMyBhbmQg
YXJnNCBzaG91bGQgcHJvYmFibHkgYmUgaW1tZWRpYXRlcy4KK21hY3JvIGNDYWxsNChmdW5jdGlv
biwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCkKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGFy
ZzEsIHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICAgICAgbW92ZSBhcmczLCB0MgorICAg
ICAgICBtb3ZlIGFyZzQsIHQzCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAor
ICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICAgICAgcG9rZSBhcmczLCAyCisgICAgICAgIHBva2Ug
YXJnNCwgMworICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKKyAgICBjYWxsIGZ1bmN0
aW9uCitlbmQKKworbWFjcm8gY2FsbEhlbHBlcihoZWxwZXIpCisgICAgY0NhbGwyKGhlbHBlciwg
Y2ZyLCBQQykKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKKyMgRGVi
dWdnaW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBsaWtlIHRvIHByaW50IGFuIG9wZXJhbmQgaW4gdGhl
IGluc3RydWN0aW9uIHN0cmVhbS4gZnJvbVdoZXJlCisjIHNob3VsZCBiZSBhbiBpbW1lZGlhdGUg
aW50ZWdlciAtIGFueSBpbnRlZ2VyIHlvdSBsaWtlOyB1c2UgaXQgdG8gaWRlbnRpZnkgdGhlIHBs
YWNlIHlvdSdyZQorIyBkZWJ1Z2dpbmcgZnJvbS4gb3BlcmFuZCBzaG91bGQgbGlrZXdpc2UgYmUg
YW4gaW1tZWRpYXRlLCBhbmQgc2hvdWxkIGlkZW50aWZ5IHRoZSBvcGVyYW5kCisjIGluIHRoZSBp
bnN0cnVjdGlvbiBzdHJlYW0geW91J2QgbGlrZSB0byBwcmludCBvdXQuCittYWNybyB0cmFjZU9w
ZXJhbmQoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2Vfb3BlcmFu
ZCwgY2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92
ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8g
cHJpbnQgdGhlIHZhbHVlIG9mIGFuIG9wZXJhbmQgaW4gdGhlIGluc3RydWN0aW9uCisjIHN0cmVh
bS4gU2FtZSBhcyB0cmFjZU9wZXJhbmQoKSwgYnV0IGFzc3VtZXMgdGhhdCB0aGUgb3BlcmFuZCBp
cyBhIHJlZ2lzdGVyLCBhbmQgcHJpbnRzIGl0cworIyB2YWx1ZS4KK21hY3JvIHRyYWNlVmFsdWUo
ZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2VfdmFsdWUsIGNmciwg
UEMsIGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNm
cgorZW5kCisKK21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lO
RworICAgICAgICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkKKyAgICBlbmQKK2VuZAorCisjIENh
bGwgYSBoZWxwZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3JvIGNhbGxDYWxsSGVscGVyKGFkdmFu
Y2UsIGhlbHBlciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDLCB0MAorICAgIHN0
b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgY0NhbGwyKGhlbHBl
ciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBhY3Rpb24odDApCitlbmQKKworbWFj
cm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikKKyAgICBjYWxsQ2FsbEhlbHBlcigK
KyAgICAgICAgYWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAorICAgICAgICBtYWNybyAoY2FsbGVl
KQorICAgICAgICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxs
KCkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVQoaW5jcmVtZW50
LCBhY3Rpb24pCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHQwCisgICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1
dGVDb3VudGVyW3QwXSwgLmNvbnRpbnVlCisgICAgICAgIGFjdGlvbigpCisgICAgLmNvbnRpbnVl
OgorICAgIGVuZAorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBj
aGVja1N3aXRjaFRvSklUKAorICAgICAgICAxLAorICAgICAgICBtYWNybyAoKQorICAgICAgICAg
ICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICAgICAgICAg
IGNDYWxsMihfbGxpbnRfbG9vcF9vc3IsIGNmciwgUEMpCisgICAgICAgICAgICBtb3ZlIHQxLCBj
ZnIKKyAgICAgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgICAgICBqbXAgdDAKKyAg
ICAgICAgLnJlY292ZXI6CisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zm
c2V0W2Nmcl0sIFBDCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklU
Rm9yRXBpbG9ndWUoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEwLAorICAgICAg
ICBtYWNybyAoKQorICAgICAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVwbGFjZSkKKyAgICAg
ICAgZW5kKQorZW5kCisKK21hY3JvIGFzc2VydE5vdENvbnN0YW50KGluZGV4KQorICAgIGFzc2Vy
dChtYWNybyAob2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBvayBl
bmQpCitlbmQKKworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCBy
ZWdpc3RlcnMuIEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENvbnN0YW50T3JW
YXJpYWJsZShpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGlu
ZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5
bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVj
dG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBv
ZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8g
KHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9hZHAgVGFn
T2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtw
YXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBh
eWxvYWQgbWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLiBJbmRleCBtYXkgYmUgY2xvYmJlcmVkLgor
bWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAg
ICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoK
KyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFnCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2Nv
bnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3RhZ10sIHRhZworICAgICMgVGhl
cmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+
PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxs
IGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgor
ICAgIGxzaGlmdGkgMywgaW5kZXgKKyAgICBhZGRwIGluZGV4LCB0YWcKKyAgICBsb2FkcCBQYXls
b2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQKKyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnCisu
ZG9uZToKK2VuZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3Rv
bShpbmRleCwgdGFnQ2hlY2ssIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxv
YWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
cGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2Yg
ZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2
YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIHRhZ0NoZWNrKFRh
Z09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0pCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXls
b2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxv
YWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QgbXV0YXRlZC4gVXNl
CisjIHRoaXMgaWYgeW91IGtub3cgd2hhdCB0aGUgdGFnIG9mIHRoZSB2YXJpYWJsZSBzaG91bGQg
YmUuIERvaW5nIHRoZSB0YWcKKyMgdGVzdCBhcyBwYXJ0IG9mIGxvYWRpbmcgdGhlIHZhcmlhYmxl
IHJlZHVjZXMgcmVnaXN0ZXIgdXNlLCBidXQgbWF5IG5vdAorIyBiZSBmYXN0ZXIgdGhhbiBkb2lu
ZyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlIGZvbGxvd2VkIGJ5IGEgYnJhbmNoIG9uIHRoZQorIyB0
YWcuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRU
YWcsIHBheWxvYWQsIHNsb3cpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdD
dXN0b20oCisgICAgICAgIGluZGV4LAorICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBiaW5lcSBh
Y3R1YWxUYWcsIGV4cGVjdGVkVGFnLCBzbG93IGVuZCwKKyAgICAgICAgcGF5bG9hZCkKK2VuZAor
CittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZChpbmRleCwgcGF5
bG9hZCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgKKyAgICAg
ICAgaW5kZXgsCisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGVuZCwKKyAgICAgICAgcGF5bG9h
ZCkKK2VuZAorCittYWNybyB3cml0ZUJhcnJpZXIodGFnLCBwYXlsb2FkKQorICAgICMgTm90aGlu
ZyB0byBkbywgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGdlbmVyYXRpb25hbCBvciBpbmNyZW1lbnRh
bCBjb2xsZWN0b3IuCitlbmQKKworbWFjcm8gdmFsdWVQcm9maWxlKHRhZywgcGF5bG9hZCwgcHJv
ZmlsZSkKKyAgICBzdG9yZWkgdGFnLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNl
dFtwcm9maWxlXQorICAgIHN0b3JlaSBwYXlsb2FkLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyAr
IFBheWxvYWRPZmZzZXRbcHJvZmlsZV0KK2VuZAorCisKKyMgSW5kaWNhdGUgdGhlIGJlZ2lubmlu
ZyBvZiBMTEludC4KK19sbGludF9iZWdpbjoKKyAgICBjcmFzaCgpCisKKworIyBFbnRyeXBvaW50
cyBpbnRvIHRoZSBpbnRlcnByZXRlcgorCittYWNybyBmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tH
ZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lz
dGVyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwg
dGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2Nr
Rm9yQ2FsbFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9h
ZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9l
eGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBGdW5j
dGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ29uc3RydWN0W3RhcmdldFJlZ2lzdGVyXSwg
dGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0
YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIK
K2VuZAorCittYWNybyBmdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAg
ICBzdG9yZXAgc291cmNlUmVnaXN0ZXIsIENvZGVCbG9ja1tjZnJdCitlbmQKKworbWFjcm8gbm90
RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCisgICAgIyBOb3RoaW5nIHRv
IGRvIQorZW5kCisKKyMgRG8gdGhlIGJhcmUgbWluaW11bSByZXF1aXJlZCB0byBleGVjdXRlIGNv
ZGUuIFNldHMgdXAgdGhlIFBDLCBsZWF2ZSB0aGUgQ29kZUJsb2NrKgorIyBpbiB0MS4gTWF5IGFs
c28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1IuCittYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tH
ZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NySGVscGVyLCB0cmFjZUhlbHBlcikKKyAgICBwcmVz
ZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpCisgICAgCisgICAgIyBTZXQgdXAgdGhlIGNh
bGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1IuCisgICAgc3RvcmVwIHQyLCBSZXR1
cm5QQ1tjZnJdCisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcKKyAgICAgICAgY2FsbEhlbHBlcih0
cmFjZUhlbHBlcikKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCisgICAgaWYgSklU
X0VOQUJMRUQKKyAgICAgICAgYmFkZGlzIDUsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3Vu
dGVyW3QxXSwgLmNvbnRpbnVlCisgICAgICAgIGNDYWxsMihvc3JIZWxwZXIsIGNmciwgUEMpCisg
ICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAgICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAgICBs
b2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9y
ZVJldHVybih0MikKKyAgICAgICAgam1wIHQwCisgICAgLnJlY292ZXI6CisgICAgICAgIGNvZGVC
bG9ja0dldHRlcih0MSkKKyAgICAuY29udGludWU6CisgICAgZW5kCisgICAgY29kZUJsb2NrU2V0
dGVyKHQxKQorICAgIAorICAgICMgU2V0IHVwIHRoZSBQQy4KKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9u
czo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworZW5kCisKKyMg
RXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgp
IGxlYXZlcyBiZWhpbmQuCisjIE11c3QgY2FsbCBkaXNwYXRjaCgwKSBhZnRlciBjYWxsaW5nIHRo
aXMuCittYWNybyBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTa2lwKQorICAgICMg
UHJvZmlsZSB0aGUgYXJndW1lbnRzLiBVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIGNob2ljZSBi
dXQgdG8gZG8gdGhpcy4gVGhpcworICAgICMgY29kZSBpcyBwcmV0dHkgaG9ycmVuZG91cyBiZWNh
dXNlIG9mIHRoZSBkaWZmZXJlbmNlIGluIG9yZGVyaW5nIGJldHdlZW4KKyAgICAjIGFyZ3VtZW50
cyBhbmQgdmFsdWUgcHJvZmlsZXMsIHRoZSBkZXNpcmUgdG8gaGF2ZSBhIHNpbXBsZSBsb29wLWRv
d24tdG8temVybworICAgICMgbG9vcCwgYW5kIHRoZSBkZXNpcmUgdG8gdXNlIG9ubHkgdGhyZWUg
cmVnaXN0ZXJzIHNvIGFzIHRvIHByZXNlcnZlIHRoZSBQQyBhbmQKKyAgICAjIHRoZSBjb2RlIGJs
b2NrLiBJdCBpcyBsaWtlbHkgdGhhdCB0aGlzIGNvZGUgc2hvdWxkIGJlIHJld3JpdHRlbiBpbiBh
IG1vcmUKKyAgICAjIG9wdGltYWwgd2F5IGZvciBhcmNoaXRlY3R1cmVzIHRoYXQgaGF2ZSBtb3Jl
IHRoYW4gZml2ZSByZWdpc3RlcnMgYXZhaWxhYmxlCisgICAgIyBmb3IgYXJiaXRyYXJ5IHVzZSBp
biB0aGUgaW50ZXJwcmV0ZXIuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNb
dDFdLCB0MAorICAgIGFkZGkgLXByb2ZpbGVBcmdTa2lwLCB0MCAjIFVzZSBhZGRpIGJlY2F1c2Ug
dGhhdCdzIHdoYXQgaGFzIHRoZSBwZWVwaG9sZQorICAgIGFzc2VydChtYWNybyAob2spIGJpZ3Rl
cSB0MCwgMCwgb2sgZW5kKQorICAgIGJ0aXogdDAsIC5hcmd1bWVudFByb2ZpbGVEb25lCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcyArIFZlY3RvckJ1ZmZlck9m
ZnNldFt0MV0sIHQzCisgICAgbXVsaSBzaXplb2YgVmFsdWVQcm9maWxlLCB0MCwgdDIgIyBBYWFh
YWhoaGghIE5lZWQgc3RyZW5ndGggcmVkdWN0aW9uIQorICAgIG5lZ2kgdDAKKyAgICBsc2hpZnRp
IDMsIHQwCisgICAgYWRkcCB0MiwgdDMKKy5hcmd1bWVudFByb2ZpbGVMb29wOgorICAgIGxvYWRp
IFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNldCArIDggLSBwcm9maWxlQXJnU2tpcCAqIDhb
Y2ZyLCB0MF0sIHQyCisgICAgc3VicCBzaXplb2YgVmFsdWVQcm9maWxlLCB0MworICAgIHN0b3Jl
aSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBzaXplb2YgVmFsdWVQcm9maWxlICsgVmFsdWVQcm9maWxl
OjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0
ICsgUGF5bG9hZE9mZnNldCArIDggLSBwcm9maWxlQXJnU2tpcCAqIDhbY2ZyLCB0MF0sIHQyCisg
ICAgc3RvcmVpIHQyLCBwcm9maWxlQXJnU2tpcCAqIHNpemVvZiBWYWx1ZVByb2ZpbGUgKyBWYWx1
ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgYmFkZGlueiA4LCB0
MCwgLmFyZ3VtZW50UHJvZmlsZUxvb3AKKy5hcmd1bWVudFByb2ZpbGVEb25lOgorICAgIAorICAg
ICMgQ2hlY2sgc3RhY2sgaGVpZ2h0LgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1DYWxsZWVS
ZWdpc3RlcnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QxXSwg
dDIKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmludGVycHJldGVyW3QyXSwgdDIgICAjIEZJWE1F
OiBDYW4gZ2V0IHRvIHRoZSBSZWdpc3RlckZpbGUgZnJvbSB0aGUgSklUU3RhY2tGcmFtZQorICAg
IGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQwLCBjZnIsIHQwCisgICAgYnBhZXEgSW50ZXJwcmV0
ZXI6Om1fcmVnaXN0ZXJGaWxlICsgUmVnaXN0ZXJGaWxlOjptX2VuZFt0Ml0sIHQwLCAuc3RhY2tI
ZWlnaHRPSworCisgICAgIyBTdGFjayBoZWlnaHQgY2hlY2sgZmFpbGVkIC0gbmVlZCB0byBjYWxs
IGEgaGVscGVyLgorICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlZ2lzdGVyX2ZpbGVfY2hlY2spCisu
c3RhY2tIZWlnaHRPSzoKK2VuZAorCisjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEs
IHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgorbWFjcm8gZnVuY3Rpb25B
cml0eUNoZWNrKGRvbmVMYWJlbCwgaGVscGVyKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBB
cmd1bWVudENvdW50W2Nmcl0sIHQwCisgICAgYmlhZXEgdDAsIENvZGVCbG9jazo6bV9udW1QYXJh
bWV0ZXJzW3QxXSwgZG9uZUxhYmVsCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykgICAjIFRo
aXMgaGVscGVyIGhhcyBhIHNpbXBsZSBwcm90b2NvbDogdDAgPSAwID0+IG5vIGVycm9yLCB0MCAh
PSAwID0+IGVycm9yCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYnRpeiB0MCwgLmNvbnRpbnVlCisg
ICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNH
bG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0
YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisuY29udGludWU6CisgICAgIyBSZWxvYWQg
Q29kZUJsb2NrIGFuZCBQQywgc2luY2UgdGhlIGhlbHBlciBjbG9iYmVyZWQgaXQuCisgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9u
c1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpJbnN0cnVjdGlvbnM6Om1faW5zdHJ1Y3Rp
b25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKKyAgICBqbXAgZG9uZUxhYmVsCitlbmQK
KworX2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6CisgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2Rl
QmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3Ny
LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfZXZh
bF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90
RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9w
cm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9w
cm9sb2d1ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1
bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxs
LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCisuZnVuY3Rpb25Gb3JD
YWxsQmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigwKQorICAgIGRpc3BhdGNoKDAp
CisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlOgorICAgIHBy
b2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVC
bG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0LCBfbGxp
bnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKKy5mdW5jdGlvbkZvckNv
bnN0cnVjdEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKKyAgICBkaXNwYXRj
aCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2s6CisgICAg
cHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9j
a1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrLCBf
bGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2so
LmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfbGxpbnRfaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKKwor
CitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1
ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tT
ZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNr
LCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQorICAgIGZ1bmN0aW9uQXJp
dHlDaGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX2xsaW50X2hlbHBlcl9jb25zdHJ1
Y3RfYXJpdHlDaGVjaykKKworIyBJbnN0cnVjdGlvbiBpbXBsZW1lbnRhdGlvbnMKKworX2xsaW50
X29wX2VudGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgdDIKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFyc1t0Ml0sIHQyCisgICAgYnRpeiB0
MiwgLm9wRW50ZXJEb25lCisgICAgbW92ZSBVbmRlZmluZWRUYWcsIHQwCisgICAgbW92ZSAwLCB0
MQorLm9wRW50ZXJMb29wOgorICAgIHN1YmkgMSwgdDIKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNl
dFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQor
ICAgIGJ0aW56IHQyLCAub3BFbnRlckxvb3AKKy5vcEVudGVyRG9uZToKKyAgICBkaXNwYXRjaCgx
KQorCisKK19sbGludF9vcF9jcmVhdGVfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBF
bXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBY3RpdmF0aW9uRG9uZQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKKy5vcENyZWF0ZUFjdGl2YXRpb25Eb25lOgor
ICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luaXRfbGF6eV9yZWc6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgMCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NyZWF0ZV9hcmd1bWVudHM6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQXJndW1lbnRzRG9u
ZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQorLm9wQ3Jl
YXRlQXJndW1lbnRzRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGFsbG9jYXRlQmFz
aWNKU09iamVjdChzaXplQ2xhc3NJbmRleCwgY2xhc3NJbmZvT2Zmc2V0LCBzdHJ1Y3R1cmUsIHJl
c3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBzbG93Q2FzZSkKKyAgICBjb25zdCBvZmZzZXRPZk15
U2l6ZUNsYXNzID0gSlNHbG9iYWxEYXRhOjpoZWFwICsgSGVhcDo6bV9vYmplY3RTcGFjZSArIE1h
cmtlZFNwYWNlOjptX3ByZWNpc2VTaXplQ2xhc3NlcyArIHNpemVDbGFzc0luZGV4ICogc2l6ZW9m
IE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MKKyAgICAKKyAgICAjIEZJWE1FOiB3ZSBjYW4gZ2V0IHRo
ZSBnbG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRoZSBzdGFjay4KKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgc2NyYXRjaDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVtz
Y3JhdGNoMV0sIHNjcmF0Y2gxCisgICAgCisgICAgIyBHZXQgdGhlIG9iamVjdCBmcm9tIHRoZSBm
cmVlIGxpc3QuICAgIAorICAgIGxvYWRwIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFj
ZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXSwgcmVzdWx0CisgICAgYnRweiBy
ZXN1bHQsIHNsb3dDYXNlCisgICAgCisgICAgIyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBm
cmVlIGxpc3QuCisgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0
Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmlyc3RG
cmVlQ2VsbFtzY3JhdGNoMV0KKworICAgICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgorICAgIGxv
YWRwIGNsYXNzSW5mb09mZnNldFtzY3JhdGNoMV0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0
Y2gyLCBbcmVzdWx0XQorICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
cmVzdWx0XQorICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCisg
ICAgYWRkcCBzaXplb2YgSlNPYmplY3QsIHJlc3VsdCwgc2NyYXRjaDEKKyAgICBzdG9yZXAgc2Ny
YXRjaDEsIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVtyZXN1bHRdCitlbmQKKworX2xsaW50
X29wX2NyZWF0ZV90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIENlbGxUYWcsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEK
KyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIE9i
amVjdFR5cGUsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1faW5oZXJp
dG9ySURbdDBdLCB0MgorICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgYWxsb2Nh
dGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRh
Ojpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhpc1Ns
b3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAg
IGRpc3BhdGNoKDMpCisKKy5vcENyZWF0ZVRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9jcmVhdGVfdGhpcykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9nZXRf
Y2FsbGVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBs
b2FkcCBQYXlsb2FkT2Zmc2V0ICsgQ2FsbGVlW2Nmcl0sIHQxCisgICAgc3RvcmVpIENlbGxUYWcs
IFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NvbnZlcnRfdGhpczoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MAorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90
eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNTbG93CisgICAgZGlzcGF0Y2goMikK
KworLm9wQ29udmVydFRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jb252
ZXJ0X3RoaXMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X29iamVjdDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxP
YmplY3Q6Om1fZW1wdHlPYmplY3RTdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGFsbG9jYXRlQmFzaWNK
U09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5h
bE9iamVjdENsYXNzSW5mbywgdDEsIHQwLCB0MiwgdDMsIC5vcE5ld09iamVjdFNsb3cpCisgICAg
bG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4
XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNo
KDIpCisKKy5vcE5ld09iamVjdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25l
d19vYmplY3QpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X2FycmF5OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2FycmF5
KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19hcnJheV9idWZmZXI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXlf
YnVmZmVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19yZWdleHA6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfcmVnZXhw
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX21vdjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bfbm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5vcE5vdFNs
b3cKKyAgICB4b3JpIDEsIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgz
KQorCisub3BOb3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ub3QpCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAs
IHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcEVxU2xvdworICAgIGJpZXEgdDIsIENlbGxU
YWcsIC5vcEVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cKKyAgICBsb2Fk
aSA0W1BDXSwgdDIKKyAgICBjaWVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywg
VGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wRXFTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9lcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9lcV9udWxsOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BD
XSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAg
ICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBU
eXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1w
IC5vcEVxTnVsbE5vdEltbWVkaWF0ZQorLm9wRXFOdWxsSW1tZWRpYXRlOgorICAgIGNpZXEgdDEs
IE51bGxUYWcsIHQyCisgICAgY2llcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIG9yaSB0Miwg
dDEKKy5vcEVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zm
c2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhd
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVxOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93CisgICAgYmllcSB0
MiwgQ2VsbFRhZywgLm9wTmVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFTbG93
CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2luZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBC
b29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BOZXFTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXEpCisgICAgZGlzcGF0Y2goNCkKKyAgICAKKworX2xs
aW50X29wX25lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBs
b2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbEltbWVkaWF0
ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRieiBTdHJ1Y3R1
cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQsIHQxCisgICAgam1wIC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKKy5vcE5lcU51bGxJbW1l
ZGlhdGU6CisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2luZXEgdDEsIFVuZGVmaW5l
ZFRhZywgdDEKKyAgICBhbmRpIHQyLCB0MQorLm9wTmVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBz
dG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBzdHJp
Y3RFcShlcXVhbGl0eU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEp
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0
MiwgdDMsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmluZXEgdDIs
IENlbGxUYWcsIC5ub3RTdHJpbmcKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwg
dDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKKyAgICBiYm5lcSBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5v
dFN0cmluZworICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlw
ZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93Cisubm90U3RyaW5nOgorICAgIGxvYWRpIDRbUENdLCB0
MgorICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDApCisgICAgc3RvcmVpIEJvb2xlYW5U
YWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVs
cGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50X29wX3N0cmljdGVxOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkg
Y2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9zdHJpY3RlcSkKKwor
CitfbGxpbnRfb3BfbnN0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RF
cShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBl
bmQsIF9sbGludF9oZWxwZXJfbnN0cmljdGVxKQorCisKK19sbGludF9vcF9sZXNzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzcykKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzZXEpCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2dyZWF0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
Z3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfZ3JlYXRlcmVxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3ByZV9pbmM6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZUluY1Nsb3cKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJhZGRpbyAxLCB0MSwgLm9wUHJlSW5j
U2xvdworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3Bh
dGNoKDIpCisKKy5vcFByZUluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3By
ZV9pbmMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJlX2RlYzoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNTbG93CisgICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKwor
Lm9wUHJlRGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2RlYykKKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3N0X2luYzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdEluY1Nsb3cKKyAgICBiaWVx
IHQwLCB0MSwgLm9wUG9zdEluY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYmFkZGlvIDEsIHQzLCAub3BQb3N0SW5jU2xv
dworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVp
IHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCisub3BQb3N0SW5jRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQ
b3N0SW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9pbmMpCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcG9zdF9kZWM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3REZWNTbG93CisgICAgYmllcSB0
MCwgdDEsIC5vcFBvc3REZWNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDIKKyAgICBtb3ZlIHQyLCB0MworICAgIGJzdWJpbyAxLCB0MywgLm9wUG9zdERlY1Nsb3cK
KyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0
MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQorLm9wUG9zdERlY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKworLm9wUG9z
dERlY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfZGVjKQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX3RvX2pzbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmllcSB0MiwgSW50MzJUYWcsIC5vcFRv
SnNudW1iZXJJc0ludAorICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BUb0pzbnVtYmVy
U2xvdworLm9wVG9Kc251bWJlcklzSW50OgorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlz
cGF0Y2goMykKKworLm9wVG9Kc251bWJlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3RvX2pzbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25lZ2F0ZToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQ
Q10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQorICAgIGJpbmVx
IHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3ZmZmZmZm
ZiwgLm9wTmVnYXRlU2xvdworICAgIG5lZ2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09m
ZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4
XQorICAgIGRpc3BhdGNoKDMpCisub3BOZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQxLCBMb3dl
c3RUYWcsIC5vcE5lZ2F0ZVNsb3cKKyAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAgc3RvcmVp
IHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOZWdhdGVTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9uZWdhdGUpCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBi
aW5hcnlPcEN1c3RvbVN0b3JlKGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0
aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMU5v
dEludAorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGxvYWRpIDRbUENd
LCB0MgorICAgIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0MywgdDEsIHQwLCAuc2xvdywgdDIp
CisgICAgZGlzcGF0Y2goNSkKKworLm9wMU5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMg
ZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291bGQgYmUgYW55dGhp
bmcuCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQzLCBMb3dlc3RUYWcs
IC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAg
Y2kyZCB0MSwgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJs
ZToKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGxvYWRpIDRb
UENdLCB0MQorICAgIGZpaTJkIHQwLCB0MiwgZnQwCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwg
ZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5v
cDJOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50LCB0aGUg
c2Vjb25kIG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QuCisgICAgbG9hZGkgNFtQQ10sIHQyCisg
ICAgYmlhIHQzLCBMb3dlc3RUYWcsIC5zbG93CisgICAgY2kyZCB0MCwgZnQwCisgICAgZmlpMmQg
dDEsIHQzLCBmdDEKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0
MCwgW2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBl
cihoZWxwZXIpCisgICAgZGlzcGF0Y2goNSkKK2VuZAorCittYWNybyBiaW5hcnlPcChpbnRlZ2Vy
T3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBiaW5hcnlPcEN1c3RvbVN0
b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkK
KyAgICAgICAgICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAg
ICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAg
ICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgIGVu
ZCwKKyAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCitlbmQKKworX2xsaW50X29wX2Fk
ZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgc2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9hZGQpCisKKworX2xsaW50X29wX211bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCBy
aWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjb25zdCBzY3JhdGNoID0gaW50MzJUYWcg
ICAjIFdlIGtub3cgdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIGludDMyVGFnIHJlZ2lzdGVyIHNpbmNl
IGl0IGhhcyBhIGNvbnN0YW50LgorICAgICAgICAgICAgbW92ZSByaWdodCwgc2NyYXRjaAorICAg
ICAgICAgICAgYm11bGlvIGxlZnQsIHNjcmF0Y2gsIHNsb3cKKyAgICAgICAgICAgIGJ0aW56IHNj
cmF0Y2gsIC5kb25lCisgICAgICAgICAgICBiaWx0IGxlZnQsIDAsIHNsb3cKKyAgICAgICAgICAg
IGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgLmRvbmU6CisgICAgICAgICAgICBzdG9yZWkg
SW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHNj
cmF0Y2gsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQpIG11bGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX211bCkKKworCitfbGxpbnRfb3Bfc3ViOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBic3ViaW8g
bGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIHN1YmQg
bGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3N1YikKKworCitfbGxpbnRf
b3BfZGl2OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAor
ICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAg
ICAgICAgIGNpMmQgbGVmdCwgZnQwCisgICAgICAgICAgICBjaTJkIHJpZ2h0LCBmdDEKKyAgICAg
ICAgICAgIGRpdmQgZnQwLCBmdDEKKyAgICAgICAgICAgIGJjZDJpIGZ0MSwgcmlnaHQsIC5ub3RJ
bnQKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhd
CisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0K
KyAgICAgICAgICAgIGptcCAuZG9uZQorICAgICAgICAubm90SW50OgorICAgICAgICAgICAgc3Rv
cmVkIGZ0MSwgW2NmciwgaW5kZXgsIDhdCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgZGl2ZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfZGl2KQorCisKK19sbGludF9vcF9tb2Q6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9tb2QpCisgICAgZGlzcGF0Y2goNCkK
KworCittYWNybyBiaXRPcChvcGVyYXRpb24sIGhlbHBlciwgYWR2YW5jZSkKKyAgICBsb2FkaSAx
MltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDAp
CisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywg
LnNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xvdykK
KyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCisKKy5zbG93Ogor
ICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCitlbmQKKworX2xs
aW50X29wX2xzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfbHNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF9yc2hp
ZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRf
aGVscGVyX3JzaGlmdCwKKyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfdXJzaGlmdDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
c2xvdykKKyAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0CisgICAgICAgICAgICBiaWx0
IHJpZ2h0LCAwLCBzbG93CisgICAgICAgIGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl91cnNo
aWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF9iaXRhbmQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGFuZGkg
bGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdGFuZCwKKyAgICAgICAg
NSkKKworCitfbGxpbnRfb3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRP
cCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQsIHJpZ2h0IGVu
ZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXR4b3IsCisgICAgICAgIDUpCisKKworX2xsaW50
X29wX2JpdG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX2JpdG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRub3Q6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBiaW5lcSB0Miwg
SW50MzJUYWcsIC5vcEJpdG5vdFNsb3cKKyAgICBub3RpIHQzCisgICAgc3RvcmVpIHQyLCBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BCaXRub3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9iaXRub3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfY2hlY2tf
aGFzX2luc3RhbmNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDEK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAsIC5vcENo
ZWNrSGFzSW5zdGFuY2VTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBd
LCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgZGlz
cGF0Y2goMikKKworLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9pbnN0YW5jZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIENoZWNrIHRoYXQg
YmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9yLgorICAg
ICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuCisgICAgbG9hZGkgMTJbUENdLCB0
MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKHQxLCB0MCkKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6
bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJ
bnN0YW5jZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICAKKyAgICAjIEFjdHVhbGx5IGRvIHRoZSB3
b3JrLgorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEluc3RhbmNlb2ZT
bG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGJiYiBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9w
SW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQorICAgIAor
ICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCisgICAgbW92
ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxvb3A6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0Ml0sIHQyCisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZz
ZXRbdDJdLCB0MgorICAgIGJwZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQorICAgIGJ0aW56
IHQyLCAub3BJbnN0YW5jZW9mTG9vcAorCisgICAgbW92ZSAwLCB0MAorLm9wSW5zdGFuY2VvZkRv
bmU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5v
cEluc3RhbmNlb2ZTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbnN0YW5jZW9m
KQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3R5cGVvZjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3R5cGVvZikKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9pc191bmRlZmluZWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc191bmRlZmluZWQpCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfaXNfYm9vbGVhbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Jvb2xlYW4pCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfaXNfbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfaXNfbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX2lzX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2lzX3N0cmluZykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19v
YmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9pc19vYmplY3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfZnVuY3Rpb246
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19m
dW5jdGlvbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pbjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX3Jlc29sdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX3Jlc29sdmVfc2tpcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Jlc29sdmVfc2tpcCkKKyAgICBkaXNwYXRjaCg1KQorCisKK21hY3Jv
IHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dz
OgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAg
IFByb3BlcnR5IGlkZW50aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2suCisgICAgIyAxMltQ
Q10gIFN0cnVjdHVyZSBwb2ludGVyLCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVy
YXRvci4KKyAgICAjIDE2W1BDXSAgT2Zmc2V0IGluIGdsb2JhbCBvYmplY3QsIGluaXRpYWxpemVk
IHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cK
KyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9y
YWdlW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
c3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQwCisgICAg
dmFsdWVQcm9maWxlKHQyLCB0MywgdDApCitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFs
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICByZXNvbHZlR2xvYmFsKDYsIC5vcFJlc29sdmVH
bG9iYWxTbG93KQorICAgIGRpc3BhdGNoKDYpCisKKy5vcFJlc29sdmVHbG9iYWxTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNwYXRjaCg2
KQorCisKKyMgR2l2ZXMgeW91IHRoZSBzY29wZSBpbiB0MCwgd2hpbGUgYWxsb3dpbmcgeW91IHRv
IG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0aGUKKyMgc2NvcGVzIGFz
IHRoZXkgYXJlIHRyYXZlcnNlZC4gc2NvcGVDaGVjaygpIGlzIGNhbGxlZCB3aXRoIHR3byBhcmd1
bWVudHM6IHRoZSByZWdpc3RlcgorIyBob2xkaW5nIHRoZSBzY29wZSwgYW5kIGEgcmVnaXN0ZXIg
dGhhdCBjYW4gYmUgdXNlZCBmb3Igc2NyYXRjaC4gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QKKyMg
dXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQgc3R1ZmYgaW4gdDMgaWYgbmVlZCBiZS4KK21hY3JvIGdl
dFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2FkcCBTY29w
ZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIGRlQnJ1aWppbkluZGV4
T3BlcmFuZCwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorICAgIAorICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MQorICAgIGJpbmVxIENvZGVCbG9jazo6bV9jb2RlVHlwZVt0MV0sIEZ1
bmN0aW9uQ29kZSwgLmxvb3AKKyAgICBidGJ6IENvZGVCbG9jazo6bV9uZWVkc0Z1bGxTY29wZUNo
YWluW3QxXSwgLmxvb3AKKyAgICAKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZhdGlvblJl
Z2lzdGVyW3QxXSwgdDEKKworICAgICMgTmVlZCB0byBjb25kaXRpb25hbGx5IHNraXAgb3ZlciBv
bmUgc2NvcGUuCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcs
IC5ub0FjdGl2YXRpb24KKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNo
YWluTm9kZTo6bmV4dFt0MF0sIHQwCisubm9BY3RpdmF0aW9uOgorICAgIHN1YmkgMSwgdDIKKyAg
ICAKKyAgICBidGl6IHQyLCAuZG9uZQorLmxvb3A6CisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisg
ICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MAorICAgIHN1YmkgMSwgdDIKKyAg
ICBidGlueiB0MiwgLmxvb3AKKworLmRvbmU6CitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJh
bWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0aXZhdGlv
blN0cnVjdHVyZVt0M10sIHQzCisgICAgZ2V0U2NvcGUoCisgICAgICAgIDIwW1BDXSwKKyAgICAg
ICAgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKQorICAgICAgICAgICAgbG9hZHAgU2NvcGVDaGFpbk5v
ZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdwor
ICAgICAgICBlbmQpCisgICAgcmVzb2x2ZUdsb2JhbCg3LCAub3BSZXNvbHZlR2xvYmFsRHluYW1p
Y1Nsb3cpCisgICAgZGlzcGF0Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMpCisgICAgZGlzcGF0Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbF9keW5hbWlj
KQorICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX2dldF9zY29wZWRfdmFyOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQ
Q10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIEluZGV4IG9mIHJl
Z2lzdGVyIGluIHRoZSBzY29wZS4KKyAgICAjIDEyW1BDXSAgRGUgQnJ1aWppbiBpbmRleC4KKyAg
ICBnZXRTY29wZSgxMltQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRp
IDRbUENdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2Rl
OjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJz
W3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgdDMKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBs
b2FkaSAxNltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MCwgdDEpCisgICAgZGlzcGF0
Y2goNSkKKworCitfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGdldFNjb3BlKDhbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBs
b2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDMsIHQyKQor
ICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHdyaXRlQmFycmllcih0MywgdDIpCisgICAgbG9hZHAg
U2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVj
dDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W3QwLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwg
dDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxv
YWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAs
IHQxLCA4XSwgdDEKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0
b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGxvYWRpIDEyW1BDXSwgdDMK
KyAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9wdXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fcmVn
aXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisg
ICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQyLCB0MykKKyAgICBzdG9yZWkg
dDIsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W3Qw
LCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX2Jhc2U6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZl
X2Jhc2UpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZW5zdXJlX3Byb3BlcnR5X2V4
aXN0czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bf
cmVzb2x2ZV93aXRoX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19s
bGludF9vcF9yZXNvbHZlX3dpdGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQorICAgIGRpc3BhdGNoKDUp
CisKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBX
ZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBk
byBub3QgbW9kaWZ5IHRoZQorICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cgZm9y
IHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKKyAgICAjIHBpbmct
cG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3
aWxsIGNvbnRpbnVlCisgICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBB
dCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAorICAgICMgd2Ugd291bGQg
aGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAx
NltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcs
IHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZHAgSlNP
YmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKKyAgICBicG5lcSBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAg
bG9hZGkgVGFnT2Zmc2V0W3QwLCB0Ml0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwg
dDJdLCB0MgorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVp
IHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgMzJbUENdLCB0MQorICAg
IHZhbHVlUHJvZmlsZSh0MywgdDIsIHQxKQorICAgIGRpc3BhdGNoKDkpCisKKy5vcEdldEJ5SWRT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfaWQpCisgICAgZGlzcGF0
Y2goOSkKKworCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRz
TGVuZ3RoU2xvdworICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0s
IHQyCisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlz
cGF0Y2goNCkKKworLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10s
IHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBi
cG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgbG9h
ZGkgMjBbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MCwgdDIp
CisgICAgd3JpdGVCYXJyaWVyKHQwLCB0MikKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0Mywg
dDFdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBkaXNwYXRjaCg5
KQorCisub3BQdXRCeUlkU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5
X2lkKQorICAgIGRpc3BhdGNoKDkpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRp
b25hbENoZWNrcykKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisg
ICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQz
LCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAg
IGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBh
ZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENd
LCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAg
YWRkcCB0MSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDEsIHQyKQor
ICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbdDNdCisg
ICAgbG9hZGkgMjRbUENdLCB0MQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAg
ICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgZGlzcGF0Y2goOSkKK2Vu
ZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIHB1dEJ5SWRU
cmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKworCitf
bGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgIHB1dEJ5SWRUcmFuc2l0
aW9uKAorICAgICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQorICAgICAg
ICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRT
dHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bworICAgICAgICAKKyAgICAgICAgICAgIGxv
YWRwIDI4W1BDXSwgc2NyYXRjaAorICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnog
c2NyYXRjaCwgb2sgZW5kKQorICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVj
dG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBu
eiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5
cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAgICAgICAgLmxv
b3A6CisgICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9m
ZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgICAgICAgICBicG5lcSBv
bGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdworICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNo
CisgICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29s
ZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQp
CisKKworX2xsaW50X29wX2RlbF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9nZXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQQ10sIHQz
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQor
ICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MV0sIHQyCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxT
bG93KQorICAgIGJwbmVxIFt0MF0sIHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0Fy
cmF5OjptX3N0b3JhZ2VbdDBdLCB0MworICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3ZlY3Rvckxl
bmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRp
IEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAgICBs
b2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0
MQorICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAgIHN0b3Jl
aSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIHZhbHVlUHJvZmlsZSh0Miwg
dDEsIHQwKQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEdldEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGlu
dF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBJbnQzMlRhZywgdDIsIC5vcEdldEFyZ3Vt
ZW50QnlWYWxTbG93KQorICAgIGFkZGkgMSwgdDIKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsg
UGF5bG9hZE9mZnNldFtjZnJdLCB0MQorICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJndW1lbnRC
eVZhbFNsb3cKKyAgICBuZWdpIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgVGhp
c0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxvYWRpIFRo
aXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgc3Rv
cmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudEJ5VmFsU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfcG5hbWU6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDE2
W1BDXSwgdDAKKyAgICBicG5lcSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgLm9wR2V0
QnlQbmFtZVNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRp
IDIwW1BDXSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MworICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAorICAgIGJwbmVxIHQwLCBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0M10sIC5vcEdldEJ5UG5hbWVTbG93
CisgICAgbG9hZGkgMjRbUENdLCB0MAorICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAKKyAgICBz
dWJpIDEsIHQwCisgICAgYmlhZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2Fj
aGVhYmxlU2xvdHNbdDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRwIEpTT2JqZWN0Ojpt
X3Byb3BlcnR5U3RvcmFnZVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QyLCB0MCwgOF0s
IHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MiwgdDAsIDhdLCB0MworICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVp
IHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNykKKworLm9wR2V0
QnlQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9wbmFtZSkK
KyAgICBkaXNwYXRjaCg3KQorCisKK19sbGludF9vcF9wdXRfYnlfdmFsOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgSW50MzJUYWcsIHQy
LCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsRGF0
YTo6anNBcnJheUNsYXNzSW5mb1t0MF0sIHQwCisgICAgYnBuZXEgW3QxXSwgdDAsIC5vcFB1dEJ5
VmFsU2xvdworICAgIGJpYWVxIHQyLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MV0sIC5vcFB1
dEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQwCisgICAgYmll
cSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIEVtcHR5VmFs
dWVUYWcsIC5vcFB1dEJ5VmFsRW1wdHkKKy5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQ6CisgICAgbG9h
ZGkgMTJbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MSwgdDMp
CisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MykKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6
bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0b3JlaSB0MywgQXJyYXlTdG9y
YWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQp
CisKKy5vcFB1dEJ5VmFsRW1wdHk6CisgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFs
dWVzSW5WZWN0b3JbdDBdCisgICAgYmliIHQyLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXSwg
Lm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorICAgIGFkZGkgMSwgdDIsIHQxCisgICAgc3RvcmVpIHQx
LCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXQorICAgIGptcCAub3BQdXRCeVZhbFN0b3JlUmVz
dWx0CisKKy5vcFB1dEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0
X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9kZWxfYnlfdmFsOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X3Zh
bCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaW5kZXg6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaW5kZXgp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dldHRlcl9zZXR0ZXI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfZ2V0dGVy
X3NldHRlcikKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9sb29wOgorICAgIG5vcAor
X2xsaW50X29wX2ptcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0Y2hCcmFuY2go
NFtQQ10pCisKKworX2xsaW50X29wX2ptcF9zY29wZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9qbXBfc2NvcGVzKQorICAgIGRpc3BhdGNoKDAp
CisKKworbWFjcm8ganVtcFRydWVPckZhbHNlKGNvbmRpdGlvbk9wLCBzbG93KQorICAgIGxvYWRp
IDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBCb29sZWFu
VGFnLCB0MCwgLnNsb3cpCisgICAgY29uZGl0aW9uT3AodDAsIC50YXJnZXQpCisgICAgZGlzcGF0
Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLnNsb3c6Cisg
ICAgY2FsbEhlbHBlcihzbG93KQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xv
b3BfaWZfdHJ1ZToKKyAgICBub3AKK19sbGludF9vcF9qdHJ1ZToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAganVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkg
YnRpbnogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfanRydWUpCisK
KworX2xsaW50X29wX2xvb3BfaWZfZmFsc2U6CisgICAgbm9wCitfbGxpbnRfb3BfamZhbHNlOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3Jv
ICh2YWx1ZSwgdGFyZ2V0KSBidGl6IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRf
aGVscGVyX2pmYWxzZSkKKworCittYWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGltbWVkaWF0
ZUhhbmRsZXIpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAg
YmluZXEgdDEsIENlbGxUYWcsIC5pbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QwXSwgdDIKKyAgICBjZWxsSGFuZGxlcihTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV9mbGFnc1t0Ml0sIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoK
KyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLmltbWVkaWF0ZToKKyAgICBvcmkgMSwgdDEK
KyAgICBpbW1lZGlhdGVIYW5kbGVyKHQxLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCitlbmQK
KworX2xsaW50X29wX2plcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51
bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJueiB2YWx1ZSwgTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQp
IGJpZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisgICAgCisKK19sbGludF9vcF9qbmVx
X251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFj
cm8gKHZhbHVlLCB0YXJnZXQpIGJ0YnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRh
cmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaW5lcSB2YWx1ZSwgTnVs
bFRhZywgdGFyZ2V0IGVuZCkKKworCitfbGxpbnRfb3Bfam5lcV9wdHI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wSm5lcVB0ckJyYW5jaAorICAg
IGJwZXEgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEsIC5vcEpuZXFQdHJGYWxsVGhyb3Vn
aAorLm9wSm5lcVB0ckJyYW5jaDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisub3BKbmVx
UHRyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBjb21wYXJlKGludGVn
ZXJDb21wYXJlLCBkb3VibGVDb21wYXJlLCBoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQyCisg
ICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDAsIHQx
KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MiwgdDMpCisgICAgYmluZXEg
dDAsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AyTm90
SW50CisgICAgaW50ZWdlckNvbXBhcmUodDEsIHQzLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRj
aCg0KQorCisub3AxTm90SW50OgorICAgIGJpYSB0MCwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJp
YiB0MiwgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisgICAgYmluZXEgdDIsIEludDMy
VGFnLCAuc2xvdworICAgIGNpMmQgdDMsIGZ0MQorICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5v
cDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKy5vcDFOb3RJbnRSZWFk
eToKKyAgICBmaWkyZCB0MSwgdDAsIGZ0MAorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5q
dW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDJOb3RJbnQ6CisgICAgY2kyZCB0MSwg
ZnQwCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgZmlpMmQgdDMsIHQyLCBmdDEK
KyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0
KQorCisuanVtcFRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisKKy5zbG93Ogor
ICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50X29w
X2xvb3BfaWZfbGVzczoKKyAgICBub3AKK19sbGludF9vcF9qbGVzczoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgdGFyZ2V0KSBiZGx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRf
aGVscGVyX2psZXNzKQorCisKK19sbGludF9vcF9qbmxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0
ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
dGFyZ2V0KSBiZGd0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9qbmxlc3MpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcjoKKyAgICBub3AK
K19sbGludF9vcF9qZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRh
cmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0IGxlZnQs
IHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVhdGVyKQorCisK
K19sbGludF9vcF9qbmdyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUo
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQs
IHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXF1
biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0
ZXIpCisKKworX2xsaW50X29wX2xvb3BfaWZfbGVzc2VxOgorICAgIG5vcAorX2xsaW50X29wX2ps
ZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXEgbGVmdCwgcmlnaHQsIHRh
cmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3NlcSkKKworCitfbGxpbnRfb3Bf
am5sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndHVuIGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzc2VxKQorCisKK19sbGludF9v
cF9sb29wX2lmX2dyZWF0ZXJlcToKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcmVxOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAor
ICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVhdGVyZXEpCisKKworX2xsaW50X29wX2puZ3JlYXRl
cmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHR1biBsZWZ0LCByaWdodCwgdGFyZ2V0
IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3Bf
bG9vcF9oaW50OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9y
TG9vcCgpCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2ltbToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0
MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0Mgor
ICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMgICAjIEZJWE1FOiB3b3VsZCBiZSBu
aWNlIHRvIHBlZXBob2xlIHRoaXMhCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9p
bW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAg
ICBhZGRwIHQzLCB0MgorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wU3dpdGNoSW1tTm90SW50
CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNp
bXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BT
d2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zm
c2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgNF0s
IHQxCisgICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJy
YW5jaFdpdGhPZmZzZXQodDEpCisKKy5vcFN3aXRjaEltbU5vdEludDoKKyAgICBiaWIgdDEsIExv
d2VzdFRhZywgLm9wU3dpdGNoSW1tU2xvdyAgIyBHbyB0byBzbG93IHBhdGggaWYgaXQncyBhIGRv
dWJsZS4KKy5vcFN3aXRjaEltbUZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENd
KQorCisub3BTd2l0Y2hJbW1TbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0
Y2hfaW1tKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3N3aXRjaF9jaGFyOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10s
IHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQy
CisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MworICAgIGxvYWRwIENvZGVCbG9j
azo6UmFyZURhdGE6Om1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9m
ZnNldFt0Ml0sIHQyCisgICAgYWRkcCB0MywgdDIKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9w
U3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQxCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0
MV0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTU3Ry
aW5nOjptX3ZhbHVlW3QwXSwgdDAKKyAgICBiaW5lcSBTdHJpbmdJbXBsOjptX2xlbmd0aFt0MF0s
IDEsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFN0cmluZ0ltcGw6Om1fZGF0
YThbdDBdLCB0MQorICAgIGJ0aW56IFN0cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdzW3QwXSwgSGFz
aEZsYWdzOEJpdEJ1ZmZlciwgLm9wU3dpdGNoQ2hhcjhCaXQKKyAgICBsb2FkaCBbdDFdLCB0MAor
ICAgIGptcCAub3BTd2l0Y2hDaGFyUmVhZHkKKy5vcFN3aXRjaENoYXI4Qml0OgorICAgIGxvYWRi
IFt0MV0sIHQwCisub3BTd2l0Y2hDaGFyUmVhZHk6CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6
Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0
cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBs
b2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRb
dDJdLCB0MgorICAgIGxvYWRpIFt0MiwgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEsIC5vcFN3aXRj
aEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQorCisub3BT
d2l0Y2hDaGFyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKworX2xs
aW50X29wX3N3aXRjaF9zdHJpbmc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfc3RyaW5nKQorICAgIGRpc3BhdGNoKDApCisKKworX2xs
aW50X29wX25ld19mdW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidGl6IDEyW1BDXSwg
Lm9wTmV3RnVuY1VuY2hlY2tlZAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wTmV3RnVuY0RvbmUKKy5vcE5ld0Z1
bmNVbmNoZWNrZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19mdW5jKQorLm9w
TmV3RnVuY0RvbmU6CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmNfZXhw
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3
X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gZG9DYWxsKGhlbHBlcikKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAgTExJbnRD
YWxsTGlua0luZm86OmNhbGxlZVt0MV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BDYWxsU2xvdykKKyAgICBiaW5lcSB0MywgdDIsIC5v
cENhbGxTbG93CisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGFkZHAgMjQsIFBDCisgICAgbHNo
aWZ0aSAzLCB0MworICAgIGFkZHAgY2ZyLCB0MyAgIyB0MyBjb250YWlucyB0aGUgbmV3IHZhbHVl
IG9mIGNmcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fc2NvcGVDaGFpblt0Ml0sIHQwCisgICAg
c3RvcmVpIHQyLCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSB0MCwgU2Nv
cGVDaGFpbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgbG9hZGkgOCAtIDI0W1BDXSwgdDIKKyAg
ICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlcCBj
ZnIsIENhbGxlckZyYW1lW3QzXQorICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxv
YWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10K
KyAgICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10KKyAgICBtb3Zl
IHQzLCBjZnIKKyAgICBjYWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0
MV0KKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKy5vcENhbGxTbG93OgorICAgIHNsb3dQYXRo
Rm9yQ2FsbCg2LCBoZWxwZXIpCitlbmQKKworX2xsaW50X29wX2NhbGw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRfaGVscGVyX2NhbGwpCisKKworX2xsaW50X29wX2Nv
bnN0cnVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJf
Y29uc3RydWN0KQorCisKK19sbGludF9vcF9jYWxsX3ZhcmFyZ3M6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBfbGxpbnRfaGVscGVyX2NhbGxfdmFyYXJncykK
KworCitfbGxpbnRfb3BfY2FsbF9ldmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAKKyAg
ICAjIEV2YWwgaXMgZXhlY3V0ZWQgaW4gb25lIG9mIHR3byBtb2RlczoKKyAgICAjCisgICAgIyAx
KSBXZSBmaW5kIHRoYXQgd2UncmUgcmVhbGx5IGludm9raW5nIGV2YWwoKSBpbiB3aGljaCBjYXNl
IHRoZQorICAgICMgICAgZXhlY3V0aW9uIGlzIHBlcmZvbWVkIGVudGlyZWx5IGluc2lkZSB0aGUg
aGVscGVyLCBhbmQgaXQKKyAgICAjICAgIHJldHVybnMgdGhlIFBDIG9mIGEgZnVuY3Rpb24gdGhh
dCBqdXN0IHJldHVybnMgdGhlIHJldHVybiB2YWx1ZQorICAgICMgICAgdGhhdCB0aGUgZXZhbCBy
ZXR1cm5lZC4KKyAgICAjCisgICAgIyAyKSBXZSBmaW5kIHRoYXQgd2UncmUgaW52b2tpbmcgc29t
ZXRoaW5nIGNhbGxlZCBldmFsKCkgdGhhdCBpcyBub3QKKyAgICAjICAgIHRoZSByZWFsIGV2YWwu
IFRoZW4gdGhlIGhlbHBlciByZXR1cm5zIHRoZSBQQyBvZiB0aGUgdGhpbmcgdG8KKyAgICAjICAg
IGNhbGwsIGFuZCB3ZSBjYWxsIGl0LgorICAgICMKKyAgICAjIFRoaXMgYWxsb3dzIHVzIHRvIGhh
bmRsZSB0d28gY2FzZXMsIHdoaWNoIHdvdWxkIHJlcXVpcmUgYSB0b3RhbCBvZgorICAgICMgdXAg
dG8gZm91ciBwaWVjZXMgb2Ygc3RhdGUgdGhhdCBjYW5ub3QgYmUgZWFzaWx5IHBhY2tlZCBpbnRv
IHR3bworICAgICMgcmVnaXN0ZXJzIChDIGZ1bmN0aW9ucyBjYW4gcmV0dXJuIHVwIHRvIHR3byBy
ZWdpc3RlcnMsIGVhc2lseSk6CisgICAgIworICAgICMgLSBUaGUgY2FsbCBmcmFtZSByZWdpc3Rl
ci4gVGhpcyBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4gbW9kaWZpZWQKKyAgICAjICAgYnkgdGhl
IGhlbHBlciwgYnV0IHRoZSBjb252ZW50aW9uIGlzIHRoYXQgaXQgcmV0dXJucyBpdC4gSXQncyBu
b3QKKyAgICAjICAgdG90YWxseSBjbGVhciBpZiB0aGF0J3MgbmVjZXNzYXJ5LCBzaW5jZSB0aGUg
Y2ZyIGlzIGNhbGxlZSBzYXZlLgorICAgICMgICBCdXQgdGhhdCdzIG91ciBzdHlsZSBpbiB0aGlz
IGhlcmUgaW50ZXJwcmV0ZXIgc28gd2Ugc3RpY2sgd2l0aCBpdC4KKyAgICAjCisgICAgIyAtIEEg
Yml0IHRvIHNheSBpZiB0aGUgaGVscGVyIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCB0aGUgZXZhbCBh
bmQgaGFzCisgICAgIyAgIHRoZSByZXR1cm4gdmFsdWUsIG9yIGRpZCBub3QgZXhlY3V0ZSB0aGUg
ZXZhbCBidXQgaGFzIGEgUEMgZm9yIHVzCisgICAgIyAgIHRvIGNhbGwuCisgICAgIworICAgICMg
LSBFaXRoZXI6CisgICAgIyAgIC0gVGhlIEpTIHJldHVybiB2YWx1ZSAodHdvIHJlZ2lzdGVycyks
IG9yCisgICAgIworICAgICMgICAtIFRoZSBQQyB0byBjYWxsLgorICAgICMKKyAgICAjIEl0IHR1
cm5zIG91dCB0byBiZSBlYXNpZXIgdG8ganVzdCBhbHdheXMgaGF2ZSB0aGlzIHJldHVybiB0aGUg
Y2ZyCisgICAgIyBhbmQgYSBQQyB0byBjYWxsLCBhbmQgdGhhdCBQQyBtYXkgYmUgYSBkdW1teSB0
aHVuayB0aGF0IGp1c3QKKyAgICAjIHJldHVybnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwg
cmV0dXJuZWQuCisgICAgCisgICAgc2xvd1BhdGhGb3JDYWxsKDQsIF9sbGludF9oZWxwZXJfY2Fs
bF9ldmFsKQorCisKK19sbGludF9nZW5lcmljX3JldHVybl9wb2ludDoKKyAgICBkaXNwYXRjaEFm
dGVyQ2FsbCgpCisKKworX2xsaW50X29wX3RlYXJfb2ZmX2FjdGl2YXRpb246CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAg
IGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFj
dGl2YXRpb25DcmVhdGVkCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFs
dWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZAorLm9wVGVhck9mZkFjdGl2YXRp
b25DcmVhdGVkOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hY3RpdmF0
aW9uKQorLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX3RlYXJfb2ZmX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3ViaSAxLCB0MCAgICMgR2V0IHRoZSB1bm1vZGlmaWVk
QXJndW1lbnRzUmVnaXN0ZXIKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlW
YWx1ZVRhZywgLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQorLm9wVGVhck9mZkFyZ3VtZW50c05vdENy
ZWF0ZWQ6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBkb1JldHVybigpCisgICAgbG9hZHAg
UmV0dXJuUENbY2ZyXSwgdDIKKyAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKKyAgICBy
ZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICByZXQKK2VuZAorCitfbGxp
bnRfb3BfcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9y
RXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX2NhbGxfcHV0X3Jl
c3VsdDoKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBzdG9y
ZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQyLCA4XQorICAgIHZhbHVlUHJvZmlsZSh0MSwgdDAsIHQzKQorICAgIHRyYWNlRXhl
Y3V0aW9uKCkgIyBOZWVkcyB0byBiZSBoZXJlIGJlY2F1c2UgaXQgd291bGQgY2xvYmJlciB0MSwg
dDAKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXRfb2JqZWN0X29yX3RoaXM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisg
ICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQw
KQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcFJldE9iamVj
dE9yVGhpc05vdE9iamVjdAorICAgIGRvUmV0dXJuKCkKKworLm9wUmV0T2JqZWN0T3JUaGlzTm90
T2JqZWN0OgorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX21ldGhvZF9jaGVjazoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNoZWNrcyBhbmQg
dXNlIG5vcm1hbCBnZXRfYnlfaWQgb3B0aW1pemF0aW9ucy4KKyAgICBkaXNwYXRjaCgxKQorCisK
K19sbGludF9vcF9zdHJjYXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9zdHJjYXQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfdG9f
cHJpbWl0aXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAg
ICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDAp
CisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFRvUHJpbWl0aXZlSXNJbW0KKyAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm9wVG9QcmltaXRpdmVTbG93
Q2FzZQorLm9wVG9QcmltaXRpdmVJc0ltbToKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIs
IHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRp
c3BhdGNoKDMpCisKKy5vcFRvUHJpbWl0aXZlU2xvd0Nhc2U6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3RvX3ByaW1pdGl2ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9n
ZXRfcG5hbWVzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfZ2V0X3BuYW1lcykKKyAgICBkaXNwYXRjaCgwKSAjIFRoZSBoZWxwZXIgZWl0aGVyIGFk
dmFuY2VzIHRoZSBQQyBvciBqdW1wcyB1cyB0byBzb21ld2hlcmUgZWxzZS4KKworCitfbGxpbnRf
b3BfbmV4dF9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0
MQorICAgIGxvYWRpIDE2W1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEs
IDhdLCB0MAorICAgIGJpZXEgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIC5vcE5leHRQ
bmFtZUVuZAorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDIsIDhdLCB0MgorICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fanNTdHJp
bmdzW3QyXSwgdDMKKyAgICBsb2FkaSBbdDMsIHQwLCA4XSwgdDMKKyAgICBhZGRpIDEsIHQwCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgNFtQQ10s
IHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3Jl
aSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDhbUENdLCB0MworICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0M10sIHQxCisgICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRwIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0MAorICAgIGxv
YWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BO
ZXh0UG5hbWVUYXJnZXQKKy5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcDoKKyAgICBiaWVx
IFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbdDFdLCBOdWxsVGFnLCAub3BOZXh0
UG5hbWVTbG93CisgICAgbG9hZHAgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZz
ZXRbdDFdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MQorICAgIGJw
bmVxIHQxLCBbdDBdLCAub3BOZXh0UG5hbWVTbG93CisgICAgYWRkcCA0LCB0MAorICAgIGJ0cG56
IFt0MF0sIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcAorLm9wTmV4dFBuYW1lVGFyZ2V0
OgorICAgIGRpc3BhdGNoQnJhbmNoKDI0W1BDXSkKKworLm9wTmV4dFBuYW1lRW5kOgorICAgIGRp
c3BhdGNoKDcpCisKKy5vcE5leHRQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX25leHRfcG5hbWUpICMgVGhpcyBlaXRoZXIga2VlcHMgdGhlIFBDIHdoZXJlIGl0IHdhcyAo
Y2F1c2luZyB1cyB0byBsb29wKSBvciBzZXRzIGl0IHRvIHRhcmdldC4KKyAgICBkaXNwYXRjaCgw
KQorCisKK19sbGludF9vcF9wdXNoX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9zY29wZSkKKyAgICBkaXNwYXRjaCgyKQorCisK
K19sbGludF9vcF9wb3Bfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9wb3Bfc2NvcGUpCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRf
b3BfcHVzaF9uZXdfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9wdXNoX25ld19zY29wZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9jYXRjaDoKKyAgICAjIFRoaXMgaXMgd2hlcmUgd2UgZW5kIHVwIGZyb20gdGhlIEpJVCdz
IHRocm93IHRyYW1wb2xpbmUgKGJlY2F1c2UgdGhlCisgICAgIyBtYWNoaW5lIGNvZGUgcmV0dXJu
IGFkZHJlc3Mgd2lsbCBiZSBzZXQgdG8gX2xsaW50X29wX2NhdGNoKSwgYW5kIGZyb20KKyAgICAj
IHRoZSBpbnRlcnByZXRlcidzIHRocm93IHRyYW1wb2xpbmUgKHNlZSBfbGxpbnRfdGhyb3dfdHJh
bXBvbGluZSkuCisgICAgIyBUaGUgSklUIHRocm93aW5nIHByb3RvY29sIGNhbGxzIGZvciB0aGUg
Y2ZyIHRvIGJlIGluIHQwLiBUaGUgdGhyb3dpbmcKKyAgICAjIGNvZGUgbXVzdCBoYXZlIGtub3du
IHRoYXQgd2Ugd2VyZSB0aHJvd2luZyB0byB0aGUgaW50ZXJwcmV0ZXIsIGFuZCBoYXZlCisgICAg
IyBzZXQgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cuCisgICAgbW92
ZSB0MCwgY2ZyCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisg
ICAgbG9hZGkgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3dbdDNdLCBQ
QworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10s
IHQwCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdLCB0
MQorICAgIHN0b3JlaSAwLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRb
dDNdCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsg
VGFnT2Zmc2V0W3QzXSAgICAgICAKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIs
IHQyLCA4XQorICAgIHRyYWNlRXhlY3V0aW9uKCkgICMgVGhpcyBuZWVkcyB0byBiZSBoZXJlIGJl
Y2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjbG9iYmVyIHQwLCB0MSwgdDIsIHQzIGFib3ZlLgorICAg
IGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGhyb3cpCisgICAgZGlzcGF0Y2goMikKKwor
CitfbGxpbnRfb3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQorICAg
IGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2pzcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYWRkaSAzICogNCwgUEMsIHQxCisgICAgc3RvcmVpIHQx
LCBbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bf
c3JldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9h
ZHAgW2NmciwgdDAsIDhdLCBQQworICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX2RlYnVn
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVi
dWcpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJvZmlsZV93aWxsX2NhbGw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9m
aWxlclJlZmVyZW5jZVtzcF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BQcm9maWxlV2lsbENhbGxE
b25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQorLm9w
UHJvZmlsZVdpbGxDYWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wcm9m
aWxlX2RpZF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBKSVRTdGFja0Zy
YW1lOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCB0MAorICAgIGJ0cHogW3QwXSwgLm9w
UHJvZmlsZVdpbGxDYWxsRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcm9maWxl
X2RpZF9jYWxsKQorLm9wUHJvZmlsZURpZENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKwor
X2xsaW50X29wX2VuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJ
VEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAK
KyAgICBkb1JldHVybigpCisKKworX2xsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmU6
CisgICAgIyBXaGVuIHRocm93aW5nIGZyb20gdGhlIGludGVycHJldGVyIChpLmUuIHRocm93aW5n
IGZyb20gTExJbnRIZWxwZXJzKSwgc28KKyAgICAjIHRoZSB0aHJvdyB0YXJnZXQgaXMgbm90IG5l
Y2Vzc2FyaWx5IGludGVycHJldGVkIGNvZGUsIHdlIGNvbWUgdG8gaGVyZS4KKyAgICAjIFRoaXMg
ZXNzZW50aWFsbHkgZW11bGF0ZXMgdGhlIEpJVCdzIHRocm93aW5nIHByb3RvY29sLgorICAgIGxv
YWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFs
RGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRh
cmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKK19sbGludF90aHJvd19kdXJpbmdfY2FsbF90
cmFtcG9saW5lOgorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICBs
b2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2Jh
bERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0
YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCisjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQg
d2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KKyMg
VGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRo
ZXIgSklULiBXZSBhc3NlcnQKKyMgYXMgbXVjaC4KKworbWFjcm8gbm90U3VwcG9ydGVkKCkKKyAg
ICBpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBjcmFzaCgpCisgICAgZWxzZQorICAgICAgICAj
IFdlIHNob3VsZCB1c2Ugd2hhdGV2ZXIgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIGluc3RydWN0aW9u
IGlzLCBqdXN0IHRvCisgICAgICAgICMgZW5zdXJlIHRoYXQgdGhlcmUgaXMgYSBnYXAgYmV0d2Vl
biBpbnN0cnVjdGlvbiBsYWJlbHMuIElmIG11bHRpcGxlCisgICAgICAgICMgc21hbGxlc3QgaW5z
dHJ1Y3Rpb25zIGV4aXN0LCB3ZSBzaG91bGQgcGljayB0aGUgb25lIHRoYXQgaXMgbW9zdAorICAg
ICAgICAjIGxpa2VseSByZXN1bHQgaW4gZXhlY3V0aW9uIGJlaW5nIGhhbHRlZC4gQ3VycmVudGx5
IHRoYXQgaXMgdGhlIGJyZWFrCisgICAgICAgICMgaW5zdHJ1Y3Rpb24gb24gYWxsIGFyY2hpdGVj
dHVyZXMgd2UncmUgaW50ZXJlc3RlZCBpbi4gKEJyZWFrIGlzIGludDMKKyAgICAgICAgIyBvbiBJ
bnRlbCwgd2hpY2ggaXMgMSBieXRlLCBhbmQgYmtwdCBvbiBBUk12Nywgd2hpY2ggaXMgMiBieXRl
cy4pCisgICAgICAgIGJyZWFrCisgICAgZW5kCitlbmQKKworX2xsaW50X29wX2dldF9hcnJheV9s
ZW5ndGg6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jaGFpbjoK
KyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbjoK
KyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9wcm90bzoK
KyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9zZWxmOgor
ICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBu
b3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9jaGFpbjoKKyAgICBu
b3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9wcm90bzoKKyAgICBu
b3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9zZWxmOgorICAgIG5v
dFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfcHJvdG86CisgICAgbm90U3VwcG9y
dGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisK
K19sbGludF9vcF9nZXRfc3RyaW5nX2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxp
bnRfb3BfcHV0X2J5X2lkX2dlbmVyaWM6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29w
X3B1dF9ieV9pZF9yZXBsYWNlOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCisKKyMgSW5kaWNhdGUgdGhl
IGVuZCBvZiBMTEludC4KK19sbGludF9lbmQ6CisgICAgY3Jhc2goKQorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNs
dWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+
CisKKy8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtLCB3aGljaCBjb250
YWlucyBhbGwgb2YgdGhlIGFzc2VtYmx5IGNvZGUKKy8vIGZvciB0aGUgaW50ZXJwcmV0ZXIsIGFz
IGNvbXBpbGVkIGZyb20gTG93TGV2ZWxJbnRlcnByZXRlci5hc20uCisjaW5jbHVkZSAiTExJbnRB
c3NlbWJseS5oIgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorI2RlZmlu
ZSBMb3dMZXZlbEludGVycHJldGVyX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisj
aWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKKyNkZWZpbmUgTExJTlRf
SU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxlbmd0aCkgZXh0ZXJuICJDIiB2b2lkIGxsaW50XyMj
b3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wp
OworI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wKKworZXh0ZXJuICJDIiB2b2lkIGxsaW50
X2JlZ2luKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW5kKCk7CitleHRlcm4gIkMiIHZvaWQg
bGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2V2YWxfcHJv
bG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1
ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9n
dWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
aygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlf
Y2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9nZW5lcmljX3JldHVybl9wb2ludCgpOwor
ZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUoKTsKK2V4
dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKCk7CisKKyNl
bmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMb3dMZXZlbEludGVycHJldGVyX2gK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzk4IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJvcHQiCisKK2NsYXNzIFNwZWNpYWxSZWdp
c3RlcgorICBkZWYgaW5pdGlhbGl6ZShuYW1lKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAg
CisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBAbmFtZQorICBlbmQKKyAgCisgIGRlZiBhcm1WN1Np
bmdsZQorICAgIHJhaXNlIHVubGVzcyBAbmFtZSA9fiAvXmQvCisgICAgInMiICsgJH4ucG9zdF9t
YXRjaC50b19pICogMgorICBlbmQKK2VuZAorCitBUk12N19FWFRSQV9HUFJTID0gW1NwZWNpYWxS
ZWdpc3Rlci5uZXcoInIzIiksIFNwZWNpYWxSZWdpc3Rlci5uZXcoInI4IiksIFNwZWNpYWxSZWdp
c3Rlci5uZXcoInI5IildCitBUk12N19FWFRSQV9GUFJTID0gW1NwZWNpYWxSZWdpc3Rlci5uZXco
ImQ3IildCitBUk12N19TQ1JBVENIX0ZQUiA9IFtTcGVjaWFsUmVnaXN0ZXIubmV3KCJkOCIpXQor
CitkZWYgYXJtVjdNb3ZlSW1tZWRpYXRlKHZhbHVlLCByZWdpc3RlcikKKyAgIyBDdXJyZW50bHkg
d2Ugb25seSBoYW5kbGUgdGhlIHNpbXBsZSBjYXNlcywgYW5kIGZhbGwgYmFjayB0byBtb3YvbW92
dCBmb3IgdGhlIGNvbXBsZXggb25lcy4KKyAgaWYgdmFsdWUgPj0gMCAmJiB2YWx1ZSA8IDI1Ngor
ICAgICRhc20ucHV0cyAibW92dyBcIyN7dmFsdWV9LCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0i
CisgIGVsc2lmICh+dmFsdWUpID49IDAgJiYgKH52YWx1ZSkgPCAyNTYKKyAgICAkYXNtLnB1dHMg
Im12bncgXCMje352YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgZWxzZQorICAg
ICRhc20ucHV0cyAibW92dyBcIyN7dmFsdWUgJiAweGZmZmZ9LCAje3JlZ2lzdGVyLmFybVY3T3Bl
cmFuZH0iCisgICAgaWYgKHZhbHVlICYgMHhmZmZmMDAwMCkgIT0gMAorICAgICAgJGFzbS5wdXRz
ICJtb3Z0IFwjI3t2YWx1ZSA+PiAxNn0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSIKKyAgICBl
bmQKKyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisg
ICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiCisgICAgICAicjAiCisgICAg
d2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAgICAicjEiCisgICAgd2hlbiAidDIiLCAiYTIiCisg
ICAgICAicjIiCisgICAgd2hlbiAiYTMiCisgICAgICAicjMiCisgICAgd2hlbiAidDMiCisgICAg
ICAicjQiCisgICAgd2hlbiAidDQiCisgICAgICAicjciCisgICAgd2hlbiAiY2ZyIgorICAgICAg
InI1IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNz
IEZQUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hl
biAiZnQwIiwgImZyIgorICAgICAgImQwIgorICAgIHdoZW4gImZyMSIsCisgICAgICAiZDEiCisg
ICAgd2hlbiAiZnIyIgorICAgICAgImQyIgorICAgIHdoZW4gImZyMyIKKyAgICAgICJkMyIKKyAg
ICB3aGVuICJmcjQiCisgICAgICAiZDQiCisgICAgd2hlbiAiZnI1IgorICAgICAgImQ1IgorICAg
IGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFybVY3U2luZ2xl
CisgICAgcmFpc2UgdW5sZXNzIEBuYW1lID1+IC9eZC8KKyAgICAicyIgKyAkfi5wb3N0X21hdGNo
LnRvX2kgKiAyCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgYXJtVjdPcGVy
YW5kCisgICAgcmFpc2UgIkludmFsaWQgaW1tZWRpYXRlICN7dmFsdWV9IiBpZiB2YWx1ZSA8IDAg
b3IgdmFsdWUgPiAyNTUKKyAgICAiXCMje3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRk
cmVzcworICBkZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2UgIkJhZCBvZmZzZXQgYXQgI3tjb2Rl
T3JpZ2luU3RyaW5nfSIgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgb3Igb2Zmc2V0LnZhbHVlID4g
MHhmZmYKKyAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje29mZnNldC5hcm1WN09wZXJhbmR9
XSIKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBhcm1WN09wZXJhbmQKKyAg
ICByYWlzZSAiQmFkIG9mZnNldCBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiBpZiBvZmZzZXQgIT0g
MAorICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNs
IFwjI3tzY2FsZX1dIgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVm
IGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJVbmNvbnZlcnRlZCBhYnNvbHV0ZSBhZGRyZXNzIGF0
ICN7Y29kZU9yaWdpblN0cmluZ30iCisgIGVuZAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgYnJh
bmNoIG9wcy4gRm9yIGV4YW1wbGU6CisjCisjIGJhZGRpeiBmb28sIGJhciwgYmF6CisjCisjIHdp
bGwgYmVjb21lOgorIworIyBhZGRpIGZvbywgYmFyCisjIGJ6IGJhegorIworCitkZWYgYXJtVjdM
b3dlckJyYW5jaE9wcyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8
IG5vZGUgfAorICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5v
cGNvZGUKKyAgICAgIHdoZW4gL15iKGFkZGl8c3ViaXxvcml8bXVsaXxhZGRwKS8KKyAgICAgICAg
b3AgPSAkMQorICAgICAgICBicmFuY2ggPSAiYiIgKyAkfi5wb3N0X21hdGNoCisgICAgICAgIG5l
d0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgb3AsIG5vZGUub3BlcmFu
ZHNbMC4uLTJdKQorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVP
cmlnaW4sIGJyYW5jaCwgW25vZGUub3BlcmFuZHNbLTFdXSkKKyAgICAgIGVsc2UKKyAgICAgICAg
bmV3TGlzdCA8PCBub2RlCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICBuZXdMaXN0IDw8IG5v
ZGUKKyAgICBlbmQKKyAgfQorICBuZXdMaXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBtYWxm
b3JtZWQgYWRkcmVzc2VzLiBGb3IgZXhhbXBsZToKKyMKKyMgbG9hZHAgMTAwMDBbZm9vXSwgYmFy
CisjCisjIHdpbGwgYmVjb21lOgorIworIyBtb3ZlIDEwMDAwLCB0bXAKKyMgYWRkcCBmb28sIHRt
cAorIyBsb2FkcCAwW3RtcF0sIGJhcgorIworCitjbGFzcyBOb2RlCisgIGRlZiBhcm1WN0xvd2Vy
TWFsZm9ybWVkQWRkcmVzc2VzKGxpc3QpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBub2Rl
IHwKKyAgICAgIG5vZGUuYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3NlcyhsaXN0KQorICAgIH0K
KyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFk
ZHJlc3NlcyhsaXN0KQorICAgIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIG9yIG9mZnNldC52YWx1
ZSA+IDB4ZmZmCisgICAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICBs
aXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFtJbW1lZGlhdGUubmV3
KG9mZnNldCksIHRtcF0pCisgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2lu
LCAiYWRkcCIsIFtiYXNlLCB0bXBdKQorICAgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgdG1w
LCBJbW1lZGlhdGUubmV3KDApKQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5k
CitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVz
c2VzKGxpc3QpCisgICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAgIHRtcCA9IFRtcC5uZXco
Y29kZU9yaWdpbiwgOmdwcikKKyAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmln
aW4sICJtb3ZlIiwgW0ltbWVkaWF0ZS5uZXcob2Zmc2V0KSwgdG1wXSkKKyAgICAgIGxpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJhZGRwIiwgW2Jhc2UsIHRtcF0pCisgICAgICBC
YXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIHRtcCwgaW5kZXgsIHNjYWxlLCBJbW1lZGlhdGUubmV3
KDApKQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3Mg
QWJzb2x1dGVBZGRyZXNzCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzKGxpc3Qp
CisgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JnaW4sIDpncHIpCisgICAgbGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbSW1tZWRpYXRlLm5ldyhhZGRyZXNzKSwgdG1w
XSkKKyAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCB0bXAsIEltbWVkaWF0ZS5uZXcoMCkpCisg
IGVuZAorZW5kCisKK2RlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzKGxpc3QpCisgIG5l
d0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9kZSB8CisgICAgbmV3TGlzdCA8PCBu
b2RlLmFybVY3TG93ZXJNYWxmb3JlZEFkZHJlc3NlcyhuZXdMaXN0KQorICB9CisgIG5ld0xpc3QK
K2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1hbGZvcm1lZCBpbW1lZGlhdGVzIGV4Y2VwdCB3aGVu
IHVzZWQgaW4gYSAibW92ZSIgaW5zdHJ1Y3Rpb24uCisjIEZvciBleGFtcGxlOgorIworIyBhZGRw
IDY0MjY0MSwgZm9vCisjCisjIHdpbGwgYmVjb21lOgorIworIyBtb3ZlIDY0MjY0MSwgdG1wCisj
IGFkZHAgdG1wLCBmb28KKyMKKworY2xhc3MgTm9kZQorICBkZWYgYXJtVjdMb3dlck1hbGZvcm1l
ZEltbWVkaWF0ZXMobGlzdCkKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IG5vZGUgfAorICAg
ICAgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlcyhsaXN0KQorICAgIH0KKyAgZW5k
CitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRp
YXRlcyhsaXN0KQorICAgIGlmIHZhbHVlIDwgMCBvciB2YWx1ZSA+IDI1NQorICAgICAgdG1wID0g
VG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
Y29kZU9yaWdpbiwgIm1vdmUiLCBbc2VsZiwgdG1wXSkKKyAgICAgIHRtcAorICAgIGVsc2UKKyAg
ICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJ
bW1lZGlhdGVzKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9k
ZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgY2FzZSBub2RlLm9wY29k
ZQorICAgICAgd2hlbiAibW92ZSIKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICB3aGVu
ICJhZGRpIiwgImFkZHAiLCAic3ViaSIsICJzdWJwIgorICAgICAgICBpZiBub2RlLm9wZXJhbmRz
WzBdLmlzX2E/IEltbWVkaWF0ZSBhbmQKKyAgICAgICAgICAgIG5vZGUub3BlcmFuZHNbMF0udmFs
dWUgPCAwIGFuZAorICAgICAgICAgICAgbm9kZS5vcGVyYW5kc1swXS52YWx1ZSA+PSAyNTUKKyAg
ICAgICAgICBpZiBub2RlLm9wY29kZSA9fiAvYWRkLworICAgICAgICAgICAgbmV3T3Bjb2RlID0g
InN1YiIgKyBub2RlLm9wY29kZVstMS4uLTFdCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
bmV3T3Bjb2RlID0gImFkZCIgKyBub2RlLm9wY29kZVstMS4uLTFdCisgICAgICAgICAgZW5kCisg
ICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBuZXdP
cGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ltbWVkaWF0ZS5u
ZXcoLW5vZGUub3BlcmFuZHNbMF0udmFsdWUpXSArIG5vZGUub3BlcmFuZHNbMS4uLTFdKQorICAg
ICAgICBlbHNlCisgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJ
bW1lZGlhdGVzKG5ld0xpc3QpCisgICAgICAgIGVuZAorICAgICAgd2hlbiAibXVsaSIKKyAgICAg
ICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICAgdG1wID0gVG1wLm5l
dyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbb3BlcmFuZHNbMF0sIHRtcF0pCisgICAgICAgICAg
bmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibXVsaSIsIFt0bXBd
ICsgb3BlcmFuZHNbMS4uLTFdKQorICAgICAgICBlbHNlCisgICAgICAgICAgbmV3TGlzdCA8PCBu
b2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzKG5ld0xpc3QpCisgICAgICAgIGVuZAor
ICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IG5vZGUuYXJtVjdMb3dlck1hbGZvcm1lZElt
bWVkaWF0ZXMobmV3TGlzdCkKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIG5ld0xpc3QgPDwg
bm9kZQorICAgIGVuZAorICB9CisgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1p
c3BsYWNlZCBhZGRyZXNzZXMuIEZvciBleGFtcGxlOgorIworIyBhZGRpIGZvbywgW2Jhcl0KKyMK
KyMgd2lsbCBiZWNvbWU6CisjCisjIGxvYWRpIFtiYXJdLCB0bXAKKyMgYWRkaSBmb28sIHRtcAor
IyBzdG9yZWkgdG1wLCBbYmFyXQorIworIyBBbm90aGVyIGV4YW1wbGU6CisjCisjIGFkZGkgW2Zv
b10sIGJhcgorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbG9hZGkgW2Zvb10sIHRtcAorIyBhZGRp
IHRtcCwgYmFyCisjCisKK2RlZiBhcm1WN0FzUmVnaXN0ZXIocHJlTGlzdCwgcG9zdExpc3QsIG9w
ZXJhbmQsIHN1ZmZpeCwgbmVlZFN0b3JlKQorICByZXR1cm4gb3BlcmFuZCB1bmxlc3Mgb3BlcmFu
ZC5hZGRyZXNzPworICAKKyAgdG1wID0gVG1wLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sIGlmIHN1
ZmZpeCA9PSAiZCIgdGhlbiA6ZnByIGVsc2UgOmdwciBlbmQpCisgIHByZUxpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgImxvYWQiICsgc3VmZml4LCBbb3BlcmFuZCwg
dG1wXSkKKyAgaWYgbmVlZFN0b3JlCisgICAgcG9zdExpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG9w
ZXJhbmQuY29kZU9yaWdpbiwgInN0b3JlIiArIHN1ZmZpeCwgW3RtcCwgb3BlcmFuZF0pCisgIGVu
ZAorICB0bXAKK2VuZAorCitkZWYgYXJtVjdBc1JlZ2lzdGVycyhwcmVMaXN0LCBwb3N0TGlzdCwg
b3BlcmFuZHMsIHN1ZmZpeCkKKyAgbmV3T3BlcmFuZHMgPSBbXQorICBvcGVyYW5kcy5lYWNoX3dp
dGhfaW5kZXggeworICAgIHwgb3BlcmFuZCwgaW5kZXggfAorICAgIG5ld09wZXJhbmRzIDw8IGFy
bVY3QXNSZWdpc3RlcihwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFuZCwgc3VmZml4LCBpbmRleCA9
PSBvcGVyYW5kcy5zaXplIC0gMSkKKyAgfQorICBuZXdPcGVyYW5kcworZW5kCisKK2RlZiBhcm1W
N0xvd2VyTWlzcGxhY2VkQWRkcmVzc2VzKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVh
Y2ggeworICAgIHwgbm9kZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAg
cG9zdEluc3RydWN0aW9ucyA9IFtdCisgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICB3aGVu
ICJhZGRpIiwgImFkZHAiLCAiYW5kaSIsICJhbmRwIiwgImxzaGlmdGkiLCAibXVsaSIsICJuZWdp
IiwgIm5vdGkiLCAib3JpIiwgIm9ycCIsICJyc2hpZnRpIiwKKyAgICAgICAgInVyc2hpZnRpIiwg
InN1YmkiLCAic3VicCIsICJ4b3JpIiwgInhvcnAiLCAvXmJpLywgL15icC8sIC9eYnRpLywgL15i
dHAvLCAiY2FsbCIsIC9eY2kvLCAvXmNwLywKKyAgICAgICAgL150aS8KKyAgICAgICAgbmV3TGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXJtVjdBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2Rl
Lm9wZXJhbmRzLCAiaSIpKQorICAgICAgd2hlbiAiYmJlcSIsICJiYm5lcSIsICJiYmEiLCAiYmJh
ZXEiLCAiYmJiIiwgImJiYmVxIiwgImJ0Ym8iLCAiYnRieiIsICJidGJueiIsICJ0YnoiLCAidGJu
eiIsCisgICAgICAgICJ0Ym8iCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5v
ZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5v
cGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3Rl
cnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImIiKSkKKyAgICAg
IHdoZW4gImJiZ3QiLCAiYmJndGVxIiwgImJibHQiLCAiYmJsdGVxIiwgImJ0YnMiLCAidGJzIgor
ICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcm1WN0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0
cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJicyIpKQorICAgICAgd2hlbiAiYWRkZCIsICJkaXZk
IiwgInN1YmQiLCAibXVsZCIsICJzcXJ0ZCIsIC9eYmQvCisgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5k
cywgImQiKSkKKyAgICAgIHdoZW4gImptcCIsICJjYWxsIgorICAgICAgICBuZXdMaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbYXJtVjdBc1JlZ2lzdGVyKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFu
ZHMsICJwIiwgZmFsc2UpXSkKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisg
ICAgICBlbmQKKyAgICAgIG5ld0xpc3QgKz0gcG9zdEluc3RydWN0aW9ucworICAgIGVsc2UKKyAg
ICAgIG5ld0xpc3QgPDwgbm9kZQorICAgIGVuZAorICB9CisgIG5ld0xpc3QKK2VuZAorCisjCisj
IExvd2VyaW5nIG9mIHJlZ2lzdGVyIHJldXNlIGluIGNvbXBhcmUgaW5zdHJ1Y3Rpb25zLiBGb3Ig
ZXhhbXBsZToKKyMKKyMgY2llcSB0MCwgdDEsIHQwCisjCisjIHdpbGwgYmVjb21lOgorIworIyBt
b3YgdG1wLCB0MAorIyBjaWVxIHRtcCwgdDEsIHQwCisjCisgCitkZWYgYXJtVjdMb3dlclJlZ2lz
dGVyUmV1c2UobGlzdCkKKyAgbmV3TGlzdCA9IFtdCisgIGxpc3QuZWFjaCB7CisgICAgfCBub2Rl
IHwKKyAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICBjYXNlIG5vZGUub3Bjb2Rl
CisgICAgICB3aGVuICJjaWVxIiwgImNpbmVxIiwgImNpYSIsICJjaWFlcSIsICJjaWIiLCAiY2li
ZXEiLCAiY2lndCIsICJjaWd0ZXEiLCAiY2lsdCIsICJjaWx0ZXEiLAorICAgICAgICAiY3BlcSIs
ICJjcG5lcSIsICJjcGEiLCAiY3BhZXEiLCAiY3BiIiwgImNwYmVxIiwgImNwZ3QiLCAiY3BndGVx
IiwgImNwbHQiLCAiY3BsdGVxIiwKKyAgICAgICAgInRpbyIsICJ0aXMiLCAidGl6IiwgInRpbnoi
LCAidGJvIiwgInRicyIsICJ0YnoiLCAidGJueiIKKyAgICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9
PSAyCisgICAgICAgICAgaWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMV0KKyAgICAgICAgICAg
IHRtcCA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgbmV3TGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtvcGVyYW5kc1sw
XSwgdG1wXSkKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29k
ZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFt0bXAsIG9wZXJhbmRzWzFdXSkKKyAgICAgICAgICBlbHNl
CisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxz
ZQorICAgICAgICAgIHJhaXNlICJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGF0ICN7bm9kZS5j
b2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG9wZXJhbmRzLnNpemUgPT0gMworICAgICAgICAgIGlm
IG9wZXJhbmRzWzBdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICB0bXAgPSBUbXAubmV3KG5v
ZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbb3BlcmFuZHNbMF0sIHRtcF0pCisgICAgICAg
ICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bj
b2RlLCBbdG1wLCBvcGVyYW5kc1sxXSwgb3BlcmFuZHNbMl1dKQorICAgICAgICAgIGVsc2lmIG9w
ZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICB0bXAgPSBUbXAubmV3KG5vZGUu
Y29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbb3BlcmFuZHNbMV0sIHRtcF0pCisgICAgICAgICAg
ICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2Rl
LCBbb3BlcmFuZHNbMF0sIHRtcCwgb3BlcmFuZHNbMl1dKQorICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAg
ICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgIGVuZAorICAgICAgZWxzZQorICAgICAgICBu
ZXdMaXN0IDw8IG5vZGUKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIG5ld0xpc3QgPDwgbm9k
ZQorICAgIGVuZAorICB9CisgIG5ld0xpc3QKK2VuZAorCisjCisjIEFjdHVhbCBsb3dlcmluZyBj
b2RlIGZvbGxvd3MuCisjCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBsb3dlckFSTXY3CisgICAg
bXlMaXN0ID0gYXJtVjdMb3dlckJyYW5jaE9wcyhAbGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xv
d2VyTWFsZm9ybWVkQWRkcmVzc2VzKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWFs
Zm9ybWVkSW1tZWRpYXRlcyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1pc3BsYWNl
ZEFkZHJlc3NlZChteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdMb3dlclJlZ2lzdGVyUmV1c2Uo
bXlMaXN0KQorICAgIG15TGlzdCA9IGFzc2lnblJlZ2lzdGVyc1RvVGVtcG9yYXJpZXMobXlMaXN0
LCA6Z3ByLCBBUk12N19FWFRSQV9HUFJTKQorICAgIG15TGlzdCA9IGFzc2lnblJlZ2lzdGVyc1Rv
VGVtcG9yYXJpZXMobXlMaXN0LCA6ZnByLCBBUk12N19FWFRSQV9GUFJTKQorICAgIG15TGlzdC5l
YWNoIHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBub2RlLmxvd2VyKCJBUk12NyIpCisgICAgfQor
ICBlbmQKK2VuZAorCitkZWYgYXJtVjdPcGVyYW5kcyhvcGVyYW5kcykKKyAgb3BlcmFuZHMubWFw
e3x2fCB2LmFybVY3T3BlcmFuZH0uam9pbigiICIpCitlbmQKKworZGVmIGFybVY3RmxpcHBlZE9w
ZXJhbmRzKG9wZXJhbmRzKQorICBhcm1WN09wZXJhbmRzKFtvcGVyYW5kc1stMV1dICsgb3BlcmFu
ZHNbMC4uLTJdKQorZW5kCisKK2RlZiBlbWl0QXJtVjdDb21wYWN0KG9wY29kZTIsIG9wY29kZTMs
IG9wZXJhbmRzKQorICBpZiBvcGVyYW5kcy5zaXplID09IDMKKyAgICAkYXNtLnB1dHMgIiN7b3Bj
b2RlM30gI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICBlbHNlCisgICAgcmFp
c2UgdW5sZXNzIG9wZXJhbmRzLnNpemUgPT0gMgorICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sx
XS5pc19hPyBSZWdpc3RlcklECisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisg
ICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlM30gI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAj
e29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIK
KyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlMn0gI3thcm1WN0ZsaXBwZWRPcGVh
cm5kcyhvcGVyYW5kcyl9IgorICAgIGVuZAorICBlbmQKK2VuZAorCitkZWYgZW1pdEFybVY3KG9w
Y29kZSwgb3BlcmFuZHMpCisgIGlmIG9wZXJhbmRzLnNpemUgPT0gMworICAgICRhc20ucHV0cyAi
I3tvcGNvZGV9ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgZWxzZQorICAg
IHJhaXNlIHVubGVzcyBvcGVyYW5kcy5zaXplID09IDIKKyAgICAkYXNtLnB1dHMgIiN7b3Bjb2Rl
fSAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5k
fSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICBlbmQKK2VuZAorCitkZWYgZW1pdEFy
bVY3RG91YmxlQnJhbmNoKGJyYW5jaE9wY29kZSwgb3BlcmFuZHMpCisgICRhc20ucHV0cyAidmNt
cGUuZjY0ICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAkYXNtLnB1dHMgInZt
cnMgYXBzcl9uemN2LCBmcHNjciIKKyAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVy
YW5kc1syXS5hc21MYWJlbH0iCitlbmQKKworZGVmIGFybVY3VGVzdGluZ1plcm8ob3BlcmFuZHMp
CisgIHZhbHVlID0gb3BlcmFuZHNbMF0KKyAgY2FzZSBvcGVyYW5kcy5zaXplCisgIHdoZW4gMgor
ICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICB3aGVuIDMKKyAgICBt
YXNrID0gb3BlcmFuZHNbMV0KKyAgZWxzZQorICAgIHJhaXNlICJFeHBlY3RlZCAyIG9yIDMgb3Bl
cmFuZHMgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisg
IGVuZAorICAKKyAgKG1hc2suaXNfYT8gSW1tZWRpYXRlIGFuZCBtYXNrLnZhbHVlID09IC0xKSBv
ciB2YWx1ZSA9PSBtYXNrCitlbmQKKworZGVmIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgIHZh
bHVlID0gb3BlcmFuZHNbMF0KKyAgY2FzZSBvcGVyYW5kcy5zaXplCisgIHdoZW4gMgorICAgIG1h
c2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICB3aGVuIDMKKyAgICBtYXNrID0g
b3BlcmFuZHNbMV0KKyAgZWxzZQorICAgIHJhaXNlICJFeHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMg
YnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgIGVuZAor
ICAKKyAgaWYgbWFzay5pc19hPyBJbW1lZGlhdGUgYW5kIG1hc2sudmFsdWUgPT0gLTEKKyAgICAk
YXNtLnB1dHMgInRzdCAje3ZhbHVlLmFybVY3T3BlcmFuZH0sICN7dmFsdWUuYXJtVjdPcGVyYW5k
fSIKKyAgZWxzaWYgbWFzay5pc19hPyBJbW1lZGlhdGUKKyAgICAkYXNtLnB1dHMgInRzdC53ICN7
dmFsdWUuYXJtVjdPcHJlYW5kfSwgI3ttYXNrLmFybVY3T3BlcmFuZH0iCisgIGVsc2UKKyAgICAk
YXNtLnB1dHMgInRzdCAje3ZhbHVlLmFybVY3T3BlcmFuZH0sICN7bWFzay5hcm1WN09wZXJhbmR9
IgorICBlbmQKK2VuZAorCitkZWYgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgY29kZSkKKyAg
JGFzbS5wdXRzICJtb3ZzICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgXCMwIgorICAkYXNt
LnB1dHMgImNtcCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJt
VjdPcGVyYW5kfSIKKyAgJGFzbS5wdXRzICJpdCAje2NvZGV9IgorICAkYXNtLnB1dHMgIm1vdiN7
Y29kZX0gI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCBcIzEiCitlbmQKKworZGVmIGVtaXRB
cm1WN1Rlc3RTZXQob3BlcmFuZHMsIGNvZGUpCisgICRhc20ucHV0cyAibW92cyAje29wZXJhbmRz
Wy0xXS5hcm1WN09wZXJhbmR9LCBcIzAiCisgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgICRh
c20ucHV0cyAiaXQgI3tjb2RlfSIKKyAgJGFzbS5wdXRzICJtb3Yje2NvZGV9ICN7b3BlcmFuZHNb
LTFdLmFybVY3T3BlcmFuZH0sIFwjMSIKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbgorICBkZWYg
bG93ZXJBUk12NworICAgICRhc20uY29tbWVudCBjb2RlT3JpZ2luU3RyaW5nCisgICAgY2FzZSBv
cGNvZGUKKyAgICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09
IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICByYWlzZSB1bmxlc3Mg
b3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFu
ZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAw
CisgICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAg
ICAkYXNtLnB1dHMgIm1vdiAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNb
MV0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICRhc20ucHV0cyAiYWRkcyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAg
ICAgIGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5p
c19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBS
ZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3Rl
cklECisgICAgICAgICRhc20ucHV0cyAiYWRkcyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJh
bmRzKX0iCisgICAgICBlbHNlCisgICAgICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0
ZQorICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0K
KyAgICAgICAgICAgICRhc20ucHV0cyAiYWRkcyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJh
bmRzKX0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAkYXNtLnB1dHMg
ImFkZCAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIGVuZAorICAg
ICAgZW5kCisgICAgd2hlbiAiYW5kaSIsICJhbmRwIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgi
YW5kcyIsICJhbmQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgZW1p
dEFybVY3Q29tcGFjdCgib3JycyIsICJvcnIiLCBvcGVyYW5kcykKKyAgICB3aGVuICJ4b3JpIiwg
InhvcnAiCisgICAgICBlbWl0QXJtVjdDb21wYWN0KCJlb3JzIiwgImVvciIsIG9wZXJhbmRzKQor
ICAgIHdoZW4gImxzaGlmdGkiCisgICAgICBlbWl0QXJtVjdDb21wYWN0KCJsc2xzIiwgImxzbHMi
LCBvcGVyYW5kcykKKyAgICB3aGVuICJyc2hpZnRpIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgi
YXNycyIsICJhc3JzIiwgb3BlcmFuZHMpCisgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICBlbWl0
QXJtVjdDb21wYWN0KCJsc3JzIiwgImxzcnMiLCBvcGVyYW5kcykKKyAgICB3aGVuICJtdWxpIgor
ICAgICAgZW1pdEFybVY3KCJtdWxzIiwgb3BlcmFuZHMpCisgICAgd2hlbiAic3ViaSIsICJzdWJw
IgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgic3VicyIsICJzdWJzIiwgb3BlcmFuZHMpCisgICAg
d2hlbiAibmVnaSIKKyAgICAgICRhc20ucHV0cyAicnNicyAje29wZXJhbmRzWzBdLmFybVY3T3Bl
cmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgXCMwIgorICAgIHdoZW4gIm5vdGki
CisgICAgICAkYXNtLnB1dHMgIm12bnMgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29w
ZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgd2hlbiAibG9hZGkiLCAibG9hZHAiCisgICAg
ICAkYXNtLnB1dHMgImxkciAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAg
d2hlbiAic3RvcmVpIiwgInN0b3JlcCIKKyAgICAgICRhc20ucHV0cyAic3RyICN7YXJtVjdPcGVy
YW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gImxvYWRiIgorICAgICAgJGFzbS5wdXRzICJsZHJi
ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJsb2FkYnMiCisg
ICAgICAkYXNtLnB1dHMgImxkcnNiLncgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9
IgorICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAic3RyYiAje2FybVY3RmxpcHBl
ZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAibG9hZGgiCisgICAgICAkYXNtLnB1dHMg
ImxkcmggI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gImxvYWRo
cyIKKyAgICAgICRhc20ucHV0cyAibGRyc2gudyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJh
bmRzKX0iCisgICAgd2hlbiAic3RvcmVoIgorICAgICAgJGFzbS5wdXRzICJzdHJoICN7YXJtVjdG
bGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJhZGRkIgorICAgICAgZW1pdEFy
bVY3KCJ2YWRkLmY2NCIsIG9wZXJhbmRzKQorICAgIHdoZW4gImRpdmQiCisgICAgICBlbWl0QXJt
VjcoInZkaXYuZjY0Iiwgb3BlcmFuZHMpCisgICAgd2hlbiAic3ViZCIKKyAgICAgIGVtaXRBcm1W
NygidnN1Yi5mNjQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJtdWxkIgorICAgICAgZW1pdEFybVY3
KCJ2bXVsLmY2NCIsIG9wZXJhbmRzKQorICAgIHdoZW4gInNxcnRkIgorICAgICAgJGFzbS5wdXRz
ICJ2c3FydC5mNjQgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4g
ImNpMmQiCisgICAgICAkYXNtLnB1dHMgInZtb3YgI3tvcGVyYW5kc1sxXS5hcm1WN1NpbmdsZX0s
ICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICRhc20ucHV0cyAidmN2dC5mNjQu
czMyICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN1Npbmds
ZX0iCisgICAgd2hlbiAiYmRlcSIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmVxIiwg
b3BlcmFuZHMpCisgICAgd2hlbiAiYmRuZXEiCisgICAgICAkYXNtLnB1dHMgInZjbXBlLmY2NCAj
e2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAidm1ycyBh
cHNyX256Y3YsIGZwc2NyIgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgi
YmRuZXEiKQorICAgICAgJGFzbS5wdXRzICJidnMgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9y
aWdpbiwgaXNVbm9yZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiYm5lICN7b3Bl
cmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIkFSTXY3IikKKyAg
ICB3aGVuICJiZGd0IgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJiZ3QiLCBvcGVyYW5k
cykKKyAgICB3aGVuICJiZGd0ZXEiCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJnZSIs
IG9wZXJhbmRzKQorICAgIHdoZW4gImJkbHQiCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2go
ImJtaSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkbHRlcSIKKyAgICAgIGVtaXRBcm1WN0RvdWJs
ZUJyYW5jaCgiYmxzIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRlcXVuIgorICAgICAgJGFzbS5w
dXRzICJ2Y21wZS5mNjQgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAk
YXNtLnB1dHMgInZtcnMgYXBzcl9uemN2LCBmcHNjciIKKyAgICAgICRhc20ucHV0cyAiYnZzICN7
b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJiZXEgI3tvcGVyYW5kc1sy
XS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmRuZXF1biIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJy
YW5jaCgiYm5lIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRndHVuIgorICAgICAgZW1pdEFybVY3
RG91YmxlQnJhbmNoKCJiaGkiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAg
IGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYnBsIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRsdHVu
IgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJibHQiLCBvcGVyYW5kcykKKyAgICB3aGVu
ICJiZGx0ZXF1biIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmxlIiwgb3BlcmFuZHMp
CisgICAgd2hlbiAiYnRkMmkiCisgICAgICAjIEZJWE1FOiBtYXkgYmUgYSBnb29kIGlkZWEgdG8g
anVzdCBnZXQgcmlkIG9mIHRoaXMgaW5zdHJ1Y3Rpb24sIHNpbmNlIHRoZSBpbnRlcnByZXRlcgor
ICAgICAgIyBjdXJyZW50bHkgZG9lcyBub3QgdXNlIGl0LgorICAgICAgcmFpc2UgIkFSTXY3IGRv
ZXMgbm90IHN1cHBvcnQgdGhpcyBvcGNvZGUgeWV0LCAje2NvZGVPcmlnaW59IgorICAgIHdoZW4g
InRkMmkiCisgICAgICAkYXNtLnB1dHMgInZjdnQuczMyLmY2NCAje0FSTXY3X1NDUkFUQ0hfRlBS
LmFybVY3U2luZ2xlfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgJGFzbS5w
dXRzICJ2bW92ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tBUk12N19TQ1JBVENIX0ZQ
Ui5hcm1WN1NpbmdsZX0iCisgICAgd2hlbiAiYmNkMmkiCisgICAgICAkYXNtLnB1dHMgInZjdnQu
czMyLmY2NCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSwgI3tvcGVyYW5kc1swXS5h
cm1WN09wZXJhbmR9IgorICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMV0uYXJtVjdP
cGVyYW5kfSwgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0iCisgICAgICAkYXNtLnB1
dHMgInZjdnQuZjY0LnMzMiAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3T3BlcmFuZH0sICN7QVJN
djdfU0NSQVRDSF9GUFIuYXJtVjdTaW5nbGV9IgorICAgICAgYW1pdEFybVY3RG91YmxlQnJhbmNo
KCJibmUiLCBbQVJNdjdfU0NSQVRDSF9GUFIsIG9wZXJhbmRzWzBdLCBvcGVyYW5kc1syXV0pCisg
ICAgICAkYXNtLnB1dHMgImNieiAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFu
ZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gIm1vdmR6IgorICAgICAgIyBGSVhNRTogZWl0aGVy
IHN1cHBvcnQgdGhpcyBvciByZW1vdmUgaXQuCisgICAgICByYWlzZSAiQVJNdjcgZG9lcyBub3Qg
c3VwcG9ydCB0aGlzIG9wY29kZSB5ZXQsICN7Y29kZU9yaWdpbn0iCisgICAgd2hlbiAicG9wIgor
ICAgICAgJGFzbS5wdXRzICJwb3AgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgIHdo
ZW4gInB1c2giCisgICAgICAkYXNtLnB1dHMgInB1c2ggI3tvcGVyYW5kc1swXS5hcm1WN09wZXJh
bmR9IgorICAgIHdoZW4gIm1vdmUiLCAic3hpMnAiLCAienhpMnAiCisgICAgICBpZiBvcGVyYW5k
c1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgYXJtVjdNb3ZlSW1tZWRpYXRlKG9wZXJhbmRz
WzBdLnZhbHVlLCBvcGVyYW5kc1sxXSkKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJt
b3YgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgZW5kCisgICAgd2hl
biAibm9wIgorICAgICAgJGFzbS5wdXRzICJub3AiCisgICAgd2hlbiAiYmllcSIsICJicGVxIiwg
ImJiZXEiCisgICAgICBpZiBJbW1lZGlhdGUubmV3KDApID09IG9wZXJhbmRzWzBdCisgICAgICAg
ICRhc20ucHV0cyAiY2J6ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSAje29wZXJhbmRzWzJd
LmFzbUxhYmVsfSIKKyAgICAgIGVsc2lmIEltbWVkaWF0ZS5uZXcoMCkgPT0gb3BlcmFuZHNbMV0K
KyAgICAgICAgJGFzbS5wdXRzICJjYnogI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9ICN7b3Bl
cmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgImNtcCAj
e2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgJGFzbS5wdXRzICJiZXEg
I3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICBlbmQKKyAgICB3aGVuICJiaW5lcSIsICJi
cG5lcSIsICJiYm5lcSIKKyAgICAgIGlmIEltbWVkaWF0ZS5uZXcoMCkgPT0gb3BlcmFuZHNbMF0K
KyAgICAgICAgJGFzbS5wdXRzICJjYm56ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSAje29w
ZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgIGVsc2lmIEltbWVkaWF0ZS5uZXcoMCkgPT0gb3Bl
cmFuZHNbMV0KKyAgICAgICAgJGFzbS5wdXRzICJjYm56ICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVy
YW5kfSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5w
dXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICRhc20u
cHV0cyAiYm5lICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgZW5kCisgICAgd2hlbiAi
YmlhIiwgImJwYSIsICJiYmEiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMo
b3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmhpICN7b3BlcmFuZHNbMl0uYXNt
TGFiZWx9IgorICAgIHdoZW4gImJpYWVxIiwgImJwYWVxIiwgImJiYWVxIgorICAgICAgJGFzbS5w
dXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1
dHMgImJocyAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWIiLCAiYnBiIiwg
ImJiYiIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4x
XSl9IgorICAgICAgJGFzbS5wdXRzICJibG8gI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAg
d2hlbiAiYmliZXEiLCAiYnBiZXEiLCAiYmJiZXEiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2Fy
bVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmxzICN7b3Bl
cmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJpZ3QiLCAiYnBndCIsICJiYmd0IgorICAg
ICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAg
ICAkYXNtLnB1dHMgImJndCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWd0
ZXEiLCAiYnBndGVxIiwgImJiZ3RlcSIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVy
YW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5wdXRzICJiZ2UgI3tvcGVyYW5kc1sy
XS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmlsdCIsICJicGx0IiwgImJibHQiCisgICAgICAkYXNt
LnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20u
cHV0cyAiYmx0ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJpbHRlcSIsICJi
cGx0ZXEiLCAiYmJsdGVxIgorICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9w
ZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgImJsZSAje29wZXJhbmRzWzJdLmFzbUxh
YmVsfSIKKyAgICB3aGVuICJidGl6IiwgImJ0cHoiLCAiYnRieiIKKyAgICAgIGlmIGFybVY3VGVz
dGluZ1plcm8ob3BlcmFuZHMpCisgICAgICAgICRhc20ucHV0cyAiY2J6ICN7b3BlcmFuZHNbMF0u
YXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICBlbHNlCisgICAg
ICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgICAgICAgICRhc20ucHV0cyAiYmVxICN7b3Bl
cmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgZW5kCisgICAgd2hlbiAiYnRpbnoiLCAiYnRwbnoi
LCAiYnRibnoiCisgICAgICBpZiBhcm1WN1Rlc3RpbmdaZXJvKG9wZXJhbmRzKQorICAgICAgICAk
YXNtLnB1dHMgImNibnogI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzJd
LmFzbUxhYmVsfSIKKyAgICAgIGVsc2UKKyAgICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykK
KyAgICAgICAgJGFzbS5wdXRzICJibmUgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICBl
bmQKKyAgICB3aGVuICJidGlvIiwgImJ0cG8iLCAiYnRibyIKKyAgICAgIGVtaXRBcm1WN1Rlc3Qo
b3BlcmFuZHMpCisgICAgICAkYXNtLnB1dHMgImJ2cyAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIK
KyAgICB3aGVuICJidGlzIiwgImJ0cHMiLCAiYnRicyIKKyAgICAgIGVtaXRBcm1WN1Rlc3Qob3Bl
cmFuZHMpCisgICAgICAkYXNtLnB1dHMgImJtaSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAg
ICB3aGVuICJqbXAiCisgICAgICBpZiBvcGVyYW5kc1swXS5sYWJlbD8KKyAgICAgICAgJGFzbS5w
dXRzICJiICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgZWxzZQorICAgICAgICAkYXNt
LnB1dHMgIm1vdiBwYywgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgZW5kCisg
ICAgd2hlbiAiY2FsbCIKKyAgICAgIGlmIG9wZXJhbmRzWzBdLmxhYmVsPworICAgICAgICAkYXNt
LnB1dHMgImJseCAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgIGVsc2UKKyAgICAgICAg
JGFzbS5wdXRzICJibHogI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgZW5kCisg
ICAgd2hlbiAiYnJlYWsiCisgICAgICAkYXNtLnB1dHMgImJrcHQiCisgICAgd2hlbiAicmV0Igor
ICAgICAgJGFzbS5wdXRzICJieCBsciIKKyAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICBl
bWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiZXEiKQorICAgIHdoZW4gImNpbmVxIiwgImNwbmVx
IgorICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgIm5lIikKKyAgICB3aGVuICJjaWEi
LCAiY3BhIgorICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImhpIikKKyAgICB3aGVu
ICJjaWFlcSIsICJjcGFlcSIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJocyIp
CisgICAgd2hlbiAiY2liIiwgImNwYiIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMs
ICJsbyIpCisgICAgd2hlbiAiY2liZXEiLCAiY3BiZXEiCisgICAgICBlbWl0QXJtVjdDb21wYXJl
KG9wZXJhbmRzLCAibHMiKQorICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgIGVtaXRBcm1W
N0NvbXBhcmUob3BlcmFuZHMsICJndCIpCisgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIKKyAg
ICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJnZSIpCisgICAgd2hlbiAiY2lsdCIsICJj
cGx0IgorICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImx0IikKKyAgICB3aGVuICJj
aWx0ZXEiLCAiY3BsdGVxIgorICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImxlIikK
KyAgICB3aGVuICJ0aW8iLCAidGJvIgorICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywg
InZzIikKKyAgICB3aGVuICJ0aXMiLCAidGJzIgorICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVy
YW5kcywgIm1pIikKKyAgICB3aGVuICJ0aXoiLCAidGJ6IgorICAgICAgZW1pdEFybVY3VGVzdFNl
dChvcGVyYW5kcywgImVxIikKKyAgICB3aGVuICJ0aW56IiwgInRibnoiCisgICAgICBlbWl0QXJt
VjdUZXN0U2V0KG9wZXJhbmRzLCAibmUiKQorICAgIHdoZW4gInBlZWsiCisgICAgICAkYXNtLnB1
dHMgImxkciAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sIFtzcCwgXCMje29wZXJhbmRzWzBd
LnZhbHVlICogNH1dIgorICAgIHdoZW4gInBva2UiCisgICAgICAkYXNtLnB1dHMgInN0ciAje29w
ZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sIFtzcCwgXCMje29wZXJhbmRzWzBdLnZhbHVlICogNH1d
IgorICAgIHdoZW4gImZpaTJkIgorICAgICAgIyBGSVhNRSEhIQorICAgIGVuZAorICBlbmQKK2Vu
ZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDEzNSBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18p
CisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJv
ZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2VsZl9oYXNoIgorcmVxdWlyZSAi
c2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2NsYXNzIEFzc2VtYmxlcgorICBkZWYg
aW5pdGlhbGl6ZShvdXRwKQorICAgIEBvdXRwID0gb3V0cAorICAgIEBzdGF0ZSA9IDpjcHAKKyAg
ZW5kCisgIAorICBkZWYgZW50ZXJBc20KKyAgICBAb3V0cC5wdXRzICJhc20gKCIKKyAgICBAc3Rh
dGUgPSA6YXNtCisgIGVuZAorICAKKyAgZGVmIGxlYXZlQXNtCisgICAgQG91dHAucHV0cyAiKTsi
CisgICAgQHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBpbkFzbQorICAgIGVudGVyQXNt
CisgICAgeWllbGQKKyAgICBsZWF2ZUFzbQorICBlbmQKKyAgCisgIGRlZiBwdXRzKCpsaW5lKQor
ICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnB1dHMoIlwiXFx0IiAr
IGxpbmUuam9pbignJykgKyAiXFxuXCIiKQorICBlbmQKKyAgCisgIGRlZiBwcmludChsaW5lKQor
ICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnByaW50KCJcIiIgKyBs
aW5lICsgIlwiIikKKyAgZW5kCisgIAorICBkZWYgcHV0c0xhYmVsKGxhYmVsTmFtZSkKKyAgICBy
YWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wdXRzKCJcIi5nbG9ibCBcIiBT
WU1CT0xfU1RSSU5HKCN7bGFiZWxOYW1lfSkgXCJcXG5cIiIpCisgICAgQG91dHAucHV0cygiSElE
RV9TWU1CT0woI3tsYWJlbE5hbWV9KSBcIlxcblwiIikKKyAgICBAb3V0cC5wdXRzKCJTWU1CT0xf
U1RSSU5HKCN7bGFiZWxOYW1lfSkgXCI6XFxuXCIiKQorICBlbmQKKyAgCisgIGRlZiBwdXRzTG9j
YWxMYWJlbChsYWJlbE5hbWUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAg
QG91dHAucHV0cygiTE9DQUxfTEFCRUxfU1RSSU5HKCN7bGFiZWxOYW1lfSkgXCI6XFxuXCIiKQor
ICBlbmQKKyAgCisgIGRlZiBzZWxmLmxhYmVsUmVmZXJlbmNlKGxhYmVsTmFtZSkKKyAgICAiXCIg
U1lNQk9MX1NUUklORygje2xhYmVsTmFtZX0pIFwiIgorICBlbmQKKyAgCisgIGRlZiBzZWxmLmxv
Y2FsTGFiZWxSZWZlcmVuY2UobGFiZWxOYW1lKQorICAgICJcIiBMT0NBTF9MQUJFTF9TVFJJTkco
I3tsYWJlbE5hbWV9KSBcIiIKKyAgZW5kCisgIAorICBkZWYgY29tbWVudCh0ZXh0KQorICAgIEBv
dXRwLnB1dHMgIi8vICN7dGV4dH0iCisgIGVuZAorZW5kCisKK2FzbUZpbGUgPSBBUkdWLnNoaWZ0
CitvZmZzZXRzRmlsZSA9IEFSR1Yuc2hpZnQKK291dHB1dEZsbm0gPSBBUkdWLnNoaWZ0CisKK29m
ZnNldHNMaXN0LCBjb25maWdJbmRleCA9IG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgob2Zm
c2V0c0ZpbGUpCitpbnB1dERhdGEgPSBJTzo6cmVhZChhc21GaWxlKQorCitpbnB1dEhhc2ggPQor
ICAiLy8gb2ZmbGluZWFzbSBpbnB1dCBoYXNoOiAiICsgRGlnZXN0OjpTSEExLmhleGRpZ2VzdChp
bnB1dERhdGEpICsKKyAgIiAiICsgRGlnZXN0OjpTSEExLmhleGRpZ2VzdCgob2Zmc2V0c0xpc3Qg
KyBbY29uZmlnSW5kZXhdKS5qb2luKCcgJykpICsKKyAgIiAiICsgc2VsZkhhc2gKKworaWYgRmls
ZVRlc3QuZXhpc3Q/IG91dHB1dEZsbm0KKyAgRmlsZS5vcGVuKG91dHB1dEZsbm0sICJyIikgewor
ICAgIHwgaW5wIHwKKyAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAgIGlmIGZpcnN0TGluZSBh
bmQgZmlyc3RMaW5lLmNob21wID09IGlucHV0SGFzaAorICAgICAgJHN0ZGVyci5wdXRzICJOb3Ro
aW5nIGNoYW5nZWQuIgorICAgICAgZXhpdCAwCisgICAgZW5kCisgIH0KK2VuZAorCitGaWxlLm9w
ZW4ob3V0cHV0RmxubSwgInciKSB7CisgIHwgb3V0cCB8CisgICRvdXRwdXQgPSBvdXRwCisgICRv
dXRwdXQucHV0cyBpbnB1dEhhc2gKKyAgCisgICRhc20gPSBBc3NlbWJsZXIubmV3KCRvdXRwdXQp
CisgIAorICBhc3QgPSBwYXJzZShsZXgoaW5wdXREYXRhKSkKKyAgCisgIGZvclNldHRpbmdzKGNv
bXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpW2NvbmZpZ0luZGV4XSwgYXN0KSB7CisgICAg
fCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgYXNzZXJ0Q29u
ZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICAgIGxvd0xldmVsQVNUID0gbG93TGV2ZWxB
U1QucmVzb2x2ZSgqYnVpbGRPZmZzZXRzTWFwKGxvd0xldmVsQVNULCBvZmZzZXRzTGlzdCkpCisg
ICAgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1Qs
IGJhY2tlbmQpIHsKKyAgICAgICRhc20uaW5Bc20geworICAgICAgICBsb3dMZXZlbEFTVC5sb3dl
cihiYWNrZW5kKQorICAgICAgfQorICAgIH0KKyAgfQorfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NzcgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMKKyMgQmFzZSB1dGlsaXR5IHR5
cGVzIGZvciB0aGUgQVNULgorIworCisjIFZhbGlkIG1ldGhvZHMgZm9yIE5vZGU6CisjCisjIG5v
ZGUuY2hpbGRyZW4gLT4gUmV0dXJucyBhbiBhcnJheSBvZiBpbW1lZGlhdGUgY2hpbGRyZW4uCisj
CisjIG5vZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgc3RyaWN0IGRl
c2NlbmRhbnRzIChjaGlsZHJlbgorIyAgICAgYW5kIGNoaWxkcmVuIG9mIGNoaWxkcmVuLCB0cmFu
c2l0aXZlbHkpLgorIworIyBub2RlLmZsYXR0ZW4gLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWlu
aW5nIHRoZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5kCisjICAgICB0aGUgbm9kZSBpdHNlbGYuCisj
CisjIG5vZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aG9z
ZSBlbGVtZW50cyBpbgorIyAgICAgbm9kZS5mbGF0dGVuIHRoYXQgYXJlIG9mIHRoZSBnaXZlbiB0
eXBlIChpc19hPyB0eXBlIHJldHVybnMgdHJ1ZSkuCisjCisjIG5vZGUubWFwQ2hpbGRyZW57fHZ8
IC4uLn0gLT4gUmV0dXJucyBhIG5ldyBub2RlIHdpdGggYWxsIGNoaWxkcmVuCisjICAgICByZXBs
YWNlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJsb2NrLgorIworIyBFeGFtcGxlczoKKyMKKyMg
bm9kZS5maWx0ZXIoU2V0dGluZykudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc2V0dGluZ3Mg
dGhhdCB0aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVsc2UgYmxvY2tzIGRlcGVuZCBvbi4KKyMKKyMg
bm9kZS5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzdHJ1
Y3R1cmUgb2Zmc2V0cworIyAgICAgdGhhdCB0aGUgQVNUIGRlcGVuZHMgb24uCisKK2NsYXNzIE5v
ZGUKKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4pCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgIGVuZAorICAKKyAgZGVmIGNv
ZGVPcmlnaW5TdHJpbmcKKyAgICAibGluZSBudW1iZXIgI3tAY29kZU9yaWdpbn0iCisgIGVuZAor
ICAKKyAgZGVmIGRlc2NlbmRhbnRzCisgICAgY2hpbGRyZW4uY29sbGVjdHt8dnwgdi5mbGF0dGVu
fS5mbGF0dGVuCisgIGVuZAorICAKKyAgZGVmIGZsYXR0ZW4KKyAgICBbc2VsZl0gKyBkZXNjZW5k
YW50cworICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIodHlwZSkKKyAgICBmbGF0dGVuLnNlbGVjdHt8
dnwgdi5pc19hPyB0eXBlfQorICBlbmQKK2VuZAorCitjbGFzcyBOb0NoaWxkcmVuIDwgTm9kZQor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW10KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRy
ZW4KKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldEtleQorICBhdHRy
X3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKHN0cnVjdCwgZmll
bGQpCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAK
KyAgZGVmIGhhc2gKKyAgICBAc3RydWN0Lmhhc2ggKyBAZmllbGQuaGFzaCAqIDMKKyAgZW5kCisg
IAorICBkZWYgZXFsPyhvdGhlcikKKyAgICBAc3RydWN0ID09IG90aGVyLnN0cnVjdCBhbmQgQGZp
ZWxkID09IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisgICAgCisjCisjIEFTVCBub2Rlcy4KKyMK
KworY2xhc3MgU3RydWN0T2Zmc2V0IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0
LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgICAgQGZpZWxk
ID0gZmllbGQKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9y
RmllbGQoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBrZXkgPSBTdHJ1Y3RPZmZzZXRL
ZXkubmV3KHN0cnVjdCwgZmllbGQpCisgICAgCisgICAgdW5sZXNzIEBAbWFwcGluZ1trZXldCisg
ICAgICBAQG1hcHBpbmdba2V5XSA9IFN0cnVjdE9mZnNldC5uZXcoY29kZU9yaWdpbiwgc3RydWN0
LCBmaWVsZCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdba2V5XQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgIiN7c3RydWN0fTo6I3tmaWVsZH0iCisgIGVuZAorICAKKyAgZGVmIDw9PihvdGhl
cikKKyAgICBpZiBAc3RydWN0ICE9IG90aGVyLnN0cnVjdAorICAgICAgcmV0dXJuIEBzdHJ1Y3Qg
PD0+IG90aGVyLnN0cnVjdAorICAgIGVuZAorICAgIEBmaWVsZCA8PT4gb3RoZXIuZmllbGQKKyAg
ZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3Ry
dWN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgIGVuZAorICAKKyAgQEBtYXBwaW5n
ID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHVu
bGVzcyBAQG1hcHBpbmdbc3RydWN0XQorICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBTaXplb2Yu
bmV3KGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbc3RydWN0XQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgInNpemVvZiAje0BzdHJ1Y3R9IgorICBlbmQKKyAg
CisgIGRlZiA8PT4ob3RoZXIpCisgICAgQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgIGVuZAor
ZW5kCisKK2NsYXNzIEltbWVkaWF0ZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnZhbHVl
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEB2YWx1ZSA9IHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
I3t2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIG90aGVyLmlzX2E/IElt
bWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUgPT0gQHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGFkZHJl
c3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5k
CitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQs
IDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdo
dAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4s
ICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgIigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3Mg
U3ViSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisg
IGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCks
ICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVt
cH0gLSAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcyA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVm
dCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgor
ICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE11
bEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQp
KQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKiAje3JpZ2h0LmR1
bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlIDwgTm9kZQorICBhdHRyX3Jl
YWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBbQGNoaWxkXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAg
IE5lZ0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICAiKC0je0BjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNz
IFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxm
LmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisg
ICAgICBAQG1hcHBpbmdbbmFtZV0gPSBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
bmFtZQorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAg
ZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRCA8
IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUK
KyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2Rl
T3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGlu
Z1tuYW1lXSA9IEZQUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAg
ICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5k
CisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8K
KyAgICBmYWxzZQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZSA8IE5vQ2hpbGRyZW4KKyAg
YXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBA
QG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFZhcmlh
YmxlLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRy
ZXNzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFzZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgYmFzZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQGJhc2UgPSBiYXNlCisgICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBj
aGlsZHJlbgorICAgIFtAYmFzZSwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRy
ZW4KKyAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQG9m
ZnNldCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZzZXQuZHVtcH1bI3tiYXNl
LmR1bXB9XSIKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICB0cnVlCisgIGVuZAorICAK
KyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleCA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2UsIDppbmRleCwgOnNjYWxlLCA6b2Zmc2V0CisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBpbmRleCwgc2NhbGUsIG9mZnNldCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBiYXNlID0gYmFzZQorICAgIEBpbmRleCA9IGlu
ZGV4CisgICAgQHNjYWxlID0gc2NhbGUKKyAgICByYWlzZSB1bmxlc3MgWzEsIDIsIDQsIDhdLm1l
bWJlcj8gQHNjYWxlCisgICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIFtAYmFzZSwgQGluZGV4LCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlp
ZWxkIEBpbmRleCksIEBzY2FsZSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfSwgI3tpbmRleC5kdW1wfSwgI3tz
Y2FsZX1dIgorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIHRydWUKKyAgZW5kCisgIAor
ICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRy
ZXNzIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6YWRkcmVzcworICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgYWRkcmVzcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBh
ZGRyZXNzID0gYWRkcmVzcworICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7YWRkcmVzcy5k
dW1wfVtdIgorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIHRydWUKKyAgZW5kCisgIAor
ICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24g
PCBOb2RlCisgIGF0dHJfcmVhZGVyIDpvcGNvZGUsIDpvcGVyYW5kcworICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgb3Bjb2RlLCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBvcGNvZGUgPSBvcGNvZGUKKyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcworICBlbmQK
KyAgCisgIGRlZiBjaGlsZHJlbgorICAgIG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIG1hcENo
aWxkcmVuKCZwcm9jKQorICAgIEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBAb3Bjb2RlLCBA
b3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdCIgKyBv
cGNvZGUudG9fcyArICIgIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAi
KQorICBlbmQKK2VuZAorCitjbGFzcyBFcnJvciA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgIlx0ZXJyb3IiCisgIGVuZAorZW5kCisKK2NsYXNzIENvbnN0RGVjbCA8IE5vZGUK
KyAgYXR0cl9yZWFkZXIgOnZhcmlhYmxlLCA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2
YXJpYWJsZSA9IHZhcmlhYmxlCisgICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBbQHZhcmlhYmxlLCBAdmFsdWVdCisgIGVuZAorICAKKyAgZGVmIG1hcENo
aWxkcmVuCisgICAgQ29uc3REZWNsLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHZhcmlhYmxlKSwg
KHlpZWxkIEB2YWx1ZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiY29uc3QgI3tAdmFy
aWFibGUuZHVtcH0gPSAje0B2YWx1ZS5kdW1wfSIKKyAgZW5kCitlbmQKKworJGxhYmVsTWFwcGlu
ZyA9IHt9CisKK2NsYXNzIExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAi
TGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVd
LmlzX2E/IExhYmVsCisgICAgZWxzZQorICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExhYmVs
Lm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0K
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xh
c3MgTG9jYWxMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAbmFtZSA9IG5hbWUKKyAgZW5kCisKKyAgQEB1bmlxdWVOYW1lQ291bnRlciA9IDAKKyAgCisg
IGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5n
W25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVz
cyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExvY2FsTGFiZWwKKyAgICBlbHNlCisgICAgICAk
bGFiZWxNYXBwaW5nW25hbWVdID0gTG9jYWxMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAg
ICBlbmQKKyAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIHNlbGYudW5p
cXVlKGNvbW1lbnQpCisgICAgbmV3TmFtZSA9ICJfI3tjb21tZW50fSIKKyAgICBpZiAkbGFiZWxN
YXBwaW5nW25ld05hbWVdCisgICAgICB3aGlsZSAkbGFiZWxNYXBwaW5nW25ld05hbWUgPSAiXyN7
QEB1bmlxdWVOYW1lQ291bnRlcn1fI3tjb21tZW50fSJdCisgICAgICAgIEBAdW5pcXVlTmFtZUNv
dW50ZXIgKz0gMQorICAgICAgZW5kCisgICAgZW5kCisgICAgZm9yTmFtZShuaWwsIG5ld05hbWUp
CisgIGVuZAorICAKKyAgZGVmIGNsZWFuTmFtZQorICAgIGlmIG5hbWUgPX4gL15cLi8KKyAgICAg
ICJfIiArIG5hbWVbMS4uLTFdCisgICAgZWxzZQorICAgICAgbmFtZQorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJl
bFJlZmVyZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsYWJl
bCA9IGxhYmVsCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0KKyAgZW5k
CisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdp
biwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1l
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVm
IGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgdHJ1ZQor
ICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlIDwgTm9DaGlsZHJlbgorICBh
dHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVs
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAor
ICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJl
bgorICAgIExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwp
KQorICBlbmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIHRydWUKKyAgZW5kCitlbmQKKworY2xh
c3MgU2VxdWVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsaXN0CisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCBsaXN0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxpc3Qg
PSBsaXN0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgbGlzdAorICBlbmQKKyAgCisg
IGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgQGxp
c3QubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxpc3QuY29sbGVjdHt8
dnwgdi5kdW1wfS5qb2luKCJcbiIpCisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUgPCBOb0NoaWxk
cmVuCisgIGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5z
dGFuY2UgPSBUcnVlLm5ldworICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGluc3RhbmNl
CisgIGVuZAorICAKKyAgZGVmIHZhbHVlCisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgInRydWUiCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlIDwgTm9DaGlsZHJlbgorICBk
ZWYgaW5pdGlhbGl6ZQorICAgIHN1cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNlID0g
RmFsc2UubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5k
CisgIAorICBkZWYgdmFsdWUKKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
ImZhbHNlIgorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAg
IFRydWUuaW5zdGFuY2UKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2VDbGFzcworICBkZWYgYXNO
b2RlCisgICAgRmFsc2UuaW5zdGFuY2UKKyAgZW5kCitlbmQKKworY2xhc3MgU2V0dGluZyA8IE5v
Q2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAg
ZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tu
YW1lXSA9IFNldHRpbmcubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBw
aW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisK
K2NsYXNzIEFuZCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbgorICAgIEFuZC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdo
dCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBhbmQgI3tyaWdo
dC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE9yIDwgTm9kZQorICBhdHRyX3JlYWRlciA6
bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdo
dCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9
IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgT3IubmV3KGNvZGVPcmlnaW4sICh5aWVs
ZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigj
e2xlZnQuZHVtcH0gb3IgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE5vdCA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisg
IGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAK
KyAgZGVmIG1hcENoaWxkcmVuCisgICAgTm90Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxk
KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIobm90ICN7Y2hpbGQuZHVtcH0pIgorICBl
bmQKK2VuZAorCitjbGFzcyBTa2lwIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiXHRza2lwIgorICBlbmQKK2VuZAorCitjbGFzcyBJZlRoZW5FbHNlIDwgTm9kZQorICBhdHRy
X3JlYWRlciA6cHJlZGljYXRlLCA6dGhlbkNhc2UKKyAgYXR0cl9hY2Nlc3NvciA6ZWxzZUNhc2UK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgdGhlbkNhc2UpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAcHJlZGljYXRlID0gcHJlZGljYXRlCisgICAgQHRo
ZW5DYXNlID0gdGhlbkNhc2UKKyAgICBAZWxzZUNhc2UgPSBTa2lwLm5ldyhjb2RlT3JpZ2luKQor
ICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIGlmIEBlbHNlQ2FzZQorICAgICAgW0BwcmVk
aWNhdGUsIEB0aGVuQ2FzZSwgQGVsc2VDYXNlXQorICAgIGVsc2UKKyAgICAgIFtAcHJlZGljYXRl
LCBAdGhlbkNhc2VdCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAg
SWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBwcmVkaWNhdGUpLCAoeWllbGQgQHRo
ZW5DYXNlKSwgKHlpZWxkIEBlbHNlQ2FzZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
aWYgI3twcmVkaWNhdGUuZHVtcH1cbiIgKyB0aGVuQ2FzZS5kdW1wICsgIlxuZWxzZVxuIiArIGVs
c2VDYXNlLmR1bXAgKyAiXG5lbmQiCisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvIDwgTm9kZQor
ICBhdHRyX3JlYWRlciA6bmFtZSwgOnZhcmlhYmxlcywgOmJvZHkKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBuYW1lID0gbmFtZQorICAgIEB2YXJpYWJsZXMgPSB2YXJpYWJsZXMKKyAgICBA
Ym9keSA9IGJvZHkKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAdmFyaWFibGVzICsg
W0Bib2R5XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE1hY3JvLm5ldyhjb2Rl
T3JpZ2luLCBAbmFtZSwgQHZhcmlhYmxlcy5tYXB7fHZ8IHlpZWxkIHZ9LCAoeWllbGQgQGJvZHkp
KQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIm1hY3JvICN7bmFtZX0oIiArIHZhcmlhYmxl
cy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKVxuIiArIGJvZHkuZHVtcCArICJc
bmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm9DYWxsIDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6bmFtZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1l
LCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAg
IEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgICAgcmFpc2UgdW5sZXNzIEBvcGVyYW5kcworICAgIEBv
cGVyYW5kcy5lYWNoe3x2fCByYWlzZSB1bmxlc3Mgdn0KKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBAb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisg
ICAgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykp
CisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHQje25hbWV9KCIgKyBvcGVyYW5kcy5jb2xs
ZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKSIKKyAgZW5kCitlbmQKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw4NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAieDg2IgorCitCQUNLRU5EUyA9CisgIFsKKyAg
ICJYODYiLAorICAgIkFSTXY3IgorICBdCisKK1dPUktJTkdfQkFDS0VORFMgPQorICBbCisgICAi
WDg2IgorICBdCisKK0JBQ0tFTkRfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgnICsgQkFDS0VO
RFMuam9pbignKXwoJykgKyAnKVxcWicpCisKK2NsYXNzIE5vZGUKKyAgZGVmIGxvd2VyKG5hbWUp
CisgICAgc2VuZCgibG93ZXIiICsgbmFtZSkKKyAgZW5kCitlbmQKKworIyBPdmVycmlkZXMgZm9y
IGxvd2VyKCkgZm9yIHRob3NlIG5vZGVzIHRoYXQgYXJlIGJhY2tlbmQtYWdub3N0aWMKKworY2xh
c3MgTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzTGFiZWwoc2VsZi5uYW1l
WzEuLi0xXSkKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbAorICBkZWYgbG93ZXIobmFt
ZSkKKyAgICAkYXNtLnB1dHNMb2NhbExhYmVsICJfb2ZmbGluZWFzbV8je3NlbGYubmFtZVsxLi4t
MV19IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZQorICBkZWYgYXNtTGFiZWwK
KyAgICBBc3NlbWJsZXIubGFiZWxSZWZlcmVuY2UobmFtZVsxLi4tMV0pCisgIGVuZAorZW5kCisK
K2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UKKyAgZGVmIGFzbUxhYmVsCisgICAgQXNzZW1ibGVy
LmxvY2FsTGFiZWxSZWZlcmVuY2UoIl9vZmZsaW5lYXNtXyIrbmFtZVsxLi4tMV0pCisgIGVuZAor
ZW5kCisKK2NsYXNzIFNraXAKKyAgZGVmIGxvd2VyKG5hbWUpCisgIGVuZAorZW5kCisKK2NsYXNz
IFNlcXVlbmNlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBu
b2RlIHwKKyAgICAgIG5vZGUubG93ZXIobmFtZSkKKyAgICB9CisgIGVuZAorZW5kCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0
b3IucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2Vu
ZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODggQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQor
CityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAib2Zm
c2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNlbGZfaGFzaCIKK3JlcXVpcmUgInNl
dHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitpbnB1dEZsbm0gPSBBUkdWLnNoaWZ0Citv
dXRwdXRGbG5tID0gQVJHVi5zaGlmdAorCitkZWYgZW1pdE1hZ2ljTnVtYmVyCisgIE9GRlNFVF9N
QUdJQ19OVU1CRVJTLmVhY2ggeworICAgIHwgbnVtYmVyIHwKKyAgICAkb3V0cHV0LnB1dHMgIiN7
bnVtYmVyfSwiCisgIH0KK2VuZAorCitpbnB1dERhdGEgPSBJTzo6cmVhZChpbnB1dEZsbm0pCitp
bnB1dEhhc2ggPSAiLy8gb2ZmbGluZWFzbSBpbnB1dCBoYXNoOiAje0RpZ2VzdDo6U0hBMS5oZXhk
aWdlc3QoaW5wdXREYXRhKX0gI3tzZWxmSGFzaH0iCisKK2lmIEZpbGVUZXN0LmV4aXN0PyBvdXRw
dXRGbG5tCisgIEZpbGUub3BlbihvdXRwdXRGbG5tLCAiciIpIHsKKyAgICB8IGlucCB8CisgICAg
Zmlyc3RMaW5lID0gaW5wLmdldHMKKyAgICBpZiBmaXJzdExpbmUgYW5kIGZpcnN0TGluZS5jaG9t
cCA9PSBpbnB1dEhhc2gKKyAgICAgICRzdGRlcnIucHV0cyAiTm90aGluZyBjaGFuZ2VkLiIKKyAg
ICAgIGV4aXQgMAorICAgIGVuZAorICB9CitlbmQKKworb3JpZ2luYWxBU1QgPSBwYXJzZShsZXgo
aW5wdXREYXRhKSkKKworRmlsZS5vcGVuKG91dHB1dEZsbm0sICJ3IikgeworICB8IG91dHAgfAor
ICAkb3V0cHV0ID0gb3V0cAorICBvdXRwLnB1dHMgaW5wdXRIYXNoCisgIGVtaXRDb2RlSW5BbGxD
b25maWd1cmF0aW9ucyhvcmlnaW5hbEFTVCkgeworICAgIHwgc2V0dGluZ3MsIGFzdCwgYmFja2Vu
ZCwgaW5kZXggfAorICAgIG9mZnNldHNMaXN0ID0gYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVu
aXEuc29ydAorICAgIHNpemVzTGlzdCA9IGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKKyAg
ICAKKyAgICBsZW5ndGggPSAoT0ZGU0VUX01BR0lDX05VTUJFUlMuc2l6ZSArIDEpICogKDEgKyBv
ZmZzZXRzTGlzdC5zaXplICsgc2l6ZXNMaXN0LnNpemUpCisgICAgCisgICAgb3V0cC5wdXRzICJz
dGF0aWMgY29uc3QgdW5zaWduZWQgZXh0cmFjdG9yVGFibGVbI3tsZW5ndGh9XSA9IHsiCisgICAg
ZW1pdE1hZ2ljTnVtYmVyCisgICAgb3V0cC5wdXRzICIje2luZGV4fSwiCisgICAgb2Zmc2V0c0xp
c3QuZWFjaCB7CisgICAgICB8IG9mZnNldCB8CisgICAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICAg
IG91dHAucHV0cyAiT0ZGTElORV9BU01fT0ZGU0VUT0YoI3tvZmZzZXQuc3RydWN0fSwgI3tvZmZz
ZXQuZmllbGR9KSwiCisgICAgfQorICAgIHNpemVzTGlzdC5lYWNoIHsKKyAgICAgIHwgb2Zmc2V0
IHwKKyAgICAgIGVtaXRNYWdpY051bWJlcgorICAgICAgb3V0cC5wdXRzICJzaXplb2YoI3tvZmZz
ZXQuc3RydWN0fSksIgorICAgIH0KKyAgICBvdXRwLnB1dHMgIn07IgorICB9Cit9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rp
b25zLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwNyBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworIyBJbnRlcmVzdGluZyBpbnZhcmlhbnQsIHdoaWNoIHdlIHRh
a2UgYWR2YW50YWdlIG9mOiBicmFuY2hpbmcgaW5zdHJ1Y3Rpb25zCisjIGFsd2F5cyBiZWdpbiB3
aXRoICJiIiwgYW5kIG5vIG5vbi1icmFuY2hpbmcgaW5zdHJ1Y3Rpb25zIGJlZ2luIHdpdGggImIi
LgorIyBUZXJtaW5hbCBpbnN0cnVjdGlvbnMgYXJlICJqbXAiIGFuZCAicmV0Ii4KKworTUFDUk9f
SU5TVFJVQ1RJT05TID0KKyAgWworICAgImFkZGkiLAorICAgImFuZGkiLAorICAgImxzaGlmdGki
LAorICAgIm11bGkiLAorICAgIm5lZ2kiLAorICAgIm5vdGkiLAorICAgIm9yaSIsCisgICAicnNo
aWZ0aSIsCisgICAidXJzaGlmdGkiLAorICAgInN1YmkiLAorICAgInhvcmkiLAorICAgImxvYWRp
IiwKKyAgICJsb2FkYiIsCisgICAibG9hZGJzIiwKKyAgICJsb2FkaCIsCisgICAibG9hZGhzIiwK
KyAgICJzdG9yZWkiLAorICAgInN0b3JlYiIsCisgICAibG9hZGQiLAorICAgIm1vdmVkIiwKKyAg
ICJzdG9yZWQiLAorICAgImFkZGQiLAorICAgImRpdmQiLAorICAgInN1YmQiLAorICAgIm11bGQi
LAorICAgInNxcnRkIiwKKyAgICJjaTJkIiwKKyAgICJmaWkyZCIsICMgdXNhZ2U6IGZpaTJkIDxn
cHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNh
bnQgYml0cz4sIDxmcHI+CisgICAiZmQyaWkiLCAjIHVzYWdlOiBmZDJpaSA8ZnByPiwgPGdwciB3
aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBi
aXRzPgorICAgImJkZXEiLAorICAgImJkbmVxIiwKKyAgICJiZGd0IiwKKyAgICJiZGd0ZXEiLAor
ICAgImJkbHQiLAorICAgImJkbHRlcSIsCisgICAiYmRlcXVuIiwKKyAgICJiZG5lcXVuIiwKKyAg
ICJiZGd0dW4iLAorICAgImJkZ3RlcXVuIiwKKyAgICJiZGx0dW4iLAorICAgImJkbHRlcXVuIiwK
KyAgICJidGQyaSIsCisgICAidGQyaSIsCisgICAiYmNkMmkiLAorICAgIm1vdmR6IiwKKyAgICJw
b3AiLAorICAgInB1c2giLAorICAgIm1vdmUiLAorICAgInN4aTJwIiwKKyAgICJ6eGkycCIsCisg
ICAibm9wIiwKKyAgICJiaWVxIiwKKyAgICJiaW5lcSIsCisgICAiYmlhIiwKKyAgICJiaWFlcSIs
CisgICAiYmliIiwKKyAgICJiaWJlcSIsCisgICAiYmlndCIsCisgICAiYmlndGVxIiwKKyAgICJi
aWx0IiwKKyAgICJiaWx0ZXEiLAorICAgImJiZXEiLAorICAgImJibmVxIiwKKyAgICJiYmEiLAor
ICAgImJiYWVxIiwKKyAgICJiYmIiLAorICAgImJiYmVxIiwKKyAgICJiYmd0IiwKKyAgICJiYmd0
ZXEiLAorICAgImJibHQiLAorICAgImJibHRlcSIsCisgICAiYnRpbyIsCisgICAiYnRpcyIsCisg
ICAiYnRpeiIsCisgICAiYnRpbnoiLAorICAgImJ0Ym8iLAorICAgImJ0YnMiLAorICAgImJ0Ynoi
LAorICAgImJ0Ym56IiwKKyAgICJqbXAiLAorICAgImJhZGRpbyIsCisgICAiYmFkZGlzIiwKKyAg
ICJiYWRkaXoiLAorICAgImJhZGRpbnoiLAorICAgImJzdWJpbyIsCisgICAiYnN1YmlzIiwKKyAg
ICJic3ViaXoiLAorICAgImJzdWJpbnoiLAorICAgImJtdWxpbyIsCisgICAiYm11bGlzIiwKKyAg
ICJibXVsaXoiLAorICAgImJtdWxpbnoiLAorICAgImJvcmlvIiwKKyAgICJib3JpcyIsCisgICAi
Ym9yaXoiLAorICAgImJvcmlueiIsCisgICAiYnJlYWsiLAorICAgImNhbGwiLAorICAgInJldCIs
CisgICAiY2llcSIsCisgICAiY2luZXEiLAorICAgImNpYSIsCisgICAiY2lhZXEiLAorICAgImNp
YiIsCisgICAiY2liZXEiLAorICAgImNpZ3QiLAorICAgImNpZ3RlcSIsCisgICAiY2lsdCIsCisg
ICAiY2lsdGVxIiwKKyAgICJ0aW8iLAorICAgInRpcyIsCisgICAidGl6IiwKKyAgICJ0aW56IiwK
KyAgICJ0Ym8iLAorICAgInRicyIsCisgICAidGJ6IiwKKyAgICJ0Ym56IiwKKyAgICJwZWVrIiwK
KyAgICJwb2tlIiwKKyAgICJicGVxIiwKKyAgICJicG5lcSIsCisgICAiYnBhIiwKKyAgICJicGFl
cSIsCisgICAiYnBiIiwKKyAgICJicGJlcSIsCisgICAiYnBndCIsCisgICAiYnBndGVxIiwKKyAg
ICJicGx0IiwKKyAgICJicGx0ZXEiLAorICAgImFkZHAiLAorICAgImFuZHAiLAorICAgIm9ycCIs
CisgICAic3VicCIsCisgICAieG9ycCIsCisgICAibG9hZHAiLAorICAgImNwZXEiLAorICAgImNw
bmVxIiwKKyAgICJjcGEiLAorICAgImNwYWVxIiwKKyAgICJjcGIiLAorICAgImNwYmVxIiwKKyAg
ICJjcGd0IiwKKyAgICJjcGd0ZXEiLAorICAgImNwbHQiLAorICAgImNwbHRlcSIsCisgICAic3Rv
cmVwIiwKKyAgICJidHBvIiwKKyAgICJidHBzIiwKKyAgICJidHB6IiwKKyAgICJidHBueiIsCisg
ICAiYmFkZHBvIiwKKyAgICJiYWRkcHMiLAorICAgImJhZGRweiIsCisgICAiYmFkZHBueiIsCisg
ICAiYm8iLAorICAgImJzIiwKKyAgICJieiIsCisgICAiYm56IgorICBdCisKK1g4Nl9JTlNUUlVD
VElPTlMgPQorICBbCisgICAiY2RxaSIsCisgICAiaWRpdmkiCisgIF0KKworSU5TVFJVQ1RJT05T
ID0gTUFDUk9fSU5TVFJVQ1RJT05TICsgWDg2X0lOU1RSVUNUSU9OUworCitJTlNUUlVDVElPTl9Q
QVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgSU5TVFJVQ1RJT05TLmpvaW4oJyl8KCcpICsg
JykpXFxaJykKKworZGVmIGlzQnJhbmNoKGluc3RydWN0aW9uKQorICBpbnN0cnVjdGlvbiA9fiAv
XmIvCitlbmQKKworZGVmIGhhc0ZhbGxUaHJvdWdoKGluc3RydWN0aW9uKQorICBpbnN0cnVjdGlv
biAhPSAicmV0IiBhbmQgaW5zdHJ1Y3Rpb24gIT0gImptcCIKK2VuZAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0
cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitN
QUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE1MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMiCisK
K09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworIwor
IyBvZmZzZXRzTGlzdChhc3QpCisjIHNpemVzTGlzdChhc3QpCisjCisjIFJldHVybnMgYSBsaXN0
IG9mIG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhlIEFTVC4KKyMKKworZGVmIG9mZnNldHNM
aXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorZW5kCisKK2Rl
ZiBzaXplc0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CitlbmQKKwor
IworIyBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGFzdCwgZmlsZSkgLT4KKyMgICAgIFtv
ZmZzZXRzLCBpbmRleF0KKyMKKyMgUGFyc2VzIHRoZSBvZmZzZXRzIGZyb20gYSBmaWxlIGFuZCBy
ZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCB0aGUKKyMgaW5kZXggb2YgdGhlIGNvbmZpZ3Vy
YXRpb24gdGhhdCBpcyB2YWxpZCBpbiB0aGlzIGJ1aWxkIHRhcmdldC4KKyMKKworZGVmIG9mZnNl
dHNBbmRDb25maWd1cmF0aW9uSW5kZXgoZmlsZSkKKyAgaW5kZXggPSBuaWwKKyAgb2Zmc2V0cyA9
IFtdCisgIGVuZGlhbm5lc3NNYXJrZXJCeXRlcyA9IG5pbAorICAKKyAgZGVmIHJlYWRJbnQoZW5k
aWFubmVzcywgaW5wKQorICAgIGJ5dGVzID0gW10KKyAgICA0LnRpbWVzIHsKKyAgICAgIGJ5dGVz
IDw8IGlucC5nZXRieXRlCisgICAgfQorICAgIAorICAgIGlmIGVuZGlhbm5lc3MgPT0gOmxpdHRs
ZQorICAgICAgIyBMaXR0bGUgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMCB8CisgICAgICAg
Ynl0ZXNbMV0gPDwgOCB8CisgICAgICAgYnl0ZXNbMl0gPDwgMTYgfAorICAgICAgIGJ5dGVzWzNd
IDw8IDI0KQorICAgIGVsc2UKKyAgICAgICMgQmlnIGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8
IDI0IHwKKyAgICAgICBieXRlc1sxXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbMl0gPDwgOCB8Cisg
ICAgICAgYnl0ZXNbM10gPDwgMCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBbOmxpdHRsZSwgOmJp
Z10uZWFjaCB7CisgICAgfCBlbmRpYW5uZXNzIHwKKyAgICBtYWdpY0J5dGVzID0gW10KKyAgICBN
QUdJQ19OVU1CRVJTLmVhY2ggeworICAgICAgfCBudW1iZXIgfAorICAgICAgY3VycmVudEJ5dGVz
ID0gW10KKyAgICAgIDQudGltZXMgeworICAgICAgICBjdXJyZW50Qnl0ZXMgPDwgKG51bWJlciAm
IDB4ZmYpCisgICAgICAgIG51bWJlciA+Pj0gOAorICAgICAgfQorICAgICAgaWYgZW5kaWFubmVz
cyA9PSA6YmlnCisgICAgICAgIGN1cnJlbnRCeXRlcy5yZXZlcnNlIQorICAgICAgZW5kCisgICAg
ICBtYWdpY0J5dGVzICs9IGN1cnJlbnRCeXRlcworICAgIH0KKyAgICAKKyAgICBGaWxlLm9wZW4o
ZmlsZSwgInIiKSB7CisgICAgICB8IGlucCB8CisgICAgICB3aGVyZUluTWFya2VyID0gMAorICAg
ICAgbG9vcCB7CisgICAgICAgIGJ5dGUgPSBpbnAuZ2V0Ynl0ZQorICAgICAgICBicmVhayB1bmxl
c3MgYnl0ZQorICAgICAgICBpZiBieXRlID09IG1hZ2ljQnl0ZXNbd2hlcmVJbk1hcmtlcl0KKyAg
ICAgICAgICB3aGVyZUluTWFya2VyICs9IDEKKyAgICAgICAgICBpZiB3aGVyZUluTWFya2VyID09
IG1hZ2ljQnl0ZXMuc2l6ZQorICAgICAgICAgICAgIyBXZSBoYXZlIGEgbWF0Y2ghIElmIHdlIGhh
dmUgbm90IHlldCByZWFkIHRoZSBlbmRpYW5uZXNzIG1hcmtlciBhbmQgaW5kZXgsCisgICAgICAg
ICAgICAjIHRoZW4gcmVhZCB0aG9zZSBub3c7IG90aGVyd2lzZSByZWFkIGFuIG9mZnNldC4KKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgbm90IGluZGV4CisgICAgICAgICAgICAgIGluZGV4
ID0gcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgIG9mZnNldHMgPDwgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbmQK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgICBl
bmQKKyAgICAgICAgZWxzZQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICAgIGVu
ZAorICAgICAgfQorICAgIH0KKyAgICAKKyAgICBicmVhayBpZiBpbmRleAorICB9CisgIAorICBy
YWlzZSB1bmxlc3MgaW5kZXgKKyAgCisgIFtvZmZzZXRzLCBpbmRleF0KK2VuZAorCisjCisjIGJ1
aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAtPiBbb2Zmc2V0cywgc2l6ZXNdCisjCisj
IEJ1aWxkcyBhIG1hcHBpbmcgYmV0d2VlbiBTdHJ1Y3RPZmZzZXQgbm9kZXMgYW5kIHRoZWlyIHZh
bHVlcy4KKyMKKworZGVmIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KQorICBvZmZz
ZXRzTWFwID0ge30KKyAgc2l6ZXNNYXAgPSB7fQorICBhc3RPZmZzZXRzTGlzdCA9IG9mZnNldHNM
aXN0KGFzdCkKKyAgYXN0U2l6ZXNMaXN0ID0gc2l6ZXNMaXN0KGFzdCkKKyAgcmFpc2UgdW5sZXNz
IGFzdE9mZnNldHNMaXN0LnNpemUgKyBhc3RTaXplc0xpc3Quc2l6ZSA9PSBvZmZzZXRzTGlzdC5z
aXplCisgIG9mZnNldHNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHN0cnVjdE9m
ZnNldCwgaW5kZXggfAorICAgIG9mZnNldHNNYXBbc3RydWN0T2Zmc2V0XSA9IG9mZnNldHNMaXN0
LnNoaWZ0CisgIH0KKyAgc2l6ZXNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHNp
emVvZiwgaW5kZXggfAorICAgIHNpemVzTWFwW3NpemVvZl0gPSBvZmZzZXRzTGlzdC5zaGlmdAor
ICB9CisgIFtvZmZzZXRzTWFwLCBzaXplc01hcF0KK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9vcHQucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vb3B0LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vb3B0LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExOCBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorCisj
CisjICJPcHRpbWl6YXRpb24iIHBhc3Nlcy4gVGhlc2UgYXJlIHVzZWQgdG8gbG93ZXIgdGhlIHJl
cHJlc2VudGF0aW9uIGZvcgorIyBiYWNrZW5kcyB0aGF0IGNhbm5vdCBoYW5kbGUgc29tZSBvZiBv
dXIgaGlnaGVyLWxldmVsIGluc3RydWN0aW9ucy4KKyMKKworIworIyBBIHRlbXBvcmFyeSAtIGEg
dmFyaWFibGUgdGhhdCB3aWxsIGJlIGFsbG9jYXRlZCB0byBhIHJlZ2lzdGVyIGFmdGVyIHdlJ3Jl
CisjIGRvbmUuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlcGxhY2VUZW1wb3Jhcmllc1dpdGhS
ZWdpc3RlcnMoa2luZCkKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IG5vZGUgfAorICAgICAg
bm9kZS5yZXBsYWNlVGVtcG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgfQorICBlbmQK
K2VuZAorCitjbGFzcyBUbXAgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpmaXJzdE1lbnRp
b24sIDpsYXN0TWVudGlvbgorICBhdHRyX3JlYWRlciA6a2luZAorICBhdHRyX2FjY2Vzc29yIDpy
ZWdpc3RlcgorCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGtpbmQpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAa2luZCA9IGtpbmQKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICIkdG1wI3tvYmplY3RfaWR9IgorICBlbmQKKyAgCisgIGRlZiBtZW50aW9uIShwb3NpdGlvbikK
KyAgICBpZiBub3QgQGZpcnN0TWVudGlvbiBvciBwb3NpdGlvbiA8IEBmaXJzdE1lbnRpb24KKyAg
ICAgIEBmaXJzdE1lbnRpb24gPSBwb3NpdGlvbgorICAgIGVuZAorICAgIGlmIG5vdCBAbGFzdE1l
bnRpb24gb3IgcG9zaXRpb24gPiBAbGFzdE1lbnRpb24KKyAgICAgIEBsYXN0TWVudGlvbiA9IHBv
c2l0aW9uCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHJlcGxhY2VUZW1wb3Jhcmllc1dpdGhS
ZWdpc3RlcnMoa2luZCkKKyAgICBpZiBAa2luZCA9PSBraW5kCisgICAgICByYWlzZSAiRGlkIG5v
dCBhbGxvY2F0ZSByZWdpc3RlciB0byB0ZW1wb3JhcnkgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIg
dW5sZXNzIEByZWdpc3RlcgorICAgICAgQHJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgc2VsZgor
ICAgIGVuZAorICBlbmQKK2VuZAorCisjIEFzc2lnbiByZWdpc3RlcnMgdG8gdGVtcG9yYXJpZXMs
IGJ5IGZpbmRpbmcgd2hpY2ggdGVtcG9yYXJpZXMgaW50ZXJmZXJlCisjIHdpdGggZWFjaCBvdGhl
ci4gTm90ZSB0aGF0IHRoaXMgcmVsaWVzIG9uIHRlbXBvcmFyeSBsaXZlIHJhbmdlcyBub3QgY3Jv
c3NpbmcKKyMgYmFzaWMgYmxvY2sgYm91bmRhcmllcy4KKworZGVmIGFzc2lnblJlZ2lzdGVyc1Rv
VGVtcG9yYXJpZXMobGlzdCwga2luZCwgcmVnaXN0ZXJzKQorICBsaXN0LmVhY2hfd2l0aF9pbmRl
eCB7CisgICAgfCBub2RlLCBpbmRleCB8CisgICAgbm9kZS5maWx0ZXIoVG1wKS51bmlxLmVhY2gg
eworICAgICAgfCB0bXAgfAorICAgICAgaWYgdG1wLmtpbmQgPT0ga2luZAorICAgICAgICB0bXAu
bWVudGlvbiEgaW5kZXgKKyAgICAgIGVuZAorICAgIH0KKyAgfQorICAKKyAgZnJlZVJlZ2lzdGVy
cyA9IHJlZ2lzdGVycy5kdXAKKyAgbGlzdC5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgbm9kZSwg
aW5kZXggfAorICAgIHRtcExpc3QgPSBub2RlLmZpbHRlcihUbXApLnVuaXEKKyAgICB0bXBMaXN0
LmVhY2ggeworICAgICAgfCB0bXAgfAorICAgICAgaWYgdG1wLmtpbmQgPSBraW5kIGFuZCB0bXAu
Zmlyc3RNZW50aW9uID09IGluZGV4CisgICAgICAgIHJhaXNlICJDb3VsZCBub3QgYWxsb2NhdGUg
cmVnaXN0ZXIgdG8gdGVtcG9yYXJ5IGF0ICN7bm9kZS5jb2RlT3JnaW5TdHJpbmd9IiBpZiBmcmVl
UmVnaXN0ZXJzLmVtcHR5PworICAgICAgICB0bXAucmVnaXN0ZXIgPSBmcmVlUmVnaXN0ZXJzLnBv
cAorICAgICAgZW5kCisgICAgfQorICAgIHRtcExpc3QuZWFjaCB7CisgICAgICB8IHRtcCB8Cisg
ICAgICBpZiB0bXAua2luZCA9IGtpbmQgYW5kIHRtcC5sYXN0TWVudGlvbiA9PSBpbmRleAorICAg
ICAgICBmcmVlUmVnaXN0ZXJzLnB1c2ggdG1wLnJlZ2lzdGVyCisgICAgICAgIHJhaXNlICJSZWdp
c3RlciBhbGxvY2F0aW9uIGluY29uc2lzdGVuY3kgYXQgI3tub2RlLmNvZGVPcmlnaW5TdHJpbmd9
IiBpZiBmcmVlUmVnaXN0ZXJzLnNpemUgPiByZWdpc3RlcnMuc2l6ZQorICAgICAgZW5kCisgICAg
fQorICB9CisgIAorICBsaXN0Lm1hcCB7CisgICAgfCBub2RlIHwKKyAgICBub2RlLnJlcGxhY2VU
ZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkKKyAgfQorZW5kCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTg1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1
aXJlICJhc3QiCityZXF1aXJlICJpbnN0cnVjdGlvbnMiCityZXF1aXJlICJyZWdpc3RlcnMiCisK
K2NsYXNzIFRva2VuCisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luLCA6c3RyaW5nCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJpbmcpCisgICAgQGNvZGVPcmlnaW4gPSBjb2Rl
T3JpZ2luCisgICAgQHN0cmluZyA9IHN0cmluZworICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikK
KyAgICBpZiBvdGhlci5pc19hPyBUb2tlbgorICAgICAgQHN0cmluZyA9PSBvdGhlci5zdHJpbmcK
KyAgICBlbHNlCisgICAgICBAc3RyaW5nID09IG90aGVyCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmID1+KG90aGVyKQorICAgIEBzdHJpbmcgPX4gb3RoZXIKKyAgZW5kCisgIAorICBkZWYgdG9f
cworICAgICIje0BzdHJpbmcuaW5zcGVjdH0gYXQgbGluZSAje2NvZGVPcmlnaW59IgorICBlbmQK
KyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIGNvbW1lbnQuZW1wdHk/Cisg
ICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc30iCisgICAgZWxzZQorICAgICAgcmFpc2Ug
IlBhcnNlIGVycm9yOiAje3RvX3N9OiAje2NvbW1lbnRbMF19IgorICAgIGVuZAorICBlbmQKK2Vu
ZAorCisjCisjIFRoZSBsZXhlci4gVGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYW4gYXJyYXkg
b2YgdG9rZW5zLgorIworCitkZWYgbGV4KHN0cikKKyAgcmVzdWx0ID0gW10KKyAgbGluZU51bWJl
ciA9IDEKKyAgd2hpbGUgbm90IHN0ci5lbXB0eT8KKyAgICBjYXNlIHN0cgorICAgIHdoZW4gL1xB
XCMoW15cbl0qKS8KKyAgICAgICMgY29tbWVudCwgaWdub3JlCisgICAgd2hlbiAvXEFcbi8KKyAg
ICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICBsaW5lTnVtYmVy
ICs9IDEKKyAgICB3aGVuIC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0
IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVwuKFthLXpBLVowLTlf
XSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVu
IC9cQV8oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1i
ZXIsICQmKQorICAgIHdoZW4gL1xBKFsgXHRdKykvCisgICAgICAjIHdoaXRlc3BhY2UsIGlnbm9y
ZQorICAgIHdoZW4gL1xBMHgoWzAtOWEtZkEtRl0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5u
ZXcobGluZU51bWJlciwgJCYuaGV4LnRvX3MpCisgICAgd2hlbiAvXEEwKFswLTddKykvCisgICAg
ICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLm9jdC50b19zKQorICAgIHdoZW4g
L1xBKFswLTldKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQor
ICAgIHdoZW4gL1xBOjovCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQm
KQorICAgIHdoZW4gL1xBWzosXChcKVxbXF09XCtcLSpdLworICAgICAgcmVzdWx0IDw8IFRva2Vu
Lm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICBlbHNlCisgICAgICByYWlzZSAiTGV4ZXIgZXJyb3Ig
YXQgbGluZSBudW1iZXIgI3tsaW5lTnVtYmVyfSwgdW5leHBlY3RlZCBzZXF1ZW5jZSAje3N0clsw
Li4yMF0uaW5zcGVjdH0iCisgICAgZW5kCisgICAgc3RyID0gJH4ucG9zdF9tYXRjaAorICBlbmQK
KyAgcmVzdWx0CitlbmQKKworIworIyBUb2tlbiBpZGVudGlmaWNhdGlvbi4KKyMKKworZGVmIGlz
UmVnaXN0ZXIodG9rZW4pCisgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4KK2VuZAorCitkZWYg
aXNJbnN0cnVjdGlvbih0b2tlbikKKyAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5k
CisKK2RlZiBpc0tleXdvcmQodG9rZW4pCisgIHRva2VuID1+IC9cQSgodHJ1ZSl8KGZhbHNlKXwo
aWYpfCh0aGVuKXwoZWxzZSl8KGVsc2lmKXwoZW5kKXwoYW5kKXwob3IpfChub3QpfChtYWNybyl8
KGNvbnN0KXwoc2l6ZW9mKXwoZXJyb3IpKVxaLyBvcgorICAgIHRva2VuID1+IFJFR0lTVEVSX1BB
VFRFUk4gb3IKKyAgICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlz
SWRlbnRpZmllcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKilc
Wi8gYW5kIG5vdCBpc0tleXdvcmQodG9rZW4pCitlbmQKKworZGVmIGlzTGFiZWwodG9rZW4pCisg
IHRva2VuID1+IC9cQV8oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNMb2NhbExhYmVs
KHRva2VuKQorICB0b2tlbiA9fiAvXEFcLihbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBp
c1ZhcmlhYmxlKHRva2VuKQorICBpc0lkZW50aWZpZXIodG9rZW4pIG9yIGlzUmVnaXN0ZXIodG9r
ZW4pCitlbmQKKworZGVmIGlzSW50ZWdlcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBWzAtOV0vCitl
bmQKKworIworIyBUaGUgcGFyc2VyLiBUYWtlcyBhbiBhcnJheSBvZiB0b2tlbnMgYW5kIHJldHVy
bnMgYW4gQVNULiBNZXRob2RzCisjIG90aGVyIHRoYW4gcGFyc2UodG9rZW5zKSBhcmUgbm90IGZv
ciBwdWJsaWMgY29uc3VtcHRpb24uCisjCisKK2NsYXNzIFBhcnNlcgorICBkZWYgaW5pdGlhbGl6
ZSh0b2tlbnMpCisgICAgQHRva2VucyA9IHRva2VucworICAgIEBpZHggPSAwCisgIGVuZAorICAK
KyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgQHRva2Vuc1tAaWR4XQorICAgICAg
QHRva2Vuc1tAaWR4XS5wYXJzZUVycm9yKCpjb21tZW50KQorICAgIGVsc2UKKyAgICAgIGlmIGNv
bW1lbnQuZW1wdHk/CisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZSIK
KyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlOiAj
e2NvbW1lbnRbMF19IgorICAgICAgZW5kCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGNvbnN1
bWUocmVnZXhwKQorICAgIGlmIHJlZ2V4cAorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vu
c1tAaWR4XSA9fiByZWdleHAKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAaWR4
ID09IEB0b2tlbnMubGVuZ3RoCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgIGVuZAorICAKKyAg
ZGVmIHNraXBOZXdMaW5lCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICBA
aWR4ICs9IDEKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBdG9tCisg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibm90IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJz
ZVByZWRpY2F0ZUF0b20KKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlk
eCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGUK
KyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInRydWUiCisg
ICAgICByZXN1bHQgPSBUcnVlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3Vs
dAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImZhbHNlIgorICAgICAgcmVzdWx0ID0gRmFs
c2UuaW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJ
ZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IFNldHRpbmcuZm9yTmFtZShA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgQGlk
eCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5k
CisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQW5kCisgICAgcmVzdWx0ID0gcGFyc2VQ
cmVkaWNhdGVBdG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiYW5kIgorICAgICAgY29k
ZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAg
ICBza2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgIHJl
c3VsdCA9IEFuZC5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICBy
ZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGUKKyAgICAjIHNvbWUgZXhhbXBs
ZXMgb2YgcHJlY2VkZW5jZToKKyAgICAjIG5vdCBhIGFuZCBiIC0+IChub3QgYSkgYW5kIGIKKyAg
ICAjIGEgYW5kIGIgb3IgYyAtPiAoYSBhbmQgYikgb3IgYworICAgICMgYSBvciBiIGFuZCBjIC0+
IGEgb3IgKGIgYW5kIGMpCisgICAgCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAg
ICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJvciIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAg
ICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICAgIHJlc3VsdCA9IE9yLm5ldyhjb2Rl
T3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisg
IGRlZiBwYXJzZVZhcmlhYmxlCisgICAgaWYgaXNSZWdpc3RlcihAdG9rZW5zW0BpZHhdKQorICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9fiBGUFJfUEFUVEVSTgorICAgICAgICByZXN1bHQgPSBGUFJl
Z2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0u
c3RyaW5nKQorICAgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBSZWdpc3RlcklELmZvck5hbWUo
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVu
ZAorICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgcmVzdWx0ID0g
VmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0u
c3RyaW5nKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgICBAaWR4ICs9
IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VBZGRyZXNzKG9mZnNldCkKKyAg
ICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgIGNvZGVPcmlnaW4g
PSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAKKyAgICAjIFRocmVlIHBvc3NpYmlsaXRp
ZXM6CisgICAgIyBbXSAgICAgICAtPiBBYnNvbHV0ZUFkZHJlc3MKKyAgICAjIFthXSAgICAgIC0+
IEFkZHJlc3MKKyAgICAjIFthLGJdICAgIC0+IEJhc2VJbmRleCB3aXRoIHNjYWxlID0gMQorICAg
ICMgW2EsYixjXSAgLT4gQmFzZUluZGV4CisgICAgCisgICAgQGlkeCArPSAxCisgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmV0dXJuIEFic29sdXRl
QWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0KQorICAgIGVuZAorICAgIGEgPSBwYXJzZVZh
cmlhYmxlCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIHJlc3VsdCA9IEFkZHJl
c3MubmV3KGNvZGVPcmlnaW4sIGEsIG9mZnNldCkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9y
IHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgQGlkeCArPSAxCisgICAgICBiID0g
cGFyc2VWYXJpYWJsZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVz
dWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCAxLCBvZmZzZXQpCisgICAgICBl
bHNlCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBbIjEiLCAiMiIsICI0Iiwg
IjgiXS5tZW1iZXI/IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIGMgPSBAdG9rZW5zW0Bp
ZHhdLnN0cmluZy50b19pCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVu
bGVzcyBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3
KGNvZGVPcmlnaW4sIGEsIGIsIGMsIG9mZnNldCkKKyAgICAgIGVuZAorICAgIGVuZAorICAgIEBp
ZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUNvbG9uQ29sb24KKyAg
ICBza2lwTmV3TGluZQorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4K
KyAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgIG5h
bWVzID0gW0B0b2tlbnNbQGlkeF0uc3RyaW5nXQorICAgIEBpZHggKz0gMQorICAgIHdoaWxlIEB0
b2tlbnNbQGlkeF0gPT0gIjo6IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZUVycm9yIHVu
bGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgbmFtZXMgPDwgQHRva2Vuc1tA
aWR4XS5zdHJpbmcKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICAgIHJhaXNlIGlmIG5hbWVz
LmVtcHR5PworICAgIFtjb2RlT3JpZ2luLCBuYW1lc10KKyAgZW5kCisgIAorICBkZWYgcGFyc2VF
eHByZXNzaW9uQXRvbQorICAgIHNraXBOZXdMaW5lCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
LSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgTmVnSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHgg
LSAxXS5jb2RlT3JpZ2luLCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVz
c2lvbgorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAg
IEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJbnRlZ2VyIEB0b2tlbnNbQGlk
eF0KKyAgICAgIHJlc3VsdCA9IEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1
bHQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgY29kZU9yaWdp
biwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIGlmIG5hbWVzLnNpemUgPiAxCisgICAg
ICAgIFN0cnVjdE9mZnNldC5mb3JGaWVsZChjb2RlT3JpZ2luLCBuYW1lc1swLi4tMl0uam9pbign
OjonKSwgbmFtZXNbLTFdKQorICAgICAgZWxzZQorICAgICAgICBWYXJpYWJsZS5mb3JOYW1lKGNv
ZGVPcmlnaW4sIG5hbWVzWzBdKQorICAgICAgZW5kCisgICAgZWxzaWYgaXNSZWdpc3RlciBAdG9r
ZW5zW0BpZHhdCisgICAgICBwYXJzZVZhcmlhYmxlCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9
PSAic2l6ZW9mIgorICAgICAgQGlkeCArPSAxCisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBh
cnNlQ29sb25Db2xvbgorICAgICAgU2l6ZW9mLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXMuam9p
bignOjonKSkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIHBhcnNlRXhwcmVzc2lvbk11bAorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0g
cGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVz
dWx0ID0gTXVsSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVz
dWx0LCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAg
ICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIGNvdWxkQmVFeHBy
ZXNzaW9uCisgICAgQHRva2Vuc1tAaWR4XSA9PSAiLSIgb3IgQHRva2Vuc1tAaWR4XSA9PSAic2l6
ZW9mIiBvciBpc0ludGVnZXIoQHRva2Vuc1tAaWR4XSkgb3IgaXNWYXJpYWJsZShAdG9rZW5zW0Bp
ZHhdKSBvciBAdG9rZW5zW0BpZHhdID09ICIoIgorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJl
c3Npb24KKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbk11bAor
ICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisg
ICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
cmVzdWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwg
cmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICItIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gU3ViSW1tZWRpYXRlcy5u
ZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25N
dWwpCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBy
ZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1lbnQpCisgICAgaWYgY291
bGRCZUV4cHJlc3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIGlmIEB0
b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRkcmVzcyhleHByKQorICAgICAgZWxz
ZQorICAgICAgICBleHByCisgICAgICBlbmQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJb
IgorICAgICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luLCAwKSkKKyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9
IExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExhYmVsLmZvck5h
bWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAg
ICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzTG9jYWxMYWJlbCBAdG9rZW5z
W0BpZHhdCisgICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0
CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50KQorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb25zdW1l
KC9cQVwoXFovKQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAgbG9vcCB7CisgICAgICBza2lwTmV3
TGluZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAg
ICAgICAgdmFyaWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNr
aXBOZXdMaW5lCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAi
LCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJy
b3IKKyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IKKyAgICAgIGVu
ZAorICAgIH0KKyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAorICBkZWYgcGFyc2VTZXF1ZW5jZShm
aW5hbCwgY29tbWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4KKyAgICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAgICAgIGlmIChAaWR4ID09IEB0b2tl
bnMubGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBm
aW5hbCkKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgor
ICAgICAgICAjIGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1
bmxlc3MgaXNWYXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAgICAgIHZhcmlhYmxlID0gVmFyaWFi
bGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5n
KQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tA
aWR4XSA9PSAiPSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhbHVlID0gcGFyc2VPcGVy
YW5kKCJ3aGlsZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5uYW1lfSIpCisgICAgICAgIGxp
c3QgPDwgQ29uc3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2
YWx1ZSkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImVycm9yIgorICAgICAgICBsaXN0
IDw8IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4pCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAgICAgIGNvZGVPcmlnaW4g
PSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNr
aXBOZXdMaW5lCisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgIGNv
bnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAg
aWZUaGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VT
ZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRlIG9mIFwi
aWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBsaXN0IDw8IGlmVGhlbkVsc2UKKyAg
ICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisgICAgICAgICAgY29kZU9yaWdp
biA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAg
ICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgICAgc2tpcE5ld0xp
bmUKKyAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRp
Y2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUg
aW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICAgIGlmVGhlbkVs
c2UuZWxzZUNhc2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlmVGhlbkVsc2UgPSBlbHNlQ2FzZQor
ICAgICAgICBlbmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiZWxzZSIKKyAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gcGFyc2VTZXF1ZW5j
ZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNlIGZvciBcImlmICN7cHJlZGlj
YXRlLmR1bXB9XCIiKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAg
ICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiZW5kIgorICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3Jv
IgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwYXJzZUVycm9yIHVubGVz
cyBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlk
eF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1h
Y3JvVmFyaWFibGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndo
aWxlIGluc2lkZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAg
IGxpc3QgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAg
ICAgIGVsc2lmIGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2lu
ID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhd
LnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlk
eCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkK
KyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5kIGl0J3MgdGhlIGxhc3Qg
b25lLgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUs
IFtdKQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxu
IgorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLgorICAgICAgICAgIGxpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBJdCdzIGRlZmluaXRlbHkgYW4gaW5zdHJ1
Y3Rpb24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJhbmQuCisgICAgICAgICAgb3BlcmFu
ZHMgPSBbXQorICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxzZQorICAgICAgICAgIGxvb3Ag
eworICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2Yg
aW5zdHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4
ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQor
ICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uIGFuZCBvZiB0aGUgc2Vx
dWVuY2UuCisgICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSB0cnVlCisgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAg
ICAgICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgICAgICMgVGhl
IGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBwYXJzZUVycm9y
KCJFeHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFsfSBhZnRlciAje29wZXJhbmRz
Lmxhc3QuZHVtcH0iKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgfQorICAgICAgICAgIGxp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAg
ICAgIGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgZW5kCisg
ICAgICAgIGVuZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAg
ICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0g
QHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gIigiCisgICAgICAgICAgIyBNYWNybyBpbnZvY2F0aW9uLgorICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBza2lwTmV3TGlu
ZQorICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgICAgc2tp
cE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAg
ICAgICAgICAgICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQorICAgICAgICAgICAgICAgIGNvZGVP
cmlnaW5Jbm5lciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMK
KyAgICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBp
bnNpZGUgb2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1bWVudCB0byAje25hbWV9IikK
KyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBN
YWNyby5uZXcoY29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlhYmxlcywgYm9keSkKKyAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hp
bGUgaW5zaWRlIG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgIGVuZAor
ICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhd
ID09ICIpIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGJyZWFr
CisgICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZUVy
cm9yICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5zcGVjdH0gd2hpbGUgcGFy
c2luZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgfQorICAgICAgICAgIGVuZAorICAgICAgICAgIGxpc3QgPDwgTWFjcm9DYWxsLm5l
dyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBh
cnNlRXJyb3IgIkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFtZX0iCisgICAgICAgIGVuZAorICAg
ICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0Bp
ZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAg
ICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI6IgorICAgICAgICAjIEl0J3Mg
YSBsYWJlbC4KKyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAgICAgbGlzdCA8PCBMYWJl
bC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVsc2UKKyAgICAgICAgICBsaXN0
IDw8IExvY2FsTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbmQKKyAg
ICAgICAgQGlkeCArPSAxCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgIkV4cGVjdGlu
ZyB0ZXJtaW5hbCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAgICAgZW5kCisgICAgfQorICAgIFNl
cXVlbmNlLm5ldyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisgIGVuZAorZW5kCisKK2RlZiBwYXJz
ZSh0b2tlbnMpCisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9rZW5zKQorICBwYXJzZXIucGFyc2VT
ZXF1ZW5jZShuaWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3JlZ2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK0dQUlMgPQorICBbCisg
ICAidDAiLAorICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMiLAorICAgInQ0IiwKKyAgICJjZnIi
LAorICAgImEwIiwKKyAgICJhMSIsCisgICAicjAiLAorICAgInIxIiwKKyAgICJzcCIKKyAgXQor
CitGUFJTID0KKyAgWworICAgImZ0MCIsCisgICAiZnQxIiwKKyAgICJmdDIiLAorICAgImZ0MyIs
CisgICAiZnQ0IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisgICAiZmExIiwKKyAgICJmYTIiLAor
ICAgImZhMyIsCisgICAiZnIiCisgIF0KKworUkVHSVNURVJTID0gR1BSUyArIEZQUlMKKworR1BS
X1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJTLmpvaW4oJyl8KCcpICsgJykpXFxa
JykKK0ZQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgRlBSUy5qb2luKCcpfCgnKSAr
ICcpKVxcWicpCisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBSRUdJ
U1RFUlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vc2VsZl9oYXNoLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0OCBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgInBhdGhuYW1lIgor
CisjCisjIHNlbGZIYXNoIC0+IFNIQTEgaGV4ZGlnZXN0CisjCisjIFJldHVybnMgYSBoYXNoIG9m
IHRoZSBvZmZsaW5lYXNtIHNvdXJjZSBjb2RlLiBUaGlzIGFsbG93cyBkZXBlbmRlbmN5CisjIHRy
YWNraW5nIGZvciBub3QganVzdCBjaGFuZ2VzIGluIGlucHV0LCBidXQgYWxzbyBjaGFuZ2VzIGlu
IHRoZSBhc3NlbWJsZXIKKyMgaXRzZWxmLgorIworCitkZWYgc2VsZkhhc2gKKyAgY29udGVudHMg
PSAiIgorICBteVBhdGggPSBQYXRobmFtZS5uZXcoX19GSUxFX18pLmRpcm5hbWUKKyAgRGlyLmZv
cmVhY2gobXlQYXRoKSB7CisgICAgfCBlbnRyeSB8CisgICAgaWYgZW50cnkgPX4gL1wucmIkLwor
ICAgICAgY29udGVudHMgKz0gSU86OnJlYWQobXlQYXRoICsgZW50cnkpCisgICAgZW5kCisgIH0K
KyAgcmV0dXJuIERpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoY29udGVudHMpCitlbmQKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyMDUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFy
c2VyIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCisjCisjIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0
aW9ucyhhc3QpIC0+IHNldHRpbmdzQ29tYmlhdGlvbnMKKyMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkg
b2Ygc2V0dGluZ3MgbWFwcywgd2hlcmUgYSBzZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMKKyMgYSBj
b25maWd1cmF0aW9uIGZvciB0aGUgYXNzZW1ibHkgY29kZSBiZWluZyBnZW5lcmF0ZWQuIFRoZSBt
YXAKKyMgY29udGFpbnMga2V5IHZhbHVlIHBhaXJzIHdoZXJlIGtleXMgYXJlIHNldHRpbmdzIG5h
bWVzIChzdHJpbmdzKSBhbmQKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVhbnMgKHRydWUgZm9yIGVu
YWJsZWQsIGZhbHNlIGZvciBkaXNhYmxlZCkuCisjCisKK2RlZiBjb21wdXRlU2V0dGluZ3NDb21i
aW5hdGlvbnMoYXN0KQorICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IFtdCisgIAorICBkZWYgc2V0
dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBtYXBTb0ZhciwgcmVtYWluaW5n
KQorICAgIGlmIHJlbWFpbmluZy5lbXB0eT8KKyAgICAgIHNldHRpbmdzQ29tYmluYXRpb25zIDw8
IG1hcFNvRmFyCisgICAgICByZXR1cm4KKyAgICBlbmQKKyAgICAKKyAgICBuZXdNYXAgPSBtYXBT
b0Zhci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IHRydWUKKyAgICBzZXR0aW5nc0Nv
bWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkK
KyAgICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBd
XSA9IGZhbHNlCisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBu
ZXdNYXAsIHJlbWFpbmluZ1sxLi4tMV0pCisgIGVuZAorICAKKyAgc2V0dGluZ3NDb21iaW5hdG9y
KHNldHRpbmdzQ29tYmluYXRpb25zLCB7fSwgKGFzdC5maWx0ZXIoU2V0dGluZykudW5pcS5jb2xs
ZWN0e3x2fCB2Lm5hbWV9ICsgWyJYODYiLCAiQVJNdjciXSkudW5pcSkKKyAgCisgIHNldHRpbmdz
Q29tYmluYXRpb25zCitlbmQKKworIworIyBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBh
c3QpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfCAu
Li4gfQorIworIyBEZXRlcm1pbmVzIGlmIHRoZSBzZXR0aW5ncyBjb21iaW5hdGlvbiBpcyB2YWxp
ZCwgYW5kIGlmIHNvLCBjYWxscworIyB0aGUgYmxvY2sgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91
IG5lZWQgdG8gZ2VuZXJhdGUgY29kZS4KKyMKKworZGVmIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0
dGluZ3MsIGFzdCkKKyAgIyBDaGVjayB3aGljaCBhcmNoaXRlY3R1cmVzIHRoaXMgY29tYmluYXRv
ciBjbGFpbXMgdG8gc3VwcG9ydC4KKyAgbnVtQ2xhaW1lZEJhY2tlbmRzID0gMAorICBzZWxlY3Rl
ZEJhY2tlbmQgPSBuaWwKKyAgQkFDS0VORFMuZWFjaCB7CisgICAgfCBiYWNrZW5kIHwKKyAgICBp
c1N1cHBvcnRlZCA9IGNvbmNyZXRlU2V0dGluZ3NbYmFja2VuZF0KKyAgICByYWlzZSB1bmxlc3Mg
aXNTdXBwb3J0ZWQgIT0gbmlsCisgICAgbnVtQ2xhaW1lZEJhY2tlbmRzICs9IGlmIGlzU3VwcG9y
dGVkIHRoZW4gMSBlbHNlIDAgZW5kCisgICAgaWYgaXNTdXBwb3J0ZWQKKyAgICAgIHNlbGVjdGVk
QmFja2VuZCA9IGJhY2tlbmQKKyAgICBlbmQKKyAgfQorICAKKyAgcmV0dXJuIGlmIG51bUNsYWlt
ZWRCYWNrZW5kcyA+IDEKKyAgCisgICMgUmVzb2x2ZSB0aGUgQVNUIGRvd24gdG8gYSBsb3ctbGV2
ZWwgZm9ybSAobm8gbWFjcm9zIG9yIGNvbmRpdGlvbmFscykuCisgIGxvd0xldmVsQVNUID0gYXN0
LnJlc29sdmVTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzKQorICAKKyAgeWllbGQgY29uY3JldGVT
ZXR0aW5ncywgbG93TGV2ZWxBU1QsIHNlbGVjdGVkQmFja2VuZAorZW5kCisKKyMKKyMgZm9yRWFj
aFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5n
cywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9CisjCisjIGZvckVhY2hWYWxpZFNldHRpbmdz
Q29tYmluYXRpb24oYXN0LCBzZXR0aW5nc0NvbWJpbmF0aW9ucykgeworIyAgICAgfCBjb25jcmV0
ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0KKyMKKyMgRXhlY3V0ZXMgdGhl
IGdpdmVuIGJsb2NrIGZvciBlYWNoIHZhbGlkIHNldHRpbmdzIGNvbWJpbmF0aW9uIGluIHRoZQor
IyBzZXR0aW5ncyBtYXAuIFRoZSBhc3QgcGFzc2VkIGludG8gdGhlIGJsb2NrIGlzIHJlc29sdmVk
CisjIChhc3QucmVzb2x2ZSkgYWdhaW5zdCB0aGUgc2V0dGluZ3MuCisjCisjIFRoZSBmaXJzdCBm
b3JtIHdpbGwgY2FsbCBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSBmb3IgeW91Lgor
IworCitkZWYgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QsICpvcHRpb25hbFNl
dHRpbmdzQ29tYmluYXRpb25zKQorICByYWlzZSBpZiBvcHRpb25hbFNldHRpbmdzQ29tYmluYXRp
b25zLnNpemUgPiAxCisgIAorICBpZiBvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zLmVtcHR5
PworICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25z
KGFzdCkKKyAgZWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gb3B0aW9uYWxTZXR0aW5n
c0NvbWJpYXRpb25zWzBdCisgIGVuZAorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMuZWFjaF93
aXRoX2luZGV4IHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGluZGV4IHwKKyAgICBmb3JTZXR0
aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpIHsKKyAgICAgIHwgY29uY3JldGVTZXR0aW5nc18s
IGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxv
d0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgIH0KKyAgfQorZW5kCisKKyMKKyMgY3BwU2V0
dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisjCisjIFJldHVybnMgdGhlIEMrKyBjb2RlIHVz
ZWQgdG8gdGVzdCBpZiB3ZSBhcmUgaW4gYSBjb25maWd1cmF0aW9uIHRoYXQKKyMgY29ycmVzcG9u
ZHMgdG8gdGhlIGdpdmVuIGNvbmNyZXRlIHNldHRpbmdzLgorIworCitkZWYgY3BwU2V0dGluZ3NU
ZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICIjaWYgIiArIGNvbmNyZXRlU2V0dGluZ3MudG9fYS5j
b2xsZWN0eworICAgIHwgcGFpciB8CisgICAgKGlmIHBhaXJbMV0KKyAgICAgICAiIgorICAgICBl
bHNlCisgICAgICAgIiEiCisgICAgIGVuZCkgKyAiT0ZGTElORV9BU01fIiArIHBhaXJbMF0KKyAg
fS5qb2luKCIgJiYgIikKK2VuZAorCisjCisjIGlzQVNURXJyb25lb3VzKGFzdCkKKyMKKyMgVGVz
dHMgdG8gc2VlIGlmIHRoZSBBU1QgY2xhaW1zIHRoYXQgdGhlcmUgaXMgYW4gZXJyb3IgLSBpLmUu
IGlmIHRoZQorIyB1c2VyJ3MgY29kZSwgYWZ0ZXIgc2V0dGluZ3MgcmVzb2x1dGlvbiwgaGFzIEVy
cm9yIG5vZGVzLgorIworCitkZWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICBub3QgYXN0LmZpbHRl
cihFcnJvcikuZW1wdHk/CitlbmQKKworIworIyBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRl
U2V0dGluZ3MpCisjCisjIEVtaXRzIGEgY2hlY2sgdGhhdCBhc3NlcnRzIHRoYXQgd2UncmUgdXNp
bmcgdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24uCisjCisKK2RlZiBhc3NlcnRDb25maWd1cmF0aW9u
KGNvbmNyZXRlU2V0dGluZ3MpCisgICRvdXRwdXQucHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3Jl
dGVTZXR0aW5ncykKKyAgJG91dHB1dC5wdXRzICIjZWxzZSIKKyAgJG91dHB1dC5wdXRzICIjZXJy
b3IgXCJDb25maWd1cmF0aW9uIG1pc21hdGNoLlwiIgorICAkb3V0cHV0LnB1dHMgIiNlbmRpZiIK
K2VuZAorCisjCisjIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFz
dCwgYmFja2VuZCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQgfCAu
Li4gfQorIworIyBFbWl0cyBhbGwgcmVsZXZhbnQgZ3VhcmRzIHRvIHNlZSBpZiB0aGUgY29uZmln
dXJhdGlvbiBob2xkcyBhbmQKKyMgY2FsbHMgdGhlIGJsb2NrIGlmIHRoZSBjb25maWd1cmF0aW9u
IGlzIG5vdCBlcnJvbmVvdXMuCisjCisKK2RlZiBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25j
cmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpCisgICRvdXRwdXQucHV0cyBjcHBTZXR0aW5nc1Rl
c3QoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIGlmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAgICAk
b3V0cHV0LnB1dHMgIiNlcnJvciBcIkludmFsaWQgY29uZmlndXJhdGlvbi5cIiIKKyAgZWxzaWYg
bm90IFdPUktJTkdfQkFDS0VORFMuaW5jbHVkZT8gYmFja2VuZAorICAgICRvdXRwdXQucHV0cyAi
I2Vycm9yIFwiVGhpcyBiYWNrZW5kIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LlwiIgorICBlbHNlCisg
ICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kCisgIGVuZAorICAKKyAgJG91
dHB1dC5wdXRzICIjZW5kaWYiCitlbmQKKworIworIyBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlv
bnMoYXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXgg
fCAuLi4gfQorIworIyBFbWl0cyBndWFyZCBjb2RlcyBmb3IgYWxsIHZhbGlkIGNvbmZpZ3VyYXRp
b25zLCBhbmQgY2FsbHMgdGhlIGJsb2NrCisjIGZvciB0aG9zZSBjb25maWd1cmF0aW9ucyB0aGF0
IGFyZSB2YWxpZCBhbmQgbm90IGVycm9uZW91cy4KKyMKKworZGVmIGVtaXRDb2RlSW5BbGxDb25m
aWd1cmF0aW9ucyhhc3QpCisgIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7
CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXggfAor
ICAgICRvdXRwdXQucHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgICB5
aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICAk
b3V0cHV0LnB1dHMgIiNlbmRpZiIKKyAgfQorZW5kCisKKworCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM0MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
cmVxdWlyZSAiYXN0IgorCisjCisjIG5vZGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorIwor
IyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgSWZUaGVuRWxzZSBu
b2RlcyBieQorIyBzdWJzdGl0dXRpbmcgY29uY3JldGUgYm9vbGVhbiB2YWx1ZXMgZm9yIGVhY2gg
U2V0dGluZy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdz
KQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZQorICBk
ZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xh
c3MgRmFsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVu
ZAorZW5kCisKK2NsYXNzIFNldHRpbmcKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykK
KyAgICBzZXR0aW5nc1tAbmFtZV0uYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZAorICBk
ZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Mo
c2V0dGluZ3MpLnZhbHVlIGFuZCBAcmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1
ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE9yCisgIGRlZiByZXNvbHZlU2V0dGluZ3Mo
c2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgb3Ig
QHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2Vu
ZAorCitjbGFzcyBOb3QKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAobm90
IEBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitl
bmQKKworY2xhc3MgSWZUaGVuRWxzZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQor
ICAgIGlmIEBwcmVkaWNhdGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZQorICAgICAg
QHRoZW5DYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbHNlCisgICAgICBAZWxz
ZUNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVuZAorICBlbmQKK2VuZAorCitj
bGFzcyBTZXF1ZW5jZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG5ld0xp
c3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGl0ZW0gPSBp
dGVtLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgIGlmIGl0ZW0uaXNfYT8gU2VxdWVu
Y2UKKyAgICAgICAgbmV3TGlzdCArPSBpdGVtLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3
TGlzdCA8PCBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmln
aW4sIG5ld0xpc3QpCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5kZW1hY3JvaWZ5KG1hY3JvcykK
KyMgbm9kZS5zdWJzdGl0dXRlKG1hcHBpbmcpCisjCisjIGRlbWFjcm9pZnkoKSBjb25zdHJ1Y3Rz
IGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IE1hY3JvCisjIG5vZGVzLCB3aGlsZSBz
dWJzdGl0dXRlKCkgcmVwbGFjZXMgVmFyaWFibGUgbm9kZXMgd2l0aCB0aGUgZ2l2ZW4KKyMgbm9k
ZXMgaW4gdGhlIG1hcHBpbmcuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIGRlbWFjcm9pZnkobWFj
cm9zKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuZGVt
YWNyb2lmeShtYWNyb3MpCisgICAgfQorICBlbmQKKyAgCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBp
bmcpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5zdWJz
dGl0dXRlKG1hcHBpbmcpCisgICAgfQorICBlbmQKKyAgCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxz
KG1hcHBpbmcpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGls
ZC5zdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBN
YWNybworICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG15TWFwcGluZyA9IHt9CisgICAg
bWFwcGluZy5lYWNoX3BhaXIgeworICAgICAgfCBrZXksIHZhbHVlIHwKKyAgICAgIHVubGVzcyBA
dmFyaWFibGVzLmluY2x1ZGU/IGtleQorICAgICAgICBteU1hcHBpbmdba2V5XSA9IHZhbHVlCisg
ICAgICBlbmQKKyAgICB9CisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAg
ICBjaGlsZC5zdWJzdGl0dXRlKG15TWFwcGluZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNz
IFZhcmlhYmxlCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgaWYgbWFwcGluZ1tzZWxm
XQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAg
ZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBw
aW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNl
CisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRl
ZiBzdWJzdGl0dXRlKGNvbnN0YW50cykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBteUNvbnN0YW50
cyA9IGNvbnN0YW50cy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAg
ICBpZiBpdGVtLmlzX2E/IENvbnN0RGVjbAorICAgICAgICBteUNvbnN0YW50c1tpdGVtLnZhcmlh
YmxlXSA9IGl0ZW0udmFsdWUuc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgIGVsc2UKKyAg
ICAgICAgbmV3TGlzdCA8PCBpdGVtLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICBlbmQK
KyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisgIGVuZAorICAK
KyAgZGVmIHJlbmFtZUxhYmVscyhjb21tZW50KQorICAgIG1hcHBpbmcgPSB7fQorICAgIAorICAg
IEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gTG9jYWxM
YWJlbAorICAgICAgICBtYXBwaW5nW2l0ZW1dID0gTG9jYWxMYWJlbC51bmlxdWUoaWYgY29tbWVu
dCB0aGVuIGNvbW1lbnQgKyAiXyIgZWxzZSAiIiBlbmQgKyBpdGVtLmNsZWFuTmFtZSkKKyAgICAg
IGVuZAorICAgIH0KKyAgICAKKyAgICBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgIGVuZAor
ICAKKyAgZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAgIG15TWFjcm9zID0gbWFjcm9zLmR1cAor
ICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gTWFj
cm8KKyAgICAgICAgbXlNYWNyb3NbaXRlbS5uYW1lXSA9IGl0ZW0KKyAgICAgIGVuZAorICAgIH0K
KyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAg
ICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgICMgSWdub3JlLgorICAgICAgZWxzaWYgaXRl
bS5pc19hPyBNYWNyb0NhbGwKKyAgICAgICAgbWFwcGluZyA9IHt9CisgICAgICAgIG15TXlNYWNy
b3MgPSBteU1hY3Jvcy5kdXAKKyAgICAgICAgcmFpc2UgIkNvdWxkIG5vdCBmaW5kIG1hY3JvICN7
aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBteU1hY3Jvc1tp
dGVtLm5hbWVdCisgICAgICAgIHJhaXNlICJBcmd1bWVudCBjb3VudCBtaXNtYXRjaCBmb3IgY2Fs
bCB0byAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgaXRl
bS5vcGVyYW5kcy5zaXplID09IG15TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzLnNpemUKKyAg
ICAgICAgaXRlbS5vcGVyYW5kcy5zaXplLnRpbWVzIHsKKyAgICAgICAgICB8IGlkeCB8CisgICAg
ICAgICAgaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IFZhcmlhYmxlIGFuZCBteU1hY3Jvc1tp
dGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3Nb
aXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG15TWFjcm9zW2l0ZW0ub3BlcmFuZHNb
aWR4XS5uYW1lXQorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlh
Ymxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxzaWYgaXRlbS5vcGVyYW5kc1tpZHhd
LmlzX2E/IE1hY3JvCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0u
dmFyaWFibGVzW2lkeF0ubmFtZV0gPSBpdGVtLm9wZXJhbmRzW2lkeF0KKyAgICAgICAgICAgIG1h
cHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52
YXJpYWJsZXNbaWR4XV0gPSBuaWwKKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5u
YW1lXS52YXJpYWJsZXNbaWR4XV0gPSBpdGVtLm9wZXJhbmRzW2lkeF0KKyAgICAgICAgICBlbmQK
KyAgICAgICAgfQorICAgICAgICBuZXdMaXN0ICs9IG15TWFjcm9zW2l0ZW0ubmFtZV0uYm9keS5z
dWJzdGl0dXRlKG1hcHBpbmcpLmRlbWFjcm9pZnkobXlNeU1hY3JvcykucmVuYW1lTGFiZWxzKGl0
ZW0ubmFtZSkubGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uZGVtYWNy
b2lmeShteU1hY3JvcykKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9y
aWdpbiwgbmV3TGlzdCkuc3Vic3RpdHV0ZSh7fSkKKyAgZW5kCitlbmQKKworIworIyBub2RlLnJl
c29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRo
YXQgaGFzIG9mZnNldCB2YWx1ZXMgaW5zdGVhZCBvZiBzeW1ib2xpYworIyBvZmZzZXRzLgorIwor
CitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBt
YXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnJlc29sdmVPZmZzZXRz
KG9mZnNldHMsIHNpemVzKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0
CisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBvZmZzZXRzW3Nl
bGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIG9mZnNldHNbc2VsZl0pCisgICAg
ZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YKKyAg
ZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlmIHNpemVzW3NlbGZdCisg
ICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIHNpemVzW3NlbGZdKQorICAgIGVsc2UKKyAg
ICAgIHB1dHMgIkNvdWxkIG5vdCBmaW5kICN7c2VsZi5pbnNwZWN0fSBpbiAje3NpemVzLmtleXMu
aW5zcGVjdH0iCisgICAgICBwdXRzICJzaXplcyA9ICN7c2l6ZXMuaW5zcGVjdH0iCisgICAgICBz
ZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5mb2xkCisjCisjIFJlc29sdmUg
Y29uc3RhbnQgcmVmZXJlbmNlcyBhbmQgY29tcHV0ZSBhcml0aG1ldGljIGV4cHJlc3Npb25zLgor
IworCitjbGFzcyBOb2RlCisgIGRlZiBmb2xkCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBj
aGlsZCB8CisgICAgICBjaGlsZC5mb2xkCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRJ
bW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0
ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRp
YXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJ
bW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICsgQHJpZ2h0LnZhbHVlKQorICBl
bmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBA
bGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxl
c3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5p
c19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVl
IC0gQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzCisgIGRl
ZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQK
KyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJu
IHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNv
ZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICogQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFz
cyBOZWdJbW1lZGlhdGUKKyAgZGVmIGZvbGQKKyAgICBAY2hpbGQgPSBAY2hpbGQuZm9sZAorICAg
IHJldHVybiBzZWxmIHVubGVzcyBAY2hpbGQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRl
Lm5ldyhjb2RlT3JpZ2luLCAtQGNoaWxkLnZhbHVlKQorICBlbmQKK2VuZAorCisjCisjIG5vZGUu
cmVzb2x2ZUFmdGVyU2V0dGluZ3Mob2Zmc2V0cywgc2l6ZXMpCisjCisjIENvbXBpbGUgYXNzZW1i
bHkgYWdhaW5zdCBhIHNldCBvZiBvZmZzZXRzLgorIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNv
bHZlKG9mZnNldHMsIHNpemVzKQorICAgIGRlbWFjcm9pZnkoe30pLnJlc29sdmVPZmZzZXRzKG9m
ZnNldHMsIHNpemVzKS5mb2xkCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjc5IEBACisjIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitjbGFzcyBSZWdpc3RlcklECisgIGRl
ZiBzdXBwb3J0czhCaXRPblg4NgorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwg
InIwIiwgInQxIiwgImExIiwgInIxIiwgInQyIiwgInQzIgorICAgICAgdHJ1ZQorICAgIHdoZW4g
InQ0IiwgImNmciIKKyAgICAgIGZhbHNlCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQK
KyAgZW5kCisgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIGNhc2UgbmFtZQorICAgIHdo
ZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisg
ICAgICAgICIlYWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlYXgiCisgICAgICB3aGVu
IDppbnQKKyAgICAgICAgIiVlYXgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBl
bmQKKyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hl
biA6Ynl0ZQorICAgICAgICAiJWRsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWR4Igor
ICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWR4IgorICAgICAgZWxzZQorICAgICAgICByYWlz
ZQorICAgICAgZW5kCisgICAgd2hlbiAidDIiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4g
OmJ5dGUKKyAgICAgICAgIiVjbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVjeCIKKyAg
ICAgIHdoZW4gOmludAorICAgICAgICAiJWVjeCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UK
KyAgICAgIGVuZAorICAgIHdoZW4gInQzIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpi
eXRlCisgICAgICAgICIlYmwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlYngiCisgICAg
ICB3aGVuIDppbnQKKyAgICAgICAgIiVlYngiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisg
ICAgICBlbmQKKyAgICB3aGVuICJ0NCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0
ZQorICAgICAgICAiJXNpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVzaSIKKyAgICAg
IHdoZW4gOmludAorICAgICAgICAiJWVzaSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAg
ICAgIGVuZAorICAgIHdoZW4gImNmciIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0
ZQorICAgICAgICAiJWRpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVkaSIKKyAgICAg
IHdoZW4gOmludAorICAgICAgICAiJWVkaSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAg
ICAgIGVuZAorICAgIHdoZW4gInNwIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRl
CisgICAgICAgICIlc3BsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNwIgorICAgICAg
d2hlbiA6aW50CisgICAgICAgICIlZXNwIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAg
ICAgZW5kCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4ODZD
YWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQK
KworY2xhc3MgRlBSZWdpc3RlcklECisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgcmFpc2Ug
dW5sZXNzIGtpbmQgPT0gOmRvdWJsZQorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIsICJm
YTAiLCAiZnIiCisgICAgICAiJXhtbTAiCisgICAgd2hlbiAiZnQxIiwgImZhMSIKKyAgICAgICIl
eG1tMSIKKyAgICB3aGVuICJmdDIiLCAiZmEyIgorICAgICAgIiV4bW0yIgorICAgIHdoZW4gImZ0
MyIsICJmYTMiCisgICAgICAiJXhtbTMiCisgICAgd2hlbiAiZnQ0IgorICAgICAgIiV4bW00Igor
ICAgIHdoZW4gImZ0NSIKKyAgICAgICIleG1tNSIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAg
IGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJh
bmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIHg4Nk9wZXJh
bmQoa2luZCkKKyAgICAiJCN7dmFsdWV9IgorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtp
bmQpCisgICAgIiN7dmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGRlZiBz
dXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5k
KGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0pIgor
ICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2lu
ZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgZGVmIHN1cHBvcnRzOEJpdE9u
WDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAi
I3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSwgI3tpbmRleC54ODZPcGVy
YW5kKDppbnQpfSwgI3tzY2FsZX0pIgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2lu
ZCkKKyAgICAiKiN7eDg2b3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29s
dXRlQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAg
IAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje2FkZHJlc3MudmFsdWV9IgorICBlbmQK
KworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7YWRkcmVzcy52YWx1ZX0iCisg
IGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgIGRlZiB4ODZDYWxsT3BlcmFuZChr
aW5kKQorICAgIGFzbUxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVu
Y2UKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgYXNtTGFiZWwKKyAgZW5kCitlbmQK
KworY2xhc3MgSW5zdHJ1Y3Rpb24KKyAgZGVmIHg4Nk9wZXJhbmRzKCpraW5kcykKKyAgICByYWlz
ZSB1bmxlc3Mga2luZHMuc2l6ZSA9PSBvcGVyYW5kcy5zaXplCisgICAgcmVzdWx0ID0gW10KKyAg
ICBraW5kcy5zaXplLnRpbWVzIHsKKyAgICAgIHwgaWR4IHwKKyAgICAgIHJlc3VsdCA8PCBvcGVy
YW5kc1tpZHhdLng4Nk9wZXJhbmQoa2luZHNbaWR4XSkKKyAgICB9CisgICAgcmVzdWx0LmpvaW4o
IiwgIikKKyAgZW5kCisKKyAgZGVmIHg4NlN1ZmZpeChraW5kKQorICAgIGNhc2Uga2luZAorICAg
IHdoZW4gOmJ5dGUKKyAgICAgICJiIgorICAgIHdoZW4gOmhhbGYKKyAgICAgICJ3IgorICAgIHdo
ZW4gOmludAorICAgICAgImwiCisgICAgd2hlbiA6ZG91YmxlCisgICAgICAic2QiCisgICAgZWxz
ZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3BXaXRo
TnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBudW1PcGVyYW5kcykKKyAgICBpZiBudW1PcGVyYW5k
cyA9PSAzCisgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNt
LnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMV0gPT0gb3Bl
cmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVs
c2UKKyAgICAgICAgJGFzbS5wdXRzICJtb3Yje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAg
ICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQp
fSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UK
KyAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5k
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIGhhbmRsZVg4Nk9wKG9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhOdW1P
cGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUpCisgIGVuZAorICAKKyAgZGVmIGhh
bmRsZVg4NlNoaWZ0KG9wY29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1l
ZGlhdGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0ZXJJRC5mb3JOYW1lKG5pbCwgInQyIikKKyAg
ICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRhc20u
cHV0cyAieGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICAg
ICRhc20ucHV0cyAiI3tvcGNvZGV9ICVjbCwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQp
fSIKKyAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQp
fSwgJWVjeCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2RG91YmxlQnJhbmNo
KGJyYW5jaE9wY29kZSwgbW9kZSkKKyAgICBjYXNlIG1vZGUKKyAgICB3aGVuIDpub3JtYWwKKyAg
ICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gOnJldmVyc2UK
KyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIGVsc2UKKyAgICAg
IHJhaXNlIG1vZGUuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiI3ticmFuY2hPcGNv
ZGV9ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJ
bnRDb21wYXJlKG9wY29kZVN1ZmZpeCwga2luZCkKKyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJ
bW1lZGlhdGUgYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDAgYW5kIG9wZXJhbmRzWzFdLmlzX2E/
IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAi
bmUiKQorICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzaWYgb3BlcmFuZHNbMV0uaXNfYT8gSW1tZWRp
YXRlIGFuZCBvcGVyYW5kc1sxXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdp
c3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikK
KyAgICAgICRhc20ucHV0cyAidGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiY21wI3t4ODZTdWZm
aXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nklu
dEJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShicmFu
Y2hPcGNvZGVbMS4uLTFdLCBraW5kKQorICAgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7
b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTZXQoc2V0
T3Bjb2RlLCBvcGVyYW5kKQorICAgIGlmIG9wZXJhbmQuc3VwcG9ydHM4Qml0T25YODYKKyAgICAg
ICRhc20ucHV0cyAiI3tzZXRPcGNvZGV9ICN7b3BlcmFuZC54ODZPcGVyYW5kKDpieXRlKX0iCisg
ICAgICAkYXNtLnB1dHMgIm1vdnpibCAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29w
ZXJhbmQueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJ4Y2hn
bCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgICAkYXNtLnB1dHMgIiN7
c2V0T3Bjb2RlfSAlYWwiCisgICAgICAkYXNtLnB1dHMgIm1vdnpibCAlYWwsICVlYXgiCisgICAg
ICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSwgJWVheCIKKyAg
ICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29tcGFyZVNldChzZXRPcGNvZGUs
IGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShzZXRPcGNvZGVbMy4uLTFdLCBraW5kKQor
ICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRzWzJdKQorICBlbmQKKyAgCisgIGRl
ZiBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgdmFsdWUgPSBvcGVyYW5kc1swXQorICAgIGNhc2Ug
b3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gMgorICAgICAgbWFzayA9IEltbWVkaWF0ZS5uZXcoY29k
ZU9yaWdpbiwgLTEpCisgICAgd2hlbiAzCisgICAgICBtYXNrID0gb3BlcmFuZHNbMV0KKyAgICBl
bHNlCisgICAgICByYWlzZSAiRXhwZWN0ZWQgMiBvciAzIG9wZXJhbmRzLCBidXQgZ290ICN7b3Bl
cmFuZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKyAgICAKKyAgICBp
ZiBtYXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQorICAgICAgaWYgdmFs
dWUuaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChr
aW5kKX0gI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQp
fSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJjbXAje3g4NlN1ZmZpeChraW5kKX0g
JDAsICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNlCisgICAg
ICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3ttYXNrLng4Nk9wZXJhbmQoa2lu
ZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRl
ZiBoYW5kbGVYODZCcmFuY2hUZXN0KGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZU
ZXN0KGtpbmQpCisgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kcy5sYXN0
LmFzbUxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0VGVzdChzZXRPcGNvZGUs
IGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNv
ZGUsIG9wZXJhbmRzLmxhc3QpCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wQnJhbmNoKG9w
Y29kZSwgYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRz
KG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgY2FzZSBvcGVyYW5kcy5zaXpl
CisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3aGVuIDMK
KyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJhaXNlIHNl
bGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7anVt
cFRhcmdldC5hc21MYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlN1YkJyYW5jaChi
cmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSA0IGFuZCBvcGVyYW5k
c1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgJGFzbS5wdXRzICJuZWdsICN7b3BlcmFuZHNbMl0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgImFkZGwgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBl
bHNlCisgICAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcygic3ViI3t4ODZTdWZmaXgoa2lu
ZCl9Iiwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgZW5kCisgICAgY2FzZSBvcGVyYW5k
cy5zaXplCisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10KKyAgICB3
aGVuIDMKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAgICAgIHJh
aXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9
ICN7anVtcFRhcmdldC5hc21MYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGxvd2VyWDg2CisgICAg
JGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICBjYXNlIG9wY29kZQorICAgIHdoZW4g
ImFkZGkiLCAiYWRkcCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNb
MF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19h
PyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdp
c3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAgICAgICB1bmxl
c3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICRhc20ucHV0cyAibW92
bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgJGFzbS5w
dXRzICJsZWFsICN7b3BlcmFuZHNbMF0udmFsdWV9KCN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICBlbmQKKyAg
ICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0
ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAor
ICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAg
ICAkYXNtLnB1dHMgImxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgICAgZWxzZQorICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09
IG9wZXJhbmRzWzBdCisgICAgICAgICAgJGFzbS5wdXRzICJhZGRsICN7eDg2T3BlcmFuZHMoOmlu
dCwgOmludCl9IgorICAgICAgICBlbmQKKyAgICAgIGVuZAorICAgIHdoZW4gImFuZGkiLCAiYW5k
cCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJhbmRsIiwgOmludCkKKyAgICB3aGVuICJsc2hpZnRpIgor
ICAgICAgaGFuZGxlWDg2U2hpZnQoInNhbGwiLCA6aW50KQorICAgIHdoZW4gIm11bGkiCisgICAg
ICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQor
ICAgICAgICAkYXNtLnB1dHMgImltdWxsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCwgOmludCl9
IgorICAgICAgZWxzZQorICAgICAgICAjIEZJWE1FOiBjb3VsZCBkbyBzb21lIHBlZXBob2xlIGlu
IGNhc2UgdGhlIGxlZnQgb3BlcmFuZCBpcyBpbW1lZGlhdGUgYW5kIGl0J3MKKyAgICAgICAgIyBh
IHBvd2VyIG9mIHR3by4KKyAgICAgICAgaGFuZGxlWDg2T3AoImltdWxsIiwgOmludCkKKyAgICAg
IGVuZAorICAgIHdoZW4gIm5lZ2kiCisgICAgICAkYXNtLnB1dHMgIm5lZ2wgI3t4ODZPcGVyYW5k
cyg6aW50KX0iCisgICAgd2hlbiAibm90aSIKKyAgICAgICRhc20ucHV0cyAibm90bCAje3g4Nk9w
ZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgaGFuZGxlWDg2T3Ao
Im9ybCIsIDppbnQpCisgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJz
YXJsIiwgOmludCkKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJz
aHJsIiwgOmludCkKKyAgICB3aGVuICJzdWJpIiwgInN1YnAiCisgICAgICBpZiBvcGVyYW5kcy5z
aXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0
cyAibmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAkYXNtLnB1
dHMgImFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54
ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgaGFuZGxlWDg2T3AoInN1Ymwi
LCA6aW50KQorICAgICAgZW5kCisgICAgd2hlbiAieG9yaSIsICJ4b3JwIgorICAgICAgaGFuZGxl
WDg2T3AoInhvcmwiLCA6aW50KQorICAgIHdoZW4gImxvYWRpIiwgInN0b3JlaSIsICJsb2FkcCIs
ICJzdG9yZXAiCisgICAgICAkYXNtLnB1dHMgIm1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50
KX0iCisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNtLnB1dHMgIm1vdnpibCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICB3aGVuICJsb2FkYnMiCisgICAgICAkYXNtLnB1dHMgIm1vdnNibCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICB3aGVuICJsb2FkaCIKKyAgICAgICRhc20ucHV0cyAibW92endsICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6aGFsZil9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdo
ZW4gImxvYWRocyIKKyAgICAgICRhc20ucHV0cyAibW92c3dsICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6aGFsZil9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4g
InN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAibW92YiAje3g4Nk9wZXJhbmRzKDpieXRlLCA6Ynl0
ZSl9IgorICAgIHdoZW4gImxvYWRkIiwgIm1vdmVkIiwgInN0b3JlZCIKKyAgICAgICRhc20ucHV0
cyAibW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAiYWRk
ZCIKKyAgICAgICRhc20ucHV0cyAiYWRkc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91Ymxl
KX0iCisgICAgd2hlbiAiZGl2ZCIKKyAgICAgICRhc20ucHV0cyAiZGl2c2QgI3t4ODZPcGVyYW5k
cyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3ViZCIKKyAgICAgICRhc20ucHV0cyAi
c3Vic2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAibXVsZCIK
KyAgICAgICRhc20ucHV0cyAibXVsc2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0i
CisgICAgd2hlbiAic3FydGQiCisgICAgICAkYXNtLnB1dHMgInNxcnRzZCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
IgorICAgIHdoZW4gImNpMmQiCisgICAgICAkYXNtLnB1dHMgImN2dHNpMnNkICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0i
CisgICAgd2hlbiAiYmRlcSIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUo
ImJkZXEiKQorICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAk
YXNtLnB1dHMgImpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVk
KS5hc21MYWJlbH0iCisgICAgICAkYXNtLnB1dHMgImplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNv
ZGVPcmlnaW4sIG9wZXJhbmRzWzJdKS5hc21MYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dl
cigiWDg2IikKKyAgICB3aGVuICJiZG5lcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgi
am5lIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGd0IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJh
bmNoKCJqYSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRndGVxIgorICAgICAgaGFuZGxlWDg2RG91
YmxlQnJhbmNoKCJqYWUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHQiCisgICAgICBoYW5kbGVY
ODZEb3VibGVCcmFuY2goImphIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdGVxIgorICAgICAg
aGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYWUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGVxdW4i
CisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImplIiwgOm5vcm1hbCkKKyAgICB3aGVuICJi
ZG5lcXVuIgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1biIp
CisgICAgICBpc0VxdWFsID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4iKQorICAgICAgJGFz
bS5wdXRzICJ1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgImpwICN7TGFi
ZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS5hc21MYWJlbH0iCisgICAg
ICAkYXNtLnB1dHMgImplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzRXF1YWwp
LmFzbUxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgICAgJGFzbS5w
dXRzICJqbXAgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICBpc0VxdWFsLmxvd2VyKCJY
ODYiKQorICAgIHdoZW4gImJkZ3R1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIi
LCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJy
YW5jaCgiamJlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdHVuIgorICAgICAgaGFuZGxlWDg2
RG91YmxlQnJhbmNoKCJqYiIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRsdGVxdW4iCisgICAgICBo
YW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYnRkMmkiCisg
ICAgICAkYXNtLnB1dHMgImN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJj
bXBsICQweDgwMDAwMDAwICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAk
YXNtLnB1dHMgImplICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gInRkMmkiCisg
ICAgICAkYXNtLnB1dHMgImN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJjZDJpIgor
ICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAi
dGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiamUgI3tvcGVyYW5kc1syXS5hc21MYWJl
bH0iCisgICAgICAkYXNtLnB1dHMgImN2dHNpMnNkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJqcCAje29wZXJhbmRz
WzJdLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiam5lICN7b3BlcmFuZHNbMl0uYXNtTGFi
ZWx9IgorICAgIHdoZW4gIm1vdmR6IgorICAgICAgJGFzbS5wdXRzICJ4b3JwZCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9IgorICAgIHdoZW4gInBvcCIKKyAgICAgICRhc20ucHV0cyAicG9wICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicHVzaCIKKyAgICAgICRhc20ucHV0cyAicHVz
aCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gIm1vdmUiLCAic3hp
MnAiLCAienhpMnAiCisgICAgICBpZiBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNb
MF0gYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJ4
b3JsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICBlbHNpZiBvcGVyYW5kc1swXSAhPSBvcGVyYW5kc1sxXQorICAg
ICAgICAkYXNtLnB1dHMgIm1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgICBl
bmQKKyAgICB3aGVuICJub3AiCisgICAgICAkYXNtLnB1dHMgIm5vcCIKKyAgICB3aGVuICJiaWVx
IiwgImJwZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmludCkKKyAgICB3aGVu
ICJiaW5lcSIsICJicG5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmludCkK
KyAgICB3aGVuICJiaWEiLCAiYnBhIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDpp
bnQpCisgICAgd2hlbiAiYmlhZXEiLCAiYnBhZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImphZSIsIDppbnQpCisgICAgd2hlbiAiYmliIiwgImJwYiIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamIiLCA6aW50KQorICAgIHdoZW4gImJpYmVxIiwgImJwYmVxIgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqYmUiLCA6aW50KQorICAgIHdoZW4gImJpZ3QiLCAiYnBndCIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamciLCA6aW50KQorICAgIHdoZW4gImJpZ3RlcSIsICJicGd0
ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnZSIsIDppbnQpCisgICAgd2hlbiAiYmls
dCIsICJicGx0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDppbnQpCisgICAgd2hl
biAiYmlsdGVxIiwgImJwbHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamxlIiwgOmlu
dCkKKyAgICB3aGVuICJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDpieXRl
KQorICAgIHdoZW4gImJibmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6Ynl0
ZSkKKyAgICB3aGVuICJiYmEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphIiwgOmJ5dGUp
CisgICAgd2hlbiAiYmJhZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphZSIsIDpieXRl
KQorICAgIHdoZW4gImJiYiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6Ynl0ZSkK
KyAgICB3aGVuICJiYmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmJ5dGUp
CisgICAgd2hlbiAiYmJndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamciLCA6Ynl0ZSkK
KyAgICB3aGVuICJiYmd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnZSIsIDpieXRl
KQorICAgIHdoZW4gImJibHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwgOmJ5dGUp
CisgICAgd2hlbiAiYmJsdGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbHRlcSIsIDpi
eXRlKQorICAgIHdoZW4gImJ0aW8iLCAiYnRwbyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3Qo
ImpvIiwgOmludCkKKyAgICB3aGVuICJidGlzIiwgImJ0cHMiCisgICAgICBoYW5kbGVYODZCcmFu
Y2hUZXN0KCJqcyIsIDppbnQpCisgICAgd2hlbiAiYnRpeiIsICJidHB6IgorICAgICAgaGFuZGxl
WDg2QnJhbmNoVGVzdCgianoiLCA6aW50KQorICAgIHdoZW4gImJ0aW56IiwgImJ0cG56IgorICAg
ICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmludCkKKyAgICB3aGVuICJidGJvIgorICAg
ICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJzIgorICAg
ICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJ6IgorICAg
ICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGJueiIKKyAg
ICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDpieXRlKQorICAgIHdoZW4gImptcCIKKyAg
ICAgICRhc20ucHV0cyAiam1wICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9Igor
ICAgIHdoZW4gImJhZGRpbyIsICJiYWRkcG8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRk
bCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlzIiwgImJhZGRwcyIKKyAgICAgIGhhbmRs
ZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJiYWRkaXoiLCAiYmFk
ZHB6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianoiLCA6aW50KQorICAgIHdo
ZW4gImJhZGRpbnoiLCAiYmFkZHBueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwg
ImpueiIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlvIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNo
KCJqbyIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlzIgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNo
KCJqcyIsIDppbnQpCisgICAgd2hlbiAiYnN1Yml6IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNo
KCJqeiIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlueiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5j
aCgiam56IiwgOmludCkKKyAgICB3aGVuICJibXVsaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5j
aCgiaW11bGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJtdWxpcyIKKyAgICAgIGhhbmRsZVg4
Nk9wQnJhbmNoKCJpbXVsbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm11bGl6IgorICAgICAg
aGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJibXVsaW56
IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpueiIsIDppbnQpCisgICAgd2hl
biAiYm9yaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpvIiwgOmludCkKKyAg
ICB3aGVuICJib3JpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianMiLCA6aW50
KQorICAgIHdoZW4gImJvcml6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqeiIs
IDppbnQpCisgICAgd2hlbiAiYm9yaW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIs
ICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJyZWFrIgorICAgICAgJGFzbS5wdXRzICJpbnQgJDMi
CisgICAgd2hlbiAiY2FsbCIKKyAgICAgICRhc20ucHV0cyAiY2FsbCAje29wZXJhbmRzWzBdLng4
NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJyZXQiCisgICAgICAkYXNtLnB1dHMgInJl
dCIKKyAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0
KCJzZXRlIiwgOmludCkKKyAgICB3aGVuICJjaW5lcSIsICJjcG5lcSIKKyAgICAgIGhhbmRsZVg4
NkludENvbXBhcmVTZXQoInNldG5lIiwgOmludCkKKyAgICB3aGVuICJjaWEiLCAiY3BhIgorICAg
ICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YSIsIDppbnQpCisgICAgd2hlbiAiY2lhZXEi
LCAiY3BhZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRhZSIsIDppbnQpCisg
ICAgd2hlbiAiY2liIiwgImNwYiIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGIi
LCA6aW50KQorICAgIHdoZW4gImNpYmVxIiwgImNwYmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29t
cGFyZVNldCgic2V0YmUiLCA6aW50KQorICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgIGhh
bmRsZVg4NkludENvbXBhcmVTZXQoInNldGciLCA6aW50KQorICAgIHdoZW4gImNpZ3RlcSIsICJj
cGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnZSIsIDppbnQpCisgICAg
d2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bCIs
IDppbnQpCisgICAgd2hlbiAiY2lsdGVxIiwgImNwbHRlcSIKKyAgICAgIGhhbmRsZVg4NkludENv
bXBhcmVTZXQoInNldGxlIiwgOmludCkKKyAgICB3aGVuICJ0aW8iCisgICAgICBoYW5kbGVYODZT
ZXRUZXN0KCJzZXRvIiwgOmludCkKKyAgICB3aGVuICJ0aXMiCisgICAgICBoYW5kbGVYODZTZXRU
ZXN0KCJzZXRzIiwgOmludCkKKyAgICB3aGVuICJ0aXoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0
KCJzZXR6IiwgOmludCkKKyAgICB3aGVuICJ0aW56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgi
c2V0bnoiLCA6aW50KQorICAgIHdoZW4gInRibyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNl
dG8iLCA6Ynl0ZSkKKyAgICB3aGVuICJ0YnMiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRz
IiwgOmJ5dGUpCisgICAgd2hlbiAidGJ6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIs
IDpieXRlKQorICAgIHdoZW4gInRibnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIs
IDpieXRlKQorICAgIHdoZW4gInBlZWsiCisgICAgICAkYXNtLnB1dHMgIm1vdmwgI3tvcGVyYW5k
c1swXS52YWx1ZSAqIDR9KCVlc3ApLCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgIHdoZW4gInBva2UiCisgICAgICAkYXNtLnB1dHMgIm1vdmwgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS52YWx1ZSAqIDR9KCVlc3ApIgorICAgIHdoZW4g
ImNkcWkiCisgICAgICAkYXNtLnB1dHMgImNkcSIKKyAgICB3aGVuICJpZGl2aSIKKyAgICAgICRh
c20ucHV0cyAiaWRpdmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVu
ICJmaWkyZCIKKyAgICAgICRhc20ucHV0cyAibW92ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5w
dXRzICJtb3ZkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAg
JGFzbS5wdXRzICJwc2xscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJwb3IgJXhtbTcs
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiZmQyaWkiCisg
ICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAibW92c2Qg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1
dHMgInBzcmxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIm1vdnNkICV4bW03LCAje29w
ZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJvIgorICAgICAgJGFzbS5w
dXRzICJqbyAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJicyIKKyAgICAgICRh
c20ucHV0cyAianMgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYnoiCisgICAg
ICAkYXNtLnB1dHMgImp6ICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJueiIK
KyAgICAgICRhc20ucHV0cyAiam56ICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgIGVsc2UK
KyAgICAgIHJhaXNlICJCYWQgb3Bjb2RlOiAje29wY29kZX0iCisgICAgZW5kCisgIGVuZAorZW5k
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlv
bktpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKyNkZWZpbmUgQ29kZVNwZWNpYWxpemF0
aW9uS2luZF9oCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIENvZGVTcGVjaWFsaXphdGlvbktp
bmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OworCit9IC8vIG5hbWVzcGFjZSBK
U0MKKworI2VuZGlmIC8vIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkocmV2aXNpb24g
MTA2MjkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgQ29tbW9uU2xvd1Bh
dGhzX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXph
dGlvbktpbmQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNB
cnJheS5oIgogCkBAIC00MSw2ICs0MiwzOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNl
IENvbW1vblNsb3dQYXRocyB7CiAKK0FMV0FZU19JTkxJTkUgRXhlY1N0YXRlKiBhcml0eUNoZWNr
Rm9yKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0
aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24o
KSk7CisgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUo
KS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzID0gZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKKworICAgIC8v
IFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9m
IHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgorICAgIGlmICghcmVnaXN0ZXJG
aWxlLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSk7CisKKyAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5
IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRz
IHdpdGggdW5kZWZpbmVkLgorICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CisgICAgUmVnaXN0ZXIqIHNy
YyA9IGV4ZWMtPnJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyKiBkc3QgPSBleGVjLT5yZWdpc3Rl
cnMoKSArIGRlbHRhOworCisgICAgaW50IGk7CisgICAgaW50IGVuZCA9IC1FeGVjU3RhdGU6Om9m
ZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgZm9yIChpID0gLTE7IGkg
Pj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKKworICAgIGVuZCAtPSBkZWx0
YTsKKyAgICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9IGpzVW5kZWZp
bmVkKCk7CisKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBFeGVjU3RhdGU6OmNyZWF0ZShkc3Qp
OworICAgIEFTU0VSVCgodm9pZCopbmV3RXhlYyA8PSByZWdpc3RlckZpbGUtPmVuZCgpKTsKKyAg
ICByZXR1cm4gbmV3RXhlYzsKK30KKwogQUxXQVlTX0lOTElORSBib29sIG9wSW5zdGFuY2VPZlNs
b3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGJhc2VWYWwsIEpTVmFs
dWUgcHJvdG8pCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0NlbGwoKSB8fCAhYmFzZVZhbC5pc0Nl
bGwoKSB8fCAhcHJvdG8uaXNDZWxsKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiAr
MjksNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCisjaW5jbHVkZSAiRXhlY3V0aW9uSGFybmVz
cy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVERyaXZlci5oIgogI2luY2x1ZGUg
IlBhcnNlci5oIgpAQCAtODQsNyArODUsNyBAQCBJbnRyaW5zaWMgTmF0aXZlRXhlY3V0YWJsZTo6
aW50cmluc2ljKCkgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIHZvaWQgamV0dGlzb25D
b2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8VD4mIGNvZGVCbG9jaykK
IHsKLSAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxp
bmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5n
ZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKICAg
ICBPd25QdHI8VD4gY29kZUJsb2NrVG9KZXR0aXNvbiA9IGNvZGVCbG9jay5yZWxlYXNlKCk7CiAg
ICAgY29kZUJsb2NrID0gc3RhdGljX3BvaW50ZXJfY2FzdDxUPihjb2RlQmxvY2tUb0pldHRpc29u
LT5yZWxlYXNlQWx0ZXJuYXRpdmUoKSk7CkBAIC0xNjcsOSArMTY4LDMwIEBAIEpTT2JqZWN0KiBF
dmFsRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXoKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3Zv
aWQgRXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQor
eworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwg
bV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklU
KCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCitpbmxpbmUgY29u
c3QgY2hhciogc2FtcGxpbmdEZXNjcmlwdGlvbihKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7
CisgICAgc3dpdGNoIChqaXRUeXBlKSB7CisgICAgY2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rOgorICAgICAgICByZXR1cm4gIkludGVycHJldGVyIENvbXBpbGF0aW9uIChUT1RBTCkiOwor
ICAgIGNhc2UgSklUQ29kZTo6QmFzZWxpbmVKSVQ6CisgICAgICAgIHJldHVybiAiQmFzZWxpbmUg
Q29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6CisgICAgICAg
IHJldHVybiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIEpT
T2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywg
U2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUp
CiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2Rl
OjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29t
cGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNh
bXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAg
IFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTIxMCw3ICsyMzIsNyBAQCBKU09iamVjdCogRXZh
bEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAg
ICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxv
Y2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1
dGlvbigqZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRU
eXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtMjk1LDkgKzMxNywxNSBAQCBK
U09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpCiAgICAgcmV0dXJuIGVycm9y
OwogfQogCit2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRl
KGdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29k
ZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsK
K30KKwogSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0
YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5
cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBl
ID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCki
IDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxp
bmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJM
RShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtMzM2LDcgKzM2NCw3IEBAIEpT
T2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGUKICAgICB9CiAKICNpZiBFTkFC
TEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoKmdsb2JhbERhdGEsIG1f
cHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFw
cmVwYXJlRm9yRXhlY3V0aW9uKCpnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0
Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC00
MTIsNyArNDQwLDcgQEAgRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Ygog
ICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAgIHJlc3VsdCA9IHN0YXRp
Y19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4ocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKTsKICAgICBB
U1NFUlQocmVzdWx0KTsKLSAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1
bHQtPmdldEpJVFR5cGUoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQzOCw2ICs0
NjYsMTggQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZU9wdAogICAgIHJl
dHVybiBlcnJvcjsKIH0KIAordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JD
YWxsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENv
bXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDYWxs
LCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3lt
Ym9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxl
Rm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3Vs
dCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxv
Y2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3Ry
dWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQo
KSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEZ1bmN0aW9uQ29k
ZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja1dpdGhCeXRlY29kZUZvcihDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVC
bG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwpAQCAtNDgyLDcgKzUyMiw3IEBAIFBh
c3NPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+IEZ1bmN0aW9uRXgKIAogSlNPYmplY3QqIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNj
b3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQog
ewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBp
bGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1w
bGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CkBAIC01MDQsNyArNTQ0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0Zv
ckNhbGwtPnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICgh
aml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fY29k
ZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0
eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlv
bkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9q
aXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRh
YmxlLCBqaXRUeXBlLCBDb2RlRm9yQ2FsbCkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAK
QEAgLTUyNCw3ICs1NjQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxl
Rm9yCiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJ
bnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwg
SklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5n
UmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGls
YXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGlu
Z1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAg
ICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC01NDYs
NyArNTg2LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAg
IG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+c2hhcmVkU3ltYm9sVGFi
bGUoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFw
cHJvcHJpYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1f
aml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ss
IG1fc3ltYm9sVGFibGUsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhl
Y3V0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0
Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1f
c3ltYm9sVGFibGUsIGppdFR5cGUsIENvZGVGb3JDb25zdHJ1Y3QpKQogICAgICAgICByZXR1cm4g
MDsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oCShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUg
RXhlY3V0YWJsZV9oCiAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgorI2luY2x1ZGUgIkNvZGVTcGVj
aWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtMzksMTIgKzQwLDEyIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGNsYXNzIERlYnVnZ2VyOwogICAgIGNsYXNzIEV2YWxDb2RlQmxvY2s7
CiAgICAgY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgU2NvcGVDaGFp
bk5vZGU7CiAKICAgICBzdHJ1Y3QgRXhjZXB0aW9uSW5mbzsKICAgICAKLSAgICBlbnVtIENvZGVT
cGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogICAg
IGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBp
bGF0aW9uIH07CiAKICAgICBpbmxpbmUgYm9vbCBpc0NhbGwoQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kKQpAQCAtMzE5LDYgKzMyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAg
ICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC0zMzgsNiArMzQwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQg
amV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENv
bXBpbGUoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBFdmFsQ29kZUJsb2NrJiBn
ZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC0zODQsNiArMzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgfTsKIAogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1
dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAg
IHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTQx
MSw2ICs0MTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkK
ICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAg
ICAgIHZvaWQgaml0Q29tcGlsZShKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIFBy
b2dyYW1Db2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkKQEAgLTQ1Myw2ICs0NTgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBT
Y3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5
cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC01MDgsNiArNTE0LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlz
b25PcHRpbWl6ZWRDb2RlRm9yQ2FsbChKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRD
b21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNH
ZW5lcmF0ZWRGb3JDYWxsKCkgY29uc3QKQEAgLTUzNSw2ICs1NDIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGlt
aXplZENvZGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29t
cGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wg
aXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3QoKSBjb25zdApAQCAtNTgyLDYgKzU5MCwxNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25z
dHJ1Y3QoZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIHZvaWQgaml0Q29tcGlsZUZvcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGtpbmQg
PT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgICAgICBqaXRDb21waWxlRm9yQ2FsbChnbG9i
YWxEYXRhKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgICAgIGppdENv
bXBpbGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CisgICAgICAgIH0KICNlbmRpZgogICAgICAg
ICAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9u
SGFybmVzcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgRXhlY3V0aW9u
SGFybmVzc19oCisjZGVmaW5lIEV4ZWN1dGlvbkhhcm5lc3NfaAorCisjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiSklURHJpdmVyLmgiCisj
aW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxh
dGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KK2lubGluZSBib29sIHByZXBhcmVGb3JFeGVjdXRp
b24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVC
bG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworI2lm
IEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkp
IHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisg
ICAgICAgIExMSW50OjpnZXRFbnRyeXBvaW50KGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwg
aml0Q29kZSk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZiAv
LyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2Jh
bERhdGEsIGNvZGVCbG9jaywgaml0Q29kZSwgaml0VHlwZSk7Cit9CisKK2lubGluZSBib29sIHBy
ZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0
cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxl
KiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNC
YXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cg
bGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQo
Z2xvYmFsRGF0YSwga2luZCwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAg
ICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGtp
bmQpOworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUZ1bmN0
aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdENvZGVX
aXRoQXJpdHlDaGVjaywgc3ltYm9sVGFibGUsIGppdFR5cGUpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKKyNlbmRpZiAvLyBFeGVjdXRpb25IYXJu
ZXNzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0
aW9uLmgJKHJldmlzaW9uIDEwNjI5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4g
cmVnaXN0ZXJBcnJheSA9IGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPlty
ZWdpc3RlckFycmF5U2l6ZV0pOwogICAgICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lz
dGVycyA9IHJlZ2lzdGVyQXJyYXkuZ2V0KCkgKyByZWdpc3Rlck9mZnNldDsKLQorICAgICAgICAK
ICAgICAgICAgLy8gQ29weSBhbGwgYXJndW1lbnRzIHRoYXQgY2FuIGJlIGNhcHR1cmVkIGJ5IG5h
bWUgb3IgYnkgdGhlIGFyZ3VtZW50cyBvYmplY3QuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbV9udW1DYXB0dXJlZEFyZ3M7ICsraSkgewogICAgICAgICAgICAgaW50IGluZGV4ID0gQ2Fs
bEZyYW1lOjphcmd1bWVudE9mZnNldChpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEwNjI5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKIAogICAgIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRl
QmFycmllcjxVbmtub3duPiB7CiAgICAgICAgIHR5cGVkZWYgV3JpdGVCYXJyaWVyPFVua25vd24+
IEJhc2U7CkBAIC0xMjIsNiArMTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAg
IGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxr
ZXI7CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NlbGwuaAkocmV2aXNpb24gMTA2MjkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIFN0cnVjdHVyZTsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNj
cmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OworICAgIGNsYXNzIFN0cnVjdHVy
ZTsKIAogICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVt
UHJvcGVydGllcywKQEAgLTE2NCw2ICsxNjUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
c3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0
ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAg
CiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAgICAgICAgIFdyaXRlQmFy
cmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5
cGU7CiAgICAgY2xhc3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0Owor
ICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRh
YmxlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0xNDAs
NiArMTQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hp
bGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAg
ICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUs
IGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMTA2MjkxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQx
LDYgKzE0MSw4IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAg
ICAsIGtleXdvcmRzKGFkb3B0UHRyKG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRlcnBy
ZXRlcigwKQogICAgICwgaGVhcCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFzc0lu
Zm8oJkpTQXJyYXk6OnNfaW5mbykKKyAgICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpTRmlu
YWxPYmplY3Q6OnNfaW5mbykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxhc3RT
Y3JhdGNoQnVmZmVyKDApCiAjZW5kaWYKQEAgLTIxNiw3ICsyMTgsNyBAQCBKU0dsb2JhbERhdGE6
OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcg
SklUVGh1bmtzKHRoaXMpKTsKICNlbmRpZgogCi0gICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUo
dGhpcy0+Y2FuVXNlSklUKCkpOworICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKCZsbGludERh
dGEsIHRoaXMtPmNhblVzZUpJVCgpKTsKIAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xsZWN0
KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERh
dGEuaAkocmV2aXNpb24gMTA2MjkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNiBAQAogI2RlZmlu
ZSBKU0dsb2JhbERhdGFfaAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlv
bi5oIgotI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hl
LmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhlYXAuaCIK
LSNpbmNsdWRlICJTdHJvbmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJK
SVRTdHVicy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIK
ICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgor
I2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJU
aW1lb3V0Q2hlY2tlci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYgKzY2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3Mg
SlNPYmplY3Q7CiAgICAgY2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJl
bmE7CiAgICAgY2xhc3MgUmVnRXhwQ2FjaGU7CkBAIC0yNDEsNiArMjQzLDEyIEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247
CisKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOworICAg
ICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CisKKyAg
ICAgICAgTExJbnQ6OkRhdGEgbGxpbnREYXRhOworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAg
UmV0dXJuQWRkcmVzc1B0ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBob3N0
Q2FsbFJldHVyblZhbHVlOwpAQCAtMzQ2LDYgKzM1NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogI3Vu
ZGVmIHJlZ2lzdGVyVHlwZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNH
bG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKICAg
ICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAg
ICAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDYyOTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9u
UHJvdG90eXBlOwogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxDb2Rl
QmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2
ZUVycm9yQ29uc3RydWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFz
cyBSZWdFeHBDb25zdHJ1Y3RvcjsKQEAgLTMzNSw2ICszMzYsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFBy
b3BlcnR5SW5mbyosIGludCBjb3VudCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6
IEZvbGQgcmVzZXQgaW50byBpbml0LgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGlu
aXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CiAgICAgICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90
b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShy
ZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50
ZXJuYWxGdW5jdGlvbjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xh
c3MgTWFya2VkQmxvY2s7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNz
IFByb3BlcnR5TmFtZUFycmF5OwpAQCAtMjcwLDYgKzI3MSw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3Jh
Z2UgaW5saW5lU3RvcmFnZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gTm9ib2R5IHNob3Vs
ZCBldmVyIGFzayBhbnkgb2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0aGluZyBhbHJlYWR5IGtu
b3duIHRvIGJlIGEgSlNPYmplY3QuCiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdy
YXBwZXI7CiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7CkBAIC0zODIsNiAr
Mzg1LDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAg
ICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGV4
cGxpY2l0IEpTRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSkKICAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJl
LCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9u
IDEwNjI5MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvciA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtOTYs
NiArOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlE
YXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKIAog
ICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTA2Mjkx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1N0
cmluZzsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBKU1N0cmluZyog
anNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmlu
ZyhFeGVjU3RhdGUqKTsKQEAgLTI0MCw2ICsyNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzb2x2ZVJvcGUoRXhl
Y1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIq
KSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFyKikgY29uc3Q7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZp
c2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZv
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkIHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJsZS4KICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8PCAxOwogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEgPDwgMjsKQEAg
LTg3LDYgKzg5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAog
ICAgICAgICBib29sIGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQo
ZmxhZyA8PSAoMSA8PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAgICAgICBib29s
IGlzU2V0T25GbGFnczIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8
PCA4KSk7IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxMDYyOTEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTE2LDEwICsxMTYsOSBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlw
ZShFCiAgICAgcmV0dXJuIEpTTm90QW5PYmplY3Q6OmNyZWF0ZShleGVjKTsKIH0KIAotI2lmbmRl
ZiBOREVCVUcKIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIHsKLSAgICBzdGF0aWMgY29u
c3Qgc2l6ZV90IHNpemUgPSA2NDsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSAxMjg7
CiAgICAgc3RhdGljIGNoYXIgZGVzY3JpcHRpb25bc2l6ZV07CiAKICAgICBpZiAoISp0aGlzKQpA
QCAtMTI4LDE0ICsxMjcsMTQgQEAgY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogICAgICAg
ICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkludDMyOiAlZCIsIGFzSW50MzIoKSk7CiAg
ICAgZWxzZSBpZiAoaXNEb3VibGUoKSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHNu
cHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICVseCIsIGFzRG91YmxlKCks
IHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIoYXNEb3VibGUoKSkpOworICAgICAgICBzbnByaW50
ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWx4LCAlbGYiLCByZWludGVycHJldERvdWJs
ZVRvSW50cHRyKGFzRG91YmxlKCkpLCBhc0RvdWJsZSgpKTsKICNlbHNlCiAgICAgICAgIHVuaW9u
IHsKICAgICAgICAgICAgIGRvdWJsZSBhc0RvdWJsZTsKICAgICAgICAgICAgIHVpbnQzMl90IGFz
VHdvSW50MzJzWzJdOwogICAgICAgICB9IHU7CiAgICAgICAgIHUuYXNEb3VibGUgPSBhc0RvdWJs
ZSgpOwotICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAl
MDh4OiUwOHgiLCBhc0RvdWJsZSgpLCB1LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBd
KTsKKyAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICUwOHg6JTA4
eCwgJWxmIiwgdS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSwgYXNEb3VibGUoKSk7
CiAjZW5kaWYKICAgICB9IGVsc2UgaWYgKGlzQ2VsbCgpKQogICAgICAgICBzbnByaW50ZihkZXNj
cmlwdGlvbiwgc2l6ZSwgIkNlbGw6ICVwIiwgYXNDZWxsKCkpOwpAQCAtMTUyLDcgKzE1MSw2IEBA
IGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIAogICAgIHJldHVybiBkZXNjcmlwdGlvbjsK
IH0KLSNlbmRpZgogCiAvLyBUaGlzIGluIHRoZSBUb0ludDMyIG9wZXJhdGlvbiBpcyBkZWZpbmVk
IGluIHNlY3Rpb24gOS41IG9mIHRoZSBFQ01BLTI2MiBzcGVjLgogLy8gTm90ZSB0aGF0IHRoaXMg
b3BlcmF0aW9uIGlzIGlkZW50aWNhbCB0byBUb1VJbnQzMiBvdGhlciB0aGFuIHRvIGludGVycHJl
dGF0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZp
c2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzMiw5ICsyMzIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSlNDZWxsKiBhc0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9v
bCBpc1ZhbGlkQ2FsbGVlKCk7CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGNoYXIqIGRlc2Ny
aXB0aW9uKCk7Ci0jZW5kaWYKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHRlbXBsYXRlIDxjbGFz
cyBUPiBKU1ZhbHVlKFdyaXRlQmFycmllckJhc2U8VD4pOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMTA2Mjkx
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAKICAg
ICBjbGFzcyBKU1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAg
ICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmpl
Y3QgQmFzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
CShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRp
b25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTAgQEAgdW5zaWduZWQgbWF4aW11
bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saQogCiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0
aDsKIAoraW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2lu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBpbnQzMl90IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKQEAgLTEzNyw2ICsxNDEsMTAgQEAg
dm9pZCBpbml0aWFsaXplT3B0aW9ucygpCiAgICAgCiAgICAgU0VUKG1heGltdW1JbmxpbmluZ0Rl
cHRoLCA1KTsKIAorICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1V
cCwgICAgIC0xMDApOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55
dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKKyAgICBTRVQo
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbiwgICAgICAgICAgICAtMTAwKTsKKwogICAg
IFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwLCAgICAgLTEw
MDApOwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dh
cm1VcCwgLTUwMDApOwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1p
emVBbnl0aW1lU29vbiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOwpAQCAt
MTg1LDYgKzE5Myw4IEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIGlmIChjcHVzVG9V
c2UgPCAxKQogICAgICAgICBjcHVzVG9Vc2UgPSAxOwogICAgIAorICAgIGNwdXNUb1VzZSA9IDE7
CisgICAgCiAgICAgU0VUKG51bWJlck9mR0NNYXJrZXJzLCBjcHVzVG9Vc2UpOwogCiAgICAgQVNT
RVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uIDw9IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEwNjI5MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpA
QCAtMzcsNiArMzcsMTAgQEAgZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0
cgogCiBleHRlcm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERlcHRoIG9mIGlu
bGluZSBzdGFjaywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMuCiAKK2V4
dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworZXh0
ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOwor
ZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogZXh0ZXJu
IGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGV4
dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2Fy
bVVwOwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXpl
QW55dGltZVNvb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNo
YWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVD
aGFpbi5oCShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TY29wZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0
OwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
ICAgICBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAg
ICAgCkBAIC05MSw2ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNf
RVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hp
bGRyZW47CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjIsNyArMzIyLDcgQEAg
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgICAgICAgICAgdHJh
bnNpdGlvbi0+Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgICAgIHJldHVybiB0
cmFuc2l0aW9uOwogICAgIH0KLQorICAgIAogICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNy
ZWF0ZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgdHJhbnNpdGlvbi0+bV9jYWNoZWRQ
cm90b3R5cGVDaGFpbi5zZXRNYXlCZU51bGwoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbiwgc3RydWN0
dXJlLT5tX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUs
NiArNDUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAgICBjbGFzcyBQcm9wZXJ0
eU5hbWVBcnJheURhdGE7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CkBAIC0xOTYsNiArMTk3
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZB
VEUgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90
b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKik7CiAgICAgICAgIFN0cnVj
dHVyZShKU0dsb2JhbERhdGEmKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNv
bnN0IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
dWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAxMDYyOTEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICsz
Nyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluIDog
cHVibGljIEpTQ2VsbCB7CkBAIC03NCw2ICs3NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgICAgICAKICAgICAgICAgU3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiwg
U3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAg
ICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0lubGluZUFTTS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSW5saW5lQVNNLmgJKHJldmlzaW9uIDEwNjI5MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSW5saW5lQVNNLmgJKHdvcmtpbmcgY29weSkKQEAg
LTcwLDQgKzcwLDExIEBACiAjZGVmaW5lIEhJREVfU1lNQk9MKG5hbWUpCiAjZW5kaWYKIAorLy8g
RklYTUU6IGZpZ3VyZSBvdXQgaG93IHRoaXMgd29ya3Mgb24gYWxsIHRoZSBwbGF0Zm9ybXMuIEkg
a25vdyB0aGF0CisvLyBvbiBMaW51eCwgdGhlIHByZWZlcnJlZCBmb3JtIGlzICIuTHN0dWZmIiBh
cyBvcHBvc2VkIHRvICJMc3R1ZmYiLgorLy8gRG9uJ3Qga25vdyBhYm91dCBhbnkgb2YgdGhlIG90
aGVycy4KKyNpZiBQTEFURk9STShNQUMpCisjZGVmaW5lIExPQ0FMX0xBQkVMX1NUUklORyhuYW1l
KSAiTCIgI25hbWUKKyNlbmRpZgorCiAjZW5kaWYgLy8gSW5saW5lQVNNX2gKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEwNjI5MSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTIwLDYgKzky
MCwxOCBAQAogI2RlZmluZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCisvKiBPbiBzb21lIG9mIHRo
ZSBwbGF0Zm9ybXMgd2hlcmUgd2UgaGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNvIGhhdmUgdGhl
IAorICAgbG93LWxldmVsIGludGVycHJldGVyLiAqLworI2lmICFkZWZpbmVkKEVOQUJMRV9MTElO
VCkgJiYgRU5BQkxFKEpJVCkgJiYgUExBVEZPUk0oTUFDKSAmJiBVU0UoSlNWQUxVRTMyXzY0KQor
I2RlZmluZSBFTkFCTEVfTExJTlQgMQorI2VuZGlmCisKKy8qIElmIHdlIGhhdmUgTExJbnQgZW5h
YmxlZCBhbmQgdGhlIEpJVCBlbmFibGVkLCB3ZSBhbHNvIGVuYWJsZSBPU1JpbmcgZnJvbQorICAg
TExJbnQgdG8gdGhlIEpJVC4gKi8KKyNpZiAhZGVmaW5lZChFTkFCTEVfTExJTlRfT1NSX1RPX0pJ
VCkgJiYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKExMSU5UKQorI2RlZmluZSBFTkFCTEVfTExJTlRf
T1NSX1RPX0pJVCAxCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9ERkdfSklUKSAmJiBF
TkFCTEUoSklUKQogLyogRW5hYmxlIHRoZSBERkcgSklUIG9uIFg4NiBhbmQgWDg2XzY0LiAgT25s
eSB0ZXN0ZWQgb24gTWFjIGFuZCBHTlUvTGludXguICovCiAjaWYgKENQVShYODYpIHx8IENQVShY
ODZfNjQpKSAmJiAoUExBVEZPUk0oTUFDKSB8fCBPUyhMSU5VWCkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJKHJldmlzaW9uIDEwNjI5
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDggQEAgcHVibGljOgogCiAgICAgaXRlcmF0b3IgYmVn
aW4oKTsKICAgICBpdGVyYXRvciBlbmQoKTsKKyAgICAKKyAgICBib29sIGlzRW1wdHkoKSB7IHJl
dHVybiBiZWdpbigpID09IGVuZCgpOyB9CiAKIHByaXZhdGU6CiAgICAgUmF3Tm9kZSBtX2hlYWRT
ZW50aW5lbDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBs
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuaAkocmV2aXNpb24gMTA2MjkxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpCiAvLyBMYW5kaW5nIHRoZSBmaWxlIG1vdmVz
IGluIG9uZSBwYXRjaCwgd2lsbCBmb2xsb3cgb24gd2l0aCBwYXRjaGVzIHRvIGNoYW5nZSB0aGUg
bmFtZXNwYWNlcy4KIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IElkZW50aWZpZXJDU3RyaW5nVHJh
bnNsYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPiBzdHJ1Y3QgSWRlbnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yOwogc3RydWN0IElkZW50
aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5zbGF0b3I7CiB9CkBAIC03Miw3ICs3Myw4IEBAIGNsYXNz
IFN0cmluZ0ltcGwgewogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpTdWJzdHJpbmdUcmFuc2xhdG9y
OwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAgICAgZnJp
ZW5kIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7Ci0KKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiBwcml2YXRlOgogICAgIGVudW0gQnVmZmVyT3duZXJz
aGlwIHsKICAgICAgICAgQnVmZmVySW50ZXJuYWwsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
MDYyOTEpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNyBAQAorMjAxMi0wMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgor
CisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENoYW5nZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUgYSBuZXcgZGly
ZWN0b3J5IGluIEphdmFTY3JpcHRDb3JlLgorICAgICAgICAKKyAgICAgICAgTm8gbmV3IHRlc3Rz
IGJlY2F1c2Ugbm8gYmVoYXZpb3IgY2hhbmdlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorCiAyMDEyLTAxLTMwICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICAhbV9pbnNpZGVSZWdpb25QYWludCBhc3NlcnRpb24gaW4gUmVuZGVyUmVnaW9uLmNw
cCBpcyBpbnZhbGlkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA2MjkxKQor
KysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYg
Kzc0LDcgQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9pbnRlcnBy
ZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIKKyAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcGFyc2VyIgogICAg
ICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9ydW50aW1lIgpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjI5MSkKKysrIFNvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEt
MjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mgc2hvdWxk
IGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3OTY5ND4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIEVG
TCdzIGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9yeSBpbiBKYXZhU2NyaXB0
Q29yZS4KKyAgICAgICAgCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMTItMDEtMTEg
IEphY2t5IEppYW5nICA8emhhamlhbmdAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0g
QVNTRVJUIGZhaWx1cmUgaW4gQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFZpc2libGVDb250ZW50
cygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNjI5MSkKKysrIFNvdXJjZS9X
ZWJLaXQvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgU0VU
KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9k
ZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyIgogICAgICIk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxp
bnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAgICAgIiR7SkFWQVNDUklQ
VENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUi
CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMDYyOTEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNSBAQAorMjAxMi0wMS0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgor
CisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENoYW5nZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUgYSBuZXcgZGly
ZWN0b3J5IGluIEphdmFTY3JpcHRDb3JlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZs
L0NNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAxLTMwICBBbGV4aXMgTWVuYXJkICA8YWxleGlzLm1l
bmFyZEBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEFkZCBteXNlbGYgdG8g
Q1NTLCBHU3RyZWFtZXIsIFF0IHJlbGF0ZWQgd2F0Y2hsaXN0cy4KSW5kZXg6IFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVu
ZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNjI5MSkKKysrIFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjgsMTAg
KzY4LDEyIEBAIFNFVChEdW1wUmVuZGVyVHJlZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0FQSQogICAgICR7
SkFWQVNDUklQVENPUkVfRElSfS9hc3NlbWJsZXIKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
Ynl0ZWNvZGUKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGZnCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2hlYXAKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIKICAg
ICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0CisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xs
aW50CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUKICAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vd3Rm
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124619</attachid>
            <date>2012-01-30 15:56:09 -0800</date>
            <delta_ts>2012-01-31 19:28:44 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_74.diff</filename>
            <type>text/plain</type>
            <size>476005</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2Mjk1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwMCBA
QAorMjAxMi0wMS0zMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi52c3Byb3BzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDog
QWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Omlz
U2V0KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAg
IChDYWxsTGlua1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmVzY2FwZVF1b3Rlcyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWlu
Z0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RXZh
bENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6
amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1w
bCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dXNlc09wY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAg
KCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0Q29tcGls
ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
aWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxp
a2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlr
ZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1
ZW50RXhpdFNpdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29v
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50
RXhlY3V0ZUNvdW50ZXIpOgorICAgICAgICAoUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChF
dmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBi
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6
CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OkdldEJ5SWRTdGF0dXMpOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjp3YXNTZWVuSW5KSVQpOgorICAgICAgICAoR2V0QnlJZFN0YXR1
cyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgIChJbnN0cnVj
dGlvbik6CisgICAgICAgICgpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZv
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0lu
Zm86OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKExMSW50Q2FsbExpbmtJbmZvKToKKyAg
ICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6OkxM
SW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAg
IChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAoUHV0QnlJZFN0YXR1cyk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0
UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaCk6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0
UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRD
b21waWxlci5jcHA6CisgICAgICAgICgpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKCk6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChBbGxvY2F0aW9uU3BhY2UpOgorICAgICAgICAoKToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAo
SGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAoSlNDOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFt
ZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJy
ZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZy
YW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmls
ZSk6CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKToKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAg
KiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpJVENvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2Rl
Ojppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAg
ICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToK
KyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93
KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RV
Ql9GVU5DVElPTik6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJ
VC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1v
bi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChEYXRhKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50
RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRF
dmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2lu
dCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBv
aW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxl
cik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9u
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpM
TEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQv
TExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChK
U0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmVudHJ5T1NSKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJlc29sdmVHbG9iYWwpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9z
dENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRk
ZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludE9m
ZnNldHNFeHRyYWN0b3IpOgorICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDog
QWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3Ry
dWN0RW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZv
ckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpMTEludDo6ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20u
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRy
YWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb3B0LnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL3BhcnNlci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9yZWdp
c3RlcnMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2VsZl9oYXNoLnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3NldHRpbmdzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBv
ZmZsaW5lYXNtL3RyYW5zZm9ybS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYu
cmI6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVj
a0Zvcik6CisgICAgICAgIChDb21tb25TbG93UGF0aHMpOgorICAgICAgICAoSlNDOjpDb21tb25T
bG93UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3cpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJs
ZS5jcHA6CisgICAgICAgIChKU0M6OmpldHRpc29uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
RXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6c2FtcGxpbmdEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpj
b21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29t
cGlsZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9y
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVj
dCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRl
cm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0
cnVjdEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAg
KEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAoRXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAo
UHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpwcmVwYXJlRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1bmN0
aW9uRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAg
ICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnRlYXJPZmYpOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
cnJheS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQXJyYXkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoKToKKyAgICAgICAgKEpT
Q2VsbCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0dsb2Jh
bERhdGEpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OnNjcmF0Y2hCdWZmZXJGb3JTaXpl
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAoSlNPYmplY3QpOgorICAgICAg
ICAoSlNGaW5hbE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcik6
CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAg
KEpTU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChUeXBlSW5mbyk6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmNwcDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKEpTVmFsdWUpOgorICAgICAgICAo
KToKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU1ZhcmlhYmxlT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMu
Y3BwOgorICAgICAgICAoT3B0aW9ucyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxp
emVPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKE9wdGlv
bnMpOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKFNjb3BlQ2hhaW5Ob2RlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgor
ICAgICAgICAoSlNDKToKKyAgICAgICAgKFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFN0cnVjdHVyZUNoYWlu
KToKKyAgICAgICAgKiB3dGYvSW5saW5lQVNNLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6
CisgICAgICAgICogd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oOgorICAgICAgICAoU2VudGluZWxM
aW5rZWRMaXN0KToKKyAgICAgICAgKFdURjo6U2VudGluZWxMaW5rZWRMaXN0Ojppc0VtcHR5KToK
KyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoU3RyaW5nSW1wbCk6CisgICAgICAgICgpOgorCiAyMDEyLTAxLTMwICBEYXZpZCBMZXZpbiAg
PGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVc2luZyBPUyhXSU4pIG9yIE9TKE1BQykg
c2hvdWxkIGNhdXNlIGEgYnVpbGQgZXJyb3IuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAxMDYyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAgU0VUKEphdmFTY3Jp
cHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2Rl
YnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGlu
dCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3BhcnNlciIKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZSIK
QEAgLTk1LDYgKzk2LDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBpbnRlcnBy
ZXRlci9SZWdpc3RlckZpbGUuY3BwCiAKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAK
KyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKICAgICBqaXQvSklUQXJpdGhtZXRpYzMy
XzY0LmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljLmNwcAogICAgIGppdC9KSVRDYWxsMzJfNjQu
Y3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAxMDYy
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDYgKzU3LDcgQEAgamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlciBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdCBcCisJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50IFwK
IAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyIFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDYyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQCBq
YXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9T
SDRBc3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVu
dGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBcCkBAIC0x
MDIsNiArMTAzLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENh
bGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGluZUluZm8u
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8u
aCBcCkBAIC0yNzcsNiArMjc5LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Db21wYWN0SklUQ29kZU1hcC5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRB
cml0aG1ldGljLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQu
Y3BwIFwKQEAgLTMwMCw2ICszMDQsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4zMi9zdGRi
b29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4zMi9zdGRpbnQuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggXApAQCAtMzUwLDYgKzM1NSw3
IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fs
bERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggXAor
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBcCkBAIC0zNzgs
NiArMzg0LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRp
b25IYXJuZXNzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5w
cmkJKHJldmlzaW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAgSU5DTFVERVBBVEggKz0g
XAogICAgICQkU09VUkNFX0RJUi9kZWJ1Z2dlciBcCiAgICAgJCRTT1VSQ0VfRElSL2ludGVycHJl
dGVyIFwKICAgICAkJFNPVVJDRV9ESVIvaml0IFwKKyAgICAkJFNPVVJDRV9ESVIvbGxpbnQgXAog
ICAgICQkU09VUkNFX0RJUi9wYXJzZXIgXAogICAgICQkU09VUkNFX0RJUi9wcm9maWxlciBcCiAg
ICAgJCRTT1VSQ0VfRElSL3J1bnRpbWUgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Rh
cmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJ
KHJldmlzaW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcgQEAgU09VUkNFUyArPSBcCiAgICAgaW50ZXJw
cmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhl
ZFZNUG9vbC5jcHAgXAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBcCisgICAgaml0
L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKICAgICBqaXQvSklUQXJpdGhtZXRpYy5jcHAgXAog
ICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwKICAgICBqaXQvSklUQ2FsbC5jcHAgXApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzU4LDYgKzE3NTgsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caml0XEhvc3RDYWxsUmV0dXJuVmFs
dWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxqaXRcSklULmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0xODQzLDYgKzE4NDcsMTQg
QEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKKwkJCU5hbWU9ImxsaW50Igor
CQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGxsaW50XExMSW50RGF0YS5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKIAkJCU5hbWU9Imlu
dGVycHJldGVyIgogCQkJPgogCQkJPEZpbGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24u
dnNwcm9wcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMJKHJl
dmlzaW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwkod29ya2lu
ZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJPFRvb2wKIAkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7Li4v
Li4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL2Rm
Zy87Li4vLi4vaml0LzsuLi8uLi9ydW50aW1lLzsuLi8uLi90b29scy87Li4vLi4vYnl0ZWNvZGUv
Oy4uLy4uL2ludGVycHJldGVyLzsuLi8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fzc2Vt
Ymxlci87Li4vLi4vZGVidWdnZXIvOy4uLy4uL2hlYXAvOyZxdW90OyQoV2ViS2l0TGlicmFyaWVz
RGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHBy
aXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7
JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVv
dDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90Ozsm
cXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OyIKKwkJQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQ
SS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL2RmZy87Li4vLi4vaml0
LzsuLi8uLi9sbGludC87Li4vLi4vcnVudGltZS87Li4vLi4vdG9vbHMvOy4uLy4uL2J5dGVjb2Rl
LzsuLi8uLi9pbnRlcnByZXRlci87Li4vLi4vd3RmLzsuLi8uLi9wcm9maWxlcjsuLi8uLi9hc3Nl
bWJsZXIvOy4uLy4uL2RlYnVnZ2VyLzsuLi8uLi9oZWFwLzsmcXVvdDskKFdlYktpdExpYnJhcmll
c0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxw
cml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlJnF1b3Q7
OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1
b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7
JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDsiCiAJCVBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPSJfX1NURF9DIgogCQlGb3JjZWRJbmNsdWRlRmlsZXM9IklD
VVZlcnNpb24uaCIKIAkvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZpbGVzLmNtZAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3Jl
L2NvcHktZmlsZXMuY21kCShyZXZpc2lvbiAxMDYyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL2NvcHktZmlsZXMuY21kCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIGZvciAlJWQgaW4gKAogICAgIGRlYnVnZ2Vy
CiAgICAgaW50ZXJwcmV0ZXIKICAgICBqaXQKKyAgICBsbGludAogICAgIHBhcnNlcgogICAgIHBy
b2ZpbGVyCiAgICAgcnVudGltZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsMTUgQEAK
IAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwor
CQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLyA9IHsKKwkJCWlz
YSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2
ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhB
Z2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJ
CQkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAq
LywKKwkJCSk7CisJCQluYW1lID0gIkxMSW50IE9mZnNldHMiOworCQkJcHJvZHVjdE5hbWUgPSAi
RGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKIAkJNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCIC8qIERl
cml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKIAkJCWJ1
aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2NUZCM0Y3NzA5RDExRUJEMDBGNDlERUIgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkRlcml2ZWQgU291cmNl
cyIgKi87CkBAIC0xNCw2ICsyMyw5IEBACiAJCQkJNjVGQjNGNjUwOUQxMUU5MTAwRjQ5REVCIC8q
IEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk1RDM1REVFMTBDN0MxNDBCMDA4NjQ4
QjIgLyogR2VuZXJhdGUgRFRyYWNlIGhlYWRlciAqLywKIAkJCSk7CisJCQlkZXBlbmRlbmNpZXMg
PSAoCisJCQkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kg
Ki8sCisJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcHJvZHVjdE5hbWUg
PSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJfTsKQEAgLTQ4LDYgKzYwLDEwIEBACiAJCTBCQUM5NEEw
MTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0MDBD
RjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCQ0Q4MzU3MTQ4NTg0NTIwMEVBMjAwMyAv
KiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEy
OTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6
ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLzsg
fTsKKwkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk2MTRCQ0Y0
NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExM
SW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi87IH07CisJ
CTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRG
IC8qIExMSW50VGh1bmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBNTE0QkNGNTA0
MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E4
MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBF
eHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5m
by5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01
OCw5ICs3NCwxMyBAQAogCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExp
bmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjcxNEJDRjhF
MTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFs
UmVzb2x2ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0
ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29k
ZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwRkM0NTgxNEJEMTVG
MTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENv
bW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTZENzI2MTQy
QzM5QzAwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rv
ci5jcHAgKi87IH07CiAJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjY2MTRC
RTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhlY3V0
aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RDE0QkU3
MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8q
IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVD
b252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjI0MkRBNzEz
RjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRD
IC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU2RjE0NzM4RjMxMDAxMjFFNEYgLyogREZHQ29k
ZUJsb2Nrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU3MDE0NzM4RjM1MDAx
MjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nr
cy5jcHAgKi87IH07CkBAIC03MSw2ICs5MSwxOSBAQAogCQkwRjQzMTczODE0NkJBQzY5MDA3RTM4
OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0
NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwN0Yx
NEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBBMzE0
QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJ
bnRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RjE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJf
RkxBR1MgPSAiLVduby11bnVzZWQtcGFyYW1ldGVyIjsgfTsgfTsKKwkJMEY0NjgwQTUxNEJBN0Y4
RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVy
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
NDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTExNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi87IH07CisJCTBGNDY4MEE4
MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8q
IExMSW50RXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAv
KiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0IxNEJCQjE3
MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExM
SW50T2ZmbGluZUFzbUNvbmZpZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVy
cHJldGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLzsg
fTsKKwkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM4MTRC
QkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcy
IC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLzsgfTsK
KwkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcy
IC8qIExMSW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4
MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLzsgfTsKKwkJ
MEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEQxMTRCQkM1Rjgw
MEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1NUYwRjQxNEQxMDYzOTAwQUM3NjQ5IC8qIEFi
c3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovOyB9OwogCQkw
RjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8q
IEFic3RyYWN0UEMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXpl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RjA4
Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzg3LDcgKzQyMCw3IEBA
CiAJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUUxMTE3RTU3ODEwMERG
NUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlC
RTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87IH07CiAJCTg2QkIwOUMxMTM4
RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRj
aC5oICovOyB9OwotCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5
MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyB9OworCQk4NkMzNkVFQTBF
RTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNy
b0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERDEx
QTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9OwogCQk4NkM1NjhF
MTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAg
LyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdG
MCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICov
OyB9OwpAQCAtNzU0LDYgKzc4NywyMCBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTBGNDY4MEIx
MTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2Eg
PSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZF
ODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOwor
CQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzI7CisJCQly
ZW1vdGVJbmZvID0gIkxMSW50IE9mZnNldHMiOworCQl9OworCQkwRjQ2ODBCMzE0QkE4MjE0MDBC
RkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFp
bmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFB
QzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUds
b2JhbElEU3RyaW5nID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9
IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJMTQxMjE0QkUwQTQ5MTkwRTAwNDgw
MjU1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5l
ckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMw
NyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTc5OSw2ICs4NDYsMTUgQEAKIC8qIEVuZCBQQlhD
b250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxl
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEvOwor
CQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKIAkJNURCQjE1MTExMzFEMEIx
MzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb3B5
RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7CkBAIC04MzksNiArODk1
LDEwIEBACiAJCTBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZl
cmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFJlc3RyaWN0
aW9uVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJDRDgzNTQxNDg1
ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZW1wb3JhcnlDaGFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9p
bnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RW50cnlw
b2ludHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5
cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RW50cnlwb2lu
dHMuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50VGh1bmtzLmNwcDsgcGF0
aCA9IGxsaW50L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50VGh1bmtzLmg7IHBhdGggPSBsbGludC9MTEludFRodW5r
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBNTE0QkNGNTA0MDA4ODVC
NEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVR5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTgxNEJDRjU1RTAwODg1
QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhh
bmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0FBMTRCQ0Y1
QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTg0OSw5ICs5MDksMTMgQEAKIAkJMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8q
IE1ldGhvZENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZXRob2RDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgz
QjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbFJlc29sdmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0
VG9CeXRlY29kZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxs
UmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRDYWxsTGlua0luZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1v
blNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25TbG93
UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNkQ3MjQxNDJDMzlBMjAw
Q0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIxQzI2
NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpJVERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIx
QzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVj
dXRpb25IYXJuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGlv
bkhhcm5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0UxNEJFQUE4
MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQnl0ZWNvZGVDb252ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrUmVmZXJlbmNlSGFydmVz
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZEMTQ3MzhGMkUwMDEy
MUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC04NjIsNiArOTI2LDIwIEBACiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAv
KiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlz
dGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDdGMTRC
QTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9m
ZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsg
cGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEV4Y2VwdGlv
bnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuaDsg
cGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50SGVscGVycy5jcHA7IHBhdGggPSBs
bGludC9MTEludEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IExMSW50SGVscGVycy5oOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4
MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBMTEludENvbW1vbi5oOyBwYXRoID0gbGxpbnQvTExJbnRDb21tb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8q
IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMTEludE9mZmxpbmVBc21Db25maWcuaDsgcGF0aCA9IGxsaW50L0xMSW50T2ZmbGluZUFzbUNv
bmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNzE0QkJCMTY5MDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmNwcDsgcGF0aCA9IGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBD
ODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmg7IHBhdGggPSBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4
MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTExJbnREYXRhLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3
MiAvKiBMTEludERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRE
YXRhLmg7IHBhdGggPSBsbGludC9MTEludERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQxMTRCQkM1RjgwMEJG
RTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RQQy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0UEMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5dGVD
b2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNvZGVD
YWNoZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVDb2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE1ODcsNiArMTY2NSwxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ug
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICov
CisJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNh
ID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFtZXdv
cmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTY0NSw2ICsxNzMwLDcgQEAKIAkJCQkxNDEyMTEy
MDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBC
QUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVz
dFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjc1LDYgKzE3NjEsNyBAQAogCQkJCUY1QzI5MEU2MDI4NEY5
OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4MDZB
NDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBG
NyAvKiBjb25maWcuaCAqLywKKwkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQg
Ki8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0Ix
MjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUw
MEYxRjY4MSAvKiBieXRlY29kZSAqLywKQEAgLTE3MTQsNiArMTgwMSwyOCBAQAogCQkJdGFiV2lk
dGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUy
NzIgLyogbGxpbnQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLywK
KwkJCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovLAor
CQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8sCisJCQkJ
MEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8sCisJCQkJMEY0Njgw
Q0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0YxNEJC
QjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovLAorCQkJCTBGNDY4MEM1MTRCQkIxNjkwMEJG
RTI3MiAvKiBMTEludENvbW1vbi5oICovLAorCQkJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAv
KiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLywKKwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUy
NzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8sCisJCQkJMEY0NjgwQzgxNEJCQjE2OTAw
QkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8sCisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50SGVscGVycy5oICovLAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGludDsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3MjYwMDQ4
MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC0xNzQ4LDYgKzE4NTcsOCBAQAogCQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkgLyogaml0
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2ODBE
MDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJMEY0
NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJCQkw
RjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJMEY0
NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4MkUz
NzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTIxNzUsNiAr
MjI4Niw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3OTE0QkU3Mjcz
MDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovLAorCQkJCTBGMjFDMjdBMTRC
RTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8sCiAJCQkJMEYxNUYxNUQxNEI3
QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovLAogCQkJCUJDRjYwNTExMEUyMDNF
RjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2
NEQgLyogQXJnTGlzdC5oICovLApAQCAtMjU0Nyw2ICsyNjYwLDggQEAKIAkJOTY5QTA3OEYwRUQx
RDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252
ZW50aW9ucy5oICovLAorCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxM
aW5rSW5mby5oICovLAogCQkJCTBGOTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0
YXR1cy5jcHAgKi8sCiAJCQkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3Rh
dHVzLmggKi8sCiAJCQkJMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMu
Y3BwICovLApAQCAtMzA5Nyw3ICszMjEyLDE2IEBACiAJCQkJODY3MDRCOEExMkRCQTMzNzAwQTlG
RTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI0MzEyREI4QTgx
MDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVG
MTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRp
b25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJ
bnRDb21tb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAv
KiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENEMTRC
QkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlw
b2ludHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBM
TEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRG
IC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVC
NEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIw
MDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMDYs
NyArMzIzMCwxMSBAQAogCQkJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxs
TGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAv
KiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJDRjk1
RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8u
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVj
dXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2
NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMy
N0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGN0IyOTRBMTRDM0NEMjkwMDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRDMTRDM0NENDMwMDdDM0RCMSAvKiBERkdC
eXRlQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMjUsNiArMzI1MywyNCBAQAogLyog
RW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYTmF0aXZl
VGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50
T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1
aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4
dHJhY3RvciIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODA4QjE0QkE3RTVFMDBC
RkUyNzIgLyogU291cmNlcyAqLywKKwkJCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJh
bWV3b3JrcyAqLywKKwkJCQkwRjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICov
LAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAor
CQkJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAor
CQkJKTsKKwkJCW5hbWUgPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0TmFt
ZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAwRjQ2
ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJ
cHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKIAkJMTQx
MjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRp
dmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQxMjExMzkwQTQ4Nzk4NDAw
NDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJt
aW5pZG9tIiAqLzsKQEAgLTMyNTEsMTEgKzMzOTcsMjkgQEAKIAkJCQkxNEJENTlCRTBBM0U4Rjkw
MDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk5MzJGNUJEQTA4MjJBMUM3MDA3MzY5NzUgLyog
anNjICovLAogCQkJCTY1MTEyMkY3MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAor
CQkJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3Ig
Ki8sCisJCQkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8sCiAJ
CQkpOwogCQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhT
aGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUy
NzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU2hlbGxT
Y3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoU1JDUk9PVCkvbGxpbnQv
TG93TGV2ZWxBc3NlbWJsZXIuYXNtIiwKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIERlcml2
ZWQgU291cmNlcyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNUU19E
SVIpL0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmgiLAorCQkJKTsKKwkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9z
aDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xM
SW50T2Zmc2V0cy9cIlxuXG4vdXNyL2Jpbi9lbnYgcnVieSBcIiR7U1JDUk9PVH0vb2ZmbGluZWFz
bS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiXCIgXCIke1NSQ1JPT1R9L2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtXCIgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRz
L0xMSW50RGVzaXJlZE9mZnNldHMuaFwiXG4iOworCQl9OwogCQkzNzEzRjAxNDE0MjkwNTI0MDAz
NjM4N0YgLyogQ2hlY2sgRm9yIEluYXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xhc3MgTmFtZXMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzM2MSw3ICszNTI1LDcgQEAKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4v
c2g7Ci0JCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9kb2NzXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNU
U19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlXCJcblxuL2Jpbi9sbiAtc2ZoIFwi
JHtTUkNST09UfVwiIEphdmFTY3JpcHRDb3JlXG5leHBvcnQgSmF2YVNjcmlwdENvcmU9XCJKYXZh
U2NyaXB0Q29yZVwiXG5leHBvcnQgQlVJTFRfUFJPRFVDVFNfRElSPVwiLi4vLi5cIlxuXG5tYWtl
IC0tbm8tYnVpbHRpbi1ydWxlcyAtZiBcIkphdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2VcIiAtaiBgL3Vzci9zYmluL3N5c2N0bCAtbiBody5uY3B1YFxuIjsKKwkJCXNoZWxsU2NyaXB0
ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL2RvY3NcIlxuY2QgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmVcIlxuXG4vYmluL2xuIC1zZmggXCIke1NSQ1JPT1R9XCIgSmF2YVNj
cmlwdENvcmVcbmV4cG9ydCBKYXZhU2NyaXB0Q29yZT1cIkphdmFTY3JpcHRDb3JlXCJcbmV4cG9y
dCBCVUlMVF9QUk9EVUNUU19ESVI9XCIuLi8uLlwiXG5cbm1ha2UgLS1uby1idWlsdGluLXJ1bGVz
IC1mIFwiSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNyL3NiaW4v
c3lzY3RsIC1uIGh3Lm5jcHVgXG5cbi91c3IvYmluL2VudiBydWJ5IEphdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYXNtLnJiIEphdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtICR7QlVJTFRfUFJPRFVDVFNfRElSfS9KU0NMTEludE9mZnNldHNFeHRyYWN0b3IgTExJbnRB
c3NlbWJseS5oXG4iOwogCQl9OwogCQk5MzE5NTg2QjA5RDlGOTFBMDBBNTZGRDQgLyogQ2hlY2sg
Rm9yIEdsb2JhbCBJbml0aWFsaXplcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1
aWxkUGhhc2U7CkBAIC0zMzk2LDYgKzM1NjAsMTQgQEAKIC8qIEVuZCBQQlhTaGVsbFNjcmlwdEJ1
aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0
aW9uICovCisJCTBGNDY4MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovID0geworCQkJ
aXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUQwQTQ4NzkzQzAw
NDgwMjU1IC8qIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsK
IAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zNjUzLDcgKzM4MjUsMTQgQEAK
IAkJCQk4NjcwNEI4NjEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4NjcwNEI4OTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODY3MDRCNDIxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVj
a2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBM
TEludEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZF
MjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODA4MzE0
QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJl
dHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0
RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlDMTRC
Q0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBC
ODNCMDE0QkNGNzE2MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMEI4M0I0MTRCQ0Y4NjAwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRjY5RTg2QzMxNEM2RTU1MTAwMkMyQzYyIC8qIE51bWJlck9mQ29y
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNjc4LDYgKzM4NTcsMTYgQEAKIC8qIEVuZCBQQlhT
b3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVu
Y3kgc2VjdGlvbiAqLworCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVw
ZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQg
PSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLzsKKwkJCXRhcmdl
dFByb3h5ID0gMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLzsKKwkJfTsKKwkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0g
MEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsK
KwkJCXRhcmdldFByb3h5ID0gMEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSAqLzsKKwkJfTsKIAkJMTQxMjE0QkYwQTQ5MTkwRTAwNDgwMjU1IC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwogCQkJ
dGFyZ2V0ID0gMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi87CkBAIC0zNzEx
LDYgKzM5MDAsMTQ4IEBACiAvKiBFbmQgUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMEY0NjgwOTYxNEJB
N0U1RTAwQkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9
IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9Q
SEFTRV9TVFJJUCA9IE5POworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJ
CQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElP
TlMgPSBZRVM7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBS
T0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJIkRFQlVHPTEiLAorCQkJCQkiJChpbmhlcml0
ZWQpIiwKKwkJCQkpOworCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gTk87CisJCQkJ
R0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdD
Q19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRf
TUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBF
ID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVS
X1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChC
VUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hf
UEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJ
CQkJT05MWV9BQ1RJVkVfQVJDSCA9IFlFUzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRf
TkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BB
VEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJf
U0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODA5
NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJf
UEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJ
CUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0g
ImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsK
KwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9
IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9f
MzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RP
VFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJ
R0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhT
W2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RT
X0RJUikvTExJbnRPZmZzZXRzJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlN
QUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRB
UkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFS
Q0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhF
QURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJ
MEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VB
UkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJ
VCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05f
Rk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQg
PSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0Nf
VkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dB
Uk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNT
SU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZ
RVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VB
UkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxU
X1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRI
UykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQ
Uk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJ
CQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElS
KS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9
IFByb2ZpbGluZzsKKwkJfTsKKwkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rp
b24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAi
JChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOwor
CQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdD
Q19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQ
VElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0u
Y2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJ
CQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJO
X0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9
IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJ
CQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJ
CSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5U
X1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJ
CQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGlj
dSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRI
UykiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBBRDE0QkE3
RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291
cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MEFFMTRC
QTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVk
IFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4
MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0g
IkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9
OworCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9E
VUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9k
dWN0aW9uOworCQl9OwogCQkxNDEyMTEzQTBBNDg3OTg0MDA0ODAyNTUgLyogRGVidWcgKi8gPSB7
CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CkBA
IC0zOTUyLDYgKzQyODMsMjggQEAKIC8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkwRjQ2ODA5
QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRp
dmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIgKi8gPSB7CisJCQlpc2EgPSBYQ0Nv
bmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODA5
NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwOTcxNEJBN0U1RTAwQkZF
MjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2Zp
bGluZyAqLywKKwkJCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywK
KwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0
Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBBQzE0QkE3RkQ5
MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJn
ZXQgIkxMSW50IE9mZnNldHMiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsK
KwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcy
IC8qIERlYnVnICovLAorCQkJCTBGNDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICov
LAorCQkJCTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY0
NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1l
ID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLyA9IHsK
IAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0g
KApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJ
KHJldmlzaW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlu
a0J1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjZGVmaW5lIEdMT0JB
TF9USFVOS19JRCByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4o
LTEpKQogI2RlZmluZSBSRUdFWFBfQ09ERV9JRCByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0
aWNfY2FzdDxpbnRwdHJfdD4oLTIpKQogCi0jaW5jbHVkZSA8TWFjcm9Bc3NlbWJsZXIuaD4KKyNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
CiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUNvbnZlbnRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBCeXRlY29kZUNvbnZlbnRpb25zX2gKKyNkZWZpbmUgQnl0ZWNvZGVD
b252ZW50aW9uc19oCisKKy8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVy
YXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoK
Ky8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhl
IENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVn
aXN0ZXJGaWxlLmguCisvLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5k
aWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9y
YXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCisvLyAgICAgIDB4NDAwMDAwMDAt
MHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRy
aWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCitzdGF0aWMgY29uc3Qg
aW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKKworI2VuZGlmIC8v
IEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDEwNjI5NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDE3ICsyNyw0MCBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAK
ICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgog
CiBuYW1lc3BhY2UgSlNDIHsKIAorQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFS
QU0oYnl0ZWNvZGVJbmRleCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRl
Y29kZUluZGV4OworICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBpbnN0cnVj
dGlvbls0XS51LmNhbGxMaW5rSW5mbzsKKyAgICAKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMo
Y2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5nZXQoKSwgZmFsc2UpOworI2Vsc2UKKyAgICBy
ZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFsc2UpOworI2VuZGlmCit9CisKIENhbGxMaW5rU3Rh
dHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9j
ayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lmIEVOQUJMRShKSVQpICYm
IEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoCi0gICAg
ICAgIHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KS5sYXN0U2Vl
bkNhbGxlZS5nZXQoKSwKLSAgICAgICAgcHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2Uo
Ynl0ZWNvZGVJbmRleCkpOworICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZDYWxsTGlu
a0luZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ss
IGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIGlmIChwcm9maWxlZEJsb2NrLT5jb3VsZFRha2VT
bG93Q2FzZShieXRlY29kZUluZGV4KSkKKyAgICAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAs
IHRydWUpOworICAgIAorICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IHByb2ZpbGVkQmxvY2stPmdl
dENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KS5sYXN0U2VlbkNhbGxlZS5nZXQoKTsKKyAgICBp
ZiAoIXRhcmdldCkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9j
aywgYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdl
dCwgZmFsc2UpOwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFsc2UpOwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0
dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtTdGF0dXMuaAkocmV2aXNpb24gMTA2Mjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE1ICs0NywxNyBA
QCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29k
ZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAgICAgCi0gICAgYm9vbCBpc1NldCgp
IGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0OyB9CisgICAgYm9vbCBpc1NldCgpIGNvbnN0
IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0IHx8IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAK
LSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2NhbGxUYXJnZXQ7IH0KKyAg
ICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAg
Ym9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1Bh
dGg7IH0KICAgICAKICAgICBKU0Z1bmN0aW9uKiBjYWxsVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4g
bV9jYWxsVGFyZ2V0OyB9CiAgICAgCiBwcml2YXRlOgorICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1
cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwor
ICAgIAogICAgIEpTRnVuY3Rpb24qIG1fY2FsbFRhcmdldDsKICAgICBib29sIG1fY291bGRUYWtl
U2xvd1BhdGg7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVC
bG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5jcHAJKHJldmlzaW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIK
ICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUu
aCIKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtNTksOCArNjAsNiBAQCBuYW1lc3BhY2UgSlNDIHsK
IHVzaW5nIG5hbWVzcGFjZSBERkc7CiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwg
RU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQogc3RhdGljIFVTdHJpbmcgZXNjYXBlUXVvdGVzKGNv
bnN0IFVTdHJpbmcmIHN0cikKIHsKICAgICBVU3RyaW5nIHJlc3VsdCA9IHN0cjsKQEAgLTM1OCwx
MCArMzU3LDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykgY28KICAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc3RydWN0aW9ucygpLnNpemUoKTsgaSArPSBvcGNv
ZGVMZW5ndGhzW2V4ZWMtPmludGVycHJldGVyKCktPmdldE9wY29kZUlEKGluc3RydWN0aW9ucygp
W2ldLnUub3Bjb2RlKV0pCiAgICAgICAgICsraW5zdHJ1Y3Rpb25Db3VudDsKIAotICAgIHByaW50
ZigiJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsg
JWQgY2FsbGVlIHJlZ2lzdGVyKHMpXG5cbiIsCisgICAgcHJpbnRmKCIlbHUgbV9pbnN0cnVjdGlv
bnM7ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIo
cyk7ICVkIHZhcmlhYmxlKHMpXG5cbiIsCiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxv
bmc+KGluc3RydWN0aW9uQ291bnQpLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
PihpbnN0cnVjdGlvbnMoKS5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKSwKLSAgICAgICAg
dGhpcywgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgICAgIHRo
aXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMsIG1fbnVtVmFycyk7CiAK
ICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciBiZWdpbiA9IGluc3RydWN0
aW9ucygpLmJlZ2luKCk7CiAgICAgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gaW5zdHJ1Y3Rpb25zKCkuZW5kKCk7CkBAIC04OTgsNiArODk3LDE0IEBAIHZvaWQgQ29k
ZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJ
ZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uIik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX2RpcmVjdDogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24s
IGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Iik7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDog
eworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5
X2lkX3RyYW5zaXRpb25fbm9ybWFsIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQog
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9nZW5lcmljOiB7CiAgICAgICAgICAgICBwcmludFB1
dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIpOwogICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xMjg1LDggKzEyOTIsNiBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChF
eGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgfQogfQogCi0jZW5kaWYgLy8gIWRlZmluZWQoTkRFQlVH
KSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotCiAjaWYgRFVNUF9DT0RFX0JMT0NLX1NUQVRJ
U1RJQ1MKIHN0YXRpYyBIYXNoU2V0PENvZGVCbG9jayo+IGxpdmVDb2RlQmxvY2tTZXQ7CiAjZW5k
aWYKQEAgLTE0NTYsNiArMTQ2MSw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQYXJzZWRC
bG9ja1RhZywKIHsKICAgICBzZXROdW1QYXJhbWV0ZXJzKG90aGVyLm51bVBhcmFtZXRlcnMoKSk7
CiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOworICAgIGppdEFmdGVyV2FybVVwKCk7CiAgICAg
CiAgICAgaWYgKG90aGVyLm1fcmFyZURhdGEpIHsKICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5l
Y2Vzc2FyeSgpOwpAQCAtMTUwNCw2ICsxNTEwLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2Ny
aXB0RXhlY3V0YWJsZSogbwogICAgIEFTU0VSVChtX3NvdXJjZSk7CiAgICAgCiAgICAgb3B0aW1p
emVBZnRlcldhcm1VcCgpOworICAgIGppdEFmdGVyV2FybVVwKCk7CiAKICNpZiBEVU1QX0NPREVf
QkxPQ0tfU1RBVElTVElDUwogICAgIGxpdmVDb2RlQmxvY2tTZXQuYWRkKHRoaXMpOwpAQCAtMTUy
MSw3ICsxNTI4LDExIEBAIENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiAjaWYgRU5BQkxFKFZFUkJP
U0VfVkFMVUVfUFJPRklMRSkKICAgICBkdW1wVmFsdWVQcm9maWxlcygpOwogI2VuZGlmCi0gICAg
CisKKyNpZiBFTkFCTEUoTExJTlQpICAgIAorICAgIHdoaWxlIChtX2luY29taW5nTExJbnRDYWxs
cy5iZWdpbigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQorICAgICAgICBtX2luY29t
aW5nTExJbnRDYWxscy5iZWdpbigpLT5yZW1vdmUoKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQp
CiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBXZSBtYXkgYmUgZGVzdHJveWVkIGJlZm9yZSBhbnkg
Q29kZUJsb2NrcyB0aGF0IHJlZmVyIHRvIHVzIGFyZSBkZXN0cm95ZWQuCiAgICAgLy8gQ29uc2lk
ZXIgdGhhdCB0d28gQ29kZUJsb2NrcyBiZWNvbWUgdW5yZWFjaGFibGUgYXQgdGhlIHNhbWUgdGlt
ZS4gVGhlcmUKQEAgLTE3MzMsOCArMTc0NCw2OCBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVV
bmNvbmRpdGlvbmFsbHkoCiAjZWxzZQogICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VVbmxp
bmtpbmcgPSBmYWxzZTsKICNlbmRpZgotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAg
ICAKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9n
bG9iYWxEYXRhLT5pbnRlcnByZXRlcjsKKyAgICAvLyBpbnRlcnByZXRlci0+ZW5hYmxlZCgpIHJl
dHVybnMgdHJ1ZSBpZiB0aGUgb2xkIEMrKyBpbnRlcnByZXRlciBpcyBlbmFibGVkLiBJZiB0aGF0
J3MgZW5hYmxlZAorICAgIC8vIHRoZW4gd2UncmUgbm90IHVzaW5nIExMSW50LgorICAgIGlmICgh
aW50ZXJwcmV0ZXItPmVuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9w
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7
CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25z
KClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV07CisgICAgICAgICAgICBzd2l0Y2gg
KGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkpIHsK
KyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWQ6CisgICAgICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVy
ZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkp
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmICh2ZXJib3Nl
VW5saW5raW5nKQorICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IHBy
b3BlcnR5IGFjY2VzcyB3aXRoIHN0cnVjdHVyZSAlcC5cbiIsIGN1ckluc3RydWN0aW9uWzRdLnUu
c3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0
cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzVdLnUub3Bl
cmFuZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZChj
dXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgICAgICAgICAg
JiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisg
ICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzddLnUu
c3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykgeworICAgICAgICAgICAgICAgICAgICBw
cmludGYoIkNsZWFyaW5nIExMSW50IHB1dCB0cmFuc2l0aW9uIHdpdGggc3RydWN0dXJlcyAlcCAt
PiAlcCwgY2hhaW4gJXAuXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VySW5zdHJ1
Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBj
dXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVy
ZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJl
LmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVD
aGFpbi5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2Rl
ID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVf
dCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBz
aXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZp
bnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAg
ICAgQVNTRVJUKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9w
Y29kZSkgPT0gb3BfcmVzb2x2ZV9nbG9iYWwKKyAgICAgICAgICAgICAgICAgICB8fCBpbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWMpOworICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvblszXS51
LnN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVy
ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBwcmludGYo
IkNsZWFyaW5nIExMSW50IGdsb2JhbCByZXNvbHZlIGNhY2hlIHdpdGggc3RydWN0dXJlICVwLlxu
IiwgY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICAgICAgY3Vy
SW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgIGN1ckluc3Ry
dWN0aW9uWzRdLnUub3BlcmFuZCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAg
ICAgICBpZiAobV9sbGludENhbGxMaW5rSW5mb3NbaV0uaXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNN
YXJrZWQobV9sbGludENhbGxMaW5rSW5mb3NbaV0uY2FsbGVlLmdldCgpKSkgeworICAgICAgICAg
ICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQorICAgICAgICAgICAgICAgICAgICBwcmludGYo
IkNsZWFyaW5nIExMSW50IGNhbGwgZnJvbSAlcC5cbiIsIHRoaXMpOworICAgICAgICAgICAgICAg
IG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKCEhbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUgJiYgIUhl
YXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlLmdldCgp
KSkKKyAgICAgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxl
ZS5jbGVhcigpOworICAgICAgICB9CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKwog
I2lmIEVOQUJMRShERkdfSklUKQogICAgIC8vIENoZWNrIGlmIHdlJ3JlIG5vdCBsaXZlLiBJZiB3
ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAgICAgaWYgKCEoc2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVM
aXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBtX2RmZ0RhdGEtPmxpdmVuZXNzSGFzQmVlblByb3ZlZCkp
IHsKQEAgLTE4NTUsMTAgKzE5MjYsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRT
dHJvbmdSZWZlcgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlvbkRlY2xzLnNp
emUoKTsgKytpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9mdW5jdGlvbkRlY2xzW2ldKTsK
ICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCi0gICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAg
ICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7Ci0gICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVz
b2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICB2
aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUlu
c3RydWN0aW9uc1tpXV0pOworICAgIGlmIChtX2dsb2JhbERhdGEtPmludGVycHJldGVyLT5lbmFi
bGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHZpc2l0
U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uc1tpXV0pOworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZl
SW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2
aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUlu
c3RydWN0aW9uc1tpXV0pOworICAgIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBA
IC0xODY2LDggKzE5MzksOSBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1Jl
ZmVyCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGV4ZWN1dGFibGVzIHRoYXQgd2UgaGF2ZSBp
bmxpbmVkIGRvbid0IGRpZS4KICAgICAgICAgLy8gRklYTUU6IElmIHRoZXkgd291bGQgaGF2ZSBv
dGhlcndpc2UgZGllZCwgd2Ugc2hvdWxkIHByb2JhYmx5IHRyaWdnZXIgcmVjb21waWxhdGlvbi4K
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmxpbmVDYWxsRnJhbWVzKCkuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpbmxpbmVDYWxsRnJhbWVzKClb
aV0uZXhlY3V0YWJsZSk7Ci0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZy
YW1lcygpW2ldLmNhbGxlZSk7CisgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUmIGlubGluZUNh
bGxGcmFtZSA9IGlubGluZUNhbGxGcmFtZXMoKVtpXTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBw
ZW5kKCZpbmxpbmVDYWxsRnJhbWUuZXhlY3V0YWJsZSk7CisgICAgICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmaW5saW5lQ2FsbEZyYW1lLmNhbGxlZSk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYK
QEAgLTIwNjcsNiArMjE0MSwxMiBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogewog
ICAgIGlmICghIW1fYWx0ZXJuYXRpdmUpCiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPnVubGlua0Nh
bGxzKCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9s
bGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fbGxpbnRDYWxs
TGlua0luZm9zW2ldLmlzTGlua2VkKCkpCisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZv
c1tpXS51bmxpbmsoKTsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoIShtX2NhbGxMaW5rSW5mb3Mu
c2l6ZSgpIHx8IG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCkpKQogICAgICAgICByZXR1cm47
CiAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQpAQCAtMjA4MSwxMCArMjE2MSwz
OSBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogCiB2b2lkIENvZGVCbG9jazo6dW5s
aW5rSW5jb21pbmdDYWxscygpCiB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIHdoaWxlIChtX2lu
Y29taW5nTExJbnRDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQor
ICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpLT51bmxpbmsoKTsKKyNlbmRpZgor
ICAgIGlmIChtX2luY29taW5nQ2FsbHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAgICAg
UmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRoaXMpOwogICAgIHdoaWxlIChtX2luY29taW5n
Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2FsbHMuZW5kKCkpCiAgICAgICAgIG1faW5jb21p
bmdDYWxscy5iZWdpbigpLT51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CiB9
CisKK3Vuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAg
IGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
YmVnaW4pCisgICAgICAgICYmIHJldHVybkFkZHJlc3MudmFsdWUoKSA8PSBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KCZsbGludF9lbmQpKSB7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSk7
CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSA9PSB0aGlzKTsKKyAgICAgICAgQVNT
RVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOworICAgICAgICBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBleGVjLT5jdXJyZW50VlBDKCk7CisgICAgICAgIEFTU0VS
VChpbnN0cnVjdGlvbik7CisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldChpbnN0cnVjdGlv
bik7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisjZW5kaWYKKyAgICBp
ZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiAxOworICAgIFZlY3RvcjxDYWxsUmV0dXJu
T2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0gbV9yYXJlRGF0YS0+bV9jYWxs
UmV0dXJuSW5kZXhWZWN0b3I7CisgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCisgICAgICAg
IHJldHVybiAxOworICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0
ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5i
ZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5B
ZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7Cit9CiAjZW5kaWYKIAogdm9pZCBDb2Rl
QmxvY2s6OmNsZWFyRXZhbENhY2hlKCkKQEAgLTIxODAsMjQgKzIyODksNDUgQEAgYm9vbCBGdW5j
dGlvbkNvZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERgogCiB2b2lkIFByb2dyYW1Db2RlQmxvY2s6
OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2Vs
aW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUo
KSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0
PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXpl
ZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRXZhbENvZGVCbG9jazo6amV0dGlzb24o
KQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwor
ICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAg
QVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1
dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xvYmFs
RGF0YSgpKTsKIH0KIAogdm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24oKQogewotICAg
IEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VS
VChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRo
aXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGVGb3IoKmdsb2JhbERh
dGEoKSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsK
IH0KKwordm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSkt
PmppdENvbXBpbGUoZ2xvYmFsRGF0YSk7Cit9CisKK3ZvaWQgRXZhbENvZGVCbG9jazo6aml0Q29t
cGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRU
eXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0g
cmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4o
b3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEZ1
bmN0aW9uQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEp
Cit7CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KTsKKyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxl
Rm9yKGdsb2JhbERhdGEsIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2Rl
Rm9yQ2FsbCk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTIz
MDAsNiArMjQzMCwxOCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcFZhbHVlUHJvZmlsZXMoKQogfQog
I2VuZGlmCiAKK3ZvaWQgQ29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1
bml0eSgpCit7CisjaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpICYmICFFTkFCTEUoTExJTlQp
CisgICAgaWYgKEJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKKyAgICAg
ICAgcmV0dXJuOworICAgIGlmICghIWFsdGVybmF0aXZlKCkpCisgICAgICAgIGRpc2NhcmRCeXRl
Y29kZSgpOworICAgIGVsc2UKKyAgICAgICAgZGlzY2FyZEJ5dGVjb2RlTGF0ZXIoKTsKKyNlbmRp
ZgorfQorCiAjaWZuZGVmIE5ERUJVRwogYm9vbCBDb2RlQmxvY2s6OnVzZXNPcGNvZGUoT3Bjb2Rl
SUQgb3Bjb2RlSUQpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCShyZXZpc2lvbiAxMDYyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpZm5k
ZWYgQ29kZUJsb2NrX2gKICNkZWZpbmUgQ29kZUJsb2NrX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2Rl
Q29udmVudGlvbnMuaCIKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJDYWxs
UmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIK
QEAgLTUwLDYgKzUxLDcgQEAKICNpbmNsdWRlICJKSVRXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRl
ICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxM
SW50Q2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiTGluZUluZm8uaCIKICNpbmNsdWRlICJOb2Rl
cy5oIgogI2luY2x1ZGUgIlByZWRpY3Rpb25UcmFja2VyLmgiCkBAIC02NSwxNiArNjcsMTEgQEAK
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIK
IAotLy8gUmVnaXN0ZXIgbnVtYmVycyB1c2VkIGluIGJ5dGVjb2RlIG9wZXJhdGlvbnMgaGF2ZSBk
aWZmZXJlbnQgbWVhbmluZyBhY2NvcmRpbmcgdG8gdGhlaXIgcmFuZ2VzOgotLy8gICAgICAweDgw
MDAwMDAwLTB4RkZGRkZGRkYgIE5lZ2F0aXZlIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBv
aW50ZXIgYXJlIGVudHJpZXMgaW4gdGhlIGNhbGwgZnJhbWUsIHNlZSBSZWdpc3RlckZpbGUuaC4K
LS8vICAgICAgMHgwMDAwMDAwMC0weDNGRkZGRkZGICBGb3J3YXJkcyBpbmRpY2VzIGZyb20gdGhl
IENhbGxGcmFtZSBwb2ludGVyIGFyZSBsb2NhbCB2YXJzIGFuZCB0ZW1wb3JhcmllcyB3aXRoIHRo
ZSBmdW5jdGlvbidzIGNhbGxmcmFtZS4KLS8vICAgICAgMHg0MDAwMDAwMC0weDdGRkZGRkZGICBQ
b3NpdGl2ZSBpbmRpY2VzIGZyb20gMHg0MDAwMDAwMCBzcGVjaWZ5IGVudHJpZXMgaW4gdGhlIGNv
bnN0YW50IHBvb2wgb24gdGhlIENvZGVCbG9jay4KLXN0YXRpYyBjb25zdCBpbnQgRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwOwotCiBuYW1lc3BhY2UgSlNDIHsKIAotICAg
IGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIEV4
ZWNTdGF0ZTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBpbmxpbmUg
aW50IHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihpbnQgYXJndW1lbnRzUmVnaXN0ZXIpIHsg
cmV0dXJuIGFyZ3VtZW50c1JlZ2lzdGVyIC0gMTsgfQogCkBAIC04Myw2ICs4MCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBVbmNvbmRpdGlvbmFsRmlu
YWxpemVyLCBwdWJsaWMgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciB7CiAgICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgZW51
bSBDb3B5UGFyc2VkQmxvY2tUYWcgeyBDb3B5UGFyc2VkQmxvY2sgfTsKICAgICBwcm90ZWN0ZWQ6
CkBAIC0xMjMsNyArMTIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB3aGlsZSAo
cmVzdWx0LT5hbHRlcm5hdGl2ZSgpKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC0+
YWx0ZXJuYXRpdmUoKTsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQpOwotICAgICAgICAgICAg
QVNTRVJUKHJlc3VsdC0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAg
ICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5
cGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogI2VuZGlmCkBA
IC0xMzQsMTEgKzEzMiw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHN0YXRpYyB2b2lk
IGR1bXBTdGF0aXN0aWNzKCk7CiAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRV9PUENP
REVfU0FNUExJTkcKICAgICAgICAgdm9pZCBkdW1wKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAg
ICB2b2lkIHByaW50U3RydWN0dXJlcyhjb25zdCBJbnN0cnVjdGlvbiopIGNvbnN0OwogICAgICAg
ICB2b2lkIHByaW50U3RydWN0dXJlKGNvbnN0IGNoYXIqIG5hbWUsIGNvbnN0IEluc3RydWN0aW9u
KiwgaW50IG9wZXJhbmQpIGNvbnN0OwotI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc1N0cmljdE1v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9kZTsgfQogCkBAIC0xOTQsMTUgKzE5MCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuICooYmluYXJ5U2VhcmNoPE1l
dGhvZENhbGxMaW5rSW5mbywgdW5zaWduZWQsIGdldE1ldGhvZENhbGxMaW5rSW5mb0J5dGVjb2Rl
SW5kZXg+KG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5iZWdpbigpLCBtX21ldGhvZENhbGxMaW5rSW5m
b3Muc2l6ZSgpLCBieXRlY29kZUluZGV4KSk7CiAgICAgICAgIH0KIAotICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghbV9yYXJlRGF0YSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
MTsKLSAgICAgICAgICAgIFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4m
IGNhbGxJbmRpY2VzID0gbV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7Ci0gICAg
ICAgICAgICBpZiAoIWNhbGxJbmRpY2VzLnNpemUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
MTsKLSAgICAgICAgICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0
ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5i
ZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5B
ZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7Ci0gICAgICAgIH0KKyAgICAgICAgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiwgUmV0dXJuQWRkcmVzc1B0cik7CiAKICAg
ICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXRGb3JDYWxsQXRJbmRleCh1bnNpZ25lZCBpbmRl
eCkKICAgICAgICAgewpAQCAtMjIzLDExICsyMTEsMTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHsKICAgICAgICAgICAgIG1faW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nKTsKICAgICAg
ICAgfQorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgdm9pZCBsaW5rSW5jb21pbmdDYWxsKExM
SW50Q2FsbExpbmtJbmZvKiBpbmNvbWluZykKKyAgICAgICAgeworICAgICAgICAgICAgbV9pbmNv
bWluZ0xMSW50Q2FsbHMucHVzaChpbmNvbWluZyk7CisgICAgICAgIH0KKyNlbmRpZiAvLyBFTkFC
TEUoTExJTlQpCiAgICAgICAgIAogICAgICAgICB2b2lkIHVubGlua0luY29taW5nQ2FsbHMoKTsK
LSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKKyNp
ZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICB2b2lkIHNldEpJVENv
ZGVNYXAoUGFzc093blB0cjxDb21wYWN0SklUQ29kZU1hcD4gaml0Q29kZU1hcCkKICAgICAgICAg
ewogICAgICAgICAgICAgbV9qaXRDb2RlTWFwID0gaml0Q29kZU1hcDsKQEAgLTIzNiw3ICsyMzAs
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIG1faml0
Q29kZU1hcC5nZXQoKTsKICAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIAorI2lmIEVOQUJMRShE
RkdfSklUKQogICAgICAgICB2b2lkIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpCiAgICAgICAg
IHsKICAgICAgICAgICAgIGlmICghIW1fZGZnRGF0YSkKQEAgLTMzNSwxMiArMzMxLDExIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRF
UikKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb24qIHJldHVybkFk
ZHJlc3MpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXR1cm5BZGRyZXNzID49IGlu
c3RydWN0aW9ucygpLmJlZ2luKCkgJiYgcmV0dXJuQWRkcmVzcyA8IGluc3RydWN0aW9ucygpLmVu
ZCgpKTsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnN0cnVjdGlvbio+KHJldHVy
bkFkZHJlc3MpIC0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICAgICAgfQotI2VuZGlmCiAK
ICAgICAgICAgdm9pZCBzZXRJc051bWVyaWNDb21wYXJlRnVuY3Rpb24oYm9vbCBpc051bWVyaWND
b21wYXJlRnVuY3Rpb24pIHsgbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb24gPSBpc051bWVyaWND
b21wYXJlRnVuY3Rpb247IH0KICAgICAgICAgYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24o
KSB7IHJldHVybiBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQpAQCAtMzU0LDE3ICszNDks
OSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgbV9zaG91bGREaXNj
YXJkQnl0ZWNvZGUgPSB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIHZvaWQgaGFuZGxlQnl0ZWNv
ZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoISFh
bHRlcm5hdGl2ZSgpKQotICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZSgpOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGRpc2NhcmRCeXRlY29kZUxhdGVyKCk7Ci0gICAg
ICAgIH0KKyAgICAgICAgdm9pZCBoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgp
OwogICAgICAgICAKLSNpZm5kZWYgTkRFQlVHCiAgICAgICAgIGJvb2wgdXNlc09wY29kZShPcGNv
ZGVJRCk7Ci0jZW5kaWYKIAogICAgICAgICB1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50KCkgeyBy
ZXR1cm4gbV9pbnN0cnVjdGlvbkNvdW50OyB9CiAgICAgICAgIHZvaWQgc2V0SW5zdHJ1Y3Rpb25D
b3VudCh1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50KSB7IG1faW5zdHJ1Y3Rpb25Db3VudCA9IGlu
c3RydWN0aW9uQ291bnQ7IH0KQEAgLTM4Nyw2ICszNzQsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGV4ZWN1dGFibGVNZW1vcnkoKSB7IHJldHVy
biBnZXRKSVRDb2RlKCkuZ2V0RXhlY3V0YWJsZU1lbW9yeSgpOyB9CiAgICAgICAgIHZpcnR1YWwg
SlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpID0gMDsKKyAgICAgICAgYm9vbCBq
aXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKSB7CisgICAg
ICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgaml0Q29tcGlsZUltcGwoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKSA9IDA7
CiAKICAgICAgICAgZW51bSBDb21waWxlV2l0aERGR1N0YXRlIHsKQEAgLTQwNiwxMyArNDAyLDEz
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgaGFzT3B0aW1pemVkUmVwbGFjZW1l
bnQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENv
ZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5l
Q29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIGJvb2wgcmVzdWx0ID0gcmVwbGFjZW1l
bnQoKS0+Z2V0SklUVHlwZSgpID4gZ2V0SklUVHlwZSgpOwogI2lmICFBU1NFUlRfRElTQUJMRUQK
ICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2Vt
ZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwogICAgICAgICAgICAgZWxz
ZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA9
PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6
OmlzQmFzZWxpbmVDb2RlKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSkpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpID09IHRoaXMpOwogICAgICAgICAgICAgfQogI2Vu
ZGlmCkBAIC00NzEsMTggKzQ2NywyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lk
IGNsZWFyRXZhbENhY2hlKCk7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIHZv
aWQgYWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbih1bnNpZ25lZCBwcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2Fu
VXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5h
cHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBtX3Byb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKTsKICAg
ICAgICAgfQogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbih1bnNpZ25l
ZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICgh
bV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX2dsb2JhbFJlc29s
dmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik7CisgICAgICAg
ICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb25BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBhZGRMTEludENhbGxMaW5rSW5m
bygpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zLmFwcGVuZChM
TEludENhbGxMaW5rSW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiAmbV9sbGludENhbGxMaW5r
SW5mb3MubGFzdCgpOworICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgICAg
ICB2b2lkIHNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKHNpemVfdCBzaXplKSB7IG1fc3Ry
dWN0dXJlU3R1YkluZm9zLmdyb3coc2l6ZSk7IH0KQEAgLTQ5MSw4ICs0OTAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbmZvKHVuc2lnbmVkIGds
b2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fZ2xv
YmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5m
b3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOwor
ICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJbmZv
KGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOwogICAgICAgICB9CiAgICAgICAgIEdsb2JhbFJl
c29sdmVJbmZvJiBnbG9iYWxSZXNvbHZlSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJuIG1fZ2xvYmFs
UmVzb2x2ZUluZm9zW2luZGV4XTsgfQogICAgICAgICBib29sIGhhc0dsb2JhbFJlc29sdmVJbmZv
QXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CkBAIC01MDMsNiArNTAx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBhZGRNZXRob2RDYWxsTGlua0lu
Zm9zKHVuc2lnbmVkIG4pIHsgQVNTRVJUKG1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpOyBtX21l
dGhvZENhbGxMaW5rSW5mb3MuZ3JvdyhuKTsgfQogICAgICAgICBNZXRob2RDYWxsTGlua0luZm8m
IG1ldGhvZENhbGxMaW5rSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJ
bmZvc1tpbmRleF07IH0KKyAgICAgICAgc2l6ZV90IG51bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZv
cygpIHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCk7IH0KICNlbmRpZgogICAg
ICAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC01NDMsNiArNTQyLDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlY29k
ZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJvZmlsZSA9PSByZXN1bHQpOwogICAgICAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQorICAgICAgICBQcmVkaWN0ZWRUeXBlIHZhbHVl
UHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dChieXRlY29kZU9mZnNldCktPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOworICAgICAgICB9
CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygp
CiAgICAgICAgIHsKQEAgLTU2OSwxMiArNTcyLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQp
CiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgdmFs
dWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1f
Y291bnRlcjsKICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRpb25zOjpsaWtlbHlUb1Rh
a2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1f
ZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVz
aG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBjb3VsZFRha2VTbG93Q2Fz
ZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVy
T2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+
PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxk
b3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpjb3VsZFRh
a2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQpAQCAtNTkzLDEyICs2MDAsMTYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZVNwZWNpYWxG
YXN0Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgh
bnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFz
dENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7
CiAgICAgICAgICAgICByZXR1cm4gc3BlY2lhbEZhc3RDYXNlQ291bnQgPj0gT3B0aW9uczo6bGlr
ZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPihzcGVj
aWFsRmFzdENhc2VDb3VudCkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6bGlr
ZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAg
IGJvb2wgbGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAg
ICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCBzbG93Q2Fz
ZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQp
LT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9
IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkt
Pm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gc2xvd0Nhc2VDb3VudCAt
IHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNjA3LDYgKzYxOCw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VBbnlTbG93Q2FzZShpbnQgYnl0
ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2Fz
ZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAg
dW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lh
bEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9
IHNsb3dDYXNlQ291bnQgKyBzcGVjaWFsRmFzdENhc2VDb3VudDsKQEAgLTcwNCw3ICs3MTcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgYWRkRnJlcXVlbnRFeGl0
U2l0ZShjb25zdCBERkc6OkZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiAgICAgICAgIHsKLSAgICAg
ICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAg
ICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOwog
ICAgICAgICAgICAgcmV0dXJuIG1fZXhpdFByb2ZpbGUuYWRkKHNpdGUpOwogICAgICAgICB9CiAK
QEAgLTgwOSw2ICs4MjIsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgY29weVBv
c3RQYXJzZURhdGFGcm9tKENvZGVCbG9jayogYWx0ZXJuYXRpdmUpOwogICAgICAgICB2b2lkIGNv
cHlQb3N0UGFyc2VEYXRhRnJvbUFsdGVybmF0aXZlKCk7CiAgICAgICAgIAorICAgICAgICAvLyBG
dW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gSklUdGluZyBraWNrcyBpbiwgaW4gYSBtaXhl
ZCBtb2RlCisgICAgICAgIC8vIGV4ZWN1dGlvbiB3b3JsZC4KKyAgICAgICAgCisgICAgICAgIHZv
aWQgZG9udEpJVEFueXRpbWVTb29uKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludEV4
ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFu
eXRpbWVTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdEFmdGVyV2Fy
bVVwKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0
aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIHZvaWQgaml0U29vbigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckpJVFNvb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludDMyX3QgbGxpbnRFeGVj
dXRlQ291bnRlcigpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2xsaW50
RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIC8vIEZ1bmN0aW9u
cyBmb3IgY29udHJvbGxpbmcgd2hlbiB0aWVyZWQgY29tcGlsYXRpb24ga2lja3MgaW4uIFRoaXMK
ICAgICAgICAgLy8gY29udHJvbHMgYm90aCB3aGVuIHRoZSBvcHRpbWl6aW5nIGNvbXBpbGVyIGlz
IGludm9rZWQgYW5kIHdoZW4gT1NSCiAgICAgICAgIC8vIGVudHJ5IGhhcHBlbnMuIFR3byB0cmln
Z2VycyBleGlzdDogdGhlIGxvb3AgdHJpZ2dlciBhbmQgdGhlIHJldHVybgpAQCAtMTAwMSw2ICsx
MDM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zaG91bGREaXNjYXJkQnl0
ZWNvZGU7CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxl
SW1wbChKU0dsb2JhbERhdGEmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtS
ZWZlcmVuY2VzKFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseSgpOwogICAgICAgICAKQEAgLTEwMTMsNyArMTA1MCw2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB2b2lkIHRhbGx5RnJlcXVlbnRFeGl0U2l0ZXMoKSB7IH0KICNlbmRp
ZgogICAgICAgICAKLSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRShPUENPREVfU0FNUExJ
TkcpCiAgICAgICAgIHZvaWQgZHVtcChFeGVjU3RhdGUqLCBjb25zdCBWZWN0b3I8SW5zdHJ1Y3Rp
b24+Ojpjb25zdF9pdGVyYXRvciYgYmVnaW4sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0
ZXJhdG9yJikgY29uc3Q7CiAKICAgICAgICAgQ1N0cmluZyByZWdpc3Rlck5hbWUoRXhlY1N0YXRl
KiwgaW50IHIpIGNvbnN0OwpAQCAtMTAyMyw3ICsxMDU5LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHZvaWQgcHJpbnRHZXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0
b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsK
ICAgICAgICAgdm9pZCBwcmludENhbGxPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3Rv
cjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0Owog
ICAgICAgICB2b2lkIHByaW50UHV0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVj
dG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7
Ci0jZW5kaWYKICAgICAgICAgdm9pZCB2aXNpdFN0cnVjdHVyZXMoU2xvdFZpc2l0b3ImLCBJbnN0
cnVjdGlvbiogdlBDKSBjb25zdDsKICAgICAgICAgCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0x
MDg0LDkgKzExMTksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxTb3VyY2VQ
cm92aWRlcj4gbV9zb3VyY2U7CiAgICAgICAgIHVuc2lnbmVkIG1fc291cmNlT2Zmc2V0OwogCi0j
aWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fcHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbnM7CiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9nbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb25zOworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgU2VnbWVudGVk
VmVjdG9yPExMSW50Q2FsbExpbmtJbmZvLCA4PiBtX2xsaW50Q2FsbExpbmtJbmZvczsKKyAgICAg
ICAgU2VudGluZWxMaW5rZWRMaXN0PExMSW50Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVs
Tm9kZTxMTEludENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5nTExJbnRDYWxsczsKICNlbmRpZgog
I2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFZlY3RvcjxTdHJ1Y3R1cmVTdHViSW5mbz4gbV9zdHJ1
Y3R1cmVTdHViSW5mb3M7CkBAIC0xMDk3LDkgKzExMzQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2ppdENvZGVXaXRoQXJpdHlDaGVjazsKICAg
ICAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5v
ZGU8Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdDYWxsczsKICNlbmRpZgotI2lmIEVOQUJMRShE
RkdfSklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIE93
blB0cjxDb21wYWN0SklUQ29kZU1hcD4gbV9qaXRDb2RlTWFwOwotICAgICAgICAKKyNlbmRpZgor
I2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBzdHJ1Y3QgV2Vha1JlZmVyZW5jZVRyYW5zaXRp
b24gewogICAgICAgICAgICAgV2Vha1JlZmVyZW5jZVRyYW5zaXRpb24oKSB7IH0KICAgICAgICAg
ICAgIApAQCAtMTE2MiwxMiArMTIwMCwxNCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBP
d25QdHI8Q29kZUJsb2NrPiBtX2FsdGVybmF0aXZlOwogICAgICAgICAKKyAgICAgICAgaW50MzJf
dCBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIAogICAgICAgICBpbnQzMl90IG1faml0
RXhlY3V0ZUNvdW50ZXI7CiAgICAgICAgIHVpbnQzMl90IG1fc3BlY3VsYXRpdmVTdWNjZXNzQ291
bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZUZhaWxDb3VudGVyOwogICAgICAg
ICB1aW50OF90IG1fb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyOwogICAgICAgICB1aW50OF90IG1f
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXI7Ci0KKyAgICAgICAgCiAgICAgICAgIHN0cnVjdCBS
YXJlRGF0YSB7CiAgICAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBw
dWJsaWM6CkBAIC0xMjQzLDYgKzEyODMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0
ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRl
KiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAg
ICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBjYW5Db21waWxlV2l0aERGR0ludGVybmFsKCk7CiAjZW5kaWYKQEAgLTEyNzcsNiArMTMxOCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09i
amVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENv
bXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVw
bGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHSW50ZXJu
YWwoKTsKICNlbmRpZgpAQCAtMTMxNCw2ICsxMzU2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
cHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4
ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNv
bigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7
CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0
dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkdJbnRlcm5hbCgpOwogI2VuZGlmCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZp
c2lvbiAxMDYyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0
YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDIwICsyNyw0OSBAQAogI2luY2x1ZGUgIkdl
dEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkxvd0xl
dmVsSW50ZXJwcmV0ZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0dldEJ5SWRTdGF0dXMgR2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQoreworICAgIFVOVVNFRF9Q
QVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7Cisg
ICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSAr
IGJ5dGVjb2RlSW5kZXg7CisgICAgCisgICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09
IGxsaW50X29wX21ldGhvZF9jaGVjaykKKyAgICAgICAgaW5zdHJ1Y3Rpb24rKzsKKworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7Cisg
ICAgaWYgKCFzdHJ1Y3R1cmUpCisgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3Jt
YXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOworICAgIAorICAgIHNpemVf
dCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBp
ZGVudCk7CisgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIEdldEJ5
SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7
CisgICAgCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoU2ltcGxlRGlyZWN0LCBTdHJ1Y3R1cmVT
ZXQoc3RydWN0dXJlKSwgb2Zmc2V0LCBmYWxzZSk7CisjZWxzZQorICAgIHJldHVybiBHZXRCeUlk
U3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOwor
I2VuZGlmCit9CisKIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXIm
IGlkZW50KQogewogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURf
UEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKICNpZiBFTkFC
TEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgaWYgKCFwcm9maWxlZEJsb2Nr
LT5udW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZy
b21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CisgICAgCiAgICAg
Ly8gRmlyc3QgY2hlY2sgaWYgaXQgbWFrZXMgZWl0aGVyIGNhbGxzLCBpbiB3aGljaCBjYXNlIHdl
IHdhbnQgdG8gYmUgc3VwZXIgY2FyZWZ1bCwgb3IKICAgICAvLyBpZiBpdCdzIG5vdCBzZXQgYXQg
YWxsLCBpbiB3aGljaCBjYXNlIHdlIHB1bnQuCiAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJ
bmZvID0gcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm8oYnl0ZWNvZGVJbmRleCk7CiAgICAgaWYg
KCFzdHViSW5mby5zZWVuKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZy
b21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgCiAgICAg
UG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBsaXN0OwogICAgIGludCBsaXN0U2l6ZTsK
QEAgLTYwLDE4ICs4OSwxOSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVG
b3IoCiAgICAgfQogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlzdFNpemU7ICsraSkgewogICAg
ICAgICBpZiAoIWxpc3QtPmxpc3RbaV0uaXNEaXJlY3QpCi0gICAgICAgICAgICByZXR1cm4gR2V0
QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAg
ICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTWFrZXNDYWxscywgU3RydWN0dXJlU2V0KCksIG5v
dEZvdW5kLCB0cnVlKTsKICAgICB9CiAgICAgCiAgICAgLy8gTmV4dCBjaGVjayBpZiBpdCB0YWtl
cyBzbG93IGNhc2UsIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBiZSBraW5kIG9mIGNhcmVmdWwu
CiAgICAgaWYgKHByb2ZpbGVkQmxvY2stPmxpa2VseVRvVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5k
ZXgpKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCBTdHJ1Y3R1
cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Ns
b3dQYXRoLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIHRydWUpOwogICAgIAogICAgIC8vIEZp
bmFsbHkgZmlndXJlIG91dCBpZiB3ZSBjYW4gZGVyaXZlIGFuIGFjY2VzcyBzdHJhdGVneS4KICAg
ICBHZXRCeUlkU3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQubV93YXNTZWVuSW5KSVQgPSB0cnVl
OwogICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewogICAgIGNhc2UgYWNjZXNzX3Vu
c2V0OgotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1
cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9m
aWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgICAgIAogICAgIGNhc2UgYWNj
ZXNzX2dldF9ieV9pZF9zZWxmOiB7CiAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3R1
YkluZm8udS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgpOwpAQCAtMTMwLDcg
KzE2MCw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAK
ICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UgLy8gRU5BQkxFKEpJVCkKLSAgICByZXR1cm4gR2V0
QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RG
b3VuZCwgZmFsc2UpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMTA2
Mjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAko
d29ya2luZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDExIEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQog
ICAgIAotICAgIEdldEJ5SWRTdGF0dXMoU3RhdGUgc3RhdGUsIGNvbnN0IFN0cnVjdHVyZVNldCYg
c3RydWN0dXJlU2V0LCBzaXplX3Qgb2Zmc2V0KQorICAgIEdldEJ5SWRTdGF0dXMoU3RhdGUgc3Rh
dGUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0LCBzaXplX3Qgb2Zmc2V0LCBib29s
IHdhc1NlZW5JbkpJVCkKICAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQogICAgICAgICAsIG1fc3Ry
dWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAgICAgLCBtX29mZnNldChvZmZzZXQpCisgICAg
ICAgICwgbV93YXNTZWVuSW5KSVQod2FzU2VlbkluSklUKQogICAgIHsKICAgICAgICAgQVNTRVJU
KChzdGF0ZSA9PSBTaW1wbGVEaXJlY3QpID09IChvZmZzZXQgIT0gbm90Rm91bmQpKTsKICAgICB9
CkBAIC03MCwxMCArNzEsMTUgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc3Ry
dWN0dXJlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVTZXQ7IH0KICAgICBzaXplX3Qg
b2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKKyAgICBib29sIHdhc1Nl
ZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzU2VlbkluSklUOyB9CisgICAgCiBwcml2YXRl
OgorICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYpOworICAgIAogICAgIFN0YXRlIG1f
c3RhdGU7CiAgICAgU3RydWN0dXJlU2V0IG1fc3RydWN0dXJlU2V0OwogICAgIHNpemVfdCBtX29m
ZnNldDsKKyAgICBib29sIG1fd2FzU2VlbkluSklUOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlND
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAko
cmV2aXNpb24gMTA2Mjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Ry
dWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgY2xhc3MgSlNDZWxsOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKICAgICBjbGFzcyBTdHJ1
Y3R1cmVDaGFpbjsKKyAgICBzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm87CiAgICAgc3RydWN0IFZh
bHVlUHJvZmlsZTsKIAogI2lmIEVOQUJMRShKSVQpCkBAIC0xNDYsNiArMTQ3LDExIEBAIG5hbWVz
cGFjZSBKU0MgewogI2VuZGlmCiAKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb24geworICAgICAgICBJ
bnN0cnVjdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuanNDZWxsLmNsZWFyKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIEluc3RydWN0aW9uKE9wY29kZSBvcGNvZGUpCiAg
ICAgICAgIHsKICNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCkBAIC0xODIs
NiArMTg4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSW5zdHJ1Y3Rpb24oUHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYykgeyB1LmdldHRlckZ1bmMgPSBnZXR0ZXJG
dW5jOyB9CiAgICAgICAgIAorICAgICAgICBJbnN0cnVjdGlvbihMTEludENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvKSB7IHUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZvOyB9CisgICAgICAg
IAogICAgICAgICBJbnN0cnVjdGlvbihWYWx1ZVByb2ZpbGUqIHByb2ZpbGUpIHsgdS5wcm9maWxl
ID0gcHJvZmlsZTsgfQogCiAgICAgICAgIHVuaW9uIHsKQEAgLTE5MSw3ICsxOTksOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3RydWN0dXJlQ2hhaW4+
IHN0cnVjdHVyZUNoYWluOwogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxKU0NlbGw+IGpz
Q2VsbDsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1bmM7
CisgICAgICAgICAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvOwogICAgICAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlOworICAgICAgICAgICAgdm9pZCogcG9pbnRlcjsKICAg
ICAgICAgfSB1OwogICAgICAgICAKICAgICBwcml2YXRlOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50Q2FsbExpbmtJbmZvX2gKKyNkZWZpbmUg
TExJbnRDYWxsTGlua0luZm9faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUg
Ik1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExp
c3QuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworc3RydWN0
IExMSW50Q2FsbExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2Fs
bExpbmtJbmZvPiB7CisgICAgTExJbnRDYWxsTGlua0luZm8oKQorICAgIHsKKyAgICB9CisgICAg
CisgICAgfkxMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAgICAgIGlmIChpc09uTGlzdCgp
KQorICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgfQorICAgIAorICAgIGJvb2wgaXNMaW5rZWQo
KSB7IHJldHVybiBjYWxsZWU7IH0KKyAgICAKKyAgICB2b2lkIHVubGluaygpCisgICAgeworICAg
ICAgICBjYWxsZWUuY2xlYXIoKTsKKyAgICAgICAgbWFjaGluZUNvZGVUYXJnZXQgPSBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIoKTsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAgICBy
ZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGNhbGxl
ZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbGFzdFNlZW5DYWxsZWU7CisgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyIG1hY2hpbmVDb2RlVGFyZ2V0OworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBMTEludENhbGxMaW5rSW5mb19oCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVz
LmNwcAkocmV2aXNpb24gMTA2Mjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsMTEg
QEAgTWV0aG9kQ2FsbExpbmtTdGF0dXMgTWV0aG9kQ2FsbExpbmtTdGF0dQogICAgIFVOVVNFRF9Q
QVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAj
aWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIC8vIE5PVEU6IFRo
aXMgZG9lcyBub3QgaGF2ZSBhbiBMTEludCBmYWxsLWJhY2sgYmVjYXVzZSBMTEludCBkb2VzIG5v
dCBkbyBhbnkgbWV0aG9kCisgICAgLy8gY2FsbCBsaW5rIGNhY2hpbmcuCisgICAgaWYgKCFwcm9m
aWxlZEJsb2NrLT5udW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MoKSkKKyAgICAgICAgcmV0dXJu
IE1ldGhvZENhbGxMaW5rU3RhdHVzKCk7CisgICAgCiAgICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBt
ZXRob2RDYWxsID0gcHJvZmlsZWRCbG9jay0+Z2V0TWV0aG9kQ2FsbExpbmtJbmZvKGJ5dGVjb2Rl
SW5kZXgpOwogICAgIAogICAgIGlmICghbWV0aG9kQ2FsbC5zZWVuIHx8ICFtZXRob2RDYWxsLmNh
Y2hlZFN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNv
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2Rl
LmgJKHJldmlzaW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9P
cGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBtYWNybyhvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCwgNCkgXAogICAgICAgICBt
YWNybyhvcF9wdXRfYnlfaWQsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5z
aXRpb24sIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
LCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCwgOSkg
XAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfcmVwbGFjZSwgOSkgXAogICAgICAgICBtYWNy
byhvcF9wdXRfYnlfaWRfZ2VuZXJpYywgOSkgXAogICAgICAgICBtYWNybyhvcF9kZWxfYnlfaWQs
IDQpIFwKQEAgLTIwMSw2ICsyMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdHlwZWRl
ZiBlbnVtIHsgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9JRF9FTlVNKSB9IE9wY29kZUlEOwog
ICAgICN1bmRlZiBPUENPREVfSURfRU5VTQogCisgICAgY29uc3QgaW50IG1heE9wY29kZUxlbmd0
aCA9IDk7CiAgICAgY29uc3QgaW50IG51bU9wY29kZUlEcyA9IG9wX2VuZCArIDE7CiAKICAgICAj
ZGVmaW5lIE9QQ09ERV9JRF9MRU5HVEhTKGlkLCBsZW5ndGgpIGNvbnN0IGludCBpZCMjX2xlbmd0
aCA9IGxlbmd0aDsKQEAgLTIxNyw3ICsyMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
Rk9SX0VBQ0hfT1BDT0RFX0lEKFZFUklGWV9PUENPREVfSUQpOwogICAgICN1bmRlZiBWRVJJRllf
T1BDT0RFX0lECiAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBF
TkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQogI2lmIENP
TVBJTEVSKFJWQ1QpIHx8IENPTVBJTEVSKElOVEVMKQogICAgIHR5cGVkZWYgdm9pZCogT3Bjb2Rl
OwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjcgKzI3
LDY5IEBACiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlN0cnVjdHVy
ZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitQ
dXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkK
K3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5
dGVjb2RlSW5kZXgpOworICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CisjaWYgRU5BQkxFKExMSU5U
KQorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0
aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0cnVjdHVy
ZSkKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwg
bm90Rm91bmQpOworICAgIAorICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGlu
dF9vcF9wdXRfYnlfaWQpIHsKKyAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0
KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICAgICAgaWYgKG9mZnNl
dCA9PSBub3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3Jt
YXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBQdXRC
eUlkU3RhdHVzKFNpbXBsZVJlcGxhY2UsIHN0cnVjdHVyZSwgMCwgMCwgb2Zmc2V0KTsKKyAgICB9
CisgICAgCisgICAgQVNTRVJUKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdAorICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51
Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgIAor
ICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUu
Z2V0KCk7CisgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gaW5zdHJ1Y3Rpb25bN10udS5zdHJ1
Y3R1cmVDaGFpbi5nZXQoKTsKKyAgICBBU1NFUlQobmV3U3RydWN0dXJlKTsKKyAgICBBU1NFUlQo
Y2hhaW4pOworICAgIAorICAgIHNpemVfdCBvZmZzZXQgPSBuZXdTdHJ1Y3R1cmUtPmdldCgqcHJv
ZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgaWYgKG9mZnNldCA9PSBub3RG
b3VuZCkKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwg
MCwgbm90Rm91bmQpOworICAgIAorICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVRyYW5z
aXRpb24sIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjaGFpbiwgb2Zmc2V0KTsKKyNlbHNlCisg
ICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQp
OworI2VuZGlmCit9CisKIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZp
ZXImIGlkZW50KQogewogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVT
RURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKICNpZiBF
TkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgaWYgKCFwcm9maWxlZEJs
b2NrLT5udW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcygpKQorICAgICAgICByZXR1cm4gY29tcHV0
ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CisgICAgCiAg
ICAgaWYgKHByb2ZpbGVkQmxvY2stPmxpa2VseVRvVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgp
KQogICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBu
b3RGb3VuZCk7CiAgICAgCiAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gcHJvZmls
ZWRCbG9jay0+Z2V0U3R1YkluZm8oYnl0ZWNvZGVJbmRleCk7CiAgICAgaWYgKCFzdHViSW5mby5z
ZWVuKQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAw
LCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxv
Y2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmFj
Y2Vzc1R5cGUpIHsKICAgICBjYXNlIGFjY2Vzc191bnNldDoKLSAgICAgICAgcmV0dXJuIFB1dEJ5
SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1
cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7
CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNlOiB7CiAgICAgICAg
IHNpemVfdCBvZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1
Y3R1cmUtPmdldCgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
U3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMTA2Mjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsOCBA
QCBwdWJsaWM6CiAgICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9
CiAgICAgCiBwcml2YXRlOgorICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGcm9tTExJ
bnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYpOworICAg
IAogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgU3RydWN0dXJlKiBtX29sZFN0cnVjdHVyZTsKICAg
ICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlz
aW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVk
ZSAiQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVy
LmgiCiAjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIK
ICNpbmNsdWRlICJVU3RyaW5nLmgiCkBAIC0xMTYsMjYgKzExNywxNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBleHBlY3RlZCBieSB0aGUgY2FsbGVlLgogKi8KIAotI2lmbmRlZiBOREVCVUcKIHN0
YXRpYyBib29sIHNfZHVtcHNHZW5lcmF0ZWRDb2RlID0gZmFsc2U7Ci0jZW5kaWYKIAogdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6c2V0RHVtcHNHZW5lcmF0ZWRDb2RlKGJvb2wgZHVtcHNHZW5lcmF0
ZWRDb2RlKQogewotI2lmbmRlZiBOREVCVUcKICAgICBzX2R1bXBzR2VuZXJhdGVkQ29kZSA9IGR1
bXBzR2VuZXJhdGVkQ29kZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGR1bXBzR2VuZXJhdGVk
Q29kZSk7Ci0jZW5kaWYKIH0KIAogYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0
ZWRDb2RlKCkKIHsKLSNpZm5kZWYgTkRFQlVHCiAgICAgcmV0dXJuIHNfZHVtcHNHZW5lcmF0ZWRD
b2RlOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKIH0KIAogSlNPYmplY3QqIEJ5
dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCkBAIC0xNDgsMTAgKzEzOSw4IEBAIEpTT2JqZWN0
KiBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogCiAgICAgbV9jb2RlQmxvY2stPnNldElu
c3RydWN0aW9uQ291bnQobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAKLSNp
Zm5kZWYgTkRFQlVHCiAgICAgaWYgKHNfZHVtcHNHZW5lcmF0ZWRDb2RlKQogICAgICAgICBtX2Nv
ZGVCbG9jay0+ZHVtcChtX3Njb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKTsK
LSNlbmRpZgogCiAgICAgaWYgKChtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiAhbV9jb2Rl
QmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSAmJiAhbV9jb2RlQmxvY2stPnVzZXNBcmd1bWVu
dHMoKSkgfHwgbV9jb2RlVHlwZSA9PSBFdmFsQ29kZSkKICAgICAgICAgc3ltYm9sVGFibGUoKS5j
bGVhcigpOwpAQCAtMTI3Niw5ICsxMjY1LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRH
bG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0jaWYgRU5B
QkxFKElOVEVSUFJFVEVSKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUlu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICAgICAgVmFsdWVQ
cm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKHJlcXVpcmVzRHluYW1pY0NoZWNr
cyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAg
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwogICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE0NDAsOSArMTQyNyw3
IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUo
SklUKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMo
KS5zaXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJs
b2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
LSNlbmRpZgogICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShy
ZXF1aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVz
b2x2ZV9nbG9iYWwpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wRHN0LT5pbmRleCgp
KTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAg
LTE0OTAsOSArMTQ3NSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVz
b2wKICNpZiBFTkFCTEUoSklUKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5m
byhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVS
KQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQ
cm9maWxlZE9wY29kZShyZXF1aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZlX2dsb2JhbF9k
eW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChw
cm9wRHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQo
cHJvcGVydHkpKTsKQEAgLTE1MTEsOSArMTQ5NCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRNZXRob2RDaGVjaygKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHkpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2Nr
LT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0j
ZW5kaWYKIAogICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShv
cF9nZXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwpA
QCAtMTUzOSw5ICsxNTIwLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRH
ZXRBcgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQoUmVnaXN0
ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVl
KQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAg
ICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJh
c2UtPmluZGV4KCkpOwpAQCAtMTU1Nyw5ICsxNTM2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRQdXRCeQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBt
X2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5z
aXplKCkpOwotI2VuZGlmCiAgICAgCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE4MzksNyArMTgxNiwx
MSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoCiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7IC8v
IGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0
ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0luZm8oKSk7
CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewog
ICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfY2Fs
bF9wdXRfcmVzdWx0KTsKQEAgLTE5NDMsNyArMTkyNCwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdENvbnN0CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmlu
ZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMu
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVy
T2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2Nv
ZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0luZm8oKSk7CisjZWxzZQogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAg
ICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHBy
b2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKQEAgLTIyMDQs
NyArMjE4OSwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhdGNoCiB7
CiAgICAgbV91c2VzRXhjZXB0aW9ucyA9IHRydWU7CiAjaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgSGFuZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVu
ZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRo
ICsgbV9iYXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0aW9uTGFiZWwoYml0d2lzZV9jYXN0PHZvaWQq
PigmbGxpbnRfb3BfY2F0Y2gpKSB9OworI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBz
dGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCks
IG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoLCBDb2RlTG9jYXRpb25MYWJl
bCgpIH07CisjZW5kaWYKICNlbHNlCiAgICAgSGFuZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPmJp
bmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFt
aWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCB9OwogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24g
MTA2Mjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNCw5ICs2MDQsNyBAQCBwcml2YXRlOgogICAgIHsKICAg
ICAgICAgVU5VU0VEX1BBUkFNKG5vZGVJbmRleCk7CiAgICAgICAgIAotICAgICAgICBWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnZhbHVl
UHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwotICAgICAgICBBU1NFUlQo
cHJvZmlsZSk7Ci0gICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUtPmNv
bXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOworICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rp
b24gPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZVByZWRp
Y3Rpb25Gb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsKICNpZiBERkdfRU5BQkxFKERF
QlVHX1ZFUkJPU0UpCiAgICAgICAgIHByaW50ZigiRHluYW1pYyBbQCV1LCBiYyMldV0gcHJlZGlj
dGlvbjogJXNcbiIsIG5vZGVJbmRleCwgYnl0ZWNvZGVJbmRleCwgcHJlZGljdGlvblRvU3RyaW5n
KHByZWRpY3Rpb24pKTsKICNlbmRpZgpAQCAtMTA0MSw2ICsxMDM5LDkgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoYm9vbAogICAgIAogICAgIC8vIElmIHdlIGdldCBoZXJl
IHRoZW4gaXQgbG9va3MgbGlrZSB3ZSBzaG91bGQgZGVmaW5pdGVseSBpbmxpbmUgdGhpcyBjb2Rl
LiBQcm9jZWVkCiAgICAgLy8gd2l0aCBwYXJzaW5nIHRoZSBjb2RlIHRvIGdldCBieXRlY29kZSwg
c28gdGhhdCB3ZSBjYW4gdGhlbiBwYXJzZSB0aGUgYnl0ZWNvZGUuCisgICAgLy8gTm90ZSB0aGF0
IGlmIExMSW50IGlzIGVuYWJsZWQsIHRoZSBieXRlY29kZSB3aWxsIGFsd2F5cyBiZSBhdmFpbGFi
bGUuIEFsc28gbm90ZQorICAgIC8vIHRoYXQgaWYgTExJbnQgaXMgZW5hYmxlZCwgd2UgbWF5IGlu
bGluZSBhIGNvZGUgYmxvY2sgdGhhdCBoYXMgbmV2ZXIgYmVlbiBKSVR0ZWQKKyAgICAvLyBiZWZv
cmUhCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBtX2NvZGVCbG9ja0NhY2hlLmdldChDb2Rl
QmxvY2tLZXkoZXhlY3V0YWJsZSwga2luZCksIGV4cGVjdGVkRnVuY3Rpb24tPnNjb3BlKCkpOwog
ICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xNzQxLDcgKzE3
NDIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAgICAgICAg
ICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLCBtX2N1cnJlbnRJbmRl
eCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChtZXRob2RDYWxsU3RhdHVzLmlzU2V0
KCkKLSAgICAgICAgICAgICAgICAmJiAhZ2V0QnlJZFN0YXR1cy5pc1NldCgpCisgICAgICAgICAg
ICAgICAgJiYgIWdldEJ5SWRTdGF0dXMud2FzU2VlbkluSklUKCkKICAgICAgICAgICAgICAgICAm
JiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmlsZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJ
bmRleCwgQmFkQ2FjaGUpKSB7CiAgICAgICAgICAgICAgICAgLy8gSXQncyBtb25vbW9ycGhpYyBh
cyBmYXIgYXMgd2UgY2FuIHRlbGwsIHNpbmNlIHRoZSBtZXRob2RfY2hlY2sgd2FzIGxpbmtlZAog
ICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGUgc2xvdyBwYXRoIChpLmUuIHRoZSBub3JtYWwgZ2V0
X2J5X2lkKSBuZXZlciBmaXJlZC4KQEAgLTE4MTAsNyArMTgxMSw5IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKIAogICAgICAgICAgICAgTkVYVF9PUENPREUob3Bf
Z2V0X2J5X2lkKTsKICAgICAgICAgfQotICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDogeworICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
OiB7CiAgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUgPSBnZXQoY3VycmVudEluc3RydWN0aW9u
WzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBOb2RlSW5kZXggYmFzZSA9IGdldChjdXJyZW50
SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGlkZW50aWZp
ZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lkZW50aWZpZXJSZW1hcFtjdXJyZW50SW5z
dHJ1Y3Rpb25bMl0udS5vcGVyYW5kXTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTA2Mjk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTExLDYgKzEx
MSw4IEBAIGlubGluZSBib29sIGNhbkNvbXBpbGVPcGNvZGUoT3Bjb2RlSUQgb3AKICAgICBjYXNl
IG9wX3B1dF9zY29wZWRfdmFyOgogICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgogICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkOgorICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgIGNhc2Ugb3BfZ2V0X2ds
b2JhbF92YXI6CiAgICAgY2FzZSBvcF9wdXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX2ptcDoK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxl
ci5jcHAJKHJldmlzaW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMjEgQEAgdm9p
ZCBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdWludDMyX3QgZXhpdEluZGV4
ID0gZ2xvYmFsRGF0YS0+b3NyRXhpdEluZGV4OwogICAgIE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxv
Y2stPm9zckV4aXQoZXhpdEluZGV4KTsKICAgICAKKyAgICAvLyBNYWtlIHN1cmUgYWxsIGNvZGUg
b24gb3VyIGlubGluZSBzdGFjayBpcyBKSVQgY29tcGlsZWQuIFRoaXMgaXMgbmVjZXNzYXJ5IHNp
bmNlCisgICAgLy8gd2UgbWF5IG9wdCB0byBpbmxpbmUgYSBjb2RlIGJsb2NrIGV2ZW4gYmVmb3Jl
IGl0IGhhZCBldmVyIGJlZW4gY29tcGlsZWQgYnkgdGhlCisgICAgLy8gSklULCBidXQgb3VyIE9T
UiBleGl0IGluZnJhc3RydWN0dXJlIGN1cnJlbnRseSBvbmx5IHdvcmtzIGlmIHRoZSB0YXJnZXQg
b2YgdGhlCisgICAgLy8gT1NSIGV4aXQgaXMgSklUIGNvZGUuIFRoaXMgY291bGQgYmUgY2hhbmdl
ZCBzaW5jZSB0aGVyZSBpcyBub3RoaW5nIHBhcnRpY3VsYXJseQorICAgIC8vIGhhcmQgYWJvdXQg
ZG9pbmcgYW4gT1NSIGV4aXQgaW50byB0aGUgaW50ZXJwcmV0ZXIsIGJ1dCBmb3Igbm93IHRoaXMg
c2VlbXMgdG8gbWFrZQorICAgIC8vIHNlbnNlIGluIHRoYXQgaWYgd2UncmUgT1NSIGV4aXRpbmcg
ZnJvbSBpbmxpbmVkIGNvZGUgb2YgYSBERkcgY29kZSBibG9jaywgdGhlbgorICAgIC8vIHByb2Jh
Ymx5IGl0J3MgYSBnb29kIHNpZ24gdGhhdCB0aGUgdGhpbmcgd2UncmUgZXhpdGluZyBpbnRvIGlz
IGhvdC4gRXZlbiBtb3JlCisgICAgLy8gaW50ZXJlc3RpbmdseSwgc2luY2UgdGhlIGNvZGUgd2Fz
IGlubGluZWQsIGl0IG1heSBuZXZlciBvdGhlcndpc2UgZ2V0IEpJVAorICAgIC8vIGNvbXBpbGVk
IHNpbmNlIHRoZSBhY3Qgb2YgaW5saW5pbmcgaXQgbWF5IGVuc3VyZSB0aGF0IGl0IG90aGVyd2lz
ZSBuZXZlciBydW5zLgorICAgIGZvciAoQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gZXhpdC5tX2Nv
ZGVPcmlnaW47IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBjb2RlT3JpZ2luID0gY29kZU9y
aWdpbi5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlcikgeworICAgICAgICBzdGF0aWNfY2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5n
ZXQoKSkKKyAgICAgICAgICAgIC0+YmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbi5pbmxp
bmVDYWxsRnJhbWUtPmlzQ2FsbCA/IENvZGVGb3JDYWxsIDogQ29kZUZvckNvbnN0cnVjdCkKKyAg
ICAgICAgICAgIC0+aml0Q29tcGlsZSgqZ2xvYmFsRGF0YSk7CisgICAgfQorICAgIAogICAgIFNw
ZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5ID0gMDsKICAgICBpZiAoZXhpdC5tX3JlY292ZXJ5
SW5kZXgpCiAgICAgICAgIHJlY292ZXJ5ID0gJmNvZGVCbG9jay0+c3BlY3VsYXRpb25SZWNvdmVy
eShleGl0Lm1fcmVjb3ZlcnlJbmRleCAtIDEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxMDYyOTUpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhpdC5o
IgogI2luY2x1ZGUgIkRGR1JlcGF0Y2guaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVl
LmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW5saW5lQVNNLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTY3Myw1MCArNjc0LDYgQEAgc2l6ZV90IERGR19P
UEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cgogICAgIHJldHVybiBKU1ZhbHVlOjpzdHJpY3RF
cXVhbChleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29kZShl
bmNvZGVkT3AyKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSgpOwotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqKTsKLQotI2lmIENQVShYODZfNjQp
Ci1hc20gKAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkg
IlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NU
UklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJtb3YgLTQwKCVyMTMp
LCAlcjEzXG4iCi0gICAgIm1vdiAlcjEzLCAlcmRpXG4iCi0gICAgImptcCAiIFNZTUJPTF9TVFJJ
TkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgot
KTsKLSNlbGlmIENQVShYODYpCi1hc20gKAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgot
ICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4iCi0gICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCi0g
ICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVl
V2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKQotYXNtICgKLSIu
dGV4dCIgIlxuIgotIi5hbGlnbiAyIiAiXG4iCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiXG4iCi0iLnRodW1iIiAiXG4iCi0iLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFN
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCi0gICAg
ImNweSByMCwgcjUiICJcbiIKLSAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRI
b3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbmRpZgotCi1FbmNv
ZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAm
ZXhlYy0+Z2xvYmFsRGF0YSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xv
YmFsRGF0YSwgZXhlYyk7Ci0gICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5n
bG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Ci19Ci0KIHN0YXRpYyB2b2lkKiBoYW5k
bGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxl
ZS0+Y2FsbGVyRnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShy
ZXZpc2lvbiAxMDYyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODM3LDcgKzgzNyw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2Vl
cFRvZ2dsZSBzd2VlcFRvZ2cKICAgICAgICAgc2V0SGlnaFdhdGVyTWFyayhtYXgocHJvcG9ydGlv
bmFsQnl0ZXMsIG1fbWluQnl0ZXNQZXJDeWNsZSkpOwogICAgIH0KICAgICBKQVZBU0NSSVBUQ09S
RV9HQ19FTkQoKTsKLQorICAgIAogICAgICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMDYyOTUpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNz
IEpTVmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAgICBj
bGFzcyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTEzNSwxMSArMTM2LDEy
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVy
Um9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZFNwYWNlOwogICAgICAgICBm
cmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBCdW1wU3BhY2U7
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKLSAgICAgICAgZnJpZW5kIGNsYXNz
IENvZGVCbG9jazsKIAogICAgICAgICBzaXplX3Qgd2F0ZXJNYXJrKCk7CiAgICAgICAgIHNpemVf
dCBoaWdoV2F0ZXJNYXJrKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
U3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtT
dGFjay5jcHAJKHJldmlzaW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICszMDQsNyBAQCBBTFdBWVNf
SU5MSU5FIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oCiAjZW5kaWYKIAogICAgIEFTU0VSVChI
ZWFwOjppc01hcmtlZChjZWxsKSk7Ci0KKyAgICAKICAgICBpZiAoaXNKU1N0cmluZyhjZWxsKSkg
ewogICAgICAgICBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNl
bGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxMDYyOTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIExp
dmVPYmplY3RJdGVyYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFdl
YWtHQ0hhbmRsZTsKIGNsYXNzIFNsb3RWaXNpdG9yOwogCkBAIC04Nyw2ICs4OCw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGZyZWVCbG9ja3MoTWFya2VkQmxvY2sqIGhlYWQpOwogCiBwcml2YXRlOgor
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiAgICAgdm9pZCog
YWxsb2NhdGVTbG93Q2FzZShTaXplQ2xhc3MmKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZUhlbHBl
cihNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGUoTWFya2Vk
U3BhY2U6OlNpemVDbGFzcyYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTA2Mjk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiAr
MTIyLDkgQEAgbmFtZXNwYWNlIEpTQyAgewogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAg
ICAgSW5zdHJ1Y3Rpb24qIHJldHVyblZQQygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJG
aWxlOjpSZXR1cm5QQ10udlBDKCk7IH0KICNlbmRpZgorI2lmIEVOQUJMRShMTElOVCkKKyAgICAg
ICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8
SW5zdHJ1Y3Rpb24qPih0aGlzW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0udGFnKCkpOyB9
CisjZW5kaWYKIAogICAgICAgICB2b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogY2FsbGVy
RnJhbWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OkNhbGxl
ckZyYW1lXSA9IGNhbGxlckZyYW1lOyB9CiAgICAgICAgIHZvaWQgc2V0U2NvcGVDaGFpbihTY29w
ZUNoYWluTm9kZSogc2NvcGVDaGFpbikgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1Jl
Z2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0gPSBzY29wZUNoYWluOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9u
IDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRlICJKSVQuaCIK
ICNlbmRpZgogCi0jZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAo
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkK
KyNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EICgoRU5BQkxFKENP
TVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkpICYmICFkZWZpbmVkKF9f
bGx2bV9fKSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNTQ3LDE3ICs1NDcsNDMgQEAg
SW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKIHsKIH0KIAotdm9pZCBJbnRlcnByZXRlcjo6aW5p
dGlhbGl6ZShib29sIGNhblVzZUpJVCkKK0ludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIoKQogewot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkK
KyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICBkZWxldGVbXSBtX29wY29kZVRhYmxlOworI2Vu
ZGlmCit9CisKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRhdGEqIGxsaW50
RGF0YSwgYm9vbCBjYW5Vc2VKSVQpCit7CisgICAgVU5VU0VEX1BBUkFNKGxsaW50RGF0YSk7Cisg
ICAgVU5VU0VEX1BBUkFNKGNhblVzZUpJVCk7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpCisgICAgLy8gSGF2aW5nIExMSW50IGVuYWJsZWQsIGJ1dCBub3QgYmVpbmcgYWJs
ZSB0byB1c2UgdGhlIEpJVCwgYW5kIG5vdCBoYXZpbmcKKyAgICAvLyBhIGNvbXB1dGVkIGdvdG8g
aW50ZXJwcmV0ZXIsIGlzIG5vdCBzdXBwb3J0ZWQuIE5vdCBiZWNhdXNlIHdlIGNhbm5vdAorICAg
IC8vIHN1cHBvcnQgaXQsIGJ1dCBiZWNhdXNlIEkgZGVjaWRlZCB0byBkcmF3IHRoZSBsaW5lIGF0
IHRoZSBudW1iZXIgb2YKKyAgICAvLyBwZXJtdXRhdGlvbnMgb2YgZXhlY3V0aW9uIGVuZ2luZXMg
dGhhdCBJIHdhbnRlZCB0aGlzIGNvZGUgdG8gZ3Jvay4KKyAgICBBU1NFUlQoY2FuVXNlSklUKTsK
KyNlbmRpZgogICAgIGlmIChjYW5Vc2VKSVQpIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAg
IG1fb3Bjb2RlVGFibGUgPSBsbGludERhdGEtPm9wY29kZU1hcCgpOworICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQorICAgICAgICAgICAgbV9vcGNvZGVJRFRh
YmxlLmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworI2Vs
c2UKICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0
aW5hdGlvbnMgZm9yIG9wY29kZXMuCiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlID0gYml0
d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpKTsKICAgICAgICAgICAg
IG1fb3Bjb2RlVGFibGVbaV0gPSBvcGNvZGU7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0gZWxz
ZSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbmV3IE9wY29k
ZVtudW1PcGNvZGVJRHNdOworI2VuZGlmCiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRpYWxp
emVBbmRSZXR1cm4sIDAsIDApOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBudW1PcGNvZGVJRHM7ICsraSkKQEAgLTU2Niw3ICs1OTIsNiBAQCB2b2lkIEludGVycHJldGVy
Ojppbml0aWFsaXplKGJvb2wgY2FuVXNlCiAgICAgICAgIG1fZW5hYmxlZCA9IHRydWU7CiAgICAg
fQogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2FuVXNlSklUKTsKICNpZiBFTkFCTEUoSU5URVJQ
UkVURVIpCiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICNlbHNlCkBAIC02NjcsOSArNjkyLDExIEBA
IHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW0KIAogYm9vbCBJbnRlcnBy
ZXRlcjo6aXNPcGNvZGUoT3Bjb2RlIG9wY29kZSkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09U
T19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwg
RU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoTExJTlQpCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAg
ICAgICAgIHJldHVybiBvcGNvZGUgPj0gMCAmJiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSkgPD0gb3BfZW5kOworI2VuZGlmCiAgICAgcmV0dXJu
IG9wY29kZSAhPSBIYXNoVHJhaXRzPE9wY29kZT46OmVtcHR5VmFsdWUoKQogICAgICAgICAmJiAh
SGFzaFRyYWl0czxPcGNvZGU+Ojppc0RlbGV0ZWRWYWx1ZShvcGNvZGUpCiAgICAgICAgICYmIG1f
b3Bjb2RlSURUYWJsZS5jb250YWlucyhvcGNvZGUpOwpAQCAtNzI2LDExICs3NTMsMTEgQEAgTkVW
RVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbAogICAgIC8vIGhhdmUgdG8gc3Vi
dHJhY3QgMS4KICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgaWYg
KGNhbGxlckZyYW1lLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCkpCi0gICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkp
OworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2Fs
bGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAgICAgZWxzZQogICAgICAgICBieXRl
Y29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5W
UEMoKSkgLSAxOwogI2VsaWYgRU5BQkxFKEpJVCkKLSAgICBieXRlY29kZU9mZnNldCA9IGNvZGVC
bG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29k
ZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFt
ZS0+cmV0dXJuUEMoKSk7CiAjZWxzZQogICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5i
eXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZW5kaWYKQEAgLTUx
NTcsMTAgKzUxODQsMTAgQEAgdm9pZCBJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKENh
bAogICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZz
ZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSk7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBlbHNlCi0g
ICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChj
YWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNv
ZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMo
KSk7CiAjZW5kaWYKICNlbHNlCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZz
ZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJh
bWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAgICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVCbG9j
ay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAg
c291cmNlSUQgPSBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmgJKHJldmlzaW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5j
bHVkZSAiSlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVk
ZSAiUmVnaXN0ZXJGaWxlLmgiCiAKQEAgLTQ1LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNs
YXNzIFNjb3BlQ2hhaW5Ob2RlOwpAQCAtMTAwLDE5ICsxMDIsMjEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBJbnRlcnByZXRlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2Fj
aGVkQ2FsbDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBwdWJsaWM6CiAgICAgICAgIEludGVycHJldGVy
KCk7CisgICAgICAgIH5JbnRlcnByZXRlcigpOwogICAgICAgICAKLSAgICAgICAgdm9pZCBpbml0
aWFsaXplKGJvb2wgY2FuVXNlSklUKTsKKyAgICAgICAgdm9pZCBpbml0aWFsaXplKExMSW50OjpE
YXRhKiwgYm9vbCBjYW5Vc2VKSVQpOwogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJG
aWxlKCkgeyByZXR1cm4gbV9yZWdpc3RlckZpbGU7IH0KICAgICAgICAgCiAgICAgICAgIE9wY29k
ZSBnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVCht
X2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNp
ZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQogICAg
ICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlVGFibGVbaWRdOwogI2Vsc2UKICAgICAgICAgICAgIHJl
dHVybiBpZDsKQEAgLTEyMiw3ICsxMjYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9w
Y29kZUlEIGdldE9wY29kZUlEKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICAgICAgICAgICAg
IEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBS
RVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bj
b2RlKSk7CisgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVJRFRhYmxlLmdldChvcGNvZGUpOwor
I2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgICAgICBBU1NF
UlQoaXNPcGNvZGUob3Bjb2RlKSk7CiAgICAgICAgICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAg
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50
cHRyX3Q+KG9wY29kZSkpOwpAQCAtMTMyLDYgKzEzOSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIHJldHVybiBvcGNvZGU7CiAjZW5kaWYKICAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgYm9vbCBlbmFibGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZW5h
YmxlZDsKKyAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIApAQCAt
MTk5LDcgKzIxMSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlckZpbGUg
bV9yZWdpc3RlckZpbGU7CiAgICAgICAgIAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVS
UFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgT3Bjb2RlKiBtX29wY29kZVRhYmxl
OyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCisgICAgICAgIEhhc2hN
YXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBP
cGNvZGVJRCBmb3IgZGVjb21waWxpbmcKKyNlbGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVS
UFJFVEVSKQogICAgICAgICBPcGNvZGUgbV9vcGNvZGVUYWJsZVtudW1PcGNvZGVJRHNdOyAvLyBN
YXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCiAgICAgICAgIEhhc2hNYXA8T3Bj
b2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJ
RCBmb3IgZGVjb21waWxpbmcKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkocmV2aXNpb24gMTA2Mjk1KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29uc2Vy
dmF0aXZlUm9vdHM7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBSZWdpc3RlckZpbGUgewogICAgICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShSZWdpc3RlckZpbGUpOwpAQCAtODEsNiArODIsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgZ3Jvd1Nsb3dD
YXNlKFJlZ2lzdGVyKik7CiAgICAgICAgIHZvaWQgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CiAg
ICAgICAgIHZvaWQgYWRkVG9Db21taXR0ZWRCeXRlQ291bnQobG9uZyk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJI
b3N0Q2FsbFJldHVyblZhbHVlLmgiCisKKyNpZiBDT01QSUxFUihHQ0MpCisKKyNpbmNsdWRlICJD
YWxsRnJhbWUuaCIKKyNpbmNsdWRlICJJbmxpbmVBU00uaCIKKyNpbmNsdWRlICJKU09iamVjdC5o
IgorI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVNZXRob2RzLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFp
bi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NU
X0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNT
dGF0ZShFeGVjU3RhdGUqKTsKKworI2lmIENQVShYODZfNjQpCithc20gKAorIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCisgICAgIm1vdiAl
cjEzLCAlcmRpXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0
Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShYODYpCith
c20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxu
IgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklO
RyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVlZGkpLCAl
ZWRpXG4iCisgICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJ
TkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgor
KTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorYXNtICgKKyIudGV4dCIgIlxuIgorIi5hbGlnbiAy
IiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAi
XG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCisiLnRodW1iIiAi
XG4iCisiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIK
KyAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCisgICAgImNweSByMCwgcjUiICJcbiIKKyAg
ICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0
aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbmRpZgorCitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVl
IEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRo
RXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDT01QSUxFUihHQ0MpCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKyNkZWZpbmUgSG9z
dENhbGxSZXR1cm5WYWx1ZV9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKy8vIFVu
Zm9ydHVuYXRlbHkgdGhpcyBvbmx5IHdvcmtzIG9uIEdDQy1saWtlIGNvbXBpbGVycy4gQW5kIGl0
J3MgY3VycmVudGx5IG9ubHkgdXNlZAorLy8gYnkgTExJbnQgYW5kIERGRywgd2hpY2ggYWxzbyBh
cmUgcmVzdHJpY3RlZCB0byBHQ0MtbGlrZSBjb21waWxlcnMuIFdlIHNob3VsZAorLy8gcHJvYmFi
bHkgZml4IHRoYXQgYXQgc29tZSBwb2ludC4KKyNpZiBDT01QSUxFUihHQ0MpCisKKyNpZiBDQUxM
SU5HX0NPTlZFTlRJT05fSVNfU1REQ0FMTAorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVF
X09QVElPTiBDREVDTAorI2Vsc2UKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJ
T04KKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUg
SE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOwor
fQorCisjZW5kaWYgLy8gQ09NUElMRVIoR0NDKQorCisjZW5kaWYgLy8gSG9zdENhbGxSZXR1cm5W
YWx1ZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEwNjI5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzI1LDYgKzMyNSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAg
ICAgICAgREVGSU5FX09QKG9wX3Byb2ZpbGVfd2lsbF9jYWxsKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHVzaF9uZXdfc2NvcGUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX3Njb3BlKQorICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9PUChvcF9wdXRf
YnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaW5kZXgpCiAgICAgICAgIERFRklO
RV9PUChvcF9wdXRfYnlfdmFsKQpAQCAtNDg2LDYgKzQ4OCw4IEBAIHZvaWQgSklUOjpwcml2YXRl
Q29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2lu
YykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWw6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfcmVzb2x2ZV9nbG9iYWwpCkBAIC01MjUsNiArNTI5LDEwIEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAKIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2Rl
UHRyKiBmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaykKIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0Vf
T1NSKQorICAgIHByaW50ZigiQ29tcGlsaW5nIEpJVCBjb2RlIVxuIik7CisjZW5kaWYKKyAgICAK
ICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiAgICAgbV9jYW5CZU9wdGltaXplZCA9IG1fY29k
ZUJsb2NrLT5jYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC02ODksOCArNjk3LDEyIEBA
IEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAgICAgICAgaW5mby5j
YWxsUmV0dXJuTG9jYXRpb24gPSBtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8obV9tZXRo
b2RDYWxsQ29tcGlsYXRpb25JbmZvW2ldLnByb3BlcnR5QWNjZXNzSW5kZXgpLmNhbGxSZXR1cm5M
b2NhdGlvbjsKICAgICB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAobV9jYW5CZU9w
dGltaXplZCkgeworI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCisgICAgaWYg
KG1fY2FuQmVPcHRpbWl6ZWQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHx8IHRydWUKKyNl
bmRpZgorICAgICAgICApIHsKICAgICAgICAgQ29tcGFjdEpJVENvZGVNYXA6OkVuY29kZXIgaml0
Q29kZU1hcEVuY29kZXI7CiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAw
OyBieXRlY29kZU9mZnNldCA8IG1fbGFiZWxzLnNpemUoKTsgKytieXRlY29kZU9mZnNldCkgewog
ICAgICAgICAgICAgaWYgKG1fbGFiZWxzW2J5dGVjb2RlT2Zmc2V0XS5pc1NldCgpKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEwNjI5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0
OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKSVRDb2RlKCkgeyB9CiAjZW5kaWYKICAg
ICBwdWJsaWM6Ci0gICAgICAgIGVudW0gSklUVHlwZSB7IEhvc3RDYWxsVGh1bmssIEJhc2VsaW5l
SklULCBERkdKSVQgfTsKKyAgICAgICAgZW51bSBKSVRUeXBlIHsgTm9uZSwgSG9zdENhbGxUaHVu
aywgSW50ZXJwcmV0ZXJUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OwogICAgICAgICAKICAg
ICAgICAgc3RhdGljIEpJVFR5cGUgYm90dG9tVGllckpJVCgpCiAgICAgICAgIHsKQEAgLTY2LDgg
KzY2LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIERGR0pJVDsKICAg
ICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGljIGJvb2wgaXNPcHRpbWl6aW5nSklUKEpJ
VFR5cGUgaml0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0g
REZHSklUOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgYm9vbCBpc0Jhc2Vs
aW5lQ29kZShKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBq
aXRUeXBlID09IEludGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBCYXNlbGluZUpJVDsKKyAg
ICAgICAgfQorICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBKSVRDb2RlKCkKKyAg
ICAgICAgICAgIDogbV9qaXRUeXBlKE5vbmUpCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03
NSw2ICs4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgOiBtX3JlZihyZWYpCiAg
ICAgICAgICAgICAsIG1faml0VHlwZShqaXRUeXBlKQogICAgICAgICB7CisgICAgICAgICAgICBB
U1NFUlQoaml0VHlwZSAhPSBOb25lKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9v
bCBvcGVyYXRvciAhKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
RHJpdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2
ZXIuaAkocmV2aXNpb24gMTA2Mjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRE
cml2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDIxIEBACiAjaW5jbHVkZSAiQnl0
ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNpbmNsdWRlICJKSVQu
aCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgogaW5saW5lIGJvb2wgaml0Q29tcGlsZUlm
QXBwcm9wcmlhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlw
ZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBl
KQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAg
ICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdD
YWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0
VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlD
b21waWxlKGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CkBAIC01NSwxMCAr
NjEsNyBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShKU0dsCiAgICAgICAg
IH0KICAgICAgICAgaml0Q29kZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LmdldCgpKTsKICAgICB9Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFC
eXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9j
ay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgorICAgIGNv
ZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2Rl
QmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwogICAg
IAogICAgIHJldHVybiB0cnVlOwpAQCAtNjYsOSArNjksMTQgQEAgaW5saW5lIGJvb2wgaml0Q29t
cGlsZUlmQXBwcm9wcmlhdGUoSlNHbAogCiBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25J
ZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29k
ZUJsb2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQ
dHImIGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJs
ZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVC
bG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAo
IWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAg
IGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29t
cGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAg
ICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlRnVuY3Rpb24oZ2xvYmFsRGF0YSwgY29k
ZUJsb2NrLmdldCgpLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwpAQCAtODMsMTEg
KzkxLDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaQogICAgICAg
ICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9j
ay5nZXQoKSwgJmppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BD
T0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVk
Q29kZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9y
dHVuaXR5KCk7Ci0jZW5kaWYKLSAgICAKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlz
Y2FyZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUs
IGppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEw
NjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhy
b3coSlNHbG9iYWxEYQogCiBFeGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUs
IFJldHVybkFkZHJlc3NQdHIgZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1cm4gZ2VuZXJpY1Ro
cm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAgICByZXR1cm4gZ2Vu
ZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1bHRMb2NhdGlvbikp
OwogfQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2
aXNpb24gMTA2Mjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0NDYsNiArMTQ0Niw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9O
KHZvaWQsIG9wX3B1dF9ieV9pZF8KICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJhbWUt
PmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBz
dGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmpl
Y3QoKSk7CisgICAgCiAgICAgYXNPYmplY3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGNhbGxGcmFt
ZS0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwgc2xv
dCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGFja0ZyYW1lLmNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCk7CkBAIC0xOTMxLDcgKzE5MzIsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElP
Tih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNr
RnJhbWUuYXJnc1swXS5pbnQzMigpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAg
ICBwcmludGYoIkVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIg
PSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlD
b3VudGVyID0gJXVcbiIsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2Nr
LT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRl
bGF5Q291bnRlcigpKTsKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9v
cCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0g
JXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9j
ay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291
bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgog
CiAgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewpAQCAtMjE4
Niw0NSArMjE4NywxMyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0Zv
cihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1
bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpOwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RG
dW5jdGlvbigpKTsKLSAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhl
Y3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KCk7Ci0KLSAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2Fz
ZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBp
ZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJz
KSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3
IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGlu
IG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5l
d0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7
Ci0gICAgUmVnaXN0ZXIqIHNyYyA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0
ZXIqIGRzdCA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwot
ICAgIGludCBlbmQgPSAtQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMpOwotICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0g
PSBzcmNbaV07Ci0KLSAgICBlbmQgLT0gZGVsdGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1p
KQotICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdD
YWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3
Q2FsbEZyYW1lIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJh
bWU7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2sp
CiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZy
YW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSog
bmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0
ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21t
b25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVy
RmlsZSwgQ29kZUZvckNhbGwpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1
cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUs
IFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUt
PmNhbGxlckZyYW1lKCkpKTsKIApAQCAtMjIzNyw3ICsyMjA2LDcgQEAgREVGSU5FX1NUVUJfRlVO
Q1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBz
dGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJp
dHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29u
c3RydWN0KTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6
YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9y
Q29uc3RydWN0KTsKICAgICBpZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93
RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JF
VFVSTl9BRERSRVNTLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJG
cmFtZSgpKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VK
SVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNl
SklULmgJKHJldmlzaW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJ
bnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYg
SlNJbnRlcmZhY2VKSVRfaAogI2RlZmluZSBKU0ludGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJC
eXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJ
VFN0dWJzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBMTEludENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gK
KworI2RlZmluZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0hFTFBF
Ul9UUkFDSU5HIDAKKworI2VuZGlmIC8vIExMSW50Q29tbW9uX2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCisKKyNpZiBFTkFCTEUo
TExJTlQpCisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50
ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBMTEludCB7CisKK0RhdGE6OkRhdGEoKQorICAgIDogbV9leGNlcHRpb25JbnN0cnVjdGlv
bnMobmV3IEluc3RydWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdKQorICAgICwgbV9vcGNvZGVN
YXAobmV3IE9wY29kZVtudW1PcGNvZGVJRHNdKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAgICAgICBtX2V4Y2VwdGlvbkluc3RydWN0aW9u
c1tpXS51LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19mcm9tX2hl
bHBlcl90cmFtcG9saW5lKTsKKyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBt
X29wY29kZU1hcFtvcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUp
OworICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkpOworI3VuZGVmIE9QQ09ERV9F
TlRSWQorfQorCitEYXRhOjp+RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9leGNlcHRpb25JbnN0
cnVjdGlvbnM7CisgICAgZGVsZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IExMSW50RGF0YV9oCisjZGVmaW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRlICJPcGNvZGUuaCIK
KyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJ
bnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKworI2lmIEVOQUJMRShMTElOVCkKK2Ns
YXNzIERhdGEgeworcHVibGljOgorICAgIERhdGEoKTsKKyAgICB+RGF0YSgpOworICAgIAorICAg
IEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9w
Y29kZU1hcCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgfQorcHJp
dmF0ZToKKyAgICBJbnN0cnVjdGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgT3Bj
b2RlKiBtX29wY29kZU1hcDsKK307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQpCisKKyNpZiBDT01Q
SUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlmCisKK2NsYXNz
IERhdGEgeworcHVibGljOgorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMo
KQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAw
OworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfTsKKworI2lm
IENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisK
KyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAor
CisjZW5kaWYgLy8gTExJbnREYXRhX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RW50cnlwb2ludHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgor
CisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUgIkpT
R2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAiTG93TGV2
ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwor
dm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciYgYXJpdHlDaGVjaykKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkp
IHsKKyAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgIGppdENv
ZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVT
ZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lk
Kj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgICAgIGFy
aXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxp
bnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwor
ICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSkp
KTsKKyAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwp
IHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0
aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KTsKKyAgICAgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZv
ckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGppdENv
ZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVu
dHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBhcml0
eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlD
aGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7Cit9CisKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICgh
Z2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9z
dEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9ldmFsX3By
b2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0g
SklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBK
SVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKK30KKwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2lu
dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgaWYg
KCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpI
b3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVS
ZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Byb2dy
YW1fcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGppdENv
ZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVy
YXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQorCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBMTEludEVudHJ5cG9pbnRzX2gKKyNkZWZpbmUgTExJbnRFbnRy
eXBvaW50c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShMTElO
VCkKKworI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEV2YWxDb2RlQmxvY2s7CitjbGFzcyBKSVRDb2RlOworY2xhc3MgSlNHbG9i
YWxEYXRhOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworY2xhc3MgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmOworY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKKworbmFtZXNwYWNlIExMSW50IHsK
Kwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCwgSklUQ29kZSYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjayk7
Cit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKK3ZvaWQg
Z2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYpOworCitpbmxpbmUg
dm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXZhbENvZGVCbG9j
ayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0RXZhbEVudHJ5cG9pbnQoZ2xvYmFsRGF0
YSwgaml0Q29kZSk7Cit9CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBQcm9ncmFtQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAg
ICBnZXRQcm9ncmFtRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRp
ZiAvLyBMTEludEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorCisjaWYg
RU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJKSVRFeGNlcHRpb25z
LmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJl
dGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGludGVy
cHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJB
Q0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzLlxuIiwgZ2xvYmFsRGF0YS0+
ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KAorICAg
ICAgICBnbG9iYWxEYXRhLCBleGVjLT5jYWxsZXJGcmFtZSgpLCBnbG9iYWxEYXRhLT5leGNlcHRp
b24sCisgICAgICAgIGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpLT5ieXRlY29kZU9m
ZnNldChleGVjLT5jYWxsZXJGcmFtZSgpLCBleGVjLT5yZXR1cm5QQygpKSk7Cit9CisKK0luc3Ry
dWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmxsaW50RGF0YS5leGNlcHRpb25JbnN0
cnVjdGlvbnMoKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBl
eGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0g
JmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50
ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93KS5cbiIsIGdsb2JhbERhdGEt
PmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9i
YWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2Nr
KCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBnbG9iYWxEYXRh
LT5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK3ZvaWQqIGNhbGxUb1Ro
cm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RS
QUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAoY2FsbFRvVGhyb3cpLlxu
IiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2Vu
ZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBl
eGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisgICAgcmV0
dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xp
bmUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJM
RShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlv
bnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNl
cHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEV4Y2VwdGlv
bnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3Jt
Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKExMSU5UKQor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9u
OworCituYW1lc3BhY2UgTExJbnQgeworCisvLyBUaHJvdyB0aGUgY3VycmVudGx5IGFjdGl2ZSBl
eGNlcHRpb24gaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNhbGxlcidzIGNhbGwgZnJhbWUuCit2b2lk
IGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqKTsKKworLy8gVGVsbHMgeW91IHdo
ZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0dXJuLXRvLXRocm93LCBhZnRlciB5b3Un
dmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gdGhyb3cgdGhl
IGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9u
KEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0aGUgY3VycmVudCBQQyBpbiB0aGUgZ2xvYmFsIGRh
dGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlvdSBhIFBDCisvLyB0aGF0IHlvdSBjYW4g
dGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4gYWR2YW5jZWQgYmV0d2Vl
biAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0cnVjdGlvbiIgdGhhdCB0
aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBleGNlcHRpb24gaGFuZGxlci4gTm90ZSB0
aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nLAorLy8gaXQn
cyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhhdCBQQyB3aXRob3V0IGRvaW5nIGFueXRo
aW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVhZCBleGNlcHRpb24gaGFuZGxpbmcgdGhy
b3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5CisvLyBvdGhlciBoZWxwZXJzLgor
SW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKwor
Ly8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxsIHRodW5rLgordm9pZCog
Y2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTElu
dEV4Y2VwdGlvbnNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVs
cGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
SGVscGVycy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDM5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJMTEludEhlbHBlcnMuaCIKKworI2lmIEVOQUJMRShMTElOVCkK
KworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1
ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1
ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2lu
Y2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZh
dGlvbi5oIgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5j
bHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTExJ
bnRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisK
KyNkZWZpbmUgTExJTlRfT1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRSKHBjW2luZGV4XS51Lm9w
ZXJhbmQpKQorI2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5v
cGVyYW5kKSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsg
ICAgICAgXAorICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgICAgIHZvaWQqIGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgICAgIHZvaWQqIGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgfSBwYWlyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgaW50NjRfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9
IF9fcnRfdTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0
X3UucGFpci5hID0gZmlyc3Q7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3Uu
cGFpci5iID0gc2Vjb25kOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19y
dF91Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQor
CisjZGVmaW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykKKwor
I2RlZmluZSBMTElOVF9USFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fdF9nbG9iYWxEYXRhID0gZXhlYy0+
Z2xvYmFsRGF0YSgpOyAgICAgICAgXAorICAgICAgICBfX3RfZ2xvYmFsRGF0YS5leGNlcHRpb24g
PSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgXAorICAgICAgICBwYyA9IHJldHVyblRv
VGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBM
TElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
IGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmds
b2JhbERhdGEoKS5leGNlcHRpb24pKSB7ICAgXAorICAgICAgICAgICAgcGMgPSByZXR1cm5Ub1Ro
cm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9FTkRfSU1Q
TCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQor
CisjZGVmaW5lIExMSU5UX0VORCgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExM
SU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFs
c2UpCisKKyNkZWZpbmUgTExJTlRfQlJBTkNIKG9wY29kZSwgY29uZGl0aW9uKSBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYm9vbCBfX2JfY29uZGl0aW9uID0gKGNvbmRpdGlv
bik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9f
Yl9jb25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIHBjICs9IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsg
ICAgICAgIFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bj
b2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwo
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxl
IChmYWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAg
ICAgXAorICAgICAgICBKU1ZhbHVlIF9fcl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAor
ICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAg
ICBMTElOVF9PUCgxKSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAgXAorICAgICAgICBMTElO
VF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNl
KQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcGNvZGUsIHZhbHVlKSBkbyB7ICAg
ICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcnBfcmV0dXJuVmFsdWUgPSAodmFsdWUp
OyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0g
X19ycF9yZXR1cm5WYWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwY1tP
UENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IFwKKyAg
ICAgICAgICAgIEpTVmFsdWU6OmVuY29kZShfX3JwX3JldHVyblZhbHVlKTsgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NB
TExfRU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RXTygoY2FsbFRhcmdl
dCksIChleGVjKSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBleGNlcHRp
b25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3Rf
ZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBJbnN0cnVjdGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fY3RfZ2xvYmFsRGF0YSA9IChfX2N0
X2V4ZWMpLT5nbG9iYWxEYXRhKCk7ICAgICAgXAorICAgICAgICBfX2N0X2dsb2JhbERhdGEuZXhj
ZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICBM
TElOVF9DQUxMX0VORF9JTVBMKF9fY3RfZXhlYywgY2FsbFRvVGhyb3coX19jdF9leGVjLCBfX2N0
X3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0NIRUNL
X0VYQ0VQVElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBFeGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jY2VfcGMgPSAocGMpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoX19jY2Vf
ZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpICAgICAgICAgICAgICAgXAorICAgICAgICAg
ICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2NjZV9leGVj
LCBfX2NjZV9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FM
TF9SRVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgRXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMgPSAocGMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9pZCogX19jcl9j
YWxsVGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19jcl9leGVjLT5jYWxsZXJGcmFtZSgp
LCBfX2NyX3BjKTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NyX2V4ZWMsIF9f
Y3JfY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKwor
ZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRl
KiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQorewor
ICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTog
JWQ6ICVkXG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhl
YywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2Nr
KCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRh
KCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAg
ZnJvbVdoZXJlLAorICAgICAgICAgICBvcGVyYW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51
Lm9wZXJhbmQpOworICAgIExMSU5UX0VORCgpOworfQorCitleHRlcm4gIkMiIEhlbHBlclJldHVy
blR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMs
IGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElO
VF9PUF9DKG9wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7
CisgICAgICAgICAgICB1aW50MzJfdCB0YWc7CisgICAgICAgICAgICB1aW50MzJfdCBwYXlsb2Fk
OworICAgICAgICB9IGJpdHM7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlIGFzVmFsdWU7CisgICAg
fSB1OworICAgIHUuYXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgcHJpbnRm
KCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWQ6ICUw
OHg6JTA4eCIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVj
LAorICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2so
KS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEo
KS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBm
cm9tV2hlcmUsCisgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRdLnUu
b3BlcmFuZCwKKyAgICAgICAgICAgdS5iaXRzLnRhZywKKyAgICAgICAgICAgdS5iaXRzLnBheWxv
YWQpOworI2lmbmRlZiBOREVCVUcKKyAgICBwcmludGYoIjogJXMiLCB2YWx1ZS5kZXNjcmlwdGlv
bigpKTsKKyNlbmRpZgorICAgIHByaW50ZigiXG4iKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpCit7CisgICAgcHJpbnRmKCIlcCAvICVw
OiBpbiBwcm9sb2d1ZS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQor
eworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOwor
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxl
KCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0
ZWNvZGVGb3Ioa2luZCk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAl
cCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNh
bGxlZVJlZ2lzdGVycyA9ICV1LlxuIiwKKyAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBjb21t
ZW50LCBjYWxsZWUsIGV4ZWN1dGFibGUsCisgICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1WYXJz
LCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lz
dGVycyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zv
cl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBwcm9sb2d1
ZSIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1
bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JDb25zdHJ1
Y3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0
eUNoZWNrX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2Fs
bCBhcml0eSBjaGVjayIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQoreworICAgIHRy
YWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IGFyaXR5IGNoZWNrIiwgQ29kZUZv
ckNvbnN0cnVjdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRy
YWNlKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgIiwKKyAgICAg
ICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0
YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpKSk7CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50ZigiJXMsICIsIG9wY29kZU5h
bWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5v
cGNvZGUpXSk7CisjZWxzZQorICAgIHByaW50Zigib3AjJXUsICIsIGV4ZWMtPmdsb2JhbERhdGEo
KS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpKTsKKyNlbmRpZgorICAg
IHByaW50Zigic2NvcGUgJXBcbiIsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2UpCit7CisgICAgcHJpbnRm
KCIlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJldHVybiBQ
QyBpcyAlcFxuIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4
ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9j
aygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAg
IGV4ZWMtPnJldHVyblBDKCkudmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2lubGlu
ZSBib29sIHNob3VsZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gWW91IGNhbiBtb2Rp
ZnkgdGhpcyB0byB0dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0aGUgd29ybGQu
CisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKTsKK30KKworZW51bSBF
bnRyeUtpbmQgeyBQcm9sb2d1ZSwgQXJpdHlDaGVjayB9Oworc3RhdGljIEhlbHBlclJldHVyblR5
cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBjb25zdCBjaGFyICpuYW1lLCBFbnRyeUtpbmQga2luZCkKK3sKKyNpZiBFTkFC
TEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgJXMgd2l0aCBleGVj
dXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIG5hbWUsIGNvZGVCbG9jay0+bGxpbnRFeGVj
dXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7
CisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5U
X1JFVFVSTl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21w
aWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQor
ICAgICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5k
aWYKKyAgICB9CisgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgaWYgKGtpbmQgPT0gUHJv
bG9ndWUpCisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRDb2RlKCku
ZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7CisgICAgQVNTRVJUKGtpbmQgPT0g
QXJpdHlDaGVjayk7CisgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGVX
aXRoQXJpdHlDaGVjaygpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGV4ZWMpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChlbnRyeV9vc3IpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCBl
eGVjLT5jb2RlQmxvY2soKSwgImVudHJ5X29zciIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHJldHVybiBlbnRy
eU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUo
KS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9u
X2Zvcl9jYWxsIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3Jf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMs
ICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5
dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3QiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBw
YywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVk
Qnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5Q2hlY2siLCBBcml0eUNoZWNrKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICByZXR1cm4gZW50cnlP
U1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCkt
PmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOworfQorCitMTElOVF9I
RUxQRVJfREVDTChsb29wX29zcikKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMt
PmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJp
bnRmKCIlcDogRW50ZXJlZCBsb29wX29zciB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNv
ZGVCbG9jaywgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAg
CisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklU
QW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9
CisgICAgCisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgp
KSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50ZigiICAgIENv
ZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxv
Y2stPmppdFNvb24oKTsKKyAgICAKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkg
PT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIAorICAgIFZlY3RvcjxCeXRlY29kZUFuZE1h
Y2hpbmVPZmZzZXQ+IG1hcDsKKyAgICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKG1h
cCk7CisgICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2VhcmNo
PEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQsIEJ5dGVjb2RlQW5kTWFjaGluZU9m
ZnNldDo6Z2V0Qnl0ZWNvZGVJbmRleD4obWFwLmJlZ2luKCksIG1hcC5zaXplKCksIHBjIC0gY29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICBBU1NFUlQobWFwcGluZyk7Cisg
ICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4ocGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyAgICAKKyAgICB2
b2lkKiBqdW1wVGFyZ2V0ID0gY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJl
c3NBdE9mZnNldChtYXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQoanVt
cFRhcmdldCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOX1RXTyhqdW1wVGFyZ2V0LCBleGVjKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9P
U1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCByZXBsYWNlIHdpdGggZXhlY3V0ZUNvdW50ZXIg
PSAlZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7Cisj
ZW5kaWYKKyAgICAKKyAgICBpZiAoc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGlmICghY29k
ZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklU
X1ZFUkJPU0VfT1NSKQorICAgICAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBj
b21waWxlZC5cbiIpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgY29kZUJsb2NrLT5qaXRT
b29uKCk7CisgICAgfSBlbHNlCisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29u
KCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2Zp
bGVfY2hlY2spCit7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIkNoZWNr
aW5nIHN0YWNrIGhlaWdodCB3aXRoIGV4ZWMgPSAlcC5cbiIsIGV4ZWMpOworICAgIHByaW50Zigi
Q29kZUJsb2NrID0gJXAuXG4iLCBleGVjLT5jb2RlQmxvY2soKSk7CisgICAgcHJpbnRmKCJOdW0g
Y2FsbGVlIHJlZ2lzdGVycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVl
UmVnaXN0ZXJzKTsKKyAgICBwcmludGYoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxv
Y2soKS0+bV9udW1WYXJzKTsKKyAgICBwcmludGYoIkN1cnJlbnQgZW5kIGlzIGF0ICVwLlxuIiwg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5lbmQoKSk7Cisj
ZW5kaWYKKyAgICBBU1NFUlQoJmV4ZWMtPnJlZ2lzdGVycygpW2V4ZWMtPmNvZGVCbG9jaygpLT5t
X251bUNhbGxlZVJlZ2lzdGVyc10gPiBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJl
Z2lzdGVyRmlsZSgpLmVuZCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWV4ZWMtPmdsb2JhbERhdGEo
KS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbZXhl
Yy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7CisgICAgICAgIGV4ZWMg
PSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0
aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRl
clRocm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvd0ZvclRocm93
bkV4Y2VwdGlvbihleGVjKTsKKyAgICB9CisgICAgTExJTlRfRU5EX0lNUEwoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICBFeGVjU3RhdGUq
IG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmV4ZWMtPmds
b2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDYWxsKTsKKyAg
ICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7Cisg
ICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93
RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAg
ICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oMSkpLCBleGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdF
eGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNr
KQoreworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVj
a0ZvcihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUo
KSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMg
PSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0
aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRl
clRocm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9j
YXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAg
IExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKK3sKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAg
IHByaW50ZigiQ3JlYXRpbmcgYW4gYWN0aXZhdGlvbiwgZXhlYyA9ICVwIVxuIiwgZXhlYyk7Cisj
ZW5kaWYKKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBKU0FjdGl2YXRpb246OmNyZWF0
ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMsIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGV4ZWMtPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSkpOworICAgIGV4ZWMtPnNl
dFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2YXRpb24pKTsKKyAgICBM
TElOVF9SRVRVUk4oSlNWYWx1ZShhY3RpdmF0aW9uKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQoreworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNW
YWx1ZShBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpKTsKKyAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3Bl
cmFuZCkgPSBhcmd1bWVudHM7CisgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1l
bnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAgICBK
U0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAg
IAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7
CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRh
KGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlm
CisgICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgSlNWYWx1ZSBwcm90byA9IExM
SU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAocHJvdG8uaXNPYmplY3QoKSkKKyAgICAgICAg
c3RydWN0dXJlID0gYXNPYmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRh
KCkpOworICAgIGVsc2UKKyAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCkt
Pmdsb2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAKKyAgICBMTElOVF9S
RVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpCit7CisgICAgSlNWYWx1ZSB2MSA9IExM
SU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQodjEuaXNQcmltaXRpdmUoKSk7CisgICAg
TExJTlRfUkVUVVJOKHYxLnRvVGhpc09iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXdfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0
eU9iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkp
Cit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxK
U1ZhbHVlKj4oJkxMSU5UX09QKDIpKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQoreworICAgIExMSU5UX1JFVFVSTihj
b25zdHJ1Y3RBcnJheShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIocGNb
Ml0udS5vcGVyYW5kKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfcmVnZXhwKQoreworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29kZUJs
b2NrKCktPnJlZ2V4cChwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1ZhbGlk
KCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlk
IGZsYWcgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9SRVRV
Uk4oUmVnRXhwT2JqZWN0OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2Fs
R2xvYmFsT2JqZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0
dXJlKCksIHJlZ0V4cCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvQm9v
bGVhbihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9uZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1
ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpCit7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbighSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbGVzcykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVlPihl
eGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpCit7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9ncmVhdGVyKQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPGZhbHNl
PihleGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHJlX2luYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRf
T1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICsgMSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHJlX2RlYykKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRf
T1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gMSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcG9zdF9pbmMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJl
c3VsdCArIDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKQoreworICAgIGRvdWJsZSByZXN1bHQgPSBM
TElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBq
c051bWJlcihyZXN1bHQgLSAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcikKK3sKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSkKK3sKKyAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIoLUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpCit7CisgICAgSlNWYWx1ZSB2MSA9
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKTsKKyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50Zigi
VHJ5aW5nIHRvIGFkZCAlcyIsIHYxLmRlc2NyaXB0aW9uKCkpOworICAgIHByaW50ZigiIHRvICVz
LlxuIiwgdjIuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNTdHJp
bmcoKSAmJiAhdjIuaXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4
ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9TdHJpbmcoZXhlYykpKTsKKyAgICAKKyAgICBpZiAodjEu
aXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIodjEuYXNOdW1iZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKKyAgICAKKyAgICBMTElOVF9SRVRV
Uk4oanNBZGRTbG93Q2FzZShleGVjLCB2MSwgdjIpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX211bCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJl
cihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKQoreworICAgIExM
SU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVj
KSAtIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21v
ZCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoZm1vZChMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKS50b051bWJlcihleGVjKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhl
YykpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykg
PDwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3JzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIo
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA+PiBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
dXJzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9VSW50MzIoZXhlYykgPj4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIo
ZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCkKK3sKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVj
KSAmIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2JpdG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIHwgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0
eG9yKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KS50b0ludDMyKGV4ZWMpIF4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KQoreworICAgIExMSU5UX1JF
VFVSTihqc051bWJlcih+TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQoreworICAg
IEpTVmFsdWUgYmFzZVZhbCA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworI2lmbmRlZiBOREVC
VUcKKyAgICBUeXBlSW5mbyB0eXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VSVCgh
YmFzZVZhbC5pc09iamVjdCgpCisgICAgICAgICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVjdChi
YXNlVmFsKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgp
KTsKKyNlbmRpZgorICAgIExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4ZWMs
ICJpbnN0YW5jZW9mIiwgYmFzZVZhbCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
aW5zdGFuY2VvZikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRo
czo6b3BJbnN0YW5jZU9mU2xvdyhleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoNCkuanNWYWx1ZSgpKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKQoreworICAgIExMSU5UX1JFVFVSTihqc1R5cGVT
dHJpbmdGb3JWYWx1ZShleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKQoreworICAgIEpTVmFsdWUgdiA9IExM
SU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4odi5pc0Nl
bGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLmlzQm9vbGVhbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9pc19udW1iZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKS5pc051bWJlcigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9pc19zdHJpbmcpCit7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihpc0pTU3RyaW5nKExM
SU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
aXNfb2JqZWN0KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc09iamVjdFR5cGUo
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9pc19mdW5jdGlvbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5jdGlv
blR5cGUoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9pbikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRo
czo6b3BJbihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKQoreworICAg
IExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlLCBDb21tb25TbG93UGF0aHM6Om9wUmVz
b2x2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApCit7CisgICAg
TExJTlRfUkVUVVJOX1BST0ZJTEVEKAorICAgICAgICBvcF9yZXNvbHZlX3NraXAsCisgICAgICAg
IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlU2tpcCgKKyAgICAgICAgICAgIGV4ZWMsCisgICAg
ICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAor
ICAgICAgICAgICAgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlIHJlc29s
dmVHbG9iYWwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBBU1NFUlQoZ2xv
YmFsT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkgPSBwY1syXS51
Lm9wZXJhbmQ7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVyZS5n
ZXQoKTsKKyAgICAKKyAgICBBU1NFUlRfVU5VU0VEKHN0cnVjdHVyZSwgc3RydWN0dXJlICE9IGds
b2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXImIGlkZW50ID0g
Y29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChn
bG9iYWxPYmplY3QpOworICAgIAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5U2xv
dChleGVjLCBpZGVudCwgc2xvdCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90Lmdl
dFZhbHVlKGV4ZWMsIGlkZW50KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgp
ICYmICFnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgp
CisgICAgICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAg
ICAgICAgICBwY1szXS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0
cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIHBjWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxl
RXJyb3IoZXhlYywgaWRlbnQpOworICAgIHJldHVybiBKU1ZhbHVlKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCkKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJP
RklMRUQob3BfcmVzb2x2ZV9nbG9iYWwsIHJlc29sdmVHbG9iYWwoZXhlYywgcGMpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAg
TExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIHJlc29sdmVH
bG9iYWwoZXhlYywgcGMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVf
Zm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVE
KG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4
ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSkKK3sKKyAgICBJZGVudGlm
aWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFu
ZCk7CisgICAgaWYgKHBjWzNdLnUub3BlcmFuZCkgeworICAgICAgICBKU1ZhbHVlIGJhc2UgPSBK
U0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIHRydWUpOwor
ICAgICAgICBpZiAoIWJhc2UpCisgICAgICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZv
ckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgICAg
ICBMTElOVF9SRVRVUk4oYmFzZSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTl9QUk9G
SUxFRChvcF9yZXNvbHZlX2Jhc2UsIEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMt
PnNjb3BlQ2hhaW4oKSwgZmFsc2UpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vu
c3VyZV9wcm9wZXJ0eV9leGlzdHMpCit7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0
KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsK
KyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBj
WzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBp
ZGVudCwgc2xvdCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEds
b2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKK3sKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aEJhc2UoZXhl
YywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRf
T1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0g
cmVzdWx0OworICAgIC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcs
IGJ1dCB3ZSBkb24ndCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3Ro
aXMpCit7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdp
dGhUaGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFu
ZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElO
VF9PUCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUg
cHJvZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBp
dC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9i
eV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwor
ICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3Bl
cmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsK
KyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSByZXN1bHQg
PSBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKKyAgICBMTElOVF9PUCgxKSA9IHJlc3VsdDsKKworICAgIGlmIChiYXNlVmFsdWUu
aXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCisgICAgICAgICYmIHNsb3Qu
c2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUKKyAgICAgICAgJiYgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5
cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OlZhbHVlKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwq
IGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3Ry
dWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0
dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpKSB7CisgICAgICAgICAg
ICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAg
ICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVl
KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwY1tPUENPREVfTEVOR1RIKG9wX2dldF9i
eV9pZCkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1
bHQpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X2FyZ3VtZW50c19sZW5ndGgpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmll
cihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMiku
anNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisgICAgTExJTlRf
UkVUVVJOKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5p
ZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAg
ICBhc09iamVjdChiYXNlVmFsdWUpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBpZGVu
dCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFz
ZVZhbHVlLnB1dChleGVjLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOwor
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIGlmIChiYXNlVmFsdWUuaXND
ZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAgIAorICAgICAg
ICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAg
IGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAm
JiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpCisgICAg
ICAgICAgICAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAgICAgICAgICAgCisgICAg
ICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkg
eworICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1
Y3R1cmUtPnByZXZpb3VzSUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lIG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKKyAgICAg
ICAgICAgICAgICAgICAgLy8gYmVsb3cgbWF5IEdDLgorICAgICAgICAgICAgICAgICAgICBwY1sw
XS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisK
KyAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNl
bGwpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
cGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZp
b3VzSUQoKSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzZd
LnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAg
ICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVD
aGFpbihleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsKKyAgICAgICAg
ICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCks
IGNoYWluKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChw
Y1s4XS51Lm9wZXJhbmQpCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9
IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBj
WzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5z
ZXQoCisgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9w
ZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIGlmIChmYWxzZSAmJiAhc3RyY21wKGlk
ZW50LmFzY2lpKCkuZGF0YSgpLCAicmVuZGVyUmVmbGVjdGlvbnMiKSkKKyAgICAgICAgcHJpbnRm
KCJGaW5pc2hpbmcgYWNjZXNzIHRvIHJlbmRlclJlZmxlY3Rpb25zIGZyb20gTExJbnQgc2xvdyBw
YXRoLlxuIik7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9kZWxfYnlfaWQpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLnRvT2JqZWN0KGV4ZWMpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2JqZWN0
LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBjb2RlQmxv
Y2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgp
KQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBk
ZWxldGUgcHJvcGVydHkuIikpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxl
dGUpKTsKK30KKworaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCit7CisgICAgaWYgKExJS0VMWShiYXNl
VmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7CisgICAgICAgIGlmIChK
U1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5KGV4
ZWMsIGFzU3RyaW5nKHN1YnNjcmlwdCktPnZhbHVlKGV4ZWMpKSkKKyAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CisgICAgfQorICAgIAorICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkgewor
ICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChp
c0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5kZXgo
aSkpCisgICAgICAgICAgICByZXR1cm4gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhl
YywgaSk7CisgICAgICAgIAorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpICYm
IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAgICAg
cmV0dXJuIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgaSk7CisgICAgfQorICAgIAor
ICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CisgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVydHkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9S
RVRVUk5fUFJPRklMRUQob3BfZ2V0X2J5X3ZhbCwgZ2V0QnlWYWwoZXhlYywgTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQoreworICAgIEpTVmFsdWUgYXJndW1l
bnRzID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAg
ICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yyk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBMTElOVF9PUCgy
KSA9IGFyZ3VtZW50czsKKyAgICAgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1l
bnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgfQorICAgIAor
ICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBhcmd1bWVudHMsIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUp
Cit7CisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1AoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wdXRfYnlfdmFsKQoreworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmds
b2JhbERhdGEoKTsKKyAgICAKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSku
anNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAor
ICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CisgICAgICAgIHVpbnQzMl90
IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNBcnJheShiYXNlVmFs
dWUpKSB7CisgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUp
OworICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNhblNldEluZGV4KGkpKQorICAgICAgICAgICAg
ICAgIGpzQXJyYXktPnNldEluZGV4KGdsb2JhbERhdGEsIGksIHZhbHVlKTsKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4KGpzQXJyYXksIGV4ZWMs
IGksIHZhbHVlKTsKKyAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICB9CisgICAgICAg
IGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkKKyAgICAgICAgICAgICYmIGFzQnl0ZUFycmF5
KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CisgICAgICAgICAgICBKU0J5dGVBcnJh
eSoganNCeXRlQXJyYXkgPSBhc0J5dGVBcnJheShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYg
KHZhbHVlLmlzSW50MzIoKSkgeworICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRl
eChpLCB2YWx1ZS5hc0ludDMyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAg
ICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNOdW1iZXIoKSk7CisgICAg
ICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgYmFzZVZhbHVlLnB1dChleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgIExMSU5UX0VORCgpOwor
ICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUo
KSk7CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCkK
K3sKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAg
IEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIAor
ICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisg
ICAgYm9vbCBjb3VsZERlbGV0ZTsKKyAgICAKKyAgICB1aW50MzJfdCBpOworICAgIGlmIChzdWJz
Y3JpcHQuZ2V0VUludDMyKGkpKQorICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1l
dGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNlT2JqZWN0LCBleGVjLCBpKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIElk
ZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERl
bGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb3VsZERlbGV0ZSAm
JiBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9X
KGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7Cisg
ICAgCisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KQoreworICAgIExMSU5UX09QX0MoMSku
anNWYWx1ZSgpLnB1dChleGVjLCBwY1syXS51Lm9wZXJhbmQsIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1
dF9nZXR0ZXJfc2V0dGVyKQoreworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNP
YmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5q
c1ZhbHVlKCkpOworICAgIAorICAgIEdldHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0
ZXI6OmNyZWF0ZShleGVjKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAg
ICBKU1ZhbHVlIGdldHRlciA9IExMSU5UX09QKDMpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHNl
dHRlciA9IExMSU5UX09QKDQpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoZ2V0dGVyLmlzT2JqZWN0
KCkgfHwgZ2V0dGVyLmlzVW5kZWZpbmVkKCkpOworICAgIEFTU0VSVChzZXR0ZXIuaXNPYmplY3Qo
KSB8fCBzZXR0ZXIuaXNVbmRlZmluZWQoKSk7CisgICAgQVNTRVJUKGdldHRlci5pc09iamVjdCgp
IHx8IHNldHRlci5pc09iamVjdCgpKTsKKyAgICAKKyAgICBpZiAoIWdldHRlci5pc1VuZGVmaW5l
ZCgpKQorICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgYXNP
YmplY3QoZ2V0dGVyKSk7CisgICAgaWYgKCFzZXR0ZXIuaXNVbmRlZmluZWQoKSkKKyAgICAgICAg
YWNjZXNzb3ItPnNldFNldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KHNldHRlcikp
OworICAgIGJhc2VPYmotPnB1dERpcmVjdEFjY2Vzc29yKAorICAgICAgICBleGVjLT5nbG9iYWxE
YXRhKCksCisgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3Bl
cmFuZCksCisgICAgICAgIGFjY2Vzc29yLCBBY2Nlc3Nvcik7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKQoreworICAgIHVuc2lnbmVk
IGNvdW50ID0gcGNbMV0udS5vcGVyYW5kOworICAgIFNjb3BlQ2hhaW5Ob2RlKiB0bXAgPSBleGVj
LT5zY29wZUNoYWluKCk7CisgICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAgIHRtcCA9IHRtcC0+
cG9wKCk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbih0bXApOworICAgIHBjICs9IHBjWzJdLnUu
b3BlcmFuZDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2p0cnVlKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qdHJ1ZSwgTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pm
YWxzZSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamZhbHNlLCAhTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ps
ZXNzKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzcywganNMZXNzPHRydWU+KGV4ZWMsIExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKQoreworICAgIExMSU5UX0JSQU5DSChvcF9q
bmxlc3MsICFqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3Jl
YXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXIsIGpzTGVzczxmYWxzZT4oZXhl
YywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpCit7CisgICAgTExJTlRfQlJB
TkNIKG9wX2puZ3JlYXRlciwgIWpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbGVzc2VxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzc2VxLCBqc0xlc3NF
cTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKQoreworICAg
IExMSU5UX0JSQU5DSChvcF9qbmxlc3NlcSwgIWpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09Q
X0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfamdy
ZWF0ZXJlcSwganNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBM
TElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
am5ncmVhdGVyZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlcmVxLCAhanNMZXNz
RXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpz
VmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSkKK3sK
KyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIEFT
U0VSVChzY3J1dGluZWUuaXNEb3VibGUoKSk7CisgICAgZG91YmxlIHZhbHVlID0gc2NydXRpbmVl
LmFzRG91YmxlKCk7CisgICAgaW50MzJfdCBpbnRWYWx1ZSA9IHN0YXRpY19jYXN0PGludDMyX3Q+
KHZhbHVlKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBp
ZiAodmFsdWUgPT0gaW50VmFsdWUpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5pbW1lZGlhdGVTd2l0
Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShpbnRWYWx1ZSwgZGVm
YXVsdE9mZnNldCk7CisgICAgfSBlbHNlCisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3Ry
aW5nKQoreworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7
CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKCFzY3J1
dGluZWUuaXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBlbHNl
IHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAg
ICAgICAgcGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVy
YW5kKS5vZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGluZWUpLT52YWx1ZShleGVjKS5pbXBs
KCksIGRlZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUoKSAh
PSBGdW5jdGlvbkNvZGUKKyAgICAgICAgICAgfHwgIWNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVD
aGFpbigpCisgICAgICAgICAgIHx8IGV4ZWMtPnVuY2hlY2tlZFIoY29kZUJsb2NrLT5hY3RpdmF0
aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAg
IHByaW50ZigiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKKyNlbmRpZgorICAgIExMSU5UX1JFVFVS
Tihjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1syXS51Lm9wZXJhbmQpLT5tYWtlKGV4ZWMsIGV4
ZWMtPnNjb3BlQ2hhaW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1
bmNfZXhwKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25F
eHByKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNGdW5jdGlvbiogZnVuYyA9IGZ1bmN0aW9uLT5t
YWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgCisgICAgaWYgKCFmdW5jdGlvbi0+
bmFtZSgpLmlzTnVsbCgpKSB7CisgICAgICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIGZ1bmN0aW9u
U2NvcGVPYmplY3QgPSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgZnVuY3Rpb24t
Pm5hbWUoKSwgZnVuYywgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgZnVuYy0+c2V0
U2NvcGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jLT5zY29wZSgpLT5wdXNoKGZ1bmN0aW9uU2Nv
cGVPYmplY3QpKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKGZ1bmMpOworfQorCitz
dGF0aWMgSGVscGVyUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxs
ZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFt
ZSgpOworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7
CisKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7Cisg
ICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworCisgICAgaWYgKGtpbmQgPT0gQ29kZUZv
ckNhbGwpIHsKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNh
bGxUeXBlID0gZ2V0Q2FsbERhdGEoY2FsbGVlLCBjYWxsRGF0YSk7CisgICAgCisgICAgICAgIEFT
U0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZUpTKTsKKyAgICAKKyAgICAgICAgaWYgKGNhbGxUeXBl
ID09IENhbGxUeXBlSG9zdCkgeworICAgICAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1
cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0Nh
bGxlZSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVj
Q2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkpOworICAgICAgICB9CisgICAgICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAg
ICAgIHByaW50ZigiQ2FsbCBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUu
ZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGVOb25lKTsKKyAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90
QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQg
PT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgCisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3RE
YXRhOworICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEo
Y2FsbGVlLCBjb25zdHJ1Y3REYXRhKTsKKyAgICAKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAh
PSBDb25zdHJ1Y3RUeXBlSlMpOworICAgIAorICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0
cnVjdFR5cGVIb3N0KSB7CisgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxl
ZSkpOworICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICAKKyNp
ZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgICAgICBwcmludGYoIkNvbnN0cnVjdG9yIGNhbGxl
ZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRp
ZgorCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZU5vbmUpOworICAg
IExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4
ZWMsIGNhbGxlZSkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhl
Y1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCwgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlLCBMTEludENhbGxMaW5rSW5mbyogY2FsbExp
bmtJbmZvID0gMCkKK3sKKyAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNG
dW5jdGlvbihjYWxsZWVBc1ZhbHVlKTsKKyAgICBpZiAoIWNhbGxlZUFzRnVuY3Rpb25DZWxsKQor
ICAgICAgICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgcGMsIGNhbGxlZUFzVmFs
dWUsIGtpbmQpOworICAgIAorICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oY2Fs
bGVlQXNGdW5jdGlvbkNlbGwpOworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oY2FsbGVl
LT5zY29wZVVuY2hlY2tlZCgpKTsKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IGNh
bGxlZS0+ZXhlY3V0YWJsZSgpOworICAgIAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2Rl
UHRyOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKKyAgICBpZiAoZXhlY3V0YWJsZS0+
aXNIb3N0RnVuY3Rpb24oKSkKKyAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmdlbmVyYXRl
ZEpJVENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5j
dGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICAgICAgSlNPYmplY3QqIGVycm9yID0g
ZnVuY3Rpb25FeGVjdXRhYmxlLT5jb21waWxlRm9yKGV4ZWNDYWxsZWUsIGNhbGxlZS0+c2NvcGUo
KSwga2luZCk7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIExMSU5UX0NBTExfVEhS
T1coZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKSwgcGMsIGVycm9yKTsKKyAgICAgICAgY29kZUJs
b2NrID0gJmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7Cisg
ICAgICAgIEFTU0VSVChjb2RlQmxvY2spOworICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkpKQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJs
ZS0+Z2VuZXJhdGVkSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRD
b2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgfQorICAgIAorICAgIGlmIChjYWxs
TGlua0luZm8pIHsKKyAgICAgICAgaWYgKGNhbGxMaW5rSW5mby0+aXNPbkxpc3QoKSkKKyAgICAg
ICAgICAgIGNhbGxMaW5rSW5mby0+cmVtb3ZlKCk7CisgICAgICAgIEV4ZWNTdGF0ZSogZXhlY0Nh
bGxlciA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+
Y2FsbGVlLnNldChleGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4ZWNDYWxsZXItPmNvZGVCbG9j
aygpLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5s
YXN0U2VlbkNhbGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBleGVjQ2FsbGVyLT5j
b2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAgICAgIGNhbGxMaW5r
SW5mby0+bWFjaGluZUNvZGVUYXJnZXQgPSBjb2RlUHRyOworICAgICAgICBpZiAoY29kZUJsb2Nr
KQorICAgICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKGNhbGxMaW5rSW5mbyk7
CisgICAgfQorICAgIAorICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCBjb2Rl
UHRyLmV4ZWN1dGFibGVBZGRyZXNzKCkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJuVHlwZSBn
ZW5lcmljQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQg
dXAgYSBjYWxsIGZyYW1lLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNv
bXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gSWYgcG9zc2libGUsIGxpbmsgdGhlIGNh
bGwncyBpbmxpbmUgY2FjaGUuCisgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNv
ZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCisgICAgCisgICAgSlNW
YWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgCisgICAg
RXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAg
ICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJh
bmQpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0g
Y2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAg
ICAKKyAgICBBU1NFUlQocGNbNF0udS5jYWxsTGlua0luZm8pOworICAgIHJldHVybiBzZXRVcENh
bGwoZXhlY0NhbGxlZSwgcGMsIGtpbmQsIGNhbGxlZUFzVmFsdWUsIHBjWzRdLnUuY2FsbExpbmtJ
bmZvKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpCit7CisgICAgcmV0dXJu
IGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jb25zdHJ1Y3QpCit7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBj
LCBDb2RlRm9yQ29uc3RydWN0KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxf
dmFyYXJncykKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2Fs
bCBmcmFtZSB3aGlsZSByZXNwZWN0aW5nIHRoZSB2YXJpYWJsZSBhcmd1bWVudHMuCisgICAgLy8g
LSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCisg
ICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFu
ZCB0aGUgbmV3IGNhbGwgZnJhbWUuCisgICAgCisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0g
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVl
ID0gbG9hZFZhcmFyZ3MoCisgICAgICAgIGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJw
cmV0ZXItPnJlZ2lzdGVyRmlsZSgpLAorICAgICAgICBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHBjWzRdLnUub3BlcmFuZCk7CisgICAgTExJTlRfQ0FM
TF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpOworICAgIAorICAgIGV4ZWNDYWxsZWUtPnVuY2hl
Y2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2Fs
bGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKFJlZ2lzdGVy
RmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4ocGMgKyBP
UENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykpOworICAgIAorICAgIHJldHVybiBzZXRVcENh
bGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCkKK3sKKyAgICBKU1ZhbHVlIGNhbGxlZUFz
VmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVj
Q2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVl
LT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lz
dGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0U2Nv
cGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBD
KGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KCZsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkp
OworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKyAgICBleGVjLT51bmNoZWNrZWRS
KFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJf
dD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfZXZhbCkpOworICAgIAorICAgIGlmICghaXNI
b3N0RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQorICAgICAgICByZXR1
cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7
CisgICAgCisgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0gZXZhbChleGVjQ2Fs
bGVlKTsKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKK3sKKyAgICBBU1NFUlQoZXhlYy0+Y29k
ZUJsb2NrKCktPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgSlNWYWx1ZSBhY3RpdmF0aW9u
VmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhY3RpdmF0aW9uVmFsdWUp
IHsKKyAgICAgICAgaWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFy
Z3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSkgeworICAgICAgICAg
ICAgaWYgKCFleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICAg
ICAgYXNBcmd1bWVudHModiktPnRlYXJPZmYoZXhlYyk7CisgICAgICAgIH0KKyAgICAgICAgTExJ
TlRfRU5EKCk7CisgICAgfQorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGFzQWN0aXZh
dGlvbihhY3RpdmF0aW9uVmFsdWUpOworICAgIGFjdGl2YXRpb24tPnRlYXJPZmYoZXhlYy0+Z2xv
YmFsRGF0YSgpKTsKKyAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlm
aWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKQorICAgICAg
ICBhc0FyZ3VtZW50cyh2KS0+ZGlkVGVhck9mZkFjdGl2YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBhY3RpdmF0aW9uKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cykKK3sKKyAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2Nr
KCktPnVzZXNBcmd1bWVudHMoKSAmJiAhZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3Bl
Q2hhaW4oKSk7CisgICAgYXNBcmd1bWVudHMoZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKS0+dGVhck9mZihleGVj
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNh
dCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNTdHJpbmcoZXhlYywgJkxMSU5UX09QKDIpLCBwY1sz
XS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2
ZSkKK3sKKyAgICBMTElOVF9SRVRVUk4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9QcmltaXRp
dmUoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X3BuYW1lcykKK3sK
KyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKHYuaXNVbmRl
ZmluZWRPck51bGwoKSkgeworICAgICAgICBwYyArPSBwY1s1XS51Lm9wZXJhbmQ7CisgICAgICAg
IExMSU5UX0VORCgpOworICAgIH0KKyAgICAKKyAgICBKU09iamVjdCogbyA9IHYudG9PYmplY3Qo
ZXhlYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvLT5zdHJ1Y3R1cmUoKTsKKyAgICBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gc3RydWN0dXJl
LT5lbnVtZXJhdGlvbkNhY2hlKCk7CisgICAgaWYgKCFqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yIHx8
IGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmNhY2hlZFByb3RvdHlwZUNoYWluKCkgIT0gc3RydWN0
dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSkKKyAgICAgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRv
ciA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBvKTsKKyAgICAKKyAgICBM
TElOVF9PUCgxKSA9IEpTVmFsdWUoanNQcm9wZXJ0eU5hbWVJdGVyYXRvcik7CisgICAgTExJTlRf
T1AoMikgPSBKU1ZhbHVlKG8pOworICAgIExMSU5UX09QKDMpID0gUmVnaXN0ZXI6OndpdGhJbnQo
MCk7CisgICAgTExJTlRfT1AoNCkgPSBSZWdpc3Rlcjo6d2l0aEludChqc1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLT5zaXplKCkpOworICAgIAorICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X3Bu
YW1lcyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXh0X3BuYW1lKQoreworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoTExJTlRfT1AoMiku
anNWYWx1ZSgpKTsKKyAgICBKU1N0cmluZyogcHJvcGVydHkgPSBhc1N0cmluZyhMTElOVF9PUCgx
KS5qc1ZhbHVlKCkpOworICAgIGlmIChiYXNlLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVy
KGV4ZWMsIHByb3BlcnR5LT52YWx1ZShleGVjKSkpKSB7CisgICAgICAgIC8vIEdvIHRvIHRhcmdl
dC4KKyAgICAgICAgcGMgKz0gcGNbNl0udS5vcGVyYW5kOworICAgIH0gLy8gRWxzZSwgZG9uJ3Qg
Y2hhbmdlIHRoZSBQQywgc28gdGhlIGludGVycHJldGVyIHdpbGwgcmVsb29wLgorICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSkKK3sKKyAg
ICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIG8gPSB2
LnRvT2JqZWN0KGV4ZWMpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAg
IExMSU5UX09QKDEpID0gbzsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hh
aW4oKS0+cHVzaChvKSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUpCit7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVj
LT5zY29wZUNoYWluKCktPnBvcCgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKQoreworICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIHNjb3BlID0gSlNTdGF0aWNT
Y29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9w
ZXJhbmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIERvbnREZWxldGUpOworICAgIGV4ZWMtPnNl
dFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKHNjb3BlKSk7CisgICAgTExJTlRf
UkVUVVJOKHNjb3BlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KQorewor
ICAgIExMSU5UX1RIUk9XKExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKK3sKKyAgICBMTElOVF9USFJP
VyhjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2RlYnVnKQoreworICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBp
bnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOworICAgIGludCBsYXN0TGluZSA9IHBjWzNd
LnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmRl
YnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGlu
ZSwgbGFzdExpbmUpOworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxl
ZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT53aWxsRXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1Zh
bHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJvZmlsZV9kaWRfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZl
cmVuY2UoKSktPmRpZEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAv
LyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRI
ZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
SGVscGVycy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50SGVscGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50SGVscGVyc19o
CisjZGVmaW5lIExMSW50SGVscGVyc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNp
bmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25h
bWVzcGFjZSBMTEludCB7CisKK3R5cGVkZWYgaW50NjRfdCBIZWxwZXJSZXR1cm5UeXBlOworCitl
eHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUq
LCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKK2V4dGVybiAiQyIg
SGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUqLCBJbnN0cnVjdGlv
biosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKKworI2RlZmluZSBMTElOVF9IRUxQRVJf
REVDTChuYW1lKSBcCisgICAgZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50XyMjbmFt
ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKKworTExJTlRfSEVMUEVSX0RFQ0wo
dHJhY2VfcHJvbG9ndWUpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rp
b25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9j
YWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCk7
CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZSk7CitMTElOVF9IRUxQRVJfREVDTChzcGVjaWFsX3Ry
YWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcik7CitMTElOVF9IRUxQRVJfREVDTChl
bnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1
bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChs
b29wX29zcik7CitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KHJlZ2lzdGVyX2ZpbGVfY2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJp
dHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2sp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jcmVhdGVfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29udmVydF90aGlz
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXdfYXJyYXkpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJh
eV9idWZmZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdleHApOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25vdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
c3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3RlcSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2Vx
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9kZWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Bvc3RfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25lZ2F0ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9tdWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1Yik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2Qp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Jp
dG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2JpdG5vdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2lu
c3RhbmNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9mKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3Vu
ZGVmaW5lZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbik7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX29iamVjdCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2luKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9yZXNvbHZlX3NraXApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmVfZ2xvYmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbF9keW5h
bWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2Jh
bF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9yZXNvbHZlX3dpdGhfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5
X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9kZWxfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV92YWwpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHV0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wdXRfZ2V0dGVyX3NldHRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam1wX3Nj
b3Blcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2pmYWxzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3MpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
amdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcik7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfamxlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5s
ZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9z
d2l0Y2hfaW1tKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfY2hhcik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0cmluZyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmV3X2Z1bmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jX2V4cCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVh
cl9vZmZfYXJndW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X3BuYW1lcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcG9wX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19z
Y29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZGVidWcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKTsKKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAv
LyBMTEludEhlbHBlcnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKKyNkZWZpbmUgTExJbnRPZmZs
aW5lQXNtQ29uZmlnX2gKKworI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSA8d3Rm
L0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENQVShYODYp
CisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9Y
ODYgMAorI2VuZGlmCisKKyNpZiBDUFUoQVJNdjcpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3
IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDAKKyNlbmRpZgorCisjaWYgIUFT
U0VSVF9ESVNBQkxFRAorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAxCisjZWxz
ZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIENQ
VShCSUdfRU5ESUFOKQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDEKKyNlbHNlCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMAorI2VuZGlmCisKKyNpZiBFTkFCTEUoTExJ
TlRfT1NSX1RPX0pJVCkKKyNkZWZpbmUgT0ZGTElORV9BU01fSklUX0VOQUJMRUQgMQorI2Vsc2UK
KyNkZWZpbmUgT0ZGTElORV9BU01fSklUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBMTElOVF9F
WEVDVVRJT05fVFJBQ0lORworI2RlZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAx
CisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAwCisjZW5kaWYK
KworI2VuZGlmIC8vIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJI
ZWFwLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKSVRTdHVicy5oIgor
I2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0Z1
bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTVHlwZUluZm8u
aCIKKyNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCisjaW5jbHVkZSAiSnVtcFRhYmxlLmgi
CisjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCisjaW5jbHVkZSAiTWFya2VkU3Bh
Y2UuaCIKKyNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgi
CisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKKyNp
bmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVmaW5lIE9GRkxJTkVfQVNNX09GRlNFVE9GKGNsYXp6
LCBmaWVsZCkgT0JKRUNUX09GRlNFVE9GKGNsYXp6LCBmaWVsZCkKKworY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQqIGR1bW15
KCk7Cit9OworCitjb25zdCB1bnNpZ25lZCogTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgp
Cit7CisvLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2ZmbGluZWFzbS9nZW5lcmF0ZV9v
ZmZzZXRzX2V4dHJhY3Rvci5yYiwgYW5kIGNvbnRhaW5zIGNvZGUKKy8vIHRvIGNyZWF0ZSBhIHRh
YmxlIG9mIG9mZnNldHMsIHNpemVzLCBhbmQgYSBoZWFkZXIgaWRlbnRpZnlpbmcgd2hhdCBjb21i
aW5hdGlvbiBvZgorLy8gUGxhdGZvcm0uaCBtYWNyb3Mgd2UgaGF2ZSBzZXQuIFdlIGluY2x1ZGUg
aXQgaW5zaWRlIG9mIGEgbWV0aG9kIG9uIExMSW50T2Zmc2V0c0V4dHJhY3RvcgorLy8gYmVjYXVz
ZSB0aGUgZmllbGRzIHdob3NlIG9mZnNldHMgd2UncmUgZXh0cmFjdGluZyBhcmUgbW9zdGx5IHBy
aXZhdGUuIFNvIHdlIG1ha2UgdGhlaXIKKy8vIGNsYXNzZXMgZnJpZW5kcyB3aXRoIExMSW50T2Zm
c2V0c0V4dHJhY3RvciwgYW5kIGluY2x1ZGUgdGhlIGhlYWRlciBoZXJlLCB0byBnZXQgdGhlIEMr
KworLy8gY29tcGlsZXIgdG8ga2luZGx5IHN0ZXAgYXNpZGUgYW5kIHlpZWxkIHRvIG91ciBiZXN0
IGludGVudGlvbnMuCisjaW5jbHVkZSAiTExJbnREZXNpcmVkT2Zmc2V0cy5oIgorICAgIHJldHVy
biBleHRyYWN0b3JUYWJsZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK2ludCBtYWluKGlu
dCwgY2hhcioqKQoreworICAgIC8vIE91dCBvZiBhbiBhYnVuZGFuY2Ugb2YgY2F1dGlvbiwgbWFr
ZSBzdXJlIHRoYXQgTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpIGlzIGxpdmUsCisgICAg
Ly8gYW5kIHRoZSBleHRyYWN0b3JUYWJsZSBpcyBsaXZlLCB0b28uCisgICAgcHJpbnRmKCIlcFxu
IiwgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkpOworICAgIHJldHVybiAwOwor
fQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJ
bnRUaHVua3MuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkpTSW50ZXJmYWNl
SklULmgiCisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJw
cmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3N0YXRpYyBN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhLCB2b2lkICgqdGFyZ2V0KSgpKQoreworICAgIEpTSW50ZXJmYWNlSklUIGpp
dDsKKyAgICAKKyAgICAvLyBGSVhNRTogdGhlcmUncyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8g
ZG8gaXQgb24gWDg2LCBidXQgSSdtIG5vdCBzdXJlIEkgY2FyZS4KKyAgICBqaXQubW92ZShKU0lu
dGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdldCkpLCBK
U0ludGVyZmFjZUpJVDo6cmVnVDApOworICAgIGppdC5qdW1wKEpTSW50ZXJmYWNlSklUOjpyZWdU
MCk7CisgICAgCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwgJmppdCwg
R0xPQkFMX1RIVU5LX0lEKTsKKyAgICByZXR1cm4gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7
Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2Vu
ZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9n
dWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRy
eVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4g
Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZv
ckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQor
eworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9m
dW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGds
b2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spOworfQor
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhn
bG9iYWxEYXRhLCBsbGludF9ldmFsX3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkK
K3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRf
cHJvZ3JhbV9wcm9sb2d1ZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisj
ZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50VGh1bmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50VGh1bmtz
X2gKKyNkZWZpbmUgTExJbnRUaHVua3NfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisK
KyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsRGF0YTsKKworbmFtZXNwYWNlIExM
SW50IHsKKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtH
ZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25G
b3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0ds
b2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFy
aXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisK
KyNlbmRpZiAvLyBMTEludFRodW5rc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIzNzQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMg
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKworIyBDcmFzaCBjb3Vyc2Ugb24gdGhlIGxhbmd1YWdlIHRoYXQgdGhpcyBp
cyB3cml0dGVuIGluICh3aGljaCBJIGp1c3QgY2FsbAorIyAiYXNzZW1ibHkiIGV2ZW4gdGhvdWdo
IGl0J3MgbW9yZSB0aGFuIHRoYXQpOgorIworIyAtIE1vc3RseSBnYXMtc3R5bGUgb3BlcmFuZCBv
cmRlcmluZy4gVGhlIGxhc3Qgb3BlcmFuZCB0ZW5kcyB0byBiZSB0aGUKKyMgICBkZXN0aW5hdGlv
bi4gU28gImEgOj0gYiIgaXMgd3JpdHRlbiBhcyAibW92IGIsIGEiLiBCdXQgdW5saWtlIGdhcywK
KyMgICBjb21wYXJpc29ucyBhcmUgaW4tb3JkZXIsIHNvICJpZiAoYSA8IGIpIiBpcyB3cml0dGVu
IGFzCisjICAgImJpbHQgYSwgYiwgLi4uIi4KKyMKKyMgLSAiYiIgPSBieXRlLCAiaCIgPSAxNi1i
aXQgd29yZCwgImkiID0gMzItYml0IHdvcmQsICJwIiA9IHBvaW50ZXIuCisjICAgQ3VycmVudGx5
IHRoaXMgaXMganVzdCAzMi1iaXQgc28gImkiIGFuZCAicCIgYXJlIGludGVyY2hhbmdlYWJsZQor
IyAgIGV4Y2VwdCB3aGVuIGFuIG9wIHN1cHBvcnRzIG9uZSBidXQgbm90IHRoZSBvdGhlci4KKyMK
KyMgLSBJbiBnZW5lcmFsLCB2YWxpZCBvcGVyYW5kcyBmb3IgbWFjcm8gaW52b2NhdGlvbnMgYW5k
IGluc3RydWN0aW9ucyBhcmUKKyMgICByZWdpc3RlcnMgKGVnICJ0MCIpLCBhZGRyZXNzZXMgKGVn
ICI0W3QwXSIpLCBiYXNlLWluZGV4IGFkZHJlc3NlcworIyAgIChlZyAiN1t0MCwgdDEsIDJdIiks
IGFic29sdXRlIGFkZHJlc3NlcyAoZWcgIjB4YTAwMDAwMDBbXSIpLCBvciBsYWJlbHMKKyMgICAo
ZWcgIl9mb28iIG9yICIuZm9vIikuIE1hY3JvIGludm9jYXRpb25zIGNhbiBhbHNvIHRha2UgYW5v
bnltb3VzCisjICAgbWFjcm9zIGFzIG9wZXJhbmRzLiBJbnN0cnVjdGlvbnMgY2Fubm90IHRha2Ug
YW5vbnltb3VzIG1hY3Jvcy4KKyMKKyMgLSBMYWJlbHMgbXVzdCBoYXZlIG5hbWVzIHRoYXQgYmVn
aW4gd2l0aCBlaXRoZXIgIl8iIG9yICIuIi4gIEEgIi4iIGxhYmVsCisjICAgaXMgbG9jYWwgYW5k
IGdldHMgcmVuYW1lZCBiZWZvcmUgY29kZSBnZW4gdG8gbWluaW1pemUgbmFtZXNwYWNlCisjICAg
cG9sbHV0aW9uLiBBICJfIiBsYWJlbCBpcyBhbiBleHRlcm4gc3ltYm9sIChpLmUuICIuZ2xvYmwi
KS4gVGhlICJfIgorIyAgIG1heSBvciBtYXkgbm90IGJlIHJlbW92ZWQgZHVyaW5nIGNvZGUgZ2Vu
IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBhc20KKyMgICBjb252ZW50aW9ucyBmb3IgQyBuYW1l
IG1hbmdsaW5nIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0gbWFuZGF0ZSBhICJfIgorIyAgIHByZWZp
eC4KKyMKKyMgLSBBICJtYWNybyIgaXMgYSBsYW1iZGEgZXhwcmVzc2lvbiwgd2hpY2ggbWF5IGJl
IGVpdGhlciBhbm9ueW1vdXMgb3IKKyMgICBuYW1lZC4gQnV0IHRoaXMgaGFzIGNhdmVhdHMuICJt
YWNybyIgY2FuIHRha2UgemVybyBvciBtb3JlIGFyZ3VtZW50cywKKyMgICB3aGljaCBtYXkgYmUg
bWFjcm9zIG9yIGFueSB2YWxpZCBvcGVyYW5kcywgYnV0IGl0IGNhbiBvbmx5IHJldHVybgorIyAg
IGNvZGUuIEJ1dCB5b3UgY2FuIGRvIFR1cmluZy1jb21wbGV0ZSB0aGluZ3MgdmlhIGNvbnRpbnVh
dGlvbiBwYXNzaW5nCisjICAgc3R5bGU6ICJtYWNybyBmb28gKGEsIGIpIGIoYSkgZW5kIGZvbyhm
b28sIGZvbykiLiBBY3R1YWxseSwgZG9uJ3QgZG8KKyMgICB0aGF0LCBzaW5jZSB5b3UnbGwganVz
dCBjcmFzaCB0aGUgYXNzZW1ibGVyLgorIworIyAtIEFuICJpZiIgaXMgYSBjb25kaXRpb25hbCBv
biBzZXR0aW5ncy4gQW55IGlkZW50aWZpZXIgc3VwcGxpZWQgaW4gdGhlCisjICAgcHJlZGljYXRl
IG9mIGFuICJpZiIgaXMgYXNzdW1lZCB0byBiZSBhICNkZWZpbmUgdGhhdCBpcyBhdmFpbGFibGUK
KyMgICBkdXJpbmcgY29kZSBnZW4uIFNvIHlvdSBjYW4ndCB1c2UgImlmIiBmb3IgY29tcHV0YXRp
b24gaW4gYSBtYWNybywgYnV0CisjICAgeW91IGNhbiB1c2UgaXQgdG8gc2VsZWN0IGRpZmZlcmVu
dCBwaWVjZXMgb2YgY29kZSBmb3IgZGlmZmVyZW50CisjICAgcGxhdGZvcm1zLgorIworIyAtIEFy
Z3VtZW50cyB0byBtYWNyb3MgZm9sbG93IGxleGljYWwgc2NvcGluZyByYXRoZXIgdGhhbiBkeW5h
bWljIHNjb3BpbmcuCisjICAgQ29uc3QncyBhbHNvIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgYW5k
IG1heSBvdmVycmlkZSAoaGlkZSkgYXJndW1lbnRzCisjICAgb3Igb3RoZXIgY29uc3RzLiBBbGwg
dmFyaWFibGVzIChhcmd1bWVudHMgYW5kIGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8g
b3BlcmFuZHMuIEFkZGl0aW9uYWxseSwgYXJndW1lbnRzIChidXQgbm90IGNvbnN0YW50cykgY2Fu
IGJlIGJvdW5kCisjICAgdG8gbWFjcm9zLgorCisKKyMgVGhlc2UgZGVjbGFyYXRpb25zIG11c3Qg
bWF0Y2ggaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmguCitjb25zdCBDYWxsRnJhbWVIZWFkZXJT
aXplID0gNDgKK2NvbnN0IEFyZ3VtZW50Q291bnQgPSAtNDgKK2NvbnN0IENhbGxlckZyYW1lID0g
LTQwCitjb25zdCBDYWxsZWUgPSAtMzIKK2NvbnN0IFNjb3BlQ2hhaW4gPSAtMjQKK2NvbnN0IFJl
dHVyblBDID0gLTE2Citjb25zdCBDb2RlQmxvY2sgPSAtOAorCitjb25zdCBUaGlzQXJndW1lbnRP
ZmZzZXQgPSAtQ2FsbEZyYW1lSGVhZGVyU2l6ZSAtIDgKKworIyBEZWNsYXJlIHNvbWUgYWxpYXNl
cyBmb3IgdGhlIHJlZ2lzdGVycyB3ZSB3aWxsIHVzZS4KK2NvbnN0IFBDID0gdDQKKworIyBPZmZz
ZXRzIG5lZWRlZCBmb3IgcmVhc29uaW5nIGFib3V0IHZhbHVlIHJlcHJlc2VudGF0aW9uLgoraWYg
QklHX0VORElBTgorICAgIGNvbnN0IFRhZ09mZnNldCA9IDAKKyAgICBjb25zdCBQYXlsb2FkT2Zm
c2V0ID0gNAorZWxzZQorICAgIGNvbnN0IFRhZ09mZnNldCA9IDQKKyAgICBjb25zdCBQYXlsb2Fk
T2Zmc2V0ID0gMAorZW5kCisKKyMgVmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgorY29u
c3QgSW50MzJUYWcgPSAtMQorY29uc3QgQm9vbGVhblRhZyA9IC0yCitjb25zdCBOdWxsVGFnID0g
LTMKK2NvbnN0IFVuZGVmaW5lZFRhZyA9IC00Citjb25zdCBDZWxsVGFnID0gLTUKK2NvbnN0IEVt
cHR5VmFsdWVUYWcgPSAtNgorY29uc3QgRGVsZXRlZFZhbHVlVGFnID0gLTcKK2NvbnN0IExvd2Vz
dFRhZyA9IERlbGV0ZWRWYWx1ZVRhZworCisjIFR5cGUgY29uc3RhbnRzLgorY29uc3QgU3RyaW5n
VHlwZSA9IDUKK2NvbnN0IE9iamVjdFR5cGUgPSAxMAorCisjIFR5cGUgZmxhZ3MgY29uc3RhbnRz
LgorY29uc3QgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDEKK2NvbnN0IEltcGxlbWVudHNIYXNJ
bnN0YW5jZSA9IDIKK2NvbnN0IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSA4CisKKyMg
SGVhcCBhbGxvY2F0aW9uIGNvbnN0YW50cy4KK2NvbnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJ
bmRleCA9IDMKKworIyBCeXRlY29kZSBvcGVyYW5kIGNvbnN0YW50cy4KK2NvbnN0IEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMAorCisjIENvZGUgdHlwZSBjb25zdGFudHMu
Citjb25zdCBHbG9iYWxDb2RlID0gMAorY29uc3QgRXZhbENvZGUgPSAxCitjb25zdCBGdW5jdGlv
bkNvZGUgPSAyCisKKyMgVGhlIGludGVycHJldGVyIHN0ZWFscyB0aGUgdGFnIHdvcmQgb2YgdGhl
IGFyZ3VtZW50IGNvdW50LgorY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBU
YWdPZmZzZXQKKworIyBUaGlzIG11c3QgbWF0Y2ggd3RmL1ZlY3Rvci5oLgorY29uc3QgVmVjdG9y
U2l6ZU9mZnNldCA9IDAKK2NvbnN0IFZlY3RvckJ1ZmZlck9mZnNldCA9IDQKKworIyBTdHJpbmcg
ZmxhZ3MuCitjb25zdCBIYXNoRmxhZ3M4Qml0QnVmZmVyID0gNjQKKworIyBVdGlsaXRpZXMKK21h
Y3JvIGNyYXNoKCkKKyAgICBzdG9yZWkgMCwgMHhiYmFkYmVlZltdCisgICAgbW92ZSAwLCB0MAor
ICAgIGNhbGwgdDAKK2VuZAorCittYWNybyBhc3NlcnQoYXNzZXJ0aW9uKQorICAgIGlmIEFTU0VS
VF9FTkFCTEVECisgICAgICAgIGFzc2VydGlvbigub2spCisgICAgICAgIGNyYXNoKCkKKyAgICAu
b2s6CisgICAgZW5kCitlbmQKKworbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxs
KGRlc3RpbmF0aW9uUmVnaXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBsciwgZGVz
dGluYXRpb25SZWdpc3RlcgorICAgIGVsc2lmIFg4NgorICAgICAgICBwb3AgZGVzdGluYXRpb25S
ZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyBy
ZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihzb3VyY2VSZWdpc3RlcikKKyAgICBpZiBB
Uk12NworICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgorICAgIGVsc2lmIFg4NgorICAg
ICAgICBwdXNoIHNvdXJjZVJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVu
ZAorZW5kCisKK21hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCisgICAgYWRkcCBhZHZhbmNlICogNCwg
UEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldChw
Y09mZnNldCkKKyAgICBsc2hpZnRpIDIsIHBjT2Zmc2V0CisgICAgYWRkcCBwY09mZnNldCwgUEMK
KyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQorICAg
IGxvYWRpIHBjT2Zmc2V0LCB0MAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MCkKK2Vu
ZAorCittYWNybyBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCAr
IFRhZ09mZnNldFtjZnJdLCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gY0NhbGwyKGZ1
bmN0aW9uLCBhcmcxLCBhcmcyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAK
KyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEs
IDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVu
ZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCisjIFRoaXMgYmFyZWx5IHdvcmtzLiBhcmczIGFu
ZCBhcmc0IHNob3VsZCBwcm9iYWJseSBiZSBpbW1lZGlhdGVzLgorbWFjcm8gY0NhbGw0KGZ1bmN0
aW9uLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUg
YXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgICAgICBtb3ZlIGFyZzMsIHQyCisg
ICAgICAgIG1vdmUgYXJnNCwgdDMKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBhcmcxLCAw
CisgICAgICAgIHBva2UgYXJnMiwgMQorICAgICAgICBwb2tlIGFyZzMsIDIKKyAgICAgICAgcG9r
ZSBhcmc0LCAzCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVu
Y3Rpb24KK2VuZAorCittYWNybyBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBjQ2FsbDIoaGVscGVy
LCBjZnIsIFBDKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBE
ZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgYW4gb3BlcmFuZCBpbiB0
aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtLiBmcm9tV2hlcmUKKyMgc2hvdWxkIGJlIGFuIGltbWVkaWF0
ZSBpbnRlZ2VyIC0gYW55IGludGVnZXIgeW91IGxpa2U7IHVzZSBpdCB0byBpZGVudGlmeSB0aGUg
cGxhY2UgeW91J3JlCisjIGRlYnVnZ2luZyBmcm9tLiBvcGVyYW5kIHNob3VsZCBsaWtld2lzZSBi
ZSBhbiBpbW1lZGlhdGUsIGFuZCBzaG91bGQgaWRlbnRpZnkgdGhlIG9wZXJhbmQKKyMgaW4gdGhl
IGluc3RydWN0aW9uIHN0cmVhbSB5b3UnZCBsaWtlIHRvIHByaW50IG91dC4KK21hY3JvIHRyYWNl
T3BlcmFuZChmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgY0NhbGw0KF9sbGludF90cmFjZV9vcGVy
YW5kLCBjZnIsIFBDLCBmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBt
b3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0
byBwcmludCB0aGUgdmFsdWUgb2YgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24KKyMgc3Ry
ZWFtLiBTYW1lIGFzIHRyYWNlT3BlcmFuZCgpLCBidXQgYXNzdW1lcyB0aGF0IHRoZSBvcGVyYW5k
IGlzIGEgcmVnaXN0ZXIsIGFuZCBwcmludHMgaXRzCisjIHZhbHVlLgorbWFjcm8gdHJhY2VWYWx1
ZShmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgY0NhbGw0KF9sbGludF90cmFjZV92YWx1ZSwgY2Zy
LCBQQywgZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwg
Y2ZyCitlbmQKKworbWFjcm8gdHJhY2VFeGVjdXRpb24oKQorICAgIGlmIEVYRUNVVElPTl9UUkFD
SU5HCisgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3RyYWNlKQorICAgIGVuZAorZW5kCisKKyMg
Q2FsbCBhIGhlbHBlciBmb3IgY2FsbCBvcGNvZGVzLgorbWFjcm8gY2FsbENhbGxIZWxwZXIoYWR2
YW5jZSwgaGVscGVyLCBhY3Rpb24pCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMsIHQwCisgICAg
c3RvcmVwIHQwLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBjQ2FsbDIoaGVs
cGVyLCBjZnIsIFBDKQorICAgIG1vdmUgdDEsIGNmcgorICAgIGFjdGlvbih0MCkKK2VuZAorCitt
YWNybyBzbG93UGF0aEZvckNhbGwoYWR2YW5jZSwgaGVscGVyKQorICAgIGNhbGxDYWxsSGVscGVy
KAorICAgICAgICBhZHZhbmNlLAorICAgICAgICBoZWxwZXIsCisgICAgICAgIG1hY3JvIChjYWxs
ZWUpCisgICAgICAgICAgICBjYWxsIGNhbGxlZQorICAgICAgICAgICAgZGlzcGF0Y2hBZnRlckNh
bGwoKQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVChpbmNyZW1l
bnQsIGFjdGlvbikKKyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDAKKyAgICAgICAgYmFkZGlzIGluY3JlbWVudCwgQ29kZUJsb2NrOjptX2xsaW50RXhl
Y3V0ZUNvdW50ZXJbdDBdLCAuY29udGludWUKKyAgICAgICAgYWN0aW9uKCkKKyAgICAuY29udGlu
dWU6CisgICAgZW5kCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAg
IGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEsCisgICAgICAgIG1hY3JvICgpCisgICAgICAg
ICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgICAgICAg
ICAgY0NhbGwyKF9sbGludF9sb29wX29zciwgY2ZyLCBQQykKKyAgICAgICAgICAgIG1vdmUgdDEs
IGNmcgorICAgICAgICAgICAgYnRweiB0MCwgLnJlY292ZXIKKyAgICAgICAgICAgIGptcCB0MAor
ICAgICAgICAucmVjb3ZlcjoKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdP
ZmZzZXRbY2ZyXSwgUEMKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9K
SVRGb3JFcGlsb2d1ZSgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMTAsCisgICAg
ICAgIG1hY3JvICgpCisgICAgICAgICAgICBjYWxsSGVscGVyKF9sbGludF9yZXBsYWNlKQorICAg
ICAgICBlbmQpCitlbmQKKworbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoaW5kZXgpCisgICAgYXNz
ZXJ0KG1hY3JvIChvaykgYmlsdCBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIG9r
IGVuZCkKK2VuZAorCisjIEluZGV4LCB0YWcsIGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50
IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90CisjIGNoYW5nZWQuCittYWNybyBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBw
YXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBW
ZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0
IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0
byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsb2FkcCBU
YWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0
W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQg
cGF5bG9hZCBtYXkgYmUgdGhlIHNhbWUgcmVnaXN0ZXIuIEluZGV4IG1heSBiZSBjbG9iYmVyZWQu
CittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2FkKQor
ICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAor
ICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50
OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YWcKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
Y29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdGFnXSwgdGFnCisgICAgIyBU
aGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVl
ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdp
bGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMu
CisgICAgbHNoaWZ0aSAzLCBpbmRleAorICAgIGFkZHAgaW5kZXgsIHRhZworICAgIGxvYWRwIFBh
eWxvYWRPZmZzZXRbdGFnXSwgcGF5bG9hZAorICAgIGxvYWRwIFRhZ09mZnNldFt0YWddLCB0YWcK
Ky5kb25lOgorZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3Vz
dG9tKGluZGV4LCB0YWdDaGVjaywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbY2Zy
LCBpbmRleCwgOF0pCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5
bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVj
dG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBv
ZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8g
KHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgdGFnQ2hlY2so
VGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSkKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3Bh
eWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5
bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdCBtdXRhdGVkLiBV
c2UKKyMgdGhpcyBpZiB5b3Uga25vdyB3aGF0IHRoZSB0YWcgb2YgdGhlIHZhcmlhYmxlIHNob3Vs
ZCBiZS4gRG9pbmcgdGhlIHRhZworIyB0ZXN0IGFzIHBhcnQgb2YgbG9hZGluZyB0aGUgdmFyaWFi
bGUgcmVkdWNlcyByZWdpc3RlciB1c2UsIGJ1dCBtYXkgbm90CisjIGJlIGZhc3RlciB0aGFuIGRv
aW5nIGxvYWRDb25zdGFudE9yVmFyaWFibGUgZm9sbG93ZWQgYnkgYSBicmFuY2ggb24gdGhlCisj
IHRhZy4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGluZGV4LCBleHBlY3Rl
ZFRhZywgcGF5bG9hZCwgc2xvdykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRh
Z0N1c3RvbSgKKyAgICAgICAgaW5kZXgsCisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGJpbmVx
IGFjdHVhbFRhZywgZXhwZWN0ZWRUYWcsIHNsb3cgZW5kLAorICAgICAgICBwYXlsb2FkKQorZW5k
CisKK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKGluZGV4LCBw
YXlsb2FkKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKAorICAg
ICAgICBpbmRleCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykgZW5kLAorICAgICAgICBwYXls
b2FkKQorZW5kCisKK21hY3JvIHdyaXRlQmFycmllcih0YWcsIHBheWxvYWQpCisgICAgIyBOb3Ro
aW5nIHRvIGRvLCBzaW5jZSB3ZSBkb24ndCBoYXZlIGEgZ2VuZXJhdGlvbmFsIG9yIGluY3JlbWVu
dGFsIGNvbGxlY3Rvci4KK2VuZAorCittYWNybyB2YWx1ZVByb2ZpbGUodGFnLCBwYXlsb2FkLCBw
cm9maWxlKQorICAgIHN0b3JlaSB0YWcsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zm
c2V0W3Byb2ZpbGVdCisgICAgc3RvcmVpIHBheWxvYWQsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRz
ICsgUGF5bG9hZE9mZnNldFtwcm9maWxlXQorZW5kCisKKworIyBJbmRpY2F0ZSB0aGUgYmVnaW5u
aW5nIG9mIExMSW50LgorX2xsaW50X2JlZ2luOgorICAgIGNyYXNoKCkKKworCisjIEVudHJ5cG9p
bnRzIGludG8gdGhlIGludGVycHJldGVyCisKK21hY3JvIGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9j
a0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVn
aXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJd
LCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxv
Y2tGb3JDYWxsW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBm
dW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBs
b2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjpt
X2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJd
LCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVy
KHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YXJnZXRSZWdpc3Rl
cgorZW5kCisKK21hY3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQor
ICAgIHN0b3JlcCBzb3VyY2VSZWdpc3RlciwgQ29kZUJsb2NrW2Nmcl0KK2VuZAorCittYWNybyBu
b3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAgICAjIE5vdGhpbmcg
dG8gZG8hCitlbmQKKworIyBEbyB0aGUgYmFyZSBtaW5pbXVtIHJlcXVpcmVkIHRvIGV4ZWN1dGUg
Y29kZS4gU2V0cyB1cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2RlQmxvY2sqCisjIGluIHQxLiBNYXkg
YWxzbyB0cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KK21hY3JvIHByb2xvZ3VlKGNvZGVCbG9j
a0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JIZWxwZXIsIHRyYWNlSGVscGVyKQorICAgIHBy
ZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1cCB0aGUg
Y2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KKyAgICBzdG9yZXAgdDIsIFJl
dHVyblBDW2Nmcl0KKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVy
KHRyYWNlSGVscGVyKQorICAgIGVuZAorICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICBpZiBK
SVRfRU5BQkxFRAorICAgICAgICBiYWRkaXMgNSwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNv
dW50ZXJbdDFdLCAuY29udGludWUKKyAgICAgICAgY0NhbGwyKG9zckhlbHBlciwgY2ZyLCBQQykK
KyAgICAgICAgbW92ZSB0MSwgY2ZyCisgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAg
IGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCisgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVm
b3JlUmV0dXJuKHQyKQorICAgICAgICBqbXAgdDAKKyAgICAucmVjb3ZlcjoKKyAgICAgICAgY29k
ZUJsb2NrR2V0dGVyKHQxKQorICAgIC5jb250aW51ZToKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tT
ZXR0ZXIodDEpCisgICAgCisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVCbG9j
azo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rp
b25zOjptX2luc3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCitlbmQKKwor
IyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3Vl
KCkgbGVhdmVzIGJlaGluZC4KKyMgTXVzdCBjYWxsIGRpc3BhdGNoKDApIGFmdGVyIGNhbGxpbmcg
dGhpcy4KK21hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1NraXApCisgICAg
IyBQcm9maWxlIHRoZSBhcmd1bWVudHMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hvaWNl
IGJ1dCB0byBkbyB0aGlzLiBUaGlzCisgICAgIyBjb2RlIGlzIHByZXR0eSBob3JyZW5kb3VzIGJl
Y2F1c2Ugb2YgdGhlIGRpZmZlcmVuY2UgaW4gb3JkZXJpbmcgYmV0d2VlbgorICAgICMgYXJndW1l
bnRzIGFuZCB2YWx1ZSBwcm9maWxlcywgdGhlIGRlc2lyZSB0byBoYXZlIGEgc2ltcGxlIGxvb3At
ZG93bi10by16ZXJvCisgICAgIyBsb29wLCBhbmQgdGhlIGRlc2lyZSB0byB1c2Ugb25seSB0aHJl
ZSByZWdpc3RlcnMgc28gYXMgdG8gcHJlc2VydmUgdGhlIFBDIGFuZAorICAgICMgdGhlIGNvZGUg
YmxvY2suIEl0IGlzIGxpa2VseSB0aGF0IHRoaXMgY29kZSBzaG91bGQgYmUgcmV3cml0dGVuIGlu
IGEgbW9yZQorICAgICMgb3B0aW1hbCB3YXkgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBoYXZlIG1v
cmUgdGhhbiBmaXZlIHJlZ2lzdGVycyBhdmFpbGFibGUKKyAgICAjIGZvciBhcmJpdHJhcnkgdXNl
IGluIHRoZSBpbnRlcnByZXRlci4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVy
c1t0MV0sIHQwCisgICAgYWRkaSAtcHJvZmlsZUFyZ1NraXAsIHQwICMgVXNlIGFkZGkgYmVjYXVz
ZSB0aGF0J3Mgd2hhdCBoYXMgdGhlIHBlZXBob2xlCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmln
dGVxIHQwLCAwLCBvayBlbmQpCisgICAgYnRpeiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3QxXSwgdDMKKyAgICBtdWxpIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0MiAjIEFh
YWFhaGhoaCEgTmVlZCBzdHJlbmd0aCByZWR1Y3Rpb24hCisgICAgbmVnaSB0MAorICAgIGxzaGlm
dGkgMywgdDAKKyAgICBhZGRwIHQyLCB0MworLmFyZ3VtZW50UHJvZmlsZUxvb3A6CisgICAgbG9h
ZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICog
OFtjZnIsIHQwXSwgdDIKKyAgICBzdWJwIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQzCisgICAgc3Rv
cmVpIHQyLCBwcm9maWxlQXJnU2tpcCAqIHNpemVvZiBWYWx1ZVByb2ZpbGUgKyBWYWx1ZVByb2Zp
bGU6Om1fYnVja2V0cyArIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZz
ZXQgKyBQYXlsb2FkT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIK
KyAgICBzdG9yZWkgdDIsIHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZh
bHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBiYWRkaW56IDgs
IHQwLCAuYXJndW1lbnRQcm9maWxlTG9vcAorLmFyZ3VtZW50UHJvZmlsZURvbmU6CisgICAgCisg
ICAgIyBDaGVjayBzdGFjayBoZWlnaHQuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxl
ZVJlZ2lzdGVyc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFd
LCB0MgorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MiAgICMgRklY
TUU6IENhbiBnZXQgdG8gdGhlIFJlZ2lzdGVyRmlsZSBmcm9tIHRoZSBKSVRTdGFja0ZyYW1lCisg
ICAgbHNoaWZ0aSAzLCB0MAorICAgIGFkZHAgdDAsIGNmciwgdDAKKyAgICBicGFlcSBJbnRlcnBy
ZXRlcjo6bV9yZWdpc3RlckZpbGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5zdGFj
a0hlaWdodE9LCisKKyAgICAjIFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRvIGNh
bGwgYSBoZWxwZXIuCisgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVjaykK
Ky5zdGFja0hlaWdodE9LOgorZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0
MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCittYWNybyBmdW5jdGlv
bkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBoZWxwZXIpCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCAr
IEFyZ3VtZW50Q291bnRbY2ZyXSwgdDAKKyAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBh
cmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKSAgICMg
VGhpcyBoZWxwZXIgaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4gbm8gZXJyb3IsIHQw
ICE9IDAgPT4gZXJyb3IKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBidGl6IHQwLCAuY29udGludWUK
KyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBK
U0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxE
YXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKy5jb250aW51ZToKKyAgICAjIFJlbG9h
ZCBDb2RlQmxvY2sgYW5kIFBDLCBzaW5jZSB0aGUgaGVscGVyIGNsb2JiZXJlZCBpdC4KKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rp
b25zW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVj
dGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworICAgIGptcCBkb25lTGFiZWwKK2Vu
ZAorCitfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNv
ZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9v
c3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9l
dmFsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBu
b3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNl
X3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxs
X3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwg
ZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2Nh
bGwsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKKy5mdW5jdGlvbkZv
ckNhbGxCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCisgICAgZGlzcGF0Y2go
MCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWU6CisgICAg
cHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9s
bGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQorLmZ1bmN0aW9uRm9y
Q29uc3RydWN0QmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigxKQorICAgIGRpc3Bh
dGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjazoKKyAg
ICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJs
b2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ss
IF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVj
ayguZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9sbGludF9oZWxwZXJfY2FsbF9hcml0eUNoZWNrKQor
CisKK19sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrOgorICAgIHByb2xv
Z3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9j
a1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hl
Y2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCisgICAgZnVuY3Rpb25B
cml0eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfbGxpbnRfaGVscGVyX2NvbnN0
cnVjdF9hcml0eUNoZWNrKQorCisjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9ucworCitfbGxp
bnRfb3BfZW50ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1WYXJzW3QyXSwgdDIKKyAgICBidGl6
IHQyLCAub3BFbnRlckRvbmUKKyAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAKKyAgICBtb3ZlIDAs
IHQxCisub3BFbnRlckxvb3A6CisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSB0MCwgVGFnT2Zm
c2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgYnRpbnogdDIsIC5vcEVudGVyTG9vcAorLm9wRW50ZXJEb25lOgorICAgIGRpc3BhdGNo
KDEpCisKKworX2xsaW50X29wX2NyZWF0ZV9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0s
IEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQorLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmU6
CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5pdF9sYXp5X3JlZzoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIEVtcHR5VmFsdWVU
YWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50
czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBcmd1bWVudHNE
b25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCisub3BD
cmVhdGVBcmd1bWVudHNEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFjcm8gYWxsb2NhdGVC
YXNpY0pTT2JqZWN0KHNpemVDbGFzc0luZGV4LCBjbGFzc0luZm9PZmZzZXQsIHN0cnVjdHVyZSwg
cmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNsb3dDYXNlKQorICAgIGNvbnN0IG9mZnNldE9m
TXlTaXplQ2xhc3MgPSBKU0dsb2JhbERhdGE6OmhlYXAgKyBIZWFwOjptX29iamVjdFNwYWNlICsg
TWFya2VkU3BhY2U6Om1fcHJlY2lzZVNpemVDbGFzc2VzICsgc2l6ZUNsYXNzSW5kZXggKiBzaXpl
b2YgTWFya2VkU3BhY2U6OlNpemVDbGFzcworICAgIAorICAgICMgRklYTUU6IHdlIGNhbiBnZXQg
dGhlIGdsb2JhbCBkYXRhIGluIG9uZSBsb2FkIGZyb20gdGhlIHN0YWNrLgorICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCBzY3JhdGNoMQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRh
W3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAKKyAgICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhl
IGZyZWUgbGlzdC4gICAgCisgICAgbG9hZHAgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNw
YWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKKyAgICBidHB6
IHJlc3VsdCwgc2xvd0Nhc2UKKyAgICAKKyAgICAjIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhl
IGZyZWUgbGlzdC4KKyAgICBsb2FkcCBbcmVzdWx0XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2Ny
YXRjaDIsIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJz
dEZyZWVDZWxsW3NjcmF0Y2gxXQorCisgICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisgICAg
bG9hZHAgY2xhc3NJbmZvT2Zmc2V0W3NjcmF0Y2gxXSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2Ny
YXRjaDIsIFtyZXN1bHRdCisgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVy
ZVtyZXN1bHRdCisgICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0K
KyAgICBhZGRwIHNpemVvZiBKU09iamVjdCwgcmVzdWx0LCBzY3JhdGNoMQorICAgIHN0b3JlcCBz
Y3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KK2VuZAorCitfbGxp
bnRfb3BfY3JlYXRlX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgQ2VsbFRhZywgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MQorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwg
T2JqZWN0VHlwZSwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9pbmhl
cml0b3JJRFt0MF0sIHQyCisgICAgYnRweiB0MiwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxv
Y2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERh
dGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlz
U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgZGlzcGF0Y2goMykKKworLm9wQ3JlYXRlVGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2NyZWF0ZV90aGlzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dl
dF9jYWxsZWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGxvYWRwIFBheWxvYWRPZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRh
ZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQwCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjpt
X3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgy
KQorCisub3BDb252ZXJ0VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Nv
bnZlcnRfdGhpcykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfb2JqZWN0Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2Jh
bE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNp
Y0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0Zp
bmFsT2JqZWN0Q2xhc3NJbmZvLCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAg
ICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0
Y2goMikKKworLm9wTmV3T2JqZWN0U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
bmV3X29iamVjdCkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfYXJyYXk6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJy
YXkpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJh
eV9idWZmZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdl
eHApCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9ub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBiaW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90
U2xvdworICAgIHhvcmkgMSwgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4
XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNo
KDMpCisKKy5vcE5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25vdCkKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0
MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2Vs
bFRhZywgLm9wRXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxv
YWRpIDRbUENdLCB0MgorICAgIGNpZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BFcVNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2VxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2VxX251bGw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRb
UENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAor
ICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BFcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBq
bXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlCisub3BFcU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0
MSwgTnVsbFRhZywgdDIKKyAgICBjaWVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQy
LCB0MQorLm9wRXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Mywg
OF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVx
IHQyLCBDZWxsVGFnLCAub3BOZXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNs
b3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVp
IEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lcSkKKyAgICBkaXNwYXRjaCg0KQorICAgIAorCitf
bGxpbnRfb3BfbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRp
YXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wTmVxTnVsbE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbElt
bWVkaWF0ZToKKyAgICBjaW5lcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZp
bmVkVGFnLCB0MQorICAgIGFuZGkgdDIsIHQxCisub3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAg
IHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHN0
cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0Mgor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0
MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVx
IHQyLCB0MywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0
MiwgQ2VsbFRhZywgLm5vdFN0cmluZworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MworICAgIGJibmVxIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAu
bm90U3RyaW5nCisgICAgYmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90
eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cKKy5ub3RTdHJpbmc6CisgICAgbG9hZGkgNFtQQ10s
IHQyCisgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVh
blRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlciho
ZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0
KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVscGVyX3N0cmljdGVxKQor
CisKK19sbGludF9vcF9uc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmlj
dEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0
IGVuZCwgX2xsaW50X2hlbHBlcl9uc3RyaWN0ZXEpCisKKworX2xsaW50X29wX2xlc3M6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3NlcSkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9ncmVhdGVyZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2lu
YzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJ
bmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlz
cGF0Y2goMikKKworLm9wUHJlSW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cHJlX2luYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wcmVfZGVjOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVEZWNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBic3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAg
ICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQor
Cisub3BQcmVEZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfZGVjKQor
ICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Bvc3RfaW5jOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5l
cSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0SW5jU2xvdworICAgIGJp
ZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNT
bG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5v
cFBvc3RJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2luYykKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9wb3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVx
IHQwLCB0MSwgLm9wUG9zdERlY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xv
dworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVp
IHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdCisub3BQb3N0RGVjRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQ
b3N0RGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9kZWMpCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdG9fanNudW1iZXI6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBiaWVxIHQyLCBJbnQzMlRhZywgLm9w
VG9Kc251bWJlcklzSW50CisgICAgYmlhZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcFRvSnNudW1i
ZXJTbG93Cisub3BUb0pzbnVtYmVySXNJbnQ6CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBk
aXNwYXRjaCgzKQorCisub3BUb0pzbnVtYmVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfdG9fanNudW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVnYXRl
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0
W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MSwgdDIpCisgICAgYmlu
ZXEgdDEsIEludDMyVGFnLCAub3BOZWdhdGVTcmNOb3RJbnQKKyAgICBidGl6IHQyLCAweDdmZmZm
ZmZmLCAub3BOZWdhdGVTbG93CisgICAgbmVnaSB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFn
T2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMs
IDhdCisgICAgZGlzcGF0Y2goMykKKy5vcE5lZ2F0ZVNyY05vdEludDoKKyAgICBiaWEgdDEsIExv
d2VzdFRhZywgLm9wTmVnYXRlU2xvdworICAgIHhvcmkgMHg4MDAwMDAwMCwgdDEKKyAgICBzdG9y
ZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5lZ2F0ZVNsb3c6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX25lZ2F0ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3Jv
IGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVy
YXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQw
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3Ax
Tm90SW50CisgICAgYmluZXEgdDMsIEludDMyVGFnLCAub3AyTm90SW50CisgICAgbG9hZGkgNFtQ
Q10sIHQyCisgICAgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHQzLCB0MSwgdDAsIC5zbG93LCB0
MikKKyAgICBkaXNwYXRjaCg1KQorCisub3AxTm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBp
cyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0
aGluZy4KKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDMsIExvd2VzdFRh
ZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKKyAg
ICBjaTJkIHQxLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91
YmxlOgorICAgIGZpaTJkIHQxLCB0MywgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgbG9hZGkg
NFtQQ10sIHQxCisgICAgZmlpMmQgdDAsIHQyLCBmdDAKKyAgICBkb3VibGVPcGVyYXRpb24oZnQx
LCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNSkKKwor
Lm9wMk5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBhbiBpbnQsIHRo
ZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KKyAgICBsb2FkaSA0W1BDXSwgdDIK
KyAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNsb3cKKyAgICBjaTJkIHQwLCBmdDAKKyAgICBmaWky
ZCB0MSwgdDMsIGZ0MQorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQg
ZnQwLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisuc2xvdzoKKyAgICBjYWxsSGVs
cGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCg1KQorZW5kCisKK21hY3JvIGJpbmFyeU9wKGludGVn
ZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGJpbmFyeU9wQ3VzdG9t
U3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4
KQorICAgICAgICAgICAgaW50ZWdlck9wZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdykKKyAgICAg
ICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAg
ICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAg
ZW5kLAorICAgICAgICBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3Bf
YWRkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX2FkZCkKKworCitfbGxpbnRfb3BfbXVsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQs
IHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGNvbnN0IHNjcmF0Y2ggPSBpbnQzMlRh
ZyAgICMgV2Uga25vdyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2lu
Y2UgaXQgaGFzIGEgY29uc3RhbnQuCisgICAgICAgICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoCisg
ICAgICAgICAgICBibXVsaW8gbGVmdCwgc2NyYXRjaCwgc2xvdworICAgICAgICAgICAgYnRpbnog
c2NyYXRjaCwgLmRvbmUKKyAgICAgICAgICAgIGJpbHQgbGVmdCwgMCwgc2xvdworICAgICAgICAg
ICAgYmlsdCByaWdodCwgMCwgc2xvdworICAgICAgICAuZG9uZToKKyAgICAgICAgICAgIHN0b3Jl
aSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkg
c2NyYXRjaCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9s
bGludF9oZWxwZXJfbXVsKQorCisKK19sbGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJp
byBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgc3Vi
ZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfc3ViKQorCisKK19sbGlu
dF9vcF9kaXY6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUo
CisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAg
ICAgICAgICAgY2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQorICAg
ICAgICAgICAgZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5v
dEludAorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwg
OF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4
XQorICAgICAgICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6CisgICAgICAgICAgICBz
dG9yZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCwK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAg
ICAgX2xsaW50X2hlbHBlcl9kaXYpCisKKworX2xsaW50X29wX21vZDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkKKyAgICBkaXNwYXRjaCg0
KQorCisKK21hY3JvIGJpdE9wKG9wZXJhdGlvbiwgaGVscGVyLCBhZHZhbmNlKQorICAgIGxvYWRp
IDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0
MCkKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIEludDMyVGFn
LCAuc2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIG9wZXJhdGlvbih0MSwgdDAsIC5zbG93
KQorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKKworLnNsb3c6
CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKK2VuZAorCitf
bGxpbnRfb3BfbHNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl9sc2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX3Jz
aGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgc2xvdykgcnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfcnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF91cnNoaWZ0OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCBzbG93KQorICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKKyAgICAgICAgICAgIGJp
bHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3Vy
c2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX2JpdGFuZDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5k
aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0YW5kLAorICAgICAg
ICA1KQorCisKK19sbGludF9vcF9iaXR4b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJp
dE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmlnaHQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdHhvciwKKyAgICAgICAgNSkKKworCitfbGxp
bnRfb3BfYml0b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9s
bGludF9oZWxwZXJfYml0b3IsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG5vdDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGJpbmVxIHQy
LCBJbnQzMlRhZywgLm9wQml0bm90U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRh
Z09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2JpdG5vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVj
a19oYXNfaW5zdGFuY2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0
MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9w
Q2hlY2tIYXNJbnN0YW5jZVNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0
MF0sIEltcGxlbWVudHNIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBk
aXNwYXRjaCgyKQorCisub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xs
aW50X29wX2luc3RhbmNlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgQ2hlY2sgdGhh
dCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisg
ICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAxMltQQ10s
IHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDEsIHQwKQor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJl
OjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhh
c0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIAorICAgICMgQWN0dWFsbHkgZG8gdGhl
IHdvcmsuCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2Vv
ZlNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJiIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAu
b3BJbnN0YW5jZW9mU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAg
CisgICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBt
b3ZlIDEsIHQwCisub3BJbnN0YW5jZW9mTG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QyXSwgdDIKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9m
ZnNldFt0Ml0sIHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRp
bnogdDIsIC5vcEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9m
RG9uZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
c3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKwor
Lm9wSW5zdGFuY2VvZlNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luc3RhbmNl
b2YpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9pc19udW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9pc19udW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfaXNfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lz
X29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2lzX29iamVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19mdW5jdGlv
bjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lz
X2Z1bmN0aW9uKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2luOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfcmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9za2lwKQorICAgIGRpc3BhdGNoKDUpCisKKworbWFj
cm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxv
d3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENd
ICAgUHJvcGVydHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAjIDEy
W1BDXSAgU3RydWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2Vu
ZXJhdG9yLgorICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6
ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYnBuZXEgdDEsIDEyW1BDXSwgc2xv
dworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0
b3JhZ2VbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGxvYWRpIChzaXplIC0gMSkgKiA0W1BDXSwgdDAKKyAg
ICB2YWx1ZVByb2ZpbGUodDIsIHQzLCB0MCkKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9i
YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHJlc29sdmVHbG9iYWwoNiwgLm9wUmVzb2x2
ZUdsb2JhbFNsb3cpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbFNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3BhdGNo
KDYpCisKKworIyBHaXZlcyB5b3UgdGhlIHNjb3BlIGluIHQwLCB3aGlsZSBhbGxvd2luZyB5b3Ug
dG8gb3B0aW9uYWxseSBwZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9uIHRoZQorIyBzY29wZXMg
YXMgdGhleSBhcmUgdHJhdmVyc2VkLiBzY29wZUNoZWNrKCkgaXMgY2FsbGVkIHdpdGggdHdvIGFy
Z3VtZW50czogdGhlIHJlZ2lzdGVyCisjIGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdpc3Rl
ciB0aGF0IGNhbiBiZSB1c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAor
IyB1c2UgdDMsIHNvIHlvdSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJlLgorbWFjcm8g
Z2V0U2NvcGUoZGVCcnVpamluSW5kZXhPcGVyYW5kLCBzY29wZUNoZWNrKQorICAgIGxvYWRwIFNj
b3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgZGVCcnVpamluSW5k
ZXhPcGVyYW5kLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisgICAgCisgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQxCisgICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwg
RnVuY3Rpb25Db2RlLCAubG9vcAorICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNjb3Bl
Q2hhaW5bdDFdLCAubG9vcAorICAgIAorICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0aW9u
UmVnaXN0ZXJbdDFdLCB0MQorCisgICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVy
IG9uZSBzY29wZS4KKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRh
ZywgLm5vQWN0aXZhdGlvbgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3Bl
Q2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKy5ub0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0Mgor
ICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisubG9vcDoKKyAgICBzY29wZUNoZWNrKHQwLCB0MSkK
KyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisgICAgc3ViaSAxLCB0Mgor
ICAgIGJ0aW56IHQyLCAubG9vcAorCisuZG9uZToKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9n
bG9iYWxfZHluYW1pYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tG
cmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0
aW9uU3RydWN0dXJlW3QzXSwgdDMKKyAgICBnZXRTY29wZSgKKyAgICAgICAgMjBbUENdLAorICAg
ICAgICBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpCisgICAgICAgICAgICBsb2FkcCBTY29wZUNoYWlu
Tm9kZTo6b2JqZWN0W3Njb3BlXSwgc2NyYXRjaAorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjpt
X3N0cnVjdHVyZVtzY3JhdGNoXSwgdDMsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93
CisgICAgICAgIGVuZCkKKyAgICByZXNvbHZlR2xvYmFsKDcsIC5vcFJlc29sdmVHbG9iYWxEeW5h
bWljU2xvdykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVy
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9n
bG9iYWxfZHluYW1pYykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1p
Y1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFt
aWMpCisgICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0
W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgSW5kZXggb2Yg
cmVnaXN0ZXIgaW4gdGhlIHNjb3BlLgorICAgICMgMTJbUENdICBEZSBCcnVpamluIGluZGV4Lgor
ICAgIGdldFNjb3BlKDEyW1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9h
ZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZHAgU2NvcGVDaGFpbk5v
ZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3Rl
cnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAg
IGxvYWRpIDE2W1BDXSwgdDEKKyAgICB2YWx1ZVByb2ZpbGUodDMsIHQwLCB0MSkKKyAgICBkaXNw
YXRjaCg1KQorCisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgZ2V0U2NvcGUoOFtQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAg
IGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MywgdDIp
CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQzLCB0MikKKyAgICBsb2Fk
cCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2Jq
ZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbdDAsIHQx
LCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBd
LCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAg
bG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0
MCwgdDEsIDhdLCB0MQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgbG9hZGkgMTJbUENdLCB0
MworICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX3B1dF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9y
ZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykK
KyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0b3Jl
aSB0MiwgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRb
dDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfYmFzZToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29s
dmVfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9lbnN1cmVfcHJvcGVydHlf
ZXhpc3RzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9yZXNvbHZlX3dpdGhfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQorICAgIGRpc3BhdGNoKDUpCisKKwor
X2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2go
NSkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAj
IFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdl
IGRvIG5vdCBtb2RpZnkgdGhlCisgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBm
b3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorICAgICMgcGlu
Zy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lk
IHdpbGwgY29udGludWUKKyAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUu
IEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisgICAgIyB3ZSB3b3Vs
ZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRp
IDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRh
ZywgdDMsIC5vcEdldEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkcCBK
U09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAgIGJwbmVxIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3Qw
LCB0Ml0sIHQyCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAzMltQQ10sIHQxCisg
ICAgdmFsdWVQcm9maWxlKHQzLCB0MiwgdDEpCisgICAgZGlzcGF0Y2goOSkKKworLm9wR2V0QnlJ
ZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9pZCkKKyAgICBkaXNw
YXRjaCg5KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAg
YmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVu
dHNMZW5ndGhTbG93CisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2Zy
XSwgdDIKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBk
aXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9wdXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRb
UENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEyW1BD
XSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAg
IGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBs
b2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQwLCB0
MikKKyAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3Qz
LCB0MV0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQorICAgIGRpc3BhdGNo
KDkpCisKKy5vcFB1dEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRf
YnlfaWQpCisgICAgZGlzcGF0Y2goOSkKKworCittYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRp
dGlvbmFsQ2hlY2tzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMK
KyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisg
ICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAg
IGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQ
Q10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAg
ICBhZGRwIHQxLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIp
CisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10K
KyAgICBsb2FkaSAyNFtQQ10sIHQxCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQor
ICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICBkaXNwYXRjaCg5KQor
ZW5kCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgcHV0QnlJ
ZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorCisK
K19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgcHV0QnlJZFRyYW5z
aXRpb24oCisgICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCisgICAg
ICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9s
ZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAgICAgIAorICAgICAgICAgICAg
bG9hZHAgMjhbUENdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBu
eiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92
ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0
cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICAgICAgICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3Rv
dHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorICAgICAgICAu
bG9vcDoKKyAgICAgICAgICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2Fk
T2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAgICAgICAgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICAgICAgICAgIGJwbmVx
IG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCBzbG93CisgICAgICAgICAgICBhZGRwIDQsIHNjcmF0
Y2gKKyAgICAgICAgICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRb
b2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVu
ZCkKKworCitfbGxpbnRfb3BfZGVsX2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X2lkKQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX2dldF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDEyW1BDXSwg
dDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQxCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNsb3cp
CisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZh
bFNsb3cpCisgICAgYnBuZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRwIEpT
QXJyYXk6Om1fc3RvcmFnZVt0MF0sIHQzCisgICAgYmlhZXEgdDEsIEpTQXJyYXk6Om1fdmVjdG9y
TGVuZ3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9h
ZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAg
IGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0s
IHQxCisgICAgYmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93CisgICAgc3Rv
cmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgdmFsdWVQcm9maWxlKHQy
LCB0MSwgdDApCisgICAgZGlzcGF0Y2goNSkKKworLm9wR2V0QnlWYWxTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xs
aW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEludDMyVGFnLCB0MiwgLm9wR2V0QXJn
dW1lbnRCeVZhbFNsb3cpCisgICAgYWRkaSAxLCB0MgorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQg
KyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisgICAgYmlhZXEgdDIsIHQxLCAub3BHZXRBcmd1bWVu
dEJ5VmFsU2xvdworICAgIG5lZ2kgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBU
aGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisgICAgbG9hZGkg
VGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEKKyAgICBz
dG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEFyZ3VtZW50QnlWYWxT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQor
ICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV9wbmFtZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkg
MTZbUENdLCB0MAorICAgIGJwbmVxIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAub3BH
ZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9h
ZGkgMjBbUENdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAsIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFtZVNs
b3cKKyAgICBsb2FkaSAyNFtQQ10sIHQwCisgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAorICAg
IHN1YmkgMSwgdDAKKyAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1D
YWNoZWFibGVTbG90c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6
Om1fcHJvcGVydHlTdG9yYWdlW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQwLCA4
XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg3KQorCisub3BH
ZXRCeVBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3BuYW1l
KQorICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX3B1dF9ieV92YWw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRpIDhb
UENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBJbnQzMlRhZywg
dDIsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxE
YXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QwXSwgdDAKKyAgICBicG5lcSBbdDFdLCB0MCwgLm9wUHV0
QnlWYWxTbG93CisgICAgYmlhZXEgdDIsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QxXSwgLm9w
UHV0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QxXSwgdDAKKyAgICBi
aWVxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgRW1wdHlW
YWx1ZVRhZywgLm9wUHV0QnlWYWxFbXB0eQorLm9wUHV0QnlWYWxTdG9yZVJlc3VsdDoKKyAgICBs
b2FkaSAxMltQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQxLCB0
MykKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQzKQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdl
OjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdCisgICAgc3RvcmVpIHQzLCBBcnJheVN0
b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdCisgICAgZGlzcGF0Y2go
NCkKKworLm9wUHV0QnlWYWxFbXB0eToKKyAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1W
YWx1ZXNJblZlY3Rvclt0MF0KKyAgICBiaWIgdDIsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBd
LCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0MiwgdDEKKyAgICBzdG9yZWkg
dDEsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdCisgICAgam1wIC5vcFB1dEJ5VmFsU3RvcmVS
ZXN1bHQKKworLm9wUHV0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9w
dXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2RlbF9ieV92YWw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWxfYnlf
dmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9pbmRleDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pbmRl
eCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2V0dGVyX3NldHRlcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9nZXR0
ZXJfc2V0dGVyKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2xvb3A6CisgICAgbm9w
CitfbGxpbnRfb3Bfam1wOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkaXNwYXRjaEJyYW5j
aCg0W1BDXSkKKworCitfbGxpbnRfb3Bfam1wX3Njb3BlczoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2ptcF9zY29wZXMpCisgICAgZGlzcGF0Y2go
MCkKKworCittYWNybyBqdW1wVHJ1ZU9yRmFsc2UoY29uZGl0aW9uT3AsIHNsb3cpCisgICAgbG9h
ZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEJvb2xl
YW5UYWcsIHQwLCAuc2xvdykKKyAgICBjb25kaXRpb25PcCh0MCwgLnRhcmdldCkKKyAgICBkaXNw
YXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuc2xvdzoK
KyAgICBjYWxsSGVscGVyKHNsb3cpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3Bf
bG9vcF9pZl90cnVlOgorICAgIG5vcAorX2xsaW50X29wX2p0cnVlOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0
KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qdHJ1ZSkK
KworCitfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKKyAgICBub3AKK19sbGludF9vcF9qZmFsc2U6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAgbWFj
cm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfamZhbHNlKQorCisKK21hY3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwgaW1tZWRp
YXRlSGFuZGxlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAg
ICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxIYW5kbGVyKFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0
OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuaW1tZWRpYXRlOgorICAgIG9yaSAxLCB0
MQorICAgIGltbWVkaWF0ZUhhbmRsZXIodDEsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKK2Vu
ZAorCitfbGxpbnRfb3BfamVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFs
TnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0Ym56IHZhbHVlLCBNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdl
dCkgYmllcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKyAgICAKKworX2xsaW50X29wX2pu
ZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBt
YWNybyAodmFsdWUsIHRhcmdldCkgYnRieiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpbmVxIHZhbHVlLCBO
dWxsVGFnLCB0YXJnZXQgZW5kKQorCisKK19sbGludF9vcF9qbmVxX3B0cjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAg
YmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNoCisg
ICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxUaHJv
dWdoCisub3BKbmVxUHRyQnJhbmNoOgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKy5vcEpu
ZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGNvbXBhcmUoaW50
ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUsIGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDIK
KyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCwg
dDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQyLCB0MykKKyAgICBiaW5l
cSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDJO
b3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3Bh
dGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgYmlhIHQwLCBMb3dlc3RUYWcsIC5zbG93CisgICAg
YmliIHQyLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MiwgSW50
MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MywgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQor
Lm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQorLm9wMU5vdEludFJl
YWR5OgorICAgIGZpaTJkIHQxLCB0MCwgZnQwCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwg
Lmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMk5vdEludDoKKyAgICBjaTJkIHQx
LCBmdDAKKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBmaWkyZCB0MywgdDIsIGZ0
MQorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNo
KDQpCisKKy5qdW1wVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKworLnNsb3c6
CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRf
b3BfbG9vcF9pZl9sZXNzOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJkbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfamxlc3MpCisKKworX2xsaW50X29wX2pubGVzczoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJp
Z3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX2pubGVzcykKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyOgorICAgIG5v
cAorX2xsaW50X29wX2pncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJl
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3QgbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXIpCisK
KworX2xsaW50X29wX2puZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFy
ZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRl
cXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3Jl
YXRlcikKKworCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzZXE6CisgICAgbm9wCitfbGxpbnRfb3Bf
amxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcSBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzc2VxKQorCisKK19sbGludF9v
cF9qbmxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0dW4gbGVmdCwgcmlnaHQs
IHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzZXEpCisKKworX2xsaW50
X29wX2xvb3BfaWZfZ3JlYXRlcmVxOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyZXE6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3Bfam5ncmVh
dGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdHVuIGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcmVxKQorCisKK19sbGludF9v
cF9sb29wX2hpbnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRG
b3JMb29wKCkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zd2l0Y2hfaW1tOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10s
IHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQy
CisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MyAgICMgRklYTUU6IHdvdWxkIGJl
IG5pY2UgdG8gcGVlcGhvbGUgdGhpcyEKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjpt
X2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0Mgor
ICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJ
bnQKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwg
U2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5v
cFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hP
ZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDMKKyAgICBsb2FkaSBbdDMsIHQwLCA0
XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRpc3BhdGNo
QnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoSW1tTm90SW50OgorICAgIGJpYiB0MSwg
TG93ZXN0VGFnLCAub3BTd2l0Y2hJbW1TbG93ICAjIEdvIHRvIHNsb3cgcGF0aCBpZiBpdCdzIGEg
ZG91YmxlLgorLm9wU3dpdGNoSW1tRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQ
Q10pCisKKy5vcFN3aXRjaEltbVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3
aXRjaF9pbW0pCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA0W1BD
XSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwg
dDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQzCisgICAgbG9hZHAgQ29kZUJs
b2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
b3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNT
dHJpbmc6Om1fdmFsdWVbdDBdLCB0MAorICAgIGJpbmVxIFN0cmluZ0ltcGw6Om1fbGVuZ3RoW3Qw
XSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU3RyaW5nSW1wbDo6bV9k
YXRhOFt0MF0sIHQxCisgICAgYnRpbnogU3RyaW5nSW1wbDo6bV9oYXNoQW5kRmxhZ3NbdDBdLCBI
YXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0Y2hDaGFyOEJpdAorICAgIGxvYWRoIFt0MV0sIHQw
CisgICAgam1wIC5vcFN3aXRjaENoYXJSZWFkeQorLm9wU3dpdGNoQ2hhcjhCaXQ6CisgICAgbG9h
ZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENoYXJSZWFkeToKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJs
ZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZz
ZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAg
IGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNl
dFt0Ml0sIHQyCisgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCisgICAgYnRpeiB0MSwgLm9wU3dp
dGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCisKKy5v
cFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitf
bGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9zdHJpbmcpCisgICAgZGlzcGF0Y2goMCkKKworCitf
bGxpbnRfb3BfbmV3X2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0aXogMTJbUENd
LCAub3BOZXdGdW5jVW5jaGVja2VkCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFn
T2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BOZXdGdW5jRG9uZQorLm9wTmV3
RnVuY1VuY2hlY2tlZDoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmMpCisu
b3BOZXdGdW5jRG9uZToKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfZnVuY19l
eHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9u
ZXdfZnVuY19leHApCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBkb0NhbGwoaGVscGVyKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBMTElu
dENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93KQorICAgIGJpbmVxIHQzLCB0Miwg
Lm9wQ2FsbFNsb3cKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgYWRkcCAyNCwgUEMKKyAgICBs
c2hpZnRpIDMsIHQzCisgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFs
dWUgb2YgY2ZyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAKKyAg
ICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIHQwLCBT
Y29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBsb2FkaSA4IC0gMjRbUENdLCB0Mgor
ICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgc3RvcmVw
IGNmciwgQ2FsbGVyRnJhbWVbdDNdCisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5
bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3Qz
XQorICAgIHN0b3JlaSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFnT2Zmc2V0W3QzXQorICAgIG1v
dmUgdDMsIGNmcgorICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0
W3QxXQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworLm9wQ2FsbFNsb3c6CisgICAgc2xvd1Bh
dGhGb3JDYWxsKDYsIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfY2FsbDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY2FsbCkKKworCitfbGxpbnRfb3Bf
Y29uc3RydWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBl
cl9jb25zdHJ1Y3QpCisKKworX2xsaW50X29wX2NhbGxfdmFyYXJnczoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIF9sbGludF9oZWxwZXJfY2FsbF92YXJhcmdz
KQorCisKK19sbGludF9vcF9jYWxsX2V2YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIAor
ICAgICMgRXZhbCBpcyBleGVjdXRlZCBpbiBvbmUgb2YgdHdvIG1vZGVzOgorICAgICMKKyAgICAj
IDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSByZWFsbHkgaW52b2tpbmcgZXZhbCgpIGluIHdoaWNoIGNh
c2UgdGhlCisgICAgIyAgICBleGVjdXRpb24gaXMgcGVyZm9tZWQgZW50aXJlbHkgaW5zaWRlIHRo
ZSBoZWxwZXIsIGFuZCBpdAorICAgICMgICAgcmV0dXJucyB0aGUgUEMgb2YgYSBmdW5jdGlvbiB0
aGF0IGp1c3QgcmV0dXJucyB0aGUgcmV0dXJuIHZhbHVlCisgICAgIyAgICB0aGF0IHRoZSBldmFs
IHJldHVybmVkLgorICAgICMKKyAgICAjIDIpIFdlIGZpbmQgdGhhdCB3ZSdyZSBpbnZva2luZyBz
b21ldGhpbmcgY2FsbGVkIGV2YWwoKSB0aGF0IGlzIG5vdAorICAgICMgICAgdGhlIHJlYWwgZXZh
bC4gVGhlbiB0aGUgaGVscGVyIHJldHVybnMgdGhlIFBDIG9mIHRoZSB0aGluZyB0bworICAgICMg
ICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQuCisgICAgIworICAgICMgVGhpcyBhbGxvd3MgdXMgdG8g
aGFuZGxlIHR3byBjYXNlcywgd2hpY2ggd291bGQgcmVxdWlyZSBhIHRvdGFsIG9mCisgICAgIyB1
cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0ZSB0aGF0IGNhbm5vdCBiZSBlYXNpbHkgcGFja2VkIGlu
dG8gdHdvCisgICAgIyByZWdpc3RlcnMgKEMgZnVuY3Rpb25zIGNhbiByZXR1cm4gdXAgdG8gdHdv
IHJlZ2lzdGVycywgZWFzaWx5KToKKyAgICAjCisgICAgIyAtIFRoZSBjYWxsIGZyYW1lIHJlZ2lz
dGVyLiBUaGlzIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBtb2RpZmllZAorICAgICMgICBieSB0
aGUgaGVscGVyLCBidXQgdGhlIGNvbnZlbnRpb24gaXMgdGhhdCBpdCByZXR1cm5zIGl0LiBJdCdz
IG5vdAorICAgICMgICB0b3RhbGx5IGNsZWFyIGlmIHRoYXQncyBuZWNlc3NhcnksIHNpbmNlIHRo
ZSBjZnIgaXMgY2FsbGVlIHNhdmUuCisgICAgIyAgIEJ1dCB0aGF0J3Mgb3VyIHN0eWxlIGluIHRo
aXMgaGVyZSBpbnRlcnByZXRlciBzbyB3ZSBzdGljayB3aXRoIGl0LgorICAgICMKKyAgICAjIC0g
QSBiaXQgdG8gc2F5IGlmIHRoZSBoZWxwZXIgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIHRoZSBldmFs
IGFuZCBoYXMKKyAgICAjICAgdGhlIHJldHVybiB2YWx1ZSwgb3IgZGlkIG5vdCBleGVjdXRlIHRo
ZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3IgdXMKKyAgICAjICAgdG8gY2FsbC4KKyAgICAjCisgICAg
IyAtIEVpdGhlcjoKKyAgICAjICAgLSBUaGUgSlMgcmV0dXJuIHZhbHVlICh0d28gcmVnaXN0ZXJz
KSwgb3IKKyAgICAjCisgICAgIyAgIC0gVGhlIFBDIHRvIGNhbGwuCisgICAgIworICAgICMgSXQg
dHVybnMgb3V0IHRvIGJlIGVhc2llciB0byBqdXN0IGFsd2F5cyBoYXZlIHRoaXMgcmV0dXJuIHRo
ZSBjZnIKKyAgICAjIGFuZCBhIFBDIHRvIGNhbGwsIGFuZCB0aGF0IFBDIG1heSBiZSBhIGR1bW15
IHRodW5rIHRoYXQganVzdAorICAgICMgcmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZh
bCByZXR1cm5lZC4KKyAgICAKKyAgICBzbG93UGF0aEZvckNhbGwoNCwgX2xsaW50X2hlbHBlcl9j
YWxsX2V2YWwpCisKKworX2xsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50OgorICAgIGRpc3BhdGNo
QWZ0ZXJDYWxsKCkKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisg
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2Zm
QWN0aXZhdGlvbkNyZWF0ZWQKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlW
YWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkCisub3BUZWFyT2ZmQWN0aXZh
dGlvbkNyZWF0ZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FjdGl2
YXRpb24pCisub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfdGVhcl9vZmZfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdWJpIDEsIHQwICAgIyBHZXQgdGhlIHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3RlcgorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0
eVZhbHVlVGFnLCAub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZAorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCisub3BUZWFyT2ZmQXJndW1lbnRzTm90
Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGRvUmV0dXJuKCkKKyAgICBsb2Fk
cCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgorICAg
IHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAgIHJldAorZW5kCisKK19s
bGludF9vcF9yZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRG
b3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3BfY2FsbF9wdXRf
cmVzdWx0OgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MworICAgIHN0
b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdCisgICAgdmFsdWVQcm9maWxlKHQxLCB0MCwgdDMpCisgICAgdHJhY2VF
eGVjdXRpb24oKSAjIE5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSBpdCB3b3VsZCBjbG9iYmVyIHQx
LCB0MAorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwg
dDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2Jq
ZWN0T3JUaGlzTm90T2JqZWN0CisgICAgZG9SZXR1cm4oKQorCisub3BSZXRPYmplY3RPclRoaXNO
b3RPYmplY3Q6CisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3BfbWV0aG9kX2NoZWNr
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIGlnbm9yZSBtZXRob2QgY2hlY2tzIGFu
ZCB1c2Ugbm9ybWFsIGdldF9ieV9pZCBvcHRpbWl6YXRpb25zLgorICAgIGRpc3BhdGNoKDEpCisK
KworX2xsaW50X29wX3N0cmNhdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3N0cmNhdCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF90
b19wcmltaXRpdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0Mgor
ICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0
MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9QcmltaXRpdmVJc0ltbQorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNs
b3dDYXNlCisub3BUb1ByaW1pdGl2ZUlzSW1tOgorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
ZGlzcGF0Y2goMykKKworLm9wVG9QcmltaXRpdmVTbG93Q2FzZToKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfdG9fcHJpbWl0aXZlKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X2dldF9wbmFtZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9nZXRfcG5hbWVzKQorICAgIGRpc3BhdGNoKDApICMgVGhlIGhlbHBlciBlaXRoZXIg
YWR2YW5jZXMgdGhlIFBDIG9yIGp1bXBzIHVzIHRvIHNvbWV3aGVyZSBlbHNlLgorCisKK19sbGlu
dF9vcF9uZXh0X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10s
IHQxCisgICAgbG9hZGkgMTZbUENdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MSwgOF0sIHQwCisgICAgYmllcSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgLm9wTmV4
dFBuYW1lRW5kCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MiwgOF0sIHQyCisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9qc1N0
cmluZ3NbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDhdLCB0MworICAgIGFkZGkgMSwgdDAK
KyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgOFtQQ10sIHQzCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAgICBicG5lcSB0MSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0Ml0sIHQwCisgICAg
bG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5v
cE5leHRQbmFtZVRhcmdldAorLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wOgorICAgIGJp
ZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFt0MV0sIE51bGxUYWcsIC5vcE5l
eHRQbmFtZVNsb3cKKyAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9m
ZnNldFt0MV0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQxCisgICAg
YnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBhZGRwIDQsIHQwCisgICAgYnRw
bnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wCisub3BOZXh0UG5hbWVUYXJn
ZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMjRbUENdKQorCisub3BOZXh0UG5hbWVFbmQ6CisgICAg
ZGlzcGF0Y2goNykKKworLm9wTmV4dFBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfbmV4dF9wbmFtZSkgIyBUaGlzIGVpdGhlciBrZWVwcyB0aGUgUEMgd2hlcmUgaXQgd2Fz
IChjYXVzaW5nIHVzIHRvIGxvb3ApIG9yIHNldHMgaXQgdG8gdGFyZ2V0LgorICAgIGRpc3BhdGNo
KDApCisKKworX2xsaW50X29wX3B1c2hfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX3Njb3BlKQorICAgIGRpc3BhdGNoKDIpCisK
KworX2xsaW50X29wX3BvcF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3BvcF9zY29wZSkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGlu
dF9vcF9wdXNoX25ld19zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3B1c2hfbmV3X3Njb3BlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX2NhdGNoOgorICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklU
J3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKKyAgICAjIG1hY2hpbmUgY29kZSByZXR1
cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQorICAg
ICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190
cmFtcG9saW5lKS4KKyAgICAjIFRoZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRo
ZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0aHJvd2luZworICAgICMgY29kZSBtdXN0IGhhdmUga25v
d24gdGhhdCB3ZSB3ZXJlIHRocm93aW5nIHRvIHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKKyAg
ICAjIHNldCBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdy4KKyAgICBt
b3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMK
KyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10s
IFBDCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3Qz
XSwgdDAKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10s
IHQxCisgICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNl
dFt0M10KKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24g
KyBUYWdPZmZzZXRbdDNdICAgICAgIAorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIHN0b3JlaSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgdHJhY2VFeGVjdXRpb24oKSAgIyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUg
YmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIgdDAsIHQxLCB0MiwgdDMgYWJvdmUuCisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3c6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvdykKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3I6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpCisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfanNyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBhZGRpIDMgKiA0LCBQQywgdDEKKyAgICBzdG9yZWkg
dDEsIFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9v
cF9zcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBs
b2FkcCBbY2ZyLCB0MCwgOF0sIFBDCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfZGVi
dWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9k
ZWJ1ZykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcm9maWxlX3dpbGxfY2FsbDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFBy
b2ZpbGVyUmVmZXJlbmNlW3NwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5vcFByb2ZpbGVXaWxsQ2Fs
bERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCisu
b3BQcm9maWxlV2lsbENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3By
b2ZpbGVfZGlkX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNr
RnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIHQwCisgICAgYnRweiBbdDBdLCAu
b3BQcm9maWxlV2lsbENhbGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2Zp
bGVfZGlkX2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERvbmU6CisgICAgZGlzcGF0Y2goMikKKwor
CitfbGxpbnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRv
SklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGlu
ZToKKyAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJwcmV0ZXIgKGkuZS4gdGhyb3dp
bmcgZnJvbSBMTEludEhlbHBlcnMpLCBzbworICAgICMgdGhlIHRocm93IHRhcmdldCBpcyBub3Qg
bmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0byBoZXJlLgorICAgICMgVGhp
cyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCisgICAg
bG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9i
YWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6
dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworX2xsaW50X3Rocm93X2R1cmluZ19jYWxs
X3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAg
IGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xv
YmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6
OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKKyMgTGFzdGx5LCBtYWtlIHN1cmUgdGhh
dCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgor
IyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVp
dGhlciBKSVQuIFdlIGFzc2VydAorIyBhcyBtdWNoLgorCittYWNybyBub3RTdXBwb3J0ZWQoKQor
ICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGNyYXNoKCkKKyAgICBlbHNlCisgICAgICAg
ICMgV2Ugc2hvdWxkIHVzZSB3aGF0ZXZlciB0aGUgc21hbGxlc3QgcG9zc2libGUgaW5zdHJ1Y3Rp
b24gaXMsIGp1c3QgdG8KKyAgICAgICAgIyBlbnN1cmUgdGhhdCB0aGVyZSBpcyBhIGdhcCBiZXR3
ZWVuIGluc3RydWN0aW9uIGxhYmVscy4gSWYgbXVsdGlwbGUKKyAgICAgICAgIyBzbWFsbGVzdCBp
bnN0cnVjdGlvbnMgZXhpc3QsIHdlIHNob3VsZCBwaWNrIHRoZSBvbmUgdGhhdCBpcyBtb3N0Cisg
ICAgICAgICMgbGlrZWx5IHJlc3VsdCBpbiBleGVjdXRpb24gYmVpbmcgaGFsdGVkLiBDdXJyZW50
bHkgdGhhdCBpcyB0aGUgYnJlYWsKKyAgICAgICAgIyBpbnN0cnVjdGlvbiBvbiBhbGwgYXJjaGl0
ZWN0dXJlcyB3ZSdyZSBpbnRlcmVzdGVkIGluLiAoQnJlYWsgaXMgaW50MworICAgICAgICAjIG9u
IEludGVsLCB3aGljaCBpcyAxIGJ5dGUsIGFuZCBia3B0IG9uIEFSTXY3LCB3aGljaCBpcyAyIGJ5
dGVzLikKKyAgICAgICAgYnJlYWsKKyAgICBlbmQKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2FycmF5
X2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2NoYWlu
OgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX2NoYWlu
OgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3Byb3Rv
OgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3NlbGY6
CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZW5lcmljOgorICAg
IG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX2NoYWluOgorICAg
IG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3Byb3RvOgorICAg
IG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3NlbGY6CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9wcm90bzoKKyAgICBub3RTdXBw
b3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkK
KworX2xsaW50X29wX2dldF9zdHJpbmdfbGVuZ3RoOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19s
bGludF9vcF9wdXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRf
b3BfcHV0X2J5X2lkX3JlcGxhY2U6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1
dF9ieV9pZF90cmFuc2l0aW9uOgorICAgIG5vdFN1cHBvcnRlZCgpCisKKworIyBJbmRpY2F0ZSB0
aGUgZW5kIG9mIExMSW50LgorX2xsaW50X2VuZDoKKyAgICBjcmFzaCgpCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2lu
Y2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00u
aD4KKworLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20sIHdoaWNoIGNv
bnRhaW5zIGFsbCBvZiB0aGUgYXNzZW1ibHkgY29kZQorLy8gZm9yIHRoZSBpbnRlcnByZXRlciwg
YXMgY29tcGlsZWQgZnJvbSBMb3dMZXZlbEludGVycHJldGVyLmFzbS4KKyNpbmNsdWRlICJMTElu
dEFzc2VtYmx5LmgiCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisjZGVm
aW5lIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisK
KyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworI2RlZmluZSBMTElO
VF9JTlNUUlVDVElPTl9ERUNMKG9wY29kZSwgbGVuZ3RoKSBleHRlcm4gIkMiIHZvaWQgbGxpbnRf
IyNvcGNvZGUoKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoTExJTlRfSU5TVFJVQ1RJT05fREVD
TCk7CisjdW5kZWYgTExJTlRfSU5TVFJVQ1RJT05fREVDTAorCitleHRlcm4gIkMiIHZvaWQgbGxp
bnRfYmVnaW4oKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9lbmQoKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZXZhbF9w
cm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xv
Z3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9s
b2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KCk7
CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSgpOwor
ZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUoKTsKKwor
I2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExvd0xldmVsSW50ZXJwcmV0ZXJf
aApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4MDggQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIm9wdCIKKworY2xhc3MgU3BlY2lhbFJl
Z2lzdGVyCisgIGRlZiBpbml0aWFsaXplKG5hbWUpCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAor
ICAKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIEBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFybVY3
U2luZ2xlCisgICAgcmFpc2UgdW5sZXNzIEBuYW1lID1+IC9eZC8KKyAgICAicyIgKyAkfi5wb3N0
X21hdGNoLnRvX2kgKiAyCisgIGVuZAorZW5kCisKK0FSTXY3X0VYVFJBX0dQUlMgPSBbU3BlY2lh
bFJlZ2lzdGVyLm5ldygicjMiKSwgU3BlY2lhbFJlZ2lzdGVyLm5ldygicjgiKSwgU3BlY2lhbFJl
Z2lzdGVyLm5ldygicjkiKV0KK0FSTXY3X0VYVFJBX0ZQUlMgPSBbU3BlY2lhbFJlZ2lzdGVyLm5l
dygiZDciKV0KK0FSTXY3X1NDUkFUQ0hfRlBSID0gW1NwZWNpYWxSZWdpc3Rlci5uZXcoImQ4Iild
CisKK2RlZiBhcm1WN01vdmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJlbnRs
eSB3ZSBvbmx5IGhhbmRsZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1vdi9t
b3Z0IGZvciB0aGUgY29tcGxleCBvbmVzLgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2
CisgICAgJGFzbS5wdXRzICJtb3Z3IFwjI3t2YWx1ZX0sICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5k
fSIKKyAgZWxzaWYgKH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20ucHV0
cyAibXZudyBcIyN7fnZhbHVlfSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICBlbHNlCisg
ICAgJGFzbS5wdXRzICJtb3Z3IFwjI3t2YWx1ZSAmIDB4ZmZmZn0sICN7cmVnaXN0ZXIuYXJtVjdP
cGVyYW5kfSIKKyAgICBpZiAodmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCisgICAgICAkYXNtLnB1
dHMgIm1vdnQgXCMje3ZhbHVlID4+IDE2fSwgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9IgorICAg
IGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQK
KyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICJyMCIKKyAg
ICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgICJyMSIKKyAgICB3aGVuICJ0MiIsICJhMiIK
KyAgICAgICJyMiIKKyAgICB3aGVuICJhMyIKKyAgICAgICJyMyIKKyAgICB3aGVuICJ0MyIKKyAg
ICAgICJyNCIKKyAgICB3aGVuICJ0NCIKKyAgICAgICJyNyIKKyAgICB3aGVuICJjZnIiCisgICAg
ICAicjUiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xh
c3MgRlBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUKKyAgICB3
aGVuICJmdDAiLCAiZnIiCisgICAgICAiZDAiCisgICAgd2hlbiAiZnIxIiwKKyAgICAgICJkMSIK
KyAgICB3aGVuICJmcjIiCisgICAgICAiZDIiCisgICAgd2hlbiAiZnIzIgorICAgICAgImQzIgor
ICAgIHdoZW4gImZyNCIKKyAgICAgICJkNCIKKyAgICB3aGVuICJmcjUiCisgICAgICAiZDUiCisg
ICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYXJtVjdTaW5n
bGUKKyAgICByYWlzZSB1bmxlc3MgQG5hbWUgPX4gL15kLworICAgICJzIiArICR+LnBvc3RfbWF0
Y2gudG9faSAqIDIKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiBhcm1WN09w
ZXJhbmQKKyAgICByYWlzZSAiSW52YWxpZCBpbW1lZGlhdGUgI3t2YWx1ZX0iIGlmIHZhbHVlIDwg
MCBvciB2YWx1ZSA+IDI1NQorICAgICJcIyN7dmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBB
ZGRyZXNzCisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICByYWlzZSAiQmFkIG9mZnNldCBhdCAje2Nv
ZGVPcmlnaW5TdHJpbmd9IiBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiBvciBvZmZzZXQudmFsdWUg
PiAweGZmZgorICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7b2Zmc2V0LmFybVY3T3BlcmFu
ZH1dIgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgZGVmIGFybVY3T3BlcmFuZAor
ICAgIHJhaXNlICJCYWQgb2Zmc2V0IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIGlmIG9mZnNldCAh
PSAwCisgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tpbmRleC5hcm1WN09wZXJhbmR9LCBs
c2wgXCMje3NjYWxlfV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBk
ZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2UgIlVuY29udmVydGVkIGFic29sdXRlIGFkZHJlc3Mg
YXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgZW5kCitlbmQKKworIworIyBMb3dlcmluZyBvZiBi
cmFuY2ggb3BzLiBGb3IgZXhhbXBsZToKKyMKKyMgYmFkZGl6IGZvbywgYmFyLCBiYXoKKyMKKyMg
d2lsbCBiZWNvbWU6CisjCisjIGFkZGkgZm9vLCBiYXIKKyMgYnogYmF6CisjCisKK2RlZiBhcm1W
N0xvd2VyQnJhbmNoT3BzKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAg
IHwgbm9kZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgY2FzZSBub2Rl
Lm9wY29kZQorICAgICAgd2hlbiAvXmIoYWRkaXxzdWJpfG9yaXxtdWxpfGFkZHApLworICAgICAg
ICBvcCA9ICQxCisgICAgICAgIGJyYW5jaCA9ICJiIiArICR+LnBvc3RfbWF0Y2gKKyAgICAgICAg
bmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBvcCwgbm9kZS5vcGVy
YW5kc1swLi4tMl0pCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29k
ZU9yaWdpbiwgYnJhbmNoLCBbbm9kZS5vcGVyYW5kc1stMV1dKQorICAgICAgZWxzZQorICAgICAg
ICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIG5ld0xpc3QgPDwg
bm9kZQorICAgIGVuZAorICB9CisgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1h
bGZvcm1lZCBhZGRyZXNzZXMuIEZvciBleGFtcGxlOgorIworIyBsb2FkcCAxMDAwMFtmb29dLCBi
YXIKKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUgMTAwMDAsIHRtcAorIyBhZGRwIGZvbywg
dG1wCisjIGxvYWRwIDBbdG1wXSwgYmFyCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIGFybVY3TG93
ZXJNYWxmb3JtZWRBZGRyZXNzZXMobGlzdCkKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IG5v
ZGUgfAorICAgICAgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzKGxpc3QpCisgICAg
fQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVk
QWRkcmVzc2VzKGxpc3QpCisgICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgb3Igb2Zmc2V0LnZh
bHVlID4gMHhmZmYKKyAgICAgIHRtcCA9IFRtcC5uZXcoY29kZU9yaWdpbiwgOmdwcikKKyAgICAg
IGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW0ltbWVkaWF0ZS5u
ZXcob2Zmc2V0KSwgdG1wXSkKKyAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmln
aW4sICJhZGRwIiwgW2Jhc2UsIHRtcF0pCisgICAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCB0
bXAsIEltbWVkaWF0ZS5uZXcoMCkpCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBl
bmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRBZGRy
ZXNzZXMobGlzdCkKKyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAgICAgdG1wID0gVG1wLm5l
dyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9y
aWdpbiwgIm1vdmUiLCBbSW1tZWRpYXRlLm5ldyhvZmZzZXQpLCB0bXBdKQorICAgICAgbGlzdCA8
PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgImFkZHAiLCBbYmFzZSwgdG1wXSkKKyAgICAg
IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgdG1wLCBpbmRleCwgc2NhbGUsIEltbWVkaWF0ZS5u
ZXcoMCkpCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFz
cyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXMobGlz
dCkKKyAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmdpbiwgOmdwcikKKyAgICBsaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFtJbW1lZGlhdGUubmV3KGFkZHJlc3MpLCB0
bXBdKQorICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldygwKSkK
KyAgZW5kCitlbmQKKworZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXMobGlzdCkKKyAg
bmV3TGlzdCA9IFtdCisgIGxpc3QuZWFjaCB7CisgICAgfCBub2RlIHwKKyAgICBuZXdMaXN0IDw8
IG5vZGUuYXJtVjdMb3dlck1hbGZvcmVkQWRkcmVzc2VzKG5ld0xpc3QpCisgIH0KKyAgbmV3TGlz
dAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWFsZm9ybWVkIGltbWVkaWF0ZXMgZXhjZXB0IHdo
ZW4gdXNlZCBpbiBhICJtb3ZlIiBpbnN0cnVjdGlvbi4KKyMgRm9yIGV4YW1wbGU6CisjCisjIGFk
ZHAgNjQyNjQxLCBmb28KKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUgNjQyNjQxLCB0bXAK
KyMgYWRkcCB0bXAsIGZvbworIworCitjbGFzcyBOb2RlCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9y
bWVkSW1tZWRpYXRlcyhsaXN0KQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgbm9kZSB8Cisg
ICAgICBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzKGxpc3QpCisgICAgfQorICBl
bmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJbW1l
ZGlhdGVzKGxpc3QpCisgICAgaWYgdmFsdWUgPCAwIG9yIHZhbHVlID4gMjU1CisgICAgICB0bXAg
PSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhjb2RlT3JpZ2luLCAibW92ZSIsIFtzZWxmLCB0bXBdKQorICAgICAgdG1wCisgICAgZWxzZQor
ICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitkZWYgYXJtVjdMb3dlck1hbGZvcm1l
ZEltbWVkaWF0ZXMobGlzdCkKKyAgbmV3TGlzdCA9IFtdCisgIGxpc3QuZWFjaCB7CisgICAgfCBu
b2RlIHwKKyAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICBjYXNlIG5vZGUub3Bj
b2RlCisgICAgICB3aGVuICJtb3ZlIgorICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgIHdo
ZW4gImFkZGkiLCAiYWRkcCIsICJzdWJpIiwgInN1YnAiCisgICAgICAgIGlmIG5vZGUub3BlcmFu
ZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZAorICAgICAgICAgICAgbm9kZS5vcGVyYW5kc1swXS52
YWx1ZSA8IDAgYW5kCisgICAgICAgICAgICBub2RlLm9wZXJhbmRzWzBdLnZhbHVlID49IDI1NQor
ICAgICAgICAgIGlmIG5vZGUub3Bjb2RlID1+IC9hZGQvCisgICAgICAgICAgICBuZXdPcGNvZGUg
PSAic3ViIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICBuZXdPcGNvZGUgPSAiYWRkIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KKyAgICAgICAgICBlbmQK
KyAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5l
d09wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSW1tZWRpYXRl
Lm5ldygtbm9kZS5vcGVyYW5kc1swXS52YWx1ZSldICsgbm9kZS5vcGVyYW5kc1sxLi4tMV0pCisg
ICAgICAgIGVsc2UKKyAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUuYXJtVjdMb3dlck1hbGZvcm1l
ZEltbWVkaWF0ZXMobmV3TGlzdCkKKyAgICAgICAgZW5kCisgICAgICB3aGVuICJtdWxpIgorICAg
ICAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgICB0bXAgPSBUbXAu
bmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtvcGVyYW5kc1swXSwgdG1wXSkKKyAgICAgICAg
ICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtdWxpIiwgW3Rt
cF0gKyBvcGVyYW5kc1sxLi4tMV0pCisgICAgICAgIGVsc2UKKyAgICAgICAgICBuZXdMaXN0IDw8
IG5vZGUuYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXMobmV3TGlzdCkKKyAgICAgICAgZW5k
CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVk
SW1tZWRpYXRlcyhuZXdMaXN0KQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgbmV3TGlzdCA8
PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2Yg
bWlzcGxhY2VkIGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGU6CisjCisjIGFkZGkgZm9vLCBbYmFyXQor
IworIyB3aWxsIGJlY29tZToKKyMKKyMgbG9hZGkgW2Jhcl0sIHRtcAorIyBhZGRpIGZvbywgdG1w
CisjIHN0b3JlaSB0bXAsIFtiYXJdCisjCisjIEFub3RoZXIgZXhhbXBsZToKKyMKKyMgYWRkaSBb
Zm9vXSwgYmFyCisjCisjIHdpbGwgYmVjb21lOgorIworIyBsb2FkaSBbZm9vXSwgdG1wCisjIGFk
ZGkgdG1wLCBiYXIKKyMKKworZGVmIGFybVY3QXNSZWdpc3RlcihwcmVMaXN0LCBwb3N0TGlzdCwg
b3BlcmFuZCwgc3VmZml4LCBuZWVkU3RvcmUpCisgIHJldHVybiBvcGVyYW5kIHVubGVzcyBvcGVy
YW5kLmFkZHJlc3M/CisgIAorICB0bXAgPSBUbXAubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgaWYg
c3VmZml4ID09ICJkIiB0aGVuIDpmcHIgZWxzZSA6Z3ByIGVuZCkKKyAgcHJlTGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAibG9hZCIgKyBzdWZmaXgsIFtvcGVyYW5k
LCB0bXBdKQorICBpZiBuZWVkU3RvcmUKKyAgICBwb3N0TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
b3BlcmFuZC5jb2RlT3JpZ2luLCAic3RvcmUiICsgc3VmZml4LCBbdG1wLCBvcGVyYW5kXSkKKyAg
ZW5kCisgIHRtcAorZW5kCisKK2RlZiBhcm1WN0FzUmVnaXN0ZXJzKHByZUxpc3QsIHBvc3RMaXN0
LCBvcGVyYW5kcywgc3VmZml4KQorICBuZXdPcGVyYW5kcyA9IFtdCisgIG9wZXJhbmRzLmVhY2hf
d2l0aF9pbmRleCB7CisgICAgfCBvcGVyYW5kLCBpbmRleCB8CisgICAgbmV3T3BlcmFuZHMgPDwg
YXJtVjdBc1JlZ2lzdGVyKHByZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kLCBzdWZmaXgsIGluZGV4
ID09IG9wZXJhbmRzLnNpemUgLSAxKQorICB9CisgIG5ld09wZXJhbmRzCitlbmQKKworZGVmIGFy
bVY3TG93ZXJNaXNwbGFjZWRBZGRyZXNzZXMobGlzdCkKKyAgbmV3TGlzdCA9IFtdCisgIGxpc3Qu
ZWFjaCB7CisgICAgfCBub2RlIHwKKyAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAg
ICBwb3N0SW5zdHJ1Y3Rpb25zID0gW10KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdo
ZW4gImFkZGkiLCAiYWRkcCIsICJhbmRpIiwgImFuZHAiLCAibHNoaWZ0aSIsICJtdWxpIiwgIm5l
Z2kiLCAibm90aSIsICJvcmkiLCAib3JwIiwgInJzaGlmdGkiLAorICAgICAgICAidXJzaGlmdGki
LCAic3ViaSIsICJzdWJwIiwgInhvcmkiLCAieG9ycCIsIC9eYmkvLCAvXmJwLywgL15idGkvLCAv
XmJ0cC8sICJjYWxsIiwgL15jaS8sIC9eY3AvLAorICAgICAgICAvXnRpLworICAgICAgICBuZXdM
aXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhcm1WN0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5v
ZGUub3BlcmFuZHMsICJpIikpCisgICAgICB3aGVuICJiYmVxIiwgImJibmVxIiwgImJiYSIsICJi
YmFlcSIsICJiYmIiLCAiYmJiZXEiLCAiYnRibyIsICJidGJ6IiwgImJ0Ym56IiwgInRieiIsICJ0
Ym56IiwKKyAgICAgICAgInRibyIKKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
bm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rl
Lm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJtVjdBc1JlZ2lz
dGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAiYiIpKQorICAg
ICAgd2hlbiAiYmJndCIsICJiYmd0ZXEiLCAiYmJsdCIsICJiYmx0ZXEiLCAiYnRicyIsICJ0YnMi
CisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwgcG9zdElu
c3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImJzIikpCisgICAgICB3aGVuICJhZGRkIiwgImRp
dmQiLCAic3ViZCIsICJtdWxkIiwgInNxcnRkIiwgL15iZC8KKyAgICAgICAgbmV3TGlzdCA8PCBJ
bnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXJtVjdBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJh
bmRzLCAiZCIpKQorICAgICAgd2hlbiAiam1wIiwgImNhbGwiCisgICAgICAgIG5ld0xpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFthcm1WN0FzUmVnaXN0ZXIobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVy
YW5kcywgInAiLCBmYWxzZSldKQorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IG5vZGUK
KyAgICAgIGVuZAorICAgICAgbmV3TGlzdCArPSBwb3N0SW5zdHJ1Y3Rpb25zCisgICAgZWxzZQor
ICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMK
KyMgTG93ZXJpbmcgb2YgcmVnaXN0ZXIgcmV1c2UgaW4gY29tcGFyZSBpbnN0cnVjdGlvbnMuIEZv
ciBleGFtcGxlOgorIworIyBjaWVxIHQwLCB0MSwgdDAKKyMKKyMgd2lsbCBiZWNvbWU6CisjCisj
IG1vdiB0bXAsIHQwCisjIGNpZXEgdG1wLCB0MSwgdDAKKyMKKyAKK2RlZiBhcm1WN0xvd2VyUmVn
aXN0ZXJSZXVzZShsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5v
ZGUgfAorICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNv
ZGUKKyAgICAgIHdoZW4gImNpZXEiLCAiY2luZXEiLCAiY2lhIiwgImNpYWVxIiwgImNpYiIsICJj
aWJlcSIsICJjaWd0IiwgImNpZ3RlcSIsICJjaWx0IiwgImNpbHRlcSIsCisgICAgICAgICJjcGVx
IiwgImNwbmVxIiwgImNwYSIsICJjcGFlcSIsICJjcGIiLCAiY3BiZXEiLCAiY3BndCIsICJjcGd0
ZXEiLCAiY3BsdCIsICJjcGx0ZXEiLAorICAgICAgICAidGlvIiwgInRpcyIsICJ0aXoiLCAidGlu
eiIsICJ0Ym8iLCAidGJzIiwgInRieiIsICJ0Ym56IgorICAgICAgICBpZiBvcGVyYW5kcy5zaXpl
ID09IDIKKyAgICAgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1sxXQorICAgICAgICAg
ICAgdG1wID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICBuZXdM
aXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW29wZXJhbmRz
WzBdLCB0bXBdKQorICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5j
b2RlT3JpZ2luLCBub2RlLm9wY29kZSwgW3RtcCwgb3BlcmFuZHNbMV1dKQorICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAgIGVuZAorICAgICAgICBl
bHNlCisgICAgICAgICAgcmFpc2UgIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgYXQgI3tub2Rl
LmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgICAgICAg
aWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgIHRtcCA9IFRtcC5uZXco
bm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtvcGVyYW5kc1swXSwgdG1wXSkKKyAgICAg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5v
cGNvZGUsIFt0bXAsIG9wZXJhbmRzWzFdLCBvcGVyYW5kc1syXV0pCisgICAgICAgICAgZWxzaWYg
b3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcobm9k
ZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtvcGVyYW5kc1sxXSwgdG1wXSkKKyAgICAgICAg
ICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNv
ZGUsIFtvcGVyYW5kc1swXSwgdG1wLCBvcGVyYW5kc1syXV0pCisgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAg
IG5ld0xpc3QgPDwgbm9kZQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgbmV3TGlzdCA8PCBu
b2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMgQWN0dWFsIGxvd2VyaW5n
IGNvZGUgZm9sbG93cy4KKyMKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIGxvd2VyQVJNdjcKKyAg
ICBteUxpc3QgPSBhcm1WN0xvd2VyQnJhbmNoT3BzKEBsaXN0KQorICAgIG15TGlzdCA9IGFybVY3
TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXMobXlMaXN0KQorICAgIG15TGlzdCA9IGFybVY3TG93ZXJN
YWxmb3JtZWRJbW1lZGlhdGVzKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWlzcGxh
Y2VkQWRkcmVzc2VkKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyUmVnaXN0ZXJSZXVz
ZShteUxpc3QpCisgICAgbXlMaXN0ID0gYXNzaWduUmVnaXN0ZXJzVG9UZW1wb3JhcmllcyhteUxp
c3QsIDpncHIsIEFSTXY3X0VYVFJBX0dQUlMpCisgICAgbXlMaXN0ID0gYXNzaWduUmVnaXN0ZXJz
VG9UZW1wb3JhcmllcyhteUxpc3QsIDpmcHIsIEFSTXY3X0VYVFJBX0ZQUlMpCisgICAgbXlMaXN0
LmVhY2ggeworICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUubG93ZXIoIkFSTXY3IikKKyAgICB9
CisgIGVuZAorZW5kCisKK2RlZiBhcm1WN09wZXJhbmRzKG9wZXJhbmRzKQorICBvcGVyYW5kcy5t
YXB7fHZ8IHYuYXJtVjdPcGVyYW5kfS5qb2luKCIgIikKK2VuZAorCitkZWYgYXJtVjdGbGlwcGVk
T3BlcmFuZHMob3BlcmFuZHMpCisgIGFybVY3T3BlcmFuZHMoW29wZXJhbmRzWy0xXV0gKyBvcGVy
YW5kc1swLi4tMl0pCitlbmQKKworZGVmIGVtaXRBcm1WN0NvbXBhY3Qob3Bjb2RlMiwgb3Bjb2Rl
Mywgb3BlcmFuZHMpCisgIGlmIG9wZXJhbmRzLnNpemUgPT0gMworICAgICRhc20ucHV0cyAiI3tv
cGNvZGUzfSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgIGVsc2UKKyAgICBy
YWlzZSB1bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRz
WzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUK
KyAgICAgICRhc20ucHV0cyAiI3tvcGNvZGUzfSAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0s
ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9
IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiI3tvcGNvZGUyfSAje2FybVY3RmxpcHBlZE9w
ZWFybmRzKG9wZXJhbmRzKX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2RlZiBlbWl0QXJtVjco
b3Bjb2RlLCBvcGVyYW5kcykKKyAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgJGFzbS5wdXRz
ICIje29wY29kZX0gI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICBlbHNlCisg
ICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzLnNpemUgPT0gMgorICAgICRhc20ucHV0cyAiI3tvcGNv
ZGV9ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJh
bmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgIGVuZAorZW5kCisKK2RlZiBlbWl0
QXJtVjdEb3VibGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBvcGVyYW5kcykKKyAgJGFzbS5wdXRzICJ2
Y21wZS5mNjQgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICRhc20ucHV0cyAi
dm1ycyBhcHNyX256Y3YsIGZwc2NyIgorICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29w
ZXJhbmRzWzJdLmFzbUxhYmVsfSIKK2VuZAorCitkZWYgYXJtVjdUZXN0aW5nWmVybyhvcGVyYW5k
cykKKyAgdmFsdWUgPSBvcGVyYW5kc1swXQorICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgd2hlbiAy
CisgICAgbWFzayA9IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLTEpCisgIHdoZW4gMworICAg
IG1hc2sgPSBvcGVyYW5kc1sxXQorICBlbHNlCisgICAgcmFpc2UgIkV4cGVjdGVkIDIgb3IgMyBv
cGVyYW5kcyBidXQgZ290ICN7b3BlcmFuZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIK
KyAgZW5kCisgIAorICAobWFzay5pc19hPyBJbW1lZGlhdGUgYW5kIG1hc2sudmFsdWUgPT0gLTEp
IG9yIHZhbHVlID09IG1hc2sKK2VuZAorCitkZWYgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAg
dmFsdWUgPSBvcGVyYW5kc1swXQorICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgd2hlbiAyCisgICAg
bWFzayA9IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLTEpCisgIHdoZW4gMworICAgIG1hc2sg
PSBvcGVyYW5kc1sxXQorICBlbHNlCisgICAgcmFpc2UgIkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5k
cyBidXQgZ290ICN7b3BlcmFuZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgZW5k
CisgIAorICBpZiBtYXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQorICAg
ICRhc20ucHV0cyAidHN0ICN7dmFsdWUuYXJtVjdPcGVyYW5kfSwgI3t2YWx1ZS5hcm1WN09wZXJh
bmR9IgorICBlbHNpZiBtYXNrLmlzX2E/IEltbWVkaWF0ZQorICAgICRhc20ucHV0cyAidHN0Lncg
I3t2YWx1ZS5hcm1WN09wcmVhbmR9LCAje21hc2suYXJtVjdPcGVyYW5kfSIKKyAgZWxzZQorICAg
ICRhc20ucHV0cyAidHN0ICN7dmFsdWUuYXJtVjdPcGVyYW5kfSwgI3ttYXNrLmFybVY3T3BlcmFu
ZH0iCisgIGVuZAorZW5kCisKK2RlZiBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCBjb2RlKQor
ICAkYXNtLnB1dHMgIm1vdnMgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCBcIzAiCisgICRh
c20ucHV0cyAiY21wICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5h
cm1WN09wZXJhbmR9IgorICAkYXNtLnB1dHMgIml0ICN7Y29kZX0iCisgICRhc20ucHV0cyAibW92
I3tjb2RlfSAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sIFwjMSIKK2VuZAorCitkZWYgZW1p
dEFybVY3VGVzdFNldChvcGVyYW5kcywgY29kZSkKKyAgJGFzbS5wdXRzICJtb3ZzICN7b3BlcmFu
ZHNbLTFdLmFybVY3T3BlcmFuZH0sIFwjMCIKKyAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAg
JGFzbS5wdXRzICJpdCAje2NvZGV9IgorICAkYXNtLnB1dHMgIm1vdiN7Y29kZX0gI3tvcGVyYW5k
c1stMV0uYXJtVjdPcGVyYW5kfSwgXCMxIgorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgIGRl
ZiBsb3dlckFSTXY3CisgICAgJGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICBjYXNl
IG9wY29kZQorICAgIHdoZW4gImFkZGkiLCAiYWRkcCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUg
PT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVz
cyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVy
YW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09
IDAKKyAgICAgICAgICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAg
ICAgICRhc20ucHV0cyAibW92ICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAg
ICAgJGFzbS5wdXRzICJhZGRzICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAg
ICAgICAgZW5kCisgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBd
LmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/
IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lz
dGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJhZGRzICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3Bl
cmFuZHMpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRp
YXRlCisgICAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1sw
XQorICAgICAgICAgICAgJGFzbS5wdXRzICJhZGRzICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3Bl
cmFuZHMpfSIKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICRhc20ucHV0
cyAiYWRkICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAgZW5kCisg
ICAgICBlbmQKKyAgICB3aGVuICJhbmRpIiwgImFuZHAiCisgICAgICBlbWl0QXJtVjdDb21wYWN0
KCJhbmRzIiwgImFuZCIsIG9wZXJhbmRzKQorICAgIHdoZW4gIm9yaSIsICJvcnAiCisgICAgICBl
bWl0QXJtVjdDb21wYWN0KCJvcnJzIiwgIm9yciIsIG9wZXJhbmRzKQorICAgIHdoZW4gInhvcmki
LCAieG9ycCIKKyAgICAgIGVtaXRBcm1WN0NvbXBhY3QoImVvcnMiLCAiZW9yIiwgb3BlcmFuZHMp
CisgICAgd2hlbiAibHNoaWZ0aSIKKyAgICAgIGVtaXRBcm1WN0NvbXBhY3QoImxzbHMiLCAibHNs
cyIsIG9wZXJhbmRzKQorICAgIHdoZW4gInJzaGlmdGkiCisgICAgICBlbWl0QXJtVjdDb21wYWN0
KCJhc3JzIiwgImFzcnMiLCBvcGVyYW5kcykKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgIGVt
aXRBcm1WN0NvbXBhY3QoImxzcnMiLCAibHNycyIsIG9wZXJhbmRzKQorICAgIHdoZW4gIm11bGki
CisgICAgICBlbWl0QXJtVjcoIm11bHMiLCBvcGVyYW5kcykKKyAgICB3aGVuICJzdWJpIiwgInN1
YnAiCisgICAgICBlbWl0QXJtVjdDb21wYWN0KCJzdWJzIiwgInN1YnMiLCBvcGVyYW5kcykKKyAg
ICB3aGVuICJuZWdpIgorICAgICAgJGFzbS5wdXRzICJyc2JzICN7b3BlcmFuZHNbMF0uYXJtVjdP
cGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCBcIzAiCisgICAgd2hlbiAibm90
aSIKKyAgICAgICRhc20ucHV0cyAibXZucyAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7
b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICB3aGVuICJsb2FkaSIsICJsb2FkcCIKKyAg
ICAgICRhc20ucHV0cyAibGRyICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAg
ICB3aGVuICJzdG9yZWkiLCAic3RvcmVwIgorICAgICAgJGFzbS5wdXRzICJzdHIgI3thcm1WN09w
ZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNtLnB1dHMgImxk
cmIgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gImxvYWRicyIK
KyAgICAgICRhc20ucHV0cyAibGRyc2IudyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRz
KX0iCisgICAgd2hlbiAic3RvcmViIgorICAgICAgJGFzbS5wdXRzICJzdHJiICN7YXJtVjdGbGlw
cGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJsb2FkaCIKKyAgICAgICRhc20ucHV0
cyAibGRyaCAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAibG9h
ZGhzIgorICAgICAgJGFzbS5wdXRzICJsZHJzaC53ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3Bl
cmFuZHMpfSIKKyAgICB3aGVuICJzdG9yZWgiCisgICAgICAkYXNtLnB1dHMgInN0cmggI3thcm1W
N0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gImFkZGQiCisgICAgICBlbWl0
QXJtVjcoInZhZGQuZjY0Iiwgb3BlcmFuZHMpCisgICAgd2hlbiAiZGl2ZCIKKyAgICAgIGVtaXRB
cm1WNygidmRpdi5mNjQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJzdWJkIgorICAgICAgZW1pdEFy
bVY3KCJ2c3ViLmY2NCIsIG9wZXJhbmRzKQorICAgIHdoZW4gIm11bGQiCisgICAgICBlbWl0QXJt
VjcoInZtdWwuZjY0Iiwgb3BlcmFuZHMpCisgICAgd2hlbiAic3FydGQiCisgICAgICAkYXNtLnB1
dHMgInZzcXJ0LmY2NCAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hl
biAiY2kyZCIKKyAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzFdLmFybVY3U2luZ2xl
fSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgJGFzbS5wdXRzICJ2Y3Z0LmY2
NC5zMzIgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3U2lu
Z2xlfSIKKyAgICB3aGVuICJiZGVxIgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJiZXEi
LCBvcGVyYW5kcykKKyAgICB3aGVuICJiZG5lcSIKKyAgICAgICRhc20ucHV0cyAidmNtcGUuZjY0
ICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5wdXRzICJ2bXJz
IGFwc3JfbnpjdiwgZnBzY3IiCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVl
KCJiZG5lcSIpCisgICAgICAkYXNtLnB1dHMgImJ2cyAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2Rl
T3JpZ2luLCBpc1Vub3JkZXJlZCkuYXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJibmUgI3tv
cGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiQVJNdjciKQor
ICAgIHdoZW4gImJkZ3QiCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJndCIsIG9wZXJh
bmRzKQorICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmdl
Iiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRsdCIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5j
aCgiYm1pIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRsdGVxIgorICAgICAgZW1pdEFybVY3RG91
YmxlQnJhbmNoKCJibHMiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGVxdW4iCisgICAgICAkYXNt
LnB1dHMgInZjbXBlLmY2NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAg
ICRhc20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2NyIgorICAgICAgJGFzbS5wdXRzICJidnMg
I3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAkYXNtLnB1dHMgImJlcSAje29wZXJhbmRz
WzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiZG5lcXVuIgorICAgICAgZW1pdEFybVY3RG91Ymxl
QnJhbmNoKCJibmUiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGd0dW4iCisgICAgICBlbWl0QXJt
VjdEb3VibGVCcmFuY2goImJoaSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkZ3RlcXVuIgorICAg
ICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJicGwiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGx0
dW4iCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJsdCIsIG9wZXJhbmRzKQorICAgIHdo
ZW4gImJkbHRlcXVuIgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJibGUiLCBvcGVyYW5k
cykKKyAgICB3aGVuICJidGQyaSIKKyAgICAgICMgRklYTUU6IG1heSBiZSBhIGdvb2QgaWRlYSB0
byBqdXN0IGdldCByaWQgb2YgdGhpcyBpbnN0cnVjdGlvbiwgc2luY2UgdGhlIGludGVycHJldGVy
CisgICAgICAjIGN1cnJlbnRseSBkb2VzIG5vdCB1c2UgaXQuCisgICAgICByYWlzZSAiQVJNdjcg
ZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wY29kZSB5ZXQsICN7Y29kZU9yaWdpbn0iCisgICAgd2hl
biAidGQyaSIKKyAgICAgICRhc20ucHV0cyAidmN2dC5zMzIuZjY0ICN7QVJNdjdfU0NSQVRDSF9G
UFIuYXJtVjdTaW5nbGV9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAkYXNt
LnB1dHMgInZtb3YgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje0FSTXY3X1NDUkFUQ0hf
RlBSLmFybVY3U2luZ2xlfSIKKyAgICB3aGVuICJiY2QyaSIKKyAgICAgICRhc20ucHV0cyAidmN2
dC5zMzIuZjY0ICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJtVjdTaW5nbGV9LCAje29wZXJhbmRzWzBd
LmFybVY3T3BlcmFuZH0iCisgICAgICAkYXNtLnB1dHMgInZtb3YgI3tvcGVyYW5kc1sxXS5hcm1W
N09wZXJhbmR9LCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSIKKyAgICAgICRhc20u
cHV0cyAidmN2dC5mNjQuczMyICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJtVjdPcGVyYW5kfSwgI3tB
Uk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0iCisgICAgICBhbWl0QXJtVjdEb3VibGVCcmFu
Y2goImJuZSIsIFtBUk12N19TQ1JBVENIX0ZQUiwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzJdXSkK
KyAgICAgICRhc20ucHV0cyAiY2J6ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVy
YW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAibW92ZHoiCisgICAgICAjIEZJWE1FOiBlaXRo
ZXIgc3VwcG9ydCB0aGlzIG9yIHJlbW92ZSBpdC4KKyAgICAgIHJhaXNlICJBUk12NyBkb2VzIG5v
dCBzdXBwb3J0IHRoaXMgb3Bjb2RlIHlldCwgI3tjb2RlT3JpZ2lufSIKKyAgICB3aGVuICJwb3Ai
CisgICAgICAkYXNtLnB1dHMgInBvcCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAg
d2hlbiAicHVzaCIKKyAgICAgICRhc20ucHV0cyAicHVzaCAje29wZXJhbmRzWzBdLmFybVY3T3Bl
cmFuZH0iCisgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6eGkycCIKKyAgICAgIGlmIG9wZXJh
bmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICBhcm1WN01vdmVJbW1lZGlhdGUob3BlcmFu
ZHNbMF0udmFsdWUsIG9wZXJhbmRzWzFdKQorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMg
Im1vdiAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICBlbmQKKyAgICB3
aGVuICJub3AiCisgICAgICAkYXNtLnB1dHMgIm5vcCIKKyAgICB3aGVuICJiaWVxIiwgImJwZXEi
LCAiYmJlcSIKKyAgICAgIGlmIEltbWVkaWF0ZS5uZXcoMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAg
ICAgJGFzbS5wdXRzICJjYnogI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9ICN7b3BlcmFuZHNb
Ml0uYXNtTGFiZWx9IgorICAgICAgZWxzaWYgSW1tZWRpYXRlLm5ldygwKSA9PSBvcGVyYW5kc1sx
XQorICAgICAgICAkYXNtLnB1dHMgImNieiAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0gI3tv
cGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiY21w
ICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgICAkYXNtLnB1dHMgImJl
cSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgIGVuZAorICAgIHdoZW4gImJpbmVxIiwg
ImJwbmVxIiwgImJibmVxIgorICAgICAgaWYgSW1tZWRpYXRlLm5ldygwKSA9PSBvcGVyYW5kc1sw
XQorICAgICAgICAkYXNtLnB1dHMgImNibnogI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9ICN7
b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgZWxzaWYgSW1tZWRpYXRlLm5ldygwKSA9PSBv
cGVyYW5kc1sxXQorICAgICAgICAkYXNtLnB1dHMgImNibnogI3tvcGVyYW5kc1swXS5hcm1WN09w
ZXJhbmR9ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgZWxzZQorICAgICAgICAkYXNt
LnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgJGFz
bS5wdXRzICJibmUgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICBlbmQKKyAgICB3aGVu
ICJiaWEiLCAiYnBhIiwgImJiYSIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5k
cyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5wdXRzICJiaGkgI3tvcGVyYW5kc1syXS5h
c21MYWJlbH0iCisgICAgd2hlbiAiYmlhZXEiLCAiYnBhZXEiLCAiYmJhZXEiCisgICAgICAkYXNt
LnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20u
cHV0cyAiYmhzICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJpYiIsICJicGIi
LCAiYmJiIgorICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAu
LjFdKX0iCisgICAgICAkYXNtLnB1dHMgImJsbyAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAg
ICB3aGVuICJiaWJlcSIsICJicGJlcSIsICJiYmJlcSIKKyAgICAgICRhc20ucHV0cyAiY21wICN7
YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5wdXRzICJibHMgI3tv
cGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmlndCIsICJicGd0IiwgImJiZ3QiCisg
ICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAg
ICAgICRhc20ucHV0cyAiYmd0ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJp
Z3RlcSIsICJicGd0ZXEiLCAiYmJndGVxIgorICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09w
ZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgImJnZSAje29wZXJhbmRz
WzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWx0IiwgImJwbHQiLCAiYmJsdCIKKyAgICAgICRh
c20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFz
bS5wdXRzICJibHQgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmlsdGVxIiwg
ImJwbHRlcSIsICJiYmx0ZXEiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMo
b3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmxlICN7b3BlcmFuZHNbMl0uYXNt
TGFiZWx9IgorICAgIHdoZW4gImJ0aXoiLCAiYnRweiIsICJidGJ6IgorICAgICAgaWYgYXJtVjdU
ZXN0aW5nWmVybyhvcGVyYW5kcykKKyAgICAgICAgJGFzbS5wdXRzICJjYnogI3tvcGVyYW5kc1sw
XS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgIGVsc2UKKyAg
ICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgICAgICAgJGFzbS5wdXRzICJiZXEgI3tv
cGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICBlbmQKKyAgICB3aGVuICJidGlueiIsICJidHBu
eiIsICJidGJueiIKKyAgICAgIGlmIGFybVY3VGVzdGluZ1plcm8ob3BlcmFuZHMpCisgICAgICAg
ICRhc20ucHV0cyAiY2JueiAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNb
Ml0uYXNtTGFiZWx9IgorICAgICAgZWxzZQorICAgICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRz
KQorICAgICAgICAkYXNtLnB1dHMgImJuZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAg
IGVuZAorICAgIHdoZW4gImJ0aW8iLCAiYnRwbyIsICJidGJvIgorICAgICAgZW1pdEFybVY3VGVz
dChvcGVyYW5kcykKKyAgICAgICRhc20ucHV0cyAiYnZzICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9
IgorICAgIHdoZW4gImJ0aXMiLCAiYnRwcyIsICJidGJzIgorICAgICAgZW1pdEFybVY3VGVzdChv
cGVyYW5kcykKKyAgICAgICRhc20ucHV0cyAiYm1pICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9Igor
ICAgIHdoZW4gImptcCIKKyAgICAgIGlmIG9wZXJhbmRzWzBdLmxhYmVsPworICAgICAgICAkYXNt
LnB1dHMgImIgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgICBlbHNlCisgICAgICAgICRh
c20ucHV0cyAibW92IHBjLCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICBlbmQK
KyAgICB3aGVuICJjYWxsIgorICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAgICRh
c20ucHV0cyAiYmx4ICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgZWxzZQorICAgICAg
ICAkYXNtLnB1dHMgImJseiAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICBlbmQK
KyAgICB3aGVuICJicmVhayIKKyAgICAgICRhc20ucHV0cyAiYmtwdCIKKyAgICB3aGVuICJyZXQi
CisgICAgICAkYXNtLnB1dHMgImJ4IGxyIgorICAgIHdoZW4gImNpZXEiLCAiY3BlcSIKKyAgICAg
IGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJlcSIpCisgICAgd2hlbiAiY2luZXEiLCAiY3Bu
ZXEiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibmUiKQorICAgIHdoZW4gImNp
YSIsICJjcGEiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiaGkiKQorICAgIHdo
ZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImhz
IikKKyAgICB3aGVuICJjaWIiLCAiY3BiIgorICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5k
cywgImxvIikKKyAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAgIGVtaXRBcm1WN0NvbXBh
cmUob3BlcmFuZHMsICJscyIpCisgICAgd2hlbiAiY2lndCIsICJjcGd0IgorICAgICAgZW1pdEFy
bVY3Q29tcGFyZShvcGVyYW5kcywgImd0IikKKyAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVxIgor
ICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImdlIikKKyAgICB3aGVuICJjaWx0Iiwg
ImNwbHQiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibHQiKQorICAgIHdoZW4g
ImNpbHRlcSIsICJjcGx0ZXEiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibGUi
KQorICAgIHdoZW4gInRpbyIsICJ0Ym8iCisgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRz
LCAidnMiKQorICAgIHdoZW4gInRpcyIsICJ0YnMiCisgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9w
ZXJhbmRzLCAibWkiKQorICAgIHdoZW4gInRpeiIsICJ0YnoiCisgICAgICBlbWl0QXJtVjdUZXN0
U2V0KG9wZXJhbmRzLCAiZXEiKQorICAgIHdoZW4gInRpbnoiLCAidGJueiIKKyAgICAgIGVtaXRB
cm1WN1Rlc3RTZXQob3BlcmFuZHMsICJuZSIpCisgICAgd2hlbiAicGVlayIKKyAgICAgICRhc20u
cHV0cyAibGRyICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgW3NwLCBcIyN7b3BlcmFuZHNb
MF0udmFsdWUgKiA0fV0iCisgICAgd2hlbiAicG9rZSIKKyAgICAgICRhc20ucHV0cyAic3RyICN7
b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgW3NwLCBcIyN7b3BlcmFuZHNbMF0udmFsdWUgKiA0
fV0iCisgICAgd2hlbiAiZmlpMmQiCisgICAgICAkYXNtLnB1dHMgInZtb3YgI3tvcGVyYW5kc1sy
XS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNb
MV0uYXJtVjdPcGVyYW5kfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRhc20ucHV0cyAidm1v
diAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5k
fSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgIHdoZW4gImJvIgorICAgICAgJGFz
bS5wdXRzICJidnMgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYnMiCisgICAg
ICAkYXNtLnB1dHMgImJtaSAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJieiIK
KyAgICAgICRhc20ucHV0cyAiYmVxICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgIHdoZW4g
ImJueiIKKyAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAg
IGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hc20ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXNtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXNtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzNSBAQAorIyEvdXNyL2Jpbi9lbnYgcnVi
eQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiskOiA8PCBGaWxlLmRp
cm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAiZGlnZXN0L3No
YTEiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2VsZl9o
YXNoIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2NsYXNzIEFz
c2VtYmxlcgorICBkZWYgaW5pdGlhbGl6ZShvdXRwKQorICAgIEBvdXRwID0gb3V0cAorICAgIEBz
dGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBkZWYgZW50ZXJBc20KKyAgICBAb3V0cC5wdXRzICJh
c20gKCIKKyAgICBAc3RhdGUgPSA6YXNtCisgIGVuZAorICAKKyAgZGVmIGxlYXZlQXNtCisgICAg
QG91dHAucHV0cyAiKTsiCisgICAgQHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBpbkFz
bQorICAgIGVudGVyQXNtCisgICAgeWllbGQKKyAgICBsZWF2ZUFzbQorICBlbmQKKyAgCisgIGRl
ZiBwdXRzKCpsaW5lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRw
LnB1dHMoIlwiXFx0IiArIGxpbmUuam9pbignJykgKyAiXFxuXCIiKQorICBlbmQKKyAgCisgIGRl
ZiBwcmludChsaW5lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRw
LnByaW50KCJcIiIgKyBsaW5lICsgIlwiIikKKyAgZW5kCisgIAorICBkZWYgcHV0c0xhYmVsKGxh
YmVsTmFtZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wdXRz
KCJcIi5nbG9ibCBcIiBTWU1CT0xfU1RSSU5HKCN7bGFiZWxOYW1lfSkgXCJcXG5cIiIpCisgICAg
QG91dHAucHV0cygiSElERV9TWU1CT0woI3tsYWJlbE5hbWV9KSBcIlxcblwiIikKKyAgICBAb3V0
cC5wdXRzKCJTWU1CT0xfU1RSSU5HKCN7bGFiZWxOYW1lfSkgXCI6XFxuXCIiKQorICBlbmQKKyAg
CisgIGRlZiBwdXRzTG9jYWxMYWJlbChsYWJlbE5hbWUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0
ZSA9PSA6YXNtCisgICAgQG91dHAucHV0cygiTE9DQUxfTEFCRUxfU1RSSU5HKCN7bGFiZWxOYW1l
fSkgXCI6XFxuXCIiKQorICBlbmQKKyAgCisgIGRlZiBzZWxmLmxhYmVsUmVmZXJlbmNlKGxhYmVs
TmFtZSkKKyAgICAiXCIgU1lNQk9MX1NUUklORygje2xhYmVsTmFtZX0pIFwiIgorICBlbmQKKyAg
CisgIGRlZiBzZWxmLmxvY2FsTGFiZWxSZWZlcmVuY2UobGFiZWxOYW1lKQorICAgICJcIiBMT0NB
TF9MQUJFTF9TVFJJTkcoI3tsYWJlbE5hbWV9KSBcIiIKKyAgZW5kCisgIAorICBkZWYgY29tbWVu
dCh0ZXh0KQorICAgIEBvdXRwLnB1dHMgIi8vICN7dGV4dH0iCisgIGVuZAorZW5kCisKK2FzbUZp
bGUgPSBBUkdWLnNoaWZ0CitvZmZzZXRzRmlsZSA9IEFSR1Yuc2hpZnQKK291dHB1dEZsbm0gPSBB
UkdWLnNoaWZ0CisKK29mZnNldHNMaXN0LCBjb25maWdJbmRleCA9IG9mZnNldHNBbmRDb25maWd1
cmF0aW9uSW5kZXgob2Zmc2V0c0ZpbGUpCitpbnB1dERhdGEgPSBJTzo6cmVhZChhc21GaWxlKQor
CitpbnB1dEhhc2ggPQorICAiLy8gb2ZmbGluZWFzbSBpbnB1dCBoYXNoOiAiICsgRGlnZXN0OjpT
SEExLmhleGRpZ2VzdChpbnB1dERhdGEpICsKKyAgIiAiICsgRGlnZXN0OjpTSEExLmhleGRpZ2Vz
dCgob2Zmc2V0c0xpc3QgKyBbY29uZmlnSW5kZXhdKS5qb2luKCcgJykpICsKKyAgIiAiICsgc2Vs
Zkhhc2gKKworaWYgRmlsZVRlc3QuZXhpc3Q/IG91dHB1dEZsbm0KKyAgRmlsZS5vcGVuKG91dHB1
dEZsbm0sICJyIikgeworICAgIHwgaW5wIHwKKyAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAg
IGlmIGZpcnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09IGlucHV0SGFzaAorICAgICAgJHN0
ZGVyci5wdXRzICJOb3RoaW5nIGNoYW5nZWQuIgorICAgICAgZXhpdCAwCisgICAgZW5kCisgIH0K
K2VuZAorCitGaWxlLm9wZW4ob3V0cHV0RmxubSwgInciKSB7CisgIHwgb3V0cCB8CisgICRvdXRw
dXQgPSBvdXRwCisgICRvdXRwdXQucHV0cyBpbnB1dEhhc2gKKyAgCisgICRhc20gPSBBc3NlbWJs
ZXIubmV3KCRvdXRwdXQpCisgIAorICBhc3QgPSBwYXJzZShsZXgoaW5wdXREYXRhKSkKKyAgCisg
IGZvclNldHRpbmdzKGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpW2NvbmZpZ0luZGV4
XSwgYXN0KSB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8
CisgICAgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICAgIGxvd0xldmVs
QVNUID0gbG93TGV2ZWxBU1QucmVzb2x2ZSgqYnVpbGRPZmZzZXRzTWFwKGxvd0xldmVsQVNULCBv
ZmZzZXRzTGlzdCkpCisgICAgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5n
cywgbG93TGV2ZWxBU1QsIGJhY2tlbmQpIHsKKyAgICAgICRhc20uaW5Bc20geworICAgICAgICBs
b3dMZXZlbEFTVC5sb3dlcihiYWNrZW5kKQorICAgICAgfQorICAgIH0KKyAgfQorfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4NzcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMKKyMg
QmFzZSB1dGlsaXR5IHR5cGVzIGZvciB0aGUgQVNULgorIworCisjIFZhbGlkIG1ldGhvZHMgZm9y
IE5vZGU6CisjCisjIG5vZGUuY2hpbGRyZW4gLT4gUmV0dXJucyBhbiBhcnJheSBvZiBpbW1lZGlh
dGUgY2hpbGRyZW4uCisjCisjIG5vZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJucyBhbiBhcnJheSBv
ZiBhbGwgc3RyaWN0IGRlc2NlbmRhbnRzIChjaGlsZHJlbgorIyAgICAgYW5kIGNoaWxkcmVuIG9m
IGNoaWxkcmVuLCB0cmFuc2l0aXZlbHkpLgorIworIyBub2RlLmZsYXR0ZW4gLT4gUmV0dXJucyBh
biBhcnJheSBjb250YWluaW5nIHRoZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5kCisjICAgICB0aGUg
bm9kZSBpdHNlbGYuCisjCisjIG5vZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVybnMgYW4gYXJyYXkg
Y29udGFpbmluZyB0aG9zZSBlbGVtZW50cyBpbgorIyAgICAgbm9kZS5mbGF0dGVuIHRoYXQgYXJl
IG9mIHRoZSBnaXZlbiB0eXBlIChpc19hPyB0eXBlIHJldHVybnMgdHJ1ZSkuCisjCisjIG5vZGUu
bWFwQ2hpbGRyZW57fHZ8IC4uLn0gLT4gUmV0dXJucyBhIG5ldyBub2RlIHdpdGggYWxsIGNoaWxk
cmVuCisjICAgICByZXBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJsb2NrLgorIworIyBF
eGFtcGxlczoKKyMKKyMgbm9kZS5maWx0ZXIoU2V0dGluZykudW5pcSAtPiBSZXR1cm5zIGFsbCBv
ZiB0aGUgc2V0dGluZ3MgdGhhdCB0aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVsc2UgYmxvY2tzIGRl
cGVuZCBvbi4KKyMKKyMgbm9kZS5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxIC0+IFJldHVybnMg
YWxsIG9mIHRoZSBzdHJ1Y3R1cmUgb2Zmc2V0cworIyAgICAgdGhhdCB0aGUgQVNUIGRlcGVuZHMg
b24uCisKK2NsYXNzIE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgIGVu
ZAorICAKKyAgZGVmIGNvZGVPcmlnaW5TdHJpbmcKKyAgICAibGluZSBudW1iZXIgI3tAY29kZU9y
aWdpbn0iCisgIGVuZAorICAKKyAgZGVmIGRlc2NlbmRhbnRzCisgICAgY2hpbGRyZW4uY29sbGVj
dHt8dnwgdi5mbGF0dGVufS5mbGF0dGVuCisgIGVuZAorICAKKyAgZGVmIGZsYXR0ZW4KKyAgICBb
c2VsZl0gKyBkZXNjZW5kYW50cworICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIodHlwZSkKKyAgICBm
bGF0dGVuLnNlbGVjdHt8dnwgdi5pc19hPyB0eXBlfQorICBlbmQKK2VuZAorCitjbGFzcyBOb0No
aWxkcmVuIDwgTm9kZQorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW10KKyAgZW5kCisgIAor
ICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9m
ZnNldEtleQorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFs
aXplKHN0cnVjdCwgZmllbGQpCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZp
ZWxkCisgIGVuZAorICAKKyAgZGVmIGhhc2gKKyAgICBAc3RydWN0Lmhhc2ggKyBAZmllbGQuaGFz
aCAqIDMKKyAgZW5kCisgIAorICBkZWYgZXFsPyhvdGhlcikKKyAgICBAc3RydWN0ID09IG90aGVy
LnN0cnVjdCBhbmQgQGZpZWxkID09IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisgICAgCisjCisj
IEFTVCBub2Rlcy4KKyMKKworY2xhc3MgU3RydWN0T2Zmc2V0IDwgTm9DaGlsZHJlbgorICBhdHRy
X3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IHN0cnVjdCwgZmllbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3Ry
dWN0CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAK
KyAgZGVmIHNlbGYuZm9yRmllbGQoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBrZXkg
PSBTdHJ1Y3RPZmZzZXRLZXkubmV3KHN0cnVjdCwgZmllbGQpCisgICAgCisgICAgdW5sZXNzIEBA
bWFwcGluZ1trZXldCisgICAgICBAQG1hcHBpbmdba2V5XSA9IFN0cnVjdE9mZnNldC5uZXcoY29k
ZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdba2V5XQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7c3RydWN0fTo6I3tmaWVsZH0iCisgIGVuZAorICAK
KyAgZGVmIDw9PihvdGhlcikKKyAgICBpZiBAc3RydWN0ICE9IG90aGVyLnN0cnVjdAorICAgICAg
cmV0dXJuIEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICAgIGVuZAorICAgIEBmaWVsZCA8PT4g
b3RoZXIuZmllbGQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mIDwgTm9DaGlsZHJlbgorICBh
dHRyX3JlYWRlciA6c3RydWN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1
Y3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgIGVuZAor
ICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwg
c3RydWN0KQorICAgIHVubGVzcyBAQG1hcHBpbmdbc3RydWN0XQorICAgICAgQEBtYXBwaW5nW3N0
cnVjdF0gPSBTaXplb2YubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBlbmQKKyAgICBAQG1h
cHBpbmdbc3RydWN0XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgInNpemVvZiAje0BzdHJ1
Y3R9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIpCisgICAgQHN0cnVjdCA8PT4gb3RoZXIu
c3RydWN0CisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZSA8IE5vQ2hpbGRyZW4KKyAgYXR0
cl9yZWFkZXIgOnZhbHVlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YWx1ZSA9IHZhbHVlCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiI3t2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAg
IG90aGVyLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUgPT0gQHZhbHVlCisgIGVuZAor
ICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/Cisg
ICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAg
ICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwg
QHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZEltbWVkaWF0ZXMu
bmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAgZW5k
CitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQs
IDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdo
dAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4s
ICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgIigje2xlZnQuZHVtcH0gLSAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3Mg
TXVsSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisg
IGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIE11bEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCks
ICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVt
cH0gKiAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlIDwg
Tm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAg
ZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGNoaWxkXQorICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbgorICAgIE5lZ0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGls
ZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKC0je0BjaGlsZC5kdW1wfSkiCisgIGVu
ZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpu
YW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30K
KyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBt
YXBwaW5nW25hbWVdCisgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBSZWdpc3RlcklELm5ldyhjb2Rl
T3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNl
CisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNz
IEZQUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNl
bGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0K
KyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IEZQUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFt
ZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgIG5hbWUKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxzZQorICBlbmQKKyAg
CisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZSA8
IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUK
KyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2Rl
T3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGlu
Z1tuYW1lXSA9IFZhcmlhYmxlLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBA
bWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2Vu
ZAorCitjbGFzcyBBZGRyZXNzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFzZSwgOm9mZnNldAor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwgb2Zmc2V0KQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisgICAgQG9mZnNldCA9IG9mZnNldAorICBl
bmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwgQG9mZnNldF0KKyAgZW5kCisgIAor
ICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJh
c2UpLCAoeWllbGQgQG9mZnNldCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tvZmZz
ZXQuZHVtcH1bI3tiYXNlLmR1bXB9XSIKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICB0
cnVlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2Ns
YXNzIEJhc2VJbmRleCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2UsIDppbmRleCwgOnNjYWxl
LCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBiYXNlID0gYmFzZQor
ICAgIEBpbmRleCA9IGluZGV4CisgICAgQHNjYWxlID0gc2NhbGUKKyAgICByYWlzZSB1bmxlc3Mg
WzEsIDIsIDQsIDhdLm1lbWJlcj8gQHNjYWxlCisgICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQK
KyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwgQGluZGV4LCBAb2Zmc2V0XQorICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEBiYXNlKSwgKHlpZWxkIEBpbmRleCksIEBzY2FsZSwgKHlpZWxkIEBvZmZzZXQpKQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfSwgI3tp
bmRleC5kdW1wfSwgI3tzY2FsZX1dIgorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIHRy
dWUKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xh
c3MgQWJzb2x1dGVBZGRyZXNzIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6YWRkcmVzcwor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYWRkcmVzcykKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBhZGRyZXNzID0gYWRkcmVzcworICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgIiN7YWRkcmVzcy5kdW1wfVtdIgorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIHRy
dWUKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xh
c3MgSW5zdHJ1Y3Rpb24gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpvcGNvZGUsIDpvcGVyYW5kcwor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgb3Bjb2RlLCBvcGVyYW5kcykKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBvcGNvZGUgPSBvcGNvZGUKKyAgICBAb3BlcmFuZHMgPSBv
cGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIG9wZXJhbmRzCisgIGVuZAor
ICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIEluc3RydWN0aW9uLm5ldyhjb2RlT3Jp
Z2luLCBAb3Bjb2RlLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgICJcdCIgKyBvcGNvZGUudG9fcyArICIgIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYu
ZHVtcH0uam9pbigiLCAiKQorICBlbmQKK2VuZAorCitjbGFzcyBFcnJvciA8IE5vQ2hpbGRyZW4K
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0ZXJyb3IiCisgIGVuZAorZW5kCisKK2NsYXNzIENv
bnN0RGVjbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnZhcmlhYmxlLCA6dmFsdWUKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEB2YXJpYWJsZSA9IHZhcmlhYmxlCisgICAgQHZhbHVlID0gdmFsdWUKKyAg
ZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQHZhcmlhYmxlLCBAdmFsdWVdCisgIGVuZAor
ICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQ29uc3REZWNsLm5ldyhjb2RlT3JpZ2luLCAoeWll
bGQgQHZhcmlhYmxlKSwgKHlpZWxkIEB2YWx1ZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiY29uc3QgI3tAdmFyaWFibGUuZHVtcH0gPSAje0B2YWx1ZS5kdW1wfSIKKyAgZW5kCitlbmQK
KworJGxhYmVsTWFwcGluZyA9IHt9CisKK2NsYXNzIExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRy
X3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBz
ZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVd
CisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFi
ZWxNYXBwaW5nW25hbWVdLmlzX2E/IExhYmVsCisgICAgZWxzZQorICAgICAgJGxhYmVsTWFwcGlu
Z1tuYW1lXSA9IExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJl
bE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje25hbWV9OiIKKyAg
ZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIg
Om5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisKKyAgQEB1bmlxdWVOYW1lQ291
bnRlciA9IDAKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBp
ZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246
ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExvY2FsTGFiZWwKKyAg
ICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTG9jYWxMYWJlbC5uZXcoY29kZU9y
aWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgIGVuZAorICAK
KyAgZGVmIHNlbGYudW5pcXVlKGNvbW1lbnQpCisgICAgbmV3TmFtZSA9ICJfI3tjb21tZW50fSIK
KyAgICBpZiAkbGFiZWxNYXBwaW5nW25ld05hbWVdCisgICAgICB3aGlsZSAkbGFiZWxNYXBwaW5n
W25ld05hbWUgPSAiXyN7QEB1bmlxdWVOYW1lQ291bnRlcn1fI3tjb21tZW50fSJdCisgICAgICAg
IEBAdW5pcXVlTmFtZUNvdW50ZXIgKz0gMQorICAgICAgZW5kCisgICAgZW5kCisgICAgZm9yTmFt
ZShuaWwsIG5ld05hbWUpCisgIGVuZAorICAKKyAgZGVmIGNsZWFuTmFtZQorICAgIGlmIG5hbWUg
PX4gL15cLi8KKyAgICAgICJfIiArIG5hbWVbMS4uLTFdCisgICAgZWxzZQorICAgICAgbmFtZQor
ICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2Vu
ZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxhYmVsCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAg
W0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBMYWJlbFJlZmVyZW5j
ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUK
KyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisg
IGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFi
ZWw/CisgICAgdHJ1ZQorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlIDwg
Tm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFi
ZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisg
IGRlZiBtYXBDaGlsZHJlbgorICAgIExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4s
ICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1lCisgICAgbGFiZWwubmFtZQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBh
ZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIHRydWUKKyAg
ZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsaXN0Cisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsaXN0KQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQGxpc3QgPSBsaXN0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgbGlz
dAorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBTZXF1ZW5jZS5uZXco
Y29kZU9yaWdpbiwgQGxpc3QubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
IGxpc3QuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCJcbiIpCisgIGVuZAorZW5kCisKK2NsYXNz
IFRydWUgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIobmlsKQorICBl
bmQKKyAgCisgIEBAaW5zdGFuY2UgPSBUcnVlLm5ldworICAKKyAgZGVmIHNlbGYuaW5zdGFuY2UK
KyAgICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVmIHZhbHVlCisgICAgdHJ1ZQorICBlbmQK
KyAgCisgIGRlZiBkdW1wCisgICAgInRydWUiCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlIDwg
Tm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQorICAgIHN1cGVyKG5pbCkKKyAgZW5kCisgIAor
ICBAQGluc3RhbmNlID0gRmFsc2UubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBA
aW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICBmYWxzZQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgImZhbHNlIgorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlQ2xhc3MKKyAg
ZGVmIGFzTm9kZQorICAgIFRydWUuaW5zdGFuY2UKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2VD
bGFzcworICBkZWYgYXNOb2RlCisgICAgRmFsc2UuaW5zdGFuY2UKKyAgZW5kCitlbmQKKworY2xh
c3MgU2V0dGluZyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
bmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYu
Zm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAg
ICAgIEBAbWFwcGluZ1tuYW1lXSA9IFNldHRpbmcubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
ZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1l
CisgIGVuZAorZW5kCisKK2NsYXNzIEFuZCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpy
aWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAor
ICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAg
CisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFuZC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0
KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5k
dW1wfSBhbmQgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE9yIDwgTm9kZQor
ICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVm
dAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0Bs
ZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgT3IubmV3KGNv
ZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gb3IgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5k
CisKK2NsYXNzIE5vdCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBj
aGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmln
aHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTm90Lm5ldyhjb2RlT3JpZ2lu
LCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIobm90ICN7Y2hp
bGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwIDwgTm9DaGlsZHJlbgorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICAiXHRza2lwIgorICBlbmQKK2VuZAorCitjbGFzcyBJZlRoZW5FbHNl
IDwgTm9kZQorICBhdHRyX3JlYWRlciA6cHJlZGljYXRlLCA6dGhlbkNhc2UKKyAgYXR0cl9hY2Nl
c3NvciA6ZWxzZUNhc2UKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHByZWRpY2F0
ZSwgdGhlbkNhc2UpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAcHJlZGljYXRlID0gcHJl
ZGljYXRlCisgICAgQHRoZW5DYXNlID0gdGhlbkNhc2UKKyAgICBAZWxzZUNhc2UgPSBTa2lwLm5l
dyhjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIGlmIEBlbHNlQ2Fz
ZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZSwgQGVsc2VDYXNlXQorICAgIGVsc2UKKyAg
ICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2VdCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIG1h
cENoaWxkcmVuCisgICAgSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBwcmVkaWNh
dGUpLCAoeWllbGQgQHRoZW5DYXNlKSwgKHlpZWxkIEBlbHNlQ2FzZSkpCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiaWYgI3twcmVkaWNhdGUuZHVtcH1cbiIgKyB0aGVuQ2FzZS5kdW1wICsg
IlxuZWxzZVxuIiArIGVsc2VDYXNlLmR1bXAgKyAiXG5lbmQiCisgIGVuZAorZW5kCisKK2NsYXNz
IE1hY3JvIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOnZhcmlhYmxlcywgOmJvZHkKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAgIEB2YXJpYWJsZXMgPSB2
YXJpYWJsZXMKKyAgICBAYm9keSA9IGJvZHkKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAg
ICBAdmFyaWFibGVzICsgW0Bib2R5XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAg
IE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQHZhcmlhYmxlcy5tYXB7fHZ8IHlpZWxkIHZ9
LCAoeWllbGQgQGJvZHkpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIm1hY3JvICN7bmFt
ZX0oIiArIHZhcmlhYmxlcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKVxuIiAr
IGJvZHkuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm9DYWxsIDwgTm9k
ZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBu
YW1lID0gbmFtZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgICAgcmFpc2UgdW5sZXNzIEBv
cGVyYW5kcworICAgIEBvcGVyYW5kcy5lYWNoe3x2fCByYWlzZSB1bmxlc3Mgdn0KKyAgZW5kCisg
IAorICBkZWYgY2hpbGRyZW4KKyAgICBAb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hp
bGRyZW4oJnByb2MpCisgICAgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQG9wZXJh
bmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHQje25hbWV9KCIg
KyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKSIKKyAgZW5kCitl
bmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMucmIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMu
cmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNr
ZW5kcy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAieDg2IgorCitCQUNL
RU5EUyA9CisgIFsKKyAgICJYODYiLAorICAgIkFSTXY3IgorICBdCisKK1dPUktJTkdfQkFDS0VO
RFMgPQorICBbCisgICAiWDg2IgorICBdCisKK0JBQ0tFTkRfUEFUVEVSTiA9IFJlZ2V4cC5uZXco
J1xcQSgnICsgQkFDS0VORFMuam9pbignKXwoJykgKyAnKVxcWicpCisKK2NsYXNzIE5vZGUKKyAg
ZGVmIGxvd2VyKG5hbWUpCisgICAgc2VuZCgibG93ZXIiICsgbmFtZSkKKyAgZW5kCitlbmQKKwor
IyBPdmVycmlkZXMgZm9yIGxvd2VyKCkgZm9yIHRob3NlIG5vZGVzIHRoYXQgYXJlIGJhY2tlbmQt
YWdub3N0aWMKKworY2xhc3MgTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRz
TGFiZWwoc2VsZi5uYW1lWzEuLi0xXSkKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbAor
ICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHNMb2NhbExhYmVsICJfb2ZmbGluZWFzbV8j
e3NlbGYubmFtZVsxLi4tMV19IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZQor
ICBkZWYgYXNtTGFiZWwKKyAgICBBc3NlbWJsZXIubGFiZWxSZWZlcmVuY2UobmFtZVsxLi4tMV0p
CisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UKKyAgZGVmIGFzbUxhYmVs
CisgICAgQXNzZW1ibGVyLmxvY2FsTGFiZWxSZWZlcmVuY2UoIl9vZmZsaW5lYXNtXyIrbmFtZVsx
Li4tMV0pCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAKKyAgZGVmIGxvd2VyKG5hbWUpCisgIGVu
ZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIEBsaXN0LmVh
Y2ggeworICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUubG93ZXIobmFtZSkKKyAgICB9CisgIGVu
ZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRl
X29mZnNldF9leHRyYWN0b3IucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0
b3IucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODggQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkK
KworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJu
YW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgImRpZ2VzdC9zaGEx
IgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNlbGZfaGFz
aCIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitpbnB1dEZsbm0g
PSBBUkdWLnNoaWZ0CitvdXRwdXRGbG5tID0gQVJHVi5zaGlmdAorCitkZWYgZW1pdE1hZ2ljTnVt
YmVyCisgIE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVhY2ggeworICAgIHwgbnVtYmVyIHwKKyAgICAk
b3V0cHV0LnB1dHMgIiN7bnVtYmVyfSwiCisgIH0KK2VuZAorCitpbnB1dERhdGEgPSBJTzo6cmVh
ZChpbnB1dEZsbm0pCitpbnB1dEhhc2ggPSAiLy8gb2ZmbGluZWFzbSBpbnB1dCBoYXNoOiAje0Rp
Z2VzdDo6U0hBMS5oZXhkaWdlc3QoaW5wdXREYXRhKX0gI3tzZWxmSGFzaH0iCisKK2lmIEZpbGVU
ZXN0LmV4aXN0PyBvdXRwdXRGbG5tCisgIEZpbGUub3BlbihvdXRwdXRGbG5tLCAiciIpIHsKKyAg
ICB8IGlucCB8CisgICAgZmlyc3RMaW5lID0gaW5wLmdldHMKKyAgICBpZiBmaXJzdExpbmUgYW5k
IGZpcnN0TGluZS5jaG9tcCA9PSBpbnB1dEhhc2gKKyAgICAgICRzdGRlcnIucHV0cyAiTm90aGlu
ZyBjaGFuZ2VkLiIKKyAgICAgIGV4aXQgMAorICAgIGVuZAorICB9CitlbmQKKworb3JpZ2luYWxB
U1QgPSBwYXJzZShsZXgoaW5wdXREYXRhKSkKKworRmlsZS5vcGVuKG91dHB1dEZsbm0sICJ3Iikg
eworICB8IG91dHAgfAorICAkb3V0cHV0ID0gb3V0cAorICBvdXRwLnB1dHMgaW5wdXRIYXNoCisg
IGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhvcmlnaW5hbEFTVCkgeworICAgIHwgc2V0dGlu
Z3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfAorICAgIG9mZnNldHNMaXN0ID0gYXN0LmZpbHRlcihT
dHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorICAgIHNpemVzTGlzdCA9IGFzdC5maWx0ZXIoU2l6ZW9m
KS51bmlxLnNvcnQKKyAgICAKKyAgICBsZW5ndGggPSAoT0ZGU0VUX01BR0lDX05VTUJFUlMuc2l6
ZSArIDEpICogKDEgKyBvZmZzZXRzTGlzdC5zaXplICsgc2l6ZXNMaXN0LnNpemUpCisgICAgCisg
ICAgb3V0cC5wdXRzICJzdGF0aWMgY29uc3QgdW5zaWduZWQgZXh0cmFjdG9yVGFibGVbI3tsZW5n
dGh9XSA9IHsiCisgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgb3V0cC5wdXRzICIje2luZGV4fSwi
CisgICAgb2Zmc2V0c0xpc3QuZWFjaCB7CisgICAgICB8IG9mZnNldCB8CisgICAgICBlbWl0TWFn
aWNOdW1iZXIKKyAgICAgIG91dHAucHV0cyAiT0ZGTElORV9BU01fT0ZGU0VUT0YoI3tvZmZzZXQu
c3RydWN0fSwgI3tvZmZzZXQuZmllbGR9KSwiCisgICAgfQorICAgIHNpemVzTGlzdC5lYWNoIHsK
KyAgICAgIHwgb2Zmc2V0IHwKKyAgICAgIGVtaXRNYWdpY051bWJlcgorICAgICAgb3V0cC5wdXRz
ICJzaXplb2YoI3tvZmZzZXQuc3RydWN0fSksIgorICAgIH0KKyAgICBvdXRwLnB1dHMgIn07Igor
ICB9Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlv
bnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5z
dHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vaW5zdHJ1Y3Rpb25zLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwNyBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIyBJbnRlcmVzdGluZyBpbnZhcmlh
bnQsIHdoaWNoIHdlIHRha2UgYWR2YW50YWdlIG9mOiBicmFuY2hpbmcgaW5zdHJ1Y3Rpb25zCisj
IGFsd2F5cyBiZWdpbiB3aXRoICJiIiwgYW5kIG5vIG5vbi1icmFuY2hpbmcgaW5zdHJ1Y3Rpb25z
IGJlZ2luIHdpdGggImIiLgorIyBUZXJtaW5hbCBpbnN0cnVjdGlvbnMgYXJlICJqbXAiIGFuZCAi
cmV0Ii4KKworTUFDUk9fSU5TVFJVQ1RJT05TID0KKyAgWworICAgImFkZGkiLAorICAgImFuZGki
LAorICAgImxzaGlmdGkiLAorICAgIm11bGkiLAorICAgIm5lZ2kiLAorICAgIm5vdGkiLAorICAg
Im9yaSIsCisgICAicnNoaWZ0aSIsCisgICAidXJzaGlmdGkiLAorICAgInN1YmkiLAorICAgInhv
cmkiLAorICAgImxvYWRpIiwKKyAgICJsb2FkYiIsCisgICAibG9hZGJzIiwKKyAgICJsb2FkaCIs
CisgICAibG9hZGhzIiwKKyAgICJzdG9yZWkiLAorICAgInN0b3JlYiIsCisgICAibG9hZGQiLAor
ICAgIm1vdmVkIiwKKyAgICJzdG9yZWQiLAorICAgImFkZGQiLAorICAgImRpdmQiLAorICAgInN1
YmQiLAorICAgIm11bGQiLAorICAgInNxcnRkIiwKKyAgICJjaTJkIiwKKyAgICJmaWkyZCIsICMg
dXNhZ2U6IGZpaTJkIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRo
IG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxmcHI+CisgICAiZmQyaWkiLCAjIHVzYWdlOiBmZDJp
aSA8ZnByPiwgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9z
dCBzaWduaWZpY2FudCBiaXRzPgorICAgImJkZXEiLAorICAgImJkbmVxIiwKKyAgICJiZGd0IiwK
KyAgICJiZGd0ZXEiLAorICAgImJkbHQiLAorICAgImJkbHRlcSIsCisgICAiYmRlcXVuIiwKKyAg
ICJiZG5lcXVuIiwKKyAgICJiZGd0dW4iLAorICAgImJkZ3RlcXVuIiwKKyAgICJiZGx0dW4iLAor
ICAgImJkbHRlcXVuIiwKKyAgICJidGQyaSIsCisgICAidGQyaSIsCisgICAiYmNkMmkiLAorICAg
Im1vdmR6IiwKKyAgICJwb3AiLAorICAgInB1c2giLAorICAgIm1vdmUiLAorICAgInN4aTJwIiwK
KyAgICJ6eGkycCIsCisgICAibm9wIiwKKyAgICJiaWVxIiwKKyAgICJiaW5lcSIsCisgICAiYmlh
IiwKKyAgICJiaWFlcSIsCisgICAiYmliIiwKKyAgICJiaWJlcSIsCisgICAiYmlndCIsCisgICAi
YmlndGVxIiwKKyAgICJiaWx0IiwKKyAgICJiaWx0ZXEiLAorICAgImJiZXEiLAorICAgImJibmVx
IiwKKyAgICJiYmEiLAorICAgImJiYWVxIiwKKyAgICJiYmIiLAorICAgImJiYmVxIiwKKyAgICJi
Ymd0IiwKKyAgICJiYmd0ZXEiLAorICAgImJibHQiLAorICAgImJibHRlcSIsCisgICAiYnRpbyIs
CisgICAiYnRpcyIsCisgICAiYnRpeiIsCisgICAiYnRpbnoiLAorICAgImJ0Ym8iLAorICAgImJ0
YnMiLAorICAgImJ0YnoiLAorICAgImJ0Ym56IiwKKyAgICJqbXAiLAorICAgImJhZGRpbyIsCisg
ICAiYmFkZGlzIiwKKyAgICJiYWRkaXoiLAorICAgImJhZGRpbnoiLAorICAgImJzdWJpbyIsCisg
ICAiYnN1YmlzIiwKKyAgICJic3ViaXoiLAorICAgImJzdWJpbnoiLAorICAgImJtdWxpbyIsCisg
ICAiYm11bGlzIiwKKyAgICJibXVsaXoiLAorICAgImJtdWxpbnoiLAorICAgImJvcmlvIiwKKyAg
ICJib3JpcyIsCisgICAiYm9yaXoiLAorICAgImJvcmlueiIsCisgICAiYnJlYWsiLAorICAgImNh
bGwiLAorICAgInJldCIsCisgICAiY2llcSIsCisgICAiY2luZXEiLAorICAgImNpYSIsCisgICAi
Y2lhZXEiLAorICAgImNpYiIsCisgICAiY2liZXEiLAorICAgImNpZ3QiLAorICAgImNpZ3RlcSIs
CisgICAiY2lsdCIsCisgICAiY2lsdGVxIiwKKyAgICJ0aW8iLAorICAgInRpcyIsCisgICAidGl6
IiwKKyAgICJ0aW56IiwKKyAgICJ0Ym8iLAorICAgInRicyIsCisgICAidGJ6IiwKKyAgICJ0Ym56
IiwKKyAgICJwZWVrIiwKKyAgICJwb2tlIiwKKyAgICJicGVxIiwKKyAgICJicG5lcSIsCisgICAi
YnBhIiwKKyAgICJicGFlcSIsCisgICAiYnBiIiwKKyAgICJicGJlcSIsCisgICAiYnBndCIsCisg
ICAiYnBndGVxIiwKKyAgICJicGx0IiwKKyAgICJicGx0ZXEiLAorICAgImFkZHAiLAorICAgImFu
ZHAiLAorICAgIm9ycCIsCisgICAic3VicCIsCisgICAieG9ycCIsCisgICAibG9hZHAiLAorICAg
ImNwZXEiLAorICAgImNwbmVxIiwKKyAgICJjcGEiLAorICAgImNwYWVxIiwKKyAgICJjcGIiLAor
ICAgImNwYmVxIiwKKyAgICJjcGd0IiwKKyAgICJjcGd0ZXEiLAorICAgImNwbHQiLAorICAgImNw
bHRlcSIsCisgICAic3RvcmVwIiwKKyAgICJidHBvIiwKKyAgICJidHBzIiwKKyAgICJidHB6IiwK
KyAgICJidHBueiIsCisgICAiYmFkZHBvIiwKKyAgICJiYWRkcHMiLAorICAgImJhZGRweiIsCisg
ICAiYmFkZHBueiIsCisgICAiYm8iLAorICAgImJzIiwKKyAgICJieiIsCisgICAiYm56IgorICBd
CisKK1g4Nl9JTlNUUlVDVElPTlMgPQorICBbCisgICAiY2RxaSIsCisgICAiaWRpdmkiCisgIF0K
KworSU5TVFJVQ1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05TICsgWDg2X0lOU1RSVUNUSU9OUwor
CitJTlNUUlVDVElPTl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgSU5TVFJVQ1RJT05T
LmpvaW4oJyl8KCcpICsgJykpXFxaJykKKworZGVmIGlzQnJhbmNoKGluc3RydWN0aW9uKQorICBp
bnN0cnVjdGlvbiA9fiAvXmIvCitlbmQKKworZGVmIGhhc0ZhbGxUaHJvdWdoKGluc3RydWN0aW9u
KQorICBpbnN0cnVjdGlvbiAhPSAicmV0IiBhbmQgaW5zdHJ1Y3Rpb24gIT0gImptcCIKK2VuZAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9y
X2NvbnN0YW50cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJi
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitNQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0K
KworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRz
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJhY3Rv
cl9jb25zdGFudHMiCisKK09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBm
ZjVlNzU1IF0KKworIworIyBvZmZzZXRzTGlzdChhc3QpCisjIHNpemVzTGlzdChhc3QpCisjCisj
IFJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhlIEFTVC4KKyMK
KworZGVmIG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEu
c29ydAorZW5kCisKK2RlZiBzaXplc0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFNpemVvZikudW5p
cS5zb3J0CitlbmQKKworIworIyBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGFzdCwgZmls
ZSkgLT4KKyMgICAgIFtvZmZzZXRzLCBpbmRleF0KKyMKKyMgUGFyc2VzIHRoZSBvZmZzZXRzIGZy
b20gYSBmaWxlIGFuZCByZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCB0aGUKKyMgaW5kZXgg
b2YgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB2YWxpZCBpbiB0aGlzIGJ1aWxkIHRhcmdldC4K
KyMKKworZGVmIG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgoZmlsZSkKKyAgaW5kZXggPSBu
aWwKKyAgb2Zmc2V0cyA9IFtdCisgIGVuZGlhbm5lc3NNYXJrZXJCeXRlcyA9IG5pbAorICAKKyAg
ZGVmIHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgIGJ5dGVzID0gW10KKyAgICA0LnRpbWVz
IHsKKyAgICAgIGJ5dGVzIDw8IGlucC5nZXRieXRlCisgICAgfQorICAgIAorICAgIGlmIGVuZGlh
bm5lc3MgPT0gOmxpdHRsZQorICAgICAgIyBMaXR0bGUgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0g
PDwgMCB8CisgICAgICAgYnl0ZXNbMV0gPDwgOCB8CisgICAgICAgYnl0ZXNbMl0gPDwgMTYgfAor
ICAgICAgIGJ5dGVzWzNdIDw8IDI0KQorICAgIGVsc2UKKyAgICAgICMgQmlnIGVuZGlhbgorICAg
ICAgKGJ5dGVzWzBdIDw8IDI0IHwKKyAgICAgICBieXRlc1sxXSA8PCAxNiB8CisgICAgICAgYnl0
ZXNbMl0gPDwgOCB8CisgICAgICAgYnl0ZXNbM10gPDwgMCkKKyAgICBlbmQKKyAgZW5kCisgIAor
ICBbOmxpdHRsZSwgOmJpZ10uZWFjaCB7CisgICAgfCBlbmRpYW5uZXNzIHwKKyAgICBtYWdpY0J5
dGVzID0gW10KKyAgICBNQUdJQ19OVU1CRVJTLmVhY2ggeworICAgICAgfCBudW1iZXIgfAorICAg
ICAgY3VycmVudEJ5dGVzID0gW10KKyAgICAgIDQudGltZXMgeworICAgICAgICBjdXJyZW50Qnl0
ZXMgPDwgKG51bWJlciAmIDB4ZmYpCisgICAgICAgIG51bWJlciA+Pj0gOAorICAgICAgfQorICAg
ICAgaWYgZW5kaWFubmVzcyA9PSA6YmlnCisgICAgICAgIGN1cnJlbnRCeXRlcy5yZXZlcnNlIQor
ICAgICAgZW5kCisgICAgICBtYWdpY0J5dGVzICs9IGN1cnJlbnRCeXRlcworICAgIH0KKyAgICAK
KyAgICBGaWxlLm9wZW4oZmlsZSwgInIiKSB7CisgICAgICB8IGlucCB8CisgICAgICB3aGVyZUlu
TWFya2VyID0gMAorICAgICAgbG9vcCB7CisgICAgICAgIGJ5dGUgPSBpbnAuZ2V0Ynl0ZQorICAg
ICAgICBicmVhayB1bmxlc3MgYnl0ZQorICAgICAgICBpZiBieXRlID09IG1hZ2ljQnl0ZXNbd2hl
cmVJbk1hcmtlcl0KKyAgICAgICAgICB3aGVyZUluTWFya2VyICs9IDEKKyAgICAgICAgICBpZiB3
aGVyZUluTWFya2VyID09IG1hZ2ljQnl0ZXMuc2l6ZQorICAgICAgICAgICAgIyBXZSBoYXZlIGEg
bWF0Y2ghIElmIHdlIGhhdmUgbm90IHlldCByZWFkIHRoZSBlbmRpYW5uZXNzIG1hcmtlciBhbmQg
aW5kZXgsCisgICAgICAgICAgICAjIHRoZW4gcmVhZCB0aG9zZSBub3c7IG90aGVyd2lzZSByZWFk
IGFuIG9mZnNldC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgbm90IGluZGV4CisgICAg
ICAgICAgICAgIGluZGV4ID0gcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgIG9mZnNldHMgPDwgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9
IDAKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIg
PSAwCisgICAgICAgIGVuZAorICAgICAgfQorICAgIH0KKyAgICAKKyAgICBicmVhayBpZiBpbmRl
eAorICB9CisgIAorICByYWlzZSB1bmxlc3MgaW5kZXgKKyAgCisgIFtvZmZzZXRzLCBpbmRleF0K
K2VuZAorCisjCisjIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAtPiBbb2Zmc2V0
cywgc2l6ZXNdCisjCisjIEJ1aWxkcyBhIG1hcHBpbmcgYmV0d2VlbiBTdHJ1Y3RPZmZzZXQgbm9k
ZXMgYW5kIHRoZWlyIHZhbHVlcy4KKyMKKworZGVmIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNl
dHNMaXN0KQorICBvZmZzZXRzTWFwID0ge30KKyAgc2l6ZXNNYXAgPSB7fQorICBhc3RPZmZzZXRz
TGlzdCA9IG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0U2l6ZXNMaXN0ID0gc2l6ZXNMaXN0KGFzdCkK
KyAgcmFpc2UgdW5sZXNzIGFzdE9mZnNldHNMaXN0LnNpemUgKyBhc3RTaXplc0xpc3Quc2l6ZSA9
PSBvZmZzZXRzTGlzdC5zaXplCisgIG9mZnNldHNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsK
KyAgICB8IHN0cnVjdE9mZnNldCwgaW5kZXggfAorICAgIG9mZnNldHNNYXBbc3RydWN0T2Zmc2V0
XSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgc2l6ZXNMaXN0KGFzdCkuZWFjaF93aXRoX2lu
ZGV4IHsKKyAgICB8IHNpemVvZiwgaW5kZXggfAorICAgIHNpemVzTWFwW3NpemVvZl0gPSBvZmZz
ZXRzTGlzdC5zaGlmdAorICB9CisgIFtvZmZzZXRzTWFwLCBzaXplc01hcF0KK2VuZAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vcHQucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb3B0LnJiCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb3B0LnJiCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDExOCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVx
dWlyZSAiYXN0IgorCisjCisjICJPcHRpbWl6YXRpb24iIHBhc3Nlcy4gVGhlc2UgYXJlIHVzZWQg
dG8gbG93ZXIgdGhlIHJlcHJlc2VudGF0aW9uIGZvcgorIyBiYWNrZW5kcyB0aGF0IGNhbm5vdCBo
YW5kbGUgc29tZSBvZiBvdXIgaGlnaGVyLWxldmVsIGluc3RydWN0aW9ucy4KKyMKKworIworIyBB
IHRlbXBvcmFyeSAtIGEgdmFyaWFibGUgdGhhdCB3aWxsIGJlIGFsbG9jYXRlZCB0byBhIHJlZ2lz
dGVyIGFmdGVyIHdlJ3JlCisjIGRvbmUuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlcGxhY2VU
ZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8
IG5vZGUgfAorICAgICAgbm9kZS5yZXBsYWNlVGVtcG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQp
CisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBUbXAgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVh
ZGVyIDpmaXJzdE1lbnRpb24sIDpsYXN0TWVudGlvbgorICBhdHRyX3JlYWRlciA6a2luZAorICBh
dHRyX2FjY2Vzc29yIDpyZWdpc3RlcgorCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGtp
bmQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAa2luZCA9IGtpbmQKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICIkdG1wI3tvYmplY3RfaWR9IgorICBlbmQKKyAgCisgIGRlZiBtZW50
aW9uIShwb3NpdGlvbikKKyAgICBpZiBub3QgQGZpcnN0TWVudGlvbiBvciBwb3NpdGlvbiA8IEBm
aXJzdE1lbnRpb24KKyAgICAgIEBmaXJzdE1lbnRpb24gPSBwb3NpdGlvbgorICAgIGVuZAorICAg
IGlmIG5vdCBAbGFzdE1lbnRpb24gb3IgcG9zaXRpb24gPiBAbGFzdE1lbnRpb24KKyAgICAgIEBs
YXN0TWVudGlvbiA9IHBvc2l0aW9uCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHJlcGxhY2VU
ZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkKKyAgICBpZiBAa2luZCA9PSBraW5kCisgICAg
ICByYWlzZSAiRGlkIG5vdCBhbGxvY2F0ZSByZWdpc3RlciB0byB0ZW1wb3JhcnkgYXQgI3tjb2Rl
T3JpZ2luU3RyaW5nfSIgdW5sZXNzIEByZWdpc3RlcgorICAgICAgQHJlZ2lzdGVyCisgICAgZWxz
ZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCisjIEFzc2lnbiByZWdpc3RlcnMg
dG8gdGVtcG9yYXJpZXMsIGJ5IGZpbmRpbmcgd2hpY2ggdGVtcG9yYXJpZXMgaW50ZXJmZXJlCisj
IHdpdGggZWFjaCBvdGhlci4gTm90ZSB0aGF0IHRoaXMgcmVsaWVzIG9uIHRlbXBvcmFyeSBsaXZl
IHJhbmdlcyBub3QgY3Jvc3NpbmcKKyMgYmFzaWMgYmxvY2sgYm91bmRhcmllcy4KKworZGVmIGFz
c2lnblJlZ2lzdGVyc1RvVGVtcG9yYXJpZXMobGlzdCwga2luZCwgcmVnaXN0ZXJzKQorICBsaXN0
LmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBub2RlLCBpbmRleCB8CisgICAgbm9kZS5maWx0ZXIo
VG1wKS51bmlxLmVhY2ggeworICAgICAgfCB0bXAgfAorICAgICAgaWYgdG1wLmtpbmQgPT0ga2lu
ZAorICAgICAgICB0bXAubWVudGlvbiEgaW5kZXgKKyAgICAgIGVuZAorICAgIH0KKyAgfQorICAK
KyAgZnJlZVJlZ2lzdGVycyA9IHJlZ2lzdGVycy5kdXAKKyAgbGlzdC5lYWNoX3dpdGhfaW5kZXgg
eworICAgIHwgbm9kZSwgaW5kZXggfAorICAgIHRtcExpc3QgPSBub2RlLmZpbHRlcihUbXApLnVu
aXEKKyAgICB0bXBMaXN0LmVhY2ggeworICAgICAgfCB0bXAgfAorICAgICAgaWYgdG1wLmtpbmQg
PSBraW5kIGFuZCB0bXAuZmlyc3RNZW50aW9uID09IGluZGV4CisgICAgICAgIHJhaXNlICJDb3Vs
ZCBub3QgYWxsb2NhdGUgcmVnaXN0ZXIgdG8gdGVtcG9yYXJ5IGF0ICN7bm9kZS5jb2RlT3JnaW5T
dHJpbmd9IiBpZiBmcmVlUmVnaXN0ZXJzLmVtcHR5PworICAgICAgICB0bXAucmVnaXN0ZXIgPSBm
cmVlUmVnaXN0ZXJzLnBvcAorICAgICAgZW5kCisgICAgfQorICAgIHRtcExpc3QuZWFjaCB7Cisg
ICAgICB8IHRtcCB8CisgICAgICBpZiB0bXAua2luZCA9IGtpbmQgYW5kIHRtcC5sYXN0TWVudGlv
biA9PSBpbmRleAorICAgICAgICBmcmVlUmVnaXN0ZXJzLnB1c2ggdG1wLnJlZ2lzdGVyCisgICAg
ICAgIHJhaXNlICJSZWdpc3RlciBhbGxvY2F0aW9uIGluY29uc2lzdGVuY3kgYXQgI3tub2RlLmNv
ZGVPcmlnaW5TdHJpbmd9IiBpZiBmcmVlUmVnaXN0ZXJzLnNpemUgPiByZWdpc3RlcnMuc2l6ZQor
ICAgICAgZW5kCisgICAgfQorICB9CisgIAorICBsaXN0Lm1hcCB7CisgICAgfCBub2RlIHwKKyAg
ICBub2RlLnJlcGxhY2VUZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkKKyAgfQorZW5kCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTg1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJpbnN0cnVjdGlvbnMiCityZXF1aXJl
ICJyZWdpc3RlcnMiCisKK2NsYXNzIFRva2VuCisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luLCA6
c3RyaW5nCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJpbmcpCisgICAgQGNv
ZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgICAgQHN0cmluZyA9IHN0cmluZworICBlbmQKKyAgCisg
IGRlZiA9PShvdGhlcikKKyAgICBpZiBvdGhlci5pc19hPyBUb2tlbgorICAgICAgQHN0cmluZyA9
PSBvdGhlci5zdHJpbmcKKyAgICBlbHNlCisgICAgICBAc3RyaW5nID09IG90aGVyCisgICAgZW5k
CisgIGVuZAorICAKKyAgZGVmID1+KG90aGVyKQorICAgIEBzdHJpbmcgPX4gb3RoZXIKKyAgZW5k
CisgIAorICBkZWYgdG9fcworICAgICIje0BzdHJpbmcuaW5zcGVjdH0gYXQgbGluZSAje2NvZGVP
cmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIGNv
bW1lbnQuZW1wdHk/CisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc30iCisgICAgZWxz
ZQorICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9OiAje2NvbW1lbnRbMF19IgorICAg
IGVuZAorICBlbmQKK2VuZAorCisjCisjIFRoZSBsZXhlci4gVGFrZXMgYSBzdHJpbmcgYW5kIHJl
dHVybnMgYW4gYXJyYXkgb2YgdG9rZW5zLgorIworCitkZWYgbGV4KHN0cikKKyAgcmVzdWx0ID0g
W10KKyAgbGluZU51bWJlciA9IDEKKyAgd2hpbGUgbm90IHN0ci5lbXB0eT8KKyAgICBjYXNlIHN0
cgorICAgIHdoZW4gL1xBXCMoW15cbl0qKS8KKyAgICAgICMgY29tbWVudCwgaWdub3JlCisgICAg
d2hlbiAvXEFcbi8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisg
ICAgICBsaW5lTnVtYmVyICs9IDEKKyAgICB3aGVuIC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSop
LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9c
QVwuKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVy
LCAkJikKKyAgICB3aGVuIC9cQV8oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9r
ZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBKFsgXHRdKykvCisgICAgICAjIHdo
aXRlc3BhY2UsIGlnbm9yZQorICAgIHdoZW4gL1xBMHgoWzAtOWEtZkEtRl0rKS8KKyAgICAgIHJl
c3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYuaGV4LnRvX3MpCisgICAgd2hlbiAvXEEw
KFswLTddKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLm9jdC50
b19zKQorICAgIHdoZW4gL1xBKFswLTldKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxp
bmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBOjovCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3
KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBWzosXChcKVxbXF09XCtcLSpdLworICAgICAg
cmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICBlbHNlCisgICAgICByYWlz
ZSAiTGV4ZXIgZXJyb3IgYXQgbGluZSBudW1iZXIgI3tsaW5lTnVtYmVyfSwgdW5leHBlY3RlZCBz
ZXF1ZW5jZSAje3N0clswLi4yMF0uaW5zcGVjdH0iCisgICAgZW5kCisgICAgc3RyID0gJH4ucG9z
dF9tYXRjaAorICBlbmQKKyAgcmVzdWx0CitlbmQKKworIworIyBUb2tlbiBpZGVudGlmaWNhdGlv
bi4KKyMKKworZGVmIGlzUmVnaXN0ZXIodG9rZW4pCisgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRF
Uk4KK2VuZAorCitkZWYgaXNJbnN0cnVjdGlvbih0b2tlbikKKyAgdG9rZW4gPX4gSU5TVFJVQ1RJ
T05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0tleXdvcmQodG9rZW4pCisgIHRva2VuID1+IC9cQSgo
dHJ1ZSl8KGZhbHNlKXwoaWYpfCh0aGVuKXwoZWxzZSl8KGVsc2lmKXwoZW5kKXwoYW5kKXwob3Ip
fChub3QpfChtYWNybyl8KGNvbnN0KXwoc2l6ZW9mKXwoZXJyb3IpKVxaLyBvcgorICAgIHRva2Vu
ID1+IFJFR0lTVEVSX1BBVFRFUk4gb3IKKyAgICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJO
CitlbmQKKworZGVmIGlzSWRlbnRpZmllcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBW2EtekEtWl0o
W2EtekEtWjAtOV9dKilcWi8gYW5kIG5vdCBpc0tleXdvcmQodG9rZW4pCitlbmQKKworZGVmIGlz
TGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQV8oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitk
ZWYgaXNMb2NhbExhYmVsKHRva2VuKQorICB0b2tlbiA9fiAvXEFcLihbYS16QS1aMC05X10qKVxa
LworZW5kCisKK2RlZiBpc1ZhcmlhYmxlKHRva2VuKQorICBpc0lkZW50aWZpZXIodG9rZW4pIG9y
IGlzUmVnaXN0ZXIodG9rZW4pCitlbmQKKworZGVmIGlzSW50ZWdlcih0b2tlbikKKyAgdG9rZW4g
PX4gL1xBWzAtOV0vCitlbmQKKworIworIyBUaGUgcGFyc2VyLiBUYWtlcyBhbiBhcnJheSBvZiB0
b2tlbnMgYW5kIHJldHVybnMgYW4gQVNULiBNZXRob2RzCisjIG90aGVyIHRoYW4gcGFyc2UodG9r
ZW5zKSBhcmUgbm90IGZvciBwdWJsaWMgY29uc3VtcHRpb24uCisjCisKK2NsYXNzIFBhcnNlcgor
ICBkZWYgaW5pdGlhbGl6ZSh0b2tlbnMpCisgICAgQHRva2VucyA9IHRva2VucworICAgIEBpZHgg
PSAwCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgQHRva2Vu
c1tAaWR4XQorICAgICAgQHRva2Vuc1tAaWR4XS5wYXJzZUVycm9yKCpjb21tZW50KQorICAgIGVs
c2UKKyAgICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBh
dCBlbmQgb2YgZmlsZSIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0
IGVuZCBvZiBmaWxlOiAje2NvbW1lbnRbMF19IgorICAgICAgZW5kCisgICAgZW5kCisgIGVuZAor
ICAKKyAgZGVmIGNvbnN1bWUocmVnZXhwKQorICAgIGlmIHJlZ2V4cAorICAgICAgcGFyc2VFcnJv
ciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9fiByZWdleHAKKyAgICBlbHNlCisgICAgICBwYXJzZUVy
cm9yIHVubGVzcyBAaWR4ID09IEB0b2tlbnMubGVuZ3RoCisgICAgZW5kCisgICAgQGlkeCArPSAx
CisgIGVuZAorICAKKyAgZGVmIHNraXBOZXdMaW5lCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9
PSAiXG4iCisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQ
cmVkaWNhdGVBdG9tCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibm90IgorICAgICAgQGlkeCAr
PSAxCisgICAgICBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICIoIgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmVzdWx0ID0g
cGFyc2VQcmVkaWNhdGUKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0g
IikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gInRydWUiCisgICAgICByZXN1bHQgPSBUcnVlLmluc3RhbmNlCisgICAgICBAaWR4ICs9
IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImZhbHNlIgorICAg
ICAgcmVzdWx0ID0gRmFsc2UuaW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0
CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IFNl
dHRpbmcuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3Ry
aW5nKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJz
ZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQW5kCisgICAg
cmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAi
YW5kIgorICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAg
QGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0
ZUF0b20KKyAgICAgIHJlc3VsdCA9IEFuZC5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkK
KyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGUKKyAg
ICAjIHNvbWUgZXhhbXBsZXMgb2YgcHJlY2VkZW5jZToKKyAgICAjIG5vdCBhIGFuZCBiIC0+IChu
b3QgYSkgYW5kIGIKKyAgICAjIGEgYW5kIGIgb3IgYyAtPiAoYSBhbmQgYikgb3IgYworICAgICMg
YSBvciBiIGFuZCBjIC0+IGEgb3IgKGIgYW5kIGMpCisgICAgCisgICAgcmVzdWx0ID0gcGFyc2VQ
cmVkaWNhdGVBbmQKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJvciIKKyAgICAgIGNvZGVP
cmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAgICAg
c2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICAgIHJlc3Vs
dCA9IE9yLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJlc3Vs
dAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVZhcmlhYmxlCisgICAgaWYgaXNSZWdpc3RlcihAdG9r
ZW5zW0BpZHhdKQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9fiBGUFJfUEFUVEVSTgorICAgICAg
ICByZXN1bHQgPSBGUFJlZ2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4s
IEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBSZWdp
c3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0
cmluZykKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQor
ICAgICAgcmVzdWx0ID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4s
IEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBl
bmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VBZGRy
ZXNzKG9mZnNldCkKKyAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJbIgor
ICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAKKyAgICAjIFRo
cmVlIHBvc3NpYmlsaXRpZXM6CisgICAgIyBbXSAgICAgICAtPiBBYnNvbHV0ZUFkZHJlc3MKKyAg
ICAjIFthXSAgICAgIC0+IEFkZHJlc3MKKyAgICAjIFthLGJdICAgIC0+IEJhc2VJbmRleCB3aXRo
IHNjYWxlID0gMQorICAgICMgW2EsYixjXSAgLT4gQmFzZUluZGV4CisgICAgCisgICAgQGlkeCAr
PSAxCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIEBpZHggKz0gMQorICAgICAg
cmV0dXJuIEFic29sdXRlQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0KQorICAgIGVuZAor
ICAgIGEgPSBwYXJzZVZhcmlhYmxlCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAg
IHJlc3VsdCA9IEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIGEsIG9mZnNldCkKKyAgICBlbHNlCisg
ICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgQGlkeCAr
PSAxCisgICAgICBiID0gcGFyc2VWYXJpYWJsZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
XSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCAxLCBv
ZmZzZXQpCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlk
eF0gPT0gIiwiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBb
IjEiLCAiMiIsICI0IiwgIjgiXS5tZW1iZXI/IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAg
IGMgPSBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICByZXN1bHQg
PSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIGMsIG9mZnNldCkKKyAgICAgIGVuZAor
ICAgIGVuZAorICAgIEBpZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJz
ZUNvbG9uQ29sb24KKyAgICBza2lwTmV3TGluZQorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4KKyAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vu
c1tAaWR4XQorICAgIG5hbWVzID0gW0B0b2tlbnNbQGlkeF0uc3RyaW5nXQorICAgIEBpZHggKz0g
MQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIjo6IgorICAgICAgQGlkeCArPSAxCisgICAg
ICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgbmFt
ZXMgPDwgQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICAg
IHJhaXNlIGlmIG5hbWVzLmVtcHR5PworICAgIFtjb2RlT3JpZ2luLCBuYW1lc10KKyAgZW5kCisg
IAorICBkZWYgcGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHNraXBOZXdMaW5lCisgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgTmVnSW1tZWRpYXRlLm5l
dyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAg
IGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3Vs
dCA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4
XSA9PSAiKSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJbnRl
Z2VyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pKQorICAgICAgQGlkeCAr
PSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQor
ICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIGlmIG5hbWVz
LnNpemUgPiAxCisgICAgICAgIFN0cnVjdE9mZnNldC5mb3JGaWVsZChjb2RlT3JpZ2luLCBuYW1l
c1swLi4tMl0uam9pbignOjonKSwgbmFtZXNbLTFdKQorICAgICAgZWxzZQorICAgICAgICBWYXJp
YWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzWzBdKQorICAgICAgZW5kCisgICAgZWxzaWYg
aXNSZWdpc3RlciBAdG9rZW5zW0BpZHhdCisgICAgICBwYXJzZVZhcmlhYmxlCisgICAgZWxzaWYg
QHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIgorICAgICAgQGlkeCArPSAxCisgICAgICBjb2RlT3Jp
Z2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAgU2l6ZW9mLmZvck5hbWUoY29kZU9y
aWdpbiwgbmFtZXMuam9pbignOjonKSkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbk11bAorICAgIHNraXBOZXdMaW5l
CisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlk
eF0gPT0gIioiCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgcmVzdWx0ID0gTXVsSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0u
Y29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAgZWxzZQorICAg
ICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAg
ZGVmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgQHRva2Vuc1tAaWR4XSA9PSAiLSIgb3IgQHRva2Vu
c1tAaWR4XSA9PSAic2l6ZW9mIiBvciBpc0ludGVnZXIoQHRva2Vuc1tAaWR4XSkgb3IgaXNWYXJp
YWJsZShAdG9rZW5zW0BpZHhdKSBvciBAdG9rZW5zW0BpZHhdID09ICIoIgorICBlbmQKKyAgCisg
IGRlZiBwYXJzZUV4cHJlc3Npb24KKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNl
RXhwcmVzc2lvbk11bAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0b2tlbnNb
QGlkeF0gPT0gIi0iCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0g
MV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICItIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0g
U3ViSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBw
YXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQK
KyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1l
bnQpCisgICAgaWYgY291bGRCZUV4cHJlc3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Np
b24KKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRkcmVzcyhl
eHByKQorICAgICAgZWxzZQorICAgICAgICBleHByCisgICAgICBlbmQKKyAgICBlbHNpZiBAdG9r
ZW5zW0BpZHhdID09ICJbIgorICAgICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luLCAwKSkKKyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0K
KyAgICAgIHJlc3VsdCA9IExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4sIExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhd
LnN0cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzTG9j
YWxMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVmZXJlbmNl
Lm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0g
MQorICAgICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50KQorICAg
IGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tpcE5ld0xp
bmUKKyAgICBjb25zdW1lKC9cQVwoXFovKQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAgbG9vcCB7
CisgICAgICBza2lwTmV3TGluZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRv
a2Vuc1tAaWR4XSkKKyAgICAgICAgdmFyaWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIiki
CisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAg
ICAgICAgIHBhcnNlRXJyb3IKKyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIHBhcnNl
RXJyb3IKKyAgICAgIGVuZAorICAgIH0KKyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAorICBkZWYg
cGFyc2VTZXF1ZW5jZShmaW5hbCwgY29tbWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4gPSBAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAgICAgIGlm
IChAaWR4ID09IEB0b2tlbnMubGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQgQHRv
a2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gIlxuIgorICAgICAgICAjIGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEKKyAgICAg
IGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgcGFyc2VFcnJvciB1bmxlc3MgaXNWYXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAgICAgIHZh
cmlhYmxlID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tl
bnNbQGlkeF0uc3RyaW5nKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1
bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiPSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZh
bHVlID0gcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5uYW1l
fSIpCisgICAgICAgIGxpc3QgPDwgQ29uc3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImVycm9y
IgorICAgICAgICBsaXN0IDw8IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4pCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAg
ICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGlj
YXRlCisgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgc2tpcE5l
d0xpbmUKKyAgICAgICAgaWZUaGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHBy
ZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hp
bGUgaW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBsaXN0IDw8
IGlmVGhlbkVsc2UKKyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisgICAg
ICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRlID0gcGFy
c2VQcmVkaWNhdGUKKyAgICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAg
ICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNv
ZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNp
ZikpXFovLCAid2hpbGUgaW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAg
ICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlmVGhlbkVs
c2UgPSBlbHNlQ2FzZQorICAgICAgICBlbmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
ZWxzZSIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNl
ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNlIGZv
ciBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiZW5k
IgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gIm1hY3JvIgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBw
YXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgbmFt
ZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YXJp
YWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNl
KC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAgICAgQGlk
eCArPSAxCisgICAgICAgIGxpc3QgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlh
YmxlcywgYm9keSkKKyAgICAgIGVsc2lmIGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAg
ICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUg
PSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgKG5v
dCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tA
aWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5k
IGl0J3MgdGhlIGxhc3Qgb25lLgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNv
ZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLgor
ICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQor
ICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBJdCdzIGRlZmlu
aXRlbHkgYW4gaW5zdHJ1Y3Rpb24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJhbmQuCisg
ICAgICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxzZQor
ICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3
aGlsZSBpbnNpZGUgb2YgaW5zdHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICBpZiAobm90
IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0Bp
ZHhdID1+IGZpbmFsKQorICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9u
IGFuZCBvZiB0aGUgc2VxdWVuY2UuCisgICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSB0cnVl
CisgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICIsIgorICAgICAgICAgICAgICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAg
ICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFsfSBh
ZnRlciAje29wZXJhbmRzLmxhc3QuZHVtcH0iKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAg
fQorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9w
ZXJhbmRzKQorICAgICAgICAgIGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgZW5kCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tl
bnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgor
ICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICAgICAgIyBNYWNybyBpbnZvY2F0
aW9uLgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAg
ICAgICBza2lwTmV3TGluZQorICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsb29wIHsKKyAg
ICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9
PSAibWFjcm8iCisgICAgICAgICAgICAgICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQorICAgICAg
ICAgICAgICAgIGNvZGVPcmlnaW5Jbm5lciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAg
ICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNl
TWFjcm9WYXJpYWJsZXMKKyAgICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFl
bmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1bWVu
dCB0byAje25hbWV9IikKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAg
ICBvcGVyYW5kcyA8PCBNYWNyby5uZXcoY29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlhYmxlcywg
Ym9keSkKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBh
cnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIpCisgICAg
ICAgICAgICAgIGVuZAorICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBp
ZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwi
CisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBwYXJzZUVycm9yICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5z
cGVjdH0gd2hpbGUgcGFyc2luZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgfQorICAgICAgICAgIGVuZAorICAgICAgICAgIGxpc3Qg
PDwgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgZWxz
ZQorICAgICAgICAgIHBhcnNlRXJyb3IgIkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFtZX0iCisg
ICAgICAgIGVuZAorICAgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlzTG9jYWxM
YWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI6Igor
ICAgICAgICAjIEl0J3MgYSBsYWJlbC4KKyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAg
ICAgbGlzdCA8PCBMYWJlbC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVsc2UK
KyAgICAgICAgICBsaXN0IDw8IExvY2FsTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgICAgICBlbmQKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNlCisgICAgICAgIHBhcnNl
RXJyb3IgIkV4cGVjdGluZyB0ZXJtaW5hbCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAgICAgZW5k
CisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisgIGVuZAor
ZW5kCisKK2RlZiBwYXJzZSh0b2tlbnMpCisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9rZW5zKQor
ICBwYXJzZXIucGFyc2VTZXF1ZW5jZShuaWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K0dQUlMgPQorICBbCisgICAidDAiLAorICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMiLAorICAg
InQ0IiwKKyAgICJjZnIiLAorICAgImEwIiwKKyAgICJhMSIsCisgICAicjAiLAorICAgInIxIiwK
KyAgICJzcCIKKyAgXQorCitGUFJTID0KKyAgWworICAgImZ0MCIsCisgICAiZnQxIiwKKyAgICJm
dDIiLAorICAgImZ0MyIsCisgICAiZnQ0IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisgICAiZmEx
IiwKKyAgICJmYTIiLAorICAgImZhMyIsCisgICAiZnIiCisgIF0KKworUkVHSVNURVJTID0gR1BS
UyArIEZQUlMKKworR1BSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJTLmpvaW4o
Jyl8KCcpICsgJykpXFxaJykKK0ZQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgRlBS
Uy5qb2luKCcpfCgnKSArICcpKVxcWicpCisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdleHAubmV3
KCdcXEEoKCcgKyBSRUdJU1RFUlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2VsZl9oYXNoLnJiCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0OCBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVp
cmUgInBhdGhuYW1lIgorCisjCisjIHNlbGZIYXNoIC0+IFNIQTEgaGV4ZGlnZXN0CisjCisjIFJl
dHVybnMgYSBoYXNoIG9mIHRoZSBvZmZsaW5lYXNtIHNvdXJjZSBjb2RlLiBUaGlzIGFsbG93cyBk
ZXBlbmRlbmN5CisjIHRyYWNraW5nIGZvciBub3QganVzdCBjaGFuZ2VzIGluIGlucHV0LCBidXQg
YWxzbyBjaGFuZ2VzIGluIHRoZSBhc3NlbWJsZXIKKyMgaXRzZWxmLgorIworCitkZWYgc2VsZkhh
c2gKKyAgY29udGVudHMgPSAiIgorICBteVBhdGggPSBQYXRobmFtZS5uZXcoX19GSUxFX18pLmRp
cm5hbWUKKyAgRGlyLmZvcmVhY2gobXlQYXRoKSB7CisgICAgfCBlbnRyeSB8CisgICAgaWYgZW50
cnkgPX4gL1wucmIkLworICAgICAgY29udGVudHMgKz0gSU86OnJlYWQobXlQYXRoICsgZW50cnkp
CisgICAgZW5kCisgIH0KKyAgcmV0dXJuIERpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoY29udGVudHMp
CitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3Mu
cmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGlu
Z3MucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9z
ZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMDUgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImJhY2tlbmRz
IgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCisjCisjIGNvbXB1dGVT
ZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIC0+IHNldHRpbmdzQ29tYmlhdGlvbnMKKyMKKyMgQ29t
cHV0ZXMgYW4gYXJyYXkgb2Ygc2V0dGluZ3MgbWFwcywgd2hlcmUgYSBzZXR0aW5ncyBtYXAgY29u
c3RpdHV0ZXMKKyMgYSBjb25maWd1cmF0aW9uIGZvciB0aGUgYXNzZW1ibHkgY29kZSBiZWluZyBn
ZW5lcmF0ZWQuIFRoZSBtYXAKKyMgY29udGFpbnMga2V5IHZhbHVlIHBhaXJzIHdoZXJlIGtleXMg
YXJlIHNldHRpbmdzIG5hbWVzIChzdHJpbmdzKSBhbmQKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVh
bnMgKHRydWUgZm9yIGVuYWJsZWQsIGZhbHNlIGZvciBkaXNhYmxlZCkuCisjCisKK2RlZiBjb21w
dXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IFtd
CisgIAorICBkZWYgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBtYXBT
b0ZhciwgcmVtYWluaW5nKQorICAgIGlmIHJlbWFpbmluZy5lbXB0eT8KKyAgICAgIHNldHRpbmdz
Q29tYmluYXRpb25zIDw8IG1hcFNvRmFyCisgICAgICByZXR1cm4KKyAgICBlbmQKKyAgICAKKyAg
ICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IHRydWUK
KyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVt
YWluaW5nWzEuLi0xXSkKKyAgICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBuZXdN
YXBbcmVtYWluaW5nWzBdXSA9IGZhbHNlCisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdz
Q29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmluZ1sxLi4tMV0pCisgIGVuZAorICAKKyAgc2V0
dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCB7fSwgKGFzdC5maWx0ZXIoU2V0
dGluZykudW5pcS5jb2xsZWN0e3x2fCB2Lm5hbWV9ICsgWyJYODYiLCAiQVJNdjciXSkudW5pcSkK
KyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zCitlbmQKKworIworIyBmb3JTZXR0aW5ncyhjb25j
cmV0ZVNldHRpbmdzLCBhc3QpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxB
U1QsIGJhY2tlbmQgfCAuLi4gfQorIworIyBEZXRlcm1pbmVzIGlmIHRoZSBzZXR0aW5ncyBjb21i
aW5hdGlvbiBpcyB2YWxpZCwgYW5kIGlmIHNvLCBjYWxscworIyB0aGUgYmxvY2sgd2l0aCB0aGUg
aW5mb3JtYXRpb24geW91IG5lZWQgdG8gZ2VuZXJhdGUgY29kZS4KKyMKKworZGVmIGZvclNldHRp
bmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkKKyAgIyBDaGVjayB3aGljaCBhcmNoaXRlY3R1cmVz
IHRoaXMgY29tYmluYXRvciBjbGFpbXMgdG8gc3VwcG9ydC4KKyAgbnVtQ2xhaW1lZEJhY2tlbmRz
ID0gMAorICBzZWxlY3RlZEJhY2tlbmQgPSBuaWwKKyAgQkFDS0VORFMuZWFjaCB7CisgICAgfCBi
YWNrZW5kIHwKKyAgICBpc1N1cHBvcnRlZCA9IGNvbmNyZXRlU2V0dGluZ3NbYmFja2VuZF0KKyAg
ICByYWlzZSB1bmxlc3MgaXNTdXBwb3J0ZWQgIT0gbmlsCisgICAgbnVtQ2xhaW1lZEJhY2tlbmRz
ICs9IGlmIGlzU3VwcG9ydGVkIHRoZW4gMSBlbHNlIDAgZW5kCisgICAgaWYgaXNTdXBwb3J0ZWQK
KyAgICAgIHNlbGVjdGVkQmFja2VuZCA9IGJhY2tlbmQKKyAgICBlbmQKKyAgfQorICAKKyAgcmV0
dXJuIGlmIG51bUNsYWltZWRCYWNrZW5kcyA+IDEKKyAgCisgICMgUmVzb2x2ZSB0aGUgQVNUIGRv
d24gdG8gYSBsb3ctbGV2ZWwgZm9ybSAobm8gbWFjcm9zIG9yIGNvbmRpdGlvbmFscykuCisgIGxv
d0xldmVsQVNUID0gYXN0LnJlc29sdmVTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzKQorICAKKyAg
eWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIHNlbGVjdGVkQmFja2VuZAorZW5k
CisKKyMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsKKyMgICAgIHwg
Y29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9CisjCisjIGZvckVh
Y2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCBzZXR0aW5nc0NvbWJpbmF0aW9ucykgewor
IyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0KKyMK
KyMgRXhlY3V0ZXMgdGhlIGdpdmVuIGJsb2NrIGZvciBlYWNoIHZhbGlkIHNldHRpbmdzIGNvbWJp
bmF0aW9uIGluIHRoZQorIyBzZXR0aW5ncyBtYXAuIFRoZSBhc3QgcGFzc2VkIGludG8gdGhlIGJs
b2NrIGlzIHJlc29sdmVkCisjIChhc3QucmVzb2x2ZSkgYWdhaW5zdCB0aGUgc2V0dGluZ3MuCisj
CisjIFRoZSBmaXJzdCBmb3JtIHdpbGwgY2FsbCBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMo
YXN0KSBmb3IgeW91LgorIworCitkZWYgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihh
c3QsICpvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zKQorICByYWlzZSBpZiBvcHRpb25hbFNl
dHRpbmdzQ29tYmluYXRpb25zLnNpemUgPiAxCisgIAorICBpZiBvcHRpb25hbFNldHRpbmdzQ29t
YmluYXRpb25zLmVtcHR5PworICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gY29tcHV0ZVNldHRp
bmdzQ29tYmluYXRpb25zKGFzdCkKKyAgZWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0g
b3B0aW9uYWxTZXR0aW5nc0NvbWJpYXRpb25zWzBdCisgIGVuZAorICAKKyAgc2V0dGluZ3NDb21i
aW5hdGlvbnMuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGluZGV4
IHwKKyAgICBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpIHsKKyAgICAgIHwgY29u
Y3JldGVTZXR0aW5nc18sIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICAgIHlpZWxkIGNvbmNy
ZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgIH0KKyAgfQorZW5k
CisKKyMKKyMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisjCisjIFJldHVybnMg
dGhlIEMrKyBjb2RlIHVzZWQgdG8gdGVzdCBpZiB3ZSBhcmUgaW4gYSBjb25maWd1cmF0aW9uIHRo
YXQKKyMgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIGNvbmNyZXRlIHNldHRpbmdzLgorIworCitk
ZWYgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICIjaWYgIiArIGNvbmNyZXRl
U2V0dGluZ3MudG9fYS5jb2xsZWN0eworICAgIHwgcGFpciB8CisgICAgKGlmIHBhaXJbMV0KKyAg
ICAgICAiIgorICAgICBlbHNlCisgICAgICAgIiEiCisgICAgIGVuZCkgKyAiT0ZGTElORV9BU01f
IiArIHBhaXJbMF0KKyAgfS5qb2luKCIgJiYgIikKK2VuZAorCisjCisjIGlzQVNURXJyb25lb3Vz
KGFzdCkKKyMKKyMgVGVzdHMgdG8gc2VlIGlmIHRoZSBBU1QgY2xhaW1zIHRoYXQgdGhlcmUgaXMg
YW4gZXJyb3IgLSBpLmUuIGlmIHRoZQorIyB1c2VyJ3MgY29kZSwgYWZ0ZXIgc2V0dGluZ3MgcmVz
b2x1dGlvbiwgaGFzIEVycm9yIG5vZGVzLgorIworCitkZWYgaXNBU1RFcnJvbmVvdXMoYXN0KQor
ICBub3QgYXN0LmZpbHRlcihFcnJvcikuZW1wdHk/CitlbmQKKworIworIyBhc3NlcnRDb25maWd1
cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisjCisjIEVtaXRzIGEgY2hlY2sgdGhhdCBhc3NlcnRz
IHRoYXQgd2UncmUgdXNpbmcgdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24uCisjCisKK2RlZiBhc3Nl
cnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgICRvdXRwdXQucHV0cyBjcHBTZXR0
aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgJG91dHB1dC5wdXRzICIjZWxzZSIKKyAgJG91
dHB1dC5wdXRzICIjZXJyb3IgXCJDb25maWd1cmF0aW9uIG1pc21hdGNoLlwiIgorICAkb3V0cHV0
LnB1dHMgIiNlbmRpZiIKK2VuZAorCisjCisjIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNy
ZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBh
c3QsIGJhY2tlbmQgfCAuLi4gfQorIworIyBFbWl0cyBhbGwgcmVsZXZhbnQgZ3VhcmRzIHRvIHNl
ZSBpZiB0aGUgY29uZmlndXJhdGlvbiBob2xkcyBhbmQKKyMgY2FsbHMgdGhlIGJsb2NrIGlmIHRo
ZSBjb25maWd1cmF0aW9uIGlzIG5vdCBlcnJvbmVvdXMuCisjCisKK2RlZiBlbWl0Q29kZUluQ29u
ZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpCisgICRvdXRwdXQucHV0
cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIGlmIGlzQVNURXJyb25l
b3VzKGFzdCkKKyAgICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIkludmFsaWQgY29uZmlndXJhdGlv
bi5cIiIKKyAgZWxzaWYgbm90IFdPUktJTkdfQkFDS0VORFMuaW5jbHVkZT8gYmFja2VuZAorICAg
ICRvdXRwdXQucHV0cyAiI2Vycm9yIFwiVGhpcyBiYWNrZW5kIGlzIG5vdCBzdXBwb3J0ZWQgeWV0
LlwiIgorICBlbHNlCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kCisg
IGVuZAorICAKKyAgJG91dHB1dC5wdXRzICIjZW5kaWYiCitlbmQKKworIworIyBlbWl0Q29kZUlu
QWxsQ29uZmlndXJhdGlvbnMoYXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwg
YmFja2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBFbWl0cyBndWFyZCBjb2RlcyBmb3IgYWxsIHZh
bGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgY2FsbHMgdGhlIGJsb2NrCisjIGZvciB0aG9zZSBjb25m
aWd1cmF0aW9ucyB0aGF0IGFyZSB2YWxpZCBhbmQgbm90IGVycm9uZW91cy4KKyMKKworZGVmIGVt
aXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3QpCisgIGZvckVhY2hWYWxpZFNldHRpbmdzQ29t
YmluYXRpb24oYXN0KSB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFj
a2VuZCwgaW5kZXggfAorICAgICRvdXRwdXQucHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVT
ZXR0aW5ncykKKyAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2Vu
ZCwgaW5kZXgKKyAgICAkb3V0cHV0LnB1dHMgIiNlbmRpZiIKKyAgfQorZW5kCisKKworCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJi
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorCisjCisjIG5vZGUucmVzb2x2ZVNldHRpbmdz
KHNldHRpbmdzKQorIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2ZSBh
bnkgSWZUaGVuRWxzZSBub2RlcyBieQorIyBzdWJzdGl0dXRpbmcgY29uY3JldGUgYm9vbGVhbiB2
YWx1ZXMgZm9yIGVhY2ggU2V0dGluZy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZVNl
dHRpbmdzKHNldHRpbmdzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAg
ICAgY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIH0KKyAgZW5kCitlbmQKKwor
Y2xhc3MgVHJ1ZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAg
ZW5kCitlbmQKKworY2xhc3MgRmFsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykK
KyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcKKyAgZGVmIHJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICBzZXR0aW5nc1tAbmFtZV0uYXNOb2RlCisgIGVuZAorZW5kCisK
K2NsYXNzIEFuZAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5y
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIGFuZCBAcmlnaHQucmVzb2x2ZVNldHRpbmdz
KHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE9yCisgIGRlZiBy
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykudmFsdWUgb3IgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFz
Tm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBOb3QKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykKKyAgICAobm90IEBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5h
c05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZQorICBkZWYgcmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKQorICAgIGlmIEBwcmVkaWNhdGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdz
KS52YWx1ZQorICAgICAgQHRoZW5DYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBl
bHNlCisgICAgICBAZWxzZUNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVuZAor
ICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRp
bmdzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwK
KyAgICAgIGl0ZW0gPSBpdGVtLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgIGlmIGl0
ZW0uaXNfYT8gU2VxdWVuY2UKKyAgICAgICAgbmV3TGlzdCArPSBpdGVtLmxpc3QKKyAgICAgIGVs
c2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVu
Y2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5kZW1h
Y3JvaWZ5KG1hY3JvcykKKyMgbm9kZS5zdWJzdGl0dXRlKG1hcHBpbmcpCisjCisjIGRlbWFjcm9p
ZnkoKSBjb25zdHJ1Y3RzIGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IE1hY3JvCisj
IG5vZGVzLCB3aGlsZSBzdWJzdGl0dXRlKCkgcmVwbGFjZXMgVmFyaWFibGUgbm9kZXMgd2l0aCB0
aGUgZ2l2ZW4KKyMgbm9kZXMgaW4gdGhlIG1hcHBpbmcuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVm
IGRlbWFjcm9pZnkobWFjcm9zKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAor
ICAgICAgY2hpbGQuZGVtYWNyb2lmeShtYWNyb3MpCisgICAgfQorICBlbmQKKyAgCisgIGRlZiBz
dWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8Cisg
ICAgICBjaGlsZC5zdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgfQorICBlbmQKKyAgCisgIGRlZiBz
dWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGls
ZCB8CisgICAgICBjaGlsZC5zdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgfQorICBlbmQK
K2VuZAorCitjbGFzcyBNYWNybworICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG15TWFw
cGluZyA9IHt9CisgICAgbWFwcGluZy5lYWNoX3BhaXIgeworICAgICAgfCBrZXksIHZhbHVlIHwK
KyAgICAgIHVubGVzcyBAdmFyaWFibGVzLmluY2x1ZGU/IGtleQorICAgICAgICBteU1hcHBpbmdb
a2V5XSA9IHZhbHVlCisgICAgICBlbmQKKyAgICB9CisgICAgbWFwQ2hpbGRyZW4geworICAgICAg
fCBjaGlsZCB8CisgICAgICBjaGlsZC5zdWJzdGl0dXRlKG15TWFwcGluZykKKyAgICB9CisgIGVu
ZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAg
aWYgbWFwcGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNl
bGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbAorICBkZWYgc3Vic3Rp
dHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdb
c2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNz
IFNlcXVlbmNlCisgIGRlZiBzdWJzdGl0dXRlKGNvbnN0YW50cykKKyAgICBuZXdMaXN0ID0gW10K
KyAgICBteUNvbnN0YW50cyA9IGNvbnN0YW50cy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAg
IHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IENvbnN0RGVjbAorICAgICAgICBteUNvbnN0
YW50c1tpdGVtLnZhcmlhYmxlXSA9IGl0ZW0udmFsdWUuc3Vic3RpdHV0ZShteUNvbnN0YW50cykK
KyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtLnN1YnN0aXR1dGUobXlDb25zdGFu
dHMpCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xp
c3QpCisgIGVuZAorICAKKyAgZGVmIHJlbmFtZUxhYmVscyhjb21tZW50KQorICAgIG1hcHBpbmcg
PSB7fQorICAgIAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0
ZW0uaXNfYT8gTG9jYWxMYWJlbAorICAgICAgICBtYXBwaW5nW2l0ZW1dID0gTG9jYWxMYWJlbC51
bmlxdWUoaWYgY29tbWVudCB0aGVuIGNvbW1lbnQgKyAiXyIgZWxzZSAiIiBlbmQgKyBpdGVtLmNs
ZWFuTmFtZSkKKyAgICAgIGVuZAorICAgIH0KKyAgICAKKyAgICBzdWJzdGl0dXRlTGFiZWxzKG1h
cHBpbmcpCisgIGVuZAorICAKKyAgZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAgIG15TWFjcm9z
ID0gbWFjcm9zLmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlm
IGl0ZW0uaXNfYT8gTWFjcm8KKyAgICAgICAgbXlNYWNyb3NbaXRlbS5uYW1lXSA9IGl0ZW0KKyAg
ICAgIGVuZAorICAgIH0KKyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAgICAg
IHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgICMgSWdub3JlLgor
ICAgICAgZWxzaWYgaXRlbS5pc19hPyBNYWNyb0NhbGwKKyAgICAgICAgbWFwcGluZyA9IHt9Cisg
ICAgICAgIG15TXlNYWNyb3MgPSBteU1hY3Jvcy5kdXAKKyAgICAgICAgcmFpc2UgIkNvdWxkIG5v
dCBmaW5kIG1hY3JvICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVu
bGVzcyBteU1hY3Jvc1tpdGVtLm5hbWVdCisgICAgICAgIHJhaXNlICJBcmd1bWVudCBjb3VudCBt
aXNtYXRjaCBmb3IgY2FsbCB0byAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJp
bmd9IiB1bmxlc3MgaXRlbS5vcGVyYW5kcy5zaXplID09IG15TWFjcm9zW2l0ZW0ubmFtZV0udmFy
aWFibGVzLnNpemUKKyAgICAgICAgaXRlbS5vcGVyYW5kcy5zaXplLnRpbWVzIHsKKyAgICAgICAg
ICB8IGlkeCB8CisgICAgICAgICAgaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IFZhcmlhYmxl
IGFuZCBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG15TXlN
YWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG15TWFjcm9z
W2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tp
dGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxzaWYgaXRl
bS5vcGVyYW5kc1tpZHhdLmlzX2E/IE1hY3JvCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFj
cm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBpdGVtLm9wZXJhbmRzW2lkeF0K
KyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5u
YW1lXSA9IG5pbAorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNy
b3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBuaWwKKyAgICAgICAgICAgIG1hcHBpbmdb
bXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBpdGVtLm9wZXJhbmRzW2lkeF0K
KyAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBuZXdMaXN0ICs9IG15TWFjcm9zW2l0
ZW0ubmFtZV0uYm9keS5zdWJzdGl0dXRlKG1hcHBpbmcpLmRlbWFjcm9pZnkobXlNeU1hY3Jvcyku
cmVuYW1lTGFiZWxzKGl0ZW0ubmFtZSkubGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0
IDw8IGl0ZW0uZGVtYWNyb2lmeShteU1hY3JvcykKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1
ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkuc3Vic3RpdHV0ZSh7fSkKKyAgZW5kCitlbmQK
KworIworIyBub2RlLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorIworIyBDb25zdHJ1
Y3QgYSBuZXcgQVNUIHRoYXQgaGFzIG9mZnNldCB2YWx1ZXMgaW5zdGVhZCBvZiBzeW1ib2xpYwor
IyBvZmZzZXRzLgorIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRz
LCBzaXplcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxk
LnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xh
c3MgU3RydWN0T2Zmc2V0CisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAg
ICBpZiBvZmZzZXRzW3NlbGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIG9mZnNl
dHNbc2VsZl0pCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitj
bGFzcyBTaXplb2YKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlm
IHNpemVzW3NlbGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIHNpemVzW3NlbGZd
KQorICAgIGVsc2UKKyAgICAgIHB1dHMgIkNvdWxkIG5vdCBmaW5kICN7c2VsZi5pbnNwZWN0fSBp
biAje3NpemVzLmtleXMuaW5zcGVjdH0iCisgICAgICBwdXRzICJzaXplcyA9ICN7c2l6ZXMuaW5z
cGVjdH0iCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5mb2xk
CisjCisjIFJlc29sdmUgY29uc3RhbnQgcmVmZXJlbmNlcyBhbmQgY29tcHV0ZSBhcml0aG1ldGlj
IGV4cHJlc3Npb25zLgorIworCitjbGFzcyBOb2RlCisgIGRlZiBmb2xkCisgICAgbWFwQ2hpbGRy
ZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5mb2xkCisgICAgfQorICBlbmQKK2Vu
ZAorCitjbGFzcyBBZGRJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5m
b2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxl
ZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJ
bW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICsgQHJp
Z2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzCisgIGRlZiBmb2xk
CisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICBy
ZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYg
dW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmln
aW4sIEBsZWZ0LnZhbHVlIC0gQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBNdWxJ
bW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0
ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRp
YXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJ
bW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICogQHJpZ2h0LnZhbHVlKQorICBl
bmQKK2VuZAorCitjbGFzcyBOZWdJbW1lZGlhdGUKKyAgZGVmIGZvbGQKKyAgICBAY2hpbGQgPSBA
Y2hpbGQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAY2hpbGQuaXNfYT8gSW1tZWRpYXRl
CisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtQGNoaWxkLnZhbHVlKQorICBlbmQKK2Vu
ZAorCisjCisjIG5vZGUucmVzb2x2ZUFmdGVyU2V0dGluZ3Mob2Zmc2V0cywgc2l6ZXMpCisjCisj
IENvbXBpbGUgYXNzZW1ibHkgYWdhaW5zdCBhIHNldCBvZiBvZmZzZXRzLgorIworCitjbGFzcyBO
b2RlCisgIGRlZiByZXNvbHZlKG9mZnNldHMsIHNpemVzKQorICAgIGRlbWFjcm9pZnkoe30pLnJl
c29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKS5mb2xkCisgIGVuZAorZW5kCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjc5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitjbGFzcyBS
ZWdpc3RlcklECisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIGNhc2UgbmFtZQorICAgIHdo
ZW4gInQwIiwgImEwIiwgInIwIiwgInQxIiwgImExIiwgInIxIiwgInQyIiwgInQzIgorICAgICAg
dHJ1ZQorICAgIHdoZW4gInQ0IiwgImNmciIKKyAgICAgIGZhbHNlCisgICAgZWxzZQorICAgICAg
cmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIGNh
c2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgY2FzZSBraW5kCisgICAg
ICB3aGVuIDpieXRlCisgICAgICAgICIlYWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIl
YXgiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYXgiCisgICAgICBlbHNlCisgICAgICAg
IHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgIGNhc2Ug
a2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWRsIgorICAgICAgd2hlbiA6aGFsZgor
ICAgICAgICAiJWR4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWR4IgorICAgICAgZWxz
ZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDIiCisgICAgICBjYXNlIGtp
bmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVjbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAg
ICAgICAgIiVjeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVjeCIKKyAgICAgIGVsc2UK
KyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQzIgorICAgICAgY2FzZSBraW5k
CisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlYmwiCisgICAgICB3aGVuIDpoYWxmCisgICAg
ICAgICIlYngiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYngiCisgICAgICBlbHNlCisg
ICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0NCIKKyAgICAgIGNhc2Uga2luZAor
ICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAg
ICAgIiVzaSIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzaSIKKyAgICAgIGVsc2UKKyAg
ICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gImNmciIKKyAgICAgIGNhc2Uga2luZAor
ICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWRpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAg
ICAgIiVkaSIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkaSIKKyAgICAgIGVsc2UKKyAg
ICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInNwIgorICAgICAgY2FzZSBraW5kCisg
ICAgICB3aGVuIDpieXRlCisgICAgICAgICIlc3BsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAg
ICAiJXNwIgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZXNwIgorICAgICAgZWxzZQorICAg
ICAgICByYWlzZQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAg
ZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQp
fSIKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgIGRlZiB4ODZPcGVyYW5kKGtp
bmQpCisgICAgcmFpc2UgdW5sZXNzIGtpbmQgPT0gOmRvdWJsZQorICAgIGNhc2UgbmFtZQorICAg
IHdoZW4gImZ0MCIsICJmYTAiLCAiZnIiCisgICAgICAiJXhtbTAiCisgICAgd2hlbiAiZnQxIiwg
ImZhMSIKKyAgICAgICIleG1tMSIKKyAgICB3aGVuICJmdDIiLCAiZmEyIgorICAgICAgIiV4bW0y
IgorICAgIHdoZW4gImZ0MyIsICJmYTMiCisgICAgICAiJXhtbTMiCisgICAgd2hlbiAiZnQ0Igor
ICAgICAgIiV4bW00IgorICAgIHdoZW4gImZ0NSIKKyAgICAgICIleG1tNSIKKyAgICBlbHNlCisg
ICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisg
ICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUK
KyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiJCN7dmFsdWV9IgorICBlbmQKKyAgZGVmIHg4
NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIiN7dmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBB
ZGRyZXNzCisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisg
IGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3Bl
cmFuZCg6aW50KX0pIgorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioj
e3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgZGVm
IHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJh
bmQoa2luZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSwg
I3tpbmRleC54ODZPcGVyYW5kKDppbnQpfSwgI3tzY2FsZX0pIgorICBlbmQKKworICBkZWYgeDg2
Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2b3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5k
CisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0
cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje2FkZHJlc3Mu
dmFsdWV9IgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7YWRk
cmVzcy52YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgIGRlZiB4
ODZDYWxsT3BlcmFuZChraW5kKQorICAgIGFzbUxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIExv
Y2FsTGFiZWxSZWZlcmVuY2UKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgYXNtTGFi
ZWwKKyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24KKyAgZGVmIHg4Nk9wZXJhbmRzKCpr
aW5kcykKKyAgICByYWlzZSB1bmxlc3Mga2luZHMuc2l6ZSA9PSBvcGVyYW5kcy5zaXplCisgICAg
cmVzdWx0ID0gW10KKyAgICBraW5kcy5zaXplLnRpbWVzIHsKKyAgICAgIHwgaWR4IHwKKyAgICAg
IHJlc3VsdCA8PCBvcGVyYW5kc1tpZHhdLng4Nk9wZXJhbmQoa2luZHNbaWR4XSkKKyAgICB9Cisg
ICAgcmVzdWx0LmpvaW4oIiwgIikKKyAgZW5kCisKKyAgZGVmIHg4NlN1ZmZpeChraW5kKQorICAg
IGNhc2Uga2luZAorICAgIHdoZW4gOmJ5dGUKKyAgICAgICJiIgorICAgIHdoZW4gOmhhbGYKKyAg
ICAgICJ3IgorICAgIHdoZW4gOmludAorICAgICAgImwiCisgICAgd2hlbiA6ZG91YmxlCisgICAg
ICAic2QiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYg
aGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBudW1PcGVyYW5kcykKKyAg
ICBpZiBudW1PcGVyYW5kcyA9PSAzCisgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1sy
XQorICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
a2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzaWYgb3Bl
cmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJtb3Yje3g4NlN1ZmZpeChraW5k
KX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVy
YW5kKGtpbmQpfSIKKyAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAg
IGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wKG9wY29kZSwga2luZCkKKyAgICBoYW5k
bGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUpCisgIGVu
ZAorICAKKyAgZGVmIGhhbmRsZVg4NlNoaWZ0KG9wY29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5k
c1swXS5pc19hPyBJbW1lZGlhdGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0ZXJJRC5mb3JOYW1l
KG5pbCwgInQyIikKKyAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVs
c2UKKyAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQp
fSwgJWVjeCIKKyAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICVjbCwgI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKGJyYW5jaE9wY29kZSwgbW9kZSkKKyAgICBjYXNlIG1vZGUKKyAgICB3
aGVuIDpub3JtYWwKKyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAg
IHdoZW4gOnJldmVyc2UKKyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9Igor
ICAgIGVsc2UKKyAgICAgIHJhaXNlIG1vZGUuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0
cyAiI3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICBlbmQKKyAgCisg
IGRlZiBoYW5kbGVYODZJbnRDb21wYXJlKG9wY29kZVN1ZmZpeCwga2luZCkKKyAgICBpZiBvcGVy
YW5kc1swXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDAgYW5kIG9w
ZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9yIG9w
Y29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgoa2lu
ZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzaWYgb3BlcmFuZHNb
MV0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1sxXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5k
c1swXS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVT
dWZmaXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAidGVzdCN7eDg2U3VmZml4KGtpbmQpfSAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0
cyAiY21wI3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0s
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmIGhhbmRsZVg4NkludEJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2
SW50Q29tcGFyZShicmFuY2hPcGNvZGVbMS4uLTFdLCBraW5kKQorICAgICRhc20ucHV0cyAiI3ti
cmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBo
YW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kKQorICAgIGlmIG9wZXJhbmQuc3VwcG9ydHM4
Qml0T25YODYKKyAgICAgICRhc20ucHV0cyAiI3tzZXRPcGNvZGV9ICN7b3BlcmFuZC54ODZPcGVy
YW5kKDpieXRlKX0iCisgICAgICAkYXNtLnB1dHMgIm1vdnpibCAje29wZXJhbmQueDg2T3BlcmFu
ZCg6Ynl0ZSl9LCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAg
JGFzbS5wdXRzICJ4Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAg
ICAkYXNtLnB1dHMgIiN7c2V0T3Bjb2RlfSAlYWwiCisgICAgICAkYXNtLnB1dHMgIm1vdnpibCAl
YWwsICVlYXgiCisgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDpp
bnQpfSwgJWVheCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29tcGFy
ZVNldChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShzZXRPcGNvZGVb
My4uLTFdLCBraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRzWzJdKQor
ICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgdmFsdWUgPSBvcGVyYW5k
c1swXQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gMgorICAgICAgbWFzayA9IElt
bWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLTEpCisgICAgd2hlbiAzCisgICAgICBtYXNrID0gb3Bl
cmFuZHNbMV0KKyAgICBlbHNlCisgICAgICByYWlzZSAiRXhwZWN0ZWQgMiBvciAzIG9wZXJhbmRz
LCBidXQgZ290ICN7b3BlcmFuZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBl
bmQKKyAgICAKKyAgICBpZiBtYXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAt
MQorICAgICAgaWYgdmFsdWUuaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgInRl
c3Qje3g4NlN1ZmZpeChraW5kKX0gI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54
ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJjbXAje3g4
NlN1ZmZpeChraW5kKX0gJDAsICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQK
KyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3ttYXNr
Lng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZCcmFuY2hUZXN0KGJyYW5jaE9wY29kZSwga2luZCkK
KyAgICBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0g
I3tvcGVyYW5kcy5sYXN0LmFzbUxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0
VGVzdChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgIGhhbmRs
ZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRzLmxhc3QpCisgIGVuZAorICAKKyAgZGVmIGhhbmRs
ZVg4Nk9wQnJhbmNoKG9wY29kZSwgYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9w
V2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgY2Fz
ZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNb
M10KKyAgICB3aGVuIDMKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UK
KyAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiI3ticmFu
Y2hPcGNvZGV9ICN7anVtcFRhcmdldC5hc21MYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRs
ZVg4NlN1YkJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9
PSA0IGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgJGFzbS5wdXRzICJuZWds
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgImFkZGwg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICBlbHNlCisgICAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcygic3Vi
I3t4ODZTdWZmaXgoa2luZCl9Iiwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgZW5kCisg
ICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3Bl
cmFuZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAg
IGVsc2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAi
I3ticmFuY2hPcGNvZGV9ICN7anVtcFRhcmdldC5hc21MYWJlbH0iCisgIGVuZAorICAKKyAgZGVm
IGxvd2VyWDg2CisgICAgJGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICBjYXNlIG9w
Y29kZQorICAgIHdoZW4gImFkZGkiLCAiYWRkcCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0g
MyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVzcyBv
cGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5k
c1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAK
KyAgICAgICAgICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAg
ICRhc20ucHV0cyAibW92bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisg
ICAgICAgICAgJGFzbS5wdXRzICJsZWFsICN7b3BlcmFuZHNbMF0udmFsdWV9KCN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgICAgICBlbmQKKyAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNb
MF0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNf
YT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVn
aXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgImxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICB1bmxlc3MgSW1tZWRpYXRl
Lm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgJGFzbS5wdXRzICJhZGRsICN7
eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgICBlbmQKKyAgICAgIGVuZAorICAgIHdo
ZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJhbmRsIiwgOmludCkKKyAgICB3
aGVuICJsc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNhbGwiLCA6aW50KQorICAgIHdo
ZW4gIm11bGkiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlz
X2E/IEltbWVkaWF0ZQorICAgICAgICAkYXNtLnB1dHMgImltdWxsICN7eDg2T3BlcmFuZHMoOmlu
dCwgOmludCwgOmludCl9IgorICAgICAgZWxzZQorICAgICAgICAjIEZJWE1FOiBjb3VsZCBkbyBz
b21lIHBlZXBob2xlIGluIGNhc2UgdGhlIGxlZnQgb3BlcmFuZCBpcyBpbW1lZGlhdGUgYW5kIGl0
J3MKKyAgICAgICAgIyBhIHBvd2VyIG9mIHR3by4KKyAgICAgICAgaGFuZGxlWDg2T3AoImltdWxs
IiwgOmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gIm5lZ2kiCisgICAgICAkYXNtLnB1dHMgIm5l
Z2wgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAibm90aSIKKyAgICAgICRhc20ucHV0
cyAibm90bCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJvcmkiLCAib3JwIgorICAg
ICAgaGFuZGxlWDg2T3AoIm9ybCIsIDppbnQpCisgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgIGhh
bmRsZVg4NlNoaWZ0KCJzYXJsIiwgOmludCkKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgIGhh
bmRsZVg4NlNoaWZ0KCJzaHJsIiwgOmludCkKKyAgICB3aGVuICJzdWJpIiwgInN1YnAiCisgICAg
ICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisg
ICAgICAgICRhc20ucHV0cyAibmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgICAgICAkYXNtLnB1dHMgImFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwg
I3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgaGFu
ZGxlWDg2T3AoInN1YmwiLCA6aW50KQorICAgICAgZW5kCisgICAgd2hlbiAieG9yaSIsICJ4b3Jw
IgorICAgICAgaGFuZGxlWDg2T3AoInhvcmwiLCA6aW50KQorICAgIHdoZW4gImxvYWRpIiwgInN0
b3JlaSIsICJsb2FkcCIsICJzdG9yZXAiCisgICAgICAkYXNtLnB1dHMgIm1vdmwgI3t4ODZPcGVy
YW5kcyg6aW50LCA6aW50KX0iCisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNtLnB1dHMgIm1v
dnpibCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJsb2FkYnMiCisgICAgICAkYXNtLnB1dHMgIm1vdnNi
bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICB3aGVuICJsb2FkaCIKKyAgICAgICRhc20ucHV0cyAibW92endsICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgIHdoZW4gImxvYWRocyIKKyAgICAgICRhc20ucHV0cyAibW92c3dsICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAibW92YiAje3g4Nk9wZXJh
bmRzKDpieXRlLCA6Ynl0ZSl9IgorICAgIHdoZW4gImxvYWRkIiwgIm1vdmVkIiwgInN0b3JlZCIK
KyAgICAgICRhc20ucHV0cyAibW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0i
CisgICAgd2hlbiAiYWRkZCIKKyAgICAgICRhc20ucHV0cyAiYWRkc2QgI3t4ODZPcGVyYW5kcyg6
ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAiZGl2ZCIKKyAgICAgICRhc20ucHV0cyAiZGl2
c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3ViZCIKKyAg
ICAgICRhc20ucHV0cyAic3Vic2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisg
ICAgd2hlbiAibXVsZCIKKyAgICAgICRhc20ucHV0cyAibXVsc2QgI3t4ODZPcGVyYW5kcyg6ZG91
YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3FydGQiCisgICAgICAkYXNtLnB1dHMgInNxcnRz
ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImNpMmQiCisgICAgICAkYXNtLnB1dHMgImN2dHNp
MnNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiYmRlcSIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9j
YWxMYWJlbC51bmlxdWUoImJkZXEiKQorICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91
YmxlKX0iCisgICAgICAkYXNtLnB1dHMgImpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmln
aW4sIGlzVW5vcmRlcmVkKS5hc21MYWJlbH0iCisgICAgICAkYXNtLnB1dHMgImplICN7TGFiZWxS
ZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIG9wZXJhbmRzWzJdKS5hc21MYWJlbH0iCisgICAgICBp
c1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICB3aGVuICJiZG5lcSIKKyAgICAgIGhhbmRsZVg4
NkRvdWJsZUJyYW5jaCgiam5lIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGd0IgorICAgICAgaGFu
ZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRndGVxIgorICAg
ICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYWUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHQi
CisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphIiwgOnJldmVyc2UpCisgICAgd2hlbiAi
YmRsdGVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYWUiLCA6cmV2ZXJzZSkKKyAg
ICB3aGVuICJiZGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImplIiwgOm5vcm1h
bCkKKyAgICB3aGVuICJiZG5lcXVuIgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVu
aXF1ZSgiYmRuZXF1biIpCisgICAgICBpc0VxdWFsID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVx
dW4iKQorICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNt
LnB1dHMgImpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS5h
c21MYWJlbH0iCisgICAgICAkYXNtLnB1dHMgImplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVP
cmlnaW4sIGlzRXF1YWwpLmFzbUxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYi
KQorICAgICAgJGFzbS5wdXRzICJqbXAgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICBp
c0VxdWFsLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkZ3R1biIKKyAgICAgIGhhbmRsZVg4NkRv
dWJsZUJyYW5jaCgiamIiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAgIGhh
bmRsZVg4NkRvdWJsZUJyYW5jaCgiamJlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdHVuIgor
ICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRs
dGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3JtYWwpCisgICAg
d2hlbiAiYnRkMmkiCisgICAgICAkYXNtLnB1dHMgImN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAg
ICAgJGFzbS5wdXRzICJjbXBsICQweDgwMDAwMDAwICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgICAkYXNtLnB1dHMgImplICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAg
IHdoZW4gInRkMmkiCisgICAgICAkYXNtLnB1dHMgImN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAg
IHdoZW4gImJjZDJpIgorICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICAgICRhc20ucHV0cyAidGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiamUgI3tvcGVy
YW5kc1syXS5hc21MYWJlbH0iCisgICAgICAkYXNtLnB1dHMgImN2dHNpMnNkICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFzbS5wdXRz
ICJqcCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiam5lICN7b3Bl
cmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gIm1vdmR6IgorICAgICAgJGFzbS5wdXRzICJ4
b3JwZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gInBvcCIKKyAgICAgICRhc20ucHV0cyAicG9w
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicHVzaCIKKyAgICAg
ICRhc20ucHV0cyAicHVzaCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdo
ZW4gIm1vdmUiLCAic3hpMnAiLCAienhpMnAiCisgICAgICBpZiBJbW1lZGlhdGUubmV3KG5pbCwg
MCkgPT0gb3BlcmFuZHNbMF0gYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAg
ICAgJGFzbS5wdXRzICJ4b3JsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNpZiBvcGVyYW5kc1swXSAhPSBv
cGVyYW5kc1sxXQorICAgICAgICAkYXNtLnB1dHMgIm1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6
aW50KX0iCisgICAgICBlbmQKKyAgICB3aGVuICJub3AiCisgICAgICAkYXNtLnB1dHMgIm5vcCIK
KyAgICB3aGVuICJiaWVxIiwgImJwZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwg
OmludCkKKyAgICB3aGVuICJiaW5lcSIsICJicG5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiam5lIiwgOmludCkKKyAgICB3aGVuICJiaWEiLCAiYnBhIgorICAgICAgaGFuZGxlWDg2SW50
QnJhbmNoKCJqYSIsIDppbnQpCisgICAgd2hlbiAiYmlhZXEiLCAiYnBhZXEiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImphZSIsIDppbnQpCisgICAgd2hlbiAiYmliIiwgImJwYiIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6aW50KQorICAgIHdoZW4gImJpYmVxIiwgImJwYmVx
IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6aW50KQorICAgIHdoZW4gImJpZ3Qi
LCAiYnBndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamciLCA6aW50KQorICAgIHdoZW4g
ImJpZ3RlcSIsICJicGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnZSIsIDppbnQp
CisgICAgd2hlbiAiYmlsdCIsICJicGx0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIs
IDppbnQpCisgICAgd2hlbiAiYmlsdGVxIiwgImJwbHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamxlIiwgOmludCkKKyAgICB3aGVuICJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqZSIsIDpieXRlKQorICAgIHdoZW4gImJibmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqbmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmEiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImphIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImphZSIsIDpieXRlKQorICAgIHdoZW4gImJiYiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamIiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamJlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamciLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImpnZSIsIDpieXRlKQorICAgIHdoZW4gImJibHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImpsIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqbHRlcSIsIDpieXRlKQorICAgIHdoZW4gImJ0aW8iLCAiYnRwbyIKKyAgICAgIGhhbmRs
ZVg4NkJyYW5jaFRlc3QoImpvIiwgOmludCkKKyAgICB3aGVuICJidGlzIiwgImJ0cHMiCisgICAg
ICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDppbnQpCisgICAgd2hlbiAiYnRpeiIsICJidHB6
IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6aW50KQorICAgIHdoZW4gImJ0aW56
IiwgImJ0cG56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmludCkKKyAgICB3
aGVuICJidGJvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6Ynl0ZSkKKyAgICB3
aGVuICJidGJzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6Ynl0ZSkKKyAgICB3
aGVuICJidGJ6IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6Ynl0ZSkKKyAgICB3
aGVuICJidGJueiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDpieXRlKQorICAg
IHdoZW4gImptcCIKKyAgICAgICRhc20ucHV0cyAiam1wICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9w
ZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJhZGRpbyIsICJiYWRkcG8iCisgICAgICBoYW5kbGVY
ODZPcEJyYW5jaCgiYWRkbCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlzIiwgImJhZGRw
cyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpzIiwgOmludCkKKyAgICB3aGVu
ICJiYWRkaXoiLCAiYmFkZHB6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianoi
LCA6aW50KQorICAgIHdoZW4gImJhZGRpbnoiLCAiYmFkZHBueiIKKyAgICAgIGhhbmRsZVg4Nk9w
QnJhbmNoKCJhZGRsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlvIgorICAgICAgaGFu
ZGxlWDg2U3ViQnJhbmNoKCJqbyIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlzIgorICAgICAgaGFu
ZGxlWDg2U3ViQnJhbmNoKCJqcyIsIDppbnQpCisgICAgd2hlbiAiYnN1Yml6IgorICAgICAgaGFu
ZGxlWDg2U3ViQnJhbmNoKCJqeiIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlueiIKKyAgICAgIGhh
bmRsZVg4NlN1YkJyYW5jaCgiam56IiwgOmludCkKKyAgICB3aGVuICJibXVsaW8iCisgICAgICBo
YW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJtdWxpcyIK
KyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAi
Ym11bGl6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImp6IiwgOmludCkKKyAg
ICB3aGVuICJibXVsaW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpueiIs
IDppbnQpCisgICAgd2hlbiAiYm9yaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwg
ImpvIiwgOmludCkKKyAgICB3aGVuICJib3JpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJv
cmwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJvcml6IgorICAgICAgaGFuZGxlWDg2T3BCcmFu
Y2goIm9ybCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYm9yaW56IgorICAgICAgaGFuZGxlWDg2
T3BCcmFuY2goIm9ybCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJyZWFrIgorICAgICAgJGFz
bS5wdXRzICJpbnQgJDMiCisgICAgd2hlbiAiY2FsbCIKKyAgICAgICRhc20ucHV0cyAiY2FsbCAj
e29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJyZXQiCisgICAg
ICAkYXNtLnB1dHMgInJldCIKKyAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICBoYW5kbGVY
ODZJbnRDb21wYXJlU2V0KCJzZXRlIiwgOmludCkKKyAgICB3aGVuICJjaW5lcSIsICJjcG5lcSIK
KyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldG5lIiwgOmludCkKKyAgICB3aGVuICJj
aWEiLCAiY3BhIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YSIsIDppbnQpCisg
ICAgd2hlbiAiY2lhZXEiLCAiY3BhZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJz
ZXRhZSIsIDppbnQpCisgICAgd2hlbiAiY2liIiwgImNwYiIKKyAgICAgIGhhbmRsZVg4NkludENv
bXBhcmVTZXQoInNldGIiLCA6aW50KQorICAgIHdoZW4gImNpYmVxIiwgImNwYmVxIgorICAgICAg
aGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YmUiLCA6aW50KQorICAgIHdoZW4gImNpZ3QiLCAi
Y3BndCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGciLCA6aW50KQorICAgIHdo
ZW4gImNpZ3RlcSIsICJjcGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRn
ZSIsIDppbnQpCisgICAgd2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAgaGFuZGxlWDg2SW50Q29t
cGFyZVNldCgic2V0bCIsIDppbnQpCisgICAgd2hlbiAiY2lsdGVxIiwgImNwbHRlcSIKKyAgICAg
IGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGxlIiwgOmludCkKKyAgICB3aGVuICJ0aW8iCisg
ICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmludCkKKyAgICB3aGVuICJ0aXMiCisgICAg
ICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmludCkKKyAgICB3aGVuICJ0aXoiCisgICAgICBo
YW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmludCkKKyAgICB3aGVuICJ0aW56IgorICAgICAgaGFu
ZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6aW50KQorICAgIHdoZW4gInRibyIKKyAgICAgIGhhbmRs
ZVg4NlNldFRlc3QoInNldG8iLCA6Ynl0ZSkKKyAgICB3aGVuICJ0YnMiCisgICAgICBoYW5kbGVY
ODZTZXRUZXN0KCJzZXRzIiwgOmJ5dGUpCisgICAgd2hlbiAidGJ6IgorICAgICAgaGFuZGxlWDg2
U2V0VGVzdCgic2V0eiIsIDpieXRlKQorICAgIHdoZW4gInRibnoiCisgICAgICBoYW5kbGVYODZT
ZXRUZXN0KCJzZXRueiIsIDpieXRlKQorICAgIHdoZW4gInBlZWsiCisgICAgICAkYXNtLnB1dHMg
Im1vdmwgI3tvcGVyYW5kc1swXS52YWx1ZSAqIDR9KCVlc3ApLCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgIHdoZW4gInBva2UiCisgICAgICAkYXNtLnB1dHMgIm1vdmwgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS52YWx1ZSAqIDR9KCVl
c3ApIgorICAgIHdoZW4gImNkcWkiCisgICAgICAkYXNtLnB1dHMgImNkcSIKKyAgICB3aGVuICJp
ZGl2aSIKKyAgICAgICRhc20ucHV0cyAiaWRpdmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICB3aGVuICJmaWkyZCIKKyAgICAgICRhc20ucHV0cyAibW92ZCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
IgorICAgICAgJGFzbS5wdXRzICJtb3ZkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0s
ICV4bW03IgorICAgICAgJGFzbS5wdXRzICJwc2xscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5w
dXRzICJwb3IgJXhtbTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAg
d2hlbiAiZmQyaWkiCisgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRh
c20ucHV0cyAibW92c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTci
CisgICAgICAkYXNtLnB1dHMgInBzcmxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIm1v
dnNkICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJv
IgorICAgICAgJGFzbS5wdXRzICJqbyAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVu
ICJicyIKKyAgICAgICRhc20ucHV0cyAianMgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAg
d2hlbiAiYnoiCisgICAgICAkYXNtLnB1dHMgImp6ICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9Igor
ICAgIHdoZW4gImJueiIKKyAgICAgICRhc20ucHV0cyAiam56ICN7b3BlcmFuZHNbMF0uYXNtTGFi
ZWx9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQgb3Bjb2RlOiAje29wY29kZX0iCisgICAg
ZW5kCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVTcGVjaWFsaXphdGlvbktpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKyNkZWZpbmUg
Q29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIENvZGVT
cGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OworCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuaAkocmV2aXNpb24gMTA2Mjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZp
bmUgQ29tbW9uU2xvd1BhdGhzX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUg
IkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgi
CiAjaW5jbHVkZSAiSlNBcnJheS5oIgogCkBAIC00MSw2ICs0MiwzOCBAQCBuYW1lc3BhY2UgSlND
IHsKIAogbmFtZXNwYWNlIENvbW1vblNsb3dQYXRocyB7CiAKK0FMV0FZU19JTkxJTkUgRXhlY1N0
YXRlKiBhcml0eUNoZWNrRm9yKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJGaWxlKiByZWdpc3Rl
ckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBj
YWxsZWUgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBBU1NFUlQoIWNhbGxlZS0+
aXNIb3N0RnVuY3Rpb24oKSk7CisgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVl
LT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgaW50IGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoKTsKKworICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBj
YXNlIHNjZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgorICAg
IGlmICghcmVnaXN0ZXJGaWxlLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2Nr
LT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CisKKyAgICAvLyBUb28gZmV3IGFy
Z3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1p
c3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgorICAgIHNpemVfdCBkZWx0YSA9IG5ld0Nv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Cisg
ICAgUmVnaXN0ZXIqIHNyYyA9IGV4ZWMtPnJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyKiBkc3Qg
PSBleGVjLT5yZWdpc3RlcnMoKSArIGRlbHRhOworCisgICAgaW50IGk7CisgICAgaW50IGVuZCA9
IC1FeGVjU3RhdGU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAg
Zm9yIChpID0gLTE7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKKwor
ICAgIGVuZCAtPSBkZWx0YTsKKyAgICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRz
dFtpXSA9IGpzVW5kZWZpbmVkKCk7CisKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBFeGVjU3Rh
dGU6OmNyZWF0ZShkc3QpOworICAgIEFTU0VSVCgodm9pZCopbmV3RXhlYyA8PSByZWdpc3RlckZp
bGUtPmVuZCgpKTsKKyAgICByZXR1cm4gbmV3RXhlYzsKK30KKwogQUxXQVlTX0lOTElORSBib29s
IG9wSW5zdGFuY2VPZlNsb3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVl
IGJhc2VWYWwsIEpTVmFsdWUgcHJvdG8pCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0NlbGwoKSB8
fCAhYmFzZVZhbC5pc0NlbGwoKSB8fCAhcHJvdG8uaXNDZWxsKCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxMDYyOTUpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAj
aW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCisjaW5jbHVkZSAi
RXhlY3V0aW9uSGFybmVzcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVERyaXZl
ci5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgpAQCAtODQsNyArODUsNyBAQCBJbnRyaW5zaWMgTmF0
aXZlRXhlY3V0YWJsZTo6aW50cmluc2ljKCkgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGlj
IHZvaWQgamV0dGlzb25Db2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8
VD4mIGNvZGVCbG9jaykKIHsKLSAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgIT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdK
SVQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRl
cm5hdGl2ZSgpKTsKICAgICBPd25QdHI8VD4gY29kZUJsb2NrVG9KZXR0aXNvbiA9IGNvZGVCbG9j
ay5yZWxlYXNlKCk7CiAgICAgY29kZUJsb2NrID0gc3RhdGljX3BvaW50ZXJfY2FzdDxUPihjb2Rl
QmxvY2tUb0pldHRpc29uLT5yZWxlYXNlQWx0ZXJuYXRpdmUoKSk7CkBAIC0xNjcsOSArMTY4LDMw
IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXoKICAgICByZXR1cm4g
ZXJyb3I7CiB9CiAKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlh
dGUoZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2Rl
Ojpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOwor
fQorCitpbmxpbmUgY29uc3QgY2hhciogc2FtcGxpbmdEZXNjcmlwdGlvbihKSVRDb2RlOjpKSVRU
eXBlIGppdFR5cGUpCit7CisgICAgc3dpdGNoIChqaXRUeXBlKSB7CisgICAgY2FzZSBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rOgorICAgICAgICByZXR1cm4gIkludGVycHJldGVyIENvbXBpbGF0
aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6QmFzZWxpbmVKSVQ6CisgICAgICAgIHJl
dHVybiAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpE
RkdKSVQ6CisgICAgICAgIHJldHVybiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsK
KyAgICB9Cit9CisKIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4
ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpK
SVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0
VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9U
QUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNh
bXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFF
TkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTIxMCw3ICsyMzIsNyBA
QCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hCiAgICAgfQogCiAjaWYg
RU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRh
LCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICgh
cHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENv
ZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtMjk1
LDkgKzMxNywxNSBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpCiAg
ICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpqaXRDb21waWxl
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBp
bGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2Rl
Rm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0KTsKK30KKwogSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxl
SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUs
IEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGlu
Z1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBp
bGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxp
bmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAg
ICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtMzM2
LDcgKzM2NCw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGUKICAg
ICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUo
Kmdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlw
ZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKCpnbG9iYWxEYXRhLCBtX3Byb2dyYW1D
b2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAgICAgICByZXR1cm4gMDsK
ICNlbmRpZgogCkBAIC00MTIsNyArNDQwLDcgQEAgRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6YgogICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAg
IHJlc3VsdCA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4ocmVzdWx0LT5hbHRlcm5h
dGl2ZSgpKTsKICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRU
eXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc0Jh
c2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKQEAgLTQzOCw2ICs0NjYsMTggQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29t
cGlsZU9wdAogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6
OmppdENvbXBpbGVGb3JDYWxsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29s
IHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9j
b2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFy
aXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgRnVuY3Rpb25FeGVjdXRh
YmxlOjpqaXRDb21waWxlRm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sK
KyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFs
RGF0YSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9q
aXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6
OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9
CisKIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja1dpdGhC
eXRlY29kZUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgRnVuY3Rpb25D
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwpAQCAtNDgy
LDcgKzUyMiw3IEBAIFBhc3NPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+IEZ1bmN0aW9uRXgKIAog
SlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbChFeGVj
U3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklU
VHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5
cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFM
KSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1w
bGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5B
QkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC01MDQsNyArNTQ0LDcgQEAgSlNP
YmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUg
PSBtX2NvZGVCbG9ja0ZvckNhbGwtPnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUo
SklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9i
YWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2Rl
Rm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBpZiAo
IXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJs
b2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNo
ZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9yQ2FsbCkpCiAgICAgICAgIHJldHVy
biAwOwogI2VuZGlmCiAKQEAgLTUyNCw3ICs1NjQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVj
dXRhYmxlOjpjb21waWxlRm9yCiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBp
bGVGb3JDb25zdHJ1Y3RJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBz
Y29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5n
UmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAi
QmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCki
KTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9u
KGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0
VHlwZSk7CkBAIC01NDYsNyArNTg2LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+
c2hhcmVkU3ltYm9sVGFibGUoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21w
aWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tG
b3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0
V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFy
ZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JD
b25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0
aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENvZGVGb3JDb25zdHJ1Y3QpKQog
ICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxMDYyOTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKICNkZWZpbmUgRXhlY3V0YWJsZV9oCiAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgorI2lu
Y2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgi
CiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtMzksMTIg
KzQwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIERlYnVnZ2VyOwogICAgIGNsYXNz
IEV2YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7CisgICAgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAg
Y2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKICAgICBzdHJ1Y3QgRXhjZXB0aW9uSW5mbzsKICAgICAK
LSAgICBlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNv
bnN0cnVjdCB9OwogICAgIGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxhdGlvbiwg
T3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CiAKICAgICBpbmxpbmUgYm9vbCBpc0NhbGwoQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMzE5LDYgKzMyMCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIH07CiAKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC0z
MzgsNiArMzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQp
CiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAg
ICAgICB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBF
dmFsQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC0zODQsNiArMzg3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIDogcHVi
bGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxl
IEJhc2U7CiAKQEAgLTQxMSw2ICs0MTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAj
aWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGUoSlNHbG9i
YWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShKU0dsb2JhbERhdGEmKTsKICNlbmRp
ZgogCiAgICAgICAgIFByb2dyYW1Db2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkKQEAgLTQ1
Myw2ICs0NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0
YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJ
VDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJs
aWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC01MDgsNiAr
NTE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAg
ICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ2FsbChKU0dsb2JhbERhdGEmKTsKKyAg
ICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAg
ICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDYWxsKCkgY29uc3QKQEAgLTUzNSw2ICs1NDIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9p
ZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRhJik7CisgICAg
ICAgIHZvaWQgaml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmKTsKICNlbmRpZgog
CiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3QoKSBjb25zdApAQCAtNTgyLDYg
KzU5MCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBqZXR0aXNvbk9wdGlt
aXplZENvZGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvcihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgICAgICBqaXRDb21w
aWxlRm9yQ2FsbChnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAg
ICAgICAgICAgIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CisgICAgICAgIH0K
ICNlbmRpZgogICAgICAgICAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvcihDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRpb25IYXJuZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgRXhlY3V0aW9uSGFybmVzc19oCisjZGVmaW5lIEV4ZWN1dGlvbkhhcm5lc3NfaAorCisj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAi
SklURHJpdmVyLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KK2lubGluZSBib29sIHBy
ZXBhcmVGb3JFeGVjdXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJs
b2NrVHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBq
aXRUeXBlKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGlu
ZUNvZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwg
aW50ZXJwcmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRFbnRyeXBvaW50KGdsb2JhbERhdGEsIGNv
ZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShq
aXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVJZkFw
cHJvcHJpYXRlKGdsb2JhbERhdGEsIGNvZGVCbG9jaywgaml0Q29kZSwgaml0VHlwZSk7Cit9CisK
K2lubGluZSBib29sIHByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYg
aml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNo
YXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBp
ZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQg
b2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRGdW5j
dGlvbkVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwga2luZCwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0
eUNoZWNrKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVX
aXRoQXJpdHlDaGVjayk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbHNlCisgICAg
VU5VU0VEX1BBUkFNKGtpbmQpOworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKyAgICByZXR1cm4g
aml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGpp
dENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjaywgc3ltYm9sVGFibGUsIGppdFR5cGUpOworfQor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKKyNlbmRpZiAv
LyBFeGVjdXRpb25IYXJuZXNzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyAr
MTI0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJy
aWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSA9IGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFy
cmllcjxVbmtub3duPltyZWdpc3RlckFycmF5U2l6ZV0pOwogICAgICAgICBXcml0ZUJhcnJpZXI8
VW5rbm93bj4qIHJlZ2lzdGVycyA9IHJlZ2lzdGVyQXJyYXkuZ2V0KCkgKyByZWdpc3Rlck9mZnNl
dDsKLQorICAgICAgICAKICAgICAgICAgLy8gQ29weSBhbGwgYXJndW1lbnRzIHRoYXQgY2FuIGJl
IGNhcHR1cmVkIGJ5IG5hbWUgb3IgYnkgdGhlIGFyZ3VtZW50cyBvYmplY3QuCiAgICAgICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgbV9udW1DYXB0dXJlZEFyZ3M7ICsraSkgewogICAgICAgICAgICAg
aW50IGluZGV4ID0gQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChpKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEwNjI5NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgs
NiArMjgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5OworICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5
IDogcHVibGljIFdyaXRlQmFycmllcjxVbmtub3duPiB7CiAgICAgICAgIHR5cGVkZWYgV3JpdGVC
YXJyaWVyPFVua25vd24+IEJhc2U7CkBAIC0xMjIsNiArMTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgfTsKIAogICAgIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTA2Mjk1KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEw
IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNs
YXNzIFN0cnVjdHVyZTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xh
c3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OworICAg
IGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAg
RXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywKQEAgLTE2NCw2ICsxNjUsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2Jq
ZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYp
OwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAg
ICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAgIH07CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAx
MDYyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
RnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEpT
R2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFz
cyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgbmFtZXNwYWNl
IERGRyB7CkBAIC0xNDAsNiArMTQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRp
YyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZh
dGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAg
IAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5l
KCkgY29uc3Q7CiAKICAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNT
dGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMTA2Mjk1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw4IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEds
b2JhbERhdGFUeXAKICAgICAsIGtleXdvcmRzKGFkb3B0UHRyKG5ldyBLZXl3b3Jkcyh0aGlzKSkp
CiAgICAgLCBpbnRlcnByZXRlcigwKQogICAgICwgaGVhcCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAs
IGpzQXJyYXlDbGFzc0luZm8oJkpTQXJyYXk6OnNfaW5mbykKKyAgICAsIGpzRmluYWxPYmplY3RD
bGFzc0luZm8oJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAg
ICAsIHNpemVPZkxhc3RTY3JhdGNoQnVmZmVyKDApCiAjZW5kaWYKQEAgLTIxNiw3ICsyMTgsNyBA
QCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgaml0U3R1YnMg
PSBhZG9wdFB0cihuZXcgSklUVGh1bmtzKHRoaXMpKTsKICNlbmRpZgogCi0gICAgaW50ZXJwcmV0
ZXItPmluaXRpYWxpemUodGhpcy0+Y2FuVXNlSklUKCkpOworICAgIGludGVycHJldGVyLT5pbml0
aWFsaXplKCZsbGludERhdGEsIHRoaXMtPmNhblVzZUpJVCgpKTsKIAogICAgIGhlYXAubm90aWZ5
SXNTYWZlVG9Db2xsZWN0KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gMTA2Mjk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICsz
MCwxNiBAQAogI2RlZmluZSBKU0dsb2JhbERhdGFfaAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNj
ZW5kZW50YWxGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRh
dGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2lu
Y2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJTdHJvbmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMu
aCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRl
ICJMTEludERhdGEuaCIKICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNt
YWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3Iu
aCIKICNpbmNsdWRlICJUaW1lb3V0Q2hlY2tlci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIK
QEAgLTY1LDYgKzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAg
Y2xhc3MgUGFyc2VyQXJlbmE7CiAgICAgY2xhc3MgUmVnRXhwQ2FjaGU7CkBAIC0yNDEsNiArMjQz
LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNW
YWx1ZSBleGNlcHRpb247CisKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5
Q2xhc3NJbmZvOworICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RD
bGFzc0luZm87CisKKyAgICAgICAgTExJbnQ6OkRhdGEgbGxpbnREYXRhOworCiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAg
ICAgSlNWYWx1ZSBob3N0Q2FsbFJldHVyblZhbHVlOwpAQCAtMzQ2LDYgKzM1NCw4IEBAIG5hbWVz
cGFjZSBKU0MgewogI3VuZGVmIHJlZ2lzdGVyVHlwZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2
YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAg
ICAKICAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUs
IEhlYXBTaXplKTsKICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNl
SW50ZXJuYWwoKTsKICAgICAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lv
biAxMDYyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBj
bGFzcyBHbG9iYWxDb2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVC
bG9jazsKICAgICBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKQEAgLTMzNSw2ICszMzYsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRTdGF0aWNH
bG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyosIGludCBjb3VudCk7CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAg
ICAgICAgLy8gRklYTUU6IEZvbGQgcmVzZXQgaW50byBpbml0LgogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CiAgICAgICAgIHZvaWQgcmVz
ZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMDYyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7
CiAgICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlw
dG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwpAQCAtMjcwLDYgKzI3MSw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUq
LCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7CiAKICAgICBwcml2YXRlOgorICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAg
Ly8gTm9ib2R5IHNob3VsZCBldmVyIGFzayBhbnkgb2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0
aGluZyBhbHJlYWR5IGtub3duIHRvIGJlIGEgSlNPYmplY3QuCiAgICAgICAgIHVzaW5nIEpTQ2Vs
bDo6aXNBUElWYWx1ZVdyYXBwZXI7CiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0
ZXI7CkBAIC0zODIsNiArMzg1LDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5s
aW5lU3RvcgogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJp
dmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAg
ICAgCiAgICAgICAgIGV4cGxpY2l0IEpTRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFs
RGF0YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmgJKHJldmlzaW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNP
YmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvciA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xh
c3MgSklUOwpAQCAtOTYsNiArOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAgICAgCiAgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJv
cGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNo
ZWFibGVTbG90KTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhY2hlZFN0
cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAko
cmV2aXNpb24gMTA2Mjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJp
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBKU1N0cmluZzsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAK
ICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKICAgICBKU1N0cmlu
ZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsKQEAgLTI0MCw2ICsyNDEsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90
VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
cmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVT
bG93Q2FzZTgoTENoYXIqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNl
KFVDaGFyKikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlSW5mby5oCShyZXZpc2lvbiAxMDYyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNv
cmUgdXNlcyBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0
ZWN0YWJsZS4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNl
ID0gMSA8PCAxOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5j
ZSA9IDEgPDwgMjsKQEAgLTg3LDYgKzg5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0K
IAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CisgICAgICAgIAogICAgICAgICBib29sIGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykg
Y29uc3QgeyBBU1NFUlQoZmxhZyA8PSAoMSA8PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsg
fQogICAgICAgICBib29sIGlzU2V0T25GbGFnczIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NF
UlQoZmxhZyA+PSAoMSA8PCA4KSk7IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCShyZXZpc2lv
biAxMDYyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTE2LDEwICsxMTYsOSBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3lu
dGhlc2l6ZVByb3RvdHlwZShFCiAgICAgcmV0dXJuIEpTTm90QW5PYmplY3Q6OmNyZWF0ZShleGVj
KTsKIH0KIAotI2lmbmRlZiBOREVCVUcKIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIHsK
LSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSA2NDsKKyAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IHNpemUgPSAxMjg7CiAgICAgc3RhdGljIGNoYXIgZGVzY3JpcHRpb25bc2l6ZV07CiAKICAg
ICBpZiAoISp0aGlzKQpAQCAtMTI4LDE0ICsxMjcsMTQgQEAgY2hhciogSlNWYWx1ZTo6ZGVzY3Jp
cHRpb24oKQogICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkludDMyOiAlZCIs
IGFzSW50MzIoKSk7CiAgICAgZWxzZSBpZiAoaXNEb3VibGUoKSkgewogI2lmIFVTRShKU1ZBTFVF
NjQpCi0gICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICVs
eCIsIGFzRG91YmxlKCksIHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIoYXNEb3VibGUoKSkpOwor
ICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWx4LCAlbGYiLCBy
ZWludGVycHJldERvdWJsZVRvSW50cHRyKGFzRG91YmxlKCkpLCBhc0RvdWJsZSgpKTsKICNlbHNl
CiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIGRvdWJsZSBhc0RvdWJsZTsKICAgICAgICAg
ICAgIHVpbnQzMl90IGFzVHdvSW50MzJzWzJdOwogICAgICAgICB9IHU7CiAgICAgICAgIHUuYXNE
b3VibGUgPSBhc0RvdWJsZSgpOwotICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwg
IkRvdWJsZTogJWxmLCAlMDh4OiUwOHgiLCBhc0RvdWJsZSgpLCB1LmFzVHdvSW50MzJzWzFdLCB1
LmFzVHdvSW50MzJzWzBdKTsKKyAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJE
b3VibGU6ICUwOHg6JTA4eCwgJWxmIiwgdS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1sw
XSwgYXNEb3VibGUoKSk7CiAjZW5kaWYKICAgICB9IGVsc2UgaWYgKGlzQ2VsbCgpKQogICAgICAg
ICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkNlbGw6ICVwIiwgYXNDZWxsKCkpOwpAQCAt
MTUyLDcgKzE1MSw2IEBAIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIAogICAgIHJldHVy
biBkZXNjcmlwdGlvbjsKIH0KLSNlbmRpZgogCiAvLyBUaGlzIGluIHRoZSBUb0ludDMyIG9wZXJh
dGlvbiBpcyBkZWZpbmVkIGluIHNlY3Rpb24gOS41IG9mIHRoZSBFQ01BLTI2MiBzcGVjLgogLy8g
Tm90ZSB0aGF0IHRoaXMgb3BlcmF0aW9uIGlzIGlkZW50aWNhbCB0byBUb1VJbnQzMiBvdGhlciB0
aGFuIHRvIGludGVycHJldGF0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYWx1ZS5oCShyZXZpc2lvbiAxMDYyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw5ICsyMzIsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgSlNDZWxsKiBhc0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAg
ICAgIGNoYXIqIGRlc2NyaXB0aW9uKCk7Ci0jZW5kaWYKIAogICAgIHByaXZhdGU6CiAgICAgICAg
IHRlbXBsYXRlIDxjbGFzcyBUPiBKU1ZhbHVlKFdyaXRlQmFycmllckJhc2U8VD4pOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAko
cmV2aXNpb24gMTA2Mjk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJp
YWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTIgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
UmVnaXN0ZXI7CiAKICAgICBjbGFzcyBKU1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVm
IEpTTm9uRmluYWxPYmplY3QgQmFzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAxMDYyOTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTAgQEAg
dW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saQogCiB1bnNpZ25lZCBtYXhp
bXVtSW5saW5pbmdEZXB0aDsKIAoraW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRB
ZnRlcldhcm1VcDsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRp
bWVTb29uOworaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBpbnQz
Ml90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBpbnQzMl90
IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKQEAgLTEz
Nyw2ICsxNDEsMTAgQEAgdm9pZCBpbml0aWFsaXplT3B0aW9ucygpCiAgICAgCiAgICAgU0VUKG1h
eGltdW1JbmxpbmluZ0RlcHRoLCA1KTsKIAorICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVG
b3JKSVRBZnRlcldhcm1VcCwgICAgIC0xMDApOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JEb250SklUQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1p
bigpKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbiwgICAgICAgICAg
ICAtMTAwKTsKKwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVy
V2FybVVwLCAgICAgLTEwMDApOwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZUFmdGVyTG9uZ1dhcm1VcCwgLTUwMDApOwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90
Pjo6bWluKCkpOwpAQCAtMTg1LDYgKzE5Myw4IEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQog
ICAgIGlmIChjcHVzVG9Vc2UgPCAxKQogICAgICAgICBjcHVzVG9Vc2UgPSAxOwogICAgIAorICAg
IGNwdXNUb1VzZSA9IDE7CisgICAgCiAgICAgU0VUKG51bWJlck9mR0NNYXJrZXJzLCBjcHVzVG9V
c2UpOwogCiAgICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFu
eXRpbWVTb29uIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2Fy
bVVwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlz
aW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAko
d29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTAgQEAgZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1G
dW5jdGlvbkZvckNvbnN0cgogCiBleHRlcm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7
IC8vIERlcHRoIG9mIGlubGluZSBzdGFjaywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxl
dmVsLCBldGMuCiAKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFm
dGVyV2FybVVwOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJ
VEFueXRpbWVTb29uOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklU
U29vbjsKKwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVB
ZnRlcldhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJMb25nV2FybVVwOwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY29wZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiAxMDYyOTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNz
IEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3Mg
U2xvdFZpc2l0b3I7CiAgICAgCkBAIC05MSw2ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAg
cHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAg
ICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92
ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxMDYyOTUpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MjIsNyArMzIyLDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAog
ICAgICAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CiAg
ICAgICAgIHJldHVybiB0cmFuc2l0aW9uOwogICAgIH0KLQorICAgIAogICAgIFN0cnVjdHVyZSog
dHJhbnNpdGlvbiA9IGNyZWF0ZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgdHJhbnNp
dGlvbi0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5zZXRNYXlCZU51bGwoZ2xvYmFsRGF0YSwgdHJh
bnNpdGlvbiwgc3RydWN0dXJlLT5tX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMDYy
OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAg
ICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47
CkBAIC0xOTYsNiArMTk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19F
WFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKik7
CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmKTsKICAgICAgICAgU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAxMDYyOTUpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGNsYXNzIFN0
cnVjdHVyZUNoYWluIDogcHVibGljIEpTQ2VsbCB7CkBAIC03NCw2ICs3NSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgU3RydWN0dXJlQ2hhaW4o
SlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+ID4g
bV92ZWN0b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0lubGluZUFTTS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSW5saW5lQVNNLmgJKHJldmlz
aW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSW5saW5lQVNNLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcwLDQgKzcwLDExIEBACiAjZGVmaW5lIEhJREVfU1lNQk9MKG5hbWUp
CiAjZW5kaWYKIAorLy8gRklYTUU6IGZpZ3VyZSBvdXQgaG93IHRoaXMgd29ya3Mgb24gYWxsIHRo
ZSBwbGF0Zm9ybXMuIEkga25vdyB0aGF0CisvLyBvbiBMaW51eCwgdGhlIHByZWZlcnJlZCBmb3Jt
IGlzICIuTHN0dWZmIiBhcyBvcHBvc2VkIHRvICJMc3R1ZmYiLgorLy8gRG9uJ3Qga25vdyBhYm91
dCBhbnkgb2YgdGhlIG90aGVycy4KKyNpZiBQTEFURk9STShNQUMpCisjZGVmaW5lIExPQ0FMX0xB
QkVMX1NUUklORyhuYW1lKSAiTCIgI25hbWUKKyNlbmRpZgorCiAjZW5kaWYgLy8gSW5saW5lQVNN
X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEwNjI5
NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5
KQpAQCAtOTIzLDYgKzkyMywxOCBAQAogI2RlZmluZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCisv
KiBPbiBzb21lIG9mIHRoZSBwbGF0Zm9ybXMgd2hlcmUgd2UgaGF2ZSBhIEpJVCwgd2Ugd2FudCB0
byBhbHNvIGhhdmUgdGhlIAorICAgbG93LWxldmVsIGludGVycHJldGVyLiAqLworI2lmICFkZWZp
bmVkKEVOQUJMRV9MTElOVCkgJiYgRU5BQkxFKEpJVCkgJiYgUExBVEZPUk0oTUFDKSAmJiBVU0Uo
SlNWQUxVRTMyXzY0KQorI2RlZmluZSBFTkFCTEVfTExJTlQgMQorI2VuZGlmCisKKy8qIElmIHdl
IGhhdmUgTExJbnQgZW5hYmxlZCBhbmQgdGhlIEpJVCBlbmFibGVkLCB3ZSBhbHNvIGVuYWJsZSBP
U1JpbmcgZnJvbQorICAgTExJbnQgdG8gdGhlIEpJVC4gKi8KKyNpZiAhZGVmaW5lZChFTkFCTEVf
TExJTlRfT1NSX1RPX0pJVCkgJiYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKExMSU5UKQorI2RlZmlu
ZSBFTkFCTEVfTExJTlRfT1NSX1RPX0pJVCAxCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJM
RV9ERkdfSklUKSAmJiBFTkFCTEUoSklUKQogLyogRW5hYmxlIHRoZSBERkcgSklUIG9uIFg4NiBh
bmQgWDg2XzY0LiAgT25seSB0ZXN0ZWQgb24gTWFjIGFuZCBHTlUvTGludXguICovCiAjaWYgKENQ
VShYODYpIHx8IENQVShYODZfNjQpKSAmJiAoUExBVEZPUk0oTUFDKSB8fCBPUyhMSU5VWCkpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJ
KHJldmlzaW9uIDEwNjI5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxM
aW5rZWRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDggQEAgcHVibGljOgogCiAg
ICAgaXRlcmF0b3IgYmVnaW4oKTsKICAgICBpdGVyYXRvciBlbmQoKTsKKyAgICAKKyAgICBib29s
IGlzRW1wdHkoKSB7IHJldHVybiBiZWdpbigpID09IGVuZCgpOyB9CiAKIHByaXZhdGU6CiAgICAg
UmF3Tm9kZSBtX2hlYWRTZW50aW5lbDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gMTA2Mjk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMs
NyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpCiAvLyBMYW5kaW5n
IHRoZSBmaWxlIG1vdmVzIGluIG9uZSBwYXRjaCwgd2lsbCBmb2xsb3cgb24gd2l0aCBwYXRjaGVz
IHRvIGNoYW5nZSB0aGUgbmFtZXNwYWNlcy4KIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IElkZW50
aWZpZXJDU3RyaW5nVHJhbnNsYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSWRlbnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9y
Owogc3RydWN0IElkZW50aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5zbGF0b3I7CiB9CkBAIC03Miw3
ICs3Myw4IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpTdWJz
dHJpbmdUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZlclRyYW5z
bGF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7Ci0KKyAgICBmcmllbmQg
Y2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiBwcml2YXRlOgogICAgIGVu
dW0gQnVmZmVyT3duZXJzaGlwIHsKICAgICAgICAgQnVmZmVySW50ZXJuYWwsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMDYyOTUpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGlu
Y2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3JpcHRDb3JlLgorICAgICAgICAKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8gYmVoYXZpb3IgY2hhbmdlZC4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAxLTMwICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICAhbV9pbnNpZGVSZWdpb25QYWludCBhc3NlcnRpb24gaW4g
UmVuZGVyUmVnaW9uLmNwcCBpcyBpbnZhbGlkCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMTA2Mjk1KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTc0LDYgKzc0LDcgQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIKKyAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjI5
NSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTItMDEtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAg
ICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDaGFuZ2VkIEVGTCdzIGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9y
eSBpbiBKYXZhU2NyaXB0Q29yZS4KKyAgICAgICAgCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisKIDIwMTItMDEtMTEgIEphY2t5IEppYW5nICA8emhhamlhbmdAcmltLmNvbT4KIAogICAgICAg
ICBbQmxhY2tCZXJyeV0gQVNTRVJUIGZhaWx1cmUgaW4gQmFja2luZ1N0b3JlUHJpdmF0ZTo6Ymxp
dFZpc2libGVDb250ZW50cygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNjI5
NSkKKysrIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDYgKzQ0LDcgQEAgU0VUKFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVy
cHJldGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L3J1bnRpbWUiCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDYyOTUpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGlu
Y2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3JpcHRDb3JlLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAxLTMwICBPamFuIFZhZmFp
ICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUGFyc2luZyB0ZXN0X2V4cGVjYXRpb25z
LnR4dCArIFNraXBwZWQgbGlzdHMgdGFrZXMgdG9vIGxvbmcKSW5kZXg6IFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVy
VHJlZS9lZmwvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNjI5NSkKKysrIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjgsMTAgKzY4
LDEyIEBAIFNFVChEdW1wUmVuZGVyVHJlZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0FQSQogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9hc3NlbWJsZXIKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0
ZWNvZGUKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGZnCiAgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2hlYXAKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0CisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50
CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vd3RmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124646</attachid>
            <date>2012-01-30 18:07:50 -0800</date>
            <delta_ts>2012-01-31 19:28:44 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>triple_tier_81.diff</filename>
            <type>text/plain</type>
            <size>481789</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2Mjk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwMCBA
QAorMjAxMi0wMS0zMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi52c3Byb3BzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGFyZ2V0LnByaToKKyAgICAgICAgKiBhc3NlbWJsZXIv
TGlua0J1ZmZlci5oOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDog
QWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Omlz
U2V0KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAg
IChDYWxsTGlua1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmVzY2FwZVF1b3Rlcyk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxv
Y2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWlu
Z0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RXZh
bENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6
amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1w
bCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6dXNlc09wY29kZSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29k
ZUJsb2NrLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAg
KCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YmFzZWxpbmVWZXJzaW9uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpsaW5rSW5jb21pbmdDYWxsKToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0Q29tcGls
ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmFkZEdsb2JhbFJlc29sdmVJbmZvKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MpOgorICAgICAgICAoSlNDOjpDb2Rl
QmxvY2s6OnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldCk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmNvdWxkVGFrZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjps
aWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxp
a2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlr
ZWx5VG9UYWtlQW55U2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZEZyZXF1
ZW50RXhpdFNpdGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmRvbnRKSVRBbnl0aW1lU29v
bik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0QWZ0ZXJXYXJtVXApOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6OmppdFNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxsaW50
RXhlY3V0ZUNvdW50ZXIpOgorICAgICAgICAoUHJvZ3JhbUNvZGVCbG9jayk6CisgICAgICAgIChF
dmFsQ29kZUJsb2NrKToKKyAgICAgICAgKEZ1bmN0aW9uQ29kZUJsb2NrKToKKyAgICAgICAgKiBi
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9HZXRCeUlkU3RhdHVzLmg6
CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OkdldEJ5SWRTdGF0dXMpOgorICAgICAgICAo
SlNDOjpHZXRCeUlkU3RhdHVzOjp3YXNTZWVuSW5KSVQpOgorICAgICAgICAoR2V0QnlJZFN0YXR1
cyk6CisgICAgICAgICogYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6Okluc3RydWN0aW9uOjpJbnN0cnVjdGlvbik6CisgICAgICAgIChJbnN0cnVj
dGlvbik6CisgICAgICAgICgpOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZv
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0lu
Zm86OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKExMSW50Q2FsbExpbmtJbmZvKToKKyAg
ICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6CisgICAg
ICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChKU0M6OkxM
SW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtTdGF0dXM6OmNvbXB1
dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKCk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHA6CisgICAgICAg
IChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAoUHV0QnlJZFN0YXR1cyk6CisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoVGhpcyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0
UHV0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6Cisg
ICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaCk6CisgICAgICAgICogZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Z2V0
UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RGR09TUkV4aXRD
b21waWxlci5jcHA6CisgICAgICAgICgpOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKCk6CisgICAgICAgICogaGVhcC9BbGxvY2F0aW9uU3BhY2UuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChBbGxvY2F0aW9uU3BhY2UpOgorICAgICAgICAoKToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAg
ICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAo
SGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAoSlNDOjp2aXNp
dENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFt
ZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJy
ZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAg
IChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnBy
ZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZy
YW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6Cisg
ICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoSW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6Z2V0T3Bjb2RlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmls
ZSk6CisgICAgICAgICogaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKToKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKEpTQyk6CisgICAgICAgICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJp
dmF0ZUNvbXBpbGVNYWluUGFzcyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVT
bG93Q2FzZXMpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAg
KiBqaXQvSklUQ29kZS5oOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpJVENvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2Rl
Ojppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAg
ICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToK
KyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93
KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RV
Ql9GVU5DVElPTik6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJ
VC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1v
bi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChEYXRhKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50
RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRF
dmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2lu
dCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBv
aW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxl
cik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9u
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpM
TEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQv
TExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50
X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChK
U0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OmVudHJ5T1NSKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJlc29sdmVHbG9iYWwpOgorICAgICAg
ICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9z
dENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRk
ZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xM
SW50T2ZmbGluZUFzbUNvbmZpZy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludE9m
ZnNldHNFeHRyYWN0b3IpOgorICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDog
QWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyk6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3Ry
dWN0RW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZv
ckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlND
OjpMTEludDo6ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtz
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBs
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuaDogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9hcm12Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20u
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRy
YWN0b3JfY29uc3RhbnRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb3B0LnJiOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtL3BhcnNlci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9yZWdp
c3RlcnMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2VsZl9oYXNoLnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3NldHRpbmdzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBv
ZmZsaW5lYXNtL3RyYW5zZm9ybS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYu
cmI6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAqIHJ1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVj
a0Zvcik6CisgICAgICAgIChDb21tb25TbG93UGF0aHMpOgorICAgICAgICAoSlNDOjpDb21tb25T
bG93UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3cpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJs
ZS5jcHA6CisgICAgICAgIChKU0M6OmpldHRpc29uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6
RXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6c2FtcGxpbmdEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpj
b21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29t
cGlsZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9y
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVj
dCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRl
cm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0
cnVjdEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAg
KEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAoRXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAo
UHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAg
ICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpwcmVwYXJlRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1bmN0
aW9uRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAg
ICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnRlYXJPZmYpOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
cnJheS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQXJyYXkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoKToKKyAgICAgICAgKEpT
Q2VsbCk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbERhdGEuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0dsb2Jh
bERhdGEpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbERhdGE6OnNjcmF0Y2hCdWZmZXJGb3JTaXpl
KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAoSlNPYmplY3QpOgorICAgICAg
ICAoSlNGaW5hbE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcik6
CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAg
KEpTU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChUeXBlSW5mbyk6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmNwcDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OmRlc2NyaXB0aW9uKToKKyAg
ICAgICAgKiBydW50aW1lL0pTVmFsdWUuaDoKKyAgICAgICAgKEpTVmFsdWUpOgorICAgICAgICAo
KToKKyAgICAgICAgKiBydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaDoKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU1ZhcmlhYmxlT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMu
Y3BwOgorICAgICAgICAoT3B0aW9ucyk6CisgICAgICAgIChKU0M6Ok9wdGlvbnM6OmluaXRpYWxp
emVPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKKyAgICAgICAgKE9wdGlv
bnMpOgorICAgICAgICAqIHJ1bnRpbWUvU2NvcGVDaGFpbi5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKFNjb3BlQ2hhaW5Ob2RlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5oOgor
ICAgICAgICAoSlNDKToKKyAgICAgICAgKFN0cnVjdHVyZSk6CisgICAgICAgICogcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFN0cnVjdHVyZUNoYWlu
KToKKyAgICAgICAgKiB3dGYvSW5saW5lQVNNLmg6CisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6
CisgICAgICAgICogd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oOgorICAgICAgICAoU2VudGluZWxM
aW5rZWRMaXN0KToKKyAgICAgICAgKFdURjo6U2VudGluZWxMaW5rZWRMaXN0Ojppc0VtcHR5KToK
KyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdJbXBsLmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoU3RyaW5nSW1wbCk6CisgICAgICAgICgpOgorCiAyMDEyLTAxLTMwICBPbGl2ZXIgSHVudCAg
PG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgVW5leHBlY3RlZCBzeW50YXggZXJyb3IKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNjI5NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTEsNiArMTEsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIKKyAgICAi
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
cGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAgICAgIiR7SkFW
QVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpAQCAtOTUsNiArOTYsNyBAQCBTRVQoSmF2YVNjcmlw
dENvcmVfU09VUkNFUwogICAgIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5jcHAKIAogICAgIGpp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorICAgIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNw
cAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCiAgICAgaml0L0pJVEFyaXRobWV0aWMu
Y3BwCiAgICAgaml0L0pJVENhbGwzMl82NC5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUuYW0JKHJldmlzaW9uIDEwNjI5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBqYXZhc2NyaXB0
Y29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0IFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0IFwKKwktSSQoc3JjZGlyKS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxl
ciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUgXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEwNjI5
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5n
IGNvcHkpCkBAIC04MSw2ICs4MSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuY3BwIFwKQEAgLTEwMiw2ICsxMDMsNyBAQCBqYXZhc2NyaXB0Y29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24u
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5jcHAgXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmggXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9MaW5lSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5oIFwKQEAgLTI3Nyw2ICsyNzksOCBAQCBqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NvbXBhY3RK
SVRDb2RlTWFwLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9j
YXRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRv
ci5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3Bw
IFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgXApAQCAtMzAwLDYgKzMwNCw3IEBAIGphdmFz
Y3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lh
bGl6ZWRUaHVua0pJVC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJh
dG9ycy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL29zLXdpbjMyL3N0ZGJvb2wuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L29zLXdpbjMyL3N0ZGludC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaCBcCkBAIC0zNTAsNiArMzU1LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuY3BwIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9DbGFzc0luZm8uaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29kZVNwZWNpYWxpemF0aW9uS2luZC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25JZGVudGlmaWVycy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oIFwKQEAgLTM3OCw2ICszODQsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQkocmV2aXNpb24gMTA2Mjk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQkod29ya2luZyBjb3B5KQpAQCAtMjAs
NiArMjAsNyBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL2RlYnVnZ2VyIFwK
ICAgICAkJFNPVVJDRV9ESVIvaW50ZXJwcmV0ZXIgXAogICAgICQkU09VUkNFX0RJUi9qaXQgXAor
ICAgICQkU09VUkNFX0RJUi9sbGludCBcCiAgICAgJCRTT1VSQ0VfRElSL3BhcnNlciBcCiAgICAg
JCRTT1VSQ0VfRElSL3Byb2ZpbGVyIFwKICAgICAkJFNPVVJDRV9ESVIvcnVudGltZSBcCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTA2Mjk3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsNyBA
QCBTT1VSQ0VTICs9IFwKICAgICBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwIFwKICAgICBq
aXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCBcCiAgICAgaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3IuY3BwIFwKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgXAogICAg
IGppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAgICAgaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAg
XAogICAgIGppdC9KSVRDYWxsLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24gMTA2Mjk3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3NTgsNiArMTc1
OCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxqaXRcSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGppdFxKSVQuY3BwIgogCQkJCT4KIAkJCTwv
RmlsZT4KQEAgLTE4NDMsNiArMTg0NywxNCBAQAogCQkJPC9GaWxlPgogCQk8L0ZpbHRlcj4KIAkJ
PEZpbHRlcgorCQkJTmFtZT0ibGxpbnQiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5cLi5cbGxpbnRcTExJbnREYXRhLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRl
cj4KKwkJPEZpbHRlcgogCQkJTmFtZT0iaW50ZXJwcmV0ZXIiCiAJCQk+CiAJCQk8RmlsZQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52c3Byb3BzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmVDb21tb24udnNwcm9wcwkocmV2aXNpb24gMTA2Mjk3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZUNvbW1vbi52c3Byb3BzCSh3b3JraW5nIGNvcHkpCkBAIC02LDcgKzYsNyBAQAogCT4KIAk8
VG9vbAogCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVj
dG9yaWVzPSImcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXEphdmFTY3JpcHRDb3Jl
XERlcml2ZWRTb3VyY2VzXCZxdW90OzsuLi8uLi87Li4vLi4vQVBJLzsuLi8uLi9wYXJzZXIvOy4u
Ly4uL2J5dGVjb21waWxlci87Li4vLi4vZGZnLzsuLi8uLi9qaXQvOy4uLy4uL3J1bnRpbWUvOy4u
Ly4uL3Rvb2xzLzsuLi8uLi9ieXRlY29kZS87Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87
Li4vLi4vcHJvZmlsZXI7Li4vLi4vYXNzZW1ibGVyLzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vaGVh
cC87JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJL
aXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
aW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNs
dWRlXHB0aHJlYWRzJnF1b3Q7IgorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVv
dDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3Vy
Y2VzXCZxdW90OzsuLi8uLi87Li4vLi4vQVBJLzsuLi8uLi9wYXJzZXIvOy4uLy4uL2J5dGVjb21w
aWxlci87Li4vLi4vZGZnLzsuLi8uLi9qaXQvOy4uLy4uL2xsaW50LzsuLi8uLi9ydW50aW1lLzsu
Li8uLi90b29scy87Li4vLi4vYnl0ZWNvZGUvOy4uLy4uL2ludGVycHJldGVyLzsuLi8uLi93dGYv
Oy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fzc2VtYmxlci87Li4vLi4vZGVidWdnZXIvOy4uLy4uL2hl
YXAvOyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2Vi
S2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5j
bHVkZVxwdGhyZWFkcyZxdW90OyIKIAkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9fU1REX0Mi
CiAJCUZvcmNlZEluY2x1ZGVGaWxlcz0iSUNVVmVyc2lvbi5oIgogCS8+CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL2NvcHkt
ZmlsZXMuY21kCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQJKHJldmlzaW9uIDEwNjI5
NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNj
cmlwdENvcmUvY29weS1maWxlcy5jbWQJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAg
Zm9yICUlZCBpbiAoCiAgICAgZGVidWdnZXIKICAgICBpbnRlcnByZXRlcgogICAgIGppdAorICAg
IGxsaW50CiAgICAgcGFyc2VyCiAgICAgcHJvZmlsZXIKICAgICBydW50aW1lCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA2Mjk3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTcsNiArNywxNSBAQAogCW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFn
Z3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCisJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBM
TEludCBPZmZzZXRzICovID0geworCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OworCQkJYnVp
bGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIg
Ki87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyog
R2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAorCQkJKTsKKwkJCW5hbWUgPSAiTExJbnQgT2Zm
c2V0cyI7CisJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOworCQl9OwogCQk2NUZC
M0Y2NjA5RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0g
UEJYQWdncmVnYXRlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDY1RkIzRjc3
MDlEMTFFQkQwMEY0OURFQiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3Jl
Z2F0ZVRhcmdldCAiRGVyaXZlZCBTb3VyY2VzIiAqLzsKQEAgLTE0LDYgKzIzLDkgQEAKIAkJCQk2
NUZCM0Y2NTA5RDExRTkxMDBGNDlERUIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAog
CQkJCTVEMzVERUUxMEM3QzE0MEIwMDg2NDhCMiAvKiBHZW5lcmF0ZSBEVHJhY2UgaGVhZGVyICov
LAogCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUy
NzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CiAJCQluYW1lID0gIkRlcml2ZWQg
U291cmNlcyI7CiAJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQl9OwpAQCAt
NDgsNiArNjAsMTAgQEAKIAkJMEJBQzk0QTAxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3Ry
aWN0aW9uVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlm
aWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEJDRDgzNTcxNDg1ODQ1MjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJDRDgzNTQxNDg1ODQxMjAwRUEy
MDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCRjI4
QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUEx
NEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8q
IExMSW50RW50cnlwb2ludHMuY3BwICovOyB9OworCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYg
LyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBC
ODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8q
IExMSW50VGh1bmtzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExM
SW50VGh1bmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBNzE0QkNGNTA3MDA4
ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0E5MTRCQ0Y1
NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZv
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYw
QjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0FBMTRCQ0Y1QjkwMDg4
NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU4LDkgKzc0LDEzIEBACiAJCTBGMEI4M0I1MTRCQ0Y4
NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRo
b2RDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I2
MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0
RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8q
IENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8q
IExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE1
RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0Qg
LyogQ29tbW9uU2xvd1BhdGhzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYxNkQ3MjYxNDJDMzlDMDAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE2RDcyNDE0
MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLzsgfTsKIAkJMEYyMUMyNjgxNEJFNUY2
ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdD
MTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyog
RXhlY3V0aW9uSGFybmVzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdGMTRC
RUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyog
Qnl0ZWNvZGVDb252ZW50aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNl
SGFydmVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTZG
MTQ3MzhGMzEwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZH
Q29kZUJsb2Nrcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMkM1NTcwMTQ3MzhGMzUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZEMTQ3MzhG
MkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLzsgfTsKQEAgLTcxLDYgKzkxLDE5IEBA
CiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUw
MDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhj
ZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MzE0QkE1NzMxMDBC
RkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9u
cy5jcHAgKi87IH07CisJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlv
bnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4
MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUy
NzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3Bw
ICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLXVudXNlZC1wYXJhbWV0ZXIi
OyB9OyB9OworCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMDE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0
aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJ
MEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIg
LyogTExJbnRDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29u
ZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2
ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0MxNEJCQjE3
QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExv
d0xldmVsSW50ZXJwcmV0ZXIuY3BwICovOyB9OworCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIg
LyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENFMTRCQkIzRDEwMEJGRTI3
MiAvKiBMTEludERhdGEuY3BwICovOyB9OworCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyog
TExJbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDQxNEJCRDI0OTAwQkZF
MjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxs
UmV0dXJuVmFsdWUuY3BwICovOyB9OworCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9z
dENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU1
RjBGNDE0RDEwNjM5MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1RjBGMTE0RDEwNjM2MDBBQzc2NDkgLyog
QWJzdHJhY3RQQy5jcHAgKi87IH07CiAJCTBGNTVGMEY1MTREMTA2M0MwMEFDNzY0OSAvKiBBYnN0
cmFjdFBDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJB
OSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRp
b25hbEZpbmFsaXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CkBAIC0zODcsNyArNDIwLDcgQEAKIAkJODZCOTlBRTMxMTdFNTc4MTAwREY1QTkwIC8q
IFN0cmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODZCOTlBRTExMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QkIwOUMwMTM4RTM4
MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJFMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNo
LmNwcCAqLzsgfTsKIAkJODZCQjA5QzExMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJGMTM4
RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggKi87IH07Ci0JCTg2QzM2RUVBMEVFMTI4OUQw
MEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1i
bGVyLmggKi87IH07CisJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZF
RTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0Yw
IC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2QzU2OEREMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxl
ckFSTS5jcHAgKi87IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2Vt
Ymxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLzsgfTsK
IAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERGMTFBMjEzRUUwMDA3
RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IH07CkBAIC03NTQsNiArNzg3LDIwIEBACiAvKiBF
bmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVBy
b3h5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNv
bnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVj
dCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGNDY4
MEE5MTRCQTdGRDkwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSAiTExJbnQgT2Zmc2V0cyI7CisJ
CX07CisJCTBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0
YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlw
cm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODA4RTE0QkE3RTVF
MDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQl9
OwogCQkxNDEyMTRCRTBBNDkxOTBFMDA0ODAyNTUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICov
ID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFs
ID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtNzk5
LDYgKzg0NiwxNSBAQAogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4RDE0
QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVz
QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQYXRo
ID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMDsKKwkJCWZp
bGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAx
OworCQl9OwogCQk1REJCMTUxMTEzMUQwQjEzMDA1NkFEMzYgLyogQ29weSBTdXBwb3J0IFNjcmlw
dCAqLyA9IHsKIAkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlv
bk1hc2sgPSAxMjsKQEAgLTgzOSw2ICs4OTUsMTAgQEAKIAkJMEJBQzk0OUUxMzM4NzI4NDAwQ0Yx
MzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFyeUNoYW5nZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyog
U2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaXpl
TGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTUxNEJDRjQ1
QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5jcHA7IHBhdGggPSBsbGludC9MTEludEVu
dHJ5cG9pbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTYxNEJD
RjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5oOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBv
aW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NzE0QkNGNDVBMDA4
ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTExJbnRUaHVua3MuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3MuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRUaHVua3Mu
aDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlckluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUlu
Zm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwcmVzc2lvblJhbmdlSW5m
by5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQ5LDkgKzkwOSwxMyBAQAogCQkw
RjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGhvZENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVz
b2x2ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2xvYmFsUmVzb2x2
ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjgxNEJDRjk1QjAw
ODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAv
KiBMTEludENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
TEludENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE1RjE1
RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IENvbW1vblNsb3dQYXRocy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURHJpdmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVT
cGVjaWFsaXphdGlvbktpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMy
N0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0aW9uSGFybmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUNvbnZlbnRpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0
QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdD
b2RlQmxvY2tzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGR0NvZGVCbG9j
a3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2Miw2ICs5MjYsMjAgQEAKIAkJ
MEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBMaXN0YWJsZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklURXhjZXB0aW9ucy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3
MiAvKiBKSVRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJ
VEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOEYxNEJB
N0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRh
YmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9y
OyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkwRjQ2ODA5RDE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5jcHA7IHBhdGggPSBsbGludC9MTEludEV4Y2Vw
dGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RTE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IExMSW50RXhjZXB0aW9ucy5oOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludEhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
TExJbnRIZWxwZXJzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVycy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhl
bHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRIZWxwZXJzLmg7
IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29t
bW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50Q29tbW9uLmg7IHBh
dGggPSBsbGludC9MTEludENvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBwYXRo
ID0gbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0
ZXIuY3BwOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbElu
dGVycHJldGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExvd0xldmVsSW50
ZXJwcmV0ZXIuaDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludERhdGEuY3Bw
OyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludERhdGEuaDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIg
LyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1RjBGMTE0RDEwNjM2MDBBQzc2NDkgLyog
QWJzdHJhY3RQQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0
cmFjdFBDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NUYwRjIxNEQxMDYz
NjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQWJzdHJhY3RQQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVGMDhDQzE0
NkJFNjAyMDAwNDcyQTkgLyogREZHQnl0ZUNvZGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBERkdCeXRlQ29kZUNhY2hlLmg7IHBhdGggPSBkZmcvREZHQnl0ZUNvZGVD
YWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU4Nyw2ICsxNjY1LDEzIEBA
CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1l
d29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8q
IEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUUw
QTQ4NzkzQzAwNDgwMjU1IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0xNjQ1
LDYgKzE3MzAsNyBAQAogCQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICov
LAogCQkJCTE0QkQ1OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTY1MTEy
MzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4MDhGMTRCQTdF
NUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCiAJCQkpOwogCQkJbmFt
ZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2NzUsNiArMTc2
MSw3IEBACiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJl
Zml4LmggKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8sCiAJ
CQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5oICovLAorCQkJCTBGNDY4MDlD
MTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLywKIAkJCQkxNDMyRUJENzBBMzRDQUQ0MDA3MTdC
OUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJsZXIg
Ki8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLApAQCAtMTcx
NCw2ICsxODAxLDI4IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07
CisJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8q
IExMSW50RW50cnlwb2ludHMuY3BwICovLAorCQkJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAv
KiBMTEludEVudHJ5cG9pbnRzLmggKi8sCisJCQkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8q
IExMSW50VGh1bmtzLmNwcCAqLywKKwkJCQkwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuaCAqLywKKwkJCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRh
LmNwcCAqLywKKwkJCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi8s
CisJCQkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi8sCisJCQkJ
MEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovLAor
CQkJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAq
LywKKwkJCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5o
ICovLAorCQkJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3Bw
ICovLAorCQkJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAq
LywKKwkJCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLywK
KwkJCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8sCisJCQkJ
MEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi8s
CisJCQkpOworCQkJbmFtZSA9IGxsaW50OworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJ
fTsKIAkJMTQxMjExMDAwQTQ4NzcyNjAwNDgwMjU1IC8qIHRlc3RzICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE3NDgsNiArMTg1Nyw4IEBACiAJCTE0MjlE
OTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJl
dHVyblZhbHVlLmNwcCAqLywKKwkJCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENh
bGxSZXR1cm5WYWx1ZS5oICovLAogCQkJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRF
eGNlcHRpb25zLmNwcCAqLywKIAkJCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhj
ZXB0aW9ucy5oICovLAogCQkJCTBGRDgyRTM3MTQxQUIxNDIwMDE3OUM5NCAvKiBDb21wYWN0SklU
Q29kZU1hcC5oICovLApAQCAtMjE3NSw2ICsyMjg2LDggQEAKIAkJN0VGNkUwQkIwRUI3QTFFQzAw
NzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVu
ID0gKAorCQkJCTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kLmggKi8sCisJCQkJMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5l
c3MuaCAqLywKIAkJCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhz
LmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAog
CQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCkBAIC0yNTQ3LDYg
KzI2NjAsOCBAQAogCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7
CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGMjFDMjdFMTRCRUFB
ODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8sCisJCQkJMEYwRkM0NTgxNEJE
MTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8sCiAJCQkJMEY5MzMyOTMxNENB
N0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLywKIAkJCQkwRjkzMzI5NDE0Q0E3
REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCAqLywKIAkJCQkwRjkzMzI5NTE0Q0E3REMx
MDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5jcHAgKi8sCkBAIC0zMDk3LDcgKzMyMTIsMTYgQEAK
IAkJCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNs
b3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8q
IExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTUxNEJBN0Y4RDAw
QkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJB
NTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4
MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBM
TEludERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAv
KiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5QjE0QkNG
NDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYw
QjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8u
aCBpbiBIZWFkZXJzICovLApAQCAtMzEwNiw3ICszMjMwLDExIEBACiAJCQkJMEYwQjgzQjUxNEJD
Rjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEZDNDVBMTRCRDE1RjUwMEI4
MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyNjgx
NEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMy
N0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVD
b252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEExNEMzQ0QyOTAwN0MzREIx
IC8qIERGR0NDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0Qy
RjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5
NEMxNEMzQ0Q0MzAwN0MzREIxIC8qIERGR0J5dGVDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLApA
QCAtMzEyNSw2ICszMjUzLDI0IEBACiAvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlv
biAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODA4RTE0
QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0geworCQkJaXNh
ID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MDlB
MTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2
ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0g
KAorCQkJCTBGNDY4MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovLAorCQkJCTBGNDY4
MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovLAorCQkJCTBGNDY4MDhEMTRCQTdF
NUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJ
CSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8q
IFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9IEpTQ0xMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3ROYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
CQkJcHJvZHVjdFJlZmVyZW5jZSA9IDBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTElu
dE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVj
dC10eXBlLnRvb2wiOworCQl9OwogCQkxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRv
bSAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlv
bkxpc3QgPSAxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovOwpAQCAtMzI1MSwxMSArMzM5Nywy
OSBAQAogCQkJCTE0QkQ1OUJFMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTkz
MkY1QkRBMDgyMkExQzcwMDczNjk3NSAvKiBqc2MgKi8sCiAJCQkJNjUxMTIyRjcxNDA0NkE0QzAw
MkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8q
IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKKwkJCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUy
NzIgLyogTExJbnQgT2Zmc2V0cyAqLywKIAkJCSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICov
CisJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9
ICgKKwkJCQkiJChTUkNST09UKS9sbGludC9Mb3dMZXZlbEFzc2VtYmxlci5hc20iLAorCQkJKTsK
KwkJCW5hbWUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKKwkJCW91dHB1dFBhdGhzID0g
KAorCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9m
ZnNldHMuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAg
XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL1wiXG5cbi91c3IvYmluL2VudiBy
dWJ5IFwiJHtTUkNST09UfS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmJc
IiBcIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc21cIiBcIiR7QlVJTFRf
UFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oXCJcbiI7CisJ
CX07CiAJCTM3MTNGMDE0MTQyOTA1MjQwMDM2Mzg3RiAvKiBDaGVjayBGb3IgSW5hcHByb3ByaWF0
ZSBPYmplY3RpdmUtQyBDbGFzcyBOYW1lcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0
QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zMzYxLDcg
KzM1MjUsNyBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAwOwogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKLQkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1w
IFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL2Rv
Y3NcIlxuY2QgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmVcIlxuXG4vYmluL2xuIC1zZmggXCIke1NSQ1JPT1R9XCIgSmF2YVNjcmlwdENvcmVcbmV4
cG9ydCBKYXZhU2NyaXB0Q29yZT1cIkphdmFTY3JpcHRDb3JlXCJcbmV4cG9ydCBCVUlMVF9QUk9E
VUNUU19ESVI9XCIuLi8uLlwiXG5cbm1ha2UgLS1uby1idWlsdGluLXJ1bGVzIC1mIFwiSmF2YVNj
cmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNyL3NiaW4vc3lzY3RsIC1uIGh3
Lm5jcHVgXG4iOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RT
X0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBcIiR7QlVJTFRf
UFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4g
LXNmaCBcIiR7U1JDUk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3Jl
PVwiSmF2YVNjcmlwdENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJc
blxubWFrZSAtLW5vLWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlXCIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNwdWBcblxuL3Vzci9iaW4v
ZW52IHJ1YnkgSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIgSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0pTQ0xM
SW50T2Zmc2V0c0V4dHJhY3RvciBMTEludEFzc2VtYmx5LmhcbiI7CiAJCX07CiAJCTkzMTk1ODZC
MDlEOUY5MUEwMEE1NkZENCAvKiBDaGVjayBGb3IgR2xvYmFsIEluaXRpYWxpemVycyAqLyA9IHsK
IAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKQEAgLTMzOTYsNiArMzU2MCwxNCBA
QAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEIxNEJBN0U1RTAwQkZF
MjcyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkwRjQ2ODBB
NzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwor
CQl9OwogCQkxNDEyMTExRDBBNDg3OTNDMDA0ODAyNTUgLyogU291cmNlcyAqLyA9IHsKIAkJCWlz
YSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0
NzsKQEAgLTM2NTMsNyArMzgyNSwxNCBAQAogCQkJCTg2NzA0Qjg2MTJEQkEzMzcwMEE5RkU3QiAv
KiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg5MTJEQkEzMzcwMEE5RkU3
QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI0MjEyREI4QTgx
MDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0
NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25z
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dM
ZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQyMTRCQkQxNjUw
MEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDQxNEJC
RDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4NUI0RiAvKiBDYWxsTGlu
a0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjQxNEJDRjg2MDAwODg1QjRGIC8q
IE1ldGhvZENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNjlFODZDMzE0QzZF
NTUxMDAyQzJDNjIgLyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM2Nzgs
NiArMzg1NywxNiBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTBGNDY4MEIyMTRCQTgx
MTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFy
Z2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBM
TEludCBPZmZzZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMTE0QkE4MTE1MDBCRkUy
NzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkwRjQ2ODBCNDE0QkE4MjE0
MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlND
TExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMzE0QkE4
MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQkxNDEyMTRC
RjBBNDkxOTBFMDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9
IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEyMTExRjBBNDg3OTNDMDA0ODAy
NTUgLyogbWluaWRvbSAqLzsKQEAgLTM3MTEsNiArMzkwMCwxNTAgQEAKIC8qIEVuZCBQQlhUYXJn
ZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24g
c2VjdGlvbiAqLworCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
QUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFO
REFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0NDX0NfTEFO
R1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJ
CQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9O
X0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQki
REVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZTUJPTFNf
UFJJVkFURV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxl
cnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04g
PSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJ
R0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZB
UklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJ
CQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRz
IiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RF
UExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gTk87CisJCQkJ
UFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4Owor
CQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUg
PSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNI
U19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURF
QlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xB
TkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMg
PSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcu
MV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0ND
X1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VU
X1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsK
KwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1
LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyQoSEVBREVSX1NFQVJD
SF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsK
KwkJCQlPTkxZX0FDVElWRV9BUkNIID0gTk87CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VU
X05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9Q
QVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVS
X1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2
ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hf
VVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7
CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JN
QVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdu
dTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJT
SU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82
NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdf
UFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsK
KwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hf
UEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJP
RFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIs
CisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCU9OTFlf
QUNUSVZFX0FSQ0ggPSBOTzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOwor
CQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4g
aWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BB
VEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJMEY0NjgwOTkxNEJB
N0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BB
VEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlD
T1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJk
d2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJ
CQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBj
b20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMy
X0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZ
UEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdD
Q19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1th
cmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19E
SVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkp
OworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1F
ID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVB
REVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZz
ZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9u
OworCQl9OworCQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJP
RFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gRGVi
dWc7CisJCX07CisJCTBGNDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9
IFJlbGVhc2U7CisJCX07CisJCTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcg
Ki8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJ
CQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyog
UHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHki
OworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEzQTBBNDg3OTg0
MDA0ODAyNTUgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
IAkJCWJ1aWxkU2V0dGluZ3MgPSB7CkBAIC0zOTUyLDYgKzQyODUsMjggQEAKIC8qIEVuZCBYQ0J1
aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxp
c3Qgc2VjdGlvbiAqLworCQkwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ciIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1
cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8sCisJ
CQkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwOTgx
NEJBN0U1RTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODA5OTE0QkE3RTVFMDBC
RkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklz
VmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOwor
CQl9OworCQkwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovID0geworCQkJaXNh
ID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJ
MEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MEFFMTRCQTdG
RDkwMEJGRTI3MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAv
KiBQcm9maWxpbmcgKi8sCisJCQkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rp
b24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjExMzkw
QTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZl
VGFyZ2V0ICJtaW5pZG9tIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJ
CQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9MaW5rQnVmZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHJldmlzaW9uIDEwNjI5NykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3
ICszNCw3IEBACiAjZGVmaW5lIEdMT0JBTF9USFVOS19JRCByZWludGVycHJldF9jYXN0PHZvaWQq
PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLTEpKQogI2RlZmluZSBSRUdFWFBfQ09ERV9JRCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLTIpKQogCi0jaW5jbHVk
ZSA8TWFjcm9Bc3NlbWJsZXIuaD4KKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNv
bnZlbnRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCeXRlY29kZUNvbnZlbnRp
b25zX2gKKyNkZWZpbmUgQnl0ZWNvZGVDb252ZW50aW9uc19oCisKKy8vIFJlZ2lzdGVyIG51bWJl
cnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNj
b3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKKy8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBO
ZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGlu
IHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCisvLyAgICAgIDB4MDAwMDAwMDAt
MHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBh
cmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJh
bWUuCisvLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9t
IDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBD
b2RlQmxvY2suCitzdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0g
MHg0MDAwMDAwMDsKKworI2VuZGlmIC8vIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJ
KHJldmlzaW9uIDEwNjI5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE3ICsyNyw0MCBAQAogI2luY2x1
ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRl
ICJMTEludENhbGxMaW5rSW5mby5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorQ2FsbExpbmtTdGF0
dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJs
b2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShwcm9maWxl
ZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisjaWYgRU5BQkxFKExM
SU5UKQorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworICAgIExMSW50Q2FsbExpbmtJbmZv
KiBjYWxsTGlua0luZm8gPSBpbnN0cnVjdGlvbls0XS51LmNhbGxMaW5rSW5mbzsKKyAgICAKKyAg
ICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5nZXQo
KSwgZmFsc2UpOworI2Vsc2UKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFsc2UpOwor
I2VuZGlmCit9CisKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKENv
ZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIHsKICAgICBV
TlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5k
ZXgpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAgICByZXR1
cm4gQ2FsbExpbmtTdGF0dXMoCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5m
byhieXRlY29kZUluZGV4KS5sYXN0U2VlbkNhbGxlZS5nZXQoKSwKLSAgICAgICAgcHJvZmlsZWRC
bG9jay0+Y291bGRUYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpOworICAgIGlmICghcHJvZmls
ZWRCbG9jay0+bnVtYmVyT2ZDYWxsTGlua0luZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRl
RnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIGlmIChw
cm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKKyAgICAgICAg
cmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIHRydWUpOworICAgIAorICAgIEpTRnVuY3Rpb24qIHRh
cmdldCA9IHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KS5sYXN0
U2VlbkNhbGxlZS5nZXQoKTsKKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgcmV0dXJuIGNvbXB1
dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgcmV0
dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldCwgZmFsc2UpOwogI2Vsc2UKICAgICByZXR1cm4gQ2Fs
bExpbmtTdGF0dXMoMCwgZmFsc2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24gMTA2Mjk3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ3LDE1ICs0NywxNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIENhbGxM
aW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7
CiAgICAgCi0gICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0OyB9
CisgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0IHx8IG1fY291
bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0
dXJuICFtX2NhbGxUYXJnZXQ7IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJu
ICFpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBKU0Z1bmN0aW9uKiBjYWxs
VGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgCiBwcml2YXRlOgor
ICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgIAogICAgIEpTRnVuY3Rpb24qIG1fY2FsbFRhcmdl
dDsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7CiB9OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEwNjI5NykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUg
IkpTU3RhdGljU2NvcGVPYmplY3QuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
TG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNs
dWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtNTksOCAr
NjAsNiBAQCBuYW1lc3BhY2UgSlNDIHsKIHVzaW5nIG5hbWVzcGFjZSBERkc7CiAjZW5kaWYKIAot
I2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQogc3RhdGlj
IFVTdHJpbmcgZXNjYXBlUXVvdGVzKGNvbnN0IFVTdHJpbmcmIHN0cikKIHsKICAgICBVU3RyaW5n
IHJlc3VsdCA9IHN0cjsKQEAgLTM1OCwxMCArMzU3LDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1w
KEV4ZWNTdGF0ZSogZXhlYykgY28KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc3RydWN0
aW9ucygpLnNpemUoKTsgaSArPSBvcGNvZGVMZW5ndGhzW2V4ZWMtPmludGVycHJldGVyKCktPmdl
dE9wY29kZUlEKGluc3RydWN0aW9ucygpW2ldLnUub3Bjb2RlKV0pCiAgICAgICAgICsraW5zdHJ1
Y3Rpb25Db3VudDsKIAotICAgIHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXMg
YXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpXG5cbiIsCisgICAg
cHJpbnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVy
KHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocyk7ICVkIHZhcmlhYmxlKHMpXG5cbiIsCiAgICAgICAg
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9uQ291bnQpLAogICAgICAgICBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkgKiBzaXplb2Yo
SW5zdHJ1Y3Rpb24pKSwKLSAgICAgICAgdGhpcywgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxl
ZVJlZ2lzdGVycyk7CisgICAgICAgIHRoaXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVS
ZWdpc3RlcnMsIG1fbnVtVmFycyk7CiAKICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9p
dGVyYXRvciBiZWdpbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgVmVjdG9yPEluc3Ry
dWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW5zdHJ1Y3Rpb25zKCkuZW5kKCk7CkBAIC04
OTgsNiArODk3LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28K
ICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9p
ZF90cmFuc2l0aW9uIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDogeworICAgICAgICAgICAgcHJpbnRQ
dXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0
Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhl
YywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsIik7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9nZW5lcmlj
OiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRf
YnlfaWRfZ2VuZXJpYyIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMjg1LDggKzEyOTIsNiBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgfQogfQogCi0j
ZW5kaWYgLy8gIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotCiAj
aWYgRFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJQ1MKIHN0YXRpYyBIYXNoU2V0PENvZGVCbG9jayo+
IGxpdmVDb2RlQmxvY2tTZXQ7CiAjZW5kaWYKQEAgLTE0NTYsNiArMTQ2MSw3IEBAIENvZGVCbG9j
azo6Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1RhZywKIHsKICAgICBzZXROdW1QYXJhbWV0ZXJz
KG90aGVyLm51bVBhcmFtZXRlcnMoKSk7CiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOworICAg
IGppdEFmdGVyV2FybVVwKCk7CiAgICAgCiAgICAgaWYgKG90aGVyLm1fcmFyZURhdGEpIHsKICAg
ICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2FyeSgpOwpAQCAtMTUwNCw2ICsxNTEwLDcgQEAg
Q29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgIEFTU0VSVChtX3Nv
dXJjZSk7CiAgICAgCiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOworICAgIGppdEFmdGVyV2Fy
bVVwKCk7CiAKICNpZiBEVU1QX0NPREVfQkxPQ0tfU1RBVElTVElDUwogICAgIGxpdmVDb2RlQmxv
Y2tTZXQuYWRkKHRoaXMpOwpAQCAtMTUyMSw3ICsxNTI4LDExIEBAIENvZGVCbG9jazo6fkNvZGVC
bG9jaygpCiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFMVUVfUFJPRklMRSkKICAgICBkdW1wVmFsdWVQ
cm9maWxlcygpOwogI2VuZGlmCi0gICAgCisKKyNpZiBFTkFCTEUoTExJTlQpICAgIAorICAgIHdo
aWxlIChtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdMTEludENhbGxz
LmVuZCgpKQorICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpLT5yZW1vdmUoKTsK
KyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBXZSBtYXkg
YmUgZGVzdHJveWVkIGJlZm9yZSBhbnkgQ29kZUJsb2NrcyB0aGF0IHJlZmVyIHRvIHVzIGFyZSBk
ZXN0cm95ZWQuCiAgICAgLy8gQ29uc2lkZXIgdGhhdCB0d28gQ29kZUJsb2NrcyBiZWNvbWUgdW5y
ZWFjaGFibGUgYXQgdGhlIHNhbWUgdGltZS4gVGhlcmUKQEAgLTE3MzMsOCArMTc0NCw2OCBAQCB2
b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAjZWxzZQogICAgIHN0YXRp
YyBjb25zdCBib29sIHZlcmJvc2VVbmxpbmtpbmcgPSBmYWxzZTsKICNlbmRpZgotI2VuZGlmCisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAgICAKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW50ZXJw
cmV0ZXIqIGludGVycHJldGVyID0gbV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlcjsKKyAgICAvLyBp
bnRlcnByZXRlci0+ZW5hYmxlZCgpIHJldHVybnMgdHJ1ZSBpZiB0aGUgb2xkIEMrKyBpbnRlcnBy
ZXRlciBpcyBlbmFibGVkLiBJZiB0aGF0J3MgZW5hYmxlZAorICAgIC8vIHRoZW4gd2UncmUgbm90
IHVzaW5nIExMSW50LgorICAgIGlmICghaW50ZXJwcmV0ZXItPmVuYWJsZWQoKSkgeworICAgICAg
ICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCks
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5z
dHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tp
XV07CisgICAgICAgICAgICBzd2l0Y2ggKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0
cnVjdGlvblswXS51Lm9wY29kZSkpIHsKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgor
ICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgICAgICAgICAgaWYgKCFjdXJJ
bnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlv
bls0XS51LnN0cnVjdHVyZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQorICAgICAgICAgICAgICAgICAgICBw
cmludGYoIkNsZWFyaW5nIExMSW50IHByb3BlcnR5IGFjY2VzcyB3aXRoIHN0cnVjdHVyZSAlcC5c
biIsIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAg
IGN1ckluc3RydWN0aW9uWzVdLnUub3BlcmFuZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAg
ICAgIGlmIChIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQo
KSkKKyAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25b
Nl0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFy
a2VkKGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykg
eworICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IHB1dCB0cmFuc2l0
aW9uIHdpdGggc3RydWN0dXJlcyAlcCAtPiAlcCwgY2hhaW4gJXAuXG4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0
dXJlQ2hhaW4uZ2V0KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjdXJJ
bnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1cklu
c3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5z
dHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1
ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRf
YnlfaWQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rp
b25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0
aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgQVNTRVJUKGludGVycHJldGVyLT5nZXRPcGNvZGVJ
RChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3BfcmVzb2x2ZV9nbG9iYWwKKyAgICAg
ICAgICAgICAgICAgICB8fCBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25b
MF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpOworICAgICAgICAgICAg
aWYgKCFjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChjdXJJ
bnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IGdsb2JhbCByZXNvbHZlIGNh
Y2hlIHdpdGggc3RydWN0dXJlICVwLlxuIiwgY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUu
Z2V0KCkpOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuY2xlYXIo
KTsKKyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9IDA7CisgICAgICAg
IH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9z
LnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAobV9sbGludENhbGxMaW5rSW5mb3NbaV0u
aXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQobV9sbGludENhbGxMaW5rSW5mb3NbaV0uY2Fs
bGVlLmdldCgpKSkgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQorICAg
ICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IGNhbGwgZnJvbSAlcC5cbiIs
IHRoaXMpOworICAgICAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCEhbV9sbGludENhbGxMaW5rSW5mb3Nb
aV0ubGFzdFNlZW5DYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9z
W2ldLmxhc3RTZWVuQ2FsbGVlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBtX2xsaW50Q2FsbExp
bmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgICAgICB9CisgICAgfQorI2Vu
ZGlmIC8vIEVOQUJMRShMTElOVCkKKwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8vIENoZWNr
IGlmIHdlJ3JlIG5vdCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAgICAgaWYgKCEo
c2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBtX2RmZ0RhdGEt
PmxpdmVuZXNzSGFzQmVlblByb3ZlZCkpIHsKQEAgLTE4NTUsMTAgKzE5MjYsMTIgQEAgdm9pZCBD
b2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9mdW5jdGlvbkRlY2xzLnNpemUoKTsgKytpKQogICAgICAgICB2aXNpdG9yLmFwcGVu
ZCgmbV9mdW5jdGlvbkRlY2xzW2ldKTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCi0gICAgZm9y
IChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0g
MDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0
cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7Ci0gICAgZm9yIChz
aXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBp
IDwgc2l6ZTsgKytpKQotICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0
aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIGlmIChtX2dsb2Jh
bERhdGEtPmludGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6
ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7
ICsraSkKKyAgICAgICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25z
KClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOworICAgICAgICBmb3IgKHNpemVf
dCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBz
aXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0
aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIH0KICNlbmRpZgog
CiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0xODY2LDggKzE5MzksOSBAQCB2b2lkIENvZGVCbG9j
azo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGV4
ZWN1dGFibGVzIHRoYXQgd2UgaGF2ZSBpbmxpbmVkIGRvbid0IGRpZS4KICAgICAgICAgLy8gRklY
TUU6IElmIHRoZXkgd291bGQgaGF2ZSBvdGhlcndpc2UgZGllZCwgd2Ugc2hvdWxkIHByb2JhYmx5
IHRyaWdnZXIgcmVjb21waWxhdGlvbi4KICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBp
bmxpbmVDYWxsRnJhbWVzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIHZpc2l0b3IuYXBw
ZW5kKCZpbmxpbmVDYWxsRnJhbWVzKClbaV0uZXhlY3V0YWJsZSk7Ci0gICAgICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZyYW1lcygpW2ldLmNhbGxlZSk7CisgICAgICAgICAgICBJ
bmxpbmVDYWxsRnJhbWUmIGlubGluZUNhbGxGcmFtZSA9IGlubGluZUNhbGxGcmFtZXMoKVtpXTsK
KyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpbmxpbmVDYWxsRnJhbWUuZXhlY3V0YWJsZSk7
CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZyYW1lLmNhbGxlZSk7CiAg
ICAgICAgIH0KICAgICB9CiAjZW5kaWYKQEAgLTIwNjcsNiArMjE0MSwxMiBAQCB2b2lkIENvZGVC
bG9jazo6dW5saW5rQ2FsbHMoKQogewogICAgIGlmICghIW1fYWx0ZXJuYXRpdmUpCiAgICAgICAg
IG1fYWx0ZXJuYXRpdmUtPnVubGlua0NhbGxzKCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkpCisgICAgICAg
ICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICB9CisjZW5kaWYKICAg
ICBpZiAoIShtX2NhbGxMaW5rSW5mb3Muc2l6ZSgpIHx8IG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5z
aXplKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJ
VCgpKQpAQCAtMjA4MSwxMCArMjE2MSwzOSBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMo
KQogCiB2b2lkIENvZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxscygpCiB7CisjaWYgRU5BQkxF
KExMSU5UKQorICAgIHdoaWxlIChtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpICE9IG1faW5j
b21pbmdMTEludENhbGxzLmVuZCgpKQorICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5iZWdp
bigpLT51bmxpbmsoKTsKKyNlbmRpZgorICAgIGlmIChtX2luY29taW5nQ2FsbHMuaXNFbXB0eSgp
KQorICAgICAgICByZXR1cm47CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRoaXMp
OwogICAgIHdoaWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2FsbHMu
ZW5kKCkpCiAgICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigpLT51bmxpbmsoKm1fZ2xvYmFs
RGF0YSwgcmVwYXRjaEJ1ZmZlcik7CiB9CisKK3Vuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVP
ZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit7
CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0gYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfYmVnaW4pCisgICAgICAgICYmIHJldHVybkFkZHJlc3Mu
dmFsdWUoKSA8PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQpKSB7CisgICAgICAgIEFT
U0VSVChleGVjLT5jb2RlQmxvY2soKSk7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2so
KSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJ
VFR5cGUoKSkpOworICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBleGVjLT5jdXJy
ZW50VlBDKCk7CisgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbik7CisgICAgICAgIHJldHVybiBi
eXRlY29kZU9mZnNldChpbnN0cnVjdGlvbik7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFS
QU0oZXhlYyk7CisjZW5kaWYKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiAx
OworICAgIFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRp
Y2VzID0gbV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7CisgICAgaWYgKCFjYWxs
SW5kaWNlcy5zaXplKCkpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiBiaW5hcnlTZWFy
Y2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0
dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJ
VENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7
Cit9CiAjZW5kaWYKIAogdm9pZCBDb2RlQmxvY2s6OmNsZWFyRXZhbENhY2hlKCkKQEAgLTIxODAs
MjQgKzIyODksNDUgQEAgYm9vbCBGdW5jdGlvbkNvZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERgog
CiB2b2lkIFByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklU
VHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNP
cHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2Vt
ZW50KCkpOwogICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRh
YmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQg
RXZhbENvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdK
SVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAg
ICAgc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRp
c29uT3B0aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBGdW5jdGlvbkNvZGVC
bG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklU
VHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGlj
X2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9w
dGltaXplZENvZGVGb3IoKmdsb2JhbERhdGEoKSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNv
bnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKIH0KKwordm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqaXRD
b21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdldEpJ
VFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhpcyA9
PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFi
bGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZ2xvYmFsRGF0YSk7Cit9CisKK3Zv
aWQgRXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
KQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVu
ayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlKGds
b2JhbERhdGEpOworfQorCit2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBK
SVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVu
dCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJF
eGVjdXRhYmxlKCkpLT5qaXRDb21waWxlRm9yKGdsb2JhbERhdGEsIG1faXNDb25zdHJ1Y3RvciA/
IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShWQUxVRV9QUk9GSUxFUikKQEAgLTIzMDAsNiArMjQzMCwxOCBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcFZhbHVlUHJvZmlsZXMoKQogfQogI2VuZGlmCiAKK3ZvaWQgQ29kZUJsb2NrOjpoYW5kbGVC
eXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpCit7CisjaWYgIUVOQUJMRShPUENPREVfU0FN
UExJTkcpICYmICFFTkFCTEUoTExJTlQpCisgICAgaWYgKEJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1w
c0dlbmVyYXRlZENvZGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIGlmICghIWFsdGVybmF0aXZl
KCkpCisgICAgICAgIGRpc2NhcmRCeXRlY29kZSgpOworICAgIGVsc2UKKyAgICAgICAgZGlzY2Fy
ZEJ5dGVjb2RlTGF0ZXIoKTsKKyNlbmRpZgorfQorCiAjaWZuZGVmIE5ERUJVRwogYm9vbCBDb2Rl
QmxvY2s6OnVzZXNPcGNvZGUoT3Bjb2RlSUQgb3Bjb2RlSUQpCiB7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCShyZXZpc2lvbiAxMDYyOTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkK
QEAgLTMwLDYgKzMwLDcgQEAKICNpZm5kZWYgQ29kZUJsb2NrX2gKICNkZWZpbmUgQ29kZUJsb2Nr
X2gKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJDYWxsTGlu
a0luZm8uaCIKICNpbmNsdWRlICJDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIgog
I2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKQEAgLTUwLDYgKzUxLDcgQEAKICNpbmNsdWRlICJKSVRX
cml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgogI2luY2x1ZGUgIkp1
bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiTGlu
ZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2luY2x1ZGUgIlByZWRpY3Rpb25UcmFja2Vy
LmgiCkBAIC02NSwxNiArNjcsMTEgQEAKICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKIAotLy8gUmVnaXN0ZXIgbnVtYmVycyB1c2VkIGluIGJ5
dGVjb2RlIG9wZXJhdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbWVhbmluZyBhY2NvcmRpbmcgdG8gdGhl
aXIgcmFuZ2VzOgotLy8gICAgICAweDgwMDAwMDAwLTB4RkZGRkZGRkYgIE5lZ2F0aXZlIGluZGlj
ZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGVudHJpZXMgaW4gdGhlIGNhbGwgZnJh
bWUsIHNlZSBSZWdpc3RlckZpbGUuaC4KLS8vICAgICAgMHgwMDAwMDAwMC0weDNGRkZGRkZGICBG
b3J3YXJkcyBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBsb2NhbCB2YXJz
IGFuZCB0ZW1wb3JhcmllcyB3aXRoIHRoZSBmdW5jdGlvbidzIGNhbGxmcmFtZS4KLS8vICAgICAg
MHg0MDAwMDAwMC0weDdGRkZGRkZGICBQb3NpdGl2ZSBpbmRpY2VzIGZyb20gMHg0MDAwMDAwMCBz
cGVjaWZ5IGVudHJpZXMgaW4gdGhlIGNvbnN0YW50IHBvb2wgb24gdGhlIENvZGVCbG9jay4KLXN0
YXRpYyBjb25zdCBpbnQgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwOwot
CiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEV4ZWNTdGF0ZTsKICAgICBjbGFzcyBERkdD
b2RlQmxvY2tzOworICAgIGNsYXNzIEV4ZWNTdGF0ZTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAKICAgICBpbmxpbmUgaW50IHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihp
bnQgYXJndW1lbnRzUmVnaXN0ZXIpIHsgcmV0dXJuIGFyZ3VtZW50c1JlZ2lzdGVyIC0gMTsgfQog
CkBAIC04Myw2ICs4MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIENvZGVCbG9jayA6
IHB1YmxpYyBVbmNvbmRpdGlvbmFsRmluYWxpemVyLCBwdWJsaWMgV2Vha1JlZmVyZW5jZUhhcnZl
c3RlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBDb3B5UGFyc2VkQmxvY2tUYWcgeyBDb3B5UGFyc2Vk
QmxvY2sgfTsKICAgICBwcm90ZWN0ZWQ6CkBAIC0xMjMsNyArMTIxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICB3aGlsZSAocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKQogICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IHJlc3VsdC0+YWx0ZXJuYXRpdmUoKTsKICAgICAgICAgICAgIEFTU0VS
VChyZXN1bHQpOwotICAgICAgICAgICAgQVNTRVJUKHJlc3VsdC0+Z2V0SklUVHlwZSgpID09IEpJ
VENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2Vs
aW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfQogI2VuZGlmCkBAIC0xMzQsMTEgKzEzMiw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIHN0YXRpYyB2b2lkIGR1bXBTdGF0aXN0aWNzKCk7CiAKLSNpZiAhZGVmaW5l
ZChOREVCVUcpIHx8IEVOQUJMRV9PUENPREVfU0FNUExJTkcKICAgICAgICAgdm9pZCBkdW1wKEV4
ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50U3RydWN0dXJlcyhjb25zdCBJbnN0
cnVjdGlvbiopIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50U3RydWN0dXJlKGNvbnN0IGNoYXIq
IG5hbWUsIGNvbnN0IEluc3RydWN0aW9uKiwgaW50IG9wZXJhbmQpIGNvbnN0OwotI2VuZGlmCiAK
ICAgICAgICAgYm9vbCBpc1N0cmljdE1vZGUoKSBjb25zdCB7IHJldHVybiBtX2lzU3RyaWN0TW9k
ZTsgfQogCkBAIC0xOTQsMTUgKzE5MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
cmV0dXJuICooYmluYXJ5U2VhcmNoPE1ldGhvZENhbGxMaW5rSW5mbywgdW5zaWduZWQsIGdldE1l
dGhvZENhbGxMaW5rSW5mb0J5dGVjb2RlSW5kZXg+KG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5iZWdp
bigpLCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpLCBieXRlY29kZUluZGV4KSk7CiAgICAg
ICAgIH0KIAotICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChSZXR1cm5BZGRyZXNzUHRy
IHJldHVybkFkZHJlc3MpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9yYXJlRGF0YSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIFZlY3RvcjxDYWxsUmV0dXJu
T2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0gbV9yYXJlRGF0YS0+bV9jYWxs
UmV0dXJuSW5kZXhWZWN0b3I7Ci0gICAgICAgICAgICBpZiAoIWNhbGxJbmRpY2VzLnNpemUoKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIHJldHVybiBiaW5hcnlTZWFy
Y2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0
dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJ
VENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7
Ci0gICAgICAgIH0KKyAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiwg
UmV0dXJuQWRkcmVzc1B0cik7CiAKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXRGb3JD
YWxsQXRJbmRleCh1bnNpZ25lZCBpbmRleCkKICAgICAgICAgewpAQCAtMjIzLDExICsyMTEsMTcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIG1faW5jb21pbmdDYWxs
cy5wdXNoKGluY29taW5nKTsKICAgICAgICAgfQorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAg
dm9pZCBsaW5rSW5jb21pbmdDYWxsKExMSW50Q2FsbExpbmtJbmZvKiBpbmNvbWluZykKKyAgICAg
ICAgeworICAgICAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMucHVzaChpbmNvbWluZyk7Cisg
ICAgICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAgICAgICAgIAogICAgICAgICB2b2lk
IHVubGlua0luY29taW5nQ2FsbHMoKTsKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAK
LSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5U
KQogICAgICAgICB2b2lkIHNldEpJVENvZGVNYXAoUGFzc093blB0cjxDb21wYWN0SklUQ29kZU1h
cD4gaml0Q29kZU1hcCkKICAgICAgICAgewogICAgICAgICAgICAgbV9qaXRDb2RlTWFwID0gaml0
Q29kZU1hcDsKQEAgLTIzNiw3ICsyMzAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewog
ICAgICAgICAgICAgcmV0dXJuIG1faml0Q29kZU1hcC5nZXQoKTsKICAgICAgICAgfQorI2VuZGlm
CiAgICAgICAgIAorI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICB2b2lkIGNyZWF0ZURGR0Rh
dGFJZk5lY2Vzc2FyeSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghIW1fZGZnRGF0YSkK
QEAgLTMzNSwxMiArMzMxLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAjZW5kaWYK
IAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZz
ZXQoSW5zdHJ1Y3Rpb24qIHJldHVybkFkZHJlc3MpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFT
U0VSVChyZXR1cm5BZGRyZXNzID49IGluc3RydWN0aW9ucygpLmJlZ2luKCkgJiYgcmV0dXJuQWRk
cmVzcyA8IGluc3RydWN0aW9ucygpLmVuZCgpKTsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxJbnN0cnVjdGlvbio+KHJldHVybkFkZHJlc3MpIC0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4o
KTsKICAgICAgICAgfQotI2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXRJc051bWVyaWNDb21wYXJl
RnVuY3Rpb24oYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24pIHsgbV9pc051bWVyaWNDb21w
YXJlRnVuY3Rpb24gPSBpc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KICAgICAgICAgYm9vbCBp
c051bWVyaWNDb21wYXJlRnVuY3Rpb24oKSB7IHJldHVybiBtX2lzTnVtZXJpY0NvbXBhcmVGdW5j
dGlvbjsgfQpAQCAtMzU0LDE3ICszNDksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewog
ICAgICAgICAgICAgbV9zaG91bGREaXNjYXJkQnl0ZWNvZGUgPSB0cnVlOwogICAgICAgICB9Ci0g
ICAgICAgIHZvaWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoISFhbHRlcm5hdGl2ZSgpKQotICAgICAgICAgICAgICAgIGRp
c2NhcmRCeXRlY29kZSgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGRpc2Nh
cmRCeXRlY29kZUxhdGVyKCk7Ci0gICAgICAgIH0KKyAgICAgICAgdm9pZCBoYW5kbGVCeXRlY29k
ZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAgICAgICAKLSNpZm5kZWYgTkRFQlVHCiAgICAg
ICAgIGJvb2wgdXNlc09wY29kZShPcGNvZGVJRCk7Ci0jZW5kaWYKIAogICAgICAgICB1bnNpZ25l
ZCBpbnN0cnVjdGlvbkNvdW50KCkgeyByZXR1cm4gbV9pbnN0cnVjdGlvbkNvdW50OyB9CiAgICAg
ICAgIHZvaWQgc2V0SW5zdHJ1Y3Rpb25Db3VudCh1bnNpZ25lZCBpbnN0cnVjdGlvbkNvdW50KSB7
IG1faW5zdHJ1Y3Rpb25Db3VudCA9IGluc3RydWN0aW9uQ291bnQ7IH0KQEAgLTM4Nyw2ICszNzQs
MTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGV4
ZWN1dGFibGVNZW1vcnkoKSB7IHJldHVybiBnZXRKSVRDb2RlKCkuZ2V0RXhlY3V0YWJsZU1lbW9y
eSgpOyB9CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0
YXRlKiwgU2NvcGVDaGFpbk5vZGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNv
bigpID0gMDsKKyAgICAgICAgYm9vbCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpJ
bnRlcnByZXRlclRodW5rKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9
PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaml0Q29tcGlsZUltcGwoZ2xvYmFsRGF0YSk7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIENvZGVC
bG9jayogcmVwbGFjZW1lbnQoKSA9IDA7CiAKICAgICAgICAgZW51bSBDb21waWxlV2l0aERGR1N0
YXRlIHsKQEAgLTQwNiwxMyArNDAyLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJv
b2wgaGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NF
UlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFT
U0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAg
IGJvb2wgcmVzdWx0ID0gcmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID4gZ2V0SklUVHlwZSgp
OwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAg
ICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpE
RkdKSVQpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxh
Y2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlcGxhY2VtZW50KCktPmdl
dEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpID09IHRo
aXMpOwogICAgICAgICAgICAgfQogI2VuZGlmCkBAIC00NzEsMTggKzQ2NywyMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICB2b2lkIGNsZWFyRXZhbENhY2hlKCk7CiAKLSNpZiBFTkFCTEUo
SU5URVJQUkVURVIpCiAgICAgICAgIHZvaWQgYWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbih1
bnNpZ25lZCBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9wcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7
CisgICAgICAgICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIGFkZEdsb2JhbFJl
c29sdmVJbnN0cnVjdGlvbih1bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAg
ICAgIHsKLSAgICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAg
ICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29s
dmVJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMu
YXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgYm9v
bCBoYXNHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIExMSW50Q2FsbExpbmtJ
bmZvKiBhZGRMTEludENhbGxMaW5rSW5mbygpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxp
bnRDYWxsTGlua0luZm9zLmFwcGVuZChMTEludENhbGxMaW5rSW5mbygpKTsKKyAgICAgICAgICAg
IHJldHVybiAmbV9sbGludENhbGxMaW5rSW5mb3MubGFzdCgpOworICAgICAgICB9CiAjZW5kaWYK
ICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIHNldE51bWJlck9mU3RydWN0dXJlU3R1Yklu
Zm9zKHNpemVfdCBzaXplKSB7IG1fc3RydWN0dXJlU3R1YkluZm9zLmdyb3coc2l6ZSk7IH0KQEAg
LTQ5MSw4ICs0OTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGFkZEdsb2Jh
bFJlc29sdmVJbmZvKHVuc2lnbmVkIGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAg
ewotICAgICAgICAgICAgaWYgKG1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAg
ICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbikpOworICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3Mu
YXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOwogICAg
ICAgICB9CiAgICAgICAgIEdsb2JhbFJlc29sdmVJbmZvJiBnbG9iYWxSZXNvbHZlSW5mbyhpbnQg
aW5kZXgpIHsgcmV0dXJuIG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2luZGV4XTsgfQogICAgICAgICBi
b29sIGhhc0dsb2JhbFJlc29sdmVJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29k
ZU9mZnNldCk7CkBAIC01MDMsNiArNTAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAg
dm9pZCBhZGRNZXRob2RDYWxsTGlua0luZm9zKHVuc2lnbmVkIG4pIHsgQVNTRVJUKG1fZ2xvYmFs
RGF0YS0+Y2FuVXNlSklUKCkpOyBtX21ldGhvZENhbGxMaW5rSW5mb3MuZ3JvdyhuKTsgfQogICAg
ICAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGxMaW5rSW5mbyhpbnQgaW5kZXgpIHsg
cmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpbmRleF07IH0KKyAgICAgICAgc2l6ZV90IG51
bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZvcygpIHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJbmZv
cy5zaXplKCk7IH0KICNlbmRpZgogICAgICAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIp
CkBAIC01NDMsNiArNTQyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJvZmls
ZSA9PSByZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQorICAg
ICAgICBQcmVkaWN0ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNl
dChpbnQgYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1
ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPmNvbXB1dGVVcGRhdGVk
UHJlZGljdGlvbigpOworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCB0b3Rh
bE51bWJlck9mVmFsdWVQcm9maWxlcygpCiAgICAgICAgIHsKQEAgLTU2OSwxMiArNTcyLDE2IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTbG93
Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVt
YmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiB2YWx1
ZSA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNf
Y2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjps
aWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgYm9vbCBjb3VsZFRha2VTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2Fz
ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAg
ICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZU1pbmlt
dW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlD
b3VudCA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQpA
QCAtNTkzLDEyICs2MDAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBi
b29sIGxpa2VseVRvVGFrZVNwZWNpYWxGYXN0Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZh
c3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gc3BlY2lhbEZhc3RD
YXNlQ291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYg
c3RhdGljX2Nhc3Q8ZG91YmxlPihzcGVjaWFsRmFzdENhc2VDb3VudCkgLyBtX2V4ZWN1dGlvbkVu
dHJ5Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNl
KGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJP
ZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29k
ZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVk
IHZhbHVlID0gc2xvd0Nhc2VDb3VudCAtIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNjA3LDYg
KzYxOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlU
b1Rha2VBbnlTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNl
UHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAg
ICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQ
cm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAg
ICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgKyBzcGVjaWFsRmFzdENhc2VD
b3VudDsKQEAgLTcwNCw3ICs3MTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAg
ICAgIGJvb2wgYWRkRnJlcXVlbnRFeGl0U2l0ZShjb25zdCBERkc6OkZyZXF1ZW50RXhpdFNpdGUm
IHNpdGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklU
Q29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxp
bmVDb2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIG1fZXhpdFByb2ZpbGUu
YWRkKHNpdGUpOwogICAgICAgICB9CiAKQEAgLTgwOSw2ICs4MjIsMjkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHZvaWQgY29weVBvc3RQYXJzZURhdGFGcm9tKENvZGVCbG9jayogYWx0ZXJu
YXRpdmUpOwogICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbUFsdGVybmF0aXZlKCk7
CiAgICAgICAgIAorICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gSklU
dGluZyBraWNrcyBpbiwgaW4gYSBtaXhlZCBtb2RlCisgICAgICAgIC8vIGV4ZWN1dGlvbiB3b3Js
ZC4KKyAgICAgICAgCisgICAgICAgIHZvaWQgZG9udEpJVEFueXRpbWVTb29uKCkKKyAgICAgICAg
eworICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICB2b2lkIGppdEFmdGVyV2FybVVwKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9s
bGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklU
QWZ0ZXJXYXJtVXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0U29vbigp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6
OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIGludDMyX3QgbGxpbnRFeGVjdXRlQ291bnRlcigpIGNvbnN0CisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIH0KKyAgICAg
ICAgCiAgICAgICAgIC8vIEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiB0aWVyZWQgY29t
cGlsYXRpb24ga2lja3MgaW4uIFRoaXMKICAgICAgICAgLy8gY29udHJvbHMgYm90aCB3aGVuIHRo
ZSBvcHRpbWl6aW5nIGNvbXBpbGVyIGlzIGludm9rZWQgYW5kIHdoZW4gT1NSCiAgICAgICAgIC8v
IGVudHJ5IGhhcHBlbnMuIFR3byB0cmlnZ2VycyBleGlzdDogdGhlIGxvb3AgdHJpZ2dlciBhbmQg
dGhlIHJldHVybgpAQCAtMTAwMSw2ICsxMDM3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGJvb2wgbV9zaG91bGREaXNjYXJkQnl0ZWNvZGU7CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAg
IHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKSA9IDA7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJik7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwogICAgICAgICAKQEAgLTEw
MTMsNyArMTA1MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIHRhbGx5RnJlcXVl
bnRFeGl0U2l0ZXMoKSB7IH0KICNlbmRpZgogICAgICAgICAKLSNpZiAhZGVmaW5lZChOREVCVUcp
IHx8IEVOQUJMRShPUENPREVfU0FNUExJTkcpCiAgICAgICAgIHZvaWQgZHVtcChFeGVjU3RhdGUq
LCBjb25zdCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYgYmVnaW4sIFZlY3Rv
cjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJikgY29uc3Q7CiAKICAgICAgICAgQ1N0cmlu
ZyByZWdpc3Rlck5hbWUoRXhlY1N0YXRlKiwgaW50IHIpIGNvbnN0OwpAQCAtMTAyMyw3ICsxMDU5
LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHJpbnRHZXRCeUlkT3AoRXhlY1N0
YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYs
IGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludENhbGxPcChFeGVjU3Rh
dGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwg
Y29uc3QgY2hhciogb3ApIGNvbnN0OwogICAgICAgICB2b2lkIHByaW50UHV0QnlJZE9wKEV4ZWNT
dGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3Im
LCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7Ci0jZW5kaWYKICAgICAgICAgdm9pZCB2aXNpdFN0cnVj
dHVyZXMoU2xvdFZpc2l0b3ImLCBJbnN0cnVjdGlvbiogdlBDKSBjb25zdDsKICAgICAgICAgCiAj
aWYgRU5BQkxFKERGR19KSVQpCkBAIC0xMDg0LDkgKzExMTksMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gbV9zb3VyY2U7CiAgICAgICAgIHVuc2ln
bmVkIG1fc291cmNlT2Zmc2V0OwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBW
ZWN0b3I8dW5zaWduZWQ+IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnM7CiAgICAgICAgIFZl
Y3Rvcjx1bnNpZ25lZD4gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zOworI2lmIEVOQUJMRShM
TElOVCkKKyAgICAgICAgU2VnbWVudGVkVmVjdG9yPExMSW50Q2FsbExpbmtJbmZvLCA4PiBtX2xs
aW50Q2FsbExpbmtJbmZvczsKKyAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PExMSW50Q2FsbExp
bmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4gPiBtX2luY29t
aW5nTExJbnRDYWxsczsKICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFZlY3RvcjxT
dHJ1Y3R1cmVTdHViSW5mbz4gbV9zdHJ1Y3R1cmVTdHViSW5mb3M7CkBAIC0xMDk3LDkgKzExMzQs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtX2pp
dENvZGVXaXRoQXJpdHlDaGVjazsKICAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxMaW5r
SW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdDYWxs
czsKICNlbmRpZgotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8fCBF
TkFCTEUoTExJTlQpCiAgICAgICAgIE93blB0cjxDb21wYWN0SklUQ29kZU1hcD4gbV9qaXRDb2Rl
TWFwOwotICAgICAgICAKKyNlbmRpZgorI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBzdHJ1
Y3QgV2Vha1JlZmVyZW5jZVRyYW5zaXRpb24gewogICAgICAgICAgICAgV2Vha1JlZmVyZW5jZVRy
YW5zaXRpb24oKSB7IH0KICAgICAgICAgICAgIApAQCAtMTE2MiwxMiArMTIwMCwxNCBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBPd25QdHI8Q29kZUJsb2NrPiBtX2FsdGVybmF0aXZlOwog
ICAgICAgICAKKyAgICAgICAgaW50MzJfdCBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAg
IAogICAgICAgICBpbnQzMl90IG1faml0RXhlY3V0ZUNvdW50ZXI7CiAgICAgICAgIHVpbnQzMl90
IG1fc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxh
dGl2ZUZhaWxDb3VudGVyOwogICAgICAgICB1aW50OF90IG1fb3B0aW1pemF0aW9uRGVsYXlDb3Vu
dGVyOwogICAgICAgICB1aW50OF90IG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXI7Ci0KKyAg
ICAgICAgCiAgICAgICAgIHN0cnVjdCBSYXJlRGF0YSB7CiAgICAgICAgICAgIFdURl9NQUtFX0ZB
U1RfQUxMT0NBVEVEOwogICAgICAgICBwdWJsaWM6CkBAIC0xMjQzLDYgKzEyODMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNv
bXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1w
bChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50
KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGR0ludGVybmFsKCk7CiAj
ZW5kaWYKQEAgLTEyNzcsNiArMTMxOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3Rl
ZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUq
LCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAg
ICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29s
IGNhbkNvbXBpbGVXaXRoREZHSW50ZXJuYWwoKTsKICNlbmRpZgpAQCAtMTMxNCw2ICsxMzU2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2Jq
ZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29t
cGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBs
YWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkdJbnRlcm5h
bCgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJ
ZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDYyOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDIw
ICsyNyw0OSBAQAogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK0dldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXIm
IGlkZW50KQoreworICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURf
UEFSQU0oYnl0ZWNvZGVJbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CisgICAgCisgICAgaWYgKGlu
c3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX21ldGhvZF9jaGVjaykKKyAgICAgICAg
aW5zdHJ1Y3Rpb24rKzsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25b
NF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUpCisgICAgICAgIHJldHVy
biBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwg
ZmFsc2UpOworICAgIAorICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmls
ZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgaWYgKG9mZnNldCA9PSBub3RGb3Vu
ZCkKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJl
U2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisgICAgCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMo
U2ltcGxlRGlyZWN0LCBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSwgb2Zmc2V0LCBmYWxzZSk7Cisj
ZWxzZQorICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNl
dCgpLCBub3RGb3VuZCwgZmFsc2UpOworI2VuZGlmCit9CisKIEdldEJ5SWRTdGF0dXMgR2V0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQogewogICAgIFVOVVNFRF9QQVJBTShwcm9m
aWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VE
X1BBUkFNKGlkZW50KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIp
CisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcygpKQor
ICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUlu
ZGV4LCBpZGVudCk7CisgICAgCiAgICAgLy8gRmlyc3QgY2hlY2sgaWYgaXQgbWFrZXMgZWl0aGVy
IGNhbGxzLCBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUgc3VwZXIgY2FyZWZ1bCwgb3IKICAg
ICAvLyBpZiBpdCdzIG5vdCBzZXQgYXQgYWxsLCBpbiB3aGljaCBjYXNlIHdlIHB1bnQuCiAgICAg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm8o
Ynl0ZWNvZGVJbmRleCk7CiAgICAgaWYgKCFzdHViSW5mby5zZWVuKQotICAgICAgICByZXR1cm4g
R2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOwor
ICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUlu
ZGV4LCBpZGVudCk7CiAgICAgCiAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBs
aXN0OwogICAgIGludCBsaXN0U2l6ZTsKQEAgLTYwLDE4ICs4OSwxOSBAQCBHZXRCeUlkU3RhdHVz
IEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgfQogICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbGlzdFNpemU7ICsraSkgewogICAgICAgICBpZiAoIWxpc3QtPmxpc3RbaV0uaXNEaXJlY3Qp
Ci0gICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBTdHJ1Y3R1cmVT
ZXQoKSwgbm90Rm91bmQpOworICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTWFrZXND
YWxscywgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsKICAgICB9CiAgICAgCiAgICAg
Ly8gTmV4dCBjaGVjayBpZiBpdCB0YWtlcyBzbG93IGNhc2UsIGluIHdoaWNoIGNhc2Ugd2Ugd2Fu
dCB0byBiZSBraW5kIG9mIGNhcmVmdWwuCiAgICAgaWYgKHByb2ZpbGVkQmxvY2stPmxpa2VseVRv
VGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1
cyhUYWtlc1Nsb3dQYXRoLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICByZXR1
cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQs
IHRydWUpOwogICAgIAogICAgIC8vIEZpbmFsbHkgZmlndXJlIG91dCBpZiB3ZSBjYW4gZGVyaXZl
IGFuIGFjY2VzcyBzdHJhdGVneS4KICAgICBHZXRCeUlkU3RhdHVzIHJlc3VsdDsKKyAgICByZXN1
bHQubV93YXNTZWVuSW5KSVQgPSB0cnVlOwogICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlw
ZSkgewogICAgIGNhc2UgYWNjZXNzX3Vuc2V0OgotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1
cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICByZXR1
cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7
CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9zZWxmOiB7CiAgICAgICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gc3R1YkluZm8udS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3Ry
dWN0dXJlLmdldCgpOwpAQCAtMTMwLDcgKzE2MCw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZvcigKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UgLy8gRU5B
QkxFKEpJVCkKLSAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1
cmVTZXQoKSwgbm90Rm91bmQpOworICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRp
b24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOwogI2VuZGlmIC8vIEVOQUJMRShK
SVQpCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3Rh
dHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRTdGF0dXMuaAkocmV2aXNpb24gMTA2Mjk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDExIEBA
IHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIEdldEJ5SWRTdGF0dXMoU3RhdGUgc3Rh
dGUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0LCBzaXplX3Qgb2Zmc2V0KQorICAg
IEdldEJ5SWRTdGF0dXMoU3RhdGUgc3RhdGUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJl
U2V0LCBzaXplX3Qgb2Zmc2V0LCBib29sIHdhc1NlZW5JbkpJVCkKICAgICAgICAgOiBtX3N0YXRl
KHN0YXRlKQogICAgICAgICAsIG1fc3RydWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAgICAg
LCBtX29mZnNldChvZmZzZXQpCisgICAgICAgICwgbV93YXNTZWVuSW5KSVQod2FzU2VlbkluSklU
KQogICAgIHsKICAgICAgICAgQVNTRVJUKChzdGF0ZSA9PSBTaW1wbGVEaXJlY3QpID09IChvZmZz
ZXQgIT0gbm90Rm91bmQpKTsKICAgICB9CkBAIC03MCwxMCArNzEsMTUgQEAgcHVibGljOgogICAg
IGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1
Y3R1cmVTZXQ7IH0KICAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7
IH0KICAgICAKKyAgICBib29sIHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzU2Vl
bkluSklUOyB9CisgICAgCiBwcml2YXRlOgorICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1
dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmll
ciYpOworICAgIAogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgU3RydWN0dXJlU2V0IG1fc3RydWN0
dXJlU2V0OwogICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBib29sIG1fd2FzU2VlbkluSklUOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTA2Mjk3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYg
KzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNDZWxsOwogICAgIGNsYXNzIFN0
cnVjdHVyZTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKKyAgICBzdHJ1Y3QgTExJbnRDYWxs
TGlua0luZm87CiAgICAgc3RydWN0IFZhbHVlUHJvZmlsZTsKIAogI2lmIEVOQUJMRShKSVQpCkBA
IC0xNDYsNiArMTQ3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICAgICBzdHJ1Y3Qg
SW5zdHJ1Y3Rpb24geworICAgICAgICBJbnN0cnVjdGlvbigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHUuanNDZWxsLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIEluc3Ry
dWN0aW9uKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICNpZiAhRU5BQkxFKENPTVBVVEVEX0dP
VE9fSU5URVJQUkVURVIpCkBAIC0xODIsNiArMTg4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICAgICAgSW5zdHJ1Y3Rpb24oUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYykg
eyB1LmdldHRlckZ1bmMgPSBnZXR0ZXJGdW5jOyB9CiAgICAgICAgIAorICAgICAgICBJbnN0cnVj
dGlvbihMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSB7IHUuY2FsbExpbmtJbmZvID0g
Y2FsbExpbmtJbmZvOyB9CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihWYWx1ZVByb2Zp
bGUqIHByb2ZpbGUpIHsgdS5wcm9maWxlID0gcHJvZmlsZTsgfQogCiAgICAgICAgIHVuaW9uIHsK
QEAgLTE5MSw3ICsxOTksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFdyaXRlQmFy
cmllckJhc2U8U3RydWN0dXJlQ2hhaW4+IHN0cnVjdHVyZUNoYWluOwogICAgICAgICAgICAgV3Jp
dGVCYXJyaWVyQmFzZTxKU0NlbGw+IGpzQ2VsbDsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jIGdldHRlckZ1bmM7CisgICAgICAgICAgICBMTEludENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvOwogICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlOworICAgICAg
ICAgICAgdm9pZCogcG9pbnRlcjsKICAgICAgICAgfSB1OwogICAgICAgICAKICAgICBwcml2YXRl
OgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZv
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2Fs
bExpbmtJbmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50
Q2FsbExpbmtJbmZvX2gKKyNkZWZpbmUgTExJbnRDYWxsTGlua0luZm9faAorCisjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1
ZGUgPHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVj
dCBJbnN0cnVjdGlvbjsKKworc3RydWN0IExMSW50Q2FsbExpbmtJbmZvIDogcHVibGljIEJhc2lj
UmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiB7CisgICAgTExJbnRDYWxsTGlua0lu
Zm8oKQorICAgIHsKKyAgICB9CisgICAgCisgICAgfkxMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7
CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgfQor
ICAgIAorICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJldHVybiBjYWxsZWU7IH0KKyAgICAKKyAgICB2
b2lkIHVubGluaygpCisgICAgeworICAgICAgICBjYWxsZWUuY2xlYXIoKTsKKyAgICAgICAgbWFj
aGluZUNvZGVUYXJnZXQgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKKyAgICAgICAgaWYgKGlz
T25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgV3JpdGVC
YXJyaWVyPEpTRnVuY3Rpb24+IGNhbGxlZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4g
bGFzdFNlZW5DYWxsZWU7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1hY2hpbmVDb2RlVGFy
Z2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBMTEludENhbGxMaW5r
SW5mb19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxs
TGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTA2Mjk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzUsNiArMzUsMTEgQEAgTWV0aG9kQ2FsbExpbmtTdGF0dXMgTWV0aG9kQ2Fs
bExpbmtTdGF0dQogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURf
UEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BS
T0ZJTEVSKQorICAgIC8vIE5PVEU6IFRoaXMgZG9lcyBub3QgaGF2ZSBhbiBMTEludCBmYWxsLWJh
Y2sgYmVjYXVzZSBMTEludCBkb2VzIG5vdCBkbyBhbnkgbWV0aG9kCisgICAgLy8gY2FsbCBsaW5r
IGNhY2hpbmcuCisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1iZXJPZk1ldGhvZENhbGxMaW5r
SW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIE1ldGhvZENhbGxMaW5rU3RhdHVzKCk7CisgICAgCiAg
ICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RDYWxsID0gcHJvZmlsZWRCbG9jay0+Z2V0TWV0
aG9kQ2FsbExpbmtJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIAogICAgIGlmICghbWV0aG9kQ2Fs
bC5zZWVuIHx8ICFtZXRob2RDYWxsLmNhY2hlZFN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDEwNjI5NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYg
KzEyMyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9nZXRfYXJndW1lbnRz
X2xlbmd0aCwgNCkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWQsIDkpIFwKICAgICAgICAg
bWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24sIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0LCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbCwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfcmVw
bGFjZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfZ2VuZXJpYywgOSkgXAogICAg
ICAgICBtYWNybyhvcF9kZWxfYnlfaWQsIDQpIFwKQEAgLTIwMSw2ICsyMDMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgdHlwZWRlZiBlbnVtIHsgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09E
RV9JRF9FTlVNKSB9IE9wY29kZUlEOwogICAgICN1bmRlZiBPUENPREVfSURfRU5VTQogCisgICAg
Y29uc3QgaW50IG1heE9wY29kZUxlbmd0aCA9IDk7CiAgICAgY29uc3QgaW50IG51bU9wY29kZUlE
cyA9IG9wX2VuZCArIDE7CiAKICAgICAjZGVmaW5lIE9QQ09ERV9JRF9MRU5HVEhTKGlkLCBsZW5n
dGgpIGNvbnN0IGludCBpZCMjX2xlbmd0aCA9IGxlbmd0aDsKQEAgLTIxNyw3ICsyMjAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKFZFUklGWV9PUENPREVf
SUQpOwogICAgICN1bmRlZiBWRVJJRllfT1BDT0RFX0lECiAKLSNpZiBFTkFCTEUoQ09NUFVURURf
R09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikg
fHwgRU5BQkxFKExMSU5UKQogI2lmIENPTVBJTEVSKFJWQ1QpIHx8IENPTVBJTEVSKElOVEVMKQog
ICAgIHR5cGVkZWYgdm9pZCogT3Bjb2RlOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEwNjI5NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMjcgKzI3LDY5IEBACiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5o
IgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgi
CiAKIG5hbWVzcGFjZSBKU0MgewogCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1
dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9j
ayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworICAgIFVOVVNFRF9QQVJBTShp
ZGVudCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9
IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4Owor
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5n
ZXQoKTsKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMo
Tm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgIAorICAgIGlmIChpbnN0cnVj
dGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWQpIHsKKyAgICAgICAgc2l6ZV90
IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlk
ZW50KTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAg
ICAgCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVJlcGxhY2UsIHN0cnVjdHVy
ZSwgMCwgMCwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKGluc3RydWN0aW9uWzBd
LnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdAorICAgICAg
ICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9ub3JtYWwpOworICAgIAorICAgIFN0cnVjdHVyZSogbmV3U3RydWN0dXJlID0gaW5z
dHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWlu
ID0gaW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKTsKKyAgICBBU1NFUlQobmV3
U3RydWN0dXJlKTsKKyAgICBBU1NFUlQoY2hhaW4pOworICAgIAorICAgIHNpemVfdCBvZmZzZXQg
PSBuZXdTdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7
CisgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0
dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgIAorICAgIHJldHVybiBQ
dXRCeUlkU3RhdHVzKFNpbXBsZVRyYW5zaXRpb24sIHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBj
aGFpbiwgb2Zmc2V0KTsKKyNlbHNlCisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1h
dGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworI2VuZGlmCit9CisKIFB1dEJ5SWRTdGF0dXMgUHV0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQogewogICAgIFVOVVNFRF9QQVJBTShw
cm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5V
U0VEX1BBUkFNKGlkZW50KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklM
RVIpCisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcygp
KQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29k
ZUluZGV4LCBpZGVudCk7CisgICAgCiAgICAgaWYgKHByb2ZpbGVkQmxvY2stPmxpa2VseVRvVGFr
ZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQogICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhU
YWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBub3RGb3VuZCk7CiAgICAgCiAgICAgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvID0gcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm8oYnl0ZWNvZGVJbmRl
eCk7CiAgICAgaWYgKCFzdHViSW5mby5zZWVuKQotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1
cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21w
dXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAK
ICAgICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIGFjY2Vzc191bnNl
dDoKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwg
bm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2Nr
LCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX3B1dF9i
eV9pZF9yZXBsYWNlOiB7CiAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5
SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmdldCgKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMTA2Mjk3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsNiArOTMsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90IG9mZnNldCgpIGNv
bnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCiBwcml2YXRlOgorICAgIHN0YXRpYyBQdXRC
eUlkU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCwgSWRlbnRpZmllciYpOworICAgIAogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgU3RydWN0
dXJlKiBtX29sZFN0cnVjdHVyZTsKICAgICBTdHJ1Y3R1cmUqIG1fbmV3U3RydWN0dXJlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDEwNjI5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiQmF0Y2hlZFRyYW5zaXRpb25PcHRpbWl6ZXIuaCIK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNs
dWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgogI2lu
Y2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCkBAIC0xMTYsMjYg
KzExNywxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBleHBlY3RlZCBieSB0aGUgY2FsbGVlLgog
Ki8KIAotI2lmbmRlZiBOREVCVUcKIHN0YXRpYyBib29sIHNfZHVtcHNHZW5lcmF0ZWRDb2RlID0g
ZmFsc2U7Ci0jZW5kaWYKIAogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6c2V0RHVtcHNHZW5lcmF0
ZWRDb2RlKGJvb2wgZHVtcHNHZW5lcmF0ZWRDb2RlKQogewotI2lmbmRlZiBOREVCVUcKICAgICBz
X2R1bXBzR2VuZXJhdGVkQ29kZSA9IGR1bXBzR2VuZXJhdGVkQ29kZTsKLSNlbHNlCi0gICAgVU5V
U0VEX1BBUkFNKGR1bXBzR2VuZXJhdGVkQ29kZSk7Ci0jZW5kaWYKIH0KIAogYm9vbCBCeXRlY29k
ZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkKIHsKLSNpZm5kZWYgTkRFQlVHCiAgICAg
cmV0dXJuIHNfZHVtcHNHZW5lcmF0ZWRDb2RlOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0j
ZW5kaWYKIH0KIAogSlNPYmplY3QqIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCkBAIC0x
NDgsMTAgKzEzOSw4IEBAIEpTT2JqZWN0KiBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQog
CiAgICAgbV9jb2RlQmxvY2stPnNldEluc3RydWN0aW9uQ291bnQobV9jb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLnNpemUoKSk7CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKHNfZHVtcHNHZW5l
cmF0ZWRDb2RlKQogICAgICAgICBtX2NvZGVCbG9jay0+ZHVtcChtX3Njb3BlQ2hhaW4tPmdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpKTsKLSNlbmRpZgogCiAgICAgaWYgKChtX2NvZGVUeXBlID09
IEZ1bmN0aW9uQ29kZSAmJiAhbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSAmJiAh
bV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSkgfHwgbV9jb2RlVHlwZSA9PSBFdmFsQ29kZSkK
ICAgICAgICAgc3ltYm9sVGFibGUoKS5jbGVhcigpOwpAQCAtMTI3Niw5ICsxMjY1LDcgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAg
ICAgICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5z
aXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBtX2NvZGVC
bG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7
Ci0jZW5kaWYKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bj
b2RlKHJlcXVpcmVzRHluYW1pY0NoZWNrcyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBv
cF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmlu
ZGV4KCkpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVy
dHkpKTsKQEAgLTE0NDAsOSArMTQyNyw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxS
ZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKElO
VEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24o
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IGVtaXRQcm9maWxlZE9wY29kZShyZXF1aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZl
X2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChwcm9wRHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYWRk
Q29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE0OTAsOSArMTQ3NSw3IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgIG1fY29kZUJs
b2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlm
Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNv
bHZlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIFZhbHVl
UHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShyZXF1aXJlc0R5bmFtaWNDaGVj
a3MgPyBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9wRHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoYWRkQ29uc3RhbnQocHJvcGVydHkpKTsKQEAgLTE1MTEsOSArMTQ5NCw3IEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNZXRob2RDaGVjaygKIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7Ci0jaWYgRU5BQkxFKElOVEVS
UFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGlu
c3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKIAogICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9nZXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOwpAQCAtMTUzOSw5ICsxNTIwLDcgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBcgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAg
ICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMo
KS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTU1Nyw5ICsxNTM2LDcg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogCiBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVO
QUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgCiAgICAgZW1pdE9w
Y29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRl
eCgpKTsKQEAgLTE4MzksNyArMTgxNiwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENhbGwoCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAv
LyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKSk7IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0Cisj
aWYgRU5BQkxFKExMSU5UKQorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+
YWRkTExJbnRDYWxsTGlua0luZm8oKSk7CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCgwKTsKKyNlbmRpZgogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0
ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBl
bWl0UHJvZmlsZWRPcGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKQEAgLTE5NDMsNyArMTkyNCwx
MSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7IC8v
IGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0
ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0luZm8oKSk7
CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewog
ICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfY2Fs
bF9wdXRfcmVzdWx0KTsKQEAgLTIyMDQsNyArMjE4OSwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdENhdGNoCiB7CiAgICAgbV91c2VzRXhjZXB0aW9ucyA9IHRydWU7CiAj
aWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSGFuZGxlckluZm8gaW5mbyA9
IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0aW9u
TGFiZWwoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfY2F0Y2gpKSB9OworI2Vsc2UKICAg
ICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDAp
LCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29w
ZURlcHRoLCBDb2RlTG9jYXRpb25MYWJlbCgpIH07CisjZW5kaWYKICNlbHNlCiAgICAgSGFuZGxl
ckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCB9
OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFy
c2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVD
b2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTA2Mjk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNCw5ICs2MDQs
NyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgVU5VU0VEX1BBUkFNKG5vZGVJbmRleCk7CiAg
ICAgICAgIAotICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
SW5kZXgpOwotICAgICAgICBBU1NFUlQocHJvZmlsZSk7Ci0gICAgICAgIFByZWRpY3RlZFR5cGUg
cHJlZGljdGlvbiA9IHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOworICAgICAg
ICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVk
QmxvY2stPnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChieXRlY29kZUlu
ZGV4KTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCiAgICAgICAgIHByaW50ZigiRHlu
YW1pYyBbQCV1LCBiYyMldV0gcHJlZGljdGlvbjogJXNcbiIsIG5vZGVJbmRleCwgYnl0ZWNvZGVJ
bmRleCwgcHJlZGljdGlvblRvU3RyaW5nKHByZWRpY3Rpb24pKTsKICNlbmRpZgpAQCAtMTA0MSw2
ICsxMDM5LDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoYm9vbAogICAg
IAogICAgIC8vIElmIHdlIGdldCBoZXJlIHRoZW4gaXQgbG9va3MgbGlrZSB3ZSBzaG91bGQgZGVm
aW5pdGVseSBpbmxpbmUgdGhpcyBjb2RlLiBQcm9jZWVkCiAgICAgLy8gd2l0aCBwYXJzaW5nIHRo
ZSBjb2RlIHRvIGdldCBieXRlY29kZSwgc28gdGhhdCB3ZSBjYW4gdGhlbiBwYXJzZSB0aGUgYnl0
ZWNvZGUuCisgICAgLy8gTm90ZSB0aGF0IGlmIExMSW50IGlzIGVuYWJsZWQsIHRoZSBieXRlY29k
ZSB3aWxsIGFsd2F5cyBiZSBhdmFpbGFibGUuIEFsc28gbm90ZQorICAgIC8vIHRoYXQgaWYgTExJ
bnQgaXMgZW5hYmxlZCwgd2UgbWF5IGlubGluZSBhIGNvZGUgYmxvY2sgdGhhdCBoYXMgbmV2ZXIg
YmVlbiBKSVR0ZWQKKyAgICAvLyBiZWZvcmUhCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBt
X2NvZGVCbG9ja0NhY2hlLmdldChDb2RlQmxvY2tLZXkoZXhlY3V0YWJsZSwga2luZCksIGV4cGVj
dGVkRnVuY3Rpb24tPnNjb3BlKCkpOwogICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xNzQxLDcgKzE3NDIsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLCBtX2N1cnJlbnRJbmRleCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlm
IChtZXRob2RDYWxsU3RhdHVzLmlzU2V0KCkKLSAgICAgICAgICAgICAgICAmJiAhZ2V0QnlJZFN0
YXR1cy5pc1NldCgpCisgICAgICAgICAgICAgICAgJiYgIWdldEJ5SWRTdGF0dXMud2FzU2Vlbklu
SklUKCkKICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmls
ZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gSXQncyBtb25vbW9ycGhpYyBhcyBmYXIgYXMgd2UgY2FuIHRlbGwsIHNpbmNlIHRoZSBt
ZXRob2RfY2hlY2sgd2FzIGxpbmtlZAogICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGUgc2xvdyBw
YXRoIChpLmUuIHRoZSBub3JtYWwgZ2V0X2J5X2lkKSBuZXZlciBmaXJlZC4KQEAgLTE4MTAsNyAr
MTgxMSw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKIAogICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X2lkKTsKICAgICAgICAgfQotICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZDogeworICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CiAgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUg
PSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBOb2Rl
SW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAg
ICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lk
ZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kXTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTA2
Mjk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw4IEBAIGlubGluZSBib29sIGNhbkNvbXBpbGVPcGNv
ZGUoT3Bjb2RlSUQgb3AKICAgICBjYXNlIG9wX3B1dF9zY29wZWRfdmFyOgogICAgIGNhc2Ugb3Bf
Z2V0X2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0OgorICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsOgogICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXI6CiAgICAgY2FzZSBvcF9wdXRfZ2xvYmFs
X3ZhcjoKICAgICBjYXNlIG9wX2ptcDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDEwNjI5NykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNiArNDgsMjEgQEAgdm9pZCBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgdWludDMyX3QgZXhpdEluZGV4ID0gZ2xvYmFsRGF0YS0+b3NyRXhpdEluZGV4OwogICAg
IE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2stPm9zckV4aXQoZXhpdEluZGV4KTsKICAgICAKKyAg
ICAvLyBNYWtlIHN1cmUgYWxsIGNvZGUgb24gb3VyIGlubGluZSBzdGFjayBpcyBKSVQgY29tcGls
ZWQuIFRoaXMgaXMgbmVjZXNzYXJ5IHNpbmNlCisgICAgLy8gd2UgbWF5IG9wdCB0byBpbmxpbmUg
YSBjb2RlIGJsb2NrIGV2ZW4gYmVmb3JlIGl0IGhhZCBldmVyIGJlZW4gY29tcGlsZWQgYnkgdGhl
CisgICAgLy8gSklULCBidXQgb3VyIE9TUiBleGl0IGluZnJhc3RydWN0dXJlIGN1cnJlbnRseSBv
bmx5IHdvcmtzIGlmIHRoZSB0YXJnZXQgb2YgdGhlCisgICAgLy8gT1NSIGV4aXQgaXMgSklUIGNv
ZGUuIFRoaXMgY291bGQgYmUgY2hhbmdlZCBzaW5jZSB0aGVyZSBpcyBub3RoaW5nIHBhcnRpY3Vs
YXJseQorICAgIC8vIGhhcmQgYWJvdXQgZG9pbmcgYW4gT1NSIGV4aXQgaW50byB0aGUgaW50ZXJw
cmV0ZXIsIGJ1dCBmb3Igbm93IHRoaXMgc2VlbXMgdG8gbWFrZQorICAgIC8vIHNlbnNlIGluIHRo
YXQgaWYgd2UncmUgT1NSIGV4aXRpbmcgZnJvbSBpbmxpbmVkIGNvZGUgb2YgYSBERkcgY29kZSBi
bG9jaywgdGhlbgorICAgIC8vIHByb2JhYmx5IGl0J3MgYSBnb29kIHNpZ24gdGhhdCB0aGUgdGhp
bmcgd2UncmUgZXhpdGluZyBpbnRvIGlzIGhvdC4gRXZlbiBtb3JlCisgICAgLy8gaW50ZXJlc3Rp
bmdseSwgc2luY2UgdGhlIGNvZGUgd2FzIGlubGluZWQsIGl0IG1heSBuZXZlciBvdGhlcndpc2Ug
Z2V0IEpJVAorICAgIC8vIGNvbXBpbGVkIHNpbmNlIHRoZSBhY3Qgb2YgaW5saW5pbmcgaXQgbWF5
IGVuc3VyZSB0aGF0IGl0IG90aGVyd2lzZSBuZXZlciBydW5zLgorICAgIGZvciAoQ29kZU9yaWdp
biBjb2RlT3JpZ2luID0gZXhpdC5tX2NvZGVPcmlnaW47IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lOyBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlcikgewor
ICAgICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjb2RlT3JpZ2luLmlubGlu
ZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSkKKyAgICAgICAgICAgIC0+YmFzZWxpbmVDb2Rl
QmxvY2tGb3IoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmlzQ2FsbCA/IENvZGVGb3JDYWxs
IDogQ29kZUZvckNvbnN0cnVjdCkKKyAgICAgICAgICAgIC0+aml0Q29tcGlsZSgqZ2xvYmFsRGF0
YSk7CisgICAgfQorICAgIAogICAgIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5ID0gMDsK
ICAgICBpZiAoZXhpdC5tX3JlY292ZXJ5SW5kZXgpCiAgICAgICAgIHJlY292ZXJ5ID0gJmNvZGVC
bG9jay0+c3BlY3VsYXRpb25SZWNvdmVyeShleGl0Lm1fcmVjb3ZlcnlJbmRleCAtIDEpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAxMDYyOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUgIkRGR1JlcGF0Y2guaCIKKyNpbmNs
dWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAj
aW5jbHVkZSAiSW5saW5lQVNNLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTY3Myw1
MCArNjc0LDYgQEAgc2l6ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cgogICAg
IHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOwotRW5jb2RlZEpTVmFsdWUg
REZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3Rh
dGUqKTsKLQotI2lmIENQVShYODZfNjQpCi1hc20gKAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkco
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIg
IlxuIgotICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCi0gICAgIm1vdiAlcjEzLCAlcmRpXG4i
Ci0gICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZh
bHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQVShYODYpCi1hc20gKAotIi5nbG9i
bCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1C
T0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4iCi0gICAg
Im1vdiAlZWRpLCA0KCVlc3ApXG4iCi0gICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElP
TihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQ
VShBUk1fVEhVTUIyKQotYXNtICgKLSIudGV4dCIgIlxuIgotIi5hbGlnbiAyIiAiXG4iCi0iLmds
b2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1ISURFX1NZ
TUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi0iLnRodW1iIiAiXG4iCi0iLnRodW1i
X2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibGRyIHI1
LCBbcjUsICMtNDBdIiAiXG4iCi0gICAgImNweSByMCwgcjUiICJcbiIKLSAgICAiYiAiIFNZTUJP
TF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkg
IlxuIgotKTsKLSNlbmRpZgotCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7Ci0gICAgCi0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7
Ci19Ci0KIHN0YXRpYyB2b2lkKiBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUs
IEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgRXhl
Y1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMDYyOTcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODM3LDcgKzgzNyw3IEBA
IHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKICAgICAgICAgc2V0SGln
aFdhdGVyTWFyayhtYXgocHJvcG9ydGlvbmFsQnl0ZXMsIG1fbWluQnl0ZXNQZXJDeWNsZSkpOwog
ICAgIH0KICAgICBKQVZBU0NSSVBUQ09SRV9HQ19FTkQoKTsKLQorICAgIAogICAgICgqbV9hY3Rp
dml0eUNhbGxiYWNrKSgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShy
ZXZpc2lvbiAxMDYyOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
SlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTVmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0
ZXJhdG9yOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJr
ZWRBcmd1bWVudEJ1ZmZlcjsKICAgICBjbGFzcyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0
cmluZzsKQEAgLTEzNSwxMSArMTM2LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNz
IE1hcmtlZFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBCdW1wU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRv
cjsKLSAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKIAogICAgICAgICBzaXplX3Qgd2F0
ZXJNYXJrKCk7CiAgICAgICAgIHNpemVfdCBoaWdoV2F0ZXJNYXJrKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlzaW9uIDEwNjI5NykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwNCw3ICszMDQsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
CiAjZW5kaWYKIAogICAgIEFTU0VSVChIZWFwOjppc01hcmtlZChjZWxsKSk7Ci0KKyAgICAKICAg
ICBpZiAoaXNKU1N0cmluZyhjZWxsKSkgewogICAgICAgICBKU1N0cmluZzo6dmlzaXRDaGlsZHJl
bihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAx
MDYyOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSGVhcDsK
IGNsYXNzIEpTQ2VsbDsKIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKK2NsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsKIGNsYXNzIFNsb3RWaXNpdG9yOwog
CkBAIC04Nyw2ICs4OCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGZyZWVCbG9ja3MoTWFya2VkQmxv
Y2sqIGhlYWQpOwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisgICAgCiAgICAgdm9pZCogYWxsb2NhdGVTbG93Q2FzZShTaXplQ2xhc3MmKTsKICAg
ICB2b2lkKiB0cnlBbGxvY2F0ZUhlbHBlcihNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CiAgICAg
dm9pZCogdHJ5QWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTA2
Mjk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDkgQEAgbmFtZXNwYWNlIEpTQyAgewogI2lmIEVO
QUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgSW5zdHJ1Y3Rpb24qIHJldHVyblZQQygpIGNvbnN0
IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10udlBDKCk7IH0KICNlbmRpZgor
I2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25z
dCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPih0aGlzW1JlZ2lzdGVyRmlsZTo6
QXJndW1lbnRDb3VudF0udGFnKCkpOyB9CisjZW5kaWYKIAogICAgICAgICB2b2lkIHNldENhbGxl
ckZyYW1lKENhbGxGcmFtZSogY2FsbGVyRnJhbWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0
aGlzKVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXSA9IGNhbGxlckZyYW1lOyB9CiAgICAgICAg
IHZvaWQgc2V0U2NvcGVDaGFpbihTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikgeyBzdGF0aWNf
Y2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0gPSBzY29wZUNo
YWluOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEwNjI5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5
LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNlbmRpZgogCi0jZGVmaW5lIFdURl9VU0VfR0NDX0NP
TVBVVEVEX0dPVE9fV09SS0FST1VORCAoRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIp
ICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKKyNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09U
T19XT1JLQVJPVU5EICgoRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJM
RShMTElOVCkpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IApAQCAtNTQ3LDE3ICs1NDcsNDMgQEAgSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKIHsKIH0K
IAotdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShib29sIGNhblVzZUpJVCkKK0ludGVycHJl
dGVyOjp+SW50ZXJwcmV0ZXIoKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJF
VEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICBkZWxl
dGVbXSBtX29wY29kZVRhYmxlOworI2VuZGlmCit9CisKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRp
YWxpemUoTExJbnQ6OkRhdGEqIGxsaW50RGF0YSwgYm9vbCBjYW5Vc2VKSVQpCit7CisgICAgVU5V
U0VEX1BBUkFNKGxsaW50RGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKGNhblVzZUpJVCk7CisjaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAh
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisgICAgLy8gSGF2aW5nIExMSW50IGVu
YWJsZWQsIGJ1dCBub3QgYmVpbmcgYWJsZSB0byB1c2UgdGhlIEpJVCwgYW5kIG5vdCBoYXZpbmcK
KyAgICAvLyBhIGNvbXB1dGVkIGdvdG8gaW50ZXJwcmV0ZXIsIGlzIG5vdCBzdXBwb3J0ZWQuIE5v
dCBiZWNhdXNlIHdlIGNhbm5vdAorICAgIC8vIHN1cHBvcnQgaXQsIGJ1dCBiZWNhdXNlIEkgZGVj
aWRlZCB0byBkcmF3IHRoZSBsaW5lIGF0IHRoZSBudW1iZXIgb2YKKyAgICAvLyBwZXJtdXRhdGlv
bnMgb2YgZXhlY3V0aW9uIGVuZ2luZXMgdGhhdCBJIHdhbnRlZCB0aGlzIGNvZGUgdG8gZ3Jvay4K
KyAgICBBU1NFUlQoY2FuVXNlSklUKTsKKyNlbmRpZgogICAgIGlmIChjYW5Vc2VKSVQpIHsKKyNp
ZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bjb2RlVGFibGUgPSBsbGludERhdGEtPm9wY29k
ZU1hcCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQor
ICAgICAgICAgICAgbV9vcGNvZGVJRFRhYmxlLmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNf
Y2FzdDxPcGNvZGVJRD4oaSkpOworI2Vsc2UKICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVz
ZW50LCBkb24ndCB1c2UganVtcCBkZXN0aW5hdGlvbnMgZm9yIG9wY29kZXMuCiAgICAgICAgIAog
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAg
ICAgICBPcGNvZGUgb3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KGkpKTsKICAgICAgICAgICAgIG1fb3Bjb2RlVGFibGVbaV0gPSBvcGNvZGU7CiAgICAg
ICAgIH0KKyNlbmRpZgogICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBt
X29wY29kZVRhYmxlID0gbmV3IE9wY29kZVtudW1PcGNvZGVJRHNdOworI2VuZGlmCiAgICAgICAg
IHByaXZhdGVFeGVjdXRlKEluaXRpYWxpemVBbmRSZXR1cm4sIDAsIDApOwogICAgICAgICAKICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKQEAgLTU2Niw3ICs1
OTIsNiBAQCB2b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKGJvb2wgY2FuVXNlCiAgICAgICAg
IG1fZW5hYmxlZCA9IHRydWU7CiAgICAgfQogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2FuVXNl
SklUKTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICNl
bHNlCkBAIC02NjcsOSArNjkyLDExIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMo
Q2FsbEZyYW0KIAogYm9vbCBJbnRlcnByZXRlcjo6aXNPcGNvZGUoT3Bjb2RlIG9wY29kZSkKIHsK
LSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoTExJTlQp
CiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybiBvcGNvZGUgPj0gMCAmJiBzdGF0
aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSkgPD0gb3Bf
ZW5kOworI2VuZGlmCiAgICAgcmV0dXJuIG9wY29kZSAhPSBIYXNoVHJhaXRzPE9wY29kZT46OmVt
cHR5VmFsdWUoKQogICAgICAgICAmJiAhSGFzaFRyYWl0czxPcGNvZGU+Ojppc0RlbGV0ZWRWYWx1
ZShvcGNvZGUpCiAgICAgICAgICYmIG1fb3Bjb2RlSURUYWJsZS5jb250YWlucyhvcGNvZGUpOwpA
QCAtNzI2LDExICs3NTMsMTEgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2lu
ZENhbAogICAgIC8vIGhhdmUgdG8gc3VidHJhY3QgMS4KICNpZiBFTkFCTEUoSklUKSAmJiBFTkFC
TEUoSU5URVJQUkVURVIpCiAgICAgaWYgKGNhbGxlckZyYW1lLT5nbG9iYWxEYXRhKCkuY2FuVXNl
SklUKCkpCi0gICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNl
dChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVC
bG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7
CiAgICAgZWxzZQogICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVP
ZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAxOwogI2VsaWYgRU5BQkxFKEpJVCkKLSAg
ICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5y
ZXR1cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZz
ZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZWxzZQogICAgIGJ5dGVj
b2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQ
QygpKSAtIDE7CiAjZW5kaWYKQEAgLTMzMjUsNiArMzM1Miw4IEBAIHNraXBfaWRfY3VzdG9tX3Nl
bGY6CiAjaWYgVVNFKEdDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQpCiAgICAgICBza2lwX3B1
dF9ieV9pZDoKICNlbmRpZgorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0KQorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsKQogICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pIHsKICAgICAg
ICAgLyogb3BfcHV0X2J5X2lkX3RyYW5zaXRpb24gYmFzZShyKSBwcm9wZXJ0eShpZCkgdmFsdWUo
cikgb2xkU3RydWN0dXJlKHNJRCkgbmV3U3RydWN0dXJlKHNJRCkgc3RydWN0dXJlQ2hhaW4oY2hh
aW4pIG9mZnNldChuKSBkaXJlY3QoYikKICAgICAgICAgIApAQCAtNTE1NywxMCArNTE4NiwxMCBA
QCB2b2lkIEludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgICAgIGJ5dGVj
b2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJl
dHVyblZQQygpKTsKICNpZiBFTkFCTEUoSklUKQogICAgIGVsc2UKLSAgICAgICAgYnl0ZWNvZGVP
ZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJu
UEMoKSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29k
ZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogI2Vs
c2UKLSAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQo
Y2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVC
bG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7
CiAjZW5kaWYKICAgICBsaW5lTnVtYmVyID0gY2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVyRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQgLSAxKTsKICAgICBzb3VyY2VJRCA9IGNhbGxl
ckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24g
MTA2Mjk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIK
ICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJM
TEludERhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUu
aCIKIApAQCAtNDUsNiArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlv
bkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9i
amVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3Jh
bUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5v
ZGU7CkBAIC0xMDAsMTkgKzEwMiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElu
dGVycHJldGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQgY2xh
c3MgSklUOwogICAgIHB1YmxpYzoKICAgICAgICAgSW50ZXJwcmV0ZXIoKTsKKyAgICAgICAgfklu
dGVycHJldGVyKCk7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBjYW5V
c2VKSVQpOworICAgICAgICB2b2lkIGluaXRpYWxpemUoTExJbnQ6OkRhdGEqLCBib29sIGNhblVz
ZUpJVCk7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKSB7IHJldHVybiBt
X3JlZ2lzdGVyRmlsZTsgfQogICAgICAgICAKICAgICAgICAgT3Bjb2RlIGdldE9wY29kZShPcGNv
ZGVJRCBpZCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRF
RF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgICAgICByZXR1cm4g
bV9vcGNvZGVUYWJsZVtpZF07CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIGlkOwpAQCAtMTIy
LDcgKzEyNiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2Rl
SUQoT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlh
bGl6ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJM
RShMTElOVCkKKyAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKKyAgICAgICAg
ICAgIHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CisjZWxpZiBFTkFCTEUoQ09N
UFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNv
ZGUpKTsKICAgICAgICAgICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICAgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSk7
CkBAIC0xMzIsNiArMTM5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJu
IG9wY29kZTsKICNlbmRpZgogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGVuYWJs
ZWQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9lbmFibGVkOworICAgICAgICB9
CiAKICAgICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCkBAIC0xOTksNyArMjExLDEwIEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSBtX3JlZ2lzdGVyRmlsZTsK
ICAgICAgICAgCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5B
QkxFKExMSU5UKQorICAgICAgICBPcGNvZGUqIG1fb3Bjb2RlVGFibGU7IC8vIE1hcHMgT3Bjb2Rl
SUQgPT4gT3Bjb2RlIGZvciBjb21waWxpbmcKKyAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29k
ZUlEPiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNv
bXBpbGluZworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAg
IE9wY29kZSBtX29wY29kZVRhYmxlW251bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQgPT4g
T3Bjb2RlIGZvciBjb21waWxpbmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBt
X29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGlu
ZwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0
ZXJGaWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1JlZ2lzdGVyRmlsZS5oCShyZXZpc2lvbiAxMDYyOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAg
ICBjbGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IAogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFJlZ2lzdGVyRmlsZSk7CkBAIC04MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIqKTsK
ICAgICAgICAgdm9pZCByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9pZCBhZGRU
b0NvbW1pdHRlZEJ5dGVDb3VudChsb25nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFs
dWUuaCIKKworI2lmIENPTVBJTEVSKEdDQykKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2lu
Y2x1ZGUgIklubGluZUFTTS5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNW
YWx1ZUlubGluZU1ldGhvZHMuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFM
VUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSop
OworCisjaWYgQ1BVKFg4Nl82NCkKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4i
CisgICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKKyAgICAibW92ICVyMTMsICVyZGlcbiIKKyAg
ICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVX
aXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKFg4NikKK2FzbSAoCisiLmdsb2JsICIg
U1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKKyAgICAibW92
ICVlZGksIDQoJWVzcClcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKEFS
TV9USFVNQjIpCithc20gKAorIi50ZXh0IiAiXG4iCisiLmFsaWduIDIiICJcbiIKKyIuZ2xvYmwg
IiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lNQk9M
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKKyIudGh1bWIiICJcbiIKKyIudGh1bWJfZnVu
YyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9M
X1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJsZHIgcjUsIFty
NSwgIy00MF0iICJcbiIKKyAgICAiY3B5IHIwLCByNSIgIlxuIgorICAgICJiICIgU1lNQk9MX1NU
UklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4i
CispOworI2VuZGlmCisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVS
Tl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0
YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIENPTVBJTEVSKEdDQykKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9I
b3N0Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorI2RlZmluZSBIb3N0Q2FsbFJldHVyblZhbHVl
X2gKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworLy8gVW5mb3J0dW5hdGVseSB0aGlz
IG9ubHkgd29ya3Mgb24gR0NDLWxpa2UgY29tcGlsZXJzLiBBbmQgaXQncyBjdXJyZW50bHkgb25s
eSB1c2VkCisvLyBieSBMTEludCBhbmQgREZHLCB3aGljaCBhbHNvIGFyZSByZXN0cmljdGVkIHRv
IEdDQy1saWtlIGNvbXBpbGVycy4gV2Ugc2hvdWxkCisvLyBwcm9iYWJseSBmaXggdGhhdCBhdCBz
b21lIHBvaW50LgorI2lmIENPTVBJTEVSKEdDQykKKworI2lmIENBTExJTkdfQ09OVkVOVElPTl9J
U19TVERDQUxMCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIENERUNMCisj
ZWxzZQorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTgorI2VuZGlmCisKK25h
bWVzcGFjZSBKU0MgeworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJO
X1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Cit9CisKKyNlbmRpZiAvLyBD
T01QSUxFUihHQ0MpCisKKyNlbmRpZiAvLyBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTA2Mjk3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDgg
QEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBERUZJTkVfT1Ao
b3BfcHJvZmlsZV93aWxsX2NhbGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX25ld19zY29w
ZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfc2NvcGUpCisgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAg
REVGSU5FX09QKG9wX3B1dF9ieV9pbmRleCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV92
YWwpCkBAIC00ODYsNiArNDg4LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Bvc3RfaW5jKQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfcHJlX2RlYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9w
X3ByZV9pbmMpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Ogor
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3B1dF9ieV92YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9yZXNvbHZlX2ds
b2JhbCkKQEAgLTUyNSw2ICs1MjksMTAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nh
c2VzKCkKIAogSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bmN0aW9uRW50
cnlBcml0eUNoZWNrKQogeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRm
KCJDb21waWxpbmcgSklUIGNvZGUhXG4iKTsKKyNlbmRpZgorICAgIAogI2lmIEVOQUJMRShWQUxV
RV9QUk9GSUxFUikKICAgICBtX2NhbkJlT3B0aW1pemVkID0gbV9jb2RlQmxvY2stPmNhbkNvbXBp
bGVXaXRoREZHKCk7CiAjZW5kaWYKQEAgLTY4OSw4ICs2OTcsMTIgQEAgSklUQ29kZSBKSVQ6OnBy
aXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgogICAgICAgICBpbmZvLmNhbGxSZXR1cm5Mb2NhdGlv
biA9IG1fY29kZUJsb2NrLT5zdHJ1Y3R1cmVTdHViSW5mbyhtX21ldGhvZENhbGxDb21waWxhdGlv
bkluZm9baV0ucHJvcGVydHlBY2Nlc3NJbmRleCkuY2FsbFJldHVybkxvY2F0aW9uOwogICAgIH0K
IAotI2lmIEVOQUJMRShERkdfSklUKQotICAgIGlmIChtX2NhbkJlT3B0aW1pemVkKSB7CisjaWYg
RU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKKyAgICBpZiAobV9jYW5CZU9wdGltaXpl
ZAorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgfHwgdHJ1ZQorI2VuZGlmCisgICAgICAgICkg
ewogICAgICAgICBDb21wYWN0SklUQ29kZU1hcDo6RW5jb2RlciBqaXRDb2RlTWFwRW5jb2RlcjsK
ICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVjb2RlT2Zmc2V0
IDwgbV9sYWJlbHMuc2l6ZSgpOyArK2J5dGVjb2RlT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAo
bV9sYWJlbHNbYnl0ZWNvZGVPZmZzZXRdLmlzU2V0KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuaAkocmV2aXNpb24gMTA2Mjk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEpJVENvZGUoKSB7IH0KICNlbmRpZgogICAgIHB1YmxpYzoKLSAgICAg
ICAgZW51bSBKSVRUeXBlIHsgSG9zdENhbGxUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9Owor
ICAgICAgICBlbnVtIEpJVFR5cGUgeyBOb25lLCBIb3N0Q2FsbFRodW5rLCBJbnRlcnByZXRlclRo
dW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CiAgICAgICAgIAogICAgICAgICBzdGF0aWMgSklU
VHlwZSBib3R0b21UaWVySklUKCkKICAgICAgICAgewpAQCAtNjYsOCArNjYsMTkgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gREZHSklUOwogICAgICAgICB9CiAgICAgICAg
IAorICAgICAgICBzdGF0aWMgYm9vbCBpc09wdGltaXppbmdKSVQoSklUVHlwZSBqaXRUeXBlKQor
ICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBERkdKSVQ7CisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBib29sIGlzQmFzZWxpbmVDb2RlKEpJVFR5cGUg
aml0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gSW50ZXJw
cmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEJhc2VsaW5lSklUOworICAgICAgICB9CisgICAgICAg
IAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIEpJVENvZGUoKQorICAgICAgICAgICAgOiBtX2pp
dFR5cGUoTm9uZSkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTc1LDYgKzg2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICA6IG1fcmVmKHJlZikKICAgICAgICAgICAgICwgbV9q
aXRUeXBlKGppdFR5cGUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChqaXRUeXBlICE9
IE5vbmUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJhdG9yICEoKSBj
b25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCShyZXZpc2lvbiAx
MDYyOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMywxNSArMzMsMjEgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5o
IgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkxM
SW50RW50cnlwb2ludHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IENvZGVCbG9ja1R5cGU+CiBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBK
SVRDb2RlJiBqaXRDb2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CisgICAgaWYgKGpp
dFR5cGUgPT0gY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIAogICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgCisgICAgY29kZUJsb2NrLT51bmxpbmtJbmNvbWluZ0NhbGxzKCk7CisgICAgCiAg
ICAgYm9vbCBkZmdDb21waWxlZCA9IGZhbHNlOwogICAgIGlmIChqaXRUeXBlID09IEpJVENvZGU6
OkRGR0pJVCkKICAgICAgICAgZGZnQ29tcGlsZWQgPSBERkc6OnRyeUNvbXBpbGUoZ2xvYmFsRGF0
YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsKQEAgLTU1LDEwICs2MSw3IEBAIGlubGluZSBi
b29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2wKICAgICAgICAgfQogICAgICAgICBqaXRD
b2RlID0gSklUOjpjb21waWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCkpOwogICAgIH0K
LSNpZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLSAgICBpZiAoIUJ5dGVjb2RlR2VuZXJhdG9y
OjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKLSAgICAgICAgY29kZUJsb2NrLT5oYW5kbGVCeXRlY29k
ZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwotI2VuZGlmCisgICAgY29kZUJsb2NrLT5oYW5kbGVC
eXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAgIGNvZGVCbG9jay0+c2V0SklUQ29k
ZShqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CiAgICAgCiAgICAgcmV0dXJuIHRy
dWU7CkBAIC02Niw5ICs2OSwxNCBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0
ZShKU0dsCiAKIGlubGluZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBjb2RlQmxv
Y2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhB
cml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBKSVRDb2RlOjpKSVRU
eXBlIGppdFR5cGUpCiB7CisgICAgaWYgKGppdFR5cGUgPT0gY29kZUJsb2NrLT5nZXRKSVRUeXBl
KCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAogICAgIGlmICghZ2xvYmFsRGF0YS5jYW5V
c2VKSVQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisgICAgY29kZUJsb2NrLT51bmxp
bmtJbmNvbWluZ0NhbGxzKCk7CisgICAgCiAgICAgYm9vbCBkZmdDb21waWxlZCA9IGZhbHNlOwog
ICAgIGlmIChqaXRUeXBlID09IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAgZGZnQ29tcGlsZWQg
PSBERkc6OnRyeUNvbXBpbGVGdW5jdGlvbihnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGpp
dENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CkBAIC04MywxMSArOTEsNyBAQCBpbmxpbmUg
Ym9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpCiAgICAgICAgIH0KICAgICAgICAgaml0
Q29kZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCAmaml0Q29k
ZVdpdGhBcml0eUNoZWNrKTsKICAgICB9Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0g
ICAgaWYgKCFCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAg
IGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRp
ZgotICAgIAorICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5p
dHkoKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0
eUNoZWNrKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMTA2Mjk3KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjQsNyArNjQsNyBAQCBFeGNlcHRpb25IYW5kbGVyIGdlbmVyaWNUaHJvdyhKU0dsb2JhbERhCiAK
IEV4Y2VwdGlvbkhhbmRsZXIgaml0VGhyb3coSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVj
U3RhdGUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBleGNlcHRpb25WYWx1ZSwgUmV0dXJuQWRkcmVzc1B0
ciBmYXVsdExvY2F0aW9uKQogewotICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwg
Y2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNv
ZGVPZmZzZXQoZmF1bHRMb2NhdGlvbikpOworICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFs
RGF0YSwgY2FsbEZyYW1lLCBleGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+
Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLCBmYXVsdExvY2F0aW9uKSk7CiB9CiAKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMDYyOTcpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTQ0Niw2ICsxNDQ2LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5
X2lkXwogICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlz
U3RyaWN0TW9kZSgpKTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IHN0YWNrRnJhbWUuYXJnc1sw
XS5qc1ZhbHVlKCk7CiAgICAgQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKKyAgICAKICAg
ICBhc09iamVjdChiYXNlVmFsdWUpLT5wdXREaXJlY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCks
IGlkZW50LCBzdGFja0ZyYW1lLmFyZ3NbMl0uanNWYWx1ZSgpLCBzbG90KTsKICAgICAKICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsK
QEAgLTE5MzEsNyArMTkzMiw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXpl
X2Zyb20KICAgICB1bnNpZ25lZCBieXRlY29kZUluZGV4ID0gc3RhY2tGcmFtZS5hcmdzWzBdLmlu
dDMyKCk7CiAKICNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50ZigiRW50ZXJl
ZCBvcHRpbWl6ZV9mcm9tX2xvb3Agd2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCByZW9wdGltaXph
dGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAldVxuIiwg
Y29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0aW9u
UmV0cnlDb3VudGVyKCksIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOwor
ICAgIHByaW50ZigiJXA6IEVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNv
dW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9u
RGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5qaXRFeGVjdXRlQ291
bnRlcigpLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCksIGNvZGVCbG9j
ay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOwogI2VuZGlmCiAKICAgICBpZiAoY29kZUJs
b2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpKSB7CkBAIC0yMTg2LDQ1ICsyMTg3LDEzIEBA
IERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKICAgICByZXR1cm4gcmVz
dWx0OwogfQogCi1pbmxpbmUgQ2FsbEZyYW1lKiBhcml0eUNoZWNrRm9yKENhbGxGcmFtZSogY2Fs
bEZyYW1lLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kKQotewotICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oY2FsbEZyYW1l
LT5jYWxsZWUoKSk7Ci0gICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwotICAg
IENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVy
YXRlZEJ5dGVjb2RlRm9yKGtpbmQpOwotICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKLQotICAgIC8vIFRo
aXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHpl
cm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgotICAgIGlmICghcmVnaXN0ZXJGaWxl
LT5ncm93KGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSArIG5ld0NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpKQotICAgICAgICByZXR1
cm4gMDsKLQotICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpKTsKLQotICAgIC8vIFRvbyBmZXcgYXJndW1lbnRzIC0tIGNv
cHkgY2FsbCBmcmFtZSBhbmQgYXJndW1lbnRzLCB0aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1bWVu
dHMgd2l0aCB1bmRlZmluZWQuCi0gICAgc2l6ZV90IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKLSAgICBSZWdpc3Rlciog
c3JjID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKTsKLSAgICBSZWdpc3RlciogZHN0ID0gY2FsbEZy
YW1lLT5yZWdpc3RlcnMoKSArIGRlbHRhOwotCi0gICAgaW50IGk7Ci0gICAgaW50IGVuZCA9IC1D
YWxsRnJhbWU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7Ci0gICAgZm9y
IChpID0gLTE7IGkgPj0gZW5kOyAtLWkpCi0gICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKLQotICAg
IGVuZCAtPSBkZWx0YTsKLSAgICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkpCi0gICAgICAgIGRzdFtp
XSA9IGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxG
cmFtZTo6Y3JlYXRlKGRzdCk7Ci0gICAgQVNTRVJUKCh2b2lkKiluZXdDYWxsRnJhbWUgPD0gcmVn
aXN0ZXJGaWxlLT5lbmQoKSk7Ci0gICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKLX0KLQogREVGSU5F
X1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxfYXJpdHlDaGVjaykKIHsKICAgICBTVFVCX0lO
SVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBh
cml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JD
YWxsKTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJp
dHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2Fs
bCk7CiAgICAgaWYgKCFuZXdDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlv
bkZyb21PcENhbGw8dm9pZCo+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQURE
UkVTUywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkp
OwogCkBAIC0yMjM3LDcgKzIyMDYsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3Bf
Y29uc3RydWN0CiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZy
YW1lOwogCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBhcml0eUNoZWNrRm9yKGNhbGxG
cmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIENh
bGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNh
bGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDb25zdHJ1Y3QpOwogICAg
IGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BD
YWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24g
MTA2Mjk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiwxMCBAQAogI2lmbmRlZiBKU0ludGVyZmFjZUpJVF9o
CiAjZGVmaW5lIEpTSW50ZXJmYWNlSklUX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlv
bnMuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNpbmNs
dWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJNYWNyb0Fz
c2VtYmxlci5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIExMSW50Q29tbW9uX2gKKyNkZWZpbmUgTExJbnRDb21tb25faAorCisjZGVmaW5lIExMSU5U
X0VYRUNVVElPTl9UUkFDSU5HIDAKKyNkZWZpbmUgTExJTlRfSEVMUEVSX1RSQUNJTkcgMAorCisj
ZW5kaWYgLy8gTExJbnRDb21tb25faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1
ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2lu
Y2x1ZGUgIk9wY29kZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwor
RGF0YTo6RGF0YSgpCisgICAgOiBtX2V4Y2VwdGlvbkluc3RydWN0aW9ucyhuZXcgSW5zdHJ1Y3Rp
b25bbWF4T3Bjb2RlTGVuZ3RoICsgMV0pCisgICAgLCBtX29wY29kZU1hcChuZXcgT3Bjb2RlW251
bU9wY29kZUlEc10pCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGgg
KyAxOyArK2kpCisgICAgICAgIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9
IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUp
OworI2RlZmluZSBPUENPREVfRU5UUlkob3Bjb2RlLCBsZW5ndGgpIG1fb3Bjb2RlTWFwW29wY29k
ZV0gPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF8jI29wY29kZSk7CisgICAgRk9SX0VBQ0hf
T1BDT0RFX0lEKE9QQ09ERV9FTlRSWSk7CisjdW5kZWYgT1BDT0RFX0VOVFJZCit9CisKK0RhdGE6
On5EYXRhKCkKK3sKKyAgICBkZWxldGVbXSBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBk
ZWxldGVbXSBtX29wY29kZU1hcDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisK
KyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnREYXRhX2gKKyNk
ZWZpbmUgTExJbnREYXRhX2gKKworI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOworCitu
YW1lc3BhY2UgTExJbnQgeworCisjaWYgRU5BQkxFKExMSU5UKQorY2xhc3MgRGF0YSB7CitwdWJs
aWM6CisgICAgRGF0YSgpOworICAgIH5EYXRhKCk7CisgICAgCisgICAgSW5zdHJ1Y3Rpb24qIGV4
Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAgeworICAgICAgICByZXR1cm4gbV9leGNlcHRpb25J
bnN0cnVjdGlvbnM7CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBtX29wY29kZU1hcDsKKyAgICB9Citwcml2YXRlOgorICAgIEluc3Ry
dWN0aW9uKiBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBPcGNvZGUqIG1fb3Bjb2RlTWFw
OworfTsKKyNlbHNlIC8vIEVOQUJMRShMTElOVCkKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV21pc3Npbmctbm9yZXR1cm4iCisjZW5kaWYKKworY2xhc3MgRGF0YSB7CitwdWJsaWM6
CisgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAor
ICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9OworCisjaWYgQ09NUElMRVIoQ0xBTkcp
CisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKworI2VuZGlmIC8vIEVOQUJM
RShMTElOVCkKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTElu
dERhdGFfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBv
aW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCisKKyNpZiBFTkFCTEUoTExJ
TlQpCisKKyNpbmNsdWRlICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisj
aW5jbHVkZSAiTExJbnRUaHVua3MuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgi
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9u
RW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCwgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0eUNo
ZWNrKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBpZiAo
a2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhv
c3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJl
ZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfcHJvbG9ndWUpKSkpOworICAgICAgICAgICAgYXJpdHlDaGVjayA9IE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9hcml0eV9jaGVjaykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAg
ICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIGppdENvZGUg
PSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxm
TWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpKSkpOworICAgICAgICBhcml0
eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBqaXRD
b2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsRW50cnlU
aHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgICAgICBhcml0
eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tU
aHVua0dlbmVyYXRvcikuY29kZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNT
RVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xv
YmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRv
ciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIGFyaXR5Q2hlY2sgPSBnbG9iYWxE
YXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0
b3IpLmNvZGUoKTsKK30KKwordm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVz
ZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9B
c3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2V2YWxfcHJvbG9ndWUpKSkpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERh
dGEuZ2V0Q1RJU3R1YihldmFsRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJl
dGVyVGh1bmspOworfQorCit2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2Fu
VXNlSklUKCkpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNy
b0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkpKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xv
YmFsRGF0YS5nZXRDVElTdHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuayk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisj
ZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RW50cnlwb2ludHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIExMSW50RW50cnlwb2ludHNfaAorI2RlZmluZSBMTEludEVudHJ5cG9pbnRzX2gKKworI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAi
Q29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXZh
bENvZGVCbG9jazsKK2NsYXNzIEpJVENvZGU7CitjbGFzcyBKU0dsb2JhbERhdGE7CitjbGFzcyBN
YWNyb0Fzc2VtYmxlckNvZGVQdHI7CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CitjbGFz
cyBQcm9ncmFtQ29kZUJsb2NrOworCituYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1bmN0
aW9uRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBKSVRD
b2RlJiwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0eUNoZWNrKTsKK3ZvaWQgZ2V0RXZhbEVu
dHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYpOwordm9pZCBnZXRQcm9ncmFtRW50cnlw
b2ludChKU0dsb2JhbERhdGEmLCBKSVRDb2RlJik7CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9p
bnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBFdmFsQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0
Q29kZSkKK3sKKyAgICBnZXRFdmFsRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30K
KworaW5saW5lIHZvaWQgZ2V0RW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFBy
b2dyYW1Db2RlQmxvY2sqLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGdldFByb2dyYW1FbnRy
eXBvaW50KGdsb2JhbERhdGEsIGppdENvZGUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50RW50cnlw
b2ludHNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhj
ZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisK
KyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRl
ICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJM
TEludENvbW1vbi5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvd0luQ2Fs
bGVyKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAm
ZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRm
KCJUaHJvd2luZyBleGNlcHRpb24gJXMuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3Jp
cHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coCisgICAgICAgIGdsb2JhbERhdGEs
IGV4ZWMtPmNhbGxlckZyYW1lKCksIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwKKyAgICAgICAgZXhl
Yy0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGV4ZWMtPmNhbGxl
ckZyYW1lKCksIGV4ZWMtPnJldHVyblBDKCkpKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRv
VGhyb3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBl
eGVjLT5nbG9iYWxEYXRhKCkubGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworfQor
CitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9u
KiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0
YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNl
cHRpb24gJXMgKHJldHVyblRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2Ny
aXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGds
b2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJuIGdsb2JhbERhdGEtPmxsaW50RGF0YS5leGNl
cHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKwordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiBl
eGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0g
JmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50
ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChjYWxsVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5l
eGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFs
RGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygp
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7Cit9CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RXhjZXB0aW9uc19oCisjZGVmaW5lIExM
SW50RXhjZXB0aW9uc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3
dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKK25hbWVzcGFjZSBKU0Mg
eworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBM
TEludCB7CisKKy8vIFRocm93IHRoZSBjdXJyZW50bHkgYWN0aXZlIGV4Y2VwdGlvbiBpbiB0aGUg
Y29udGV4dCBvZiB0aGUgY2FsbGVyJ3MgY2FsbCBmcmFtZS4KK3ZvaWQgaW50ZXJwcmV0ZXJUaHJv
d0luQ2FsbGVyKEV4ZWNTdGF0ZSopOworCisvLyBUZWxscyB5b3Ugd2hlcmUgdG8ganVtcCB0byBp
ZiB5b3Ugd2FudCB0byByZXR1cm4tdG8tdGhyb3csIGFmdGVyIHlvdSd2ZSBhbHJlYWR5CisvLyBz
ZXQgdXAgYWxsIGluZm9ybWF0aW9uIG5lZWRlZCB0byB0aHJvdyB0aGUgZXhjZXB0aW9uLgorSW5z
dHJ1Y3Rpb24qIHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0YXRlKik7CisK
Ky8vIFNhdmVzIHRoZSBjdXJyZW50IFBDIGluIHRoZSBnbG9iYWwgZGF0YSBmb3Igc2FmZS1rZWVw
aW5nLCBhbmQgZ2l2ZXMgeW91IGEgUEMKKy8vIHRoYXQgeW91IGNhbiB0ZWxsIHRoZSBpbnRlcnBy
ZXRlciB0byBnbyB0bywgd2hpY2ggd2hlbiBhZHZhbmNlZCBiZXR3ZWVuIDEKKy8vIGFuZCA5IHNs
b3RzIHdpbGwgZ2l2ZSB5b3UgYW4gImluc3RydWN0aW9uIiB0aGF0IHRocmVhZHMgdG8gdGhlIGlu
dGVycHJldGVyJ3MKKy8vIGV4Y2VwdGlvbiBoYW5kbGVyLiBOb3RlIHRoYXQgaWYgeW91IGdpdmUg
aXQgdGhlIFBDIGZvciBleGNlcHRpb24gaGFuZGxpbmcsCisvLyBpdCdzIHNtYXJ0IGVub3VnaCB0
byBqdXN0IHJldHVybiB0aGF0IFBDIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxzZTsgdGhpcwor
Ly8gbGV0cyB5b3UgdGhyZWFkIGV4Y2VwdGlvbiBoYW5kbGluZyB0aHJvdWdoIGNvbW1vbiBoZWxw
ZXIgZnVuY3Rpb25zIHVzZWQgYnkKKy8vIG90aGVyIGhlbHBlcnMuCitJbnN0cnVjdGlvbiogcmV0
dXJuVG9UaHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOworCisvLyBVc2UgdGhpcyB3aGVu
IHlvdSdyZSB0aHJvd2luZyB0byBhIGNhbGwgdGh1bmsuCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVj
U3RhdGUqLCBJbnN0cnVjdGlvbiopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwor
I2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50RXhjZXB0aW9uc19oCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0MzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkxMSW50SGVscGVycy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQXJn
dW1lbnRzLmgiCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uU2xvd1Bh
dGhzLmgiCisjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1
cm5WYWx1ZS5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklULmgiCisj
aW5jbHVkZSAiSklURHJpdmVyLmgiCisjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVk
ZSAiSlNCeXRlQXJyYXkuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgor
I2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0YXRpY1Nj
b3BlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1ZhbHVlLmgi
CisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIK
KyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5o
IgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworI2RlZmluZSBMTElOVF9P
UChpbmRleCkgKGV4ZWMtPnVuY2hlY2tlZFIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisjZGVmaW5l
IExMSU5UX09QX0MoaW5kZXgpIChleGVjLT5yKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorCisjZGVm
aW5lIExMSU5UX1JFVFVSTl9UV08oZmlyc3QsIHNlY29uZCkgZG8geyAgICAgICBcCisgICAgICAg
IHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgdm9pZCogYTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAg
dm9pZCogYjsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9IHBhaXI7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpbnQ2NF90IGk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gX19ydF91OyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmEgPSBmaXJz
dDsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmIgPSBzZWNvbmQ7
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX3J0X3UuaTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRf
RU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCBleGVjKQorCisjZGVmaW5lIExMSU5UX1RI
Uk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIEpTR2xvYmFsRGF0YSYgX190X2dsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7ICAg
ICAgICBcCisgICAgICAgIF9fdF9nbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Ro
cm93KTsgICAgICAgICAgICBcCisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAo
ZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCkgZG8geyAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2Vw
dGlvbikpIHsgICBcCisgICAgICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRf
RU5EKCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tf
RVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBM
TElOVF9CUkFOQ0gob3Bjb2RlLCBjb25kaXRpb24pIGRvIHsgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBib29sIF9fYl9jb25kaXRpb24gPSAoY29uZGl0aW9uKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoX19iX2NvbmRpdGlvbikgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0g
cGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5vcGVyYW5kOyAgICAgICAgXAorICAgICAg
ICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcGNvZGUpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVm
aW5lIExMSU5UX1JFVFVSTih2YWx1ZSkgZG8geyAgICAgICAgICAgICAgICBcCisgICAgICAgIEpT
VmFsdWUgX19yX3JldHVyblZhbHVlID0gKHZhbHVlKTsgICAgICBcCisgICAgICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0g
X19yX3JldHVyblZhbHVlOyAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJ
TlRfUkVUVVJOX1BST0ZJTEVEKG9wY29kZSwgdmFsdWUpIGRvIHsgICAgICAgICAgICAgICBcCisg
ICAgICAgIEpTVmFsdWUgX19ycF9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfT1AoMSkgPSBfX3JwX3JldHVyblZhbHVl
OyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHBjW09QQ09ERV9MRU5HVEgob3Bj
b2RlKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0gXAorICAgICAgICAgICAgSlNWYWx1
ZTo6ZW5jb2RlKF9fcnBfcmV0dXJuVmFsdWUpOyAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
TExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChleGVj
LCBjYWxsVGFyZ2V0KSBMTElOVF9SRVRVUk5fVFdPKChjYWxsVGFyZ2V0KSwgKGV4ZWMpKQorCisj
ZGVmaW5lIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsg
ICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jdF9leGVjID0gKGV4ZWMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBf
X2N0X3BjID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIEpTR2xvYmFsRGF0YSYgX19jdF9nbG9iYWxEYXRhID0gKF9fY3RfZXhlYyktPmdsb2JhbERh
dGEoKTsgICAgICBcCisgICAgICAgIF9fY3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0
aW9uVG9UaHJvdyk7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lN
UEwoX19jdF9leGVjLCBjYWxsVG9UaHJvdyhfX2N0X2V4ZWMsIF9fY3RfcGMpKTsgXAorICAgIH0g
d2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMs
IHBjKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19j
Y2VfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIEluc3RydWN0aW9uKiBfX2NjZV9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VMWShfX2NjZV9leGVjLT5nbG9iYWxEYXRh
KCkuZXhjZXB0aW9uKSkgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9DQUxMX0VO
RF9JTVBMKF9fY2NlX2V4ZWMsIGNhbGxUb1Rocm93KF9fY2NlX2V4ZWMsIF9fY2NlX3BjKSk7IFwK
KyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX1JFVFVSTihleGVjLCBw
YywgY2FsbFRhcmdldCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3Rh
dGUqIF9fY3JfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBJbnN0cnVjdGlvbiogX19jcl9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2b2lkKiBfX2NyX2NhbGxUYXJnZXQgPSAoY2Fs
bFRhcmdldCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxM
X0NIRUNLX0VYQ0VQVElPTihfX2NyX2V4ZWMtPmNhbGxlckZyYW1lKCksIF9fY3JfcGMpOyAgXAor
ICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3JfZXhlYywgX19jcl9jYWxsVGFyZ2V0KTsg
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCitleHRlcm4gIkMiIEhlbHBl
clJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0
aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCit7CisgICAgcHJpbnRmKCIlcCAv
ICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWRcbiIsCisgICAg
ICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBz
dGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUsCisgICAg
ICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFj
ZV92YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwg
aW50IG9wZXJhbmQpCit7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0Mob3BlcmFuZCku
anNWYWx1ZSgpOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVp
bnQzMl90IHRhZzsKKyAgICAgICAgICAgIHVpbnQzMl90IHBheWxvYWQ7CisgICAgICAgIH0gYml0
czsKKyAgICAgICAgRW5jb2RlZEpTVmFsdWUgYXNWYWx1ZTsKKyAgICB9IHU7CisgICAgdS5hc1Zh
bHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1
dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZDogJTA4eDolMDh4IiwKKyAgICAg
ICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0
YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGZyb21XaGVyZSwKKyAgICAg
ICAgICAgb3BlcmFuZCwKKyAgICAgICAgICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kLAorICAgICAg
ICAgICB1LmJpdHMudGFnLAorICAgICAgICAgICB1LmJpdHMucGF5bG9hZCk7CisjaWZuZGVmIE5E
RUJVRworICAgIHByaW50ZigiOiAlcyIsIHZhbHVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisg
ICAgcHJpbnRmKCJcbiIpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TCh0cmFjZV9wcm9sb2d1ZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGluIHByb2xvZ3VlLlxu
IiwgZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitzdGF0
aWMgdm9pZCB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFy
KiBjb21tZW50LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5jdGlv
biogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9ICZleGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsK
KyAgICBwcmludGYoIiVwIC8gJXA6IGluICVzIG9mIGZ1bmN0aW9uICVwLCBleGVjdXRhYmxlICVw
OyBudW1WYXJzID0gJXUsIG51bVBhcmFtZXRlcnMgPSAldSwgbnVtQ2FsbGVlUmVnaXN0ZXJzID0g
JXUuXG4iLAorICAgICAgICAgICBjb2RlQmxvY2ssIGV4ZWMsIGNvbW1lbnQsIGNhbGxlZSwgZXhl
Y3V0YWJsZSwKKyAgICAgICAgICAgY29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCit7CisgICAg
dHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIHByb2xvZ3VlIiwgQ29kZUZvckNhbGwp
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1
ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShl
eGVjLCAiY29uc3RydWN0IHByb2xvZ3VlIiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwp
Cit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIGFyaXR5IGNoZWNrIiwg
Q29kZUZvckNhbGwpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0
cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xv
Z3VlKGV4ZWMsICJjb25zdHJ1Y3QgYXJpdHkgY2hlY2siLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2UpCit7CisgICAgcHJp
bnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCAiLAorICAgICAgICAgICBleGVjLT5jb2Rl
QmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyNp
Zm5kZWYgTkRFQlVHCisgICAgcHJpbnRmKCIlcywgIiwgb3Bjb2RlTmFtZXNbZXhlYy0+Z2xvYmFs
RGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSldKTsKKyNlbHNl
CisgICAgcHJpbnRmKCJvcCMldSwgIiwgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5n
ZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSkpOworI2VuZGlmCisgICAgcHJpbnRmKCJzY29wZSAl
cFxuIiwgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woc3BlY2lhbF90cmFjZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1
dGluZyBzcGVjaWFsIGNhc2UgYmMjJXp1LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAorICAg
ICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAg
c3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9u
cygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXIt
PmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZXhlYy0+cmV0dXJuUEMo
KS52YWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworaW5saW5lIGJvb2wgc2hvdWxkSklU
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBZb3UgY2FuIG1vZGlmeSB0aGlzIHRvIHR1cm4g
b2ZmIEpJVHRpbmcgd2l0aG91dCByZWJ1aWxkaW5nIHRoZSB3b3JsZC4KKyAgICByZXR1cm4gZXhl
Yy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpOworfQorCitlbnVtIEVudHJ5S2luZCB7IFByb2xv
Z3VlLCBBcml0eUNoZWNrIH07CitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBlbnRyeU9TUihFeGVj
U3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNvbnN0
IGNoYXIgKm5hbWUsIEVudHJ5S2luZCBraW5kKQoreworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9P
U1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCAlcyB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRc
biIsIGNvZGVCbG9jaywgbmFtZSwgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOwor
I2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJs
b2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBl
eGVjKTsKKyAgICB9CisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFs
RGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50Zigi
ICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBj
b2RlQmxvY2stPmppdFNvb24oKTsKKyAgICBpZiAoa2luZCA9PSBQcm9sb2d1ZSkKKyAgICAgICAg
TExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVz
c0F0T2Zmc2V0KDApLCBleGVjKTsKKyAgICBBU1NFUlQoa2luZCA9PSBBcml0eUNoZWNrKTsKKyAg
ICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+Z2V0SklUQ29kZVdpdGhBcml0eUNoZWNrKCku
ZXhlY3V0YWJsZUFkZHJlc3MoKSwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5
X29zcikKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsIGV4ZWMtPmNvZGVCbG9jaygp
LCAiZW50cnlfb3NyIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9v
c3JfZnVuY3Rpb25fZm9yX2NhbGwpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAm
YXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRl
Y29kZUZvcihDb2RlRm9yQ2FsbCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwiLCBQcm9s
b2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29u
c3RydWN0KQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhl
Yy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZv
ckNvbnN0cnVjdCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCIsIFByb2xvZ3Vl
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5Q2hlY2spCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihl
eGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2Rl
Rm9yQ2FsbCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjayIsIEFyaXR5
Q2hlY2spOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFz
RnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNv
ZGVGb3IoQ29kZUZvckNvbnN0cnVjdCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9hcml0eUNoZWNrIiwgQXJpdHlDaGVjayk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bf
b3NyKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Cisg
ICAgCisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRlcmVk
IGxvb3Bfb3NyIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxv
Y2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoIXNob3Vs
ZEpJVChleGVjKSkgeworICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOwor
ICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAgICAKKyAgICBpZiAo
IWNvZGVCbG9jay0+aml0Q29tcGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5BQkxF
KEpJVF9WRVJCT1NFX09TUikKKyAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBj
b21waWxlZC5cbiIpOworI2VuZGlmCisgICAgfQorICAgIGNvZGVCbG9jay0+aml0U29vbigpOwor
ICAgIAorICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNl
bGluZUpJVCk7CisgICAgCisgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gbWFw
OworICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgpLT5kZWNvZGUobWFwKTsKKyAgICBCeXRlY29k
ZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcgPSBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNo
aW5lT2Zmc2V0LCB1bnNpZ25lZCwgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29k
ZUluZGV4PihtYXAuYmVnaW4oKSwgbWFwLnNpemUoKSwgcGMgLSBjb2RlQmxvY2stPmluc3RydWN0
aW9ucygpLmJlZ2luKCkpOworICAgIEFTU0VSVChtYXBwaW5nKTsKKyAgICBBU1NFUlQobWFwcGlu
Zy0+bV9ieXRlY29kZUluZGV4ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwYyAtIGNvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSkpOworICAgIAorICAgIHZvaWQqIGp1bXBUYXJnZXQg
PSBjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KG1hcHBp
bmctPm1fbWFjaGluZUNvZGVPZmZzZXQpOworICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsKKyAgICAK
KyAgICBMTElOVF9SRVRVUk5fVFdPKGp1bXBUYXJnZXQsIGV4ZWMpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChyZXBsYWNlKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CisgICAgCisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYo
IiVwOiBFbnRlcmVkIHJlcGxhY2Ugd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxv
Y2ssIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAg
IGlmIChzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBp
bGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisg
ICAgICAgICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7Cisj
ZW5kaWYKKyAgICAgICAgfQorICAgICAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICB9IGVs
c2UKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjaykKK3sKKyNp
ZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0
IHdpdGggZXhlYyA9ICVwLlxuIiwgZXhlYyk7CisgICAgcHJpbnRmKCJDb2RlQmxvY2sgPSAlcC5c
biIsIGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAgICBwcmludGYoIk51bSBjYWxsZWUgcmVnaXN0ZXJz
ID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAg
IHByaW50ZigiTnVtIHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bVZhcnMp
OworICAgIHByaW50ZigiQ3VycmVudCBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT5nbG9iYWxEYXRh
KCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKKyNlbmRpZgorICAgIEFTU0VS
VCgmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzXSA+IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5k
KCkpOworICAgIGlmIChVTkxJS0VMWSghZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5y
ZWdpc3RlckZpbGUoKS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+
bV9udW1DYWxsZWVSZWdpc3RlcnNdKSkpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZy
YW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFj
a092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihl
eGVjKTsKKyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKGV4ZWMp
OworICAgIH0KKyAgICBMTElOVF9FTkRfSU1QTCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY2FsbF9hcml0eUNoZWNrKQoreworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1v
blNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVy
cHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNhbGwpOworICAgIGlmICghbmV3RXhlYykg
eworICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAg
ICAgICAgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMpOworICAgICAgICBMTElOVF9SRVRV
Uk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSksIGV4
ZWMpOworICAgIH0KKyAgICBMTElOVF9SRVRVUk5fVFdPKDAsIG5ld0V4ZWMpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spCit7CisgICAgRXhlY1N0
YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVj
LT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ29uc3Ry
dWN0KTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZy
YW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFj
a092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihl
eGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RX
TygwLCBuZXdFeGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3Rp
dmF0aW9uKQoreworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGlu
ZyBhbiBhY3RpdmF0aW9uLCBleGVjID0gJXAhXG4iLCBleGVjKTsKKyNlbmRpZgorICAgIEpTQWN0
aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYywgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlYy0+Y29kZUJs
b2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVj
LT5zY29wZUNoYWluKCktPnB1c2goYWN0aXZhdGlvbikpOworICAgIExMSU5UX1JFVFVSTihKU1Zh
bHVlKGFjdGl2YXRpb24pKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9h
cmd1bWVudHMpCit7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6
Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIocGNbMV0udS5vcGVyYW5kKSA9IGFyZ3VtZW50
czsKKyAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sx
XS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKQoreworICAgIEpTRnVuY3Rpb24qIGNvbnN0
cnVjdG9yID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgCisjaWYgIUFTU0VSVF9E
SVNBQkxFRAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBBU1NFUlQoY29u
c3RydWN0b3ItPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNv
bnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CisjZW5kaWYKKyAgICAKKyAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBKU1ZhbHVlIHByb3RvID0gTExJTlRfT1AoMikuanNWYWx1
ZSgpOworICAgIGlmIChwcm90by5pc09iamVjdCgpKQorICAgICAgICBzdHJ1Y3R1cmUgPSBhc09i
amVjdChwcm90byktPmluaGVyaXRvcklEKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgZWxzZQor
ICAgICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5l
bXB0eU9iamVjdFN0cnVjdHVyZSgpOworICAgIAorICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RF
bXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NvbnZlcnRfdGhpcykKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSkuanNWYWx1
ZSgpOworICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBMTElOVF9SRVRVUk4odjEu
dG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19v
YmplY3QpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSkKK3sKKyAgICBMTElOVF9S
RVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgYml0d2lzZV9jYXN0PEpTVmFsdWUqPigmTExJTlRf
T1AoMikpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X25ld19hcnJheV9idWZmZXIpCit7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4
ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihwY1syXS51Lm9wZXJhbmQpLCBw
Y1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdl
eHApCit7CisgICAgUmVnRXhwKiByZWdFeHAgPSBleGVjLT5jb2RlQmxvY2soKS0+cmVnZXhwKHBj
WzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFyZWdFeHAtPmlzVmFsaWQoKSkKKyAgICAgICAgTExJ
TlRfVEhST1coY3JlYXRlU3ludGF4RXJyb3IoZXhlYywgIkludmFsaWQgZmxhZyBzdXBwbGllZCB0
byBSZWdFeHAgY29uc3RydWN0b3IuIikpOworICAgIExMSU5UX1JFVFVSTihSZWdFeHBPYmplY3Q6
OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwg
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpCit7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbighTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
cSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjplcXVhbChleGVjLCBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVl
OjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2xlc3NlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpz
TGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpCit7
CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVf
aW5jKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYykgKyAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVf
ZGVjKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0
X2luYykKK3sKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVt
YmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0ganNOdW1iZXIocmVzdWx0ICsgMSk7CisgICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcG9zdF9kZWMpCit7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFs
dWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCAt
IDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcigt
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2FkZCkKK3sKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2MiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAg
IAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUcnlpbmcgdG8gYWRkICVz
IiwgdjEuZGVzY3JpcHRpb24oKSk7CisgICAgcHJpbnRmKCIgdG8gJXMuXG4iLCB2Mi5kZXNjcmlw
dGlvbigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICh2MS5pc1N0cmluZygpICYmICF2Mi5pc09i
amVjdCgpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEp
LCB2Mi50b1N0cmluZyhleGVjKSkpOworICAgIAorICAgIGlmICh2MS5pc051bWJlcigpICYmIHYy
LmlzTnVtYmVyKCkpCisgICAgICAgIExMSU5UX1JFVFVSTihqc051bWJlcih2MS5hc051bWJlcigp
ICsgdjIuYXNOdW1iZXIoKSkpOworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0FkZFNsb3dDYXNl
KGV4ZWMsIHYxLCB2MikpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKQorewor
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJl
cihleGVjKSAqIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2RpdikKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykgLyBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihl
eGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKQoreworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihmbW9kKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4
ZWMpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCkKK3sKKyAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA8PCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcnNoaWZ0KQoreworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKS50b0ludDMyKGV4ZWMpID4+IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMy
KGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KQoreworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1VJbnQzMihl
eGVjKSA+PiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKQoreworICAgIExMSU5UX1JFVFVSTihqc051
bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpICYgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfYml0b3IpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLnRvSW50MzIoZXhlYykgfCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4
ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpCit7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykg
XiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpCit7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKH5M
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpCit7CisgICAgSlNWYWx1ZSBiYXNlVmFs
ID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisjaWZuZGVmIE5ERUJVRworICAgIFR5cGVJbmZv
IHR5cGVJbmZvKFVuc3BlY2lmaWVkVHlwZSk7CisgICAgQVNTRVJUKCFiYXNlVmFsLmlzT2JqZWN0
KCkKKyAgICAgICAgICAgfHwgISh0eXBlSW5mbyA9IGFzT2JqZWN0KGJhc2VWYWwpLT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKSkuaW1wbGVtZW50c0hhc0luc3RhbmNlKCkpOworI2VuZGlmCisgICAg
TExJTlRfVEhST1coY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoZXhlYywgImluc3RhbmNlb2YiLCBi
YXNlVmFsKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9mKQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluc3RhbmNlT2ZT
bG93KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90eXBlb2YpCit7CisgICAgTExJTlRfUkVUVVJOKGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4
ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9pc191bmRlZmluZWQpCit7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbih2LmlzQ2VsbCgpID8gdi5hc0NlbGwo
KS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpIDogdi5p
c1VuZGVmaW5lZCgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFu
KQoreworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
aXNCb29sZWFuKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJlcikK
K3sKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLmlz
TnVtYmVyKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZykKK3sK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGlzSlNTdHJpbmcoTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3QpCit7Cisg
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzT2JqZWN0VHlwZShMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKQor
eworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc0Z1bmN0aW9uVHlwZShMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luKQorewor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluKGV4ZWMsIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpCit7CisgICAgTExJTlRfUkVUVVJOX1BS
T0ZJTEVEKG9wX3Jlc29sdmUsIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMt
PmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCkKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJP
RklMRUQoCisgICAgICAgIG9wX3Jlc29sdmVfc2tpcCwKKyAgICAgICAgQ29tbW9uU2xvd1BhdGhz
OjpvcFJlc29sdmVTa2lwKAorICAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgIGV4ZWMtPmNv
ZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCksCisgICAgICAgICAgICBwY1sz
XS51Lm9wZXJhbmQpKTsKK30KKworc3RhdGljIEpTVmFsdWUgcmVzb2x2ZUdsb2JhbChFeGVjU3Rh
dGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBj
b2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOworICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPmlzR2xv
YmFsT2JqZWN0KCkpOworICAgIGludCBwcm9wZXJ0eSA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHBjWzNdLnUuc3RydWN0dXJlLmdldCgpOworICAgIAorICAg
IEFTU0VSVF9VTlVTRUQoc3RydWN0dXJlLCBzdHJ1Y3R1cmUgIT0gZ2xvYmFsT2JqZWN0LT5zdHJ1
Y3R1cmUoKSk7CisgICAgCisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50
aWZpZXIocHJvcGVydHkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCk7Cisg
ICAgCisgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBz
bG90KSkgeworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRl
bnQpOworICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgJiYgIWdsb2JhbE9iamVj
dC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYm
IHNsb3Quc2xvdEJhc2UoKSA9PSBnbG9iYWxPYmplY3QpIHsKKyAgICAgICAgICAgIHBjWzNdLnUu
c3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOworICAg
ICAgICAgICAgcGNbNF0gPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBleGVjLT5nbG9iYWxE
YXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVu
dCk7CisgICAgcmV0dXJuIEpTVmFsdWUoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfZ2xvYmFsKQoreworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZl
X2dsb2JhbCwgcmVzb2x2ZUdsb2JhbChleGVjLCBwYykpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJP
RklMRUQob3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYywgcmVzb2x2ZUdsb2JhbChleGVjLCBwYykp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9i
YWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9i
YWxfZHluYW1pYywgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+Y29kZUJs
b2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcmVzb2x2ZV9iYXNlKQoreworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhl
Yy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAocGNb
M10udS5vcGVyYW5kKSB7CisgICAgICAgIEpTVmFsdWUgYmFzZSA9IEpTQzo6cmVzb2x2ZUJhc2Uo
ZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgdHJ1ZSk7CisgICAgICAgIGlmICghYmFz
ZSkKKyAgICAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFz
c2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgICAgIExMSU5UX1JFVFVSTihi
YXNlKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVf
YmFzZSwgSlNDOjpyZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBm
YWxzZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4
aXN0cykKK3sKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNW
YWx1ZSgpKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIElkZW50aWZpZXIm
IGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsK
KyAgICBpZiAoIW9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkKKyAg
ICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChl
eGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQoreworICAgIEpTVmFsdWUgcmVzdWx0
ID0gQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVXaXRoQmFzZShleGVjLCBleGVjLT5jb2RlQmxv
Y2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgLy8g
RklYTUU6IHRlY2huaWNhbGx5IHNob3VsZCBoYXZlIHByb2ZpbGluZywgYnV0IHdlIGRvbid0IGRv
IGl0IGJlY2F1c2UgdGhlIERGRyB3b24ndCB1c2UgaXQuCisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKK3sKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aFRoaXMoZXhlYywgZXhl
Yy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0
OworICAgIC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcsIGJ1dCB3
ZSBkb24ndCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExMSU5UX0VO
RCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKQoreworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYg
aWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xv
dCBzbG90KGJhc2VWYWx1ZSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQo
ZXhlYywgaWRlbnQsIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExM
SU5UX09QKDEpID0gcmVzdWx0OworCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAg
ICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkKKyAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGJh
c2VWYWx1ZQorICAgICAgICAmJiBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5
U2xvdDo6VmFsdWUpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNl
VmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwt
PnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNo
ZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCku
cHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKKyAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0
dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+
b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBwY1s1XS51Lm9wZXJh
bmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICB9Cisg
ICAgfQorICAgIAorICAgIHBjW09QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X2lkKSAtIDFdLnUucHJv
ZmlsZS0+bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0
aCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAg
IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFu
ZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAg
UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKKyAgICBMTElOVF9SRVRVUk4oYmFzZVZhbHVl
LmdldChleGVjLCBpZGVudCwgc2xvdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHV0X2J5X2lkKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2Nr
KCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0u
dS5vcGVyYW5kKTsKKyAgICAKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSku
anNWYWx1ZSgpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGNvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCkpOworICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCisgICAgICAgIGFzT2JqZWN0KGJhc2VW
YWx1ZSktPnB1dERpcmVjdChleGVjLT5nbG9iYWxEYXRhKCksIGlkZW50LCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSwgc2xvdCk7CisgICAgZWxzZQorICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMs
IGlkZW50LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tf
RVhDRVBUSU9OKCk7CisgICAgCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAm
JiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNl
bGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
YmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUt
PmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5
cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkKKyAgICAgICAgICAgICYmIGJhc2VD
ZWxsID09IHNsb3QuYmFzZSgpKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzbG90
LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CisgICAgICAgICAgICAg
ICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIHN0cnVjdHVyZS0+cHJldmlvdXNJ
RCgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBi
ZWNhdXNlIHNvbWUgb2YgdGhlIG1ldGhvZHMgd2UgY2FsbAorICAgICAgICAgICAgICAgICAgICAv
LyBiZWxvdyBtYXkgR0MuCisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKworICAgICAgICAgICAgICAg
ICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7CisgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91
c0lEKCktPmlzT2JqZWN0KCkpOworICAgICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVy
ZS5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNp
emVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0
KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgICAgICBTdHJ1
Y3R1cmVDaGFpbiogY2hhaW4gPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpOworICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoY2hhaW4pOworICAgICAgICAgICAgICAgICAgICBwY1s3
XS51LnN0cnVjdHVyZUNoYWluLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmds
b2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOworICAgICAg
ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwp
OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlf
aWQpOworICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAg
ICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgp
LCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgCisgICAgaWYgKGZhbHNlICYmICFzdHJjbXAoaWRlbnQuYXNjaWkoKS5kYXRh
KCksICJyZW5kZXJSZWZsZWN0aW9ucyIpKQorICAgICAgICBwcmludGYoIkZpbmlzaGluZyBhY2Nl
c3MgdG8gcmVuZGVyUmVmbGVjdGlvbnMgZnJvbSBMTEludCBzbG93IHBhdGguXG4iKTsKKyAgICAK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9p
ZCkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAg
IEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9PYmplY3Qo
ZXhlYyk7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCkt
PmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihw
Y1szXS51Lm9wZXJhbmQpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBpZiAo
IWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5U
X1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4i
KSk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitpbmxp
bmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBK
U1ZhbHVlIHN1YnNjcmlwdCkKK3sKKyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAm
JiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0g
YmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkoZXhlYywgYXNTdHJpbmcoc3Vi
c2NyaXB0KS0+dmFsdWUoZXhlYykpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CisgICAgCisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90
IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZh
bHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAg
IHJldHVybiBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAg
CisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFz
ZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpCisgICAgICAgICAgICByZXR1cm4gYXNCeXRlQXJy
YXkoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAorICAgICAgICByZXR1
cm4gYmFzZVZhbHVlLmdldChleGVjLCBpKTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBw
cm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAg
ICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBwcm9wZXJ0eSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKQoreworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChv
cF9nZXRfYnlfdmFsLCBnZXRCeVZhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dl
dF9hcmd1bWVudF9ieV92YWwpCit7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBMTElOVF9PUCgy
KS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhcmd1bWVudHMpIHsKKyAgICAgICAgYXJndW1lbnRzID0g
QXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKTsKKyAgICAgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIExMSU5UX09QKDIpID0gYXJndW1lbnRzOwor
ICAgICAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sy
XS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJO
KGdldEJ5VmFsKGV4ZWMsIGFyZ3VtZW50cywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSkKK3sKKyAgICBMTElOVF9S
RVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5q
c1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpCit7
CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAg
IAorICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisgICAgaWYgKExJS0VMWShz
dWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5h
c1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1ZSkpIHsKKyAgICAgICAg
ICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBp
ZiAoanNBcnJheS0+Y2FuU2V0SW5kZXgoaSkpCisgICAgICAgICAgICAgICAganNBcnJheS0+c2V0
SW5kZXgoZ2xvYmFsRGF0YSwgaSwgdmFsdWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5kZXgoanNBcnJheSwgZXhlYywgaSwgdmFsdWUpOworICAg
ICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzSlNCeXRlQXJy
YXkoYmFzZVZhbHVlKQorICAgICAgICAgICAgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2Fu
QWNjZXNzSW5kZXgoaSkpIHsKKyAgICAgICAgICAgIEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9
IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigp
KSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzSW50
MzIoKSk7CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIGpzQnl0ZUFy
cmF5LT5zZXRJbmRleChpLCB2YWx1ZS5hc051bWJlcigpKTsKKyAgICAgICAgICAgICAgICBMTElO
VF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBiYXNlVmFsdWUucHV0
KGV4ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAg
IElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUHV0UHJvcGVydHlT
bG90IHNsb3QoZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBiYXNlVmFs
dWUucHV0KGV4ZWMsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfdmFsKQoreworICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIGJhc2VP
YmplY3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgCisgICAgSlNWYWx1ZSBzdWJz
Y3JpcHQgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBib29sIGNvdWxkRGVs
ZXRlOworICAgIAorICAgIHVpbnQzMl90IGk7CisgICAgaWYgKHN1YnNjcmlwdC5nZXRVSW50MzIo
aSkpCisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVs
ZXRlUHJvcGVydHlCeUluZGV4KGJhc2VPYmplY3QsIGV4ZWMsIGkpOworICAgIGVsc2UgeworICAg
ICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0
eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICAgICAg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVj
dC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgcHJvcGVy
dHkpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9j
aygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAKKyAgICBMTElOVF9S
RVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wdXRfYnlfaW5kZXgpCit7CisgICAgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkucHV0KGV4
ZWMsIHBjWzJdLnUub3BlcmFuZCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpOworICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2dldHRlcl9zZXR0ZXIp
Cit7CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBK
U09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAg
CisgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGV4ZWMp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIEpTVmFsdWUgZ2V0dGVy
ID0gTExJTlRfT1AoMykuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc2V0dGVyID0gTExJTlRfT1Ao
NCkuanNWYWx1ZSgpOworICAgIEFTU0VSVChnZXR0ZXIuaXNPYmplY3QoKSB8fCBnZXR0ZXIuaXNV
bmRlZmluZWQoKSk7CisgICAgQVNTRVJUKHNldHRlci5pc09iamVjdCgpIHx8IHNldHRlci5pc1Vu
ZGVmaW5lZCgpKTsKKyAgICBBU1NFUlQoZ2V0dGVyLmlzT2JqZWN0KCkgfHwgc2V0dGVyLmlzT2Jq
ZWN0KCkpOworICAgIAorICAgIGlmICghZ2V0dGVyLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIGFj
Y2Vzc29yLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBhc09iamVjdChnZXR0ZXIpKTsK
KyAgICBpZiAoIXNldHRlci5pc1VuZGVmaW5lZCgpKQorICAgICAgICBhY2Nlc3Nvci0+c2V0U2V0
dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgYXNPYmplY3Qoc2V0dGVyKSk7CisgICAgYmFzZU9iai0+
cHV0RGlyZWN0QWNjZXNzb3IoCisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwKKyAgICAgICAg
ZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwKKyAgICAgICAg
YWNjZXNzb3IsIEFjY2Vzc29yKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2ptcF9zY29wZXMpCit7CisgICAgdW5zaWduZWQgY291bnQgPSBwY1sxXS51
Lm9wZXJhbmQ7CisgICAgU2NvcGVDaGFpbk5vZGUqIHRtcCA9IGV4ZWMtPnNjb3BlQ2hhaW4oKTsK
KyAgICB3aGlsZSAoY291bnQtLSkKKyAgICAgICAgdG1wID0gdG1wLT5wb3AoKTsKKyAgICBleGVj
LT5zZXRTY29wZUNoYWluKHRtcCk7CisgICAgcGMgKz0gcGNbMl0udS5vcGVyYW5kOworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpCit7CisgICAg
TExJTlRfQlJBTkNIKG9wX2p0cnVlLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4o
ZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZhbHNlKQoreworICAgIExM
SU5UX0JSQU5DSChvcF9qZmFsc2UsICFMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4o
ZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3MpCit7CisgICAgTExJ
TlRfQlJBTkNIKG9wX2psZXNzLCBqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbmxlc3MpCit7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzcywgIWpzTGVzczx0
cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKQoreworICAgIExM
SU5UX0JSQU5DSChvcF9qZ3JlYXRlciwganNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2puZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVy
LCAhanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEp
Cit7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEsIGpzTGVzc0VxPHRydWU+KGV4ZWMsIExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpCit7CisgICAgTExJTlRfQlJBTkNIKG9w
X2pubGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlcmVxLCBqc0xlc3NF
cTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSkKK3sK
KyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEsICFqc0xlc3NFcTxmYWxzZT4oZXhlYywg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKQoreworICAgIEpTVmFsdWUgc2Ny
dXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHNjcnV0aW5lZS5p
c0RvdWJsZSgpKTsKKyAgICBkb3VibGUgdmFsdWUgPSBzY3J1dGluZWUuYXNEb3VibGUoKTsKKyAg
ICBpbnQzMl90IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpOworICAgIGlu
dCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlmICh2YWx1ZSA9PSBpbnRW
YWx1ZSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgICAgICBwYyArPSBjb2RlQmxvY2stPmltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZShwY1sx
XS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGludFZhbHVlLCBkZWZhdWx0T2Zmc2V0KTsKKyAg
ICB9IGVsc2UKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpCit7CisgICAgSlNW
YWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBpbnQgZGVmYXVs
dE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAoIXNjcnV0aW5lZS5pc1N0cmluZygp
KQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIGVsc2UgeworICAgICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2Rl
QmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZh
bHVlKGFzU3RyaW5nKHNjcnV0aW5lZSktPnZhbHVlKGV4ZWMpLmltcGwoKSwgZGVmYXVsdE9mZnNl
dCk7CisgICAgfQorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbmV3X2Z1bmMpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZQor
ICAgICAgICAgICB8fCAhY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkKKyAgICAgICAg
ICAgfHwgZXhlYy0+dW5jaGVja2VkUihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5q
c1ZhbHVlKCkpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGlu
ZyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJTlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVu
Y3Rpb25EZWNsKHBjWzJdLnUub3BlcmFuZCktPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApCit7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBGdW5jdGlvbkV4
ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbMl0udS5vcGVy
YW5kKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVuY3Rpb24tPm1ha2UoZXhlYywgZXhlYy0+
c2NvcGVDaGFpbigpKTsKKyAgICAKKyAgICBpZiAoIWZ1bmN0aW9uLT5uYW1lKCkuaXNOdWxsKCkp
IHsKKyAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25TY29wZU9iamVjdCA9IEpT
U3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBmdW5jdGlvbi0+bmFtZSgpLCBmdW5jLCBS
ZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBmdW5jLT5zZXRTY29wZShleGVjLT5nbG9i
YWxEYXRhKCksIGZ1bmMtPnNjb3BlKCktPnB1c2goZnVuY3Rpb25TY29wZU9iamVjdCkpOworICAg
IH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZnVuYyk7Cit9CisKK3N0YXRpYyBIZWxwZXJSZXR1
cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24q
IHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAg
IEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKworICAgIGV4ZWNDYWxs
ZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2FsbGVlLT5z
ZXRDb2RlQmxvY2soMCk7CisKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBnZXRDYWxs
RGF0YShjYWxsZWUsIGNhbGxEYXRhKTsKKyAgICAKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlICE9
IENhbGxUeXBlSlMpOworICAgIAorICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVIb3N0
KSB7CisgICAgICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1
ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWlu
dGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgICAgIH0K
KyAgICAgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAgICAgcHJpbnRmKCJDYWxs
IGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNjcmlwdGlvbigpKTsK
KyNlbmRpZgorCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpOworICAg
ICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBRnVuY3Rpb25FcnJvcihl
eGVjLCBjYWxsZWUpKTsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3Ry
dWN0KTsKKyAgICAKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQ29uc3Ry
dWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShjYWxsZWUsIGNvbnN0cnVj
dERhdGEpOworICAgIAorICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5cGVK
Uyk7CisgICAgCisgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZUhvc3QpIHsK
KyAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29k
ZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgIExM
SU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgfQorICAgIAorI2lmIExMSU5UX0hFTFBFUl9U
UkFDSU5HCisgICAgICAgIHByaW50ZigiQ29uc3RydWN0b3IgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0
aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICBBU1NFUlQo
Y29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSk7CisgICAgTExJTlRfQ0FMTF9USFJP
VyhleGVjLCBwYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7Cit9
CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxs
ZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKU1ZhbHVl
IGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSAwKQorewor
ICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRKU0Z1bmN0aW9uKGNhbGxlZUFz
VmFsdWUpOworICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwpCisgICAgICAgIHJldHVybiBo
YW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNWYWx1ZSwga2luZCk7CisgICAg
CisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsZWVBc0Z1bmN0aW9uQ2Vs
bCk7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihjYWxsZWUtPnNjb3BlVW5jaGVja2Vk
KCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5leGVjdXRhYmxl
KCk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSAwOworICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigp
KQorICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5k
KS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIGVsc2UgeworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+
KGV4ZWN1dGFibGUpOworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFi
bGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29wZSgpLCBraW5kKTsKKyAgICAg
ICAgaWYgKGVycm9yKQorICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjQ2FsbGVlLT5j
YWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOworICAgICAgICBjb2RlQmxvY2sgPSAmZnVuY3Rpb25F
eGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICAgICAgQVNTRVJUKGNv
ZGVCbG9jayk7CisgICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkp
CisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRD
b2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNv
ZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCkuYWRk
cmVzc0ZvckNhbGwoKTsKKyAgICB9CisgICAgCisgICAgaWYgKGNhbGxMaW5rSW5mbykgeworICAg
ICAgICBpZiAoY2FsbExpbmtJbmZvLT5pc09uTGlzdCgpKQorICAgICAgICAgICAgY2FsbExpbmtJ
bmZvLT5yZW1vdmUoKTsKKyAgICAgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVyID0gZXhlY0NhbGxl
ZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5jYWxsZWUuc2V0KGV4ZWND
YWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0
YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLnNl
dChleGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4ZWNDYWxsZXItPmNvZGVCbG9jaygpLT5vd25l
ckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5tYWNoaW5lQ29k
ZVRhcmdldCA9IGNvZGVQdHI7CisgICAgICAgIGlmIChjb2RlQmxvY2spCisgICAgICAgICAgICBj
b2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbExpbmtJbmZvKTsKKyAgICB9CisgICAgCisg
ICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIGNvZGVQdHIuZXhlY3V0YWJsZUFk
ZHJlc3MoKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIGdlbmVyaWNDYWxsKEV4ZWNT
dGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
Cit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUu
CisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGlsZSBpdCBpZiBuZWNl
c3NhcnkuCisgICAgLy8gLSBJZiBwb3NzaWJsZSwgbGluayB0aGUgY2FsbCdzIGlubGluZSBjYWNo
ZS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNh
bGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFs
dWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWND
YWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIAorICAgIGV4ZWNDYWxsZWUtPnNl
dEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFuZCk7CisgICAgZXhlY0Nh
bGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOwor
ICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIAorICAgIEFTU0VSVChw
Y1s0XS51LmNhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBw
Yywga2luZCwgY2FsbGVlQXNWYWx1ZSwgcGNbNF0udS5jYWxsTGlua0luZm8pOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhl
YywgcGMsIENvZGVGb3JDYWxsKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0
cnVjdCkKK3sKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1
Y3QpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKQoreworICAg
IC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lIHdoaWxlIHJl
c3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hh
dCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIFJldHVybiBh
IHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBm
cmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpz
VmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBsb2FkVmFyYXJncygK
KyAgICAgICAgZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJG
aWxlKCksCisgICAgICAgIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSwgcGNbNF0udS5vcGVyYW5kKTsKKyAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElP
TihleGVjLCBwYyk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZp
bGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZy
YW1lKGV4ZWMpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENv
dW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90PihwYyArIE9QQ09ERV9MRU5HVEgob3Bf
Y2FsbF92YXJhcmdzKSk7CisgICAgCisgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBw
YywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY2FsbF9ldmFsKQoreworICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09Q
KDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsg
cGNbM10udS5vcGVyYW5kOworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmds
b2JhbERhdGEoKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1l
KGV4ZWMpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUp
ID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNj
b3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMoYml0d2lzZV9jYXN0PElu
c3RydWN0aW9uKj4oJmxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgZXhlY0NhbGxl
ZS0+c2V0Q29kZUJsb2NrKDApOworICAgIGV4ZWMtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpB
cmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90PihwYyArIE9QQ09ERV9M
RU5HVEgob3BfY2FsbF9ldmFsKSk7CisgICAgCisgICAgaWYgKCFpc0hvc3RGdW5jdGlvbihjYWxs
ZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpCisgICAgICAgIHJldHVybiBzZXRVcENhbGwoZXhl
Y0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKKyAgICAKKyAgICBnbG9i
YWxEYXRhLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBldmFsKGV4ZWNDYWxsZWUpOworICAgIExMSU5U
X0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFy
X29mZl9hY3RpdmF0aW9uKQoreworICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNG
dWxsU2NvcGVDaGFpbigpKTsKKyAgICBKU1ZhbHVlIGFjdGl2YXRpb25WYWx1ZSA9IExMSU5UX09Q
KDEpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFjdGl2YXRpb25WYWx1ZSkgeworICAgICAgICBpZiAo
SlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIo
cGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMtPmNv
ZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyh2
KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAgfQorICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9
CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0aW9uKGFjdGl2YXRpb25W
YWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihleGVjLT5nbG9iYWxEYXRhKCkpOworICAg
IGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdp
c3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpCisgICAgICAgIGFzQXJndW1lbnRzKHYp
LT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGFjdGl2YXRpb24pOwor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZf
YXJndW1lbnRzKQoreworICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50
cygpICYmICFleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBh
c0FyZ3VtZW50cyhleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihw
Y1sxXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpLT50ZWFyT2ZmKGV4ZWMpOworICAgIExMSU5UX0VO
RCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KQoreworICAgIExMSU5U
X1JFVFVSTihqc1N0cmluZyhleGVjLCAmTExJTlRfT1AoMiksIHBjWzNdLnUub3BlcmFuZCkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZlKQoreworICAgIExMSU5U
X1JFVFVSTihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1ByaW1pdGl2ZShleGVjKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKQoreworICAgIEpTVmFsdWUgdiA9
IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAodi5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7
CisgICAgICAgIHBjICs9IHBjWzVdLnUub3BlcmFuZDsKKyAgICAgICAgTExJTlRfRU5EKCk7Cisg
ICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKKyAgICBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVjdHVyZSgpOworICAgIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBzdHJ1Y3R1cmUtPmVudW1lcmF0aW9uQ2Fj
aGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlOYW1lSXRlcmF0b3IgfHwganNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4oKSAhPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNo
YWluKGV4ZWMpKQorICAgICAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8pOworICAgIAorICAgIExMSU5UX09QKDEpID0gSlNW
YWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKKyAgICBMTElOVF9PUCgyKSA9IEpTVmFsdWUo
byk7CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rlcjo6d2l0aEludCgwKTsKKyAgICBMTElOVF9P
UCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPnNpemUoKSk7
CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcG5hbWVzKTsKKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUpCit7Cisg
ICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChMTElOVF9PUCgyKS5qc1ZhbHVlKCkpOworICAg
IEpTU3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3RyaW5nKExMSU5UX09QKDEpLmpzVmFsdWUoKSk7Cisg
ICAgaWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgcHJvcGVydHkt
PnZhbHVlKGV4ZWMpKSkpIHsKKyAgICAgICAgLy8gR28gdG8gdGFyZ2V0LgorICAgICAgICBwYyAr
PSBwY1s2XS51Lm9wZXJhbmQ7CisgICAgfSAvLyBFbHNlLCBkb24ndCBjaGFuZ2UgdGhlIFBDLCBz
byB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxvb3AuCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3BlKQoreworICAgIEpTVmFsdWUgdiA9IExM
SU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogbyA9IHYudG9PYmplY3QoZXhlYyk7
CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBv
OworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKG8pKTsK
KyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bv
cF9zY29wZSkKK3sKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+
cG9wKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHVzaF9uZXdfc2NvcGUpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2Rl
QmxvY2soKTsKKyAgICBKU09iamVjdCogc2NvcGUgPSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVh
dGUoZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCksIExMSU5UX09Q
KDMpLmpzVmFsdWUoKSwgRG9udERlbGV0ZSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVj
LT5zY29wZUNoYWluKCktPnB1c2goc2NvcGUpKTsKKyAgICBMTElOVF9SRVRVUk4oc2NvcGUpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpCit7CisgICAgTExJTlRfVEhST1co
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
dGhyb3dfcmVmZXJlbmNlX2Vycm9yKQoreworICAgIExMSU5UX1RIUk9XKGNyZWF0ZVJlZmVyZW5j
ZUVycm9yKGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVidWcpCit7CisgICAg
aW50IGRlYnVnSG9va0lEID0gcGNbMV0udS5vcGVyYW5kOworICAgIGludCBmaXJzdExpbmUgPSBw
Y1syXS51Lm9wZXJhbmQ7CisgICAgaW50IGxhc3RMaW5lID0gcGNbM10udS5vcGVyYW5kOworICAg
IAorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+ZGVidWcoZXhlYywgc3RhdGlj
X2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7Cisg
ICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9m
aWxlX3dpbGxfY2FsbCkKK3sKKyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVu
Y2UoKSktPndpbGxFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxs
KQoreworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSgpKS0+ZGlkRXhl
Y3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRIZWxwZXJzX2gKKyNkZWZpbmUgTExJbnRI
ZWxwZXJzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRM
aWJFeHRyYXMuaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsK
KwordHlwZWRlZiBpbnQ2NF90IEhlbHBlclJldHVyblR5cGU7CisKK2V4dGVybiAiQyIgSGVscGVy
UmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwg
aW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBl
IGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVy
ZSwgaW50IG9wZXJhbmQpOworCisjZGVmaW5lIExMSU5UX0hFTFBFUl9ERUNMKG5hbWUpIFwKKyAg
ICBleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfIyNuYW1lKEV4ZWNTdGF0ZSogZXhl
YywgSW5zdHJ1Y3Rpb24qIHBjKQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZSk7
CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCk7CitM
TElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KTsK
K0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpOworTExJTlRfSEVM
UEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9E
RUNMKHRyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2UpOworTExJTlRfSEVM
UEVSX0RFQ0woZW50cnlfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlv
bl9mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxf
YXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3NyKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKHJlcGxhY2UpOworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9j
aGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2NyZWF0ZV9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlz
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25ld19vYmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19h
cnJheSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZlcik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbm90KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbnN0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2dyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJl
cSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2luYyk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHJlX2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9pbmMpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90b19qc251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211
bCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9kaXYpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbHNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2JpdGFuZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3IpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2JpdHhvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3R5cGVvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9pc19udW1iZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9pc19mdW5jdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4pOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmVfc2tpcCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cmVzb2x2ZV93aXRoX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0
aF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfaWQpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wdXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Z2V0X2J5X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFsKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wdXRfYnlfaW5kZXgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXJf
c2V0dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qdHJ1ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZhbHNl
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfam5sZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
am5ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9pbW0pOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9jaGFyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9zd2l0Y2hfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmNfZXhwKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncyk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfY2FsbF9ldmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9h
Y3RpdmF0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNhdCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfdG9fcHJpbWl0aXZlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVz
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXh0X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wdXNoX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bfc2Nv
cGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl90aHJvdyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3df
cmVmZXJlbmNlX2Vycm9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1Zyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJ
bnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50SGVscGVyc19o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25m
aWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZs
aW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBM
TEludE9mZmxpbmVBc21Db25maWdfaAorI2RlZmluZSBMTEludE9mZmxpbmVBc21Db25maWdfaAor
CisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgor
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4NikKKyNkZWZpbmUgT0ZGTElO
RV9BU01fWDg2IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisjZW5kaWYKKwor
I2lmIENQVShBUk1fVEhVTUIyKQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAxCisjZWxzZQor
I2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NFUlRfRElTQUJM
RUQKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUg
T0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUoQklHX0VORElB
TikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2RlZmluZSBPRkZM
SU5FX0FTTV9CSUdfRU5ESUFOIDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKExMSU5UX09TUl9UT19K
SVQpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9G
RkxJTkVfQVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhFQ1VUSU9OX1RS
QUNJTkcKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQorI2Vsc2UKKyNk
ZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisKKyNlbmRpZiAv
LyBMTEludE9mZmxpbmVBc21Db25maWdfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJDb2Rl
QmxvY2suaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVkZSAiSGVhcC5oIgorI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJK
U0FycmF5LmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgor
I2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgi
CisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1R5cGVJbmZvLmgiCisjaW5jbHVk
ZSAiSlNWYXJpYWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUg
IkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5j
bHVkZSAiUmVnaXN0ZXJGaWxlLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorI2luY2x1ZGUg
IlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCisjaW5jbHVkZSAiVmFs
dWVQcm9maWxlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworI2RlZmluZSBPRkZMSU5FX0FTTV9PRkZTRVRPRihjbGF6eiwgZmllbGQpIE9C
SkVDVF9PRkZTRVRPRihjbGF6eiwgZmllbGQpCisKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
ciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkKiBkdW1teSgpOworfTsKKwor
Y29uc3QgdW5zaWduZWQqIExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKQoreworLy8gVGhp
cyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0c19leHRy
YWN0b3IucmIsIGFuZCBjb250YWlucyBjb2RlCisvLyB0byBjcmVhdGUgYSB0YWJsZSBvZiBvZmZz
ZXRzLCBzaXplcywgYW5kIGEgaGVhZGVyIGlkZW50aWZ5aW5nIHdoYXQgY29tYmluYXRpb24gb2YK
Ky8vIFBsYXRmb3JtLmggbWFjcm9zIHdlIGhhdmUgc2V0LiBXZSBpbmNsdWRlIGl0IGluc2lkZSBv
ZiBhIG1ldGhvZCBvbiBMTEludE9mZnNldHNFeHRyYWN0b3IKKy8vIGJlY2F1c2UgdGhlIGZpZWxk
cyB3aG9zZSBvZmZzZXRzIHdlJ3JlIGV4dHJhY3RpbmcgYXJlIG1vc3RseSBwcml2YXRlLiBTbyB3
ZSBtYWtlIHRoZWlyCisvLyBjbGFzc2VzIGZyaWVuZHMgd2l0aCBMTEludE9mZnNldHNFeHRyYWN0
b3IsIGFuZCBpbmNsdWRlIHRoZSBoZWFkZXIgaGVyZSwgdG8gZ2V0IHRoZSBDKysKKy8vIGNvbXBp
bGVyIHRvIGtpbmRseSBzdGVwIGFzaWRlIGFuZCB5aWVsZCB0byBvdXIgYmVzdCBpbnRlbnRpb25z
LgorI2luY2x1ZGUgIkxMSW50RGVzaXJlZE9mZnNldHMuaCIKKyAgICByZXR1cm4gZXh0cmFjdG9y
VGFibGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCitpbnQgbWFpbihpbnQsIGNoYXIqKikK
K3sKKyAgICAvLyBPdXQgb2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRpb24sIG1ha2Ugc3VyZSB0aGF0
IExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSBpcyBsaXZlLAorICAgIC8vIGFuZCB0aGUg
ZXh0cmFjdG9yVGFibGUgaXMgbGl2ZSwgdG9vLgorICAgIHByaW50ZigiJXBcbiIsIEpTQzo6TExJ
bnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpKTsKKyAgICByZXR1cm4gMDsKK30KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgi
CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5oIgorI2lu
Y2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisK
K25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitzdGF0aWMgTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgdm9pZCAoKnRhcmdldCkoKSkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CisgICAgCisg
ICAgLy8gRklYTUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0IG9uIFg4
NiwgYnV0IEknbSBub3Qgc3VyZSBJIGNhcmUuCisgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6
OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSwgSlNJbnRlcmZhY2VK
SVQ6OnJlZ1QwKTsKKyAgICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6cmVnVDApOworICAgIAor
ICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZqaXQsIEdMT0JBTF9USFVO
S19JRCk7CisgICAgcmV0dXJuIHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOworfQorCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKTsKK30KKwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJv
bG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlD
aGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1
cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25G
b3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBs
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKTsKK30KKworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwg
bGxpbnRfZXZhbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFt
RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0
dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X3Byb2dyYW1fcHJv
bG9ndWUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5r
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5r
cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1
bmtzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludFRodW5rc19oCisjZGVmaW5l
IExMSW50VGh1bmtzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxF
KExMSU5UKQorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisKK25hbWVzcGFj
ZSBKU0MgeworCitjbGFzcyBKU0dsb2JhbERhdGE7CisKK25hbWVzcGFjZSBMTEludCB7CisKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKEpT
R2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0
RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1
bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVu
dHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
cHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8g
TExJbnRUaHVua3NfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyMzc0IEBACisjIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisKKyMgQ3Jhc2ggY291cnNlIG9uIHRoZSBsYW5ndWFnZSB0aGF0IHRoaXMgaXMgd3JpdHRlbiBp
biAod2hpY2ggSSBqdXN0IGNhbGwKKyMgImFzc2VtYmx5IiBldmVuIHRob3VnaCBpdCdzIG1vcmUg
dGhhbiB0aGF0KToKKyMKKyMgLSBNb3N0bHkgZ2FzLXN0eWxlIG9wZXJhbmQgb3JkZXJpbmcuIFRo
ZSBsYXN0IG9wZXJhbmQgdGVuZHMgdG8gYmUgdGhlCisjICAgZGVzdGluYXRpb24uIFNvICJhIDo9
IGIiIGlzIHdyaXR0ZW4gYXMgIm1vdiBiLCBhIi4gQnV0IHVubGlrZSBnYXMsCisjICAgY29tcGFy
aXNvbnMgYXJlIGluLW9yZGVyLCBzbyAiaWYgKGEgPCBiKSIgaXMgd3JpdHRlbiBhcworIyAgICJi
aWx0IGEsIGIsIC4uLiIuCisjCisjIC0gImIiID0gYnl0ZSwgImgiID0gMTYtYml0IHdvcmQsICJp
IiA9IDMyLWJpdCB3b3JkLCAicCIgPSBwb2ludGVyLgorIyAgIEN1cnJlbnRseSB0aGlzIGlzIGp1
c3QgMzItYml0IHNvICJpIiBhbmQgInAiIGFyZSBpbnRlcmNoYW5nZWFibGUKKyMgICBleGNlcHQg
d2hlbiBhbiBvcCBzdXBwb3J0cyBvbmUgYnV0IG5vdCB0aGUgb3RoZXIuCisjCisjIC0gSW4gZ2Vu
ZXJhbCwgdmFsaWQgb3BlcmFuZHMgZm9yIG1hY3JvIGludm9jYXRpb25zIGFuZCBpbnN0cnVjdGlv
bnMgYXJlCisjICAgcmVnaXN0ZXJzIChlZyAidDAiKSwgYWRkcmVzc2VzIChlZyAiNFt0MF0iKSwg
YmFzZS1pbmRleCBhZGRyZXNzZXMKKyMgICAoZWcgIjdbdDAsIHQxLCAyXSIpLCBhYnNvbHV0ZSBh
ZGRyZXNzZXMgKGVnICIweGEwMDAwMDAwW10iKSwgb3IgbGFiZWxzCisjICAgKGVnICJfZm9vIiBv
ciAiLmZvbyIpLiBNYWNybyBpbnZvY2F0aW9ucyBjYW4gYWxzbyB0YWtlIGFub255bW91cworIyAg
IG1hY3JvcyBhcyBvcGVyYW5kcy4gSW5zdHJ1Y3Rpb25zIGNhbm5vdCB0YWtlIGFub255bW91cyBt
YWNyb3MuCisjCisjIC0gTGFiZWxzIG11c3QgaGF2ZSBuYW1lcyB0aGF0IGJlZ2luIHdpdGggZWl0
aGVyICJfIiBvciAiLiIuICBBICIuIiBsYWJlbAorIyAgIGlzIGxvY2FsIGFuZCBnZXRzIHJlbmFt
ZWQgYmVmb3JlIGNvZGUgZ2VuIHRvIG1pbmltaXplIG5hbWVzcGFjZQorIyAgIHBvbGx1dGlvbi4g
QSAiXyIgbGFiZWwgaXMgYW4gZXh0ZXJuIHN5bWJvbCAoaS5lLiAiLmdsb2JsIikuIFRoZSAiXyIK
KyMgICBtYXkgb3IgbWF5IG5vdCBiZSByZW1vdmVkIGR1cmluZyBjb2RlIGdlbiBkZXBlbmRpbmcg
b24gd2hldGhlciB0aGUgYXNtCisjICAgY29udmVudGlvbnMgZm9yIEMgbmFtZSBtYW5nbGluZyBv
biB0aGUgdGFyZ2V0IHBsYXRmb3JtIG1hbmRhdGUgYSAiXyIKKyMgICBwcmVmaXguCisjCisjIC0g
QSAibWFjcm8iIGlzIGEgbGFtYmRhIGV4cHJlc3Npb24sIHdoaWNoIG1heSBiZSBlaXRoZXIgYW5v
bnltb3VzIG9yCisjICAgbmFtZWQuIEJ1dCB0aGlzIGhhcyBjYXZlYXRzLiAibWFjcm8iIGNhbiB0
YWtlIHplcm8gb3IgbW9yZSBhcmd1bWVudHMsCisjICAgd2hpY2ggbWF5IGJlIG1hY3JvcyBvciBh
bnkgdmFsaWQgb3BlcmFuZHMsIGJ1dCBpdCBjYW4gb25seSByZXR1cm4KKyMgICBjb2RlLiBCdXQg
eW91IGNhbiBkbyBUdXJpbmctY29tcGxldGUgdGhpbmdzIHZpYSBjb250aW51YXRpb24gcGFzc2lu
ZworIyAgIHN0eWxlOiAibWFjcm8gZm9vIChhLCBiKSBiKGEpIGVuZCBmb28oZm9vLCBmb28pIi4g
QWN0dWFsbHksIGRvbid0IGRvCisjICAgdGhhdCwgc2luY2UgeW91J2xsIGp1c3QgY3Jhc2ggdGhl
IGFzc2VtYmxlci4KKyMKKyMgLSBBbiAiaWYiIGlzIGEgY29uZGl0aW9uYWwgb24gc2V0dGluZ3Mu
IEFueSBpZGVudGlmaWVyIHN1cHBsaWVkIGluIHRoZQorIyAgIHByZWRpY2F0ZSBvZiBhbiAiaWYi
IGlzIGFzc3VtZWQgdG8gYmUgYSAjZGVmaW5lIHRoYXQgaXMgYXZhaWxhYmxlCisjICAgZHVyaW5n
IGNvZGUgZ2VuLiBTbyB5b3UgY2FuJ3QgdXNlICJpZiIgZm9yIGNvbXB1dGF0aW9uIGluIGEgbWFj
cm8sIGJ1dAorIyAgIHlvdSBjYW4gdXNlIGl0IHRvIHNlbGVjdCBkaWZmZXJlbnQgcGllY2VzIG9m
IGNvZGUgZm9yIGRpZmZlcmVudAorIyAgIHBsYXRmb3Jtcy4KKyMKKyMgLSBBcmd1bWVudHMgdG8g
bWFjcm9zIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgcmF0aGVyIHRoYW4gZHluYW1pYyBzY29waW5n
LgorIyAgIENvbnN0J3MgYWxzbyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIGFuZCBtYXkgb3ZlcnJp
ZGUgKGhpZGUpIGFyZ3VtZW50cworIyAgIG9yIG90aGVyIGNvbnN0cy4gQWxsIHZhcmlhYmxlcyAo
YXJndW1lbnRzIGFuZCBjb25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAgIHRvIG9wZXJhbmRzLiBB
ZGRpdGlvbmFsbHksIGFyZ3VtZW50cyAoYnV0IG5vdCBjb25zdGFudHMpIGNhbiBiZSBib3VuZAor
IyAgIHRvIG1hY3Jvcy4KKworCisjIFRoZXNlIGRlY2xhcmF0aW9ucyBtdXN0IG1hdGNoIGludGVy
cHJldGVyL1JlZ2lzdGVyRmlsZS5oLgorY29uc3QgQ2FsbEZyYW1lSGVhZGVyU2l6ZSA9IDQ4Citj
b25zdCBBcmd1bWVudENvdW50ID0gLTQ4Citjb25zdCBDYWxsZXJGcmFtZSA9IC00MAorY29uc3Qg
Q2FsbGVlID0gLTMyCitjb25zdCBTY29wZUNoYWluID0gLTI0Citjb25zdCBSZXR1cm5QQyA9IC0x
NgorY29uc3QgQ29kZUJsb2NrID0gLTgKKworY29uc3QgVGhpc0FyZ3VtZW50T2Zmc2V0ID0gLUNh
bGxGcmFtZUhlYWRlclNpemUgLSA4CisKKyMgRGVjbGFyZSBzb21lIGFsaWFzZXMgZm9yIHRoZSBy
ZWdpc3RlcnMgd2Ugd2lsbCB1c2UuCitjb25zdCBQQyA9IHQ0CisKKyMgT2Zmc2V0cyBuZWVkZWQg
Zm9yIHJlYXNvbmluZyBhYm91dCB2YWx1ZSByZXByZXNlbnRhdGlvbi4KK2lmIEJJR19FTkRJQU4K
KyAgICBjb25zdCBUYWdPZmZzZXQgPSAwCisgICAgY29uc3QgUGF5bG9hZE9mZnNldCA9IDQKK2Vs
c2UKKyAgICBjb25zdCBUYWdPZmZzZXQgPSA0CisgICAgY29uc3QgUGF5bG9hZE9mZnNldCA9IDAK
K2VuZAorCisjIFZhbHVlIHJlcHJlc2VudGF0aW9uIGNvbnN0YW50cy4KK2NvbnN0IEludDMyVGFn
ID0gLTEKK2NvbnN0IEJvb2xlYW5UYWcgPSAtMgorY29uc3QgTnVsbFRhZyA9IC0zCitjb25zdCBV
bmRlZmluZWRUYWcgPSAtNAorY29uc3QgQ2VsbFRhZyA9IC01Citjb25zdCBFbXB0eVZhbHVlVGFn
ID0gLTYKK2NvbnN0IERlbGV0ZWRWYWx1ZVRhZyA9IC03Citjb25zdCBMb3dlc3RUYWcgPSBEZWxl
dGVkVmFsdWVUYWcKKworIyBUeXBlIGNvbnN0YW50cy4KK2NvbnN0IFN0cmluZ1R5cGUgPSA1Citj
b25zdCBPYmplY3RUeXBlID0gMTAKKworIyBUeXBlIGZsYWdzIGNvbnN0YW50cy4KK2NvbnN0IE1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxCitjb25zdCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPSAy
Citjb25zdCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID0gOAorCisjIEhlYXAgYWxsb2Nh
dGlvbiBjb25zdGFudHMuCitjb25zdCBKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXggPSAzCisK
KyMgQnl0ZWNvZGUgb3BlcmFuZCBjb25zdGFudHMuCitjb25zdCBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCA9IDB4NDAwMDAwMDAKKworIyBDb2RlIHR5cGUgY29uc3RhbnRzLgorY29uc3QgR2xv
YmFsQ29kZSA9IDAKK2NvbnN0IEV2YWxDb2RlID0gMQorY29uc3QgRnVuY3Rpb25Db2RlID0gMgor
CisjIFRoZSBpbnRlcnByZXRlciBzdGVhbHMgdGhlIHRhZyB3b3JkIG9mIHRoZSBhcmd1bWVudCBj
b3VudC4KK2NvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0CisK
KyMgVGhpcyBtdXN0IG1hdGNoIHd0Zi9WZWN0b3IuaC4KK2NvbnN0IFZlY3RvclNpemVPZmZzZXQg
PSAwCitjb25zdCBWZWN0b3JCdWZmZXJPZmZzZXQgPSA0CisKKyMgU3RyaW5nIGZsYWdzLgorY29u
c3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDY0CisKKyMgVXRpbGl0aWVzCittYWNybyBjcmFzaCgp
CisgICAgc3RvcmVpIDAsIDB4YmJhZGJlZWZbXQorICAgIG1vdmUgMCwgdDAKKyAgICBjYWxsIHQw
CitlbmQKKworbWFjcm8gYXNzZXJ0KGFzc2VydGlvbikKKyAgICBpZiBBU1NFUlRfRU5BQkxFRAor
ICAgICAgICBhc3NlcnRpb24oLm9rKQorICAgICAgICBjcmFzaCgpCisgICAgLm9rOgorICAgIGVu
ZAorZW5kCisKK21hY3JvIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbChkZXN0aW5hdGlv
blJlZ2lzdGVyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgbHIsIGRlc3RpbmF0aW9uUmVn
aXN0ZXIKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9wIGRlc3RpbmF0aW9uUmVnaXN0ZXIKKyAg
ICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKworbWFjcm8gcmVzdG9yZVJldHVy
bkFkZHJlc3NCZWZvcmVSZXR1cm4oc291cmNlUmVnaXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAg
ICAgbW92ZSBzb3VyY2VSZWdpc3RlciwgbHIKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcHVzaCBz
b3VyY2VSZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCitt
YWNybyBkaXNwYXRjaChhZHZhbmNlKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDCisgICAgam1w
IFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQocGNPZmZzZXQpCisg
ICAgbHNoaWZ0aSAyLCBwY09mZnNldAorICAgIGFkZHAgcGNPZmZzZXQsIFBDCisgICAgam1wIFtQ
Q10KK2VuZAorCittYWNybyBkaXNwYXRjaEJyYW5jaChwY09mZnNldCkKKyAgICBsb2FkaSBwY09m
ZnNldCwgdDAKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDApCitlbmQKKworbWFjcm8g
ZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRb
Y2ZyXSwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGNDYWxsMihmdW5jdGlvbiwgYXJn
MSwgYXJnMikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGFyZzEsIHQwCisgICAgICAgIG1v
dmUgYXJnMiwgdDEKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBhcmcxLCAwCisgICAgICAg
IHBva2UgYXJnMiwgMQorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKKyAgICBjYWxs
IGZ1bmN0aW9uCitlbmQKKworIyBUaGlzIGJhcmVseSB3b3Jrcy4gYXJnMyBhbmQgYXJnNCBzaG91
bGQgcHJvYmFibHkgYmUgaW1tZWRpYXRlcy4KK21hY3JvIGNDYWxsNChmdW5jdGlvbiwgYXJnMSwg
YXJnMiwgYXJnMywgYXJnNCkKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGFyZzEsIHQwCisg
ICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICAgICAgbW92ZSBhcmczLCB0MgorICAgICAgICBtb3Zl
IGFyZzQsIHQzCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAorICAgICAgICBw
b2tlIGFyZzIsIDEKKyAgICAgICAgcG9rZSBhcmczLCAyCisgICAgICAgIHBva2UgYXJnNCwgMwor
ICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKKyAgICBjYWxsIGZ1bmN0aW9uCitlbmQK
KworbWFjcm8gY2FsbEhlbHBlcihoZWxwZXIpCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykK
KyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKKyMgRGVidWdnaW5nIG9w
ZXJhdGlvbiBpZiB5b3UnZCBsaWtlIHRvIHByaW50IGFuIG9wZXJhbmQgaW4gdGhlIGluc3RydWN0
aW9uIHN0cmVhbS4gZnJvbVdoZXJlCisjIHNob3VsZCBiZSBhbiBpbW1lZGlhdGUgaW50ZWdlciAt
IGFueSBpbnRlZ2VyIHlvdSBsaWtlOyB1c2UgaXQgdG8gaWRlbnRpZnkgdGhlIHBsYWNlIHlvdSdy
ZQorIyBkZWJ1Z2dpbmcgZnJvbS4gb3BlcmFuZCBzaG91bGQgbGlrZXdpc2UgYmUgYW4gaW1tZWRp
YXRlLCBhbmQgc2hvdWxkIGlkZW50aWZ5IHRoZSBvcGVyYW5kCisjIGluIHRoZSBpbnN0cnVjdGlv
biBzdHJlYW0geW91J2QgbGlrZSB0byBwcmludCBvdXQuCittYWNybyB0cmFjZU9wZXJhbmQoZnJv
bVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2Vfb3BlcmFuZCwgY2ZyLCBQ
QywgZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2Zy
CitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgdGhl
IHZhbHVlIG9mIGFuIG9wZXJhbmQgaW4gdGhlIGluc3RydWN0aW9uCisjIHN0cmVhbS4gU2FtZSBh
cyB0cmFjZU9wZXJhbmQoKSwgYnV0IGFzc3VtZXMgdGhhdCB0aGUgb3BlcmFuZCBpcyBhIHJlZ2lz
dGVyLCBhbmQgcHJpbnRzIGl0cworIyB2YWx1ZS4KK21hY3JvIHRyYWNlVmFsdWUoZnJvbVdoZXJl
LCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2VfdmFsdWUsIGNmciwgUEMsIGZyb21X
aGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisK
K21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAg
ICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkKKyAgICBlbmQKK2VuZAorCisjIENhbGwgYSBoZWxw
ZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3JvIGNhbGxDYWxsSGVscGVyKGFkdmFuY2UsIGhlbHBl
ciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5jZSAqIDQsIFBDLCB0MAorICAgIHN0b3JlcCB0MCwg
QXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQ
QykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBhY3Rpb24odDApCitlbmQKKworbWFjcm8gc2xvd1Bh
dGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikKKyAgICBjYWxsQ2FsbEhlbHBlcigKKyAgICAgICAg
YWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAorICAgICAgICBtYWNybyAoY2FsbGVlKQorICAgICAg
ICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAgICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAg
ICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVQoaW5jcmVtZW50LCBhY3Rpb24p
CisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisg
ICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVy
W3QwXSwgLmNvbnRpbnVlCisgICAgICAgIGFjdGlvbigpCisgICAgLmNvbnRpbnVlOgorICAgIGVu
ZAorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBjaGVja1N3aXRj
aFRvSklUKAorICAgICAgICAxLAorICAgICAgICBtYWNybyAoKQorICAgICAgICAgICAgc3RvcmVp
IFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICAgICAgICAgIGNDYWxsMihf
bGxpbnRfbG9vcF9vc3IsIGNmciwgUEMpCisgICAgICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAg
ICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgICAgICBqbXAgdDAKKyAgICAgICAgLnJl
Y292ZXI6CisgICAgICAgICAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0s
IFBDCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9n
dWUoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEwLAorICAgICAgICBtYWNybyAo
KQorICAgICAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVwbGFjZSkKKyAgICAgICAgZW5kKQor
ZW5kCisKK21hY3JvIGFzc2VydE5vdENvbnN0YW50KGluZGV4KQorICAgIGFzc2VydChtYWNybyAo
b2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBvayBlbmQpCitlbmQK
KworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMu
IEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZShp
bmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwg
dGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAg
IGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2Fk
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhl
cmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0g
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9hZHAgVGFnT2Zmc2V0W3Bh
eWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBp
bmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQgbWF5
IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLiBJbmRleCBtYXkgYmUgY2xvYmJlcmVkLgorbWFjcm8gbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEg
aW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBU
YWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdGFnCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVn
aXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3RhZ10sIHRhZworICAgICMgVGhlcmUgaXMgYSBi
aXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFs
IHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxzaGlm
dGkgMywgaW5kZXgKKyAgICBhZGRwIGluZGV4LCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0
W3RhZ10sIHBheWxvYWQKKyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFnCisuZG9uZToKK2Vu
ZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbShpbmRleCwg
dGFnQ2hlY2ssIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0
ZXJJbmRleCwgLmNvbnN0YW50CisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhd
KQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBq
bXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9m
ZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJl
OiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtw
YXlsb2FkLCBpbmRleCwgOF0pCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRl
eCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBheWxvYWQgbXVzdCBi
ZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QgbXV0YXRlZC4gVXNlCisjIHRoaXMg
aWYgeW91IGtub3cgd2hhdCB0aGUgdGFnIG9mIHRoZSB2YXJpYWJsZSBzaG91bGQgYmUuIERvaW5n
IHRoZSB0YWcKKyMgdGVzdCBhcyBwYXJ0IG9mIGxvYWRpbmcgdGhlIHZhcmlhYmxlIHJlZHVjZXMg
cmVnaXN0ZXIgdXNlLCBidXQgbWF5IG5vdAorIyBiZSBmYXN0ZXIgdGhhbiBkb2luZyBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlIGZvbGxvd2VkIGJ5IGEgYnJhbmNoIG9uIHRoZQorIyB0YWcuCittYWNy
byBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0ZWRUYWcsIHBheWxv
YWQsIHNsb3cpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCisg
ICAgICAgIGluZGV4LAorICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBiaW5lcSBhY3R1YWxUYWcs
IGV4cGVjdGVkVGFnLCBzbG93IGVuZCwKKyAgICAgICAgcGF5bG9hZCkKK2VuZAorCittYWNybyBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZChpbmRleCwgcGF5bG9hZCkKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgKKyAgICAgICAgaW5kZXgs
CisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGVuZCwKKyAgICAgICAgcGF5bG9hZCkKK2VuZAor
CittYWNybyB3cml0ZUJhcnJpZXIodGFnLCBwYXlsb2FkKQorICAgICMgTm90aGluZyB0byBkbywg
c2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGdlbmVyYXRpb25hbCBvciBpbmNyZW1lbnRhbCBjb2xsZWN0
b3IuCitlbmQKKworbWFjcm8gdmFsdWVQcm9maWxlKHRhZywgcGF5bG9hZCwgcHJvZmlsZSkKKyAg
ICBzdG9yZWkgdGFnLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNldFtwcm9maWxl
XQorICAgIHN0b3JlaSBwYXlsb2FkLCBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRP
ZmZzZXRbcHJvZmlsZV0KK2VuZAorCisKKyMgSW5kaWNhdGUgdGhlIGJlZ2lubmluZyBvZiBMTElu
dC4KK19sbGludF9iZWdpbjoKKyAgICBjcmFzaCgpCisKKworIyBFbnRyeXBvaW50cyBpbnRvIHRo
ZSBpbnRlcnByZXRlcgorCittYWNybyBmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIodGFy
Z2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCisgICAg
bG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVn
aXN0ZXIKKyAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0
YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25Gb3JD
b25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ2FsbGVl
W2Nmcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxl
W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1
dGFibGU6Om1fY29kZUJsb2NrRm9yQ29uc3RydWN0W3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVn
aXN0ZXIKK2VuZAorCittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdp
c3RlcikKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCitt
YWNybyBmdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAgICBzdG9yZXAg
c291cmNlUmVnaXN0ZXIsIENvZGVCbG9ja1tjZnJdCitlbmQKKworbWFjcm8gbm90RnVuY3Rpb25D
b2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCisgICAgIyBOb3RoaW5nIHRvIGRvIQorZW5k
CisKKyMgRG8gdGhlIGJhcmUgbWluaW11bSByZXF1aXJlZCB0byBleGVjdXRlIGNvZGUuIFNldHMg
dXAgdGhlIFBDLCBsZWF2ZSB0aGUgQ29kZUJsb2NrKgorIyBpbiB0MS4gTWF5IGFsc28gdHJpZ2dl
ciBwcm9sb2d1ZSBlbnRyeSBPU1IuCittYWNybyBwcm9sb2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNv
ZGVCbG9ja1NldHRlciwgb3NySGVscGVyLCB0cmFjZUhlbHBlcikKKyAgICBwcmVzZXJ2ZVJldHVy
bkFkZHJlc3NBZnRlckNhbGwodDIpCisgICAgCisgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUg
YW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1IuCisgICAgc3RvcmVwIHQyLCBSZXR1cm5QQ1tjZnJd
CisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcKKyAgICAgICAgY2FsbEhlbHBlcih0cmFjZUhlbHBl
cikKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCisgICAgaWYgSklUX0VOQUJMRUQK
KyAgICAgICAgYmFkZGlzIDUsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3QxXSwg
LmNvbnRpbnVlCisgICAgICAgIGNDYWxsMihvc3JIZWxwZXIsIGNmciwgUEMpCisgICAgICAgIG1v
dmUgdDEsIGNmcgorICAgICAgICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAgICBsb2FkcCBSZXR1
cm5QQ1tjZnJdLCB0MgorICAgICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0
MikKKyAgICAgICAgam1wIHQwCisgICAgLnJlY292ZXI6CisgICAgICAgIGNvZGVCbG9ja0dldHRl
cih0MSkKKyAgICAuY29udGludWU6CisgICAgZW5kCisgICAgY29kZUJsb2NrU2V0dGVyKHQxKQor
ICAgIAorICAgICMgU2V0IHVwIHRoZSBQQy4KKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1
Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0
cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworZW5kCisKKyMgRXhwZWN0cyB0
aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBi
ZWhpbmQuCisjIE11c3QgY2FsbCBkaXNwYXRjaCgwKSBhZnRlciBjYWxsaW5nIHRoaXMuCittYWNy
byBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVBcmdTa2lwKQorICAgICMgUHJvZmlsZSB0
aGUgYXJndW1lbnRzLiBVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIGNob2ljZSBidXQgdG8gZG8g
dGhpcy4gVGhpcworICAgICMgY29kZSBpcyBwcmV0dHkgaG9ycmVuZG91cyBiZWNhdXNlIG9mIHRo
ZSBkaWZmZXJlbmNlIGluIG9yZGVyaW5nIGJldHdlZW4KKyAgICAjIGFyZ3VtZW50cyBhbmQgdmFs
dWUgcHJvZmlsZXMsIHRoZSBkZXNpcmUgdG8gaGF2ZSBhIHNpbXBsZSBsb29wLWRvd24tdG8temVy
bworICAgICMgbG9vcCwgYW5kIHRoZSBkZXNpcmUgdG8gdXNlIG9ubHkgdGhyZWUgcmVnaXN0ZXJz
IHNvIGFzIHRvIHByZXNlcnZlIHRoZSBQQyBhbmQKKyAgICAjIHRoZSBjb2RlIGJsb2NrLiBJdCBp
cyBsaWtlbHkgdGhhdCB0aGlzIGNvZGUgc2hvdWxkIGJlIHJld3JpdHRlbiBpbiBhIG1vcmUKKyAg
ICAjIG9wdGltYWwgd2F5IGZvciBhcmNoaXRlY3R1cmVzIHRoYXQgaGF2ZSBtb3JlIHRoYW4gZml2
ZSByZWdpc3RlcnMgYXZhaWxhYmxlCisgICAgIyBmb3IgYXJiaXRyYXJ5IHVzZSBpbiB0aGUgaW50
ZXJwcmV0ZXIuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCB0MAor
ICAgIGFkZGkgLXByb2ZpbGVBcmdTa2lwLCB0MCAjIFVzZSBhZGRpIGJlY2F1c2UgdGhhdCdzIHdo
YXQgaGFzIHRoZSBwZWVwaG9sZQorICAgIGFzc2VydChtYWNybyAob2spIGJpZ3RlcSB0MCwgMCwg
b2sgZW5kKQorICAgIGJ0aXogdDAsIC5hcmd1bWVudFByb2ZpbGVEb25lCisgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MV0s
IHQzCisgICAgbXVsaSBzaXplb2YgVmFsdWVQcm9maWxlLCB0MCwgdDIgIyBBYWFhYWhoaGghIE5l
ZWQgc3RyZW5ndGggcmVkdWN0aW9uIQorICAgIG5lZ2kgdDAKKyAgICBsc2hpZnRpIDMsIHQwCisg
ICAgYWRkcCB0MiwgdDMKKy5hcmd1bWVudFByb2ZpbGVMb29wOgorICAgIGxvYWRpIFRoaXNBcmd1
bWVudE9mZnNldCArIFRhZ09mZnNldCArIDggLSBwcm9maWxlQXJnU2tpcCAqIDhbY2ZyLCB0MF0s
IHQyCisgICAgc3VicCBzaXplb2YgVmFsdWVQcm9maWxlLCB0MworICAgIHN0b3JlaSB0MiwgcHJv
ZmlsZUFyZ1NraXAgKiBzaXplb2YgVmFsdWVQcm9maWxlICsgVmFsdWVQcm9maWxlOjptX2J1Y2tl
dHMgKyBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9h
ZE9mZnNldCArIDggLSBwcm9maWxlQXJnU2tpcCAqIDhbY2ZyLCB0MF0sIHQyCisgICAgc3RvcmVp
IHQyLCBwcm9maWxlQXJnU2tpcCAqIHNpemVvZiBWYWx1ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6
Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgYmFkZGlueiA4LCB0MCwgLmFyZ3Vt
ZW50UHJvZmlsZUxvb3AKKy5hcmd1bWVudFByb2ZpbGVEb25lOgorICAgIAorICAgICMgQ2hlY2sg
c3RhY2sgaGVpZ2h0LgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1DYWxsZWVSZWdpc3RlcnNb
dDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDIKKyAgICBs
b2FkcCBKU0dsb2JhbERhdGE6OmludGVycHJldGVyW3QyXSwgdDIgICAjIEZJWE1FOiBDYW4gZ2V0
IHRvIHRoZSBSZWdpc3RlckZpbGUgZnJvbSB0aGUgSklUU3RhY2tGcmFtZQorICAgIGxzaGlmdGkg
MywgdDAKKyAgICBhZGRwIHQwLCBjZnIsIHQwCisgICAgYnBhZXEgSW50ZXJwcmV0ZXI6Om1fcmVn
aXN0ZXJGaWxlICsgUmVnaXN0ZXJGaWxlOjptX2VuZFt0Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSwor
CisgICAgIyBTdGFjayBoZWlnaHQgY2hlY2sgZmFpbGVkIC0gbmVlZCB0byBjYWxsIGEgaGVscGVy
LgorICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlZ2lzdGVyX2ZpbGVfY2hlY2spCisuc3RhY2tIZWln
aHRPSzoKK2VuZAorCisjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlz
IHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgorbWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNr
KGRvbmVMYWJlbCwgaGVscGVyKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXQgKyBBcmd1bWVudENv
dW50W2Nmcl0sIHQwCisgICAgYmlhZXEgdDAsIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3Qx
XSwgZG9uZUxhYmVsCisgICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykgICAjIFRoaXMgaGVscGVy
IGhhcyBhIHNpbXBsZSBwcm90b2NvbDogdDAgPSAwID0+IG5vIGVycm9yLCB0MCAhPSAwID0+IGVy
cm9yCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYnRpeiB0MCwgLmNvbnRpbnVlCisgICAgbG9hZHAg
SklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRh
OjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0
TWFjaGluZVBDRm9yVGhyb3dbdDFdCisuY29udGludWU6CisgICAgIyBSZWxvYWQgQ29kZUJsb2Nr
IGFuZCBQQywgc2luY2UgdGhlIGhlbHBlciBjbG9iYmVyZWQgaXQuCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIHQw
CisgICAgbG9hZHAgQ29kZUJsb2NrOjpJbnN0cnVjdGlvbnM6Om1faW5zdHJ1Y3Rpb25zICsgVmVj
dG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKKyAgICBqbXAgZG9uZUxhYmVsCitlbmQKKworX2xsaW50
X3Byb2dyYW1fcHJvbG9ndWU6CisgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0
ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRf
dHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfZXZhbF9wcm9sb2d1
ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25D
b2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkK
KyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZToK
KyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsLCBfbGxpbnRf
dHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCisuZnVuY3Rpb25Gb3JDYWxsQmVnaW46
CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigwKQorICAgIGRpc3BhdGNoKDApCisgICAgCisK
K19sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1
bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRl
ciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0LCBfbGxpbnRfdHJhY2Vf
cHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKKy5mdW5jdGlvbkZvckNvbnN0cnVjdEJl
Z2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMSkKKyAgICBkaXNwYXRjaCgwKQorICAg
IAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUo
ZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwg
X2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrLCBfbGxpbnRfdHJh
Y2VfYXJpdHlDaGVja19mb3JfY2FsbCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9u
Rm9yQ2FsbEJlZ2luLCBfbGxpbnRfaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKKworCitfbGxpbnRf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShmdW5jdGlv
bkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9s
bGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRf
dHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjaygu
ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3RfYXJpdHlD
aGVjaykKKworIyBJbnN0cnVjdGlvbiBpbXBsZW1lbnRhdGlvbnMKKworX2xsaW50X29wX2VudGVy
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAg
ICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFyc1t0Ml0sIHQyCisgICAgYnRpeiB0MiwgLm9wRW50
ZXJEb25lCisgICAgbW92ZSBVbmRlZmluZWRUYWcsIHQwCisgICAgbW92ZSAwLCB0MQorLm9wRW50
ZXJMb29wOgorICAgIHN1YmkgMSwgdDIKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQy
LCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGJ0aW56
IHQyLCAub3BFbnRlckxvb3AKKy5vcEVudGVyRG9uZToKKyAgICBkaXNwYXRjaCgxKQorCisKK19s
bGludF9vcF9jcmVhdGVfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVl
VGFnLCAub3BDcmVhdGVBY3RpdmF0aW9uRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9jcmVhdGVfYWN0aXZhdGlvbikKKy5vcENyZWF0ZUFjdGl2YXRpb25Eb25lOgorICAgIGRpc3Bh
dGNoKDIpCisKKworX2xsaW50X29wX2luaXRfbGF6eV9yZWc6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQor
ICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NyZWF0ZV9hcmd1bWVudHM6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQXJndW1lbnRzRG9uZQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYXJndW1lbnRzKQorLm9wQ3JlYXRlQXJndW1l
bnRzRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGFsbG9jYXRlQmFzaWNKU09iamVj
dChzaXplQ2xhc3NJbmRleCwgY2xhc3NJbmZvT2Zmc2V0LCBzdHJ1Y3R1cmUsIHJlc3VsdCwgc2Ny
YXRjaDEsIHNjcmF0Y2gyLCBzbG93Q2FzZSkKKyAgICBjb25zdCBvZmZzZXRPZk15U2l6ZUNsYXNz
ID0gSlNHbG9iYWxEYXRhOjpoZWFwICsgSGVhcDo6bV9vYmplY3RTcGFjZSArIE1hcmtlZFNwYWNl
OjptX3ByZWNpc2VTaXplQ2xhc3NlcyArIHNpemVDbGFzc0luZGV4ICogc2l6ZW9mIE1hcmtlZFNw
YWNlOjpTaXplQ2xhc3MKKyAgICAKKyAgICAjIEZJWE1FOiB3ZSBjYW4gZ2V0IHRoZSBnbG9iYWwg
ZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRoZSBzdGFjay4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgc2NyYXRjaDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVtzY3JhdGNoMV0s
IHNjcmF0Y2gxCisgICAgCisgICAgIyBHZXQgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3Qu
ICAgIAorICAgIGxvYWRwIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNs
YXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXSwgcmVzdWx0CisgICAgYnRweiByZXN1bHQsIHNs
b3dDYXNlCisgICAgCisgICAgIyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3Qu
CisgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gyLCBvZmZz
ZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtz
Y3JhdGNoMV0KKworICAgICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgorICAgIGxvYWRwIGNsYXNz
SW5mb09mZnNldFtzY3JhdGNoMV0sIHNjcmF0Y2gyCisgICAgc3RvcmVwIHNjcmF0Y2gyLCBbcmVz
dWx0XQorICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQor
ICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCisgICAgYWRkcCBz
aXplb2YgSlNPYmplY3QsIHJlc3VsdCwgc2NyYXRjaDEKKyAgICBzdG9yZXAgc2NyYXRjaDEsIEpT
T2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVtyZXN1bHRdCitlbmQKKworX2xsaW50X29wX2NyZWF0
ZV90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBh
c3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENl
bGxUYWcsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYmIg
U3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUs
IC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbdDBd
LCB0MgorICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgYWxsb2NhdGVCYXNpY0pT
T2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFs
T2JqZWN0Q2xhc3NJbmZvLCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCisgICAg
bG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4
XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNo
KDMpCisKKy5vcENyZWF0ZVRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9j
cmVhdGVfdGhpcykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9nZXRfY2FsbGVlOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkcCBQYXls
b2FkT2Zmc2V0ICsgQ2FsbGVlW2Nmcl0sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQor
ICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NvbnZlcnRfdGhpczoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MAorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwg
T2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNTbG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ29u
dmVydFRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jb252ZXJ0X3RoaXMp
CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X29iamVjdDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1f
ZW1wdHlPYmplY3RTdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChK
U0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENs
YXNzSW5mbywgdDEsIHQwLCB0MiwgdDMsIC5vcE5ld09iamVjdFNsb3cpCisgICAgbG9hZGkgNFtQ
Q10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5v
cE5ld09iamVjdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19vYmplY3Qp
CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X2FycmF5OgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2FycmF5KQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19hcnJheV9idWZmZXI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQor
ICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19yZWdleHA6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfcmVnZXhwKQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX21vdjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3Bfbm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQwLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5vcE5vdFNsb3cKKyAgICB4
b3JpIDEsIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BO
b3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ub3QpCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEy
W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkK
KyAgICBiaW5lcSB0MiwgdDMsIC5vcEVxU2xvdworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcEVx
U2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwg
dDIKKyAgICBjaWVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0
W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgZGlzcGF0Y2goNCkKKworLm9wRXFTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9lcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9lcV9udWxsOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAg
ICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0
MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQxCisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6
bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5vcEVxTnVs
bE5vdEltbWVkaWF0ZQorLm9wRXFOdWxsSW1tZWRpYXRlOgorICAgIGNpZXEgdDEsIE51bGxUYWcs
IHQyCisgICAgY2llcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIG9yaSB0MiwgdDEKKy5vcEVx
TnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2Nmciwg
dDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0
MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRh
ZywgLm9wTmVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BOZXFTbG93CisgICAgbG9h
ZGkgNFtQQ10sIHQyCisgICAgY2luZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BOZXFTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9uZXEpCisgICAgZGlzcGF0Y2goNCkKKyAgICAKKworX2xsaW50X29wX25l
cV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbEltbWVkaWF0ZQorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRieiBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQx
CisgICAgam1wIC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKKy5vcE5lcU51bGxJbW1lZGlhdGU6Cisg
ICAgY2luZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2luZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEK
KyAgICBhbmRpIHQyLCB0MQorLm9wTmVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9v
bGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBzdHJpY3RFcShlcXVh
bGl0eU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5z
bG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIENlbGxUYWcs
IC5ub3RTdHJpbmcKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1f
dHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZwor
ICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0
cmluZ1R5cGUsIC5zbG93Cisubm90U3RyaW5nOgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGVx
dWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDApCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09m
ZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4
XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAg
IGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50X29wX3N0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2llcSBsZWZ0
LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9zdHJpY3RlcSkKKworCitfbGxpbnRf
b3BfbnN0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAo
bGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwgcmlnaHQsIHJlc3VsdCBlbmQsIF9sbGlu
dF9oZWxwZXJfbnN0cmljdGVxKQorCisKK19sbGludF9vcF9sZXNzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzcykKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2dyZWF0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcmVx
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3Jl
YXRlcmVxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3ByZV9pbmM6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZUluY1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJhZGRpbyAxLCB0MSwgLm9wUHJlSW5jU2xvdworICAg
IHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisK
Ky5vcFByZUluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3ByZV9pbmMpCisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJlX2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQxCisgICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNTbG93CisgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlRGVj
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2RlYykKKyAgICBkaXNwYXRj
aCgyKQorCisKK19sbGludF9vcF9wb3N0X2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdEluY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwg
Lm9wUG9zdEluY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0Mgor
ICAgIG1vdmUgdDIsIHQzCisgICAgYmFkZGlvIDEsIHQzLCAub3BQb3N0SW5jU2xvdworICAgIHN0
b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCisub3BQb3N0SW5jRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0SW5jU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9pbmMpCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfcG9zdF9kZWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3REZWNTbG93CisgICAgYmllcSB0MCwgdDEsIC5v
cFBvc3REZWNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDIKKyAg
ICBtb3ZlIHQyLCB0MworICAgIGJzdWJpbyAxLCB0MywgLm9wUG9zdERlY1Nsb3cKKyAgICBzdG9y
ZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XQorLm9wUG9zdERlY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKworLm9wUG9zdERlY1Nsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfZGVjKQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX3RvX2pzbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmllcSB0MiwgSW50MzJUYWcsIC5vcFRvSnNudW1iZXJJ
c0ludAorICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BUb0pzbnVtYmVyU2xvdworLm9w
VG9Kc251bWJlcklzSW50OgorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykK
KworLm9wVG9Kc251bWJlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RvX2pz
bnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25lZ2F0ZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQorICAgIGJpbmVxIHQxLCBJbnQz
MlRhZywgLm9wTmVnYXRlU3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3ZmZmZmZmZiwgLm9wTmVn
YXRlU2xvdworICAgIG5lZ2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIs
IHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRp
c3BhdGNoKDMpCisub3BOZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQxLCBMb3dlc3RUYWcsIC5v
cE5lZ2F0ZVNsb3cKKyAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAgc3RvcmVpIHQxLCBUYWdP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Mywg
OF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOZWdhdGVTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9uZWdhdGUpCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBiaW5hcnlPcEN1
c3RvbVN0b3JlKGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91YmxlT3BlcmF0aW9uLCBoZWxw
ZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAg
IGJpbmVxIHQzLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGxvYWRpIDRbUENdLCB0MgorICAg
IGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0MywgdDEsIHQwLCAuc2xvdywgdDIpCisgICAgZGlz
cGF0Y2goNSkKKworLm9wMU5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVs
eSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291bGQgYmUgYW55dGhpbmcuCisgICAg
YmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQzLCBMb3dlc3RUYWcsIC5vcDFOb3RJ
bnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MSwg
ZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBm
aWkyZCB0MSwgdDMsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGxvYWRpIDRbUENdLCB0MQor
ICAgIGZpaTJkIHQwLCB0MiwgZnQwCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAg
IHN0b3JlZCBmdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcDJOb3RJbnQ6
CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50LCB0aGUgc2Vjb25kIG9w
ZXJhbmQgaXMgZGVmaW5pdGVseSBub3QuCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgYmlhIHQz
LCBMb3dlc3RUYWcsIC5zbG93CisgICAgY2kyZCB0MCwgZnQwCisgICAgZmlpMmQgdDEsIHQzLCBm
dDEKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2Nmciwg
dDIsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIp
CisgICAgZGlzcGF0Y2goNSkKK2VuZAorCittYWNybyBiaW5hcnlPcChpbnRlZ2VyT3BlcmF0aW9u
LCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAg
ICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAg
ICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICBzdG9y
ZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVp
IHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAg
ICAgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCitlbmQKKworX2xsaW50X29wX2FkZDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgc2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9h
ZGQpCisKKworX2xsaW50X29wX211bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5
T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xv
dywgaW5kZXgpCisgICAgICAgICAgICBjb25zdCBzY3JhdGNoID0gaW50MzJUYWcgICAjIFdlIGtu
b3cgdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIGludDMyVGFnIHJlZ2lzdGVyIHNpbmNlIGl0IGhhcyBh
IGNvbnN0YW50LgorICAgICAgICAgICAgbW92ZSByaWdodCwgc2NyYXRjaAorICAgICAgICAgICAg
Ym11bGlvIGxlZnQsIHNjcmF0Y2gsIHNsb3cKKyAgICAgICAgICAgIGJ0aW56IHNjcmF0Y2gsIC5k
b25lCisgICAgICAgICAgICBiaWx0IGxlZnQsIDAsIHNsb3cKKyAgICAgICAgICAgIGJpbHQgcmln
aHQsIDAsIHNsb3cKKyAgICAgICAgLmRvbmU6CisgICAgICAgICAgICBzdG9yZWkgSW50MzJUYWcs
IFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFBh
eWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQpIG11bGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVy
X211bCkKKworCitfbGxpbnRfb3Bfc3ViOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5h
cnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBic3ViaW8gbGVmdCwgcmln
aHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIHN1YmQgbGVmdCwgcmln
aHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3N1YikKKworCitfbGxpbnRfb3BfZGl2Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBt
YWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGNp
MmQgbGVmdCwgZnQwCisgICAgICAgICAgICBjaTJkIHJpZ2h0LCBmdDEKKyAgICAgICAgICAgIGRp
dmQgZnQwLCBmdDEKKyAgICAgICAgICAgIGJjZDJpIGZ0MSwgcmlnaHQsIC5ub3RJbnQKKyAgICAg
ICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAg
ICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAg
ICAgIGptcCAuZG9uZQorICAgICAgICAubm90SW50OgorICAgICAgICAgICAgc3RvcmVkIGZ0MSwg
W2NmciwgaW5kZXgsIDhdCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQsCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCkgZGl2ZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfZGl2KQorCisKK19sbGludF9vcF9tb2Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9tb2QpCisgICAgZGlzcGF0Y2goNCkKKworCittYWNy
byBiaXRPcChvcGVyYXRpb24sIGhlbHBlciwgYWR2YW5jZSkKKyAgICBsb2FkaSAxMltQQ10sIHQy
CisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMs
IHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmlu
ZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAg
ICBsb2FkaSA0W1BDXSwgdDIKKyAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xvdykKKyAgICBzdG9y
ZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCisKKy5zbG93OgorICAgIGNhbGxI
ZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCitlbmQKKworX2xsaW50X29wX2xz
aGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfbHNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF9yc2hpZnQ6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHNsb3cpIHJzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3Jz
aGlmdCwKKyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfdXJzaGlmdDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykKKyAg
ICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAw
LCBzbG93CisgICAgICAgIGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl91cnNoaWZ0LAorICAg
ICAgICA0KQorCisKK19sbGludF9vcF9iaXRhbmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGFuZGkgbGVmdCwgcmln
aHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdGFuZCwKKyAgICAgICAgNSkKKworCitf
bGxpbnRfb3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAg
ICAgX2xsaW50X2hlbHBlcl9iaXR4b3IsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG9y
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVy
X2JpdG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRub3Q6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcs
IC5vcEJpdG5vdFNsb3cKKyAgICBub3RpIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBk
aXNwYXRjaCgzKQorCisub3BCaXRub3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9iaXRub3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfY2hlY2tfaGFzX2luc3Rh
bmNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAsIC5vcENoZWNrSGFzSW5z
dGFuY2VTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0
YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1l
bnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgZGlzcGF0Y2goMikK
KworLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2NoZWNrX2hhc19pbnN0YW5jZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbnN0
YW5jZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIENoZWNrIHRoYXQgYmFzZVZhbCBp
bXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9yLgorICAgICMgRklYTUU6
IFRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKHQxLCB0MCkKKyAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwg
Lm9wSW5zdGFuY2VvZlNsb3cKKyAgICAKKyAgICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgorICAg
IGxvYWRpIDE2W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEluc3RhbmNlb2ZTbG93KQorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1f
dHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2Vv
ZlNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQorICAgIAorICAgICMgUmVn
aXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCisgICAgbW92ZSAxLCB0MAor
Lm9wSW5zdGFuY2VvZkxvb3A6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQy
CisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDJdLCB0
MgorICAgIGJwZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQorICAgIGJ0aW56IHQyLCAub3BJ
bnN0YW5jZW9mTG9vcAorCisgICAgbW92ZSAwLCB0MAorLm9wSW5zdGFuY2VvZkRvbmU6CisgICAg
c3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwg
UGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEluc3RhbmNl
b2ZTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbnN0YW5jZW9mKQorICAgIGRp
c3BhdGNoKDUpCisKKworX2xsaW50X29wX3R5cGVvZjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3R5cGVvZikKKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9pc191bmRlZmluZWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9pc191bmRlZmluZWQpCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfaXNfYm9vbGVhbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2lzX2Jvb2xlYW4pCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRf
b3BfaXNfbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfaXNfbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3N0
cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X2lzX3N0cmluZykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19vYmplY3Q6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19vYmpl
Y3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfZnVuY3Rpb246CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19mdW5jdGlvbikK
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luKQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX3Jlc29sdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9yZXNvbHZlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jl
c29sdmVfc2tpcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3Jlc29sdmVfc2tpcCkKKyAgICBkaXNwYXRjaCg1KQorCisKK21hY3JvIHJlc29sdmVH
bG9iYWwoc2l6ZSwgc2xvdykKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMg
NFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIFByb3BlcnR5
IGlkZW50aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2suCisgICAgIyAxMltQQ10gIFN0cnVj
dHVyZSBwb2ludGVyLCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAg
ICAjIDE2W1BDXSAgT2Zmc2V0IGluIGdsb2JhbCBvYmplY3QsIGluaXRpYWxpemVkIHRvIDAgYnkg
Ynl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxv
YWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cKKyAgICBsb2Fk
aSAxNltQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwg
dDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W3QwLCB0MSwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQy
LCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBsb2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQwCisgICAgdmFsdWVQcm9m
aWxlKHQyLCB0MywgdDApCitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICByZXNvbHZlR2xvYmFsKDYsIC5vcFJlc29sdmVHbG9iYWxTbG93
KQorICAgIGRpc3BhdGNoKDYpCisKKy5vcFJlc29sdmVHbG9iYWxTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNwYXRjaCg2KQorCisKKyMg
R2l2ZXMgeW91IHRoZSBzY29wZSBpbiB0MCwgd2hpbGUgYWxsb3dpbmcgeW91IHRvIG9wdGlvbmFs
bHkgcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0aGUKKyMgc2NvcGVzIGFzIHRoZXkgYXJl
IHRyYXZlcnNlZC4gc2NvcGVDaGVjaygpIGlzIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRo
ZSByZWdpc3RlcgorIyBob2xkaW5nIHRoZSBzY29wZSwgYW5kIGEgcmVnaXN0ZXIgdGhhdCBjYW4g
YmUgdXNlZCBmb3Igc2NyYXRjaC4gTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QKKyMgdXNlIHQzLCBz
byB5b3UgY2FuIGhvbGQgc3R1ZmYgaW4gdDMgaWYgbmVlZCBiZS4KK21hY3JvIGdldFNjb3BlKGRl
QnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2FkcCBTY29wZUNoYWluICsg
UGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIGRlQnJ1aWppbkluZGV4T3BlcmFuZCwg
dDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorICAgIAorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MQorICAgIGJpbmVxIENvZGVCbG9jazo6bV9jb2RlVHlwZVt0MV0sIEZ1bmN0aW9uQ29k
ZSwgLmxvb3AKKyAgICBidGJ6IENvZGVCbG9jazo6bV9uZWVkc0Z1bGxTY29wZUNoYWluW3QxXSwg
Lmxvb3AKKyAgICAKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3Qx
XSwgdDEKKworICAgICMgTmVlZCB0byBjb25kaXRpb25hbGx5IHNraXAgb3ZlciBvbmUgc2NvcGUu
CisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2
YXRpb24KKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6
bmV4dFt0MF0sIHQwCisubm9BY3RpdmF0aW9uOgorICAgIHN1YmkgMSwgdDIKKyAgICAKKyAgICBi
dGl6IHQyLCAuZG9uZQorLmxvb3A6CisgICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAg
U2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MAorICAgIHN1YmkgMSwgdDIKKyAgICBidGlueiB0
MiwgLmxvb3AKKworLmRvbmU6CitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFt
aWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2Jh
bERhdGFbc3BdLCB0MworICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0aXZhdGlvblN0cnVjdHVy
ZVt0M10sIHQzCisgICAgZ2V0U2NvcGUoCisgICAgICAgIDIwW1BDXSwKKyAgICAgICAgbWFjcm8g
KHNjb3BlLCBzY3JhdGNoKQorICAgICAgICAgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVj
dFtzY29wZV0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
c2NyYXRjaF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdworICAgICAgICBl
bmQpCisgICAgcmVzb2x2ZUdsb2JhbCg3LCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3cpCisg
ICAgZGlzcGF0Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFt
aWMpCisgICAgZGlzcGF0Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQorICAgIGRp
c3BhdGNoKDcpCisKKworX2xsaW50X29wX2dldF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0
aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIEluZGV4IG9mIHJlZ2lzdGVyIGlu
IHRoZSBzY29wZS4KKyAgICAjIDEyW1BDXSAgRGUgQnJ1aWppbiBpbmRleC4KKyAgICBnZXRTY29w
ZSgxMltQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDRbUENdLCB0
MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3Rb
dDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAK
KyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W3QwLCB0MiwgOF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAxNltQ
Q10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MCwgdDEpCisgICAgZGlzcGF0Y2goNSkKKwor
CitfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGdl
dFNjb3BlKDhbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSAxMltQ
Q10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDMsIHQyKQorICAgIGxvYWRp
IDRbUENdLCB0MQorICAgIHdyaXRlQmFycmllcih0MywgdDIpCisgICAgbG9hZHAgU2NvcGVDaGFp
bk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdp
c3RlcnNbdDBdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBz
dG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBs
b2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09m
ZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwg
dDEKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwg
UGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICB2YWx1
ZVByb2ZpbGUodDIsIHQxLCB0MykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRf
Z2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2Jh
bE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fcmVnaXN0ZXJzW3Qw
XSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgbG9hZGkg
NFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09m
ZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0K
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX2Jhc2U6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2Jhc2UpCisg
ICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0czoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Vuc3VyZV9w
cm9wZXJ0eV9leGlzdHMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV93
aXRoX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9y
ZXNvbHZlX3dpdGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xs
aW50X29wX2dldF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBvbmx5IGRv
IG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBub3QgbW9k
aWZ5IHRoZQorICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cgZm9yIHRoZSBjYWNo
ZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKKyAgICAjIHBpbmctcG9uZ2luZyBp
cyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxsIGNvbnRp
bnVlCisgICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3b3JzdCB3
ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAorICAgICMgd2Ugd291bGQgaGF2ZSBiZWVu
IGRvaW5nIGFueXdheS4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQx
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BH
ZXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1f
cHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3Qz
XSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgVGFn
T2Zmc2V0W3QwLCB0Ml0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDJdLCB0Mgor
ICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgMzJbUENdLCB0MQorICAgIHZhbHVlUHJv
ZmlsZSh0MywgdDIsIHQxKQorICAgIGRpc3BhdGNoKDkpCisKKy5vcEdldEJ5SWRTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOSkKKwor
CitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xv
dworICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQyCisgICAg
c3ViaSAxLCB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkK
KworLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
cHV0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAg
ICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMs
IENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAg
bG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBicG5lcSBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgbG9hZGkgMjBbUENd
LCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MCwgdDIpCisgICAgd3Jp
dGVCYXJyaWVyKHQwLCB0MikKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDFdCisgICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBkaXNwYXRjaCg5KQorCisub3BQ
dXRCeUlkU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X2lkKQorICAg
IGRpc3BhdGNoKDkpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24oYWRkaXRpb25hbENoZWNr
cykKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkg
MTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBDZWxsVGFn
LCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGJwbmVxIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBhZGRpdGlvbmFs
Q2hlY2tzKHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MQorICAg
IGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQzCisgICAgYWRkcCB0MSwg
dDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDEsIHQyKQorICAgIHdyaXRl
QmFycmllcih0MSwgdDIpCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkg
MjRbUENdLCB0MQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZXAg
dDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgZGlzcGF0Y2goOSkKK2VuZAorCitfbGxp
bnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIHB1dEJ5SWRUcmFuc2l0aW9u
KG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkKKworCitfbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgIHB1dEJ5SWRUcmFuc2l0aW9uKAorICAg
ICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQorICAgICAgICAgICAgY29u
c3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRoZSBvbGRTdHJ1Y3R1cmUg
cmVnaXN0ZXIgZm9yIHRoZSBwcm90bworICAgICAgICAKKyAgICAgICAgICAgIGxvYWRwIDI4W1BD
XSwgc2NyYXRjaAorICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYnRwbnogc2NyYXRjaCwg
b2sgZW5kKQorICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3NjcmF0
Y2hdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNo
LCBvayBlbmQpCisgICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdP
ZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAgICAgICAgLmxvb3A6CisgICAg
ICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFtvbGRT
dHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICAgICAgICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgICAgICAgICBicG5lcSBvbGRTdHJ1Y3R1
cmUsIFtzY3JhdGNoXSwgc2xvdworICAgICAgICAgICAgYWRkcCA0LCBzY3JhdGNoCisgICAgICAg
ICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W29sZFN0cnVjdHVy
ZV0sIE51bGxUYWcsIC5sb29wCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQpCisKKworX2xs
aW50X29wX2RlbF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2RlbF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9n
ZXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxTbG93KQorICAgIGxvYWRw
IEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MV0sIHQyCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQodDMsIEludDMyVGFnLCB0MSwgLm9wR2V0QnlWYWxTbG93KQorICAg
IGJwbmVxIFt0MF0sIHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0
b3JhZ2VbdDBdLCB0MworICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MF0s
IC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIEFycmF5U3Rv
cmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBBcnJh
eVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEsIDhdLCB0MQorICAgIGJp
ZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAgIHN0b3JlaSB0MiwgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQwKQor
ICAgIGRpc3BhdGNoKDUpCisKKy5vcEdldEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfZ2V0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9nZXRf
YXJndW1lbnRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQxLCBJbnQzMlRhZywgdDIsIC5vcEdldEFyZ3VtZW50QnlWYWxT
bG93KQorICAgIGFkZGkgMSwgdDIKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9m
ZnNldFtjZnJdLCB0MQorICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cK
KyAgICBuZWdpIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50
T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxvYWRpIFRoaXNBcmd1bWVu
dE9mZnNldCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgc3RvcmVpIHQwLCBU
YWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MywgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudEJ5VmFsU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKKyAgICBkaXNwYXRj
aCg0KQorCisKK19sbGludF9vcF9nZXRfYnlfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MCwgQ2VsbFRhZywgdDEsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDE2W1BDXSwgdDAK
KyAgICBicG5lcSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgLm9wR2V0QnlQbmFtZVNs
b3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDIwW1BDXSwg
dDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MworICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAorICAgIGJwbmVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9h
ZGkgMjRbUENdLCB0MAorICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAKKyAgICBzdWJpIDEsIHQw
CisgICAgYmlhZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2FjaGVhYmxlU2xv
dHNbdDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5
U3RvcmFnZVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QyLCB0MCwgOF0sIHQxCisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFt0MiwgdDAsIDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNykKKworLm9wR2V0QnlQbmFtZVNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9wbmFtZSkKKyAgICBkaXNw
YXRjaCg3KQorCisKK19sbGludF9vcF9wdXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgSW50MzJUYWcsIHQyLCAub3BQdXRC
eVZhbFNsb3cpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2dsb2JhbERhdGFbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJh
eUNsYXNzSW5mb1t0MF0sIHQwCisgICAgYnBuZXEgW3QxXSwgdDAsIC5vcFB1dEJ5VmFsU2xvdwor
ICAgIGJpYWVxIHQyLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MV0sIC5vcFB1dEJ5VmFsU2xv
dworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQwCisgICAgYmllcSBBcnJheVN0
b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIEVtcHR5VmFsdWVUYWcsIC5v
cFB1dEJ5VmFsRW1wdHkKKy5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQ6CisgICAgbG9hZGkgMTJbUENd
LCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MSwgdDMpCisgICAgd3Jp
dGVCYXJyaWVyKHQxLCB0MykKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV92ZWN0b3Ig
KyBUYWdPZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0b3JlaSB0MywgQXJyYXlTdG9yYWdlOjptX3Zl
Y3RvciArIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcFB1
dEJ5VmFsRW1wdHk6CisgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1fbnVtVmFsdWVzSW5WZWN0
b3JbdDBdCisgICAgYmliIHQyLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXSwgLm9wUHV0QnlW
YWxTdG9yZVJlc3VsdAorICAgIGFkZGkgMSwgdDIsIHQxCisgICAgc3RvcmVpIHQxLCBBcnJheVN0
b3JhZ2U6Om1fbGVuZ3RoW3QwXQorICAgIGptcCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisKKy5v
cFB1dEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHV0X2J5X3ZhbCkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9kZWxfYnlfdmFsOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X3ZhbCkKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaW5kZXg6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaW5kZXgpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dldHRlcl9zZXR0ZXI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfZ2V0dGVyX3NldHRlcikK
KyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9sb29wOgorICAgIG5vcAorX2xsaW50X29w
X2ptcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0Y2hCcmFuY2goNFtQQ10pCisK
KworX2xsaW50X29wX2ptcF9zY29wZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9qbXBfc2NvcGVzKQorICAgIGRpc3BhdGNoKDApCisKKworbWFj
cm8ganVtcFRydWVPckZhbHNlKGNvbmRpdGlvbk9wLCBzbG93KQorICAgIGxvYWRpIDRbUENdLCB0
MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBCb29sZWFuVGFnLCB0MCwg
LnNsb3cpCisgICAgY29uZGl0aW9uT3AodDAsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKwor
LnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhl
bHBlcihzbG93KQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfdHJ1
ZToKKyAgICBub3AKK19sbGludF9vcF9qdHJ1ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
anVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpbnogdmFs
dWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfanRydWUpCisKKworX2xsaW50
X29wX2xvb3BfaWZfZmFsc2U6CisgICAgbm9wCitfbGxpbnRfb3BfamZhbHNlOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwg
dGFyZ2V0KSBidGl6IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pm
YWxzZSkKKworCittYWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGltbWVkaWF0ZUhhbmRsZXIp
CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEs
IENlbGxUYWcsIC5pbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwg
dDIKKyAgICBjZWxsSGFuZGxlcihTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9m
bGFnc1t0Ml0sIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNw
YXRjaEJyYW5jaCg4W1BDXSkKKworLmltbWVkaWF0ZToKKyAgICBvcmkgMSwgdDEKKyAgICBpbW1l
ZGlhdGVIYW5kbGVyKHQxLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCitlbmQKKworX2xsaW50
X29wX2plcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAg
ICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJueiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpZXEgdmFs
dWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisgICAgCisKK19sbGludF9vcF9qbmVxX251bGw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVl
LCB0YXJnZXQpIGJ0YnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQs
CisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaW5lcSB2YWx1ZSwgTnVsbFRhZywgdGFy
Z2V0IGVuZCkKKworCitfbGxpbnRfb3Bfam5lcV9wdHI6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09m
ZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wSm5lcVB0ckJyYW5jaAorICAgIGJwZXEgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEsIC5vcEpuZXFQdHJGYWxsVGhyb3VnaAorLm9wSm5l
cVB0ckJyYW5jaDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisub3BKbmVxUHRyRmFsbFRo
cm91Z2g6CisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBjb21wYXJlKGludGVnZXJDb21wYXJl
LCBkb3VibGVDb21wYXJlLCBoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZGkg
OFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDAsIHQxKQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MiwgdDMpCisgICAgYmluZXEgdDAsIEludDMy
VGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AyTm90SW50CisgICAg
aW50ZWdlckNvbXBhcmUodDEsIHQzLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisu
b3AxTm90SW50OgorICAgIGJpYSB0MCwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MiwgTG93
ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xv
dworICAgIGNpMmQgdDMsIGZ0MQorICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRP
cDJEb3VibGU6CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBm
aWkyZCB0MSwgdDAsIGZ0MAorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0
KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDJOb3RJbnQ6CisgICAgY2kyZCB0MSwgZnQwCisgICAg
YmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKyAgICBkb3Vi
bGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisuanVt
cFRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisKKy5zbG93OgorICAgIGNhbGxI
ZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZf
bGVzczoKKyAgICBub3AKK19sbGludF9vcF9qbGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiZGx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2ps
ZXNzKQorCisKK19sbGludF9vcF9qbmxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNv
bXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
ZGd0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9q
bmxlc3MpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcjoKKyAgICBub3AKK19sbGludF9v
cF9qZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0IGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVhdGVyKQorCisKK19sbGludF9v
cF9qbmdyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXF1biBsZWZ0LCBy
aWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXIpCisKKwor
X2xsaW50X29wX2xvb3BfaWZfbGVzc2VxOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzZXE6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3NlcSkKKworCitfbGxpbnRfb3Bfam5sZXNzZXE6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzc2VxKQorCisKK19sbGludF9vcF9sb29wX2lm
X2dyZWF0ZXJlcToKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmRndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2pncmVhdGVyZXEpCisKKworX2xsaW50X29wX2puZ3JlYXRlcmVxOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHR1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3BfbG9vcF9oaW50
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisg
ICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2ltbToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAgIG11bGkg
c2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMgICAjIEZJWE1FOiB3b3VsZCBiZSBuaWNlIHRvIHBl
ZXBob2xlIHRoaXMhCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9pbW1lZGlhdGVT
d2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQz
LCB0MgorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wU3dpdGNoSW1tTm90SW50CisgICAgc3Vi
aSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBU
YWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hJbW1G
YWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZl
Y3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgNF0sIHQxCisgICAg
YnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhP
ZmZzZXQodDEpCisKKy5vcFN3aXRjaEltbU5vdEludDoKKyAgICBiaWIgdDEsIExvd2VzdFRhZywg
Lm9wU3dpdGNoSW1tU2xvdyAgIyBHbyB0byBzbG93IHBhdGggaWYgaXQncyBhIGRvdWJsZS4KKy5v
cFN3aXRjaEltbUZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisub3BT
d2l0Y2hJbW1TbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfaW1tKQor
ICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3N3aXRjaF9jaGFyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVs
aSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURh
dGE6Om1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0s
IHQyCisgICAgYWRkcCB0MywgdDIKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wU3dpdGNoQ2hh
ckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAg
YmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIFN0cmlu
Z1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTU3RyaW5nOjptX3Zh
bHVlW3QwXSwgdDAKKyAgICBiaW5lcSBTdHJpbmdJbXBsOjptX2xlbmd0aFt0MF0sIDEsIC5vcFN3
aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFN0cmluZ0ltcGw6Om1fZGF0YThbdDBdLCB0
MQorICAgIGJ0aW56IFN0cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdzW3QwXSwgSGFzaEZsYWdzOEJp
dEJ1ZmZlciwgLm9wU3dpdGNoQ2hhcjhCaXQKKyAgICBsb2FkaCBbdDFdLCB0MAorICAgIGptcCAu
b3BTd2l0Y2hDaGFyUmVhZHkKKy5vcFN3aXRjaENoYXI4Qml0OgorICAgIGxvYWRiIFt0MV0sIHQw
Cisub3BTd2l0Y2hDaGFyUmVhZHk6CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0s
IHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3Rv
clNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTaW1w
bGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0Mgor
ICAgIGxvYWRpIFt0MiwgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEsIC5vcFN3aXRjaEltbUZhbGxU
aHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQorCisub3BTd2l0Y2hDaGFy
RmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKworX2xsaW50X29wX3N3
aXRjaF9zdHJpbmc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9zd2l0Y2hfc3RyaW5nKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX25l
d19mdW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidGl6IDEyW1BDXSwgLm9wTmV3RnVu
Y1VuY2hlY2tlZAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIs
IHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wTmV3RnVuY0RvbmUKKy5vcE5ld0Z1bmNVbmNoZWNr
ZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19mdW5jKQorLm9wTmV3RnVuY0Rv
bmU6CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmNfZXhw
KQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gZG9DYWxsKGhlbHBlcikKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAgTExJbnRDYWxsTGlua0lu
Zm86OmNhbGxlZVt0MV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAs
IENlbGxUYWcsIHQzLCAub3BDYWxsU2xvdykKKyAgICBiaW5lcSB0MywgdDIsIC5vcENhbGxTbG93
CisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGFkZHAgMjQsIFBDCisgICAgbHNoaWZ0aSAzLCB0
MworICAgIGFkZHAgY2ZyLCB0MyAgIyB0MyBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9mIGNmcgor
ICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fc2NvcGVDaGFpblt0Ml0sIHQwCisgICAgc3RvcmVpIHQy
LCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSB0MCwgU2NvcGVDaGFpbiAr
IFBheWxvYWRPZmZzZXRbdDNdCisgICAgbG9hZGkgOCAtIDI0W1BDXSwgdDIKKyAgICBzdG9yZWkg
UEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0b3JlcCBjZnIsIENhbGxl
ckZyYW1lW3QzXQorICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRb
dDNdCisgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNldFt0M10KKyAgICBzdG9y
ZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10KKyAgICBtb3ZlIHQzLCBjZnIK
KyAgICBjYWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRhcmdldFt0MV0KKyAgICBk
aXNwYXRjaEFmdGVyQ2FsbCgpCisKKy5vcENhbGxTbG93OgorICAgIHNsb3dQYXRoRm9yQ2FsbCg2
LCBoZWxwZXIpCitlbmQKKworX2xsaW50X29wX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGRvQ2FsbChfbGxpbnRfaGVscGVyX2NhbGwpCisKKworX2xsaW50X29wX2NvbnN0cnVjdDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY29uc3RydWN0
KQorCisKK19sbGludF9vcF9jYWxsX3ZhcmFyZ3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IHNsb3dQYXRoRm9yQ2FsbCg2LCBfbGxpbnRfaGVscGVyX2NhbGxfdmFyYXJncykKKworCitfbGxp
bnRfb3BfY2FsbF9ldmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAKKyAgICAjIEV2YWwg
aXMgZXhlY3V0ZWQgaW4gb25lIG9mIHR3byBtb2RlczoKKyAgICAjCisgICAgIyAxKSBXZSBmaW5k
IHRoYXQgd2UncmUgcmVhbGx5IGludm9raW5nIGV2YWwoKSBpbiB3aGljaCBjYXNlIHRoZQorICAg
ICMgICAgZXhlY3V0aW9uIGlzIHBlcmZvbWVkIGVudGlyZWx5IGluc2lkZSB0aGUgaGVscGVyLCBh
bmQgaXQKKyAgICAjICAgIHJldHVybnMgdGhlIFBDIG9mIGEgZnVuY3Rpb24gdGhhdCBqdXN0IHJl
dHVybnMgdGhlIHJldHVybiB2YWx1ZQorICAgICMgICAgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4K
KyAgICAjCisgICAgIyAyKSBXZSBmaW5kIHRoYXQgd2UncmUgaW52b2tpbmcgc29tZXRoaW5nIGNh
bGxlZCBldmFsKCkgdGhhdCBpcyBub3QKKyAgICAjICAgIHRoZSByZWFsIGV2YWwuIFRoZW4gdGhl
IGhlbHBlciByZXR1cm5zIHRoZSBQQyBvZiB0aGUgdGhpbmcgdG8KKyAgICAjICAgIGNhbGwsIGFu
ZCB3ZSBjYWxsIGl0LgorICAgICMKKyAgICAjIFRoaXMgYWxsb3dzIHVzIHRvIGhhbmRsZSB0d28g
Y2FzZXMsIHdoaWNoIHdvdWxkIHJlcXVpcmUgYSB0b3RhbCBvZgorICAgICMgdXAgdG8gZm91ciBw
aWVjZXMgb2Ygc3RhdGUgdGhhdCBjYW5ub3QgYmUgZWFzaWx5IHBhY2tlZCBpbnRvIHR3bworICAg
ICMgcmVnaXN0ZXJzIChDIGZ1bmN0aW9ucyBjYW4gcmV0dXJuIHVwIHRvIHR3byByZWdpc3RlcnMs
IGVhc2lseSk6CisgICAgIworICAgICMgLSBUaGUgY2FsbCBmcmFtZSByZWdpc3Rlci4gVGhpcyBt
YXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4gbW9kaWZpZWQKKyAgICAjICAgYnkgdGhlIGhlbHBlciwg
YnV0IHRoZSBjb252ZW50aW9uIGlzIHRoYXQgaXQgcmV0dXJucyBpdC4gSXQncyBub3QKKyAgICAj
ICAgdG90YWxseSBjbGVhciBpZiB0aGF0J3MgbmVjZXNzYXJ5LCBzaW5jZSB0aGUgY2ZyIGlzIGNh
bGxlZSBzYXZlLgorICAgICMgICBCdXQgdGhhdCdzIG91ciBzdHlsZSBpbiB0aGlzIGhlcmUgaW50
ZXJwcmV0ZXIgc28gd2Ugc3RpY2sgd2l0aCBpdC4KKyAgICAjCisgICAgIyAtIEEgYml0IHRvIHNh
eSBpZiB0aGUgaGVscGVyIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCB0aGUgZXZhbCBhbmQgaGFzCisg
ICAgIyAgIHRoZSByZXR1cm4gdmFsdWUsIG9yIGRpZCBub3QgZXhlY3V0ZSB0aGUgZXZhbCBidXQg
aGFzIGEgUEMgZm9yIHVzCisgICAgIyAgIHRvIGNhbGwuCisgICAgIworICAgICMgLSBFaXRoZXI6
CisgICAgIyAgIC0gVGhlIEpTIHJldHVybiB2YWx1ZSAodHdvIHJlZ2lzdGVycyksIG9yCisgICAg
IworICAgICMgICAtIFRoZSBQQyB0byBjYWxsLgorICAgICMKKyAgICAjIEl0IHR1cm5zIG91dCB0
byBiZSBlYXNpZXIgdG8ganVzdCBhbHdheXMgaGF2ZSB0aGlzIHJldHVybiB0aGUgY2ZyCisgICAg
IyBhbmQgYSBQQyB0byBjYWxsLCBhbmQgdGhhdCBQQyBtYXkgYmUgYSBkdW1teSB0aHVuayB0aGF0
IGp1c3QKKyAgICAjIHJldHVybnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQu
CisgICAgCisgICAgc2xvd1BhdGhGb3JDYWxsKDQsIF9sbGludF9oZWxwZXJfY2FsbF9ldmFsKQor
CisKK19sbGludF9nZW5lcmljX3JldHVybl9wb2ludDoKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgp
CisKKworX2xsaW50X29wX3RlYXJfb2ZmX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRh
Z09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25D
cmVhdGVkCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5v
cFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZAorLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVk
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQorLm9w
VGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkOgorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX3RlYXJfb2ZmX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgc3ViaSAxLCB0MCAgICMgR2V0IHRoZSB1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXIKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywg
Lm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfdGVhcl9vZmZfYXJndW1lbnRzKQorLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQ6Cisg
ICAgZGlzcGF0Y2goMikKKworCittYWNybyBkb1JldHVybigpCisgICAgbG9hZHAgUmV0dXJuUENb
Y2ZyXSwgdDIKKyAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKKyAgICByZXN0b3JlUmV0
dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICByZXQKK2VuZAorCitfbGxpbnRfb3BfcmV0
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUo
KQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQx
LCB0MCkKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX2NhbGxfcHV0X3Jlc3VsdDoKKyAg
ICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBzdG9yZWkgdDEsIFRh
Z09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQy
LCA4XQorICAgIHZhbHVlUHJvZmlsZSh0MSwgdDAsIHQzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkg
IyBOZWVkcyB0byBiZSBoZXJlIGJlY2F1c2UgaXQgd291bGQgY2xvYmJlciB0MSwgdDAKKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXRfb2JqZWN0X29yX3RoaXM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkg
NFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGJp
bmVxIHQxLCBDZWxsVGFnLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZv
ICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcFJldE9iamVjdE9yVGhpc05v
dE9iamVjdAorICAgIGRvUmV0dXJuKCkKKworLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0Ogor
ICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0
MCkKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX21ldGhvZF9jaGVjazoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNoZWNrcyBhbmQgdXNlIG5vcm1h
bCBnZXRfYnlfaWQgb3B0aW1pemF0aW9ucy4KKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9v
cF9zdHJjYXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9zdHJjYXQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfdG9fcHJpbWl0aXZl
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSA0
W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmlu
ZXEgdDEsIENlbGxUYWcsIC5vcFRvUHJpbWl0aXZlSXNJbW0KKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm9wVG9QcmltaXRpdmVTbG93Q2FzZQorLm9w
VG9QcmltaXRpdmVJc0ltbToKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQor
ICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMp
CisKKy5vcFRvUHJpbWl0aXZlU2xvd0Nhc2U6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3RvX3ByaW1pdGl2ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9nZXRfcG5hbWVz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0
X3BuYW1lcykKKyAgICBkaXNwYXRjaCgwKSAjIFRoZSBoZWxwZXIgZWl0aGVyIGFkdmFuY2VzIHRo
ZSBQQyBvciBqdW1wcyB1cyB0byBzb21ld2hlcmUgZWxzZS4KKworCitfbGxpbnRfb3BfbmV4dF9w
bmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxv
YWRpIDE2W1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MAor
ICAgIGJpZXEgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIC5vcE5leHRQbmFtZUVuZAor
ICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
LCB0MgorICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fanNTdHJpbmdzW3QyXSwg
dDMKKyAgICBsb2FkaSBbdDMsIHQwLCA4XSwgdDMKKyAgICBhZGRpIDEsIHQwCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAg
c3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5
bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0M10sIHQxCisgICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVk
U3RydWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRwIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0MAorICAgIGxvYWRwIFN0cnVj
dHVyZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BOZXh0UG5hbWVU
YXJnZXQKKy5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcDoKKyAgICBiaWVxIFN0cnVjdHVy
ZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbdDFdLCBOdWxsVGFnLCAub3BOZXh0UG5hbWVTbG93
CisgICAgbG9hZHAgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDFdLCB0
MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MQorICAgIGJwbmVxIHQxLCBb
dDBdLCAub3BOZXh0UG5hbWVTbG93CisgICAgYWRkcCA0LCB0MAorICAgIGJ0cG56IFt0MF0sIC5v
cE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcAorLm9wTmV4dFBuYW1lVGFyZ2V0OgorICAgIGRp
c3BhdGNoQnJhbmNoKDI0W1BDXSkKKworLm9wTmV4dFBuYW1lRW5kOgorICAgIGRpc3BhdGNoKDcp
CisKKy5vcE5leHRQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25leHRf
cG5hbWUpICMgVGhpcyBlaXRoZXIga2VlcHMgdGhlIFBDIHdoZXJlIGl0IHdhcyAoY2F1c2luZyB1
cyB0byBsb29wKSBvciBzZXRzIGl0IHRvIHRhcmdldC4KKyAgICBkaXNwYXRjaCgwKQorCisKK19s
bGludF9vcF9wdXNoX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcHVzaF9zY29wZSkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9v
cF9wb3Bfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9wb3Bfc2NvcGUpCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfcHVzaF9u
ZXdfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9wdXNoX25ld19zY29wZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9jYXRj
aDoKKyAgICAjIFRoaXMgaXMgd2hlcmUgd2UgZW5kIHVwIGZyb20gdGhlIEpJVCdzIHRocm93IHRy
YW1wb2xpbmUgKGJlY2F1c2UgdGhlCisgICAgIyBtYWNoaW5lIGNvZGUgcmV0dXJuIGFkZHJlc3Mg
d2lsbCBiZSBzZXQgdG8gX2xsaW50X29wX2NhdGNoKSwgYW5kIGZyb20KKyAgICAjIHRoZSBpbnRl
cnByZXRlcidzIHRocm93IHRyYW1wb2xpbmUgKHNlZSBfbGxpbnRfdGhyb3dfdHJhbXBvbGluZSku
CisgICAgIyBUaGUgSklUIHRocm93aW5nIHByb3RvY29sIGNhbGxzIGZvciB0aGUgY2ZyIHRvIGJl
IGluIHQwLiBUaGUgdGhyb3dpbmcKKyAgICAjIGNvZGUgbXVzdCBoYXZlIGtub3duIHRoYXQgd2Ug
d2VyZSB0aHJvd2luZyB0byB0aGUgaW50ZXJwcmV0ZXIsIGFuZCBoYXZlCisgICAgIyBzZXQgSlNH
bG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cuCisgICAgbW92ZSB0MCwgY2Zy
CisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZGkg
SlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3dbdDNdLCBQQworICAgIGxv
YWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10sIHQwCisgICAg
bG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdLCB0MQorICAgIHN0
b3JlaSAwLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAg
c3RvcmVpIEVtcHR5VmFsdWVUYWcsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0
W3QzXSAgICAgICAKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQor
ICAgIHRyYWNlRXhlY3V0aW9uKCkgICMgVGhpcyBuZWVkcyB0byBiZSBoZXJlIGJlY2F1c2Ugd2Ug
ZG9uJ3Qgd2FudCB0byBjbG9iYmVyIHQwLCB0MSwgdDIsIHQzIGFib3ZlLgorICAgIGRpc3BhdGNo
KDIpCisKKworX2xsaW50X29wX3Rocm93OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfdGhyb3cpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRf
b3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQorICAgIGRpc3BhdGNo
KDIpCisKKworX2xsaW50X29wX2pzcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgYWRkaSAzICogNCwgUEMsIHQxCisgICAgc3RvcmVpIHQxLCBbY2ZyLCB0
MCwgOF0KKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3JldDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZHAgW2Nmciwg
dDAsIDhdLCBQQworICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX2RlYnVnOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVidWcpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJvZmlsZV93aWxsX2NhbGw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVy
ZW5jZVtzcF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxsKQorLm9wUHJvZmlsZVdp
bGxDYWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wcm9maWxlX2RpZF9j
YWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjplbmFi
bGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCB0MAorICAgIGJ0cHogW3QwXSwgLm9wUHJvZmlsZVdp
bGxDYWxsRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcm9maWxlX2RpZF9jYWxs
KQorLm9wUHJvZmlsZURpZENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29w
X2VuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxv
Z3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1Jl
dHVybigpCisKKworX2xsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmU6CisgICAgIyBX
aGVuIHRocm93aW5nIGZyb20gdGhlIGludGVycHJldGVyIChpLmUuIHRocm93aW5nIGZyb20gTExJ
bnRIZWxwZXJzKSwgc28KKyAgICAjIHRoZSB0aHJvdyB0YXJnZXQgaXMgbm90IG5lY2Vzc2FyaWx5
IGludGVycHJldGVkIGNvZGUsIHdlIGNvbWUgdG8gaGVyZS4KKyAgICAjIFRoaXMgZXNzZW50aWFs
bHkgZW11bGF0ZXMgdGhlIEpJVCdzIHRocm93aW5nIHByb3RvY29sLgorICAgIGxvYWRwIEpJVFN0
YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2Fs
bEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hp
bmVQQ0ZvclRocm93W3QxXQorCisKK19sbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5l
OgorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICBsb2FkcCBKSVRT
dGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNh
bGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNo
aW5lUENGb3JUaHJvd1t0MV0KKworCisjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2UgY2FuIGxp
bmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KKyMgVGhlc2Ugb3Bj
b2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIgSklULiBX
ZSBhc3NlcnQKKyMgYXMgbXVjaC4KKworbWFjcm8gbm90U3VwcG9ydGVkKCkKKyAgICBpZiBBU1NF
UlRfRU5BQkxFRAorICAgICAgICBjcmFzaCgpCisgICAgZWxzZQorICAgICAgICAjIFdlIHNob3Vs
ZCB1c2Ugd2hhdGV2ZXIgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIGluc3RydWN0aW9uIGlzLCBqdXN0
IHRvCisgICAgICAgICMgZW5zdXJlIHRoYXQgdGhlcmUgaXMgYSBnYXAgYmV0d2VlbiBpbnN0cnVj
dGlvbiBsYWJlbHMuIElmIG11bHRpcGxlCisgICAgICAgICMgc21hbGxlc3QgaW5zdHJ1Y3Rpb25z
IGV4aXN0LCB3ZSBzaG91bGQgcGljayB0aGUgb25lIHRoYXQgaXMgbW9zdAorICAgICAgICAjIGxp
a2VseSByZXN1bHQgaW4gZXhlY3V0aW9uIGJlaW5nIGhhbHRlZC4gQ3VycmVudGx5IHRoYXQgaXMg
dGhlIGJyZWFrCisgICAgICAgICMgaW5zdHJ1Y3Rpb24gb24gYWxsIGFyY2hpdGVjdHVyZXMgd2Un
cmUgaW50ZXJlc3RlZCBpbi4gKEJyZWFrIGlzIGludDMKKyAgICAgICAgIyBvbiBJbnRlbCwgd2hp
Y2ggaXMgMSBieXRlLCBhbmQgYmtwdCBvbiBBUk12Nywgd2hpY2ggaXMgMiBieXRlcy4pCisgICAg
ICAgIGJyZWFrCisgICAgZW5kCitlbmQKKworX2xsaW50X29wX2dldF9hcnJheV9sZW5ndGg6Cisg
ICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jaGFpbjoKKyAgICBub3RT
dXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbjoKKyAgICBub3RT
dXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9wcm90bzoKKyAgICBub3RT
dXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9zZWxmOgorICAgIG5vdFN1
cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0
ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9jaGFpbjoKKyAgICBub3RTdXBwb3J0
ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9wcm90bzoKKyAgICBub3RTdXBwb3J0
ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9zZWxmOgorICAgIG5vdFN1cHBvcnRl
ZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfcHJvdG86CisgICAgbm90U3VwcG9ydGVkKCkKKwor
X2xsaW50X29wX2dldF9ieV9pZF9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9v
cF9nZXRfc3RyaW5nX2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0
X2J5X2lkX2dlbmVyaWM6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9p
ZF9yZXBsYWNlOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCisKKyMgSW5kaWNhdGUgdGhlIGVuZCBvZiBM
TEludC4KK19sbGludF9lbmQ6CisgICAgY3Jhc2goKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMb3dM
ZXZlbEludGVycHJldGVyLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJMTElu
dE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CisKKy8vIFRo
aXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtLCB3aGljaCBjb250YWlucyBhbGwg
b2YgdGhlIGFzc2VtYmx5IGNvZGUKKy8vIGZvciB0aGUgaW50ZXJwcmV0ZXIsIGFzIGNvbXBpbGVk
IGZyb20gTG93TGV2ZWxJbnRlcnByZXRlci5hc20uCisjaW5jbHVkZSAiTExJbnRBc3NlbWJseS5o
IgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorI2RlZmluZSBMb3dMZXZl
bEludGVycHJldGVyX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxF
KExMSU5UKQorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKKyNkZWZpbmUgTExJTlRfSU5TVFJVQ1RJ
T05fREVDTChvcGNvZGUsIGxlbmd0aCkgZXh0ZXJuICJDIiB2b2lkIGxsaW50XyMjb3Bjb2RlKCk7
CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wpOworI3VuZGVm
IExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wKKworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2JlZ2luKCk7
CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW5kKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfcHJv
Z3JhbV9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2V2YWxfcHJvbG9ndWUoKTsK
K2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSgpOworZXh0
ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUoKTsKK2V4
dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaygpOworZXh0
ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2soKTsK
K2V4dGVybiAiQyIgdm9pZCBsbGludF9nZW5lcmljX3JldHVybl9wb2ludCgpOworZXh0ZXJuICJD
IiB2b2lkIGxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUoKTsKK2V4dGVybiAiQyIg
dm9pZCBsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKCk7CisKKyNlbmRpZiAvLyBF
TkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMb3dMZXZlbEludGVycHJldGVyX2gKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOTA5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCity
ZXF1aXJlICJhc3QiCityZXF1aXJlICJvcHQiCisKK2NsYXNzIE5vQ2hpbGRyZW4KKyAgZGVmIGFy
bVY3U2luZ2xlCisgICAgZG91YmxlT3BlcmFuZCA9IGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJC
b2d1cyByZWdpc3RlciBuYW1lICN7ZG91YmxlT3BlcmFuZH0iIHVubGVzcyBkb3VibGVPcGVyYW5k
ID1+IC9eZC8KKyAgICAicyIgKyAoJH4ucG9zdF9tYXRjaC50b19pICogMikudG9fcworICBlbmQK
K2VuZAorCitjbGFzcyBTcGVjaWFsUmVnaXN0ZXIgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFs
aXplKG5hbWUpCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFybVY3T3BlcmFu
ZAorICAgIEBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5k
CisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRl
PworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIHRydWUKKyAgZW5k
CitlbmQKKworQVJNdjdfRVhUUkFfR1BSUyA9IFtTcGVjaWFsUmVnaXN0ZXIubmV3KCJyMyIpLCBT
cGVjaWFsUmVnaXN0ZXIubmV3KCJyOCIpLCBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyOSIpXQorQVJN
djdfRVhUUkFfRlBSUyA9IFtTcGVjaWFsUmVnaXN0ZXIubmV3KCJkNyIpXQorQVJNdjdfU0NSQVRD
SF9GUFIgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJkOCIpCisKK2RlZiBhcm1WN01vdmVJbW1lZGlh
dGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJlbnRseSB3ZSBvbmx5IGhhbmRsZSB0aGUgc2lt
cGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1vdi9tb3Z0IGZvciB0aGUgY29tcGxleCBvbmVz
LgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2CisgICAgJGFzbS5wdXRzICJtb3Z3ICN7
cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje3ZhbHVlfSIKKyAgZWxzaWYgKH52YWx1ZSkgPj0g
MCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20ucHV0cyAibXZuICN7cmVnaXN0ZXIuYXJtVjdP
cGVyYW5kfSwgXCMje352YWx1ZX0iCisgIGVsc2UKKyAgICAkYXNtLnB1dHMgIm1vdncgI3tyZWdp
c3Rlci5hcm1WN09wZXJhbmR9LCBcIyN7dmFsdWUgJiAweGZmZmZ9IgorICAgIGlmICh2YWx1ZSAm
IDB4ZmZmZjAwMDApICE9IDAKKyAgICAgICRhc20ucHV0cyAibW92dCAje3JlZ2lzdGVyLmFybVY3
T3BlcmFuZH0sIFwjI3t2YWx1ZSA+PiAxNn0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNz
IFJlZ2lzdGVySUQKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4g
InQwIiwgImEwIiwgInIwIgorICAgICAgInIwIgorICAgIHdoZW4gInQxIiwgImExIiwgInIxIgor
ICAgICAgInIxIgorICAgIHdoZW4gInQyIiwgImEyIgorICAgICAgInIyIgorICAgIHdoZW4gImEz
IgorICAgICAgInIzIgorICAgIHdoZW4gInQzIgorICAgICAgInI0IgorICAgIHdoZW4gInQ0Igor
ICAgICAgInI3IgorICAgIHdoZW4gImNmciIKKyAgICAgICJyNSIKKyAgICB3aGVuICJsciIKKyAg
ICAgICJsciIKKyAgICB3aGVuICJzcCIKKyAgICAgICJzcCIKKyAgICBlbHNlCisgICAgICByYWlz
ZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIEFSTXY3IGF0ICN7Y29kZU9yaWdpblN0cmluZ30i
CisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdP
cGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZyIgorICAgICAgImQwIgor
ICAgIHdoZW4gImZ0MSIKKyAgICAgICJkMSIKKyAgICB3aGVuICJmdDIiCisgICAgICAiZDIiCisg
ICAgd2hlbiAiZnQzIgorICAgICAgImQzIgorICAgIHdoZW4gImZ0NCIKKyAgICAgICJkNCIKKyAg
ICB3aGVuICJmdDUiCisgICAgICAiZDUiCisgICAgZWxzZQorICAgICAgcmFpc2UgIkJhZCByZWdp
c3RlciAje25hbWV9IGZvciBBUk12NyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAor
ICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIHJh
aXNlICJJbnZhbGlkIGltbWVkaWF0ZSAje3ZhbHVlfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiBp
ZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAiXCMje3ZhbHVlfSIKKyAgZW5kCitlbmQK
KworY2xhc3MgQWRkcmVzcworICBkZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2UgIkJhZCBvZmZz
ZXQgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgb3Igb2Zm
c2V0LnZhbHVlID4gMHhmZmYKKyAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCBcIyN7b2Zmc2V0
LnZhbHVlfV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJtVjdPcGVy
YW5kCisgICAgcmFpc2UgIkJhZCBvZmZzZXQgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgaWYgb2Zm
c2V0LnZhbHVlICE9IDAKKyAgICBjYXNlIHNjYWxlCisgICAgd2hlbiAxCisgICAgICBzY2FsZVNo
aWZ0ID0gMAorICAgIHdoZW4gMgorICAgICAgc2NhbGVTaGlmdCA9IDEKKyAgICB3aGVuIDQKKyAg
ICAgIHNjYWxlU2hpZnQgPSAyCisgICAgd2hlbiA4CisgICAgICBzY2FsZVNoaWZ0ID0gOAorICAg
IGVsc2UKKyAgICAgIHJhaXNlICJCYWQgc2NhbGUgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAg
ICBlbmQKKyAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0s
IGxzbCBcIyN7c2NhbGVTaGlmdH1dIgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJl
c3MKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJVbmNvbnZlcnRlZCBhYnNvbHV0ZSBh
ZGRyZXNzIGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgIGVuZAorZW5kCisKKyMKKyMgTG93ZXJp
bmcgb2YgYnJhbmNoIG9wcy4gRm9yIGV4YW1wbGU6CisjCisjIGJhZGRpeiBmb28sIGJhciwgYmF6
CisjCisjIHdpbGwgYmVjb21lOgorIworIyBhZGRpIGZvbywgYmFyCisjIGJ6IGJhegorIworCitk
ZWYgYXJtVjdMb3dlckJyYW5jaE9wcyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNo
IHsKKyAgICB8IG5vZGUgfAorICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNh
c2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdoZW4gL15iKGFkZGl8c3ViaXxvcml8bXVsaXxhZGRwKS8K
KyAgICAgICAgb3AgPSAkMQorICAgICAgICBicmFuY2ggPSAiYiIgKyAkfi5wb3N0X21hdGNoCisg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgb3AsIG5v
ZGUub3BlcmFuZHNbMC4uLTJdKQorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhu
b2RlLmNvZGVPcmlnaW4sIGJyYW5jaCwgW25vZGUub3BlcmFuZHNbLTFdXSkKKyAgICAgIGVsc2UK
KyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICBuZXdM
aXN0IDw8IG5vZGUKKyAgICBlbmQKKyAgfQorICBuZXdMaXN0CitlbmQKKworIworIyBMb3dlcmlu
ZyBvZiBtYWxmb3JtZWQgYWRkcmVzc2VzLiBGb3IgZXhhbXBsZToKKyMKKyMgbG9hZHAgMTAwMDBb
Zm9vXSwgYmFyCisjCisjIHdpbGwgYmVjb21lOgorIworIyBtb3ZlIDEwMDAwLCB0bXAKKyMgYWRk
cCBmb28sIHRtcAorIyBsb2FkcCAwW3RtcF0sIGJhcgorIworCitjbGFzcyBOb2RlCisgIGRlZiBh
cm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgIG1hcENoaWxkcmVu
IHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNz
ZXNSZWN1cnNlKGxpc3QpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGRl
ZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgIGlmIG9mZnNl
dC52YWx1ZSA8IC0weGZmIG9yIG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICB0bXAgPSBUbXAu
bmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2Rl
T3JpZ2luLCAibW92ZSIsIFtvZmZzZXQsIHRtcF0pCisgICAgICBsaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhjb2RlT3JpZ2luLCAiYWRkcCIsIFtiYXNlLCB0bXBdKQorICAgICAgQWRkcmVzcy5uZXco
Y29kZU9yaWdpbiwgdG1wLCBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIDApKQorICAgIGVsc2UK
KyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRl
ZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgIGlmIG9mZnNl
dC52YWx1ZSAhPSAwCisgICAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAg
ICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFtvZmZzZXQsIHRt
cF0pCisgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAiYWRkcCIsIFti
YXNlLCB0bXBdKQorICAgICAgQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCB0bXAsIGluZGV4LCBz
Y2FsZSwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkKKyAgICBlbHNlCisgICAgICBzZWxm
CisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBkZWYgYXJt
VjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICB0bXAgPSBUbXAubmV3
KGNvZGVPcmlnaW4sIDpncHIpCisgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdp
biwgIm1vdmUiLCBbYWRkcmVzcywgdG1wXSkKKyAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCB0
bXAsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCisgIGVuZAorZW5kCisKK2RlZiBhcm1W
N0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVh
Y2ggeworICAgIHwgbm9kZSB8CisgICAgbmV3TGlzdCA8PCBub2RlLmFybVY3TG93ZXJNYWxmb3Jt
ZWRBZGRyZXNzZXNSZWN1cnNlKG5ld0xpc3QpCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMg
TG93ZXJpbmcgb2YgbWlzcGxhY2VkIGltbWVkaWF0ZXMuIEZvciBleGFtcGxlOgorIworIyBzdG9y
ZWkgMCwgW2Zvb10KKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUgMCwgdG1wCisjIHN0b3Jl
aSB0bXAsIFtmb29dCisjCisKK2RlZiBhcm1WN0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRlcyhsaXN0
KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIGlmIG5v
ZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdoZW4g
InN0b3JlaSIsICJzdG9yZXAiCisgICAgICAgIG9wZXJhbmRzID0gbm9kZS5vcGVyYW5kcworICAg
ICAgICBuZXdPcGVyYW5kcyA9IFtdCisgICAgICAgIG9wZXJhbmRzLmVhY2ggeworICAgICAgICAg
IHwgb3BlcmFuZCB8CisgICAgICAgICAgaWYgb3BlcmFuZC5pc19hPyBJbW1lZGlhdGUKKyAgICAg
ICAgICAgIHRtcCA9IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAg
ICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAibW92ZSIs
IFtvcGVyYW5kLCB0bXBdKQorICAgICAgICAgICAgbmV3T3BlcmFuZHMgPDwgdG1wCisgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbmV3T3BlcmFuZHMgPDwgb3BlcmFuZAorICAgICAgICAgIGVu
ZAorICAgICAgICB9CisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29k
ZU9yaWdpbiwgbm9kZS5vcGNvZGUsIG5ld09wZXJhbmRzKQorICAgICAgZWxzZQorICAgICAgICBu
ZXdMaXN0IDw8IG5vZGUKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIG5ld0xpc3QgPDwgbm9k
ZQorICAgIGVuZAorICB9CisgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1hbGZv
cm1lZCBpbW1lZGlhdGVzIGV4Y2VwdCB3aGVuIHVzZWQgaW4gYSAibW92ZSIgaW5zdHJ1Y3Rpb24u
CisjIEZvciBleGFtcGxlOgorIworIyBhZGRwIDY0MjY0MSwgZm9vCisjCisjIHdpbGwgYmVjb21l
OgorIworIyBtb3ZlIDY0MjY0MSwgdG1wCisjIGFkZHAgdG1wLCBmb28KKyMKKworY2xhc3MgTm9k
ZQorICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAg
bWFwQ2hpbGRyZW4geworICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUuYXJtVjdMb3dlck1hbGZv
cm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBB
ZGRyZXNzCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkK
KyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJtVjdMb3dl
ck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgc2VsZgorICBlbmQKK2VuZAor
CitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlh
dGVzUmVjdXJzZShsaXN0KQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRl
CisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkKKyAgICBp
ZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAgIHRtcCA9IFRtcC5uZXcoY29kZU9yaWdp
biwgOmdwcikKKyAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3Zl
IiwgW3NlbGYsIHRtcF0pCisgICAgICB0bXAKKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5k
CisgIGVuZAorZW5kCisKK2RlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlcyhsaXN0KQor
ICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIGlmIG5vZGUu
aXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdoZW4gIm1v
dmUiCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgd2hlbiAiYWRkaSIsICJhZGRwIiwg
InN1YmkiLCAic3VicCIKKyAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1swXS5pc19hPyBJbW1lZGlh
dGUgYW5kCisgICAgICAgICAgICBub2RlLm9wZXJhbmRzWzBdLnZhbHVlIDwgMCBhbmQKKyAgICAg
ICAgICAgIG5vZGUub3BlcmFuZHNbMF0udmFsdWUgPj0gMjU1CisgICAgICAgICAgaWYgbm9kZS5v
cGNvZGUgPX4gL2FkZC8KKyAgICAgICAgICAgIG5ld09wY29kZSA9ICJzdWIiICsgbm9kZS5vcGNv
ZGVbLTEuLi0xXQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld09wY29kZSA9ICJhZGQi
ICsgbm9kZS5vcGNvZGVbLTEuLi0xXQorICAgICAgICAgIGVuZAorICAgICAgICAgIG5ld0xpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbmV3T3Bjb2RlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtJbW1lZGlhdGUubmV3KC1ub2RlLm9wZXJhbmRz
WzBdLnZhbHVlKV0gKyBub2RlLm9wZXJhbmRzWzEuLi0xXSkKKyAgICAgICAgZWxzZQorICAgICAg
ICAgIG5ld0xpc3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2Uo
bmV3TGlzdCkKKyAgICAgICAgZW5kCisgICAgICB3aGVuICJtdWxpIgorICAgICAgICBpZiBub2Rl
Lm9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgIHRtcCA9IFRtcC5uZXcoY29k
ZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2Rl
LmNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMF0sIHRtcF0pCisgICAgICAgICAg
bmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibXVsaSIsIFt0bXBd
ICsgbm9kZS5vcGVyYW5kc1sxLi4tMV0pCisgICAgICAgIGVsc2UKKyAgICAgICAgICBuZXdMaXN0
IDw8IG5vZGUuYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QpCisg
ICAgICAgIGVuZAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IG5vZGUuYXJtVjdMb3dl
ck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QpCisgICAgICBlbmQKKyAgICBlbHNl
CisgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICBlbmQKKyAgfQorICBuZXdMaXN0CitlbmQKKwor
IworIyBMb3dlcmluZyBvZiBtaXNwbGFjZWQgYWRkcmVzc2VzLiBGb3IgZXhhbXBsZToKKyMKKyMg
YWRkaSBmb28sIFtiYXJdCisjCisjIHdpbGwgYmVjb21lOgorIworIyBsb2FkaSBbYmFyXSwgdG1w
CisjIGFkZGkgZm9vLCB0bXAKKyMgc3RvcmVpIHRtcCwgW2Jhcl0KKyMKKyMgQW5vdGhlciBleGFt
cGxlOgorIworIyBhZGRpIFtmb29dLCBiYXIKKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIGxvYWRp
IFtmb29dLCB0bXAKKyMgYWRkaSB0bXAsIGJhcgorIworCitkZWYgYXJtVjdBc1JlZ2lzdGVyKHBy
ZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kLCBzdWZmaXgsIG5lZWRTdG9yZSkKKyAgcmV0dXJuIG9w
ZXJhbmQgdW5sZXNzIG9wZXJhbmQuYWRkcmVzcz8KKyAgCisgIHRtcCA9IFRtcC5uZXcob3BlcmFu
ZC5jb2RlT3JpZ2luLCBpZiBzdWZmaXggPT0gImQiIHRoZW4gOmZwciBlbHNlIDpncHIgZW5kKQor
ICBwcmVMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJsb2FkIiAr
IHN1ZmZpeCwgW29wZXJhbmQsIHRtcF0pCisgIGlmIG5lZWRTdG9yZQorICAgIHBvc3RMaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJzdG9yZSIgKyBzdWZmaXgsIFt0
bXAsIG9wZXJhbmRdKQorICBlbmQKKyAgdG1wCitlbmQKKworZGVmIGFybVY3QXNSZWdpc3RlcnMo
cHJlTGlzdCwgcG9zdExpc3QsIG9wZXJhbmRzLCBzdWZmaXgpCisgIG5ld09wZXJhbmRzID0gW10K
KyAgb3BlcmFuZHMuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IG9wZXJhbmQsIGluZGV4IHwKKyAg
ICBuZXdPcGVyYW5kcyA8PCBhcm1WN0FzUmVnaXN0ZXIocHJlTGlzdCwgcG9zdExpc3QsIG9wZXJh
bmQsIHN1ZmZpeCwgaW5kZXggPT0gb3BlcmFuZHMuc2l6ZSAtIDEpCisgIH0KKyAgbmV3T3BlcmFu
ZHMKK2VuZAorCitkZWYgYXJtVjdMb3dlck1pc3BsYWNlZEFkZHJlc3NlcyhsaXN0KQorICBuZXdM
aXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIGlmIG5vZGUuaXNfYT8g
SW5zdHJ1Y3Rpb24KKyAgICAgIHBvc3RJbnN0cnVjdGlvbnMgPSBbXQorICAgICAgY2FzZSBub2Rl
Lm9wY29kZQorICAgICAgd2hlbiAiYWRkaSIsICJhZGRwIiwgImFuZGkiLCAiYW5kcCIsICJsc2hp
ZnRpIiwgIm11bGkiLCAibmVnaSIsICJub3RpIiwgIm9yaSIsICJvcnAiLCAicnNoaWZ0aSIsCisg
ICAgICAgICJ1cnNoaWZ0aSIsICJzdWJpIiwgInN1YnAiLCAieG9yaSIsICJ4b3JwIiwgL15iaS8s
IC9eYnAvLCAvXmJ0aS8sIC9eYnRwLywgImNhbGwiLCAvXmNpLywgL15jcC8sCisgICAgICAgIC9e
dGkvCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwgcG9z
dEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImkiKSkKKyAgICAgIHdoZW4gImJiZXEiLCAi
YmJuZXEiLCAiYmJhIiwgImJiYWVxIiwgImJiYiIsICJiYmJlcSIsICJidGJvIiwgImJ0YnoiLCAi
YnRibnoiLCAidGJ6IiwgInRibnoiLAorICAgICAgICAidGJvIgorICAgICAgICBuZXdMaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhcm1WN0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3Bl
cmFuZHMsICJiIikpCisgICAgICB3aGVuICJiYmd0IiwgImJiZ3RlcSIsICJiYmx0IiwgImJibHRl
cSIsICJidGJzIiwgInRicyIKKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9k
ZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9w
Y29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJtVjdBc1JlZ2lzdGVy
cyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAiYnMiKSkKKyAgICAg
IHdoZW4gImFkZGQiLCAiZGl2ZCIsICJzdWJkIiwgIm11bGQiLCAic3FydGQiLCAvXmJkLworICAg
ICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhcm1WN0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVj
dGlvbnMsIG5vZGUub3BlcmFuZHMsICJkIikpCisgICAgICB3aGVuICJqbXAiLCAiY2FsbCIKKyAg
ICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgW2FybVY3QXNSZWdpc3RlcihuZXdMaXN0LCBwb3N0SW5zdHJ1
Y3Rpb25zLCBub2RlLm9wZXJhbmRzWzBdLCAicCIsIGZhbHNlKV0pCisgICAgICBlbHNlCisgICAg
ICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgZW5kCisgICAgICBuZXdMaXN0ICs9IHBvc3RJbnN0
cnVjdGlvbnMKKyAgICBlbHNlCisgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICBlbmQKKyAgfQor
ICBuZXdMaXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiByZWdpc3RlciByZXVzZSBpbiBjb21w
YXJlIGluc3RydWN0aW9ucy4gRm9yIGV4YW1wbGU6CisjCisjIGNpZXEgdDAsIHQxLCB0MAorIwor
IyB3aWxsIGJlY29tZToKKyMKKyMgbW92IHRtcCwgdDAKKyMgY2llcSB0bXAsIHQxLCB0MAorIwor
IAorZGVmIGFybVY3TG93ZXJSZWdpc3RlclJldXNlKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBs
aXN0LmVhY2ggeworICAgIHwgbm9kZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgor
ICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgd2hlbiAiY2llcSIsICJjaW5lcSIsICJjaWEi
LCAiY2lhZXEiLCAiY2liIiwgImNpYmVxIiwgImNpZ3QiLCAiY2lndGVxIiwgImNpbHQiLCAiY2ls
dGVxIiwKKyAgICAgICAgImNwZXEiLCAiY3BuZXEiLCAiY3BhIiwgImNwYWVxIiwgImNwYiIsICJj
cGJlcSIsICJjcGd0IiwgImNwZ3RlcSIsICJjcGx0IiwgImNwbHRlcSIsCisgICAgICAgICJ0aW8i
LCAidGlzIiwgInRpeiIsICJ0aW56IiwgInRibyIsICJ0YnMiLCAidGJ6IiwgInRibnoiCisgICAg
ICAgIGlmIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgICAgaWYgbm9kZS5vcGVyYW5k
c1swXSA9PSBub2RlLm9wZXJhbmRzWzFdCisgICAgICAgICAgICB0bXAgPSBUbXAubmV3KG5vZGUu
Y29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSkKKyAgICAg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5v
cGNvZGUsIFt0bXAsIG5vZGUub3BlcmFuZHNbMV1dKQorICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAg
ICAgcmFpc2UgIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgYXQgI3tub2RlLmNvZGVPcmlnaW5T
dHJpbmd9IiB1bmxlc3Mgbm9kZS5vcGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgICBpZiBub2Rl
Lm9wZXJhbmRzWzBdID09IG5vZGUub3BlcmFuZHNbMl0KKyAgICAgICAgICAgIHRtcCA9IFRtcC5u
ZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzBdLCB0bXBd
KQorICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2lu
LCBub2RlLm9wY29kZSwgW3RtcCwgbm9kZS5vcGVyYW5kc1sxXSwgbm9kZS5vcGVyYW5kc1syXV0p
CisgICAgICAgICAgZWxzaWYgbm9kZS5vcGVyYW5kc1sxXSA9PSBub2RlLm9wZXJhbmRzWzJdCisg
ICAgICAgICAgICB0bXAgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAg
ICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBb
bm9kZS5vcGVyYW5kc1sxXSwgdG1wXSkKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFtub2RlLm9wZXJhbmRzWzBdLCB0
bXAsIG5vZGUub3BlcmFuZHNbMl1dKQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xp
c3QgPDwgbm9kZQorICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgIGVsc2UKKyAgICAg
ICAgbmV3TGlzdCA8PCBub2RlCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICBuZXdMaXN0IDw8
IG5vZGUKKyAgICBlbmQKKyAgfQorICBuZXdMaXN0CitlbmQKKworIworIyBBY3R1YWwgbG93ZXJp
bmcgY29kZSBmb2xsb3dzLgorIworCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXJBUk12Nwor
ICAgIG15TGlzdCA9IEBsaXN0CisgICAgCisgICAgIyBWZXJpZnkgdGhhdCB3ZSB3aWxsIG9ubHkg
c2VlIGluc3RydWN0aW9ucyBhbmQgbGFiZWxzLgorICAgIG15TGlzdC5lYWNoIHsKKyAgICAgIHwg
bm9kZSB8CisgICAgICB1bmxlc3Mgbm9kZS5pc19hPyBJbnN0cnVjdGlvbiBvcgorICAgICAgICAg
IG5vZGUuaXNfYT8gTGFiZWwgb3IKKyAgICAgICAgICBub2RlLmlzX2E/IExvY2FsTGFiZWwgb3IK
KyAgICAgICAgICBub2RlLmlzX2E/IFNraXAKKyAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQgI3tu
b2RlLmluc3BlY3R9IGF0ICN7bm9kZS5jb2RlT3JpZ2lufSIgCisgICAgICBlbmQKKyAgICB9Cisg
ICAgCisgICAgbXlMaXN0ID0gYXJtVjdMb3dlckJyYW5jaE9wcyhteUxpc3QpCisgICAgbXlMaXN0
ID0gYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3NlcyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJt
VjdMb3dlck1pc3BsYWNlZEltbWVkaWF0ZXMobXlMaXN0KQorICAgIG15TGlzdCA9IGFybVY3TG93
ZXJNYWxmb3JtZWRJbW1lZGlhdGVzKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWlz
cGxhY2VkQWRkcmVzc2VzKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyUmVnaXN0ZXJS
ZXVzZShteUxpc3QpCisgICAgbXlMaXN0ID0gYXNzaWduUmVnaXN0ZXJzVG9UZW1wb3Jhcmllcyht
eUxpc3QsIDpncHIsIEFSTXY3X0VYVFJBX0dQUlMpCisgICAgbXlMaXN0ID0gYXNzaWduUmVnaXN0
ZXJzVG9UZW1wb3JhcmllcyhteUxpc3QsIDpmcHIsIEFSTXY3X0VYVFJBX0ZQUlMpCisgICAgbXlM
aXN0LmVhY2ggeworICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUubG93ZXIoIkFSTXY3IikKKyAg
ICB9CisgIGVuZAorZW5kCisKK2RlZiBhcm1WN09wZXJhbmRzKG9wZXJhbmRzKQorICBvcGVyYW5k
cy5tYXB7fHZ8IHYuYXJtVjdPcGVyYW5kfS5qb2luKCIsICIpCitlbmQKKworZGVmIGFybVY3Rmxp
cHBlZE9wZXJhbmRzKG9wZXJhbmRzKQorICBhcm1WN09wZXJhbmRzKFtvcGVyYW5kc1stMV1dICsg
b3BlcmFuZHNbMC4uLTJdKQorZW5kCisKK2RlZiBlbWl0QXJtVjdDb21wYWN0KG9wY29kZTIsIG9w
Y29kZTMsIG9wZXJhbmRzKQorICBpZiBvcGVyYW5kcy5zaXplID09IDMKKyAgICAkYXNtLnB1dHMg
IiN7b3Bjb2RlM30gI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICBlbHNlCisg
ICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzLnNpemUgPT0gMgorICAgIHJhaXNlIHVubGVzcyBvcGVy
YW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRp
YXRlCisgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlM30gI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJh
bmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVy
YW5kfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlMn0gI3thcm1WN0ZsaXBw
ZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIGVuZAorICBlbmQKK2VuZAorCitkZWYgZW1pdEFy
bVY3KG9wY29kZSwgb3BlcmFuZHMpCisgIGlmIG9wZXJhbmRzLnNpemUgPT0gMworICAgICRhc20u
cHV0cyAiI3tvcGNvZGV9ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgZWxz
ZQorICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kcy5zaXplID09IDIKKyAgICAkYXNtLnB1dHMgIiN7
b3Bjb2RlfSAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdP
cGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICBlbmQKK2VuZAorCitkZWYg
ZW1pdEFybVY3RG91YmxlQnJhbmNoKGJyYW5jaE9wY29kZSwgb3BlcmFuZHMpCisgICRhc20ucHV0
cyAidmNtcGUuZjY0ICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAkYXNtLnB1
dHMgInZtcnMgYXBzcl9uemN2LCBmcHNjciIKKyAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0g
I3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCitlbmQKKworZGVmIGFybVY3VGVzdGluZ1plcm8ob3Bl
cmFuZHMpCisgIHZhbHVlID0gb3BlcmFuZHNbMF0KKyAgY2FzZSBvcGVyYW5kcy5zaXplCisgIHdo
ZW4gMgorICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICB3aGVuIDMK
KyAgICBtYXNrID0gb3BlcmFuZHNbMV0KKyAgZWxzZQorICAgIHJhaXNlICJFeHBlY3RlZCAyIG9y
IDMgb3BlcmFuZHMgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0cmlu
Z30iCisgIGVuZAorICAKKyAgKG1hc2suaXNfYT8gSW1tZWRpYXRlIGFuZCBtYXNrLnZhbHVlID09
IC0xKSBvciB2YWx1ZSA9PSBtYXNrCitlbmQKKworZGVmIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMp
CisgIHZhbHVlID0gb3BlcmFuZHNbMF0KKyAgY2FzZSBvcGVyYW5kcy5zaXplCisgIHdoZW4gMgor
ICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICB3aGVuIDMKKyAgICBt
YXNrID0gb3BlcmFuZHNbMV0KKyAgZWxzZQorICAgIHJhaXNlICJFeHBlY3RlZCAyIG9yIDMgb3Bl
cmFuZHMgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisg
IGVuZAorICAKKyAgaWYgbWFzay5pc19hPyBJbW1lZGlhdGUgYW5kIG1hc2sudmFsdWUgPT0gLTEK
KyAgICAkYXNtLnB1dHMgInRzdCAje3ZhbHVlLmFybVY3T3BlcmFuZH0sICN7dmFsdWUuYXJtVjdP
cGVyYW5kfSIKKyAgZWxzaWYgbWFzay5pc19hPyBJbW1lZGlhdGUKKyAgICAkYXNtLnB1dHMgInRz
dC53ICN7dmFsdWUuYXJtVjdPcGVyYW5kfSwgI3ttYXNrLmFybVY3T3BlcmFuZH0iCisgIGVsc2UK
KyAgICAkYXNtLnB1dHMgInRzdCAje3ZhbHVlLmFybVY3T3BlcmFuZH0sICN7bWFzay5hcm1WN09w
ZXJhbmR9IgorICBlbmQKK2VuZAorCitkZWYgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgY29k
ZSkKKyAgJGFzbS5wdXRzICJtb3ZzICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgXCMwIgor
ICAkYXNtLnB1dHMgImNtcCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNb
MV0uYXJtVjdPcGVyYW5kfSIKKyAgJGFzbS5wdXRzICJpdCAje2NvZGV9IgorICAkYXNtLnB1dHMg
Im1vdiN7Y29kZX0gI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCBcIzEiCitlbmQKKworZGVm
IGVtaXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMsIGNvZGUpCisgICRhc20ucHV0cyAibW92cyAje29w
ZXJhbmRzWy0xXS5hcm1WN09wZXJhbmR9LCBcIzAiCisgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMp
CisgICRhc20ucHV0cyAiaXQgI3tjb2RlfSIKKyAgJGFzbS5wdXRzICJtb3Yje2NvZGV9ICN7b3Bl
cmFuZHNbLTFdLmFybVY3T3BlcmFuZH0sIFwjMSIKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbgor
ICBkZWYgbG93ZXJBUk12NworICAgICRhc20uY29tbWVudCBjb2RlT3JpZ2luU3RyaW5nCisgICAg
Y2FzZSBvcGNvZGUKKyAgICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAgICBpZiBvcGVyYW5kcy5z
aXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICByYWlzZSB1
bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mg
b3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1
ZSA9PSAwCisgICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAg
ICAgICAgICAkYXNtLnB1dHMgIm1vdiAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3Bl
cmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICRhc20ucHV0cyAiYWRkcyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0i
CisgICAgICAgIGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5k
c1swXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5p
c19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBS
ZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiYWRkcyAje2FybVY3RmxpcHBlZE9wZXJhbmRz
KG9wZXJhbmRzKX0iCisgICAgICBlbHNlCisgICAgICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IElt
bWVkaWF0ZQorICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFu
ZHNbMF0KKyAgICAgICAgICAgICRhc20ucHV0cyAiYWRkcyAje2FybVY3RmxpcHBlZE9wZXJhbmRz
KG9wZXJhbmRzKX0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAkYXNt
LnB1dHMgImFkZCAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIGVu
ZAorICAgICAgZW5kCisgICAgd2hlbiAiYW5kaSIsICJhbmRwIgorICAgICAgZW1pdEFybVY3Q29t
cGFjdCgiYW5kcyIsICJhbmQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJvcmkiLCAib3JwIgorICAg
ICAgZW1pdEFybVY3Q29tcGFjdCgib3JycyIsICJvcnIiLCBvcGVyYW5kcykKKyAgICB3aGVuICJ4
b3JpIiwgInhvcnAiCisgICAgICBlbWl0QXJtVjdDb21wYWN0KCJlb3JzIiwgImVvciIsIG9wZXJh
bmRzKQorICAgIHdoZW4gImxzaGlmdGkiCisgICAgICBlbWl0QXJtVjdDb21wYWN0KCJsc2xzIiwg
ImxzbHMiLCBvcGVyYW5kcykKKyAgICB3aGVuICJyc2hpZnRpIgorICAgICAgZW1pdEFybVY3Q29t
cGFjdCgiYXNycyIsICJhc3JzIiwgb3BlcmFuZHMpCisgICAgd2hlbiAidXJzaGlmdGkiCisgICAg
ICBlbWl0QXJtVjdDb21wYWN0KCJsc3JzIiwgImxzcnMiLCBvcGVyYW5kcykKKyAgICB3aGVuICJt
dWxpIgorICAgICAgZW1pdEFybVY3KCJtdWxzIiwgb3BlcmFuZHMpCisgICAgd2hlbiAic3ViaSIs
ICJzdWJwIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgic3VicyIsICJzdWJzIiwgb3BlcmFuZHMp
CisgICAgd2hlbiAibmVnaSIKKyAgICAgICRhc20ucHV0cyAicnNicyAje29wZXJhbmRzWzBdLmFy
bVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgXCMwIgorICAgIHdoZW4g
Im5vdGkiCisgICAgICAkYXNtLnB1dHMgIm12bnMgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9
LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgd2hlbiAibG9hZGkiLCAibG9hZHAi
CisgICAgICAkYXNtLnB1dHMgImxkciAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0i
CisgICAgd2hlbiAic3RvcmVpIiwgInN0b3JlcCIKKyAgICAgICRhc20ucHV0cyAic3RyICN7YXJt
VjdPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gImxvYWRiIgorICAgICAgJGFzbS5wdXRz
ICJsZHJiICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJsb2Fk
YnMiCisgICAgICAkYXNtLnB1dHMgImxkcnNiLncgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVy
YW5kcyl9IgorICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAic3RyYiAje2FybVY3
RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAibG9hZGgiCisgICAgICAkYXNt
LnB1dHMgImxkcmggI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4g
ImxvYWRocyIKKyAgICAgICRhc20ucHV0cyAibGRyc2gudyAje2FybVY3RmxpcHBlZE9wZXJhbmRz
KG9wZXJhbmRzKX0iCisgICAgd2hlbiAic3RvcmVoIgorICAgICAgJGFzbS5wdXRzICJzdHJoICN7
YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJhZGRkIgorICAgICAg
ZW1pdEFybVY3KCJ2YWRkLmY2NCIsIG9wZXJhbmRzKQorICAgIHdoZW4gImRpdmQiCisgICAgICBl
bWl0QXJtVjcoInZkaXYuZjY0Iiwgb3BlcmFuZHMpCisgICAgd2hlbiAic3ViZCIKKyAgICAgIGVt
aXRBcm1WNygidnN1Yi5mNjQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJtdWxkIgorICAgICAgZW1p
dEFybVY3KCJ2bXVsLmY2NCIsIG9wZXJhbmRzKQorICAgIHdoZW4gInNxcnRkIgorICAgICAgJGFz
bS5wdXRzICJ2c3FydC5mNjQgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAg
IHdoZW4gImNpMmQiCisgICAgICAkYXNtLnB1dHMgInZtb3YgI3tvcGVyYW5kc1sxXS5hcm1WN1Np
bmdsZX0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICRhc20ucHV0cyAidmN2
dC5mNjQuczMyICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1W
N1NpbmdsZX0iCisgICAgd2hlbiAiYmRlcSIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgi
YmVxIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRuZXEiCisgICAgICAkYXNtLnB1dHMgInZjbXBl
LmY2NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAi
dm1ycyBhcHNyX256Y3YsIGZwc2NyIgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVu
aXF1ZSgiYmRuZXEiKQorICAgICAgJGFzbS5wdXRzICJidnMgI3tMYWJlbFJlZmVyZW5jZS5uZXco
Y29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiYm5l
ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIkFSTXY3
IikKKyAgICB3aGVuICJiZGd0IgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJiZ3QiLCBv
cGVyYW5kcykKKyAgICB3aGVuICJiZGd0ZXEiCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2go
ImJnZSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkbHQiCisgICAgICBlbWl0QXJtVjdEb3VibGVC
cmFuY2goImJtaSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkbHRlcSIKKyAgICAgIGVtaXRBcm1W
N0RvdWJsZUJyYW5jaCgiYmxzIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRlcXVuIgorICAgICAg
JGFzbS5wdXRzICJ2Y21wZS5mNjQgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisg
ICAgICAkYXNtLnB1dHMgInZtcnMgYXBzcl9uemN2LCBmcHNjciIKKyAgICAgICRhc20ucHV0cyAi
YnZzICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJiZXEgI3tvcGVy
YW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmRuZXF1biIKKyAgICAgIGVtaXRBcm1WN0Rv
dWJsZUJyYW5jaCgiYm5lIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRndHVuIgorICAgICAgZW1p
dEFybVY3RG91YmxlQnJhbmNoKCJiaGkiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGd0ZXF1biIK
KyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYnBsIiwgb3BlcmFuZHMpCisgICAgd2hlbiAi
YmRsdHVuIgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJibHQiLCBvcGVyYW5kcykKKyAg
ICB3aGVuICJiZGx0ZXF1biIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmxlIiwgb3Bl
cmFuZHMpCisgICAgd2hlbiAiYnRkMmkiCisgICAgICAjIEZJWE1FOiBtYXkgYmUgYSBnb29kIGlk
ZWEgdG8ganVzdCBnZXQgcmlkIG9mIHRoaXMgaW5zdHJ1Y3Rpb24sIHNpbmNlIHRoZSBpbnRlcnBy
ZXRlcgorICAgICAgIyBjdXJyZW50bHkgZG9lcyBub3QgdXNlIGl0LgorICAgICAgcmFpc2UgIkFS
TXY3IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGNvZGUgeWV0LCAje2NvZGVPcmlnaW59IgorICAg
IHdoZW4gInRkMmkiCisgICAgICAkYXNtLnB1dHMgInZjdnQuczMyLmY2NCAje0FSTXY3X1NDUkFU
Q0hfRlBSLmFybVY3U2luZ2xlfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAg
JGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tBUk12N19TQ1JB
VENIX0ZQUi5hcm1WN1NpbmdsZX0iCisgICAgd2hlbiAiYmNkMmkiCisgICAgICAkYXNtLnB1dHMg
InZjdnQuczMyLmY2NCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSwgI3tvcGVyYW5k
c1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMV0u
YXJtVjdPcGVyYW5kfSwgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0iCisgICAgICAk
YXNtLnB1dHMgInZjdnQuZjY0LnMzMiAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3T3BlcmFuZH0s
ICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJtVjdTaW5nbGV9IgorICAgICAgZW1pdEFybVY3RG91Ymxl
QnJhbmNoKCJibmUiLCBbQVJNdjdfU0NSQVRDSF9GUFIsIG9wZXJhbmRzWzBdLCBvcGVyYW5kc1sy
XV0pCisgICAgICAkYXNtLnB1dHMgImNieiAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7
b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gIm1vdmR6IgorICAgICAgIyBGSVhNRTog
ZWl0aGVyIHN1cHBvcnQgdGhpcyBvciByZW1vdmUgaXQuCisgICAgICByYWlzZSAiQVJNdjcgZG9l
cyBub3Qgc3VwcG9ydCB0aGlzIG9wY29kZSB5ZXQsICN7Y29kZU9yaWdpbn0iCisgICAgd2hlbiAi
cG9wIgorICAgICAgJGFzbS5wdXRzICJwb3AgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9Igor
ICAgIHdoZW4gInB1c2giCisgICAgICAkYXNtLnB1dHMgInB1c2ggI3tvcGVyYW5kc1swXS5hcm1W
N09wZXJhbmR9IgorICAgIHdoZW4gIm1vdmUiLCAic3hpMnAiLCAienhpMnAiCisgICAgICBpZiBv
cGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgYXJtVjdNb3ZlSW1tZWRpYXRlKG9w
ZXJhbmRzWzBdLnZhbHVlLCBvcGVyYW5kc1sxXSkKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5w
dXRzICJtb3YgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgZW5kCisg
ICAgd2hlbiAibm9wIgorICAgICAgJGFzbS5wdXRzICJub3AiCisgICAgd2hlbiAiYmllcSIsICJi
cGVxIiwgImJiZXEiCisgICAgICBpZiBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNb
MF0KKyAgICAgICAgJGFzbS5wdXRzICJjYnogI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9ICN7
b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgZWxzaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDAp
ID09IG9wZXJhbmRzWzFdCisgICAgICAgICRhc20ucHV0cyAiY2J6ICN7b3BlcmFuZHNbMF0uYXJt
VjdPcGVyYW5kfSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgIGVsc2UKKyAgICAgICAg
JGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAg
ICRhc20ucHV0cyAiYmVxICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgZW5kCisgICAg
d2hlbiAiYmluZXEiLCAiYnBuZXEiLCAiYmJuZXEiCisgICAgICBpZiBJbW1lZGlhdGUubmV3KG5p
bCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgJGFzbS5wdXRzICJjYm56ICN7b3BlcmFuZHNb
MV0uYXJtVjdPcGVyYW5kfSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgIGVsc2lmIElt
bWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1sxXQorICAgICAgICAkYXNtLnB1dHMgImNi
bnogI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9Igor
ICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFu
ZHNbMC4uMV0pfSIKKyAgICAgICAgJGFzbS5wdXRzICJibmUgI3tvcGVyYW5kc1syXS5hc21MYWJl
bH0iCisgICAgICBlbmQKKyAgICB3aGVuICJiaWEiLCAiYnBhIiwgImJiYSIKKyAgICAgICRhc20u
cHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5w
dXRzICJiaGkgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmlhZXEiLCAiYnBh
ZXEiLCAiYmJhZXEiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFu
ZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmhzICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9
IgorICAgIHdoZW4gImJpYiIsICJicGIiLCAiYmJiIgorICAgICAgJGFzbS5wdXRzICJjbXAgI3th
cm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgImJsbyAje29w
ZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWJlcSIsICJicGJlcSIsICJiYmJlcSIK
KyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9Igor
ICAgICAgJGFzbS5wdXRzICJibHMgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAi
YmlndCIsICJicGd0IiwgImJiZ3QiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFu
ZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmd0ICN7b3BlcmFuZHNbMl0u
YXNtTGFiZWx9IgorICAgIHdoZW4gImJpZ3RlcSIsICJicGd0ZXEiLCAiYmJndGVxIgorICAgICAg
JGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAk
YXNtLnB1dHMgImJnZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWx0Iiwg
ImJwbHQiLCAiYmJsdCIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVy
YW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5wdXRzICJibHQgI3tvcGVyYW5kc1syXS5hc21MYWJl
bH0iCisgICAgd2hlbiAiYmlsdGVxIiwgImJwbHRlcSIsICJiYmx0ZXEiCisgICAgICAkYXNtLnB1
dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0
cyAiYmxlICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJ0aXoiLCAiYnRweiIs
ICJidGJ6IgorICAgICAgaWYgYXJtVjdUZXN0aW5nWmVybyhvcGVyYW5kcykKKyAgICAgICAgJGFz
bS5wdXRzICJjYnogI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWy0xXS5h
c21MYWJlbH0iCisgICAgICBlbHNlCisgICAgICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisg
ICAgICAgICRhc20ucHV0cyAiYmVxICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKKyAgICAgIGVu
ZAorICAgIHdoZW4gImJ0aW56IiwgImJ0cG56IiwgImJ0Ym56IgorICAgICAgaWYgYXJtVjdUZXN0
aW5nWmVybyhvcGVyYW5kcykKKyAgICAgICAgJGFzbS5wdXRzICJjYm56ICN7b3BlcmFuZHNbMF0u
YXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgorICAgICAgZWxzZQorICAg
ICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICAgICAgICAkYXNtLnB1dHMgImJuZSAje29w
ZXJhbmRzWy0xXS5hc21MYWJlbH0iCisgICAgICBlbmQKKyAgICB3aGVuICJidGlvIiwgImJ0cG8i
LCAiYnRibyIKKyAgICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgICAgICAkYXNtLnB1dHMg
ImJ2cyAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYnRpcyIsICJidHBzIiwg
ImJ0YnMiCisgICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICAgICAgJGFzbS5wdXRzICJi
bWkgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgorICAgIHdoZW4gImptcCIKKyAgICAgIGlmIG9w
ZXJhbmRzWzBdLmxhYmVsPworICAgICAgICAkYXNtLnB1dHMgImIgI3tvcGVyYW5kc1swXS5hc21M
YWJlbH0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAibW92IHBjLCAje29wZXJhbmRz
WzBdLmFybVY3T3BlcmFuZH0iCisgICAgICBlbmQKKyAgICB3aGVuICJjYWxsIgorICAgICAgaWYg
b3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAgICRhc20ucHV0cyAiYmx4ICN7b3BlcmFuZHNbMF0u
YXNtTGFiZWx9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgImJseCAje29wZXJhbmRz
WzBdLmFybVY3T3BlcmFuZH0iCisgICAgICBlbmQKKyAgICB3aGVuICJicmVhayIKKyAgICAgICRh
c20ucHV0cyAiYmtwdCIKKyAgICB3aGVuICJyZXQiCisgICAgICAkYXNtLnB1dHMgImJ4IGxyIgor
ICAgIHdoZW4gImNpZXEiLCAiY3BlcSIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMs
ICJlcSIpCisgICAgd2hlbiAiY2luZXEiLCAiY3BuZXEiCisgICAgICBlbWl0QXJtVjdDb21wYXJl
KG9wZXJhbmRzLCAibmUiKQorICAgIHdoZW4gImNpYSIsICJjcGEiCisgICAgICBlbWl0QXJtVjdD
b21wYXJlKG9wZXJhbmRzLCAiaGkiKQorICAgIHdoZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAg
ZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImhzIikKKyAgICB3aGVuICJjaWIiLCAiY3BiIgor
ICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImxvIikKKyAgICB3aGVuICJjaWJlcSIs
ICJjcGJlcSIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJscyIpCisgICAgd2hl
biAiY2lndCIsICJjcGd0IgorICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImd0IikK
KyAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVy
YW5kcywgImdlIikKKyAgICB3aGVuICJjaWx0IiwgImNwbHQiCisgICAgICBlbWl0QXJtVjdDb21w
YXJlKG9wZXJhbmRzLCAibHQiKQorICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiCisgICAgICBl
bWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibGUiKQorICAgIHdoZW4gInRpbyIsICJ0Ym8iCisg
ICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAidnMiKQorICAgIHdoZW4gInRpcyIsICJ0
YnMiCisgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAibWkiKQorICAgIHdoZW4gInRp
eiIsICJ0YnoiCisgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAiZXEiKQorICAgIHdo
ZW4gInRpbnoiLCAidGJueiIKKyAgICAgIGVtaXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMsICJuZSIp
CisgICAgd2hlbiAicGVlayIKKyAgICAgICRhc20ucHV0cyAibGRyICN7b3BlcmFuZHNbMV0uYXJt
VjdPcGVyYW5kfSwgW3NwLCBcIyN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fV0iCisgICAgd2hlbiAi
cG9rZSIKKyAgICAgICRhc20ucHV0cyAic3RyICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwg
W3NwLCBcIyN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fV0iCisgICAgd2hlbiAiZmlpMmQiCisgICAg
ICAkYXNtLnB1dHMgInZtb3YgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRz
WzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICB3aGVu
ICJmZDJpaSIKKyAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFu
ZH0sICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJh
bmR9IgorICAgIHdoZW4gImJvIgorICAgICAgJGFzbS5wdXRzICJidnMgI3tvcGVyYW5kc1swXS5h
c21MYWJlbH0iCisgICAgd2hlbiAiYnMiCisgICAgICAkYXNtLnB1dHMgImJtaSAje29wZXJhbmRz
WzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJieiIKKyAgICAgICRhc20ucHV0cyAiYmVxICN7b3Bl
cmFuZHNbMF0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJueiIKKyAgICAgICRhc20ucHV0cyAiYm5l
ICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE0MCBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUg
ImJhY2tlbmRzIgorcmVxdWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJvZmZzZXRzIgorcmVx
dWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2VsZl9oYXNoIgorcmVxdWlyZSAic2V0dGluZ3MiCity
ZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2NsYXNzIEFzc2VtYmxlcgorICBkZWYgaW5pdGlhbGl6ZShv
dXRwKQorICAgIEBvdXRwID0gb3V0cAorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisgIAorICBk
ZWYgZW50ZXJBc20KKyAgICBAb3V0cC5wdXRzICJhc20gKCIKKyAgICBAc3RhdGUgPSA6YXNtCisg
IGVuZAorICAKKyAgZGVmIGxlYXZlQXNtCisgICAgQG91dHAucHV0cyAiKTsiCisgICAgQHN0YXRl
ID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBpbkFzbQorICAgIGVudGVyQXNtCisgICAgeWllbGQK
KyAgICBsZWF2ZUFzbQorICBlbmQKKyAgCisgIGRlZiBwdXRzKCpsaW5lKQorICAgIHJhaXNlIHVu
bGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnB1dHMoIlwiXFx0IiArIGxpbmUuam9pbign
JykgKyAiXFxuXCIiKQorICBlbmQKKyAgCisgIGRlZiBwcmludChsaW5lKQorICAgIHJhaXNlIHVu
bGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnByaW50KCJcIiIgKyBsaW5lICsgIlwiIikK
KyAgZW5kCisgIAorICBkZWYgcHV0c0xhYmVsKGxhYmVsTmFtZSkKKyAgICByYWlzZSB1bmxlc3Mg
QHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wdXRzKCJcIi5nbG9ibCBcIiBTWU1CT0xfU1RSSU5H
KCN7bGFiZWxOYW1lfSkgXCJcXG5cIiIpCisgICAgQG91dHAucHV0cygiSElERV9TWU1CT0woI3ts
YWJlbE5hbWV9KSBcIlxcblwiIikKKyAgICBAb3V0cC5wdXRzKCJTWU1CT0xfU1RSSU5HKCN7bGFi
ZWxOYW1lfSkgXCI6XFxuXCIiKQorICBlbmQKKyAgCisgIGRlZiBwdXRzTG9jYWxMYWJlbChsYWJl
bE5hbWUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAgQG91dHAucHV0cygi
TE9DQUxfTEFCRUxfU1RSSU5HKCN7bGFiZWxOYW1lfSkgXCI6XFxuXCIiKQorICBlbmQKKyAgCisg
IGRlZiBzZWxmLmxhYmVsUmVmZXJlbmNlKGxhYmVsTmFtZSkKKyAgICAiXCIgU1lNQk9MX1NUUklO
Rygje2xhYmVsTmFtZX0pIFwiIgorICBlbmQKKyAgCisgIGRlZiBzZWxmLmxvY2FsTGFiZWxSZWZl
cmVuY2UobGFiZWxOYW1lKQorICAgICJcIiBMT0NBTF9MQUJFTF9TVFJJTkcoI3tsYWJlbE5hbWV9
KSBcIiIKKyAgZW5kCisgIAorICBkZWYgY29tbWVudCh0ZXh0KQorICAgIEBvdXRwLnB1dHMgIi8v
ICN7dGV4dH0iCisgIGVuZAorZW5kCisKK2FzbUZpbGUgPSBBUkdWLnNoaWZ0CitvZmZzZXRzRmls
ZSA9IEFSR1Yuc2hpZnQKK291dHB1dEZsbm0gPSBBUkdWLnNoaWZ0CisKKyRzdGRlcnIucHV0cyAi
b2ZmbGluZWFzbTogUGFyc2luZyAje2FzbUZpbGV9IGFuZCAje29mZnNldHNGaWxlfSBhbmQgY3Jl
YXRpbmcgYXNzZW1ibHkgZmlsZSAje291dHB1dEZsbm19LiIKKworb2Zmc2V0c0xpc3QsIGNvbmZp
Z0luZGV4ID0gb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChvZmZzZXRzRmlsZSkKK2lucHV0
RGF0YSA9IElPOjpyZWFkKGFzbUZpbGUpCisKK2lucHV0SGFzaCA9CisgICIvLyBvZmZsaW5lYXNt
IGlucHV0IGhhc2g6ICIgKyBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0YSkgKworICAi
ICIgKyBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KChvZmZzZXRzTGlzdCArIFtjb25maWdJbmRleF0p
LmpvaW4oJyAnKSkgKworICAiICIgKyBzZWxmSGFzaAorCitpZiBGaWxlVGVzdC5leGlzdD8gb3V0
cHV0RmxubQorICBGaWxlLm9wZW4ob3V0cHV0RmxubSwgInIiKSB7CisgICAgfCBpbnAgfAorICAg
IGZpcnN0TGluZSA9IGlucC5nZXRzCisgICAgaWYgZmlyc3RMaW5lIGFuZCBmaXJzdExpbmUuY2hv
bXAgPT0gaW5wdXRIYXNoCisgICAgICAkc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IE5vdGhpbmcg
Y2hhbmdlZC4iCisgICAgICBleGl0IDAKKyAgICBlbmQKKyAgfQorZW5kCisKK0ZpbGUub3Blbihv
dXRwdXRGbG5tLCAidyIpIHsKKyAgfCBvdXRwIHwKKyAgJG91dHB1dCA9IG91dHAKKyAgJG91dHB1
dC5wdXRzIGlucHV0SGFzaAorICAKKyAgJGFzbSA9IEFzc2VtYmxlci5uZXcoJG91dHB1dCkKKyAg
CisgIGFzdCA9IHBhcnNlKGxleChpbnB1dERhdGEpKQorICAKKyAgZm9yU2V0dGluZ3MoY29tcHV0
ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdClbY29uZmlnSW5kZXhdLCBhc3QpIHsKKyAgICB8IGNv
bmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICBhc3NlcnRDb25maWd1
cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgICAgbG93TGV2ZWxBU1QgPSBsb3dMZXZlbEFTVC5y
ZXNvbHZlKCpidWlsZE9mZnNldHNNYXAobG93TGV2ZWxBU1QsIG9mZnNldHNMaXN0KSkKKyAgICBl
bWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFj
a2VuZCkgeworICAgICAgJGFzbS5pbkFzbSB7CisgICAgICAgIGxvd0xldmVsQVNULmxvd2VyKGJh
Y2tlbmQpCisgICAgICB9CisgICAgfQorICB9Cit9CisKKyRzdGRlcnIucHV0cyAib2ZmbGluZWFz
bTogQXNzZW1ibHkgZmlsZSAje291dHB1dEZsbm19IHN1Y2Nlc3NmdWxseSBnZW5lcmF0ZWQuIgor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDEwMzIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyMKKyMgQmFzZSB1dGlsaXR5IHR5cGVzIGZvciB0aGUgQVNULgorIworCisjIFZhbGlkIG1l
dGhvZHMgZm9yIE5vZGU6CisjCisjIG5vZGUuY2hpbGRyZW4gLT4gUmV0dXJucyBhbiBhcnJheSBv
ZiBpbW1lZGlhdGUgY2hpbGRyZW4uCisjCisjIG5vZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJucyBh
biBhcnJheSBvZiBhbGwgc3RyaWN0IGRlc2NlbmRhbnRzIChjaGlsZHJlbgorIyAgICAgYW5kIGNo
aWxkcmVuIG9mIGNoaWxkcmVuLCB0cmFuc2l0aXZlbHkpLgorIworIyBub2RlLmZsYXR0ZW4gLT4g
UmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5kCisj
ICAgICB0aGUgbm9kZSBpdHNlbGYuCisjCisjIG5vZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVybnMg
YW4gYXJyYXkgY29udGFpbmluZyB0aG9zZSBlbGVtZW50cyBpbgorIyAgICAgbm9kZS5mbGF0dGVu
IHRoYXQgYXJlIG9mIHRoZSBnaXZlbiB0eXBlIChpc19hPyB0eXBlIHJldHVybnMgdHJ1ZSkuCisj
CisjIG5vZGUubWFwQ2hpbGRyZW57fHZ8IC4uLn0gLT4gUmV0dXJucyBhIG5ldyBub2RlIHdpdGgg
YWxsIGNoaWxkcmVuCisjICAgICByZXBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJsb2Nr
LgorIworIyBFeGFtcGxlczoKKyMKKyMgbm9kZS5maWx0ZXIoU2V0dGluZykudW5pcSAtPiBSZXR1
cm5zIGFsbCBvZiB0aGUgc2V0dGluZ3MgdGhhdCB0aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVsc2Ug
YmxvY2tzIGRlcGVuZCBvbi4KKyMKKyMgbm9kZS5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxIC0+
IFJldHVybnMgYWxsIG9mIHRoZSBzdHJ1Y3R1cmUgb2Zmc2V0cworIyAgICAgdGhhdCB0aGUgQVNU
IGRlcGVuZHMgb24uCisKK2NsYXNzIE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3Jp
Z2luCisgIGVuZAorICAKKyAgZGVmIGNvZGVPcmlnaW5TdHJpbmcKKyAgICAibGluZSBudW1iZXIg
I3tAY29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVmIGRlc2NlbmRhbnRzCisgICAgY2hpbGRy
ZW4uY29sbGVjdHt8dnwgdi5mbGF0dGVufS5mbGF0dGVuCisgIGVuZAorICAKKyAgZGVmIGZsYXR0
ZW4KKyAgICBbc2VsZl0gKyBkZXNjZW5kYW50cworICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIodHlw
ZSkKKyAgICBmbGF0dGVuLnNlbGVjdHt8dnwgdi5pc19hPyB0eXBlfQorICBlbmQKK2VuZAorCitj
bGFzcyBOb0NoaWxkcmVuIDwgTm9kZQorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW10KKyAg
ZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNz
IFN0cnVjdE9mZnNldEtleQorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRl
ZiBpbml0aWFsaXplKHN0cnVjdCwgZmllbGQpCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBm
aWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAgZGVmIGhhc2gKKyAgICBAc3RydWN0Lmhhc2ggKyBA
ZmllbGQuaGFzaCAqIDMKKyAgZW5kCisgIAorICBkZWYgZXFsPyhvdGhlcikKKyAgICBAc3RydWN0
ID09IG90aGVyLnN0cnVjdCBhbmQgQGZpZWxkID09IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisg
ICAgCisjCisjIEFTVCBub2Rlcy4KKyMKKworY2xhc3MgU3RydWN0T2Zmc2V0IDwgTm9DaGlsZHJl
bgorICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3Ry
dWN0ID0gc3RydWN0CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5kCisgIAorICBAQG1hcHBpbmcg
PSB7fQorICAKKyAgZGVmIHNlbGYuZm9yRmllbGQoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkK
KyAgICBrZXkgPSBTdHJ1Y3RPZmZzZXRLZXkubmV3KHN0cnVjdCwgZmllbGQpCisgICAgCisgICAg
dW5sZXNzIEBAbWFwcGluZ1trZXldCisgICAgICBAQG1hcHBpbmdba2V5XSA9IFN0cnVjdE9mZnNl
dC5uZXcoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdb
a2V5XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7c3RydWN0fTo6I3tmaWVsZH0iCisg
IGVuZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAgICBpZiBAc3RydWN0ICE9IG90aGVyLnN0cnVj
dAorICAgICAgcmV0dXJuIEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICAgIGVuZAorICAgIEBm
aWVsZCA8PT4gb3RoZXIuZmllbGQKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxz
ZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBp
bW1lZGlhdGU/CisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICBmYWxz
ZQorICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVy
IDpzdHJ1Y3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgZW5kCisgIAorICBAQG1h
cHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisg
ICAgdW5sZXNzIEBAbWFwcGluZ1tzdHJ1Y3RdCisgICAgICBAQG1hcHBpbmdbc3RydWN0XSA9IFNp
emVvZi5uZXcoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tzdHJ1
Y3RdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAic2l6ZW9mICN7QHN0cnVjdH0iCisgIGVu
ZAorICAKKyAgZGVmIDw9PihvdGhlcikKKyAgICBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAg
ZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBsYWJl
bD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBpbW1lZGlhdGU/CisgICAgdHJ1ZQorICBl
bmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICBmYWxzZQorICBlbmQKK2VuZAorCitjbGFzcyBJ
bW1lZGlhdGUgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDp2YWx1ZQorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgdmFsdWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
dmFsdWUgPSB2YWx1ZQorICAgIHJhaXNlICJCYWQgaW1tZWRpYXRlIHZhbHVlICN7dmFsdWUuaW5z
cGVjdH0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIHZhbHVlLmlzX2E/IEludGVnZXIK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje3ZhbHVlfSIKKyAgZW5kCisgIAorICBkZWYg
PT0ob3RoZXIpCisgICAgb3RoZXIuaXNfYT8gSW1tZWRpYXRlIGFuZCBvdGhlci52YWx1ZSA9PSBA
dmFsdWUKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxzZQorICBlbmQKKyAgCisg
IGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVm
IGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIGZh
bHNlCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVh
ZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQs
IHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJp
Z2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdo
dF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBZGRJbW1lZGlhdGVzLm5ldyhj
b2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICsgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorICAK
KyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAg
ZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5kCisgIAor
ICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRp
YXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgor
ICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBA
cmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gLSAje3Jp
Z2h0LmR1bXB9KSIKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxzZQorICBlbmQK
KyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBpbW1lZGlhdGU/
CisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICBmYWxzZQorICBlbmQK
K2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwg
OnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAor
ICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTXVsSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwg
KHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiKCN7bGVmdC5kdW1wfSAqICN7cmlnaHQuZHVtcH0pIgorICBlbmQKKyAgCisgIGRlZiBhZGRy
ZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVu
ZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lz
dGVyPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0ZSA8IE5vZGUK
KyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBj
aGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisgIGVuZAor
ICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BjaGlsZF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hp
bGRyZW4KKyAgICBOZWdJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigtI3tAY2hpbGQuZHVtcH0pIgorICBlbmQKKyAg
CisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAg
IGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAK
KyAgZGVmIHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVy
SUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBu
YW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUo
Y29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICBAQG1h
cHBpbmdbbmFtZV0gPSBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAor
ICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBl
bmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVs
PworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBl
bmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICB0cnVlCisgIGVuZAorZW5kCisKK2NsYXNzIEZQ
UmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
bmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYu
Zm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAg
ICAgIEBAbWFwcGluZ1tuYW1lXSA9IEZQUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkK
KyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
IG5hbWUKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxzZQorICBlbmQKKyAgCisg
IGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBpbW1lZGlhdGU/CisgICAg
ZmFsc2UKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgdHJ1ZQorICBlbmQKK2VuZAor
CitjbGFzcyBWYXJpYWJsZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVm
IHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFt
ZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFZhcmlhYmxlLm5ldyhjb2RlT3JpZ2luLCBuYW1l
KQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzIDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6YmFzZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwg
b2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisgICAgQG9m
ZnNldCA9IG9mZnNldAorICAgIHJhaXNlICJCYWQgYmFzZSBmb3IgYWRkcmVzcyAje2Jhc2UuaW5z
cGVjdH0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIGJhc2UuaXNfYT8gVmFyaWFibGUg
b3IgYmFzZS5yZWdpc3Rlcj8KKyAgICByYWlzZSAiQmFkIG9mZnNldCBmb3IgYWRkcmVzcyAje29m
ZnNldC5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb2Zmc2V0LmlzX2E/
IFZhcmlhYmxlIG9yIG9mZnNldC5pbW1lZGlhdGU/CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVu
CisgICAgW0BiYXNlLCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAg
IEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAb2Zmc2V0KSkK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH1d
IgorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYg
bGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIGZhbHNl
CisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2Ns
YXNzIEJhc2VJbmRleCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2UsIDppbmRleCwgOnNjYWxl
LCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBiYXNlID0gYmFzZQor
ICAgIEBpbmRleCA9IGluZGV4CisgICAgQHNjYWxlID0gc2NhbGUKKyAgICByYWlzZSB1bmxlc3Mg
WzEsIDIsIDQsIDhdLm1lbWJlcj8gQHNjYWxlCisgICAgQG9mZnNldCA9IG9mZnNldAorICBlbmQK
KyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwgQGluZGV4LCBAb2Zmc2V0XQorICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEBiYXNlKSwgKHlpZWxkIEBpbmRleCksIEBzY2FsZSwgKHlpZWxkIEBvZmZzZXQpKQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfSwgI3tp
bmRleC5kdW1wfSwgI3tzY2FsZX1dIgorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIHRy
dWUKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYg
aW1tZWRpYXRlPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIGZh
bHNlCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAg
YXR0cl9yZWFkZXIgOmFkZHJlc3MKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGFk
ZHJlc3MpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje2FkZHJlc3MuZHVtcH1bXSIKKyAgZW5kCisgIAor
ICBkZWYgYWRkcmVzcz8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBlbmQKKyAgCisg
IGRlZiByZWdpc3Rlcj8KKyAgICBmYWxzZQorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlv
biA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBvcGNvZGUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQG9wY29kZSA9IG9wY29kZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFw
Q2hpbGRyZW4oJnByb2MpCisgICAgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUs
IEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0IiAr
IG9wY29kZS50b19zICsgIiAiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIs
ICIpCisgIGVuZAorZW5kCisKK2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICAiXHRlcnJvciIKKyAgZW5kCitlbmQKKworY2xhc3MgQ29uc3REZWNsIDwgTm9k
ZQorICBhdHRyX3JlYWRlciA6dmFyaWFibGUsIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QHZhcmlhYmxlID0gdmFyaWFibGUKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIFtAdmFyaWFibGUsIEB2YWx1ZV0KKyAgZW5kCisgIAorICBkZWYgbWFw
Q2hpbGRyZW4KKyAgICBDb25zdERlY2wubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAdmFyaWFibGUp
LCAoeWllbGQgQHZhbHVlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJjb25zdCAje0B2
YXJpYWJsZS5kdW1wfSA9ICN7QHZhbHVlLmR1bXB9IgorICBlbmQKK2VuZAorCiskbGFiZWxNYXBw
aW5nID0ge30KKworY2xhc3MgTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1l
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShj
b2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNl
ICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFt
ZV0uaXNfYT8gTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFi
ZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1l
XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitj
bGFzcyBMb2NhbExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBuYW1lID0gbmFtZQorICBlbmQKKworICBAQHVuaXF1ZU5hbWVDb3VudGVyID0gMAorICAK
KyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBp
bmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5s
ZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTG9jYWxMYWJlbAorICAgIGVsc2UKKyAgICAg
ICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBMb2NhbExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgc2VsZi51
bmlxdWUoY29tbWVudCkKKyAgICBuZXdOYW1lID0gIl8je2NvbW1lbnR9IgorICAgIGlmICRsYWJl
bE1hcHBpbmdbbmV3TmFtZV0KKyAgICAgIHdoaWxlICRsYWJlbE1hcHBpbmdbbmV3TmFtZSA9ICJf
I3tAQHVuaXF1ZU5hbWVDb3VudGVyfV8je2NvbW1lbnR9Il0KKyAgICAgICAgQEB1bmlxdWVOYW1l
Q291bnRlciArPSAxCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBmb3JOYW1lKG5pbCwgbmV3TmFt
ZSkKKyAgZW5kCisgIAorICBkZWYgY2xlYW5OYW1lCisgICAgaWYgbmFtZSA9fiAvXlwuLworICAg
ICAgIl8iICsgbmFtZVsxLi4tMV0KKyAgICBlbHNlCisgICAgICBuYW1lCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExh
YmVsUmVmZXJlbmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxh
YmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBl
bmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3Jp
Z2luLCAoeWllbGQgQGxhYmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5h
bWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBk
ZWYgYWRkcmVzcz8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICB0cnVl
CisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UgPCBOb0NoaWxkcmVuCisg
IGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFi
ZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAg
CisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxk
cmVuCisgICAgTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJl
bCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAg
ZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgdHJ1ZQorICBlbmQKK2VuZAorCitj
bGFzcyBTZXF1ZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGxpc3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGlz
dCA9IGxpc3QKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBsaXN0CisgIGVuZAorICAK
KyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBA
bGlzdC5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0
e3x2fCB2LmR1bXB9LmpvaW4oIlxuIikKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hp
bGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBp
bnN0YW5jZSA9IFRydWUubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFu
Y2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAidHJ1ZSIKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UgPCBOb0NoaWxkcmVuCisg
IGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2Ug
PSBGYWxzZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBl
bmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiZmFsc2UiCisgIGVuZAorZW5kCisKK2NsYXNzIFRydWVDbGFzcworICBkZWYgYXNOb2RlCisg
ICAgVHJ1ZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZUNsYXNzCisgIGRlZiBh
c05vZGUKKyAgICBGYWxzZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nIDwg
Tm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQor
ICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5n
W25hbWVdID0gU2V0dGluZy5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1h
cHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQK
KworY2xhc3MgQW5kIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENo
aWxkcmVuCisgICAgQW5kLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJp
Z2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3Jp
Z2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgT3IgPCBOb2RlCisgIGF0dHJfcmVhZGVy
IDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJp
Z2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0
ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0K
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
KCN7bGVmdC5kdW1wfSBvciAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTm90
IDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisg
IAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOb3QubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hp
bGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisg
IGVuZAorZW5kCisKK2NsYXNzIFNraXAgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICJcdHNraXAiCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpwcmVkaWNhdGUsIDp0aGVuQ2FzZQorICBhdHRyX2FjY2Vzc29yIDplbHNlQ2Fz
ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZSkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBwcmVkaWNhdGUgPSBwcmVkaWNhdGUKKyAgICBA
dGhlbkNhc2UgPSB0aGVuQ2FzZQorICAgIEBlbHNlQ2FzZSA9IFNraXAubmV3KGNvZGVPcmlnaW4p
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgaWYgQGVsc2VDYXNlCisgICAgICBbQHBy
ZWRpY2F0ZSwgQHRoZW5DYXNlLCBAZWxzZUNhc2VdCisgICAgZWxzZQorICAgICAgW0BwcmVkaWNh
dGUsIEB0aGVuQ2FzZV0KKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHByZWRpY2F0ZSksICh5aWVsZCBA
dGhlbkNhc2UpLCAoeWllbGQgQGVsc2VDYXNlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICJpZiAje3ByZWRpY2F0ZS5kdW1wfVxuIiArIHRoZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsg
ZWxzZUNhc2UuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8gPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6dmFyaWFibGVzLCA6Ym9keQorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQHZhcmlhYmxlcyA9IHZhcmlhYmxlcworICAg
IEBib2R5ID0gYm9keQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEB2YXJpYWJsZXMg
KyBbQGJvZHldCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTWFjcm8ubmV3KGNv
ZGVPcmlnaW4sIEBuYW1lLCBAdmFyaWFibGVzLm1hcHt8dnwgeWllbGQgdn0sICh5aWVsZCBAYm9k
eSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFi
bGVzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpXG4iICsgYm9keS5kdW1wICsg
IlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBNYWNyb0NhbGwgPCBOb2RlCisgIGF0dHJfcmVh
ZGVyIDpuYW1lLCA6b3BlcmFuZHMKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5h
bWUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisg
ICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAgICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAg
QG9wZXJhbmRzLmVhY2h7fHZ8IHJhaXNlIHVubGVzcyB2fQorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIEBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykK
KyAgICBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAb3BlcmFuZHMubWFwKCZwcm9j
KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdCN7bmFtZX0oIiArIG9wZXJhbmRzLmNv
bGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpIgorICBlbmQKK2VuZAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDk2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCityZXF1aXJlICJhcm12NyIKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIng4NiIKKwor
QkFDS0VORFMgPQorICBbCisgICAiWDg2IiwKKyAgICJBUk12NyIKKyAgXQorCisjIEtlZXAgdGhl
IHNldCBvZiB3b3JraW5nIGJhY2tlbmRzIHNlcGFyYXRlIGZyb20gdGhlIHNldCBvZiBiYWNrZW5k
cyB0aGF0IG1pZ2h0IGJlCisjIHN1cHBvcnRlZC4gVGhpcyBpcyBncmVhdCBiZWNhdXNlIHRoZSBC
QUNLRU5EUyBsaXN0IGlzIGFsbW9zdCBsaWtlIGEgcmVzZXJ2ZWQKKyMgd29yZHMgbGlzdCwgaW4g
dGhhdCBpdCBjYXVzZXMgc2V0dGluZ3MgcmVzb2x1dGlvbiB0byB0cmVhdCB0aG9zZSB3b3JkcyBz
cGVjaWFsbHkuCisjIEhlbmNlIHRoaXMgbGV0cyB1cyBzZXQgYXNpZGUgdGhlIG5hbWUgb2YgYSBi
YWNrZW5kIHdlIG1pZ2h0IHdhbnQgdG8gc3VwcG9ydCBpbgorIyB0aGUgZnV0dXJlIHdoaWxlIG5v
dCBhY3R1YWxseSBzdXBwb3J0aW5nIHRoZSBiYWNrZW5kIHlldC4KK1dPUktJTkdfQkFDS0VORFMg
PQorICBbCisgICAiWDg2IiwKKyAgICJBUk12NyIKKyAgXQorCitCQUNLRU5EX1BBVFRFUk4gPSBS
ZWdleHAubmV3KCdcXEEoJyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFonKQorCitjbGFz
cyBOb2RlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIHNlbmQoImxvd2VyIiArIG5hbWUpCisgIGVu
ZAorZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBsb3dlcigpIGZvciB0aG9zZSBub2RlcyB0aGF0IGFy
ZSBiYWNrZW5kLWFnbm9zdGljCisKK2NsYXNzIExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAg
ICRhc20ucHV0c0xhYmVsKHNlbGYubmFtZVsxLi4tMV0pCisgIGVuZAorZW5kCisKK2NsYXNzIExv
Y2FsTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzTG9jYWxMYWJlbCAiX29m
ZmxpbmVhc21fI3tzZWxmLm5hbWVbMS4uLTFdfSIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxS
ZWZlcmVuY2UKKyAgZGVmIGFzbUxhYmVsCisgICAgQXNzZW1ibGVyLmxhYmVsUmVmZXJlbmNlKG5h
bWVbMS4uLTFdKQorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCisgIGRl
ZiBhc21MYWJlbAorICAgIEFzc2VtYmxlci5sb2NhbExhYmVsUmVmZXJlbmNlKCJfb2ZmbGluZWFz
bV8iK25hbWVbMS4uLTFdKQorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwCisgIGRlZiBsb3dlcihu
YW1lKQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXIobmFtZSkKKyAg
ICBpZiByZXNwb25kX3RvPyAibG93ZXIje25hbWV9IgorICAgICAgc2VuZCgibG93ZXIje25hbWV9
IikKKyAgICBlbHNlCisgICAgICBAbGlzdC5lYWNoIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAg
ICAgbm9kZS5sb3dlcihuYW1lKQorICAgICAgfQorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFj
dG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDkzIEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykK
KworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9m
ZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZWxmX2hhc2giCityZXF1aXJlICJz
ZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworaW5wdXRGbG5tID0gQVJHVi5zaGlmdAor
b3V0cHV0RmxubSA9IEFSR1Yuc2hpZnQKKworJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBQYXJz
aW5nICN7aW5wdXRGbG5tfSBhbmQgY3JlYXRpbmcgb2Zmc2V0IGV4dHJhY3RvciAje291dHB1dEZs
bm19LiIKKworZGVmIGVtaXRNYWdpY051bWJlcgorICBPRkZTRVRfTUFHSUNfTlVNQkVSUy5lYWNo
IHsKKyAgICB8IG51bWJlciB8CisgICAgJG91dHB1dC5wdXRzICIje251bWJlcn0sIgorICB9Citl
bmQKKworaW5wdXREYXRhID0gSU86OnJlYWQoaW5wdXRGbG5tKQoraW5wdXRIYXNoID0gIi8vIG9m
ZmxpbmVhc20gaW5wdXQgaGFzaDogI3tEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0YSl9
ICN7c2VsZkhhc2h9IgorCitpZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0RmxubQorICBGaWxlLm9w
ZW4ob3V0cHV0RmxubSwgInIiKSB7CisgICAgfCBpbnAgfAorICAgIGZpcnN0TGluZSA9IGlucC5n
ZXRzCisgICAgaWYgZmlyc3RMaW5lIGFuZCBmaXJzdExpbmUuY2hvbXAgPT0gaW5wdXRIYXNoCisg
ICAgICAkc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IE5vdGhpbmcgY2hhbmdlZC4iCisgICAgICBl
eGl0IDAKKyAgICBlbmQKKyAgfQorZW5kCisKK29yaWdpbmFsQVNUID0gcGFyc2UobGV4KGlucHV0
RGF0YSkpCisKK0ZpbGUub3BlbihvdXRwdXRGbG5tLCAidyIpIHsKKyAgfCBvdXRwIHwKKyAgJG91
dHB1dCA9IG91dHAKKyAgb3V0cC5wdXRzIGlucHV0SGFzaAorICBlbWl0Q29kZUluQWxsQ29uZmln
dXJhdGlvbnMob3JpZ2luYWxBU1QpIHsKKyAgICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGlu
ZGV4IHwKKyAgICBvZmZzZXRzTGlzdCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNv
cnQKKyAgICBzaXplc0xpc3QgPSBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CisgICAgCisg
ICAgbGVuZ3RoID0gKE9GRlNFVF9NQUdJQ19OVU1CRVJTLnNpemUgKyAxKSAqICgxICsgb2Zmc2V0
c0xpc3Quc2l6ZSArIHNpemVzTGlzdC5zaXplKQorICAgIAorICAgIG91dHAucHV0cyAic3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICAgIGVtaXRN
YWdpY051bWJlcgorICAgIG91dHAucHV0cyAiI3tpbmRleH0sIgorICAgIG9mZnNldHNMaXN0LmVh
Y2ggeworICAgICAgfCBvZmZzZXQgfAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICBvdXRw
LnB1dHMgIk9GRkxJTkVfQVNNX09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZp
ZWxkfSksIgorICAgIH0KKyAgICBzaXplc0xpc3QuZWFjaCB7CisgICAgICB8IG9mZnNldCB8Cisg
ICAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICAgIG91dHAucHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0
cnVjdH0pLCIKKyAgICB9CisgICAgb3V0cC5wdXRzICJ9OyIKKyAgfQorfQorCiskc3RkZXJyLnB1
dHMgIm9mZmxpbmVhc206IG9mZnNldCBleHRyYWN0b3IgI3tvdXRwdXRGbG5tfSBzdWNjZXNzZnVs
bHkgZ2VuZXJhdGVkLiIKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
MDcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgSW50ZXJlc3Rp
bmcgaW52YXJpYW50LCB3aGljaCB3ZSB0YWtlIGFkdmFudGFnZSBvZjogYnJhbmNoaW5nIGluc3Ry
dWN0aW9ucworIyBhbHdheXMgYmVnaW4gd2l0aCAiYiIsIGFuZCBubyBub24tYnJhbmNoaW5nIGlu
c3RydWN0aW9ucyBiZWdpbiB3aXRoICJiIi4KKyMgVGVybWluYWwgaW5zdHJ1Y3Rpb25zIGFyZSAi
am1wIiBhbmQgInJldCIuCisKK01BQ1JPX0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJhZGRpIiwK
KyAgICJhbmRpIiwKKyAgICJsc2hpZnRpIiwKKyAgICJtdWxpIiwKKyAgICJuZWdpIiwKKyAgICJu
b3RpIiwKKyAgICJvcmkiLAorICAgInJzaGlmdGkiLAorICAgInVyc2hpZnRpIiwKKyAgICJzdWJp
IiwKKyAgICJ4b3JpIiwKKyAgICJsb2FkaSIsCisgICAibG9hZGIiLAorICAgImxvYWRicyIsCisg
ICAibG9hZGgiLAorICAgImxvYWRocyIsCisgICAic3RvcmVpIiwKKyAgICJzdG9yZWIiLAorICAg
ImxvYWRkIiwKKyAgICJtb3ZlZCIsCisgICAic3RvcmVkIiwKKyAgICJhZGRkIiwKKyAgICJkaXZk
IiwKKyAgICJzdWJkIiwKKyAgICJtdWxkIiwKKyAgICJzcXJ0ZCIsCisgICAiY2kyZCIsCisgICAi
ZmlpMmQiLCAjIHVzYWdlOiBmaWkyZCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4s
IDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+LCA8ZnByPgorICAgImZkMmlpIiwgIyB1
c2FnZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdw
ciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4KKyAgICJiZGVxIiwKKyAgICJiZG5lcSIsCisg
ICAiYmRndCIsCisgICAiYmRndGVxIiwKKyAgICJiZGx0IiwKKyAgICJiZGx0ZXEiLAorICAgImJk
ZXF1biIsCisgICAiYmRuZXF1biIsCisgICAiYmRndHVuIiwKKyAgICJiZGd0ZXF1biIsCisgICAi
YmRsdHVuIiwKKyAgICJiZGx0ZXF1biIsCisgICAiYnRkMmkiLAorICAgInRkMmkiLAorICAgImJj
ZDJpIiwKKyAgICJtb3ZkeiIsCisgICAicG9wIiwKKyAgICJwdXNoIiwKKyAgICJtb3ZlIiwKKyAg
ICJzeGkycCIsCisgICAienhpMnAiLAorICAgIm5vcCIsCisgICAiYmllcSIsCisgICAiYmluZXEi
LAorICAgImJpYSIsCisgICAiYmlhZXEiLAorICAgImJpYiIsCisgICAiYmliZXEiLAorICAgImJp
Z3QiLAorICAgImJpZ3RlcSIsCisgICAiYmlsdCIsCisgICAiYmlsdGVxIiwKKyAgICJiYmVxIiwK
KyAgICJiYm5lcSIsCisgICAiYmJhIiwKKyAgICJiYmFlcSIsCisgICAiYmJiIiwKKyAgICJiYmJl
cSIsCisgICAiYmJndCIsCisgICAiYmJndGVxIiwKKyAgICJiYmx0IiwKKyAgICJiYmx0ZXEiLAor
ICAgImJ0aW8iLAorICAgImJ0aXMiLAorICAgImJ0aXoiLAorICAgImJ0aW56IiwKKyAgICJidGJv
IiwKKyAgICJidGJzIiwKKyAgICJidGJ6IiwKKyAgICJidGJueiIsCisgICAiam1wIiwKKyAgICJi
YWRkaW8iLAorICAgImJhZGRpcyIsCisgICAiYmFkZGl6IiwKKyAgICJiYWRkaW56IiwKKyAgICJi
c3ViaW8iLAorICAgImJzdWJpcyIsCisgICAiYnN1Yml6IiwKKyAgICJic3ViaW56IiwKKyAgICJi
bXVsaW8iLAorICAgImJtdWxpcyIsCisgICAiYm11bGl6IiwKKyAgICJibXVsaW56IiwKKyAgICJi
b3JpbyIsCisgICAiYm9yaXMiLAorICAgImJvcml6IiwKKyAgICJib3JpbnoiLAorICAgImJyZWFr
IiwKKyAgICJjYWxsIiwKKyAgICJyZXQiLAorICAgImNpZXEiLAorICAgImNpbmVxIiwKKyAgICJj
aWEiLAorICAgImNpYWVxIiwKKyAgICJjaWIiLAorICAgImNpYmVxIiwKKyAgICJjaWd0IiwKKyAg
ICJjaWd0ZXEiLAorICAgImNpbHQiLAorICAgImNpbHRlcSIsCisgICAidGlvIiwKKyAgICJ0aXMi
LAorICAgInRpeiIsCisgICAidGlueiIsCisgICAidGJvIiwKKyAgICJ0YnMiLAorICAgInRieiIs
CisgICAidGJueiIsCisgICAicGVlayIsCisgICAicG9rZSIsCisgICAiYnBlcSIsCisgICAiYnBu
ZXEiLAorICAgImJwYSIsCisgICAiYnBhZXEiLAorICAgImJwYiIsCisgICAiYnBiZXEiLAorICAg
ImJwZ3QiLAorICAgImJwZ3RlcSIsCisgICAiYnBsdCIsCisgICAiYnBsdGVxIiwKKyAgICJhZGRw
IiwKKyAgICJhbmRwIiwKKyAgICJvcnAiLAorICAgInN1YnAiLAorICAgInhvcnAiLAorICAgImxv
YWRwIiwKKyAgICJjcGVxIiwKKyAgICJjcG5lcSIsCisgICAiY3BhIiwKKyAgICJjcGFlcSIsCisg
ICAiY3BiIiwKKyAgICJjcGJlcSIsCisgICAiY3BndCIsCisgICAiY3BndGVxIiwKKyAgICJjcGx0
IiwKKyAgICJjcGx0ZXEiLAorICAgInN0b3JlcCIsCisgICAiYnRwbyIsCisgICAiYnRwcyIsCisg
ICAiYnRweiIsCisgICAiYnRwbnoiLAorICAgImJhZGRwbyIsCisgICAiYmFkZHBzIiwKKyAgICJi
YWRkcHoiLAorICAgImJhZGRwbnoiLAorICAgImJvIiwKKyAgICJicyIsCisgICAiYnoiLAorICAg
ImJueiIKKyAgXQorCitYODZfSU5TVFJVQ1RJT05TID0KKyAgWworICAgImNkcWkiLAorICAgImlk
aXZpIgorICBdCisKK0lOU1RSVUNUSU9OUyA9IE1BQ1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNU
UlVDVElPTlMKKworSU5TVFJVQ1RJT05fUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIElO
U1RSVUNUSU9OUy5qb2luKCcpfCgnKSArICcpKVxcWicpCisKK2RlZiBpc0JyYW5jaChpbnN0cnVj
dGlvbikKKyAgaW5zdHJ1Y3Rpb24gPX4gL15iLworZW5kCisKK2RlZiBoYXNGYWxsVGhyb3VnaChp
bnN0cnVjdGlvbikKKyAgaW5zdHJ1Y3Rpb24gIT0gInJldCIgYW5kIGluc3RydWN0aW9uICE9ICJq
bXAiCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0
X2V4dHJhY3Rvcl9jb25zdGFudHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2Nv
bnN0YW50cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgw
ZmY1ZTc1NSBdCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zm
c2V0cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9v
ZmZzZXRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vb2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTAgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIm9mZnNl
dF9leHRyYWN0b3JfY29uc3RhbnRzIgorCitPRkZTRVRfTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3
N2FjNywgMHgwZmY1ZTc1NSBdCisKKyMKKyMgb2Zmc2V0c0xpc3QoYXN0KQorIyBzaXplc0xpc3Qo
YXN0KQorIworIyBSZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCBzaXplcyB1c2VkIGJ5IHRo
ZSBBU1QuCisjCisKK2RlZiBvZmZzZXRzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU3RydWN0T2Zm
c2V0KS51bmlxLnNvcnQKK2VuZAorCitkZWYgc2l6ZXNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihT
aXplb2YpLnVuaXEuc29ydAorZW5kCisKKyMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRl
eChhc3QsIGZpbGUpIC0+CisjICAgICBbb2Zmc2V0cywgaW5kZXhdCisjCisjIFBhcnNlcyB0aGUg
b2Zmc2V0cyBmcm9tIGEgZmlsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgdGhl
CisjIGluZGV4IG9mIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgaXMgdmFsaWQgaW4gdGhpcyBidWls
ZCB0YXJnZXQuCisjCisKK2RlZiBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUpCisg
IGluZGV4ID0gbmlsCisgIG9mZnNldHMgPSBbXQorICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBu
aWwKKyAgCisgIGRlZiByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICBieXRlcyA9IFtdCisg
ICAgNC50aW1lcyB7CisgICAgICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQorICAgIH0KKyAgICAKKyAg
ICBpZiBlbmRpYW5uZXNzID09IDpsaXR0bGUKKyAgICAgICMgTGl0dGxlIGVuZGlhbgorICAgICAg
KGJ5dGVzWzBdIDw8IDAgfAorICAgICAgIGJ5dGVzWzFdIDw8IDggfAorICAgICAgIGJ5dGVzWzJd
IDw8IDE2IHwKKyAgICAgICBieXRlc1szXSA8PCAyNCkKKyAgICBlbHNlCisgICAgICAjIEJpZyBl
bmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAyNCB8CisgICAgICAgYnl0ZXNbMV0gPDwgMTYgfAor
ICAgICAgIGJ5dGVzWzJdIDw8IDggfAorICAgICAgIGJ5dGVzWzNdIDw8IDApCisgICAgZW5kCisg
IGVuZAorICAKKyAgWzpsaXR0bGUsIDpiaWddLmVhY2ggeworICAgIHwgZW5kaWFubmVzcyB8Cisg
ICAgbWFnaWNCeXRlcyA9IFtdCisgICAgTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICAgIHwgbnVt
YmVyIHwKKyAgICAgIGN1cnJlbnRCeXRlcyA9IFtdCisgICAgICA0LnRpbWVzIHsKKyAgICAgICAg
Y3VycmVudEJ5dGVzIDw8IChudW1iZXIgJiAweGZmKQorICAgICAgICBudW1iZXIgPj49IDgKKyAg
ICAgIH0KKyAgICAgIGlmIGVuZGlhbm5lc3MgPT0gOmJpZworICAgICAgICBjdXJyZW50Qnl0ZXMu
cmV2ZXJzZSEKKyAgICAgIGVuZAorICAgICAgbWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0ZXMKKyAg
ICB9CisgICAgCisgICAgRmlsZS5vcGVuKGZpbGUsICJyIikgeworICAgICAgfCBpbnAgfAorICAg
ICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgIGxvb3AgeworICAgICAgICBieXRlID0gaW5wLmdl
dGJ5dGUKKyAgICAgICAgYnJlYWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgaWYgYnl0ZSA9PSBtYWdp
Y0J5dGVzW3doZXJlSW5NYXJrZXJdCisgICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisgICAg
ICAgICAgaWYgd2hlcmVJbk1hcmtlciA9PSBtYWdpY0J5dGVzLnNpemUKKyAgICAgICAgICAgICMg
V2UgaGF2ZSBhIG1hdGNoISBJZiB3ZSBoYXZlIG5vdCB5ZXQgcmVhZCB0aGUgZW5kaWFubmVzcyBt
YXJrZXIgYW5kIGluZGV4LAorICAgICAgICAgICAgIyB0aGVuIHJlYWQgdGhvc2Ugbm93OyBvdGhl
cndpc2UgcmVhZCBhbiBvZmZzZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIG5vdCBp
bmRleAorICAgICAgICAgICAgICBpbmRleCA9IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBvZmZzZXRzIDw8IHJlYWRJbnQoZW5kaWFubmVz
cywgaW5wKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdoZXJl
SW5NYXJrZXIgPSAwCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICB3aGVy
ZUluTWFya2VyID0gMAorICAgICAgICBlbmQKKyAgICAgIH0KKyAgICB9CisgICAgCisgICAgYnJl
YWsgaWYgaW5kZXgKKyAgfQorICAKKyAgcmFpc2UgdW5sZXNzIGluZGV4CisgIAorICBbb2Zmc2V0
cywgaW5kZXhdCitlbmQKKworIworIyBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkg
LT4gW29mZnNldHMsIHNpemVzXQorIworIyBCdWlsZHMgYSBtYXBwaW5nIGJldHdlZW4gU3RydWN0
T2Zmc2V0IG5vZGVzIGFuZCB0aGVpciB2YWx1ZXMuCisjCisKK2RlZiBidWlsZE9mZnNldHNNYXAo
YXN0LCBvZmZzZXRzTGlzdCkKKyAgb2Zmc2V0c01hcCA9IHt9CisgIHNpemVzTWFwID0ge30KKyAg
YXN0T2Zmc2V0c0xpc3QgPSBvZmZzZXRzTGlzdChhc3QpCisgIGFzdFNpemVzTGlzdCA9IHNpemVz
TGlzdChhc3QpCisgIHJhaXNlIHVubGVzcyBhc3RPZmZzZXRzTGlzdC5zaXplICsgYXN0U2l6ZXNM
aXN0LnNpemUgPT0gb2Zmc2V0c0xpc3Quc2l6ZQorICBvZmZzZXRzTGlzdChhc3QpLmVhY2hfd2l0
aF9pbmRleCB7CisgICAgfCBzdHJ1Y3RPZmZzZXQsIGluZGV4IHwKKyAgICBvZmZzZXRzTWFwW3N0
cnVjdE9mZnNldF0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIHNpemVzTGlzdChhc3QpLmVh
Y2hfd2l0aF9pbmRleCB7CisgICAgfCBzaXplb2YsIGluZGV4IHwKKyAgICBzaXplc01hcFtzaXpl
b2ZdID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQorICBbb2Zmc2V0c01hcCwgc2l6ZXNNYXBdCitl
bmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb3B0LnJiCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29wdC5yYgkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29wdC5yYgkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxMzQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK3JlcXVpcmUgImFzdCIKKworIworIyAiT3B0aW1pemF0aW9uIiBwYXNzZXMuIFRoZXNl
IGFyZSB1c2VkIHRvIGxvd2VyIHRoZSByZXByZXNlbnRhdGlvbiBmb3IKKyMgYmFja2VuZHMgdGhh
dCBjYW5ub3QgaGFuZGxlIHNvbWUgb2Ygb3VyIGhpZ2hlci1sZXZlbCBpbnN0cnVjdGlvbnMuCisj
CisKKyMKKyMgQSB0ZW1wb3JhcnkgLSBhIHZhcmlhYmxlIHRoYXQgd2lsbCBiZSBhbGxvY2F0ZWQg
dG8gYSByZWdpc3RlciBhZnRlciB3ZSdyZQorIyBkb25lLgorIworCitjbGFzcyBOb2RlCisgIGRl
ZiByZXBsYWNlVGVtcG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgbWFwQ2hpbGRyZW4g
eworICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUucmVwbGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lz
dGVycyhraW5kKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVG1wIDwgTm9DaGlsZHJlbgor
ICBhdHRyX3JlYWRlciA6Zmlyc3RNZW50aW9uLCA6bGFzdE1lbnRpb24KKyAgYXR0cl9yZWFkZXIg
OmtpbmQKKyAgYXR0cl9hY2Nlc3NvciA6cmVnaXN0ZXIKKworICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBraW5kKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGtpbmQgPSBraW5kCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiJHRtcCN7b2JqZWN0X2lkfSIKKyAgZW5kCisgIAor
ICBkZWYgbWVudGlvbiEocG9zaXRpb24pCisgICAgaWYgbm90IEBmaXJzdE1lbnRpb24gb3IgcG9z
aXRpb24gPCBAZmlyc3RNZW50aW9uCisgICAgICBAZmlyc3RNZW50aW9uID0gcG9zaXRpb24KKyAg
ICBlbmQKKyAgICBpZiBub3QgQGxhc3RNZW50aW9uIG9yIHBvc2l0aW9uID4gQGxhc3RNZW50aW9u
CisgICAgICBAbGFzdE1lbnRpb24gPSBwb3NpdGlvbgorICAgIGVuZAorICBlbmQKKyAgCisgIGRl
ZiByZXBsYWNlVGVtcG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgaWYgQGtpbmQgPT0g
a2luZAorICAgICAgcmFpc2UgIkRpZCBub3QgYWxsb2NhdGUgcmVnaXN0ZXIgdG8gdGVtcG9yYXJ5
IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBAcmVnaXN0ZXIKKyAgICAgIEByZWdpc3Rl
cgorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYWRkcmVz
cz8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQK
KyAgCisgIGRlZiBpbW1lZGlhdGU/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0
ZXI/CisgICAgdHJ1ZQorICBlbmQKK2VuZAorCisjIEFzc2lnbiByZWdpc3RlcnMgdG8gdGVtcG9y
YXJpZXMsIGJ5IGZpbmRpbmcgd2hpY2ggdGVtcG9yYXJpZXMgaW50ZXJmZXJlCisjIHdpdGggZWFj
aCBvdGhlci4gTm90ZSB0aGF0IHRoaXMgcmVsaWVzIG9uIHRlbXBvcmFyeSBsaXZlIHJhbmdlcyBu
b3QgY3Jvc3NpbmcKKyMgYmFzaWMgYmxvY2sgYm91bmRhcmllcy4KKworZGVmIGFzc2lnblJlZ2lz
dGVyc1RvVGVtcG9yYXJpZXMobGlzdCwga2luZCwgcmVnaXN0ZXJzKQorICBsaXN0LmVhY2hfd2l0
aF9pbmRleCB7CisgICAgfCBub2RlLCBpbmRleCB8CisgICAgbm9kZS5maWx0ZXIoVG1wKS51bmlx
LmVhY2ggeworICAgICAgfCB0bXAgfAorICAgICAgaWYgdG1wLmtpbmQgPT0ga2luZAorICAgICAg
ICB0bXAubWVudGlvbiEgaW5kZXgKKyAgICAgIGVuZAorICAgIH0KKyAgfQorICAKKyAgZnJlZVJl
Z2lzdGVycyA9IHJlZ2lzdGVycy5kdXAKKyAgbGlzdC5lYWNoX3dpdGhfaW5kZXggeworICAgIHwg
bm9kZSwgaW5kZXggfAorICAgIHRtcExpc3QgPSBub2RlLmZpbHRlcihUbXApLnVuaXEKKyAgICB0
bXBMaXN0LmVhY2ggeworICAgICAgfCB0bXAgfAorICAgICAgaWYgdG1wLmtpbmQgPT0ga2luZCBh
bmQgdG1wLmZpcnN0TWVudGlvbiA9PSBpbmRleAorICAgICAgICByYWlzZSAiQ291bGQgbm90IGFs
bG9jYXRlIHJlZ2lzdGVyIHRvIHRlbXBvcmFyeSBhdCAje25vZGUuY29kZU9yZ2luU3RyaW5nfSIg
aWYgZnJlZVJlZ2lzdGVycy5lbXB0eT8KKyAgICAgICAgdG1wLnJlZ2lzdGVyID0gZnJlZVJlZ2lz
dGVycy5wb3AKKyAgICAgIGVuZAorICAgIH0KKyAgICB0bXBMaXN0LmVhY2ggeworICAgICAgfCB0
bXAgfAorICAgICAgaWYgdG1wLmtpbmQgPT0ga2luZCBhbmQgdG1wLmxhc3RNZW50aW9uID09IGlu
ZGV4CisgICAgICAgIGZyZWVSZWdpc3RlcnMucHVzaCB0bXAucmVnaXN0ZXIKKyAgICAgICAgcmFp
c2UgIlJlZ2lzdGVyIGFsbG9jYXRpb24gaW5jb25zaXN0ZW5jeSBhdCAje25vZGUuY29kZU9yaWdp
blN0cmluZ30iIGlmIGZyZWVSZWdpc3RlcnMuc2l6ZSA+IHJlZ2lzdGVycy5zaXplCisgICAgICBl
bmQKKyAgICB9CisgIH0KKyAgCisgIGxpc3QubWFwIHsKKyAgICB8IG5vZGUgfAorICAgIG5vZGUu
cmVwbGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lzdGVycyhraW5kKQorICB9CitlbmQKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1ODUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImluc3RydWN0aW9ucyIKK3JlcXVpcmUgInJlZ2lz
dGVycyIKKworY2xhc3MgVG9rZW4KKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4sIDpzdHJpbmcK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cmluZykKKyAgICBAY29kZU9yaWdp
biA9IGNvZGVPcmlnaW4KKyAgICBAc3RyaW5nID0gc3RyaW5nCisgIGVuZAorICAKKyAgZGVmID09
KG90aGVyKQorICAgIGlmIG90aGVyLmlzX2E/IFRva2VuCisgICAgICBAc3RyaW5nID09IG90aGVy
LnN0cmluZworICAgIGVsc2UKKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIKKyAgICBlbmQKKyAgZW5k
CisgIAorICBkZWYgPX4ob3RoZXIpCisgICAgQHN0cmluZyA9fiBvdGhlcgorICBlbmQKKyAgCisg
IGRlZiB0b19zCisgICAgIiN7QHN0cmluZy5pbnNwZWN0fSBhdCBsaW5lICN7Y29kZU9yaWdpbn0i
CisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgY29tbWVudC5l
bXB0eT8KKyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfSIKKyAgICBlbHNlCisgICAg
ICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc306ICN7Y29tbWVudFswXX0iCisgICAgZW5kCisg
IGVuZAorZW5kCisKKyMKKyMgVGhlIGxleGVyLiBUYWtlcyBhIHN0cmluZyBhbmQgcmV0dXJucyBh
biBhcnJheSBvZiB0b2tlbnMuCisjCisKK2RlZiBsZXgoc3RyKQorICByZXN1bHQgPSBbXQorICBs
aW5lTnVtYmVyID0gMQorICB3aGlsZSBub3Qgc3RyLmVtcHR5PworICAgIGNhc2Ugc3RyCisgICAg
d2hlbiAvXEFcIyhbXlxuXSopLworICAgICAgIyBjb21tZW50LCBpZ25vcmUKKyAgICB3aGVuIC9c
QVxuLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICAgIGxp
bmVOdW1iZXIgKz0gMQorICAgIHdoZW4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKikvCisgICAg
ICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBXC4oW2Et
ekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQor
ICAgIHdoZW4gL1xBXyhbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXco
bGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEEoWyBcdF0rKS8KKyAgICAgICMgd2hpdGVzcGFj
ZSwgaWdub3JlCisgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSspLworICAgICAgcmVzdWx0IDw8
IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAgICB3aGVuIC9cQTAoWzAtN10r
KS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYub2N0LnRvX3MpCisg
ICAgd2hlbiAvXEEoWzAtOV0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJl
ciwgJCYpCisgICAgd2hlbiAvXEE6Oi8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51
bWJlciwgJCYpCisgICAgd2hlbiAvXEFbOixcKFwpXFtcXT1cK1wtKl0vCisgICAgICByZXN1bHQg
PDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJMZXhl
ciBlcnJvciBhdCBsaW5lIG51bWJlciAje2xpbmVOdW1iZXJ9LCB1bmV4cGVjdGVkIHNlcXVlbmNl
ICN7c3RyWzAuLjIwXS5pbnNwZWN0fSIKKyAgICBlbmQKKyAgICBzdHIgPSAkfi5wb3N0X21hdGNo
CisgIGVuZAorICByZXN1bHQKK2VuZAorCisjCisjIFRva2VuIGlkZW50aWZpY2F0aW9uLgorIwor
CitkZWYgaXNSZWdpc3Rlcih0b2tlbikKKyAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTgorZW5k
CisKK2RlZiBpc0luc3RydWN0aW9uKHRva2VuKQorICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRU
RVJOCitlbmQKKworZGVmIGlzS2V5d29yZCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBKCh0cnVlKXwo
ZmFsc2UpfChpZil8KHRoZW4pfChlbHNlKXwoZWxzaWYpfChlbmQpfChhbmQpfChvcil8KG5vdCl8
KG1hY3JvKXwoY29uc3QpfChzaXplb2YpfChlcnJvcikpXFovIG9yCisgICAgdG9rZW4gPX4gUkVH
SVNURVJfUEFUVEVSTiBvcgorICAgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2VuZAor
CitkZWYgaXNJZGVudGlmaWVyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbYS16QS1aXShbYS16QS1a
MC05X10qKVxaLyBhbmQgbm90IGlzS2V5d29yZCh0b2tlbikKK2VuZAorCitkZWYgaXNMYWJlbCh0
b2tlbikKKyAgdG9rZW4gPX4gL1xBXyhbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc0xv
Y2FsTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQVwuKFthLXpBLVowLTlfXSopXFovCitlbmQK
KworZGVmIGlzVmFyaWFibGUodG9rZW4pCisgIGlzSWRlbnRpZmllcih0b2tlbikgb3IgaXNSZWdp
c3Rlcih0b2tlbikKK2VuZAorCitkZWYgaXNJbnRlZ2VyKHRva2VuKQorICB0b2tlbiA9fiAvXEFb
MC05XS8KK2VuZAorCisjCisjIFRoZSBwYXJzZXIuIFRha2VzIGFuIGFycmF5IG9mIHRva2VucyBh
bmQgcmV0dXJucyBhbiBBU1QuIE1ldGhvZHMKKyMgb3RoZXIgdGhhbiBwYXJzZSh0b2tlbnMpIGFy
ZSBub3QgZm9yIHB1YmxpYyBjb25zdW1wdGlvbi4KKyMKKworY2xhc3MgUGFyc2VyCisgIGRlZiBp
bml0aWFsaXplKHRva2VucykKKyAgICBAdG9rZW5zID0gdG9rZW5zCisgICAgQGlkeCA9IDAKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBpZiBAdG9rZW5zW0BpZHhd
CisgICAgICBAdG9rZW5zW0BpZHhdLnBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgZWxzZQorICAg
ICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBv
ZiBmaWxlIgorICAgICAgZWxzZQorICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9m
IGZpbGU6ICN7Y29tbWVudFswXX0iCisgICAgICBlbmQKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgY29uc3VtZShyZWdleHApCisgICAgaWYgcmVnZXhwCisgICAgICBwYXJzZUVycm9yIHVubGVz
cyBAdG9rZW5zW0BpZHhdID1+IHJlZ2V4cAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIEBpZHggPT0gQHRva2Vucy5sZW5ndGgKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgZW5k
CisgIAorICBkZWYgc2tpcE5ld0xpbmUKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJcbiIK
KyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0
ZUF0b20KKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJub3QiCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIHBhcnNlUHJlZGljYXRlQXRvbQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisg
ICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByZXN1bHQgPSBwYXJzZVBy
ZWRpY2F0ZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAg
ICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAi
dHJ1ZSIKKyAgICAgIHJlc3VsdCA9IFRydWUuaW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZmFsc2UiCisgICAgICByZXN1
bHQgPSBGYWxzZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBl
bHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gU2V0dGluZy5m
b3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisg
ICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBbmQKKyAgICByZXN1bHQg
PSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJhbmQiCisg
ICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9
IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQXRvbQor
ICAgICAgcmVzdWx0ID0gQW5kLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVu
ZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZQorICAgICMgc29t
ZSBleGFtcGxlcyBvZiBwcmVjZWRlbmNlOgorICAgICMgbm90IGEgYW5kIGIgLT4gKG5vdCBhKSBh
bmQgYgorICAgICMgYSBhbmQgYiBvciBjIC0+IChhIGFuZCBiKSBvciBjCisgICAgIyBhIG9yIGIg
YW5kIGMgLT4gYSBvciAoYiBhbmQgYykKKyAgICAKKyAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0
ZUFuZAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIm9yIgorICAgICAgY29kZU9yaWdpbiA9
IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3
TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAgICAgcmVzdWx0ID0gT3Iu
bmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVu
ZAorICAKKyAgZGVmIHBhcnNlVmFyaWFibGUKKyAgICBpZiBpc1JlZ2lzdGVyKEB0b2tlbnNbQGlk
eF0pCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID1+IEZQUl9QQVRURVJOCisgICAgICAgIHJlc3Vs
dCA9IEZQUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vu
c1tAaWR4XS5zdHJpbmcpCisgICAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IFJlZ2lzdGVySUQu
Zm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQor
ICAgICAgZW5kCisgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICBy
ZXN1bHQgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vu
c1tAaWR4XS5zdHJpbmcpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICAg
IEBpZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUFkZHJlc3Mob2Zm
c2V0KQorICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgY29k
ZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIAorICAgICMgVGhyZWUgcG9z
c2liaWxpdGllczoKKyAgICAjIFtdICAgICAgIC0+IEFic29sdXRlQWRkcmVzcworICAgICMgW2Fd
ICAgICAgLT4gQWRkcmVzcworICAgICMgW2EsYl0gICAgLT4gQmFzZUluZGV4IHdpdGggc2NhbGUg
PSAxCisgICAgIyBbYSxiLGNdICAtPiBCYXNlSW5kZXgKKyAgICAKKyAgICBAaWR4ICs9IDEKKyAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXR1cm4g
QWJzb2x1dGVBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXQpCisgICAgZW5kCisgICAgYSA9
IHBhcnNlVmFyaWFibGUKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgcmVzdWx0
ID0gQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgYSwgb2Zmc2V0KQorICAgIGVsc2UKKyAgICAgIHBh
cnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIGIgPSBwYXJzZVZhcmlhYmxlCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAg
ICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIDEsIG9mZnNldCkK
KyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAi
LCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIFsiMSIsICIy
IiwgIjQiLCAiOCJdLm1lbWJlcj8gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgYyA9IEB0
b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAgIHJlc3VsdCA9IEJhc2VJ
bmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgYywgb2Zmc2V0KQorICAgICAgZW5kCisgICAgZW5k
CisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQ29sb25D
b2xvbgorICAgIHNraXBOZXdMaW5lCisgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbgorICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhd
CisgICAgbmFtZXMgPSBbQHRva2Vuc1tAaWR4XS5zdHJpbmddCisgICAgQGlkeCArPSAxCisgICAg
d2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiOjoiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICBuYW1lcyA8PCBA
dG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgICAgcmFpc2Ug
aWYgbmFtZXMuZW1wdHk/CisgICAgW2NvZGVPcmlnaW4sIG5hbWVzXQorICBlbmQKKyAgCisgIGRl
ZiBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgc2tpcE5ld0xpbmUKKyAgICBpZiBAdG9rZW5zW0Bp
ZHhdID09ICItIgorICAgICAgQGlkeCArPSAxCisgICAgICBOZWdJbW1lZGlhdGUubmV3KEB0b2tl
bnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHBhcnNlRXhwcmVzc2lvbkF0b20pCisgICAgZWxzaWYg
QHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0ID0gcGFy
c2VFeHByZXNzaW9uCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIp
IgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0ludGVnZXIgQHRv
a2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kpCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICBj
b2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAgaWYgbmFtZXMuc2l6ZSA+
IDEKKyAgICAgICAgU3RydWN0T2Zmc2V0LmZvckZpZWxkKGNvZGVPcmlnaW4sIG5hbWVzWzAuLi0y
XS5qb2luKCc6OicpLCBuYW1lc1stMV0pCisgICAgICBlbHNlCisgICAgICAgIFZhcmlhYmxlLmZv
ck5hbWUoY29kZU9yaWdpbiwgbmFtZXNbMF0pCisgICAgICBlbmQKKyAgICBlbHNpZiBpc1JlZ2lz
dGVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHBhcnNlVmFyaWFibGUKKyAgICBlbHNpZiBAdG9rZW5z
W0BpZHhdID09ICJzaXplb2YiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIGNvZGVPcmlnaW4sIG5h
bWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBTaXplb2YuZm9yTmFtZShjb2RlT3JpZ2luLCBu
YW1lcy5qb2luKCc6OicpKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uTXVsCisgICAgc2tpcE5ld0xpbmUKKyAgICBy
ZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAi
KiIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICByZXN1bHQgPSBNdWxJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3Jp
Z2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbkF0b20pCisgICAgICBlbHNlCisgICAgICAgIHJh
aXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgY291
bGRCZUV4cHJlc3Npb24KKyAgICBAdG9rZW5zW0BpZHhdID09ICItIiBvciBAdG9rZW5zW0BpZHhd
ID09ICJzaXplb2YiIG9yIGlzSW50ZWdlcihAdG9rZW5zW0BpZHhdKSBvciBpc1ZhcmlhYmxlKEB0
b2tlbnNbQGlkeF0pIG9yIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgIGVuZAorICAKKyAgZGVmIHBh
cnNlRXhwcmVzc2lvbgorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNz
aW9uTXVsCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKyIgb3IgQHRva2Vuc1tAaWR4XSA9
PSAiLSIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIisiCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICByZXN1bHQgPSBBZGRJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2Rl
T3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkKKyAgICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gIi0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBTdWJJbW1l
ZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhw
cmVzc2lvbk11bCkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVu
ZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZU9wZXJhbmQoY29tbWVudCkKKyAg
ICBpZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgICAgZXhwciA9IHBhcnNlRXhwcmVzc2lvbgorICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgICAgcGFyc2VBZGRyZXNzKGV4cHIpCisg
ICAgICBlbHNlCisgICAgICAgIGV4cHIKKyAgICAgIGVuZAorICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gIlsiCisgICAgICBwYXJzZUFkZHJlc3MoSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4sIDApKQorICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAg
cmVzdWx0ID0gTGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgTGFi
ZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5n
KSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNMb2NhbExhYmVs
IEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgTG9jYWxMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAxCisgICAg
ICByZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yKGNvbW1lbnQpCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICBza2lwTmV3TGluZQorICAg
IGNvbnN1bWUoL1xBXChcWi8pCisgICAgdmFyaWFibGVzID0gW10KKyAgICBsb29wIHsKKyAgICAg
IHNraXBOZXdMaW5lCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0Bp
ZHhdKQorICAgICAgICB2YXJpYWJsZXMgPDwgVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0Bp
ZHhdID09ICIsIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAg
cGFyc2VFcnJvcgorICAgICAgICBlbmQKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvcgor
ICAgICAgZW5kCisgICAgfQorICAgIHZhcmlhYmxlcworICBlbmQKKyAgCisgIGRlZiBwYXJzZVNl
cXVlbmNlKGZpbmFsLCBjb21tZW50KQorICAgIGZpcnN0Q29kZU9yaWdpbiA9IEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbgorICAgIGxpc3QgPSBbXQorICAgIGxvb3AgeworICAgICAgaWYgKEBpZHgg
PT0gQHRva2Vucy5sZW5ndGggYW5kIG5vdCBmaW5hbCkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0Bp
ZHhdID1+IGZpbmFsKQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9
PSAiXG4iCisgICAgICAgICMgaWdub3JlCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzaWYg
QHRva2Vuc1tAaWR4XSA9PSAiY29uc3QiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJz
ZUVycm9yIHVubGVzcyBpc1ZhcmlhYmxlIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgdmFyaWFibGUg
PSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4
XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBA
dG9rZW5zW0BpZHhdID09ICI9IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFsdWUgPSBw
YXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBjb25zdCAje3ZhcmlhYmxlLm5hbWV9IikKKyAg
ICAgICAgbGlzdCA8PCBDb25zdERlY2wubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgdmFy
aWFibGUsIHZhbHVlKQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZXJyb3IiCisgICAg
ICAgIGxpc3QgPDwgRXJyb3IubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbikKKyAgICAgICAg
QGlkeCArPSAxCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJpZiIKKyAgICAgICAgY29k
ZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAg
ICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICBpZlRoZW5FbHNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGljYXRl
LCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBpbnNp
ZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAgIGxpc3QgPDwgaWZUaGVu
RWxzZQorICAgICAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJlbHNpZiIKKyAgICAgICAgICBj
b2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgQGlkeCArPSAx
CisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRp
Y2F0ZQorICAgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgICBz
a2lwTmV3TGluZQorICAgICAgICAgIGVsc2VDYXNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdp
biwgcHJlZGljYXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlcWi8s
ICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAgICAg
aWZUaGVuRWxzZS5lbHNlQ2FzZSA9IGVsc2VDYXNlCisgICAgICAgICAgaWZUaGVuRWxzZSA9IGVs
c2VDYXNlCisgICAgICAgIGVuZAorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJlbHNlIgor
ICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBwYXJz
ZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBlbHNlIGNhc2UgZm9yIFwiaWYg
I3twcmVkaWNhdGUuZHVtcH1cIiIpCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UK
KyAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJlbmQiCisgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9
PSAibWFjcm8iCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4K
KyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIHBhcnNlRXJy
b3IgdW5sZXNzIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICBuYW1lID0gQHRv
a2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhcmlhYmxlcyA9
IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5k
XFovLCAid2hpbGUgaW5zaWRlIG9mIG1hY3JvICN7bmFtZX0iKQorICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgbGlzdCA8PCBNYWNyby5uZXcoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBi
b2R5KQorICAgICAgZWxzaWYgaXNJbnN0cnVjdGlvbiBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNv
ZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tl
bnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBpZiAobm90IGZpbmFs
IGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+
IGZpbmFsKQorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLCBhbmQgaXQncyB0
aGUgbGFzdCBvbmUuCisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdp
biwgbmFtZSwgW10pCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4
XSA9PSAiXG4iCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24uCisgICAgICAg
ICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICAjIEl0J3MgZGVmaW5pdGVseSBh
biBpbnN0cnVjdGlvbiwgYW5kIGl0IGhhcyBhdCBsZWFzdCBvbmUgb3BlcmFuZC4KKyAgICAgICAg
ICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9IGZhbHNlCisgICAgICAg
ICAgbG9vcCB7CisgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGlu
c2lkZSBvZiBpbnN0cnVjdGlvbiAje25hbWV9IikKKyAgICAgICAgICAgIGlmIChub3QgZmluYWwg
YW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4g
ZmluYWwpCisgICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24gYW5kIG9m
IHRoZSBzZXF1ZW5jZS4KKyAgICAgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9IHRydWUKKyAgICAg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisg
ICAgICAgICAgICAgICMgSGFzIGFub3RoZXIgb3BlcmFuZC4KKyAgICAgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAg
ICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbi4KKyAgICAgICAgICAgICAgQGlkeCArPSAx
CisgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHBh
cnNlRXJyb3IoIkV4cGVjdGVkIGEgY29tbWEsIG5ld2xpbmUsIG9yICN7ZmluYWx9IGFmdGVyICN7
b3BlcmFuZHMubGFzdC5kdW1wfSIpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICB9CisgICAg
ICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMp
CisgICAgICAgICAgaWYgZW5kT2ZTZXF1ZW5jZQorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAg
ICBlbmQKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4
XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAg
IG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
aWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgICAgICAjIE1hY3JvIGludm9jYXRpb24uCisg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgIHNr
aXBOZXdMaW5lCisgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvb3AgeworICAgICAgICAg
ICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJtYWNy
byIKKyAgICAgICAgICAgICAgICAjIEl0J3MgYSBtYWNybyBsYW1iZGEhCisgICAgICAgICAgICAg
ICAgY29kZU9yaWdpbklubmVyID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1Zh
cmlhYmxlcworICAgICAgICAgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywg
IndoaWxlIGluc2lkZSBvZiBhbm9ueW1vdXMgbWFjcm8gcGFzc2VkIGFzIGFyZ3VtZW50IHRvICN7
bmFtZX0iKQorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIG9wZXJh
bmRzIDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luSW5uZXIsIG5pbCwgdmFyaWFibGVzLCBib2R5KQor
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVy
YW5kKCJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gY2FsbCB0byAje25hbWV9IikKKyAgICAgICAgICAg
ICAgZW5kCisgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAg
ICAgYnJlYWsKKyAgICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAg
ICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHBhcnNlRXJyb3IgIlVuZXhwZWN0ZWQgI3tAdG9rZW5zW0BpZHhdLnN0cmluZy5pbnNwZWN0fSB3
aGlsZSBwYXJzaW5nIGludm9jYXRpb24gb2YgbWFjcm8gI3tuYW1lfSIKKyAgICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICB9CisgICAgICAgICAgZW5kCisgICAgICAgICAgbGlzdCA8PCBNYWNy
b0NhbGwubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAgICBlbHNlCisgICAg
ICAgICAgcGFyc2VFcnJvciAiRXhwZWN0ZWQgXCIoXCIgYWZ0ZXIgI3tuYW1lfSIKKyAgICAgICAg
ZW5kCisgICAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0gb3IgaXNMb2NhbExhYmVsIEB0
b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdp
bgorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAx
CisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIjoiCisgICAgICAg
ICMgSXQncyBhIGxhYmVsLgorICAgICAgICBpZiBpc0xhYmVsIG5hbWUKKyAgICAgICAgICBsaXN0
IDw8IExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZWxzZQorICAgICAg
ICAgIGxpc3QgPDwgTG9jYWxMYWJlbC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAg
IGVuZAorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvciAi
RXhwZWN0aW5nIHRlcm1pbmFsICN7ZmluYWx9ICN7Y29tbWVudH0iCisgICAgICBlbmQKKyAgICB9
CisgICAgU2VxdWVuY2UubmV3KGZpcnN0Q29kZU9yaWdpbiwgbGlzdCkKKyAgZW5kCitlbmQKKwor
ZGVmIHBhcnNlKHRva2VucykKKyAgcGFyc2VyID0gUGFyc2VyLm5ldyh0b2tlbnMpCisgIHBhcnNl
ci5wYXJzZVNlcXVlbmNlKG5pbCwgIiIpCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisj
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworR1BSUyA9
CisgIFsKKyAgICJ0MCIsCisgICAidDEiLAorICAgInQyIiwKKyAgICJ0MyIsCisgICAidDQiLAor
ICAgImNmciIsCisgICAiYTAiLAorICAgImExIiwKKyAgICJyMCIsCisgICAicjEiLAorICAgInNw
IiwKKyAgICJsciIKKyAgXQorCitGUFJTID0KKyAgWworICAgImZ0MCIsCisgICAiZnQxIiwKKyAg
ICJmdDIiLAorICAgImZ0MyIsCisgICAiZnQ0IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisgICAi
ZmExIiwKKyAgICJmYTIiLAorICAgImZhMyIsCisgICAiZnIiCisgIF0KKworUkVHSVNURVJTID0g
R1BSUyArIEZQUlMKKworR1BSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJTLmpv
aW4oJyl8KCcpICsgJykpXFxaJykKK0ZQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsg
RlBSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdleHAu
bmV3KCdcXEEoKCcgKyBSRUdJU1RFUlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2VsZl9oYXNoLnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw0OCBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3Jl
cXVpcmUgInBhdGhuYW1lIgorCisjCisjIHNlbGZIYXNoIC0+IFNIQTEgaGV4ZGlnZXN0CisjCisj
IFJldHVybnMgYSBoYXNoIG9mIHRoZSBvZmZsaW5lYXNtIHNvdXJjZSBjb2RlLiBUaGlzIGFsbG93
cyBkZXBlbmRlbmN5CisjIHRyYWNraW5nIGZvciBub3QganVzdCBjaGFuZ2VzIGluIGlucHV0LCBi
dXQgYWxzbyBjaGFuZ2VzIGluIHRoZSBhc3NlbWJsZXIKKyMgaXRzZWxmLgorIworCitkZWYgc2Vs
Zkhhc2gKKyAgY29udGVudHMgPSAiIgorICBteVBhdGggPSBQYXRobmFtZS5uZXcoX19GSUxFX18p
LmRpcm5hbWUKKyAgRGlyLmZvcmVhY2gobXlQYXRoKSB7CisgICAgfCBlbnRyeSB8CisgICAgaWYg
ZW50cnkgPX4gL1wucmIkLworICAgICAgY29udGVudHMgKz0gSU86OnJlYWQobXlQYXRoICsgZW50
cnkpCisgICAgZW5kCisgIH0KKyAgcmV0dXJuIERpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoY29udGVu
dHMpCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGlu
Z3MucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0
dGluZ3MucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMDUgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImJhY2tl
bmRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCisjCisjIGNvbXB1
dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIC0+IHNldHRpbmdzQ29tYmlhdGlvbnMKKyMKKyMg
Q29tcHV0ZXMgYW4gYXJyYXkgb2Ygc2V0dGluZ3MgbWFwcywgd2hlcmUgYSBzZXR0aW5ncyBtYXAg
Y29uc3RpdHV0ZXMKKyMgYSBjb25maWd1cmF0aW9uIGZvciB0aGUgYXNzZW1ibHkgY29kZSBiZWlu
ZyBnZW5lcmF0ZWQuIFRoZSBtYXAKKyMgY29udGFpbnMga2V5IHZhbHVlIHBhaXJzIHdoZXJlIGtl
eXMgYXJlIHNldHRpbmdzIG5hbWVzIChzdHJpbmdzKSBhbmQKKyMgdGhlIHZhbHVlcyBhcmUgYm9v
bGVhbnMgKHRydWUgZm9yIGVuYWJsZWQsIGZhbHNlIGZvciBkaXNhYmxlZCkuCisjCisKK2RlZiBj
b21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9
IFtdCisgIAorICBkZWYgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBt
YXBTb0ZhciwgcmVtYWluaW5nKQorICAgIGlmIHJlbWFpbmluZy5lbXB0eT8KKyAgICAgIHNldHRp
bmdzQ29tYmluYXRpb25zIDw8IG1hcFNvRmFyCisgICAgICByZXR1cm4KKyAgICBlbmQKKyAgICAK
KyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IHRy
dWUKKyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwg
cmVtYWluaW5nWzEuLi0xXSkKKyAgICAKKyAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICBu
ZXdNYXBbcmVtYWluaW5nWzBdXSA9IGZhbHNlCisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRp
bmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmluZ1sxLi4tMV0pCisgIGVuZAorICAKKyAg
c2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCB7fSwgKGFzdC5maWx0ZXIo
U2V0dGluZykudW5pcS5jb2xsZWN0e3x2fCB2Lm5hbWV9ICsgWyJYODYiLCAiQVJNdjciXSkudW5p
cSkKKyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zCitlbmQKKworIworIyBmb3JTZXR0aW5ncyhj
b25jcmV0ZVNldHRpbmdzLCBhc3QpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2
ZWxBU1QsIGJhY2tlbmQgfCAuLi4gfQorIworIyBEZXRlcm1pbmVzIGlmIHRoZSBzZXR0aW5ncyBj
b21iaW5hdGlvbiBpcyB2YWxpZCwgYW5kIGlmIHNvLCBjYWxscworIyB0aGUgYmxvY2sgd2l0aCB0
aGUgaW5mb3JtYXRpb24geW91IG5lZWQgdG8gZ2VuZXJhdGUgY29kZS4KKyMKKworZGVmIGZvclNl
dHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkKKyAgIyBDaGVjayB3aGljaCBhcmNoaXRlY3R1
cmVzIHRoaXMgY29tYmluYXRvciBjbGFpbXMgdG8gc3VwcG9ydC4KKyAgbnVtQ2xhaW1lZEJhY2tl
bmRzID0gMAorICBzZWxlY3RlZEJhY2tlbmQgPSBuaWwKKyAgQkFDS0VORFMuZWFjaCB7CisgICAg
fCBiYWNrZW5kIHwKKyAgICBpc1N1cHBvcnRlZCA9IGNvbmNyZXRlU2V0dGluZ3NbYmFja2VuZF0K
KyAgICByYWlzZSB1bmxlc3MgaXNTdXBwb3J0ZWQgIT0gbmlsCisgICAgbnVtQ2xhaW1lZEJhY2tl
bmRzICs9IGlmIGlzU3VwcG9ydGVkIHRoZW4gMSBlbHNlIDAgZW5kCisgICAgaWYgaXNTdXBwb3J0
ZWQKKyAgICAgIHNlbGVjdGVkQmFja2VuZCA9IGJhY2tlbmQKKyAgICBlbmQKKyAgfQorICAKKyAg
cmV0dXJuIGlmIG51bUNsYWltZWRCYWNrZW5kcyA+IDEKKyAgCisgICMgUmVzb2x2ZSB0aGUgQVNU
IGRvd24gdG8gYSBsb3ctbGV2ZWwgZm9ybSAobm8gbWFjcm9zIG9yIGNvbmRpdGlvbmFscykuCisg
IGxvd0xldmVsQVNUID0gYXN0LnJlc29sdmVTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzKQorICAK
KyAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIHNlbGVjdGVkQmFja2VuZAor
ZW5kCisKKyMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsKKyMgICAg
IHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9CisjCisjIGZv
ckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCBzZXR0aW5nc0NvbWJpbmF0aW9ucykg
eworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0K
KyMKKyMgRXhlY3V0ZXMgdGhlIGdpdmVuIGJsb2NrIGZvciBlYWNoIHZhbGlkIHNldHRpbmdzIGNv
bWJpbmF0aW9uIGluIHRoZQorIyBzZXR0aW5ncyBtYXAuIFRoZSBhc3QgcGFzc2VkIGludG8gdGhl
IGJsb2NrIGlzIHJlc29sdmVkCisjIChhc3QucmVzb2x2ZSkgYWdhaW5zdCB0aGUgc2V0dGluZ3Mu
CisjCisjIFRoZSBmaXJzdCBmb3JtIHdpbGwgY2FsbCBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlv
bnMoYXN0KSBmb3IgeW91LgorIworCitkZWYgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlv
bihhc3QsICpvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zKQorICByYWlzZSBpZiBvcHRpb25h
bFNldHRpbmdzQ29tYmluYXRpb25zLnNpemUgPiAxCisgIAorICBpZiBvcHRpb25hbFNldHRpbmdz
Q29tYmluYXRpb25zLmVtcHR5PworICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gY29tcHV0ZVNl
dHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgZWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRpb25z
ID0gb3B0aW9uYWxTZXR0aW5nc0NvbWJpYXRpb25zWzBdCisgIGVuZAorICAKKyAgc2V0dGluZ3ND
b21iaW5hdGlvbnMuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGlu
ZGV4IHwKKyAgICBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpIHsKKyAgICAgIHwg
Y29uY3JldGVTZXR0aW5nc18sIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICAgIHlpZWxkIGNv
bmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgIH0KKyAgfQor
ZW5kCisKKyMKKyMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisjCisjIFJldHVy
bnMgdGhlIEMrKyBjb2RlIHVzZWQgdG8gdGVzdCBpZiB3ZSBhcmUgaW4gYSBjb25maWd1cmF0aW9u
IHRoYXQKKyMgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIGNvbmNyZXRlIHNldHRpbmdzLgorIwor
CitkZWYgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICIjaWYgIiArIGNvbmNy
ZXRlU2V0dGluZ3MudG9fYS5jb2xsZWN0eworICAgIHwgcGFpciB8CisgICAgKGlmIHBhaXJbMV0K
KyAgICAgICAiIgorICAgICBlbHNlCisgICAgICAgIiEiCisgICAgIGVuZCkgKyAiT0ZGTElORV9B
U01fIiArIHBhaXJbMF0KKyAgfS5qb2luKCIgJiYgIikKK2VuZAorCisjCisjIGlzQVNURXJyb25l
b3VzKGFzdCkKKyMKKyMgVGVzdHMgdG8gc2VlIGlmIHRoZSBBU1QgY2xhaW1zIHRoYXQgdGhlcmUg
aXMgYW4gZXJyb3IgLSBpLmUuIGlmIHRoZQorIyB1c2VyJ3MgY29kZSwgYWZ0ZXIgc2V0dGluZ3Mg
cmVzb2x1dGlvbiwgaGFzIEVycm9yIG5vZGVzLgorIworCitkZWYgaXNBU1RFcnJvbmVvdXMoYXN0
KQorICBub3QgYXN0LmZpbHRlcihFcnJvcikuZW1wdHk/CitlbmQKKworIworIyBhc3NlcnRDb25m
aWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisjCisjIEVtaXRzIGEgY2hlY2sgdGhhdCBhc3Nl
cnRzIHRoYXQgd2UncmUgdXNpbmcgdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24uCisjCisKK2RlZiBh
c3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgICRvdXRwdXQucHV0cyBjcHBT
ZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgJG91dHB1dC5wdXRzICIjZWxzZSIKKyAg
JG91dHB1dC5wdXRzICIjZXJyb3IgXCJDb25maWd1cmF0aW9uIG1pc21hdGNoLlwiIgorICAkb3V0
cHV0LnB1dHMgIiNlbmRpZiIKK2VuZAorCisjCisjIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNv
bmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdz
LCBhc3QsIGJhY2tlbmQgfCAuLi4gfQorIworIyBFbWl0cyBhbGwgcmVsZXZhbnQgZ3VhcmRzIHRv
IHNlZSBpZiB0aGUgY29uZmlndXJhdGlvbiBob2xkcyBhbmQKKyMgY2FsbHMgdGhlIGJsb2NrIGlm
IHRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBlcnJvbmVvdXMuCisjCisKK2RlZiBlbWl0Q29kZUlu
Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpCisgICRvdXRwdXQu
cHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIGlmIGlzQVNURXJy
b25lb3VzKGFzdCkKKyAgICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIkludmFsaWQgY29uZmlndXJh
dGlvbi5cIiIKKyAgZWxzaWYgbm90IFdPUktJTkdfQkFDS0VORFMuaW5jbHVkZT8gYmFja2VuZAor
ICAgICRvdXRwdXQucHV0cyAiI2Vycm9yIFwiVGhpcyBiYWNrZW5kIGlzIG5vdCBzdXBwb3J0ZWQg
eWV0LlwiIgorICBlbHNlCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5k
CisgIGVuZAorICAKKyAgJG91dHB1dC5wdXRzICIjZW5kaWYiCitlbmQKKworIworIyBlbWl0Q29k
ZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFz
dCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBFbWl0cyBndWFyZCBjb2RlcyBmb3IgYWxs
IHZhbGlkIGNvbmZpZ3VyYXRpb25zLCBhbmQgY2FsbHMgdGhlIGJsb2NrCisjIGZvciB0aG9zZSBj
b25maWd1cmF0aW9ucyB0aGF0IGFyZSB2YWxpZCBhbmQgbm90IGVycm9uZW91cy4KKyMKKworZGVm
IGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3QpCisgIGZvckVhY2hWYWxpZFNldHRpbmdz
Q29tYmluYXRpb24oYXN0KSB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwg
YmFja2VuZCwgaW5kZXggfAorICAgICRvdXRwdXQucHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3Jl
dGVTZXR0aW5ncykKKyAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFj
a2VuZCwgaW5kZXgKKyAgICAkb3V0cHV0LnB1dHMgIiNlbmRpZiIKKyAgfQorZW5kCisKKworCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3Jt
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorCisjCisjIG5vZGUucmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKQorIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2
ZSBhbnkgSWZUaGVuRWxzZSBub2RlcyBieQorIyBzdWJzdGl0dXRpbmcgY29uY3JldGUgYm9vbGVh
biB2YWx1ZXMgZm9yIGVhY2ggU2V0dGluZy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAor
ICAgICAgY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIH0KKyAgZW5kCitlbmQK
KworY2xhc3MgVHJ1ZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYK
KyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcKKyAgZGVmIHJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZXR0aW5nc1tAbmFtZV0uYXNOb2RlCisgIGVuZAorZW5k
CisKK2NsYXNzIEFuZAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVm
dC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIGFuZCBAcmlnaHQucmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE9yCisgIGRl
ZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykudmFsdWUgb3IgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUp
LmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBOb3QKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykKKyAgICAobm90IEBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVl
KS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZQorICBkZWYgcmVzb2x2ZVNl
dHRpbmdzKHNldHRpbmdzKQorICAgIGlmIEBwcmVkaWNhdGUucmVzb2x2ZVNldHRpbmdzKHNldHRp
bmdzKS52YWx1ZQorICAgICAgQHRoZW5DYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAg
ICBlbHNlCisgICAgICBAZWxzZUNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVu
ZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNl
dHRpbmdzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVt
IHwKKyAgICAgIGl0ZW0gPSBpdGVtLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgIGlm
IGl0ZW0uaXNfYT8gU2VxdWVuY2UKKyAgICAgICAgbmV3TGlzdCArPSBpdGVtLmxpc3QKKyAgICAg
IGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgU2Vx
dWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5k
ZW1hY3JvaWZ5KG1hY3JvcykKKyMgbm9kZS5zdWJzdGl0dXRlKG1hcHBpbmcpCisjCisjIGRlbWFj
cm9pZnkoKSBjb25zdHJ1Y3RzIGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IE1hY3Jv
CisjIG5vZGVzLCB3aGlsZSBzdWJzdGl0dXRlKCkgcmVwbGFjZXMgVmFyaWFibGUgbm9kZXMgd2l0
aCB0aGUgZ2l2ZW4KKyMgbm9kZXMgaW4gdGhlIG1hcHBpbmcuCisjCisKK2NsYXNzIE5vZGUKKyAg
ZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQg
fAorICAgICAgY2hpbGQuZGVtYWNyb2lmeShtYWNyb3MpCisgICAgfQorICBlbmQKKyAgCisgIGRl
ZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8
CisgICAgICBjaGlsZC5zdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgfQorICBlbmQKKyAgCisgIGRl
ZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBj
aGlsZCB8CisgICAgICBjaGlsZC5zdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgfQorICBl
bmQKK2VuZAorCitjbGFzcyBNYWNybworICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG15
TWFwcGluZyA9IHt9CisgICAgbWFwcGluZy5lYWNoX3BhaXIgeworICAgICAgfCBrZXksIHZhbHVl
IHwKKyAgICAgIHVubGVzcyBAdmFyaWFibGVzLmluY2x1ZGU/IGtleQorICAgICAgICBteU1hcHBp
bmdba2V5XSA9IHZhbHVlCisgICAgICBlbmQKKyAgICB9CisgICAgbWFwQ2hpbGRyZW4geworICAg
ICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5zdWJzdGl0dXRlKG15TWFwcGluZykKKyAgICB9Cisg
IGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisg
ICAgaWYgbWFwcGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAg
IHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbAorICBkZWYgc3Vi
c3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBp
bmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2Ns
YXNzIFNlcXVlbmNlCisgIGRlZiBzdWJzdGl0dXRlKGNvbnN0YW50cykKKyAgICBuZXdMaXN0ID0g
W10KKyAgICBteUNvbnN0YW50cyA9IGNvbnN0YW50cy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAg
ICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IENvbnN0RGVjbAorICAgICAgICBteUNv
bnN0YW50c1tpdGVtLnZhcmlhYmxlXSA9IGl0ZW0udmFsdWUuc3Vic3RpdHV0ZShteUNvbnN0YW50
cykKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtLnN1YnN0aXR1dGUobXlDb25z
dGFudHMpCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5l
d0xpc3QpCisgIGVuZAorICAKKyAgZGVmIHJlbmFtZUxhYmVscyhjb21tZW50KQorICAgIG1hcHBp
bmcgPSB7fQorICAgIAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlm
IGl0ZW0uaXNfYT8gTG9jYWxMYWJlbAorICAgICAgICBtYXBwaW5nW2l0ZW1dID0gTG9jYWxMYWJl
bC51bmlxdWUoaWYgY29tbWVudCB0aGVuIGNvbW1lbnQgKyAiXyIgZWxzZSAiIiBlbmQgKyBpdGVt
LmNsZWFuTmFtZSkKKyAgICAgIGVuZAorICAgIH0KKyAgICAKKyAgICBzdWJzdGl0dXRlTGFiZWxz
KG1hcHBpbmcpCisgIGVuZAorICAKKyAgZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAgIG15TWFj
cm9zID0gbWFjcm9zLmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAg
IGlmIGl0ZW0uaXNfYT8gTWFjcm8KKyAgICAgICAgbXlNYWNyb3NbaXRlbS5uYW1lXSA9IGl0ZW0K
KyAgICAgIGVuZAorICAgIH0KKyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAg
ICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgICMgSWdub3Jl
LgorICAgICAgZWxzaWYgaXRlbS5pc19hPyBNYWNyb0NhbGwKKyAgICAgICAgbWFwcGluZyA9IHt9
CisgICAgICAgIG15TXlNYWNyb3MgPSBteU1hY3Jvcy5kdXAKKyAgICAgICAgcmFpc2UgIkNvdWxk
IG5vdCBmaW5kIG1hY3JvICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30i
IHVubGVzcyBteU1hY3Jvc1tpdGVtLm5hbWVdCisgICAgICAgIHJhaXNlICJBcmd1bWVudCBjb3Vu
dCBtaXNtYXRjaCBmb3IgY2FsbCB0byAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5T
dHJpbmd9IiB1bmxlc3MgaXRlbS5vcGVyYW5kcy5zaXplID09IG15TWFjcm9zW2l0ZW0ubmFtZV0u
dmFyaWFibGVzLnNpemUKKyAgICAgICAgaXRlbS5vcGVyYW5kcy5zaXplLnRpbWVzIHsKKyAgICAg
ICAgICB8IGlkeCB8CisgICAgICAgICAgaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IFZhcmlh
YmxlIGFuZCBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG15
TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG15TWFj
cm9zW2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jv
c1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxzaWYg
aXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IE1hY3JvCisgICAgICAgICAgICBteU15TWFjcm9zW215
TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBpdGVtLm9wZXJhbmRzW2lk
eF0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4
XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlN
YWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBuaWwKKyAgICAgICAgICAgIG1hcHBp
bmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBpdGVtLm9wZXJhbmRzW2lk
eF0KKyAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBuZXdMaXN0ICs9IG15TWFjcm9z
W2l0ZW0ubmFtZV0uYm9keS5zdWJzdGl0dXRlKG1hcHBpbmcpLmRlbWFjcm9pZnkobXlNeU1hY3Jv
cykucmVuYW1lTGFiZWxzKGl0ZW0ubmFtZSkubGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdM
aXN0IDw8IGl0ZW0uZGVtYWNyb2lmeShteU1hY3JvcykKKyAgICAgIGVuZAorICAgIH0KKyAgICBT
ZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkuc3Vic3RpdHV0ZSh7fSkKKyAgZW5kCitl
bmQKKworIworIyBub2RlLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorIworIyBDb25z
dHJ1Y3QgYSBuZXcgQVNUIHRoYXQgaGFzIG9mZnNldCB2YWx1ZXMgaW5zdGVhZCBvZiBzeW1ib2xp
YworIyBvZmZzZXRzLgorIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZz
ZXRzLCBzaXplcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNo
aWxkLnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIH0KKyAgZW5kCitlbmQKKwor
Y2xhc3MgU3RydWN0T2Zmc2V0CisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykK
KyAgICBpZiBvZmZzZXRzW3NlbGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIG9m
ZnNldHNbc2VsZl0pCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAor
CitjbGFzcyBTaXplb2YKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAg
IGlmIHNpemVzW3NlbGZdCisgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIHNpemVzW3Nl
bGZdKQorICAgIGVsc2UKKyAgICAgIHB1dHMgIkNvdWxkIG5vdCBmaW5kICN7c2VsZi5pbnNwZWN0
fSBpbiAje3NpemVzLmtleXMuaW5zcGVjdH0iCisgICAgICBwdXRzICJzaXplcyA9ICN7c2l6ZXMu
aW5zcGVjdH0iCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5m
b2xkCisjCisjIFJlc29sdmUgY29uc3RhbnQgcmVmZXJlbmNlcyBhbmQgY29tcHV0ZSBhcml0aG1l
dGljIGV4cHJlc3Npb25zLgorIworCitjbGFzcyBOb2RlCisgIGRlZiBmb2xkCisgICAgbWFwQ2hp
bGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5mb2xkCisgICAgfQorICBlbmQK
K2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVm
dC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3Mg
QGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19h
PyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICsg
QHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzCisgIGRlZiBm
b2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJpZ2h0ID0gQHJpZ2h0LmZvbGQKKyAg
ICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgcmV0dXJuIHNl
bGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVP
cmlnaW4sIEBsZWZ0LnZhbHVlIC0gQHJpZ2h0LnZhbHVlKQorICBlbmQKK2VuZAorCitjbGFzcyBN
dWxJbW1lZGlhdGVzCisgIGRlZiBmb2xkCisgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgQHJp
Z2h0ID0gQHJpZ2h0LmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1t
ZWRpYXRlCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAg
ICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIEBsZWZ0LnZhbHVlICogQHJpZ2h0LnZhbHVlKQor
ICBlbmQKK2VuZAorCitjbGFzcyBOZWdJbW1lZGlhdGUKKyAgZGVmIGZvbGQKKyAgICBAY2hpbGQg
PSBAY2hpbGQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAY2hpbGQuaXNfYT8gSW1tZWRp
YXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtQGNoaWxkLnZhbHVlKQorICBlbmQK
K2VuZAorCisjCisjIG5vZGUucmVzb2x2ZUFmdGVyU2V0dGluZ3Mob2Zmc2V0cywgc2l6ZXMpCisj
CisjIENvbXBpbGUgYXNzZW1ibHkgYWdhaW5zdCBhIHNldCBvZiBvZmZzZXRzLgorIworCitjbGFz
cyBOb2RlCisgIGRlZiByZXNvbHZlKG9mZnNldHMsIHNpemVzKQorICAgIGRlbWFjcm9pZnkoe30p
LnJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKS5mb2xkCisgIGVuZAorZW5kCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjc5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitjbGFz
cyBSZWdpc3RlcklECisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIGNhc2UgbmFtZQorICAg
IHdoZW4gInQwIiwgImEwIiwgInIwIiwgInQxIiwgImExIiwgInIxIiwgInQyIiwgInQzIgorICAg
ICAgdHJ1ZQorICAgIHdoZW4gInQ0IiwgImNmciIKKyAgICAgIGZhbHNlCisgICAgZWxzZQorICAg
ICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAg
IGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgY2FzZSBraW5kCisg
ICAgICB3aGVuIDpieXRlCisgICAgICAgICIlYWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAg
ICIlYXgiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYXgiCisgICAgICBlbHNlCisgICAg
ICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgIGNh
c2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWRsIgorICAgICAgd2hlbiA6aGFs
ZgorICAgICAgICAiJWR4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWR4IgorICAgICAg
ZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDIiCisgICAgICBjYXNl
IGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVjbCIKKyAgICAgIHdoZW4gOmhhbGYK
KyAgICAgICAgIiVjeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVjeCIKKyAgICAgIGVs
c2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQzIgorICAgICAgY2FzZSBr
aW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlYmwiCisgICAgICB3aGVuIDpoYWxmCisg
ICAgICAgICIlYngiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlYngiCisgICAgICBlbHNl
CisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0NCIKKyAgICAgIGNhc2Uga2lu
ZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAg
ICAgICAgIiVzaSIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzaSIKKyAgICAgIGVsc2UK
KyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gImNmciIKKyAgICAgIGNhc2Uga2lu
ZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWRpbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAg
ICAgICAgIiVkaSIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkaSIKKyAgICAgIGVsc2UK
KyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInNwIgorICAgICAgY2FzZSBraW5k
CisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlc3BsIgorICAgICAgd2hlbiA6aGFsZgorICAg
ICAgICAiJXNwIgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZXNwIgorICAgICAgZWxzZQor
ICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgcmFpc2UgIkJhZCByZWdp
c3RlciAje25hbWV9IGZvciBYODYgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKyAg
ZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQp
fSIKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgIGRlZiB4ODZPcGVyYW5kKGtp
bmQpCisgICAgcmFpc2UgdW5sZXNzIGtpbmQgPT0gOmRvdWJsZQorICAgIGNhc2UgbmFtZQorICAg
IHdoZW4gImZ0MCIsICJmYTAiLCAiZnIiCisgICAgICAiJXhtbTAiCisgICAgd2hlbiAiZnQxIiwg
ImZhMSIKKyAgICAgICIleG1tMSIKKyAgICB3aGVuICJmdDIiLCAiZmEyIgorICAgICAgIiV4bW0y
IgorICAgIHdoZW4gImZ0MyIsICJmYTMiCisgICAgICAiJXhtbTMiCisgICAgd2hlbiAiZnQ0Igor
ICAgICAgIiV4bW00IgorICAgIHdoZW4gImZ0NSIKKyAgICAgICIleG1tNSIKKyAgICBlbHNlCisg
ICAgICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIFg4NiBhdCAje2NvZGVPcmlnaW5T
dHJpbmd9IgorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAg
Iioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAg
ZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiJCN7dmFsdWV9IgorICBlbmQKKyAgZGVmIHg4NkNh
bGxPcGVyYW5kKGtpbmQpCisgICAgIiN7dmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBBZGRy
ZXNzCisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRl
ZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFu
ZCg6aW50KX0pIgorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4
Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgZGVmIHN1
cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQo
a2luZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSwgI3tp
bmRleC54ODZPcGVyYW5kKDppbnQpfSwgI3tzY2FsZX0pIgorICBlbmQKKworICBkZWYgeDg2Q2Fs
bE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2b3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisK
K2NsYXNzIEFic29sdXRlQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVl
CisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje2FkZHJlc3MudmFs
dWV9IgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7YWRkcmVz
cy52YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgIGRlZiB4ODZD
YWxsT3BlcmFuZChraW5kKQorICAgIGFzbUxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2Fs
TGFiZWxSZWZlcmVuY2UKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgYXNtTGFiZWwK
KyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24KKyAgZGVmIHg4Nk9wZXJhbmRzKCpraW5k
cykKKyAgICByYWlzZSB1bmxlc3Mga2luZHMuc2l6ZSA9PSBvcGVyYW5kcy5zaXplCisgICAgcmVz
dWx0ID0gW10KKyAgICBraW5kcy5zaXplLnRpbWVzIHsKKyAgICAgIHwgaWR4IHwKKyAgICAgIHJl
c3VsdCA8PCBvcGVyYW5kc1tpZHhdLng4Nk9wZXJhbmQoa2luZHNbaWR4XSkKKyAgICB9CisgICAg
cmVzdWx0LmpvaW4oIiwgIikKKyAgZW5kCisKKyAgZGVmIHg4NlN1ZmZpeChraW5kKQorICAgIGNh
c2Uga2luZAorICAgIHdoZW4gOmJ5dGUKKyAgICAgICJiIgorICAgIHdoZW4gOmhhbGYKKyAgICAg
ICJ3IgorICAgIHdoZW4gOmludAorICAgICAgImwiCisgICAgd2hlbiA6ZG91YmxlCisgICAgICAi
c2QiCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFu
ZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBudW1PcGVyYW5kcykKKyAgICBp
ZiBudW1PcGVyYW5kcyA9PSAzCisgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQor
ICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2lu
ZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzaWYgb3BlcmFu
ZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQp
fSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJtb3Yje3g4NlN1ZmZpeChraW5kKX0g
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5k
KGtpbmQpfSIKKyAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVu
ZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5k
CisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wKG9wY29kZSwga2luZCkKKyAgICBoYW5kbGVY
ODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUpCisgIGVuZAor
ICAKKyAgZGVmIGhhbmRsZVg4NlNoaWZ0KG9wY29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5kc1sw
XS5pc19hPyBJbW1lZGlhdGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0ZXJJRC5mb3JOYW1lKG5p
bCwgInQyIikKKyAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UK
KyAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwg
JWVjeCIKKyAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICVjbCwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDppbnQpfSwgJWVjeCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2
RG91YmxlQnJhbmNoKGJyYW5jaE9wY29kZSwgbW9kZSkKKyAgICBjYXNlIG1vZGUKKyAgICB3aGVu
IDpub3JtYWwKKyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdo
ZW4gOnJldmVyc2UKKyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAg
IGVsc2UKKyAgICAgIHJhaXNlIG1vZGUuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAi
I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICBlbmQKKyAgCisgIGRl
ZiBoYW5kbGVYODZJbnRDb21wYXJlKG9wY29kZVN1ZmZpeCwga2luZCkKKyAgICBpZiBvcGVyYW5k
c1swXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDAgYW5kIG9wZXJh
bmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9yIG9wY29k
ZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzaWYgb3BlcmFuZHNbMV0u
aXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1sxXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1sw
XS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZm
aXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAidGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAi
Y21wI3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVm
IGhhbmRsZVg4NkludEJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50
Q29tcGFyZShicmFuY2hPcGNvZGVbMS4uLTFdLCBraW5kKQorICAgICRhc20ucHV0cyAiI3ticmFu
Y2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5k
bGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kKQorICAgIGlmIG9wZXJhbmQuc3VwcG9ydHM4Qml0
T25YODYKKyAgICAgICRhc20ucHV0cyAiI3tzZXRPcGNvZGV9ICN7b3BlcmFuZC54ODZPcGVyYW5k
KDpieXRlKX0iCisgICAgICAkYXNtLnB1dHMgIm1vdnpibCAje29wZXJhbmQueDg2T3BlcmFuZCg6
Ynl0ZSl9LCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgJGFz
bS5wdXRzICJ4Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgICAk
YXNtLnB1dHMgIiN7c2V0T3Bjb2RlfSAlYWwiCisgICAgICAkYXNtLnB1dHMgIm1vdnpibCAlYWws
ICVlYXgiCisgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQp
fSwgJWVheCIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29tcGFyZVNl
dChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2SW50Q29tcGFyZShzZXRPcGNvZGVbMy4u
LTFdLCBraW5kKQorICAgIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmRzWzJdKQorICBl
bmQKKyAgCisgIGRlZiBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgdmFsdWUgPSBvcGVyYW5kc1sw
XQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gMgorICAgICAgbWFzayA9IEltbWVk
aWF0ZS5uZXcoY29kZU9yaWdpbiwgLTEpCisgICAgd2hlbiAzCisgICAgICBtYXNrID0gb3BlcmFu
ZHNbMV0KKyAgICBlbHNlCisgICAgICByYWlzZSAiRXhwZWN0ZWQgMiBvciAzIG9wZXJhbmRzLCBi
dXQgZ290ICN7b3BlcmFuZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQK
KyAgICAKKyAgICBpZiBtYXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQor
ICAgICAgaWYgdmFsdWUuaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgInRlc3Qj
e3g4NlN1ZmZpeChraW5kKX0gI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJjbXAje3g4NlN1
ZmZpeChraW5kKX0gJDAsICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAg
ICBlbHNlCisgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3ttYXNrLng4
Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBl
bmQKKyAgCisgIGRlZiBoYW5kbGVYODZCcmFuY2hUZXN0KGJyYW5jaE9wY29kZSwga2luZCkKKyAg
ICBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tv
cGVyYW5kcy5sYXN0LmFzbUxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0VGVz
dChzZXRPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgIGhhbmRsZVg4
NlNldChzZXRPcGNvZGUsIG9wZXJhbmRzLmxhc3QpCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4
Nk9wQnJhbmNoKG9wY29kZSwgYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0
aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgY2FzZSBv
cGVyYW5kcy5zaXplCisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbM10K
KyAgICB3aGVuIDMKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVsc2UKKyAg
ICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiI3ticmFuY2hP
cGNvZGV9ICN7anVtcFRhcmdldC5hc21MYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4
NlN1YkJyYW5jaChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSA0
IGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgJGFzbS5wdXRzICJuZWdsICN7
b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgImFkZGwgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICBlbHNlCisgICAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcygic3ViI3t4
ODZTdWZmaXgoa2luZCl9Iiwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgZW5kCisgICAg
Y2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiA0CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFu
ZHNbM10KKyAgICB3aGVuIDMKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgIGVs
c2UKKyAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgIGVuZAorICAgICRhc20ucHV0cyAiI3ti
cmFuY2hPcGNvZGV9ICN7anVtcFRhcmdldC5hc21MYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGxv
d2VyWDg2CisgICAgJGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICBjYXNlIG9wY29k
ZQorICAgIHdoZW4gImFkZGkiLCAiYWRkcCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBh
bmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVy
YW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sy
XS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAg
ICAgICAgICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICRh
c20ucHV0cyAibW92bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRz
WzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAg
ICAgICAgJGFzbS5wdXRzICJsZWFsICN7b3BlcmFuZHNbMF0udmFsdWV9KCN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAg
ICAgICBlbmQKKyAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0u
aXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8g
UmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0
ZXJJRAorICAgICAgICAkYXNtLnB1dHMgImxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5l
dyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgJGFzbS5wdXRzICJhZGRsICN7eDg2
T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgICBlbmQKKyAgICAgIGVuZAorICAgIHdoZW4g
ImFuZGkiLCAiYW5kcCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJhbmRsIiwgOmludCkKKyAgICB3aGVu
ICJsc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNhbGwiLCA6aW50KQorICAgIHdoZW4g
Im11bGkiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/
IEltbWVkaWF0ZQorICAgICAgICAkYXNtLnB1dHMgImltdWxsICN7eDg2T3BlcmFuZHMoOmludCwg
OmludCwgOmludCl9IgorICAgICAgZWxzZQorICAgICAgICAjIEZJWE1FOiBjb3VsZCBkbyBzb21l
IHBlZXBob2xlIGluIGNhc2UgdGhlIGxlZnQgb3BlcmFuZCBpcyBpbW1lZGlhdGUgYW5kIGl0J3MK
KyAgICAgICAgIyBhIHBvd2VyIG9mIHR3by4KKyAgICAgICAgaGFuZGxlWDg2T3AoImltdWxsIiwg
OmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gIm5lZ2kiCisgICAgICAkYXNtLnB1dHMgIm5lZ2wg
I3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAibm90aSIKKyAgICAgICRhc20ucHV0cyAi
bm90bCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAg
aGFuZGxlWDg2T3AoIm9ybCIsIDppbnQpCisgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgIGhhbmRs
ZVg4NlNoaWZ0KCJzYXJsIiwgOmludCkKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgIGhhbmRs
ZVg4NlNoaWZ0KCJzaHJsIiwgOmludCkKKyAgICB3aGVuICJzdWJpIiwgInN1YnAiCisgICAgICBp
ZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAg
ICAgICRhc20ucHV0cyAibmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAg
ICAgICAkYXNtLnB1dHMgImFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgaGFuZGxl
WDg2T3AoInN1YmwiLCA6aW50KQorICAgICAgZW5kCisgICAgd2hlbiAieG9yaSIsICJ4b3JwIgor
ICAgICAgaGFuZGxlWDg2T3AoInhvcmwiLCA6aW50KQorICAgIHdoZW4gImxvYWRpIiwgInN0b3Jl
aSIsICJsb2FkcCIsICJzdG9yZXAiCisgICAgICAkYXNtLnB1dHMgIm1vdmwgI3t4ODZPcGVyYW5k
cyg6aW50LCA6aW50KX0iCisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNtLnB1dHMgIm1vdnpi
bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICB3aGVuICJsb2FkYnMiCisgICAgICAkYXNtLnB1dHMgIm1vdnNibCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICB3aGVuICJsb2FkaCIKKyAgICAgICRhc20ucHV0cyAibW92endsICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgIHdoZW4gImxvYWRocyIKKyAgICAgICRhc20ucHV0cyAibW92c3dsICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAibW92YiAje3g4Nk9wZXJhbmRz
KDpieXRlLCA6Ynl0ZSl9IgorICAgIHdoZW4gImxvYWRkIiwgIm1vdmVkIiwgInN0b3JlZCIKKyAg
ICAgICRhc20ucHV0cyAibW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisg
ICAgd2hlbiAiYWRkZCIKKyAgICAgICRhc20ucHV0cyAiYWRkc2QgI3t4ODZPcGVyYW5kcyg6ZG91
YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAiZGl2ZCIKKyAgICAgICRhc20ucHV0cyAiZGl2c2Qg
I3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3ViZCIKKyAgICAg
ICRhc20ucHV0cyAic3Vic2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAg
d2hlbiAibXVsZCIKKyAgICAgICRhc20ucHV0cyAibXVsc2QgI3t4ODZPcGVyYW5kcyg6ZG91Ymxl
LCA6ZG91YmxlKX0iCisgICAgd2hlbiAic3FydGQiCisgICAgICAkYXNtLnB1dHMgInNxcnRzZCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImNpMmQiCisgICAgICAkYXNtLnB1dHMgImN2dHNpMnNk
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiYmRlcSIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxM
YWJlbC51bmlxdWUoImJkZXEiKQorICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0iCisgICAgICAkYXNtLnB1dHMgImpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4s
IGlzVW5vcmRlcmVkKS5hc21MYWJlbH0iCisgICAgICAkYXNtLnB1dHMgImplICN7TGFiZWxSZWZl
cmVuY2UubmV3KGNvZGVPcmlnaW4sIG9wZXJhbmRzWzJdKS5hc21MYWJlbH0iCisgICAgICBpc1Vu
b3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICB3aGVuICJiZG5lcSIKKyAgICAgIGhhbmRsZVg4NkRv
dWJsZUJyYW5jaCgiam5lIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGd0IgorICAgICAgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKCJqYSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRndGVxIgorICAgICAg
aGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYWUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHQiCisg
ICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRs
dGVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYWUiLCA6cmV2ZXJzZSkKKyAgICB3
aGVuICJiZGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImplIiwgOm5vcm1hbCkK
KyAgICB3aGVuICJiZG5lcXVuIgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1
ZSgiYmRuZXF1biIpCisgICAgICBpc0VxdWFsID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4i
KQorICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91
YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1
dHMgImpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS5hc21M
YWJlbH0iCisgICAgICAkYXNtLnB1dHMgImplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmln
aW4sIGlzRXF1YWwpLmFzbUxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQor
ICAgICAgJGFzbS5wdXRzICJqbXAgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICBpc0Vx
dWFsLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkZ3R1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJs
ZUJyYW5jaCgiamIiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAgIGhhbmRs
ZVg4NkRvdWJsZUJyYW5jaCgiamJlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRsdHVuIgorICAg
ICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRsdGVx
dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3JtYWwpCisgICAgd2hl
biAiYnRkMmkiCisgICAgICAkYXNtLnB1dHMgImN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
JGFzbS5wdXRzICJjbXBsICQweDgwMDAwMDAwICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgICAkYXNtLnB1dHMgImplICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdo
ZW4gInRkMmkiCisgICAgICAkYXNtLnB1dHMgImN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdo
ZW4gImJjZDJpIgorICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
ICRhc20ucHV0cyAidGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiamUgI3tvcGVyYW5k
c1syXS5hc21MYWJlbH0iCisgICAgICAkYXNtLnB1dHMgImN2dHNpMnNkICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJq
cCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiam5lICN7b3BlcmFu
ZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gIm1vdmR6IgorICAgICAgJGFzbS5wdXRzICJ4b3Jw
ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gInBvcCIKKyAgICAgICRhc20ucHV0cyAicG9wICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicHVzaCIKKyAgICAgICRh
c20ucHV0cyAicHVzaCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4g
Im1vdmUiLCAic3hpMnAiLCAienhpMnAiCisgICAgICBpZiBJbW1lZGlhdGUubmV3KG5pbCwgMCkg
PT0gb3BlcmFuZHNbMF0gYW5kIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAg
JGFzbS5wdXRzICJ4b3JsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNpZiBvcGVyYW5kc1swXSAhPSBvcGVy
YW5kc1sxXQorICAgICAgICAkYXNtLnB1dHMgIm1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50
KX0iCisgICAgICBlbmQKKyAgICB3aGVuICJub3AiCisgICAgICAkYXNtLnB1dHMgIm5vcCIKKyAg
ICB3aGVuICJiaWVxIiwgImJwZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmlu
dCkKKyAgICB3aGVuICJiaW5lcSIsICJicG5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgi
am5lIiwgOmludCkKKyAgICB3aGVuICJiaWEiLCAiYnBhIgorICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqYSIsIDppbnQpCisgICAgd2hlbiAiYmlhZXEiLCAiYnBhZXEiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImphZSIsIDppbnQpCisgICAgd2hlbiAiYmliIiwgImJwYiIKKyAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiamIiLCA6aW50KQorICAgIHdoZW4gImJpYmVxIiwgImJwYmVxIgor
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6aW50KQorICAgIHdoZW4gImJpZ3QiLCAi
YnBndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamciLCA6aW50KQorICAgIHdoZW4gImJp
Z3RlcSIsICJicGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnZSIsIDppbnQpCisg
ICAgd2hlbiAiYmlsdCIsICJicGx0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDpp
bnQpCisgICAgd2hlbiAiYmlsdGVxIiwgImJwbHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamxlIiwgOmludCkKKyAgICB3aGVuICJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqZSIsIDpieXRlKQorICAgIHdoZW4gImJibmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqbmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImphIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImphZSIsIDpieXRlKQorICAgIHdoZW4gImJiYiIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgi
amIiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgi
amJlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJndCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgi
amciLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpnZSIsIDpieXRlKQorICAgIHdoZW4gImJibHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpsIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqbHRlcSIsIDpieXRlKQorICAgIHdoZW4gImJ0aW8iLCAiYnRwbyIKKyAgICAgIGhhbmRsZVg4
NkJyYW5jaFRlc3QoImpvIiwgOmludCkKKyAgICB3aGVuICJidGlzIiwgImJ0cHMiCisgICAgICBo
YW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDppbnQpCisgICAgd2hlbiAiYnRpeiIsICJidHB6Igor
ICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6aW50KQorICAgIHdoZW4gImJ0aW56Iiwg
ImJ0cG56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmludCkKKyAgICB3aGVu
ICJidGJvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6Ynl0ZSkKKyAgICB3aGVu
ICJidGJzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6Ynl0ZSkKKyAgICB3aGVu
ICJidGJ6IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6Ynl0ZSkKKyAgICB3aGVu
ICJidGJueiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDpieXRlKQorICAgIHdo
ZW4gImptcCIKKyAgICAgICRhc20ucHV0cyAiam1wICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJh
bmQoOmludCl9IgorICAgIHdoZW4gImJhZGRpbyIsICJiYWRkcG8iCisgICAgICBoYW5kbGVYODZP
cEJyYW5jaCgiYWRkbCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlzIiwgImJhZGRwcyIK
KyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJi
YWRkaXoiLCAiYmFkZHB6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianoiLCA6
aW50KQorICAgIHdoZW4gImJhZGRpbnoiLCAiYmFkZHBueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJh
bmNoKCJhZGRsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlvIgorICAgICAgaGFuZGxl
WDg2U3ViQnJhbmNoKCJqbyIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlzIgorICAgICAgaGFuZGxl
WDg2U3ViQnJhbmNoKCJqcyIsIDppbnQpCisgICAgd2hlbiAiYnN1Yml6IgorICAgICAgaGFuZGxl
WDg2U3ViQnJhbmNoKCJqeiIsIDppbnQpCisgICAgd2hlbiAiYnN1YmlueiIKKyAgICAgIGhhbmRs
ZVg4NlN1YkJyYW5jaCgiam56IiwgOmludCkKKyAgICB3aGVuICJibXVsaW8iCisgICAgICBoYW5k
bGVYODZPcEJyYW5jaCgiaW11bGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJtdWxpcyIKKyAg
ICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm11
bGl6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImp6IiwgOmludCkKKyAgICB3
aGVuICJibXVsaW56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpueiIsIDpp
bnQpCisgICAgd2hlbiAiYm9yaW8iCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpv
IiwgOmludCkKKyAgICB3aGVuICJib3JpcyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwi
LCAianMiLCA6aW50KQorICAgIHdoZW4gImJvcml6IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2go
Im9ybCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYm9yaW56IgorICAgICAgaGFuZGxlWDg2T3BC
cmFuY2goIm9ybCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJyZWFrIgorICAgICAgJGFzbS5w
dXRzICJpbnQgJDMiCisgICAgd2hlbiAiY2FsbCIKKyAgICAgICRhc20ucHV0cyAiY2FsbCAje29w
ZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJyZXQiCisgICAgICAk
YXNtLnB1dHMgInJldCIKKyAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICBoYW5kbGVYODZJ
bnRDb21wYXJlU2V0KCJzZXRlIiwgOmludCkKKyAgICB3aGVuICJjaW5lcSIsICJjcG5lcSIKKyAg
ICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldG5lIiwgOmludCkKKyAgICB3aGVuICJjaWEi
LCAiY3BhIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YSIsIDppbnQpCisgICAg
d2hlbiAiY2lhZXEiLCAiY3BhZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRh
ZSIsIDppbnQpCisgICAgd2hlbiAiY2liIiwgImNwYiIKKyAgICAgIGhhbmRsZVg4NkludENvbXBh
cmVTZXQoInNldGIiLCA6aW50KQorICAgIHdoZW4gImNpYmVxIiwgImNwYmVxIgorICAgICAgaGFu
ZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YmUiLCA6aW50KQorICAgIHdoZW4gImNpZ3QiLCAiY3Bn
dCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGciLCA6aW50KQorICAgIHdoZW4g
ImNpZ3RlcSIsICJjcGd0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnZSIs
IDppbnQpCisgICAgd2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFy
ZVNldCgic2V0bCIsIDppbnQpCisgICAgd2hlbiAiY2lsdGVxIiwgImNwbHRlcSIKKyAgICAgIGhh
bmRsZVg4NkludENvbXBhcmVTZXQoInNldGxlIiwgOmludCkKKyAgICB3aGVuICJ0aW8iCisgICAg
ICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmludCkKKyAgICB3aGVuICJ0aXMiCisgICAgICBo
YW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmludCkKKyAgICB3aGVuICJ0aXoiCisgICAgICBoYW5k
bGVYODZTZXRUZXN0KCJzZXR6IiwgOmludCkKKyAgICB3aGVuICJ0aW56IgorICAgICAgaGFuZGxl
WDg2U2V0VGVzdCgic2V0bnoiLCA6aW50KQorICAgIHdoZW4gInRibyIKKyAgICAgIGhhbmRsZVg4
NlNldFRlc3QoInNldG8iLCA6Ynl0ZSkKKyAgICB3aGVuICJ0YnMiCisgICAgICBoYW5kbGVYODZT
ZXRUZXN0KCJzZXRzIiwgOmJ5dGUpCisgICAgd2hlbiAidGJ6IgorICAgICAgaGFuZGxlWDg2U2V0
VGVzdCgic2V0eiIsIDpieXRlKQorICAgIHdoZW4gInRibnoiCisgICAgICBoYW5kbGVYODZTZXRU
ZXN0KCJzZXRueiIsIDpieXRlKQorICAgIHdoZW4gInBlZWsiCisgICAgICAkYXNtLnB1dHMgIm1v
dmwgI3tvcGVyYW5kc1swXS52YWx1ZSAqIDR9KCVlc3ApLCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgIHdoZW4gInBva2UiCisgICAgICAkYXNtLnB1dHMgIm1vdmwgI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS52YWx1ZSAqIDR9KCVlc3Ap
IgorICAgIHdoZW4gImNkcWkiCisgICAgICAkYXNtLnB1dHMgImNkcSIKKyAgICB3aGVuICJpZGl2
aSIKKyAgICAgICRhc20ucHV0cyAiaWRpdmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQp
fSIKKyAgICB3aGVuICJmaWkyZCIKKyAgICAgICRhc20ucHV0cyAibW92ZCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9Igor
ICAgICAgJGFzbS5wdXRzICJtb3ZkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4
bW03IgorICAgICAgJGFzbS5wdXRzICJwc2xscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRz
ICJwb3IgJXhtbTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hl
biAiZmQyaWkiCisgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20u
cHV0cyAibW92c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisg
ICAgICAkYXNtLnB1dHMgInBzcmxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgIm1vdnNk
ICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImJvIgor
ICAgICAgJGFzbS5wdXRzICJqbyAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJi
cyIKKyAgICAgICRhc20ucHV0cyAianMgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hl
biAiYnoiCisgICAgICAkYXNtLnB1dHMgImp6ICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAg
IHdoZW4gImJueiIKKyAgICAgICRhc20ucHV0cyAiam56ICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9
IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQgb3Bjb2RlOiAje29wY29kZX0iCisgICAgZW5k
CisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVT
cGVjaWFsaXphdGlvbktpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKyNkZWZpbmUgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZF9oCisKK25hbWVzcGFjZSBKU0MgeworCitlbnVtIENvZGVTcGVj
aWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OworCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
aAkocmV2aXNpb24gMTA2Mjk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUg
Q29tbW9uU2xvd1BhdGhzX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkNv
ZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25IZWxwZXJzLmgiCiAj
aW5jbHVkZSAiSlNBcnJheS5oIgogCkBAIC00MSw2ICs0MiwzOCBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogbmFtZXNwYWNlIENvbW1vblNsb3dQYXRocyB7CiAKK0FMV0FZU19JTkxJTkUgRXhlY1N0YXRl
KiBhcml0eUNoZWNrRm9yKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZp
bGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBjYWxs
ZWUgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBBU1NFUlQoIWNhbGxlZS0+aXNI
b3N0RnVuY3Rpb24oKSk7CisgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5q
c0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgaW50IGFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzID0gZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMo
KTsKKworICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNl
IHNjZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgorICAgIGlm
ICghcmVnaXN0ZXJGaWxlLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKKyAg
ICAgICAgcmV0dXJuIDA7CisKKyAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CisKKyAgICAvLyBUb28gZmV3IGFyZ3Vt
ZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3Np
bmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgorICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7CisgICAg
UmVnaXN0ZXIqIHNyYyA9IGV4ZWMtPnJlZ2lzdGVycygpOworICAgIFJlZ2lzdGVyKiBkc3QgPSBl
eGVjLT5yZWdpc3RlcnMoKSArIGRlbHRhOworCisgICAgaW50IGk7CisgICAgaW50IGVuZCA9IC1F
eGVjU3RhdGU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7CisgICAgZm9y
IChpID0gLTE7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKKworICAg
IGVuZCAtPSBkZWx0YTsKKyAgICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtp
XSA9IGpzVW5kZWZpbmVkKCk7CisKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBFeGVjU3RhdGU6
OmNyZWF0ZShkc3QpOworICAgIEFTU0VSVCgodm9pZCopbmV3RXhlYyA8PSByZWdpc3RlckZpbGUt
PmVuZCgpKTsKKyAgICByZXR1cm4gbmV3RXhlYzsKK30KKwogQUxXQVlTX0lOTElORSBib29sIG9w
SW5zdGFuY2VPZlNsb3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlLCBKU1ZhbHVlIGJh
c2VWYWwsIEpTVmFsdWUgcHJvdG8pCiB7CiAgICAgQVNTRVJUKCF2YWx1ZS5pc0NlbGwoKSB8fCAh
YmFzZVZhbC5pc0NlbGwoKSB8fCAhcHJvdG8uaXNDZWxsKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxMDYyOTcpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCisjaW5jbHVkZSAiRXhl
Y3V0aW9uSGFybmVzcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1ZGUgIkpJVERyaXZlci5o
IgogI2luY2x1ZGUgIlBhcnNlci5oIgpAQCAtODQsNyArODUsNyBAQCBJbnRyaW5zaWMgTmF0aXZl
RXhlY3V0YWJsZTo6aW50cmluc2ljKCkgCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogc3RhdGljIHZv
aWQgamV0dGlzb25Db2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8VD4m
IGNvZGVCbG9jaykKIHsKLSAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgIT0gSklU
Q29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQo
Y29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQoY29kZUJsb2NrLT5hbHRlcm5h
dGl2ZSgpKTsKICAgICBPd25QdHI8VD4gY29kZUJsb2NrVG9KZXR0aXNvbiA9IGNvZGVCbG9jay5y
ZWxlYXNlKCk7CiAgICAgY29kZUJsb2NrID0gc3RhdGljX3BvaW50ZXJfY2FzdDxUPihjb2RlQmxv
Y2tUb0pldHRpc29uLT5yZWxlYXNlQWx0ZXJuYXRpdmUoKSk7CkBAIC0xNjcsOSArMTY4LDMwIEBA
IEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXoKICAgICByZXR1cm4gZXJy
b3I7CiB9CiAKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUo
Z2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpi
b3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQor
CitpbmxpbmUgY29uc3QgY2hhciogc2FtcGxpbmdEZXNjcmlwdGlvbihKSVRDb2RlOjpKSVRUeXBl
IGppdFR5cGUpCit7CisgICAgc3dpdGNoIChqaXRUeXBlKSB7CisgICAgY2FzZSBKSVRDb2RlOjpJ
bnRlcnByZXRlclRodW5rOgorICAgICAgICByZXR1cm4gIkludGVycHJldGVyIENvbXBpbGF0aW9u
IChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6QmFzZWxpbmVKSVQ6CisgICAgICAgIHJldHVy
biAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpERkdK
SVQ6CisgICAgICAgIHJldHVybiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGRlZmF1
bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9Cit9CisKIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNT
dGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRU
eXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlw
ZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwp
IiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFC
TEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTIxMCw3ICsyMzIsNyBAQCBK
U09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hCiAgICAgfQogCiAjaWYgRU5B
QkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRhLCBt
X2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJl
cGFyZUZvckV4ZWN1dGlvbigqZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVG
b3JDYWxsLCBqaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtMjk1LDkg
KzMxNywxNSBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpCiAgICAg
cmV0dXJuIGVycm9yOwogfQogCit2b2lkIFByb2dyYW1FeGVjdXRhYmxlOjpqaXRDb21waWxlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJ
ZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9y
Q2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0KTsKK30KKwogSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50
ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJ
VENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1Jl
Z2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0
aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdS
ZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAg
CiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtMzM2LDcg
KzM2NCw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGUKICAgICB9
CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoKmds
b2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkp
CisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKCpnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2Rl
QmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKICNl
bmRpZgogCkBAIC00MTIsNyArNDQwLDcgQEAgRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6YgogICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAgIHJl
c3VsdCA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4ocmVzdWx0LT5hbHRlcm5hdGl2
ZSgpKTsKICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBl
KCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2Vs
aW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
QEAgLTQzOCw2ICs0NjYsMTggQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGls
ZU9wdAogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6Ompp
dENvbXBpbGVGb3JDYWxsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJl
c3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2Rl
QmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5
Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNT
RVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxl
OjpqaXRDb21waWxlRm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAg
ICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0
YSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRD
b2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJv
dHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisK
IEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja1dpdGhCeXRl
Y29kZUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgRnVuY3Rpb25Db2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKGtpbmQpOwpAQCAtNDgyLDcg
KzUyMiw3IEBAIFBhc3NPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+IEZ1bmN0aW9uRXgKIAogSlNP
YmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbChFeGVjU3Rh
dGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlw
ZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUg
PT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIg
OiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGlu
Z1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxF
KEpJVCkKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC01MDQsNyArNTQ0LDcgQEAgSlNPYmpl
Y3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBt
X2NvZGVCbG9ja0ZvckNhbGwtPnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklU
KQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9iYWxE
YXRhKCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9y
Q2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBpZiAoIXBy
ZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2Nr
Rm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNr
LCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9yQ2FsbCkpCiAgICAgICAgIHJldHVybiAw
OwogI2VuZGlmCiAKQEAgLTUyNCw3ICs1NjQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRh
YmxlOjpjb21waWxlRm9yCiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVG
b3JDb25zdHJ1Y3RJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29w
ZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVn
aW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFz
ZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsK
KyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGpp
dFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlw
ZSk7CkBAIC01NDYsNyArNTg2LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29t
cGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdC0+c2hh
cmVkU3ltYm9sVGFibGUoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxl
RnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JD
b25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0
aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZ1
bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDb25z
dHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFy
aXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENvZGVGb3JDb25zdHJ1Y3QpKQogICAg
ICAgICByZXR1cm4gMDsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxMDYyOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcg
QEAKICNkZWZpbmUgRXhlY3V0YWJsZV9oCiAKICNpbmNsdWRlICJDYWxsRGF0YS5oIgorI2luY2x1
ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5oIgpAQCAtMzksMTIgKzQw
LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIERlYnVnZ2VyOwogICAgIGNsYXNzIEV2
YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7CisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xh
c3MgU2NvcGVDaGFpbk5vZGU7CiAKICAgICBzdHJ1Y3QgRXhjZXB0aW9uSW5mbzsKICAgICAKLSAg
ICBlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0
cnVjdCB9OwogICAgIGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxhdGlvbiwgT3B0
aW1pemluZ0NvbXBpbGF0aW9uIH07CiAKICAgICBpbmxpbmUgYm9vbCBpc0NhbGwoQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQpAQCAtMzE5LDYgKzMyMCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIH07CiAKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRh
YmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBw
dWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC0zMzgs
NiArMzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAg
ICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAg
ICB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBFdmFs
Q29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC0zODQsNiArMzg3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlIDogcHVibGlj
IFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJh
c2U7CiAKQEAgLTQxMSw2ICs0MTUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYg
RU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGUoSlNHbG9iYWxE
YXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShKU0dsb2JhbERhdGEmKTsKICNlbmRpZgog
CiAgICAgICAgIFByb2dyYW1Db2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkKQEAgLTQ1Myw2
ICs0NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJs
ZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsK
KyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6
CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC01MDgsNiArNTE0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAg
IHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ2FsbChKU0dsb2JhbERhdGEmKTsKKyAgICAg
ICAgdm9pZCBqaXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAg
ICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDYWxsKCkgY29uc3QKQEAgLTUzNSw2ICs1NDIsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBq
ZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRhJik7CisgICAgICAg
IHZvaWQgaml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAg
ICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3QoKSBjb25zdApAQCAtNTgyLDYgKzU5
MCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBqZXR0aXNvbk9wdGltaXpl
ZENvZGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvcihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgICAgICBqaXRDb21waWxl
Rm9yQ2FsbChnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAg
ICAgICAgIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CisgICAgICAgIH0KICNl
bmRpZgogICAgICAgICAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvcihDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRpb25IYXJuZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgRXhlY3V0aW9uSGFybmVzc19oCisjZGVmaW5lIEV4ZWN1dGlvbkhhcm5lc3NfaAorCisjaW5j
bHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoSklUKQorCisjaW5jbHVkZSAiSklU
RHJpdmVyLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCituYW1lc3BhY2UgSlND
IHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KK2lubGluZSBib29sIHByZXBh
cmVGb3JFeGVjdXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2Nr
VHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRU
eXBlKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNv
ZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50
ZXJwcmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRFbnRyeXBvaW50KGdsb2JhbERhdGEsIGNvZGVC
bG9jay5nZXQoKSwgaml0Q29kZSk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRD
b2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVJZkFwcHJv
cHJpYXRlKGdsb2JhbERhdGEsIGNvZGVCbG9jaywgaml0Q29kZSwgaml0VHlwZSk7Cit9CisKK2lu
bGluZSBib29sIHByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0
Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJl
ZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAo
SklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2Zm
IGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRGdW5jdGlv
bkVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwga2luZCwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNo
ZWNrKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRo
QXJpdHlDaGVjayk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbHNlCisgICAgVU5V
U0VEX1BBUkFNKGtpbmQpOworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKyAgICByZXR1cm4gaml0
Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENv
ZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjaywgc3ltYm9sVGFibGUsIGppdFR5cGUpOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQpCisKKyNlbmRpZiAvLyBF
eGVjdXRpb25IYXJuZXNzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDEwNjI5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNyArMTI0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJyaWVy
PFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSA9IGFkb3B0QXJyYXlQdHIobmV3IFdyaXRlQmFycmll
cjxVbmtub3duPltyZWdpc3RlckFycmF5U2l6ZV0pOwogICAgICAgICBXcml0ZUJhcnJpZXI8VW5r
bm93bj4qIHJlZ2lzdGVycyA9IHJlZ2lzdGVyQXJyYXkuZ2V0KCkgKyByZWdpc3Rlck9mZnNldDsK
LQorICAgICAgICAKICAgICAgICAgLy8gQ29weSBhbGwgYXJndW1lbnRzIHRoYXQgY2FuIGJlIGNh
cHR1cmVkIGJ5IG5hbWUgb3IgYnkgdGhlIGFyZ3VtZW50cyBvYmplY3QuCiAgICAgICAgIGZvciAo
aW50IGkgPSAwOyBpIDwgbV9udW1DYXB0dXJlZEFyZ3M7ICsraSkgewogICAgICAgICAgICAgaW50
IGluZGV4ID0gQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEwNjI5NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiAr
MjgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDog
cHVibGljIFdyaXRlQmFycmllcjxVbmtub3duPiB7CiAgICAgICAgIHR5cGVkZWYgV3JpdGVCYXJy
aWVyPFVua25vd24+IEJhc2U7CkBAIC0xMjIsNiArMTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgfTsKIAogICAgIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTA2Mjk3KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNz
IFN0cnVjdHVyZTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
UHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OworICAgIGNs
YXNzIFN0cnVjdHVyZTsKIAogICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhj
bHVkZURvbnRFbnVtUHJvcGVydGllcywKQEAgLTE2NCw2ICsxNjUsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0
KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAgICAg
ICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAgIH07CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxMDYy
OTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVu
Y3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEpTR2xv
YmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBO
YXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgbmFtZXNwYWNlIERG
RyB7CkBAIC0xNDAsNiArMTQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAog
ICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkg
Y29uc3Q7CiAKICAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0
ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMTA2Mjk3KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTQxLDYgKzE0MSw4IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2Jh
bERhdGFUeXAKICAgICAsIGtleXdvcmRzKGFkb3B0UHRyKG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAg
ICAgLCBpbnRlcnByZXRlcigwKQogICAgICwgaGVhcCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpz
QXJyYXlDbGFzc0luZm8oJkpTQXJyYXk6OnNfaW5mbykKKyAgICAsIGpzRmluYWxPYmplY3RDbGFz
c0luZm8oJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAs
IHNpemVPZkxhc3RTY3JhdGNoQnVmZmVyKDApCiAjZW5kaWYKQEAgLTIxNiw3ICsyMTgsNyBAQCBK
U0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgaml0U3R1YnMgPSBh
ZG9wdFB0cihuZXcgSklUVGh1bmtzKHRoaXMpKTsKICNlbmRpZgogCi0gICAgaW50ZXJwcmV0ZXIt
PmluaXRpYWxpemUodGhpcy0+Y2FuVXNlSklUKCkpOworICAgIGludGVycHJldGVyLT5pbml0aWFs
aXplKCZsbGludERhdGEsIHRoaXMtPmNhblVzZUpJVCgpKTsKIAogICAgIGhlYXAubm90aWZ5SXNT
YWZlVG9Db2xsZWN0KCk7CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24gMTA2Mjk3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwx
NiBAQAogI2RlZmluZSBKU0dsb2JhbERhdGFfaAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5k
ZW50YWxGdW5jdGlvbi5oIgotI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJ
bnN0YW5jZUNhY2hlLmgiCiAjaW5jbHVkZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1
ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJTdHJvbmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIK
ICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJM
TEludERhdGEuaCIKICNpbmNsdWRlICJOdW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxs
U3RyaW5ncy5oIgorI2luY2x1ZGUgIlN0cm9uZy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIK
ICNpbmNsdWRlICJUaW1lb3V0Q2hlY2tlci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAg
LTY1LDYgKzY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7
CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAgY2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xh
c3MgUGFyc2VyQXJlbmE7CiAgICAgY2xhc3MgUmVnRXhwQ2FjaGU7CkBAIC0yNDEsNiArMjQzLDEy
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1
ZSBleGNlcHRpb247CisKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xh
c3NJbmZvOworICAgICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFz
c0luZm87CisKKyAgICAgICAgTExJbnQ6OkRhdGEgbGxpbnREYXRhOworCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAg
SlNWYWx1ZSBob3N0Q2FsbFJldHVyblZhbHVlOwpAQCAtMzQ2LDYgKzM1NCw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogI3VuZGVmIHJlZ2lzdGVyVHlwZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRl
OgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAK
ICAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhl
YXBTaXplKTsKICAgICAgICAgc3RhdGljIEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50
ZXJuYWwoKTsKICAgICAgICAgdm9pZCBjcmVhdGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAx
MDYyOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNs
YXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFz
cyBHbG9iYWxDb2RlQmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAg
IGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9j
azsKICAgICBjbGFzcyBSZWdFeHBDb25zdHJ1Y3RvcjsKQEAgLTMzNSw2ICszMzYsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRTdGF0aWNHbG9i
YWxzKEdsb2JhbFByb3BlcnR5SW5mbyosIGludCBjb3VudCk7CiAKICAgICBwcml2YXRlOgorICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAg
ICAgLy8gRklYTUU6IEZvbGQgcmVzZXQgaW50byBpbml0LgogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGluaXQoSlNPYmplY3QqIHRoaXNWYWx1ZSk7CiAgICAgICAgIHZvaWQgcmVzZXQo
SlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oCShyZXZpc2lvbiAxMDYyOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAg
ICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9y
OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwpAQCAtMjcwLDYgKzI3MSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBKU09iamVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQ
cm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFnZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8g
Tm9ib2R5IHNob3VsZCBldmVyIGFzayBhbnkgb2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0aGlu
ZyBhbHJlYWR5IGtub3duIHRvIGJlIGEgSlNPYmplY3QuCiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6
aXNBUElWYWx1ZVdyYXBwZXI7CiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7
CkBAIC0zODIsNiArMzg1LDggQEAgQ09NUElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5l
U3RvcgogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJpdmF0
ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAg
CiAgICAgICAgIGV4cGxpY2l0IEpTRmluYWxPYmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0
YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmgJKHJldmlzaW9uIDEwNjI5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNPYmpl
Y3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgY2xhc3MgSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvciA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3Mg
SklUOwpAQCAtOTYsNiArOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAg
cHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAg
ICAgICAgCiAgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVy
dHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFi
bGVTbG90KTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX2NhY2hlZFN0cnVj
dHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2
aXNpb24gMTA2Mjk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBKU1N0cmluZzsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAg
ICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKICAgICBKU1N0cmluZyog
anNFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsKQEAgLTI0MCw2ICsyNDEsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90Vmlz
aXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVz
b2x2ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93
Q2FzZTgoTENoYXIqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVD
aGFyKikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
SW5mby5oCShyZXZpc2lvbiAxMDYyOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUg
dXNlcyBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0
YWJsZS4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0g
MSA8PCAxOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9
IDEgPDwgMjsKQEAgLTg3LDYgKzg5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAog
ICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CisgICAgICAgIAogICAgICAgICBib29sIGlzU2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29u
c3QgeyBBU1NFUlQoZmxhZyA8PSAoMSA8PCA3KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQog
ICAgICAgICBib29sIGlzU2V0T25GbGFnczIodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQo
ZmxhZyA+PSAoMSA8PCA4KSk7IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCShyZXZpc2lvbiAx
MDYyOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE2LDEwICsxMTYsOSBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhl
c2l6ZVByb3RvdHlwZShFCiAgICAgcmV0dXJuIEpTTm90QW5PYmplY3Q6OmNyZWF0ZShleGVjKTsK
IH0KIAotI2lmbmRlZiBOREVCVUcKIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIHsKLSAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSA2NDsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IHNpemUgPSAxMjg7CiAgICAgc3RhdGljIGNoYXIgZGVzY3JpcHRpb25bc2l6ZV07CiAKICAgICBp
ZiAoISp0aGlzKQpAQCAtMTI4LDE0ICsxMjcsMTQgQEAgY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRp
b24oKQogICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkludDMyOiAlZCIsIGFz
SW50MzIoKSk7CiAgICAgZWxzZSBpZiAoaXNEb3VibGUoKSkgewogI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICVseCIs
IGFzRG91YmxlKCksIHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIoYXNEb3VibGUoKSkpOworICAg
ICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWx4LCAlbGYiLCByZWlu
dGVycHJldERvdWJsZVRvSW50cHRyKGFzRG91YmxlKCkpLCBhc0RvdWJsZSgpKTsKICNlbHNlCiAg
ICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIGRvdWJsZSBhc0RvdWJsZTsKICAgICAgICAgICAg
IHVpbnQzMl90IGFzVHdvSW50MzJzWzJdOwogICAgICAgICB9IHU7CiAgICAgICAgIHUuYXNEb3Vi
bGUgPSBhc0RvdWJsZSgpOwotICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRv
dWJsZTogJWxmLCAlMDh4OiUwOHgiLCBhc0RvdWJsZSgpLCB1LmFzVHdvSW50MzJzWzFdLCB1LmFz
VHdvSW50MzJzWzBdKTsKKyAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3Vi
bGU6ICUwOHg6JTA4eCwgJWxmIiwgdS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSwg
YXNEb3VibGUoKSk7CiAjZW5kaWYKICAgICB9IGVsc2UgaWYgKGlzQ2VsbCgpKQogICAgICAgICBz
bnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkNlbGw6ICVwIiwgYXNDZWxsKCkpOwpAQCAtMTUy
LDcgKzE1MSw2IEBAIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIAogICAgIHJldHVybiBk
ZXNjcmlwdGlvbjsKIH0KLSNlbmRpZgogCiAvLyBUaGlzIGluIHRoZSBUb0ludDMyIG9wZXJhdGlv
biBpcyBkZWZpbmVkIGluIHNlY3Rpb24gOS41IG9mIHRoZSBFQ01BLTI2MiBzcGVjLgogLy8gTm90
ZSB0aGF0IHRoaXMgb3BlcmF0aW9uIGlzIGlkZW50aWNhbCB0byBUb1VJbnQzMiBvdGhlciB0aGFu
IHRvIGludGVycHJldGF0aW9uCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZS5oCShyZXZpc2lvbiAxMDYyOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzMiw5ICsyMzIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgSlNDZWxsKiBhc0NlbGwoKSBjb25zdDsKICAgICAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgYm9vbCBpc1ZhbGlkQ2FsbGVlKCk7CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgICAg
IGNoYXIqIGRlc2NyaXB0aW9uKCk7Ci0jZW5kaWYKIAogICAgIHByaXZhdGU6CiAgICAgICAgIHRl
bXBsYXRlIDxjbGFzcyBUPiBKU1ZhbHVlKFdyaXRlQmFycmllckJhc2U8VD4pOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2
aXNpb24gMTA2Mjk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJs
ZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTIgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUmVn
aXN0ZXI7CiAKICAgICBjbGFzcyBKU1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxP
YmplY3QgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpT
Tm9uRmluYWxPYmplY3QgQmFzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuY3BwCShyZXZpc2lvbiAxMDYyOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTAgQEAgdW5z
aWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saQogCiB1bnNpZ25lZCBtYXhpbXVt
SW5saW5pbmdEZXB0aDsKIAoraW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRl
cldhcm1VcDsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVT
b29uOworaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBpbnQzMl90
IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogaW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKQEAgLTEzNyw2
ICsxNDEsMTAgQEAgdm9pZCBpbml0aWFsaXplT3B0aW9ucygpCiAgICAgCiAgICAgU0VUKG1heGlt
dW1JbmxpbmluZ0RlcHRoLCA1KTsKIAorICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JK
SVRBZnRlcldhcm1VcCwgICAgIC0xMDApOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVG
b3JEb250SklUQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigp
KTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbiwgICAgICAgICAgICAt
MTAwKTsKKwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2Fy
bVVwLCAgICAgLTEwMDApOwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6
ZUFmdGVyTG9uZ1dhcm1VcCwgLTUwMDApOwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVG
b3JEb250T3B0aW1pemVBbnl0aW1lU29vbiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6
bWluKCkpOwpAQCAtMTg1LDYgKzE5Myw4IEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAg
IGlmIChjcHVzVG9Vc2UgPCAxKQogICAgICAgICBjcHVzVG9Vc2UgPSAxOwogICAgIAorICAgIGNw
dXNUb1VzZSA9IDE7CisgICAgCiAgICAgU0VUKG51bWJlck9mR0NNYXJrZXJzLCBjcHVzVG9Vc2Up
OwogCiAgICAgQVNTRVJUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRp
bWVTb29uIDw9IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVw
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9u
IDEwNjI5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29y
a2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTAgQEAgZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5j
dGlvbkZvckNvbnN0cgogCiBleHRlcm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8v
IERlcHRoIG9mIGlubGluZSBzdGFjaywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVs
LCBldGMuCiAKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVy
V2FybVVwOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFu
eXRpbWVTb29uOworZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29v
bjsKKwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRl
cldhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXpl
QWZ0ZXJMb25nV2FybVVwOwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
RG9udE9wdGltaXplQW55dGltZVNvb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TY29wZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZpc2lvbiAxMDYyOTcpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpT
R2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xv
dFZpc2l0b3I7CiAgICAgCkBAIC05MSw2ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJp
dmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAg
ICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJy
aWRlc1Zpc2l0Q2hpbGRyZW47CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShyZXZpc2lvbiAxMDYyOTcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjIs
NyArMzIyLDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAg
ICAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CiAgICAg
ICAgIHJldHVybiB0cmFuc2l0aW9uOwogICAgIH0KLQorICAgIAogICAgIFN0cnVjdHVyZSogdHJh
bnNpdGlvbiA9IGNyZWF0ZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgdHJhbnNpdGlv
bi0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5zZXRNYXlCZU51bGwoZ2xvYmFsRGF0YSwgdHJhbnNp
dGlvbiwgc3RydWN0dXJlLT5tX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMDYyOTcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDUsNiArNDUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAgICBj
bGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CkBA
IC0xOTYsNiArMTk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBP
UlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKik7CiAg
ICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xv
YmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAxMDYyOTcpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGNsYXNzIFN0cnVj
dHVyZUNoYWluIDogcHVibGljIEpTQ2VsbCB7CkBAIC03NCw2ICs3NSw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgU3RydWN0dXJlQ2hhaW4oSlNH
bG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+ID4gbV92
ZWN0b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0lubGluZUFTTS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSW5saW5lQVNNLmgJKHJldmlzaW9u
IDEwNjI5NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSW5saW5lQVNNLmgJKHdvcmtp
bmcgY29weSkKQEAgLTcwLDQgKzcwLDExIEBACiAjZGVmaW5lIEhJREVfU1lNQk9MKG5hbWUpCiAj
ZW5kaWYKIAorLy8gRklYTUU6IGZpZ3VyZSBvdXQgaG93IHRoaXMgd29ya3Mgb24gYWxsIHRoZSBw
bGF0Zm9ybXMuIEkga25vdyB0aGF0CisvLyBvbiBMaW51eCwgdGhlIHByZWZlcnJlZCBmb3JtIGlz
ICIuTHN0dWZmIiBhcyBvcHBvc2VkIHRvICJMc3R1ZmYiLgorLy8gRG9uJ3Qga25vdyBhYm91dCBh
bnkgb2YgdGhlIG90aGVycy4KKyNpZiBQTEFURk9STShNQUMpCisjZGVmaW5lIExPQ0FMX0xBQkVM
X1NUUklORyhuYW1lKSAiTCIgI25hbWUKKyNlbmRpZgorCiAjZW5kaWYgLy8gSW5saW5lQVNNX2gK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEwNjI5NykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpA
QCAtOTIzLDYgKzkyMywxOCBAQAogI2RlZmluZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCisvKiBP
biBzb21lIG9mIHRoZSBwbGF0Zm9ybXMgd2hlcmUgd2UgaGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBh
bHNvIGhhdmUgdGhlIAorICAgbG93LWxldmVsIGludGVycHJldGVyLiAqLworI2lmICFkZWZpbmVk
KEVOQUJMRV9MTElOVCkgJiYgRU5BQkxFKEpJVCkgJiYgT1MoREFSV0lOKSAmJiAoQ1BVKFg4Nikg
fHwgQ1BVKEFSTV9USFVNQjIpKSAmJiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBFTkFCTEVf
TExJTlQgMQorI2VuZGlmCisKKy8qIElmIHdlIGhhdmUgTExJbnQgZW5hYmxlZCBhbmQgdGhlIEpJ
VCBlbmFibGVkLCB3ZSBhbHNvIGVuYWJsZSBPU1JpbmcgZnJvbQorICAgTExJbnQgdG8gdGhlIEpJ
VC4gKi8KKyNpZiAhZGVmaW5lZChFTkFCTEVfTExJTlRfT1NSX1RPX0pJVCkgJiYgRU5BQkxFKEpJ
VCkgJiYgRU5BQkxFKExMSU5UKQorI2RlZmluZSBFTkFCTEVfTExJTlRfT1NSX1RPX0pJVCAwCisj
ZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9ERkdfSklUKSAmJiBFTkFCTEUoSklUKQogLyog
RW5hYmxlIHRoZSBERkcgSklUIG9uIFg4NiBhbmQgWDg2XzY0LiAgT25seSB0ZXN0ZWQgb24gTWFj
IGFuZCBHTlUvTGludXguICovCiAjaWYgKENQVShYODYpIHx8IENQVShYODZfNjQpKSAmJiAoUExB
VEZPUk0oTUFDKSB8fCBPUyhMSU5VWCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1NlbnRpbmVsTGlua2VkTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJKHJldmlzaW9uIDEwNjI5NykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTg2LDYgKzg2LDggQEAgcHVibGljOgogCiAgICAgaXRlcmF0b3IgYmVnaW4oKTsKICAgICBpdGVy
YXRvciBlbmQoKTsKKyAgICAKKyAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBiZWdpbigpID09
IGVuZCgpOyB9CiAKIHByaXZhdGU6CiAgICAgUmF3Tm9kZSBtX2hlYWRTZW50aW5lbDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24g
MTA2Mjk3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAko
d29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NG
U3RyaW5nICogQ0ZTdHJpCiAvLyBMYW5kaW5nIHRoZSBmaWxlIG1vdmVzIGluIG9uZSBwYXRjaCwg
d2lsbCBmb2xsb3cgb24gd2l0aCBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgbmFtZXNwYWNlcy4KIG5h
bWVzcGFjZSBKU0Mgewogc3RydWN0IElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRvcjsKK2NsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSWRl
bnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yOwogc3RydWN0IElkZW50aWZpZXJMQ2hhckZyb21V
Q2hhclRyYW5zbGF0b3I7CiB9CkBAIC03Miw3ICs3Myw4IEBAIGNsYXNzIFN0cmluZ0ltcGwgewog
ICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpTdWJzdHJpbmdUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBz
dHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21p
Y1N0cmluZ0ltcGw7Ci0KKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0
b3I7CisgICAgCiBwcml2YXRlOgogICAgIGVudW0gQnVmZmVyT3duZXJzaGlwIHsKICAgICAgICAg
QnVmZmVySW50ZXJuYWwsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDYyOTcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAx
Mi0wMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBz
aG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5n
ZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFT
Y3JpcHRDb3JlLgorICAgICAgICAKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8gYmVo
YXZpb3IgY2hhbmdlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAxLTMw
ICBMZXZpIFdlaW50cmF1YiAgPGxldml3QGNocm9taXVtLm9yZz4KIAogICAgICAgICAhbV9pbnNp
ZGVSZWdpb25QYWludCBhc3NlcnRpb24gaW4gUmVuZGVyUmVnaW9uLmNwcCBpcyBpbnZhbGlkCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA2Mjk3KQorKysgU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgU0VUKFdl
YkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVi
dWdnZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50
IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vcHJvZmlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpJ
bmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjI5NykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMjYgIEZpbGlwIFBpemxv
ICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRp
ZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1
ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1aWxkIHN5c3Rl
bSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4KKyAgICAgICAg
CisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMTItMDEtMTEgIEphY2t5IEppYW5nICA8
emhhamlhbmdAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gQVNTRVJUIGZhaWx1cmUg
aW4gQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFZpc2libGVDb250ZW50cygpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNjI5NykKKysrIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgU0VUKFdlYktpdF9JTkNMVURF
X0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZWJ1Z2dlciIKICAgICAi
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQiCiAgICAgIiR7SkFW
QVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9m
aWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUiCkluZGV4OiBUb29scy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDYyOTcp
CisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAx
Mi0wMS0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBz
aG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5n
ZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFT
Y3JpcHRDb3JlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0
OgorCiAyMDEyLTAxLTMwICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUGFyc2luZyB0ZXN0X2V4cGVjYXRpb25zLnR4dCArIFNraXBwZWQgbGlzdHMgdGFrZXMgdG9v
IGxvbmcKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQJKHJldmlz
aW9uIDEwNjI5NykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtNjgsMTAgKzY4LDEyIEBAIFNFVChEdW1wUmVuZGVyVHJlZV9JTkNM
VURFX0RJUkVDVE9SSUVTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9CiAgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L0FQSQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9hc3NlbWJsZXIKKyAg
ICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vZGZnCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2hlYXAKICAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vaW50ZXJwcmV0ZXIKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0CisgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1
bnRpbWUKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vd3RmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124872</attachid>
            <date>2012-01-31 19:28:44 -0800</date>
            <delta_ts>2012-01-31 20:14:51 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_82.diff</filename>
            <type>text/plain</type>
            <size>490696</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5OSBA
QAorMjAxMi0wMS0zMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi52c3Byb3BzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9jb3B5LWZpbGVzLmNtZDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogYXNz
ZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmLmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlckNvZGVQdHIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oOiBBZGRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3Rh
dHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkNh
bGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6aXNTZXQpOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6b3BlcmF0b3IhKToKKyAgICAgICAgKENhbGxMaW5rU3RhdHVz
KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpD
b2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6dW5saW5rQ2FsbHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVu
bGlua0luY29taW5nQ2FsbHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAg
ICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
Q29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6Ompp
dENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUlt
cGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVu
aXR5KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChDb2RlQmxvY2spOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpiYXNlbGluZVZlcnNpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpbmtJbmNvbWlu
Z0NhbGwpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpoYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRk
UHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRk
R2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRM
TEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVz
b2x2ZUluZm8pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9mTWV0aG9kQ2FsbExp
bmtJbmZvcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlUHJlZGljdGlv
bkZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rh
a2VTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y291bGRUYWtlU2xvd0Nhc2Up
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZVNwZWNpYWxGYXN0Q2FzZSk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VBbnlTbG93Q2FzZSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YWRkRnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZG9udEpJVEFueXRpbWVTb29uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpqaXRBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0U29vbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGxpbnRFeGVjdXRlQ291bnRlcik6CisgICAgICAgIChQ
cm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKEV2YWxDb2RlQmxvY2spOgorICAgICAgICAoRnVu
Y3Rpb25Db2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgor
ICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1
czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6Ondhc1NlZW5J
bkpJVCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0
cnVjdGlvbi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246Oklu
c3RydWN0aW9uKToKKyAgICAgICAgKEluc3RydWN0aW9uKToKKyAgICAgICAgKCk6CisgICAgICAg
ICogYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaDogQWRkZWQuCisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6TExJbnRDYWxsTGlua0luZm8pOgorICAg
ICAgICAoTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5m
bzo6fkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86
OmlzTGlua2VkKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OnVubGluayk6Cisg
ICAgICAgICogYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlND
OjpNZXRob2RDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUv
T3Bjb2RlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoKToKKyAgICAgICAgKiBieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVz
Ojpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmg6CisgICAg
ICAgIChQdXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpkdW1wc0dlbmVyYXRlZENvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29s
dmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFz
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlz
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENhdGNoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRm
Zy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2Rl
KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKCk6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoKToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAoSGVhcCk6
CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAoSlNDOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgor
ICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJyZW50VlBD
KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAo
SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5o
OgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmlsZSk6CisgICAgICAgICogaml0
L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKiBq
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgor
ICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKToKKyAg
ICAgICAgKEpJVENvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZSk6
CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAgICAgICAqIGppdC9KSVREcml2
ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUpOgorICAgICAgICAo
SlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKiBqaXQvSklU
RXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93KToKKyAgICAgICAgKiBqaXQv
SklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAqIGxs
aW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAg
ICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6
fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChEYXRhKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxMSW50OjpE
YXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZ1bmN0aW9u
RW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFdmFsRW50cnlwb2ludCk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAgICogbGxp
bnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChM
TEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBs
bGludC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxlcik6CisgICAgICAgIChKU0M6
OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cp
OgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmNwcDog
QWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFj
ZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpzaG91bGRK
SVQpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmVudHJ5T1NSKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnJlc29sdmVHbG9iYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0
QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9zdENhbGwpOgorICAgICAgICAo
SlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWNDYWxs
KToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRkZWQuCisgICAgICAgIChKU0Mp
OgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludE9mZnNldHNFeHRyYWN0b3IpOgor
ICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KToKKyAgICAgICAgKG1h
aW4pOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDogQWRkZWQuCisgICAgICAgIChM
TEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RB
cml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZXZhbEVudHJ5
VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6cHJvZ3JhbUVudHJ5VGh1bmtH
ZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5j
cHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQu
CisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12
Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tl
bmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRy
YWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJi
OiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vb3B0LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3BhcnNl
ci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9yZWdpc3RlcnMucmI6IEFkZGVkLgor
ICAgICAgICAqIG9mZmxpbmVhc20vc2VsZl9oYXNoLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZs
aW5lYXNtL3NldHRpbmdzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3RyYW5zZm9y
bS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYucmI6IEFkZGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgICgpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6Cisg
ICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zvcik6CisgICAgICAgIChD
b21tb25TbG93UGF0aHMpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OmpldHRpc29uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFi
bGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6c2FtcGxpbmdE
ZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFs
KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoRXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAoUHJvZ3JhbUV4ZWN1
dGFibGUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1
dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwcmVw
YXJlRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0
aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNDOjpK
U0FjdGl2YXRpb246OnRlYXJPZmYpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxs
Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQ2VsbCk6CisgICAg
ICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNG
dW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbERhdGEuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0dsb2JhbERhdGEpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKCk6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgIChKU0Zp
bmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKToKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNTdHJp
bmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKFR5cGVJbmZvKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6ZGVzY3JpcHRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNWYWx1ZS5oOgorICAgICAgICAoSlNWYWx1ZSk6CisgICAgICAgICgpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTVmFyaWFibGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6Cisg
ICAgICAgIChPcHRpb25zKToKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlv
bnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAoT3B0aW9ucyk6Cisg
ICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAo
U2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoU3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAqIHd0Zi9JbmxpbmVBU00uaDoKKyAgICAg
ICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg6
CisgICAgICAgIChTZW50aW5lbExpbmtlZExpc3QpOgorICAgICAgICAoV1RGOjpTZW50aW5lbExp
bmtlZExpc3Q6OmlzRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChTdHJpbmdJbXBsKToKKyAgICAgICAgKCk6CisKIDIwMTIt
MDEtMzEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgU3Ry
aW5nUHJvdG9GdW5jVG9VcHBlckNhc2Ugc2hvdWxkIGNhbGwgU3RyaW5nSW1wbDo6dXBwZXIgc2lt
aWxhciB0byBTdHJpbmdQcm90b1RvTG93ZXJDYXNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAgU0VUKEphdmFT
Y3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9s
bGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3BhcnNlciIKICAgICAiJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcnVudGlt
ZSIKQEAgLTk1LDYgKzk2LDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBpbnRl
cnByZXRlci9SZWdpc3RlckZpbGUuY3BwCiAKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5j
cHAKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKICAgICBqaXQvSklUQXJpdGhtZXRp
YzMyXzY0LmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljLmNwcAogICAgIGppdC9KSVRDYWxsMzJf
NjQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAx
MDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTU3LDYgKzU3LDcgQEAgamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlciBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdCBcCisJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIgXAogCS1JJChzcmNkaXIpL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9TSDRBc3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29u
dmVudGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBcCkBA
IC0xMDIsNiArMTAzLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTElu
dENhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGluZUlu
Zm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5m
by5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua0lu
Zm8uaCBcCkBAIC0yNzcsNiArMjc5LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Db21wYWN0SklUQ29kZU1hcC5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRBcml0aG1ldGljLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJf
NjQuY3BwIFwKQEAgLTMwMCw2ICszMDQsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4zMi9z
dGRib29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4zMi9zdGRpbnQuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggXApAQCAtMzUwLDYgKzM1
NSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FsbERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBcCkBAIC0z
NzgsNiArMzg0LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRpb25IYXJuZXNzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5wcmkJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAgSU5DTFVERVBBVEgg
Kz0gXAogICAgICQkU09VUkNFX0RJUi9kZWJ1Z2dlciBcCiAgICAgJCRTT1VSQ0VfRElSL2ludGVy
cHJldGVyIFwKICAgICAkJFNPVVJDRV9ESVIvaml0IFwKKyAgICAkJFNPVVJDRV9ESVIvbGxpbnQg
XAogICAgICQkU09VUkNFX0RJUi9wYXJzZXIgXAogICAgICQkU09VUkNFX0RJUi9wcm9maWxlciBc
CiAgICAgJCRTT1VSQ0VfRElSL3J1bnRpbWUgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5w
cmkJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJp
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcgQEAgU09VUkNFUyArPSBcCiAgICAgaW50
ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JG
aXhlZFZNUG9vbC5jcHAgXAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBcCisgICAg
aml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKICAgICBqaXQvSklUQXJpdGhtZXRpYy5jcHAg
XAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwKICAgICBqaXQvSklUQ2FsbC5jcHAg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzU4LDYgKzE3NTgsMTAgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caml0XEhvc3RDYWxsUmV0dXJu
VmFsdWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxqaXRcSklULmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0xODQzLDYgKzE4NDcs
MTQgQEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKKwkJCU5hbWU9ImxsaW50
IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGxsaW50XExMSW50RGF0
YS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKIAkJCU5hbWU9
ImludGVycHJldGVyIgogCQkJPgogCQkJPEZpbGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVDb21t
b24udnNwcm9wcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMJ
KHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwkod29y
a2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJPFRvb2wKIAkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7
Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29tcGlsZXIvOy4uLy4u
L2RmZy87Li4vLi4vaml0LzsuLi8uLi9ydW50aW1lLzsuLi8uLi90b29scy87Li4vLi4vYnl0ZWNv
ZGUvOy4uLy4uL2ludGVycHJldGVyLzsuLi8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fz
c2VtYmxlci87Li4vLi4vZGVidWdnZXIvOy4uLy4uL2hlYXAvOyZxdW90OyQoV2ViS2l0TGlicmFy
aWVzRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRl
XHByaXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVv
dDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUm
cXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90
OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OyIKKwkJ
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4u
L0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL2RmZy87Li4vLi4v
aml0LzsuLi8uLi9sbGludC87Li4vLi4vcnVudGltZS87Li4vLi4vdG9vbHMvOy4uLy4uL2J5dGVj
b2RlLzsuLi8uLi9pbnRlcnByZXRlci87Li4vLi4vd3RmLzsuLi8uLi9wcm9maWxlcjsuLi8uLi9h
c3NlbWJsZXIvOy4uLy4uL2RlYnVnZ2VyLzsuLi8uLi9oZWFwLzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVk
ZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlJnF1
b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3Jl
JnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVv
dDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDsiCiAJ
CVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfX1NURF9DIgogCQlGb3JjZWRJbmNsdWRlRmlsZXM9
IklDVVZlcnNpb24uaCIKIAkvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZpbGVzLmNtZAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL2NvcHktZmlsZXMuY21kCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL2NvcHktZmlsZXMuY21k
CSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIGZvciAlJWQgaW4gKAogICAgIGRlYnVn
Z2VyCiAgICAgaW50ZXJwcmV0ZXIKICAgICBqaXQKKyAgICBsbGludAogICAgIHBhcnNlcgogICAg
IHByb2ZpbGVyCiAgICAgcnVudGltZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsMTUg
QEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAq
LworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAw
RjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovOworCQkJYnVpbGRQaGFzZXMgPSAo
CisJCQkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNl
cyAqLywKKwkJCSk7CisJCQluYW1lID0gIkxMSW50IE9mZnNldHMiOworCQkJcHJvZHVjdE5hbWUg
PSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKIAkJNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCIC8q
IERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKIAkJ
CWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2NUZCM0Y3NzA5RDExRUJEMDBGNDlERUIgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkRlcml2ZWQgU291
cmNlcyIgKi87CkBAIC0xNCw2ICsyMyw5IEBACiAJCQkJNjVGQjNGNjUwOUQxMUU5MTAwRjQ5REVC
IC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk1RDM1REVFMTBDN0MxNDBCMDA4
NjQ4QjIgLyogR2VuZXJhdGUgRFRyYWNlIGhlYWRlciAqLywKIAkJCSk7CisJCQlkZXBlbmRlbmNp
ZXMgPSAoCisJCQkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8sCisJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcHJvZHVjdE5h
bWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJfTsKQEAgLTQ4LDYgKzYwLDEwIEBACiAJCTBCQUM5
NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0
MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCQ0Q4MzU3MTQ4NTg0NTIwMEVBMjAw
MyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYy
OEEyOTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyog
U2l6ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTElu
dEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAq
LzsgfTsKKwkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk2MTRC
Q0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8q
IExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi87IH07
CisJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTgxNEJDRjQ1QTAwODg1
QjRGIC8qIExMSW50VGh1bmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBNTE0QkNG
NTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlcklu
Zm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4
M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAv
KiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdl
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC01OCw5ICs3NCwxMyBAQAogCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2Fs
bExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjcxNEJD
RjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xv
YmFsUmVzb2x2ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwRkM0NTgxNEJE
MTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8q
IENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTZENzI2
MTQyQzM5QzAwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZl
Y3Rvci5jcHAgKi87IH07CiAJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjY2
MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhl
Y3V0aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RDE0
QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRC
IC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNv
ZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjI0MkRB
NzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAwN0FE
RDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU2RjE0NzM4RjMxMDAxMjFFNEYgLyogREZH
Q29kZUJsb2Nrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU3MDE0NzM4RjM1
MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJs
b2Nrcy5jcHAgKi87IH07CkBAIC03MSw2ICs5MSwxOSBAQAogCQkwRjQzMTczODE0NkJBQzY5MDA3
RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5k
bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3
MiAvKiBKSVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Njgw
N0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBB
MzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RjE0
QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLzsgc2V0dGluZ3MgPSB7Q09NUElM
RVJfRkxBR1MgPSAiLVduby11bnVzZWQtcGFyYW1ldGVyIjsgfTsgfTsKKwkJMEY0NjgwQTUxNEJB
N0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVs
cGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTExNEJB
N0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi87IH07CisJCTBGNDY4
MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3
MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0IxNEJC
QjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8q
IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbElu
dGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAq
LzsgfTsKKwkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM4
MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDIxNEJCRDE2NTAwQkZF
MjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLzsg
fTsKKwkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0YxNEJCQjNEMTAwQkZF
MjcyIC8qIExMSW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZh
bHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLzsgfTsK
KwkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEQxMTRCQkM1
RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1NUYwRjQxNEQxMDYzOTAwQUM3NjQ5IC8q
IEFic3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovOyB9Owog
CQkwRjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5
IC8qIEFic3RyYWN0UEMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFs
aXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1
RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzg3LDcgKzQyMCw3
IEBACiAJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUUxMTE3RTU3ODEw
MERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRj
aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJC
MDlCRTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87IH07CiAJCTg2QkIwOUMx
MTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVw
YXRjaC5oICovOyB9OwotCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2
RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyB9OworCQk4NkMzNkVF
QTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBN
YWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhE
RDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9OwogCQk4NkM1
NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3
RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3
RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5o
ICovOyB9OwpAQCAtNzU0LDYgKzc4NywyMCBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTBGNDY4
MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlp
c2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5
MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAx
OworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzI7CisJ
CQlyZW1vdGVJbmZvID0gIkxMSW50IE9mZnNldHMiOworCQl9OworCQkwRjQ2ODBCMzE0QkE4MjE0
MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29u
dGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMw
MkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90
ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyOworCQkJcmVtb3RlSW5m
byA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJMTQxMjE0QkUwQTQ5MTkwRTAw
NDgwMjU1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRh
aW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJB
QUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTc5OSw2ICs4NDYsMTUgQEAKIC8qIEVuZCBQ
QlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5RmlsZXNC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlG
aWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEv
OworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKIAkJNURCQjE1MTExMzFE
MEIxMzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhD
b3B5RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7CkBAIC04MzksNiAr
ODk1LDEwIEBACiAJCTBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlv
blZlcmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFJlc3Ry
aWN0aW9uVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJDRDgzNTQx
NDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUZW1wb3JhcnlDaGFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5
cG9pbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RW50
cnlwb2ludHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RW50cnlw
b2ludHMuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50VGh1bmtzLmNwcDsg
cGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50VGh1bmtzLmg7IHBhdGggPSBsbGludC9MTEludFRo
dW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBNTE0QkNGNTA0MDA4
ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29k
ZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTgxNEJDRjU1RTAw
ODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0FBMTRC
Q0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTg0OSw5ICs5MDksMTMgQEAKIAkJMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRG
IC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZXRob2RDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYw
QjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbFJlc29sdmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zm
c2V0VG9CeXRlY29kZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRDYWxsTGlua0luZm8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENv
bW1vblNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25T
bG93UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNkQ3MjQxNDJDMzlB
MjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIx
QzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpJVERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBF
eGVjdXRpb25IYXJuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1
dGlvbkhhcm5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0UxNEJF
QUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVDb252ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZl
c3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrUmVmZXJlbmNlSGFy
dmVzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZEMTQ3MzhGMkUw
MDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC04NjIsNiArOTI2LDIwIEBACiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5
MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDdG
MTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRFeGNlcHRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTElu
dE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRG
aWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0g
MDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0
aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEV4Y2Vw
dGlvbnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMu
aDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50SGVscGVycy5jcHA7IHBhdGgg
PSBsbGludC9MTEludEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50SGVscGVycy5oOyBwYXRoID0gbGxpbnQvTExJbnRIZWxw
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEExMTRCQTdGODIwMEJG
RTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgcGF0aCA9IGxsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMTEludENvbW1vbi5oOyBwYXRoID0gbGxpbnQvTExJbnRDb21tb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcy
IC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBMTEludE9mZmxpbmVBc21Db25maWcuaDsgcGF0aCA9IGxsaW50L0xMSW50T2ZmbGluZUFz
bUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNzE0QkJCMTY5
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmNwcDsgcGF0aCA9IGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmg7IHBhdGggPSBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnREYXRhLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RGF0
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENGMTRCQkIzRDEwMEJG
RTI3MiAvKiBMTEludERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJ
bnREYXRhLmg7IHBhdGggPSBsbGludC9MTEludERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSG9zdENhbGxSZXR1cm5W
YWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQxMTRCQkM1Rjgw
MEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RQQy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBD
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0UEMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5
dGVDb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNv
ZGVDYWNoZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVDb2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE1ODcsNiArMTY2NSwxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVu
Y2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCisJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJ
aXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFt
ZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTY0NSw2ICsxNzMwLDcgQEAKIAkJCQkxNDEy
MTEyMDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4Rjkw
MDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyog
dGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjc1LDYgKzE3NjEsNyBAQAogCQkJCUY1QzI5MEU2MDI4
NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4
MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZG
NjBGNyAvKiBjb25maWcuaCAqLywKKwkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxp
bnQgKi8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4
Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQz
QUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKQEAgLTE3MTQsNiArMTgwMSwyOCBAQAogCQkJdGFi
V2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkwRjQ2ODA5QzE0QkE3RjREMDBC
RkUyNzIgLyogbGxpbnQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAq
LywKKwkJCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICov
LAorCQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8sCisJ
CQkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8sCisJCQkJMEY0
NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0Yx
NEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovLAorCQkJCTBGNDY4MEM1MTRCQkIxNjkw
MEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovLAorCQkJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3
MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLywKKwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8sCisJCQkJMEY0NjgwQzgxNEJCQjE2
OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8sCisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50SGVscGVycy5oICovLAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGlu
dDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3MjYw
MDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0xNzQ4LDYgKzE4NTcsOCBAQAogCQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkgLyog
aml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2
ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJ
MEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJ
CQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJ
MEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4
MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTIxNzUs
NiArMjI4Niw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3OTE0QkU3
MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovLAorCQkJCTBGMjFDMjdB
MTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8sCiAJCQkJMEYxNUYxNUQx
NEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovLAogCQkJCUJDRjYwNTExMEUy
MDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBC
OUE2NEQgLyogQXJnTGlzdC5oICovLApAQCAtMjU0Nyw2ICsyNjYwLDggQEAKIAkJOTY5QTA3OEYw
RUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVD
b252ZW50aW9ucy5oICovLAorCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENh
bGxMaW5rSW5mby5oICovLAogCQkJCTBGOTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlu
a1N0YXR1cy5jcHAgKi8sCiAJCQkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5r
U3RhdHVzLmggKi8sCiAJCQkJMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0
dXMuY3BwICovLApAQCAtMzA5Nyw3ICszMjEyLDE2IEBACiAJCQkJODY3MDRCOEExMkRCQTMzNzAw
QTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI0MzEyREI4
QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNl
cHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyog
TExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3
MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENE
MTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50
cnlwb2ludHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAv
KiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTcxNEJDRjUwNzAwODg1
QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4
ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1
QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTMx
MDYsNyArMzIzMCwxMSBAQAogCQkJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RD
YWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0
RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJD
Rjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0lu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVRE
cml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBF
eGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3RDE0QkU3MjdBMDBB
REM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYy
MUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGN0IyOTRBMTRDM0NEMjkwMDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmls
aXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRDMTRDM0NENDMwMDdDM0RCMSAvKiBE
RkdCeXRlQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMjUsNiArMzI1MywyNCBAQAog
LyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYTmF0
aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xM
SW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJ
CWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0
c0V4dHJhY3RvciIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODA4QjE0QkE3RTVF
MDBCRkUyNzIgLyogU291cmNlcyAqLywKKwkJCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyog
RnJhbWV3b3JrcyAqLywKKwkJCQkwRjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVz
ICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0g
KAorCQkJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICov
LAorCQkJKTsKKwkJCW5hbWUgPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0
TmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAw
RjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOwor
CQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKIAkJ
MTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhO
YXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQxMjExMzkwQTQ4Nzk4
NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0
ICJtaW5pZG9tIiAqLzsKQEAgLTMyNTEsMTEgKzMzOTcsMjkgQEAKIAkJCQkxNEJENTlCRTBBM0U4
RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk5MzJGNUJEQTA4MjJBMUM3MDA3MzY5NzUg
LyoganNjICovLAogCQkJCTY1MTEyMkY3MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICov
LAorCQkJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0
b3IgKi8sCisJCQkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8s
CiAJCQkpOwogCQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODBBQTE0QkE3RkQ5MDBC
RkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU2hl
bGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJ
CWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoU1JDUk9PVCkvbGxp
bnQvTG93TGV2ZWxBc3NlbWJsZXIuYXNtIiwKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIERl
cml2ZWQgU291cmNlcyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNU
U19ESVIpL0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmgiLAorCQkJKTsKKwkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jp
bi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9
L0xMSW50T2Zmc2V0cy9cIlxuXG4vdXNyL2Jpbi9lbnYgcnVieSBcIiR7U1JDUk9PVH0vb2ZmbGlu
ZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiXCIgXCIke1NSQ1JPT1R9L2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtXCIgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZz
ZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaFwiXG4iOworCQl9OwogCQkzNzEzRjAxNDE0MjkwNTI0
MDAzNjM4N0YgLyogQ2hlY2sgRm9yIEluYXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xhc3MgTmFt
ZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzM2MSw3ICszNTI1LDcgQEAKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9i
aW4vc2g7Ci0JCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElS
fS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9kb2NzXCJcbmNkIFwiJHtCVUlMVF9QUk9E
VUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlXCJcblxuL2Jpbi9sbiAtc2Zo
IFwiJHtTUkNST09UfVwiIEphdmFTY3JpcHRDb3JlXG5leHBvcnQgSmF2YVNjcmlwdENvcmU9XCJK
YXZhU2NyaXB0Q29yZVwiXG5leHBvcnQgQlVJTFRfUFJPRFVDVFNfRElSPVwiLi4vLi5cIlxuXG5t
YWtlIC0tbm8tYnVpbHRpbi1ydWxlcyAtZiBcIkphdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2VcIiAtaiBgL3Vzci9zYmluL3N5c2N0bCAtbiBody5uY3B1YFxuIjsKKwkJCXNoZWxsU2Ny
aXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL2RvY3NcIlxuY2QgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmVcIlxuXG4vYmluL2xuIC1zZmggXCIke1NSQ1JPT1R9XCIgSmF2
YVNjcmlwdENvcmVcbmV4cG9ydCBKYXZhU2NyaXB0Q29yZT1cIkphdmFTY3JpcHRDb3JlXCJcbmV4
cG9ydCBCVUlMVF9QUk9EVUNUU19ESVI9XCIuLi8uLlwiXG5cbm1ha2UgLS1uby1idWlsdGluLXJ1
bGVzIC1mIFwiSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNyL3Ni
aW4vc3lzY3RsIC1uIGh3Lm5jcHVgXG5cbi91c3IvYmluL2VudiBydWJ5IEphdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYXNtLnJiIEphdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtICR7QlVJTFRfUFJPRFVDVFNfRElSfS9KU0NMTEludE9mZnNldHNFeHRyYWN0b3IgTExJ
bnRBc3NlbWJseS5oXG4iOwogCQl9OwogCQk5MzE5NTg2QjA5RDlGOTFBMDBBNTZGRDQgLyogQ2hl
Y2sgRm9yIEdsb2JhbCBJbml0aWFsaXplcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlw
dEJ1aWxkUGhhc2U7CkBAIC0zMzk2LDYgKzM1NjAsMTQgQEAKIC8qIEVuZCBQQlhTaGVsbFNjcmlw
dEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBz
ZWN0aW9uICovCisJCTBGNDY4MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovID0gewor
CQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUQwQTQ4Nzkz
QzAwNDgwMjU1IC8qIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFz
ZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zNjUzLDcgKzM4MjUsMTQg
QEAKIAkJCQk4NjcwNEI4NjEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NjcwNEI4OTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCNDIxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhD
aGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAv
KiBMTEludEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTgxNEJBN0ZBQjAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODA4
MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2Fs
bFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4
NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlD
MTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjBCODNCMDE0QkNGNzE2MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMEI4M0I0MTRCQ0Y4NjAwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRjY5RTg2QzMxNEM2RTU1MTAwMkMyQzYyIC8qIE51bWJlck9m
Q29yZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNjc4LDYgKzM4NTcsMTYgQEAKIC8qIEVuZCBQ
QlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERlcGVu
ZGVuY3kgc2VjdGlvbiAqLworCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0
RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJn
ZXQgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLzsKKwkJCXRh
cmdldFByb3h5ID0gMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLzsKKwkJfTsKKwkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0
ID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAq
LzsKKwkJCXRhcmdldFByb3h5ID0gMEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKIAkJMTQxMjE0QkYwQTQ5MTkwRTAwNDgwMjU1IC8qIFBC
WFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5Owog
CQkJdGFyZ2V0ID0gMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi87CkBAIC0z
NzExLDYgKzM5MDAsMTUwIEBACiAvKiBFbmQgUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMEY0NjgwOTYx
NEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRI
UyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09Q
WV9QSEFTRV9TVFJJUCA9IE5POworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7
CisJCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQ
VElPTlMgPSBZRVM7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BS
RVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJIkRFQlVHPTEiLAorCQkJCQkiJChpbmhl
cml0ZWQpIiwKKwkJCQkpOworCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gTk87CisJ
CQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJ
CUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJP
VVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9U
WVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVB
REVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQki
JChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFS
Q0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7
CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IE5POworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdF
VF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hf
UEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURF
Ul9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4
MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNF
Ul9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJ
CQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQg
PSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5
OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9O
ID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9U
T18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJP
VE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFU
SFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVD
VFNfRElSKS9MTEludE9mZnNldHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJ
CU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9
IE5POworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9
IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07
CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8q
IFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlB
UkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAg
PSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7
CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09C
SkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxl
cnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04g
PSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJ
R0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZB
UklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJ
CQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRz
IiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RF
UExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gTk87CisJCQkJ
UFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4Owor
CQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUg
PSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0
aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0g
IiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsK
KwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlH
Q0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENF
UFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZt
LmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POwor
CQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FS
Tl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUg
PSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJ
CQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJ
CQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVO
VF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJ
CQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBp
Y3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFU
SFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUQxNEJB
N0ZEOTAwQkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNv
dXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODBBRTE0
QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZl
ZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2
ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9
ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJ
fTsKKwkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJP
RFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJv
ZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjExM0EwQTQ4Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovID0g
ewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewpA
QCAtMzk1Miw2ICs0Mjg1LDI4IEBACiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlv
biAqLwogCiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMEY0Njgw
OUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0
aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovID0geworCQkJaXNhID0gWEND
b25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0Njgw
OTYxNEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MDk3MTRCQTdFNUUwMEJG
RTI3MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9m
aWxpbmcgKi8sCisJCQkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8s
CisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUMxNEJBN0ZE
OTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFy
Z2V0ICJMTEludCBPZmZzZXRzIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7
CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3
MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAq
LywKKwkJCQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBG
NDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1
bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFt
ZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi8gPSB7
CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5o
CShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xp
bmtCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2RlZmluZSBHTE9C
QUxfVEhVTktfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+
KC0xKSkKICNkZWZpbmUgUkVHRVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KC0yKSkKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+Cisj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHJldmlzaW9uIDEwNjQyMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Myw2ICsyNzMsMTQgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CisgICAgCisg
ICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJl
c3Modm9pZCogdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVS
KHZhbHVlKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdDsKKyAgICAgICAg
cmVzdWx0Lm1fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAK
ICAgICBleHBsaWNpdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoUmV0dXJuQWRkcmVzc1B0ciByYSkK
ICAgICAgICAgOiBtX3ZhbHVlKHJhLnZhbHVlKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQnl0ZWNvZGVDb252ZW50aW9uc19oCisjZGVm
aW5lIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCisvLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4g
Ynl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0
aGVpciByYW5nZXM6CisvLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5k
aWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBm
cmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgorLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYg
IEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZh
cnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgorLy8gICAg
ICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAw
IHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgor
c3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7
CisKKyNlbmRpZiAvLyBCeXRlY29kZUNvbnZlbnRpb25zX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAx
MDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNyArMjcsNDAgQEAKICNpbmNsdWRlICJDYWxsTGlu
a1N0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTExJbnRDYWxs
TGlua0luZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7Cisg
ICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKyAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJ
bmZvID0gaW5zdHJ1Y3Rpb25bNF0udS5jYWxsTGlua0luZm87CisgICAgCisgICAgcmV0dXJuIENh
bGxMaW5rU3RhdHVzKGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCksIGZhbHNlKTsK
KyNlbHNlCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKKyNlbmRpZgorfQor
CiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHBy
b2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBF
TkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgcmV0dXJuIENhbGxMaW5r
U3RhdHVzKAotICAgICAgICBwcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJ
bmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0KCksCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmNvdWxk
VGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKTsKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51
bWJlck9mQ2FsbExpbmtJbmZvcygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChw
cm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KTsKKyAgICAKKyAgICBpZiAocHJvZmlsZWRCbG9j
ay0+Y291bGRUYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCisgICAgICAgIHJldHVybiBDYWxs
TGlua1N0YXR1cygwLCB0cnVlKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBwcm9m
aWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUu
Z2V0KCk7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50
KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIHJldHVybiBDYWxsTGlu
a1N0YXR1cyh0YXJnZXQsIGZhbHNlKTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVz
KDAsIGZhbHNlKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NywxNSArNDcsMTcgQEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBj
b21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAg
IGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbFRhcmdldDsgfQorICAgIGJvb2wg
aXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbFRhcmdldCB8fCBtX2NvdWxkVGFrZVNsb3dQ
YXRoOyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxs
VGFyZ2V0OyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsg
fQogICAgIAogICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2Nv
dWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCiAgICAgSlNGdW5jdGlvbiogY2FsbFRhcmdldCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMg
Q2FsbExpbmtTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4KTsKKyAgICAKICAgICBKU0Z1bmN0aW9uKiBtX2NhbGxUYXJnZXQ7CiAgICAgYm9v
bCBtX2NvdWxkVGFrZVNsb3dQYXRoOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIs
NiArNDIsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0YXRpY1Nj
b3BlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiVVN0cmlu
Z0NvbmNhdGVuYXRlLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTU5LDggKzYwLDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiB1c2luZyBuYW1lc3BhY2UgREZHOwogI2VuZGlmCiAKLSNpZiAhZGVmaW5l
ZChOREVCVUcpIHx8IEVOQUJMRShPUENPREVfU0FNUExJTkcpCi0KIHN0YXRpYyBVU3RyaW5nIGVz
Y2FwZVF1b3Rlcyhjb25zdCBVU3RyaW5nJiBzdHIpCiB7CiAgICAgVVN0cmluZyByZXN1bHQgPSBz
dHI7CkBAIC0zNTgsMTAgKzM1NywxMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUq
IGV4ZWMpIGNvCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXpl
KCk7IGkgKz0gb3Bjb2RlTGVuZ3Roc1tleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChp
bnN0cnVjdGlvbnMoKVtpXS51Lm9wY29kZSldKQogICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7
CiAKLSAgICBwcmludGYoIiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBw
YXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKVxuXG4iLAorICAgIHByaW50ZigiJWx1
IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2Fs
bGVlIHJlZ2lzdGVyKHMpOyAlZCB2YXJpYWJsZShzKVxuXG4iLAogICAgICAgICBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbkNvdW50KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9u
KSksCi0gICAgICAgIHRoaXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMp
OworICAgICAgICB0aGlzLCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBt
X251bVZhcnMpOwogCiAgICAgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgYmVn
aW4gPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IGluc3RydWN0aW9ucygpLmVuZCgpOwpAQCAtODk4LDYgKzg5Nywx
NCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAg
ICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlv
biIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4
ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWw6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAg
ICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVy
aWMiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI4Niw4ICsxMjkzLDYgQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgIH0KIH0KIAotI2VuZGlmIC8vICFk
ZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQogI2lmIERVTVBfQ09E
RV9CTE9DS19TVEFUSVNUSUNTCiBzdGF0aWMgSGFzaFNldDxDb2RlQmxvY2sqPiBsaXZlQ29kZUJs
b2NrU2V0OwogI2VuZGlmCkBAIC0xNDU3LDYgKzE0NjIsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9j
ayhDb3B5UGFyc2VkQmxvY2tUYWcsCiB7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1Q
YXJhbWV0ZXJzKCkpOwogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldh
cm1VcCgpOwogICAgIAogICAgIGlmIChvdGhlci5tX3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0
ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTE1MDUsNiArMTUxMSw3IEBAIENvZGVCbG9jazo6
Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAg
IAogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogCiAj
aWYgRFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJQ1MKICAgICBsaXZlQ29kZUJsb2NrU2V0LmFkZCh0
aGlzKTsKQEAgLTE1MjIsNyArMTUyOSwxMSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2lm
IEVOQUJMRShWRVJCT1NFX1ZBTFVFX1BST0ZJTEUpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsK
ICNlbmRpZgotICAgIAorCisjaWYgRU5BQkxFKExMSU5UKSAgICAKKyAgICB3aGlsZSAobV9pbmNv
bWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAg
ICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7CisjZW5kaWYgLy8g
RU5BQkxFKExMSU5UKQogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gV2UgbWF5IGJlIGRlc3Ryb3ll
ZCBiZWZvcmUgYW55IENvZGVCbG9ja3MgdGhhdCByZWZlciB0byB1cyBhcmUgZGVzdHJveWVkLgog
ICAgIC8vIENvbnNpZGVyIHRoYXQgdHdvIENvZGVCbG9ja3MgYmVjb21lIHVucmVhY2hhYmxlIGF0
IHRoZSBzYW1lIHRpbWUuIFRoZXJlCkBAIC0xNzM0LDggKzE3NDUsNjggQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlVW5saW5raW5nID0gZmFsc2U7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVO
QUJMRShKSVQpCiAgICAgCisjaWYgRU5BQkxFKExMSU5UKQorICAgIEludGVycHJldGVyKiBpbnRl
cnByZXRlciA9IG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXI7CisgICAgLy8gaW50ZXJwcmV0ZXIt
PmVuYWJsZWQoKSByZXR1cm5zIHRydWUgaWYgdGhlIG9sZCBDKysgaW50ZXJwcmV0ZXIgaXMgZW5h
YmxlZC4gSWYgdGhhdCdzIGVuYWJsZWQKKyAgICAvLyB0aGVuIHdlJ3JlIG5vdCB1c2luZyBMTElu
dC4KKyAgICBpZiAoIWludGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXpl
X3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8
IHNpemU7ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0g
Jmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOworICAgICAg
ICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0u
dS5vcGNvZGUpKSB7CisgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25b
NF0udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1
Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVh
cmluZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3Mgd2l0aCBzdHJ1Y3R1cmUgJXAuXG4iLCBjdXJJbnN0
cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1
Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVj
dGlvbls1XS51Lm9wZXJhbmQgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAgICAgICBpZiAoSGVh
cDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAg
ICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0
dXJlLmdldCgpKQorICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0
cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBwdXQgdHJhbnNpdGlvbiB3aXRoIHN0
cnVjdHVyZXMgJXAgLT4gJXAsIGNoYWluICVwLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25b
NF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls2
XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzdd
LnUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlv
blswXS51Lm9wY29kZSA9IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCks
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5z
dHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ld
XTsKKyAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1
Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsCisgICAgICAgICAgICAgICAg
ICAgfHwgaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2Rl
KSA9PSBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKKyAgICAgICAgICAgIGlmICghY3VySW5z
dHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25b
M10udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBnbG9iYWwgcmVzb2x2ZSBjYWNoZSB3aXRoIHN0
cnVjdHVyZSAlcC5cbiIsIGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpKTsKKyAg
ICAgICAgICAgIGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAg
ICAgICBjdXJJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQgPSAwOworICAgICAgICB9CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsr
aSkgeworICAgICAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkg
JiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmNhbGxlZS5nZXQoKSkp
IHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAg
ICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20gJXAuXG4iLCB0aGlzKTsKKyAg
ICAgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmICghIW1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVu
Q2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2Vl
bkNhbGxlZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0u
bGFzdFNlZW5DYWxsZWUuY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFC
TEUoTExJTlQpCisKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBu
b3QgbGl2ZS4gSWYgd2UgYXJlLCB0aGVuIGpldHRpc29uLgogICAgIGlmICghKHNob3VsZEltbWVk
aWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hh
c0JlZW5Qcm92ZWQpKSB7CkBAIC0xODU2LDEwICsxOTI3LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpz
dHJvbmdseVZpc2l0U3Ryb25nUmVmZXIKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVu
Y3Rpb25EZWNscy5zaXplKCk7ICsraSkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rp
b25EZWNsc1tpXSk7CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQotICAgIGZvciAoc2l6ZV90IHNp
emUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClb
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOwotICAgIGZvciAoc2l6ZV90IHNpemUg
PSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsr
aSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2ds
b2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICBpZiAobV9nbG9iYWxEYXRhLT5pbnRl
cnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3Bl
cnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAg
ICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1f
Z2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQor
ICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2ds
b2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJM
RShERkdfSklUKQpAQCAtMTg2Nyw4ICsxOTQwLDkgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5
VmlzaXRTdHJvbmdSZWZlcgogICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBleGVjdXRhYmxlcyB0
aGF0IHdlIGhhdmUgaW5saW5lZCBkb24ndCBkaWUuCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGV5
IHdvdWxkIGhhdmUgb3RoZXJ3aXNlIGRpZWQsIHdlIHNob3VsZCBwcm9iYWJseSB0cmlnZ2VyIHJl
Y29tcGlsYXRpb24uCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5saW5lQ2FsbEZy
YW1lcygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaW5saW5l
Q2FsbEZyYW1lcygpW2ldLmV4ZWN1dGFibGUpOwotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQo
JmlubGluZUNhbGxGcmFtZXMoKVtpXS5jYWxsZWUpOworICAgICAgICAgICAgSW5saW5lQ2FsbEZy
YW1lJiBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJhbWVzKClbaV07CisgICAgICAgICAg
ICB2aXNpdG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZyYW1lLmV4ZWN1dGFibGUpOworICAgICAgICAg
ICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZS5jYWxsZWUpOwogICAgICAgICB9CiAg
ICAgfQogI2VuZGlmCkBAIC0yMDY4LDYgKzIxNDIsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlu
a0NhbGxzKCkKIHsKICAgICBpZiAoISFtX2FsdGVybmF0aXZlKQogICAgICAgICBtX2FsdGVybmF0
aXZlLT51bmxpbmtDYWxscygpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlm
IChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpKQorICAgICAgICAgICAgbV9sbGlu
dENhbGxMaW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgfQorI2VuZGlmCiAgICAgaWYgKCEobV9j
YWxsTGlua0luZm9zLnNpemUoKSB8fCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKQEAgLTIw
ODIsMTAgKzIxNjIsMzkgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIAogdm9pZCBD
b2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMoKQogeworI2lmIEVOQUJMRShMTElOVCkKKyAg
ICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRD
YWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+dW5saW5r
KCk7CisjZW5kaWYKKyAgICBpZiAobV9pbmNvbWluZ0NhbGxzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOwogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcih0aGlzKTsKICAgICB3aGls
ZSAobV9pbmNvbWluZ0NhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0NhbGxzLmVuZCgpKQogICAg
ICAgICBtX2luY29taW5nQ2FsbHMuYmVnaW4oKS0+dW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0
Y2hCdWZmZXIpOwogfQorCit1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNT
dGF0ZSogZXhlYywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQoreworI2lmIEVOQUJM
RShMTElOVCkKKyAgICBpZiAocmV0dXJuQWRkcmVzcy52YWx1ZSgpID49IGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X2JlZ2luKQorICAgICAgICAmJiByZXR1cm5BZGRyZXNzLnZhbHVlKCkgPD0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZW5kKSkgeworICAgICAgICBBU1NFUlQoZXhlYy0+
Y29kZUJsb2NrKCkpOworICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkgPT0gdGhpcyk7
CisgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsK
KyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gZXhlYy0+Y3VycmVudFZQQygpOwor
ICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb24pOworICAgICAgICByZXR1cm4gYnl0ZWNvZGVPZmZz
ZXQoaW5zdHJ1Y3Rpb24pOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwor
I2VuZGlmCisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gMTsKKyAgICBWZWN0
b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFy
ZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOworICAgIGlmICghY2FsbEluZGljZXMuc2l6
ZSgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1
cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4o
Y2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zm
c2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OworfQogI2VuZGlm
CiAKIHZvaWQgQ29kZUJsb2NrOjpjbGVhckV2YWxDYWNoZSgpCkBAIC0yMTgxLDI0ICsyMjkwLDQ1
IEBAIGJvb2wgRnVuY3Rpb25Db2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRoREYKIAogdm9pZCBQcm9n
cmFtQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBK
SVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJ
VChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAg
ICBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0
dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwogfQogCiB2b2lkIEV2YWxDb2RlQmxv
Y2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJh
c2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5
cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19j
YXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXpl
ZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmpldHRp
c29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklU
KTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwog
ICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2Rl
Rm9yKCpnbG9iYWxEYXRhKCksIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBD
b2RlRm9yQ2FsbCk7CiB9CisKK3ZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0g
SklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1l
bnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJF
eGVjdXRhYmxlKCkpLT5qaXRDb21waWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEV2YWxDb2Rl
QmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBB
U1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFT
U0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFdmFs
RXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShnbG9iYWxEYXRhKTsK
K30KKwordm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50
ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgp
KS0+aml0Q29tcGlsZUZvcihnbG9iYWxEYXRhLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29u
c3RydWN0IDogQ29kZUZvckNhbGwpOworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVkFMVUVfUFJP
RklMRVIpCkBAIC0yMzAxLDYgKzI0MzEsMTggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBWYWx1ZVBy
b2ZpbGVzKCkKIH0KICNlbmRpZgogCit2b2lkIENvZGVCbG9jazo6aGFuZGxlQnl0ZWNvZGVEaXNj
YXJkaW5nT3Bwb3J0dW5pdHkoKQoreworI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKSAmJiAh
RU5BQkxFKExMSU5UKQorICAgIGlmIChCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRD
b2RlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoISFhbHRlcm5hdGl2ZSgpKQorICAgICAg
ICBkaXNjYXJkQnl0ZWNvZGUoKTsKKyAgICBlbHNlCisgICAgICAgIGRpc2NhcmRCeXRlY29kZUxh
dGVyKCk7CisjZW5kaWYKK30KKwogI2lmbmRlZiBOREVCVUcKIGJvb2wgQ29kZUJsb2NrOjp1c2Vz
T3Bjb2RlKE9wY29kZUlEIG9wY29kZUlEKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICsz
MCw3IEBACiAjaWZuZGVmIENvZGVCbG9ja19oCiAjZGVmaW5lIENvZGVCbG9ja19oCiAKKyNpbmNs
dWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAj
aW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJD
b2RlT3JpZ2luLmgiCkBAIC01MCw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSklUV3JpdGVCYXJyaWVy
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKdW1wVGFibGUuaCIK
KyNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAj
aW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQcmVkaWN0aW9uVHJhY2tlci5oIgpAQCAtNjUs
MTYgKzY3LDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgIlN0cnVjdHVy
ZVN0dWJJbmZvLmgiCiAKLS8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVy
YXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoK
LS8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhl
IENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVn
aXN0ZXJGaWxlLmguCi0vLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5k
aWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9y
YXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCi0vLyAgICAgIDB4NDAwMDAwMDAt
MHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRy
aWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCi1zdGF0aWMgY29uc3Qg
aW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKLQogbmFtZXNwYWNl
IEpTQyB7CiAKLSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsK
KyAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
CiAgICAgaW5saW5lIGludCB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoaW50IGFyZ3VtZW50
c1JlZ2lzdGVyKSB7IHJldHVybiBhcmd1bWVudHNSZWdpc3RlciAtIDE7IH0KIApAQCAtODMsNiAr
ODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgVW5j
b25kaXRpb25hbEZpbmFsaXplciwgcHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgewogICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsK
KyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6
CiAgICAgICAgIGVudW0gQ29weVBhcnNlZEJsb2NrVGFnIHsgQ29weVBhcnNlZEJsb2NrIH07CiAg
ICAgcHJvdGVjdGVkOgpAQCAtMTIzLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgICAgICAgICByZXN1
bHQgPSByZXN1bHQtPmFsdGVybmF0aXZlKCk7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsK
LSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNl
bGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVz
dWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
IH0KICNlbmRpZgpAQCAtMTM0LDExICsxMzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICBzdGF0aWMgdm9pZCBkdW1wU3RhdGlzdGljcygpOwogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8
fCBFTkFCTEVfT1BDT0RFX1NBTVBMSU5HCiAgICAgICAgIHZvaWQgZHVtcChFeGVjU3RhdGUqKSBj
b25zdDsKICAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZXMoY29uc3QgSW5zdHJ1Y3Rpb24qKSBj
b25zdDsKICAgICAgICAgdm9pZCBwcmludFN0cnVjdHVyZShjb25zdCBjaGFyKiBuYW1lLCBjb25z
dCBJbnN0cnVjdGlvbiosIGludCBvcGVyYW5kKSBjb25zdDsKLSNlbmRpZgogCiAgICAgICAgIGJv
b2wgaXNTdHJpY3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KIApAQCAt
MTk0LDE1ICsxOTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAqKGJp
bmFyeVNlYXJjaDxNZXRob2RDYWxsTGlua0luZm8sIHVuc2lnbmVkLCBnZXRNZXRob2RDYWxsTGlu
a0luZm9CeXRlY29kZUluZGV4PihtX21ldGhvZENhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRo
b2RDYWxsTGlua0luZm9zLnNpemUoKSwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRy
ZXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0
ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4
VmVjdG9yOwotICAgICAgICAgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1
cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4o
Y2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zm
c2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OwotICAgICAgICB9
CisgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSosIFJldHVybkFkZHJl
c3NQdHIpOwogCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Rm9yQ2FsbEF0SW5kZXgo
dW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKQEAgLTIyMywxMSArMjExLDE3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBtX2luY29taW5nQ2FsbHMucHVzaChpbmNv
bWluZyk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHZvaWQgbGlua0lu
Y29taW5nQ2FsbChMTEludENhbGxMaW5rSW5mbyogaW5jb21pbmcpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLnB1c2goaW5jb21pbmcpOworICAgICAgICB9Cisj
ZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogICAgICAgICAKICAgICAgICAgdm9pZCB1bmxpbmtJbmNv
bWluZ0NhbGxzKCk7Ci0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi0jaWYgRU5BQkxF
KERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAg
dm9pZCBzZXRKSVRDb2RlTWFwKFBhc3NPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IGppdENvZGVN
YXApCiAgICAgICAgIHsKICAgICAgICAgICAgIG1faml0Q29kZU1hcCA9IGppdENvZGVNYXA7CkBA
IC0yMzYsNyArMjMwLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAg
IHJldHVybiBtX2ppdENvZGVNYXAuZ2V0KCk7CiAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAK
KyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgdm9pZCBjcmVhdGVERkdEYXRhSWZOZWNlc3Nh
cnkoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoISFtX2RmZ0RhdGEpCkBAIC0zMzUsMTIg
KzMzMSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFC
TEUoSU5URVJQUkVURVIpCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0
aW9uKiByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocmV0dXJu
QWRkcmVzcyA+PSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpICYmIHJldHVybkFkZHJlc3MgPCBpbnN0
cnVjdGlvbnMoKS5lbmQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1
Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgICAg
IH0KLSNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJv
b2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9u
ID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNOdW1lcmljQ29t
cGFyZUZ1bmN0aW9uKCkgeyByZXR1cm4gbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KQEAg
LTM1NCwxNyArMzQ5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAg
IG1fc2hvdWxkRGlzY2FyZEJ5dGVjb2RlID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICB2b2lk
IGhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCkKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCEhYWx0ZXJuYXRpdmUoKSkKLSAgICAgICAgICAgICAgICBkaXNjYXJkQnl0ZWNv
ZGUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBkaXNjYXJkQnl0ZWNvZGVM
YXRlcigpOwotICAgICAgICB9CisgICAgICAgIHZvaWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5n
T3Bwb3J0dW5pdHkoKTsKICAgICAgICAgCi0jaWZuZGVmIE5ERUJVRwogICAgICAgICBib29sIHVz
ZXNPcGNvZGUoT3Bjb2RlSUQpOwotI2VuZGlmCiAKICAgICAgICAgdW5zaWduZWQgaW5zdHJ1Y3Rp
b25Db3VudCgpIHsgcmV0dXJuIG1faW5zdHJ1Y3Rpb25Db3VudDsgfQogICAgICAgICB2b2lkIHNl
dEluc3RydWN0aW9uQ291bnQodW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCkgeyBtX2luc3RydWN0
aW9uQ291bnQgPSBpbnN0cnVjdGlvbkNvdW50OyB9CkBAIC0zODcsNiArMzc0LDE1IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBleGVjdXRhYmxlTWVt
b3J5KCkgeyByZXR1cm4gZ2V0SklUQ29kZSgpLmdldEV4ZWN1dGFibGVNZW1vcnkoKTsgfQogICAg
ICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3Bl
Q2hhaW5Ob2RlKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKSA9IDA7Cisg
ICAgICAgIGJvb2wgaml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJU
aHVuaykgeworICAgICAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGppdENvbXBpbGVJbXBsKGdsb2JhbERhdGEpOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxh
Y2VtZW50KCkgPSAwOwogCiAgICAgICAgIGVudW0gQ29tcGlsZVdpdGhERkdTdGF0ZSB7CkBAIC00
MDYsMTMgKzQwMiwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGhhc09wdGlt
aXplZFJlcGxhY2VtZW50KCkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5
cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29k
ZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICBib29sIHJlc3Vs
dCA9IHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA+IGdldEpJVFR5cGUoKTsKICNpZiAhQVNT
RVJUX0RJU0FCTEVECiAgICAgICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgICAgIEFT
U0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKICAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5n
ZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgICAgIEFT
U0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkp
KTsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKSA9PSB0aGlzKTsKICAgICAg
ICAgICAgIH0KICNlbmRpZgpAQCAtNDcxLDE4ICs0NjcsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgdm9pZCBjbGVhckV2YWxDYWNoZSgpOwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVS
KQogICAgICAgICB2b2lkIGFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24odW5zaWduZWQgcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2ds
b2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJ
bnN0cnVjdGlvbnMuYXBwZW5kKHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOworICAgICAgICAg
ICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb24odW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAg
bV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rp
b24pOworICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9uQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBMTEludENhbGxMaW5rSW5mbyogYWRkTExJ
bnRDYWxsTGlua0luZm8oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJ
bmZvcy5hcHBlbmQoTExJbnRDYWxsTGlua0luZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gJm1f
bGxpbnRDYWxsTGlua0luZm9zLmxhc3QoKTsKKyAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgdm9pZCBzZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcyhzaXplX3Qg
c2l6ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZvcy5ncm93KHNpemUpOyB9CkBAIC00OTEsOCArNDkw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5m
byh1bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGlmIChtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xv
YmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5z
dHJ1Y3Rpb24pKTsKKyAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9i
YWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKICAgICAgICAgfQogICAg
ICAgICBHbG9iYWxSZXNvbHZlSW5mbyYgZ2xvYmFsUmVzb2x2ZUluZm8oaW50IGluZGV4KSB7IHJl
dHVybiBtX2dsb2JhbFJlc29sdmVJbmZvc1tpbmRleF07IH0KICAgICAgICAgYm9vbCBoYXNHbG9i
YWxSZXNvbHZlSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpA
QCAtNTAzLDYgKzUwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkTWV0
aG9kQ2FsbExpbmtJbmZvcyh1bnNpZ25lZCBuKSB7IEFTU0VSVChtX2dsb2JhbERhdGEtPmNhblVz
ZUpJVCgpKTsgbV9tZXRob2RDYWxsTGlua0luZm9zLmdyb3cobik7IH0KICAgICAgICAgTWV0aG9k
Q2FsbExpbmtJbmZvJiBtZXRob2RDYWxsTGlua0luZm8oaW50IGluZGV4KSB7IHJldHVybiBtX21l
dGhvZENhbGxMaW5rSW5mb3NbaW5kZXhdOyB9CisgICAgICAgIHNpemVfdCBudW1iZXJPZk1ldGhv
ZENhbGxMaW5rSW5mb3MoKSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpOyB9
CiAjZW5kaWYKICAgICAgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtNTQzLDYg
KzU0MiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKSkgLSAxXS51LnByb2ZpbGUgPT0gcmVzdWx0
KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KKyAgICAgICAgUHJlZGlj
dGVkVHlwZSB2YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVj
b2RlT2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24o
KTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdW5zaWduZWQgdG90YWxOdW1iZXJPZlZh
bHVlUHJvZmlsZXMoKQogICAgICAgICB7CkBAIC01NjksMTIgKzU3MiwxNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlU2xvd0Nhc2UoaW50IGJ5
dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNh
c2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IHVuc2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9u
czo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91Ymxl
Pih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtl
U2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgY291
bGRUYWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICBy
ZXR1cm4gdmFsdWUgPj0gT3B0aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYg
c3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0
aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KQEAgLTU5MywxMiAr
NjAwLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlU
b1Rha2VTcGVjaWFsRmFzdENhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50
ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgcmV0dXJuIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID49
IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0
PGRvdWJsZT4oc3BlY2lhbEZhc3RDYXNlQ291bnQpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49
IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZShpbnQgYnl0ZWNv
ZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVBy
b2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5z
aWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZh
c3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNs
b3dDYXNlQ291bnQgLSBzcGVjaWFsRmFzdENhc2VDb3VudDsKQEAgLTYwNyw2ICs2MTgsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlQW55U2xv
d0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51
bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIHVuc2lnbmVkIHNsb3dDYXNlQ291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVu
c2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5z
aWduZWQgdmFsdWUgPSBzbG93Q2FzZUNvdW50ICsgc3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBAIC03
MDQsNyArNzE3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGFk
ZEZyZXF1ZW50RXhpdFNpdGUoY29uc3QgREZHOjpGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2Vs
aW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRK
SVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBtX2V4aXRQcm9maWxlLmFkZChzaXRlKTsK
ICAgICAgICAgfQogCkBAIC04MDksNiArODIyLDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbShDb2RlQmxvY2sqIGFsdGVybmF0aXZlKTsKICAg
ICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgICAgICAK
KyAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIEpJVHRpbmcga2lja3Mg
aW4sIGluIGEgbWl4ZWQgbW9kZQorICAgICAgICAvLyBleGVjdXRpb24gd29ybGQuCisgICAgICAg
IAorICAgICAgICB2b2lkIGRvbnRKSVRBbnl0aW1lU29vbigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9p
ZCBqaXRBZnRlcldhcm1VcCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRl
Q291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVw
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdFNvb24oKQorICAgICAgICB7
CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JKSVRTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQz
Ml90IGxsaW50RXhlY3V0ZUNvdW50ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICB9CisgICAgICAgIAogICAgICAg
ICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gdGllcmVkIGNvbXBpbGF0aW9uIGtp
Y2tzIGluLiBUaGlzCiAgICAgICAgIC8vIGNvbnRyb2xzIGJvdGggd2hlbiB0aGUgb3B0aW1pemlu
ZyBjb21waWxlciBpcyBpbnZva2VkIGFuZCB3aGVuIE9TUgogICAgICAgICAvLyBlbnRyeSBoYXBw
ZW5zLiBUd28gdHJpZ2dlcnMgZXhpc3Q6IHRoZSBsb29wIHRyaWdnZXIgYW5kIHRoZSByZXR1cm4K
QEAgLTEwMDEsNiArMTAzNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fc2hv
dWxkRGlzY2FyZEJ5dGVjb2RlOwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIHZv
aWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgdmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKICAgICAgICAgCkBAIC0xMDEzLDcgKzEwNTAs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCB0YWxseUZyZXF1ZW50RXhpdFNpdGVz
KCkgeyB9CiAjZW5kaWYKICAgICAgICAgCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUo
T1BDT0RFX1NBTVBMSU5HKQogICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKiwgY29uc3QgVmVj
dG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImIGJlZ2luLCBWZWN0b3I8SW5zdHJ1Y3Rp
b24+Ojpjb25zdF9pdGVyYXRvciYpIGNvbnN0OwogCiAgICAgICAgIENTdHJpbmcgcmVnaXN0ZXJO
YW1lKEV4ZWNTdGF0ZSosIGludCByKSBjb25zdDsKQEAgLTEwMjMsNyArMTA1OSw2IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIHByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBs
b2NhdGlvbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFy
KiBvcCkgY29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRDYWxsT3AoRXhlY1N0YXRlKiwgaW50IGxv
Y2F0aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIq
IG9wKSBjb25zdDsKICAgICAgICAgdm9pZCBwcmludFB1dEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQg
bG9jYXRpb24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hh
ciogb3ApIGNvbnN0OwotI2VuZGlmCiAgICAgICAgIHZvaWQgdmlzaXRTdHJ1Y3R1cmVzKFNsb3RW
aXNpdG9yJiwgSW5zdHJ1Y3Rpb24qIHZQQykgY29uc3Q7CiAgICAgICAgIAogI2lmIEVOQUJMRShE
RkdfSklUKQpAQCAtMTA4NCw5ICsxMTE5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBS
ZWZQdHI8U291cmNlUHJvdmlkZXI+IG1fc291cmNlOwogICAgICAgICB1bnNpZ25lZCBtX3NvdXJj
ZU9mZnNldDsKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgVmVjdG9yPHVuc2ln
bmVkPiBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zOwogICAgICAgICBWZWN0b3I8dW5zaWdu
ZWQ+IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uczsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAg
ICAgIFNlZ21lbnRlZFZlY3RvcjxMTEludENhbGxMaW5rSW5mbywgOD4gbV9sbGludENhbGxMaW5r
SW5mb3M7CisgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxMTEludENhbGxMaW5rSW5mbywgQmFz
aWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0xMSW50Q2Fs
bHM7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBWZWN0b3I8U3RydWN0dXJlU3R1
YkluZm8+IG1fc3RydWN0dXJlU3R1YkluZm9zOwpAQCAtMTA5Nyw5ICsxMTM0LDEwIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlV2l0aEFy
aXR5Q2hlY2s7CiAgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxDYWxsTGlua0luZm8sIEJhc2lj
UmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5nQ2FsbHM7CiAjZW5kaWYK
LSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5U
KQogICAgICAgICBPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IG1faml0Q29kZU1hcDsKLSAgICAg
ICAgCisjZW5kaWYKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgc3RydWN0IFdlYWtSZWZl
cmVuY2VUcmFuc2l0aW9uIHsKICAgICAgICAgICAgIFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uKCkg
eyB9CiAgICAgICAgICAgICAKQEAgLTExNjIsMTIgKzEyMDAsMTQgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgT3duUHRyPENvZGVCbG9jaz4gbV9hbHRlcm5hdGl2ZTsKICAgICAgICAgCisg
ICAgICAgIGludDMyX3QgbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICAKICAgICAgICAg
aW50MzJfdCBtX2ppdEV4ZWN1dGVDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0
aXZlU3VjY2Vzc0NvdW50ZXI7CiAgICAgICAgIHVpbnQzMl90IG1fc3BlY3VsYXRpdmVGYWlsQ291
bnRlcjsKICAgICAgICAgdWludDhfdCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcjsKICAgICAg
ICAgdWludDhfdCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwotCisgICAgICAgIAogICAg
ICAgICBzdHJ1Y3QgUmFyZURhdGEgewogICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICAgICAgcHVibGljOgpAQCAtMTI0Myw2ICsxMjgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1p
emVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBq
ZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxE
YXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkdJbnRlcm5hbCgpOwogI2VuZGlmCkBAIC0x
Mjc3LDYgKzEzMTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFp
bk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVhbCBD
b2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxl
V2l0aERGR0ludGVybmFsKCk7CiAjZW5kaWYKQEAgLTEzMTQsNiArMTM1Niw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGls
ZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpT
R2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsK
ICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHSW50ZXJuYWwoKTsKICNlbmRp
ZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3Rh
dHVzLmNwcAkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMCArMjcsNDkgQEAK
ICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNp
bmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitHZXRC
eUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9m
aWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKK3sK
KyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVj
b2RlSW5kZXgpOworICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CisjaWYgRU5BQkxFKExMSU5UKQor
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworICAgIAorICAgIGlmIChpbnN0cnVjdGlvblsw
XS51Lm9wY29kZSA9PSBsbGludF9vcF9tZXRob2RfY2hlY2spCisgICAgICAgIGluc3RydWN0aW9u
Kys7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0
dXJlLmdldCgpOworICAgIGlmICghc3RydWN0dXJlKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAg
ICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmds
b2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RG
b3VuZCwgZmFsc2UpOworICAgIAorICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZURpcmVj
dCwgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCwgZmFsc2UpOworI2Vsc2UKKyAgICBy
ZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91
bmQsIGZhbHNlKTsKKyNlbmRpZgorfQorCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4
LCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7
CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVu
dCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICgh
cHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0
dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQp
OworICAgIAogICAgIC8vIEZpcnN0IGNoZWNrIGlmIGl0IG1ha2VzIGVpdGhlciBjYWxscywgaW4g
d2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIHN1cGVyIGNhcmVmdWwsIG9yCiAgICAgLy8gaWYgaXQn
cyBub3Qgc2V0IGF0IGFsbCwgaW4gd2hpY2ggY2FzZSB3ZSBwdW50LgogICAgIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5k
ZXgpOwogICAgIGlmICghc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0
dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0
dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQp
OwogICAgIAogICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogbGlzdDsKICAgICBp
bnQgbGlzdFNpemU7CkBAIC02MCwxOCArODksMTkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3Rh
dHVzOjpjb21wdXRlRm9yKAogICAgIH0KICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3RTaXpl
OyArK2kpIHsKICAgICAgICAgaWYgKCFsaXN0LT5saXN0W2ldLmlzRGlyZWN0KQotICAgICAgICAg
ICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTWFrZXNDYWxscywgU3RydWN0dXJlU2V0KCksIG5vdEZv
dW5kKTsKKyAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVj
dHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7CiAgICAgfQogICAgIAogICAgIC8vIE5leHQgY2hl
Y2sgaWYgaXQgdGFrZXMgc2xvdyBjYXNlLCBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUga2lu
ZCBvZiBjYXJlZnVsLgogICAgIGlmIChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2Fz
ZShieXRlY29kZUluZGV4KSkKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93
UGF0aCwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRT
dGF0dXMoVGFrZXNTbG93UGF0aCwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsKICAg
ICAKICAgICAvLyBGaW5hbGx5IGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGRlcml2ZSBhbiBhY2Nlc3Mg
c3RyYXRlZ3kuCiAgICAgR2V0QnlJZFN0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fd2FzU2Vl
bkluSklUID0gdHJ1ZTsKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICBj
YXNlIGFjY2Vzc191bnNldDoKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1h
dGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVG
cm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAK
ICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZjogewogICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQo
KTsKQEAgLTEzMCw3ICsxNjAsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1
dGVGb3IoCiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlIC8vIEVOQUJMRShKSVQpCi0g
ICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5v
dEZvdW5kKTsKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1
cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJ
KHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEwICs0OSwxMSBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KICAgICAKLSAgICBHZXRCeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBT
dHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6ZV90IG9mZnNldCkKKyAgICBHZXRCeUlkU3Rh
dHVzKFN0YXRlIHN0YXRlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6ZV90
IG9mZnNldCwgYm9vbCB3YXNTZWVuSW5KSVQpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAg
ICAgICAgLCBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQpCiAgICAgICAgICwgbV9vZmZzZXQo
b2Zmc2V0KQorICAgICAgICAsIG1fd2FzU2VlbkluSklUKHdhc1NlZW5JbkpJVCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCgoc3RhdGUgPT0gU2ltcGxlRGlyZWN0KSA9PSAob2Zmc2V0ICE9IG5vdEZv
dW5kKSk7CiAgICAgfQpAQCAtNzAsMTAgKzcxLDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJ1
Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9
CiAgICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCisg
ICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBjb25zdCB7IHJldHVybiBtX3dhc1NlZW5JbkpJVDsgfQor
ICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50
KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAK
ICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKICAg
ICBzaXplX3QgbV9vZmZzZXQ7CisgICAgYm9vbCBtX3dhc1NlZW5JbkpJVDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Ry
dWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RydWN0aW9uLmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTQ2VsbDsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAg
ICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CisgICAgc3RydWN0IExMSW50Q2FsbExpbmtJbmZvOwog
ICAgIHN0cnVjdCBWYWx1ZVByb2ZpbGU7CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTQ2LDYgKzE0
NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAgICAgc3RydWN0IEluc3RydWN0aW9u
IHsKKyAgICAgICAgSW5zdHJ1Y3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB1LmpzQ2Vs
bC5jbGVhcigpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihPcGNv
ZGUgb3Bjb2RlKQogICAgICAgICB7CiAjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJF
VEVSKQpAQCAtMTgyLDYgKzE4OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEluc3Ry
dWN0aW9uKFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1bmMpIHsgdS5nZXR0ZXJG
dW5jID0gZ2V0dGVyRnVuYzsgfQogICAgICAgICAKKyAgICAgICAgSW5zdHJ1Y3Rpb24oTExJbnRD
YWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykgeyB1LmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5m
bzsgfQorICAgICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBwcm9maWxl
KSB7IHUucHJvZmlsZSA9IHByb2ZpbGU7IH0KIAogICAgICAgICB1bmlvbiB7CkBAIC0xOTEsNyAr
MTk5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0
cnVjdHVyZUNoYWluPiBzdHJ1Y3R1cmVDaGFpbjsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJh
c2U8SlNDZWxsPiBqc0NlbGw7CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVu
YyBnZXR0ZXJGdW5jOworICAgICAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5m
bzsKICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZTsKKyAgICAgICAgICAgIHZvaWQq
IHBvaW50ZXI7CiAgICAgICAgIH0gdTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2Fs
bExpbmtJbmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENhbGxMaW5rSW5m
b19oCisjZGVmaW5lIExMSW50Q2FsbExpbmtJbmZvX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24u
aCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvU2Vu
dGluZWxMaW5rZWRMaXN0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rp
b247CisKK3N0cnVjdCBMTEludENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVs
Tm9kZTxMTEludENhbGxMaW5rSW5mbz4geworICAgIExMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7
CisgICAgfQorICAgIAorICAgIH5MTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgICAgICBp
ZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBi
b29sIGlzTGlua2VkKCkgeyByZXR1cm4gY2FsbGVlOyB9CisgICAgCisgICAgdm9pZCB1bmxpbmso
KQorICAgIHsKKyAgICAgICAgY2FsbGVlLmNsZWFyKCk7CisgICAgICAgIG1hY2hpbmVDb2RlVGFy
Z2V0ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CisgICAgICAgIGlmIChpc09uTGlzdCgpKQor
ICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgfQorICAgIAorICAgIFdyaXRlQmFycmllcjxKU0Z1
bmN0aW9uPiBjYWxsZWU7CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGxhc3RTZWVuQ2Fs
bGVlOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWNoaW5lQ29kZVRhcmdldDsKK307CisK
K30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gTExJbnRDYWxsTGlua0luZm9faAorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RD
YWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDExIEBAIE1ldGhvZENhbGxMaW5rU3RhdHVzIE1ldGhvZENhbGxMaW5rU3RhdHUK
ICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVj
b2RlSW5kZXgpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAg
ICAvLyBOT1RFOiBUaGlzIGRvZXMgbm90IGhhdmUgYW4gTExJbnQgZmFsbC1iYWNrIGJlY2F1c2Ug
TExJbnQgZG9lcyBub3QgZG8gYW55IG1ldGhvZAorICAgIC8vIGNhbGwgbGluayBjYWNoaW5nLgor
ICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKCkpCisg
ICAgICAgIHJldHVybiBNZXRob2RDYWxsTGlua1N0YXR1cygpOworICAgIAogICAgIE1ldGhvZENh
bGxMaW5rSW5mbyYgbWV0aG9kQ2FsbCA9IHByb2ZpbGVkQmxvY2stPmdldE1ldGhvZENhbGxMaW5r
SW5mbyhieXRlY29kZUluZGV4KTsKICAgICAKICAgICBpZiAoIW1ldGhvZENhbGwuc2VlbiB8fCAh
bWV0aG9kQ2FsbC5jYWNoZWRTdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgsIDQp
IFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uLCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX2RpcmVjdCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWwsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkpIFwK
ICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX2dlbmVyaWMsIDkpIFwKICAgICAgICAgbWFjcm8o
b3BfZGVsX2J5X2lkLCA0KSBcCkBAIC0yMDEsNiArMjAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIHR5cGVkZWYgZW51bSB7IEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfSURfRU5VTSkg
fSBPcGNvZGVJRDsKICAgICAjdW5kZWYgT1BDT0RFX0lEX0VOVU0KIAorICAgIGNvbnN0IGludCBt
YXhPcGNvZGVMZW5ndGggPSA5OwogICAgIGNvbnN0IGludCBudW1PcGNvZGVJRHMgPSBvcF9lbmQg
KyAxOwogCiAgICAgI2RlZmluZSBPUENPREVfSURfTEVOR1RIUyhpZCwgbGVuZ3RoKSBjb25zdCBp
bnQgaWQjI19sZW5ndGggPSBsZW5ndGg7CkBAIC0yMTcsNyArMjIwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9JRChWRVJJRllfT1BDT0RFX0lEKTsKICAgICAj
dW5kZWYgVkVSSUZZX09QQ09ERV9JRAogCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQ
UkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShM
TElOVCkKICNpZiBDT01QSUxFUihSVkNUKSB8fCBDT01QSUxFUihJTlRFTCkKICAgICB0eXBlZGVm
IHZvaWQqIE9wY29kZTsKICNlbHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDI3ICsyNyw2OSBAQAogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1
ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIAorUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50
KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRp
ZmllciYgaWRlbnQpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVO
VVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lm
IEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJs
b2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAg
aWYgKCFzdHJ1Y3R1cmUpCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRp
b24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5v
cGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkKSB7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBz
dHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAg
ICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIAorICAgICAg
ICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9m
ZnNldCk7CisgICAgfQorICAgIAorICAgIEFTU0VSVChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9
PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QKKyAgICAgICAgICAgfHwgaW5z
dHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsKTsKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGluc3RydWN0aW9uWzZd
LnUuc3RydWN0dXJlLmdldCgpOworICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IGluc3RydWN0
aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCk7CisgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7
CisgICAgQVNTRVJUKGNoYWluKTsKKyAgICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0
dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlmIChv
ZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3Jt
YXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1
cyhTaW1wbGVUcmFuc2l0aW9uLCBzdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY2hhaW4sIG9mZnNl
dCk7CisjZWxzZQorICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAs
IDAsIG5vdEZvdW5kKTsKKyNlbmRpZgorfQorCiBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9j
ayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShp
ZGVudCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlm
ICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAg
cmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRl
bnQpOworICAgIAogICAgIGlmIChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShi
eXRlY29kZUluZGV4KSkKICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0
aCwgMCwgMCwgMCwgbm90Rm91bmQpOwogICAgIAogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHVi
SW5mbyA9IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlm
ICghc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1h
dGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTElu
dChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgCiAgICAgc3dpdGNo
IChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsK
KyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJ
bmRleCwgaWRlbnQpOwogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFj
ZTogewogICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5i
YXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTkzLDYgKzkzLDggQEAgcHVibGljOgogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVy
biBtX29mZnNldDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBj
b21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50
aWZpZXImKTsKKyAgICAKICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZSogbV9vbGRT
dHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0
b3IuY3BwCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIkJhdGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgiCiAjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTG93TGV2
ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJv
bmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgpAQCAtMTE2LDI2ICsxMTcsMTYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgZXhwZWN0ZWQgYnkgdGhlIGNhbGxlZS4KICovCiAKLSNpZm5k
ZWYgTkRFQlVHCiBzdGF0aWMgYm9vbCBzX2R1bXBzR2VuZXJhdGVkQ29kZSA9IGZhbHNlOwotI2Vu
ZGlmCiAKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZShib29s
IGR1bXBzR2VuZXJhdGVkQ29kZSkKIHsKLSNpZm5kZWYgTkRFQlVHCiAgICAgc19kdW1wc0dlbmVy
YXRlZENvZGUgPSBkdW1wc0dlbmVyYXRlZENvZGU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShk
dW1wc0dlbmVyYXRlZENvZGUpOwotI2VuZGlmCiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6
OmR1bXBzR2VuZXJhdGVkQ29kZSgpCiB7Ci0jaWZuZGVmIE5ERUJVRwogICAgIHJldHVybiBzX2R1
bXBzR2VuZXJhdGVkQ29kZTsKLSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAK
IEpTT2JqZWN0KiBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQpAQCAtMTQ4LDEwICsxMzks
OCBAQCBKU09iamVjdCogQnl0ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKIAogICAgIG1fY29k
ZUJsb2NrLT5zZXRJbnN0cnVjdGlvbkNvdW50KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5z
aXplKCkpOwogCi0jaWZuZGVmIE5ERUJVRwogICAgIGlmIChzX2R1bXBzR2VuZXJhdGVkQ29kZSkK
ICAgICAgICAgbV9jb2RlQmxvY2stPmR1bXAobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSk7Ci0jZW5kaWYKIAogICAgIGlmICgobV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNv
ZGUgJiYgIW1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgJiYgIW1fY29kZUJsb2Nr
LT51c2VzQXJndW1lbnRzKCkpIHx8IG1fY29kZVR5cGUgPT0gRXZhbENvZGUpCiAgICAgICAgIHN5
bWJvbFRhYmxlKCkuY2xlYXIoKTsKQEAgLTEyNzYsOSArMTI2NSw3IEBAIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBtX2Nv
ZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNl
bmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEds
b2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAg
ICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShyZXF1aXJl
c0R5bmFtaWNDaGVja3MgPyBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9n
bG9iYWwpOwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0x
NDQwLDkgKzE0MjcsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29s
CiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8o
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikK
ICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9u
cygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJv
ZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJv
cERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHBy
b3BlcnR5KSk7CkBAIC0xNDkwLDkgKzE0NzUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xv
YmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJM
RShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0
aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICBWYWx1ZVByb2ZpbGUqIHBy
b2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVz
b2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNTExLDkgKzE0OTQsNyBAQCB2b2lkIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0TWV0aG9kQ2hlY2soCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNv
bnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAg
ICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMo
KS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJv
ZmlsZWRPcGNvZGUob3BfZ2V0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0
LT5pbmRleCgpKTsKQEAgLTE1MzksOSArMTUyMCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0R2V0QXIKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQ
dXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxv
Y2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
LSNlbmRpZgogCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE1NTcsOSArMTUzNiw3IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnkKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQ
UkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIAogICAgIGVtaXRPcGNvZGUob3BfcHV0
X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBAIC0x
ODQwLDcgKzE4MTcsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxs
KAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJn
dW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShM
TElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2Fs
bExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5k
aWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVk
UmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVk
T3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0xOTQ0LDcgKzE5MjUsMTEgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdAogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChj
YWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkp
OyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFs
dWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3Vs
dCk7CkBAIC0yMjA1LDcgKzIxOTAsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDYXRjaAogewogICAgIG1fdXNlc0V4Y2VwdGlvbnMgPSB0cnVlOwogI2lmIEVOQUJMRShK
SVQpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5i
aW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5h
bWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X29wX2NhdGNoKSkpIH07CisjZWxzZQogICAgIEhhbmRsZXJJbmZvIGlu
Zm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygp
LnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2Nh
dGlvbkxhYmVsKCkgfTsKKyNlbmRpZgogI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBz
dGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCks
IG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoIH07CiAjZW5kaWYKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShy
ZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA0LDkgKzYwNCw3IEBAIHByaXZhdGU6CiAg
ICAgewogICAgICAgICBVTlVTRURfUEFSQU0obm9kZUluZGV4KTsKICAgICAgICAgCi0gICAgICAg
IFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
ay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAg
IEFTU0VSVChwcm9maWxlKTsKLSAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJv
ZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgICAgIFByZWRpY3RlZFR5cGUg
cHJlZGljdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9m
aWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogI2lmIERGR19F
TkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCJEeW5hbWljIFtAJXUsIGJjIyV1
XSBwcmVkaWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4LCBieXRlY29kZUluZGV4LCBwcmVkaWN0aW9u
VG9TdHJpbmcocHJlZGljdGlvbikpOwogI2VuZGlmCkBAIC0xMDQxLDYgKzEwMzksOSBAQCBib29s
IEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhib29sCiAgICAgCiAgICAgLy8gSWYgd2Ug
Z2V0IGhlcmUgdGhlbiBpdCBsb29rcyBsaWtlIHdlIHNob3VsZCBkZWZpbml0ZWx5IGlubGluZSB0
aGlzIGNvZGUuIFByb2NlZWQKICAgICAvLyB3aXRoIHBhcnNpbmcgdGhlIGNvZGUgdG8gZ2V0IGJ5
dGVjb2RlLCBzbyB0aGF0IHdlIGNhbiB0aGVuIHBhcnNlIHRoZSBieXRlY29kZS4KKyAgICAvLyBO
b3RlIHRoYXQgaWYgTExJbnQgaXMgZW5hYmxlZCwgdGhlIGJ5dGVjb2RlIHdpbGwgYWx3YXlzIGJl
IGF2YWlsYWJsZS4gQWxzbyBub3RlCisgICAgLy8gdGhhdCBpZiBMTEludCBpcyBlbmFibGVkLCB3
ZSBtYXkgaW5saW5lIGEgY29kZSBibG9jayB0aGF0IGhhcyBuZXZlciBiZWVuIEpJVHRlZAorICAg
IC8vIGJlZm9yZSEKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fY29kZUJsb2NrQ2FjaGUu
Z2V0KENvZGVCbG9ja0tleShleGVjdXRhYmxlLCBraW5kKSwgZXhwZWN0ZWRGdW5jdGlvbi0+c2Nv
cGUoKSk7CiAgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3
NDEsNyArMTc0Miw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQK
ICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fY3Vy
cmVudEluZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG1ldGhvZENhbGxTdGF0
dXMuaXNTZXQoKQotICAgICAgICAgICAgICAgICYmICFnZXRCeUlkU3RhdHVzLmlzU2V0KCkKKyAg
ICAgICAgICAgICAgICAmJiAhZ2V0QnlJZFN0YXR1cy53YXNTZWVuSW5KSVQoKQogICAgICAgICAg
ICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1f
Y3VycmVudEluZGV4LCBCYWRDYWNoZSkpIHsKICAgICAgICAgICAgICAgICAvLyBJdCdzIG1vbm9t
b3JwaGljIGFzIGZhciBhcyB3ZSBjYW4gdGVsbCwgc2luY2UgdGhlIG1ldGhvZF9jaGVjayB3YXMg
bGlua2VkCiAgICAgICAgICAgICAgICAgLy8gYnV0IHRoZSBzbG93IHBhdGggKGkuZS4gdGhlIG5v
cm1hbCBnZXRfYnlfaWQpIG5ldmVyIGZpcmVkLgpAQCAtMTgxMCw3ICsxODExLDkgQEAgYm9vbCBC
eXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAgICAgICBORVhUX09Q
Q09ERShvcF9nZXRfYnlfaWQpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
OiB7CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWw6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5z
dHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0
KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQg
aWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1
cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTEsNiArMTExLDggQEAgaW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAog
ICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAg
Y2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBv
cF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ug
b3Bfam1wOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhp
dENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwy
MSBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICB1aW50MzJfdCBl
eGl0SW5kZXggPSBnbG9iYWxEYXRhLT5vc3JFeGl0SW5kZXg7CiAgICAgT1NSRXhpdCYgZXhpdCA9
IGNvZGVCbG9jay0+b3NyRXhpdChleGl0SW5kZXgpOwogICAgIAorICAgIC8vIE1ha2Ugc3VyZSBh
bGwgY29kZSBvbiBvdXIgaW5saW5lIHN0YWNrIGlzIEpJVCBjb21waWxlZC4gVGhpcyBpcyBuZWNl
c3Nhcnkgc2luY2UKKyAgICAvLyB3ZSBtYXkgb3B0IHRvIGlubGluZSBhIGNvZGUgYmxvY2sgZXZl
biBiZWZvcmUgaXQgaGFkIGV2ZXIgYmVlbiBjb21waWxlZCBieSB0aGUKKyAgICAvLyBKSVQsIGJ1
dCBvdXIgT1NSIGV4aXQgaW5mcmFzdHJ1Y3R1cmUgY3VycmVudGx5IG9ubHkgd29ya3MgaWYgdGhl
IHRhcmdldCBvZiB0aGUKKyAgICAvLyBPU1IgZXhpdCBpcyBKSVQgY29kZS4gVGhpcyBjb3VsZCBi
ZSBjaGFuZ2VkIHNpbmNlIHRoZXJlIGlzIG5vdGhpbmcgcGFydGljdWxhcmx5CisgICAgLy8gaGFy
ZCBhYm91dCBkb2luZyBhbiBPU1IgZXhpdCBpbnRvIHRoZSBpbnRlcnByZXRlciwgYnV0IGZvciBu
b3cgdGhpcyBzZWVtcyB0byBtYWtlCisgICAgLy8gc2Vuc2UgaW4gdGhhdCBpZiB3ZSdyZSBPU1Ig
ZXhpdGluZyBmcm9tIGlubGluZWQgY29kZSBvZiBhIERGRyBjb2RlIGJsb2NrLCB0aGVuCisgICAg
Ly8gcHJvYmFibHkgaXQncyBhIGdvb2Qgc2lnbiB0aGF0IHRoZSB0aGluZyB3ZSdyZSBleGl0aW5n
IGludG8gaXMgaG90LiBFdmVuIG1vcmUKKyAgICAvLyBpbnRlcmVzdGluZ2x5LCBzaW5jZSB0aGUg
Y29kZSB3YXMgaW5saW5lZCwgaXQgbWF5IG5ldmVyIG90aGVyd2lzZSBnZXQgSklUCisgICAgLy8g
Y29tcGlsZWQgc2luY2UgdGhlIGFjdCBvZiBpbmxpbmluZyBpdCBtYXkgZW5zdXJlIHRoYXQgaXQg
b3RoZXJ3aXNlIG5ldmVyIHJ1bnMuCisgICAgZm9yIChDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBl
eGl0Lm1fY29kZU9yaWdpbjsgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGNvZGVPcmlnaW4g
PSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVyKSB7CisgICAgICAgIHN0YXRpY19j
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVj
dXRhYmxlLmdldCgpKQorICAgICAgICAgICAgLT5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3Jp
Z2luLmlubGluZUNhbGxGcmFtZS0+aXNDYWxsID8gQ29kZUZvckNhbGwgOiBDb2RlRm9yQ29uc3Ry
dWN0KQorICAgICAgICAgICAgLT5qaXRDb21waWxlKCpnbG9iYWxEYXRhKTsKKyAgICB9CisgICAg
CiAgICAgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkgPSAwOwogICAgIGlmIChleGl0Lm1f
cmVjb3ZlcnlJbmRleCkKICAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5zcGVjdWxhdGlv
blJlY292ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4IC0gMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEwNjQyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdP
U1JFeGl0LmgiCiAjaW5jbHVkZSAiREZHUmVwYXRjaC5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0
dXJuVmFsdWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbmxpbmVB
U00uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNjczLDUwICs2NzQsNiBAQCBzaXpl
X3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyCiAgICAgcmV0dXJuIEpTVmFsdWU6
OnN0cmljdEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOwotCi0jaWYgQ1BV
KFg4Nl82NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1T
WU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAt
NDAoJXIxMyksICVyMTNcbiIKLSAgICAibW92ICVyMTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lN
Qk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRl
KSAiXG4iCi0pOwotI2VsaWYgQ1BVKFg4NikKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklO
RyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6
IiAiXG4iCi0gICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVz
cClcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1h
c20gKAotIi50ZXh0IiAiXG4iCi0iLmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RS
SU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICJcbiIKLSIudGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZV
TkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJc
biIKLSAgICAiY3B5IHIwLCByNSIgIlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FU
SU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlm
Ci0KLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdp
dGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRy
YWNlcihnbG9iYWxEYXRhLCBleGVjKTsKLSAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKLX0KLQogc3RhdGljIHZv
aWQqIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBl
eGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVh
cC5jcHAJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzcsNyArODM3LDcgQEAgdm9pZCBIZWFwOjpjb2xs
ZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZwogICAgICAgICBzZXRIaWdoV2F0ZXJNYXJrKG1heChw
cm9wb3J0aW9uYWxCeXRlcywgbV9taW5CeXRlc1BlckN5Y2xlKSk7CiAgICAgfQogICAgIEpBVkFT
Q1JJUFRDT1JFX0dDX0VORCgpOwotCisgICAgCiAgICAgKCptX2FjdGl2aXR5Q2FsbGJhY2spKCk7
CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDEwNjQyMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAt
NDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAg
ICAgY2xhc3MgSlNWYWx1ZTsKICAgICBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CisgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVy
OwogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZTsKICAgICBjbGFzcyBVU3RyaW5nOwpAQCAtMTM1LDEx
ICsxMzYsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZ2V0Q29uc2VydmF0aXZl
UmVnaXN0ZXJSb290cyhIYXNoU2V0PEpTQ2VsbCo+JiByb290cyk7CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOworICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkU3BhY2U7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNzIEJ1
bXBTcGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwotICAgICAgICBmcmll
bmQgY2xhc3MgQ29kZUJsb2NrOwogCiAgICAgICAgIHNpemVfdCB3YXRlck1hcmsoKTsKICAgICAg
ICAgc2l6ZV90IGhpZ2hXYXRlck1hcmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya1N0YWNrLmNwcAkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw3IEBA
IEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbigKICNlbmRpZgogCiAgICAg
QVNTRVJUKEhlYXA6OmlzTWFya2VkKGNlbGwpKTsKLQorICAgIAogICAgIGlmIChpc0pTU3RyaW5n
KGNlbGwpKSB7CiAgICAgICAgIEpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlND
ZWxsKj4oY2VsbCksIHZpc2l0b3IpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQw
LDYgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBIZWFwOwogY2xhc3MgSlNDZWxsOwog
Y2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
Y2xhc3MgV2Vha0dDSGFuZGxlOwogY2xhc3MgU2xvdFZpc2l0b3I7CiAKQEAgLTg3LDYgKzg4LDgg
QEAgcHVibGljOgogICAgIHZvaWQgZnJlZUJsb2NrcyhNYXJrZWRCbG9jayogaGVhZCk7CiAKIHBy
aXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAg
ICB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKFNpemVDbGFzcyYpOwogICAgIHZvaWQqIHRyeUFsbG9j
YXRlSGVscGVyKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0
ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyMiw2ICsxMjIsOSBAQCBuYW1lc3BhY2UgSlNDICB7CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVS
KQogICAgICAgICBJbnN0cnVjdGlvbiogcmV0dXJuVlBDKCkgY29uc3QgeyByZXR1cm4gdGhpc1tS
ZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKTsgfQogI2VuZGlmCisjaWYgRU5BQkxFKExMSU5U
KQorICAgICAgICBJbnN0cnVjdGlvbiogY3VycmVudFZQQygpIGNvbnN0IHsgcmV0dXJuIGJpdHdp
c2VfY2FzdDxJbnN0cnVjdGlvbio+KHRoaXNbUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50XS50
YWcoKSk7IH0KKyNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1l
KiBjYWxsZXJGcmFtZSkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmls
ZTo6Q2FsbGVyRnJhbWVdID0gY2FsbGVyRnJhbWU7IH0KICAgICAgICAgdm9pZCBzZXRTY29wZUNo
YWluKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4o
dGhpcylbUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluXSA9IHNjb3BlQ2hhaW47IH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAko
cmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQAogI2luY2x1ZGUg
IkpJVC5oIgogI2VuZGlmCiAKLSNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JL
QVJPVU5EIChFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgJiYgIWRlZmluZWQoX19s
bHZtX18pKQorI2RlZmluZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQgKChF
TkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkgJiYgIWRl
ZmluZWQoX19sbHZtX18pKQogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC01NDcsMTcgKzU0
Nyw0MyBAQCBJbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIoKQogewogfQogCi12b2lkIEludGVycHJl
dGVyOjppbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKQorSW50ZXJwcmV0ZXI6On5JbnRlcnByZXRl
cigpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxF
KExMSU5UKQorICAgIGlmIChtX2VuYWJsZWQpCisgICAgICAgIGRlbGV0ZVtdIG1fb3Bjb2RlVGFi
bGU7CisjZW5kaWYKK30KKwordm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShMTEludDo6RGF0
YSogbGxpbnREYXRhLCBib29sIGNhblVzZUpJVCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGxpbnRE
YXRhKTsKKyAgICBVTlVTRURfUEFSQU0oY2FuVXNlSklUKTsKKyNpZiBFTkFCTEUoQ09NUFVURURf
R09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoQ09NUFVURURf
R09UT19JTlRFUlBSRVRFUikKKyAgICAvLyBIYXZpbmcgTExJbnQgZW5hYmxlZCwgYnV0IG5vdCBi
ZWluZyBhYmxlIHRvIHVzZSB0aGUgSklULCBhbmQgbm90IGhhdmluZworICAgIC8vIGEgY29tcHV0
ZWQgZ290byBpbnRlcnByZXRlciwgaXMgbm90IHN1cHBvcnRlZC4gTm90IGJlY2F1c2Ugd2UgY2Fu
bm90CisgICAgLy8gc3VwcG9ydCBpdCwgYnV0IGJlY2F1c2UgSSBkZWNpZGVkIHRvIGRyYXcgdGhl
IGxpbmUgYXQgdGhlIG51bWJlciBvZgorICAgIC8vIHBlcm11dGF0aW9ucyBvZiBleGVjdXRpb24g
ZW5naW5lcyB0aGF0IEkgd2FudGVkIHRoaXMgY29kZSB0byBncm9rLgorICAgIEFTU0VSVChjYW5V
c2VKSVQpOworI2VuZGlmCiAgICAgaWYgKGNhblVzZUpJVCkgeworI2lmIEVOQUJMRShMTElOVCkK
KyAgICAgICAgbV9vcGNvZGVUYWJsZSA9IGxsaW50RGF0YS0+b3Bjb2RlTWFwKCk7CisgICAgICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpCisgICAgICAgICAgICBtX29w
Y29kZUlEVGFibGUuYWRkKG1fb3Bjb2RlVGFibGVbaV0sIHN0YXRpY19jYXN0PE9wY29kZUlEPihp
KSk7CisjZWxzZQogICAgICAgICAvLyBJZiB0aGUgSklUIGlzIHByZXNlbnQsIGRvbid0IHVzZSBq
dW1wIGRlc3RpbmF0aW9ucyBmb3Igb3Bjb2Rlcy4KICAgICAgICAgCiAgICAgICAgIGZvciAoaW50
IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpIHsKICAgICAgICAgICAgIE9wY29kZSBvcGNv
ZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaSkpOwogICAg
ICAgICAgICAgbV9vcGNvZGVUYWJsZVtpXSA9IG9wY29kZTsKICAgICAgICAgfQorI2VuZGlmCiAg
ICAgfSBlbHNlIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bjb2RlVGFibGUgPSBu
ZXcgT3Bjb2RlW251bU9wY29kZUlEc107CisjZW5kaWYKICAgICAgICAgcHJpdmF0ZUV4ZWN1dGUo
SW5pdGlhbGl6ZUFuZFJldHVybiwgMCwgMCk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQpAQCAtNTY2LDcgKzU5Miw2IEBAIHZvaWQgSW50
ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBjYW5Vc2UKICAgICAgICAgbV9lbmFibGVkID0gdHJ1
ZTsKICAgICB9CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShjYW5Vc2VKSVQpOwogI2lmIEVOQUJM
RShJTlRFUlBSRVRFUikKICAgICBtX2VuYWJsZWQgPSB0cnVlOwogI2Vsc2UKQEAgLTY2Nyw5ICs2
OTIsMTEgQEAgdm9pZCBJbnRlcnByZXRlcjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbQogCiBib29s
IEludGVycHJldGVyOjppc09wY29kZShPcGNvZGUgb3Bjb2RlKQogewotI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJF
VEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJMRShMTElOVCkKICAgICBpZiAoIW1fZW5h
YmxlZCkKICAgICAgICAgcmV0dXJuIG9wY29kZSA+PSAwICYmIHN0YXRpY19jYXN0PE9wY29kZUlE
PihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKSA8PSBvcF9lbmQ7CisjZW5kaWYKICAg
ICByZXR1cm4gb3Bjb2RlICE9IEhhc2hUcmFpdHM8T3Bjb2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAg
ICAgICYmICFIYXNoVHJhaXRzPE9wY29kZT46OmlzRGVsZXRlZFZhbHVlKG9wY29kZSkKICAgICAg
ICAgJiYgbV9vcGNvZGVJRFRhYmxlLmNvbnRhaW5zKG9wY29kZSk7CkBAIC03MjYsMTEgKzc1Mywx
MSBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2
ZSB0byBzdWJ0cmFjdCAxLgogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShJTlRFUlBSRVRFUikK
ICAgICBpZiAoY2FsbGVyRnJhbWUtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkKLSAgICAgICAg
Ynl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0
dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9m
ZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICAgICBlbHNlCiAgICAg
ICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUt
PnJldHVyblZQQygpKSAtIDE7CiAjZWxpZiBFTkFCTEUoSklUKQotICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAg
IGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwg
Y2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbHNlCiAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2Rl
QmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbmRp
ZgpAQCAtODA3LDEwICs4MzQsMTAgQEAgc3RhdGljIHZvaWQgZ2V0Q2FsbGVyTGluZShKU0dsb2Jh
bERhdGEqIAogICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNv
ZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSk7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBl
bHNlCi0gICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9m
ZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNh
bGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLCBj
YWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAjZWxzZQotICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkp
OworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChj
YWxsRnJhbWUtPmNhbGxlckZyYW1lKCksIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYK
IAogICAgIGxpbmVOdW1iZXIgPSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29k
ZU9mZnNldChieXRlY29kZU9mZnNldCAtIDEpOwpAQCAtMzQwNyw2ICszNDM0LDggQEAgc2tpcF9p
ZF9jdXN0b21fc2VsZjoKICNpZiBVU0UoR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCkKICAg
ICAgIHNraXBfcHV0X2J5X2lkOgogI2VuZGlmCisgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3QpCisgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9ub3JtYWwpCiAgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bikgewogICAgICAgICAvKiBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiBiYXNlKHIpIHByb3BlcnR5
KGlkKSB2YWx1ZShyKSBvbGRTdHJ1Y3R1cmUoc0lEKSBuZXdTdHJ1Y3R1cmUoc0lEKSBzdHJ1Y3R1
cmVDaGFpbihjaGFpbikgb2Zmc2V0KG4pIGRpcmVjdChiKQogICAgICAgICAgCkBAIC01MjM5LDEw
ICs1MjY4LDEwIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcihDYWwKICAg
ICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNh
bGxGcmFtZS0+cmV0dXJuVlBDKCkpOwogI2lmIEVOQUJMRShKSVQpCiAgICAgZWxzZQotICAgICAg
ICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZy
YW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwog
I2VuZGlmCiAjZWxzZQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRl
Y29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0g
Y2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5y
ZXR1cm5QQygpKTsKICNlbmRpZgogICAgIGxpbmVOdW1iZXIgPSBjYWxsZXJDb2RlQmxvY2stPmxp
bmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCAtIDEpOwogICAgIHNvdXJj
ZUlEID0gY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5o
CShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3Qu
aCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRl
ICJSZWdpc3RlckZpbGUuaCIKIApAQCAtNDYsNiArNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBFeGVjdXRhYmxlQmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAg
ICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogICAgIGNsYXNzIFByb2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAg
IGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwpAQCAtMTU0LDE5ICsxNTYsMjEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBJbnRlcnByZXRlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwotICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3Mg
Q2FjaGVkQ2FsbDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICBwdWJsaWM6CiAgICAgICAgIEludGVycHJl
dGVyKCk7CisgICAgICAgIH5JbnRlcnByZXRlcigpOwogICAgICAgICAKLSAgICAgICAgdm9pZCBp
bml0aWFsaXplKGJvb2wgY2FuVXNlSklUKTsKKyAgICAgICAgdm9pZCBpbml0aWFsaXplKExMSW50
OjpEYXRhKiwgYm9vbCBjYW5Vc2VKSVQpOwogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0
ZXJGaWxlKCkgeyByZXR1cm4gbV9yZWdpc3RlckZpbGU7IH0KICAgICAgICAgCiAgICAgICAgIE9w
Y29kZSBnZXRPcGNvZGUoT3Bjb2RlSUQgaWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VS
VChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikK
KyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQog
ICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlVGFibGVbaWRdOwogI2Vsc2UKICAgICAgICAgICAg
IHJldHVybiBpZDsKQEAgLTE3Niw3ICsxODAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IE9wY29kZUlEIGdldE9wY29kZUlEKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICAgICAgICAg
ICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRF
UlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUo
b3Bjb2RlKSk7CisgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVJRFRhYmxlLmdldChvcGNvZGUp
OworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgICAgICBB
U1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7CiAgICAgICAgICAgICBpZiAoIW1fZW5hYmxlZCkKICAg
ICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1
aW50cHRyX3Q+KG9wY29kZSkpOwpAQCAtMTg2LDYgKzE5MywxMSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBvcGNvZGU7CiAjZW5kaWYKICAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgYm9vbCBlbmFibGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1f
ZW5hYmxlZDsKKyAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIApA
QCAtMjU1LDcgKzI2NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlckZp
bGUgbV9yZWdpc3RlckZpbGU7CiAgICAgICAgIAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lO
VEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgT3Bjb2RlKiBtX29wY29kZVRh
YmxlOyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCisgICAgICAgIEhh
c2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9
PiBPcGNvZGVJRCBmb3IgZGVjb21waWxpbmcKKyNlbGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lO
VEVSUFJFVEVSKQogICAgICAgICBPcGNvZGUgbV9vcGNvZGVUYWJsZVtudW1PcGNvZGVJRHNdOyAv
LyBNYXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCiAgICAgICAgIEhhc2hNYXA8
T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNv
ZGVJRCBmb3IgZGVjb21waWxpbmcKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkocmV2aXNpb24gMTA2NDIzKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29u
c2VydmF0aXZlUm9vdHM7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBSZWdpc3RlckZpbGUgewogICAgICAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShSZWdpc3RlckZpbGUpOwpAQCAtODEsNiArODIsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgZ3Jvd1Ns
b3dDYXNlKFJlZ2lzdGVyKik7CiAgICAgICAgIHZvaWQgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7
CiAgICAgICAgIHZvaWQgYWRkVG9Db21taXR0ZWRCeXRlQ291bnQobG9uZyk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFs
dWUuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisKKyNpZiBDT01QSUxFUihHQ0MpCisKKyNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJJbmxpbmVBU00uaCIKKyNpbmNsdWRlICJKU09iamVj
dC5oIgorI2luY2x1ZGUgIkpTVmFsdWVJbmxpbmVNZXRob2RzLmgiCisjaW5jbHVkZSAiU2NvcGVD
aGFpbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBI
T1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4
ZWNTdGF0ZShFeGVjU3RhdGUqKTsKKworI2lmIENQVShYODZfNjQpCithc20gKAorIi5nbG9ibCAi
IFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0wo
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCisgICAgIm1v
diAlcjEzLCAlcmRpXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRI
b3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShYODYp
Cithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkg
IlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NU
UklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVlZGkp
LCAlZWRpXG4iCisgICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCisgICAgImptcCAiIFNZTUJPTF9T
VFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxu
IgorKTsKKyNlbGlmIENQVShBUk1fVEhVTUIyKQorYXNtICgKKyIudGV4dCIgIlxuIgorIi5hbGln
biAyIiAiXG4iCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCisiLnRodW1i
IiAiXG4iCisiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJc
biIKKyAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCisgICAgImNweSByMCwgcjUiICJcbiIK
KyAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVl
V2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbmRpZgorCitleHRlcm4gIkMiIEVuY29kZWRKU1Zh
bHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVX
aXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDT01QSUxFUihHQ0MpCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKyNkZWZpbmUg
SG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKy8v
IFVuZm9ydHVuYXRlbHkgdGhpcyBvbmx5IHdvcmtzIG9uIEdDQy1saWtlIGNvbXBpbGVycy4gQW5k
IGl0J3MgY3VycmVudGx5IG9ubHkgdXNlZAorLy8gYnkgTExJbnQgYW5kIERGRywgd2hpY2ggYWxz
byBhcmUgcmVzdHJpY3RlZCB0byBHQ0MtbGlrZSBjb21waWxlcnMuIFdlIHNob3VsZAorLy8gcHJv
YmFibHkgZml4IHRoYXQgYXQgc29tZSBwb2ludC4KKyNpZiBDT01QSUxFUihHQ0MpCisKKyNpZiBD
QUxMSU5HX0NPTlZFTlRJT05fSVNfU1REQ0FMTAorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZB
TFVFX09QVElPTiBDREVDTAorI2Vsc2UKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9P
UFRJT04KKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFs
dWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgp
OworfQorCisjZW5kaWYgLy8gQ09NUElMRVIoR0NDKQorCisjZW5kaWYgLy8gSG9zdENhbGxSZXR1
cm5WYWx1ZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEw
NjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzI1LDYgKzMyNSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkK
ICAgICAgICAgREVGSU5FX09QKG9wX3Byb2ZpbGVfd2lsbF9jYWxsKQogICAgICAgICBERUZJTkVf
T1Aob3BfcHVzaF9uZXdfc2NvcGUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX3Njb3BlKQor
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9PUChvcF9w
dXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaW5kZXgpCiAgICAgICAgIERF
RklORV9PUChvcF9wdXRfYnlfdmFsKQpAQCAtNDg2LDYgKzQ4OCw4IEBAIHZvaWQgSklUOjpwcml2
YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0
X2luYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWw6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfcmVzb2x2ZV9nbG9iYWwpCkBAIC01MjUsNiArNTI5LDEwIEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAKIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShD
b2RlUHRyKiBmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaykKIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJP
U0VfT1NSKQorICAgIHByaW50ZigiQ29tcGlsaW5nIEpJVCBjb2RlIVxuIik7CisjZW5kaWYKKyAg
ICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiAgICAgbV9jYW5CZU9wdGltaXplZCA9IG1f
Y29kZUJsb2NrLT5jYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC02ODksOCArNjk3LDEy
IEBAIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAgICAgICAgaW5m
by5jYWxsUmV0dXJuTG9jYXRpb24gPSBtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8obV9t
ZXRob2RDYWxsQ29tcGlsYXRpb25JbmZvW2ldLnByb3BlcnR5QWNjZXNzSW5kZXgpLmNhbGxSZXR1
cm5Mb2NhdGlvbjsKICAgICB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAobV9jYW5C
ZU9wdGltaXplZCkgeworI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCisgICAg
aWYgKG1fY2FuQmVPcHRpbWl6ZWQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHx8IHRydWUK
KyNlbmRpZgorICAgICAgICApIHsKICAgICAgICAgQ29tcGFjdEpJVENvZGVNYXA6OkVuY29kZXIg
aml0Q29kZU1hcEVuY29kZXI7CiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQg
PSAwOyBieXRlY29kZU9mZnNldCA8IG1fbGFiZWxzLnNpemUoKTsgKytieXRlY29kZU9mZnNldCkg
ewogICAgICAgICAgICAgaWYgKG1fbGFiZWxzW2J5dGVjb2RlT2Zmc2V0XS5pc1NldCgpKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3
ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKSVRDb2RlKCkgeyB9CiAjZW5kaWYK
ICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gSklUVHlwZSB7IEhvc3RDYWxsVGh1bmssIEJhc2Vs
aW5lSklULCBERkdKSVQgfTsKKyAgICAgICAgZW51bSBKSVRUeXBlIHsgTm9uZSwgSG9zdENhbGxU
aHVuaywgSW50ZXJwcmV0ZXJUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OwogICAgICAgICAK
ICAgICAgICAgc3RhdGljIEpJVFR5cGUgYm90dG9tVGllckpJVCgpCiAgICAgICAgIHsKQEAgLTY2
LDggKzY2LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIERGR0pJVDsK
ICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3RhdGljIGJvb2wgaXNPcHRpbWl6aW5nSklU
KEpJVFR5cGUgaml0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUg
PT0gREZHSklUOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgYm9vbCBpc0Jh
c2VsaW5lQ29kZShKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBqaXRUeXBlID09IEludGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBCYXNlbGluZUpJVDsK
KyAgICAgICAgfQorICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBKSVRDb2RlKCkK
KyAgICAgICAgICAgIDogbV9qaXRUeXBlKE5vbmUpCiAgICAgICAgIHsKICAgICAgICAgfQogCkBA
IC03NSw2ICs4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgOiBtX3JlZihyZWYp
CiAgICAgICAgICAgICAsIG1faml0VHlwZShqaXRUeXBlKQogICAgICAgICB7CisgICAgICAgICAg
ICBBU1NFUlQoaml0VHlwZSAhPSBOb25lKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
Ym9vbCBvcGVyYXRvciAhKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklURHJpdmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRE
cml2ZXIuaAkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVREcml2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDIxIEBACiAjaW5jbHVkZSAi
Qnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNpbmNsdWRlICJK
SVQuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCiAKIG5hbWVzcGFjZSBKU0Mgewog
CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgogaW5saW5lIGJvb2wgaml0Q29tcGls
ZUlmQXBwcm9wcmlhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2Nr
VHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRU
eXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21p
bmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAo
aml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0
cnlDb21waWxlKGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CkBAIC01NSwx
MCArNjEsNyBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShKU0dsCiAgICAg
ICAgIH0KICAgICAgICAgaml0Q29kZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJs
b2NrLmdldCgpKTsKICAgICB9Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYg
KCFCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVC
bG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgorICAg
IGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBj
b2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwog
ICAgIAogICAgIHJldHVybiB0cnVlOwpAQCAtNjYsOSArNjksMTQgQEAgaW5saW5lIGJvb2wgaml0
Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbAogCiBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rp
b25JZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9u
Q29kZUJsb2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHImIGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xU
YWJsZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNv
ZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBp
ZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAor
ICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZn
Q29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAg
ICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlRnVuY3Rpb24oZ2xvYmFsRGF0YSwg
Y29kZUJsb2NrLmdldCgpLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwpAQCAtODMs
MTEgKzkxLDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaQogICAg
ICAgICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNvZGVC
bG9jay5nZXQoKSwgJmppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgfQotI2lmICFFTkFCTEUo
T1BDT0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJh
dGVkQ29kZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09w
cG9ydHVuaXR5KCk7Ci0jZW5kaWYKLSAgICAKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2Rl
RGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENv
ZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJldmlzaW9u
IDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5lcmlj
VGhyb3coSlNHbG9iYWxEYQogCiBFeGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uVmFs
dWUsIFJldHVybkFkZHJlc3NQdHIgZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1cm4gZ2VuZXJp
Y1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+
Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAgICByZXR1cm4g
Z2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1bHRMb2NhdGlv
bikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAko
cmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NDYsNiArMTQ0Niw3IEBAIERFRklORV9TVFVCX0ZVTkNU
SU9OKHZvaWQsIG9wX3B1dF9ieV9pZF8KICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJh
bWUtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBzdGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIEFTU0VSVChiYXNlVmFsdWUuaXNP
YmplY3QoKSk7CisgICAgCiAgICAgYXNPYmplY3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGNhbGxG
cmFtZS0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwg
c2xvdCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGFja0ZyYW1lLmNhbGxG
cmFtZS0+Y29kZUJsb2NrKCk7CkBAIC0xOTMxLDcgKzE5MzIsNyBAQCBERUZJTkVfU1RVQl9GVU5D
VElPTih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0
YWNrRnJhbWUuYXJnc1swXS5pbnQzMigpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikK
LSAgICBwcmludGYoIkVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50
ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVs
YXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJs
b2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlv
bkRlbGF5Q291bnRlcigpKTsKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkIG9wdGltaXplX2Zyb21f
bG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVy
ID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2ssIGNvZGVC
bG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5
Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKICNlbmRp
ZgogCiAgICAgaWYgKGNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewpAQCAt
MjE4Niw0NSArMjE4NywxMyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3Ry
dWN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVj
a0ZvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBh
c0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVlKCkpOwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hv
c3RGdW5jdGlvbigpKTsKLSAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpz
RXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdU
aGlzKCk7Ci0KLSAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3Qg
Y2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAg
ICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0
ZXJzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28g
ZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxs
IGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9
IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXM7Ci0gICAgUmVnaXN0ZXIqIHNyYyA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVn
aXN0ZXIqIGRzdCA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBp
OwotICAgIGludCBlbmQgPSAtQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpOwotICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3Rb
aV0gPSBzcmNbaV07Ci0KLSAgICBlbmQgLT0gZGVsdGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsg
LS1pKQotICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBu
ZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCop
bmV3Q2FsbEZyYW1lIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxs
RnJhbWU7Ci19Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hl
Y2spCiB7CiAgICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFt
ZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVn
aXN0ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBD
b21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lz
dGVyRmlsZSwgQ29kZUZvckNhbGwpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICBy
ZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJh
bWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJh
bWUtPmNhbGxlckZyYW1lKCkpKTsKIApAQCAtMjIzNyw3ICsyMjA2LDcgQEAgREVGSU5FX1NUVUJf
RlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0g
YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9y
Q29uc3RydWN0KTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRo
czo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2Rl
Rm9yQ29uc3RydWN0KTsKICAgICBpZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVC
X1JFVFVSTl9BRERSRVNTLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxs
ZXJGcmFtZSgpKSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZh
Y2VKSVQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJm
YWNlSklULmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5k
ZWYgSlNJbnRlcmZhY2VKSVRfaAogI2RlZmluZSBKU0ludGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRl
ICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUg
IkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgi
CiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9u
X2gKKworI2RlZmluZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0hF
TFBFUl9UUkFDSU5HIDAKKworI2VuZGlmIC8vIExMSW50Q29tbW9uX2gKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCisKKyNpZiBFTkFC
TEUoTExJTlQpCisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkxvd0xldmVs
SW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBMTEludCB7CisKK0RhdGE6OkRhdGEoKQorICAgIDogbV9leGNlcHRpb25JbnN0cnVj
dGlvbnMobmV3IEluc3RydWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdKQorICAgICwgbV9vcGNv
ZGVNYXAobmV3IE9wY29kZVtudW1PcGNvZGVJRHNdKQoreworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAgICAgICBtX2V4Y2VwdGlvbkluc3RydWN0
aW9uc1tpXS51LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19mcm9t
X2hlbHBlcl90cmFtcG9saW5lKTsKKyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3Ro
KSBtX29wY29kZU1hcFtvcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNv
ZGUpOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkpOworI3VuZGVmIE9QQ09E
RV9FTlRSWQorfQorCitEYXRhOjp+RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9leGNlcHRpb25J
bnN0cnVjdGlvbnM7CisgICAgZGVsZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIExMSW50RGF0YV9oCisjZGVmaW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRlICJPcGNvZGUu
aCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVj
dCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKworI2lmIEVOQUJMRShMTElOVCkK
K2NsYXNzIERhdGEgeworcHVibGljOgorICAgIERhdGEoKTsKKyAgICB+RGF0YSgpOworICAgIAor
ICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUq
IG9wY29kZU1hcCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgfQor
cHJpdmF0ZToKKyAgICBJbnN0cnVjdGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAg
T3Bjb2RlKiBtX29wY29kZU1hcDsKK307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQpCisKKyNpZiBD
T01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlmCisKK2Ns
YXNzIERhdGEgeworcHVibGljOgorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlv
bnMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfTsKKwor
I2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlm
CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTElu
dAorCisjZW5kaWYgLy8gTExJbnREYXRhX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5o
IgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUg
IkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAiTG93
TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsK
Kwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciYgYXJpdHlDaGVjaykKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklU
KCkpIHsKKyAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgIGpp
dENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgICAg
IGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3Qp
OworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3Vl
KSkpKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNh
bGwpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1
bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRo
dW5rKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlv
bkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGpp
dENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVj
dEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBh
cml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJp
dHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7Cit9CisKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9p
bnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlm
ICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6
SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2Rl
UmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9ldmFs
X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2Rl
ID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3Ip
LCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKK30KKwordm9pZCBnZXRQcm9ncmFtRW50cnlw
b2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUpCit7CisgICAg
aWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2Rl
OjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENv
ZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3By
b2dyYW1fcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGpp
dENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dl
bmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQorCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVudHJ5cG9pbnRzX2gKKyNkZWZpbmUgTExJbnRF
bnRyeXBvaW50c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShM
TElOVCkKKworI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEV2YWxDb2RlQmxvY2s7CitjbGFzcyBKSVRDb2RlOworY2xhc3MgSlNH
bG9iYWxEYXRhOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworY2xhc3MgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmOworY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKKworbmFtZXNwYWNlIExMSW50
IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCwgSklUQ29kZSYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVj
ayk7Cit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKK3Zv
aWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYpOworCitpbmxp
bmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXZhbENvZGVC
bG9jayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0RXZhbEVudHJ5cG9pbnQoZ2xvYmFs
RGF0YSwgaml0Q29kZSk7Cit9CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBQcm9ncmFtQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sK
KyAgICBnZXRQcm9ncmFtRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNl
bmRpZiAvLyBMTEludEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorCisj
aWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29k
ZUJsb2NrLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJKSVRFeGNlcHRp
b25zLmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVy
cHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGlu
dGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJf
VFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzLlxuIiwgZ2xvYmFsRGF0
YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KAor
ICAgICAgICBnbG9iYWxEYXRhLCBleGVjLT5jYWxsZXJGcmFtZSgpLCBnbG9iYWxEYXRhLT5leGNl
cHRpb24sCisgICAgICAgIGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpLT5ieXRlY29k
ZU9mZnNldChleGVjLT5jYWxsZXJGcmFtZSgpLCBleGVjLT5yZXR1cm5QQygpKSk7Cit9CisKK0lu
c3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhl
YykKK3sKKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmxsaW50RGF0YS5leGNlcHRpb25J
bnN0cnVjdGlvbnMoKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRl
KiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
ID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHBy
aW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93KS5cbiIsIGdsb2JhbERh
dGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdyhn
bG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJs
b2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBnbG9iYWxE
YXRhLT5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK3ZvaWQqIGNhbGxU
b1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVS
X1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAoY2FsbFRvVGhyb3cp
LlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAg
Z2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMg
LSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisgICAg
cmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1w
b2xpbmUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2Vw
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
eGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEV4Y2Vw
dGlvbnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKExMSU5U
KQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0
aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisvLyBUaHJvdyB0aGUgY3VycmVudGx5IGFjdGl2
ZSBleGNlcHRpb24gaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNhbGxlcidzIGNhbGwgZnJhbWUuCit2
b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqKTsKKworLy8gVGVsbHMgeW91
IHdoZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0dXJuLXRvLXRocm93LCBhZnRlciB5
b3UndmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gdGhyb3cg
dGhlIGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0
aW9uKEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0aGUgY3VycmVudCBQQyBpbiB0aGUgZ2xvYmFs
IGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlvdSBhIFBDCisvLyB0aGF0IHlvdSBj
YW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4gYWR2YW5jZWQgYmV0
d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0cnVjdGlvbiIgdGhh
dCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBleGNlcHRpb24gaGFuZGxlci4gTm90
ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nLAorLy8g
aXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhhdCBQQyB3aXRob3V0IGRvaW5nIGFu
eXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVhZCBleGNlcHRpb24gaGFuZGxpbmcg
dGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5CisvLyBvdGhlciBoZWxwZXJz
LgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsK
KworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxsIHRodW5rLgordm9p
ZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBM
TEludEV4Y2VwdGlvbnNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTQyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEhlbHBlcnMuaCIKKworI2lmIEVOQUJMRShMTElO
VCkKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2lu
Y2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2lu
Y2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgor
I2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0
aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxP
YmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisj
aW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisj
aW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAi
TExJbnRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7
CisKKyNkZWZpbmUgTExJTlRfQkVHSU4oKSBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZl
eGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpCisKKyNkZWZpbmUgTExJTlRfT1AoaW5kZXgpIChleGVj
LT51bmNoZWNrZWRSKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorI2RlZmluZSBMTElOVF9PUF9DKGlu
ZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5vcGVyYW5kKSkKKworI2RlZmluZSBMTElOVF9SRVRV
Uk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsgICAgICAgXAorICAgICAgICB1bmlvbiB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgc3RydWN0IHsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGE7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGI7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSBwYWlyOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50NjRfdCBpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICB9IF9fcnRfdTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5hID0gZmlyc3Q7ICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5iID0gc2Vjb25kOyAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICByZXR1cm4gX19ydF91Lmk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORF9JTVBMKCkgTExJ
TlRfUkVUVVJOX1RXTyhwYywgZXhlYykKKworI2RlZmluZSBMTElOVF9USFJPVyhleGNlcHRpb25U
b1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERh
dGEmIF9fdF9nbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOyAgICAgICAgXAorICAgICAg
ICBfX3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAg
ICAgXAorICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVm
aW5lIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSB7ICAgXAor
ICAgICAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORCgpIGRvIHsgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAg
ICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQlJBTkNIKG9w
Y29kZSwgY29uZGl0aW9uKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYm9v
bCBfX2JfY29uZGl0aW9uID0gKGNvbmRpdGlvbik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9fYl9jb25kaXRpb24pICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IHBjW09QQ09ERV9MRU5H
VEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsgICAgICAgIFwKKyAgICAgICAgZWxzZSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bjb2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRV
Uk4odmFsdWUpIGRvIHsgICAgICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcl9yZXR1
cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9PUCgxKSA9IF9fcl9yZXR1cm5WYWx1
ZTsgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9QUk9G
SUxFRChvcGNvZGUsIHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVl
IF9fcnBfcmV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIExMSU5UX09QKDEpID0gX19ycF9yZXR1cm5WYWx1ZTsgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51LnBy
b2ZpbGUtPm1fYnVja2V0c1swXSA9IFwKKyAgICAgICAgICAgIEpTVmFsdWU6OmVuY29kZShfX3Jw
X3JldHVyblZhbHVlKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBM
KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUg
KGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfRU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkg
TExJTlRfUkVUVVJOX1RXTygoY2FsbFRhcmdldCksIChleGVjKSkKKworI2RlZmluZSBMTElOVF9D
QUxMX1RIUk9XKGV4ZWMsIHBjLCBleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAg
XAorICAgICAgICBFeGVjU3RhdGUqIF9fY3RfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jdF9wYyA9IChwYyk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERh
dGEmIF9fY3RfZ2xvYmFsRGF0YSA9IChfX2N0X2V4ZWMpLT5nbG9iYWxEYXRhKCk7ICAgICAgXAor
ICAgICAgICBfX2N0X2dsb2JhbERhdGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3RfZXhlYywg
Y2FsbFRvVGhyb3coX19jdF9leGVjLCBfX2N0X3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkK
KworI2RlZmluZSBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYykgZG8geyAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhl
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlv
biogX19jY2VfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBpZiAoVU5MSUtFTFkoX19jY2VfZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikp
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9l
eGVjLCBjYWxsVG9UaHJvdyhfX2NjZV9leGVjLCBfX2NjZV9wYykpOyBcCisgICAgfSB3aGlsZSAo
ZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9SRVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQp
IGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2NyX2V4ZWMg
PSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5z
dHJ1Y3Rpb24qIF9fY3JfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgdm9pZCogX19jcl9jYWxsVGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJ
T04oX19jcl9leGVjLT5jYWxsZXJGcmFtZSgpLCBfX2NyX3BjKTsgIFwKKyAgICAgICAgTExJTlRf
Q0FMTF9FTkRfSU1QTChfX2NyX2V4ZWMsIF9fY3JfY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAg
IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxs
aW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBm
cm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5n
IGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkXG4iLAorICAgICAgICAgICBleGVjLT5j
b2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAor
ICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBj
WzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJvbVdoZXJlLAorICAgICAgICAgICBvcGVyYW5k
LAorICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQpOworICAgIExMSU5UX0VORCgpOwor
fQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0
YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQor
eworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKG9wZXJhbmQpLmpzVmFsdWUoKTsKKyAg
ICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCB0YWc7Cisg
ICAgICAgICAgICB1aW50MzJfdCBwYXlsb2FkOworICAgICAgICB9IGJpdHM7CisgICAgICAgIEVu
Y29kZWRKU1ZhbHVlIGFzVmFsdWU7CisgICAgfSB1OworICAgIHUuYXNWYWx1ZSA9IEpTVmFsdWU6
OmVuY29kZSh2YWx1ZSk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBv
cCMldTogVHJhY2UoJWQpOiAlZDogJWQ6ICUwOHg6JTA4eCIsCisgICAgICAgICAgIGV4ZWMtPmNv
ZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRw
dHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisg
ICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNb
MF0udS5vcGNvZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUsCisgICAgICAgICAgIG9wZXJhbmQs
CisgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCwKKyAgICAgICAgICAgdS5iaXRzLnRh
ZywKKyAgICAgICAgICAgdS5iaXRzLnBheWxvYWQpOworI2lmbmRlZiBOREVCVUcKKyAgICBwcmlu
dGYoIjogJXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIHByaW50ZigiXG4i
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9n
dWUpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiBwcm9sb2d1ZS5cbiIsIGV4ZWMtPmNvZGVC
bG9jaygpLCBleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworc3RhdGljIHZvaWQgdHJhY2VG
dW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVudCwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFz
RnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSAmZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgcHJpbnRmKCIl
cCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1
LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZVJlZ2lzdGVycyA9ICV1LlxuIiwKKyAgICAg
ICAgICAgY29kZUJsb2NrLCBleGVjLCBjb21tZW50LCBjYWxsZWUsIGV4ZWN1dGFibGUsCisgICAg
ICAgICAgIGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwg
Y29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Q
cm9sb2d1ZShleGVjLCAiY2FsbCBwcm9sb2d1ZSIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVj
dCBwcm9sb2d1ZSIsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQoreworICAgIHRyYWNl
RnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBhcml0eSBjaGVjayIsIENvZGVGb3JDYWxsKTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVj
a19mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY29u
c3RydWN0IGFyaXR5IGNoZWNrIiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKQoreworICAgIHByaW50ZigiJXAgLyAlcDog
ZXhlY3V0aW5nIGJjIyV6dSwgIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAg
ICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMt
PmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisjaWZuZGVmIE5ERUJVRwor
ICAgIHByaW50ZigiJXMsICIsIG9wY29kZU5hbWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnBy
ZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpXSk7CisjZWxzZQorICAgIHByaW50Zigi
b3AjJXUsICIsIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNb
MF0udS5vcGNvZGUpKTsKKyNlbmRpZgorICAgIHByaW50Zigic2NvcGUgJXBcbiIsIGV4ZWMtPnNj
b3BlQ2hhaW4oKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHNw
ZWNpYWxfdHJhY2UpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBj
YXNlIGJjIyV6dSwgb3AjJXUsIHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICAgICAgICAgZXhlYy0+
Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGlu
dHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwK
KyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChw
Y1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGV4ZWMtPnJldHVyblBDKCkudmFsdWUoKSk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK2lubGluZSBib29sIHNob3VsZEpJVChFeGVjU3RhdGUqIGV4
ZWMpCit7CisgICAgLy8gWW91IGNhbiBtb2RpZnkgdGhpcyB0byB0dXJuIG9mZiBKSVR0aW5nIHdp
dGhvdXQgcmVidWlsZGluZyB0aGUgd29ybGQuCisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEo
KS5jYW5Vc2VKSVQoKTsKK30KKworZW51bSBFbnRyeUtpbmQgeyBQcm9sb2d1ZSwgQXJpdHlDaGVj
ayB9Oworc3RhdGljIEhlbHBlclJldHVyblR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJ
bnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBjaGFyICpuYW1lLCBF
bnRyeUtpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50
ZigiJXA6IEVudGVyZWQgJXMgd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ss
IG5hbWUsIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAor
ICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFu
eXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7CisgICAgfQor
ICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNp
ZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBh
bHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICB9CisgICAgY29kZUJsb2NrLT5qaXRT
b29uKCk7CisgICAgaWYgKGtpbmQgPT0gUHJvbG9ndWUpCisgICAgICAgIExMSU5UX1JFVFVSTl9U
V08oY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKSwg
ZXhlYyk7CisgICAgQVNTRVJUKGtpbmQgPT0gQXJpdHlDaGVjayk7CisgICAgTExJTlRfUkVUVVJO
X1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGVXaXRoQXJpdHlDaGVjaygpLmV4ZWN1dGFibGVBZGRy
ZXNzKCksIGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpCit7CisgICAg
cmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCBleGVjLT5jb2RlQmxvY2soKSwgImVudHJ5X29zciIs
IFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zv
cl9jYWxsKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhl
Yy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZv
ckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsIiwgUHJvbG9ndWUpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAg
ICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+
anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAi
ZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKQorewor
ICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkp
LT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50
cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2siLCBBcml0eUNoZWNrKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlD
aGVjaykKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMt
PmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JD
b25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayIs
IEFyaXR5Q2hlY2spOworfQorCitMTElOVF9IRUxQRVJfREVDTChsb29wX29zcikKK3sKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJM
RShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCBsb29wX29zciB3aXRo
IGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5sbGludEV4ZWN1
dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsK
KyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRf
UkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb2RlQmxvY2stPmpp
dENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9P
U1IpCisgICAgICAgIHByaW50ZigiICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsK
KyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICAKKyAgICBBU1NF
UlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAg
IAorICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+IG1hcDsKKyAgICBjb2RlQmxv
Y2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKG1hcCk7CisgICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zm
c2V0KiBtYXBwaW5nID0gYmluYXJ5U2VhcmNoPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCwgdW5z
aWduZWQsIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldDo6Z2V0Qnl0ZWNvZGVJbmRleD4obWFwLmJl
Z2luKCksIG1hcC5zaXplKCksIHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
KTsKKyAgICBBU1NFUlQobWFwcGluZyk7CisgICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJ
bmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCkpKTsKKyAgICAKKyAgICB2b2lkKiBqdW1wVGFyZ2V0ID0gY29kZUJsb2NrLT5n
ZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChtYXBwaW5nLT5tX21hY2hpbmVD
b2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQoanVtcFRhcmdldCk7CisgICAgCisgICAgTExJTlRfUkVU
VVJOX1RXTyhqdW1wVGFyZ2V0LCBleGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFj
ZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAg
IAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCBy
ZXBsYWNlIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2st
PmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoc2hvdWxkSklU
KGV4ZWMpKSB7CisgICAgICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2Jh
bERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICAgICAgcHJp
bnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlmCisgICAgICAg
IH0KKyAgICAgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgfSBlbHNlCisgICAgICAgIGNv
ZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ2hlY2tpbmcgc3RhY2sg
aGVpZ2h0IHdpdGggZXhlYyA9ICVwLlxuIiwgZXhlYyk7CisgICAgcHJpbnRmKCJDb2RlQmxvY2sg
PSAlcC5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAgICBwcmludGYoIk51bSBjYWxsZWUgcmVn
aXN0ZXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMp
OworICAgIHByaW50ZigiTnVtIHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251
bVZhcnMpOworICAgIHByaW50ZigiQ3VycmVudCBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT5nbG9i
YWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKKyNlbmRpZgorICAg
IEFTU0VSVCgmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVl
UmVnaXN0ZXJzXSA+IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxl
KCkuZW5kKCkpOworICAgIGlmIChVTkxJS0VMWSghZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJl
dGVyLT5yZWdpc3RlckZpbGUoKS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxv
Y2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnNdKSkpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNh
bGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNh
bGxlcihleGVjKTsKKyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9u
KGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9FTkRfSU1QTCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNrKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
RXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMs
ICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9y
Q2FsbCk7CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJG
cmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3Rh
Y2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIo
ZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9U
V08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3Rf
YXJpdHlDaGVjaykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEV4ZWNTdGF0ZSogbmV3RXhl
YyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0
YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAg
aWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAg
ICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vy
cm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYyk7CisgICAg
ICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50
cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhl
Yyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKK3sK
KyAgICBMTElOVF9CRUdJTigpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRm
KCJDcmVhdGluZyBhbiBhY3RpdmF0aW9uLCBleGVjID0gJXAhXG4iLCBleGVjKTsKKyNlbmRpZgor
ICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZXhlYywgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhl
Yy0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSk7CisgICAgZXhlYy0+c2V0U2NvcGVD
aGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goYWN0aXZhdGlvbikpOworICAgIExMSU5UX1JF
VFVSTihKU1ZhbHVlKGFjdGl2YXRpb24pKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2NyZWF0ZV9hcmd1bWVudHMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGFy
Z3VtZW50cyA9IEpTVmFsdWUoQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBl
eGVjKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgZXhlYy0+dW5jaGVja2Vk
UihwY1sxXS51Lm9wZXJhbmQpID0gYXJndW1lbnRzOworICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5t
b2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOwor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3Ro
aXMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9
IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIAorI2lmICFBU1NFUlRfRElTQUJMRUQK
KyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQVNTRVJUKGNvbnN0cnVjdG9y
LT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3RE
YXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlmCisgICAgCisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmU7CisgICAgSlNWYWx1ZSBwcm90byA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAg
ICBpZiAocHJvdG8uaXNPYmplY3QoKSkKKyAgICAgICAgc3RydWN0dXJlID0gYXNPYmplY3QocHJv
dG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGVsc2UKKyAgICAgICAg
c3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCktPmdsb2JhbE9iamVjdC0+ZW1wdHlPYmpl
Y3RTdHJ1Y3R1cmUoKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYywgc3RydWN0dXJlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252
ZXJ0X3RoaXMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRf
T1AoMSkuanNWYWx1ZSgpOworICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBMTElO
VF9SRVRVUk4odjEudG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25ld19vYmplY3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRV
Uk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmV3X2FycmF5KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJO
KGNvbnN0cnVjdEFycmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4oJkxMSU5UX09QKDIp
KSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdf
YXJyYXlfYnVmZmVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGNv
bnN0cnVjdEFycmF5KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihwY1sy
XS51Lm9wZXJhbmQpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25ld19yZWdleHApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBSZWdFeHAqIHJl
Z0V4cCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZWdleHAocGNbMl0udS5vcGVyYW5kKTsKKyAgICBp
ZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVTeW50YXhF
cnJvcihleGVjLCAiSW52YWxpZCBmbGFnIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4i
KSk7CisgICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdFeHApKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25vdCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oIUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25lcSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3N0cmljdGVxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uc3RyaWN0ZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9sZXNzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bGVzc2VxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVy
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xl
c3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8
ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNW
YWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICsgMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHJlX2RlYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051
bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYykKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7
CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQgKyAxKTsKKyAgICBMTElOVF9SRVRV
Uk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0
X2RlYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9P
UCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJl
cihyZXN1bHQgLSAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcikKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKC1MTElOVF9P
UF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfYWRkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2MSA9IExM
SU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKTsKKyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVHJ5
aW5nIHRvIGFkZCAlcyIsIHYxLmRlc2NyaXB0aW9uKCkpOworICAgIHByaW50ZigiIHRvICVzLlxu
IiwgdjIuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNTdHJpbmco
KSAmJiAhdjIuaXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMs
IGFzU3RyaW5nKHYxKSwgdjIudG9TdHJpbmcoZXhlYykpKTsKKyAgICAKKyAgICBpZiAodjEuaXNO
dW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIo
djEuYXNOdW1iZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4o
anNBZGRTbG93Q2FzZShleGVjLCB2MSwgdjIpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX211bCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAqIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9zdWIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIo
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
ZGl2KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21v
ZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihmbW9k
KExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2xzaGlmdCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIDw8IChMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSAmIDMxKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcnNoaWZ0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJO
KGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gKExMSU5U
X09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpICYgMzEpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMp
ID4+IChMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSAmIDMxKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50
MzIoZXhlYykgJiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcikKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMy
KGV4ZWMpIHwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIo
ZXhlYykgXiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIofkxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIo
ZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5j
ZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgYmFzZVZhbCA9IExMSU5UX09Q
X0MoMSkuanNWYWx1ZSgpOworI2lmbmRlZiBOREVCVUcKKyAgICBUeXBlSW5mbyB0eXBlSW5mbyhV
bnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VSVCghYmFzZVZhbC5pc09iamVjdCgpCisgICAgICAg
ICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVjdChiYXNlVmFsKS0+c3RydWN0dXJlKCktPnR5cGVJ
bmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKTsKKyNlbmRpZgorICAgIExMSU5UX1RIUk9X
KGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4ZWMsICJpbnN0YW5jZW9mIiwgYmFzZVZhbCkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZikKK3sKKyAgICBMTElOVF9C
RUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcElu
c3RhbmNlT2ZTbG93KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl90eXBlb2YpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9S
RVRVUk4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4odi5pc0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVj
dHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSA6IHYuaXNVbmRlZmlu
ZWQoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbikKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkuaXNCb29sZWFuKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2lzX251bWJlcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihpc0pTU3RyaW5nKExMSU5UX09QX0MoMikuanNWYWx1ZSgp
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzT2JqZWN0VHlwZShM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2lzX2Z1bmN0aW9uKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihqc0lzRnVuY3Rpb25UeXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4pCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihleGVjLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmUsIENvbW1vblNsb3dQYXRoczo6b3BS
ZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFu
ZCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRCgKKyAgICAgICAgb3Bf
cmVzb2x2ZV9za2lwLAorICAgICAgICBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVNraXAoCisg
ICAgICAgICAgICBleGVjLAorICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZp
ZXIocGNbMl0udS5vcGVyYW5kKSwKKyAgICAgICAgICAgIHBjWzNdLnUub3BlcmFuZCkpOworfQor
CitzdGF0aWMgSlNWYWx1ZSByZXNvbHZlR2xvYmFsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rp
b24qIHBjKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CisgICAg
aW50IHByb3BlcnR5ID0gcGNbMl0udS5vcGVyYW5kOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgCisgICAgQVNTRVJUX1VOVVNFRChzdHJ1
Y3R1cmUsIHN0cnVjdHVyZSAhPSBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAKKyAg
ICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7Cisg
ICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAKKyAgICBpZiAoZ2xvYmFs
T2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKSB7CisgICAgICAgIEpT
VmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCk7CisgICAgICAgIGlmIChz
bG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNV
bmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09
IGdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgcGNbM10udS5zdHJ1Y3R1cmUuc2V0KAorICAg
ICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBwY1s0XSA9IHNs
b3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorICAgIAorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBj
cmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KTsKKyAgICByZXR1cm4gSlNW
YWx1ZSgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2
ZV9nbG9iYWwsIHJlc29sdmVHbG9iYWwoZXhlYywgcGMpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYywgcmVz
b2x2ZUdsb2JhbChleGVjLCBwYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVz
b2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljLCBDb21t
b25TbG93UGF0aHM6Om9wUmVzb2x2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmll
cihwY1syXS51Lm9wZXJhbmQpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNv
bHZlX2Jhc2UpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9
IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYg
KHBjWzNdLnUub3BlcmFuZCkgeworICAgICAgICBKU1ZhbHVlIGJhc2UgPSBKU0M6OnJlc29sdmVC
YXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIHRydWUpOworICAgICAgICBpZiAo
IWJhc2UpCisgICAgICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9i
YWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgICAgICBMTElOVF9SRVRV
Uk4oYmFzZSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNv
bHZlX2Jhc2UsIEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4o
KSwgZmFsc2UpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0
eV9leGlzdHMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0g
YXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChv
YmplY3QpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50
aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIW9iamVjdC0+Z2V0UHJvcGVydHlTbG90
KGV4ZWMsIGlkZW50LCBzbG90KSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJ
bnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNl
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93
UGF0aHM6Om9wUmVzb2x2ZVdpdGhCYXNlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlm
aWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5p
Y2FsbHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0
aGUgREZHIHdvbid0IHVzZSBpdC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhUaGlzKGV4
ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5U
X09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9
IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5n
LCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4KKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIo
cGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMiku
anNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisKKyAgICBKU1Zh
bHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDEpID0gcmVzdWx0OworCisgICAgaWYg
KGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkKKyAgICAg
ICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAmJiBzbG90LmNhY2hl
ZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAgICAgICAgCisgICAg
ICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAg
ICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAg
ICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsK
KyAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVj
LT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7
CisgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6
ZW9mKEpTVmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHBjW09QQ09ERV9MRU5H
VEgob3BfZ2V0X2J5X2lkKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6
ZW5jb2RlKHJlc3VsdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmll
ciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChiYXNlVmFsdWUpOworICAgIExMSU5UX1JFVFVSTihiYXNlVmFsdWUuZ2V0KGV4ZWMs
IGlkZW50LCBzbG90KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMt
PmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlm
aWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjb2RlQmxvY2st
PmlzU3RyaWN0TW9kZSgpKTsKKyAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAgICBhc09i
amVjdChiYXNlVmFsdWUpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFzZVZhbHVl
LnB1dChleGVjLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkK
KyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAgIAorICAgICAgICBKU0Nl
bGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICgh
c3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3Ry
dWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpCisgICAgICAgICAg
ICAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAgICAgICAgICAgCisgICAgICAgICAg
ICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgeworICAg
ICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUt
PnByZXZpb3VzSUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPnBy
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBp
cyBuZWVkZWQgYmVjYXVzZSBzb21lIG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKKyAgICAgICAgICAg
ICAgICAgICAgLy8gYmVsb3cgbWF5IEdDLgorICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9w
Y29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOwor
ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVy
ZS0+cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNF0u
dS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQo
KSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zm
c2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3Ry
dWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwg
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAg
ICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihl
eGVjKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAgICAgICAgICAgICAgICAg
ICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNoYWlu
KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51
Lm9wZXJhbmQpCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7Cisg
ICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUu
b3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
b3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisg
ICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQg
PSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIGlmIChmYWxzZSAmJiAhc3RyY21wKGlkZW50LmFz
Y2lpKCkuZGF0YSgpLCAicmVuZGVyUmVmbGVjdGlvbnMiKSkKKyAgICAgICAgcHJpbnRmKCJGaW5p
c2hpbmcgYWNjZXNzIHRvIHJlbmRlclJlZmxlY3Rpb25zIGZyb20gTExJbnQgc2xvdyBwYXRoLlxu
Iik7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9kZWxfYnlfaWQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7CisgICAgYm9vbCBjb3VsZERlbGV0
ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3Qs
IGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpKTsKKyAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+
aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVj
LCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihjb3VsZERlbGV0ZSkpOworfQorCitpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKK3sKKyAgICBp
ZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsK
KyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0
T3duUHJvcGVydHkoZXhlYywgYXNTdHJpbmcoc3Vic2NyaXB0KS0+dmFsdWUoZXhlYykpKQorICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgaWYgKHN1YnNjcmlwdC5p
c1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsK
KyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUp
LT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc1N0cmluZyhiYXNlVmFsdWUp
LT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5
KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkp
CisgICAgICAgICAgICByZXR1cm4gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhl
YywgaSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBpKTsK
KyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVj
LCBwcm9wZXJ0eSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9i
eV92YWwsIGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3Vt
ZW50X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgYXJndW1lbnRz
ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAgICAg
IGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYyk7
CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBMTElOVF9PUCgyKSA9
IGFyZ3VtZW50czsKKyAgICAgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgfQorICAgIAorICAg
IExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBhcmd1bWVudHMsIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJ
TlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBKU1Zh
bHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdmFs
dWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBpZiAoTElLRUxZKHN1YnNj
cmlwdC5pc1VJbnQzMigpKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUlu
dDMyKCk7CisgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgeworICAgICAgICAgICAg
SlNBcnJheSoganNBcnJheSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChq
c0FycmF5LT5jYW5TZXRJbmRleChpKSkKKyAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRl
eChnbG9iYWxEYXRhLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgSlNBcnJheTo6cHV0QnlJbmRleChqc0FycmF5LCBleGVjLCBpLCB2YWx1ZSk7CisgICAgICAg
ICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShi
YXNlVmFsdWUpCisgICAgICAgICAgICAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nl
c3NJbmRleChpKSkgeworICAgICAgICAgICAgSlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNC
eXRlQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpIHsK
KyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNJbnQzMigp
KTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXkt
PnNldEluZGV4KGksIHZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VO
RCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhl
YywgaSwgdmFsdWUpOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSWRl
bnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qg
c2xvdChleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5w
dXQoZXhlYywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAg
IEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIAor
ICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisg
ICAgYm9vbCBjb3VsZERlbGV0ZTsKKyAgICAKKyAgICB1aW50MzJfdCBpOworICAgIGlmIChzdWJz
Y3JpcHQuZ2V0VUludDMyKGkpKQorICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1l
dGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNlT2JqZWN0LCBleGVjLCBpKTsK
KyAgICBlbHNlIHsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIElk
ZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERl
bGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmpl
Y3QsIGV4ZWMsIHByb3BlcnR5KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb3VsZERlbGV0ZSAm
JiBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9X
KGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7Cisg
ICAgCisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkucHV0KGV4ZWMsIHBjWzJdLnUub3BlcmFuZCwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcHV0X2dldHRlcl9zZXR0ZXIpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIEpT
T2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICAK
KyAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhlYyk7
CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgSlNWYWx1ZSBnZXR0ZXIg
PSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzZXR0ZXIgPSBMTElOVF9PUCg0
KS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKGdldHRlci5pc09iamVjdCgpIHx8IGdldHRlci5pc1Vu
ZGVmaW5lZCgpKTsKKyAgICBBU1NFUlQoc2V0dGVyLmlzT2JqZWN0KCkgfHwgc2V0dGVyLmlzVW5k
ZWZpbmVkKCkpOworICAgIEFTU0VSVChnZXR0ZXIuaXNPYmplY3QoKSB8fCBzZXR0ZXIuaXNPYmpl
Y3QoKSk7CisgICAgCisgICAgaWYgKCFnZXR0ZXIuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgYWNj
ZXNzb3ItPnNldEdldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KGdldHRlcikpOwor
ICAgIGlmICghc2V0dGVyLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIGFjY2Vzc29yLT5zZXRTZXR0
ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBhc09iamVjdChzZXR0ZXIpKTsKKyAgICBiYXNlT2JqLT5w
dXREaXJlY3RBY2Nlc3NvcigKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLAorICAgICAgICBl
eGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAgICAgICBh
Y2Nlc3NvciwgQWNjZXNzb3IpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfam1wX3Njb3BlcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIHVuc2ln
bmVkIGNvdW50ID0gcGNbMV0udS5vcGVyYW5kOworICAgIFNjb3BlQ2hhaW5Ob2RlKiB0bXAgPSBl
eGVjLT5zY29wZUNoYWluKCk7CisgICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAgIHRtcCA9IHRt
cC0+cG9wKCk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbih0bXApOworICAgIHBjICs9IHBjWzJd
LnUub3BlcmFuZDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2p0cnVlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2p0
cnVlLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfamZhbHNlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
TExJTlRfQlJBTkNIKG9wX2pmYWxzZSwgIUxMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVh
bihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcykKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzcywganNMZXNzPHRydWU+KGV4
ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzcywgIWpzTGVzczx0cnVlPihleGVjLCBMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgTExJTlRfQlJBTkNIKG9wX2pncmVhdGVyLCBqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
TExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlciwgIWpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJ
TlRfQlJBTkNIKG9wX2psZXNzZXEsIGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfam5sZXNzZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9C
UkFOQ0gob3Bfam5sZXNzZXEsICFqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2pncmVhdGVyZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9C
UkFOQ0gob3BfamdyZWF0ZXJlcSwganNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfam5ncmVhdGVyZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElO
VF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEsICFqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
SlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQo
c2NydXRpbmVlLmlzRG91YmxlKCkpOworICAgIGRvdWJsZSB2YWx1ZSA9IHNjcnV0aW5lZS5hc0Rv
dWJsZSgpOworICAgIGludDMyX3QgaW50VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1
ZSk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKHZh
bHVlID09IGludFZhbHVlKSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+aW1tZWRpYXRlU3dpdGNoSnVt
cFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoaW50VmFsdWUsIGRlZmF1bHRP
ZmZzZXQpOworICAgIH0gZWxzZQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0cmluZykK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7
CisgICAgaWYgKCFzY3J1dGluZWUuaXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9m
ZnNldDsKKyAgICBlbHNlIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFi
bGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGluZWUpLT52
YWx1ZShleGVjKS5pbXBsKCksIGRlZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsK
KyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZQorICAgICAg
ICAgICB8fCAhY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkKKyAgICAgICAgICAgfHwg
ZXhlYy0+dW5jaGVja2VkUihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVl
KCkpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGluZyBmdW5j
dGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJTlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVuY3Rpb25E
ZWNsKHBjWzJdLnUub3BlcmFuZCktPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwor
ICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhw
cihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBmdW5jdGlvbi0+bWFr
ZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpOworICAgIAorICAgIGlmICghZnVuY3Rpb24tPm5h
bWUoKS5pc051bGwoKSkgeworICAgICAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBmdW5jdGlvblNj
b3BlT2JqZWN0ID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGZ1bmN0aW9uLT5u
YW1lKCksIGZ1bmMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGZ1bmMtPnNldFNj
b3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuYy0+c2NvcGUoKS0+cHVzaChmdW5jdGlvblNjb3Bl
T2JqZWN0KSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihmdW5jKTsKK30KKworc3Rh
dGljIEhlbHBlclJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVl
LCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUo
KTsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwor
CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAg
IGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKworICAgIGlmIChraW5kID09IENvZGVGb3JD
YWxsKSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgICAgICBDYWxsVHlwZSBjYWxs
VHlwZSA9IGdldENhbGxEYXRhKGNhbGxlZSwgY2FsbERhdGEpOworICAgIAorICAgICAgICBBU1NF
UlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVKUyk7CisgICAgCisgICAgICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZUhvc3QpIHsKKyAgICAgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0dXJu
VmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxs
ZWUpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0Nh
bGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
KTsKKyAgICAgICAgfQorICAgICAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgICAg
ICBwcmludGYoIkNhbGwgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwgY2FsbGVlLmRl
c2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlID09IENhbGxU
eXBlTm9uZSk7CisgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFG
dW5jdGlvbkVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09
IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0
YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNh
bGxlZSwgY29uc3RydWN0RGF0YSk7CisgICAgCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0g
Q29uc3RydWN0VHlwZUpTKTsKKyAgICAKKyAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1
Y3RUeXBlSG9zdCkgeworICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0g
SlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUp
KTsKKyAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgCisjaWYg
TExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAgICAgcHJpbnRmKCJDb25zdHJ1Y3RvciBjYWxsZWUg
aXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYK
KworICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVOb25lKTsKKyAgICBM
TElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVj
LCBjYWxsZWUpKTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNT
dGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQsIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSwgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5r
SW5mbyA9IDApCit7CisgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVu
Y3Rpb24oY2FsbGVlQXNWYWx1ZSk7CisgICAgaWYgKCFjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkKKyAg
ICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIHBjLCBjYWxsZWVBc1ZhbHVl
LCBraW5kKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxl
ZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGNhbGxlZS0+
c2NvcGVVbmNoZWNrZWQoKSk7CisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxs
ZWUtPmV4ZWN1dGFibGUoKTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0
cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CisgICAgaWYgKGV4ZWN1dGFibGUtPmlz
SG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRK
SVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgZWxzZSB7CisgICAgICAgIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1
bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVjQ2FsbGVlLCBjYWxsZWUtPnNjb3BlKCks
IGtpbmQpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBMTElOVF9DQUxMX1RIUk9X
KGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCksIHBjLCBlcnJvcik7CisgICAgICAgIGNvZGVCbG9j
ayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOworICAg
ICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUt
PmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihraW5kKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29k
ZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIH0KKyAgICAKKyAgICBpZiAoY2FsbExp
bmtJbmZvKSB7CisgICAgICAgIGlmIChjYWxsTGlua0luZm8tPmlzT25MaXN0KCkpCisgICAgICAg
ICAgICBjYWxsTGlua0luZm8tPnJlbW92ZSgpOworICAgICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxs
ZXIgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBjYWxsTGlua0luZm8tPmNh
bGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBleGVjQ2FsbGVyLT5jb2RlQmxvY2so
KS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+bGFz
dFNlZW5DYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+Y29k
ZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0lu
Zm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKKyAgICAgICAgaWYgKGNvZGVCbG9jaykK
KyAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChjYWxsTGlua0luZm8pOwor
ICAgIH0KKyAgICAKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgY29kZVB0
ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUgZ2Vu
ZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVw
IGEgY2FsbCBmcmFtZS4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21w
aWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIElmIHBvc3NpYmxlLCBsaW5rIHRoZSBjYWxs
J3MgaW5saW5lIGNhY2hlLgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2Rl
IGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFs
dWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4
ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAg
ZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5k
KTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNh
bGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAg
CisgICAgQVNTRVJUKHBjWzRdLnUuY2FsbExpbmtJbmZvKTsKKyAgICByZXR1cm4gc2V0VXBDYWxs
KGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCBwY1s0XS51LmNhbGxMaW5rSW5m
byk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1Y3Qp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNh
bGwgZnJhbWUgd2hpbGUgcmVzcGVjdGluZyB0aGUgdmFyaWFibGUgYXJndW1lbnRzLgorICAgIC8v
IC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5Lgor
ICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBh
bmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9
IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxl
ZSA9IGxvYWRWYXJhcmdzKAorICAgICAgICBleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVy
cHJldGVyLT5yZWdpc3RlckZpbGUoKSwKKyAgICAgICAgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBwY1s0XS51Lm9wZXJhbmQpOworICAgIExMSU5UX0NB
TExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT51bmNo
ZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0Nh
bGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlYy0+dW5jaGVja2VkUihSZWdpc3Rl
ckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KHBjICsg
T1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpKTsKKyAgICAKKyAgICByZXR1cm4gc2V0VXBD
YWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAg
CisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAg
ICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisg
ICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVy
YW5kKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjQ2Fs
bGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7Cisg
ICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4
ZWNDYWxsZWUtPnNldFJldHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KCZsbGludF9n
ZW5lcmljX3JldHVybl9wb2ludCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsK
KyAgICBleGVjLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkg
PSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfZXZhbCkp
OworICAgIAorICAgIGlmICghaXNIb3N0RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVu
Y0V2YWwpKQorICAgICAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9y
Q2FsbCwgY2FsbGVlQXNWYWx1ZSk7CisgICAgCisgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVy
blZhbHVlID0gZXZhbChleGVjQ2FsbGVlKTsKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2Fs
bGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNG
dWxsU2NvcGVDaGFpbigpKTsKKyAgICBKU1ZhbHVlIGFjdGl2YXRpb25WYWx1ZSA9IExMSU5UX09Q
KDEpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFjdGl2YXRpb25WYWx1ZSkgeworICAgICAgICBpZiAo
SlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIo
cGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMtPmNv
ZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyh2
KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAgfQorICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9
CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0aW9uKGFjdGl2YXRpb25W
YWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihleGVjLT5nbG9iYWxEYXRhKCkpOworICAg
IGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdp
c3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpCisgICAgICAgIGFzQXJndW1lbnRzKHYp
LT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGFjdGl2YXRpb24pOwor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZf
YXJndW1lbnRzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVC
bG9jaygpLT51c2VzQXJndW1lbnRzKCkgJiYgIWV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxT
Y29wZUNoYWluKCkpOworICAgIGFzQXJndW1lbnRzKGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmll
ZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSktPnRlYXJPZmYo
ZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9z
dHJjYXQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNTdHJpbmco
ZXhlYywgJkxMSU5UX09QKDIpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExM
SU5UX1JFVFVSTihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1ByaW1pdGl2ZShleGVjKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICh2
LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcGMgKz0gcGNbNV0udS5vcGVyYW5kOwor
ICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSlNPYmplY3QqIG8gPSB2LnRv
T2JqZWN0KGV4ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gby0+c3RydWN0dXJlKCk7
CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IHN0
cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpOworICAgIGlmICghanNQcm9wZXJ0eU5hbWVJdGVy
YXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQcm90b3R5cGVDaGFpbigpICE9
IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCisgICAgICAgIGpzUHJvcGVydHlOYW1l
SXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywgbyk7CisgICAg
CisgICAgTExJTlRfT1AoMSkgPSBKU1ZhbHVlKGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOworICAg
IExMSU5UX09QKDIpID0gSlNWYWx1ZShvKTsKKyAgICBMTElOVF9PUCgzKSA9IFJlZ2lzdGVyOjp3
aXRoSW50KDApOworICAgIExMSU5UX09QKDQpID0gUmVnaXN0ZXI6OndpdGhJbnQoanNQcm9wZXJ0
eU5hbWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAgICAKKyAgICBwYyArPSBPUENPREVfTEVOR1RIKG9w
X2dldF9wbmFtZXMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmV4dF9wbmFtZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTT2JqZWN0KiBi
YXNlID0gYXNPYmplY3QoTExJTlRfT1AoMikuanNWYWx1ZSgpKTsKKyAgICBKU1N0cmluZyogcHJv
cGVydHkgPSBhc1N0cmluZyhMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIGlmIChiYXNlLT5o
YXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5LT52YWx1ZShleGVjKSkp
KSB7CisgICAgICAgIC8vIEdvIHRvIHRhcmdldC4KKyAgICAgICAgcGMgKz0gcGNbNl0udS5vcGVy
YW5kOworICAgIH0gLy8gRWxzZSwgZG9uJ3QgY2hhbmdlIHRoZSBQQywgc28gdGhlIGludGVycHJl
dGVyIHdpbGwgcmVsb29wLgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHVzaF9zY29wZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUg
diA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogbyA9IHYudG9PYmplY3Qo
ZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgTExJTlRfT1Ao
MSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNo
KG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3BvcF9zY29wZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGV4ZWMtPnNldFNjb3Bl
Q2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wb3AoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSkKK3sKKyAgICBMTElOVF9C
RUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Cisg
ICAgSlNPYmplY3QqIHNjb3BlID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGNv
ZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVl
KCksIERvbnREZWxldGUpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFp
bigpLT5wdXNoKHNjb3BlKSk7CisgICAgTExJTlRfUkVUVVJOKHNjb3BlKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJ
TlRfVEhST1coTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgTExJTlRfVEhST1coY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgTExJTlRfT1BfQygxKS5q
c1ZhbHVlKCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9kZWJ1ZykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGludCBkZWJ1
Z0hvb2tJRCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5v
cGVyYW5kOworICAgIGludCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBl
eGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERl
YnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIAorICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxs
X2NhbGwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJv
ZmlsZXJSZWZlcmVuY2UoKSktPndpbGxFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUo
KSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9m
aWxlX2RpZF9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgKCpQcm9maWxlcjo6ZW5h
YmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT5kaWRFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpz
VmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpM
TEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNzEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludEhlbHBlcnNfaAorI2RlZmluZSBMTEludEhlbHBlcnNfaAorCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxF
KExMSU5UKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IElu
c3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCit0eXBlZGVmIGludDY0X3QgSGVscGVy
UmV0dXJuVHlwZTsKKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29w
ZXJhbmQoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFu
ZCk7CitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0
YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7CisKKyNkZWZp
bmUgTExJTlRfSEVMUEVSX0RFQ0wobmFtZSkgXAorICAgIGV4dGVybiAiQyIgSGVscGVyUmV0dXJu
VHlwZSBsbGludF8jI25hbWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCisKK0xM
SU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNl
X3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3By
b2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2Vf
YXJpdHlDaGVja19mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNr
X2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2UpOworTExJTlRfSEVMUEVS
X0RFQ0woc3BlY2lhbF90cmFjZSk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpOworTExJ
TlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2spOworTExJ
TlRfSEVMUEVSX0RFQ0wobG9vcF9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSk7CitM
TElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0
cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZh
dGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NvbnZlcnRfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVjdCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdf
cmVnZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3Ry
aWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2xlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcik7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wcmVfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cG9zdF9kZWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Fk
ZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9zdWIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rpdik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbW9kKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3JzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
dXJzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9iaXRvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NoZWNrX2hhc19pbnN0YW5jZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFu
Y2VvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pc191bmRlZmluZWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Jv
b2xlYW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJlcik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19v
YmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9pbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVz
b2x2ZV9nbG9iYWxfZHluYW1pYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9m
b3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVz
b2x2ZV9iYXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhp
c3RzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dldF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3Vt
ZW50c19sZW5ndGgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9nZXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlf
dmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rl
bF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2dldHRlcl9zZXR0ZXIpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2ptcF9zY29wZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2psZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdy
ZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2pubGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRl
cmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dp
dGNoX2NoYXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uZXdfZnVuY19leHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y2FsbF92YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfc3RyY2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25leHRfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcHVzaF9uZXdfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9m
aWxlX3dpbGxfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2Fs
bCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExM
SU5UKQorCisjZW5kaWYgLy8gTExJbnRIZWxwZXJzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisj
ZGVmaW5lIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisKKyNpbmNsdWRlICJMTEludENvbW1vbi5o
IgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0lubGluZUFzbS5o
PgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4NikKKyNkZWZpbmUgT0ZG
TElORV9BU01fWDg2IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisjZW5kaWYK
KworI2lmIENQVShBUk1fVEhVTUIyKQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAxCisjZWxz
ZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NFUlRfRElT
QUJMRUQKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZp
bmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUoQklHX0VO
RElBTikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2RlZmluZSBP
RkZMSU5FX0FTTV9CSUdfRU5ESUFOIDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKExMSU5UX09TUl9U
T19KSVQpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5l
IE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhFQ1VUSU9O
X1RSQUNJTkcKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQorI2Vsc2UK
KyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisKKyNpZiBD
UFUoQVJNX1RIVU1CMikKKyNkZWZpbmUgT0ZGTElORV9BU01fR0xPQkFMX0xBQkVMKGxhYmVsKSAg
ICAgICAgICBcCisgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGFiZWwpICJcbiIgICAgICAg
ICAgXAorICAgIEhJREVfU1lNQk9MKG5hbWUpICJcbiIgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAiLnRodW1iXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
Ii50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShsYWJlbCkgIlxuIiAgXAorICAgIFNZTUJP
TF9TVFJJTkcobGFiZWwpICI6XG4iCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9HTE9CQUxf
TEFCRUwobGFiZWwpICAgICAgICAgXAorICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxhYmVs
KSAiXG4iICAgICAgICAgXAorICAgIEhJREVfU1lNQk9MKG5hbWUpICJcbiIgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIFNZTUJPTF9TVFJJTkcobGFiZWwpICI6XG4iCisjZW5kaWYKKworI2Vu
ZGlmIC8vIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJIZWFwLmgi
CisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1
ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9u
LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKKyNp
bmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCisjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5j
bHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIK
KyNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisjaW5j
bHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRl
ICJWYWx1ZVByb2ZpbGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCisjZGVmaW5lIE9GRkxJTkVfQVNNX09GRlNFVE9GKGNsYXp6LCBmaWVs
ZCkgT0JKRUNUX09GRlNFVE9GKGNsYXp6LCBmaWVsZCkKKworY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQqIGR1bW15KCk7Cit9
OworCitjb25zdCB1bnNpZ25lZCogTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpCit7Cisv
LyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRz
X2V4dHJhY3Rvci5yYiwgYW5kIGNvbnRhaW5zIGNvZGUKKy8vIHRvIGNyZWF0ZSBhIHRhYmxlIG9m
IG9mZnNldHMsIHNpemVzLCBhbmQgYSBoZWFkZXIgaWRlbnRpZnlpbmcgd2hhdCBjb21iaW5hdGlv
biBvZgorLy8gUGxhdGZvcm0uaCBtYWNyb3Mgd2UgaGF2ZSBzZXQuIFdlIGluY2x1ZGUgaXQgaW5z
aWRlIG9mIGEgbWV0aG9kIG9uIExMSW50T2Zmc2V0c0V4dHJhY3RvcgorLy8gYmVjYXVzZSB0aGUg
ZmllbGRzIHdob3NlIG9mZnNldHMgd2UncmUgZXh0cmFjdGluZyBhcmUgbW9zdGx5IHByaXZhdGUu
IFNvIHdlIG1ha2UgdGhlaXIKKy8vIGNsYXNzZXMgZnJpZW5kcyB3aXRoIExMSW50T2Zmc2V0c0V4
dHJhY3RvciwgYW5kIGluY2x1ZGUgdGhlIGhlYWRlciBoZXJlLCB0byBnZXQgdGhlIEMrKworLy8g
Y29tcGlsZXIgdG8ga2luZGx5IHN0ZXAgYXNpZGUgYW5kIHlpZWxkIHRvIG91ciBiZXN0IGludGVu
dGlvbnMuCisjaW5jbHVkZSAiTExJbnREZXNpcmVkT2Zmc2V0cy5oIgorICAgIHJldHVybiBleHRy
YWN0b3JUYWJsZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK2ludCBtYWluKGludCwgY2hh
cioqKQoreworICAgIC8vIE91dCBvZiBhbiBhYnVuZGFuY2Ugb2YgY2F1dGlvbiwgbWFrZSBzdXJl
IHRoYXQgTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpIGlzIGxpdmUsCisgICAgLy8gYW5k
IHRoZSBleHRyYWN0b3JUYWJsZSBpcyBsaXZlLCB0b28uCisgICAgcHJpbnRmKCIlcFxuIiwgSlND
OjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkpOworICAgIHJldHVybiAwOworfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRUaHVu
a3MuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgi
CisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIu
aCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3N0YXRpYyBNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhLCB2b2lkICgqdGFyZ2V0KSgpKQoreworICAgIEpTSW50ZXJmYWNlSklUIGppdDsKKyAg
ICAKKyAgICAvLyBGSVhNRTogdGhlcmUncyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gaXQg
b24gWDg2LCBidXQgSSdtIG5vdCBzdXJlIEkgY2FyZS4KKyAgICBqaXQubW92ZShKU0ludGVyZmFj
ZUpJVDo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdldCkpLCBKU0ludGVy
ZmFjZUpJVDo6cmVnVDApOworICAgIGppdC5qdW1wKEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7Cisg
ICAgCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwgJmppdCwgR0xPQkFM
X1RIVU5LX0lEKTsKKyAgICByZXR1cm4gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7Cit9CisK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9y
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpOwor
fQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5r
R2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxB
cml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAg
IHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5j
dGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGds
b2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERh
dGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spOworfQorCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxE
YXRhLCBsbGludF9ldmFsX3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHBy
b2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAg
ICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfcHJvZ3Jh
bV9wcm9sb2d1ZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYg
Ly8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
VGh1bmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
VGh1bmtzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRUaHVua3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50VGh1bmtzX2gKKyNk
ZWZpbmUgTExJbnRUaHVua3NfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBF
TkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsRGF0YTsKKworbmFtZXNwYWNlIExMSW50IHsK
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0
b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERh
dGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hl
Y2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBl
dmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRp
ZiAvLyBMTEludFRodW5rc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDIzNzQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKKworIyBDcmFzaCBjb3Vyc2Ugb24gdGhlIGxhbmd1YWdlIHRoYXQgdGhpcyBpcyB3cml0
dGVuIGluICh3aGljaCBJIGp1c3QgY2FsbAorIyAiYXNzZW1ibHkiIGV2ZW4gdGhvdWdoIGl0J3Mg
bW9yZSB0aGFuIHRoYXQpOgorIworIyAtIE1vc3RseSBnYXMtc3R5bGUgb3BlcmFuZCBvcmRlcmlu
Zy4gVGhlIGxhc3Qgb3BlcmFuZCB0ZW5kcyB0byBiZSB0aGUKKyMgICBkZXN0aW5hdGlvbi4gU28g
ImEgOj0gYiIgaXMgd3JpdHRlbiBhcyAibW92IGIsIGEiLiBCdXQgdW5saWtlIGdhcywKKyMgICBj
b21wYXJpc29ucyBhcmUgaW4tb3JkZXIsIHNvICJpZiAoYSA8IGIpIiBpcyB3cml0dGVuIGFzCisj
ICAgImJpbHQgYSwgYiwgLi4uIi4KKyMKKyMgLSAiYiIgPSBieXRlLCAiaCIgPSAxNi1iaXQgd29y
ZCwgImkiID0gMzItYml0IHdvcmQsICJwIiA9IHBvaW50ZXIuCisjICAgQ3VycmVudGx5IHRoaXMg
aXMganVzdCAzMi1iaXQgc28gImkiIGFuZCAicCIgYXJlIGludGVyY2hhbmdlYWJsZQorIyAgIGV4
Y2VwdCB3aGVuIGFuIG9wIHN1cHBvcnRzIG9uZSBidXQgbm90IHRoZSBvdGhlci4KKyMKKyMgLSBJ
biBnZW5lcmFsLCB2YWxpZCBvcGVyYW5kcyBmb3IgbWFjcm8gaW52b2NhdGlvbnMgYW5kIGluc3Ry
dWN0aW9ucyBhcmUKKyMgICByZWdpc3RlcnMgKGVnICJ0MCIpLCBhZGRyZXNzZXMgKGVnICI0W3Qw
XSIpLCBiYXNlLWluZGV4IGFkZHJlc3NlcworIyAgIChlZyAiN1t0MCwgdDEsIDJdIiksIGFic29s
dXRlIGFkZHJlc3NlcyAoZWcgIjB4YTAwMDAwMDBbXSIpLCBvciBsYWJlbHMKKyMgICAoZWcgIl9m
b28iIG9yICIuZm9vIikuIE1hY3JvIGludm9jYXRpb25zIGNhbiBhbHNvIHRha2UgYW5vbnltb3Vz
CisjICAgbWFjcm9zIGFzIG9wZXJhbmRzLiBJbnN0cnVjdGlvbnMgY2Fubm90IHRha2UgYW5vbnlt
b3VzIG1hY3Jvcy4KKyMKKyMgLSBMYWJlbHMgbXVzdCBoYXZlIG5hbWVzIHRoYXQgYmVnaW4gd2l0
aCBlaXRoZXIgIl8iIG9yICIuIi4gIEEgIi4iIGxhYmVsCisjICAgaXMgbG9jYWwgYW5kIGdldHMg
cmVuYW1lZCBiZWZvcmUgY29kZSBnZW4gdG8gbWluaW1pemUgbmFtZXNwYWNlCisjICAgcG9sbHV0
aW9uLiBBICJfIiBsYWJlbCBpcyBhbiBleHRlcm4gc3ltYm9sIChpLmUuICIuZ2xvYmwiKS4gVGhl
ICJfIgorIyAgIG1heSBvciBtYXkgbm90IGJlIHJlbW92ZWQgZHVyaW5nIGNvZGUgZ2VuIGRlcGVu
ZGluZyBvbiB3aGV0aGVyIHRoZSBhc20KKyMgICBjb252ZW50aW9ucyBmb3IgQyBuYW1lIG1hbmds
aW5nIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0gbWFuZGF0ZSBhICJfIgorIyAgIHByZWZpeC4KKyMK
KyMgLSBBICJtYWNybyIgaXMgYSBsYW1iZGEgZXhwcmVzc2lvbiwgd2hpY2ggbWF5IGJlIGVpdGhl
ciBhbm9ueW1vdXMgb3IKKyMgICBuYW1lZC4gQnV0IHRoaXMgaGFzIGNhdmVhdHMuICJtYWNybyIg
Y2FuIHRha2UgemVybyBvciBtb3JlIGFyZ3VtZW50cywKKyMgICB3aGljaCBtYXkgYmUgbWFjcm9z
IG9yIGFueSB2YWxpZCBvcGVyYW5kcywgYnV0IGl0IGNhbiBvbmx5IHJldHVybgorIyAgIGNvZGUu
IEJ1dCB5b3UgY2FuIGRvIFR1cmluZy1jb21wbGV0ZSB0aGluZ3MgdmlhIGNvbnRpbnVhdGlvbiBw
YXNzaW5nCisjICAgc3R5bGU6ICJtYWNybyBmb28gKGEsIGIpIGIoYSkgZW5kIGZvbyhmb28sIGZv
bykiLiBBY3R1YWxseSwgZG9uJ3QgZG8KKyMgICB0aGF0LCBzaW5jZSB5b3UnbGwganVzdCBjcmFz
aCB0aGUgYXNzZW1ibGVyLgorIworIyAtIEFuICJpZiIgaXMgYSBjb25kaXRpb25hbCBvbiBzZXR0
aW5ncy4gQW55IGlkZW50aWZpZXIgc3VwcGxpZWQgaW4gdGhlCisjICAgcHJlZGljYXRlIG9mIGFu
ICJpZiIgaXMgYXNzdW1lZCB0byBiZSBhICNkZWZpbmUgdGhhdCBpcyBhdmFpbGFibGUKKyMgICBk
dXJpbmcgY29kZSBnZW4uIFNvIHlvdSBjYW4ndCB1c2UgImlmIiBmb3IgY29tcHV0YXRpb24gaW4g
YSBtYWNybywgYnV0CisjICAgeW91IGNhbiB1c2UgaXQgdG8gc2VsZWN0IGRpZmZlcmVudCBwaWVj
ZXMgb2YgY29kZSBmb3IgZGlmZmVyZW50CisjICAgcGxhdGZvcm1zLgorIworIyAtIEFyZ3VtZW50
cyB0byBtYWNyb3MgZm9sbG93IGxleGljYWwgc2NvcGluZyByYXRoZXIgdGhhbiBkeW5hbWljIHNj
b3BpbmcuCisjICAgQ29uc3QncyBhbHNvIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgYW5kIG1heSBv
dmVycmlkZSAoaGlkZSkgYXJndW1lbnRzCisjICAgb3Igb3RoZXIgY29uc3RzLiBBbGwgdmFyaWFi
bGVzIChhcmd1bWVudHMgYW5kIGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gb3BlcmFu
ZHMuIEFkZGl0aW9uYWxseSwgYXJndW1lbnRzIChidXQgbm90IGNvbnN0YW50cykgY2FuIGJlIGJv
dW5kCisjICAgdG8gbWFjcm9zLgorCisKKyMgVGhlc2UgZGVjbGFyYXRpb25zIG11c3QgbWF0Y2gg
aW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmguCitjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0g
NDgKK2NvbnN0IEFyZ3VtZW50Q291bnQgPSAtNDgKK2NvbnN0IENhbGxlckZyYW1lID0gLTQwCitj
b25zdCBDYWxsZWUgPSAtMzIKK2NvbnN0IFNjb3BlQ2hhaW4gPSAtMjQKK2NvbnN0IFJldHVyblBD
ID0gLTE2Citjb25zdCBDb2RlQmxvY2sgPSAtOAorCitjb25zdCBUaGlzQXJndW1lbnRPZmZzZXQg
PSAtQ2FsbEZyYW1lSGVhZGVyU2l6ZSAtIDgKKworIyBEZWNsYXJlIHNvbWUgYWxpYXNlcyBmb3Ig
dGhlIHJlZ2lzdGVycyB3ZSB3aWxsIHVzZS4KK2NvbnN0IFBDID0gdDQKKworIyBPZmZzZXRzIG5l
ZWRlZCBmb3IgcmVhc29uaW5nIGFib3V0IHZhbHVlIHJlcHJlc2VudGF0aW9uLgoraWYgQklHX0VO
RElBTgorICAgIGNvbnN0IFRhZ09mZnNldCA9IDAKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0g
NAorZWxzZQorICAgIGNvbnN0IFRhZ09mZnNldCA9IDQKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0
ID0gMAorZW5kCisKKyMgVmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgorY29uc3QgSW50
MzJUYWcgPSAtMQorY29uc3QgQm9vbGVhblRhZyA9IC0yCitjb25zdCBOdWxsVGFnID0gLTMKK2Nv
bnN0IFVuZGVmaW5lZFRhZyA9IC00Citjb25zdCBDZWxsVGFnID0gLTUKK2NvbnN0IEVtcHR5VmFs
dWVUYWcgPSAtNgorY29uc3QgRGVsZXRlZFZhbHVlVGFnID0gLTcKK2NvbnN0IExvd2VzdFRhZyA9
IERlbGV0ZWRWYWx1ZVRhZworCisjIFR5cGUgY29uc3RhbnRzLgorY29uc3QgU3RyaW5nVHlwZSA9
IDUKK2NvbnN0IE9iamVjdFR5cGUgPSAxMAorCisjIFR5cGUgZmxhZ3MgY29uc3RhbnRzLgorY29u
c3QgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDEKK2NvbnN0IEltcGxlbWVudHNIYXNJbnN0YW5j
ZSA9IDIKK2NvbnN0IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSA4CisKKyMgSGVhcCBh
bGxvY2F0aW9uIGNvbnN0YW50cy4KK2NvbnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9
IDMKKworIyBCeXRlY29kZSBvcGVyYW5kIGNvbnN0YW50cy4KK2NvbnN0IEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMAorCisjIENvZGUgdHlwZSBjb25zdGFudHMuCitjb25z
dCBHbG9iYWxDb2RlID0gMAorY29uc3QgRXZhbENvZGUgPSAxCitjb25zdCBGdW5jdGlvbkNvZGUg
PSAyCisKKyMgVGhlIGludGVycHJldGVyIHN0ZWFscyB0aGUgdGFnIHdvcmQgb2YgdGhlIGFyZ3Vt
ZW50IGNvdW50LgorY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZz
ZXQKKworIyBUaGlzIG11c3QgbWF0Y2ggd3RmL1ZlY3Rvci5oLgorY29uc3QgVmVjdG9yU2l6ZU9m
ZnNldCA9IDAKK2NvbnN0IFZlY3RvckJ1ZmZlck9mZnNldCA9IDQKKworIyBTdHJpbmcgZmxhZ3Mu
Citjb25zdCBIYXNoRmxhZ3M4Qml0QnVmZmVyID0gNjQKKworIyBVdGlsaXRpZXMKK21hY3JvIGNy
YXNoKCkKKyAgICBzdG9yZWkgMCwgMHhiYmFkYmVlZltdCisgICAgbW92ZSAwLCB0MAorICAgIGNh
bGwgdDAKK2VuZAorCittYWNybyBhc3NlcnQoYXNzZXJ0aW9uKQorICAgIGlmIEFTU0VSVF9FTkFC
TEVECisgICAgICAgIGFzc2VydGlvbigub2spCisgICAgICAgIGNyYXNoKCkKKyAgICAub2s6Cisg
ICAgZW5kCitlbmQKKworbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3Rp
bmF0aW9uUmVnaXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBsciwgZGVzdGluYXRp
b25SZWdpc3RlcgorICAgIGVsc2lmIFg4NgorICAgICAgICBwb3AgZGVzdGluYXRpb25SZWdpc3Rl
cgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyByZXN0b3Jl
UmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihzb3VyY2VSZWdpc3RlcikKKyAgICBpZiBBUk12Nwor
ICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgorICAgIGVsc2lmIFg4NgorICAgICAgICBw
dXNoIHNvdXJjZVJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5k
CisKK21hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMKKyAg
ICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldChwY09mZnNl
dCkKKyAgICBsc2hpZnRpIDIsIHBjT2Zmc2V0CisgICAgYWRkcCBwY09mZnNldCwgUEMKKyAgICBq
bXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQorICAgIGxvYWRp
IHBjT2Zmc2V0LCB0MAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MCkKK2VuZAorCitt
YWNybyBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09m
ZnNldFtjZnJdLCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gY0NhbGwyKGZ1bmN0aW9u
LCBhcmcxLCBhcmcyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAg
ICAgbW92ZSBhcmcyLCB0MQorICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAg
ICAgICAgcG9rZSBhcmcyLCAxCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorICAg
IGNhbGwgZnVuY3Rpb24KK2VuZAorCisjIFRoaXMgYmFyZWx5IHdvcmtzLiBhcmczIGFuZCBhcmc0
IHNob3VsZCBwcm9iYWJseSBiZSBpbW1lZGlhdGVzLgorbWFjcm8gY0NhbGw0KGZ1bmN0aW9uLCBh
cmcxLCBhcmcyLCBhcmczLCBhcmc0KQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwg
dDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgICAgICBtb3ZlIGFyZzMsIHQyCisgICAgICAg
IG1vdmUgYXJnNCwgdDMKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBhcmcxLCAwCisgICAg
ICAgIHBva2UgYXJnMiwgMQorICAgICAgICBwb2tlIGFyZzMsIDIKKyAgICAgICAgcG9rZSBhcmc0
LCAzCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24K
K2VuZAorCittYWNybyBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIs
IFBDKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dp
bmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgYW4gb3BlcmFuZCBpbiB0aGUgaW5z
dHJ1Y3Rpb24gc3RyZWFtLiBmcm9tV2hlcmUKKyMgc2hvdWxkIGJlIGFuIGltbWVkaWF0ZSBpbnRl
Z2VyIC0gYW55IGludGVnZXIgeW91IGxpa2U7IHVzZSBpdCB0byBpZGVudGlmeSB0aGUgcGxhY2Ug
eW91J3JlCisjIGRlYnVnZ2luZyBmcm9tLiBvcGVyYW5kIHNob3VsZCBsaWtld2lzZSBiZSBhbiBp
bW1lZGlhdGUsIGFuZCBzaG91bGQgaWRlbnRpZnkgdGhlIG9wZXJhbmQKKyMgaW4gdGhlIGluc3Ry
dWN0aW9uIHN0cmVhbSB5b3UnZCBsaWtlIHRvIHByaW50IG91dC4KK21hY3JvIHRyYWNlT3BlcmFu
ZChmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgY0NhbGw0KF9sbGludF90cmFjZV9vcGVyYW5kLCBj
ZnIsIFBDLCBmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQx
LCBjZnIKK2VuZAorCisjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmlu
dCB0aGUgdmFsdWUgb2YgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24KKyMgc3RyZWFtLiBT
YW1lIGFzIHRyYWNlT3BlcmFuZCgpLCBidXQgYXNzdW1lcyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEg
cmVnaXN0ZXIsIGFuZCBwcmludHMgaXRzCisjIHZhbHVlLgorbWFjcm8gdHJhY2VWYWx1ZShmcm9t
V2hlcmUsIG9wZXJhbmQpCisgICAgY0NhbGw0KF9sbGludF90cmFjZV92YWx1ZSwgY2ZyLCBQQywg
ZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitl
bmQKKworbWFjcm8gdHJhY2VFeGVjdXRpb24oKQorICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisg
ICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3RyYWNlKQorICAgIGVuZAorZW5kCisKKyMgQ2FsbCBh
IGhlbHBlciBmb3IgY2FsbCBvcGNvZGVzLgorbWFjcm8gY2FsbENhbGxIZWxwZXIoYWR2YW5jZSwg
aGVscGVyLCBhY3Rpb24pCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMsIHQwCisgICAgc3RvcmVw
IHQwLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBjQ2FsbDIoaGVscGVyLCBj
ZnIsIFBDKQorICAgIG1vdmUgdDEsIGNmcgorICAgIGFjdGlvbih0MCkKK2VuZAorCittYWNybyBz
bG93UGF0aEZvckNhbGwoYWR2YW5jZSwgaGVscGVyKQorICAgIGNhbGxDYWxsSGVscGVyKAorICAg
ICAgICBhZHZhbmNlLAorICAgICAgICBoZWxwZXIsCisgICAgICAgIG1hY3JvIChjYWxsZWUpCisg
ICAgICAgICAgICBjYWxsIGNhbGxlZQorICAgICAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQor
ICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVChpbmNyZW1lbnQsIGFj
dGlvbikKKyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dDAKKyAgICAgICAgYmFkZGlzIGluY3JlbWVudCwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNv
dW50ZXJbdDBdLCAuY29udGludWUKKyAgICAgICAgYWN0aW9uKCkKKyAgICAuY29udGludWU6Cisg
ICAgZW5kCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGNoZWNr
U3dpdGNoVG9KSVQoCisgICAgICAgIDEsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBz
dG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgICAgICAgICAgY0Nh
bGwyKF9sbGludF9sb29wX29zciwgY2ZyLCBQQykKKyAgICAgICAgICAgIG1vdmUgdDEsIGNmcgor
ICAgICAgICAgICAgYnRweiB0MCwgLnJlY292ZXIKKyAgICAgICAgICAgIGptcCB0MAorICAgICAg
ICAucmVjb3ZlcjoKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRb
Y2ZyXSwgUEMKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JF
cGlsb2d1ZSgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMTAsCisgICAgICAgIG1h
Y3JvICgpCisgICAgICAgICAgICBjYWxsSGVscGVyKF9sbGludF9yZXBsYWNlKQorICAgICAgICBl
bmQpCitlbmQKKworbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoaW5kZXgpCisgICAgYXNzZXJ0KG1h
Y3JvIChvaykgYmlsdCBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIG9rIGVuZCkK
K2VuZAorCisjIEluZGV4LCB0YWcsIGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lz
dGVycy4gSW5kZXggaXMgbm90CisjIGNoYW5nZWQuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgs
IDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2Fk
CisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBh
eWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JC
dWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2
aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFs
dWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsb2FkcCBUYWdPZmZz
ZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxv
YWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9h
ZCBtYXkgYmUgdGhlIHNhbWUgcmVnaXN0ZXIuIEluZGV4IG1heSBiZSBjbG9iYmVyZWQuCittYWNy
byBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJp
Z3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxv
YWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YWcKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3Rh
bnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdGFnXSwgdGFnCisgICAgIyBUaGVyZSBp
cyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUg
ZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAg
bHNoaWZ0aSAzLCBpbmRleAorICAgIGFkZHAgaW5kZXgsIHRhZworICAgIGxvYWRwIFBheWxvYWRP
ZmZzZXRbdGFnXSwgcGF5bG9hZAorICAgIGxvYWRwIFRhZ09mZnNldFt0YWddLCB0YWcKKy5kb25l
OgorZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKGlu
ZGV4LCB0YWdDaGVjaywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0pCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAor
ICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXls
b2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVm
ZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmls
IGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVl
IC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgdGFnQ2hlY2soVGFnT2Zm
c2V0W3BheWxvYWQsIGluZGV4LCA4XSkKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQs
IGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBt
dXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdCBtdXRhdGVkLiBVc2UKKyMg
dGhpcyBpZiB5b3Uga25vdyB3aGF0IHRoZSB0YWcgb2YgdGhlIHZhcmlhYmxlIHNob3VsZCBiZS4g
RG9pbmcgdGhlIHRhZworIyB0ZXN0IGFzIHBhcnQgb2YgbG9hZGluZyB0aGUgdmFyaWFibGUgcmVk
dWNlcyByZWdpc3RlciB1c2UsIGJ1dCBtYXkgbm90CisjIGJlIGZhc3RlciB0aGFuIGRvaW5nIGxv
YWRDb25zdGFudE9yVmFyaWFibGUgZm9sbG93ZWQgYnkgYSBicmFuY2ggb24gdGhlCisjIHRhZy4K
K21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywg
cGF5bG9hZCwgc2xvdykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3Rv
bSgKKyAgICAgICAgaW5kZXgsCisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGJpbmVxIGFjdHVh
bFRhZywgZXhwZWN0ZWRUYWcsIHNsb3cgZW5kLAorICAgICAgICBwYXlsb2FkKQorZW5kCisKK21h
Y3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKGluZGV4LCBwYXlsb2Fk
KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKAorICAgICAgICBp
bmRleCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykgZW5kLAorICAgICAgICBwYXlsb2FkKQor
ZW5kCisKK21hY3JvIHdyaXRlQmFycmllcih0YWcsIHBheWxvYWQpCisgICAgIyBOb3RoaW5nIHRv
IGRvLCBzaW5jZSB3ZSBkb24ndCBoYXZlIGEgZ2VuZXJhdGlvbmFsIG9yIGluY3JlbWVudGFsIGNv
bGxlY3Rvci4KK2VuZAorCittYWNybyB2YWx1ZVByb2ZpbGUodGFnLCBwYXlsb2FkLCBwcm9maWxl
KQorICAgIHN0b3JlaSB0YWcsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3By
b2ZpbGVdCisgICAgc3RvcmVpIHBheWxvYWQsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5
bG9hZE9mZnNldFtwcm9maWxlXQorZW5kCisKKworIyBJbmRpY2F0ZSB0aGUgYmVnaW5uaW5nIG9m
IExMSW50LgorX2xsaW50X2JlZ2luOgorICAgIGNyYXNoKCkKKworCisjIEVudHJ5cG9pbnRzIGlu
dG8gdGhlIGludGVycHJldGVyCisKK21hY3JvIGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRl
cih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIK
KyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJn
ZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JD
YWxsW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlv
bkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBD
YWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1
dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJn
ZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHRhcmdl
dFJlZ2lzdGVyKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YXJnZXRSZWdpc3RlcgorZW5k
CisKK21hY3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgIHN0
b3JlcCBzb3VyY2VSZWdpc3RlciwgQ29kZUJsb2NrW2Nmcl0KK2VuZAorCittYWNybyBub3RGdW5j
dGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAgICAjIE5vdGhpbmcgdG8gZG8h
CitlbmQKKworIyBEbyB0aGUgYmFyZSBtaW5pbXVtIHJlcXVpcmVkIHRvIGV4ZWN1dGUgY29kZS4g
U2V0cyB1cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2RlQmxvY2sqCisjIGluIHQxLiBNYXkgYWxzbyB0
cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KK21hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRl
ciwgY29kZUJsb2NrU2V0dGVyLCBvc3JIZWxwZXIsIHRyYWNlSGVscGVyKQorICAgIHByZXNlcnZl
UmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgY2FsbCBm
cmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KKyAgICBzdG9yZXAgdDIsIFJldHVyblBD
W2Nmcl0KKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKHRyYWNl
SGVscGVyKQorICAgIGVuZAorICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICBpZiBKSVRfRU5B
QkxFRAorICAgICAgICBiYWRkaXMgNSwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJb
dDFdLCAuY29udGludWUKKyAgICAgICAgY0NhbGwyKG9zckhlbHBlciwgY2ZyLCBQQykKKyAgICAg
ICAgbW92ZSB0MSwgY2ZyCisgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgIGxvYWRw
IFJldHVyblBDW2Nmcl0sIHQyCisgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0
dXJuKHQyKQorICAgICAgICBqbXAgdDAKKyAgICAucmVjb3ZlcjoKKyAgICAgICAgY29kZUJsb2Nr
R2V0dGVyKHQxKQorICAgIC5jb250aW51ZToKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tTZXR0ZXIo
dDEpCisgICAgCisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9p
bnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjpt
X2luc3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCitlbmQKKworIyBFeHBl
Y3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVh
dmVzIGJlaGluZC4KKyMgTXVzdCBjYWxsIGRpc3BhdGNoKDApIGFmdGVyIGNhbGxpbmcgdGhpcy4K
K21hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1NraXApCisgICAgIyBQcm9m
aWxlIHRoZSBhcmd1bWVudHMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hvaWNlIGJ1dCB0
byBkbyB0aGlzLiBUaGlzCisgICAgIyBjb2RlIGlzIHByZXR0eSBob3JyZW5kb3VzIGJlY2F1c2Ug
b2YgdGhlIGRpZmZlcmVuY2UgaW4gb3JkZXJpbmcgYmV0d2VlbgorICAgICMgYXJndW1lbnRzIGFu
ZCB2YWx1ZSBwcm9maWxlcywgdGhlIGRlc2lyZSB0byBoYXZlIGEgc2ltcGxlIGxvb3AtZG93bi10
by16ZXJvCisgICAgIyBsb29wLCBhbmQgdGhlIGRlc2lyZSB0byB1c2Ugb25seSB0aHJlZSByZWdp
c3RlcnMgc28gYXMgdG8gcHJlc2VydmUgdGhlIFBDIGFuZAorICAgICMgdGhlIGNvZGUgYmxvY2su
IEl0IGlzIGxpa2VseSB0aGF0IHRoaXMgY29kZSBzaG91bGQgYmUgcmV3cml0dGVuIGluIGEgbW9y
ZQorICAgICMgb3B0aW1hbCB3YXkgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBoYXZlIG1vcmUgdGhh
biBmaXZlIHJlZ2lzdGVycyBhdmFpbGFibGUKKyAgICAjIGZvciBhcmJpdHJhcnkgdXNlIGluIHRo
ZSBpbnRlcnByZXRlci4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0s
IHQwCisgICAgYWRkaSAtcHJvZmlsZUFyZ1NraXAsIHQwICMgVXNlIGFkZGkgYmVjYXVzZSB0aGF0
J3Mgd2hhdCBoYXMgdGhlIHBlZXBob2xlCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHQw
LCAwLCBvayBlbmQpCisgICAgYnRpeiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKKyAgICBsb2Fk
cCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0
W3QxXSwgdDMKKyAgICBtdWxpIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0MiAjIEFhYWFhaGho
aCEgTmVlZCBzdHJlbmd0aCByZWR1Y3Rpb24hCisgICAgbmVnaSB0MAorICAgIGxzaGlmdGkgMywg
dDAKKyAgICBhZGRwIHQyLCB0MworLmFyZ3VtZW50UHJvZmlsZUxvb3A6CisgICAgbG9hZGkgVGhp
c0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIs
IHQwXSwgdDIKKyAgICBzdWJwIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQzCisgICAgc3RvcmVpIHQy
LCBwcm9maWxlQXJnU2tpcCAqIHNpemVvZiBWYWx1ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6Om1f
YnVja2V0cyArIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQ
YXlsb2FkT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIKKyAgICBz
dG9yZWkgdDIsIHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVlUHJv
ZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBiYWRkaW56IDgsIHQwLCAu
YXJndW1lbnRQcm9maWxlTG9vcAorLmFyZ3VtZW50UHJvZmlsZURvbmU6CisgICAgCisgICAgIyBD
aGVjayBzdGFjayBoZWlnaHQuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lz
dGVyc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0Mgor
ICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MiAgICMgRklYTUU6IENh
biBnZXQgdG8gdGhlIFJlZ2lzdGVyRmlsZSBmcm9tIHRoZSBKSVRTdGFja0ZyYW1lCisgICAgbHNo
aWZ0aSAzLCB0MAorICAgIGFkZHAgdDAsIGNmciwgdDAKKyAgICBicGFlcSBJbnRlcnByZXRlcjo6
bV9yZWdpc3RlckZpbGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hlaWdo
dE9LCisKKyAgICAjIFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBo
ZWxwZXIuCisgICAgY2FsbEhlbHBlcihfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVjaykKKy5zdGFj
a0hlaWdodE9LOgorZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hp
Y2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCittYWNybyBmdW5jdGlvbkFyaXR5
Q2hlY2soZG9uZUxhYmVsLCBoZWxwZXIpCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3Vt
ZW50Q291bnRbY2ZyXSwgdDAKKyAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRl
cnNbdDFdLCBkb25lTGFiZWwKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKSAgICMgVGhpcyBo
ZWxwZXIgaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4gbm8gZXJyb3IsIHQwICE9IDAg
PT4gZXJyb3IKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBidGl6IHQwLCAuY29udGludWUKKyAgICBs
b2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2Jh
bERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0
YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKy5jb250aW51ZToKKyAgICAjIFJlbG9hZCBDb2Rl
QmxvY2sgYW5kIFBDLCBzaW5jZSB0aGUgaGVscGVyIGNsb2JiZXJlZCBpdC4KKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3Qx
XSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMg
KyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworICAgIGptcCBkb25lTGFiZWwKK2VuZAorCitf
bGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9j
a0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9s
bGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9ldmFsX3By
b2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5j
dGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xv
Z3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xv
Z3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rp
b25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwsIF9s
bGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKKy5mdW5jdGlvbkZvckNhbGxC
ZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCisgICAgZGlzcGF0Y2goMCkKKyAg
ICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWU6CisgICAgcHJvbG9n
dWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2Nr
U2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGludF90
cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQorLmZ1bmN0aW9uRm9yQ29uc3Ry
dWN0QmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigxKQorICAgIGRpc3BhdGNoKDAp
CisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjazoKKyAgICBwcm9s
b2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0
dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGlu
dF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVu
Y3Rpb25Gb3JDYWxsQmVnaW4sIF9sbGludF9oZWxwZXJfY2FsbF9hcml0eUNoZWNrKQorCisKK19s
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1
bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRl
ciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9s
bGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCisgICAgZnVuY3Rpb25Bcml0eUNo
ZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfbGxpbnRfaGVscGVyX2NvbnN0cnVjdF9h
cml0eUNoZWNrKQorCisjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9ucworCitfbGxpbnRfb3Bf
ZW50ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1WYXJzW3QyXSwgdDIKKyAgICBidGl6IHQyLCAu
b3BFbnRlckRvbmUKKyAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAKKyAgICBtb3ZlIDAsIHQxCisu
b3BFbnRlckxvb3A6CisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAg
YnRpbnogdDIsIC5vcEVudGVyTG9vcAorLm9wRW50ZXJEb25lOgorICAgIGRpc3BhdGNoKDEpCisK
KworX2xsaW50X29wX2NyZWF0ZV9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5
VmFsdWVUYWcsIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQorLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmU6CisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5pdF9sYXp5X3JlZzoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRh
Z09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBcmd1bWVudHNEb25lCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCisub3BDcmVhdGVB
cmd1bWVudHNEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFjcm8gYWxsb2NhdGVCYXNpY0pT
T2JqZWN0KHNpemVDbGFzc0luZGV4LCBjbGFzc0luZm9PZmZzZXQsIHN0cnVjdHVyZSwgcmVzdWx0
LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNsb3dDYXNlKQorICAgIGNvbnN0IG9mZnNldE9mTXlTaXpl
Q2xhc3MgPSBKU0dsb2JhbERhdGE6OmhlYXAgKyBIZWFwOjptX29iamVjdFNwYWNlICsgTWFya2Vk
U3BhY2U6Om1fcHJlY2lzZVNpemVDbGFzc2VzICsgc2l6ZUNsYXNzSW5kZXggKiBzaXplb2YgTWFy
a2VkU3BhY2U6OlNpemVDbGFzcworICAgIAorICAgICMgRklYTUU6IHdlIGNhbiBnZXQgdGhlIGds
b2JhbCBkYXRhIGluIG9uZSBsb2FkIGZyb20gdGhlIHN0YWNrLgorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCBzY3JhdGNoMQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0
Y2gxXSwgc2NyYXRjaDEKKyAgICAKKyAgICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUg
bGlzdC4gICAgCisgICAgbG9hZHAgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpT
aXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKKyAgICBidHB6IHJlc3Vs
dCwgc2xvd0Nhc2UKKyAgICAKKyAgICAjIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUg
bGlzdC4KKyAgICBsb2FkcCBbcmVzdWx0XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIs
IG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVD
ZWxsW3NjcmF0Y2gxXQorCisgICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgbG9hZHAg
Y2xhc3NJbmZvT2Zmc2V0W3NjcmF0Y2gxXSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIs
IFtyZXN1bHRdCisgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1
bHRdCisgICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0KKyAgICBh
ZGRwIHNpemVvZiBKU09iamVjdCwgcmVzdWx0LCBzY3JhdGNoMQorICAgIHN0b3JlcCBzY3JhdGNo
MSwgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KK2VuZAorCitfbGxpbnRfb3Bf
Y3JlYXRlX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgQ2VsbFRhZywgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAg
IGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgT2JqZWN0
VHlwZSwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9pbmhlcml0b3JJ
RFt0MF0sIHQyCisgICAgYnRweiB0MiwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUJh
c2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6Ompz
RmluYWxPYmplY3RDbGFzc0luZm8sIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykK
KyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlz
cGF0Y2goMykKKworLm9wQ3JlYXRlVGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2NyZWF0ZV90aGlzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9jYWxs
ZWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRw
IFBheWxvYWRPZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQwCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDBdLCBPYmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQorCisu
b3BDb252ZXJ0VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NvbnZlcnRf
dGhpcykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfb2JqZWN0OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVj
dDo6bV9lbXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNpY0pTT2Jq
ZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2Jq
ZWN0Q2xhc3NJbmZvLCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikK
KworLm9wTmV3T2JqZWN0U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X29i
amVjdCkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfYXJyYXk6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXkpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheV9idWZm
ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdleHApCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNw
YXRjaCgzKQorCisKK19sbGludF9vcF9ub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDAsIHQyLCB0MykKKyAgICBiaW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90U2xvdwor
ICAgIHhvcmkgMSwgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAg
IHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisK
Ky5vcE5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25vdCkKKyAgICBkaXNw
YXRjaCgzKQorCisKK19sbGludF9vcF9lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIs
IHQwKQorICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywg
Lm9wRXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxvYWRpIDRb
UENdLCB0MgorICAgIGNpZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Miwg
OF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BFcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2VxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2VxX251bGw6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0
MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJp
bmVxIHQxLCBDZWxsVGFnLCAub3BFcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDEKKyAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJ
bmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9w
RXFOdWxsTm90SW1tZWRpYXRlCisub3BFcU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0MSwgTnVs
bFRhZywgdDIKKyAgICBjaWVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQyLCB0MQor
Lm9wRXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWco
dDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVxIHQyLCBD
ZWxsVGFnLCAub3BOZXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAg
ICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xl
YW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX25lcSkKKyAgICBkaXNwYXRjaCg0KQorICAgIAorCitfbGxpbnRf
b3BfbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRp
IFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6
bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCwgdDEKKyAgICBqbXAgLm9wTmVxTnVsbE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0
ZToKKyAgICBjaW5lcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFn
LCB0MQorICAgIGFuZGkgdDIsIHQxCisub3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3Jl
aSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHN0cmljdEVx
KGVxdWFsaXR5T3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0
MywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgQ2Vs
bFRhZywgLm5vdFN0cmluZworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0Mgor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MworICAgIGJibmVxIFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAubm90U3Ry
aW5nCisgICAgYmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3Qz
XSwgU3RyaW5nVHlwZSwgLnNsb3cKKy5ub3RTdHJpbmc6CisgICAgbG9hZGkgNFtQQ10sIHQyCisg
ICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywg
VGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIp
CisgICAgZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVx
IGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVscGVyX3N0cmljdGVxKQorCisKK19s
bGludF9vcF9uc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1h
Y3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwg
X2xsaW50X2hlbHBlcl9uc3RyaWN0ZXEpCisKKworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX2xlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3NlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfZ3JlYXRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVh
dGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9ncmVhdGVyZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2luYzoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93
CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2go
MikKKworLm9wUHJlSW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2lu
YykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wcmVfZGVjOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIEludDMyVGFnLCAub3BQcmVEZWNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDEKKyAgICBic3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAgICBzdG9y
ZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQ
cmVEZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfZGVjKQorICAgIGRp
c3BhdGNoKDIpCisKKworX2xsaW50X29wX3Bvc3RfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0SW5jU2xvdworICAgIGJpZXEgdDAs
IHQxLCAub3BQb3N0SW5jRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93Cisg
ICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJ
bmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2luYykKKyAgICBkaXNw
YXRjaCgzKQorCisKK19sbGludF9vcF9wb3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0
MSwgLm9wUG9zdERlY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MgorICAgIG1vdmUgdDIsIHQzCisgICAgYnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xvdworICAg
IHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdCisub3BQb3N0RGVjRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0RGVj
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfdG9fanNudW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBiaWVxIHQyLCBJbnQzMlRhZywgLm9wVG9Kc251
bWJlcklzSW50CisgICAgYmlhZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcFRvSnNudW1iZXJTbG93
Cisub3BUb0pzbnVtYmVySXNJbnQ6CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRj
aCgzKQorCisub3BUb0pzbnVtYmVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
dG9fanNudW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVnYXRlOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwg
dDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MSwgdDIpCisgICAgYmluZXEgdDEs
IEludDMyVGFnLCAub3BOZWdhdGVTcmNOb3RJbnQKKyAgICBidGl6IHQyLCAweDdmZmZmZmZmLCAu
b3BOZWdhdGVTbG93CisgICAgbmVnaSB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0
W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisg
ICAgZGlzcGF0Y2goMykKKy5vcE5lZ2F0ZVNyY05vdEludDoKKyAgICBiaWEgdDEsIExvd2VzdFRh
ZywgLm9wTmVnYXRlU2xvdworICAgIHhvcmkgMHg4MDAwMDAwMCwgdDEKKyAgICBzdG9yZWkgdDEs
IFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5lZ2F0ZVNsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX25lZ2F0ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGJpbmFy
eU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24s
IGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AxTm90SW50
CisgICAgYmluZXEgdDMsIEludDMyVGFnLCAub3AyTm90SW50CisgICAgbG9hZGkgNFtQQ10sIHQy
CisgICAgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHQzLCB0MSwgdDAsIC5zbG93LCB0MikKKyAg
ICBkaXNwYXRjaCg1KQorCisub3AxTm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZp
bml0ZWx5IG5vdCBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4K
KyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDMsIExvd2VzdFRhZywgLm9w
MU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJk
IHQxLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgor
ICAgIGZpaTJkIHQxLCB0MywgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgbG9hZGkgNFtQQ10s
IHQxCisgICAgZmlpMmQgdDAsIHQyLCBmdDAKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDAp
CisgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wMk5v
dEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNv
bmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBi
aWEgdDMsIExvd2VzdFRhZywgLnNsb3cKKyAgICBjaTJkIHQwLCBmdDAKKyAgICBmaWkyZCB0MSwg
dDMsIGZ0MQorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBb
Y2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhl
bHBlcikKKyAgICBkaXNwYXRjaCg1KQorZW5kCisKK21hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVy
YXRpb24sIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUo
CisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAg
ICAgICAgICAgaW50ZWdlck9wZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAg
IHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBz
dG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAor
ICAgICAgICBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfYWRkOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVs
cGVyX2FkZCkKKworCitfbGxpbnRfb3BfbXVsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBi
aW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0
LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGNvbnN0IHNjcmF0Y2ggPSBpbnQzMlRhZyAgICMg
V2Uga25vdyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2luY2UgaXQg
aGFzIGEgY29uc3RhbnQuCisgICAgICAgICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoCisgICAgICAg
ICAgICBibXVsaW8gbGVmdCwgc2NyYXRjaCwgc2xvdworICAgICAgICAgICAgYnRpbnogc2NyYXRj
aCwgLmRvbmUKKyAgICAgICAgICAgIGJpbHQgbGVmdCwgMCwgc2xvdworICAgICAgICAgICAgYmls
dCByaWdodCwgMCwgc2xvdworICAgICAgICAuZG9uZToKKyAgICAgICAgICAgIHN0b3JlaSBJbnQz
MlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRj
aCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfbXVsKQorCisKK19sbGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBsZWZ0
LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgc3ViZCBsZWZ0
LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfc3ViKQorCisKK19sbGludF9vcF9k
aXY6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAg
ICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAg
ICAgY2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQorICAgICAgICAg
ICAgZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdEludAor
ICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAg
ICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAg
ICAgICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6CisgICAgICAgICAgICBzdG9yZWQg
ZnQxLCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCwKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9kaXYpCisKKworX2xsaW50X29wX21vZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkKKyAgICBkaXNwYXRjaCg0KQorCisK
K21hY3JvIGJpdE9wKG9wZXJhdGlvbiwgaGVscGVyLCBhZHZhbmNlKQorICAgIGxvYWRpIDEyW1BD
XSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQy
LCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAg
ICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xv
dworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIG9wZXJhdGlvbih0MSwgdDAsIC5zbG93KQorICAg
IHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKKworLnNsb3c6CisgICAg
Y2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKK2VuZAorCitfbGxpbnRf
b3BfbHNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9sc2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX3JzaGlmdDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgc2xvdykgcnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfcnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF91cnNoaWZ0OgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93
KQorICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKKyAgICAgICAgICAgIGJpbHQgcmln
aHQsIDAsIHNsb3cKKyAgICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3Vyc2hpZnQs
CisgICAgICAgIDQpCisKKworX2xsaW50X29wX2JpdGFuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5kaSBsZWZ0
LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0YW5kLAorICAgICAgICA1KQor
CisKK19sbGludF9vcF9iaXR4b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5kLAor
ICAgICAgICBfbGxpbnRfaGVscGVyX2JpdHhvciwKKyAgICAgICAgNSkKKworCitfbGxpbnRfb3Bf
Yml0b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHNsb3cpIG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfYml0b3IsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG5vdDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGJpbmVxIHQyLCBJbnQz
MlRhZywgLm9wQml0bm90U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQor
ICAgIGRpc3BhdGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2JpdG5vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVja19oYXNf
aW5zdGFuY2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9wQ2hlY2tI
YXNJbnN0YW5jZVNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisg
ICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIElt
cGxlbWVudHNIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBkaXNwYXRj
aCgyKQorCisub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29w
X2luc3RhbmNlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgQ2hlY2sgdGhhdCBiYXNl
VmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisgICAgIyBG
SVhNRTogVGhpcyBzaG91bGQgYmUgZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAxMltQQ10sIHQxCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDEsIHQwKQorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3Rh
bmNlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIAorICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsu
CisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cp
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJiIFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0
YW5jZW9mU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgCisgICAg
IyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3ZlIDEs
IHQwCisub3BJbnN0YW5jZW9mTG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qy
XSwgdDIKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0
Ml0sIHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRpbnogdDIs
IC5vcEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9mRG9uZToK
KyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wSW5z
dGFuY2VvZlNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luc3RhbmNlb2YpCisg
ICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9pc19udW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9pc19udW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bf
aXNfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX29iamVj
dDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lz
X29iamVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19mdW5jdGlvbjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Z1bmN0
aW9uKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2luOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfcmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfcmVzb2x2ZV9za2lwKQorICAgIGRpc3BhdGNoKDUpCisKKworbWFjcm8gcmVz
b2x2ZUdsb2JhbChzaXplLCBzbG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6Cisg
ICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgUHJv
cGVydHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAjIDEyW1BDXSAg
U3RydWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9y
LgorICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8g
MCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYnBuZXEgdDEsIDEyW1BDXSwgc2xvdworICAg
IGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2Vb
dDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9y
ZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQorICAgIGxvYWRpIChzaXplIC0gMSkgKiA0W1BDXSwgdDAKKyAgICB2YWx1
ZVByb2ZpbGUodDIsIHQzLCB0MCkKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHJlc29sdmVHbG9iYWwoNiwgLm9wUmVzb2x2ZUdsb2Jh
bFNsb3cpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbFNsb3c6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3BhdGNoKDYpCisK
KworIyBHaXZlcyB5b3UgdGhlIHNjb3BlIGluIHQwLCB3aGlsZSBhbGxvd2luZyB5b3UgdG8gb3B0
aW9uYWxseSBwZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9uIHRoZQorIyBzY29wZXMgYXMgdGhl
eSBhcmUgdHJhdmVyc2VkLiBzY29wZUNoZWNrKCkgaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50
czogdGhlIHJlZ2lzdGVyCisjIGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdpc3RlciB0aGF0
IGNhbiBiZSB1c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAorIyB1c2Ug
dDMsIHNvIHlvdSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJlLgorbWFjcm8gZ2V0U2Nv
cGUoZGVCcnVpamluSW5kZXhPcGVyYW5kLCBzY29wZUNoZWNrKQorICAgIGxvYWRwIFNjb3BlQ2hh
aW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgZGVCcnVpamluSW5kZXhPcGVy
YW5kLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisgICAgCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQxCisgICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwgRnVuY3Rp
b25Db2RlLCAubG9vcAorICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNjb3BlQ2hhaW5b
dDFdLCAubG9vcAorICAgIAorICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0aW9uUmVnaXN0
ZXJbdDFdLCB0MQorCisgICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBz
Y29wZS4KKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5v
QWN0aXZhdGlvbgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5O
b2RlOjpuZXh0W3QwXSwgdDAKKy5ub0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0MgorICAgIAor
ICAgIGJ0aXogdDIsIC5kb25lCisubG9vcDoKKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBs
b2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisgICAgc3ViaSAxLCB0MgorICAgIGJ0
aW56IHQyLCAubG9vcAorCisuZG9uZToKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWxf
ZHluYW1pYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6
Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0aW9uU3Ry
dWN0dXJlW3QzXSwgdDMKKyAgICBnZXRTY29wZSgKKyAgICAgICAgMjBbUENdLAorICAgICAgICBt
YWNybyAoc2NvcGUsIHNjcmF0Y2gpCisgICAgICAgICAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6
b2JqZWN0W3Njb3BlXSwgc2NyYXRjaAorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVj
dHVyZVtzY3JhdGNoXSwgdDMsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93CisgICAg
ICAgIGVuZCkKKyAgICByZXNvbHZlR2xvYmFsKDcsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xv
dykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxf
ZHluYW1pYykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCisg
ICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAg
IERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgSW5kZXggb2YgcmVnaXN0
ZXIgaW4gdGhlIHNjb3BlLgorICAgICMgMTJbUENdICBEZSBCcnVpamluIGluZGV4LgorICAgIGdl
dFNjb3BlKDEyW1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgNFtQ
Q10sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9i
amVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBd
LCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbdDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQx
LCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRp
IDE2W1BDXSwgdDEKKyAgICB2YWx1ZVByb2ZpbGUodDMsIHQwLCB0MSkKKyAgICBkaXNwYXRjaCg1
KQorCisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgZ2V0U2NvcGUoOFtQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRp
IDEyW1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MywgdDIpCisgICAg
bG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQzLCB0MikKKyAgICBsb2FkcCBTY29w
ZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0Ojpt
X3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbdDAsIHQxLCA4XQor
ICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAor
ICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkg
VGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEs
IDhdLCB0MQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVp
IHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgbG9hZGkgMTJbUENdLCB0MworICAg
IHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X3B1dF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDEKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
Z2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3Rl
cnNbdDBdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBs
b2FkaSA0W1BDXSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0b3JlaSB0Miwg
VGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbdDAsIHQx
LCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfYmFzZToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfYmFz
ZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9lbnN1cmVfcHJvcGVydHlfZXhpc3Rz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZW5z
dXJlX3Byb3BlcnR5X2V4aXN0cykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNv
bHZlX3dpdGhfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50
X29wX3Jlc29sdmVfd2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNSkKKwor
CitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIG9u
bHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5v
dCBtb2RpZnkgdGhlCisgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhl
IGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorICAgICMgcGluZy1wb25n
aW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwg
Y29udGludWUKKyAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdv
cnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisgICAgIyB3ZSB3b3VsZCBoYXZl
IGJlZW4gZG9pbmcgYW55d2F5LgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2W1BD
XSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMs
IC5vcEdldEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVj
dDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2Fk
aSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0s
IHQyCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAzMltQQ10sIHQxCisgICAgdmFs
dWVQcm9maWxlKHQzLCB0MiwgdDEpCisgICAgZGlzcGF0Y2goOSkKKworLm9wR2V0QnlJZFNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9pZCkKKyAgICBkaXNwYXRjaCg5
KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudHNMZW5n
dGhTbG93CisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDIK
KyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRj
aCg0KQorCisub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9wdXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0
MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEyW1BDXSwgdDIK
KyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGJwbmVx
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBsb2FkaSAy
MFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQwLCB0MikKKyAg
ICB3cml0ZUJhcnJpZXIodDAsIHQyKQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0K
KyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQorICAgIGRpc3BhdGNoKDkpCisK
Ky5vcFB1dEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaWQp
CisgICAgZGlzcGF0Y2goOSkKKworCittYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFs
Q2hlY2tzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBs
b2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENl
bGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgYnBu
ZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGFkZGl0
aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQx
CisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBhZGRw
IHQxLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCisgICAg
d3JpdGVCYXJyaWVyKHQxLCB0MikKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICBs
b2FkaSAyNFtQQ10sIHQxCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0
b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICBkaXNwYXRjaCg5KQorZW5kCisK
K19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgcHV0QnlJZFRyYW5z
aXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorCisKK19sbGlu
dF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgcHV0QnlJZFRyYW5zaXRpb24o
CisgICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCisgICAgICAgICAg
ICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVj
dHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAgICAgIAorICAgICAgICAgICAgbG9hZHAg
MjhbUENdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3Jh
dGNoLCBvayBlbmQpCisgICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jb
c2NyYXRjaF0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNj
cmF0Y2gsIG9rIGVuZCkKKyAgICAgICAgICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSAr
IFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorICAgICAgICAubG9vcDoK
KyAgICAgICAgICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0
W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICAgICAgICAgIGJwbmVxIG9sZFN0
cnVjdHVyZSwgW3NjcmF0Y2hdLCBzbG93CisgICAgICAgICAgICBhZGRwIDQsIHNjcmF0Y2gKKyAg
ICAgICAgICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3Ry
dWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCkKKwor
CitfbGxpbnRfb3BfZGVsX2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X2lkKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX2dldF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQxCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNsb3cpCisgICAg
bG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cp
CisgICAgYnBuZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6
Om1fc3RvcmFnZVt0MF0sIHQzCisgICAgYmlhZXEgdDEsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3Ro
W3QwXSwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgQXJy
YXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgIGxvYWRp
IEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisg
ICAgYmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93CisgICAgc3RvcmVpIHQy
LCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgdmFsdWVQcm9maWxlKHQyLCB0MSwg
dDApCisgICAgZGlzcGF0Y2goNSkKKworLm9wR2V0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29w
X2dldF9hcmd1bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhb
UENdLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEludDMyVGFnLCB0MiwgLm9wR2V0QXJndW1lbnRC
eVZhbFNsb3cpCisgICAgYWRkaSAxLCB0MgorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXls
b2FkT2Zmc2V0W2Nmcl0sIHQxCisgICAgYmlhZXEgdDIsIHQxLCAub3BHZXRBcmd1bWVudEJ5VmFs
U2xvdworICAgIG5lZ2kgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUaGlzQXJn
dW1lbnRPZmZzZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisgICAgbG9hZGkgVGhpc0Fy
Z3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEKKyAgICBzdG9yZWkg
dDAsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEdldEFyZ3VtZW50QnlWYWxTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQorICAgIGRp
c3BhdGNoKDUpCisKKworX2xsaW50X29wX2dldF9ieV9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMTZbUENd
LCB0MAorICAgIGJwbmVxIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAub3BHZXRCeVBu
YW1lU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMjBb
UENdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAsIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAg
ICBsb2FkaSAyNFtQQ10sIHQwCisgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAorICAgIHN1Ymkg
MSwgdDAKKyAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFi
bGVTbG90c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJv
cGVydHlTdG9yYWdlW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQwLCA4XSwgdDEK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg3KQorCisub3BHZXRCeVBu
YW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3BuYW1lKQorICAg
IGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX3B1dF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRpIDhbUENdLCB0
MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBJbnQzMlRhZywgdDIsIC5v
cFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpq
c0FycmF5Q2xhc3NJbmZvW3QwXSwgdDAKKyAgICBicG5lcSBbdDFdLCB0MCwgLm9wUHV0QnlWYWxT
bG93CisgICAgYmlhZXEgdDIsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QxXSwgLm9wUHV0QnlW
YWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QxXSwgdDAKKyAgICBiaWVxIEFy
cmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgRW1wdHlWYWx1ZVRh
ZywgLm9wUHV0QnlWYWxFbXB0eQorLm9wUHV0QnlWYWxTdG9yZVJlc3VsdDoKKyAgICBsb2FkaSAx
MltQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQxLCB0MykKKyAg
ICB3cml0ZUJhcnJpZXIodDEsIHQzKQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX3Zl
Y3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdCisgICAgc3RvcmVpIHQzLCBBcnJheVN0b3JhZ2U6
Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKwor
Lm9wUHV0QnlWYWxFbXB0eToKKyAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJ
blZlY3Rvclt0MF0KKyAgICBiaWIgdDIsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdLCAub3BQ
dXRCeVZhbFN0b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0MiwgdDEKKyAgICBzdG9yZWkgdDEsIEFy
cmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdCisgICAgam1wIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQK
KworLm9wUHV0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlf
dmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2RlbF9ieV92YWw6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWxfYnlfdmFsKQor
ICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9pbmRleDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pbmRleCkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2V0dGVyX3NldHRlcjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9nZXR0ZXJfc2V0
dGVyKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2xvb3A6CisgICAgbm9wCitfbGxp
bnRfb3Bfam1wOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkaXNwYXRjaEJyYW5jaCg0W1BD
XSkKKworCitfbGxpbnRfb3Bfam1wX3Njb3BlczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2ptcF9zY29wZXMpCisgICAgZGlzcGF0Y2goMCkKKwor
CittYWNybyBqdW1wVHJ1ZU9yRmFsc2UoY29uZGl0aW9uT3AsIHNsb3cpCisgICAgbG9hZGkgNFtQ
Q10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEJvb2xlYW5UYWcs
IHQwLCAuc2xvdykKKyAgICBjb25kaXRpb25PcCh0MCwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgz
KQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuc2xvdzoKKyAgICBj
YWxsSGVscGVyKHNsb3cpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9p
Zl90cnVlOgorICAgIG5vcAorX2xsaW50X29wX2p0cnVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGlu
eiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qdHJ1ZSkKKworCitf
bGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKKyAgICBub3AKK19sbGludF9vcF9qZmFsc2U6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAgbWFjcm8gKHZh
bHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfamZhbHNlKQorCisKK21hY3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGFu
ZGxlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5l
cSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MgorICAgIGNlbGxIYW5kbGVyKFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAg
IGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuaW1tZWRpYXRlOgorICAgIG9yaSAxLCB0MQorICAg
IGltbWVkaWF0ZUhhbmRsZXIodDEsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKK2VuZAorCitf
bGxpbnRfb3BfamVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgK
KyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0Ym56IHZhbHVlLCBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmll
cSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKyAgICAKKworX2xsaW50X29wX2puZXFfbnVs
bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAo
dmFsdWUsIHRhcmdldCkgYnRieiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0
IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpbmVxIHZhbHVlLCBOdWxsVGFn
LCB0YXJnZXQgZW5kKQorCisKK19sbGludF9vcF9qbmVxX3B0cjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNoCisgICAgYnBl
cSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCisu
b3BKbmVxUHRyQnJhbmNoOgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKy5vcEpuZXFQdHJG
YWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGNvbXBhcmUoaW50ZWdlckNv
bXBhcmUsIGRvdWJsZUNvbXBhcmUsIGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBs
b2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCwgdDEpCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQyLCB0MykKKyAgICBiaW5lcSB0MCwg
SW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDJOb3RJbnQK
KyAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQp
CisKKy5vcDFOb3RJbnQ6CisgICAgYmlhIHQwLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQy
LCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcs
IC5zbG93CisgICAgY2kyZCB0MywgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5v
dEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQorLm9wMU5vdEludFJlYWR5Ogor
ICAgIGZpaTJkIHQxLCB0MCwgZnQwCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBU
YXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMk5vdEludDoKKyAgICBjaTJkIHQxLCBmdDAK
KyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQorICAg
IGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisK
Ky5qdW1wVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKworLnNsb3c6CisgICAg
Y2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9v
cF9pZl9sZXNzOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmls
dCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0
YXJnZXQpIGJkbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfamxlc3MpCisKKworX2xsaW50X29wX2pubGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBs
ZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJkZ3RlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVs
cGVyX2pubGVzcykKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyOgorICAgIG5vcAorX2xs
aW50X29wX2pncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0
IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3QgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXIpCisKKworX2xs
aW50X29wX2puZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcXVuIGxl
ZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcikK
KworCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzZXE6CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3Nl
cToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0
IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzc2VxKQorCisKK19sbGludF9vcF9qbmxl
c3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0dW4gbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzZXEpCisKKworX2xsaW50X29wX2xv
b3BfaWZfZ3JlYXRlcmVxOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyZXE6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
dGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3Bfam5ncmVhdGVyZXE6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcmVxKQorCisKK19sbGludF9vcF9sb29w
X2hpbnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29w
KCkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zd2l0Y2hfaW1tOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAg
bXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MyAgICMgRklYTUU6IHdvdWxkIGJlIG5pY2Ug
dG8gcGVlcGhvbGUgdGhpcyEKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2ltbWVk
aWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGFk
ZHAgdDMsIHQyCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKKyAg
ICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxl
SnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRj
aEltbUZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRz
ICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDMKKyAgICBsb2FkaSBbdDMsIHQwLCA0XSwgdDEK
KyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJhbmNo
V2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoSW1tTm90SW50OgorICAgIGJpYiB0MSwgTG93ZXN0
VGFnLCAub3BTd2l0Y2hJbW1TbG93ICAjIEdvIHRvIHNsb3cgcGF0aCBpZiBpdCdzIGEgZG91Ymxl
LgorLm9wU3dpdGNoSW1tRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisK
Ky5vcFN3aXRjaEltbVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9p
bW0pCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAg
ICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjpS
YXJlRGF0YTo6bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0
W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BTd2l0
Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEK
KyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwg
U3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNTdHJpbmc6
Om1fdmFsdWVbdDBdLCB0MAorICAgIGJpbmVxIFN0cmluZ0ltcGw6Om1fbGVuZ3RoW3QwXSwgMSwg
Lm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU3RyaW5nSW1wbDo6bV9kYXRhOFt0
MF0sIHQxCisgICAgYnRpbnogU3RyaW5nSW1wbDo6bV9oYXNoQW5kRmxhZ3NbdDBdLCBIYXNoRmxh
Z3M4Qml0QnVmZmVyLCAub3BTd2l0Y2hDaGFyOEJpdAorICAgIGxvYWRoIFt0MV0sIHQwCisgICAg
am1wIC5vcFN3aXRjaENoYXJSZWFkeQorLm9wU3dpdGNoQ2hhcjhCaXQ6CisgICAgbG9hZGIgW3Qx
XSwgdDAKKy5vcFN3aXRjaENoYXJSZWFkeToKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWlu
W3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsg
VmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRw
IFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0s
IHQyCisgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCisgICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1t
RmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCisKKy5vcFN3aXRj
aENoYXJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRf
b3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3N3aXRjaF9zdHJpbmcpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRf
b3BfbmV3X2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0aXogMTJbUENdLCAub3BO
ZXdGdW5jVW5jaGVja2VkCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BOZXdGdW5jRG9uZQorLm9wTmV3RnVuY1Vu
Y2hlY2tlZDoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmMpCisub3BOZXdG
dW5jRG9uZToKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfZnVuY19leHA6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVu
Y19leHApCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBkb0NhbGwoaGVscGVyKQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBMTEludENhbGxM
aW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93KQorICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2Fs
bFNsb3cKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgYWRkcCAyNCwgUEMKKyAgICBsc2hpZnRp
IDMsIHQzCisgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2Yg
Y2ZyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAKKyAgICBzdG9y
ZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIHQwLCBTY29wZUNo
YWluICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBsb2FkaSA4IC0gMjRbUENdLCB0MgorICAgIHN0
b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgc3RvcmVwIGNmciwg
Q2FsbGVyRnJhbWVbdDNdCisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9m
ZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQorICAg
IHN0b3JlaSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFnT2Zmc2V0W3QzXQorICAgIG1vdmUgdDMs
IGNmcgorICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQor
ICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JD
YWxsKDYsIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY2FsbCkKKworCitfbGxpbnRfb3BfY29uc3Ry
dWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBlcl9jb25z
dHJ1Y3QpCisKKworX2xsaW50X29wX2NhbGxfdmFyYXJnczoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIF9sbGludF9oZWxwZXJfY2FsbF92YXJhcmdzKQorCisK
K19sbGludF9vcF9jYWxsX2V2YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIAorICAgICMg
RXZhbCBpcyBleGVjdXRlZCBpbiBvbmUgb2YgdHdvIG1vZGVzOgorICAgICMKKyAgICAjIDEpIFdl
IGZpbmQgdGhhdCB3ZSdyZSByZWFsbHkgaW52b2tpbmcgZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhl
CisgICAgIyAgICBleGVjdXRpb24gaXMgcGVyZm9tZWQgZW50aXJlbHkgaW5zaWRlIHRoZSBoZWxw
ZXIsIGFuZCBpdAorICAgICMgICAgcmV0dXJucyB0aGUgUEMgb2YgYSBmdW5jdGlvbiB0aGF0IGp1
c3QgcmV0dXJucyB0aGUgcmV0dXJuIHZhbHVlCisgICAgIyAgICB0aGF0IHRoZSBldmFsIHJldHVy
bmVkLgorICAgICMKKyAgICAjIDIpIFdlIGZpbmQgdGhhdCB3ZSdyZSBpbnZva2luZyBzb21ldGhp
bmcgY2FsbGVkIGV2YWwoKSB0aGF0IGlzIG5vdAorICAgICMgICAgdGhlIHJlYWwgZXZhbC4gVGhl
biB0aGUgaGVscGVyIHJldHVybnMgdGhlIFBDIG9mIHRoZSB0aGluZyB0bworICAgICMgICAgY2Fs
bCwgYW5kIHdlIGNhbGwgaXQuCisgICAgIworICAgICMgVGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxl
IHR3byBjYXNlcywgd2hpY2ggd291bGQgcmVxdWlyZSBhIHRvdGFsIG9mCisgICAgIyB1cCB0byBm
b3VyIHBpZWNlcyBvZiBzdGF0ZSB0aGF0IGNhbm5vdCBiZSBlYXNpbHkgcGFja2VkIGludG8gdHdv
CisgICAgIyByZWdpc3RlcnMgKEMgZnVuY3Rpb25zIGNhbiByZXR1cm4gdXAgdG8gdHdvIHJlZ2lz
dGVycywgZWFzaWx5KToKKyAgICAjCisgICAgIyAtIFRoZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBU
aGlzIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBtb2RpZmllZAorICAgICMgICBieSB0aGUgaGVs
cGVyLCBidXQgdGhlIGNvbnZlbnRpb24gaXMgdGhhdCBpdCByZXR1cm5zIGl0LiBJdCdzIG5vdAor
ICAgICMgICB0b3RhbGx5IGNsZWFyIGlmIHRoYXQncyBuZWNlc3NhcnksIHNpbmNlIHRoZSBjZnIg
aXMgY2FsbGVlIHNhdmUuCisgICAgIyAgIEJ1dCB0aGF0J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVy
ZSBpbnRlcnByZXRlciBzbyB3ZSBzdGljayB3aXRoIGl0LgorICAgICMKKyAgICAjIC0gQSBiaXQg
dG8gc2F5IGlmIHRoZSBoZWxwZXIgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIHRoZSBldmFsIGFuZCBo
YXMKKyAgICAjICAgdGhlIHJldHVybiB2YWx1ZSwgb3IgZGlkIG5vdCBleGVjdXRlIHRoZSBldmFs
IGJ1dCBoYXMgYSBQQyBmb3IgdXMKKyAgICAjICAgdG8gY2FsbC4KKyAgICAjCisgICAgIyAtIEVp
dGhlcjoKKyAgICAjICAgLSBUaGUgSlMgcmV0dXJuIHZhbHVlICh0d28gcmVnaXN0ZXJzKSwgb3IK
KyAgICAjCisgICAgIyAgIC0gVGhlIFBDIHRvIGNhbGwuCisgICAgIworICAgICMgSXQgdHVybnMg
b3V0IHRvIGJlIGVhc2llciB0byBqdXN0IGFsd2F5cyBoYXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIK
KyAgICAjIGFuZCBhIFBDIHRvIGNhbGwsIGFuZCB0aGF0IFBDIG1heSBiZSBhIGR1bW15IHRodW5r
IHRoYXQganVzdAorICAgICMgcmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1
cm5lZC4KKyAgICAKKyAgICBzbG93UGF0aEZvckNhbGwoNCwgX2xsaW50X2hlbHBlcl9jYWxsX2V2
YWwpCisKKworX2xsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50OgorICAgIGRpc3BhdGNoQWZ0ZXJD
YWxsKCkKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmlu
ZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZh
dGlvbkNyZWF0ZWQKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRh
ZywgLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkCisub3BUZWFyT2ZmQWN0aXZhdGlvbkNy
ZWF0ZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24p
Cisub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfdGVhcl9vZmZfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBzdWJpIDEsIHQwICAgIyBHZXQgdGhlIHVubW9kaWZpZWRBcmd1
bWVudHNSZWdpc3RlcgorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVl
VGFnLCAub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZAorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCisub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRl
ZDoKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGRvUmV0dXJuKCkKKyAgICBsb2FkcCBSZXR1
cm5QQ1tjZnJdLCB0MgorICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgorICAgIHJlc3Rv
cmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAgIHJldAorZW5kCisKK19sbGludF9v
cF9yZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGls
b2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0
OgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MworICAgIHN0b3JlaSB0
MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgdmFsdWVQcm9maWxlKHQxLCB0MCwgdDMpCisgICAgdHJhY2VFeGVjdXRp
b24oKSAjIE5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSBpdCB3b3VsZCBjbG9iYmVyIHQxLCB0MAor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisg
ICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JU
aGlzTm90T2JqZWN0CisgICAgZG9SZXR1cm4oKQorCisub3BSZXRPYmplY3RPclRoaXNOb3RPYmpl
Y3Q6CisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwg
dDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3BfbWV0aG9kX2NoZWNrOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIGlnbm9yZSBtZXRob2QgY2hlY2tzIGFuZCB1c2Ug
bm9ybWFsIGdldF9ieV9pZCBvcHRpbWl6YXRpb25zLgorICAgIGRpc3BhdGNoKDEpCisKKworX2xs
aW50X29wX3N0cmNhdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3N0cmNhdCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF90b19wcmlt
aXRpdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxv
YWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAg
ICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9QcmltaXRpdmVJc0ltbQorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNl
Cisub3BUb1ByaW1pdGl2ZUlzSW1tOgorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMs
IDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0
Y2goMykKKworLm9wVG9QcmltaXRpdmVTbG93Q2FzZToKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfdG9fcHJpbWl0aXZlKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9w
bmFtZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9nZXRfcG5hbWVzKQorICAgIGRpc3BhdGNoKDApICMgVGhlIGhlbHBlciBlaXRoZXIgYWR2YW5j
ZXMgdGhlIFBDIG9yIGp1bXBzIHVzIHRvIHNvbWV3aGVyZSBlbHNlLgorCisKK19sbGludF9vcF9u
ZXh0X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisg
ICAgbG9hZGkgMTZbUENdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0s
IHQwCisgICAgYmllcSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgLm9wTmV4dFBuYW1l
RW5kCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MiwgOF0sIHQyCisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9qc1N0cmluZ3Nb
dDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDhdLCB0MworICAgIGFkZGkgMSwgdDAKKyAgICBz
dG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA0W1BDXSwgdDEK
KyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQz
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3Ry
dWN0dXJlW3QzXSwgdDEKKyAgICBicG5lcSB0MSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9j
YWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0Ml0sIHQwCisgICAgbG9hZHAg
U3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5vcE5leHRQ
bmFtZVRhcmdldAorLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wOgorICAgIGJpZXEgU3Ry
dWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFt0MV0sIE51bGxUYWcsIC5vcE5leHRQbmFt
ZVNsb3cKKyAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0
MV0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQxCisgICAgYnBuZXEg
dDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBhZGRwIDQsIHQwCisgICAgYnRwbnogW3Qw
XSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wCisub3BOZXh0UG5hbWVUYXJnZXQ6Cisg
ICAgZGlzcGF0Y2hCcmFuY2goMjRbUENdKQorCisub3BOZXh0UG5hbWVFbmQ6CisgICAgZGlzcGF0
Y2goNykKKworLm9wTmV4dFBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
bmV4dF9wbmFtZSkgIyBUaGlzIGVpdGhlciBrZWVwcyB0aGUgUEMgd2hlcmUgaXQgd2FzIChjYXVz
aW5nIHVzIHRvIGxvb3ApIG9yIHNldHMgaXQgdG8gdGFyZ2V0LgorICAgIGRpc3BhdGNoKDApCisK
KworX2xsaW50X29wX3B1c2hfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX3Njb3BlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xs
aW50X29wX3BvcF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3BvcF9zY29wZSkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9w
dXNoX25ld19zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3B1c2hfbmV3X3Njb3BlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X2NhdGNoOgorICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhy
b3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKKyAgICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRk
cmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQorICAgICMgdGhl
IGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190cmFtcG9s
aW5lKS4KKyAgICAjIFRoZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIg
dG8gYmUgaW4gdDAuIFRoZSB0aHJvd2luZworICAgICMgY29kZSBtdXN0IGhhdmUga25vd24gdGhh
dCB3ZSB3ZXJlIHRocm93aW5nIHRvIHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKKyAgICAjIHNl
dCBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdy4KKyAgICBtb3ZlIHQw
LCBjZnIKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBs
b2FkaSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCisg
ICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAK
KyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxCisg
ICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10K
KyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdP
ZmZzZXRbdDNdICAgICAgIAorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIHN0b3JlaSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIs
IDhdCisgICAgdHJhY2VFeGVjdXRpb24oKSAgIyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVz
ZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIgdDAsIHQxLCB0MiwgdDMgYWJvdmUuCisgICAgZGlz
cGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3c6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvdykKKyAgICBkaXNwYXRjaCgyKQorCisKK19s
bGludF9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpCisgICAgZGlz
cGF0Y2goMikKKworCitfbGxpbnRfb3BfanNyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBhZGRpIDMgKiA0LCBQQywgdDEKKyAgICBzdG9yZWkgdDEsIFtj
ZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zcmV0
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkcCBb
Y2ZyLCB0MCwgOF0sIFBDCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfZGVidWc6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWJ1ZykK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcm9maWxlX3dpbGxfY2FsbDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVy
UmVmZXJlbmNlW3NwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCisub3BQcm9m
aWxlV2lsbENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Byb2ZpbGVf
ZGlkX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6
OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BQcm9m
aWxlV2lsbENhbGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlk
X2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxp
bnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9y
RXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAg
IGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZToKKyAg
ICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJv
bSBMTEludEhlbHBlcnMpLCBzbworICAgICMgdGhlIHRocm93IHRhcmdldCBpcyBub3QgbmVjZXNz
YXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0byBoZXJlLgorICAgICMgVGhpcyBlc3Nl
bnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCisgICAgbG9hZHAg
SklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRh
OjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0
TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworX2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1w
b2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRw
IEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0
YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdl
dE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKKyMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBj
YW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgorIyBUaGVz
ZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhlciBK
SVQuIFdlIGFzc2VydAorIyBhcyBtdWNoLgorCittYWNybyBub3RTdXBwb3J0ZWQoKQorICAgIGlm
IEFTU0VSVF9FTkFCTEVECisgICAgICAgIGNyYXNoKCkKKyAgICBlbHNlCisgICAgICAgICMgV2Ug
c2hvdWxkIHVzZSB3aGF0ZXZlciB0aGUgc21hbGxlc3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24gaXMs
IGp1c3QgdG8KKyAgICAgICAgIyBlbnN1cmUgdGhhdCB0aGVyZSBpcyBhIGdhcCBiZXR3ZWVuIGlu
c3RydWN0aW9uIGxhYmVscy4gSWYgbXVsdGlwbGUKKyAgICAgICAgIyBzbWFsbGVzdCBpbnN0cnVj
dGlvbnMgZXhpc3QsIHdlIHNob3VsZCBwaWNrIHRoZSBvbmUgdGhhdCBpcyBtb3N0CisgICAgICAg
ICMgbGlrZWx5IHJlc3VsdCBpbiBleGVjdXRpb24gYmVpbmcgaGFsdGVkLiBDdXJyZW50bHkgdGhh
dCBpcyB0aGUgYnJlYWsKKyAgICAgICAgIyBpbnN0cnVjdGlvbiBvbiBhbGwgYXJjaGl0ZWN0dXJl
cyB3ZSdyZSBpbnRlcmVzdGVkIGluLiAoQnJlYWsgaXMgaW50MworICAgICAgICAjIG9uIEludGVs
LCB3aGljaCBpcyAxIGJ5dGUsIGFuZCBia3B0IG9uIEFSTXY3LCB3aGljaCBpcyAyIGJ5dGVzLikK
KyAgICAgICAgYnJlYWsKKyAgICBlbmQKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0
aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2NoYWluOgorICAg
IG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX2NoYWluOgorICAg
IG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3Byb3RvOgorICAg
IG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3NlbGY6CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1
cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX2NoYWluOgorICAgIG5vdFN1
cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3Byb3RvOgorICAgIG5vdFN1
cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3NlbGY6CisgICAgbm90U3Vw
cG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQo
KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xs
aW50X29wX2dldF9zdHJpbmdfbGVuZ3RoOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9v
cF9wdXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0
X2J5X2lkX3JlcGxhY2U6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uOgorICAgIG5vdFN1cHBvcnRlZCgpCisKKworIyBJbmRpY2F0ZSB0aGUgZW5k
IG9mIExMSW50LgorX2xsaW50X2VuZDoKKyAgICBjcmFzaCgpCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
Ikxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUg
IkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KKwor
Ly8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20sIHdoaWNoIGNvbnRhaW5z
IGFsbCBvZiB0aGUgYXNzZW1ibHkgY29kZQorLy8gZm9yIHRoZSBpbnRlcnByZXRlciwgYXMgY29t
cGlsZWQgZnJvbSBMb3dMZXZlbEludGVycHJldGVyLmFzbS4KKyNpbmNsdWRlICJMTEludEFzc2Vt
Ymx5LmgiCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisjZGVmaW5lIExv
d0xldmVsSW50ZXJwcmV0ZXJfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBF
TkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworI2RlZmluZSBMTElOVF9JTlNU
UlVDVElPTl9ERUNMKG9wY29kZSwgbGVuZ3RoKSBleHRlcm4gIkMiIHZvaWQgbGxpbnRfIyNvcGNv
ZGUoKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoTExJTlRfSU5TVFJVQ1RJT05fREVDTCk7Cisj
dW5kZWYgTExJTlRfSU5TVFJVQ1RJT05fREVDTAorCitleHRlcm4gIkMiIHZvaWQgbGxpbnRfYmVn
aW4oKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9lbmQoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGlu
dF9wcm9ncmFtX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZXZhbF9wcm9sb2d1
ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKCk7
CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSgp
OworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKCk7
CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVj
aygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KCk7CitleHRl
cm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSgpOworZXh0ZXJu
ICJDIiB2b2lkIGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUoKTsKKworI2VuZGlm
IC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExvd0xldmVsSW50ZXJwcmV0ZXJfaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMDE0IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJvcHQiCisKK2NsYXNzIE5vZGUKKyAgZGVmIGFy
bVY3U2luZ2xlCisgICAgZG91YmxlT3BlcmFuZCA9IGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJC
b2d1cyByZWdpc3RlciBuYW1lICN7ZG91YmxlT3BlcmFuZH0iIHVubGVzcyBkb3VibGVPcGVyYW5k
ID1+IC9eZC8KKyAgICAicyIgKyAoJH4ucG9zdF9tYXRjaC50b19pICogMikudG9fcworICBlbmQK
K2VuZAorCitjbGFzcyBTcGVjaWFsUmVnaXN0ZXIgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFs
aXplKG5hbWUpCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFybVY3T3BlcmFu
ZAorICAgIEBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5k
CisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRl
PworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIHRydWUKKyAgZW5k
CitlbmQKKworQVJNdjdfRVhUUkFfR1BSUyA9IFtTcGVjaWFsUmVnaXN0ZXIubmV3KCJyOSIpLCBT
cGVjaWFsUmVnaXN0ZXIubmV3KCJyOCIpLCBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyMyIpXQorQVJN
djdfRVhUUkFfRlBSUyA9IFtTcGVjaWFsUmVnaXN0ZXIubmV3KCJkNyIpXQorQVJNdjdfU0NSQVRD
SF9GUFIgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJkOCIpCisKK2RlZiBhcm1WN01vdmVJbW1lZGlh
dGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJlbnRseSB3ZSBvbmx5IGhhbmRsZSB0aGUgc2lt
cGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1vdi9tb3Z0IGZvciB0aGUgY29tcGxleCBvbmVz
LgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2CisgICAgJGFzbS5wdXRzICJtb3Z3ICN7
cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje3ZhbHVlfSIKKyAgZWxzaWYgKH52YWx1ZSkgPj0g
MCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20ucHV0cyAibXZuICN7cmVnaXN0ZXIuYXJtVjdP
cGVyYW5kfSwgXCMje352YWx1ZX0iCisgIGVsc2UKKyAgICAkYXNtLnB1dHMgIm1vdncgI3tyZWdp
c3Rlci5hcm1WN09wZXJhbmR9LCBcIyN7dmFsdWUgJiAweGZmZmZ9IgorICAgIGlmICh2YWx1ZSAm
IDB4ZmZmZjAwMDApICE9IDAKKyAgICAgICRhc20ucHV0cyAibW92dCAje3JlZ2lzdGVyLmFybVY3
T3BlcmFuZH0sIFwjI3t2YWx1ZSA+PiAxNn0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNz
IFJlZ2lzdGVySUQKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4g
InQwIiwgImEwIiwgInIwIgorICAgICAgInIwIgorICAgIHdoZW4gInQxIiwgImExIiwgInIxIgor
ICAgICAgInIxIgorICAgIHdoZW4gInQyIiwgImEyIgorICAgICAgInIyIgorICAgIHdoZW4gImEz
IgorICAgICAgInIzIgorICAgIHdoZW4gInQzIgorICAgICAgInI0IgorICAgIHdoZW4gInQ0Igor
ICAgICAgInI3IgorICAgIHdoZW4gImNmciIKKyAgICAgICJyNSIKKyAgICB3aGVuICJsciIKKyAg
ICAgICJsciIKKyAgICB3aGVuICJzcCIKKyAgICAgICJzcCIKKyAgICBlbHNlCisgICAgICByYWlz
ZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIEFSTXY3IGF0ICN7Y29kZU9yaWdpblN0cmluZ30i
CisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdP
cGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZyIgorICAgICAgImQwIgor
ICAgIHdoZW4gImZ0MSIKKyAgICAgICJkMSIKKyAgICB3aGVuICJmdDIiCisgICAgICAiZDIiCisg
ICAgd2hlbiAiZnQzIgorICAgICAgImQzIgorICAgIHdoZW4gImZ0NCIKKyAgICAgICJkNCIKKyAg
ICB3aGVuICJmdDUiCisgICAgICAiZDUiCisgICAgZWxzZQorICAgICAgcmFpc2UgIkJhZCByZWdp
c3RlciAje25hbWV9IGZvciBBUk12NyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAor
ICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIHJh
aXNlICJJbnZhbGlkIGltbWVkaWF0ZSAje3ZhbHVlfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiBp
ZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAiXCMje3ZhbHVlfSIKKyAgZW5kCitlbmQK
KworY2xhc3MgQWRkcmVzcworICBkZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2UgIkJhZCBvZmZz
ZXQgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgb3Igb2Zm
c2V0LnZhbHVlID4gMHhmZmYKKyAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCBcIyN7b2Zmc2V0
LnZhbHVlfV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJtVjdPcGVy
YW5kCisgICAgcmFpc2UgIkJhZCBvZmZzZXQgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgaWYgb2Zm
c2V0LnZhbHVlICE9IDAKKyAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3
T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGVTaGlmdH1dIgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNv
bHV0ZUFkZHJlc3MKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJVbmNvbnZlcnRlZCBh
YnNvbHV0ZSBhZGRyZXNzIGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgIGVuZAorZW5kCisKKyMK
KyMgTG93ZXJpbmcgb2YgYnJhbmNoIG9wcy4gRm9yIGV4YW1wbGU6CisjCisjIGJhZGRpeiBmb28s
IGJhciwgYmF6CisjCisjIHdpbGwgYmVjb21lOgorIworIyBhZGRpIGZvbywgYmFyCisjIGJ6IGJh
egorIworCitkZWYgYXJtVjdMb3dlckJyYW5jaE9wcyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAg
bGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24K
KyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdoZW4gL15iKGFkZGl8c3ViaXxvcml8YWRk
cCkvCisgICAgICAgIG9wID0gJDEKKyAgICAgICAgYnJhbmNoID0gImIiICsgJH4ucG9zdF9tYXRj
aAorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG9w
LCBub2RlLm9wZXJhbmRzWzAuLi0yXSkKKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcobm9kZS5jb2RlT3JpZ2luLCBicmFuY2gsIFtub2RlLm9wZXJhbmRzWy0xXV0pCisgICAgICB3
aGVuICJibXVsaW8iCisgICAgICAgIHRtcDEgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdw
cikKKyAgICAgICAgdG1wMiA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAg
ICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJzbXVsbGkiLCBb
bm9kZS5vcGVyYW5kc1swXSwgbm9kZS5vcGVyYW5kc1sxXSwgbm9kZS5vcGVyYW5kc1sxXSwgdG1w
MV0pCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwg
InJzaGlmdGkiLCBbbm9kZS5vcGVyYW5kc1stMl0sIEltbWVkaWF0ZS5uZXcobm9kZS5jb2RlT3Jp
Z2luLCAzMSksIHRtcDJdKQorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2Rl
LmNvZGVPcmlnaW4sICJiaW5lcSIsIFt0bXAxLCB0bXAyLCBub2RlLm9wZXJhbmRzWy0xXV0pCisg
ICAgICB3aGVuIC9eYm11bGkvCisgICAgICAgIGNvbmRpdGlvbiA9ICR+LnBvc3RfbWF0Y2gKKyAg
ICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibXVsaSIs
IG5vZGUub3BlcmFuZHNbMC4uLTJdKQorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhub2RlLmNvZGVPcmlnaW4sICJidGkiICsgY29uZGl0aW9uLCBbbm9kZS5vcGVyYW5kc1stMl0s
IG5vZGUub3BlcmFuZHNbLTFdXSkKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBub2Rl
CisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICBlbmQKKyAg
fQorICBuZXdMaXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBzaGlmdCBvcHMuIEZvciBleGFt
cGxlOgorIworIyBsc2hpZnRpIGZvbywgYmFyCisjCisjIHdpbGwgYmVjb21lOgorIworIyBhbmRp
IGZvbywgMzEsIHRtcAorIyBsc2hpZnRpIHRtcCwgYmFyCisjCisKK2RlZiBhcm1WN1Nhbml0aXpl
U2hpZnQob3BlcmFuZCwgbGlzdCkKKyAgcmV0dXJuIG9wZXJhbmQgaWYgb3BlcmFuZC5pbW1lZGlh
dGU/CisgIAorICB0bXAgPSBUbXAubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgOmdwcikKKyAgbGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAiYW5kaSIsIFtvcGVyYW5k
LCBJbW1lZGlhdGUubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgMzEpLCB0bXBdKQorICB0bXAKK2Vu
ZAorCitkZWYgYXJtVjdMb3dlclNoaWZ0T3BzKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0
LmVhY2ggeworICAgIHwgbm9kZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAg
ICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgd2hlbiAibHNoaWZ0aSIsICJyc2hpZnRpIiwgInVy
c2hpZnRpIgorICAgICAgICBpZiBub2RlLm9wZXJhbmRzLnNpemUgPT0gMgorICAgICAgICAgIG5l
d0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFth
cm1WN1Nhbml0aXplU2hpZnQobm9kZS5vcGVyYW5kc1swXSwgbmV3TGlzdCksIG5vZGUub3BlcmFu
ZHNbMV1dKQorICAgICAgICBlbHNlCisgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcobm9kZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgW25vZGUub3BlcmFuZHNbMF0sIGFybVY3
U2FuaXRpemVTaGlmdChub2RlLm9wZXJhbmRzWzFdLCBuZXdMaXN0KSwgbm9kZS5vcGVyYW5kc1sy
XV0pCisgICAgICAgICAgcmFpc2UgIldyb25nIG51bWJlciBvZiBvcGVyYW5kcyBmb3Igc2hpZnQg
YXQgI3tub2RlLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgbm9kZS5vcGVyYW5kcy5zaXplID09
IDMKKyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAg
ICAgZW5kCisgICAgZWxzZQorICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAg
bmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWFsZm9ybWVkIGFkZHJlc3Nlcy4gRm9y
IGV4YW1wbGU6CisjCisjIGxvYWRwIDEwMDAwW2Zvb10sIGJhcgorIworIyB3aWxsIGJlY29tZToK
KyMKKyMgbW92ZSAxMDAwMCwgdG1wCisjIGFkZHAgZm9vLCB0bXAKKyMgbG9hZHAgMFt0bXBdLCBi
YXIKKyMKKworY2xhc3MgTm9kZQorICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1Jl
Y3Vyc2UobGlzdCkKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IG5vZGUgfAorICAgICAgbm9k
ZS5hcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgIH0KKyAgZW5k
CitlbmQKKworY2xhc3MgQWRkcmVzcworICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nl
c1JlY3Vyc2UobGlzdCkKKyAgICBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiBvciBvZmZzZXQudmFs
dWUgPiAweGZmZgorICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAg
bGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbb2Zmc2V0LCB0bXBd
KQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgImFkZHAiLCBbYmFz
ZSwgdG1wXSkKKyAgICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5l
dyhjb2RlT3JpZ2luLCAwKSkKKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAor
ZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nl
c1JlY3Vyc2UobGlzdCkKKyAgICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAgICAgdG1wID0gVG1w
Lm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29k
ZU9yaWdpbiwgIm1vdmUiLCBbb2Zmc2V0LCB0bXBdKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcoY29kZU9yaWdpbiwgImFkZHAiLCBbYmFzZSwgdG1wXSkKKyAgICAgIEJhc2VJbmRleC5u
ZXcoY29kZU9yaWdpbiwgdG1wLCBpbmRleCwgc2NhbGUsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdp
biwgMCkpCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFz
cyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNSZWN1
cnNlKGxpc3QpCisgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgIGxpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW2FkZHJlc3MsIHRtcF0pCisg
ICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgdG1wLCBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4s
IDApKQorICBlbmQKK2VuZAorCitkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3NlcyhsaXN0
KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIG5ld0xp
c3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShuZXdMaXN0KQor
ICB9CisgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1hbGZvcm1lZCBhZGRyZXNz
ZXMgaW4gZG91YmxlIGxvYWRzIGFuZCBzdG9yZXMuIEZvciBleGFtcGxlOgorIworIyBsb2FkZCBb
Zm9vLCBiYXIsIDhdLCBiYXoKKyMKKyMgYmVjb21lczoKKyMKKyMgbGVhcCBbZm9vLCBiYXIsIDhd
LCB0bXAKKyMgbG9hZGQgW3RtcF0sIGJhegorIworCitjbGFzcyBOb2RlCisgIGRlZiBhcm1WN0Rv
dWJsZUFkZHJlc3MobGlzdCkKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRl
eAorICBkZWYgYXJtVjdEb3VibGVBZGRyZXNzKGxpc3QpCisgICAgdG1wID0gVG1wLm5ldyhjb2Rl
T3JpZ2luLCA6Z3ByKQorICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJs
ZWFwIiwgW3NlbGYsIHRtcF0pCisgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgdG1wLCBJbW1l
ZGlhdGUubmV3KGNvZGVPcmlnaW4sIDApKQorICBlbmQKK2VuZAorCitkZWYgYXJtVjdMb3dlck1h
bGZvcm1lZEFkZHJlc3Nlc0RvdWJsZShsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNo
IHsKKyAgICB8IG5vZGUgfAorICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNh
c2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdoZW4gImxvYWRkIgorICAgICAgICBuZXdMaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJsb2FkZCIsIFtub2RlLm9wZXJhbmRzWzBd
LmFybVY3RG91YmxlQWRkcmVzcyhuZXdMaXN0KSwgbm9kZS5vcGVyYW5kc1sxXV0pCisgICAgICB3
aGVuICJzdG9yZWQiCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29k
ZU9yaWdpbiwgInN0b3JlZCIsIFtub2RlLm9wZXJhbmRzWzBdLCBub2RlLm9wZXJhbmRzWzFdLmFy
bVY3RG91YmxlQWRkcmVzcyhuZXdMaXN0KV0pCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3Qg
PDwgbm9kZQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAg
ZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWlzcGxhY2VkIGlt
bWVkaWF0ZXMuIEZvciBleGFtcGxlOgorIworIyBzdG9yZWkgMCwgW2Zvb10KKyMKKyMgd2lsbCBi
ZWNvbWU6CisjCisjIG1vdmUgMCwgdG1wCisjIHN0b3JlaSB0bXAsIFtmb29dCisjCisKK2RlZiBh
cm1WN0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRlcyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlz
dC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAg
ICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdoZW4gInN0b3JlaSIsICJzdG9yZXAiCisgICAg
ICAgIG9wZXJhbmRzID0gbm9kZS5vcGVyYW5kcworICAgICAgICBuZXdPcGVyYW5kcyA9IFtdCisg
ICAgICAgIG9wZXJhbmRzLmVhY2ggeworICAgICAgICAgIHwgb3BlcmFuZCB8CisgICAgICAgICAg
aWYgb3BlcmFuZC5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcob3Bl
cmFuZC5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAibW92ZSIsIFtvcGVyYW5kLCB0bXBdKQorICAgICAg
ICAgICAgbmV3T3BlcmFuZHMgPDwgdG1wCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3
T3BlcmFuZHMgPDwgb3BlcmFuZAorICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIG5l
d0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIG5l
d09wZXJhbmRzKQorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgIGVu
ZAorICAgIGVsc2UKKyAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgIGVuZAorICB9CisgIG5ld0xp
c3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1hbGZvcm1lZCBpbW1lZGlhdGVzIGV4Y2VwdCB3
aGVuIHVzZWQgaW4gYSAibW92ZSIgaW5zdHJ1Y3Rpb24uCisjIEZvciBleGFtcGxlOgorIworIyBh
ZGRwIDY0MjY0MSwgZm9vCisjCisjIHdpbGwgYmVjb21lOgorIworIyBtb3ZlIDY0MjY0MSwgdG1w
CisjIGFkZHAgdG1wLCBmb28KKyMKKworY2xhc3MgTm9kZQorICBkZWYgYXJtVjdMb3dlck1hbGZv
cm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBu
b2RlIHwKKyAgICAgIG5vZGUuYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxp
c3QpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGRlZiBhcm1WN0xvd2Vy
TWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkKKyAgICBzZWxmCisgIGVuZAorZW5kCisK
K2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1
cnNlKGxpc3QpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MK
KyAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgIHNl
bGYKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9y
bWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkKKyAgICBpZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAy
NTUKKyAgICAgIHRtcCA9IFRtcC5uZXcoY29kZU9yaWdpbiwgOmdwcikKKyAgICAgIGxpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW3NlbGYsIHRtcF0pCisgICAgICB0
bXAKKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2RlZiBhcm1W
N0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlcyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5l
YWNoIHsKKyAgICB8IG5vZGUgfAorICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAg
IGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdoZW4gIm1vdmUiCisgICAgICAgIG5ld0xpc3QgPDwg
bm9kZQorICAgICAgd2hlbiAiYWRkaSIsICJhZGRwIiwgInN1YmkiLCAic3VicCIKKyAgICAgICAg
aWYgbm9kZS5vcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgYW5kCisgICAgICAgICAgICBub2Rl
Lm9wZXJhbmRzWzBdLnZhbHVlIDwgMCBhbmQKKyAgICAgICAgICAgIG5vZGUub3BlcmFuZHNbMF0u
dmFsdWUgPj0gMjU1CisgICAgICAgICAgaWYgbm9kZS5vcGNvZGUgPX4gL2FkZC8KKyAgICAgICAg
ICAgIG5ld09wY29kZSA9ICJzdWIiICsgbm9kZS5vcGNvZGVbLTEuLi0xXQorICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG5ld09wY29kZSA9ICJhZGQiICsgbm9kZS5vcGNvZGVbLTEuLi0xXQor
ICAgICAgICAgIGVuZAorICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUu
Y29kZU9yaWdpbiwgbmV3T3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtJbW1lZGlhdGUubmV3KC1ub2RlLm9wZXJhbmRzWzBdLnZhbHVlKV0gKyBub2RlLm9wZXJh
bmRzWzEuLi0xXSkKKyAgICAgICAgZWxzZQorICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZS5hcm1W
N0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobmV3TGlzdCkKKyAgICAgICAgZW5kCisg
ICAgICB3aGVuICJtdWxpIgorICAgICAgICBpZiBub2RlLm9wZXJhbmRzWzBdLmlzX2E/IEltbWVk
aWF0ZQorICAgICAgICAgIHRtcCA9IFRtcC5uZXcoY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAg
ICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW25v
ZGUub3BlcmFuZHNbMF0sIHRtcF0pCisgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcobm9kZS5jb2RlT3JpZ2luLCAibXVsaSIsIFt0bXBdICsgbm9kZS5vcGVyYW5kc1sxLi4tMV0p
CisgICAgICAgIGVsc2UKKyAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUuYXJtVjdMb3dlck1hbGZv
cm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QpCisgICAgICAgIGVuZAorICAgICAgZWxzZQor
ICAgICAgICBuZXdMaXN0IDw8IG5vZGUuYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1
cnNlKG5ld0xpc3QpCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICBuZXdMaXN0IDw8IG5vZGUK
KyAgICBlbmQKKyAgfQorICBuZXdMaXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBtaXNwbGFj
ZWQgYWRkcmVzc2VzLiBGb3IgZXhhbXBsZToKKyMKKyMgYWRkaSBmb28sIFtiYXJdCisjCisjIHdp
bGwgYmVjb21lOgorIworIyBsb2FkaSBbYmFyXSwgdG1wCisjIGFkZGkgZm9vLCB0bXAKKyMgc3Rv
cmVpIHRtcCwgW2Jhcl0KKyMKKyMgQW5vdGhlciBleGFtcGxlOgorIworIyBhZGRpIFtmb29dLCBi
YXIKKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIGxvYWRpIFtmb29dLCB0bXAKKyMgYWRkaSB0bXAs
IGJhcgorIworCitkZWYgYXJtVjdBc1JlZ2lzdGVyKHByZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5k
LCBzdWZmaXgsIG5lZWRTdG9yZSkKKyAgcmV0dXJuIG9wZXJhbmQgdW5sZXNzIG9wZXJhbmQuYWRk
cmVzcz8KKyAgCisgIHRtcCA9IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCBpZiBzdWZmaXgg
PT0gImQiIHRoZW4gOmZwciBlbHNlIDpncHIgZW5kKQorICBwcmVMaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJsb2FkIiArIHN1ZmZpeCwgW29wZXJhbmQsIHRtcF0p
CisgIGlmIG5lZWRTdG9yZQorICAgIHBvc3RMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5k
LmNvZGVPcmlnaW4sICJzdG9yZSIgKyBzdWZmaXgsIFt0bXAsIG9wZXJhbmRdKQorICBlbmQKKyAg
dG1wCitlbmQKKworZGVmIGFybVY3QXNSZWdpc3RlcnMocHJlTGlzdCwgcG9zdExpc3QsIG9wZXJh
bmRzLCBzdWZmaXgpCisgIG5ld09wZXJhbmRzID0gW10KKyAgb3BlcmFuZHMuZWFjaF93aXRoX2lu
ZGV4IHsKKyAgICB8IG9wZXJhbmQsIGluZGV4IHwKKyAgICBuZXdPcGVyYW5kcyA8PCBhcm1WN0Fz
UmVnaXN0ZXIocHJlTGlzdCwgcG9zdExpc3QsIG9wZXJhbmQsIHN1ZmZpeCwgaW5kZXggPT0gb3Bl
cmFuZHMuc2l6ZSAtIDEpCisgIH0KKyAgbmV3T3BlcmFuZHMKK2VuZAorCitkZWYgYXJtVjdMb3dl
ck1pc3BsYWNlZEFkZHJlc3NlcyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsK
KyAgICB8IG5vZGUgfAorICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIHBvc3RJ
bnN0cnVjdGlvbnMgPSBbXQorICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgd2hlbiAiYWRk
aSIsICJhZGRwIiwgImFuZGkiLCAiYW5kcCIsICJsc2hpZnRpIiwgIm11bGkiLCAibmVnaSIsICJu
b3RpIiwgIm9yaSIsICJvcnAiLCAicnNoaWZ0aSIsCisgICAgICAgICJ1cnNoaWZ0aSIsICJzdWJp
IiwgInN1YnAiLCAieG9yaSIsICJ4b3JwIiwgL15iaS8sIC9eYnAvLCAvXmJ0aS8sIC9eYnRwLywg
L15jaS8sIC9eY3AvLAorICAgICAgICAvXnRpLworICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0
aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcm1W
N0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJp
IikpCisgICAgICB3aGVuICJiYmVxIiwgImJibmVxIiwgImJiYSIsICJiYmFlcSIsICJiYmIiLCAi
YmJiZXEiLCAiYnRibyIsICJidGJ6IiwgImJ0Ym56IiwgInRieiIsICJ0Ym56IiwKKyAgICAgICAg
InRibyIKKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2lu
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJtVjdBc1JlZ2lzdGVycyhuZXdMaXN0LCBw
b3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAiYiIpKQorICAgICAgd2hlbiAiYmJndCIs
ICJiYmd0ZXEiLCAiYmJsdCIsICJiYmx0ZXEiLCAiYnRicyIsICJ0YnMiCisgICAgICAgIG5ld0xp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9k
ZS5vcGVyYW5kcywgImJzIikpCisgICAgICB3aGVuICJhZGRkIiwgImRpdmQiLCAic3ViZCIsICJt
dWxkIiwgInNxcnRkIiwgL15iZC8KKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
bm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rl
Lm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJtVjdBc1JlZ2lz
dGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAiZCIpKQorICAg
ICAgd2hlbiAiam1wIiwgImNhbGwiCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS5vcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcm1WN0FzUmVn
aXN0ZXIobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kc1swXSwgInAiLCBm
YWxzZSldKQorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgIGVuZAor
ICAgICAgbmV3TGlzdCArPSBwb3N0SW5zdHJ1Y3Rpb25zCisgICAgZWxzZQorICAgICAgbmV3TGlz
dCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcg
b2YgcmVnaXN0ZXIgcmV1c2UgaW4gY29tcGFyZSBpbnN0cnVjdGlvbnMuIEZvciBleGFtcGxlOgor
IworIyBjaWVxIHQwLCB0MSwgdDAKKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdiB0bXAsIHQw
CisjIGNpZXEgdG1wLCB0MSwgdDAKKyMKKyAKK2RlZiBhcm1WN0xvd2VyUmVnaXN0ZXJSZXVzZShs
aXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIGlm
IG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdo
ZW4gImNpZXEiLCAiY2luZXEiLCAiY2lhIiwgImNpYWVxIiwgImNpYiIsICJjaWJlcSIsICJjaWd0
IiwgImNpZ3RlcSIsICJjaWx0IiwgImNpbHRlcSIsCisgICAgICAgICJjcGVxIiwgImNwbmVxIiwg
ImNwYSIsICJjcGFlcSIsICJjcGIiLCAiY3BiZXEiLCAiY3BndCIsICJjcGd0ZXEiLCAiY3BsdCIs
ICJjcGx0ZXEiLAorICAgICAgICAidGlvIiwgInRpcyIsICJ0aXoiLCAidGlueiIsICJ0Ym8iLCAi
dGJzIiwgInRieiIsICJ0Ym56IgorICAgICAgICBpZiBub2RlLm9wZXJhbmRzLnNpemUgPT0gMgor
ICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0gPT0gbm9kZS5vcGVyYW5kc1sxXQorICAgICAg
ICAgICAgdG1wID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICBu
ZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUu
b3BlcmFuZHNbMF0sIHRtcF0pCisgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbdG1wLCBub2RlLm9wZXJhbmRzWzFdXSkK
KyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICBl
bmQKKyAgICAgICAgZWxzZQorICAgICAgICAgIHJhaXNlICJXcm9uZyBudW1iZXIgb2YgYXJndW1l
bnRzIGF0ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG5vZGUub3BlcmFuZHMuc2l6
ZSA9PSAzCisgICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1swXSA9PSBub2RlLm9wZXJhbmRzWzJd
CisgICAgICAgICAgICB0bXAgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUi
LCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSkKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFt0bXAsIG5vZGUub3BlcmFu
ZHNbMV0sIG5vZGUub3BlcmFuZHNbMl1dKQorICAgICAgICAgIGVsc2lmIG5vZGUub3BlcmFuZHNb
MV0gPT0gbm9kZS5vcGVyYW5kc1syXQorICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhub2RlLmNv
ZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhu
b2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMV0sIHRtcF0pCisgICAgICAg
ICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bj
b2RlLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wLCBub2RlLm9wZXJhbmRzWzJdXSkKKyAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICBlbmQKKyAgICAg
ICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgZW5kCisg
ICAgZWxzZQorICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAor
ZW5kCisKKyMKKyMgTGVhIHN1cHBvcnQuCisjCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIGFybVY3
RW1pdExlYShkZXN0aW5hdGlvbikKKyAgICBpZiBkZXN0aW5hdGlvbiA9PSBiYXNlCisgICAgICAk
YXNtLnB1dHMgImFkZHMgI3tkZXN0aW5hdGlvbi5hcm1WN09wZXJhbmR9LCBcIyN7b2Zmc2V0LnZh
bHVlfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgImFkZHMgI3tkZXN0aW5hdGlvbi5hcm1W
N09wZXJhbmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSwgXCMje29mZnNldC52YWx1ZX0iCisgICAg
ZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJtVjdFbWl0TGVhKGRl
c3RpbmF0aW9uKQorICAgIHJhaXNlICJNYWxmb3JtZWQgQmFzZUluZGV4LCBvZmZzZXQgc2hvdWxk
IGJlIHplcm8gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG9mZnNldC52YWx1ZSA9PSAw
CisgICAgJGFzbS5wdXRzICJhZGQudyAje2Rlc3RpbmF0aW9uLmFybVY3T3BlcmFuZH0sICN7YmFz
ZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGVTaGlm
dH0iCisgIGVuZAorZW5kCisKKyMgRklYTUU6IHdlIGNvdWxkIHN1cHBvcnQgQWJzb2x1dGVBZGRy
ZXNzIGZvciBsZWEsIGJ1dCB3ZSBkb24ndC4KKworIworIyBBY3R1YWwgbG93ZXJpbmcgY29kZSBm
b2xsb3dzLgorIworCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXJBUk12NworICAgIG15TGlz
dCA9IEBsaXN0CisgICAgCisgICAgIyBWZXJpZnkgdGhhdCB3ZSB3aWxsIG9ubHkgc2VlIGluc3Ry
dWN0aW9ucyBhbmQgbGFiZWxzLgorICAgIG15TGlzdC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8Cisg
ICAgICB1bmxlc3Mgbm9kZS5pc19hPyBJbnN0cnVjdGlvbiBvcgorICAgICAgICAgIG5vZGUuaXNf
YT8gTGFiZWwgb3IKKyAgICAgICAgICBub2RlLmlzX2E/IExvY2FsTGFiZWwgb3IKKyAgICAgICAg
ICBub2RlLmlzX2E/IFNraXAKKyAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQgI3tub2RlLmluc3Bl
Y3R9IGF0ICN7bm9kZS5jb2RlT3JpZ2lufSIgCisgICAgICBlbmQKKyAgICB9CisgICAgCisgICAg
bXlMaXN0ID0gYXJtVjdMb3dlckJyYW5jaE9wcyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdM
b3dlclNoaWZ0T3BzKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWFsZm9ybWVkQWRk
cmVzc2VzKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2Vz
RG91YmxlKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRl
cyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXMobXlM
aXN0KQorICAgIG15TGlzdCA9IGFybVY3TG93ZXJNaXNwbGFjZWRBZGRyZXNzZXMobXlMaXN0KQor
ICAgIG15TGlzdCA9IGFybVY3TG93ZXJSZWdpc3RlclJldXNlKG15TGlzdCkKKyAgICBteUxpc3Qg
PSBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFyaWVzKG15TGlzdCwgOmdwciwgQVJNdjdfRVhUUkFf
R1BSUykKKyAgICBteUxpc3QgPSBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFyaWVzKG15TGlzdCwg
OmZwciwgQVJNdjdfRVhUUkFfRlBSUykKKyAgICBteUxpc3QuZWFjaCB7CisgICAgICB8IG5vZGUg
fAorICAgICAgbm9kZS5sb3dlcigiQVJNdjciKQorICAgIH0KKyAgZW5kCitlbmQKKworZGVmIGFy
bVY3T3BlcmFuZHMob3BlcmFuZHMpCisgIG9wZXJhbmRzLm1hcHt8dnwgdi5hcm1WN09wZXJhbmR9
LmpvaW4oIiwgIikKK2VuZAorCitkZWYgYXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpCisg
IGFybVY3T3BlcmFuZHMoW29wZXJhbmRzWy0xXV0gKyBvcGVyYW5kc1swLi4tMl0pCitlbmQKKwor
ZGVmIGVtaXRBcm1WN0NvbXBhY3Qob3Bjb2RlMiwgb3Bjb2RlMywgb3BlcmFuZHMpCisgIGlmIG9w
ZXJhbmRzLnNpemUgPT0gMworICAgICRhc20ucHV0cyAiI3tvcGNvZGUzfSAje2FybVY3RmxpcHBl
ZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgIGVsc2UKKyAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHMu
c2l6ZSA9PSAyCisgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQK
KyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICRhc20ucHV0cyAiI3tv
cGNvZGUzfSAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdP
cGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgIGVsc2UKKyAgICAgICRh
c20ucHV0cyAiI3tvcGNvZGUyfSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisg
ICAgZW5kCisgIGVuZAorZW5kCisKK2RlZiBlbWl0QXJtVjcob3Bjb2RlLCBvcGVyYW5kcykKKyAg
aWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3thcm1WN0Zs
aXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICBlbHNlCisgICAgcmFpc2UgdW5sZXNzIG9wZXJh
bmRzLnNpemUgPT0gMgorICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0uYXJt
VjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFy
bVY3T3BlcmFuZH0iCisgIGVuZAorZW5kCisKK2RlZiBlbWl0QXJtVjdEb3VibGVCcmFuY2goYnJh
bmNoT3Bjb2RlLCBvcGVyYW5kcykKKyAgJGFzbS5wdXRzICJ2Y21wZS5mNjQgI3thcm1WN09wZXJh
bmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICRhc20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2Ny
IgorICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIK
K2VuZAorCitkZWYgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgdmFsdWUgPSBvcGVyYW5kc1sw
XQorICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgd2hlbiAyCisgICAgbWFzayA9IEltbWVkaWF0ZS5u
ZXcoY29kZU9yaWdpbiwgLTEpCisgIHdoZW4gMworICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICBl
bHNlCisgICAgcmFpc2UgIkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5kcyBidXQgZ290ICN7b3BlcmFu
ZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgZW5kCisgIAorICBpZiBtYXNrLmlz
X2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQorICAgICRhc20ucHV0cyAidHN0ICN7
dmFsdWUuYXJtVjdPcGVyYW5kfSwgI3t2YWx1ZS5hcm1WN09wZXJhbmR9IgorICBlbHNpZiBtYXNr
LmlzX2E/IEltbWVkaWF0ZQorICAgICRhc20ucHV0cyAidHN0LncgI3t2YWx1ZS5hcm1WN09wZXJh
bmR9LCAje21hc2suYXJtVjdPcGVyYW5kfSIKKyAgZWxzZQorICAgICRhc20ucHV0cyAidHN0ICN7
dmFsdWUuYXJtVjdPcGVyYW5kfSwgI3ttYXNrLmFybVY3T3BlcmFuZH0iCisgIGVuZAorZW5kCisK
K2RlZiBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCBjb2RlKQorICAkYXNtLnB1dHMgIm1vdnMg
I3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCBcIzAiCisgICRhc20ucHV0cyAiY21wICN7b3Bl
cmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAk
YXNtLnB1dHMgIml0ICN7Y29kZX0iCisgICRhc20ucHV0cyAibW92I3tjb2RlfSAje29wZXJhbmRz
WzJdLmFybVY3T3BlcmFuZH0sIFwjMSIKK2VuZAorCitkZWYgZW1pdEFybVY3VGVzdFNldChvcGVy
YW5kcywgY29kZSkKKyAgJGFzbS5wdXRzICJtb3ZzICN7b3BlcmFuZHNbLTFdLmFybVY3T3BlcmFu
ZH0sIFwjMCIKKyAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgJGFzbS5wdXRzICJpdCAje2Nv
ZGV9IgorICAkYXNtLnB1dHMgIm1vdiN7Y29kZX0gI3tvcGVyYW5kc1stMV0uYXJtVjdPcGVyYW5k
fSwgXCMxIgorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgIGRlZiBsb3dlckFSTXY3CisgICAg
JGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICBjYXNlIG9wY29kZQorICAgIHdoZW4g
ImFkZGkiLCAiYWRkcCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNb
MF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19h
PyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdp
c3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAgICAgICB1bmxl
c3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICRhc20ucHV0cyAibW92
ICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9
IgorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRzICJhZGRz
ICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9
LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYg
b3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisgICAg
ICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJh
aXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0
cyAiYWRkcyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICBlbHNlCisg
ICAgICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgIHVubGVzcyBJ
bW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAgICRhc20ucHV0
cyAiYWRkcyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgICAgZW5k
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAkYXNtLnB1dHMgImFkZCAje2FybVY3RmxpcHBlZE9w
ZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAgd2hlbiAiYW5k
aSIsICJhbmRwIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgiYW5kcyIsICJhbmQiLCBvcGVyYW5k
cykKKyAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgib3JycyIs
ICJvcnIiLCBvcGVyYW5kcykKKyAgICB3aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICBlbWl0QXJt
VjdDb21wYWN0KCJlb3JzIiwgImVvciIsIG9wZXJhbmRzKQorICAgIHdoZW4gImxzaGlmdGkiCisg
ICAgICBlbWl0QXJtVjdDb21wYWN0KCJsc2xzIiwgImxzbHMiLCBvcGVyYW5kcykKKyAgICB3aGVu
ICJyc2hpZnRpIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgiYXNycyIsICJhc3JzIiwgb3BlcmFu
ZHMpCisgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICBlbWl0QXJtVjdDb21wYWN0KCJsc3JzIiwg
ImxzcnMiLCBvcGVyYW5kcykKKyAgICB3aGVuICJtdWxpIgorICAgICAgaWYgb3BlcmFuZHMuc2l6
ZSA9PSAyIG9yIG9wZXJhbmRzWzBdID09IG9wZXJhbmRzWzJdIG9yIG9wZXJhbmRzWzFdID09IG9w
ZXJhbmRzWzJdCisgICAgICAgIGVtaXRBcm1WNygibXVscyIsIG9wZXJhbmRzKQorICAgICAgZWxz
ZQorICAgICAgICAkYXNtLnB1dHMgIm1vdiAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7
b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgJGFzbS5wdXRzICJtdWxzICN7b3Bl
cmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCAje29w
ZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgICBlbmQKKyAgICB3aGVuICJzdWJpIiwgInN1
YnAiCisgICAgICBlbWl0QXJtVjdDb21wYWN0KCJzdWJzIiwgInN1YnMiLCBvcGVyYW5kcykKKyAg
ICB3aGVuICJuZWdpIgorICAgICAgJGFzbS5wdXRzICJyc2JzICN7b3BlcmFuZHNbMF0uYXJtVjdP
cGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCBcIzAiCisgICAgd2hlbiAibm90
aSIKKyAgICAgICRhc20ucHV0cyAibXZucyAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7
b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICB3aGVuICJsb2FkaSIsICJsb2FkcCIKKyAg
ICAgICRhc20ucHV0cyAibGRyICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAg
ICB3aGVuICJzdG9yZWkiLCAic3RvcmVwIgorICAgICAgJGFzbS5wdXRzICJzdHIgI3thcm1WN09w
ZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNtLnB1dHMgImxk
cmIgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gImxvYWRicyIK
KyAgICAgICRhc20ucHV0cyAibGRyc2IudyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRz
KX0iCisgICAgd2hlbiAic3RvcmViIgorICAgICAgJGFzbS5wdXRzICJzdHJiICN7YXJtVjdPcGVy
YW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gImxvYWRoIgorICAgICAgJGFzbS5wdXRzICJsZHJo
ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJsb2FkaHMiCisg
ICAgICAkYXNtLnB1dHMgImxkcnNoLncgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9
IgorICAgIHdoZW4gInN0b3JlaCIKKyAgICAgICRhc20ucHV0cyAic3RyaCAje2FybVY3T3BlcmFu
ZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJsb2FkZCIKKyAgICAgICRhc20ucHV0cyAidmxkci42
NCAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAic3RvcmVkIgor
ICAgICAgJGFzbS5wdXRzICJ2c3RyLjY0ICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAg
IHdoZW4gImFkZGQiCisgICAgICBlbWl0QXJtVjcoInZhZGQuZjY0Iiwgb3BlcmFuZHMpCisgICAg
d2hlbiAiZGl2ZCIKKyAgICAgIGVtaXRBcm1WNygidmRpdi5mNjQiLCBvcGVyYW5kcykKKyAgICB3
aGVuICJzdWJkIgorICAgICAgZW1pdEFybVY3KCJ2c3ViLmY2NCIsIG9wZXJhbmRzKQorICAgIHdo
ZW4gIm11bGQiCisgICAgICBlbWl0QXJtVjcoInZtdWwuZjY0Iiwgb3BlcmFuZHMpCisgICAgd2hl
biAic3FydGQiCisgICAgICAkYXNtLnB1dHMgInZzcXJ0LmY2NCAje2FybVY3RmxpcHBlZE9wZXJh
bmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAiY2kyZCIKKyAgICAgICRhc20ucHV0cyAidm1vdiAj
e29wZXJhbmRzWzFdLmFybVY3U2luZ2xlfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9Igor
ICAgICAgJGFzbS5wdXRzICJ2Y3Z0LmY2NC5zMzIgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9
LCAje29wZXJhbmRzWzFdLmFybVY3U2luZ2xlfSIKKyAgICB3aGVuICJiZGVxIgorICAgICAgZW1p
dEFybVY3RG91YmxlQnJhbmNoKCJiZXEiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZG5lcSIKKyAg
ICAgICRhc20ucHV0cyAidmNtcGUuZjY0ICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9
IgorICAgICAgJGFzbS5wdXRzICJ2bXJzIGFwc3JfbnpjdiwgZnBzY3IiCisgICAgICBpc1Vub3Jk
ZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcSIpCisgICAgICAkYXNtLnB1dHMgImJ2cyAj
e0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkuYXNtTGFiZWx9Igor
ICAgICAgJGFzbS5wdXRzICJibmUgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICBpc1Vu
b3JkZXJlZC5sb3dlcigiQVJNdjciKQorICAgIHdoZW4gImJkZ3QiCisgICAgICBlbWl0QXJtVjdE
b3VibGVCcmFuY2goImJndCIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgIGVt
aXRBcm1WN0RvdWJsZUJyYW5jaCgiYmdlIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRsdCIKKyAg
ICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYm1pIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRs
dGVxIgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJibHMiLCBvcGVyYW5kcykKKyAgICB3
aGVuICJiZGVxdW4iCisgICAgICAkYXNtLnB1dHMgInZjbXBlLmY2NCAje2FybVY3T3BlcmFuZHMo
b3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2Ny
IgorICAgICAgJGFzbS5wdXRzICJidnMgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAk
YXNtLnB1dHMgImJlcSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiZG5lcXVu
IgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJibmUiLCBvcGVyYW5kcykKKyAgICB3aGVu
ICJiZGd0dW4iCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJoaSIsIG9wZXJhbmRzKQor
ICAgIHdoZW4gImJkZ3RlcXVuIgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJicGwiLCBv
cGVyYW5kcykKKyAgICB3aGVuICJiZGx0dW4iCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2go
ImJsdCIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgZW1pdEFybVY3RG91
YmxlQnJhbmNoKCJibGUiLCBvcGVyYW5kcykKKyAgICB3aGVuICJidGQyaSIKKyAgICAgICMgRklY
TUU6IG1heSBiZSBhIGdvb2QgaWRlYSB0byBqdXN0IGdldCByaWQgb2YgdGhpcyBpbnN0cnVjdGlv
biwgc2luY2UgdGhlIGludGVycHJldGVyCisgICAgICAjIGN1cnJlbnRseSBkb2VzIG5vdCB1c2Ug
aXQuCisgICAgICByYWlzZSAiQVJNdjcgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wY29kZSB5ZXQs
ICN7Y29kZU9yaWdpbn0iCisgICAgd2hlbiAidGQyaSIKKyAgICAgICRhc20ucHV0cyAidmN2dC5z
MzIuZjY0ICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJtVjdTaW5nbGV9LCAje29wZXJhbmRzWzBdLmFy
bVY3T3BlcmFuZH0iCisgICAgICAkYXNtLnB1dHMgInZtb3YgI3tvcGVyYW5kc1sxXS5hcm1WN09w
ZXJhbmR9LCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSIKKyAgICB3aGVuICJiY2Qy
aSIKKyAgICAgICRhc20ucHV0cyAidmN2dC5zMzIuZjY0ICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJt
VjdTaW5nbGV9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAkYXNtLnB1dHMg
InZtb3YgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFy
bVY3U2luZ2xlfSIKKyAgICAgICRhc20ucHV0cyAidmN2dC5mNjQuczMyICN7QVJNdjdfU0NSQVRD
SF9GUFIuYXJtVjdPcGVyYW5kfSwgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0iCisg
ICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJuZSIsIFtBUk12N19TQ1JBVENIX0ZQUiwgb3Bl
cmFuZHNbMF0sIG9wZXJhbmRzWzJdXSkKKyAgICAgICRhc20ucHV0cyAidHN0ICN7b3BlcmFuZHNb
MV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgJGFz
bS5wdXRzICJiZXEgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAibW92ZHoiCisg
ICAgICAjIEZJWE1FOiBlaXRoZXIgc3VwcG9ydCB0aGlzIG9yIHJlbW92ZSBpdC4KKyAgICAgIHJh
aXNlICJBUk12NyBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3Bjb2RlIHlldCwgI3tjb2RlT3JpZ2lu
fSIKKyAgICB3aGVuICJwb3AiCisgICAgICAkYXNtLnB1dHMgInBvcCAje29wZXJhbmRzWzBdLmFy
bVY3T3BlcmFuZH0iCisgICAgd2hlbiAicHVzaCIKKyAgICAgICRhc20ucHV0cyAicHVzaCAje29w
ZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6eGky
cCIKKyAgICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICBhcm1WN01v
dmVJbW1lZGlhdGUob3BlcmFuZHNbMF0udmFsdWUsIG9wZXJhbmRzWzFdKQorICAgICAgZWxzZQor
ICAgICAgICAkYXNtLnB1dHMgIm1vdiAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0i
CisgICAgICBlbmQKKyAgICB3aGVuICJub3AiCisgICAgICAkYXNtLnB1dHMgIm5vcCIKKyAgICB3
aGVuICJiaWVxIiwgImJwZXEiLCAiYmJlcSIKKyAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAw
KSA9PSBvcGVyYW5kc1swXQorICAgICAgICAkYXNtLnB1dHMgInRzdCAje29wZXJhbmRzWzFdLmFy
bVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICAgIGVsc2lmIElt
bWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1sxXQorICAgICAgICAkYXNtLnB1dHMgInRz
dCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5k
fSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9w
ZXJhbmRzWzAuLjFdKX0iCisgICAgICBlbmQKKyAgICAgICRhc20ucHV0cyAiYmVxICN7b3BlcmFu
ZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJpbmVxIiwgImJwbmVxIiwgImJibmVxIgorICAg
ICAgaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICRhc20u
cHV0cyAidHN0ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1W
N09wZXJhbmR9IgorICAgICAgZWxzaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRz
WzFdCisgICAgICAgICRhc20ucHV0cyAidHN0ICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwg
I3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1
dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgIGVuZAorICAg
ICAgJGFzbS5wdXRzICJibmUgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmlh
IiwgImJwYSIsICJiYmEiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3Bl
cmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmhpICN7b3BlcmFuZHNbMl0uYXNtTGFi
ZWx9IgorICAgIHdoZW4gImJpYWVxIiwgImJwYWVxIiwgImJiYWVxIgorICAgICAgJGFzbS5wdXRz
ICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMg
ImJocyAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWIiLCAiYnBiIiwgImJi
YiIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9
IgorICAgICAgJGFzbS5wdXRzICJibG8gI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hl
biAiYmliZXEiLCAiYnBiZXEiLCAiYmJiZXEiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3
T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmxzICN7b3BlcmFu
ZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJpZ3QiLCAiYnBndCIsICJiYmd0IgorICAgICAg
JGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAk
YXNtLnB1dHMgImJndCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWd0ZXEi
LCAiYnBndGVxIiwgImJiZ3RlcSIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5k
cyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5wdXRzICJiZ2UgI3tvcGVyYW5kc1syXS5h
c21MYWJlbH0iCisgICAgd2hlbiAiYmlsdCIsICJicGx0IiwgImJibHQiCisgICAgICAkYXNtLnB1
dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0
cyAiYmx0ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJpbHRlcSIsICJicGx0
ZXEiLCAiYmJsdGVxIgorICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJh
bmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgImJsZSAje29wZXJhbmRzWzJdLmFzbUxhYmVs
fSIKKyAgICB3aGVuICJidGl6IiwgImJ0cHoiLCAiYnRieiIKKyAgICAgIGVtaXRBcm1WN1Rlc3Qo
b3BlcmFuZHMpCisgICAgICAkYXNtLnB1dHMgImJlcSAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0i
CisgICAgd2hlbiAiYnRpbnoiLCAiYnRwbnoiLCAiYnRibnoiCisgICAgICBlbWl0QXJtVjdUZXN0
KG9wZXJhbmRzKQorICAgICAgJGFzbS5wdXRzICJibmUgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9
IgorICAgIHdoZW4gImJ0aW8iLCAiYnRwbyIsICJidGJvIgorICAgICAgZW1pdEFybVY3VGVzdChv
cGVyYW5kcykKKyAgICAgICRhc20ucHV0cyAiYnZzICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIK
KyAgICB3aGVuICJidGlzIiwgImJ0cHMiLCAiYnRicyIKKyAgICAgIGVtaXRBcm1WN1Rlc3Qob3Bl
cmFuZHMpCisgICAgICAkYXNtLnB1dHMgImJtaSAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCisg
ICAgd2hlbiAiam1wIgorICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAgICRhc20u
cHV0cyAiYiAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFz
bS5wdXRzICJtb3YgcGMsICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgIGVuZAor
ICAgIHdoZW4gImNhbGwiCisgICAgICBpZiBvcGVyYW5kc1swXS5sYWJlbD8KKyAgICAgICAgJGFz
bS5wdXRzICJibHggI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgICBlbHNlCisgICAgICAg
ICRhc20ucHV0cyAiYmx4ICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgIGVuZAor
ICAgIHdoZW4gImJyZWFrIgorICAgICAgJGFzbS5wdXRzICJia3B0IgorICAgIHdoZW4gInJldCIK
KyAgICAgICRhc20ucHV0cyAiYnggbHIiCisgICAgd2hlbiAiY2llcSIsICJjcGVxIgorICAgICAg
ZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImVxIikKKyAgICB3aGVuICJjaW5lcSIsICJjcG5l
cSIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJuZSIpCisgICAgd2hlbiAiY2lh
IiwgImNwYSIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJoaSIpCisgICAgd2hl
biAiY2lhZXEiLCAiY3BhZXEiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiaHMi
KQorICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRz
LCAibG8iKQorICAgIHdoZW4gImNpYmVxIiwgImNwYmVxIgorICAgICAgZW1pdEFybVY3Q29tcGFy
ZShvcGVyYW5kcywgImxzIikKKyAgICB3aGVuICJjaWd0IiwgImNwZ3QiCisgICAgICBlbWl0QXJt
VjdDb21wYXJlKG9wZXJhbmRzLCAiZ3QiKQorICAgIHdoZW4gImNpZ3RlcSIsICJjcGd0ZXEiCisg
ICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiZ2UiKQorICAgIHdoZW4gImNpbHQiLCAi
Y3BsdCIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJsdCIpCisgICAgd2hlbiAi
Y2lsdGVxIiwgImNwbHRlcSIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJsZSIp
CisgICAgd2hlbiAidGlvIiwgInRibyIKKyAgICAgIGVtaXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMs
ICJ2cyIpCisgICAgd2hlbiAidGlzIiwgInRicyIKKyAgICAgIGVtaXRBcm1WN1Rlc3RTZXQob3Bl
cmFuZHMsICJtaSIpCisgICAgd2hlbiAidGl6IiwgInRieiIKKyAgICAgIGVtaXRBcm1WN1Rlc3RT
ZXQob3BlcmFuZHMsICJlcSIpCisgICAgd2hlbiAidGlueiIsICJ0Ym56IgorICAgICAgZW1pdEFy
bVY3VGVzdFNldChvcGVyYW5kcywgIm5lIikKKyAgICB3aGVuICJwZWVrIgorICAgICAgJGFzbS5w
dXRzICJsZHIgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCBbc3AsIFwjI3tvcGVyYW5kc1sw
XS52YWx1ZSAqIDR9XSIKKyAgICB3aGVuICJwb2tlIgorICAgICAgJGFzbS5wdXRzICJzdHIgI3tv
cGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCBbc3AsIFwjI3tvcGVyYW5kc1swXS52YWx1ZSAqIDR9
XSIKKyAgICB3aGVuICJmaWkyZCIKKyAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzJd
LmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sx
XS5hcm1WN09wZXJhbmR9IgorICAgIHdoZW4gImZkMmlpIgorICAgICAgJGFzbS5wdXRzICJ2bW92
ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9
LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgd2hlbiAiYm8iCisgICAgICAkYXNt
LnB1dHMgImJ2cyAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJicyIKKyAgICAg
ICRhc20ucHV0cyAiYm1pICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJ6Igor
ICAgICAgJGFzbS5wdXRzICJiZXEgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAi
Ym56IgorICAgICAgJGFzbS5wdXRzICJibmUgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAg
d2hlbiAibGVhaSIsICJsZWFwIgorICAgICAgb3BlcmFuZHNbMF0uYXJtVjdFbWl0TGVhKG9wZXJh
bmRzWzFdKQorICAgIHdoZW4gInNtdWxsaSIKKyAgICAgIHJhaXNlICJXcm9uZyBudW1iZXIgb2Yg
YXJndW1lbnRzIHRvIHNtdWxsIGluICN7c2VsZi5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJp
bmd9IiB1bmxlc3Mgb3BlcmFuZHMubGVuZ3RoID09IDQKKyAgICAgICRhc20ucHV0cyAic211bGwg
I3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzNdLmFybVY3T3BlcmFuZH0s
ICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9
IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJVbmhhbmRsZWQgb3Bjb2RlICN7b3Bjb2RlfSBhdCAj
e2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3
MiBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tl
bmRzIgorcmVxdWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAi
cGFyc2VyIgorcmVxdWlyZSAic2VsZl9oYXNoIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJl
ICJ0cmFuc2Zvcm0iCisKK2NsYXNzIEFzc2VtYmxlcgorICBkZWYgaW5pdGlhbGl6ZShvdXRwKQor
ICAgIEBvdXRwID0gb3V0cAorICAgIEBzdGF0ZSA9IDpjcHAKKyAgICBAY29tbWVudFN0YXRlID0g
Om5vbmUKKyAgICBAY29tbWVudCA9IG5pbAorICBlbmQKKyAgCisgIGRlZiBlbnRlckFzbQorICAg
IEBvdXRwLnB1dHMgImFzbSAoIgorICAgIEBzdGF0ZSA9IDphc20KKyAgZW5kCisgIAorICBkZWYg
bGVhdmVBc20KKyAgICBwdXRzTGFzdENvbW1lbnQKKyAgICBAb3V0cC5wdXRzICIpOyIKKyAgICBA
c3RhdGUgPSA6Y3BwCisgIGVuZAorICAKKyAgZGVmIGluQXNtCisgICAgZW50ZXJBc20KKyAgICB5
aWVsZAorICAgIGxlYXZlQXNtCisgIGVuZAorICAKKyAgZGVmIGxhc3RDb21tZW50CisgICAgaWYg
QGNvbW1lbnQKKyAgICAgIHJlc3VsdCA9ICIvLyAje0Bjb21tZW50fSIKKyAgICBlbHNlCisgICAg
ICByZXN1bHQgPSAiIgorICAgIGVuZAorICAgIEBjb21tZW50U3RhdGUgPSA6bm9uZQorICAgIEBj
b21tZW50ID0gbmlsCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHB1dHNMYXN0Q29tbWVu
dAorICAgIGNvbW1lbnQgPSBsYXN0Q29tbWVudAorICAgIHVubGVzcyBjb21tZW50LmVtcHR5Pwor
ICAgICAgQG91dHAucHV0cyBjb21tZW50CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHB1dHMo
KmxpbmUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAgQG91dHAucHV0cygi
XCJcXHQiICsgbGluZS5qb2luKCcnKSArICJcXG5cIiAje2xhc3RDb21tZW50fSIpCisgIGVuZAor
ICAKKyAgZGVmIHByaW50KGxpbmUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisg
ICAgQG91dHAucHJpbnQoIlwiIiArIGxpbmUgKyAiXCIiKQorICBlbmQKKyAgCisgIGRlZiBwdXRz
TGFiZWwobGFiZWxOYW1lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBv
dXRwLnB1dHMoIk9GRkxJTkVfQVNNX0dMT0JBTF9MQUJFTCgje2xhYmVsTmFtZX0pICN7bGFzdENv
bW1lbnR9IikKKyAgZW5kCisgIAorICBkZWYgcHV0c0xvY2FsTGFiZWwobGFiZWxOYW1lKQorICAg
IHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnB1dHMoIkxPQ0FMX0xBQkVM
X1NUUklORygje2xhYmVsTmFtZX0pIFwiOlxcblwiICN7bGFzdENvbW1lbnR9IikKKyAgZW5kCisg
IAorICBkZWYgc2VsZi5sYWJlbFJlZmVyZW5jZShsYWJlbE5hbWUpCisgICAgIlwiIFNZTUJPTF9T
VFJJTkcoI3tsYWJlbE5hbWV9KSBcIiIKKyAgZW5kCisgIAorICBkZWYgc2VsZi5sb2NhbExhYmVs
UmVmZXJlbmNlKGxhYmVsTmFtZSkKKyAgICAiXCIgTE9DQUxfTEFCRUxfU1RSSU5HKCN7bGFiZWxO
YW1lfSkgXCIiCisgIGVuZAorICAKKyAgZGVmIGNvbW1lbnQodGV4dCkKKyAgICBjYXNlIEBjb21t
ZW50U3RhdGUKKyAgICB3aGVuIDpub25lCisgICAgICBAY29tbWVudCA9IHRleHQKKyAgICAgIEBj
b21tZW50U3RhdGUgPSA6b25lCisgICAgd2hlbiA6b25lCisgICAgICBAb3V0cC5wdXRzICIvLyAj
e0Bjb21tZW50fSIKKyAgICAgIEBvdXRwLnB1dHMgIi8vICN7dGV4dH0iCisgICAgICBAY29tbWVu
dCA9IG5pbAorICAgICAgQGNvbW1lbnRTdGF0ZSA9IDptYW55CisgICAgd2hlbiA6bWFueQorICAg
ICAgQG91dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVu
ZAorICBlbmQKK2VuZAorCithc21GaWxlID0gQVJHVi5zaGlmdAorb2Zmc2V0c0ZpbGUgPSBBUkdW
LnNoaWZ0CitvdXRwdXRGbG5tID0gQVJHVi5zaGlmdAorCiskc3RkZXJyLnB1dHMgIm9mZmxpbmVh
c206IFBhcnNpbmcgI3thc21GaWxlfSBhbmQgI3tvZmZzZXRzRmlsZX0gYW5kIGNyZWF0aW5nIGFz
c2VtYmx5IGZpbGUgI3tvdXRwdXRGbG5tfS4iCisKK29mZnNldHNMaXN0LCBjb25maWdJbmRleCA9
IG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgob2Zmc2V0c0ZpbGUpCitpbnB1dERhdGEgPSBJ
Tzo6cmVhZChhc21GaWxlKQorCitpbnB1dEhhc2ggPQorICAiLy8gb2ZmbGluZWFzbSBpbnB1dCBo
YXNoOiAiICsgRGlnZXN0OjpTSEExLmhleGRpZ2VzdChpbnB1dERhdGEpICsKKyAgIiAiICsgRGln
ZXN0OjpTSEExLmhleGRpZ2VzdCgob2Zmc2V0c0xpc3QgKyBbY29uZmlnSW5kZXhdKS5qb2luKCcg
JykpICsKKyAgIiAiICsgc2VsZkhhc2gKKworaWYgRmlsZVRlc3QuZXhpc3Q/IG91dHB1dEZsbm0K
KyAgRmlsZS5vcGVuKG91dHB1dEZsbm0sICJyIikgeworICAgIHwgaW5wIHwKKyAgICBmaXJzdExp
bmUgPSBpbnAuZ2V0cworICAgIGlmIGZpcnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09IGlu
cHV0SGFzaAorICAgICAgJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBOb3RoaW5nIGNoYW5nZWQu
IgorICAgICAgZXhpdCAwCisgICAgZW5kCisgIH0KK2VuZAorCitGaWxlLm9wZW4ob3V0cHV0Rmxu
bSwgInciKSB7CisgIHwgb3V0cCB8CisgICRvdXRwdXQgPSBvdXRwCisgICRvdXRwdXQucHV0cyBp
bnB1dEhhc2gKKyAgCisgICRhc20gPSBBc3NlbWJsZXIubmV3KCRvdXRwdXQpCisgIAorICBhc3Qg
PSBwYXJzZShsZXgoaW5wdXREYXRhKSkKKyAgCisgIGZvclNldHRpbmdzKGNvbXB1dGVTZXR0aW5n
c0NvbWJpbmF0aW9ucyhhc3QpW2NvbmZpZ0luZGV4XSwgYXN0KSB7CisgICAgfCBjb25jcmV0ZVNl
dHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgYXNzZXJ0Q29uZmlndXJhdGlvbihj
b25jcmV0ZVNldHRpbmdzKQorICAgIGxvd0xldmVsQVNUID0gbG93TGV2ZWxBU1QucmVzb2x2ZSgq
YnVpbGRPZmZzZXRzTWFwKGxvd0xldmVsQVNULCBvZmZzZXRzTGlzdCkpCisgICAgZW1pdENvZGVJ
bkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQpIHsK
KyAgICAgICRhc20uaW5Bc20geworICAgICAgICBsb3dMZXZlbEFTVC5sb3dlcihiYWNrZW5kKQor
ICAgICAgfQorICAgIH0KKyAgfQorfQorCiskc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IEFzc2Vt
Ymx5IGZpbGUgI3tvdXRwdXRGbG5tfSBzdWNjZXNzZnVsbHkgZ2VuZXJhdGVkLiIKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMDM5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjCisj
IEJhc2UgdXRpbGl0eSB0eXBlcyBmb3IgdGhlIEFTVC4KKyMKKworIyBWYWxpZCBtZXRob2RzIGZv
ciBOb2RlOgorIworIyBub2RlLmNoaWxkcmVuIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgaW1tZWRp
YXRlIGNoaWxkcmVuLgorIworIyBub2RlLmRlc2NlbmRlbnRzIC0+IFJldHVybnMgYW4gYXJyYXkg
b2YgYWxsIHN0cmljdCBkZXNjZW5kYW50cyAoY2hpbGRyZW4KKyMgICAgIGFuZCBjaGlsZHJlbiBv
ZiBjaGlsZHJlbiwgdHJhbnNpdGl2ZWx5KS4KKyMKKyMgbm9kZS5mbGF0dGVuIC0+IFJldHVybnMg
YW4gYXJyYXkgY29udGFpbmluZyB0aGUgc3RyaWN0IGRlc2NlbmRhbnRzIGFuZAorIyAgICAgdGhl
IG5vZGUgaXRzZWxmLgorIworIyBub2RlLmZpbHRlcih0eXBlKSAtPiBSZXR1cm5zIGFuIGFycmF5
IGNvbnRhaW5pbmcgdGhvc2UgZWxlbWVudHMgaW4KKyMgICAgIG5vZGUuZmxhdHRlbiB0aGF0IGFy
ZSBvZiB0aGUgZ2l2ZW4gdHlwZSAoaXNfYT8gdHlwZSByZXR1cm5zIHRydWUpLgorIworIyBub2Rl
Lm1hcENoaWxkcmVue3x2fCAuLi59IC0+IFJldHVybnMgYSBuZXcgbm9kZSB3aXRoIGFsbCBjaGls
ZHJlbgorIyAgICAgcmVwbGFjZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBibG9jay4KKyMKKyMg
RXhhbXBsZXM6CisjCisjIG5vZGUuZmlsdGVyKFNldHRpbmcpLnVuaXEgLT4gUmV0dXJucyBhbGwg
b2YgdGhlIHNldHRpbmdzIHRoYXQgdGhlIEFTVCdzCisjICAgICBJZlRoZW5FbHNlIGJsb2NrcyBk
ZXBlbmQgb24uCisjCisjIG5vZGUuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcSAtPiBSZXR1cm5z
IGFsbCBvZiB0aGUgc3RydWN0dXJlIG9mZnNldHMKKyMgICAgIHRoYXQgdGhlIEFTVCBkZXBlbmRz
IG9uLgorCitjbGFzcyBOb2RlCisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luCisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICBl
bmQKKyAgCisgIGRlZiBjb2RlT3JpZ2luU3RyaW5nCisgICAgImxpbmUgbnVtYmVyICN7QGNvZGVP
cmlnaW59IgorICBlbmQKKyAgCisgIGRlZiBkZXNjZW5kYW50cworICAgIGNoaWxkcmVuLmNvbGxl
Y3R7fHZ8IHYuZmxhdHRlbn0uZmxhdHRlbgorICBlbmQKKyAgCisgIGRlZiBmbGF0dGVuCisgICAg
W3NlbGZdICsgZGVzY2VuZGFudHMKKyAgZW5kCisgIAorICBkZWYgZmlsdGVyKHR5cGUpCisgICAg
ZmxhdHRlbi5zZWxlY3R7fHZ8IHYuaXNfYT8gdHlwZX0KKyAgZW5kCitlbmQKKworY2xhc3MgTm9D
aGlsZHJlbiA8IE5vZGUKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtdCisgIGVuZAorICAK
KyAgZGVmIG1hcENoaWxkcmVuCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RP
ZmZzZXRLZXkKKyAgYXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlh
bGl6ZShzdHJ1Y3QsIGZpZWxkKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBm
aWVsZAorICBlbmQKKyAgCisgIGRlZiBoYXNoCisgICAgQHN0cnVjdC5oYXNoICsgQGZpZWxkLmhh
c2ggKiAzCisgIGVuZAorICAKKyAgZGVmIGVxbD8ob3RoZXIpCisgICAgQHN0cnVjdCA9PSBvdGhl
ci5zdHJ1Y3QgYW5kIEBmaWVsZCA9PSBvdGhlci5maWVsZAorICBlbmQKK2VuZAorICAgIAorIwor
IyBBU1Qgbm9kZXMuCisjCisKK2NsYXNzIFN0cnVjdE9mZnNldCA8IE5vQ2hpbGRyZW4KKyAgYXR0
cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBzdHJ1Y3QsIGZpZWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0
cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAg
CisgIGRlZiBzZWxmLmZvckZpZWxkKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAga2V5
ID0gU3RydWN0T2Zmc2V0S2V5Lm5ldyhzdHJ1Y3QsIGZpZWxkKQorICAgIAorICAgIHVubGVzcyBA
QG1hcHBpbmdba2V5XQorICAgICAgQEBtYXBwaW5nW2tleV0gPSBTdHJ1Y3RPZmZzZXQubmV3KGNv
ZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW2tleV0KKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje3N0cnVjdH06OiN7ZmllbGR9IgorICBlbmQKKyAg
CisgIGRlZiA8PT4ob3RoZXIpCisgICAgaWYgQHN0cnVjdCAhPSBvdGhlci5zdHJ1Y3QKKyAgICAg
IHJldHVybiBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgICBlbmQKKyAgICBAZmllbGQgPD0+
IG90aGVyLmZpZWxkCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5k
CisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRl
PworICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5k
CitlbmQKKworY2xhc3MgU2l6ZW9mIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0g
e30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHVubGVz
cyBAQG1hcHBpbmdbc3RydWN0XQorICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBTaXplb2YubmV3
KGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbc3RydWN0XQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgInNpemVvZiAje0BzdHJ1Y3R9IgorICBlbmQKKyAgCisg
IGRlZiA8PT4ob3RoZXIpCisgICAgQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgIGVuZAorICAK
KyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAg
ZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5kCisgIAor
ICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRl
IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhbHVlID0g
dmFsdWUKKyAgICByYWlzZSAiQmFkIGltbWVkaWF0ZSB2YWx1ZSAje3ZhbHVlLmluc3BlY3R9IGF0
ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyB2YWx1ZS5pc19hPyBJbnRlZ2VyCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiI3t2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmID09KG90aGVy
KQorICAgIG90aGVyLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUgPT0gQHZhbHVlCisg
IGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFi
ZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAg
ZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3Mg
QWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisg
IGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIEFkZEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCks
ICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVt
cH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxz
ZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBp
bW1lZGlhdGU/CisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICBmYWxz
ZQorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCBy
aWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdo
dCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRd
CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgU3ViSW1tZWRpYXRlcy5uZXcoY29k
ZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAtICN7cmlnaHQuZHVtcH0pIgorICBlbmQKKyAgCisg
IGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAKKyAg
ZGVmIHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0
ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBNdWxJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJp
Z2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICogI3tyaWdo
dC5kdW1wfSkiCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisg
IAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPwor
ICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitl
bmQKKworY2xhc3MgTmVnSW1tZWRpYXRlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBb
QGNoaWxkXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5lZ0ltbWVkaWF0ZS5u
ZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiKC0je0BjaGlsZC5kdW1wfSkiCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFs
c2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYg
aW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFs
c2UKKyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9y
ZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBp
bmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVu
bGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFJlZ2lzdGVySUQu
bmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/Cisg
ICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAor
ICBkZWYgaW1tZWRpYXRlPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPwor
ICAgIHRydWUKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgor
ICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFt
ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisg
IEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gRlBS
ZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tu
YW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKKyAgCisgIGRlZiBh
ZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisg
IGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBy
ZWdpc3Rlcj8KKyAgICB0cnVlCisgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlIDwgTm9DaGls
ZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQK
KyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVd
ID0gVmFyaWFibGUubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5n
W25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2Ns
YXNzIEFkZHJlc3MgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6b2Zmc2V0CisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgICAgcmFpc2Ug
IkJhZCBiYXNlIGZvciBhZGRyZXNzICN7YmFzZS5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJp
bmd9IiB1bmxlc3MgYmFzZS5pc19hPyBWYXJpYWJsZSBvciBiYXNlLnJlZ2lzdGVyPworICAgIHJh
aXNlICJCYWQgb2Zmc2V0IGZvciBhZGRyZXNzICN7b2Zmc2V0Lmluc3BlY3R9IGF0ICN7Y29kZU9y
aWdpblN0cmluZ30iIHVubGVzcyBvZmZzZXQuaXNfYT8gVmFyaWFibGUgb3Igb2Zmc2V0LmltbWVk
aWF0ZT8KKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBvZmZzZXRdCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwg
KHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfV0iCisgIGVuZAorICAKKyAgZGVmIGFkZHJl
c3M/CisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQK
KyAgCisgIGRlZiBpbW1lZGlhdGU/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0
ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9kZQorICBh
dHRyX3JlYWRlciA6YmFzZSwgOmluZGV4LCA6c2NhbGUsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisgICAgQGluZGV4ID0gaW5kZXgKKyAgICBA
c2NhbGUgPSBzY2FsZQorICAgIHJhaXNlIHVubGVzcyBbMSwgMiwgNCwgOF0ubWVtYmVyPyBAc2Nh
bGUKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIHNjYWxlU2hpZnQKKyAg
ICBjYXNlIHNjYWxlCisgICAgd2hlbiAxCisgICAgICAwCisgICAgd2hlbiAyCisgICAgICAxCisg
ICAgd2hlbiA0CisgICAgICAyCisgICAgd2hlbiA4CisgICAgICAzCisgICAgZWxzZQorICAgICAg
cmFpc2UgIkJhZCBzY2FsZSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwgQGluZGV4LCBAb2Zmc2V0XQorICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEBiYXNlKSwgKHlpZWxkIEBpbmRleCksIEBzY2FsZSwgKHlpZWxkIEBvZmZzZXQpKQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfSwgI3tp
bmRleC5kdW1wfSwgI3tzY2FsZX1dIgorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIHRy
dWUKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYg
aW1tZWRpYXRlPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIGZh
bHNlCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAg
YXR0cl9yZWFkZXIgOmFkZHJlc3MKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGFk
ZHJlc3MpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje2FkZHJlc3MuZHVtcH1bXSIKKyAgZW5kCisgIAor
ICBkZWYgYWRkcmVzcz8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBlbmQKKyAgCisg
IGRlZiByZWdpc3Rlcj8KKyAgICBmYWxzZQorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlv
biA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBvcGNvZGUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQG9wY29kZSA9IG9wY29kZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFw
Q2hpbGRyZW4oJnByb2MpCisgICAgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUs
IEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0IiAr
IG9wY29kZS50b19zICsgIiAiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIs
ICIpCisgIGVuZAorZW5kCisKK2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICAiXHRlcnJvciIKKyAgZW5kCitlbmQKKworY2xhc3MgQ29uc3REZWNsIDwgTm9k
ZQorICBhdHRyX3JlYWRlciA6dmFyaWFibGUsIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QHZhcmlhYmxlID0gdmFyaWFibGUKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIFtAdmFyaWFibGUsIEB2YWx1ZV0KKyAgZW5kCisgIAorICBkZWYgbWFw
Q2hpbGRyZW4KKyAgICBDb25zdERlY2wubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAdmFyaWFibGUp
LCAoeWllbGQgQHZhbHVlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJjb25zdCAje0B2
YXJpYWJsZS5kdW1wfSA9ICN7QHZhbHVlLmR1bXB9IgorICBlbmQKK2VuZAorCiskbGFiZWxNYXBw
aW5nID0ge30KKworY2xhc3MgTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1l
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShj
b2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNl
ICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFt
ZV0uaXNfYT8gTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFi
ZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1l
XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitj
bGFzcyBMb2NhbExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBuYW1lID0gbmFtZQorICBlbmQKKworICBAQHVuaXF1ZU5hbWVDb3VudGVyID0gMAorICAK
KyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBp
bmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5s
ZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTG9jYWxMYWJlbAorICAgIGVsc2UKKyAgICAg
ICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBMb2NhbExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgc2VsZi51
bmlxdWUoY29tbWVudCkKKyAgICBuZXdOYW1lID0gIl8je2NvbW1lbnR9IgorICAgIGlmICRsYWJl
bE1hcHBpbmdbbmV3TmFtZV0KKyAgICAgIHdoaWxlICRsYWJlbE1hcHBpbmdbbmV3TmFtZSA9ICJf
I3tAQHVuaXF1ZU5hbWVDb3VudGVyfV8je2NvbW1lbnR9Il0KKyAgICAgICAgQEB1bmlxdWVOYW1l
Q291bnRlciArPSAxCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBmb3JOYW1lKG5pbCwgbmV3TmFt
ZSkKKyAgZW5kCisgIAorICBkZWYgY2xlYW5OYW1lCisgICAgaWYgbmFtZSA9fiAvXlwuLworICAg
ICAgIl8iICsgbmFtZVsxLi4tMV0KKyAgICBlbHNlCisgICAgICBuYW1lCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExh
YmVsUmVmZXJlbmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxh
YmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBl
bmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3Jp
Z2luLCAoeWllbGQgQGxhYmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5h
bWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBk
ZWYgYWRkcmVzcz8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICB0cnVl
CisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UgPCBOb0NoaWxkcmVuCisg
IGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFi
ZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAg
CisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxk
cmVuCisgICAgTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJl
bCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAg
ZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgdHJ1ZQorICBlbmQKK2VuZAorCitj
bGFzcyBTZXF1ZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGxpc3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGlz
dCA9IGxpc3QKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBsaXN0CisgIGVuZAorICAK
KyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBA
bGlzdC5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0
e3x2fCB2LmR1bXB9LmpvaW4oIlxuIikKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hp
bGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBp
bnN0YW5jZSA9IFRydWUubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFu
Y2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAidHJ1ZSIKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UgPCBOb0NoaWxkcmVuCisg
IGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2Ug
PSBGYWxzZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBl
bmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiZmFsc2UiCisgIGVuZAorZW5kCisKK2NsYXNzIFRydWVDbGFzcworICBkZWYgYXNOb2RlCisg
ICAgVHJ1ZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZUNsYXNzCisgIGRlZiBh
c05vZGUKKyAgICBGYWxzZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nIDwg
Tm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQor
ICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5n
W25hbWVdID0gU2V0dGluZy5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1h
cHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQK
KworY2xhc3MgQW5kIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENo
aWxkcmVuCisgICAgQW5kLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJp
Z2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3Jp
Z2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgT3IgPCBOb2RlCisgIGF0dHJfcmVhZGVy
IDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJp
Z2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0
ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0K
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
KCN7bGVmdC5kdW1wfSBvciAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTm90
IDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisg
IAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOb3QubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hp
bGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisg
IGVuZAorZW5kCisKK2NsYXNzIFNraXAgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICJcdHNraXAiCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpwcmVkaWNhdGUsIDp0aGVuQ2FzZQorICBhdHRyX2FjY2Vzc29yIDplbHNlQ2Fz
ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZSkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBwcmVkaWNhdGUgPSBwcmVkaWNhdGUKKyAgICBA
dGhlbkNhc2UgPSB0aGVuQ2FzZQorICAgIEBlbHNlQ2FzZSA9IFNraXAubmV3KGNvZGVPcmlnaW4p
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgaWYgQGVsc2VDYXNlCisgICAgICBbQHBy
ZWRpY2F0ZSwgQHRoZW5DYXNlLCBAZWxzZUNhc2VdCisgICAgZWxzZQorICAgICAgW0BwcmVkaWNh
dGUsIEB0aGVuQ2FzZV0KKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHByZWRpY2F0ZSksICh5aWVsZCBA
dGhlbkNhc2UpLCAoeWllbGQgQGVsc2VDYXNlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICJpZiAje3ByZWRpY2F0ZS5kdW1wfVxuIiArIHRoZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsg
ZWxzZUNhc2UuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8gPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6dmFyaWFibGVzLCA6Ym9keQorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQHZhcmlhYmxlcyA9IHZhcmlhYmxlcworICAg
IEBib2R5ID0gYm9keQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEB2YXJpYWJsZXMg
KyBbQGJvZHldCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTWFjcm8ubmV3KGNv
ZGVPcmlnaW4sIEBuYW1lLCBAdmFyaWFibGVzLm1hcHt8dnwgeWllbGQgdn0sICh5aWVsZCBAYm9k
eSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFi
bGVzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpXG4iICsgYm9keS5kdW1wICsg
IlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBNYWNyb0NhbGwgPCBOb2RlCisgIGF0dHJfcmVh
ZGVyIDpuYW1lLCA6b3BlcmFuZHMKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5h
bWUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisg
ICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAgICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAg
QG9wZXJhbmRzLmVhY2h7fHZ8IHJhaXNlIHVubGVzcyB2fQorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIEBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykK
KyAgICBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAb3BlcmFuZHMubWFwKCZwcm9j
KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdCN7bmFtZX0oIiArIG9wZXJhbmRzLmNv
bGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpIgorICBlbmQKK2VuZAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDk2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCityZXF1aXJlICJhcm12NyIKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIng4NiIKKwor
QkFDS0VORFMgPQorICBbCisgICAiWDg2IiwKKyAgICJBUk12NyIKKyAgXQorCisjIEtlZXAgdGhl
IHNldCBvZiB3b3JraW5nIGJhY2tlbmRzIHNlcGFyYXRlIGZyb20gdGhlIHNldCBvZiBiYWNrZW5k
cyB0aGF0IG1pZ2h0IGJlCisjIHN1cHBvcnRlZC4gVGhpcyBpcyBncmVhdCBiZWNhdXNlIHRoZSBC
QUNLRU5EUyBsaXN0IGlzIGFsbW9zdCBsaWtlIGEgcmVzZXJ2ZWQKKyMgd29yZHMgbGlzdCwgaW4g
dGhhdCBpdCBjYXVzZXMgc2V0dGluZ3MgcmVzb2x1dGlvbiB0byB0cmVhdCB0aG9zZSB3b3JkcyBz
cGVjaWFsbHkuCisjIEhlbmNlIHRoaXMgbGV0cyB1cyBzZXQgYXNpZGUgdGhlIG5hbWUgb2YgYSBi
YWNrZW5kIHdlIG1pZ2h0IHdhbnQgdG8gc3VwcG9ydCBpbgorIyB0aGUgZnV0dXJlIHdoaWxlIG5v
dCBhY3R1YWxseSBzdXBwb3J0aW5nIHRoZSBiYWNrZW5kIHlldC4KK1dPUktJTkdfQkFDS0VORFMg
PQorICBbCisgICAiWDg2IiwKKyAgICJBUk12NyIKKyAgXQorCitCQUNLRU5EX1BBVFRFUk4gPSBS
ZWdleHAubmV3KCdcXEEoJyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFonKQorCitjbGFz
cyBOb2RlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIHNlbmQoImxvd2VyIiArIG5hbWUpCisgIGVu
ZAorZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBsb3dlcigpIGZvciB0aG9zZSBub2RlcyB0aGF0IGFy
ZSBiYWNrZW5kLWFnbm9zdGljCisKK2NsYXNzIExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAg
ICRhc20ucHV0c0xhYmVsKHNlbGYubmFtZVsxLi4tMV0pCisgIGVuZAorZW5kCisKK2NsYXNzIExv
Y2FsTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzTG9jYWxMYWJlbCAiX29m
ZmxpbmVhc21fI3tzZWxmLm5hbWVbMS4uLTFdfSIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxS
ZWZlcmVuY2UKKyAgZGVmIGFzbUxhYmVsCisgICAgQXNzZW1ibGVyLmxhYmVsUmVmZXJlbmNlKG5h
bWVbMS4uLTFdKQorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCisgIGRl
ZiBhc21MYWJlbAorICAgIEFzc2VtYmxlci5sb2NhbExhYmVsUmVmZXJlbmNlKCJfb2ZmbGluZWFz
bV8iK25hbWVbMS4uLTFdKQorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwCisgIGRlZiBsb3dlcihu
YW1lKQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXIobmFtZSkKKyAg
ICBpZiByZXNwb25kX3RvPyAibG93ZXIje25hbWV9IgorICAgICAgc2VuZCgibG93ZXIje25hbWV9
IikKKyAgICBlbHNlCisgICAgICBAbGlzdC5lYWNoIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAg
ICAgbm9kZS5sb3dlcihuYW1lKQorICAgICAgfQorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFj
dG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDkzIEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykK
KworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9m
ZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZWxmX2hhc2giCityZXF1aXJlICJz
ZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworaW5wdXRGbG5tID0gQVJHVi5zaGlmdAor
b3V0cHV0RmxubSA9IEFSR1Yuc2hpZnQKKworJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBQYXJz
aW5nICN7aW5wdXRGbG5tfSBhbmQgY3JlYXRpbmcgb2Zmc2V0IGV4dHJhY3RvciAje291dHB1dEZs
bm19LiIKKworZGVmIGVtaXRNYWdpY051bWJlcgorICBPRkZTRVRfTUFHSUNfTlVNQkVSUy5lYWNo
IHsKKyAgICB8IG51bWJlciB8CisgICAgJG91dHB1dC5wdXRzICIje251bWJlcn0sIgorICB9Citl
bmQKKworaW5wdXREYXRhID0gSU86OnJlYWQoaW5wdXRGbG5tKQoraW5wdXRIYXNoID0gIi8vIG9m
ZmxpbmVhc20gaW5wdXQgaGFzaDogI3tEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0YSl9
ICN7c2VsZkhhc2h9IgorCitpZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0RmxubQorICBGaWxlLm9w
ZW4ob3V0cHV0RmxubSwgInIiKSB7CisgICAgfCBpbnAgfAorICAgIGZpcnN0TGluZSA9IGlucC5n
ZXRzCisgICAgaWYgZmlyc3RMaW5lIGFuZCBmaXJzdExpbmUuY2hvbXAgPT0gaW5wdXRIYXNoCisg
ICAgICAkc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IE5vdGhpbmcgY2hhbmdlZC4iCisgICAgICBl
eGl0IDAKKyAgICBlbmQKKyAgfQorZW5kCisKK29yaWdpbmFsQVNUID0gcGFyc2UobGV4KGlucHV0
RGF0YSkpCisKK0ZpbGUub3BlbihvdXRwdXRGbG5tLCAidyIpIHsKKyAgfCBvdXRwIHwKKyAgJG91
dHB1dCA9IG91dHAKKyAgb3V0cC5wdXRzIGlucHV0SGFzaAorICBlbWl0Q29kZUluQWxsQ29uZmln
dXJhdGlvbnMob3JpZ2luYWxBU1QpIHsKKyAgICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGlu
ZGV4IHwKKyAgICBvZmZzZXRzTGlzdCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNv
cnQKKyAgICBzaXplc0xpc3QgPSBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CisgICAgCisg
ICAgbGVuZ3RoID0gKE9GRlNFVF9NQUdJQ19OVU1CRVJTLnNpemUgKyAxKSAqICgxICsgb2Zmc2V0
c0xpc3Quc2l6ZSArIHNpemVzTGlzdC5zaXplKQorICAgIAorICAgIG91dHAucHV0cyAic3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICAgIGVtaXRN
YWdpY051bWJlcgorICAgIG91dHAucHV0cyAiI3tpbmRleH0sIgorICAgIG9mZnNldHNMaXN0LmVh
Y2ggeworICAgICAgfCBvZmZzZXQgfAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICBvdXRw
LnB1dHMgIk9GRkxJTkVfQVNNX09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZp
ZWxkfSksIgorICAgIH0KKyAgICBzaXplc0xpc3QuZWFjaCB7CisgICAgICB8IG9mZnNldCB8Cisg
ICAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICAgIG91dHAucHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0
cnVjdH0pLCIKKyAgICB9CisgICAgb3V0cC5wdXRzICJ9OyIKKyAgfQorfQorCiskc3RkZXJyLnB1
dHMgIm9mZmxpbmVhc206IG9mZnNldCBleHRyYWN0b3IgI3tvdXRwdXRGbG5tfSBzdWNjZXNzZnVs
bHkgZ2VuZXJhdGVkLiIKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
MTQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgSW50ZXJlc3Rp
bmcgaW52YXJpYW50LCB3aGljaCB3ZSB0YWtlIGFkdmFudGFnZSBvZjogYnJhbmNoaW5nIGluc3Ry
dWN0aW9ucworIyBhbHdheXMgYmVnaW4gd2l0aCAiYiIsIGFuZCBubyBub24tYnJhbmNoaW5nIGlu
c3RydWN0aW9ucyBiZWdpbiB3aXRoICJiIi4KKyMgVGVybWluYWwgaW5zdHJ1Y3Rpb25zIGFyZSAi
am1wIiBhbmQgInJldCIuCisKK01BQ1JPX0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJhZGRpIiwK
KyAgICJhbmRpIiwKKyAgICJsc2hpZnRpIiwKKyAgICJtdWxpIiwKKyAgICJuZWdpIiwKKyAgICJu
b3RpIiwKKyAgICJvcmkiLAorICAgInJzaGlmdGkiLAorICAgInVyc2hpZnRpIiwKKyAgICJzdWJp
IiwKKyAgICJ4b3JpIiwKKyAgICJsb2FkaSIsCisgICAibG9hZGIiLAorICAgImxvYWRicyIsCisg
ICAibG9hZGgiLAorICAgImxvYWRocyIsCisgICAic3RvcmVpIiwKKyAgICJzdG9yZWIiLAorICAg
ImxvYWRkIiwKKyAgICJtb3ZlZCIsCisgICAic3RvcmVkIiwKKyAgICJhZGRkIiwKKyAgICJkaXZk
IiwKKyAgICJzdWJkIiwKKyAgICJtdWxkIiwKKyAgICJzcXJ0ZCIsCisgICAiY2kyZCIsCisgICAi
ZmlpMmQiLCAjIHVzYWdlOiBmaWkyZCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4s
IDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+LCA8ZnByPgorICAgImZkMmlpIiwgIyB1
c2FnZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdw
ciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4KKyAgICJiZGVxIiwKKyAgICJiZG5lcSIsCisg
ICAiYmRndCIsCisgICAiYmRndGVxIiwKKyAgICJiZGx0IiwKKyAgICJiZGx0ZXEiLAorICAgImJk
ZXF1biIsCisgICAiYmRuZXF1biIsCisgICAiYmRndHVuIiwKKyAgICJiZGd0ZXF1biIsCisgICAi
YmRsdHVuIiwKKyAgICJiZGx0ZXF1biIsCisgICAiYnRkMmkiLAorICAgInRkMmkiLAorICAgImJj
ZDJpIiwKKyAgICJtb3ZkeiIsCisgICAicG9wIiwKKyAgICJwdXNoIiwKKyAgICJtb3ZlIiwKKyAg
ICJzeGkycCIsCisgICAienhpMnAiLAorICAgIm5vcCIsCisgICAiYmllcSIsCisgICAiYmluZXEi
LAorICAgImJpYSIsCisgICAiYmlhZXEiLAorICAgImJpYiIsCisgICAiYmliZXEiLAorICAgImJp
Z3QiLAorICAgImJpZ3RlcSIsCisgICAiYmlsdCIsCisgICAiYmlsdGVxIiwKKyAgICJiYmVxIiwK
KyAgICJiYm5lcSIsCisgICAiYmJhIiwKKyAgICJiYmFlcSIsCisgICAiYmJiIiwKKyAgICJiYmJl
cSIsCisgICAiYmJndCIsCisgICAiYmJndGVxIiwKKyAgICJiYmx0IiwKKyAgICJiYmx0ZXEiLAor
ICAgImJ0aW8iLAorICAgImJ0aXMiLAorICAgImJ0aXoiLAorICAgImJ0aW56IiwKKyAgICJidGJv
IiwKKyAgICJidGJzIiwKKyAgICJidGJ6IiwKKyAgICJidGJueiIsCisgICAiam1wIiwKKyAgICJi
YWRkaW8iLAorICAgImJhZGRpcyIsCisgICAiYmFkZGl6IiwKKyAgICJiYWRkaW56IiwKKyAgICJi
c3ViaW8iLAorICAgImJzdWJpcyIsCisgICAiYnN1Yml6IiwKKyAgICJic3ViaW56IiwKKyAgICJi
bXVsaW8iLAorICAgImJtdWxpcyIsCisgICAiYm11bGl6IiwKKyAgICJibXVsaW56IiwKKyAgICJi
b3JpbyIsCisgICAiYm9yaXMiLAorICAgImJvcml6IiwKKyAgICJib3JpbnoiLAorICAgImJyZWFr
IiwKKyAgICJjYWxsIiwKKyAgICJyZXQiLAorICAgImNpZXEiLAorICAgImNpbmVxIiwKKyAgICJj
aWEiLAorICAgImNpYWVxIiwKKyAgICJjaWIiLAorICAgImNpYmVxIiwKKyAgICJjaWd0IiwKKyAg
ICJjaWd0ZXEiLAorICAgImNpbHQiLAorICAgImNpbHRlcSIsCisgICAidGlvIiwKKyAgICJ0aXMi
LAorICAgInRpeiIsCisgICAidGlueiIsCisgICAidGJvIiwKKyAgICJ0YnMiLAorICAgInRieiIs
CisgICAidGJueiIsCisgICAicGVlayIsCisgICAicG9rZSIsCisgICAiYnBlcSIsCisgICAiYnBu
ZXEiLAorICAgImJwYSIsCisgICAiYnBhZXEiLAorICAgImJwYiIsCisgICAiYnBiZXEiLAorICAg
ImJwZ3QiLAorICAgImJwZ3RlcSIsCisgICAiYnBsdCIsCisgICAiYnBsdGVxIiwKKyAgICJhZGRw
IiwKKyAgICJhbmRwIiwKKyAgICJvcnAiLAorICAgInN1YnAiLAorICAgInhvcnAiLAorICAgImxv
YWRwIiwKKyAgICJjcGVxIiwKKyAgICJjcG5lcSIsCisgICAiY3BhIiwKKyAgICJjcGFlcSIsCisg
ICAiY3BiIiwKKyAgICJjcGJlcSIsCisgICAiY3BndCIsCisgICAiY3BndGVxIiwKKyAgICJjcGx0
IiwKKyAgICJjcGx0ZXEiLAorICAgInN0b3JlcCIsCisgICAiYnRwbyIsCisgICAiYnRwcyIsCisg
ICAiYnRweiIsCisgICAiYnRwbnoiLAorICAgImJhZGRwbyIsCisgICAiYmFkZHBzIiwKKyAgICJi
YWRkcHoiLAorICAgImJhZGRwbnoiLAorICAgImJvIiwKKyAgICJicyIsCisgICAiYnoiLAorICAg
ImJueiIsCisgICAibGVhaSIsCisgICAibGVhcCIsCisgIF0KKworWDg2X0lOU1RSVUNUSU9OUyA9
CisgIFsKKyAgICJjZHFpIiwKKyAgICJpZGl2aSIKKyAgXQorCitBUk12N19JTlNUUlVDVElPTlMg
PQorICBbCisgICAic211bGxpIiwKKyAgXQorCitJTlNUUlVDVElPTlMgPSBNQUNST19JTlNUUlVD
VElPTlMgKyBYODZfSU5TVFJVQ1RJT05TICsgQVJNdjdfSU5TVFJVQ1RJT05TCisKK0lOU1RSVUNU
SU9OX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbignKXwo
JykgKyAnKSlcXFonKQorCitkZWYgaXNCcmFuY2goaW5zdHJ1Y3Rpb24pCisgIGluc3RydWN0aW9u
ID1+IC9eYi8KK2VuZAorCitkZWYgaGFzRmFsbFRocm91Z2goaW5zdHJ1Y3Rpb24pCisgIGluc3Ry
dWN0aW9uICE9ICJyZXQiIGFuZCBpbnN0cnVjdGlvbiAhPSAiam1wIgorZW5kCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRz
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNl
dF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK01BR0lDX05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTUwIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJvZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50
cyIKKworT0ZGU0VUX01BR0lDX05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQor
CisjCisjIG9mZnNldHNMaXN0KGFzdCkKKyMgc2l6ZXNMaXN0KGFzdCkKKyMKKyMgUmV0dXJucyBh
IGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgc2l6ZXMgdXNlZCBieSB0aGUgQVNULgorIworCitkZWYgb2Zm
c2V0c0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CitlbmQK
KworZGVmIHNpemVzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKK2Vu
ZAorCisjCisjIG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgoYXN0LCBmaWxlKSAtPgorIyAg
ICAgW29mZnNldHMsIGluZGV4XQorIworIyBQYXJzZXMgdGhlIG9mZnNldHMgZnJvbSBhIGZpbGUg
YW5kIHJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHRoZQorIyBpbmRleCBvZiB0aGUgY29u
ZmlndXJhdGlvbiB0aGF0IGlzIHZhbGlkIGluIHRoaXMgYnVpbGQgdGFyZ2V0LgorIworCitkZWYg
b2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChmaWxlKQorICBpbmRleCA9IG5pbAorICBvZmZz
ZXRzID0gW10KKyAgZW5kaWFubmVzc01hcmtlckJ5dGVzID0gbmlsCisgIAorICBkZWYgcmVhZElu
dChlbmRpYW5uZXNzLCBpbnApCisgICAgYnl0ZXMgPSBbXQorICAgIDQudGltZXMgeworICAgICAg
Ynl0ZXMgPDwgaW5wLmdldGJ5dGUKKyAgICB9CisgICAgCisgICAgaWYgZW5kaWFubmVzcyA9PSA6
bGl0dGxlCisgICAgICAjIExpdHRsZSBlbmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAwIHwKKyAg
ICAgICBieXRlc1sxXSA8PCA4IHwKKyAgICAgICBieXRlc1syXSA8PCAxNiB8CisgICAgICAgYnl0
ZXNbM10gPDwgMjQpCisgICAgZWxzZQorICAgICAgIyBCaWcgZW5kaWFuCisgICAgICAoYnl0ZXNb
MF0gPDwgMjQgfAorICAgICAgIGJ5dGVzWzFdIDw8IDE2IHwKKyAgICAgICBieXRlc1syXSA8PCA4
IHwKKyAgICAgICBieXRlc1szXSA8PCAwKQorICAgIGVuZAorICBlbmQKKyAgCisgIFs6bGl0dGxl
LCA6YmlnXS5lYWNoIHsKKyAgICB8IGVuZGlhbm5lc3MgfAorICAgIG1hZ2ljQnl0ZXMgPSBbXQor
ICAgIE1BR0lDX05VTUJFUlMuZWFjaCB7CisgICAgICB8IG51bWJlciB8CisgICAgICBjdXJyZW50
Qnl0ZXMgPSBbXQorICAgICAgNC50aW1lcyB7CisgICAgICAgIGN1cnJlbnRCeXRlcyA8PCAobnVt
YmVyICYgMHhmZikKKyAgICAgICAgbnVtYmVyID4+PSA4CisgICAgICB9CisgICAgICBpZiBlbmRp
YW5uZXNzID09IDpiaWcKKyAgICAgICAgY3VycmVudEJ5dGVzLnJldmVyc2UhCisgICAgICBlbmQK
KyAgICAgIG1hZ2ljQnl0ZXMgKz0gY3VycmVudEJ5dGVzCisgICAgfQorICAgIAorICAgIEZpbGUu
b3BlbihmaWxlLCAiciIpIHsKKyAgICAgIHwgaW5wIHwKKyAgICAgIHdoZXJlSW5NYXJrZXIgPSAw
CisgICAgICBsb29wIHsKKyAgICAgICAgYnl0ZSA9IGlucC5nZXRieXRlCisgICAgICAgIGJyZWFr
IHVubGVzcyBieXRlCisgICAgICAgIGlmIGJ5dGUgPT0gbWFnaWNCeXRlc1t3aGVyZUluTWFya2Vy
XQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIgKz0gMQorICAgICAgICAgIGlmIHdoZXJlSW5NYXJr
ZXIgPT0gbWFnaWNCeXRlcy5zaXplCisgICAgICAgICAgICAjIFdlIGhhdmUgYSBtYXRjaCEgSWYg
d2UgaGF2ZSBub3QgeWV0IHJlYWQgdGhlIGVuZGlhbm5lc3MgbWFya2VyIGFuZCBpbmRleCwKKyAg
ICAgICAgICAgICMgdGhlbiByZWFkIHRob3NlIG5vdzsgb3RoZXJ3aXNlIHJlYWQgYW4gb2Zmc2V0
LgorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiBub3QgaW5kZXgKKyAgICAgICAgICAgICAg
aW5kZXggPSByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgb2Zmc2V0cyA8PCByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAg
IGVuZAorICAgICAgICAgICAgCisgICAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAg
ICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAg
ICAgZW5kCisgICAgICB9CisgICAgfQorICAgIAorICAgIGJyZWFrIGlmIGluZGV4CisgIH0KKyAg
CisgIHJhaXNlIHVubGVzcyBpbmRleAorICAKKyAgW29mZnNldHMsIGluZGV4XQorZW5kCisKKyMK
KyMgYnVpbGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpIC0+IFtvZmZzZXRzLCBzaXplc10K
KyMKKyMgQnVpbGRzIGEgbWFwcGluZyBiZXR3ZWVuIFN0cnVjdE9mZnNldCBub2RlcyBhbmQgdGhl
aXIgdmFsdWVzLgorIworCitkZWYgYnVpbGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpCisg
IG9mZnNldHNNYXAgPSB7fQorICBzaXplc01hcCA9IHt9CisgIGFzdE9mZnNldHNMaXN0ID0gb2Zm
c2V0c0xpc3QoYXN0KQorICBhc3RTaXplc0xpc3QgPSBzaXplc0xpc3QoYXN0KQorICByYWlzZSB1
bmxlc3MgYXN0T2Zmc2V0c0xpc3Quc2l6ZSArIGFzdFNpemVzTGlzdC5zaXplID09IG9mZnNldHNM
aXN0LnNpemUKKyAgb2Zmc2V0c0xpc3QoYXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgc3Ry
dWN0T2Zmc2V0LCBpbmRleCB8CisgICAgb2Zmc2V0c01hcFtzdHJ1Y3RPZmZzZXRdID0gb2Zmc2V0
c0xpc3Quc2hpZnQKKyAgfQorICBzaXplc0xpc3QoYXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAg
IHwgc2l6ZW9mLCBpbmRleCB8CisgICAgc2l6ZXNNYXBbc2l6ZW9mXSA9IG9mZnNldHNMaXN0LnNo
aWZ0CisgIH0KKyAgW29mZnNldHNNYXAsIHNpemVzTWFwXQorZW5kCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29wdC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vcHQucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vcHQucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTM0
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3Qi
CisKKyMKKyMgIk9wdGltaXphdGlvbiIgcGFzc2VzLiBUaGVzZSBhcmUgdXNlZCB0byBsb3dlciB0
aGUgcmVwcmVzZW50YXRpb24gZm9yCisjIGJhY2tlbmRzIHRoYXQgY2Fubm90IGhhbmRsZSBzb21l
IG9mIG91ciBoaWdoZXItbGV2ZWwgaW5zdHJ1Y3Rpb25zLgorIworCisjCisjIEEgdGVtcG9yYXJ5
IC0gYSB2YXJpYWJsZSB0aGF0IHdpbGwgYmUgYWxsb2NhdGVkIHRvIGEgcmVnaXN0ZXIgYWZ0ZXIg
d2UncmUKKyMgZG9uZS4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVwbGFjZVRlbXBvcmFyaWVz
V2l0aFJlZ2lzdGVycyhraW5kKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgbm9kZSB8Cisg
ICAgICBub2RlLnJlcGxhY2VUZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkKKyAgICB9Cisg
IGVuZAorZW5kCisKK2NsYXNzIFRtcCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmZpcnN0
TWVudGlvbiwgOmxhc3RNZW50aW9uCisgIGF0dHJfcmVhZGVyIDpraW5kCisgIGF0dHJfYWNjZXNz
b3IgOnJlZ2lzdGVyCisKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwga2luZCkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBraW5kID0ga2luZAorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIiR0bXAje29iamVjdF9pZH0iCisgIGVuZAorICAKKyAgZGVmIG1lbnRpb24hKHBvc2l0
aW9uKQorICAgIGlmIG5vdCBAZmlyc3RNZW50aW9uIG9yIHBvc2l0aW9uIDwgQGZpcnN0TWVudGlv
bgorICAgICAgQGZpcnN0TWVudGlvbiA9IHBvc2l0aW9uCisgICAgZW5kCisgICAgaWYgbm90IEBs
YXN0TWVudGlvbiBvciBwb3NpdGlvbiA+IEBsYXN0TWVudGlvbgorICAgICAgQGxhc3RNZW50aW9u
ID0gcG9zaXRpb24KKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcmVwbGFjZVRlbXBvcmFyaWVz
V2l0aFJlZ2lzdGVycyhraW5kKQorICAgIGlmIEBraW5kID09IGtpbmQKKyAgICAgIHJhaXNlICJE
aWQgbm90IGFsbG9jYXRlIHJlZ2lzdGVyIHRvIHRlbXBvcmFyeSBhdCAje2NvZGVPcmlnaW5TdHJp
bmd9IiB1bmxlc3MgQHJlZ2lzdGVyCisgICAgICBAcmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICBz
ZWxmCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5k
CisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRl
PworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIHRydWUKKyAgZW5k
CitlbmQKKworIyBBc3NpZ24gcmVnaXN0ZXJzIHRvIHRlbXBvcmFyaWVzLCBieSBmaW5kaW5nIHdo
aWNoIHRlbXBvcmFyaWVzIGludGVyZmVyZQorIyB3aXRoIGVhY2ggb3RoZXIuIE5vdGUgdGhhdCB0
aGlzIHJlbGllcyBvbiB0ZW1wb3JhcnkgbGl2ZSByYW5nZXMgbm90IGNyb3NzaW5nCisjIGJhc2lj
IGJsb2NrIGJvdW5kYXJpZXMuCisKK2RlZiBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFyaWVzKGxp
c3QsIGtpbmQsIHJlZ2lzdGVycykKKyAgbGlzdC5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgbm9k
ZSwgaW5kZXggfAorICAgIG5vZGUuZmlsdGVyKFRtcCkudW5pcS5lYWNoIHsKKyAgICAgIHwgdG1w
IHwKKyAgICAgIGlmIHRtcC5raW5kID09IGtpbmQKKyAgICAgICAgdG1wLm1lbnRpb24hIGluZGV4
CisgICAgICBlbmQKKyAgICB9CisgIH0KKyAgCisgIGZyZWVSZWdpc3RlcnMgPSByZWdpc3RlcnMu
ZHVwCisgIGxpc3QuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IG5vZGUsIGluZGV4IHwKKyAgICB0
bXBMaXN0ID0gbm9kZS5maWx0ZXIoVG1wKS51bmlxCisgICAgdG1wTGlzdC5lYWNoIHsKKyAgICAg
IHwgdG1wIHwKKyAgICAgIGlmIHRtcC5raW5kID09IGtpbmQgYW5kIHRtcC5maXJzdE1lbnRpb24g
PT0gaW5kZXgKKyAgICAgICAgcmFpc2UgIkNvdWxkIG5vdCBhbGxvY2F0ZSByZWdpc3RlciB0byB0
ZW1wb3JhcnkgYXQgI3tub2RlLmNvZGVPcmlnaW5TdHJpbmd9IiBpZiBmcmVlUmVnaXN0ZXJzLmVt
cHR5PworICAgICAgICB0bXAucmVnaXN0ZXIgPSBmcmVlUmVnaXN0ZXJzLnBvcAorICAgICAgZW5k
CisgICAgfQorICAgIHRtcExpc3QuZWFjaCB7CisgICAgICB8IHRtcCB8CisgICAgICBpZiB0bXAu
a2luZCA9PSBraW5kIGFuZCB0bXAubGFzdE1lbnRpb24gPT0gaW5kZXgKKyAgICAgICAgZnJlZVJl
Z2lzdGVycy5wdXNoIHRtcC5yZWdpc3RlcgorICAgICAgICByYWlzZSAiUmVnaXN0ZXIgYWxsb2Nh
dGlvbiBpbmNvbnNpc3RlbmN5IGF0ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIgaWYgZnJlZVJl
Z2lzdGVycy5zaXplID4gcmVnaXN0ZXJzLnNpemUKKyAgICAgIGVuZAorICAgIH0KKyAgfQorICAK
KyAgbGlzdC5tYXAgeworICAgIHwgbm9kZSB8CisgICAgbm9kZS5yZXBsYWNlVGVtcG9yYXJpZXNX
aXRoUmVnaXN0ZXJzKGtpbmQpCisgIH0KK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9wYXJzZXIucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4NSBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0Igor
cmVxdWlyZSAiaW5zdHJ1Y3Rpb25zIgorcmVxdWlyZSAicmVnaXN0ZXJzIgorCitjbGFzcyBUb2tl
bgorICBhdHRyX3JlYWRlciA6Y29kZU9yaWdpbiwgOnN0cmluZworICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgc3RyaW5nKQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICAg
IEBzdHJpbmcgPSBzdHJpbmcKKyAgZW5kCisgIAorICBkZWYgPT0ob3RoZXIpCisgICAgaWYgb3Ro
ZXIuaXNfYT8gVG9rZW4KKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIuc3RyaW5nCisgICAgZWxzZQor
ICAgICAgQHN0cmluZyA9PSBvdGhlcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiA9fihvdGhl
cikKKyAgICBAc3RyaW5nID1+IG90aGVyCisgIGVuZAorICAKKyAgZGVmIHRvX3MKKyAgICAiI3tA
c3RyaW5nLmluc3BlY3R9IGF0IGxpbmUgI3tjb2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYg
cGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgcmFpc2Ug
IlBhcnNlIGVycm9yOiAje3RvX3N9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJQYXJzZSBlcnJv
cjogI3t0b19zfTogI3tjb21tZW50WzBdfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIworIyBU
aGUgbGV4ZXIuIFRha2VzIGEgc3RyaW5nIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRva2Vucy4K
KyMKKworZGVmIGxleChzdHIpCisgIHJlc3VsdCA9IFtdCisgIGxpbmVOdW1iZXIgPSAxCisgIHdo
aWxlIG5vdCBzdHIuZW1wdHk/CisgICAgY2FzZSBzdHIKKyAgICB3aGVuIC9cQVwjKFteXG5dKikv
CisgICAgICAjIGNvbW1lbnQsIGlnbm9yZQorICAgIHdoZW4gL1xBXG4vCisgICAgICByZXN1bHQg
PDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAgbGluZU51bWJlciArPSAxCisgICAg
d2hlbiAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5u
ZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFcLihbYS16QS1aMC05X10qKS8KKyAgICAg
IHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFfKFthLXpB
LVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAg
ICB3aGVuIC9cQShbIFx0XSspLworICAgICAgIyB3aGl0ZXNwYWNlLCBpZ25vcmUKKyAgICB3aGVu
IC9cQTB4KFswLTlhLWZBLUZdKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1i
ZXIsICQmLmhleC50b19zKQorICAgIHdoZW4gL1xBMChbMC03XSspLworICAgICAgcmVzdWx0IDw8
IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5vY3QudG9fcykKKyAgICB3aGVuIC9cQShbMC05XSsp
LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9c
QTo6LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVu
IC9cQVs6LFwoXClcW1xdPVwrXC0qXS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51
bWJlciwgJCYpCisgICAgZWxzZQorICAgICAgcmFpc2UgIkxleGVyIGVycm9yIGF0IGxpbmUgbnVt
YmVyICN7bGluZU51bWJlcn0sIHVuZXhwZWN0ZWQgc2VxdWVuY2UgI3tzdHJbMC4uMjBdLmluc3Bl
Y3R9IgorICAgIGVuZAorICAgIHN0ciA9ICR+LnBvc3RfbWF0Y2gKKyAgZW5kCisgIHJlc3VsdAor
ZW5kCisKKyMKKyMgVG9rZW4gaWRlbnRpZmljYXRpb24uCisjCisKK2RlZiBpc1JlZ2lzdGVyKHRv
a2VuKQorICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOCitlbmQKKworZGVmIGlzSW5zdHJ1Y3Rp
b24odG9rZW4pCisgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNL
ZXl3b3JkKHRva2VuKQorICB0b2tlbiA9fiAvXEEoKHRydWUpfChmYWxzZSl8KGlmKXwodGhlbil8
KGVsc2UpfChlbHNpZil8KGVuZCl8KGFuZCl8KG9yKXwobm90KXwobWFjcm8pfChjb25zdCl8KHNp
emVvZil8KGVycm9yKSlcWi8gb3IKKyAgICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOIG9yCisg
ICAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0lkZW50aWZpZXIo
dG9rZW4pCisgIHRva2VuID1+IC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopXFovIGFuZCBub3Qg
aXNLZXl3b3JkKHRva2VuKQorZW5kCisKK2RlZiBpc0xhYmVsKHRva2VuKQorICB0b2tlbiA9fiAv
XEFfKFthLXpBLVowLTlfXSopXFovCitlbmQKKworZGVmIGlzTG9jYWxMYWJlbCh0b2tlbikKKyAg
dG9rZW4gPX4gL1xBXC4oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNWYXJpYWJsZSh0
b2tlbikKKyAgaXNJZGVudGlmaWVyKHRva2VuKSBvciBpc1JlZ2lzdGVyKHRva2VuKQorZW5kCisK
K2RlZiBpc0ludGVnZXIodG9rZW4pCisgIHRva2VuID1+IC9cQVswLTldLworZW5kCisKKyMKKyMg
VGhlIHBhcnNlci4gVGFrZXMgYW4gYXJyYXkgb2YgdG9rZW5zIGFuZCByZXR1cm5zIGFuIEFTVC4g
TWV0aG9kcworIyBvdGhlciB0aGFuIHBhcnNlKHRva2VucykgYXJlIG5vdCBmb3IgcHVibGljIGNv
bnN1bXB0aW9uLgorIworCitjbGFzcyBQYXJzZXIKKyAgZGVmIGluaXRpYWxpemUodG9rZW5zKQor
ICAgIEB0b2tlbnMgPSB0b2tlbnMKKyAgICBAaWR4ID0gMAorICBlbmQKKyAgCisgIGRlZiBwYXJz
ZUVycm9yKCpjb21tZW50KQorICAgIGlmIEB0b2tlbnNbQGlkeF0KKyAgICAgIEB0b2tlbnNbQGlk
eF0ucGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBlbHNlCisgICAgICBpZiBjb21tZW50LmVtcHR5
PworICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZpbGUiCisgICAgICBlbHNl
CisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZTogI3tjb21tZW50WzBd
fSIKKyAgICAgIGVuZAorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBjb25zdW1lKHJlZ2V4cCkK
KyAgICBpZiByZWdleHAKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPX4g
cmVnZXhwCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQGlkeCA9PSBAdG9rZW5z
Lmxlbmd0aAorICAgIGVuZAorICAgIEBpZHggKz0gMQorICBlbmQKKyAgCisgIGRlZiBza2lwTmV3
TGluZQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgQGlkeCArPSAxCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQXRvbQorICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gIm5vdCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcGFyc2VQcmVkaWNhdGVB
dG9tCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlCisgICAgICBwYXJz
ZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgQGlkeCArPSAxCisgICAg
ICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJ0cnVlIgorICAgICAgcmVzdWx0
ID0gVHJ1ZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICJmYWxzZSIKKyAgICAgIHJlc3VsdCA9IEZhbHNlLmluc3RhbmNl
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBA
dG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBTZXR0aW5nLmZvck5hbWUoQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIEBpZHggKz0gMQorICAg
ICAgcmVzdWx0CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBwYXJzZVByZWRpY2F0ZUFuZAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlQXRv
bQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImFuZCIKKyAgICAgIGNvZGVPcmlnaW4gPSBA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xp
bmUKKyAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgICByZXN1bHQgPSBBbmQu
bmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVu
ZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlCisgICAgIyBzb21lIGV4YW1wbGVzIG9mIHByZWNl
ZGVuY2U6CisgICAgIyBub3QgYSBhbmQgYiAtPiAobm90IGEpIGFuZCBiCisgICAgIyBhIGFuZCBi
IG9yIGMgLT4gKGEgYW5kIGIpIG9yIGMKKyAgICAjIGEgb3IgYiBhbmQgYyAtPiBhIG9yIChiIGFu
ZCBjKQorICAgIAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgd2hpbGUgQHRv
a2Vuc1tAaWR4XSA9PSAib3IiCisgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9
IHBhcnNlUHJlZGljYXRlQW5kCisgICAgICByZXN1bHQgPSBPci5uZXcoY29kZU9yaWdpbiwgcmVz
dWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VW
YXJpYWJsZQorICAgIGlmIGlzUmVnaXN0ZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgIGlmIEB0b2tl
bnNbQGlkeF0gPX4gRlBSX1BBVFRFUk4KKyAgICAgICAgcmVzdWx0ID0gRlBSZWdpc3RlcklELmZv
ck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAg
ICAgIGVsc2UKKyAgICAgICAgcmVzdWx0ID0gUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBlbmQKKyAgICBlbHNp
ZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgIHJlc3VsdCA9IFZhcmlhYmxlLmZv
ck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAg
ICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVz
dWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQWRkcmVzcyhvZmZzZXQpCisgICAgcGFyc2VFcnJv
ciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luCisgICAgCisgICAgIyBUaHJlZSBwb3NzaWJpbGl0aWVzOgorICAgICMg
W10gICAgICAgLT4gQWJzb2x1dGVBZGRyZXNzCisgICAgIyBbYV0gICAgICAtPiBBZGRyZXNzCisg
ICAgIyBbYSxiXSAgICAtPiBCYXNlSW5kZXggd2l0aCBzY2FsZSA9IDEKKyAgICAjIFthLGIsY10g
IC0+IEJhc2VJbmRleAorICAgIAorICAgIEBpZHggKz0gMQorICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gIl0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJldHVybiBBYnNvbHV0ZUFkZHJlc3MubmV3
KGNvZGVPcmlnaW4sIG9mZnNldCkKKyAgICBlbmQKKyAgICBhID0gcGFyc2VWYXJpYWJsZQorICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICByZXN1bHQgPSBBZGRyZXNzLm5ldyhjb2Rl
T3JpZ2luLCBhLCBvZmZzZXQpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRv
a2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgYiA9IHBhcnNlVmFyaWFi
bGUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAgIHJlc3VsdCA9IEJhc2VJ
bmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgMSwgb2Zmc2V0KQorICAgICAgZWxzZQorICAgICAg
ICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgWyIxIiwgIjIiLCAiNCIsICI4Il0ubWVtYmVy
PyBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBjID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcu
dG9faQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vu
c1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2lu
LCBhLCBiLCBjLCBvZmZzZXQpCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAg
ICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VDb2xvbkNvbG9uCisgICAgc2tpcE5ld0xp
bmUKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgcGFyc2VF
cnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICBuYW1lcyA9IFtAdG9r
ZW5zW0BpZHhdLnN0cmluZ10KKyAgICBAaWR4ICs9IDEKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhd
ID09ICI6OiIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVu
dGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIG5hbWVzIDw8IEB0b2tlbnNbQGlkeF0uc3RyaW5n
CisgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgICByYWlzZSBpZiBuYW1lcy5lbXB0eT8KKyAg
ICBbY29kZU9yaWdpbiwgbmFtZXNdCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbkF0
b20KKyAgICBza2lwTmV3TGluZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICBA
aWR4ICs9IDEKKyAgICAgIE5lZ0ltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9y
aWdpbiwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIo
IgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAg
IHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEK
KyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSW50ZWdlciBAdG9rZW5zW0BpZHhdCisgICAgICBy
ZXN1bHQgPSBJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tA
aWR4XS5zdHJpbmcudG9faSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxz
aWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0g
cGFyc2VDb2xvbkNvbG9uCisgICAgICBpZiBuYW1lcy5zaXplID4gMQorICAgICAgICBTdHJ1Y3RP
ZmZzZXQuZm9yRmllbGQoY29kZU9yaWdpbiwgbmFtZXNbMC4uLTJdLmpvaW4oJzo6JyksIG5hbWVz
Wy0xXSkKKyAgICAgIGVsc2UKKyAgICAgICAgVmFyaWFibGUuZm9yTmFtZShjb2RlT3JpZ2luLCBu
YW1lc1swXSkKKyAgICAgIGVuZAorICAgIGVsc2lmIGlzUmVnaXN0ZXIgQHRva2Vuc1tAaWR4XQor
ICAgICAgcGFyc2VWYXJpYWJsZQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIK
KyAgICAgIEBpZHggKz0gMQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29s
b24KKyAgICAgIFNpemVvZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzLmpvaW4oJzo6JykpCisg
ICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJz
ZUV4cHJlc3Npb25NdWwKKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVz
c2lvbkF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgaWYgQHRva2Vu
c1tAaWR4XSA9PSAiKiIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IE11bElt
bWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VF
eHByZXNzaW9uQXRvbSkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAg
IGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBjb3VsZEJlRXhwcmVzc2lvbgorICAg
IEB0b2tlbnNbQGlkeF0gPT0gIi0iIG9yIEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIgb3IgaXNJ
bnRlZ2VyKEB0b2tlbnNbQGlkeF0pIG9yIGlzVmFyaWFibGUoQHRva2Vuc1tAaWR4XSkgb3IgQHRv
a2Vuc1tAaWR4XSA9PSAiKCIKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uCisgICAg
c2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICB3aGlsZSBA
dG9rZW5zW0BpZHhdID09ICIrIiBvciBAdG9rZW5zW0BpZHhdID09ICItIgorICAgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiKyIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IEFk
ZEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFy
c2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IFN1YkltbWVkaWF0ZXMubmV3KEB0b2tlbnNb
QGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAg
ZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVu
ZAorICAKKyAgZGVmIHBhcnNlT3BlcmFuZChjb21tZW50KQorICAgIGlmIGNvdWxkQmVFeHByZXNz
aW9uCisgICAgICBleHByID0gcGFyc2VFeHByZXNzaW9uCisgICAgICBpZiBAdG9rZW5zW0BpZHhd
ID09ICJbIgorICAgICAgICBwYXJzZUFkZHJlc3MoZXhwcikKKyAgICAgIGVsc2UKKyAgICAgICAg
ZXhwcgorICAgICAgZW5kCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgIHBh
cnNlQWRkcmVzcyhJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgMCkpCisg
ICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBMYWJlbFJlZmVy
ZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMYWJlbC5mb3JOYW1lKEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAx
CisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAg
ICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luLCBMb2NhbExhYmVsLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5z
W0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UK
KyAgICAgIHBhcnNlRXJyb3IoY29tbWVudCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFy
c2VNYWNyb1ZhcmlhYmxlcworICAgIHNraXBOZXdMaW5lCisgICAgY29uc3VtZSgvXEFcKFxaLykK
KyAgICB2YXJpYWJsZXMgPSBbXQorICAgIGxvb3AgeworICAgICAgc2tpcE5ld0xpbmUKKyAgICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBicmVh
aworICAgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIHZhcmlh
YmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vu
c1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yCisgICAgICAg
IGVuZAorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yCisgICAgICBlbmQKKyAgICB9Cisg
ICAgdmFyaWFibGVzCisgIGVuZAorICAKKyAgZGVmIHBhcnNlU2VxdWVuY2UoZmluYWwsIGNvbW1l
bnQpCisgICAgZmlyc3RDb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAg
bGlzdCA9IFtdCisgICAgbG9vcCB7CisgICAgICBpZiAoQGlkeCA9PSBAdG9rZW5zLmxlbmd0aCBh
bmQgbm90IGZpbmFsKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAg
ICAgIGJyZWFrCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgIyBp
Z25vcmUKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJj
b25zdCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzVmFy
aWFibGUgQHRva2Vuc1tAaWR4XQorICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZvck5hbWUo
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAg
QGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIj0i
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YWx1ZSA9IHBhcnNlT3BlcmFuZCgid2hpbGUg
aW5zaWRlIG9mIGNvbnN0ICN7dmFyaWFibGUubmFtZX0iKQorICAgICAgICBsaXN0IDw8IENvbnN0
RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAg
ICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJlcnJvciIKKyAgICAgICAgbGlzdCA8PCBFcnJvci5u
ZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVs
c2lmIEB0b2tlbnNbQGlkeF0gPT0gImlmIgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgICBjb25zdW1lKC9cQSgo
dGhlbil8KFxuKSlcWi8pCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmVGhlbkVsc2Ug
PSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xB
KChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGlj
YXRlLmR1bXB9XCIiKSkKKyAgICAgICAgbGlzdCA8PCBpZlRoZW5FbHNlCisgICAgICAgIHdoaWxl
IEB0b2tlbnNbQGlkeF0gPT0gImVsc2lmIgorICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBza2lwTmV3
TGluZQorICAgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgICAgY29u
c3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAg
ICAgZWxzZUNhc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNl
U2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBc
ImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNl
ID0gZWxzZUNhc2UKKyAgICAgICAgICBpZlRoZW5FbHNlID0gZWxzZUNhc2UKKyAgICAgICAgZW5k
CisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gImVsc2UiCisgICAgICAgICAgQGlkeCArPSAx
CisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFov
LCAid2hpbGUgaW5zaWRlIG9mIGVsc2UgY2FzZSBmb3IgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwi
IikKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJy
b3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gImVuZCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgZW5kCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAg
Y29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlm
aWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZwor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxl
cworICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUg
b2YgbWFjcm8gI3tuYW1lfSIpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBsaXN0IDw8IE1h
Y3JvLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICBlbHNpZiBp
c0luc3RydWN0aW9uIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vu
cy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgICAg
IyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24sIGFuZCBpdCdzIHRoZSBsYXN0IG9uZS4KKyAgICAg
ICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAg
ICAgICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAg
ICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbi4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0
aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICMgSXQncyBkZWZpbml0ZWx5IGFuIGluc3RydWN0aW9uLCBhbmQg
aXQgaGFzIGF0IGxlYXN0IG9uZSBvcGVyYW5kLgorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAg
ICAgICAgICBlbmRPZlNlcXVlbmNlID0gZmFsc2UKKyAgICAgICAgICBsb29wIHsKKyAgICAgICAg
ICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGluc3RydWN0aW9u
ICN7bmFtZX0iKQorICAgICAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5z
LnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAg
ICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbiBhbmQgb2YgdGhlIHNlcXVlbmNlLgorICAg
ICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gdHJ1ZQorICAgICAgICAgICAgICBicmVhaworICAg
ICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgIyBIYXMg
YW5vdGhlciBvcGVyYW5kLgorICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVs
c2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhl
IGluc3RydWN0aW9uLgorICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQg
YSBjb21tYSwgbmV3bGluZSwgb3IgI3tmaW5hbH0gYWZ0ZXIgI3tvcGVyYW5kcy5sYXN0LmR1bXB9
IikKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgIH0KKyAgICAgICAgICBsaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgICBpZiBlbmRP
ZlNlcXVlbmNlCisgICAgICAgICAgICBicmVhaworICAgICAgICAgIGVuZAorICAgICAgICBlbmQK
KyAgICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmln
aW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlk
eF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICIoIgorICAgICAgICAgICMgTWFjcm8gaW52b2NhdGlvbi4KKyAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgbG9vcCB7CisgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisg
ICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgorICAgICAgICAgICAgICAg
ICMgSXQncyBhIG1hY3JvIGxhbWJkYSEKKyAgICAgICAgICAgICAgICBjb2RlT3JpZ2luSW5uZXIg
PSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgICAg
ICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGFu
b255bW91cyBtYWNybyBwYXNzZWQgYXMgYXJndW1lbnQgdG8gI3tuYW1lfSIpCisgICAgICAgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwgTWFjcm8ubmV3KGNv
ZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBv
ZiBtYWNybyBjYWxsIHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAg
ICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAg
ICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGFyc2VFcnJvciAiVW5leHBl
Y3RlZCAje0B0b2tlbnNbQGlkeF0uc3RyaW5nLmluc3BlY3R9IHdoaWxlIHBhcnNpbmcgaW52b2Nh
dGlvbiBvZiBtYWNybyAje25hbWV9IgorICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICBlbmQKKyAgICAgICAgICBsaXN0IDw8IE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdp
biwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yICJF
eHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9IgorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlz
TGFiZWwgQHRva2Vuc1tAaWR4XSBvciBpc0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAg
ICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBA
dG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJv
ciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiOiIKKyAgICAgICAgIyBJdCdzIGEgbGFiZWwuCisg
ICAgICAgIGlmIGlzTGFiZWwgbmFtZQorICAgICAgICAgIGxpc3QgPDwgTGFiZWwuZm9yTmFtZShj
b2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbHNlCisgICAgICAgICAgbGlzdCA8PCBMb2NhbExh
YmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RpbmcgdGVybWluYWwg
I3tmaW5hbH0gI3tjb21tZW50fSIKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXco
Zmlyc3RDb2RlT3JpZ2luLCBsaXN0KQorICBlbmQKK2VuZAorCitkZWYgcGFyc2UodG9rZW5zKQor
ICBwYXJzZXIgPSBQYXJzZXIubmV3KHRva2VucykKKyAgcGFyc2VyLnBhcnNlU2VxdWVuY2Uobmls
LCAiIikKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdp
c3RlcnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
cmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisjIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisj
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitHUFJTID0KKyAgWworICAgInQwIiwKKyAg
ICJ0MSIsCisgICAidDIiLAorICAgInQzIiwKKyAgICJ0NCIsCisgICAiY2ZyIiwKKyAgICJhMCIs
CisgICAiYTEiLAorICAgInIwIiwKKyAgICJyMSIsCisgICAic3AiLAorICAgImxyIgorICBdCisK
K0ZQUlMgPQorICBbCisgICAiZnQwIiwKKyAgICJmdDEiLAorICAgImZ0MiIsCisgICAiZnQzIiwK
KyAgICJmdDQiLAorICAgImZ0NSIsCisgICAiZmEwIiwKKyAgICJmYTEiLAorICAgImZhMiIsCisg
ICAiZmEzIiwKKyAgICJmciIKKyAgXQorCitSRUdJU1RFUlMgPSBHUFJTICsgRlBSUworCitHUFJf
UEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEdQUlMuam9pbignKXwoJykgKyAnKSlcXFon
KQorRlBSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBGUFJTLmpvaW4oJyl8KCcpICsg
JykpXFxaJykKKworUkVHSVNURVJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIFJFR0lT
VEVSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9zZWxmX2hhc2gucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vc2VsZl9oYXNoLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vc2VsZl9oYXNoLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQ4IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMg
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK3JlcXVpcmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAicGF0aG5hbWUiCisK
KyMKKyMgc2VsZkhhc2ggLT4gU0hBMSBoZXhkaWdlc3QKKyMKKyMgUmV0dXJucyBhIGhhc2ggb2Yg
dGhlIG9mZmxpbmVhc20gc291cmNlIGNvZGUuIFRoaXMgYWxsb3dzIGRlcGVuZGVuY3kKKyMgdHJh
Y2tpbmcgZm9yIG5vdCBqdXN0IGNoYW5nZXMgaW4gaW5wdXQsIGJ1dCBhbHNvIGNoYW5nZXMgaW4g
dGhlIGFzc2VtYmxlcgorIyBpdHNlbGYuCisjCisKK2RlZiBzZWxmSGFzaAorICBjb250ZW50cyA9
ICIiCisgIG15UGF0aCA9IFBhdGhuYW1lLm5ldyhfX0ZJTEVfXykuZGlybmFtZQorICBEaXIuZm9y
ZWFjaChteVBhdGgpIHsKKyAgICB8IGVudHJ5IHwKKyAgICBpZiBlbnRyeSA9fiAvXC5yYiQvCisg
ICAgICBjb250ZW50cyArPSBJTzo6cmVhZChteVBhdGggKyBlbnRyeSkKKyAgICBlbmQKKyAgfQor
ICByZXR1cm4gRGlnZXN0OjpTSEExLmhleGRpZ2VzdChjb250ZW50cykKK2VuZAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDIwNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJwYXJz
ZXIiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKKyMKKyMgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRp
b25zKGFzdCkgLT4gc2V0dGluZ3NDb21iaWF0aW9ucworIworIyBDb21wdXRlcyBhbiBhcnJheSBv
ZiBzZXR0aW5ncyBtYXBzLCB3aGVyZSBhIHNldHRpbmdzIG1hcCBjb25zdGl0dXRlcworIyBhIGNv
bmZpZ3VyYXRpb24gZm9yIHRoZSBhc3NlbWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIG1h
cAorIyBjb250YWlucyBrZXkgdmFsdWUgcGFpcnMgd2hlcmUga2V5cyBhcmUgc2V0dGluZ3MgbmFt
ZXMgKHN0cmluZ3MpIGFuZAorIyB0aGUgdmFsdWVzIGFyZSBib29sZWFucyAodHJ1ZSBmb3IgZW5h
YmxlZCwgZmFsc2UgZm9yIGRpc2FibGVkKS4KKyMKKworZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJp
bmF0aW9ucyhhc3QpCisgIHNldHRpbmdzQ29tYmluYXRpb25zID0gW10KKyAgCisgIGRlZiBzZXR0
aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG1hcFNvRmFyLCByZW1haW5pbmcp
CisgICAgaWYgcmVtYWluaW5nLmVtcHR5PworICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwg
bWFwU29GYXIKKyAgICAgIHJldHVybgorICAgIGVuZAorICAgIAorICAgIG5ld01hcCA9IG1hcFNv
RmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gdHJ1ZQorICAgIHNldHRpbmdzQ29t
YmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQor
ICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1d
ID0gZmFsc2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5l
d01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0b3Io
c2V0dGluZ3NDb21iaW5hdGlvbnMsIHt9LCAoYXN0LmZpbHRlcihTZXR0aW5nKS51bmlxLmNvbGxl
Y3R7fHZ8IHYubmFtZX0gKyBbIlg4NiIsICJBUk12NyJdKS51bmlxKQorICAKKyAgc2V0dGluZ3ND
b21iaW5hdGlvbnMKK2VuZAorCisjCisjIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFz
dCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8IC4u
LiB9CisjCisjIERldGVybWluZXMgaWYgdGhlIHNldHRpbmdzIGNvbWJpbmF0aW9uIGlzIHZhbGlk
LCBhbmQgaWYgc28sIGNhbGxzCisjIHRoZSBibG9jayB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3Ug
bmVlZCB0byBnZW5lcmF0ZSBjb2RlLgorIworCitkZWYgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0
aW5ncywgYXN0KQorICAjIENoZWNrIHdoaWNoIGFyY2hpdGVjdHVyZXMgdGhpcyBjb21iaW5hdG9y
IGNsYWltcyB0byBzdXBwb3J0LgorICBudW1DbGFpbWVkQmFja2VuZHMgPSAwCisgIHNlbGVjdGVk
QmFja2VuZCA9IG5pbAorICBCQUNLRU5EUy5lYWNoIHsKKyAgICB8IGJhY2tlbmQgfAorICAgIGlz
U3VwcG9ydGVkID0gY29uY3JldGVTZXR0aW5nc1tiYWNrZW5kXQorICAgIHJhaXNlIHVubGVzcyBp
c1N1cHBvcnRlZCAhPSBuaWwKKyAgICBudW1DbGFpbWVkQmFja2VuZHMgKz0gaWYgaXNTdXBwb3J0
ZWQgdGhlbiAxIGVsc2UgMCBlbmQKKyAgICBpZiBpc1N1cHBvcnRlZAorICAgICAgc2VsZWN0ZWRC
YWNrZW5kID0gYmFja2VuZAorICAgIGVuZAorICB9CisgIAorICByZXR1cm4gaWYgbnVtQ2xhaW1l
ZEJhY2tlbmRzID4gMQorICAKKyAgIyBSZXNvbHZlIHRoZSBBU1QgZG93biB0byBhIGxvdy1sZXZl
bCBmb3JtIChubyBtYWNyb3Mgb3IgY29uZGl0aW9uYWxzKS4KKyAgbG93TGV2ZWxBU1QgPSBhc3Qu
cmVzb2x2ZVNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICB5aWVsZCBjb25jcmV0ZVNl
dHRpbmdzLCBsb3dMZXZlbEFTVCwgc2VsZWN0ZWRCYWNrZW5kCitlbmQKKworIworIyBmb3JFYWNo
VmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdz
LCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0KKyMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3ND
b21iaW5hdGlvbihhc3QsIHNldHRpbmdzQ29tYmluYXRpb25zKSB7CisjICAgICB8IGNvbmNyZXRl
U2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBFeGVjdXRlcyB0aGUg
Z2l2ZW4gYmxvY2sgZm9yIGVhY2ggdmFsaWQgc2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlCisj
IHNldHRpbmdzIG1hcC4gVGhlIGFzdCBwYXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQK
KyMgKGFzdC5yZXNvbHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4KKyMKKyMgVGhlIGZpcnN0IGZv
cm0gd2lsbCBjYWxsIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIGZvciB5b3UuCisj
CisKK2RlZiBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgKm9wdGlvbmFsU2V0
dGluZ3NDb21iaW5hdGlvbnMpCisgIHJhaXNlIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlv
bnMuc2l6ZSA+IDEKKyAgCisgIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuZW1wdHk/
CisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMo
YXN0KQorICBlbHNlCisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBvcHRpb25hbFNldHRpbmdz
Q29tYmlhdGlvbnNbMF0KKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucy5lYWNoX3dp
dGhfaW5kZXggeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgaW5kZXggfAorICAgIGZvclNldHRp
bmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgeworICAgICAgfCBjb25jcmV0ZVNldHRpbmdzXywg
bG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93
TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgfQorICB9CitlbmQKKworIworIyBjcHBTZXR0
aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykKKyMKKyMgUmV0dXJucyB0aGUgQysrIGNvZGUgdXNl
ZCB0byB0ZXN0IGlmIHdlIGFyZSBpbiBhIGNvbmZpZ3VyYXRpb24gdGhhdAorIyBjb3JyZXNwb25k
cyB0byB0aGUgZ2l2ZW4gY29uY3JldGUgc2V0dGluZ3MuCisjCisKK2RlZiBjcHBTZXR0aW5nc1Rl
c3QoY29uY3JldGVTZXR0aW5ncykKKyAgIiNpZiAiICsgY29uY3JldGVTZXR0aW5ncy50b19hLmNv
bGxlY3R7CisgICAgfCBwYWlyIHwKKyAgICAoaWYgcGFpclsxXQorICAgICAgICIiCisgICAgIGVs
c2UKKyAgICAgICAiISIKKyAgICAgZW5kKSArICJPRkZMSU5FX0FTTV8iICsgcGFpclswXQorICB9
LmpvaW4oIiAmJiAiKQorZW5kCisKKyMKKyMgaXNBU1RFcnJvbmVvdXMoYXN0KQorIworIyBUZXN0
cyB0byBzZWUgaWYgdGhlIEFTVCBjbGFpbXMgdGhhdCB0aGVyZSBpcyBhbiBlcnJvciAtIGkuZS4g
aWYgdGhlCisjIHVzZXIncyBjb2RlLCBhZnRlciBzZXR0aW5ncyByZXNvbHV0aW9uLCBoYXMgRXJy
b3Igbm9kZXMuCisjCisKK2RlZiBpc0FTVEVycm9uZW91cyhhc3QpCisgIG5vdCBhc3QuZmlsdGVy
KEVycm9yKS5lbXB0eT8KK2VuZAorCisjCisjIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVT
ZXR0aW5ncykKKyMKKyMgRW1pdHMgYSBjaGVjayB0aGF0IGFzc2VydHMgdGhhdCB3ZSdyZSB1c2lu
ZyB0aGUgZ2l2ZW4gY29uZmlndXJhdGlvbi4KKyMKKworZGVmIGFzc2VydENvbmZpZ3VyYXRpb24o
Y29uY3JldGVTZXR0aW5ncykKKyAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0
ZVNldHRpbmdzKQorICAkb3V0cHV0LnB1dHMgIiNlbHNlIgorICAkb3V0cHV0LnB1dHMgIiNlcnJv
ciBcIkNvbmZpZ3VyYXRpb24gbWlzbWF0Y2guXCIiCisgICRvdXRwdXQucHV0cyAiI2VuZGlmIgor
ZW5kCisKKyMKKyMgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0
LCBiYWNrZW5kKSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCB8IC4u
LiB9CisjCisjIEVtaXRzIGFsbCByZWxldmFudCBndWFyZHMgdG8gc2VlIGlmIHRoZSBjb25maWd1
cmF0aW9uIGhvbGRzIGFuZAorIyBjYWxscyB0aGUgYmxvY2sgaWYgdGhlIGNvbmZpZ3VyYXRpb24g
aXMgbm90IGVycm9uZW91cy4KKyMKKworZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNy
ZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkKKyAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVz
dChjb25jcmV0ZVNldHRpbmdzKQorICAKKyAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAgICRv
dXRwdXQucHV0cyAiI2Vycm9yIFwiSW52YWxpZCBjb25maWd1cmF0aW9uLlwiIgorICBlbHNpZiBu
b3QgV09SS0lOR19CQUNLRU5EUy5pbmNsdWRlPyBiYWNrZW5kCisgICAgJG91dHB1dC5wdXRzICIj
ZXJyb3IgXCJUaGlzIGJhY2tlbmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UKKyAg
ICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICAkb3V0
cHV0LnB1dHMgIiNlbmRpZiIKK2VuZAorCisjCisjIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9u
cyhhc3QpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8
IC4uLiB9CisjCisjIEVtaXRzIGd1YXJkIGNvZGVzIGZvciBhbGwgdmFsaWQgY29uZmlndXJhdGlv
bnMsIGFuZCBjYWxscyB0aGUgYmxvY2sKKyMgZm9yIHRob3NlIGNvbmZpZ3VyYXRpb25zIHRoYXQg
YXJlIHZhbGlkIGFuZCBub3QgZXJyb25lb3VzLgorIworCitkZWYgZW1pdENvZGVJbkFsbENvbmZp
Z3VyYXRpb25zKGFzdCkKKyAgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsK
KyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleCB8Cisg
ICAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAgIHlp
ZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgICRv
dXRwdXQucHV0cyAiI2VuZGlmIgorICB9CitlbmQKKworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzQyIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCity
ZXF1aXJlICJhc3QiCisKKyMKKyMgbm9kZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisjCisj
IENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBJZlRoZW5FbHNlIG5v
ZGVzIGJ5CisjIHN1YnN0aXR1dGluZyBjb25jcmV0ZSBib29sZWFuIHZhbHVlcyBmb3IgZWFjaCBT
ZXR0aW5nLgorIworCitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
CisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlCisgIGRl
ZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFz
cyBGYWxzZQorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5k
CitlbmQKKworY2xhc3MgU2V0dGluZworICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQor
ICAgIHNldHRpbmdzW0BuYW1lXS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kCisgIGRl
ZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykudmFsdWUgYW5kIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVl
KS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgT3IKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykKKyAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBvciBA
cmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5k
CisKK2NsYXNzIE5vdAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChub3Qg
QGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2Vu
ZAorCitjbGFzcyBJZlRoZW5FbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisg
ICAgaWYgQHByZWRpY2F0ZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlCisgICAgICBA
dGhlbkNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVsc2UKKyAgICAgIEBlbHNl
Q2FzZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZW5kCisgIGVuZAorZW5kCisKK2Ns
YXNzIFNlcXVlbmNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgbmV3TGlz
dCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaXRlbSA9IGl0
ZW0ucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgaWYgaXRlbS5pc19hPyBTZXF1ZW5j
ZQorICAgICAgICBuZXdMaXN0ICs9IGl0ZW0ubGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdM
aXN0IDw8IGl0ZW0KKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdp
biwgbmV3TGlzdCkKKyAgZW5kCitlbmQKKworIworIyBub2RlLmRlbWFjcm9pZnkobWFjcm9zKQor
IyBub2RlLnN1YnN0aXR1dGUobWFwcGluZykKKyMKKyMgZGVtYWNyb2lmeSgpIGNvbnN0cnVjdHMg
YSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgTWFjcm8KKyMgbm9kZXMsIHdoaWxlIHN1
YnN0aXR1dGUoKSByZXBsYWNlcyBWYXJpYWJsZSBub2RlcyB3aXRoIHRoZSBnaXZlbgorIyBub2Rl
cyBpbiB0aGUgbWFwcGluZy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgZGVtYWNyb2lmeShtYWNy
b3MpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5kZW1h
Y3JvaWZ5KG1hY3JvcykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGlu
ZykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0
aXR1dGUobWFwcGluZykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMo
bWFwcGluZykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxk
LnN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIE1h
Y3JvCisgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbXlNYXBwaW5nID0ge30KKyAgICBt
YXBwaW5nLmVhY2hfcGFpciB7CisgICAgICB8IGtleSwgdmFsdWUgfAorICAgICAgdW5sZXNzIEB2
YXJpYWJsZXMuaW5jbHVkZT8ga2V5CisgICAgICAgIG15TWFwcGluZ1trZXldID0gdmFsdWUKKyAg
ICAgIGVuZAorICAgIH0KKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAg
IGNoaWxkLnN1YnN0aXR1dGUobXlNYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3Mg
VmFyaWFibGUKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZd
CisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBl
bmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBp
bmcpCisgICAgaWYgbWFwcGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UK
KyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVm
IHN1YnN0aXR1dGUoY29uc3RhbnRzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIG15Q29uc3RhbnRz
ID0gY29uc3RhbnRzLmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAg
IGlmIGl0ZW0uaXNfYT8gQ29uc3REZWNsCisgICAgICAgIG15Q29uc3RhbnRzW2l0ZW0udmFyaWFi
bGVdID0gaXRlbS52YWx1ZS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZWxzZQorICAg
ICAgICBuZXdMaXN0IDw8IGl0ZW0uc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgIGVuZAor
ICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5kCisgIAor
ICBkZWYgcmVuYW1lTGFiZWxzKGNvbW1lbnQpCisgICAgbWFwcGluZyA9IHt9CisgICAgCisgICAg
QGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBMb2NhbExh
YmVsCisgICAgICAgIG1hcHBpbmdbaXRlbV0gPSBMb2NhbExhYmVsLnVuaXF1ZShpZiBjb21tZW50
IHRoZW4gY29tbWVudCArICJfIiBlbHNlICIiIGVuZCArIGl0ZW0uY2xlYW5OYW1lKQorICAgICAg
ZW5kCisgICAgfQorICAgIAorICAgIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgZW5kCisg
IAorICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbXlNYWNyb3MgPSBtYWNyb3MuZHVwCisg
ICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNy
bworICAgICAgICBteU1hY3Jvc1tpdGVtLm5hbWVdID0gaXRlbQorICAgICAgZW5kCisgICAgfQor
ICAgIG5ld0xpc3QgPSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAg
IGlmIGl0ZW0uaXNfYT8gTWFjcm8KKyAgICAgICAgIyBJZ25vcmUuCisgICAgICBlbHNpZiBpdGVt
LmlzX2E/IE1hY3JvQ2FsbAorICAgICAgICBtYXBwaW5nID0ge30KKyAgICAgICAgbXlNeU1hY3Jv
cyA9IG15TWFjcm9zLmR1cAorICAgICAgICByYWlzZSAiQ291bGQgbm90IGZpbmQgbWFjcm8gI3tp
dGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG15TWFjcm9zW2l0
ZW0ubmFtZV0KKyAgICAgICAgcmFpc2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxs
IHRvICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVt
Lm9wZXJhbmRzLnNpemUgPT0gbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQorICAg
ICAgICBpdGVtLm9wZXJhbmRzLnNpemUudGltZXMgeworICAgICAgICAgIHwgaWR4IHwKKyAgICAg
ICAgICBpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gVmFyaWFibGUgYW5kIG15TWFjcm9zW2l0
ZW0ub3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tp
dGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tp
ZHhdLm5hbWVdCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFi
bGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNpZiBpdGVtLm9wZXJhbmRzW2lkeF0u
aXNfYT8gTWFjcm8KKyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52
YXJpYWJsZXNbaWR4XS5uYW1lXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgbWFw
cGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZh
cmlhYmxlc1tpZHhdXSA9IG5pbAorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5h
bWVdLnZhcmlhYmxlc1tpZHhdXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgIGVuZAor
ICAgICAgICB9CisgICAgICAgIG5ld0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5LnN1
YnN0aXR1dGUobWFwcGluZykuZGVtYWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMoaXRl
bS5uYW1lKS5saXN0CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5kZW1hY3Jv
aWZ5KG15TWFjcm9zKQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3Jp
Z2luLCBuZXdMaXN0KS5zdWJzdGl0dXRlKHt9KQorICBlbmQKK2VuZAorCisjCisjIG5vZGUucmVz
b2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhh
dCBoYXMgb2Zmc2V0IHZhbHVlcyBpbnN0ZWFkIG9mIHN5bWJvbGljCisjIG9mZnNldHMuCisjCisK
K2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIG1h
cENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZU9mZnNldHMo
b2Zmc2V0cywgc2l6ZXMpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXQK
KyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlmIG9mZnNldHNbc2Vs
Zl0KKyAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0c1tzZWxmXSkKKyAgICBl
bHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZgorICBk
ZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgc2l6ZXNbc2VsZl0KKyAg
ICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgc2l6ZXNbc2VsZl0pCisgICAgZWxzZQorICAg
ICAgcHV0cyAiQ291bGQgbm90IGZpbmQgI3tzZWxmLmluc3BlY3R9IGluICN7c2l6ZXMua2V5cy5p
bnNwZWN0fSIKKyAgICAgIHB1dHMgInNpemVzID0gI3tzaXplcy5pbnNwZWN0fSIKKyAgICAgIHNl
bGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIworIyBub2RlLmZvbGQKKyMKKyMgUmVzb2x2ZSBj
b25zdGFudCByZWZlcmVuY2VzIGFuZCBjb21wdXRlIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMuCisj
CisKK2NsYXNzIE5vZGUKKyAgZGVmIGZvbGQKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNo
aWxkIHwKKyAgICAgIGNoaWxkLmZvbGQKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZElt
bWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQg
PSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlh
dGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIElt
bWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgKyBAcmlnaHQudmFsdWUpCisgIGVu
ZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBs
ZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVz
cyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0Lmlz
X2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUg
LSBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMKKyAgZGVm
IGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAor
ICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4g
c2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29k
ZU9yaWdpbiwgQGxlZnQudmFsdWUgKiBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNz
IE5lZ0ltbWVkaWF0ZQorICBkZWYgZm9sZAorICAgIEBjaGlsZCA9IEBjaGlsZC5mb2xkCisgICAg
cmV0dXJuIHNlbGYgdW5sZXNzIEBjaGlsZC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUu
bmV3KGNvZGVPcmlnaW4sIC1AY2hpbGQudmFsdWUpCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5y
ZXNvbHZlQWZ0ZXJTZXR0aW5ncyhvZmZzZXRzLCBzaXplcykKKyMKKyMgQ29tcGlsZSBhc3NlbWJs
eSBhZ2FpbnN0IGEgc2V0IG9mIG9mZnNldHMuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29s
dmUob2Zmc2V0cywgc2l6ZXMpCisgICAgZGVtYWNyb2lmeSh7fSkucmVzb2x2ZU9mZnNldHMob2Zm
c2V0cywgc2l6ZXMpLmZvbGQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3g4Ni5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2ODEgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVm
IHN1cHBvcnRzOEJpdE9uWDg2CisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAi
cjAiLCAidDEiLCAiYTEiLCAicjEiLCAidDIiLCAidDMiCisgICAgICB0cnVlCisgICAgd2hlbiAi
dDQiLCAiY2ZyIgorICAgICAgZmFsc2UKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgY2FzZSBuYW1lCisgICAgd2hl
biAidDAiLCAiYTAiLCAicjAiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAg
ICAgICAgIiVhbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVheCIKKyAgICAgIHdoZW4g
OmludAorICAgICAgICAiJWVheCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVu
ZAorICAgIHdoZW4gInQxIiwgImExIiwgInIxIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVu
IDpieXRlCisgICAgICAgICIlZGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZHgiCisg
ICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlZHgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNl
CisgICAgICBlbmQKKyAgICB3aGVuICJ0MiIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6
Ynl0ZQorICAgICAgICAiJWNsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWN4IgorICAg
ICAgd2hlbiA6aW50CisgICAgICAgICIlZWN4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQor
ICAgICAgZW5kCisgICAgd2hlbiAidDMiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5
dGUKKyAgICAgICAgIiVibCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVieCIKKyAgICAg
IHdoZW4gOmludAorICAgICAgICAiJWVieCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAg
ICAgIGVuZAorICAgIHdoZW4gInQ0IgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRl
CisgICAgICAgICIlc2lsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNpIgorICAgICAg
d2hlbiA6aW50CisgICAgICAgICIlZXNpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAg
ICAgZW5kCisgICAgd2hlbiAiY2ZyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRl
CisgICAgICAgICIlZGlsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWRpIgorICAgICAg
d2hlbiA6aW50CisgICAgICAgICIlZWRpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAg
ICAgZW5kCisgICAgd2hlbiAic3AiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUK
KyAgICAgICAgIiVzcGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc3AiCisgICAgICB3
aGVuIDppbnQKKyAgICAgICAgIiVlc3AiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAg
ICBlbmQKKyAgICBlbHNlCisgICAgICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIFg4
NiBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxP
cGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitj
bGFzcyBGUFJlZ2lzdGVySUQKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICByYWlzZSB1bmxl
c3Mga2luZCA9PSA6ZG91YmxlCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZhMCIs
ICJmciIKKyAgICAgICIleG1tMCIKKyAgICB3aGVuICJmdDEiLCAiZmExIgorICAgICAgIiV4bW0x
IgorICAgIHdoZW4gImZ0MiIsICJmYTIiCisgICAgICAiJXhtbTIiCisgICAgd2hlbiAiZnQzIiwg
ImZhMyIKKyAgICAgICIleG1tMyIKKyAgICB3aGVuICJmdDQiCisgICAgICAiJXhtbTQiCisgICAg
d2hlbiAiZnQ1IgorICAgICAgIiV4bW01IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQgcmVn
aXN0ZXIgI3tuYW1lfSBmb3IgWDg2IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisg
IGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5k
KX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgeDg2T3BlcmFuZChraW5k
KQorICAgICIkI3t2YWx1ZX0iCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAg
ICAiI3t2YWx1ZX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIHN1cHBvcnRz
OEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkK
KyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSkiCisgIGVuZAor
ICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisg
IGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAg
ICB0cnVlCisgIGVuZAorICAgIAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje29mZnNl
dC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmludCl9LCAje2luZGV4Lng4Nk9wZXJhbmQoOmlu
dCl9LCAje3NjYWxlfSkiCisgIGVuZAorCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAg
ICIqI3t4ODZvcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRy
ZXNzCisgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRl
ZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7YWRkcmVzcy52YWx1ZX0iCisgIGVuZAorCisgIGRl
ZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCitl
bmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisg
ICAgYXNtTGFiZWwKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQorICBk
ZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICBhc21MYWJlbAorICBlbmQKK2VuZAorCitjbGFz
cyBJbnN0cnVjdGlvbgorICBkZWYgeDg2T3BlcmFuZHMoKmtpbmRzKQorICAgIHJhaXNlIHVubGVz
cyBraW5kcy5zaXplID09IG9wZXJhbmRzLnNpemUKKyAgICByZXN1bHQgPSBbXQorICAgIGtpbmRz
LnNpemUudGltZXMgeworICAgICAgfCBpZHggfAorICAgICAgcmVzdWx0IDw8IG9wZXJhbmRzW2lk
eF0ueDg2T3BlcmFuZChraW5kc1tpZHhdKQorICAgIH0KKyAgICByZXN1bHQuam9pbigiLCAiKQor
ICBlbmQKKworICBkZWYgeDg2U3VmZml4KGtpbmQpCisgICAgY2FzZSBraW5kCisgICAgd2hlbiA6
Ynl0ZQorICAgICAgImIiCisgICAgd2hlbiA6aGFsZgorICAgICAgInciCisgICAgd2hlbiA6aW50
CisgICAgICAibCIKKyAgICB3aGVuIDpkb3VibGUKKyAgICAgICJzZCIKKyAgICBlbHNlCisgICAg
ICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcFdpdGhOdW1PcGVy
YW5kcyhvcGNvZGUsIGtpbmQsIG51bU9wZXJhbmRzKQorICAgIGlmIG51bU9wZXJhbmRzID09IDMK
KyAgICAgIGlmIG9wZXJhbmRzWzBdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAi
I3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0u
eDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNpZiBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1sy
XQorICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
a2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAg
ICAgICAkYXNtLnB1dHMgIm1vdiN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAk
YXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29w
ZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5kCisgICAgZWxzZQorICAgICAg
JGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYg
aGFuZGxlWDg2T3Aob3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRz
KG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2
U2hpZnQob3Bjb2RlLCBraW5kKQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBv
ciBvcGVyYW5kc1swXSA9PSBSZWdpc3RlcklELmZvck5hbWUobmlsLCAidDIiKQorICAgICAgJGFz
bS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJ4
Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgICAgJGFzbS5w
dXRzICIje29wY29kZX0gJWNsLCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAg
ICAgJGFzbS5wdXRzICJ4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4
IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZEb3VibGVCcmFuY2goYnJhbmNo
T3Bjb2RlLCBtb2RlKQorICAgIGNhc2UgbW9kZQorICAgIHdoZW4gOm5vcm1hbAorICAgICAgJGFz
bS5wdXRzICJ1Y29taXNkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiA6cmV2ZXJzZQorICAgICAg
JGFzbS5wdXRzICJ1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgZWxzZQorICAgICAgcmFpc2Ug
bW9kZS5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tv
cGVyYW5kc1syXS5hc21MYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludENvbXBh
cmUob3Bjb2RlU3VmZml4LCBraW5kKQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0
ZSBhbmQgb3BlcmFuZHNbMF0udmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0
ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3VmZml4ID09ICJuZSIpCisg
ICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKGtpbmQpfSIKKyAgICBlbHNpZiBvcGVyYW5kc1sxXS5pc19hPyBJbW1lZGlhdGUgYW5k
IG9wZXJhbmRzWzFdLnZhbHVlID09IDAgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQg
YW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAg
JGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZChraW5kKX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJjbXAje3g4NlN1ZmZpeChraW5k
KX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50QnJhbmNo
KGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZJbnRDb21wYXJlKGJyYW5jaE9wY29k
ZVsxLi4tMV0sIGtpbmQpCisgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5k
c1syXS5hc21MYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldChzZXRPcGNvZGUs
IG9wZXJhbmQpCisgICAgaWYgb3BlcmFuZC5zdXBwb3J0czhCaXRPblg4NgorICAgICAgJGFzbS5w
dXRzICIje3NldE9wY29kZX0gI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSIKKyAgICAgICRh
c20ucHV0cyAibW92emJsICN7b3BlcmFuZC54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZC54
ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3Bl
cmFuZC54ODZPcGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiI3tzZXRPcGNv
ZGV9ICVhbCIKKyAgICAgICRhc20ucHV0cyAibW92emJsICVhbCwgJWVheCIKKyAgICAgICRhc20u
cHV0cyAieGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlU2V0KHNldE9wY29kZSwga2luZCkK
KyAgICBoYW5kbGVYODZJbnRDb21wYXJlKHNldE9wY29kZVszLi4tMV0sIGtpbmQpCisgICAgaGFu
ZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHNbMl0pCisgIGVuZAorICAKKyAgZGVmIGhhbmRs
ZVg4NlRlc3Qoa2luZCkKKyAgICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgICAgY2FzZSBvcGVyYW5k
cy5zaXplCisgICAgd2hlbiAyCisgICAgICBtYXNrID0gSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2lu
LCAtMSkKKyAgICB3aGVuIDMKKyAgICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICAgIGVsc2UKKyAg
ICAgIHJhaXNlICJFeHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMsIGJ1dCBnb3QgI3tvcGVyYW5kcy5z
aXplfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICAgIAorICAgIGlmIG1hc2su
aXNfYT8gSW1tZWRpYXRlIGFuZCBtYXNrLnZhbHVlID09IC0xCisgICAgICBpZiB2YWx1ZS5pc19h
PyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAidGVzdCN7eDg2U3VmZml4KGtpbmQpfSAj
e3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAg
ICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgImNtcCN7eDg2U3VmZml4KGtpbmQpfSAkMCwgI3t2
YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20u
cHV0cyAidGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje21hc2sueDg2T3BlcmFuZChraW5kKX0sICN7
dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRs
ZVg4NkJyYW5jaFRlc3QoYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2lu
ZCkKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzLmxhc3QuYXNtTGFi
ZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTZXRUZXN0KHNldE9wY29kZSwga2luZCkK
KyAgICBoYW5kbGVYODZUZXN0KGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3Bl
cmFuZHMubGFzdCkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3BCcmFuY2gob3Bjb2RlLCBi
cmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2Rl
LCBraW5kLCBvcGVyYW5kcy5zaXplIC0gMSkKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3
aGVuIDQKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAg
anVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNw
ZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0
LmFzbUxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9w
Y29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5kcy5zaXplID09IDQgYW5kIG9wZXJhbmRzWzFdID09
IG9wZXJhbmRzWzJdCisgICAgICAkYXNtLnB1dHMgIm5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiYWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAg
ICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKCJzdWIje3g4NlN1ZmZpeChraW5kKX0iLCBr
aW5kLCBvcGVyYW5kcy5zaXplIC0gMSkKKyAgICBlbmQKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUK
KyAgICB3aGVuIDQKKyAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMwor
ICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2Vs
Zi5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tqdW1w
VGFyZ2V0LmFzbUxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgbG93ZXJYODYKKyAgICAkYXNtLmNv
bW1lbnQgY29kZU9yaWdpblN0cmluZworICAgIGNhc2Ugb3Bjb2RlCisgICAgd2hlbiAiYWRkaSIs
ICJhZGRwIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19h
PyBJbW1lZGlhdGUKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lz
dGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQK
KyAgICAgICAgaWYgb3BlcmFuZHNbMF0udmFsdWUgPT0gMAorICAgICAgICAgIHVubGVzcyBvcGVy
YW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZsICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAkYXNtLnB1dHMgImxl
YWwgI3tvcGVyYW5kc1swXS52YWx1ZX0oI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSks
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZWxz
aWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisg
ICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAg
IHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20u
cHV0cyAibGVhbCAoI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgICBlbHNlCisgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFu
ZHNbMF0KKyAgICAgICAgICAkYXNtLnB1dHMgImFkZGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50
KX0iCisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAgd2hlbiAiYW5kaSIsICJhbmRwIgorICAg
ICAgaGFuZGxlWDg2T3AoImFuZGwiLCA6aW50KQorICAgIHdoZW4gImxzaGlmdGkiCisgICAgICBo
YW5kbGVYODZTaGlmdCgic2FsbCIsIDppbnQpCisgICAgd2hlbiAibXVsaSIKKyAgICAgIGlmIG9w
ZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAg
ICRhc20ucHV0cyAiaW11bGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50LCA6aW50KX0iCisgICAg
ICBlbHNlCisgICAgICAgICMgRklYTUU6IGNvdWxkIGRvIHNvbWUgcGVlcGhvbGUgaW4gY2FzZSB0
aGUgbGVmdCBvcGVyYW5kIGlzIGltbWVkaWF0ZSBhbmQgaXQncworICAgICAgICAjIGEgcG93ZXIg
b2YgdHdvLgorICAgICAgICBoYW5kbGVYODZPcCgiaW11bGwiLCA6aW50KQorICAgICAgZW5kCisg
ICAgd2hlbiAibmVnaSIKKyAgICAgICRhc20ucHV0cyAibmVnbCAje3g4Nk9wZXJhbmRzKDppbnQp
fSIKKyAgICB3aGVuICJub3RpIgorICAgICAgJGFzbS5wdXRzICJub3RsICN7eDg2T3BlcmFuZHMo
OmludCl9IgorICAgIHdoZW4gIm9yaSIsICJvcnAiCisgICAgICBoYW5kbGVYODZPcCgib3JsIiwg
OmludCkKKyAgICB3aGVuICJyc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNhcmwiLCA6
aW50KQorICAgIHdoZW4gInVyc2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNocmwiLCA6
aW50KQorICAgIHdoZW4gInN1YmkiLCAic3VicCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0g
MyBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJuZWds
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICRhc20ucHV0cyAiYWRk
bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgICAgZWxzZQorICAgICAgICBoYW5kbGVYODZPcCgic3VibCIsIDppbnQp
CisgICAgICBlbmQKKyAgICB3aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICBoYW5kbGVYODZPcCgi
eG9ybCIsIDppbnQpCisgICAgd2hlbiAibG9hZGkiLCAic3RvcmVpIiwgImxvYWRwIiwgInN0b3Jl
cCIKKyAgICAgICRhc20ucHV0cyAibW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAg
ICB3aGVuICJsb2FkYiIKKyAgICAgICRhc20ucHV0cyAibW92emJsICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdo
ZW4gImxvYWRicyIKKyAgICAgICRhc20ucHV0cyAibW92c2JsICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4g
ImxvYWRoIgorICAgICAgJGFzbS5wdXRzICJtb3Z6d2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDpoYWxmKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9h
ZGhzIgorICAgICAgJGFzbS5wdXRzICJtb3Zzd2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpo
YWxmKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAic3RvcmVi
IgorICAgICAgJGFzbS5wdXRzICJtb3ZiICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0iCisg
ICAgd2hlbiAibG9hZGQiLCAibW92ZWQiLCAic3RvcmVkIgorICAgICAgJGFzbS5wdXRzICJtb3Zz
ZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJhZGRkIgorICAg
ICAgJGFzbS5wdXRzICJhZGRzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAg
ICB3aGVuICJkaXZkIgorICAgICAgJGFzbS5wdXRzICJkaXZzZCAje3g4Nk9wZXJhbmRzKDpkb3Vi
bGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJzdWJkIgorICAgICAgJGFzbS5wdXRzICJzdWJzZCAj
e3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJtdWxkIgorICAgICAg
JGFzbS5wdXRzICJtdWxzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3
aGVuICJzcXJ0ZCIKKyAgICAgICRhc20ucHV0cyAic3FydHNkICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAg
d2hlbiAiY2kyZCIKKyAgICAgICRhc20ucHV0cyAiY3Z0c2kyc2QgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3
aGVuICJiZGVxIgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRlcSIp
CisgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0
cyAianAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLmFzbUxh
YmVsfSIKKyAgICAgICRhc20ucHV0cyAiamUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdp
biwgb3BlcmFuZHNbMl0pLmFzbUxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYi
KQorICAgIHdoZW4gImJkbmVxIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqbmUiLCA6
bm9ybWFsKQorICAgIHdoZW4gImJkZ3QiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImph
IiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGd0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFu
Y2goImphZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRsdCIKKyAgICAgIGhhbmRsZVg4NkRvdWJs
ZUJyYW5jaCgiamEiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGx0ZXEiCisgICAgICBoYW5kbGVY
ODZEb3VibGVCcmFuY2goImphZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkZXF1biIKKyAgICAg
IGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbmVxdW4i
CisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAg
IGlzRXF1YWwgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICAkYXNtLnB1dHMg
InVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAianAgI3tMYWJlbFJlZmVy
ZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICRhc20u
cHV0cyAiamUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNFcXVhbCkuYXNtTGFi
ZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAgICAkYXNtLnB1dHMgImpt
cCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgIGlzRXF1YWwubG93ZXIoIlg4NiIpCisg
ICAgd2hlbiAiYmRndHVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpyZXZl
cnNlKQorICAgIHdoZW4gImJkZ3RlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJq
YmUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJiZGx0dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVC
cmFuY2goImpiIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0ZXF1biIKKyAgICAgIGhhbmRsZVg4
NkRvdWJsZUJyYW5jaCgiamJlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJidGQyaSIKKyAgICAgICRh
c20ucHV0cyAiY3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgImNtcGwgJDB4
ODAwMDAwMDAgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0
cyAiamUgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAidGQyaSIKKyAgICAgICRh
c20ucHV0cyAiY3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiYmNkMmkiCisgICAgICAk
YXNtLnB1dHMgImN2dHRzZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJ0ZXN0bCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgJGFzbS5wdXRzICJqZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAg
ICAgICRhc20ucHV0cyAiY3Z0c2kyc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwg
JXhtbTciCisgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDpkb3VibGUpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgImpwICN7b3BlcmFuZHNbMl0uYXNt
TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJqbmUgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisg
ICAgd2hlbiAibW92ZHoiCisgICAgICAkYXNtLnB1dHMgInhvcnBkICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisg
ICAgd2hlbiAicG9wIgorICAgICAgJGFzbS5wdXRzICJwb3AgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICB3aGVuICJwdXNoIgorICAgICAgJGFzbS5wdXRzICJwdXNoICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6
eGkycCIKKyAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXSBhbmQg
b3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgInhvcmwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRzWzBdICE9IG9wZXJhbmRzWzFdCisgICAgICAgICRh
c20ucHV0cyAibW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgIGVuZAorICAg
IHdoZW4gIm5vcCIKKyAgICAgICRhc20ucHV0cyAibm9wIgorICAgIHdoZW4gImJpZXEiLCAiYnBl
cSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6aW50KQorICAgIHdoZW4gImJpbmVx
IiwgImJwbmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6aW50KQorICAgIHdo
ZW4gImJpYSIsICJicGEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphIiwgOmludCkKKyAg
ICB3aGVuICJiaWFlcSIsICJicGFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwg
OmludCkKKyAgICB3aGVuICJiaWIiLCAiYnBiIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJq
YiIsIDppbnQpCisgICAgd2hlbiAiYmliZXEiLCAiYnBiZXEiCisgICAgICBoYW5kbGVYODZJbnRC
cmFuY2goImpiZSIsIDppbnQpCisgICAgd2hlbiAiYmlndCIsICJicGd0IgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqZyIsIDppbnQpCisgICAgd2hlbiAiYmlndGVxIiwgImJwZ3RlcSIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmludCkKKyAgICB3aGVuICJiaWx0IiwgImJw
bHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsIiwgOmludCkKKyAgICB3aGVuICJiaWx0
ZXEiLCAiYnBsdGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbGUiLCA6aW50KQorICAg
IHdoZW4gImJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmJ5dGUpCisgICAg
d2hlbiAiYmJuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDpieXRlKQorICAg
IHdoZW4gImJiYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6Ynl0ZSkKKyAgICB3
aGVuICJiYmFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmJ5dGUpCisgICAg
d2hlbiAiYmJiIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDpieXRlKQorICAgIHdo
ZW4gImJiYmVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6Ynl0ZSkKKyAgICB3
aGVuICJiYmd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDpieXRlKQorICAgIHdo
ZW4gImJiZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmJ5dGUpCisgICAg
d2hlbiAiYmJsdCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6Ynl0ZSkKKyAgICB3
aGVuICJiYmx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsdGVxIiwgOmJ5dGUpCisg
ICAgd2hlbiAiYnRpbyIsICJidHBvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6
aW50KQorICAgIHdoZW4gImJ0aXMiLCAiYnRwcyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3Qo
ImpzIiwgOmludCkKKyAgICB3aGVuICJidGl6IiwgImJ0cHoiCisgICAgICBoYW5kbGVYODZCcmFu
Y2hUZXN0KCJqeiIsIDppbnQpCisgICAgd2hlbiAiYnRpbnoiLCAiYnRwbnoiCisgICAgICBoYW5k
bGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6aW50KQorICAgIHdoZW4gImJ0Ym8iCisgICAgICBoYW5k
bGVYODZCcmFuY2hUZXN0KCJqbyIsIDpieXRlKQorICAgIHdoZW4gImJ0YnMiCisgICAgICBoYW5k
bGVYODZCcmFuY2hUZXN0KCJqcyIsIDpieXRlKQorICAgIHdoZW4gImJ0YnoiCisgICAgICBoYW5k
bGVYODZCcmFuY2hUZXN0KCJqeiIsIDpieXRlKQorICAgIHdoZW4gImJ0Ym56IgorICAgICAgaGFu
ZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmJ5dGUpCisgICAgd2hlbiAiam1wIgorICAgICAgJGFz
bS5wdXRzICJqbXAgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hl
biAiYmFkZGlvIiwgImJhZGRwbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpv
IiwgOmludCkKKyAgICB3aGVuICJiYWRkaXMiLCAiYmFkZHBzIgorICAgICAgaGFuZGxlWDg2T3BC
cmFuY2goImFkZGwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJhZGRpeiIsICJiYWRkcHoiCisg
ICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYmFk
ZGlueiIsICJiYWRkcG56IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam56Iiwg
OmludCkKKyAgICB3aGVuICJic3ViaW8iCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpvIiwg
OmludCkKKyAgICB3aGVuICJic3ViaXMiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpzIiwg
OmludCkKKyAgICB3aGVuICJic3ViaXoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImp6Iiwg
OmludCkKKyAgICB3aGVuICJic3ViaW56IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbnoi
LCA6aW50KQorICAgIHdoZW4gImJtdWxpbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVs
bCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYm11bGlzIgorICAgICAgaGFuZGxlWDg2T3BCcmFu
Y2goImltdWxsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJibXVsaXoiCisgICAgICBoYW5kbGVY
ODZPcEJyYW5jaCgiaW11bGwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJtdWxpbnoiCisgICAg
ICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJib3Jp
byIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAiam8iLCA6aW50KQorICAgIHdoZW4g
ImJvcmlzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqcyIsIDppbnQpCisgICAg
d2hlbiAiYm9yaXoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImp6IiwgOmludCkK
KyAgICB3aGVuICJib3JpbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpueiIs
IDppbnQpCisgICAgd2hlbiAiYnJlYWsiCisgICAgICAkYXNtLnB1dHMgImludCAkMyIKKyAgICB3
aGVuICJjYWxsIgorICAgICAgJGFzbS5wdXRzICJjYWxsICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9w
ZXJhbmQoOmludCl9IgorICAgIHdoZW4gInJldCIKKyAgICAgICRhc20ucHV0cyAicmV0IgorICAg
IHdoZW4gImNpZXEiLCAiY3BlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGUi
LCA6aW50KQorICAgIHdoZW4gImNpbmVxIiwgImNwbmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29t
cGFyZVNldCgic2V0bmUiLCA6aW50KQorICAgIHdoZW4gImNpYSIsICJjcGEiCisgICAgICBoYW5k
bGVYODZJbnRDb21wYXJlU2V0KCJzZXRhIiwgOmludCkKKyAgICB3aGVuICJjaWFlcSIsICJjcGFl
cSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGFlIiwgOmludCkKKyAgICB3aGVu
ICJjaWIiLCAiY3BiIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YiIsIDppbnQp
CisgICAgd2hlbiAiY2liZXEiLCAiY3BiZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0
KCJzZXRiZSIsIDppbnQpCisgICAgd2hlbiAiY2lndCIsICJjcGd0IgorICAgICAgaGFuZGxlWDg2
SW50Q29tcGFyZVNldCgic2V0ZyIsIDppbnQpCisgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIK
KyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGdlIiwgOmludCkKKyAgICB3aGVuICJj
aWx0IiwgImNwbHQiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsIiwgOmludCkK
KyAgICB3aGVuICJjaWx0ZXEiLCAiY3BsdGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNl
dCgic2V0bGUiLCA6aW50KQorICAgIHdoZW4gInRpbyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3Qo
InNldG8iLCA6aW50KQorICAgIHdoZW4gInRpcyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNl
dHMiLCA6aW50KQorICAgIHdoZW4gInRpeiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoi
LCA6aW50KQorICAgIHdoZW4gInRpbnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIs
IDppbnQpCisgICAgd2hlbiAidGJvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDpi
eXRlKQorICAgIHdoZW4gInRicyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6Ynl0
ZSkKKyAgICB3aGVuICJ0YnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmJ5dGUp
CisgICAgd2hlbiAidGJueiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmJ5dGUp
CisgICAgd2hlbiAicGVlayIKKyAgICAgICRhc20ucHV0cyAibW92bCAje29wZXJhbmRzWzBdLnZh
bHVlICogNH0oJWVzcCksICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hl
biAicG9rZSIKKyAgICAgICRhc20ucHV0cyAibW92bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmludCl9LCAje29wZXJhbmRzWzFdLnZhbHVlICogNH0oJWVzcCkiCisgICAgd2hlbiAiY2RxaSIK
KyAgICAgICRhc20ucHV0cyAiY2RxIgorICAgIHdoZW4gImlkaXZpIgorICAgICAgJGFzbS5wdXRz
ICJpZGl2bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImZpaTJk
IgorICAgICAgJGFzbS5wdXRzICJtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0s
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIm1v
dmQgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNtLnB1
dHMgInBzbGxxICQzMiwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgInBvciAleG1tNywgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRh
c20ucHV0cyAibW92ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJtb3ZzZCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAicHNy
bHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAibW92c2QgJXhtbTcsICN7b3BlcmFuZHNb
Ml0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiYm8iCisgICAgICAkYXNtLnB1dHMgImpv
ICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJzIgorICAgICAgJGFzbS5wdXRz
ICJqcyAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJieiIKKyAgICAgICRhc20u
cHV0cyAianogI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYm56IgorICAgICAg
JGFzbS5wdXRzICJqbnogI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAibGVhaSIs
ICJsZWFwIgorICAgICAgJGFzbS5wdXRzICJsZWFsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAg
cmFpc2UgIkJhZCBvcGNvZGU6ICN7b3Bjb2RlfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFs
aXphdGlvbktpbmQuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorI2RlZmluZSBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
X2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2VudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7IENv
ZGVGb3JDYWxsLCBDb2RlRm9yQ29uc3RydWN0IH07CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisj
ZW5kaWYgLy8gQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAxMDY0MjMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBDb21tb25TbG93UGF0aHNfaAog
CiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU0FycmF5Lmgi
CiAKQEAgLTQxLDYgKzQyLDM4IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgQ29tbW9u
U2xvd1BhdGhzIHsKIAorQUxXQVlTX0lOTElORSBFeGVjU3RhdGUqIGFyaXR5Q2hlY2tGb3IoRXhl
Y1N0YXRlKiBleGVjLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgQ29kZVNwZWNpYWxpemF0
aW9uS2luZCBraW5kKQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhl
Yy0+Y2FsbGVlKCkpOworICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKKyAg
ICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5l
cmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgPSBleGVjLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOworCisgICAgLy8gVGhpcyBl
bnN1cmVzIGVub3VnaCBzcGFjZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBh
cmd1bWVudHMgcGFzc2VkIGJ5IHRoZSBjYWxsZXIuCisgICAgaWYgKCFyZWdpc3RlckZpbGUtPmdy
b3coZXhlYy0+cmVnaXN0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIG5l
d0NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpKTsKKworICAgIC8vIFRvbyBmZXcgYXJndW1lbnRzIC0tIGNvcHkgY2FsbCBm
cmFtZSBhbmQgYXJndW1lbnRzLCB0aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1bWVudHMgd2l0aCB1
bmRlZmluZWQuCisgICAgc2l6ZV90IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKKyAgICBSZWdpc3Rlciogc3JjID0gZXhl
Yy0+cmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0ZXIqIGRzdCA9IGV4ZWMtPnJlZ2lzdGVycygpICsg
ZGVsdGE7CisKKyAgICBpbnQgaTsKKyAgICBpbnQgZW5kID0gLUV4ZWNTdGF0ZTo6b2Zmc2V0Rm9y
KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKKyAgICBmb3IgKGkgPSAtMTsgaSA+PSBlbmQ7
IC0taSkKKyAgICAgICAgZHN0W2ldID0gc3JjW2ldOworCisgICAgZW5kIC09IGRlbHRhOworICAg
IGZvciAoIDsgaSA+PSBlbmQ7IC0taSkKKyAgICAgICAgZHN0W2ldID0ganNVbmRlZmluZWQoKTsK
KworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IEV4ZWNTdGF0ZTo6Y3JlYXRlKGRzdCk7CisgICAg
QVNTRVJUKCh2b2lkKiluZXdFeGVjIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOworICAgIHJldHVy
biBuZXdFeGVjOworfQorCiBBTFdBWVNfSU5MSU5FIGJvb2wgb3BJbnN0YW5jZU9mU2xvdyhFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgYmFzZVZhbCwgSlNWYWx1ZSBwcm90
bykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlzQ2VsbCgpIHx8ICFiYXNlVmFsLmlzQ2VsbCgpIHx8
ICFwcm90by5pc0NlbGwoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJERkdEcml2ZXIuaCIKKyNpbmNsdWRlICJFeGVjdXRpb25IYXJuZXNzLmgiCiAj
aW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAiSklURHJpdmVyLmgiCiAjaW5jbHVkZSAiUGFyc2Vy
LmgiCkBAIC04NCw3ICs4NSw3IEBAIEludHJpbnNpYyBOYXRpdmVFeGVjdXRhYmxlOjppbnRyaW5z
aWMoKSAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBzdGF0aWMgdm9pZCBqZXR0aXNvbkNvZGVCbG9j
ayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxUPiYgY29kZUJsb2NrKQogewotICAg
IEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7
CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmdldEpJVFR5
cGUoKSkpOwogICAgIEFTU0VSVChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwogICAgIE93blB0
cjxUPiBjb2RlQmxvY2tUb0pldHRpc29uID0gY29kZUJsb2NrLnJlbGVhc2UoKTsKICAgICBjb2Rl
QmxvY2sgPSBzdGF0aWNfcG9pbnRlcl9jYXN0PFQ+KGNvZGVCbG9ja1RvSmV0dGlzb24tPnJlbGVh
c2VBbHRlcm5hdGl2ZSgpKTsKQEAgLTE2Nyw5ICsxNjgsMzAgQEAgSlNPYmplY3QqIEV2YWxFeGVj
dXRhYmxlOjpjb21waWxlT3B0aW1pegogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBFdmFs
RXhlY3V0YWJsZTo6aml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAg
Ym9vbCByZXN1bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2V2YWxD
b2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7Cisg
ICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK2lubGluZSBjb25zdCBjaGFy
KiBzYW1wbGluZ0Rlc2NyaXB0aW9uKEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyAgICBz
d2l0Y2ggKGppdFR5cGUpIHsKKyAgICBjYXNlIEpJVENvZGU6OkludGVycHJldGVyVGh1bms6Cisg
ICAgICAgIHJldHVybiAiSW50ZXJwcmV0ZXIgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgY2Fz
ZSBKSVRDb2RlOjpCYXNlbGluZUpJVDoKKyAgICAgICAgcmV0dXJuICJCYXNlbGluZSBDb21waWxh
dGlvbiAoVE9UQUwpIjsKKyAgICBjYXNlIEpJVENvZGU6OkRGR0pJVDoKKyAgICAgICAgcmV0dXJu
ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwogSlNPYmplY3Qq
IEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNo
YWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAg
ICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2Vs
aW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlv
biAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdE
ZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VE
X1BBUkFNKGppdFR5cGUpOwpAQCAtMjEwLDcgKzIzMiw3IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0
YWJsZTo6Y29tcGlsZUludGVybmEKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICgh
aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoKmdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9q
aXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKCpn
bG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQog
ICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC0yOTUsOSArMzE3LDE1IEBAIEpTT2JqZWN0
KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGkKICAgICByZXR1cm4gZXJyb3I7CiB9CiAK
K3ZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFs
RGF0YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0
b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCiBK
U09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4
ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRU
eXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklU
Q29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZH
IENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lv
bihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkK
ICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC0zMzYsNyArMzY0LDcgQEAgSlNPYmplY3Qq
IFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQp
Ci0gICAgaWYgKCFqaXRDb21waWxlSWZBcHByb3ByaWF0ZSgqZ2xvYmFsRGF0YSwgbV9wcm9ncmFt
Q29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVG
b3JFeGVjdXRpb24oKmdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9y
Q2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTQxMiw3ICs0
NDAsNyBAQCBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpiCiAgICAgd2hp
bGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8
RnVuY3Rpb25Db2RlQmxvY2sqPihyZXN1bHQtPmFsdGVybmF0aXZlKCkpOwogICAgIEFTU0VSVChy
ZXN1bHQpOwotICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNl
bGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0
SklUVHlwZSgpKSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDM4LDYgKzQ2NiwxOCBA
QCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlT3B0CiAgICAgcmV0dXJuIGVy
cm9yOwogfQogCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1
bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0
Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJs
ZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwg
cmVzdWx0KTsKK30KKwordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25z
dHJ1Y3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0
Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0ZvckNv
bnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRo
QXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwogRnVuY3Rpb25Db2RlQmxvY2sq
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2NrV2l0aEJ5dGVjb2RlRm9yKENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKIHsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0g
YmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7CkBAIC00ODIsNyArNTIyLDcgQEAgUGFzc093blB0
cjxGdW5jdGlvbkNvZGVCbG9jaz4gRnVuY3Rpb25FeAogCiBKU09iamVjdCogRnVuY3Rpb25FeGVj
dXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAg
U2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGlu
ZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24g
KFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVz
Y3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9Q
QVJBTShleGVjKTsKQEAgLTUwNCw3ICs1NDQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRh
YmxlOjpjb21waWxlRm9yCiAgICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC0+
c2hhcmVkU3ltYm9sVGFibGUoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21w
aWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tG
b3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ss
IG1fc3ltYm9sVGFibGUsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhl
Y3V0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVG
b3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGpp
dFR5cGUsIENvZGVGb3JDYWxsKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNTI0
LDcgKzU2NCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKIAog
SlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFs
KEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2Rl
OjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24o
aml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAo
VE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lm
ICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTU0Niw3ICs1ODYs
NyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAgICAgbV9zeW1i
b2xUYWJsZSA9IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LT5zaGFyZWRTeW1ib2xUYWJsZSgpOwog
CiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlh
dGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2Rl
Rm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1i
b2xUYWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9y
Q29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xU
YWJsZSwgaml0VHlwZSwgQ29kZUZvckNvbnN0cnVjdCkpCiAgICAgICAgIHJldHVybiAwOwogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJ
KHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBFeGVjdXRh
YmxlX2gKIAogI2luY2x1ZGUgIkNhbGxEYXRhLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCkBAIC0zOSwxMiArNDAsMTIgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgRGVidWdnZXI7CiAgICAgY2xhc3MgRXZhbENvZGVCbG9jazsKICAgICBj
bGFzcyBGdW5jdGlvbkNvZGVCbG9jazsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsK
IAogICAgIHN0cnVjdCBFeGNlcHRpb25JbmZvOwogICAgIAotICAgIGVudW0gQ29kZVNwZWNpYWxp
emF0aW9uS2luZCB7IENvZGVGb3JDYWxsLCBDb2RlRm9yQ29uc3RydWN0IH07CiAgICAgZW51bSBD
b21waWxhdGlvbktpbmQgeyBGaXJzdENvbXBpbGF0aW9uLCBPcHRpbWl6aW5nQ29tcGlsYXRpb24g
fTsKIAogICAgIGlubGluZSBib29sIGlzQ2FsbChDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
CkBAIC0zMTksNiArMzIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNz
IEV2YWxFeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlw
ZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTMzOCw2ICszNDAsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNv
bk9wdGltaXplZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShK
U0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIEV2YWxDb2RlQmxvY2smIGdlbmVyYXRl
ZEJ5dGVjb2RlKCkKQEAgLTM4NCw2ICszODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9Owog
CiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGlj
OgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNDExLDYgKzQx
NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAg
ICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9p
ZCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgUHJvZ3JhbUNv
ZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAtNDUzLDYgKzQ1OCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4
ZWN1dGFibGUgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBT
Y3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTUwOCw2ICs1MTQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGlt
aXplZENvZGVGb3JDYWxsKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVG
b3JDYWxsKEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRl
ZEZvckNhbGwoKSBjb25zdApAQCAtNTM1LDYgKzU0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29k
ZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9y
Q29uc3RydWN0KEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVy
YXRlZEZvckNvbnN0cnVjdCgpIGNvbnN0CkBAIC01ODIsNiArNTkwLDE2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgICAgIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChn
bG9iYWxEYXRhKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
dm9pZCBqaXRDb21waWxlRm9yKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBDb2Rl
Rm9yQ2FsbCkgeworICAgICAgICAgICAgICAgIGppdENvbXBpbGVGb3JDYWxsKGdsb2JhbERhdGEp
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFT
U0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICAgICAgaml0Q29tcGlsZUZv
ckNvbnN0cnVjdChnbG9iYWxEYXRhKTsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIAogICAg
ICAgICBib29sIGlzR2VuZXJhdGVkRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNz
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRp
b25IYXJuZXNzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBFeGVjdXRpb25IYXJuZXNz
X2gKKyNkZWZpbmUgRXhlY3V0aW9uSGFybmVzc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0u
aD4KKworI2lmIEVOQUJMRShKSVQpCisKKyNpbmNsdWRlICJKSVREcml2ZXIuaCIKKyNpbmNsdWRl
ICJMTEludEVudHJ5cG9pbnRzLmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBl
bmFtZSBDb2RlQmxvY2tUeXBlPgoraW5saW5lIGJvb2wgcHJlcGFyZUZvckV4ZWN1dGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBK
SVRDb2RlJiBqaXRDb2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisjaWYgRU5BQkxF
KExMSU5UKQorICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkgeworICAg
ICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRlcnByZXRlci4KKyAgICAgICAg
TExJbnQ6OmdldEVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2Rl
KTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVy
Q29kZVB0cigpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmIC8vIEVOQUJM
RShMTElOVCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwg
Y29kZUJsb2NrLCBqaXRDb2RlLCBqaXRUeXBlKTsKK30KKworaW5saW5lIGJvb2wgcHJlcGFyZUZ1
bmN0aW9uRm9yRXhlY3V0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0
aW9uQ29kZUJsb2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHImIGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1i
b2xUYWJsZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5l
Q29kZShqaXRUeXBlKSkgeworICAgICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBp
bnRlcnByZXRlci4KKyAgICAgICAgTExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludChnbG9iYWxE
YXRhLCBraW5kLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBjb2Rl
QmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oa2luZCk7Cisj
ZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorICAgIHJldHVybiBqaXRDb21waWxlRnVuY3Rpb25JZkFw
cHJvcHJpYXRlKGdsb2JhbERhdGEsIGNvZGVCbG9jaywgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0
eUNoZWNrLCBzeW1ib2xUYWJsZSwgaml0VHlwZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKworI2VuZGlmIC8vIEV4ZWN1dGlvbkhhcm5lc3NfaAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAko
cmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3Rp
dmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIAogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3Rl
ckFycmF5ID0gYWRvcHRBcnJheVB0cihuZXcgV3JpdGVCYXJyaWVyPFVua25vd24+W3JlZ2lzdGVy
QXJyYXlTaXplXSk7CiAgICAgICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzID0g
cmVnaXN0ZXJBcnJheS5nZXQoKSArIHJlZ2lzdGVyT2Zmc2V0OwotCisgICAgICAgIAogICAgICAg
ICAvLyBDb3B5IGFsbCBhcmd1bWVudHMgdGhhdCBjYW4gYmUgY2FwdHVyZWQgYnkgbmFtZSBvciBi
eSB0aGUgYXJndW1lbnRzIG9iamVjdC4KICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX251
bUNhcHR1cmVkQXJnczsgKytpKSB7CiAgICAgICAgICAgICBpbnQgaW5kZXggPSBDYWxsRnJhbWU6
OmFyZ3VtZW50T2Zmc2V0KGkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
QXJyYXkuaAkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgIGNsYXNzIEpTQXJyYXk7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogCiAgICAgc3RydWN0IFNwYXJzZUFycmF5RW50cnkgOiBwdWJsaWMgV3JpdGVCYXJyaWVy
PFVua25vd24+IHsKICAgICAgICAgdHlwZWRlZiBXcml0ZUJhcnJpZXI8VW5rbm93bj4gQmFzZTsK
QEAgLTEyMiw2ICsxMjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3Mg
SlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdhbGtlcjsKIAog
ICAgIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5o
CShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsMTAgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0gICAgY2xhc3MgU3RydWN0dXJlOworICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7
CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CisgICAgY2xhc3MgU3RydWN0dXJlOwogCiAg
ICAgZW51bSBFbnVtZXJhdGlvbk1vZGUgewogICAgICAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0
aWVzLApAQCAtMTY0LDYgKzE2NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
Ym9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBwcml2YXRlOgorICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAg
ICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0
cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiAr
MzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAg
ICBjbGFzcyBKU0FjdGl2YXRpb247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAg
ICAgY2xhc3MgU291cmNlQ29kZTsKICAgICBuYW1lc3BhY2UgREZHIHsKQEAgLTE0MCw2ICsxNDEs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihK
U0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9Q
UklWQVRFIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIAogICAgICAgICBz
dGF0aWMgSlNWYWx1ZSBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3Qg
SWRlbnRpZmllciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQx
LDggQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgICwga2V5
d29yZHMoYWRvcHRQdHIobmV3IEtleXdvcmRzKHRoaXMpKSkKICAgICAsIGludGVycHJldGVyKDAp
CiAgICAgLCBoZWFwKHRoaXMsIGhlYXBTaXplKQorICAgICwganNBcnJheUNsYXNzSW5mbygmSlNB
cnJheTo6c19pbmZvKQorICAgICwganNGaW5hbE9iamVjdENsYXNzSW5mbygmSlNGaW5hbE9iamVj
dDo6c19pbmZvKQogI2lmIEVOQUJMRShERkdfSklUKQogICAgICwgc2l6ZU9mTGFzdFNjcmF0Y2hC
dWZmZXIoMCkKICNlbmRpZgpAQCAtMjE2LDcgKzIxOCw3IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9i
YWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICBqaXRTdHVicyA9IGFkb3B0UHRyKG5ldyBKSVRUaHVu
a3ModGhpcykpOwogI2VuZGlmCiAKLSAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSh0aGlzLT5j
YW5Vc2VKSVQoKSk7CisgICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUoJmxsaW50RGF0YSwgdGhp
cy0+Y2FuVXNlSklUKCkpOwogCiAgICAgaGVhcC5ub3RpZnlJc1NhZmVUb0NvbGxlY3QoKTsKIH0K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShy
ZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTUgKzMwLDE2IEBACiAjZGVmaW5lIEpTR2xv
YmFsRGF0YV9oCiAKICNpbmNsdWRlICJDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgiCi0j
aW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNp
bmNsdWRlICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1
ZGUgIlN0cm9uZy5oIgorI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkpJVFN0dWJz
LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1
ZGUgIk51bWVyaWNTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVk
ZSAiU3Ryb25nLmgiCiAjaW5jbHVkZSAiVGVybWluYXRvci5oIgogI2luY2x1ZGUgIlRpbWVvdXRD
aGVja2VyLmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgpAQCAtNjUsNiArNjYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVj
dDsKICAgICBjbGFzcyBLZXl3b3JkczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAg
ICBjbGFzcyBSZWdFeHBDYWNoZTsKQEAgLTI0MSw2ICsyNDMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEhlYXAgaGVhcDsKIAogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKKworICAg
ICAgICBjb25zdCBDbGFzc0luZm8qIGNvbnN0IGpzQXJyYXlDbGFzc0luZm87CisgICAgICAgIGNv
bnN0IENsYXNzSW5mbyogY29uc3QganNGaW5hbE9iamVjdENsYXNzSW5mbzsKKworICAgICAgICBM
TEludDo6RGF0YSBsbGludERhdGE7CisKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZXR1cm5B
ZGRyZXNzUHRyIGV4Y2VwdGlvbkxvY2F0aW9uOwogICAgICAgICBKU1ZhbHVlIGhvc3RDYWxsUmV0
dXJuVmFsdWU7CkBAIC0zNDYsNiArMzU0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjdW5kZWYgcmVn
aXN0ZXJUeXBlZEFycmF5RnVuY3Rpb24KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU0dsb2JhbERh
dGEoR2xvYmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUpOwogICAgICAgICBz
dGF0aWMgSlNHbG9iYWxEYXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwogICAgICAgICB2
b2lkIGNyZWF0ZU5hdGl2ZVRodW5rKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5
cGU7CiAgICAgY2xhc3MgR2V0dGVyU2V0dGVyOwogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JD
b25zdHJ1Y3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFJlZ0V4
cENvbnN0cnVjdG9yOwpAQCAtMzM1LDYgKzMzNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZFN0YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJ
bmZvKiwgaW50IGNvdW50KTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogRm9sZCBy
ZXNldCBpbnRvIGluaXQuCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdChKU09i
amVjdCogdGhpc1ZhbHVlKTsKICAgICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9u
IDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
R2V0dGVyU2V0dGVyOwogICAgIGNsYXNzIEhhc2hFbnRyeTsKICAgICBjbGFzcyBJbnRlcm5hbEZ1
bmN0aW9uOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJr
ZWRCbG9jazsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVy
dHlOYW1lQXJyYXk7CkBAIC0yNzAsNiArMjcxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEpTT2JqZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5U3RvcmFnZSBpbmxp
bmVTdG9yYWdlKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIg
YXNrIGFueSBvZiB0aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25vd24gdG8g
YmUgYSBKU09iamVjdC4KICAgICAgICAgdXNpbmcgSlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcjsK
ICAgICAgICAgdXNpbmcgSlNDZWxsOjppc0dldHRlclNldHRlcjsKQEAgLTM4Miw2ICszODUsOCBA
QCBDT01QSUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIHN0YXRp
YyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgZXhwbGljaXQg
SlNGaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0
dXJlKQogICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5s
aW5lU3RvcmFnZSkKICAgICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkocmV2aXNpb24gMTA2NDIz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yIDog
cHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC05Niw2ICs5Nyw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHBy
b3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpOwogCiAgICAgICAg
IFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FjaGVkU3RydWN0dXJlOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxMDY0MjMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTU3RyaW5nOwor
ICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIEpTU3RyaW5nKiBqc0VtcHR5
U3RyaW5nKEpTR2xvYmFsRGF0YSopOwogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNT
dGF0ZSopOwpAQCAtMjQwLDYgKzI0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0
aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2
YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAg
ICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNvbHZlUm9wZShFeGVjU3RhdGUq
KSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlOChMQ2hhciopIGNvbnN0
OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2UoVUNoYXIqKSBjb25zdDsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDEw
NjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMTsgLy8gV2ViQ29yZSB1c2VzIE1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQgdG8gbWFrZSBkb2N1bWVudC5hbGwgdW5kZXRlY3RhYmxlLgogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPSAxIDw8IDE7CiAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIE92ZXJyaWRlc0hhc0luc3RhbmNlID0gMSA8PCAyOwpAQCAtODcsNiAr
ODksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAg
IGJvb2wgaXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnIDw9
ICgxIDw8IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBmbGFnOyB9CiAgICAgICAgIGJvb2wgaXNTZXRP
bkZsYWdzMih1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnID49ICgxIDw8IDgpKTsg
cmV0dXJuIG1fZmxhZ3MyICYgKGZsYWcgPj4gOCk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYs
MTAgKzExNiw5IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEUKICAg
ICByZXR1cm4gSlNOb3RBbk9iamVjdDo6Y3JlYXRlKGV4ZWMpOwogfQogCi0jaWZuZGVmIE5ERUJV
RwogY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogewotICAgIHN0YXRpYyBjb25zdCBzaXpl
X3Qgc2l6ZSA9IDY0OworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZSA9IDEyODsKICAgICBz
dGF0aWMgY2hhciBkZXNjcmlwdGlvbltzaXplXTsKIAogICAgIGlmICghKnRoaXMpCkBAIC0xMjgs
MTQgKzEyNywxNCBAQCBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiAgICAgICAgIHNucHJp
bnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiSW50MzI6ICVkIiwgYXNJbnQzMigpKTsKICAgICBlbHNl
IGlmIChpc0RvdWJsZSgpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc25wcmludGYo
ZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVsZiwgJWx4IiwgYXNEb3VibGUoKSwgcmVpbnRl
cnByZXREb3VibGVUb0ludHB0cihhc0RvdWJsZSgpKSk7CisgICAgICAgIHNucHJpbnRmKGRlc2Ny
aXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbHgsICVsZiIsIHJlaW50ZXJwcmV0RG91YmxlVG9JbnRw
dHIoYXNEb3VibGUoKSksIGFzRG91YmxlKCkpOwogI2Vsc2UKICAgICAgICAgdW5pb24gewogICAg
ICAgICAgICAgZG91YmxlIGFzRG91YmxlOwogICAgICAgICAgICAgdWludDMyX3QgYXNUd29JbnQz
MnNbMl07CiAgICAgICAgIH0gdTsKICAgICAgICAgdS5hc0RvdWJsZSA9IGFzRG91YmxlKCk7Ci0g
ICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICUwOHg6JTA4
eCIsIGFzRG91YmxlKCksIHUuYXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0pOworICAg
ICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJTA4eDolMDh4LCAlbGYi
LCB1LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdLCBhc0RvdWJsZSgpKTsKICNlbmRp
ZgogICAgIH0gZWxzZSBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9u
LCBzaXplLCAiQ2VsbDogJXAiLCBhc0NlbGwoKSk7CkBAIC0xNTIsNyArMTUxLDYgQEAgY2hhciog
SlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogCiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQotI2Vu
ZGlmCiAKIC8vIFRoaXMgaW4gdGhlIFRvSW50MzIgb3BlcmF0aW9uIGlzIGRlZmluZWQgaW4gc2Vj
dGlvbiA5LjUgb2YgdGhlIEVDTUEtMjYyIHNwZWMuCiAvLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRp
b24gaXMgaWRlbnRpY2FsIHRvIFRvVUludDMyIG90aGVyIHRoYW4gdG8gaW50ZXJwcmV0YXRpb24K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHJldmlzaW9uIDEw
NjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjMyLDkgKzIzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU0Nl
bGwqIGFzQ2VsbCgpIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFs
aWRDYWxsZWUoKTsKIAotI2lmbmRlZiBOREVCVUcKICAgICAgICAgY2hhciogZGVzY3JpcHRpb24o
KTsKLSNlbmRpZgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpT
VmFsdWUoV3JpdGVCYXJyaWVyQmFzZTxUPik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiAxMDY0MjMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTM4LDEwICszOCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBSZWdpc3RlcjsKIAogICAgIGNsYXNz
IEpTVmFyaWFibGVPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNl
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlz
aW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxMCBAQCB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rp
b25Gb3JDb25zdHJ1Y3RJbmxpCiAKIHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOwogCitp
bnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworaW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CitpbnQzMl90IGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwpAQCAtMTM3LDYgKzE0MSwxMCBAQCB2b2lkIGlu
aXRpYWxpemVPcHRpb25zKCkKICAgICAKICAgICBTRVQobWF4aW11bUlubGluaW5nRGVwdGgsIDUp
OwogCisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwLCAgICAg
LTEwMCk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29v
biwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOworICAgIFNFVChleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JKSVRTb29uLCAgICAgICAgICAgIC0xMDApOworCiAgICAgU0VUKGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAsICAgICAtMTAwMCk7CiAg
ICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwLCAt
NTAwMCk7CiAgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRp
bWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CkBAIC0xODUsNiAr
MTkzLDggQEAgdm9pZCBpbml0aWFsaXplT3B0aW9ucygpCiAgICAgaWYgKGNwdXNUb1VzZSA8IDEp
CiAgICAgICAgIGNwdXNUb1VzZSA9IDE7CiAgICAgCisgICAgY3B1c1RvVXNlID0gMTsKKyAgICAK
ICAgICBTRVQobnVtYmVyT2ZHQ01hcmtlcnMsIGNwdXNUb1VzZSk7CiAKICAgICBBU1NFUlQoZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24gPD0gZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2
ICszNywxMCBAQCBleHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RyCiAKIGV4
dGVybiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsgLy8gRGVwdGggb2YgaW5saW5lIHN0
YWNrLCBzbyAxID0gbm8gaW5saW5pbmcsIDIgPSBvbmUgbGV2ZWwsIGV0Yy4KIAorZXh0ZXJuIGlu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitleHRlcm4gaW50
MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CitleHRlcm4g
aW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBleHRlcm4gaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogZXh0ZXJuIGlu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7CiBl
eHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1l
U29vbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJ
KHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3Bl
Q2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAg
Y2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNs
YXNzIFNjb3BlQ2hhaW5JdGVyYXRvcjsKICAgICBjbGFzcyBTbG90VmlzaXRvcjsKICAgICAKQEAg
LTkxLDYgKzkyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlRE
QVRBIGNvbnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgc3RhdGlj
IGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbjsK
ICAgICB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw3ICszMjIsNyBAQCBTdHJ1Y3R1
cmUqIFN0cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgICAgICAgICB0cmFuc2l0aW9u
LT5ncm93UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICAgICAgcmV0dXJuIHRyYW5zaXRp
b247CiAgICAgfQotCisgICAgCiAgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gY3JlYXRlKGds
b2JhbERhdGEsIHN0cnVjdHVyZSk7CiAKICAgICB0cmFuc2l0aW9uLT5tX2NhY2hlZFByb3RvdHlw
ZUNoYWluLnNldE1heUJlTnVsbChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUtPm1f
Y2FjaGVkUHJvdG90eXBlQ2hhaW4uZ2V0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFy
cmF5RGF0YTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJ
bmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwg
Y29uc3QgVHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYpOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3Ry
dWN0dXJlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVD
aGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZUNoYWluLmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAg
ICAgY2xhc3MgU3RydWN0dXJlOwogCiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMg
SlNDZWxsIHsKQEAgLTc0LDYgKzc1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAog
ICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CisgICAgICAgIAogICAgICAgICBTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1
cmUqKTsKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3du
QXJyYXlQdHI8V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvSW5saW5lQVNNLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9JbmxpbmVBU00uaAkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9JbmxpbmVBU00uaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNCAr
NzAsMTEgQEAKICNkZWZpbmUgSElERV9TWU1CT0wobmFtZSkKICNlbmRpZgogCisvLyBGSVhNRTog
ZmlndXJlIG91dCBob3cgdGhpcyB3b3JrcyBvbiBhbGwgdGhlIHBsYXRmb3Jtcy4gSSBrbm93IHRo
YXQKKy8vIG9uIExpbnV4LCB0aGUgcHJlZmVycmVkIGZvcm0gaXMgIi5Mc3R1ZmYiIGFzIG9wcG9z
ZWQgdG8gIkxzdHVmZiIuCisvLyBEb24ndCBrbm93IGFib3V0IGFueSBvZiB0aGUgb3RoZXJzLgor
I2lmIFBMQVRGT1JNKE1BQykKKyNkZWZpbmUgTE9DQUxfTEFCRUxfU1RSSU5HKG5hbWUpICJMIiAj
bmFtZQorI2VuZGlmCisKICNlbmRpZiAvLyBJbmxpbmVBU01faApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MjMsNiArOTIzLDE4IEBA
CiAjZGVmaW5lIEVOQUJMRV9KSVQgMQogI2VuZGlmCiAKKy8qIE9uIHNvbWUgb2YgdGhlIHBsYXRm
b3JtcyB3aGVyZSB3ZSBoYXZlIGEgSklULCB3ZSB3YW50IHRvIGFsc28gaGF2ZSB0aGUgCisgICBs
b3ctbGV2ZWwgaW50ZXJwcmV0ZXIuICovCisjaWYgIWRlZmluZWQoRU5BQkxFX0xMSU5UKSAmJiBF
TkFCTEUoSklUKSAmJiBPUyhEQVJXSU4pICYmIChDUFUoWDg2KSB8fCBDUFUoQVJNX1RIVU1CMikp
ICYmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIEVOQUJMRV9MTElOVCAxCisjZW5kaWYKKwor
LyogSWYgd2UgaGF2ZSBMTEludCBlbmFibGVkIGFuZCB0aGUgSklUIGVuYWJsZWQsIHdlIGFsc28g
ZW5hYmxlIE9TUmluZyBmcm9tCisgICBMTEludCB0byB0aGUgSklULiAqLworI2lmICFkZWZpbmVk
KEVOQUJMRV9MTElOVF9PU1JfVE9fSklUKSAmJiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoTExJTlQp
CisjZGVmaW5lIEVOQUJMRV9MTElOVF9PU1JfVE9fSklUIDEKKyNlbmRpZgorCiAjaWYgIWRlZmlu
ZWQoRU5BQkxFX0RGR19KSVQpICYmIEVOQUJMRShKSVQpCiAvKiBFbmFibGUgdGhlIERGRyBKSVQg
b24gWDg2IGFuZCBYODZfNjQuICBPbmx5IHRlc3RlZCBvbiBNYWMgYW5kIEdOVS9MaW51eC4gKi8K
ICNpZiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpICYmIChQTEFURk9STShNQUMpIHx8IE9TKExJ
TlVYKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtl
ZExpc3QuaAkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9T
ZW50aW5lbExpbmtlZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsOCBAQCBwdWJs
aWM6CiAKICAgICBpdGVyYXRvciBiZWdpbigpOwogICAgIGl0ZXJhdG9yIGVuZCgpOworICAgIAor
ICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIGJlZ2luKCkgPT0gZW5kKCk7IH0KIAogcHJpdmF0
ZToKICAgICBSYXdOb2RlIG1faGVhZFNlbnRpbmVsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00
Myw2ICs0Myw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZTdHJpbmcgKiBDRlN0cmkKIC8v
IExhbmRpbmcgdGhlIGZpbGUgbW92ZXMgaW4gb25lIHBhdGNoLCB3aWxsIGZvbGxvdyBvbiB3aXRo
IHBhdGNoZXMgdG8gY2hhbmdlIHRoZSBuYW1lc3BhY2VzLgogbmFtZXNwYWNlIEpTQyB7CiBzdHJ1
Y3QgSWRlbnRpZmllckNTdHJpbmdUcmFuc2xhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJZGVudGlmaWVyQ2hhckJ1ZmZlclRy
YW5zbGF0b3I7CiBzdHJ1Y3QgSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyVHJhbnNsYXRvcjsKIH0K
QEAgLTcyLDcgKzczLDggQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgZnJpZW5kIHN0cnVjdCBX
VEY6OlN1YnN0cmluZ1RyYW5zbGF0b3I7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6OlVDaGFyQnVm
ZmVyVHJhbnNsYXRvcjsKICAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKLQorICAg
IGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKIHByaXZhdGU6
CiAgICAgZW51bSBCdWZmZXJPd25lcnNoaXAgewogICAgICAgICBCdWZmZXJJbnRlcm5hbCwKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAxLTI2ICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgSlNDIHNob3VsZCBiZSBhIHRyaXBsZS10
aWVyIFZNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03
NTgxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAwNzk2OTQ+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCBFRkwncyBidWlsZCBzeXN0
ZW0gdG8gaW5jbHVkZSBhIG5ldyBkaXJlY3RvcnkgaW4gSmF2YVNjcmlwdENvcmUuCisgICAgICAg
IAorICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBubyBiZWhhdmlvciBjaGFuZ2VkLgorCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMTItMDEtMzEgIFJheW1vbmQgTGl1ICA8cmF5
bW9uZC5saXVAaW50ZWwuY29tPgogCiAgICAgICAgIER5bmFtaWMgYWxsb2NhdGUgQXVkaW9CdXMg
d2l0aCByZXF1aXJlZCBudW1iZXIgb2YgY2hhbm5lbHMgZm9yIEF1ZGlvTm9kZUlucHV0CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgU0VUKFdlYkNv
cmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdn
ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2ppdCIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50Igog
ICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vcHJvZmlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpJbmRl
eDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMjYgIEZpbGlwIFBpemxvICA8
ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIg
Vk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEy
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1aWxkIHN5c3RlbSB0
byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4KKyAgICAgICAgCisg
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMTItMDEtMTEgIEphY2t5IEppYW5nICA8emhh
amlhbmdAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gQVNTRVJUIGZhaWx1cmUgaW4g
QmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFZpc2libGVDb250ZW50cygpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgU0VUKFdlYktpdF9JTkNMVURFX0RJ
UkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vaml0IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9wYXJzZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxl
ciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUiCkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDY0MjMpCisr
KyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0w
MS0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91
bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQg
RUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3Jp
cHRDb3JlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0Ogor
CiAyMDEyLTAxLTMxICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04gKFdlYktpdDIpOiBldmVudC5rZXlDb2RlIGlzIGFsd2F5cyB6ZXJvIHdo
ZW4gdHlwaW5nIGluIFJ1c3NpYW4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFr
ZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDEwNjQyMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjgsMTAgKzY4LDEyIEBAIFNFVChEdW1w
UmVuZGVyVHJlZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0FQSQogICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9hc3NlbWJsZXIKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUKICAgICAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vZGZnCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2hlYXAKICAg
ICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaml0CisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50CiAgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L3J1bnRpbWUKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGlu
Z0hlYWRlcnMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vd3RmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124875</attachid>
            <date>2012-01-31 20:14:51 -0800</date>
            <delta_ts>2012-01-31 23:23:21 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_83.diff</filename>
            <type>text/plain</type>
            <size>490735</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5OSBA
QAorMjAxMi0wMS0zMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi52c3Byb3BzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9jb3B5LWZpbGVzLmNtZDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogYXNz
ZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmLmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlckNvZGVQdHIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oOiBBZGRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3Rh
dHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkNh
bGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6aXNTZXQpOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6b3BlcmF0b3IhKToKKyAgICAgICAgKENhbGxMaW5rU3RhdHVz
KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpD
b2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6dW5saW5rQ2FsbHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVu
bGlua0luY29taW5nQ2FsbHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAg
ICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
Q29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6Ompp
dENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUlt
cGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVu
aXR5KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChDb2RlQmxvY2spOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpiYXNlbGluZVZlcnNpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpbmtJbmNvbWlu
Z0NhbGwpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpoYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRk
UHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRk
R2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRM
TEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVz
b2x2ZUluZm8pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9mTWV0aG9kQ2FsbExp
bmtJbmZvcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlUHJlZGljdGlv
bkZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rh
a2VTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y291bGRUYWtlU2xvd0Nhc2Up
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZVNwZWNpYWxGYXN0Q2FzZSk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VBbnlTbG93Q2FzZSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YWRkRnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZG9udEpJVEFueXRpbWVTb29uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpqaXRBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0U29vbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGxpbnRFeGVjdXRlQ291bnRlcik6CisgICAgICAgIChQ
cm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKEV2YWxDb2RlQmxvY2spOgorICAgICAgICAoRnVu
Y3Rpb25Db2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgor
ICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1
czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6Ondhc1NlZW5J
bkpJVCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0
cnVjdGlvbi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246Oklu
c3RydWN0aW9uKToKKyAgICAgICAgKEluc3RydWN0aW9uKToKKyAgICAgICAgKCk6CisgICAgICAg
ICogYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaDogQWRkZWQuCisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6TExJbnRDYWxsTGlua0luZm8pOgorICAg
ICAgICAoTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5m
bzo6fkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86
OmlzTGlua2VkKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OnVubGluayk6Cisg
ICAgICAgICogYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlND
OjpNZXRob2RDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUv
T3Bjb2RlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoKToKKyAgICAgICAgKiBieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVz
Ojpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmg6CisgICAg
ICAgIChQdXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpkdW1wc0dlbmVyYXRlZENvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29s
dmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFz
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlz
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENhdGNoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRm
Zy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2Rl
KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKCk6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoKToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAoSGVhcCk6
CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAoSlNDOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgor
ICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJyZW50VlBD
KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAo
SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5o
OgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmlsZSk6CisgICAgICAgICogaml0
L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKiBq
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgor
ICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKToKKyAg
ICAgICAgKEpJVENvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZSk6
CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAgICAgICAqIGppdC9KSVREcml2
ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUpOgorICAgICAgICAo
SlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKiBqaXQvSklU
RXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93KToKKyAgICAgICAgKiBqaXQv
SklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAqIGxs
aW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAg
ICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6
fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChEYXRhKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxMSW50OjpE
YXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZ1bmN0aW9u
RW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFdmFsRW50cnlwb2ludCk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAgICogbGxp
bnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChM
TEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBs
bGludC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxlcik6CisgICAgICAgIChKU0M6
OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cp
OgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmNwcDog
QWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFj
ZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpzaG91bGRK
SVQpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmVudHJ5T1NSKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnJlc29sdmVHbG9iYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0
QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9zdENhbGwpOgorICAgICAgICAo
SlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWNDYWxs
KToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRkZWQuCisgICAgICAgIChKU0Mp
OgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludE9mZnNldHNFeHRyYWN0b3IpOgor
ICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KToKKyAgICAgICAgKG1h
aW4pOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDogQWRkZWQuCisgICAgICAgIChM
TEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RB
cml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZXZhbEVudHJ5
VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6cHJvZ3JhbUVudHJ5VGh1bmtH
ZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5j
cHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQu
CisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12
Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tl
bmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRy
YWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJi
OiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vb3B0LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3BhcnNl
ci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9yZWdpc3RlcnMucmI6IEFkZGVkLgor
ICAgICAgICAqIG9mZmxpbmVhc20vc2VsZl9oYXNoLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZs
aW5lYXNtL3NldHRpbmdzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3RyYW5zZm9y
bS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYucmI6IEFkZGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgICgpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6Cisg
ICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zvcik6CisgICAgICAgIChD
b21tb25TbG93UGF0aHMpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OmpldHRpc29uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFi
bGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6c2FtcGxpbmdE
ZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFs
KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoRXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAoUHJvZ3JhbUV4ZWN1
dGFibGUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1
dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwcmVw
YXJlRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0
aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNDOjpK
U0FjdGl2YXRpb246OnRlYXJPZmYpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxs
Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQ2VsbCk6CisgICAg
ICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNG
dW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbERhdGEuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0dsb2JhbERhdGEpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKCk6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgIChKU0Zp
bmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKToKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNTdHJp
bmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKFR5cGVJbmZvKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6ZGVzY3JpcHRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNWYWx1ZS5oOgorICAgICAgICAoSlNWYWx1ZSk6CisgICAgICAgICgpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTVmFyaWFibGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6Cisg
ICAgICAgIChPcHRpb25zKToKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlv
bnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAoT3B0aW9ucyk6Cisg
ICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAo
U2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoU3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAqIHd0Zi9JbmxpbmVBU00uaDoKKyAgICAg
ICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg6
CisgICAgICAgIChTZW50aW5lbExpbmtlZExpc3QpOgorICAgICAgICAoV1RGOjpTZW50aW5lbExp
bmtlZExpc3Q6OmlzRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChTdHJpbmdJbXBsKToKKyAgICAgICAgKCk6CisKIDIwMTIt
MDEtMzEgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBhcHBsZS5jb20+CiAKICAgICAgICAgU3Ry
aW5nUHJvdG9GdW5jVG9VcHBlckNhc2Ugc2hvdWxkIGNhbGwgU3RyaW5nSW1wbDo6dXBwZXIgc2lt
aWxhciB0byBTdHJpbmdQcm90b1RvTG93ZXJDYXNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAgU0VUKEphdmFT
Y3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9s
bGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3BhcnNlciIKICAgICAiJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcnVudGlt
ZSIKQEAgLTk1LDYgKzk2LDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBpbnRl
cnByZXRlci9SZWdpc3RlckZpbGUuY3BwCiAKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5j
cHAKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKICAgICBqaXQvSklUQXJpdGhtZXRp
YzMyXzY0LmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljLmNwcAogICAgIGppdC9KSVRDYWxsMzJf
NjQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAx
MDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTU3LDYgKzU3LDcgQEAgamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlciBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdCBcCisJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIgXAogCS1JJChzcmNkaXIpL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9TSDRBc3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29u
dmVudGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBcCkBA
IC0xMDIsNiArMTAzLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTElu
dENhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGluZUlu
Zm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5m
by5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua0lu
Zm8uaCBcCkBAIC0yNzcsNiArMjc5LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Db21wYWN0SklUQ29kZU1hcC5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRBcml0aG1ldGljLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJf
NjQuY3BwIFwKQEAgLTMwMCw2ICszMDQsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4zMi9z
dGRib29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4zMi9zdGRpbnQuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggXApAQCAtMzUwLDYgKzM1
NSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FsbERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBcCkBAIC0z
NzgsNiArMzg0LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRpb25IYXJuZXNzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5wcmkJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAgSU5DTFVERVBBVEgg
Kz0gXAogICAgICQkU09VUkNFX0RJUi9kZWJ1Z2dlciBcCiAgICAgJCRTT1VSQ0VfRElSL2ludGVy
cHJldGVyIFwKICAgICAkJFNPVVJDRV9ESVIvaml0IFwKKyAgICAkJFNPVVJDRV9ESVIvbGxpbnQg
XAogICAgICQkU09VUkNFX0RJUi9wYXJzZXIgXAogICAgICQkU09VUkNFX0RJUi9wcm9maWxlciBc
CiAgICAgJCRTT1VSQ0VfRElSL3J1bnRpbWUgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5w
cmkJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJp
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcgQEAgU09VUkNFUyArPSBcCiAgICAgaW50
ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JG
aXhlZFZNUG9vbC5jcHAgXAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBcCisgICAg
aml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKICAgICBqaXQvSklUQXJpdGhtZXRpYy5jcHAg
XAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwKICAgICBqaXQvSklUQ2FsbC5jcHAg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzU4LDYgKzE3NTgsMTAgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caml0XEhvc3RDYWxsUmV0dXJu
VmFsdWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxqaXRcSklULmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0xODQzLDYgKzE4NDcs
MTQgQEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKKwkJCU5hbWU9ImxsaW50
IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGxsaW50XExMSW50RGF0
YS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKIAkJCU5hbWU9
ImludGVycHJldGVyIgogCQkJPgogCQkJPEZpbGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVDb21t
b24udnNwcm9wcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMJ
KHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwkod29y
a2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJPFRvb2wKIAkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7
Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29tcGlsZXIvOy4uLy4u
L2RmZy87Li4vLi4vaml0LzsuLi8uLi9ydW50aW1lLzsuLi8uLi90b29scy87Li4vLi4vYnl0ZWNv
ZGUvOy4uLy4uL2ludGVycHJldGVyLzsuLi8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fz
c2VtYmxlci87Li4vLi4vZGVidWdnZXIvOy4uLy4uL2hlYXAvOyZxdW90OyQoV2ViS2l0TGlicmFy
aWVzRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRl
XHByaXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVv
dDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUm
cXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90
OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OyIKKwkJ
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4u
L0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL2RmZy87Li4vLi4v
aml0LzsuLi8uLi9sbGludC87Li4vLi4vcnVudGltZS87Li4vLi4vdG9vbHMvOy4uLy4uL2J5dGVj
b2RlLzsuLi8uLi9pbnRlcnByZXRlci87Li4vLi4vd3RmLzsuLi8uLi9wcm9maWxlcjsuLi8uLi9h
c3NlbWJsZXIvOy4uLy4uL2RlYnVnZ2VyLzsuLi8uLi9oZWFwLzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVk
ZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlJnF1
b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3Jl
JnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVv
dDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDsiCiAJ
CVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfX1NURF9DIgogCQlGb3JjZWRJbmNsdWRlRmlsZXM9
IklDVVZlcnNpb24uaCIKIAkvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZpbGVzLmNtZAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL2NvcHktZmlsZXMuY21kCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL2NvcHktZmlsZXMuY21k
CSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIGZvciAlJWQgaW4gKAogICAgIGRlYnVn
Z2VyCiAgICAgaW50ZXJwcmV0ZXIKICAgICBqaXQKKyAgICBsbGludAogICAgIHBhcnNlcgogICAg
IHByb2ZpbGVyCiAgICAgcnVudGltZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsMTUg
QEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAq
LworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAw
RjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovOworCQkJYnVpbGRQaGFzZXMgPSAo
CisJCQkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNl
cyAqLywKKwkJCSk7CisJCQluYW1lID0gIkxMSW50IE9mZnNldHMiOworCQkJcHJvZHVjdE5hbWUg
PSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKIAkJNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCIC8q
IERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKIAkJ
CWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2NUZCM0Y3NzA5RDExRUJEMDBGNDlERUIgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkRlcml2ZWQgU291
cmNlcyIgKi87CkBAIC0xNCw2ICsyMyw5IEBACiAJCQkJNjVGQjNGNjUwOUQxMUU5MTAwRjQ5REVC
IC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk1RDM1REVFMTBDN0MxNDBCMDA4
NjQ4QjIgLyogR2VuZXJhdGUgRFRyYWNlIGhlYWRlciAqLywKIAkJCSk7CisJCQlkZXBlbmRlbmNp
ZXMgPSAoCisJCQkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8sCisJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcHJvZHVjdE5h
bWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJfTsKQEAgLTQ4LDYgKzYwLDEwIEBACiAJCTBCQUM5
NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0
MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCQ0Q4MzU3MTQ4NTg0NTIwMEVBMjAw
MyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYy
OEEyOTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyog
U2l6ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTElu
dEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAq
LzsgfTsKKwkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk2MTRC
Q0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8q
IExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi87IH07
CisJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTgxNEJDRjQ1QTAwODg1
QjRGIC8qIExMSW50VGh1bmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBNTE0QkNG
NTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlcklu
Zm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4
M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAv
KiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdl
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC01OCw5ICs3NCwxMyBAQAogCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2Fs
bExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjcxNEJD
RjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xv
YmFsUmVzb2x2ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwRkM0NTgxNEJE
MTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8q
IENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTZENzI2
MTQyQzM5QzAwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZl
Y3Rvci5jcHAgKi87IH07CiAJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjY2
MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhl
Y3V0aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RDE0
QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRC
IC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNv
ZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjI0MkRB
NzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAwN0FE
RDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU2RjE0NzM4RjMxMDAxMjFFNEYgLyogREZH
Q29kZUJsb2Nrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU3MDE0NzM4RjM1
MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJs
b2Nrcy5jcHAgKi87IH07CkBAIC03MSw2ICs5MSwxOSBAQAogCQkwRjQzMTczODE0NkJBQzY5MDA3
RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5k
bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3
MiAvKiBKSVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Njgw
N0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBB
MzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RjE0
QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLzsgc2V0dGluZ3MgPSB7Q09NUElM
RVJfRkxBR1MgPSAiLVduby11bnVzZWQtcGFyYW1ldGVyIjsgfTsgfTsKKwkJMEY0NjgwQTUxNEJB
N0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVs
cGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTExNEJB
N0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi87IH07CisJCTBGNDY4
MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3
MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0IxNEJC
QjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8q
IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbElu
dGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAq
LzsgfTsKKwkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM4
MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDIxNEJCRDE2NTAwQkZF
MjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLzsg
fTsKKwkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0YxNEJCQjNEMTAwQkZF
MjcyIC8qIExMSW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZh
bHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLzsgfTsK
KwkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEQxMTRCQkM1
RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1NUYwRjQxNEQxMDYzOTAwQUM3NjQ5IC8q
IEFic3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovOyB9Owog
CQkwRjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5
IC8qIEFic3RyYWN0UEMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFs
aXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1
RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzg3LDcgKzQyMCw3
IEBACiAJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUUxMTE3RTU3ODEw
MERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRj
aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJC
MDlCRTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87IH07CiAJCTg2QkIwOUMx
MTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVw
YXRjaC5oICovOyB9OwotCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2
RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyB9OworCQk4NkMzNkVF
QTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBN
YWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhE
RDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9OwogCQk4NkM1
NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3
RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3
RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5o
ICovOyB9OwpAQCAtNzU0LDYgKzc4NywyMCBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTBGNDY4
MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlp
c2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5
MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAx
OworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzI7CisJ
CQlyZW1vdGVJbmZvID0gIkxMSW50IE9mZnNldHMiOworCQl9OworCQkwRjQ2ODBCMzE0QkE4MjE0
MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29u
dGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMw
MkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90
ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyOworCQkJcmVtb3RlSW5m
byA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJMTQxMjE0QkUwQTQ5MTkwRTAw
NDgwMjU1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRh
aW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJB
QUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTc5OSw2ICs4NDYsMTUgQEAKIC8qIEVuZCBQ
QlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5RmlsZXNC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlG
aWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEv
OworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKIAkJNURCQjE1MTExMzFE
MEIxMzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhD
b3B5RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7CkBAIC04MzksNiAr
ODk1LDEwIEBACiAJCTBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlv
blZlcmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFJlc3Ry
aWN0aW9uVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJDRDgzNTQx
NDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUZW1wb3JhcnlDaGFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5
cG9pbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RW50
cnlwb2ludHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RW50cnlw
b2ludHMuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50VGh1bmtzLmNwcDsg
cGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50VGh1bmtzLmg7IHBhdGggPSBsbGludC9MTEludFRo
dW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBNTE0QkNGNTA0MDA4
ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29k
ZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTgxNEJDRjU1RTAw
ODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0FBMTRC
Q0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTg0OSw5ICs5MDksMTMgQEAKIAkJMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRG
IC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZXRob2RDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYw
QjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbFJlc29sdmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zm
c2V0VG9CeXRlY29kZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRDYWxsTGlua0luZm8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENv
bW1vblNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25T
bG93UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNkQ3MjQxNDJDMzlB
MjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIx
QzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpJVERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBF
eGVjdXRpb25IYXJuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1
dGlvbkhhcm5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0UxNEJF
QUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVDb252ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZl
c3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrUmVmZXJlbmNlSGFy
dmVzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZEMTQ3MzhGMkUw
MDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC04NjIsNiArOTI2LDIwIEBACiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5
MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDdG
MTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRFeGNlcHRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTElu
dE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRG
aWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0g
MDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0
aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEV4Y2Vw
dGlvbnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMu
aDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50SGVscGVycy5jcHA7IHBhdGgg
PSBsbGludC9MTEludEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50SGVscGVycy5oOyBwYXRoID0gbGxpbnQvTExJbnRIZWxw
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEExMTRCQTdGODIwMEJG
RTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgcGF0aCA9IGxsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMTEludENvbW1vbi5oOyBwYXRoID0gbGxpbnQvTExJbnRDb21tb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcy
IC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBMTEludE9mZmxpbmVBc21Db25maWcuaDsgcGF0aCA9IGxsaW50L0xMSW50T2ZmbGluZUFz
bUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNzE0QkJCMTY5
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmNwcDsgcGF0aCA9IGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmg7IHBhdGggPSBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnREYXRhLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RGF0
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENGMTRCQkIzRDEwMEJG
RTI3MiAvKiBMTEludERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJ
bnREYXRhLmg7IHBhdGggPSBsbGludC9MTEludERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSG9zdENhbGxSZXR1cm5W
YWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQxMTRCQkM1Rjgw
MEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RQQy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBD
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0UEMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5
dGVDb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNv
ZGVDYWNoZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVDb2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE1ODcsNiArMTY2NSwxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVu
Y2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCisJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJ
aXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFt
ZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTY0NSw2ICsxNzMwLDcgQEAKIAkJCQkxNDEy
MTEyMDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4Rjkw
MDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyog
dGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjc1LDYgKzE3NjEsNyBAQAogCQkJCUY1QzI5MEU2MDI4
NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4
MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZG
NjBGNyAvKiBjb25maWcuaCAqLywKKwkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxp
bnQgKi8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4
Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQz
QUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKQEAgLTE3MTQsNiArMTgwMSwyOCBAQAogCQkJdGFi
V2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkwRjQ2ODA5QzE0QkE3RjREMDBC
RkUyNzIgLyogbGxpbnQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAq
LywKKwkJCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICov
LAorCQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8sCisJ
CQkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8sCisJCQkJMEY0
NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0Yx
NEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovLAorCQkJCTBGNDY4MEM1MTRCQkIxNjkw
MEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovLAorCQkJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3
MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLywKKwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8sCisJCQkJMEY0NjgwQzgxNEJCQjE2
OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8sCisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50SGVscGVycy5oICovLAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGlu
dDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3MjYw
MDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0xNzQ4LDYgKzE4NTcsOCBAQAogCQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkgLyog
aml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2
ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJ
MEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJ
CQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJ
MEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4
MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTIxNzUs
NiArMjI4Niw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3OTE0QkU3
MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovLAorCQkJCTBGMjFDMjdB
MTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8sCiAJCQkJMEYxNUYxNUQx
NEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovLAogCQkJCUJDRjYwNTExMEUy
MDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBC
OUE2NEQgLyogQXJnTGlzdC5oICovLApAQCAtMjU0Nyw2ICsyNjYwLDggQEAKIAkJOTY5QTA3OEYw
RUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVD
b252ZW50aW9ucy5oICovLAorCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENh
bGxMaW5rSW5mby5oICovLAogCQkJCTBGOTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlu
a1N0YXR1cy5jcHAgKi8sCiAJCQkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5r
U3RhdHVzLmggKi8sCiAJCQkJMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0
dXMuY3BwICovLApAQCAtMzA5Nyw3ICszMjEyLDE2IEBACiAJCQkJODY3MDRCOEExMkRCQTMzNzAw
QTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI0MzEyREI4
QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
MTVGMTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNl
cHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyog
TExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3
MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENE
MTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAq
LywKKwkJCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50
cnlwb2ludHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAv
KiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTcxNEJDRjUwNzAwODg1
QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4
ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1
QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTMx
MDYsNyArMzIzMCwxMSBAQAogCQkJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RD
YWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0
RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJD
Rjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0lu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVRE
cml2ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBF
eGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3RDE0QkU3MjdBMDBB
REM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYy
MUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGN0IyOTRBMTRDM0NEMjkwMDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmls
aXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRDMTRDM0NENDMwMDdDM0RCMSAvKiBE
RkdCeXRlQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMjUsNiArMzI1MywyNCBAQAog
LyogRW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYTmF0
aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xM
SW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJ
CWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0
c0V4dHJhY3RvciIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODA4QjE0QkE3RTVF
MDBCRkUyNzIgLyogU291cmNlcyAqLywKKwkJCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyog
RnJhbWV3b3JrcyAqLywKKwkJCQkwRjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVz
ICovLAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0g
KAorCQkJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICov
LAorCQkJKTsKKwkJCW5hbWUgPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0
TmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAw
RjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOwor
CQkJcHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKIAkJ
MTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhO
YXRpdmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQxMjExMzkwQTQ4Nzk4
NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0
ICJtaW5pZG9tIiAqLzsKQEAgLTMyNTEsMTEgKzMzOTcsMjkgQEAKIAkJCQkxNEJENTlCRTBBM0U4
RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk5MzJGNUJEQTA4MjJBMUM3MDA3MzY5NzUg
LyoganNjICovLAogCQkJCTY1MTEyMkY3MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICov
LAorCQkJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0
b3IgKi8sCisJCQkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8s
CiAJCQkpOwogCQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODBBQTE0QkE3RkQ5MDBC
RkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU2hl
bGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJ
CWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoU1JDUk9PVCkvbGxp
bnQvTG93TGV2ZWxBc3NlbWJsZXIuYXNtIiwKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIERl
cml2ZWQgU291cmNlcyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNU
U19ESVIpL0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmgiLAorCQkJKTsKKwkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jp
bi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9
L0xMSW50T2Zmc2V0cy9cIlxuXG4vdXNyL2Jpbi9lbnYgcnVieSBcIiR7U1JDUk9PVH0vb2ZmbGlu
ZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiXCIgXCIke1NSQ1JPT1R9L2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtXCIgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZz
ZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaFwiXG4iOworCQl9OwogCQkzNzEzRjAxNDE0MjkwNTI0
MDAzNjM4N0YgLyogQ2hlY2sgRm9yIEluYXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xhc3MgTmFt
ZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzM2MSw3ICszNTI1LDcgQEAKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9i
aW4vc2g7Ci0JCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElS
fS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9kb2NzXCJcbmNkIFwiJHtCVUlMVF9QUk9E
VUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlXCJcblxuL2Jpbi9sbiAtc2Zo
IFwiJHtTUkNST09UfVwiIEphdmFTY3JpcHRDb3JlXG5leHBvcnQgSmF2YVNjcmlwdENvcmU9XCJK
YXZhU2NyaXB0Q29yZVwiXG5leHBvcnQgQlVJTFRfUFJPRFVDVFNfRElSPVwiLi4vLi5cIlxuXG5t
YWtlIC0tbm8tYnVpbHRpbi1ydWxlcyAtZiBcIkphdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2VcIiAtaiBgL3Vzci9zYmluL3N5c2N0bCAtbiBody5uY3B1YFxuIjsKKwkJCXNoZWxsU2Ny
aXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0ph
dmFTY3JpcHRDb3JlL2RvY3NcIlxuY2QgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmVcIlxuXG4vYmluL2xuIC1zZmggXCIke1NSQ1JPT1R9XCIgSmF2
YVNjcmlwdENvcmVcbmV4cG9ydCBKYXZhU2NyaXB0Q29yZT1cIkphdmFTY3JpcHRDb3JlXCJcbmV4
cG9ydCBCVUlMVF9QUk9EVUNUU19ESVI9XCIuLi8uLlwiXG5cbm1ha2UgLS1uby1idWlsdGluLXJ1
bGVzIC1mIFwiSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNyL3Ni
aW4vc3lzY3RsIC1uIGh3Lm5jcHVgXG5cbi91c3IvYmluL2VudiBydWJ5IEphdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYXNtLnJiIEphdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuYXNtICR7QlVJTFRfUFJPRFVDVFNfRElSfS9KU0NMTEludE9mZnNldHNFeHRyYWN0b3IgTExJ
bnRBc3NlbWJseS5oXG4iOwogCQl9OwogCQk5MzE5NTg2QjA5RDlGOTFBMDBBNTZGRDQgLyogQ2hl
Y2sgRm9yIEdsb2JhbCBJbml0aWFsaXplcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlw
dEJ1aWxkUGhhc2U7CkBAIC0zMzk2LDYgKzM1NjAsMTQgQEAKIC8qIEVuZCBQQlhTaGVsbFNjcmlw
dEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBz
ZWN0aW9uICovCisJCTBGNDY4MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovID0gewor
CQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUQwQTQ4Nzkz
QzAwNDgwMjU1IC8qIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFz
ZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zNjUzLDcgKzM4MjUsMTQg
QEAKIAkJCQk4NjcwNEI4NjEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk4NjcwNEI4OTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCNDIxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhD
aGVja2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAv
KiBMTEludEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTgxNEJBN0ZBQjAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODA4
MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2Fs
bFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4
NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlD
MTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjBCODNCMDE0QkNGNzE2MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMEI4M0I0MTRCQ0Y4NjAwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRjY5RTg2QzMxNEM2RTU1MTAwMkMyQzYyIC8qIE51bWJlck9m
Q29yZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNjc4LDYgKzM4NTcsMTYgQEAKIC8qIEVuZCBQ
QlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERlcGVu
ZGVuY3kgc2VjdGlvbiAqLworCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0
RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJn
ZXQgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLzsKKwkJCXRh
cmdldFByb3h5ID0gMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLzsKKwkJfTsKKwkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0
ID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAq
LzsKKwkJCXRhcmdldFByb3h5ID0gMEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKIAkJMTQxMjE0QkYwQTQ5MTkwRTAwNDgwMjU1IC8qIFBC
WFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5Owog
CQkJdGFyZ2V0ID0gMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi87CkBAIC0z
NzExLDYgKzM5MDAsMTUwIEBACiAvKiBFbmQgUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMEY0NjgwOTYx
NEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRI
UyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09Q
WV9QSEFTRV9TVFJJUCA9IE5POworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7
CisJCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQ
VElPTlMgPSBZRVM7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BS
RVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJIkRFQlVHPTEiLAorCQkJCQkiJChpbmhl
cml0ZWQpIiwKKwkJCQkpOworCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gTk87CisJ
CQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJ
CUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJP
VVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9U
WVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVB
REVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQki
JChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFS
Q0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7
CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IE5POworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdF
VF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hf
UEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURF
Ul9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4
MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNF
Ul9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJ
CQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQg
PSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5
OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9O
ID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9U
T18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJP
VE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFU
SFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVD
VFNfRElSKS9MTEludE9mZnNldHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJ
CU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9
IE5POworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9
IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07
CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8q
IFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlB
UkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAg
PSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7
CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09C
SkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxl
cnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04g
PSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJ
R0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZB
UklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJ
CQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRz
IiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RF
UExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gTk87CisJCQkJ
UFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4Owor
CQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUg
PSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0
aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0g
IiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsK
KwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlH
Q0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENF
UFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZt
LmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POwor
CQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FS
Tl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUg
PSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJ
CQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJ
CQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVO
VF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJ
CQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBp
Y3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFU
SFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUQxNEJB
N0ZEOTAwQkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNv
dXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODBBRTE0
QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZl
ZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2
ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9
ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJ
fTsKKwkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJP
RFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJv
ZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjExM0EwQTQ4Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovID0g
ewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewpA
QCAtMzk1Miw2ICs0Mjg1LDI4IEBACiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlv
biAqLwogCiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMEY0Njgw
OUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0
aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovID0geworCQkJaXNhID0gWEND
b25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0Njgw
OTYxNEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MDk3MTRCQTdFNUUwMEJG
RTI3MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9m
aWxpbmcgKi8sCisJCQkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8s
CisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUMxNEJBN0ZE
OTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFy
Z2V0ICJMTEludCBPZmZzZXRzIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7
CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3
MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAq
LywKKwkJCQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBG
NDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1
bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFt
ZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi8gPSB7
CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5o
CShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xp
bmtCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2RlZmluZSBHTE9C
QUxfVEhVTktfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+
KC0xKSkKICNkZWZpbmUgUkVHRVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KC0yKSkKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+Cisj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHJldmlzaW9uIDEwNjQyMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Myw2ICsyNzMsMTQgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CisgICAgCisg
ICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJl
c3Modm9pZCogdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVS
KHZhbHVlKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdDsKKyAgICAgICAg
cmVzdWx0Lm1fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAK
ICAgICBleHBsaWNpdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoUmV0dXJuQWRkcmVzc1B0ciByYSkK
ICAgICAgICAgOiBtX3ZhbHVlKHJhLnZhbHVlKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQnl0ZWNvZGVDb252ZW50aW9uc19oCisjZGVm
aW5lIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCisvLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4g
Ynl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0
aGVpciByYW5nZXM6CisvLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5k
aWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBm
cmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgorLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYg
IEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZh
cnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgorLy8gICAg
ICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAw
IHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgor
c3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7
CisKKyNlbmRpZiAvLyBCeXRlY29kZUNvbnZlbnRpb25zX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAx
MDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNyArMjcsNDAgQEAKICNpbmNsdWRlICJDYWxsTGlu
a1N0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTExJbnRDYWxs
TGlua0luZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7Cisg
ICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKyAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJ
bmZvID0gaW5zdHJ1Y3Rpb25bNF0udS5jYWxsTGlua0luZm87CisgICAgCisgICAgcmV0dXJuIENh
bGxMaW5rU3RhdHVzKGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCksIGZhbHNlKTsK
KyNlbHNlCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKKyNlbmRpZgorfQor
CiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHBy
b2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBF
TkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgcmV0dXJuIENhbGxMaW5r
U3RhdHVzKAotICAgICAgICBwcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJ
bmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0KCksCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmNvdWxk
VGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKTsKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51
bWJlck9mQ2FsbExpbmtJbmZvcygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChw
cm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KTsKKyAgICAKKyAgICBpZiAocHJvZmlsZWRCbG9j
ay0+Y291bGRUYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCisgICAgICAgIHJldHVybiBDYWxs
TGlua1N0YXR1cygwLCB0cnVlKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBwcm9m
aWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUu
Z2V0KCk7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50
KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIHJldHVybiBDYWxsTGlu
a1N0YXR1cyh0YXJnZXQsIGZhbHNlKTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVz
KDAsIGZhbHNlKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
NywxNSArNDcsMTcgQEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBj
b21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAg
IGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbFRhcmdldDsgfQorICAgIGJvb2wg
aXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbFRhcmdldCB8fCBtX2NvdWxkVGFrZVNsb3dQ
YXRoOyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxs
VGFyZ2V0OyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsg
fQogICAgIAogICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2Nv
dWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCiAgICAgSlNGdW5jdGlvbiogY2FsbFRhcmdldCgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMg
Q2FsbExpbmtTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4KTsKKyAgICAKICAgICBKU0Z1bmN0aW9uKiBtX2NhbGxUYXJnZXQ7CiAgICAgYm9v
bCBtX2NvdWxkVGFrZVNsb3dQYXRoOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIs
NiArNDIsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0YXRpY1Nj
b3BlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiVVN0cmlu
Z0NvbmNhdGVuYXRlLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTU5LDggKzYwLDYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiB1c2luZyBuYW1lc3BhY2UgREZHOwogI2VuZGlmCiAKLSNpZiAhZGVmaW5l
ZChOREVCVUcpIHx8IEVOQUJMRShPUENPREVfU0FNUExJTkcpCi0KIHN0YXRpYyBVU3RyaW5nIGVz
Y2FwZVF1b3Rlcyhjb25zdCBVU3RyaW5nJiBzdHIpCiB7CiAgICAgVVN0cmluZyByZXN1bHQgPSBz
dHI7CkBAIC0zNTgsMTAgKzM1NywxMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUq
IGV4ZWMpIGNvCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXpl
KCk7IGkgKz0gb3Bjb2RlTGVuZ3Roc1tleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChp
bnN0cnVjdGlvbnMoKVtpXS51Lm9wY29kZSldKQogICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7
CiAKLSAgICBwcmludGYoIiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBw
YXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKVxuXG4iLAorICAgIHByaW50ZigiJWx1
IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2Fs
bGVlIHJlZ2lzdGVyKHMpOyAlZCB2YXJpYWJsZShzKVxuXG4iLAogICAgICAgICBzdGF0aWNfY2Fz
dDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbkNvdW50KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8
dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9u
KSksCi0gICAgICAgIHRoaXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMp
OworICAgICAgICB0aGlzLCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBt
X251bVZhcnMpOwogCiAgICAgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgYmVn
aW4gPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNv
bnN0X2l0ZXJhdG9yIGVuZCA9IGluc3RydWN0aW9ucygpLmVuZCgpOwpAQCAtODk4LDYgKzg5Nywx
NCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAg
ICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlv
biIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4
ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWw6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9u
LCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAg
ICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVy
aWMiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI4Niw4ICsxMjkzLDYgQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgIH0KIH0KIAotI2VuZGlmIC8vICFk
ZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQogI2lmIERVTVBfQ09E
RV9CTE9DS19TVEFUSVNUSUNTCiBzdGF0aWMgSGFzaFNldDxDb2RlQmxvY2sqPiBsaXZlQ29kZUJs
b2NrU2V0OwogI2VuZGlmCkBAIC0xNDU3LDYgKzE0NjIsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9j
ayhDb3B5UGFyc2VkQmxvY2tUYWcsCiB7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1Q
YXJhbWV0ZXJzKCkpOwogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldh
cm1VcCgpOwogICAgIAogICAgIGlmIChvdGhlci5tX3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0
ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTE1MDUsNiArMTUxMSw3IEBAIENvZGVCbG9jazo6
Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAg
IAogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogCiAj
aWYgRFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJQ1MKICAgICBsaXZlQ29kZUJsb2NrU2V0LmFkZCh0
aGlzKTsKQEAgLTE1MjIsNyArMTUyOSwxMSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2lm
IEVOQUJMRShWRVJCT1NFX1ZBTFVFX1BST0ZJTEUpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsK
ICNlbmRpZgotICAgIAorCisjaWYgRU5BQkxFKExMSU5UKSAgICAKKyAgICB3aGlsZSAobV9pbmNv
bWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAg
ICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7CisjZW5kaWYgLy8g
RU5BQkxFKExMSU5UKQogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gV2UgbWF5IGJlIGRlc3Ryb3ll
ZCBiZWZvcmUgYW55IENvZGVCbG9ja3MgdGhhdCByZWZlciB0byB1cyBhcmUgZGVzdHJveWVkLgog
ICAgIC8vIENvbnNpZGVyIHRoYXQgdHdvIENvZGVCbG9ja3MgYmVjb21lIHVucmVhY2hhYmxlIGF0
IHRoZSBzYW1lIHRpbWUuIFRoZXJlCkBAIC0xNzM0LDggKzE3NDUsNjkgQEAgdm9pZCBDb2RlQmxv
Y2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgYm9v
bCB2ZXJib3NlVW5saW5raW5nID0gZmFsc2U7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVO
QUJMRShKSVQpCiAgICAgCisjaWYgRU5BQkxFKExMSU5UKQorICAgIEludGVycHJldGVyKiBpbnRl
cnByZXRlciA9IG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXI7CisgICAgLy8gaW50ZXJwcmV0ZXIt
PmVuYWJsZWQoKSByZXR1cm5zIHRydWUgaWYgdGhlIG9sZCBDKysgaW50ZXJwcmV0ZXIgaXMgZW5h
YmxlZC4gSWYgdGhhdCdzIGVuYWJsZWQKKyAgICAvLyB0aGVuIHdlJ3JlIG5vdCB1c2luZyBMTElu
dC4KKyAgICBpZiAoIWludGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXpl
X3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8
IHNpemU7ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0g
Jmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOworICAgICAg
ICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0u
dS5vcGNvZGUpKSB7CisgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25b
NF0udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1
Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVh
cmluZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3Mgd2l0aCBzdHJ1Y3R1cmUgJXAuXG4iLCBjdXJJbnN0
cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1
Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVj
dGlvbls1XS51Lm9wZXJhbmQgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAgICAgICBpZiAoSGVh
cDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAg
ICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0
dXJlLmdldCgpKQorICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0
cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpIHsKKyAgICAgICAg
ICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBwdXQgdHJhbnNpdGlvbiB3aXRoIHN0
cnVjdHVyZXMgJXAgLT4gJXAsIGNoYWluICVwLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdl
dCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25b
NF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls2
XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzdd
LnUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlv
blswXS51Lm9wY29kZSA9IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCks
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5z
dHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ld
XTsKKyAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1
Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsCisgICAgICAgICAgICAgICAg
ICAgfHwgaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2Rl
KSA9PSBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKKyAgICAgICAgICAgIGlmICghY3VySW5z
dHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25b
M10udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVh
cmluZyBMTEludCBnbG9iYWwgcmVzb2x2ZSBjYWNoZSB3aXRoIHN0cnVjdHVyZSAlcC5cbiIsIGN1
ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgICAgIGN1ckluc3Ry
dWN0aW9uWzNdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlv
bls0XS51Lm9wZXJhbmQgPSAwOworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAg
aWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhlYXA6OmlzTWFya2Vk
KG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKKyAgICAgICAgICAgICAg
ICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVh
cmluZyBMTEludCBjYWxsIGZyb20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2xs
aW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmICghIW1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlICYmICFIZWFwOjpp
c01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5nZXQoKSkpCisg
ICAgICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUuY2xl
YXIoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKICNpZiBF
TkFCTEUoREZHX0pJVCkKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2UgYXJl
LCB0aGVuIGpldHRpc29uLgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5l
c3NEdXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7CkBA
IC0xODU2LDEwICsxOTI4LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25n
UmVmZXIKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7
ICsraSkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAjaWYg
RU5BQkxFKElOVEVSUFJFVEVSKQotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZp
c2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uc1tpXV0pOwotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRT
dHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbnNbaV1dKTsKKyAgICBpZiAobV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+ZW5hYmxlZCgp
KSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVj
dHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bnNbaV1dKTsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3Ry
dWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRT
dHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbnNbaV1dKTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTg2
Nyw4ICsxOTQxLDkgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgog
ICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBleGVjdXRhYmxlcyB0aGF0IHdlIGhhdmUgaW5saW5l
ZCBkb24ndCBkaWUuCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGV5IHdvdWxkIGhhdmUgb3RoZXJ3
aXNlIGRpZWQsIHdlIHNob3VsZCBwcm9iYWJseSB0cmlnZ2VyIHJlY29tcGlsYXRpb24uCiAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5saW5lQ2FsbEZyYW1lcygpLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZyYW1lcygpW2ldLmV4
ZWN1dGFibGUpOwotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZXMo
KVtpXS5jYWxsZWUpOworICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lJiBpbmxpbmVDYWxsRnJh
bWUgPSBpbmxpbmVDYWxsRnJhbWVzKClbaV07CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgm
aW5saW5lQ2FsbEZyYW1lLmV4ZWN1dGFibGUpOworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQo
JmlubGluZUNhbGxGcmFtZS5jYWxsZWUpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCkBAIC0y
MDY4LDYgKzIxNDMsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIHsKICAgICBp
ZiAoISFtX2FsdGVybmF0aXZlKQogICAgICAgICBtX2FsdGVybmF0aXZlLT51bmxpbmtDYWxscygp
OworI2lmIEVOQUJMRShMTElOVCkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGxpbnRD
YWxsTGlua0luZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2xsaW50Q2FsbExpbmtJ
bmZvc1tpXS5pc0xpbmtlZCgpKQorICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0u
dW5saW5rKCk7CisgICAgfQorI2VuZGlmCiAgICAgaWYgKCEobV9jYWxsTGlua0luZm9zLnNpemUo
KSB8fCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAg
IGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKQEAgLTIwODIsMTAgKzIxNjMsMzkgQEAg
dm9pZCBDb2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIAogdm9pZCBDb2RlQmxvY2s6OnVubGlua0lu
Y29taW5nQ2FsbHMoKQogeworI2lmIEVOQUJMRShMTElOVCkKKyAgICB3aGlsZSAobV9pbmNvbWlu
Z0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAg
ICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+dW5saW5rKCk7CisjZW5kaWYKKyAgICBp
ZiAobV9pbmNvbWluZ0NhbGxzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIFJlcGF0
Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcih0aGlzKTsKICAgICB3aGlsZSAobV9pbmNvbWluZ0NhbGxz
LmJlZ2luKCkgIT0gbV9pbmNvbWluZ0NhbGxzLmVuZCgpKQogICAgICAgICBtX2luY29taW5nQ2Fs
bHMuYmVnaW4oKS0+dW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogfQorCit1
bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgUmV0dXJu
QWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAo
cmV0dXJuQWRkcmVzcy52YWx1ZSgpID49IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2JlZ2lu
KQorICAgICAgICAmJiByZXR1cm5BZGRyZXNzLnZhbHVlKCkgPD0gYml0d2lzZV9jYXN0PHZvaWQq
PigmbGxpbnRfZW5kKSkgeworICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkpOworICAg
ICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChK
SVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKKyAgICAgICAgSW5zdHJ1Y3Rp
b24qIGluc3RydWN0aW9uID0gZXhlYy0+Y3VycmVudFZQQygpOworICAgICAgICBBU1NFUlQoaW5z
dHJ1Y3Rpb24pOworICAgICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb24pOwor
ICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworI2VuZGlmCisgICAgaWYgKCFt
X3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gMTsKKyAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNl
dFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVy
bkluZGV4VmVjdG9yOworICAgIGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQorICAgICAgICByZXR1
cm4gMTsKKyAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2Rl
T2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4o
KSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVz
cy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OworfQogI2VuZGlmCiAKIHZvaWQgQ29kZUJsb2Nr
OjpjbGVhckV2YWxDYWNoZSgpCkBAIC0yMTgxLDI0ICsyMjkxLDQ1IEBAIGJvb2wgRnVuY3Rpb25D
b2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRoREYKIAogdm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqZXR0
aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJ
VCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsK
ICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxQcm9n
cmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2Rl
KCpnbG9iYWxEYXRhKCkpOwogfQogCiB2b2lkIEV2YWxDb2RlQmxvY2s6OmpldHRpc29uKCkKIHsK
LSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBB
U1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VS
VCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxl
Kj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEo
KSk7CiB9CiAKIHZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NF
UlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklU
Q29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09
IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93
bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yKCpnbG9iYWxEYXRhKCks
IG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7CiB9CisK
K3ZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRD
b21waWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJ
bXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgp
ID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxh
Y2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVy
RXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShnbG9iYWxEYXRhKTsKK30KKwordm9pZCBGdW5jdGlv
bkNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorewor
ICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cisg
ICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZUZvcihn
bG9iYWxEYXRhLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNh
bGwpOworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC0yMzAxLDYg
KzI0MzIsMTggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2ZpbGVzKCkKIH0KICNlbmRp
ZgogCit2b2lkIENvZGVCbG9jazo6aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHko
KQoreworI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKSAmJiAhRU5BQkxFKExMSU5UKQorICAg
IGlmIChCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBpZiAoISFhbHRlcm5hdGl2ZSgpKQorICAgICAgICBkaXNjYXJkQnl0ZWNvZGUo
KTsKKyAgICBlbHNlCisgICAgICAgIGRpc2NhcmRCeXRlY29kZUxhdGVyKCk7CisjZW5kaWYKK30K
KwogI2lmbmRlZiBOREVCVUcKIGJvb2wgQ29kZUJsb2NrOjp1c2VzT3Bjb2RlKE9wY29kZUlEIG9w
Y29kZUlEKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suaAkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaWZuZGVmIENv
ZGVCbG9ja19oCiAjZGVmaW5lIENvZGVCbG9ja19oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZl
bnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVy
bk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCkBAIC01
MCw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSklUV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludENh
bGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIK
ICNpbmNsdWRlICJQcmVkaWN0aW9uVHJhY2tlci5oIgpAQCAtNjUsMTYgKzY3LDExIEBACiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKLS8v
IFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVy
ZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKLS8vICAgICAgMHg4MDAwMDAw
MC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVy
IGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCi0vLyAg
ICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxs
RnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVu
Y3Rpb24ncyBjYWxsZnJhbWUuCi0vLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRp
dmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFu
dCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCi1zdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKLQogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFz
cyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBFeGVjU3Rh
dGU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgaW5saW5lIGludCB1
bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoaW50IGFyZ3VtZW50c1JlZ2lzdGVyKSB7IHJldHVy
biBhcmd1bWVudHNSZWdpc3RlciAtIDE7IH0KIApAQCAtODMsNiArODAsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXpl
ciwgcHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gQ29w
eVBhcnNlZEJsb2NrVGFnIHsgQ29weVBhcnNlZEJsb2NrIH07CiAgICAgcHJvdGVjdGVkOgpAQCAt
MTIzLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgd2hpbGUgKHJlc3Vs
dC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQtPmFsdGVy
bmF0aXZlKCk7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAgICAgICAgIEFTU0VS
VChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAg
ICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkp
KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMTM0
LDExICsxMzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1w
U3RhdGlzdGljcygpOwogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEVfT1BDT0RFX1NB
TVBMSU5HCiAgICAgICAgIHZvaWQgZHVtcChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdm9p
ZCBwcmludFN0cnVjdHVyZXMoY29uc3QgSW5zdHJ1Y3Rpb24qKSBjb25zdDsKICAgICAgICAgdm9p
ZCBwcmludFN0cnVjdHVyZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiosIGlu
dCBvcGVyYW5kKSBjb25zdDsKLSNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkg
Y29uc3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KIApAQCAtMTk0LDE1ICsxOTAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxNZXRob2RD
YWxsTGlua0luZm8sIHVuc2lnbmVkLCBnZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUluZGV4
PihtX21ldGhvZENhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNp
emUoKSwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQgYnl0
ZWNvZGVPZmZzZXQoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQotICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICAgICAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxs
SW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOwotICAgICAgICAg
ICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0g
ICAgICAgICAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2Rl
T2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4o
KSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVz
cy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OwotICAgICAgICB9CisgICAgICAgIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSosIFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAgICAg
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Rm9yQ2FsbEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAg
ICAgICAgIHsKQEAgLTIyMywxMSArMjExLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7
CiAgICAgICAgICAgICBtX2luY29taW5nQ2FsbHMucHVzaChpbmNvbWluZyk7CiAgICAgICAgIH0K
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHZvaWQgbGlua0luY29taW5nQ2FsbChMTEludENh
bGxMaW5rSW5mbyogaW5jb21pbmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faW5jb21pbmdM
TEludENhbGxzLnB1c2goaW5jb21pbmcpOworICAgICAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExM
SU5UKQogICAgICAgICAKICAgICAgICAgdm9pZCB1bmxpbmtJbmNvbWluZ0NhbGxzKCk7Ci0jZW5k
aWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5B
QkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgdm9pZCBzZXRKSVRDb2RlTWFw
KFBhc3NPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IGppdENvZGVNYXApCiAgICAgICAgIHsKICAg
ICAgICAgICAgIG1faml0Q29kZU1hcCA9IGppdENvZGVNYXA7CkBAIC0yMzYsNyArMjMwLDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2ppdENvZGVN
YXAuZ2V0KCk7CiAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAKKyNpZiBFTkFCTEUoREZHX0pJ
VCkKICAgICAgICAgdm9pZCBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKQogICAgICAgICB7CiAg
ICAgICAgICAgICBpZiAoISFtX2RmZ0RhdGEpCkBAIC0zMzUsMTIgKzMzMSwxMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAg
ICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNz
KQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0cnVj
dGlvbnMoKS5iZWdpbigpICYmIHJldHVybkFkZHJlc3MgPCBpbnN0cnVjdGlvbnMoKS5lbmQoKSk7
CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRy
ZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgICAgIH0KLSNlbmRpZgogCiAgICAg
ICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFy
ZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFy
ZUZ1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgeyBy
ZXR1cm4gbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KQEAgLTM1NCwxNyArMzQ5LDkgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIG1fc2hvdWxkRGlzY2FyZEJ5
dGVjb2RlID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlz
Y2FyZGluZ09wcG9ydHVuaXR5KCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCEhYWx0ZXJu
YXRpdmUoKSkKLSAgICAgICAgICAgICAgICBkaXNjYXJkQnl0ZWNvZGUoKTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBkaXNjYXJkQnl0ZWNvZGVMYXRlcigpOwotICAgICAgICB9
CisgICAgICAgIHZvaWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAg
ICAgICAgCi0jaWZuZGVmIE5ERUJVRwogICAgICAgICBib29sIHVzZXNPcGNvZGUoT3Bjb2RlSUQp
OwotI2VuZGlmCiAKICAgICAgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCgpIHsgcmV0dXJu
IG1faW5zdHJ1Y3Rpb25Db3VudDsgfQogICAgICAgICB2b2lkIHNldEluc3RydWN0aW9uQ291bnQo
dW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCkgeyBtX2luc3RydWN0aW9uQ291bnQgPSBpbnN0cnVj
dGlvbkNvdW50OyB9CkBAIC0zODcsNiArMzc0LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgeyByZXR1cm4gZ2V0
SklUQ29kZSgpLmdldEV4ZWN1dGFibGVNZW1vcnkoKTsgfQogICAgICAgICB2aXJ0dWFsIEpTT2Jq
ZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKikgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKSA9IDA7CisgICAgICAgIGJvb2wgaml0Q29t
cGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlm
IChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykgeworICAgICAgICAg
ICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGpp
dENvbXBpbGVJbXBsKGdsb2JhbERhdGEpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgPSAwOwogCiAg
ICAgICAgIGVudW0gQ29tcGlsZVdpdGhERkdTdGF0ZSB7CkBAIC00MDYsMTMgKzQwMiwxMyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGhhc09wdGltaXplZFJlcGxhY2VtZW50KCkK
ICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpC
YXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUo
Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHJlcGxhY2VtZW50KCkt
PmdldEpJVFR5cGUoKSA+IGdldEpJVFR5cGUoKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAg
ICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgp
LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKICAgICAgICAgICAgIGVsc2Ugewot
ICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklU
Q29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jh
c2VsaW5lQ29kZShyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgICAg
ICBBU1NFUlQocmVwbGFjZW1lbnQoKSA9PSB0aGlzKTsKICAgICAgICAgICAgIH0KICNlbmRpZgpA
QCAtNDcxLDE4ICs0NjcsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjbGVh
ckV2YWxDYWNoZSgpOwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICB2b2lkIGFk
ZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24odW5zaWduZWQgcHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJ
VCgpKQotICAgICAgICAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBwZW5k
KHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CiAgICAgICAg
IH0KICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24odW5zaWduZWQgZ2xv
YmFsUmVzb2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZ2xv
YmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5z
dHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAg
bV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rp
b24pOwogICAgICAgICB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
QXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CisjaWYgRU5BQkxFKExM
SU5UKQorICAgICAgICBMTEludENhbGxMaW5rSW5mbyogYWRkTExJbnRDYWxsTGlua0luZm8oKQor
ICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvcy5hcHBlbmQoTExJbnRD
YWxsTGlua0luZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gJm1fbGxpbnRDYWxsTGlua0luZm9z
Lmxhc3QoKTsKKyAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9p
ZCBzZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVjdHVy
ZVN0dWJJbmZvcy5ncm93KHNpemUpOyB9CkBAIC00OTEsOCArNDkwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5mbyh1bnNpZ25lZCBnbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2dsb2JhbERh
dGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLmFw
cGVuZChHbG9iYWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKKyAgICAg
ICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhnbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKICAgICAgICAgfQogICAgICAgICBHbG9iYWxSZXNvbHZl
SW5mbyYgZ2xvYmFsUmVzb2x2ZUluZm8oaW50IGluZGV4KSB7IHJldHVybiBtX2dsb2JhbFJlc29s
dmVJbmZvc1tpbmRleF07IH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5mb0F0Qnl0
ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAtNTAzLDYgKzUwMSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkTWV0aG9kQ2FsbExpbmtJbmZvcyh1
bnNpZ25lZCBuKSB7IEFTU0VSVChtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKTsgbV9tZXRob2RD
YWxsTGlua0luZm9zLmdyb3cobik7IH0KICAgICAgICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRo
b2RDYWxsTGlua0luZm8oaW50IGluZGV4KSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5mb3Nb
aW5kZXhdOyB9CisgICAgICAgIHNpemVfdCBudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MoKSB7
IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpOyB9CiAjZW5kaWYKICAgICAgICAg
CiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtNTQzLDYgKzU0MiwxMCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVPZmZz
ZXRdLnUub3Bjb2RlKSkgLSAxXS51LnByb2ZpbGUgPT0gcmVzdWx0KTsKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIH0KKyAgICAgICAgUHJlZGljdGVkVHlwZSB2YWx1ZVByb2Zp
bGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQpLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgfQogICAg
ICAgICAKICAgICAgICAgdW5zaWduZWQgdG90YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMoKQogICAg
ICAgICB7CkBAIC01NjksMTIgKzU3MiwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAg
ICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0g
cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50
ZXI7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xv
d0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4ZWN1
dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7
CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgY291bGRUYWtlU2xvd0Nhc2UoaW50
IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFy
ZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIHVuc2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0
aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91Ymxl
Pih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6Y291bGRUYWtlU2xv
d0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KQEAgLTU5MywxMiArNjAwLDE2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTcGVjaWFsRmFzdENh
c2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJl
ck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNl
UHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAg
ICAgICAgICAgcmV0dXJuIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRv
VGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4oc3BlY2lhbEZh
c3RDYXNlQ291bnQpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRv
VGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29s
IGxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3Vu
dCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9j
b3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVj
aWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2Nv
dW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgLSBzcGVj
aWFsRmFzdENhc2VDb3VudDsKQEAgLTYwNyw2ICs2MTgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UoaW50IGJ5dGVjb2Rl
T2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9m
aWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2ln
bmVkIHNsb3dDYXNlQ291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRl
Y29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0
Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBzbG93
Q2FzZUNvdW50ICsgc3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBAIC03MDQsNyArNzE3LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGFkZEZyZXF1ZW50RXhpdFNpdGUo
Y29uc3QgREZHOjpGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAg
ICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAg
ICAgICAgIHJldHVybiBtX2V4aXRQcm9maWxlLmFkZChzaXRlKTsKICAgICAgICAgfQogCkBAIC04
MDksNiArODIyLDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGNvcHlQb3N0UGFy
c2VEYXRhRnJvbShDb2RlQmxvY2sqIGFsdGVybmF0aXZlKTsKICAgICAgICAgdm9pZCBjb3B5UG9z
dFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgICAgICAKKyAgICAgICAgLy8gRnVuY3Rp
b25zIGZvciBjb250cm9sbGluZyB3aGVuIEpJVHRpbmcga2lja3MgaW4sIGluIGEgbWl4ZWQgbW9k
ZQorICAgICAgICAvLyBleGVjdXRpb24gd29ybGQuCisgICAgICAgIAorICAgICAgICB2b2lkIGRv
bnRKSVRBbnl0aW1lU29vbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRl
Q291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1l
U29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRBZnRlcldhcm1VcCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6
OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICB2b2lkIGppdFNvb24oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xs
aW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRT
b29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQzMl90IGxsaW50RXhlY3V0ZUNv
dW50ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9sbGludEV4ZWN1
dGVDb3VudGVyOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICAvLyBGdW5jdGlvbnMgZm9y
IGNvbnRyb2xsaW5nIHdoZW4gdGllcmVkIGNvbXBpbGF0aW9uIGtpY2tzIGluLiBUaGlzCiAgICAg
ICAgIC8vIGNvbnRyb2xzIGJvdGggd2hlbiB0aGUgb3B0aW1pemluZyBjb21waWxlciBpcyBpbnZv
a2VkIGFuZCB3aGVuIE9TUgogICAgICAgICAvLyBlbnRyeSBoYXBwZW5zLiBUd28gdHJpZ2dlcnMg
ZXhpc3Q6IHRoZSBsb29wIHRyaWdnZXIgYW5kIHRoZSByZXR1cm4KQEAgLTEwMDEsNiArMTAzNyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fc2hvdWxkRGlzY2FyZEJ5dGVjb2Rl
OwogCiAgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwo
SlNHbG9iYWxEYXRhJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRXZWFrUmVmZXJl
bmNlcyhTbG90VmlzaXRvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkoKTsKICAgICAgICAgCkBAIC0xMDEzLDcgKzEwNTAsNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCB0YWxseUZyZXF1ZW50RXhpdFNpdGVzKCkgeyB9CiAjZW5kaWYKICAg
ICAgICAgCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQog
ICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKiwgY29uc3QgVmVjdG9yPEluc3RydWN0aW9uPjo6
Y29uc3RfaXRlcmF0b3ImIGJlZ2luLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRv
ciYpIGNvbnN0OwogCiAgICAgICAgIENTdHJpbmcgcmVnaXN0ZXJOYW1lKEV4ZWNTdGF0ZSosIGlu
dCByKSBjb25zdDsKQEAgLTEwMjMsNyArMTA1OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIHByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPElu
c3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7CiAgICAg
ICAgIHZvaWQgcHJpbnRDYWxsT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5z
dHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKICAgICAg
ICAgdm9pZCBwcmludFB1dEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJ
bnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0OwotI2Vu
ZGlmCiAgICAgICAgIHZvaWQgdmlzaXRTdHJ1Y3R1cmVzKFNsb3RWaXNpdG9yJiwgSW5zdHJ1Y3Rp
b24qIHZQQykgY29uc3Q7CiAgICAgICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTA4NCw5
ICsxMTE5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8U291cmNlUHJvdmlk
ZXI+IG1fc291cmNlOwogICAgICAgICB1bnNpZ25lZCBtX3NvdXJjZU9mZnNldDsKIAotI2lmIEVO
QUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zOwogICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZ2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9uczsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIFNlZ21lbnRlZFZlY3Rv
cjxMTEludENhbGxMaW5rSW5mbywgOD4gbV9sbGludENhbGxMaW5rSW5mb3M7CisgICAgICAgIFNl
bnRpbmVsTGlua2VkTGlzdDxMTEludENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8
TExJbnRDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0xMSW50Q2FsbHM7CiAjZW5kaWYKICNpZiBF
TkFCTEUoSklUKQogICAgICAgICBWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+IG1fc3RydWN0dXJl
U3R1YkluZm9zOwpAQCAtMTA5Nyw5ICsxMTM0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlV2l0aEFyaXR5Q2hlY2s7CiAgICAgICAg
IFNlbnRpbmVsTGlua2VkTGlzdDxDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPENh
bGxMaW5rSW5mbz4gPiBtX2luY29taW5nQ2FsbHM7CiAjZW5kaWYKLSNpZiBFTkFCTEUoREZHX0pJ
VCkKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICBPd25QdHI8
Q29tcGFjdEpJVENvZGVNYXA+IG1faml0Q29kZU1hcDsKLSAgICAgICAgCisjZW5kaWYKKyNpZiBF
TkFCTEUoREZHX0pJVCkKICAgICAgICAgc3RydWN0IFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uIHsK
ICAgICAgICAgICAgIFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uKCkgeyB9CiAgICAgICAgICAgICAK
QEAgLTExNjIsMTIgKzEyMDAsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgT3duUHRy
PENvZGVCbG9jaz4gbV9hbHRlcm5hdGl2ZTsKICAgICAgICAgCisgICAgICAgIGludDMyX3QgbV9s
bGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICAKICAgICAgICAgaW50MzJfdCBtX2ppdEV4ZWN1
dGVDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXI7
CiAgICAgICAgIHVpbnQzMl90IG1fc3BlY3VsYXRpdmVGYWlsQ291bnRlcjsKICAgICAgICAgdWlu
dDhfdCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcjsKICAgICAgICAgdWludDhfdCBtX3Jlb3B0
aW1pemF0aW9uUmV0cnlDb3VudGVyOwotCisgICAgICAgIAogICAgICAgICBzdHJ1Y3QgUmFyZURh
dGEgewogICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgcHVibGlj
OgpAQCAtMTI0Myw2ICsxMjgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNj
b3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZp
cnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2Fu
Q29tcGlsZVdpdGhERkdJbnRlcm5hbCgpOwogI2VuZGlmCkBAIC0xMjc3LDYgKzEzMTgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3Qq
IGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxl
SW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2Vt
ZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGR0ludGVybmFsKCk7
CiAjZW5kaWYKQEAgLTEzMTQsNiArMTM1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3Rh
dGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAg
ICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBi
b29sIGNhbkNvbXBpbGVXaXRoREZHSW50ZXJuYWwoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24g
MTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMCArMjcsNDkgQEAKICNpbmNsdWRlICJHZXRCeUlk
U3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMb3dMZXZlbElu
dGVycHJldGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitHZXRCeUlkU3RhdHVzIEdldEJ5SWRT
dGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBVTlVTRURfUEFSQU0o
cHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworICAgIFVO
VVNFRF9QQVJBTShpZGVudCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRl
Y29kZUluZGV4OworICAgIAorICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGlu
dF9vcF9tZXRob2RfY2hlY2spCisgICAgICAgIGluc3RydWN0aW9uKys7CisKKyAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOworICAgIGlm
ICghc3RydWN0dXJlKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9u
LCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAgICBzaXplX3Qgb2Zm
c2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQp
OworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBHZXRCeUlkU3Rh
dHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOworICAg
IAorICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZURpcmVjdCwgU3RydWN0dXJlU2V0KHN0
cnVjdHVyZSksIG9mZnNldCwgZmFsc2UpOworI2Vsc2UKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1
cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyNlbmRp
ZgorfQorCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2Nr
KiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVu
dCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFN
KGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5BQkxFKEpJ
VCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVt
YmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJ
bnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAgIC8vIEZp
cnN0IGNoZWNrIGlmIGl0IG1ha2VzIGVpdGhlciBjYWxscywgaW4gd2hpY2ggY2FzZSB3ZSB3YW50
IHRvIGJlIHN1cGVyIGNhcmVmdWwsIG9yCiAgICAgLy8gaWYgaXQncyBub3Qgc2V0IGF0IGFsbCwg
aW4gd2hpY2ggY2FzZSB3ZSBwdW50LgogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9
IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1
YkluZm8uc2VlbikKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwg
U3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJ
bnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgIAogICAgIFBvbHlt
b3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogbGlzdDsKICAgICBpbnQgbGlzdFNpemU7CkBAIC02
MCwxOCArODksMTkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgIH0KICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKICAgICAgICAg
aWYgKCFsaXN0LT5saXN0W2ldLmlzRGlyZWN0KQotICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRT
dGF0dXMoTWFrZXNDYWxscywgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RGb3Vu
ZCwgdHJ1ZSk7CiAgICAgfQogICAgIAogICAgIC8vIE5leHQgY2hlY2sgaWYgaXQgdGFrZXMgc2xv
dyBjYXNlLCBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUga2luZCBvZiBjYXJlZnVsLgogICAg
IGlmIChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkK
LSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgU3RydWN0dXJlU2V0
KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0
aCwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsKICAgICAKICAgICAvLyBGaW5hbGx5
IGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGRlcml2ZSBhbiBhY2Nlc3Mgc3RyYXRlZ3kuCiAgICAgR2V0
QnlJZFN0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fd2FzU2VlbkluSklUID0gdHJ1ZTsKICAg
ICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIGFjY2Vzc191bnNldDoK
LSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0
KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRC
bG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19n
ZXRfYnlfaWRfc2VsZjogewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZv
LnUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKQEAgLTEzMCw3ICsxNjAs
NyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgCiAgICAg
cmV0dXJuIHJlc3VsdDsKICNlbHNlIC8vIEVOQUJMRShKSVQpCi0gICAgcmV0dXJuIEdldEJ5SWRT
dGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICByZXR1
cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQs
IGZhbHNlKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEwNjQyMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDEwICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAK
LSAgICBHZXRCeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVj
dHVyZVNldCwgc2l6ZV90IG9mZnNldCkKKyAgICBHZXRCeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBj
b25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6ZV90IG9mZnNldCwgYm9vbCB3YXNT
ZWVuSW5KSVQpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX3N0cnVjdHVy
ZVNldChzdHJ1Y3R1cmVTZXQpCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICAgICAs
IG1fd2FzU2VlbkluSklUKHdhc1NlZW5JbkpJVCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoc3Rh
dGUgPT0gU2ltcGxlRGlyZWN0KSA9PSAob2Zmc2V0ICE9IG5vdEZvdW5kKSk7CiAgICAgfQpAQCAt
NzAsMTAgKzcxLDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVy
ZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9CiAgICAgc2l6ZV90IG9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCisgICAgYm9vbCB3YXNTZWVuSW5K
SVQoKSBjb25zdCB7IHJldHVybiBtX3dhc1NlZW5JbkpJVDsgfQorICAgIAogcHJpdmF0ZToKKyAg
ICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKICAgICBTdGF0ZSBtX3N0YXRl
OwogICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKICAgICBzaXplX3QgbV9vZmZzZXQ7
CisgICAgYm9vbCBtX3dhc1NlZW5JbkpJVDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHJldmlz
aW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIEpTQ2VsbDsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgY2xhc3MgU3RydWN0dXJl
Q2hhaW47CisgICAgc3RydWN0IExMSW50Q2FsbExpbmtJbmZvOwogICAgIHN0cnVjdCBWYWx1ZVBy
b2ZpbGU7CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTQ2LDYgKzE0NywxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICNlbmRpZgogCiAgICAgc3RydWN0IEluc3RydWN0aW9uIHsKKyAgICAgICAgSW5zdHJ1
Y3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB1LmpzQ2VsbC5jbGVhcigpOworICAgICAg
ICB9CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihPcGNvZGUgb3Bjb2RlKQogICAgICAg
ICB7CiAjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQpAQCAtMTgyLDYgKzE4
OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEluc3RydWN0aW9uKFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1bmMpIHsgdS5nZXR0ZXJGdW5jID0gZ2V0dGVyRnVuYzsg
fQogICAgICAgICAKKyAgICAgICAgSW5zdHJ1Y3Rpb24oTExJbnRDYWxsTGlua0luZm8qIGNhbGxM
aW5rSW5mbykgeyB1LmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsgfQorICAgICAgICAKICAg
ICAgICAgSW5zdHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBwcm9maWxlKSB7IHUucHJvZmlsZSA9IHBy
b2ZpbGU7IH0KIAogICAgICAgICB1bmlvbiB7CkBAIC0xOTEsNyArMTk5LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBzdHJ1
Y3R1cmVDaGFpbjsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8SlNDZWxsPiBqc0NlbGw7
CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jOworICAg
ICAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbzsKICAgICAgICAgICAgIFZh
bHVlUHJvZmlsZSogcHJvZmlsZTsKKyAgICAgICAgICAgIHZvaWQqIHBvaW50ZXI7CiAgICAgICAg
IH0gdTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENhbGxMaW5rSW5mb19oCisjZGVmaW5lIExMSW50
Q2FsbExpbmtJbmZvX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJNYWNy
b0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK3N0cnVjdCBMTElu
dENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5r
SW5mbz4geworICAgIExMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAgfQorICAgIAorICAg
IH5MTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAg
ICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzTGlua2VkKCkgeyBy
ZXR1cm4gY2FsbGVlOyB9CisgICAgCisgICAgdm9pZCB1bmxpbmsoKQorICAgIHsKKyAgICAgICAg
Y2FsbGVlLmNsZWFyKCk7CisgICAgICAgIG1hY2hpbmVDb2RlVGFyZ2V0ID0gTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKCk7CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAgICAgcmVtb3Zl
KCk7CisgICAgfQorICAgIAorICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxsZWU7Cisg
ICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGxhc3RTZWVuQ2FsbGVlOworICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciBtYWNoaW5lQ29kZVRhcmdldDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gTExJbnRDYWxsTGlua0luZm9faAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAJ
KHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRo
b2RDYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDExIEBAIE1l
dGhvZENhbGxMaW5rU3RhdHVzIE1ldGhvZENhbGxMaW5rU3RhdHUKICAgICBVTlVTRURfUEFSQU0o
cHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lmIEVO
QUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAvLyBOT1RFOiBUaGlzIGRv
ZXMgbm90IGhhdmUgYW4gTExJbnQgZmFsbC1iYWNrIGJlY2F1c2UgTExJbnQgZG9lcyBub3QgZG8g
YW55IG1ldGhvZAorICAgIC8vIGNhbGwgbGluayBjYWNoaW5nLgorICAgIGlmICghcHJvZmlsZWRC
bG9jay0+bnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKCkpCisgICAgICAgIHJldHVybiBNZXRo
b2RDYWxsTGlua1N0YXR1cygpOworICAgIAogICAgIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9k
Q2FsbCA9IHByb2ZpbGVkQmxvY2stPmdldE1ldGhvZENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4
KTsKICAgICAKICAgICBpZiAoIW1ldGhvZENhbGwuc2VlbiB8fCAhbWV0aG9kQ2FsbC5jYWNoZWRT
dHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShy
ZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgsIDQpIFwKICAgICAgICAgbWFjcm8o
b3BfcHV0X2J5X2lkLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
LCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwgOSkg
XAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwKICAg
ICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3Bf
cHV0X2J5X2lkX2dlbmVyaWMsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBc
CkBAIC0yMDEsNiArMjAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgZW51
bSB7IEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfSURfRU5VTSkgfSBPcGNvZGVJRDsKICAgICAj
dW5kZWYgT1BDT0RFX0lEX0VOVU0KIAorICAgIGNvbnN0IGludCBtYXhPcGNvZGVMZW5ndGggPSA5
OwogICAgIGNvbnN0IGludCBudW1PcGNvZGVJRHMgPSBvcF9lbmQgKyAxOwogCiAgICAgI2RlZmlu
ZSBPUENPREVfSURfTEVOR1RIUyhpZCwgbGVuZ3RoKSBjb25zdCBpbnQgaWQjI19sZW5ndGggPSBs
ZW5ndGg7CkBAIC0yMTcsNyArMjIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZPUl9F
QUNIX09QQ09ERV9JRChWRVJJRllfT1BDT0RFX0lEKTsKICAgICAjdW5kZWYgVkVSSUZZX09QQ09E
RV9JRAogCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxF
KENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICNpZiBDT01QSUxF
UihSVkNUKSB8fCBDT01QSUxFUihJTlRFTCkKICAgICB0eXBlZGVmIHZvaWQqIE9wY29kZTsKICNl
bHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuY3BwCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDI3ICsyNyw2OSBA
QAogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgor
I2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIK
ICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorUHV0QnlJ
ZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmls
ZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29k
ZUluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkKKyAg
ICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
aW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUpCisg
ICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZv
dW5kKTsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3Bf
cHV0X2J5X2lkKSB7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJv
ZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0g
bm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9u
LCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhTaW1wbGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9mZnNldCk7CisgICAgfQorICAg
IAorICAgIEFTU0VSVChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3QKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNv
ZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAKKyAgICBT
dHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgp
OworICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IGluc3RydWN0aW9uWzddLnUuc3RydWN0dXJl
Q2hhaW4uZ2V0KCk7CisgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7CisgICAgQVNTRVJUKGNoYWlu
KTsKKyAgICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVk
QmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQp
CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5v
dEZvdW5kKTsKKyAgICAKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVUcmFuc2l0aW9u
LCBzdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY2hhaW4sIG9mZnNldCk7CisjZWxzZQorICAgIHJl
dHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyNl
bmRpZgorfQorCiBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJs
b2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBp
ZGVudCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BB
UkFNKGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5BQkxF
KEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9jay0+
bnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9t
TExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAgIGlm
IChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKICAg
ICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90Rm91
bmQpOwogICAgIAogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVkQmxv
Y2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1YkluZm8uc2VlbikK
LSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90
Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBi
eXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgCiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NU
eXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3Rh
dHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNv
bXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAg
ICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTogewogICAgICAgICBzaXpl
X3Qgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJl
LT5nZXQoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
U3RhdHVzLmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDggQEAgcHVi
bGljOgogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAg
IAogcHJpdmF0ZToKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENv
ZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKICAg
ICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAgU3Ry
dWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAx
MDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkJh
dGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiVVN0cmluZy5oIgpAQCAtMTE2LDI2ICsxMTcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgZXhwZWN0ZWQgYnkgdGhlIGNhbGxlZS4KICovCiAKLSNpZm5kZWYgTkRFQlVHCiBzdGF0aWMg
Ym9vbCBzX2R1bXBzR2VuZXJhdGVkQ29kZSA9IGZhbHNlOwotI2VuZGlmCiAKIHZvaWQgQnl0ZWNv
ZGVHZW5lcmF0b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZShib29sIGR1bXBzR2VuZXJhdGVkQ29k
ZSkKIHsKLSNpZm5kZWYgTkRFQlVHCiAgICAgc19kdW1wc0dlbmVyYXRlZENvZGUgPSBkdW1wc0dl
bmVyYXRlZENvZGU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkdW1wc0dlbmVyYXRlZENvZGUp
OwotI2VuZGlmCiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29k
ZSgpCiB7Ci0jaWZuZGVmIE5ERUJVRwogICAgIHJldHVybiBzX2R1bXBzR2VuZXJhdGVkQ29kZTsK
LSNlbHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAKIEpTT2JqZWN0KiBCeXRlY29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQpAQCAtMTQ4LDEwICsxMzksOCBAQCBKU09iamVjdCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKIAogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVj
dGlvbkNvdW50KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogCi0jaWZuZGVm
IE5ERUJVRwogICAgIGlmIChzX2R1bXBzR2VuZXJhdGVkQ29kZSkKICAgICAgICAgbV9jb2RlQmxv
Y2stPmR1bXAobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7Ci0jZW5k
aWYKIAogICAgIGlmICgobV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNvZGUgJiYgIW1fY29kZUJsb2Nr
LT5uZWVkc0Z1bGxTY29wZUNoYWluKCkgJiYgIW1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkp
IHx8IG1fY29kZVR5cGUgPT0gRXZhbENvZGUpCiAgICAgICAgIHN5bWJvbFRhYmxlKCkuY2xlYXIo
KTsKQEAgLTEyNzYsOSArMTI2NSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFs
UmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJ
TlRFUlBSRVRFUikKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgICAgIFZhbHVlUHJvZmls
ZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShyZXF1aXJlc0R5bmFtaWNDaGVja3MgPyBv
cF9yZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDQwLDkgKzE0MjcsNyBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkK
ICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+
YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5k
aWYKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUocmVxdWly
ZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVf
Z2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDkw
LDkgKzE0NzUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAj
aWYgRU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAg
ICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygp
LnNpemUoKSk7Ci0jZW5kaWYKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmls
ZWRPcGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1p
YyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERz
dC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3Bl
cnR5KSk7CkBAIC0xNTExLDkgKzE0OTQsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TWV0aG9kQ2hlY2soCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJ
ZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5KQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRk
UHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlm
CiAKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0
X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKQEAgLTE1
MzksOSArMTUyMCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXIK
IAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsK
LSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1p
dE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5p
bmRleCgpKTsKQEAgLTE1NTcsOSArMTUzNiw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UHV0QnkKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2Rl
QmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KTsKLSNlbmRpZgogICAgIAogICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBAIC0xODQwLDcgKzE4MTcsMTEgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKAogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdD
b3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zm
c2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vs
c2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0
X3Jlc3VsdCk7CkBAIC0xOTQ0LDcgKzE5MjUsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRDb25zdAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgp
KTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNl
dAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxv
Y2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYg
KGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxl
ID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0yMjA1LDcgKzIx
OTAsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaAogewogICAg
IG1fdXNlc0V4Y2VwdGlvbnMgPSB0cnVlOwogI2lmIEVOQUJMRShKSVQpCisjaWYgRU5BQkxFKExM
SU5UKQorICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJp
bmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1f
YmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6
Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29w
X2NhdGNoKSkpIH07CisjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5k
KDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWlj
U2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKCkgfTsKKyNl
bmRpZgogI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwg
ZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVw
dGggKyBtX2Jhc2VTY29wZURlcHRoIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMDY0MjMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjA0LDkgKzYwNCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBVTlVT
RURfUEFSQU0obm9kZUluZGV4KTsKICAgICAgICAgCi0gICAgICAgIFZhbHVlUHJvZmlsZSogcHJv
ZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIEFTU0VSVChwcm9maWxlKTsK
LSAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKCk7CisgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9T
RSkKICAgICAgICAgcHJpbnRmKCJEeW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xu
Iiwgbm9kZUluZGV4LCBieXRlY29kZUluZGV4LCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlv
bikpOwogI2VuZGlmCkBAIC0xMDQxLDYgKzEwMzksOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbmxpbmluZyhib29sCiAgICAgCiAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhlbiBpdCBs
b29rcyBsaWtlIHdlIHNob3VsZCBkZWZpbml0ZWx5IGlubGluZSB0aGlzIGNvZGUuIFByb2NlZWQK
ICAgICAvLyB3aXRoIHBhcnNpbmcgdGhlIGNvZGUgdG8gZ2V0IGJ5dGVjb2RlLCBzbyB0aGF0IHdl
IGNhbiB0aGVuIHBhcnNlIHRoZSBieXRlY29kZS4KKyAgICAvLyBOb3RlIHRoYXQgaWYgTExJbnQg
aXMgZW5hYmxlZCwgdGhlIGJ5dGVjb2RlIHdpbGwgYWx3YXlzIGJlIGF2YWlsYWJsZS4gQWxzbyBu
b3RlCisgICAgLy8gdGhhdCBpZiBMTEludCBpcyBlbmFibGVkLCB3ZSBtYXkgaW5saW5lIGEgY29k
ZSBibG9jayB0aGF0IGhhcyBuZXZlciBiZWVuIEpJVHRlZAorICAgIC8vIGJlZm9yZSEKICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fY29kZUJsb2NrQ2FjaGUuZ2V0KENvZGVCbG9ja0tleShl
eGVjdXRhYmxlLCBraW5kKSwgZXhwZWN0ZWRGdW5jdGlvbi0+c2NvcGUoKSk7CiAgICAgaWYgKCFj
b2RlQmxvY2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3NDEsNyArMTc0Miw3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBt
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4KTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgaWYgKG1ldGhvZENhbGxTdGF0dXMuaXNTZXQoKQotICAgICAg
ICAgICAgICAgICYmICFnZXRCeUlkU3RhdHVzLmlzU2V0KCkKKyAgICAgICAgICAgICAgICAmJiAh
Z2V0QnlJZFN0YXR1cy53YXNTZWVuSW5KSVQoKQogICAgICAgICAgICAgICAgICYmICFtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRD
YWNoZSkpIHsKICAgICAgICAgICAgICAgICAvLyBJdCdzIG1vbm9tb3JwaGljIGFzIGZhciBhcyB3
ZSBjYW4gdGVsbCwgc2luY2UgdGhlIG1ldGhvZF9jaGVjayB3YXMgbGlua2VkCiAgICAgICAgICAg
ICAgICAgLy8gYnV0IHRoZSBzbG93IHBhdGggKGkuZS4gdGhlIG5vcm1hbCBnZXRfYnlfaWQpIG5l
dmVyIGZpcmVkLgpAQCAtMTgxMCw3ICsxODExLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQp
OwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CisgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAg
ICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9
IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5oCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDggQEAgaW5s
aW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNhc2Ugb3BfcHV0X3Nj
b3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6
CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoK
ICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2
aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwyMSBAQCB2b2lkIGNvbXBpbGVP
U1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICB1aW50MzJfdCBleGl0SW5kZXggPSBnbG9iYWxE
YXRhLT5vc3JFeGl0SW5kZXg7CiAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jay0+b3NyRXhp
dChleGl0SW5kZXgpOwogICAgIAorICAgIC8vIE1ha2Ugc3VyZSBhbGwgY29kZSBvbiBvdXIgaW5s
aW5lIHN0YWNrIGlzIEpJVCBjb21waWxlZC4gVGhpcyBpcyBuZWNlc3Nhcnkgc2luY2UKKyAgICAv
LyB3ZSBtYXkgb3B0IHRvIGlubGluZSBhIGNvZGUgYmxvY2sgZXZlbiBiZWZvcmUgaXQgaGFkIGV2
ZXIgYmVlbiBjb21waWxlZCBieSB0aGUKKyAgICAvLyBKSVQsIGJ1dCBvdXIgT1NSIGV4aXQgaW5m
cmFzdHJ1Y3R1cmUgY3VycmVudGx5IG9ubHkgd29ya3MgaWYgdGhlIHRhcmdldCBvZiB0aGUKKyAg
ICAvLyBPU1IgZXhpdCBpcyBKSVQgY29kZS4gVGhpcyBjb3VsZCBiZSBjaGFuZ2VkIHNpbmNlIHRo
ZXJlIGlzIG5vdGhpbmcgcGFydGljdWxhcmx5CisgICAgLy8gaGFyZCBhYm91dCBkb2luZyBhbiBP
U1IgZXhpdCBpbnRvIHRoZSBpbnRlcnByZXRlciwgYnV0IGZvciBub3cgdGhpcyBzZWVtcyB0byBt
YWtlCisgICAgLy8gc2Vuc2UgaW4gdGhhdCBpZiB3ZSdyZSBPU1IgZXhpdGluZyBmcm9tIGlubGlu
ZWQgY29kZSBvZiBhIERGRyBjb2RlIGJsb2NrLCB0aGVuCisgICAgLy8gcHJvYmFibHkgaXQncyBh
IGdvb2Qgc2lnbiB0aGF0IHRoZSB0aGluZyB3ZSdyZSBleGl0aW5nIGludG8gaXMgaG90LiBFdmVu
IG1vcmUKKyAgICAvLyBpbnRlcmVzdGluZ2x5LCBzaW5jZSB0aGUgY29kZSB3YXMgaW5saW5lZCwg
aXQgbWF5IG5ldmVyIG90aGVyd2lzZSBnZXQgSklUCisgICAgLy8gY29tcGlsZWQgc2luY2UgdGhl
IGFjdCBvZiBpbmxpbmluZyBpdCBtYXkgZW5zdXJlIHRoYXQgaXQgb3RoZXJ3aXNlIG5ldmVyIHJ1
bnMuCisgICAgZm9yIChDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbjsg
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGlu
ZUNhbGxGcmFtZS0+Y2FsbGVyKSB7CisgICAgICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKQorICAg
ICAgICAgICAgLT5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFt
ZS0+aXNDYWxsID8gQ29kZUZvckNhbGwgOiBDb2RlRm9yQ29uc3RydWN0KQorICAgICAgICAgICAg
LT5qaXRDb21waWxlKCpnbG9iYWxEYXRhKTsKKyAgICB9CisgICAgCiAgICAgU3BlY3VsYXRpb25S
ZWNvdmVyeSogcmVjb3ZlcnkgPSAwOwogICAgIGlmIChleGl0Lm1fcmVjb3ZlcnlJbmRleCkKICAg
ICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5zcGVjdWxhdGlvblJlY292ZXJ5KGV4aXQubV9y
ZWNvdmVyeUluZGV4IC0gMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVk
ZSAiREZHUmVwYXRjaC5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNs
dWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbmxpbmVBU00uaCIKICNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgpAQCAtNjczLDUwICs2NzQsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBv
cGVyYXRpb25Db21wYXJlU3RyCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMs
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKCk7Ci1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFs
dWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0i
Lmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1ISURF
X1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIK
LSAgICAibW92ICVyMTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FU
SU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYg
Q1BVKFg4NikKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1T
WU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAt
NDAoJWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVzcClcbiIKLSAgICAiam1wICIg
U1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20gKAotIi50ZXh0IiAiXG4i
Ci0iLmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIK
LSIudGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKLSAgICAiY3B5IHIwLCBy
NSIgIlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0KLUVuY29kZWRKU1ZhbHVl
IERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0
YXRlKiBleGVjKQotewotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9i
YWxEYXRhKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBl
eGVjKTsKLSAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEo
KS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKLX0KLQogc3RhdGljIHZvaWQqIGhhbmRsZUhvc3RDYWxs
KEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJG
cmFtZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDEw
NjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MzcsNyArODM3LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3
ZWVwVG9nZwogICAgICAgICBzZXRIaWdoV2F0ZXJNYXJrKG1heChwcm9wb3J0aW9uYWxCeXRlcywg
bV9taW5CeXRlc1BlckN5Y2xlKSk7CiAgICAgfQogICAgIEpBVkFTQ1JJUFRDT1JFX0dDX0VORCgp
OwotCisgICAgCiAgICAgKCptX2FjdGl2aXR5Q2FsbGJhY2spKCk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNWYWx1ZTsK
ICAgICBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyOwogICAgIGNsYXNzIFJlZ2lz
dGVyRmlsZTsKICAgICBjbGFzcyBVU3RyaW5nOwpAQCAtMTM1LDExICsxMzYsMTIgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZ2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cyhIYXNo
U2V0PEpTQ2VsbCo+JiByb290cyk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xh
c3MgQ29kZUJsb2NrOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBNYXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNzIEJ1bXBTcGFjZTsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwotICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2Nr
OwogCiAgICAgICAgIHNpemVfdCB3YXRlck1hcmsoKTsKICAgICAgICAgc2l6ZV90IGhpZ2hXYXRl
ck1hcmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAko
cmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNr
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw3IEBAIEFMV0FZU19JTkxJTkUgc3Rh
dGljIHZvaWQgdmlzaXRDaGlsZHJlbigKICNlbmRpZgogCiAgICAgQVNTRVJUKEhlYXA6OmlzTWFy
a2VkKGNlbGwpKTsKLQorICAgIAogICAgIGlmIChpc0pTU3RyaW5nKGNlbGwpKSB7CiAgICAgICAg
IEpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0
b3IpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtlZFNwYWNlLmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiBjbGFzcyBIZWFwOwogY2xhc3MgSlNDZWxsOwogY2xhc3MgTGl2ZU9iamVjdEl0
ZXJhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgV2Vha0dDSGFuZGxl
OwogY2xhc3MgU2xvdFZpc2l0b3I7CiAKQEAgLTg3LDYgKzg4LDggQEAgcHVibGljOgogICAgIHZv
aWQgZnJlZUJsb2NrcyhNYXJrZWRCbG9jayogaGVhZCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICB2b2lkKiBhbGxvY2F0ZVNs
b3dDYXNlKFNpemVDbGFzcyYpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlSGVscGVyKE1hcmtlZFNw
YWNlOjpTaXplQ2xhc3MmKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6
ZUNsYXNzJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Nh
bGxGcmFtZS5oCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsOSBAQCBu
YW1lc3BhY2UgSlNDICB7CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBJbnN0cnVj
dGlvbiogcmV0dXJuVlBDKCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OlJldHVy
blBDXS52UEMoKTsgfQogI2VuZGlmCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBJbnN0cnVj
dGlvbiogY3VycmVudFZQQygpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlv
bio+KHRoaXNbUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50XS50YWcoKSk7IH0KKyNlbmRpZgog
CiAgICAgICAgIHZvaWQgc2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSkgeyBz
dGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWVdID0g
Y2FsbGVyRnJhbWU7IH0KICAgICAgICAgdm9pZCBzZXRTY29wZUNoYWluKFNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxl
OjpTY29wZUNoYWluXSA9IHNjb3BlQ2hhaW47IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTA2NDIzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2VuZGlmCiAK
LSNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EIChFTkFCTEUoQ09N
UFVURURfR09UT19JTlRFUlBSRVRFUikgJiYgIWRlZmluZWQoX19sbHZtX18pKQorI2RlZmluZSBX
VEZfVVNFX0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQgKChFTkFCTEUoQ09NUFVURURfR09U
T19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkgJiYgIWRlZmluZWQoX19sbHZtX18pKQog
CiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC01NDcsMTcgKzU0Nyw0MyBAQCBJbnRlcnByZXRl
cjo6SW50ZXJwcmV0ZXIoKQogewogfQogCi12b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKGJv
b2wgY2FuVXNlSklUKQorSW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcigpCiB7Ci0jaWYgRU5BQkxF
KENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmICht
X2VuYWJsZWQpCisgICAgICAgIGRlbGV0ZVtdIG1fb3Bjb2RlVGFibGU7CisjZW5kaWYKK30KKwor
dm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShMTEludDo6RGF0YSogbGxpbnREYXRhLCBib29s
IGNhblVzZUpJVCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGxpbnREYXRhKTsKKyAgICBVTlVTRURf
UEFSQU0oY2FuVXNlSklUKTsKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikg
fHwgRU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikK
KyAgICAvLyBIYXZpbmcgTExJbnQgZW5hYmxlZCwgYnV0IG5vdCBiZWluZyBhYmxlIHRvIHVzZSB0
aGUgSklULCBhbmQgbm90IGhhdmluZworICAgIC8vIGEgY29tcHV0ZWQgZ290byBpbnRlcnByZXRl
ciwgaXMgbm90IHN1cHBvcnRlZC4gTm90IGJlY2F1c2Ugd2UgY2Fubm90CisgICAgLy8gc3VwcG9y
dCBpdCwgYnV0IGJlY2F1c2UgSSBkZWNpZGVkIHRvIGRyYXcgdGhlIGxpbmUgYXQgdGhlIG51bWJl
ciBvZgorICAgIC8vIHBlcm11dGF0aW9ucyBvZiBleGVjdXRpb24gZW5naW5lcyB0aGF0IEkgd2Fu
dGVkIHRoaXMgY29kZSB0byBncm9rLgorICAgIEFTU0VSVChjYW5Vc2VKSVQpOworI2VuZGlmCiAg
ICAgaWYgKGNhblVzZUpJVCkgeworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVU
YWJsZSA9IGxsaW50RGF0YS0+b3Bjb2RlTWFwKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgbnVtT3Bjb2RlSURzOyArK2kpCisgICAgICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1f
b3Bjb2RlVGFibGVbaV0sIHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7CisjZWxzZQogICAgICAg
ICAvLyBJZiB0aGUgSklUIGlzIHByZXNlbnQsIGRvbid0IHVzZSBqdW1wIGRlc3RpbmF0aW9ucyBm
b3Igb3Bjb2Rlcy4KICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bj
b2RlSURzOyArK2kpIHsKICAgICAgICAgICAgIE9wY29kZSBvcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaSkpOwogICAgICAgICAgICAgbV9vcGNvZGVU
YWJsZVtpXSA9IG9wY29kZTsKICAgICAgICAgfQorI2VuZGlmCiAgICAgfSBlbHNlIHsKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bjb2RlVGFibGUgPSBuZXcgT3Bjb2RlW251bU9wY29k
ZUlEc107CisjZW5kaWYKICAgICAgICAgcHJpdmF0ZUV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVy
biwgMCwgMCk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29k
ZUlEczsgKytpKQpAQCAtNTY2LDcgKzU5Miw2IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxp
emUoYm9vbCBjYW5Vc2UKICAgICAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICAgICB9CiAjZWxzZQot
ICAgIFVOVVNFRF9QQVJBTShjYW5Vc2VKSVQpOwogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAg
ICBtX2VuYWJsZWQgPSB0cnVlOwogI2Vsc2UKQEAgLTY2Nyw5ICs2OTIsMTEgQEAgdm9pZCBJbnRl
cnByZXRlcjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbQogCiBib29sIEludGVycHJldGVyOjppc09w
Y29kZShPcGNvZGUgb3Bjb2RlKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJF
VEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJ
TlQpCisjaWYgIUVOQUJMRShMTElOVCkKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0
dXJuIG9wY29kZSA+PSAwICYmIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWlu
dHB0cl90PihvcGNvZGUpKSA8PSBvcF9lbmQ7CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2RlICE9
IEhhc2hUcmFpdHM8T3Bjb2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJhaXRz
PE9wY29kZT46OmlzRGVsZXRlZFZhbHVlKG9wY29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJRFRh
YmxlLmNvbnRhaW5zKG9wY29kZSk7CkBAIC03MjYsMTEgKzc1MywxMSBAQCBORVZFUl9JTkxJTkUg
Ym9vbCBJbnRlcnByZXRlcjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAxLgog
I2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBpZiAoY2FsbGVyRnJh
bWUtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBj
b2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAg
IGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwg
Y2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICAgICBlbHNlCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7
CiAjZWxpZiBFTkFCTEUoSklUKQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRl
Y29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0g
Y29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5Q
QygpKTsKICNlbHNlCiAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zm
c2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbmRpZgpAQCAtODA3LDEwICs4MzQs
MTAgQEAgc3RhdGljIHZvaWQgZ2V0Q2FsbGVyTGluZShKU0dsb2JhbERhdGEqIAogICAgICAgICBi
eXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1l
LT5yZXR1cm5WUEMoKSk7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBlbHNlCi0gICAgICAgIGJ5dGVj
b2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJl
dHVyblBDKCkpOworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0
ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLCBjYWxsRnJhbWUtPnJldHVyblBD
KCkpOwogI2VuZGlmCiAjZWxzZQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2Nr
LT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zm
c2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPmNhbGxlckZy
YW1lKCksIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYKIAogICAgIGxpbmVOdW1iZXIg
PSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCAtIDEpOwpAQCAtMzQwNyw2ICszNDM0LDggQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICNp
ZiBVU0UoR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCkKICAgICAgIHNraXBfcHV0X2J5X2lk
OgogI2VuZGlmCisgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3QpCisgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpCiAg
ICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbikgewogICAgICAgICAvKiBv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbiBiYXNlKHIpIHByb3BlcnR5KGlkKSB2YWx1ZShyKSBvbGRT
dHJ1Y3R1cmUoc0lEKSBuZXdTdHJ1Y3R1cmUoc0lEKSBzdHJ1Y3R1cmVDaGFpbihjaGFpbikgb2Zm
c2V0KG4pIGRpcmVjdChiKQogICAgICAgICAgCkBAIC01MjM5LDEwICs1MjY4LDEwIEBAIHZvaWQg
SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcihDYWwKICAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBD
KCkpOwogI2lmIEVOQUJMRShKSVQpCiAgICAgZWxzZQotICAgICAgICBieXRlY29kZU9mZnNldCA9
IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsK
KyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0
KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAjZWxzZQotICAg
IGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJh
bWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5i
eXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRp
ZgogICAgIGxpbmVOdW1iZXIgPSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29k
ZU9mZnNldChieXRlY29kZU9mZnNldCAtIDEpOwogICAgIHNvdXJjZUlEID0gY2FsbGVyQ29kZUJs
b2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxMDY0MjMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJMTElu
dERhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIK
IApAQCAtNDYsNiArNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVjdXRhYmxl
QmFzZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgSlNHbG9iYWxP
YmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dy
YW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5O
b2RlOwpAQCAtMTU0LDE5ICsxNTYsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJ
bnRlcnByZXRlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBm
cmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkQ2FsbDsKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIEpJVDsKICAgICBwdWJsaWM6CiAgICAgICAgIEludGVycHJldGVyKCk7CisgICAgICAgIH5J
bnRlcnByZXRlcigpOwogICAgICAgICAKLSAgICAgICAgdm9pZCBpbml0aWFsaXplKGJvb2wgY2Fu
VXNlSklUKTsKKyAgICAgICAgdm9pZCBpbml0aWFsaXplKExMSW50OjpEYXRhKiwgYm9vbCBjYW5V
c2VKSVQpOwogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlKCkgeyByZXR1cm4g
bV9yZWdpc3RlckZpbGU7IH0KICAgICAgICAgCiAgICAgICAgIE9wY29kZSBnZXRPcGNvZGUoT3Bj
b2RlSUQgaWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsK
LSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICAgICAgcmV0dXJu
IG1fb3Bjb2RlVGFibGVbaWRdOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBpZDsKQEAgLTE3
Niw3ICsxODAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9wY29kZUlEIGdldE9wY29k
ZUlEKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRp
YWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7CisgICAgICAg
ICAgICByZXR1cm4gbV9vcGNvZGVJRFRhYmxlLmdldChvcGNvZGUpOworI2VsaWYgRU5BQkxFKENP
TVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bj
b2RlKSk7CiAgICAgICAgICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgICAgICAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29kZSkp
OwpAQCAtMTg2LDYgKzE5MywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVy
biBvcGNvZGU7CiAjZW5kaWYKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBlbmFi
bGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZW5hYmxlZDsKKyAgICAgICAg
fQogCiAgICAgICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIApAQCAtMjU1LDcgKzI2NywxMCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlckZpbGUgbV9yZWdpc3RlckZpbGU7
CiAgICAgICAgIAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVO
QUJMRShMTElOVCkKKyAgICAgICAgT3Bjb2RlKiBtX29wY29kZVRhYmxlOyAvLyBNYXBzIE9wY29k
ZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCisgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNv
ZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3IgZGVj
b21waWxpbmcKKyNlbGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAg
ICBPcGNvZGUgbV9vcGNvZGVUYWJsZVtudW1PcGNvZGVJRHNdOyAvLyBNYXBzIE9wY29kZUlEID0+
IE9wY29kZSBmb3IgY29tcGlsaW5nCiAgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4g
bV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21waWxp
bmcKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lz
dGVyRmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9SZWdpc3RlckZpbGUuaAkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICsz
OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7CiAg
ICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAKICAgICBjbGFzcyBSZWdpc3RlckZpbGUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShSZWdpc3RlckZpbGUpOwpAQCAtODEsNiArODIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgZ3Jvd1Nsb3dDYXNlKFJlZ2lzdGVyKik7
CiAgICAgICAgIHZvaWQgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CiAgICAgICAgIHZvaWQgYWRk
VG9Db21taXR0ZWRCeXRlQ291bnQobG9uZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZh
bHVlLmgiCisKKyNpZiBDT01QSUxFUihHQ0MpCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNp
bmNsdWRlICJJbmxpbmVBU00uaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpT
VmFsdWVJbmxpbmVNZXRob2RzLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorCituYW1lc3Bh
Y2UgSlNDIHsKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZB
TFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUq
KTsKKworI2lmIENQVShYODZfNjQpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxu
IgorICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCisgICAgIm1vdiAlcjEzLCAlcmRpXG4iCisg
ICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVl
V2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShYODYpCithc20gKAorIi5nbG9ibCAi
IFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0wo
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4iCisgICAgIm1v
diAlZWRpLCA0KCVlc3ApXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShB
Uk1fVEhVTUIyKQorYXNtICgKKyIudGV4dCIgIlxuIgorIi5hbGlnbiAyIiAiXG4iCisiLmdsb2Js
ICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJP
TChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCisiLnRodW1iIiAiXG4iCisiLnRodW1iX2Z1
bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJP
TF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibGRyIHI1LCBb
cjUsICMtNDBdIiAiXG4iCisgICAgImNweSByMCwgcjUiICJcbiIKKyAgICAiYiAiIFNZTUJPTF9T
VFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxu
IgorKTsKKyNlbmRpZgorCitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRV
Uk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNT
dGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERh
dGEoKS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBDT01QSUxFUihHQ0MpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SG9zdENhbGxSZXR1cm5WYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKyNkZWZpbmUgSG9zdENhbGxSZXR1cm5WYWx1
ZV9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKy8vIFVuZm9ydHVuYXRlbHkgdGhp
cyBvbmx5IHdvcmtzIG9uIEdDQy1saWtlIGNvbXBpbGVycy4gQW5kIGl0J3MgY3VycmVudGx5IG9u
bHkgdXNlZAorLy8gYnkgTExJbnQgYW5kIERGRywgd2hpY2ggYWxzbyBhcmUgcmVzdHJpY3RlZCB0
byBHQ0MtbGlrZSBjb21waWxlcnMuIFdlIHNob3VsZAorLy8gcHJvYmFibHkgZml4IHRoYXQgYXQg
c29tZSBwb2ludC4KKyNpZiBDT01QSUxFUihHQ0MpCisKKyNpZiBDQUxMSU5HX0NPTlZFTlRJT05f
SVNfU1REQ0FMTAorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBDREVDTAor
I2Vsc2UKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04KKyNlbmRpZgorCitu
YW1lc3BhY2UgSlNDIHsKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVS
Tl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOworfQorCisjZW5kaWYgLy8g
Q09NUElMRVIoR0NDKQorCisjZW5kaWYgLy8gSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw4
IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09Q
KG9wX3Byb2ZpbGVfd2lsbF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9uZXdfc2Nv
cGUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX3Njb3BlKQorICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAg
IERFRklORV9PUChvcF9wdXRfYnlfaW5kZXgpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlf
dmFsKQpAQCAtNDg2LDYgKzQ4OCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNl
cygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAgICAgICAgREVG
SU5FX1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9wcmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoK
KyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcmVzb2x2ZV9n
bG9iYWwpCkBAIC01MjUsNiArNTI5LDEwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dD
YXNlcygpCiAKIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5jdGlvbkVu
dHJ5QXJpdHlDaGVjaykKIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50
ZigiQ29tcGlsaW5nIEpJVCBjb2RlIVxuIik7CisjZW5kaWYKKyAgICAKICNpZiBFTkFCTEUoVkFM
VUVfUFJPRklMRVIpCiAgICAgbV9jYW5CZU9wdGltaXplZCA9IG1fY29kZUJsb2NrLT5jYW5Db21w
aWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC02ODksOCArNjk3LDEyIEBAIEpJVENvZGUgSklUOjpw
cml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRp
b24gPSBtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8obV9tZXRob2RDYWxsQ29tcGlsYXRp
b25JbmZvW2ldLnByb3BlcnR5QWNjZXNzSW5kZXgpLmNhbGxSZXR1cm5Mb2NhdGlvbjsKICAgICB9
CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAobV9jYW5CZU9wdGltaXplZCkgeworI2lm
IEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fY2FuQmVPcHRpbWl6
ZWQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHx8IHRydWUKKyNlbmRpZgorICAgICAgICAp
IHsKICAgICAgICAgQ29tcGFjdEpJVENvZGVNYXA6OkVuY29kZXIgaml0Q29kZU1hcEVuY29kZXI7
CiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNl
dCA8IG1fbGFiZWxzLnNpemUoKTsgKytieXRlY29kZU9mZnNldCkgewogICAgICAgICAgICAgaWYg
KG1fbGFiZWxzW2J5dGVjb2RlT2Zmc2V0XS5pc1NldCgpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBKSVRDb2RlKCkgeyB9CiAjZW5kaWYKICAgICBwdWJsaWM6Ci0gICAg
ICAgIGVudW0gSklUVHlwZSB7IEhvc3RDYWxsVGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsK
KyAgICAgICAgZW51bSBKSVRUeXBlIHsgTm9uZSwgSG9zdENhbGxUaHVuaywgSW50ZXJwcmV0ZXJU
aHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OwogICAgICAgICAKICAgICAgICAgc3RhdGljIEpJ
VFR5cGUgYm90dG9tVGllckpJVCgpCiAgICAgICAgIHsKQEAgLTY2LDggKzY2LDE5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIERGR0pJVDsKICAgICAgICAgfQogICAgICAg
ICAKKyAgICAgICAgc3RhdGljIGJvb2wgaXNPcHRpbWl6aW5nSklUKEpJVFR5cGUgaml0VHlwZSkK
KyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gREZHSklUOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgYm9vbCBpc0Jhc2VsaW5lQ29kZShKSVRUeXBl
IGppdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IEludGVy
cHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBCYXNlbGluZUpJVDsKKyAgICAgICAgfQorICAgICAg
ICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBKSVRDb2RlKCkKKyAgICAgICAgICAgIDogbV9q
aXRUeXBlKE5vbmUpCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03NSw2ICs4Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgOiBtX3JlZihyZWYpCiAgICAgICAgICAgICAsIG1f
aml0VHlwZShqaXRUeXBlKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaml0VHlwZSAh
PSBOb25lKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciAhKCkg
Y29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkocmV2aXNpb24g
MTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDIxIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3Iu
aCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJM
TEludEVudHJ5cG9pbnRzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDb2RlQmxvY2tUeXBlPgogaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywg
SklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChq
aXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAog
ICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2Rl
OjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlKGdsb2JhbERh
dGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CkBAIC01NSwxMCArNjEsNyBAQCBpbmxpbmUg
Ym9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShKU0dsCiAgICAgICAgIH0KICAgICAgICAgaml0
Q29kZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpKTsKICAgICB9
Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRlY29kZUdlbmVyYXRv
cjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNv
ZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgorICAgIGNvZGVCbG9jay0+aGFuZGxl
Qnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENv
ZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwogICAgIAogICAgIHJldHVybiB0
cnVlOwpAQCAtNjYsOSArNjksMTQgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlh
dGUoSlNHbAogCiBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29kZUJs
b2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGppdENvZGVXaXRo
QXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6SklU
VHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlw
ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2Fu
VXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+dW5s
aW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsK
ICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVk
ID0gREZHOjp0cnlDb21waWxlRnVuY3Rpb24oZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBq
aXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwpAQCAtODMsMTEgKzkxLDcgQEAgaW5saW5l
IGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaQogICAgICAgICB9CiAgICAgICAgIGpp
dENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgJmppdENv
ZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQot
ICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQotICAgICAg
ICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7Ci0jZW5k
aWYKLSAgICAKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVu
aXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJp
dHlDaGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTY0LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3coSlNHbG9iYWxEYQog
CiBFeGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhl
Y1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIFJldHVybkFkZHJlc3NQ
dHIgZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEs
IGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVj
b2RlT2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2Jh
bERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkt
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1bHRMb2NhdGlvbikpOwogfQogCiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTA2NDIzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE0NDYsNiArMTQ0Niw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9i
eV9pZF8KICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5p
c1N0cmljdE1vZGUoKSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3Nb
MF0uanNWYWx1ZSgpOwogICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CisgICAgCiAg
ICAgYXNPYmplY3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgp
LCBpZGVudCwgc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwgc2xvdCk7CiAgICAgCiAgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7
CkBAIC0xOTMxLDcgKzE5MzIsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6
ZV9mcm9tCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNrRnJhbWUuYXJnc1swXS5p
bnQzMigpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmludGYoIkVudGVy
ZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6
YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIs
IGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlv
blJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsK
KyAgICBwcmludGYoIiVwOiBFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVD
b3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlv
bkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNv
dW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxv
Y2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAgaWYgKGNvZGVC
bG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewpAQCAtMjE4Niw0NSArMjE4NywxMyBA
QCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIAotaW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJhbWUqIGNh
bGxGcmFtZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFt
ZS0+Y2FsbGVlKCkpOwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAg
ICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5l
cmF0ZWRCeXRlY29kZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAgICAvLyBU
aGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6
ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lzdGVyRmls
ZS0+Z3JvdyhjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0
dXJuIDA7Ci0KLSAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBj
b3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1l
bnRzIHdpdGggdW5kZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVt
UGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVnaXN0ZXIq
IHNyYyA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGNhbGxG
cmFtZS0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGludCBlbmQgPSAt
Q2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZv
ciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07Ci0KLSAg
ICBlbmQgLT0gZGVsdGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3Rb
aV0gPSBqc1VuZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxs
RnJhbWU6OmNyZWF0ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1lIDw9IHJl
Z2lzdGVyRmlsZS0+ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0KIERFRklO
RV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9J
TklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUg
PSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0g
YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9y
Q2FsbCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFy
aXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNh
bGwpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRp
b25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FE
RFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkp
KTsKIApAQCAtMjIzNyw3ICsyMjA2LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9w
X2NvbnN0cnVjdAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxG
cmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxs
RnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBD
YWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zvcihj
YWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKICAg
ICBpZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9w
Q2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBj
cmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9u
IDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAko
d29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgSlNJbnRlcmZhY2VKSVRf
aAogI2RlZmluZSBKU0ludGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRp
b25zLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5j
bHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9B
c3NlbWJsZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBMTEludENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2RlZmluZSBMTElO
VF9FWEVDVVRJT05fVFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFDSU5HIDAKKwor
I2VuZGlmIC8vIExMSW50Q29tbW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNs
dWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNp
bmNsdWRlICJPcGNvZGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisK
K0RhdGE6OkRhdGEoKQorICAgIDogbV9leGNlcHRpb25JbnN0cnVjdGlvbnMobmV3IEluc3RydWN0
aW9uW21heE9wY29kZUxlbmd0aCArIDFdKQorICAgICwgbV9vcGNvZGVNYXAobmV3IE9wY29kZVtu
dW1PcGNvZGVJRHNdKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3Ro
ICsgMTsgKytpKQorICAgICAgICBtX2V4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIg
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5l
KTsKKyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBtX29wY29kZU1hcFtvcGNv
ZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUpOworICAgIEZPUl9FQUNI
X09QQ09ERV9JRChPUENPREVfRU5UUlkpOworI3VuZGVmIE9QQ09ERV9FTlRSWQorfQorCitEYXRh
Ojp+RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAg
ZGVsZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAor
CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RGF0YV9oCisj
ZGVmaW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKwor
bmFtZXNwYWNlIExMSW50IHsKKworI2lmIEVOQUJMRShMTElOVCkKK2NsYXNzIERhdGEgeworcHVi
bGljOgorICAgIERhdGEoKTsKKyAgICB+RGF0YSgpOworICAgIAorICAgIEluc3RydWN0aW9uKiBl
eGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAg
eworICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgfQorcHJpdmF0ZToKKyAgICBJbnN0
cnVjdGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgT3Bjb2RlKiBtX29wY29kZU1h
cDsKK307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQpCisKKyNpZiBDT01QSUxFUihDTEFORykKKyNw
cmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdu
b3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlmCisKK2NsYXNzIERhdGEgeworcHVibGlj
OgorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAK
KyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfTsKKworI2lmIENPTVBJTEVSKENMQU5H
KQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFC
TEUoTExJTlQpCisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJ
bnREYXRhX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlw
b2ludHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCisjaWYgRU5BQkxFKExM
SU5UKQorCisjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgor
I2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5o
IgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlv
bkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlD
aGVjaykKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaWYg
KGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpI
b3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVS
ZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBqaXRDb2Rl
ID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2Vs
Zk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgYXJp
dHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgaml0
Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5
VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICAgICAgYXJp
dHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNr
VGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFT
U0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGppdENvZGUgPSBKSVRDb2RlKGds
b2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0
b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBhcml0eUNoZWNrID0gZ2xvYmFs
RGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJh
dG9yKS5jb2RlKCk7Cit9CisKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5V
c2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVy
Q29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9ldmFsX3Byb2xvZ3VlKSkpKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxE
YXRhLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnBy
ZXRlclRodW5rKTsKK30KKwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNh
blVzZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSkp
OworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGds
b2JhbERhdGEuZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwor
I2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEVudHJ5cG9pbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBMTEludEVudHJ5cG9pbnRzX2gKKyNkZWZpbmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNp
bmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUg
IkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV2
YWxDb2RlQmxvY2s7CitjbGFzcyBKSVRDb2RlOworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOworY2xh
c3MgUHJvZ3JhbUNvZGVCbG9jazsKKworbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5j
dGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgSklU
Q29kZSYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjayk7Cit2b2lkIGdldEV2YWxF
bnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5
cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYpOworCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBv
aW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXZhbENvZGVCbG9jayosIEpJVENvZGUmIGpp
dENvZGUpCit7CisgICAgZ2V0RXZhbEVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9
CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQ
cm9ncmFtQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRQcm9ncmFtRW50
cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludEVudHJ5
cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4
Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQor
CisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVk
ZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAi
TExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNh
bGxlcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0g
JmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50
ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2Ny
aXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KAorICAgICAgICBnbG9iYWxEYXRh
LCBleGVjLT5jYWxsZXJGcmFtZSgpLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sCisgICAgICAgIGV4
ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChleGVjLT5jYWxs
ZXJGcmFtZSgpLCBleGVjLT5yZXR1cm5QQygpKSk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5U
b1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4g
ZXhlYy0+Z2xvYmFsRGF0YSgpLmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30K
KworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlv
biogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERh
dGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhj
ZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNj
cmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBn
bG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9u
cygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBnbG9iYWxEYXRhLT5sbGludERhdGEuZXhj
ZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSog
ZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9
ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmlu
dGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAoY2FsbFRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+
ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2Jh
bERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2so
KS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJuIGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpOworfQorCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmluZSBM
TEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8
d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2Ug
TExJbnQgeworCisvLyBUaHJvdyB0aGUgY3VycmVudGx5IGFjdGl2ZSBleGNlcHRpb24gaW4gdGhl
IGNvbnRleHQgb2YgdGhlIGNhbGxlcidzIGNhbGwgZnJhbWUuCit2b2lkIGludGVycHJldGVyVGhy
b3dJbkNhbGxlcihFeGVjU3RhdGUqKTsKKworLy8gVGVsbHMgeW91IHdoZXJlIHRvIGp1bXAgdG8g
aWYgeW91IHdhbnQgdG8gcmV0dXJuLXRvLXRocm93LCBhZnRlciB5b3UndmUgYWxyZWFkeQorLy8g
c2V0IHVwIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gdGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0lu
c3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOwor
CisvLyBTYXZlcyB0aGUgY3VycmVudCBQQyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2Vl
cGluZywgYW5kIGdpdmVzIHlvdSBhIFBDCisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJw
cmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBz
bG90cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBp
bnRlcnByZXRlcidzCisvLyBleGNlcHRpb24gaGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZl
IGl0IHRoZSBQQyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2gg
dG8ganVzdCByZXR1cm4gdGhhdCBQQyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMK
Ky8vIGxldHMgeW91IHRocmVhZCBleGNlcHRpb24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVs
cGVyIGZ1bmN0aW9ucyB1c2VkIGJ5CisvLyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJl
dHVyblRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hl
biB5b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxsIHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhl
Y1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisK
KyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludEV4Y2VwdGlvbnNfaApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJMTEludEhlbHBlcnMuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkFy
Z3VtZW50cy5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQ
YXRocy5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0
dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVC5oIgor
I2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1
ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIK
KyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdGF0aWNT
Y29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5o
IgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgi
CisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMu
aCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKKyNkZWZpbmUgTExJTlRf
QkVHSU4oKSBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZleGVjLT5nbG9iYWxEYXRhKCks
IGV4ZWMpCisKKyNkZWZpbmUgTExJTlRfT1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRSKHBjW2lu
ZGV4XS51Lm9wZXJhbmQpKQorI2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihwY1tp
bmRleF0udS5vcGVyYW5kKSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNv
bmQpIGRvIHsgICAgICAgXAorICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGE7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGI7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgfSBwYWlyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgaW50NjRfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICB9IF9fcnRfdTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBfX3J0X3UucGFpci5hID0gZmlyc3Q7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBfX3J0X3UucGFpci5iID0gc2Vjb25kOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBy
ZXR1cm4gX19ydF91Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUg
KGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhwYywg
ZXhlYykKKworI2RlZmluZSBMTElOVF9USFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fdF9nbG9iYWxEYXRh
ID0gZXhlYy0+Z2xvYmFsRGF0YSgpOyAgICAgICAgXAorICAgICAgICBfX3RfZ2xvYmFsRGF0YS5l
eGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgXAorICAgICAgICBwYyA9
IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NIRUNLX0VY
Q0VQVElPTigpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZ
KGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSB7ICAgXAorICAgICAgICAgICAgcGMgPSBy
ZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElO
VF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUg
KGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORCgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisg
ICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3
aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQlJBTkNIKG9wY29kZSwgY29uZGl0aW9uKSBk
byB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYm9vbCBfX2JfY29uZGl0aW9uID0g
KGNvbmRpdGlvbik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgaWYgKF9fYl9jb25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIHBjICs9IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUu
b3BlcmFuZDsgICAgICAgIFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09ERV9M
RU5HVEgob3Bjb2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRf
RU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk4odmFsdWUpIGRvIHsgICAg
ICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7
ICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAg
XAorICAgICAgICBMTElOVF9PUCgxKSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAgXAorICAg
ICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hp
bGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcGNvZGUsIHZhbHVl
KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcnBfcmV0dXJuVmFsdWUg
PSAodmFsdWUpOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5U
X09QKDEpID0gX19ycF9yZXR1cm5WYWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1sw
XSA9IFwKKyAgICAgICAgICAgIEpTVmFsdWU6OmVuY29kZShfX3JwX3JldHVyblZhbHVlKTsgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5l
IExMSU5UX0NBTExfRU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RXTygo
Y2FsbFRhcmdldCksIChleGVjKSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBj
LCBleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3Rh
dGUqIF9fY3RfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBJbnN0cnVjdGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fY3RfZ2xvYmFsRGF0
YSA9IChfX2N0X2V4ZWMpLT5nbG9iYWxEYXRhKCk7ICAgICAgXAorICAgICAgICBfX2N0X2dsb2Jh
bERhdGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3RfZXhlYywgY2FsbFRvVGhyb3coX19jdF9l
eGVjLCBfX2N0X3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9D
QUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBFeGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jY2VfcGMgPSAocGMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtF
TFkoX19jY2VfZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9UaHJvdyhf
X2NjZV9leGVjLCBfX2NjZV9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUg
TExJTlRfQ0FMTF9SRVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMg
PSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9p
ZCogX19jcl9jYWxsVGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19jcl9leGVjLT5jYWxs
ZXJGcmFtZSgpLCBfX2NyX3BjKTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2Ny
X2V4ZWMsIF9fY3JfY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChm
YWxzZSkKKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQo
RXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVy
YW5kKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRy
YWNlKCVkKTogJWQ6ICVkXG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAg
ICAgICAgZXhlYywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+
Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5n
bG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAg
ICAgICAgICAgZnJvbVdoZXJlLAorICAgICAgICAgICBvcGVyYW5kLAorICAgICAgICAgICBwY1tv
cGVyYW5kXS51Lm9wZXJhbmQpOworICAgIExMSU5UX0VORCgpOworfQorCitleHRlcm4gIkMiIEhl
bHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVj
dGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIEpTVmFsdWUgdmFs
dWUgPSBMTElOVF9PUF9DKG9wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICB1bmlvbiB7CisgICAgICAg
IHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCB0YWc7CisgICAgICAgICAgICB1aW50MzJf
dCBwYXlsb2FkOworICAgICAgICB9IGJpdHM7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlIGFzVmFs
dWU7CisgICAgfSB1OworICAgIHUuYXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7Cisg
ICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAl
ZDogJWQ6ICUwOHg6JTA4eCIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAg
ICAgICBleGVjLAorICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5j
b2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmds
b2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAg
ICAgICAgICBmcm9tV2hlcmUsCisgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29w
ZXJhbmRdLnUub3BlcmFuZCwKKyAgICAgICAgICAgdS5iaXRzLnRhZywKKyAgICAgICAgICAgdS5i
aXRzLnBheWxvYWQpOworI2lmbmRlZiBOREVCVUcKKyAgICBwcmludGYoIjogJXMiLCB2YWx1ZS5k
ZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIHByaW50ZigiXG4iKTsKKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpCit7CisgICAgcHJpbnRm
KCIlcCAvICVwOiBpbiBwcm9sb2d1ZS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kKQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2Fs
bGVlKCkpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNF
eGVjdXRhYmxlKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2Vu
ZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiAlcyBvZiBm
dW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0g
JXUsIG51bUNhbGxlZVJlZ2lzdGVycyA9ICV1LlxuIiwKKyAgICAgICAgICAgY29kZUJsb2NrLCBl
eGVjLCBjb21tZW50LCBjYWxsZWUsIGV4ZWN1dGFibGUsCisgICAgICAgICAgIGNvZGVCbG9jay0+
bV9udW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNh
bGxlZVJlZ2lzdGVycyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1
bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2Fs
bCBwcm9sb2d1ZSIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAg
ICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVG
b3JDb25zdHJ1Y3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0
cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShl
eGVjLCAiY2FsbCBhcml0eSBjaGVjayIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQor
eworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IGFyaXR5IGNoZWNr
IiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKHRyYWNlKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwg
IiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAg
ICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpKSk7CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50ZigiJXMsICIs
IG9wY29kZU5hbWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
cGNbMF0udS5vcGNvZGUpXSk7CisjZWxzZQorICAgIHByaW50Zigib3AjJXUsICIsIGV4ZWMtPmds
b2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpKTsKKyNl
bmRpZgorICAgIHByaW50Zigic2NvcGUgJXBcbiIsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2UpCit7Cisg
ICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUs
IHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAg
ICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMt
PmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+
Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisg
ICAgICAgICAgIGV4ZWMtPnJldHVyblBDKCkudmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK2lubGluZSBib29sIHNob3VsZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gWW91
IGNhbiBtb2RpZnkgdGhpcyB0byB0dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0
aGUgd29ybGQuCisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKTsKK30K
KworZW51bSBFbnRyeUtpbmQgeyBQcm9sb2d1ZSwgQXJpdHlDaGVjayB9Oworc3RhdGljIEhlbHBl
clJldHVyblR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENv
ZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBjaGFyICpuYW1lLCBFbnRyeUtpbmQga2luZCkKK3sK
KyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgJXMg
d2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIG5hbWUsIGNvZGVCbG9jay0+
bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICghc2hvdWxkSklU
KGV4ZWMpKSB7CisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAg
ICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIGlmICghY29kZUJsb2Nr
LT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJP
U0VfT1NSKQorICAgICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxu
Iik7CisjZW5kaWYKKyAgICB9CisgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgaWYgKGtp
bmQgPT0gUHJvbG9ndWUpCisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5nZXRK
SVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7CisgICAgQVNTRVJU
KGtpbmQgPT0gQXJpdHlDaGVjayk7CisgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdl
dEpJVENvZGVXaXRoQXJpdHlDaGVjaygpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGV4ZWMpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4
ZWMsIHBjLCBleGVjLT5jb2RlQmxvY2soKSwgImVudHJ5X29zciIsIFByb2xvZ3VlKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHJl
dHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4
ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jYWxsIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChl
bnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZW50cnlPU1Io
ZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdl
bmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3QiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5
X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9T
UihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+
Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5Q2hlY2siLCBBcml0eUNoZWNrKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
ZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICByZXR1
cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVj
dXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlf
b3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOworfQor
CitMTElOVF9IRUxQRVJfREVDTChsb29wX29zcikKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9j
ayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1Ip
CisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCBsb29wX29zciB3aXRoIGV4ZWN1dGVDb3VudGVyID0g
JWRcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2Vu
ZGlmCisgICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2Nr
LT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVj
KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xv
YmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50
ZigiICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAg
ICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICAKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRK
SVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIAorICAgIFZlY3RvcjxCeXRl
Y29kZUFuZE1hY2hpbmVPZmZzZXQ+IG1hcDsKKyAgICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+
ZGVjb2RlKG1hcCk7CisgICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmlu
YXJ5U2VhcmNoPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQsIEJ5dGVjb2RlQW5k
TWFjaGluZU9mZnNldDo6Z2V0Qnl0ZWNvZGVJbmRleD4obWFwLmJlZ2luKCksIG1hcC5zaXplKCks
IHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICBBU1NFUlQobWFw
cGluZyk7CisgICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9PSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4ocGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyAg
ICAKKyAgICB2b2lkKiBqdW1wVGFyZ2V0ID0gY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3NBdE9mZnNldChtYXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKKyAgICBB
U1NFUlQoanVtcFRhcmdldCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOX1RXTyhqdW1wVGFyZ2V0
LCBleGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSkKK3sKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRf
VkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCByZXBsYWNlIHdpdGggZXhlY3V0
ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50
ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAg
IGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBF
TkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMg
YWxyZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgY29kZUJs
b2NrLT5qaXRTb29uKCk7CisgICAgfSBlbHNlCisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFu
eXRpbWVTb29uKCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJl
Z2lzdGVyX2ZpbGVfY2hlY2spCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyNpZiBMTElOVF9IRUxQ
RVJfVFJBQ0lORworICAgIHByaW50ZigiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0IHdpdGggZXhlYyA9
ICVwLlxuIiwgZXhlYyk7CisgICAgcHJpbnRmKCJDb2RlQmxvY2sgPSAlcC5cbiIsIGV4ZWMtPmNv
ZGVCbG9jaygpKTsKKyAgICBwcmludGYoIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBl
eGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgIHByaW50ZigiTnVt
IHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bVZhcnMpOworICAgIHByaW50
ZigiQ3VycmVudCBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0
ZXItPnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKKyNlbmRpZgorICAgIEFTU0VSVCgmZXhlYy0+cmVn
aXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSA+IGV4ZWMt
Pmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOworICAgIGlm
IChVTkxJS0VMWSghZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUo
KS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVS
ZWdpc3RlcnNdKSkpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAg
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJy
b3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAg
ICAgcGMgPSByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKGV4ZWMpOworICAgIH0KKyAg
ICBMTElOVF9FTkRfSU1QTCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9h
cml0eUNoZWNrKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVj
ID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5nbG9iYWxEYXRh
KCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ2FsbCk7CisgICAgaWYgKCFu
ZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBl
eGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4
ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIExM
SU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+
KDEpKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRo
czo6YXJpdHlDaGVja0ZvcihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5y
ZWdpc3RlckZpbGUoKSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgaWYgKCFuZXdFeGVjKSB7Cisg
ICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxE
YXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAg
ICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9U
V08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7
CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKK3sKKyAgICBMTElOVF9CRUdJTigp
OworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGluZyBhbiBhY3Rp
dmF0aW9uLCBleGVjID0gJXAhXG4iLCBleGVjKTsKKyNlbmRpZgorICAgIEpTQWN0aXZhdGlvbiog
YWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yywgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlYy0+Y29kZUJsb2NrKCktPm93
bmVyRXhlY3V0YWJsZSgpKSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNo
YWluKCktPnB1c2goYWN0aXZhdGlvbikpOworICAgIExMSU5UX1JFVFVSTihKU1ZhbHVlKGFjdGl2
YXRpb24pKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpTVmFsdWUo
QXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKSk7CisgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgZXhlYy0+dW5jaGVja2VkUihwY1sxXS51Lm9wZXJhbmQp
ID0gYXJndW1lbnRzOworICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3RoaXMpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGFzRnVuY3Rpb24oZXhlYy0+
Y2FsbGVlKCkpOworICAgIAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBDb25zdHJ1Y3REYXRh
IGNvbnN0cnVjdERhdGE7CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5n
ZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RU
eXBlSlMpOworI2VuZGlmCisgICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgSlNW
YWx1ZSBwcm90byA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAocHJvdG8uaXNPYmpl
Y3QoKSkKKyAgICAgICAgc3RydWN0dXJlID0gYXNPYmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChl
eGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGVsc2UKKyAgICAgICAgc3RydWN0dXJlID0gY29uc3Ry
dWN0b3ItPnNjb3BlKCktPmdsb2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAg
ICAKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJl
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOwor
ICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBMTElOVF9SRVRVUk4odjEudG9UaGlz
T2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3Qp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlP
YmplY3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5KQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4
ZWMsIGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4oJkxMSU5UX09QKDIpKSwgcGNbM10udS5vcGVyYW5k
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMs
IGV4ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihwY1syXS51Lm9wZXJhbmQpLCBwY1sz
XS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdleHAp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBSZWdFeHAqIHJlZ0V4cCA9IGV4ZWMtPmNvZGVC
bG9jaygpLT5yZWdleHAocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIXJlZ0V4cC0+aXNWYWxp
ZCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxp
ZCBmbGFnIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSk7CisgICAgTExJTlRfUkVU
VVJOKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVj
dHVyZSgpLCByZWdFeHApKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUxMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
cSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpT
VmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVl
OjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1Zh
bHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8
dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTx0cnVlPihl
eGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4
ZWMpICsgMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYykKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wb3N0X2luYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGRvdWJsZSByZXN1bHQg
PSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikg
PSBqc051bWJlcihyZXN1bHQgKyAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYykKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9O
dW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQgLSAxKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl90b19qc251bWJlcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JF
VFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKC1MTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QX0MoMikuanNWYWx1
ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyNp
ZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVHJ5aW5nIHRvIGFkZCAlcyIsIHYx
LmRlc2NyaXB0aW9uKCkpOworICAgIHByaW50ZigiIHRvICVzLlxuIiwgdjIuZGVzY3JpcHRpb24o
KSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNTdHJpbmcoKSAmJiAhdjIuaXNPYmplY3Qo
KSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIu
dG9TdHJpbmcoZXhlYykpKTsKKyAgICAKKyAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051
bWJlcigpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIodjEuYXNOdW1iZXIoKSArIHYy
LmFzTnVtYmVyKCkpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNBZGRTbG93Q2FzZShleGVj
LCB2MSwgdjIpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKSAqIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVy
KGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykgLSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihl
eGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhl
YykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCkKK3sKKyAgICBMTElOVF9C
RUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihmbW9kKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLnRvTnVtYmVyKGV4ZWMpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihl
eGVjKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKS50b0ludDMyKGV4ZWMpIDw8IChMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQz
MihleGVjKSAmIDMxKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gKExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LnRvVUludDMyKGV4ZWMpICYgMzEpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91
cnNoaWZ0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVy
KExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpID4+IChMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSAmIDMxKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfYml0YW5kKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJO
KGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgJiBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9iaXRvcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIHwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfYml0eG9yKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpz
TnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgXiBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9iaXRub3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIofkxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKK3sKKyAgICBMTElOVF9C
RUdJTigpOworICAgIEpTVmFsdWUgYmFzZVZhbCA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOwor
I2lmbmRlZiBOREVCVUcKKyAgICBUeXBlSW5mbyB0eXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpOwor
ICAgIEFTU0VSVCghYmFzZVZhbC5pc09iamVjdCgpCisgICAgICAgICAgIHx8ICEodHlwZUluZm8g
PSBhc09iamVjdChiYXNlVmFsKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkpLmltcGxlbWVudHNI
YXNJbnN0YW5jZSgpKTsKKyNlbmRpZgorICAgIExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRQYXJh
bUVycm9yKGV4ZWMsICJpbnN0YW5jZW9mIiwgYmFzZVZhbCkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfaW5zdGFuY2VvZikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5U
X1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluc3RhbmNlT2ZTbG93KGV4ZWMs
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQyg0KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBl
b2YpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNUeXBlU3RyaW5n
Rm9yVmFsdWUoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IEpTVmFsdWUgdiA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4odi5pc0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygp
Lm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkuaXNCb29s
ZWFuKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJlcikKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
aXNfc3RyaW5nKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihpc0pTU3RyaW5nKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzT2JqZWN0VHlwZShMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rp
b25UeXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaW4pCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9yZXNvbHZlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOX1BS
T0ZJTEVEKG9wX3Jlc29sdmUsIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMt
PmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRCgKKyAgICAgICAgb3BfcmVzb2x2ZV9za2lwLAorICAg
ICAgICBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVNraXAoCisgICAgICAgICAgICBleGVjLAor
ICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5k
KSwKKyAgICAgICAgICAgIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitzdGF0aWMgSlNWYWx1ZSBy
ZXNvbHZlR2xvYmFsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJU
KGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNb
Ml0udS5vcGVyYW5kOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1
cmUuZ2V0KCk7CisgICAgCisgICAgQVNTRVJUX1VOVVNFRChzdHJ1Y3R1cmUsIHN0cnVjdHVyZSAh
PSBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVu
dCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNs
b3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0
eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xv
dC5nZXRWYWx1ZShleGVjLCBpZGVudCk7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFs
dWUoKSAmJiAhZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25h
cnkoKQorICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgewor
ICAgICAgICAgICAgcGNbM10udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMt
Pmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0
LT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAg
IAorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVVbmRlZmluZWRWYXJp
YWJsZUVycm9yKGV4ZWMsIGlkZW50KTsKKyAgICByZXR1cm4gSlNWYWx1ZSgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWwsIHJlc29sdmVH
bG9iYWwoZXhlYywgcGMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVf
Z2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk5f
UFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYywgcmVzb2x2ZUdsb2JhbChleGVjLCBw
YykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9n
bG9iYWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTl9Q
Uk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljLCBDb21tb25TbG93UGF0aHM6Om9wUmVz
b2x2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygp
LT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKHBjWzNdLnUub3BlcmFuZCkg
eworICAgICAgICBKU1ZhbHVlIGJhc2UgPSBKU0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBl
eGVjLT5zY29wZUNoYWluKCksIHRydWUpOworICAgICAgICBpZiAoIWJhc2UpCisgICAgICAgICAg
ICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMs
IGlkZW50LnVzdHJpbmcoKSkpOworICAgICAgICBMTElOVF9SRVRVUk4oYmFzZSk7CisgICAgfQor
ICAgIAorICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2Jhc2UsIEpTQzo6cmVz
b2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgZmFsc2UpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoTExJTlRfT1Ao
MSkuanNWYWx1ZSgpKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIElkZW50
aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVy
YW5kKTsKKyAgICBpZiAoIW9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90
KSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdu
bWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdp
dGhCYXNlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFu
ZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElO
VF9PUCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUg
cHJvZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBp
dC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmVfd2l0aF90aGlzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhUaGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9j
aygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICAvLyBG
SVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8g
aXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4KKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRl
bnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsK
KyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIFBy
b3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VW
YWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
OworICAgIExMSU5UX09QKDEpID0gcmVzdWx0OworCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwo
KQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkKKyAgICAgICAgJiYgc2xvdC5zbG90QmFz
ZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAmJiBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09
IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNl
bGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
YmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUt
PmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5
cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKKyAgICAgICAgICAgIHBjWzRd
LnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBwY1s1
XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAg
ICAgICB9CisgICAgfQorICAgIAorICAgIHBjW09QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X2lkKSAt
IDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1l
bnRzX2xlbmd0aCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxv
Y2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUp
OworICAgIExMSU5UX1JFVFVSTihiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAg
IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFu
ZCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsK
KyAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5w
dXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCksIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOworICAgIAorICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5p
c0NhY2hlYWJsZSgpKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFz
ZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxs
LT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2Fj
aGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygp
LnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpCisgICAgICAgICAgICAmJiBiYXNlQ2VsbCA9PSBz
bG90LmJhc2UoKSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkg
PT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgeworICAgICAgICAgICAgICAgIGlmICgh
c3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+cHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFj
aXR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBz
b21lIG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKKyAgICAgICAgICAgICAgICAgICAgLy8gYmVsb3cg
bWF5IEdDLgorICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisKKyAgICAgICAgICAgICAgICAgICAgbm9y
bWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5p
c09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAor
ICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93
bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgICAgICAgICAg
ICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNW
YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3RydWN0dXJlLnNldCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hh
aW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKKyAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKGNoYWluKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbN10udS5zdHJ1
Y3R1cmVDaGFpbi5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRh
KCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNoYWluKTsKKyAgICAgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCisgICAgICAg
ICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9j
YXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBjWzBd
LnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAg
ICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAg
IGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0
dXJlKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNl
dCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
ICAgIAorICAgIGlmIChmYWxzZSAmJiAhc3RyY21wKGlkZW50LmFzY2lpKCkuZGF0YSgpLCAicmVu
ZGVyUmVmbGVjdGlvbnMiKSkKKyAgICAgICAgcHJpbnRmKCJGaW5pc2hpbmcgYWNjZXNzIHRvIHJl
bmRlclJlZmxlY3Rpb25zIGZyb20gTExJbnQgc2xvdyBwYXRoLlxuIik7CisgICAgCisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVC
bG9jaygpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9PYmplY3QoZXhlYyk7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1l
dGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMsIGNvZGVCbG9jay0+
aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisg
ICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0
ZSBwcm9wZXJ0eS4iKSk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkp
OworfQorCitpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUg
YmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKK3sKKyAgICBpZiAoTElLRUxZKGJhc2VWYWx1
ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgaWYgKEpTVmFs
dWUgcmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkoZXhlYywg
YXNTdHJpbmcoc3Vic2NyaXB0KS0+dmFsdWUoZXhlYykpKQorICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisgICAgCisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CisgICAg
ICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNT
dHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkK
KyAgICAgICAgICAgIHJldHVybiBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBp
KTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNC
eXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpCisgICAgICAgICAgICByZXR1
cm4gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAor
ICAgICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBpKTsKKyAgICB9CisgICAgCisgICAg
SWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBwcm9wZXJ0eSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9ieV92YWwsIGdldEJ5VmFsKGV4
ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gTExJTlRfT1AoMikuanNW
YWx1ZSgpOworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAgICAgIGFyZ3VtZW50cyA9IEFyZ3Vt
ZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYyk7CisgICAgICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOworICAgICAgICBMTElOVF9PUCgyKSA9IGFyZ3VtZW50czsKKyAgICAg
ICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5v
cGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihnZXRC
eVZhbChleGVjLCBhcmd1bWVudHMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgp
LCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3B1dF9ieV92YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFs
dWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExM
SU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKTsKKyAgICAKKyAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkg
eworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlm
IChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgeworICAgICAgICAgICAgSlNBcnJheSoganNBcnJheSA9
IGFzQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRl
eChpKSkKKyAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRleChnbG9iYWxEYXRhLCBpLCB2
YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgSlNBcnJheTo6cHV0QnlJ
bmRleChqc0FycmF5LCBleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBMTElOVF9FTkQoKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpCisgICAgICAg
ICAgICAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAg
ICAgICAgICAgSlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVl
KTsKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBq
c0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNJbnQzMigpKTsKKyAgICAgICAgICAgICAg
ICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc051
bWJlcigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVl
LmFzTnVtYmVyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaSwgdmFsdWUpOworICAg
ICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShl
eGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChleGVjLT5jb2RlQmxv
Y2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVydHks
IHZhbHVlLCBzbG90KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2RlbF9ieV92YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBiYXNlT2Jq
ZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIAorICAgIEpTVmFsdWUgc3Vic2Ny
aXB0ID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisgICAgYm9vbCBjb3VsZERlbGV0
ZTsKKyAgICAKKyAgICB1aW50MzJfdCBpOworICAgIGlmIChzdWJzY3JpcHQuZ2V0VUludDMyKGkp
KQorICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0
ZVByb3BlcnR5QnlJbmRleChiYXNlT2JqZWN0LCBleGVjLCBpKTsKKyAgICBlbHNlIHsKKyAgICAg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHko
ZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMsIHByb3BlcnR5
KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBleGVjLT5jb2RlQmxvY2so
KS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgCisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHV0X2J5X2luZGV4KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfT1BfQygx
KS5qc1ZhbHVlKCkucHV0KGV4ZWMsIHBjWzJdLnUub3BlcmFuZCwgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHV0X2dldHRlcl9zZXR0ZXIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBBU1NFUlQoTExJ
TlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0g
YXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICAKKyAgICBHZXR0ZXJTZXR0ZXIq
IGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tf
RVhDRVBUSU9OKCk7CisgICAgCisgICAgSlNWYWx1ZSBnZXR0ZXIgPSBMTElOVF9PUCgzKS5qc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSBzZXR0ZXIgPSBMTElOVF9PUCg0KS5qc1ZhbHVlKCk7CisgICAg
QVNTRVJUKGdldHRlci5pc09iamVjdCgpIHx8IGdldHRlci5pc1VuZGVmaW5lZCgpKTsKKyAgICBB
U1NFUlQoc2V0dGVyLmlzT2JqZWN0KCkgfHwgc2V0dGVyLmlzVW5kZWZpbmVkKCkpOworICAgIEFT
U0VSVChnZXR0ZXIuaXNPYmplY3QoKSB8fCBzZXR0ZXIuaXNPYmplY3QoKSk7CisgICAgCisgICAg
aWYgKCFnZXR0ZXIuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgYWNjZXNzb3ItPnNldEdldHRlcihl
eGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KGdldHRlcikpOworICAgIGlmICghc2V0dGVyLmlz
VW5kZWZpbmVkKCkpCisgICAgICAgIGFjY2Vzc29yLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBhc09iamVjdChzZXR0ZXIpKTsKKyAgICBiYXNlT2JqLT5wdXREaXJlY3RBY2Nlc3NvcigK
KyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLAorICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+
aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAgICAgICBhY2Nlc3NvciwgQWNjZXNzb3Ip
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam1wX3Nj
b3BlcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIHVuc2lnbmVkIGNvdW50ID0gcGNbMV0u
dS5vcGVyYW5kOworICAgIFNjb3BlQ2hhaW5Ob2RlKiB0bXAgPSBleGVjLT5zY29wZUNoYWluKCk7
CisgICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAgIHRtcCA9IHRtcC0+cG9wKCk7CisgICAgZXhl
Yy0+c2V0U2NvcGVDaGFpbih0bXApOworICAgIHBjICs9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2p0cnVlLCBMTElOVF9PUF9DKDEp
LmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfamZhbHNlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2pm
YWxzZSwgIUxMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IExMSU5UX0JSQU5DSChvcF9qbGVzcywganNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfam5sZXNzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJB
TkNIKG9wX2pubGVzcywgIWpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2pncmVhdGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9w
X2pncmVhdGVyLCBqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBM
TElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
am5ncmVhdGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2pu
Z3JlYXRlciwgIWpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bGVzc2VxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNz
ZXEsIGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNz
ZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzZXEs
ICFqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVy
ZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXJl
cSwganNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVh
dGVyZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVh
dGVyZXEsICFqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9z
d2l0Y2hfaW1tKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUg
PSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoc2NydXRpbmVlLmlzRG91Ymxl
KCkpOworICAgIGRvdWJsZSB2YWx1ZSA9IHNjcnV0aW5lZS5hc0RvdWJsZSgpOworICAgIGludDMy
X3QgaW50VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSk7CisgICAgaW50IGRlZmF1
bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKHZhbHVlID09IGludFZhbHVlKSB7
CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAg
ICAgIHBjICs9IGNvZGVCbG9jay0+aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3Bl
cmFuZCkub2Zmc2V0Rm9yVmFsdWUoaW50VmFsdWUsIGRlZmF1bHRPZmZzZXQpOworICAgIH0gZWxz
ZQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0cmluZykKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7Cisg
ICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKCFzY3J1dGlu
ZWUuaXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBlbHNlIHsK
KyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAg
ICAgcGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5k
KS5vZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGluZWUpLT52YWx1ZShleGVjKS5pbXBsKCks
IGRlZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25ld19mdW5jKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NFUlQoY29kZUJs
b2NrLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZQorICAgICAgICAgICB8fCAhY29kZUJsb2Nr
LT5uZWVkc0Z1bGxTY29wZUNoYWluKCkKKyAgICAgICAgICAgfHwgZXhlYy0+dW5jaGVja2VkUihj
b2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpOworI2lmIExMSU5UX0hF
TFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGluZyBmdW5jdGlvbiFcbiIpOworI2VuZGlm
CisgICAgTExJTlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzJdLnUub3BlcmFu
ZCktPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXdfZnVuY19leHApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1syXS51Lm9wZXJhbmQp
OworICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBmdW5jdGlvbi0+bWFrZShleGVjLCBleGVjLT5zY29w
ZUNoYWluKCkpOworICAgIAorICAgIGlmICghZnVuY3Rpb24tPm5hbWUoKS5pc051bGwoKSkgewor
ICAgICAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBmdW5jdGlvblNjb3BlT2JqZWN0ID0gSlNTdGF0
aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKCksIGZ1bmMsIFJlYWRP
bmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGZ1bmMtPnNldFNjb3BlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZnVuYy0+c2NvcGUoKS0+cHVzaChmdW5jdGlvblNjb3BlT2JqZWN0KSk7CisgICAgfQor
ICAgIAorICAgIExMSU5UX1JFVFVSTihmdW5jKTsKK30KKworc3RhdGljIEhlbHBlclJldHVyblR5
cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMs
IEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgRXhl
Y1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICBKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworCisgICAgZXhlY0NhbGxlZS0+
c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENv
ZGVCbG9jaygwKTsKKworICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIENh
bGxEYXRhIGNhbGxEYXRhOworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRh
KGNhbGxlZSwgY2FsbERhdGEpOworICAgIAorICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2Fs
bFR5cGVKUyk7CisgICAgCisgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUhvc3QpIHsK
KyAgICAgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpk
ZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgICAg
IAorICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJw
cmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgICAgICBwcmludGYoIkNhbGwgY2Fs
bGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2Vu
ZGlmCisKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSk7CisgICAgICAg
IExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMs
IGNhbGxlZSkpOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3Qp
OworICAgIAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RU
eXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0RGF0
YSk7CisgICAgCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZUpTKTsK
KyAgICAKKyAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlSG9zdCkgeworICAg
ICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNv
bnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgTExJTlRf
Q0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJ
TkcKKyAgICAgICAgcHJpbnRmKCJDb25zdHJ1Y3RvciBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246
ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChjb25z
dHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVOb25lKTsKKyAgICBMTElOVF9DQUxMX1RIUk9XKGV4
ZWMsIHBjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKK30KKwor
aW5saW5lIEhlbHBlclJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwg
SW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUgY2Fs
bGVlQXNWYWx1ZSwgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCit7CisgICAg
SlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVlQXNWYWx1
ZSk7CisgICAgaWYgKCFjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkKKyAgICAgICAgcmV0dXJuIGhhbmRs
ZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIHBjLCBjYWxsZWVBc1ZhbHVlLCBraW5kKTsKKyAgICAKKyAg
ICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsK
KyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKSk7
CisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsK
KyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IDA7CisgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisg
ICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFk
ZHJlc3NGb3JDYWxsKCk7CisgICAgZWxzZSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhl
Y3V0YWJsZSk7CisgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+
Y29tcGlsZUZvcihleGVjQ2FsbGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOworICAgICAgICBp
ZiAoZXJyb3IpCisgICAgICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxl
ckZyYW1lKCksIHBjLCBlcnJvcik7CisgICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1
dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgICAgICBBU1NFUlQoY29kZUJs
b2NrKTsKKyAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKKyAg
ICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVX
aXRoQXJpdHlDaGVja0ZvcihraW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVB0
ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNz
Rm9yQ2FsbCgpOworICAgIH0KKyAgICAKKyAgICBpZiAoY2FsbExpbmtJbmZvKSB7CisgICAgICAg
IGlmIChjYWxsTGlua0luZm8tPmlzT25MaXN0KCkpCisgICAgICAgICAgICBjYWxsTGlua0luZm8t
PnJlbW92ZSgpOworICAgICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZXIgPSBleGVjQ2FsbGVlLT5j
YWxsZXJGcmFtZSgpOworICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQoZXhlY0NhbGxl
ci0+Z2xvYmFsRGF0YSgpLCBleGVjQ2FsbGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxl
KCksIGNhbGxlZSk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuc2V0KGV4
ZWNDYWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhl
Y3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFy
Z2V0ID0gY29kZVB0cjsKKyAgICAgICAgaWYgKGNvZGVCbG9jaykKKyAgICAgICAgICAgIGNvZGVC
bG9jay0+bGlua0luY29taW5nQ2FsbChjYWxsTGlua0luZm8pOworICAgIH0KKyAgICAKKyAgICBM
TElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVz
cygpKTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRl
KiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sK
KyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAg
ICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2Fy
eS4KKyAgICAvLyAtIElmIHBvc3NpYmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgor
ICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBh
bmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9
IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxl
ZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVl
LT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAg
ZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgCisgICAgQVNTRVJUKHBjWzRd
LnUuY2FsbExpbmtJbmZvKTsKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBr
aW5kLCBjYWxsZWVBc1ZhbHVlLCBwY1s0XS51LmNhbGxMaW5rSW5mbyk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgcmV0dXJu
IGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jb25zdHJ1Y3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICByZXR1cm4g
Z2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
Ly8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUgd2hpbGUgcmVz
cGVjdGluZyB0aGUgdmFyaWFibGUgYXJndW1lbnRzLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0
IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gUmV0dXJuIGEg
dHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZy
YW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAor
ICAgICAgICBleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZp
bGUoKSwKKyAgICAgICAgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpLCBwY1s0XS51Lm9wZXJhbmQpOworICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9O
KGV4ZWMsIHBjKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmls
ZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJh
bWUoZXhlYyk7CisgICAgZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291
bnQpLnRhZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9j
YWxsX3ZhcmFyZ3MpKTsKKyAgICAKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBj
LCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9jYWxsX2V2YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGNhbGxl
ZUFzVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBl
eGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICBKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0
QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2Fs
bGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJl
Z2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0
U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldFJldHVy
blBDKGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KCZsbGludF9nZW5lcmljX3JldHVybl9wb2lu
dCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKyAgICBleGVjLT51bmNoZWNr
ZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50
MzJfdD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfZXZhbCkpOworICAgIAorICAgIGlmICgh
aXNIb3N0RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQorICAgICAgICBy
ZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1
ZSk7CisgICAgCisgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0gZXZhbChleGVj
Q2FsbGVlKTsKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnBy
ZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsK
KyAgICBKU1ZhbHVlIGFjdGl2YXRpb25WYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAg
ICBpZiAoIWFjdGl2YXRpb25WYWx1ZSkgeworICAgICAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+
dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSku
anNWYWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmlj
dE1vZGUoKSkKKyAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVjKTsK
KyAgICAgICAgfQorICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9u
KiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0aW9uKGFjdGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZh
dGlvbi0+dGVhck9mZihleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBl
eGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJh
bmQpKS5qc1ZhbHVlKCkpCisgICAgICAgIGFzQXJndW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0aXZh
dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGFjdGl2YXRpb24pOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1l
bnRzKCkgJiYgIWV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAg
IGFzQXJndW1lbnRzKGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVy
KHBjWzFdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSktPnRlYXJPZmYoZXhlYyk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNTdHJpbmcoZXhlYywgJkxMSU5UX09QKDIp
LCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3By
aW1pdGl2ZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKS50b1ByaW1pdGl2ZShleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9nZXRfcG5hbWVzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1
ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICh2LmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKKyAgICAgICAgcGMgKz0gcGNbNV0udS5vcGVyYW5kOworICAgICAgICBMTElOVF9FTkQo
KTsKKyAgICB9CisgICAgCisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gby0+c3RydWN0dXJlKCk7CisgICAgSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IHN0cnVjdHVyZS0+ZW51bWVyYXRp
b25DYWNoZSgpOworICAgIGlmICghanNQcm9wZXJ0eU5hbWVJdGVyYXRvciB8fCBqc1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLT5jYWNoZWRQcm90b3R5cGVDaGFpbigpICE9IHN0cnVjdHVyZS0+cHJvdG90
eXBlQ2hhaW4oZXhlYykpCisgICAgICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBKU1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywgbyk7CisgICAgCisgICAgTExJTlRfT1AoMSkg
PSBKU1ZhbHVlKGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOworICAgIExMSU5UX09QKDIpID0gSlNW
YWx1ZShvKTsKKyAgICBMTElOVF9PUCgzKSA9IFJlZ2lzdGVyOjp3aXRoSW50KDApOworICAgIExM
SU5UX09QKDQpID0gUmVnaXN0ZXI6OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2l6
ZSgpKTsKKyAgICAKKyAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFtZXMpOworICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoTExJ
TlRfT1AoMikuanNWYWx1ZSgpKTsKKyAgICBKU1N0cmluZyogcHJvcGVydHkgPSBhc1N0cmluZyhM
TElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIGlmIChiYXNlLT5oYXNQcm9wZXJ0eShleGVjLCBJ
ZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5LT52YWx1ZShleGVjKSkpKSB7CisgICAgICAgIC8vIEdv
IHRvIHRhcmdldC4KKyAgICAgICAgcGMgKz0gcGNbNl0udS5vcGVyYW5kOworICAgIH0gLy8gRWxz
ZSwgZG9uJ3QgY2hhbmdlIHRoZSBQQywgc28gdGhlIGludGVycHJldGVyIHdpbGwgcmVsb29wLgor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29w
ZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDEpLmpz
VmFsdWUoKTsKKyAgICBKU09iamVjdCogbyA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBvOworICAgIGV4ZWMt
PnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKG8pKTsKKyAgICAKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVD
aGFpbigpLT5wb3AoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wdXNoX25ld19zY29wZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIHNjb3Bl
ID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmll
cihwY1syXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIERvbnREZWxldGUpOwor
ICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKHNjb3BlKSk7
CisgICAgTExJTlRfUkVUVVJOKHNjb3BlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Rocm93KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfVEhST1coTExJTlRfT1Bf
QygxKS5qc1ZhbHVlKCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVm
ZXJlbmNlX2Vycm9yKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfVEhST1coY3Jl
YXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9TdHJpbmco
ZXhlYyktPnZhbHVlKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1
ZykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBjWzFdLnUu
b3BlcmFuZDsKKyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOworICAgIGludCBs
YXN0TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5nbG9iYWxEYXRhKCku
aW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hv
b2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIAorICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSkt
PndpbGxFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJl
bmNlKCkpLT5kaWRFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8g
RU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVs
cGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhl
bHBlcnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEhlbHBlcnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEhlbHBlcnNfaAor
I2RlZmluZSBMTEludEhlbHBlcnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1l
c3BhY2UgTExJbnQgeworCit0eXBlZGVmIGludDY0X3QgSGVscGVyUmV0dXJuVHlwZTsKKworZXh0
ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiwg
SW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7CitleHRlcm4gIkMiIEhl
bHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24q
LCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7CisKKyNkZWZpbmUgTExJTlRfSEVMUEVSX0RF
Q0wobmFtZSkgXAorICAgIGV4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF8jI25hbWUo
RXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCisKK0xMSU5UX0hFTFBFUl9ERUNMKHRy
YWNlX3Byb2xvZ3VlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9u
X2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY2Fs
bCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpOwor
TExJTlRfSEVMUEVSX0RFQ0wodHJhY2UpOworTExJTlRfSEVMUEVSX0RFQ0woc3BlY2lhbF90cmFj
ZSk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0woZW50
cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9m
dW5jdGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0wobG9v
cF9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSk7CitMTElOVF9IRUxQRVJfREVDTChy
ZWdpc3Rlcl9maWxlX2NoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5
Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY3JlYXRlX3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVjdCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbmV3X2FycmF5KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlf
YnVmZmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfcmVnZXhwKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9ub3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2VxKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0
cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2xlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3NlcSk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wb3N0X2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9kZWMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uZWdhdGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2FkZCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbXVsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2Rpdik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3JzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdXJzaGlmdCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfYml0YW5kKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRv
cik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9iaXRub3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0
YW5jZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfdHlwZW9mKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRl
ZmluZWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Jvb2xlYW4pOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2lzX251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNf
c3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3QpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
bik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcmVzb2x2ZV9za2lwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZl
X2dsb2JhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1p
Yyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxf
ZHluYW1pYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9iYXNlKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcmVzb2x2ZV93aXRoX3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9p
ZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZGVsX2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1
dF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHV0X2dldHRlcl9zZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29w
ZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qZmFsc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pn
cmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2psZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVz
c2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dp
dGNoX2ltbSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2NoYXIpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25ld19mdW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJf
b2ZmX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2dldF9wbmFtZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3BvcF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2Nv
cGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2RlYnVnKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCk7CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8g
TExJbnRIZWxwZXJzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisjZGVmaW5lIExMSW50T2ZmbGlu
ZUFzbUNvbmZpZ19oCisKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgPHd0Zi9B
c3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0lubGluZUFzbS5oPgorI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4NikKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDEKKyNl
bHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisjZW5kaWYKKworI2lmIENQVShBUk1fVEhV
TUIyKQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5F
X0FTTV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyNkZWZpbmUgT0ZG
TElORV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNT
RVJUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUoQklHX0VORElBTikKKyNkZWZpbmUgT0ZG
TElORV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5E
SUFOIDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKExMSU5UX09TUl9UT19KSVQpCisjZGVmaW5lIE9G
RkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9F
TkFCTEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcKKyNkZWZpbmUg
T0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9B
U01fRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisKKyNpZiBDUFUoQVJNX1RIVU1CMikKKyNk
ZWZpbmUgT0ZGTElORV9BU01fR0xPQkFMX0xBQkVMKGxhYmVsKSAgICAgICAgICBcCisgICAgIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcobGFiZWwpICJcbiIgICAgICAgICAgXAorICAgIEhJREVfU1lN
Qk9MKG5hbWUpICJcbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiLnRodW1iXG4iICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIi50aHVtYl9mdW5jICIgVEhV
TUJfRlVOQ19QQVJBTShsYWJlbCkgIlxuIiAgXAorICAgIFNZTUJPTF9TVFJJTkcobGFiZWwpICI6
XG4iCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGFiZWwpICAgICAg
ICAgXAorICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxhYmVsKSAiXG4iICAgICAgICAgXAor
ICAgIEhJREVfU1lNQk9MKG5hbWUpICJcbiIgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFNZ
TUJPTF9TVFJJTkcobGFiZWwpICI6XG4iCisjZW5kaWYKKworI2VuZGlmIC8vIExMSW50T2ZmbGlu
ZUFzbUNvbmZpZ19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSW50ZXJw
cmV0ZXIuaCIKKyNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNp
bmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNH
bG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09i
amVjdC5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJK
U1N0cmluZy5oIgorI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKKyNpbmNsdWRlICJKU1ZhcmlhYmxl
T2JqZWN0LmgiCisjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKKyNpbmNsdWRlICJSZWdpc3Rl
ckZpbGUuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgi
CisjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIK
KyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX09GRlNFVE9GKGNsYXp6LCBmaWVsZCkgT0JKRUNUX09GRlNFVE9G
KGNsYXp6LCBmaWVsZCkKKworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQqIGR1bW15KCk7Cit9OworCitjb25zdCB1bnNpZ25l
ZCogTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpCit7CisvLyBUaGlzIGlzIGEgZmlsZSBn
ZW5lcmF0ZWQgYnkgb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRzX2V4dHJhY3Rvci5yYiwgYW5k
IGNvbnRhaW5zIGNvZGUKKy8vIHRvIGNyZWF0ZSBhIHRhYmxlIG9mIG9mZnNldHMsIHNpemVzLCBh
bmQgYSBoZWFkZXIgaWRlbnRpZnlpbmcgd2hhdCBjb21iaW5hdGlvbiBvZgorLy8gUGxhdGZvcm0u
aCBtYWNyb3Mgd2UgaGF2ZSBzZXQuIFdlIGluY2x1ZGUgaXQgaW5zaWRlIG9mIGEgbWV0aG9kIG9u
IExMSW50T2Zmc2V0c0V4dHJhY3RvcgorLy8gYmVjYXVzZSB0aGUgZmllbGRzIHdob3NlIG9mZnNl
dHMgd2UncmUgZXh0cmFjdGluZyBhcmUgbW9zdGx5IHByaXZhdGUuIFNvIHdlIG1ha2UgdGhlaXIK
Ky8vIGNsYXNzZXMgZnJpZW5kcyB3aXRoIExMSW50T2Zmc2V0c0V4dHJhY3RvciwgYW5kIGluY2x1
ZGUgdGhlIGhlYWRlciBoZXJlLCB0byBnZXQgdGhlIEMrKworLy8gY29tcGlsZXIgdG8ga2luZGx5
IHN0ZXAgYXNpZGUgYW5kIHlpZWxkIHRvIG91ciBiZXN0IGludGVudGlvbnMuCisjaW5jbHVkZSAi
TExJbnREZXNpcmVkT2Zmc2V0cy5oIgorICAgIHJldHVybiBleHRyYWN0b3JUYWJsZTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKK2ludCBtYWluKGludCwgY2hhcioqKQoreworICAgIC8vIE91
dCBvZiBhbiBhYnVuZGFuY2Ugb2YgY2F1dGlvbiwgbWFrZSBzdXJlIHRoYXQgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOjpkdW1teSgpIGlzIGxpdmUsCisgICAgLy8gYW5kIHRoZSBleHRyYWN0b3JUYWJs
ZSBpcyBsaXZlLCB0b28uCisgICAgcHJpbnRmKCIlcFxuIiwgSlNDOjpMTEludE9mZnNldHNFeHRy
YWN0b3I6OmR1bW15KCkpOworICAgIHJldHVybiAwOworfQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKKworI2lmIEVOQUJM
RShMTElOVCkKKworI2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgiCisjaW5jbHVkZSAiTGlua0J1
ZmZlci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2Vu
ZXJhdGVUaHVua1dpdGhKdW1wVG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCB2b2lkICgqdGFy
Z2V0KSgpKQoreworICAgIEpTSW50ZXJmYWNlSklUIGppdDsKKyAgICAKKyAgICAvLyBGSVhNRTog
dGhlcmUncyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gaXQgb24gWDg2LCBidXQgSSdtIG5v
dCBzdXJlIEkgY2FyZS4KKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0
cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdldCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDApOwor
ICAgIGppdC5qdW1wKEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgCisgICAgTGlua0J1ZmZl
ciBwYXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICBy
ZXR1cm4gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0
YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8o
Z2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSk7Cit9CisK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5l
cmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9j
aGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFy
aXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAg
cmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYg
ZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAg
IHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9ldmFsX3By
b2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2Vu
ZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVU
aHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSk7Cit9CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50VGh1bmtzX2gKKyNkZWZpbmUgTExJbnRUaHVua3Nf
aAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNp
bmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEpTR2xvYmFsRGF0YTsKKworbmFtZXNwYWNlIExMSW50IHsKKworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2Vu
ZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9y
Q2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihK
U0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlU
aHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxM
SW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludFRodW5rc19o
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzNzQgQEAK
KyMgQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBDcmFzaCBj
b3Vyc2Ugb24gdGhlIGxhbmd1YWdlIHRoYXQgdGhpcyBpcyB3cml0dGVuIGluICh3aGljaCBJIGp1
c3QgY2FsbAorIyAiYXNzZW1ibHkiIGV2ZW4gdGhvdWdoIGl0J3MgbW9yZSB0aGFuIHRoYXQpOgor
IworIyAtIE1vc3RseSBnYXMtc3R5bGUgb3BlcmFuZCBvcmRlcmluZy4gVGhlIGxhc3Qgb3BlcmFu
ZCB0ZW5kcyB0byBiZSB0aGUKKyMgICBkZXN0aW5hdGlvbi4gU28gImEgOj0gYiIgaXMgd3JpdHRl
biBhcyAibW92IGIsIGEiLiBCdXQgdW5saWtlIGdhcywKKyMgICBjb21wYXJpc29ucyBhcmUgaW4t
b3JkZXIsIHNvICJpZiAoYSA8IGIpIiBpcyB3cml0dGVuIGFzCisjICAgImJpbHQgYSwgYiwgLi4u
Ii4KKyMKKyMgLSAiYiIgPSBieXRlLCAiaCIgPSAxNi1iaXQgd29yZCwgImkiID0gMzItYml0IHdv
cmQsICJwIiA9IHBvaW50ZXIuCisjICAgQ3VycmVudGx5IHRoaXMgaXMganVzdCAzMi1iaXQgc28g
ImkiIGFuZCAicCIgYXJlIGludGVyY2hhbmdlYWJsZQorIyAgIGV4Y2VwdCB3aGVuIGFuIG9wIHN1
cHBvcnRzIG9uZSBidXQgbm90IHRoZSBvdGhlci4KKyMKKyMgLSBJbiBnZW5lcmFsLCB2YWxpZCBv
cGVyYW5kcyBmb3IgbWFjcm8gaW52b2NhdGlvbnMgYW5kIGluc3RydWN0aW9ucyBhcmUKKyMgICBy
ZWdpc3RlcnMgKGVnICJ0MCIpLCBhZGRyZXNzZXMgKGVnICI0W3QwXSIpLCBiYXNlLWluZGV4IGFk
ZHJlc3NlcworIyAgIChlZyAiN1t0MCwgdDEsIDJdIiksIGFic29sdXRlIGFkZHJlc3NlcyAoZWcg
IjB4YTAwMDAwMDBbXSIpLCBvciBsYWJlbHMKKyMgICAoZWcgIl9mb28iIG9yICIuZm9vIikuIE1h
Y3JvIGludm9jYXRpb25zIGNhbiBhbHNvIHRha2UgYW5vbnltb3VzCisjICAgbWFjcm9zIGFzIG9w
ZXJhbmRzLiBJbnN0cnVjdGlvbnMgY2Fubm90IHRha2UgYW5vbnltb3VzIG1hY3Jvcy4KKyMKKyMg
LSBMYWJlbHMgbXVzdCBoYXZlIG5hbWVzIHRoYXQgYmVnaW4gd2l0aCBlaXRoZXIgIl8iIG9yICIu
Ii4gIEEgIi4iIGxhYmVsCisjICAgaXMgbG9jYWwgYW5kIGdldHMgcmVuYW1lZCBiZWZvcmUgY29k
ZSBnZW4gdG8gbWluaW1pemUgbmFtZXNwYWNlCisjICAgcG9sbHV0aW9uLiBBICJfIiBsYWJlbCBp
cyBhbiBleHRlcm4gc3ltYm9sIChpLmUuICIuZ2xvYmwiKS4gVGhlICJfIgorIyAgIG1heSBvciBt
YXkgbm90IGJlIHJlbW92ZWQgZHVyaW5nIGNvZGUgZ2VuIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRo
ZSBhc20KKyMgICBjb252ZW50aW9ucyBmb3IgQyBuYW1lIG1hbmdsaW5nIG9uIHRoZSB0YXJnZXQg
cGxhdGZvcm0gbWFuZGF0ZSBhICJfIgorIyAgIHByZWZpeC4KKyMKKyMgLSBBICJtYWNybyIgaXMg
YSBsYW1iZGEgZXhwcmVzc2lvbiwgd2hpY2ggbWF5IGJlIGVpdGhlciBhbm9ueW1vdXMgb3IKKyMg
ICBuYW1lZC4gQnV0IHRoaXMgaGFzIGNhdmVhdHMuICJtYWNybyIgY2FuIHRha2UgemVybyBvciBt
b3JlIGFyZ3VtZW50cywKKyMgICB3aGljaCBtYXkgYmUgbWFjcm9zIG9yIGFueSB2YWxpZCBvcGVy
YW5kcywgYnV0IGl0IGNhbiBvbmx5IHJldHVybgorIyAgIGNvZGUuIEJ1dCB5b3UgY2FuIGRvIFR1
cmluZy1jb21wbGV0ZSB0aGluZ3MgdmlhIGNvbnRpbnVhdGlvbiBwYXNzaW5nCisjICAgc3R5bGU6
ICJtYWNybyBmb28gKGEsIGIpIGIoYSkgZW5kIGZvbyhmb28sIGZvbykiLiBBY3R1YWxseSwgZG9u
J3QgZG8KKyMgICB0aGF0LCBzaW5jZSB5b3UnbGwganVzdCBjcmFzaCB0aGUgYXNzZW1ibGVyLgor
IworIyAtIEFuICJpZiIgaXMgYSBjb25kaXRpb25hbCBvbiBzZXR0aW5ncy4gQW55IGlkZW50aWZp
ZXIgc3VwcGxpZWQgaW4gdGhlCisjICAgcHJlZGljYXRlIG9mIGFuICJpZiIgaXMgYXNzdW1lZCB0
byBiZSBhICNkZWZpbmUgdGhhdCBpcyBhdmFpbGFibGUKKyMgICBkdXJpbmcgY29kZSBnZW4uIFNv
IHlvdSBjYW4ndCB1c2UgImlmIiBmb3IgY29tcHV0YXRpb24gaW4gYSBtYWNybywgYnV0CisjICAg
eW91IGNhbiB1c2UgaXQgdG8gc2VsZWN0IGRpZmZlcmVudCBwaWVjZXMgb2YgY29kZSBmb3IgZGlm
ZmVyZW50CisjICAgcGxhdGZvcm1zLgorIworIyAtIEFyZ3VtZW50cyB0byBtYWNyb3MgZm9sbG93
IGxleGljYWwgc2NvcGluZyByYXRoZXIgdGhhbiBkeW5hbWljIHNjb3BpbmcuCisjICAgQ29uc3Qn
cyBhbHNvIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgYW5kIG1heSBvdmVycmlkZSAoaGlkZSkgYXJn
dW1lbnRzCisjICAgb3Igb3RoZXIgY29uc3RzLiBBbGwgdmFyaWFibGVzIChhcmd1bWVudHMgYW5k
IGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gb3BlcmFuZHMuIEFkZGl0aW9uYWxseSwg
YXJndW1lbnRzIChidXQgbm90IGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gbWFjcm9z
LgorCisKKyMgVGhlc2UgZGVjbGFyYXRpb25zIG11c3QgbWF0Y2ggaW50ZXJwcmV0ZXIvUmVnaXN0
ZXJGaWxlLmguCitjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gNDgKK2NvbnN0IEFyZ3VtZW50
Q291bnQgPSAtNDgKK2NvbnN0IENhbGxlckZyYW1lID0gLTQwCitjb25zdCBDYWxsZWUgPSAtMzIK
K2NvbnN0IFNjb3BlQ2hhaW4gPSAtMjQKK2NvbnN0IFJldHVyblBDID0gLTE2Citjb25zdCBDb2Rl
QmxvY2sgPSAtOAorCitjb25zdCBUaGlzQXJndW1lbnRPZmZzZXQgPSAtQ2FsbEZyYW1lSGVhZGVy
U2l6ZSAtIDgKKworIyBEZWNsYXJlIHNvbWUgYWxpYXNlcyBmb3IgdGhlIHJlZ2lzdGVycyB3ZSB3
aWxsIHVzZS4KK2NvbnN0IFBDID0gdDQKKworIyBPZmZzZXRzIG5lZWRlZCBmb3IgcmVhc29uaW5n
IGFib3V0IHZhbHVlIHJlcHJlc2VudGF0aW9uLgoraWYgQklHX0VORElBTgorICAgIGNvbnN0IFRh
Z09mZnNldCA9IDAKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gNAorZWxzZQorICAgIGNvbnN0
IFRhZ09mZnNldCA9IDQKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gMAorZW5kCisKKyMgVmFs
dWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgorY29uc3QgSW50MzJUYWcgPSAtMQorY29uc3Qg
Qm9vbGVhblRhZyA9IC0yCitjb25zdCBOdWxsVGFnID0gLTMKK2NvbnN0IFVuZGVmaW5lZFRhZyA9
IC00Citjb25zdCBDZWxsVGFnID0gLTUKK2NvbnN0IEVtcHR5VmFsdWVUYWcgPSAtNgorY29uc3Qg
RGVsZXRlZFZhbHVlVGFnID0gLTcKK2NvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRhZwor
CisjIFR5cGUgY29uc3RhbnRzLgorY29uc3QgU3RyaW5nVHlwZSA9IDUKK2NvbnN0IE9iamVjdFR5
cGUgPSAxMAorCisjIFR5cGUgZmxhZ3MgY29uc3RhbnRzLgorY29uc3QgTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCA9IDEKK2NvbnN0IEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDIKK2NvbnN0IEltcGxl
bWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSA4CisKKyMgSGVhcCBhbGxvY2F0aW9uIGNvbnN0YW50
cy4KK2NvbnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9IDMKKworIyBCeXRlY29kZSBv
cGVyYW5kIGNvbnN0YW50cy4KK2NvbnN0IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0
MDAwMDAwMAorCisjIENvZGUgdHlwZSBjb25zdGFudHMuCitjb25zdCBHbG9iYWxDb2RlID0gMAor
Y29uc3QgRXZhbENvZGUgPSAxCitjb25zdCBGdW5jdGlvbkNvZGUgPSAyCisKKyMgVGhlIGludGVy
cHJldGVyIHN0ZWFscyB0aGUgdGFnIHdvcmQgb2YgdGhlIGFyZ3VtZW50IGNvdW50LgorY29uc3Qg
TExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQKKworIyBUaGlzIG11c3Qg
bWF0Y2ggd3RmL1ZlY3Rvci5oLgorY29uc3QgVmVjdG9yU2l6ZU9mZnNldCA9IDAKK2NvbnN0IFZl
Y3RvckJ1ZmZlck9mZnNldCA9IDQKKworIyBTdHJpbmcgZmxhZ3MuCitjb25zdCBIYXNoRmxhZ3M4
Qml0QnVmZmVyID0gNjQKKworIyBVdGlsaXRpZXMKK21hY3JvIGNyYXNoKCkKKyAgICBzdG9yZWkg
MCwgMHhiYmFkYmVlZltdCisgICAgbW92ZSAwLCB0MAorICAgIGNhbGwgdDAKK2VuZAorCittYWNy
byBhc3NlcnQoYXNzZXJ0aW9uKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGFzc2Vy
dGlvbigub2spCisgICAgICAgIGNyYXNoKCkKKyAgICAub2s6CisgICAgZW5kCitlbmQKKworbWFj
cm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIpCisg
ICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBsciwgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVs
c2lmIFg4NgorICAgICAgICBwb3AgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2UKKyAgICAg
ICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9y
ZVJldHVybihzb3VyY2VSZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIHNvdXJj
ZVJlZ2lzdGVyLCBscgorICAgIGVsc2lmIFg4NgorICAgICAgICBwdXNoIHNvdXJjZVJlZ2lzdGVy
CisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIGRpc3BhdGNo
KGFkdmFuY2UpCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisK
K21hY3JvIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldChwY09mZnNldCkKKyAgICBsc2hpZnRpIDIs
IHBjT2Zmc2V0CisgICAgYWRkcCBwY09mZnNldCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21h
Y3JvIGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQorICAgIGxvYWRpIHBjT2Zmc2V0LCB0MAorICAg
IGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MCkKK2VuZAorCittYWNybyBkaXNwYXRjaEFmdGVy
Q2FsbCgpCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAg
IGptcCBbUENdCitlbmQKKworbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQorICAg
IGlmIEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQor
ICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcyLCAx
CisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2Vu
ZAorCisjIFRoaXMgYmFyZWx5IHdvcmtzLiBhcmczIGFuZCBhcmc0IHNob3VsZCBwcm9iYWJseSBi
ZSBpbW1lZGlhdGVzLgorbWFjcm8gY0NhbGw0KGZ1bmN0aW9uLCBhcmcxLCBhcmcyLCBhcmczLCBh
cmc0KQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBh
cmcyLCB0MQorICAgICAgICBtb3ZlIGFyZzMsIHQyCisgICAgICAgIG1vdmUgYXJnNCwgdDMKKyAg
ICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBhcmcxLCAwCisgICAgICAgIHBva2UgYXJnMiwgMQor
ICAgICAgICBwb2tlIGFyZzMsIDIKKyAgICAgICAgcG9rZSBhcmc0LCAzCisgICAgZWxzZQorICAg
ICAgICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCittYWNybyBjYWxs
SGVscGVyKGhlbHBlcikKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUgdDAs
IFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlv
dSdkIGxpa2UgdG8gcHJpbnQgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtLiBm
cm9tV2hlcmUKKyMgc2hvdWxkIGJlIGFuIGltbWVkaWF0ZSBpbnRlZ2VyIC0gYW55IGludGVnZXIg
eW91IGxpa2U7IHVzZSBpdCB0byBpZGVudGlmeSB0aGUgcGxhY2UgeW91J3JlCisjIGRlYnVnZ2lu
ZyBmcm9tLiBvcGVyYW5kIHNob3VsZCBsaWtld2lzZSBiZSBhbiBpbW1lZGlhdGUsIGFuZCBzaG91
bGQgaWRlbnRpZnkgdGhlIG9wZXJhbmQKKyMgaW4gdGhlIGluc3RydWN0aW9uIHN0cmVhbSB5b3Un
ZCBsaWtlIHRvIHByaW50IG91dC4KK21hY3JvIHRyYWNlT3BlcmFuZChmcm9tV2hlcmUsIG9wZXJh
bmQpCisgICAgY0NhbGw0KF9sbGludF90cmFjZV9vcGVyYW5kLCBjZnIsIFBDLCBmcm9tV2hlcmUs
IG9wZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERl
YnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCB0aGUgdmFsdWUgb2YgYW4g
b3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24KKyMgc3RyZWFtLiBTYW1lIGFzIHRyYWNlT3BlcmFu
ZCgpLCBidXQgYXNzdW1lcyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgcmVnaXN0ZXIsIGFuZCBwcmlu
dHMgaXRzCisjIHZhbHVlLgorbWFjcm8gdHJhY2VWYWx1ZShmcm9tV2hlcmUsIG9wZXJhbmQpCisg
ICAgY0NhbGw0KF9sbGludF90cmFjZV92YWx1ZSwgY2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVyYW5k
KQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworbWFjcm8gdHJhY2VF
eGVjdXRpb24oKQorICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAgICAgIGNhbGxIZWxwZXIo
X2xsaW50X3RyYWNlKQorICAgIGVuZAorZW5kCisKKyMgQ2FsbCBhIGhlbHBlciBmb3IgY2FsbCBv
cGNvZGVzLgorbWFjcm8gY2FsbENhbGxIZWxwZXIoYWR2YW5jZSwgaGVscGVyLCBhY3Rpb24pCisg
ICAgYWRkcCBhZHZhbmNlICogNCwgUEMsIHQwCisgICAgc3RvcmVwIHQwLCBBcmd1bWVudENvdW50
ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUg
dDEsIGNmcgorICAgIGFjdGlvbih0MCkKK2VuZAorCittYWNybyBzbG93UGF0aEZvckNhbGwoYWR2
YW5jZSwgaGVscGVyKQorICAgIGNhbGxDYWxsSGVscGVyKAorICAgICAgICBhZHZhbmNlLAorICAg
ICAgICBoZWxwZXIsCisgICAgICAgIG1hY3JvIChjYWxsZWUpCisgICAgICAgICAgICBjYWxsIGNh
bGxlZQorICAgICAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgICAgICBlbmQpCitlbmQK
KworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVChpbmNyZW1lbnQsIGFjdGlvbikKKyAgICBpZiBKSVRf
RU5BQkxFRAorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICAgICAgYmFkZGlz
IGluY3JlbWVudCwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJbdDBdLCAuY29udGlu
dWUKKyAgICAgICAgYWN0aW9uKCkKKyAgICAuY29udGludWU6CisgICAgZW5kCitlbmQKKworbWFj
cm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAg
ICAgIDEsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50
Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgICAgICAgICAgY0NhbGwyKF9sbGludF9sb29wX29z
ciwgY2ZyLCBQQykKKyAgICAgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAgICAgICAgYnRweiB0
MCwgLnJlY292ZXIKKyAgICAgICAgICAgIGptcCB0MAorICAgICAgICAucmVjb3ZlcjoKKyAgICAg
ICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICAgICAg
ZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgY2hl
Y2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMTAsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAg
ICBjYWxsSGVscGVyKF9sbGludF9yZXBsYWNlKQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8g
YXNzZXJ0Tm90Q29uc3RhbnQoaW5kZXgpCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlsdCBpbmRl
eCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIG9rIGVuZCkKK2VuZAorCisjIEluZGV4LCB0
YWcsIGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90
CisjIGNoYW5nZWQuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKGluZGV4LCB0YWcsIHBh
eWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNv
bnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisu
Y29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9h
ZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGlu
ZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAg
IyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50
UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsb2FkcCBUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgs
IDhdLCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5
bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBtYXkgYmUgdGhlIHNhbWUg
cmVnaXN0ZXIuIEluZGV4IG1heSBiZSBjbG9iYmVyZWQuCittYWNybyBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwg
cGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0YWcKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0
b3JCdWZmZXJPZmZzZXRbdGFnXSwgdGFnCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhl
cmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0g
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbHNoaWZ0aSAzLCBpbmRleAor
ICAgIGFkZHAgaW5kZXgsIHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdGFnXSwgcGF5bG9h
ZAorICAgIGxvYWRwIFRhZ09mZnNldFt0YWddLCB0YWcKKy5kb25lOgorZW5kCisKK21hY3JvIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKGluZGV4LCB0YWdDaGVjaywgcGF5
bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29u
c3RhbnQKKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0pCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNv
bnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRd
LCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRl
eCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMg
dGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgpIDw8IDMuCisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4
LCA4XSkKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9h
ZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCBy
ZWdpc3RlcnMuIEluZGV4IGlzIG5vdCBtdXRhdGVkLiBVc2UKKyMgdGhpcyBpZiB5b3Uga25vdyB3
aGF0IHRoZSB0YWcgb2YgdGhlIHZhcmlhYmxlIHNob3VsZCBiZS4gRG9pbmcgdGhlIHRhZworIyB0
ZXN0IGFzIHBhcnQgb2YgbG9hZGluZyB0aGUgdmFyaWFibGUgcmVkdWNlcyByZWdpc3RlciB1c2Us
IGJ1dCBtYXkgbm90CisjIGJlIGZhc3RlciB0aGFuIGRvaW5nIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUgZm9sbG93ZWQgYnkgYSBicmFuY2ggb24gdGhlCisjIHRhZy4KK21hY3JvIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywgcGF5bG9hZCwgc2xvdykKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgKKyAgICAgICAgaW5kZXgs
CisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGJpbmVxIGFjdHVhbFRhZywgZXhwZWN0ZWRUYWcs
IHNsb3cgZW5kLAorICAgICAgICBwYXlsb2FkKQorZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKGluZGV4LCBwYXlsb2FkKQorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKAorICAgICAgICBpbmRleCwKKyAgICAgICAgbWFj
cm8gKGFjdHVhbFRhZykgZW5kLAorICAgICAgICBwYXlsb2FkKQorZW5kCisKK21hY3JvIHdyaXRl
QmFycmllcih0YWcsIHBheWxvYWQpCisgICAgIyBOb3RoaW5nIHRvIGRvLCBzaW5jZSB3ZSBkb24n
dCBoYXZlIGEgZ2VuZXJhdGlvbmFsIG9yIGluY3JlbWVudGFsIGNvbGxlY3Rvci4KK2VuZAorCitt
YWNybyB2YWx1ZVByb2ZpbGUodGFnLCBwYXlsb2FkLCBwcm9maWxlKQorICAgIHN0b3JlaSB0YWcs
IFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3Byb2ZpbGVdCisgICAgc3RvcmVp
IHBheWxvYWQsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFtwcm9maWxl
XQorZW5kCisKKworIyBJbmRpY2F0ZSB0aGUgYmVnaW5uaW5nIG9mIExMSW50LgorX2xsaW50X2Jl
Z2luOgorICAgIGNyYXNoKCkKKworCisjIEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVycHJldGVy
CisKK21hY3JvIGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikK
KyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0
aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxv
YWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsW3RhcmdldFJlZ2lzdGVy
XSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVC
bG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0
UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0
ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2Rl
QmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisK
K21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1bmN0aW9u
Q29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgIHN0b3JlcCBzb3VyY2VSZWdpc3Rl
ciwgQ29kZUJsb2NrW2Nmcl0KK2VuZAorCittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRl
cihzb3VyY2VSZWdpc3RlcikKKyAgICAjIE5vdGhpbmcgdG8gZG8hCitlbmQKKworIyBEbyB0aGUg
YmFyZSBtaW5pbXVtIHJlcXVpcmVkIHRvIGV4ZWN1dGUgY29kZS4gU2V0cyB1cCB0aGUgUEMsIGxl
YXZlIHRoZSBDb2RlQmxvY2sqCisjIGluIHQxLiBNYXkgYWxzbyB0cmlnZ2VyIHByb2xvZ3VlIGVu
dHJ5IE9TUi4KK21hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVy
LCBvc3JIZWxwZXIsIHRyYWNlSGVscGVyKQorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVy
Q2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYg
d2Ugc2hvdWxkIE9TUi4KKyAgICBzdG9yZXAgdDIsIFJldHVyblBDW2Nmcl0KKyAgICBpZiBFWEVD
VVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKHRyYWNlSGVscGVyKQorICAgIGVuZAor
ICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBiYWRk
aXMgNSwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJbdDFdLCAuY29udGludWUKKyAg
ICAgICAgY0NhbGwyKG9zckhlbHBlciwgY2ZyLCBQQykKKyAgICAgICAgbW92ZSB0MSwgY2ZyCisg
ICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQy
CisgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAgICAgICBq
bXAgdDAKKyAgICAucmVjb3ZlcjoKKyAgICAgICAgY29kZUJsb2NrR2V0dGVyKHQxKQorICAgIC5j
b250aW51ZToKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tTZXR0ZXIodDEpCisgICAgCisgICAgIyBT
ZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0
MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0aW9ucyArIFZl
Y3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2Nr
IGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KKyMgTXVz
dCBjYWxsIGRpc3BhdGNoKDApIGFmdGVyIGNhbGxpbmcgdGhpcy4KK21hY3JvIGZ1bmN0aW9uSW5p
dGlhbGl6YXRpb24ocHJvZmlsZUFyZ1NraXApCisgICAgIyBQcm9maWxlIHRoZSBhcmd1bWVudHMu
IFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hvaWNlIGJ1dCB0byBkbyB0aGlzLiBUaGlzCisg
ICAgIyBjb2RlIGlzIHByZXR0eSBob3JyZW5kb3VzIGJlY2F1c2Ugb2YgdGhlIGRpZmZlcmVuY2Ug
aW4gb3JkZXJpbmcgYmV0d2VlbgorICAgICMgYXJndW1lbnRzIGFuZCB2YWx1ZSBwcm9maWxlcywg
dGhlIGRlc2lyZSB0byBoYXZlIGEgc2ltcGxlIGxvb3AtZG93bi10by16ZXJvCisgICAgIyBsb29w
LCBhbmQgdGhlIGRlc2lyZSB0byB1c2Ugb25seSB0aHJlZSByZWdpc3RlcnMgc28gYXMgdG8gcHJl
c2VydmUgdGhlIFBDIGFuZAorICAgICMgdGhlIGNvZGUgYmxvY2suIEl0IGlzIGxpa2VseSB0aGF0
IHRoaXMgY29kZSBzaG91bGQgYmUgcmV3cml0dGVuIGluIGEgbW9yZQorICAgICMgb3B0aW1hbCB3
YXkgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBoYXZlIG1vcmUgdGhhbiBmaXZlIHJlZ2lzdGVycyBh
dmFpbGFibGUKKyAgICAjIGZvciBhcmJpdHJhcnkgdXNlIGluIHRoZSBpbnRlcnByZXRlci4KKyAg
ICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIHQwCisgICAgYWRkaSAtcHJv
ZmlsZUFyZ1NraXAsIHQwICMgVXNlIGFkZGkgYmVjYXVzZSB0aGF0J3Mgd2hhdCBoYXMgdGhlIHBl
ZXBob2xlCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHQwLCAwLCBvayBlbmQpCisgICAg
YnRpeiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJn
dW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QxXSwgdDMKKyAgICBtdWxp
IHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0MiAjIEFhYWFhaGhoaCEgTmVlZCBzdHJlbmd0aCBy
ZWR1Y3Rpb24hCisgICAgbmVnaSB0MAorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQyLCB0
MworLmFyZ3VtZW50UHJvZmlsZUxvb3A6CisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsg
VGFnT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIKKyAgICBzdWJw
IHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQzCisgICAgc3RvcmVpIHQyLCBwcm9maWxlQXJnU2tpcCAq
IHNpemVvZiBWYWx1ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNl
dFt0M10KKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zmc2V0ICsgOCAt
IHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIsIHByb2ZpbGVB
cmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsg
UGF5bG9hZE9mZnNldFt0M10KKyAgICBiYWRkaW56IDgsIHQwLCAuYXJndW1lbnRQcm9maWxlTG9v
cAorLmFyZ3VtZW50UHJvZmlsZURvbmU6CisgICAgCisgICAgIyBDaGVjayBzdGFjayBoZWlnaHQu
CisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lzdGVyc1t0MV0sIHQwCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MgorICAgIGxvYWRwIEpTR2xvYmFs
RGF0YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MiAgICMgRklYTUU6IENhbiBnZXQgdG8gdGhlIFJlZ2lz
dGVyRmlsZSBmcm9tIHRoZSBKSVRTdGFja0ZyYW1lCisgICAgbHNoaWZ0aSAzLCB0MAorICAgIGFk
ZHAgdDAsIGNmciwgdDAKKyAgICBicGFlcSBJbnRlcnByZXRlcjo6bV9yZWdpc3RlckZpbGUgKyBS
ZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCisKKyAgICAjIFN0YWNr
IGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBoZWxwZXIuCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVjaykKKy5zdGFja0hlaWdodE9LOgorZW5kCisK
KyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1
ZSgpIGxlYXZlcyBiZWhpbmQuCittYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBo
ZWxwZXIpCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwgdDAK
KyAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwK
KyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKSAgICMgVGhpcyBoZWxwZXIgaGFzIGEgc2ltcGxl
IHByb3RvY29sOiB0MCA9IDAgPT4gbm8gZXJyb3IsIHQwICE9IDAgPT4gZXJyb3IKKyAgICBtb3Zl
IHQxLCBjZnIKKyAgICBidGl6IHQwLCAuY29udGludWUKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1l
OjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZv
clRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JU
aHJvd1t0MV0KKy5jb250aW51ZToKKyAgICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIFBDLCBzaW5j
ZSB0aGUgaGVscGVyIGNsb2JiZXJlZCBpdC4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbdDBdLCBQQworICAgIGptcCBkb25lTGFiZWwKK2VuZAorCitfbGxpbnRfcHJvZ3JhbV9wcm9s
b2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rp
b25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1
ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9ldmFsX3Byb2xvZ3VlOgorICAgIHByb2xv
Z3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRl
ciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNo
KDApCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3Vl
KGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIs
IF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwsIF9sbGludF90cmFjZV9wcm9sb2d1
ZV9mdW5jdGlvbl9mb3JfY2FsbCkKKy5mdW5jdGlvbkZvckNhbGxCZWdpbjoKKyAgICBmdW5jdGlv
bkluaXRpYWxpemF0aW9uKDApCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25z
dHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50
cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5j
dGlvbl9mb3JfY29uc3RydWN0KQorLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46CisgICAgZnVu
Y3Rpb25Jbml0aWFsaXphdGlvbigxKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9m
dW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNh
bGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlf
b3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNr
X2Zvcl9jYWxsKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDYWxsQmVnaW4s
IF9sbGludF9oZWxwZXJfY2FsbF9hcml0eUNoZWNrKQorCisKK19sbGludF9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0X2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0
Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29z
cl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNo
ZWNrX2Zvcl9jb25zdHJ1Y3QpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNv
bnN0cnVjdEJlZ2luLCBfbGxpbnRfaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQorCisjIElu
c3RydWN0aW9uIGltcGxlbWVudGF0aW9ucworCitfbGxpbnRfb3BfZW50ZXI6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRpIENvZGVC
bG9jazo6bV9udW1WYXJzW3QyXSwgdDIKKyAgICBidGl6IHQyLCAub3BFbnRlckRvbmUKKyAgICBt
b3ZlIFVuZGVmaW5lZFRhZywgdDAKKyAgICBtb3ZlIDAsIHQxCisub3BFbnRlckxvb3A6CisgICAg
c3ViaSAxLCB0MgorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3Rv
cmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgYnRpbnogdDIsIC5vcEVudGVy
TG9vcAorLm9wRW50ZXJEb25lOgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX2NyZWF0
ZV9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0
ZUFjdGl2YXRpb25Eb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hY3Rp
dmF0aW9uKQorLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitf
bGxpbnRfb3BfaW5pdF9sYXp5X3JlZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4
XQorICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2go
MikKKworCitfbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBF
bXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBcmd1bWVudHNEb25lCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCisub3BDcmVhdGVBcmd1bWVudHNEb25lOgorICAg
IGRpc3BhdGNoKDIpCisKKworbWFjcm8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNpemVDbGFzc0lu
ZGV4LCBjbGFzc0luZm9PZmZzZXQsIHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRj
aDIsIHNsb3dDYXNlKQorICAgIGNvbnN0IG9mZnNldE9mTXlTaXplQ2xhc3MgPSBKU0dsb2JhbERh
dGE6OmhlYXAgKyBIZWFwOjptX29iamVjdFNwYWNlICsgTWFya2VkU3BhY2U6Om1fcHJlY2lzZVNp
emVDbGFzc2VzICsgc2l6ZUNsYXNzSW5kZXggKiBzaXplb2YgTWFya2VkU3BhY2U6OlNpemVDbGFz
cworICAgIAorICAgICMgRklYTUU6IHdlIGNhbiBnZXQgdGhlIGdsb2JhbCBkYXRhIGluIG9uZSBs
b2FkIGZyb20gdGhlIHN0YWNrLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoMQor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAg
ICAKKyAgICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4gICAgCisgICAgbG9h
ZHAgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJl
ZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKKyAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UKKyAgICAK
KyAgICAjIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAgICBsb2FkcCBb
cmVzdWx0XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIG9mZnNldE9mTXlTaXplQ2xh
c3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXQorCisg
ICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgbG9hZHAgY2xhc3NJbmZvT2Zmc2V0W3Nj
cmF0Y2gxXSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCisgICAgc3Rv
cmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCisgICAgc3RvcmVwIDAs
IEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0KKyAgICBhZGRwIHNpemVvZiBKU09iamVj
dCwgcmVzdWx0LCBzY3JhdGNoMQorICAgIHN0b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJv
cGVydHlTdG9yYWdlW3Jlc3VsdF0KK2VuZAorCitfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0
YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ3Jl
YXRlVGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBTdHJ1Y3R1cmU6Om1f
dHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wQ3JlYXRlVGhp
c1Nsb3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFt0MF0sIHQyCisgICAgYnRw
eiB0MiwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5h
bE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0lu
Zm8sIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkaSA0W1BDXSwg
dDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wQ3Jl
YXRlVGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV90aGlzKQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRPZmZzZXQgKyBD
YWxsZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2go
MikKKworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxU
YWcsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYmJiIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAu
b3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0VGhpc1Nsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAgICBkaXNwYXRj
aCgyKQorCisKK19sbGludF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFs
T2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0
cnVjdHVyZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RT
aXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MSwg
dDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBz
dG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3T2JqZWN0U2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkKKyAgICBkaXNwYXRj
aCgyKQorCisKK19sbGludF9vcF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheV9idWZmZXIpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdleHApCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0
MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkg
dDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9ub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykK
KyAgICBiaW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90U2xvdworICAgIHhvcmkgMSwgdDMKKyAg
ICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5vdFNsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAg
IGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQy
LCB0MywgLm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93CisgICAgYmli
IHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpZXEg
dDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0K
KyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0
KQorCisub3BFcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2VxKQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX2VxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENv
bnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
b3BFcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEK
KyAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwg
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRl
Cisub3BFcU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaWVx
IHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQyLCB0MQorLm9wRXFOdWxsTm90SW1tZWRp
YXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBz
dG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwg
dDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBi
aW5lcSB0MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFTbG93
CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIK
KyAgICBjaW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtj
ZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAg
IGRpc3BhdGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X25lcSkKKyAgICBkaXNwYXRjaCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251bGw6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0
MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJp
bmVxIHQxLCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJ
bmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9w
TmVxTnVsbE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBjaW5lcSB0MSwg
TnVsbFRhZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIGFuZGkgdDIs
IHQxCisub3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0Mywg
OF0KKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9u
LCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKKyAgICBiaWIg
dDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmluZwor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDFdLCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJlcSBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNs
b3cKKy5ub3RTdHJpbmc6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVyYXRp
b24odDAsIHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIs
IDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0
Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkK
K2VuZAorCitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0
cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1
bHQgZW5kLCBfbGxpbnRfaGVscGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3RyaWN0ZXE6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwg
cmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9uc3Ry
aWN0ZXEpCisKKworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX2xlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2xlc3NlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRl
cikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJ
bnQzMlRhZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQxCisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQxLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5jU2xv
dzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNwYXRjaCgy
KQorCisKK19sbGludF9vcF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAu
b3BQcmVEZWNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAg
ICBic3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xs
aW50X29wX3Bvc3RfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0s
IEludDMyVGFnLCAub3BQb3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9u
ZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0Miwg
dDMKKyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMyVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBv
c3RJbmNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9wb3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQw
CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJ
bnQzMlRhZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQz
CisgICAgYnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywg
VGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0
RGVjRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRf
b3BfdG9fanNudW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0
MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQy
LCB0MykKKyAgICBiaWVxIHQyLCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklzSW50CisgICAgYmlh
ZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcFRvSnNudW1iZXJTbG93Cisub3BUb0pzbnVtYmVySXNJ
bnQ6CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb0pzbnVt
YmVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fanNudW1iZXIpCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQwLCB0MSwgdDIpCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BOZWdh
dGVTcmNOb3RJbnQKKyAgICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CisgICAg
bmVnaSB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKy5v
cE5lZ2F0ZVNyY05vdEludDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xvdwor
ICAgIHhvcmkgMHg4MDAwMDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQz
LCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3Bh
dGNoKDMpCisKKy5vcE5lZ2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25l
Z2F0ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50
ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2Fk
aSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0Miwg
dDApCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDMsIElu
dDMyVGFnLCAub3AyTm90SW50CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50ZWdlck9wZXJh
dGlvbkFuZFN0b3JlKHQzLCB0MSwgdDAsIC5zbG93LCB0MikKKyAgICBkaXNwYXRjaCg1KQorCisu
b3AxTm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQs
IHRoZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEgdDIsIExvd2Vz
dFRhZywgLnNsb3cKKyAgICBiaWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQor
ICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQxLCBmdDEKKyAgICBqbXAg
Lm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQxLCB0Mywg
ZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgZmlpMmQgdDAs
IHQyLCBmdDAKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwg
W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wMk5vdEludDoKKyAgICAjIEZpcnN0
IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZp
bml0ZWx5IG5vdC4KKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBiaWEgdDMsIExvd2VzdFRhZywg
LnNsb3cKKyAgICBjaTJkIHQwLCBmdDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorICAgIGRvdWJs
ZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KKyAgICBk
aXNwYXRjaCg1KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRj
aCg1KQorZW5kCisKK21hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJh
dGlvbiwgaGVscGVyKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChp
bnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgaW50ZWdlck9w
ZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywg
VGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxv
YWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBkb3VibGVPcGVy
YXRpb24sIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfYWRkOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRk
aW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGFk
ZGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2FkZCkKKworCitfbGxp
bnRfb3BfbXVsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3Jl
KAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAg
ICAgICAgICAgIGNvbnN0IHNjcmF0Y2ggPSBpbnQzMlRhZyAgICMgV2Uga25vdyB0aGF0IHdlIGNh
biByZXVzZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEgY29uc3RhbnQuCisg
ICAgICAgICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoCisgICAgICAgICAgICBibXVsaW8gbGVmdCwg
c2NyYXRjaCwgc2xvdworICAgICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRvbmUKKyAgICAgICAg
ICAgIGJpbHQgbGVmdCwgMCwgc2xvdworICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdwor
ICAgICAgICAuZG9uZToKKyAgICAgICAgICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nm
ciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgUGF5bG9hZE9mZnNldFtj
ZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkg
bXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbXVsKQorCisKK19s
bGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQs
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfc3ViKQorCisKK19sbGludF9vcF9kaXY6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRh
ZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAK
KyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQorICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQor
ICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdEludAorICAgICAgICAgICAgc3RvcmVp
IGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSBy
aWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgam1wIC5kb25l
CisgICAgICAgIC5ub3RJbnQ6CisgICAgICAgICAgICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRleCwg
OF0KKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9kaXYpCisK
KworX2xsaW50X29wX21vZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX21vZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGJpdE9wKG9wZXJh
dGlvbiwgaGVscGVyLCBhZHZhbmNlKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MywgSW50MzJU
YWcsIC5zbG93CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGxvYWRpIDRbUENd
LCB0MgorICAgIG9wZXJhdGlvbih0MSwgdDAsIC5zbG93KQorICAgIHN0b3JlaSB0MywgVGFnT2Zm
c2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgZGlzcGF0Y2goYWR2YW5jZSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIp
CisgICAgZGlzcGF0Y2goYWR2YW5jZSkKK2VuZAorCitfbGxpbnRfb3BfbHNoaWZ0OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBz
bG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9sc2hp
ZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX3JzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgcnNoaWZ0
aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfcnNoaWZ0LAorICAgICAg
ICA0KQorCisKK19sbGludF9vcF91cnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBi
aXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgdXJz
aGlmdGkgbGVmdCwgcmlnaHQKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAg
ICAgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3Vyc2hpZnQsCisgICAgICAgIDQpCisKKwor
X2xsaW50X29wX2JpdGFuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5kaSBsZWZ0LCByaWdodCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfYml0YW5kLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXR4
b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVs
cGVyX2JpdHhvciwKKyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0b3I6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cp
IG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0b3IsCisgICAg
ICAgIDUpCisKKworX2xsaW50X29wX2JpdG5vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wQml0bm90U2xv
dworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAg
IHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisK
Ky5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2JpdG5vdCkKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cpCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNIYXNJbnN0YW5j
ZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDaGVja0hh
c0luc3RhbmNlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY2hlY2tfaGFzX2lu
c3RhbmNlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luc3RhbmNlb2Y6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhl
IGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisgICAgIyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDEsIHQwKQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9m
U2xvdworICAgIAorICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCisgICAgbG9hZGkgMTZbUENd
LCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxs
VGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgCisgICAgIyBSZWdpc3RlciBzdGF0ZTog
dDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3ZlIDEsIHQwCisub3BJbnN0YW5jZW9m
TG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIKKyAgICBsb2FkaSBT
dHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCisgICAgYnBlcSB0
MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZMb29w
CisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9mRG9uZToKKyAgICBzdG9yZWkgQm9vbGVh
blRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wSW5zdGFuY2VvZlNsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luc3RhbmNlb2YpCisgICAgZGlzcGF0Y2goNSkKKwor
CitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lz
X3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19i
b29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19udW1iZXI6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19u
dW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfc3RyaW5nOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfc3RyaW5nKQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX29iamVjdDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX29iamVjdCkKKyAgICBkaXNw
YXRjaCgzKQorCisKK19sbGludF9vcF9pc19mdW5jdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Z1bmN0aW9uKQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX2luOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVz
b2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3Jlc29sdmUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9za2lwOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2
ZV9za2lwKQorICAgIGRpc3BhdGNoKDUpCisKKworbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBz
bG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3Rp
bmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgUHJvcGVydHkgaWRlbnRpZmllciBp
bmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAjIDEyW1BDXSAgU3RydWN0dXJlIHBvaW50ZXIs
IGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgICMgMTZbUENdICBP
ZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5l
cmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MF0sIHQxCisgICAgYnBuZXEgdDEsIDEyW1BDXSwgc2xvdworICAgIGxvYWRpIDE2W1BDXSwgdDEK
KyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAorICAgIGxvYWRp
IFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQx
LCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAg
IGxvYWRpIChzaXplIC0gMSkgKiA0W1BDXSwgdDAKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQzLCB0
MCkKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIHJlc29sdmVHbG9iYWwoNiwgLm9wUmVzb2x2ZUdsb2JhbFNsb3cpCisgICAgZGlzcGF0
Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3BhdGNoKDYpCisKKworIyBHaXZlcyB5b3UgdGhl
IHNjb3BlIGluIHQwLCB3aGlsZSBhbGxvd2luZyB5b3UgdG8gb3B0aW9uYWxseSBwZXJmb3JtIGFk
ZGl0aW9uYWwgY2hlY2tzIG9uIHRoZQorIyBzY29wZXMgYXMgdGhleSBhcmUgdHJhdmVyc2VkLiBz
Y29wZUNoZWNrKCkgaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHJlZ2lzdGVyCisj
IGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdpc3RlciB0aGF0IGNhbiBiZSB1c2VkIGZvciBz
Y3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAorIyB1c2UgdDMsIHNvIHlvdSBjYW4gaG9s
ZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJlLgorbWFjcm8gZ2V0U2NvcGUoZGVCcnVpamluSW5kZXhP
cGVyYW5kLCBzY29wZUNoZWNrKQorICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0
W2Nmcl0sIHQwCisgICAgbG9hZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0MgorICAgIAorICAg
IGJ0aXogdDIsIC5kb25lCisgICAgCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAg
YmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAubG9vcAorICAg
IGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9vcAorICAgIAor
ICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0aW9uUmVnaXN0ZXJbdDFdLCB0MQorCisgICAg
IyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KKyAgICBiaWVxIFRh
Z09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlvbgorICAgIHNj
b3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAK
Ky5ub0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25l
CisubG9vcDoKKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9k
ZTo6bmV4dFt0MF0sIHQwCisgICAgc3ViaSAxLCB0MgorICAgIGJ0aW56IHQyLCAubG9vcAorCisu
ZG9uZToKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYzoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQz
CisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJlW3QzXSwgdDMKKyAg
ICBnZXRTY29wZSgKKyAgICAgICAgMjBbUENdLAorICAgICAgICBtYWNybyAoc2NvcGUsIHNjcmF0
Y2gpCisgICAgICAgICAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3Njb3BlXSwgc2Ny
YXRjaAorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVtzY3JhdGNoXSwgdDMs
IC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93CisgICAgICAgIGVuZCkKKyAgICByZXNv
bHZlR2xvYmFsKDcsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdykKKyAgICBkaXNwYXRjaCg3
KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKKyAgICBkaXNw
YXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCisgICAgZGlzcGF0Y2goNykKKwor
CitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMg
T3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0
aGUgbG9hZC4KKyAgICAjIDhbUENdICAgSW5kZXggb2YgcmVnaXN0ZXIgaW4gdGhlIHNjb3BlLgor
ICAgICMgMTJbUENdICBEZSBCcnVpamluIGluZGV4LgorICAgIGdldFNjb3BlKDEyW1BDXSwgbWFj
cm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkg
OFtQQ10sIHQyCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAg
bG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRh
Z09mZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4
XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICB2
YWx1ZVByb2ZpbGUodDMsIHQwLCB0MSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9w
dXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZ2V0U2NvcGUoOFtQQ10s
IG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MywgdDIpCisgICAgbG9hZGkgNFtQQ10sIHQxCisg
ICAgd3JpdGVCYXJyaWVyKHQzLCB0MikKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0
W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQw
CisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5
bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0
X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQor
ICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxv
YWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFs
T2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwg
OF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MQorICAgIHN0b3Jl
aSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDMsIDhdCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIHZhbHVlUHJvZmlsZSh0Miwg
dDEsIHQzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwg
dDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W3QwLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfYmFzZSkKKyAgICBkaXNwYXRjaCg1
KQorCisKK19sbGludF9vcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0
cykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfYmFzZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVf
d2l0aF9iYXNlKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF90
aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cmVzb2x2ZV93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZ2V0X2J5
X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMg
Z2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisgICAg
IyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBh
bnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJl
c3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKKyAgICAjIHRv
IHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBw
YXRoLCB3aGljaCBpcyB3aGF0CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5
LgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQor
ICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3Jh
Z2VbdDNdLCB0MAorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0
QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQy
XSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAgc3RvcmVpIHQz
LCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBsb2FkaSAzMltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0Miwg
dDEpCisgICAgZGlzcGF0Y2goOSkKKworLm9wR2V0QnlJZFNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2dldF9ieV9pZCkKKyAgICBkaXNwYXRjaCg5KQorCisKK19sbGludF9vcF9n
ZXRfYXJndW1lbnRzX2xlbmd0aDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93CisgICAgbG9hZGkg
QXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDIKKyAgICBzdWJpIDEsIHQyCisg
ICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1
bWVudHNMZW5ndGhTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1l
bnRzX2xlbmd0aCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaWQ6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BD
XSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAs
IC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVj
dDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQwLCB0MikKKyAgICB3cml0ZUJhcnJpZXIodDAs
IHQyKQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KKyAgICBzdG9yZWkgdDIsIFBh
eWxvYWRPZmZzZXRbdDMsIHQxXQorICAgIGRpc3BhdGNoKDkpCisKKy5vcFB1dEJ5SWRTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOSkK
KworCittYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRC
eUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQz
LCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZHAgSlNPYmpl
Y3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBhZGRwIHQxLCB0MworICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0
MikKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSAyNFtQQ10sIHQxCisg
ICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlcCB0MSwgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0KKyAgICBkaXNwYXRjaCg5KQorZW5kCisKK19sbGludF9vcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0
cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9ub3JtYWw6CisgICAgcHV0QnlJZFRyYW5zaXRpb24oCisgICAgICAgIG1hY3JvIChv
bGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCisgICAgICAgICAgICBjb25zdCBwcm90b0NlbGwg
PSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3Ig
dGhlIHByb3RvCisgICAgICAgIAorICAgICAgICAgICAgbG9hZHAgMjhbUENdLCBzY3JhdGNoCisg
ICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAg
ICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gK
KyAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAg
ICAgICAgICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1
Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorICAgICAgICAubG9vcDoKKyAgICAgICAgICAgIGxvYWRp
IFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHBy
b3RvQ2VsbAorICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxd
LCBvbGRTdHJ1Y3R1cmUKKyAgICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hd
LCBzbG93CisgICAgICAgICAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICAgICAgICAgIGJpbmVxIFN0
cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywg
Lmxvb3AKKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCkKKworCitfbGxpbnRfb3BfZGVsX2J5
X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
ZGVsX2J5X2lkKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV92YWw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxv
YWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fZ2xvYmFsRGF0YVt0MV0sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQo
dDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNsb3cpCisgICAgbG9hZHAgSlNHbG9iYWxEYXRh
Ojpqc0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAgYnBuZXEgW3QwXSwg
dDIsIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MF0sIHQz
CisgICAgYmlhZXEgdDEsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9wR2V0QnlWYWxT
bG93CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3Rv
ciArIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92
ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisgICAgYmllcSB0MiwgRW1wdHlW
YWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2Fk
aSAxNltQQ10sIHQwCisgICAgdmFsdWVQcm9maWxlKHQyLCB0MSwgdDApCisgICAgZGlzcGF0Y2go
NSkKKworLm9wR2V0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRf
YnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2dldF9hcmd1bWVudF9ieV92
YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRp
IDEyW1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVU
YWcsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDEsIEludDMyVGFnLCB0MiwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cpCisgICAgYWRk
aSAxLCB0MgorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQx
CisgICAgYmlhZXEgdDIsIHQxLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIG5lZ2kgdDIK
KyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdP
ZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIs
IHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRp
c3BhdGNoKDUpCisKKy5vcEdldEFyZ3VtZW50QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xs
aW50X29wX2dldF9ieV9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJb
UENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0
MSwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGJwbmVxIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFn
LCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MAorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2Fj
aGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSAyNFtQQ10sIHQw
CisgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAorICAgIHN1YmkgMSwgdDAKKyAgICBiaWFlcSB0
MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFibGVTbG90c1t0M10sIC5vcEdl
dEJ5UG5hbWVTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QyXSwg
dDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQx
LCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBkaXNwYXRjaCg3KQorCisub3BHZXRCeVBuYW1lU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3BuYW1lKQorICAgIGRpc3BhdGNoKDcpCisKKwor
X2xsaW50X29wX3B1dF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0
MSwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGVQYXlsb2FkKHQwLCBJbnQzMlRhZywgdDIsIC5vcFB1dEJ5VmFsU2xvdykKKyAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFs
RGF0YVt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3Qw
XSwgdDAKKyAgICBicG5lcSBbdDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93CisgICAgYmlhZXEgdDIs
IEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QxXSwgLm9wUHV0QnlWYWxTbG93CisgICAgbG9hZHAg
SlNBcnJheTo6bV9zdG9yYWdlW3QxXSwgdDAKKyAgICBiaWVxIEFycmF5U3RvcmFnZTo6bV92ZWN0
b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wUHV0QnlWYWxFbXB0
eQorLm9wUHV0QnlWYWxTdG9yZVJlc3VsdDoKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQxLCB0MykKKyAgICB3cml0ZUJhcnJpZXIodDEs
IHQzKQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0
MCwgdDIsIDhdCisgICAgc3RvcmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9h
ZE9mZnNldFt0MCwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wUHV0QnlWYWxFbXB0eToK
KyAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KKyAgICBi
aWIgdDIsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdLCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0
CisgICAgYWRkaSAxLCB0MiwgdDEKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV9sZW5n
dGhbdDBdCisgICAgam1wIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQKKworLm9wUHV0QnlWYWxTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfdmFsKQorICAgIGRpc3BhdGNo
KDQpCisKKworX2xsaW50X29wX2RlbF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWxfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX3B1dF9ieV9pbmRleDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pbmRleCkKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9wdXRfZ2V0dGVyX3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9nZXR0ZXJfc2V0dGVyKQorICAgIGRpc3BhdGNo
KDUpCisKKworX2xsaW50X29wX2xvb3A6CisgICAgbm9wCitfbGxpbnRfb3Bfam1wOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBkaXNwYXRjaEJyYW5jaCg0W1BDXSkKKworCitfbGxpbnRfb3Bf
am1wX3Njb3BlczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2ptcF9zY29wZXMpCisgICAgZGlzcGF0Y2goMCkKKworCittYWNybyBqdW1wVHJ1ZU9y
RmFsc2UoY29uZGl0aW9uT3AsIHNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEJvb2xlYW5UYWcsIHQwLCAuc2xvdykKKyAgICBj
b25kaXRpb25PcCh0MCwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAg
IGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKHNsb3cpCisg
ICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl90cnVlOgorICAgIG5vcAor
X2xsaW50X29wX2p0cnVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFs
c2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVu
ZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qdHJ1ZSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9m
YWxzZToKKyAgICBub3AKK19sbGludF9vcF9qZmFsc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXog
dmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamZhbHNlKQorCisKK21h
Y3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmlt
bWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxI
YW5kbGVyKFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRh
cmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhb
UENdKQorCisuaW1tZWRpYXRlOgorICAgIG9yaSAxLCB0MQorICAgIGltbWVkaWF0ZUhhbmRsZXIo
dDEsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKK2VuZAorCitfbGxpbnRfb3BfamVxX251bGw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZh
bHVlLCB0YXJnZXQpIGJ0Ym56IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQg
ZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmllcSB2YWx1ZSwgTnVsbFRhZywg
dGFyZ2V0IGVuZCkKKyAgICAKKworX2xsaW50X29wX2puZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRi
eiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFj
cm8gKHZhbHVlLCB0YXJnZXQpIGJpbmVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorCisK
K19sbGludF9vcF9qbmVxX3B0cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNoCisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCisub3BKbmVxUHRyQnJhbmNoOgor
ICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKy5vcEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBk
aXNwYXRjaCg0KQorCisKK21hY3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBh
cmUsIGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWcodDMsIHQyLCB0MykKKyAgICBiaW5lcSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJ
bnQKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFy
ZSh0MSwgdDMsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6Cisg
ICAgYmlhIHQwLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcDFO
b3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0
MywgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAg
ICBmaWkyZCB0MywgdDIsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGZpaTJkIHQxLCB0MCwg
ZnQwCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0
Y2goNCkKKworLm9wMk5vdEludDoKKyAgICBjaTJkIHQxLCBmdDAKKyAgICBiaWEgdDIsIExvd2Vz
dFRhZywgLnNsb3cKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQorICAgIGRvdWJsZUNvbXBhcmUoZnQw
LCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5qdW1wVGFyZ2V0OgorICAg
IGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIp
CisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzOgorICAgIG5v
cAorX2xsaW50X29wX2psZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHQgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3MpCisKKworX2xs
aW50X29wX2pubGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0
IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQs
IHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzcykKKworCitf
bGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXIpCisKKworX2xsaW50X29wX2puZ3JlYXRlcjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcikKKworCitfbGxpbnRfb3BfbG9v
cF9pZl9sZXNzZXE6CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3NlcToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJkbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9qbGVzc2VxKQorCisKK19sbGludF9vcF9qbmxlc3NlcToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgdGFyZ2V0KSBiZGd0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9s
bGludF9oZWxwZXJfam5sZXNzZXEpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcmVxOgor
ICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiZGd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
amdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3Bfam5ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
aWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQs
IHRhcmdldCkgYmRsdHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRf
aGVscGVyX2puZ3JlYXRlcmVxKQorCisKK19sbGludF9vcF9sb29wX2hpbnQ6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBkaXNwYXRjaCgx
KQorCisKK19sbGludF9vcF9zd2l0Y2hfaW1tOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxv
YWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxl
SnVtcFRhYmxlLCB0MyAgICMgRklYTUU6IHdvdWxkIGJlIG5pY2UgdG8gcGVlcGhvbGUgdGhpcyEK
KyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJs
ZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisgICAgYmlu
ZXEgdDEsIEludDMyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKKyAgICBzdWJpIFNpbXBsZUp1bXBU
YWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hP
ZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisg
ICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zm
c2V0W3QyXSwgdDMKKyAgICBsb2FkaSBbdDMsIHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BT
d2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKwor
Lm9wU3dpdGNoSW1tTm90SW50OgorICAgIGJpYiB0MSwgTG93ZXN0VGFnLCAub3BTd2l0Y2hJbW1T
bG93ICAjIEdvIHRvIHNsb3cgcGF0aCBpZiBpdCdzIGEgZG91YmxlLgorLm9wU3dpdGNoSW1tRmFs
bFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5vcFN3aXRjaEltbVNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9pbW0pCisgICAgZGlzcGF0Y2go
MCkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1w
bGVKdW1wVGFibGUsIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0
ZXJTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRw
IHQzLCB0MgorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gK
KyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1
cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dp
dGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0MAor
ICAgIGJpbmVxIFN0cmluZ0ltcGw6Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxU
aHJvdWdoCisgICAgbG9hZHAgU3RyaW5nSW1wbDo6bV9kYXRhOFt0MF0sIHQxCisgICAgYnRpbnog
U3RyaW5nSW1wbDo6bV9oYXNoQW5kRmxhZ3NbdDBdLCBIYXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BT
d2l0Y2hDaGFyOEJpdAorICAgIGxvYWRoIFt0MV0sIHQwCisgICAgam1wIC5vcFN3aXRjaENoYXJS
ZWFkeQorLm9wU3dpdGNoQ2hhcjhCaXQ6CisgICAgbG9hZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENo
YXJSZWFkeToKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFl
cSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0
Ml0sIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6
YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgbG9hZGkgW3Qy
LCB0MCwgNF0sIHQxCisgICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBk
aXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCisKKy5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDoK
KyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRj
aF9zdHJpbmcpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmM6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGJ0aXogMTJbUENdLCAub3BOZXdGdW5jVW5jaGVja2VkCisg
ICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0
eVZhbHVlVGFnLCAub3BOZXdGdW5jRG9uZQorLm9wTmV3RnVuY1VuY2hlY2tlZDoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmMpCisub3BOZXdGdW5jRG9uZToKKyAgICBkaXNw
YXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuY19leHApCisgICAgZGlzcGF0
Y2goMykKKworCittYWNybyBkb0NhbGwoaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3Qx
XSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMs
IC5vcENhbGxTbG93KQorICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBsb2FkaSAx
MltQQ10sIHQzCisgICAgYWRkcCAyNCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgYWRkcCBj
ZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9hZHAgSlNG
dW5jdGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBh
eWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNl
dFt0M10KKyAgICBsb2FkaSA4IC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRD
b3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNdCisg
ICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9y
ZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBT
Y29wZUNoYWluICsgVGFnT2Zmc2V0W3QzXQorICAgIG1vdmUgdDMsIGNmcgorICAgIGNhbGwgTExJ
bnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQorICAgIGRpc3BhdGNoQWZ0ZXJD
YWxsKCkKKworLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhlbHBlcikKK2Vu
ZAorCitfbGxpbnRfb3BfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9s
bGludF9oZWxwZXJfY2FsbCkKKworCitfbGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3QpCisKKworX2xsaW50
X29wX2NhbGxfdmFyYXJnczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1BhdGhGb3JD
YWxsKDYsIF9sbGludF9oZWxwZXJfY2FsbF92YXJhcmdzKQorCisKK19sbGludF9vcF9jYWxsX2V2
YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIAorICAgICMgRXZhbCBpcyBleGVjdXRlZCBp
biBvbmUgb2YgdHdvIG1vZGVzOgorICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSBy
ZWFsbHkgaW52b2tpbmcgZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBleGVjdXRp
b24gaXMgcGVyZm9tZWQgZW50aXJlbHkgaW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBpdAorICAgICMg
ICAgcmV0dXJucyB0aGUgUEMgb2YgYSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0aGUgcmV0
dXJuIHZhbHVlCisgICAgIyAgICB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgICMKKyAgICAj
IDIpIFdlIGZpbmQgdGhhdCB3ZSdyZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwoKSB0
aGF0IGlzIG5vdAorICAgICMgICAgdGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVscGVyIHJldHVy
bnMgdGhlIFBDIG9mIHRoZSB0aGluZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQu
CisgICAgIworICAgICMgVGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywgd2hpY2gg
d291bGQgcmVxdWlyZSBhIHRvdGFsIG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0
ZSB0aGF0IGNhbm5vdCBiZSBlYXNpbHkgcGFja2VkIGludG8gdHdvCisgICAgIyByZWdpc3RlcnMg
KEMgZnVuY3Rpb25zIGNhbiByZXR1cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5KToKKyAg
ICAjCisgICAgIyAtIFRoZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBtYXkgbm90
IGhhdmUgYmVlbiBtb2RpZmllZAorICAgICMgICBieSB0aGUgaGVscGVyLCBidXQgdGhlIGNvbnZl
bnRpb24gaXMgdGhhdCBpdCByZXR1cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0b3RhbGx5IGNs
ZWFyIGlmIHRoYXQncyBuZWNlc3NhcnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUuCisg
ICAgIyAgIEJ1dCB0aGF0J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRlciBzbyB3
ZSBzdGljayB3aXRoIGl0LgorICAgICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBoZWxw
ZXIgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAjICAgdGhlIHJl
dHVybiB2YWx1ZSwgb3IgZGlkIG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3Ig
dXMKKyAgICAjICAgdG8gY2FsbC4KKyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAgICAjICAgLSBU
aGUgSlMgcmV0dXJuIHZhbHVlICh0d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisgICAgIyAgIC0g
VGhlIFBDIHRvIGNhbGwuCisgICAgIworICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2llciB0
byBqdXN0IGFsd2F5cyBoYXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBhIFBDIHRv
IGNhbGwsIGFuZCB0aGF0IFBDIG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAorICAgICMg
cmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAKKyAgICBz
bG93UGF0aEZvckNhbGwoNCwgX2xsaW50X2hlbHBlcl9jYWxsX2V2YWwpCisKKworX2xsaW50X2dl
bmVyaWNfcmV0dXJuX3BvaW50OgorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitfbGxpbnRf
b3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQKKyAgICBi
aWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2
YXRpb25Ob3RDcmVhdGVkCisub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCisub3BUZWFyT2ZmQWN0aXZh
dGlvbk5vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdGVhcl9vZmZf
YXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBzdWJpIDEsIHQwICAgIyBHZXQgdGhlIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcgorICAg
IGJpZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQXJn
dW1lbnRzTm90Q3JlYXRlZAorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9h
cmd1bWVudHMpCisub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgy
KQorCisKK21hY3JvIGRvUmV0dXJuKCkKKyAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAg
IGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgorICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVm
b3JlUmV0dXJuKHQyKQorICAgIHJldAorZW5kCisKK19sbGludF9vcF9yZXQ6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkg
NFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRv
UmV0dXJuKCkKKworCitfbGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIGxvYWRpIDRbUENd
LCB0MgorICAgIGxvYWRpIDhbUENdLCB0MworICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2Nmciwg
dDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdmFs
dWVQcm9maWxlKHQxLCB0MCwgdDMpCisgICAgdHJhY2VFeGVjdXRpb24oKSAjIE5lZWRzIHRvIGJl
IGhlcmUgYmVjYXVzZSBpdCB3b3VsZCBjbG9iYmVyIHQxLCB0MAorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxU
YWcsIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6
bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAg
ZG9SZXR1cm4oKQorCisub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3Q6CisgICAgbG9hZGkgOFtQ
Q10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0
dXJuKCkKKworCitfbGxpbnRfb3BfbWV0aG9kX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICAjIFdlIGlnbm9yZSBtZXRob2QgY2hlY2tzIGFuZCB1c2Ugbm9ybWFsIGdldF9ieV9pZCBv
cHRpbWl6YXRpb25zLgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N0cmNhdDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N0cmNhdCkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF90b19wcmltaXRpdmU6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRh
ZywgLm9wVG9QcmltaXRpdmVJc0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MgorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDJdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisub3BUb1ByaW1pdGl2ZUlz
SW1tOgorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9Qcmlt
aXRpdmVTbG93Q2FzZToKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fcHJpbWl0aXZl
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9wbmFtZXM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfcG5hbWVzKQorICAg
IGRpc3BhdGNoKDApICMgVGhlIGhlbHBlciBlaXRoZXIgYWR2YW5jZXMgdGhlIFBDIG9yIGp1bXBz
IHVzIHRvIHNvbWV3aGVyZSBlbHNlLgorCisKK19sbGludF9vcF9uZXh0X3BuYW1lOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZGkgMTZbUENdLCB0
MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQwCisgICAgYmllcSB0MCwg
UGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgLm9wTmV4dFBuYW1lRW5kCisgICAgbG9hZGkgMjBb
UENdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAgbG9h
ZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9qc1N0cmluZ3NbdDJdLCB0MworICAgIGxvYWRp
IFt0MywgdDAsIDhdLCB0MworICAgIGFkZGkgMSwgdDAKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRh
ZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDEsIDhdCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQzLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAg
ICBicG5lcSB0MSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJd
LCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9j
YWNoZWRQcm90b3R5cGVDaGFpblt0Ml0sIHQwCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1f
dmVjdG9yW3QwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5vcE5leHRQbmFtZVRhcmdldAorLm9wTmV4
dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wOgorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlw
ZSArIFRhZ09mZnNldFt0MV0sIE51bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBT
dHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQxCisgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQ
bmFtZVNsb3cKKyAgICBhZGRwIDQsIHQwCisgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hl
Y2tQcm90b3R5cGVMb29wCisub3BOZXh0UG5hbWVUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2go
MjRbUENdKQorCisub3BOZXh0UG5hbWVFbmQ6CisgICAgZGlzcGF0Y2goNykKKworLm9wTmV4dFBu
YW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV4dF9wbmFtZSkgIyBUaGlz
IGVpdGhlciBrZWVwcyB0aGUgUEMgd2hlcmUgaXQgd2FzIChjYXVzaW5nIHVzIHRvIGxvb3ApIG9y
IHNldHMgaXQgdG8gdGFyZ2V0LgorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3B1c2hf
c2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9wdXNoX3Njb3BlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3BvcF9zY29wZToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3BvcF9z
Y29wZSkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9wdXNoX25ld19zY29wZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfbmV3
X3Njb3BlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2NhdGNoOgorICAgICMgVGhp
cyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVj
YXVzZSB0aGUKKyAgICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0
byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhy
b3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRoZSBK
SVQgdGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0
aHJvd2luZworICAgICMgY29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93aW5n
IHRvIHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6OnRh
cmdldEludGVycHJldGVyUENGb3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBK
SVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6
OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9iYWxE
YXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0dsb2Jh
bERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpTR2xv
YmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1wdHlW
YWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAgICAgIAor
ICAgIGxvYWRpIDRbUENdLCB0MgorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQy
LCA4XQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdHJhY2VFeGVj
dXRpb24oKSAgIyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRv
IGNsb2JiZXIgdDAsIHQxLCB0MiwgdDMgYWJvdmUuCisgICAgZGlzcGF0Y2goMikKKworCitfbGxp
bnRfb3BfdGhyb3c6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl90aHJvdykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvd19yZWZl
cmVuY2VfZXJyb3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxp
bnRfb3BfanNyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBhZGRpIDMgKiA0LCBQQywgdDEKKyAgICBzdG9yZWkgdDEsIFtjZnIsIHQwLCA4XQorICAgIGRp
c3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkcCBbY2ZyLCB0MCwgOF0sIFBDCisg
ICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfZGVidWc6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWJ1ZykKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9wcm9maWxlX3dpbGxfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgdDAK
KyAgICBidHB6IFt0MF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENhbGxEb25lOgor
ICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJl
ZmVyZW5jZVtzcF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9maWxl
RGlkQ2FsbERvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitf
bGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dpbmcg
ZnJvbSB0aGUgaW50ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMpLCBz
bworICAgICMgdGhlIHRocm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQg
Y29kZSwgd2UgY29tZSB0byBoZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0
aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xv
YmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJv
d1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3db
dDFdCisKKworX2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2Vy
dmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omds
b2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhy
b3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93
W3QxXQorCisKKyMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3Vn
aCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgorIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBu
ZXZlciBhcmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAorIyBh
cyBtdWNoLgorCittYWNybyBub3RTdXBwb3J0ZWQoKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisg
ICAgICAgIGNyYXNoKCkKKyAgICBlbHNlCisgICAgICAgICMgV2Ugc2hvdWxkIHVzZSB3aGF0ZXZl
ciB0aGUgc21hbGxlc3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24gaXMsIGp1c3QgdG8KKyAgICAgICAg
IyBlbnN1cmUgdGhhdCB0aGVyZSBpcyBhIGdhcCBiZXR3ZWVuIGluc3RydWN0aW9uIGxhYmVscy4g
SWYgbXVsdGlwbGUKKyAgICAgICAgIyBzbWFsbGVzdCBpbnN0cnVjdGlvbnMgZXhpc3QsIHdlIHNo
b3VsZCBwaWNrIHRoZSBvbmUgdGhhdCBpcyBtb3N0CisgICAgICAgICMgbGlrZWx5IHJlc3VsdCBp
biBleGVjdXRpb24gYmVpbmcgaGFsdGVkLiBDdXJyZW50bHkgdGhhdCBpcyB0aGUgYnJlYWsKKyAg
ICAgICAgIyBpbnN0cnVjdGlvbiBvbiBhbGwgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBpbnRlcmVzdGVk
IGluLiAoQnJlYWsgaXMgaW50MworICAgICAgICAjIG9uIEludGVsLCB3aGljaCBpcyAxIGJ5dGUs
IGFuZCBia3B0IG9uIEFSTXY3LCB3aGljaCBpcyAyIGJ5dGVzLikKKyAgICAgICAgYnJlYWsKKyAg
ICBlbmQKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBub3RTdXBwb3J0
ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisK
K19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisK
K19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisK
K19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKwor
X2xsaW50X29wX2dldF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGlu
dF9vcF9nZXRfYnlfaWRfZ2V0dGVyX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGlu
dF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGlu
dF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50
X29wX2dldF9ieV9pZF9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0
X2J5X2lkX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9zdHJpbmdf
bGVuZ3RoOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfZ2VuZXJp
YzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3JlcGxhY2U6Cisg
ICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uOgorICAg
IG5vdFN1cHBvcnRlZCgpCisKKworIyBJbmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50LgorX2xsaW50
X2VuZDoKKyAgICBjcmFzaCgpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0
ZXIuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNv
bmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KKworLy8gVGhpcyBpcyBhIGZpbGUg
Z2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20sIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUgYXNzZW1i
bHkgY29kZQorLy8gZm9yIHRoZSBpbnRlcnByZXRlciwgYXMgY29tcGlsZWQgZnJvbSBMb3dMZXZl
bEludGVycHJldGVyLmFzbS4KKyNpbmNsdWRlICJMTEludEFzc2VtYmx5LmgiCisKKyNlbmRpZiAv
LyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisjZGVmaW5lIExvd0xldmVsSW50ZXJwcmV0ZXJf
aAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNp
bmNsdWRlICJPcGNvZGUuaCIKKworI2RlZmluZSBMTElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29k
ZSwgbGVuZ3RoKSBleHRlcm4gIkMiIHZvaWQgbGxpbnRfIyNvcGNvZGUoKTsKKyAgICBGT1JfRUFD
SF9PUENPREVfSUQoTExJTlRfSU5TVFJVQ1RJT05fREVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJV
Q1RJT05fREVDTAorCitleHRlcm4gIkMiIHZvaWQgbGxpbnRfYmVnaW4oKTsKK2V4dGVybiAiQyIg
dm9pZCBsbGludF9lbmQoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9wcm9ncmFtX3Byb2xvZ3Vl
KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZXZhbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2
b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQg
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQg
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2
b2lkIGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRf
dGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Ro
cm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUoKTsKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkK
KworI2VuZGlmIC8vIExvd0xldmVsSW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDE0
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3Qi
CityZXF1aXJlICJvcHQiCisKK2NsYXNzIE5vZGUKKyAgZGVmIGFybVY3U2luZ2xlCisgICAgZG91
YmxlT3BlcmFuZCA9IGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJCb2d1cyByZWdpc3RlciBuYW1l
ICN7ZG91YmxlT3BlcmFuZH0iIHVubGVzcyBkb3VibGVPcGVyYW5kID1+IC9eZC8KKyAgICAicyIg
KyAoJH4ucG9zdF9tYXRjaC50b19pICogMikudG9fcworICBlbmQKK2VuZAorCitjbGFzcyBTcGVj
aWFsUmVnaXN0ZXIgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKG5hbWUpCisgICAgQG5h
bWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIEBuYW1lCisgIGVu
ZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/
CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIGZhbHNlCisgIGVu
ZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIHRydWUKKyAgZW5kCitlbmQKKworQVJNdjdfRVhU
UkFfR1BSUyA9IFtTcGVjaWFsUmVnaXN0ZXIubmV3KCJyOSIpLCBTcGVjaWFsUmVnaXN0ZXIubmV3
KCJyOCIpLCBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyMyIpXQorQVJNdjdfRVhUUkFfRlBSUyA9IFtT
cGVjaWFsUmVnaXN0ZXIubmV3KCJkNyIpXQorQVJNdjdfU0NSQVRDSF9GUFIgPSBTcGVjaWFsUmVn
aXN0ZXIubmV3KCJkOCIpCisKK2RlZiBhcm1WN01vdmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVy
KQorICAjIEN1cnJlbnRseSB3ZSBvbmx5IGhhbmRsZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFs
bCBiYWNrIHRvIG1vdi9tb3Z0IGZvciB0aGUgY29tcGxleCBvbmVzLgorICBpZiB2YWx1ZSA+PSAw
ICYmIHZhbHVlIDwgMjU2CisgICAgJGFzbS5wdXRzICJtb3Z3ICN7cmVnaXN0ZXIuYXJtVjdPcGVy
YW5kfSwgXCMje3ZhbHVlfSIKKyAgZWxzaWYgKH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1
NgorICAgICRhc20ucHV0cyAibXZuICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje352YWx1
ZX0iCisgIGVsc2UKKyAgICAkYXNtLnB1dHMgIm1vdncgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9
LCBcIyN7dmFsdWUgJiAweGZmZmZ9IgorICAgIGlmICh2YWx1ZSAmIDB4ZmZmZjAwMDApICE9IDAK
KyAgICAgICRhc20ucHV0cyAibW92dCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0sIFwjI3t2YWx1
ZSA+PiAxNn0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVm
IGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgor
ICAgICAgInIwIgorICAgIHdoZW4gInQxIiwgImExIiwgInIxIgorICAgICAgInIxIgorICAgIHdo
ZW4gInQyIiwgImEyIgorICAgICAgInIyIgorICAgIHdoZW4gImEzIgorICAgICAgInIzIgorICAg
IHdoZW4gInQzIgorICAgICAgInI0IgorICAgIHdoZW4gInQ0IgorICAgICAgInI3IgorICAgIHdo
ZW4gImNmciIKKyAgICAgICJyNSIKKyAgICB3aGVuICJsciIKKyAgICAgICJsciIKKyAgICB3aGVu
ICJzcCIKKyAgICAgICJzcCIKKyAgICBlbHNlCisgICAgICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7
bmFtZX0gZm9yIEFSTXY3IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgIGVuZAor
ZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBu
YW1lCisgICAgd2hlbiAiZnQwIiwgImZyIgorICAgICAgImQwIgorICAgIHdoZW4gImZ0MSIKKyAg
ICAgICJkMSIKKyAgICB3aGVuICJmdDIiCisgICAgICAiZDIiCisgICAgd2hlbiAiZnQzIgorICAg
ICAgImQzIgorICAgIHdoZW4gImZ0NCIKKyAgICAgICJkNCIKKyAgICB3aGVuICJmdDUiCisgICAg
ICAiZDUiCisgICAgZWxzZQorICAgICAgcmFpc2UgIkJhZCByZWdpc3RlciAje25hbWV9IGZvciBB
Uk12NyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFz
cyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJJbnZhbGlkIGltbWVk
aWF0ZSAje3ZhbHVlfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiBpZiB2YWx1ZSA8IDAgb3IgdmFs
dWUgPiAyNTUKKyAgICAiXCMje3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcwor
ICBkZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2UgIkJhZCBvZmZzZXQgYXQgI3tjb2RlT3JpZ2lu
U3RyaW5nfSIgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgb3Igb2Zmc2V0LnZhbHVlID4gMHhmZmYK
KyAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCBcIyN7b2Zmc2V0LnZhbHVlfV0iCisgIGVuZAor
ZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2UgIkJh
ZCBvZmZzZXQgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAg
ICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7
c2NhbGVTaGlmdH1dIgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVm
IGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJVbmNvbnZlcnRlZCBhYnNvbHV0ZSBhZGRyZXNzIGF0
ICN7Y29kZU9yaWdpblN0cmluZ30iCisgIGVuZAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgYnJh
bmNoIG9wcy4gRm9yIGV4YW1wbGU6CisjCisjIGJhZGRpeiBmb28sIGJhciwgYmF6CisjCisjIHdp
bGwgYmVjb21lOgorIworIyBhZGRpIGZvbywgYmFyCisjIGJ6IGJhegorIworCitkZWYgYXJtVjdM
b3dlckJyYW5jaE9wcyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8
IG5vZGUgfAorICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5v
cGNvZGUKKyAgICAgIHdoZW4gL15iKGFkZGl8c3ViaXxvcml8YWRkcCkvCisgICAgICAgIG9wID0g
JDEKKyAgICAgICAgYnJhbmNoID0gImIiICsgJH4ucG9zdF9tYXRjaAorICAgICAgICBuZXdMaXN0
IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG9wLCBub2RlLm9wZXJhbmRzWzAu
Li0yXSkKKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2lu
LCBicmFuY2gsIFtub2RlLm9wZXJhbmRzWy0xXV0pCisgICAgICB3aGVuICJibXVsaW8iCisgICAg
ICAgIHRtcDEgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgdG1wMiA9
IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICBuZXdMaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJzbXVsbGkiLCBbbm9kZS5vcGVyYW5kc1swXSwg
bm9kZS5vcGVyYW5kc1sxXSwgbm9kZS5vcGVyYW5kc1sxXSwgdG1wMV0pCisgICAgICAgIG5ld0xp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInJzaGlmdGkiLCBbbm9kZS5v
cGVyYW5kc1stMl0sIEltbWVkaWF0ZS5uZXcobm9kZS5jb2RlT3JpZ2luLCAzMSksIHRtcDJdKQor
ICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJiaW5l
cSIsIFt0bXAxLCB0bXAyLCBub2RlLm9wZXJhbmRzWy0xXV0pCisgICAgICB3aGVuIC9eYm11bGkv
CisgICAgICAgIGNvbmRpdGlvbiA9ICR+LnBvc3RfbWF0Y2gKKyAgICAgICAgbmV3TGlzdCA8PCBJ
bnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibXVsaSIsIG5vZGUub3BlcmFuZHNbMC4u
LTJdKQorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4s
ICJidGkiICsgY29uZGl0aW9uLCBbbm9kZS5vcGVyYW5kc1stMl0sIG5vZGUub3BlcmFuZHNbLTFd
XSkKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICBlbmQKKyAgICBl
bHNlCisgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICBlbmQKKyAgfQorICBuZXdMaXN0CitlbmQK
KworIworIyBMb3dlcmluZyBvZiBzaGlmdCBvcHMuIEZvciBleGFtcGxlOgorIworIyBsc2hpZnRp
IGZvbywgYmFyCisjCisjIHdpbGwgYmVjb21lOgorIworIyBhbmRpIGZvbywgMzEsIHRtcAorIyBs
c2hpZnRpIHRtcCwgYmFyCisjCisKK2RlZiBhcm1WN1Nhbml0aXplU2hpZnQob3BlcmFuZCwgbGlz
dCkKKyAgcmV0dXJuIG9wZXJhbmQgaWYgb3BlcmFuZC5pbW1lZGlhdGU/CisgIAorICB0bXAgPSBU
bXAubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgOmdwcikKKyAgbGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAiYW5kaSIsIFtvcGVyYW5kLCBJbW1lZGlhdGUubmV3KG9w
ZXJhbmQuY29kZU9yaWdpbiwgMzEpLCB0bXBdKQorICB0bXAKK2VuZAorCitkZWYgYXJtVjdMb3dl
clNoaWZ0T3BzKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9k
ZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgY2FzZSBub2RlLm9wY29k
ZQorICAgICAgd2hlbiAibHNoaWZ0aSIsICJyc2hpZnRpIiwgInVyc2hpZnRpIgorICAgICAgICBp
ZiBub2RlLm9wZXJhbmRzLnNpemUgPT0gMgorICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFthcm1WN1Nhbml0aXplU2hpZnQo
bm9kZS5vcGVyYW5kc1swXSwgbmV3TGlzdCksIG5vZGUub3BlcmFuZHNbMV1dKQorICAgICAgICBl
bHNlCisgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2lu
LCBub2RlLm9wY29kZSwgW25vZGUub3BlcmFuZHNbMF0sIGFybVY3U2FuaXRpemVTaGlmdChub2Rl
Lm9wZXJhbmRzWzFdLCBuZXdMaXN0KSwgbm9kZS5vcGVyYW5kc1syXV0pCisgICAgICAgICAgcmFp
c2UgIldyb25nIG51bWJlciBvZiBvcGVyYW5kcyBmb3Igc2hpZnQgYXQgI3tub2RlLmNvZGVPcmln
aW5TdHJpbmd9IiB1bmxlc3Mgbm9kZS5vcGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgZW5kCisg
ICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgZW5kCisgICAgZWxzZQor
ICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMK
KyMgTG93ZXJpbmcgb2YgbWFsZm9ybWVkIGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGU6CisjCisjIGxv
YWRwIDEwMDAwW2Zvb10sIGJhcgorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbW92ZSAxMDAwMCwg
dG1wCisjIGFkZHAgZm9vLCB0bXAKKyMgbG9hZHAgMFt0bXBdLCBiYXIKKyMKKworY2xhc3MgTm9k
ZQorICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICBt
YXBDaGlsZHJlbiB7CisgICAgICB8IG5vZGUgfAorICAgICAgbm9kZS5hcm1WN0xvd2VyTWFsZm9y
bWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgQWRk
cmVzcworICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAg
ICBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiBvciBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAg
dG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbb2Zmc2V0LCB0bXBdKQorICAgICAgbGlzdCA8PCBJ
bnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgImFkZHAiLCBbYmFzZSwgdG1wXSkKKyAgICAgIEFk
ZHJlc3MubmV3KGNvZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkK
KyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJ
bmRleAorICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAg
ICBpZiBvZmZzZXQudmFsdWUgIT0gMAorICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6
Z3ByKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBb
b2Zmc2V0LCB0bXBdKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwg
ImFkZHAiLCBbYmFzZSwgdG1wXSkKKyAgICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgdG1w
LCBpbmRleCwgc2NhbGUsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCisgICAgZWxzZQor
ICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MK
KyAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNSZWN1cnNlKGxpc3QpCisgICAgdG1w
ID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KGNvZGVPcmlnaW4sICJtb3ZlIiwgW2FkZHJlc3MsIHRtcF0pCisgICAgQWRkcmVzcy5uZXcoY29k
ZU9yaWdpbiwgdG1wLCBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIDApKQorICBlbmQKK2VuZAor
CitkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3NlcyhsaXN0KQorICBuZXdMaXN0ID0gW10K
KyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIG5ld0xpc3QgPDwgbm9kZS5hcm1WN0xv
d2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShuZXdMaXN0KQorICB9CisgIG5ld0xpc3QKK2Vu
ZAorCisjCisjIExvd2VyaW5nIG9mIG1hbGZvcm1lZCBhZGRyZXNzZXMgaW4gZG91YmxlIGxvYWRz
IGFuZCBzdG9yZXMuIEZvciBleGFtcGxlOgorIworIyBsb2FkZCBbZm9vLCBiYXIsIDhdLCBiYXoK
KyMKKyMgYmVjb21lczoKKyMKKyMgbGVhcCBbZm9vLCBiYXIsIDhdLCB0bXAKKyMgbG9hZGQgW3Rt
cF0sIGJhegorIworCitjbGFzcyBOb2RlCisgIGRlZiBhcm1WN0RvdWJsZUFkZHJlc3MobGlzdCkK
KyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJtVjdEb3Vi
bGVBZGRyZXNzKGxpc3QpCisgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAg
IGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJsZWFwIiwgW3NlbGYsIHRtcF0p
CisgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgdG1wLCBJbW1lZGlhdGUubmV3KGNvZGVPcmln
aW4sIDApKQorICBlbmQKK2VuZAorCitkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc0Rv
dWJsZShsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAor
ICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAg
ICAgIHdoZW4gImxvYWRkIgorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2Rl
LmNvZGVPcmlnaW4sICJsb2FkZCIsIFtub2RlLm9wZXJhbmRzWzBdLmFybVY3RG91YmxlQWRkcmVz
cyhuZXdMaXN0KSwgbm9kZS5vcGVyYW5kc1sxXV0pCisgICAgICB3aGVuICJzdG9yZWQiCisgICAg
ICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInN0b3JlZCIs
IFtub2RlLm9wZXJhbmRzWzBdLCBub2RlLm9wZXJhbmRzWzFdLmFybVY3RG91YmxlQWRkcmVzcyhu
ZXdMaXN0KV0pCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgZW5k
CisgICAgZWxzZQorICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlz
dAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWlzcGxhY2VkIGltbWVkaWF0ZXMuIEZvciBleGFt
cGxlOgorIworIyBzdG9yZWkgMCwgW2Zvb10KKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUg
MCwgdG1wCisjIHN0b3JlaSB0bXAsIFtmb29dCisjCisKK2RlZiBhcm1WN0xvd2VyTWlzcGxhY2Vk
SW1tZWRpYXRlcyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5v
ZGUgfAorICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNv
ZGUKKyAgICAgIHdoZW4gInN0b3JlaSIsICJzdG9yZXAiCisgICAgICAgIG9wZXJhbmRzID0gbm9k
ZS5vcGVyYW5kcworICAgICAgICBuZXdPcGVyYW5kcyA9IFtdCisgICAgICAgIG9wZXJhbmRzLmVh
Y2ggeworICAgICAgICAgIHwgb3BlcmFuZCB8CisgICAgICAgICAgaWYgb3BlcmFuZC5pc19hPyBJ
bW1lZGlhdGUKKyAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCA6
Z3ByKQorICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5jb2Rl
T3JpZ2luLCAibW92ZSIsIFtvcGVyYW5kLCB0bXBdKQorICAgICAgICAgICAgbmV3T3BlcmFuZHMg
PDwgdG1wCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3T3BlcmFuZHMgPDwgb3BlcmFu
ZAorICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIG5ld09wZXJhbmRzKQorICAgICAg
ZWxzZQorICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAg
IG5ld0xpc3QgPDwgbm9kZQorICAgIGVuZAorICB9CisgIG5ld0xpc3QKK2VuZAorCisjCisjIExv
d2VyaW5nIG9mIG1hbGZvcm1lZCBpbW1lZGlhdGVzIGV4Y2VwdCB3aGVuIHVzZWQgaW4gYSAibW92
ZSIgaW5zdHJ1Y3Rpb24uCisjIEZvciBleGFtcGxlOgorIworIyBhZGRwIDY0MjY0MSwgZm9vCisj
CisjIHdpbGwgYmVjb21lOgorIworIyBtb3ZlIDY0MjY0MSwgdG1wCisjIGFkZHAgdG1wLCBmb28K
KyMKKworY2xhc3MgTm9kZQorICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1
cnNlKGxpc3QpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUu
YXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgfQorICBlbmQK
K2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRl
c1JlY3Vyc2UobGlzdCkKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAor
ICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgc2Vs
ZgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIGFybVY3TG93ZXJN
YWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgIHNlbGYKKyAgZW5kCitlbmQKKwor
Y2xhc3MgSW1tZWRpYXRlCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vy
c2UobGlzdCkKKyAgICBpZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAgIHRtcCA9IFRt
cC5uZXcoY29kZU9yaWdpbiwgOmdwcikKKyAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNv
ZGVPcmlnaW4sICJtb3ZlIiwgW3NlbGYsIHRtcF0pCisgICAgICB0bXAKKyAgICBlbHNlCisgICAg
ICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2RlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1t
ZWRpYXRlcyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUg
fAorICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUK
KyAgICAgIHdoZW4gIm1vdmUiCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgd2hlbiAi
YWRkaSIsICJhZGRwIiwgInN1YmkiLCAic3VicCIKKyAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1sw
XS5pc19hPyBJbW1lZGlhdGUgYW5kCisgICAgICAgICAgICBub2RlLm9wZXJhbmRzWzBdLnZhbHVl
IDwgMCBhbmQKKyAgICAgICAgICAgIG5vZGUub3BlcmFuZHNbMF0udmFsdWUgPj0gMjU1CisgICAg
ICAgICAgaWYgbm9kZS5vcGNvZGUgPX4gL2FkZC8KKyAgICAgICAgICAgIG5ld09wY29kZSA9ICJz
dWIiICsgbm9kZS5vcGNvZGVbLTEuLi0xXQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5l
d09wY29kZSA9ICJhZGQiICsgbm9kZS5vcGNvZGVbLTEuLi0xXQorICAgICAgICAgIGVuZAorICAg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbmV3T3Bj
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtJbW1lZGlhdGUubmV3
KC1ub2RlLm9wZXJhbmRzWzBdLnZhbHVlKV0gKyBub2RlLm9wZXJhbmRzWzEuLi0xXSkKKyAgICAg
ICAgZWxzZQorICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkSW1t
ZWRpYXRlc1JlY3Vyc2UobmV3TGlzdCkKKyAgICAgICAgZW5kCisgICAgICB3aGVuICJtdWxpIgor
ICAgICAgICBpZiBub2RlLm9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgIHRt
cCA9IFRtcC5uZXcoY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICBuZXdMaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMF0sIHRt
cF0pCisgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2lu
LCAibXVsaSIsIFt0bXBdICsgbm9kZS5vcGVyYW5kc1sxLi4tMV0pCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICBuZXdMaXN0IDw8IG5vZGUuYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1
cnNlKG5ld0xpc3QpCisgICAgICAgIGVuZAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8
IG5vZGUuYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QpCisgICAg
ICBlbmQKKyAgICBlbHNlCisgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICBlbmQKKyAgfQorICBu
ZXdMaXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBtaXNwbGFjZWQgYWRkcmVzc2VzLiBGb3Ig
ZXhhbXBsZToKKyMKKyMgYWRkaSBmb28sIFtiYXJdCisjCisjIHdpbGwgYmVjb21lOgorIworIyBs
b2FkaSBbYmFyXSwgdG1wCisjIGFkZGkgZm9vLCB0bXAKKyMgc3RvcmVpIHRtcCwgW2Jhcl0KKyMK
KyMgQW5vdGhlciBleGFtcGxlOgorIworIyBhZGRpIFtmb29dLCBiYXIKKyMKKyMgd2lsbCBiZWNv
bWU6CisjCisjIGxvYWRpIFtmb29dLCB0bXAKKyMgYWRkaSB0bXAsIGJhcgorIworCitkZWYgYXJt
VjdBc1JlZ2lzdGVyKHByZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kLCBzdWZmaXgsIG5lZWRTdG9y
ZSkKKyAgcmV0dXJuIG9wZXJhbmQgdW5sZXNzIG9wZXJhbmQuYWRkcmVzcz8KKyAgCisgIHRtcCA9
IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCBpZiBzdWZmaXggPT0gImQiIHRoZW4gOmZwciBl
bHNlIDpncHIgZW5kKQorICBwcmVMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVP
cmlnaW4sICJsb2FkIiArIHN1ZmZpeCwgW29wZXJhbmQsIHRtcF0pCisgIGlmIG5lZWRTdG9yZQor
ICAgIHBvc3RMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJzdG9y
ZSIgKyBzdWZmaXgsIFt0bXAsIG9wZXJhbmRdKQorICBlbmQKKyAgdG1wCitlbmQKKworZGVmIGFy
bVY3QXNSZWdpc3RlcnMocHJlTGlzdCwgcG9zdExpc3QsIG9wZXJhbmRzLCBzdWZmaXgpCisgIG5l
d09wZXJhbmRzID0gW10KKyAgb3BlcmFuZHMuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IG9wZXJh
bmQsIGluZGV4IHwKKyAgICBuZXdPcGVyYW5kcyA8PCBhcm1WN0FzUmVnaXN0ZXIocHJlTGlzdCwg
cG9zdExpc3QsIG9wZXJhbmQsIHN1ZmZpeCwgaW5kZXggPT0gb3BlcmFuZHMuc2l6ZSAtIDEpCisg
IH0KKyAgbmV3T3BlcmFuZHMKK2VuZAorCitkZWYgYXJtVjdMb3dlck1pc3BsYWNlZEFkZHJlc3Nl
cyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAg
IGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIHBvc3RJbnN0cnVjdGlvbnMgPSBbXQor
ICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgd2hlbiAiYWRkaSIsICJhZGRwIiwgImFuZGki
LCAiYW5kcCIsICJsc2hpZnRpIiwgIm11bGkiLCAibmVnaSIsICJub3RpIiwgIm9yaSIsICJvcnAi
LCAicnNoaWZ0aSIsCisgICAgICAgICJ1cnNoaWZ0aSIsICJzdWJpIiwgInN1YnAiLCAieG9yaSIs
ICJ4b3JwIiwgL15iaS8sIC9eYnAvLCAvXmJ0aS8sIC9eYnRwLywgL15jaS8sIC9eY3AvLAorICAg
ICAgICAvXnRpLworICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVP
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcm1WN0FzUmVnaXN0ZXJzKG5ld0xp
c3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJpIikpCisgICAgICB3aGVuICJi
YmVxIiwgImJibmVxIiwgImJiYSIsICJiYmFlcSIsICJiYmIiLCAiYmJiZXEiLCAiYnRibyIsICJi
dGJ6IiwgImJ0Ym56IiwgInRieiIsICJ0Ym56IiwKKyAgICAgICAgInRibyIKKyAgICAgICAgbmV3
TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXJtVjdBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBu
b2RlLm9wZXJhbmRzLCAiYiIpKQorICAgICAgd2hlbiAiYmJndCIsICJiYmd0ZXEiLCAiYmJsdCIs
ICJiYmx0ZXEiLCAiYnRicyIsICJ0YnMiCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZS5vcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNS
ZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImJzIikp
CisgICAgICB3aGVuICJhZGRkIiwgImRpdmQiLCAic3ViZCIsICJtdWxkIiwgInNxcnRkIiwgL15i
ZC8KKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJtVjdBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0
SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAiZCIpKQorICAgICAgd2hlbiAiam1wIiwgImNh
bGwiCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcm1WN0FzUmVnaXN0ZXIobmV3TGlzdCwgcG9z
dEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kc1swXSwgInAiLCBmYWxzZSldKQorICAgICAgZWxz
ZQorICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgIGVuZAorICAgICAgbmV3TGlzdCArPSBw
b3N0SW5zdHJ1Y3Rpb25zCisgICAgZWxzZQorICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5k
CisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgcmVnaXN0ZXIgcmV1c2Ug
aW4gY29tcGFyZSBpbnN0cnVjdGlvbnMuIEZvciBleGFtcGxlOgorIworIyBjaWVxIHQwLCB0MSwg
dDAKKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdiB0bXAsIHQwCisjIGNpZXEgdG1wLCB0MSwg
dDAKKyMKKyAKK2RlZiBhcm1WN0xvd2VyUmVnaXN0ZXJSZXVzZShsaXN0KQorICBuZXdMaXN0ID0g
W10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1
Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdoZW4gImNpZXEiLCAiY2luZXEi
LCAiY2lhIiwgImNpYWVxIiwgImNpYiIsICJjaWJlcSIsICJjaWd0IiwgImNpZ3RlcSIsICJjaWx0
IiwgImNpbHRlcSIsCisgICAgICAgICJjcGVxIiwgImNwbmVxIiwgImNwYSIsICJjcGFlcSIsICJj
cGIiLCAiY3BiZXEiLCAiY3BndCIsICJjcGd0ZXEiLCAiY3BsdCIsICJjcGx0ZXEiLAorICAgICAg
ICAidGlvIiwgInRpcyIsICJ0aXoiLCAidGlueiIsICJ0Ym8iLCAidGJzIiwgInRieiIsICJ0Ym56
IgorICAgICAgICBpZiBub2RlLm9wZXJhbmRzLnNpemUgPT0gMgorICAgICAgICAgIGlmIG5vZGUu
b3BlcmFuZHNbMF0gPT0gbm9kZS5vcGVyYW5kc1sxXQorICAgICAgICAgICAgdG1wID0gVG1wLm5l
dyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0
aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMF0sIHRtcF0p
CisgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4s
IG5vZGUub3Bjb2RlLCBbdG1wLCBub2RlLm9wZXJhbmRzWzFdXSkKKyAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQor
ICAgICAgICAgIHJhaXNlICJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGF0ICN7bm9kZS5jb2Rl
T3JpZ2luU3RyaW5nfSIgdW5sZXNzIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgICAgICAg
aWYgbm9kZS5vcGVyYW5kc1swXSA9PSBub2RlLm9wZXJhbmRzWzJdCisgICAgICAgICAgICB0bXAg
PSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIG5ld0xpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1sw
XSwgdG1wXSkKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29k
ZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFt0bXAsIG5vZGUub3BlcmFuZHNbMV0sIG5vZGUub3BlcmFu
ZHNbMl1dKQorICAgICAgICAgIGVsc2lmIG5vZGUub3BlcmFuZHNbMV0gPT0gbm9kZS5vcGVyYW5k
c1syXQorICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCisg
ICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJt
b3ZlIiwgW25vZGUub3BlcmFuZHNbMV0sIHRtcF0pCisgICAgICAgICAgICBuZXdMaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbbm9kZS5vcGVyYW5k
c1swXSwgdG1wLCBub2RlLm9wZXJhbmRzWzJdXSkKKyAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAgICBlbHNl
CisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgbmV3
TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTGVhIHN1
cHBvcnQuCisjCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIGFybVY3RW1pdExlYShkZXN0aW5hdGlv
bikKKyAgICBpZiBkZXN0aW5hdGlvbiA9PSBiYXNlCisgICAgICAkYXNtLnB1dHMgImFkZHMgI3tk
ZXN0aW5hdGlvbi5hcm1WN09wZXJhbmR9LCBcIyN7b2Zmc2V0LnZhbHVlfSIKKyAgICBlbHNlCisg
ICAgICAkYXNtLnB1dHMgImFkZHMgI3tkZXN0aW5hdGlvbi5hcm1WN09wZXJhbmR9LCAje2Jhc2Uu
YXJtVjdPcGVyYW5kfSwgXCMje29mZnNldC52YWx1ZX0iCisgICAgZW5kCisgIGVuZAorZW5kCisK
K2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJtVjdFbWl0TGVhKGRlc3RpbmF0aW9uKQorICAgIHJh
aXNlICJNYWxmb3JtZWQgQmFzZUluZGV4LCBvZmZzZXQgc2hvdWxkIGJlIHplcm8gYXQgI3tjb2Rl
T3JpZ2luU3RyaW5nfSIgdW5sZXNzIG9mZnNldC52YWx1ZSA9PSAwCisgICAgJGFzbS5wdXRzICJh
ZGQudyAje2Rlc3RpbmF0aW9uLmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09wZXJhbmR9LCAj
e2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGVTaGlmdH0iCisgIGVuZAorZW5kCisK
KyMgRklYTUU6IHdlIGNvdWxkIHN1cHBvcnQgQWJzb2x1dGVBZGRyZXNzIGZvciBsZWEsIGJ1dCB3
ZSBkb24ndC4KKworIworIyBBY3R1YWwgbG93ZXJpbmcgY29kZSBmb2xsb3dzLgorIworCitjbGFz
cyBTZXF1ZW5jZQorICBkZWYgbG93ZXJBUk12NworICAgIG15TGlzdCA9IEBsaXN0CisgICAgCisg
ICAgIyBWZXJpZnkgdGhhdCB3ZSB3aWxsIG9ubHkgc2VlIGluc3RydWN0aW9ucyBhbmQgbGFiZWxz
LgorICAgIG15TGlzdC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8CisgICAgICB1bmxlc3Mgbm9kZS5p
c19hPyBJbnN0cnVjdGlvbiBvcgorICAgICAgICAgIG5vZGUuaXNfYT8gTGFiZWwgb3IKKyAgICAg
ICAgICBub2RlLmlzX2E/IExvY2FsTGFiZWwgb3IKKyAgICAgICAgICBub2RlLmlzX2E/IFNraXAK
KyAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQgI3tub2RlLmluc3BlY3R9IGF0ICN7bm9kZS5jb2Rl
T3JpZ2lufSIgCisgICAgICBlbmQKKyAgICB9CisgICAgCisgICAgbXlMaXN0ID0gYXJtVjdMb3dl
ckJyYW5jaE9wcyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdMb3dlclNoaWZ0T3BzKG15TGlz
dCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzKG15TGlzdCkKKyAg
ICBteUxpc3QgPSBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzRG91YmxlKG15TGlzdCkKKyAg
ICBteUxpc3QgPSBhcm1WN0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRlcyhteUxpc3QpCisgICAgbXlM
aXN0ID0gYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXMobXlMaXN0KQorICAgIG15TGlzdCA9
IGFybVY3TG93ZXJNaXNwbGFjZWRBZGRyZXNzZXMobXlMaXN0KQorICAgIG15TGlzdCA9IGFybVY3
TG93ZXJSZWdpc3RlclJldXNlKG15TGlzdCkKKyAgICBteUxpc3QgPSBhc3NpZ25SZWdpc3RlcnNU
b1RlbXBvcmFyaWVzKG15TGlzdCwgOmdwciwgQVJNdjdfRVhUUkFfR1BSUykKKyAgICBteUxpc3Qg
PSBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFyaWVzKG15TGlzdCwgOmZwciwgQVJNdjdfRVhUUkFf
RlBSUykKKyAgICBteUxpc3QuZWFjaCB7CisgICAgICB8IG5vZGUgfAorICAgICAgbm9kZS5sb3dl
cigiQVJNdjciKQorICAgIH0KKyAgZW5kCitlbmQKKworZGVmIGFybVY3T3BlcmFuZHMob3BlcmFu
ZHMpCisgIG9wZXJhbmRzLm1hcHt8dnwgdi5hcm1WN09wZXJhbmR9LmpvaW4oIiwgIikKK2VuZAor
CitkZWYgYXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpCisgIGFybVY3T3BlcmFuZHMoW29w
ZXJhbmRzWy0xXV0gKyBvcGVyYW5kc1swLi4tMl0pCitlbmQKKworZGVmIGVtaXRBcm1WN0NvbXBh
Y3Qob3Bjb2RlMiwgb3Bjb2RlMywgb3BlcmFuZHMpCisgIGlmIG9wZXJhbmRzLnNpemUgPT0gMwor
ICAgICRhc20ucHV0cyAiI3tvcGNvZGUzfSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRz
KX0iCisgIGVsc2UKKyAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgcmFp
c2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICBpZiBvcGVyYW5kc1sw
XS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICRhc20ucHV0cyAiI3tvcGNvZGUzfSAje29wZXJhbmRz
WzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1swXS5hcm1WN09wZXJhbmR9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiI3tvcGNvZGUy
fSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgZW5kCisgIGVuZAorZW5k
CisKK2RlZiBlbWl0QXJtVjcob3Bjb2RlLCBvcGVyYW5kcykKKyAgaWYgb3BlcmFuZHMuc2l6ZSA9
PSAzCisgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVy
YW5kcyl9IgorICBlbHNlCisgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzLnNpemUgPT0gMgorICAg
ICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVy
YW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgIGVu
ZAorZW5kCisKK2RlZiBlbWl0QXJtVjdEb3VibGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBvcGVyYW5k
cykKKyAgJGFzbS5wdXRzICJ2Y21wZS5mNjQgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFd
KX0iCisgICRhc20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2NyIgorICAkYXNtLnB1dHMgIiN7
YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKK2VuZAorCitkZWYgZW1pdEFy
bVY3VGVzdChvcGVyYW5kcykKKyAgdmFsdWUgPSBvcGVyYW5kc1swXQorICBjYXNlIG9wZXJhbmRz
LnNpemUKKyAgd2hlbiAyCisgICAgbWFzayA9IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLTEp
CisgIHdoZW4gMworICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICBlbHNlCisgICAgcmFpc2UgIkV4
cGVjdGVkIDIgb3IgMyBvcGVyYW5kcyBidXQgZ290ICN7b3BlcmFuZHMuc2l6ZX0gYXQgI3tjb2Rl
T3JpZ2luU3RyaW5nfSIKKyAgZW5kCisgIAorICBpZiBtYXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQg
bWFzay52YWx1ZSA9PSAtMQorICAgICRhc20ucHV0cyAidHN0ICN7dmFsdWUuYXJtVjdPcGVyYW5k
fSwgI3t2YWx1ZS5hcm1WN09wZXJhbmR9IgorICBlbHNpZiBtYXNrLmlzX2E/IEltbWVkaWF0ZQor
ICAgICRhc20ucHV0cyAidHN0LncgI3t2YWx1ZS5hcm1WN09wZXJhbmR9LCAje21hc2suYXJtVjdP
cGVyYW5kfSIKKyAgZWxzZQorICAgICRhc20ucHV0cyAidHN0ICN7dmFsdWUuYXJtVjdPcGVyYW5k
fSwgI3ttYXNrLmFybVY3T3BlcmFuZH0iCisgIGVuZAorZW5kCisKK2RlZiBlbWl0QXJtVjdDb21w
YXJlKG9wZXJhbmRzLCBjb2RlKQorICAkYXNtLnB1dHMgIm1vdnMgI3tvcGVyYW5kc1syXS5hcm1W
N09wZXJhbmR9LCBcIzAiCisgICRhc20ucHV0cyAiY21wICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVy
YW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAkYXNtLnB1dHMgIml0ICN7Y29k
ZX0iCisgICRhc20ucHV0cyAibW92I3tjb2RlfSAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0s
IFwjMSIKK2VuZAorCitkZWYgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywgY29kZSkKKyAgJGFz
bS5wdXRzICJtb3ZzICN7b3BlcmFuZHNbLTFdLmFybVY3T3BlcmFuZH0sIFwjMCIKKyAgZW1pdEFy
bVY3VGVzdChvcGVyYW5kcykKKyAgJGFzbS5wdXRzICJpdCAje2NvZGV9IgorICAkYXNtLnB1dHMg
Im1vdiN7Y29kZX0gI3tvcGVyYW5kc1stMV0uYXJtVjdPcGVyYW5kfSwgXCMxIgorZW5kCisKK2Ns
YXNzIEluc3RydWN0aW9uCisgIGRlZiBsb3dlckFSTXY3CisgICAgJGFzbS5jb21tZW50IGNvZGVP
cmlnaW5TdHJpbmcKKyAgICBjYXNlIG9wY29kZQorICAgIHdoZW4gImFkZGkiLCAiYWRkcCIKKyAg
ICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRl
CisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAg
ICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIGlm
IG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAgICAgICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0g
b3BlcmFuZHNbMl0KKyAgICAgICAgICAgICRhc20ucHV0cyAibW92ICN7b3BlcmFuZHNbMl0uYXJt
VjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgIGVuZAor
ICAgICAgICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRzICJhZGRzICN7b3BlcmFuZHNbMl0uYXJt
VjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFy
bVY3T3BlcmFuZH0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9PSAz
IGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBv
cGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5k
c1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiYWRkcyAje2FybVY3Rmxp
cHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICBlbHNlCisgICAgICAgIGlmIG9wZXJhbmRz
WzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwg
MCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAgICRhc20ucHV0cyAiYWRkcyAje2FybVY3Rmxp
cHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAkYXNtLnB1dHMgImFkZCAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0i
CisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAgd2hlbiAiYW5kaSIsICJhbmRwIgorICAgICAg
ZW1pdEFybVY3Q29tcGFjdCgiYW5kcyIsICJhbmQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJvcmki
LCAib3JwIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgib3JycyIsICJvcnIiLCBvcGVyYW5kcykK
KyAgICB3aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICBlbWl0QXJtVjdDb21wYWN0KCJlb3JzIiwg
ImVvciIsIG9wZXJhbmRzKQorICAgIHdoZW4gImxzaGlmdGkiCisgICAgICBlbWl0QXJtVjdDb21w
YWN0KCJsc2xzIiwgImxzbHMiLCBvcGVyYW5kcykKKyAgICB3aGVuICJyc2hpZnRpIgorICAgICAg
ZW1pdEFybVY3Q29tcGFjdCgiYXNycyIsICJhc3JzIiwgb3BlcmFuZHMpCisgICAgd2hlbiAidXJz
aGlmdGkiCisgICAgICBlbWl0QXJtVjdDb21wYWN0KCJsc3JzIiwgImxzcnMiLCBvcGVyYW5kcykK
KyAgICB3aGVuICJtdWxpIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAyIG9yIG9wZXJhbmRz
WzBdID09IG9wZXJhbmRzWzJdIG9yIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAg
IGVtaXRBcm1WNygibXVscyIsIG9wZXJhbmRzKQorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1
dHMgIm1vdiAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdP
cGVyYW5kfSIKKyAgICAgICAgJGFzbS5wdXRzICJtdWxzICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVy
YW5kfSwgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3Bl
cmFuZH0iCisgICAgICBlbmQKKyAgICB3aGVuICJzdWJpIiwgInN1YnAiCisgICAgICBlbWl0QXJt
VjdDb21wYWN0KCJzdWJzIiwgInN1YnMiLCBvcGVyYW5kcykKKyAgICB3aGVuICJuZWdpIgorICAg
ICAgJGFzbS5wdXRzICJyc2JzICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1swXS5hcm1WN09wZXJhbmR9LCBcIzAiCisgICAgd2hlbiAibm90aSIKKyAgICAgICRhc20ucHV0
cyAibXZucyAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdP
cGVyYW5kfSIKKyAgICB3aGVuICJsb2FkaSIsICJsb2FkcCIKKyAgICAgICRhc20ucHV0cyAibGRy
ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJzdG9yZWkiLCAi
c3RvcmVwIgorICAgICAgJGFzbS5wdXRzICJzdHIgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzKX0i
CisgICAgd2hlbiAibG9hZGIiCisgICAgICAkYXNtLnB1dHMgImxkcmIgI3thcm1WN0ZsaXBwZWRP
cGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gImxvYWRicyIKKyAgICAgICRhc20ucHV0cyAi
bGRyc2IudyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAic3Rv
cmViIgorICAgICAgJGFzbS5wdXRzICJzdHJiICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kcyl9Igor
ICAgIHdoZW4gImxvYWRoIgorICAgICAgJGFzbS5wdXRzICJsZHJoICN7YXJtVjdGbGlwcGVkT3Bl
cmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJsb2FkaHMiCisgICAgICAkYXNtLnB1dHMgImxk
cnNoLncgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gInN0b3Jl
aCIKKyAgICAgICRhc20ucHV0cyAic3RyaCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHMpfSIKKyAg
ICB3aGVuICJsb2FkZCIKKyAgICAgICRhc20ucHV0cyAidmxkci42NCAje2FybVY3RmxpcHBlZE9w
ZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAic3RvcmVkIgorICAgICAgJGFzbS5wdXRzICJ2
c3RyLjY0ICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gImFkZGQiCisgICAg
ICBlbWl0QXJtVjcoInZhZGQuZjY0Iiwgb3BlcmFuZHMpCisgICAgd2hlbiAiZGl2ZCIKKyAgICAg
IGVtaXRBcm1WNygidmRpdi5mNjQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJzdWJkIgorICAgICAg
ZW1pdEFybVY3KCJ2c3ViLmY2NCIsIG9wZXJhbmRzKQorICAgIHdoZW4gIm11bGQiCisgICAgICBl
bWl0QXJtVjcoInZtdWwuZjY0Iiwgb3BlcmFuZHMpCisgICAgd2hlbiAic3FydGQiCisgICAgICAk
YXNtLnB1dHMgInZzcXJ0LmY2NCAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisg
ICAgd2hlbiAiY2kyZCIKKyAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzFdLmFybVY3
U2luZ2xlfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgJGFzbS5wdXRzICJ2
Y3Z0LmY2NC5zMzIgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFy
bVY3U2luZ2xlfSIKKyAgICB3aGVuICJiZGVxIgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNo
KCJiZXEiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZG5lcSIKKyAgICAgICRhc20ucHV0cyAidmNt
cGUuZjY0ICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5wdXRz
ICJ2bXJzIGFwc3JfbnpjdiwgZnBzY3IiCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwu
dW5pcXVlKCJiZG5lcSIpCisgICAgICAkYXNtLnB1dHMgImJ2cyAje0xhYmVsUmVmZXJlbmNlLm5l
dyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkuYXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJi
bmUgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiQVJN
djciKQorICAgIHdoZW4gImJkZ3QiCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJndCIs
IG9wZXJhbmRzKQorICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5j
aCgiYmdlIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRsdCIKKyAgICAgIGVtaXRBcm1WN0RvdWJs
ZUJyYW5jaCgiYm1pIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRsdGVxIgorICAgICAgZW1pdEFy
bVY3RG91YmxlQnJhbmNoKCJibHMiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGVxdW4iCisgICAg
ICAkYXNtLnB1dHMgInZjbXBlLmY2NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIK
KyAgICAgICRhc20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2NyIgorICAgICAgJGFzbS5wdXRz
ICJidnMgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAkYXNtLnB1dHMgImJlcSAje29w
ZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiZG5lcXVuIgorICAgICAgZW1pdEFybVY3
RG91YmxlQnJhbmNoKCJibmUiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGd0dW4iCisgICAgICBl
bWl0QXJtVjdEb3VibGVCcmFuY2goImJoaSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkZ3RlcXVu
IgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJicGwiLCBvcGVyYW5kcykKKyAgICB3aGVu
ICJiZGx0dW4iCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJsdCIsIG9wZXJhbmRzKQor
ICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJibGUiLCBv
cGVyYW5kcykKKyAgICB3aGVuICJidGQyaSIKKyAgICAgICMgRklYTUU6IG1heSBiZSBhIGdvb2Qg
aWRlYSB0byBqdXN0IGdldCByaWQgb2YgdGhpcyBpbnN0cnVjdGlvbiwgc2luY2UgdGhlIGludGVy
cHJldGVyCisgICAgICAjIGN1cnJlbnRseSBkb2VzIG5vdCB1c2UgaXQuCisgICAgICByYWlzZSAi
QVJNdjcgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wY29kZSB5ZXQsICN7Y29kZU9yaWdpbn0iCisg
ICAgd2hlbiAidGQyaSIKKyAgICAgICRhc20ucHV0cyAidmN2dC5zMzIuZjY0ICN7QVJNdjdfU0NS
QVRDSF9GUFIuYXJtVjdTaW5nbGV9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAg
ICAkYXNtLnB1dHMgInZtb3YgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje0FSTXY3X1ND
UkFUQ0hfRlBSLmFybVY3U2luZ2xlfSIKKyAgICB3aGVuICJiY2QyaSIKKyAgICAgICRhc20ucHV0
cyAidmN2dC5zMzIuZjY0ICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJtVjdTaW5nbGV9LCAje29wZXJh
bmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAkYXNtLnB1dHMgInZtb3YgI3tvcGVyYW5kc1sx
XS5hcm1WN09wZXJhbmR9LCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSIKKyAgICAg
ICRhc20ucHV0cyAidmN2dC5mNjQuczMyICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJtVjdPcGVyYW5k
fSwgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0iCisgICAgICBlbWl0QXJtVjdEb3Vi
bGVCcmFuY2goImJuZSIsIFtBUk12N19TQ1JBVENIX0ZQUiwgb3BlcmFuZHNbMF0sIG9wZXJhbmRz
WzJdXSkKKyAgICAgICRhc20ucHV0cyAidHN0ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwg
I3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgJGFzbS5wdXRzICJiZXEgI3tvcGVy
YW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAibW92ZHoiCisgICAgICAjIEZJWE1FOiBlaXRo
ZXIgc3VwcG9ydCB0aGlzIG9yIHJlbW92ZSBpdC4KKyAgICAgIHJhaXNlICJBUk12NyBkb2VzIG5v
dCBzdXBwb3J0IHRoaXMgb3Bjb2RlIHlldCwgI3tjb2RlT3JpZ2lufSIKKyAgICB3aGVuICJwb3Ai
CisgICAgICAkYXNtLnB1dHMgInBvcCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAg
d2hlbiAicHVzaCIKKyAgICAgICRhc20ucHV0cyAicHVzaCAje29wZXJhbmRzWzBdLmFybVY3T3Bl
cmFuZH0iCisgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6eGkycCIKKyAgICAgIGlmIG9wZXJh
bmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICBhcm1WN01vdmVJbW1lZGlhdGUob3BlcmFu
ZHNbMF0udmFsdWUsIG9wZXJhbmRzWzFdKQorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMg
Im1vdiAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICBlbmQKKyAgICB3
aGVuICJub3AiCisgICAgICAkYXNtLnB1dHMgIm5vcCIKKyAgICB3aGVuICJiaWVxIiwgImJwZXEi
LCAiYmJlcSIKKyAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQor
ICAgICAgICAkYXNtLnB1dHMgInRzdCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3Bl
cmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICAgIGVsc2lmIEltbWVkaWF0ZS5uZXcobmlsLCAw
KSA9PSBvcGVyYW5kc1sxXQorICAgICAgICAkYXNtLnB1dHMgInRzdCAje29wZXJhbmRzWzBdLmFy
bVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgIGVsc2UKKyAg
ICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisg
ICAgICBlbmQKKyAgICAgICRhc20ucHV0cyAiYmVxICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9Igor
ICAgIHdoZW4gImJpbmVxIiwgImJwbmVxIiwgImJibmVxIgorICAgICAgaWYgSW1tZWRpYXRlLm5l
dyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICRhc20ucHV0cyAidHN0ICN7b3BlcmFu
ZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAg
ZWxzaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzFdCisgICAgICAgICRhc20u
cHV0cyAidHN0ICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1W
N09wZXJhbmR9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3Bl
cmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgIGVuZAorICAgICAgJGFzbS5wdXRzICJibmUg
I3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmlhIiwgImJwYSIsICJiYmEiCisg
ICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAg
ICAgICRhc20ucHV0cyAiYmhpICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJp
YWVxIiwgImJwYWVxIiwgImJiYWVxIgorICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJh
bmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgImJocyAje29wZXJhbmRzWzJd
LmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWIiLCAiYnBiIiwgImJiYiIKKyAgICAgICRhc20ucHV0
cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5wdXRz
ICJibG8gI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmliZXEiLCAiYnBiZXEi
LCAiYmJiZXEiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNb
MC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmxzICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9Igor
ICAgIHdoZW4gImJpZ3QiLCAiYnBndCIsICJiYmd0IgorICAgICAgJGFzbS5wdXRzICJjbXAgI3th
cm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgImJndCAje29w
ZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWd0ZXEiLCAiYnBndGVxIiwgImJiZ3Rl
cSIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9
IgorICAgICAgJGFzbS5wdXRzICJiZ2UgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hl
biAiYmlsdCIsICJicGx0IiwgImJibHQiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3Bl
cmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmx0ICN7b3BlcmFuZHNb
Ml0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJpbHRlcSIsICJicGx0ZXEiLCAiYmJsdGVxIgorICAg
ICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAg
ICAkYXNtLnB1dHMgImJsZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJidGl6
IiwgImJ0cHoiLCAiYnRieiIKKyAgICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgICAgICAk
YXNtLnB1dHMgImJlcSAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYnRpbnoi
LCAiYnRwbnoiLCAiYnRibnoiCisgICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICAgICAg
JGFzbS5wdXRzICJibmUgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJ0aW8i
LCAiYnRwbyIsICJidGJvIgorICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgICAgICRh
c20ucHV0cyAiYnZzICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJidGlzIiwg
ImJ0cHMiLCAiYnRicyIKKyAgICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgICAgICAkYXNt
LnB1dHMgImJtaSAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCisgICAgd2hlbiAiam1wIgorICAg
ICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAgICRhc20ucHV0cyAiYiAje29wZXJhbmRz
WzBdLmFzbUxhYmVsfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJtb3YgcGMsICN7
b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgIGVuZAorICAgIHdoZW4gImNhbGwiCisg
ICAgICBpZiBvcGVyYW5kc1swXS5sYWJlbD8KKyAgICAgICAgJGFzbS5wdXRzICJibHggI3tvcGVy
YW5kc1swXS5hc21MYWJlbH0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiYmx4ICN7
b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgIGVuZAorICAgIHdoZW4gImJyZWFrIgor
ICAgICAgJGFzbS5wdXRzICJia3B0IgorICAgIHdoZW4gInJldCIKKyAgICAgICRhc20ucHV0cyAi
YnggbHIiCisgICAgd2hlbiAiY2llcSIsICJjcGVxIgorICAgICAgZW1pdEFybVY3Q29tcGFyZShv
cGVyYW5kcywgImVxIikKKyAgICB3aGVuICJjaW5lcSIsICJjcG5lcSIKKyAgICAgIGVtaXRBcm1W
N0NvbXBhcmUob3BlcmFuZHMsICJuZSIpCisgICAgd2hlbiAiY2lhIiwgImNwYSIKKyAgICAgIGVt
aXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJoaSIpCisgICAgd2hlbiAiY2lhZXEiLCAiY3BhZXEi
CisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiaHMiKQorICAgIHdoZW4gImNpYiIs
ICJjcGIiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibG8iKQorICAgIHdoZW4g
ImNpYmVxIiwgImNwYmVxIgorICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImxzIikK
KyAgICB3aGVuICJjaWd0IiwgImNwZ3QiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRz
LCAiZ3QiKQorICAgIHdoZW4gImNpZ3RlcSIsICJjcGd0ZXEiCisgICAgICBlbWl0QXJtVjdDb21w
YXJlKG9wZXJhbmRzLCAiZ2UiKQorICAgIHdoZW4gImNpbHQiLCAiY3BsdCIKKyAgICAgIGVtaXRB
cm1WN0NvbXBhcmUob3BlcmFuZHMsICJsdCIpCisgICAgd2hlbiAiY2lsdGVxIiwgImNwbHRlcSIK
KyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJsZSIpCisgICAgd2hlbiAidGlvIiwg
InRibyIKKyAgICAgIGVtaXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMsICJ2cyIpCisgICAgd2hlbiAi
dGlzIiwgInRicyIKKyAgICAgIGVtaXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMsICJtaSIpCisgICAg
d2hlbiAidGl6IiwgInRieiIKKyAgICAgIGVtaXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMsICJlcSIp
CisgICAgd2hlbiAidGlueiIsICJ0Ym56IgorICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5k
cywgIm5lIikKKyAgICB3aGVuICJwZWVrIgorICAgICAgJGFzbS5wdXRzICJsZHIgI3tvcGVyYW5k
c1sxXS5hcm1WN09wZXJhbmR9LCBbc3AsIFwjI3tvcGVyYW5kc1swXS52YWx1ZSAqIDR9XSIKKyAg
ICB3aGVuICJwb2tlIgorICAgICAgJGFzbS5wdXRzICJzdHIgI3tvcGVyYW5kc1sxXS5hcm1WN09w
ZXJhbmR9LCBbc3AsIFwjI3tvcGVyYW5kc1swXS52YWx1ZSAqIDR9XSIKKyAgICB3aGVuICJmaWky
ZCIKKyAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7
b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9Igor
ICAgIHdoZW4gImZkMmlpIgorICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMV0uYXJt
VjdPcGVyYW5kfSwgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFy
bVY3T3BlcmFuZH0iCisgICAgd2hlbiAiYm8iCisgICAgICAkYXNtLnB1dHMgImJ2cyAje29wZXJh
bmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJicyIKKyAgICAgICRhc20ucHV0cyAiYm1pICN7
b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJ6IgorICAgICAgJGFzbS5wdXRzICJi
ZXEgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYm56IgorICAgICAgJGFzbS5w
dXRzICJibmUgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAibGVhaSIsICJsZWFw
IgorICAgICAgb3BlcmFuZHNbMF0uYXJtVjdFbWl0TGVhKG9wZXJhbmRzWzFdKQorICAgIHdoZW4g
InNtdWxsaSIKKyAgICAgIHJhaXNlICJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIHRvIHNtdWxs
IGluICN7c2VsZi5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb3BlcmFu
ZHMubGVuZ3RoID09IDQKKyAgICAgICRhc20ucHV0cyAic211bGwgI3tvcGVyYW5kc1syXS5hcm1W
N09wZXJhbmR9LCAje29wZXJhbmRzWzNdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJt
VjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgIGVsc2UKKyAgICAg
IHJhaXNlICJVbmhhbmRsZWQgb3Bjb2RlICN7b3Bjb2RlfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9
IgorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9hc20ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3MiBAQAorIyEvdXNyL2Jpbi9l
bnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiskOiA8PCBG
aWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAiZGln
ZXN0L3NoYTEiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAi
c2VsZl9oYXNoIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2Ns
YXNzIEFzc2VtYmxlcgorICBkZWYgaW5pdGlhbGl6ZShvdXRwKQorICAgIEBvdXRwID0gb3V0cAor
ICAgIEBzdGF0ZSA9IDpjcHAKKyAgICBAY29tbWVudFN0YXRlID0gOm5vbmUKKyAgICBAY29tbWVu
dCA9IG5pbAorICBlbmQKKyAgCisgIGRlZiBlbnRlckFzbQorICAgIEBvdXRwLnB1dHMgImFzbSAo
IgorICAgIEBzdGF0ZSA9IDphc20KKyAgZW5kCisgIAorICBkZWYgbGVhdmVBc20KKyAgICBwdXRz
TGFzdENvbW1lbnQKKyAgICBAb3V0cC5wdXRzICIpOyIKKyAgICBAc3RhdGUgPSA6Y3BwCisgIGVu
ZAorICAKKyAgZGVmIGluQXNtCisgICAgZW50ZXJBc20KKyAgICB5aWVsZAorICAgIGxlYXZlQXNt
CisgIGVuZAorICAKKyAgZGVmIGxhc3RDb21tZW50CisgICAgaWYgQGNvbW1lbnQKKyAgICAgIHJl
c3VsdCA9ICIvLyAje0Bjb21tZW50fSIKKyAgICBlbHNlCisgICAgICByZXN1bHQgPSAiIgorICAg
IGVuZAorICAgIEBjb21tZW50U3RhdGUgPSA6bm9uZQorICAgIEBjb21tZW50ID0gbmlsCisgICAg
cmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHB1dHNMYXN0Q29tbWVudAorICAgIGNvbW1lbnQgPSBs
YXN0Q29tbWVudAorICAgIHVubGVzcyBjb21tZW50LmVtcHR5PworICAgICAgQG91dHAucHV0cyBj
b21tZW50CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHB1dHMoKmxpbmUpCisgICAgcmFpc2Ug
dW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAgQG91dHAucHV0cygiXCJcXHQiICsgbGluZS5qb2lu
KCcnKSArICJcXG5cIiAje2xhc3RDb21tZW50fSIpCisgIGVuZAorICAKKyAgZGVmIHByaW50KGxp
bmUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAgQG91dHAucHJpbnQoIlwi
IiArIGxpbmUgKyAiXCIiKQorICBlbmQKKyAgCisgIGRlZiBwdXRzTGFiZWwobGFiZWxOYW1lKQor
ICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnB1dHMoIk9GRkxJTkVf
QVNNX0dMT0JBTF9MQUJFTCgje2xhYmVsTmFtZX0pICN7bGFzdENvbW1lbnR9IikKKyAgZW5kCisg
IAorICBkZWYgcHV0c0xvY2FsTGFiZWwobGFiZWxOYW1lKQorICAgIHJhaXNlIHVubGVzcyBAc3Rh
dGUgPT0gOmFzbQorICAgIEBvdXRwLnB1dHMoIkxPQ0FMX0xBQkVMX1NUUklORygje2xhYmVsTmFt
ZX0pIFwiOlxcblwiICN7bGFzdENvbW1lbnR9IikKKyAgZW5kCisgIAorICBkZWYgc2VsZi5sYWJl
bFJlZmVyZW5jZShsYWJlbE5hbWUpCisgICAgIlwiIFNZTUJPTF9TVFJJTkcoI3tsYWJlbE5hbWV9
KSBcIiIKKyAgZW5kCisgIAorICBkZWYgc2VsZi5sb2NhbExhYmVsUmVmZXJlbmNlKGxhYmVsTmFt
ZSkKKyAgICAiXCIgTE9DQUxfTEFCRUxfU1RSSU5HKCN7bGFiZWxOYW1lfSkgXCIiCisgIGVuZAor
ICAKKyAgZGVmIGNvbW1lbnQodGV4dCkKKyAgICBjYXNlIEBjb21tZW50U3RhdGUKKyAgICB3aGVu
IDpub25lCisgICAgICBAY29tbWVudCA9IHRleHQKKyAgICAgIEBjb21tZW50U3RhdGUgPSA6b25l
CisgICAgd2hlbiA6b25lCisgICAgICBAb3V0cC5wdXRzICIvLyAje0Bjb21tZW50fSIKKyAgICAg
IEBvdXRwLnB1dHMgIi8vICN7dGV4dH0iCisgICAgICBAY29tbWVudCA9IG5pbAorICAgICAgQGNv
bW1lbnRTdGF0ZSA9IDptYW55CisgICAgd2hlbiA6bWFueQorICAgICAgQG91dHAucHV0cyAiLy8g
I3t0ZXh0fSIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKK2VuZAorCith
c21GaWxlID0gQVJHVi5zaGlmdAorb2Zmc2V0c0ZpbGUgPSBBUkdWLnNoaWZ0CitvdXRwdXRGbG5t
ID0gQVJHVi5zaGlmdAorCiskc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IFBhcnNpbmcgI3thc21G
aWxlfSBhbmQgI3tvZmZzZXRzRmlsZX0gYW5kIGNyZWF0aW5nIGFzc2VtYmx5IGZpbGUgI3tvdXRw
dXRGbG5tfS4iCisKK29mZnNldHNMaXN0LCBjb25maWdJbmRleCA9IG9mZnNldHNBbmRDb25maWd1
cmF0aW9uSW5kZXgob2Zmc2V0c0ZpbGUpCitpbnB1dERhdGEgPSBJTzo6cmVhZChhc21GaWxlKQor
CitpbnB1dEhhc2ggPQorICAiLy8gb2ZmbGluZWFzbSBpbnB1dCBoYXNoOiAiICsgRGlnZXN0OjpT
SEExLmhleGRpZ2VzdChpbnB1dERhdGEpICsKKyAgIiAiICsgRGlnZXN0OjpTSEExLmhleGRpZ2Vz
dCgob2Zmc2V0c0xpc3QgKyBbY29uZmlnSW5kZXhdKS5qb2luKCcgJykpICsKKyAgIiAiICsgc2Vs
Zkhhc2gKKworaWYgRmlsZVRlc3QuZXhpc3Q/IG91dHB1dEZsbm0KKyAgRmlsZS5vcGVuKG91dHB1
dEZsbm0sICJyIikgeworICAgIHwgaW5wIHwKKyAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAg
IGlmIGZpcnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09IGlucHV0SGFzaAorICAgICAgJHN0
ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBOb3RoaW5nIGNoYW5nZWQuIgorICAgICAgZXhpdCAwCisg
ICAgZW5kCisgIH0KK2VuZAorCitGaWxlLm9wZW4ob3V0cHV0RmxubSwgInciKSB7CisgIHwgb3V0
cCB8CisgICRvdXRwdXQgPSBvdXRwCisgICRvdXRwdXQucHV0cyBpbnB1dEhhc2gKKyAgCisgICRh
c20gPSBBc3NlbWJsZXIubmV3KCRvdXRwdXQpCisgIAorICBhc3QgPSBwYXJzZShsZXgoaW5wdXRE
YXRhKSkKKyAgCisgIGZvclNldHRpbmdzKGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3Qp
W2NvbmZpZ0luZGV4XSwgYXN0KSB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFT
VCwgYmFja2VuZCB8CisgICAgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQor
ICAgIGxvd0xldmVsQVNUID0gbG93TGV2ZWxBU1QucmVzb2x2ZSgqYnVpbGRPZmZzZXRzTWFwKGxv
d0xldmVsQVNULCBvZmZzZXRzTGlzdCkpCisgICAgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29u
Y3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQpIHsKKyAgICAgICRhc20uaW5Bc20g
eworICAgICAgICBsb3dMZXZlbEFTVC5sb3dlcihiYWNrZW5kKQorICAgICAgfQorICAgIH0KKyAg
fQorfQorCiskc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IEFzc2VtYmx5IGZpbGUgI3tvdXRwdXRG
bG5tfSBzdWNjZXNzZnVsbHkgZ2VuZXJhdGVkLiIKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYXN0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDM5IEBACisjIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjCisjIEJhc2UgdXRpbGl0eSB0eXBl
cyBmb3IgdGhlIEFTVC4KKyMKKworIyBWYWxpZCBtZXRob2RzIGZvciBOb2RlOgorIworIyBub2Rl
LmNoaWxkcmVuIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgaW1tZWRpYXRlIGNoaWxkcmVuLgorIwor
IyBub2RlLmRlc2NlbmRlbnRzIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHN0cmljdCBkZXNj
ZW5kYW50cyAoY2hpbGRyZW4KKyMgICAgIGFuZCBjaGlsZHJlbiBvZiBjaGlsZHJlbiwgdHJhbnNp
dGl2ZWx5KS4KKyMKKyMgbm9kZS5mbGF0dGVuIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmlu
ZyB0aGUgc3RyaWN0IGRlc2NlbmRhbnRzIGFuZAorIyAgICAgdGhlIG5vZGUgaXRzZWxmLgorIwor
IyBub2RlLmZpbHRlcih0eXBlKSAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhvc2Ug
ZWxlbWVudHMgaW4KKyMgICAgIG5vZGUuZmxhdHRlbiB0aGF0IGFyZSBvZiB0aGUgZ2l2ZW4gdHlw
ZSAoaXNfYT8gdHlwZSByZXR1cm5zIHRydWUpLgorIworIyBub2RlLm1hcENoaWxkcmVue3x2fCAu
Li59IC0+IFJldHVybnMgYSBuZXcgbm9kZSB3aXRoIGFsbCBjaGlsZHJlbgorIyAgICAgcmVwbGFj
ZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBibG9jay4KKyMKKyMgRXhhbXBsZXM6CisjCisjIG5v
ZGUuZmlsdGVyKFNldHRpbmcpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHNldHRpbmdzIHRo
YXQgdGhlIEFTVCdzCisjICAgICBJZlRoZW5FbHNlIGJsb2NrcyBkZXBlbmQgb24uCisjCisjIG5v
ZGUuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc3RydWN0
dXJlIG9mZnNldHMKKyMgICAgIHRoYXQgdGhlIEFTVCBkZXBlbmRzIG9uLgorCitjbGFzcyBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luKQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICBlbmQKKyAgCisgIGRlZiBjb2Rl
T3JpZ2luU3RyaW5nCisgICAgImxpbmUgbnVtYmVyICN7QGNvZGVPcmlnaW59IgorICBlbmQKKyAg
CisgIGRlZiBkZXNjZW5kYW50cworICAgIGNoaWxkcmVuLmNvbGxlY3R7fHZ8IHYuZmxhdHRlbn0u
ZmxhdHRlbgorICBlbmQKKyAgCisgIGRlZiBmbGF0dGVuCisgICAgW3NlbGZdICsgZGVzY2VuZGFu
dHMKKyAgZW5kCisgIAorICBkZWYgZmlsdGVyKHR5cGUpCisgICAgZmxhdHRlbi5zZWxlY3R7fHZ8
IHYuaXNfYT8gdHlwZX0KKyAgZW5kCitlbmQKKworY2xhc3MgTm9DaGlsZHJlbiA8IE5vZGUKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICBlbmQK
KyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
CisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXRLZXkKKyAgYXR0cl9y
ZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShzdHJ1Y3QsIGZpZWxk
KQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAorICBlbmQKKyAgCisg
IGRlZiBoYXNoCisgICAgQHN0cnVjdC5oYXNoICsgQGZpZWxkLmhhc2ggKiAzCisgIGVuZAorICAK
KyAgZGVmIGVxbD8ob3RoZXIpCisgICAgQHN0cnVjdCA9PSBvdGhlci5zdHJ1Y3QgYW5kIEBmaWVs
ZCA9PSBvdGhlci5maWVsZAorICBlbmQKK2VuZAorICAgIAorIworIyBBU1Qgbm9kZXMuCisjCisK
K2NsYXNzIFN0cnVjdE9mZnNldCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVjdCwg
OmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9
IGZpZWxkCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvckZp
ZWxkKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAga2V5ID0gU3RydWN0T2Zmc2V0S2V5
Lm5ldyhzdHJ1Y3QsIGZpZWxkKQorICAgIAorICAgIHVubGVzcyBAQG1hcHBpbmdba2V5XQorICAg
ICAgQEBtYXBwaW5nW2tleV0gPSBTdHJ1Y3RPZmZzZXQubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCwg
ZmllbGQpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW2tleV0KKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgICIje3N0cnVjdH06OiN7ZmllbGR9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIp
CisgICAgaWYgQHN0cnVjdCAhPSBvdGhlci5zdHJ1Y3QKKyAgICAgIHJldHVybiBAc3RydWN0IDw9
PiBvdGhlci5zdHJ1Y3QKKyAgICBlbmQKKyAgICBAZmllbGQgPD0+IG90aGVyLmZpZWxkCisgIGVu
ZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/
CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5k
CisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6
ZW9mIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0CisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3Ry
dWN0ID0gc3RydWN0CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxm
LmZvck5hbWUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHVubGVzcyBAQG1hcHBpbmdbc3RydWN0
XQorICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBTaXplb2YubmV3KGNvZGVPcmlnaW4sIHN0cnVj
dCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbc3RydWN0XQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgInNpemVvZiAje0BzdHJ1Y3R9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIpCisg
ICAgQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/Cisg
ICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAor
ICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/Cisg
ICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlIDwgTm9DaGlsZHJlbgorICBh
dHRyX3JlYWRlciA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhbHVl
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhbHVlID0gdmFsdWUKKyAgICByYWlzZSAi
QmFkIGltbWVkaWF0ZSB2YWx1ZSAje3ZhbHVlLmluc3BlY3R9IGF0ICN7Y29kZU9yaWdpblN0cmlu
Z30iIHVubGVzcyB2YWx1ZS5pc19hPyBJbnRlZ2VyCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiI3t2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIG90aGVyLmlzX2E/
IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUgPT0gQHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGFk
ZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAg
ZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgcmVn
aXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5v
ZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9
IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZElt
bWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9
KSIKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRl
ZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBpbW1lZGlhdGU/CisgICAgdHJ1
ZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICBmYWxzZQorICBlbmQKK2VuZAorCitj
bGFzcyBTdWJJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0Cisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAor
ICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVm
IG1hcENoaWxkcmVuCisgICAgU3ViSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBs
ZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVm
dC5kdW1wfSAtICN7cmlnaHQuZHVtcH0pIgorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAg
IGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAg
ZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAg
IGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJf
cmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxl
ZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAg
QHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEBy
aWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBNdWxJbW1lZGlhdGVzLm5l
dyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICogI3tyaWdodC5kdW1wfSkiCisgIGVuZAor
ICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/Cisg
ICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5kCisg
IAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1t
ZWRpYXRlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0g
Y2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGNoaWxkXQorICBlbmQKKyAg
CisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5lZ0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKC0je0BjaGlsZC5kdW1w
fSkiCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBk
ZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRy
dWUKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKwor
Y2xhc3MgUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVm
IHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFt
ZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5h
bWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisg
IAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPwor
ICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIHRydWUKKyAgZW5kCitl
bmQKKworY2xhc3MgRlBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFt
ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9Cisg
IAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFw
cGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gRlBSZWdpc3RlcklELm5ldyhjb2Rl
T3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNl
CisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGlt
bWVkaWF0ZT8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICB0cnVl
CisgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRl
ciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9
IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNz
IEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gVmFyaWFibGUubmV3KGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MgPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBiYXNlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9
IGJhc2UKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgICAgcmFpc2UgIkJhZCBiYXNlIGZvciBhZGRy
ZXNzICN7YmFzZS5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgYmFzZS5p
c19hPyBWYXJpYWJsZSBvciBiYXNlLnJlZ2lzdGVyPworICAgIHJhaXNlICJCYWQgb2Zmc2V0IGZv
ciBhZGRyZXNzICN7b2Zmc2V0Lmluc3BlY3R9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVz
cyBvZmZzZXQuaXNfYT8gVmFyaWFibGUgb3Igb2Zmc2V0LmltbWVkaWF0ZT8KKyAgZW5kCisgIAor
ICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVmIG1h
cENoaWxkcmVuCisgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlp
ZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9
WyN7YmFzZS5kdW1wfV0iCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgdHJ1ZQorICBl
bmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBpbW1lZGlh
dGU/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAg
ZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFzZSwg
OmluZGV4LCA6c2NhbGUsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QGJhc2UgPSBiYXNlCisgICAgQGluZGV4ID0gaW5kZXgKKyAgICBAc2NhbGUgPSBzY2FsZQorICAg
IHJhaXNlIHVubGVzcyBbMSwgMiwgNCwgOF0ubWVtYmVyPyBAc2NhbGUKKyAgICBAb2Zmc2V0ID0g
b2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIHNjYWxlU2hpZnQKKyAgICBjYXNlIHNjYWxlCisgICAg
d2hlbiAxCisgICAgICAwCisgICAgd2hlbiAyCisgICAgICAxCisgICAgd2hlbiA0CisgICAgICAy
CisgICAgd2hlbiA4CisgICAgICAzCisgICAgZWxzZQorICAgICAgcmFpc2UgIkJhZCBzY2FsZSBh
dCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJl
bgorICAgIFtAYmFzZSwgQGluZGV4LCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbgorICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxk
IEBpbmRleCksIEBzY2FsZSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfSwgI3tpbmRleC5kdW1wfSwgI3tzY2Fs
ZX1dIgorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIHRydWUKKyAgZW5kCisgIAorICBk
ZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5kCisK
K2NsYXNzIEFic29sdXRlQWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmFkZHJl
c3MKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGFkZHJlc3MpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgICIje2FkZHJlc3MuZHVtcH1bXSIKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAg
ICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAg
ZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAg
ICBmYWxzZQorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbiA8IE5vZGUKKyAgYXR0cl9y
ZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBvcGNvZGUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG9wY29kZSA9
IG9wY29kZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIGNoaWxk
cmVuCisgICAgb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisg
ICAgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5tYXAoJnBy
b2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0IiArIG9wY29kZS50b19zICsgIiAi
ICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCisgIGVuZAorZW5kCisK
K2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRlcnJv
ciIKKyAgZW5kCitlbmQKKworY2xhc3MgQ29uc3REZWNsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6
dmFyaWFibGUsIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFyaWFi
bGUsIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhcmlhYmxlID0gdmFyaWFi
bGUKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtA
dmFyaWFibGUsIEB2YWx1ZV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBDb25z
dERlY2wubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAdmFyaWFibGUpLCAoeWllbGQgQHZhbHVlKSkK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJjb25zdCAje0B2YXJpYWJsZS5kdW1wfSA9ICN7
QHZhbHVlLmR1bXB9IgorICBlbmQKK2VuZAorCiskbGFiZWxNYXBwaW5nID0ge30KKworY2xhc3Mg
TGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUg
PSBuYW1lCisgIGVuZAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxp
c2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTGFiZWwKKyAg
ICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFiZWwubmV3KGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsIDwg
Tm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQor
ICBlbmQKKworICBAQHVuaXF1ZU5hbWVDb3VudGVyID0gMAorICAKKyAgZGVmIHNlbGYuZm9yTmFt
ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJh
aXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdb
bmFtZV0uaXNfYT8gTG9jYWxMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdbbmFt
ZV0gPSBMb2NhbExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJl
bE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgc2VsZi51bmlxdWUoY29tbWVudCkKKyAg
ICBuZXdOYW1lID0gIl8je2NvbW1lbnR9IgorICAgIGlmICRsYWJlbE1hcHBpbmdbbmV3TmFtZV0K
KyAgICAgIHdoaWxlICRsYWJlbE1hcHBpbmdbbmV3TmFtZSA9ICJfI3tAQHVuaXF1ZU5hbWVDb3Vu
dGVyfV8je2NvbW1lbnR9Il0KKyAgICAgICAgQEB1bmlxdWVOYW1lQ291bnRlciArPSAxCisgICAg
ICBlbmQKKyAgICBlbmQKKyAgICBmb3JOYW1lKG5pbCwgbmV3TmFtZSkKKyAgZW5kCisgIAorICBk
ZWYgY2xlYW5OYW1lCisgICAgaWYgbmFtZSA9fiAvXlwuLworICAgICAgIl8iICsgbmFtZVsxLi4t
MV0KKyAgICBlbHNlCisgICAgICBuYW1lCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlIDwgTm9k
ZQorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxhYmVs
KSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBm
YWxzZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICB0cnVlCisgIGVuZAorZW5kCisKK2Ns
YXNzIExvY2FsTGFiZWxSZWZlcmVuY2UgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpsYWJl
bAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgor
ICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTG9jYWxMYWJl
bFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAg
ZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJl
bC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAor
ICBkZWYgbGFiZWw/CisgICAgdHJ1ZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZSA8IE5v
ZGUKKyAgYXR0cl9yZWFkZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGxpc3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGlzdCA9IGxpc3QKKyAgZW5kCisg
IAorICBkZWYgY2hpbGRyZW4KKyAgICBsaXN0CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVu
KCZwcm9jKQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBAbGlzdC5tYXAoJnByb2MpKQor
ICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4o
IlxuIikKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRp
YWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IFRydWUubmV3
CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBk
ZWYgdmFsdWUKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAidHJ1ZSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgRmFsc2UgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisg
ICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBGYWxzZS5uZXcKKyAgCisg
IGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1
ZQorICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiZmFsc2UiCisgIGVuZAor
ZW5kCisKK2NsYXNzIFRydWVDbGFzcworICBkZWYgYXNOb2RlCisgICAgVHJ1ZS5pbnN0YW5jZQor
ICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBGYWxzZS5p
bnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nIDwgTm9DaGlsZHJlbgorICBhdHRy
X3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFw
cGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
dW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gU2V0dGluZy5u
ZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kIDwgTm9k
ZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0g
bGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAg
W0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQW5kLm5l
dyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3JpZ2h0LmR1bXB9KSIKKyAgZW5k
CitlbmQKKworY2xhc3MgT3IgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisg
IAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxk
IEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBvciAj
e3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTm90IDwgTm9kZQorICBhdHRyX3Jl
YWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYg
Y2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRy
ZW4KKyAgICBOb3QubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNz
IFNraXAgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdHNraXAiCisgIGVu
ZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpwcmVkaWNh
dGUsIDp0aGVuQ2FzZQorICBhdHRyX2FjY2Vzc29yIDplbHNlQ2FzZQorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZSkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBwcmVkaWNhdGUgPSBwcmVkaWNhdGUKKyAgICBAdGhlbkNhc2UgPSB0aGVuQ2Fz
ZQorICAgIEBlbHNlQ2FzZSA9IFNraXAubmV3KGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVm
IGNoaWxkcmVuCisgICAgaWYgQGVsc2VDYXNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNl
LCBAZWxzZUNhc2VdCisgICAgZWxzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZV0KKyAg
ICBlbmQKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBJZlRoZW5FbHNlLm5ldyhj
b2RlT3JpZ2luLCAoeWllbGQgQHByZWRpY2F0ZSksICh5aWVsZCBAdGhlbkNhc2UpLCAoeWllbGQg
QGVsc2VDYXNlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJpZiAje3ByZWRpY2F0ZS5k
dW1wfVxuIiArIHRoZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsgZWxzZUNhc2UuZHVtcCArICJc
bmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpu
YW1lLCA6dmFyaWFibGVzLCA6Ym9keQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUg
PSBuYW1lCisgICAgQHZhcmlhYmxlcyA9IHZhcmlhYmxlcworICAgIEBib2R5ID0gYm9keQorICBl
bmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEB2YXJpYWJsZXMgKyBbQGJvZHldCisgIGVuZAor
ICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBA
dmFyaWFibGVzLm1hcHt8dnwgeWllbGQgdn0sICh5aWVsZCBAYm9keSkpCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFibGVzLmNvbGxlY3R7fHZ8IHYu
ZHVtcH0uam9pbigiLCAiKSArICIpXG4iICsgYm9keS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2Vu
ZAorCitjbGFzcyBNYWNyb0NhbGwgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6b3BlcmFu
ZHMKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQG9wZXJhbmRzID0gb3Bl
cmFuZHMKKyAgICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAgQG9wZXJhbmRzLmVhY2h7fHZ8
IHJhaXNlIHVubGVzcyB2fQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEBvcGVyYW5k
cworICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBNYWNyb0NhbGwubmV3
KGNvZGVPcmlnaW4sIEBuYW1lLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICJcdCN7bmFtZX0oIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0u
am9pbigiLCAiKSArICIpIgorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDk2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJh
cm12NyIKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIng4NiIKKworQkFDS0VORFMgPQorICBbCisg
ICAiWDg2IiwKKyAgICJBUk12NyIKKyAgXQorCisjIEtlZXAgdGhlIHNldCBvZiB3b3JraW5nIGJh
Y2tlbmRzIHNlcGFyYXRlIGZyb20gdGhlIHNldCBvZiBiYWNrZW5kcyB0aGF0IG1pZ2h0IGJlCisj
IHN1cHBvcnRlZC4gVGhpcyBpcyBncmVhdCBiZWNhdXNlIHRoZSBCQUNLRU5EUyBsaXN0IGlzIGFs
bW9zdCBsaWtlIGEgcmVzZXJ2ZWQKKyMgd29yZHMgbGlzdCwgaW4gdGhhdCBpdCBjYXVzZXMgc2V0
dGluZ3MgcmVzb2x1dGlvbiB0byB0cmVhdCB0aG9zZSB3b3JkcyBzcGVjaWFsbHkuCisjIEhlbmNl
IHRoaXMgbGV0cyB1cyBzZXQgYXNpZGUgdGhlIG5hbWUgb2YgYSBiYWNrZW5kIHdlIG1pZ2h0IHdh
bnQgdG8gc3VwcG9ydCBpbgorIyB0aGUgZnV0dXJlIHdoaWxlIG5vdCBhY3R1YWxseSBzdXBwb3J0
aW5nIHRoZSBiYWNrZW5kIHlldC4KK1dPUktJTkdfQkFDS0VORFMgPQorICBbCisgICAiWDg2IiwK
KyAgICJBUk12NyIKKyAgXQorCitCQUNLRU5EX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoJyAr
IEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFonKQorCitjbGFzcyBOb2RlCisgIGRlZiBsb3dl
cihuYW1lKQorICAgIHNlbmQoImxvd2VyIiArIG5hbWUpCisgIGVuZAorZW5kCisKKyMgT3ZlcnJp
ZGVzIGZvciBsb3dlcigpIGZvciB0aG9zZSBub2RlcyB0aGF0IGFyZSBiYWNrZW5kLWFnbm9zdGlj
CisKK2NsYXNzIExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAgICRhc20ucHV0c0xhYmVsKHNl
bGYubmFtZVsxLi4tMV0pCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIGxv
d2VyKG5hbWUpCisgICAgJGFzbS5wdXRzTG9jYWxMYWJlbCAiX29mZmxpbmVhc21fI3tzZWxmLm5h
bWVbMS4uLTFdfSIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAgZGVmIGFz
bUxhYmVsCisgICAgQXNzZW1ibGVyLmxhYmVsUmVmZXJlbmNlKG5hbWVbMS4uLTFdKQorICBlbmQK
K2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCisgIGRlZiBhc21MYWJlbAorICAgIEFz
c2VtYmxlci5sb2NhbExhYmVsUmVmZXJlbmNlKCJfb2ZmbGluZWFzbV8iK25hbWVbMS4uLTFdKQor
ICBlbmQKK2VuZAorCitjbGFzcyBTa2lwCisgIGRlZiBsb3dlcihuYW1lKQorICBlbmQKK2VuZAor
CitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBpZiByZXNwb25kX3RvPyAi
bG93ZXIje25hbWV9IgorICAgICAgc2VuZCgibG93ZXIje25hbWV9IikKKyAgICBlbHNlCisgICAg
ICBAbGlzdC5lYWNoIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgbm9kZS5sb3dlcihuYW1l
KQorICAgICAgfQorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRy
YWN0b3IucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkz
IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2Vu
ZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJw
YXJzZXIiCityZXF1aXJlICJzZWxmX2hhc2giCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUg
InRyYW5zZm9ybSIKKworaW5wdXRGbG5tID0gQVJHVi5zaGlmdAorb3V0cHV0RmxubSA9IEFSR1Yu
c2hpZnQKKworJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBQYXJzaW5nICN7aW5wdXRGbG5tfSBh
bmQgY3JlYXRpbmcgb2Zmc2V0IGV4dHJhY3RvciAje291dHB1dEZsbm19LiIKKworZGVmIGVtaXRN
YWdpY051bWJlcgorICBPRkZTRVRfTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICB8IG51bWJlciB8
CisgICAgJG91dHB1dC5wdXRzICIje251bWJlcn0sIgorICB9CitlbmQKKworaW5wdXREYXRhID0g
SU86OnJlYWQoaW5wdXRGbG5tKQoraW5wdXRIYXNoID0gIi8vIG9mZmxpbmVhc20gaW5wdXQgaGFz
aDogI3tEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0YSl9ICN7c2VsZkhhc2h9IgorCitp
ZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0RmxubQorICBGaWxlLm9wZW4ob3V0cHV0RmxubSwgInIi
KSB7CisgICAgfCBpbnAgfAorICAgIGZpcnN0TGluZSA9IGlucC5nZXRzCisgICAgaWYgZmlyc3RM
aW5lIGFuZCBmaXJzdExpbmUuY2hvbXAgPT0gaW5wdXRIYXNoCisgICAgICAkc3RkZXJyLnB1dHMg
Im9mZmxpbmVhc206IE5vdGhpbmcgY2hhbmdlZC4iCisgICAgICBleGl0IDAKKyAgICBlbmQKKyAg
fQorZW5kCisKK29yaWdpbmFsQVNUID0gcGFyc2UobGV4KGlucHV0RGF0YSkpCisKK0ZpbGUub3Bl
bihvdXRwdXRGbG5tLCAidyIpIHsKKyAgfCBvdXRwIHwKKyAgJG91dHB1dCA9IG91dHAKKyAgb3V0
cC5wdXRzIGlucHV0SGFzaAorICBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMob3JpZ2luYWxB
U1QpIHsKKyAgICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICBvZmZzZXRz
TGlzdCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKKyAgICBzaXplc0xpc3Qg
PSBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CisgICAgCisgICAgbGVuZ3RoID0gKE9GRlNF
VF9NQUdJQ19OVU1CRVJTLnNpemUgKyAxKSAqICgxICsgb2Zmc2V0c0xpc3Quc2l6ZSArIHNpemVz
TGlzdC5zaXplKQorICAgIAorICAgIG91dHAucHV0cyAic3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4
dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICAgIGVtaXRNYWdpY051bWJlcgorICAgIG91
dHAucHV0cyAiI3tpbmRleH0sIgorICAgIG9mZnNldHNMaXN0LmVhY2ggeworICAgICAgfCBvZmZz
ZXQgfAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICBvdXRwLnB1dHMgIk9GRkxJTkVfQVNN
X09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSksIgorICAgIH0KKyAg
ICBzaXplc0xpc3QuZWFjaCB7CisgICAgICB8IG9mZnNldCB8CisgICAgICBlbWl0TWFnaWNOdW1i
ZXIKKyAgICAgIG91dHAucHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0cnVjdH0pLCIKKyAgICB9Cisg
ICAgb3V0cC5wdXRzICJ9OyIKKyAgfQorfQorCiskc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IG9m
ZnNldCBleHRyYWN0b3IgI3tvdXRwdXRGbG5tfSBzdWNjZXNzZnVsbHkgZ2VuZXJhdGVkLiIKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9u
cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2lu
c3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMTQgQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgSW50ZXJlc3RpbmcgaW52YXJpYW50LCB3aGlj
aCB3ZSB0YWtlIGFkdmFudGFnZSBvZjogYnJhbmNoaW5nIGluc3RydWN0aW9ucworIyBhbHdheXMg
YmVnaW4gd2l0aCAiYiIsIGFuZCBubyBub24tYnJhbmNoaW5nIGluc3RydWN0aW9ucyBiZWdpbiB3
aXRoICJiIi4KKyMgVGVybWluYWwgaW5zdHJ1Y3Rpb25zIGFyZSAiam1wIiBhbmQgInJldCIuCisK
K01BQ1JPX0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJhZGRpIiwKKyAgICJhbmRpIiwKKyAgICJs
c2hpZnRpIiwKKyAgICJtdWxpIiwKKyAgICJuZWdpIiwKKyAgICJub3RpIiwKKyAgICJvcmkiLAor
ICAgInJzaGlmdGkiLAorICAgInVyc2hpZnRpIiwKKyAgICJzdWJpIiwKKyAgICJ4b3JpIiwKKyAg
ICJsb2FkaSIsCisgICAibG9hZGIiLAorICAgImxvYWRicyIsCisgICAibG9hZGgiLAorICAgImxv
YWRocyIsCisgICAic3RvcmVpIiwKKyAgICJzdG9yZWIiLAorICAgImxvYWRkIiwKKyAgICJtb3Zl
ZCIsCisgICAic3RvcmVkIiwKKyAgICJhZGRkIiwKKyAgICJkaXZkIiwKKyAgICJzdWJkIiwKKyAg
ICJtdWxkIiwKKyAgICJzcXJ0ZCIsCisgICAiY2kyZCIsCisgICAiZmlpMmQiLCAjIHVzYWdlOiBm
aWkyZCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNp
Z25pZmljYW50IGJpdHM+LCA8ZnByPgorICAgImZkMmlpIiwgIyB1c2FnZTogZmQyaWkgPGZwcj4s
IDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlm
aWNhbnQgYml0cz4KKyAgICJiZGVxIiwKKyAgICJiZG5lcSIsCisgICAiYmRndCIsCisgICAiYmRn
dGVxIiwKKyAgICJiZGx0IiwKKyAgICJiZGx0ZXEiLAorICAgImJkZXF1biIsCisgICAiYmRuZXF1
biIsCisgICAiYmRndHVuIiwKKyAgICJiZGd0ZXF1biIsCisgICAiYmRsdHVuIiwKKyAgICJiZGx0
ZXF1biIsCisgICAiYnRkMmkiLAorICAgInRkMmkiLAorICAgImJjZDJpIiwKKyAgICJtb3ZkeiIs
CisgICAicG9wIiwKKyAgICJwdXNoIiwKKyAgICJtb3ZlIiwKKyAgICJzeGkycCIsCisgICAienhp
MnAiLAorICAgIm5vcCIsCisgICAiYmllcSIsCisgICAiYmluZXEiLAorICAgImJpYSIsCisgICAi
YmlhZXEiLAorICAgImJpYiIsCisgICAiYmliZXEiLAorICAgImJpZ3QiLAorICAgImJpZ3RlcSIs
CisgICAiYmlsdCIsCisgICAiYmlsdGVxIiwKKyAgICJiYmVxIiwKKyAgICJiYm5lcSIsCisgICAi
YmJhIiwKKyAgICJiYmFlcSIsCisgICAiYmJiIiwKKyAgICJiYmJlcSIsCisgICAiYmJndCIsCisg
ICAiYmJndGVxIiwKKyAgICJiYmx0IiwKKyAgICJiYmx0ZXEiLAorICAgImJ0aW8iLAorICAgImJ0
aXMiLAorICAgImJ0aXoiLAorICAgImJ0aW56IiwKKyAgICJidGJvIiwKKyAgICJidGJzIiwKKyAg
ICJidGJ6IiwKKyAgICJidGJueiIsCisgICAiam1wIiwKKyAgICJiYWRkaW8iLAorICAgImJhZGRp
cyIsCisgICAiYmFkZGl6IiwKKyAgICJiYWRkaW56IiwKKyAgICJic3ViaW8iLAorICAgImJzdWJp
cyIsCisgICAiYnN1Yml6IiwKKyAgICJic3ViaW56IiwKKyAgICJibXVsaW8iLAorICAgImJtdWxp
cyIsCisgICAiYm11bGl6IiwKKyAgICJibXVsaW56IiwKKyAgICJib3JpbyIsCisgICAiYm9yaXMi
LAorICAgImJvcml6IiwKKyAgICJib3JpbnoiLAorICAgImJyZWFrIiwKKyAgICJjYWxsIiwKKyAg
ICJyZXQiLAorICAgImNpZXEiLAorICAgImNpbmVxIiwKKyAgICJjaWEiLAorICAgImNpYWVxIiwK
KyAgICJjaWIiLAorICAgImNpYmVxIiwKKyAgICJjaWd0IiwKKyAgICJjaWd0ZXEiLAorICAgImNp
bHQiLAorICAgImNpbHRlcSIsCisgICAidGlvIiwKKyAgICJ0aXMiLAorICAgInRpeiIsCisgICAi
dGlueiIsCisgICAidGJvIiwKKyAgICJ0YnMiLAorICAgInRieiIsCisgICAidGJueiIsCisgICAi
cGVlayIsCisgICAicG9rZSIsCisgICAiYnBlcSIsCisgICAiYnBuZXEiLAorICAgImJwYSIsCisg
ICAiYnBhZXEiLAorICAgImJwYiIsCisgICAiYnBiZXEiLAorICAgImJwZ3QiLAorICAgImJwZ3Rl
cSIsCisgICAiYnBsdCIsCisgICAiYnBsdGVxIiwKKyAgICJhZGRwIiwKKyAgICJhbmRwIiwKKyAg
ICJvcnAiLAorICAgInN1YnAiLAorICAgInhvcnAiLAorICAgImxvYWRwIiwKKyAgICJjcGVxIiwK
KyAgICJjcG5lcSIsCisgICAiY3BhIiwKKyAgICJjcGFlcSIsCisgICAiY3BiIiwKKyAgICJjcGJl
cSIsCisgICAiY3BndCIsCisgICAiY3BndGVxIiwKKyAgICJjcGx0IiwKKyAgICJjcGx0ZXEiLAor
ICAgInN0b3JlcCIsCisgICAiYnRwbyIsCisgICAiYnRwcyIsCisgICAiYnRweiIsCisgICAiYnRw
bnoiLAorICAgImJhZGRwbyIsCisgICAiYmFkZHBzIiwKKyAgICJiYWRkcHoiLAorICAgImJhZGRw
bnoiLAorICAgImJvIiwKKyAgICJicyIsCisgICAiYnoiLAorICAgImJueiIsCisgICAibGVhaSIs
CisgICAibGVhcCIsCisgIF0KKworWDg2X0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJjZHFpIiwK
KyAgICJpZGl2aSIKKyAgXQorCitBUk12N19JTlNUUlVDVElPTlMgPQorICBbCisgICAic211bGxp
IiwKKyAgXQorCitJTlNUUlVDVElPTlMgPSBNQUNST19JTlNUUlVDVElPTlMgKyBYODZfSU5TVFJV
Q1RJT05TICsgQVJNdjdfSU5TVFJVQ1RJT05TCisKK0lOU1RSVUNUSU9OX1BBVFRFUk4gPSBSZWdl
eHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbignKXwoJykgKyAnKSlcXFonKQorCitk
ZWYgaXNCcmFuY2goaW5zdHJ1Y3Rpb24pCisgIGluc3RydWN0aW9uID1+IC9eYi8KK2VuZAorCitk
ZWYgaGFzRmFsbFRocm91Z2goaW5zdHJ1Y3Rpb24pCisgIGluc3RydWN0aW9uICE9ICJyZXQiIGFu
ZCBpbnN0cnVjdGlvbiAhPSAiam1wIgorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3Rh
bnRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
b2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK01BR0lDX05VTUJFUlMg
PSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTUwIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJh
c3QiCityZXF1aXJlICJvZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cyIKKworT0ZGU0VUX01BR0lD
X05VTUJFUlMgPSBbIDB4ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisjCisjIG9mZnNldHNMaXN0
KGFzdCkKKyMgc2l6ZXNMaXN0KGFzdCkKKyMKKyMgUmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBh
bmQgc2l6ZXMgdXNlZCBieSB0aGUgQVNULgorIworCitkZWYgb2Zmc2V0c0xpc3QoYXN0KQorICBh
c3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CitlbmQKKworZGVmIHNpemVzTGlzdChh
c3QpCisgIGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKK2VuZAorCisjCisjIG9mZnNldHNB
bmRDb25maWd1cmF0aW9uSW5kZXgoYXN0LCBmaWxlKSAtPgorIyAgICAgW29mZnNldHMsIGluZGV4
XQorIworIyBQYXJzZXMgdGhlIG9mZnNldHMgZnJvbSBhIGZpbGUgYW5kIHJldHVybnMgYSBsaXN0
IG9mIG9mZnNldHMgYW5kIHRoZQorIyBpbmRleCBvZiB0aGUgY29uZmlndXJhdGlvbiB0aGF0IGlz
IHZhbGlkIGluIHRoaXMgYnVpbGQgdGFyZ2V0LgorIworCitkZWYgb2Zmc2V0c0FuZENvbmZpZ3Vy
YXRpb25JbmRleChmaWxlKQorICBpbmRleCA9IG5pbAorICBvZmZzZXRzID0gW10KKyAgZW5kaWFu
bmVzc01hcmtlckJ5dGVzID0gbmlsCisgIAorICBkZWYgcmVhZEludChlbmRpYW5uZXNzLCBpbnAp
CisgICAgYnl0ZXMgPSBbXQorICAgIDQudGltZXMgeworICAgICAgYnl0ZXMgPDwgaW5wLmdldGJ5
dGUKKyAgICB9CisgICAgCisgICAgaWYgZW5kaWFubmVzcyA9PSA6bGl0dGxlCisgICAgICAjIExp
dHRsZSBlbmRpYW4KKyAgICAgIChieXRlc1swXSA8PCAwIHwKKyAgICAgICBieXRlc1sxXSA8PCA4
IHwKKyAgICAgICBieXRlc1syXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbM10gPDwgMjQpCisgICAg
ZWxzZQorICAgICAgIyBCaWcgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMjQgfAorICAgICAg
IGJ5dGVzWzFdIDw8IDE2IHwKKyAgICAgICBieXRlc1syXSA8PCA4IHwKKyAgICAgICBieXRlc1sz
XSA8PCAwKQorICAgIGVuZAorICBlbmQKKyAgCisgIFs6bGl0dGxlLCA6YmlnXS5lYWNoIHsKKyAg
ICB8IGVuZGlhbm5lc3MgfAorICAgIG1hZ2ljQnl0ZXMgPSBbXQorICAgIE1BR0lDX05VTUJFUlMu
ZWFjaCB7CisgICAgICB8IG51bWJlciB8CisgICAgICBjdXJyZW50Qnl0ZXMgPSBbXQorICAgICAg
NC50aW1lcyB7CisgICAgICAgIGN1cnJlbnRCeXRlcyA8PCAobnVtYmVyICYgMHhmZikKKyAgICAg
ICAgbnVtYmVyID4+PSA4CisgICAgICB9CisgICAgICBpZiBlbmRpYW5uZXNzID09IDpiaWcKKyAg
ICAgICAgY3VycmVudEJ5dGVzLnJldmVyc2UhCisgICAgICBlbmQKKyAgICAgIG1hZ2ljQnl0ZXMg
Kz0gY3VycmVudEJ5dGVzCisgICAgfQorICAgIAorICAgIEZpbGUub3BlbihmaWxlLCAiciIpIHsK
KyAgICAgIHwgaW5wIHwKKyAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICBsb29wIHsKKyAg
ICAgICAgYnl0ZSA9IGlucC5nZXRieXRlCisgICAgICAgIGJyZWFrIHVubGVzcyBieXRlCisgICAg
ICAgIGlmIGJ5dGUgPT0gbWFnaWNCeXRlc1t3aGVyZUluTWFya2VyXQorICAgICAgICAgIHdoZXJl
SW5NYXJrZXIgKz0gMQorICAgICAgICAgIGlmIHdoZXJlSW5NYXJrZXIgPT0gbWFnaWNCeXRlcy5z
aXplCisgICAgICAgICAgICAjIFdlIGhhdmUgYSBtYXRjaCEgSWYgd2UgaGF2ZSBub3QgeWV0IHJl
YWQgdGhlIGVuZGlhbm5lc3MgbWFya2VyIGFuZCBpbmRleCwKKyAgICAgICAgICAgICMgdGhlbiBy
ZWFkIHRob3NlIG5vdzsgb3RoZXJ3aXNlIHJlYWQgYW4gb2Zmc2V0LgorICAgICAgICAgICAgCisg
ICAgICAgICAgICBpZiBub3QgaW5kZXgKKyAgICAgICAgICAgICAgaW5kZXggPSByZWFkSW50KGVu
ZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgb2Zmc2V0cyA8
PCByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAg
CisgICAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICAgIGVuZAorICAgICAgICBl
bHNlCisgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgZW5kCisgICAgICB9Cisg
ICAgfQorICAgIAorICAgIGJyZWFrIGlmIGluZGV4CisgIH0KKyAgCisgIHJhaXNlIHVubGVzcyBp
bmRleAorICAKKyAgW29mZnNldHMsIGluZGV4XQorZW5kCisKKyMKKyMgYnVpbGRPZmZzZXRzTWFw
KGFzdCwgb2Zmc2V0c0xpc3QpIC0+IFtvZmZzZXRzLCBzaXplc10KKyMKKyMgQnVpbGRzIGEgbWFw
cGluZyBiZXR3ZWVuIFN0cnVjdE9mZnNldCBub2RlcyBhbmQgdGhlaXIgdmFsdWVzLgorIworCitk
ZWYgYnVpbGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpCisgIG9mZnNldHNNYXAgPSB7fQor
ICBzaXplc01hcCA9IHt9CisgIGFzdE9mZnNldHNMaXN0ID0gb2Zmc2V0c0xpc3QoYXN0KQorICBh
c3RTaXplc0xpc3QgPSBzaXplc0xpc3QoYXN0KQorICByYWlzZSB1bmxlc3MgYXN0T2Zmc2V0c0xp
c3Quc2l6ZSArIGFzdFNpemVzTGlzdC5zaXplID09IG9mZnNldHNMaXN0LnNpemUKKyAgb2Zmc2V0
c0xpc3QoYXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgc3RydWN0T2Zmc2V0LCBpbmRleCB8
CisgICAgb2Zmc2V0c01hcFtzdHJ1Y3RPZmZzZXRdID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgfQor
ICBzaXplc0xpc3QoYXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgc2l6ZW9mLCBpbmRleCB8
CisgICAgc2l6ZXNNYXBbc2l6ZW9mXSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgW29mZnNl
dHNNYXAsIHNpemVzTWFwXQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL29wdC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9vcHQucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9vcHQucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTM0IEBACisjIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCisKKyMKKyMgIk9wdGltaXph
dGlvbiIgcGFzc2VzLiBUaGVzZSBhcmUgdXNlZCB0byBsb3dlciB0aGUgcmVwcmVzZW50YXRpb24g
Zm9yCisjIGJhY2tlbmRzIHRoYXQgY2Fubm90IGhhbmRsZSBzb21lIG9mIG91ciBoaWdoZXItbGV2
ZWwgaW5zdHJ1Y3Rpb25zLgorIworCisjCisjIEEgdGVtcG9yYXJ5IC0gYSB2YXJpYWJsZSB0aGF0
IHdpbGwgYmUgYWxsb2NhdGVkIHRvIGEgcmVnaXN0ZXIgYWZ0ZXIgd2UncmUKKyMgZG9uZS4KKyMK
KworY2xhc3MgTm9kZQorICBkZWYgcmVwbGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lzdGVycyhraW5k
KQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBub2RlLnJlcGxhY2VU
ZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNz
IFRtcCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmZpcnN0TWVudGlvbiwgOmxhc3RNZW50
aW9uCisgIGF0dHJfcmVhZGVyIDpraW5kCisgIGF0dHJfYWNjZXNzb3IgOnJlZ2lzdGVyCisKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwga2luZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBraW5kID0ga2luZAorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiR0bXAje29iamVj
dF9pZH0iCisgIGVuZAorICAKKyAgZGVmIG1lbnRpb24hKHBvc2l0aW9uKQorICAgIGlmIG5vdCBA
Zmlyc3RNZW50aW9uIG9yIHBvc2l0aW9uIDwgQGZpcnN0TWVudGlvbgorICAgICAgQGZpcnN0TWVu
dGlvbiA9IHBvc2l0aW9uCisgICAgZW5kCisgICAgaWYgbm90IEBsYXN0TWVudGlvbiBvciBwb3Np
dGlvbiA+IEBsYXN0TWVudGlvbgorICAgICAgQGxhc3RNZW50aW9uID0gcG9zaXRpb24KKyAgICBl
bmQKKyAgZW5kCisgIAorICBkZWYgcmVwbGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lzdGVycyhraW5k
KQorICAgIGlmIEBraW5kID09IGtpbmQKKyAgICAgIHJhaXNlICJEaWQgbm90IGFsbG9jYXRlIHJl
Z2lzdGVyIHRvIHRlbXBvcmFyeSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgQHJlZ2lz
dGVyCisgICAgICBAcmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/
CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIGZhbHNlCisgIGVu
ZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIHRydWUKKyAgZW5kCitlbmQKKworIyBBc3NpZ24g
cmVnaXN0ZXJzIHRvIHRlbXBvcmFyaWVzLCBieSBmaW5kaW5nIHdoaWNoIHRlbXBvcmFyaWVzIGlu
dGVyZmVyZQorIyB3aXRoIGVhY2ggb3RoZXIuIE5vdGUgdGhhdCB0aGlzIHJlbGllcyBvbiB0ZW1w
b3JhcnkgbGl2ZSByYW5nZXMgbm90IGNyb3NzaW5nCisjIGJhc2ljIGJsb2NrIGJvdW5kYXJpZXMu
CisKK2RlZiBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFyaWVzKGxpc3QsIGtpbmQsIHJlZ2lzdGVy
cykKKyAgbGlzdC5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgbm9kZSwgaW5kZXggfAorICAgIG5v
ZGUuZmlsdGVyKFRtcCkudW5pcS5lYWNoIHsKKyAgICAgIHwgdG1wIHwKKyAgICAgIGlmIHRtcC5r
aW5kID09IGtpbmQKKyAgICAgICAgdG1wLm1lbnRpb24hIGluZGV4CisgICAgICBlbmQKKyAgICB9
CisgIH0KKyAgCisgIGZyZWVSZWdpc3RlcnMgPSByZWdpc3RlcnMuZHVwCisgIGxpc3QuZWFjaF93
aXRoX2luZGV4IHsKKyAgICB8IG5vZGUsIGluZGV4IHwKKyAgICB0bXBMaXN0ID0gbm9kZS5maWx0
ZXIoVG1wKS51bmlxCisgICAgdG1wTGlzdC5lYWNoIHsKKyAgICAgIHwgdG1wIHwKKyAgICAgIGlm
IHRtcC5raW5kID09IGtpbmQgYW5kIHRtcC5maXJzdE1lbnRpb24gPT0gaW5kZXgKKyAgICAgICAg
cmFpc2UgIkNvdWxkIG5vdCBhbGxvY2F0ZSByZWdpc3RlciB0byB0ZW1wb3JhcnkgYXQgI3tub2Rl
LmNvZGVPcmlnaW5TdHJpbmd9IiBpZiBmcmVlUmVnaXN0ZXJzLmVtcHR5PworICAgICAgICB0bXAu
cmVnaXN0ZXIgPSBmcmVlUmVnaXN0ZXJzLnBvcAorICAgICAgZW5kCisgICAgfQorICAgIHRtcExp
c3QuZWFjaCB7CisgICAgICB8IHRtcCB8CisgICAgICBpZiB0bXAua2luZCA9PSBraW5kIGFuZCB0
bXAubGFzdE1lbnRpb24gPT0gaW5kZXgKKyAgICAgICAgZnJlZVJlZ2lzdGVycy5wdXNoIHRtcC5y
ZWdpc3RlcgorICAgICAgICByYWlzZSAiUmVnaXN0ZXIgYWxsb2NhdGlvbiBpbmNvbnNpc3RlbmN5
IGF0ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIgaWYgZnJlZVJlZ2lzdGVycy5zaXplID4gcmVn
aXN0ZXJzLnNpemUKKyAgICAgIGVuZAorICAgIH0KKyAgfQorICAKKyAgbGlzdC5tYXAgeworICAg
IHwgbm9kZSB8CisgICAgbm9kZS5yZXBsYWNlVGVtcG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQp
CisgIH0KK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJz
ZXIucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFy
c2VyLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
cGFyc2VyLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4NSBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiaW5zdHJ1Y3Rp
b25zIgorcmVxdWlyZSAicmVnaXN0ZXJzIgorCitjbGFzcyBUb2tlbgorICBhdHRyX3JlYWRlciA6
Y29kZU9yaWdpbiwgOnN0cmluZworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3Ry
aW5nKQorICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICAgIEBzdHJpbmcgPSBzdHJpbmcK
KyAgZW5kCisgIAorICBkZWYgPT0ob3RoZXIpCisgICAgaWYgb3RoZXIuaXNfYT8gVG9rZW4KKyAg
ICAgIEBzdHJpbmcgPT0gb3RoZXIuc3RyaW5nCisgICAgZWxzZQorICAgICAgQHN0cmluZyA9PSBv
dGhlcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiA9fihvdGhlcikKKyAgICBAc3RyaW5nID1+
IG90aGVyCisgIGVuZAorICAKKyAgZGVmIHRvX3MKKyAgICAiI3tAc3RyaW5nLmluc3BlY3R9IGF0
IGxpbmUgI3tjb2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVu
dCkKKyAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3Rv
X3N9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfTogI3tjb21t
ZW50WzBdfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworIworIyBUaGUgbGV4ZXIuIFRha2VzIGEg
c3RyaW5nIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIHRva2Vucy4KKyMKKworZGVmIGxleChzdHIp
CisgIHJlc3VsdCA9IFtdCisgIGxpbmVOdW1iZXIgPSAxCisgIHdoaWxlIG5vdCBzdHIuZW1wdHk/
CisgICAgY2FzZSBzdHIKKyAgICB3aGVuIC9cQVwjKFteXG5dKikvCisgICAgICAjIGNvbW1lbnQs
IGlnbm9yZQorICAgIHdoZW4gL1xBXG4vCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVO
dW1iZXIsICQmKQorICAgICAgbGluZU51bWJlciArPSAxCisgICAgd2hlbiAvXEFbYS16QS1aXShb
YS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYp
CisgICAgd2hlbiAvXEFcLihbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5u
ZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFfKFthLXpBLVowLTlfXSopLworICAgICAg
cmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQShbIFx0XSsp
LworICAgICAgIyB3aGl0ZXNwYWNlLCBpZ25vcmUKKyAgICB3aGVuIC9cQTB4KFswLTlhLWZBLUZd
KykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLmhleC50b19zKQor
ICAgIHdoZW4gL1xBMChbMC03XSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVt
YmVyLCAkJi5vY3QudG9fcykKKyAgICB3aGVuIC9cQShbMC05XSspLworICAgICAgcmVzdWx0IDw8
IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQTo6LworICAgICAgcmVzdWx0
IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVs6LFwoXClcW1xdPVwr
XC0qXS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgZWxz
ZQorICAgICAgcmFpc2UgIkxleGVyIGVycm9yIGF0IGxpbmUgbnVtYmVyICN7bGluZU51bWJlcn0s
IHVuZXhwZWN0ZWQgc2VxdWVuY2UgI3tzdHJbMC4uMjBdLmluc3BlY3R9IgorICAgIGVuZAorICAg
IHN0ciA9ICR+LnBvc3RfbWF0Y2gKKyAgZW5kCisgIHJlc3VsdAorZW5kCisKKyMKKyMgVG9rZW4g
aWRlbnRpZmljYXRpb24uCisjCisKK2RlZiBpc1JlZ2lzdGVyKHRva2VuKQorICB0b2tlbiA9fiBS
RUdJU1RFUl9QQVRURVJOCitlbmQKKworZGVmIGlzSW5zdHJ1Y3Rpb24odG9rZW4pCisgIHRva2Vu
ID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNLZXl3b3JkKHRva2VuKQorICB0
b2tlbiA9fiAvXEEoKHRydWUpfChmYWxzZSl8KGlmKXwodGhlbil8KGVsc2UpfChlbHNpZil8KGVu
ZCl8KGFuZCl8KG9yKXwobm90KXwobWFjcm8pfChjb25zdCl8KHNpemVvZil8KGVycm9yKSlcWi8g
b3IKKyAgICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOIG9yCisgICAgdG9rZW4gPX4gSU5TVFJV
Q1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0lkZW50aWZpZXIodG9rZW4pCisgIHRva2VuID1+
IC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopXFovIGFuZCBub3QgaXNLZXl3b3JkKHRva2VuKQor
ZW5kCisKK2RlZiBpc0xhYmVsKHRva2VuKQorICB0b2tlbiA9fiAvXEFfKFthLXpBLVowLTlfXSop
XFovCitlbmQKKworZGVmIGlzTG9jYWxMYWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXC4oW2Et
ekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNWYXJpYWJsZSh0b2tlbikKKyAgaXNJZGVudGlm
aWVyKHRva2VuKSBvciBpc1JlZ2lzdGVyKHRva2VuKQorZW5kCisKK2RlZiBpc0ludGVnZXIodG9r
ZW4pCisgIHRva2VuID1+IC9cQVswLTldLworZW5kCisKKyMKKyMgVGhlIHBhcnNlci4gVGFrZXMg
YW4gYXJyYXkgb2YgdG9rZW5zIGFuZCByZXR1cm5zIGFuIEFTVC4gTWV0aG9kcworIyBvdGhlciB0
aGFuIHBhcnNlKHRva2VucykgYXJlIG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9uLgorIworCitj
bGFzcyBQYXJzZXIKKyAgZGVmIGluaXRpYWxpemUodG9rZW5zKQorICAgIEB0b2tlbnMgPSB0b2tl
bnMKKyAgICBAaWR4ID0gMAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQor
ICAgIGlmIEB0b2tlbnNbQGlkeF0KKyAgICAgIEB0b2tlbnNbQGlkeF0ucGFyc2VFcnJvcigqY29t
bWVudCkKKyAgICBlbHNlCisgICAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgICByYWlzZSAi
UGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZpbGUiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlICJQ
YXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZTogI3tjb21tZW50WzBdfSIKKyAgICAgIGVuZAorICAg
IGVuZAorICBlbmQKKyAgCisgIGRlZiBjb25zdW1lKHJlZ2V4cCkKKyAgICBpZiByZWdleHAKKyAg
ICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPX4gcmVnZXhwCisgICAgZWxzZQor
ICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQGlkeCA9PSBAdG9rZW5zLmxlbmd0aAorICAgIGVuZAor
ICAgIEBpZHggKz0gMQorICBlbmQKKyAgCisgIGRlZiBza2lwTmV3TGluZQorICAgIHdoaWxlIEB0
b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIHBhcnNlUHJlZGljYXRlQXRvbQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm5vdCIK
KyAgICAgIEBpZHggKz0gMQorICAgICAgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgZWxzaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAg
ICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9r
ZW5zW0BpZHhdID09ICIpIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICJ0cnVlIgorICAgICAgcmVzdWx0ID0gVHJ1ZS5pbnN0YW5jZQor
ICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJmYWxzZSIKKyAgICAgIHJlc3VsdCA9IEZhbHNlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEK
KyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAg
ICByZXN1bHQgPSBTZXR0aW5nLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9r
ZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxz
ZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRp
Y2F0ZUFuZAorICAgIHJlc3VsdCA9IHBhcnNlUHJlZGljYXRlQXRvbQorICAgIHdoaWxlIEB0b2tl
bnNbQGlkeF0gPT0gImFuZCIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0ID0g
cGFyc2VQcmVkaWNhdGVBdG9tCisgICAgICByZXN1bHQgPSBBbmQubmV3KGNvZGVPcmlnaW4sIHJl
c3VsdCwgcmlnaHQpCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNl
UHJlZGljYXRlCisgICAgIyBzb21lIGV4YW1wbGVzIG9mIHByZWNlZGVuY2U6CisgICAgIyBub3Qg
YSBhbmQgYiAtPiAobm90IGEpIGFuZCBiCisgICAgIyBhIGFuZCBiIG9yIGMgLT4gKGEgYW5kIGIp
IG9yIGMKKyAgICAjIGEgb3IgYiBhbmQgYyAtPiBhIG9yIChiIGFuZCBjKQorICAgIAorICAgIHJl
c3VsdCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAib3Ii
CisgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQW5k
CisgICAgICByZXN1bHQgPSBPci5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBl
bmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VWYXJpYWJsZQorICAgIGlmIGlz
UmVnaXN0ZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPX4gRlBSX1BB
VFRFUk4KKyAgICAgICAgcmVzdWx0ID0gRlBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVsc2UKKyAgICAgICAg
cmVzdWx0ID0gUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRv
a2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBlbmQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRv
a2Vuc1tAaWR4XSkKKyAgICAgIHJlc3VsdCA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICBlbHNlCisgICAgICBwYXJz
ZUVycm9yCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAg
ZGVmIHBhcnNlQWRkcmVzcyhvZmZzZXQpCisgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tA
aWR4XSA9PSAiWyIKKyAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisg
ICAgCisgICAgIyBUaHJlZSBwb3NzaWJpbGl0aWVzOgorICAgICMgW10gICAgICAgLT4gQWJzb2x1
dGVBZGRyZXNzCisgICAgIyBbYV0gICAgICAtPiBBZGRyZXNzCisgICAgIyBbYSxiXSAgICAtPiBC
YXNlSW5kZXggd2l0aCBzY2FsZSA9IDEKKyAgICAjIFthLGIsY10gIC0+IEJhc2VJbmRleAorICAg
IAorICAgIEBpZHggKz0gMQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHJldHVybiBBYnNvbHV0ZUFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIG9mZnNl
dCkKKyAgICBlbmQKKyAgICBhID0gcGFyc2VWYXJpYWJsZQorICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gIl0iCisgICAgICByZXN1bHQgPSBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBhLCBvZmZzZXQp
CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIK
KyAgICAgIEBpZHggKz0gMQorICAgICAgYiA9IHBhcnNlVmFyaWFibGUKKyAgICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gIl0iCisgICAgICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdp
biwgYSwgYiwgMSwgb2Zmc2V0KQorICAgICAgZWxzZQorICAgICAgICBwYXJzZUVycm9yIHVubGVz
cyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgWyIxIiwgIjIiLCAiNCIsICI4Il0ubWVtYmVyPyBAdG9rZW5zW0BpZHhdLnN0
cmluZworICAgICAgICBjID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faQorICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAg
ICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCBjLCBvZmZzZXQp
CisgICAgICBlbmQKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICByZXN1bHQKKyAgZW5kCisg
IAorICBkZWYgcGFyc2VDb2xvbkNvbG9uCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb2RlT3JpZ2lu
ID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVu
dGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICBuYW1lcyA9IFtAdG9rZW5zW0BpZHhdLnN0cmluZ10K
KyAgICBAaWR4ICs9IDEKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICI6OiIKKyAgICAgIEBp
ZHggKz0gMQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlk
eF0KKyAgICAgIG5hbWVzIDw8IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICBAaWR4ICs9IDEK
KyAgICBlbmQKKyAgICByYWlzZSBpZiBuYW1lcy5lbXB0eT8KKyAgICBbY29kZU9yaWdpbiwgbmFt
ZXNdCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICBza2lwTmV3TGlu
ZQorICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICBAaWR4ICs9IDEKKyAgICAgIE5l
Z0ltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcGFyc2VFeHByZXNz
aW9uQXRvbSkKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAx
CisgICAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNz
IEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAg
IGVsc2lmIGlzSW50ZWdlciBAdG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBJbW1lZGlhdGUu
bmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faSkK
KyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0
b2tlbnNbQGlkeF0KKyAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisg
ICAgICBpZiBuYW1lcy5zaXplID4gMQorICAgICAgICBTdHJ1Y3RPZmZzZXQuZm9yRmllbGQoY29k
ZU9yaWdpbiwgbmFtZXNbMC4uLTJdLmpvaW4oJzo6JyksIG5hbWVzWy0xXSkKKyAgICAgIGVsc2UK
KyAgICAgICAgVmFyaWFibGUuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lc1swXSkKKyAgICAgIGVu
ZAorICAgIGVsc2lmIGlzUmVnaXN0ZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcGFyc2VWYXJpYWJs
ZQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIFNpemVvZi5m
b3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzLmpvaW4oJzo6JykpCisgICAgZWxzZQorICAgICAgcGFy
c2VFcnJvcgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25NdWwKKyAg
ICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICB3aGls
ZSBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IE11bEltbWVkaWF0ZXMubmV3KEB0b2tl
bnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAg
ICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAor
ICBlbmQKKyAgCisgIGRlZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgIEB0b2tlbnNbQGlkeF0gPT0g
Ii0iIG9yIEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIgb3IgaXNJbnRlZ2VyKEB0b2tlbnNbQGlk
eF0pIG9yIGlzVmFyaWFibGUoQHRva2Vuc1tAaWR4XSkgb3IgQHRva2Vuc1tAaWR4XSA9PSAiKCIK
KyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uCisgICAgc2tpcE5ld0xpbmUKKyAgICBy
ZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICIr
IiBvciBAdG9rZW5zW0BpZHhdID09ICItIgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKyIK
KyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHJlc3VsdCA9IEFkZEltbWVkaWF0ZXMubmV3KEB0
b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQor
ICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIHJlc3VsdCA9IFN1YkltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmln
aW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgZWxzZQorICAgICAgICByYWlz
ZQorICAgICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNl
T3BlcmFuZChjb21tZW50KQorICAgIGlmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgICBleHByID0g
cGFyc2VFeHByZXNzaW9uCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAgICBw
YXJzZUFkZHJlc3MoZXhwcikKKyAgICAgIGVsc2UKKyAgICAgICAgZXhwcgorICAgICAgZW5kCisg
ICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgIHBhcnNlQWRkcmVzcyhJbW1lZGlh
dGUubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgMCkpCisgICAgZWxzaWYgaXNMYWJlbCBA
dG9rZW5zW0BpZHhdCisgICAgICByZXN1bHQgPSBMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luLCBMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwg
QHRva2Vuc1tAaWR4XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAg
ICBlbHNpZiBpc0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTG9jYWxM
YWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMb2NhbExhYmVsLmZv
ck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisg
ICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3Io
Y29tbWVudCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VNYWNyb1ZhcmlhYmxlcwor
ICAgIHNraXBOZXdMaW5lCisgICAgY29uc3VtZSgvXEFcKFxaLykKKyAgICB2YXJpYWJsZXMgPSBb
XQorICAgIGxvb3AgeworICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gIikiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgaXNJ
ZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgIHZhcmlhYmxlcyA8PCBWYXJpYWJsZS5m
b3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBpZiBAdG9rZW5z
W0BpZHhdID09ICIpIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGJyZWFrCisgICAg
ICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yCisgICAgICAgIGVuZAorICAgICAgZWxzZQor
ICAgICAgICBwYXJzZUVycm9yCisgICAgICBlbmQKKyAgICB9CisgICAgdmFyaWFibGVzCisgIGVu
ZAorICAKKyAgZGVmIHBhcnNlU2VxdWVuY2UoZmluYWwsIGNvbW1lbnQpCisgICAgZmlyc3RDb2Rl
T3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgbGlzdCA9IFtdCisgICAgbG9v
cCB7CisgICAgICBpZiAoQGlkeCA9PSBAdG9rZW5zLmxlbmd0aCBhbmQgbm90IGZpbmFsKSBvciAo
ZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgIGJyZWFrCisgICAgICBl
bHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgIyBpZ25vcmUKKyAgICAgICAgQGlk
eCArPSAxCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJjb25zdCIKKyAgICAgICAgQGlk
eCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzVmFyaWFibGUgQHRva2Vuc1tAaWR4
XQorICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAg
IHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIj0iCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgICB2YWx1ZSA9IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGNvbnN0ICN7
dmFyaWFibGUubmFtZX0iKQorICAgICAgICBsaXN0IDw8IENvbnN0RGVjbC5uZXcoQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAgICBlbHNpZiBAdG9rZW5zW0Bp
ZHhdID09ICJlcnJvciIKKyAgICAgICAgbGlzdCA8PCBFcnJvci5uZXcoQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0g
PT0gImlmIgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwcmVkaWNhdGUg
PSBwYXJzZVByZWRpY2F0ZQorICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisg
ICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmVGhlbkVsc2UgPSBJZlRoZW5FbHNlLm5ldyhj
b2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxz
aWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAg
ICAgICAgbGlzdCA8PCBpZlRoZW5FbHNlCisgICAgICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0g
ImVsc2lmIgorICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4K
KyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIHBy
ZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChc
bikpXFovKQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgZWxzZUNhc2UgPSBJZlRo
ZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNl
KXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1
bXB9XCIiKSkKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNhc2UKKyAgICAg
ICAgICBpZlRoZW5FbHNlID0gZWxzZUNhc2UKKyAgICAgICAgZW5kCisgICAgICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gImVsc2UiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgaWZUaGVu
RWxzZS5lbHNlQ2FzZSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9m
IGVsc2UgY2FzZSBmb3IgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikKKyAgICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNb
QGlkeF0gPT0gImVuZCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZW5kCisgICAgICBl
bHNpZiBAdG9rZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xp
bmUKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0p
CisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICBib2R5ID0g
cGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gI3tuYW1lfSIp
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBsaXN0IDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2lu
LCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICBlbHNpZiBpc0luc3RydWN0aW9uIEB0b2tl
bnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgor
ICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIGlmIChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwg
YW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5z
dHJ1Y3Rpb24sIGFuZCBpdCdzIHRoZSBsYXN0IG9uZS4KKyAgICAgICAgICBsaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAgICBicmVhaworICAgICAg
ICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBp
bnN0cnVjdGlvbi4KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2lu
LCBuYW1lLCBbXSkKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICMgSXQncyBkZWZpbml0ZWx5IGFuIGluc3RydWN0aW9uLCBhbmQgaXQgaGFzIGF0IGxlYXN0IG9u
ZSBvcGVyYW5kLgorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBlbmRPZlNlcXVl
bmNlID0gZmFsc2UKKyAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBh
cnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGluc3RydWN0aW9uICN7bmFtZX0iKQorICAgICAg
ICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBh
bmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRo
ZSBpbnN0cnVjdGlvbiBhbmQgb2YgdGhlIHNlcXVlbmNlLgorICAgICAgICAgICAgICBlbmRPZlNl
cXVlbmNlID0gdHJ1ZQorICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgIyBIYXMgYW5vdGhlciBvcGVyYW5kLgor
ICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0g
PT0gIlxuIgorICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uLgorICAg
ICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQgYSBjb21tYSwgbmV3bGluZSwg
b3IgI3tmaW5hbH0gYWZ0ZXIgI3tvcGVyYW5kcy5sYXN0LmR1bXB9IikKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICAgIH0KKyAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3Jp
Z2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgICBpZiBlbmRPZlNlcXVlbmNlCisgICAgICAg
ICAgICBicmVhaworICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzSWRl
bnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgICAgICMg
TWFjcm8gaW52b2NhdGlvbi4KKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBvcGVyYW5k
cyA9IFtdCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhd
ID09ICIpIgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbG9vcCB7CisgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0
b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgorICAgICAgICAgICAgICAgICMgSXQncyBhIG1hY3JvIGxh
bWJkYSEKKyAgICAgICAgICAgICAgICBjb2RlT3JpZ2luSW5uZXIgPSBAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4KKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICB2YXJp
YWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgICAgICAgICAgYm9keSA9IHBhcnNl
U2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIGFub255bW91cyBtYWNybyBwYXNz
ZWQgYXMgYXJndW1lbnQgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW5Jbm5lciwgbmls
LCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBv
cGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBtYWNybyBjYWxsIHRvICN7
bmFtZX0iKQorICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAg
ICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5z
W0BpZHhdID09ICIsIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgcGFyc2VFcnJvciAiVW5leHBlY3RlZCAje0B0b2tlbnNbQGlk
eF0uc3RyaW5nLmluc3BlY3R9IHdoaWxlIHBhcnNpbmcgaW52b2NhdGlvbiBvZiBtYWNybyAje25h
bWV9IgorICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbmQKKyAg
ICAgICAgICBsaXN0IDw8IE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMp
CisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRl
ciAje25hbWV9IgorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4
XSBvciBpc0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmlu
ZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tA
aWR4XSA9PSAiOiIKKyAgICAgICAgIyBJdCdzIGEgbGFiZWwuCisgICAgICAgIGlmIGlzTGFiZWwg
bmFtZQorICAgICAgICAgIGxpc3QgPDwgTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgICAgICBlbHNlCisgICAgICAgICAgbGlzdCA8PCBMb2NhbExhYmVsLmZvck5hbWUoY29kZU9y
aWdpbiwgbmFtZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzZQor
ICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RpbmcgdGVybWluYWwgI3tmaW5hbH0gI3tjb21tZW50
fSIKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoZmlyc3RDb2RlT3JpZ2luLCBs
aXN0KQorICBlbmQKK2VuZAorCitkZWYgcGFyc2UodG9rZW5zKQorICBwYXJzZXIgPSBQYXJzZXIu
bmV3KHRva2VucykKKyAgcGFyc2VyLnBhcnNlU2VxdWVuY2UobmlsLCAiIikKK2VuZAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJi
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitHUFJTID0KKyAgWworICAgInQwIiwKKyAgICJ0MSIsCisgICAidDIiLAor
ICAgInQzIiwKKyAgICJ0NCIsCisgICAiY2ZyIiwKKyAgICJhMCIsCisgICAiYTEiLAorICAgInIw
IiwKKyAgICJyMSIsCisgICAic3AiLAorICAgImxyIgorICBdCisKK0ZQUlMgPQorICBbCisgICAi
ZnQwIiwKKyAgICJmdDEiLAorICAgImZ0MiIsCisgICAiZnQzIiwKKyAgICJmdDQiLAorICAgImZ0
NSIsCisgICAiZmEwIiwKKyAgICJmYTEiLAorICAgImZhMiIsCisgICAiZmEzIiwKKyAgICJmciIK
KyAgXQorCitSRUdJU1RFUlMgPSBHUFJTICsgRlBSUworCitHUFJfUEFUVEVSTiA9IFJlZ2V4cC5u
ZXcoJ1xcQSgoJyArIEdQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQorRlBSX1BBVFRFUk4gPSBS
ZWdleHAubmV3KCdcXEEoKCcgKyBGUFJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKKworUkVHSVNU
RVJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIFJFR0lTVEVSUy5qb2luKCcpfCgnKSAr
ICcpKVxcWicpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZWxmX2hh
c2gucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2Vs
Zl9oYXNoLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vc2VsZl9oYXNoLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ4IEBACisjIS91c3IvYmlu
L2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVp
cmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAicGF0aG5hbWUiCisKKyMKKyMgc2VsZkhhc2ggLT4g
U0hBMSBoZXhkaWdlc3QKKyMKKyMgUmV0dXJucyBhIGhhc2ggb2YgdGhlIG9mZmxpbmVhc20gc291
cmNlIGNvZGUuIFRoaXMgYWxsb3dzIGRlcGVuZGVuY3kKKyMgdHJhY2tpbmcgZm9yIG5vdCBqdXN0
IGNoYW5nZXMgaW4gaW5wdXQsIGJ1dCBhbHNvIGNoYW5nZXMgaW4gdGhlIGFzc2VtYmxlcgorIyBp
dHNlbGYuCisjCisKK2RlZiBzZWxmSGFzaAorICBjb250ZW50cyA9ICIiCisgIG15UGF0aCA9IFBh
dGhuYW1lLm5ldyhfX0ZJTEVfXykuZGlybmFtZQorICBEaXIuZm9yZWFjaChteVBhdGgpIHsKKyAg
ICB8IGVudHJ5IHwKKyAgICBpZiBlbnRyeSA9fiAvXC5yYiQvCisgICAgICBjb250ZW50cyArPSBJ
Tzo6cmVhZChteVBhdGggKyBlbnRyeSkKKyAgICBlbmQKKyAgfQorICByZXR1cm4gRGlnZXN0OjpT
SEExLmhleGRpZ2VzdChjb250ZW50cykKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIwNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAi
YXN0IgorcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJ0cmFu
c2Zvcm0iCisKKyMKKyMgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgLT4gc2V0dGlu
Z3NDb21iaWF0aW9ucworIworIyBDb21wdXRlcyBhbiBhcnJheSBvZiBzZXR0aW5ncyBtYXBzLCB3
aGVyZSBhIHNldHRpbmdzIG1hcCBjb25zdGl0dXRlcworIyBhIGNvbmZpZ3VyYXRpb24gZm9yIHRo
ZSBhc3NlbWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIG1hcAorIyBjb250YWlucyBrZXkg
dmFsdWUgcGFpcnMgd2hlcmUga2V5cyBhcmUgc2V0dGluZ3MgbmFtZXMgKHN0cmluZ3MpIGFuZAor
IyB0aGUgdmFsdWVzIGFyZSBib29sZWFucyAodHJ1ZSBmb3IgZW5hYmxlZCwgZmFsc2UgZm9yIGRp
c2FibGVkKS4KKyMKKworZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIHNl
dHRpbmdzQ29tYmluYXRpb25zID0gW10KKyAgCisgIGRlZiBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0
dGluZ3NDb21iaW5hdGlvbnMsIG1hcFNvRmFyLCByZW1haW5pbmcpCisgICAgaWYgcmVtYWluaW5n
LmVtcHR5PworICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFwU29GYXIKKyAgICAgIHJl
dHVybgorICAgIGVuZAorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01h
cFtyZW1haW5pbmdbMF1dID0gdHJ1ZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0Nv
bWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICAgIAorICAgIG5ld01hcCA9
IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gZmFsc2UKKyAgICBzZXR0
aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEu
Li0xXSkKKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlv
bnMsIHt9LCAoYXN0LmZpbHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7fHZ8IHYubmFtZX0gKyBb
Ilg4NiIsICJBUk12NyJdKS51bmlxKQorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMKK2VuZAor
CisjCisjIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgeworIyAgICAgfCBjb25j
cmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8IC4uLiB9CisjCisjIERldGVybWlu
ZXMgaWYgdGhlIHNldHRpbmdzIGNvbWJpbmF0aW9uIGlzIHZhbGlkLCBhbmQgaWYgc28sIGNhbGxz
CisjIHRoZSBibG9jayB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBj
b2RlLgorIworCitkZWYgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KQorICAjIENo
ZWNrIHdoaWNoIGFyY2hpdGVjdHVyZXMgdGhpcyBjb21iaW5hdG9yIGNsYWltcyB0byBzdXBwb3J0
LgorICBudW1DbGFpbWVkQmFja2VuZHMgPSAwCisgIHNlbGVjdGVkQmFja2VuZCA9IG5pbAorICBC
QUNLRU5EUy5lYWNoIHsKKyAgICB8IGJhY2tlbmQgfAorICAgIGlzU3VwcG9ydGVkID0gY29uY3Jl
dGVTZXR0aW5nc1tiYWNrZW5kXQorICAgIHJhaXNlIHVubGVzcyBpc1N1cHBvcnRlZCAhPSBuaWwK
KyAgICBudW1DbGFpbWVkQmFja2VuZHMgKz0gaWYgaXNTdXBwb3J0ZWQgdGhlbiAxIGVsc2UgMCBl
bmQKKyAgICBpZiBpc1N1cHBvcnRlZAorICAgICAgc2VsZWN0ZWRCYWNrZW5kID0gYmFja2VuZAor
ICAgIGVuZAorICB9CisgIAorICByZXR1cm4gaWYgbnVtQ2xhaW1lZEJhY2tlbmRzID4gMQorICAK
KyAgIyBSZXNvbHZlIHRoZSBBU1QgZG93biB0byBhIGxvdy1sZXZlbCBmb3JtIChubyBtYWNyb3Mg
b3IgY29uZGl0aW9uYWxzKS4KKyAgbG93TGV2ZWxBU1QgPSBhc3QucmVzb2x2ZVNldHRpbmdzKGNv
bmNyZXRlU2V0dGluZ3MpCisgIAorICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFT
VCwgc2VsZWN0ZWRCYWNrZW5kCitlbmQKKworIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJp
bmF0aW9uKGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGlu
ZGV4IHwgLi4uIH0KKyMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QsIHNl
dHRpbmdzQ29tYmluYXRpb25zKSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFj
a2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBFeGVjdXRlcyB0aGUgZ2l2ZW4gYmxvY2sgZm9yIGVh
Y2ggdmFsaWQgc2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlCisjIHNldHRpbmdzIG1hcC4gVGhl
IGFzdCBwYXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQKKyMgKGFzdC5yZXNvbHZlKSBh
Z2FpbnN0IHRoZSBzZXR0aW5ncy4KKyMKKyMgVGhlIGZpcnN0IGZvcm0gd2lsbCBjYWxsIGNvbXB1
dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIGZvciB5b3UuCisjCisKK2RlZiBmb3JFYWNoVmFs
aWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgKm9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMp
CisgIHJhaXNlIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEKKyAgCisg
IGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuZW1wdHk/CisgICAgc2V0dGluZ3NDb21i
aW5hdGlvbnMgPSBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBlbHNlCisgICAg
c2V0dGluZ3NDb21iaW5hdGlvbnMgPSBvcHRpb25hbFNldHRpbmdzQ29tYmlhdGlvbnNbMF0KKyAg
ZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucy5lYWNoX3dpdGhfaW5kZXggeworICAgIHwg
Y29uY3JldGVTZXR0aW5ncywgaW5kZXggfAorICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGlu
Z3MsIGFzdCkgeworICAgICAgfCBjb25jcmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJhY2tl
bmQgfAorICAgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQs
IGluZGV4CisgICAgfQorICB9CitlbmQKKworIworIyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVT
ZXR0aW5ncykKKyMKKyMgUmV0dXJucyB0aGUgQysrIGNvZGUgdXNlZCB0byB0ZXN0IGlmIHdlIGFy
ZSBpbiBhIGNvbmZpZ3VyYXRpb24gdGhhdAorIyBjb3JyZXNwb25kcyB0byB0aGUgZ2l2ZW4gY29u
Y3JldGUgc2V0dGluZ3MuCisjCisKK2RlZiBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5n
cykKKyAgIiNpZiAiICsgY29uY3JldGVTZXR0aW5ncy50b19hLmNvbGxlY3R7CisgICAgfCBwYWly
IHwKKyAgICAoaWYgcGFpclsxXQorICAgICAgICIiCisgICAgIGVsc2UKKyAgICAgICAiISIKKyAg
ICAgZW5kKSArICJPRkZMSU5FX0FTTV8iICsgcGFpclswXQorICB9LmpvaW4oIiAmJiAiKQorZW5k
CisKKyMKKyMgaXNBU1RFcnJvbmVvdXMoYXN0KQorIworIyBUZXN0cyB0byBzZWUgaWYgdGhlIEFT
VCBjbGFpbXMgdGhhdCB0aGVyZSBpcyBhbiBlcnJvciAtIGkuZS4gaWYgdGhlCisjIHVzZXIncyBj
b2RlLCBhZnRlciBzZXR0aW5ncyByZXNvbHV0aW9uLCBoYXMgRXJyb3Igbm9kZXMuCisjCisKK2Rl
ZiBpc0FTVEVycm9uZW91cyhhc3QpCisgIG5vdCBhc3QuZmlsdGVyKEVycm9yKS5lbXB0eT8KK2Vu
ZAorCisjCisjIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyMKKyMgRW1p
dHMgYSBjaGVjayB0aGF0IGFzc2VydHMgdGhhdCB3ZSdyZSB1c2luZyB0aGUgZ2l2ZW4gY29uZmln
dXJhdGlvbi4KKyMKKworZGVmIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykK
KyAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAkb3V0
cHV0LnB1dHMgIiNlbHNlIgorICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIkNvbmZpZ3VyYXRpb24g
bWlzbWF0Y2guXCIiCisgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMKKyMgZW1pdENv
ZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKSB7CisjICAg
ICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCB8IC4uLiB9CisjCisjIEVtaXRzIGFs
bCByZWxldmFudCBndWFyZHMgdG8gc2VlIGlmIHRoZSBjb25maWd1cmF0aW9uIGhvbGRzIGFuZAor
IyBjYWxscyB0aGUgYmxvY2sgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGVycm9uZW91cy4K
KyMKKworZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwg
YmFja2VuZCkKKyAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdz
KQorICAKKyAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAgICRvdXRwdXQucHV0cyAiI2Vycm9y
IFwiSW52YWxpZCBjb25maWd1cmF0aW9uLlwiIgorICBlbHNpZiBub3QgV09SS0lOR19CQUNLRU5E
Uy5pbmNsdWRlPyBiYWNrZW5kCisgICAgJG91dHB1dC5wdXRzICIjZXJyb3IgXCJUaGlzIGJhY2tl
bmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UKKyAgICB5aWVsZCBjb25jcmV0ZVNl
dHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICAkb3V0cHV0LnB1dHMgIiNlbmRpZiIK
K2VuZAorCisjCisjIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3QpIHsKKyMgICAgIHwg
Y29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9CisjCisjIEVtaXRz
IGd1YXJkIGNvZGVzIGZvciBhbGwgdmFsaWQgY29uZmlndXJhdGlvbnMsIGFuZCBjYWxscyB0aGUg
YmxvY2sKKyMgZm9yIHRob3NlIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHZhbGlkIGFuZCBub3Qg
ZXJyb25lb3VzLgorIworCitkZWYgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkKKyAg
Zm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsKKyAgICB8IGNvbmNyZXRlU2V0
dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleCB8CisgICAgJG91dHB1dC5wdXRzIGNw
cFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAgIHlpZWxkIGNvbmNyZXRlU2V0dGlu
Z3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgICRvdXRwdXQucHV0cyAiI2VuZGlm
IgorICB9CitlbmQKKworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3RyYW5zZm9ybS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQyIEBACisj
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCisKKyMK
KyMgbm9kZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisjCisjIENvbnN0cnVjdCBhIG5ldyBB
U1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBJZlRoZW5FbHNlIG5vZGVzIGJ5CisjIHN1YnN0aXR1
dGluZyBjb25jcmV0ZSBib29sZWFuIHZhbHVlcyBmb3IgZWFjaCBTZXR0aW5nLgorIworCitjbGFz
cyBOb2RlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgbWFwQ2hpbGRyZW4g
eworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
CisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Mo
c2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZQorICBkZWYgcmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgU2V0
dGluZworICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNldHRpbmdzW0BuYW1l
XS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kCisgIGRlZiByZXNvbHZlU2V0dGluZ3Mo
c2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgYW5k
IEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitl
bmQKKworY2xhc3MgT3IKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAoQGxl
ZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBvciBAcmlnaHQucmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE5vdAorICBk
ZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChub3QgQGNoaWxkLnJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBJZlRoZW5F
bHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgaWYgQHByZWRpY2F0ZS5y
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlCisgICAgICBAdGhlbkNhc2UucmVzb2x2ZVNl
dHRpbmdzKHNldHRpbmdzKQorICAgIGVsc2UKKyAgICAgIEBlbHNlQ2FzZS5yZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRl
ZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3Qu
ZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaXRlbSA9IGl0ZW0ucmVzb2x2ZVNldHRpbmdz
KHNldHRpbmdzKQorICAgICAgaWYgaXRlbS5pc19hPyBTZXF1ZW5jZQorICAgICAgICBuZXdMaXN0
ICs9IGl0ZW0ubGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0KKyAgICAg
IGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5k
CitlbmQKKworIworIyBub2RlLmRlbWFjcm9pZnkobWFjcm9zKQorIyBub2RlLnN1YnN0aXR1dGUo
bWFwcGluZykKKyMKKyMgZGVtYWNyb2lmeSgpIGNvbnN0cnVjdHMgYSBuZXcgQVNUIHRoYXQgZG9l
cyBub3QgaGF2ZSBhbnkgTWFjcm8KKyMgbm9kZXMsIHdoaWxlIHN1YnN0aXR1dGUoKSByZXBsYWNl
cyBWYXJpYWJsZSBub2RlcyB3aXRoIHRoZSBnaXZlbgorIyBub2RlcyBpbiB0aGUgbWFwcGluZy4K
KyMKKworY2xhc3MgTm9kZQorICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbWFwQ2hpbGRy
ZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5kZW1hY3JvaWZ5KG1hY3JvcykKKyAg
ICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBtYXBDaGlsZHJl
biB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobWFwcGluZykKKyAg
ICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBtYXBD
aGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGVMYWJlbHMo
bWFwcGluZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvCisgIGRlZiBzdWJzdGl0
dXRlKG1hcHBpbmcpCisgICAgbXlNYXBwaW5nID0ge30KKyAgICBtYXBwaW5nLmVhY2hfcGFpciB7
CisgICAgICB8IGtleSwgdmFsdWUgfAorICAgICAgdW5sZXNzIEB2YXJpYWJsZXMuaW5jbHVkZT8g
a2V5CisgICAgICAgIG15TWFwcGluZ1trZXldID0gdmFsdWUKKyAgICAgIGVuZAorICAgIH0KKyAg
ICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUo
bXlNYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUKKyAgZGVmIHN1
YnN0aXR1dGUobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3Nl
bGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBM
b2NhbExhYmVsCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgaWYgbWFwcGlu
Z1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBl
bmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHN1YnN0aXR1dGUoY29uc3Rh
bnRzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIG15Q29uc3RhbnRzID0gY29uc3RhbnRzLmR1cAor
ICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gQ29u
c3REZWNsCisgICAgICAgIG15Q29uc3RhbnRzW2l0ZW0udmFyaWFibGVdID0gaXRlbS52YWx1ZS5z
dWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0
ZW0uc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5j
ZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5kCisgIAorICBkZWYgcmVuYW1lTGFiZWxz
KGNvbW1lbnQpCisgICAgbWFwcGluZyA9IHt9CisgICAgCisgICAgQGxpc3QuZWFjaCB7CisgICAg
ICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBMb2NhbExhYmVsCisgICAgICAgIG1hcHBp
bmdbaXRlbV0gPSBMb2NhbExhYmVsLnVuaXF1ZShpZiBjb21tZW50IHRoZW4gY29tbWVudCArICJf
IiBlbHNlICIiIGVuZCArIGl0ZW0uY2xlYW5OYW1lKQorICAgICAgZW5kCisgICAgfQorICAgIAor
ICAgIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgZW5kCisgIAorICBkZWYgZGVtYWNyb2lm
eShtYWNyb3MpCisgICAgbXlNYWNyb3MgPSBtYWNyb3MuZHVwCisgICAgQGxpc3QuZWFjaCB7Cisg
ICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICBteU1hY3Jv
c1tpdGVtLm5hbWVdID0gaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3QgPSBbXQor
ICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gTWFj
cm8KKyAgICAgICAgIyBJZ25vcmUuCisgICAgICBlbHNpZiBpdGVtLmlzX2E/IE1hY3JvQ2FsbAor
ICAgICAgICBtYXBwaW5nID0ge30KKyAgICAgICAgbXlNeU1hY3JvcyA9IG15TWFjcm9zLmR1cAor
ICAgICAgICByYWlzZSAiQ291bGQgbm90IGZpbmQgbWFjcm8gI3tpdGVtLm5hbWV9IGF0ICN7aXRl
bS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG15TWFjcm9zW2l0ZW0ubmFtZV0KKyAgICAgICAg
cmFpc2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxsIHRvICN7aXRlbS5uYW1lfSBh
dCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVtLm9wZXJhbmRzLnNpemUgPT0g
bXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQorICAgICAgICBpdGVtLm9wZXJhbmRz
LnNpemUudGltZXMgeworICAgICAgICAgIHwgaWR4IHwKKyAgICAgICAgICBpZiBpdGVtLm9wZXJh
bmRzW2lkeF0uaXNfYT8gVmFyaWFibGUgYW5kIG15TWFjcm9zW2l0ZW0ub3BlcmFuZHNbaWR4XS5u
YW1lXQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxl
c1tpZHhdLm5hbWVdID0gbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAg
ICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBu
aWwKKyAgICAgICAgICBlbHNpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gTWFjcm8KKyAgICAg
ICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1l
XSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVt
Lm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9IG5p
bAorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhd
XSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAg
IG5ld0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5LnN1YnN0aXR1dGUobWFwcGluZyku
ZGVtYWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMoaXRlbS5uYW1lKS5saXN0CisgICAg
ICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5kZW1hY3JvaWZ5KG15TWFjcm9zKQorICAg
ICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KS5zdWJz
dGl0dXRlKHt9KQorICBlbmQKK2VuZAorCisjCisjIG5vZGUucmVzb2x2ZU9mZnNldHMob2Zmc2V0
cywgc2l6ZXMpCisjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBoYXMgb2Zmc2V0IHZhbHVl
cyBpbnN0ZWFkIG9mIHN5bWJvbGljCisjIG9mZnNldHMuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVm
IHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAg
IHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisg
ICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXQKKyAgZGVmIHJlc29sdmVPZmZz
ZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlmIG9mZnNldHNbc2VsZl0KKyAgICAgIEltbWVkaWF0
ZS5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0c1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBzZWxmCisg
ICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZgorICBkZWYgcmVzb2x2ZU9mZnNldHMo
b2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgc2l6ZXNbc2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXco
Y29kZU9yaWdpbiwgc2l6ZXNbc2VsZl0pCisgICAgZWxzZQorICAgICAgcHV0cyAiQ291bGQgbm90
IGZpbmQgI3tzZWxmLmluc3BlY3R9IGluICN7c2l6ZXMua2V5cy5pbnNwZWN0fSIKKyAgICAgIHB1
dHMgInNpemVzID0gI3tzaXplcy5pbnNwZWN0fSIKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5k
CitlbmQKKworIworIyBub2RlLmZvbGQKKyMKKyMgUmVzb2x2ZSBjb25zdGFudCByZWZlcmVuY2Vz
IGFuZCBjb21wdXRlIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMuCisjCisKK2NsYXNzIE5vZGUKKyAg
ZGVmIGZvbGQKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxk
LmZvbGQKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMKKyAgZGVmIGZv
bGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAg
IHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2Vs
ZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9y
aWdpbiwgQGxlZnQudmFsdWUgKyBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFN1
YkltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmln
aHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1l
ZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAg
IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgLSBAcmlnaHQudmFsdWUpCisg
IGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9
IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVu
bGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0
LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFs
dWUgKiBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0ZQorICBk
ZWYgZm9sZAorICAgIEBjaGlsZCA9IEBjaGlsZC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNz
IEBjaGlsZC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC1A
Y2hpbGQudmFsdWUpCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5yZXNvbHZlQWZ0ZXJTZXR0aW5n
cyhvZmZzZXRzLCBzaXplcykKKyMKKyMgQ29tcGlsZSBhc3NlbWJseSBhZ2FpbnN0IGEgc2V0IG9m
IG9mZnNldHMuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmUob2Zmc2V0cywgc2l6ZXMp
CisgICAgZGVtYWNyb2lmeSh7fSkucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpLmZvbGQK
KyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5y
YgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5y
YgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2ODEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2
CisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiLCAidDEiLCAiYTEiLCAi
cjEiLCAidDIiLCAidDMiCisgICAgICB0cnVlCisgICAgd2hlbiAidDQiLCAiY2ZyIgorICAgICAg
ZmFsc2UKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiB4
ODZPcGVyYW5kKGtpbmQpCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAi
CisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVhbCIKKyAgICAg
IHdoZW4gOmhhbGYKKyAgICAgICAgIiVheCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVh
eCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQxIiwg
ImExIiwgInIxIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIl
ZGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZHgiCisgICAgICB3aGVuIDppbnQKKyAg
ICAgICAgIiVlZHgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3
aGVuICJ0MiIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWNs
IgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWN4IgorICAgICAgd2hlbiA6aW50CisgICAg
ICAgICIlZWN4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hl
biAidDMiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVibCIK
KyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVieCIKKyAgICAgIHdoZW4gOmludAorICAgICAg
ICAiJWVieCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4g
InQ0IgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlc2lsIgor
ICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNpIgorICAgICAgd2hlbiA6aW50CisgICAgICAg
ICIlZXNpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAi
Y2ZyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlZGlsIgor
ICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWRpIgorICAgICAgd2hlbiA6aW50CisgICAgICAg
ICIlZWRpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAi
c3AiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzcGwiCisg
ICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc3AiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAg
IiVlc3AiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbHNlCisg
ICAgICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIFg4NiBhdCAje2NvZGVPcmlnaW5T
dHJpbmd9IgorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAg
Iioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQK
KyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICByYWlzZSB1bmxlc3Mga2luZCA9PSA6ZG91Ymxl
CisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZhMCIsICJmciIKKyAgICAgICIleG1t
MCIKKyAgICB3aGVuICJmdDEiLCAiZmExIgorICAgICAgIiV4bW0xIgorICAgIHdoZW4gImZ0MiIs
ICJmYTIiCisgICAgICAiJXhtbTIiCisgICAgd2hlbiAiZnQzIiwgImZhMyIKKyAgICAgICIleG1t
MyIKKyAgICB3aGVuICJmdDQiCisgICAgICAiJXhtbTQiCisgICAgd2hlbiAiZnQ1IgorICAgICAg
IiV4bW01IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQgcmVnaXN0ZXIgI3tuYW1lfSBmb3Ig
WDg2IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2Fs
bE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisK
K2NsYXNzIEltbWVkaWF0ZQorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIkI3t2YWx1ZX0i
CisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiI3t2YWx1ZX0iCisgIGVu
ZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1
ZQorICBlbmQKKyAgICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3tvZmZzZXQudmFs
dWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSkiCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJh
bmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNz
IEJhc2VJbmRleAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAg
IAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIje29mZnNldC52YWx1ZX0oI3tiYXNlLng4
Nk9wZXJhbmQoOmludCl9LCAje2luZGV4Lng4Nk9wZXJhbmQoOmludCl9LCAje3NjYWxlfSkiCisg
IGVuZAorCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZvcGVyYW5kKGtp
bmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgIGRlZiBzdXBwb3J0
czhCaXRPblg4NgorICAgIHRydWUKKyAgZW5kCisgICAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQp
CisgICAgIiN7YWRkcmVzcy52YWx1ZX0iCisgIGVuZAorCisgIGRlZiB4ODZDYWxsT3BlcmFuZChr
aW5kKQorICAgICIqI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxS
ZWZlcmVuY2UKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgYXNtTGFiZWwKKyAgZW5k
CitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2Q2FsbE9wZXJhbmQo
a2luZCkKKyAgICBhc21MYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbgorICBk
ZWYgeDg2T3BlcmFuZHMoKmtpbmRzKQorICAgIHJhaXNlIHVubGVzcyBraW5kcy5zaXplID09IG9w
ZXJhbmRzLnNpemUKKyAgICByZXN1bHQgPSBbXQorICAgIGtpbmRzLnNpemUudGltZXMgeworICAg
ICAgfCBpZHggfAorICAgICAgcmVzdWx0IDw8IG9wZXJhbmRzW2lkeF0ueDg2T3BlcmFuZChraW5k
c1tpZHhdKQorICAgIH0KKyAgICByZXN1bHQuam9pbigiLCAiKQorICBlbmQKKworICBkZWYgeDg2
U3VmZml4KGtpbmQpCisgICAgY2FzZSBraW5kCisgICAgd2hlbiA6Ynl0ZQorICAgICAgImIiCisg
ICAgd2hlbiA6aGFsZgorICAgICAgInciCisgICAgd2hlbiA6aW50CisgICAgICAibCIKKyAgICB3
aGVuIDpkb3VibGUKKyAgICAgICJzZCIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQs
IG51bU9wZXJhbmRzKQorICAgIGlmIG51bU9wZXJhbmRzID09IDMKKyAgICAgIGlmIG9wZXJhbmRz
WzBdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0i
CisgICAgICBlbHNpZiBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1
dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRz
WzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgIm1v
diN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29w
ZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2Rl
fSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJh
bmQoa2luZCl9IgorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICIje29wY29k
ZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3Aob3Bjb2Rl
LCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3Bl
cmFuZHMuc2l6ZSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2hpZnQob3Bjb2RlLCBraW5k
KQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBvciBvcGVyYW5kc1swXSA9PSBS
ZWdpc3RlcklELmZvck5hbWUobmlsLCAidDIiKQorICAgICAgJGFzbS5wdXRzICIje29wY29kZX0g
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZChraW5kKX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJ4Y2hnbCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gJWNs
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgJGFzbS5wdXRzICJ4Y2hn
bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBoYW5kbGVYODZEb3VibGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAg
IGNhc2UgbW9kZQorICAgIHdoZW4gOm5vcm1hbAorICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0iCisgICAgd2hlbiA6cmV2ZXJzZQorICAgICAgJGFzbS5wdXRzICJ1Y29taXNk
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0iCisgICAgZWxzZQorICAgICAgcmFpc2UgbW9kZS5pbnNwZWN0CisgICAg
ZW5kCisgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS5hc21MYWJl
bH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmUob3Bjb2RlU3VmZml4LCBr
aW5kKQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMF0u
dmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1
ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgInRl
c3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAg
ICBlbHNpZiBvcGVyYW5kc1sxXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzFdLnZhbHVl
ID09IDAgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXgg
PT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4
ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxz
ZQorICAgICAgJGFzbS5wdXRzICJjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBl
bmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50QnJhbmNoKGJyYW5jaE9wY29kZSwga2lu
ZCkKKyAgICBoYW5kbGVYODZJbnRDb21wYXJlKGJyYW5jaE9wY29kZVsxLi4tMV0sIGtpbmQpCisg
ICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisg
IGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmQpCisgICAgaWYg
b3BlcmFuZC5zdXBwb3J0czhCaXRPblg4NgorICAgICAgJGFzbS5wdXRzICIje3NldE9wY29kZX0g
I3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSIKKyAgICAgICRhc20ucHV0cyAibW92emJsICN7
b3BlcmFuZC54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDpp
bnQpfSwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiI3tzZXRPcGNvZGV9ICVhbCIKKyAgICAgICRh
c20ucHV0cyAibW92emJsICVhbCwgJWVheCIKKyAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVy
YW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBo
YW5kbGVYODZJbnRDb21wYXJlU2V0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZJbnRD
b21wYXJlKHNldE9wY29kZVszLi4tMV0sIGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29k
ZSwgb3BlcmFuZHNbMl0pCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAg
ICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiAy
CisgICAgICBtYXNrID0gSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtMSkKKyAgICB3aGVuIDMK
KyAgICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJFeHBlY3Rl
ZCAyIG9yIDMgb3BlcmFuZHMsIGJ1dCBnb3QgI3tvcGVyYW5kcy5zaXplfSBhdCAje2NvZGVPcmln
aW5TdHJpbmd9IgorICAgIGVuZAorICAgIAorICAgIGlmIG1hc2suaXNfYT8gSW1tZWRpYXRlIGFu
ZCBtYXNrLnZhbHVlID09IC0xCisgICAgICBpZiB2YWx1ZS5pc19hPyBSZWdpc3RlcklECisgICAg
ICAgICRhc20ucHV0cyAidGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQo
a2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAk
YXNtLnB1dHMgImNtcCN7eDg2U3VmZml4KGtpbmQpfSAkMCwgI3t2YWx1ZS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAidGVzdCN7eDg2U3Vm
Zml4KGtpbmQpfSAje21hc2sueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChr
aW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkJyYW5jaFRlc3QoYnJh
bmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICAkYXNtLnB1dHMg
IiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzLmxhc3QuYXNtTGFiZWx9IgorICBlbmQKKyAgCisg
IGRlZiBoYW5kbGVYODZTZXRUZXN0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0
KGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHMubGFzdCkKKyAgZW5k
CisgIAorICBkZWYgaGFuZGxlWDg2T3BCcmFuY2gob3Bjb2RlLCBicmFuY2hPcGNvZGUsIGtpbmQp
CisgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5z
aXplIC0gMSkKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAgIGp1bXBU
YXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9IG9wZXJh
bmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5kCisgICAg
JGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0LmFzbUxhYmVsfSIKKyAgZW5k
CisgIAorICBkZWYgaGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBp
ZiBvcGVyYW5kcy5zaXplID09IDQgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAg
ICAkYXNtLnB1dHMgIm5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
ICRhc20ucHV0cyAiYWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIGhhbmRsZVg4Nk9wV2l0
aE51bU9wZXJhbmRzKCJzdWIje3g4NlN1ZmZpeChraW5kKX0iLCBraW5kLCBvcGVyYW5kcy5zaXpl
IC0gMSkKKyAgICBlbmQKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAg
IGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9
IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5k
CisgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0LmFzbUxhYmVsfSIK
KyAgZW5kCisgIAorICBkZWYgbG93ZXJYODYKKyAgICAkYXNtLmNvbW1lbnQgY29kZU9yaWdpblN0
cmluZworICAgIGNhc2Ugb3Bjb2RlCisgICAgd2hlbiAiYWRkaSIsICJhZGRwIgorICAgICAgaWYg
b3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAg
ICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFp
c2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgaWYgb3BlcmFu
ZHNbMF0udmFsdWUgPT0gMAorICAgICAgICAgIHVubGVzcyBvcGVyYW5kc1sxXSA9PSBvcGVyYW5k
c1syXQorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAgZW5k
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAkYXNtLnB1dHMgImxlYWwgI3tvcGVyYW5kc1swXS52
YWx1ZX0oI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9
PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVz
cyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVy
YW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAibGVhbCAoI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQp
fSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAg
IHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAk
YXNtLnB1dHMgImFkZGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgICAgIGVuZAor
ICAgICAgZW5kCisgICAgd2hlbiAiYW5kaSIsICJhbmRwIgorICAgICAgaGFuZGxlWDg2T3AoImFu
ZGwiLCA6aW50KQorICAgIHdoZW4gImxzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2Fs
bCIsIDppbnQpCisgICAgd2hlbiAibXVsaSIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBh
bmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICRhc20ucHV0cyAiaW11bGwg
I3t4ODZPcGVyYW5kcyg6aW50LCA6aW50LCA6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgICMg
RklYTUU6IGNvdWxkIGRvIHNvbWUgcGVlcGhvbGUgaW4gY2FzZSB0aGUgbGVmdCBvcGVyYW5kIGlz
IGltbWVkaWF0ZSBhbmQgaXQncworICAgICAgICAjIGEgcG93ZXIgb2YgdHdvLgorICAgICAgICBo
YW5kbGVYODZPcCgiaW11bGwiLCA6aW50KQorICAgICAgZW5kCisgICAgd2hlbiAibmVnaSIKKyAg
ICAgICRhc20ucHV0cyAibmVnbCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJub3Rp
IgorICAgICAgJGFzbS5wdXRzICJub3RsICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4g
Im9yaSIsICJvcnAiCisgICAgICBoYW5kbGVYODZPcCgib3JsIiwgOmludCkKKyAgICB3aGVuICJy
c2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNhcmwiLCA6aW50KQorICAgIHdoZW4gInVy
c2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNocmwiLCA6aW50KQorICAgIHdoZW4gInN1
YmkiLCAic3VicCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMV0g
PT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJuZWdsICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgICAgICRhc20ucHV0cyAiYWRkbCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
ZWxzZQorICAgICAgICBoYW5kbGVYODZPcCgic3VibCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3
aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICBoYW5kbGVYODZPcCgieG9ybCIsIDppbnQpCisgICAg
d2hlbiAibG9hZGkiLCAic3RvcmVpIiwgImxvYWRwIiwgInN0b3JlcCIKKyAgICAgICRhc20ucHV0
cyAibW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICB3aGVuICJsb2FkYiIKKyAg
ICAgICRhc20ucHV0cyAibW92emJsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImxvYWRicyIKKyAgICAg
ICRhc20ucHV0cyAibW92c2JsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImxvYWRoIgorICAgICAgJGFz
bS5wdXRzICJtb3Z6d2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpoYWxmKX0sICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGhzIgorICAgICAgJGFzbS5w
dXRzICJtb3Zzd2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpoYWxmKX0sICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAic3RvcmViIgorICAgICAgJGFzbS5wdXRz
ICJtb3ZiICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0iCisgICAgd2hlbiAibG9hZGQiLCAi
bW92ZWQiLCAic3RvcmVkIgorICAgICAgJGFzbS5wdXRzICJtb3ZzZCAje3g4Nk9wZXJhbmRzKDpk
b3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJhZGRkIgorICAgICAgJGFzbS5wdXRzICJhZGRz
ZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJkaXZkIgorICAg
ICAgJGFzbS5wdXRzICJkaXZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAg
ICB3aGVuICJzdWJkIgorICAgICAgJGFzbS5wdXRzICJzdWJzZCAje3g4Nk9wZXJhbmRzKDpkb3Vi
bGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJtdWxkIgorICAgICAgJGFzbS5wdXRzICJtdWxzZCAj
e3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJzcXJ0ZCIKKyAgICAg
ICRhc20ucHV0cyAic3FydHNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiY2kyZCIKKyAgICAg
ICRhc20ucHV0cyAiY3Z0c2kyc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJiZGVxIgorICAgICAg
aXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRlcSIpCisgICAgICAkYXNtLnB1dHMg
InVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAianAgI3tMYWJlbFJlZmVy
ZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICRhc20u
cHV0cyAiamUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgb3BlcmFuZHNbMl0pLmFz
bUxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkbmVx
IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqbmUiLCA6bm9ybWFsKQorICAgIHdoZW4g
ImJkZ3QiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphIiwgOm5vcm1hbCkKKyAgICB3
aGVuICJiZGd0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIsIDpub3JtYWwp
CisgICAgd2hlbiAiYmRsdCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6cmV2
ZXJzZSkKKyAgICB3aGVuICJiZGx0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImph
ZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJy
YW5jaCgiamUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbmVxdW4iCisgICAgICBpc1Vub3JkZXJl
ZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgIGlzRXF1YWwgPSBMb2NhbExh
YmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSIKKyAgICAgICRhc20ucHV0cyAianAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdp
biwgaXNVbm9yZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiamUgI3tMYWJlbFJl
ZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNFcXVhbCkuYXNtTGFiZWx9IgorICAgICAgaXNVbm9y
ZGVyZWQubG93ZXIoIlg4NiIpCisgICAgICAkYXNtLnB1dHMgImptcCAje29wZXJhbmRzWzJdLmFz
bUxhYmVsfSIKKyAgICAgIGlzRXF1YWwubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRndHVuIgor
ICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJk
Z3RlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6cmV2ZXJzZSkKKyAg
ICB3aGVuICJiZGx0dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOm5vcm1h
bCkKKyAgICB3aGVuICJiZGx0ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamJl
IiwgOm5vcm1hbCkKKyAgICB3aGVuICJidGQyaSIKKyAgICAgICRhc20ucHV0cyAiY3Z0dHNkMnNp
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgImNtcGwgJDB4ODAwMDAwMDAgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiamUgI3tvcGVyYW5kc1sy
XS5hc21MYWJlbH0iCisgICAgd2hlbiAidGQyaSIKKyAgICAgICRhc20ucHV0cyAiY3Z0dHNkMnNp
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgd2hlbiAiYmNkMmkiCisgICAgICAkYXNtLnB1dHMgImN2dHRzZDJz
aSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJ0ZXN0bCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFz
bS5wdXRzICJqZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiY3Z0
c2kyc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNt
LnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTci
CisgICAgICAkYXNtLnB1dHMgImpwICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgJGFz
bS5wdXRzICJqbmUgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAibW92ZHoiCisg
ICAgICAkYXNtLnB1dHMgInhvcnBkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0s
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAicG9wIgorICAg
ICAgJGFzbS5wdXRzICJwb3AgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3
aGVuICJwdXNoIgorICAgICAgJGFzbS5wdXRzICJwdXNoICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6eGkycCIKKyAgICAgIGlmIElt
bWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXSBhbmQgb3BlcmFuZHNbMV0uaXNfYT8g
UmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgInhvcmwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2lm
IG9wZXJhbmRzWzBdICE9IG9wZXJhbmRzWzFdCisgICAgICAgICRhc20ucHV0cyAibW92bCAje3g4
Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgIGVuZAorICAgIHdoZW4gIm5vcCIKKyAgICAg
ICRhc20ucHV0cyAibm9wIgorICAgIHdoZW4gImJpZXEiLCAiYnBlcSIKKyAgICAgIGhhbmRsZVg4
NkludEJyYW5jaCgiamUiLCA6aW50KQorICAgIHdoZW4gImJpbmVxIiwgImJwbmVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6aW50KQorICAgIHdoZW4gImJpYSIsICJicGEiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphIiwgOmludCkKKyAgICB3aGVuICJiaWFlcSIsICJi
cGFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmludCkKKyAgICB3aGVuICJi
aWIiLCAiYnBiIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDppbnQpCisgICAgd2hl
biAiYmliZXEiLCAiYnBiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDppbnQp
CisgICAgd2hlbiAiYmlndCIsICJicGd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIs
IDppbnQpCisgICAgd2hlbiAiYmlndGVxIiwgImJwZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamdlIiwgOmludCkKKyAgICB3aGVuICJiaWx0IiwgImJwbHQiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImpsIiwgOmludCkKKyAgICB3aGVuICJiaWx0ZXEiLCAiYnBsdGVxIgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbGUiLCA6aW50KQorICAgIHdoZW4gImJiZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJuZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDpieXRlKQorICAgIHdoZW4gImJiYSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmFlcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDpieXRlKQorICAgIHdoZW4gImJiYmVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0IgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDpieXRlKQorICAgIHdoZW4gImJiZ3RlcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdCIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0ZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpsdGVxIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRpbyIsICJi
dHBvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6aW50KQorICAgIHdoZW4gImJ0
aXMiLCAiYnRwcyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmludCkKKyAgICB3
aGVuICJidGl6IiwgImJ0cHoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDppbnQp
CisgICAgd2hlbiAiYnRpbnoiLCAiYnRwbnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
bnoiLCA6aW50KQorICAgIHdoZW4gImJ0Ym8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
byIsIDpieXRlKQorICAgIHdoZW4gImJ0YnMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
cyIsIDpieXRlKQorICAgIHdoZW4gImJ0YnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
eiIsIDpieXRlKQorICAgIHdoZW4gImJ0Ym56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgi
am56IiwgOmJ5dGUpCisgICAgd2hlbiAiam1wIgorICAgICAgJGFzbS5wdXRzICJqbXAgI3tvcGVy
YW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiYmFkZGlvIiwgImJhZGRw
byIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpvIiwgOmludCkKKyAgICB3aGVu
ICJiYWRkaXMiLCAiYmFkZHBzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianMi
LCA6aW50KQorICAgIHdoZW4gImJhZGRpeiIsICJiYWRkcHoiCisgICAgICBoYW5kbGVYODZPcEJy
YW5jaCgiYWRkbCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlueiIsICJiYWRkcG56Igor
ICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJi
c3ViaW8iCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpvIiwgOmludCkKKyAgICB3aGVuICJi
c3ViaXMiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpzIiwgOmludCkKKyAgICB3aGVuICJi
c3ViaXoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImp6IiwgOmludCkKKyAgICB3aGVuICJi
c3ViaW56IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbnoiLCA6aW50KQorICAgIHdoZW4g
ImJtdWxpbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbyIsIDppbnQpCisg
ICAgd2hlbiAiYm11bGlzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpzIiwg
OmludCkKKyAgICB3aGVuICJibXVsaXoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwi
LCAianoiLCA6aW50KQorICAgIHdoZW4gImJtdWxpbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5j
aCgiaW11bGwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJib3JpbyIKKyAgICAgIGhhbmRsZVg4
Nk9wQnJhbmNoKCJvcmwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJvcmlzIgorICAgICAgaGFu
ZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXoiCisgICAg
ICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJib3Jpbnoi
CisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAi
YnJlYWsiCisgICAgICAkYXNtLnB1dHMgImludCAkMyIKKyAgICB3aGVuICJjYWxsIgorICAgICAg
JGFzbS5wdXRzICJjYWxsICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAg
IHdoZW4gInJldCIKKyAgICAgICRhc20ucHV0cyAicmV0IgorICAgIHdoZW4gImNpZXEiLCAiY3Bl
cSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGUiLCA6aW50KQorICAgIHdoZW4g
ImNpbmVxIiwgImNwbmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bmUiLCA6
aW50KQorICAgIHdoZW4gImNpYSIsICJjcGEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0
KCJzZXRhIiwgOmludCkKKyAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAgICAgIGhhbmRsZVg4
NkludENvbXBhcmVTZXQoInNldGFlIiwgOmludCkKKyAgICB3aGVuICJjaWIiLCAiY3BiIgorICAg
ICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YiIsIDppbnQpCisgICAgd2hlbiAiY2liZXEi
LCAiY3BiZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiZSIsIDppbnQpCisg
ICAgd2hlbiAiY2lndCIsICJjcGd0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
ZyIsIDppbnQpCisgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIKKyAgICAgIGhhbmRsZVg4Nklu
dENvbXBhcmVTZXQoInNldGdlIiwgOmludCkKKyAgICB3aGVuICJjaWx0IiwgImNwbHQiCisgICAg
ICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsIiwgOmludCkKKyAgICB3aGVuICJjaWx0ZXEi
LCAiY3BsdGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bGUiLCA6aW50KQor
ICAgIHdoZW4gInRpbyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6aW50KQorICAg
IHdoZW4gInRpcyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6aW50KQorICAgIHdo
ZW4gInRpeiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6aW50KQorICAgIHdoZW4g
InRpbnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDppbnQpCisgICAgd2hlbiAi
dGJvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDpieXRlKQorICAgIHdoZW4gInRi
cyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ynoi
CisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmJ5dGUpCisgICAgd2hlbiAidGJueiIK
KyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmJ5dGUpCisgICAgd2hlbiAicGVlayIK
KyAgICAgICRhc20ucHV0cyAibW92bCAje29wZXJhbmRzWzBdLnZhbHVlICogNH0oJWVzcCksICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicG9rZSIKKyAgICAgICRh
c20ucHV0cyAibW92bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRz
WzFdLnZhbHVlICogNH0oJWVzcCkiCisgICAgd2hlbiAiY2RxaSIKKyAgICAgICRhc20ucHV0cyAi
Y2RxIgorICAgIHdoZW4gImlkaXZpIgorICAgICAgJGFzbS5wdXRzICJpZGl2bCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImZpaTJkIgorICAgICAgJGFzbS5wdXRz
ICJtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgInBzbGxxICQzMiwgJXht
bTciCisgICAgICAkYXNtLnB1dHMgInBvciAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5k
KDpkb3VibGUpfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRhc20ucHV0cyAibW92ZCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgJGFzbS5wdXRzICJtb3ZzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAicHNybHEgJDMyLCAleG1tNyIKKyAg
ICAgICRhc20ucHV0cyAibW92c2QgJXhtbTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgd2hlbiAiYm8iCisgICAgICAkYXNtLnB1dHMgImpvICN7b3BlcmFuZHNbMF0uYXNt
TGFiZWx9IgorICAgIHdoZW4gImJzIgorICAgICAgJGFzbS5wdXRzICJqcyAje29wZXJhbmRzWzBd
LmFzbUxhYmVsfSIKKyAgICB3aGVuICJieiIKKyAgICAgICRhc20ucHV0cyAianogI3tvcGVyYW5k
c1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYm56IgorICAgICAgJGFzbS5wdXRzICJqbnogI3tv
cGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAibGVhaSIsICJsZWFwIgorICAgICAgJGFz
bS5wdXRzICJsZWFsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgcmFpc2UgIkJhZCBvcGNvZGU6
ICN7b3Bjb2RlfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXph
dGlvbktpbmQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENvZGVTcGVjaWFsaXphdGlv
bktpbmRfaAorI2RlZmluZSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKworbmFtZXNwYWNlIEpT
QyB7CisKK2VudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7IENvZGVGb3JDYWxsLCBDb2RlRm9y
Q29uc3RydWN0IH07CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ29kZVNwZWNp
YWxpemF0aW9uS2luZF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBDb21tb25TbG93UGF0aHNfaAogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAKQEAgLTQxLDYgKzQyLDM4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKIAorQUxX
QVlTX0lOTElORSBFeGVjU3RhdGUqIGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXRlKiBleGVjLCBSZWdp
c3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorewor
ICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAg
IEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKKyAgICBDb2RlQmxvY2sqIG5ld0Nv
ZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihr
aW5kKTsKKyAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBleGVjLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcygpOworCisgICAgLy8gVGhpcyBlbnN1cmVzIGVub3VnaCBzcGFj
ZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1bWVudHMgcGFzc2VkIGJ5
IHRoZSBjYWxsZXIuCisgICAgaWYgKCFyZWdpc3RlckZpbGUtPmdyb3coZXhlYy0+cmVnaXN0ZXJz
KCkgKyBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+bV9udW1D
YWxsZWVSZWdpc3RlcnMpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFTU0VSVChhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKwor
ICAgIC8vIFRvbyBmZXcgYXJndW1lbnRzIC0tIGNvcHkgY2FsbCBmcmFtZSBhbmQgYXJndW1lbnRz
LCB0aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1bWVudHMgd2l0aCB1bmRlZmluZWQuCisgICAgc2l6
ZV90IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpczsKKyAgICBSZWdpc3Rlciogc3JjID0gZXhlYy0+cmVnaXN0ZXJzKCk7Cisg
ICAgUmVnaXN0ZXIqIGRzdCA9IGV4ZWMtPnJlZ2lzdGVycygpICsgZGVsdGE7CisKKyAgICBpbnQg
aTsKKyAgICBpbnQgZW5kID0gLUV4ZWNTdGF0ZTo6b2Zmc2V0Rm9yKGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKTsKKyAgICBmb3IgKGkgPSAtMTsgaSA+PSBlbmQ7IC0taSkKKyAgICAgICAgZHN0
W2ldID0gc3JjW2ldOworCisgICAgZW5kIC09IGRlbHRhOworICAgIGZvciAoIDsgaSA+PSBlbmQ7
IC0taSkKKyAgICAgICAgZHN0W2ldID0ganNVbmRlZmluZWQoKTsKKworICAgIEV4ZWNTdGF0ZSog
bmV3RXhlYyA9IEV4ZWNTdGF0ZTo6Y3JlYXRlKGRzdCk7CisgICAgQVNTRVJUKCh2b2lkKiluZXdF
eGVjIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOworICAgIHJldHVybiBuZXdFeGVjOworfQorCiBB
TFdBWVNfSU5MSU5FIGJvb2wgb3BJbnN0YW5jZU9mU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdmFsdWUsIEpTVmFsdWUgYmFzZVZhbCwgSlNWYWx1ZSBwcm90bykKIHsKICAgICBBU1NFUlQo
IXZhbHVlLmlzQ2VsbCgpIHx8ICFiYXNlVmFsLmlzQ2VsbCgpIHx8ICFwcm90by5pc0NlbGwoKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJl
dmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQnl0ZWNv
ZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdEcml2
ZXIuaCIKKyNpbmNsdWRlICJFeGVjdXRpb25IYXJuZXNzLmgiCiAjaW5jbHVkZSAiSklULmgiCiAj
aW5jbHVkZSAiSklURHJpdmVyLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCkBAIC04NCw3ICs4NSw3
IEBAIEludHJpbnNpYyBOYXRpdmVFeGVjdXRhYmxlOjppbnRyaW5zaWMoKSAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiBzdGF0aWMgdm9pZCBqZXR0aXNvbkNvZGVCbG9jayhKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIE93blB0cjxUPiYgY29kZUJsb2NrKQogewotICAgIEFTU0VSVChjb2RlQmxvY2st
PmdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENv
ZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VS
VChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwogICAgIE93blB0cjxUPiBjb2RlQmxvY2tUb0pl
dHRpc29uID0gY29kZUJsb2NrLnJlbGVhc2UoKTsKICAgICBjb2RlQmxvY2sgPSBzdGF0aWNfcG9p
bnRlcl9jYXN0PFQ+KGNvZGVCbG9ja1RvSmV0dGlzb24tPnJlbGVhc2VBbHRlcm5hdGl2ZSgpKTsK
QEAgLTE2Nyw5ICsxNjgsMzAgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlT3B0
aW1pegogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBFdmFsRXhlY3V0YWJsZTo6aml0Q29t
cGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRD
b21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29k
ZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7Cit9CisKK2lubGluZSBjb25zdCBjaGFyKiBzYW1wbGluZ0Rlc2NyaXB0
aW9uKEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyAgICBzd2l0Y2ggKGppdFR5cGUpIHsK
KyAgICBjYXNlIEpJVENvZGU6OkludGVycHJldGVyVGh1bms6CisgICAgICAgIHJldHVybiAiSW50
ZXJwcmV0ZXIgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpCYXNlbGlu
ZUpJVDoKKyAgICAgICAgcmV0dXJuICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAg
ICBjYXNlIEpJVENvZGU6OkRGR0pJVDoKKyAgICAgICAgcmV0dXJuICJERkcgQ29tcGlsYXRpb24g
KFRPVEFMKSI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwogSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpj
b21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFp
bk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBz
YW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5l
IENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAg
U2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBl
KSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpA
QCAtMjEwLDcgKzIzMiw3IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVy
bmEKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUoKmdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0
VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKCpnbG9iYWxEYXRhLCBtX2V2YWxD
b2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAgICAgICByZXR1cm4gMDsK
ICNlbmRpZgogCkBAIC0yOTUsOSArMzE3LDE1IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJs
ZTo6Y29tcGlsZU9wdGkKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgUHJvZ3JhbUV4ZWN1
dGFibGU6OmppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wg
cmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29k
ZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCiBKU09iamVjdCogUHJvZ3JhbUV4
ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBs
aW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQg
PyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RB
TCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0
aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0o
aml0VHlwZSk7CkBAIC0zMzYsNyArMzY0LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxl
Ojpjb21waWxlSW50ZQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21w
aWxlSWZBcHByb3ByaWF0ZSgqZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENv
ZGVGb3JDYWxsLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVjdXRpb24oKmdsb2Jh
bERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAg
ICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTQxMiw3ICs0NDAsNyBAQCBGdW5jdGlvbkNv
ZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpiCiAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJu
YXRpdmUoKSkKICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sq
PihyZXN1bHQtPmFsdGVybmF0aXZlKCkpOwogICAgIEFTU0VSVChyZXN1bHQpOwotICAgIEFTU0VS
VChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNT
RVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDM4LDYgKzQ2NiwxOCBAQCBKU09iamVjdCogRnVuY3Rp
b25FeGVjdXRhYmxlOjpjb21waWxlT3B0CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0
ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0
Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgSklUQ29kZTo6Ym90dG9t
VGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9p
ZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0aW9uSWZB
cHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2Rl
Rm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1i
b2xUYWJsZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0KTsKK30KKwogRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y29kZUJsb2NrV2l0aEJ5dGVjb2RlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
IHsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tG
b3Ioa2luZCk7CkBAIC00ODIsNyArNTIyLDcgQEAgUGFzc093blB0cjxGdW5jdGlvbkNvZGVCbG9j
az4gRnVuY3Rpb25FeAogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9y
Q2FsbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5O
b2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBD
b21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNh
bXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkp
OwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTUw
NCw3ICs1NDQsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAg
ICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC0+c2hhcmVkU3ltYm9sVGFibGUo
KTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJv
cHJpYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVG
b3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGpp
dFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVG
b3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENvZGVGb3JDYWxs
KSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNTI0LDcgKzU2NCw3IEBAIEpTT2Jq
ZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKIAogSlNPYmplY3QqIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywg
U2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUp
CiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2Rl
OjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29t
cGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNh
bXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAg
IFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTU0Niw3ICs1ODYsNyBAQCBKU09iamVjdCogRnVu
Y3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAgICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJs
b2NrRm9yQ29uc3RydWN0LT5zaGFyZWRTeW1ib2xUYWJsZSgpOwogCiAjaWYgRU5BQkxFKEpJVCkK
LSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBtX2pp
dENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSkp
CisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBtX2ppdENv
ZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSwgQ29k
ZUZvckNvbnN0cnVjdCkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDEwNjQyMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBFeGVjdXRhYmxlX2gKIAogI2luY2x1ZGUg
IkNhbGxEYXRhLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIk5v
ZGVzLmgiCkBAIC0zOSwxMiArNDAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRGVi
dWdnZXI7CiAgICAgY2xhc3MgRXZhbENvZGVCbG9jazsKICAgICBjbGFzcyBGdW5jdGlvbkNvZGVC
bG9jazsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3Jh
bUNvZGVCbG9jazsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKIAogICAgIHN0cnVjdCBFeGNl
cHRpb25JbmZvOwogICAgIAotICAgIGVudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7IENvZGVG
b3JDYWxsLCBDb2RlRm9yQ29uc3RydWN0IH07CiAgICAgZW51bSBDb21waWxhdGlvbktpbmQgeyBG
aXJzdENvbXBpbGF0aW9uLCBPcHRpbWl6aW5nQ29tcGlsYXRpb24gfTsKIAogICAgIGlubGluZSBi
b29sIGlzQ2FsbChDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0zMTksNiArMzIwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDog
cHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRh
YmxlIEJhc2U7CiAKQEAgLTMzOCw2ICszNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGUoSlNH
bG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShKU0dsb2JhbERhdGEmKTsKICNl
bmRpZgogCiAgICAgICAgIEV2YWxDb2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkKQEAgLTM4
NCw2ICszODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgUHJvZ3Jh
bUV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVm
IFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNDExLDYgKzQxNSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0
aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlKEpTR2xv
YmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayYgZ2VuZXJhdGVk
Qnl0ZWNvZGUoKQpAQCAtNDUzLDYgKzQ1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAg
ICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJh
c2U7CiAKQEAgLTUwOCw2ICs1MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYg
RU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDYWxsKEpT
R2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDYWxsKEpTR2xvYmFsRGF0
YSYpOwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNhbGwoKSBjb25zdApA
QCAtNTM1LDYgKzU0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUo
SklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChKU0ds
b2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ29uc3RydWN0KEpTR2xvYmFs
RGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNvbnN0cnVjdCgp
IGNvbnN0CkBAIC01ODIsNiArNTkwLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
ICAgIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChnbG9iYWxEYXRhKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9y
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAg
ICAgICAgICAgIGppdENvbXBpbGVGb3JDYWxsKGdsb2JhbERhdGEpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVG
b3JDb25zdHJ1Y3QpOworICAgICAgICAgICAgaml0Q29tcGlsZUZvckNvbnN0cnVjdChnbG9iYWxE
YXRhKTsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBib29sIGlzR2VuZXJh
dGVkRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBFeGVjdXRpb25IYXJuZXNzX2gKKyNkZWZpbmUgRXhlY3V0
aW9uSGFybmVzc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShK
SVQpCisKKyNpbmNsdWRlICJKSVREcml2ZXIuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRz
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBl
PgoraW5saW5lIGJvb2wgcHJlcGFyZUZvckV4ZWN1dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBK
SVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChK
SVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkgeworICAgICAgICAvLyBTdGFydCBvZmYg
aW4gdGhlIGxvdyBsZXZlbCBpbnRlcnByZXRlci4KKyAgICAgICAgTExJbnQ6OmdldEVudHJ5cG9p
bnQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsKKyAgICAgICAgY29kZUJs
b2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKyAgICByZXR1
cm4gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLCBqaXRDb2Rl
LCBqaXRUeXBlKTsKK30KKworaW5saW5lIGJvb2wgcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29k
ZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGppdENvZGVX
aXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6
SklUVHlwZSBqaXRUeXBlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisjaWYgRU5B
QkxFKExMSU5UKQorICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkgewor
ICAgICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRlcnByZXRlci4KKyAgICAg
ICAgTExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludChnbG9iYWxEYXRhLCBraW5kLCBqaXRDb2Rl
LCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUo
aml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oa2luZCk7CisjZW5kaWYgLy8gRU5BQkxFKExM
SU5UKQorICAgIHJldHVybiBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERh
dGEsIGNvZGVCbG9jaywgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBzeW1ib2xUYWJs
ZSwgaml0VHlwZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKKworI2VuZGlmIC8vIEV4ZWN1dGlvbkhhcm5lc3NfaAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkocmV2aXNpb24gMTA2NDIzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBPd25B
cnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5ID0gYWRvcHRBcnJh
eVB0cihuZXcgV3JpdGVCYXJyaWVyPFVua25vd24+W3JlZ2lzdGVyQXJyYXlTaXplXSk7CiAgICAg
ICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzID0gcmVnaXN0ZXJBcnJheS5nZXQo
KSArIHJlZ2lzdGVyT2Zmc2V0OwotCisgICAgICAgIAogICAgICAgICAvLyBDb3B5IGFsbCBhcmd1
bWVudHMgdGhhdCBjYW4gYmUgY2FwdHVyZWQgYnkgbmFtZSBvciBieSB0aGUgYXJndW1lbnRzIG9i
amVjdC4KICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX251bUNhcHR1cmVkQXJnczsgKytp
KSB7CiAgICAgICAgICAgICBpbnQgaW5kZXggPSBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KGkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24g
MTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEpTQXJyYXk7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgc3RydWN0
IFNwYXJzZUFycmF5RW50cnkgOiBwdWJsaWMgV3JpdGVCYXJyaWVyPFVua25vd24+IHsKICAgICAg
ICAgdHlwZWRlZiBXcml0ZUJhcnJpZXI8VW5rbm93bj4gQmFzZTsKQEAgLTEyMiw2ICsxMjMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgSlNBcnJheSA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdhbGtlcjsKIAogICAgIHByb3RlY3RlZDoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxMDY0MjMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsOSArMzYsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNHbG9i
YWxPYmplY3Q7Ci0gICAgY2xhc3MgU3RydWN0dXJlOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVy
dHlOYW1lQXJyYXk7CisgICAgY2xhc3MgU3RydWN0dXJlOwogCiAgICAgZW51bSBFbnVtZXJhdGlv
bk1vZGUgewogICAgICAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLApAQCAtMTY0LDYgKzE2
NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgY29uc3QgQ2xhc3NJbmZv
KiBtX2NsYXNzSW5mbzsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1
cmU7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBKU0FjdGl2YXRp
b247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgU291cmNlQ29k
ZTsKICAgICBuYW1lc3BhY2UgREZHIHsKQEAgLTE0MCw2ICsxNDEsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0
RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBhcmd1
bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCShy
ZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDEsNiArMTQxLDggQEAgSlNHbG9iYWxEYXRh
OjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgICwga2V5d29yZHMoYWRvcHRQdHIobmV3
IEtleXdvcmRzKHRoaXMpKSkKICAgICAsIGludGVycHJldGVyKDApCiAgICAgLCBoZWFwKHRoaXMs
IGhlYXBTaXplKQorICAgICwganNBcnJheUNsYXNzSW5mbygmSlNBcnJheTo6c19pbmZvKQorICAg
ICwganNGaW5hbE9iamVjdENsYXNzSW5mbygmSlNGaW5hbE9iamVjdDo6c19pbmZvKQogI2lmIEVO
QUJMRShERkdfSklUKQogICAgICwgc2l6ZU9mTGFzdFNjcmF0Y2hCdWZmZXIoMCkKICNlbmRpZgpA
QCAtMjE2LDcgKzIxOCw3IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFU
eXAKICAgICBqaXRTdHVicyA9IGFkb3B0UHRyKG5ldyBKSVRUaHVua3ModGhpcykpOwogI2VuZGlm
CiAKLSAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSh0aGlzLT5jYW5Vc2VKSVQoKSk7CisgICAg
aW50ZXJwcmV0ZXItPmluaXRpYWxpemUoJmxsaW50RGF0YSwgdGhpcy0+Y2FuVXNlSklUKCkpOwog
CiAgICAgaGVhcC5ub3RpZnlJc1NhZmVUb0NvbGxlY3QoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lvbiAxMDY0MjMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsMTUgKzMwLDE2IEBACiAjZGVmaW5lIEpTR2xvYmFsRGF0YV9oCiAKICNpbmNs
dWRlICJDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSW50cmluc2lj
LmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRhYmxl
QWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIlN0cm9uZy5oIgorI2lu
Y2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAiSlNW
YWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk51bWVyaWNTdHJpbmdz
LmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU3Ryb25nLmgiCiAjaW5j
bHVkZSAiVGVybWluYXRvci5oIgogI2luY2x1ZGUgIlRpbWVvdXRDaGVja2VyLmgiCiAjaW5jbHVk
ZSAiV2Vha1JhbmRvbS5oIgpAQCAtNjUsNiArNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBLZXl3
b3JkczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZl
RXhlY3V0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAgICBjbGFzcyBSZWdFeHBDYWNo
ZTsKQEAgLTI0MSw2ICsyNDMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEhlYXAgaGVh
cDsKIAogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKKworICAgICAgICBjb25zdCBDbGFzc0lu
Zm8qIGNvbnN0IGpzQXJyYXlDbGFzc0luZm87CisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY29u
c3QganNGaW5hbE9iamVjdENsYXNzSW5mbzsKKworICAgICAgICBMTEludDo6RGF0YSBsbGludERh
dGE7CisKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIGV4Y2VwdGlv
bkxvY2F0aW9uOwogICAgICAgICBKU1ZhbHVlIGhvc3RDYWxsUmV0dXJuVmFsdWU7CkBAIC0zNDYs
NiArMzU0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjdW5kZWYgcmVnaXN0ZXJUeXBlZEFycmF5RnVu
Y3Rpb24KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cGUs
IFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUpOwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxEYXRh
KiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwogICAgICAgICB2b2lkIGNyZWF0ZU5hdGl2ZVRo
dW5rKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgR2V0
dGVyU2V0dGVyOwogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKICAgICBj
bGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwpAQCAt
MzM1LDYgKzMzNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJVkFU
RSB2b2lkIGFkZFN0YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiwgaW50IGNvdW50KTsK
IAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CisgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogRm9sZCByZXNldCBpbnRvIGluaXQuCiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdChKU09iamVjdCogdGhpc1ZhbHVlKTsK
ICAgICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5
LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgR2V0dGVyU2V0dGVyOwogICAg
IGNsYXNzIEhhc2hFbnRyeTsKICAgICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uOworICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRCbG9jazsKICAgICBjbGFz
cyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CkBAIC0y
NzAsNiArMjcxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTT2JqZWN0KEpTR2xvYmFs
RGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKTsKIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgICAgIAogICAgICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIgYXNrIGFueSBvZiB0aGVzZSBx
dWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25vd24gdG8gYmUgYSBKU09iamVjdC4KICAg
ICAgICAgdXNpbmcgSlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcjsKICAgICAgICAgdXNpbmcgSlND
ZWxsOjppc0dldHRlclNldHRlcjsKQEAgLTM4Miw2ICszODUsOCBAQCBDT01QSUxFX0FTU0VSVCgo
SlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlND
ZWxsKik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgZXhwbGljaXQgSlNGaW5hbE9iamVjdChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICAgICAg
OiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5lU3RvcmFnZSkKICAgICAg
ICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaAkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSWRlbnRpZmll
cjsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAKICAgICBjbGFzcyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yIDogcHVibGljIEpTQ2VsbCB7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC05Niw2ICs5Nyw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
cihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0
YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpOwogCiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1
Y3R1cmU+IG1fY2FjaGVkU3RydWN0dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTU3RyaW5nOworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIAogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEpTR2xvYmFsRGF0
YSopOwogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSopOwpAQCAtMjQwLDYg
KzI0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxk
cmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCByZXNvbHZlUm9wZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAg
dm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlOChMQ2hhciopIGNvbnN0OwogICAgICAgICB2b2lkIHJl
c29sdmVSb3BlU2xvd0Nhc2UoVUNoYXIqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzQs
NiArMzQsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXNxdWVyYWRlc0FzVW5kZWZp
bmVkID0gMTsgLy8gV2ViQ29yZSB1c2VzIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgdG8gbWFrZSBk
b2N1bWVudC5hbGwgdW5kZXRlY3RhYmxlLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbXBs
ZW1lbnRzSGFzSW5zdGFuY2UgPSAxIDw8IDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE92
ZXJyaWRlc0hhc0luc3RhbmNlID0gMSA8PCAyOwpAQCAtODcsNiArODksOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTZXRPbkZsYWdz
MSh1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnIDw9ICgxIDw8IDcpKTsgcmV0dXJu
IG1fZmxhZ3MgJiBmbGFnOyB9CiAgICAgICAgIGJvb2wgaXNTZXRPbkZsYWdzMih1bnNpZ25lZCBm
bGFnKSBjb25zdCB7IEFTU0VSVChmbGFnID49ICgxIDw8IDgpKTsgcmV0dXJuIG1fZmxhZ3MyICYg
KGZsYWcgPj4gOCk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YWx1ZS5jcHAJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsMTAgKzExNiw5IEBAIEpTT2Jq
ZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEUKICAgICByZXR1cm4gSlNOb3RBbk9i
amVjdDo6Y3JlYXRlKGV4ZWMpOwogfQogCi0jaWZuZGVmIE5ERUJVRwogY2hhciogSlNWYWx1ZTo6
ZGVzY3JpcHRpb24oKQogewotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZSA9IDY0OworICAg
IHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZSA9IDEyODsKICAgICBzdGF0aWMgY2hhciBkZXNjcmlw
dGlvbltzaXplXTsKIAogICAgIGlmICghKnRoaXMpCkBAIC0xMjgsMTQgKzEyNywxNCBAQCBjaGFy
KiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiAgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBz
aXplLCAiSW50MzI6ICVkIiwgYXNJbnQzMigpKTsKICAgICBlbHNlIGlmIChpc0RvdWJsZSgpKSB7
CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUs
ICJEb3VibGU6ICVsZiwgJWx4IiwgYXNEb3VibGUoKSwgcmVpbnRlcnByZXREb3VibGVUb0ludHB0
cihhc0RvdWJsZSgpKSk7CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91
YmxlOiAlbHgsICVsZiIsIHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIoYXNEb3VibGUoKSksIGFz
RG91YmxlKCkpOwogI2Vsc2UKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgZG91YmxlIGFz
RG91YmxlOwogICAgICAgICAgICAgdWludDMyX3QgYXNUd29JbnQzMnNbMl07CiAgICAgICAgIH0g
dTsKICAgICAgICAgdS5hc0RvdWJsZSA9IGFzRG91YmxlKCk7Ci0gICAgICAgIHNucHJpbnRmKGRl
c2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICUwOHg6JTA4eCIsIGFzRG91YmxlKCksIHUu
YXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0pOworICAgICAgICBzbnByaW50ZihkZXNj
cmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJTA4eDolMDh4LCAlbGYiLCB1LmFzVHdvSW50MzJzWzFd
LCB1LmFzVHdvSW50MzJzWzBdLCBhc0RvdWJsZSgpKTsKICNlbmRpZgogICAgIH0gZWxzZSBpZiAo
aXNDZWxsKCkpCiAgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiQ2VsbDogJXAi
LCBhc0NlbGwoKSk7CkBAIC0xNTIsNyArMTUxLDYgQEAgY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRp
b24oKQogCiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQotI2VuZGlmCiAKIC8vIFRoaXMgaW4g
dGhlIFRvSW50MzIgb3BlcmF0aW9uIGlzIGRlZmluZWQgaW4gc2VjdGlvbiA5LjUgb2YgdGhlIEVD
TUEtMjYyIHNwZWMuCiAvLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMgaWRlbnRpY2FsIHRv
IFRvVUludDMyIG90aGVyIHRoYW4gdG8gaW50ZXJwcmV0YXRpb24KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjMyLDkg
KzIzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU0NlbGwqIGFzQ2VsbCgpIGNvbnN0
OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRDYWxsZWUoKTsKIAotI2lm
bmRlZiBOREVCVUcKICAgICAgICAgY2hhciogZGVzY3JpcHRpb24oKTsKLSNlbmRpZgogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpTVmFsdWUoV3JpdGVCYXJyaWVy
QmFzZTxUPik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxl
T2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNW
YXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDEwICsz
OCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBjbGFzcyBSZWdpc3RlcjsKIAogICAgIGNsYXNzIEpTVmFyaWFibGVPYmplY3Qg
OiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBwdWJsaWM6
CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDEwNjQyMykKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Miw2ICs1MiwxMCBAQCB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHJ1Y3RJbmxp
CiAKIHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOwogCitpbnQzMl90IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JEb250SklUQW55dGltZVNvb247CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckpJVFNvb247CisKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRl
cldhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxv
bmdXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFu
eXRpbWVTb29uOwpAQCAtMTM3LDYgKzE0MSwxMCBAQCB2b2lkIGluaXRpYWxpemVPcHRpb25zKCkK
ICAgICAKICAgICBTRVQobWF4aW11bUlubGluaW5nRGVwdGgsIDUpOwogCisgICAgU0VUKGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwLCAgICAgLTEwMCk7CisgICAgU0VUKGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbiwgc3RkOjpudW1lcmljX2xp
bWl0czxpbnQzMl90Pjo6bWluKCkpOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JK
SVRTb29uLCAgICAgICAgICAgIC0xMDApOworCiAgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAsICAgICAtMTAwMCk7CiAgICAgU0VUKGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwLCAtNTAwMCk7CiAgICAgU0VUKGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uLCBzdGQ6Om51bWVy
aWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CkBAIC0xODUsNiArMTkzLDggQEAgdm9pZCBpbml0
aWFsaXplT3B0aW9ucygpCiAgICAgaWYgKGNwdXNUb1VzZSA8IDEpCiAgICAgICAgIGNwdXNUb1Vz
ZSA9IDE7CiAgICAgCisgICAgY3B1c1RvVXNlID0gMTsKKyAgICAKICAgICBTRVQobnVtYmVyT2ZH
Q01hcmtlcnMsIGNwdXNUb1VzZSk7CiAKICAgICBBU1NFUlQoZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yRG9udE9wdGltaXplQW55dGltZVNvb24gPD0gZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVBZnRlckxvbmdXYXJtVXApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnMuaAkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMCBAQCBleHRlcm4g
dW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RyCiAKIGV4dGVybiB1bnNpZ25lZCBtYXhp
bXVtSW5saW5pbmdEZXB0aDsgLy8gRGVwdGggb2YgaW5saW5lIHN0YWNrLCBzbyAxID0gbm8gaW5s
aW5pbmcsIDIgPSBvbmUgbGV2ZWwsIGV0Yy4KIAorZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CitleHRlcm4gaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVy
VmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7CiBleHRlcm4gaW50MzJfdCBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHJldmlzaW9uIDEwNjQyMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNiArMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2Jh
bERhdGE7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7Cisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5JdGVy
YXRvcjsKICAgICBjbGFzcyBTbG90VmlzaXRvcjsKICAgICAKQEAgLTkxLDYgKzkyLDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5m
byBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0
cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbjsKICAgICB9OwogCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJldmlzaW9uIDEw
NjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyMiw3ICszMjIsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVjdHVyZTo6YWRk
UHJvcGVydHlUcmFuc2l0CiAgICAgICAgICAgICB0cmFuc2l0aW9uLT5ncm93UHJvcGVydHlTdG9y
YWdlQ2FwYWNpdHkoKTsKICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb247CiAgICAgfQotCisgICAg
CiAgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gY3JlYXRlKGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSk7CiAKICAgICB0cmFuc2l0aW9uLT5tX2NhY2hlZFByb3RvdHlwZUNoYWluLnNldE1heUJlTnVs
bChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUtPm1fY2FjaGVkUHJvdG90eXBlQ2hh
aW4uZ2V0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgJKHJldmlzaW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3Bl
cnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5RGF0YTsKICAgICBjbGFz
cyBTdHJ1Y3R1cmVDaGFpbjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRh
JiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlwZUluZm8mLCBj
b25zdCBDbGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYpOwogICAg
ICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgJKHJldmlz
aW9uIDEwNjQyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNo
YWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7
CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU3RydWN0dXJl
OwogCiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlNDZWxsIHsKQEAgLTc0LDYg
Kzc1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAg
ICBTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAgICAgICAgc3Rh
dGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3duQXJyYXlQdHI8V3JpdGVCYXJy
aWVyPFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvSW5saW5lQVNNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9J
bmxpbmVBU00uaAkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9JbmxpbmVBU00uaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNCArNzAsMTEgQEAKICNkZWZpbmUg
SElERV9TWU1CT0wobmFtZSkKICNlbmRpZgogCisvLyBGSVhNRTogZmlndXJlIG91dCBob3cgdGhp
cyB3b3JrcyBvbiBhbGwgdGhlIHBsYXRmb3Jtcy4gSSBrbm93IHRoYXQKKy8vIG9uIExpbnV4LCB0
aGUgcHJlZmVycmVkIGZvcm0gaXMgIi5Mc3R1ZmYiIGFzIG9wcG9zZWQgdG8gIkxzdHVmZiIuCisv
LyBEb24ndCBrbm93IGFib3V0IGFueSBvZiB0aGUgb3RoZXJzLgorI2lmIFBMQVRGT1JNKE1BQykK
KyNkZWZpbmUgTE9DQUxfTEFCRUxfU1RSSU5HKG5hbWUpICJMIiAjbmFtZQorI2VuZGlmCisKICNl
bmRpZiAvLyBJbmxpbmVBU01faApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0u
aAkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9y
bS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MjMsNiArOTIzLDE4IEBACiAjZGVmaW5lIEVOQUJMRV9K
SVQgMQogI2VuZGlmCiAKKy8qIE9uIHNvbWUgb2YgdGhlIHBsYXRmb3JtcyB3aGVyZSB3ZSBoYXZl
IGEgSklULCB3ZSB3YW50IHRvIGFsc28gaGF2ZSB0aGUgCisgICBsb3ctbGV2ZWwgaW50ZXJwcmV0
ZXIuICovCisjaWYgIWRlZmluZWQoRU5BQkxFX0xMSU5UKSAmJiBFTkFCTEUoSklUKSAmJiBPUyhE
QVJXSU4pICYmIChDUFUoWDg2KSB8fCBDUFUoQVJNX1RIVU1CMikpICYmIFVTRShKU1ZBTFVFMzJf
NjQpCisjZGVmaW5lIEVOQUJMRV9MTElOVCAxCisjZW5kaWYKKworLyogSWYgd2UgaGF2ZSBMTElu
dCBlbmFibGVkIGFuZCB0aGUgSklUIGVuYWJsZWQsIHdlIGFsc28gZW5hYmxlIE9TUmluZyBmcm9t
CisgICBMTEludCB0byB0aGUgSklULiAqLworI2lmICFkZWZpbmVkKEVOQUJMRV9MTElOVF9PU1Jf
VE9fSklUKSAmJiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoTExJTlQpCisjZGVmaW5lIEVOQUJMRV9M
TElOVF9PU1JfVE9fSklUIDEKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0RGR19KSVQp
ICYmIEVOQUJMRShKSVQpCiAvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gWDg2IGFuZCBYODZfNjQu
ICBPbmx5IHRlc3RlZCBvbiBNYWMgYW5kIEdOVS9MaW51eC4gKi8KICNpZiAoQ1BVKFg4NikgfHwg
Q1BVKFg4Nl82NCkpICYmIChQTEFURk9STShNQUMpIHx8IE9TKExJTlVYKSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAkocmV2aXNpb24g
MTA2NDIzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsOCBAQCBwdWJsaWM6CiAKICAgICBpdGVyYXRv
ciBiZWdpbigpOwogICAgIGl0ZXJhdG9yIGVuZCgpOworICAgIAorICAgIGJvb2wgaXNFbXB0eSgp
IHsgcmV0dXJuIGJlZ2luKCkgPT0gZW5kKCk7IH0KIAogcHJpdmF0ZToKICAgICBSYXdOb2RlIG1f
aGVhZFNlbnRpbmVsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmlu
Z0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCShyZXZpc2lvbiAxMDY0MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHR5cGVk
ZWYgY29uc3Qgc3RydWN0IF9fQ0ZTdHJpbmcgKiBDRlN0cmkKIC8vIExhbmRpbmcgdGhlIGZpbGUg
bW92ZXMgaW4gb25lIHBhdGNoLCB3aWxsIGZvbGxvdyBvbiB3aXRoIHBhdGNoZXMgdG8gY2hhbmdl
IHRoZSBuYW1lc3BhY2VzLgogbmFtZXNwYWNlIEpTQyB7CiBzdHJ1Y3QgSWRlbnRpZmllckNTdHJp
bmdUcmFuc2xhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogdGVtcGxhdGUgPHR5
cGVuYW1lIFQ+IHN0cnVjdCBJZGVudGlmaWVyQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiBzdHJ1Y3Qg
SWRlbnRpZmllckxDaGFyRnJvbVVDaGFyVHJhbnNsYXRvcjsKIH0KQEAgLTcyLDcgKzczLDggQEAg
Y2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6OlN1YnN0cmluZ1RyYW5z
bGF0b3I7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6OlVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKICAg
ICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKLQorICAgIGZyaWVuZCBjbGFzcyBKU0M6
OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKIHByaXZhdGU6CiAgICAgZW51bSBCdWZmZXJP
d25lcnNoaXAgewogICAgICAgICBCdWZmZXJJbnRlcm5hbCwKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDEwNjQyMykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE3IEBACisyMDEyLTAxLTI2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgSlNDIHNob3VsZCBiZSBhIHRyaXBsZS10aWVyIFZNCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgxMgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTAwNzk2OTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2hhbmdlZCBFRkwncyBidWlsZCBzeXN0ZW0gdG8gaW5jbHVkZSBhIG5l
dyBkaXJlY3RvcnkgaW4gSmF2YVNjcmlwdENvcmUuCisgICAgICAgIAorICAgICAgICBObyBuZXcg
dGVzdHMgYmVjYXVzZSBubyBiZWhhdmlvciBjaGFuZ2VkLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisKIDIwMTItMDEtMzEgIFJheW1vbmQgTGl1ICA8cmF5bW9uZC5saXVAaW50ZWwuY29t
PgogCiAgICAgICAgIER5bmFtaWMgYWxsb2NhdGUgQXVkaW9CdXMgd2l0aCByZXF1aXJlZCBudW1i
ZXIgb2YgY2hhbm5lbHMgZm9yIEF1ZGlvTm9kZUlucHV0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMTA2NDIzKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2pp
dCIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpJbmRleDogU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEwNjQyMykKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDEtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
KworICAgICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRp
cmVjdG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4KKyAgICAgICAgCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisKIDIwMTItMDEtMTEgIEphY2t5IEppYW5nICA8emhhamlhbmdAcmltLmNvbT4KIAog
ICAgICAgICBbQmxhY2tCZXJyeV0gQVNTRVJUIGZhaWx1cmUgaW4gQmFja2luZ1N0b3JlUHJpdmF0
ZTo6YmxpdFZpc2libGVDb250ZW50cygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDEwNjQyMykKKysrIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDYgKzQ0LDcgQEAgU0VUKFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2ludGVycHJldGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJz
ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L3J1bnRpbWUiCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDY0MjMpCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0yNyAgRmlsaXAgUGl6bG8g
IDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGll
ciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4
MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQgRUZMJ3MgYnVpbGQgc3lzdGVt
IHRvIGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3JpcHRDb3JlLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAxLTMxICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKFdl
YktpdDIpOiBldmVudC5rZXlDb2RlIGlzIGFsd2F5cyB6ZXJvIHdoZW4gdHlwaW5nIGluIFJ1c3Np
YW4KSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDEwNjQyMykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNjgsMTAgKzY4LDEyIEBAIFNFVChEdW1wUmVuZGVyVHJlZV9JTkNMVURF
X0RJUkVDVE9SSUVTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9CiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L0FQSQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9hc3NlbWJsZXIKKyAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
ZGZnCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2hlYXAKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vaW50ZXJwcmV0ZXIKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0CisgICAgJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRp
bWUKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKICAgICAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vd3RmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124888</attachid>
            <date>2012-01-31 23:23:21 -0800</date>
            <delta_ts>2012-02-01 15:41:40 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_85.diff</filename>
            <type>text/plain</type>
            <size>491120</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NDMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5OSBA
QAorMjAxMi0wMS0zMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi52c3Byb3BzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9jb3B5LWZpbGVzLmNtZDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogYXNz
ZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmLmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlckNvZGVQdHIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oOiBBZGRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3Rh
dHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkNh
bGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6aXNTZXQpOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6b3BlcmF0b3IhKToKKyAgICAgICAgKENhbGxMaW5rU3RhdHVz
KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpD
b2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6dW5saW5rQ2FsbHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVu
bGlua0luY29taW5nQ2FsbHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAg
ICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
Q29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6Ompp
dENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUlt
cGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVu
aXR5KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChDb2RlQmxvY2spOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpiYXNlbGluZVZlcnNpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpbmtJbmNvbWlu
Z0NhbGwpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpoYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRk
UHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRk
R2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRM
TEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVz
b2x2ZUluZm8pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9mTWV0aG9kQ2FsbExp
bmtJbmZvcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlUHJlZGljdGlv
bkZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rh
a2VTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y291bGRUYWtlU2xvd0Nhc2Up
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZVNwZWNpYWxGYXN0Q2FzZSk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VBbnlTbG93Q2FzZSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YWRkRnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZG9udEpJVEFueXRpbWVTb29uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpqaXRBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0U29vbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGxpbnRFeGVjdXRlQ291bnRlcik6CisgICAgICAgIChQ
cm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKEV2YWxDb2RlQmxvY2spOgorICAgICAgICAoRnVu
Y3Rpb25Db2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgor
ICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1
czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6Ondhc1NlZW5J
bkpJVCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0
cnVjdGlvbi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246Oklu
c3RydWN0aW9uKToKKyAgICAgICAgKEluc3RydWN0aW9uKToKKyAgICAgICAgKCk6CisgICAgICAg
ICogYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaDogQWRkZWQuCisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6TExJbnRDYWxsTGlua0luZm8pOgorICAg
ICAgICAoTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5m
bzo6fkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86
OmlzTGlua2VkKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OnVubGluayk6Cisg
ICAgICAgICogYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlND
OjpNZXRob2RDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUv
T3Bjb2RlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoKToKKyAgICAgICAgKiBieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVz
Ojpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmg6CisgICAg
ICAgIChQdXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpkdW1wc0dlbmVyYXRlZENvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29s
dmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFz
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlz
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENhdGNoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRm
Zy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2Rl
KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKCk6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoKToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAoSGVhcCk6
CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAoSlNDOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgor
ICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJyZW50VlBD
KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAo
SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5o
OgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmlsZSk6CisgICAgICAgICogaml0
L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKiBq
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgor
ICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKToKKyAg
ICAgICAgKEpJVENvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZSk6
CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAgICAgICAqIGppdC9KSVREcml2
ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUpOgorICAgICAgICAo
SlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKiBqaXQvSklU
RXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93KToKKyAgICAgICAgKiBqaXQv
SklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAqIGxs
aW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAg
ICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6
fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChEYXRhKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxMSW50OjpE
YXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZ1bmN0aW9u
RW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFdmFsRW50cnlwb2ludCk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAgICogbGxp
bnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChM
TEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBs
bGludC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxlcik6CisgICAgICAgIChKU0M6
OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cp
OgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmNwcDog
QWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFj
ZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpzaG91bGRK
SVQpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmVudHJ5T1NSKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnJlc29sdmVHbG9iYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0
QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9zdENhbGwpOgorICAgICAgICAo
SlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWNDYWxs
KToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRkZWQuCisgICAgICAgIChKU0Mp
OgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludE9mZnNldHNFeHRyYWN0b3IpOgor
ICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KToKKyAgICAgICAgKG1h
aW4pOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDogQWRkZWQuCisgICAgICAgIChM
TEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RB
cml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZXZhbEVudHJ5
VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6cHJvZ3JhbUVudHJ5VGh1bmtH
ZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5j
cHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQu
CisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12
Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tl
bmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRy
YWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJi
OiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vb3B0LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3BhcnNl
ci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9yZWdpc3RlcnMucmI6IEFkZGVkLgor
ICAgICAgICAqIG9mZmxpbmVhc20vc2VsZl9oYXNoLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZs
aW5lYXNtL3NldHRpbmdzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3RyYW5zZm9y
bS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYucmI6IEFkZGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgICgpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6Cisg
ICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zvcik6CisgICAgICAgIChD
b21tb25TbG93UGF0aHMpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OmpldHRpc29uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFi
bGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6c2FtcGxpbmdE
ZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFs
KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoRXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAoUHJvZ3JhbUV4ZWN1
dGFibGUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1
dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwcmVw
YXJlRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0
aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNDOjpK
U0FjdGl2YXRpb246OnRlYXJPZmYpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxs
Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQ2VsbCk6CisgICAg
ICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNG
dW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbERhdGEuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0dsb2JhbERhdGEpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKCk6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgIChKU0Zp
bmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKToKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNTdHJp
bmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKFR5cGVJbmZvKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6ZGVzY3JpcHRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNWYWx1ZS5oOgorICAgICAgICAoSlNWYWx1ZSk6CisgICAgICAgICgpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTVmFyaWFibGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6Cisg
ICAgICAgIChPcHRpb25zKToKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlv
bnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAoT3B0aW9ucyk6Cisg
ICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAo
U2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoU3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAqIHd0Zi9JbmxpbmVBU00uaDoKKyAgICAg
ICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg6
CisgICAgICAgIChTZW50aW5lbExpbmtlZExpc3QpOgorICAgICAgICAoV1RGOjpTZW50aW5lbExp
bmtlZExpc3Q6OmlzRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChTdHJpbmdJbXBsKToKKyAgICAgICAgKCk6CisKIDIwMTIt
MDEtMzEgIEdlb2ZmcmV5IEdhcmVuICA8Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBTdG9w
IHVzaW5nIC1mb21pdC1mcmFtZS1wb2ludGVyCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAxMDY0MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAgU0VUKEphdmFTY3Jp
cHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2Rl
YnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGlu
dCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3BhcnNlciIKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZSIK
QEAgLTk1LDYgKzk2LDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBpbnRlcnBy
ZXRlci9SZWdpc3RlckZpbGUuY3BwCiAKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAK
KyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKICAgICBqaXQvSklUQXJpdGhtZXRpYzMy
XzY0LmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljLmNwcAogICAgIGppdC9KSVRDYWxsMzJfNjQu
Y3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAxMDY0
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDYgKzU3LDcgQEAgamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlciBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdCBcCisJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50IFwK
IAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyIFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDY0MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQCBq
YXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9T
SDRBc3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVu
dGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBcCkBAIC0x
MDIsNiArMTAzLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENh
bGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGluZUluZm8u
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8u
aCBcCkBAIC0yNzcsNiArMjc5LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Db21wYWN0SklUQ29kZU1hcC5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRB
cml0aG1ldGljLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQu
Y3BwIFwKQEAgLTMwMCw2ICszMDQsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4zMi9zdGRi
b29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4zMi9zdGRpbnQuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggXApAQCAtMzUwLDYgKzM1NSw3
IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fs
bERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggXAor
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBcCkBAIC0zNzgs
NiArMzg0LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRp
b25IYXJuZXNzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5w
cmkJKHJldmlzaW9uIDEwNjQzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAgSU5DTFVERVBBVEggKz0g
XAogICAgICQkU09VUkNFX0RJUi9kZWJ1Z2dlciBcCiAgICAgJCRTT1VSQ0VfRElSL2ludGVycHJl
dGVyIFwKICAgICAkJFNPVVJDRV9ESVIvaml0IFwKKyAgICAkJFNPVVJDRV9ESVIvbGxpbnQgXAog
ICAgICQkU09VUkNFX0RJUi9wYXJzZXIgXAogICAgICQkU09VUkNFX0RJUi9wcm9maWxlciBcCiAg
ICAgJCRTT1VSQ0VfRElSL3J1bnRpbWUgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Rh
cmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJ
KHJldmlzaW9uIDEwNjQzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDYsNiArMTA2LDcgQEAgU09VUkNFUyArPSBcCiAgICAgaW50ZXJw
cmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhl
ZFZNUG9vbC5jcHAgXAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBcCisgICAgaml0
L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKICAgICBqaXQvSklUQXJpdGhtZXRpYy5jcHAgXAog
ICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwKICAgICBqaXQvSklUQ2FsbC5jcHAgXApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwNjQzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzU4LDYgKzE3NTgsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caml0XEhvc3RDYWxsUmV0dXJuVmFs
dWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxqaXRcSklULmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0xODQzLDYgKzE4NDcsMTQg
QEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKKwkJCU5hbWU9ImxsaW50Igor
CQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGxsaW50XExMSW50RGF0YS5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKIAkJCU5hbWU9Imlu
dGVycHJldGVyIgogCQkJPgogCQkJPEZpbGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24u
dnNwcm9wcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMJKHJl
dmlzaW9uIDEwNjQzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwkod29ya2lu
ZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJPFRvb2wKIAkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7Li4v
Li4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL2Rm
Zy87Li4vLi4vaml0LzsuLi8uLi9ydW50aW1lLzsuLi8uLi90b29scy87Li4vLi4vYnl0ZWNvZGUv
Oy4uLy4uL2ludGVycHJldGVyLzsuLi8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fzc2Vt
Ymxlci87Li4vLi4vZGVidWdnZXIvOy4uLy4uL2hlYXAvOyZxdW90OyQoV2ViS2l0TGlicmFyaWVz
RGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHBy
aXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7
JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVv
dDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90Ozsm
cXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OyIKKwkJQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQ
SS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL2RmZy87Li4vLi4vaml0
LzsuLi8uLi9sbGludC87Li4vLi4vcnVudGltZS87Li4vLi4vdG9vbHMvOy4uLy4uL2J5dGVjb2Rl
LzsuLi8uLi9pbnRlcnByZXRlci87Li4vLi4vd3RmLzsuLi8uLi9wcm9maWxlcjsuLi8uLi9hc3Nl
bWJsZXIvOy4uLy4uL2RlYnVnZ2VyLzsuLi8uLi9oZWFwLzsmcXVvdDskKFdlYktpdExpYnJhcmll
c0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxw
cml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlJnF1b3Q7
OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1
b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7
JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDsiCiAJCVBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPSJfX1NURF9DIgogCQlGb3JjZWRJbmNsdWRlRmlsZXM9IklD
VVZlcnNpb24uaCIKIAkvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZpbGVzLmNtZAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3Jl
L2NvcHktZmlsZXMuY21kCShyZXZpc2lvbiAxMDY0MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL2NvcHktZmlsZXMuY21kCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIGZvciAlJWQgaW4gKAogICAgIGRlYnVnZ2Vy
CiAgICAgaW50ZXJwcmV0ZXIKICAgICBqaXQKKyAgICBsbGludAogICAgIHBhcnNlcgogICAgIHBy
b2ZpbGVyCiAgICAgcnVudGltZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDEwNjQzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsMTUgQEAK
IAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwor
CQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLyA9IHsKKwkJCWlz
YSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2
ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhB
Z2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJ
CQkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAq
LywKKwkJCSk7CisJCQluYW1lID0gIkxMSW50IE9mZnNldHMiOworCQkJcHJvZHVjdE5hbWUgPSAi
RGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKIAkJNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCIC8qIERl
cml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKIAkJCWJ1
aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2NUZCM0Y3NzA5RDExRUJEMDBGNDlERUIgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkRlcml2ZWQgU291cmNl
cyIgKi87CkBAIC0xNCw2ICsyMyw5IEBACiAJCQkJNjVGQjNGNjUwOUQxMUU5MTAwRjQ5REVCIC8q
IEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk1RDM1REVFMTBDN0MxNDBCMDA4NjQ4
QjIgLyogR2VuZXJhdGUgRFRyYWNlIGhlYWRlciAqLywKIAkJCSk7CisJCQlkZXBlbmRlbmNpZXMg
PSAoCisJCQkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kg
Ki8sCisJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcHJvZHVjdE5hbWUg
PSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJfTsKQEAgLTQ4LDYgKzYwLDEwIEBACiAJCTBCQUM5NEEw
MTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0MDBD
RjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCQ0Q4MzU3MTQ4NTg0NTIwMEVBMjAwMyAv
KiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEy
OTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6
ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLzsg
fTsKKwkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk2MTRCQ0Y0
NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExM
SW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi87IH07CisJ
CTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRG
IC8qIExMSW50VGh1bmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBNTE0QkNGNTA0
MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E4
MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBF
eHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5m
by5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01
OCw5ICs3NCwxMyBAQAogCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExp
bmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjcxNEJDRjhF
MTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFs
UmVzb2x2ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0
ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29k
ZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwRkM0NTgxNEJEMTVG
MTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENv
bW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTZENzI2MTQy
QzM5QzAwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rv
ci5jcHAgKi87IH07CiAJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjY2MTRC
RTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhlY3V0
aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RDE0QkU3
MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8q
IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVD
b252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjI0MkRBNzEz
RjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRD
IC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU2RjE0NzM4RjMxMDAxMjFFNEYgLyogREZHQ29k
ZUJsb2Nrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU3MDE0NzM4RjM1MDAx
MjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nr
cy5jcHAgKi87IH07CkBAIC03MSw2ICs5MSwxOSBAQAogCQkwRjQzMTczODE0NkJBQzY5MDA3RTM4
OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0
NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwN0Yx
NEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBBMzE0
QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJ
bnRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RjE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJf
RkxBR1MgPSAiLVduby11bnVzZWQtcGFyYW1ldGVyIjsgfTsgfTsKKwkJMEY0NjgwQTUxNEJBN0Y4
RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVy
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
NDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTExNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi87IH07CisJCTBGNDY4MEE4
MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8q
IExMSW50RXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAv
KiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0IxNEJCQjE3
MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExM
SW50T2ZmbGluZUFzbUNvbmZpZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVy
cHJldGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLzsg
fTsKKwkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM4MTRC
QkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcy
IC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLzsgfTsK
KwkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcy
IC8qIExMSW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4
MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLzsgfTsKKwkJ
MEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEQxMTRCQkM1Rjgw
MEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1NUYwRjQxNEQxMDYzOTAwQUM3NjQ5IC8qIEFi
c3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovOyB9OwogCQkw
RjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8q
IEFic3RyYWN0UEMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXpl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RjA4
Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzg3LDcgKzQyMCw3IEBA
CiAJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUUxMTE3RTU3ODEwMERG
NUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlC
RTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87IH07CiAJCTg2QkIwOUMxMTM4
RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRj
aC5oICovOyB9OwotCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5
MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyB9OworCQk4NkMzNkVFQTBF
RTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNy
b0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERDEx
QTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9OwogCQk4NkM1NjhF
MTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAg
LyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdG
MCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICov
OyB9OwpAQCAtNzU0LDYgKzc4NywyMCBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTBGNDY4MEIx
MTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2Eg
PSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZF
ODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOwor
CQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzI7CisJCQly
ZW1vdGVJbmZvID0gIkxMSW50IE9mZnNldHMiOworCQl9OworCQkwRjQ2ODBCMzE0QkE4MjE0MDBC
RkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFp
bmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFB
QzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUds
b2JhbElEU3RyaW5nID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9
IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJMTQxMjE0QkUwQTQ5MTkwRTAwNDgw
MjU1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5l
ckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMw
NyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTc5OSw2ICs4NDYsMTUgQEAKIC8qIEVuZCBQQlhD
b250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxl
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEvOwor
CQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKIAkJNURCQjE1MTExMzFEMEIx
MzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb3B5
RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7CkBAIC04MzksNiArODk1
LDEwIEBACiAJCTBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZl
cmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFJlc3RyaWN0
aW9uVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJDRDgzNTQxNDg1
ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZW1wb3JhcnlDaGFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9p
bnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RW50cnlw
b2ludHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5
cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RW50cnlwb2lu
dHMuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50VGh1bmtzLmNwcDsgcGF0
aCA9IGxsaW50L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50VGh1bmtzLmg7IHBhdGggPSBsbGludC9MTEludFRodW5r
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBNTE0QkNGNTA0MDA4ODVC
NEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVR5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTgxNEJDRjU1RTAwODg1
QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhh
bmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0FBMTRCQ0Y1
QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTg0OSw5ICs5MDksMTMgQEAKIAkJMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8q
IE1ldGhvZENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZXRob2RDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgz
QjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbFJlc29sdmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0
VG9CeXRlY29kZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxs
UmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRDYWxsTGlua0luZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1v
blNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25TbG93
UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNkQ3MjQxNDJDMzlBMjAw
Q0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIxQzI2
NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpJVERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIx
QzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVj
dXRpb25IYXJuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGlv
bkhhcm5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0UxNEJFQUE4
MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQnl0ZWNvZGVDb252ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrUmVmZXJlbmNlSGFydmVz
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZEMTQ3MzhGMkUwMDEy
MUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC04NjIsNiArOTI2LDIwIEBACiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAv
KiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlz
dGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDdGMTRC
QTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9m
ZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsg
cGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEV4Y2VwdGlv
bnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuaDsg
cGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50SGVscGVycy5jcHA7IHBhdGggPSBs
bGludC9MTEludEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IExMSW50SGVscGVycy5oOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4
MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBMTEludENvbW1vbi5oOyBwYXRoID0gbGxpbnQvTExJbnRDb21tb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8q
IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMTEludE9mZmxpbmVBc21Db25maWcuaDsgcGF0aCA9IGxsaW50L0xMSW50T2ZmbGluZUFzbUNv
bmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNzE0QkJCMTY5MDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmNwcDsgcGF0aCA9IGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBD
ODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmg7IHBhdGggPSBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4
MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTExJbnREYXRhLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3
MiAvKiBMTEludERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRE
YXRhLmg7IHBhdGggPSBsbGludC9MTEludERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQxMTRCQkM1RjgwMEJG
RTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RQQy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0UEMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5dGVD
b2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNvZGVD
YWNoZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVDb2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE1ODcsNiArMTY2NSwxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ug
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICov
CisJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNh
ID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFtZXdv
cmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTY0NSw2ICsxNzMwLDcgQEAKIAkJCQkxNDEyMTEy
MDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBC
QUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVz
dFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjc1LDYgKzE3NjEsNyBAQAogCQkJCUY1QzI5MEU2MDI4NEY5
OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4MDZB
NDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBG
NyAvKiBjb25maWcuaCAqLywKKwkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQg
Ki8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0Ix
MjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUw
MEYxRjY4MSAvKiBieXRlY29kZSAqLywKQEAgLTE3MTQsNiArMTgwMSwyOCBAQAogCQkJdGFiV2lk
dGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUy
NzIgLyogbGxpbnQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLywK
KwkJCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovLAor
CQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8sCisJCQkJ
MEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8sCisJCQkJMEY0Njgw
Q0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0YxNEJC
QjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovLAorCQkJCTBGNDY4MEM1MTRCQkIxNjkwMEJG
RTI3MiAvKiBMTEludENvbW1vbi5oICovLAorCQkJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAv
KiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLywKKwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUy
NzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8sCisJCQkJMEY0NjgwQzgxNEJCQjE2OTAw
QkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8sCisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50SGVscGVycy5oICovLAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGludDsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3MjYwMDQ4
MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC0xNzQ4LDYgKzE4NTcsOCBAQAogCQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkgLyogaml0
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2ODBE
MDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJMEY0
NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJCQkw
RjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJMEY0
NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4MkUz
NzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTIxNzUsNiAr
MjI4Niw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3OTE0QkU3Mjcz
MDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovLAorCQkJCTBGMjFDMjdBMTRC
RTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8sCiAJCQkJMEYxNUYxNUQxNEI3
QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovLAogCQkJCUJDRjYwNTExMEUyMDNF
RjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2
NEQgLyogQXJnTGlzdC5oICovLApAQCAtMjU0Nyw2ICsyNjYwLDggQEAKIAkJOTY5QTA3OEYwRUQx
RDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252
ZW50aW9ucy5oICovLAorCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxM
aW5rSW5mby5oICovLAogCQkJCTBGOTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0
YXR1cy5jcHAgKi8sCiAJCQkJMEY5MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3Rh
dHVzLmggKi8sCiAJCQkJMEY5MzMyOTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMu
Y3BwICovLApAQCAtMzA5Nyw3ICszMjEyLDE2IEBACiAJCQkJODY3MDRCOEExMkRCQTMzNzAwQTlG
RTdCIC8qIFlhcnJQYXR0ZXJuLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI0MzEyREI4QTgx
MDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVG
MTVGMTRCN0E3M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRp
b25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJ
bnRDb21tb24uaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAv
KiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENEMTRC
QkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlw
b2ludHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBM
TEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRG
IC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVC
NEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIw
MDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMDYs
NyArMzIzMCwxMSBAQAogCQkJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxs
TGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAv
KiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJDRjk1
RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8u
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2
ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVj
dXRpb25IYXJuZXNzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2
NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMy
N0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICov
LAogCQkJCTBGN0IyOTRBMTRDM0NEMjkwMDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTBGN0IyOTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRDMTRDM0NENDMwMDdDM0RCMSAvKiBERkdC
eXRlQ29kZUNhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMjUsNiArMzI1MywyNCBAQAogLyog
RW5kIFBCWEhlYWRlcnNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYTmF0aXZl
VGFyZ2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50
T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1
aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4
dHJhY3RvciIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODA4QjE0QkE3RTVFMDBC
RkUyNzIgLyogU291cmNlcyAqLywKKwkJCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJh
bWV3b3JrcyAqLywKKwkJCQkwRjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICov
LAorCQkJKTsKKwkJCWJ1aWxkUnVsZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAor
CQkJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAor
CQkJKTsKKwkJCW5hbWUgPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0TmFt
ZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAwRjQ2
ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJ
cHJvZHVjdFR5cGUgPSAiY29tLmFwcGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKIAkJMTQx
MjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRp
dmVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQxMjExMzkwQTQ4Nzk4NDAw
NDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJt
aW5pZG9tIiAqLzsKQEAgLTMyNTEsMTEgKzMzOTcsMjkgQEAKIAkJCQkxNEJENTlCRTBBM0U4Rjkw
MDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk5MzJGNUJEQTA4MjJBMUM3MDA3MzY5NzUgLyog
anNjICovLAogCQkJCTY1MTEyMkY3MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAor
CQkJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3Ig
Ki8sCisJCQkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8sCiAJ
CQkpOwogCQl9OwogLyogRW5kIFBCWFByb2plY3Qgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhT
aGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUy
NzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU2hlbGxT
Y3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZp
bGVzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkJIiQoU1JDUk9PVCkvbGxpbnQv
TG93TGV2ZWxBc3NlbWJsZXIuYXNtIiwKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIERlcml2
ZWQgU291cmNlcyI7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNUU19E
SVIpL0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmgiLAorCQkJKTsKKwkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9z
aDsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xM
SW50T2Zmc2V0cy9cIlxuXG4vdXNyL2Jpbi9lbnYgcnVieSBcIiR7U1JDUk9PVH0vb2ZmbGluZWFz
bS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiXCIgXCIke1NSQ1JPT1R9L2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtXCIgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRz
L0xMSW50RGVzaXJlZE9mZnNldHMuaFwiXG4iOworCQl9OwogCQkzNzEzRjAxNDE0MjkwNTI0MDAz
NjM4N0YgLyogQ2hlY2sgRm9yIEluYXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xhc3MgTmFtZXMg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzM2MSw3ICszNTI1LDcgQEAKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4v
c2g7Ci0JCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9kb2NzXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNU
U19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlXCJcblxuL2Jpbi9sbiAtc2ZoIFwi
JHtTUkNST09UfVwiIEphdmFTY3JpcHRDb3JlXG5leHBvcnQgSmF2YVNjcmlwdENvcmU9XCJKYXZh
U2NyaXB0Q29yZVwiXG5leHBvcnQgQlVJTFRfUFJPRFVDVFNfRElSPVwiLi4vLi5cIlxuXG5tYWtl
IC0tbm8tYnVpbHRpbi1ydWxlcyAtZiBcIkphdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2VcIiAtaiBgL3Vzci9zYmluL3N5c2N0bCAtbiBody5uY3B1YFxuIjsKKwkJCXNoZWxsU2NyaXB0
ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFT
Y3JpcHRDb3JlL2RvY3NcIlxuY2QgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmVcIlxuXG4vYmluL2xuIC1zZmggXCIke1NSQ1JPT1R9XCIgSmF2YVNj
cmlwdENvcmVcbmV4cG9ydCBKYXZhU2NyaXB0Q29yZT1cIkphdmFTY3JpcHRDb3JlXCJcbmV4cG9y
dCBCVUlMVF9QUk9EVUNUU19ESVI9XCIuLi8uLlwiXG5cbm1ha2UgLS1uby1idWlsdGluLXJ1bGVz
IC1mIFwiSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNyL3NiaW4v
c3lzY3RsIC1uIGh3Lm5jcHVgXG5cbi91c3IvYmluL2VudiBydWJ5IEphdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYXNtLnJiIEphdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
YXNtICR7QlVJTFRfUFJPRFVDVFNfRElSfS9KU0NMTEludE9mZnNldHNFeHRyYWN0b3IgTExJbnRB
c3NlbWJseS5oXG4iOwogCQl9OwogCQk5MzE5NTg2QjA5RDlGOTFBMDBBNTZGRDQgLyogQ2hlY2sg
Rm9yIEdsb2JhbCBJbml0aWFsaXplcnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1
aWxkUGhhc2U7CkBAIC0zMzk2LDYgKzM1NjAsMTQgQEAKIC8qIEVuZCBQQlhTaGVsbFNjcmlwdEJ1
aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0
aW9uICovCisJCTBGNDY4MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovID0geworCQkJ
aXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUQwQTQ4NzkzQzAw
NDgwMjU1IC8qIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsK
IAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zNjUzLDcgKzM4MjUsMTQgQEAK
IAkJCQk4NjcwNEI4NjEyREJBMzM3MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk4NjcwNEI4OTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODY3MDRCNDIxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVj
a2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBM
TEludEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZF
MjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODA4MzE0
QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkw
RjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJl
dHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0
RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlDMTRC
Q0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBC
ODNCMDE0QkNGNzE2MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMEI4M0I0MTRCQ0Y4NjAwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRjY5RTg2QzMxNEM2RTU1MTAwMkMyQzYyIC8qIE51bWJlck9mQ29y
ZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zNjc4LDYgKzM4NTcsMTYgQEAKIC8qIEVuZCBQQlhT
b3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVu
Y3kgc2VjdGlvbiAqLworCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVw
ZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQg
PSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLzsKKwkJCXRhcmdl
dFByb3h5ID0gMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLzsKKwkJfTsKKwkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0g
MEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsK
KwkJCXRhcmdldFByb3h5ID0gMEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRhaW5l
ckl0ZW1Qcm94eSAqLzsKKwkJfTsKIAkJMTQxMjE0QkYwQTQ5MTkwRTAwNDgwMjU1IC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwogCQkJ
dGFyZ2V0ID0gMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi87CkBAIC0zNzEx
LDYgKzM5MDAsMTUwIEBACiAvKiBFbmQgUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMEY0NjgwOTYxNEJB
N0U1RTAwQkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9
IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9Q
SEFTRV9TVFJJUCA9IE5POworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJ
CQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElP
TlMgPSBZRVM7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBS
T0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJIkRFQlVHPTEiLAorCQkJCQkiJChpbmhlcml0
ZWQpIiwKKwkJCQkpOworCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gTk87CisJCQkJ
R0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdD
Q19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRf
TUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBF
ID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVS
X1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChC
VUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hf
UEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJ
CQkJT05MWV9BQ1RJVkVfQVJDSCA9IE5POworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9O
QU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFU
SFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9T
RUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MDk3
MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9Q
QVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJ
Q09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAi
ZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5Owor
CQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0g
Y29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18z
Ml9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9U
WVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlH
Q0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNb
YXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNf
RElSKS9MTEludE9mZnNldHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1B
Q09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IE5P
OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1h
Y29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9E
VUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJ
CQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8qIFBy
b2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNI
UyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZ
RVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJ
CQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNf
RVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMu
bGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBO
TzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0ND
X1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklB
QkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQku
LAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwK
KwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExP
WU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gTk87CisJCQkJUFJP
RFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJ
CVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
TExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQ
cm9maWxpbmc7CisJCX07CisJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9u
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQo
QVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJ
CQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0Nf
Q19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJ
T05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNs
YW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJ
CUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9B
Qk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZ
RVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJ
CWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQki
JChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9U
QVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJ
U0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3Ug
JChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUQxNEJBN0ZE
OTAwQkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJj
ZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODBBRTE0QkE3
RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBT
b3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODBB
RjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJE
ZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsK
KwkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVD
VF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVj
dGlvbjsKKwkJfTsKIAkJMTQxMjExM0EwQTQ4Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovID0gewog
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewpAQCAt
Mzk1Miw2ICs0Mjg1LDI4IEBACiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOUEx
NEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZl
VGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovID0geworCQkJaXNhID0gWENDb25m
aWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwOTYx
NEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3
MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxp
bmcgKi8sCisJCQkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJ
CQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUMxNEJBN0ZEOTAw
QkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0
ICJMTEludCBPZmZzZXRzIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJ
CQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAv
KiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLywK
KwkJCQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4
MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRD
b25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9
IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi8gPSB7CiAJ
CQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShy
ZXZpc2lvbiAxMDY0MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtC
dWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2RlZmluZSBHTE9CQUxf
VEhVTktfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0x
KSkKICNkZWZpbmUgUkVHRVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KC0yKSkKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+CisjaW5j
bHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAog
bmFtZXNwYWNlIEpTQyB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQ29kZVJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHJldmlzaW9uIDEwNjQzMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI3Myw2ICsyNzMsMTQgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CisgICAgCisgICAg
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3Mo
dm9pZCogdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKHZh
bHVlKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdDsKKyAgICAgICAgcmVz
dWx0Lm1fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAKICAg
ICBleHBsaWNpdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoUmV0dXJuQWRkcmVzc1B0ciByYSkKICAg
ICAgICAgOiBtX3ZhbHVlKHJhLnZhbHVlKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQnl0ZWNvZGVDb252ZW50aW9uc19oCisjZGVmaW5l
IEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCisvLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0
ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVp
ciByYW5nZXM6CisvLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNl
cyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFt
ZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgorLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZv
cndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMg
YW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgorLy8gICAgICAw
eDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNw
ZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgorc3Rh
dGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7CisK
KyNlbmRpZiAvLyBCeXRlY29kZUNvbnZlbnRpb25zX2gKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDY0
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNyArMjcsNDAgQEAKICNpbmNsdWRlICJDYWxsTGlua1N0
YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlu
a0luZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3Rh
dHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAg
VU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpICsgYnl0ZWNvZGVJbmRleDsKKyAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
ID0gaW5zdHJ1Y3Rpb25bNF0udS5jYWxsTGlua0luZm87CisgICAgCisgICAgcmV0dXJuIENhbGxM
aW5rU3RhdHVzKGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCksIGZhbHNlKTsKKyNl
bHNlCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKKyNlbmRpZgorfQorCiBD
YWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2Zp
bGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHBy
b2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFC
TEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgcmV0dXJuIENhbGxMaW5rU3Rh
dHVzKAotICAgICAgICBwcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRl
eCkubGFzdFNlZW5DYWxsZWUuZ2V0KCksCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmNvdWxkVGFr
ZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKTsKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJl
ck9mQ2FsbExpbmtJbmZvcygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9m
aWxlZEJsb2NrLCBieXRlY29kZUluZGV4KTsKKyAgICAKKyAgICBpZiAocHJvZmlsZWRCbG9jay0+
Y291bGRUYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCisgICAgICAgIHJldHVybiBDYWxsTGlu
a1N0YXR1cygwLCB0cnVlKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBwcm9maWxl
ZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0
KCk7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHBy
b2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIHJldHVybiBDYWxsTGlua1N0
YXR1cyh0YXJnZXQsIGZhbHNlKTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAs
IGZhbHNlKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlzaW9uIDEwNjQzMSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nywx
NSArNDcsMTcgQEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21w
dXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAgIGJv
b2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbFRhcmdldDsgfQorICAgIGJvb2wgaXNT
ZXQoKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbFRhcmdldCB8fCBtX2NvdWxkVGFrZVNsb3dQYXRo
OyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsVGFy
Z2V0OyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQog
ICAgIAogICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvdWxk
VGFrZVNsb3dQYXRoOyB9CiAgICAgCiAgICAgSlNGdW5jdGlvbiogY2FsbFRhcmdldCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgQ2Fs
bExpbmtTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29k
ZUluZGV4KTsKKyAgICAKICAgICBKU0Z1bmN0aW9uKiBtX2NhbGxUYXJnZXQ7CiAgICAgYm9vbCBt
X2NvdWxkVGFrZVNsb3dQYXRoOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMDY0MzEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiAr
NDIsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0YXRpY1Njb3Bl
T2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJw
cmV0ZXIuaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiVVN0cmluZ0Nv
bmNhdGVuYXRlLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTU5LDggKzYwLDYgQEAgbmFtZXNw
YWNlIEpTQyB7CiB1c2luZyBuYW1lc3BhY2UgREZHOwogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChO
REVCVUcpIHx8IEVOQUJMRShPUENPREVfU0FNUExJTkcpCi0KIHN0YXRpYyBVU3RyaW5nIGVzY2Fw
ZVF1b3Rlcyhjb25zdCBVU3RyaW5nJiBzdHIpCiB7CiAgICAgVVN0cmluZyByZXN1bHQgPSBzdHI7
CkBAIC0zNTgsMTAgKzM1NywxMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4
ZWMpIGNvCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7
IGkgKz0gb3Bjb2RlTGVuZ3Roc1tleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0
cnVjdGlvbnMoKVtpXS51Lm9wY29kZSldKQogICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7CiAK
LSAgICBwcmludGYoIiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJh
bWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKVxuXG4iLAorICAgIHByaW50ZigiJWx1IG1f
aW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVl
IHJlZ2lzdGVyKHMpOyAlZCB2YXJpYWJsZShzKVxuXG4iLAogICAgICAgICBzdGF0aWNfY2FzdDx1
bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbkNvdW50KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5z
aWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSks
Ci0gICAgICAgIHRoaXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMpOwor
ICAgICAgICB0aGlzLCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX251
bVZhcnMpOwogCiAgICAgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4g
PSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IGluc3RydWN0aW9ucygpLmVuZCgpOwpAQCAtODk4LDYgKzg5NywxNCBA
QCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMs
IGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9ub3JtYWw6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAg
ICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMi
KTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI4Niw4ICsxMjkzLDYgQEAgdm9pZCBDb2RlQmxv
Y2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgIH0KIH0KIAotI2VuZGlmIC8vICFkZWZp
bmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQogI2lmIERVTVBfQ09ERV9C
TE9DS19TVEFUSVNUSUNTCiBzdGF0aWMgSGFzaFNldDxDb2RlQmxvY2sqPiBsaXZlQ29kZUJsb2Nr
U2V0OwogI2VuZGlmCkBAIC0xNDU3LDYgKzE0NjIsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhD
b3B5UGFyc2VkQmxvY2tUYWcsCiB7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1QYXJh
bWV0ZXJzKCkpOwogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1V
cCgpOwogICAgIAogICAgIGlmIChvdGhlci5tX3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0ZVJh
cmVEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTE1MDUsNiArMTUxMSw3IEBAIENvZGVCbG9jazo6Q29k
ZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIAog
ICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogCiAjaWYg
RFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJQ1MKICAgICBsaXZlQ29kZUJsb2NrU2V0LmFkZCh0aGlz
KTsKQEAgLTE1MjIsNyArMTUyOSwxMSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2lmIEVO
QUJMRShWRVJCT1NFX1ZBTFVFX1BST0ZJTEUpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNl
bmRpZgotICAgIAorCisjaWYgRU5BQkxFKExMSU5UKSAgICAKKyAgICB3aGlsZSAobV9pbmNvbWlu
Z0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAg
ICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7CisjZW5kaWYgLy8gRU5B
QkxFKExMSU5UKQogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gV2UgbWF5IGJlIGRlc3Ryb3llZCBi
ZWZvcmUgYW55IENvZGVCbG9ja3MgdGhhdCByZWZlciB0byB1cyBhcmUgZGVzdHJveWVkLgogICAg
IC8vIENvbnNpZGVyIHRoYXQgdHdvIENvZGVCbG9ja3MgYmVjb21lIHVucmVhY2hhYmxlIGF0IHRo
ZSBzYW1lIHRpbWUuIFRoZXJlCkBAIC0xNzM0LDggKzE3NDUsNjkgQEAgdm9pZCBDb2RlQmxvY2s6
OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2
ZXJib3NlVW5saW5raW5nID0gZmFsc2U7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJM
RShKSVQpCiAgICAgCisjaWYgRU5BQkxFKExMSU5UKQorICAgIEludGVycHJldGVyKiBpbnRlcnBy
ZXRlciA9IG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXI7CisgICAgLy8gaW50ZXJwcmV0ZXItPmVu
YWJsZWQoKSByZXR1cm5zIHRydWUgaWYgdGhlIG9sZCBDKysgaW50ZXJwcmV0ZXIgaXMgZW5hYmxl
ZC4gSWYgdGhhdCdzIGVuYWJsZWQKKyAgICAvLyB0aGVuIHdlJ3JlIG5vdCB1c2luZyBMTEludC4K
KyAgICBpZiAoIWludGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qg
c2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNp
emU7ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmlu
c3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAg
ICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5v
cGNvZGUpKSB7CisgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAgICAgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICAgICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bNF0u
dS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1
cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmlu
ZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3Mgd2l0aCBzdHJ1Y3R1cmUgJXAuXG4iLCBjdXJJbnN0cnVj
dGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rp
b25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlv
bls1XS51Lm9wZXJhbmQgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAgICAgICBpZiAoSGVhcDo6
aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAg
ICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJl
LmdldCgpKQorICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVj
dGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpIHsKKyAgICAgICAgICAg
ICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBwdXQgdHJhbnNpdGlvbiB3aXRoIHN0cnVj
dHVyZXMgJXAgLT4gJXAsIGNoYWluICVwLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgp
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0u
dS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls2XS51
LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzddLnUu
c3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvblsw
XS51Lm9wY29kZSA9IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
Zm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1
Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXTsK
KyAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rp
b25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsCisgICAgICAgICAgICAgICAgICAg
fHwgaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9
PSBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKKyAgICAgICAgICAgIGlmICghY3VySW5zdHJ1
Y3Rpb25bM10udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bM10u
dS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAg
ICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmlu
ZyBMTEludCBnbG9iYWwgcmVzb2x2ZSBjYWNoZSB3aXRoIHN0cnVjdHVyZSAlcC5cbiIsIGN1cklu
c3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgICAgIGN1ckluc3RydWN0
aW9uWzNdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0
XS51Lm9wZXJhbmQgPSAwOworICAgICAgICB9CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYg
KG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhlYXA6OmlzTWFya2VkKG1f
bGxpbnRDYWxsTGlua0luZm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKKyAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmlu
ZyBMTEludCBjYWxsIGZyb20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBtX2xsaW50
Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlm
ICghIW1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlICYmICFIZWFwOjppc01h
cmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5nZXQoKSkpCisgICAg
ICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUuY2xlYXIo
KTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKICNpZiBFTkFC
TEUoREZHX0pJVCkKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2UgYXJlLCB0
aGVuIGpldHRpc29uLgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2ZW5lc3NE
dXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7CkBAIC0x
ODU2LDEwICsxOTI4LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVm
ZXIKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7ICsr
aSkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAjaWYgRU5B
QkxFKElOVEVSUFJFVEVSKQotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0
U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uc1tpXV0pOwotICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1
Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlv
bnNbaV1dKTsKKyAgICBpZiAobV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7
CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25z
LnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVy
ZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNb
aV1dKTsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0
aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1
Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlv
bnNbaV1dKTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTg2Nyw4
ICsxOTQxLDkgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgogICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhhdCBleGVjdXRhYmxlcyB0aGF0IHdlIGhhdmUgaW5saW5lZCBk
b24ndCBkaWUuCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGV5IHdvdWxkIGhhdmUgb3RoZXJ3aXNl
IGRpZWQsIHdlIHNob3VsZCBwcm9iYWJseSB0cmlnZ2VyIHJlY29tcGlsYXRpb24uCiAgICAgICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5saW5lQ2FsbEZyYW1lcygpLnNpemUoKTsgKytpKSB7
Ci0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZyYW1lcygpW2ldLmV4ZWN1
dGFibGUpOwotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZXMoKVtp
XS5jYWxsZWUpOworICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lJiBpbmxpbmVDYWxsRnJhbWUg
PSBpbmxpbmVDYWxsRnJhbWVzKClbaV07CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaW5s
aW5lQ2FsbEZyYW1lLmV4ZWN1dGFibGUpOworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlu
bGluZUNhbGxGcmFtZS5jYWxsZWUpOwogICAgICAgICB9CiAgICAgfQogI2VuZGlmCkBAIC0yMDY4
LDYgKzIxNDMsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIHsKICAgICBpZiAo
ISFtX2FsdGVybmF0aXZlKQogICAgICAgICBtX2FsdGVybmF0aXZlLT51bmxpbmtDYWxscygpOwor
I2lmIEVOQUJMRShMTElOVCkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGxpbnRDYWxs
TGlua0luZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtX2xsaW50Q2FsbExpbmtJbmZv
c1tpXS5pc0xpbmtlZCgpKQorICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0udW5s
aW5rKCk7CisgICAgfQorI2VuZGlmCiAgICAgaWYgKCEobV9jYWxsTGlua0luZm9zLnNpemUoKSB8
fCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlm
ICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKQEAgLTIwODIsMTAgKzIxNjMsMzkgQEAgdm9p
ZCBDb2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIAogdm9pZCBDb2RlQmxvY2s6OnVubGlua0luY29t
aW5nQ2FsbHMoKQogeworI2lmIEVOQUJMRShMTElOVCkKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xM
SW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAg
bV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+dW5saW5rKCk7CisjZW5kaWYKKyAgICBpZiAo
bV9pbmNvbWluZ0NhbGxzLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwogICAgIFJlcGF0Y2hC
dWZmZXIgcmVwYXRjaEJ1ZmZlcih0aGlzKTsKICAgICB3aGlsZSAobV9pbmNvbWluZ0NhbGxzLmJl
Z2luKCkgIT0gbV9pbmNvbWluZ0NhbGxzLmVuZCgpKQogICAgICAgICBtX2luY29taW5nQ2FsbHMu
YmVnaW4oKS0+dW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogfQorCit1bnNp
Z25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgUmV0dXJuQWRk
cmVzc1B0ciByZXR1cm5BZGRyZXNzKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAocmV0
dXJuQWRkcmVzcy52YWx1ZSgpID49IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2JlZ2luKQor
ICAgICAgICAmJiByZXR1cm5BZGRyZXNzLnZhbHVlKCkgPD0gYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfZW5kKSkgeworICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkpOworICAgICAg
ICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChKSVRD
b2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKKyAgICAgICAgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uID0gZXhlYy0+Y3VycmVudFZQQygpOworICAgICAgICBBU1NFUlQoaW5zdHJ1
Y3Rpb24pOworICAgICAgICByZXR1cm4gYnl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb24pOworICAg
IH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOworI2VuZGlmCisgICAgaWYgKCFtX3Jh
cmVEYXRhKQorICAgICAgICByZXR1cm4gMTsKKyAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybklu
ZGV4VmVjdG9yOworICAgIGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4g
MTsKKyAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zm
c2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwg
Y2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52
YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OworfQogI2VuZGlmCiAKIHZvaWQgQ29kZUJsb2NrOjpj
bGVhckV2YWxDYWNoZSgpCkBAIC0yMTgxLDI0ICsyMjkxLDQ1IEBAIGJvb2wgRnVuY3Rpb25Db2Rl
QmxvY2s6OmNhbkNvbXBpbGVXaXRoREYKIAogdm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqZXR0aXNv
bigpCiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7
CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAg
ICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxQcm9ncmFt
RXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpn
bG9iYWxEYXRhKCkpOwogfQogCiB2b2lkIEV2YWxDb2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAg
ICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NF
UlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0
aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4o
b3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEoKSk7
CiB9CiAKIHZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQo
Z2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29k
ZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJl
cGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVy
RXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yKCpnbG9iYWxEYXRhKCksIG1f
aXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7CiB9CisKK3Zv
aWQgUHJvZ3JhbUNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJU
aHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0
YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21w
aWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBs
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2Vt
ZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVyRXhl
Y3V0YWJsZSgpKS0+aml0Q29tcGlsZShnbG9iYWxEYXRhKTsKK30KKwordm9pZCBGdW5jdGlvbkNv
ZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAg
IEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAg
QVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZUZvcihnbG9i
YWxEYXRhLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwp
OworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC0yMzAxLDYgKzI0
MzIsMTggQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBWYWx1ZVByb2ZpbGVzKCkKIH0KICNlbmRpZgog
Cit2b2lkIENvZGVCbG9jazo6aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKQor
eworI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKSAmJiAhRU5BQkxFKExMSU5UKQorICAgIGlm
IChCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICBpZiAoISFhbHRlcm5hdGl2ZSgpKQorICAgICAgICBkaXNjYXJkQnl0ZWNvZGUoKTsK
KyAgICBlbHNlCisgICAgICAgIGRpc2NhcmRCeXRlY29kZUxhdGVyKCk7CisjZW5kaWYKK30KKwog
I2lmbmRlZiBOREVCVUcKIGJvb2wgQ29kZUJsb2NrOjp1c2VzT3Bjb2RlKE9wY29kZUlEIG9wY29k
ZUlEKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2su
aAkocmV2aXNpb24gMTA2NDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nv
ZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaWZuZGVmIENvZGVC
bG9ja19oCiAjZGVmaW5lIENvZGVCbG9ja19oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRp
b25zLmgiCiAjaW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVybk9m
ZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCkBAIC01MCw2
ICs1MSw3IEBACiAjaW5jbHVkZSAiSklUV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAiSlNHbG9i
YWxPYmplY3QuaCIKICNpbmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludENhbGxM
aW5rSW5mby5oIgogI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNp
bmNsdWRlICJQcmVkaWN0aW9uVHJhY2tlci5oIgpAQCAtNjUsMTYgKzY3LDExIEBACiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKLS8vIFJl
Z2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50
IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKLS8vICAgICAgMHg4MDAwMDAwMC0w
eEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFy
ZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCi0vLyAgICAg
IDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJh
bWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rp
b24ncyBjYWxsZnJhbWUuCi0vLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUg
aW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBw
b29sIG9uIHRoZSBDb2RlQmxvY2suCi1zdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4ID0gMHg0MDAwMDAwMDsKLQogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBF
eGVjU3RhdGU7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBFeGVjU3RhdGU7
CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgaW5saW5lIGludCB1bm1v
ZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIoaW50IGFyZ3VtZW50c1JlZ2lzdGVyKSB7IHJldHVybiBh
cmd1bWVudHNSZWdpc3RlciAtIDE7IH0KIApAQCAtODMsNiArODAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBjbGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXplciwg
cHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gQ29weVBh
cnNlZEJsb2NrVGFnIHsgQ29weVBhcnNlZEJsb2NrIH07CiAgICAgcHJvdGVjdGVkOgpAQCAtMTIz
LDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgd2hpbGUgKHJlc3VsdC0+
YWx0ZXJuYXRpdmUoKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQtPmFsdGVybmF0
aXZlKCk7CiAgICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAgICAgICAgIEFTU0VSVChy
ZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAg
ICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMTM0LDEx
ICsxMzIsOSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBzdGF0aWMgdm9pZCBkdW1wU3Rh
dGlzdGljcygpOwogCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEVfT1BDT0RFX1NBTVBM
SU5HCiAgICAgICAgIHZvaWQgZHVtcChFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdm9pZCBw
cmludFN0cnVjdHVyZXMoY29uc3QgSW5zdHJ1Y3Rpb24qKSBjb25zdDsKICAgICAgICAgdm9pZCBw
cmludFN0cnVjdHVyZShjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBJbnN0cnVjdGlvbiosIGludCBv
cGVyYW5kKSBjb25zdDsKLSNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNTdHJpY3RNb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9pc1N0cmljdE1vZGU7IH0KIApAQCAtMTk0LDE1ICsxOTAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxNZXRob2RDYWxs
TGlua0luZm8sIHVuc2lnbmVkLCBnZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUluZGV4Piht
X21ldGhvZENhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUo
KSwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAg
ICAgICAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5k
aWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOwotICAgICAgICAgICAg
aWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAg
ICAgICAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zm
c2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwg
Y2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52
YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OwotICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSosIFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAgICAgIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Rm9yQ2FsbEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAg
ICAgIHsKQEAgLTIyMywxMSArMjExLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAg
ICAgICAgICAgICBtX2luY29taW5nQ2FsbHMucHVzaChpbmNvbWluZyk7CiAgICAgICAgIH0KKyNp
ZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHZvaWQgbGlua0luY29taW5nQ2FsbChMTEludENhbGxM
aW5rSW5mbyogaW5jb21pbmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faW5jb21pbmdMTElu
dENhbGxzLnB1c2goaW5jb21pbmcpOworICAgICAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5U
KQogICAgICAgICAKICAgICAgICAgdm9pZCB1bmxpbmtJbmNvbWluZ0NhbGxzKCk7Ci0jZW5kaWYK
KyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxF
KERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgdm9pZCBzZXRKSVRDb2RlTWFwKFBh
c3NPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IGppdENvZGVNYXApCiAgICAgICAgIHsKICAgICAg
ICAgICAgIG1faml0Q29kZU1hcCA9IGppdENvZGVNYXA7CkBAIC0yMzYsNyArMjMwLDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2ppdENvZGVNYXAu
Z2V0KCk7CiAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAKKyNpZiBFTkFCTEUoREZHX0pJVCkK
ICAgICAgICAgdm9pZCBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKQogICAgICAgICB7CiAgICAg
ICAgICAgICBpZiAoISFtX2RmZ0RhdGEpCkBAIC0zMzUsMTIgKzMzMSwxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAg
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQog
ICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0cnVjdGlv
bnMoKS5iZWdpbigpICYmIHJldHVybkFkZHJlc3MgPCBpbnN0cnVjdGlvbnMoKS5lbmQoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNz
KSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgICAgIH0KLSNlbmRpZgogCiAgICAgICAg
IHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1
bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1
bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgeyByZXR1
cm4gbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KQEAgLTM1NCwxNyArMzQ5LDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIG1fc2hvdWxkRGlzY2FyZEJ5dGVj
b2RlID0gdHJ1ZTsKICAgICAgICAgfQotICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2Fy
ZGluZ09wcG9ydHVuaXR5KCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCEhYWx0ZXJuYXRp
dmUoKSkKLSAgICAgICAgICAgICAgICBkaXNjYXJkQnl0ZWNvZGUoKTsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBkaXNjYXJkQnl0ZWNvZGVMYXRlcigpOwotICAgICAgICB9Cisg
ICAgICAgIHZvaWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICAg
ICAgCi0jaWZuZGVmIE5ERUJVRwogICAgICAgICBib29sIHVzZXNPcGNvZGUoT3Bjb2RlSUQpOwot
I2VuZGlmCiAKICAgICAgICAgdW5zaWduZWQgaW5zdHJ1Y3Rpb25Db3VudCgpIHsgcmV0dXJuIG1f
aW5zdHJ1Y3Rpb25Db3VudDsgfQogICAgICAgICB2b2lkIHNldEluc3RydWN0aW9uQ291bnQodW5z
aWduZWQgaW5zdHJ1Y3Rpb25Db3VudCkgeyBtX2luc3RydWN0aW9uQ291bnQgPSBpbnN0cnVjdGlv
bkNvdW50OyB9CkBAIC0zODcsNiArMzc0LDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBF
eGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgeyByZXR1cm4gZ2V0SklU
Q29kZSgpLmdldEV4ZWN1dGFibGVNZW1vcnkoKTsgfQogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0
KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKikgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKSA9IDA7CisgICAgICAgIGJvb2wgaml0Q29tcGls
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChn
ZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykgeworICAgICAgICAgICAg
ICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGppdENv
bXBpbGVJbXBsKGdsb2JhbERhdGEpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgPSAwOwogCiAgICAg
ICAgIGVudW0gQ29tcGlsZVdpdGhERkdTdGF0ZSB7CkBAIC00MDYsMTMgKzQwMiwxMyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGhhc09wdGltaXplZFJlcGxhY2VtZW50KCkKICAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNl
bGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0
SklUVHlwZSgpKSk7CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHJlcGxhY2VtZW50KCktPmdl
dEpJVFR5cGUoKSA+IGdldEpJVFR5cGUoKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAg
ICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5n
ZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2Vs
aW5lQ29kZShyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgICAgICBB
U1NFUlQocmVwbGFjZW1lbnQoKSA9PSB0aGlzKTsKICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAt
NDcxLDE4ICs0NjcsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjbGVhckV2
YWxDYWNoZSgpOwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICB2b2lkIGFkZFBy
b3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24odW5zaWduZWQgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgp
KQotICAgICAgICAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBwZW5kKHBy
b3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CiAgICAgICAgIH0K
ICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24odW5zaWduZWQgZ2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZ2xvYmFs
RGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgbV9n
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24p
OwogICAgICAgICB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uQXRC
eXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CisjaWYgRU5BQkxFKExMSU5U
KQorICAgICAgICBMTEludENhbGxMaW5rSW5mbyogYWRkTExJbnRDYWxsTGlua0luZm8oKQorICAg
ICAgICB7CisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvcy5hcHBlbmQoTExJbnRDYWxs
TGlua0luZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gJm1fbGxpbnRDYWxsTGlua0luZm9zLmxh
c3QoKTsKKyAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBz
ZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVjdHVyZVN0
dWJJbmZvcy5ncm93KHNpemUpOyB9CkBAIC00OTEsOCArNDkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5mbyh1bnNpZ25lZCBnbG9iYWxSZXNv
bHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2dsb2JhbERhdGEt
PmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVu
ZChHbG9iYWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKKyAgICAgICAg
ICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhnbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKICAgICAgICAgfQogICAgICAgICBHbG9iYWxSZXNvbHZlSW5m
byYgZ2xvYmFsUmVzb2x2ZUluZm8oaW50IGluZGV4KSB7IHJldHVybiBtX2dsb2JhbFJlc29sdmVJ
bmZvc1tpbmRleF07IH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAtNTAzLDYgKzUwMSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkTWV0aG9kQ2FsbExpbmtJbmZvcyh1bnNp
Z25lZCBuKSB7IEFTU0VSVChtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKTsgbV9tZXRob2RDYWxs
TGlua0luZm9zLmdyb3cobik7IH0KICAgICAgICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RD
YWxsTGlua0luZm8oaW50IGluZGV4KSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5mb3NbaW5k
ZXhdOyB9CisgICAgICAgIHNpemVfdCBudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MoKSB7IHJl
dHVybiBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpOyB9CiAjZW5kaWYKICAgICAgICAgCiAj
aWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtNTQzLDYgKzU0MiwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXRd
LnUub3Bjb2RlKSkgLSAxXS51LnByb2ZpbGUgPT0gcmVzdWx0KTsKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KKyAgICAgICAgUHJlZGljdGVkVHlwZSB2YWx1ZVByb2ZpbGVQ
cmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gdmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgdW5zaWduZWQgdG90YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMoKQogICAgICAg
ICB7CkBAIC01NjksMTIgKzU3MiwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAg
ICAgIGJvb2wgbGlrZWx5VG9UYWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gcmFy
ZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7
CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nh
c2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlv
bkVudHJ5Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgY291bGRUYWtlU2xvd0Nhc2UoaW50IGJ5
dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNh
c2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IHVuc2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9u
czo6Y291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2
YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6Y291bGRUYWtlU2xvd0Nh
c2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KQEAgLTU5MywxMiArNjAwLDE2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2Uo
aW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9m
UmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJv
ZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAg
ICAgICAgcmV0dXJuIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFr
ZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4oc3BlY2lhbEZhc3RD
YXNlQ291bnQpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFr
ZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGxp
a2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9
IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3Vu
dGVyOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFs
RmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50
ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgLSBzcGVjaWFs
RmFzdENhc2VDb3VudDsKQEAgLTYwNyw2ICs2MTgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zm
c2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxl
cygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVk
IHNsb3dDYXNlQ291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29k
ZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2Fz
ZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBzbG93Q2Fz
ZUNvdW50ICsgc3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBAIC03MDQsNyArNzE3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGFkZEZyZXF1ZW50RXhpdFNpdGUoY29u
c3QgREZHOjpGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgICAgICB7Ci0gICAgICAgICAgICBB
U1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAg
IEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAg
ICAgIHJldHVybiBtX2V4aXRQcm9maWxlLmFkZChzaXRlKTsKICAgICAgICAgfQogCkBAIC04MDks
NiArODIyLDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VE
YXRhRnJvbShDb2RlQmxvY2sqIGFsdGVybmF0aXZlKTsKICAgICAgICAgdm9pZCBjb3B5UG9zdFBh
cnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgICAgICAKKyAgICAgICAgLy8gRnVuY3Rpb25z
IGZvciBjb250cm9sbGluZyB3aGVuIEpJVHRpbmcga2lja3MgaW4sIGluIGEgbWl4ZWQgbW9kZQor
ICAgICAgICAvLyBleGVjdXRpb24gd29ybGQuCisgICAgICAgIAorICAgICAgICB2b2lkIGRvbnRK
SVRBbnl0aW1lU29vbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291
bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29v
bjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRBZnRlcldhcm1VcCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICB2b2lkIGppdFNvb24oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50
RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29u
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQzMl90IGxsaW50RXhlY3V0ZUNvdW50
ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9sbGludEV4ZWN1dGVD
b3VudGVyOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNv
bnRyb2xsaW5nIHdoZW4gdGllcmVkIGNvbXBpbGF0aW9uIGtpY2tzIGluLiBUaGlzCiAgICAgICAg
IC8vIGNvbnRyb2xzIGJvdGggd2hlbiB0aGUgb3B0aW1pemluZyBjb21waWxlciBpcyBpbnZva2Vk
IGFuZCB3aGVuIE9TUgogICAgICAgICAvLyBlbnRyeSBoYXBwZW5zLiBUd28gdHJpZ2dlcnMgZXhp
c3Q6IHRoZSBsb29wIHRyaWdnZXIgYW5kIHRoZSByZXR1cm4KQEAgLTEwMDEsNiArMTAzNyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBib29sIG1fc2hvdWxkRGlzY2FyZEJ5dGVjb2RlOwog
CiAgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNH
bG9iYWxEYXRhJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRXZWFrUmVmZXJlbmNl
cyhTbG90VmlzaXRvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkoKTsKICAgICAgICAgCkBAIC0xMDEzLDcgKzEwNTAsNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgdm9pZCB0YWxseUZyZXF1ZW50RXhpdFNpdGVzKCkgeyB9CiAjZW5kaWYKICAgICAg
ICAgCi0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQogICAg
ICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKiwgY29uc3QgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29u
c3RfaXRlcmF0b3ImIGJlZ2luLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYp
IGNvbnN0OwogCiAgICAgICAgIENTdHJpbmcgcmVnaXN0ZXJOYW1lKEV4ZWNTdGF0ZSosIGludCBy
KSBjb25zdDsKQEAgLTEwMjMsNyArMTA1OSw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIHByaW50R2V0QnlJZE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9yPEluc3Ry
dWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7CiAgICAgICAg
IHZvaWQgcHJpbnRDYWxsT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0b3I8SW5zdHJ1
Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsKICAgICAgICAg
dm9pZCBwcmludFB1dEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3RvcjxJbnN0
cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0OwotI2VuZGlm
CiAgICAgICAgIHZvaWQgdmlzaXRTdHJ1Y3R1cmVzKFNsb3RWaXNpdG9yJiwgSW5zdHJ1Y3Rpb24q
IHZQQykgY29uc3Q7CiAgICAgICAgIAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTA4NCw5ICsx
MTE5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+
IG1fc291cmNlOwogICAgICAgICB1bnNpZ25lZCBtX3NvdXJjZU9mZnNldDsKIAotI2lmIEVOQUJM
RShJTlRFUlBSRVRFUikKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX3Byb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb25zOwogICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZ2xvYmFsUmVzb2x2ZUlu
c3RydWN0aW9uczsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIFNlZ21lbnRlZFZlY3RvcjxM
TEludENhbGxMaW5rSW5mbywgOD4gbV9sbGludENhbGxMaW5rSW5mb3M7CisgICAgICAgIFNlbnRp
bmVsTGlua2VkTGlzdDxMTEludENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJ
bnRDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0xMSW50Q2FsbHM7CiAjZW5kaWYKICNpZiBFTkFC
TEUoSklUKQogICAgICAgICBWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+IG1fc3RydWN0dXJlU3R1
YkluZm9zOwpAQCAtMTA5Nyw5ICsxMTM0LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlV2l0aEFyaXR5Q2hlY2s7CiAgICAgICAgIFNl
bnRpbmVsTGlua2VkTGlzdDxDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPENhbGxM
aW5rSW5mbz4gPiBtX2luY29taW5nQ2FsbHM7CiAjZW5kaWYKLSNpZiBFTkFCTEUoREZHX0pJVCkK
KyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICBPd25QdHI8Q29t
cGFjdEpJVENvZGVNYXA+IG1faml0Q29kZU1hcDsKLSAgICAgICAgCisjZW5kaWYKKyNpZiBFTkFC
TEUoREZHX0pJVCkKICAgICAgICAgc3RydWN0IFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uIHsKICAg
ICAgICAgICAgIFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uKCkgeyB9CiAgICAgICAgICAgICAKQEAg
LTExNjIsMTIgKzEyMDAsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgT3duUHRyPENv
ZGVCbG9jaz4gbV9hbHRlcm5hdGl2ZTsKICAgICAgICAgCisgICAgICAgIGludDMyX3QgbV9sbGlu
dEV4ZWN1dGVDb3VudGVyOworICAgICAgICAKICAgICAgICAgaW50MzJfdCBtX2ppdEV4ZWN1dGVD
b3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXI7CiAg
ICAgICAgIHVpbnQzMl90IG1fc3BlY3VsYXRpdmVGYWlsQ291bnRlcjsKICAgICAgICAgdWludDhf
dCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcjsKICAgICAgICAgdWludDhfdCBtX3Jlb3B0aW1p
emF0aW9uUmV0cnlDb3VudGVyOwotCisgICAgICAgIAogICAgICAgICBzdHJ1Y3QgUmFyZURhdGEg
ewogICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgcHVibGljOgpA
QCAtMTI0Myw2ICsxMjgzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAg
ICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3Bl
Q2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1
YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29t
cGlsZVdpdGhERkdJbnRlcm5hbCgpOwogI2VuZGlmCkBAIC0xMjc3LDYgKzEzMTgsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNv
bXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1w
bChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50
KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGR0ludGVybmFsKCk7CiAj
ZW5kaWYKQEAgLTEzMTQsNiArMTM1Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3Rl
ZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUq
LCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAg
ICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29s
IGNhbkNvbXBpbGVXaXRoREZHSW50ZXJuYWwoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTA2
NDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMCArMjcsNDkgQEAKICNpbmNsdWRlICJHZXRCeUlkU3Rh
dHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVy
cHJldGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0
dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJv
ZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworICAgIFVOVVNF
RF9QQVJBTShpZGVudCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEluc3RydWN0aW9uKiBpbnN0
cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29k
ZUluZGV4OworICAgIAorICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9v
cF9tZXRob2RfY2hlY2spCisgICAgICAgIGluc3RydWN0aW9uKys7CisKKyAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOworICAgIGlmICgh
c3RydWN0dXJlKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBT
dHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAgICBzaXplX3Qgb2Zmc2V0
ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOwor
ICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVz
KE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOworICAgIAor
ICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZURpcmVjdCwgU3RydWN0dXJlU2V0KHN0cnVj
dHVyZSksIG9mZnNldCwgZmFsc2UpOworI2Vsc2UKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhO
b0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyNlbmRpZgor
fQorCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBw
cm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkK
IHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5
dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5BQkxFKEpJVCkg
JiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVy
T2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQo
cHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAgIC8vIEZpcnN0
IGNoZWNrIGlmIGl0IG1ha2VzIGVpdGhlciBjYWxscywgaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRv
IGJlIHN1cGVyIGNhcmVmdWwsIG9yCiAgICAgLy8gaWYgaXQncyBub3Qgc2V0IGF0IGFsbCwgaW4g
d2hpY2ggY2FzZSB3ZSBwdW50LgogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHBy
b2ZpbGVkQmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1Yklu
Zm8uc2VlbikKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3Ry
dWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQo
cHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgIAogICAgIFBvbHltb3Jw
aGljQWNjZXNzU3RydWN0dXJlTGlzdCogbGlzdDsKICAgICBpbnQgbGlzdFNpemU7CkBAIC02MCwx
OCArODksMTkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAg
IH0KICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKICAgICAgICAgaWYg
KCFsaXN0LT5saXN0W2ldLmlzRGlyZWN0KQotICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0
dXMoTWFrZXNDYWxscywgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgICAgIHJl
dHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwg
dHJ1ZSk7CiAgICAgfQogICAgIAogICAgIC8vIE5leHQgY2hlY2sgaWYgaXQgdGFrZXMgc2xvdyBj
YXNlLCBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUga2luZCBvZiBjYXJlZnVsLgogICAgIGlm
IChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKLSAg
ICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgU3RydWN0dXJlU2V0KCks
IG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwg
U3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsKICAgICAKICAgICAvLyBGaW5hbGx5IGZp
Z3VyZSBvdXQgaWYgd2UgY2FuIGRlcml2ZSBhbiBhY2Nlc3Mgc3RyYXRlZ3kuCiAgICAgR2V0QnlJ
ZFN0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fd2FzU2VlbkluSklUID0gdHJ1ZTsKICAgICBz
d2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIGFjY2Vzc191bnNldDoKLSAg
ICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCks
IG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9j
aywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19nZXRf
YnlfaWRfc2VsZjogewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZvLnUu
Z2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKQEAgLTEzMCw3ICsxNjAsNyBA
QCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgCiAgICAgcmV0
dXJuIHJlc3VsdDsKICNlbHNlIC8vIEVOQUJMRShKSVQpCi0gICAgcmV0dXJuIEdldEJ5SWRTdGF0
dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICByZXR1cm4g
R2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZh
bHNlKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEwNjQzMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDEwICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAKLSAg
ICBHZXRCeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVy
ZVNldCwgc2l6ZV90IG9mZnNldCkKKyAgICBHZXRCeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25z
dCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6ZV90IG9mZnNldCwgYm9vbCB3YXNTZWVu
SW5KSVQpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX3N0cnVjdHVyZVNl
dChzdHJ1Y3R1cmVTZXQpCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICAgICAsIG1f
d2FzU2VlbkluSklUKHdhc1NlZW5JbkpJVCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoc3RhdGUg
PT0gU2ltcGxlRGlyZWN0KSA9PSAob2Zmc2V0ICE9IG5vdEZvdW5kKSk7CiAgICAgfQpAQCAtNzAs
MTAgKzcxLDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9CiAgICAgc2l6ZV90IG9mZnNldCgp
IGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCisgICAgYm9vbCB3YXNTZWVuSW5KSVQo
KSBjb25zdCB7IHJldHVybiBtX3dhc1NlZW5JbkpJVDsgfQorICAgIAogcHJpdmF0ZToKKyAgICBz
dGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKICAgICBTdGF0ZSBtX3N0YXRlOwog
ICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKICAgICBzaXplX3QgbV9vZmZzZXQ7Cisg
ICAgYm9vbCBtX3dhc1NlZW5JbkpJVDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHJldmlzaW9u
IDEwNjQzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNs
YXNzIEpTQ2VsbDsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hh
aW47CisgICAgc3RydWN0IExMSW50Q2FsbExpbmtJbmZvOwogICAgIHN0cnVjdCBWYWx1ZVByb2Zp
bGU7CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTQ2LDYgKzE0NywxMSBAQCBuYW1lc3BhY2UgSlND
IHsKICNlbmRpZgogCiAgICAgc3RydWN0IEluc3RydWN0aW9uIHsKKyAgICAgICAgSW5zdHJ1Y3Rp
b24oKQorICAgICAgICB7CisgICAgICAgICAgICB1LmpzQ2VsbC5jbGVhcigpOworICAgICAgICB9
CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7
CiAjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQpAQCAtMTgyLDYgKzE4OCw4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEluc3RydWN0aW9uKFByb3BlcnR5U2xvdDo6
R2V0VmFsdWVGdW5jIGdldHRlckZ1bmMpIHsgdS5nZXR0ZXJGdW5jID0gZ2V0dGVyRnVuYzsgfQog
ICAgICAgICAKKyAgICAgICAgSW5zdHJ1Y3Rpb24oTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5r
SW5mbykgeyB1LmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsgfQorICAgICAgICAKICAgICAg
ICAgSW5zdHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBwcm9maWxlKSB7IHUucHJvZmlsZSA9IHByb2Zp
bGU7IH0KIAogICAgICAgICB1bmlvbiB7CkBAIC0xOTEsNyArMTk5LDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBzdHJ1Y3R1
cmVDaGFpbjsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8SlNDZWxsPiBqc0NlbGw7CiAg
ICAgICAgICAgICBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jOworICAgICAg
ICAgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbzsKICAgICAgICAgICAgIFZhbHVl
UHJvZmlsZSogcHJvZmlsZTsKKyAgICAgICAgICAgIHZvaWQqIHBvaW50ZXI7CiAgICAgICAgIH0g
dTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBMTEludENhbGxMaW5rSW5mb19oCisjZGVmaW5lIExMSW50Q2Fs
bExpbmtJbmZvX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJNYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CisK
K25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK3N0cnVjdCBMTEludENh
bGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5m
bz4geworICAgIExMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAgfQorICAgIAorICAgIH5M
TEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAg
ICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzTGlua2VkKCkgeyByZXR1
cm4gY2FsbGVlOyB9CisgICAgCisgICAgdm9pZCB1bmxpbmsoKQorICAgIHsKKyAgICAgICAgY2Fs
bGVlLmNsZWFyKCk7CisgICAgICAgIG1hY2hpbmVDb2RlVGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKCk7CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAgICAgcmVtb3ZlKCk7
CisgICAgfQorICAgIAorICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxsZWU7CisgICAg
V3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGxhc3RTZWVuQ2FsbGVlOworICAgIE1hY3JvQXNzZW1i
bGVyQ29kZVB0ciBtYWNoaW5lQ29kZVRhcmdldDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gTExJbnRDYWxsTGlua0luZm9faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAJKHJl
dmlzaW9uIDEwNjQzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RD
YWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDExIEBAIE1ldGhv
ZENhbGxMaW5rU3RhdHVzIE1ldGhvZENhbGxMaW5rU3RhdHUKICAgICBVTlVTRURfUEFSQU0ocHJv
ZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lmIEVOQUJM
RShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAvLyBOT1RFOiBUaGlzIGRvZXMg
bm90IGhhdmUgYW4gTExJbnQgZmFsbC1iYWNrIGJlY2F1c2UgTExJbnQgZG9lcyBub3QgZG8gYW55
IG1ldGhvZAorICAgIC8vIGNhbGwgbGluayBjYWNoaW5nLgorICAgIGlmICghcHJvZmlsZWRCbG9j
ay0+bnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKCkpCisgICAgICAgIHJldHVybiBNZXRob2RD
YWxsTGlua1N0YXR1cygpOworICAgIAogICAgIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9kQ2Fs
bCA9IHByb2ZpbGVkQmxvY2stPmdldE1ldGhvZENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KTsK
ICAgICAKICAgICBpZiAoIW1ldGhvZENhbGwuc2VlbiB8fCAhbWV0aG9kQ2FsbC5jYWNoZWRTdHJ1
Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZp
c2lvbiAxMDY0MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgsIDQpIFwKICAgICAgICAgbWFjcm8ob3Bf
cHV0X2J5X2lkLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uLCA5
KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwgOSkgXAor
ICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwKICAgICAg
ICAgbWFjcm8ob3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0
X2J5X2lkX2dlbmVyaWMsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBcCkBA
IC0yMDEsNiArMjAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgZW51bSB7
IEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfSURfRU5VTSkgfSBPcGNvZGVJRDsKICAgICAjdW5k
ZWYgT1BDT0RFX0lEX0VOVU0KIAorICAgIGNvbnN0IGludCBtYXhPcGNvZGVMZW5ndGggPSA5Owog
ICAgIGNvbnN0IGludCBudW1PcGNvZGVJRHMgPSBvcF9lbmQgKyAxOwogCiAgICAgI2RlZmluZSBP
UENPREVfSURfTEVOR1RIUyhpZCwgbGVuZ3RoKSBjb25zdCBpbnQgaWQjI19sZW5ndGggPSBsZW5n
dGg7CkBAIC0yMTcsNyArMjIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZPUl9FQUNI
X09QQ09ERV9JRChWRVJJRllfT1BDT0RFX0lEKTsKICAgICAjdW5kZWYgVkVSSUZZX09QQ09ERV9J
RAogCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENP
TVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICNpZiBDT01QSUxFUihS
VkNUKSB8fCBDT01QSUxFUihJTlRFTCkKICAgICB0eXBlZGVmIHZvaWQqIE9wY29kZTsKICNlbHNl
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0
dXMuY3BwCShyZXZpc2lvbiAxMDY0MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDI3ICsyNyw2OSBAQAog
I2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNp
bmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorUHV0QnlJZFN0
YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRC
bG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAg
VU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUlu
ZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5z
dHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUpCisgICAg
ICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5k
KTsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0
X2J5X2lkKSB7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmls
ZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gbm90
Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAw
LCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1
cyhTaW1wbGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9mZnNldCk7CisgICAgfQorICAgIAor
ICAgIEFTU0VSVChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUg
PT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAKKyAgICBTdHJ1
Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpOwor
ICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IGluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hh
aW4uZ2V0KCk7CisgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7CisgICAgQVNTRVJUKGNoYWluKTsK
KyAgICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxv
Y2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisg
ICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZv
dW5kKTsKKyAgICAKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVUcmFuc2l0aW9uLCBz
dHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY2hhaW4sIG9mZnNldCk7CisjZWxzZQorICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyNlbmRp
ZgorfQorCiBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2Nr
KiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVu
dCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFN
KGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5BQkxFKEpJ
VCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVt
YmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJ
bnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAgIGlmIChw
cm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKICAgICAg
ICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQp
OwogICAgIAogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVkQmxvY2st
PmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1YkluZm8uc2VlbikKLSAg
ICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91
bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRl
Y29kZUluZGV4LCBpZGVudCk7CiAgICAgCiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBl
KSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVz
KE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1
dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAg
ICAKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTogewogICAgICAgICBzaXplX3Qg
b2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5n
ZXQoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmgJKHJldmlzaW9uIDEwNjQzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDggQEAgcHVibGlj
OgogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAog
cHJpdmF0ZToKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVC
bG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKICAgICBT
dGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAgU3RydWN0
dXJlKiBtX25ld1N0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMDY0
MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJh
dG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkJhdGNo
ZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2lu
Y2x1ZGUgIlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiVVN0cmluZy5oIgpAQCAtMTE2LDI2ICsxMTcsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ZXhwZWN0ZWQgYnkgdGhlIGNhbGxlZS4KICovCiAKLSNpZm5kZWYgTkRFQlVHCiBzdGF0aWMgYm9v
bCBzX2R1bXBzR2VuZXJhdGVkQ29kZSA9IGZhbHNlOwotI2VuZGlmCiAKIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZShib29sIGR1bXBzR2VuZXJhdGVkQ29kZSkK
IHsKLSNpZm5kZWYgTkRFQlVHCiAgICAgc19kdW1wc0dlbmVyYXRlZENvZGUgPSBkdW1wc0dlbmVy
YXRlZENvZGU7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShkdW1wc0dlbmVyYXRlZENvZGUpOwot
I2VuZGlmCiB9CiAKIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgp
CiB7Ci0jaWZuZGVmIE5ERUJVRwogICAgIHJldHVybiBzX2R1bXBzR2VuZXJhdGVkQ29kZTsKLSNl
bHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiB9CiAKIEpTT2JqZWN0KiBCeXRlY29kZUdl
bmVyYXRvcjo6Z2VuZXJhdGUoKQpAQCAtMTQ4LDEwICsxMzksOCBAQCBKU09iamVjdCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmdlbmVyYXRlKCkKIAogICAgIG1fY29kZUJsb2NrLT5zZXRJbnN0cnVjdGlv
bkNvdW50KG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogCi0jaWZuZGVmIE5E
RUJVRwogICAgIGlmIChzX2R1bXBzR2VuZXJhdGVkQ29kZSkKICAgICAgICAgbV9jb2RlQmxvY2st
PmR1bXAobV9zY29wZUNoYWluLT5nbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSk7Ci0jZW5kaWYK
IAogICAgIGlmICgobV9jb2RlVHlwZSA9PSBGdW5jdGlvbkNvZGUgJiYgIW1fY29kZUJsb2NrLT5u
ZWVkc0Z1bGxTY29wZUNoYWluKCkgJiYgIW1fY29kZUJsb2NrLT51c2VzQXJndW1lbnRzKCkpIHx8
IG1fY29kZVR5cGUgPT0gRXZhbENvZGUpCiAgICAgICAgIHN5bWJvbFRhYmxlKCkuY2xlYXIoKTsK
QEAgLTEyNzYsOSArMTI2NSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVz
b2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRF
UlBSRVRFUikKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlv
bihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgICAgIFZhbHVlUHJvZmlsZSog
cHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShyZXF1aXJlc0R5bmFtaWNDaGVja3MgPyBvcF9y
ZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDQwLDkgKzE0MjcsNyBAQCBSZWdp
c3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYgRU5BQkxFKEpJVCkKICAg
ICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRk
R2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYK
ICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUocmVxdWlyZXNE
eW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xv
YmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5KSk7CkBAIC0xNDkwLDkg
KzE0NzUsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYg
RU5BQkxFKEpJVCkKICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBt
X2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNp
emUoKSk7Ci0jZW5kaWYKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRP
cGNvZGUocmVxdWlyZXNEeW5hbWljQ2hlY2tzID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6
IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+
aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KHByb3BlcnR5
KSk7CkBAIC0xNTExLDkgKzE0OTQsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TWV0
aG9kQ2hlY2soCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJZChS
ZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3Bl
cnR5KQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAK
ICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2J5
X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKQEAgLTE1Mzks
OSArMTUyMCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXIKIAog
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNp
ZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1pdE9w
Y29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRl
eCgpKTsKQEAgLTE1NTcsOSArMTUzNiw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9y
OjplbWl0UHV0QnkKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQ
dXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdp
c3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxv
Y2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
LSNlbmRpZgogICAgIAogICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBAIC0xODQwLDcgKzE4MTcsMTEgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKAogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3Vu
dAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0
KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jl
c3VsdCk7CkBAIC0xOTQ0LDcgKzE5MjUsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDb25zdAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsg
Ly8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAor
I2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2st
PmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRz
dCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0g
ZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0yMjA1LDcgKzIxOTAs
MTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaAogewogICAgIG1f
dXNlc0V4Y2VwdGlvbnMgPSB0cnVlOwogI2lmIEVOQUJMRShKSVQpCisjaWYgRU5BQkxFKExMSU5U
KQorICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQo
MCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFz
ZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3Jl
YXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX2Nh
dGNoKSkpIH07CisjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAs
IDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2Nv
cGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKCkgfTsKKyNlbmRp
ZgogI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5k
LT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGgg
KyBtX2Jhc2VTY29wZURlcHRoIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMDY0MzEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNjA0LDkgKzYwNCw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBVTlVTRURf
UEFSQU0obm9kZUluZGV4KTsKICAgICAgICAgCi0gICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIEFTU0VSVChwcm9maWxlKTsKLSAg
ICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQ
cmVkaWN0aW9uKCk7CisgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1faW5saW5l
U3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkK
ICAgICAgICAgcHJpbnRmKCJEeW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwg
bm9kZUluZGV4LCBieXRlY29kZUluZGV4LCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikp
OwogI2VuZGlmCkBAIC0xMDQxLDYgKzEwMzksOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVJbmxpbmluZyhib29sCiAgICAgCiAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhlbiBpdCBsb29r
cyBsaWtlIHdlIHNob3VsZCBkZWZpbml0ZWx5IGlubGluZSB0aGlzIGNvZGUuIFByb2NlZWQKICAg
ICAvLyB3aXRoIHBhcnNpbmcgdGhlIGNvZGUgdG8gZ2V0IGJ5dGVjb2RlLCBzbyB0aGF0IHdlIGNh
biB0aGVuIHBhcnNlIHRoZSBieXRlY29kZS4KKyAgICAvLyBOb3RlIHRoYXQgaWYgTExJbnQgaXMg
ZW5hYmxlZCwgdGhlIGJ5dGVjb2RlIHdpbGwgYWx3YXlzIGJlIGF2YWlsYWJsZS4gQWxzbyBub3Rl
CisgICAgLy8gdGhhdCBpZiBMTEludCBpcyBlbmFibGVkLCB3ZSBtYXkgaW5saW5lIGEgY29kZSBi
bG9jayB0aGF0IGhhcyBuZXZlciBiZWVuIEpJVHRlZAorICAgIC8vIGJlZm9yZSEKICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IG1fY29kZUJsb2NrQ2FjaGUuZ2V0KENvZGVCbG9ja0tleShleGVj
dXRhYmxlLCBraW5kKSwgZXhwZWN0ZWRGdW5jdGlvbi0+c2NvcGUoKSk7CiAgICAgaWYgKCFjb2Rl
QmxvY2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3NDEsNyArMTc0Miw3IEBAIGJvb2wg
Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4KTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgaWYgKG1ldGhvZENhbGxTdGF0dXMuaXNTZXQoKQotICAgICAgICAg
ICAgICAgICYmICFnZXRCeUlkU3RhdHVzLmlzU2V0KCkKKyAgICAgICAgICAgICAgICAmJiAhZ2V0
QnlJZFN0YXR1cy53YXNTZWVuSW5KSVQoKQogICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0
YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNo
ZSkpIHsKICAgICAgICAgICAgICAgICAvLyBJdCdzIG1vbm9tb3JwaGljIGFzIGZhciBhcyB3ZSBj
YW4gdGVsbCwgc2luY2UgdGhlIG1ldGhvZF9jaGVjayB3YXMgbGlua2VkCiAgICAgICAgICAgICAg
ICAgLy8gYnV0IHRoZSBzbG93IHBhdGggKGkuZS4gdGhlIG5vcm1hbCBnZXRfYnlfaWQpIG5ldmVy
IGZpcmVkLgpAQCAtMTgxMCw3ICsxODExLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwog
ICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoK
KyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAg
ICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5k
KTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsx
XS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1f
aW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsyXS51
Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRp
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5oCShyZXZpc2lvbiAxMDY0MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDggQEAgaW5saW5l
IGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNhc2Ugb3BfcHV0X3Njb3Bl
ZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6Cisg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAg
ICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNp
b24gMTA2NDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwyMSBAQCB2b2lkIGNvbXBpbGVPU1JF
eGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICB1aW50MzJfdCBleGl0SW5kZXggPSBnbG9iYWxEYXRh
LT5vc3JFeGl0SW5kZXg7CiAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jay0+b3NyRXhpdChl
eGl0SW5kZXgpOwogICAgIAorICAgIC8vIE1ha2Ugc3VyZSBhbGwgY29kZSBvbiBvdXIgaW5saW5l
IHN0YWNrIGlzIEpJVCBjb21waWxlZC4gVGhpcyBpcyBuZWNlc3Nhcnkgc2luY2UKKyAgICAvLyB3
ZSBtYXkgb3B0IHRvIGlubGluZSBhIGNvZGUgYmxvY2sgZXZlbiBiZWZvcmUgaXQgaGFkIGV2ZXIg
YmVlbiBjb21waWxlZCBieSB0aGUKKyAgICAvLyBKSVQsIGJ1dCBvdXIgT1NSIGV4aXQgaW5mcmFz
dHJ1Y3R1cmUgY3VycmVudGx5IG9ubHkgd29ya3MgaWYgdGhlIHRhcmdldCBvZiB0aGUKKyAgICAv
LyBPU1IgZXhpdCBpcyBKSVQgY29kZS4gVGhpcyBjb3VsZCBiZSBjaGFuZ2VkIHNpbmNlIHRoZXJl
IGlzIG5vdGhpbmcgcGFydGljdWxhcmx5CisgICAgLy8gaGFyZCBhYm91dCBkb2luZyBhbiBPU1Ig
ZXhpdCBpbnRvIHRoZSBpbnRlcnByZXRlciwgYnV0IGZvciBub3cgdGhpcyBzZWVtcyB0byBtYWtl
CisgICAgLy8gc2Vuc2UgaW4gdGhhdCBpZiB3ZSdyZSBPU1IgZXhpdGluZyBmcm9tIGlubGluZWQg
Y29kZSBvZiBhIERGRyBjb2RlIGJsb2NrLCB0aGVuCisgICAgLy8gcHJvYmFibHkgaXQncyBhIGdv
b2Qgc2lnbiB0aGF0IHRoZSB0aGluZyB3ZSdyZSBleGl0aW5nIGludG8gaXMgaG90LiBFdmVuIG1v
cmUKKyAgICAvLyBpbnRlcmVzdGluZ2x5LCBzaW5jZSB0aGUgY29kZSB3YXMgaW5saW5lZCwgaXQg
bWF5IG5ldmVyIG90aGVyd2lzZSBnZXQgSklUCisgICAgLy8gY29tcGlsZWQgc2luY2UgdGhlIGFj
dCBvZiBpbmxpbmluZyBpdCBtYXkgZW5zdXJlIHRoYXQgaXQgb3RoZXJ3aXNlIG5ldmVyIHJ1bnMu
CisgICAgZm9yIChDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbjsgY29k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNh
bGxGcmFtZS0+Y2FsbGVyKSB7CisgICAgICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJs
ZSo+KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKQorICAgICAg
ICAgICAgLT5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+
aXNDYWxsID8gQ29kZUZvckNhbGwgOiBDb2RlRm9yQ29uc3RydWN0KQorICAgICAgICAgICAgLT5q
aXRDb21waWxlKCpnbG9iYWxEYXRhKTsKKyAgICB9CisgICAgCiAgICAgU3BlY3VsYXRpb25SZWNv
dmVyeSogcmVjb3ZlcnkgPSAwOwogICAgIGlmIChleGl0Lm1fcmVjb3ZlcnlJbmRleCkKICAgICAg
ICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5zcGVjdWxhdGlvblJlY292ZXJ5KGV4aXQubV9yZWNv
dmVyeUluZGV4IC0gMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJh
dGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAJKHJldmlzaW9uIDEwNjQzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAi
REZHUmVwYXRjaC5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRl
ICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbmxpbmVBU00uaCIKICNpbmNsdWRlICJJbnRl
cnByZXRlci5oIgpAQCAtNjczLDUwICs2NzQsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVy
YXRpb25Db21wYXJlU3RyCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpT
VmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsK
IH0KIAotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KCk7Ci1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVX
aXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmds
b2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1ISURFX1NZ
TUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKLSAg
ICAibW92ICVyMTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9O
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BV
KFg4NikKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1C
T0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAo
JWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVzcClcbiIKLSAgICAiam1wICIgU1lN
Qk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRl
KSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20gKAotIi50ZXh0IiAiXG4iCi0i
LmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLSIu
dGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAi
OiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKLSAgICAiY3B5IHIwLCByNSIg
IlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0KLUVuY29kZWRKU1ZhbHVlIERG
R19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRl
KiBleGVjKQotewotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxE
YXRhKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVj
KTsKLSAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5o
b3N0Q2FsbFJldHVyblZhbHVlKTsKLX0KLQogc3RhdGljIHZvaWQqIGhhbmRsZUhvc3RDYWxsKEV4
ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFt
ZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDEwNjQz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC04MzcsNyArODM3LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVw
VG9nZwogICAgICAgICBzZXRIaWdoV2F0ZXJNYXJrKG1heChwcm9wb3J0aW9uYWxCeXRlcywgbV9t
aW5CeXRlc1BlckN5Y2xlKSk7CiAgICAgfQogICAgIEpBVkFTQ1JJUFRDT1JFX0dDX0VORCgpOwot
CisgICAgCiAgICAgKCptX2FjdGl2aXR5Q2FsbGJhY2spKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDEwNjQzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNWYWx1ZTsKICAg
ICBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgIGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyOwogICAgIGNsYXNzIFJlZ2lzdGVy
RmlsZTsKICAgICBjbGFzcyBVU3RyaW5nOwpAQCAtMTM1LDExICsxMzYsMTIgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgZ2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cyhIYXNoU2V0
PEpTQ2VsbCo+JiByb290cyk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
Q29kZUJsb2NrOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBN
YXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNzIEJ1bXBTcGFjZTsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwotICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwog
CiAgICAgICAgIHNpemVfdCB3YXRlck1hcmsoKTsKICAgICAgICAgc2l6ZV90IGhpZ2hXYXRlck1h
cmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkocmV2
aXNpb24gMTA2NDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMwNCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbigKICNlbmRpZgogCiAgICAgQVNTRVJUKEhlYXA6OmlzTWFya2Vk
KGNlbGwpKTsKLQorICAgIAogICAgIGlmIChpc0pTU3RyaW5nKGNlbGwpKSB7CiAgICAgICAgIEpT
U3RyaW5nOjp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0b3Ip
OwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
ZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZFNwYWNlLmgJKHJldmlzaW9uIDEwNjQzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiBjbGFzcyBIZWFwOwogY2xhc3MgSlNDZWxsOwogY2xhc3MgTGl2ZU9iamVjdEl0ZXJh
dG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgV2Vha0dDSGFuZGxlOwog
Y2xhc3MgU2xvdFZpc2l0b3I7CiAKQEAgLTg3LDYgKzg4LDggQEAgcHVibGljOgogICAgIHZvaWQg
ZnJlZUJsb2NrcyhNYXJrZWRCbG9jayogaGVhZCk7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICB2b2lkKiBhbGxvY2F0ZVNsb3dD
YXNlKFNpemVDbGFzcyYpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlSGVscGVyKE1hcmtlZFNwYWNl
OjpTaXplQ2xhc3MmKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNs
YXNzJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxG
cmFtZS5oCShyZXZpc2lvbiAxMDY0MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsOSBAQCBuYW1l
c3BhY2UgSlNDICB7CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBJbnN0cnVjdGlv
biogcmV0dXJuVlBDKCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBD
XS52UEMoKTsgfQogI2VuZGlmCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBJbnN0cnVjdGlv
biogY3VycmVudFZQQygpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+
KHRoaXNbUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50XS50YWcoKSk7IH0KKyNlbmRpZgogCiAg
ICAgICAgIHZvaWQgc2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSkgeyBzdGF0
aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWVdID0gY2Fs
bGVyRnJhbWU7IH0KICAgICAgICAgdm9pZCBzZXRTY29wZUNoYWluKFNjb3BlQ2hhaW5Ob2RlKiBz
Y29wZUNoYWluKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpT
Y29wZUNoYWluXSA9IHNjb3BlQ2hhaW47IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTA2NDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2VuZGlmCiAKLSNk
ZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EIChFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikgJiYgIWRlZmluZWQoX19sbHZtX18pKQorI2RlZmluZSBXVEZf
VVNFX0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQgKChFTkFCTEUoQ09NUFVURURfR09UT19J
TlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkgJiYgIWRlZmluZWQoX19sbHZtX18pKQogCiB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC01NDcsMTcgKzU0Nyw0MyBAQCBJbnRlcnByZXRlcjo6
SW50ZXJwcmV0ZXIoKQogewogfQogCi12b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKGJvb2wg
Y2FuVXNlSklUKQorSW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcigpCiB7Ci0jaWYgRU5BQkxFKENP
TVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2Vu
YWJsZWQpCisgICAgICAgIGRlbGV0ZVtdIG1fb3Bjb2RlVGFibGU7CisjZW5kaWYKK30KKwordm9p
ZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShMTEludDo6RGF0YSogbGxpbnREYXRhLCBib29sIGNh
blVzZUpJVCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGxpbnREYXRhKTsKKyAgICBVTlVTRURfUEFS
QU0oY2FuVXNlSklUKTsKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwg
RU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyAg
ICAvLyBIYXZpbmcgTExJbnQgZW5hYmxlZCwgYnV0IG5vdCBiZWluZyBhYmxlIHRvIHVzZSB0aGUg
SklULCBhbmQgbm90IGhhdmluZworICAgIC8vIGEgY29tcHV0ZWQgZ290byBpbnRlcnByZXRlciwg
aXMgbm90IHN1cHBvcnRlZC4gTm90IGJlY2F1c2Ugd2UgY2Fubm90CisgICAgLy8gc3VwcG9ydCBp
dCwgYnV0IGJlY2F1c2UgSSBkZWNpZGVkIHRvIGRyYXcgdGhlIGxpbmUgYXQgdGhlIG51bWJlciBv
ZgorICAgIC8vIHBlcm11dGF0aW9ucyBvZiBleGVjdXRpb24gZW5naW5lcyB0aGF0IEkgd2FudGVk
IHRoaXMgY29kZSB0byBncm9rLgorICAgIEFTU0VSVChjYW5Vc2VKSVQpOworI2VuZGlmCiAgICAg
aWYgKGNhblVzZUpJVCkgeworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJs
ZSA9IGxsaW50RGF0YS0+b3Bjb2RlTWFwKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bnVtT3Bjb2RlSURzOyArK2kpCisgICAgICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1fb3Bj
b2RlVGFibGVbaV0sIHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7CisjZWxzZQogICAgICAgICAv
LyBJZiB0aGUgSklUIGlzIHByZXNlbnQsIGRvbid0IHVzZSBqdW1wIGRlc3RpbmF0aW9ucyBmb3Ig
b3Bjb2Rlcy4KICAgICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2Rl
SURzOyArK2kpIHsKICAgICAgICAgICAgIE9wY29kZSBvcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oaSkpOwogICAgICAgICAgICAgbV9vcGNvZGVUYWJs
ZVtpXSA9IG9wY29kZTsKICAgICAgICAgfQorI2VuZGlmCiAgICAgfSBlbHNlIHsKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgICAgIG1fb3Bjb2RlVGFibGUgPSBuZXcgT3Bjb2RlW251bU9wY29kZUlE
c107CisjZW5kaWYKICAgICAgICAgcHJpdmF0ZUV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVybiwg
MCwgMCk7CiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlE
czsgKytpKQpAQCAtNTY2LDcgKzU5Miw2IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUo
Ym9vbCBjYW5Vc2UKICAgICAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICAgICB9CiAjZWxzZQotICAg
IFVOVVNFRF9QQVJBTShjYW5Vc2VKSVQpOwogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBt
X2VuYWJsZWQgPSB0cnVlOwogI2Vsc2UKQEAgLTY2Nyw5ICs2OTIsMTEgQEAgdm9pZCBJbnRlcnBy
ZXRlcjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbQogCiBib29sIEludGVycHJldGVyOjppc09wY29k
ZShPcGNvZGUgb3Bjb2RlKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQp
CisjaWYgIUVOQUJMRShMTElOVCkKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJu
IG9wY29kZSA+PSAwICYmIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0
cl90PihvcGNvZGUpKSA8PSBvcF9lbmQ7CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2RlICE9IEhh
c2hUcmFpdHM8T3Bjb2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJhaXRzPE9w
Y29kZT46OmlzRGVsZXRlZFZhbHVlKG9wY29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJRFRhYmxl
LmNvbnRhaW5zKG9wY29kZSk7CkBAIC03MjYsMTEgKzc1MywxMSBAQCBORVZFUl9JTkxJTkUgYm9v
bCBJbnRlcnByZXRlcjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAxLgogI2lm
IEVOQUJMRShKSVQpICYmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBpZiAoY2FsbGVyRnJhbWUt
Pmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKSkKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2Rl
QmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5
dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2Fs
bEZyYW1lLT5yZXR1cm5QQygpKTsKICAgICBlbHNlCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0g
Y29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAj
ZWxpZiBFTkFCTEUoSklUKQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29k
ZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29k
ZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygp
KTsKICNlbHNlCiAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0
KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbmRpZgpAQCAtODA3LDEwICs4MzQsMTAg
QEAgc3RhdGljIHZvaWQgZ2V0Q2FsbGVyTGluZShKU0dsb2JhbERhdGEqIAogICAgICAgICBieXRl
Y29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5y
ZXR1cm5WUEMoKSk7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBlbHNlCi0gICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVy
blBDKCkpOworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNv
ZGVPZmZzZXQoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpLCBjYWxsRnJhbWUtPnJldHVyblBDKCkp
OwogI2VuZGlmCiAjZWxzZQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5i
eXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPmNhbGxlckZyYW1l
KCksIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYKIAogICAgIGxpbmVOdW1iZXIgPSBj
YWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNl
dCAtIDEpOwpAQCAtMzQwNyw2ICszNDM0LDggQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoKICNpZiBV
U0UoR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCkKICAgICAgIHNraXBfcHV0X2J5X2lkOgog
I2VuZGlmCisgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Qp
CisgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpCiAgICAg
REVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbikgewogICAgICAgICAvKiBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbiBiYXNlKHIpIHByb3BlcnR5KGlkKSB2YWx1ZShyKSBvbGRTdHJ1
Y3R1cmUoc0lEKSBuZXdTdHJ1Y3R1cmUoc0lEKSBzdHJ1Y3R1cmVDaGFpbihjaGFpbikgb2Zmc2V0
KG4pIGRpcmVjdChiKQogICAgICAgICAgCkBAIC01MjM5LDEwICs1MjY4LDEwIEBAIHZvaWQgSW50
ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcihDYWwKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQg
PSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkp
OwogI2lmIEVOQUJMRShKSVQpCiAgICAgZWxzZQotICAgICAgICBieXRlY29kZU9mZnNldCA9IGNh
bGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAg
ICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNh
bGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAjZWxzZQotICAgIGJ5
dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUt
PnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRl
Y29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgog
ICAgIGxpbmVOdW1iZXIgPSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCAtIDEpOwogICAgIHNvdXJjZUlEID0gY2FsbGVyQ29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxMDY0MzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNs
dWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJMTEludERh
dGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKIApA
QCAtNDYsNiArNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBFeGVjdXRhYmxlQmFz
ZTsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1F
eGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2Rl
OwpAQCAtMTU0LDE5ICsxNTYsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJbnRl
cnByZXRlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotICAgICAgICBmcmll
bmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkQ2FsbDsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IEpJVDsKICAgICBwdWJsaWM6CiAgICAgICAgIEludGVycHJldGVyKCk7CisgICAgICAgIH5JbnRl
cnByZXRlcigpOwogICAgICAgICAKLSAgICAgICAgdm9pZCBpbml0aWFsaXplKGJvb2wgY2FuVXNl
SklUKTsKKyAgICAgICAgdm9pZCBpbml0aWFsaXplKExMSW50OjpEYXRhKiwgYm9vbCBjYW5Vc2VK
SVQpOwogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlKCkgeyByZXR1cm4gbV9y
ZWdpc3RlckZpbGU7IH0KICAgICAgICAgCiAgICAgICAgIE9wY29kZSBnZXRPcGNvZGUoT3Bjb2Rl
SUQgaWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNp
ZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURf
R09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICAgICAgcmV0dXJuIG1f
b3Bjb2RlVGFibGVbaWRdOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBpZDsKQEAgLTE3Niw3
ICsxODAsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlE
KE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxp
emVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7CisgICAgICAgICAg
ICByZXR1cm4gbV9vcGNvZGVJRFRhYmxlLmdldChvcGNvZGUpOworI2VsaWYgRU5BQkxFKENPTVBV
VEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2Rl
KSk7CiAgICAgICAgICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgICAgICAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29kZSkpOwpA
QCAtMTg2LDYgKzE5MywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBv
cGNvZGU7CiAjZW5kaWYKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBlbmFibGVk
KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZW5hYmxlZDsKKyAgICAgICAgfQog
CiAgICAgICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIApAQCAtMjU1LDcgKzI2NywxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlckZpbGUgbV9yZWdpc3RlckZpbGU7CiAg
ICAgICAgIAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJM
RShMTElOVCkKKyAgICAgICAgT3Bjb2RlKiBtX29wY29kZVRhYmxlOyAvLyBNYXBzIE9wY29kZUlE
ID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCisgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJ
RD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21w
aWxpbmcKKyNlbGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICBP
cGNvZGUgbV9vcGNvZGVUYWJsZVtudW1PcGNvZGVJRHNdOyAvLyBNYXBzIE9wY29kZUlEID0+IE9w
Y29kZSBmb3IgY29tcGlsaW5nCiAgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9v
cGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21waWxpbmcK
ICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVy
RmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9S
ZWdpc3RlckZpbGUuaAkocmV2aXNpb24gMTA2NDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICszOSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29uc2VydmF0aXZlUm9vdHM7CiAgICAg
Y2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAK
ICAgICBjbGFzcyBSZWdpc3RlckZpbGUgewogICAgICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShS
ZWdpc3RlckZpbGUpOwpAQCAtODEsNiArODIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
fQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgZ3Jvd1Nsb3dDYXNlKFJlZ2lzdGVyKik7CiAg
ICAgICAgIHZvaWQgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CiAgICAgICAgIHZvaWQgYWRkVG9D
b21taXR0ZWRCeXRlQ291bnQobG9uZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVl
LmgiCisKKyNpZiBDT01QSUxFUihHQ0MpCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNs
dWRlICJJbmxpbmVBU00uaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTVmFs
dWVJbmxpbmVNZXRob2RzLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVF
X09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqKTsK
KworI2lmIENQVShYODZfNjQpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgor
ICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCisgICAgIm1vdiAlcjEzLCAlcmRpXG4iCisgICAg
ImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0
aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShYODYpCithc20gKAorIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4iCisgICAgIm1vdiAl
ZWRpLCA0KCVlc3ApXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRI
b3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShBUk1f
VEhVTUIyKQorYXNtICgKKyIudGV4dCIgIlxuIgorIi5hbGlnbiAyIiAiXG4iCisiLmdsb2JsICIg
U1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCisiLnRodW1iIiAiXG4iCisiLnRodW1iX2Z1bmMg
IiBUSFVNQl9GVU5DX1BBUkFNKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9T
VFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibGRyIHI1LCBbcjUs
ICMtNDBdIiAiXG4iCisgICAgImNweSByMCwgcjUiICJcbiIKKyAgICAiYiAiIFNZTUJPTF9TVFJJ
TkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgor
KTsKKyNlbmRpZgorCitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5f
VkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEo
KS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBDT01QSUxFUihHQ0MpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9z
dENhbGxSZXR1cm5WYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lm
bmRlZiBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKyNkZWZpbmUgSG9zdENhbGxSZXR1cm5WYWx1ZV9o
CisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKy8vIFVuZm9ydHVuYXRlbHkgdGhpcyBv
bmx5IHdvcmtzIG9uIEdDQy1saWtlIGNvbXBpbGVycy4gQW5kIGl0J3MgY3VycmVudGx5IG9ubHkg
dXNlZAorLy8gYnkgTExJbnQgYW5kIERGRywgd2hpY2ggYWxzbyBhcmUgcmVzdHJpY3RlZCB0byBH
Q0MtbGlrZSBjb21waWxlcnMuIFdlIHNob3VsZAorLy8gcHJvYmFibHkgZml4IHRoYXQgYXQgc29t
ZSBwb2ludC4KKyNpZiBDT01QSUxFUihHQ0MpCisKKyNpZiBDQUxMSU5HX0NPTlZFTlRJT05fSVNf
U1REQ0FMTAorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBDREVDTAorI2Vs
c2UKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04KKyNlbmRpZgorCituYW1l
c3BhY2UgSlNDIHsKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9W
QUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOworfQorCisjZW5kaWYgLy8gQ09N
UElMRVIoR0NDKQorCisjZW5kaWYgLy8gSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEwNjQzMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw4IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9w
X3Byb2ZpbGVfd2lsbF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9uZXdfc2NvcGUp
CiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX3Njb3BlKQorICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERF
RklORV9PUChvcF9wdXRfYnlfaW5kZXgpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFs
KQpAQCAtNDg2LDYgKzQ4OCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9w
cmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcmVzb2x2ZV9nbG9i
YWwpCkBAIC01MjUsNiArNTI5LDEwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNl
cygpCiAKIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5jdGlvbkVudHJ5
QXJpdHlDaGVjaykKIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50Zigi
Q29tcGlsaW5nIEpJVCBjb2RlIVxuIik7CisjZW5kaWYKKyAgICAKICNpZiBFTkFCTEUoVkFMVUVf
UFJPRklMRVIpCiAgICAgbV9jYW5CZU9wdGltaXplZCA9IG1fY29kZUJsb2NrLT5jYW5Db21waWxl
V2l0aERGRygpOwogI2VuZGlmCkBAIC02ODksOCArNjk3LDEyIEBAIEpJVENvZGUgSklUOjpwcml2
YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24g
PSBtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8obV9tZXRob2RDYWxsQ29tcGlsYXRpb25J
bmZvW2ldLnByb3BlcnR5QWNjZXNzSW5kZXgpLmNhbGxSZXR1cm5Mb2NhdGlvbjsKICAgICB9CiAK
LSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAobV9jYW5CZU9wdGltaXplZCkgeworI2lmIEVO
QUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHx8IHRydWUKKyNlbmRpZgorICAgICAgICApIHsK
ICAgICAgICAgQ29tcGFjdEpJVENvZGVNYXA6OkVuY29kZXIgaml0Q29kZU1hcEVuY29kZXI7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8
IG1fbGFiZWxzLnNpemUoKTsgKytieXRlY29kZU9mZnNldCkgewogICAgICAgICAgICAgaWYgKG1f
bGFiZWxzW2J5dGVjb2RlT2Zmc2V0XS5pc1NldCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDb2RlLmgJKHJldmlzaW9uIDEwNjQzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBKSVRDb2RlKCkgeyB9CiAjZW5kaWYKICAgICBwdWJsaWM6Ci0gICAgICAg
IGVudW0gSklUVHlwZSB7IEhvc3RDYWxsVGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsKKyAg
ICAgICAgZW51bSBKSVRUeXBlIHsgTm9uZSwgSG9zdENhbGxUaHVuaywgSW50ZXJwcmV0ZXJUaHVu
aywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OwogICAgICAgICAKICAgICAgICAgc3RhdGljIEpJVFR5
cGUgYm90dG9tVGllckpJVCgpCiAgICAgICAgIHsKQEAgLTY2LDggKzY2LDE5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIERGR0pJVDsKICAgICAgICAgfQogICAgICAgICAK
KyAgICAgICAgc3RhdGljIGJvb2wgaXNPcHRpbWl6aW5nSklUKEpJVFR5cGUgaml0VHlwZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gREZHSklUOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBzdGF0aWMgYm9vbCBpc0Jhc2VsaW5lQ29kZShKSVRUeXBlIGpp
dFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IEludGVycHJl
dGVyVGh1bmsgfHwgaml0VHlwZSA9PSBCYXNlbGluZUpJVDsKKyAgICAgICAgfQorICAgICAgICAK
ICNpZiBFTkFCTEUoSklUKQogICAgICAgICBKSVRDb2RlKCkKKyAgICAgICAgICAgIDogbV9qaXRU
eXBlKE5vbmUpCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03NSw2ICs4Niw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgOiBtX3JlZihyZWYpCiAgICAgICAgICAgICAsIG1faml0
VHlwZShqaXRUeXBlKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaml0VHlwZSAhPSBO
b25lKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciAhKCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkocmV2aXNpb24gMTA2
NDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsMTUgKzMzLDIxIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIK
ICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJMTElu
dEVudHJ5cG9pbnRzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
b2RlQmxvY2tUeXBlPgogaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklU
Q29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRU
eXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAg
IGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpE
RkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlKGdsb2JhbERhdGEs
IGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CkBAIC01NSwxMCArNjEsNyBAQCBpbmxpbmUgYm9v
bCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShKU0dsCiAgICAgICAgIH0KICAgICAgICAgaml0Q29k
ZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpKTsKICAgICB9Ci0j
aWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRlY29kZUdlbmVyYXRvcjo6
ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVE
aXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgorICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0
ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUo
aml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwogICAgIAogICAgIHJldHVybiB0cnVl
OwpAQCAtNjYsOSArNjksMTQgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUo
SlNHbAogCiBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29kZUJsb2Nr
LCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGppdENvZGVXaXRoQXJp
dHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6SklUVHlw
ZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNl
SklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5r
SW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAg
ICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0g
REZHOjp0cnlDb21waWxlRnVuY3Rpb24oZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRD
b2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwpAQCAtODMsMTEgKzkxLDcgQEAgaW5saW5lIGJv
b2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaQogICAgICAgICB9CiAgICAgICAgIGppdENv
ZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgJmppdENvZGVX
aXRoQXJpdHlDaGVjayk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotICAg
IGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQotICAgICAgICBj
b2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7Ci0jZW5kaWYK
LSAgICAKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5
KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlD
aGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEwNjQzMSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0
LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3coSlNHbG9iYWxEYQogCiBF
eGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhlY1N0
YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIFJldHVybkFkZHJlc3NQdHIg
ZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGNh
bGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2Rl
T2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERh
dGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5
dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1bHRMb2NhdGlvbikpOwogfQogCiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTA2NDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0NDYsNiArMTQ0Niw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV9p
ZF8KICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0
cmljdE1vZGUoKSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0u
anNWYWx1ZSgpOwogICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CisgICAgCiAgICAg
YXNPYmplY3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBp
ZGVudCwgc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwgc2xvdCk7CiAgICAgCiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBA
IC0xOTMxLDcgKzE5MzIsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9m
cm9tCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNrRnJhbWUuYXJnc1swXS5pbnQz
MigpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmludGYoIkVudGVyZWQg
b3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRp
b25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNv
ZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJl
dHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAg
ICBwcmludGYoIiVwOiBFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVDb3Vu
dGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRl
bGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50
ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2st
Pm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAgaWYgKGNvZGVCbG9j
ay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewpAQCAtMjE4Niw0NSArMjE4NywxMyBAQCBE
RUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotaW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+
Y2FsbGVlKCkpOwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICBD
b2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0
ZWRCeXRlY29kZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAgICAvLyBUaGlz
IGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJv
IGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+
Z3JvdyhjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5
IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRz
IHdpdGggdW5kZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVnaXN0ZXIqIHNy
YyA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGNhbGxGcmFt
ZS0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGludCBlbmQgPSAtQ2Fs
bEZyYW1lOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZvciAo
aSA9IC0xOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07Ci0KLSAgICBl
bmQgLT0gZGVsdGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0g
PSBqc1VuZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJh
bWU6OmNyZWF0ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1lIDw9IHJlZ2lz
dGVyRmlsZS0+ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0KIERFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklU
X1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBz
dGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJp
dHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2Fs
bCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5
Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwp
OwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25G
cm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJF
U1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsK
IApAQCAtMjIzNyw3ICsyMjA2LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2Nv
bnN0cnVjdAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFt
ZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJh
bWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBDYWxs
RnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxs
RnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBp
ZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2Fs
bDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDEw
NjQzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgSlNJbnRlcmZhY2VKSVRfaAog
I2RlZmluZSBKU0ludGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25z
LmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVk
ZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2RlZmluZSBMTElOVF9F
WEVDVVRJT05fVFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFDSU5HIDAKKworI2Vu
ZGlmIC8vIExMSW50Q29tbW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiTExJbnREYXRhLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRl
ICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNs
dWRlICJPcGNvZGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK0Rh
dGE6OkRhdGEoKQorICAgIDogbV9leGNlcHRpb25JbnN0cnVjdGlvbnMobmV3IEluc3RydWN0aW9u
W21heE9wY29kZUxlbmd0aCArIDFdKQorICAgICwgbV9vcGNvZGVNYXAobmV3IE9wY29kZVtudW1P
cGNvZGVJRHNdKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsg
MTsgKytpKQorICAgICAgICBtX2V4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19mcm9tX2hlbHBlcl90cmFtcG9saW5lKTsK
KyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBtX29wY29kZU1hcFtvcGNvZGVd
ID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUpOworICAgIEZPUl9FQUNIX09Q
Q09ERV9JRChPUENPREVfRU5UUlkpOworI3VuZGVmIE9QQ09ERV9FTlRSWQorfQorCitEYXRhOjp+
RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgZGVs
ZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisj
ZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludERhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RGF0YV9oCisjZGVm
aW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFt
ZXNwYWNlIExMSW50IHsKKworI2lmIEVOQUJMRShMTElOVCkKK2NsYXNzIERhdGEgeworcHVibGlj
OgorICAgIERhdGEoKTsKKyAgICB+RGF0YSgpOworICAgIAorICAgIEluc3RydWN0aW9uKiBleGNl
cHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5z
dHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgfQorcHJpdmF0ZToKKyAgICBJbnN0cnVj
dGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgT3Bjb2RlKiBtX29wY29kZU1hcDsK
K307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQpCisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlmCisKK2NsYXNzIERhdGEgeworcHVibGljOgor
ICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICAKKyAg
ICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfTsKKworI2lmIENPTVBJTEVSKENMQU5HKQor
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUo
TExJTlQpCisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnRE
YXRhX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2lu
dHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVu
dHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCisjaWYgRU5BQkxFKExMSU5U
KQorCisjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2lu
Y2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgor
CituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVu
dHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQsIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVj
aykKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaWYgKGtp
bmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0
RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYo
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNyb0Fz
c2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAg
ICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAgICBqaXRDb2RlID0g
SklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1h
bmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgYXJpdHlD
aGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgaml0Q29k
ZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1
bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICAgICAgYXJpdHlD
aGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1
bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VS
VChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2Jh
bERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3Ip
LCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0
YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9y
KS5jb2RlKCk7Cit9CisKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VK
SVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9ldmFsX3Byb2xvZ3VlKSkpKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRh
LmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rKTsKK30KKwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVz
ZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9B
c3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSkpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2Jh
bERhdGEuZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2Vu
ZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludEVudHJ5cG9pbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludEVudHJ5cG9pbnRzX2gKKyNkZWZpbmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNs
dWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkNv
ZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV2YWxD
b2RlQmxvY2s7CitjbGFzcyBKSVRDb2RlOworY2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOworY2xhc3Mg
UHJvZ3JhbUNvZGVCbG9jazsKKworbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlv
bkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgSklUQ29k
ZSYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjayk7Cit2b2lkIGdldEV2YWxFbnRy
eXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9p
bnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYpOworCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXZhbENvZGVCbG9jayosIEpJVENvZGUmIGppdENv
ZGUpCit7CisgICAgZ2V0RXZhbEVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisK
K2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9n
cmFtQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRQcm9ncmFtRW50cnlw
b2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxM
SW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludEVudHJ5cG9p
bnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2Vw
dGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisj
aW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAi
SW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTExJ
bnRDb21tb24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxl
cihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4
ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50Zigi
VGhyb3dpbmcgZXhjZXB0aW9uICVzLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0
aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KAorICAgICAgICBnbG9iYWxEYXRhLCBl
eGVjLT5jYWxsZXJGcmFtZSgpLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sCisgICAgICAgIGV4ZWMt
PmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChleGVjLT5jYWxsZXJG
cmFtZSgpLCBleGVjLT5yZXR1cm5QQygpKSk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Ro
cm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gZXhl
Yy0+Z2xvYmFsRGF0YSgpLmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKwor
SW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiog
cGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEo
KTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0
aW9uICVzIChyZXR1cm5Ub1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlw
dGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9i
YWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygp
LmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBnbG9iYWxEYXRhLT5sbGludERhdGEuZXhjZXB0
aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSogZXhl
YywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZl
eGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYo
IlRocm93aW5nIGV4Y2VwdGlvbiAlcyAoY2FsbFRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhj
ZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERh
dGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpOworfQorCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmluZSBMTElu
dEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCituYW1lc3BhY2UgSlNDIHsK
KworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJ
bnQgeworCisvLyBUaHJvdyB0aGUgY3VycmVudGx5IGFjdGl2ZSBleGNlcHRpb24gaW4gdGhlIGNv
bnRleHQgb2YgdGhlIGNhbGxlcidzIGNhbGwgZnJhbWUuCit2b2lkIGludGVycHJldGVyVGhyb3dJ
bkNhbGxlcihFeGVjU3RhdGUqKTsKKworLy8gVGVsbHMgeW91IHdoZXJlIHRvIGp1bXAgdG8gaWYg
eW91IHdhbnQgdG8gcmV0dXJuLXRvLXRocm93LCBhZnRlciB5b3UndmUgYWxyZWFkeQorLy8gc2V0
IHVwIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gdGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0luc3Ry
dWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOworCisv
LyBTYXZlcyB0aGUgY3VycmVudCBQQyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGlu
ZywgYW5kIGdpdmVzIHlvdSBhIFBDCisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0
ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90
cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRl
cnByZXRlcidzCisvLyBleGNlcHRpb24gaGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0
IHRoZSBQQyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8g
anVzdCByZXR1cm4gdGhhdCBQQyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8v
IGxldHMgeW91IHRocmVhZCBleGNlcHRpb24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVy
IGZ1bmN0aW9ucyB1c2VkIGJ5CisvLyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVy
blRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5
b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxsIHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0
YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNl
bmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludEV4Y2VwdGlvbnNfaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5jcHAJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
LCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJMTEludEhlbHBlcnMuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkFyZ3Vt
ZW50cy5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRo
cy5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJu
VmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVC5oIgorI2lu
Y2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUg
IkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKKyNp
bmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdGF0aWNTY29w
ZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgor
I2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCisj
aW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIK
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKKyNkZWZpbmUgTExJTlRfQkVH
SU4oKSBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZleGVjLT5nbG9iYWxEYXRhKCksIGV4
ZWMpCisKKyNkZWZpbmUgTExJTlRfT1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRSKHBjW2luZGV4
XS51Lm9wZXJhbmQpKQorI2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRl
eF0udS5vcGVyYW5kKSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQp
IGRvIHsgICAgICAgXAorICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGE7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGI7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICAgICAgfSBwYWlyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgaW50NjRfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICB9IF9fcnRfdTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBfX3J0X3UucGFpci5hID0gZmlyc3Q7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBf
X3J0X3UucGFpci5iID0gc2Vjb25kOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1
cm4gX19ydF91Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZh
bHNlKQorCisjZGVmaW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhl
YykKKworI2RlZmluZSBMTElOVF9USFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fdF9nbG9iYWxEYXRhID0g
ZXhlYy0+Z2xvYmFsRGF0YSgpOyAgICAgICAgXAorICAgICAgICBfX3RfZ2xvYmFsRGF0YS5leGNl
cHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgXAorICAgICAgICBwYyA9IHJl
dHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGV4
ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSB7ICAgXAorICAgICAgICAgICAgcGMgPSByZXR1
cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9F
TkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZh
bHNlKQorCisjZGVmaW5lIExMSU5UX0VORCgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAg
ICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGls
ZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQlJBTkNIKG9wY29kZSwgY29uZGl0aW9uKSBkbyB7
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYm9vbCBfX2JfY29uZGl0aW9uID0gKGNv
bmRpdGlvbik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tf
RVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
aWYgKF9fYl9jb25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIHBjICs9IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3Bl
cmFuZDsgICAgICAgIFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5H
VEgob3Bjb2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5E
X0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9
IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAg
ICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAg
ICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAor
ICAgICAgICBMTElOVF9PUCgxKSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAgXAorICAgICAg
ICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUg
KGZhbHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcGNvZGUsIHZhbHVlKSBk
byB7ICAgICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcnBfcmV0dXJuVmFsdWUgPSAo
dmFsdWUpOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09Q
KDEpID0gX19ycF9yZXR1cm5WYWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9
IFwKKyAgICAgICAgICAgIEpTVmFsdWU6OmVuY29kZShfX3JwX3JldHVyblZhbHVlKTsgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExM
SU5UX0NBTExfRU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RXTygoY2Fs
bFRhcmdldCksIChleGVjKSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBl
eGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUq
IF9fY3RfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBJbnN0cnVjdGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fY3RfZ2xvYmFsRGF0YSA9
IChfX2N0X2V4ZWMpLT5nbG9iYWxEYXRhKCk7ICAgICAgXAorICAgICAgICBfX2N0X2dsb2JhbERh
dGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3RfZXhlYywgY2FsbFRvVGhyb3coX19jdF9leGVj
LCBfX2N0X3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxM
X0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBFeGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jY2VfcGMgPSAocGMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFko
X19jY2VfZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2Nj
ZV9leGVjLCBfX2NjZV9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJ
TlRfQ0FMTF9SRVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMgPSAo
cGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9pZCog
X19jcl9jYWxsVGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19jcl9leGVjLT5jYWxsZXJG
cmFtZSgpLCBfX2NyX3BjKTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NyX2V4
ZWMsIF9fY3JfY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxz
ZSkKKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhl
Y1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5k
KQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNl
KCVkKTogJWQ6ICVkXG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAg
ICAgZXhlYywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29k
ZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5nbG9i
YWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAg
ICAgICAgZnJvbVdoZXJlLAorICAgICAgICAgICBvcGVyYW5kLAorICAgICAgICAgICBwY1tvcGVy
YW5kXS51Lm9wZXJhbmQpOworICAgIExMSU5UX0VORCgpOworfQorCitleHRlcm4gIkMiIEhlbHBl
clJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlv
biogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIEpTVmFsdWUgdmFsdWUg
PSBMTElOVF9PUF9DKG9wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0
cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCB0YWc7CisgICAgICAgICAgICB1aW50MzJfdCBw
YXlsb2FkOworICAgICAgICB9IGJpdHM7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlIGFzVmFsdWU7
CisgICAgfSB1OworICAgIHUuYXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAg
cHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDog
JWQ6ICUwOHg6JTA4eCIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAg
ICBleGVjLAorICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2Rl
QmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmdsb2Jh
bERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAg
ICAgICBmcm9tV2hlcmUsCisgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJh
bmRdLnUub3BlcmFuZCwKKyAgICAgICAgICAgdS5iaXRzLnRhZywKKyAgICAgICAgICAgdS5iaXRz
LnBheWxvYWQpOworI2lmbmRlZiBOREVCVUcKKyAgICBwcmludGYoIjogJXMiLCB2YWx1ZS5kZXNj
cmlwdGlvbigpKTsKKyNlbmRpZgorICAgIHByaW50ZigiXG4iKTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpCit7CisgICAgcHJpbnRmKCIl
cCAvICVwOiBpbiBwcm9sb2d1ZS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVl
KCkpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVj
dXRhYmxlKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJh
dGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5j
dGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUs
IG51bUNhbGxlZVJlZ2lzdGVycyA9ICV1LlxuIiwKKyAgICAgICAgICAgY29kZUJsb2NrLCBleGVj
LCBjb21tZW50LCBjYWxsZWUsIGV4ZWN1dGFibGUsCisgICAgICAgICAgIGNvZGVCbG9jay0+bV9u
dW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxl
ZVJlZ2lzdGVycyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0
aW9uX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBw
cm9sb2d1ZSIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0
cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JD
b25zdHJ1Y3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFj
ZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVj
LCAiY2FsbCBhcml0eSBjaGVjayIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQorewor
ICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IGFyaXR5IGNoZWNrIiwg
Q29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKHRyYWNlKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgIiwK
KyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAg
ICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpKSk7CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50ZigiJXMsICIsIG9w
Y29kZU5hbWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNb
MF0udS5vcGNvZGUpXSk7CisjZWxzZQorICAgIHByaW50Zigib3AjJXUsICIsIGV4ZWMtPmdsb2Jh
bERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpKTsKKyNlbmRp
ZgorICAgIHByaW50Zigic2NvcGUgJXBcbiIsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJhY2UpCit7CisgICAg
cHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJl
dHVybiBQQyBpcyAlcFxuIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAg
ICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNv
ZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAg
ICAgICAgIGV4ZWMtPnJldHVyblBDKCkudmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K2lubGluZSBib29sIHNob3VsZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gWW91IGNh
biBtb2RpZnkgdGhpcyB0byB0dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0aGUg
d29ybGQuCisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQoKTsKK30KKwor
ZW51bSBFbnRyeUtpbmQgeyBQcm9sb2d1ZSwgQXJpdHlDaGVjayB9Oworc3RhdGljIEhlbHBlclJl
dHVyblR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVC
bG9jayogY29kZUJsb2NrLCBjb25zdCBjaGFyICpuYW1lLCBFbnRyeUtpbmQga2luZCkKK3sKKyNp
ZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgJXMgd2l0
aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIG5hbWUsIGNvZGVCbG9jay0+bGxp
bnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4
ZWMpKSB7CisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAg
IExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIGlmICghY29kZUJsb2NrLT5q
aXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0Vf
T1NSKQorICAgICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7
CisjZW5kaWYKKyAgICB9CisgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgaWYgKGtpbmQg
PT0gUHJvbG9ndWUpCisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRD
b2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7CisgICAgQVNTRVJUKGtp
bmQgPT0gQXJpdHlDaGVjayk7CisgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJ
VENvZGVXaXRoQXJpdHlDaGVjaygpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGV4ZWMpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMs
IHBjLCBleGVjLT5jb2RlQmxvY2soKSwgImVudHJ5X29zciIsIFByb2xvZ3VlKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHJldHVy
biBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1
dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1
bmN0aW9uX2Zvcl9jYWxsIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhl
YywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVy
YXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3QiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29z
cl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihl
eGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2Vu
ZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9j
YWxsX2FyaXR5Q2hlY2siLCBBcml0eUNoZWNrKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50
cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICByZXR1cm4g
ZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRh
YmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOworfQorCitM
TElOVF9IRUxQRVJfREVDTChsb29wX29zcikKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisg
ICAgcHJpbnRmKCIlcDogRW50ZXJlZCBsb29wX29zciB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRc
biIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlm
CisgICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5k
b250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsK
KyAgICB9CisgICAgCisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFs
RGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50Zigi
ICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBj
b2RlQmxvY2stPmppdFNvb24oKTsKKyAgICAKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRU
eXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIAorICAgIFZlY3RvcjxCeXRlY29k
ZUFuZE1hY2hpbmVPZmZzZXQ+IG1hcDsKKyAgICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVj
b2RlKG1hcCk7CisgICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5
U2VhcmNoPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQsIEJ5dGVjb2RlQW5kTWFj
aGluZU9mZnNldDo6Z2V0Qnl0ZWNvZGVJbmRleD4obWFwLmJlZ2luKCksIG1hcC5zaXplKCksIHBj
IC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICBBU1NFUlQobWFwcGlu
Zyk7CisgICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9PSBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyAgICAK
KyAgICB2b2lkKiBqdW1wVGFyZ2V0ID0gY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3NBdE9mZnNldChtYXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKKyAgICBBU1NF
UlQoanVtcFRhcmdldCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOX1RXTyhqdW1wVGFyZ2V0LCBl
eGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSkKK3sKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVS
Qk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCByZXBsYWNlIHdpdGggZXhlY3V0ZUNv
dW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIo
KSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGlm
ICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFC
TEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxy
ZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgY29kZUJsb2Nr
LT5qaXRTb29uKCk7CisgICAgfSBlbHNlCisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRp
bWVTb29uKCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lz
dGVyX2ZpbGVfY2hlY2spCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyNpZiBMTElOVF9IRUxQRVJf
VFJBQ0lORworICAgIHByaW50ZigiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0IHdpdGggZXhlYyA9ICVw
LlxuIiwgZXhlYyk7CisgICAgcHJpbnRmKCJDb2RlQmxvY2sgPSAlcC5cbiIsIGV4ZWMtPmNvZGVC
bG9jaygpKTsKKyAgICBwcmludGYoIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBleGVj
LT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgIHByaW50ZigiTnVtIHZh
cnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bVZhcnMpOworICAgIHByaW50Zigi
Q3VycmVudCBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXIt
PnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKKyNlbmRpZgorICAgIEFTU0VSVCgmZXhlYy0+cmVnaXN0
ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSA+IGV4ZWMtPmds
b2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOworICAgIGlmIChV
TkxJS0VMWSghZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5n
cm93KCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdp
c3RlcnNdKSkpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAg
IGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3Io
ZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAg
cGMgPSByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKGV4ZWMpOworICAgIH0KKyAgICBM
TElOVF9FTkRfSU1QTCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0
eUNoZWNrKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0g
Q29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCku
aW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ2FsbCk7CisgICAgaWYgKCFuZXdF
eGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVj
LT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMp
OworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIExMSU5U
X1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEp
KSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6
YXJpdHlDaGVja0ZvcihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdp
c3RlckZpbGUoKSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAg
ICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRh
KCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBp
bnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08o
Yml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7Cisg
ICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
I2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGluZyBhbiBhY3RpdmF0
aW9uLCBleGVjID0gJXAhXG4iLCBleGVjKTsKKyNlbmRpZgorICAgIEpTQWN0aXZhdGlvbiogYWN0
aXZhdGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYywg
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlYy0+Y29kZUJsb2NrKCktPm93bmVy
RXhlY3V0YWJsZSgpKSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWlu
KCktPnB1c2goYWN0aXZhdGlvbikpOworICAgIExMSU5UX1JFVFVSTihKU1ZhbHVlKGFjdGl2YXRp
b24pKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9IEpTVmFsdWUoQXJn
dW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKSk7CisgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgZXhlYy0+dW5jaGVja2VkUihwY1sxXS51Lm9wZXJhbmQpID0g
YXJndW1lbnRzOworICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lz
dGVyKHBjWzFdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOworICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3RoaXMpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGFzRnVuY3Rpb24oZXhlYy0+Y2Fs
bGVlKCkpOworICAgIAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBDb25zdHJ1Y3REYXRhIGNv
bnN0cnVjdERhdGE7CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRD
b25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBl
SlMpOworI2VuZGlmCisgICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7CisgICAgSlNWYWx1
ZSBwcm90byA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAocHJvdG8uaXNPYmplY3Qo
KSkKKyAgICAgICAgc3RydWN0dXJlID0gYXNPYmplY3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVj
LT5nbG9iYWxEYXRhKCkpOworICAgIGVsc2UKKyAgICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0
b3ItPnNjb3BlKCktPmdsb2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAK
KyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAg
IEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBMTElOVF9SRVRVUk4odjEudG9UaGlzT2Jq
ZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmplY3QpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmpl
Y3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5KQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMs
IGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4oJkxMSU5UX09QKDIpKSwgcGNbM10udS5vcGVyYW5kKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGV4
ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihwY1syXS51Lm9wZXJhbmQpLCBwY1szXS51
Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdleHApCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBSZWdFeHAqIHJlZ0V4cCA9IGV4ZWMtPmNvZGVCbG9j
aygpLT5yZWdleHAocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgp
KQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBm
bGFnIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSk7CisgICAgTExJTlRfUkVUVVJO
KFJlZ0V4cE9iamVjdDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEds
b2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVy
ZSgpLCByZWdFeHApKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUxMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFs
dWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpz
dHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVl
OjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8dHJ1
ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTx0cnVlPihleGVj
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
ICsgMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYykKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wb3N0X2luYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGRvdWJsZSByZXN1bHQgPSBM
TElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBq
c051bWJlcihyZXN1bHQgKyAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYykKK3sKKyAgICBMTElOVF9C
RUdJTigpOworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1i
ZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQgLSAxKTsKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90b19qc251bWJlcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKC1MTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051
bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgp
OworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyNpZiBM
TElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVHJ5aW5nIHRvIGFkZCAlcyIsIHYxLmRl
c2NyaXB0aW9uKCkpOworICAgIHByaW50ZigiIHRvICVzLlxuIiwgdjIuZGVzY3JpcHRpb24oKSk7
CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNTdHJpbmcoKSAmJiAhdjIuaXNPYmplY3QoKSkK
KyAgICAgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9T
dHJpbmcoZXhlYykpKTsKKyAgICAKKyAgICBpZiAodjEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJl
cigpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIodjEuYXNOdW1iZXIoKSArIHYyLmFz
TnVtYmVyKCkpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNBZGRTbG93Q2FzZShleGVjLCB2
MSwgdjIpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCkKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKS50b051bWJlcihleGVjKSAqIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4
ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9OdW1iZXIoZXhlYykgLSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVj
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgp
LnRvTnVtYmVyKGV4ZWMpIC8gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihmbW9kKExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLnRvTnVtYmVyKGV4ZWMpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVj
KSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCkKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKS50b0ludDMyKGV4ZWMpIDw8IChMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihl
eGVjKSAmIDMxKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gKExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRv
VUludDMyKGV4ZWMpICYgMzEpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNo
aWZ0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpID4+IChMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKS50b1VJbnQzMihleGVjKSAmIDMxKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfYml0YW5kKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpz
TnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgJiBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9iaXRvcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051
bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIHwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfYml0eG9yKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgXiBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9iaXRub3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIofkxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIEpTVmFsdWUgYmFzZVZhbCA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworI2lm
bmRlZiBOREVCVUcKKyAgICBUeXBlSW5mbyB0eXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAg
IEFTU0VSVCghYmFzZVZhbC5pc09iamVjdCgpCisgICAgICAgICAgIHx8ICEodHlwZUluZm8gPSBh
c09iamVjdChiYXNlVmFsKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJ
bnN0YW5jZSgpKTsKKyNlbmRpZgorICAgIExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRQYXJhbUVy
cm9yKGV4ZWMsICJpbnN0YW5jZW9mIiwgYmFzZVZhbCkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaW5zdGFuY2VvZikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluc3RhbmNlT2ZTbG93KGV4ZWMsIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
Qyg0KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2Yp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNUeXBlU3RyaW5nRm9y
VmFsdWUoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpT
VmFsdWUgdiA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4odi5pc0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1h
c3F1ZXJhZGVzQXNVbmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkuaXNCb29sZWFu
KCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJlcikKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNf
c3RyaW5nKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihpc0pTU3RyaW5nKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzT2JqZWN0VHlwZShMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rpb25U
eXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaW4pCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9yZXNvbHZlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJ
TEVEKG9wX3Jlc29sdmUsIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNv
ZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IExMSU5UX1JFVFVSTl9QUk9GSUxFRCgKKyAgICAgICAgb3BfcmVzb2x2ZV9za2lwLAorICAgICAg
ICBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVNraXAoCisgICAgICAgICAgICBleGVjLAorICAg
ICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwK
KyAgICAgICAgICAgIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitzdGF0aWMgSlNWYWx1ZSByZXNv
bHZlR2xvYmFsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGds
b2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0u
dS5vcGVyYW5kOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUu
Z2V0KCk7CisgICAgCisgICAgQVNTRVJUX1VOVVNFRChzdHJ1Y3R1cmUsIHN0cnVjdHVyZSAhPSBn
bG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9
IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qo
Z2xvYmFsT2JqZWN0KTsKKyAgICAKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNs
b3QoZXhlYywgaWRlbnQsIHNsb3QpKSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5n
ZXRWYWx1ZShleGVjLCBpZGVudCk7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUo
KSAmJiAhZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnko
KQorICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgeworICAg
ICAgICAgICAgcGNbM10udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmds
b2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5z
dHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAor
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVVbmRlZmluZWRWYXJpYWJs
ZUVycm9yKGV4ZWMsIGlkZW50KTsKKyAgICByZXR1cm4gSlNWYWx1ZSgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWwsIHJlc29sdmVHbG9i
YWwoZXhlYywgcGMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk5fUFJP
RklMRUQob3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYywgcmVzb2x2ZUdsb2JhbChleGVjLCBwYykp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9i
YWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTl9QUk9G
SUxFRChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljLCBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2
ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2UpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5p
ZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKHBjWzNdLnUub3BlcmFuZCkgewor
ICAgICAgICBKU1ZhbHVlIGJhc2UgPSBKU0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVj
LT5zY29wZUNoYWluKCksIHRydWUpOworICAgICAgICBpZiAoIWJhc2UpCisgICAgICAgICAgICBM
TElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlk
ZW50LnVzdHJpbmcoKSkpOworICAgICAgICBMTElOVF9SRVRVUk4oYmFzZSk7CisgICAgfQorICAg
IAorICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2Jhc2UsIEpTQzo6cmVzb2x2
ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgZmFsc2UpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoTExJTlRfT1AoMSku
anNWYWx1ZSgpKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAgIElkZW50aWZp
ZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5k
KTsKKyAgICBpZiAoIW9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkK
KyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVu
dChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhC
YXNlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCks
IExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9P
UCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJv
ZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4K
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVf
d2l0aF90aGlzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBD
b21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhUaGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygp
LT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhN
RTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQg
YmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRp
ZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIFByb3Bl
cnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1
ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgIExMSU5UX09QKDEpID0gcmVzdWx0OworCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQor
ICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkKKyAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgp
ID09IGJhc2VWYWx1ZQorICAgICAgICAmJiBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFBy
b3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwg
PSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFz
ZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlz
VW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJ
bmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKKyAgICAgICAgICAgIHBjWzRdLnUu
c3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVC
bG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBwY1s1XS51
Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIHBjW09QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X2lkKSAtIDFd
LnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRz
X2xlbmd0aCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2st
PmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExM
SU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOwor
ICAgIExMSU5UX1JFVFVSTihiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElk
ZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7
CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsK
KyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAg
ICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5wdXRE
aXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCks
IHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpZGVudCwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
OworICAgIAorICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0Nh
Y2hlYWJsZSgpKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZh
bHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5z
dHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVh
YmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnBy
b2hpYml0c1Byb3BlcnR5Q2FjaGluZygpCisgICAgICAgICAgICAmJiBiYXNlQ2VsbCA9PSBzbG90
LmJhc2UoKSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0g
UHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgeworICAgICAgICAgICAgICAgIGlmICghc3Ry
dWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+cHJvcGVy
dHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21l
IG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKKyAgICAgICAgICAgICAgICAgICAgLy8gYmVsb3cgbWF5
IEdDLgorICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisKKyAgICAgICAgICAgICAgICAgICAgbm9ybWFs
aXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAgICAgICAgICAgICAgICAgICAK
KyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5pc09i
amVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAg
ICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAgICAgICAgICAgICAg
ICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1
ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4q
IGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKKyAgICAgICAgICAgICAg
ICAgICAgQVNTRVJUKGNoYWluKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1
cmVDaGFpbi5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCks
IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNoYWluKTsKKyAgICAgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQpCisgICAgICAgICAg
ICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50
X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBjWzBdLnUu
b3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAgICAg
ICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAgIGV4
ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJl
KTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgp
ICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAg
IAorICAgIGlmIChmYWxzZSAmJiAhc3RyY21wKGlkZW50LmFzY2lpKCkuZGF0YSgpLCAicmVuZGVy
UmVmbGVjdGlvbnMiKSkKKyAgICAgICAgcHJpbnRmKCJGaW5pc2hpbmcgYWNjZXNzIHRvIHJlbmRl
clJlZmxlY3Rpb25zIGZyb20gTExJbnQgc2xvdyBwYXRoLlxuIik7CisgICAgCisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9j
aygpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
dG9PYmplY3QoZXhlYyk7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMsIGNvZGVCbG9jay0+aWRl
bnRpZmllcihwY1szXS51Lm9wZXJhbmQpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsK
KyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAg
ICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBw
cm9wZXJ0eS4iKSk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOwor
fQorCitpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFz
ZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKK3sKKyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5p
c0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUg
cmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVydHkoZXhlYywgYXNT
dHJpbmcoc3Vic2NyaXB0KS0+dmFsdWUoZXhlYykpKQorICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICB9CisgICAgCisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAg
IHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNTdHJp
bmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAg
ICAgICAgICAgIHJldHVybiBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsK
KyAgICAgICAgCisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRl
QXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpCisgICAgICAgICAgICByZXR1cm4g
YXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAorICAg
ICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBpKTsKKyAgICB9CisgICAgCisgICAgSWRl
bnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBwcm9wZXJ0eSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9ieV92YWwsIGdldEJ5VmFsKGV4ZWMs
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gTExJTlRfT1AoMikuanNWYWx1
ZSgpOworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAgICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50
czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYyk7CisgICAgICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOworICAgICAgICBMTElOVF9PUCgyKSA9IGFyZ3VtZW50czsKKyAgICAgICAg
ZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVy
YW5kKSkgPSBhcmd1bWVudHM7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihnZXRCeVZh
bChleGVjLCBhcmd1bWVudHMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBM
TElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1
dF9ieV92YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5U
X09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKTsKKyAgICAKKyAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgewor
ICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChp
c0pTQXJyYXkoYmFzZVZhbHVlKSkgeworICAgICAgICAgICAgSlNBcnJheSoganNBcnJheSA9IGFz
QXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChp
KSkKKyAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRleChnbG9iYWxEYXRhLCBpLCB2YWx1
ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgSlNBcnJheTo6cHV0QnlJbmRl
eChqc0FycmF5LCBleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAg
ICAgICAgfQorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpCisgICAgICAgICAg
ICAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAgICAg
ICAgICAgSlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsK
KyAgICAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5
dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICBM
TElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc051bWJl
cigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFz
TnVtYmVyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaSwgdmFsdWUpOworICAgICAg
ICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVj
LCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChleGVjLT5jb2RlQmxvY2so
KS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZh
bHVlLCBzbG90KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2RlbF9ieV92YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGJhc2VW
YWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0
ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIAorICAgIEpTVmFsdWUgc3Vic2NyaXB0
ID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisgICAgYm9vbCBjb3VsZERlbGV0ZTsK
KyAgICAKKyAgICB1aW50MzJfdCBpOworICAgIGlmIChzdWJzY3JpcHQuZ2V0VUludDMyKGkpKQor
ICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVBy
b3BlcnR5QnlJbmRleChiYXNlT2JqZWN0LCBleGVjLCBpKTsKKyAgICBlbHNlIHsKKyAgICAgICAg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhl
Yywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1l
dGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMsIHByb3BlcnR5KTsK
KyAgICB9CisgICAgCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBleGVjLT5jb2RlQmxvY2soKS0+
aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVj
LCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHV0X2J5X2luZGV4KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfT1BfQygxKS5q
c1ZhbHVlKCkucHV0KGV4ZWMsIHBjWzJdLnUub3BlcmFuZCwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0
X2dldHRlcl9zZXR0ZXIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBBU1NFUlQoTExJTlRf
T1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNP
YmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICAKKyAgICBHZXR0ZXJTZXR0ZXIqIGFj
Y2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CisgICAgCisgICAgSlNWYWx1ZSBnZXR0ZXIgPSBMTElOVF9PUCgzKS5qc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSBzZXR0ZXIgPSBMTElOVF9PUCg0KS5qc1ZhbHVlKCk7CisgICAgQVNT
RVJUKGdldHRlci5pc09iamVjdCgpIHx8IGdldHRlci5pc1VuZGVmaW5lZCgpKTsKKyAgICBBU1NF
UlQoc2V0dGVyLmlzT2JqZWN0KCkgfHwgc2V0dGVyLmlzVW5kZWZpbmVkKCkpOworICAgIEFTU0VS
VChnZXR0ZXIuaXNPYmplY3QoKSB8fCBzZXR0ZXIuaXNPYmplY3QoKSk7CisgICAgCisgICAgaWYg
KCFnZXR0ZXIuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgYWNjZXNzb3ItPnNldEdldHRlcihleGVj
LT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KGdldHRlcikpOworICAgIGlmICghc2V0dGVyLmlzVW5k
ZWZpbmVkKCkpCisgICAgICAgIGFjY2Vzc29yLT5zZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgp
LCBhc09iamVjdChzZXR0ZXIpKTsKKyAgICBiYXNlT2JqLT5wdXREaXJlY3RBY2Nlc3NvcigKKyAg
ICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLAorICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+aWRl
bnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAgICAgICBhY2Nlc3NvciwgQWNjZXNzb3IpOwor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam1wX3Njb3Bl
cykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIHVuc2lnbmVkIGNvdW50ID0gcGNbMV0udS5v
cGVyYW5kOworICAgIFNjb3BlQ2hhaW5Ob2RlKiB0bXAgPSBleGVjLT5zY29wZUNoYWluKCk7Cisg
ICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAgIHRtcCA9IHRtcC0+cG9wKCk7CisgICAgZXhlYy0+
c2V0U2NvcGVDaGFpbih0bXApOworICAgIHBjICs9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2p0cnVlLCBMTElOVF9PUF9DKDEpLmpz
VmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
amZhbHNlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2pmYWxz
ZSwgIUxMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExM
SU5UX0JSQU5DSChvcF9qbGVzcywganNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfam5sZXNzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNI
KG9wX2pubGVzcywgIWpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2pncmVhdGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2pn
cmVhdGVyLCBqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5n
cmVhdGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3Jl
YXRlciwgIWpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVz
c2VxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEs
IGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzZXEsICFq
c0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXJlcSwg
anNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVy
ZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVy
ZXEsICFqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0
Y2hfaW1tKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoc2NydXRpbmVlLmlzRG91YmxlKCkp
OworICAgIGRvdWJsZSB2YWx1ZSA9IHNjcnV0aW5lZS5hc0RvdWJsZSgpOworICAgIGludDMyX3Qg
aW50VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSk7CisgICAgaW50IGRlZmF1bHRP
ZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKHZhbHVlID09IGludFZhbHVlKSB7Cisg
ICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAg
IHBjICs9IGNvZGVCbG9jay0+aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFu
ZCkub2Zmc2V0Rm9yVmFsdWUoaW50VmFsdWUsIGRlZmF1bHRPZmZzZXQpOworICAgIH0gZWxzZQor
ICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0cmluZykKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAg
aW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKCFzY3J1dGluZWUu
aXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBlbHNlIHsKKyAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAg
cGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5v
ZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGluZWUpLT52YWx1ZShleGVjKS5pbXBsKCksIGRl
ZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25ld19mdW5jKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2Nr
LT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZQorICAgICAgICAgICB8fCAhY29kZUJsb2NrLT5u
ZWVkc0Z1bGxTY29wZUNoYWluKCkKKyAgICAgICAgICAgfHwgZXhlYy0+dW5jaGVja2VkUihjb2Rl
QmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpOworI2lmIExMSU5UX0hFTFBF
Ul9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGluZyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisg
ICAgTExJTlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzJdLnUub3BlcmFuZCkt
Pm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXdfZnVuY19leHApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJs
ZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1syXS51Lm9wZXJhbmQpOwor
ICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBmdW5jdGlvbi0+bWFrZShleGVjLCBleGVjLT5zY29wZUNo
YWluKCkpOworICAgIAorICAgIGlmICghZnVuY3Rpb24tPm5hbWUoKS5pc051bGwoKSkgeworICAg
ICAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBmdW5jdGlvblNjb3BlT2JqZWN0ID0gSlNTdGF0aWNT
Y29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKCksIGZ1bmMsIFJlYWRPbmx5
IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGZ1bmMtPnNldFNjb3BlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgZnVuYy0+c2NvcGUoKS0+cHVzaChmdW5jdGlvblNjb3BlT2JqZWN0KSk7CisgICAgfQorICAg
IAorICAgIExMSU5UX1JFVFVSTihmdW5jKTsKK30KKworc3RhdGljIEhlbHBlclJldHVyblR5cGUg
aGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIEpT
VmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgRXhlY1N0
YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICBKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworCisgICAgZXhlY0NhbGxlZS0+c2V0
U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVC
bG9jaygwKTsKKworICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIENhbGxE
YXRhIGNhbGxEYXRhOworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNh
bGxlZSwgY2FsbERhdGEpOworICAgIAorICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5
cGVKUyk7CisgICAgCisgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUhvc3QpIHsKKyAg
ICAgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNv
ZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICAgICAgfQorICAgICAg
ICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgICAgICBwcmludGYoIkNhbGwgY2FsbGVl
IGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlm
CisKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSk7CisgICAgICAgIExM
SU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIGNh
bGxlZSkpOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwor
ICAgIAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBl
IGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0RGF0YSk7
CisgICAgCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZUpTKTsKKyAg
ICAKKyAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlSG9zdCkgeworICAgICAg
ICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0
cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAgICAgTExJTlRfQ0FM
TF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcK
KyAgICAgICAgcHJpbnRmKCJDb25zdHJ1Y3RvciBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVz
XG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChjb25zdHJ1
Y3RUeXBlID09IENvbnN0cnVjdFR5cGVOb25lKTsKKyAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMs
IHBjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKK30KKworaW5s
aW5lIEhlbHBlclJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5z
dHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUgY2FsbGVl
QXNWYWx1ZSwgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCit7CisgICAgSlND
ZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSk7
CisgICAgaWYgKCFjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUhv
c3RDYWxsKGV4ZWNDYWxsZWUsIHBjLCBjYWxsZWVBc1ZhbHVlLCBraW5kKTsKKyAgICAKKyAgICBK
U0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAg
ICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKSk7Cisg
ICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAg
ICAKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IDA7CisgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAg
ICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJl
c3NGb3JDYWxsKCk7CisgICAgZWxzZSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVu
Y3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0
YWJsZSk7CisgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29t
cGlsZUZvcihleGVjQ2FsbGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOworICAgICAgICBpZiAo
ZXJyb3IpCisgICAgICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxlckZy
YW1lKCksIHBjLCBlcnJvcik7CisgICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFi
bGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgICAgICBBU1NFUlQoY29kZUJsb2Nr
KTsKKyAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkg
PCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKKyAgICAg
ICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVXaXRo
QXJpdHlDaGVja0ZvcihraW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVB0ciA9
IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9y
Q2FsbCgpOworICAgIH0KKyAgICAKKyAgICBpZiAoY2FsbExpbmtJbmZvKSB7CisgICAgICAgIGlm
IChjYWxsTGlua0luZm8tPmlzT25MaXN0KCkpCisgICAgICAgICAgICBjYWxsTGlua0luZm8tPnJl
bW92ZSgpOworICAgICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZXIgPSBleGVjQ2FsbGVlLT5jYWxs
ZXJGcmFtZSgpOworICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQoZXhlY0NhbGxlci0+
Z2xvYmFsRGF0YSgpLCBleGVjQ2FsbGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCks
IGNhbGxlZSk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuc2V0KGV4ZWND
YWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0
YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0
ID0gY29kZVB0cjsKKyAgICAgICAgaWYgKGNvZGVCbG9jaykKKyAgICAgICAgICAgIGNvZGVCbG9j
ay0+bGlua0luY29taW5nQ2FsbChjYWxsTGlua0luZm8pOworICAgIH0KKyAgICAKKyAgICBMTElO
VF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygp
KTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBl
eGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAg
ICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAv
LyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4K
KyAgICAvLyAtIElmIHBvc3NpYmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAg
IC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQg
dGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9
IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT51
bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhl
Y0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgCisgICAgQVNTRVJUKHBjWzRdLnUu
Y2FsbExpbmtJbmZvKTsKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5k
LCBjYWxsZWVBc1ZhbHVlLCBwY1s0XS51LmNhbGxMaW5rSW5mbyk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgcmV0dXJuIGdl
bmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jb25zdHJ1Y3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICByZXR1cm4gZ2Vu
ZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY2FsbF92YXJhcmdzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgLy8g
VGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUgd2hpbGUgcmVzcGVj
dGluZyB0aGUgdmFyaWFibGUgYXJndW1lbnRzLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRv
IGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gUmV0dXJuIGEgdHVw
bGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1l
LgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1
ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAorICAg
ICAgICBleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUo
KSwKKyAgICAgICAgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpLCBwY1s0XS51Lm9wZXJhbmQpOworICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4
ZWMsIHBjKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6
Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUo
ZXhlYyk7CisgICAgZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQp
LnRhZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxs
X3ZhcmFyZ3MpKTsKKyAgICAKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBD
b2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9jYWxsX2V2YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGNhbGxlZUFz
VmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVj
Q2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVl
LT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lz
dGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0U2Nv
cGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBD
KGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KCZsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkp
OworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKyAgICBleGVjLT51bmNoZWNrZWRS
KFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJf
dD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfZXZhbCkpOworICAgIAorICAgIGlmICghaXNI
b3N0RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQorICAgICAgICByZXR1
cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7
CisgICAgCisgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0gZXZhbChleGVjQ2Fs
bGVlKTsKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAg
ICBKU1ZhbHVlIGFjdGl2YXRpb25WYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBp
ZiAoIWFjdGl2YXRpb25WYWx1ZSkgeworICAgICAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5j
aGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNW
YWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1v
ZGUoKSkKKyAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVjKTsKKyAg
ICAgICAgfQorICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9uKiBh
Y3RpdmF0aW9uID0gYXNBY3RpdmF0aW9uKGFjdGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZhdGlv
bi0+dGVhck9mZihleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVj
LT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQp
KS5qc1ZhbHVlKCkpCisgICAgICAgIGFzQXJndW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0aXZhdGlv
bihleGVjLT5nbG9iYWxEYXRhKCksIGFjdGl2YXRpb24pOworICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRz
KCkgJiYgIWV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIGFz
QXJndW1lbnRzKGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBj
WzFdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSktPnRlYXJPZmYoZXhlYyk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNTdHJpbmcoZXhlYywgJkxMSU5UX09QKDIpLCBw
Y1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1p
dGl2ZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKS50b1ByaW1pdGl2ZShleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9nZXRfcG5hbWVzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2
ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICh2LmlzVW5kZWZpbmVkT3JOdWxsKCkp
IHsKKyAgICAgICAgcGMgKz0gcGNbNV0udS5vcGVyYW5kOworICAgICAgICBMTElOVF9FTkQoKTsK
KyAgICB9CisgICAgCisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIFN0
cnVjdHVyZSogc3RydWN0dXJlID0gby0+c3RydWN0dXJlKCk7CisgICAgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IHN0cnVjdHVyZS0+ZW51bWVyYXRpb25D
YWNoZSgpOworICAgIGlmICghanNQcm9wZXJ0eU5hbWVJdGVyYXRvciB8fCBqc1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLT5jYWNoZWRQcm90b3R5cGVDaGFpbigpICE9IHN0cnVjdHVyZS0+cHJvdG90eXBl
Q2hhaW4oZXhlYykpCisgICAgICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywgbyk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBK
U1ZhbHVlKGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOworICAgIExMSU5UX09QKDIpID0gSlNWYWx1
ZShvKTsKKyAgICBMTElOVF9PUCgzKSA9IFJlZ2lzdGVyOjp3aXRoSW50KDApOworICAgIExMSU5U
X09QKDQpID0gUmVnaXN0ZXI6OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2l6ZSgp
KTsKKyAgICAKKyAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFtZXMpOworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoTExJTlRf
T1AoMikuanNWYWx1ZSgpKTsKKyAgICBKU1N0cmluZyogcHJvcGVydHkgPSBhc1N0cmluZyhMTElO
VF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIGlmIChiYXNlLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVu
dGlmaWVyKGV4ZWMsIHByb3BlcnR5LT52YWx1ZShleGVjKSkpKSB7CisgICAgICAgIC8vIEdvIHRv
IHRhcmdldC4KKyAgICAgICAgcGMgKz0gcGNbNl0udS5vcGVyYW5kOworICAgIH0gLy8gRWxzZSwg
ZG9uJ3QgY2hhbmdlIHRoZSBQQywgc28gdGhlIGludGVycHJldGVyIHdpbGwgcmVsb29wLgorICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDEpLmpzVmFs
dWUoKTsKKyAgICBKU09iamVjdCogbyA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBvOworICAgIGV4ZWMtPnNl
dFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKG8pKTsKKyAgICAKKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFp
bigpLT5wb3AoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wdXNoX25ld19zY29wZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIHNjb3BlID0g
SlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihw
Y1syXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIERvbnREZWxldGUpOworICAg
IGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKHNjb3BlKSk7Cisg
ICAgTExJTlRfUkVUVVJOKHNjb3BlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Ro
cm93KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfVEhST1coTExJTlRfT1BfQygx
KS5qc1ZhbHVlKCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJl
bmNlX2Vycm9yKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfVEhST1coY3JlYXRl
UmVmZXJlbmNlRXJyb3IoZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1ZykK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBjWzFdLnUub3Bl
cmFuZDsKKyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOworICAgIGludCBsYXN0
TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50
ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJ
RCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPndp
bGxFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNl
KCkpLT5kaWRFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5B
QkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVy
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBl
cnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhl
bHBlcnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEhlbHBlcnNfaAorI2Rl
ZmluZSBMTEludEhlbHBlcnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3Bh
Y2UgTExJbnQgeworCit0eXBlZGVmIGludDY0X3QgSGVscGVyUmV0dXJuVHlwZTsKKworZXh0ZXJu
ICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiwgSW5z
dHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7CitleHRlcm4gIkMiIEhlbHBl
clJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBp
bnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7CisKKyNkZWZpbmUgTExJTlRfSEVMUEVSX0RFQ0wo
bmFtZSkgXAorICAgIGV4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF8jI25hbWUoRXhl
Y1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNl
X3Byb2xvZ3VlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zv
cl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCk7
CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpOworTExJ
TlRfSEVMUEVSX0RFQ0wodHJhY2UpOworTExJTlRfSEVMUEVSX0RFQ0woc3BlY2lhbF90cmFjZSk7
CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlf
b3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlv
bl9mb3JfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0wobG9vcF9v
c3IpOworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSk7CitMTElOVF9IRUxQRVJfREVDTChyZWdp
c3Rlcl9maWxlX2NoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hl
Y2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y3JlYXRlX3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVjdCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmV3X2FycmF5KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVm
ZmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfcmVnZXhwKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9ub3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2VxKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmlj
dGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2xlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3NlcSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
b3N0X2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9kZWMpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZWdhdGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2FkZCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbXVsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2Rpdik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3JzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdXJzaGlmdCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfYml0YW5kKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcik7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9iaXRub3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5j
ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfdHlwZW9mKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRlZmlu
ZWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Jvb2xlYW4pOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2lzX251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfc3Ry
aW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3QpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbik7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcmVzb2x2ZV9za2lwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2ds
b2JhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9iYXNlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cmVzb2x2ZV93aXRoX3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
ZGVsX2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9i
eV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHV0X2dldHRlcl9zZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qZmFsc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVh
dGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2psZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2Vx
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNo
X2ltbSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2NoYXIpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X25ld19mdW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Nv
bnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3RlYXJfb2ZmX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2Zm
X2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2dldF9wbmFtZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3BvcF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rl
YnVnKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCk7CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJ
bnRIZWxwZXJzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
bGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisjZGVmaW5lIExMSW50T2ZmbGluZUFz
bUNvbmZpZ19oCisKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0lubGluZUFzbS5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorCisjaWYgQ1BVKFg4NikKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDEKKyNlbHNl
CisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisjZW5kaWYKKworI2lmIENQVShBUk1fVEhVTUIy
KQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FT
TV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyNkZWZpbmUgT0ZGTElO
RV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJU
X0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUoQklHX0VORElBTikKKyNkZWZpbmUgT0ZGTElO
RV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFO
IDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKExMSU5UX09TUl9UT19KSVQpCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFC
TEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcKKyNkZWZpbmUgT0ZG
TElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01f
RVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisKKyNpZiBDUFUoQVJNX1RIVU1CMikKKyNkZWZp
bmUgT0ZGTElORV9BU01fR0xPQkFMX0xBQkVMKGxhYmVsKSAgICAgICAgICBcCisgICAgIi5nbG9i
bCAiIFNZTUJPTF9TVFJJTkcobGFiZWwpICJcbiIgICAgICAgICAgXAorICAgIEhJREVfU1lNQk9M
KG5hbWUpICJcbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiLnRodW1iXG4iICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIi50aHVtYl9mdW5jICIgVEhVTUJf
RlVOQ19QQVJBTShsYWJlbCkgIlxuIiAgXAorICAgIFNZTUJPTF9TVFJJTkcobGFiZWwpICI6XG4i
CisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGFiZWwpICAgICAgICAg
XAorICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxhYmVsKSAiXG4iICAgICAgICAgXAorICAg
IEhJREVfU1lNQk9MKG5hbWUpICJcbiIgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFNZTUJP
TF9TVFJJTkcobGFiZWwpICI6XG4iCisjZW5kaWYKKworI2VuZGlmIC8vIExMSW50T2ZmbGluZUFz
bUNvbmZpZ19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1
ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0
ZXIuaCIKKyNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNs
dWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHbG9i
YWxEYXRhLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVj
dC5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0
cmluZy5oIgorI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKKyNpbmNsdWRlICJKU1ZhcmlhYmxlT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNt
Q29uZmlnLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKKyNpbmNsdWRlICJSZWdpc3RlckZp
bGUuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisj
aW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVm
aW5lIE9GRkxJTkVfQVNNX09GRlNFVE9GKGNsYXp6LCBmaWVsZCkgT0JKRUNUX09GRlNFVE9GKGNs
YXp6LCBmaWVsZCkKKworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQqIGR1bW15KCk7Cit9OworCitjb25zdCB1bnNpZ25lZCog
TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpCit7CisvLyBUaGlzIGlzIGEgZmlsZSBnZW5l
cmF0ZWQgYnkgb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRzX2V4dHJhY3Rvci5yYiwgYW5kIGNv
bnRhaW5zIGNvZGUKKy8vIHRvIGNyZWF0ZSBhIHRhYmxlIG9mIG9mZnNldHMsIHNpemVzLCBhbmQg
YSBoZWFkZXIgaWRlbnRpZnlpbmcgd2hhdCBjb21iaW5hdGlvbiBvZgorLy8gUGxhdGZvcm0uaCBt
YWNyb3Mgd2UgaGF2ZSBzZXQuIFdlIGluY2x1ZGUgaXQgaW5zaWRlIG9mIGEgbWV0aG9kIG9uIExM
SW50T2Zmc2V0c0V4dHJhY3RvcgorLy8gYmVjYXVzZSB0aGUgZmllbGRzIHdob3NlIG9mZnNldHMg
d2UncmUgZXh0cmFjdGluZyBhcmUgbW9zdGx5IHByaXZhdGUuIFNvIHdlIG1ha2UgdGhlaXIKKy8v
IGNsYXNzZXMgZnJpZW5kcyB3aXRoIExMSW50T2Zmc2V0c0V4dHJhY3RvciwgYW5kIGluY2x1ZGUg
dGhlIGhlYWRlciBoZXJlLCB0byBnZXQgdGhlIEMrKworLy8gY29tcGlsZXIgdG8ga2luZGx5IHN0
ZXAgYXNpZGUgYW5kIHlpZWxkIHRvIG91ciBiZXN0IGludGVudGlvbnMuCisjaW5jbHVkZSAiTExJ
bnREZXNpcmVkT2Zmc2V0cy5oIgorICAgIHJldHVybiBleHRyYWN0b3JUYWJsZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKK2ludCBtYWluKGludCwgY2hhcioqKQoreworICAgIC8vIE91dCBv
ZiBhbiBhYnVuZGFuY2Ugb2YgY2F1dGlvbiwgbWFrZSBzdXJlIHRoYXQgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOjpkdW1teSgpIGlzIGxpdmUsCisgICAgLy8gYW5kIHRoZSBleHRyYWN0b3JUYWJsZSBp
cyBsaXZlLCB0b28uCisgICAgcHJpbnRmKCIlcFxuIiwgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0
b3I6OmR1bW15KCkpOworICAgIHJldHVybiAwOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKKworI2lmIEVOQUJMRShM
TElOVCkKKworI2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgiCisjaW5jbHVkZSAiTGlua0J1ZmZl
ci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7
IG5hbWVzcGFjZSBMTEludCB7CisKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJh
dGVUaHVua1dpdGhKdW1wVG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCB2b2lkICgqdGFyZ2V0
KSgpKQoreworICAgIEpTSW50ZXJmYWNlSklUIGppdDsKKyAgICAKKyAgICAvLyBGSVhNRTogdGhl
cmUncyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gaXQgb24gWDg2LCBidXQgSSdtIG5vdCBz
dXJlIEkgY2FyZS4KKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cihi
aXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdldCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDApOworICAg
IGppdC5qdW1wKEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgCisgICAgTGlua0J1ZmZlciBw
YXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICByZXR1
cm4gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwg
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xv
YmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSk7Cit9CisKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0
b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
ayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5
Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0
dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXZh
bEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJl
dHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9ldmFsX3Byb2xv
Z3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSk7Cit9CisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIExMSW50VGh1bmtzX2gKKyNkZWZpbmUgTExJbnRUaHVua3NfaAor
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNs
dWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEpTR2xvYmFsRGF0YTsKKworbmFtZXNwYWNlIExMSW50IHsKKworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2Fs
bEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0ds
b2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRv
cihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVu
a0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50
CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludFRodW5rc19oCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzNzQgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBDcmFzaCBjb3Vy
c2Ugb24gdGhlIGxhbmd1YWdlIHRoYXQgdGhpcyBpcyB3cml0dGVuIGluICh3aGljaCBJIGp1c3Qg
Y2FsbAorIyAiYXNzZW1ibHkiIGV2ZW4gdGhvdWdoIGl0J3MgbW9yZSB0aGFuIHRoYXQpOgorIwor
IyAtIE1vc3RseSBnYXMtc3R5bGUgb3BlcmFuZCBvcmRlcmluZy4gVGhlIGxhc3Qgb3BlcmFuZCB0
ZW5kcyB0byBiZSB0aGUKKyMgICBkZXN0aW5hdGlvbi4gU28gImEgOj0gYiIgaXMgd3JpdHRlbiBh
cyAibW92IGIsIGEiLiBCdXQgdW5saWtlIGdhcywKKyMgICBjb21wYXJpc29ucyBhcmUgaW4tb3Jk
ZXIsIHNvICJpZiAoYSA8IGIpIiBpcyB3cml0dGVuIGFzCisjICAgImJpbHQgYSwgYiwgLi4uIi4K
KyMKKyMgLSAiYiIgPSBieXRlLCAiaCIgPSAxNi1iaXQgd29yZCwgImkiID0gMzItYml0IHdvcmQs
ICJwIiA9IHBvaW50ZXIuCisjICAgQ3VycmVudGx5IHRoaXMgaXMganVzdCAzMi1iaXQgc28gImki
IGFuZCAicCIgYXJlIGludGVyY2hhbmdlYWJsZQorIyAgIGV4Y2VwdCB3aGVuIGFuIG9wIHN1cHBv
cnRzIG9uZSBidXQgbm90IHRoZSBvdGhlci4KKyMKKyMgLSBJbiBnZW5lcmFsLCB2YWxpZCBvcGVy
YW5kcyBmb3IgbWFjcm8gaW52b2NhdGlvbnMgYW5kIGluc3RydWN0aW9ucyBhcmUKKyMgICByZWdp
c3RlcnMgKGVnICJ0MCIpLCBhZGRyZXNzZXMgKGVnICI0W3QwXSIpLCBiYXNlLWluZGV4IGFkZHJl
c3NlcworIyAgIChlZyAiN1t0MCwgdDEsIDJdIiksIGFic29sdXRlIGFkZHJlc3NlcyAoZWcgIjB4
YTAwMDAwMDBbXSIpLCBvciBsYWJlbHMKKyMgICAoZWcgIl9mb28iIG9yICIuZm9vIikuIE1hY3Jv
IGludm9jYXRpb25zIGNhbiBhbHNvIHRha2UgYW5vbnltb3VzCisjICAgbWFjcm9zIGFzIG9wZXJh
bmRzLiBJbnN0cnVjdGlvbnMgY2Fubm90IHRha2UgYW5vbnltb3VzIG1hY3Jvcy4KKyMKKyMgLSBM
YWJlbHMgbXVzdCBoYXZlIG5hbWVzIHRoYXQgYmVnaW4gd2l0aCBlaXRoZXIgIl8iIG9yICIuIi4g
IEEgIi4iIGxhYmVsCisjICAgaXMgbG9jYWwgYW5kIGdldHMgcmVuYW1lZCBiZWZvcmUgY29kZSBn
ZW4gdG8gbWluaW1pemUgbmFtZXNwYWNlCisjICAgcG9sbHV0aW9uLiBBICJfIiBsYWJlbCBpcyBh
biBleHRlcm4gc3ltYm9sIChpLmUuICIuZ2xvYmwiKS4gVGhlICJfIgorIyAgIG1heSBvciBtYXkg
bm90IGJlIHJlbW92ZWQgZHVyaW5nIGNvZGUgZ2VuIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBh
c20KKyMgICBjb252ZW50aW9ucyBmb3IgQyBuYW1lIG1hbmdsaW5nIG9uIHRoZSB0YXJnZXQgcGxh
dGZvcm0gbWFuZGF0ZSBhICJfIgorIyAgIHByZWZpeC4KKyMKKyMgLSBBICJtYWNybyIgaXMgYSBs
YW1iZGEgZXhwcmVzc2lvbiwgd2hpY2ggbWF5IGJlIGVpdGhlciBhbm9ueW1vdXMgb3IKKyMgICBu
YW1lZC4gQnV0IHRoaXMgaGFzIGNhdmVhdHMuICJtYWNybyIgY2FuIHRha2UgemVybyBvciBtb3Jl
IGFyZ3VtZW50cywKKyMgICB3aGljaCBtYXkgYmUgbWFjcm9zIG9yIGFueSB2YWxpZCBvcGVyYW5k
cywgYnV0IGl0IGNhbiBvbmx5IHJldHVybgorIyAgIGNvZGUuIEJ1dCB5b3UgY2FuIGRvIFR1cmlu
Zy1jb21wbGV0ZSB0aGluZ3MgdmlhIGNvbnRpbnVhdGlvbiBwYXNzaW5nCisjICAgc3R5bGU6ICJt
YWNybyBmb28gKGEsIGIpIGIoYSkgZW5kIGZvbyhmb28sIGZvbykiLiBBY3R1YWxseSwgZG9uJ3Qg
ZG8KKyMgICB0aGF0LCBzaW5jZSB5b3UnbGwganVzdCBjcmFzaCB0aGUgYXNzZW1ibGVyLgorIwor
IyAtIEFuICJpZiIgaXMgYSBjb25kaXRpb25hbCBvbiBzZXR0aW5ncy4gQW55IGlkZW50aWZpZXIg
c3VwcGxpZWQgaW4gdGhlCisjICAgcHJlZGljYXRlIG9mIGFuICJpZiIgaXMgYXNzdW1lZCB0byBi
ZSBhICNkZWZpbmUgdGhhdCBpcyBhdmFpbGFibGUKKyMgICBkdXJpbmcgY29kZSBnZW4uIFNvIHlv
dSBjYW4ndCB1c2UgImlmIiBmb3IgY29tcHV0YXRpb24gaW4gYSBtYWNybywgYnV0CisjICAgeW91
IGNhbiB1c2UgaXQgdG8gc2VsZWN0IGRpZmZlcmVudCBwaWVjZXMgb2YgY29kZSBmb3IgZGlmZmVy
ZW50CisjICAgcGxhdGZvcm1zLgorIworIyAtIEFyZ3VtZW50cyB0byBtYWNyb3MgZm9sbG93IGxl
eGljYWwgc2NvcGluZyByYXRoZXIgdGhhbiBkeW5hbWljIHNjb3BpbmcuCisjICAgQ29uc3QncyBh
bHNvIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgYW5kIG1heSBvdmVycmlkZSAoaGlkZSkgYXJndW1l
bnRzCisjICAgb3Igb3RoZXIgY29uc3RzLiBBbGwgdmFyaWFibGVzIChhcmd1bWVudHMgYW5kIGNv
bnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gb3BlcmFuZHMuIEFkZGl0aW9uYWxseSwgYXJn
dW1lbnRzIChidXQgbm90IGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gbWFjcm9zLgor
CisKKyMgVGhlc2UgZGVjbGFyYXRpb25zIG11c3QgbWF0Y2ggaW50ZXJwcmV0ZXIvUmVnaXN0ZXJG
aWxlLmguCitjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gNDgKK2NvbnN0IEFyZ3VtZW50Q291
bnQgPSAtNDgKK2NvbnN0IENhbGxlckZyYW1lID0gLTQwCitjb25zdCBDYWxsZWUgPSAtMzIKK2Nv
bnN0IFNjb3BlQ2hhaW4gPSAtMjQKK2NvbnN0IFJldHVyblBDID0gLTE2Citjb25zdCBDb2RlQmxv
Y2sgPSAtOAorCitjb25zdCBUaGlzQXJndW1lbnRPZmZzZXQgPSAtQ2FsbEZyYW1lSGVhZGVyU2l6
ZSAtIDgKKworIyBEZWNsYXJlIHNvbWUgYWxpYXNlcyBmb3IgdGhlIHJlZ2lzdGVycyB3ZSB3aWxs
IHVzZS4KK2NvbnN0IFBDID0gdDQKKworIyBPZmZzZXRzIG5lZWRlZCBmb3IgcmVhc29uaW5nIGFi
b3V0IHZhbHVlIHJlcHJlc2VudGF0aW9uLgoraWYgQklHX0VORElBTgorICAgIGNvbnN0IFRhZ09m
ZnNldCA9IDAKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gNAorZWxzZQorICAgIGNvbnN0IFRh
Z09mZnNldCA9IDQKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gMAorZW5kCisKKyMgVmFsdWUg
cmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgorY29uc3QgSW50MzJUYWcgPSAtMQorY29uc3QgQm9v
bGVhblRhZyA9IC0yCitjb25zdCBOdWxsVGFnID0gLTMKK2NvbnN0IFVuZGVmaW5lZFRhZyA9IC00
Citjb25zdCBDZWxsVGFnID0gLTUKK2NvbnN0IEVtcHR5VmFsdWVUYWcgPSAtNgorY29uc3QgRGVs
ZXRlZFZhbHVlVGFnID0gLTcKK2NvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRhZworCisj
IFR5cGUgY29uc3RhbnRzLgorY29uc3QgU3RyaW5nVHlwZSA9IDUKK2NvbnN0IE9iamVjdFR5cGUg
PSAxMAorCisjIFR5cGUgZmxhZ3MgY29uc3RhbnRzLgorY29uc3QgTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCA9IDEKK2NvbnN0IEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDIKK2NvbnN0IEltcGxlbWVu
dHNEZWZhdWx0SGFzSW5zdGFuY2UgPSA4CisKKyMgSGVhcCBhbGxvY2F0aW9uIGNvbnN0YW50cy4K
K2NvbnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9IDMKKworIyBCeXRlY29kZSBvcGVy
YW5kIGNvbnN0YW50cy4KK2NvbnN0IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAw
MDAwMAorCisjIENvZGUgdHlwZSBjb25zdGFudHMuCitjb25zdCBHbG9iYWxDb2RlID0gMAorY29u
c3QgRXZhbENvZGUgPSAxCitjb25zdCBGdW5jdGlvbkNvZGUgPSAyCisKKyMgVGhlIGludGVycHJl
dGVyIHN0ZWFscyB0aGUgdGFnIHdvcmQgb2YgdGhlIGFyZ3VtZW50IGNvdW50LgorY29uc3QgTExJ
bnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQKKworIyBUaGlzIG11c3QgbWF0
Y2ggd3RmL1ZlY3Rvci5oLgorY29uc3QgVmVjdG9yU2l6ZU9mZnNldCA9IDAKK2NvbnN0IFZlY3Rv
ckJ1ZmZlck9mZnNldCA9IDQKKworIyBTdHJpbmcgZmxhZ3MuCitjb25zdCBIYXNoRmxhZ3M4Qml0
QnVmZmVyID0gNjQKKworIyBVdGlsaXRpZXMKK21hY3JvIGNyYXNoKCkKKyAgICBzdG9yZWkgMCwg
MHhiYmFkYmVlZltdCisgICAgbW92ZSAwLCB0MAorICAgIGNhbGwgdDAKK2VuZAorCittYWNybyBh
c3NlcnQoYXNzZXJ0aW9uKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGFzc2VydGlv
bigub2spCisgICAgICAgIGNyYXNoKCkKKyAgICAub2s6CisgICAgZW5kCitlbmQKKworbWFjcm8g
cHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIpCisgICAg
aWYgQVJNdjcKKyAgICAgICAgbW92ZSBsciwgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2lm
IFg4NgorICAgICAgICBwb3AgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAg
ZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJl
dHVybihzb3VyY2VSZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIHNvdXJjZVJl
Z2lzdGVyLCBscgorICAgIGVsc2lmIFg4NgorICAgICAgICBwdXNoIHNvdXJjZVJlZ2lzdGVyCisg
ICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIGRpc3BhdGNoKGFk
dmFuY2UpCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21h
Y3JvIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldChwY09mZnNldCkKKyAgICBsc2hpZnRpIDIsIHBj
T2Zmc2V0CisgICAgYWRkcCBwY09mZnNldCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3Jv
IGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQorICAgIGxvYWRpIHBjT2Zmc2V0LCB0MAorICAgIGRp
c3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MCkKK2VuZAorCittYWNybyBkaXNwYXRjaEFmdGVyQ2Fs
bCgpCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgIGpt
cCBbUENdCitlbmQKKworbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQorICAgIGlm
IEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAg
IGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisg
ICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAor
CisjIFRoaXMgYmFyZWx5IHdvcmtzLiBhcmczIGFuZCBhcmc0IHNob3VsZCBwcm9iYWJseSBiZSBp
bW1lZGlhdGVzLgorbWFjcm8gY0NhbGw0KGZ1bmN0aW9uLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0
KQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcy
LCB0MQorICAgICAgICBtb3ZlIGFyZzMsIHQyCisgICAgICAgIG1vdmUgYXJnNCwgdDMKKyAgICBl
bHNpZiBYODYKKyAgICAgICAgcG9rZSBhcmcxLCAwCisgICAgICAgIHBva2UgYXJnMiwgMQorICAg
ICAgICBwb2tlIGFyZzMsIDIKKyAgICAgICAgcG9rZSBhcmc0LCAzCisgICAgZWxzZQorICAgICAg
ICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCittYWNybyBjYWxsSGVs
cGVyKGhlbHBlcikKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUgdDAsIFBD
CisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdk
IGxpa2UgdG8gcHJpbnQgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtLiBmcm9t
V2hlcmUKKyMgc2hvdWxkIGJlIGFuIGltbWVkaWF0ZSBpbnRlZ2VyIC0gYW55IGludGVnZXIgeW91
IGxpa2U7IHVzZSBpdCB0byBpZGVudGlmeSB0aGUgcGxhY2UgeW91J3JlCisjIGRlYnVnZ2luZyBm
cm9tLiBvcGVyYW5kIHNob3VsZCBsaWtld2lzZSBiZSBhbiBpbW1lZGlhdGUsIGFuZCBzaG91bGQg
aWRlbnRpZnkgdGhlIG9wZXJhbmQKKyMgaW4gdGhlIGluc3RydWN0aW9uIHN0cmVhbSB5b3UnZCBs
aWtlIHRvIHByaW50IG91dC4KK21hY3JvIHRyYWNlT3BlcmFuZChmcm9tV2hlcmUsIG9wZXJhbmQp
CisgICAgY0NhbGw0KF9sbGludF90cmFjZV9vcGVyYW5kLCBjZnIsIFBDLCBmcm9tV2hlcmUsIG9w
ZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVn
Z2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCB0aGUgdmFsdWUgb2YgYW4gb3Bl
cmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24KKyMgc3RyZWFtLiBTYW1lIGFzIHRyYWNlT3BlcmFuZCgp
LCBidXQgYXNzdW1lcyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgcmVnaXN0ZXIsIGFuZCBwcmludHMg
aXRzCisjIHZhbHVlLgorbWFjcm8gdHJhY2VWYWx1ZShmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAg
Y0NhbGw0KF9sbGludF90cmFjZV92YWx1ZSwgY2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVyYW5kKQor
ICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworbWFjcm8gdHJhY2VFeGVj
dXRpb24oKQorICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAgICAgIGNhbGxIZWxwZXIoX2xs
aW50X3RyYWNlKQorICAgIGVuZAorZW5kCisKKyMgQ2FsbCBhIGhlbHBlciBmb3IgY2FsbCBvcGNv
ZGVzLgorbWFjcm8gY2FsbENhbGxIZWxwZXIoYWR2YW5jZSwgaGVscGVyLCBhY3Rpb24pCisgICAg
YWRkcCBhZHZhbmNlICogNCwgUEMsIHQwCisgICAgc3RvcmVwIHQwLCBBcmd1bWVudENvdW50ICsg
VGFnT2Zmc2V0W2Nmcl0KKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUgdDEs
IGNmcgorICAgIGFjdGlvbih0MCkKK2VuZAorCittYWNybyBzbG93UGF0aEZvckNhbGwoYWR2YW5j
ZSwgaGVscGVyKQorICAgIGNhbGxDYWxsSGVscGVyKAorICAgICAgICBhZHZhbmNlLAorICAgICAg
ICBoZWxwZXIsCisgICAgICAgIG1hY3JvIChjYWxsZWUpCisgICAgICAgICAgICBjYWxsIGNhbGxl
ZQorICAgICAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgICAgICBlbmQpCitlbmQKKwor
bWFjcm8gY2hlY2tTd2l0Y2hUb0pJVChpbmNyZW1lbnQsIGFjdGlvbikKKyAgICBpZiBKSVRfRU5B
QkxFRAorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICAgICAgYmFkZGlzIGlu
Y3JlbWVudCwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJbdDBdLCAuY29udGludWUK
KyAgICAgICAgYWN0aW9uKCkKKyAgICAuY29udGludWU6CisgICAgZW5kCitlbmQKKworbWFjcm8g
Y2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAg
IDEsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291
bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgICAgICAgICAgY0NhbGwyKF9sbGludF9sb29wX29zciwg
Y2ZyLCBQQykKKyAgICAgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAgICAgICAgYnRweiB0MCwg
LnJlY292ZXIKKyAgICAgICAgICAgIGptcCB0MAorICAgICAgICAucmVjb3ZlcjoKKyAgICAgICAg
ICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICAgICAgZW5k
KQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgY2hlY2tT
d2l0Y2hUb0pJVCgKKyAgICAgICAgMTAsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBj
YWxsSGVscGVyKF9sbGludF9yZXBsYWNlKQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gYXNz
ZXJ0Tm90Q29uc3RhbnQoaW5kZXgpCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlsdCBpbmRleCwg
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIG9rIGVuZCkKK2VuZAorCisjIEluZGV4LCB0YWcs
IGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90Cisj
IGNoYW5nZWQuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKGluZGV4LCB0YWcsIHBheWxv
YWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0
YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29u
c3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0s
IHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4
IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0
aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsb2FkcCBUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhd
LCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9h
ZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBtYXkgYmUgdGhlIHNhbWUgcmVn
aXN0ZXIuIEluZGV4IG1heSBiZSBjbG9iYmVyZWQuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGlu
ZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5
bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0YWcKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JC
dWZmZXJPZmZzZXRbdGFnXSwgdGFnCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6
IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbHNoaWZ0aSAzLCBpbmRleAorICAg
IGFkZHAgaW5kZXgsIHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdGFnXSwgcGF5bG9hZAor
ICAgIGxvYWRwIFRhZ09mZnNldFt0YWddLCB0YWcKKy5kb25lOgorZW5kCisKK21hY3JvIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKGluZGV4LCB0YWdDaGVjaywgcGF5bG9h
ZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3Rh
bnQKKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0pCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0
YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBw
YXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBj
b250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhl
biB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXgpIDw8IDMuCisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4
XSkKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAor
LmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdp
c3RlcnMuIEluZGV4IGlzIG5vdCBtdXRhdGVkLiBVc2UKKyMgdGhpcyBpZiB5b3Uga25vdyB3aGF0
IHRoZSB0YWcgb2YgdGhlIHZhcmlhYmxlIHNob3VsZCBiZS4gRG9pbmcgdGhlIHRhZworIyB0ZXN0
IGFzIHBhcnQgb2YgbG9hZGluZyB0aGUgdmFyaWFibGUgcmVkdWNlcyByZWdpc3RlciB1c2UsIGJ1
dCBtYXkgbm90CisjIGJlIGZhc3RlciB0aGFuIGRvaW5nIGxvYWRDb25zdGFudE9yVmFyaWFibGUg
Zm9sbG93ZWQgYnkgYSBicmFuY2ggb24gdGhlCisjIHRhZy4KK21hY3JvIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywgcGF5bG9hZCwgc2xvdykKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgKKyAgICAgICAgaW5kZXgsCisg
ICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGJpbmVxIGFjdHVhbFRhZywgZXhwZWN0ZWRUYWcsIHNs
b3cgZW5kLAorICAgICAgICBwYXlsb2FkKQorZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkVW5jaGVja2VkKGluZGV4LCBwYXlsb2FkKQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKAorICAgICAgICBpbmRleCwKKyAgICAgICAgbWFjcm8g
KGFjdHVhbFRhZykgZW5kLAorICAgICAgICBwYXlsb2FkKQorZW5kCisKK21hY3JvIHdyaXRlQmFy
cmllcih0YWcsIHBheWxvYWQpCisgICAgIyBOb3RoaW5nIHRvIGRvLCBzaW5jZSB3ZSBkb24ndCBo
YXZlIGEgZ2VuZXJhdGlvbmFsIG9yIGluY3JlbWVudGFsIGNvbGxlY3Rvci4KK2VuZAorCittYWNy
byB2YWx1ZVByb2ZpbGUodGFnLCBwYXlsb2FkLCBwcm9maWxlKQorICAgIHN0b3JlaSB0YWcsIFZh
bHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3Byb2ZpbGVdCisgICAgc3RvcmVpIHBh
eWxvYWQsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFtwcm9maWxlXQor
ZW5kCisKKworIyBJbmRpY2F0ZSB0aGUgYmVnaW5uaW5nIG9mIExMSW50LgorX2xsaW50X2JlZ2lu
OgorICAgIGNyYXNoKCkKKworCisjIEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVycHJldGVyCisK
K21hY3JvIGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAg
ICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9u
OjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRw
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsW3RhcmdldFJlZ2lzdGVyXSwg
dGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9j
a0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVn
aXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJd
LCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxv
Y2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21h
Y3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgIHN0b3JlcCBzb3VyY2VSZWdpc3Rlciwg
Q29kZUJsb2NrW2Nmcl0KK2VuZAorCittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlcihz
b3VyY2VSZWdpc3RlcikKKyAgICAjIE5vdGhpbmcgdG8gZG8hCitlbmQKKworIyBEbyB0aGUgYmFy
ZSBtaW5pbXVtIHJlcXVpcmVkIHRvIGV4ZWN1dGUgY29kZS4gU2V0cyB1cCB0aGUgUEMsIGxlYXZl
IHRoZSBDb2RlQmxvY2sqCisjIGluIHQxLiBNYXkgYWxzbyB0cmlnZ2VyIHByb2xvZ3VlIGVudHJ5
IE9TUi4KK21hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBv
c3JIZWxwZXIsIHRyYWNlSGVscGVyKQorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bCh0MikKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ug
c2hvdWxkIE9TUi4KKyAgICBzdG9yZXAgdDIsIFJldHVyblBDW2Nmcl0KKyAgICBpZiBFWEVDVVRJ
T05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKHRyYWNlSGVscGVyKQorICAgIGVuZAorICAg
IGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBiYWRkaXMg
NSwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJbdDFdLCAuY29udGludWUKKyAgICAg
ICAgY0NhbGwyKG9zckhlbHBlciwgY2ZyLCBQQykKKyAgICAgICAgbW92ZSB0MSwgY2ZyCisgICAg
ICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCisg
ICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAgICAgICBqbXAg
dDAKKyAgICAucmVjb3ZlcjoKKyAgICAgICAgY29kZUJsb2NrR2V0dGVyKHQxKQorICAgIC5jb250
aW51ZToKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tTZXR0ZXIodDEpCisgICAgCisgICAgIyBTZXQg
dXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAor
ICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0aW9ucyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFt0MF0sIFBDCitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlz
IGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KKyMgTXVzdCBj
YWxsIGRpc3BhdGNoKDApIGFmdGVyIGNhbGxpbmcgdGhpcy4KK21hY3JvIGZ1bmN0aW9uSW5pdGlh
bGl6YXRpb24ocHJvZmlsZUFyZ1NraXApCisgICAgIyBQcm9maWxlIHRoZSBhcmd1bWVudHMuIFVu
Zm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hvaWNlIGJ1dCB0byBkbyB0aGlzLiBUaGlzCisgICAg
IyBjb2RlIGlzIHByZXR0eSBob3JyZW5kb3VzIGJlY2F1c2Ugb2YgdGhlIGRpZmZlcmVuY2UgaW4g
b3JkZXJpbmcgYmV0d2VlbgorICAgICMgYXJndW1lbnRzIGFuZCB2YWx1ZSBwcm9maWxlcywgdGhl
IGRlc2lyZSB0byBoYXZlIGEgc2ltcGxlIGxvb3AtZG93bi10by16ZXJvCisgICAgIyBsb29wLCBh
bmQgdGhlIGRlc2lyZSB0byB1c2Ugb25seSB0aHJlZSByZWdpc3RlcnMgc28gYXMgdG8gcHJlc2Vy
dmUgdGhlIFBDIGFuZAorICAgICMgdGhlIGNvZGUgYmxvY2suIEl0IGlzIGxpa2VseSB0aGF0IHRo
aXMgY29kZSBzaG91bGQgYmUgcmV3cml0dGVuIGluIGEgbW9yZQorICAgICMgb3B0aW1hbCB3YXkg
Zm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBoYXZlIG1vcmUgdGhhbiBmaXZlIHJlZ2lzdGVycyBhdmFp
bGFibGUKKyAgICAjIGZvciBhcmJpdHJhcnkgdXNlIGluIHRoZSBpbnRlcnByZXRlci4KKyAgICBs
b2FkaSBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIHQwCisgICAgYWRkaSAtcHJvZmls
ZUFyZ1NraXAsIHQwICMgVXNlIGFkZGkgYmVjYXVzZSB0aGF0J3Mgd2hhdCBoYXMgdGhlIHBlZXBo
b2xlCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHQwLCAwLCBvayBlbmQpCisgICAgYnRp
eiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1l
bnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QxXSwgdDMKKyAgICBtdWxpIHNp
emVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0MiAjIEFhYWFhaGhoaCEgTmVlZCBzdHJlbmd0aCByZWR1
Y3Rpb24hCisgICAgbmVnaSB0MAorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQyLCB0Mwor
LmFyZ3VtZW50UHJvZmlsZUxvb3A6CisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFn
T2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIKKyAgICBzdWJwIHNp
emVvZiBWYWx1ZVByb2ZpbGUsIHQzCisgICAgc3RvcmVpIHQyLCBwcm9maWxlQXJnU2tpcCAqIHNp
emVvZiBWYWx1ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNldFt0
M10KKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zmc2V0ICsgOCAtIHBy
b2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIsIHByb2ZpbGVBcmdT
a2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5
bG9hZE9mZnNldFt0M10KKyAgICBiYWRkaW56IDgsIHQwLCAuYXJndW1lbnRQcm9maWxlTG9vcAor
LmFyZ3VtZW50UHJvZmlsZURvbmU6CisgICAgCisgICAgIyBDaGVjayBzdGFjayBoZWlnaHQuCisg
ICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lzdGVyc1t0MV0sIHQwCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MgorICAgIGxvYWRwIEpTR2xvYmFsRGF0
YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MiAgICMgRklYTUU6IENhbiBnZXQgdG8gdGhlIFJlZ2lzdGVy
RmlsZSBmcm9tIHRoZSBKSVRTdGFja0ZyYW1lCisgICAgbHNoaWZ0aSAzLCB0MAorICAgIGFkZHAg
dDAsIGNmciwgdDAKKyAgICBicGFlcSBJbnRlcnByZXRlcjo6bV9yZWdpc3RlckZpbGUgKyBSZWdp
c3RlckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCisKKyAgICAjIFN0YWNrIGhl
aWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBoZWxwZXIuCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVjaykKKy5zdGFja0hlaWdodE9LOgorZW5kCisKKyMg
RXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgp
IGxlYXZlcyBiZWhpbmQuCittYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBoZWxw
ZXIpCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwgdDAKKyAg
ICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKKyAg
ICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKSAgICMgVGhpcyBoZWxwZXIgaGFzIGEgc2ltcGxlIHBy
b3RvY29sOiB0MCA9IDAgPT4gbm8gZXJyb3IsIHQwICE9IDAgPT4gZXJyb3IKKyAgICBtb3ZlIHQx
LCBjZnIKKyAgICBidGl6IHQwLCAuY29udGludWUKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpn
bG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRo
cm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJv
d1t0MV0KKy5jb250aW51ZToKKyAgICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIFBDLCBzaW5jZSB0
aGUgaGVscGVyIGNsb2JiZXJlZCBpdC4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRb
dDBdLCBQQworICAgIGptcCBkb25lTGFiZWwKK2VuZAorCitfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1
ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25D
b2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkK
KyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9ldmFsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3Vl
KG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwg
X2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDAp
CisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1
bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9s
bGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9m
dW5jdGlvbl9mb3JfY2FsbCkKKy5mdW5jdGlvbkZvckNhbGxCZWdpbjoKKyAgICBmdW5jdGlvbklu
aXRpYWxpemF0aW9uKDApCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1
Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlf
b3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlv
bl9mb3JfY29uc3RydWN0KQorLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46CisgICAgZnVuY3Rp
b25Jbml0aWFsaXphdGlvbigxKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxD
b2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zv
cl9jYWxsKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9s
bGludF9oZWxwZXJfY2FsbF9hcml0eUNoZWNrKQorCisKK19sbGludF9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29k
ZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9m
dW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNr
X2Zvcl9jb25zdHJ1Y3QpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0
cnVjdEJlZ2luLCBfbGxpbnRfaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQorCisjIEluc3Ry
dWN0aW9uIGltcGxlbWVudGF0aW9ucworCitfbGxpbnRfb3BfZW50ZXI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRpIENvZGVCbG9j
azo6bV9udW1WYXJzW3QyXSwgdDIKKyAgICBidGl6IHQyLCAub3BFbnRlckRvbmUKKyAgICBtb3Zl
IFVuZGVmaW5lZFRhZywgdDAKKyAgICBtb3ZlIDAsIHQxCisub3BFbnRlckxvb3A6CisgICAgc3Vi
aSAxLCB0MgorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVp
IHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgYnRpbnogdDIsIC5vcEVudGVyTG9v
cAorLm9wRW50ZXJEb25lOgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX2NyZWF0ZV9h
Y3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFj
dGl2YXRpb25Eb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hY3RpdmF0
aW9uKQorLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxp
bnRfb3BfaW5pdF9sYXp5X3JlZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQor
ICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikK
KworCitfbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0
eVZhbHVlVGFnLCAub3BDcmVhdGVBcmd1bWVudHNEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCisub3BDcmVhdGVBcmd1bWVudHNEb25lOgorICAgIGRp
c3BhdGNoKDIpCisKKworbWFjcm8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNpemVDbGFzc0luZGV4
LCBjbGFzc0luZm9PZmZzZXQsIHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIs
IHNsb3dDYXNlKQorICAgIGNvbnN0IG9mZnNldE9mTXlTaXplQ2xhc3MgPSBKU0dsb2JhbERhdGE6
OmhlYXAgKyBIZWFwOjptX29iamVjdFNwYWNlICsgTWFya2VkU3BhY2U6Om1fcHJlY2lzZVNpemVD
bGFzc2VzICsgc2l6ZUNsYXNzSW5kZXggKiBzaXplb2YgTWFya2VkU3BhY2U6OlNpemVDbGFzcwor
ICAgIAorICAgICMgRklYTUU6IHdlIGNhbiBnZXQgdGhlIGdsb2JhbCBkYXRhIGluIG9uZSBsb2Fk
IGZyb20gdGhlIHN0YWNrLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoMQorICAg
IGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAK
KyAgICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4gICAgCisgICAgbG9hZHAg
b2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNl
bGxbc2NyYXRjaDFdLCByZXN1bHQKKyAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UKKyAgICAKKyAg
ICAjIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAgICBsb2FkcCBbcmVz
dWx0XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIG9mZnNldE9mTXlTaXplQ2xhc3Mg
KyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0Y2gxXQorCisgICAg
IyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgbG9hZHAgY2xhc3NJbmZvT2Zmc2V0W3NjcmF0
Y2gxXSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCisgICAgc3RvcmVw
IHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCisgICAgc3RvcmVwIDAsIEpT
T2JqZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0KKyAgICBhZGRwIHNpemVvZiBKU09iamVjdCwg
cmVzdWx0LCBzY3JhdGNoMQorICAgIHN0b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVy
dHlTdG9yYWdlW3Jlc3VsdF0KK2VuZAorCitfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50
KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ3JlYXRl
VGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wQ3JlYXRlVGhpc1Ns
b3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFt0MF0sIHQyCisgICAgYnRweiB0
MiwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9i
amVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8s
IHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEK
KyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wQ3JlYXRl
VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV90aGlzKQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRPZmZzZXQgKyBDYWxs
ZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisg
ICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikK
KworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcs
IC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYmJiIFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BD
b252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0VGhpc1Nsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAgICBkaXNwYXRjaCgy
KQorCisKK19sbGludF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2Jq
ZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVj
dHVyZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXpl
Q2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MSwgdDAs
IHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9y
ZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3T2JqZWN0U2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkKKyAgICBkaXNwYXRjaCgy
KQorCisKK19sbGludF9vcF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheV9idWZmZXIpCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdleHApCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0Miwg
dDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9ub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAg
ICBiaW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90U2xvdworICAgIHhvcmkgMSwgdDMKKyAgICBz
dG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9m
ZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5vdFNsb3c6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0
MywgLm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93CisgICAgYmliIHQy
LCBMb3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpZXEgdDAs
IHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAg
ICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQor
Cisub3BFcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2VxKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX2VxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0
YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BF
cU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAg
ICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlCisu
b3BFcU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaWVxIHQx
LCBVbmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQyLCB0MQorLm9wRXFOdWxsTm90SW1tZWRpYXRl
OgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9y
ZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0Mywg
dDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5l
cSB0MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFTbG93Cisg
ICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAg
ICBjaW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIs
IHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRp
c3BhdGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25l
cSkKKyAgICBkaXNwYXRjaCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251bGw6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0Mwor
ICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVx
IHQxLCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wTmVx
TnVsbE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBjaW5lcSB0MSwgTnVs
bFRhZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIGFuZGkgdDIsIHQx
Cisub3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0K
KyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBo
ZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKKyAgICBiaWIgdDIs
IExvd2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmluZworICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDFdLCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJ
bmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJlcSBTdHJ1Y3R1
cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cK
Ky5ub3RTdHJpbmc6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVyYXRpb24o
dDAsIHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2go
NCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2Vu
ZAorCitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmlj
dEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQg
ZW5kLCBfbGxpbnRfaGVscGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3RyaWN0ZXE6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVz
dWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9uc3RyaWN0
ZXEpCisKKworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X2xlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2xlc3NlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcikK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQz
MlRhZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQxCisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5jU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQ
cmVEZWNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBi
c3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50
X29wX3Bvc3RfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIElu
dDMyVGFnLCAub3BQb3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMK
KyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBU
YWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJ
bmNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9wb3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQz
MlRhZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisg
ICAgYnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFn
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0RGVj
RG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bf
dG9fanNudW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0
MykKKyAgICBiaWVxIHQyLCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklzSW50CisgICAgYmlhZXEg
dDIsIEVtcHR5VmFsdWVUYWcsIC5vcFRvSnNudW1iZXJTbG93Cisub3BUb0pzbnVtYmVySXNJbnQ6
CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb0pzbnVtYmVy
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fanNudW1iZXIpCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQwLCB0MSwgdDIpCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BOZWdhdGVT
cmNOb3RJbnQKKyAgICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CisgICAgbmVn
aSB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3Rv
cmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKy5vcE5l
Z2F0ZVNyY05vdEludDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xvdworICAg
IHhvcmkgMHg4MDAwMDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4
XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNo
KDMpCisKKy5vcE5lZ2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lZ2F0
ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdl
ck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAx
MltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDAp
CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDMsIEludDMy
VGFnLCAub3AyTm90SW50CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50ZWdlck9wZXJhdGlv
bkFuZFN0b3JlKHQzLCB0MSwgdDAsIC5zbG93LCB0MikKKyAgICBkaXNwYXRjaCg1KQorCisub3Ax
Tm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRo
ZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEgdDIsIExvd2VzdFRh
ZywgLnNsb3cKKyAgICBiaWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAg
IGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQxLCBmdDEKKyAgICBqbXAgLm9w
MU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQxLCB0MywgZnQx
Cisub3AxTm90SW50UmVhZHk6CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgZmlpMmQgdDAsIHQy
LCBmdDAKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2Nm
ciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wMk5vdEludDoKKyAgICAjIEZpcnN0IG9w
ZXJhbmQgaXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0
ZWx5IG5vdC4KKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNs
b3cKKyAgICBjaTJkIHQwLCBmdDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorICAgIGRvdWJsZU9w
ZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNw
YXRjaCg1KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCg1
KQorZW5kCisKK21hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlv
biwgaGVscGVyKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQz
MlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgaW50ZWdlck9wZXJh
dGlvbihsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFn
T2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRP
ZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBkb3VibGVPcGVyYXRp
b24sIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfYWRkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8g
bGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQg
bGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2FkZCkKKworCitfbGxpbnRf
b3BfbXVsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAor
ICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAg
ICAgICAgIGNvbnN0IHNjcmF0Y2ggPSBpbnQzMlRhZyAgICMgV2Uga25vdyB0aGF0IHdlIGNhbiBy
ZXVzZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEgY29uc3RhbnQuCisgICAg
ICAgICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoCisgICAgICAgICAgICBibXVsaW8gbGVmdCwgc2Ny
YXRjaCwgc2xvdworICAgICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRvbmUKKyAgICAgICAgICAg
IGJpbHQgbGVmdCwgMCwgc2xvdworICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdworICAg
ICAgICAuZG9uZToKKyAgICAgICAgICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgUGF5bG9hZE9mZnNldFtjZnIs
IGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVs
ZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbXVsKQorCisKK19sbGlu
dF9vcF9zdWI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfc3ViKQorCisKK19sbGludF9vcF9kaXY6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywg
bGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAKKyAg
ICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQorICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQorICAg
ICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdEludAorICAgICAgICAgICAgc3RvcmVpIGlu
dDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdo
dCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgam1wIC5kb25lCisg
ICAgICAgIC5ub3RJbnQ6CisgICAgICAgICAgICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0K
KyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9kaXYpCisKKwor
X2xsaW50X29wX21vZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX21vZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGJpdE9wKG9wZXJhdGlv
biwgaGVscGVyLCBhZHZhbmNlKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MywgSW50MzJUYWcs
IC5zbG93CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGxvYWRpIDRbUENdLCB0
MgorICAgIG9wZXJhdGlvbih0MSwgdDAsIC5zbG93KQorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0
W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgZGlzcGF0Y2goYWR2YW5jZSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisg
ICAgZGlzcGF0Y2goYWR2YW5jZSkKK2VuZAorCitfbGxpbnRfb3BfbHNoaWZ0OgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93
KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9sc2hpZnQs
CisgICAgICAgIDQpCisKKworX2xsaW50X29wX3JzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgcnNoaWZ0aSBs
ZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfcnNoaWZ0LAorICAgICAgICA0
KQorCisKK19sbGludF9vcF91cnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRP
cCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgdXJzaGlm
dGkgbGVmdCwgcmlnaHQKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3Vyc2hpZnQsCisgICAgICAgIDQpCisKKworX2xs
aW50X29wX2JpdGFuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5kaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfYml0YW5kLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXR4b3I6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVy
X2JpdHhvciwKKyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0b3I6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIG9y
aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0b3IsCisgICAgICAg
IDUpCisKKworX2xsaW50X29wX2JpdG5vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZSh0MSwgdDIsIHQzKQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wQml0bm90U2xvdwor
ICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0
b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5v
cEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2JpdG5vdCkKKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cpCisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1f
dHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNIYXNJbnN0YW5jZSwg
Lm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDaGVja0hhc0lu
c3RhbmNlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY2hlY2tfaGFzX2luc3Rh
bmNlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luc3RhbmNlb2Y6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRl
ZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUg
ZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRVbmNoZWNrZWQodDEsIHQwKQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
ZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xv
dworICAgIAorICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCisgICAgbG9hZGkgMTZbUENdLCB0
MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJ
bmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFn
LCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgCisgICAgIyBSZWdpc3RlciBzdGF0ZTogdDEg
PSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3ZlIDEsIHQwCisub3BJbnN0YW5jZW9mTG9v
cDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIKKyAgICBsb2FkaSBTdHJ1
Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCisgICAgYnBlcSB0Miwg
dDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZMb29wCisK
KyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9mRG9uZToKKyAgICBzdG9yZWkgQm9vbGVhblRh
ZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wSW5zdGFuY2VvZlNsb3c6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2luc3RhbmNlb2YpCisgICAgZGlzcGF0Y2goNSkKKworCitf
bGxpbnRfb3BfdHlwZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfdHlwZW9mKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3Vu
ZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19ib29s
ZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
aXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19udW1iZXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19udW1i
ZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfc3RyaW5nOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfc3RyaW5nKQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX29iamVjdCkKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9pc19mdW5jdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Z1bmN0aW9uKQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX2luOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfaW4pCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2
ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jl
c29sdmUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9za2lwOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9z
a2lwKQorICAgIGRpc3BhdGNoKDUpCisKKworbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93
KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0
aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgUHJvcGVydHkgaWRlbnRpZmllciBpbmRl
eCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAjIDEyW1BDXSAgU3RydWN0dXJlIHBvaW50ZXIsIGlu
aXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgICMgMTZbUENdICBPZmZz
ZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0
b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQxCisgICAgYnBuZXEgdDEsIDEyW1BDXSwgc2xvdworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAg
ICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAorICAgIGxvYWRpIFRh
Z09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4
XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIs
IHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGxv
YWRpIChzaXplIC0gMSkgKiA0W1BDXSwgdDAKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQzLCB0MCkK
K2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIHJlc29sdmVHbG9iYWwoNiwgLm9wUmVzb2x2ZUdsb2JhbFNsb3cpCisgICAgZGlzcGF0Y2go
NikKKworLm9wUmVzb2x2ZUdsb2JhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3BhdGNoKDYpCisKKworIyBHaXZlcyB5b3UgdGhlIHNj
b3BlIGluIHQwLCB3aGlsZSBhbGxvd2luZyB5b3UgdG8gb3B0aW9uYWxseSBwZXJmb3JtIGFkZGl0
aW9uYWwgY2hlY2tzIG9uIHRoZQorIyBzY29wZXMgYXMgdGhleSBhcmUgdHJhdmVyc2VkLiBzY29w
ZUNoZWNrKCkgaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHJlZ2lzdGVyCisjIGhv
bGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdpc3RlciB0aGF0IGNhbiBiZSB1c2VkIGZvciBzY3Jh
dGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAorIyB1c2UgdDMsIHNvIHlvdSBjYW4gaG9sZCBz
dHVmZiBpbiB0MyBpZiBuZWVkIGJlLgorbWFjcm8gZ2V0U2NvcGUoZGVCcnVpamluSW5kZXhPcGVy
YW5kLCBzY29wZUNoZWNrKQorICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nm
cl0sIHQwCisgICAgbG9hZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0MgorICAgIAorICAgIGJ0
aXogdDIsIC5kb25lCisgICAgCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgYmlu
ZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAubG9vcAorICAgIGJ0
YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9vcAorICAgIAorICAg
IGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0aW9uUmVnaXN0ZXJbdDFdLCB0MQorCisgICAgIyBO
ZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KKyAgICBiaWVxIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlvbgorICAgIHNjb3Bl
Q2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKy5u
b0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisu
bG9vcDoKKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6
bmV4dFt0MF0sIHQwCisgICAgc3ViaSAxLCB0MgorICAgIGJ0aW56IHQyLCAubG9vcAorCisuZG9u
ZToKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYzoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisg
ICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJlW3QzXSwgdDMKKyAgICBn
ZXRTY29wZSgKKyAgICAgICAgMjBbUENdLAorICAgICAgICBtYWNybyAoc2NvcGUsIHNjcmF0Y2gp
CisgICAgICAgICAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3Njb3BlXSwgc2NyYXRj
aAorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVtzY3JhdGNoXSwgdDMsIC5v
cFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93CisgICAgICAgIGVuZCkKKyAgICByZXNvbHZl
R2xvYmFsKDcsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdykKKyAgICBkaXNwYXRjaCg3KQor
Cisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKKyAgICBkaXNwYXRj
aCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCisgICAgZGlzcGF0Y2goNykKKworCitf
bGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgT3Bl
cmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUg
bG9hZC4KKyAgICAjIDhbUENdICAgSW5kZXggb2YgcmVnaXN0ZXIgaW4gdGhlIHNjb3BlLgorICAg
ICMgMTJbUENdICBEZSBCcnVpamluIGluZGV4LgorICAgIGdldFNjb3BlKDEyW1BDXSwgbWFjcm8g
KHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgOFtQ
Q10sIHQyCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9h
ZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09m
ZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XSwg
dDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwg
UGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICB2YWx1
ZVByb2ZpbGUodDMsIHQwLCB0MSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9wdXRf
c2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZ2V0U2NvcGUoOFtQQ10sIG1h
Y3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MywgdDIpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAg
d3JpdGVCYXJyaWVyKHQzLCB0MikKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3Qw
XSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisg
ICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9h
ZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2ds
b2JhbF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAg
IGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRw
IENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2Jq
ZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0s
IHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MQorICAgIHN0b3JlaSB0
MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEs
IHQzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAK
KyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICB3
cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W3QwLCB0MSwgOF0K
KyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX3Jlc29sdmVfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQor
CisKK19sbGludF9vcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykK
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfYmFzZToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0
aF9iYXNlKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVz
b2x2ZV93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lk
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0
X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisgICAgIyBv
cGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0
aW1lIGlmIGZhaWxzLCBzaW5jZQorICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qg
d2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKKyAgICAjIHRvIHRh
a2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRo
LCB3aGljaCBpcyB3aGF0CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5Lgor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQorICAg
IGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2Vb
dDNdLCB0MAorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJ
ZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwg
dDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAgc3RvcmVpIHQzLCBU
YWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBsb2FkaSAzMltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MiwgdDEp
CisgICAgZGlzcGF0Y2goOSkKKworLm9wR2V0QnlJZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2dldF9ieV9pZCkKKyAgICBkaXNwYXRjaCg5KQorCisKK19sbGludF9vcF9nZXRf
YXJndW1lbnRzX2xlbmd0aDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10s
IHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93CisgICAgbG9hZGkgQXJn
dW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDIKKyAgICBzdWJpIDEsIHQyCisgICAg
c3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVu
dHNMZW5ndGhTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRz
X2xlbmd0aCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaWQ6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwg
dDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5v
cFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6
bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQwLCB0MikKKyAgICB3cml0ZUJhcnJpZXIodDAsIHQy
KQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KKyAgICBzdG9yZWkgdDIsIFBheWxv
YWRPZmZzZXRbdDMsIHQxXQorICAgIGRpc3BhdGNoKDkpCisKKy5vcFB1dEJ5SWRTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOSkKKwor
CittYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlk
U2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAu
b3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6
Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBhZGRwIHQxLCB0MworICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MikK
KyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSAyNFtQQ10sIHQxCisgICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0KKyAgICBkaXNwYXRjaCg5KQorZW5kCisKK19sbGludF9vcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVj
dHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWw6CisgICAgcHV0QnlJZFRyYW5zaXRpb24oCisgICAgICAgIG1hY3JvIChvbGRT
dHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCisgICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBv
bGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhl
IHByb3RvCisgICAgICAgIAorICAgICAgICAgICAgbG9hZHAgMjhbUENdLCBzY3JhdGNoCisgICAg
ICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAg
ICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAg
ICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICAg
ICAgICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1
cmVdLCBOdWxsVGFnLCAuZG9uZQorICAgICAgICAubG9vcDoKKyAgICAgICAgICAgIGxvYWRpIFN0
cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3Rv
Q2VsbAorICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBv
bGRTdHJ1Y3R1cmUKKyAgICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCBz
bG93CisgICAgICAgICAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICAgICAgICAgIGJpbmVxIFN0cnVj
dHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxv
b3AKKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCkKKworCitfbGxpbnRfb3BfZGVsX2J5X2lk
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVs
X2J5X2lkKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV92YWw6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRp
IDhbUENdLCB0MgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
Z2xvYmFsRGF0YVt0MV0sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIs
IENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNsb3cpCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpq
c0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9h
ZCh0MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAgYnBuZXEgW3QwXSwgdDIs
IC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MF0sIHQzCisg
ICAgYmlhZXEgdDEsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93
CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciAr
IFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0
b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisgICAgYmllcSB0MiwgRW1wdHlWYWx1
ZVRhZywgLm9wR2V0QnlWYWxTbG93CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAx
NltQQ10sIHQwCisgICAgdmFsdWVQcm9maWxlKHQyLCB0MSwgdDApCisgICAgZGlzcGF0Y2goNSkK
KworLm9wR2V0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlf
dmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDEy
W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcs
IC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQodDEsIEludDMyVGFnLCB0MiwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cpCisgICAgYWRkaSAx
LCB0MgorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisg
ICAgYmlhZXEgdDIsIHQxLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIG5lZ2kgdDIKKyAg
ICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZz
ZXRbY2ZyLCB0MiwgOF0sIHQwCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9h
ZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQz
LCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3Bh
dGNoKDUpCisKKy5vcEdldEFyZ3VtZW50QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50
X29wX2dldF9ieV9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENd
LCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwg
Lm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGJwbmVxIHQxLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDhb
UENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0
MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MAorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVk
U3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSAyNFtQQ10sIHQwCisg
ICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAorICAgIHN1YmkgMSwgdDAKKyAgICBiaWFlcSB0MCwg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFibGVTbG90c1t0M10sIC5vcEdldEJ5
UG5hbWVTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QyXSwgdDIK
KyAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W3QyLCB0MCwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQxLCBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBkaXNwYXRjaCg3KQorCisub3BHZXRCeVBuYW1lU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3BuYW1lKQorICAgIGRpc3BhdGNoKDcpCisKKworX2xs
aW50X29wX3B1dF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENd
LCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwg
Lm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQwLCBJbnQzMlRhZywgdDIsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0
YVt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QwXSwg
dDAKKyAgICBicG5lcSBbdDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93CisgICAgYmlhZXEgdDIsIEpT
QXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QxXSwgLm9wUHV0QnlWYWxTbG93CisgICAgbG9hZHAgSlNB
cnJheTo6bV9zdG9yYWdlW3QxXSwgdDAKKyAgICBiaWVxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3Ig
KyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wUHV0QnlWYWxFbXB0eQor
Lm9wUHV0QnlWYWxTdG9yZVJlc3VsdDoKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQxLCB0MykKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQz
KQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwg
dDIsIDhdCisgICAgc3RvcmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9m
ZnNldFt0MCwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wUHV0QnlWYWxFbXB0eToKKyAg
ICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KKyAgICBiaWIg
dDIsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdLCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0Cisg
ICAgYWRkaSAxLCB0MiwgdDEKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhb
dDBdCisgICAgam1wIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQKKworLm9wUHV0QnlWYWxTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX2RlbF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWxfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX3B1dF9ieV9pbmRleDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pbmRleCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9wdXRfZ2V0dGVyX3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9nZXR0ZXJfc2V0dGVyKQorICAgIGRpc3BhdGNoKDUp
CisKKworX2xsaW50X29wX2xvb3A6CisgICAgbm9wCitfbGxpbnRfb3Bfam1wOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBkaXNwYXRjaEJyYW5jaCg0W1BDXSkKKworCitfbGxpbnRfb3Bfam1w
X3Njb3BlczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX2ptcF9zY29wZXMpCisgICAgZGlzcGF0Y2goMCkKKworCittYWNybyBqdW1wVHJ1ZU9yRmFs
c2UoY29uZGl0aW9uT3AsIHNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEJvb2xlYW5UYWcsIHQwLCAuc2xvdykKKyAgICBjb25k
aXRpb25PcCh0MCwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRp
c3BhdGNoQnJhbmNoKDhbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKHNsb3cpCisgICAg
ZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl90cnVlOgorICAgIG5vcAorX2xs
aW50X29wX2p0cnVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2Uo
CisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgX2xsaW50X2hlbHBlcl9qdHJ1ZSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9mYWxz
ZToKKyAgICBub3AKK19sbGludF9vcF9qZmFsc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFs
dWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamZhbHNlKQorCisKK21hY3Jv
IGVxdWFsTnVsbChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVk
aWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxIYW5k
bGVyKFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdl
dCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENd
KQorCisuaW1tZWRpYXRlOgorICAgIG9yaSAxLCB0MQorICAgIGltbWVkaWF0ZUhhbmRsZXIodDEs
IC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKK2VuZAorCitfbGxpbnRfb3BfamVxX251bGw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVl
LCB0YXJnZXQpIGJ0Ym56IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5k
LAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmllcSB2YWx1ZSwgTnVsbFRhZywgdGFy
Z2V0IGVuZCkKKyAgICAKKworX2xsaW50X29wX2puZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRieiB2
YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8g
KHZhbHVlLCB0YXJnZXQpIGJpbmVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorCisKK19s
bGludF9vcF9qbmVxX3B0cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCBDZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNoCisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCisub3BKbmVxUHRyQnJhbmNoOgorICAg
IGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKy5vcEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBkaXNw
YXRjaCg0KQorCisKK21hY3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUs
IGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWcodDMsIHQyLCB0MykKKyAgICBiaW5lcSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJbnQK
KyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFyZSh0
MSwgdDMsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAg
YmlhIHQwLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcDFOb3RJ
bnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0Mywg
ZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBm
aWkyZCB0MywgdDIsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGZpaTJkIHQxLCB0MCwgZnQw
CisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2go
NCkKKworLm9wMk5vdEludDoKKyAgICBjaTJkIHQxLCBmdDAKKyAgICBiaWEgdDIsIExvd2VzdFRh
ZywgLnNsb3cKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBm
dDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5qdW1wVGFyZ2V0OgorICAgIGRp
c3BhdGNoQnJhbmNoKDEyW1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisg
ICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzOgorICAgIG5vcAor
X2xsaW50X29wX2psZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0
IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHQgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3MpCisKKworX2xsaW50
X29wX2pubGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVu
ZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQsIHJp
Z2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzcykKKworCitfbGxp
bnRfb3BfbG9vcF9pZl9ncmVhdGVyOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAg
ICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXIpCisKKworX2xsaW50X29wX2puZ3JlYXRlcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcikKKworCitfbGxpbnRfb3BfbG9vcF9p
Zl9sZXNzZXE6CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJp
bHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJkbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9qbGVzc2VxKQorCisKK19sbGludF9vcF9qbmxlc3NlcToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgdGFyZ2V0KSBiZGd0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfam5sZXNzZXEpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcmVxOgorICAg
IG5vcAorX2xsaW50X29wX2pncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNv
bXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
ZGd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdy
ZWF0ZXJlcSkKKworCitfbGxpbnRfb3Bfam5ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0
IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRh
cmdldCkgYmRsdHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVs
cGVyX2puZ3JlYXRlcmVxKQorCisKK19sbGludF9vcF9sb29wX2hpbnQ6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBkaXNwYXRjaCgxKQor
CisKK19sbGludF9vcF9zd2l0Y2hfaW1tOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSAxMltQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZSh0MiwgdDEsIHQwKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRw
IENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVt
cFRhYmxlLCB0MyAgICMgRklYTUU6IHdvdWxkIGJlIG5pY2UgdG8gcGVlcGhvbGUgdGhpcyEKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMg
KyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEg
dDEsIEludDMyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJs
ZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZz
ZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAg
bG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0
W3QyXSwgdDMKKyAgICBsb2FkaSBbdDMsIHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0
Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9w
U3dpdGNoSW1tTm90SW50OgorICAgIGJpYiB0MSwgTG93ZXN0VGFnLCAub3BTd2l0Y2hJbW1TbG93
ICAjIEdvIHRvIHNsb3cgcGF0aCBpZiBpdCdzIGEgZG91YmxlLgorLm9wU3dpdGNoSW1tRmFsbFRo
cm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5vcFN3aXRjaEltbVNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9pbW0pCisgICAgZGlzcGF0Y2goMCkK
KworCitfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQyLCB0MSwgdDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVK
dW1wVGFibGUsIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJT
d2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQz
LCB0MgorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNo
Q2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0MAorICAg
IGJpbmVxIFN0cmluZ0ltcGw6Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJv
dWdoCisgICAgbG9hZHAgU3RyaW5nSW1wbDo6bV9kYXRhOFt0MF0sIHQxCisgICAgYnRpbnogU3Ry
aW5nSW1wbDo6bV9oYXNoQW5kRmxhZ3NbdDBdLCBIYXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0
Y2hDaGFyOEJpdAorICAgIGxvYWRoIFt0MV0sIHQwCisgICAgam1wIC5vcFN3aXRjaENoYXJSZWFk
eQorLm9wU3dpdGNoQ2hhcjhCaXQ6CisgICAgbG9hZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENoYXJS
ZWFkeToKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0
MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0s
IC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJh
bmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgbG9hZGkgW3QyLCB0
MCwgNF0sIHQxCisgICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNw
YXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCisKKy5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAg
ICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9z
dHJpbmcpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmM6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGJ0aXogMTJbUENdLCAub3BOZXdGdW5jVW5jaGVja2VkCisgICAg
bG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZh
bHVlVGFnLCAub3BOZXdGdW5jRG9uZQorLm9wTmV3RnVuY1VuY2hlY2tlZDoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmMpCisub3BOZXdGdW5jRG9uZToKKyAgICBkaXNwYXRj
aCg0KQorCisKK19sbGludF9vcF9uZXdfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuY19leHApCisgICAgZGlzcGF0Y2go
MykKKworCittYWNybyBkb0NhbGwoaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxv
YWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwg
dDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5v
cENhbGxTbG93KQorICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBsb2FkaSAxMltQ
Q10sIHQzCisgICAgYWRkcCAyNCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgYWRkcCBjZnIs
IHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9hZHAgSlNGdW5j
dGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxv
YWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0
M10KKyAgICBsb2FkaSA4IC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3Vu
dCArIFRhZ09mZnNldFtjZnJdCisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNdCisgICAg
c3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkg
Q2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBTY29w
ZUNoYWluICsgVGFnT2Zmc2V0W3QzXQorICAgIG1vdmUgdDMsIGNmcgorICAgIGNhbGwgTExJbnRD
YWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxs
KCkKKworLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhlbHBlcikKK2VuZAor
CitfbGxpbnRfb3BfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGlu
dF9oZWxwZXJfY2FsbCkKKworCitfbGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3QpCisKKworX2xsaW50X29w
X2NhbGxfdmFyYXJnczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1BhdGhGb3JDYWxs
KDYsIF9sbGludF9oZWxwZXJfY2FsbF92YXJhcmdzKQorCisKK19sbGludF9vcF9jYWxsX2V2YWw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIAorICAgICMgRXZhbCBpcyBleGVjdXRlZCBpbiBv
bmUgb2YgdHdvIG1vZGVzOgorICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSByZWFs
bHkgaW52b2tpbmcgZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBleGVjdXRpb24g
aXMgcGVyZm9tZWQgZW50aXJlbHkgaW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBpdAorICAgICMgICAg
cmV0dXJucyB0aGUgUEMgb2YgYSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0aGUgcmV0dXJu
IHZhbHVlCisgICAgIyAgICB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgICMKKyAgICAjIDIp
IFdlIGZpbmQgdGhhdCB3ZSdyZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwoKSB0aGF0
IGlzIG5vdAorICAgICMgICAgdGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVscGVyIHJldHVybnMg
dGhlIFBDIG9mIHRoZSB0aGluZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQuCisg
ICAgIworICAgICMgVGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywgd2hpY2ggd291
bGQgcmVxdWlyZSBhIHRvdGFsIG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0ZSB0
aGF0IGNhbm5vdCBiZSBlYXNpbHkgcGFja2VkIGludG8gdHdvCisgICAgIyByZWdpc3RlcnMgKEMg
ZnVuY3Rpb25zIGNhbiByZXR1cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5KToKKyAgICAj
CisgICAgIyAtIFRoZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBtYXkgbm90IGhh
dmUgYmVlbiBtb2RpZmllZAorICAgICMgICBieSB0aGUgaGVscGVyLCBidXQgdGhlIGNvbnZlbnRp
b24gaXMgdGhhdCBpdCByZXR1cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0b3RhbGx5IGNsZWFy
IGlmIHRoYXQncyBuZWNlc3NhcnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUuCisgICAg
IyAgIEJ1dCB0aGF0J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRlciBzbyB3ZSBz
dGljayB3aXRoIGl0LgorICAgICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBoZWxwZXIg
c3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAjICAgdGhlIHJldHVy
biB2YWx1ZSwgb3IgZGlkIG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3IgdXMK
KyAgICAjICAgdG8gY2FsbC4KKyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAgICAjICAgLSBUaGUg
SlMgcmV0dXJuIHZhbHVlICh0d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisgICAgIyAgIC0gVGhl
IFBDIHRvIGNhbGwuCisgICAgIworICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2llciB0byBq
dXN0IGFsd2F5cyBoYXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBhIFBDIHRvIGNh
bGwsIGFuZCB0aGF0IFBDIG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAorICAgICMgcmV0
dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAKKyAgICBzbG93
UGF0aEZvckNhbGwoNCwgX2xsaW50X2hlbHBlcl9jYWxsX2V2YWwpCisKKworX2xsaW50X2dlbmVy
aWNfcmV0dXJuX3BvaW50OgorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitfbGxpbnRfb3Bf
dGVhcl9vZmZfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQKKyAgICBiaWVx
IFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRp
b25Ob3RDcmVhdGVkCisub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCisub3BUZWFyT2ZmQWN0aXZhdGlv
bk5vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYXJn
dW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBz
dWJpIDEsIHQwICAgIyBHZXQgdGhlIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcgorICAgIGJp
ZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQXJndW1l
bnRzTm90Q3JlYXRlZAorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hcmd1
bWVudHMpCisub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgyKQor
CisKK21hY3JvIGRvUmV0dXJuKCkKKyAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgIGxv
YWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgorICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3Jl
UmV0dXJuKHQyKQorICAgIHJldAorZW5kCisKK19sbGludF9vcF9yZXQ6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQ
Q10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0
dXJuKCkKKworCitfbGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIGxvYWRpIDRbUENdLCB0
MgorICAgIGxvYWRpIDhbUENdLCB0MworICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIs
IDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdmFsdWVQ
cm9maWxlKHQxLCB0MCwgdDMpCisgICAgdHJhY2VFeGVjdXRpb24oKSAjIE5lZWRzIHRvIGJlIGhl
cmUgYmVjYXVzZSBpdCB3b3VsZCBjbG9iYmVyIHQxLCB0MAorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcs
IC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90
eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgZG9S
ZXR1cm4oKQorCisub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3Q6CisgICAgbG9hZGkgOFtQQ10s
IHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJu
KCkKKworCitfbGxpbnRfb3BfbWV0aG9kX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICAjIFdlIGlnbm9yZSBtZXRob2QgY2hlY2tzIGFuZCB1c2Ugbm9ybWFsIGdldF9ieV9pZCBvcHRp
bWl6YXRpb25zLgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N0cmNhdDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N0cmNhdCkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF90b19wcmltaXRpdmU6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywg
Lm9wVG9QcmltaXRpdmVJc0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MgorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJd
LCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisub3BUb1ByaW1pdGl2ZUlzSW1t
OgorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9QcmltaXRp
dmVTbG93Q2FzZToKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fcHJpbWl0aXZlKQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9wbmFtZXM6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfcG5hbWVzKQorICAgIGRp
c3BhdGNoKDApICMgVGhlIGhlbHBlciBlaXRoZXIgYWR2YW5jZXMgdGhlIFBDIG9yIGp1bXBzIHVz
IHRvIHNvbWV3aGVyZSBlbHNlLgorCisKK19sbGludF9vcF9uZXh0X3BuYW1lOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZGkgMTZbUENdLCB0Mgor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQwCisgICAgYmllcSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgLm9wTmV4dFBuYW1lRW5kCisgICAgbG9hZGkgMjBbUENd
LCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAgbG9hZHAg
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9qc1N0cmluZ3NbdDJdLCB0MworICAgIGxvYWRpIFt0
MywgdDAsIDhdLCB0MworICAgIGFkZGkgMSwgdDAKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywg
VGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAgICBi
cG5lcSB0MSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAu
b3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNo
ZWRQcm90b3R5cGVDaGFpblt0Ml0sIHQwCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVj
dG9yW3QwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5vcE5leHRQbmFtZVRhcmdldAorLm9wTmV4dFBu
YW1lQ2hlY2tQcm90b3R5cGVMb29wOgorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSAr
IFRhZ09mZnNldFt0MV0sIE51bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBTdHJ1
Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQxCisgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFt
ZVNsb3cKKyAgICBhZGRwIDQsIHQwCisgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQ
cm90b3R5cGVMb29wCisub3BOZXh0UG5hbWVUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMjRb
UENdKQorCisub3BOZXh0UG5hbWVFbmQ6CisgICAgZGlzcGF0Y2goNykKKworLm9wTmV4dFBuYW1l
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV4dF9wbmFtZSkgIyBUaGlzIGVp
dGhlciBrZWVwcyB0aGUgUEMgd2hlcmUgaXQgd2FzIChjYXVzaW5nIHVzIHRvIGxvb3ApIG9yIHNl
dHMgaXQgdG8gdGFyZ2V0LgorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3B1c2hfc2Nv
cGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9w
dXNoX3Njb3BlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3BvcF9zY29wZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3BvcF9zY29w
ZSkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9wdXNoX25ld19zY29wZToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfbmV3X3Nj
b3BlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2NhdGNoOgorICAgICMgVGhpcyBp
cyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVz
ZSB0aGUKKyAgICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBf
bGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cg
dHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRoZSBKSVQg
dGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0aHJv
d2luZworICAgICMgY29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93aW5nIHRv
IHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6OnRhcmdl
dEludGVycHJldGVyUENGb3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBKSVRT
dGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRh
cmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9iYWxEYXRh
OjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0dsb2JhbERh
dGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpTR2xvYmFs
RGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1wdHlWYWx1
ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAgICAgIAorICAg
IGxvYWRpIDRbUENdLCB0MgorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4
XQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdHJhY2VFeGVjdXRp
b24oKSAgIyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNs
b2JiZXIgdDAsIHQxLCB0MiwgdDMgYWJvdmUuCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRf
b3BfdGhyb3c6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl90aHJvdykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvd19yZWZlcmVu
Y2VfZXJyb3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRf
b3BfanNyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBh
ZGRpIDMgKiA0LCBQQywgdDEKKyAgICBzdG9yZWkgdDEsIFtjZnIsIHQwLCA4XQorICAgIGRpc3Bh
dGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkcCBbY2ZyLCB0MCwgOF0sIFBDCisgICAg
ZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfZGVidWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWJ1ZykKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9wcm9maWxlX3dpbGxfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZHAgSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgdDAKKyAg
ICBidHB6IFt0MF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENhbGxEb25lOgorICAg
IGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVy
ZW5jZVtzcF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9maWxlRGlk
Q2FsbERvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxp
bnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dpbmcgZnJv
bSB0aGUgaW50ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMpLCBzbwor
ICAgICMgdGhlIHRocm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29k
ZSwgd2UgY29tZSB0byBoZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUg
SklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFs
RGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0
MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFd
CisKKworX2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVS
ZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2Jh
bERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3db
dDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3Qx
XQorCisKKyMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3
ZSBkb24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgorIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZl
ciBhcmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAorIyBhcyBt
dWNoLgorCittYWNybyBub3RTdXBwb3J0ZWQoKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAg
ICAgIGNyYXNoKCkKKyAgICBlbHNlCisgICAgICAgICMgV2Ugc2hvdWxkIHVzZSB3aGF0ZXZlciB0
aGUgc21hbGxlc3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24gaXMsIGp1c3QgdG8KKyAgICAgICAgIyBl
bnN1cmUgdGhhdCB0aGVyZSBpcyBhIGdhcCBiZXR3ZWVuIGluc3RydWN0aW9uIGxhYmVscy4gSWYg
bXVsdGlwbGUKKyAgICAgICAgIyBzbWFsbGVzdCBpbnN0cnVjdGlvbnMgZXhpc3QsIHdlIHNob3Vs
ZCBwaWNrIHRoZSBvbmUgdGhhdCBpcyBtb3N0CisgICAgICAgICMgbGlrZWx5IHJlc3VsdCBpbiBl
eGVjdXRpb24gYmVpbmcgaGFsdGVkLiBDdXJyZW50bHkgdGhhdCBpcyB0aGUgYnJlYWsKKyAgICAg
ICAgIyBpbnN0cnVjdGlvbiBvbiBhbGwgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBpbnRlcmVzdGVkIGlu
LiAoQnJlYWsgaXMgaW50MworICAgICAgICAjIG9uIEludGVsLCB3aGljaCBpcyAxIGJ5dGUsIGFu
ZCBia3B0IG9uIEFSTXY3LCB3aGljaCBpcyAyIGJ5dGVzLikKKyAgICAgICAgYnJlYWsKKyAgICBl
bmQKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQo
KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19s
bGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19s
bGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19s
bGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xs
aW50X29wX2dldF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9v
cF9nZXRfYnlfaWRfZ2V0dGVyX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9v
cF9nZXRfYnlfaWRfZ2V0dGVyX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9v
cF9nZXRfYnlfaWRfZ2V0dGVyX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29w
X2dldF9ieV9pZF9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9zdHJpbmdfbGVu
Z3RoOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfZ2VuZXJpYzoK
KyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3JlcGxhY2U6CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uOgorICAgIG5v
dFN1cHBvcnRlZCgpCisKKworIyBJbmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50LgorX2xsaW50X2Vu
ZDoKKyAgICBjcmFzaCgpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIu
aCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oIgorI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KKworLy8gVGhpcyBpcyBhIGZpbGUgZ2Vu
ZXJhdGVkIGJ5IG9mZmxpbmVhc20sIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUgYXNzZW1ibHkg
Y29kZQorLy8gZm9yIHRoZSBpbnRlcnByZXRlciwgYXMgY29tcGlsZWQgZnJvbSBMb3dMZXZlbElu
dGVycHJldGVyLmFzbS4KKyNpbmNsdWRlICJMTEludEFzc2VtYmx5LmgiCisKKyNlbmRpZiAvLyBF
TkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisjZGVmaW5lIExvd0xldmVsSW50ZXJwcmV0ZXJfaAor
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNs
dWRlICJPcGNvZGUuaCIKKworI2RlZmluZSBMTElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29kZSwg
bGVuZ3RoKSBleHRlcm4gIkMiIHZvaWQgbGxpbnRfIyNvcGNvZGUoKTsKKyAgICBGT1JfRUFDSF9P
UENPREVfSUQoTExJTlRfSU5TVFJVQ1RJT05fREVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJVQ1RJ
T05fREVDTAorCitleHRlcm4gIkMiIHZvaWQgbGxpbnRfYmVnaW4oKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9lbmQoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKCk7
CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZXZhbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhy
b3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93
X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUoKTsKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKwor
I2VuZGlmIC8vIExvd0xldmVsSW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYXJtdjcucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDMyIEBA
CisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCity
ZXF1aXJlICJvcHQiCisKK2NsYXNzIE5vZGUKKyAgZGVmIGFybVY3U2luZ2xlCisgICAgZG91Ymxl
T3BlcmFuZCA9IGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJCb2d1cyByZWdpc3RlciBuYW1lICN7
ZG91YmxlT3BlcmFuZH0iIHVubGVzcyBkb3VibGVPcGVyYW5kID1+IC9eZC8KKyAgICAicyIgKyAo
JH4ucG9zdF9tYXRjaC50b19pICogMikudG9fcworICBlbmQKK2VuZAorCitjbGFzcyBTcGVjaWFs
UmVnaXN0ZXIgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKG5hbWUpCisgICAgQG5hbWUg
PSBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIEBuYW1lCisgIGVuZAor
ICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/Cisg
ICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIGZhbHNlCisgIGVuZAor
ICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIHRydWUKKyAgZW5kCitlbmQKKworQVJNdjdfRVhUUkFf
R1BSUyA9IFtTcGVjaWFsUmVnaXN0ZXIubmV3KCJyOSIpLCBTcGVjaWFsUmVnaXN0ZXIubmV3KCJy
OCIpLCBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyMyIpXQorQVJNdjdfRVhUUkFfRlBSUyA9IFtTcGVj
aWFsUmVnaXN0ZXIubmV3KCJkNyIpXQorQVJNdjdfU0NSQVRDSF9GUFIgPSBTcGVjaWFsUmVnaXN0
ZXIubmV3KCJkOCIpCisKK2RlZiBhcm1WN01vdmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQor
ICAjIEN1cnJlbnRseSB3ZSBvbmx5IGhhbmRsZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBi
YWNrIHRvIG1vdi9tb3Z0IGZvciB0aGUgY29tcGxleCBvbmVzLgorICBpZiB2YWx1ZSA+PSAwICYm
IHZhbHVlIDwgMjU2CisgICAgJGFzbS5wdXRzICJtb3Z3ICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5k
fSwgXCMje3ZhbHVlfSIKKyAgZWxzaWYgKH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1Ngor
ICAgICRhc20ucHV0cyAibXZuICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje352YWx1ZX0i
CisgIGVsc2UKKyAgICAkYXNtLnB1dHMgIm1vdncgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9LCBc
IyN7dmFsdWUgJiAweGZmZmZ9IgorICAgIGlmICh2YWx1ZSAmIDB4ZmZmZjAwMDApICE9IDAKKyAg
ICAgICRhc20ucHV0cyAibW92dCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0sIFwjI3t2YWx1ZSA+
PiAxNn0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIGFy
bVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAg
ICAgInIwIgorICAgIHdoZW4gInQxIiwgImExIiwgInIxIgorICAgICAgInIxIgorICAgIHdoZW4g
InQyIiwgImEyIgorICAgICAgInIyIgorICAgIHdoZW4gImEzIgorICAgICAgInIzIgorICAgIHdo
ZW4gInQzIgorICAgICAgInI0IgorICAgIHdoZW4gInQ0IgorICAgICAgInI3IgorICAgIHdoZW4g
ImNmciIKKyAgICAgICJyNSIKKyAgICB3aGVuICJsciIKKyAgICAgICJsciIKKyAgICB3aGVuICJz
cCIKKyAgICAgICJzcCIKKyAgICBlbHNlCisgICAgICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFt
ZX0gZm9yIEFSTXY3IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgIGVuZAorZW5k
CisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1l
CisgICAgd2hlbiAiZnQwIiwgImZyIgorICAgICAgImQwIgorICAgIHdoZW4gImZ0MSIKKyAgICAg
ICJkMSIKKyAgICB3aGVuICJmdDIiCisgICAgICAiZDIiCisgICAgd2hlbiAiZnQzIgorICAgICAg
ImQzIgorICAgIHdoZW4gImZ0NCIKKyAgICAgICJkNCIKKyAgICB3aGVuICJmdDUiCisgICAgICAi
ZDUiCisgICAgZWxzZQorICAgICAgcmFpc2UgIkJhZCByZWdpc3RlciAje25hbWV9IGZvciBBUk12
NyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBJ
bW1lZGlhdGUKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJJbnZhbGlkIGltbWVkaWF0
ZSAje3ZhbHVlfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiBpZiB2YWx1ZSA8IDAgb3IgdmFsdWUg
PiAyNTUKKyAgICAiXCMje3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBk
ZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2UgIkJhZCBvZmZzZXQgYXQgI3tjb2RlT3JpZ2luU3Ry
aW5nfSIgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgb3Igb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAg
ICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCBcIyN7b2Zmc2V0LnZhbHVlfV0iCisgIGVuZAorZW5k
CisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2UgIkJhZCBv
ZmZzZXQgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAi
WyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2Nh
bGVTaGlmdH1dIgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIGFy
bVY3T3BlcmFuZAorICAgIHJhaXNlICJVbmNvbnZlcnRlZCBhYnNvbHV0ZSBhZGRyZXNzIGF0ICN7
Y29kZU9yaWdpblN0cmluZ30iCisgIGVuZAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgYnJhbmNo
IG9wcy4gRm9yIGV4YW1wbGU6CisjCisjIGJhZGRpeiBmb28sIGJhciwgYmF6CisjCisjIHdpbGwg
YmVjb21lOgorIworIyBhZGRpIGZvbywgYmFyCisjIGJ6IGJhegorIworCitkZWYgYXJtVjdMb3dl
ckJyYW5jaE9wcyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5v
ZGUgfAorICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNv
ZGUKKyAgICAgIHdoZW4gL15iKGFkZGl8c3ViaXxvcml8YWRkcCkvCisgICAgICAgIG9wID0gJDEK
KyAgICAgICAgYnJhbmNoID0gImIiICsgJH4ucG9zdF9tYXRjaAorICAgICAgICAKKyAgICAgICAg
Y2FzZSBvcAorICAgICAgICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAgICAgICAgb3AgPSAiYWRk
aXMiCisgICAgICAgIHdoZW4gInN1YmkiCisgICAgICAgICAgb3AgPSAic3ViaXMiCisgICAgICAg
IHdoZW4gIm9yaSIKKyAgICAgICAgICBvcCA9ICJvcmlzIgorICAgICAgICBlbmQKKyAgICAgICAg
CisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgb3As
IG5vZGUub3BlcmFuZHNbMC4uLTJdKQorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhub2RlLmNvZGVPcmlnaW4sIGJyYW5jaCwgW25vZGUub3BlcmFuZHNbLTFdXSkKKyAgICAgIHdo
ZW4gImJtdWxpbyIKKyAgICAgICAgdG1wMSA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3By
KQorICAgICAgICB0bXAyID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCisgICAgICAg
IG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInNtdWxsaSIsIFtu
b2RlLm9wZXJhbmRzWzBdLCBub2RlLm9wZXJhbmRzWzFdLCBub2RlLm9wZXJhbmRzWzFdLCB0bXAx
XSkKKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAi
cnNoaWZ0aSIsIFtub2RlLm9wZXJhbmRzWy0yXSwgSW1tZWRpYXRlLm5ldyhub2RlLmNvZGVPcmln
aW4sIDMxKSwgdG1wMl0pCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUu
Y29kZU9yaWdpbiwgImJpbmVxIiwgW3RtcDEsIHRtcDIsIG5vZGUub3BlcmFuZHNbLTFdXSkKKyAg
ICAgIHdoZW4gL15ibXVsaS8KKyAgICAgICAgY29uZGl0aW9uID0gJH4ucG9zdF9tYXRjaAorICAg
ICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtdWxpIiwg
bm9kZS5vcGVyYW5kc1swLi4tMl0pCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwgImJ0aSIgKyBjb25kaXRpb24sIFtub2RlLm9wZXJhbmRzWy0yXSwg
bm9kZS5vcGVyYW5kc1stMV1dKQorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IG5vZGUK
KyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgIGVuZAorICB9
CisgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIHNoaWZ0IG9wcy4gRm9yIGV4YW1w
bGU6CisjCisjIGxzaGlmdGkgZm9vLCBiYXIKKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIGFuZGkg
Zm9vLCAzMSwgdG1wCisjIGxzaGlmdGkgdG1wLCBiYXIKKyMKKworZGVmIGFybVY3U2FuaXRpemVT
aGlmdChvcGVyYW5kLCBsaXN0KQorICByZXR1cm4gb3BlcmFuZCBpZiBvcGVyYW5kLmltbWVkaWF0
ZT8KKyAgCisgIHRtcCA9IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCA6Z3ByKQorICBsaXN0
IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJhbmRpIiwgW29wZXJhbmQs
IEltbWVkaWF0ZS5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAzMSksIHRtcF0pCisgIHRtcAorZW5k
CisKK2RlZiBhcm1WN0xvd2VyU2hpZnRPcHMobGlzdCkKKyAgbmV3TGlzdCA9IFtdCisgIGxpc3Qu
ZWFjaCB7CisgICAgfCBub2RlIHwKKyAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAg
ICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICB3aGVuICJsc2hpZnRpIiwgInJzaGlmdGkiLCAidXJz
aGlmdGkiCisgICAgICAgIGlmIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgICAgbmV3
TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgW2Fy
bVY3U2FuaXRpemVTaGlmdChub2RlLm9wZXJhbmRzWzBdLCBuZXdMaXN0KSwgbm9kZS5vcGVyYW5k
c1sxXV0pCisgICAgICAgIGVsc2UKKyAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbbm9kZS5vcGVyYW5kc1swXSwgYXJtVjdT
YW5pdGl6ZVNoaWZ0KG5vZGUub3BlcmFuZHNbMV0sIG5ld0xpc3QpLCBub2RlLm9wZXJhbmRzWzJd
XSkKKyAgICAgICAgICByYWlzZSAiV3JvbmcgbnVtYmVyIG9mIG9wZXJhbmRzIGZvciBzaGlmdCBh
dCAje25vZGUuY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBub2RlLm9wZXJhbmRzLnNpemUgPT0g
MworICAgICAgICBlbmQKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAg
ICBlbmQKKyAgICBlbHNlCisgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICBlbmQKKyAgfQorICBu
ZXdMaXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBtYWxmb3JtZWQgYWRkcmVzc2VzLiBGb3Ig
ZXhhbXBsZToKKyMKKyMgbG9hZHAgMTAwMDBbZm9vXSwgYmFyCisjCisjIHdpbGwgYmVjb21lOgor
IworIyBtb3ZlIDEwMDAwLCB0bXAKKyMgYWRkcCBmb28sIHRtcAorIyBsb2FkcCAwW3RtcF0sIGJh
cgorIworCitjbGFzcyBOb2RlCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVj
dXJzZShsaXN0KQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBub2Rl
LmFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNSZWN1cnNlKGxpc3QpCisgICAgfQorICBlbmQK
K2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2Vz
UmVjdXJzZShsaXN0KQorICAgIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIG9yIG9mZnNldC52YWx1
ZSA+IDB4ZmZmCisgICAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICBs
aXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFtvZmZzZXQsIHRtcF0p
CisgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAiYWRkcCIsIFtiYXNl
LCB0bXBdKQorICAgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgdG1wLCBJbW1lZGlhdGUubmV3
KGNvZGVPcmlnaW4sIDApKQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitl
bmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2Vz
UmVjdXJzZShsaXN0KQorICAgIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICB0bXAgPSBUbXAu
bmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2Rl
T3JpZ2luLCAibW92ZSIsIFtvZmZzZXQsIHRtcF0pCisgICAgICBsaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhjb2RlT3JpZ2luLCAiYWRkcCIsIFtiYXNlLCB0bXBdKQorICAgICAgQmFzZUluZGV4Lm5l
dyhjb2RlT3JpZ2luLCB0bXAsIGluZGV4LCBzY2FsZSwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2lu
LCAwKSkKKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNz
IEFic29sdXRlQWRkcmVzcworICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vy
c2UobGlzdCkKKyAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgbGlzdCA8
PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbYWRkcmVzcywgdG1wXSkKKyAg
ICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCB0bXAsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwg
MCkpCisgIGVuZAorZW5kCisKK2RlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzKGxpc3Qp
CisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9kZSB8CisgICAgbmV3TGlz
dCA8PCBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNSZWN1cnNlKG5ld0xpc3QpCisg
IH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWFsZm9ybWVkIGFkZHJlc3Nl
cyBpbiBkb3VibGUgbG9hZHMgYW5kIHN0b3Jlcy4gRm9yIGV4YW1wbGU6CisjCisjIGxvYWRkIFtm
b28sIGJhciwgOF0sIGJhegorIworIyBiZWNvbWVzOgorIworIyBsZWFwIFtmb28sIGJhciwgOF0s
IHRtcAorIyBsb2FkZCBbdG1wXSwgYmF6CisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIGFybVY3RG91
YmxlQWRkcmVzcyhsaXN0KQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4
CisgIGRlZiBhcm1WN0RvdWJsZUFkZHJlc3MobGlzdCkKKyAgICB0bXAgPSBUbXAubmV3KGNvZGVP
cmlnaW4sIDpncHIpCisgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgImxl
YXAiLCBbc2VsZiwgdG1wXSkKKyAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCB0bXAsIEltbWVk
aWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCisgIGVuZAorZW5kCisKK2RlZiBhcm1WN0xvd2VyTWFs
Zm9ybWVkQWRkcmVzc2VzRG91YmxlKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2gg
eworICAgIHwgbm9kZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgY2Fz
ZSBub2RlLm9wY29kZQorICAgICAgd2hlbiAibG9hZGQiCisgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgImxvYWRkIiwgW25vZGUub3BlcmFuZHNbMF0u
YXJtVjdEb3VibGVBZGRyZXNzKG5ld0xpc3QpLCBub2RlLm9wZXJhbmRzWzFdXSkKKyAgICAgIHdo
ZW4gInN0b3JlZCIKKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2Rl
T3JpZ2luLCAic3RvcmVkIiwgW25vZGUub3BlcmFuZHNbMF0sIG5vZGUub3BlcmFuZHNbMV0uYXJt
VjdEb3VibGVBZGRyZXNzKG5ld0xpc3QpXSkKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8
PCBub2RlCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICBl
bmQKKyAgfQorICBuZXdMaXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBtaXNwbGFjZWQgaW1t
ZWRpYXRlcy4gRm9yIGV4YW1wbGU6CisjCisjIHN0b3JlaSAwLCBbZm9vXQorIworIyB3aWxsIGJl
Y29tZToKKyMKKyMgbW92ZSAwLCB0bXAKKyMgc3RvcmVpIHRtcCwgW2Zvb10KKyMKKworZGVmIGFy
bVY3TG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0
LmVhY2ggeworICAgIHwgbm9kZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAg
ICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgd2hlbiAic3RvcmVpIiwgInN0b3JlcCIKKyAgICAg
ICAgb3BlcmFuZHMgPSBub2RlLm9wZXJhbmRzCisgICAgICAgIG5ld09wZXJhbmRzID0gW10KKyAg
ICAgICAgb3BlcmFuZHMuZWFjaCB7CisgICAgICAgICAgfCBvcGVyYW5kIHwKKyAgICAgICAgICBp
ZiBvcGVyYW5kLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhvcGVy
YW5kLmNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJtb3ZlIiwgW29wZXJhbmQsIHRtcF0pCisgICAgICAg
ICAgICBuZXdPcGVyYW5kcyA8PCB0bXAKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdP
cGVyYW5kcyA8PCBvcGVyYW5kCisgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbmV3
TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgbmV3
T3BlcmFuZHMpCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgZW5k
CisgICAgZWxzZQorICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlz
dAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWFsZm9ybWVkIGltbWVkaWF0ZXMgZXhjZXB0IHdo
ZW4gdXNlZCBpbiBhICJtb3ZlIiBpbnN0cnVjdGlvbi4KKyMgRm9yIGV4YW1wbGU6CisjCisjIGFk
ZHAgNjQyNjQxLCBmb28KKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUgNjQyNjQxLCB0bXAK
KyMgYWRkcCB0bXAsIGZvbworIworCitjbGFzcyBOb2RlCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9y
bWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IG5v
ZGUgfAorICAgICAgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlz
dCkKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIGFybVY3TG93ZXJN
YWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgIHNlbGYKKyAgZW5kCitlbmQKKwor
Y2xhc3MgQmFzZUluZGV4CisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vy
c2UobGlzdCkKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcwor
ICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgc2Vs
ZgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3TG93ZXJNYWxmb3Jt
ZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgIGlmIHZhbHVlIDwgMCBvciB2YWx1ZSA+IDI1
NQorICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgbGlzdCA8PCBJ
bnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbc2VsZiwgdG1wXSkKKyAgICAgIHRt
cAorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworZGVmIGFybVY3
TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVh
Y2ggeworICAgIHwgbm9kZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAg
Y2FzZSBub2RlLm9wY29kZQorICAgICAgd2hlbiAibW92ZSIKKyAgICAgICAgbmV3TGlzdCA8PCBu
b2RlCisgICAgICB3aGVuICJhZGRpIiwgImFkZHAiLCAiYWRkaXMiLCAic3ViaSIsICJzdWJwIiwg
InN1YmlzIgorICAgICAgICBpZiBub2RlLm9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBhbmQK
KyAgICAgICAgICAgIG5vZGUub3BlcmFuZHNbMF0udmFsdWUgPCAwIGFuZAorICAgICAgICAgICAg
bm9kZS5vcGVyYW5kc1swXS52YWx1ZSA+PSAyNTUgYW5kCisgICAgICAgICAgICBub2RlLm9wZXJh
bmRzLnNpemUgPT0gMgorICAgICAgICAgIGlmIG5vZGUub3Bjb2RlID1+IC9hZGQvCisgICAgICAg
ICAgICBuZXdPcGNvZGUgPSAic3ViIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KKyAgICAgICAgICBl
bHNlCisgICAgICAgICAgICBuZXdPcGNvZGUgPSAiYWRkIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0K
KyAgICAgICAgICBlbmQKKyAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2Rl
LmNvZGVPcmlnaW4sIG5ld09wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbSW1tZWRpYXRlLm5ldygtbm9kZS5vcGVyYW5kc1swXS52YWx1ZSldICsgbm9kZS5vcGVy
YW5kc1sxLi4tMV0pCisgICAgICAgIGVsc2UKKyAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUuYXJt
VjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QpCisgICAgICAgIGVuZAor
ICAgICAgd2hlbiAibXVsaSIKKyAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1swXS5pc19hPyBJbW1l
ZGlhdGUKKyAgICAgICAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICAg
ICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtu
b2RlLm9wZXJhbmRzWzBdLCB0bXBdKQorICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KG5vZGUuY29kZU9yaWdpbiwgIm11bGkiLCBbdG1wXSArIG5vZGUub3BlcmFuZHNbMS4uLTFd
KQorICAgICAgICBlbHNlCisgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLmFybVY3TG93ZXJNYWxm
b3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0KQorICAgICAgICBlbmQKKyAgICAgIGVsc2UK
KyAgICAgICAgbmV3TGlzdCA8PCBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVj
dXJzZShuZXdMaXN0KQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgbmV3TGlzdCA8PCBub2Rl
CisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWlzcGxh
Y2VkIGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGU6CisjCisjIGFkZGkgZm9vLCBbYmFyXQorIworIyB3
aWxsIGJlY29tZToKKyMKKyMgbG9hZGkgW2Jhcl0sIHRtcAorIyBhZGRpIGZvbywgdG1wCisjIHN0
b3JlaSB0bXAsIFtiYXJdCisjCisjIEFub3RoZXIgZXhhbXBsZToKKyMKKyMgYWRkaSBbZm9vXSwg
YmFyCisjCisjIHdpbGwgYmVjb21lOgorIworIyBsb2FkaSBbZm9vXSwgdG1wCisjIGFkZGkgdG1w
LCBiYXIKKyMKKworZGVmIGFybVY3QXNSZWdpc3RlcihwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFu
ZCwgc3VmZml4LCBuZWVkU3RvcmUpCisgIHJldHVybiBvcGVyYW5kIHVubGVzcyBvcGVyYW5kLmFk
ZHJlc3M/CisgIAorICB0bXAgPSBUbXAubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgaWYgc3VmZml4
ID09ICJkIiB0aGVuIDpmcHIgZWxzZSA6Z3ByIGVuZCkKKyAgcHJlTGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAibG9hZCIgKyBzdWZmaXgsIFtvcGVyYW5kLCB0bXBd
KQorICBpZiBuZWVkU3RvcmUKKyAgICBwb3N0TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFu
ZC5jb2RlT3JpZ2luLCAic3RvcmUiICsgc3VmZml4LCBbdG1wLCBvcGVyYW5kXSkKKyAgZW5kCisg
IHRtcAorZW5kCisKK2RlZiBhcm1WN0FzUmVnaXN0ZXJzKHByZUxpc3QsIHBvc3RMaXN0LCBvcGVy
YW5kcywgc3VmZml4KQorICBuZXdPcGVyYW5kcyA9IFtdCisgIG9wZXJhbmRzLmVhY2hfd2l0aF9p
bmRleCB7CisgICAgfCBvcGVyYW5kLCBpbmRleCB8CisgICAgbmV3T3BlcmFuZHMgPDwgYXJtVjdB
c1JlZ2lzdGVyKHByZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kLCBzdWZmaXgsIGluZGV4ID09IG9w
ZXJhbmRzLnNpemUgLSAxKQorICB9CisgIG5ld09wZXJhbmRzCitlbmQKKworZGVmIGFybVY3TG93
ZXJNaXNwbGFjZWRBZGRyZXNzZXMobGlzdCkKKyAgbmV3TGlzdCA9IFtdCisgIGxpc3QuZWFjaCB7
CisgICAgfCBub2RlIHwKKyAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICBwb3N0
SW5zdHJ1Y3Rpb25zID0gW10KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdoZW4gImFk
ZGkiLCAiYWRkcCIsICJhZGRpcyIsICJhbmRpIiwgImFuZHAiLCAibHNoaWZ0aSIsICJtdWxpIiwg
Im5lZ2kiLCAibm90aSIsICJvcmkiLCAib3JpcyIsCisgICAgICAgICJvcnAiLCAicnNoaWZ0aSIs
ICJ1cnNoaWZ0aSIsICJzdWJpIiwgInN1YnAiLCAic3ViaXMiLCAieG9yaSIsICJ4b3JwIiwgL15i
aS8sIC9eYnAvLCAvXmJ0aS8sCisgICAgICAgIC9eYnRwLywgL15jaS8sIC9eY3AvLCAvXnRpLwor
ICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcm1WN0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0
cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJpIikpCisgICAgICB3aGVuICJiYmVxIiwgImJibmVx
IiwgImJiYSIsICJiYmFlcSIsICJiYmIiLCAiYmJiZXEiLCAiYnRibyIsICJidGJ6IiwgImJ0Ym56
IiwgInRieiIsICJ0Ym56IiwKKyAgICAgICAgInRibyIKKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJtVjdBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRz
LCAiYiIpKQorICAgICAgd2hlbiAiYmJndCIsICJiYmd0ZXEiLCAiYmJsdCIsICJiYmx0ZXEiLCAi
YnRicyIsICJ0YnMiCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29k
ZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3
TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImJzIikpCisgICAgICB3aGVu
ICJhZGRkIiwgImRpdmQiLCAic3ViZCIsICJtdWxkIiwgInNxcnRkIiwgL15iZC8KKyAgICAgICAg
bmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXJtVjdBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25z
LCBub2RlLm9wZXJhbmRzLCAiZCIpKQorICAgICAgd2hlbiAiam1wIiwgImNhbGwiCisgICAgICAg
IG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFthcm1WN0FzUmVnaXN0ZXIobmV3TGlzdCwgcG9zdEluc3RydWN0aW9u
cywgbm9kZS5vcGVyYW5kc1swXSwgInAiLCBmYWxzZSldKQorICAgICAgZWxzZQorICAgICAgICBu
ZXdMaXN0IDw8IG5vZGUKKyAgICAgIGVuZAorICAgICAgbmV3TGlzdCArPSBwb3N0SW5zdHJ1Y3Rp
b25zCisgICAgZWxzZQorICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3
TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgcmVnaXN0ZXIgcmV1c2UgaW4gY29tcGFyZSBp
bnN0cnVjdGlvbnMuIEZvciBleGFtcGxlOgorIworIyBjaWVxIHQwLCB0MSwgdDAKKyMKKyMgd2ls
bCBiZWNvbWU6CisjCisjIG1vdiB0bXAsIHQwCisjIGNpZXEgdG1wLCB0MSwgdDAKKyMKKworZGVm
IGFybVY3TG93ZXJSZWdpc3RlclJldXNlKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVh
Y2ggeworICAgIHwgbm9kZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAg
Y2FzZSBub2RlLm9wY29kZQorICAgICAgd2hlbiAiY2llcSIsICJjaW5lcSIsICJjaWEiLCAiY2lh
ZXEiLCAiY2liIiwgImNpYmVxIiwgImNpZ3QiLCAiY2lndGVxIiwgImNpbHQiLCAiY2lsdGVxIiwK
KyAgICAgICAgImNwZXEiLCAiY3BuZXEiLCAiY3BhIiwgImNwYWVxIiwgImNwYiIsICJjcGJlcSIs
ICJjcGd0IiwgImNwZ3RlcSIsICJjcGx0IiwgImNwbHRlcSIsCisgICAgICAgICJ0aW8iLCAidGlz
IiwgInRpeiIsICJ0aW56IiwgInRibyIsICJ0YnMiLCAidGJ6IiwgInRibnoiCisgICAgICAgIGlm
IG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1swXSA9
PSBub2RlLm9wZXJhbmRzWzFdCisgICAgICAgICAgICB0bXAgPSBUbXAubmV3KG5vZGUuY29kZU9y
aWdpbiwgOmdwcikKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUu
Y29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSkKKyAgICAgICAgICAg
IG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUs
IFt0bXAsIG5vZGUub3BlcmFuZHNbMV1dKQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5l
d0xpc3QgPDwgbm9kZQorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgcmFp
c2UgIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgYXQgI3tub2RlLmNvZGVPcmlnaW5TdHJpbmd9
IiB1bmxlc3Mgbm9kZS5vcGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgICBpZiBub2RlLm9wZXJh
bmRzWzBdID09IG5vZGUub3BlcmFuZHNbMl0KKyAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcobm9k
ZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzBdLCB0bXBdKQorICAg
ICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2Rl
Lm9wY29kZSwgW3RtcCwgbm9kZS5vcGVyYW5kc1sxXSwgbm9kZS5vcGVyYW5kc1syXV0pCisgICAg
ICAgICAgZWxzaWYgbm9kZS5vcGVyYW5kc1sxXSA9PSBub2RlLm9wZXJhbmRzWzJdCisgICAgICAg
ICAgICB0bXAgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIG5l
d0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5v
cGVyYW5kc1sxXSwgdG1wXSkKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFtub2RlLm9wZXJhbmRzWzBdLCB0bXAsIG5v
ZGUub3BlcmFuZHNbMl1dKQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwg
bm9kZQorICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3
TGlzdCA8PCBub2RlCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICBuZXdMaXN0IDw8IG5vZGUK
KyAgICBlbmQKKyAgfQorICBuZXdMaXN0CitlbmQKKworIworIyBMZWEgc3VwcG9ydC4KKyMKKwor
Y2xhc3MgQWRkcmVzcworICBkZWYgYXJtVjdFbWl0TGVhKGRlc3RpbmF0aW9uKQorICAgIGlmIGRl
c3RpbmF0aW9uID09IGJhc2UKKyAgICAgICRhc20ucHV0cyAiYWRkcyAje2Rlc3RpbmF0aW9uLmFy
bVY3T3BlcmFuZH0sIFwjI3tvZmZzZXQudmFsdWV9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0
cyAiYWRkcyAje2Rlc3RpbmF0aW9uLmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09wZXJhbmR9
LCBcIyN7b2Zmc2V0LnZhbHVlfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUlu
ZGV4CisgIGRlZiBhcm1WN0VtaXRMZWEoZGVzdGluYXRpb24pCisgICAgcmFpc2UgIk1hbGZvcm1l
ZCBCYXNlSW5kZXgsIG9mZnNldCBzaG91bGQgYmUgemVybyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9
IiB1bmxlc3Mgb2Zmc2V0LnZhbHVlID09IDAKKyAgICAkYXNtLnB1dHMgImFkZC53ICN7ZGVzdGlu
YXRpb24uYXJtVjdPcGVyYW5kfSwgI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdP
cGVyYW5kfSwgbHNsIFwjI3tzY2FsZVNoaWZ0fSIKKyAgZW5kCitlbmQKKworIyBGSVhNRTogd2Ug
Y291bGQgc3VwcG9ydCBBYnNvbHV0ZUFkZHJlc3MgZm9yIGxlYSwgYnV0IHdlIGRvbid0LgorCisj
CisjIEFjdHVhbCBsb3dlcmluZyBjb2RlIGZvbGxvd3MuCisjCisKK2NsYXNzIFNlcXVlbmNlCisg
IGRlZiBsb3dlckFSTXY3CisgICAgbXlMaXN0ID0gQGxpc3QKKyAgICAKKyAgICAjIFZlcmlmeSB0
aGF0IHdlIHdpbGwgb25seSBzZWUgaW5zdHJ1Y3Rpb25zIGFuZCBsYWJlbHMuCisgICAgbXlMaXN0
LmVhY2ggeworICAgICAgfCBub2RlIHwKKyAgICAgIHVubGVzcyBub2RlLmlzX2E/IEluc3RydWN0
aW9uIG9yCisgICAgICAgICAgbm9kZS5pc19hPyBMYWJlbCBvcgorICAgICAgICAgIG5vZGUuaXNf
YT8gTG9jYWxMYWJlbCBvcgorICAgICAgICAgIG5vZGUuaXNfYT8gU2tpcAorICAgICAgICByYWlz
ZSAiVW5leHBlY3RlZCAje25vZGUuaW5zcGVjdH0gYXQgI3tub2RlLmNvZGVPcmlnaW59IiAKKyAg
ICAgIGVuZAorICAgIH0KKyAgICAKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyQnJhbmNoT3BzKG15
TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyU2hpZnRPcHMobXlMaXN0KQorICAgIG15TGlz
dCA9IGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXMobXlMaXN0KQorICAgIG15TGlzdCA9IGFy
bVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNEb3VibGUobXlMaXN0KQorICAgIG15TGlzdCA9IGFy
bVY3TG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xv
d2VyTWFsZm9ybWVkSW1tZWRpYXRlcyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1p
c3BsYWNlZEFkZHJlc3NlcyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdMb3dlclJlZ2lzdGVy
UmV1c2UobXlMaXN0KQorICAgIG15TGlzdCA9IGFzc2lnblJlZ2lzdGVyc1RvVGVtcG9yYXJpZXMo
bXlMaXN0LCA6Z3ByLCBBUk12N19FWFRSQV9HUFJTKQorICAgIG15TGlzdCA9IGFzc2lnblJlZ2lz
dGVyc1RvVGVtcG9yYXJpZXMobXlMaXN0LCA6ZnByLCBBUk12N19FWFRSQV9GUFJTKQorICAgIG15
TGlzdC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBub2RlLmxvd2VyKCJBUk12NyIpCisg
ICAgfQorICBlbmQKK2VuZAorCitkZWYgYXJtVjdPcGVyYW5kcyhvcGVyYW5kcykKKyAgb3BlcmFu
ZHMubWFwe3x2fCB2LmFybVY3T3BlcmFuZH0uam9pbigiLCAiKQorZW5kCisKK2RlZiBhcm1WN0Zs
aXBwZWRPcGVyYW5kcyhvcGVyYW5kcykKKyAgYXJtVjdPcGVyYW5kcyhbb3BlcmFuZHNbLTFdXSAr
IG9wZXJhbmRzWzAuLi0yXSkKK2VuZAorCitkZWYgZW1pdEFybVY3Q29tcGFjdChvcGNvZGUyLCBv
cGNvZGUzLCBvcGVyYW5kcykKKyAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgJGFzbS5wdXRz
ICIje29wY29kZTN9ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgZWxzZQor
ICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kcy5zaXplID09IDIKKyAgICByYWlzZSB1bmxlc3Mgb3Bl
cmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVk
aWF0ZQorICAgICAgJGFzbS5wdXRzICIje29wY29kZTN9ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVy
YW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3Bl
cmFuZH0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICIje29wY29kZTJ9ICN7YXJtVjdGbGlw
cGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworZGVmIGVtaXRB
cm1WNyhvcGNvZGUsIG9wZXJhbmRzKQorICBpZiBvcGVyYW5kcy5zaXplID09IDMKKyAgICAkYXNt
LnB1dHMgIiN7b3Bjb2RlfSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgIGVs
c2UKKyAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgJGFzbS5wdXRzICIj
e29wY29kZX0gI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3
T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgZW5kCitlbmQKKworZGVm
IGVtaXRBcm1WN0RvdWJsZUJyYW5jaChicmFuY2hPcGNvZGUsIG9wZXJhbmRzKQorICAkYXNtLnB1
dHMgInZjbXBlLmY2NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgJGFzbS5w
dXRzICJ2bXJzIGFwc3JfbnpjdiwgZnBzY3IiCisgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9
ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorZW5kCisKK2RlZiBlbWl0QXJtVjdUZXN0KG9wZXJh
bmRzKQorICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICB3aGVu
IDIKKyAgICBtYXNrID0gSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtMSkKKyAgd2hlbiAzCisg
ICAgbWFzayA9IG9wZXJhbmRzWzFdCisgIGVsc2UKKyAgICByYWlzZSAiRXhwZWN0ZWQgMiBvciAz
IG9wZXJhbmRzIGJ1dCBnb3QgI3tvcGVyYW5kcy5zaXplfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9
IgorICBlbmQKKyAgCisgIGlmIG1hc2suaXNfYT8gSW1tZWRpYXRlIGFuZCBtYXNrLnZhbHVlID09
IC0xCisgICAgJGFzbS5wdXRzICJ0c3QgI3t2YWx1ZS5hcm1WN09wZXJhbmR9LCAje3ZhbHVlLmFy
bVY3T3BlcmFuZH0iCisgIGVsc2lmIG1hc2suaXNfYT8gSW1tZWRpYXRlCisgICAgJGFzbS5wdXRz
ICJ0c3QudyAje3ZhbHVlLmFybVY3T3BlcmFuZH0sICN7bWFzay5hcm1WN09wZXJhbmR9IgorICBl
bHNlCisgICAgJGFzbS5wdXRzICJ0c3QgI3t2YWx1ZS5hcm1WN09wZXJhbmR9LCAje21hc2suYXJt
VjdPcGVyYW5kfSIKKyAgZW5kCitlbmQKKworZGVmIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMs
IGNvZGUpCisgICRhc20ucHV0cyAibW92cyAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sIFwj
MCIKKyAgJGFzbS5wdXRzICJjbXAgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJh
bmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICRhc20ucHV0cyAiaXQgI3tjb2RlfSIKKyAgJGFzbS5w
dXRzICJtb3Yje2NvZGV9ICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgXCMxIgorZW5kCisK
K2RlZiBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCBjb2RlKQorICAkYXNtLnB1dHMgIm1vdnMg
I3tvcGVyYW5kc1stMV0uYXJtVjdPcGVyYW5kfSwgXCMwIgorICBlbWl0QXJtVjdUZXN0KG9wZXJh
bmRzKQorICAkYXNtLnB1dHMgIml0ICN7Y29kZX0iCisgICRhc20ucHV0cyAibW92I3tjb2RlfSAj
e29wZXJhbmRzWy0xXS5hcm1WN09wZXJhbmR9LCBcIzEiCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rp
b24KKyAgZGVmIGxvd2VyQVJNdjcKKyAgICAkYXNtLmNvbW1lbnQgY29kZU9yaWdpblN0cmluZwor
ICAgIGNhc2Ugb3Bjb2RlCisgICAgd2hlbiAiYWRkaSIsICJhZGRwIiwgImFkZGlzIgorICAgICAg
aWYgb3Bjb2RlID09ICJhZGRpcyIKKyAgICAgICAgc3VmZml4ID0gInMiCisgICAgICBlbHNlCisg
ICAgICAgIHN1ZmZpeCA9ICIiCisgICAgICBlbmQKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0g
MyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVzcyBv
cGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5k
c1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAg
YW5kIHN1ZmZpeC5lbXB0eT8KKyAgICAgICAgICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFu
ZHNbMl0KKyAgICAgICAgICAgICRhc20ucHV0cyAibW92ICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVy
YW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgIGVuZAorICAgICAg
ICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRzICJhZGRzICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVy
YW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3Bl
cmFuZH0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBv
cGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5k
c1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5p
c19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiYWRkcyAje2FybVY3RmxpcHBlZE9w
ZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICBlbHNlCisgICAgICAgIGlmIG9wZXJhbmRzWzBdLmlz
X2E/IEltbWVkaWF0ZQorICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0g
b3BlcmFuZHNbMF0KKyAgICAgICAgICAgICRhc20ucHV0cyAiYWRkcyAje2FybVY3RmxpcHBlZE9w
ZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAkYXNtLnB1dHMgImFkZCN7c3VmZml4fSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRz
KX0iCisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAgd2hlbiAiYW5kaSIsICJhbmRwIgorICAg
ICAgZW1pdEFybVY3Q29tcGFjdCgiYW5kcyIsICJhbmQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJv
cmkiLCAib3JwIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgib3JycyIsICJvcnIiLCBvcGVyYW5k
cykKKyAgICB3aGVuICJvcmlzIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgib3JycyIsICJvcnJz
Iiwgb3BlcmFuZHMpCisgICAgd2hlbiAieG9yaSIsICJ4b3JwIgorICAgICAgZW1pdEFybVY3Q29t
cGFjdCgiZW9ycyIsICJlb3IiLCBvcGVyYW5kcykKKyAgICB3aGVuICJsc2hpZnRpIgorICAgICAg
ZW1pdEFybVY3Q29tcGFjdCgibHNscyIsICJsc2xzIiwgb3BlcmFuZHMpCisgICAgd2hlbiAicnNo
aWZ0aSIKKyAgICAgIGVtaXRBcm1WN0NvbXBhY3QoImFzcnMiLCAiYXNycyIsIG9wZXJhbmRzKQor
ICAgIHdoZW4gInVyc2hpZnRpIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgibHNycyIsICJsc3Jz
Iiwgb3BlcmFuZHMpCisgICAgd2hlbiAibXVsaSIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0g
MiBvciBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXSBvciBvcGVyYW5kc1sxXSA9PSBvcGVyYW5k
c1syXQorICAgICAgICBlbWl0QXJtVjcoIm11bHMiLCBvcGVyYW5kcykKKyAgICAgIGVsc2UKKyAg
ICAgICAgJGFzbS5wdXRzICJtb3YgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCAje29wZXJh
bmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAgICRhc20ucHV0cyAibXVscyAje29wZXJhbmRz
WzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgZW5kCisgICAgd2hlbiAic3ViaSIsICJzdWJwIiwg
InN1YmlzIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgic3VicyIsICJzdWJzIiwgb3BlcmFuZHMp
CisgICAgd2hlbiAibmVnaSIKKyAgICAgICRhc20ucHV0cyAicnNicyAje29wZXJhbmRzWzBdLmFy
bVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgXCMwIgorICAgIHdoZW4g
Im5vdGkiCisgICAgICAkYXNtLnB1dHMgIm12bnMgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9
LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgd2hlbiAibG9hZGkiLCAibG9hZHAi
CisgICAgICAkYXNtLnB1dHMgImxkciAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0i
CisgICAgd2hlbiAic3RvcmVpIiwgInN0b3JlcCIKKyAgICAgICRhc20ucHV0cyAic3RyICN7YXJt
VjdPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gImxvYWRiIgorICAgICAgJGFzbS5wdXRz
ICJsZHJiICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJsb2Fk
YnMiCisgICAgICAkYXNtLnB1dHMgImxkcnNiLncgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVy
YW5kcyl9IgorICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAic3RyYiAje2FybVY3
T3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJsb2FkaCIKKyAgICAgICRhc20ucHV0cyAi
bGRyaCAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAibG9hZGhz
IgorICAgICAgJGFzbS5wdXRzICJsZHJzaC53ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFu
ZHMpfSIKKyAgICB3aGVuICJzdG9yZWgiCisgICAgICAkYXNtLnB1dHMgInN0cmggI3thcm1WN09w
ZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAibG9hZGQiCisgICAgICAkYXNtLnB1dHMgInZs
ZHIuNjQgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gInN0b3Jl
ZCIKKyAgICAgICRhc20ucHV0cyAidnN0ci42NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHMpfSIK
KyAgICB3aGVuICJhZGRkIgorICAgICAgZW1pdEFybVY3KCJ2YWRkLmY2NCIsIG9wZXJhbmRzKQor
ICAgIHdoZW4gImRpdmQiCisgICAgICBlbWl0QXJtVjcoInZkaXYuZjY0Iiwgb3BlcmFuZHMpCisg
ICAgd2hlbiAic3ViZCIKKyAgICAgIGVtaXRBcm1WNygidnN1Yi5mNjQiLCBvcGVyYW5kcykKKyAg
ICB3aGVuICJtdWxkIgorICAgICAgZW1pdEFybVY3KCJ2bXVsLmY2NCIsIG9wZXJhbmRzKQorICAg
IHdoZW4gInNxcnRkIgorICAgICAgJGFzbS5wdXRzICJ2c3FydC5mNjQgI3thcm1WN0ZsaXBwZWRP
cGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gImNpMmQiCisgICAgICAkYXNtLnB1dHMgInZt
b3YgI3tvcGVyYW5kc1sxXS5hcm1WN1NpbmdsZX0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5k
fSIKKyAgICAgICRhc20ucHV0cyAidmN2dC5mNjQuczMyICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVy
YW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN1NpbmdsZX0iCisgICAgd2hlbiAiYmRlcSIKKyAgICAg
IGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmVxIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRuZXEi
CisgICAgICAkYXNtLnB1dHMgInZjbXBlLmY2NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4u
MV0pfSIKKyAgICAgICRhc20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2NyIgorICAgICAgaXNV
bm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXEiKQorICAgICAgJGFzbS5wdXRzICJi
dnMgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLmFzbUxhYmVs
fSIKKyAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAg
aXNVbm9yZGVyZWQubG93ZXIoIkFSTXY3IikKKyAgICB3aGVuICJiZGd0IgorICAgICAgZW1pdEFy
bVY3RG91YmxlQnJhbmNoKCJiZ3QiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGd0ZXEiCisgICAg
ICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJnZSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkbHQi
CisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJtaSIsIG9wZXJhbmRzKQorICAgIHdoZW4g
ImJkbHRlcSIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmxzIiwgb3BlcmFuZHMpCisg
ICAgd2hlbiAiYmRlcXVuIgorICAgICAgJGFzbS5wdXRzICJ2Y21wZS5mNjQgI3thcm1WN09wZXJh
bmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgInZtcnMgYXBzcl9uemN2LCBm
cHNjciIKKyAgICAgICRhc20ucHV0cyAiYnZzICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAg
ICAgJGFzbS5wdXRzICJiZXEgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmRu
ZXF1biIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYm5lIiwgb3BlcmFuZHMpCisgICAg
d2hlbiAiYmRndHVuIgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJiaGkiLCBvcGVyYW5k
cykKKyAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYnBs
Iiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRsdHVuIgorICAgICAgZW1pdEFybVY3RG91YmxlQnJh
bmNoKCJibHQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGx0ZXF1biIKKyAgICAgIGVtaXRBcm1W
N0RvdWJsZUJyYW5jaCgiYmxlIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYnRkMmkiCisgICAgICAj
IEZJWE1FOiBtYXkgYmUgYSBnb29kIGlkZWEgdG8ganVzdCBnZXQgcmlkIG9mIHRoaXMgaW5zdHJ1
Y3Rpb24sIHNpbmNlIHRoZSBpbnRlcnByZXRlcgorICAgICAgIyBjdXJyZW50bHkgZG9lcyBub3Qg
dXNlIGl0LgorICAgICAgcmFpc2UgIkFSTXY3IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGNvZGUg
eWV0LCAje2NvZGVPcmlnaW59IgorICAgIHdoZW4gInRkMmkiCisgICAgICAkYXNtLnB1dHMgInZj
dnQuczMyLmY2NCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSwgI3tvcGVyYW5kc1sw
XS5hcm1WN09wZXJhbmR9IgorICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMV0uYXJt
VjdPcGVyYW5kfSwgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0iCisgICAgd2hlbiAi
YmNkMmkiCisgICAgICAkYXNtLnB1dHMgInZjdnQuczMyLmY2NCAje0FSTXY3X1NDUkFUQ0hfRlBS
LmFybVY3U2luZ2xlfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgJGFzbS5w
dXRzICJ2bW92ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tBUk12N19TQ1JBVENIX0ZQ
Ui5hcm1WN1NpbmdsZX0iCisgICAgICAkYXNtLnB1dHMgInZjdnQuZjY0LnMzMiAje0FSTXY3X1ND
UkFUQ0hfRlBSLmFybVY3T3BlcmFuZH0sICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJtVjdTaW5nbGV9
IgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJibmUiLCBbQVJNdjdfU0NSQVRDSF9GUFIs
IG9wZXJhbmRzWzBdLCBvcGVyYW5kc1syXV0pCisgICAgICAkYXNtLnB1dHMgInRzdCAje29wZXJh
bmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICAg
ICRhc20ucHV0cyAiYmVxICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gIm1vdmR6
IgorICAgICAgIyBGSVhNRTogZWl0aGVyIHN1cHBvcnQgdGhpcyBvciByZW1vdmUgaXQuCisgICAg
ICByYWlzZSAiQVJNdjcgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wY29kZSB5ZXQsICN7Y29kZU9y
aWdpbn0iCisgICAgd2hlbiAicG9wIgorICAgICAgJGFzbS5wdXRzICJwb3AgI3tvcGVyYW5kc1sw
XS5hcm1WN09wZXJhbmR9IgorICAgIHdoZW4gInB1c2giCisgICAgICAkYXNtLnB1dHMgInB1c2gg
I3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgIHdoZW4gIm1vdmUiLCAic3hpMnAiLCAi
enhpMnAiCisgICAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgYXJt
VjdNb3ZlSW1tZWRpYXRlKG9wZXJhbmRzWzBdLnZhbHVlLCBvcGVyYW5kc1sxXSkKKyAgICAgIGVs
c2UKKyAgICAgICAgJGFzbS5wdXRzICJtb3YgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5k
cyl9IgorICAgICAgZW5kCisgICAgd2hlbiAibm9wIgorICAgICAgJGFzbS5wdXRzICJub3AiCisg
ICAgd2hlbiAiYmllcSIsICJicGVxIiwgImJiZXEiCisgICAgICBpZiBJbW1lZGlhdGUubmV3KG5p
bCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5kc1sx
XS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgICBlbHNp
ZiBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMV0KKyAgICAgICAgJGFzbS5wdXRz
ICJ0c3QgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3Bl
cmFuZH0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5k
cyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgZW5kCisgICAgICAkYXNtLnB1dHMgImJlcSAje29w
ZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaW5lcSIsICJicG5lcSIsICJiYm5lcSIK
KyAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAk
YXNtLnB1dHMgInRzdCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0u
YXJtVjdPcGVyYW5kfSIKKyAgICAgIGVsc2lmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVy
YW5kc1sxXQorICAgICAgICAkYXNtLnB1dHMgInRzdCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFu
ZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFz
bS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICBlbmQK
KyAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4g
ImJpYSIsICJicGEiLCAiYmJhIgorICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRz
KG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgImJoaSAje29wZXJhbmRzWzJdLmFz
bUxhYmVsfSIKKyAgICB3aGVuICJiaWFlcSIsICJicGFlcSIsICJiYmFlcSIKKyAgICAgICRhc20u
cHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5w
dXRzICJiaHMgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmliIiwgImJwYiIs
ICJiYmIiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4u
MV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmxvICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAg
IHdoZW4gImJpYmVxIiwgImJwYmVxIiwgImJiYmVxIgorICAgICAgJGFzbS5wdXRzICJjbXAgI3th
cm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgImJscyAje29w
ZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWd0IiwgImJwZ3QiLCAiYmJndCIKKyAg
ICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAg
ICAgJGFzbS5wdXRzICJiZ3QgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmln
dGVxIiwgImJwZ3RlcSIsICJiYmd0ZXEiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3Bl
cmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmdlICN7b3BlcmFuZHNb
Ml0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJpbHQiLCAiYnBsdCIsICJiYmx0IgorICAgICAgJGFz
bS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNt
LnB1dHMgImJsdCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWx0ZXEiLCAi
YnBsdGVxIiwgImJibHRlcSIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhv
cGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5wdXRzICJibGUgI3tvcGVyYW5kc1syXS5hc21M
YWJlbH0iCisgICAgd2hlbiAiYnRpeiIsICJidHB6IiwgImJ0YnoiCisgICAgICBlbWl0QXJtVjdU
ZXN0KG9wZXJhbmRzKQorICAgICAgJGFzbS5wdXRzICJiZXEgI3tvcGVyYW5kc1stMV0uYXNtTGFi
ZWx9IgorICAgIHdoZW4gImJ0aW56IiwgImJ0cG56IiwgImJ0Ym56IgorICAgICAgZW1pdEFybVY3
VGVzdChvcGVyYW5kcykKKyAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFuZHNbLTFdLmFzbUxh
YmVsfSIKKyAgICB3aGVuICJidGlvIiwgImJ0cG8iLCAiYnRibyIKKyAgICAgIGVtaXRBcm1WN1Rl
c3Qob3BlcmFuZHMpCisgICAgICAkYXNtLnB1dHMgImJ2cyAje29wZXJhbmRzWy0xXS5hc21MYWJl
bH0iCisgICAgd2hlbiAiYnRpcyIsICJidHBzIiwgImJ0YnMiCisgICAgICBlbWl0QXJtVjdUZXN0
KG9wZXJhbmRzKQorICAgICAgJGFzbS5wdXRzICJibWkgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9
IgorICAgIHdoZW4gImptcCIKKyAgICAgIGlmIG9wZXJhbmRzWzBdLmxhYmVsPworICAgICAgICAk
YXNtLnB1dHMgImIgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgICBlbHNlCisgICAgICAg
ICRhc20ucHV0cyAibW92IHBjLCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICBl
bmQKKyAgICB3aGVuICJjYWxsIgorICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAg
ICRhc20ucHV0cyAiYmx4ICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgZWxzZQorICAg
ICAgICAkYXNtLnB1dHMgImJseCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICBl
bmQKKyAgICB3aGVuICJicmVhayIKKyAgICAgICRhc20ucHV0cyAiYmtwdCIKKyAgICB3aGVuICJy
ZXQiCisgICAgICAkYXNtLnB1dHMgImJ4IGxyIgorICAgIHdoZW4gImNpZXEiLCAiY3BlcSIKKyAg
ICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJlcSIpCisgICAgd2hlbiAiY2luZXEiLCAi
Y3BuZXEiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibmUiKQorICAgIHdoZW4g
ImNpYSIsICJjcGEiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiaGkiKQorICAg
IHdoZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywg
ImhzIikKKyAgICB3aGVuICJjaWIiLCAiY3BiIgorICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVy
YW5kcywgImxvIikKKyAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAgIGVtaXRBcm1WN0Nv
bXBhcmUob3BlcmFuZHMsICJscyIpCisgICAgd2hlbiAiY2lndCIsICJjcGd0IgorICAgICAgZW1p
dEFybVY3Q29tcGFyZShvcGVyYW5kcywgImd0IikKKyAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVx
IgorICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImdlIikKKyAgICB3aGVuICJjaWx0
IiwgImNwbHQiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibHQiKQorICAgIHdo
ZW4gImNpbHRlcSIsICJjcGx0ZXEiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAi
bGUiKQorICAgIHdoZW4gInRpbyIsICJ0Ym8iCisgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJh
bmRzLCAidnMiKQorICAgIHdoZW4gInRpcyIsICJ0YnMiCisgICAgICBlbWl0QXJtVjdUZXN0U2V0
KG9wZXJhbmRzLCAibWkiKQorICAgIHdoZW4gInRpeiIsICJ0YnoiCisgICAgICBlbWl0QXJtVjdU
ZXN0U2V0KG9wZXJhbmRzLCAiZXEiKQorICAgIHdoZW4gInRpbnoiLCAidGJueiIKKyAgICAgIGVt
aXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMsICJuZSIpCisgICAgd2hlbiAicGVlayIKKyAgICAgICRh
c20ucHV0cyAibGRyICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgW3NwLCBcIyN7b3BlcmFu
ZHNbMF0udmFsdWUgKiA0fV0iCisgICAgd2hlbiAicG9rZSIKKyAgICAgICRhc20ucHV0cyAic3Ry
ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgW3NwLCBcIyN7b3BlcmFuZHNbMF0udmFsdWUg
KiA0fV0iCisgICAgd2hlbiAiZmlpMmQiCisgICAgICAkYXNtLnB1dHMgInZtb3YgI3tvcGVyYW5k
c1syXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFu
ZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRhc20ucHV0cyAi
dm1vdiAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVy
YW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgIHdoZW4gImJvIgorICAgICAg
JGFzbS5wdXRzICJidnMgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYnMiCisg
ICAgICAkYXNtLnB1dHMgImJtaSAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJi
eiIKKyAgICAgICRhc20ucHV0cyAiYmVxICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgIHdo
ZW4gImJueiIKKyAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9Igor
ICAgIHdoZW4gImxlYWkiLCAibGVhcCIKKyAgICAgIG9wZXJhbmRzWzBdLmFybVY3RW1pdExlYShv
cGVyYW5kc1sxXSkKKyAgICB3aGVuICJzbXVsbGkiCisgICAgICByYWlzZSAiV3JvbmcgbnVtYmVy
IG9mIGFyZ3VtZW50cyB0byBzbXVsbCBpbiAje3NlbGYuaW5zcGVjdH0gYXQgI3tjb2RlT3JpZ2lu
U3RyaW5nfSIgdW5sZXNzIG9wZXJhbmRzLmxlbmd0aCA9PSA0CisgICAgICAkYXNtLnB1dHMgInNt
dWxsICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1szXS5hcm1WN09wZXJh
bmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVy
YW5kfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiVW5oYW5kbGVkIG9wY29kZSAje29wY29kZX0g
YXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNzIgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJi
YWNrZW5kcyIKK3JlcXVpcmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVp
cmUgInBhcnNlciIKK3JlcXVpcmUgInNlbGZfaGFzaCIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVx
dWlyZSAidHJhbnNmb3JtIgorCitjbGFzcyBBc3NlbWJsZXIKKyAgZGVmIGluaXRpYWxpemUob3V0
cCkKKyAgICBAb3V0cCA9IG91dHAKKyAgICBAc3RhdGUgPSA6Y3BwCisgICAgQGNvbW1lbnRTdGF0
ZSA9IDpub25lCisgICAgQGNvbW1lbnQgPSBuaWwKKyAgZW5kCisgIAorICBkZWYgZW50ZXJBc20K
KyAgICBAb3V0cC5wdXRzICJhc20gKCIKKyAgICBAc3RhdGUgPSA6YXNtCisgIGVuZAorICAKKyAg
ZGVmIGxlYXZlQXNtCisgICAgcHV0c0xhc3RDb21tZW50CisgICAgQG91dHAucHV0cyAiKTsiCisg
ICAgQHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBpbkFzbQorICAgIGVudGVyQXNtCisg
ICAgeWllbGQKKyAgICBsZWF2ZUFzbQorICBlbmQKKyAgCisgIGRlZiBsYXN0Q29tbWVudAorICAg
IGlmIEBjb21tZW50CisgICAgICByZXN1bHQgPSAiLy8gI3tAY29tbWVudH0iCisgICAgZWxzZQor
ICAgICAgcmVzdWx0ID0gIiIKKyAgICBlbmQKKyAgICBAY29tbWVudFN0YXRlID0gOm5vbmUKKyAg
ICBAY29tbWVudCA9IG5pbAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwdXRzTGFzdENv
bW1lbnQKKyAgICBjb21tZW50ID0gbGFzdENvbW1lbnQKKyAgICB1bmxlc3MgY29tbWVudC5lbXB0
eT8KKyAgICAgIEBvdXRwLnB1dHMgY29tbWVudAorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBw
dXRzKCpsaW5lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnB1
dHMoIlwiXFx0IiArIGxpbmUuam9pbignJykgKyAiXFxuXCIgI3tsYXN0Q29tbWVudH0iKQorICBl
bmQKKyAgCisgIGRlZiBwcmludChsaW5lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFz
bQorICAgIEBvdXRwLnByaW50KCJcIiIgKyBsaW5lICsgIlwiIikKKyAgZW5kCisgIAorICBkZWYg
cHV0c0xhYmVsKGxhYmVsTmFtZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAg
ICBAb3V0cC5wdXRzKCJPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwoI3tsYWJlbE5hbWV9KSAje2xh
c3RDb21tZW50fSIpCisgIGVuZAorICAKKyAgZGVmIHB1dHNMb2NhbExhYmVsKGxhYmVsTmFtZSkK
KyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wdXRzKCJMT0NBTF9M
QUJFTF9TVFJJTkcoI3tsYWJlbE5hbWV9KSBcIjpcXG5cIiAje2xhc3RDb21tZW50fSIpCisgIGVu
ZAorICAKKyAgZGVmIHNlbGYubGFiZWxSZWZlcmVuY2UobGFiZWxOYW1lKQorICAgICJcIiBTWU1C
T0xfU1RSSU5HKCN7bGFiZWxOYW1lfSkgXCIiCisgIGVuZAorICAKKyAgZGVmIHNlbGYubG9jYWxM
YWJlbFJlZmVyZW5jZShsYWJlbE5hbWUpCisgICAgIlwiIExPQ0FMX0xBQkVMX1NUUklORygje2xh
YmVsTmFtZX0pIFwiIgorICBlbmQKKyAgCisgIGRlZiBjb21tZW50KHRleHQpCisgICAgY2FzZSBA
Y29tbWVudFN0YXRlCisgICAgd2hlbiA6bm9uZQorICAgICAgQGNvbW1lbnQgPSB0ZXh0CisgICAg
ICBAY29tbWVudFN0YXRlID0gOm9uZQorICAgIHdoZW4gOm9uZQorICAgICAgQG91dHAucHV0cyAi
Ly8gI3tAY29tbWVudH0iCisgICAgICBAb3V0cC5wdXRzICIvLyAje3RleHR9IgorICAgICAgQGNv
bW1lbnQgPSBuaWwKKyAgICAgIEBjb21tZW50U3RhdGUgPSA6bWFueQorICAgIHdoZW4gOm1hbnkK
KyAgICAgIEBvdXRwLnB1dHMgIi8vICN7dGV4dH0iCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAg
ICBlbmQKKyAgZW5kCitlbmQKKworYXNtRmlsZSA9IEFSR1Yuc2hpZnQKK29mZnNldHNGaWxlID0g
QVJHVi5zaGlmdAorb3V0cHV0RmxubSA9IEFSR1Yuc2hpZnQKKworJHN0ZGVyci5wdXRzICJvZmZs
aW5lYXNtOiBQYXJzaW5nICN7YXNtRmlsZX0gYW5kICN7b2Zmc2V0c0ZpbGV9IGFuZCBjcmVhdGlu
ZyBhc3NlbWJseSBmaWxlICN7b3V0cHV0RmxubX0uIgorCitvZmZzZXRzTGlzdCwgY29uZmlnSW5k
ZXggPSBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KG9mZnNldHNGaWxlKQoraW5wdXREYXRh
ID0gSU86OnJlYWQoYXNtRmlsZSkKKworaW5wdXRIYXNoID0KKyAgIi8vIG9mZmxpbmVhc20gaW5w
dXQgaGFzaDogIiArIERpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoaW5wdXREYXRhKSArCisgICIgIiAr
IERpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoKG9mZnNldHNMaXN0ICsgW2NvbmZpZ0luZGV4XSkuam9p
bignICcpKSArCisgICIgIiArIHNlbGZIYXNoCisKK2lmIEZpbGVUZXN0LmV4aXN0PyBvdXRwdXRG
bG5tCisgIEZpbGUub3BlbihvdXRwdXRGbG5tLCAiciIpIHsKKyAgICB8IGlucCB8CisgICAgZmly
c3RMaW5lID0gaW5wLmdldHMKKyAgICBpZiBmaXJzdExpbmUgYW5kIGZpcnN0TGluZS5jaG9tcCA9
PSBpbnB1dEhhc2gKKyAgICAgICRzdGRlcnIucHV0cyAib2ZmbGluZWFzbTogTm90aGluZyBjaGFu
Z2VkLiIKKyAgICAgIGV4aXQgMAorICAgIGVuZAorICB9CitlbmQKKworRmlsZS5vcGVuKG91dHB1
dEZsbm0sICJ3IikgeworICB8IG91dHAgfAorICAkb3V0cHV0ID0gb3V0cAorICAkb3V0cHV0LnB1
dHMgaW5wdXRIYXNoCisgIAorICAkYXNtID0gQXNzZW1ibGVyLm5ldygkb3V0cHV0KQorICAKKyAg
YXN0ID0gcGFyc2UobGV4KGlucHV0RGF0YSkpCisgIAorICBmb3JTZXR0aW5ncyhjb21wdXRlU2V0
dGluZ3NDb21iaW5hdGlvbnMoYXN0KVtjb25maWdJbmRleF0sIGFzdCkgeworICAgIHwgY29uY3Jl
dGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgIGFzc2VydENvbmZpZ3VyYXRp
b24oY29uY3JldGVTZXR0aW5ncykKKyAgICBsb3dMZXZlbEFTVCA9IGxvd0xldmVsQVNULnJlc29s
dmUoKmJ1aWxkT2Zmc2V0c01hcChsb3dMZXZlbEFTVCwgb2Zmc2V0c0xpc3QpKQorICAgIGVtaXRD
b2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5k
KSB7CisgICAgICAkYXNtLmluQXNtIHsKKyAgICAgICAgbG93TGV2ZWxBU1QubG93ZXIoYmFja2Vu
ZCkKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBB
c3NlbWJseSBmaWxlICN7b3V0cHV0RmxubX0gc3VjY2Vzc2Z1bGx5IGdlbmVyYXRlZC4iCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTAzOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
IworIyBCYXNlIHV0aWxpdHkgdHlwZXMgZm9yIHRoZSBBU1QuCisjCisKKyMgVmFsaWQgbWV0aG9k
cyBmb3IgTm9kZToKKyMKKyMgbm9kZS5jaGlsZHJlbiAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGlt
bWVkaWF0ZSBjaGlsZHJlbi4KKyMKKyMgbm9kZS5kZXNjZW5kZW50cyAtPiBSZXR1cm5zIGFuIGFy
cmF5IG9mIGFsbCBzdHJpY3QgZGVzY2VuZGFudHMgKGNoaWxkcmVuCisjICAgICBhbmQgY2hpbGRy
ZW4gb2YgY2hpbGRyZW4sIHRyYW5zaXRpdmVseSkuCisjCisjIG5vZGUuZmxhdHRlbiAtPiBSZXR1
cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHN0cmljdCBkZXNjZW5kYW50cyBhbmQKKyMgICAg
IHRoZSBub2RlIGl0c2VsZi4KKyMKKyMgbm9kZS5maWx0ZXIodHlwZSkgLT4gUmV0dXJucyBhbiBh
cnJheSBjb250YWluaW5nIHRob3NlIGVsZW1lbnRzIGluCisjICAgICBub2RlLmZsYXR0ZW4gdGhh
dCBhcmUgb2YgdGhlIGdpdmVuIHR5cGUgKGlzX2E/IHR5cGUgcmV0dXJucyB0cnVlKS4KKyMKKyMg
bm9kZS5tYXBDaGlsZHJlbnt8dnwgLi4ufSAtPiBSZXR1cm5zIGEgbmV3IG5vZGUgd2l0aCBhbGwg
Y2hpbGRyZW4KKyMgICAgIHJlcGxhY2VkIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gYmxvY2suCisj
CisjIEV4YW1wbGVzOgorIworIyBub2RlLmZpbHRlcihTZXR0aW5nKS51bmlxIC0+IFJldHVybnMg
YWxsIG9mIHRoZSBzZXR0aW5ncyB0aGF0IHRoZSBBU1QncworIyAgICAgSWZUaGVuRWxzZSBibG9j
a3MgZGVwZW5kIG9uLgorIworIyBub2RlLmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEgLT4gUmV0
dXJucyBhbGwgb2YgdGhlIHN0cnVjdHVyZSBvZmZzZXRzCisjICAgICB0aGF0IHRoZSBBU1QgZGVw
ZW5kcyBvbi4KKworY2xhc3MgTm9kZQorICBhdHRyX3JlYWRlciA6Y29kZU9yaWdpbgorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4K
KyAgZW5kCisgIAorICBkZWYgY29kZU9yaWdpblN0cmluZworICAgICJsaW5lIG51bWJlciAje0Bj
b2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYgZGVzY2VuZGFudHMKKyAgICBjaGlsZHJlbi5j
b2xsZWN0e3x2fCB2LmZsYXR0ZW59LmZsYXR0ZW4KKyAgZW5kCisgIAorICBkZWYgZmxhdHRlbgor
ICAgIFtzZWxmXSArIGRlc2NlbmRhbnRzCisgIGVuZAorICAKKyAgZGVmIGZpbHRlcih0eXBlKQor
ICAgIGZsYXR0ZW4uc2VsZWN0e3x2fCB2LmlzX2E/IHR5cGV9CisgIGVuZAorZW5kCisKK2NsYXNz
IE5vQ2hpbGRyZW4gPCBOb2RlCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbXQorICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgU3Ry
dWN0T2Zmc2V0S2V5CisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGlu
aXRpYWxpemUoc3RydWN0LCBmaWVsZCkKKyAgICBAc3RydWN0ID0gc3RydWN0CisgICAgQGZpZWxk
ID0gZmllbGQKKyAgZW5kCisgIAorICBkZWYgaGFzaAorICAgIEBzdHJ1Y3QuaGFzaCArIEBmaWVs
ZC5oYXNoICogMworICBlbmQKKyAgCisgIGRlZiBlcWw/KG90aGVyKQorICAgIEBzdHJ1Y3QgPT0g
b3RoZXIuc3RydWN0IGFuZCBAZmllbGQgPT0gb3RoZXIuZmllbGQKKyAgZW5kCitlbmQKKworIwor
IyBBU1Qgbm9kZXMuCisjCisKK2NsYXNzIFN0cnVjdE9mZnNldCA8IE5vQ2hpbGRyZW4KKyAgYXR0
cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBzdHJ1Y3QsIGZpZWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0
cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAg
CisgIGRlZiBzZWxmLmZvckZpZWxkKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAga2V5
ID0gU3RydWN0T2Zmc2V0S2V5Lm5ldyhzdHJ1Y3QsIGZpZWxkKQorICAgIAorICAgIHVubGVzcyBA
QG1hcHBpbmdba2V5XQorICAgICAgQEBtYXBwaW5nW2tleV0gPSBTdHJ1Y3RPZmZzZXQubmV3KGNv
ZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW2tleV0KKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje3N0cnVjdH06OiN7ZmllbGR9IgorICBlbmQKKyAg
CisgIGRlZiA8PT4ob3RoZXIpCisgICAgaWYgQHN0cnVjdCAhPSBvdGhlci5zdHJ1Y3QKKyAgICAg
IHJldHVybiBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgICBlbmQKKyAgICBAZmllbGQgPD0+
IG90aGVyLmZpZWxkCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5k
CisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRl
PworICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5k
CitlbmQKKworY2xhc3MgU2l6ZW9mIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0g
e30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHVubGVz
cyBAQG1hcHBpbmdbc3RydWN0XQorICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBTaXplb2YubmV3
KGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbc3RydWN0XQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgInNpemVvZiAje0BzdHJ1Y3R9IgorICBlbmQKKyAgCisg
IGRlZiA8PT4ob3RoZXIpCisgICAgQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgIGVuZAorICAK
KyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAg
ZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5kCisgIAor
ICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRl
IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhbHVlID0g
dmFsdWUKKyAgICByYWlzZSAiQmFkIGltbWVkaWF0ZSB2YWx1ZSAje3ZhbHVlLmluc3BlY3R9IGF0
ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyB2YWx1ZS5pc19hPyBJbnRlZ2VyCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiI3t2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmID09KG90aGVy
KQorICAgIG90aGVyLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUgPT0gQHZhbHVlCisg
IGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFi
ZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAg
ZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3Mg
QWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisg
IGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIEFkZEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCks
ICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVt
cH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxz
ZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBp
bW1lZGlhdGU/CisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICBmYWxz
ZQorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCBy
aWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdo
dCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRd
CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgU3ViSW1tZWRpYXRlcy5uZXcoY29k
ZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAtICN7cmlnaHQuZHVtcH0pIgorICBlbmQKKyAgCisg
IGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAKKyAg
ZGVmIHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0
ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRy
ZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBNdWxJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJp
Z2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICogI3tyaWdo
dC5kdW1wfSkiCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisg
IAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPwor
ICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitl
bmQKKworY2xhc3MgTmVnSW1tZWRpYXRlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBb
QGNoaWxkXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5lZ0ltbWVkaWF0ZS5u
ZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiKC0je0BjaGlsZC5kdW1wfSkiCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFs
c2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYg
aW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFs
c2UKKyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9y
ZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBp
bmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVu
bGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFJlZ2lzdGVySUQu
bmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/Cisg
ICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAor
ICBkZWYgaW1tZWRpYXRlPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPwor
ICAgIHRydWUKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgor
ICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFt
ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisg
IEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gRlBS
ZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tu
YW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKKyAgCisgIGRlZiBh
ZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisg
IGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBy
ZWdpc3Rlcj8KKyAgICB0cnVlCisgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlIDwgTm9DaGls
ZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQK
KyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVd
ID0gVmFyaWFibGUubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5n
W25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2Ns
YXNzIEFkZHJlc3MgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6b2Zmc2V0CisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgICAgcmFpc2Ug
IkJhZCBiYXNlIGZvciBhZGRyZXNzICN7YmFzZS5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJp
bmd9IiB1bmxlc3MgYmFzZS5pc19hPyBWYXJpYWJsZSBvciBiYXNlLnJlZ2lzdGVyPworICAgIHJh
aXNlICJCYWQgb2Zmc2V0IGZvciBhZGRyZXNzICN7b2Zmc2V0Lmluc3BlY3R9IGF0ICN7Y29kZU9y
aWdpblN0cmluZ30iIHVubGVzcyBvZmZzZXQuaXNfYT8gVmFyaWFibGUgb3Igb2Zmc2V0LmltbWVk
aWF0ZT8KKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBvZmZzZXRdCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwg
KHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisg
ICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfV0iCisgIGVuZAorICAKKyAgZGVmIGFkZHJl
c3M/CisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQK
KyAgCisgIGRlZiBpbW1lZGlhdGU/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0
ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9kZQorICBh
dHRyX3JlYWRlciA6YmFzZSwgOmluZGV4LCA6c2NhbGUsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisgICAgQGluZGV4ID0gaW5kZXgKKyAgICBA
c2NhbGUgPSBzY2FsZQorICAgIHJhaXNlIHVubGVzcyBbMSwgMiwgNCwgOF0ubWVtYmVyPyBAc2Nh
bGUKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIHNjYWxlU2hpZnQKKyAg
ICBjYXNlIHNjYWxlCisgICAgd2hlbiAxCisgICAgICAwCisgICAgd2hlbiAyCisgICAgICAxCisg
ICAgd2hlbiA0CisgICAgICAyCisgICAgd2hlbiA4CisgICAgICAzCisgICAgZWxzZQorICAgICAg
cmFpc2UgIkJhZCBzY2FsZSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwgQGluZGV4LCBAb2Zmc2V0XQorICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEBiYXNlKSwgKHlpZWxkIEBpbmRleCksIEBzY2FsZSwgKHlpZWxkIEBvZmZzZXQpKQorICBl
bmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfSwgI3tp
bmRleC5kdW1wfSwgI3tzY2FsZX1dIgorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIHRy
dWUKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYg
aW1tZWRpYXRlPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIGZh
bHNlCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAg
YXR0cl9yZWFkZXIgOmFkZHJlc3MKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGFk
ZHJlc3MpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje2FkZHJlc3MuZHVtcH1bXSIKKyAgZW5kCisgIAor
ICBkZWYgYWRkcmVzcz8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBlbmQKKyAgCisg
IGRlZiByZWdpc3Rlcj8KKyAgICBmYWxzZQorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlv
biA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBvcGNvZGUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQG9wY29kZSA9IG9wY29kZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFw
Q2hpbGRyZW4oJnByb2MpCisgICAgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUs
IEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0IiAr
IG9wY29kZS50b19zICsgIiAiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIs
ICIpCisgIGVuZAorZW5kCisKK2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICAiXHRlcnJvciIKKyAgZW5kCitlbmQKKworY2xhc3MgQ29uc3REZWNsIDwgTm9k
ZQorICBhdHRyX3JlYWRlciA6dmFyaWFibGUsIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QHZhcmlhYmxlID0gdmFyaWFibGUKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIFtAdmFyaWFibGUsIEB2YWx1ZV0KKyAgZW5kCisgIAorICBkZWYgbWFw
Q2hpbGRyZW4KKyAgICBDb25zdERlY2wubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAdmFyaWFibGUp
LCAoeWllbGQgQHZhbHVlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJjb25zdCAje0B2
YXJpYWJsZS5kdW1wfSA9ICN7QHZhbHVlLmR1bXB9IgorICBlbmQKK2VuZAorCiskbGFiZWxNYXBw
aW5nID0ge30KKworY2xhc3MgTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1l
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShj
b2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNl
ICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFt
ZV0uaXNfYT8gTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFi
ZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1l
XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitj
bGFzcyBMb2NhbExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgIEBuYW1lID0gbmFtZQorICBlbmQKKworICBAQHVuaXF1ZU5hbWVDb3VudGVyID0gMAorICAK
KyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBp
bmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5s
ZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTG9jYWxMYWJlbAorICAgIGVsc2UKKyAgICAg
ICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBMb2NhbExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgc2VsZi51
bmlxdWUoY29tbWVudCkKKyAgICBuZXdOYW1lID0gIl8je2NvbW1lbnR9IgorICAgIGlmICRsYWJl
bE1hcHBpbmdbbmV3TmFtZV0KKyAgICAgIHdoaWxlICRsYWJlbE1hcHBpbmdbbmV3TmFtZSA9ICJf
I3tAQHVuaXF1ZU5hbWVDb3VudGVyfV8je2NvbW1lbnR9Il0KKyAgICAgICAgQEB1bmlxdWVOYW1l
Q291bnRlciArPSAxCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBmb3JOYW1lKG5pbCwgbmV3TmFt
ZSkKKyAgZW5kCisgIAorICBkZWYgY2xlYW5OYW1lCisgICAgaWYgbmFtZSA9fiAvXlwuLworICAg
ICAgIl8iICsgbmFtZVsxLi4tMV0KKyAgICBlbHNlCisgICAgICBuYW1lCisgICAgZW5kCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExh
YmVsUmVmZXJlbmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxh
YmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBl
bmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3Jp
Z2luLCAoeWllbGQgQGxhYmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5h
bWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBk
ZWYgYWRkcmVzcz8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICB0cnVl
CisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UgPCBOb0NoaWxkcmVuCisg
IGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFi
ZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAg
CisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxk
cmVuCisgICAgTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJl
bCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAg
ZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgdHJ1ZQorICBlbmQKK2VuZAorCitj
bGFzcyBTZXF1ZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGxpc3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGlz
dCA9IGxpc3QKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBsaXN0CisgIGVuZAorICAK
KyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBA
bGlzdC5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0
e3x2fCB2LmR1bXB9LmpvaW4oIlxuIikKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hp
bGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBp
bnN0YW5jZSA9IFRydWUubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFu
Y2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAidHJ1ZSIKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UgPCBOb0NoaWxkcmVuCisg
IGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2Ug
PSBGYWxzZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBl
bmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiZmFsc2UiCisgIGVuZAorZW5kCisKK2NsYXNzIFRydWVDbGFzcworICBkZWYgYXNOb2RlCisg
ICAgVHJ1ZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZUNsYXNzCisgIGRlZiBh
c05vZGUKKyAgICBGYWxzZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nIDwg
Tm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQor
ICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5n
W25hbWVdID0gU2V0dGluZy5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1h
cHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQK
KworY2xhc3MgQW5kIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENo
aWxkcmVuCisgICAgQW5kLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJp
Z2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3Jp
Z2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgT3IgPCBOb2RlCisgIGF0dHJfcmVhZGVy
IDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJp
Z2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0
ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0K
KyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
KCN7bGVmdC5kdW1wfSBvciAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTm90
IDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisg
IAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOb3QubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hp
bGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisg
IGVuZAorZW5kCisKK2NsYXNzIFNraXAgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICJcdHNraXAiCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpwcmVkaWNhdGUsIDp0aGVuQ2FzZQorICBhdHRyX2FjY2Vzc29yIDplbHNlQ2Fz
ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZSkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBwcmVkaWNhdGUgPSBwcmVkaWNhdGUKKyAgICBA
dGhlbkNhc2UgPSB0aGVuQ2FzZQorICAgIEBlbHNlQ2FzZSA9IFNraXAubmV3KGNvZGVPcmlnaW4p
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgaWYgQGVsc2VDYXNlCisgICAgICBbQHBy
ZWRpY2F0ZSwgQHRoZW5DYXNlLCBAZWxzZUNhc2VdCisgICAgZWxzZQorICAgICAgW0BwcmVkaWNh
dGUsIEB0aGVuQ2FzZV0KKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHByZWRpY2F0ZSksICh5aWVsZCBA
dGhlbkNhc2UpLCAoeWllbGQgQGVsc2VDYXNlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICJpZiAje3ByZWRpY2F0ZS5kdW1wfVxuIiArIHRoZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsg
ZWxzZUNhc2UuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8gPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6dmFyaWFibGVzLCA6Ym9keQorICAKKyAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQHZhcmlhYmxlcyA9IHZhcmlhYmxlcworICAg
IEBib2R5ID0gYm9keQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEB2YXJpYWJsZXMg
KyBbQGJvZHldCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTWFjcm8ubmV3KGNv
ZGVPcmlnaW4sIEBuYW1lLCBAdmFyaWFibGVzLm1hcHt8dnwgeWllbGQgdn0sICh5aWVsZCBAYm9k
eSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFi
bGVzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpXG4iICsgYm9keS5kdW1wICsg
IlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBNYWNyb0NhbGwgPCBOb2RlCisgIGF0dHJfcmVh
ZGVyIDpuYW1lLCA6b3BlcmFuZHMKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5h
bWUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisg
ICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAgICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAg
QG9wZXJhbmRzLmVhY2h7fHZ8IHJhaXNlIHVubGVzcyB2fQorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIEBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykK
KyAgICBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAb3BlcmFuZHMubWFwKCZwcm9j
KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdCN7bmFtZX0oIiArIG9wZXJhbmRzLmNv
bGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpIgorICBlbmQKK2VuZAorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDk2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCityZXF1aXJlICJhcm12NyIKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIng4NiIKKwor
QkFDS0VORFMgPQorICBbCisgICAiWDg2IiwKKyAgICJBUk12NyIKKyAgXQorCisjIEtlZXAgdGhl
IHNldCBvZiB3b3JraW5nIGJhY2tlbmRzIHNlcGFyYXRlIGZyb20gdGhlIHNldCBvZiBiYWNrZW5k
cyB0aGF0IG1pZ2h0IGJlCisjIHN1cHBvcnRlZC4gVGhpcyBpcyBncmVhdCBiZWNhdXNlIHRoZSBC
QUNLRU5EUyBsaXN0IGlzIGFsbW9zdCBsaWtlIGEgcmVzZXJ2ZWQKKyMgd29yZHMgbGlzdCwgaW4g
dGhhdCBpdCBjYXVzZXMgc2V0dGluZ3MgcmVzb2x1dGlvbiB0byB0cmVhdCB0aG9zZSB3b3JkcyBz
cGVjaWFsbHkuCisjIEhlbmNlIHRoaXMgbGV0cyB1cyBzZXQgYXNpZGUgdGhlIG5hbWUgb2YgYSBi
YWNrZW5kIHdlIG1pZ2h0IHdhbnQgdG8gc3VwcG9ydCBpbgorIyB0aGUgZnV0dXJlIHdoaWxlIG5v
dCBhY3R1YWxseSBzdXBwb3J0aW5nIHRoZSBiYWNrZW5kIHlldC4KK1dPUktJTkdfQkFDS0VORFMg
PQorICBbCisgICAiWDg2IiwKKyAgICJBUk12NyIKKyAgXQorCitCQUNLRU5EX1BBVFRFUk4gPSBS
ZWdleHAubmV3KCdcXEEoJyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFonKQorCitjbGFz
cyBOb2RlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIHNlbmQoImxvd2VyIiArIG5hbWUpCisgIGVu
ZAorZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBsb3dlcigpIGZvciB0aG9zZSBub2RlcyB0aGF0IGFy
ZSBiYWNrZW5kLWFnbm9zdGljCisKK2NsYXNzIExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAg
ICRhc20ucHV0c0xhYmVsKHNlbGYubmFtZVsxLi4tMV0pCisgIGVuZAorZW5kCisKK2NsYXNzIExv
Y2FsTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzTG9jYWxMYWJlbCAiX29m
ZmxpbmVhc21fI3tzZWxmLm5hbWVbMS4uLTFdfSIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxS
ZWZlcmVuY2UKKyAgZGVmIGFzbUxhYmVsCisgICAgQXNzZW1ibGVyLmxhYmVsUmVmZXJlbmNlKG5h
bWVbMS4uLTFdKQorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCisgIGRl
ZiBhc21MYWJlbAorICAgIEFzc2VtYmxlci5sb2NhbExhYmVsUmVmZXJlbmNlKCJfb2ZmbGluZWFz
bV8iK25hbWVbMS4uLTFdKQorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwCisgIGRlZiBsb3dlcihu
YW1lKQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXIobmFtZSkKKyAg
ICBpZiByZXNwb25kX3RvPyAibG93ZXIje25hbWV9IgorICAgICAgc2VuZCgibG93ZXIje25hbWV9
IikKKyAgICBlbHNlCisgICAgICBAbGlzdC5lYWNoIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAg
ICAgbm9kZS5sb3dlcihuYW1lKQorICAgICAgfQorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFj
dG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDkzIEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykK
KworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9m
ZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZWxmX2hhc2giCityZXF1aXJlICJz
ZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworaW5wdXRGbG5tID0gQVJHVi5zaGlmdAor
b3V0cHV0RmxubSA9IEFSR1Yuc2hpZnQKKworJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBQYXJz
aW5nICN7aW5wdXRGbG5tfSBhbmQgY3JlYXRpbmcgb2Zmc2V0IGV4dHJhY3RvciAje291dHB1dEZs
bm19LiIKKworZGVmIGVtaXRNYWdpY051bWJlcgorICBPRkZTRVRfTUFHSUNfTlVNQkVSUy5lYWNo
IHsKKyAgICB8IG51bWJlciB8CisgICAgJG91dHB1dC5wdXRzICIje251bWJlcn0sIgorICB9Citl
bmQKKworaW5wdXREYXRhID0gSU86OnJlYWQoaW5wdXRGbG5tKQoraW5wdXRIYXNoID0gIi8vIG9m
ZmxpbmVhc20gaW5wdXQgaGFzaDogI3tEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0YSl9
ICN7c2VsZkhhc2h9IgorCitpZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0RmxubQorICBGaWxlLm9w
ZW4ob3V0cHV0RmxubSwgInIiKSB7CisgICAgfCBpbnAgfAorICAgIGZpcnN0TGluZSA9IGlucC5n
ZXRzCisgICAgaWYgZmlyc3RMaW5lIGFuZCBmaXJzdExpbmUuY2hvbXAgPT0gaW5wdXRIYXNoCisg
ICAgICAkc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IE5vdGhpbmcgY2hhbmdlZC4iCisgICAgICBl
eGl0IDAKKyAgICBlbmQKKyAgfQorZW5kCisKK29yaWdpbmFsQVNUID0gcGFyc2UobGV4KGlucHV0
RGF0YSkpCisKK0ZpbGUub3BlbihvdXRwdXRGbG5tLCAidyIpIHsKKyAgfCBvdXRwIHwKKyAgJG91
dHB1dCA9IG91dHAKKyAgb3V0cC5wdXRzIGlucHV0SGFzaAorICBlbWl0Q29kZUluQWxsQ29uZmln
dXJhdGlvbnMob3JpZ2luYWxBU1QpIHsKKyAgICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGlu
ZGV4IHwKKyAgICBvZmZzZXRzTGlzdCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNv
cnQKKyAgICBzaXplc0xpc3QgPSBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CisgICAgCisg
ICAgbGVuZ3RoID0gKE9GRlNFVF9NQUdJQ19OVU1CRVJTLnNpemUgKyAxKSAqICgxICsgb2Zmc2V0
c0xpc3Quc2l6ZSArIHNpemVzTGlzdC5zaXplKQorICAgIAorICAgIG91dHAucHV0cyAic3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICAgIGVtaXRN
YWdpY051bWJlcgorICAgIG91dHAucHV0cyAiI3tpbmRleH0sIgorICAgIG9mZnNldHNMaXN0LmVh
Y2ggeworICAgICAgfCBvZmZzZXQgfAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICBvdXRw
LnB1dHMgIk9GRkxJTkVfQVNNX09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZp
ZWxkfSksIgorICAgIH0KKyAgICBzaXplc0xpc3QuZWFjaCB7CisgICAgICB8IG9mZnNldCB8Cisg
ICAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICAgIG91dHAucHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0
cnVjdH0pLCIKKyAgICB9CisgICAgb3V0cC5wdXRzICJ9OyIKKyAgfQorfQorCiskc3RkZXJyLnB1
dHMgIm9mZmxpbmVhc206IG9mZnNldCBleHRyYWN0b3IgI3tvdXRwdXRGbG5tfSBzdWNjZXNzZnVs
bHkgZ2VuZXJhdGVkLiIKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
aW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
MTcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgSW50ZXJlc3Rp
bmcgaW52YXJpYW50LCB3aGljaCB3ZSB0YWtlIGFkdmFudGFnZSBvZjogYnJhbmNoaW5nIGluc3Ry
dWN0aW9ucworIyBhbHdheXMgYmVnaW4gd2l0aCAiYiIsIGFuZCBubyBub24tYnJhbmNoaW5nIGlu
c3RydWN0aW9ucyBiZWdpbiB3aXRoICJiIi4KKyMgVGVybWluYWwgaW5zdHJ1Y3Rpb25zIGFyZSAi
am1wIiBhbmQgInJldCIuCisKK01BQ1JPX0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJhZGRpIiwK
KyAgICJhbmRpIiwKKyAgICJsc2hpZnRpIiwKKyAgICJtdWxpIiwKKyAgICJuZWdpIiwKKyAgICJu
b3RpIiwKKyAgICJvcmkiLAorICAgInJzaGlmdGkiLAorICAgInVyc2hpZnRpIiwKKyAgICJzdWJp
IiwKKyAgICJ4b3JpIiwKKyAgICJsb2FkaSIsCisgICAibG9hZGIiLAorICAgImxvYWRicyIsCisg
ICAibG9hZGgiLAorICAgImxvYWRocyIsCisgICAic3RvcmVpIiwKKyAgICJzdG9yZWIiLAorICAg
ImxvYWRkIiwKKyAgICJtb3ZlZCIsCisgICAic3RvcmVkIiwKKyAgICJhZGRkIiwKKyAgICJkaXZk
IiwKKyAgICJzdWJkIiwKKyAgICJtdWxkIiwKKyAgICJzcXJ0ZCIsCisgICAiY2kyZCIsCisgICAi
ZmlpMmQiLCAjIHVzYWdlOiBmaWkyZCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4s
IDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+LCA8ZnByPgorICAgImZkMmlpIiwgIyB1
c2FnZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdw
ciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4KKyAgICJiZGVxIiwKKyAgICJiZG5lcSIsCisg
ICAiYmRndCIsCisgICAiYmRndGVxIiwKKyAgICJiZGx0IiwKKyAgICJiZGx0ZXEiLAorICAgImJk
ZXF1biIsCisgICAiYmRuZXF1biIsCisgICAiYmRndHVuIiwKKyAgICJiZGd0ZXF1biIsCisgICAi
YmRsdHVuIiwKKyAgICJiZGx0ZXF1biIsCisgICAiYnRkMmkiLAorICAgInRkMmkiLAorICAgImJj
ZDJpIiwKKyAgICJtb3ZkeiIsCisgICAicG9wIiwKKyAgICJwdXNoIiwKKyAgICJtb3ZlIiwKKyAg
ICJzeGkycCIsCisgICAienhpMnAiLAorICAgIm5vcCIsCisgICAiYmllcSIsCisgICAiYmluZXEi
LAorICAgImJpYSIsCisgICAiYmlhZXEiLAorICAgImJpYiIsCisgICAiYmliZXEiLAorICAgImJp
Z3QiLAorICAgImJpZ3RlcSIsCisgICAiYmlsdCIsCisgICAiYmlsdGVxIiwKKyAgICJiYmVxIiwK
KyAgICJiYm5lcSIsCisgICAiYmJhIiwKKyAgICJiYmFlcSIsCisgICAiYmJiIiwKKyAgICJiYmJl
cSIsCisgICAiYmJndCIsCisgICAiYmJndGVxIiwKKyAgICJiYmx0IiwKKyAgICJiYmx0ZXEiLAor
ICAgImJ0aW8iLAorICAgImJ0aXMiLAorICAgImJ0aXoiLAorICAgImJ0aW56IiwKKyAgICJidGJv
IiwKKyAgICJidGJzIiwKKyAgICJidGJ6IiwKKyAgICJidGJueiIsCisgICAiam1wIiwKKyAgICJi
YWRkaW8iLAorICAgImJhZGRpcyIsCisgICAiYmFkZGl6IiwKKyAgICJiYWRkaW56IiwKKyAgICJi
c3ViaW8iLAorICAgImJzdWJpcyIsCisgICAiYnN1Yml6IiwKKyAgICJic3ViaW56IiwKKyAgICJi
bXVsaW8iLAorICAgImJtdWxpcyIsCisgICAiYm11bGl6IiwKKyAgICJibXVsaW56IiwKKyAgICJi
b3JpbyIsCisgICAiYm9yaXMiLAorICAgImJvcml6IiwKKyAgICJib3JpbnoiLAorICAgImJyZWFr
IiwKKyAgICJjYWxsIiwKKyAgICJyZXQiLAorICAgImNpZXEiLAorICAgImNpbmVxIiwKKyAgICJj
aWEiLAorICAgImNpYWVxIiwKKyAgICJjaWIiLAorICAgImNpYmVxIiwKKyAgICJjaWd0IiwKKyAg
ICJjaWd0ZXEiLAorICAgImNpbHQiLAorICAgImNpbHRlcSIsCisgICAidGlvIiwKKyAgICJ0aXMi
LAorICAgInRpeiIsCisgICAidGlueiIsCisgICAidGJvIiwKKyAgICJ0YnMiLAorICAgInRieiIs
CisgICAidGJueiIsCisgICAicGVlayIsCisgICAicG9rZSIsCisgICAiYnBlcSIsCisgICAiYnBu
ZXEiLAorICAgImJwYSIsCisgICAiYnBhZXEiLAorICAgImJwYiIsCisgICAiYnBiZXEiLAorICAg
ImJwZ3QiLAorICAgImJwZ3RlcSIsCisgICAiYnBsdCIsCisgICAiYnBsdGVxIiwKKyAgICJhZGRw
IiwKKyAgICJhbmRwIiwKKyAgICJvcnAiLAorICAgInN1YnAiLAorICAgInhvcnAiLAorICAgImxv
YWRwIiwKKyAgICJjcGVxIiwKKyAgICJjcG5lcSIsCisgICAiY3BhIiwKKyAgICJjcGFlcSIsCisg
ICAiY3BiIiwKKyAgICJjcGJlcSIsCisgICAiY3BndCIsCisgICAiY3BndGVxIiwKKyAgICJjcGx0
IiwKKyAgICJjcGx0ZXEiLAorICAgInN0b3JlcCIsCisgICAiYnRwbyIsCisgICAiYnRwcyIsCisg
ICAiYnRweiIsCisgICAiYnRwbnoiLAorICAgImJhZGRwbyIsCisgICAiYmFkZHBzIiwKKyAgICJi
YWRkcHoiLAorICAgImJhZGRwbnoiLAorICAgImJvIiwKKyAgICJicyIsCisgICAiYnoiLAorICAg
ImJueiIsCisgICAibGVhaSIsCisgICAibGVhcCIsCisgIF0KKworWDg2X0lOU1RSVUNUSU9OUyA9
CisgIFsKKyAgICJjZHFpIiwKKyAgICJpZGl2aSIKKyAgXQorCitBUk12N19JTlNUUlVDVElPTlMg
PQorICBbCisgICAic211bGxpIiwKKyAgICJhZGRpcyIsCisgICAic3ViaXMiLAorICAgIm9yaXMi
CisgIF0KKworSU5TVFJVQ1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05TICsgWDg2X0lOU1RSVUNU
SU9OUyArIEFSTXY3X0lOU1RSVUNUSU9OUworCitJTlNUUlVDVElPTl9QQVRURVJOID0gUmVnZXhw
Lm5ldygnXFxBKCgnICsgSU5TVFJVQ1RJT05TLmpvaW4oJyl8KCcpICsgJykpXFxaJykKKworZGVm
IGlzQnJhbmNoKGluc3RydWN0aW9uKQorICBpbnN0cnVjdGlvbiA9fiAvXmIvCitlbmQKKworZGVm
IGhhc0ZhbGxUaHJvdWdoKGluc3RydWN0aW9uKQorICBpbnN0cnVjdGlvbiAhPSAicmV0IiBhbmQg
aW5zdHJ1Y3Rpb24gIT0gImptcCIKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50
cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29m
ZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBA
CisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitNQUdJQ19OVU1CRVJTID0g
WyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1
MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0
IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMiCisKK09GRlNFVF9NQUdJQ19O
VU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworIworIyBvZmZzZXRzTGlzdChh
c3QpCisjIHNpemVzTGlzdChhc3QpCisjCisjIFJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5k
IHNpemVzIHVzZWQgYnkgdGhlIEFTVC4KKyMKKworZGVmIG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0
LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorZW5kCisKK2RlZiBzaXplc0xpc3QoYXN0
KQorICBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CitlbmQKKworIworIyBvZmZzZXRzQW5k
Q29uZmlndXJhdGlvbkluZGV4KGFzdCwgZmlsZSkgLT4KKyMgICAgIFtvZmZzZXRzLCBpbmRleF0K
KyMKKyMgUGFyc2VzIHRoZSBvZmZzZXRzIGZyb20gYSBmaWxlIGFuZCByZXR1cm5zIGEgbGlzdCBv
ZiBvZmZzZXRzIGFuZCB0aGUKKyMgaW5kZXggb2YgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB2
YWxpZCBpbiB0aGlzIGJ1aWxkIHRhcmdldC4KKyMKKworZGVmIG9mZnNldHNBbmRDb25maWd1cmF0
aW9uSW5kZXgoZmlsZSkKKyAgaW5kZXggPSBuaWwKKyAgb2Zmc2V0cyA9IFtdCisgIGVuZGlhbm5l
c3NNYXJrZXJCeXRlcyA9IG5pbAorICAKKyAgZGVmIHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQor
ICAgIGJ5dGVzID0gW10KKyAgICA0LnRpbWVzIHsKKyAgICAgIGJ5dGVzIDw8IGlucC5nZXRieXRl
CisgICAgfQorICAgIAorICAgIGlmIGVuZGlhbm5lc3MgPT0gOmxpdHRsZQorICAgICAgIyBMaXR0
bGUgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMCB8CisgICAgICAgYnl0ZXNbMV0gPDwgOCB8
CisgICAgICAgYnl0ZXNbMl0gPDwgMTYgfAorICAgICAgIGJ5dGVzWzNdIDw8IDI0KQorICAgIGVs
c2UKKyAgICAgICMgQmlnIGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDI0IHwKKyAgICAgICBi
eXRlc1sxXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbMl0gPDwgOCB8CisgICAgICAgYnl0ZXNbM10g
PDwgMCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBbOmxpdHRsZSwgOmJpZ10uZWFjaCB7CisgICAg
fCBlbmRpYW5uZXNzIHwKKyAgICBtYWdpY0J5dGVzID0gW10KKyAgICBNQUdJQ19OVU1CRVJTLmVh
Y2ggeworICAgICAgfCBudW1iZXIgfAorICAgICAgY3VycmVudEJ5dGVzID0gW10KKyAgICAgIDQu
dGltZXMgeworICAgICAgICBjdXJyZW50Qnl0ZXMgPDwgKG51bWJlciAmIDB4ZmYpCisgICAgICAg
IG51bWJlciA+Pj0gOAorICAgICAgfQorICAgICAgaWYgZW5kaWFubmVzcyA9PSA6YmlnCisgICAg
ICAgIGN1cnJlbnRCeXRlcy5yZXZlcnNlIQorICAgICAgZW5kCisgICAgICBtYWdpY0J5dGVzICs9
IGN1cnJlbnRCeXRlcworICAgIH0KKyAgICAKKyAgICBGaWxlLm9wZW4oZmlsZSwgInIiKSB7Cisg
ICAgICB8IGlucCB8CisgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgbG9vcCB7CisgICAg
ICAgIGJ5dGUgPSBpbnAuZ2V0Ynl0ZQorICAgICAgICBicmVhayB1bmxlc3MgYnl0ZQorICAgICAg
ICBpZiBieXRlID09IG1hZ2ljQnl0ZXNbd2hlcmVJbk1hcmtlcl0KKyAgICAgICAgICB3aGVyZUlu
TWFya2VyICs9IDEKKyAgICAgICAgICBpZiB3aGVyZUluTWFya2VyID09IG1hZ2ljQnl0ZXMuc2l6
ZQorICAgICAgICAgICAgIyBXZSBoYXZlIGEgbWF0Y2ghIElmIHdlIGhhdmUgbm90IHlldCByZWFk
IHRoZSBlbmRpYW5uZXNzIG1hcmtlciBhbmQgaW5kZXgsCisgICAgICAgICAgICAjIHRoZW4gcmVh
ZCB0aG9zZSBub3c7IG90aGVyd2lzZSByZWFkIGFuIG9mZnNldC4KKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgbm90IGluZGV4CisgICAgICAgICAgICAgIGluZGV4ID0gcmVhZEludChlbmRp
YW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIG9mZnNldHMgPDwg
cmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIAor
ICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxz
ZQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICAgIGVuZAorICAgICAgfQorICAg
IH0KKyAgICAKKyAgICBicmVhayBpZiBpbmRleAorICB9CisgIAorICByYWlzZSB1bmxlc3MgaW5k
ZXgKKyAgCisgIFtvZmZzZXRzLCBpbmRleF0KK2VuZAorCisjCisjIGJ1aWxkT2Zmc2V0c01hcChh
c3QsIG9mZnNldHNMaXN0KSAtPiBbb2Zmc2V0cywgc2l6ZXNdCisjCisjIEJ1aWxkcyBhIG1hcHBp
bmcgYmV0d2VlbiBTdHJ1Y3RPZmZzZXQgbm9kZXMgYW5kIHRoZWlyIHZhbHVlcy4KKyMKKworZGVm
IGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KQorICBvZmZzZXRzTWFwID0ge30KKyAg
c2l6ZXNNYXAgPSB7fQorICBhc3RPZmZzZXRzTGlzdCA9IG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0
U2l6ZXNMaXN0ID0gc2l6ZXNMaXN0KGFzdCkKKyAgcmFpc2UgdW5sZXNzIGFzdE9mZnNldHNMaXN0
LnNpemUgKyBhc3RTaXplc0xpc3Quc2l6ZSA9PSBvZmZzZXRzTGlzdC5zaXplCisgIG9mZnNldHNM
aXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHN0cnVjdE9mZnNldCwgaW5kZXggfAor
ICAgIG9mZnNldHNNYXBbc3RydWN0T2Zmc2V0XSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAg
c2l6ZXNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHNpemVvZiwgaW5kZXggfAor
ICAgIHNpemVzTWFwW3NpemVvZl0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIFtvZmZzZXRz
TWFwLCBzaXplc01hcF0KK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9vcHQucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vb3B0LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vb3B0LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzNCBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorCisjCisjICJPcHRpbWl6YXRp
b24iIHBhc3Nlcy4gVGhlc2UgYXJlIHVzZWQgdG8gbG93ZXIgdGhlIHJlcHJlc2VudGF0aW9uIGZv
cgorIyBiYWNrZW5kcyB0aGF0IGNhbm5vdCBoYW5kbGUgc29tZSBvZiBvdXIgaGlnaGVyLWxldmVs
IGluc3RydWN0aW9ucy4KKyMKKworIworIyBBIHRlbXBvcmFyeSAtIGEgdmFyaWFibGUgdGhhdCB3
aWxsIGJlIGFsbG9jYXRlZCB0byBhIHJlZ2lzdGVyIGFmdGVyIHdlJ3JlCisjIGRvbmUuCisjCisK
K2NsYXNzIE5vZGUKKyAgZGVmIHJlcGxhY2VUZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkK
KyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IG5vZGUgfAorICAgICAgbm9kZS5yZXBsYWNlVGVt
cG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBU
bXAgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpmaXJzdE1lbnRpb24sIDpsYXN0TWVudGlv
bgorICBhdHRyX3JlYWRlciA6a2luZAorICBhdHRyX2FjY2Vzc29yIDpyZWdpc3RlcgorCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGtpbmQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAa2luZCA9IGtpbmQKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIkdG1wI3tvYmplY3Rf
aWR9IgorICBlbmQKKyAgCisgIGRlZiBtZW50aW9uIShwb3NpdGlvbikKKyAgICBpZiBub3QgQGZp
cnN0TWVudGlvbiBvciBwb3NpdGlvbiA8IEBmaXJzdE1lbnRpb24KKyAgICAgIEBmaXJzdE1lbnRp
b24gPSBwb3NpdGlvbgorICAgIGVuZAorICAgIGlmIG5vdCBAbGFzdE1lbnRpb24gb3IgcG9zaXRp
b24gPiBAbGFzdE1lbnRpb24KKyAgICAgIEBsYXN0TWVudGlvbiA9IHBvc2l0aW9uCisgICAgZW5k
CisgIGVuZAorICAKKyAgZGVmIHJlcGxhY2VUZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkK
KyAgICBpZiBAa2luZCA9PSBraW5kCisgICAgICByYWlzZSAiRGlkIG5vdCBhbGxvY2F0ZSByZWdp
c3RlciB0byB0ZW1wb3JhcnkgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIEByZWdpc3Rl
cgorICAgICAgQHJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPwor
ICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBlbmQK
KyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICB0cnVlCisgIGVuZAorZW5kCisKKyMgQXNzaWduIHJl
Z2lzdGVycyB0byB0ZW1wb3JhcmllcywgYnkgZmluZGluZyB3aGljaCB0ZW1wb3JhcmllcyBpbnRl
cmZlcmUKKyMgd2l0aCBlYWNoIG90aGVyLiBOb3RlIHRoYXQgdGhpcyByZWxpZXMgb24gdGVtcG9y
YXJ5IGxpdmUgcmFuZ2VzIG5vdCBjcm9zc2luZworIyBiYXNpYyBibG9jayBib3VuZGFyaWVzLgor
CitkZWYgYXNzaWduUmVnaXN0ZXJzVG9UZW1wb3JhcmllcyhsaXN0LCBraW5kLCByZWdpc3RlcnMp
CisgIGxpc3QuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IG5vZGUsIGluZGV4IHwKKyAgICBub2Rl
LmZpbHRlcihUbXApLnVuaXEuZWFjaCB7CisgICAgICB8IHRtcCB8CisgICAgICBpZiB0bXAua2lu
ZCA9PSBraW5kCisgICAgICAgIHRtcC5tZW50aW9uISBpbmRleAorICAgICAgZW5kCisgICAgfQor
ICB9CisgIAorICBmcmVlUmVnaXN0ZXJzID0gcmVnaXN0ZXJzLmR1cAorICBsaXN0LmVhY2hfd2l0
aF9pbmRleCB7CisgICAgfCBub2RlLCBpbmRleCB8CisgICAgdG1wTGlzdCA9IG5vZGUuZmlsdGVy
KFRtcCkudW5pcQorICAgIHRtcExpc3QuZWFjaCB7CisgICAgICB8IHRtcCB8CisgICAgICBpZiB0
bXAua2luZCA9PSBraW5kIGFuZCB0bXAuZmlyc3RNZW50aW9uID09IGluZGV4CisgICAgICAgIHJh
aXNlICJDb3VsZCBub3QgYWxsb2NhdGUgcmVnaXN0ZXIgdG8gdGVtcG9yYXJ5IGF0ICN7bm9kZS5j
b2RlT3JpZ2luU3RyaW5nfSIgaWYgZnJlZVJlZ2lzdGVycy5lbXB0eT8KKyAgICAgICAgdG1wLnJl
Z2lzdGVyID0gZnJlZVJlZ2lzdGVycy5wb3AKKyAgICAgIGVuZAorICAgIH0KKyAgICB0bXBMaXN0
LmVhY2ggeworICAgICAgfCB0bXAgfAorICAgICAgaWYgdG1wLmtpbmQgPT0ga2luZCBhbmQgdG1w
Lmxhc3RNZW50aW9uID09IGluZGV4CisgICAgICAgIGZyZWVSZWdpc3RlcnMucHVzaCB0bXAucmVn
aXN0ZXIKKyAgICAgICAgcmFpc2UgIlJlZ2lzdGVyIGFsbG9jYXRpb24gaW5jb25zaXN0ZW5jeSBh
dCAje25vZGUuY29kZU9yaWdpblN0cmluZ30iIGlmIGZyZWVSZWdpc3RlcnMuc2l6ZSA+IHJlZ2lz
dGVycy5zaXplCisgICAgICBlbmQKKyAgICB9CisgIH0KKyAgCisgIGxpc3QubWFwIHsKKyAgICB8
IG5vZGUgfAorICAgIG5vZGUucmVwbGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lzdGVycyhraW5kKQor
ICB9CitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2Vy
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNl
ci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Bh
cnNlci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1ODUgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImluc3RydWN0aW9u
cyIKK3JlcXVpcmUgInJlZ2lzdGVycyIKKworY2xhc3MgVG9rZW4KKyAgYXR0cl9yZWFkZXIgOmNv
ZGVPcmlnaW4sIDpzdHJpbmcKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cmlu
ZykKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgICBAc3RyaW5nID0gc3RyaW5nCisg
IGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIGlmIG90aGVyLmlzX2E/IFRva2VuCisgICAg
ICBAc3RyaW5nID09IG90aGVyLnN0cmluZworICAgIGVsc2UKKyAgICAgIEBzdHJpbmcgPT0gb3Ro
ZXIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgPX4ob3RoZXIpCisgICAgQHN0cmluZyA9fiBv
dGhlcgorICBlbmQKKyAgCisgIGRlZiB0b19zCisgICAgIiN7QHN0cmluZy5pbnNwZWN0fSBhdCBs
aW5lICN7Y29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQp
CisgICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19z
fSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc306ICN7Y29tbWVu
dFswXX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMKKyMgVGhlIGxleGVyLiBUYWtlcyBhIHN0
cmluZyBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0b2tlbnMuCisjCisKK2RlZiBsZXgoc3RyKQor
ICByZXN1bHQgPSBbXQorICBsaW5lTnVtYmVyID0gMQorICB3aGlsZSBub3Qgc3RyLmVtcHR5Pwor
ICAgIGNhc2Ugc3RyCisgICAgd2hlbiAvXEFcIyhbXlxuXSopLworICAgICAgIyBjb21tZW50LCBp
Z25vcmUKKyAgICB3aGVuIC9cQVxuLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVt
YmVyLCAkJikKKyAgICAgIGxpbmVOdW1iZXIgKz0gMQorICAgIHdoZW4gL1xBW2EtekEtWl0oW2Et
ekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQor
ICAgIHdoZW4gL1xBXC4oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3
KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBXyhbYS16QS1aMC05X10qKS8KKyAgICAgIHJl
c3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEEoWyBcdF0rKS8K
KyAgICAgICMgd2hpdGVzcGFjZSwgaWdub3JlCisgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSsp
LworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAg
ICB3aGVuIC9cQTAoWzAtN10rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJl
ciwgJCYub2N0LnRvX3MpCisgICAgd2hlbiAvXEEoWzAtOV0rKS8KKyAgICAgIHJlc3VsdCA8PCBU
b2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEE6Oi8KKyAgICAgIHJlc3VsdCA8
PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFbOixcKFwpXFtcXT1cK1wt
Kl0vCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIGVsc2UK
KyAgICAgIHJhaXNlICJMZXhlciBlcnJvciBhdCBsaW5lIG51bWJlciAje2xpbmVOdW1iZXJ9LCB1
bmV4cGVjdGVkIHNlcXVlbmNlICN7c3RyWzAuLjIwXS5pbnNwZWN0fSIKKyAgICBlbmQKKyAgICBz
dHIgPSAkfi5wb3N0X21hdGNoCisgIGVuZAorICByZXN1bHQKK2VuZAorCisjCisjIFRva2VuIGlk
ZW50aWZpY2F0aW9uLgorIworCitkZWYgaXNSZWdpc3Rlcih0b2tlbikKKyAgdG9rZW4gPX4gUkVH
SVNURVJfUEFUVEVSTgorZW5kCisKK2RlZiBpc0luc3RydWN0aW9uKHRva2VuKQorICB0b2tlbiA9
fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzS2V5d29yZCh0b2tlbikKKyAgdG9r
ZW4gPX4gL1xBKCh0cnVlKXwoZmFsc2UpfChpZil8KHRoZW4pfChlbHNlKXwoZWxzaWYpfChlbmQp
fChhbmQpfChvcil8KG5vdCl8KG1hY3JvKXwoY29uc3QpfChzaXplb2YpfChlcnJvcikpXFovIG9y
CisgICAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTiBvcgorICAgIHRva2VuID1+IElOU1RSVUNU
SU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJZGVudGlmaWVyKHRva2VuKQorICB0b2tlbiA9fiAv
XEFbYS16QS1aXShbYS16QS1aMC05X10qKVxaLyBhbmQgbm90IGlzS2V5d29yZCh0b2tlbikKK2Vu
ZAorCitkZWYgaXNMYWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXyhbYS16QS1aMC05X10qKVxa
LworZW5kCisKK2RlZiBpc0xvY2FsTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQVwuKFthLXpB
LVowLTlfXSopXFovCitlbmQKKworZGVmIGlzVmFyaWFibGUodG9rZW4pCisgIGlzSWRlbnRpZmll
cih0b2tlbikgb3IgaXNSZWdpc3Rlcih0b2tlbikKK2VuZAorCitkZWYgaXNJbnRlZ2VyKHRva2Vu
KQorICB0b2tlbiA9fiAvXEFbMC05XS8KK2VuZAorCisjCisjIFRoZSBwYXJzZXIuIFRha2VzIGFu
IGFycmF5IG9mIHRva2VucyBhbmQgcmV0dXJucyBhbiBBU1QuIE1ldGhvZHMKKyMgb3RoZXIgdGhh
biBwYXJzZSh0b2tlbnMpIGFyZSBub3QgZm9yIHB1YmxpYyBjb25zdW1wdGlvbi4KKyMKKworY2xh
c3MgUGFyc2VyCisgIGRlZiBpbml0aWFsaXplKHRva2VucykKKyAgICBAdG9rZW5zID0gdG9rZW5z
CisgICAgQGlkeCA9IDAKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAg
ICBpZiBAdG9rZW5zW0BpZHhdCisgICAgICBAdG9rZW5zW0BpZHhdLnBhcnNlRXJyb3IoKmNvbW1l
bnQpCisgICAgZWxzZQorICAgICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgICAgcmFpc2UgIlBh
cnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlIgorICAgICAgZWxzZQorICAgICAgICByYWlzZSAiUGFy
c2UgZXJyb3IgYXQgZW5kIG9mIGZpbGU6ICN7Y29tbWVudFswXX0iCisgICAgICBlbmQKKyAgICBl
bmQKKyAgZW5kCisgIAorICBkZWYgY29uc3VtZShyZWdleHApCisgICAgaWYgcmVnZXhwCisgICAg
ICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID1+IHJlZ2V4cAorICAgIGVsc2UKKyAg
ICAgIHBhcnNlRXJyb3IgdW5sZXNzIEBpZHggPT0gQHRva2Vucy5sZW5ndGgKKyAgICBlbmQKKyAg
ICBAaWR4ICs9IDEKKyAgZW5kCisgIAorICBkZWYgc2tpcE5ld0xpbmUKKyAgICB3aGlsZSBAdG9r
ZW5zW0BpZHhdID09ICJcbiIKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJub3QiCisg
ICAgICBAaWR4ICs9IDEKKyAgICAgIHBhcnNlUHJlZGljYXRlQXRvbQorICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAg
ICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vu
c1tAaWR4XSA9PSAiKSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYg
QHRva2Vuc1tAaWR4XSA9PSAidHJ1ZSIKKyAgICAgIHJlc3VsdCA9IFRydWUuaW5zdGFuY2UKKyAg
ICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAi
ZmFsc2UiCisgICAgICByZXN1bHQgPSBGYWxzZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisg
ICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAg
cmVzdWx0ID0gU2V0dGluZy5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vu
c1tAaWR4XS5zdHJpbmcpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UK
KyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNh
dGVBbmQKKyAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICB3aGlsZSBAdG9rZW5z
W0BpZHhdID09ICJhbmQiCisgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9IHBh
cnNlUHJlZGljYXRlQXRvbQorICAgICAgcmVzdWx0ID0gQW5kLm5ldyhjb2RlT3JpZ2luLCByZXN1
bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVBy
ZWRpY2F0ZQorICAgICMgc29tZSBleGFtcGxlcyBvZiBwcmVjZWRlbmNlOgorICAgICMgbm90IGEg
YW5kIGIgLT4gKG5vdCBhKSBhbmQgYgorICAgICMgYSBhbmQgYiBvciBjIC0+IChhIGFuZCBiKSBv
ciBjCisgICAgIyBhIG9yIGIgYW5kIGMgLT4gYSBvciAoYiBhbmQgYykKKyAgICAKKyAgICByZXN1
bHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIm9yIgor
ICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCAr
PSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUFuZAor
ICAgICAgcmVzdWx0ID0gT3IubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5k
CisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlVmFyaWFibGUKKyAgICBpZiBpc1Jl
Z2lzdGVyKEB0b2tlbnNbQGlkeF0pCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID1+IEZQUl9QQVRU
RVJOCisgICAgICAgIHJlc3VsdCA9IEZQUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBlbHNlCisgICAgICAgIHJl
c3VsdCA9IFJlZ2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tl
bnNbQGlkeF0uc3RyaW5nKQorICAgICAgZW5kCisgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tl
bnNbQGlkeF0pCisgICAgICByZXN1bHQgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgZWxzZQorICAgICAgcGFyc2VF
cnJvcgorICAgIGVuZAorICAgIEBpZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRl
ZiBwYXJzZUFkZHJlc3Mob2Zmc2V0KQorICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlk
eF0gPT0gIlsiCisgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAg
IAorICAgICMgVGhyZWUgcG9zc2liaWxpdGllczoKKyAgICAjIFtdICAgICAgIC0+IEFic29sdXRl
QWRkcmVzcworICAgICMgW2FdICAgICAgLT4gQWRkcmVzcworICAgICMgW2EsYl0gICAgLT4gQmFz
ZUluZGV4IHdpdGggc2NhbGUgPSAxCisgICAgIyBbYSxiLGNdICAtPiBCYXNlSW5kZXgKKyAgICAK
KyAgICBAaWR4ICs9IDEKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgQGlkeCAr
PSAxCisgICAgICByZXR1cm4gQWJzb2x1dGVBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXQp
CisgICAgZW5kCisgICAgYSA9IHBhcnNlVmFyaWFibGUKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICJdIgorICAgICAgcmVzdWx0ID0gQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgYSwgb2Zmc2V0KQor
ICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisg
ICAgICBAaWR4ICs9IDEKKyAgICAgIGIgPSBwYXJzZVZhcmlhYmxlCisgICAgICBpZiBAdG9rZW5z
W0BpZHhdID09ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4s
IGEsIGIsIDEsIG9mZnNldCkKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3Mg
QHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJy
b3IgdW5sZXNzIFsiMSIsICIyIiwgIjQiLCAiOCJdLm1lbWJlcj8gQHRva2Vuc1tAaWR4XS5zdHJp
bmcKKyAgICAgICAgYyA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kKKyAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAg
ICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgYywgb2Zmc2V0KQor
ICAgICAgZW5kCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAK
KyAgZGVmIHBhcnNlQ29sb25Db2xvbgorICAgIHNraXBOZXdMaW5lCisgICAgY29kZU9yaWdpbiA9
IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRp
ZmllciBAdG9rZW5zW0BpZHhdCisgICAgbmFtZXMgPSBbQHRva2Vuc1tAaWR4XS5zdHJpbmddCisg
ICAgQGlkeCArPSAxCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiOjoiCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhd
CisgICAgICBuYW1lcyA8PCBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgQGlkeCArPSAxCisg
ICAgZW5kCisgICAgcmFpc2UgaWYgbmFtZXMuZW1wdHk/CisgICAgW2NvZGVPcmlnaW4sIG5hbWVz
XQorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgc2tpcE5ld0xpbmUK
KyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICItIgorICAgICAgQGlkeCArPSAxCisgICAgICBOZWdJ
bW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHBhcnNlRXhwcmVzc2lv
bkF0b20pCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBA
dG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBl
bHNpZiBpc0ludGVnZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gSW1tZWRpYXRlLm5l
dyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kpCisg
ICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9r
ZW5zW0BpZHhdCisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAg
ICAgaWYgbmFtZXMuc2l6ZSA+IDEKKyAgICAgICAgU3RydWN0T2Zmc2V0LmZvckZpZWxkKGNvZGVP
cmlnaW4sIG5hbWVzWzAuLi0yXS5qb2luKCc6OicpLCBuYW1lc1stMV0pCisgICAgICBlbHNlCisg
ICAgICAgIFZhcmlhYmxlLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXNbMF0pCisgICAgICBlbmQK
KyAgICBlbHNpZiBpc1JlZ2lzdGVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHBhcnNlVmFyaWFibGUK
KyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJzaXplb2YiCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBTaXplb2YuZm9y
TmFtZShjb2RlT3JpZ2luLCBuYW1lcy5qb2luKCc6OicpKQorICAgIGVsc2UKKyAgICAgIHBhcnNl
RXJyb3IKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uTXVsCisgICAg
c2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgd2hpbGUg
QHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBNdWxJbW1lZGlhdGVzLm5ldyhAdG9rZW5z
W0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbkF0b20pCisgICAg
ICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1bHQKKyAg
ZW5kCisgIAorICBkZWYgY291bGRCZUV4cHJlc3Npb24KKyAgICBAdG9rZW5zW0BpZHhdID09ICIt
IiBvciBAdG9rZW5zW0BpZHhdID09ICJzaXplb2YiIG9yIGlzSW50ZWdlcihAdG9rZW5zW0BpZHhd
KSBvciBpc1ZhcmlhYmxlKEB0b2tlbnNbQGlkeF0pIG9yIEB0b2tlbnNbQGlkeF0gPT0gIigiCisg
IGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbgorICAgIHNraXBOZXdMaW5lCisgICAgcmVz
dWx0ID0gcGFyc2VFeHByZXNzaW9uTXVsCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKyIg
b3IgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIisiCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBBZGRJbW1lZGlhdGVzLm5ldyhAdG9r
ZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkKKyAg
ICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICByZXN1bHQgPSBTdWJJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2lu
LCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UK
KyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZU9w
ZXJhbmQoY29tbWVudCkKKyAgICBpZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgICAgZXhwciA9IHBh
cnNlRXhwcmVzc2lvbgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgICAgcGFy
c2VBZGRyZXNzKGV4cHIpCisgICAgICBlbHNlCisgICAgICAgIGV4cHIKKyAgICAgIGVuZAorICAg
IGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICBwYXJzZUFkZHJlc3MoSW1tZWRpYXRl
Lm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIDApKQorICAgIGVsc2lmIGlzTGFiZWwgQHRv
a2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0
b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAg
ZWxzaWYgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IExvY2FsTGFi
ZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgTG9jYWxMYWJlbC5mb3JO
YW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQorICAg
ICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yKGNv
bW1lbnQpCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAg
ICBza2lwTmV3TGluZQorICAgIGNvbnN1bWUoL1xBXChcWi8pCisgICAgdmFyaWFibGVzID0gW10K
KyAgICBsb29wIHsKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICIpIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIGlzSWRl
bnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICB2YXJpYWJsZXMgPDwgVmFyaWFibGUuZm9y
TmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWYgQHRva2Vuc1tA
aWR4XSA9PSAiKSIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBicmVhaworICAgICAg
ICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvcgorICAgICAgICBlbmQKKyAgICAgIGVsc2UKKyAg
ICAgICAgcGFyc2VFcnJvcgorICAgICAgZW5kCisgICAgfQorICAgIHZhcmlhYmxlcworICBlbmQK
KyAgCisgIGRlZiBwYXJzZVNlcXVlbmNlKGZpbmFsLCBjb21tZW50KQorICAgIGZpcnN0Q29kZU9y
aWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIGxpc3QgPSBbXQorICAgIGxvb3Ag
eworICAgICAgaWYgKEBpZHggPT0gQHRva2Vucy5sZW5ndGggYW5kIG5vdCBmaW5hbCkgb3IgKGZp
bmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICBicmVhaworICAgICAgZWxz
aWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICMgaWdub3JlCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiY29uc3QiCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc1ZhcmlhYmxlIEB0b2tlbnNbQGlkeF0K
KyAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBw
YXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI9IgorICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgdmFsdWUgPSBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBjb25zdCAje3Zh
cmlhYmxlLm5hbWV9IikKKyAgICAgICAgbGlzdCA8PCBDb25zdERlY2wubmV3KEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4
XSA9PSAiZXJyb3IiCisgICAgICAgIGxpc3QgPDwgRXJyb3IubmV3KEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbikKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJpZiIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcHJlZGljYXRlID0g
cGFyc2VQcmVkaWNhdGUKKyAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAg
ICAgICBza2lwTmV3TGluZQorICAgICAgICBpZlRoZW5FbHNlID0gSWZUaGVuRWxzZS5uZXcoY29k
ZU9yaWdpbiwgcHJlZGljYXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lm
KSlcWi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAg
ICAgIGxpc3QgPDwgaWZUaGVuRWxzZQorICAgICAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJl
bHNpZiIKKyAgICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBwcmVk
aWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4p
KVxaLykKKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIGVsc2VDYXNlID0gSWZUaGVu
RWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGljYXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8
KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1w
fVwiIikpCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IGVsc2VDYXNlCisgICAgICAg
ICAgaWZUaGVuRWxzZSA9IGVsc2VDYXNlCisgICAgICAgIGVuZAorICAgICAgICBpZiBAdG9rZW5z
W0BpZHhdID09ICJlbHNlIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGlmVGhlbkVs
c2UuZWxzZUNhc2UgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBl
bHNlIGNhc2UgZm9yIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpCisgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0Bp
ZHhdID09ICJlbmQiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVuZAorICAgICAgZWxz
aWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5l
CisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQor
ICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICAgICAgYm9keSA9IHBh
cnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIG1hY3JvICN7bmFtZX0iKQor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgbGlzdCA8PCBNYWNyby5uZXcoY29kZU9yaWdpbiwg
bmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgICAgZWxzaWYgaXNJbnN0cnVjdGlvbiBAdG9rZW5z
W0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAg
ICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFu
ZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3Ry
dWN0aW9uLCBhbmQgaXQncyB0aGUgbGFzdCBvbmUuCisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgYnJlYWsKKyAgICAgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5z
dHJ1Y3Rpb24uCisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwg
bmFtZSwgW10pCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICAj
IEl0J3MgZGVmaW5pdGVseSBhbiBpbnN0cnVjdGlvbiwgYW5kIGl0IGhhcyBhdCBsZWFzdCBvbmUg
b3BlcmFuZC4KKyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAgZW5kT2ZTZXF1ZW5j
ZSA9IGZhbHNlCisgICAgICAgICAgbG9vcCB7CisgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJz
ZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBpbnN0cnVjdGlvbiAje25hbWV9IikKKyAgICAgICAg
ICAgIGlmIChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5k
IEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUg
aW5zdHJ1Y3Rpb24gYW5kIG9mIHRoZSBzZXF1ZW5jZS4KKyAgICAgICAgICAgICAgZW5kT2ZTZXF1
ZW5jZSA9IHRydWUKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAgICMgSGFzIGFub3RoZXIgb3BlcmFuZC4KKyAg
ICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJcbiIKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbi4KKyAgICAg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIGEgY29tbWEsIG5ld2xpbmUsIG9y
ICN7ZmluYWx9IGFmdGVyICN7b3BlcmFuZHMubGFzdC5kdW1wfSIpCisgICAgICAgICAgICBlbmQK
KyAgICAgICAgICB9CisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdp
biwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgICAgaWYgZW5kT2ZTZXF1ZW5jZQorICAgICAgICAg
ICAgYnJlYWsKKyAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBpc0lkZW50
aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgICAgICAjIE1h
Y3JvIGludm9jYXRpb24uCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgb3BlcmFuZHMg
PSBbXQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9
PSAiKSIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGxvb3AgeworICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9r
ZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAgICAgICAgICAjIEl0J3MgYSBtYWNybyBsYW1i
ZGEhCisgICAgICAgICAgICAgICAgY29kZU9yaWdpbklubmVyID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgdmFyaWFi
bGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICAgICAgICAgIGJvZHkgPSBwYXJzZVNl
cXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBhbm9ueW1vdXMgbWFjcm8gcGFzc2Vk
IGFzIGFyZ3VtZW50IHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICAgICAgICAgIG9wZXJhbmRzIDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luSW5uZXIsIG5pbCwg
dmFyaWFibGVzLCBib2R5KQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3Bl
cmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gY2FsbCB0byAje25h
bWV9IikKKyAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAg
ICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IgIlVuZXhwZWN0ZWQgI3tAdG9rZW5zW0BpZHhd
LnN0cmluZy5pbnNwZWN0fSB3aGlsZSBwYXJzaW5nIGludm9jYXRpb24gb2YgbWFjcm8gI3tuYW1l
fSIKKyAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICB9CisgICAgICAgICAgZW5kCisgICAg
ICAgICAgbGlzdCA8PCBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQor
ICAgICAgICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0ZWQgXCIoXCIgYWZ0ZXIg
I3tuYW1lfSIKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0g
b3IgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcK
KyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlk
eF0gPT0gIjoiCisgICAgICAgICMgSXQncyBhIGxhYmVsLgorICAgICAgICBpZiBpc0xhYmVsIG5h
bWUKKyAgICAgICAgICBsaXN0IDw8IExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAg
ICAgICAgZWxzZQorICAgICAgICAgIGxpc3QgPDwgTG9jYWxMYWJlbC5mb3JOYW1lKGNvZGVPcmln
aW4sIG5hbWUpCisgICAgICAgIGVuZAorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2UKKyAg
ICAgICAgcGFyc2VFcnJvciAiRXhwZWN0aW5nIHRlcm1pbmFsICN7ZmluYWx9ICN7Y29tbWVudH0i
CisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGZpcnN0Q29kZU9yaWdpbiwgbGlz
dCkKKyAgZW5kCitlbmQKKworZGVmIHBhcnNlKHRva2VucykKKyAgcGFyc2VyID0gUGFyc2VyLm5l
dyh0b2tlbnMpCisgIHBhcnNlci5wYXJzZVNlcXVlbmNlKG5pbCwgIiIpCitlbmQKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworR1BSUyA9CisgIFsKKyAgICJ0MCIsCisgICAidDEiLAorICAgInQyIiwKKyAg
ICJ0MyIsCisgICAidDQiLAorICAgImNmciIsCisgICAiYTAiLAorICAgImExIiwKKyAgICJyMCIs
CisgICAicjEiLAorICAgInNwIiwKKyAgICJsciIKKyAgXQorCitGUFJTID0KKyAgWworICAgImZ0
MCIsCisgICAiZnQxIiwKKyAgICJmdDIiLAorICAgImZ0MyIsCisgICAiZnQ0IiwKKyAgICJmdDUi
LAorICAgImZhMCIsCisgICAiZmExIiwKKyAgICJmYTIiLAorICAgImZhMyIsCisgICAiZnIiCisg
IF0KKworUkVHSVNURVJTID0gR1BSUyArIEZQUlMKKworR1BSX1BBVFRFUk4gPSBSZWdleHAubmV3
KCdcXEEoKCcgKyBHUFJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKK0ZQUl9QQVRURVJOID0gUmVn
ZXhwLm5ldygnXFxBKCgnICsgRlBSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCisKK1JFR0lTVEVS
X1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBSRUdJU1RFUlMuam9pbignKXwoJykgKyAn
KSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2VsZl9oYXNo
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NlbGZf
aGFzaC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3NlbGZfaGFzaC5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorIyBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJl
ICJwYXRobmFtZSIKKworIworIyBzZWxmSGFzaCAtPiBTSEExIGhleGRpZ2VzdAorIworIyBSZXR1
cm5zIGEgaGFzaCBvZiB0aGUgb2ZmbGluZWFzbSBzb3VyY2UgY29kZS4gVGhpcyBhbGxvd3MgZGVw
ZW5kZW5jeQorIyB0cmFja2luZyBmb3Igbm90IGp1c3QgY2hhbmdlcyBpbiBpbnB1dCwgYnV0IGFs
c28gY2hhbmdlcyBpbiB0aGUgYXNzZW1ibGVyCisjIGl0c2VsZi4KKyMKKworZGVmIHNlbGZIYXNo
CisgIGNvbnRlbnRzID0gIiIKKyAgbXlQYXRoID0gUGF0aG5hbWUubmV3KF9fRklMRV9fKS5kaXJu
YW1lCisgIERpci5mb3JlYWNoKG15UGF0aCkgeworICAgIHwgZW50cnkgfAorICAgIGlmIGVudHJ5
ID1+IC9cLnJiJC8KKyAgICAgIGNvbnRlbnRzICs9IElPOjpyZWFkKG15UGF0aCArIGVudHJ5KQor
ICAgIGVuZAorICB9CisgIHJldHVybiBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGNvbnRlbnRzKQor
ZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdz
LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0
dGluZ3MucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjA1IEBACisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJiYWNrZW5kcyIK
K3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworIworIyBjb21wdXRlU2V0
dGluZ3NDb21iaW5hdGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25zCisjCisjIENvbXB1
dGVzIGFuIGFycmF5IG9mIHNldHRpbmdzIG1hcHMsIHdoZXJlIGEgc2V0dGluZ3MgbWFwIGNvbnN0
aXR1dGVzCisjIGEgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFzc2VtYmx5IGNvZGUgYmVpbmcgZ2Vu
ZXJhdGVkLiBUaGUgbWFwCisjIGNvbnRhaW5zIGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFy
ZSBzZXR0aW5ncyBuYW1lcyAoc3RyaW5ncykgYW5kCisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xlYW5z
ICh0cnVlIGZvciBlbmFibGVkLCBmYWxzZSBmb3IgZGlzYWJsZWQpLgorIworCitkZWYgY29tcHV0
ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBbXQor
ICAKKyAgZGVmIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbWFwU29G
YXIsIHJlbWFpbmluZykKKyAgICBpZiByZW1haW5pbmcuZW1wdHk/CisgICAgICBzZXR0aW5nc0Nv
bWJpbmF0aW9ucyA8PCBtYXBTb0ZhcgorICAgICAgcmV0dXJuCisgICAgZW5kCisgICAgCisgICAg
bmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSB0cnVlCisg
ICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFp
bmluZ1sxLi4tMV0pCisgICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFw
W3JlbWFpbmluZ1swXV0gPSBmYWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0Nv
bWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICBlbmQKKyAgCisgIHNldHRp
bmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywge30sIChhc3QuZmlsdGVyKFNldHRp
bmcpLnVuaXEuY29sbGVjdHt8dnwgdi5uYW1lfSArIFsiWDg2IiwgIkFSTXY3Il0pLnVuaXEpCisg
IAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucworZW5kCisKKyMKKyMgZm9yU2V0dGluZ3MoY29uY3Jl
dGVTZXR0aW5ncywgYXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNU
LCBiYWNrZW5kIHwgLi4uIH0KKyMKKyMgRGV0ZXJtaW5lcyBpZiB0aGUgc2V0dGluZ3MgY29tYmlu
YXRpb24gaXMgdmFsaWQsIGFuZCBpZiBzbywgY2FsbHMKKyMgdGhlIGJsb2NrIHdpdGggdGhlIGlu
Zm9ybWF0aW9uIHlvdSBuZWVkIHRvIGdlbmVyYXRlIGNvZGUuCisjCisKK2RlZiBmb3JTZXR0aW5n
cyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0
aGlzIGNvbWJpbmF0b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWltZWRCYWNrZW5kcyA9
IDAKKyAgc2VsZWN0ZWRCYWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2ggeworICAgIHwgYmFj
a2VuZCB8CisgICAgaXNTdXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2JhY2tlbmRdCisgICAg
cmFpc2UgdW5sZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWltZWRCYWNrZW5kcyAr
PSBpZiBpc1N1cHBvcnRlZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlzU3VwcG9ydGVkCisg
ICAgICBzZWxlY3RlZEJhY2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0KKyAgCisgIHJldHVy
biBpZiBudW1DbGFpbWVkQmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUgdGhlIEFTVCBkb3du
IHRvIGEgbG93LWxldmVsIGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25hbHMpLgorICBsb3dM
ZXZlbEFTVCA9IGFzdC5yZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIHlp
ZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJhY2tlbmQKK2VuZAor
CisjCisjIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7CisjICAgICB8IGNv
bmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBmb3JFYWNo
VmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgc2V0dGluZ3NDb21iaW5hdGlvbnMpIHsKKyMg
ICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9CisjCisj
IEV4ZWN1dGVzIHRoZSBnaXZlbiBibG9jayBmb3IgZWFjaCB2YWxpZCBzZXR0aW5ncyBjb21iaW5h
dGlvbiBpbiB0aGUKKyMgc2V0dGluZ3MgbWFwLiBUaGUgYXN0IHBhc3NlZCBpbnRvIHRoZSBibG9j
ayBpcyByZXNvbHZlZAorIyAoYXN0LnJlc29sdmUpIGFnYWluc3QgdGhlIHNldHRpbmdzLgorIwor
IyBUaGUgZmlyc3QgZm9ybSB3aWxsIGNhbGwgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFz
dCkgZm9yIHlvdS4KKyMKKworZGVmIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0
LCAqb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucykKKyAgcmFpc2UgaWYgb3B0aW9uYWxTZXR0
aW5nc0NvbWJpbmF0aW9ucy5zaXplID4gMQorICAKKyAgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJp
bmF0aW9ucy5lbXB0eT8KKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IGNvbXB1dGVTZXR0aW5n
c0NvbWJpbmF0aW9ucyhhc3QpCisgIGVsc2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IG9w
dGlvbmFsU2V0dGluZ3NDb21iaWF0aW9uc1swXQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmlu
YXRpb25zLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBpbmRleCB8
CisgICAgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7CisgICAgICB8IGNvbmNy
ZXRlU2V0dGluZ3NfLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgICB5aWVsZCBjb25jcmV0
ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICB9CisgIH0KK2VuZAor
CisjCisjIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorIworIyBSZXR1cm5zIHRo
ZSBDKysgY29kZSB1c2VkIHRvIHRlc3QgaWYgd2UgYXJlIGluIGEgY29uZmlndXJhdGlvbiB0aGF0
CisjIGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBjb25jcmV0ZSBzZXR0aW5ncy4KKyMKKworZGVm
IGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNl
dHRpbmdzLnRvX2EuY29sbGVjdHsKKyAgICB8IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisgICAg
ICAgIiIKKyAgICAgZWxzZQorICAgICAgICIhIgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIg
KyBwYWlyWzBdCisgIH0uam9pbigiICYmICIpCitlbmQKKworIworIyBpc0FTVEVycm9uZW91cyhh
c3QpCisjCisjIFRlc3RzIHRvIHNlZSBpZiB0aGUgQVNUIGNsYWltcyB0aGF0IHRoZXJlIGlzIGFu
IGVycm9yIC0gaS5lLiBpZiB0aGUKKyMgdXNlcidzIGNvZGUsIGFmdGVyIHNldHRpbmdzIHJlc29s
dXRpb24sIGhhcyBFcnJvciBub2Rlcy4KKyMKKworZGVmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAg
bm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5PworZW5kCisKKyMKKyMgYXNzZXJ0Q29uZmlndXJh
dGlvbihjb25jcmV0ZVNldHRpbmdzKQorIworIyBFbWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0
aGF0IHdlJ3JlIHVzaW5nIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uLgorIworCitkZWYgYXNzZXJ0
Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICAkb3V0cHV0LnB1dHMgY3BwU2V0dGlu
Z3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICRvdXRwdXQucHV0cyAiI2Vsc2UiCisgICRvdXRw
dXQucHV0cyAiI2Vycm9yIFwiQ29uZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAgJG91dHB1dC5w
dXRzICIjZW5kaWYiCitlbmQKKworIworIyBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0
ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0
LCBiYWNrZW5kIHwgLi4uIH0KKyMKKyMgRW1pdHMgYWxsIHJlbGV2YW50IGd1YXJkcyB0byBzZWUg
aWYgdGhlIGNvbmZpZ3VyYXRpb24gaG9sZHMgYW5kCisjIGNhbGxzIHRoZSBibG9jayBpZiB0aGUg
Y29uZmlndXJhdGlvbiBpcyBub3QgZXJyb25lb3VzLgorIworCitkZWYgZW1pdENvZGVJbkNvbmZp
Z3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKQorICAkb3V0cHV0LnB1dHMg
Y3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICBpZiBpc0FTVEVycm9uZW91
cyhhc3QpCisgICAgJG91dHB1dC5wdXRzICIjZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24u
XCIiCisgIGVsc2lmIG5vdCBXT1JLSU5HX0JBQ0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICAk
b3V0cHV0LnB1dHMgIiNlcnJvciBcIlRoaXMgYmFja2VuZCBpcyBub3Qgc3VwcG9ydGVkIHlldC5c
IiIKKyAgZWxzZQorICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZAorICBl
bmQKKyAgCisgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMKKyMgZW1pdENvZGVJbkFs
bENvbmZpZ3VyYXRpb25zKGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJh
Y2tlbmQsIGluZGV4IHwgLi4uIH0KKyMKKyMgRW1pdHMgZ3VhcmQgY29kZXMgZm9yIGFsbCB2YWxp
ZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxzIHRoZSBibG9jaworIyBmb3IgdGhvc2UgY29uZmln
dXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5kIG5vdCBlcnJvbmVvdXMuCisjCisKK2RlZiBlbWl0
Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KQorICBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJp
bmF0aW9uKGFzdCkgeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tl
bmQsIGluZGV4IHwKKyAgICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0
dGluZ3MpCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQs
IGluZGV4CisgICAgJG91dHB1dC5wdXRzICIjZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNDIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMg
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKKworIworIyBub2RlLnJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykKKyMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55
IElmVGhlbkVsc2Ugbm9kZXMgYnkKKyMgc3Vic3RpdHV0aW5nIGNvbmNyZXRlIGJvb2xlYW4gdmFs
dWVzIGZvciBlYWNoIFNldHRpbmcuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAg
IGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICB9CisgIGVuZAorZW5kCisKK2Ns
YXNzIFRydWUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVu
ZAorZW5kCisKK2NsYXNzIEZhbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisg
ICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nCisgIGRlZiByZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpCisgICAgc2V0dGluZ3NbQG5hbWVdLmFzTm9kZQorICBlbmQKK2VuZAorCitj
bGFzcyBBbmQKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQucmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBhbmQgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhz
ZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBPcgorICBkZWYgcmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpLnZhbHVlIG9yIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05v
ZGUKKyAgZW5kCitlbmQKKworY2xhc3MgTm90CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgKG5vdCBAY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNO
b2RlCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykKKyAgICBpZiBAcHJlZGljYXRlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncyku
dmFsdWUKKyAgICAgIEB0aGVuQ2FzZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZWxz
ZQorICAgICAgQGVsc2VDYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbmQKKyAg
ZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5n
cykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8Cisg
ICAgICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICBpZiBpdGVt
LmlzX2E/IFNlcXVlbmNlCisgICAgICAgIG5ld0xpc3QgKz0gaXRlbS5saXN0CisgICAgICBlbHNl
CisgICAgICAgIG5ld0xpc3QgPDwgaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNl
Lm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKK2VuZAorCisjCisjIG5vZGUuZGVtYWNy
b2lmeShtYWNyb3MpCisjIG5vZGUuc3Vic3RpdHV0ZShtYXBwaW5nKQorIworIyBkZW1hY3JvaWZ5
KCkgY29uc3RydWN0cyBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBNYWNybworIyBu
b2Rlcywgd2hpbGUgc3Vic3RpdHV0ZSgpIHJlcGxhY2VzIFZhcmlhYmxlIG5vZGVzIHdpdGggdGhl
IGdpdmVuCisjIG5vZGVzIGluIHRoZSBtYXBwaW5nLgorIworCitjbGFzcyBOb2RlCisgIGRlZiBk
ZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAg
ICAgIGNoaWxkLmRlbWFjcm9pZnkobWFjcm9zKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vi
c3RpdHV0ZShtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAg
ICAgY2hpbGQuc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vi
c3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQg
fAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIH0KKyAgZW5kCitl
bmQKKworY2xhc3MgTWFjcm8KKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBteU1hcHBp
bmcgPSB7fQorICAgIG1hcHBpbmcuZWFjaF9wYWlyIHsKKyAgICAgIHwga2V5LCB2YWx1ZSB8Cisg
ICAgICB1bmxlc3MgQHZhcmlhYmxlcy5pbmNsdWRlPyBrZXkKKyAgICAgICAgbXlNYXBwaW5nW2tl
eV0gPSB2YWx1ZQorICAgICAgZW5kCisgICAgfQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwg
Y2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShteU1hcHBpbmcpCisgICAgfQorICBlbmQK
K2VuZAorCitjbGFzcyBWYXJpYWJsZQorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIGlm
IG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxm
CisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIHN1YnN0aXR1
dGVMYWJlbHMobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3Nl
bGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBT
ZXF1ZW5jZQorICBkZWYgc3Vic3RpdHV0ZShjb25zdGFudHMpCisgICAgbmV3TGlzdCA9IFtdCisg
ICAgbXlDb25zdGFudHMgPSBjb25zdGFudHMuZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8
IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAgICAgbXlDb25zdGFu
dHNbaXRlbS52YXJpYWJsZV0gPSBpdGVtLnZhbHVlLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisg
ICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5zdWJzdGl0dXRlKG15Q29uc3RhbnRz
KQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0
KQorICBlbmQKKyAgCisgIGRlZiByZW5hbWVMYWJlbHMoY29tbWVudCkKKyAgICBtYXBwaW5nID0g
e30KKyAgICAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVt
LmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAgbWFwcGluZ1tpdGVtXSA9IExvY2FsTGFiZWwudW5p
cXVlKGlmIGNvbW1lbnQgdGhlbiBjb21tZW50ICsgIl8iIGVsc2UgIiIgZW5kICsgaXRlbS5jbGVh
bk5hbWUpCisgICAgICBlbmQKKyAgICB9CisgICAgCisgICAgc3Vic3RpdHV0ZUxhYmVscyhtYXBw
aW5nKQorICBlbmQKKyAgCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBteU1hY3JvcyA9
IG1hY3Jvcy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBp
dGVtLmlzX2E/IE1hY3JvCisgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBpdGVtCisgICAg
ICBlbmQKKyAgICB9CisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8
IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICAjIElnbm9yZS4KKyAg
ICAgIGVsc2lmIGl0ZW0uaXNfYT8gTWFjcm9DYWxsCisgICAgICAgIG1hcHBpbmcgPSB7fQorICAg
ICAgICBteU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisgICAgICAgIHJhaXNlICJDb3VsZCBub3Qg
ZmluZCBtYWNybyAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxl
c3MgbXlNYWNyb3NbaXRlbS5uYW1lXQorICAgICAgICByYWlzZSAiQXJndW1lbnQgY291bnQgbWlz
bWF0Y2ggZm9yIGNhbGwgdG8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5n
fSIgdW5sZXNzIGl0ZW0ub3BlcmFuZHMuc2l6ZSA9PSBteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlh
Ymxlcy5zaXplCisgICAgICAgIGl0ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAg
fCBpZHggfAorICAgICAgICAgIGlmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBWYXJpYWJsZSBh
bmQgbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAgICBteU15TWFj
cm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jvc1tp
dGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRl
bS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2lmIGl0ZW0u
b3BlcmFuZHNbaWR4XS5pc19hPyBNYWNybworICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jv
c1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhdCisg
ICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFt
ZV0gPSBuaWwKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9z
W2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gbmlsCisgICAgICAgICAgICBtYXBwaW5nW215
TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gaXRlbS5vcGVyYW5kc1tpZHhdCisg
ICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCArPSBteU1hY3Jvc1tpdGVt
Lm5hbWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNyb3MpLnJl
bmFtZUxhYmVscyhpdGVtLm5hbWUpLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8
PCBpdGVtLmRlbWFjcm9pZnkobXlNYWNyb3MpCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVu
Y2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpLnN1YnN0aXR1dGUoe30pCisgIGVuZAorZW5kCisK
KyMKKyMgbm9kZS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyMKKyMgQ29uc3RydWN0
IGEgbmV3IEFTVCB0aGF0IGhhcyBvZmZzZXQgdmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMKKyMg
b2Zmc2V0cy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywg
c2l6ZXMpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5y
ZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNz
IFN0cnVjdE9mZnNldAorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAg
aWYgb2Zmc2V0c1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXRz
W3NlbGZdKQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xh
c3MgU2l6ZW9mCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBz
aXplc1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBzaXplc1tzZWxmXSkK
KyAgICBlbHNlCisgICAgICBwdXRzICJDb3VsZCBub3QgZmluZCAje3NlbGYuaW5zcGVjdH0gaW4g
I3tzaXplcy5rZXlzLmluc3BlY3R9IgorICAgICAgcHV0cyAic2l6ZXMgPSAje3NpemVzLmluc3Bl
Y3R9IgorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCisjCisjIG5vZGUuZm9sZAor
IworIyBSZXNvbHZlIGNvbnN0YW50IHJlZmVyZW5jZXMgYW5kIGNvbXB1dGUgYXJpdGhtZXRpYyBl
eHByZXNzaW9ucy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgZm9sZAorICAgIG1hcENoaWxkcmVu
IHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuZm9sZAorICAgIH0KKyAgZW5kCitlbmQK
KworY2xhc3MgQWRkSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9s
ZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0
LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1t
ZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSArIEByaWdo
dC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcworICBkZWYgZm9sZAor
ICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0
dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVu
bGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2lu
LCBAbGVmdC52YWx1ZSAtIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1t
ZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9
IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0
ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1t
ZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAqIEByaWdodC52YWx1ZSkKKyAgZW5k
CitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlCisgIGRlZiBmb2xkCisgICAgQGNoaWxkID0gQGNo
aWxkLmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGNoaWxkLmlzX2E/IEltbWVkaWF0ZQor
ICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLUBjaGlsZC52YWx1ZSkKKyAgZW5kCitlbmQK
KworIworIyBub2RlLnJlc29sdmVBZnRlclNldHRpbmdzKG9mZnNldHMsIHNpemVzKQorIworIyBD
b21waWxlIGFzc2VtYmx5IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4KKyMKKworY2xhc3MgTm9k
ZQorICBkZWYgcmVzb2x2ZShvZmZzZXRzLCBzaXplcykKKyAgICBkZW1hY3JvaWZ5KHt9KS5yZXNv
bHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykuZm9sZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY4MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgUmVn
aXN0ZXJJRAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVu
ICJ0MCIsICJhMCIsICJyMCIsICJ0MSIsICJhMSIsICJyMSIsICJ0MiIsICJ0MyIKKyAgICAgIHRy
dWUKKyAgICB3aGVuICJ0NCIsICJjZnIiCisgICAgICBmYWxzZQorICAgIGVsc2UKKyAgICAgIHJh
aXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICBjYXNl
IG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgIGNhc2Uga2luZAorICAgICAg
d2hlbiA6Ynl0ZQorICAgICAgICAiJWFsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWF4
IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWF4IgorICAgICAgZWxzZQorICAgICAgICBy
YWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAgICBjYXNlIGtp
bmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAg
ICAgICAgIiVkeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkeCIKKyAgICAgIGVsc2UK
KyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQyIgorICAgICAgY2FzZSBraW5k
CisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlY2wiCisgICAgICB3aGVuIDpoYWxmCisgICAg
ICAgICIlY3giCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlY3giCisgICAgICBlbHNlCisg
ICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MyIKKyAgICAgIGNhc2Uga2luZAor
ICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWJsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAg
ICAiJWJ4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWJ4IgorICAgICAgZWxzZQorICAg
ICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDQiCisgICAgICBjYXNlIGtpbmQKKyAg
ICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAg
ICIlc2kiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlc2kiCisgICAgICBlbHNlCisgICAg
ICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJjZnIiCisgICAgICBjYXNlIGtpbmQKKyAg
ICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAg
ICIlZGkiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlZGkiCisgICAgICBlbHNlCisgICAg
ICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJzcCIKKyAgICAgIGNhc2Uga2luZAorICAg
ICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNwbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAg
IiVzcCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzcCIKKyAgICAgIGVsc2UKKyAgICAg
ICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQgcmVnaXN0ZXIg
I3tuYW1lfSBmb3IgWDg2IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgIGVuZAor
ICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisg
IGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgeDg2T3BlcmFuZChraW5kKQor
ICAgIHJhaXNlIHVubGVzcyBraW5kID09IDpkb3VibGUKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVu
ICJmdDAiLCAiZmEwIiwgImZyIgorICAgICAgIiV4bW0wIgorICAgIHdoZW4gImZ0MSIsICJmYTEi
CisgICAgICAiJXhtbTEiCisgICAgd2hlbiAiZnQyIiwgImZhMiIKKyAgICAgICIleG1tMiIKKyAg
ICB3aGVuICJmdDMiLCAiZmEzIgorICAgICAgIiV4bW0zIgorICAgIHdoZW4gImZ0NCIKKyAgICAg
ICIleG1tNCIKKyAgICB3aGVuICJmdDUiCisgICAgICAiJXhtbTUiCisgICAgZWxzZQorICAgICAg
cmFpc2UgIkJhZCByZWdpc3RlciAje25hbWV9IGZvciBYODYgYXQgI3tjb2RlT3JpZ2luU3RyaW5n
fSIKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4
ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiB4
ODZPcGVyYW5kKGtpbmQpCisgICAgIiQje3ZhbHVlfSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3Bl
cmFuZChraW5kKQorICAgICIje3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcwor
ICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIHg4Nk9w
ZXJhbmQoa2luZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQp
fSkiCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFu
ZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgc3VwcG9ydHM4
Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAg
ICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSwgI3tpbmRleC54ODZP
cGVyYW5kKDppbnQpfSwgI3tzY2FsZX0pIgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQo
a2luZCkKKyAgICAiKiN7eDg2b3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFi
c29sdXRlQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAor
ICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5k
CisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje2FkZHJlc3MudmFsdWV9Igor
ICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2Q2FsbE9wZXJhbmQo
a2luZCkKKyAgICBhc21MYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJl
bmNlCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgIGFzbUxhYmVsCisgIGVuZAorZW5k
CisKK2NsYXNzIEluc3RydWN0aW9uCisgIGRlZiB4ODZPcGVyYW5kcygqa2luZHMpCisgICAgcmFp
c2UgdW5sZXNzIGtpbmRzLnNpemUgPT0gb3BlcmFuZHMuc2l6ZQorICAgIHJlc3VsdCA9IFtdCisg
ICAga2luZHMuc2l6ZS50aW1lcyB7CisgICAgICB8IGlkeCB8CisgICAgICByZXN1bHQgPDwgb3Bl
cmFuZHNbaWR4XS54ODZPcGVyYW5kKGtpbmRzW2lkeF0pCisgICAgfQorICAgIHJlc3VsdC5qb2lu
KCIsICIpCisgIGVuZAorCisgIGRlZiB4ODZTdWZmaXgoa2luZCkKKyAgICBjYXNlIGtpbmQKKyAg
ICB3aGVuIDpieXRlCisgICAgICAiYiIKKyAgICB3aGVuIDpoYWxmCisgICAgICAidyIKKyAgICB3
aGVuIDppbnQKKyAgICAgICJsIgorICAgIHdoZW4gOmRvdWJsZQorICAgICAgInNkIgorICAgIGVs
c2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wV2l0
aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgbnVtT3BlcmFuZHMpCisgICAgaWYgbnVtT3BlcmFu
ZHMgPT0gMworICAgICAgaWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFz
bS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRzWzFdID09IG9w
ZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBl
bHNlCisgICAgICAgICRhc20ucHV0cyAibW92I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisg
ICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5k
KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNl
CisgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2lu
ZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBoYW5kbGVYODZPcChvcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2T3BXaXRoTnVt
T3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXplKQorICBlbmQKKyAgCisgIGRlZiBo
YW5kbGVYODZTaGlmdChvcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1t
ZWRpYXRlIG9yIG9wZXJhbmRzWzBdID09IFJlZ2lzdGVySUQuZm9yTmFtZShuaWwsICJ0MiIpCisg
ICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUp
fSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNt
LnB1dHMgInhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAg
ICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAlY2wsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5k
KX0iCisgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50
KX0sICVlY3giCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkRvdWJsZUJyYW5j
aChicmFuY2hPcGNvZGUsIG1vZGUpCisgICAgY2FzZSBtb2RlCisgICAgd2hlbiA6bm9ybWFsCisg
ICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUp
fSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuIDpyZXZlcnNl
CisgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICBlbHNlCisgICAg
ICByYWlzZSBtb2RlLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bj
b2RlfSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2
SW50Q29tcGFyZShvcGNvZGVTdWZmaXgsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8g
SW1tZWRpYXRlIGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1sxXS5pc19h
PyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0g
Im5lIikKKyAgICAgICRhc20ucHV0cyAidGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2lmIG9wZXJhbmRzWzFdLmlzX2E/IEltbWVk
aWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVn
aXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3VmZml4ID09ICJuZSIp
CisgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgImNtcCN7eDg2U3Vm
Zml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJ
bnRCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NkludENvbXBhcmUoYnJh
bmNoT3Bjb2RlWzEuLi0xXSwga2luZCkKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAj
e29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0KHNl
dE9wY29kZSwgb3BlcmFuZCkKKyAgICBpZiBvcGVyYW5kLnN1cHBvcnRzOEJpdE9uWDg2CisgICAg
ICAkYXNtLnB1dHMgIiN7c2V0T3Bjb2RlfSAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9Igor
ICAgICAgJGFzbS5wdXRzICJtb3Z6YmwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tv
cGVyYW5kLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAieGNo
Z2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgICAgJGFzbS5wdXRzICIj
e3NldE9wY29kZX0gJWFsIgorICAgICAgJGFzbS5wdXRzICJtb3Z6YmwgJWFsLCAlZWF4IgorICAg
ICAgJGFzbS5wdXRzICJ4Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmVTZXQoc2V0T3Bjb2Rl
LCBraW5kKQorICAgIGhhbmRsZVg4NkludENvbXBhcmUoc2V0T3Bjb2RlWzMuLi0xXSwga2luZCkK
KyAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kc1syXSkKKyAgZW5kCisgIAorICBk
ZWYgaGFuZGxlWDg2VGVzdChraW5kKQorICAgIHZhbHVlID0gb3BlcmFuZHNbMF0KKyAgICBjYXNl
IG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDIKKyAgICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNv
ZGVPcmlnaW4sIC0xKQorICAgIHdoZW4gMworICAgICAgbWFzayA9IG9wZXJhbmRzWzFdCisgICAg
ZWxzZQorICAgICAgcmFpc2UgIkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5kcywgYnV0IGdvdCAje29w
ZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAg
aWYgbWFzay5pc19hPyBJbW1lZGlhdGUgYW5kIG1hc2sudmFsdWUgPT0gLTEKKyAgICAgIGlmIHZh
bHVlLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgo
a2luZCl9ICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChraW5k
KX0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiY21wI3t4ODZTdWZmaXgoa2luZCl9
ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5kCisgICAgZWxzZQorICAg
ICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7bWFzay54ODZPcGVyYW5kKGtp
bmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgaGFuZGxlWDg2QnJhbmNoVGVzdChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2
VGVzdChraW5kKQorICAgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHMubGFz
dC5hc21MYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldFRlc3Qoc2V0T3Bjb2Rl
LCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0T3Bj
b2RlLCBvcGVyYW5kcy5sYXN0KQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcEJyYW5jaChv
cGNvZGUsIGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5k
cyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6
ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgd2hlbiAz
CisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICByYWlzZSBz
ZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje2p1
bXBUYXJnZXQuYXNtTGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTdWJCcmFuY2go
YnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gNCBhbmQgb3BlcmFu
ZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICRhc20ucHV0cyAibmVnbCAje29wZXJhbmRzWzJd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJhZGRsICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ZWxzZQorICAgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMoInN1YiN7eDg2U3VmZml4KGtp
bmQpfSIsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGVuZAorICAgIGNhc2Ugb3BlcmFu
ZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAg
d2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICBy
YWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2Rl
fSAje2p1bXBUYXJnZXQuYXNtTGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBsb3dlclg4NgorICAg
ICRhc20uY29tbWVudCBjb2RlT3JpZ2luU3RyaW5nCisgICAgY2FzZSBvcGNvZGUKKyAgICB3aGVu
ICJhZGRpIiwgImFkZHAiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRz
WzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNf
YT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVn
aXN0ZXJJRAorICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCisgICAgICAgICAgdW5s
ZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1v
dmwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICRhc20u
cHV0cyAibGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgZW5kCisg
ICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lz
dGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQK
KyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAg
ICAgJGFzbS5wdXRzICJsZWFsICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9
PSBvcGVyYW5kc1swXQorICAgICAgICAgICRhc20ucHV0cyAiYWRkbCAje3g4Nk9wZXJhbmRzKDpp
bnQsIDppbnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbmQKKyAgICB3aGVuICJhbmRpIiwgImFu
ZHAiCisgICAgICBoYW5kbGVYODZPcCgiYW5kbCIsIDppbnQpCisgICAgd2hlbiAibHNoaWZ0aSIK
KyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYWxsIiwgOmludCkKKyAgICB3aGVuICJtdWxpIgorICAg
ICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUK
KyAgICAgICAgJGFzbS5wdXRzICJpbXVsbCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQsIDppbnQp
fSIKKyAgICAgIGVsc2UKKyAgICAgICAgIyBGSVhNRTogY291bGQgZG8gc29tZSBwZWVwaG9sZSBp
biBjYXNlIHRoZSBsZWZ0IG9wZXJhbmQgaXMgaW1tZWRpYXRlIGFuZCBpdCdzCisgICAgICAgICMg
YSBwb3dlciBvZiB0d28uCisgICAgICAgIGhhbmRsZVg4Nk9wKCJpbXVsbCIsIDppbnQpCisgICAg
ICBlbmQKKyAgICB3aGVuICJuZWdpIgorICAgICAgJGFzbS5wdXRzICJuZWdsICN7eDg2T3BlcmFu
ZHMoOmludCl9IgorICAgIHdoZW4gIm5vdGkiCisgICAgICAkYXNtLnB1dHMgIm5vdGwgI3t4ODZP
cGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAib3JpIiwgIm9ycCIKKyAgICAgIGhhbmRsZVg4Nk9w
KCJvcmwiLCA6aW50KQorICAgIHdoZW4gInJzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgi
c2FybCIsIDppbnQpCisgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgi
c2hybCIsIDppbnQpCisgICAgd2hlbiAic3ViaSIsICJzdWJwIgorICAgICAgaWYgb3BlcmFuZHMu
c2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1
dHMgIm5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgJGFzbS5w
dXRzICJhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIGhhbmRsZVg4Nk9wKCJzdWJs
IiwgOmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gInhvcmkiLCAieG9ycCIKKyAgICAgIGhhbmRs
ZVg4Nk9wKCJ4b3JsIiwgOmludCkKKyAgICB3aGVuICJsb2FkaSIsICJzdG9yZWkiLCAibG9hZHAi
LCAic3RvcmVwIgorICAgICAgJGFzbS5wdXRzICJtb3ZsICN7eDg2T3BlcmFuZHMoOmludCwgOmlu
dCl9IgorICAgIHdoZW4gImxvYWRiIgorICAgICAgJGFzbS5wdXRzICJtb3Z6YmwgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgd2hlbiAibG9hZGJzIgorICAgICAgJGFzbS5wdXRzICJtb3ZzYmwgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisg
ICAgd2hlbiAibG9hZGgiCisgICAgICAkYXNtLnB1dHMgIm1vdnp3bCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3
aGVuICJsb2FkaHMiCisgICAgICAkYXNtLnB1dHMgIm1vdnN3bCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVu
ICJzdG9yZWIiCisgICAgICAkYXNtLnB1dHMgIm1vdmIgI3t4ODZPcGVyYW5kcyg6Ynl0ZSwgOmJ5
dGUpfSIKKyAgICB3aGVuICJsb2FkZCIsICJtb3ZlZCIsICJzdG9yZWQiCisgICAgICAkYXNtLnB1
dHMgIm1vdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImFk
ZGQiCisgICAgICAkYXNtLnB1dHMgImFkZHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJs
ZSl9IgorICAgIHdoZW4gImRpdmQiCisgICAgICAkYXNtLnB1dHMgImRpdnNkICN7eDg2T3BlcmFu
ZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInN1YmQiCisgICAgICAkYXNtLnB1dHMg
InN1YnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gIm11bGQi
CisgICAgICAkYXNtLnB1dHMgIm11bHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9
IgorICAgIHdoZW4gInNxcnRkIgorICAgICAgJGFzbS5wdXRzICJzcXJ0c2QgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUp
fSIKKyAgICB3aGVuICJjaTJkIgorICAgICAgJGFzbS5wdXRzICJjdnRzaTJzZCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
IgorICAgIHdoZW4gImJkZXEiCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVl
KCJiZGVxIikKKyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAg
JGFzbS5wdXRzICJqcCAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJl
ZCkuYXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhj
b2RlT3JpZ2luLCBvcGVyYW5kc1syXSkuYXNtTGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93
ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRuZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2go
ImpuZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRndCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJy
YW5jaCgiamEiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkRv
dWJsZUJyYW5jaCgiamFlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0IgorICAgICAgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKCJqYSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHRlcSIKKyAgICAg
IGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRlcXVu
IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwpCisgICAgd2hlbiAi
YmRuZXF1biIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4i
KQorICAgICAgaXNFcXVhbCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgICRh
c20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJqcCAje0xh
YmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkuYXNtTGFiZWx9IgorICAg
ICAgJGFzbS5wdXRzICJqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc0VxdWFs
KS5hc21MYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICAgICRhc20u
cHV0cyAiam1wICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgaXNFcXVhbC5sb3dlcigi
WDg2IikKKyAgICB3aGVuICJiZGd0dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpi
IiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRndGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVC
cmFuY2goImpiZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHR1biIKKyAgICAgIGhhbmRsZVg4
NkRvdWJsZUJyYW5jaCgiamIiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAg
aGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJ0ZDJpIgor
ICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAi
Y21wbCAkMHg4MDAwMDAwMCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
JGFzbS5wdXRzICJqZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJ0ZDJpIgor
ICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiY2QyaSIK
KyAgICAgICRhc20ucHV0cyAiY3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91
YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMg
InRlc3RsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgImplICN7b3BlcmFuZHNbMl0uYXNtTGFi
ZWx9IgorICAgICAgJGFzbS5wdXRzICJjdnRzaTJzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAianAgI3tvcGVyYW5k
c1syXS5hc21MYWJlbH0iCisgICAgICAkYXNtLnB1dHMgImpuZSAje29wZXJhbmRzWzJdLmFzbUxh
YmVsfSIKKyAgICB3aGVuICJtb3ZkeiIKKyAgICAgICRhc20ucHV0cyAieG9ycGQgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSIKKyAgICB3aGVuICJwb3AiCisgICAgICAkYXNtLnB1dHMgInBvcCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInB1c2giCisgICAgICAkYXNtLnB1dHMgInB1
c2ggI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJtb3ZlIiwgInN4
aTJwIiwgInp4aTJwIgorICAgICAgaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRz
WzBdIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAi
eG9ybCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMF0gIT0gb3BlcmFuZHNbMV0KKyAg
ICAgICAgJGFzbS5wdXRzICJtb3ZsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAg
ZW5kCisgICAgd2hlbiAibm9wIgorICAgICAgJGFzbS5wdXRzICJub3AiCisgICAgd2hlbiAiYmll
cSIsICJicGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDppbnQpCisgICAgd2hl
biAiYmluZXEiLCAiYnBuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDppbnQp
CisgICAgd2hlbiAiYmlhIiwgImJwYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6
aW50KQorICAgIHdoZW4gImJpYWVxIiwgImJwYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqYWUiLCA6aW50KQorICAgIHdoZW4gImJpYiIsICJicGIiCisgICAgICBoYW5kbGVYODZJbnRC
cmFuY2goImpiIiwgOmludCkKKyAgICB3aGVuICJiaWJlcSIsICJicGJlcSIKKyAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiamJlIiwgOmludCkKKyAgICB3aGVuICJiaWd0IiwgImJwZ3QiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmludCkKKyAgICB3aGVuICJiaWd0ZXEiLCAiYnBn
dGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6aW50KQorICAgIHdoZW4gImJp
bHQiLCAiYnBsdCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6aW50KQorICAgIHdo
ZW4gImJpbHRlcSIsICJicGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsZSIsIDpp
bnQpCisgICAgd2hlbiAiYmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6Ynl0
ZSkKKyAgICB3aGVuICJiYm5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmJ5
dGUpCisgICAgd2hlbiAiYmJhIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDpieXRl
KQorICAgIHdoZW4gImJiYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6Ynl0
ZSkKKyAgICB3aGVuICJiYmIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmJ5dGUp
CisgICAgd2hlbiAiYmJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRl
KQorICAgIHdoZW4gImJiZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmJ5dGUp
CisgICAgd2hlbiAiYmJndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6Ynl0
ZSkKKyAgICB3aGVuICJiYmx0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDpieXRl
KQorICAgIHdoZW4gImJibHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6
Ynl0ZSkKKyAgICB3aGVuICJidGlvIiwgImJ0cG8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0
KCJqbyIsIDppbnQpCisgICAgd2hlbiAiYnRpcyIsICJidHBzIgorICAgICAgaGFuZGxlWDg2QnJh
bmNoVGVzdCgianMiLCA6aW50KQorICAgIHdoZW4gImJ0aXoiLCAiYnRweiIKKyAgICAgIGhhbmRs
ZVg4NkJyYW5jaFRlc3QoImp6IiwgOmludCkKKyAgICB3aGVuICJidGlueiIsICJidHBueiIKKyAg
ICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDppbnQpCisgICAgd2hlbiAiYnRibyIKKyAg
ICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRicyIKKyAg
ICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRieiIKKyAg
ICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRibnoiCisg
ICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJqbXAiCisg
ICAgICAkYXNtLnB1dHMgImptcCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIK
KyAgICB3aGVuICJiYWRkaW8iLCAiYmFkZHBvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFk
ZGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJhZGRpcyIsICJiYWRkcHMiCisgICAgICBoYW5k
bGVYODZPcEJyYW5jaCgiYWRkbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYmFkZGl6IiwgImJh
ZGRweiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImp6IiwgOmludCkKKyAgICB3
aGVuICJiYWRkaW56IiwgImJhZGRwbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIs
ICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5j
aCgiam8iLCA6aW50KQorICAgIHdoZW4gImJzdWJpcyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5j
aCgianMiLCA6aW50KQorICAgIHdoZW4gImJzdWJpeiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5j
aCgianoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbnoiCisgICAgICBoYW5kbGVYODZTdWJCcmFu
Y2goImpueiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFu
Y2goImltdWxsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJibXVsaXMiCisgICAgICBoYW5kbGVY
ODZPcEJyYW5jaCgiaW11bGwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJtdWxpeiIKKyAgICAg
IGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlu
eiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbnoiLCA6aW50KQorICAgIHdo
ZW4gImJvcmlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqbyIsIDppbnQpCisg
ICAgd2hlbiAiYm9yaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpzIiwgOmlu
dCkKKyAgICB3aGVuICJib3JpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianoi
LCA6aW50KQorICAgIHdoZW4gImJvcmlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwi
LCAiam56IiwgOmludCkKKyAgICB3aGVuICJicmVhayIKKyAgICAgICRhc20ucHV0cyAiaW50ICQz
IgorICAgIHdoZW4gImNhbGwiCisgICAgICAkYXNtLnB1dHMgImNhbGwgI3tvcGVyYW5kc1swXS54
ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicmV0IgorICAgICAgJGFzbS5wdXRzICJy
ZXQiCisgICAgd2hlbiAiY2llcSIsICJjcGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNl
dCgic2V0ZSIsIDppbnQpCisgICAgd2hlbiAiY2luZXEiLCAiY3BuZXEiCisgICAgICBoYW5kbGVY
ODZJbnRDb21wYXJlU2V0KCJzZXRuZSIsIDppbnQpCisgICAgd2hlbiAiY2lhIiwgImNwYSIKKyAg
ICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGEiLCA6aW50KQorICAgIHdoZW4gImNpYWVx
IiwgImNwYWVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YWUiLCA6aW50KQor
ICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRi
IiwgOmludCkKKyAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAgIGhhbmRsZVg4NkludENv
bXBhcmVTZXQoInNldGJlIiwgOmludCkKKyAgICB3aGVuICJjaWd0IiwgImNwZ3QiCisgICAgICBo
YW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnIiwgOmludCkKKyAgICB3aGVuICJjaWd0ZXEiLCAi
Y3BndGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0Z2UiLCA6aW50KQorICAg
IHdoZW4gImNpbHQiLCAiY3BsdCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGwi
LCA6aW50KQorICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRD
b21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisgICAgd2hlbiAidGlvIgorICAgICAgaGFuZGxlWDg2
U2V0VGVzdCgic2V0byIsIDppbnQpCisgICAgd2hlbiAidGlzIgorICAgICAgaGFuZGxlWDg2U2V0
VGVzdCgic2V0cyIsIDppbnQpCisgICAgd2hlbiAidGl6IgorICAgICAgaGFuZGxlWDg2U2V0VGVz
dCgic2V0eiIsIDppbnQpCisgICAgd2hlbiAidGlueiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3Qo
InNldG56IiwgOmludCkKKyAgICB3aGVuICJ0Ym8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJz
ZXRvIiwgOmJ5dGUpCisgICAgd2hlbiAidGJzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0
cyIsIDpieXRlKQorICAgIHdoZW4gInRieiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoi
LCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ym56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoi
LCA6Ynl0ZSkKKyAgICB3aGVuICJwZWVrIgorICAgICAgJGFzbS5wdXRzICJtb3ZsICN7b3BlcmFu
ZHNbMF0udmFsdWUgKiA0fSglZXNwKSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICB3aGVuICJwb2tlIgorICAgICAgJGFzbS5wdXRzICJtb3ZsICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0udmFsdWUgKiA0fSglZXNwKSIKKyAgICB3aGVu
ICJjZHFpIgorICAgICAgJGFzbS5wdXRzICJjZHEiCisgICAgd2hlbiAiaWRpdmkiCisgICAgICAk
YXNtLnB1dHMgImlkaXZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hl
biAiZmlpMmQiCisgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20u
cHV0cyAibW92ZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAg
ICRhc20ucHV0cyAicHNsbHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAicG9yICV4bW03
LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImZkMmlpIgor
ICAgICAgJGFzbS5wdXRzICJtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0s
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIm1vdnNk
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFzbS5w
dXRzICJwc3JscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJtb3ZzZCAleG1tNywgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJibyIKKyAgICAgICRhc20u
cHV0cyAiam8gI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYnMiCisgICAgICAk
YXNtLnB1dHMgImpzICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJ6IgorICAg
ICAgJGFzbS5wdXRzICJqeiAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJibnoi
CisgICAgICAkYXNtLnB1dHMgImpueiAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVu
ICJsZWFpIiwgImxlYXAiCisgICAgICAkYXNtLnB1dHMgImxlYWwgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNl
CisgICAgICByYWlzZSAiQmFkIG9wY29kZTogI3tvcGNvZGV9IgorICAgIGVuZAorICBlbmQKK2Vu
ZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRp
b25LaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisjZGVmaW5lIENvZGVTcGVjaWFsaXph
dGlvbktpbmRfaAorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9u
IDEwNjQzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIENvbW1vblNsb3dQ
YXRoc19oCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6
YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpT
QXJyYXkuaCIKIApAQCAtNDEsNiArNDIsMzggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFj
ZSBDb21tb25TbG93UGF0aHMgewogCitBTFdBWVNfSU5MSU5FIEV4ZWNTdGF0ZSogYXJpdHlDaGVj
a0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5j
dGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9u
KCkpOworICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxl
KCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgIGludCBhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CisKKyAgICAv
LyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBv
ZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KKyAgICBpZiAoIXJlZ2lzdGVy
RmlsZS0+Z3JvdyhleGVjLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpICsgbmV3Q29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCisgICAgICAgIHJldHVy
biAwOworCisgICAgQVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCkpOworCisgICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29w
eSBjYWxsIGZyYW1lIGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50
cyB3aXRoIHVuZGVmaW5lZC4KKyAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOworICAgIFJlZ2lzdGVyKiBz
cmMgPSBleGVjLT5yZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlciogZHN0ID0gZXhlYy0+cmVnaXN0
ZXJzKCkgKyBkZWx0YTsKKworICAgIGludCBpOworICAgIGludCBlbmQgPSAtRXhlY1N0YXRlOjpv
ZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgIGZvciAoaSA9IC0xOyBp
ID49IGVuZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBzcmNbaV07CisKKyAgICBlbmQgLT0gZGVs
dGE7CisgICAgZm9yICggOyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBqc1VuZGVm
aW5lZCgpOworCisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gRXhlY1N0YXRlOjpjcmVhdGUoZHN0
KTsKKyAgICBBU1NFUlQoKHZvaWQqKW5ld0V4ZWMgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7Cisg
ICAgcmV0dXJuIG5ld0V4ZWM7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBvcEluc3RhbmNlT2ZT
bG93KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBiYXNlVmFsLCBKU1Zh
bHVlIHByb3RvKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNDZWxsKCkgfHwgIWJhc2VWYWwuaXND
ZWxsKCkgfHwgIXByb3RvLmlzQ2VsbCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMTA2NDMxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYg
KzI5LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgorI2luY2x1ZGUgIkV4ZWN1dGlvbkhhcm5l
c3MuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVREcml2ZXIuaCIKICNpbmNsdWRl
ICJQYXJzZXIuaCIKQEAgLTg0LDcgKzg1LDcgQEAgSW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6
OmludHJpbnNpYygpIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRpYyB2b2lkIGpldHRpc29u
Q29kZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPFQ+JiBjb2RlQmxvY2sp
CiB7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2Vs
aW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+
Z2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CiAg
ICAgT3duUHRyPFQ+IGNvZGVCbG9ja1RvSmV0dGlzb24gPSBjb2RlQmxvY2sucmVsZWFzZSgpOwog
ICAgIGNvZGVCbG9jayA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8VD4oY29kZUJsb2NrVG9KZXR0aXNv
bi0+cmVsZWFzZUFsdGVybmF0aXZlKCkpOwpAQCAtMTY3LDkgKzE2OCwzMCBAQCBKU09iamVjdCog
RXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpbWl6CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2
b2lkIEV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
K3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEs
IG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJ
VCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKworaW5saW5lIGNv
bnN0IGNoYXIqIHNhbXBsaW5nRGVzY3JpcHRpb24oSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQor
eworICAgIHN3aXRjaCAoaml0VHlwZSkgeworICAgIGNhc2UgSklUQ29kZTo6SW50ZXJwcmV0ZXJU
aHVuazoKKyAgICAgICAgcmV0dXJuICJJbnRlcnByZXRlciBDb21waWxhdGlvbiAoVE9UQUwpIjsK
KyAgICBjYXNlIEpJVENvZGU6OkJhc2VsaW5lSklUOgorICAgICAgICByZXR1cm4gIkJhc2VsaW5l
IENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6REZHSklUOgorICAgICAg
ICByZXR1cm4gIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiBK
U09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMs
IFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBl
KQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENv
bXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihz
YW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAg
ICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC0yMTAsNyArMjMyLDcgQEAgSlNPYmplY3QqIEV2
YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0g
ICAgaWYgKCFqaXRDb21waWxlSWZBcHByb3ByaWF0ZSgqZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJs
b2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVj
dXRpb24oKmdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0
VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTI5NSw5ICszMTcsMTUgQEAg
SlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlT3B0aQogICAgIHJldHVybiBlcnJv
cjsKIH0KIAordm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZShKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0
ZShnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIEpJVENv
ZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7
Cit9CisKIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNT
dGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRU
eXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlw
ZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwp
IiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFC
TEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTMzNiw3ICszNjQsNyBAQCBK
U09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlCiAgICAgfQogCiAjaWYgRU5B
QkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRhLCBt
X3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICgh
cHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2pp
dENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAt
NDEyLDcgKzQ0MCw3IEBAIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmIK
ICAgICB3aGlsZSAocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKQogICAgICAgICByZXN1bHQgPSBzdGF0
aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSk7CiAgICAg
QVNTRVJUKHJlc3VsdCk7Ci0gICAgQVNTRVJUKHJlc3VsdC0+Z2V0SklUVHlwZSgpID09IEpJVENv
ZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVz
dWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MzgsNiAr
NDY2LDE4IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVPcHQKICAgICBy
ZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9y
Q2FsbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRD
b21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ2Fs
bCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5
bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGls
ZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1
bHQgPSBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fY29kZUJs
b2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0
cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklU
KCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCiBGdW5jdGlvbkNv
ZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tXaXRoQnl0ZWNvZGVGb3IoQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcihraW5kKTsKQEAgLTQ4Miw3ICs1MjIsNyBAQCBQ
YXNzT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBGdW5jdGlvbkV4CiAKIEpTT2JqZWN0KiBGdW5j
dGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBT
Y29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkK
IHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6
OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21w
aWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2Ft
cGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAg
VU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNTA0LDcgKzU0NCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlv
bkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tG
b3JDYWxsLT5zaGFyZWRTeW1ib2xUYWJsZSgpOwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAo
IWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2Nv
ZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJp
dHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rp
b25Gb3JFeGVjdXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1f
aml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xU
YWJsZSwgaml0VHlwZSwgQ29kZUZvckNhbGwpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgog
CkBAIC01MjQsNyArNTY0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGls
ZUZvcgogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0
SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUs
IEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGlu
Z1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBp
bGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxp
bmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAg
ICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtNTQ2
LDcgKzU4Niw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAg
ICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnNoYXJlZFN5bWJvbFRh
YmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZB
cHByb3ByaWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBt
X2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNr
LCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4
ZWN1dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2pp
dENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBt
X3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9yQ29uc3RydWN0KSkKICAgICAgICAgcmV0dXJu
IDA7CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0
YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaAkocmV2aXNpb24gMTA2NDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5l
IEV4ZWN1dGFibGVfaAogCiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIKKyNpbmNsdWRlICJDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIklu
dGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTM5LDEyICs0MCwxMiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1Z2dlcjsKICAgICBjbGFzcyBFdmFsQ29kZUJsb2Nr
OwogICAgIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFNjb3BlQ2hh
aW5Ob2RlOwogCiAgICAgc3RydWN0IEV4Y2VwdGlvbkluZm87CiAgICAgCi0gICAgZW51bSBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKICAg
ICBlbnVtIENvbXBpbGF0aW9uS2luZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21w
aWxhdGlvbiB9OwogCiAgICAgaW5saW5lIGJvb2wgaXNDYWxsKENvZGVTcGVjaWFsaXphdGlvbktp
bmQga2luZCkKQEAgLTMxOSw2ICszMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAg
ICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAg
ICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtMzM4LDYgKzM0MCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lk
IGpldHRpc29uT3B0aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRD
b21waWxlKEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgRXZhbENvZGVCbG9jayYg
Z2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAtMzg0LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIH07CiAKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVj
dXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC00
MTEsNiArNDE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQp
CiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAg
ICAgICB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBQ
cm9ncmFtQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC00NTMsNiArNDU4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMg
U2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0
eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNTA4LDYgKzUxNCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRp
c29uT3B0aW1pemVkQ29kZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0
Q29tcGlsZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlz
R2VuZXJhdGVkRm9yQ2FsbCgpIGNvbnN0CkBAIC01MzUsNiArNTQyLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRp
bWl6ZWRDb2RlRm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENv
bXBpbGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBib29s
IGlzR2VuZXJhdGVkRm9yQ29uc3RydWN0KCkgY29uc3QKQEAgLTU4Miw2ICs1OTAsMTYgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29u
c3RydWN0KGdsb2JhbERhdGEpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICB2b2lkIGppdENvbXBpbGVGb3IoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChraW5k
ID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAgICAgICAgaml0Q29tcGlsZUZvckNhbGwoZ2xv
YmFsRGF0YSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgICAgICBqaXRD
b21waWxlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOworICAgICAgICB9CiAjZW5kaWYKICAgICAg
ICAgCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVz
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlv
bkhhcm5lc3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEV4ZWN1dGlv
bkhhcm5lc3NfaAorI2RlZmluZSBFeGVjdXRpb25IYXJuZXNzX2gKKworI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkpJVERyaXZlci5oIgor
I2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBs
YXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+CitpbmxpbmUgYm9vbCBwcmVwYXJlRm9yRXhlY3V0
aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2Rl
QmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyNp
ZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUp
KSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgor
ICAgICAgICBMTEludDo6Z2V0RW50cnlwb2ludChnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCks
IGppdENvZGUpOworICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYg
Ly8gRU5BQkxFKExMSU5UKQorICAgIHJldHVybiBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9i
YWxEYXRhLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdFR5cGUpOworfQorCitpbmxpbmUgYm9vbCBw
cmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25Q
dHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJs
ZSomIHN5bWJvbFRhYmxlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6Omlz
QmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93
IGxldmVsIGludGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RnVuY3Rpb25FbnRyeXBvaW50
KGdsb2JhbERhdGEsIGtpbmQsIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAg
ICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2sp
OworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShr
aW5kKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVGdW5j
dGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2Rl
V2l0aEFyaXR5Q2hlY2ssIHN5bWJvbFRhYmxlLCBqaXRUeXBlKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8gRXhlY3V0aW9uSGFy
bmVzc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZh
dGlvbi5oCShyZXZpc2lvbiAxMDY0MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FjdGl2YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+
IHJlZ2lzdGVyQXJyYXkgPSBhZG9wdEFycmF5UHRyKG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5b
cmVnaXN0ZXJBcnJheVNpemVdKTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdp
c3RlcnMgPSByZWdpc3RlckFycmF5LmdldCgpICsgcmVnaXN0ZXJPZmZzZXQ7Ci0KKyAgICAgICAg
CiAgICAgICAgIC8vIENvcHkgYWxsIGFyZ3VtZW50cyB0aGF0IGNhbiBiZSBjYXB0dXJlZCBieSBu
YW1lIG9yIGJ5IHRoZSBhcmd1bWVudHMgb2JqZWN0LgogICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG1fbnVtQ2FwdHVyZWRBcmdzOyArK2kpIHsKICAgICAgICAgICAgIGludCBpbmRleCA9IENh
bGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoaSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAxMDY0MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNBcnJheTsKKyAgICBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAKICAgICBzdHJ1Y3QgU3BhcnNlQXJyYXlFbnRyeSA6IHB1YmxpYyBXcml0
ZUJhcnJpZXI8VW5rbm93bj4gewogICAgICAgICB0eXBlZGVmIFdyaXRlQmFycmllcjxVbmtub3du
PiBCYXNlOwpAQCAtMTIyLDYgKzEyMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAg
ICBjbGFzcyBKU0FycmF5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgV2Fs
a2VyOwogCiAgICAgcHJvdGVjdGVkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDZWxsLmgJKHJldmlzaW9uIDEwNjQzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiwxMCBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKLSAgICBjbGFzcyBTdHJ1Y3R1cmU7
CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5RGVz
Y3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKKyAgICBjbGFzcyBTdHJ1Y3R1
cmU7CiAKICAgICBlbnVtIEVudW1lcmF0aW9uTW9kZSB7CiAgICAgICAgIEV4Y2x1ZGVEb250RW51
bVByb3BlcnRpZXMsCkBAIC0xNjQsNiArMTY1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0
ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgIHByaXZh
dGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAg
IAogICAgICAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwogICAgICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTA2NDMxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90
eXBlOwogICAgIGNsYXNzIEpTQWN0aXZhdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0
YWJsZTsKICAgICBjbGFzcyBTb3VyY2VDb2RlOwogICAgIG5hbWVzcGFjZSBERkcgewpAQCAtMTQw
LDYgKzE0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCiAg
ICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBjb25zdCBJZGVudGlmaWVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDEwNjQzMSkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
MSw2ICsxNDEsOCBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAg
ICAgLCBrZXl3b3JkcyhhZG9wdFB0cihuZXcgS2V5d29yZHModGhpcykpKQogICAgICwgaW50ZXJw
cmV0ZXIoMCkKICAgICAsIGhlYXAodGhpcywgaGVhcFNpemUpCisgICAgLCBqc0FycmF5Q2xhc3NJ
bmZvKCZKU0FycmF5OjpzX2luZm8pCisgICAgLCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvKCZKU0Zp
bmFsT2JqZWN0OjpzX2luZm8pCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLCBzaXplT2ZMYXN0
U2NyYXRjaEJ1ZmZlcigwKQogI2VuZGlmCkBAIC0yMTYsNyArMjE4LDcgQEAgSlNHbG9iYWxEYXRh
OjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgIGppdFN0dWJzID0gYWRvcHRQdHIobmV3
IEpJVFRodW5rcyh0aGlzKSk7CiAjZW5kaWYKIAotICAgIGludGVycHJldGVyLT5pbml0aWFsaXpl
KHRoaXMtPmNhblVzZUpJVCgpKTsKKyAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSgmbGxpbnRE
YXRhLCB0aGlzLT5jYW5Vc2VKSVQoKSk7CiAKICAgICBoZWFwLm5vdGlmeUlzU2FmZVRvQ29sbGVj
dCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmgJKHJldmlzaW9uIDEwNjQzMSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTYgQEAKICNkZWZp
bmUgSlNHbG9iYWxEYXRhX2gKIAogI2luY2x1ZGUgIkNhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rp
b24uaCIKLSNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2VDYWNo
ZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgi
Ci0jaW5jbHVkZSAiU3Ryb25nLmgiCisjaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAi
SklUU3R1YnMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgi
CiAjaW5jbHVkZSAiTnVtZXJpY1N0cmluZ3MuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIK
KyNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUZXJtaW5hdG9yLmgiCiAjaW5jbHVkZSAi
VGltZW91dENoZWNrZXIuaCIKICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCkBAIC02NSw2ICs2Niw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNz
IEpTT2JqZWN0OwogICAgIGNsYXNzIEtleXdvcmRzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFBhcnNlckFy
ZW5hOwogICAgIGNsYXNzIFJlZ0V4cENhY2hlOwpAQCAtMjQxLDYgKzI0MywxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgSGVhcCBoZWFwOwogCiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9u
OworCisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QganNBcnJheUNsYXNzSW5mbzsKKyAg
ICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOworCisg
ICAgICAgIExMSW50OjpEYXRhIGxsaW50RGF0YTsKKwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAg
IFJldHVybkFkZHJlc3NQdHIgZXhjZXB0aW9uTG9jYXRpb247CiAgICAgICAgIEpTVmFsdWUgaG9z
dENhbGxSZXR1cm5WYWx1ZTsKQEAgLTM0Niw2ICszNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICN1
bmRlZiByZWdpc3RlclR5cGVkQXJyYXlGdW5jdGlvbgogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpT
R2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CiAg
ICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEqJiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAg
ICAgICAgIHZvaWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTA2NDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlv
blByb3RvdHlwZTsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgR2xvYmFsQ29k
ZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xh
c3MgUmVnRXhwQ29uc3RydWN0b3I7CkBAIC0zMzUsNiArMzM2LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQ
cm9wZXJ0eUluZm8qLCBpbnQgY291bnQpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1F
OiBGb2xkIHJlc2V0IGludG8gaW5pdC4KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBp
bml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpOwogICAgICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJv
dG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAko
cmV2aXNpb24gMTA2NDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgSGFzaEVudHJ5OwogICAgIGNsYXNzIElu
dGVybmFsRnVuY3Rpb247CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNs
YXNzIE1hcmtlZEJsb2NrOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFz
cyBQcm9wZXJ0eU5hbWVBcnJheTsKQEAgLTI3MCw2ICsyNzEsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgSlNPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9y
YWdlIGlubGluZVN0b3JhZ2UpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIE5vYm9keSBzaG91
bGQgZXZlciBhc2sgYW55IG9mIHRoZXNlIHF1ZXN0aW9ucyBvbiBzb21ldGhpbmcgYWxyZWFkeSBr
bm93biB0byBiZSBhIEpTT2JqZWN0LgogICAgICAgICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVX
cmFwcGVyOwogICAgICAgICB1c2luZyBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyOwpAQCAtMzgyLDYg
KzM4NSw4IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAg
ICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHByaXZhdGU6CisgICAgICAg
IGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBl
eHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAgICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVy
ZSwgbV9pbmxpbmVTdG9yYWdlKQogICAgICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lv
biAxMDY0MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAKICAgICBjbGFzcyBJZGVudGlmaWVyOwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3IgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTk2
LDYgKzk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAg
ICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5
RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7CiAK
ICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRTdHJ1Y3R1cmU7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDEwNjQz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNT
dHJpbmc7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgSlNTdHJpbmcq
IGpzRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7CiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJp
bmcoRXhlY1N0YXRlKik7CkBAIC0yNDAsNiArMjQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAog
ICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlc29sdmVSb3BlKEV4
ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2U4KExDaGFy
KikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hhciopIGNvbnN0
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2
aXNpb24gMTA2NDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5m
by5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVzcGFjZSBKU0Mgewog
CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxOyAvLyBXZWJDb3JlIHVzZXMgTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCB0byBtYWtlIGRvY3VtZW50LmFsbCB1bmRldGVjdGFibGUuCiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDEgPDwgMTsKICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJpZGVzSGFzSW5zdGFuY2UgPSAxIDw8IDI7CkBA
IC04Nyw2ICs4OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRl
OgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAK
ICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MxKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJU
KGZsYWcgPD0gKDEgPDwgNykpOyByZXR1cm4gbV9mbGFncyAmIGZsYWc7IH0KICAgICAgICAgYm9v
bCBpc1NldE9uRmxhZ3MyKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPj0gKDEg
PDwgOCkpOyByZXR1cm4gbV9mbGFnczIgJiAoZmxhZyA+PiA4KTsgfQogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24gMTA2NDMxKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExNiwxMCArMTE2LDkgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5
cGUoRQogICAgIHJldHVybiBKU05vdEFuT2JqZWN0OjpjcmVhdGUoZXhlYyk7CiB9CiAKLSNpZm5k
ZWYgTkRFQlVHCiBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiB7Ci0gICAgc3RhdGljIGNv
bnN0IHNpemVfdCBzaXplID0gNjQ7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0gMTI4
OwogICAgIHN0YXRpYyBjaGFyIGRlc2NyaXB0aW9uW3NpemVdOwogCiAgICAgaWYgKCEqdGhpcykK
QEAgLTEyOCwxNCArMTI3LDE0IEBAIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKICAgICAg
ICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJJbnQzMjogJWQiLCBhc0ludDMyKCkpOwog
ICAgIGVsc2UgaWYgKGlzRG91YmxlKCkpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBz
bnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlbHgiLCBhc0RvdWJsZSgp
LCByZWludGVycHJldERvdWJsZVRvSW50cHRyKGFzRG91YmxlKCkpKTsKKyAgICAgICAgc25wcmlu
dGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVseCwgJWxmIiwgcmVpbnRlcnByZXREb3Vi
bGVUb0ludHB0cihhc0RvdWJsZSgpKSwgYXNEb3VibGUoKSk7CiAjZWxzZQogICAgICAgICB1bmlv
biB7CiAgICAgICAgICAgICBkb3VibGUgYXNEb3VibGU7CiAgICAgICAgICAgICB1aW50MzJfdCBh
c1R3b0ludDMyc1syXTsKICAgICAgICAgfSB1OwogICAgICAgICB1LmFzRG91YmxlID0gYXNEb3Vi
bGUoKTsKLSAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVsZiwg
JTA4eDolMDh4IiwgYXNEb3VibGUoKSwgdS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1sw
XSk7CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlMDh4OiUw
OHgsICVsZiIsIHUuYXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0sIGFzRG91YmxlKCkp
OwogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChpc0NlbGwoKSkKICAgICAgICAgc25wcmludGYoZGVz
Y3JpcHRpb24sIHNpemUsICJDZWxsOiAlcCIsIGFzQ2VsbCgpKTsKQEAgLTE1Miw3ICsxNTEsNiBA
QCBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiAKICAgICByZXR1cm4gZGVzY3JpcHRpb247
CiB9Ci0jZW5kaWYKIAogLy8gVGhpcyBpbiB0aGUgVG9JbnQzMiBvcGVyYXRpb24gaXMgZGVmaW5l
ZCBpbiBzZWN0aW9uIDkuNSBvZiB0aGUgRUNNQS0yNjIgc3BlYy4KIC8vIE5vdGUgdGhhdCB0aGlz
IG9wZXJhdGlvbiBpcyBpZGVudGljYWwgdG8gVG9VSW50MzIgb3RoZXIgdGhhbiB0byBpbnRlcnBy
ZXRhdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2
aXNpb24gMTA2NDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsOSArMjMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEpTQ2VsbCogYXNDZWxsKCkgY29uc3Q7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJv
b2wgaXNWYWxpZENhbGxlZSgpOwogCi0jaWZuZGVmIE5ERUJVRwogICAgICAgICBjaGFyKiBkZXNj
cmlwdGlvbigpOwotI2VuZGlmCiAKICAgICBwcml2YXRlOgogICAgICAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVD4gSlNWYWx1ZShXcml0ZUJhcnJpZXJCYXNlPFQ+KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEwNjQz
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogCiAg
ICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAg
ICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2Jq
ZWN0IEJhc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAkocmV2aXNpb24gMTA2NDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDEwIEBAIHVuc2lnbmVkIG1heGlt
dW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGkKIAogdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVw
dGg7CiAKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7Citp
bnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2ludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkBAIC0xMzcsNiArMTQxLDEwIEBA
IHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIAogICAgIFNFVChtYXhpbXVtSW5saW5pbmdE
ZXB0aCwgNSk7CiAKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJt
VXAsICAgICAtMTAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFu
eXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CisgICAgU0VU
KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb24sICAgICAgICAgICAgLTEwMCk7CisKICAg
ICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCwgICAgIC0x
MDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdX
YXJtVXAsIC01MDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGlt
aXplQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKQEAg
LTE4NSw2ICsxOTMsOCBAQCB2b2lkIGluaXRpYWxpemVPcHRpb25zKCkKICAgICBpZiAoY3B1c1Rv
VXNlIDwgMSkKICAgICAgICAgY3B1c1RvVXNlID0gMTsKICAgICAKKyAgICBjcHVzVG9Vc2UgPSAx
OworICAgIAogICAgIFNFVChudW1iZXJPZkdDTWFya2VycywgY3B1c1RvVXNlKTsKIAogICAgIEFT
U0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiA8PSBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxMDY0MzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDYgKzM3LDEwIEBAIGV4dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25z
dHIKIAogZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOyAvLyBEZXB0aCBvZiBp
bmxpbmUgc3RhY2ssIHNvIDEgPSBubyBpbmxpbmluZywgMiA9IG9uZSBsZXZlbCwgZXRjLgogCitl
eHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2V4
dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsK
K2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisKIGV4dGVy
biBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBl
eHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dh
cm1VcDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6
ZUFueXRpbWVTb29uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVD
aGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3Bl
Q2hhaW4uaAkocmV2aXNpb24gMTA2NDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU2NvcGVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiAgICAgY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9yOwogICAgIGNsYXNzIFNsb3RWaXNpdG9yOwog
ICAgIApAQCAtOTEsNiArOTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpT
X0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAg
ICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENo
aWxkcmVuOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmNwcAkocmV2aXNpb24gMTA2NDMxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIyLDcgKzMyMiw3IEBA
IFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAgICAgICAgICAgIHRy
YW5zaXRpb24tPmdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAgICAgICByZXR1cm4g
dHJhbnNpdGlvbjsKICAgICB9Ci0KKyAgICAKICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBj
cmVhdGUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAogICAgIHRyYW5zaXRpb24tPm1fY2FjaGVk
UHJvdG90eXBlQ2hhaW4uc2V0TWF5QmVOdWxsKGdsb2JhbERhdGEsIHRyYW5zaXRpb24sIHN0cnVj
dHVyZS0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTA2NDMxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDYgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CiAgICAgY2xhc3MgUHJvcGVy
dHlOYW1lQXJyYXlEYXRhOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOwpAQCAtMTk2LDYgKzE5
Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25z
dCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJv
dG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyopOwogICAgICAgICBTdHJ1
Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBj
b25zdCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMTA2NDMxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiAr
MzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbiA6
IHB1YmxpYyBKU0NlbGwgewpAQCAtNzQsNiArNzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZUNoYWluKEpTR2xvYmFsRGF0YSYs
IFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAg
ICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiA+IG1fdmVjdG9yOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9JbmxpbmVBU00uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0lubGluZUFTTS5oCShyZXZpc2lvbiAxMDY0MzEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0lubGluZUFTTS5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw0ICs3MCwxMSBAQAogI2RlZmluZSBISURFX1NZTUJPTChuYW1lKQogI2VuZGlmCiAKKy8v
IEZJWE1FOiBmaWd1cmUgb3V0IGhvdyB0aGlzIHdvcmtzIG9uIGFsbCB0aGUgcGxhdGZvcm1zLiBJ
IGtub3cgdGhhdAorLy8gb24gTGludXgsIHRoZSBwcmVmZXJyZWQgZm9ybSBpcyAiLkxzdHVmZiIg
YXMgb3Bwb3NlZCB0byAiTHN0dWZmIi4KKy8vIERvbid0IGtub3cgYWJvdXQgYW55IG9mIHRoZSBv
dGhlcnMuCisjaWYgUExBVEZPUk0oTUFDKQorI2RlZmluZSBMT0NBTF9MQUJFTF9TVFJJTkcobmFt
ZSkgIkwiICNuYW1lCisjZW5kaWYKKwogI2VuZGlmIC8vIElubGluZUFTTV9oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAxMDY0MzEpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyMyw2ICs5
MjMsMTggQEAKICNkZWZpbmUgRU5BQkxFX0pJVCAxCiAjZW5kaWYKIAorLyogT24gc29tZSBvZiB0
aGUgcGxhdGZvcm1zIHdoZXJlIHdlIGhhdmUgYSBKSVQsIHdlIHdhbnQgdG8gYWxzbyBoYXZlIHRo
ZSAKKyAgIGxvdy1sZXZlbCBpbnRlcnByZXRlci4gKi8KKyNpZiAhZGVmaW5lZChFTkFCTEVfTExJ
TlQpICYmIEVOQUJMRShKSVQpICYmIE9TKERBUldJTikgJiYgKENQVShYODYpIHx8IENQVShBUk1f
VEhVTUIyKSkgJiYgVVNFKEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyNl
bmRpZgorCisvKiBJZiB3ZSBoYXZlIExMSW50IGVuYWJsZWQgYW5kIHRoZSBKSVQgZW5hYmxlZCwg
d2UgYWxzbyBlbmFibGUgT1NSaW5nIGZyb20KKyAgIExMSW50IHRvIHRoZSBKSVQuICovCisjaWYg
IWRlZmluZWQoRU5BQkxFX0xMSU5UX09TUl9UT19KSVQpICYmIEVOQUJMRShKSVQpICYmIEVOQUJM
RShMTElOVCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UX09TUl9UT19KSVQgMQorI2VuZGlmCisKICNp
ZiAhZGVmaW5lZChFTkFCTEVfREZHX0pJVCkgJiYgRU5BQkxFKEpJVCkKIC8qIEVuYWJsZSB0aGUg
REZHIEpJVCBvbiBYODYgYW5kIFg4Nl82NC4gIE9ubHkgdGVzdGVkIG9uIE1hYyBhbmQgR05VL0xp
bnV4LiAqLwogI2lmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSkgJiYgKFBMQVRGT1JNKE1BQykg
fHwgT1MoTElOVVgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExp
bmtlZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRp
bmVsTGlua2VkTGlzdC5oCShyZXZpc2lvbiAxMDY0MzEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4
IEBAIHB1YmxpYzoKIAogICAgIGl0ZXJhdG9yIGJlZ2luKCk7CiAgICAgaXRlcmF0b3IgZW5kKCk7
CisgICAgCisgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gYmVnaW4oKSA9PSBlbmQoKTsgfQog
CiBwcml2YXRlOgogICAgIFJhd05vZGUgbV9oZWFkU2VudGluZWw7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDEwNjQzMSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDYgKzQzLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlN0cmluZyAqIENG
U3RyaQogLy8gTGFuZGluZyB0aGUgZmlsZSBtb3ZlcyBpbiBvbmUgcGF0Y2gsIHdpbGwgZm9sbG93
IG9uIHdpdGggcGF0Y2hlcyB0byBjaGFuZ2UgdGhlIG5hbWVzcGFjZXMuCiBuYW1lc3BhY2UgSlND
IHsKIHN0cnVjdCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5zbGF0b3I7CitjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElkZW50aWZpZXJDaGFy
QnVmZmVyVHJhbnNsYXRvcjsKIHN0cnVjdCBJZGVudGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xh
dG9yOwogfQpAQCAtNzIsNyArNzMsOCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICBmcmllbmQg
c3RydWN0IFdURjo6U3Vic3RyaW5nVHJhbnNsYXRvcjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6
VUNoYXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmdJbXBs
OwotCisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAog
cHJpdmF0ZToKICAgICBlbnVtIEJ1ZmZlck93bmVyc2hpcCB7CiAgICAgICAgIEJ1ZmZlckludGVy
bmFsLApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NDMxKQorKysgU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDEtMjYgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mgc2hvdWxkIGJlIGEg
dHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3OTY5ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1
aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4K
KyAgICAgICAgCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIG5vIGJlaGF2aW9yIGNoYW5n
ZWQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxMi0wMS0zMSAgSm9lIFRob21h
cyAgPGpvZXRob21hc0Btb3Rvcm9sYS5jb20+CiAKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2ODAxCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMTA2NDMxKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTc0LDYgKzc0LDcgQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIKKyAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjQz
MSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTItMDEtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAg
ICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDaGFuZ2VkIEVGTCdzIGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9y
eSBpbiBKYXZhU2NyaXB0Q29yZS4KKyAgICAgICAgCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisKIDIwMTItMDEtMTEgIEphY2t5IEppYW5nICA8emhhamlhbmdAcmltLmNvbT4KIAogICAgICAg
ICBbQmxhY2tCZXJyeV0gQVNTRVJUIGZhaWx1cmUgaW4gQmFja2luZ1N0b3JlUHJpdmF0ZTo6Ymxp
dFZpc2libGVDb250ZW50cygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNjQz
MSkKKysrIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ0
LDYgKzQ0LDcgQEAgU0VUKFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVy
cHJldGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L3J1bnRpbWUiCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDY0MzEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGlu
Y2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3JpcHRDb3JlLgorCisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAxLTMxICBSeXVhbiBDaG9p
ICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXSBBZGQgYmFzaWMgRFJU
L0VmbCBpbXBsZW1lbnRhdGlvbiB0byBzdXBwb3J0IHZpZXdwb3J0IHRlc3QuCkluZGV4OiBUb29s
cy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
RHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDY0MzEpCisrKyBU
b29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTY4LDEwICs2OCwxMiBAQCBTRVQoRHVtcFJlbmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUwog
ICAgICR7SkFWQVNDUklQVENPUkVfRElSfQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9BUEkK
ICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYXNzZW1ibGVyCisgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2J5dGVjb2RlCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RmZwogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9oZWFwCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJl
dGVyCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdAorICAgICR7SkFWQVNDUklQVENPUkVf
RElSfS9sbGludAogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lCiAgICAgJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L0ZvcndhcmRpbmdIZWFkZXJzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L3d0Zgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125035</attachid>
            <date>2012-02-01 15:41:40 -0800</date>
            <delta_ts>2012-02-01 23:55:37 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_86.diff</filename>
            <type>text/plain</type>
            <size>489804</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NDg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM5OSBA
QAorMjAxMi0wMS0zMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcgYW5k
IEpTVmFsdWUKKyAgICAgICAgZHVtcGluZyB3b3JrIGluIHJlbGVhc2UgYnVpbGRzLCBzaW5jZSBk
ZWJ1Z2dpbmcgc29tZSBvZiB0aGUgbmFzdGllcgorICAgICAgICBhc3BlY3RzIG9mIHRoaXMgcGF0
Y2ggd291bGQgaGF2ZSBiZWVuIGltcG9zc2libGUgd2l0aG91dCB0aGF0LiBBbmQgSQorICAgICAg
ICBkb24ndCBiZWxpZXZlIHRoYXQgd2UgY2FyZSBhYm91dCB0aGUgbWluaXNjdWxlIGNvZGUgYmxv
YXQgdGhhdCB0aGlzCisgICAgICAgIGludHJvZHVjZXMuCisKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnByaToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAg
ICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZUNvbW1vbi52c3Byb3BzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9jb3B5LWZpbGVzLmNtZDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogYXNz
ZW1ibGVyL0xpbmtCdWZmZXIuaDoKKyAgICAgICAgKiBhc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmLmg6CisgICAgICAgIChNYWNyb0Fzc2VtYmxlckNvZGVQdHIpOgorICAgICAgICAoSlND
OjpNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyk6Cisg
ICAgICAgICogYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oOiBBZGRlZC4KKyAgICAgICAg
KiBieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OkNhbGxMaW5rU3Rh
dHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkNh
bGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5oOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6aXNTZXQpOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6b3BlcmF0b3IhKToKKyAgICAgICAgKENhbGxMaW5rU3RhdHVz
KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpD
b2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6dW5saW5rQ2FsbHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVu
bGlua0luY29taW5nQ2FsbHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zm
c2V0KToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAg
ICAoSlNDOjpFdmFsQ29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9u
Q29kZUJsb2NrOjpqZXR0aXNvbik6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6Ompp
dENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUlt
cGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVu
aXR5KToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChDb2RlQmxvY2spOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpiYXNlbGluZVZlcnNpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpbmtJbmNvbWlu
Z0NhbGwpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpoYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRk
UHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRk
R2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRM
TEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVz
b2x2ZUluZm8pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9mTWV0aG9kQ2FsbExp
bmtJbmZvcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlUHJlZGljdGlv
bkZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rh
a2VTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y291bGRUYWtlU2xvd0Nhc2Up
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZVNwZWNpYWxGYXN0Q2FzZSk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VBbnlTbG93Q2FzZSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6YWRkRnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAgIChKU0M6
OkNvZGVCbG9jazo6ZG9udEpJVEFueXRpbWVTb29uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpqaXRBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0U29vbik6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGxpbnRFeGVjdXRlQ291bnRlcik6CisgICAgICAgIChQ
cm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKEV2YWxDb2RlQmxvY2spOgorICAgICAgICAoRnVu
Y3Rpb25Db2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgor
ICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAg
ICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1
czo6R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6Ondhc1NlZW5J
bkpJVCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0
cnVjdGlvbi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246Oklu
c3RydWN0aW9uKToKKyAgICAgICAgKEluc3RydWN0aW9uKToKKyAgICAgICAgKCk6CisgICAgICAg
ICogYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaDogQWRkZWQuCisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6TExJbnRDYWxsTGlua0luZm8pOgorICAg
ICAgICAoTExJbnRDYWxsTGlua0luZm8pOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5m
bzo6fkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86
OmlzTGlua2VkKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86OnVubGluayk6Cisg
ICAgICAgICogYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlND
OjpNZXRob2RDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUv
T3Bjb2RlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoKToKKyAgICAgICAgKiBieXRlY29k
ZS9QdXRCeUlkU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVz
Ojpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkU3RhdHVzLmg6CisgICAg
ICAgIChQdXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpkdW1wc0dlbmVyYXRlZENvZGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29s
dmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sdmVXaXRoQmFz
ZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhUaGlz
KToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAg
ICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENhdGNoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgor
ICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRm
Zy9ERkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2Rl
KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKCk6Cisg
ICAgICAgICogZGZnL0RGR09wZXJhdGlvbnMuY3BwOgorICAgICAgICAoKToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFwOjpjb2xsZWN0KToKKyAgICAgICAgKiBo
ZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAoSGVhcCk6
CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAoSlNDOjp2aXNpdENoaWxk
cmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgor
ICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJyZW50VlBD
KToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6
OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6
aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToK
KyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAgICAgKEpT
Qzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6CisgICAgICAgICogaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgICgpOgorICAgICAgICAo
SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5o
OgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmlsZSk6CisgICAgICAgICogaml0
L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKiBq
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
ICogaml0L0pJVC5jcHA6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cyk6CisgICAgICAgIChKU0M6OkpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMpOgorICAgICAg
ICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlKToKKyAgICAgICAgKiBqaXQvSklUQ29kZS5oOgor
ICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKToKKyAg
ICAgICAgKEpJVENvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZSk6
CisgICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAgICAgICAqIGppdC9KSVREcml2
ZXIuaDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUpOgorICAgICAgICAo
SlNDOjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKiBqaXQvSklU
RXhjZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93KToKKyAgICAgICAgKiBqaXQv
SklUU3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAqIGxs
aW50OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAg
ICAgKiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6
fkRhdGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChEYXRhKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxMSW50OjpE
YXRhOjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZ1bmN0aW9u
RW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFdmFsRW50cnlwb2ludCk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAgICogbGxp
bnQvTExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChM
TEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBs
bGludC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxlcik6CisgICAgICAgIChKU0M6
OkxMSW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cp
OgorICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmNwcDog
QWRkZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFj
ZV9vcGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpzaG91bGRK
SVQpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmVudHJ5T1NSKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OnJlc29sdmVHbG9iYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0
QnlWYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9zdENhbGwpOgorICAgICAgICAo
SlNDOjpMTEludDo6c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWNDYWxs
KToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuaDogQWRkZWQuCisgICAgICAgIChKU0Mp
OgorICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludE9mZnNldHNFeHRyYWN0b3IpOgor
ICAgICAgICAoSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KToKKyAgICAgICAgKG1h
aW4pOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmNwcDogQWRkZWQuCisgICAgICAgIChM
TEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1
bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RB
cml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZXZhbEVudHJ5
VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6cHJvZ3JhbUVudHJ5VGh1bmtH
ZW5lcmF0b3IpOgorICAgICAgICAqIGxsaW50L0xMSW50VGh1bmtzLmg6IEFkZGVkLgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbTogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5j
cHA6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDogQWRkZWQu
CisgICAgICAgICogb2ZmbGluZWFzbTogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hcm12
Ny5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc20ucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vYXN0LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tl
bmRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRy
YWN0b3IucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiOiBB
ZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJi
OiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldHMucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vb3B0LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3BhcnNl
ci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9yZWdpc3RlcnMucmI6IEFkZGVkLgor
ICAgICAgICAqIG9mZmxpbmVhc20vc2VsZl9oYXNoLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZs
aW5lYXNtL3NldHRpbmdzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3RyYW5zZm9y
bS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS94ODYucmI6IEFkZGVkLgorICAgICAg
ICAqIHJ1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOiBBZGRlZC4KKyAgICAgICAgKEpT
Qyk6CisgICAgICAgICgpOgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6Cisg
ICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0Zvcik6CisgICAgICAgIChD
b21tb25TbG93UGF0aHMpOgorICAgICAgICAqIHJ1bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAg
ICAgIChKU0M6OmpldHRpc29uQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFi
bGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6c2FtcGxpbmdE
ZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZSk6CisgICAg
ICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2VsaW5lQ29kZUJsb2NrRm9yKToKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbCk6CisgICAgICAgIChK
U0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdCk6CisgICAgICAg
IChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFs
KToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgICgpOgorICAgICAgICAoRXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAoUHJvZ3JhbUV4ZWN1
dGFibGUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1
dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwcmVw
YXJlRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0
aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNDOjpK
U0FjdGl2YXRpb246OnRlYXJPZmYpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxs
Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoKToKKyAgICAgICAgKEpTQ2VsbCk6CisgICAg
ICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNG
dW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbERhdGEuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbERhdGEuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0dsb2JhbERhdGEpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0dsb2JhbE9iamVjdCk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKCk6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgIChKU0Zp
bmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoK
KyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKToKKyAgICAg
ICAgKiBydW50aW1lL0pTU3RyaW5nLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNTdHJp
bmcpOgorICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKFR5cGVJbmZvKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6ZGVzY3JpcHRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvSlNWYWx1ZS5oOgorICAgICAgICAoSlNWYWx1ZSk6CisgICAgICAgICgpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTVmFyaWFibGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6Cisg
ICAgICAgIChPcHRpb25zKToKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlv
bnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAoT3B0aW9ucyk6Cisg
ICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAo
U2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3RydWN0dXJlKToK
KyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoU3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAqIHd0Zi9JbmxpbmVBU00uaDoKKyAgICAg
ICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg6
CisgICAgICAgIChTZW50aW5lbExpbmtlZExpc3QpOgorICAgICAgICAoV1RGOjpTZW50aW5lbExp
bmtlZExpc3Q6OmlzRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChTdHJpbmdJbXBsKToKKyAgICAgICAgKCk6CisKIDIwMTIt
MDItMDEgIEFuZHkgV2luZ28gIDx3aW5nb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlZmFjdG9y
IGlkZW50aWZpZXIgcmVzb2x1dGlvbiBpbiBCeXRlY29kZUdlbmVyYXRvcgpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA2NDg4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw2ICsxMSw3
IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVy
cHJldGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L3J1bnRpbWUiCkBAIC05NSw2ICs5Niw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VS
Q0VTCiAgICAgaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcAogCiAgICAgaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3IuY3BwCisgICAgaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCiAgICAgaml0
L0pJVEFyaXRobWV0aWMzMl82NC5jcHAKICAgICBqaXQvSklUQXJpdGhtZXRpYy5jcHAKICAgICBq
aXQvSklUQ2FsbDMyXzY0LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2Vm
aWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5h
bQkocmV2aXNpb24gMTA2NDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxl
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBAIGphdmFzY3JpcHRjb3JlX2NwcGZs
YWdzICs9IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIg
XAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludCBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyIFwKIAktSSQo
c3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZSBcCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTA2NDg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAg
LTgxLDYgKzgxLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvU0g0QXNzZW1ibGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvWDg2QXNzZW1ibGVyLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9CeXRlY29kZUNvbnZlbnRpb25zLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua0luZm8uY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtJbmZvLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0
YXR1cy5jcHAgXApAQCAtMTAyLDYgKzEwMyw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0xpbmVJbmZvLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRo
b2RDYWxsTGlua0luZm8uY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0
aG9kQ2FsbExpbmtJbmZvLmggXApAQCAtMjc3LDYgKzI3OSw4IEBAIGphdmFzY3JpcHRjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ29tcGFjdEpJVENvZGVNYXAu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmggXAorCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgXAorCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ2FsbDMyXzY0LmNwcCBcCkBAIC0zMDAsNiArMzA0LDcgQEAgamF2YXNjcmlwdGNvcmVf
c291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5r
SklULmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaCBcCisJU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb3Mtd2luMzIvc3RkYm9vbC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvb3Mtd2luMzIv
c3RkaW50LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIFwK
QEAgLTM1MCw2ICszNTUsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NhbGxEYXRhLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NsYXNzSW5mby5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lh
bGl6YXRpb25LaW5kLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklk
ZW50aWZpZXJzLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRl
bnRpZmllcnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1Bh
dGhzLmggXApAQCAtMzc4LDYgKzM4NCw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUucHJpCShyZXZpc2lvbiAxMDY0ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2ICsyMCw3IEBA
IElOQ0xVREVQQVRIICs9IFwKICAgICAkJFNPVVJDRV9ESVIvZGVidWdnZXIgXAogICAgICQkU09V
UkNFX0RJUi9pbnRlcnByZXRlciBcCiAgICAgJCRTT1VSQ0VfRElSL2ppdCBcCisgICAgJCRTT1VS
Q0VfRElSL2xsaW50IFwKICAgICAkJFNPVVJDRV9ESVIvcGFyc2VyIFwKICAgICAkJFNPVVJDRV9E
SVIvcHJvZmlsZXIgXAogICAgICQkU09VUkNFX0RJUi9ydW50aW1lIFwKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9UYXJnZXQucHJpCShyZXZpc2lvbiAxMDY0ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvVGFyZ2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTA2LDYgKzEwNiw3IEBAIFNPVVJDRVMg
Kz0gXAogICAgIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5jcHAgXAogICAgIGppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yRml4ZWRWTVBvb2wuY3BwIFwKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRv
ci5jcHAgXAorICAgIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCiAgICAgaml0L0pJVEFy
aXRobWV0aWMuY3BwIFwKICAgICBqaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAgICAgaml0
L0pJVENhbGwuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxMDY0ODgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTc1OCw2ICsxNzU4LDEwIEBACiAJ
CQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGppdFxI
b3N0Q2FsbFJldHVyblZhbHVlLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cLi5caml0XEpJVC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAt
MTg0Myw2ICsxODQ3LDE0IEBACiAJCQk8L0ZpbGU+CiAJCTwvRmlsdGVyPgogCQk8RmlsdGVyCisJ
CQlOYW1lPSJsbGludCIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxs
bGludFxMTEludERhdGEuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8Rmls
dGVyCiAJCQlOYW1lPSJpbnRlcnByZXRlciIKIAkJCT4KIAkJCTxGaWxlCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUNv
bW1vbi52c3Byb3BzCShyZXZpc2lvbiAxMDY0ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlQ29tbW9u
LnZzcHJvcHMJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBACiAJPgogCTxUb29sCiAJCU5h
bWU9IlZDQ0xDb21waWxlclRvb2wiCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZx
dW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNv
dXJjZXNcJnF1b3Q7Oy4uLy4uLzsuLi8uLi9BUEkvOy4uLy4uL3BhcnNlci87Li4vLi4vYnl0ZWNv
bXBpbGVyLzsuLi8uLi9kZmcvOy4uLy4uL2ppdC87Li4vLi4vcnVudGltZS87Li4vLi4vdG9vbHMv
Oy4uLy4uL2J5dGVjb2RlLzsuLi8uLi9pbnRlcnByZXRlci87Li4vLi4vd3RmLzsuLi8uLi9wcm9m
aWxlcjsuLi8uLi9hc3NlbWJsZXIvOy4uLy4uL2RlYnVnZ2VyLzsuLi8uLi9oZWFwLzsmcXVvdDsk
KFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmll
c0RpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEph
dmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRl
XHByaXZhdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVh
ZHMmcXVvdDsiCisJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoQ29uZmln
dXJhdGlvbkJ1aWxkRGlyKVxvYmpcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNvdXJjZXNcJnF1b3Q7
Oy4uLy4uLzsuLi8uLi9BUEkvOy4uLy4uL3BhcnNlci87Li4vLi4vYnl0ZWNvbXBpbGVyLzsuLi8u
Li9kZmcvOy4uLy4uL2ppdC87Li4vLi4vbGxpbnQvOy4uLy4uL3J1bnRpbWUvOy4uLy4uL3Rvb2xz
LzsuLi8uLi9ieXRlY29kZS87Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJv
ZmlsZXI7Li4vLi4vYXNzZW1ibGVyLzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7
JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJp
ZXNEaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERp
cilcaW5jbHVkZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxK
YXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVk
ZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJl
YWRzJnF1b3Q7IgogCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX19TVERfQyIKIAkJRm9yY2Vk
SW5jbHVkZUZpbGVzPSJJQ1VWZXJzaW9uLmgiCiAJLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZpbGVzLmNtZAkocmV2aXNpb24gMTA2NDg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9j
b3B5LWZpbGVzLmNtZAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBmb3IgJSVkIGlu
ICgKICAgICBkZWJ1Z2dlcgogICAgIGludGVycHJldGVyCiAgICAgaml0CisgICAgbGxpbnQKICAg
ICBwYXJzZXIKICAgICBwcm9maWxlcgogICAgIHJ1bnRpbWUKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMDY0ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtNyw2ICs3LDE1IEBACiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQWdncmVnYXRlVGFy
Z2V0IHNlY3Rpb24gKi8KKwkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNl
dHMgKi8gPSB7CisJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3Vy
YXRpb25MaXN0ID0gMEY0NjgwQUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRp
b24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJMTEludCBPZmZzZXRzIiAqLzsKKwkJCWJ1
aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBE
ZXJpdmVkIFNvdXJjZXMgKi8sCisJCQkpOworCQkJbmFtZSA9ICJMTEludCBPZmZzZXRzIjsKKwkJ
CXByb2R1Y3ROYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CisJCX07CiAJCTY1RkIzRjY2MDlEMTFF
OTEwMEY0OURFQiAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhBZ2dyZWdh
dGVUYXJnZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNjVGQjNGNzcwOUQxMUVCRDAw
RjQ5REVCIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0
ICJEZXJpdmVkIFNvdXJjZXMiICovOwpAQCAtMTQsNiArMjMsOSBAQAogCQkJCTY1RkIzRjY1MDlE
MTFFOTEwMEY0OURFQiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJNUQzNURF
RTEwQzdDMTQwQjAwODY0OEIyIC8qIEdlbmVyYXRlIERUcmFjZSBoZWFkZXIgKi8sCiAJCQkpOwor
CQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsK
IAkJCXByb2R1Y3ROYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCX07CkBAIC00OCw2ICs2MCwx
MCBAQAogCQkwQkFDOTRBMDEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJp
Zmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJB
Qzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkNEODM1NzE0
ODU4NDUyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVt
cG9yYXJ5Q2hhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEJGMjhBMjkxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RD
MzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovOyB9OworCQkwRjBCODM5QTE0QkNGNDVEMDA4
ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRy
eXBvaW50cy5jcHAgKi87IH07CisJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEI4MzlDMTRCQ0Y0
NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVu
a3MuY3BwICovOyB9OworCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk4
MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBD
b2RlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwQjgzQTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRG
IC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBQjE0QkNG
NUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4
cHJlc3Npb25SYW5nZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpAQCAtNTgsOSArNzQsMTMgQEAKIAkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRG
IC8qIE1ldGhvZENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5r
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjYxNEJDRjhERjAw
ODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVy
bk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxs
TGlua0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTVGMTVGMTRCN0E3
M0UwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25T
bG93UGF0aHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjE2RDcyNjE0MkMzOUMwMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTZENzI0MTQyQzM5QTIwMENG
Nzg0QSAvKiBCaXRWZWN0b3IuY3BwICovOyB9OwogCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIg
LyogSklURHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0MxNEJFNzI3NjAw
QURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25I
YXJuZXNzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjc5MTRC
RTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0YxNEJFQUE4MjAwQURD
NjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNv
bnZlbnRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEYyNDJEQTcxM0YzQjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjQyREE1
MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NkYxNDczOEYzMTAw
MTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYy
QzU1NzAxNDczOEYzNTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRG
IC8qIERGR0NvZGVCbG9ja3MuY3BwICovOyB9OwpAQCAtNzEsNiArOTEsMTkgQEAKIAkJMEY0MzE3
MzgxNDZCQUM2OTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8q
IExpc3RhYmxlSGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA4MDE0
QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBK
SVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLzsg
fTsKKwkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUUxNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBMTElu
dEhlbHBlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi87IHNldHRp
bmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tdW51c2VkLXBhcmFtZXRlciI7IH07IH07CisJ
CTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEEwMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludEhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICov
OyB9OworCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlEMTRC
QTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBDQTE0
QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENv
bW1vbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM2MTRCQkIx
NjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIg
LyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRl
cnByZXRlci5jcHAgKi87IH07CisJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZl
bEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQy
MTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50
RGF0YS5jcHAgKi87IH07CisJCTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENG
MTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9z
dENhbGxSZXR1cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1
ZS5jcHAgKi87IH07CisJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVy
blZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNTVGMEY0MTREMTA2
MzkwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBD
LmNwcCAqLzsgfTsKIAkJMEY1NUYwRjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTVGMEYyMTRE
MTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxp
emVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAg
LTM4Nyw3ICs0MjAsNyBAQAogCQk4NkI5OUFFMzExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVm
ZmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI5
OUFFMTExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZCQjA5QzAxMzhFMzgxQjAwNTY3MDJG
IC8qIERGR1JlcGF0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZCQjA5QkUxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwICovOyB9
OwogCQk4NkJCMDlDMTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkYxMzhFMzgxQjAwNTY3
MDJGIC8qIERGR1JlcGF0Y2guaCAqLzsgfTsKLQkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8q
IE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsg
fTsKKwkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlE
MDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9B
c3NlbWJsZXJBUk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODZDNTY4REQxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCAq
LzsgfTsKIAkJODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUx
MUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwogCQk4NkM1NjhF
MjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1J
UFNBc3NlbWJsZXIuaCAqLzsgfTsKQEAgLTc1NCw2ICs3ODcsMjAgQEAKIC8qIEVuZCBQQlhCdWls
ZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlv
biAqLworCQkwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5
ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9y
dGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJ
cHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwQTkxNEJBN0ZE
OTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9ICJMTEludCBPZmZzZXRzIjsKKwkJfTsKKwkJMEY0
NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJ
CWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdE
NjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9
IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MjsK
KwkJCXJlbW90ZUluZm8gPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCX07CiAJCTE0MTIx
NEJFMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlp
c2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5
MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC03OTksNiArODQ2LDE1
IEBACiAvKiBFbmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4g
UEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhEMTRCQTdFNUUwMEJG
RTI3MiAvKiBDb3B5RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNl
OworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAvdXNyL3No
YXJlL21hbi9tYW4xLzsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMgPSAoCisJ
CQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCX07CiAJ
CTVEQkIxNTExMTMxRDBCMTMwMDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0gewog
CQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDEy
OwpAQCAtODM5LDYgKzg5NSwxMCBAQAogCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhy
ZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYXJ5Q2hhbmdlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpemVMaW1pdHMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYg
LyogTExJbnRFbnRyeXBvaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBMTEludEVudHJ5cG9pbnRzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMTEludEVudHJ5cG9pbnRzLmg7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBM
TEludFRodW5rcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTElu
dFRodW5rcy5jcHA7IHBhdGggPSBsbGludC9MTEludFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludFRodW5rcy5oOyBwYXRoID0g
bGxpbnQvTExJbnRUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgz
QTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENvZGVUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4
M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIYW5kbGVySW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeHByZXNzaW9uUmFuZ2VJbmZvLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NDksOSArOTA5LDEzIEBACiAJCTBGMEI4M0IzMTRC
Q0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWV0aG9kQ2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbG9iYWxSZXNvbHZlSW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyog
Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2Fs
bExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50Q2FsbExp
bmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTVGMTVEMTRCN0E3M0Ew
MDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ29tbW9uU2xvd1BhdGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQml0VmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVREcml2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlv
bktpbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3QTE0QkU3Mjcz
MDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBFeGVjdXRpb25IYXJuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVudGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtS
ZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vh
a1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJD
NTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBERkdDb2RlQmxvY2tzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODYyLDYgKzkyNiwyMCBAQAogCQkwRjQzMTczNjE0
NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IExpc3RhYmxlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRFeGNlcHRpb25zLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4
Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURXhjZXB0aW9u
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUy
NzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNs
dWRlSW5JbmRleCA9IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRy
ZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludEV4Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gTExJbnRFeGNlcHRpb25zLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludEV4Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJ
bnRFeGNlcHRpb25zLmg7IHBhdGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVs
cGVycy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEhlbHBl
cnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEhlbHBlcnMuaDsgcGF0aCA9IGxs
aW50L0xMSW50SGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBB
MTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHBh
dGggPSBsbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRDb21tb24uaDsgcGF0aCA9IGxsaW50
L0xMSW50Q29tbW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM2MTRC
QkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHBhdGggPSBsbGludC9M
TEludE9mZmxpbmVBc21Db25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0
NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHBh
dGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5o
OyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RGF0YS5jcHA7IHBhdGggPSBs
bGludC9MTEludERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBD
RjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgbmFtZSA9IExMSW50RGF0YS5oOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2Fs
bFJldHVyblZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhv
c3RDYWxsUmV0dXJuVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBD
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFic3RyYWN0UEMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkg
LyogQWJzdHJhY3RQQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFj
dFBDLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENDMTQ2QkU2MDIwMDA0
NzJBOSAvKiBERkdCeXRlQ29kZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IERGR0J5dGVDb2RlQ2FjaGUuaDsgcGF0aCA9IGRmZy9ERkdCeXRlQ29kZUNhY2hlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNTg3LDYgKzE2NjUsMTMgQEAKIC8qIEVuZCBQ
QlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3Jr
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRTBBNDg3OTNDMDA0
ODAyNTUgLyogRnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBo
YXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTE2NDUsNiArMTczMCw3
IEBACiAJCQkJMTQxMjExMjAwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRC
RDU5QkYwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJNjUxMTIzMDUxNDA0NkE0
QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcy
IC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKIAkJCSk7CiAJCQluYW1lID0gUHJvZHVj
dHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTY3NSw2ICsxNzYxLDcgQEAKIAkJ
CQlGNUMyOTBFNjAyODRGOThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLywK
IAkJCQk0NUUxMkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4
QzAyNTVENEM2MDFGRjYwRjcgLyogY29uZmlnLmggKi8sCisJCQkJMEY0NjgwOUMxNEJBN0Y0RDAw
QkZFMjcyIC8qIGxsaW50ICovLAogCQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkg
Ki8sCiAJCQkJOTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQk5
NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8sCkBAIC0xNzE0LDYgKzE4MDEs
MjggQEAKIAkJCXRhYldpZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJMEY0Njgw
OUMxNEJBN0Y0RDAwQkZFMjcyIC8qIGxsaW50ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJ
CQljaGlsZHJlbiA9ICgKKwkJCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRy
eXBvaW50cy5jcHAgKi8sCisJCQkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50
cnlwb2ludHMuaCAqLywKKwkJCQkwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVu
a3MuY3BwICovLAorCQkJCTBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5o
ICovLAorCQkJCTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovLAor
CQkJCTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLywKKwkJCQkwRjQ2
ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLywKKwkJCQkwRjQ2ODBDNjE0
QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi8sCisJCQkJMEY0Njgw
QzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovLAorCQkJCTBG
NDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi8sCisJCQkJ
MEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8sCisJCQkJ
MEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovLAorCQkJCTBG
NDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovLAorCQkJCTBGNDY4
MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLywKKwkJCQkwRjQ2ODBBMTE0
QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLywKKwkJCSk7CisJ
CQluYW1lID0gbGxpbnQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxNDEy
MTEwMDBBNDg3NzI2MDA0ODAyNTUgLyogdGVzdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsK
IAkJCWNoaWxkcmVuID0gKApAQCAtMTc0OCw2ICsxODU3LDggQEAKIAkJMTQyOUQ5MkMwRUQyMkQ3
MDAwQjg5NjE5IC8qIGppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCisJCQkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUu
Y3BwICovLAorCQkJCTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZh
bHVlLmggKi8sCiAJCQkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMu
Y3BwICovLAogCQkJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmgg
Ki8sCiAJCQkJMEZEODJFMzcxNDFBQjE0MjAwMTc5Qzk0IC8qIENvbXBhY3RKSVRDb2RlTWFwLmgg
Ki8sCkBAIC0yMTc1LDYgKzIyODYsOCBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyog
cnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
MEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLywK
KwkJCQkwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovLAog
CQkJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLywKIAkJ
CQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1
MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAqLywKQEAgLTI1NDcsNiArMjY2MCw4IEBA
CiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRC
IC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLywKKwkJCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODEx
NTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKIAkJCQkwRjkzMzI5MzE0Q0E3REMxMDA4NUYz
QzYgLyogQ2FsbExpbmtTdGF0dXMuY3BwICovLAogCQkJCTBGOTMzMjk0MTRDQTdEQzEwMDg1RjND
NiAvKiBDYWxsTGlua1N0YXR1cy5oICovLAogCQkJCTBGOTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAv
KiBHZXRCeUlkU3RhdHVzLmNwcCAqLywKQEAgLTMwOTcsNyArMzIxMiwxNiBAQAogCQkJCTg2NzA0
QjhBMTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
ODY3MDRCNDMxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNl
cHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyog
TExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUy
NzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2
QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0
QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxs
UmV0dXJuVmFsdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0
RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5RDE0QkNG
NDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3
MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgz
QTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRl
cnMgKi8sCkBAIC0zMTA2LDcgKzMyMzAsMTEgQEAKIAkJCQkwRjBCODNCNTE0QkNGODYyMDA4ODVC
NEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCNzE0
QkNGOEUxMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9m
ZnNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExM
SW50Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIxQzI2ODE0QkU1RjY4MDBB
REM2NEIgLyogSklURHJpdmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3QzE0QkU3Mjc2
MDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMy
N0QxNEJFNzI3QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QTE0QzNDRDI5MDA3QzNEQjEgLyogREZHQ0Nh
bGxIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEg
LyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QzE0QzNDRDQz
MDA3QzNEQjEgLyogREZHQnl0ZUNvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTI1LDYg
KzMyNTMsMjQgQEAKIC8qIEVuZCBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisJCTBGNDY4MDhFMTRCQTdFNUUwMEJG
RTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRp
dmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwOUExNEJBN0U1RjAw
QkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJK
U0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0
NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwOEMxNEJBN0U1
RTAwQkZFMjcyIC8qIEZyYW1ld29ya3MgKi8sCisJCQkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcy
IC8qIENvcHlGaWxlcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRl
cGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0
RGVwZW5kZW5jeSAqLywKKwkJCSk7CisJCQluYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworCQkJcHJvZHVjdE5hbWUgPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0
UmVmZXJlbmNlID0gMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4
dHJhY3RvciAqLzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9v
bCI7CisJCX07CiAJCTE0MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovID0gewog
CQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0
MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi87CkBAIC0zMjUxLDExICszMzk3LDI5IEBACiAJCQkJ
MTRCRDU5QkUwQTNFOEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJOTMyRjVCREEwODIy
QTFDNzAwNzM2OTc1IC8qIGpzYyAqLywKIAkJCQk2NTExMjJGNzE0MDQ2QTRDMDAyQjEwMUQgLyog
dGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yICovLAorCQkJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTElu
dCBPZmZzZXRzICovLAogCQkJKTsKIAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0Njgw
QUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIk
KFNSQ1JPT1QpL2xsaW50L0xvd0xldmVsQXNzZW1ibGVyLmFzbSIsCisJCQkpOworCQkJbmFtZSA9
ICJHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQo
QlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oIiwK
KwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNo
ZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRf
UFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvXCJcblxuL3Vzci9iaW4vZW52IHJ1YnkgXCIke1NS
Q1JPT1R9L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYlwiIFwiJHtTUkNS
T09UfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbVwiIFwiJHtCVUlMVF9QUk9EVUNUU19E
SVJ9L0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmhcIlxuIjsKKwkJfTsKIAkJMzcx
M0YwMTQxNDI5MDUyNDAwMzYzODdGIC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2
ZS1DIENsYXNzIE5hbWVzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNl
OwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTMzNjEsNyArMzUyNSw3IEBA
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlz
aGVsbFBhdGggPSAvYmluL3NoOwotCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxU
X1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBc
IiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5c
bi9iaW4vbG4gLXNmaCBcIiR7U1JDUk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFT
Y3JpcHRDb3JlPVwiSmF2YVNjcmlwdENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1c
Ii4uLy4uXCJcblxubWFrZSAtLW5vLWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlXCIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNwdWBcbiI7
CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9kb2NzXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19E
SVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlXCJcblxuL2Jpbi9sbiAtc2ZoIFwiJHtT
UkNST09UfVwiIEphdmFTY3JpcHRDb3JlXG5leHBvcnQgSmF2YVNjcmlwdENvcmU9XCJKYXZhU2Ny
aXB0Q29yZVwiXG5leHBvcnQgQlVJTFRfUFJPRFVDVFNfRElSPVwiLi4vLi5cIlxuXG5tYWtlIC0t
bm8tYnVpbHRpbi1ydWxlcyAtZiBcIkphdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2Vc
IiAtaiBgL3Vzci9zYmluL3N5c2N0bCAtbiBody5uY3B1YFxuXG4vdXNyL2Jpbi9lbnYgcnVieSBK
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYiBKYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbSAke0JVSUxUX1BST0RVQ1RTX0RJUn0vSlNDTExJbnRPZmZzZXRz
RXh0cmFjdG9yIExMSW50QXNzZW1ibHkuaFxuIjsKIAkJfTsKIAkJOTMxOTU4NkIwOUQ5RjkxQTAw
QTU2RkQ0IC8qIENoZWNrIEZvciBHbG9iYWwgSW5pdGlhbGl6ZXJzICovID0gewogCQkJaXNhID0g
UEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwpAQCAtMzM5Niw2ICszNTYwLDE0IEBACiAvKiBFbmQg
UEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNl
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291
cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGNDY4MEE3MTRCQTdGQTEw
MEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkp
OworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0
MTIxMTFEMEE0ODc5M0MwMDQ4MDI1NSAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291
cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzY1
Myw3ICszODI1LDE0IEBACiAJCQkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQ
YXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAv
KiBZYXJyU3ludGF4Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0QkE3
RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4
MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8q
IExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUy
NzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5
QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYwQjgzQjAxNEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjBCODNCNDE0QkNGODYwMDA4ODVCNEYgLyogTWV0aG9kQ2Fs
bExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY2OUU4NkMzMTRDNkU1NTEwMDJDMkM2
MiAvKiBOdW1iZXJPZkNvcmVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzY3OCw2ICszODU3LDE2
IEBACiAvKiBFbmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcy
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRl
bmN5OworCQkJdGFyZ2V0ID0gMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNl
dHMgKi87CisJCQl0YXJnZXRQcm94eSA9IDBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi87CisJCX07CisJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5j
eTsKKwkJCXRhcmdldCA9IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNl
dHNFeHRyYWN0b3IgKi87CisJCQl0YXJnZXRQcm94eSA9IDBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3
MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07CiAJCTE0MTIxNEJGMEE0OTE5MEUw
MDQ4MDI1NSAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0
RGVwZW5kZW5jeTsKIAkJCXRhcmdldCA9IDE0MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5p
ZG9tICovOwpAQCAtMzcxMSw2ICszOTAwLDE1MCBAQAogLyogRW5kIFBCWFRhcmdldERlcGVuZGVu
Y3kgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICov
CisJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VB
UkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJ
VCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFO
REFSRCA9IGdudTk5OworCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19FTkFC
TEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAw
OworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwK
KwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VY
VEVSTiA9IE5POworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNs
YW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJ
CUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9B
Qk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZ
RVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJ
CWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQki
JChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9U
QVJHRVQgPSAxMC43OworCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBOTzsKKwkJCQlQUk9EVUNUX05B
TUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9I
RUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9m
ZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOwor
CQl9OworCQkwRjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdB
WVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJE
XzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JN
QVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RB
TkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJ
CQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJ
R0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9V
VF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZ
UEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFE
RVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIk
KEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzJChIRUFERVJfU0VBUkNIX1BBVEhTKSIs
CisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCU9OTFlf
QUNUSVZFX0FSQ0ggPSBOTzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOwor
CQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4g
aWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BB
VEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4MDk4MTRCQTdF
NUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJh
dGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhT
ID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZ
X1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2Fy
Zi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJ
R0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20u
YXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJ
VF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVT
ID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19X
QVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNo
PSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIp
L0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOwor
CQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJT05MWV9BQ1RJVkVfQVJD
SCA9IE5POworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9P
VCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlM
VF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJ
CX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUy
NzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsK
KwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0Vf
U1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgt
ZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5B
QkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5j
b21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZF
UlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7
CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5V
U0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0g
KAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRP
ZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJH
RVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNI
X1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFE
RVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJ
CTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUg
PSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsK
KwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9O
QU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsK
KwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQ
Uk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQ
cm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9u
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9Owor
CQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1NSAv
KiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKQEAgLTM5NTIsNiArNDI4NSwyOCBAQAogLyogRW5kIFhDQnVpbGRDb25maWd1
cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9u
ICovCisJCTBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxp
c3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLyA9IHsK
KwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0g
KAorCQkJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODA5
NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODA5ODE0QkE3RTVFMDBC
RkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQ
cm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0g
MDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBG
NDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZp
Z3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODBBRDE0
QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcy
IC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGlu
ZyAqLywKKwkJCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJ
CSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEzOTBBNDg3OTg0MDA0
ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1p
bmlkb20iICovID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29u
ZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xp
bmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA2NDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAK
ICNkZWZpbmUgR0xPQkFMX1RIVU5LX0lEIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19j
YXN0PGludHB0cl90PigtMSkpCiAjZGVmaW5lIFJFR0VYUF9DT0RFX0lEIHJlaW50ZXJwcmV0X2Nh
c3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigtMikpCiAKLSNpbmNsdWRlIDxNYWNyb0Fz
c2VtYmxlci5oPgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCShyZXZp
c2lvbiAxMDY0ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQ29kZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzMsNiArMjczLDE0IEBAIHB1Ymxp
YzoKICAgICB7CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAg
ICAgfQorICAgIAorICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3JlYXRlRnJvbUV4
ZWN1dGFibGVBZGRyZXNzKHZvaWQqIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1ZBTElE
X0NPREVfUE9JTlRFUih2YWx1ZSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1
bHQ7CisgICAgICAgIHJlc3VsdC5tX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfQogCiAgICAgZXhwbGljaXQgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKFJldHVybkFk
ZHJlc3NQdHIgcmEpCiAgICAgICAgIDogbV92YWx1ZShyYS52YWx1ZSgpKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2Rl
Q29udmVudGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEJ5dGVjb2RlQ29udmVu
dGlvbnNfaAorI2RlZmluZSBCeXRlY29kZUNvbnZlbnRpb25zX2gKKworLy8gUmVnaXN0ZXIgbnVt
YmVycyB1c2VkIGluIGJ5dGVjb2RlIG9wZXJhdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbWVhbmluZyBh
Y2NvcmRpbmcgdG8gdGhlaXIgcmFuZ2VzOgorLy8gICAgICAweDgwMDAwMDAwLTB4RkZGRkZGRkYg
IE5lZ2F0aXZlIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGVudHJpZXMg
aW4gdGhlIGNhbGwgZnJhbWUsIHNlZSBSZWdpc3RlckZpbGUuaC4KKy8vICAgICAgMHgwMDAwMDAw
MC0weDNGRkZGRkZGICBGb3J3YXJkcyBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVy
IGFyZSBsb2NhbCB2YXJzIGFuZCB0ZW1wb3JhcmllcyB3aXRoIHRoZSBmdW5jdGlvbidzIGNhbGxm
cmFtZS4KKy8vICAgICAgMHg0MDAwMDAwMC0weDdGRkZGRkZGICBQb3NpdGl2ZSBpbmRpY2VzIGZy
b20gMHg0MDAwMDAwMCBzcGVjaWZ5IGVudHJpZXMgaW4gdGhlIGNvbnN0YW50IHBvb2wgb24gdGhl
IENvZGVCbG9jay4KK3N0YXRpYyBjb25zdCBpbnQgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgg
PSAweDQwMDAwMDAwOworCisjZW5kaWYgLy8gQnl0ZWNvZGVDb252ZW50aW9uc19oCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNw
cAkocmV2aXNpb24gMTA2NDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTcgKzI3LDQwIEBACiAjaW5j
bHVkZSAiQ2FsbExpbmtTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1
ZGUgIkxMSW50Q2FsbExpbmtJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitDYWxsTGlua1N0
YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVk
QmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2Zp
bGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CisgICAgTExJbnRDYWxsTGlua0lu
Zm8qIGNhbGxMaW5rSW5mbyA9IGluc3RydWN0aW9uWzRdLnUuY2FsbExpbmtJbmZvOworICAgIAor
ICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyhjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLmdl
dCgpLCBmYWxzZSk7CisjZWxzZQorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygwLCBmYWxzZSk7
CisjZW5kaWYKK30KKwogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3Io
Q29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQogewogICAg
IFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJ
bmRleCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQotICAgIHJl
dHVybiBDYWxsTGlua1N0YXR1cygKLSAgICAgICAgcHJvZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJ
bmZvKGJ5dGVjb2RlSW5kZXgpLmxhc3RTZWVuQ2FsbGVlLmdldCgpLAotICAgICAgICBwcm9maWxl
ZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSk7CisgICAgaWYgKCFwcm9m
aWxlZEJsb2NrLT5udW1iZXJPZkNhbGxMaW5rSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1
dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgaWYg
KHByb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQorICAgICAg
ICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgdHJ1ZSk7CisgICAgCisgICAgSlNGdW5jdGlvbiog
dGFyZ2V0ID0gcHJvZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJbmZvKGJ5dGVjb2RlSW5kZXgpLmxh
c3RTZWVuQ2FsbGVlLmdldCgpOworICAgIGlmICghdGFyZ2V0KQorICAgICAgICByZXR1cm4gY29t
cHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KTsKKyAgICAKKyAgICBy
ZXR1cm4gQ2FsbExpbmtTdGF0dXModGFyZ2V0LCBmYWxzZSk7CiAjZWxzZQogICAgIHJldHVybiBD
YWxsTGlua1N0YXR1cygwLCBmYWxzZSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCShyZXZpc2lvbiAxMDY0ODgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDcsMTUgKzQ3LDE3IEBAIHB1YmxpYzoKICAgICAKICAgICBzdGF0aWMgQ2Fs
bExpbmtTdGF0dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4
KTsKICAgICAKLSAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxUYXJnZXQ7
IH0KKyAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxUYXJnZXQgfHwgbV9j
b3VsZFRha2VTbG93UGF0aDsgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyBy
ZXR1cm4gIW1fY2FsbFRhcmdldDsgfQorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1
cm4gIWlzU2V0KCk7IH0KICAgICAKICAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoKCkgY29uc3Qg
eyByZXR1cm4gbV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIAogICAgIEpTRnVuY3Rpb24qIGNh
bGxUYXJnZXQoKSBjb25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQ7IH0KICAgICAKIHByaXZhdGU6
CisgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwg
dW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CisgICAgCiAgICAgSlNGdW5jdGlvbiogbV9jYWxsVGFy
Z2V0OwogICAgIGJvb2wgbV9jb3VsZFRha2VTbG93UGF0aDsKIH07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTA2NDg4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVk
ZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRl
ICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2lu
Y2x1ZGUgIlVTdHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC01OSw4
ICs2MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogdXNpbmcgbmFtZXNwYWNlIERGRzsKICNlbmRpZgog
Ci0jaWYgIWRlZmluZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotCiBzdGF0
aWMgVVN0cmluZyBlc2NhcGVRdW90ZXMoY29uc3QgVVN0cmluZyYgc3RyKQogewogICAgIFVTdHJp
bmcgcmVzdWx0ID0gc3RyOwpAQCAtMzU4LDEwICszNTcsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1
bXAoRXhlY1N0YXRlKiBleGVjKSBjbwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpOyBpICs9IG9wY29kZUxlbmd0aHNbZXhlYy0+aW50ZXJwcmV0ZXIoKS0+
Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbaV0udS5vcGNvZGUpXSkKICAgICAgICAgKytpbnN0
cnVjdGlvbkNvdW50OwogCi0gICAgcHJpbnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRl
cyBhdCAlcDsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocylcblxuIiwKKyAg
ICBwcmludGYoIiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJhbWV0
ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUocylcblxuIiwKICAgICAg
ICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25Db3VudCksCiAgICAgICAg
IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygpLnNpemUoKSAqIHNpemVv
ZihJbnN0cnVjdGlvbikpLAotICAgICAgICB0aGlzLCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgdGhpcywgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxl
ZVJlZ2lzdGVycywgbV9udW1WYXJzKTsKIAogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0
X2l0ZXJhdG9yIGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICBWZWN0b3I8SW5z
dHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBpbnN0cnVjdGlvbnMoKS5lbmQoKTsKQEAg
LTg5OCw2ICs4OTcsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBj
bwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5
X2lkX3RyYW5zaXRpb24iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7CisgICAgICAgICAgICBwcmlu
dFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3QiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChl
eGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwiKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX2dlbmVy
aWM6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1
dF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAgICAgICBicmVhazsKQEAgLTEyODYsOCArMTI5Myw2
IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAgICB9CiB9CiAK
LSNlbmRpZiAvLyAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRShPUENPREVfU0FNUExJTkcpCi0K
ICNpZiBEVU1QX0NPREVfQkxPQ0tfU1RBVElTVElDUwogc3RhdGljIEhhc2hTZXQ8Q29kZUJsb2Nr
Kj4gbGl2ZUNvZGVCbG9ja1NldDsKICNlbmRpZgpAQCAtMTQ1Nyw2ICsxNDYyLDcgQEAgQ29kZUJs
b2NrOjpDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLAogewogICAgIHNldE51bVBhcmFtZXRl
cnMob3RoZXIubnVtUGFyYW1ldGVycygpKTsKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7Cisg
ICAgaml0QWZ0ZXJXYXJtVXAoKTsKICAgICAKICAgICBpZiAob3RoZXIubV9yYXJlRGF0YSkgewog
ICAgICAgICBjcmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0xNTA1LDYgKzE1MTEsNyBA
QCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgQVNTRVJUKG1f
c291cmNlKTsKICAgICAKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJX
YXJtVXAoKTsKIAogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNTCiAgICAgbGl2ZUNvZGVC
bG9ja1NldC5hZGQodGhpcyk7CkBAIC0xNTIyLDcgKzE1MjksMTEgQEAgQ29kZUJsb2NrOjp+Q29k
ZUJsb2NrKCkKICNpZiBFTkFCTEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxFKQogICAgIGR1bXBWYWx1
ZVByb2ZpbGVzKCk7CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShMTElOVCkgICAgCisgICAg
d2hpbGUgKG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xMSW50Q2Fs
bHMuZW5kKCkpCisgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCktPnJlbW92ZSgp
OworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFdlIG1h
eSBiZSBkZXN0cm95ZWQgYmVmb3JlIGFueSBDb2RlQmxvY2tzIHRoYXQgcmVmZXIgdG8gdXMgYXJl
IGRlc3Ryb3llZC4KICAgICAvLyBDb25zaWRlciB0aGF0IHR3byBDb2RlQmxvY2tzIGJlY29tZSB1
bnJlYWNoYWJsZSBhdCB0aGUgc2FtZSB0aW1lLiBUaGVyZQpAQCAtMTczNCw4ICsxNzQ1LDY5IEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICNlbHNlCiAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgdmVyYm9zZVVubGlua2luZyA9IGZhbHNlOwogI2VuZGlmCi0jZW5kaWYK
KyNlbmRpZiAvLyBFTkFCTEUoSklUKQogICAgIAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnRl
cnByZXRlciogaW50ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJldGVyOworICAgIC8v
IGludGVycHJldGVyLT5lbmFibGVkKCkgcmV0dXJucyB0cnVlIGlmIHRoZSBvbGQgQysrIGludGVy
cHJldGVyIGlzIGVuYWJsZWQuIElmIHRoYXQncyBlbmFibGVkCisgICAgLy8gdGhlbiB3ZSdyZSBu
b3QgdXNpbmcgTExJbnQuCisgICAgaWYgKCFpbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAg
ICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUo
KSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJ
bnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25z
W2ldXTsKKyAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1cklu
c3RydWN0aW9uWzBdLnUub3Bjb2RlKSkgeworICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6
CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgICAgICAgICBpZiAoIWN1
ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0
aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAg
IHByaW50ZigiQ2xlYXJpbmcgTExJbnQgcHJvcGVydHkgYWNjZXNzIHdpdGggc3RydWN0dXJlICVw
LlxuIiwgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICAgICAg
ICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAg
ICAgY3VySW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kID0gMDsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAg
ICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgICAgICAg
ICAgICAgaWYgKEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdl
dCgpKQorICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlv
bls2XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNN
YXJrZWQoY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5n
KSB7CisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcgTExJbnQgcHV0IHRyYW5z
aXRpb24gd2l0aCBzdHJ1Y3R1cmVzICVwIC0+ICVwLCBjaGFpbiAlcC5cbiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdl
dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1
Y3R1cmVDaGFpbi5nZXQoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGN1
ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3Vy
SW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJ
bnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmNsZWFyKCk7CisgICAgICAgICAgICAgICAg
Y3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1
dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0Ogor
ICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1
Y3Rpb24qIGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUlu
c3RydWN0aW9uc1tpXV07CisgICAgICAgICAgICBBU1NFUlQoaW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbAorICAg
ICAgICAgICAgICAgICAgIHx8IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlv
blswXS51Lm9wY29kZSkgPT0gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CisgICAgICAgICAg
ICBpZiAoIWN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1
ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQorICAgICAgICAgICAgICAg
IHByaW50ZigiQ2xlYXJpbmcgTExJbnQgZ2xvYmFsIHJlc29sdmUgY2FjaGUgd2l0aCBzdHJ1Y3R1
cmUgJXAuXG4iLCBjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAg
ICAgICBjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAg
Y3VySW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kID0gMDsKKyAgICAgICAgfQorICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsK
KyAgICAgICAgICAgIGlmIChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpICYmICFI
ZWFwOjppc01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5jYWxsZWUuZ2V0KCkpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAg
IHByaW50ZigiQ2xlYXJpbmcgTExJbnQgY2FsbCBmcm9tICVwLlxuIiwgdGhpcyk7CisgICAgICAg
ICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoISFtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxl
ZSAmJiAhSGVhcDo6aXNNYXJrZWQobV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxs
ZWUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RT
ZWVuQ2FsbGVlLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExM
SU5UKQorCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLy8gQ2hlY2sgaWYgd2UncmUgbm90IGxp
dmUuIElmIHdlIGFyZSwgdGhlbiBqZXR0aXNvbi4KICAgICBpZiAoIShzaG91bGRJbW1lZGlhdGVs
eUFzc3VtZUxpdmVuZXNzRHVyaW5nU2NhbigpIHx8IG1fZGZnRGF0YS0+bGl2ZW5lc3NIYXNCZWVu
UHJvdmVkKSkgewpAQCAtMTg1NiwxMCArMTkyOCwxMiBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25n
bHlWaXNpdFN0cm9uZ1JlZmVyCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9u
RGVjbHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9uRGVj
bHNbaV0pOwogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKLSAgICBmb3IgKHNpemVfdCBzaXplID0g
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQotICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9n
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0g
ICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0
ZXItPmVuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAg
ICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAg
ICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREZH
X0pJVCkKQEAgLTE4NjcsOCArMTk0MSw5IEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0
U3Ryb25nUmVmZXIKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgZXhlY3V0YWJsZXMgdGhhdCB3
ZSBoYXZlIGlubGluZWQgZG9uJ3QgZGllLgogICAgICAgICAvLyBGSVhNRTogSWYgdGhleSB3b3Vs
ZCBoYXZlIG90aGVyd2lzZSBkaWVkLCB3ZSBzaG91bGQgcHJvYmFibHkgdHJpZ2dlciByZWNvbXBp
bGF0aW9uLgogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlubGluZUNhbGxGcmFtZXMo
KS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxG
cmFtZXMoKVtpXS5leGVjdXRhYmxlKTsKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpbmxp
bmVDYWxsRnJhbWVzKClbaV0uY2FsbGVlKTsKKyAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSYg
aW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lcygpW2ldOworICAgICAgICAgICAgdmlz
aXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZS5leGVjdXRhYmxlKTsKKyAgICAgICAgICAgIHZp
c2l0b3IuYXBwZW5kKCZpbmxpbmVDYWxsRnJhbWUuY2FsbGVlKTsKICAgICAgICAgfQogICAgIH0K
ICNlbmRpZgpAQCAtMjA2OCw2ICsyMTQzLDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxs
cygpCiB7CiAgICAgaWYgKCEhbV9hbHRlcm5hdGl2ZSkKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+
dW5saW5rQ2FsbHMoKTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9s
bGludENhbGxMaW5rSW5mb3NbaV0uaXNMaW5rZWQoKSkKKyAgICAgICAgICAgIG1fbGxpbnRDYWxs
TGlua0luZm9zW2ldLnVubGluaygpOworICAgIH0KKyNlbmRpZgogICAgIGlmICghKG1fY2FsbExp
bmtJbmZvcy5zaXplKCkgfHwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSkpCiAgICAgICAg
IHJldHVybjsKICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0yMDgyLDEw
ICsyMTYzLDM5IEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiAKIHZvaWQgQ29kZUJs
b2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKCkKIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgd2hp
bGUgKG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMu
ZW5kKCkpCisgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCktPnVubGluaygpOwor
I2VuZGlmCisgICAgaWYgKG1faW5jb21pbmdDYWxscy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
bjsKICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIodGhpcyk7CiAgICAgd2hpbGUgKG1f
aW5jb21pbmdDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdDYWxscy5lbmQoKSkKICAgICAgICAg
bV9pbmNvbWluZ0NhbGxzLmJlZ2luKCktPnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVm
ZmVyKTsKIH0KKwordW5zaWduZWQgQ29kZUJsb2NrOjpieXRlY29kZU9mZnNldChFeGVjU3RhdGUq
IGV4ZWMsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3sKKyNpZiBFTkFCTEUoTExJ
TlQpCisgICAgaWYgKHJldHVybkFkZHJlc3MudmFsdWUoKSA+PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9iZWdpbikKKyAgICAgICAgJiYgcmV0dXJuQWRkcmVzcy52YWx1ZSgpIDw9IGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X2VuZCkpIHsKKyAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVC
bG9jaygpKTsKKyAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpID09IHRoaXMpOworICAg
ICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CisgICAg
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGV4ZWMtPmN1cnJlbnRWUEMoKTsKKyAgICAg
ICAgQVNTRVJUKGluc3RydWN0aW9uKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0KGlu
c3RydWN0aW9uKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyNlbmRp
ZgorICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgVmVjdG9yPENh
bGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRh
LT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKKyAgICBpZiAoIWNhbGxJbmRpY2VzLnNpemUoKSkK
KyAgICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zm
c2V0VG9CeXRlY29kZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJ
bmRpY2VzLmJlZ2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9m
KHJldHVybkFkZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKK30KICNlbmRpZgogCiB2
b2lkIENvZGVCbG9jazo6Y2xlYXJFdmFsQ2FjaGUoKQpAQCAtMjE4MSwyNCArMjI5MSw0NSBAQCBi
b29sIEZ1bmN0aW9uQ29kZUJsb2NrOjpjYW5Db21waWxlV2l0aERGCiAKIHZvaWQgUHJvZ3JhbUNv
ZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0
SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3Rh
dGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29u
T3B0aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBFdmFsQ29kZUJsb2NrOjpq
ZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGlu
ZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkp
KTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxF
dmFsRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2Rl
KCpnbG9iYWxEYXRhKCkpOwogfQogCiB2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbigp
CiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Cisg
ICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBB
U1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4
ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZUZvcigq
Z2xvYmFsRGF0YSgpLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZv
ckNhbGwpOwogfQorCit2b2lkIFByb2dyYW1Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENv
ZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkp
OworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0
YWJsZSgpKS0+aml0Q29tcGlsZShnbG9iYWxEYXRhKTsKK30KKwordm9pZCBFdmFsQ29kZUJsb2Nr
OjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJU
KGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQo
dGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1
dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZ2xvYmFsRGF0YSk7Cit9CisK
K3ZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJl
dGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVy
biBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpp
dENvbXBpbGVGb3IoZ2xvYmFsRGF0YSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVj
dCA6IENvZGVGb3JDYWxsKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVS
KQpAQCAtMjMwMSw2ICsyNDMyLDE4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wVmFsdWVQcm9maWxl
cygpCiB9CiAjZW5kaWYKIAordm9pZCBDb2RlQmxvY2s6OmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGlu
Z09wcG9ydHVuaXR5KCkKK3sKKyNpZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykgJiYgIUVOQUJM
RShMTElOVCkKKyAgICBpZiAoQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgp
KQorICAgICAgICByZXR1cm47CisgICAgaWYgKCEhYWx0ZXJuYXRpdmUoKSkKKyAgICAgICAgZGlz
Y2FyZEJ5dGVjb2RlKCk7CisgICAgZWxzZQorICAgICAgICBkaXNjYXJkQnl0ZWNvZGVMYXRlcigp
OworI2VuZGlmCit9CisKICNpZm5kZWYgTkRFQlVHCiBib29sIENvZGVCbG9jazo6dXNlc09wY29k
ZShPcGNvZGVJRCBvcGNvZGVJRCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEwNjQ4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBA
QAogI2lmbmRlZiBDb2RlQmxvY2tfaAogI2RlZmluZSBDb2RlQmxvY2tfaAogCisjaW5jbHVkZSAi
Qnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1
ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZU9y
aWdpbi5oIgpAQCAtNTAsNiArNTEsNyBAQAogI2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgog
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5j
bHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJMaW5lSW5mby5oIgogI2luY2x1
ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUHJlZGljdGlvblRyYWNrZXIuaCIKQEAgLTY1LDE2ICs2
NywxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHVi
SW5mby5oIgogCi0vLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9u
cyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6Ci0vLyAg
ICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxs
RnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVy
RmlsZS5oLgotLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMg
ZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVz
IHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgotLy8gICAgICAweDQwMDAwMDAwLTB4N0ZG
RkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBp
biB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgotc3RhdGljIGNvbnN0IGludCBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7Ci0KIG5hbWVzcGFjZSBKU0Mg
ewogCi0gICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAg
Y2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAg
IGlubGluZSBpbnQgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGludCBhcmd1bWVudHNSZWdp
c3RlcikgeyByZXR1cm4gYXJndW1lbnRzUmVnaXN0ZXIgLSAxOyB9CiAKQEAgLTgzLDYgKzgwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIFVuY29uZGl0
aW9uYWxGaW5hbGl6ZXIsIHB1YmxpYyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyIHsKICAgICAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAg
ICAgICBlbnVtIENvcHlQYXJzZWRCbG9ja1RhZyB7IENvcHlQYXJzZWRCbG9jayB9OwogICAgIHBy
b3RlY3RlZDoKQEAgLTEyMyw3ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
cmVzdWx0LT5hbHRlcm5hdGl2ZSgpOwogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAg
ICAgICAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVK
SVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+
Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAj
ZW5kaWYKQEAgLTEzNCwxMSArMTMyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3Rh
dGljIHZvaWQgZHVtcFN0YXRpc3RpY3MoKTsKIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5B
QkxFX09QQ09ERV9TQU1QTElORwogICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKikgY29uc3Q7
CiAgICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmVzKGNvbnN0IEluc3RydWN0aW9uKikgY29uc3Q7
CiAgICAgICAgIHZvaWQgcHJpbnRTdHJ1Y3R1cmUoY29uc3QgY2hhciogbmFtZSwgY29uc3QgSW5z
dHJ1Y3Rpb24qLCBpbnQgb3BlcmFuZCkgY29uc3Q7Ci0jZW5kaWYKIAogICAgICAgICBib29sIGlz
U3RyaWN0TW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAKQEAgLTE5NCwx
NSArMTkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKihiaW5hcnlT
ZWFyY2g8TWV0aG9kQ2FsbExpbmtJbmZvLCB1bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZv
Qnl0ZWNvZGVJbmRleD4obV9tZXRob2RDYWxsTGlua0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2Fs
bExpbmtJbmZvcy5zaXplKCksIGJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAgfQogCi0gICAgICAg
IHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykK
LSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICAgICAgICAg
IHJldHVybiAxOwotICAgICAgICAgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2Rl
T2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3Rv
cjsKLSAgICAgICAgICAgIGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQotICAgICAgICAgICAgICAg
IHJldHVybiAxOwotICAgICAgICAgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zm
c2V0VG9CeXRlY29kZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJ
bmRpY2VzLmJlZ2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9m
KHJldHVybkFkZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKLSAgICAgICAgfQorICAg
ICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChFeGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRy
KTsKIAogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldEZvckNhbGxBdEluZGV4KHVuc2ln
bmVkIGluZGV4KQogICAgICAgICB7CkBAIC0yMjMsMTEgKzIxMSwxNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgewogICAgICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcp
OwogICAgICAgICB9CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICB2b2lkIGxpbmtJbmNvbWlu
Z0NhbGwoTExJbnRDYWxsTGlua0luZm8qIGluY29taW5nKQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2luY29taW5nTExJbnRDYWxscy5wdXNoKGluY29taW5nKTsKKyAgICAgICAgfQorI2VuZGlm
IC8vIEVOQUJMRShMTElOVCkKICAgICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5rSW5jb21pbmdD
YWxscygpOwotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAotI2lmIEVOQUJMRShERkdf
SklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIHZvaWQg
c2V0SklUQ29kZU1hcChQYXNzT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBqaXRDb2RlTWFwKQog
ICAgICAgICB7CiAgICAgICAgICAgICBtX2ppdENvZGVNYXAgPSBqaXRDb2RlTWFwOwpAQCAtMjM2
LDcgKzIzMCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1
cm4gbV9qaXRDb2RlTWFwLmdldCgpOwogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgCisjaWYg
RU5BQkxFKERGR19KSVQpCiAgICAgICAgIHZvaWQgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCkK
ICAgICAgICAgewogICAgICAgICAgICAgaWYgKCEhbV9kZmdEYXRhKQpAQCAtMzM1LDEyICszMzEs
MTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKElO
VEVSUFJFVEVSKQogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChJbnN0cnVjdGlvbiog
cmV0dXJuQWRkcmVzcykKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJldHVybkFkZHJl
c3MgPj0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rp
b25zKCkuZW5kKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RydWN0aW9u
Kj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgICAgICB9Ci0j
ZW5kaWYKIAogICAgICAgICB2b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlz
TnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlz
TnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgICAgICBib29sIGlzTnVtZXJpY0NvbXBhcmVG
dW5jdGlvbigpIHsgcmV0dXJuIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CkBAIC0zNTQs
MTcgKzM0OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBtX3No
b3VsZERpc2NhcmRCeXRlY29kZSA9IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgdm9pZCBoYW5k
bGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghIWFsdGVybmF0aXZlKCkpCi0gICAgICAgICAgICAgICAgZGlzY2FyZEJ5dGVjb2RlKCk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZGlzY2FyZEJ5dGVjb2RlTGF0ZXIo
KTsKLSAgICAgICAgfQorICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9y
dHVuaXR5KCk7CiAgICAgICAgIAotI2lmbmRlZiBOREVCVUcKICAgICAgICAgYm9vbCB1c2VzT3Bj
b2RlKE9wY29kZUlEKTsKLSNlbmRpZgogCiAgICAgICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291
bnQoKSB7IHJldHVybiBtX2luc3RydWN0aW9uQ291bnQ7IH0KICAgICAgICAgdm9pZCBzZXRJbnN0
cnVjdGlvbkNvdW50KHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQpIHsgbV9pbnN0cnVjdGlvbkNv
dW50ID0gaW5zdHJ1Y3Rpb25Db3VudDsgfQpAQCAtMzg3LDYgKzM3NCwxNSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZSogZXhlY3V0YWJsZU1lbW9yeSgp
IHsgcmV0dXJuIGdldEpJVENvZGUoKS5nZXRFeGVjdXRhYmxlTWVtb3J5KCk7IH0KICAgICAgICAg
dmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWlu
Tm9kZSopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCkgPSAwOworICAgICAg
ICBib29sIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkludGVycHJldGVyVGh1bmsp
IHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2Vs
aW5lSklUKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBqaXRDb21waWxlSW1wbChnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVu
dCgpID0gMDsKIAogICAgICAgICBlbnVtIENvbXBpbGVXaXRoREZHU3RhdGUgewpAQCAtNDA2LDEz
ICs0MDIsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBoYXNPcHRpbWl6ZWRS
ZXBsYWNlbWVudCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkg
PT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6Omlz
QmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgYm9vbCByZXN1bHQgPSBy
ZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPiBnZXRKSVRUeXBlKCk7CiAjaWYgIUFTU0VSVF9E
SVNBQkxFRAogICAgICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgICAgICBBU1NFUlQo
cmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CiAgICAgICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKS0+Z2V0SklU
VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
SklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpKSk7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCkgPT0gdGhpcyk7CiAgICAgICAgICAg
ICB9CiAjZW5kaWYKQEAgLTQ3MSwxOCArNDY3LDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIHZvaWQgY2xlYXJFdmFsQ2FjaGUoKTsKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAg
ICAgICAgdm9pZCBhZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKHVuc2lnbmVkIHByb3BlcnR5
QWNjZXNzSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9nbG9iYWxE
YXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKTsKKyAgICAgICAgICAgIG1f
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBwZW5kKHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b24pOwogICAgICAgICB9CiAgICAgICAgIHZvaWQgYWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
KHVuc2lnbmVkIGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xv
YmFsUmVzb2x2ZUluc3RydWN0aW9ucy5hcHBlbmQoZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKTsK
KyAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5hcHBlbmQoZ2xvYmFsUmVz
b2x2ZUluc3RydWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICBib29sIGhhc0dsb2JhbFJlc29s
dmVJbnN0cnVjdGlvbkF0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwor
I2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGFkZExMSW50Q2Fs
bExpbmtJbmZvKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3Mu
YXBwZW5kKExMSW50Q2FsbExpbmtJbmZvKCkpOworICAgICAgICAgICAgcmV0dXJuICZtX2xsaW50
Q2FsbExpbmtJbmZvcy5sYXN0KCk7CisgICAgICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShKSVQp
CiAgICAgICAgIHZvaWQgc2V0TnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3Moc2l6ZV90IHNpemUp
IHsgbV9zdHJ1Y3R1cmVTdHViSW5mb3MuZ3JvdyhzaXplKTsgfQpAQCAtNDkxLDggKzQ5MCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkR2xvYmFsUmVzb2x2ZUluZm8odW5z
aWduZWQgZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAobV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX2dsb2JhbFJl
c29sdmVJbmZvcy5hcHBlbmQoR2xvYmFsUmVzb2x2ZUluZm8oZ2xvYmFsUmVzb2x2ZUluc3RydWN0
aW9uKSk7CisgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbmZvcy5hcHBlbmQoR2xvYmFsUmVz
b2x2ZUluZm8oZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKSk7CiAgICAgICAgIH0KICAgICAgICAg
R2xvYmFsUmVzb2x2ZUluZm8mIGdsb2JhbFJlc29sdmVJbmZvKGludCBpbmRleCkgeyByZXR1cm4g
bV9nbG9iYWxSZXNvbHZlSW5mb3NbaW5kZXhdOyB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVz
b2x2ZUluZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTUw
Myw2ICs1MDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGFkZE1ldGhvZENh
bGxMaW5rSW5mb3ModW5zaWduZWQgbikgeyBBU1NFUlQobV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQo
KSk7IG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5ncm93KG4pOyB9CiAgICAgICAgIE1ldGhvZENhbGxM
aW5rSW5mbyYgbWV0aG9kQ2FsbExpbmtJbmZvKGludCBpbmRleCkgeyByZXR1cm4gbV9tZXRob2RD
YWxsTGlua0luZm9zW2luZGV4XTsgfQorICAgICAgICBzaXplX3QgbnVtYmVyT2ZNZXRob2RDYWxs
TGlua0luZm9zKCkgeyByZXR1cm4gbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKTsgfQogI2Vu
ZGlmCiAgICAgICAgIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTU0Myw2ICs1NDIs
MTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJ5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSkpIC0gMV0udS5wcm9maWxlID09IHJlc3VsdCk7CiAg
ICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CisgICAgICAgIFByZWRpY3RlZFR5
cGUgdmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9m
ZnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHZhbHVlUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7Cisg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIHRvdGFsTnVtYmVyT2ZWYWx1ZVBy
b2ZpbGVzKCkKICAgICAgICAgewpAQCAtNTY5LDEyICs1NzIsMTYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZVNsb3dDYXNlKGludCBieXRlY29k
ZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJv
ZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNp
Z25lZCB2YWx1ZSA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zm
c2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49IE9wdGlvbnM6Omxp
a2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4odmFs
dWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dD
YXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGNvdWxkVGFr
ZVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYg
KCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgcmV0dXJu
IHZhbHVlID49IE9wdGlvbnM6OmNvdWxkVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRp
Y19jYXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6
OmNvdWxkVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CkBAIC01OTMsMTIgKzYwMCwx
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtl
U3BlY2lhbEZhc3RDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAg
ICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNw
ZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1f
Y291bnRlcjsKICAgICAgICAgICAgIHJldHVybiBzcGVjaWFsRmFzdENhc2VDb3VudCA+PSBPcHRp
b25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHNwZWNpYWxGYXN0Q2FzZUNvdW50KSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRp
b25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAK
ICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zm
c2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxl
cygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVk
IHNsb3dDYXNlQ291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29k
ZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2Fz
ZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBzbG93Q2Fz
ZUNvdW50IC0gc3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBAIC02MDcsNiArNjE4LDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZUFueVNsb3dDYXNl
KGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJP
ZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB1bnNpZ25lZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNv
ZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25l
ZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29k
ZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVk
IHZhbHVlID0gc2xvd0Nhc2VDb3VudCArIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNzA0LDcg
KzcxNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBhZGRGcmVx
dWVudEV4aXRTaXRlKGNvbnN0IERGRzo6RnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkKICAgICAgICAg
ewotICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJ
VCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlw
ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gbV9leGl0UHJvZmlsZS5hZGQoc2l0ZSk7CiAgICAg
ICAgIH0KIApAQCAtODA5LDYgKzgyMiwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9p
ZCBjb3B5UG9zdFBhcnNlRGF0YUZyb20oQ29kZUJsb2NrKiBhbHRlcm5hdGl2ZSk7CiAgICAgICAg
IHZvaWQgY29weVBvc3RQYXJzZURhdGFGcm9tQWx0ZXJuYXRpdmUoKTsKICAgICAgICAgCisgICAg
ICAgIC8vIEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiBKSVR0aW5nIGtpY2tzIGluLCBp
biBhIG1peGVkIG1vZGUKKyAgICAgICAgLy8gZXhlY3V0aW9uIHdvcmxkLgorICAgICAgICAKKyAg
ICAgICAgdm9pZCBkb250SklUQW55dGltZVNvb24oKQorICAgICAgICB7CisgICAgICAgICAgICBt
X2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JE
b250SklUQW55dGltZVNvb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0
QWZ0ZXJXYXJtVXAoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50
ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKKyAg
ICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRTb29uKCkKKyAgICAgICAgeworICAg
ICAgICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9ySklUU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50MzJfdCBs
bGludEV4ZWN1dGVDb3VudGVyKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgLy8g
RnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIHRpZXJlZCBjb21waWxhdGlvbiBraWNrcyBp
bi4gVGhpcwogICAgICAgICAvLyBjb250cm9scyBib3RoIHdoZW4gdGhlIG9wdGltaXppbmcgY29t
cGlsZXIgaXMgaW52b2tlZCBhbmQgd2hlbiBPU1IKICAgICAgICAgLy8gZW50cnkgaGFwcGVucy4g
VHdvIHRyaWdnZXJzIGV4aXN0OiB0aGUgbG9vcCB0cmlnZ2VyIGFuZCB0aGUgcmV0dXJuCkBAIC0x
MDAxLDYgKzEwMzcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3Nob3VsZERp
c2NhcmRCeXRlY29kZTsKIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB2b2lkIGpp
dENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHZp
c2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGZp
bmFsaXplVW5jb25kaXRpb25hbGx5KCk7CiAgICAgICAgIApAQCAtMTAxMyw3ICsxMDUwLDYgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgdGFsbHlGcmVxdWVudEV4aXRTaXRlcygpIHsg
fQogI2VuZGlmCiAgICAgICAgIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09E
RV9TQU1QTElORykKICAgICAgICAgdm9pZCBkdW1wKEV4ZWNTdGF0ZSosIGNvbnN0IFZlY3RvcjxJ
bnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiBiZWdpbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6
Y29uc3RfaXRlcmF0b3ImKSBjb25zdDsKIAogICAgICAgICBDU3RyaW5nIHJlZ2lzdGVyTmFtZShF
eGVjU3RhdGUqLCBpbnQgcikgY29uc3Q7CkBAIC0xMDIzLDcgKzEwNTksNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdm9pZCBwcmludEdldEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRp
b24sIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3Ap
IGNvbnN0OwogICAgICAgICB2b2lkIHByaW50Q2FsbE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlv
biwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkg
Y29uc3Q7CiAgICAgICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0
aW9uLCBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9w
KSBjb25zdDsKLSNlbmRpZgogICAgICAgICB2b2lkIHZpc2l0U3RydWN0dXJlcyhTbG90VmlzaXRv
ciYsIEluc3RydWN0aW9uKiB2UEMpIGNvbnN0OwogICAgICAgICAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKQEAgLTEwODQsOSArMTExOSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRy
PFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZz
ZXQ7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4g
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBt
X2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBT
ZWdtZW50ZWRWZWN0b3I8TExJbnRDYWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxsTGlua0luZm9z
OworICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3
U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdMTEludENhbGxzOwog
I2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZv
PiBtX3N0cnVjdHVyZVN0dWJJbmZvczsKQEAgLTEwOTcsOSArMTEzNCwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNo
ZWNrOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1Nl
bnRpbmVsTm9kZTxDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2VuZGlmCi0jaWYg
RU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAg
ICAgICAgT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAgICAgIAor
I2VuZGlmCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFrUmVmZXJlbmNl
VHJhbnNpdGlvbiB7CiAgICAgICAgICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigpIHsgfQog
ICAgICAgICAgICAgCkBAIC0xMTYyLDEyICsxMjAwLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIE93blB0cjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAgIAorICAgICAg
ICBpbnQzMl90IG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAgICAgIGludDMy
X3QgbV9qaXRFeGVjdXRlQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZVN1
Y2Nlc3NDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFpbENvdW50ZXI7
CiAgICAgICAgIHVpbnQ4X3QgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAgICAgIHVp
bnQ4X3QgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKLQorICAgICAgICAKICAgICAgICAg
c3RydWN0IFJhcmVEYXRhIHsKICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgICAgIHB1YmxpYzoKQEAgLTEyNDMsNiArMTI4Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChF
eGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlz
b24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYp
OwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmly
dHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHSW50ZXJuYWwoKTsKICNlbmRpZgpAQCAtMTI3Nyw2
ICsxMzE4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0
dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2Rl
Kik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJs
b2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhE
RkdJbnRlcm5hbCgpOwogI2VuZGlmCkBAIC0xMzE0LDYgKzEzNTYsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRp
bWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2Jh
bERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGR0ludGVybmFsKCk7CiAjZW5kaWYKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5j
cHAJKHJldmlzaW9uIDEwNjQ4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9H
ZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjAgKzI3LDQ5IEBACiAjaW5j
bHVkZSAiR2V0QnlJZFN0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVk
ZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorR2V0QnlJZFN0
YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRC
bG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAg
VU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUlu
ZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJ
bnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5v
cGNvZGUgPT0gbGxpbnRfb3BfbWV0aG9kX2NoZWNrKQorICAgICAgICBpbnN0cnVjdGlvbisrOwor
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5n
ZXQoKTsKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMo
Tm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisgICAgCisg
ICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxE
YXRhKCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1
cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQs
IGZhbHNlKTsKKyAgICAKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhTaW1wbGVEaXJlY3QsIFN0
cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQsIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJu
IEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBm
YWxzZSk7CisjZW5kaWYKK30KKwogR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRl
Rm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRl
bnRpZmllciYgaWRlbnQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAg
IFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwog
I2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2Zp
bGVkQmxvY2stPm51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBj
b21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAg
ICAKICAgICAvLyBGaXJzdCBjaGVjayBpZiBpdCBtYWtlcyBlaXRoZXIgY2FsbHMsIGluIHdoaWNo
IGNhc2Ugd2Ugd2FudCB0byBiZSBzdXBlciBjYXJlZnVsLCBvcgogICAgIC8vIGlmIGl0J3Mgbm90
IHNldCBhdCBhbGwsIGluIHdoaWNoIGNhc2Ugd2UgcHVudC4KICAgICBTdHJ1Y3R1cmVTdHViSW5m
byYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mbyhieXRlY29kZUluZGV4KTsK
ICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5v
SW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBj
b21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAg
ICAKICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIGxpc3Q7CiAgICAgaW50IGxp
c3RTaXplOwpAQCAtNjAsMTggKzg5LDE5IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6
Y29tcHV0ZUZvcigKICAgICB9CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytp
KSB7CiAgICAgICAgIGlmICghbGlzdC0+bGlzdFtpXS5pc0RpcmVjdCkKLSAgICAgICAgICAgIHJl
dHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7
CisgICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBTdHJ1Y3R1cmVT
ZXQoKSwgbm90Rm91bmQsIHRydWUpOwogICAgIH0KICAgICAKICAgICAvLyBOZXh0IGNoZWNrIGlm
IGl0IHRha2VzIHNsb3cgY2FzZSwgaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIGtpbmQgb2Yg
Y2FyZWZ1bC4KICAgICBpZiAocHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0
ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgs
IFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVz
KFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7CiAgICAgCiAg
ICAgLy8gRmluYWxseSBmaWd1cmUgb3V0IGlmIHdlIGNhbiBkZXJpdmUgYW4gYWNjZXNzIHN0cmF0
ZWd5LgogICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OworICAgIHJlc3VsdC5tX3dhc1NlZW5JbkpJ
VCA9IHRydWU7CiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBh
Y2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24s
IFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxM
SW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAgICAg
Y2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6IHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUgPSBzdHViSW5mby51LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CkBA
IC0xMzAsNyArMTYwLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9y
KAogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZSAvLyBFTkFCTEUoSklUKQotICAgIHJl
dHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3Vu
ZCk7CisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0
KCksIG5vdEZvdW5kLCBmYWxzZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCShyZXZp
c2lvbiAxMDY0ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0
YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMCArNDksMTEgQEAgcHVibGljOgogICAgIHsK
ICAgICB9CiAgICAgCi0gICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0
dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQpCisgICAgR2V0QnlJZFN0YXR1cyhT
dGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBvZmZz
ZXQsIGJvb2wgd2FzU2VlbkluSklUKQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAg
ICwgbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNl
dCkKKyAgICAgICAgLCBtX3dhc1NlZW5JbkpJVCh3YXNTZWVuSW5KSVQpCiAgICAgewogICAgICAg
ICBBU1NFUlQoKHN0YXRlID09IFNpbXBsZURpcmVjdCkgPT0gKG9mZnNldCAhPSBub3RGb3VuZCkp
OwogICAgIH0KQEAgLTcwLDEwICs3MSwxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RydWN0dXJl
U2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsgfQogICAg
IHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAorICAgIGJv
b2wgd2FzU2VlbkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KKyAgICAK
IHByaXZhdGU6CisgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2Rl
QmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAg
U3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CiAgICAgc2l6
ZV90IG1fb2Zmc2V0OworICAgIGJvb2wgbV93YXNTZWVuSW5KSVQ7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVj
dGlvbi5oCShyZXZpc2lvbiAxMDY0ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogICAgIGNs
YXNzIFN0cnVjdHVyZUNoYWluOworICAgIHN0cnVjdCBMTEludENhbGxMaW5rSW5mbzsKICAgICBz
dHJ1Y3QgVmFsdWVQcm9maWxlOwogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE0Niw2ICsxNDcsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlvbiB7Cisg
ICAgICAgIEluc3RydWN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgdS5qc0NlbGwuY2xl
YXIoKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oT3Bjb2RlIG9w
Y29kZSkKICAgICAgICAgewogI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikK
QEAgLTE4Miw2ICsxODgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBJbnN0cnVjdGlv
bihQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVuYyA9
IGdldHRlckZ1bmM7IH0KICAgICAgICAgCisgICAgICAgIEluc3RydWN0aW9uKExMSW50Q2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8pIHsgdS5jYWxsTGlua0luZm8gPSBjYWxsTGlua0luZm87IH0K
KyAgICAgICAgCiAgICAgICAgIEluc3RydWN0aW9uKFZhbHVlUHJvZmlsZSogcHJvZmlsZSkgeyB1
LnByb2ZpbGUgPSBwcm9maWxlOyB9CiAKICAgICAgICAgdW5pb24gewpAQCAtMTkxLDcgKzE5OSw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1
cmVDaGFpbj4gc3RydWN0dXJlQ2hhaW47CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpT
Q2VsbD4ganNDZWxsOwogICAgICAgICAgICAgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0
dGVyRnVuYzsKKyAgICAgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm87CiAg
ICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7CisgICAgICAgICAgICB2b2lkKiBwb2lu
dGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5r
SW5mby5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDYWxsTGlua0luZm9faAor
I2RlZmluZSBMTEludENhbGxMaW5rSW5mb19oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1NlbnRpbmVs
TGlua2VkTGlzdC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOwor
CitzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8
TExJbnRDYWxsTGlua0luZm8+IHsKKyAgICBMTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAg
IH0KKyAgICAKKyAgICB+TExJbnRDYWxsTGlua0luZm8oKQorICAgIHsKKyAgICAgICAgaWYgKGlz
T25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBp
c0xpbmtlZCgpIHsgcmV0dXJuIGNhbGxlZTsgfQorICAgIAorICAgIHZvaWQgdW5saW5rKCkKKyAg
ICB7CisgICAgICAgIGNhbGxlZS5jbGVhcigpOworICAgICAgICBtYWNoaW5lQ29kZVRhcmdldCA9
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAg
ICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlv
bj4gY2FsbGVlOworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBsYXN0U2VlbkNhbGxlZTsK
KyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFjaGluZUNvZGVUYXJnZXQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIExMSW50Q2FsbExpbmtJbmZvX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExp
bmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDY0ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2
ICszNSwxMSBAQCBNZXRob2RDYWxsTGlua1N0YXR1cyBNZXRob2RDYWxsTGlua1N0YXR1CiAgICAg
VU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUlu
ZGV4KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgLy8g
Tk9URTogVGhpcyBkb2VzIG5vdCBoYXZlIGFuIExMSW50IGZhbGwtYmFjayBiZWNhdXNlIExMSW50
IGRvZXMgbm90IGRvIGFueSBtZXRob2QKKyAgICAvLyBjYWxsIGxpbmsgY2FjaGluZy4KKyAgICBp
ZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZvcygpKQorICAgICAg
ICByZXR1cm4gTWV0aG9kQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAKICAgICBNZXRob2RDYWxsTGlu
a0luZm8mIG1ldGhvZENhbGwgPSBwcm9maWxlZEJsb2NrLT5nZXRNZXRob2RDYWxsTGlua0luZm8o
Ynl0ZWNvZGVJbmRleCk7CiAgICAgCiAgICAgaWYgKCFtZXRob2RDYWxsLnNlZW4gfHwgIW1ldGhv
ZENhbGwuY2FjaGVkU3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9PcGNvZGUuaAkocmV2aXNpb24gMTA2NDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoLCA0KSBcCiAg
ICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbiwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9yZXBsYWNlLCA5KSBcCiAgICAg
ICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmljLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX2Rl
bF9ieV9pZCwgNCkgXApAQCAtMjAxLDYgKzIwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB0eXBlZGVmIGVudW0geyBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0lEX0VOVU0pIH0gT3Bj
b2RlSUQ7CiAgICAgI3VuZGVmIE9QQ09ERV9JRF9FTlVNCiAKKyAgICBjb25zdCBpbnQgbWF4T3Bj
b2RlTGVuZ3RoID0gOTsKICAgICBjb25zdCBpbnQgbnVtT3Bjb2RlSURzID0gb3BfZW5kICsgMTsK
IAogICAgICNkZWZpbmUgT1BDT0RFX0lEX0xFTkdUSFMoaWQsIGxlbmd0aCkgY29uc3QgaW50IGlk
IyNfbGVuZ3RoID0gbGVuZ3RoOwpAQCAtMjE3LDcgKzIyMCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoVkVSSUZZX09QQ09ERV9JRCk7CiAgICAgI3VuZGVm
IFZFUklGWV9PUENPREVfSUQKIAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQp
CiAjaWYgQ09NUElMRVIoUlZDVCkgfHwgQ09NUElMRVIoSU5URUwpCiAgICAgdHlwZWRlZiB2b2lk
KiBPcGNvZGU7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTA2NDg4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NywyNyArMjcsNjkgQEAKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAKICNpbmNsdWRlICJD
b2RlQmxvY2suaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAi
U3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKIAogbmFtZXNwYWNlIEpT
QyB7CiAKK1B1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXIm
IGlkZW50KQoreworICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURf
UEFSQU0oYnl0ZWNvZGVJbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CisKKyAgICBTdHJ1Y3R1cmUq
IHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOworICAgIGlmICgh
c3RydWN0dXJlKQorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAw
LCAwLCAwLCBub3RGb3VuZCk7CisgICAgCisgICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2Rl
ID09IGxsaW50X29wX3B1dF9ieV9pZCkgeworICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0
dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgICAgICBp
ZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMo
Tm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICAKKyAgICAgICAgcmV0
dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlUmVwbGFjZSwgc3RydWN0dXJlLCAwLCAwLCBvZmZzZXQp
OworICAgIH0KKyAgICAKKyAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxp
bnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0CisgICAgICAgICAgIHx8IGluc3RydWN0
aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7
CisgICAgCisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls2XS51LnN0
cnVjdHVyZS5nZXQoKTsKKyAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBpbnN0cnVjdGlvbls3
XS51LnN0cnVjdHVyZUNoYWluLmdldCgpOworICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUpOworICAg
IEFTU0VSVChjaGFpbik7CisgICAgCisgICAgc2l6ZV90IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+
Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0
ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9u
LCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgCisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2lt
cGxlVHJhbnNpdGlvbiwgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNoYWluLCBvZmZzZXQpOwor
I2Vsc2UKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBu
b3RGb3VuZCk7CisjZW5kaWYKK30KKwogUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwg
SWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwog
ICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQp
OwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXBy
b2ZpbGVkQmxvY2stPm51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVy
biBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsK
KyAgICAKICAgICBpZiAocHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNv
ZGVJbmRleCkpCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAs
IDAsIDAsIG5vdEZvdW5kKTsKICAgICAKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8g
PSBwcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0
dWJJbmZvLnNlZW4pCi0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24s
IDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJv
ZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgIAogICAgIHN3aXRjaCAoc3R1
YkluZm8uYWNjZXNzVHlwZSkgewogICAgIGNhc2UgYWNjZXNzX3Vuc2V0OgotICAgICAgICByZXR1
cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAg
ICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgs
IGlkZW50KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6IHsK
ICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9i
amVjdFN0cnVjdHVyZS0+Z2V0KApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMDY0ODgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2
ICs5Myw4IEBAIHB1YmxpYzoKICAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9v
ZmZzZXQ7IH0KICAgICAKIHByaXZhdGU6CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0
ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVy
Jik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0
dXJlOwogICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAkocmV2aXNpb24gMTA2NDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIgogI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5s
aW5lcy5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKQEAgLTE1MCwyNiArMTUxLDE2IEBAIHZvaWQg
UmVzb2x2ZVJlc3VsdDo6Y2hlY2tWYWxpZGl0eSgpCiB9CiAjZW5kaWYKIAotI2lmbmRlZiBOREVC
VUcKIHN0YXRpYyBib29sIHNfZHVtcHNHZW5lcmF0ZWRDb2RlID0gZmFsc2U7Ci0jZW5kaWYKIAog
dm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6c2V0RHVtcHNHZW5lcmF0ZWRDb2RlKGJvb2wgZHVtcHNH
ZW5lcmF0ZWRDb2RlKQogewotI2lmbmRlZiBOREVCVUcKICAgICBzX2R1bXBzR2VuZXJhdGVkQ29k
ZSA9IGR1bXBzR2VuZXJhdGVkQ29kZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGR1bXBzR2Vu
ZXJhdGVkQ29kZSk7Ci0jZW5kaWYKIH0KIAogYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNH
ZW5lcmF0ZWRDb2RlKCkKIHsKLSNpZm5kZWYgTkRFQlVHCiAgICAgcmV0dXJuIHNfZHVtcHNHZW5l
cmF0ZWRDb2RlOwotI2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKIH0KIAogSlNPYmpl
Y3QqIEJ5dGVjb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZSgpCkBAIC0xODIsMTAgKzE3Myw4IEBAIEpT
T2JqZWN0KiBCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogCiAgICAgbV9jb2RlQmxvY2st
PnNldEluc3RydWN0aW9uQ291bnQobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7
CiAKLSNpZm5kZWYgTkRFQlVHCiAgICAgaWYgKHNfZHVtcHNHZW5lcmF0ZWRDb2RlKQogICAgICAg
ICBtX2NvZGVCbG9jay0+ZHVtcChtX3Njb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpKTsKLSNlbmRpZgogCiAgICAgaWYgKChtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiAh
bV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSAmJiAhbV9jb2RlQmxvY2stPnVzZXNB
cmd1bWVudHMoKSkgfHwgbV9jb2RlVHlwZSA9PSBFdmFsQ29kZSkKICAgICAgICAgc3ltYm9sVGFi
bGUoKS5jbGVhcigpOwpAQCAtMTMwNSw5ICsxMjk0LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIG1fY29kZUJsb2Nr
LT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0j
aWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVz
b2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICAgICAg
Ym9vbCBkeW5hbWljID0gcmVzb2x2ZVJlc3VsdC5pc0R5bmFtaWMoKSAmJiByZXNvbHZlUmVzdWx0
LmRlcHRoKCk7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9w
Y29kZShkeW5hbWljID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xv
YmFsKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0x
NDExLDkgKzEzOTgsNiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29s
CiAgICAgICAgIHJldHVybiBiYXNlRHN0OwogICAgIH0KIAotCi0KLQogICAgIFZhbHVlUHJvZmls
ZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9yZXNvbHZlX3dpdGhfYmFzZSk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2VEc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChwcm9wRHN0LT5pbmRleCgpKTsKQEAgLTE1MjEsOSArMTUwNSw3IEBAIHZv
aWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNZXRob2RDaGVjaygKIAogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCog
YmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJF
VEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3Ry
dWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKIAogICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9
IGVtaXRQcm9maWxlZE9wY29kZShvcF9nZXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChkc3QtPmluZGV4KCkpOwpAQCAtMTU0OSw5ICsxNTMxLDcgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBcgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVy
dHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBt
X2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5z
aXplKCkpOwotI2VuZGlmCiAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTU2Nyw5ICsxNTQ3LDcgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogCiBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29u
c3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJM
RShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgCiAgICAgZW1pdE9wY29k
ZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgp
KTsKQEAgLTE4NTAsNyArMTgyOCwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdENhbGwoCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBm
dW5jCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMoKSk7IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGNhbGxBcmd1bWVudHMucmVnaXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYg
RU5BQkxFKExMSU5UKQorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRk
TExJbnRDYWxsTGlua0luZm8oKSk7CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgw
KTsKKyNlbmRpZgogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9
IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0
UHJvZmlsZWRPcGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKQEAgLTE5NTQsNyArMTkzNiwxMSBA
QCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7IC8vIGFy
Z0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0ZXJP
ZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0luZm8oKSk7Cisj
ZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAg
ICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfY2FsbF9w
dXRfcmVzdWx0KTsKQEAgLTIyMTUsNyArMjIwMSwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdENhdGNoCiB7CiAgICAgbV91c2VzRXhjZXB0aW9ucyA9IHRydWU7CiAjaWYg
RU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSGFuZGxlckluZm8gaW5mbyA9IHsg
c3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
LCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0aW9uTGFi
ZWwoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfY2F0Y2gpKSkgfTsKKyNlbHNlCiAgICAgSGFuZGxl
ckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwg
Q29kZUxvY2F0aW9uTGFiZWwoKSB9OworI2VuZGlmCiAjZWxzZQogICAgIEhhbmRsZXJJbmZvIGlu
Zm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygp
LnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGggfTsKICNlbmRp
ZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAJKHJldmlzaW9uIDEwNjQ4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Qnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDQsOSArNjA0LDcgQEAgcHJp
dmF0ZToKICAgICB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShub2RlSW5kZXgpOwogICAgICAgICAK
LSAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsK
LSAgICAgICAgQVNTRVJUKHByb2ZpbGUpOwotICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rp
b24gPSBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgUHJlZGlj
dGVkVHlwZSBwcmVkaWN0aW9uID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT52
YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7CiAj
aWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgICAgICBwcmludGYoIkR5bmFtaWMgW0Al
dSwgYmMjJXVdIHByZWRpY3Rpb246ICVzXG4iLCBub2RlSW5kZXgsIGJ5dGVjb2RlSW5kZXgsIHBy
ZWRpY3Rpb25Ub1N0cmluZyhwcmVkaWN0aW9uKSk7CiAjZW5kaWYKQEAgLTEwNDEsNiArMTAzOSw5
IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKGJvb2wKICAgICAKICAgICAv
LyBJZiB3ZSBnZXQgaGVyZSB0aGVuIGl0IGxvb2tzIGxpa2Ugd2Ugc2hvdWxkIGRlZmluaXRlbHkg
aW5saW5lIHRoaXMgY29kZS4gUHJvY2VlZAogICAgIC8vIHdpdGggcGFyc2luZyB0aGUgY29kZSB0
byBnZXQgYnl0ZWNvZGUsIHNvIHRoYXQgd2UgY2FuIHRoZW4gcGFyc2UgdGhlIGJ5dGVjb2RlLgor
ICAgIC8vIE5vdGUgdGhhdCBpZiBMTEludCBpcyBlbmFibGVkLCB0aGUgYnl0ZWNvZGUgd2lsbCBh
bHdheXMgYmUgYXZhaWxhYmxlLiBBbHNvIG5vdGUKKyAgICAvLyB0aGF0IGlmIExMSW50IGlzIGVu
YWJsZWQsIHdlIG1heSBpbmxpbmUgYSBjb2RlIGJsb2NrIHRoYXQgaGFzIG5ldmVyIGJlZW4gSklU
dGVkCisgICAgLy8gYmVmb3JlIQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxv
Y2tDYWNoZS5nZXQoQ29kZUJsb2NrS2V5KGV4ZWN1dGFibGUsIGtpbmQpLCBleHBlY3RlZEZ1bmN0
aW9uLT5zY29wZSgpKTsKICAgICBpZiAoIWNvZGVCbG9jaykKICAgICAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTc0MSw3ICsxNzQyLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1
bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9j
aywgbV9jdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobWV0aG9k
Q2FsbFN0YXR1cy5pc1NldCgpCi0gICAgICAgICAgICAgICAgJiYgIWdldEJ5SWRTdGF0dXMuaXNT
ZXQoKQorICAgICAgICAgICAgICAgICYmICFnZXRCeUlkU3RhdHVzLndhc1NlZW5JbkpJVCgpCiAg
ICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhp
dFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSkgewogICAgICAgICAgICAgICAgIC8vIEl0
J3MgbW9ub21vcnBoaWMgYXMgZmFyIGFzIHdlIGNhbiB0ZWxsLCBzaW5jZSB0aGUgbWV0aG9kX2No
ZWNrIHdhcyBsaW5rZWQKICAgICAgICAgICAgICAgICAvLyBidXQgdGhlIHNsb3cgcGF0aCAoaS5l
LiB0aGUgbm9ybWFsIGdldF9ieV9pZCkgbmV2ZXIgZmlyZWQuCkBAIC0xODEwLDcgKzE4MTEsOSBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAKICAgICAgICAgICAg
IE5FWFRfT1BDT0RFKG9wX2dldF9ieV9pZCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9w
dXRfYnlfaWQ6IHsKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbDogewogICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1
cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IGJh
c2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICB1
bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVy
UmVtYXBbY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZF07CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDEwNjQ4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExMSw2ICsxMTEsOCBAQCBpbmxpbmUgYm9vbCBjYW5Db21waWxlT3Bjb2RlKE9wY29k
ZUlEIG9wCiAgICAgY2FzZSBvcF9wdXRfc2NvcGVkX3ZhcjoKICAgICBjYXNlIG9wX2dldF9ieV9p
ZDoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX2RpcmVjdDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAg
ICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6CiAg
ICAgY2FzZSBvcF9qbXA6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4
aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMDY0ODgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDIxIEBAIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQogICAgIHVp
bnQzMl90IGV4aXRJbmRleCA9IGdsb2JhbERhdGEtPm9zckV4aXRJbmRleDsKICAgICBPU1JFeGl0
JiBleGl0ID0gY29kZUJsb2NrLT5vc3JFeGl0KGV4aXRJbmRleCk7CiAgICAgCisgICAgLy8gTWFr
ZSBzdXJlIGFsbCBjb2RlIG9uIG91ciBpbmxpbmUgc3RhY2sgaXMgSklUIGNvbXBpbGVkLiBUaGlz
IGlzIG5lY2Vzc2FyeSBzaW5jZQorICAgIC8vIHdlIG1heSBvcHQgdG8gaW5saW5lIGEgY29kZSBi
bG9jayBldmVuIGJlZm9yZSBpdCBoYWQgZXZlciBiZWVuIGNvbXBpbGVkIGJ5IHRoZQorICAgIC8v
IEpJVCwgYnV0IG91ciBPU1IgZXhpdCBpbmZyYXN0cnVjdHVyZSBjdXJyZW50bHkgb25seSB3b3Jr
cyBpZiB0aGUgdGFyZ2V0IG9mIHRoZQorICAgIC8vIE9TUiBleGl0IGlzIEpJVCBjb2RlLiBUaGlz
IGNvdWxkIGJlIGNoYW5nZWQgc2luY2UgdGhlcmUgaXMgbm90aGluZyBwYXJ0aWN1bGFybHkKKyAg
ICAvLyBoYXJkIGFib3V0IGRvaW5nIGFuIE9TUiBleGl0IGludG8gdGhlIGludGVycHJldGVyLCBi
dXQgZm9yIG5vdyB0aGlzIHNlZW1zIHRvIG1ha2UKKyAgICAvLyBzZW5zZSBpbiB0aGF0IGlmIHdl
J3JlIE9TUiBleGl0aW5nIGZyb20gaW5saW5lZCBjb2RlIG9mIGEgREZHIGNvZGUgYmxvY2ssIHRo
ZW4KKyAgICAvLyBwcm9iYWJseSBpdCdzIGEgZ29vZCBzaWduIHRoYXQgdGhlIHRoaW5nIHdlJ3Jl
IGV4aXRpbmcgaW50byBpcyBob3QuIEV2ZW4gbW9yZQorICAgIC8vIGludGVyZXN0aW5nbHksIHNp
bmNlIHRoZSBjb2RlIHdhcyBpbmxpbmVkLCBpdCBtYXkgbmV2ZXIgb3RoZXJ3aXNlIGdldCBKSVQK
KyAgICAvLyBjb21waWxlZCBzaW5jZSB0aGUgYWN0IG9mIGlubGluaW5nIGl0IG1heSBlbnN1cmUg
dGhhdCBpdCBvdGhlcndpc2UgbmV2ZXIgcnVucy4KKyAgICBmb3IgKENvZGVPcmlnaW4gY29kZU9y
aWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luOyBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsgY29k
ZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpIHsKKyAgICAgICAg
c3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJh
bWUtPmV4ZWN1dGFibGUuZ2V0KCkpCisgICAgICAgICAgICAtPmJhc2VsaW5lQ29kZUJsb2NrRm9y
KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5pc0NhbGwgPyBDb2RlRm9yQ2FsbCA6IENvZGVG
b3JDb25zdHJ1Y3QpCisgICAgICAgICAgICAtPmppdENvbXBpbGUoKmdsb2JhbERhdGEpOworICAg
IH0KKyAgICAKICAgICBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeSA9IDA7CiAgICAgaWYg
KGV4aXQubV9yZWNvdmVyeUluZGV4KQogICAgICAgICByZWNvdmVyeSA9ICZjb2RlQmxvY2stPnNw
ZWN1bGF0aW9uUmVjb3ZlcnkoZXhpdC5tX3JlY292ZXJ5SW5kZXggLSAxKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTA2NDg4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkRGR09TUkV4aXQuaCIKICNpbmNsdWRlICJERkdSZXBhdGNoLmgiCisjaW5jbHVkZSAiSG9z
dENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUg
IklubGluZUFTTS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC02NzMsNTAgKzY3NCw2
IEBAIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHIKICAgICByZXR1cm4g
SlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBK
U1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BF
UkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVS
QVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7Ci0K
LSNpZiBDUFUoWDg2XzY0KQotYXNtICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAg
ICAibW92IC00MCglcjEzKSwgJXIxM1xuIgotICAgICJtb3YgJXIxMywgJXJkaVxuIgotICAgICJq
bXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhF
eGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoWDg2KQotYXNtICgKLSIuZ2xvYmwgIiBTWU1C
T0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgotICAgICJtb3YgJWVk
aSwgNCglZXNwKVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoQVJNX1RI
VU1CMikKLWFzbSAoCi0iLnRleHQiICJcbiIKLSIuYWxpZ24gMiIgIlxuIgotIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotIi50aHVtYiIgIlxuIgotIi50aHVtYl9mdW5jICIg
VEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RS
SU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgImxkciByNSwgW3I1LCAj
LTQwXSIgIlxuIgotICAgICJjcHkgcjAsIHI1IiAiXG4iCi0gICAgImIgIiBTWU1CT0xfU1RSSU5H
X1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7
Ci0jZW5kaWYKLQotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVy
blZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOwotICAgIAotICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQotCiBz
dGF0aWMgdm9pZCogaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVl
IGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSog
ZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTA2NDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzNyw3ICs4MzcsNyBAQCB2b2lkIEhl
YXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnCiAgICAgICAgIHNldEhpZ2hXYXRlck1h
cmsobWF4KHByb3BvcnRpb25hbEJ5dGVzLCBtX21pbkJ5dGVzUGVyQ3ljbGUpKTsKICAgICB9CiAg
ICAgSkFWQVNDUklQVENPUkVfR0NfRU5EKCk7Ci0KKyAgICAKICAgICAoKm1fYWN0aXZpdHlDYWxs
YmFjaykoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24g
MTA2NDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFs
RGF0YTsKICAgICBjbGFzcyBKU1ZhbHVlOwogICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQXJndW1l
bnRCdWZmZXI7CiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlOwogICAgIGNsYXNzIFVTdHJpbmc7CkBA
IC0xMzUsMTEgKzEzNiwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBnZXRDb25z
ZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAogICAgIHBy
aXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRT
cGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQg
Y2xhc3MgQnVtcFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7Ci0gICAg
ICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAKICAgICAgICAgc2l6ZV90IHdhdGVyTWFyaygp
OwogICAgICAgICBzaXplX3QgaGlnaFdhdGVyTWFyaygpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCShyZXZpc2lvbiAxMDY0ODgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNyAr
MzA0LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKAogI2VuZGlm
CiAKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwotCisgICAgCiAgICAgaWYgKGlz
SlNTdHJpbmcoY2VsbCkpIHsKICAgICAgICAgSlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4oY29uc3Rf
Y2FzdDxKU0NlbGwqPihjZWxsKSwgdmlzaXRvcik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMTA2NDg4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5
KQpAQCAtNDAsNiArNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEhlYXA7CiBjbGFzcyBK
U0NlbGw7CiBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CitjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiBjbGFzcyBXZWFrR0NIYW5kbGU7CiBjbGFzcyBTbG90VmlzaXRvcjsKIApAQCAtODcs
NiArODgsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBmcmVlQmxvY2tzKE1hcmtlZEJsb2NrKiBoZWFk
KTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2UoU2l6ZUNs
YXNzJik7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVIZWxwZXIoTWFya2VkU3BhY2U6OlNpemVDbGFz
cyYpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3MmKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJl
dmlzaW9uIDEwNjQ4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDYgKzEyMiw5IEBAIG5hbWVzcGFjZSBKU0Mg
IHsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIEluc3RydWN0aW9uKiByZXR1cm5W
UEMoKSBjb25zdCB7IHJldHVybiB0aGlzW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdLnZQQygpOyB9
CiAjZW5kaWYKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIEluc3RydWN0aW9uKiBjdXJyZW50
VlBDKCkgY29uc3QgeyByZXR1cm4gYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4odGhpc1tSZWdp
c3RlckZpbGU6OkFyZ3VtZW50Q291bnRdLnRhZygpKTsgfQorI2VuZGlmCiAKICAgICAgICAgdm9p
ZCBzZXRDYWxsZXJGcmFtZShDYWxsRnJhbWUqIGNhbGxlckZyYW1lKSB7IHN0YXRpY19jYXN0PFJl
Z2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZV0gPSBjYWxsZXJGcmFtZTsg
fQogICAgICAgICB2b2lkIHNldFNjb3BlQ2hhaW4oU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4p
IHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OlNjb3BlQ2hhaW5d
ID0gc2NvcGVDaGFpbjsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMDY0ODgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02OSw3ICs2OSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjZW5kaWYKIAotI2RlZmluZSBXVEZf
VVNFX0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQgKEVOQUJMRShDT01QVVRFRF9HT1RPX0lO
VEVSUFJFVEVSKSAmJiAhZGVmaW5lZChfX2xsdm1fXykpCisjZGVmaW5lIFdURl9VU0VfR0NDX0NP
TVBVVEVEX0dPVE9fV09SS0FST1VORCAoKEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KSB8fCBFTkFCTEUoTExJTlQpKSAmJiAhZGVmaW5lZChfX2xsdm1fXykpCiAKIHVzaW5nIG5hbWVz
cGFjZSBzdGQ7CiAKQEAgLTU0NywxNyArNTQ3LDQzIEBAIEludGVycHJldGVyOjpJbnRlcnByZXRl
cigpCiB7CiB9CiAKLXZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQp
CitJbnRlcnByZXRlcjo6fkludGVycHJldGVyKCkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09U
T19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fZW5hYmxlZCkKKyAg
ICAgICAgZGVsZXRlW10gbV9vcGNvZGVUYWJsZTsKKyNlbmRpZgorfQorCit2b2lkIEludGVycHJl
dGVyOjppbml0aWFsaXplKExMSW50OjpEYXRhKiBsbGludERhdGEsIGJvb2wgY2FuVXNlSklUKQor
eworICAgIFVOVVNFRF9QQVJBTShsbGludERhdGEpOworICAgIFVOVVNFRF9QQVJBTShjYW5Vc2VK
SVQpOworI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJ
TlQpCisjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorICAgIC8vIEhhdmlu
ZyBMTEludCBlbmFibGVkLCBidXQgbm90IGJlaW5nIGFibGUgdG8gdXNlIHRoZSBKSVQsIGFuZCBu
b3QgaGF2aW5nCisgICAgLy8gYSBjb21wdXRlZCBnb3RvIGludGVycHJldGVyLCBpcyBub3Qgc3Vw
cG9ydGVkLiBOb3QgYmVjYXVzZSB3ZSBjYW5ub3QKKyAgICAvLyBzdXBwb3J0IGl0LCBidXQgYmVj
YXVzZSBJIGRlY2lkZWQgdG8gZHJhdyB0aGUgbGluZSBhdCB0aGUgbnVtYmVyIG9mCisgICAgLy8g
cGVybXV0YXRpb25zIG9mIGV4ZWN1dGlvbiBlbmdpbmVzIHRoYXQgSSB3YW50ZWQgdGhpcyBjb2Rl
IHRvIGdyb2suCisgICAgQVNTRVJUKGNhblVzZUpJVCk7CisjZW5kaWYKICAgICBpZiAoY2FuVXNl
SklUKSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbGxpbnRE
YXRhLT5vcGNvZGVNYXAoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJ
RHM7ICsraSkKKyAgICAgICAgICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNvZGVUYWJsZVtp
XSwgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsKKyNlbHNlCiAgICAgICAgIC8vIElmIHRoZSBK
SVQgaXMgcHJlc2VudCwgZG9uJ3QgdXNlIGp1bXAgZGVzdGluYXRpb25zIGZvciBvcGNvZGVzLgog
ICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkg
ewogICAgICAgICAgICAgT3Bjb2RlIG9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8dWludHB0cl90PihpKSk7CiAgICAgICAgICAgICBtX29wY29kZVRhYmxlW2ldID0gb3Bj
b2RlOwogICAgICAgICB9CisjZW5kaWYKICAgICB9IGVsc2UgeworI2lmIEVOQUJMRShMTElOVCkK
KyAgICAgICAgbV9vcGNvZGVUYWJsZSA9IG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXTsKKyNlbmRp
ZgogICAgICAgICBwcml2YXRlRXhlY3V0ZShJbml0aWFsaXplQW5kUmV0dXJuLCAwLCAwKTsKICAg
ICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpCkBA
IC01NjYsNyArNTkyLDYgQEAgdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShib29sIGNhblVz
ZQogICAgICAgICBtX2VuYWJsZWQgPSB0cnVlOwogICAgIH0KICNlbHNlCi0gICAgVU5VU0VEX1BB
UkFNKGNhblVzZUpJVCk7CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fZW5hYmxlZCA9
IHRydWU7CiAjZWxzZQpAQCAtNjY3LDkgKzY5MiwxMSBAQCB2b2lkIEludGVycHJldGVyOjpkdW1w
UmVnaXN0ZXJzKENhbGxGcmFtCiAKIGJvb2wgSW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKE9wY29kZSBv
cGNvZGUpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5B
QkxFKExMSU5UKQogICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICByZXR1cm4gb3Bjb2RlID49
IDAgJiYgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29k
ZSkpIDw9IG9wX2VuZDsKKyNlbmRpZgogICAgIHJldHVybiBvcGNvZGUgIT0gSGFzaFRyYWl0czxP
cGNvZGU+OjplbXB0eVZhbHVlKCkKICAgICAgICAgJiYgIUhhc2hUcmFpdHM8T3Bjb2RlPjo6aXNE
ZWxldGVkVmFsdWUob3Bjb2RlKQogICAgICAgICAmJiBtX29wY29kZUlEVGFibGUuY29udGFpbnMo
b3Bjb2RlKTsKQEAgLTcyNiwxMSArNzUzLDExIEBAIE5FVkVSX0lOTElORSBib29sIEludGVycHJl
dGVyOjp1bndpbmRDYWwKICAgICAvLyBoYXZlIHRvIHN1YnRyYWN0IDEuCiAjaWYgRU5BQkxFKEpJ
VCkgJiYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIGlmIChjYWxsZXJGcmFtZS0+Z2xvYmFsRGF0
YSgpLmNhblVzZUpJVCgpKQotICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0
ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJl
dHVyblBDKCkpOwogICAgIGVsc2UKICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbGlmIEVOQUJM
RShKSVQpCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNh
bGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5
dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2Vsc2UK
ICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1l
LT5yZXR1cm5WUEMoKSkgLSAxOwogI2VuZGlmCkBAIC0zMzI1LDYgKzMzNTIsOCBAQCBza2lwX2lk
X2N1c3RvbV9zZWxmOgogI2lmIFVTRShHQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EKQogICAg
ICAgc2tpcF9wdXRfYnlfaWQ6CiAjZW5kaWYKKyAgICBERUZJTkVfT1BDT0RFKG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX2RpcmVjdCkKKyAgICBERUZJTkVfT1BDT0RFKG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbCkKICAgICBERUZJTkVfT1BDT0RFKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
KSB7CiAgICAgICAgIC8qIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uIGJhc2UocikgcHJvcGVydHko
aWQpIHZhbHVlKHIpIG9sZFN0cnVjdHVyZShzSUQpIG5ld1N0cnVjdHVyZShzSUQpIHN0cnVjdHVy
ZUNoYWluKGNoYWluKSBvZmZzZXQobikgZGlyZWN0KGIpCiAgICAgICAgICAKQEAgLTUxNTcsMTAg
KzUxODYsMTAgQEAgdm9pZCBJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKENhbAogICAg
ICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2Fs
bEZyYW1lLT5yZXR1cm5WUEMoKSk7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBlbHNlCi0gICAgICAg
IGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJh
bWUtPnJldHVyblBDKCkpOworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9j
ay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAj
ZW5kaWYKICNlbHNlCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBj
YWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJl
dHVyblBDKCkpOwogI2VuZGlmCiAgICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVCbG9jay0+bGlu
ZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAgc291cmNl
SUQgPSBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJ
KHJldmlzaW9uIDEwNjQ4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
SlNDZWxsLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisj
aW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUmVn
aXN0ZXJGaWxlLmgiCiAKQEAgLTQ1LDYgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNzIEpTRnVuY3Rpb247CiAgICAgY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNs
YXNzIFByb2dyYW1FeGVjdXRhYmxlOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogICAgIGNsYXNzIFNj
b3BlQ2hhaW5Ob2RlOwpAQCAtMTAwLDE5ICsxMDIsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBjbGFzcyBJbnRlcnByZXRlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwot
ICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgICAgICBmcmllbmQgY2xhc3MgQ2FjaGVkQ2Fs
bDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIEpJVDsKICAgICBwdWJsaWM6CiAgICAgICAgIEludGVycHJldGVyKCk7Cisg
ICAgICAgIH5JbnRlcnByZXRlcigpOwogICAgICAgICAKLSAgICAgICAgdm9pZCBpbml0aWFsaXpl
KGJvb2wgY2FuVXNlSklUKTsKKyAgICAgICAgdm9pZCBpbml0aWFsaXplKExMSW50OjpEYXRhKiwg
Ym9vbCBjYW5Vc2VKSVQpOwogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlKCkg
eyByZXR1cm4gbV9yZWdpc3RlckZpbGU7IH0KICAgICAgICAgCiAgICAgICAgIE9wY29kZSBnZXRP
cGNvZGUoT3Bjb2RlSUQgaWQpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRp
YWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFC
TEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICAg
ICAgcmV0dXJuIG1fb3Bjb2RlVGFibGVbaWRdOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBp
ZDsKQEAgLTEyMiw3ICsxMjYsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9wY29kZUlE
IGdldE9wY29kZUlEKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VS
VChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7
CisgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVJRFRhYmxlLmdldChvcGNvZGUpOworI2VsaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgICAgICBBU1NFUlQoaXNP
cGNvZGUob3Bjb2RlKSk7CiAgICAgICAgICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgICAg
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+
KG9wY29kZSkpOwpAQCAtMTMyLDYgKzEzOSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHJldHVybiBvcGNvZGU7CiAjZW5kaWYKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
Ym9vbCBlbmFibGVkKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fZW5hYmxlZDsK
KyAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIApAQCAtMTk5LDcg
KzIxMSwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBSZWdpc3RlckZpbGUgbV9yZWdp
c3RlckZpbGU7CiAgICAgICAgIAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KQorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgT3Bjb2RlKiBtX29wY29kZVRhYmxlOyAvLyBN
YXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCisgICAgICAgIEhhc2hNYXA8T3Bj
b2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJ
RCBmb3IgZGVjb21waWxpbmcKKyNlbGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KQogICAgICAgICBPcGNvZGUgbV9vcGNvZGVUYWJsZVtudW1PcGNvZGVJRHNdOyAvLyBNYXBzIE9w
Y29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCiAgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBP
cGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3Ig
ZGVjb21waWxpbmcKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkocmV2aXNpb24gMTA2NDg4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw2ICszOSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgQ29uc2VydmF0aXZl
Um9vdHM7CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAKICAgICBjbGFzcyBSZWdpc3RlckZpbGUgewogICAgICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShSZWdpc3RlckZpbGUpOwpAQCAtODEsNiArODIsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgZ3Jvd1Nsb3dDYXNlKFJl
Z2lzdGVyKik7CiAgICAgICAgIHZvaWQgcmVsZWFzZUV4Y2Vzc0NhcGFjaXR5KCk7CiAgICAgICAg
IHZvaWQgYWRkVG9Db21taXR0ZWRCeXRlQ291bnQobG9uZyk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIb3N0Q2Fs
bFJldHVyblZhbHVlLmgiCisKKyNpZiBDT01QSUxFUihHQ0MpCisKKyNpbmNsdWRlICJDYWxsRnJh
bWUuaCIKKyNpbmNsdWRlICJJbmxpbmVBU00uaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTVmFsdWVJbmxpbmVNZXRob2RzLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExf
UkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShF
eGVjU3RhdGUqKTsKKworI2lmIENQVShYODZfNjQpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9T
VFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCisgICAgIm1vdiAlcjEzLCAl
cmRpXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShYODYpCithc20gKAor
Ii5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElE
RV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4i
CisgICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVM
T0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNl
bGlmIENQVShBUk1fVEhVTUIyKQorYXNtICgKKyIudGV4dCIgIlxuIgorIi5hbGlnbiAyIiAiXG4i
CisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitI
SURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCisiLnRodW1iIiAiXG4iCisi
LnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJc
biIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAi
bGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCisgICAgImNweSByMCwgcjUiICJcbiIKKyAgICAiYiAi
IFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNT
dGF0ZSkgIlxuIgorKTsKKyNlbmRpZgorCitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1Rf
Q0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMt
Pmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
SlNDCisKKyNlbmRpZiAvLyBDT01QSUxFUihHQ0MpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKyNkZWZpbmUgSG9zdENhbGxS
ZXR1cm5WYWx1ZV9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKy8vIFVuZm9ydHVu
YXRlbHkgdGhpcyBvbmx5IHdvcmtzIG9uIEdDQy1saWtlIGNvbXBpbGVycy4gQW5kIGl0J3MgY3Vy
cmVudGx5IG9ubHkgdXNlZAorLy8gYnkgTExJbnQgYW5kIERGRywgd2hpY2ggYWxzbyBhcmUgcmVz
dHJpY3RlZCB0byBHQ0MtbGlrZSBjb21waWxlcnMuIFdlIHNob3VsZAorLy8gcHJvYmFibHkgZml4
IHRoYXQgYXQgc29tZSBwb2ludC4KKyNpZiBDT01QSUxFUihHQ0MpCisKKyNpZiBDQUxMSU5HX0NP
TlZFTlRJT05fSVNfU1REQ0FMTAorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElP
TiBDREVDTAorI2Vsc2UKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04KKyNl
bmRpZgorCituYW1lc3BhY2UgSlNDIHsKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9D
QUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOworfQorCisj
ZW5kaWYgLy8gQ09NUElMRVIoR0NDKQorCisjZW5kaWYgLy8gSG9zdENhbGxSZXR1cm5WYWx1ZV9o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEwNjQ4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1
LDYgKzMyNSw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAg
REVGSU5FX09QKG9wX3Byb2ZpbGVfd2lsbF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVz
aF9uZXdfc2NvcGUpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX3Njb3BlKQorICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQp
CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaW5kZXgpCiAgICAgICAgIERFRklORV9PUChv
cF9wdXRfYnlfdmFsKQpAQCAtNDg2LDYgKzQ4OCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGls
ZVNsb3dDYXNlcygpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9X
Q0FTRV9PUChvcF9wcmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAg
ICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9T
TE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
cmVzb2x2ZV9nbG9iYWwpCkBAIC01MjUsNiArNTI5LDEwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29t
cGlsZVNsb3dDYXNlcygpCiAKIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBm
dW5jdGlvbkVudHJ5QXJpdHlDaGVjaykKIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQor
ICAgIHByaW50ZigiQ29tcGlsaW5nIEpJVCBjb2RlIVxuIik7CisjZW5kaWYKKyAgICAKICNpZiBF
TkFCTEUoVkFMVUVfUFJPRklMRVIpCiAgICAgbV9jYW5CZU9wdGltaXplZCA9IG1fY29kZUJsb2Nr
LT5jYW5Db21waWxlV2l0aERGRygpOwogI2VuZGlmCkBAIC02ODksOCArNjk3LDEyIEBAIEpJVENv
ZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAgICAgICAgaW5mby5jYWxsUmV0
dXJuTG9jYXRpb24gPSBtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8obV9tZXRob2RDYWxs
Q29tcGlsYXRpb25JbmZvW2ldLnByb3BlcnR5QWNjZXNzSW5kZXgpLmNhbGxSZXR1cm5Mb2NhdGlv
bjsKICAgICB9CiAKLSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAobV9jYW5CZU9wdGltaXpl
ZCkgeworI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fY2Fu
QmVPcHRpbWl6ZWQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHx8IHRydWUKKyNlbmRpZgor
ICAgICAgICApIHsKICAgICAgICAgQ29tcGFjdEpJVENvZGVNYXA6OkVuY29kZXIgaml0Q29kZU1h
cEVuY29kZXI7CiAgICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRl
Y29kZU9mZnNldCA8IG1fbGFiZWxzLnNpemUoKTsgKytieXRlY29kZU9mZnNldCkgewogICAgICAg
ICAgICAgaWYgKG1fbGFiZWxzW2J5dGVjb2RlT2Zmc2V0XS5pc1NldCgpKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHJldmlzaW9uIDEwNjQ4OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKSVRDb2RlKCkgeyB9CiAjZW5kaWYKICAgICBwdWJs
aWM6Ci0gICAgICAgIGVudW0gSklUVHlwZSB7IEhvc3RDYWxsVGh1bmssIEJhc2VsaW5lSklULCBE
RkdKSVQgfTsKKyAgICAgICAgZW51bSBKSVRUeXBlIHsgTm9uZSwgSG9zdENhbGxUaHVuaywgSW50
ZXJwcmV0ZXJUaHVuaywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OwogICAgICAgICAKICAgICAgICAg
c3RhdGljIEpJVFR5cGUgYm90dG9tVGllckpJVCgpCiAgICAgICAgIHsKQEAgLTY2LDggKzY2LDE5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIERGR0pJVDsKICAgICAgICAg
fQogICAgICAgICAKKyAgICAgICAgc3RhdGljIGJvb2wgaXNPcHRpbWl6aW5nSklUKEpJVFR5cGUg
aml0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gREZHSklU
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzdGF0aWMgYm9vbCBpc0Jhc2VsaW5lQ29k
ZShKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBqaXRUeXBl
ID09IEludGVycHJldGVyVGh1bmsgfHwgaml0VHlwZSA9PSBCYXNlbGluZUpJVDsKKyAgICAgICAg
fQorICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBKSVRDb2RlKCkKKyAgICAgICAg
ICAgIDogbV9qaXRUeXBlKE5vbmUpCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03NSw2ICs4
Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgOiBtX3JlZihyZWYpCiAgICAgICAg
ICAgICAsIG1faml0VHlwZShqaXRUeXBlKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQo
aml0VHlwZSAhPSBOb25lKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVy
YXRvciAhKCkgY29uc3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAko
cmV2aXNpb24gMTA2NDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMzMsMTUgKzMzLDIxIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVH
ZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKKyNp
bmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgogaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNv
ZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewor
ICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygp
OworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9
PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxl
KGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CkBAIC01NSwxMCArNjEsNyBA
QCBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShKU0dsCiAgICAgICAgIH0KICAg
ICAgICAgaml0Q29kZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgp
KTsKICAgICB9Ci0jaWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRlY29k
ZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+aGFu
ZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgorICAgIGNvZGVCbG9j
ay0+aGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2RlQmxvY2st
PnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwogICAgIAogICAg
IHJldHVybiB0cnVlOwpAQCAtNjYsOSArNjksMTQgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlm
QXBwcm9wcmlhdGUoSlNHbAogCiBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJv
cHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2Nr
PiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGpp
dENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwgSklU
Q29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+
Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2Jh
bERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVC
bG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQg
PSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRm
Z0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlRnVuY3Rpb24oZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LmdldCgpLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwpAQCAtODMsMTEgKzkxLDcg
QEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaQogICAgICAgICB9CiAg
ICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQo
KSwgJmppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BDT0RFX1NB
TVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgp
KQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5
KCk7Ci0jZW5kaWYKLSAgICAKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGlu
Z09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENv
ZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEwNjQ4OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY0LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3coSlNH
bG9iYWxEYQogCiBFeGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIFJldHVy
bkFkZHJlc3NQdHIgZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGds
b2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2Nr
KCktPmJ5dGVjb2RlT2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAgICByZXR1cm4gZ2VuZXJpY1Ro
cm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1bHRMb2NhdGlvbikpOwogfQog
CiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24g
MTA2NDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0NDYsNiArMTQ0Niw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQs
IG9wX3B1dF9ieV9pZF8KICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJhbWUtPmNvZGVC
bG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0Zy
YW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7
CisgICAgCiAgICAgYXNPYmplY3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGNhbGxGcmFtZS0+Z2xv
YmFsRGF0YSgpLCBpZGVudCwgc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwgc2xvdCk7CiAg
ICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCk7CkBAIC0xOTMxLDcgKzE5MzIsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lk
LCBvcHRpbWl6ZV9mcm9tCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNrRnJhbWUu
YXJnc1swXS5pbnQzMigpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmlu
dGYoIkVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwg
cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVy
ID0gJXVcbiIsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9w
dGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291
bnRlcigpKTsKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRo
IGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9w
dGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+aml0
RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigp
LCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAg
aWYgKGNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewpAQCAtMjE4Niw0NSAr
MjE4NywxMyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxs
RnJhbWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQga2luZCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9u
KGNhbGxGcmFtZS0+Y2FsbGVlKCkpOwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlv
bigpKTsKLSAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJs
ZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0K
LSAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2Vu
YXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJl
Z2lzdGVyRmlsZS0+Z3JvdyhjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAg
ICAgICAgcmV0dXJuIDA7Ci0KLSAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3Vt
ZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3Np
bmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAg
UmVnaXN0ZXIqIHNyYyA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRz
dCA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGlu
dCBlbmQgPSAtQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMp
OwotICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNb
aV07Ci0KLSAgICBlbmQgLT0gZGVsdGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAg
ICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJh
bWUgPSBDYWxsRnJhbWU6OmNyZWF0ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZy
YW1lIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19
Ci0KIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAg
ICAgU1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2Fs
bEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxl
LCBDb2RlRm9yQ2FsbCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93
UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwg
Q29kZUZvckNhbGwpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJf
UkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxl
ckZyYW1lKCkpKTsKIApAQCAtMjIzNyw3ICsyMjA2LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
dm9pZCosIG9wX2NvbnN0cnVjdAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0Zy
YW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVj
a0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0
KTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlD
aGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3Ry
dWN0KTsKICAgICBpZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0
aW9uRnJvbU9wQ2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9B
RERSRVNTLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgp
KSk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJ
KHJldmlzaW9uIDEwNjQ4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZh
Y2VKSVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgSlNJbnRl
cmZhY2VKSVRfaAogI2RlZmluZSBKU0ludGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJCeXRlY29k
ZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJz
LmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBMTEludENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2Rl
ZmluZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFD
SU5HIDAKKworI2VuZGlmIC8vIExMSW50Q29tbW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCisKKyNpZiBFTkFCTEUoTExJTlQp
CisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0
ZXIuaCIKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBM
TEludCB7CisKK0RhdGE6OkRhdGEoKQorICAgIDogbV9leGNlcHRpb25JbnN0cnVjdGlvbnMobmV3
IEluc3RydWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdKQorICAgICwgbV9vcGNvZGVNYXAobmV3
IE9wY29kZVtudW1PcGNvZGVJRHNdKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWF4T3Bj
b2RlTGVuZ3RoICsgMTsgKytpKQorICAgICAgICBtX2V4Y2VwdGlvbkluc3RydWN0aW9uc1tpXS51
LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19mcm9tX2hlbHBlcl90
cmFtcG9saW5lKTsKKyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwgbGVuZ3RoKSBtX29wY29k
ZU1hcFtvcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfIyNvcGNvZGUpOworICAg
IEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkpOworI3VuZGVmIE9QQ09ERV9FTlRSWQor
fQorCitEYXRhOjp+RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9leGNlcHRpb25JbnN0cnVjdGlv
bnM7CisgICAgZGVsZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50
RGF0YV9oCisjZGVmaW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKyNpbmNs
dWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVj
dGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKworI2lmIEVOQUJMRShMTElOVCkKK2NsYXNzIERh
dGEgeworcHVibGljOgorICAgIERhdGEoKTsKKyAgICB+RGF0YSgpOworICAgIAorICAgIEluc3Ry
dWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1f
ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1h
cCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgfQorcHJpdmF0ZToK
KyAgICBJbnN0cnVjdGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgT3Bjb2RlKiBt
X29wY29kZU1hcDsKK307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQpCisKKyNpZiBDT01QSUxFUihD
TEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlmCisKK2NsYXNzIERhdGEg
eworcHVibGljOgorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAg
IHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAg
IH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfTsKKworI2lmIENPTVBJ
TEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisKKyNlbmRp
ZiAvLyBFTkFCTEUoTExJTlQpCisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5k
aWYgLy8gTExJbnREYXRhX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RW50cnlwb2ludHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgorCisjaWYg
RU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSklUQ29kZS5oIgorI2luY2x1ZGUgIkpTR2xvYmFs
RGF0YS5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRl
cnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBn
ZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQsIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciYgYXJpdHlDaGVjaykKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAg
ICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAgIGppdENvZGUgPSBK
SVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgICAgIGFyaXR5Q2hl
Y2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgICAg
ICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6
Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKSkpKTsKKyAg
ICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKSk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAg
ICAgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9y
Q2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAg
ICAgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxB
cml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGppdENvZGUgPSBK
SVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1
bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBhcml0eUNoZWNr
ID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1Ro
dW5rR2VuZXJhdG9yKS5jb2RlKCk7Cit9CisKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFs
RGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0
aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3Jv
QXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9ldmFsX3Byb2xvZ3Vl
KSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29k
ZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKTsKK30KKwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9i
YWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVu
Y3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Byb2dyYW1fcHJv
bG9ndWUpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGppdENvZGUgPSBK
SVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvciks
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBMTEludEVudHJ5cG9pbnRzX2gKKyNkZWZpbmUgTExJbnRFbnRyeXBvaW50
c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKwor
I2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisK
K2NsYXNzIEV2YWxDb2RlQmxvY2s7CitjbGFzcyBKSVRDb2RlOworY2xhc3MgSlNHbG9iYWxEYXRh
OworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmOworY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKKworbmFtZXNwYWNlIExMSW50IHsKKwordm9p
ZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCwgSklUQ29kZSYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjayk7Cit2b2lk
IGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKK3ZvaWQgZ2V0UHJv
Z3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYpOworCitpbmxpbmUgdm9pZCBn
ZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXZhbENvZGVCbG9jayosIEpJ
VENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0RXZhbEVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0
Q29kZSk7Cit9CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBQcm9ncmFtQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRQ
cm9ncmFtRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworfSB9IC8vIG5hbWVz
cGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBM
TEludEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorCisjaWYgRU5BQkxF
KExMSU5UKQorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJKSVRFeGNlcHRpb25zLmgiCisj
aW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgi
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGludGVycHJldGVy
VGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORwor
ICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0
aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KAorICAgICAgICBn
bG9iYWxEYXRhLCBleGVjLT5jYWxsZXJGcmFtZSgpLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sCisg
ICAgICAgIGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChl
eGVjLT5jYWxsZXJGcmFtZSgpLCBleGVjLT5yZXR1cm5QQygpKSk7Cit9CisKK0luc3RydWN0aW9u
KiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAg
ICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlv
bnMoKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJ
bnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMt
Pmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhy
b3dpbmcgZXhjZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2Vw
dGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRh
LCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmlu
c3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBnbG9iYWxEYXRhLT5sbGlu
dERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK3ZvaWQqIGNhbGxUb1Rocm93KEV4
ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcK
KyAgICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAoY2FsbFRvVGhyb3cpLlxuIiwgZ2xv
YmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Ro
cm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5j
b2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJuIGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpOwor
fQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25z
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNl
cHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNfaAor
I2RlZmluZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Cisj
aW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCitu
YW1lc3BhY2UgTExJbnQgeworCisvLyBUaHJvdyB0aGUgY3VycmVudGx5IGFjdGl2ZSBleGNlcHRp
b24gaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNhbGxlcidzIGNhbGwgZnJhbWUuCit2b2lkIGludGVy
cHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqKTsKKworLy8gVGVsbHMgeW91IHdoZXJlIHRv
IGp1bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0dXJuLXRvLXRocm93LCBhZnRlciB5b3UndmUgYWxy
ZWFkeQorLy8gc2V0IHVwIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gdGhyb3cgdGhlIGV4Y2Vw
dGlvbi4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNT
dGF0ZSopOworCisvLyBTYXZlcyB0aGUgY3VycmVudCBQQyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9y
IHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlvdSBhIFBDCisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0
aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisv
LyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRz
IHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBleGNlcHRpb24gaGFuZGxlci4gTm90ZSB0aGF0IGlm
IHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5nLAorLy8gaXQncyBzbWFy
dCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhhdCBQQyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVs
c2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVhZCBleGNlcHRpb24gaGFuZGxpbmcgdGhyb3VnaCBj
b21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5CisvLyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1
Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNl
IHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxsIHRodW5rLgordm9pZCogY2FsbFRv
VGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludEV4Y2Vw
dGlvbnNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVy
cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRI
ZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTQyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJMTEludEhlbHBlcnMuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2lu
Y2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNv
bW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhv
c3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUg
IkpJVC5oIgorI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5o
IgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RGdW5j
dGlvbnMuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAi
SlNTdGF0aWNTY29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAi
SlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTExJbnRFeGNl
cHRpb25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9w
ZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKKyNkZWZp
bmUgTExJTlRfQkVHSU4oKSBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZleGVjLT5nbG9i
YWxEYXRhKCksIGV4ZWMpCisKKyNkZWZpbmUgTExJTlRfT1AoaW5kZXgpIChleGVjLT51bmNoZWNr
ZWRSKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorI2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAoZXhl
Yy0+cihwY1tpbmRleF0udS5vcGVyYW5kKSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fVFdPKGZp
cnN0LCBzZWNvbmQpIGRvIHsgICAgICAgXAorICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGE7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGI7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgfSBwYWlyOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgaW50NjRfdCBpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICB9IF9fcnRfdTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBfX3J0X3UucGFpci5hID0gZmlyc3Q7ICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBfX3J0X3UucGFpci5iID0gc2Vjb25kOyAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICByZXR1cm4gX19ydF91Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJO
X1RXTyhwYywgZXhlYykKKworI2RlZmluZSBMTElOVF9USFJPVyhleGNlcHRpb25Ub1Rocm93KSBk
byB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fdF9n
bG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOyAgICAgICAgXAorICAgICAgICBfX3RfZ2xv
YmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgXAorICAg
ICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYg
KFVOTElLRUxZKGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSB7ICAgXAorICAgICAgICAg
ICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORCgpIGRvIHsgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAg
ICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQlJBTkNIKG9wY29kZSwgY29u
ZGl0aW9uKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYm9vbCBfX2JfY29u
ZGl0aW9uID0gKGNvbmRpdGlvbik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgaWYgKF9fYl9jb25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IHBjW09QQ09ERV9MRU5HVEgob3Bjb2Rl
KSAtIDFdLnUub3BlcmFuZDsgICAgICAgIFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9
IE9QQ09ERV9MRU5HVEgob3Bjb2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk4odmFsdWUp
IGRvIHsgICAgICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcl9yZXR1cm5WYWx1ZSA9
ICh2YWx1ZSk7ICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAg
ICAgICAgICAgXAorICAgICAgICBMTElOVF9PUCgxKSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAg
ICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcGNv
ZGUsIHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcnBfcmV0
dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIExMSU5UX09QKDEpID0gX19ycF9yZXR1cm5WYWx1ZTsgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51LnByb2ZpbGUtPm1f
YnVja2V0c1swXSA9IFwKKyAgICAgICAgICAgIEpTVmFsdWU6OmVuY29kZShfX3JwX3JldHVyblZh
bHVlKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQor
CisjZGVmaW5lIExMSU5UX0NBTExfRU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVU
VVJOX1RXTygoY2FsbFRhcmdldCksIChleGVjKSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9X
KGV4ZWMsIHBjLCBleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAg
ICBFeGVjU3RhdGUqIF9fY3RfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0dsb2JhbERhdGEmIF9fY3Rf
Z2xvYmFsRGF0YSA9IChfX2N0X2V4ZWMpLT5nbG9iYWxEYXRhKCk7ICAgICAgXAorICAgICAgICBf
X2N0X2dsb2JhbERhdGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAg
ICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3RfZXhlYywgY2FsbFRvVGhy
b3coX19jdF9leGVjLCBfX2N0X3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmlu
ZSBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYykgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY2NlX2V4ZWMgPSAoZXhlYyk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jY2Vf
cGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBp
ZiAoVU5MSUtFTFkoX19jY2VfZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbikpICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxs
VG9UaHJvdyhfX2NjZV9leGVjLCBfX2NjZV9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
KyNkZWZpbmUgTExJTlRfQ0FMTF9SRVRVUk4oZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24q
IF9fY3JfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgdm9pZCogX19jcl9jYWxsVGFyZ2V0ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19jcl9l
eGVjLT5jYWxsZXJGcmFtZSgpLCBfX2NyX3BjKTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRf
SU1QTChfX2NyX2V4ZWMsIF9fY3JfY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9
IHdoaWxlIChmYWxzZSkKKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNl
X29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUs
IGludCBvcGVyYW5kKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwg
b3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkXG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2so
KSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBj
IC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAg
ICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bj
b2RlKSwKKyAgICAgICAgICAgZnJvbVdoZXJlLAorICAgICAgICAgICBvcGVyYW5kLAorICAgICAg
ICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQpOworICAgIExMSU5UX0VORCgpOworfQorCitleHRl
cm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIEpT
VmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKG9wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICB1bmlvbiB7
CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCB0YWc7CisgICAgICAgICAg
ICB1aW50MzJfdCBwYXlsb2FkOworICAgICAgICB9IGJpdHM7CisgICAgICAgIEVuY29kZWRKU1Zh
bHVlIGFzVmFsdWU7CisgICAgfSB1OworICAgIHUuYXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2
YWx1ZSk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJh
Y2UoJWQpOiAlZDogJWQ6ICUwOHg6JTA4eCIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygp
LAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMg
LSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAg
IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNv
ZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUsCisgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAg
ICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCwKKyAgICAgICAgICAgdS5iaXRzLnRhZywKKyAgICAg
ICAgICAgdS5iaXRzLnBheWxvYWQpOworI2lmbmRlZiBOREVCVUcKKyAgICBwcmludGYoIjogJXMi
LCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIHByaW50ZigiXG4iKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpCit7Cisg
ICAgcHJpbnRmKCIlcCAvICVwOiBpbiBwcm9sb2d1ZS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLCBl
eGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblBy
b2xvZ3VlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24o
ZXhlYy0+Y2FsbGVlKCkpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNh
bGxlZS0+anNFeGVjdXRhYmxlKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXhlY3V0
YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBp
biAlcyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFycyA9ICV1LCBudW1QYXJh
bWV0ZXJzID0gJXUsIG51bUNhbGxlZVJlZ2lzdGVycyA9ICV1LlxuIiwKKyAgICAgICAgICAgY29k
ZUJsb2NrLCBleGVjLCBjb21tZW50LCBjYWxsZWUsIGV4ZWN1dGFibGUsCisgICAgICAgICAgIGNv
ZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2Nr
LT5tX251bUNhbGxlZVJlZ2lzdGVycyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3By
b2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShl
eGVjLCAiY2FsbCBwcm9sb2d1ZSIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBwcm9sb2d1
ZSIsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVuY3Rpb25Q
cm9sb2d1ZShleGVjLCAiY2FsbCBhcml0eSBjaGVjayIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29u
c3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IGFy
aXR5IGNoZWNrIiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKHRyYWNlKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5n
IGJjIyV6dSwgIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4
ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9j
aygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50
ZigiJXMsICIsIG9wY29kZU5hbWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpXSk7CisjZWxzZQorICAgIHByaW50Zigib3AjJXUsICIs
IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNv
ZGUpKTsKKyNlbmRpZgorICAgIHByaW50Zigic2NvcGUgJXBcbiIsIGV4ZWMtPnNjb3BlQ2hhaW4o
KSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHNwZWNpYWxfdHJh
Y2UpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV6
dSwgb3AjJXUsIHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2Nr
KCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90Pihw
YyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9w
Y29kZSksCisgICAgICAgICAgIGV4ZWMtPnJldHVyblBDKCkudmFsdWUoKSk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK2lubGluZSBib29sIHNob3VsZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7Cisg
ICAgLy8gWW91IGNhbiBtb2RpZnkgdGhpcyB0byB0dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVi
dWlsZGluZyB0aGUgd29ybGQuCisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VK
SVQoKTsKK30KKworZW51bSBFbnRyeUtpbmQgeyBQcm9sb2d1ZSwgQXJpdHlDaGVjayB9Oworc3Rh
dGljIEhlbHBlclJldHVyblR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlv
biogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBjaGFyICpuYW1lLCBFbnRyeUtpbmQg
a2luZCkKK3sKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6IEVu
dGVyZWQgJXMgd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIG5hbWUsIGNv
ZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICgh
c2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29u
KCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIGlmICgh
Y29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUo
SklUX1ZFUkJPU0VfT1NSKQorICAgICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNv
bXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICB9CisgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7Cisg
ICAgaWYgKGtpbmQgPT0gUHJvbG9ndWUpCisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJs
b2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7Cisg
ICAgQVNTRVJUKGtpbmQgPT0gQXJpdHlDaGVjayk7CisgICAgTExJTlRfUkVUVVJOX1RXTyhjb2Rl
QmxvY2stPmdldEpJVENvZGVXaXRoQXJpdHlDaGVjaygpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGV4
ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpCit7CisgICAgcmV0dXJuIGVu
dHJ5T1NSKGV4ZWMsIHBjLCBleGVjLT5jb2RlQmxvY2soKSwgImVudHJ5X29zciIsIFByb2xvZ3Vl
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKQor
eworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVl
KCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAi
ZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4g
ZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRh
YmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKQoreworICAgIHJldHVy
biBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1
dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1
bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2siLCBBcml0eUNoZWNrKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sK
KyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgp
KS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3Qp
LCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayIsIEFyaXR5Q2hl
Y2spOworfQorCitMTElOVF9IRUxQRVJfREVDTChsb29wX29zcikKK3sKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVS
Qk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCBsb29wX29zciB3aXRoIGV4ZWN1dGVD
b3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVy
KCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAg
Y29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RX
TygwLCBleGVjKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUo
ZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAg
ICAgIHByaW50ZigiICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgor
ICAgIH0KKyAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICAKKyAgICBBU1NFUlQoY29kZUJs
b2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIAorICAgIFZl
Y3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+IG1hcDsKKyAgICBjb2RlQmxvY2stPmppdENv
ZGVNYXAoKS0+ZGVjb2RlKG1hcCk7CisgICAgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBw
aW5nID0gYmluYXJ5U2VhcmNoPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQsIEJ5
dGVjb2RlQW5kTWFjaGluZU9mZnNldDo6Z2V0Qnl0ZWNvZGVJbmRleD4obWFwLmJlZ2luKCksIG1h
cC5zaXplKCksIHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICBB
U1NFUlQobWFwcGluZyk7CisgICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9PSBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4ocGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2lu
KCkpKTsKKyAgICAKKyAgICB2b2lkKiBqdW1wVGFyZ2V0ID0gY29kZUJsb2NrLT5nZXRKSVRDb2Rl
KCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChtYXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0
KTsKKyAgICBBU1NFUlQoanVtcFRhcmdldCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOX1RXTyhq
dW1wVGFyZ2V0LCBleGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSkKK3sKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVO
QUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCByZXBsYWNlIHdp
dGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50RXhl
Y3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoc2hvdWxkSklUKGV4ZWMpKSB7
CisgICAgICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkp
IHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICAgICAgcHJpbnRmKCIgICAg
Q29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlmCisgICAgICAgIH0KKyAgICAg
ICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgfSBlbHNlCisgICAgICAgIGNvZGVCbG9jay0+
ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyNpZiBM
TElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0IHdp
dGggZXhlYyA9ICVwLlxuIiwgZXhlYyk7CisgICAgcHJpbnRmKCJDb2RlQmxvY2sgPSAlcC5cbiIs
IGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAgICBwcmludGYoIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0g
JXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgIHBy
aW50ZigiTnVtIHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bVZhcnMpOwor
ICAgIHByaW50ZigiQ3VycmVudCBlbmQgaXMgYXQgJXAuXG4iLCBleGVjLT5nbG9iYWxEYXRhKCku
aW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKKyNlbmRpZgorICAgIEFTU0VSVCgm
ZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJz
XSA+IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkp
OworICAgIGlmIChVTkxJS0VMWSghZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdp
c3RlckZpbGUoKS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+bV9u
dW1DYWxsZWVSZWdpc3RlcnNdKSkpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1l
KCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092
ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVj
KTsKKyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKGV4ZWMpOwor
ICAgIH0KKyAgICBMTElOVF9FTkRfSU1QTCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY2FsbF9hcml0eUNoZWNrKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgRXhlY1N0YXRl
KiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZleGVjLT5n
bG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ2FsbCk7Cisg
ICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOwor
ICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxv
d0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYyk7Cisg
ICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1
aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3
RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVj
aykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1v
blNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVy
cHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgaWYgKCFuZXdF
eGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVj
LT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMp
OworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIExMSU5U
X1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEp
KSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKK3sKKyAgICBMTElO
VF9CRUdJTigpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGlu
ZyBhbiBhY3RpdmF0aW9uLCBleGVjID0gJXAhXG4iLCBleGVjKTsKKyNlbmRpZgorICAgIEpTQWN0
aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgZXhlYywgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlYy0+Y29kZUJs
b2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVj
LT5zY29wZUNoYWluKCktPnB1c2goYWN0aXZhdGlvbikpOworICAgIExMSU5UX1JFVFVSTihKU1Zh
bHVlKGFjdGl2YXRpb24pKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9h
cmd1bWVudHMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9
IEpTVmFsdWUoQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKSk7Cisg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgZXhlYy0+dW5jaGVja2VkUihwY1sxXS51
Lm9wZXJhbmQpID0gYXJndW1lbnRzOworICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFy
Z3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOworICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3RoaXMpCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1Y3RvciA9IGFzRnVuY3Rp
b24oZXhlYy0+Y2FsbGVlKCkpOworICAgIAorI2lmICFBU1NFUlRfRElTQUJMRUQKKyAgICBDb25z
dHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQVNTRVJUKGNvbnN0cnVjdG9yLT5tZXRob2RU
YWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhKSA9PSBD
b25zdHJ1Y3RUeXBlSlMpOworI2VuZGlmCisgICAgCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmU7
CisgICAgSlNWYWx1ZSBwcm90byA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAocHJv
dG8uaXNPYmplY3QoKSkKKyAgICAgICAgc3RydWN0dXJlID0gYXNPYmplY3QocHJvdG8pLT5pbmhl
cml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGVsc2UKKyAgICAgICAgc3RydWN0dXJl
ID0gY29uc3RydWN0b3ItPnNjb3BlKCktPmdsb2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1
cmUoKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywg
c3RydWN0dXJlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb252ZXJ0X3RoaXMp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSkuanNW
YWx1ZSgpOworICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBMTElOVF9SRVRVUk4o
djEudG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
d19vYmplY3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oY29uc3Ry
dWN0RW1wdHlPYmplY3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3
X2FycmF5KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVj
dEFycmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4oJkxMSU5UX09QKDIpKSwgcGNbM10u
dS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVm
ZmVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEFy
cmF5KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZlcihwY1syXS51Lm9wZXJh
bmQpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
d19yZWdleHApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBSZWdFeHAqIHJlZ0V4cCA9IGV4
ZWMtPmNvZGVCbG9jaygpLT5yZWdleHAocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIXJlZ0V4
cC0+aXNWYWxpZCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVTeW50YXhFcnJvcihleGVj
LCAiSW52YWxpZCBmbGFnIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iKSk7CisgICAg
TExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
Yy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJl
Z0V4cFN0cnVjdHVyZSgpLCByZWdFeHApKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X25vdCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4o
IUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9S
RVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25lcSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oIUpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0
cmljdGVxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
c3RyaWN0ZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9sZXNzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NF
cTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8ZmFsc2U+
KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSkKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8ZmFsc2U+KGV4
ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRv
TnVtYmVyKGV4ZWMpICsgMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2Rl
YykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElO
VF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wb3N0X2luYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGRvdWJs
ZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJ
TlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQgKyAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYykKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQg
LSAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihl
eGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKC1MTElOVF9PUF9DKDIpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
YWRkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsK
KyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVHJ5aW5nIHRvIGFk
ZCAlcyIsIHYxLmRlc2NyaXB0aW9uKCkpOworICAgIHByaW50ZigiIHRvICVzLlxuIiwgdjIuZGVz
Y3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNTdHJpbmcoKSAmJiAhdjIu
aXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5n
KHYxKSwgdjIudG9TdHJpbmcoZXhlYykpKTsKKyAgICAKKyAgICBpZiAodjEuaXNOdW1iZXIoKSAm
JiB2Mi5pc051bWJlcigpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIodjEuYXNOdW1i
ZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNBZGRTbG93
Q2FzZShleGVjLCB2MSwgdjIpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAqIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9O
dW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX21vZCkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihmbW9kKExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIDw8IChMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KS50b1VJbnQzMihleGVjKSAmIDMxKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cnNoaWZ0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVy
KExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gKExMSU5UX09QX0MoMyku
anNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpICYgMzEpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl91cnNoaWZ0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJO
KGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpID4+IChMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSAmIDMxKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfYml0YW5kKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykg
JiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9iaXRvcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIHwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfYml0eG9yKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgXiBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9iaXRub3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIofkxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgYmFzZVZhbCA9IExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpOworI2lmbmRlZiBOREVCVUcKKyAgICBUeXBlSW5mbyB0eXBlSW5mbyhVbnNwZWNpZmll
ZFR5cGUpOworICAgIEFTU0VSVCghYmFzZVZhbC5pc09iamVjdCgpCisgICAgICAgICAgIHx8ICEo
dHlwZUluZm8gPSBhc09iamVjdChiYXNlVmFsKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkpLmlt
cGxlbWVudHNIYXNJbnN0YW5jZSgpKTsKKyNlbmRpZgorICAgIExMSU5UX1RIUk9XKGNyZWF0ZUlu
dmFsaWRQYXJhbUVycm9yKGV4ZWMsICJpbnN0YW5jZW9mIiwgYmFzZVZhbCkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZikKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluc3RhbmNlT2ZT
bG93KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90eXBlb2YpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNU
eXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIExMSU5U
X1JFVFVSTihqc0Jvb2xlYW4odi5pc0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50
eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9C
RUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkuaXNCb29sZWFuKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJl
cikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaXNfc3RyaW5nKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihpc0pTU3RyaW5nKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzT2JqZWN0VHlwZShMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0
aW9uKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihq
c0lzRnVuY3Rpb25UeXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaW4pCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9S
RVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihleGVjLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9yZXNvbHZlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
UkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmUsIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4
ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCkKK3sKKyAgICBMTElOVF9C
RUdJTigpOworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRCgKKyAgICAgICAgb3BfcmVzb2x2ZV9z
a2lwLAorICAgICAgICBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVNraXAoCisgICAgICAgICAg
ICBleGVjLAorICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0u
dS5vcGVyYW5kKSwKKyAgICAgICAgICAgIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitzdGF0aWMg
SlNWYWx1ZSByZXNvbHZlR2xvYmFsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQor
eworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7Cisg
ICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7CisgICAgaW50IHByb3Bl
cnR5ID0gcGNbMl0udS5vcGVyYW5kOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gcGNbM10u
dS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgCisgICAgQVNTRVJUX1VOVVNFRChzdHJ1Y3R1cmUsIHN0
cnVjdHVyZSAhPSBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAKKyAgICBJZGVudGlm
aWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0eSk7CisgICAgUHJvcGVy
dHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5n
ZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKSB7CisgICAgICAgIEpTVmFsdWUgcmVz
dWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCk7CisgICAgICAgIGlmIChzbG90LmlzQ2Fj
aGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJs
ZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9i
amVjdCkgeworICAgICAgICAgICAgcGNbM10udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAg
ICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xv
YmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVk
T2Zmc2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7Cisg
ICAgfQorICAgIAorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVVbmRl
ZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KTsKKyAgICByZXR1cm4gSlNWYWx1ZSgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWws
IHJlc29sdmVHbG9iYWwoZXhlYywgcGMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElO
VF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYywgcmVzb2x2ZUdsb2Jh
bChleGVjLCBwYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9mb3Jf
cmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5U
X1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljLCBDb21tb25TbG93UGF0
aHM6Om9wUmVzb2x2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51
Lm9wZXJhbmQpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Jhc2Up
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNv
ZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKHBjWzNdLnUu
b3BlcmFuZCkgeworICAgICAgICBKU1ZhbHVlIGJhc2UgPSBKU0M6OnJlc29sdmVCYXNlKGV4ZWMs
IGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIHRydWUpOworICAgICAgICBpZiAoIWJhc2UpCisg
ICAgICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25t
ZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgICAgICBMTElOVF9SRVRVUk4oYmFzZSk7
CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2Jhc2Us
IEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgZmFsc2Up
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3Qo
TExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOwor
ICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNb
Ml0udS5vcGVyYW5kKTsKKyAgICBpZiAoIW9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlk
ZW50LCBzbG90KSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xv
YmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9w
UmVzb2x2ZVdpdGhCYXNlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNd
LnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsK
KyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hv
dWxkIGhhdmUgcHJvZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdv
bid0IHVzZSBpdC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Jlc29sdmVfd2l0aF90aGlzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhUaGlzKGV4ZWMsIGV4ZWMt
PmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsK
KyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsK
KyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5nLCBidXQgd2Ug
ZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4KKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCkKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5v
cGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgp
OworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAgIExMSU5UX0NIRUNLX0VY
Q0VQVElPTigpOworICAgIExMSU5UX09QKDEpID0gcmVzdWx0OworCisgICAgaWYgKGJhc2VWYWx1
ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkKKyAgICAgICAgJiYgc2xv
dC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAmJiBzbG90LmNhY2hlZFByb3BlcnR5
VHlwZSgpID09IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAgICAgICAgCisgICAgICAgIEpTQ2Vs
bCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKCFz
dHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1
Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkpIHsKKyAgICAgICAg
ICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxE
YXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAg
ICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFs
dWUpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHBjW09QQ09ERV9MRU5HVEgob3BfZ2V0
X2J5X2lkKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJl
c3VsdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9n
ZXRfYXJndW1lbnRzX2xlbmd0aCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQg
PSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChi
YXNlVmFsdWUpOworICAgIExMSU5UX1JFVFVSTihiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBz
bG90KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9j
aygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJd
LnUub3BlcmFuZCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEp
LmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpKTsKKyAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAgICBhc09iamVjdChiYXNl
VmFsdWUpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCksIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFzZVZhbHVlLnB1dChleGVj
LCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOworICAgIAorICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAg
JiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VD
ZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RydWN0dXJl
LT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50
eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpCisgICAgICAgICAgICAmJiBiYXNl
Q2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc2xv
dC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkgeworICAgICAgICAgICAg
ICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1Y3R1cmUtPnByZXZpb3Vz
SUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1cmUtPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQg
YmVjYXVzZSBzb21lIG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKKyAgICAgICAgICAgICAgICAgICAg
Ly8gYmVsb3cgbWF5IEdDLgorICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNlbGwpOworICAgICAgICAg
ICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0cnVjdHVyZS0+cHJldmlv
dXNJRCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1
cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7CisgICAg
ICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBz
aXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3RydWN0dXJlLnNl
dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICAgICAgU3Ry
dWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKTsKKyAg
ICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsKKyAgICAgICAgICAgICAgICAgICAgcGNb
N10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5n
bG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNoYWluKTsKKyAgICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChwY1s4XS51Lm9wZXJhbmQp
CisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCk7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5
X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAg
ICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUo
KSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNh
Y2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorICAgIAorICAgIGlmIChmYWxzZSAmJiAhc3RyY21wKGlkZW50LmFzY2lpKCkuZGF0
YSgpLCAicmVuZGVyUmVmbGVjdGlvbnMiKSkKKyAgICAgICAgcHJpbnRmKCJGaW5pc2hpbmcgYWNj
ZXNzIHRvIHJlbmRlclJlZmxlY3Rpb25zIGZyb20gTExJbnQgc2xvdyBwYXRoLlxuIik7CisgICAg
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlf
aWQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7CisgICAgYm9vbCBjb3VsZERlbGV0ZSA9IGJhc2VP
YmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMsIGNv
ZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpKTsKKyAgICBMTElOVF9DSEVDS19F
WENFUFRJT04oKTsKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxl
IHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3Vs
ZERlbGV0ZSkpOworfQorCitpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKK3sKKyAgICBpZiAoTElLRUxZ
KGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkpIHsKKyAgICAgICAg
aWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0R2V0T3duUHJvcGVy
dHkoZXhlYywgYXNTdHJpbmcoc3Vic2NyaXB0KS0+dmFsdWUoZXhlYykpKQorICAgICAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgaWYgKHN1YnNjcmlwdC5pc1VJbnQzMigp
KSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAg
aWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFsdWUpLT5jYW5HZXRJ
bmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc1N0cmluZyhiYXNlVmFsdWUpLT5nZXRJbmRl
eChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1
ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpCisgICAgICAg
ICAgICByZXR1cm4gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5kZXgoZXhlYywgaSk7Cisg
ICAgICAgIAorICAgICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBpKTsKKyAgICB9Cisg
ICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBwcm9wZXJ0
eSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX2dldF9ieV92YWwsIGdl
dEJ5VmFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3Zh
bCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gTExJTlRf
T1AoMikuanNWYWx1ZSgpOworICAgIGlmICghYXJndW1lbnRzKSB7CisgICAgICAgIGFyZ3VtZW50
cyA9IEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYyk7CisgICAgICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBMTElOVF9PUCgyKSA9IGFyZ3VtZW50
czsKKyAgICAgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIo
cGNbMl0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgfQorICAgIAorICAgIExMSU5UX1JF
VFVSTihnZXRCeVZhbChleGVjLCBhcmd1bWVudHMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgTExJTlRfT1AoMiku
anNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3B1dF9ieV92YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgSlNWYWx1
ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNj
cmlwdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJ
bnQzMigpKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7Cisg
ICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgeworICAgICAgICAgICAgSlNBcnJheSog
anNBcnJheSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmIChqc0FycmF5LT5j
YW5TZXRJbmRleChpKSkKKyAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJbmRleChnbG9iYWxE
YXRhLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgSlNBcnJh
eTo6cHV0QnlJbmRleChqc0FycmF5LCBleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBMTElO
VF9FTkQoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUp
CisgICAgICAgICAgICAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChp
KSkgeworICAgICAgICAgICAgSlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXko
YmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAg
ICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNJbnQzMigpKTsKKyAgICAg
ICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2
YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4
KGksIHZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaSwgdmFs
dWUpOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBw
cm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChleGVj
LT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywg
cHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTT2JqZWN0
KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIAorICAgIEpTVmFs
dWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisgICAgYm9vbCBj
b3VsZERlbGV0ZTsKKyAgICAKKyAgICB1aW50MzJfdCBpOworICAgIGlmIChzdWJzY3JpcHQuZ2V0
VUludDMyKGkpKQorICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxl
KCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNlT2JqZWN0LCBleGVjLCBpKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIElkZW50aWZpZXIg
cHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7Cisg
ICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERlbGV0ZSA9IGJh
c2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMs
IHByb3BlcnR5KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBleGVjLT5j
b2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgCisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHV0X2J5X2luZGV4KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCkucHV0KGV4ZWMsIHBjWzJdLnUub3BlcmFuZCwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHV0X2dldHRlcl9zZXR0ZXIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBB
U1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIEpTT2JqZWN0KiBi
YXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICAKKyAgICBHZXR0
ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhlYyk7CisgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgSlNWYWx1ZSBnZXR0ZXIgPSBMTElOVF9P
UCgzKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzZXR0ZXIgPSBMTElOVF9PUCg0KS5qc1ZhbHVl
KCk7CisgICAgQVNTRVJUKGdldHRlci5pc09iamVjdCgpIHx8IGdldHRlci5pc1VuZGVmaW5lZCgp
KTsKKyAgICBBU1NFUlQoc2V0dGVyLmlzT2JqZWN0KCkgfHwgc2V0dGVyLmlzVW5kZWZpbmVkKCkp
OworICAgIEFTU0VSVChnZXR0ZXIuaXNPYmplY3QoKSB8fCBzZXR0ZXIuaXNPYmplY3QoKSk7Cisg
ICAgCisgICAgaWYgKCFnZXR0ZXIuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgYWNjZXNzb3ItPnNl
dEdldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KGdldHRlcikpOworICAgIGlmICgh
c2V0dGVyLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIGFjY2Vzc29yLT5zZXRTZXR0ZXIoZXhlYy0+
Z2xvYmFsRGF0YSgpLCBhc09iamVjdChzZXR0ZXIpKTsKKyAgICBiYXNlT2JqLT5wdXREaXJlY3RB
Y2Nlc3NvcigKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLAorICAgICAgICBleGVjLT5jb2Rl
QmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAgICAgICBhY2Nlc3Nvciwg
QWNjZXNzb3IpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfam1wX3Njb3BlcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIHVuc2lnbmVkIGNvdW50
ID0gcGNbMV0udS5vcGVyYW5kOworICAgIFNjb3BlQ2hhaW5Ob2RlKiB0bXAgPSBleGVjLT5zY29w
ZUNoYWluKCk7CisgICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAgIHRtcCA9IHRtcC0+cG9wKCk7
CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbih0bXApOworICAgIHBjICs9IHBjWzJdLnUub3BlcmFu
ZDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVl
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2p0cnVlLCBMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfamZhbHNlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJB
TkNIKG9wX2pmYWxzZSwgIUxMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcykKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzcywganNMZXNzPHRydWU+KGV4ZWMsIExMSU5U
X09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
TExJTlRfQlJBTkNIKG9wX2pubGVzcywgIWpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2pncmVhdGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
QlJBTkNIKG9wX2pncmVhdGVyLCBqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfam5ncmVhdGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJB
TkNIKG9wX2puZ3JlYXRlciwgIWpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbGVzc2VxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNI
KG9wX2psZXNzZXEsIGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfam5sZXNzZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bf
am5sZXNzZXEsICFqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2pncmVhdGVyZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bf
amdyZWF0ZXJlcSwganNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgp
LCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfam5ncmVhdGVyZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0go
b3Bfam5ncmVhdGVyZXEsICFqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9zd2l0Y2hfaW1tKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSBz
Y3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoc2NydXRpbmVl
LmlzRG91YmxlKCkpOworICAgIGRvdWJsZSB2YWx1ZSA9IHNjcnV0aW5lZS5hc0RvdWJsZSgpOwor
ICAgIGludDMyX3QgaW50VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSk7CisgICAg
aW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKHZhbHVlID09IGlu
dFZhbHVlKSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2Nr
KCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlKHBj
WzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoaW50VmFsdWUsIGRlZmF1bHRPZmZzZXQpOwor
ICAgIH0gZWxzZQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0cmluZykKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYg
KCFzY3J1dGluZWUuaXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAg
ICBlbHNlIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2so
KTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUocGNbMV0u
dS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGluZWUpLT52YWx1ZShleGVj
KS5pbXBsKCksIGRlZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NF
UlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZQorICAgICAgICAgICB8fCAh
Y29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkKKyAgICAgICAgICAgfHwgZXhlYy0+dW5j
aGVja2VkUihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpOworI2lm
IExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGluZyBmdW5jdGlvbiFcbiIp
OworI2VuZGlmCisgICAgTExJTlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzJd
LnUub3BlcmFuZCktPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEZ1bmN0
aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1syXS51
Lm9wZXJhbmQpOworICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBmdW5jdGlvbi0+bWFrZShleGVjLCBl
eGVjLT5zY29wZUNoYWluKCkpOworICAgIAorICAgIGlmICghZnVuY3Rpb24tPm5hbWUoKS5pc051
bGwoKSkgeworICAgICAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBmdW5jdGlvblNjb3BlT2JqZWN0
ID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKCksIGZ1
bmMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGZ1bmMtPnNldFNjb3BlKGV4ZWMt
Pmdsb2JhbERhdGEoKSwgZnVuYy0+c2NvcGUoKS0+cHVzaChmdW5jdGlvblNjb3BlT2JqZWN0KSk7
CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihmdW5jKTsKK30KKworc3RhdGljIEhlbHBl
clJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVj
dGlvbiogcGMsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7
CisgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICBK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworCisgICAgZXhl
Y0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxs
ZWUtPnNldENvZGVCbG9jaygwKTsKKworICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7Cisg
ICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdl
dENhbGxEYXRhKGNhbGxlZSwgY2FsbERhdGEpOworICAgIAorICAgICAgICBBU1NFUlQoY2FsbFR5
cGUgIT0gQ2FsbFR5cGVKUyk7CisgICAgCisgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlw
ZUhvc3QpIHsKKyAgICAgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBK
U1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMs
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICAg
ICAgfQorICAgICAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgICAgICBwcmludGYo
IkNhbGwgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9u
KCkpOworI2VuZGlmCisKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSk7
CisgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFGdW5jdGlvbkVy
cm9yKGV4ZWMsIGNhbGxlZSkpOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JD
b25zdHJ1Y3QpOworICAgIAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBD
b25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29u
c3RydWN0RGF0YSk7CisgICAgCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0
VHlwZUpTKTsKKyAgICAKKyAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlSG9z
dCkgeworICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6
ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAg
ICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgCisjaWYgTExJTlRfSEVM
UEVSX1RSQUNJTkcKKyAgICAgICAgcHJpbnRmKCJDb25zdHJ1Y3RvciBjYWxsZWUgaXMgbm90IGEg
ZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgIEFT
U0VSVChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVOb25lKTsKKyAgICBMTElOVF9DQUxM
X1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUp
KTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhl
Y0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpT
VmFsdWUgY2FsbGVlQXNWYWx1ZSwgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IDAp
Cit7CisgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2Fs
bGVlQXNWYWx1ZSk7CisgICAgaWYgKCFjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkKKyAgICAgICAgcmV0
dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIHBjLCBjYWxsZWVBc1ZhbHVlLCBraW5kKTsK
KyAgICAKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxlZUFzRnVuY3Rp
b25DZWxsKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGNhbGxlZS0+c2NvcGVVbmNo
ZWNrZWQoKSk7CisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1
dGFibGUoKTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CisgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0
aW9uKCkpCisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9y
KGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgZWxzZSB7CisgICAgICAgIEZ1bmN0aW9uRXhl
Y3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRh
YmxlKj4oZXhlY3V0YWJsZSk7CisgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhl
Y3V0YWJsZS0+Y29tcGlsZUZvcihleGVjQ2FsbGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOwor
ICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxs
ZWUtPmNhbGxlckZyYW1lKCksIHBjLCBlcnJvcik7CisgICAgICAgIGNvZGVCbG9jayA9ICZmdW5j
dGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgICAgICBBU1NF
UlQoY29kZUJsb2NrKTsKKyAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpKSkKKyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRl
ZEpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihraW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5k
KS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIH0KKyAgICAKKyAgICBpZiAoY2FsbExpbmtJbmZvKSB7
CisgICAgICAgIGlmIChjYWxsTGlua0luZm8tPmlzT25MaXN0KCkpCisgICAgICAgICAgICBjYWxs
TGlua0luZm8tPnJlbW92ZSgpOworICAgICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZXIgPSBleGVj
Q2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQo
ZXhlY0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBleGVjQ2FsbGVyLT5jb2RlQmxvY2soKS0+b3duZXJF
eGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxs
ZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+Y29kZUJsb2NrKCkt
Pm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hp
bmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKKyAgICAgICAgaWYgKGNvZGVCbG9jaykKKyAgICAgICAg
ICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChjYWxsTGlua0luZm8pOworICAgIH0KKyAg
ICAKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRh
YmxlQWRkcmVzcygpKTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUgZ2VuZXJpY0NhbGwo
RXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBm
cmFtZS4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlm
IG5lY2Vzc2FyeS4KKyAgICAvLyAtIElmIHBvc3NpYmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5l
IGNhY2hlLgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3Mg
dG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVl
QXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSog
ZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlY0NhbGxl
ZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBl
eGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFs
dWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgCisgICAgQVNT
RVJUKHBjWzRdLnUuY2FsbExpbmtJbmZvKTsKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxs
ZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCBwY1s0XS51LmNhbGxMaW5rSW5mbyk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUg
d2hpbGUgcmVzcGVjdGluZyB0aGUgdmFyaWFibGUgYXJndW1lbnRzLgorICAgIC8vIC0gRmlndXJl
IG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0g
UmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5l
dyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09Q
X0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRW
YXJhcmdzKAorICAgICAgICBleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5y
ZWdpc3RlckZpbGUoKSwKKyAgICAgICAgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLCBwY1s0XS51Lm9wZXJhbmQpOworICAgIExMSU5UX0NBTExfQ0hFQ0tf
RVhDRVBUSU9OKGV4ZWMsIHBjKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJl
Z2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0
Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFy
Z3VtZW50Q291bnQpLnRhZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xF
TkdUSChvcF9jYWxsX3ZhcmFyZ3MpKTsKKyAgICAKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWND
YWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1Zh
bHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhl
Y1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICBKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgZXhlY0Nh
bGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAg
ICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjQ2FsbGVlLT51bmNo
ZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0Nh
bGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUt
PnNldFJldHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KCZsbGludF9nZW5lcmljX3Jl
dHVybl9wb2ludCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKyAgICBleGVj
LT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNl
X2Nhc3Q8aW50MzJfdD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfZXZhbCkpOworICAgIAor
ICAgIGlmICghaXNIb3N0RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQor
ICAgICAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2Fs
bGVlQXNWYWx1ZSk7CisgICAgCisgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0g
ZXZhbChleGVjQ2FsbGVlKTsKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywg
cmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVD
aGFpbigpKTsKKyAgICBKU1ZhbHVlIGFjdGl2YXRpb25WYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFs
dWUoKTsKKyAgICBpZiAoIWFjdGl2YXRpb25WYWx1ZSkgeworICAgICAgICBpZiAoSlNWYWx1ZSB2
ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5v
cGVyYW5kKSkuanNWYWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygp
LT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyh2KS0+dGVhck9m
ZihleGVjKTsKKyAgICAgICAgfQorICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgSlNB
Y3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0aW9uKGFjdGl2YXRpb25WYWx1ZSk7Cisg
ICAgYWN0aXZhdGlvbi0+dGVhck9mZihleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGlmIChKU1Zh
bHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sy
XS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpCisgICAgICAgIGFzQXJndW1lbnRzKHYpLT5kaWRUZWFy
T2ZmQWN0aXZhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGFjdGl2YXRpb24pOworICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRz
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51
c2VzQXJndW1lbnRzKCkgJiYgIWV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWlu
KCkpOworICAgIGFzQXJndW1lbnRzKGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSktPnRlYXJPZmYoZXhlYyk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNTdHJpbmcoZXhlYywgJkxM
SU5UX09QKDIpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3RvX3ByaW1pdGl2ZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVS
TihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1ByaW1pdGl2ZShleGVjKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICh2LmlzVW5kZWZp
bmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcGMgKz0gcGNbNV0udS5vcGVyYW5kOworICAgICAgICBM
TElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4
ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gby0+c3RydWN0dXJlKCk7CisgICAgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IHN0cnVjdHVyZS0+
ZW51bWVyYXRpb25DYWNoZSgpOworICAgIGlmICghanNQcm9wZXJ0eU5hbWVJdGVyYXRvciB8fCBq
c1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQcm90b3R5cGVDaGFpbigpICE9IHN0cnVjdHVy
ZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCisgICAgICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3Ig
PSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywgbyk7CisgICAgCisgICAgTExJ
TlRfT1AoMSkgPSBKU1ZhbHVlKGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOworICAgIExMSU5UX09Q
KDIpID0gSlNWYWx1ZShvKTsKKyAgICBMTElOVF9PUCgzKSA9IFJlZ2lzdGVyOjp3aXRoSW50KDAp
OworICAgIExMSU5UX09QKDQpID0gUmVnaXN0ZXI6OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVy
YXRvci0+c2l6ZSgpKTsKKyAgICAKKyAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFt
ZXMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4
dF9wbmFtZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNP
YmplY3QoTExJTlRfT1AoMikuanNWYWx1ZSgpKTsKKyAgICBKU1N0cmluZyogcHJvcGVydHkgPSBh
c1N0cmluZyhMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIGlmIChiYXNlLT5oYXNQcm9wZXJ0
eShleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5LT52YWx1ZShleGVjKSkpKSB7CisgICAg
ICAgIC8vIEdvIHRvIHRhcmdldC4KKyAgICAgICAgcGMgKz0gcGNbNl0udS5vcGVyYW5kOworICAg
IH0gLy8gRWxzZSwgZG9uJ3QgY2hhbmdlIHRoZSBQQywgc28gdGhlIGludGVycHJldGVyIHdpbGwg
cmVsb29wLgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHVzaF9zY29wZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgdiA9IExMSU5U
X09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogbyA9IHYudG9PYmplY3QoZXhlYyk7Cisg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBvOwor
ICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKG8pKTsKKyAg
ICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9z
Y29wZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhl
Yy0+c2NvcGVDaGFpbigpLT5wb3AoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmpl
Y3QqIHNjb3BlID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGNvZGVCbG9jay0+
aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIERvbnRE
ZWxldGUpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNo
KHNjb3BlKSk7CisgICAgTExJTlRfUkVUVVJOKHNjb3BlKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Rocm93KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfVEhST1co
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
dGhyb3dfcmVmZXJlbmNlX2Vycm9yKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
VEhST1coY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9kZWJ1ZykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGludCBkZWJ1Z0hvb2tJRCA9
IHBjWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOwor
ICAgIGludCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5nbG9i
YWxEYXRhKCkuaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lE
PihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIAorICAgIExMSU5UX0VO
RCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZl
cmVuY2UoKSktPndpbGxFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9j
YWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2Zp
bGVyUmVmZXJlbmNlKCkpLT5kaWRFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisj
ZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEhl
bHBlcnNfaAorI2RlZmluZSBMTEludEhlbHBlcnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3Jt
Lmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKExMSU5UKQor
CituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9u
OworCituYW1lc3BhY2UgTExJbnQgeworCit0eXBlZGVmIGludDY0X3QgSGVscGVyUmV0dXJuVHlw
ZTsKKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhl
Y1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7CitleHRl
cm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiwgSW5z
dHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7CisKKyNkZWZpbmUgTExJTlRf
SEVMUEVSX0RFQ0wobmFtZSkgXAorICAgIGV4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGlu
dF8jI25hbWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCisKK0xMSU5UX0hFTFBF
Ul9ERUNMKHRyYWNlX3Byb2xvZ3VlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3Vl
X2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVj
a19mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25z
dHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2UpOworTExJTlRfSEVMUEVSX0RFQ0woc3Bl
Y2lhbF90cmFjZSk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpOworTExJTlRfSEVMUEVS
X0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVu
dHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5
X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVu
dHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVS
X0RFQ0wobG9vcF9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSk7CitMTElOVF9IRUxQ
RVJfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
YWxsX2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0
eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbik7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY3JlYXRlX3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnZl
cnRfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVjdCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXdfYXJyYXlfYnVmZmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfcmVnZXhwKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3N0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2xlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVf
aW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wb3N0X2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9kZWMp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZWdhdGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2FkZCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rpdik7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbW9kKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3JzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdXJzaGlmdCk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9iaXRvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNr
X2hhc19pbnN0YW5jZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZik7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9pc191bmRlZmluZWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Jvb2xlYW4pOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfaXNfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3QpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9pbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9yZXNvbHZlX2dsb2JhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9i
YWxfZHluYW1pYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2
ZV9nbG9iYWxfZHluYW1pYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9iYXNl
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2dldF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5n
dGgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZGVsX2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlf
dmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3B1dF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHV0X2dldHRlcl9zZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2ptcF9zY29wZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNz
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2pncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2pubGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfc3dpdGNoX2ltbSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2NoYXIp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25ld19mdW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVu
Y19leHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJh
cmdzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2dldF9wbmFtZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRf
cG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVz
aF9uZXdfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2RlYnVnKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxf
Y2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCk7CisKK30g
fSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisj
ZW5kaWYgLy8gTExJbnRIZWxwZXJzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisjZGVmaW5lIExM
SW50T2ZmbGluZUFzbUNvbmZpZ19oCisKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1
ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0lubGluZUFzbS5oPgorI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4NikKKyNkZWZpbmUgT0ZGTElORV9BU01f
WDg2IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisjZW5kaWYKKworI2lmIENQ
VShBUk1fVEhVTUIyKQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAxCisjZWxzZQorI2RlZmlu
ZSBPRkZMSU5FX0FTTV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyNk
ZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElO
RV9BU01fQVNTRVJUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUoQklHX0VORElBTikKKyNk
ZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FT
TV9CSUdfRU5ESUFOIDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKExMSU5UX09TUl9UT19KSVQpCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVf
QVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcK
KyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQorI2Vsc2UKKyNkZWZpbmUg
T0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisKKyNpZiBDUFUoQVJNX1RI
VU1CMikKKyNkZWZpbmUgT0ZGTElORV9BU01fR0xPQkFMX0xBQkVMKGxhYmVsKSAgICAgICAgICBc
CisgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGFiZWwpICJcbiIgICAgICAgICAgXAorICAg
IEhJREVfU1lNQk9MKG5hbWUpICJcbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiLnRo
dW1iXG4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIi50aHVtYl9m
dW5jICIgVEhVTUJfRlVOQ19QQVJBTShsYWJlbCkgIlxuIiAgXAorICAgIFNZTUJPTF9TVFJJTkco
bGFiZWwpICI6XG4iCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGFi
ZWwpICAgICAgICAgXAorICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxhYmVsKSAiXG4iICAg
ICAgICAgXAorICAgIEhJREVfU1lNQk9MKG5hbWUpICJcbiIgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIFNZTUJPTF9TVFJJTkcobGFiZWwpICI6XG4iCisjZW5kaWYKKworI2VuZGlmIC8vIExM
SW50T2ZmbGluZUFzbUNvbmZpZ19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTQXJy
YXkuaCIKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5j
bHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNs
dWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNp
bmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKKyNpbmNsdWRlICJK
U1ZhcmlhYmxlT2JqZWN0LmgiCisjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmgiCisjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKKyNpbmNsdWRl
ICJSZWdpc3RlckZpbGUuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisjaW5jbHVkZSAiU3Ry
dWN0dXJlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJWYWx1ZVBy
b2ZpbGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCisjZGVmaW5lIE9GRkxJTkVfQVNNX09GRlNFVE9GKGNsYXp6LCBmaWVsZCkgT0JKRUNU
X09GRlNFVE9GKGNsYXp6LCBmaWVsZCkKKworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yIHsK
K3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQqIGR1bW15KCk7Cit9OworCitjb25z
dCB1bnNpZ25lZCogTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpCit7CisvLyBUaGlzIGlz
IGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRzX2V4dHJhY3Rv
ci5yYiwgYW5kIGNvbnRhaW5zIGNvZGUKKy8vIHRvIGNyZWF0ZSBhIHRhYmxlIG9mIG9mZnNldHMs
IHNpemVzLCBhbmQgYSBoZWFkZXIgaWRlbnRpZnlpbmcgd2hhdCBjb21iaW5hdGlvbiBvZgorLy8g
UGxhdGZvcm0uaCBtYWNyb3Mgd2UgaGF2ZSBzZXQuIFdlIGluY2x1ZGUgaXQgaW5zaWRlIG9mIGEg
bWV0aG9kIG9uIExMSW50T2Zmc2V0c0V4dHJhY3RvcgorLy8gYmVjYXVzZSB0aGUgZmllbGRzIHdo
b3NlIG9mZnNldHMgd2UncmUgZXh0cmFjdGluZyBhcmUgbW9zdGx5IHByaXZhdGUuIFNvIHdlIG1h
a2UgdGhlaXIKKy8vIGNsYXNzZXMgZnJpZW5kcyB3aXRoIExMSW50T2Zmc2V0c0V4dHJhY3Rvciwg
YW5kIGluY2x1ZGUgdGhlIGhlYWRlciBoZXJlLCB0byBnZXQgdGhlIEMrKworLy8gY29tcGlsZXIg
dG8ga2luZGx5IHN0ZXAgYXNpZGUgYW5kIHlpZWxkIHRvIG91ciBiZXN0IGludGVudGlvbnMuCisj
aW5jbHVkZSAiTExJbnREZXNpcmVkT2Zmc2V0cy5oIgorICAgIHJldHVybiBleHRyYWN0b3JUYWJs
ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK2ludCBtYWluKGludCwgY2hhcioqKQorewor
ICAgIC8vIE91dCBvZiBhbiBhYnVuZGFuY2Ugb2YgY2F1dGlvbiwgbWFrZSBzdXJlIHRoYXQgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpIGlzIGxpdmUsCisgICAgLy8gYW5kIHRoZSBleHRy
YWN0b3JUYWJsZSBpcyBsaXZlLCB0b28uCisgICAgcHJpbnRmKCIlcFxuIiwgSlNDOjpMTEludE9m
ZnNldHNFeHRyYWN0b3I6OmR1bW15KCkpOworICAgIHJldHVybiAwOworfQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKKwor
I2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgiCisjaW5jbHVk
ZSAiTGlua0J1ZmZlci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFt
ZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCB2
b2lkICgqdGFyZ2V0KSgpKQoreworICAgIEpTSW50ZXJmYWNlSklUIGppdDsKKyAgICAKKyAgICAv
LyBGSVhNRTogdGhlcmUncyBwcm9iYWJseSBhIGJldHRlciB3YXkgdG8gZG8gaXQgb24gWDg2LCBi
dXQgSSdtIG5vdCBzdXJlIEkgY2FyZS4KKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1
c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KHRhcmdldCkpLCBKU0ludGVyZmFjZUpJVDo6
cmVnVDApOworICAgIGppdC5qdW1wKEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgCisgICAg
TGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigqZ2xvYmFsRGF0YSwgJmppdCwgR0xPQkFMX1RIVU5LX0lE
KTsKKyAgICByZXR1cm4gcGF0Y2hCdWZmZXIuZmluYWxpemVDb2RlKCk7Cit9CisKK01hY3JvQXNz
ZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8o
Z2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpOworfQorCitNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9y
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1
ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNr
VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9hcml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNv
bnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEp
Cit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRh
KQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGlu
dF9ldmFsX3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRy
eVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4g
Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1
ZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxF
KExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3Mu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50VGh1bmtzX2gKKyNkZWZpbmUgTExJ
bnRUaHVua3NfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJ
TlQpCisKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEpTR2xvYmFsRGF0YTsKKworbmFtZXNwYWNlIExMSW50IHsKKworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9i
YWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRy
eVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1
bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dl
bmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlU
aHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9n
cmFtRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTElu
dFRodW5rc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIzNzQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKwor
IyBDcmFzaCBjb3Vyc2Ugb24gdGhlIGxhbmd1YWdlIHRoYXQgdGhpcyBpcyB3cml0dGVuIGluICh3
aGljaCBJIGp1c3QgY2FsbAorIyAiYXNzZW1ibHkiIGV2ZW4gdGhvdWdoIGl0J3MgbW9yZSB0aGFu
IHRoYXQpOgorIworIyAtIE1vc3RseSBnYXMtc3R5bGUgb3BlcmFuZCBvcmRlcmluZy4gVGhlIGxh
c3Qgb3BlcmFuZCB0ZW5kcyB0byBiZSB0aGUKKyMgICBkZXN0aW5hdGlvbi4gU28gImEgOj0gYiIg
aXMgd3JpdHRlbiBhcyAibW92IGIsIGEiLiBCdXQgdW5saWtlIGdhcywKKyMgICBjb21wYXJpc29u
cyBhcmUgaW4tb3JkZXIsIHNvICJpZiAoYSA8IGIpIiBpcyB3cml0dGVuIGFzCisjICAgImJpbHQg
YSwgYiwgLi4uIi4KKyMKKyMgLSAiYiIgPSBieXRlLCAiaCIgPSAxNi1iaXQgd29yZCwgImkiID0g
MzItYml0IHdvcmQsICJwIiA9IHBvaW50ZXIuCisjICAgQ3VycmVudGx5IHRoaXMgaXMganVzdCAz
Mi1iaXQgc28gImkiIGFuZCAicCIgYXJlIGludGVyY2hhbmdlYWJsZQorIyAgIGV4Y2VwdCB3aGVu
IGFuIG9wIHN1cHBvcnRzIG9uZSBidXQgbm90IHRoZSBvdGhlci4KKyMKKyMgLSBJbiBnZW5lcmFs
LCB2YWxpZCBvcGVyYW5kcyBmb3IgbWFjcm8gaW52b2NhdGlvbnMgYW5kIGluc3RydWN0aW9ucyBh
cmUKKyMgICByZWdpc3RlcnMgKGVnICJ0MCIpLCBhZGRyZXNzZXMgKGVnICI0W3QwXSIpLCBiYXNl
LWluZGV4IGFkZHJlc3NlcworIyAgIChlZyAiN1t0MCwgdDEsIDJdIiksIGFic29sdXRlIGFkZHJl
c3NlcyAoZWcgIjB4YTAwMDAwMDBbXSIpLCBvciBsYWJlbHMKKyMgICAoZWcgIl9mb28iIG9yICIu
Zm9vIikuIE1hY3JvIGludm9jYXRpb25zIGNhbiBhbHNvIHRha2UgYW5vbnltb3VzCisjICAgbWFj
cm9zIGFzIG9wZXJhbmRzLiBJbnN0cnVjdGlvbnMgY2Fubm90IHRha2UgYW5vbnltb3VzIG1hY3Jv
cy4KKyMKKyMgLSBMYWJlbHMgbXVzdCBoYXZlIG5hbWVzIHRoYXQgYmVnaW4gd2l0aCBlaXRoZXIg
Il8iIG9yICIuIi4gIEEgIi4iIGxhYmVsCisjICAgaXMgbG9jYWwgYW5kIGdldHMgcmVuYW1lZCBi
ZWZvcmUgY29kZSBnZW4gdG8gbWluaW1pemUgbmFtZXNwYWNlCisjICAgcG9sbHV0aW9uLiBBICJf
IiBsYWJlbCBpcyBhbiBleHRlcm4gc3ltYm9sIChpLmUuICIuZ2xvYmwiKS4gVGhlICJfIgorIyAg
IG1heSBvciBtYXkgbm90IGJlIHJlbW92ZWQgZHVyaW5nIGNvZGUgZ2VuIGRlcGVuZGluZyBvbiB3
aGV0aGVyIHRoZSBhc20KKyMgICBjb252ZW50aW9ucyBmb3IgQyBuYW1lIG1hbmdsaW5nIG9uIHRo
ZSB0YXJnZXQgcGxhdGZvcm0gbWFuZGF0ZSBhICJfIgorIyAgIHByZWZpeC4KKyMKKyMgLSBBICJt
YWNybyIgaXMgYSBsYW1iZGEgZXhwcmVzc2lvbiwgd2hpY2ggbWF5IGJlIGVpdGhlciBhbm9ueW1v
dXMgb3IKKyMgICBuYW1lZC4gQnV0IHRoaXMgaGFzIGNhdmVhdHMuICJtYWNybyIgY2FuIHRha2Ug
emVybyBvciBtb3JlIGFyZ3VtZW50cywKKyMgICB3aGljaCBtYXkgYmUgbWFjcm9zIG9yIGFueSB2
YWxpZCBvcGVyYW5kcywgYnV0IGl0IGNhbiBvbmx5IHJldHVybgorIyAgIGNvZGUuIEJ1dCB5b3Ug
Y2FuIGRvIFR1cmluZy1jb21wbGV0ZSB0aGluZ3MgdmlhIGNvbnRpbnVhdGlvbiBwYXNzaW5nCisj
ICAgc3R5bGU6ICJtYWNybyBmb28gKGEsIGIpIGIoYSkgZW5kIGZvbyhmb28sIGZvbykiLiBBY3R1
YWxseSwgZG9uJ3QgZG8KKyMgICB0aGF0LCBzaW5jZSB5b3UnbGwganVzdCBjcmFzaCB0aGUgYXNz
ZW1ibGVyLgorIworIyAtIEFuICJpZiIgaXMgYSBjb25kaXRpb25hbCBvbiBzZXR0aW5ncy4gQW55
IGlkZW50aWZpZXIgc3VwcGxpZWQgaW4gdGhlCisjICAgcHJlZGljYXRlIG9mIGFuICJpZiIgaXMg
YXNzdW1lZCB0byBiZSBhICNkZWZpbmUgdGhhdCBpcyBhdmFpbGFibGUKKyMgICBkdXJpbmcgY29k
ZSBnZW4uIFNvIHlvdSBjYW4ndCB1c2UgImlmIiBmb3IgY29tcHV0YXRpb24gaW4gYSBtYWNybywg
YnV0CisjICAgeW91IGNhbiB1c2UgaXQgdG8gc2VsZWN0IGRpZmZlcmVudCBwaWVjZXMgb2YgY29k
ZSBmb3IgZGlmZmVyZW50CisjICAgcGxhdGZvcm1zLgorIworIyAtIEFyZ3VtZW50cyB0byBtYWNy
b3MgZm9sbG93IGxleGljYWwgc2NvcGluZyByYXRoZXIgdGhhbiBkeW5hbWljIHNjb3BpbmcuCisj
ICAgQ29uc3QncyBhbHNvIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgYW5kIG1heSBvdmVycmlkZSAo
aGlkZSkgYXJndW1lbnRzCisjICAgb3Igb3RoZXIgY29uc3RzLiBBbGwgdmFyaWFibGVzIChhcmd1
bWVudHMgYW5kIGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gb3BlcmFuZHMuIEFkZGl0
aW9uYWxseSwgYXJndW1lbnRzIChidXQgbm90IGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAg
dG8gbWFjcm9zLgorCisKKyMgVGhlc2UgZGVjbGFyYXRpb25zIG11c3QgbWF0Y2ggaW50ZXJwcmV0
ZXIvUmVnaXN0ZXJGaWxlLmguCitjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gNDgKK2NvbnN0
IEFyZ3VtZW50Q291bnQgPSAtNDgKK2NvbnN0IENhbGxlckZyYW1lID0gLTQwCitjb25zdCBDYWxs
ZWUgPSAtMzIKK2NvbnN0IFNjb3BlQ2hhaW4gPSAtMjQKK2NvbnN0IFJldHVyblBDID0gLTE2Citj
b25zdCBDb2RlQmxvY2sgPSAtOAorCitjb25zdCBUaGlzQXJndW1lbnRPZmZzZXQgPSAtQ2FsbEZy
YW1lSGVhZGVyU2l6ZSAtIDgKKworIyBEZWNsYXJlIHNvbWUgYWxpYXNlcyBmb3IgdGhlIHJlZ2lz
dGVycyB3ZSB3aWxsIHVzZS4KK2NvbnN0IFBDID0gdDQKKworIyBPZmZzZXRzIG5lZWRlZCBmb3Ig
cmVhc29uaW5nIGFib3V0IHZhbHVlIHJlcHJlc2VudGF0aW9uLgoraWYgQklHX0VORElBTgorICAg
IGNvbnN0IFRhZ09mZnNldCA9IDAKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gNAorZWxzZQor
ICAgIGNvbnN0IFRhZ09mZnNldCA9IDQKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gMAorZW5k
CisKKyMgVmFsdWUgcmVwcmVzZW50YXRpb24gY29uc3RhbnRzLgorY29uc3QgSW50MzJUYWcgPSAt
MQorY29uc3QgQm9vbGVhblRhZyA9IC0yCitjb25zdCBOdWxsVGFnID0gLTMKK2NvbnN0IFVuZGVm
aW5lZFRhZyA9IC00Citjb25zdCBDZWxsVGFnID0gLTUKK2NvbnN0IEVtcHR5VmFsdWVUYWcgPSAt
NgorY29uc3QgRGVsZXRlZFZhbHVlVGFnID0gLTcKK2NvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRW
YWx1ZVRhZworCisjIFR5cGUgY29uc3RhbnRzLgorY29uc3QgU3RyaW5nVHlwZSA9IDUKK2NvbnN0
IE9iamVjdFR5cGUgPSAxMAorCisjIFR5cGUgZmxhZ3MgY29uc3RhbnRzLgorY29uc3QgTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCA9IDEKK2NvbnN0IEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDIKK2Nv
bnN0IEltcGxlbWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPSA4CisKKyMgSGVhcCBhbGxvY2F0aW9u
IGNvbnN0YW50cy4KK2NvbnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9IDMKKworIyBC
eXRlY29kZSBvcGVyYW5kIGNvbnN0YW50cy4KK2NvbnN0IEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4ID0gMHg0MDAwMDAwMAorCisjIENvZGUgdHlwZSBjb25zdGFudHMuCitjb25zdCBHbG9iYWxD
b2RlID0gMAorY29uc3QgRXZhbENvZGUgPSAxCitjb25zdCBGdW5jdGlvbkNvZGUgPSAyCisKKyMg
VGhlIGludGVycHJldGVyIHN0ZWFscyB0aGUgdGFnIHdvcmQgb2YgdGhlIGFyZ3VtZW50IGNvdW50
LgorY29uc3QgTExJbnRSZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQKKworIyBU
aGlzIG11c3QgbWF0Y2ggd3RmL1ZlY3Rvci5oLgorY29uc3QgVmVjdG9yU2l6ZU9mZnNldCA9IDAK
K2NvbnN0IFZlY3RvckJ1ZmZlck9mZnNldCA9IDQKKworIyBTdHJpbmcgZmxhZ3MuCitjb25zdCBI
YXNoRmxhZ3M4Qml0QnVmZmVyID0gNjQKKworIyBVdGlsaXRpZXMKK21hY3JvIGNyYXNoKCkKKyAg
ICBzdG9yZWkgMCwgMHhiYmFkYmVlZltdCisgICAgbW92ZSAwLCB0MAorICAgIGNhbGwgdDAKK2Vu
ZAorCittYWNybyBhc3NlcnQoYXNzZXJ0aW9uKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAg
ICAgIGFzc2VydGlvbigub2spCisgICAgICAgIGNyYXNoKCkKKyAgICAub2s6CisgICAgZW5kCitl
bmQKKworbWFjcm8gcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVn
aXN0ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBsciwgZGVzdGluYXRpb25SZWdpc3Rl
cgorICAgIGVsc2lmIFg4NgorICAgICAgICBwb3AgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVs
c2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyByZXN0b3JlUmV0dXJuQWRk
cmVzc0JlZm9yZVJldHVybihzb3VyY2VSZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBt
b3ZlIHNvdXJjZVJlZ2lzdGVyLCBscgorICAgIGVsc2lmIFg4NgorICAgICAgICBwdXNoIHNvdXJj
ZVJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3Jv
IGRpc3BhdGNoKGFkdmFuY2UpCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMKKyAgICBqbXAgW1BD
XQorZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldChwY09mZnNldCkKKyAgICBs
c2hpZnRpIDIsIHBjT2Zmc2V0CisgICAgYWRkcCBwY09mZnNldCwgUEMKKyAgICBqbXAgW1BDXQor
ZW5kCisKK21hY3JvIGRpc3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQorICAgIGxvYWRpIHBjT2Zmc2V0
LCB0MAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MCkKK2VuZAorCittYWNybyBkaXNw
YXRjaEFmdGVyQ2FsbCgpCisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJd
LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBh
cmcyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBh
cmcyLCB0MQorICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9r
ZSBhcmcyLCAxCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVu
Y3Rpb24KK2VuZAorCisjIFRoaXMgYmFyZWx5IHdvcmtzLiBhcmczIGFuZCBhcmc0IHNob3VsZCBw
cm9iYWJseSBiZSBpbW1lZGlhdGVzLgorbWFjcm8gY0NhbGw0KGZ1bmN0aW9uLCBhcmcxLCBhcmcy
LCBhcmczLCBhcmc0KQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAg
ICAgbW92ZSBhcmcyLCB0MQorICAgICAgICBtb3ZlIGFyZzMsIHQyCisgICAgICAgIG1vdmUgYXJn
NCwgdDMKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBhcmcxLCAwCisgICAgICAgIHBva2Ug
YXJnMiwgMQorICAgICAgICBwb2tlIGFyZzMsIDIKKyAgICAgICAgcG9rZSBhcmc0LCAzCisgICAg
ZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCitt
YWNybyBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAg
IG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0
aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24g
c3RyZWFtLiBmcm9tV2hlcmUKKyMgc2hvdWxkIGJlIGFuIGltbWVkaWF0ZSBpbnRlZ2VyIC0gYW55
IGludGVnZXIgeW91IGxpa2U7IHVzZSBpdCB0byBpZGVudGlmeSB0aGUgcGxhY2UgeW91J3JlCisj
IGRlYnVnZ2luZyBmcm9tLiBvcGVyYW5kIHNob3VsZCBsaWtld2lzZSBiZSBhbiBpbW1lZGlhdGUs
IGFuZCBzaG91bGQgaWRlbnRpZnkgdGhlIG9wZXJhbmQKKyMgaW4gdGhlIGluc3RydWN0aW9uIHN0
cmVhbSB5b3UnZCBsaWtlIHRvIHByaW50IG91dC4KK21hY3JvIHRyYWNlT3BlcmFuZChmcm9tV2hl
cmUsIG9wZXJhbmQpCisgICAgY0NhbGw0KF9sbGludF90cmFjZV9vcGVyYW5kLCBjZnIsIFBDLCBm
cm9tV2hlcmUsIG9wZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2Vu
ZAorCisjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCB0aGUgdmFs
dWUgb2YgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24KKyMgc3RyZWFtLiBTYW1lIGFzIHRy
YWNlT3BlcmFuZCgpLCBidXQgYXNzdW1lcyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgcmVnaXN0ZXIs
IGFuZCBwcmludHMgaXRzCisjIHZhbHVlLgorbWFjcm8gdHJhY2VWYWx1ZShmcm9tV2hlcmUsIG9w
ZXJhbmQpCisgICAgY0NhbGw0KF9sbGludF90cmFjZV92YWx1ZSwgY2ZyLCBQQywgZnJvbVdoZXJl
LCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworbWFj
cm8gdHJhY2VFeGVjdXRpb24oKQorICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAgICAgIGNh
bGxIZWxwZXIoX2xsaW50X3RyYWNlKQorICAgIGVuZAorZW5kCisKKyMgQ2FsbCBhIGhlbHBlciBm
b3IgY2FsbCBvcGNvZGVzLgorbWFjcm8gY2FsbENhbGxIZWxwZXIoYWR2YW5jZSwgaGVscGVyLCBh
Y3Rpb24pCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMsIHQwCisgICAgc3RvcmVwIHQwLCBBcmd1
bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQor
ICAgIG1vdmUgdDEsIGNmcgorICAgIGFjdGlvbih0MCkKK2VuZAorCittYWNybyBzbG93UGF0aEZv
ckNhbGwoYWR2YW5jZSwgaGVscGVyKQorICAgIGNhbGxDYWxsSGVscGVyKAorICAgICAgICBhZHZh
bmNlLAorICAgICAgICBoZWxwZXIsCisgICAgICAgIG1hY3JvIChjYWxsZWUpCisgICAgICAgICAg
ICBjYWxsIGNhbGxlZQorICAgICAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgICAgICBl
bmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVChpbmNyZW1lbnQsIGFjdGlvbikKKyAg
ICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICAg
ICAgYmFkZGlzIGluY3JlbWVudCwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJbdDBd
LCAuY29udGludWUKKyAgICAgICAgYWN0aW9uKCkKKyAgICAuY29udGludWU6CisgICAgZW5kCitl
bmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGNoZWNrU3dpdGNoVG9K
SVQoCisgICAgICAgIDEsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBzdG9yZWkgUEMs
IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgICAgICAgICAgY0NhbGwyKF9sbGlu
dF9sb29wX29zciwgY2ZyLCBQQykKKyAgICAgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAgICAg
ICAgYnRweiB0MCwgLnJlY292ZXIKKyAgICAgICAgICAgIGptcCB0MAorICAgICAgICAucmVjb3Zl
cjoKKyAgICAgICAgICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMK
KyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgp
CisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMTAsCisgICAgICAgIG1hY3JvICgpCisg
ICAgICAgICAgICBjYWxsSGVscGVyKF9sbGludF9yZXBsYWNlKQorICAgICAgICBlbmQpCitlbmQK
KworbWFjcm8gYXNzZXJ0Tm90Q29uc3RhbnQoaW5kZXgpCisgICAgYXNzZXJ0KG1hY3JvIChvaykg
YmlsdCBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIG9rIGVuZCkKK2VuZAorCisj
IEluZGV4LCB0YWcsIGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5k
ZXggaXMgbm90CisjIGNoYW5nZWQuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKGluZGV4
LCB0YWcsIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1w
IC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTog
aWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsb2FkcCBUYWdPZmZzZXRbcGF5bG9h
ZCwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4
LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBtYXkgYmUg
dGhlIHNhbWUgcmVnaXN0ZXIuIEluZGV4IG1heSBiZSBjbG9iYmVyZWQuCittYWNybyBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyhpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRl
eCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09m
ZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGlu
ZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0YWcKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3Rl
cnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdGFnXSwgdGFnCisgICAgIyBUaGVyZSBpcyBhIGJpdCBv
ZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3Rh
bnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8g
KHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbHNoaWZ0aSAz
LCBpbmRleAorICAgIGFkZHAgaW5kZXgsIHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdGFn
XSwgcGF5bG9hZAorICAgIGxvYWRwIFRhZ09mZnNldFt0YWddLCB0YWcKKy5kb25lOgorZW5kCisK
K21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKGluZGV4LCB0YWdD
aGVjaywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4LCAuY29uc3RhbnQKKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0pCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAu
ZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAg
bG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0
W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlm
IHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0W3BheWxv
YWQsIGluZGV4LCA4XSkKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4
XSwgcGF5bG9hZAorLmRvbmU6CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRp
ZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdCBtdXRhdGVkLiBVc2UKKyMgdGhpcyBpZiB5
b3Uga25vdyB3aGF0IHRoZSB0YWcgb2YgdGhlIHZhcmlhYmxlIHNob3VsZCBiZS4gRG9pbmcgdGhl
IHRhZworIyB0ZXN0IGFzIHBhcnQgb2YgbG9hZGluZyB0aGUgdmFyaWFibGUgcmVkdWNlcyByZWdp
c3RlciB1c2UsIGJ1dCBtYXkgbm90CisjIGJlIGZhc3RlciB0aGFuIGRvaW5nIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUgZm9sbG93ZWQgYnkgYSBicmFuY2ggb24gdGhlCisjIHRhZy4KK21hY3JvIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywgcGF5bG9hZCwg
c2xvdykKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgKKyAgICAg
ICAgaW5kZXgsCisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGJpbmVxIGFjdHVhbFRhZywgZXhw
ZWN0ZWRUYWcsIHNsb3cgZW5kLAorICAgICAgICBwYXlsb2FkKQorZW5kCisKK21hY3JvIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKGluZGV4LCBwYXlsb2FkKQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKAorICAgICAgICBpbmRleCwKKyAg
ICAgICAgbWFjcm8gKGFjdHVhbFRhZykgZW5kLAorICAgICAgICBwYXlsb2FkKQorZW5kCisKK21h
Y3JvIHdyaXRlQmFycmllcih0YWcsIHBheWxvYWQpCisgICAgIyBOb3RoaW5nIHRvIGRvLCBzaW5j
ZSB3ZSBkb24ndCBoYXZlIGEgZ2VuZXJhdGlvbmFsIG9yIGluY3JlbWVudGFsIGNvbGxlY3Rvci4K
K2VuZAorCittYWNybyB2YWx1ZVByb2ZpbGUodGFnLCBwYXlsb2FkLCBwcm9maWxlKQorICAgIHN0
b3JlaSB0YWcsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3Byb2ZpbGVdCisg
ICAgc3RvcmVpIHBheWxvYWQsIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNl
dFtwcm9maWxlXQorZW5kCisKKworIyBJbmRpY2F0ZSB0aGUgYmVnaW5uaW5nIG9mIExMSW50Lgor
X2xsaW50X2JlZ2luOgorICAgIGNyYXNoKCkKKworCisjIEVudHJ5cG9pbnRzIGludG8gdGhlIGlu
dGVycHJldGVyCisKK21hY3JvIGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlcih0YXJnZXRS
ZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2Fk
cCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3Rl
cgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsW3Rhcmdl
dFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkZvckNvbnN0
cnVjdENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2Zy
XSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFy
Z2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3Rl
cgorZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVy
KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3Jv
IGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgIHN0b3JlcCBzb3Vy
Y2VSZWdpc3RlciwgQ29kZUJsb2NrW2Nmcl0KK2VuZAorCittYWNybyBub3RGdW5jdGlvbkNvZGVC
bG9ja1NldHRlcihzb3VyY2VSZWdpc3RlcikKKyAgICAjIE5vdGhpbmcgdG8gZG8hCitlbmQKKwor
IyBEbyB0aGUgYmFyZSBtaW5pbXVtIHJlcXVpcmVkIHRvIGV4ZWN1dGUgY29kZS4gU2V0cyB1cCB0
aGUgUEMsIGxlYXZlIHRoZSBDb2RlQmxvY2sqCisjIGluIHQxLiBNYXkgYWxzbyB0cmlnZ2VyIHBy
b2xvZ3VlIGVudHJ5IE9TUi4KK21hY3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJs
b2NrU2V0dGVyLCBvc3JIZWxwZXIsIHRyYWNlSGVscGVyKQorICAgIHByZXNlcnZlUmV0dXJuQWRk
cmVzc0FmdGVyQ2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQg
Y2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KKyAgICBzdG9yZXAgdDIsIFJldHVyblBDW2Nmcl0KKyAg
ICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKHRyYWNlSGVscGVyKQor
ICAgIGVuZAorICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICBpZiBKSVRfRU5BQkxFRAorICAg
ICAgICBiYWRkaXMgNSwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJbdDFdLCAuY29u
dGludWUKKyAgICAgICAgY0NhbGwyKG9zckhlbHBlciwgY2ZyLCBQQykKKyAgICAgICAgbW92ZSB0
MSwgY2ZyCisgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgIGxvYWRwIFJldHVyblBD
W2Nmcl0sIHQyCisgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQor
ICAgICAgICBqbXAgdDAKKyAgICAucmVjb3ZlcjoKKyAgICAgICAgY29kZUJsb2NrR2V0dGVyKHQx
KQorICAgIC5jb250aW51ZToKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tTZXR0ZXIodDEpCisgICAg
CisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlv
bnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0
aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCitlbmQKKworIyBFeHBlY3RzIHRoYXQg
Q29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGlu
ZC4KKyMgTXVzdCBjYWxsIGRpc3BhdGNoKDApIGFmdGVyIGNhbGxpbmcgdGhpcy4KK21hY3JvIGZ1
bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1NraXApCisgICAgIyBQcm9maWxlIHRoZSBh
cmd1bWVudHMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hvaWNlIGJ1dCB0byBkbyB0aGlz
LiBUaGlzCisgICAgIyBjb2RlIGlzIHByZXR0eSBob3JyZW5kb3VzIGJlY2F1c2Ugb2YgdGhlIGRp
ZmZlcmVuY2UgaW4gb3JkZXJpbmcgYmV0d2VlbgorICAgICMgYXJndW1lbnRzIGFuZCB2YWx1ZSBw
cm9maWxlcywgdGhlIGRlc2lyZSB0byBoYXZlIGEgc2ltcGxlIGxvb3AtZG93bi10by16ZXJvCisg
ICAgIyBsb29wLCBhbmQgdGhlIGRlc2lyZSB0byB1c2Ugb25seSB0aHJlZSByZWdpc3RlcnMgc28g
YXMgdG8gcHJlc2VydmUgdGhlIFBDIGFuZAorICAgICMgdGhlIGNvZGUgYmxvY2suIEl0IGlzIGxp
a2VseSB0aGF0IHRoaXMgY29kZSBzaG91bGQgYmUgcmV3cml0dGVuIGluIGEgbW9yZQorICAgICMg
b3B0aW1hbCB3YXkgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBoYXZlIG1vcmUgdGhhbiBmaXZlIHJl
Z2lzdGVycyBhdmFpbGFibGUKKyAgICAjIGZvciBhcmJpdHJhcnkgdXNlIGluIHRoZSBpbnRlcnBy
ZXRlci4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIHQwCisgICAg
YWRkaSAtcHJvZmlsZUFyZ1NraXAsIHQwICMgVXNlIGFkZGkgYmVjYXVzZSB0aGF0J3Mgd2hhdCBo
YXMgdGhlIHBlZXBob2xlCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHQwLCAwLCBvayBl
bmQpCisgICAgYnRpeiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QxXSwgdDMK
KyAgICBtdWxpIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0MiAjIEFhYWFhaGhoaCEgTmVlZCBz
dHJlbmd0aCByZWR1Y3Rpb24hCisgICAgbmVnaSB0MAorICAgIGxzaGlmdGkgMywgdDAKKyAgICBh
ZGRwIHQyLCB0MworLmFyZ3VtZW50UHJvZmlsZUxvb3A6CisgICAgbG9hZGkgVGhpc0FyZ3VtZW50
T2Zmc2V0ICsgVGFnT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIK
KyAgICBzdWJwIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQzCisgICAgc3RvcmVpIHQyLCBwcm9maWxl
QXJnU2tpcCAqIHNpemVvZiBWYWx1ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyAr
IFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zm
c2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIs
IHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVlUHJvZmlsZTo6bV9i
dWNrZXRzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBiYWRkaW56IDgsIHQwLCAuYXJndW1lbnRQ
cm9maWxlTG9vcAorLmFyZ3VtZW50UHJvZmlsZURvbmU6CisgICAgCisgICAgIyBDaGVjayBzdGFj
ayBoZWlnaHQuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lzdGVyc1t0MV0s
IHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MgorICAgIGxvYWRw
IEpTR2xvYmFsRGF0YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MiAgICMgRklYTUU6IENhbiBnZXQgdG8g
dGhlIFJlZ2lzdGVyRmlsZSBmcm9tIHRoZSBKSVRTdGFja0ZyYW1lCisgICAgbHNoaWZ0aSAzLCB0
MAorICAgIGFkZHAgdDAsIGNmciwgdDAKKyAgICBicGFlcSBJbnRlcnByZXRlcjo6bV9yZWdpc3Rl
ckZpbGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCisKKyAg
ICAjIFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBoZWxwZXIuCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVjaykKKy5zdGFja0hlaWdodE9L
OgorZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hh
dCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCittYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9u
ZUxhYmVsLCBoZWxwZXIpCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRb
Y2ZyXSwgdDAKKyAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBk
b25lTGFiZWwKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKSAgICMgVGhpcyBoZWxwZXIgaGFz
IGEgc2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4gbm8gZXJyb3IsIHQwICE9IDAgPT4gZXJyb3IK
KyAgICBtb3ZlIHQxLCBjZnIKKyAgICBidGl6IHQwLCAuY29udGludWUKKyAgICBsb2FkcCBKSVRT
dGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNh
bGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNo
aW5lUENGb3JUaHJvd1t0MV0KKy5jb250aW51ZToKKyAgICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5k
IFBDLCBzaW5jZSB0aGUgaGVscGVyIGNsb2JiZXJlZCBpdC4KKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JC
dWZmZXJPZmZzZXRbdDBdLCBQQworICAgIGptcCBkb25lTGFiZWwKK2VuZAorCitfbGxpbnRfcHJv
Z3JhbV9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwg
bm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFj
ZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9ldmFsX3Byb2xvZ3VlOgor
ICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVC
bG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAg
IGRpc3BhdGNoKDApCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgorICAg
IHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxv
Y2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwsIF9sbGludF90cmFj
ZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKKy5mdW5jdGlvbkZvckNhbGxCZWdpbjoKKyAg
ICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xs
aW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBf
bGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGludF90cmFjZV9wcm9s
b2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQorLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46
CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigxKQorICAgIGRpc3BhdGNoKDApCisgICAgCisK
K19sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShmdW5j
dGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxp
bnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9h
cml0eUNoZWNrX2Zvcl9jYWxsKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JD
YWxsQmVnaW4sIF9sbGludF9oZWxwZXJfY2FsbF9hcml0eUNoZWNrKQorCisKK19sbGludF9mdW5j
dGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9y
Q29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50
X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGludF90cmFj
ZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5j
dGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfbGxpbnRfaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNr
KQorCisjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9ucworCitfbGxpbnRfb3BfZW50ZXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxv
YWRpIENvZGVCbG9jazo6bV9udW1WYXJzW3QyXSwgdDIKKyAgICBidGl6IHQyLCAub3BFbnRlckRv
bmUKKyAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAKKyAgICBtb3ZlIDAsIHQxCisub3BFbnRlckxv
b3A6CisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgYnRpbnogdDIs
IC5vcEVudGVyTG9vcAorLm9wRW50ZXJEb25lOgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50
X29wX2NyZWF0ZV9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcs
IC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Ny
ZWF0ZV9hY3RpdmF0aW9uKQorLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmU6CisgICAgZGlzcGF0Y2go
MikKKworCitfbGxpbnRfb3BfaW5pdF9sYXp5X3JlZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtj
ZnIsIHQwLCA4XQorICAgIHN0b3JlaSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBcmd1bWVudHNEb25lCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCisub3BDcmVhdGVBcmd1bWVudHNE
b25lOgorICAgIGRpc3BhdGNoKDIpCisKKworbWFjcm8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNp
emVDbGFzc0luZGV4LCBjbGFzc0luZm9PZmZzZXQsIHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNo
MSwgc2NyYXRjaDIsIHNsb3dDYXNlKQorICAgIGNvbnN0IG9mZnNldE9mTXlTaXplQ2xhc3MgPSBK
U0dsb2JhbERhdGE6OmhlYXAgKyBIZWFwOjptX29iamVjdFNwYWNlICsgTWFya2VkU3BhY2U6Om1f
cHJlY2lzZVNpemVDbGFzc2VzICsgc2l6ZUNsYXNzSW5kZXggKiBzaXplb2YgTWFya2VkU3BhY2U6
OlNpemVDbGFzcworICAgIAorICAgICMgRklYTUU6IHdlIGNhbiBnZXQgdGhlIGdsb2JhbCBkYXRh
IGluIG9uZSBsb2FkIGZyb20gdGhlIHN0YWNrLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBz
Y3JhdGNoMQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2Ny
YXRjaDEKKyAgICAKKyAgICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4gICAg
CisgICAgbG9hZHAgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNwYWNlOjpTaXplQ2xhc3M6
OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKKyAgICBidHB6IHJlc3VsdCwgc2xvd0Nh
c2UKKyAgICAKKyAgICAjIFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAg
ICBsb2FkcCBbcmVzdWx0XSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIG9mZnNldE9m
TXlTaXplQ2xhc3MgKyBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzOjpmaXJzdEZyZWVDZWxsW3NjcmF0
Y2gxXQorCisgICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgbG9hZHAgY2xhc3NJbmZv
T2Zmc2V0W3NjcmF0Y2gxXSwgc2NyYXRjaDIKKyAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRd
CisgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCisgICAg
c3RvcmVwIDAsIEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0KKyAgICBhZGRwIHNpemVv
ZiBKU09iamVjdCwgcmVzdWx0LCBzY3JhdGNoMQorICAgIHN0b3JlcCBzY3JhdGNoMSwgSlNPYmpl
Y3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KK2VuZAorCitfbGxpbnRfb3BfY3JlYXRlX3Ro
aXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGFzc2Vy
dE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRh
ZywgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9w
Q3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFt0MF0sIHQy
CisgICAgYnRweiB0MiwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmpl
Y3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmpl
Y3RDbGFzc0luZm8sIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykK
KworLm9wQ3JlYXRlVGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0
ZV90aGlzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRP
ZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIENlbGxUYWcsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisg
ICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmpl
Y3RUeXBlLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0
VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0
eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmlu
YWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJ
bmZvLCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwg
dDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3
T2JqZWN0U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkKKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheV9idWZmZXIpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdleHApCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQxLCB0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9ub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAs
IHQyLCB0MykKKyAgICBiaW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90U2xvdworICAgIHhvcmkg
MSwgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0
MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5vdFNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENd
LCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIs
IHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAg
IGJpbmVxIHQyLCB0MywgLm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93
CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0Mgor
ICAgIGNpZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBk
aXNwYXRjaCg0KQorCisub3BFcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Vx
KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2VxX251bGw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFz
c2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBD
ZWxsVGFnLCAub3BFcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDEKKyAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2Zs
YWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wRXFOdWxsTm90
SW1tZWRpYXRlCisub3BFcU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIK
KyAgICBjaWVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQyLCB0MQorLm9wRXFOdWxs
Tm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0Mywg
OF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0
MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAu
b3BOZXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0
W1BDXSwgdDIKKyAgICBjaW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRh
Z09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQy
LCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX25lcSkKKyAgICBkaXNwYXRjaCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251
bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRp
IDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAg
ICBqbXAgLm9wTmVxTnVsbE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBj
aW5lcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAg
IGFuZGkgdDIsIHQxCisub3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFu
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5
T3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cK
KyAgICBiaWIgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5v
dFN0cmluZworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAg
YmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5n
VHlwZSwgLnNsb3cKKy5ub3RTdHJpbmc6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxp
dHlPcGVyYXRpb24odDAsIHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0
W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgZGlzcGF0Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlz
cGF0Y2goNCkKK2VuZAorCitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJp
Z2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVscGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9u
c3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0
LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hl
bHBlcl9uc3RyaWN0ZXEpCisKKworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX2xlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2xlc3NlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9n
cmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfZ3JlYXRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVy
ZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQxCisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3Rv
cmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9w
UHJlSW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBk
aXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIElu
dDMyVGFnLCAub3BQcmVEZWNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDEKKyAgICBic3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX3Bvc3RfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQ
b3N0SW5jRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAg
bW92ZSB0MiwgdDMKKyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVp
IEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0KKy5vcFBvc3RJbmNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9wb3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
OFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9z
dERlY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1v
dmUgdDIsIHQzCisgICAgYnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJ
bnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
Cisub3BQb3N0RGVjRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfdG9fanNudW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDAsIHQyLCB0MykKKyAgICBiaWVxIHQyLCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklzSW50
CisgICAgYmlhZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcFRvSnNudW1iZXJTbG93Cisub3BUb0pz
bnVtYmVySXNJbnQ6CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBz
dG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisu
b3BUb0pzbnVtYmVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fanNudW1i
ZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MSwgdDIpCisgICAgYmluZXEgdDEsIEludDMyVGFn
LCAub3BOZWdhdGVTcmNOb3RJbnQKKyAgICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVT
bG93CisgICAgbmVnaSB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMs
IDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0
Y2goMykKKy5vcE5lZ2F0ZVNyY05vdEludDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVn
YXRlU2xvdworICAgIHhvcmkgMHg4MDAwMDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNl
dFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQor
ICAgIGRpc3BhdGNoKDMpCisKKy5vcE5lZ2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX25lZ2F0ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9t
U3RvcmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikK
KyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVn
KHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmlu
ZXEgdDMsIEludDMyVGFnLCAub3AyTm90SW50CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50
ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHQzLCB0MSwgdDAsIC5zbG93LCB0MikKKyAgICBkaXNwYXRj
aCg1KQorCisub3AxTm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5v
dCBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEg
dDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9w
MkRvdWJsZQorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQxLCBmdDEK
KyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJk
IHQxLCB0MywgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAg
ZmlpMmQgdDAsIHQyLCBmdDAKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3Rv
cmVkIGZ0MCwgW2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wMk5vdEludDoKKyAg
ICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFu
ZCBpcyBkZWZpbml0ZWx5IG5vdC4KKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBiaWEgdDMsIExv
d2VzdFRhZywgLnNsb3cKKyAgICBjaTJkIHQwLCBmdDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQor
ICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0Miwg
OF0KKyAgICBkaXNwYXRjaCg1KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAg
ICBkaXNwYXRjaCg1KQorZW5kCisKK21hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRv
dWJsZU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAg
IG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAg
aW50ZWdlck9wZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHN0b3JlaSBp
bnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmln
aHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBk
b3VibGVPcGVyYXRpb24sIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfYWRkOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBz
bG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2FkZCkK
KworCitfbGxpbnRfb3BfbXVsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1
c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBp
bmRleCkKKyAgICAgICAgICAgIGNvbnN0IHNjcmF0Y2ggPSBpbnQzMlRhZyAgICMgV2Uga25vdyB0
aGF0IHdlIGNhbiByZXVzZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEgY29u
c3RhbnQuCisgICAgICAgICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoCisgICAgICAgICAgICBibXVs
aW8gbGVmdCwgc2NyYXRjaCwgc2xvdworICAgICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRvbmUK
KyAgICAgICAgICAgIGJpbHQgbGVmdCwgMCwgc2xvdworICAgICAgICAgICAgYmlsdCByaWdodCwg
MCwgc2xvdworICAgICAgICAuZG9uZToKKyAgICAgICAgICAgIHN0b3JlaSBJbnQzMlRhZywgVGFn
T2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgUGF5bG9h
ZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbXVs
KQorCisKK19sbGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9w
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCByaWdodCwg
c2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCByaWdodCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfc3ViKQorCisKK19sbGludF9vcF9kaXY6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3Jv
IChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgY2kyZCBs
ZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQorICAgICAgICAgICAgZGl2ZCBm
dDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdEludAorICAgICAgICAg
ICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAg
IHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAg
am1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6CisgICAgICAgICAgICBzdG9yZWQgZnQxLCBbY2Zy
LCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl9kaXYpCisKKworX2xsaW50X29wX21vZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGJp
dE9wKG9wZXJhdGlvbiwgaGVscGVyLCBhZHZhbmNlKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEp
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0
MywgSW50MzJUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGxv
YWRpIDRbUENdLCB0MgorICAgIG9wZXJhdGlvbih0MSwgdDAsIC5zbG93KQorICAgIHN0b3JlaSB0
MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBl
cihoZWxwZXIpCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKK2VuZAorCitfbGxpbnRfb3BfbHNoaWZ0
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCBzbG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hl
bHBlcl9sc2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX3JzaGlmdDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xv
dykgcnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfcnNoaWZ0
LAorICAgICAgICA0KQorCisKK19sbGludF9vcF91cnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAg
ICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNs
b3cKKyAgICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3Vyc2hpZnQsCisgICAgICAg
IDQpCisKKworX2xsaW50X29wX2JpdGFuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0
T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5kaSBsZWZ0LCByaWdodCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0YW5kLAorICAgICAgICA1KQorCisKK19sbGlu
dF9vcF9iaXR4b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2JpdHhvciwKKyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0b3I6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHNsb3cpIG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0
b3IsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG5vdDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9w
Qml0bm90U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQw
LCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3Bh
dGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Jp
dG5vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9wQ2hlY2tIYXNJbnN0YW5j
ZVNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNI
YXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBkaXNwYXRjaCgyKQorCisu
b3BDaGVja0hhc0luc3RhbmNlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY2hl
Y2tfaGFzX2luc3RhbmNlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luc3RhbmNl
b2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxl
bWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisgICAgIyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDEsIHQwKQorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsg
VHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJ
bnN0YW5jZW9mU2xvdworICAgIAorICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCisgICAgbG9h
ZGkgMTZbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xv
dworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgCisgICAgIyBSZWdpc3Rl
ciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3ZlIDEsIHQwCisub3BJ
bnN0YW5jZW9mTG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIKKyAg
ICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCisg
ICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRpbnogdDIsIC5vcEluc3Rh
bmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9mRG9uZToKKyAgICBzdG9y
ZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wSW5zdGFuY2VvZlNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luc3RhbmNlb2YpCisgICAgZGlzcGF0
Y2goNSkKKworCitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xs
aW50X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9p
c19udW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9pc19udW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfc3RyaW5n
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNf
c3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX29iamVjdDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX29iamVjdCkK
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19mdW5jdGlvbjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Z1bmN0aW9uKQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2luOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2
ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcmVzb2x2ZV9za2lwKQorICAgIGRpc3BhdGNoKDUpCisKKworbWFjcm8gcmVzb2x2ZUdsb2Jh
bChzaXplLCBzbG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BD
XSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgUHJvcGVydHkgaWRl
bnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAjIDEyW1BDXSAgU3RydWN0dXJl
IHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgICMg
MTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRl
Y29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQxCisgICAgYnBuZXEgdDEsIDEyW1BDXSwgc2xvdworICAgIGxvYWRpIDE2
W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAor
ICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDIsIFRh
Z09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XQorICAgIGxvYWRpIChzaXplIC0gMSkgKiA0W1BDXSwgdDAKKyAgICB2YWx1ZVByb2ZpbGUo
dDIsIHQzLCB0MCkKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIHJlc29sdmVHbG9iYWwoNiwgLm9wUmVzb2x2ZUdsb2JhbFNsb3cpCisg
ICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbFNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3BhdGNoKDYpCisKKworIyBHaXZl
cyB5b3UgdGhlIHNjb3BlIGluIHQwLCB3aGlsZSBhbGxvd2luZyB5b3UgdG8gb3B0aW9uYWxseSBw
ZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9uIHRoZQorIyBzY29wZXMgYXMgdGhleSBhcmUgdHJh
dmVyc2VkLiBzY29wZUNoZWNrKCkgaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHJl
Z2lzdGVyCisjIGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdpc3RlciB0aGF0IGNhbiBiZSB1
c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAorIyB1c2UgdDMsIHNvIHlv
dSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJlLgorbWFjcm8gZ2V0U2NvcGUoZGVCcnVp
amluSW5kZXhPcGVyYW5kLCBzY29wZUNoZWNrKQorICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXls
b2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0Mgor
ICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisgICAgCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQxCisgICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAu
bG9vcAorICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9v
cAorICAgIAorICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0aW9uUmVnaXN0ZXJbdDFdLCB0
MQorCisgICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KKyAg
ICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlv
bgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0
W3QwXSwgdDAKKy5ub0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0MgorICAgIAorICAgIGJ0aXog
dDIsIC5kb25lCisubG9vcDoKKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29w
ZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisgICAgc3ViaSAxLCB0MgorICAgIGJ0aW56IHQyLCAu
bG9vcAorCisuZG9uZToKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYzoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0
YVtzcF0sIHQzCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJlW3Qz
XSwgdDMKKyAgICBnZXRTY29wZSgKKyAgICAgICAgMjBbUENdLAorICAgICAgICBtYWNybyAoc2Nv
cGUsIHNjcmF0Y2gpCisgICAgICAgICAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3Nj
b3BlXSwgc2NyYXRjaAorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVtzY3Jh
dGNoXSwgdDMsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93CisgICAgICAgIGVuZCkK
KyAgICByZXNvbHZlR2xvYmFsKDcsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdykKKyAgICBk
aXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykK
KyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3c6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCisgICAgZGlzcGF0
Y2goNykKKworCitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0
aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgSW5kZXggb2YgcmVnaXN0ZXIgaW4gdGhl
IHNjb3BlLgorICAgICMgMTJbUENdICBEZSBCcnVpamluIGluZGV4LgorICAgIGdldFNjb3BlKDEy
W1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgNFtQQ10sIHQxCisg
ICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0s
IHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAg
IGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
dDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDE2W1BDXSwg
dDEKKyAgICB2YWx1ZVByb2ZpbGUodDMsIHQwLCB0MSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19s
bGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZ2V0U2Nv
cGUoOFtQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDEyW1BDXSwg
dDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MywgdDIpCisgICAgbG9hZGkgNFtQ
Q10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQzLCB0MikKKyAgICBsb2FkcCBTY29wZUNoYWluTm9k
ZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVy
c1t0MF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhb
UENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRw
IEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0
W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MQor
ICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIHZhbHVlUHJv
ZmlsZSh0MiwgdDEsIHQzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9nbG9i
YWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2Jq
ZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0
MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0
W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfYmFzZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfYmFzZSkKKyAgICBk
aXNwYXRjaCg1KQorCisKK19sbGludF9vcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZW5zdXJlX3Byb3Bl
cnR5X2V4aXN0cykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhf
YmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3Jlc29sdmVfd2l0aF9iYXNlKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3Jlc29s
dmVfd2l0aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRf
b3BfZ2V0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIG9ubHkgZG8gbW9u
b21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkg
dGhlCisgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRv
IGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorICAgICMgcGluZy1wb25naW5nIGlzIGZy
ZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUK
KyAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRh
a2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9p
bmcgYW55d2F5LgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5
SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9w
ZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0
MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZz
ZXRbdDAsIHQyXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAg
c3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAzMltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxl
KHQzLCB0MiwgdDEpCisgICAgZGlzcGF0Y2goOSkKKworLm9wR2V0QnlJZFNsb3c6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9pZCkKKyAgICBkaXNwYXRjaCg5KQorCisKK19s
bGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93Cisg
ICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDIKKyAgICBzdWJp
IDEsIHQyCisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBz
dG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisu
b3BHZXRBcmd1bWVudHNMZW5ndGhTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9n
ZXRfYXJndW1lbnRzX2xlbmd0aCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRf
YnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxv
YWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2Vs
bFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2Fk
cCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGJwbmVxIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBsb2FkaSAyMFtQQ10sIHQx
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQwLCB0MikKKyAgICB3cml0ZUJh
cnJpZXIodDAsIHQyKQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KKyAgICBzdG9y
ZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQxXQorICAgIGRpc3BhdGNoKDkpCisKKy5vcFB1dEJ5
SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaWQpCisgICAgZGlz
cGF0Y2goOSkKKworCittYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQ
Q10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQw
LCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgYnBuZXEgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGFkZGl0aW9uYWxDaGVj
a3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9h
ZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBhZGRwIHQxLCB0Mwor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCisgICAgd3JpdGVCYXJy
aWVyKHQxLCB0MikKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSAyNFtQ
Q10sIHQxCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlcCB0MSwg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICBkaXNwYXRjaCg5KQorZW5kCisKK19sbGludF9v
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obWFj
cm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorCisKK19sbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgcHV0QnlJZFRyYW5zaXRpb24oCisgICAgICAg
IG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCisgICAgICAgICAgICBjb25zdCBw
cm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdp
c3RlciBmb3IgdGhlIHByb3RvCisgICAgICAgIAorICAgICAgICAgICAgbG9hZHAgMjhbUENdLCBz
Y3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBl
bmQpCisgICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0s
IHNjcmF0Y2gKKyAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9r
IGVuZCkKKyAgICAgICAgICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNl
dFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorICAgICAgICAubG9vcDoKKyAgICAgICAg
ICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVj
dHVyZV0sIHByb3RvQ2VsbAorICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtw
cm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwg
W3NjcmF0Y2hdLCBzbG93CisgICAgICAgICAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICAgICAgICAg
IGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwg
TnVsbFRhZywgLmxvb3AKKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCkKKworCitfbGxpbnRf
b3BfZGVsX2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfZGVsX2J5X2lkKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9i
eV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNsb3cpCisgICAgbG9hZHAgSlNH
bG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAgYnBu
ZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFn
ZVt0MF0sIHQzCisgICAgYmlhZXEgdDEsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9w
R2V0QnlWYWxTbG93CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgQXJyYXlTdG9yYWdl
OjptX3ZlY3RvciArIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgIGxvYWRpIEFycmF5U3Rv
cmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisgICAgYmllcSB0
MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93CisgICAgc3RvcmVpIHQyLCBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0K
KyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAgdmFsdWVQcm9maWxlKHQyLCB0MSwgdDApCisgICAg
ZGlzcGF0Y2goNSkKKworLm9wR2V0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2dldF9hcmd1
bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVt
cHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDEsIEludDMyVGFnLCB0MiwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cp
CisgICAgYWRkaSAxLCB0MgorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0
W2Nmcl0sIHQxCisgICAgYmlhZXEgdDIsIHQxLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAg
IG5lZ2kgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZz
ZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zm
c2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEKKyAgICBzdG9yZWkgdDAsIFRhZ09m
ZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4
XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEdldEFyZ3VtZW50QnlWYWxTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUp
CisKKworX2xsaW50X29wX2dldF9ieV9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBD
ZWxsVGFnLCB0MSwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAg
IGJwbmVxIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAub3BHZXRCeVBuYW1lU2xvdwor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQw
LCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MAor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSAy
NFtQQ10sIHQwCisgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAorICAgIHN1YmkgMSwgdDAKKyAg
ICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFibGVTbG90c1t0
M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9y
YWdlW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQwLCA4XSwgdDEKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
c3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg3KQorCisub3BHZXRCeVBuYW1lU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3BuYW1lKQorICAgIGRpc3BhdGNo
KDcpCisKKworX2xsaW50X29wX3B1dF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBD
ZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBJbnQzMlRhZywgdDIsIC5vcFB1dEJ5VmFs
U2xvdykKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6
Om1fZ2xvYmFsRGF0YVt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xh
c3NJbmZvW3QwXSwgdDAKKyAgICBicG5lcSBbdDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93CisgICAg
YmlhZXEgdDIsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QxXSwgLm9wUHV0QnlWYWxTbG93Cisg
ICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QxXSwgdDAKKyAgICBiaWVxIEFycmF5U3RvcmFn
ZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wUHV0
QnlWYWxFbXB0eQorLm9wUHV0QnlWYWxTdG9yZVJlc3VsdDoKKyAgICBsb2FkaSAxMltQQ10sIHQz
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQxLCB0MykKKyAgICB3cml0ZUJh
cnJpZXIodDEsIHQzKQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRh
Z09mZnNldFt0MCwgdDIsIDhdCisgICAgc3RvcmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9y
ICsgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wUHV0QnlW
YWxFbXB0eToKKyAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0
MF0KKyAgICBiaWIgdDIsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdLCAub3BQdXRCeVZhbFN0
b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0MiwgdDEKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFn
ZTo6bV9sZW5ndGhbdDBdCisgICAgam1wIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQKKworLm9wUHV0
QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfdmFsKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2RlbF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWxfYnlfdmFsKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9pbmRleDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pbmRleCkKKyAgICBkaXNwYXRj
aCg0KQorCisKK19sbGludF9vcF9wdXRfZ2V0dGVyX3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9nZXR0ZXJfc2V0dGVyKQorICAg
IGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2xvb3A6CisgICAgbm9wCitfbGxpbnRfb3Bfam1w
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkaXNwYXRjaEJyYW5jaCg0W1BDXSkKKworCitf
bGxpbnRfb3Bfam1wX3Njb3BlczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2ptcF9zY29wZXMpCisgICAgZGlzcGF0Y2goMCkKKworCittYWNybyBq
dW1wVHJ1ZU9yRmFsc2UoY29uZGl0aW9uT3AsIHNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEJvb2xlYW5UYWcsIHQwLCAuc2xv
dykKKyAgICBjb25kaXRpb25PcCh0MCwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFy
Z2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVy
KHNsb3cpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl90cnVlOgor
ICAgIG5vcAorX2xsaW50X29wX2p0cnVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1w
VHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGlueiB2YWx1ZSwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qdHJ1ZSkKKworCitfbGxpbnRfb3Bf
bG9vcF9pZl9mYWxzZToKKyAgICBub3AKK19sbGludF9vcF9qZmFsc2U6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJn
ZXQpIGJ0aXogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamZhbHNl
KQorCisKK21hY3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2Vs
bFRhZywgLmltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0Mgor
ICAgIGNlbGxIYW5kbGVyKFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdz
W3QyXSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNo
QnJhbmNoKDhbUENdKQorCisuaW1tZWRpYXRlOgorICAgIG9yaSAxLCB0MQorICAgIGltbWVkaWF0
ZUhhbmRsZXIodDEsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKK2VuZAorCitfbGxpbnRfb3Bf
amVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAg
bWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0Ym56IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmllcSB2YWx1ZSwg
TnVsbFRhZywgdGFyZ2V0IGVuZCkKKyAgICAKKworX2xsaW50X29wX2puZXFfbnVsbDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRh
cmdldCkgYnRieiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpbmVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQg
ZW5kKQorCisKK19sbGludF9vcF9qbmVxX3B0cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNoCisgICAgYnBlcSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCisub3BKbmVxUHRy
QnJhbmNoOgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKy5vcEpuZXFQdHJGYWxsVGhyb3Vn
aDoKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRv
dWJsZUNvbXBhcmUsIGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BD
XSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCwgdDEpCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQyLCB0MykKKyAgICBiaW5lcSB0MCwgSW50MzJUYWcs
IC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBpbnRl
Z2VyQ29tcGFyZSh0MSwgdDMsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDFO
b3RJbnQ6CisgICAgYmlhIHQwLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RU
YWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93Cisg
ICAgY2kyZCB0MywgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRv
dWJsZToKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGZpaTJk
IHQxLCB0MCwgZnQwCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisg
ICAgZGlzcGF0Y2goNCkKKworLm9wMk5vdEludDoKKyAgICBjaTJkIHQxLCBmdDAKKyAgICBiaWEg
dDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQorICAgIGRvdWJsZUNv
bXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5qdW1wVGFy
Z2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBl
cihoZWxwZXIpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNz
OgorICAgIG5vcAorX2xsaW50X29wX2psZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
b21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCBy
aWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJk
bHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3Mp
CisKKworX2xsaW50X29wX2pubGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFy
ZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3Rl
cXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVz
cykKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyOgorICAgIG5vcAorX2xsaW50X29wX2pn
cmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3QgbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXIpCisKKworX2xsaW50X29wX2pu
Z3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcXVuIGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcikKKworCitfbGxp
bnRfb3BfbG9vcF9pZl9sZXNzZXE6CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3NlcToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAg
ICAgICAgX2xsaW50X2hlbHBlcl9qbGVzc2VxKQorCisKK19sbGludF9vcF9qbmxlc3NlcToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNzZXEpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3Jl
YXRlcmVxOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
aWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgdGFyZ2V0KSBiZGd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGlu
dF9oZWxwZXJfamdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3Bfam5ncmVhdGVyZXE6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
dGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmRsdHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcmVxKQorCisKK19sbGludF9vcF9sb29wX2hpbnQ6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBk
aXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zd2l0Y2hfaW1tOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXpl
b2YgU2ltcGxlSnVtcFRhYmxlLCB0MyAgICMgRklYTUU6IHdvdWxkIGJlIG5pY2UgdG8gcGVlcGhv
bGUgdGhpcyEKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2ltbWVkaWF0ZVN3aXRj
aEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQy
CisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKKyAgICBzdWJpIFNp
bXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxl
OjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxU
aHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9y
QnVmZmVyT2Zmc2V0W3QyXSwgdDMKKyAgICBsb2FkaSBbdDMsIHQwLCA0XSwgdDEKKyAgICBidGl6
IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNl
dCh0MSkKKworLm9wU3dpdGNoSW1tTm90SW50OgorICAgIGJpYiB0MSwgTG93ZXN0VGFnLCAub3BT
d2l0Y2hJbW1TbG93ICAjIEdvIHRvIHNsb3cgcGF0aCBpZiBpdCdzIGEgZG91YmxlLgorLm9wU3dp
dGNoSW1tRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5vcFN3aXRj
aEltbVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9pbW0pCisgICAg
ZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0s
IHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNp
emVvZiBTaW1wbGVKdW1wVGFibGUsIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6
bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIK
KyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFs
bFRocm91Z2gKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYm5l
cSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgU3RyaW5nVHlw
ZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVb
dDBdLCB0MAorICAgIGJpbmVxIFN0cmluZ0ltcGw6Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNo
Q2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU3RyaW5nSW1wbDo6bV9kYXRhOFt0MF0sIHQxCisg
ICAgYnRpbnogU3RyaW5nSW1wbDo6bV9oYXNoQW5kRmxhZ3NbdDBdLCBIYXNoRmxhZ3M4Qml0QnVm
ZmVyLCAub3BTd2l0Y2hDaGFyOEJpdAorICAgIGxvYWRoIFt0MV0sIHQwCisgICAgam1wIC5vcFN3
aXRjaENoYXJSZWFkeQorLm9wU3dpdGNoQ2hhcjhCaXQ6CisgICAgbG9hZGIgW3QxXSwgdDAKKy5v
cFN3aXRjaENoYXJSZWFkeToKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAK
KyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6
ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1
bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAg
bG9hZGkgW3QyLCB0MCwgNF0sIHQxCisgICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91
Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCisKKy5vcFN3aXRjaENoYXJGYWxs
VGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3dpdGNo
X3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3N3aXRjaF9zdHJpbmcpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfbmV3X2Z1
bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0aXogMTJbUENdLCAub3BOZXdGdW5jVW5j
aGVja2VkCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdLCBFbXB0eVZhbHVlVGFnLCAub3BOZXdGdW5jRG9uZQorLm9wTmV3RnVuY1VuY2hlY2tlZDoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmMpCisub3BOZXdGdW5jRG9uZToK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfZnVuY19leHA6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuY19leHApCisg
ICAgZGlzcGF0Y2goMykKKworCittYWNybyBkb0NhbGwoaGVscGVyKQorICAgIGxvYWRpIDRbUENd
LCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6
Y2FsbGVlW3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2Vs
bFRhZywgdDMsIC5vcENhbGxTbG93KQorICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKyAg
ICBsb2FkaSAxMltQQ10sIHQzCisgICAgYWRkcCAyNCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisg
ICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAg
bG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENh
bGxlZSArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5
bG9hZE9mZnNldFt0M10KKyAgICBsb2FkaSA4IC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywg
QXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJh
bWVbdDNdCisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10K
KyAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBD
ZWxsVGFnLCBTY29wZUNoYWluICsgVGFnT2Zmc2V0W3QzXQorICAgIG1vdmUgdDMsIGNmcgorICAg
IGNhbGwgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQorICAgIGRpc3Bh
dGNoQWZ0ZXJDYWxsKCkKKworLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhl
bHBlcikKK2VuZAorCitfbGxpbnRfb3BfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
ZG9DYWxsKF9sbGludF9oZWxwZXJfY2FsbCkKKworCitfbGxpbnRfb3BfY29uc3RydWN0OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3QpCisK
KworX2xsaW50X29wX2NhbGxfdmFyYXJnczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xv
d1BhdGhGb3JDYWxsKDYsIF9sbGludF9oZWxwZXJfY2FsbF92YXJhcmdzKQorCisKK19sbGludF9v
cF9jYWxsX2V2YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIAorICAgICMgRXZhbCBpcyBl
eGVjdXRlZCBpbiBvbmUgb2YgdHdvIG1vZGVzOgorICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhh
dCB3ZSdyZSByZWFsbHkgaW52b2tpbmcgZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAg
ICBleGVjdXRpb24gaXMgcGVyZm9tZWQgZW50aXJlbHkgaW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBp
dAorICAgICMgICAgcmV0dXJucyB0aGUgUEMgb2YgYSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJu
cyB0aGUgcmV0dXJuIHZhbHVlCisgICAgIyAgICB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAg
ICMKKyAgICAjIDIpIFdlIGZpbmQgdGhhdCB3ZSdyZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVk
IGV2YWwoKSB0aGF0IGlzIG5vdAorICAgICMgICAgdGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVs
cGVyIHJldHVybnMgdGhlIFBDIG9mIHRoZSB0aGluZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdl
IGNhbGwgaXQuCisgICAgIworICAgICMgVGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNl
cywgd2hpY2ggd291bGQgcmVxdWlyZSBhIHRvdGFsIG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNl
cyBvZiBzdGF0ZSB0aGF0IGNhbm5vdCBiZSBlYXNpbHkgcGFja2VkIGludG8gdHdvCisgICAgIyBy
ZWdpc3RlcnMgKEMgZnVuY3Rpb25zIGNhbiByZXR1cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFz
aWx5KToKKyAgICAjCisgICAgIyAtIFRoZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBv
ciBtYXkgbm90IGhhdmUgYmVlbiBtb2RpZmllZAorICAgICMgICBieSB0aGUgaGVscGVyLCBidXQg
dGhlIGNvbnZlbnRpb24gaXMgdGhhdCBpdCByZXR1cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0
b3RhbGx5IGNsZWFyIGlmIHRoYXQncyBuZWNlc3NhcnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVl
IHNhdmUuCisgICAgIyAgIEJ1dCB0aGF0J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnBy
ZXRlciBzbyB3ZSBzdGljayB3aXRoIGl0LgorICAgICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlm
IHRoZSBoZWxwZXIgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAj
ICAgdGhlIHJldHVybiB2YWx1ZSwgb3IgZGlkIG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMg
YSBQQyBmb3IgdXMKKyAgICAjICAgdG8gY2FsbC4KKyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAg
ICAjICAgLSBUaGUgSlMgcmV0dXJuIHZhbHVlICh0d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisg
ICAgIyAgIC0gVGhlIFBDIHRvIGNhbGwuCisgICAgIworICAgICMgSXQgdHVybnMgb3V0IHRvIGJl
IGVhc2llciB0byBqdXN0IGFsd2F5cyBoYXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFu
ZCBhIFBDIHRvIGNhbGwsIGFuZCB0aGF0IFBDIG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVz
dAorICAgICMgcmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAg
ICAKKyAgICBzbG93UGF0aEZvckNhbGwoNCwgX2xsaW50X2hlbHBlcl9jYWxsX2V2YWwpCisKKwor
X2xsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50OgorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKwor
CitfbGxpbnRfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0
ZWQKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVh
ck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkCisub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCisub3BUZWFy
T2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bf
dGVhcl9vZmZfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBzdWJpIDEsIHQwICAgIyBHZXQgdGhlIHVubW9kaWZpZWRBcmd1bWVudHNSZWdp
c3RlcgorICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BU
ZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZAorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90
ZWFyX29mZl9hcmd1bWVudHMpCisub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICBk
aXNwYXRjaCgyKQorCisKK21hY3JvIGRvUmV0dXJuKCkKKyAgICBsb2FkcCBSZXR1cm5QQ1tjZnJd
LCB0MgorICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgorICAgIHJlc3RvcmVSZXR1cm5B
ZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAgIHJldAorZW5kCisKK19sbGludF9vcF9yZXQ6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisg
ICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQw
KQorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIGxv
YWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MworICAgIHN0b3JlaSB0MSwgVGFnT2Zm
c2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgdmFsdWVQcm9maWxlKHQxLCB0MCwgdDMpCisgICAgdHJhY2VFeGVjdXRpb24oKSAjIE5l
ZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSBpdCB3b3VsZCBjbG9iYmVyIHQxLCB0MAorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEg
dDEsIENlbGxUYWcsIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBU
eXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2Jq
ZWN0CisgICAgZG9SZXR1cm4oKQorCisub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3Q6CisgICAg
bG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQor
ICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3BfbWV0aG9kX2NoZWNrOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICAjIFdlIGlnbm9yZSBtZXRob2QgY2hlY2tzIGFuZCB1c2Ugbm9ybWFsIGdl
dF9ieV9pZCBvcHRpbWl6YXRpb25zLgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N0
cmNhdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3N0cmNhdCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF90b19wcmltaXRpdmU6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDRbUENd
LCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0
MSwgQ2VsbFRhZywgLm9wVG9QcmltaXRpdmVJc0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MgorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisub3BUb1By
aW1pdGl2ZUlzSW1tOgorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
c3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKwor
Lm9wVG9QcmltaXRpdmVTbG93Q2FzZToKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9f
cHJpbWl0aXZlKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9wbmFtZXM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfcG5h
bWVzKQorICAgIGRpc3BhdGNoKDApICMgVGhlIGhlbHBlciBlaXRoZXIgYWR2YW5jZXMgdGhlIFBD
IG9yIGp1bXBzIHVzIHRvIHNvbWV3aGVyZSBlbHNlLgorCisKK19sbGludF9vcF9uZXh0X3BuYW1l
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZGkg
MTZbUENdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQwCisgICAg
YmllcSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgLm9wTmV4dFBuYW1lRW5kCisgICAg
bG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQy
CisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9qc1N0cmluZ3NbdDJdLCB0Mwor
ICAgIGxvYWRpIFt0MywgdDAsIDhdLCB0MworICAgIGFkZGkgMSwgdDAKKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9y
ZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qz
XSwgdDEKKyAgICBicG5lcSB0MSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1
Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0Ml0sIHQwCisgICAgbG9hZHAgU3RydWN0dXJl
Q2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5vcE5leHRQbmFtZVRhcmdl
dAorLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wOgorICAgIGJpZXEgU3RydWN0dXJlOjpt
X3Byb3RvdHlwZSArIFRhZ09mZnNldFt0MV0sIE51bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKKyAg
ICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQxCisgICAgYnBuZXEgdDEsIFt0MF0s
IC5vcE5leHRQbmFtZVNsb3cKKyAgICBhZGRwIDQsIHQwCisgICAgYnRwbnogW3QwXSwgLm9wTmV4
dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wCisub3BOZXh0UG5hbWVUYXJnZXQ6CisgICAgZGlzcGF0
Y2hCcmFuY2goMjRbUENdKQorCisub3BOZXh0UG5hbWVFbmQ6CisgICAgZGlzcGF0Y2goNykKKwor
Lm9wTmV4dFBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV4dF9wbmFt
ZSkgIyBUaGlzIGVpdGhlciBrZWVwcyB0aGUgUEMgd2hlcmUgaXQgd2FzIChjYXVzaW5nIHVzIHRv
IGxvb3ApIG9yIHNldHMgaXQgdG8gdGFyZ2V0LgorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50
X29wX3B1c2hfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9wdXNoX3Njb3BlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Bv
cF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3BvcF9zY29wZSkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9wdXNoX25ld19z
Y29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3B1c2hfbmV3X3Njb3BlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2NhdGNoOgor
ICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBv
bGluZSAoYmVjYXVzZSB0aGUKKyAgICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxs
IGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQorICAgICMgdGhlIGludGVycHJl
dGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KKyAg
ICAjIFRoZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4g
dDAuIFRoZSB0aHJvd2luZworICAgICMgY29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJl
IHRocm93aW5nIHRvIHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2Jh
bERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAg
ICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0ds
b2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkg
SlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2Fk
aSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxCisgICAgc3RvcmVp
IDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9y
ZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNd
ICAgICAgIAorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAg
dHJhY2VFeGVjdXRpb24oKSAgIyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24n
dCB3YW50IHRvIGNsb2JiZXIgdDAsIHQxLCB0MiwgdDMgYWJvdmUuCisgICAgZGlzcGF0Y2goMikK
KworCitfbGxpbnRfb3BfdGhyb3c6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl90aHJvdykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90
aHJvd19yZWZlcmVuY2VfZXJyb3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpCisgICAgZGlzcGF0Y2goMikK
KworCitfbGxpbnRfb3BfanNyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBhZGRpIDMgKiA0LCBQQywgdDEKKyAgICBzdG9yZWkgdDEsIFtjZnIsIHQwLCA4
XQorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zcmV0OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkcCBbY2ZyLCB0MCwg
OF0sIFBDCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfZGVidWc6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWJ1ZykKKyAgICBkaXNw
YXRjaCg0KQorCisKK19sbGludF9vcF9wcm9maWxlX3dpbGxfY2FsbDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNl
W3NwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENh
bGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQ
cm9maWxlclJlZmVyZW5jZVtzcF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BQcm9maWxlV2lsbENh
bGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisu
b3BQcm9maWxlRGlkQ2FsbERvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5k
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUo
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
dDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJu
KCkKKworCitfbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4g
dGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhl
bHBlcnMpLCBzbworICAgICMgdGhlIHRocm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50
ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0byBoZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBl
bXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tG
cmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJh
bWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBD
Rm9yVGhyb3dbdDFdCisKKworX2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6Cisg
ICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNr
RnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZy
YW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQ
Q0ZvclRocm93W3QxXQorCisKKyMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBl
dmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgorIyBUaGVzZSBvcGNvZGVz
IHNob3VsZCBuZXZlciBhcmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFz
c2VydAorIyBhcyBtdWNoLgorCittYWNybyBub3RTdXBwb3J0ZWQoKQorICAgIGlmIEFTU0VSVF9F
TkFCTEVECisgICAgICAgIGNyYXNoKCkKKyAgICBlbHNlCisgICAgICAgICMgV2Ugc2hvdWxkIHVz
ZSB3aGF0ZXZlciB0aGUgc21hbGxlc3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24gaXMsIGp1c3QgdG8K
KyAgICAgICAgIyBlbnN1cmUgdGhhdCB0aGVyZSBpcyBhIGdhcCBiZXR3ZWVuIGluc3RydWN0aW9u
IGxhYmVscy4gSWYgbXVsdGlwbGUKKyAgICAgICAgIyBzbWFsbGVzdCBpbnN0cnVjdGlvbnMgZXhp
c3QsIHdlIHNob3VsZCBwaWNrIHRoZSBvbmUgdGhhdCBpcyBtb3N0CisgICAgICAgICMgbGlrZWx5
IHJlc3VsdCBpbiBleGVjdXRpb24gYmVpbmcgaGFsdGVkLiBDdXJyZW50bHkgdGhhdCBpcyB0aGUg
YnJlYWsKKyAgICAgICAgIyBpbnN0cnVjdGlvbiBvbiBhbGwgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBp
bnRlcmVzdGVkIGluLiAoQnJlYWsgaXMgaW50MworICAgICAgICAjIG9uIEludGVsLCB3aGljaCBp
cyAxIGJ5dGUsIGFuZCBia3B0IG9uIEFSTXY3LCB3aGljaCBpcyAyIGJ5dGVzLikKKyAgICAgICAg
YnJlYWsKKyAgICBlbmQKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBu
b3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2NoYWluOgorICAgIG5vdFN1cHBv
cnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX2NoYWluOgorICAgIG5vdFN1cHBv
cnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3Byb3RvOgorICAgIG5vdFN1cHBv
cnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3NlbGY6CisgICAgbm90U3VwcG9y
dGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgp
CisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgp
CisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgp
CisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkK
KworX2xsaW50X29wX2dldF9ieV9pZF9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxp
bnRfb3BfZ2V0X2J5X2lkX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dl
dF9zdHJpbmdfbGVuZ3RoOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlf
aWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3Jl
cGxhY2U6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0
aW9uOgorICAgIG5vdFN1cHBvcnRlZCgpCisKKworIyBJbmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50
LgorX2xsaW50X2VuZDoKKyAgICBjcmFzaCgpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvd0xldmVs
SW50ZXJwcmV0ZXIuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkxMSW50T2Zm
bGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KKworLy8gVGhpcyBp
cyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20sIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiB0
aGUgYXNzZW1ibHkgY29kZQorLy8gZm9yIHRoZSBpbnRlcnByZXRlciwgYXMgY29tcGlsZWQgZnJv
bSBMb3dMZXZlbEludGVycHJldGVyLmFzbS4KKyNpbmNsdWRlICJMTEludEFzc2VtYmx5LmgiCisK
KyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisjZGVmaW5lIExvd0xldmVsSW50
ZXJwcmV0ZXJfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJ
TlQpCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworI2RlZmluZSBMTElOVF9JTlNUUlVDVElPTl9E
RUNMKG9wY29kZSwgbGVuZ3RoKSBleHRlcm4gIkMiIHZvaWQgbGxpbnRfIyNvcGNvZGUoKTsKKyAg
ICBGT1JfRUFDSF9PUENPREVfSUQoTExJTlRfSU5TVFJVQ1RJT05fREVDTCk7CisjdW5kZWYgTExJ
TlRfSU5TVFJVQ1RJT05fREVDTAorCitleHRlcm4gIkMiIHZvaWQgbGxpbnRfYmVnaW4oKTsKK2V4
dGVybiAiQyIgdm9pZCBsbGludF9lbmQoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9wcm9ncmFt
X3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZXZhbF9wcm9sb2d1ZSgpOworZXh0
ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKCk7CitleHRlcm4g
IkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSgpOworZXh0ZXJu
ICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKCk7CitleHRlcm4g
IkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaygpOworZXh0
ZXJuICJDIiB2b2lkIGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KCk7CitleHRlcm4gIkMiIHZv
aWQgbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSgpOworZXh0ZXJuICJDIiB2b2lk
IGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUoKTsKKworI2VuZGlmIC8vIEVOQUJM
RShMTElOVCkKKworI2VuZGlmIC8vIExvd0xldmVsSW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMDMyIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1
aXJlICJhc3QiCityZXF1aXJlICJvcHQiCisKK2NsYXNzIE5vZGUKKyAgZGVmIGFybVY3U2luZ2xl
CisgICAgZG91YmxlT3BlcmFuZCA9IGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJCb2d1cyByZWdp
c3RlciBuYW1lICN7ZG91YmxlT3BlcmFuZH0iIHVubGVzcyBkb3VibGVPcGVyYW5kID1+IC9eZC8K
KyAgICAicyIgKyAoJH4ucG9zdF9tYXRjaC50b19pICogMikudG9fcworICBlbmQKK2VuZAorCitj
bGFzcyBTcGVjaWFsUmVnaXN0ZXIgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKG5hbWUp
CisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIEBu
YW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBk
ZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIHRydWUKKyAgZW5kCitlbmQKKwor
QVJNdjdfRVhUUkFfR1BSUyA9IFtTcGVjaWFsUmVnaXN0ZXIubmV3KCJyOSIpLCBTcGVjaWFsUmVn
aXN0ZXIubmV3KCJyOCIpLCBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyMyIpXQorQVJNdjdfRVhUUkFf
RlBSUyA9IFtTcGVjaWFsUmVnaXN0ZXIubmV3KCJkNyIpXQorQVJNdjdfU0NSQVRDSF9GUFIgPSBT
cGVjaWFsUmVnaXN0ZXIubmV3KCJkOCIpCisKK2RlZiBhcm1WN01vdmVJbW1lZGlhdGUodmFsdWUs
IHJlZ2lzdGVyKQorICAjIEN1cnJlbnRseSB3ZSBvbmx5IGhhbmRsZSB0aGUgc2ltcGxlIGNhc2Vz
LCBhbmQgZmFsbCBiYWNrIHRvIG1vdi9tb3Z0IGZvciB0aGUgY29tcGxleCBvbmVzLgorICBpZiB2
YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2CisgICAgJGFzbS5wdXRzICJtb3Z3ICN7cmVnaXN0ZXIu
YXJtVjdPcGVyYW5kfSwgXCMje3ZhbHVlfSIKKyAgZWxzaWYgKH52YWx1ZSkgPj0gMCAmJiAofnZh
bHVlKSA8IDI1NgorICAgICRhc20ucHV0cyAibXZuICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSwg
XCMje352YWx1ZX0iCisgIGVsc2UKKyAgICAkYXNtLnB1dHMgIm1vdncgI3tyZWdpc3Rlci5hcm1W
N09wZXJhbmR9LCBcIyN7dmFsdWUgJiAweGZmZmZ9IgorICAgIGlmICh2YWx1ZSAmIDB4ZmZmZjAw
MDApICE9IDAKKyAgICAgICRhc20ucHV0cyAibW92dCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0s
IFwjI3t2YWx1ZSA+PiAxNn0iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVy
SUQKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEw
IiwgInIwIgorICAgICAgInIwIgorICAgIHdoZW4gInQxIiwgImExIiwgInIxIgorICAgICAgInIx
IgorICAgIHdoZW4gInQyIiwgImEyIgorICAgICAgInIyIgorICAgIHdoZW4gImEzIgorICAgICAg
InIzIgorICAgIHdoZW4gInQzIgorICAgICAgInI0IgorICAgIHdoZW4gInQ0IgorICAgICAgInI3
IgorICAgIHdoZW4gImNmciIKKyAgICAgICJyNSIKKyAgICB3aGVuICJsciIKKyAgICAgICJsciIK
KyAgICB3aGVuICJzcCIKKyAgICAgICJzcCIKKyAgICBlbHNlCisgICAgICByYWlzZSAiQmFkIHJl
Z2lzdGVyICN7bmFtZX0gZm9yIEFSTXY3IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5k
CisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisg
ICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZyIgorICAgICAgImQwIgorICAgIHdoZW4g
ImZ0MSIKKyAgICAgICJkMSIKKyAgICB3aGVuICJmdDIiCisgICAgICAiZDIiCisgICAgd2hlbiAi
ZnQzIgorICAgICAgImQzIgorICAgIHdoZW4gImZ0NCIKKyAgICAgICJkNCIKKyAgICB3aGVuICJm
dDUiCisgICAgICAiZDUiCisgICAgZWxzZQorICAgICAgcmFpc2UgIkJhZCByZWdpc3RlciAje25h
bWV9IGZvciBBUk12NyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICBlbmQKK2Vu
ZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJJbnZh
bGlkIGltbWVkaWF0ZSAje3ZhbHVlfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiBpZiB2YWx1ZSA8
IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAiXCMje3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3Mg
QWRkcmVzcworICBkZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2UgIkJhZCBvZmZzZXQgYXQgI3tj
b2RlT3JpZ2luU3RyaW5nfSIgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgb3Igb2Zmc2V0LnZhbHVl
ID4gMHhmZmYKKyAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCBcIyN7b2Zmc2V0LnZhbHVlfV0i
CisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAg
cmFpc2UgIkJhZCBvZmZzZXQgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgaWYgb2Zmc2V0LnZhbHVl
ICE9IDAKKyAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0s
IGxzbCBcIyN7c2NhbGVTaGlmdH1dIgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJl
c3MKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJVbmNvbnZlcnRlZCBhYnNvbHV0ZSBh
ZGRyZXNzIGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgIGVuZAorZW5kCisKKyMKKyMgTG93ZXJp
bmcgb2YgYnJhbmNoIG9wcy4gRm9yIGV4YW1wbGU6CisjCisjIGJhZGRpeiBmb28sIGJhciwgYmF6
CisjCisjIHdpbGwgYmVjb21lOgorIworIyBhZGRpIGZvbywgYmFyCisjIGJ6IGJhegorIworCitk
ZWYgYXJtVjdMb3dlckJyYW5jaE9wcyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNo
IHsKKyAgICB8IG5vZGUgfAorICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNh
c2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdoZW4gL15iKGFkZGl8c3ViaXxvcml8YWRkcCkvCisgICAg
ICAgIG9wID0gJDEKKyAgICAgICAgYnJhbmNoID0gImIiICsgJH4ucG9zdF9tYXRjaAorICAgICAg
ICAKKyAgICAgICAgY2FzZSBvcAorICAgICAgICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAgICAg
ICAgb3AgPSAiYWRkaXMiCisgICAgICAgIHdoZW4gInN1YmkiCisgICAgICAgICAgb3AgPSAic3Vi
aXMiCisgICAgICAgIHdoZW4gIm9yaSIKKyAgICAgICAgICBvcCA9ICJvcmlzIgorICAgICAgICBl
bmQKKyAgICAgICAgCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29k
ZU9yaWdpbiwgb3AsIG5vZGUub3BlcmFuZHNbMC4uLTJdKQorICAgICAgICBuZXdMaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIGJyYW5jaCwgW25vZGUub3BlcmFuZHNbLTFd
XSkKKyAgICAgIHdoZW4gImJtdWxpbyIKKyAgICAgICAgdG1wMSA9IFRtcC5uZXcobm9kZS5jb2Rl
T3JpZ2luLCA6Z3ByKQorICAgICAgICB0bXAyID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpn
cHIpCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwg
InNtdWxsaSIsIFtub2RlLm9wZXJhbmRzWzBdLCBub2RlLm9wZXJhbmRzWzFdLCBub2RlLm9wZXJh
bmRzWzFdLCB0bXAxXSkKKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5j
b2RlT3JpZ2luLCAicnNoaWZ0aSIsIFtub2RlLm9wZXJhbmRzWy0yXSwgSW1tZWRpYXRlLm5ldyhu
b2RlLmNvZGVPcmlnaW4sIDMxKSwgdG1wMl0pCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KG5vZGUuY29kZU9yaWdpbiwgImJpbmVxIiwgW3RtcDEsIHRtcDIsIG5vZGUub3BlcmFu
ZHNbLTFdXSkKKyAgICAgIHdoZW4gL15ibXVsaS8KKyAgICAgICAgY29uZGl0aW9uID0gJH4ucG9z
dF9tYXRjaAorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmln
aW4sICJtdWxpIiwgbm9kZS5vcGVyYW5kc1swLi4tMl0pCisgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgImJ0aSIgKyBjb25kaXRpb24sIFtub2RlLm9w
ZXJhbmRzWy0yXSwgbm9kZS5vcGVyYW5kc1stMV1dKQorICAgICAgZWxzZQorICAgICAgICBuZXdM
aXN0IDw8IG5vZGUKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIG5ld0xpc3QgPDwgbm9kZQor
ICAgIGVuZAorICB9CisgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIHNoaWZ0IG9w
cy4gRm9yIGV4YW1wbGU6CisjCisjIGxzaGlmdGkgZm9vLCBiYXIKKyMKKyMgd2lsbCBiZWNvbWU6
CisjCisjIGFuZGkgZm9vLCAzMSwgdG1wCisjIGxzaGlmdGkgdG1wLCBiYXIKKyMKKworZGVmIGFy
bVY3U2FuaXRpemVTaGlmdChvcGVyYW5kLCBsaXN0KQorICByZXR1cm4gb3BlcmFuZCBpZiBvcGVy
YW5kLmltbWVkaWF0ZT8KKyAgCisgIHRtcCA9IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCA6
Z3ByKQorICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJhbmRp
IiwgW29wZXJhbmQsIEltbWVkaWF0ZS5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAzMSksIHRtcF0p
CisgIHRtcAorZW5kCisKK2RlZiBhcm1WN0xvd2VyU2hpZnRPcHMobGlzdCkKKyAgbmV3TGlzdCA9
IFtdCisgIGxpc3QuZWFjaCB7CisgICAgfCBub2RlIHwKKyAgICBpZiBub2RlLmlzX2E/IEluc3Ry
dWN0aW9uCisgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICB3aGVuICJsc2hpZnRpIiwgInJz
aGlmdGkiLCAidXJzaGlmdGkiCisgICAgICAgIGlmIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAyCisg
ICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2Rl
Lm9wY29kZSwgW2FybVY3U2FuaXRpemVTaGlmdChub2RlLm9wZXJhbmRzWzBdLCBuZXdMaXN0KSwg
bm9kZS5vcGVyYW5kc1sxXV0pCisgICAgICAgIGVsc2UKKyAgICAgICAgICBuZXdMaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbbm9kZS5vcGVyYW5k
c1swXSwgYXJtVjdTYW5pdGl6ZVNoaWZ0KG5vZGUub3BlcmFuZHNbMV0sIG5ld0xpc3QpLCBub2Rl
Lm9wZXJhbmRzWzJdXSkKKyAgICAgICAgICByYWlzZSAiV3JvbmcgbnVtYmVyIG9mIG9wZXJhbmRz
IGZvciBzaGlmdCBhdCAje25vZGUuY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBub2RlLm9wZXJh
bmRzLnNpemUgPT0gMworICAgICAgICBlbmQKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8
PCBub2RlCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICBl
bmQKKyAgfQorICBuZXdMaXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBtYWxmb3JtZWQgYWRk
cmVzc2VzLiBGb3IgZXhhbXBsZToKKyMKKyMgbG9hZHAgMTAwMDBbZm9vXSwgYmFyCisjCisjIHdp
bGwgYmVjb21lOgorIworIyBtb3ZlIDEwMDAwLCB0bXAKKyMgYWRkcCBmb28sIHRtcAorIyBsb2Fk
cCAwW3RtcF0sIGJhcgorIworCitjbGFzcyBOb2RlCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVk
QWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgbm9kZSB8
CisgICAgICBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNSZWN1cnNlKGxpc3QpCisg
ICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9y
bWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIG9y
IG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpn
cHIpCisgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFtv
ZmZzZXQsIHRtcF0pCisgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAi
YWRkcCIsIFtiYXNlLCB0bXBdKQorICAgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgdG1wLCBJ
bW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIDApKQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBl
bmQKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBhcm1WN0xvd2VyTWFsZm9y
bWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAg
ICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICBsaXN0IDw8IEluc3RydWN0
aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFtvZmZzZXQsIHRtcF0pCisgICAgICBsaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAiYWRkcCIsIFtiYXNlLCB0bXBdKQorICAgICAg
QmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCB0bXAsIGluZGV4LCBzY2FsZSwgSW1tZWRpYXRlLm5l
dyhjb2RlT3JpZ2luLCAwKSkKKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAor
ZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFk
ZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIp
CisgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbYWRkcmVz
cywgdG1wXSkKKyAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCB0bXAsIEltbWVkaWF0ZS5uZXco
Y29kZU9yaWdpbiwgMCkpCisgIGVuZAorZW5kCisKK2RlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRk
cmVzc2VzKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9kZSB8
CisgICAgbmV3TGlzdCA8PCBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNSZWN1cnNl
KG5ld0xpc3QpCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWFsZm9y
bWVkIGFkZHJlc3NlcyBpbiBkb3VibGUgbG9hZHMgYW5kIHN0b3Jlcy4gRm9yIGV4YW1wbGU6Cisj
CisjIGxvYWRkIFtmb28sIGJhciwgOF0sIGJhegorIworIyBiZWNvbWVzOgorIworIyBsZWFwIFtm
b28sIGJhciwgOF0sIHRtcAorIyBsb2FkZCBbdG1wXSwgYmF6CisjCisKK2NsYXNzIE5vZGUKKyAg
ZGVmIGFybVY3RG91YmxlQWRkcmVzcyhsaXN0KQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xh
c3MgQmFzZUluZGV4CisgIGRlZiBhcm1WN0RvdWJsZUFkZHJlc3MobGlzdCkKKyAgICB0bXAgPSBU
bXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29k
ZU9yaWdpbiwgImxlYXAiLCBbc2VsZiwgdG1wXSkKKyAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2lu
LCB0bXAsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCisgIGVuZAorZW5kCisKK2RlZiBh
cm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzRG91YmxlKGxpc3QpCisgIG5ld0xpc3QgPSBbXQor
ICBsaXN0LmVhY2ggeworICAgIHwgbm9kZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlv
bgorICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgd2hlbiAibG9hZGQiCisgICAgICAgIG5l
d0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgImxvYWRkIiwgW25vZGUu
b3BlcmFuZHNbMF0uYXJtVjdEb3VibGVBZGRyZXNzKG5ld0xpc3QpLCBub2RlLm9wZXJhbmRzWzFd
XSkKKyAgICAgIHdoZW4gInN0b3JlZCIKKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcobm9kZS5jb2RlT3JpZ2luLCAic3RvcmVkIiwgW25vZGUub3BlcmFuZHNbMF0sIG5vZGUub3Bl
cmFuZHNbMV0uYXJtVjdEb3VibGVBZGRyZXNzKG5ld0xpc3QpXSkKKyAgICAgIGVsc2UKKyAgICAg
ICAgbmV3TGlzdCA8PCBub2RlCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICBuZXdMaXN0IDw8
IG5vZGUKKyAgICBlbmQKKyAgfQorICBuZXdMaXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBt
aXNwbGFjZWQgaW1tZWRpYXRlcy4gRm9yIGV4YW1wbGU6CisjCisjIHN0b3JlaSAwLCBbZm9vXQor
IworIyB3aWxsIGJlY29tZToKKyMKKyMgbW92ZSAwLCB0bXAKKyMgc3RvcmVpIHRtcCwgW2Zvb10K
KyMKKworZGVmIGFybVY3TG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKGxpc3QpCisgIG5ld0xpc3Qg
PSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9kZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0
cnVjdGlvbgorICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgd2hlbiAic3RvcmVpIiwgInN0
b3JlcCIKKyAgICAgICAgb3BlcmFuZHMgPSBub2RlLm9wZXJhbmRzCisgICAgICAgIG5ld09wZXJh
bmRzID0gW10KKyAgICAgICAgb3BlcmFuZHMuZWFjaCB7CisgICAgICAgICAgfCBvcGVyYW5kIHwK
KyAgICAgICAgICBpZiBvcGVyYW5kLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgdG1wID0g
VG1wLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICBuZXdMaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJtb3ZlIiwgW29wZXJhbmQsIHRt
cF0pCisgICAgICAgICAgICBuZXdPcGVyYW5kcyA8PCB0bXAKKyAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICBuZXdPcGVyYW5kcyA8PCBvcGVyYW5kCisgICAgICAgICAgZW5kCisgICAgICAgIH0K
KyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2Rl
Lm9wY29kZSwgbmV3T3BlcmFuZHMpCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9k
ZQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisg
IH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWFsZm9ybWVkIGltbWVkaWF0
ZXMgZXhjZXB0IHdoZW4gdXNlZCBpbiBhICJtb3ZlIiBpbnN0cnVjdGlvbi4KKyMgRm9yIGV4YW1w
bGU6CisjCisjIGFkZHAgNjQyNjQxLCBmb28KKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUg
NjQyNjQxLCB0bXAKKyMgYWRkcCB0bXAsIGZvbworIworCitjbGFzcyBOb2RlCisgIGRlZiBhcm1W
N0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkKKyAgICBtYXBDaGlsZHJlbiB7
CisgICAgICB8IG5vZGUgfAorICAgICAgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRl
c1JlY3Vyc2UobGlzdCkKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVm
IGFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgIHNlbGYKKyAg
ZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1t
ZWRpYXRlc1JlY3Vyc2UobGlzdCkKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29s
dXRlQWRkcmVzcworICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxp
c3QpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3
TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgIGlmIHZhbHVlIDwgMCBv
ciB2YWx1ZSA+IDI1NQorICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAg
ICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbc2VsZiwgdG1w
XSkKKyAgICAgIHRtcAorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQK
KworZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzKGxpc3QpCisgIG5ld0xpc3QgPSBb
XQorICBsaXN0LmVhY2ggeworICAgIHwgbm9kZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVj
dGlvbgorICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgd2hlbiAibW92ZSIKKyAgICAgICAg
bmV3TGlzdCA8PCBub2RlCisgICAgICB3aGVuICJhZGRpIiwgImFkZHAiLCAiYWRkaXMiLCAic3Vi
aSIsICJzdWJwIiwgInN1YmlzIgorICAgICAgICBpZiBub2RlLm9wZXJhbmRzWzBdLmlzX2E/IElt
bWVkaWF0ZSBhbmQKKyAgICAgICAgICAgIG5vZGUub3BlcmFuZHNbMF0udmFsdWUgPCAwIGFuZAor
ICAgICAgICAgICAgbm9kZS5vcGVyYW5kc1swXS52YWx1ZSA+PSAyNTUgYW5kCisgICAgICAgICAg
ICBub2RlLm9wZXJhbmRzLnNpemUgPT0gMgorICAgICAgICAgIGlmIG5vZGUub3Bjb2RlID1+IC9h
ZGQvCisgICAgICAgICAgICBuZXdPcGNvZGUgPSAic3ViIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0K
KyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdPcGNvZGUgPSAiYWRkIiArIG5vZGUub3Bj
b2RlWy0xLi4tMV0KKyAgICAgICAgICBlbmQKKyAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0
aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5ld09wY29kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbSW1tZWRpYXRlLm5ldygtbm9kZS5vcGVyYW5kc1swXS52YWx1ZSld
ICsgbm9kZS5vcGVyYW5kc1sxLi4tMV0pCisgICAgICAgIGVsc2UKKyAgICAgICAgICBuZXdMaXN0
IDw8IG5vZGUuYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QpCisg
ICAgICAgIGVuZAorICAgICAgd2hlbiAibXVsaSIKKyAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1sw
XS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpn
cHIpCisgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2lu
LCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzBdLCB0bXBdKQorICAgICAgICAgIG5ld0xpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm11bGkiLCBbdG1wXSArIG5vZGUub3Bl
cmFuZHNbMS4uLTFdKQorICAgICAgICBlbHNlCisgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLmFy
bVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0KQorICAgICAgICBlbmQK
KyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJ
bW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0KQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgbmV3
TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJp
bmcgb2YgbWlzcGxhY2VkIGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGU6CisjCisjIGFkZGkgZm9vLCBb
YmFyXQorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbG9hZGkgW2Jhcl0sIHRtcAorIyBhZGRpIGZv
bywgdG1wCisjIHN0b3JlaSB0bXAsIFtiYXJdCisjCisjIEFub3RoZXIgZXhhbXBsZToKKyMKKyMg
YWRkaSBbZm9vXSwgYmFyCisjCisjIHdpbGwgYmVjb21lOgorIworIyBsb2FkaSBbZm9vXSwgdG1w
CisjIGFkZGkgdG1wLCBiYXIKKyMKKworZGVmIGFybVY3QXNSZWdpc3RlcihwcmVMaXN0LCBwb3N0
TGlzdCwgb3BlcmFuZCwgc3VmZml4LCBuZWVkU3RvcmUpCisgIHJldHVybiBvcGVyYW5kIHVubGVz
cyBvcGVyYW5kLmFkZHJlc3M/CisgIAorICB0bXAgPSBUbXAubmV3KG9wZXJhbmQuY29kZU9yaWdp
biwgaWYgc3VmZml4ID09ICJkIiB0aGVuIDpmcHIgZWxzZSA6Z3ByIGVuZCkKKyAgcHJlTGlzdCA8
PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAibG9hZCIgKyBzdWZmaXgsIFtv
cGVyYW5kLCB0bXBdKQorICBpZiBuZWVkU3RvcmUKKyAgICBwb3N0TGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAic3RvcmUiICsgc3VmZml4LCBbdG1wLCBvcGVyYW5k
XSkKKyAgZW5kCisgIHRtcAorZW5kCisKK2RlZiBhcm1WN0FzUmVnaXN0ZXJzKHByZUxpc3QsIHBv
c3RMaXN0LCBvcGVyYW5kcywgc3VmZml4KQorICBuZXdPcGVyYW5kcyA9IFtdCisgIG9wZXJhbmRz
LmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBvcGVyYW5kLCBpbmRleCB8CisgICAgbmV3T3BlcmFu
ZHMgPDwgYXJtVjdBc1JlZ2lzdGVyKHByZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kLCBzdWZmaXgs
IGluZGV4ID09IG9wZXJhbmRzLnNpemUgLSAxKQorICB9CisgIG5ld09wZXJhbmRzCitlbmQKKwor
ZGVmIGFybVY3TG93ZXJNaXNwbGFjZWRBZGRyZXNzZXMobGlzdCkKKyAgbmV3TGlzdCA9IFtdCisg
IGxpc3QuZWFjaCB7CisgICAgfCBub2RlIHwKKyAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9u
CisgICAgICBwb3N0SW5zdHJ1Y3Rpb25zID0gW10KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAg
ICAgIHdoZW4gImFkZGkiLCAiYWRkcCIsICJhZGRpcyIsICJhbmRpIiwgImFuZHAiLCAibHNoaWZ0
aSIsICJtdWxpIiwgIm5lZ2kiLCAibm90aSIsICJvcmkiLCAib3JpcyIsCisgICAgICAgICJvcnAi
LCAicnNoaWZ0aSIsICJ1cnNoaWZ0aSIsICJzdWJpIiwgInN1YnAiLCAic3ViaXMiLCAieG9yaSIs
ICJ4b3JwIiwgL15iaS8sIC9eYnAvLCAvXmJ0aS8sCisgICAgICAgIC9eYnRwLywgL15jaS8sIC9e
Y3AvLCAvXnRpLworICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVP
cmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcm1WN0FzUmVnaXN0ZXJzKG5ld0xp
c3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJpIikpCisgICAgICB3aGVuICJi
YmVxIiwgImJibmVxIiwgImJiYSIsICJiYmFlcSIsICJiYmIiLCAiYmJiZXEiLCAiYnRibyIsICJi
dGJ6IiwgImJ0Ym56IiwgInRieiIsICJ0Ym56IiwKKyAgICAgICAgInRibyIKKyAgICAgICAgbmV3
TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXJtVjdBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBu
b2RlLm9wZXJhbmRzLCAiYiIpKQorICAgICAgd2hlbiAiYmJndCIsICJiYmd0ZXEiLCAiYmJsdCIs
ICJiYmx0ZXEiLCAiYnRicyIsICJ0YnMiCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZS5vcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNS
ZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImJzIikp
CisgICAgICB3aGVuICJhZGRkIiwgImRpdmQiLCAic3ViZCIsICJtdWxkIiwgInNxcnRkIiwgL15i
ZC8KKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJtVjdBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0
SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAiZCIpKQorICAgICAgd2hlbiAiam1wIiwgImNh
bGwiCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcm1WN0FzUmVnaXN0ZXIobmV3TGlzdCwgcG9z
dEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kc1swXSwgInAiLCBmYWxzZSldKQorICAgICAgZWxz
ZQorICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgIGVuZAorICAgICAgbmV3TGlzdCArPSBw
b3N0SW5zdHJ1Y3Rpb25zCisgICAgZWxzZQorICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5k
CisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgcmVnaXN0ZXIgcmV1c2Ug
aW4gY29tcGFyZSBpbnN0cnVjdGlvbnMuIEZvciBleGFtcGxlOgorIworIyBjaWVxIHQwLCB0MSwg
dDAKKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdiB0bXAsIHQwCisjIGNpZXEgdG1wLCB0MSwg
dDAKKyMKKworZGVmIGFybVY3TG93ZXJSZWdpc3RlclJldXNlKGxpc3QpCisgIG5ld0xpc3QgPSBb
XQorICBsaXN0LmVhY2ggeworICAgIHwgbm9kZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVj
dGlvbgorICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgd2hlbiAiY2llcSIsICJjaW5lcSIs
ICJjaWEiLCAiY2lhZXEiLCAiY2liIiwgImNpYmVxIiwgImNpZ3QiLCAiY2lndGVxIiwgImNpbHQi
LCAiY2lsdGVxIiwKKyAgICAgICAgImNwZXEiLCAiY3BuZXEiLCAiY3BhIiwgImNwYWVxIiwgImNw
YiIsICJjcGJlcSIsICJjcGd0IiwgImNwZ3RlcSIsICJjcGx0IiwgImNwbHRlcSIsCisgICAgICAg
ICJ0aW8iLCAidGlzIiwgInRpeiIsICJ0aW56IiwgInRibyIsICJ0YnMiLCAidGJ6IiwgInRibnoi
CisgICAgICAgIGlmIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgICAgaWYgbm9kZS5v
cGVyYW5kc1swXSA9PSBub2RlLm9wZXJhbmRzWzFdCisgICAgICAgICAgICB0bXAgPSBUbXAubmV3
KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSkK
KyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwg
bm9kZS5vcGNvZGUsIFt0bXAsIG5vZGUub3BlcmFuZHNbMV1dKQorICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisg
ICAgICAgICAgcmFpc2UgIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgYXQgI3tub2RlLmNvZGVP
cmlnaW5TdHJpbmd9IiB1bmxlc3Mgbm9kZS5vcGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgICBp
ZiBub2RlLm9wZXJhbmRzWzBdID09IG5vZGUub3BlcmFuZHNbMl0KKyAgICAgICAgICAgIHRtcCA9
IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgbmV3TGlzdCA8PCBJ
bnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzBd
LCB0bXBdKQorICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2Rl
T3JpZ2luLCBub2RlLm9wY29kZSwgW3RtcCwgbm9kZS5vcGVyYW5kc1sxXSwgbm9kZS5vcGVyYW5k
c1syXV0pCisgICAgICAgICAgZWxzaWYgbm9kZS5vcGVyYW5kc1sxXSA9PSBub2RlLm9wZXJhbmRz
WzJdCisgICAgICAgICAgICB0bXAgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAg
ICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1v
dmUiLCBbbm9kZS5vcGVyYW5kc1sxXSwgdG1wXSkKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFtub2RlLm9wZXJhbmRz
WzBdLCB0bXAsIG5vZGUub3BlcmFuZHNbMl1dKQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgIGVsc2UK
KyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICBuZXdM
aXN0IDw8IG5vZGUKKyAgICBlbmQKKyAgfQorICBuZXdMaXN0CitlbmQKKworIworIyBMZWEgc3Vw
cG9ydC4KKyMKKworY2xhc3MgQWRkcmVzcworICBkZWYgYXJtVjdFbWl0TGVhKGRlc3RpbmF0aW9u
KQorICAgIGlmIGRlc3RpbmF0aW9uID09IGJhc2UKKyAgICAgICRhc20ucHV0cyAiYWRkcyAje2Rl
c3RpbmF0aW9uLmFybVY3T3BlcmFuZH0sIFwjI3tvZmZzZXQudmFsdWV9IgorICAgIGVsc2UKKyAg
ICAgICRhc20ucHV0cyAiYWRkcyAje2Rlc3RpbmF0aW9uLmFybVY3T3BlcmFuZH0sICN7YmFzZS5h
cm1WN09wZXJhbmR9LCBcIyN7b2Zmc2V0LnZhbHVlfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKwor
Y2xhc3MgQmFzZUluZGV4CisgIGRlZiBhcm1WN0VtaXRMZWEoZGVzdGluYXRpb24pCisgICAgcmFp
c2UgIk1hbGZvcm1lZCBCYXNlSW5kZXgsIG9mZnNldCBzaG91bGQgYmUgemVybyBhdCAje2NvZGVP
cmlnaW5TdHJpbmd9IiB1bmxlc3Mgb2Zmc2V0LnZhbHVlID09IDAKKyAgICAkYXNtLnB1dHMgImFk
ZC53ICN7ZGVzdGluYXRpb24uYXJtVjdPcGVyYW5kfSwgI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7
aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZVNoaWZ0fSIKKyAgZW5kCitlbmQKKwor
IyBGSVhNRTogd2UgY291bGQgc3VwcG9ydCBBYnNvbHV0ZUFkZHJlc3MgZm9yIGxlYSwgYnV0IHdl
IGRvbid0LgorCisjCisjIEFjdHVhbCBsb3dlcmluZyBjb2RlIGZvbGxvd3MuCisjCisKK2NsYXNz
IFNlcXVlbmNlCisgIGRlZiBsb3dlckFSTXY3CisgICAgbXlMaXN0ID0gQGxpc3QKKyAgICAKKyAg
ICAjIFZlcmlmeSB0aGF0IHdlIHdpbGwgb25seSBzZWUgaW5zdHJ1Y3Rpb25zIGFuZCBsYWJlbHMu
CisgICAgbXlMaXN0LmVhY2ggeworICAgICAgfCBub2RlIHwKKyAgICAgIHVubGVzcyBub2RlLmlz
X2E/IEluc3RydWN0aW9uIG9yCisgICAgICAgICAgbm9kZS5pc19hPyBMYWJlbCBvcgorICAgICAg
ICAgIG5vZGUuaXNfYT8gTG9jYWxMYWJlbCBvcgorICAgICAgICAgIG5vZGUuaXNfYT8gU2tpcAor
ICAgICAgICByYWlzZSAiVW5leHBlY3RlZCAje25vZGUuaW5zcGVjdH0gYXQgI3tub2RlLmNvZGVP
cmlnaW59IiAKKyAgICAgIGVuZAorICAgIH0KKyAgICAKKyAgICBteUxpc3QgPSBhcm1WN0xvd2Vy
QnJhbmNoT3BzKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyU2hpZnRPcHMobXlMaXN0
KQorICAgIG15TGlzdCA9IGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXMobXlMaXN0KQorICAg
IG15TGlzdCA9IGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNEb3VibGUobXlMaXN0KQorICAg
IG15TGlzdCA9IGFybVY3TG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKG15TGlzdCkKKyAgICBteUxp
c3QgPSBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlcyhteUxpc3QpCisgICAgbXlMaXN0ID0g
YXJtVjdMb3dlck1pc3BsYWNlZEFkZHJlc3NlcyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdM
b3dlclJlZ2lzdGVyUmV1c2UobXlMaXN0KQorICAgIG15TGlzdCA9IGFzc2lnblJlZ2lzdGVyc1Rv
VGVtcG9yYXJpZXMobXlMaXN0LCA6Z3ByLCBBUk12N19FWFRSQV9HUFJTKQorICAgIG15TGlzdCA9
IGFzc2lnblJlZ2lzdGVyc1RvVGVtcG9yYXJpZXMobXlMaXN0LCA6ZnByLCBBUk12N19FWFRSQV9G
UFJTKQorICAgIG15TGlzdC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBub2RlLmxvd2Vy
KCJBUk12NyIpCisgICAgfQorICBlbmQKK2VuZAorCitkZWYgYXJtVjdPcGVyYW5kcyhvcGVyYW5k
cykKKyAgb3BlcmFuZHMubWFwe3x2fCB2LmFybVY3T3BlcmFuZH0uam9pbigiLCAiKQorZW5kCisK
K2RlZiBhcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcykKKyAgYXJtVjdPcGVyYW5kcyhbb3Bl
cmFuZHNbLTFdXSArIG9wZXJhbmRzWzAuLi0yXSkKK2VuZAorCitkZWYgZW1pdEFybVY3Q29tcGFj
dChvcGNvZGUyLCBvcGNvZGUzLCBvcGVyYW5kcykKKyAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisg
ICAgJGFzbS5wdXRzICIje29wY29kZTN9ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMp
fSIKKyAgZWxzZQorICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kcy5zaXplID09IDIKKyAgICByYWlz
ZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgIGlmIG9wZXJhbmRzWzBd
LmlzX2E/IEltbWVkaWF0ZQorICAgICAgJGFzbS5wdXRzICIje29wY29kZTN9ICN7b3BlcmFuZHNb
MV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRz
WzBdLmFybVY3T3BlcmFuZH0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICIje29wY29kZTJ9
ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICBlbmQKKyAgZW5kCitlbmQK
KworZGVmIGVtaXRBcm1WNyhvcGNvZGUsIG9wZXJhbmRzKQorICBpZiBvcGVyYW5kcy5zaXplID09
IDMKKyAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJh
bmRzKX0iCisgIGVsc2UKKyAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCisgICAg
JGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJh
bmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgZW5k
CitlbmQKKworZGVmIGVtaXRBcm1WN0RvdWJsZUJyYW5jaChicmFuY2hPcGNvZGUsIG9wZXJhbmRz
KQorICAkYXNtLnB1dHMgInZjbXBlLmY2NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0p
fSIKKyAgJGFzbS5wdXRzICJ2bXJzIGFwc3JfbnpjdiwgZnBzY3IiCisgICRhc20ucHV0cyAiI3ti
cmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorZW5kCisKK2RlZiBlbWl0QXJt
VjdUZXN0KG9wZXJhbmRzKQorICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgIGNhc2Ugb3BlcmFuZHMu
c2l6ZQorICB3aGVuIDIKKyAgICBtYXNrID0gSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtMSkK
KyAgd2hlbiAzCisgICAgbWFzayA9IG9wZXJhbmRzWzFdCisgIGVsc2UKKyAgICByYWlzZSAiRXhw
ZWN0ZWQgMiBvciAzIG9wZXJhbmRzIGJ1dCBnb3QgI3tvcGVyYW5kcy5zaXplfSBhdCAje2NvZGVP
cmlnaW5TdHJpbmd9IgorICBlbmQKKyAgCisgIGlmIG1hc2suaXNfYT8gSW1tZWRpYXRlIGFuZCBt
YXNrLnZhbHVlID09IC0xCisgICAgJGFzbS5wdXRzICJ0c3QgI3t2YWx1ZS5hcm1WN09wZXJhbmR9
LCAje3ZhbHVlLmFybVY3T3BlcmFuZH0iCisgIGVsc2lmIG1hc2suaXNfYT8gSW1tZWRpYXRlCisg
ICAgJGFzbS5wdXRzICJ0c3QudyAje3ZhbHVlLmFybVY3T3BlcmFuZH0sICN7bWFzay5hcm1WN09w
ZXJhbmR9IgorICBlbHNlCisgICAgJGFzbS5wdXRzICJ0c3QgI3t2YWx1ZS5hcm1WN09wZXJhbmR9
LCAje21hc2suYXJtVjdPcGVyYW5kfSIKKyAgZW5kCitlbmQKKworZGVmIGVtaXRBcm1WN0NvbXBh
cmUob3BlcmFuZHMsIGNvZGUpCisgICRhc20ucHV0cyAibW92cyAje29wZXJhbmRzWzJdLmFybVY3
T3BlcmFuZH0sIFwjMCIKKyAgJGFzbS5wdXRzICJjbXAgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJh
bmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICRhc20ucHV0cyAiaXQgI3tjb2Rl
fSIKKyAgJGFzbS5wdXRzICJtb3Yje2NvZGV9ICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwg
XCMxIgorZW5kCisKK2RlZiBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCBjb2RlKQorICAkYXNt
LnB1dHMgIm1vdnMgI3tvcGVyYW5kc1stMV0uYXJtVjdPcGVyYW5kfSwgXCMwIgorICBlbWl0QXJt
VjdUZXN0KG9wZXJhbmRzKQorICAkYXNtLnB1dHMgIml0ICN7Y29kZX0iCisgICRhc20ucHV0cyAi
bW92I3tjb2RlfSAje29wZXJhbmRzWy0xXS5hcm1WN09wZXJhbmR9LCBcIzEiCitlbmQKKworY2xh
c3MgSW5zdHJ1Y3Rpb24KKyAgZGVmIGxvd2VyQVJNdjcKKyAgICAkYXNtLmNvbW1lbnQgY29kZU9y
aWdpblN0cmluZworICAgIGNhc2Ugb3Bjb2RlCisgICAgd2hlbiAiYWRkaSIsICJhZGRwIiwgImFk
ZGlzIgorICAgICAgaWYgb3Bjb2RlID09ICJhZGRpcyIKKyAgICAgICAgc3VmZml4ID0gInMiCisg
ICAgICBlbHNlCisgICAgICAgIHN1ZmZpeCA9ICIiCisgICAgICBlbmQKKyAgICAgIGlmIG9wZXJh
bmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJh
aXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVu
bGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBd
LnZhbHVlID09IDAgYW5kIHN1ZmZpeC5lbXB0eT8KKyAgICAgICAgICB1bmxlc3Mgb3BlcmFuZHNb
MV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICRhc20ucHV0cyAibW92ICN7b3BlcmFuZHNb
Ml0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAg
IGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRzICJhZGRzICN7b3BlcmFuZHNb
Ml0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRz
WzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6
ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVu
bGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBv
cGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAiYWRkcyAje2Fy
bVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICBlbHNlCisgICAgICAgIGlmIG9w
ZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3
KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAgICRhc20ucHV0cyAiYWRkcyAje2Fy
bVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAkYXNtLnB1dHMgImFkZCN7c3VmZml4fSAje2FybVY3RmxpcHBlZE9wZXJh
bmRzKG9wZXJhbmRzKX0iCisgICAgICAgIGVuZAorICAgICAgZW5kCisgICAgd2hlbiAiYW5kaSIs
ICJhbmRwIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgiYW5kcyIsICJhbmQiLCBvcGVyYW5kcykK
KyAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgib3JycyIsICJv
cnIiLCBvcGVyYW5kcykKKyAgICB3aGVuICJvcmlzIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgi
b3JycyIsICJvcnJzIiwgb3BlcmFuZHMpCisgICAgd2hlbiAieG9yaSIsICJ4b3JwIgorICAgICAg
ZW1pdEFybVY3Q29tcGFjdCgiZW9ycyIsICJlb3IiLCBvcGVyYW5kcykKKyAgICB3aGVuICJsc2hp
ZnRpIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgibHNscyIsICJsc2xzIiwgb3BlcmFuZHMpCisg
ICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgIGVtaXRBcm1WN0NvbXBhY3QoImFzcnMiLCAiYXNycyIs
IG9wZXJhbmRzKQorICAgIHdoZW4gInVyc2hpZnRpIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgi
bHNycyIsICJsc3JzIiwgb3BlcmFuZHMpCisgICAgd2hlbiAibXVsaSIKKyAgICAgIGlmIG9wZXJh
bmRzLnNpemUgPT0gMiBvciBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXSBvciBvcGVyYW5kc1sx
XSA9PSBvcGVyYW5kc1syXQorICAgICAgICBlbWl0QXJtVjcoIm11bHMiLCBvcGVyYW5kcykKKyAg
ICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJtb3YgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJh
bmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAgICRhc20ucHV0cyAibXVs
cyAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5k
fSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgZW5kCisgICAgd2hlbiAic3Vi
aSIsICJzdWJwIiwgInN1YmlzIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgic3VicyIsICJzdWJz
Iiwgb3BlcmFuZHMpCisgICAgd2hlbiAibmVnaSIKKyAgICAgICRhc20ucHV0cyAicnNicyAje29w
ZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgXCMw
IgorICAgIHdoZW4gIm5vdGkiCisgICAgICAkYXNtLnB1dHMgIm12bnMgI3tvcGVyYW5kc1swXS5h
cm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgd2hlbiAibG9h
ZGkiLCAibG9hZHAiCisgICAgICAkYXNtLnB1dHMgImxkciAje2FybVY3RmxpcHBlZE9wZXJhbmRz
KG9wZXJhbmRzKX0iCisgICAgd2hlbiAic3RvcmVpIiwgInN0b3JlcCIKKyAgICAgICRhc20ucHV0
cyAic3RyICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gImxvYWRiIgorICAg
ICAgJGFzbS5wdXRzICJsZHJiICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAg
ICB3aGVuICJsb2FkYnMiCisgICAgICAkYXNtLnB1dHMgImxkcnNiLncgI3thcm1WN0ZsaXBwZWRP
cGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAi
c3RyYiAje2FybVY3T3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJsb2FkaCIKKyAgICAg
ICRhc20ucHV0cyAibGRyaCAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAg
d2hlbiAibG9hZGhzIgorICAgICAgJGFzbS5wdXRzICJsZHJzaC53ICN7YXJtVjdGbGlwcGVkT3Bl
cmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJzdG9yZWgiCisgICAgICAkYXNtLnB1dHMgInN0
cmggI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAibG9hZGQiCisgICAgICAk
YXNtLnB1dHMgInZsZHIuNjQgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAg
IHdoZW4gInN0b3JlZCIKKyAgICAgICRhc20ucHV0cyAidnN0ci42NCAje2FybVY3T3BlcmFuZHMo
b3BlcmFuZHMpfSIKKyAgICB3aGVuICJhZGRkIgorICAgICAgZW1pdEFybVY3KCJ2YWRkLmY2NCIs
IG9wZXJhbmRzKQorICAgIHdoZW4gImRpdmQiCisgICAgICBlbWl0QXJtVjcoInZkaXYuZjY0Iiwg
b3BlcmFuZHMpCisgICAgd2hlbiAic3ViZCIKKyAgICAgIGVtaXRBcm1WNygidnN1Yi5mNjQiLCBv
cGVyYW5kcykKKyAgICB3aGVuICJtdWxkIgorICAgICAgZW1pdEFybVY3KCJ2bXVsLmY2NCIsIG9w
ZXJhbmRzKQorICAgIHdoZW4gInNxcnRkIgorICAgICAgJGFzbS5wdXRzICJ2c3FydC5mNjQgI3th
cm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gImNpMmQiCisgICAgICAk
YXNtLnB1dHMgInZtb3YgI3tvcGVyYW5kc1sxXS5hcm1WN1NpbmdsZX0sICN7b3BlcmFuZHNbMF0u
YXJtVjdPcGVyYW5kfSIKKyAgICAgICRhc20ucHV0cyAidmN2dC5mNjQuczMyICN7b3BlcmFuZHNb
MV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN1NpbmdsZX0iCisgICAgd2hlbiAi
YmRlcSIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmVxIiwgb3BlcmFuZHMpCisgICAg
d2hlbiAiYmRuZXEiCisgICAgICAkYXNtLnB1dHMgInZjbXBlLmY2NCAje2FybVY3T3BlcmFuZHMo
b3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2Ny
IgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXEiKQorICAgICAg
JGFzbS5wdXRzICJidnMgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVy
ZWQpLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFuZHNbMl0uYXNtTGFi
ZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIkFSTXY3IikKKyAgICB3aGVuICJiZGd0Igor
ICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJiZ3QiLCBvcGVyYW5kcykKKyAgICB3aGVuICJi
ZGd0ZXEiCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJnZSIsIG9wZXJhbmRzKQorICAg
IHdoZW4gImJkbHQiCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJtaSIsIG9wZXJhbmRz
KQorICAgIHdoZW4gImJkbHRlcSIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmxzIiwg
b3BlcmFuZHMpCisgICAgd2hlbiAiYmRlcXVuIgorICAgICAgJGFzbS5wdXRzICJ2Y21wZS5mNjQg
I3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgInZtcnMg
YXBzcl9uemN2LCBmcHNjciIKKyAgICAgICRhc20ucHV0cyAiYnZzICN7b3BlcmFuZHNbMl0uYXNt
TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJiZXEgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisg
ICAgd2hlbiAiYmRuZXF1biIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYm5lIiwgb3Bl
cmFuZHMpCisgICAgd2hlbiAiYmRndHVuIgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJi
aGkiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGd0ZXF1biIKKyAgICAgIGVtaXRBcm1WN0RvdWJs
ZUJyYW5jaCgiYnBsIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRsdHVuIgorICAgICAgZW1pdEFy
bVY3RG91YmxlQnJhbmNoKCJibHQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGx0ZXF1biIKKyAg
ICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmxlIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYnRk
MmkiCisgICAgICAjIEZJWE1FOiBtYXkgYmUgYSBnb29kIGlkZWEgdG8ganVzdCBnZXQgcmlkIG9m
IHRoaXMgaW5zdHJ1Y3Rpb24sIHNpbmNlIHRoZSBpbnRlcnByZXRlcgorICAgICAgIyBjdXJyZW50
bHkgZG9lcyBub3QgdXNlIGl0LgorICAgICAgcmFpc2UgIkFSTXY3IGRvZXMgbm90IHN1cHBvcnQg
dGhpcyBvcGNvZGUgeWV0LCAje2NvZGVPcmlnaW59IgorICAgIHdoZW4gInRkMmkiCisgICAgICAk
YXNtLnB1dHMgInZjdnQuczMyLmY2NCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSwg
I3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3Bl
cmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0i
CisgICAgd2hlbiAiYmNkMmkiCisgICAgICAkYXNtLnB1dHMgInZjdnQuczMyLmY2NCAje0FSTXY3
X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9Igor
ICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tBUk12
N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0iCisgICAgICAkYXNtLnB1dHMgInZjdnQuZjY0LnMz
MiAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3T3BlcmFuZH0sICN7QVJNdjdfU0NSQVRDSF9GUFIu
YXJtVjdTaW5nbGV9IgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJibmUiLCBbQVJNdjdf
U0NSQVRDSF9GUFIsIG9wZXJhbmRzWzBdLCBvcGVyYW5kc1syXV0pCisgICAgICAkYXNtLnB1dHMg
InRzdCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVy
YW5kfSIKKyAgICAgICRhc20ucHV0cyAiYmVxICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAg
IHdoZW4gIm1vdmR6IgorICAgICAgIyBGSVhNRTogZWl0aGVyIHN1cHBvcnQgdGhpcyBvciByZW1v
dmUgaXQuCisgICAgICByYWlzZSAiQVJNdjcgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wY29kZSB5
ZXQsICN7Y29kZU9yaWdpbn0iCisgICAgd2hlbiAicG9wIgorICAgICAgJGFzbS5wdXRzICJwb3Ag
I3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgIHdoZW4gInB1c2giCisgICAgICAkYXNt
LnB1dHMgInB1c2ggI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgIHdoZW4gIm1vdmUi
LCAic3hpMnAiLCAienhpMnAiCisgICAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUK
KyAgICAgICAgYXJtVjdNb3ZlSW1tZWRpYXRlKG9wZXJhbmRzWzBdLnZhbHVlLCBvcGVyYW5kc1sx
XSkKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJtb3YgI3thcm1WN0ZsaXBwZWRPcGVy
YW5kcyhvcGVyYW5kcyl9IgorICAgICAgZW5kCisgICAgd2hlbiAibm9wIgorICAgICAgJGFzbS5w
dXRzICJub3AiCisgICAgd2hlbiAiYmllcSIsICJicGVxIiwgImJiZXEiCisgICAgICBpZiBJbW1l
ZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgJGFzbS5wdXRzICJ0c3Qg
I3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0i
CisgICAgICBlbHNpZiBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMV0KKyAgICAg
ICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRz
WzBdLmFybVY3T3BlcmFuZH0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiY21wICN7
YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgZW5kCisgICAgICAkYXNtLnB1
dHMgImJlcSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaW5lcSIsICJicG5l
cSIsICJiYm5lcSIKKyAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1sw
XQorICAgICAgICAkYXNtLnB1dHMgInRzdCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7
b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICAgIGVsc2lmIEltbWVkaWF0ZS5uZXcobmls
LCAwKSA9PSBvcGVyYW5kc1sxXQorICAgICAgICAkYXNtLnB1dHMgInRzdCAje29wZXJhbmRzWzBd
LmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgIGVsc2UK
KyAgICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0i
CisgICAgICBlbmQKKyAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9
IgorICAgIHdoZW4gImJpYSIsICJicGEiLCAiYmJhIgorICAgICAgJGFzbS5wdXRzICJjbXAgI3th
cm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgImJoaSAje29w
ZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWFlcSIsICJicGFlcSIsICJiYmFlcSIK
KyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9Igor
ICAgICAgJGFzbS5wdXRzICJiaHMgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAi
YmliIiwgImJwYiIsICJiYmIiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMo
b3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmxvICN7b3BlcmFuZHNbMl0uYXNt
TGFiZWx9IgorICAgIHdoZW4gImJpYmVxIiwgImJwYmVxIiwgImJiYmVxIgorICAgICAgJGFzbS5w
dXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1
dHMgImJscyAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWd0IiwgImJwZ3Qi
LCAiYmJndCIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1sw
Li4xXSl9IgorICAgICAgJGFzbS5wdXRzICJiZ3QgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisg
ICAgd2hlbiAiYmlndGVxIiwgImJwZ3RlcSIsICJiYmd0ZXEiCisgICAgICAkYXNtLnB1dHMgImNt
cCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmdl
ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJpbHQiLCAiYnBsdCIsICJiYmx0
IgorICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0i
CisgICAgICAkYXNtLnB1dHMgImJsdCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVu
ICJiaWx0ZXEiLCAiYnBsdGVxIiwgImJibHRlcSIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJt
VjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5wdXRzICJibGUgI3tvcGVy
YW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYnRpeiIsICJidHB6IiwgImJ0YnoiCisgICAg
ICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICAgICAgJGFzbS5wdXRzICJiZXEgI3tvcGVyYW5k
c1stMV0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJ0aW56IiwgImJ0cG56IiwgImJ0Ym56IgorICAg
ICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFu
ZHNbLTFdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJidGlvIiwgImJ0cG8iLCAiYnRibyIKKyAgICAg
IGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgICAgICAkYXNtLnB1dHMgImJ2cyAje29wZXJhbmRz
Wy0xXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYnRpcyIsICJidHBzIiwgImJ0YnMiCisgICAgICBl
bWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICAgICAgJGFzbS5wdXRzICJibWkgI3tvcGVyYW5kc1st
MV0uYXNtTGFiZWx9IgorICAgIHdoZW4gImptcCIKKyAgICAgIGlmIG9wZXJhbmRzWzBdLmxhYmVs
PworICAgICAgICAkYXNtLnB1dHMgImIgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgICBl
bHNlCisgICAgICAgICRhc20ucHV0cyAibW92IHBjLCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFu
ZH0iCisgICAgICBlbmQKKyAgICB3aGVuICJjYWxsIgorICAgICAgaWYgb3BlcmFuZHNbMF0ubGFi
ZWw/CisgICAgICAgICRhc20ucHV0cyAiYmx4ICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAg
ICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgImJseCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFu
ZH0iCisgICAgICBlbmQKKyAgICB3aGVuICJicmVhayIKKyAgICAgICRhc20ucHV0cyAiYmtwdCIK
KyAgICB3aGVuICJyZXQiCisgICAgICAkYXNtLnB1dHMgImJ4IGxyIgorICAgIHdoZW4gImNpZXEi
LCAiY3BlcSIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJlcSIpCisgICAgd2hl
biAiY2luZXEiLCAiY3BuZXEiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibmUi
KQorICAgIHdoZW4gImNpYSIsICJjcGEiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRz
LCAiaGkiKQorICAgIHdoZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAgZW1pdEFybVY3Q29tcGFy
ZShvcGVyYW5kcywgImhzIikKKyAgICB3aGVuICJjaWIiLCAiY3BiIgorICAgICAgZW1pdEFybVY3
Q29tcGFyZShvcGVyYW5kcywgImxvIikKKyAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAg
IGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJscyIpCisgICAgd2hlbiAiY2lndCIsICJjcGd0
IgorICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImd0IikKKyAgICB3aGVuICJjaWd0
ZXEiLCAiY3BndGVxIgorICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImdlIikKKyAg
ICB3aGVuICJjaWx0IiwgImNwbHQiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAi
bHQiKQorICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiCisgICAgICBlbWl0QXJtVjdDb21wYXJl
KG9wZXJhbmRzLCAibGUiKQorICAgIHdoZW4gInRpbyIsICJ0Ym8iCisgICAgICBlbWl0QXJtVjdU
ZXN0U2V0KG9wZXJhbmRzLCAidnMiKQorICAgIHdoZW4gInRpcyIsICJ0YnMiCisgICAgICBlbWl0
QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAibWkiKQorICAgIHdoZW4gInRpeiIsICJ0YnoiCisgICAg
ICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAiZXEiKQorICAgIHdoZW4gInRpbnoiLCAidGJu
eiIKKyAgICAgIGVtaXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMsICJuZSIpCisgICAgd2hlbiAicGVl
ayIKKyAgICAgICRhc20ucHV0cyAibGRyICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgW3Nw
LCBcIyN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fV0iCisgICAgd2hlbiAicG9rZSIKKyAgICAgICRh
c20ucHV0cyAic3RyICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgW3NwLCBcIyN7b3BlcmFu
ZHNbMF0udmFsdWUgKiA0fV0iCisgICAgd2hlbiAiZmlpMmQiCisgICAgICAkYXNtLnB1dHMgInZt
b3YgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFu
ZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAg
ICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNb
Ml0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgIHdoZW4g
ImJvIgorICAgICAgJGFzbS5wdXRzICJidnMgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAg
d2hlbiAiYnMiCisgICAgICAkYXNtLnB1dHMgImJtaSAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIK
KyAgICB3aGVuICJieiIKKyAgICAgICRhc20ucHV0cyAiYmVxICN7b3BlcmFuZHNbMF0uYXNtTGFi
ZWx9IgorICAgIHdoZW4gImJueiIKKyAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFuZHNbMF0u
YXNtTGFiZWx9IgorICAgIHdoZW4gImxlYWkiLCAibGVhcCIKKyAgICAgIG9wZXJhbmRzWzBdLmFy
bVY3RW1pdExlYShvcGVyYW5kc1sxXSkKKyAgICB3aGVuICJzbXVsbGkiCisgICAgICByYWlzZSAi
V3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBzbXVsbCBpbiAje3NlbGYuaW5zcGVjdH0gYXQg
I3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG9wZXJhbmRzLmxlbmd0aCA9PSA0CisgICAgICAk
YXNtLnB1dHMgInNtdWxsICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sz
XS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNb
MV0uYXJtVjdPcGVyYW5kfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiVW5oYW5kbGVkIG9wY29k
ZSAje29wY29kZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKyAgZW5kCitlbmQK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNzIgQEAKKyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
IyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQor
CityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAib2Zm
c2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInNlbGZfaGFzaCIKK3JlcXVpcmUgInNl
dHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgorCitjbGFzcyBBc3NlbWJsZXIKKyAgZGVmIGlu
aXRpYWxpemUob3V0cCkKKyAgICBAb3V0cCA9IG91dHAKKyAgICBAc3RhdGUgPSA6Y3BwCisgICAg
QGNvbW1lbnRTdGF0ZSA9IDpub25lCisgICAgQGNvbW1lbnQgPSBuaWwKKyAgZW5kCisgIAorICBk
ZWYgZW50ZXJBc20KKyAgICBAb3V0cC5wdXRzICJhc20gKCIKKyAgICBAc3RhdGUgPSA6YXNtCisg
IGVuZAorICAKKyAgZGVmIGxlYXZlQXNtCisgICAgcHV0c0xhc3RDb21tZW50CisgICAgQG91dHAu
cHV0cyAiKTsiCisgICAgQHN0YXRlID0gOmNwcAorICBlbmQKKyAgCisgIGRlZiBpbkFzbQorICAg
IGVudGVyQXNtCisgICAgeWllbGQKKyAgICBsZWF2ZUFzbQorICBlbmQKKyAgCisgIGRlZiBsYXN0
Q29tbWVudAorICAgIGlmIEBjb21tZW50CisgICAgICByZXN1bHQgPSAiLy8gI3tAY29tbWVudH0i
CisgICAgZWxzZQorICAgICAgcmVzdWx0ID0gIiIKKyAgICBlbmQKKyAgICBAY29tbWVudFN0YXRl
ID0gOm5vbmUKKyAgICBAY29tbWVudCA9IG5pbAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRl
ZiBwdXRzTGFzdENvbW1lbnQKKyAgICBjb21tZW50ID0gbGFzdENvbW1lbnQKKyAgICB1bmxlc3Mg
Y29tbWVudC5lbXB0eT8KKyAgICAgIEBvdXRwLnB1dHMgY29tbWVudAorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBwdXRzKCpsaW5lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQor
ICAgIEBvdXRwLnB1dHMoIlwiXFx0IiArIGxpbmUuam9pbignJykgKyAiXFxuXCIgI3tsYXN0Q29t
bWVudH0iKQorICBlbmQKKyAgCisgIGRlZiBwcmludChsaW5lKQorICAgIHJhaXNlIHVubGVzcyBA
c3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnByaW50KCJcIiIgKyBsaW5lICsgIlwiIikKKyAgZW5k
CisgIAorICBkZWYgcHV0c0xhYmVsKGxhYmVsTmFtZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0YXRl
ID09IDphc20KKyAgICBAb3V0cC5wdXRzKCJPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwoI3tsYWJl
bE5hbWV9KSAje2xhc3RDb21tZW50fSIpCisgIGVuZAorICAKKyAgZGVmIHB1dHNMb2NhbExhYmVs
KGxhYmVsTmFtZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5w
dXRzKCJMT0NBTF9MQUJFTF9TVFJJTkcoI3tsYWJlbE5hbWV9KSBcIjpcXG5cIiAje2xhc3RDb21t
ZW50fSIpCisgIGVuZAorICAKKyAgZGVmIHNlbGYubGFiZWxSZWZlcmVuY2UobGFiZWxOYW1lKQor
ICAgICJcIiBTWU1CT0xfU1RSSU5HKCN7bGFiZWxOYW1lfSkgXCIiCisgIGVuZAorICAKKyAgZGVm
IHNlbGYubG9jYWxMYWJlbFJlZmVyZW5jZShsYWJlbE5hbWUpCisgICAgIlwiIExPQ0FMX0xBQkVM
X1NUUklORygje2xhYmVsTmFtZX0pIFwiIgorICBlbmQKKyAgCisgIGRlZiBjb21tZW50KHRleHQp
CisgICAgY2FzZSBAY29tbWVudFN0YXRlCisgICAgd2hlbiA6bm9uZQorICAgICAgQGNvbW1lbnQg
PSB0ZXh0CisgICAgICBAY29tbWVudFN0YXRlID0gOm9uZQorICAgIHdoZW4gOm9uZQorICAgICAg
QG91dHAucHV0cyAiLy8gI3tAY29tbWVudH0iCisgICAgICBAb3V0cC5wdXRzICIvLyAje3RleHR9
IgorICAgICAgQGNvbW1lbnQgPSBuaWwKKyAgICAgIEBjb21tZW50U3RhdGUgPSA6bWFueQorICAg
IHdoZW4gOm1hbnkKKyAgICAgIEBvdXRwLnB1dHMgIi8vICN7dGV4dH0iCisgICAgZWxzZQorICAg
ICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCitlbmQKKworYXNtRmlsZSA9IEFSR1Yuc2hpZnQKK29m
ZnNldHNGaWxlID0gQVJHVi5zaGlmdAorb3V0cHV0RmxubSA9IEFSR1Yuc2hpZnQKKworJHN0ZGVy
ci5wdXRzICJvZmZsaW5lYXNtOiBQYXJzaW5nICN7YXNtRmlsZX0gYW5kICN7b2Zmc2V0c0ZpbGV9
IGFuZCBjcmVhdGluZyBhc3NlbWJseSBmaWxlICN7b3V0cHV0RmxubX0uIgorCitvZmZzZXRzTGlz
dCwgY29uZmlnSW5kZXggPSBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KG9mZnNldHNGaWxl
KQoraW5wdXREYXRhID0gSU86OnJlYWQoYXNtRmlsZSkKKworaW5wdXRIYXNoID0KKyAgIi8vIG9m
ZmxpbmVhc20gaW5wdXQgaGFzaDogIiArIERpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoaW5wdXREYXRh
KSArCisgICIgIiArIERpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoKG9mZnNldHNMaXN0ICsgW2NvbmZp
Z0luZGV4XSkuam9pbignICcpKSArCisgICIgIiArIHNlbGZIYXNoCisKK2lmIEZpbGVUZXN0LmV4
aXN0PyBvdXRwdXRGbG5tCisgIEZpbGUub3BlbihvdXRwdXRGbG5tLCAiciIpIHsKKyAgICB8IGlu
cCB8CisgICAgZmlyc3RMaW5lID0gaW5wLmdldHMKKyAgICBpZiBmaXJzdExpbmUgYW5kIGZpcnN0
TGluZS5jaG9tcCA9PSBpbnB1dEhhc2gKKyAgICAgICRzdGRlcnIucHV0cyAib2ZmbGluZWFzbTog
Tm90aGluZyBjaGFuZ2VkLiIKKyAgICAgIGV4aXQgMAorICAgIGVuZAorICB9CitlbmQKKworRmls
ZS5vcGVuKG91dHB1dEZsbm0sICJ3IikgeworICB8IG91dHAgfAorICAkb3V0cHV0ID0gb3V0cAor
ICAkb3V0cHV0LnB1dHMgaW5wdXRIYXNoCisgIAorICAkYXNtID0gQXNzZW1ibGVyLm5ldygkb3V0
cHV0KQorICAKKyAgYXN0ID0gcGFyc2UobGV4KGlucHV0RGF0YSkpCisgIAorICBmb3JTZXR0aW5n
cyhjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KVtjb25maWdJbmRleF0sIGFzdCkgewor
ICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgIGFzc2Vy
dENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAgICBsb3dMZXZlbEFTVCA9IGxvd0xl
dmVsQVNULnJlc29sdmUoKmJ1aWxkT2Zmc2V0c01hcChsb3dMZXZlbEFTVCwgb2Zmc2V0c0xpc3Qp
KQorICAgIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVs
QVNULCBiYWNrZW5kKSB7CisgICAgICAkYXNtLmluQXNtIHsKKyAgICAgICAgbG93TGV2ZWxBU1Qu
bG93ZXIoYmFja2VuZCkKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworJHN0ZGVyci5wdXRzICJv
ZmZsaW5lYXNtOiBBc3NlbWJseSBmaWxlICN7b3V0cHV0RmxubX0gc3VjY2Vzc2Z1bGx5IGdlbmVy
YXRlZC4iCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTAzOSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworIworIyBCYXNlIHV0aWxpdHkgdHlwZXMgZm9yIHRoZSBBU1QuCisjCisKKyMg
VmFsaWQgbWV0aG9kcyBmb3IgTm9kZToKKyMKKyMgbm9kZS5jaGlsZHJlbiAtPiBSZXR1cm5zIGFu
IGFycmF5IG9mIGltbWVkaWF0ZSBjaGlsZHJlbi4KKyMKKyMgbm9kZS5kZXNjZW5kZW50cyAtPiBS
ZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBzdHJpY3QgZGVzY2VuZGFudHMgKGNoaWxkcmVuCisjICAg
ICBhbmQgY2hpbGRyZW4gb2YgY2hpbGRyZW4sIHRyYW5zaXRpdmVseSkuCisjCisjIG5vZGUuZmxh
dHRlbiAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIHN0cmljdCBkZXNjZW5kYW50
cyBhbmQKKyMgICAgIHRoZSBub2RlIGl0c2VsZi4KKyMKKyMgbm9kZS5maWx0ZXIodHlwZSkgLT4g
UmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRob3NlIGVsZW1lbnRzIGluCisjICAgICBub2Rl
LmZsYXR0ZW4gdGhhdCBhcmUgb2YgdGhlIGdpdmVuIHR5cGUgKGlzX2E/IHR5cGUgcmV0dXJucyB0
cnVlKS4KKyMKKyMgbm9kZS5tYXBDaGlsZHJlbnt8dnwgLi4ufSAtPiBSZXR1cm5zIGEgbmV3IG5v
ZGUgd2l0aCBhbGwgY2hpbGRyZW4KKyMgICAgIHJlcGxhY2VkIGFjY29yZGluZyB0byB0aGUgZ2l2
ZW4gYmxvY2suCisjCisjIEV4YW1wbGVzOgorIworIyBub2RlLmZpbHRlcihTZXR0aW5nKS51bmlx
IC0+IFJldHVybnMgYWxsIG9mIHRoZSBzZXR0aW5ncyB0aGF0IHRoZSBBU1QncworIyAgICAgSWZU
aGVuRWxzZSBibG9ja3MgZGVwZW5kIG9uLgorIworIyBub2RlLmZpbHRlcihTdHJ1Y3RPZmZzZXQp
LnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHN0cnVjdHVyZSBvZmZzZXRzCisjICAgICB0aGF0
IHRoZSBBU1QgZGVwZW5kcyBvbi4KKworY2xhc3MgTm9kZQorICBhdHRyX3JlYWRlciA6Y29kZU9y
aWdpbgorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBAY29kZU9yaWdpbiA9
IGNvZGVPcmlnaW4KKyAgZW5kCisgIAorICBkZWYgY29kZU9yaWdpblN0cmluZworICAgICJsaW5l
IG51bWJlciAje0Bjb2RlT3JpZ2lufSIKKyAgZW5kCisgIAorICBkZWYgZGVzY2VuZGFudHMKKyAg
ICBjaGlsZHJlbi5jb2xsZWN0e3x2fCB2LmZsYXR0ZW59LmZsYXR0ZW4KKyAgZW5kCisgIAorICBk
ZWYgZmxhdHRlbgorICAgIFtzZWxmXSArIGRlc2NlbmRhbnRzCisgIGVuZAorICAKKyAgZGVmIGZp
bHRlcih0eXBlKQorICAgIGZsYXR0ZW4uc2VsZWN0e3x2fCB2LmlzX2E/IHR5cGV9CisgIGVuZAor
ZW5kCisKK2NsYXNzIE5vQ2hpbGRyZW4gPCBOb2RlCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAg
ICBbXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIHNlbGYKKyAgZW5kCitlbmQK
KworY2xhc3MgU3RydWN0T2Zmc2V0S2V5CisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAor
ICAKKyAgZGVmIGluaXRpYWxpemUoc3RydWN0LCBmaWVsZCkKKyAgICBAc3RydWN0ID0gc3RydWN0
CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5kCisgIAorICBkZWYgaGFzaAorICAgIEBzdHJ1Y3Qu
aGFzaCArIEBmaWVsZC5oYXNoICogMworICBlbmQKKyAgCisgIGRlZiBlcWw/KG90aGVyKQorICAg
IEBzdHJ1Y3QgPT0gb3RoZXIuc3RydWN0IGFuZCBAZmllbGQgPT0gb3RoZXIuZmllbGQKKyAgZW5k
CitlbmQKKworIworIyBBU1Qgbm9kZXMuCisjCisKK2NsYXNzIFN0cnVjdE9mZnNldCA8IE5vQ2hp
bGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAgQEBtYXBw
aW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvckZpZWxkKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmll
bGQpCisgICAga2V5ID0gU3RydWN0T2Zmc2V0S2V5Lm5ldyhzdHJ1Y3QsIGZpZWxkKQorICAgIAor
ICAgIHVubGVzcyBAQG1hcHBpbmdba2V5XQorICAgICAgQEBtYXBwaW5nW2tleV0gPSBTdHJ1Y3RP
ZmZzZXQubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAgZW5kCisgICAgQEBtYXBw
aW5nW2tleV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje3N0cnVjdH06OiN7ZmllbGR9
IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIpCisgICAgaWYgQHN0cnVjdCAhPSBvdGhlci5z
dHJ1Y3QKKyAgICAgIHJldHVybiBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgICBlbmQKKyAg
ICBAZmllbGQgPD0+IG90aGVyLmZpZWxkCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAg
ZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBk
ZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAg
ZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mIDwgTm9DaGlsZHJlbgorICBhdHRyX3Jl
YWRlciA6c3RydWN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAc3RydWN0ID0gc3RydWN0CisgIGVuZAorICAKKyAg
QEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgc3RydWN0
KQorICAgIHVubGVzcyBAQG1hcHBpbmdbc3RydWN0XQorICAgICAgQEBtYXBwaW5nW3N0cnVjdF0g
PSBTaXplb2YubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdb
c3RydWN0XQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgInNpemVvZiAje0BzdHJ1Y3R9Igor
ICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIpCisgICAgQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0
CisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYg
bGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUK
KyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xh
c3MgSW1tZWRpYXRlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6dmFsdWUKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQHZhbHVlID0gdmFsdWUKKyAgICByYWlzZSAiQmFkIGltbWVkaWF0ZSB2YWx1ZSAje3ZhbHVl
Lmluc3BlY3R9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyB2YWx1ZS5pc19hPyBJbnRl
Z2VyCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3t2YWx1ZX0iCisgIGVuZAorICAKKyAg
ZGVmID09KG90aGVyKQorICAgIG90aGVyLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUg
PT0gQHZhbHVlCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisg
IAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPwor
ICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitl
bmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpy
aWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAor
ICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAg
CisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFkZEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5
aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
Iigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCisgIAorICBkZWYgYWRkcmVz
cz8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQK
KyAgCisgIGRlZiBpbW1lZGlhdGU/CisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rl
cj8KKyAgICBmYWxzZQorICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzIDwgTm9kZQor
ICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVm
dAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0Bs
ZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgU3ViSW1tZWRp
YXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAtICN7cmlnaHQuZHVtcH0pIgor
ICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxh
YmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisg
IGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNz
IE11bEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAor
ICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFw
Q2hpbGRyZW4KKyAgICBNdWxJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQp
LCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1
bXB9ICogI3tyaWdodC5kdW1wfSkiCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFs
c2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYg
aW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFs
c2UKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlIDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hp
bGRyZW4KKyAgICBbQGNoaWxkXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5l
Z0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiKC0je0BjaGlsZC5kdW1wfSkiCisgIGVuZAorICAKKyAgZGVmIGFkZHJl
c3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5k
CisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0
ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRCA8IE5vQ2hpbGRy
ZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisg
IAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBu
YW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9
IFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5n
W25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorICAKKyAgZGVm
IGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UK
KyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVm
IHJlZ2lzdGVyPworICAgIHRydWUKKyAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklEIDwg
Tm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQor
ICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5n
W25hbWVdID0gRlBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAg
IEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQK
KyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPwor
ICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBlbmQK
KyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICB0cnVlCisgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlh
YmxlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0g
bmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1l
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBt
YXBwaW5nW25hbWVdID0gVmFyaWFibGUubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisg
ICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVu
ZAorZW5kCisKK2NsYXNzIEFkZHJlc3MgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6b2Zm
c2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBvZmZzZXQpCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFzZSA9IGJhc2UKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0
CisgICAgcmFpc2UgIkJhZCBiYXNlIGZvciBhZGRyZXNzICN7YmFzZS5pbnNwZWN0fSBhdCAje2Nv
ZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgYmFzZS5pc19hPyBWYXJpYWJsZSBvciBiYXNlLnJlZ2lz
dGVyPworICAgIHJhaXNlICJCYWQgb2Zmc2V0IGZvciBhZGRyZXNzICN7b2Zmc2V0Lmluc3BlY3R9
IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBvZmZzZXQuaXNfYT8gVmFyaWFibGUgb3Ig
b2Zmc2V0LmltbWVkaWF0ZT8KKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2Us
IEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQWRkcmVzcy5uZXco
Y29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfV0iCisgIGVuZAorICAK
KyAgZGVmIGFkZHJlc3M/CisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBm
YWxzZQorICBlbmQKKyAgCisgIGRlZiBpbW1lZGlhdGU/CisgICAgZmFsc2UKKyAgZW5kCisgIAor
ICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4
IDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFzZSwgOmluZGV4LCA6c2NhbGUsIDpvZmZzZXQKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisgICAgQGluZGV4ID0g
aW5kZXgKKyAgICBAc2NhbGUgPSBzY2FsZQorICAgIHJhaXNlIHVubGVzcyBbMSwgMiwgNCwgOF0u
bWVtYmVyPyBAc2NhbGUKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIHNj
YWxlU2hpZnQKKyAgICBjYXNlIHNjYWxlCisgICAgd2hlbiAxCisgICAgICAwCisgICAgd2hlbiAy
CisgICAgICAxCisgICAgd2hlbiA0CisgICAgICAyCisgICAgd2hlbiA4CisgICAgICAzCisgICAg
ZWxzZQorICAgICAgcmFpc2UgIkJhZCBzY2FsZSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAg
IGVuZAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAYmFzZSwgQGluZGV4LCBAb2Zm
c2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEJhc2VJbmRleC5uZXcoY29k
ZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBpbmRleCksIEBzY2FsZSwgKHlpZWxkIEBv
ZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFz
ZS5kdW1wfSwgI3tpbmRleC5kdW1wfSwgI3tzY2FsZX1dIgorICBlbmQKKyAgCisgIGRlZiBhZGRy
ZXNzPworICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5k
CisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lz
dGVyPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcyA8IE5v
Q2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmFkZHJlc3MKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIGFkZHJlc3MpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYWRkcmVzcyA9
IGFkZHJlc3MKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje2FkZHJlc3MuZHVtcH1bXSIK
KyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGxh
YmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxzZQor
ICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICBmYWxzZQorICBlbmQKK2VuZAorCitjbGFz
cyBJbnN0cnVjdGlvbiA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBvcGNvZGUsIG9wZXJhbmRzKQorICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgQG9wY29kZSA9IG9wY29kZQorICAgIEBvcGVyYW5kcyA9IG9w
ZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgb3BlcmFuZHMKKyAgZW5kCisg
IAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmln
aW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIlx0IiArIG9wY29kZS50b19zICsgIiAiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5k
dW1wfS5qb2luKCIsICIpCisgIGVuZAorZW5kCisKK2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRlcnJvciIKKyAgZW5kCitlbmQKKworY2xhc3MgQ29u
c3REZWNsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6dmFyaWFibGUsIDp2YWx1ZQorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQHZhcmlhYmxlID0gdmFyaWFibGUKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBl
bmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAdmFyaWFibGUsIEB2YWx1ZV0KKyAgZW5kCisg
IAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBDb25zdERlY2wubmV3KGNvZGVPcmlnaW4sICh5aWVs
ZCBAdmFyaWFibGUpLCAoeWllbGQgQHZhbHVlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICJjb25zdCAje0B2YXJpYWJsZS5kdW1wfSA9ICN7QHZhbHVlLmR1bXB9IgorICBlbmQKK2VuZAor
CiskbGFiZWxNYXBwaW5nID0ge30KKworY2xhc3MgTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJf
cmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIHNl
bGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0K
KyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJl
bE1hcHBpbmdbbmFtZV0uaXNfYT8gTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5n
W25hbWVdID0gTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVs
TWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBl
bmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKworICBAQHVuaXF1ZU5hbWVDb3Vu
dGVyID0gMAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlm
ICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjog
I3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTG9jYWxMYWJlbAorICAg
IGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBMb2NhbExhYmVsLm5ldyhjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAor
ICBkZWYgc2VsZi51bmlxdWUoY29tbWVudCkKKyAgICBuZXdOYW1lID0gIl8je2NvbW1lbnR9Igor
ICAgIGlmICRsYWJlbE1hcHBpbmdbbmV3TmFtZV0KKyAgICAgIHdoaWxlICRsYWJlbE1hcHBpbmdb
bmV3TmFtZSA9ICJfI3tAQHVuaXF1ZU5hbWVDb3VudGVyfV8je2NvbW1lbnR9Il0KKyAgICAgICAg
QEB1bmlxdWVOYW1lQ291bnRlciArPSAxCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBmb3JOYW1l
KG5pbCwgbmV3TmFtZSkKKyAgZW5kCisgIAorICBkZWYgY2xlYW5OYW1lCisgICAgaWYgbmFtZSA9
fiAvXlwuLworICAgICAgIl8iICsgbmFtZVsxLi4tMV0KKyAgICBlbHNlCisgICAgICBuYW1lCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5k
CisKK2NsYXNzIExhYmVsUmVmZXJlbmNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBb
QGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExhYmVsUmVmZXJlbmNl
Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxhYmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQor
ICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAg
ZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBsYWJl
bD8KKyAgICB0cnVlCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UgPCBO
b0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJl
bAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAg
ZGVmIG1hcENoaWxkcmVuCisgICAgTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwg
KHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisg
IGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGFk
ZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgdHJ1ZQorICBl
bmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxpc3QKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxpc3QpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbGlzdCA9IGxpc3QKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBsaXN0
CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIFNlcXVlbmNlLm5ldyhj
b2RlT3JpZ2luLCBAbGlzdC5tYXAoJnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
bGlzdC5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIlxuIikKKyAgZW5kCitlbmQKKworY2xhc3Mg
VHJ1ZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVu
ZAorICAKKyAgQEBpbnN0YW5jZSA9IFRydWUubmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQor
ICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICB0cnVlCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAidHJ1ZSIKKyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UgPCBO
b0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisg
IEBAaW5zdGFuY2UgPSBGYWxzZS5uZXcKKyAgCisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBp
bnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2YWx1ZQorICAgIGZhbHNlCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICAiZmFsc2UiCisgIGVuZAorZW5kCisKK2NsYXNzIFRydWVDbGFzcworICBk
ZWYgYXNOb2RlCisgICAgVHJ1ZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZUNs
YXNzCisgIGRlZiBhc05vZGUKKyAgICBGYWxzZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFz
cyBTZXR0aW5nIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBu
YW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5m
b3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAg
ICAgQEBtYXBwaW5nW25hbWVdID0gU2V0dGluZy5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBl
bmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUK
KyAgZW5kCitlbmQKKworY2xhc3MgQW5kIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJp
Z2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0Cisg
IGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAK
KyAgZGVmIG1hcENoaWxkcmVuCisgICAgQW5kLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQp
LCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1
bXB9IGFuZCAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgT3IgPCBOb2RlCisg
IGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0
CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxl
ZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBPci5uZXcoY29k
ZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBvciAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQK
KworY2xhc3MgTm90IDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNo
aWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdo
dF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBOb3QubmV3KGNvZGVPcmlnaW4s
ICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIihub3QgI3tjaGls
ZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIFNraXAgPCBOb0NoaWxkcmVuCisgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICJcdHNraXAiCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2Ug
PCBOb2RlCisgIGF0dHJfcmVhZGVyIDpwcmVkaWNhdGUsIDp0aGVuQ2FzZQorICBhdHRyX2FjY2Vz
c29yIDplbHNlQ2FzZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgcHJlZGljYXRl
LCB0aGVuQ2FzZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBwcmVkaWNhdGUgPSBwcmVk
aWNhdGUKKyAgICBAdGhlbkNhc2UgPSB0aGVuQ2FzZQorICAgIEBlbHNlQ2FzZSA9IFNraXAubmV3
KGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgaWYgQGVsc2VDYXNl
CisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNlLCBAZWxzZUNhc2VdCisgICAgZWxzZQorICAg
ICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZV0KKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgbWFw
Q2hpbGRyZW4KKyAgICBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHByZWRpY2F0
ZSksICh5aWVsZCBAdGhlbkNhc2UpLCAoeWllbGQgQGVsc2VDYXNlKSkKKyAgZW5kCisgIAorICBk
ZWYgZHVtcAorICAgICJpZiAje3ByZWRpY2F0ZS5kdW1wfVxuIiArIHRoZW5DYXNlLmR1bXAgKyAi
XG5lbHNlXG4iICsgZWxzZUNhc2UuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3Mg
TWFjcm8gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6dmFyaWFibGVzLCA6Ym9keQorICAK
KyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQHZhcmlhYmxlcyA9IHZh
cmlhYmxlcworICAgIEBib2R5ID0gYm9keQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IEB2YXJpYWJsZXMgKyBbQGJvZHldCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAg
TWFjcm8ubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAdmFyaWFibGVzLm1hcHt8dnwgeWllbGQgdn0s
ICh5aWVsZCBAYm9keSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAibWFjcm8gI3tuYW1l
fSgiICsgdmFyaWFibGVzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpXG4iICsg
Ym9keS5kdW1wICsgIlxuZW5kIgorICBlbmQKK2VuZAorCitjbGFzcyBNYWNyb0NhbGwgPCBOb2Rl
CisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6b3BlcmFuZHMKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5h
bWUgPSBuYW1lCisgICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAgICByYWlzZSB1bmxlc3MgQG9w
ZXJhbmRzCisgICAgQG9wZXJhbmRzLmVhY2h7fHZ8IHJhaXNlIHVubGVzcyB2fQorICBlbmQKKyAg
CisgIGRlZiBjaGlsZHJlbgorICAgIEBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbigmcHJvYykKKyAgICBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAb3BlcmFu
ZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdCN7bmFtZX0oIiAr
IG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpIgorICBlbmQKK2Vu
ZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5y
YgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tl
bmRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk2IEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhcm12NyIKK3JlcXVpcmUgImFzdCIKK3JlcXVp
cmUgIng4NiIKKworQkFDS0VORFMgPQorICBbCisgICAiWDg2IiwKKyAgICJBUk12NyIKKyAgXQor
CisjIEtlZXAgdGhlIHNldCBvZiB3b3JraW5nIGJhY2tlbmRzIHNlcGFyYXRlIGZyb20gdGhlIHNl
dCBvZiBiYWNrZW5kcyB0aGF0IG1pZ2h0IGJlCisjIHN1cHBvcnRlZC4gVGhpcyBpcyBncmVhdCBi
ZWNhdXNlIHRoZSBCQUNLRU5EUyBsaXN0IGlzIGFsbW9zdCBsaWtlIGEgcmVzZXJ2ZWQKKyMgd29y
ZHMgbGlzdCwgaW4gdGhhdCBpdCBjYXVzZXMgc2V0dGluZ3MgcmVzb2x1dGlvbiB0byB0cmVhdCB0
aG9zZSB3b3JkcyBzcGVjaWFsbHkuCisjIEhlbmNlIHRoaXMgbGV0cyB1cyBzZXQgYXNpZGUgdGhl
IG5hbWUgb2YgYSBiYWNrZW5kIHdlIG1pZ2h0IHdhbnQgdG8gc3VwcG9ydCBpbgorIyB0aGUgZnV0
dXJlIHdoaWxlIG5vdCBhY3R1YWxseSBzdXBwb3J0aW5nIHRoZSBiYWNrZW5kIHlldC4KK1dPUktJ
TkdfQkFDS0VORFMgPQorICBbCisgICAiWDg2IiwKKyAgICJBUk12NyIKKyAgXQorCitCQUNLRU5E
X1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoJyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylc
XFonKQorCitjbGFzcyBOb2RlCisgIGRlZiBsb3dlcihuYW1lKQorICAgIHNlbmQoImxvd2VyIiAr
IG5hbWUpCisgIGVuZAorZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBsb3dlcigpIGZvciB0aG9zZSBu
b2RlcyB0aGF0IGFyZSBiYWNrZW5kLWFnbm9zdGljCisKK2NsYXNzIExhYmVsCisgIGRlZiBsb3dl
cihuYW1lKQorICAgICRhc20ucHV0c0xhYmVsKHNlbGYubmFtZVsxLi4tMV0pCisgIGVuZAorZW5k
CisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzTG9j
YWxMYWJlbCAiX29mZmxpbmVhc21fI3tzZWxmLm5hbWVbMS4uLTFdfSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAgZGVmIGFzbUxhYmVsCisgICAgQXNzZW1ibGVyLmxhYmVs
UmVmZXJlbmNlKG5hbWVbMS4uLTFdKQorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVm
ZXJlbmNlCisgIGRlZiBhc21MYWJlbAorICAgIEFzc2VtYmxlci5sb2NhbExhYmVsUmVmZXJlbmNl
KCJfb2ZmbGluZWFzbV8iK25hbWVbMS4uLTFdKQorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwCisg
IGRlZiBsb3dlcihuYW1lKQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93
ZXIobmFtZSkKKyAgICBpZiByZXNwb25kX3RvPyAibG93ZXIje25hbWV9IgorICAgICAgc2VuZCgi
bG93ZXIje25hbWV9IikKKyAgICBlbHNlCisgICAgICBAbGlzdC5lYWNoIHsKKyAgICAgICAgfCBu
b2RlIHwKKyAgICAgICAgbm9kZS5sb3dlcihuYW1lKQorICAgICAgfQorICAgIGVuZAorICBlbmQK
K2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9v
ZmZzZXRfZXh0cmFjdG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9y
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkzIEBACisjIS91c3IvYmluL2VudiBydWJ5CisK
KyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFt
ZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIK
K3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZWxmX2hhc2gi
CityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworaW5wdXRGbG5tID0g
QVJHVi5zaGlmdAorb3V0cHV0RmxubSA9IEFSR1Yuc2hpZnQKKworJHN0ZGVyci5wdXRzICJvZmZs
aW5lYXNtOiBQYXJzaW5nICN7aW5wdXRGbG5tfSBhbmQgY3JlYXRpbmcgb2Zmc2V0IGV4dHJhY3Rv
ciAje291dHB1dEZsbm19LiIKKworZGVmIGVtaXRNYWdpY051bWJlcgorICBPRkZTRVRfTUFHSUNf
TlVNQkVSUy5lYWNoIHsKKyAgICB8IG51bWJlciB8CisgICAgJG91dHB1dC5wdXRzICIje251bWJl
cn0sIgorICB9CitlbmQKKworaW5wdXREYXRhID0gSU86OnJlYWQoaW5wdXRGbG5tKQoraW5wdXRI
YXNoID0gIi8vIG9mZmxpbmVhc20gaW5wdXQgaGFzaDogI3tEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0
KGlucHV0RGF0YSl9ICN7c2VsZkhhc2h9IgorCitpZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0Rmxu
bQorICBGaWxlLm9wZW4ob3V0cHV0RmxubSwgInIiKSB7CisgICAgfCBpbnAgfAorICAgIGZpcnN0
TGluZSA9IGlucC5nZXRzCisgICAgaWYgZmlyc3RMaW5lIGFuZCBmaXJzdExpbmUuY2hvbXAgPT0g
aW5wdXRIYXNoCisgICAgICAkc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IE5vdGhpbmcgY2hhbmdl
ZC4iCisgICAgICBleGl0IDAKKyAgICBlbmQKKyAgfQorZW5kCisKK29yaWdpbmFsQVNUID0gcGFy
c2UobGV4KGlucHV0RGF0YSkpCisKK0ZpbGUub3BlbihvdXRwdXRGbG5tLCAidyIpIHsKKyAgfCBv
dXRwIHwKKyAgJG91dHB1dCA9IG91dHAKKyAgb3V0cC5wdXRzIGlucHV0SGFzaAorICBlbWl0Q29k
ZUluQWxsQ29uZmlndXJhdGlvbnMob3JpZ2luYWxBU1QpIHsKKyAgICB8IHNldHRpbmdzLCBhc3Qs
IGJhY2tlbmQsIGluZGV4IHwKKyAgICBvZmZzZXRzTGlzdCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zm
c2V0KS51bmlxLnNvcnQKKyAgICBzaXplc0xpc3QgPSBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5z
b3J0CisgICAgCisgICAgbGVuZ3RoID0gKE9GRlNFVF9NQUdJQ19OVU1CRVJTLnNpemUgKyAxKSAq
ICgxICsgb2Zmc2V0c0xpc3Quc2l6ZSArIHNpemVzTGlzdC5zaXplKQorICAgIAorICAgIG91dHAu
cHV0cyAic3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7
IgorICAgIGVtaXRNYWdpY051bWJlcgorICAgIG91dHAucHV0cyAiI3tpbmRleH0sIgorICAgIG9m
ZnNldHNMaXN0LmVhY2ggeworICAgICAgfCBvZmZzZXQgfAorICAgICAgZW1pdE1hZ2ljTnVtYmVy
CisgICAgICBvdXRwLnB1dHMgIk9GRkxJTkVfQVNNX09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0s
ICN7b2Zmc2V0LmZpZWxkfSksIgorICAgIH0KKyAgICBzaXplc0xpc3QuZWFjaCB7CisgICAgICB8
IG9mZnNldCB8CisgICAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICAgIG91dHAucHV0cyAic2l6ZW9m
KCN7b2Zmc2V0LnN0cnVjdH0pLCIKKyAgICB9CisgICAgb3V0cC5wdXRzICJ9OyIKKyAgfQorfQor
Ciskc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IG9mZnNldCBleHRyYWN0b3IgI3tvdXRwdXRGbG5t
fSBzdWNjZXNzZnVsbHkgZ2VuZXJhdGVkLiIKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyMTcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyMgSW50ZXJlc3RpbmcgaW52YXJpYW50LCB3aGljaCB3ZSB0YWtlIGFkdmFudGFnZSBvZjogYnJh
bmNoaW5nIGluc3RydWN0aW9ucworIyBhbHdheXMgYmVnaW4gd2l0aCAiYiIsIGFuZCBubyBub24t
YnJhbmNoaW5nIGluc3RydWN0aW9ucyBiZWdpbiB3aXRoICJiIi4KKyMgVGVybWluYWwgaW5zdHJ1
Y3Rpb25zIGFyZSAiam1wIiBhbmQgInJldCIuCisKK01BQ1JPX0lOU1RSVUNUSU9OUyA9CisgIFsK
KyAgICJhZGRpIiwKKyAgICJhbmRpIiwKKyAgICJsc2hpZnRpIiwKKyAgICJtdWxpIiwKKyAgICJu
ZWdpIiwKKyAgICJub3RpIiwKKyAgICJvcmkiLAorICAgInJzaGlmdGkiLAorICAgInVyc2hpZnRp
IiwKKyAgICJzdWJpIiwKKyAgICJ4b3JpIiwKKyAgICJsb2FkaSIsCisgICAibG9hZGIiLAorICAg
ImxvYWRicyIsCisgICAibG9hZGgiLAorICAgImxvYWRocyIsCisgICAic3RvcmVpIiwKKyAgICJz
dG9yZWIiLAorICAgImxvYWRkIiwKKyAgICJtb3ZlZCIsCisgICAic3RvcmVkIiwKKyAgICJhZGRk
IiwKKyAgICJkaXZkIiwKKyAgICJzdWJkIiwKKyAgICJtdWxkIiwKKyAgICJzcXJ0ZCIsCisgICAi
Y2kyZCIsCisgICAiZmlpMmQiLCAjIHVzYWdlOiBmaWkyZCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlm
aWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+LCA8ZnByPgorICAg
ImZkMmlpIiwgIyB1c2FnZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2Fu
dCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4KKyAgICJiZGVxIiwKKyAg
ICJiZG5lcSIsCisgICAiYmRndCIsCisgICAiYmRndGVxIiwKKyAgICJiZGx0IiwKKyAgICJiZGx0
ZXEiLAorICAgImJkZXF1biIsCisgICAiYmRuZXF1biIsCisgICAiYmRndHVuIiwKKyAgICJiZGd0
ZXF1biIsCisgICAiYmRsdHVuIiwKKyAgICJiZGx0ZXF1biIsCisgICAiYnRkMmkiLAorICAgInRk
MmkiLAorICAgImJjZDJpIiwKKyAgICJtb3ZkeiIsCisgICAicG9wIiwKKyAgICJwdXNoIiwKKyAg
ICJtb3ZlIiwKKyAgICJzeGkycCIsCisgICAienhpMnAiLAorICAgIm5vcCIsCisgICAiYmllcSIs
CisgICAiYmluZXEiLAorICAgImJpYSIsCisgICAiYmlhZXEiLAorICAgImJpYiIsCisgICAiYmli
ZXEiLAorICAgImJpZ3QiLAorICAgImJpZ3RlcSIsCisgICAiYmlsdCIsCisgICAiYmlsdGVxIiwK
KyAgICJiYmVxIiwKKyAgICJiYm5lcSIsCisgICAiYmJhIiwKKyAgICJiYmFlcSIsCisgICAiYmJi
IiwKKyAgICJiYmJlcSIsCisgICAiYmJndCIsCisgICAiYmJndGVxIiwKKyAgICJiYmx0IiwKKyAg
ICJiYmx0ZXEiLAorICAgImJ0aW8iLAorICAgImJ0aXMiLAorICAgImJ0aXoiLAorICAgImJ0aW56
IiwKKyAgICJidGJvIiwKKyAgICJidGJzIiwKKyAgICJidGJ6IiwKKyAgICJidGJueiIsCisgICAi
am1wIiwKKyAgICJiYWRkaW8iLAorICAgImJhZGRpcyIsCisgICAiYmFkZGl6IiwKKyAgICJiYWRk
aW56IiwKKyAgICJic3ViaW8iLAorICAgImJzdWJpcyIsCisgICAiYnN1Yml6IiwKKyAgICJic3Vi
aW56IiwKKyAgICJibXVsaW8iLAorICAgImJtdWxpcyIsCisgICAiYm11bGl6IiwKKyAgICJibXVs
aW56IiwKKyAgICJib3JpbyIsCisgICAiYm9yaXMiLAorICAgImJvcml6IiwKKyAgICJib3Jpbnoi
LAorICAgImJyZWFrIiwKKyAgICJjYWxsIiwKKyAgICJyZXQiLAorICAgImNpZXEiLAorICAgImNp
bmVxIiwKKyAgICJjaWEiLAorICAgImNpYWVxIiwKKyAgICJjaWIiLAorICAgImNpYmVxIiwKKyAg
ICJjaWd0IiwKKyAgICJjaWd0ZXEiLAorICAgImNpbHQiLAorICAgImNpbHRlcSIsCisgICAidGlv
IiwKKyAgICJ0aXMiLAorICAgInRpeiIsCisgICAidGlueiIsCisgICAidGJvIiwKKyAgICJ0YnMi
LAorICAgInRieiIsCisgICAidGJueiIsCisgICAicGVlayIsCisgICAicG9rZSIsCisgICAiYnBl
cSIsCisgICAiYnBuZXEiLAorICAgImJwYSIsCisgICAiYnBhZXEiLAorICAgImJwYiIsCisgICAi
YnBiZXEiLAorICAgImJwZ3QiLAorICAgImJwZ3RlcSIsCisgICAiYnBsdCIsCisgICAiYnBsdGVx
IiwKKyAgICJhZGRwIiwKKyAgICJhbmRwIiwKKyAgICJvcnAiLAorICAgInN1YnAiLAorICAgInhv
cnAiLAorICAgImxvYWRwIiwKKyAgICJjcGVxIiwKKyAgICJjcG5lcSIsCisgICAiY3BhIiwKKyAg
ICJjcGFlcSIsCisgICAiY3BiIiwKKyAgICJjcGJlcSIsCisgICAiY3BndCIsCisgICAiY3BndGVx
IiwKKyAgICJjcGx0IiwKKyAgICJjcGx0ZXEiLAorICAgInN0b3JlcCIsCisgICAiYnRwbyIsCisg
ICAiYnRwcyIsCisgICAiYnRweiIsCisgICAiYnRwbnoiLAorICAgImJhZGRwbyIsCisgICAiYmFk
ZHBzIiwKKyAgICJiYWRkcHoiLAorICAgImJhZGRwbnoiLAorICAgImJvIiwKKyAgICJicyIsCisg
ICAiYnoiLAorICAgImJueiIsCisgICAibGVhaSIsCisgICAibGVhcCIsCisgIF0KKworWDg2X0lO
U1RSVUNUSU9OUyA9CisgIFsKKyAgICJjZHFpIiwKKyAgICJpZGl2aSIKKyAgXQorCitBUk12N19J
TlNUUlVDVElPTlMgPQorICBbCisgICAic211bGxpIiwKKyAgICJhZGRpcyIsCisgICAic3ViaXMi
LAorICAgIm9yaXMiCisgIF0KKworSU5TVFJVQ1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05TICsg
WDg2X0lOU1RSVUNUSU9OUyArIEFSTXY3X0lOU1RSVUNUSU9OUworCitJTlNUUlVDVElPTl9QQVRU
RVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgSU5TVFJVQ1RJT05TLmpvaW4oJyl8KCcpICsgJykp
XFxaJykKKworZGVmIGlzQnJhbmNoKGluc3RydWN0aW9uKQorICBpbnN0cnVjdGlvbiA9fiAvXmIv
CitlbmQKKworZGVmIGhhc0ZhbGxUaHJvdWdoKGluc3RydWN0aW9uKQorICBpbnN0cnVjdGlvbiAh
PSAicmV0IiBhbmQgaW5zdHJ1Y3Rpb24gIT0gImptcCIKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFj
dG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitNQUdJ
Q19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE1MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
cmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMiCisKK09G
RlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworIworIyBv
ZmZzZXRzTGlzdChhc3QpCisjIHNpemVzTGlzdChhc3QpCisjCisjIFJldHVybnMgYSBsaXN0IG9m
IG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhlIEFTVC4KKyMKKworZGVmIG9mZnNldHNMaXN0
KGFzdCkKKyAgYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorZW5kCisKK2RlZiBz
aXplc0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CitlbmQKKworIwor
IyBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGFzdCwgZmlsZSkgLT4KKyMgICAgIFtvZmZz
ZXRzLCBpbmRleF0KKyMKKyMgUGFyc2VzIHRoZSBvZmZzZXRzIGZyb20gYSBmaWxlIGFuZCByZXR1
cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCB0aGUKKyMgaW5kZXggb2YgdGhlIGNvbmZpZ3VyYXRp
b24gdGhhdCBpcyB2YWxpZCBpbiB0aGlzIGJ1aWxkIHRhcmdldC4KKyMKKworZGVmIG9mZnNldHNB
bmRDb25maWd1cmF0aW9uSW5kZXgoZmlsZSkKKyAgaW5kZXggPSBuaWwKKyAgb2Zmc2V0cyA9IFtd
CisgIGVuZGlhbm5lc3NNYXJrZXJCeXRlcyA9IG5pbAorICAKKyAgZGVmIHJlYWRJbnQoZW5kaWFu
bmVzcywgaW5wKQorICAgIGJ5dGVzID0gW10KKyAgICA0LnRpbWVzIHsKKyAgICAgIGJ5dGVzIDw8
IGlucC5nZXRieXRlCisgICAgfQorICAgIAorICAgIGlmIGVuZGlhbm5lc3MgPT0gOmxpdHRsZQor
ICAgICAgIyBMaXR0bGUgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0gPDwgMCB8CisgICAgICAgYnl0
ZXNbMV0gPDwgOCB8CisgICAgICAgYnl0ZXNbMl0gPDwgMTYgfAorICAgICAgIGJ5dGVzWzNdIDw8
IDI0KQorICAgIGVsc2UKKyAgICAgICMgQmlnIGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDI0
IHwKKyAgICAgICBieXRlc1sxXSA8PCAxNiB8CisgICAgICAgYnl0ZXNbMl0gPDwgOCB8CisgICAg
ICAgYnl0ZXNbM10gPDwgMCkKKyAgICBlbmQKKyAgZW5kCisgIAorICBbOmxpdHRsZSwgOmJpZ10u
ZWFjaCB7CisgICAgfCBlbmRpYW5uZXNzIHwKKyAgICBtYWdpY0J5dGVzID0gW10KKyAgICBNQUdJ
Q19OVU1CRVJTLmVhY2ggeworICAgICAgfCBudW1iZXIgfAorICAgICAgY3VycmVudEJ5dGVzID0g
W10KKyAgICAgIDQudGltZXMgeworICAgICAgICBjdXJyZW50Qnl0ZXMgPDwgKG51bWJlciAmIDB4
ZmYpCisgICAgICAgIG51bWJlciA+Pj0gOAorICAgICAgfQorICAgICAgaWYgZW5kaWFubmVzcyA9
PSA6YmlnCisgICAgICAgIGN1cnJlbnRCeXRlcy5yZXZlcnNlIQorICAgICAgZW5kCisgICAgICBt
YWdpY0J5dGVzICs9IGN1cnJlbnRCeXRlcworICAgIH0KKyAgICAKKyAgICBGaWxlLm9wZW4oZmls
ZSwgInIiKSB7CisgICAgICB8IGlucCB8CisgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAg
bG9vcCB7CisgICAgICAgIGJ5dGUgPSBpbnAuZ2V0Ynl0ZQorICAgICAgICBicmVhayB1bmxlc3Mg
Ynl0ZQorICAgICAgICBpZiBieXRlID09IG1hZ2ljQnl0ZXNbd2hlcmVJbk1hcmtlcl0KKyAgICAg
ICAgICB3aGVyZUluTWFya2VyICs9IDEKKyAgICAgICAgICBpZiB3aGVyZUluTWFya2VyID09IG1h
Z2ljQnl0ZXMuc2l6ZQorICAgICAgICAgICAgIyBXZSBoYXZlIGEgbWF0Y2ghIElmIHdlIGhhdmUg
bm90IHlldCByZWFkIHRoZSBlbmRpYW5uZXNzIG1hcmtlciBhbmQgaW5kZXgsCisgICAgICAgICAg
ICAjIHRoZW4gcmVhZCB0aG9zZSBub3c7IG90aGVyd2lzZSByZWFkIGFuIG9mZnNldC4KKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgaWYgbm90IGluZGV4CisgICAgICAgICAgICAgIGluZGV4ID0g
cmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
IG9mZnNldHMgPDwgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBlbmQKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgICBlbmQK
KyAgICAgICAgZWxzZQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICAgIGVuZAor
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICBicmVhayBpZiBpbmRleAorICB9CisgIAorICByYWlz
ZSB1bmxlc3MgaW5kZXgKKyAgCisgIFtvZmZzZXRzLCBpbmRleF0KK2VuZAorCisjCisjIGJ1aWxk
T2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAtPiBbb2Zmc2V0cywgc2l6ZXNdCisjCisjIEJ1
aWxkcyBhIG1hcHBpbmcgYmV0d2VlbiBTdHJ1Y3RPZmZzZXQgbm9kZXMgYW5kIHRoZWlyIHZhbHVl
cy4KKyMKKworZGVmIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KQorICBvZmZzZXRz
TWFwID0ge30KKyAgc2l6ZXNNYXAgPSB7fQorICBhc3RPZmZzZXRzTGlzdCA9IG9mZnNldHNMaXN0
KGFzdCkKKyAgYXN0U2l6ZXNMaXN0ID0gc2l6ZXNMaXN0KGFzdCkKKyAgcmFpc2UgdW5sZXNzIGFz
dE9mZnNldHNMaXN0LnNpemUgKyBhc3RTaXplc0xpc3Quc2l6ZSA9PSBvZmZzZXRzTGlzdC5zaXpl
CisgIG9mZnNldHNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHN0cnVjdE9mZnNl
dCwgaW5kZXggfAorICAgIG9mZnNldHNNYXBbc3RydWN0T2Zmc2V0XSA9IG9mZnNldHNMaXN0LnNo
aWZ0CisgIH0KKyAgc2l6ZXNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHNpemVv
ZiwgaW5kZXggfAorICAgIHNpemVzTWFwW3NpemVvZl0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9
CisgIFtvZmZzZXRzTWFwLCBzaXplc01hcF0KK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9vcHQucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vb3B0LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vb3B0LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzNCBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorCisjCisj
ICJPcHRpbWl6YXRpb24iIHBhc3Nlcy4gVGhlc2UgYXJlIHVzZWQgdG8gbG93ZXIgdGhlIHJlcHJl
c2VudGF0aW9uIGZvcgorIyBiYWNrZW5kcyB0aGF0IGNhbm5vdCBoYW5kbGUgc29tZSBvZiBvdXIg
aGlnaGVyLWxldmVsIGluc3RydWN0aW9ucy4KKyMKKworIworIyBBIHRlbXBvcmFyeSAtIGEgdmFy
aWFibGUgdGhhdCB3aWxsIGJlIGFsbG9jYXRlZCB0byBhIHJlZ2lzdGVyIGFmdGVyIHdlJ3JlCisj
IGRvbmUuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlcGxhY2VUZW1wb3Jhcmllc1dpdGhSZWdp
c3RlcnMoa2luZCkKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IG5vZGUgfAorICAgICAgbm9k
ZS5yZXBsYWNlVGVtcG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgfQorICBlbmQKK2Vu
ZAorCitjbGFzcyBUbXAgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpmaXJzdE1lbnRpb24s
IDpsYXN0TWVudGlvbgorICBhdHRyX3JlYWRlciA6a2luZAorICBhdHRyX2FjY2Vzc29yIDpyZWdp
c3RlcgorCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGtpbmQpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAa2luZCA9IGtpbmQKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIk
dG1wI3tvYmplY3RfaWR9IgorICBlbmQKKyAgCisgIGRlZiBtZW50aW9uIShwb3NpdGlvbikKKyAg
ICBpZiBub3QgQGZpcnN0TWVudGlvbiBvciBwb3NpdGlvbiA8IEBmaXJzdE1lbnRpb24KKyAgICAg
IEBmaXJzdE1lbnRpb24gPSBwb3NpdGlvbgorICAgIGVuZAorICAgIGlmIG5vdCBAbGFzdE1lbnRp
b24gb3IgcG9zaXRpb24gPiBAbGFzdE1lbnRpb24KKyAgICAgIEBsYXN0TWVudGlvbiA9IHBvc2l0
aW9uCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHJlcGxhY2VUZW1wb3Jhcmllc1dpdGhSZWdp
c3RlcnMoa2luZCkKKyAgICBpZiBAa2luZCA9PSBraW5kCisgICAgICByYWlzZSAiRGlkIG5vdCBh
bGxvY2F0ZSByZWdpc3RlciB0byB0ZW1wb3JhcnkgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5s
ZXNzIEByZWdpc3RlcgorICAgICAgQHJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgc2VsZgorICAg
IGVuZAorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAg
ZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICBm
YWxzZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICB0cnVlCisgIGVuZAorZW5kCisK
KyMgQXNzaWduIHJlZ2lzdGVycyB0byB0ZW1wb3JhcmllcywgYnkgZmluZGluZyB3aGljaCB0ZW1w
b3JhcmllcyBpbnRlcmZlcmUKKyMgd2l0aCBlYWNoIG90aGVyLiBOb3RlIHRoYXQgdGhpcyByZWxp
ZXMgb24gdGVtcG9yYXJ5IGxpdmUgcmFuZ2VzIG5vdCBjcm9zc2luZworIyBiYXNpYyBibG9jayBi
b3VuZGFyaWVzLgorCitkZWYgYXNzaWduUmVnaXN0ZXJzVG9UZW1wb3JhcmllcyhsaXN0LCBraW5k
LCByZWdpc3RlcnMpCisgIGxpc3QuZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IG5vZGUsIGluZGV4
IHwKKyAgICBub2RlLmZpbHRlcihUbXApLnVuaXEuZWFjaCB7CisgICAgICB8IHRtcCB8CisgICAg
ICBpZiB0bXAua2luZCA9PSBraW5kCisgICAgICAgIHRtcC5tZW50aW9uISBpbmRleAorICAgICAg
ZW5kCisgICAgfQorICB9CisgIAorICBmcmVlUmVnaXN0ZXJzID0gcmVnaXN0ZXJzLmR1cAorICBs
aXN0LmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBub2RlLCBpbmRleCB8CisgICAgdG1wTGlzdCA9
IG5vZGUuZmlsdGVyKFRtcCkudW5pcQorICAgIHRtcExpc3QuZWFjaCB7CisgICAgICB8IHRtcCB8
CisgICAgICBpZiB0bXAua2luZCA9PSBraW5kIGFuZCB0bXAuZmlyc3RNZW50aW9uID09IGluZGV4
CisgICAgICAgIHJhaXNlICJDb3VsZCBub3QgYWxsb2NhdGUgcmVnaXN0ZXIgdG8gdGVtcG9yYXJ5
IGF0ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIgaWYgZnJlZVJlZ2lzdGVycy5lbXB0eT8KKyAg
ICAgICAgdG1wLnJlZ2lzdGVyID0gZnJlZVJlZ2lzdGVycy5wb3AKKyAgICAgIGVuZAorICAgIH0K
KyAgICB0bXBMaXN0LmVhY2ggeworICAgICAgfCB0bXAgfAorICAgICAgaWYgdG1wLmtpbmQgPT0g
a2luZCBhbmQgdG1wLmxhc3RNZW50aW9uID09IGluZGV4CisgICAgICAgIGZyZWVSZWdpc3RlcnMu
cHVzaCB0bXAucmVnaXN0ZXIKKyAgICAgICAgcmFpc2UgIlJlZ2lzdGVyIGFsbG9jYXRpb24gaW5j
b25zaXN0ZW5jeSBhdCAje25vZGUuY29kZU9yaWdpblN0cmluZ30iIGlmIGZyZWVSZWdpc3RlcnMu
c2l6ZSA+IHJlZ2lzdGVycy5zaXplCisgICAgICBlbmQKKyAgICB9CisgIH0KKyAgCisgIGxpc3Qu
bWFwIHsKKyAgICB8IG5vZGUgfAorICAgIG5vZGUucmVwbGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lz
dGVycyhraW5kKQorICB9CitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vcGFyc2VyLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1ODUgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUg
Imluc3RydWN0aW9ucyIKK3JlcXVpcmUgInJlZ2lzdGVycyIKKworY2xhc3MgVG9rZW4KKyAgYXR0
cl9yZWFkZXIgOmNvZGVPcmlnaW4sIDpzdHJpbmcKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIHN0cmluZykKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgICBAc3RyaW5n
ID0gc3RyaW5nCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIGlmIG90aGVyLmlzX2E/
IFRva2VuCisgICAgICBAc3RyaW5nID09IG90aGVyLnN0cmluZworICAgIGVsc2UKKyAgICAgIEBz
dHJpbmcgPT0gb3RoZXIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgPX4ob3RoZXIpCisgICAg
QHN0cmluZyA9fiBvdGhlcgorICBlbmQKKyAgCisgIGRlZiB0b19zCisgICAgIiN7QHN0cmluZy5p
bnNwZWN0fSBhdCBsaW5lICN7Y29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJy
b3IoKmNvbW1lbnQpCisgICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgIHJhaXNlICJQYXJzZSBl
cnJvcjogI3t0b19zfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9f
c306ICN7Y29tbWVudFswXX0iCisgICAgZW5kCisgIGVuZAorZW5kCisKKyMKKyMgVGhlIGxleGVy
LiBUYWtlcyBhIHN0cmluZyBhbmQgcmV0dXJucyBhbiBhcnJheSBvZiB0b2tlbnMuCisjCisKK2Rl
ZiBsZXgoc3RyKQorICByZXN1bHQgPSBbXQorICBsaW5lTnVtYmVyID0gMQorICB3aGlsZSBub3Qg
c3RyLmVtcHR5PworICAgIGNhc2Ugc3RyCisgICAgd2hlbiAvXEFcIyhbXlxuXSopLworICAgICAg
IyBjb21tZW50LCBpZ25vcmUKKyAgICB3aGVuIC9cQVxuLworICAgICAgcmVzdWx0IDw8IFRva2Vu
Lm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICAgIGxpbmVOdW1iZXIgKz0gMQorICAgIHdoZW4gL1xB
W2EtekEtWl0oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVO
dW1iZXIsICQmKQorICAgIHdoZW4gL1xBXC4oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQg
PDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBXyhbYS16QS1aMC05X10q
KS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAv
XEEoWyBcdF0rKS8KKyAgICAgICMgd2hpdGVzcGFjZSwgaWdub3JlCisgICAgd2hlbiAvXEEweChb
MC05YS1mQS1GXSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5o
ZXgudG9fcykKKyAgICB3aGVuIC9cQTAoWzAtN10rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5u
ZXcobGluZU51bWJlciwgJCYub2N0LnRvX3MpCisgICAgd2hlbiAvXEEoWzAtOV0rKS8KKyAgICAg
IHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEE6Oi8KKyAg
ICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFbOixc
KFwpXFtcXT1cK1wtKl0vCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQm
KQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJMZXhlciBlcnJvciBhdCBsaW5lIG51bWJlciAje2xp
bmVOdW1iZXJ9LCB1bmV4cGVjdGVkIHNlcXVlbmNlICN7c3RyWzAuLjIwXS5pbnNwZWN0fSIKKyAg
ICBlbmQKKyAgICBzdHIgPSAkfi5wb3N0X21hdGNoCisgIGVuZAorICByZXN1bHQKK2VuZAorCisj
CisjIFRva2VuIGlkZW50aWZpY2F0aW9uLgorIworCitkZWYgaXNSZWdpc3Rlcih0b2tlbikKKyAg
dG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTgorZW5kCisKK2RlZiBpc0luc3RydWN0aW9uKHRva2Vu
KQorICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzS2V5d29yZCh0
b2tlbikKKyAgdG9rZW4gPX4gL1xBKCh0cnVlKXwoZmFsc2UpfChpZil8KHRoZW4pfChlbHNlKXwo
ZWxzaWYpfChlbmQpfChhbmQpfChvcil8KG5vdCl8KG1hY3JvKXwoY29uc3QpfChzaXplb2YpfChl
cnJvcikpXFovIG9yCisgICAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTiBvcgorICAgIHRva2Vu
ID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJZGVudGlmaWVyKHRva2VuKQor
ICB0b2tlbiA9fiAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKVxaLyBhbmQgbm90IGlzS2V5d29y
ZCh0b2tlbikKK2VuZAorCitkZWYgaXNMYWJlbCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXyhbYS16
QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc0xvY2FsTGFiZWwodG9rZW4pCisgIHRva2VuID1+
IC9cQVwuKFthLXpBLVowLTlfXSopXFovCitlbmQKKworZGVmIGlzVmFyaWFibGUodG9rZW4pCisg
IGlzSWRlbnRpZmllcih0b2tlbikgb3IgaXNSZWdpc3Rlcih0b2tlbikKK2VuZAorCitkZWYgaXNJ
bnRlZ2VyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbMC05XS8KK2VuZAorCisjCisjIFRoZSBwYXJz
ZXIuIFRha2VzIGFuIGFycmF5IG9mIHRva2VucyBhbmQgcmV0dXJucyBhbiBBU1QuIE1ldGhvZHMK
KyMgb3RoZXIgdGhhbiBwYXJzZSh0b2tlbnMpIGFyZSBub3QgZm9yIHB1YmxpYyBjb25zdW1wdGlv
bi4KKyMKKworY2xhc3MgUGFyc2VyCisgIGRlZiBpbml0aWFsaXplKHRva2VucykKKyAgICBAdG9r
ZW5zID0gdG9rZW5zCisgICAgQGlkeCA9IDAKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigq
Y29tbWVudCkKKyAgICBpZiBAdG9rZW5zW0BpZHhdCisgICAgICBAdG9rZW5zW0BpZHhdLnBhcnNl
RXJyb3IoKmNvbW1lbnQpCisgICAgZWxzZQorICAgICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAg
ICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlIgorICAgICAgZWxzZQorICAgICAg
ICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZpbGU6ICN7Y29tbWVudFswXX0iCisgICAg
ICBlbmQKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgY29uc3VtZShyZWdleHApCisgICAgaWYg
cmVnZXhwCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID1+IHJlZ2V4cAor
ICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEBpZHggPT0gQHRva2Vucy5sZW5ndGgK
KyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgZW5kCisgIAorICBkZWYgc2tpcE5ld0xpbmUKKyAg
ICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICBpZiBAdG9rZW5zW0BpZHhd
ID09ICJub3QiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHBhcnNlUHJlZGljYXRlQXRvbQorICAg
IGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBO
ZXdMaW5lCisgICAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgcGFyc2VFcnJvciB1
bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0
CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAidHJ1ZSIKKyAgICAgIHJlc3VsdCA9IFRydWUu
aW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vu
c1tAaWR4XSA9PSAiZmFsc2UiCisgICAgICByZXN1bHQgPSBGYWxzZS5pbnN0YW5jZQorICAgICAg
QGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tA
aWR4XQorICAgICAgcmVzdWx0ID0gU2V0dGluZy5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3Vs
dAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYg
cGFyc2VQcmVkaWNhdGVBbmQKKyAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICB3
aGlsZSBAdG9rZW5zW0BpZHhdID09ICJhbmQiCisgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAg
ICByaWdodCA9IHBhcnNlUHJlZGljYXRlQXRvbQorICAgICAgcmVzdWx0ID0gQW5kLm5ldyhjb2Rl
T3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisg
IGRlZiBwYXJzZVByZWRpY2F0ZQorICAgICMgc29tZSBleGFtcGxlcyBvZiBwcmVjZWRlbmNlOgor
ICAgICMgbm90IGEgYW5kIGIgLT4gKG5vdCBhKSBhbmQgYgorICAgICMgYSBhbmQgYiBvciBjIC0+
IChhIGFuZCBiKSBvciBjCisgICAgIyBhIG9yIGIgYW5kIGMgLT4gYSBvciAoYiBhbmQgYykKKyAg
ICAKKyAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAgIHdoaWxlIEB0b2tlbnNbQGlk
eF0gPT0gIm9yIgorICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgor
ICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVBy
ZWRpY2F0ZUFuZAorICAgICAgcmVzdWx0ID0gT3IubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmln
aHQpCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlVmFyaWFibGUK
KyAgICBpZiBpc1JlZ2lzdGVyKEB0b2tlbnNbQGlkeF0pCisgICAgICBpZiBAdG9rZW5zW0BpZHhd
ID1+IEZQUl9QQVRURVJOCisgICAgICAgIHJlc3VsdCA9IEZQUmVnaXN0ZXJJRC5mb3JOYW1lKEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBlbHNl
CisgICAgICAgIHJlc3VsdCA9IFJlZ2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgZW5kCisgICAgZWxzaWYgaXNJZGVu
dGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICByZXN1bHQgPSBWYXJpYWJsZS5mb3JOYW1lKEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgZWxzZQor
ICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICAgIEBpZHggKz0gMQorICAgIHJlc3VsdAorICBl
bmQKKyAgCisgIGRlZiBwYXJzZUFkZHJlc3Mob2Zmc2V0KQorICAgIHBhcnNlRXJyb3IgdW5sZXNz
IEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbgorICAgIAorICAgICMgVGhyZWUgcG9zc2liaWxpdGllczoKKyAgICAjIFtdICAgICAg
IC0+IEFic29sdXRlQWRkcmVzcworICAgICMgW2FdICAgICAgLT4gQWRkcmVzcworICAgICMgW2Es
Yl0gICAgLT4gQmFzZUluZGV4IHdpdGggc2NhbGUgPSAxCisgICAgIyBbYSxiLGNdICAtPiBCYXNl
SW5kZXgKKyAgICAKKyAgICBAaWR4ICs9IDEKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgor
ICAgICAgQGlkeCArPSAxCisgICAgICByZXR1cm4gQWJzb2x1dGVBZGRyZXNzLm5ldyhjb2RlT3Jp
Z2luLCBvZmZzZXQpCisgICAgZW5kCisgICAgYSA9IHBhcnNlVmFyaWFibGUKKyAgICBpZiBAdG9r
ZW5zW0BpZHhdID09ICJdIgorICAgICAgcmVzdWx0ID0gQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwg
YSwgb2Zmc2V0KQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlk
eF0gPT0gIiwiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIGIgPSBwYXJzZVZhcmlhYmxlCisgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3
KGNvZGVPcmlnaW4sIGEsIGIsIDEsIG9mZnNldCkKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgIHBhcnNlRXJyb3IgdW5sZXNzIFsiMSIsICIyIiwgIjQiLCAiOCJdLm1lbWJlcj8gQHRva2Vu
c1tAaWR4XS5zdHJpbmcKKyAgICAgICAgYyA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kKKyAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0g
PT0gIl0iCisgICAgICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwg
Yywgb2Zmc2V0KQorICAgICAgZW5kCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0
CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQ29sb25Db2xvbgorICAgIHNraXBOZXdMaW5lCisgICAg
Y29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgbmFtZXMgPSBbQHRva2Vuc1tAaWR4
XS5zdHJpbmddCisgICAgQGlkeCArPSAxCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiOjoi
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBA
dG9rZW5zW0BpZHhdCisgICAgICBuYW1lcyA8PCBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAg
QGlkeCArPSAxCisgICAgZW5kCisgICAgcmFpc2UgaWYgbmFtZXMuZW1wdHk/CisgICAgW2NvZGVP
cmlnaW4sIG5hbWVzXQorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAg
c2tpcE5ld0xpbmUKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICItIgorICAgICAgQGlkeCArPSAx
CisgICAgICBOZWdJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHBh
cnNlRXhwcmVzc2lvbkF0b20pCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAg
IEBpZHggKz0gMQorICAgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uCisgICAgICBwYXJzZUVy
cm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgQGlkeCArPSAxCisgICAgICBy
ZXN1bHQKKyAgICBlbHNpZiBpc0ludGVnZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0g
SW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3Ry
aW5nLnRvX2kpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSWRl
bnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29s
b25Db2xvbgorICAgICAgaWYgbmFtZXMuc2l6ZSA+IDEKKyAgICAgICAgU3RydWN0T2Zmc2V0LmZv
ckZpZWxkKGNvZGVPcmlnaW4sIG5hbWVzWzAuLi0yXS5qb2luKCc6OicpLCBuYW1lc1stMV0pCisg
ICAgICBlbHNlCisgICAgICAgIFZhcmlhYmxlLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXNbMF0p
CisgICAgICBlbmQKKyAgICBlbHNpZiBpc1JlZ2lzdGVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHBh
cnNlVmFyaWFibGUKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJzaXplb2YiCisgICAgICBA
aWR4ICs9IDEKKyAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAg
ICBTaXplb2YuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lcy5qb2luKCc6OicpKQorICAgIGVsc2UK
KyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNz
aW9uTXVsCisgICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25BdG9t
CisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gIioiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBNdWxJbW1lZGlhdGVz
Lm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lv
bkF0b20pCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAg
ICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgY291bGRCZUV4cHJlc3Npb24KKyAgICBAdG9rZW5z
W0BpZHhdID09ICItIiBvciBAdG9rZW5zW0BpZHhdID09ICJzaXplb2YiIG9yIGlzSW50ZWdlcihA
dG9rZW5zW0BpZHhdKSBvciBpc1ZhcmlhYmxlKEB0b2tlbnNbQGlkeF0pIG9yIEB0b2tlbnNbQGlk
eF0gPT0gIigiCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVzc2lvbgorICAgIHNraXBOZXdM
aW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uTXVsCisgICAgd2hpbGUgQHRva2Vuc1tA
aWR4XSA9PSAiKyIgb3IgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgIGlmIEB0b2tlbnNbQGlk
eF0gPT0gIisiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBBZGRJbW1lZGlh
dGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVz
c2lvbk11bCkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICByZXN1bHQgPSBTdWJJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAx
XS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkKKyAgICAgIGVsc2UKKyAg
ICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisg
IGRlZiBwYXJzZU9wZXJhbmQoY29tbWVudCkKKyAgICBpZiBjb3VsZEJlRXhwcmVzc2lvbgorICAg
ICAgZXhwciA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiWyIK
KyAgICAgICAgcGFyc2VBZGRyZXNzKGV4cHIpCisgICAgICBlbHNlCisgICAgICAgIGV4cHIKKyAg
ICAgIGVuZAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICBwYXJzZUFkZHJl
c3MoSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIDApKQorICAgIGVsc2lm
IGlzTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gTGFiZWxSZWZlcmVuY2UubmV3
KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAg
cmVzdWx0CisgICAgZWxzaWYgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3Vs
dCA9IExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgTG9j
YWxMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5z
dHJpbmcpKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAgICBw
YXJzZUVycm9yKGNvbW1lbnQpCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBhcnNlTWFjcm9W
YXJpYWJsZXMKKyAgICBza2lwTmV3TGluZQorICAgIGNvbnN1bWUoL1xBXChcWi8pCisgICAgdmFy
aWFibGVzID0gW10KKyAgICBsb29wIHsKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICBpZiBAdG9r
ZW5zW0BpZHhdID09ICIpIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgYnJlYWsKKyAgICAg
IGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICB2YXJpYWJsZXMgPDwg
VmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0u
c3RyaW5nKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAg
aWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBi
cmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvcgorICAgICAgICBlbmQKKyAg
ICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvcgorICAgICAgZW5kCisgICAgfQorICAgIHZhcmlh
YmxlcworICBlbmQKKyAgCisgIGRlZiBwYXJzZVNlcXVlbmNlKGZpbmFsLCBjb21tZW50KQorICAg
IGZpcnN0Q29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIGxpc3QgPSBb
XQorICAgIGxvb3AgeworICAgICAgaWYgKEBpZHggPT0gQHRva2Vucy5sZW5ndGggYW5kIG5vdCBm
aW5hbCkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICBicmVh
aworICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICMgaWdub3JlCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiY29uc3QiCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc1ZhcmlhYmxlIEB0
b2tlbnNbQGlkeF0KKyAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI9IgorICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgdmFsdWUgPSBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBv
ZiBjb25zdCAje3ZhcmlhYmxlLm5hbWV9IikKKyAgICAgICAgbGlzdCA8PCBDb25zdERlY2wubmV3
KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgICAgZWxzaWYg
QHRva2Vuc1tAaWR4XSA9PSAiZXJyb3IiCisgICAgICAgIGxpc3QgPDwgRXJyb3IubmV3KEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbikKKyAgICAgICAgQGlkeCArPSAxCisgICAgICBlbHNpZiBAdG9r
ZW5zW0BpZHhdID09ICJpZiIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAg
cHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChc
bikpXFovKQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBpZlRoZW5FbHNlID0gSWZUaGVu
RWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGljYXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8
KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1w
fVwiIikpCisgICAgICAgIGxpc3QgPDwgaWZUaGVuRWxzZQorICAgICAgICB3aGlsZSBAdG9rZW5z
W0BpZHhdID09ICJlbHNpZiIKKyAgICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAg
ICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgICAgIGNvbnN1bWUoL1xB
KCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgIGVsc2VD
YXNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGljYXRlLCBwYXJzZVNlcXVlbmNl
KC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAje3By
ZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IGVsc2VD
YXNlCisgICAgICAgICAgaWZUaGVuRWxzZSA9IGVsc2VDYXNlCisgICAgICAgIGVuZAorICAgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICJlbHNlIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxl
IGluc2lkZSBvZiBlbHNlIGNhc2UgZm9yIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpCisgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICBwYXJzZUVycm9yIHVubGVz
cyBAdG9rZW5zW0BpZHhdID09ICJlbmQiCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVu
ZAorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAgICAgIGNvZGVPcmln
aW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAgICAg
IHNraXBOZXdMaW5lCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllcihAdG9r
ZW5zW0BpZHhdKQorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAg
QGlkeCArPSAxCisgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICAg
ICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIG1hY3Jv
ICN7bmFtZX0iKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgbGlzdCA8PCBNYWNyby5uZXco
Y29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgICAgZWxzaWYgaXNJbnN0cnVj
dGlvbiBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkg
b3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICAgICMgWmVybyBv
cGVyYW5kIGluc3RydWN0aW9uLCBhbmQgaXQncyB0aGUgbGFzdCBvbmUuCisgICAgICAgICAgbGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgYnJl
YWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgIyBaZXJv
IG9wZXJhbmQgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
Y29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UK
KyAgICAgICAgICAjIEl0J3MgZGVmaW5pdGVseSBhbiBpbnN0cnVjdGlvbiwgYW5kIGl0IGhhcyBh
dCBsZWFzdCBvbmUgb3BlcmFuZC4KKyAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAg
ZW5kT2ZTZXF1ZW5jZSA9IGZhbHNlCisgICAgICAgICAgbG9vcCB7CisgICAgICAgICAgICBvcGVy
YW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBpbnN0cnVjdGlvbiAje25hbWV9
IikKKyAgICAgICAgICAgIGlmIChub3QgZmluYWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBv
ciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgICAgICAgICMgVGhl
IGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24gYW5kIG9mIHRoZSBzZXF1ZW5jZS4KKyAgICAgICAgICAg
ICAgZW5kT2ZTZXF1ZW5jZSA9IHRydWUKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAg
IGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAgICMgSGFzIGFub3RoZXIg
b3BlcmFuZC4KKyAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBlbHNpZiBAdG9r
ZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVj
dGlvbi4KKyAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGJyZWFrCisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHBhcnNlRXJyb3IoIkV4cGVjdGVkIGEgY29tbWEs
IG5ld2xpbmUsIG9yICN7ZmluYWx9IGFmdGVyICN7b3BlcmFuZHMubGFzdC5kdW1wfSIpCisgICAg
ICAgICAgICBlbmQKKyAgICAgICAgICB9CisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgICAgaWYgZW5kT2ZTZXF1ZW5j
ZQorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAgICBl
bHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmlu
ZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAg
ICAgICAgICAjIE1hY3JvIGludm9jYXRpb24uCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAg
ICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAgICAgICAgICAjIEl0J3Mg
YSBtYWNybyBsYW1iZGEhCisgICAgICAgICAgICAgICAgY29kZU9yaWdpbklubmVyID0gQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAg
ICAgICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICAgICAgICAgIGJv
ZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBhbm9ueW1vdXMg
bWFjcm8gcGFzc2VkIGFzIGFyZ3VtZW50IHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2lu
SW5uZXIsIG5pbCwgdmFyaWFibGVzLCBib2R5KQorICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8g
Y2FsbCB0byAje25hbWV9IikKKyAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgIHNraXBO
ZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgZWxz
aWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IgIlVuZXhwZWN0ZWQgI3tA
dG9rZW5zW0BpZHhdLnN0cmluZy5pbnNwZWN0fSB3aGlsZSBwYXJzaW5nIGludm9jYXRpb24gb2Yg
bWFjcm8gI3tuYW1lfSIKKyAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICB9CisgICAgICAg
ICAgZW5kCisgICAgICAgICAgbGlzdCA8PCBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIG5hbWUs
IG9wZXJhbmRzKQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0ZWQg
XCIoXCIgYWZ0ZXIgI3tuYW1lfSIKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBpc0xhYmVsIEB0
b2tlbnNbQGlkeF0gb3IgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9y
aWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tA
aWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNz
IEB0b2tlbnNbQGlkeF0gPT0gIjoiCisgICAgICAgICMgSXQncyBhIGxhYmVsLgorICAgICAgICBp
ZiBpc0xhYmVsIG5hbWUKKyAgICAgICAgICBsaXN0IDw8IExhYmVsLmZvck5hbWUoY29kZU9yaWdp
biwgbmFtZSkKKyAgICAgICAgZWxzZQorICAgICAgICAgIGxpc3QgPDwgTG9jYWxMYWJlbC5mb3JO
YW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVuZAorICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0aW5nIHRlcm1pbmFsICN7ZmluYWx9
ICN7Y29tbWVudH0iCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGZpcnN0Q29k
ZU9yaWdpbiwgbGlzdCkKKyAgZW5kCitlbmQKKworZGVmIHBhcnNlKHRva2VucykKKyAgcGFyc2Vy
ID0gUGFyc2VyLm5ldyh0b2tlbnMpCisgIHBhcnNlci5wYXJzZVNlcXVlbmNlKG5pbCwgIiIpCitl
bmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVy
cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jl
Z2lzdGVycy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworR1BSUyA9CisgIFsKKyAgICJ0MCIsCisgICAidDEiLAor
ICAgInQyIiwKKyAgICJ0MyIsCisgICAidDQiLAorICAgImNmciIsCisgICAiYTAiLAorICAgImEx
IiwKKyAgICJyMCIsCisgICAicjEiLAorICAgInNwIiwKKyAgICJsciIKKyAgXQorCitGUFJTID0K
KyAgWworICAgImZ0MCIsCisgICAiZnQxIiwKKyAgICJmdDIiLAorICAgImZ0MyIsCisgICAiZnQ0
IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisgICAiZmExIiwKKyAgICJmYTIiLAorICAgImZhMyIs
CisgICAiZnIiCisgIF0KKworUkVHSVNURVJTID0gR1BSUyArIEZQUlMKKworR1BSX1BBVFRFUk4g
PSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKK0ZQUl9Q
QVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgRlBSUy5qb2luKCcpfCgnKSArICcpKVxcWicp
CisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBSRUdJU1RFUlMuam9p
bignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vc2VsZl9oYXNoLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3NlbGZfaGFzaC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiZGlnZXN0L3No
YTEiCityZXF1aXJlICJwYXRobmFtZSIKKworIworIyBzZWxmSGFzaCAtPiBTSEExIGhleGRpZ2Vz
dAorIworIyBSZXR1cm5zIGEgaGFzaCBvZiB0aGUgb2ZmbGluZWFzbSBzb3VyY2UgY29kZS4gVGhp
cyBhbGxvd3MgZGVwZW5kZW5jeQorIyB0cmFja2luZyBmb3Igbm90IGp1c3QgY2hhbmdlcyBpbiBp
bnB1dCwgYnV0IGFsc28gY2hhbmdlcyBpbiB0aGUgYXNzZW1ibGVyCisjIGl0c2VsZi4KKyMKKwor
ZGVmIHNlbGZIYXNoCisgIGNvbnRlbnRzID0gIiIKKyAgbXlQYXRoID0gUGF0aG5hbWUubmV3KF9f
RklMRV9fKS5kaXJuYW1lCisgIERpci5mb3JlYWNoKG15UGF0aCkgeworICAgIHwgZW50cnkgfAor
ICAgIGlmIGVudHJ5ID1+IC9cLnJiJC8KKyAgICAgIGNvbnRlbnRzICs9IElPOjpyZWFkKG15UGF0
aCArIGVudHJ5KQorICAgIGVuZAorICB9CisgIHJldHVybiBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0
KGNvbnRlbnRzKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3NldHRpbmdzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjA1IEBACisjIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJl
ICJiYWNrZW5kcyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworIwor
IyBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25z
CisjCisjIENvbXB1dGVzIGFuIGFycmF5IG9mIHNldHRpbmdzIG1hcHMsIHdoZXJlIGEgc2V0dGlu
Z3MgbWFwIGNvbnN0aXR1dGVzCisjIGEgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFzc2VtYmx5IGNv
ZGUgYmVpbmcgZ2VuZXJhdGVkLiBUaGUgbWFwCisjIGNvbnRhaW5zIGtleSB2YWx1ZSBwYWlycyB3
aGVyZSBrZXlzIGFyZSBzZXR0aW5ncyBuYW1lcyAoc3RyaW5ncykgYW5kCisjIHRoZSB2YWx1ZXMg
YXJlIGJvb2xlYW5zICh0cnVlIGZvciBlbmFibGVkLCBmYWxzZSBmb3IgZGlzYWJsZWQpLgorIwor
CitkZWYgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgc2V0dGluZ3NDb21iaW5h
dGlvbnMgPSBbXQorICAKKyAgZGVmIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0
aW9ucywgbWFwU29GYXIsIHJlbWFpbmluZykKKyAgICBpZiByZW1haW5pbmcuZW1wdHk/CisgICAg
ICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA8PCBtYXBTb0ZhcgorICAgICAgcmV0dXJuCisgICAgZW5k
CisgICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1sw
XV0gPSB0cnVlCisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBu
ZXdNYXAsIHJlbWFpbmluZ1sxLi4tMV0pCisgICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVw
CisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSBmYWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRv
cihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICBlbmQK
KyAgCisgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywge30sIChhc3Qu
ZmlsdGVyKFNldHRpbmcpLnVuaXEuY29sbGVjdHt8dnwgdi5uYW1lfSArIFsiWDg2IiwgIkFSTXY3
Il0pLnVuaXEpCisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucworZW5kCisKKyMKKyMgZm9yU2V0
dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3Ms
IGxvd0xldmVsQVNULCBiYWNrZW5kIHwgLi4uIH0KKyMKKyMgRGV0ZXJtaW5lcyBpZiB0aGUgc2V0
dGluZ3MgY29tYmluYXRpb24gaXMgdmFsaWQsIGFuZCBpZiBzbywgY2FsbHMKKyMgdGhlIGJsb2Nr
IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSBuZWVkIHRvIGdlbmVyYXRlIGNvZGUuCisjCisKK2Rl
ZiBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJj
aGl0ZWN0dXJlcyB0aGlzIGNvbWJpbmF0b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWlt
ZWRCYWNrZW5kcyA9IDAKKyAgc2VsZWN0ZWRCYWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2gg
eworICAgIHwgYmFja2VuZCB8CisgICAgaXNTdXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2Jh
Y2tlbmRdCisgICAgcmFpc2UgdW5sZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWlt
ZWRCYWNrZW5kcyArPSBpZiBpc1N1cHBvcnRlZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlz
U3VwcG9ydGVkCisgICAgICBzZWxlY3RlZEJhY2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0K
KyAgCisgIHJldHVybiBpZiBudW1DbGFpbWVkQmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUg
dGhlIEFTVCBkb3duIHRvIGEgbG93LWxldmVsIGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25h
bHMpLgorICBsb3dMZXZlbEFTVCA9IGFzdC5yZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5n
cykKKyAgCisgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJh
Y2tlbmQKK2VuZAorCisjCisjIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7
CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfQor
IworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgc2V0dGluZ3NDb21iaW5h
dGlvbnMpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8
IC4uLiB9CisjCisjIEV4ZWN1dGVzIHRoZSBnaXZlbiBibG9jayBmb3IgZWFjaCB2YWxpZCBzZXR0
aW5ncyBjb21iaW5hdGlvbiBpbiB0aGUKKyMgc2V0dGluZ3MgbWFwLiBUaGUgYXN0IHBhc3NlZCBp
bnRvIHRoZSBibG9jayBpcyByZXNvbHZlZAorIyAoYXN0LnJlc29sdmUpIGFnYWluc3QgdGhlIHNl
dHRpbmdzLgorIworIyBUaGUgZmlyc3QgZm9ybSB3aWxsIGNhbGwgY29tcHV0ZVNldHRpbmdzQ29t
YmluYXRpb25zKGFzdCkgZm9yIHlvdS4KKyMKKworZGVmIGZvckVhY2hWYWxpZFNldHRpbmdzQ29t
YmluYXRpb24oYXN0LCAqb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucykKKyAgcmFpc2UgaWYg
b3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucy5zaXplID4gMQorICAKKyAgaWYgb3B0aW9uYWxT
ZXR0aW5nc0NvbWJpbmF0aW9ucy5lbXB0eT8KKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IGNv
bXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIGVsc2UKKyAgICBzZXR0aW5nc0NvbWJp
bmF0aW9ucyA9IG9wdGlvbmFsU2V0dGluZ3NDb21iaWF0aW9uc1swXQorICBlbmQKKyAgCisgIHNl
dHRpbmdzQ29tYmluYXRpb25zLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBjb25jcmV0ZVNldHRp
bmdzLCBpbmRleCB8CisgICAgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7Cisg
ICAgICB8IGNvbmNyZXRlU2V0dGluZ3NfLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgICB5
aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICB9
CisgIH0KK2VuZAorCisjCisjIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorIwor
IyBSZXR1cm5zIHRoZSBDKysgY29kZSB1c2VkIHRvIHRlc3QgaWYgd2UgYXJlIGluIGEgY29uZmln
dXJhdGlvbiB0aGF0CisjIGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZlbiBjb25jcmV0ZSBzZXR0aW5n
cy4KKyMKKworZGVmIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAiI2lmICIg
KyBjb25jcmV0ZVNldHRpbmdzLnRvX2EuY29sbGVjdHsKKyAgICB8IHBhaXIgfAorICAgIChpZiBw
YWlyWzFdCisgICAgICAgIiIKKyAgICAgZWxzZQorICAgICAgICIhIgorICAgICBlbmQpICsgIk9G
RkxJTkVfQVNNXyIgKyBwYWlyWzBdCisgIH0uam9pbigiICYmICIpCitlbmQKKworIworIyBpc0FT
VEVycm9uZW91cyhhc3QpCisjCisjIFRlc3RzIHRvIHNlZSBpZiB0aGUgQVNUIGNsYWltcyB0aGF0
IHRoZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUKKyMgdXNlcidzIGNvZGUsIGFmdGVyIHNl
dHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4KKyMKKworZGVmIGlzQVNURXJyb25l
b3VzKGFzdCkKKyAgbm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5PworZW5kCisKKyMKKyMgYXNz
ZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorIworIyBFbWl0cyBhIGNoZWNrIHRo
YXQgYXNzZXJ0cyB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uLgorIwor
CitkZWYgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICAkb3V0cHV0LnB1
dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICRvdXRwdXQucHV0cyAiI2Vs
c2UiCisgICRvdXRwdXQucHV0cyAiI2Vycm9yIFwiQ29uZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIK
KyAgJG91dHB1dC5wdXRzICIjZW5kaWYiCitlbmQKKworIworIyBlbWl0Q29kZUluQ29uZmlndXJh
dGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpIHsKKyMgICAgIHwgY29uY3JldGVT
ZXR0aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4uIH0KKyMKKyMgRW1pdHMgYWxsIHJlbGV2YW50IGd1
YXJkcyB0byBzZWUgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaG9sZHMgYW5kCisjIGNhbGxzIHRoZSBi
bG9jayBpZiB0aGUgY29uZmlndXJhdGlvbiBpcyBub3QgZXJyb25lb3VzLgorIworCitkZWYgZW1p
dENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKQorICAk
b3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICBpZiBp
c0FTVEVycm9uZW91cyhhc3QpCisgICAgJG91dHB1dC5wdXRzICIjZXJyb3IgXCJJbnZhbGlkIGNv
bmZpZ3VyYXRpb24uXCIiCisgIGVsc2lmIG5vdCBXT1JLSU5HX0JBQ0tFTkRTLmluY2x1ZGU/IGJh
Y2tlbmQKKyAgICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIlRoaXMgYmFja2VuZCBpcyBub3Qgc3Vw
cG9ydGVkIHlldC5cIiIKKyAgZWxzZQorICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwg
YmFja2VuZAorICBlbmQKKyAgCisgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMKKyMg
ZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRp
bmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0KKyMKKyMgRW1pdHMgZ3VhcmQgY29kZXMg
Zm9yIGFsbCB2YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxzIHRoZSBibG9jaworIyBmb3Ig
dGhvc2UgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5kIG5vdCBlcnJvbmVvdXMuCisj
CisKK2RlZiBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KQorICBmb3JFYWNoVmFsaWRT
ZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2
ZWxBU1QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0
KGNvbmNyZXRlU2V0dGluZ3MpCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxB
U1QsIGJhY2tlbmQsIGluZGV4CisgICAgJG91dHB1dC5wdXRzICIjZW5kaWYiCisgIH0KK2VuZAor
CisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9y
bS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Ry
YW5zZm9ybS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNDIgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKKworIworIyBub2RlLnJlc29s
dmVTZXR0aW5ncyhzZXR0aW5ncykKKyMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGRvZXMg
bm90IGhhdmUgYW55IElmVGhlbkVsc2Ugbm9kZXMgYnkKKyMgc3Vic3RpdHV0aW5nIGNvbmNyZXRl
IGJvb2xlYW4gdmFsdWVzIGZvciBlYWNoIFNldHRpbmcuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVm
IHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNo
aWxkIHwKKyAgICAgIGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICB9CisgIGVu
ZAorZW5kCisKK2NsYXNzIFRydWUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAg
ICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Mo
c2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nCisgIGRlZiBy
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2V0dGluZ3NbQG5hbWVdLmFzTm9kZQorICBl
bmQKK2VuZAorCitjbGFzcyBBbmQKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAg
ICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBhbmQgQHJpZ2h0LnJlc29s
dmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBP
cgorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpLnZhbHVlIG9yIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
LnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgTm90CisgIGRlZiByZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpCisgICAgKG5vdCBAY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdz
KS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UKKyAgZGVmIHJl
c29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBpZiBAcHJlZGljYXRlLnJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykudmFsdWUKKyAgICAgIEB0aGVuQ2FzZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgZWxzZQorICAgICAgQGVsc2VDYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykK
KyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAgICAg
IHwgaXRlbSB8CisgICAgICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisg
ICAgICBpZiBpdGVtLmlzX2E/IFNlcXVlbmNlCisgICAgICAgIG5ld0xpc3QgKz0gaXRlbS5saXN0
CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbQorICAgICAgZW5kCisgICAgfQor
ICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKK2VuZAorCisjCisj
IG5vZGUuZGVtYWNyb2lmeShtYWNyb3MpCisjIG5vZGUuc3Vic3RpdHV0ZShtYXBwaW5nKQorIwor
IyBkZW1hY3JvaWZ5KCkgY29uc3RydWN0cyBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFu
eSBNYWNybworIyBub2Rlcywgd2hpbGUgc3Vic3RpdHV0ZSgpIHJlcGxhY2VzIFZhcmlhYmxlIG5v
ZGVzIHdpdGggdGhlIGdpdmVuCisjIG5vZGVzIGluIHRoZSBtYXBwaW5nLgorIworCitjbGFzcyBO
b2RlCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8
IGNoaWxkIHwKKyAgICAgIGNoaWxkLmRlbWFjcm9pZnkobWFjcm9zKQorICAgIH0KKyAgZW5kCisg
IAorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwg
Y2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIH0KKyAgZW5kCisg
IAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAg
ICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAg
IH0KKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8KKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykK
KyAgICBteU1hcHBpbmcgPSB7fQorICAgIG1hcHBpbmcuZWFjaF9wYWlyIHsKKyAgICAgIHwga2V5
LCB2YWx1ZSB8CisgICAgICB1bmxlc3MgQHZhcmlhYmxlcy5pbmNsdWRlPyBrZXkKKyAgICAgICAg
bXlNYXBwaW5nW2tleV0gPSB2YWx1ZQorICAgICAgZW5kCisgICAgfQorICAgIG1hcENoaWxkcmVu
IHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShteU1hcHBpbmcpCisg
ICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZQorICBkZWYgc3Vic3RpdHV0ZShtYXBw
aW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNl
CisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAg
ZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAg
ICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2Vu
ZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgc3Vic3RpdHV0ZShjb25zdGFudHMpCisgICAgbmV3
TGlzdCA9IFtdCisgICAgbXlDb25zdGFudHMgPSBjb25zdGFudHMuZHVwCisgICAgQGxpc3QuZWFj
aCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAg
ICAgbXlDb25zdGFudHNbaXRlbS52YXJpYWJsZV0gPSBpdGVtLnZhbHVlLnN1YnN0aXR1dGUobXlD
b25zdGFudHMpCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5zdWJzdGl0dXRl
KG15Q29uc3RhbnRzKQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3Jp
Z2luLCBuZXdMaXN0KQorICBlbmQKKyAgCisgIGRlZiByZW5hbWVMYWJlbHMoY29tbWVudCkKKyAg
ICBtYXBwaW5nID0ge30KKyAgICAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8Cisg
ICAgICBpZiBpdGVtLmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAgbWFwcGluZ1tpdGVtXSA9IExv
Y2FsTGFiZWwudW5pcXVlKGlmIGNvbW1lbnQgdGhlbiBjb21tZW50ICsgIl8iIGVsc2UgIiIgZW5k
ICsgaXRlbS5jbGVhbk5hbWUpCisgICAgICBlbmQKKyAgICB9CisgICAgCisgICAgc3Vic3RpdHV0
ZUxhYmVscyhtYXBwaW5nKQorICBlbmQKKyAgCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAg
ICBteU1hY3JvcyA9IG1hY3Jvcy5kdXAKKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8
CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0g
PSBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFj
aCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICAj
IElnbm9yZS4KKyAgICAgIGVsc2lmIGl0ZW0uaXNfYT8gTWFjcm9DYWxsCisgICAgICAgIG1hcHBp
bmcgPSB7fQorICAgICAgICBteU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisgICAgICAgIHJhaXNl
ICJDb3VsZCBub3QgZmluZCBtYWNybyAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5T
dHJpbmd9IiB1bmxlc3MgbXlNYWNyb3NbaXRlbS5uYW1lXQorICAgICAgICByYWlzZSAiQXJndW1l
bnQgY291bnQgbWlzbWF0Y2ggZm9yIGNhbGwgdG8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2Rl
T3JpZ2luU3RyaW5nfSIgdW5sZXNzIGl0ZW0ub3BlcmFuZHMuc2l6ZSA9PSBteU1hY3Jvc1tpdGVt
Lm5hbWVdLnZhcmlhYmxlcy5zaXplCisgICAgICAgIGl0ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7
CisgICAgICAgICAgfCBpZHggfAorICAgICAgICAgIGlmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19h
PyBWYXJpYWJsZSBhbmQgbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAg
ICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0g
PSBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgIG1hcHBpbmdb
bXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAg
IGVsc2lmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBNYWNybworICAgICAgICAgICAgbXlNeU1h
Y3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVy
YW5kc1tpZHhdCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFi
bGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBteU15TWFj
cm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gbmlsCisgICAgICAgICAg
ICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1dID0gaXRlbS5vcGVy
YW5kc1tpZHhdCisgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCArPSBt
eU1hY3Jvc1tpdGVtLm5hbWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15
TXlNYWNyb3MpLnJlbmFtZUxhYmVscyhpdGVtLm5hbWUpLmxpc3QKKyAgICAgIGVsc2UKKyAgICAg
ICAgbmV3TGlzdCA8PCBpdGVtLmRlbWFjcm9pZnkobXlNYWNyb3MpCisgICAgICBlbmQKKyAgICB9
CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3QpLnN1YnN0aXR1dGUoe30pCisg
IGVuZAorZW5kCisKKyMKKyMgbm9kZS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyMK
KyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGhhcyBvZmZzZXQgdmFsdWVzIGluc3RlYWQgb2Yg
c3ltYm9saWMKKyMgb2Zmc2V0cy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZU9mZnNl
dHMob2Zmc2V0cywgc2l6ZXMpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8Cisg
ICAgICBjaGlsZC5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICB9CisgIGVuZAor
ZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldAorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywg
c2l6ZXMpCisgICAgaWYgb2Zmc2V0c1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3Jp
Z2luLCBvZmZzZXRzW3NlbGZdKQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5k
CitlbmQKKworY2xhc3MgU2l6ZW9mCisgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXpl
cykKKyAgICBpZiBzaXplc1tzZWxmXQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBz
aXplc1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBwdXRzICJDb3VsZCBub3QgZmluZCAje3NlbGYu
aW5zcGVjdH0gaW4gI3tzaXplcy5rZXlzLmluc3BlY3R9IgorICAgICAgcHV0cyAic2l6ZXMgPSAj
e3NpemVzLmluc3BlY3R9IgorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCisjCisj
IG5vZGUuZm9sZAorIworIyBSZXNvbHZlIGNvbnN0YW50IHJlZmVyZW5jZXMgYW5kIGNvbXB1dGUg
YXJpdGhtZXRpYyBleHByZXNzaW9ucy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgZm9sZAorICAg
IG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuZm9sZAorICAgIH0K
KyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0
ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYg
dW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmln
aHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52
YWx1ZSArIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcwor
ICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5m
b2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJl
dHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5l
dyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAtIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKwor
Y2xhc3MgTXVsSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAor
ICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0Lmlz
X2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRp
YXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAqIEByaWdodC52
YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlCisgIGRlZiBmb2xkCisgICAg
QGNoaWxkID0gQGNoaWxkLmZvbGQKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGNoaWxkLmlzX2E/
IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgLUBjaGlsZC52YWx1ZSkK
KyAgZW5kCitlbmQKKworIworIyBub2RlLnJlc29sdmVBZnRlclNldHRpbmdzKG9mZnNldHMsIHNp
emVzKQorIworIyBDb21waWxlIGFzc2VtYmx5IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4KKyMK
KworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZShvZmZzZXRzLCBzaXplcykKKyAgICBkZW1hY3Jv
aWZ5KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykuZm9sZAorICBlbmQKK2VuZAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDY4MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICBjYXNlIG5h
bWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0MSIsICJhMSIsICJyMSIsICJ0MiIsICJ0
MyIKKyAgICAgIHRydWUKKyAgICB3aGVuICJ0NCIsICJjZnIiCisgICAgICBmYWxzZQorICAgIGVs
c2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2lu
ZCkKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgIGNhc2Ug
a2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWFsIgorICAgICAgd2hlbiA6aGFsZgor
ICAgICAgICAiJWF4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWF4IgorICAgICAgZWxz
ZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisg
ICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkbCIKKyAgICAgIHdo
ZW4gOmhhbGYKKyAgICAgICAgIiVkeCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVkeCIK
KyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQyIgorICAg
ICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlY2wiCisgICAgICB3aGVu
IDpoYWxmCisgICAgICAgICIlY3giCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlY3giCisg
ICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJ0MyIKKyAgICAg
IGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWJsIgorICAgICAgd2hlbiA6
aGFsZgorICAgICAgICAiJWJ4IgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIlZWJ4IgorICAg
ICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAidDQiCisgICAgICBj
YXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzaWwiCisgICAgICB3aGVuIDpo
YWxmCisgICAgICAgICIlc2kiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlc2kiCisgICAg
ICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJjZnIiCisgICAgICBj
YXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVkaWwiCisgICAgICB3aGVuIDpo
YWxmCisgICAgICAgICIlZGkiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVlZGkiCisgICAg
ICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVuICJzcCIKKyAgICAgIGNh
c2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNwbCIKKyAgICAgIHdoZW4gOmhh
bGYKKyAgICAgICAgIiVzcCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVzcCIKKyAgICAg
IGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIHJhaXNlICJC
YWQgcmVnaXN0ZXIgI3tuYW1lfSBmb3IgWDg2IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAg
ZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFu
ZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgeDg2T3Bl
cmFuZChraW5kKQorICAgIHJhaXNlIHVubGVzcyBraW5kID09IDpkb3VibGUKKyAgICBjYXNlIG5h
bWUKKyAgICB3aGVuICJmdDAiLCAiZmEwIiwgImZyIgorICAgICAgIiV4bW0wIgorICAgIHdoZW4g
ImZ0MSIsICJmYTEiCisgICAgICAiJXhtbTEiCisgICAgd2hlbiAiZnQyIiwgImZhMiIKKyAgICAg
ICIleG1tMiIKKyAgICB3aGVuICJmdDMiLCAiZmEzIgorICAgICAgIiV4bW0zIgorICAgIHdoZW4g
ImZ0NCIKKyAgICAgICIleG1tNCIKKyAgICB3aGVuICJmdDUiCisgICAgICAiJXhtbTUiCisgICAg
ZWxzZQorICAgICAgcmFpc2UgIkJhZCByZWdpc3RlciAje25hbWV9IGZvciBYODYgYXQgI3tjb2Rl
T3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5k
KQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRp
YXRlCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiQje3ZhbHVlfSIKKyAgZW5kCisgIGRl
ZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIje3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xh
c3MgQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAK
KyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZP
cGVyYW5kKDppbnQpfSkiCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAi
KiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBk
ZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJh
bmQoa2luZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSwg
I3tpbmRleC54ODZPcGVyYW5kKDppbnQpfSwgI3tzY2FsZX0pIgorICBlbmQKKworICBkZWYgeDg2
Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2b3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5k
CisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0
cnVlCisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3thZGRyZXNzLnZh
bHVlfSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje2FkZHJl
c3MudmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2
Q2FsbE9wZXJhbmQoa2luZCkKKyAgICBhc21MYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBMb2Nh
bExhYmVsUmVmZXJlbmNlCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgIGFzbUxhYmVs
CisgIGVuZAorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgIGRlZiB4ODZPcGVyYW5kcygqa2lu
ZHMpCisgICAgcmFpc2UgdW5sZXNzIGtpbmRzLnNpemUgPT0gb3BlcmFuZHMuc2l6ZQorICAgIHJl
c3VsdCA9IFtdCisgICAga2luZHMuc2l6ZS50aW1lcyB7CisgICAgICB8IGlkeCB8CisgICAgICBy
ZXN1bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZPcGVyYW5kKGtpbmRzW2lkeF0pCisgICAgfQorICAg
IHJlc3VsdC5qb2luKCIsICIpCisgIGVuZAorCisgIGRlZiB4ODZTdWZmaXgoa2luZCkKKyAgICBj
YXNlIGtpbmQKKyAgICB3aGVuIDpieXRlCisgICAgICAiYiIKKyAgICB3aGVuIDpoYWxmCisgICAg
ICAidyIKKyAgICB3aGVuIDppbnQKKyAgICAgICJsIgorICAgIHdoZW4gOmRvdWJsZQorICAgICAg
InNkIgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhh
bmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgbnVtT3BlcmFuZHMpCisgICAg
aWYgbnVtT3BlcmFuZHMgPT0gMworICAgICAgaWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0K
KyAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtp
bmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgIGVsc2lmIG9wZXJh
bmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5k
KX0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAibW92I3t4ODZTdWZmaXgoa2luZCl9
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFu
ZChraW5kKX0iCisgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBl
bmQKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVu
ZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcChvcGNvZGUsIGtpbmQpCisgICAgaGFuZGxl
WDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXplKQorICBlbmQK
KyAgCisgIGRlZiBoYW5kbGVYODZTaGlmdChvcGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNb
MF0uaXNfYT8gSW1tZWRpYXRlIG9yIG9wZXJhbmRzWzBdID09IFJlZ2lzdGVySUQuZm9yTmFtZShu
aWwsICJ0MiIpCisgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNl
CisgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0s
ICVlY3giCisgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAlY2wsICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZChraW5kKX0iCisgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4
NkRvdWJsZUJyYW5jaChicmFuY2hPcGNvZGUsIG1vZGUpCisgICAgY2FzZSBtb2RlCisgICAgd2hl
biA6bm9ybWFsCisgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3
aGVuIDpyZXZlcnNlCisgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAg
ICBlbHNlCisgICAgICByYWlzZSBtb2RlLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMg
IiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgZW5kCisgIAorICBk
ZWYgaGFuZGxlWDg2SW50Q29tcGFyZShvcGNvZGVTdWZmaXgsIGtpbmQpCisgICAgaWYgb3BlcmFu
ZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCBvcGVy
YW5kc1sxXS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNv
ZGVTdWZmaXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAidGVzdCN7eDg2U3VmZml4KGtpbmQp
fSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVsc2lmIG9wZXJhbmRzWzFd
LmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNb
MF0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3Vm
Zml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMg
ImNtcCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRl
ZiBoYW5kbGVYODZJbnRCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4Nklu
dENvbXBhcmUoYnJhbmNoT3Bjb2RlWzEuLi0xXSwga2luZCkKKyAgICAkYXNtLnB1dHMgIiN7YnJh
bmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFu
ZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZCkKKyAgICBpZiBvcGVyYW5kLnN1cHBvcnRzOEJp
dE9uWDg2CisgICAgICAkYXNtLnB1dHMgIiN7c2V0T3Bjb2RlfSAje29wZXJhbmQueDg2T3BlcmFu
ZCg6Ynl0ZSl9IgorICAgICAgJGFzbS5wdXRzICJtb3Z6YmwgI3tvcGVyYW5kLng4Nk9wZXJhbmQo
OmJ5dGUpfSwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgICRh
c20ucHV0cyAieGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgICAg
JGFzbS5wdXRzICIje3NldE9wY29kZX0gJWFsIgorICAgICAgJGFzbS5wdXRzICJtb3Z6YmwgJWFs
LCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJ4Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50
KX0sICVlYXgiCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmVT
ZXQoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NkludENvbXBhcmUoc2V0T3Bjb2RlWzMu
Li0xXSwga2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kc1syXSkKKyAg
ZW5kCisgIAorICBkZWYgaGFuZGxlWDg2VGVzdChraW5kKQorICAgIHZhbHVlID0gb3BlcmFuZHNb
MF0KKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDIKKyAgICAgIG1hc2sgPSBJbW1l
ZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAgIHdoZW4gMworICAgICAgbWFzayA9IG9wZXJh
bmRzWzFdCisgICAgZWxzZQorICAgICAgcmFpc2UgIkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5kcywg
YnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5k
CisgICAgCisgICAgaWYgbWFzay5pc19hPyBJbW1lZGlhdGUgYW5kIG1hc2sudmFsdWUgPT0gLTEK
KyAgICAgIGlmIHZhbHVlLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJ0ZXN0
I3t4ODZTdWZmaXgoa2luZCl9ICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2
T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiY21wI3t4ODZT
dWZmaXgoa2luZCl9ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5kCisg
ICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7bWFzay54
ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgaGFuZGxlWDg2QnJhbmNoVGVzdChicmFuY2hPcGNvZGUsIGtpbmQpCisg
ICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7
b3BlcmFuZHMubGFzdC5hc21MYWJlbH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldFRl
c3Qoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICBoYW5kbGVY
ODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kcy5sYXN0KQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVY
ODZPcEJyYW5jaChvcGNvZGUsIGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdp
dGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGNhc2Ug
b3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNd
CisgICAgd2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisg
ICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNo
T3Bjb2RlfSAje2p1bXBUYXJnZXQuYXNtTGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVY
ODZTdWJCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0g
NCBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICRhc20ucHV0cyAibmVnbCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJhZGRsICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgZWxzZQorICAgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMoInN1YiN7
eDg2U3VmZml4KGtpbmQpfSIsIGtpbmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGVuZAorICAg
IGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJh
bmRzWzNdCisgICAgd2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBl
bHNlCisgICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIiN7
YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQuYXNtTGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBs
b3dlclg4NgorICAgICRhc20uY29tbWVudCBjb2RlT3JpZ2luU3RyaW5nCisgICAgY2FzZSBvcGNv
ZGUKKyAgICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMg
YW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3Bl
cmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNb
Ml0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCisg
ICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAk
YXNtLnB1dHMgIm1vdmwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5k
c1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICRhc20ucHV0cyAibGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICAgICAgZW5kCisgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBd
LmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/
IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lz
dGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJsZWFsICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54
ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5u
ZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAgICRhc20ucHV0cyAiYWRkbCAje3g4
Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbmQKKyAgICB3aGVu
ICJhbmRpIiwgImFuZHAiCisgICAgICBoYW5kbGVYODZPcCgiYW5kbCIsIDppbnQpCisgICAgd2hl
biAibHNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYWxsIiwgOmludCkKKyAgICB3aGVu
ICJtdWxpIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19h
PyBJbW1lZGlhdGUKKyAgICAgICAgJGFzbS5wdXRzICJpbXVsbCAje3g4Nk9wZXJhbmRzKDppbnQs
IDppbnQsIDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgIyBGSVhNRTogY291bGQgZG8gc29t
ZSBwZWVwaG9sZSBpbiBjYXNlIHRoZSBsZWZ0IG9wZXJhbmQgaXMgaW1tZWRpYXRlIGFuZCBpdCdz
CisgICAgICAgICMgYSBwb3dlciBvZiB0d28uCisgICAgICAgIGhhbmRsZVg4Nk9wKCJpbXVsbCIs
IDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJuZWdpIgorICAgICAgJGFzbS5wdXRzICJuZWds
ICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm5vdGkiCisgICAgICAkYXNtLnB1dHMg
Im5vdGwgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAib3JpIiwgIm9ycCIKKyAgICAg
IGhhbmRsZVg4Nk9wKCJvcmwiLCA6aW50KQorICAgIHdoZW4gInJzaGlmdGkiCisgICAgICBoYW5k
bGVYODZTaGlmdCgic2FybCIsIDppbnQpCisgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICBoYW5k
bGVYODZTaGlmdCgic2hybCIsIDppbnQpCisgICAgd2hlbiAic3ViaSIsICJzdWJwIgorICAgICAg
aWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAg
ICAgICAkYXNtLnB1dHMgIm5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICAgICAgJGFzbS5wdXRzICJhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7
b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIGhhbmRs
ZVg4Nk9wKCJzdWJsIiwgOmludCkKKyAgICAgIGVuZAorICAgIHdoZW4gInhvcmkiLCAieG9ycCIK
KyAgICAgIGhhbmRsZVg4Nk9wKCJ4b3JsIiwgOmludCkKKyAgICB3aGVuICJsb2FkaSIsICJzdG9y
ZWkiLCAibG9hZHAiLCAic3RvcmVwIgorICAgICAgJGFzbS5wdXRzICJtb3ZsICN7eDg2T3BlcmFu
ZHMoOmludCwgOmludCl9IgorICAgIHdoZW4gImxvYWRiIgorICAgICAgJGFzbS5wdXRzICJtb3Z6
YmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGJzIgorICAgICAgJGFzbS5wdXRzICJtb3ZzYmwg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGgiCisgICAgICAkYXNtLnB1dHMgIm1vdnp3bCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICB3aGVuICJsb2FkaHMiCisgICAgICAkYXNtLnB1dHMgIm1vdnN3bCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQp
fSIKKyAgICB3aGVuICJzdG9yZWIiCisgICAgICAkYXNtLnB1dHMgIm1vdmIgI3t4ODZPcGVyYW5k
cyg6Ynl0ZSwgOmJ5dGUpfSIKKyAgICB3aGVuICJsb2FkZCIsICJtb3ZlZCIsICJzdG9yZWQiCisg
ICAgICAkYXNtLnB1dHMgIm1vdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9Igor
ICAgIHdoZW4gImFkZGQiCisgICAgICAkYXNtLnB1dHMgImFkZHNkICN7eDg2T3BlcmFuZHMoOmRv
dWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImRpdmQiCisgICAgICAkYXNtLnB1dHMgImRpdnNk
ICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInN1YmQiCisgICAg
ICAkYXNtLnB1dHMgInN1YnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAg
IHdoZW4gIm11bGQiCisgICAgICAkYXNtLnB1dHMgIm11bHNkICN7eDg2T3BlcmFuZHMoOmRvdWJs
ZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInNxcnRkIgorICAgICAgJGFzbS5wdXRzICJzcXJ0c2Qg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJjaTJkIgorICAgICAgJGFzbS5wdXRzICJjdnRzaTJz
ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImJkZXEiCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2Fs
TGFiZWwudW5pcXVlKCJiZGVxIikKKyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9IgorICAgICAgJGFzbS5wdXRzICJqcCAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2lu
LCBpc1Vub3JkZXJlZCkuYXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJqZSAje0xhYmVsUmVm
ZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBvcGVyYW5kc1syXSkuYXNtTGFiZWx9IgorICAgICAgaXNV
bm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRuZXEiCisgICAgICBoYW5kbGVYODZE
b3VibGVCcmFuY2goImpuZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRndCIKKyAgICAgIGhhbmRs
ZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3RlcSIKKyAgICAg
IGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0Igor
ICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJk
bHRlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOnJldmVyc2UpCisgICAg
d2hlbiAiYmRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwp
CisgICAgd2hlbiAiYmRuZXF1biIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlx
dWUoImJkbmVxdW4iKQorICAgICAgaXNFcXVhbCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVu
IikKKyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRv
dWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5w
dXRzICJqcCAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkuYXNt
TGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3Jp
Z2luLCBpc0VxdWFsKS5hc21MYWJlbH0iCisgICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikK
KyAgICAgICRhc20ucHV0cyAiam1wICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgaXNF
cXVhbC5sb3dlcigiWDg2IikKKyAgICB3aGVuICJiZGd0dW4iCisgICAgICBoYW5kbGVYODZEb3Vi
bGVCcmFuY2goImpiIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRndGVxdW4iCisgICAgICBoYW5k
bGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHR1biIKKyAg
ICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHRl
cXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6bm9ybWFsKQorICAgIHdo
ZW4gImJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
ICRhc20ucHV0cyAiY21wbCAkMHg4MDAwMDAwMCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgICAgJGFzbS5wdXRzICJqZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3
aGVuICJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3
aGVuICJiY2QyaSIKKyAgICAgICRhc20ucHV0cyAiY3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAkYXNtLnB1dHMgInRlc3RsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgImplICN7b3BlcmFu
ZHNbMl0uYXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJjdnRzaTJzZCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAi
anAgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAkYXNtLnB1dHMgImpuZSAje29wZXJh
bmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJtb3ZkeiIKKyAgICAgICRhc20ucHV0cyAieG9y
cGQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJwb3AiCisgICAgICAkYXNtLnB1dHMgInBvcCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInB1c2giCisgICAgICAk
YXNtLnB1dHMgInB1c2ggI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVu
ICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDAp
ID09IG9wZXJhbmRzWzBdIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAg
ICRhc20ucHV0cyAieG9ybCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzaWYgb3BlcmFuZHNbMF0gIT0gb3Bl
cmFuZHNbMV0KKyAgICAgICAgJGFzbS5wdXRzICJtb3ZsICN7eDg2T3BlcmFuZHMoOmludCwgOmlu
dCl9IgorICAgICAgZW5kCisgICAgd2hlbiAibm9wIgorICAgICAgJGFzbS5wdXRzICJub3AiCisg
ICAgd2hlbiAiYmllcSIsICJicGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDpp
bnQpCisgICAgd2hlbiAiYmluZXEiLCAiYnBuZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpuZSIsIDppbnQpCisgICAgd2hlbiAiYmlhIiwgImJwYSIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamEiLCA6aW50KQorICAgIHdoZW4gImJpYWVxIiwgImJwYWVxIgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqYWUiLCA6aW50KQorICAgIHdoZW4gImJpYiIsICJicGIiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmludCkKKyAgICB3aGVuICJiaWJlcSIsICJicGJlcSIK
KyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmludCkKKyAgICB3aGVuICJiaWd0Iiwg
ImJwZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmludCkKKyAgICB3aGVuICJi
aWd0ZXEiLCAiYnBndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6aW50KQor
ICAgIHdoZW4gImJpbHQiLCAiYnBsdCIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6
aW50KQorICAgIHdoZW4gImJpbHRlcSIsICJicGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImpsZSIsIDppbnQpCisgICAgd2hlbiAiYmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYm5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiam5lIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqYSIsIDpieXRlKQorICAgIHdoZW4gImJiYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqYWUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpiIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpiZSIsIDpieXRlKQorICAgIHdoZW4gImJiZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpnIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqZ2UiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqbCIsIDpieXRlKQorICAgIHdoZW4gImJibHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamx0ZXEiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGlvIiwgImJ0cG8iCisgICAgICBoYW5kbGVY
ODZCcmFuY2hUZXN0KCJqbyIsIDppbnQpCisgICAgd2hlbiAiYnRpcyIsICJidHBzIgorICAgICAg
aGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6aW50KQorICAgIHdoZW4gImJ0aXoiLCAiYnRweiIK
KyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6IiwgOmludCkKKyAgICB3aGVuICJidGlueiIs
ICJidHBueiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDppbnQpCisgICAgd2hl
biAiYnRibyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmJ5dGUpCisgICAgd2hl
biAiYnRicyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmJ5dGUpCisgICAgd2hl
biAiYnRieiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6IiwgOmJ5dGUpCisgICAgd2hl
biAiYnRibnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6Ynl0ZSkKKyAgICB3
aGVuICJqbXAiCisgICAgICAkYXNtLnB1dHMgImptcCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVy
YW5kKDppbnQpfSIKKyAgICB3aGVuICJiYWRkaW8iLCAiYmFkZHBvIgorICAgICAgaGFuZGxlWDg2
T3BCcmFuY2goImFkZGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJhZGRpcyIsICJiYWRkcHMi
CisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAi
YmFkZGl6IiwgImJhZGRweiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImp6Iiwg
OmludCkKKyAgICB3aGVuICJiYWRkaW56IiwgImJhZGRwbnoiCisgICAgICBoYW5kbGVYODZPcEJy
YW5jaCgiYWRkbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbyIKKyAgICAgIGhhbmRs
ZVg4NlN1YkJyYW5jaCgiam8iLCA6aW50KQorICAgIHdoZW4gImJzdWJpcyIKKyAgICAgIGhhbmRs
ZVg4NlN1YkJyYW5jaCgianMiLCA6aW50KQorICAgIHdoZW4gImJzdWJpeiIKKyAgICAgIGhhbmRs
ZVg4NlN1YkJyYW5jaCgianoiLCA6aW50KQorICAgIHdoZW4gImJzdWJpbnoiCisgICAgICBoYW5k
bGVYODZTdWJCcmFuY2goImpueiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlvIgorICAgICAgaGFu
ZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJibXVsaXMiCisg
ICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJt
dWxpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqeiIsIDppbnQpCisgICAg
d2hlbiAiYm11bGlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbnoiLCA6
aW50KQorICAgIHdoZW4gImJvcmlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJq
byIsIDppbnQpCisgICAgd2hlbiAiYm9yaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3Js
IiwgImpzIiwgOmludCkKKyAgICB3aGVuICJib3JpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNo
KCJvcmwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJvcmlueiIKKyAgICAgIGhhbmRsZVg4Nk9w
QnJhbmNoKCJvcmwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJicmVhayIKKyAgICAgICRhc20u
cHV0cyAiaW50ICQzIgorICAgIHdoZW4gImNhbGwiCisgICAgICAkYXNtLnB1dHMgImNhbGwgI3tv
cGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicmV0IgorICAgICAg
JGFzbS5wdXRzICJyZXQiCisgICAgd2hlbiAiY2llcSIsICJjcGVxIgorICAgICAgaGFuZGxlWDg2
SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQpCisgICAgd2hlbiAiY2luZXEiLCAiY3BuZXEiCisg
ICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRuZSIsIDppbnQpCisgICAgd2hlbiAiY2lh
IiwgImNwYSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGEiLCA6aW50KQorICAg
IHdoZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
YWUiLCA6aW50KQorICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAgICBoYW5kbGVYODZJbnRDb21w
YXJlU2V0KCJzZXRiIiwgOmludCkKKyAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAgIGhh
bmRsZVg4NkludENvbXBhcmVTZXQoInNldGJlIiwgOmludCkKKyAgICB3aGVuICJjaWd0IiwgImNw
Z3QiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRnIiwgOmludCkKKyAgICB3aGVu
ICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0Z2Ui
LCA6aW50KQorICAgIHdoZW4gImNpbHQiLCAiY3BsdCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBh
cmVTZXQoInNldGwiLCA6aW50KQorICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiCisgICAgICBo
YW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisgICAgd2hlbiAidGlvIgorICAg
ICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQpCisgICAgd2hlbiAidGlzIgorICAgICAg
aGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDppbnQpCisgICAgd2hlbiAidGl6IgorICAgICAgaGFu
ZGxlWDg2U2V0VGVzdCgic2V0eiIsIDppbnQpCisgICAgd2hlbiAidGlueiIKKyAgICAgIGhhbmRs
ZVg4NlNldFRlc3QoInNldG56IiwgOmludCkKKyAgICB3aGVuICJ0Ym8iCisgICAgICBoYW5kbGVY
ODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgd2hlbiAidGJzIgorICAgICAgaGFuZGxlWDg2
U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAgIHdoZW4gInRieiIKKyAgICAgIGhhbmRsZVg4NlNl
dFRlc3QoInNldHoiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ym56IgorICAgICAgaGFuZGxlWDg2U2V0
VGVzdCgic2V0bnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJwZWVrIgorICAgICAgJGFzbS5wdXRzICJt
b3ZsICN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fSglZXNwKSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICB3aGVuICJwb2tlIgorICAgICAgJGFzbS5wdXRzICJtb3ZsICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0udmFsdWUgKiA0fSglZXNw
KSIKKyAgICB3aGVuICJjZHFpIgorICAgICAgJGFzbS5wdXRzICJjZHEiCisgICAgd2hlbiAiaWRp
dmkiCisgICAgICAkYXNtLnB1dHMgImlkaXZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgd2hlbiAiZmlpMmQiCisgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIK
KyAgICAgICRhc20ucHV0cyAibW92ZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAl
eG1tNyIKKyAgICAgICRhc20ucHV0cyAicHNsbHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20ucHV0
cyAicG9yICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdo
ZW4gImZkMmlpIgorICAgICAgJGFzbS5wdXRzICJtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNt
LnB1dHMgIm1vdnNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03Igor
ICAgICAgJGFzbS5wdXRzICJwc3JscSAkMzIsICV4bW03IgorICAgICAgJGFzbS5wdXRzICJtb3Zz
ZCAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJibyIK
KyAgICAgICRhc20ucHV0cyAiam8gI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAi
YnMiCisgICAgICAkYXNtLnB1dHMgImpzICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgIHdo
ZW4gImJ6IgorICAgICAgJGFzbS5wdXRzICJqeiAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAg
ICB3aGVuICJibnoiCisgICAgICAkYXNtLnB1dHMgImpueiAje29wZXJhbmRzWzBdLmFzbUxhYmVs
fSIKKyAgICB3aGVuICJsZWFpIiwgImxlYXAiCisgICAgICAkYXNtLnB1dHMgImxlYWwgI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQp
fSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiQmFkIG9wY29kZTogI3tvcGNvZGV9IgorICAgIGVu
ZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisjZGVmaW5lIENv
ZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgJKHJldmlzaW9uIDEwNjQ4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5l
IENvbW1vblNsb3dQYXRoc19oCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgog
I2luY2x1ZGUgIkpTQXJyYXkuaCIKIApAQCAtNDEsNiArNDIsMzggQEAgbmFtZXNwYWNlIEpTQyB7
CiAKIG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMgewogCitBTFdBWVNfSU5MSU5FIEV4ZWNTdGF0
ZSogYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJG
aWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5jdGlvbiogY2Fs
bGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgQVNTRVJUKCFjYWxsZWUtPmlz
SG9zdEZ1bmN0aW9uKCkpOworICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+
anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KCk7CisKKyAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2Fz
ZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KKyAgICBp
ZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhleGVjLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgQVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
IDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworCisgICAgLy8gVG9vIGZldyBhcmd1
bWVudHMgLS0gY29weSBjYWxsIGZyYW1lIGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNz
aW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5lZC4KKyAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOworICAg
IFJlZ2lzdGVyKiBzcmMgPSBleGVjLT5yZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlciogZHN0ID0g
ZXhlYy0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKKworICAgIGludCBpOworICAgIGludCBlbmQgPSAt
RXhlY1N0YXRlOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgIGZv
ciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBzcmNbaV07CisKKyAg
ICBlbmQgLT0gZGVsdGE7CisgICAgZm9yICggOyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3Rb
aV0gPSBqc1VuZGVmaW5lZCgpOworCisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gRXhlY1N0YXRl
OjpjcmVhdGUoZHN0KTsKKyAgICBBU1NFUlQoKHZvaWQqKW5ld0V4ZWMgPD0gcmVnaXN0ZXJGaWxl
LT5lbmQoKSk7CisgICAgcmV0dXJuIG5ld0V4ZWM7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBv
cEluc3RhbmNlT2ZTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBi
YXNlVmFsLCBKU1ZhbHVlIHByb3RvKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNDZWxsKCkgfHwg
IWJhc2VWYWwuaXNDZWxsKCkgfHwgIXByb3RvLmlzQ2VsbCgpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMTA2NDg4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgorI2luY2x1ZGUgIkV4
ZWN1dGlvbkhhcm5lc3MuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVREcml2ZXIu
aCIKICNpbmNsdWRlICJQYXJzZXIuaCIKQEAgLTg0LDcgKzg1LDcgQEAgSW50cmluc2ljIE5hdGl2
ZUV4ZWN1dGFibGU6OmludHJpbnNpYygpIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRpYyB2
b2lkIGpldHRpc29uQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPFQ+
JiBjb2RlQmxvY2spCiB7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpICE9IEpJ
VENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklU
KGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+YWx0ZXJu
YXRpdmUoKSk7CiAgICAgT3duUHRyPFQ+IGNvZGVCbG9ja1RvSmV0dGlzb24gPSBjb2RlQmxvY2su
cmVsZWFzZSgpOwogICAgIGNvZGVCbG9jayA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8VD4oY29kZUJs
b2NrVG9KZXR0aXNvbi0+cmVsZWFzZUFsdGVybmF0aXZlKCkpOwpAQCAtMTY3LDkgKzE2OCwzMCBA
QCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpbWl6CiAgICAgcmV0dXJuIGVy
cm9yOwogfQogCit2b2lkIEV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRl
KGdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6
Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30K
KworaW5saW5lIGNvbnN0IGNoYXIqIHNhbXBsaW5nRGVzY3JpcHRpb24oSklUQ29kZTo6SklUVHlw
ZSBqaXRUeXBlKQoreworICAgIHN3aXRjaCAoaml0VHlwZSkgeworICAgIGNhc2UgSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAgICAgcmV0dXJuICJJbnRlcnByZXRlciBDb21waWxhdGlv
biAoVE9UQUwpIjsKKyAgICBjYXNlIEpJVENvZGU6OkJhc2VsaW5lSklUOgorICAgICAgICByZXR1
cm4gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6REZH
SklUOgorICAgICAgICByZXR1cm4gIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorfQorCiBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVj
U3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklU
VHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5
cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFM
KSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1w
bGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5B
QkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC0yMTAsNyArMjMyLDcgQEAg
SlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYQogICAgIH0KIAogI2lmIEVO
QUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlSWZBcHByb3ByaWF0ZSgqZ2xvYmFsRGF0YSwg
bV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKKyAgICBpZiAoIXBy
ZXBhcmVGb3JFeGVjdXRpb24oKmdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2Rl
Rm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTI5NSw5
ICszMTcsMTUgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlT3B0aQogICAg
IHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxl
SWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZv
ckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCk7Cit9CisKIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUlu
dGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBK
SVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdS
ZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxh
dGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5n
UmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAg
IAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTMzNiw3
ICszNjQsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlCiAgICAg
fQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJpYXRlKCpn
bG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUp
KQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29k
ZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAj
ZW5kaWYKIApAQCAtNDEyLDcgKzQ0MCw3IEBAIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmIKICAgICB3aGlsZSAocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKQogICAgICAgICBy
ZXN1bHQgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KHJlc3VsdC0+YWx0ZXJuYXRp
dmUoKSk7CiAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgQVNTRVJUKHJlc3VsdC0+Z2V0SklUVHlw
ZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNl
bGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CkBAIC00MzgsNiArNDY2LDE4IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBp
bGVPcHQKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpq
aXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCBy
ZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fY29k
ZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0
eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7Cisg
ICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERh
dGEsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0
Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpi
b3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQor
CiBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tXaXRoQnl0
ZWNvZGVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEZ1bmN0aW9uQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcihraW5kKTsKQEAgLTQ4Miw3
ICs1MjIsNyBAQCBQYXNzT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBGdW5jdGlvbkV4CiAKIEpT
T2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0
YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5
cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBl
ID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCki
IDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxp
bmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJM
RShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNTA0LDcgKzU0NCw3IEBAIEpTT2Jq
ZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0g
bV9jb2RlQmxvY2tGb3JDYWxsLT5zaGFyZWRTeW1ib2xUYWJsZSgpOwogCiAjaWYgRU5BQkxFKEpJ
VCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZv
ckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFw
cmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9j
a0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVj
aywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSwgQ29kZUZvckNhbGwpKQogICAgICAgICByZXR1cm4g
MDsKICNlbmRpZgogCkBAIC01MjQsNyArNTY0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y29tcGlsZUZvcgogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxl
Rm9yQ29uc3RydWN0SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2Nv
cGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1Jl
Z2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJh
c2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7
CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihq
aXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5
cGUpOwpAQCAtNTQ2LDcgKzU4Niw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNv
bXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnNo
YXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGls
ZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9y
Q29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdp
dGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVG
dW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ29u
c3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhB
cml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9yQ29uc3RydWN0KSkKICAg
ICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTA2NDg4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAjZGVmaW5lIEV4ZWN1dGFibGVfaAogCiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIKKyNpbmNs
dWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTM5LDEyICs0
MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1Z2dlcjsKICAgICBjbGFzcyBF
dmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNs
YXNzIFNjb3BlQ2hhaW5Ob2RlOwogCiAgICAgc3RydWN0IEV4Y2VwdGlvbkluZm87CiAgICAgCi0g
ICAgZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25z
dHJ1Y3QgfTsKICAgICBlbnVtIENvbXBpbGF0aW9uS2luZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9w
dGltaXppbmdDb21waWxhdGlvbiB9OwogCiAgICAgaW5saW5lIGJvb2wgaXNDYWxsKENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKQEAgLTMxOSw2ICszMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICB9OwogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
YWJsZSB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAg
cHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtMzM4
LDYgKzM0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQog
ICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAg
ICAgdm9pZCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgRXZh
bENvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAtMzg0LDYgKzM4Nyw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBC
YXNlOwogCkBAIC00MTEsNiArNDE1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lm
IEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFs
RGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYK
IAogICAgICAgICBQcm9ncmFtQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC00NTMs
NiArNDU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFi
bGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGlj
OgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNTA4LDYgKzUx
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAg
ICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7CisgICAg
ICAgIHZvaWQgaml0Q29tcGlsZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAg
ICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ2FsbCgpIGNvbnN0CkBAIC01MzUsNiArNTQyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQg
amV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYpOworICAgICAg
ICB2b2lkIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAog
ICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ29uc3RydWN0KCkgY29uc3QKQEAgLTU4Miw2ICs1
OTAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgamV0dGlzb25PcHRpbWl6
ZWRDb2RlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB2b2lkIGppdENvbXBpbGVGb3IoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAgICAgICAgaml0Q29tcGls
ZUZvckNhbGwoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAg
ICAgICAgICBqaXRDb21waWxlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOworICAgICAgICB9CiAj
ZW5kaWYKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3IoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0aW9uSGFybmVzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIEV4ZWN1dGlvbkhhcm5lc3NfaAorI2RlZmluZSBFeGVjdXRpb25IYXJuZXNzX2gKKworI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkpJ
VERyaXZlci5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+CitpbmxpbmUgYm9vbCBwcmVw
YXJlRm9yRXhlY3V0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPENvZGVCbG9j
a1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0
VHlwZSkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVD
b2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGlu
dGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RW50cnlwb2ludChnbG9iYWxEYXRhLCBjb2Rl
QmxvY2suZ2V0KCksIGppdENvZGUpOworICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0
Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorICAgIHJldHVybiBqaXRDb21waWxlSWZBcHBy
b3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdFR5cGUpOworfQorCitp
bmxpbmUgYm9vbCBwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGpp
dENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFy
ZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYg
KEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9m
ZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RnVuY3Rp
b25FbnRyeXBvaW50KGdsb2JhbERhdGEsIGtpbmQsIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlD
aGVjayk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0
aEFyaXR5Q2hlY2spOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShraW5kKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGpp
dENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLCBqaXRD
b2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIHN5bWJvbFRhYmxlLCBqaXRUeXBlKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8g
RXhlY3V0aW9uSGFybmVzc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMDY0ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEy
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmll
cjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBhZG9wdEFycmF5UHRyKG5ldyBXcml0ZUJhcnJp
ZXI8VW5rbm93bj5bcmVnaXN0ZXJBcnJheVNpemVdKTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFVu
a25vd24+KiByZWdpc3RlcnMgPSByZWdpc3RlckFycmF5LmdldCgpICsgcmVnaXN0ZXJPZmZzZXQ7
Ci0KKyAgICAgICAgCiAgICAgICAgIC8vIENvcHkgYWxsIGFyZ3VtZW50cyB0aGF0IGNhbiBiZSBj
YXB0dXJlZCBieSBuYW1lIG9yIGJ5IHRoZSBhcmd1bWVudHMgb2JqZWN0LgogICAgICAgICBmb3Ig
KGludCBpID0gMDsgaSA8IG1fbnVtQ2FwdHVyZWRBcmdzOyArK2kpIHsKICAgICAgICAgICAgIGlu
dCBpbmRleCA9IENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoaSk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAxMDY0ODgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYg
KzI4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNBcnJheTsKKyAgICBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBzdHJ1Y3QgU3BhcnNlQXJyYXlFbnRyeSA6
IHB1YmxpYyBXcml0ZUJhcnJpZXI8VW5rbm93bj4gewogICAgICAgICB0eXBlZGVmIFdyaXRlQmFy
cmllcjxVbmtub3duPiBCYXNlOwpAQCAtMTIyLDYgKzEyMyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgIH07CiAKICAgICBjbGFzcyBKU0FycmF5IDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewor
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmll
bmQgY2xhc3MgV2Fsa2VyOwogCiAgICAgcHJvdGVjdGVkOgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDEwNjQ4OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiwxMCBA
QAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKLSAgICBjbGFz
cyBTdHJ1Y3R1cmU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKKyAgICBj
bGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBlbnVtIEVudW1lcmF0aW9uTW9kZSB7CiAgICAgICAgIEV4
Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsCkBAIC0xNjQsNiArMTY1LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVj
dCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsK
IAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CisgICAgICAgIAogICAgICAgICBjb25zdCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwogICAg
ICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVyZTsKICAgICB9OwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTA2
NDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1
bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEpTQWN0aXZhdGlvbjsKICAgICBjbGFzcyBKU0ds
b2JhbE9iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
TmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBTb3VyY2VDb2RlOwogICAgIG5hbWVzcGFjZSBE
RkcgewpAQCAtMTQwLDYgKzE0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMg
dm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRl
OgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAK
ICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgp
IGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3Rh
dGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJldmlzaW9uIDEwNjQ4OCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MSw2ICsxNDEsOCBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9i
YWxEYXRhVHlwCiAgICAgLCBrZXl3b3JkcyhhZG9wdFB0cihuZXcgS2V5d29yZHModGhpcykpKQog
ICAgICwgaW50ZXJwcmV0ZXIoMCkKICAgICAsIGhlYXAodGhpcywgaGVhcFNpemUpCisgICAgLCBq
c0FycmF5Q2xhc3NJbmZvKCZKU0FycmF5OjpzX2luZm8pCisgICAgLCBqc0ZpbmFsT2JqZWN0Q2xh
c3NJbmZvKCZKU0ZpbmFsT2JqZWN0OjpzX2luZm8pCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAg
LCBzaXplT2ZMYXN0U2NyYXRjaEJ1ZmZlcigwKQogI2VuZGlmCkBAIC0yMTYsNyArMjE4LDcgQEAg
SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgIGppdFN0dWJzID0g
YWRvcHRQdHIobmV3IEpJVFRodW5rcyh0aGlzKSk7CiAjZW5kaWYKIAotICAgIGludGVycHJldGVy
LT5pbml0aWFsaXplKHRoaXMtPmNhblVzZUpJVCgpKTsKKyAgICBpbnRlcnByZXRlci0+aW5pdGlh
bGl6ZSgmbGxpbnREYXRhLCB0aGlzLT5jYW5Vc2VKSVQoKSk7CiAKICAgICBoZWFwLm5vdGlmeUlz
U2FmZVRvQ29sbGVjdCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9uIDEwNjQ4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAs
MTYgQEAKICNkZWZpbmUgSlNHbG9iYWxEYXRhX2gKIAogI2luY2x1ZGUgIkNhY2hlZFRyYW5zY2Vu
ZGVudGFsRnVuY3Rpb24uaCIKLSNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJEYXRl
SW5zdGFuY2VDYWNoZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNs
dWRlICJIZWFwLmgiCi0jaW5jbHVkZSAiU3Ryb25nLmgiCisjaW5jbHVkZSAiSW50cmluc2ljLmgi
CiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
TExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTnVtZXJpY1N0cmluZ3MuaCIKICNpbmNsdWRlICJTbWFs
bFN0cmluZ3MuaCIKKyNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUZXJtaW5hdG9yLmgi
CiAjaW5jbHVkZSAiVGltZW91dENoZWNrZXIuaCIKICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCkBA
IC02NSw2ICs2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0
OwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAgIGNsYXNzIEtleXdvcmRzOworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNs
YXNzIFBhcnNlckFyZW5hOwogICAgIGNsYXNzIFJlZ0V4cENhY2hlOwpAQCAtMjQxLDYgKzI0Mywx
MiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSGVhcCBoZWFwOwogCiAgICAgICAgIEpTVmFs
dWUgZXhjZXB0aW9uOworCisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QganNBcnJheUNs
YXNzSW5mbzsKKyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0ZpbmFsT2JqZWN0Q2xh
c3NJbmZvOworCisgICAgICAgIExMSW50OjpEYXRhIGxsaW50RGF0YTsKKwogI2lmIEVOQUJMRShK
SVQpCiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIgZXhjZXB0aW9uTG9jYXRpb247CiAgICAgICAg
IEpTVmFsdWUgaG9zdENhbGxSZXR1cm5WYWx1ZTsKQEAgLTM0Niw2ICszNTQsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICN1bmRlZiByZWdpc3RlclR5cGVkQXJyYXlGdW5jdGlvbgogCiAgICAgcHJpdmF0
ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAg
CiAgICAgICAgIEpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBI
ZWFwU2l6ZSk7CiAgICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEqJiBzaGFyZWRJbnN0YW5jZUlu
dGVybmFsKCk7CiAgICAgICAgIHZvaWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24g
MTA2NDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xh
c3MgR2xvYmFsQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxv
Y2s7CiAgICAgY2xhc3MgUmVnRXhwQ29uc3RydWN0b3I7CkBAIC0zMzUsNiArMzM2LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkU3RhdGljR2xv
YmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBpbnQgY291bnQpOwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIC8vIEZJWE1FOiBGb2xkIHJlc2V0IGludG8gaW5pdC4KICAgICAgICAgSlNfRVhQT1JUX1BS
SVZBVEUgdm9pZCBpbml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpOwogICAgICAgICB2b2lkIHJlc2V0
KEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAkocmV2aXNpb24gMTA2NDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgSGFzaEVudHJ5Owog
ICAgIGNsYXNzIEludGVybmFsRnVuY3Rpb247CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRv
cjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKQEAgLTI3MCw2ICsyNzEsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgSlNPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwg
UHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3JhZ2UpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8v
IE5vYm9keSBzaG91bGQgZXZlciBhc2sgYW55IG9mIHRoZXNlIHF1ZXN0aW9ucyBvbiBzb21ldGhp
bmcgYWxyZWFkeSBrbm93biB0byBiZSBhIEpTT2JqZWN0LgogICAgICAgICB1c2luZyBKU0NlbGw6
OmlzQVBJVmFsdWVXcmFwcGVyOwogICAgICAgICB1c2luZyBKU0NlbGw6OmlzR2V0dGVyU2V0dGVy
OwpAQCAtMzgyLDYgKzM4NSw4IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGlu
ZVN0b3IKICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHByaXZh
dGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAg
IAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERh
dGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQogICAgICAgICB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci5oCShyZXZpc2lvbiAxMDY0ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJZGVudGlmaWVyOwogICAgIGNsYXNzIEpTT2Jq
ZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNz
IEpJVDsKQEAgLTk2LDYgKzk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgICAgIAogICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3Bl
cnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVh
YmxlU2xvdCk7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRTdHJ1
Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJl
dmlzaW9uIDEwNjQ4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5n
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgY2xhc3MgSlNTdHJpbmc7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAg
ICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7CiAgICAgSlNTdHJpbmcq
IGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKik7CkBAIC0yNDAsNiArMjQxLDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZp
c2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJl
c29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xv
d0Nhc2U4KExDaGFyKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZShV
Q2hhciopIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
SW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZUluZm8uaAkocmV2aXNpb24gMTA2NDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxOyAvLyBXZWJDb3Jl
IHVzZXMgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCB0byBtYWtlIGRvY3VtZW50LmFsbCB1bmRldGVj
dGFibGUuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEltcGxlbWVudHNIYXNJbnN0YW5jZSA9
IDEgPDwgMTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJpZGVzSGFzSW5zdGFuY2Ug
PSAxIDw8IDI7CkBAIC04Nyw2ICs4OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAK
ICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworICAgICAgICAKICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MxKHVuc2lnbmVkIGZsYWcpIGNv
bnN0IHsgQVNTRVJUKGZsYWcgPD0gKDEgPDwgNykpOyByZXR1cm4gbV9mbGFncyAmIGZsYWc7IH0K
ICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MyKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJU
KGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1cm4gbV9mbGFnczIgJiAoZmxhZyA+PiA4KTsgfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24g
MTA2NDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTExNiwxMCArMTE2LDkgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRo
ZXNpemVQcm90b3R5cGUoRQogICAgIHJldHVybiBKU05vdEFuT2JqZWN0OjpjcmVhdGUoZXhlYyk7
CiB9CiAKLSNpZm5kZWYgTkRFQlVHCiBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiB7Ci0g
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0gNjQ7CisgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBzaXplID0gMTI4OwogICAgIHN0YXRpYyBjaGFyIGRlc2NyaXB0aW9uW3NpemVdOwogCiAgICAg
aWYgKCEqdGhpcykKQEAgLTEyOCwxNCArMTI3LDE0IEBAIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0
aW9uKCkKICAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJJbnQzMjogJWQiLCBh
c0ludDMyKCkpOwogICAgIGVsc2UgaWYgKGlzRG91YmxlKCkpIHsKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlbHgi
LCBhc0RvdWJsZSgpLCByZWludGVycHJldERvdWJsZVRvSW50cHRyKGFzRG91YmxlKCkpKTsKKyAg
ICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVseCwgJWxmIiwgcmVp
bnRlcnByZXREb3VibGVUb0ludHB0cihhc0RvdWJsZSgpKSwgYXNEb3VibGUoKSk7CiAjZWxzZQog
ICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBkb3VibGUgYXNEb3VibGU7CiAgICAgICAgICAg
ICB1aW50MzJfdCBhc1R3b0ludDMyc1syXTsKICAgICAgICAgfSB1OwogICAgICAgICB1LmFzRG91
YmxlID0gYXNEb3VibGUoKTsKLSAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJE
b3VibGU6ICVsZiwgJTA4eDolMDh4IiwgYXNEb3VibGUoKSwgdS5hc1R3b0ludDMyc1sxXSwgdS5h
c1R3b0ludDMyc1swXSk7CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91
YmxlOiAlMDh4OiUwOHgsICVsZiIsIHUuYXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0s
IGFzRG91YmxlKCkpOwogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChpc0NlbGwoKSkKICAgICAgICAg
c25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJDZWxsOiAlcCIsIGFzQ2VsbCgpKTsKQEAgLTE1
Miw3ICsxNTEsNiBAQCBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiAKICAgICByZXR1cm4g
ZGVzY3JpcHRpb247CiB9Ci0jZW5kaWYKIAogLy8gVGhpcyBpbiB0aGUgVG9JbnQzMiBvcGVyYXRp
b24gaXMgZGVmaW5lZCBpbiBzZWN0aW9uIDkuNSBvZiB0aGUgRUNNQS0yNjIgc3BlYy4KIC8vIE5v
dGUgdGhhdCB0aGlzIG9wZXJhdGlvbiBpcyBpZGVudGljYWwgdG8gVG9VSW50MzIgb3RoZXIgdGhh
biB0byBpbnRlcnByZXRhdGlvbgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VmFsdWUuaAkocmV2aXNpb24gMTA2NDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzIsOSArMjMyLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIEpTQ2VsbCogYXNDZWxsKCkgY29uc3Q7CiAgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIGJvb2wgaXNWYWxpZENhbGxlZSgpOwogCi0jaWZuZGVmIE5ERUJVRwogICAgICAg
ICBjaGFyKiBkZXNjcmlwdGlvbigpOwotI2VuZGlmCiAKICAgICBwcml2YXRlOgogICAgICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVD4gSlNWYWx1ZShXcml0ZUJhcnJpZXJCYXNlPFQ+KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJl
dmlzaW9uIDEwNjQ4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFi
bGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEyIEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFJl
Z2lzdGVyOwogCiAgICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBK
U05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTA2NDg4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDEwIEBAIHVu
c2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGkKIAogdW5zaWduZWQgbWF4aW11
bUlubGluaW5nRGVwdGg7CiAKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0
ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1l
U29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogaW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkBAIC0xMzcs
NiArMTQxLDEwIEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIAogICAgIFNFVChtYXhp
bXVtSW5saW5pbmdEZXB0aCwgNSk7CiAKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
SklUQWZ0ZXJXYXJtVXAsICAgICAtMTAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yRG9udEpJVEFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4o
KSk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb24sICAgICAgICAgICAg
LTEwMCk7CisKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldh
cm1VcCwgICAgIC0xMDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1p
emVBZnRlckxvbmdXYXJtVXAsIC01MDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yRG9udE9wdGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1pbigpKTsKQEAgLTE4NSw2ICsxOTMsOCBAQCB2b2lkIGluaXRpYWxpemVPcHRpb25zKCkKICAg
ICBpZiAoY3B1c1RvVXNlIDwgMSkKICAgICAgICAgY3B1c1RvVXNlID0gMTsKICAgICAKKyAgICBj
cHVzVG9Vc2UgPSAxOworICAgIAogICAgIFNFVChudW1iZXJPZkdDTWFya2VycywgY3B1c1RvVXNl
KTsKIAogICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0
aW1lU29vbiA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1V
cCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lv
biAxMDY0ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEwIEBAIGV4dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVu
Y3Rpb25Gb3JDb25zdHIKIAogZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOyAv
LyBEZXB0aCBvZiBpbmxpbmUgc3RhY2ssIHNvIDEgPSBubyBpbmxpbmluZywgMiA9IG9uZSBsZXZl
bCwgZXRjLgogCitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRl
cldhcm1VcDsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRB
bnl0aW1lU29vbjsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNv
b247CisKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0
ZXJXYXJtVXA7CiBleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6
ZUFmdGVyTG9uZ1dhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gMTA2NDg4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9yOwogICAgIGNsYXNzIFNs
b3RWaXNpdG9yOwogICAgIApAQCAtOTEsNiArOTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHBy
aXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
ICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24gMTA2NDg4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIy
LDcgKzMyMiw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAg
ICAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAg
ICAgICByZXR1cm4gdHJhbnNpdGlvbjsKICAgICB9Ci0KKyAgICAKICAgICBTdHJ1Y3R1cmUqIHRy
YW5zaXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAogICAgIHRyYW5zaXRp
b24tPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uc2V0TWF5QmVOdWxsKGdsb2JhbERhdGEsIHRyYW5z
aXRpb24sIHN0cnVjdHVyZS0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTA2NDg4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CiAgICAg
Y2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOwpA
QCAtMTk2LDYgKzE5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQ
T1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyopOwog
ICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIFN0cnVjdHVyZShKU0ds
b2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMTA2NDg4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBjbGFzcyBTdHJ1
Y3R1cmVDaGFpbiA6IHB1YmxpYyBKU0NlbGwgewpAQCAtNzQsNiArNzUsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZUNoYWluKEpT
R2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOwogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiA+IG1f
dmVjdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9JbmxpbmVBU00uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0lubGluZUFTTS5oCShyZXZpc2lv
biAxMDY0ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0lubGluZUFTTS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MCw0ICs3MCwxMSBAQAogI2RlZmluZSBISURFX1NZTUJPTChuYW1lKQog
I2VuZGlmCiAKKy8vIEZJWE1FOiBmaWd1cmUgb3V0IGhvdyB0aGlzIHdvcmtzIG9uIGFsbCB0aGUg
cGxhdGZvcm1zLiBJIGtub3cgdGhhdAorLy8gb24gTGludXgsIHRoZSBwcmVmZXJyZWQgZm9ybSBp
cyAiLkxzdHVmZiIgYXMgb3Bwb3NlZCB0byAiTHN0dWZmIi4KKy8vIERvbid0IGtub3cgYWJvdXQg
YW55IG9mIHRoZSBvdGhlcnMuCisjaWYgUExBVEZPUk0oTUFDKQorI2RlZmluZSBMT0NBTF9MQUJF
TF9TVFJJTkcobmFtZSkgIkwiICNuYW1lCisjZW5kaWYKKwogI2VuZGlmIC8vIElubGluZUFTTV9o
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAxMDY0ODgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTkyMyw2ICs5MjMsMTggQEAKICNkZWZpbmUgRU5BQkxFX0pJVCAxCiAjZW5kaWYKIAorLyog
T24gc29tZSBvZiB0aGUgcGxhdGZvcm1zIHdoZXJlIHdlIGhhdmUgYSBKSVQsIHdlIHdhbnQgdG8g
YWxzbyBoYXZlIHRoZSAKKyAgIGxvdy1sZXZlbCBpbnRlcnByZXRlci4gKi8KKyNpZiAhZGVmaW5l
ZChFTkFCTEVfTExJTlQpICYmIEVOQUJMRShKSVQpICYmIE9TKERBUldJTikgJiYgKENQVShYODYp
IHx8IENQVShBUk1fVEhVTUIyKSkgJiYgVVNFKEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgRU5BQkxF
X0xMSU5UIDEKKyNlbmRpZgorCisvKiBJZiB3ZSBoYXZlIExMSW50IGVuYWJsZWQgYW5kIHRoZSBK
SVQgZW5hYmxlZCwgd2UgYWxzbyBlbmFibGUgT1NSaW5nIGZyb20KKyAgIExMSW50IHRvIHRoZSBK
SVQuICovCisjaWYgIWRlZmluZWQoRU5BQkxFX0xMSU5UX09TUl9UT19KSVQpICYmIEVOQUJMRShK
SVQpICYmIEVOQUJMRShMTElOVCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UX09TUl9UT19KSVQgMQor
I2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfREZHX0pJVCkgJiYgRU5BQkxFKEpJVCkKIC8q
IEVuYWJsZSB0aGUgREZHIEpJVCBvbiBYODYgYW5kIFg4Nl82NC4gIE9ubHkgdGVzdGVkIG9uIE1h
YyBhbmQgR05VL0xpbnV4LiAqLwogI2lmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSkgJiYgKFBM
QVRGT1JNKE1BQykgfHwgT1MoTElOVVgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9TZW50aW5lbExpbmtlZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCShyZXZpc2lvbiAxMDY0ODgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Niw2ICs4Niw4IEBAIHB1YmxpYzoKIAogICAgIGl0ZXJhdG9yIGJlZ2luKCk7CiAgICAgaXRl
cmF0b3IgZW5kKCk7CisgICAgCisgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gYmVnaW4oKSA9
PSBlbmQoKTsgfQogCiBwcml2YXRlOgogICAgIFJhd05vZGUgbV9oZWFkU2VudGluZWw7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9u
IDEwNjQ4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19D
RlN0cmluZyAqIENGU3RyaQogLy8gTGFuZGluZyB0aGUgZmlsZSBtb3ZlcyBpbiBvbmUgcGF0Y2gs
IHdpbGwgZm9sbG93IG9uIHdpdGggcGF0Y2hlcyB0byBjaGFuZ2UgdGhlIG5hbWVzcGFjZXMuCiBu
YW1lc3BhY2UgSlNDIHsKIHN0cnVjdCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5zbGF0b3I7CitjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElk
ZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjsKIHN0cnVjdCBJZGVudGlmaWVyTENoYXJGcm9t
VUNoYXJUcmFuc2xhdG9yOwogfQpAQCAtNzIsNyArNzMsOCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsK
ICAgICBmcmllbmQgc3RydWN0IFdURjo6U3Vic3RyaW5nVHJhbnNsYXRvcjsKICAgICBmcmllbmQg
c3RydWN0IFdURjo6VUNoYXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBjbGFzcyBBdG9t
aWNTdHJpbmdJbXBsOwotCisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFj
dG9yOworICAgIAogcHJpdmF0ZToKICAgICBlbnVtIEJ1ZmZlck93bmVyc2hpcCB7CiAgICAgICAg
IEJ1ZmZlckludGVybmFsLApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NDg4KQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTItMDEtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mg
c2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3OTY5
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFu
Z2VkIEVGTCdzIGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9yeSBpbiBKYXZh
U2NyaXB0Q29yZS4KKyAgICAgICAgCisgICAgICAgIE5vIG5ldyB0ZXN0cyBiZWNhdXNlIG5vIGJl
aGF2aW9yIGNoYW5nZWQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxMi0wMi0w
MSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBDcmFzaCBpbiBF
dmVudEhhbmRsZXI6OnVwZGF0ZURyYWdBbmREcm9wCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAko
cmV2aXNpb24gMTA2NDg4KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklF
UwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVNDUklQ
VENPUkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIK
KyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpJbmRleDogU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEw
NjQ4OCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTUgQEAKKzIwMTItMDEtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVj
dG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4KKyAgICAgICAgCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisKIDIwMTItMDEtMTEgIEphY2t5IEppYW5nICA8emhhamlhbmdAcmltLmNvbT4KIAogICAg
ICAgICBbQmxhY2tCZXJyeV0gQVNTRVJUIGZhaWx1cmUgaW4gQmFja2luZ1N0b3JlUHJpdmF0ZTo6
YmxpdFZpc2libGVDb250ZW50cygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEw
NjQ4OCkKKysrIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTQ0LDYgKzQ0LDcgQEAgU0VUKFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFW
QVNDUklQVENPUkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2lu
dGVycHJldGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIi
CiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L3J1bnRpbWUiCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDY0ODgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0yNyAgRmlsaXAgUGl6bG8gIDxm
cGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBW
TQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRv
IGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3JpcHRDb3JlLgorCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAyLTAxICBEaXJrIFBy
YW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRlc3RXZWJLaXRBUEkgaXNu
J3QgYmVpbmcgYnVpbHQgb24gY2hyb21pdW0gYm90cyBhbnkgbW9yZQpJbmRleDogVG9vbHMvRHVt
cFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA2NDg4KQorKysgVG9vbHMv
RHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02OCwx
MCArNjgsMTIgQEAgU0VUKER1bXBSZW5kZXJUcmVlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vQVBJCiAgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2Fzc2VtYmxlcgorICAgICR7SkFWQVNDUklQVENPUkVfRElS
fS9ieXRlY29kZQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9kZmcKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vaGVhcAogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnRlcnByZXRlcgog
ICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
bGxpbnQKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZQogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9Gb3J3YXJkaW5nSGVhZGVycwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS93
dGYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125085</attachid>
            <date>2012-02-01 23:55:37 -0800</date>
            <delta_ts>2012-02-02 00:37:31 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_87.diff</filename>
            <type>text/plain</type>
            <size>507510</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NTM1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0MiBA
QAorMjAxMi0wMi0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcsIERG
RyBJUiBkdW1waW5nLAorICAgICAgICBhbmQgSlNWYWx1ZSBkdW1waW5nIHdvcmsgaW4gcmVsZWFz
ZSBidWlsZHMsIHNpbmNlIGRlYnVnZ2luZyBzb21lIG9mIHRoZQorICAgICAgICBuYXN0aWVyIGFz
cGVjdHMgb2YgdGhpcyBwYXRjaCB3b3VsZCBoYXZlIGJlZW4gaW1wb3NzaWJsZSB3aXRob3V0IHRo
YXQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5h
bToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnByaToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52c3Byb3BzOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZpbGVzLmNtZDoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRhcmdldC5wcmk6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIu
aDoKKyAgICAgICAgKEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyOjpkZWJ1Z09mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVyL0Fz
c2VtYmxlckJ1ZmZlci5oOgorICAgICAgICAoQXNzZW1ibGVyQnVmZmVyKToKKyAgICAgICAgKEpT
Qzo6QXNzZW1ibGVyQnVmZmVyOjpkZWJ1Z09mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVyL0xp
bmtCdWZmZXIuaDoKKyAgICAgICAgKExpbmtCdWZmZXIpOgorICAgICAgICAoSlNDOjpMaW5rQnVm
ZmVyOjpkZWJ1Z1NpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVS
ZWYuaDoKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyQ29kZVB0cik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChYODZBc3NlbWJsZXIpOgor
ICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmRlYnVnT2Zmc2V0KToKKyAgICAgICAgKFg4Nklu
c3RydWN0aW9uRm9ybWF0dGVyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0
cnVjdGlvbkZvcm1hdHRlcjo6ZGVidWdPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlQ29udmVudGlvbnMuaDogQWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZv
cik6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6
Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9w
ZXJhdG9yISk6CisgICAgICAgIChDYWxsTGlua1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlW
aXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0Nh
bGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlBy
b2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6
amV0dGlzb24pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24pOgor
ICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbCk6CisgICAgICAg
IChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiYXNlbGluZVZlcnNpb24pOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmxpbmtJbmNvbWluZ0NhbGwpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRDb21waWxlKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjphZGRMTEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6YWRkR2xvYmFsUmVzb2x2ZUluZm8pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
Om51bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZvcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6Y291bGRUYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRv
VGFrZVNwZWNpYWxGYXN0Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9U
YWtlRGVlcGVzdFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rh
a2VBbnlTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkRnJlcXVlbnRFeGl0
U2l0ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZG9udEpJVEFueXRpbWVTb29uKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6aml0U29vbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGxpbnRFeGVjdXRl
Q291bnRlcik6CisgICAgICAgIChQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKEV2YWxDb2Rl
QmxvY2spOgorICAgICAgICAoRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVPcmlnaW4uaDoKKyAgICAgICAgKENvZGVPcmlnaW4pOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6Q29kZU9yaWdpbjo6aW5saW5lU3RhY2spOgorICAgICAgICAqIGJ5dGVjb2Rl
L0RGR0V4aXRQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkRGRzo6ZXhpdEtpbmRUb1N0cmluZyk6
CisgICAgICAgICogYnl0ZWNvZGUvRGF0YUZvcm1hdC5oOgorICAgICAgICAoSlNDOjpkYXRhRm9y
bWF0VG9TdHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAg
ICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAq
IGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6
R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6Ondhc1NlZW5JbkpJ
VCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVj
dGlvbi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246Okluc3Ry
dWN0aW9uKToKKyAgICAgICAgKEluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9MTElu
dENhbGxMaW5rSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkxM
SW50Q2FsbExpbmtJbmZvOjpMTEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChMTEludENhbGxM
aW5rSW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjp+TExJbnRDYWxsTGlu
a0luZm8pOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6aXNMaW5rZWQpOgorICAg
ICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6dW5saW5rKToKKyAgICAgICAgKiBieXRlY29k
ZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZENhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgorICAgICAgICAqIGJ5dGVj
b2RlL1ByZWRpY3RlZFR5cGUuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6cHJl
ZGljdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmg6Cisg
ICAgICAgIChKU0MpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAg
ICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAq
IGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKFB1dEJ5SWRTdGF0dXMpOgorICAg
ICAgICAqIGJ5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaDoKKyAgICAgICAgKFZhbHVlUmVjb3Zlcnkp
OgorICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5OjpkdW1wKToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFJlc29sdmVXaXRoQmFzZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0R2V0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJ
ZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0VmFs
dWUuaDoKKyAgICAgICAgKFN0cnVjdHVyZUFic3RyYWN0VmFsdWUpOgorICAgICAgICAoSlNDOjpE
Rkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmR1bXApOgorICAgICAgICAoQWJzdHJhY3RWYWx1
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6ZHVtcCk6CisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RG
R0ZQUkluZm8uaDoKKyAgICAgICAgKEZQUkluZm8pOgorICAgICAgICAoSlNDOjpERkc6OkZQUklu
Zm86OmRlYnVnTmFtZSk6CisgICAgICAgICogZGZnL0RGR0dQUkluZm8uaDoKKyAgICAgICAgKEdQ
UkluZm8pOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAg
ICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR0dy
YXBoLmg6CisgICAgICAgIChHcmFwaCk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAg
ICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6YXJpdGhOb2RlRmxhZ3NBc1N0cmluZyk6Cisg
ICAgICAgIChOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNJZGVudGlmaWVyKToK
KyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChERkcpOgorICAgICAgICAo
SlNDOjpERkc6Ok9TUkV4aXQ6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6Cisg
ICAgICAgIChPU1JFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaGVhcC9IZWFwLmNw
cDoKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgICogaGVhcC9IZWFwLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3Rh
Y2suY3BwOgorICAgICAgICAoSlNDOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01h
cmtlZFNwYWNlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAg
ICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAg
ICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0
ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxp
emUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZl
TGFzdENhbGxlcik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChJbnRlcnByZXRlcik6CisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjpnZXRPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQp
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZW5hYmxlZCk6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvUmVnaXN0ZXJGaWxlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoUmVnaXN0ZXJG
aWxlKToKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVj
U3RhdGUpOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJuVmFsdWUp
OgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJ
VENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKToKKyAgICAg
ICAgKEpJVENvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZSk6Cisg
ICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAgICAgICAqIGppdC9KSVREcml2ZXIu
aDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUpOgorICAgICAgICAoSlND
OjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKiBqaXQvSklURXhj
ZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93KToKKyAgICAgICAgKiBqaXQvSklU
U3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAg
IChKU0MpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAqIGxsaW50
OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAgICAg
KiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6fkRh
dGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChMTEludCk6CisgICAgICAgIChEYXRhKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRh
OjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZ1bmN0aW9uRW50
cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFdmFsRW50cnlwb2ludCk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAgICogbGxpbnQv
TExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTElu
dCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGlu
dC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxlcik6CisgICAgICAgIChKU0M6OkxM
SW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgor
ICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmNwcDogQWRk
ZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9v
cGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpzaG91bGRKSVQp
OgorICAgICAgICAoSlNDOjpMTEludDo6ZW50cnlPU1IpOgorICAgICAgICAoSlNDOjpMTEludDo6
cmVzb2x2ZUdsb2JhbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRCeVZhbCk6CisgICAgICAg
IChKU0M6OkxMSW50OjpoYW5kbGVIb3N0Q2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRV
cENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJpY0NhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50SGVscGVycy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTElu
dCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6IEFkZGVkLgorICAg
ICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDKToKKyAgICAgICAgKExMSW50T2Zmc2V0c0V4dHJhY3Rvcik6CisgICAgICAgIChKU0M6OkxM
SW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAgICAobWFpbik6CisgICAgICAgICog
bGxpbnQvTExJbnRUaHVua3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OmZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpM
TEludDo6ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpldmFsRW50cnlUaHVua0dlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkxMSW50Ojpwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAg
ICAgICogbGxpbnQvTExJbnRUaHVua3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAg
ICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRl
ZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDogQWRkZWQuCisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBvZmZs
aW5lYXNtOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBBZGRlZC4KKyAg
ICAgICAgKiBvZmZsaW5lYXNtL2FzbS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9h
c3QucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6IEFkZGVkLgor
ICAgICAgICAqIG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYjogQWRkZWQu
CisgICAgICAgICogb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vb2Zmc2V0cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9v
cHQucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAg
ICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGlu
ZWFzbS9zZWxmX2hhc2gucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2V0dGluZ3Mu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBBZGRlZC4KKyAg
ICAgICAgKiBvZmZsaW5lYXNtL3g4Ni5yYjogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBy
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6
OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAoQ29tbW9uU2xvd1BhdGhzKToKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9jayk6
CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6OnNhbXBsaW5nRGVzY3JpcHRpb24pOgorICAgICAgICAoSlNDOjpF
dmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4
ZWN1dGFibGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6
Y29tcGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpiYXNl
bGluZUNvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0
Q29tcGlsZUZvckNhbGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENv
bXBpbGVGb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNv
bXBpbGVGb3JDYWxsSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6
OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRh
YmxlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoRXZhbEV4ZWN1dGFibGUpOgorICAgICAg
ICAoUHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAg
KiBydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAg
ICAgICAoSlNDOjpwcmVwYXJlRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1
bmN0aW9uRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgor
ICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnRlYXJPZmYpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBcnJheS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQXJyYXkpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDZWxsKToKKyAg
ICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChK
U0Z1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsRGF0YS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsRGF0YSk6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoSlNPYmplY3QpOgorICAgICAgICAoSlNGaW5hbE9iamVjdCk6
CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgICogcnVudGlt
ZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTU3RyaW5nKToKKyAgICAg
ICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChUeXBl
SW5mbyk6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pT
VmFsdWUuaDoKKyAgICAgICAgKEpTVmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJs
ZU9iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTVmFyaWFibGVPYmplY3QpOgor
ICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChPcHRpb25zKToKKyAgICAg
ICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUv
T3B0aW9ucy5oOgorICAgICAgICAoT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9TY29wZUNo
YWluLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU2NvcGVDaGFpbk5vZGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQ
cm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3RydWN0dXJlQ2hhaW4pOgor
ICAgICAgICAqIHd0Zi9CaXRWZWN0b3IuY3BwOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdU
Rjo6Qml0VmVjdG9yOjpkdW1wKToKKyAgICAgICAgKiB3dGYvQml0VmVjdG9yLmg6CisgICAgICAg
IChCaXRWZWN0b3IpOgorICAgICAgICAqIHd0Zi9JbmxpbmVBU00uaDoKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg6CisgICAgICAg
IChTZW50aW5lbExpbmtlZExpc3QpOgorICAgICAgICAoV1RGOjpTZW50aW5lbExpbmtlZExpc3Q6
OmlzRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChTdHJpbmdJbXBsKToKKwogMjAxMi0wMi0wMSAgTWljaGFlbCBTYWJvZmYg
IDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBZYXJyIGNyYXNoIHdpdGggcmVnZXhwIHJl
cGxhY2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEw
NjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTEsNiArMTEsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2pp
dCIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpAQCAtOTUsNiArOTYsNyBAQCBTRVQo
SmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5jcHAK
IAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorICAgIGppdC9Ib3N0Q2FsbFJldHVy
blZhbHVlLmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCiAgICAgaml0L0pJVEFy
aXRobWV0aWMuY3BwCiAgICAgaml0L0pJVENhbGwzMl82NC5jcHAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBq
YXZhc2NyaXB0Y29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0IFwKKwktSSQoc3Jj
ZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlz
aW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIFwKQEAgLTEwMiw2ICsxMDMsNyBAQCBqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaCBcCisJU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5lSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5oIFwKQEAgLTI3Nyw2ICsyNzksOCBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NvbXBhY3RKSVRDb2RlTWFwLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvci5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJu
VmFsdWUuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFs
dWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgXApAQCAtMzAwLDYgKzMwNCw3
IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL29zLXdpbjMyL3N0ZGJvb2wuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL29zLXdpbjMyL3N0ZGludC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaCBcCkBAIC0zNTAsNiArMzU1LDcgQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuY3BwIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oIFwKQEAgLTM3OCw2ICszODQsNyBAQCBqYXZhc2NyaXB0
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25IZWxwZXJzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggXAorCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIFwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQkocmV2aXNpb24gMTA2NTI4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQkod29ya2luZyBjb3B5
KQpAQCAtMjAsNiArMjAsNyBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL2Rl
YnVnZ2VyIFwKICAgICAkJFNPVVJDRV9ESVIvaW50ZXJwcmV0ZXIgXAogICAgICQkU09VUkNFX0RJ
Ui9qaXQgXAorICAgICQkU09VUkNFX0RJUi9sbGludCBcCiAgICAgJCRTT1VSQ0VfRElSL3BhcnNl
ciBcCiAgICAgJCRTT1VSQ0VfRElSL3Byb2ZpbGVyIFwKICAgICAkJFNPVVJDRV9ESVIvcnVudGlt
ZSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTA2NTI4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2
ICsxMDYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3Bw
IFwKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCBcCiAgICAgaml0
L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5j
cHAgXAogICAgIGppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAgICAgaml0L0pJVEFyaXRobWV0aWMz
Ml82NC5jcHAgXAogICAgIGppdC9KSVRDYWxsLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24g
MTA2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3
NTgsNiArMTc1OCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlwuLlxqaXRcSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGppdFxKSVQuY3BwIgogCQkJ
CT4KIAkJCTwvRmlsZT4KQEAgLTE4NDMsNiArMTg0NywxNCBAQAogCQkJPC9GaWxlPgogCQk8L0Zp
bHRlcj4KIAkJPEZpbHRlcgorCQkJTmFtZT0ibGxpbnQiCisJCQk+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cLi5cbGxpbnRcTExJbnREYXRhLmgiCisJCQkJPgorCQkJPC9GaWxlPgor
CQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgogCQkJTmFtZT0iaW50ZXJwcmV0ZXIiCiAJCQk+CiAJCQk8
RmlsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52c3Byb3BzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwkocmV2aXNpb24gMTA2NTI4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZUNvbW1vbi52c3Byb3BzCSh3b3JraW5nIGNvcHkpCkBAIC02LDcgKzYsNyBA
QAogCT4KIAk8VG9vbAogCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQlBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPSImcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXEphdmFT
Y3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXCZxdW90OzsuLi8uLi87Li4vLi4vQVBJLzsuLi8uLi9w
YXJzZXIvOy4uLy4uL2J5dGVjb21waWxlci87Li4vLi4vZGZnLzsuLi8uLi9qaXQvOy4uLy4uL3J1
bnRpbWUvOy4uLy4uL3Rvb2xzLzsuLi8uLi9ieXRlY29kZS87Li4vLi4vaW50ZXJwcmV0ZXIvOy4u
Ly4uL3d0Zi87Li4vLi4vcHJvZmlsZXI7Li4vLi4vYXNzZW1ibGVyLzsuLi8uLi9kZWJ1Z2dlci87
Li4vLi4vaGVhcC87JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1
b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVz
RGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7IgorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPSImcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXEphdmFTY3JpcHRDb3JlXERl
cml2ZWRTb3VyY2VzXCZxdW90OzsuLi8uLi87Li4vLi4vQVBJLzsuLi8uLi9wYXJzZXIvOy4uLy4u
L2J5dGVjb21waWxlci87Li4vLi4vZGZnLzsuLi8uLi9qaXQvOy4uLy4uL2xsaW50LzsuLi8uLi9y
dW50aW1lLzsuLi8uLi90b29scy87Li4vLi4vYnl0ZWNvZGUvOy4uLy4uL2ludGVycHJldGVyLzsu
Li8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fzc2VtYmxlci87Li4vLi4vZGVidWdnZXIv
Oy4uLy4uL2hlYXAvOyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlJnF1b3Q7OyZx
dW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmll
c0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OyIKIAkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9
Il9fU1REX0MiCiAJCUZvcmNlZEluY2x1ZGVGaWxlcz0iSUNVVmVyc2lvbi5oIgogCS8+CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL2NvcHktZmlsZXMuY21kCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQJKHJldmlz
aW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYg
KzQzLDcgQEAgZm9yICUlZCBpbiAoCiAgICAgZGVidWdnZXIKICAgICBpbnRlcnByZXRlcgogICAg
IGppdAorICAgIGxsaW50CiAgICAgcGFyc2VyCiAgICAgcHJvZmlsZXIKICAgICBydW50aW1lCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA2NTI4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxNSBAQAogCW9iamVjdHMgPSB7CiAKIC8qIEJl
Z2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCisJCTBGNDY4MEE5MTRCQTdGRDkwMEJG
RTI3MiAvKiBMTEludCBPZmZzZXRzICovID0geworCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0
OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQg
T2Zmc2V0cyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODBBQTE0QkE3RkQ5MDBC
RkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAorCQkJKTsKKwkJCW5hbWUgPSAi
TExJbnQgT2Zmc2V0cyI7CisJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOworCQl9
OwogCQk2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewog
CQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9
IDY1RkIzRjc3MDlEMTFFQkQwMEY0OURFQiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVyaXZlZCBTb3VyY2VzIiAqLzsKQEAgLTE0LDYgKzIzLDkg
QEAKIAkJCQk2NUZCM0Y2NTA5RDExRTkxMDBGNDlERUIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3Vy
Y2VzICovLAogCQkJCTVEMzVERUUxMEM3QzE0MEIwMDg2NDhCMiAvKiBHZW5lcmF0ZSBEVHJhY2Ug
aGVhZGVyICovLAogCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2ODBCNDE0QkE4
MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CiAJCQluYW1lID0g
IkRlcml2ZWQgU291cmNlcyI7CiAJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwog
CQl9OwpAQCAtNDgsNiArNjAsMTAgQEAKIAkJMEJBQzk0QTAxMzM4NzI4NDAwQ0YxMzVCIC8qIFRo
cmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmlj
dGlvblZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEJDRDgzNTcxNDg1ODQ1MjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJDRDgzNTQxNDg1
ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBT
aXplTGltaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLzsgfTsKKwkJ
MEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTUxNEJDRjQ1QTAw
ODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovOyB9OworCQkwRjBCODM5QjE0QkNGNDYw
MDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50
cnlwb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTcxNEJDRjQ1QTAw
ODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1
QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBNzE0
QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4
M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhh
bmRsZXJJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0FBMTRC
Q0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU4LDkgKzc0LDEzIEBACiAJCTBGMEI4
M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0
RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyogR2xvYmFsUmVz
b2x2ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I5MTRCQ0Y5
NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjgxNEJDRjk1QjAw
ODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwRkM0NUExNEJEMTVGNTAw
QjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxs
TGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1RjE1RDE0QjdBNzNB
MDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNkQ3MjYxNDJDMzlDMDAwQ0Y3ODRBIC8qIEJpdFZl
Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLzsgfTsKIAkJMEYyMUMy
NjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERy
aXZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3QTE0QkU3MjczMDBB
REM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
MjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3RTE0QkVBQTgwMDBB
REM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFr
UmVmZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZl
c3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGMkM1NTZGMTQ3MzhGMzEwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RTE0NzM4RjJFMDAxMjFF
NEYgLyogREZHQ29kZUJsb2Nrcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGMkM1NTcwMTQ3MzhGMzUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1
NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLzsgfTsKQEAgLTcxLDYg
KzkxLDE5IEBACiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDMxNzM2
MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIg
LyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MzE0
QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklU
RXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTElu
dEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBBNDE0QkE3
RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhl
bHBlcnMuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLXVudXNlZC1w
YXJhbWV0ZXIiOyB9OyB9OworCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxw
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2
ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcy
IC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExM
SW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAq
LzsgfTsKKwkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNTE0QkJCMTY5
MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZs
aW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0Njgw
Q0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzcxNEJCQjE2OTAwQkZF
MjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovOyB9OworCQkwRjQ2ODBDRDE0QkJCMTdE
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xl
dmVsSW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENFMTRCQkIz
RDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovOyB9OworCQkwRjQ2ODBEMzE0QkJEMTY3MDBC
RkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDQxNEJC
RDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8q
IEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovOyB9OworCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUy
NzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0
dXJuVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjU1RjBGNDE0RDEwNjM5MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1RjBGMTE0RDEwNjM2MDBB
Qzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi87IH07CiAJCTBGNTVGMEY1MTREMTA2M0MwMEFDNzY0
OSAvKiBBYnN0cmFjdFBDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUYwOENGMTQ2Qzc2
MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyog
VW5jb25kaXRpb25hbEZpbmFsaXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0zODcsNyArNDIwLDcgQEAKIAkJODZCOTlBRTMxMTdFNTc4MTAw
REY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZCOTlBRTExMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QkIw
OUMwMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJFMTM4RTM4MUIwMDU2NzAyRiAvKiBE
RkdSZXBhdGNoLmNwcCAqLzsgfTsKIAkJODZCQjA5QzExMzhFMzgxQjAwNTY3MDJGIC8qIERGR1Jl
cGF0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
QkIwOUJGMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggKi87IH07Ci0JCTg2QzM2RUVB
MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1h
Y3JvQXNzZW1ibGVyLmggKi87IH07CisJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNy
b0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTAxMUEyMTNF
RTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OEREMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNy
b0Fzc2VtYmxlckFSTS5jcHAgKi87IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBN
YWNyb0Fzc2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMu
aCAqLzsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERGMTFB
MjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IH07CkBAIC03NTQsNiArNzg3LDIw
IEBACiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFp
bmVySXRlbVByb3h5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94
eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9q
ZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmlu
ZyA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSAiTExJbnQgT2Zm
c2V0cyI7CisJCX07CisJCTBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJ
dGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250
YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3Qg
Ki87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODA4
RTE0QkE3RTVFMDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gSlNDTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworCQl9OwogCQkxNDEyMTRCRTBBNDkxOTBFMDA0ODAyNTUgLyogUEJYQ29udGFpbmVySXRl
bVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFp
bmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICov
OwpAQCAtNzk5LDYgKzg0NiwxNSBAQAogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkw
RjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJY
Q29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlkc3RQYXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJmb2xkZXJTcGVjID0g
MDsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAxOworCQl9OwogCQk1REJCMTUxMTEzMUQwQjEzMDA1NkFEMzYgLyogQ29weSBTdXBw
b3J0IFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAxMjsKQEAgLTgzOSw2ICs4OTUsMTAgQEAKIAkJMEJBQzk0OUUxMzM4
NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9y
YXJ5Q2hhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFyeUNo
YW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkYyOEEyODExQTMzREMzMDA2
MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgz
OTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5jcHA7IHBhdGggPSBsbGlu
dC9MTEludEVudHJ5cG9pbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYw
QjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5oOyBwYXRoID0gbGxpbnQvTExJ
bnRFbnRyeXBvaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NzE0
QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTExJbnRUaHVua3MuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5ODE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJ
bnRUaHVua3MuaDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlckluZm8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Np
b25SYW5nZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwcmVzc2lv
blJhbmdlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQ5LDkgKzkwOSwx
MyBAQAogCQkwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGhvZENhbGxMaW5rSW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyog
R2xvYmFsUmVzb2x2ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2xv
YmFsUmVzb2x2ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjgx
NEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2Rl
T2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEZDNDU4MTRCRDE1RjEw
MEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBMTEludENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vblNsb3dQYXRocy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdFZlY3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBK
SVREcml2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURHJpdmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAv
KiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0aW9uSGFybmVzcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVD
b252ZW50aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUNv
bnZlbnRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjQyREE1MTNGM0Ix
QkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3Mu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0
RiAvKiBERkdDb2RlQmxvY2tzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERG
R0NvZGVCbG9ja3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2Miw2ICs5MjYs
MjAgQEAKIAkJMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaXN0YWJsZUhhbmRsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4
Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklURXhj
ZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDgwMTRCQTU3
MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpJVEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0
NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gt
by5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gSlNDTExJbnRPZmZzZXRz
RXh0cmFjdG9yOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkwRjQ2ODA5
RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5jcHA7IHBhdGggPSBsbGludC9M
TEludEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5
RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5oOyBwYXRoID0gbGxpbnQvTExJbnRFeGNl
cHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlGMTRCQTdGODIw
MEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTExJbnRIZWxwZXJzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVycy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRI
ZWxwZXJzLmg7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8q
IExMSW50Q29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50Q29t
bW9uLmg7IHBhdGggPSBsbGludC9MTEludENvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmln
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oOyBwYXRoID0gbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVy
cHJldGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBM
b3dMZXZlbEludGVycHJldGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExv
d0xldmVsSW50ZXJwcmV0ZXIuaDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8q
IExMSW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTElu
dERhdGEuY3BwOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludERhdGEuaDsgcGF0aCA9IGxsaW50L0xM
SW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMDE0QkJDNUY4
MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJu
VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSG9zdENhbGxSZXR1cm5W
YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1RjBGMTE0RDEwNjM2MDBB
Qzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBYnN0cmFjdFBDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NUYw
RjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQWJzdHJhY3RQQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyogREZHQnl0ZUNvZGVDYWNoZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCeXRlQ29kZUNhY2hlLmg7IHBhdGggPSBkZmcvREZH
Qnl0ZUNvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU4Nyw2ICsx
NjY1LDEzIEBACiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEMxNEJBN0U1RTAw
QkZFMjcyIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJ
CSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJ
MTQxMjExMUUwQTQ4NzkzQzAwNDgwMjU1IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CkBAIC0xNjQ1LDYgKzE3MzAsNyBAQAogCQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4MDI1NSAvKiBt
aW5pZG9tICovLAogCQkJCTE0QkQ1OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAog
CQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4
MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCiAJCQkp
OwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2
NzUsNiArMTc2MSw3IEBACiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3Jp
cHRDb3JlUHJlZml4LmggKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5j
cHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5oICovLAorCQkJ
CTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLywKIAkJCQkxNDMyRUJENzBBMzRD
QUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBh
c3NlbWJsZXIgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICov
LApAQCAtMTcxNCw2ICsxODAxLDI4IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9
IDA7CiAJCX07CisJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYwQjgzOTUxNEJDRjQ1QTAw
ODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovLAorCQkJCTBGMEI4Mzk2MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8sCisJCQkJMEYwQjgzOTcxNEJDRjQ1QTAw
ODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLywKKwkJCQkwRjBCODM5ODE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRUaHVua3MuaCAqLywKKwkJCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyog
TExJbnREYXRhLmNwcCAqLywKKwkJCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnRE
YXRhLmggKi8sCisJCQkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmgg
Ki8sCisJCQkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oICovLAorCQkJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJl
dGVyLmNwcCAqLywKKwkJCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRl
cnByZXRlci5oICovLAorCQkJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2Vw
dGlvbnMuY3BwICovLAorCQkJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2Vw
dGlvbnMuaCAqLywKKwkJCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJz
LmNwcCAqLywKKwkJCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmgg
Ki8sCisJCQkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGxsaW50OworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKIAkJMTQxMjExMDAwQTQ4NzcyNjAwNDgwMjU1IC8qIHRlc3RzICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE3NDgsNiArMTg1Nyw4IEBA
CiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBI
b3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLywKKwkJCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIg
LyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovLAogCQkJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3
MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLywKIAkJCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIg
LyogSklURXhjZXB0aW9ucy5oICovLAogCQkJCTBGRDgyRTM3MTQxQUIxNDIwMDE3OUM5NCAvKiBD
b21wYWN0SklUQ29kZU1hcC5oICovLApAQCAtMjE3NSw2ICsyMjg2LDggQEAKIAkJN0VGNkUwQkIw
RUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kLmggKi8sCisJCQkJMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1
dGlvbkhhcm5lc3MuaCAqLywKIAkJCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9u
U2xvd1BhdGhzLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3Qu
Y3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCkBA
IC0yNTQ3LDYgKzI2NjAsOCBAQAogCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNv
ZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGMjFD
MjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8sCisJCQkJMEYw
RkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8sCiAJCQkJMEY5
MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLywKIAkJCQkwRjkz
MzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCAqLywKIAkJCQkwRjkzMzI5
NTE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5jcHAgKi8sCkBAIC0zMDk3LDcgKzMy
MTIsMTYgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBp
biBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4
Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8q
IENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTMxNEJBN0Y4RDAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTUx
NEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0
NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xl
dmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEQzMTRCQkQxNjcwMEJG
RTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEQ1MTRCQkQyNEIw
MEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBC
ODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25S
YW5nZUluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtMzEwNiw3ICszMjMwLDExIEBACiAJCQkJMEYw
QjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVy
bk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEZDNDVBMTRC
RDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyog
Qnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEExNEMzQ0Qy
OTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5
NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY3QjI5NEMxNEMzQ0Q0MzAwN0MzREIxIC8qIERGR0J5dGVDb2RlQ2FjaGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzEyNSw2ICszMjUzLDI0IEBACiAvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkw
RjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0g
eworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9
IDBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLzsKKwkJCWJ1aWxk
UGhhc2VzID0gKAorCQkJCTBGNDY4MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovLAor
CQkJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovLAorCQkJCTBGNDY4
MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxl
cyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjIxNEJBODExNTAw
QkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9IEpTQ0xM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3ROYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAv
KiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBw
bGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OwogCQkxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUg
LyogbWluaWRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29u
ZmlndXJhdGlvbkxpc3QgPSAxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovOwpAQCAtMzI1MSwx
MSArMzM5NywyOSBAQAogCQkJCTE0QkQ1OUJFMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICov
LAogCQkJCTkzMkY1QkRBMDgyMkExQzcwMDczNjk3NSAvKiBqc2MgKi8sCiAJCQkJNjUxMTIyRjcx
NDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEUxNEJBN0U1RTAw
QkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKKwkJCQkwRjQ2ODBBOTE0QkE3
RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLywKIAkJCSk7CiAJCX07CiAvKiBFbmQgUEJY
UHJvamVjdCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBz
ZWN0aW9uICovCisJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVk
IFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5w
dXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9sbGludC9Mb3dMZXZlbEFzc2VtYmxlci5hc20i
LAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKKwkJCW91dHB1
dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzL0xMSW50
RGVzaXJlZE9mZnNldHMuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAi
bWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL1wiXG5cbi91c3Iv
YmluL2VudiBydWJ5IFwiJHtTUkNST09UfS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRy
YWN0b3IucmJcIiBcIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc21cIiBc
IiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5o
XCJcbiI7CisJCX07CiAJCTM3MTNGMDE0MTQyOTA1MjQwMDM2Mzg3RiAvKiBDaGVjayBGb3IgSW5h
cHByb3ByaWF0ZSBPYmplY3RpdmUtQyBDbGFzcyBOYW1lcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBA
IC0zMzYxLDcgKzM1MjUsNyBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKLQkJCXNoZWxsU2NyaXB0ID0g
Im1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL2RvY3NcIlxuY2QgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmVcIlxuXG4vYmluL2xuIC1zZmggXCIke1NSQ1JPT1R9XCIgSmF2YVNjcmlw
dENvcmVcbmV4cG9ydCBKYXZhU2NyaXB0Q29yZT1cIkphdmFTY3JpcHRDb3JlXCJcbmV4cG9ydCBC
VUlMVF9QUk9EVUNUU19ESVI9XCIuLi8uLlwiXG5cbm1ha2UgLS1uby1idWlsdGluLXJ1bGVzIC1m
IFwiSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNyL3NiaW4vc3lz
Y3RsIC1uIGh3Lm5jcHVgXG4iOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxU
X1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBc
IiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5c
bi9iaW4vbG4gLXNmaCBcIiR7U1JDUk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFT
Y3JpcHRDb3JlPVwiSmF2YVNjcmlwdENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1c
Ii4uLy4uXCJcblxubWFrZSAtLW5vLWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlXCIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNwdWBcblxu
L3Vzci9iaW4vZW52IHJ1YnkgSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIgSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJHtCVUlMVF9QUk9EVUNUU19E
SVJ9L0pTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciBMTEludEFzc2VtYmx5LmhcbiI7CiAJCX07CiAJ
CTkzMTk1ODZCMDlEOUY5MUEwMEE1NkZENCAvKiBDaGVjayBGb3IgR2xvYmFsIEluaXRpYWxpemVy
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKQEAgLTMzOTYsNiAr
MzU2MCwxNCBAQAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEIxNEJB
N0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJ
CQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBp
biBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQl9OwogCQkxNDEyMTExRDBBNDg3OTNDMDA0ODAyNTUgLyogU291cmNlcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKQEAgLTM2NTMsNyArMzgyNSwxNCBAQAogCQkJCTg2NzA0Qjg2MTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg5MTJEQkEz
MzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI0
MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25z
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRF
eGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3
MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQy
MTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0
NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50
VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4NUI0RiAv
KiBDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjQxNEJDRjg2MDAw
ODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNjlF
ODZDMzE0QzZFNTUxMDAyQzJDNjIgLyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTM2NzgsNiArMzg1NywxNiBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTBGNDY4
MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNh
ID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJG
RTI3MiAvKiBMTEludCBPZmZzZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMTE0QkE4
MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkwRjQ2ODBC
NDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9
IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUy
NzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2
ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9Owog
CQkxNDEyMTRCRjBBNDkxOTBFMDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsK
IAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEyMTExRjBBNDg3
OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLzsKQEAgLTM3MTEsNiArMzkwMCwxNTAgQEAKIC8qIEVu
ZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZp
Z3VyYXRpb24gc2VjdGlvbiAqLworCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcg
Ki8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChB
UkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJ
R0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMg
PSBOTzsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfT1BU
SU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0g
KAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0ND
X1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBs
ZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NP
TlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZ
RVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5f
VU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0i
ID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJ
bnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJ
TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0g
Tk87CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0g
bWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsK
KwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcyIC8qIFJl
bGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMg
PSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVT
OworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJ
CUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VY
Q0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxs
dm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87
CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19X
QVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJM
RSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwK
KwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyQoSEVB
REVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VU
ID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gTk87CisJCQkJUFJPRFVDVF9OQU1FID0g
IiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVS
X1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRz
ICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9
OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZ
U19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRf
NjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1B
VElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFO
REFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJ
CUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlH
Q0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VU
X01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQ
RSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURF
Ul9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQo
QlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNI
X1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43Owor
CQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBOTzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRf
TkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BB
VEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJf
U0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJMEY0
NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJD
SF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQp
IjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZP
Uk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0g
Z251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZF
UlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJO
XzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lO
R19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVT
OworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJD
SF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
IiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJP
RFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJ
CVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
TExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQ
cm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQlu
YW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNl
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9Owor
CQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQ
cm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsK
KwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2ODBCMDE0QkE3RkQ5MDBC
RkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3Vy
Y2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEz
QTBBNDg3OTg0MDA0ODAyNTUgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CkBAIC0zOTUyLDYgKzQyODUsMjggQEAKIC8q
IEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQ29uZmln
dXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0
c0V4dHJhY3RvciIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVp
bGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVi
dWcgKi8sCisJCQkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJ
MEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODA5OTE0
QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9k
dWN0aW9uOworCQl9OworCQkwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovID0g
eworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCisJCQkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4
MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4MEFGMTRCQTdGRDkw
MEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8q
IFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUg
PSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJ
MTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlv
bkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJ
KHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MzgsOSArNTM4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgYmVnaW5VbmludGVycnVwdGVkU2VxdWVuY2UoKSB7IH0KICAgICB2
b2lkIGVuZFVuaW50ZXJydXB0ZWRTZXF1ZW5jZSgpIHsgfQogCi0jaWZuZGVmIE5ERUJVRwogICAg
IHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9hc3NlbWJsZXIuZGVidWdPZmZzZXQo
KTsgfQotI2VuZGlmCiAKIHByb3RlY3RlZDoKICAgICBBc3NlbWJsZXJUeXBlIG1fYXNzZW1ibGVy
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxl
ckJ1ZmZlci5oCShyZXZpc2lvbiAxMDY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsOSArMTQ2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsK
ICAgICAgICAgfQogCi0jaWZuZGVmIE5ERUJVRwogICAgICAgICB1bnNpZ25lZCBkZWJ1Z09mZnNl
dCgpIHsgcmV0dXJuIG1faW5kZXg7IH0KLSNlbmRpZgogCiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShyZXZpc2lvbiAxMDY1Mjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2RlZmluZSBHTE9CQUxfVEhVTktfSUQgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0xKSkKICNkZWZpbmUgUkVH
RVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+
KC0yKSkKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+CisjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC0xODksNyArMTg5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQ29kZVB0cihNYWNy
b0Fzc2VtYmxlcjo6QXNzZW1ibGVyVHlwZV9UOjpnZXRSZWxvY2F0ZWRBZGRyZXNzKGNvZGUoKSwg
YXBwbHlPZmZzZXQobGFiZWwubV9sYWJlbCkpKTsKICAgICB9CiAKLSNpZm5kZWYgTkRFQlVHCiAg
ICAgdm9pZCogZGVidWdBZGRyZXNzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX2NvZGU7CkBA
IC0xOTksNyArMTk4LDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc2l6ZTsK
ICAgICB9Ci0jZW5kaWYKIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gVCBh
cHBseU9mZnNldChUIHNyYykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAkocmV2aXNpb24gMTA2NTI4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYu
aAkod29ya2luZyBjb3B5KQpAQCAtMjczLDYgKzI3MywxNCBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KKyAgICAKKyAg
ICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVz
cyh2b2lkKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIo
dmFsdWUpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0OworICAgICAgICBy
ZXN1bHQubV92YWx1ZSA9IHZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAog
ICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihSZXR1cm5BZGRyZXNzUHRyIHJhKQog
ICAgICAgICA6IG1fdmFsdWUocmEudmFsdWUoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMTA2NTI4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMTc4Nyw5ICsxNzg3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9mb3JtYXR0
ZXIuZXhlY3V0YWJsZUNvcHkoZ2xvYmFsRGF0YSwgb3duZXJVSUQpOwogICAgIH0KIAotI2lmbmRl
ZiBOREVCVUcKICAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJuIG1fZm9ybWF0dGVy
LmRlYnVnT2Zmc2V0KCk7IH0KLSNlbmRpZgogCiAgICAgdm9pZCBub3AoKQogICAgIHsKQEAgLTIx
MzcsOSArMjEzNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gbV9idWZmZXIuZXhl
Y3V0YWJsZUNvcHkoZ2xvYmFsRGF0YSwgb3duZXJVSUQpOwogICAgICAgICB9CiAKLSNpZm5kZWYg
TkRFQlVHCiAgICAgICAgIHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIu
ZGVidWdPZmZzZXQoKTsgfQotI2VuZGlmCiAKICAgICBwcml2YXRlOgogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVD
b252ZW50aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQnl0ZWNvZGVDb252ZW50
aW9uc19oCisjZGVmaW5lIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCisvLyBSZWdpc3RlciBudW1i
ZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFj
Y29yZGluZyB0byB0aGVpciByYW5nZXM6CisvLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAg
TmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBp
biB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgorLy8gICAgICAweDAwMDAwMDAw
LTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIg
YXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZy
YW1lLgorLy8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJv
bSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUg
Q29kZUJsb2NrLgorc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9
IDB4NDAwMDAwMDA7CisKKyNlbmRpZiAvLyBCeXRlY29kZUNvbnZlbnRpb25zX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3Bw
CShyZXZpc2lvbiAxMDY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNyArMjcsNDAgQEAKICNpbmNs
dWRlICJDYWxsTGlua1N0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVk
ZSAiTExJbnRDYWxsTGlua0luZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0NhbGxMaW5rU3Rh
dHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRC
bG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmls
ZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworI2lmIEVOQUJMRShM
TElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKyAgICBMTEludENhbGxMaW5rSW5m
byogY2FsbExpbmtJbmZvID0gaW5zdHJ1Y3Rpb25bNF0udS5jYWxsTGlua0luZm87CisgICAgCisg
ICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0
KCksIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsK
KyNlbmRpZgorfQorCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUlu
ZGV4KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgcmV0
dXJuIENhbGxMaW5rU3RhdHVzKAotICAgICAgICBwcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0lu
Zm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0KCksCi0gICAgICAgIHByb2ZpbGVk
QmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKTsKKyAgICBpZiAoIXByb2Zp
bGVkQmxvY2stPm51bWJlck9mQ2FsbExpbmtJbmZvcygpKQorICAgICAgICByZXR1cm4gY29tcHV0
ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KTsKKyAgICAKKyAgICBpZiAo
cHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCisgICAgICAg
IHJldHVybiBDYWxsTGlua1N0YXR1cygwLCB0cnVlKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiB0
YXJnZXQgPSBwcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFz
dFNlZW5DYWxsZWUuZ2V0KCk7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAgIHJldHVybiBjb21w
dXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIHJl
dHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQsIGZhbHNlKTsKICNlbHNlCiAgICAgcmV0dXJuIENh
bGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlzaW9uIDEwNjUyOCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NywxNSArNDcsMTcgQEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBDYWxs
TGlua1N0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgp
OwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbFRhcmdldDsg
fQorICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbFRhcmdldCB8fCBtX2Nv
dWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJl
dHVybiAhbV9jYWxsVGFyZ2V0OyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVy
biAhaXNTZXQoKTsgfQogICAgIAogICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7
IHJldHVybiBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCiAgICAgSlNGdW5jdGlvbiogY2Fs
bFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQogICAgIAogcHJpdmF0ZToK
KyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAgICAKICAgICBKU0Z1bmN0aW9uKiBtX2NhbGxUYXJn
ZXQ7CiAgICAgYm9vbCBtX2NvdWxkVGFrZVNsb3dQYXRoOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMDY1MjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUg
Ikxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5j
bHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTU5LDgg
KzYwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiB1c2luZyBuYW1lc3BhY2UgREZHOwogI2VuZGlmCiAK
LSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRShPUENPREVfU0FNUExJTkcpCi0KIHN0YXRp
YyBVU3RyaW5nIGVzY2FwZVF1b3Rlcyhjb25zdCBVU3RyaW5nJiBzdHIpCiB7CiAgICAgVVN0cmlu
ZyByZXN1bHQgPSBzdHI7CkBAIC0zNTgsMTAgKzM1NywxMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVt
cChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnN0cnVj
dGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bjb2RlTGVuZ3Roc1tleGVjLT5pbnRlcnByZXRlcigpLT5n
ZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtpXS51Lm9wY29kZSldKQogICAgICAgICArK2luc3Ry
dWN0aW9uQ291bnQ7CiAKLSAgICBwcmludGYoIiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVz
IGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKVxuXG4iLAorICAg
IHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRl
cihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpOyAlZCB2YXJpYWJsZShzKVxuXG4iLAogICAgICAg
ICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbkNvdW50KSwKICAgICAgICAg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9m
KEluc3RydWN0aW9uKSksCi0gICAgICAgIHRoaXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxs
ZWVSZWdpc3RlcnMpOworICAgICAgICB0aGlzLCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVl
UmVnaXN0ZXJzLCBtX251bVZhcnMpOwogCiAgICAgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3Rf
aXRlcmF0b3IgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIFZlY3RvcjxJbnN0
cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGluc3RydWN0aW9ucygpLmVuZCgpOwpAQCAt
ODk4LDYgKzg5NywxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNv
CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlf
aWRfdHJhbnNpdGlvbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50
UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4
ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJp
YzogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0
X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI4Niw4ICsxMjkzLDYg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgIH0KIH0KIAot
I2VuZGlmIC8vICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQog
I2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNTCiBzdGF0aWMgSGFzaFNldDxDb2RlQmxvY2sq
PiBsaXZlQ29kZUJsb2NrU2V0OwogI2VuZGlmCkBAIC0xNDU3LDYgKzE0NjIsNyBAQCBDb2RlQmxv
Y2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsCiB7CiAgICAgc2V0TnVtUGFyYW1ldGVy
cyhvdGhlci5udW1QYXJhbWV0ZXJzKCkpOwogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAg
ICBqaXRBZnRlcldhcm1VcCgpOwogICAgIAogICAgIGlmIChvdGhlci5tX3JhcmVEYXRhKSB7CiAg
ICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTE1MDUsNiArMTUxMSw3IEBA
IENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICBBU1NFUlQobV9z
b3VyY2UpOwogICAgIAogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldh
cm1VcCgpOwogCiAjaWYgRFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJQ1MKICAgICBsaXZlQ29kZUJs
b2NrU2V0LmFkZCh0aGlzKTsKQEAgLTE1MjIsNyArMTUyOSwxMSBAQCBDb2RlQmxvY2s6On5Db2Rl
QmxvY2soKQogI2lmIEVOQUJMRShWRVJCT1NFX1ZBTFVFX1BST0ZJTEUpCiAgICAgZHVtcFZhbHVl
UHJvZmlsZXMoKTsKICNlbmRpZgotICAgIAorCisjaWYgRU5BQkxFKExMSU5UKSAgICAKKyAgICB3
aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxs
cy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7
CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gV2UgbWF5
IGJlIGRlc3Ryb3llZCBiZWZvcmUgYW55IENvZGVCbG9ja3MgdGhhdCByZWZlciB0byB1cyBhcmUg
ZGVzdHJveWVkLgogICAgIC8vIENvbnNpZGVyIHRoYXQgdHdvIENvZGVCbG9ja3MgYmVjb21lIHVu
cmVhY2hhYmxlIGF0IHRoZSBzYW1lIHRpbWUuIFRoZXJlCkBAIC0xNzM0LDggKzE3NDUsNjkgQEAg
dm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogI2Vsc2UKICAgICBzdGF0
aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5saW5raW5nID0gZmFsc2U7CiAjZW5kaWYKLSNlbmRpZgor
I2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgCisjaWYgRU5BQkxFKExMSU5UKQorICAgIEludGVy
cHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXI7CisgICAgLy8g
aW50ZXJwcmV0ZXItPmVuYWJsZWQoKSByZXR1cm5zIHRydWUgaWYgdGhlIG9sZCBDKysgaW50ZXJw
cmV0ZXIgaXMgZW5hYmxlZC4gSWYgdGhhdCdzIGVuYWJsZWQKKyAgICAvLyB0aGVuIHdlJ3JlIG5v
dCB1c2luZyBMTEludC4KKyAgICBpZiAoIWludGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAg
ICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgp
LCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cklu
c3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNb
aV1dOworICAgICAgICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5z
dHJ1Y3Rpb25bMF0udS5vcGNvZGUpKSB7CisgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoK
KyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICAgICAgICAgIGlmICghY3Vy
SW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rp
b25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAg
cHJpbnRmKCJDbGVhcmluZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3Mgd2l0aCBzdHJ1Y3R1cmUgJXAu
XG4iLCBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAg
ICBjdXJJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQgPSAwOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAg
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAg
ICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0
KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9u
WzZdLnUuc3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01h
cmtlZChjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpKSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcp
IHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBwdXQgdHJhbnNp
dGlvbiB3aXRoIHN0cnVjdHVyZXMgJXAgLT4gJXAsIGNoYWluICVwLlxuIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVj
dHVyZUNoYWluLmdldCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY3Vy
SW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJ
bnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1cklu
c3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBj
dXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSA9IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0
X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0
aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVj
dGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5z
dHJ1Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsCisgICAg
ICAgICAgICAgICAgICAgfHwgaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9u
WzBdLnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKKyAgICAgICAgICAg
IGlmICghY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3Vy
SW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAg
cHJpbnRmKCJDbGVhcmluZyBMTEludCBnbG9iYWwgcmVzb2x2ZSBjYWNoZSB3aXRoIHN0cnVjdHVy
ZSAlcC5cbiIsIGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAg
ICAgIGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBj
dXJJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQgPSAwOworICAgICAgICB9CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgewor
ICAgICAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhl
YXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAg
cHJpbnRmKCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAg
ICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmICghIW1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVl
ICYmICFIZWFwOjppc01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxl
ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNl
ZW5DYWxsZWUuY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJ
TlQpCisKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2
ZS4gSWYgd2UgYXJlLCB0aGVuIGpldHRpc29uLgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5
QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Q
cm92ZWQpKSB7CkBAIC0xNzU4LDcgKzE4MzAsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVV
bmNvbmRpdGlvbmFsbHkoCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJP
ZkNhbGxMaW5rSW5mb3MoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoY2FsbExpbmtJbmZvKGkp
LmlzTGlua2VkKCkgJiYgIUhlYXA6OmlzTWFya2VkKGNhbGxMaW5rSW5mbyhpKS5jYWxsZWUuZ2V0
KCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCi0gICAgICAgICAg
ICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcgY2FsbCBmcm9tICVwLlxuIiwgdGhpcyk7CisgICAg
ICAgICAgICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcgY2FsbCBmcm9tICVwIHRvICVwLlxuIiwg
dGhpcywgY2FsbExpbmtJbmZvKGkpLmNhbGxlZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgY2Fs
bExpbmtJbmZvKGkpLnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmICghIWNhbGxMaW5rSW5mbyhpKS5sYXN0U2VlbkNhbGxl
ZQpAQCAtMTg1NiwxMCArMTkyOCwxMiBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0
cm9uZ1JlZmVyCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVjbHMuc2l6
ZSgpOyArK2kpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9uRGVjbHNbaV0pOwog
I2lmIEVOQUJMRShJTlRFUlBSRVRFUikKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAg
ICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nl
c3NJbnN0cnVjdGlvbnNbaV1dKTsKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNv
bHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZp
c2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5z
dHJ1Y3Rpb25zW2ldXSk7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPmVuYWJs
ZWQoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRT
dHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb25zW2ldXSk7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHZp
c2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5z
dHJ1Y3Rpb25zW2ldXSk7CisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAg
LTE4NjcsOCArMTk0MSw5IEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVm
ZXIKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgZXhlY3V0YWJsZXMgdGhhdCB3ZSBoYXZlIGlu
bGluZWQgZG9uJ3QgZGllLgogICAgICAgICAvLyBGSVhNRTogSWYgdGhleSB3b3VsZCBoYXZlIG90
aGVyd2lzZSBkaWVkLCB3ZSBzaG91bGQgcHJvYmFibHkgdHJpZ2dlciByZWNvbXBpbGF0aW9uLgog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlubGluZUNhbGxGcmFtZXMoKS5zaXplKCk7
ICsraSkgewotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZXMoKVtp
XS5leGVjdXRhYmxlKTsKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpbmxpbmVDYWxsRnJh
bWVzKClbaV0uY2FsbGVlKTsKKyAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSYgaW5saW5lQ2Fs
bEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lcygpW2ldOworICAgICAgICAgICAgdmlzaXRvci5hcHBl
bmQoJmlubGluZUNhbGxGcmFtZS5leGVjdXRhYmxlKTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBw
ZW5kKCZpbmxpbmVDYWxsRnJhbWUuY2FsbGVlKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpA
QCAtMjA3OCw2ICsyMTUzLDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiB7CiAg
ICAgaWYgKCEhbV9hbHRlcm5hdGl2ZSkKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+dW5saW5rQ2Fs
bHMoKTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xs
aW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9sbGludENhbGxM
aW5rSW5mb3NbaV0uaXNMaW5rZWQoKSkKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9z
W2ldLnVubGluaygpOworICAgIH0KKyNlbmRpZgogICAgIGlmICghKG1fY2FsbExpbmtJbmZvcy5z
aXplKCkgfHwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsK
ICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0yMDkyLDEwICsyMTczLDM5
IEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiAKIHZvaWQgQ29kZUJsb2NrOjp1bmxp
bmtJbmNvbWluZ0NhbGxzKCkKIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgd2hpbGUgKG1faW5j
b21pbmdMTEludENhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisg
ICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCktPnVubGluaygpOworI2VuZGlmCisg
ICAgaWYgKG1faW5jb21pbmdDYWxscy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKICAgICBS
ZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIodGhpcyk7CiAgICAgd2hpbGUgKG1faW5jb21pbmdD
YWxscy5iZWdpbigpICE9IG1faW5jb21pbmdDYWxscy5lbmQoKSkKICAgICAgICAgbV9pbmNvbWlu
Z0NhbGxzLmJlZ2luKCktPnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKIH0K
KwordW5zaWduZWQgQ29kZUJsb2NrOjpieXRlY29kZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMsIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAg
aWYgKHJldHVybkFkZHJlc3MudmFsdWUoKSA+PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9i
ZWdpbikKKyAgICAgICAgJiYgcmV0dXJuQWRkcmVzcy52YWx1ZSgpIDw9IGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X2VuZCkpIHsKKyAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpKTsK
KyAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpID09IHRoaXMpOworICAgICAgICBBU1NF
UlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CisgICAgICAgIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiA9IGV4ZWMtPmN1cnJlbnRWUEMoKTsKKyAgICAgICAgQVNTRVJU
KGluc3RydWN0aW9uKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9u
KTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyNlbmRpZgorICAgIGlm
ICghbV9yYXJlRGF0YSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgVmVjdG9yPENhbGxSZXR1cm5P
ZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxS
ZXR1cm5JbmRleFZlY3RvcjsKKyAgICBpZiAoIWNhbGxJbmRpY2VzLnNpemUoKSkKKyAgICAgICAg
cmV0dXJuIDE7CisgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJl
Z2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFk
ZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKK30KICNlbmRpZgogCiB2b2lkIENvZGVC
bG9jazo6Y2xlYXJFdmFsQ2FjaGUoKQpAQCAtMjE5MSwyNCArMjMwMSw0NSBAQCBib29sIEZ1bmN0
aW9uQ29kZUJsb2NrOjpjYW5Db21waWxlV2l0aERGCiAKIHZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6
amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxp
bmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgp
KSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8
UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVk
Q29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBFdmFsQ29kZUJsb2NrOjpqZXR0aXNvbigp
CiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Cisg
ICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBB
U1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0
YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxE
YXRhKCkpOwogfQogCiB2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAg
QVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJU
KEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhp
cyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
Pihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZUZvcigqZ2xvYmFsRGF0
YSgpLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOwog
fQorCit2b2lkIFByb2dyYW1Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVy
cHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+
aml0Q29tcGlsZShnbG9iYWxEYXRhKTsKK30KKwordm9pZCBFdmFsQ29kZUJsb2NrOjpqaXRDb21w
aWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdldEpJVFR5
cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhpcyA9PSBy
ZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihv
d25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZ2xvYmFsRGF0YSk7Cit9CisKK3ZvaWQgRnVu
Y3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
K3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmsp
OworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGVG
b3IoZ2xvYmFsRGF0YSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVG
b3JDYWxsKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtMjMx
MSw2ICsyNDQyLDE4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wVmFsdWVQcm9maWxlcygpCiB9CiAj
ZW5kaWYKIAordm9pZCBDb2RlQmxvY2s6OmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVu
aXR5KCkKK3sKKyNpZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykgJiYgIUVOQUJMRShMTElOVCkK
KyAgICBpZiAoQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKCEhYWx0ZXJuYXRpdmUoKSkKKyAgICAgICAgZGlzY2FyZEJ5dGVj
b2RlKCk7CisgICAgZWxzZQorICAgICAgICBkaXNjYXJkQnl0ZWNvZGVMYXRlcigpOworI2VuZGlm
Cit9CisKICNpZm5kZWYgTkRFQlVHCiBib29sIENvZGVCbG9jazo6dXNlc09wY29kZShPcGNvZGVJ
RCBvcGNvZGVJRCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRl
ZiBDb2RlQmxvY2tfaAogI2RlZmluZSBDb2RlQmxvY2tfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVD
b252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgpA
QCAtNTAsNiArNTEsNyBAQAogI2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJ
bnRDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJMaW5lSW5mby5oIgogI2luY2x1ZGUgIk5vZGVz
LmgiCiAjaW5jbHVkZSAiUHJlZGljdGlvblRyYWNrZXIuaCIKQEAgLTY1LDE2ICs2NywxMSBAQAog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgog
Ci0vLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRp
ZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6Ci0vLyAgICAgIDB4ODAw
MDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9p
bnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgot
Ly8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUg
Q2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhl
IGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgotLy8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBv
c2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29u
c3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgotc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7Ci0KIG5hbWVzcGFjZSBKU0MgewogCi0gICAg
Y2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgRXhl
Y1N0YXRlOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGlubGluZSBp
bnQgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGludCBhcmd1bWVudHNSZWdpc3RlcikgeyBy
ZXR1cm4gYXJndW1lbnRzUmVnaXN0ZXIgLSAxOyB9CiAKQEAgLTgzLDYgKzgwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXIsIHB1YmxpYyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyIHsKICAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICBlbnVt
IENvcHlQYXJzZWRCbG9ja1RhZyB7IENvcHlQYXJzZWRCbG9jayB9OwogICAgIHByb3RlY3RlZDoK
QEAgLTEyMyw3ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHdoaWxlIChy
ZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5h
bHRlcm5hdGl2ZSgpOwogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgICAgICBB
U1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAg
ICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlw
ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAjZW5kaWYKQEAg
LTEzNCwxMSArMTMyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQg
ZHVtcFN0YXRpc3RpY3MoKTsKIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFX09QQ09E
RV9TQU1QTElORwogICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAg
IHZvaWQgcHJpbnRTdHJ1Y3R1cmVzKGNvbnN0IEluc3RydWN0aW9uKikgY29uc3Q7CiAgICAgICAg
IHZvaWQgcHJpbnRTdHJ1Y3R1cmUoY29uc3QgY2hhciogbmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24q
LCBpbnQgb3BlcmFuZCkgY29uc3Q7Ci0jZW5kaWYKIAogICAgICAgICBib29sIGlzU3RyaWN0TW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAKQEAgLTE5NCwxNSArMTkwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0
aG9kQ2FsbExpbmtJbmZvLCB1bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJ
bmRleD4obV9tZXRob2RDYWxsTGlua0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZv
cy5zaXplKCksIGJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICAgICAgICAgIHJldHVybiAx
OwotICAgICAgICAgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYg
Y2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKLSAgICAg
ICAgICAgIGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAx
OwotICAgICAgICAgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJl
Z2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFk
ZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKLSAgICAgICAgfQorICAgICAgICB1bnNp
Z25lZCBieXRlY29kZU9mZnNldChFeGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAg
ICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4
KQogICAgICAgICB7CkBAIC0yMjMsMTEgKzIxMSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgewogICAgICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwogICAgICAg
ICB9CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoTExJ
bnRDYWxsTGlua0luZm8qIGluY29taW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2luY29t
aW5nTExJbnRDYWxscy5wdXNoKGluY29taW5nKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJM
RShMTElOVCkKICAgICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5rSW5jb21pbmdDYWxscygpOwot
I2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAotI2lmIEVOQUJMRShERkdfSklUKQorI2lm
IEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIHZvaWQgc2V0SklUQ29k
ZU1hcChQYXNzT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBqaXRDb2RlTWFwKQogICAgICAgICB7
CiAgICAgICAgICAgICBtX2ppdENvZGVNYXAgPSBqaXRDb2RlTWFwOwpAQCAtMjM2LDcgKzIzMCw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9qaXRD
b2RlTWFwLmdldCgpOwogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgCisjaWYgRU5BQkxFKERG
R19KSVQpCiAgICAgICAgIHZvaWQgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCkKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKCEhbV9kZmdEYXRhKQpAQCAtMzM1LDEyICszMzEsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVS
KQogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChJbnN0cnVjdGlvbiogcmV0dXJuQWRk
cmVzcykKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJldHVybkFkZHJlc3MgPj0gaW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKSAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zKCkuZW5k
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJu
QWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgICAgICB9Ci0jZW5kaWYKIAog
ICAgICAgICB2b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0Nv
bXBhcmVGdW5jdGlvbikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0Nv
bXBhcmVGdW5jdGlvbjsgfQogICAgICAgICBib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbigp
IHsgcmV0dXJuIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CkBAIC0zNTQsMTcgKzM0OSw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBtX3Nob3VsZERpc2Nh
cmRCeXRlY29kZSA9IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgdm9pZCBoYW5kbGVCeXRlY29k
ZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghIWFs
dGVybmF0aXZlKCkpCi0gICAgICAgICAgICAgICAgZGlzY2FyZEJ5dGVjb2RlKCk7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZGlzY2FyZEJ5dGVjb2RlTGF0ZXIoKTsKLSAgICAg
ICAgfQorICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7
CiAgICAgICAgIAotI2lmbmRlZiBOREVCVUcKICAgICAgICAgYm9vbCB1c2VzT3Bjb2RlKE9wY29k
ZUlEKTsKLSNlbmRpZgogCiAgICAgICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQoKSB7IHJl
dHVybiBtX2luc3RydWN0aW9uQ291bnQ7IH0KICAgICAgICAgdm9pZCBzZXRJbnN0cnVjdGlvbkNv
dW50KHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQpIHsgbV9pbnN0cnVjdGlvbkNvdW50ID0gaW5z
dHJ1Y3Rpb25Db3VudDsgfQpAQCAtMzg3LDYgKzM3NCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZSogZXhlY3V0YWJsZU1lbW9yeSgpIHsgcmV0dXJu
IGdldEpJVENvZGUoKS5nZXRFeGVjdXRhYmxlTWVtb3J5KCk7IH0KICAgICAgICAgdmlydHVhbCBK
U09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCkgPSAwOworICAgICAgICBib29sIGpp
dENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspIHsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBqaXRDb21waWxlSW1wbChnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpID0gMDsK
IAogICAgICAgICBlbnVtIENvbXBpbGVXaXRoREZHU3RhdGUgewpAQCAtNDA2LDEzICs0MDIsMTMg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBoYXNPcHRpbWl6ZWRSZXBsYWNlbWVu
dCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVD
b2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgYm9vbCByZXN1bHQgPSByZXBsYWNlbWVu
dCgpLT5nZXRKSVRUeXBlKCkgPiBnZXRKSVRUeXBlKCk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1l
bnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CiAgICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID09
IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6
aXNCYXNlbGluZUNvZGUocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCkgPT0gdGhpcyk7CiAgICAgICAgICAgICB9CiAjZW5k
aWYKQEAgLTQ3MSwxOCArNDY3LDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQg
Y2xlYXJFdmFsQ2FjaGUoKTsKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgdm9p
ZCBhZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKHVuc2lnbmVkIHByb3BlcnR5QWNjZXNzSW5z
dHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5V
c2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmFw
cGVuZChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKTsKKyAgICAgICAgICAgIG1fcHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbnMuYXBwZW5kKHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOwogICAg
ICAgICB9CiAgICAgICAgIHZvaWQgYWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKHVuc2lnbmVk
IGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFt
X2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9ucy5hcHBlbmQoZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKTsKKyAgICAgICAg
ICAgIG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5hcHBlbmQoZ2xvYmFsUmVzb2x2ZUluc3Ry
dWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICBib29sIGhhc0dsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbkF0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOworI2lmIEVOQUJM
RShMTElOVCkKKyAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGFkZExMSW50Q2FsbExpbmtJbmZv
KCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3MuYXBwZW5kKExM
SW50Q2FsbExpbmtJbmZvKCkpOworICAgICAgICAgICAgcmV0dXJuICZtX2xsaW50Q2FsbExpbmtJ
bmZvcy5sYXN0KCk7CisgICAgICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgICAg
IHZvaWQgc2V0TnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3Moc2l6ZV90IHNpemUpIHsgbV9zdHJ1
Y3R1cmVTdHViSW5mb3MuZ3JvdyhzaXplKTsgfQpAQCAtNDkxLDggKzQ5MCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkR2xvYmFsUmVzb2x2ZUluZm8odW5zaWduZWQgZ2xv
YmFsUmVzb2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9nbG9i
YWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbmZv
cy5hcHBlbmQoR2xvYmFsUmVzb2x2ZUluZm8oZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKSk7Cisg
ICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbmZvcy5hcHBlbmQoR2xvYmFsUmVzb2x2ZUluZm8o
Z2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKSk7CiAgICAgICAgIH0KICAgICAgICAgR2xvYmFsUmVz
b2x2ZUluZm8mIGdsb2JhbFJlc29sdmVJbmZvKGludCBpbmRleCkgeyByZXR1cm4gbV9nbG9iYWxS
ZXNvbHZlSW5mb3NbaW5kZXhdOyB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluZm9B
dEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTUwMyw2ICs1MDEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGFkZE1ldGhvZENhbGxMaW5rSW5m
b3ModW5zaWduZWQgbikgeyBBU1NFUlQobV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSk7IG1fbWV0
aG9kQ2FsbExpbmtJbmZvcy5ncm93KG4pOyB9CiAgICAgICAgIE1ldGhvZENhbGxMaW5rSW5mbyYg
bWV0aG9kQ2FsbExpbmtJbmZvKGludCBpbmRleCkgeyByZXR1cm4gbV9tZXRob2RDYWxsTGlua0lu
Zm9zW2luZGV4XTsgfQorICAgICAgICBzaXplX3QgbnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9z
KCkgeyByZXR1cm4gbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKTsgfQogI2VuZGlmCiAgICAg
ICAgIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTU0Myw2ICs1NDIsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0XS51Lm9wY29kZSkpIC0gMV0udS5wcm9maWxlID09IHJlc3VsdCk7CiAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CisgICAgICAgIFByZWRpY3RlZFR5cGUgdmFsdWVQ
cm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIHRvdGFsTnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkK
ICAgICAgICAgewpAQCAtNTY5LDEyICs1NzIsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IAogICAgICAgICBib29sIGxpa2VseVRvVGFrZVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkK
ICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1
ZSA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9j
b3VudGVyOwogICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49IE9wdGlvbnM6Omxpa2VseVRvVGFr
ZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIC8gbV9l
eGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNo
b2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGNvdWxkVGFrZVNsb3dDYXNl
KGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJP
ZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49
IE9wdGlvbnM6OmNvdWxkVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRv
dWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6OmNvdWxkVGFr
ZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CkBAIC01OTMsMTIgKzYwMCwxNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlU3BlY2lhbEZh
c3RDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFu
dW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0
Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsK
ICAgICAgICAgICAgIHJldHVybiBzcGVjaWFsRmFzdENhc2VDb3VudCA+PSBPcHRpb25zOjpsaWtl
bHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHNwZWNp
YWxGYXN0Q2FzZUNvdW50KSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtl
bHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
Ym9vbCBsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHNsb3dDYXNl
Q291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkt
Pm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0g
c3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+
bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBzbG93Q2FzZUNvdW50IC0g
c3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBAIC02MDcsNiArNjE4LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZUFueVNsb3dDYXNlKGludCBieXRl
Y29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNl
UHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1
bnNpZ25lZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFs
RmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0g
c2xvd0Nhc2VDb3VudCArIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNzA0LDcgKzcxNyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBhZGRGcmVxdWVudEV4aXRT
aXRlKGNvbnN0IERGRzo6RnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkKICAgICAgICAgewotICAgICAg
ICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAg
ICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CiAg
ICAgICAgICAgICByZXR1cm4gbV9leGl0UHJvZmlsZS5hZGQoc2l0ZSk7CiAgICAgICAgIH0KIApA
QCAtODEyLDYgKzgyNSwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBjb3B5UG9z
dFBhcnNlRGF0YUZyb20oQ29kZUJsb2NrKiBhbHRlcm5hdGl2ZSk7CiAgICAgICAgIHZvaWQgY29w
eVBvc3RQYXJzZURhdGFGcm9tQWx0ZXJuYXRpdmUoKTsKICAgICAgICAgCisgICAgICAgIC8vIEZ1
bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiBKSVR0aW5nIGtpY2tzIGluLCBpbiBhIG1peGVk
IG1vZGUKKyAgICAgICAgLy8gZXhlY3V0aW9uIHdvcmxkLgorICAgICAgICAKKyAgICAgICAgdm9p
ZCBkb250SklUQW55dGltZVNvb24oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhl
Y3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55
dGltZVNvb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0QWZ0ZXJXYXJt
VXAoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRp
b25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRTb29uKCkKKyAgICAgICAgeworICAgICAgICAgICAg
bV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
SklUU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50MzJfdCBsbGludEV4ZWN1
dGVDb3VudGVyKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fbGxpbnRF
eGVjdXRlQ291bnRlcjsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgLy8gRnVuY3Rpb25z
IGZvciBjb250cm9sbGluZyB3aGVuIHRpZXJlZCBjb21waWxhdGlvbiBraWNrcyBpbi4gVGhpcwog
ICAgICAgICAvLyBjb250cm9scyBib3RoIHdoZW4gdGhlIG9wdGltaXppbmcgY29tcGlsZXIgaXMg
aW52b2tlZCBhbmQgd2hlbiBPU1IKICAgICAgICAgLy8gZW50cnkgaGFwcGVucy4gVHdvIHRyaWdn
ZXJzIGV4aXN0OiB0aGUgbG9vcCB0cmlnZ2VyIGFuZCB0aGUgcmV0dXJuCkBAIC0xMDA0LDYgKzEw
NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3Nob3VsZERpc2NhcmRCeXRl
Y29kZTsKIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJ
bXBsKEpTR2xvYmFsRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0V2Vha1Jl
ZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplVW5j
b25kaXRpb25hbGx5KCk7CiAgICAgICAgIApAQCAtMTAxNiw3ICsxMDUzLDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgdGFsbHlGcmVxdWVudEV4aXRTaXRlcygpIHsgfQogI2VuZGlm
CiAgICAgICAgIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElO
RykKICAgICAgICAgdm9pZCBkdW1wKEV4ZWNTdGF0ZSosIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlv
bj46OmNvbnN0X2l0ZXJhdG9yJiBiZWdpbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRl
cmF0b3ImKSBjb25zdDsKIAogICAgICAgICBDU3RyaW5nIHJlZ2lzdGVyTmFtZShFeGVjU3RhdGUq
LCBpbnQgcikgY29uc3Q7CkBAIC0xMDI2LDcgKzEwNjIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBwcmludEdldEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3Rv
cjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0Owog
ICAgICAgICB2b2lkIHByaW50Q2FsbE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9y
PEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0
b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsK
LSNlbmRpZgogICAgICAgICB2b2lkIHZpc2l0U3RydWN0dXJlcyhTbG90VmlzaXRvciYsIEluc3Ry
dWN0aW9uKiB2UEMpIGNvbnN0OwogICAgICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTEw
ODcsOSArMTEyMiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFNvdXJjZVBy
b3ZpZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7CiAKLSNp
ZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9wcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2dsb2JhbFJl
c29sdmVJbnN0cnVjdGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBTZWdtZW50ZWRW
ZWN0b3I8TExJbnRDYWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxsTGlua0luZm9zOworICAgICAg
ICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxO
b2RlPExMSW50Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdMTEludENhbGxzOwogI2VuZGlmCiAj
aWYgRU5BQkxFKEpJVCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0cnVj
dHVyZVN0dWJJbmZvczsKQEAgLTExMDAsOSArMTEzNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNoZWNrOwogICAg
ICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9k
ZTxDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2VuZGlmCi0jaWYgRU5BQkxFKERG
R19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgT3du
UHRyPENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAgICAgIAorI2VuZGlmCisj
aWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFrUmVmZXJlbmNlVHJhbnNpdGlv
biB7CiAgICAgICAgICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigpIHsgfQogICAgICAgICAg
ICAgCkBAIC0xMTY1LDEyICsxMjAzLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93
blB0cjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAgIAorICAgICAgICBpbnQzMl90
IG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAgICAgIGludDMyX3QgbV9qaXRF
eGVjdXRlQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3Vu
dGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFpbENvdW50ZXI7CiAgICAgICAg
IHVpbnQ4X3QgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9y
ZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKLQorICAgICAgICAKICAgICAgICAgc3RydWN0IFJh
cmVEYXRhIHsKICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHB1
YmxpYzoKQEAgLTEyNDYsNiArMTI4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3Rl
ZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUq
LCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAg
ICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29s
IGNhbkNvbXBpbGVXaXRoREZHSW50ZXJuYWwoKTsKICNlbmRpZgpAQCAtMTI4MCw2ICsxMzIxLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2Jq
ZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29t
cGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBs
YWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkdJbnRlcm5h
bCgpOwogI2VuZGlmCkBAIC0xMzE3LDYgKzEzNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhl
Y1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29u
KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKTsK
ICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBjYW5Db21waWxlV2l0aERGR0ludGVybmFsKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAkocmV2aXNpb24gMTA2NTI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAkod29ya2lu
ZyBjb3B5KQpAQCAtODMsMTAgKzgzLDggQEAgc3RydWN0IENvZGVPcmlnaW4gewogICAgIAogICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAKLSNpZm5kZWYgTkRFQlVHCiAgICAgLy8gR2V0IHRo
ZSBpbmxpbmUgc3RhY2suIFRoaXMgaXMgc2xvdywgYW5kIGlzIGludGVuZGVkIGZvciBkZWJ1Z2dp
bmcgb25seS4KICAgICBWZWN0b3I8Q29kZU9yaWdpbj4gaW5saW5lU3RhY2soKSBjb25zdDsKLSNl
bmRpZgogfTsKIAogc3RydWN0IElubGluZUNhbGxGcmFtZSB7CkBAIC0xMjIsNyArMTIwLDYgQEAg
aW5saW5lIGJvb2wgQ29kZU9yaWdpbjo6b3BlcmF0b3I9PShjb25zdAogICAgICAgICAmJiBpbmxp
bmVDYWxsRnJhbWUgPT0gb3RoZXIuaW5saW5lQ2FsbEZyYW1lOwogfQogICAgIAotI2lmbmRlZiBO
REVCVUcKIC8vIEdldCB0aGUgaW5saW5lIHN0YWNrLiBUaGlzIGlzIHNsb3csIGFuZCBpcyBpbnRl
bmRlZCBmb3IgZGVidWdnaW5nIG9ubHkuCiBpbmxpbmUgVmVjdG9yPENvZGVPcmlnaW4+IENvZGVP
cmlnaW46OmlubGluZVN0YWNrKCkgY29uc3QKIHsKQEAgLTEzMyw3ICsxMzAsNiBAQCBpbmxpbmUg
VmVjdG9yPENvZGVPcmlnaW4+IENvZGVPcmlnaW46OmluCiAgICAgICAgIHJlc3VsdFtpbmRleC0t
XSA9IGN1cnJlbnQtPmNhbGxlcjsKICAgICByZXR1cm4gcmVzdWx0OwogfQotI2VuZGlmCiAKIGlu
bGluZSB1bnNpZ25lZCBnZXRDYWxsUmV0dXJuT2Zmc2V0Rm9yQ29kZU9yaWdpbihDb2RlT3JpZ2lu
QXRDYWxsUmV0dXJuT2Zmc2V0KiBkYXRhKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw3ICs0MSw2IEBAIGVudW0gRXhpdEtpbmQgewogICAgIFVuY291bnRhYmxlLCAv
LyBXZSBleGl0ZWQgZm9yIG5vbmUgb2YgdGhlIGFib3ZlIHJlYXNvbnMsIGFuZCB3ZSBzaG91bGQg
bm90IGNvdW50IGl0LiBNb3N0IHVzZXMgb2YgdGhpcyBzaG91bGQgYmUgdmlld2VkIGFzIGEgRklY
TUUuCiB9OwogCi0jaWZuZGVmIE5ERUJVRwogaW5saW5lIGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9T
dHJpbmcoRXhpdEtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKQEAgLTU5LDcgKzU4
LDYgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9TdHJpbmcoRXhpdAogICAgICAgICBy
ZXR1cm4gIlVua25vd24iOwogICAgIH0KIH0KLSNlbmRpZgogCiBpbmxpbmUgYm9vbCBleGl0S2lu
ZElzQ291bnRhYmxlKEV4aXRLaW5kIGtpbmQpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDcgKzUwLDYgQEAgZW51bSBEYXRhRm9ybWF0IHsKICAgICBEYXRhRm9ybWF0SlNCb29sZWFuID0g
RGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdEJvb2xlYW4KIH07CiAKLSNpZm5kZWYgTkRFQlVHCiBp
bmxpbmUgY29uc3QgY2hhciogZGF0YUZvcm1hdFRvU3RyaW5nKERhdGFGb3JtYXQgZGF0YUZvcm1h
dCkKIHsKICAgICBzd2l0Y2ggKGRhdGFGb3JtYXQpIHsKQEAgLTgwLDcgKzc5LDYgQEAgaW5saW5l
IGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRUb1N0cmluZyhEYQogICAgICAgICByZXR1cm4gIlVua25v
d24iOwogICAgIH0KIH0KLSNlbmRpZgogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIGlubGluZSBib29s
IG5lZWREYXRhRm9ybWF0Q29udmVyc2lvbihEYXRhRm9ybWF0IGZyb20sIERhdGFGb3JtYXQgdG8p
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwCShyZXZpc2lvbiAxMDY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDIwICsyNyw0OSBAQAog
I2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0dldEJ5
SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2Zp
bGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQorewor
ICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNv
ZGVJbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CisgICAgCisgICAgaWYgKGluc3RydWN0aW9uWzBd
LnUub3Bjb2RlID09IGxsaW50X29wX21ldGhvZF9jaGVjaykKKyAgICAgICAgaW5zdHJ1Y3Rpb24r
KzsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1
cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUpCisgICAgICAgIHJldHVybiBHZXRCeUlkU3Rh
dHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOworICAg
IAorICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xv
YmFsRGF0YSgpLCBpZGVudCk7CisgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICAgICAg
cmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZv
dW5kLCBmYWxzZSk7CisgICAgCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoU2ltcGxlRGlyZWN0
LCBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSwgb2Zmc2V0LCBmYWxzZSk7CisjZWxzZQorICAgIHJl
dHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3Vu
ZCwgZmFsc2UpOworI2VuZGlmCit9CisKIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgs
IElkZW50aWZpZXImIGlkZW50KQogewogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsK
ICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50
KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgaWYgKCFw
cm9maWxlZEJsb2NrLT5udW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcygpKQorICAgICAgICByZXR1
cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7
CisgICAgCiAgICAgLy8gRmlyc3QgY2hlY2sgaWYgaXQgbWFrZXMgZWl0aGVyIGNhbGxzLCBpbiB3
aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUgc3VwZXIgY2FyZWZ1bCwgb3IKICAgICAvLyBpZiBpdCdz
IG5vdCBzZXQgYXQgYWxsLCBpbiB3aGljaCBjYXNlIHdlIHB1bnQuCiAgICAgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvID0gcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm8oYnl0ZWNvZGVJbmRl
eCk7CiAgICAgaWYgKCFzdHViSW5mby5zZWVuKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1
cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICByZXR1
cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7
CiAgICAgCiAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBsaXN0OwogICAgIGlu
dCBsaXN0U2l6ZTsKQEAgLTYwLDE4ICs4OSwxOSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IoCiAgICAgfQogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlzdFNpemU7
ICsraSkgewogICAgICAgICBpZiAoIWxpc3QtPmxpc3RbaV0uaXNEaXJlY3QpCi0gICAgICAgICAg
ICByZXR1cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91
bmQpOworICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTWFrZXNDYWxscywgU3RydWN0
dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsKICAgICB9CiAgICAgCiAgICAgLy8gTmV4dCBjaGVj
ayBpZiBpdCB0YWtlcyBzbG93IGNhc2UsIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBiZSBraW5k
IG9mIGNhcmVmdWwuCiAgICAgaWYgKHByb2ZpbGVkQmxvY2stPmxpa2VseVRvVGFrZVNsb3dDYXNl
KGJ5dGVjb2RlSW5kZXgpKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQ
YXRoLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhUYWtlc1Nsb3dQYXRoLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIHRydWUpOwogICAg
IAogICAgIC8vIEZpbmFsbHkgZmlndXJlIG91dCBpZiB3ZSBjYW4gZGVyaXZlIGFuIGFjY2VzcyBz
dHJhdGVneS4KICAgICBHZXRCeUlkU3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQubV93YXNTZWVu
SW5KSVQgPSB0cnVlOwogICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewogICAgIGNh
c2UgYWNjZXNzX3Vuc2V0OgotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZy
b21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgICAgIAog
ICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9zZWxmOiB7CiAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gc3R1YkluZm8udS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgp
OwpAQCAtMTMwLDcgKzE2MCw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvcigKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UgLy8gRU5BQkxFKEpJVCkKLSAg
ICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90
Rm91bmQpOworICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVy
ZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAko
cmV2aXNpb24gMTA2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDExIEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogICAgIAotICAgIEdldEJ5SWRTdGF0dXMoU3RhdGUgc3RhdGUsIGNvbnN0IFN0
cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0LCBzaXplX3Qgb2Zmc2V0KQorICAgIEdldEJ5SWRTdGF0
dXMoU3RhdGUgc3RhdGUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0LCBzaXplX3Qg
b2Zmc2V0LCBib29sIHdhc1NlZW5JbkpJVCkKICAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQogICAg
ICAgICAsIG1fc3RydWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAgICAgLCBtX29mZnNldChv
ZmZzZXQpCisgICAgICAgICwgbV93YXNTZWVuSW5KSVQod2FzU2VlbkluSklUKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKChzdGF0ZSA9PSBTaW1wbGVEaXJlY3QpID09IChvZmZzZXQgIT0gbm90Rm91
bmQpKTsKICAgICB9CkBAIC03MCwxMCArNzEsMTUgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cnVj
dHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVTZXQ7IH0K
ICAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKKyAg
ICBib29sIHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzU2VlbkluSklUOyB9Cisg
ICAgCiBwcml2YXRlOgorICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQo
Q29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYpOworICAgIAog
ICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgU3RydWN0dXJlU2V0IG1fc3RydWN0dXJlU2V0OwogICAg
IHNpemVfdCBtX29mZnNldDsKKyAgICBib29sIG1fd2FzU2VlbkluSklUOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaAkocmV2aXNpb24gMTA2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNDZWxsOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKICAg
ICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKKyAgICBzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm87CiAg
ICAgc3RydWN0IFZhbHVlUHJvZmlsZTsKIAogI2lmIEVOQUJMRShKSVQpCkBAIC0xNDYsNiArMTQ3
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb24g
eworICAgICAgICBJbnN0cnVjdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuanNDZWxs
LmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIEluc3RydWN0aW9uKE9wY29k
ZSBvcGNvZGUpCiAgICAgICAgIHsKICNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVU
RVIpCkBAIC0xODIsNiArMTg4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSW5zdHJ1
Y3Rpb24oUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYykgeyB1LmdldHRlckZ1
bmMgPSBnZXR0ZXJGdW5jOyB9CiAgICAgICAgIAorICAgICAgICBJbnN0cnVjdGlvbihMTEludENh
bGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSB7IHUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZv
OyB9CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihWYWx1ZVByb2ZpbGUqIHByb2ZpbGUp
IHsgdS5wcm9maWxlID0gcHJvZmlsZTsgfQogCiAgICAgICAgIHVuaW9uIHsKQEAgLTE5MSw3ICsx
OTksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3Ry
dWN0dXJlQ2hhaW4+IHN0cnVjdHVyZUNoYWluOwogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFz
ZTxKU0NlbGw+IGpzQ2VsbDsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
IGdldHRlckZ1bmM7CisgICAgICAgICAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
OwogICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlOworICAgICAgICAgICAgdm9pZCog
cG9pbnRlcjsKICAgICAgICAgfSB1OwogICAgICAgICAKICAgICBwcml2YXRlOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxs
TGlua0luZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50Q2FsbExpbmtJbmZv
X2gKKyNkZWZpbmUgTExJbnRDYWxsTGlua0luZm9faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9TZW50
aW5lbExpbmtlZExpc3QuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlv
bjsKKworc3RydWN0IExMSW50Q2FsbExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxO
b2RlPExMSW50Q2FsbExpbmtJbmZvPiB7CisgICAgTExJbnRDYWxsTGlua0luZm8oKQorICAgIHsK
KyAgICB9CisgICAgCisgICAgfkxMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAgICAgIGlm
IChpc09uTGlzdCgpKQorICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgfQorICAgIAorICAgIGJv
b2wgaXNMaW5rZWQoKSB7IHJldHVybiBjYWxsZWU7IH0KKyAgICAKKyAgICB2b2lkIHVubGluaygp
CisgICAgeworICAgICAgICBjYWxsZWUuY2xlYXIoKTsKKyAgICAgICAgbWFjaGluZUNvZGVUYXJn
ZXQgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisg
ICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgV3JpdGVCYXJyaWVyPEpTRnVu
Y3Rpb24+IGNhbGxlZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbGFzdFNlZW5DYWxs
ZWU7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1hY2hpbmVDb2RlVGFyZ2V0OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBMTEludENhbGxMaW5rSW5mb19oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENh
bGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTA2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNiArMzUsMTEgQEAgTWV0aG9kQ2FsbExpbmtTdGF0dXMgTWV0aG9kQ2FsbExpbmtTdGF0dQog
ICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNv
ZGVJbmRleCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAg
IC8vIE5PVEU6IFRoaXMgZG9lcyBub3QgaGF2ZSBhbiBMTEludCBmYWxsLWJhY2sgYmVjYXVzZSBM
TEludCBkb2VzIG5vdCBkbyBhbnkgbWV0aG9kCisgICAgLy8gY2FsbCBsaW5rIGNhY2hpbmcuCisg
ICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MoKSkKKyAg
ICAgICAgcmV0dXJuIE1ldGhvZENhbGxMaW5rU3RhdHVzKCk7CisgICAgCiAgICAgTWV0aG9kQ2Fs
bExpbmtJbmZvJiBtZXRob2RDYWxsID0gcHJvZmlsZWRCbG9jay0+Z2V0TWV0aG9kQ2FsbExpbmtJ
bmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIAogICAgIGlmICghbWV0aG9kQ2FsbC5zZWVuIHx8ICFt
ZXRob2RDYWxsLmNhY2hlZFN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCwgNCkg
XAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWQsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0
X2J5X2lkX3RyYW5zaXRpb24sIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0LCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X25vcm1hbCwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfcmVwbGFjZSwgOSkgXAog
ICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfZ2VuZXJpYywgOSkgXAogICAgICAgICBtYWNybyhv
cF9kZWxfYnlfaWQsIDQpIFwKQEAgLTIwMSw2ICsyMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdHlwZWRlZiBlbnVtIHsgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9JRF9FTlVNKSB9
IE9wY29kZUlEOwogICAgICN1bmRlZiBPUENPREVfSURfRU5VTQogCisgICAgY29uc3QgaW50IG1h
eE9wY29kZUxlbmd0aCA9IDk7CiAgICAgY29uc3QgaW50IG51bU9wY29kZUlEcyA9IG9wX2VuZCAr
IDE7CiAKICAgICAjZGVmaW5lIE9QQ09ERV9JRF9MRU5HVEhTKGlkLCBsZW5ndGgpIGNvbnN0IGlu
dCBpZCMjX2xlbmd0aCA9IGxlbmd0aDsKQEAgLTIxNyw3ICsyMjAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKFZFUklGWV9PUENPREVfSUQpOwogICAgICN1
bmRlZiBWRVJJRllfT1BDT0RFX0lECiAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBS
RVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExM
SU5UKQogI2lmIENPTVBJTEVSKFJWQ1QpIHx8IENPTVBJTEVSKElOVEVMKQogICAgIHR5cGVkZWYg
dm9pZCogT3Bjb2RlOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVkaWN0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHAJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsNyArMzYsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmbmRlZiBOREVCVUcKIGNv
bnN0IGNoYXIqIHByZWRpY3Rpb25Ub1N0cmluZyhQcmVkaWN0ZWRUeXBlIHZhbHVlKQogewogICAg
IGlmICh2YWx1ZSA9PSBQcmVkaWN0Tm9uZSkKQEAgLTE2MCw3ICsxNTksNiBAQCBjb25zdCBjaGFy
KiBwcmVkaWN0aW9uVG9TdHJpbmcoUHJlZGljdGVkCiAgICAgCiAgICAgcmV0dXJuIGRlc2NyaXB0
aW9uOwogfQotI2VuZGlmCiAKIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbkZyb21DbGFzc0luZm8o
Y29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIxNyw5ICsyMTcsNyBAQCBpbmxpbmUgYm9vbCBpc090aGVyUHJlZGljdGlvbihQcmVk
aWN0ZWRUCiAgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RPdGhlcjsKIH0KIAotI2lmbmRlZiBO
REVCVUcKIGNvbnN0IGNoYXIqIHByZWRpY3Rpb25Ub1N0cmluZyhQcmVkaWN0ZWRUeXBlIHZhbHVl
KTsKLSNlbmRpZgogCiAvLyBNZXJnZSB0d28gcHJlZGljdGlvbnMuIE5vdGUgdGhhdCBjdXJyZW50
bHkgdGhpcyBqdXN0IGRvZXMgbGVmdCB8IHJpZ2h0LiBJdCBtYXkKIC8vIHNlZW0gdGVtcHRpbmcg
dG8gZG8gc28gZGlyZWN0bHksIGJ1dCB5b3Ugd291bGQgYmUgZG9pbmcgc28gYXQgeW91ciBvd24g
cGVyaWwsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDI3ICsyNyw2
OSBAQAogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUu
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorUHV0
QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7
CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRl
Y29kZUluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkK
KyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUp
CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5v
dEZvdW5kKTsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRf
b3BfcHV0X2J5X2lkKSB7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgq
cHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgICAgIGlmIChvZmZzZXQg
PT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhTaW1wbGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9mZnNldCk7CisgICAgfQor
ICAgIAorICAgIEFTU0VSVChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5v
cGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAKKyAg
ICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdl
dCgpOworICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IGluc3RydWN0aW9uWzddLnUuc3RydWN0
dXJlQ2hhaW4uZ2V0KCk7CisgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7CisgICAgQVNTRVJUKGNo
YWluKTsKKyAgICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5nZXQoKnByb2Zp
bGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91
bmQpCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAs
IG5vdEZvdW5kKTsKKyAgICAKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVUcmFuc2l0
aW9uLCBzdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY2hhaW4sIG9mZnNldCk7CisjZWxzZQorICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsK
KyNlbmRpZgorfQorCiBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29k
ZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVy
JiBpZGVudCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VE
X1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5B
QkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9j
ay0+bnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVG
cm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAg
IGlmIChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkK
ICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90
Rm91bmQpOwogICAgIAogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVk
QmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1YkluZm8uc2Vl
bikKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwg
bm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2Nr
LCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgCiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nl
c3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlk
U3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJu
IGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwog
ICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTogewogICAgICAgICBz
aXplX3Qgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0
dXJlLT5nZXQoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmgJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDggQEAg
cHVibGljOgogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQog
ICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50
KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAK
ICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAg
U3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAkocmV2aXNpb24gMTA2NTI4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAkod29ya2luZyBjb3B5KQpA
QCAtMjQ5LDcgKzI0OSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29k
ZShtX3NvdXJjZS5jb25zdGFudCk7CiAgICAgfQogICAgIAotI2lmbmRlZiBOREVCVUcKICAgICB2
b2lkIGR1bXAoRklMRSogb3V0KSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoICh0ZWNobmlx
dWUoKSkgewpAQCAtMzE0LDcgKzMxMyw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgfQotI2VuZGlmCiAgICAgCiBwcml2YXRlOgogICAgIFZhbHVlUmVjb3Zl
cnlUZWNobmlxdWUgbV90ZWNobmlxdWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24g
MTA2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJC
YXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlVTdHJpbmcuaCIKQEAgLTE1MCwyNiArMTUxLDE2IEBAIHZvaWQgUmVzb2x2ZVJlc3Vs
dDo6Y2hlY2tWYWxpZGl0eSgpCiB9CiAjZW5kaWYKIAotI2lmbmRlZiBOREVCVUcKIHN0YXRpYyBi
b29sIHNfZHVtcHNHZW5lcmF0ZWRDb2RlID0gZmFsc2U7Ci0jZW5kaWYKIAogdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6c2V0RHVtcHNHZW5lcmF0ZWRDb2RlKGJvb2wgZHVtcHNHZW5lcmF0ZWRDb2Rl
KQogewotI2lmbmRlZiBOREVCVUcKICAgICBzX2R1bXBzR2VuZXJhdGVkQ29kZSA9IGR1bXBzR2Vu
ZXJhdGVkQ29kZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGR1bXBzR2VuZXJhdGVkQ29kZSk7
Ci0jZW5kaWYKIH0KIAogYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2Rl
KCkKIHsKLSNpZm5kZWYgTkRFQlVHCiAgICAgcmV0dXJuIHNfZHVtcHNHZW5lcmF0ZWRDb2RlOwot
I2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKIH0KIAogSlNPYmplY3QqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSgpCkBAIC0xODIsMTAgKzE3Myw4IEBAIEpTT2JqZWN0KiBCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogCiAgICAgbV9jb2RlQmxvY2stPnNldEluc3RydWN0
aW9uQ291bnQobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAKLSNpZm5kZWYg
TkRFQlVHCiAgICAgaWYgKHNfZHVtcHNHZW5lcmF0ZWRDb2RlKQogICAgICAgICBtX2NvZGVCbG9j
ay0+ZHVtcChtX3Njb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKTsKLSNlbmRp
ZgogCiAgICAgaWYgKChtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiAhbV9jb2RlQmxvY2st
Pm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSAmJiAhbV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSkg
fHwgbV9jb2RlVHlwZSA9PSBFdmFsQ29kZSkKICAgICAgICAgc3ltYm9sVGFibGUoKS5jbGVhcigp
OwpAQCAtMTMwNSw5ICsxMjk0LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxS
ZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKElO
VEVSUFJFVEVSKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0
aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICAgICAgYm9vbCBkeW5hbWlj
ID0gcmVzb2x2ZVJlc3VsdC5pc0R5bmFtaWMoKSAmJiByZXNvbHZlUmVzdWx0LmRlcHRoKCk7CiAg
ICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShkeW5hbWlj
ID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0xNDExLDkgKzEzOTgs
NiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAgICAgICAgIHJl
dHVybiBiYXNlRHN0OwogICAgIH0KIAotCi0KLQogICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9
IGVtaXRQcm9maWxlZE9wY29kZShvcF9yZXNvbHZlX3dpdGhfYmFzZSk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGJhc2VEc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChwcm9wRHN0LT5pbmRleCgpKTsKQEAgLTE1MjEsOSArMTUwNSw3IEBAIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRNZXRob2RDaGVjaygKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHkpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1f
Y29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNp
emUoKSk7Ci0jZW5kaWYKIAogICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxl
ZE9wY29kZShvcF9nZXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmlu
ZGV4KCkpOwpAQCAtMTU0OSw5ICsxNTMxLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRHZXRBcgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5
SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVy
SUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+
YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2Vu
ZGlmCiAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTU2Nyw5ICsxNTQ3LDcgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRF
UikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVj
dGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlf
aWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE4NTAs
NyArMTgyOCwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoCiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoKSk7IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVu
dHMucmVnaXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5U
KQorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlu
a0luZm8oKSk7CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1
bHQoKSkgewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNv
ZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKQEAgLTE5NTQsNyArMTkzNiwxMSBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxB
cmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7IC8vIGFyZ0NvdW50CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0ZXJPZmZzZXQoKSk7IC8v
IHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0luZm8oKSk7CisjZWxzZQogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICBWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsK
QEAgLTIyMTUsNyArMjIwMSwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENhdGNoCiB7CiAgICAgbV91c2VzRXhjZXB0aW9ucyA9IHRydWU7CiAjaWYgRU5BQkxFKEpJVCkK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgSGFuZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQo
MCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNT
Y29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0aW9uTGFiZWwoTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfb3BfY2F0Y2gpKSkgfTsKKyNlbHNlCiAgICAgSGFuZGxlckluZm8gaW5mbyA9
IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0aW9u
TGFiZWwoKSB9OworI2VuZGlmCiAjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0
LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9k
eW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGggfTsKICNlbmRpZgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHJldmlzaW9uIDEw
NjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yODcsNyArMjg3LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1Y3R1cmU7CiAgICAgfQogICAgIAotI2lmbmRlZiBO
REVCVUcKICAgICB2b2lkIGR1bXAoRklMRSogb3V0KSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KGlzVG9wKCkpIHsKQEAgLTMwMCw3ICsyOTksNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmcHJp
bnRmKG91dCwgIiVwIiwgbV9zdHJ1Y3R1cmUpOwogICAgICAgICBmcHJpbnRmKG91dCwgIl0iKTsK
ICAgICB9Ci0jZW5kaWYKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgU3RydWN0dXJlKiB0b3BWYWx1
ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U3RydWN0dXJlKj4oMSk7IH0KQEAgLTQ2Niwx
NCArNDY0LDEyIEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgLy8gY29tcGxleGl0
eSBvZiB0aGUgY29kZS4KICAgICB9CiAgICAgCi0jaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgZHVt
cChGSUxFKiBvdXQpIGNvbnN0CiAgICAgewogICAgICAgICBmcHJpbnRmKG91dCwgIiglcywgIiwg
cHJlZGljdGlvblRvU3RyaW5nKG1fdHlwZSkpOwogICAgICAgICBtX3N0cnVjdHVyZS5kdW1wKG91
dCk7CiAgICAgICAgIGZwcmludGYob3V0LCAiKSIpOwogICAgIH0KLSNlbmRpZgogCiAgICAgU3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZSBtX3N0cnVjdHVyZTsKICAgICBQcmVkaWN0ZWRUeXBlIG1fdHlw
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCShyZXZpc2lvbiAxMDY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA2LDkgKzYwNiw3IEBAIHBy
aXZhdGU6CiAgICAgewogICAgICAgICBVTlVTRURfUEFSQU0obm9kZUluZGV4KTsKICAgICAgICAg
Ci0gICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7
Ci0gICAgICAgIEFTU0VSVChwcm9maWxlKTsKLSAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0
aW9uID0gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgICAgIFByZWRp
Y3RlZFR5cGUgcHJlZGljdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+
dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwog
I2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCJEeW5hbWljIFtA
JXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4LCBieXRlY29kZUluZGV4LCBw
cmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikpOwogI2VuZGlmCkBAIC0xMDQzLDYgKzEwNDEs
OSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhib29sCiAgICAgCiAgICAg
Ly8gSWYgd2UgZ2V0IGhlcmUgdGhlbiBpdCBsb29rcyBsaWtlIHdlIHNob3VsZCBkZWZpbml0ZWx5
IGlubGluZSB0aGlzIGNvZGUuIFByb2NlZWQKICAgICAvLyB3aXRoIHBhcnNpbmcgdGhlIGNvZGUg
dG8gZ2V0IGJ5dGVjb2RlLCBzbyB0aGF0IHdlIGNhbiB0aGVuIHBhcnNlIHRoZSBieXRlY29kZS4K
KyAgICAvLyBOb3RlIHRoYXQgaWYgTExJbnQgaXMgZW5hYmxlZCwgdGhlIGJ5dGVjb2RlIHdpbGwg
YWx3YXlzIGJlIGF2YWlsYWJsZS4gQWxzbyBub3RlCisgICAgLy8gdGhhdCBpZiBMTEludCBpcyBl
bmFibGVkLCB3ZSBtYXkgaW5saW5lIGEgY29kZSBibG9jayB0aGF0IGhhcyBuZXZlciBiZWVuIEpJ
VHRlZAorICAgIC8vIGJlZm9yZSEKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fY29kZUJs
b2NrQ2FjaGUuZ2V0KENvZGVCbG9ja0tleShleGVjdXRhYmxlLCBraW5kKSwgZXhwZWN0ZWRGdW5j
dGlvbi0+c2NvcGUoKSk7CiAgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTE3NDMsNyArMTc0NCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2ssIG1fY3VycmVudEluZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG1ldGhv
ZENhbGxTdGF0dXMuaXNTZXQoKQotICAgICAgICAgICAgICAgICYmICFnZXRCeUlkU3RhdHVzLmlz
U2V0KCkKKyAgICAgICAgICAgICAgICAmJiAhZ2V0QnlJZFN0YXR1cy53YXNTZWVuSW5KSVQoKQog
ICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpIHsKICAgICAgICAgICAgICAgICAvLyBJ
dCdzIG1vbm9tb3JwaGljIGFzIGZhciBhcyB3ZSBjYW4gdGVsbCwgc2luY2UgdGhlIG1ldGhvZF9j
aGVjayB3YXMgbGlua2VkCiAgICAgICAgICAgICAgICAgLy8gYnV0IHRoZSBzbG93IHBhdGggKGku
ZS4gdGhlIG5vcm1hbCBnZXRfYnlfaWQpIG5ldmVyIGZpcmVkLgpAQCAtMTgxMiw3ICsxODEzLDkg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkOiB7CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBi
YXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmll
clJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMDY1MjgpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTEsNiArMTExLDggQEAgaW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNv
ZGVJRCBvcAogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlf
aWQ6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAg
ICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgog
ICAgIGNhc2Ugb3Bfam1wOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZv
LmgJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBS
SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw2IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuICh1bnNpZ25lZClyZWc7CiAgICAgfQogCi0jaWZuZGVmIE5ERUJVRwogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoRlBSUmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VS
VChyZWcgIT0gSW52YWxpZEZQUlJlZyk7CkBAIC05OSw3ICs5OCw2IEBAIHB1YmxpYzoKICNlbmRp
ZgogICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107CiAgICAgfQotI2VuZGlmCiB9
OwogCiAjZW5kaWYKQEAgLTE0MSw3ICsxMzksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAo
dW5zaWduZWQpcmVnOwogICAgIH0KIAotI2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZGVidWdOYW1lKEZQUlJlZyByZWcpCiAgICAgewogICAgICAgICBBU1NFUlQocmVnICE9
IEludmFsaWRGUFJSZWcpOwpAQCAtMTU4LDcgKzE1NSw2IEBAIHB1YmxpYzoKICAgICAgICAgfTsK
ICAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOwogICAgIH0KLSNlbmRpZgogfTsK
IAogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaAkocmV2
aXNpb24gMTA2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5Miw3ICsyOTIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCi0jaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWcgIT0gSW52
YWxpZEdQUlJlZyk7CkBAIC0zMDMsNyArMzAyLDYgQEAgcHVibGljOgogICAgICAgICB9OwogICAg
ICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107CiAgICAgfQotI2VuZGlmCiBwcml2YXRl
OgogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7
CkBAIC0zNjMsNyArMzYxLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIAotI2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQ
UlJlZyByZWcpCiAgICAgewogICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOwpA
QCAtMzc2LDcgKzM3Myw2IEBAIHB1YmxpYzoKICAgICAgICAgfTsKICAgICAgICAgcmV0dXJuIG5h
bWVGb3JSZWdpc3RlcltyZWddOwogICAgIH0KLSNlbmRpZgogcHJpdmF0ZToKIAogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOwpAQCAtNDM2LDcgKzQz
Miw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSNpZm5kZWYg
TkRFQlVHCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQogICAg
IHsKICAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTQ0OSw3ICs0NDQs
NiBAQCBwdWJsaWM6CiAgICAgICAgIH07CiAgICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJb
cmVnXTsKICAgICB9Ci0jZW5kaWYKIHByaXZhdGU6CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxMDY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNiBAQAogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLSNpZm5kZWYgTkRFQlVHCi0KIC8vIENy
ZWF0ZXMgYW4gYXJyYXkgb2Ygc3RyaW5naXplZCBuYW1lcy4KIHN0YXRpYyBjb25zdCBjaGFyKiBk
ZmdPcE5hbWVzW10gPSB7CiAjZGVmaW5lIFNUUklOR0laRV9ERkdfT1BfRU5VTShvcGNvZGUsIGZs
YWdzKSAjb3Bjb2RlICwKQEAgLTI5OCw4ICsyOTYsNiBAQCB2b2lkIEdyYXBoOjpkdW1wKENvZGVC
bG9jayogY29kZUJsb2NrKQogICAgICAgICBkdW1wKGksIGNvZGVCbG9jayk7CiB9CiAKLSNlbmRp
ZgotCiAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGJlIGl0ZXJhdGl2ZSwgbm90IHJlY3Vyc2l2
ZS4KICNkZWZpbmUgRE9fVE9fQ0hJTERSRU4obm9kZSwgdGhpbmdUb0RvKSBkbyB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgTm9kZSYgX25vZGUgPSAobm9kZSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw2IEBA
IHB1YmxpYzoKICAgICAgICAgbm9kZS5jaGlsZHJlbi5maXhlZC5jaGlsZDMgPSBOb05vZGU7CiAg
ICAgfQogCi0jaWZuZGVmIE5ERUJVRwogICAgIC8vIENvZGVCbG9jayBpcyBvcHRpb25hbCwgYnV0
IG1heSBhbGxvdyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGR1bXBlZCAoZS5nLiBJZGVu
dGlmaWVyIG5hbWVzKS4KICAgICB2b2lkIGR1bXAoQ29kZUJsb2NrKiA9IDApOwogICAgIHZvaWQg
ZHVtcChOb2RlSW5kZXgsIENvZGVCbG9jayogPSAwKTsKQEAgLTExOCw3ICsxMTcsNiBAQCBwdWJs
aWM6CiAgICAgLy8gRHVtcCB0aGUgY29kZSBvcmlnaW4gb2YgdGhlIGdpdmVuIG5vZGUgYXMgYSBk
aWZmIGZyb20gdGhlIGNvZGUgb3JpZ2luIG9mIHRoZQogICAgIC8vIHByZWNlZGluZyBub2RlLgog
ICAgIHZvaWQgZHVtcENvZGVPcmlnaW4oTm9kZUluZGV4KTsKLSNlbmRpZgogCiAgICAgQmxvY2tJ
bmRleCBibG9ja0luZGV4Rm9yQnl0ZWNvZGVPZmZzZXQoVmVjdG9yPEJsb2NrSW5kZXg+JiBibG9j
a3MsIHVuc2lnbmVkIGJ5dGVjb2RlQmVnaW4pOwogCkBAIC0yMTQsMTIgKzIxMiwxMCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBhc0Z1bmN0aW9uKGZ1bmN0aW9uKTsKICAgICB9CiAKLSNpZm5k
ZWYgTkRFQlVHCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgKm9wTmFtZShOb2RlVHlwZSk7CiAgICAg
CiAgICAgLy8gVGhpcyBpcyBPKG4pLCBhbmQgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdmVyYm9z
ZSBkdW1wcy4KICAgICBjb25zdCBjaGFyKiBuYW1lT2ZWYXJpYWJsZUFjY2Vzc0RhdGEoVmFyaWFi
bGVBY2Nlc3NEYXRhKik7Ci0jZW5kaWYKIAogICAgIHZvaWQgcHJlZGljdEFyZ3VtZW50VHlwZXMo
Q29kZUJsb2NrKik7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAko
cmV2aXNpb24gMTA2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDYgQEAgc3RhdGljIGlubGluZSBib29sIG5vZGVD
YW5TcGVjdWxhdGVJbnRlZwogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWZuZGVmIE5ERUJVRwog
c3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBhcml0aE5vZGVGbGFnc0FzU3RyaW5nKEFyaXRoTm9k
ZUZsYWdzIGZsYWdzKQogewogICAgIGlmICghZmxhZ3MpCkBAIC0xMzgsNyArMTM3LDYgQEAgc3Rh
dGljIGlubGluZSBjb25zdCBjaGFyKiBhcml0aE5vZGVGbGFncwogICAgIAogICAgIHJldHVybiBk
ZXNjcmlwdGlvbjsKIH0KLSNlbmRpZgogCiAvLyBFbnRyaWVzIGluIHRoZSBOb2RlVHlwZSBlbnVt
IChiZWxvdykgYXJlIGNvbXBvc2VkIG9mIGFuIGlkLCBhIHJlc3VsdCB0eXBlIChwb3NzaWJseSBu
b25lKQogLy8gYW5kIHNvbWUgYWRkaXRpb25hbCBpbmZvcm1hdGl2ZSBmbGFncyAobXVzdCBnZW5l
cmF0ZSwgaXMgY29uc3RhbnQsIGV0YykuCkBAIC00OTksNyArNDk3LDYgQEAgc3RydWN0IE5vZGUg
ewogICAgICAgICByZXR1cm4gdmFyaWFibGVBY2Nlc3NEYXRhKCktPmxvY2FsKCk7CiAgICAgfQog
Ci0jaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgaGFzSWRlbnRpZmllcigpCiAgICAgewogICAgICAg
ICBzd2l0Y2ggKG9wKSB7CkBAIC01MTUsNyArNTEyLDYgQEAgc3RydWN0IE5vZGUgewogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQotI2VuZGlmCiAKICAgICB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDYg
QEAgT1NSRXhpdDo6T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVlUwogICAgICAgICBtX3Zh
cmlhYmxlc1t2YXJpYWJsZV0gPSBqaXQtPmNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKGppdC0+bV92
YXJpYWJsZXNbdmFyaWFibGVdKTsKIH0KIAotI2lmbmRlZiBOREVCVUcKIHZvaWQgT1NSRXhpdDo6
ZHVtcChGSUxFKiBvdXQpIGNvbnN0CiB7CiAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7
IGFyZ3VtZW50IDwgbV9hcmd1bWVudHMuc2l6ZSgpOyArK2FyZ3VtZW50KQpAQCAtNjIsNyArNjEs
NiBAQCB2b2lkIE9TUkV4aXQ6OmR1bXAoRklMRSogb3V0KSBjb25zdAogICAgIGZvciAodW5zaWdu
ZWQgdmFyaWFibGUgPSAwOyB2YXJpYWJsZSA8IG1fdmFyaWFibGVzLnNpemUoKTsgKyt2YXJpYWJs
ZSkKICAgICAgICAgbV92YXJpYWJsZXNbdmFyaWFibGVdLmR1bXAob3V0KTsKIH0KLSNlbmRpZgog
CiBib29sIE9TUkV4aXQ6OmNvbnNpZGVyQWRkaW5nQXNGcmVxdWVudEV4aXRTaXRlU2xvdyhDb2Rl
QmxvY2sqIGRmZ0NvZGVCbG9jaywgQ29kZUJsb2NrKiBwcm9maWxlZENvZGVCbG9jaykKIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiAxMDY1Mjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTM3LDkgKzEzNyw3IEBAIHN0cnVjdCBPU1JFeGl0IHsKICAgICAgICAgcmV0dXJuIGNv
bnNpZGVyQWRkaW5nQXNGcmVxdWVudEV4aXRTaXRlU2xvdyhkZmdDb2RlQmxvY2ssIHByb2ZpbGVk
Q29kZUJsb2NrKTsKICAgICB9CiAgICAgCi0jaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgZHVtcChG
SUxFKiBvdXQpIGNvbnN0OwotI2VuZGlmCiAgICAgCiAgICAgVmVjdG9yPFZhbHVlUmVjb3Zlcnks
IDA+IG1fYXJndW1lbnRzOwogICAgIFZlY3RvcjxWYWx1ZVJlY292ZXJ5LCAwPiBtX3ZhcmlhYmxl
czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlci5jcHAJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMjEgQEAg
dm9pZCBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdWludDMyX3QgZXhpdElu
ZGV4ID0gZ2xvYmFsRGF0YS0+b3NyRXhpdEluZGV4OwogICAgIE9TUkV4aXQmIGV4aXQgPSBjb2Rl
QmxvY2stPm9zckV4aXQoZXhpdEluZGV4KTsKICAgICAKKyAgICAvLyBNYWtlIHN1cmUgYWxsIGNv
ZGUgb24gb3VyIGlubGluZSBzdGFjayBpcyBKSVQgY29tcGlsZWQuIFRoaXMgaXMgbmVjZXNzYXJ5
IHNpbmNlCisgICAgLy8gd2UgbWF5IG9wdCB0byBpbmxpbmUgYSBjb2RlIGJsb2NrIGV2ZW4gYmVm
b3JlIGl0IGhhZCBldmVyIGJlZW4gY29tcGlsZWQgYnkgdGhlCisgICAgLy8gSklULCBidXQgb3Vy
IE9TUiBleGl0IGluZnJhc3RydWN0dXJlIGN1cnJlbnRseSBvbmx5IHdvcmtzIGlmIHRoZSB0YXJn
ZXQgb2YgdGhlCisgICAgLy8gT1NSIGV4aXQgaXMgSklUIGNvZGUuIFRoaXMgY291bGQgYmUgY2hh
bmdlZCBzaW5jZSB0aGVyZSBpcyBub3RoaW5nIHBhcnRpY3VsYXJseQorICAgIC8vIGhhcmQgYWJv
dXQgZG9pbmcgYW4gT1NSIGV4aXQgaW50byB0aGUgaW50ZXJwcmV0ZXIsIGJ1dCBmb3Igbm93IHRo
aXMgc2VlbXMgdG8gbWFrZQorICAgIC8vIHNlbnNlIGluIHRoYXQgaWYgd2UncmUgT1NSIGV4aXRp
bmcgZnJvbSBpbmxpbmVkIGNvZGUgb2YgYSBERkcgY29kZSBibG9jaywgdGhlbgorICAgIC8vIHBy
b2JhYmx5IGl0J3MgYSBnb29kIHNpZ24gdGhhdCB0aGUgdGhpbmcgd2UncmUgZXhpdGluZyBpbnRv
IGlzIGhvdC4gRXZlbiBtb3JlCisgICAgLy8gaW50ZXJlc3RpbmdseSwgc2luY2UgdGhlIGNvZGUg
d2FzIGlubGluZWQsIGl0IG1heSBuZXZlciBvdGhlcndpc2UgZ2V0IEpJVAorICAgIC8vIGNvbXBp
bGVkIHNpbmNlIHRoZSBhY3Qgb2YgaW5saW5pbmcgaXQgbWF5IGVuc3VyZSB0aGF0IGl0IG90aGVy
d2lzZSBuZXZlciBydW5zLgorICAgIGZvciAoQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gZXhpdC5t
X2NvZGVPcmlnaW47IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBjb2RlT3JpZ2luID0gY29k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlcikgeworICAgICAgICBzdGF0aWNfY2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJs
ZS5nZXQoKSkKKyAgICAgICAgICAgIC0+YmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUtPmlzQ2FsbCA/IENvZGVGb3JDYWxsIDogQ29kZUZvckNvbnN0cnVjdCkK
KyAgICAgICAgICAgIC0+aml0Q29tcGlsZSgqZ2xvYmFsRGF0YSk7CisgICAgfQorICAgIAogICAg
IFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5ID0gMDsKICAgICBpZiAoZXhpdC5tX3JlY292
ZXJ5SW5kZXgpCiAgICAgICAgIHJlY292ZXJ5ID0gJmNvZGVCbG9jay0+c3BlY3VsYXRpb25SZWNv
dmVyeShleGl0Lm1fcmVjb3ZlcnlJbmRleCAtIDEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxMDY1MjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhp
dC5oIgogI2luY2x1ZGUgIkRGR1JlcGF0Y2guaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZh
bHVlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW5saW5lQVNNLmgi
CiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTY3Myw1MCArNjc0LDYgQEAgc2l6ZV90IERG
R19PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cgogICAgIHJldHVybiBKU1ZhbHVlOjpzdHJp
Y3RFcXVhbChleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AyKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSgpOwotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0
Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqKTsKLQotI2lmIENQVShYODZf
NjQpCi1hc20gKAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9M
X1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJtb3YgLTQwKCVy
MTMpLCAlcjEzXG4iCi0gICAgIm1vdiAlcjEzLCAlcmRpXG4iCi0gICAgImptcCAiIFNZTUJPTF9T
VFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxu
IgotKTsKLSNlbGlmIENQVShYODYpCi1hc20gKAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxu
IgotICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4iCi0gICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4i
Ci0gICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZh
bHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKQotYXNtICgK
LSIudGV4dCIgIlxuIgotIi5hbGlnbiAyIiAiXG4iCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiXG4iCi0iLnRodW1iIiAiXG4iCi0iLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BB
UkFNKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCi0g
ICAgImNweSByMCwgcjUiICJcbiIKLSAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbmRpZgotCi1F
bmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhl
Y1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEg
PSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
Z2xvYmFsRGF0YSwgZXhlYyk7Ci0gICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVj
LT5nbG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Ci19Ci0KIHN0YXRpYyB2b2lkKiBo
YW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgY2FsbGVlLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0Nh
bGxlZS0+Y2FsbGVyRnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CShyZXZpc2lvbiAxMDY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODM3LDcgKzgzNyw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChT
d2VlcFRvZ2dsZSBzd2VlcFRvZ2cKICAgICAgICAgc2V0SGlnaFdhdGVyTWFyayhtYXgocHJvcG9y
dGlvbmFsQnl0ZXMsIG1fbWluQnl0ZXNQZXJDeWNsZSkpOwogICAgIH0KICAgICBKQVZBU0NSSVBU
Q09SRV9HQ19FTkQoKTsKLQorICAgIAogICAgICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMDY1MjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYg
KzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNs
YXNzIEpTVmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAg
ICBjbGFzcyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTEzNSwxMSArMTM2
LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lz
dGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZFNwYWNlOwogICAgICAg
ICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBCdW1wU3Bh
Y2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKLSAgICAgICAgZnJpZW5kIGNs
YXNzIENvZGVCbG9jazsKIAogICAgICAgICBzaXplX3Qgd2F0ZXJNYXJrKCk7CiAgICAgICAgIHNp
emVfdCBoaWdoV2F0ZXJNYXJrKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFjay5jcHAJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICszMDQsNyBAQCBBTFdB
WVNfSU5MSU5FIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oCiAjZW5kaWYKIAogICAgIEFTU0VS
VChIZWFwOjppc01hcmtlZChjZWxsKSk7Ci0KKyAgICAKICAgICBpZiAoaXNKU1N0cmluZyhjZWxs
KSkgewogICAgICAgICBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+
KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxMDY1MjgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNz
IExpdmVPYmplY3RJdGVyYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNz
IFdlYWtHQ0hhbmRsZTsKIGNsYXNzIFNsb3RWaXNpdG9yOwogCkBAIC04Nyw2ICs4OCw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGZyZWVCbG9ja3MoTWFya2VkQmxvY2sqIGhlYWQpOwogCiBwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCogYWxsb2NhdGVTbG93Q2FzZShTaXplQ2xhc3MmKTsKICAgICB2
b2lkKiB0cnlBbGxvY2F0ZUhlbHBlcihNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CiAgICAgdm9p
ZCogdHJ5QWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTA2NTI4
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDkgQEAgbmFtZXNwYWNlIEpTQyAgewogI2lmIEVOQUJM
RShJTlRFUlBSRVRFUikKICAgICAgICAgSW5zdHJ1Y3Rpb24qIHJldHVyblZQQygpIGNvbnN0IHsg
cmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10udlBDKCk7IH0KICNlbmRpZgorI2lm
IEVOQUJMRShMTElOVCkKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdCB7
IHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPih0aGlzW1JlZ2lzdGVyRmlsZTo6QXJn
dW1lbnRDb3VudF0udGFnKCkpOyB9CisjZW5kaWYKIAogICAgICAgICB2b2lkIHNldENhbGxlckZy
YW1lKENhbGxGcmFtZSogY2FsbGVyRnJhbWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlz
KVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXSA9IGNhbGxlckZyYW1lOyB9CiAgICAgICAgIHZv
aWQgc2V0U2NvcGVDaGFpbihTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikgeyBzdGF0aWNfY2Fz
dDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0gPSBzY29wZUNoYWlu
OyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcg
QEAKICNpbmNsdWRlICJKSVQuaCIKICNlbmRpZgogCi0jZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBV
VEVEX0dPVE9fV09SS0FST1VORCAoRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpICYm
ICFkZWZpbmVkKF9fbGx2bV9fKSkKKyNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19X
T1JLQVJPVU5EICgoRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShM
TElOVCkpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApA
QCAtNTQ3LDE3ICs1NDcsNDMgQEAgSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKIHsKIH0KIAot
dm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShib29sIGNhblVzZUpJVCkKK0ludGVycHJldGVy
Ojp+SW50ZXJwcmV0ZXIoKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KQorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICBkZWxldGVb
XSBtX29wY29kZVRhYmxlOworI2VuZGlmCit9CisKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxp
emUoTExJbnQ6OkRhdGEqIGxsaW50RGF0YSwgYm9vbCBjYW5Vc2VKSVQpCit7CisgICAgVU5VU0VE
X1BBUkFNKGxsaW50RGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKGNhblVzZUpJVCk7CisjaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5B
QkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisgICAgLy8gSGF2aW5nIExMSW50IGVuYWJs
ZWQsIGJ1dCBub3QgYmVpbmcgYWJsZSB0byB1c2UgdGhlIEpJVCwgYW5kIG5vdCBoYXZpbmcKKyAg
ICAvLyBhIGNvbXB1dGVkIGdvdG8gaW50ZXJwcmV0ZXIsIGlzIG5vdCBzdXBwb3J0ZWQuIE5vdCBi
ZWNhdXNlIHdlIGNhbm5vdAorICAgIC8vIHN1cHBvcnQgaXQsIGJ1dCBiZWNhdXNlIEkgZGVjaWRl
ZCB0byBkcmF3IHRoZSBsaW5lIGF0IHRoZSBudW1iZXIgb2YKKyAgICAvLyBwZXJtdXRhdGlvbnMg
b2YgZXhlY3V0aW9uIGVuZ2luZXMgdGhhdCBJIHdhbnRlZCB0aGlzIGNvZGUgdG8gZ3Jvay4KKyAg
ICBBU1NFUlQoY2FuVXNlSklUKTsKKyNlbmRpZgogICAgIGlmIChjYW5Vc2VKSVQpIHsKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bjb2RlVGFibGUgPSBsbGludERhdGEtPm9wY29kZU1h
cCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQorICAg
ICAgICAgICAgbV9vcGNvZGVJRFRhYmxlLmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2Fz
dDxPcGNvZGVJRD4oaSkpOworI2Vsc2UKICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVzZW50
LCBkb24ndCB1c2UganVtcCBkZXN0aW5hdGlvbnMgZm9yIG9wY29kZXMuCiAgICAgICAgIAogICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAgICAg
ICBPcGNvZGUgb3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KGkpKTsKICAgICAgICAgICAgIG1fb3Bjb2RlVGFibGVbaV0gPSBvcGNvZGU7CiAgICAgICAg
IH0KKyNlbmRpZgogICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29w
Y29kZVRhYmxlID0gbmV3IE9wY29kZVtudW1PcGNvZGVJRHNdOworI2VuZGlmCiAgICAgICAgIHBy
aXZhdGVFeGVjdXRlKEluaXRpYWxpemVBbmRSZXR1cm4sIDAsIDApOwogICAgICAgICAKICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKQEAgLTU2Niw3ICs1OTIs
NiBAQCB2b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKGJvb2wgY2FuVXNlCiAgICAgICAgIG1f
ZW5hYmxlZCA9IHRydWU7CiAgICAgfQogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2FuVXNlSklU
KTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICNlbHNl
CkBAIC02NjcsOSArNjkyLDExIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2Fs
bEZyYW0KIAogYm9vbCBJbnRlcnByZXRlcjo6aXNPcGNvZGUoT3Bjb2RlIG9wY29kZSkKIHsKLSNp
ZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURf
R09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoTExJTlQpCiAg
ICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybiBvcGNvZGUgPj0gMCAmJiBzdGF0aWNf
Y2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSkgPD0gb3BfZW5k
OworI2VuZGlmCiAgICAgcmV0dXJuIG9wY29kZSAhPSBIYXNoVHJhaXRzPE9wY29kZT46OmVtcHR5
VmFsdWUoKQogICAgICAgICAmJiAhSGFzaFRyYWl0czxPcGNvZGU+Ojppc0RlbGV0ZWRWYWx1ZShv
cGNvZGUpCiAgICAgICAgICYmIG1fb3Bjb2RlSURUYWJsZS5jb250YWlucyhvcGNvZGUpOwpAQCAt
NzI2LDExICs3NTMsMTEgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENh
bAogICAgIC8vIGhhdmUgdG8gc3VidHJhY3QgMS4KICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUo
SU5URVJQUkVURVIpCiAgICAgaWYgKGNhbGxlckZyYW1lLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklU
KCkpCi0gICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChj
YWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9j
ay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAg
ICAgZWxzZQogICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZz
ZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAxOwogI2VsaWYgRU5BQkxFKEpJVCkKLSAgICBi
eXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1
cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQo
Y2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZWxzZQogICAgIGJ5dGVjb2Rl
T2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygp
KSAtIDE7CiAjZW5kaWYKQEAgLTMzMjUsNiArMzM1Miw4IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6
CiAjaWYgVVNFKEdDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQpCiAgICAgICBza2lwX3B1dF9i
eV9pZDoKICNlbmRpZgorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0KQorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
KQogICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pIHsKICAgICAgICAg
Lyogb3BfcHV0X2J5X2lkX3RyYW5zaXRpb24gYmFzZShyKSBwcm9wZXJ0eShpZCkgdmFsdWUocikg
b2xkU3RydWN0dXJlKHNJRCkgbmV3U3RydWN0dXJlKHNJRCkgc3RydWN0dXJlQ2hhaW4oY2hhaW4p
IG9mZnNldChuKSBkaXJlY3QoYikKICAgICAgICAgIApAQCAtNTE1NywxMCArNTE4NiwxMCBAQCB2
b2lkIEludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVy
blZQQygpKTsKICNpZiBFTkFCTEUoSklUKQogICAgIGVsc2UKLSAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMo
KSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9m
ZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogI2Vsc2UK
LSAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2Fs
bEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9j
ay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAj
ZW5kaWYKICAgICBsaW5lTnVtYmVyID0gY2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQgLSAxKTsKICAgICBzb3VyY2VJRCA9IGNhbGxlckNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTA2
NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNp
bmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJMTElu
dERhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIK
IApAQCAtNDUsNiArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvbkV4
ZWN1dGFibGU7CiAgICAgY2xhc3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUV4
ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7
CkBAIC0xMDAsMTkgKzEwMiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEludGVy
cHJldGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQgY2xhc3Mg
SklUOwogICAgIHB1YmxpYzoKICAgICAgICAgSW50ZXJwcmV0ZXIoKTsKKyAgICAgICAgfkludGVy
cHJldGVyKCk7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBjYW5Vc2VK
SVQpOworICAgICAgICB2b2lkIGluaXRpYWxpemUoTExJbnQ6OkRhdGEqLCBib29sIGNhblVzZUpJ
VCk7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKSB7IHJldHVybiBtX3Jl
Z2lzdGVyRmlsZTsgfQogICAgICAgICAKICAgICAgICAgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJ
RCBpZCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwotI2lm
IEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9H
T1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgICAgICByZXR1cm4gbV9v
cGNvZGVUYWJsZVtpZF07CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIGlkOwpAQCAtMTIyLDcg
KzEyNiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQo
T3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6
ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShM
TElOVCkKKyAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKKyAgICAgICAgICAg
IHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CisjZWxpZiBFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUp
KTsKICAgICAgICAgICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSk7CkBA
IC0xMzIsNiArMTM5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG9w
Y29kZTsKICNlbmRpZgogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGVuYWJsZWQo
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9lbmFibGVkOworICAgICAgICB9CiAK
ICAgICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCkBAIC0xOTksNyArMjExLDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSBtX3JlZ2lzdGVyRmlsZTsKICAg
ICAgICAgCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxF
KExMSU5UKQorICAgICAgICBPcGNvZGUqIG1fb3Bjb2RlVGFibGU7IC8vIE1hcHMgT3Bjb2RlSUQg
PT4gT3Bjb2RlIGZvciBjb21waWxpbmcKKyAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlE
PiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBp
bGluZworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgIE9w
Y29kZSBtX29wY29kZVRhYmxlW251bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bj
b2RlIGZvciBjb21waWxpbmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29w
Y29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJG
aWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Jl
Z2lzdGVyRmlsZS5oCShyZXZpc2lvbiAxMDY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAgICBj
bGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAog
ICAgIGNsYXNzIFJlZ2lzdGVyRmlsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJl
Z2lzdGVyRmlsZSk7CkBAIC04MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9
CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIqKTsKICAg
ICAgICAgdm9pZCByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9pZCBhZGRUb0Nv
bW1pdHRlZEJ5dGVDb3VudChsb25nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUu
aCIKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIklubGluZUFTTS5oIgorI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNWYWx1ZUlubGluZU1ldGhvZHMuaCIKKyNp
bmNsdWRlICJTY29wZUNoYWluLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisjaWYgQ09NUElMRVIo
R0NDKQorCisjaWYgQ1BVKFg4Nl82NCkKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAi
XG4iCisgICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKKyAgICAibW92ICVyMTMsICVyZGlcbiIK
KyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKFg4NikKK2FzbSAoCisiLmdsb2Js
ICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJP
TChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKKyAgICAi
bW92ICVlZGksIDQoJWVzcClcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9O
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BV
KEFSTV9USFVNQjIpCithc20gKAorIi50ZXh0IiAiXG4iCisiLmFsaWduIDIiICJcbiIKKyIuZ2xv
YmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lN
Qk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKKyIudGh1bWIiICJcbiIKKyIudGh1bWJf
ZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lN
Qk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJsZHIgcjUs
IFtyNSwgIy00MF0iICJcbiIKKyAgICAiY3B5IHIwLCByNSIgIlxuIgorICAgICJiICIgU1lNQk9M
X1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAi
XG4iCispOworI2VuZGlmCisKKyNlbmRpZiAvLyBDT01QSUxFUihHQ0MpCisKK2V4dGVybiAiQyIg
RW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmICghZXhl
YykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUp
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorI2RlZmluZSBIb3N0Q2FsbFJldHVy
blZhbHVlX2gKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworLy8gVW5mb3J0dW5hdGVs
eSB0aGlzIG9ubHkgd29ya3Mgb24gR0NDLWxpa2UgY29tcGlsZXJzLiBBbmQgaXQncyBjdXJyZW50
bHkgb25seSB1c2VkCisvLyBieSBMTEludCBhbmQgREZHLCB3aGljaCBhbHNvIGFyZSByZXN0cmlj
dGVkIHRvIEdDQy1saWtlIGNvbXBpbGVycy4gV2Ugc2hvdWxkCisvLyBwcm9iYWJseSBmaXggdGhh
dCBhdCBzb21lIHBvaW50LgorI2lmIENPTVBJTEVSKEdDQykKKworI2lmIENBTExJTkdfQ09OVkVO
VElPTl9JU19TVERDQUxMCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIENE
RUNMCisjZWxzZQorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTgorI2VuZGlm
CisKK25hbWVzcGFjZSBKU0MgeworCitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FM
TF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKKworLy8gVGhp
cyBpcyBhIHB1YmxpYyBkZWNsYXJhdGlvbiBvbmx5IHRvIGNvbnZpbmNlIENMQU5HIG5vdCB0byBl
bGlkZSBpdC4KK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxV
RV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7
CisKK2lubGluZSB2b2lkIGluaXRpYWxpemVIb3N0Q2FsbFJldHVyblZhbHVlKCkKK3sKKyAgICBn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSgwKTsKK30KKworfQorCisjZWxzZSAv
LyBDT01QSUxFUihHQ0MpCisKK25hbWVzcGFjZSBKU0MgeworaW5saW5lIHZvaWQgaW5pdGlhbGl6
ZUhvc3RDYWxsUmV0dXJuVmFsdWUoKSB7IH0KK30KKworI2VuZGlmIC8vIENPTVBJTEVSKEdDQykK
KworI2VuZGlmIC8vIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMDY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsOCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dp
bGxfY2FsbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcHVzaF9zY29wZSkKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
OgogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3Bf
cHV0X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKQEAgLTQ4Niw2
ICs0ODgsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfcG9zdF9pbmMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wcmVfZGVjKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2luYykKKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3Zh
bCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsKQpAQCAtNTI1
LDYgKzUyOSwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiBKSVRD
b2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2sp
CiB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIkNvbXBpbGluZyBK
SVQgY29kZSFcbiIpOworI2VuZGlmCisgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQog
ICAgIG1fY2FuQmVPcHRpbWl6ZWQgPSBtX2NvZGVCbG9jay0+Y2FuQ29tcGlsZVdpdGhERkcoKTsK
ICNlbmRpZgpAQCAtNjg5LDggKzY5NywxMiBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUo
Q29kZVB0ciogZnVuCiAgICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gbV9jb2RlQmxv
Y2stPnN0cnVjdHVyZVN0dWJJbmZvKG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mb1tpXS5wcm9w
ZXJ0eUFjY2Vzc0luZGV4KS5jYWxsUmV0dXJuTG9jYXRpb247CiAgICAgfQogCi0jaWYgRU5BQkxF
KERGR19KSVQpCi0gICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQpIHsKKyNpZiBFTkFCTEUoREZHX0pJ
VCkgfHwgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2NhbkJlT3B0aW1pemVkCisjaWYgRU5BQkxF
KExMSU5UKQorICAgICAgICB8fCB0cnVlCisjZW5kaWYKKyAgICAgICAgKSB7CiAgICAgICAgIENv
bXBhY3RKSVRDb2RlTWFwOjpFbmNvZGVyIGppdENvZGVNYXBFbmNvZGVyOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBtX2xhYmVscy5z
aXplKCk7ICsrYnl0ZWNvZGVPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChtX2xhYmVsc1tieXRl
Y29kZU9mZnNldF0uaXNTZXQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5o
CShyZXZpc2lvbiAxMDY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSklUQ29kZSgpIHsgfQogI2VuZGlmCiAgICAgcHVibGljOgotICAgICAgICBlbnVtIEpJVFR5
cGUgeyBIb3N0Q2FsbFRodW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CisgICAgICAgIGVudW0g
SklUVHlwZSB7IE5vbmUsIEhvc3RDYWxsVGh1bmssIEludGVycHJldGVyVGh1bmssIEJhc2VsaW5l
SklULCBERkdKSVQgfTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKSVRUeXBlIGJvdHRvbVRp
ZXJKSVQoKQogICAgICAgICB7CkBAIC02Niw4ICs2NiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIHJldHVybiBERkdKSVQ7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0
YXRpYyBib29sIGlzT3B0aW1pemluZ0pJVChKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IERGR0pJVDsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgc3RhdGljIGJvb2wgaXNCYXNlbGluZUNvZGUoSklUVHlwZSBqaXRUeXBlKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBJbnRlcnByZXRlclRodW5rIHx8
IGppdFR5cGUgPT0gQmFzZWxpbmVKSVQ7CisgICAgICAgIH0KKyAgICAgICAgCiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgSklUQ29kZSgpCisgICAgICAgICAgICA6IG1faml0VHlwZShOb25lKQog
ICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNzUsNiArODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIDogbV9yZWYocmVmKQogICAgICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlw
ZSkKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGppdFR5cGUgIT0gTm9uZSk7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3IgISgpIGNvbnN0CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDE1ICszMywyMSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
REZHRHJpdmVyLmgiCiAjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlw
ZT4KIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENv
ZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2Rl
QmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYg
KCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAg
ICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29sIGRmZ0Nv
bXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAg
ICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZShnbG9iYWxEYXRhLCBjb2RlQmxvY2su
Z2V0KCksIGppdENvZGUpOwpAQCAtNTUsMTAgKzYxLDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGls
ZUlmQXBwcm9wcmlhdGUoSlNHbAogICAgICAgICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNv
bXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSk7CiAgICAgfQotI2lmICFFTkFCTEUo
T1BDT0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJh
dGVkQ29kZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09w
cG9ydHVuaXR5KCk7Ci0jZW5kaWYKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2Fy
ZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY2LDkg
KzY5LDE0IEBAIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2wKIAogaW5s
aW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYg
aml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNo
YXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkK
IHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2Fs
bHMoKTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5
cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29t
cGlsZUZ1bmN0aW9uKGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSwgaml0Q29k
ZVdpdGhBcml0eUNoZWNrKTsKQEAgLTgzLDExICs5MSw3IEBAIGlubGluZSBib29sIGppdENvbXBp
bGVGdW5jdGlvbklmQXBwcm9wcmkKICAgICAgICAgfQogICAgICAgICBqaXRDb2RlID0gSklUOjpj
b21waWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksICZqaXRDb2RlV2l0aEFyaXR5Q2hl
Y2spOwogICAgIH0KLSNpZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLSAgICBpZiAoIUJ5dGVj
b2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKLSAgICAgICAgY29kZUJsb2NrLT5o
YW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwotI2VuZGlmCi0gICAgCisgICAg
Y29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAgIGNv
ZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAg
IAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRF
eGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAxMDY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBA
IEV4Y2VwdGlvbkhhbmRsZXIgZ2VuZXJpY1Rocm93KEpTR2xvYmFsRGEKIAogRXhjZXB0aW9uSGFu
ZGxlciBqaXRUaHJvdyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4ZWNTdGF0ZSogY2FsbEZy
YW1lLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBSZXR1cm5BZGRyZXNzUHRyIGZhdWx0TG9jYXRp
b24pCiB7Ci0gICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGV4
Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChmYXVs
dExvY2F0aW9uKSk7CisgICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJh
bWUsIGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNl
dChjYWxsRnJhbWUsIGZhdWx0TG9jYXRpb24pKTsKIH0KIAogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQ2LDYgKzE0
NDYsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfaWRfCiAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3QoY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkp
OwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsK
ICAgICBBU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOworICAgIAogICAgIGFzT2JqZWN0KGJh
c2VWYWx1ZSktPnB1dERpcmVjdChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgaWRlbnQsIHN0YWNr
RnJhbWUuYXJnc1syXS5qc1ZhbHVlKCksIHNsb3QpOwogICAgIAogICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpOwpAQCAtMTkzMSw3ICsx
OTMyLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogICAgIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaW50MzIoKTsKIAogI2lm
IEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgcHJpbnRmKCJFbnRlcmVkIG9wdGltaXplX2Zy
b21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2stPmpp
dEV4ZWN1dGVDb3VudGVyKCksIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIo
KSwgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CisgICAgcHJpbnRmKCIl
cDogRW50ZXJlZCBvcHRpbWl6ZV9mcm9tX2xvb3Agd2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCBy
ZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIg
PSAldVxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCksIGNvZGVC
bG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29kZUJsb2NrLT5vcHRpbWl6YXRp
b25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYKIAogICAgIGlmIChjb2RlQmxvY2stPmhhc09wdGlt
aXplZFJlcGxhY2VtZW50KCkpIHsKQEAgLTIxODYsNDUgKzIxODcsMTMgQEAgREVGSU5FX1NUVUJf
RlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlu
bGluZSBDYWxsRnJhbWUqIGFyaXR5Q2hlY2tGb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lz
dGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCi17Ci0g
ICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKTsK
LSAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgQ29kZUJsb2NrKiBu
ZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVG
b3Ioa2luZCk7Ci0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOwotCi0gICAgLy8gVGhpcyBlbnN1cmVzIGVu
b3VnaCBzcGFjZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1bWVudHMg
cGFzc2VkIGJ5IHRoZSBjYWxsZXIuCi0gICAgaWYgKCFyZWdpc3RlckZpbGUtPmdyb3coY2FsbEZy
YW1lLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29k
ZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
QVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpOwotCi0gICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1l
IGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVm
aW5lZC4KLSAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAt
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwotICAgIFJlZ2lzdGVyKiBzcmMgPSBjYWxsRnJh
bWUtPnJlZ2lzdGVycygpOwotICAgIFJlZ2lzdGVyKiBkc3QgPSBjYWxsRnJhbWUtPnJlZ2lzdGVy
cygpICsgZGVsdGE7Ci0KLSAgICBpbnQgaTsKLSAgICBpbnQgZW5kID0gLUNhbGxGcmFtZTo6b2Zm
c2V0Rm9yKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKLSAgICBmb3IgKGkgPSAtMTsgaSA+
PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0gc3JjW2ldOwotCi0gICAgZW5kIC09IGRlbHRh
OwotICAgIGZvciAoIDsgaSA+PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0ganNVbmRlZmlu
ZWQoKTsKLQotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUo
ZHN0KTsKLSAgICBBU1NFUlQoKHZvaWQqKW5ld0NhbGxGcmFtZSA8PSByZWdpc3RlckZpbGUtPmVu
ZCgpKTsKLSAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElP
Tih2b2lkKiwgb3BfY2FsbF9hcml0eUNoZWNrKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFN
RShzdGFja0ZyYW1lKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5j
YWxsRnJhbWU7CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3Io
Y2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOworICAgIENh
bGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNh
bGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDYWxsKTsKICAgICBpZiAo
IW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2
b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKQEAgLTIyMzcs
NyArMjIwNiw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKIAog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAgICBD
YWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0Zy
YW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgQ2FsbEZyYW1lKiBuZXdD
YWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFj
a0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7CiAgICAgaWYgKCFuZXdDYWxs
RnJhbWUpCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0
YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVy
Zmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxMDY1MjgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDggKzI2LDEwIEBACiAjaWZuZGVmIEpTSW50ZXJmYWNlSklUX2gKICNkZWZpbmUgSlNJ
bnRlcmZhY2VKSVRfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1
ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTU3RyaW5n
LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAj
aW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRDb21tb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDb21t
b25faAorI2RlZmluZSBMTEludENvbW1vbl9oCisKKyNkZWZpbmUgTExJTlRfRVhFQ1VUSU9OX1RS
QUNJTkcgMAorI2RlZmluZSBMTElOVF9IRUxQRVJfVFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0FM
V0FZU19BTExPQ0FURV9TTE9XIDAKKworI2VuZGlmIC8vIExMSW50Q29tbW9uX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCisKKyNp
ZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkxv
d0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBMTEludCB7CisKK0RhdGE6OkRhdGEoKQorICAgIDogbV9leGNlcHRpb25J
bnN0cnVjdGlvbnMobmV3IEluc3RydWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdKQorICAgICwg
bV9vcGNvZGVNYXAobmV3IE9wY29kZVtudW1PcGNvZGVJRHNdKQoreworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAgICAgICBtX2V4Y2VwdGlvbklu
c3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJv
d19mcm9tX2hlbHBlcl90cmFtcG9saW5lKTsKKyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwg
bGVuZ3RoKSBtX29wY29kZU1hcFtvcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
IyNvcGNvZGUpOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkpOworI3VuZGVm
IE9QQ09ERV9FTlRSWQorfQorCitEYXRhOjp+RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9leGNl
cHRpb25JbnN0cnVjdGlvbnM7CisgICAgZGVsZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIExMSW50RGF0YV9oCisjZGVmaW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRlICJP
cGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKworI2lmIEVOQUJMRShM
TElOVCkKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIERhdGEoKTsKKyAgICB+RGF0YSgpOwor
ICAgIAorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAgICBP
cGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7Cisg
ICAgfQorcHJpdmF0ZToKKyAgICBJbnN0cnVjdGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7
CisgICAgT3Bjb2RlKiBtX29wY29kZU1hcDsKK307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQpCisK
KyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlm
CisKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0
cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
fTsKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAor
I2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpMTEludAorCisjZW5kaWYgLy8gTExJbnREYXRhX2gKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBv
aW50cy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSklUQ29kZS5oIgorI2lu
Y2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVk
ZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExM
SW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpJVENvZGUmIGppdENvZGUsIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjaykKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2Fu
VXNlSklUKCkpIHsKKyAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAg
ICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSkpKTsKKyAgICAg
ICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25z
dHJ1Y3QpOworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3By
b2xvZ3VlKSkpKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2No
ZWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKGtpbmQgPT0gQ29k
ZUZvckNhbGwpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElT
dHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnBy
ZXRlclRodW5rKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihm
dW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwor
ICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNv
bnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsK
KyAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3Ry
dWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7Cit9CisKK3ZvaWQgZ2V0RXZhbEVu
dHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQorewor
ICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklU
Q29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFn
ZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF9ldmFsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBq
aXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5l
cmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKK30KKwordm9pZCBnZXRQcm9ncmFt
RW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUpCit7
CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUgPSBK
SVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X3Byb2dyYW1fcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlU
aHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQorCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVudHJ5cG9pbnRzX2gKKyNkZWZpbmUg
TExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVO
QUJMRShMTElOVCkKKworI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV2YWxDb2RlQmxvY2s7CitjbGFzcyBKSVRDb2RlOworY2xh
c3MgSlNHbG9iYWxEYXRhOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworY2xhc3MgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOworY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKKworbmFtZXNwYWNl
IExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCwgSklUQ29kZSYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJp
dHlDaGVjayk7Cit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUm
KTsKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYpOwor
CitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXZh
bENvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0RXZhbEVudHJ5cG9pbnQo
Z2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9ncmFtQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29k
ZSkKK3sKKyAgICBnZXRQcm9ncmFtRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30K
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQp
CisKKyNlbmRpZiAvLyBMTEludEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5o
IgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJKSVRF
eGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMb3dMZXZl
bEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2
b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9I
RUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzLlxuIiwgZ2xv
YmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Ro
cm93KAorICAgICAgICBnbG9iYWxEYXRhLCBleGVjLT5jYWxsZXJGcmFtZSgpLCBnbG9iYWxEYXRh
LT5leGNlcHRpb24sCisgICAgICAgIGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpLT5i
eXRlY29kZU9mZnNldChleGVjLT5jYWxsZXJGcmFtZSgpLCBleGVjLT5yZXR1cm5QQygpKSk7Cit9
CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmxsaW50RGF0YS5leGNl
cHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhl
Y1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORwor
ICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93KS5cbiIsIGds
b2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNU
aHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+
Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBn
bG9iYWxEYXRhLT5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK3ZvaWQq
IGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRf
SEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAoY2FsbFRv
VGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlm
CisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlv
biwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAg
CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2R1cmluZ19jYWxs
X3RyYW1wb2xpbmUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlm
IC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTElu
dEV4Y2VwdGlvbnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxF
KExMSU5UKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IElu
c3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisvLyBUaHJvdyB0aGUgY3VycmVudGx5
IGFjdGl2ZSBleGNlcHRpb24gaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNhbGxlcidzIGNhbGwgZnJh
bWUuCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqKTsKKworLy8gVGVs
bHMgeW91IHdoZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0dXJuLXRvLXRocm93LCBh
ZnRlciB5b3UndmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8g
dGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3du
RXhjZXB0aW9uKEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0aGUgY3VycmVudCBQQyBpbiB0aGUg
Z2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlvdSBhIFBDCisvLyB0aGF0
IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4gYWR2YW5j
ZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0cnVjdGlv
biIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBleGNlcHRpb24gaGFuZGxl
ci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5n
LAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhhdCBQQyB3aXRob3V0IGRv
aW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVhZCBleGNlcHRpb24gaGFu
ZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5CisvLyBvdGhlciBo
ZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rp
b24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxsIHRodW5r
Lgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRp
ZiAvLyBMTEludEV4Y2VwdGlvbnNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTQzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEhlbHBlcnMuaCIKKworI2lmIEVOQUJM
RShMTElOVCkKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZS5o
IgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgorI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUg
IkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmgiCisjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5n
LmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5j
bHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5o
IgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBM
TEludCB7CisKKyNkZWZpbmUgTExJTlRfQkVHSU4oKSBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKCZleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpCisKKyNkZWZpbmUgTExJTlRfT1AoaW5kZXgp
IChleGVjLT51bmNoZWNrZWRSKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorI2RlZmluZSBMTElOVF9P
UF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5vcGVyYW5kKSkKKworI2RlZmluZSBMTElO
VF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsgICAgICAgXAorICAgICAgICB1bmlvbiB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgc3RydWN0
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQq
IGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGI7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSBwYWlyOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50NjRfdCBpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IF9fcnRfdTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5hID0gZmlyc3Q7ICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5iID0gc2Vjb25kOyAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19ydF91Lmk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORF9JTVBM
KCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykKKworI2RlZmluZSBMTElOVF9USFJPVyhleGNl
cHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0ds
b2JhbERhdGEmIF9fdF9nbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOyAgICAgICAgXAor
ICAgICAgICBfX3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAg
ICAgICAgICAgXAorICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQor
CisjZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpIGRvIHsgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSB7
ICAgXAorICAgICAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORCgpIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQlJB
TkNIKG9wY29kZSwgY29uZGl0aW9uKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgYm9vbCBfX2JfY29uZGl0aW9uID0gKGNvbmRpdGlvbik7ICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9fYl9jb25kaXRpb24pICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IHBjW09QQ09E
RV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsgICAgICAgIFwKKyAgICAgICAgZWxzZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bjb2RlKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElO
VF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9f
cl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9PUCgxKSA9IF9fcl9yZXR1
cm5WYWx1ZTsgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVS
Tl9QUk9GSUxFRChvcGNvZGUsIHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBK
U1ZhbHVlIF9fcnBfcmV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0gX19ycF9yZXR1cm5WYWx1ZTsgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAx
XS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IFwKKyAgICAgICAgICAgIEpTVmFsdWU6OmVuY29k
ZShfX3JwX3JldHVyblZhbHVlKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VO
RF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0g
d2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfRU5EX0lNUEwoZXhlYywgY2FsbFRh
cmdldCkgTExJTlRfUkVUVVJOX1RXTygoY2FsbFRhcmdldCksIChleGVjKSkKKworI2RlZmluZSBM
TElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAg
ICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3RfZXhlYyA9IChleGVjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jdF9wYyA9
IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0ds
b2JhbERhdGEmIF9fY3RfZ2xvYmFsRGF0YSA9IChfX2N0X2V4ZWMpLT5nbG9iYWxEYXRhKCk7ICAg
ICAgXAorICAgICAgICBfX2N0X2dsb2JhbERhdGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhy
b3cpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3Rf
ZXhlYywgY2FsbFRvVGhyb3coX19jdF9leGVjLCBfX2N0X3BjKSk7IFwKKyAgICB9IHdoaWxlIChm
YWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYykgZG8g
eyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY2NlX2V4ZWMg
PSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0
cnVjdGlvbiogX19jY2VfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoX19jY2VfZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2Vw
dGlvbikpICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChf
X2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2NjZV9leGVjLCBfX2NjZV9wYykpOyBcCisgICAgfSB3
aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9SRVRVUk4oZXhlYywgcGMsIGNhbGxU
YXJnZXQpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2Ny
X2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgdm9pZCogX19jcl9jYWxsVGFyZ2V0ID0gKGNhbGxUYXJnZXQp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9DSEVDS19F
WENFUFRJT04oX19jcl9leGVjLT5jYWxsZXJGcmFtZSgpLCBfX2NyX3BjKTsgIFwKKyAgICAgICAg
TExJTlRfQ0FMTF9FTkRfSU1QTChfX2NyX2V4ZWMsIF9fY3JfY2FsbFRhcmdldCk7ICAgICAgICAg
ICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5U
eXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMs
IGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhl
Y3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkXG4iLAorICAgICAgICAgICBl
eGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgc3RhdGljX2Nh
c3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2lu
KCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJvbVdoZXJlLAorICAgICAgICAgICBv
cGVyYW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQpOworICAgIExMSU5UX0VO
RCgpOworfQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUo
RXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVy
YW5kKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKG9wZXJhbmQpLmpzVmFsdWUo
KTsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCB0
YWc7CisgICAgICAgICAgICB1aW50MzJfdCBwYXlsb2FkOworICAgICAgICB9IGJpdHM7CisgICAg
ICAgIEVuY29kZWRKU1ZhbHVlIGFzVmFsdWU7CisgICAgfSB1OworICAgIHUuYXNWYWx1ZSA9IEpT
VmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMj
JXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWQ6ICUwOHg6JTA4eCIsCisgICAgICAgICAgIGV4
ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBzdGF0aWNfY2Fz
dDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4o
KSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUsCisgICAgICAgICAgIG9w
ZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCwKKyAgICAgICAgICAgdS5i
aXRzLnRhZywKKyAgICAgICAgICAgdS5iaXRzLnBheWxvYWQpOworI2lmbmRlZiBOREVCVUcKKyAg
ICBwcmludGYoIjogJXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIHByaW50
ZigiXG4iKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2Vf
cHJvbG9ndWUpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiBwcm9sb2d1ZS5cbiIsIGV4ZWMt
PmNvZGVCbG9jaygpLCBleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworc3RhdGljIHZvaWQg
dHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVu
dCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxl
ZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgcHJp
bnRmKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFy
cyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZVJlZ2lzdGVycyA9ICV1LlxuIiwK
KyAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBjb21tZW50LCBjYWxsZWUsIGV4ZWN1dGFibGUs
CisgICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVu
Y3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBwcm9sb2d1ZSIsIENvZGVGb3JDYWxsKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNv
bnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQoreworICAg
IHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBhcml0eSBjaGVjayIsIENvZGVGb3JD
YWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJp
dHlDaGVja19mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVj
LCAiY29uc3RydWN0IGFyaXR5IGNoZWNrIiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKQoreworICAgIHByaW50ZigiJXAg
LyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCks
CisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAt
IGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisjaWZuZGVmIE5E
RUJVRworICAgIHByaW50ZigiJXMsICIsIG9wY29kZU5hbWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5p
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpXSk7CisjZWxzZQorICAgIHBy
aW50Zigib3AjJXUsICIsIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQocGNbMF0udS5vcGNvZGUpKTsKKyNlbmRpZgorICAgIHByaW50Zigic2NvcGUgJXBcbiIsIGV4
ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKHNwZWNpYWxfdHJhY2UpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgc3Bl
Y2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICAgICAgICAg
ZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19j
YXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGV4ZWMtPnJldHVyblBDKCkudmFsdWUo
KSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2lubGluZSBib29sIHNob3VsZEpJVChFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgLy8gWW91IGNhbiBtb2RpZnkgdGhpcyB0byB0dXJuIG9mZiBKSVR0
aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0aGUgd29ybGQuCisgICAgcmV0dXJuIGV4ZWMtPmdsb2Jh
bERhdGEoKS5jYW5Vc2VKSVQoKTsKK30KKworZW51bSBFbnRyeUtpbmQgeyBQcm9sb2d1ZSwgQXJp
dHlDaGVjayB9Oworc3RhdGljIEhlbHBlclJldHVyblR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBl
eGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBjaGFyICpu
YW1lLCBFbnRyeUtpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAg
IHByaW50ZigiJXA6IEVudGVyZWQgJXMgd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2Rl
QmxvY2ssIG5hbWUsIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgor
ICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGNvZGVCbG9jay0+ZG9u
dEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7Cisg
ICAgfQorICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkp
IHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICBwcmludGYoIiAgICBDb2Rl
IHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICB9CisgICAgY29kZUJsb2Nr
LT5qaXRTb29uKCk7CisgICAgaWYgKGtpbmQgPT0gUHJvbG9ndWUpCisgICAgICAgIExMSU5UX1JF
VFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNl
dCgwKSwgZXhlYyk7CisgICAgQVNTRVJUKGtpbmQgPT0gQXJpdHlDaGVjayk7CisgICAgTExJTlRf
UkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGVXaXRoQXJpdHlDaGVjaygpLmV4ZWN1dGFi
bGVBZGRyZXNzKCksIGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpCit7
CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCBleGVjLT5jb2RlQmxvY2soKSwgImVudHJ5
X29zciIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0
aW9uX2Zvcl9jYWxsKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rp
b24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Io
Q29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsIiwgUHJvbG9ndWUpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkK
K3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxl
ZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1
Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QiLCBQcm9sb2d1ZSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNr
KQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2Fs
bGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwp
LCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2siLCBBcml0eUNoZWNrKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlDaGVjaykKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9u
KGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENv
ZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlD
aGVjayIsIEFyaXR5Q2hlY2spOworfQorCitMTElOVF9IRUxQRVJfREVDTChsb29wX29zcikKK3sK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lm
IEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCBsb29wX29z
ciB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5sbGlu
dEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhl
YykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAg
TExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb2RlQmxv
Y2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVS
Qk9TRV9PU1IpCisgICAgICAgIHByaW50ZigiICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQu
XG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICAKKyAg
ICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQp
OworICAgIAorICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+IG1hcDsKKyAgICBj
b2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKG1hcCk7CisgICAgQnl0ZWNvZGVBbmRNYWNo
aW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2VhcmNoPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNl
dCwgdW5zaWduZWQsIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldDo6Z2V0Qnl0ZWNvZGVJbmRleD4o
bWFwLmJlZ2luKCksIG1hcC5zaXplKCksIHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpKTsKKyAgICBBU1NFUlQobWFwcGluZyk7CisgICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0
ZWNvZGVJbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocGMgLSBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCkpKTsKKyAgICAKKyAgICB2b2lkKiBqdW1wVGFyZ2V0ID0gY29kZUJs
b2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChtYXBwaW5nLT5tX21h
Y2hpbmVDb2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQoanVtcFRhcmdldCk7CisgICAgCisgICAgTExJ
TlRfUkVUVVJOX1RXTyhqdW1wVGFyZ2V0LCBleGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
cmVwbGFjZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50
ZXJlZCByZXBsYWNlIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2Rl
QmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoc2hv
dWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMt
Pmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICAg
ICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlmCisg
ICAgICAgIH0KKyAgICAgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgfSBlbHNlCisgICAg
ICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ2hlY2tpbmcg
c3RhY2sgaGVpZ2h0IHdpdGggZXhlYyA9ICVwLlxuIiwgZXhlYyk7CisgICAgcHJpbnRmKCJDb2Rl
QmxvY2sgPSAlcC5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAgICBwcmludGYoIk51bSBjYWxs
ZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdp
c3RlcnMpOworICAgIHByaW50ZigiTnVtIHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygp
LT5tX251bVZhcnMpOworICAgIHByaW50ZigiQ3VycmVudCBlbmQgaXMgYXQgJXAuXG4iLCBleGVj
LT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKKyNlbmRp
ZgorICAgIEFTU0VSVCgmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVt
Q2FsbGVlUmVnaXN0ZXJzXSA+IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0
ZXJGaWxlKCkuZW5kKCkpOworICAgIGlmIChVTkxJS0VMWSghZXhlYy0+Z2xvYmFsRGF0YSgpLmlu
dGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5j
b2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnNdKSkpIHsKKyAgICAgICAgZXhlYyA9IGV4
ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24g
PSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhy
b3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhj
ZXB0aW9uKGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9FTkRfSU1QTCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNrKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9y
KGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBD
b2RlRm9yQ2FsbCk7CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5j
YWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5D
YWxsZXIoZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQq
PihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JF
VFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25z
dHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEV4ZWNTdGF0ZSog
bmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmZXhlYy0+Z2xv
YmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNvbnN0cnVjdCk7
CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgp
OworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVy
Zmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYyk7
CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwg
bmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlv
bikKK3sKKyAgICBMTElOVF9CRUdJTigpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAg
cHJpbnRmKCJDcmVhdGluZyBhbiBhY3RpdmF0aW9uLCBleGVjID0gJXAhXG4iLCBleGVjKTsKKyNl
bmRpZgorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYywgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4oZXhlYy0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSk7CisgICAgZXhlYy0+c2V0
U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goYWN0aXZhdGlvbikpOworICAgIExM
SU5UX1JFVFVSTihKU1ZhbHVlKGFjdGl2YXRpb24pKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1Zh
bHVlIGFyZ3VtZW50cyA9IEpTVmFsdWUoQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgZXhlYy0+dW5j
aGVja2VkUihwY1sxXS51Lm9wZXJhbmQpID0gYXJndW1lbnRzOworICAgIGV4ZWMtPnVuY2hlY2tl
ZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpID0gYXJndW1l
bnRzOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3Jl
YXRlX3RoaXMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1
Y3RvciA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIAorI2lmICFBU1NFUlRfRElT
QUJMRUQKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQVNTRVJUKGNvbnN0
cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBjb25z
dHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlmCisgICAgCisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmU7CisgICAgSlNWYWx1ZSBwcm90byA9IExMSU5UX09QKDIpLmpzVmFsdWUo
KTsKKyAgICBpZiAocHJvdG8uaXNPYmplY3QoKSkKKyAgICAgICAgc3RydWN0dXJlID0gYXNPYmpl
Y3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGVsc2UKKyAg
ICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCktPmdsb2JhbE9iamVjdC0+ZW1w
dHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1w
dHlPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9jb252ZXJ0X3RoaXMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHYxID0g
TExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAg
ICBMTElOVF9SRVRVUk4odjEudG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25ld19vYmplY3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElO
VF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbmV3X2FycmF5KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
UkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4oJkxMSU5U
X09QKDIpKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uZXdfYXJyYXlfYnVmZmVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVU
VVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZl
cihwY1syXS51Lm9wZXJhbmQpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25ld19yZWdleHApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBSZWdF
eHAqIHJlZ0V4cCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZWdleHAocGNbMl0udS5vcGVyYW5kKTsK
KyAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVT
eW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBmbGFnIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1
Y3Rvci4iKSk7CisgICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdFeHApKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25vdCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oIUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3N0cmljdGVxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElO
VF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9sZXNzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbGVzc2VxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9n
cmVhdGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJl
cSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNM
ZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1Ao
MSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICsgMSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHJlX2RlYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYykKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIo
ZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQgKyAxKTsKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wb3N0X2RlYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGRvdWJsZSByZXN1bHQgPSBM
TElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBq
c051bWJlcihyZXN1bHQgLSAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcikKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVn
YXRlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKC1M
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfYWRkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2
MSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKTsKKyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50
ZigiVHJ5aW5nIHRvIGFkZCAlcyIsIHYxLmRlc2NyaXB0aW9uKCkpOworICAgIHByaW50ZigiIHRv
ICVzLlxuIiwgdjIuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNT
dHJpbmcoKSAmJiAhdjIuaXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5n
KGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9TdHJpbmcoZXhlYykpKTsKKyAgICAKKyAgICBpZiAo
djEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIodjEuYXNOdW1iZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKKyAgICAKKyAgICBMTElOVF9S
RVRVUk4oanNBZGRTbG93Q2FzZShleGVjLCB2MSwgdjIpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX211bCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAqIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9zdWIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZGl2KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX21vZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihmbW9kKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpLCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2xzaGlmdCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIDw8IChMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSAmIDMxKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcnNoaWZ0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4g
KExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpICYgMzEpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvVUludDMy
KGV4ZWMpID4+IChMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSAmIDMxKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgp
LnRvSW50MzIoZXhlYykgJiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcikKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50
b0ludDMyKGV4ZWMpIHwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRv
SW50MzIoZXhlYykgXiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIofkxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRv
SW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19p
bnN0YW5jZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgYmFzZVZhbCA9IExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpOworI2lmbmRlZiBOREVCVUcKKyAgICBUeXBlSW5mbyB0eXBl
SW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VSVCghYmFzZVZhbC5pc09iamVjdCgpCisg
ICAgICAgICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVjdChiYXNlVmFsKS0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKTsKKyNlbmRpZgorICAgIExMSU5U
X1RIUk9XKGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4ZWMsICJpbnN0YW5jZW9mIiwgYmFzZVZh
bCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZikKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhz
OjpvcEluc3RhbmNlT2ZTbG93KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBM
TElOVF9SRVRVUk4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QX0MoMikuanNWYWx1
ZSgpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4odi5pc0NlbGwoKSA/IHYuYXNDZWxsKCkt
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSA6IHYuaXNV
bmRlZmluZWQoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbikK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkuaXNCb29sZWFuKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX251bWJlcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVS
Tihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihpc0pTU3RyaW5nKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzT2JqZWN0
VHlwZShMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX2Z1bmN0aW9uKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rpb25UeXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4pCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihleGVj
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmUsIENvbW1vblNsb3dQYXRo
czo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUu
b3BlcmFuZCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRCgKKyAgICAg
ICAgb3BfcmVzb2x2ZV9za2lwLAorICAgICAgICBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVNr
aXAoCisgICAgICAgICAgICBleGVjLAorICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmlk
ZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwKKyAgICAgICAgICAgIHBjWzNdLnUub3BlcmFuZCkp
OworfQorCitzdGF0aWMgSlNWYWx1ZSByZXNvbHZlR2xvYmFsKEV4ZWNTdGF0ZSogZXhlYywgSW5z
dHJ1Y3Rpb24qIHBjKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJs
b2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7
CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0udS5vcGVyYW5kOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgCisgICAgQVNTRVJUX1VOVVNF
RChzdHJ1Y3R1cmUsIHN0cnVjdHVyZSAhPSBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAg
ICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0
eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAKKyAgICBpZiAo
Z2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKSB7CisgICAg
ICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCk7CisgICAgICAg
IGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFz
ZSgpID09IGdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgcGNbM10udS5zdHJ1Y3R1cmUuc2V0
KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBwY1s0
XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRp
b24gPSBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KTsKKyAgICByZXR1
cm4gSlNWYWx1ZSgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9i
YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3Bf
cmVzb2x2ZV9nbG9iYWwsIHJlc29sdmVHbG9iYWwoZXhlYywgcGMpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1p
YywgcmVzb2x2ZUdsb2JhbChleGVjLCBwYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWlj
LCBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRl
bnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9yZXNvbHZlX2Jhc2UpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBJZGVudGlmaWVyJiBp
ZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7Cisg
ICAgaWYgKHBjWzNdLnUub3BlcmFuZCkgeworICAgICAgICBKU1ZhbHVlIGJhc2UgPSBKU0M6OnJl
c29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIHRydWUpOworICAgICAg
ICBpZiAoIWJhc2UpCisgICAgICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFs
aWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgICAgICBMTElO
VF9SRVRVUk4oYmFzZSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChv
cF9yZXNvbHZlX2Jhc2UsIEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3Bl
Q2hhaW4oKSwgZmFsc2UpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9w
cm9wZXJ0eV9leGlzdHMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBQcm9wZXJ0eVNsb3Qg
c2xvdChvYmplY3QpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCkt
PmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIW9iamVjdC0+Z2V0UHJvcGVy
dHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJy
b3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0
aF9iYXNlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21t
b25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhCYXNlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5p
ZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTog
dGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVj
YXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhU
aGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCks
IExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9P
UCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJv
ZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4K
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9p
ZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50
aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDEpID0gcmVzdWx0OworCisg
ICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkK
KyAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAmJiBzbG90
LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAgICAgICAg
CisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAK
KyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAg
ICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5n
KCkpIHsKKyAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAg
ICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVj
dHVyZSk7CisgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgp
ICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHBjW09QQ09E
RV9MRU5HVEgob3BfZ2V0X2J5X2lkKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRl
bnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsK
KyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworICAgIExMSU5UX1JFVFVSTihiYXNlVmFsdWUuZ2V0
KGV4ZWMsIGlkZW50LCBzbG90KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRf
YnlfaWQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5p
ZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAg
ICBhc09iamVjdChiYXNlVmFsdWUpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBpZGVu
dCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFz
ZVZhbHVlLnB1dChleGVjLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOwor
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIGlmIChiYXNlVmFsdWUuaXND
ZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAgIAorICAgICAg
ICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAg
IGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAm
JiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpCisgICAg
ICAgICAgICAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAgICAgICAgICAgCisgICAg
ICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkg
eworICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1
Y3R1cmUtPnByZXZpb3VzSUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lIG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKKyAgICAg
ICAgICAgICAgICAgICAgLy8gYmVsb3cgbWF5IEdDLgorICAgICAgICAgICAgICAgICAgICBwY1sw
XS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisK
KyAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNl
bGwpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
cGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZp
b3VzSUQoKSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzZd
LnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAg
ICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVD
aGFpbihleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsKKyAgICAgICAg
ICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCks
IGNoYWluKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChw
Y1s4XS51Lm9wZXJhbmQpCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9
IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBj
WzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5z
ZXQoCisgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9w
ZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIGlmIChmYWxzZSAmJiAhc3RyY21wKGlk
ZW50LmFzY2lpKCkuZGF0YSgpLCAicmVuZGVyUmVmbGVjdGlvbnMiKSkKKyAgICAgICAgcHJpbnRm
KCJGaW5pc2hpbmcgYWNjZXNzIHRvIHJlbmRlclJlZmxlY3Rpb25zIGZyb20gTExJbnQgc2xvdyBw
YXRoLlxuIik7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9kZWxfYnlfaWQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0
ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7CisgICAgYm9vbCBjb3Vs
ZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VP
YmplY3QsIGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpKTsKKyAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJv
cihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKK3sK
KyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmco
KSkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5m
YXN0R2V0T3duUHJvcGVydHkoZXhlYywgYXNTdHJpbmcoc3Vic2NyaXB0KS0+dmFsdWUoZXhlYykp
KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgaWYgKHN1YnNj
cmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50
MzIoKTsKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNl
VmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc1N0cmluZyhiYXNl
VmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0pTQnl0
ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5k
ZXgoaSkpCisgICAgICAgICAgICByZXR1cm4gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5k
ZXgoZXhlYywgaSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVj
LCBpKTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3Jp
cHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZhbHVlLmdl
dChleGVjLCBwcm9wZXJ0eSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlf
dmFsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9w
X2dldF9ieV92YWwsIGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X2FyZ3VtZW50X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgYXJn
dW1lbnRzID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICghYXJndW1lbnRzKSB7Cisg
ICAgICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYyk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBMTElOVF9P
UCgyKSA9IGFyZ3VtZW50czsKKyAgICAgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgfQorICAg
IAorICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBhcmd1bWVudHMsIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5h
bWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhl
YywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7Cisg
ICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFs
dWUgdmFsdWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBpZiAoTElLRUxZ
KHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0
LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgeworICAgICAg
ICAgICAgSlNBcnJheSoganNBcnJheSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAg
IGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkKKyAgICAgICAgICAgICAgICBqc0FycmF5LT5z
ZXRJbmRleChnbG9iYWxEYXRhLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgSlNBcnJheTo6cHV0QnlJbmRleChqc0FycmF5LCBleGVjLCBpLCB2YWx1ZSk7Cisg
ICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNKU0J5dGVB
cnJheShiYXNlVmFsdWUpCisgICAgICAgICAgICAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5j
YW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICAgICAgSlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5
ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMy
KCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNJ
bnQzMigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAganNCeXRl
QXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICAgICAgICAgIExM
SU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJhc2VWYWx1ZS5w
dXQoZXhlYywgaSwgdmFsdWUpOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisg
ICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VW
YWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgp
OworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOwor
ICAgIAorICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7Cisg
ICAgCisgICAgYm9vbCBjb3VsZERlbGV0ZTsKKyAgICAKKyAgICB1aW50MzJfdCBpOworICAgIGlm
IChzdWJzY3JpcHQuZ2V0VUludDMyKGkpKQorICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNlT2JqZWN0LCBleGVj
LCBpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
ICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBj
b3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJh
c2VPYmplY3QsIGV4ZWMsIHByb3BlcnR5KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb3VsZERl
bGV0ZSAmJiBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5U
X1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4i
KSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkucHV0KGV4ZWMsIHBjWzJdLnUub3Bl
cmFuZCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2dldHRlcl9zZXR0ZXIpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOwor
ICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsK
KyAgICAKKyAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUo
ZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgSlNWYWx1ZSBn
ZXR0ZXIgPSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzZXR0ZXIgPSBMTElO
VF9PUCg0KS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKGdldHRlci5pc09iamVjdCgpIHx8IGdldHRl
ci5pc1VuZGVmaW5lZCgpKTsKKyAgICBBU1NFUlQoc2V0dGVyLmlzT2JqZWN0KCkgfHwgc2V0dGVy
LmlzVW5kZWZpbmVkKCkpOworICAgIEFTU0VSVChnZXR0ZXIuaXNPYmplY3QoKSB8fCBzZXR0ZXIu
aXNPYmplY3QoKSk7CisgICAgCisgICAgaWYgKCFnZXR0ZXIuaXNVbmRlZmluZWQoKSkKKyAgICAg
ICAgYWNjZXNzb3ItPnNldEdldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KGdldHRl
cikpOworICAgIGlmICghc2V0dGVyLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIGFjY2Vzc29yLT5z
ZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBhc09iamVjdChzZXR0ZXIpKTsKKyAgICBiYXNl
T2JqLT5wdXREaXJlY3RBY2Nlc3NvcigKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLAorICAg
ICAgICBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAg
ICAgICBhY2Nlc3NvciwgQWNjZXNzb3IpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfam1wX3Njb3BlcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IHVuc2lnbmVkIGNvdW50ID0gcGNbMV0udS5vcGVyYW5kOworICAgIFNjb3BlQ2hhaW5Ob2RlKiB0
bXAgPSBleGVjLT5zY29wZUNoYWluKCk7CisgICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAgIHRt
cCA9IHRtcC0+cG9wKCk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbih0bXApOworICAgIHBjICs9
IHBjWzJdLnUub3BlcmFuZDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2p0cnVlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNI
KG9wX2p0cnVlLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZhbHNlKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgTExJTlRfQlJBTkNIKG9wX2pmYWxzZSwgIUxMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRv
Qm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcykKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzcywganNMZXNzPHRy
dWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzcywgIWpzTGVzczx0cnVlPihleGVj
LCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVhdGVyLCBqc0xlc3M8ZmFsc2U+KGV4ZWMsIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlciwgIWpzTGVzczxmYWxzZT4oZXhlYywgTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEsIGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09Q
X0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBM
TElOVF9CUkFOQ0gob3Bfam5sZXNzZXEsICFqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBM
TElOVF9CUkFOQ0gob3BfamdyZWF0ZXJlcSwganNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEsICFqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBB
U1NFUlQoc2NydXRpbmVlLmlzRG91YmxlKCkpOworICAgIGRvdWJsZSB2YWx1ZSA9IHNjcnV0aW5l
ZS5hc0RvdWJsZSgpOworICAgIGludDMyX3QgaW50VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90
Pih2YWx1ZSk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAg
aWYgKHZhbHVlID09IGludFZhbHVlKSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+aW1tZWRpYXRlU3dp
dGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoaW50VmFsdWUsIGRl
ZmF1bHRPZmZzZXQpOworICAgIH0gZWxzZQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0Owor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0
cmluZykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9w
ZXJhbmQ7CisgICAgaWYgKCFzY3J1dGluZWUuaXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVm
YXVsdE9mZnNldDsKKyAgICBlbHNlIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hK
dW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGlu
ZWUpLT52YWx1ZShleGVjKS5pbXBsKCksIGRlZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZQor
ICAgICAgICAgICB8fCAhY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkKKyAgICAgICAg
ICAgfHwgZXhlYy0+dW5jaGVja2VkUihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5q
c1ZhbHVlKCkpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGlu
ZyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJTlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVu
Y3Rpb25EZWNsKHBjWzJdLnUub3BlcmFuZCktPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9j
aygpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0
aW9uRXhwcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBmdW5jdGlv
bi0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpOworICAgIAorICAgIGlmICghZnVuY3Rp
b24tPm5hbWUoKS5pc051bGwoKSkgeworICAgICAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBmdW5j
dGlvblNjb3BlT2JqZWN0ID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGZ1bmN0
aW9uLT5uYW1lKCksIGZ1bmMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGZ1bmMt
PnNldFNjb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuYy0+c2NvcGUoKS0+cHVzaChmdW5jdGlv
blNjb3BlT2JqZWN0KSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihmdW5jKTsKK30K
Kworc3RhdGljIEhlbHBlclJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVj
Q2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVy
RnJhbWUoKTsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0
YSgpOworCisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkp
OworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKworICAgIGlmIChraW5kID09IENv
ZGVGb3JDYWxsKSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgICAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxlZSwgY2FsbERhdGEpOworICAgIAorICAgICAg
ICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVKUyk7CisgICAgCisgICAgICAgIGlmIChjYWxs
VHlwZSA9PSBDYWxsVHlwZUhvc3QpIHsKKyAgICAgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxs
UmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4
ZWNDYWxsZWUpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4o
ZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpKTsKKyAgICAgICAgfQorICAgICAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORwor
ICAgICAgICBwcmludGYoIkNhbGwgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwgY2Fs
bGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlID09
IENhbGxUeXBlTm9uZSk7CisgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0
ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgIH0KKworICAgIEFTU0VSVChr
aW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIAorICAgIENvbnN0cnVjdERhdGEgY29uc3Ry
dWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3RE
YXRhKGNhbGxlZSwgY29uc3RydWN0RGF0YSk7CisgICAgCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5
cGUgIT0gQ29uc3RydWN0VHlwZUpTKTsKKyAgICAKKyAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBD
b25zdHJ1Y3RUeXBlSG9zdCkgeworICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWND
YWxsZWUpKTsKKworICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ29uc3RydWN0b3IgY2Fs
bGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2Vu
ZGlmCisKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSk7Cisg
ICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3Io
ZXhlYywgY2FsbGVlKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIHNldFVwQ2FsbChF
eGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExpbmtJbmZvKiBjYWxs
TGlua0luZm8gPSAwKQoreworICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRK
U0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOworICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwp
CisgICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNW
YWx1ZSwga2luZCk7CisgICAgCisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihj
YWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihjYWxs
ZWUtPnNjb3BlVW5jaGVja2VkKCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0g
Y2FsbGVlLT5leGVjdXRhYmxlKCk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNv
ZGVQdHI7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOworICAgIGlmIChleGVjdXRhYmxl
LT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJh
dGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIGVsc2UgeworICAgICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOworICAgICAgICBKU09iamVjdCogZXJyb3Ig
PSBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29w
ZSgpLCBraW5kKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgTExJTlRfQ0FMTF9U
SFJPVyhleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOworICAgICAgICBjb2Rl
QmxvY2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsK
KyAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSkpCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRh
YmxlLT5nZW5lcmF0ZWRKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJ
VENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICB9CisgICAgCisgICAgaWYgKGNh
bGxMaW5rSW5mbykgeworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLT5pc09uTGlzdCgpKQorICAg
ICAgICAgICAgY2FsbExpbmtJbmZvLT5yZW1vdmUoKTsKKyAgICAgICAgRXhlY1N0YXRlKiBleGVj
Q2FsbGVyID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgY2FsbExpbmtJbmZv
LT5jYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+Y29kZUJs
b2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8t
Pmxhc3RTZWVuQ2FsbGVlLnNldChleGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4ZWNDYWxsZXIt
PmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAgICAgY2FsbExp
bmtJbmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9IGNvZGVQdHI7CisgICAgICAgIGlmIChjb2RlQmxv
Y2spCisgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbExpbmtJbmZv
KTsKKyAgICB9CisgICAgCisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIGNv
ZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBl
IGdlbmVyaWNDYWxsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNl
dCB1cCBhIGNhbGwgZnJhbWUuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQg
Y29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBJZiBwb3NzaWJsZSwgbGluayB0aGUg
Y2FsbCdzIGlubGluZSBjYWNoZS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUg
Y29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBK
U1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAg
ICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIAor
ICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3Bl
cmFuZCk7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkg
PSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOwor
ICAgIAorICAgIEFTU0VSVChwY1s0XS51LmNhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJuIHNldFVw
Q2FsbChleGVjQ2FsbGVlLCBwYywga2luZCwgY2FsbGVlQXNWYWx1ZSwgcGNbNF0udS5jYWxsTGlu
a0luZm8pOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCkKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0KQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ29uc3Ry
dWN0KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncykKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAg
YSBjYWxsIGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4KKyAg
ICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2Fy
eS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNh
bGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFs
dWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWND
YWxsZWUgPSBsb2FkVmFyYXJncygKKyAgICAgICAgZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5p
bnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksCisgICAgICAgIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5vcGVyYW5kKTsKKyAgICBMTElO
VF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYyk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+
dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4
ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIoUmVn
aXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90Pihw
YyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSk7CisgICAgCisgICAgcmV0dXJuIHNl
dFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOwor
ICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7
CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAg
IAorICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUu
b3BlcmFuZCk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhl
Y0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVl
OworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAg
ICBleGVjQ2FsbGVlLT5zZXRSZXR1cm5QQyhiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbGxp
bnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2so
MCk7CisgICAgZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRh
ZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX2V2
YWwpKTsKKyAgICAKKyAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2Jh
bEZ1bmNFdmFsKSkKKyAgICAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29k
ZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworICAgIAorICAgIGdsb2JhbERhdGEuaG9zdENhbGxS
ZXR1cm5WYWx1ZSA9IGV2YWwoZXhlY0NhbGxlZSk7CisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhl
Y0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24p
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCktPm5l
ZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgSlNWYWx1ZSBhY3RpdmF0aW9uVmFsdWUgPSBMTElO
VF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhY3RpdmF0aW9uVmFsdWUpIHsKKyAgICAgICAg
aWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lz
dGVyKHBjWzJdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSkgeworICAgICAgICAgICAgaWYgKCFleGVj
LT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICAgICAgYXNBcmd1bWVu
dHModiktPnRlYXJPZmYoZXhlYyk7CisgICAgICAgIH0KKyAgICAgICAgTExJTlRfRU5EKCk7Cisg
ICAgfQorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGFzQWN0aXZhdGlvbihhY3RpdmF0
aW9uVmFsdWUpOworICAgIGFjdGl2YXRpb24tPnRlYXJPZmYoZXhlYy0+Z2xvYmFsRGF0YSgpKTsK
KyAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKQorICAgICAgICBhc0FyZ3VtZW50
cyh2KS0+ZGlkVGVhck9mZkFjdGl2YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBhY3RpdmF0aW9u
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJf
b2ZmX2FyZ3VtZW50cykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEFTU0VSVChleGVjLT5j
b2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygpICYmICFleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNG
dWxsU2NvcGVDaGFpbigpKTsKKyAgICBhc0FyZ3VtZW50cyhleGVjLT51bmNoZWNrZWRSKHVubW9k
aWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpLT50ZWFy
T2ZmKGV4ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfc3RyY2F0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzU3Ry
aW5nKGV4ZWMsICZMTElOVF9PUCgyKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9QcmltaXRpdmUoZXhlYykp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X3BuYW1lcykKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBp
ZiAodi5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBjICs9IHBjWzVdLnUub3BlcmFu
ZDsKKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBvID0g
di50b09iamVjdChleGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVjdHVy
ZSgpOworICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3Ig
PSBzdHJ1Y3R1cmUtPmVudW1lcmF0aW9uQ2FjaGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlOYW1l
SXRlcmF0b3IgfHwganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4o
KSAhPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpKQorICAgICAgICBqc1Byb3BlcnR5
TmFtZUl0ZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8pOwor
ICAgIAorICAgIExMSU5UX09QKDEpID0gSlNWYWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsK
KyAgICBMTElOVF9PUCgyKSA9IEpTVmFsdWUobyk7CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rl
cjo6d2l0aEludCgwKTsKKyAgICBMTElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJv
cGVydHlOYW1lSXRlcmF0b3ItPnNpemUoKSk7CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xFTkdU
SChvcF9nZXRfcG5hbWVzKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25leHRfcG5hbWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU09iamVj
dCogYmFzZSA9IGFzT2JqZWN0KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CisgICAgSlNTdHJpbmcq
IHByb3BlcnR5ID0gYXNTdHJpbmcoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBpZiAoYmFz
ZS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eS0+dmFsdWUoZXhl
YykpKSkgeworICAgICAgICAvLyBHbyB0byB0YXJnZXQuCisgICAgICAgIHBjICs9IHBjWzZdLnUu
b3BlcmFuZDsKKyAgICB9IC8vIEVsc2UsIGRvbid0IGNoYW5nZSB0aGUgUEMsIHNvIHRoZSBpbnRl
cnByZXRlciB3aWxsIHJlbG9vcC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1Zh
bHVlIHYgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2Jq
ZWN0KGV4ZWMpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIExMSU5U
X09QKDEpID0gbzsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+
cHVzaChvKSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wb3Bfc2NvcGUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBleGVjLT5zZXRT
Y29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cG9wKCkpOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgIEpTT2JqZWN0KiBzY29wZSA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVj
LCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwgTExJTlRfT1AoMykuanNW
YWx1ZSgpLCBEb250RGVsZXRlKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3Bl
Q2hhaW4oKS0+cHVzaChzY29wZSkpOworICAgIExMSU5UX1JFVFVSTihzY29wZSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IExMSU5UX1RIUk9XKExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIExMSU5UX1RIUk9XKGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIExMSU5UX09QX0Mo
MSkuanNWYWx1ZSgpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZGVidWcpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBpbnQg
ZGVidWdIb29rSUQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgaW50IGZpcnN0TGluZSA9IHBjWzJd
LnUub3BlcmFuZDsKKyAgICBpbnQgbGFzdExpbmUgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5kZWJ1ZyhleGVjLCBzdGF0aWNfY2Fz
dDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVf
d2lsbF9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxl
ZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT53aWxsRXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1Zh
bHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJvZmlsZV9kaWRfY2FsbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgICgqUHJvZmlsZXI6
OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSgpKS0+ZGlkRXhlY3V0ZShleGVjLCBMTElOVF9PUCgx
KS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgTExJbnRIZWxwZXJzX2gKKyNkZWZpbmUgTExJbnRIZWxwZXJzX2gKKworI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIEVO
QUJMRShMTElOVCkKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVj
dCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKwordHlwZWRlZiBpbnQ2NF90IEhl
bHBlclJldHVyblR5cGU7CisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFj
ZV9vcGVyYW5kKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9w
ZXJhbmQpOworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4
ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworCisj
ZGVmaW5lIExMSU5UX0hFTFBFUl9ERUNMKG5hbWUpIFwKKyAgICBleHRlcm4gIkMiIEhlbHBlclJl
dHVyblR5cGUgbGxpbnRfIyNuYW1lKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQor
CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZSk7CitMTElOVF9IRUxQRVJfREVDTCh0
cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFj
ZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRy
YWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlD
aGVja19mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKHNwZWNpYWxfdHJhY2UpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCk7CitMTElOVF9I
RUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQ
RVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9I
RUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2Up
OworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjayk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
b25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2Fj
dGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jb252ZXJ0X3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmpl
Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bmV3X3JlZ2V4cCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9lcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bnN0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9sZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHJlX2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Bvc3RfZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcik7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9hZGQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfc3ViKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX21vZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Vyc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfYml0b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhv
cik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lu
c3RhbmNlb2YpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19ib29sZWFuKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
aXNfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfaW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfYmFzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5
X2V4aXN0cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9nZXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9h
cmd1bWVudHNfbGVuZ3RoKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50
X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9kZWxfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXJfc2V0dGVyKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qdHJ1
ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZhbHNlKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
am5ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdy
ZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyZXEpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9pbW0pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3N3aXRjaF9jaGFyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmV3X2Z1bmNfZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NhbGxfdmFyYXJncyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3N0cmNhdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZlKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXh0X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3Bl
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJv
dyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1Zyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJvZmlsZV93aWxsX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlk
X2NhbGwpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJM
RShMTElOVCkKKworI2VuZGlmIC8vIExMSW50SGVscGVyc19oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29u
ZmlnLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludE9mZmxpbmVBc21Db25maWdf
aAorI2RlZmluZSBMTEludE9mZmxpbmVBc21Db25maWdfaAorCisjaW5jbHVkZSAiTExJbnRDb21t
b24uaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9JbmxpbmVB
c20uaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENQVShYODYpCisjZGVmaW5l
IE9GRkxJTkVfQVNNX1g4NiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMAorI2Vu
ZGlmCisKKyNpZiBDUFUoQVJNX1RIVU1CMikKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMQor
I2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMAorI2VuZGlmCisKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDEKKyNlbHNlCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgQ1BVKEJJ
R19FTkRJQU4pCisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMQorI2Vsc2UKKyNkZWZp
bmUgT0ZGTElORV9BU01fQklHX0VORElBTiAwCisjZW5kaWYKKworI2lmIEVOQUJMRShMTElOVF9P
U1JfVE9fSklUKQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAxCisjZWxzZQorI2Rl
ZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIExMSU5UX0VYRUNV
VElPTl9UUkFDSU5HCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDEKKyNl
bHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNlbmRpZgorCisj
aWYgTExJTlRfQUxXQVlTX0FMTE9DQVRFX1NMT1cKKyNkZWZpbmUgT0ZGTElORV9BU01fQUxXQVlT
X0FMTE9DQVRFX1NMT1cgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQUxXQVlTX0FMTE9D
QVRFX1NMT1cgMAorI2VuZGlmCisKKyNpZiBDUFUoQVJNX1RIVU1CMikKKyNkZWZpbmUgT0ZGTElO
RV9BU01fR0xPQkFMX0xBQkVMKGxhYmVsKSAgICAgICAgICBcCisgICAgIi5nbG9ibCAiIFNZTUJP
TF9TVFJJTkcobGFiZWwpICJcbiIgICAgICAgICAgXAorICAgIEhJREVfU1lNQk9MKG5hbWUpICJc
biIgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiLnRodW1iXG4iICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJB
TShsYWJlbCkgIlxuIiAgXAorICAgIFNZTUJPTF9TVFJJTkcobGFiZWwpICI6XG4iCisjZWxzZQor
I2RlZmluZSBPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGFiZWwpICAgICAgICAgXAorICAgICIu
Z2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxhYmVsKSAiXG4iICAgICAgICAgXAorICAgIEhJREVfU1lN
Qk9MKG5hbWUpICJcbiIgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFNZTUJPTF9TVFJJTkco
bGFiZWwpICI6XG4iCisjZW5kaWYKKworI2VuZGlmIC8vIExMSW50T2ZmbGluZUFzbUNvbmZpZ19o
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkV4ZWN1
dGFibGUuaCIKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNp
bmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Nl
bGwuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgi
CisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgor
I2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKKyNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCisj
aW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgi
CisjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKKyNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKKyNp
bmNsdWRlICJTY29wZUNoYWluLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAi
U3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdJbXBsLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX09GRlNFVE9GKGNsYXp6LCBmaWVsZCkgT0JKRUNUX09GRlNFVE9GKGNsYXp6LCBmaWVs
ZCkKKworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQqIGR1bW15KCk7Cit9OworCitjb25zdCB1bnNpZ25lZCogTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOjpkdW1teSgpCit7CisvLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkg
b2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRzX2V4dHJhY3Rvci5yYiwgYW5kIGNvbnRhaW5zIGNv
ZGUKKy8vIHRvIGNyZWF0ZSBhIHRhYmxlIG9mIG9mZnNldHMsIHNpemVzLCBhbmQgYSBoZWFkZXIg
aWRlbnRpZnlpbmcgd2hhdCBjb21iaW5hdGlvbiBvZgorLy8gUGxhdGZvcm0uaCBtYWNyb3Mgd2Ug
aGF2ZSBzZXQuIFdlIGluY2x1ZGUgaXQgaW5zaWRlIG9mIGEgbWV0aG9kIG9uIExMSW50T2Zmc2V0
c0V4dHJhY3RvcgorLy8gYmVjYXVzZSB0aGUgZmllbGRzIHdob3NlIG9mZnNldHMgd2UncmUgZXh0
cmFjdGluZyBhcmUgbW9zdGx5IHByaXZhdGUuIFNvIHdlIG1ha2UgdGhlaXIKKy8vIGNsYXNzZXMg
ZnJpZW5kcyB3aXRoIExMSW50T2Zmc2V0c0V4dHJhY3RvciwgYW5kIGluY2x1ZGUgdGhlIGhlYWRl
ciBoZXJlLCB0byBnZXQgdGhlIEMrKworLy8gY29tcGlsZXIgdG8ga2luZGx5IHN0ZXAgYXNpZGUg
YW5kIHlpZWxkIHRvIG91ciBiZXN0IGludGVudGlvbnMuCisjaW5jbHVkZSAiTExJbnREZXNpcmVk
T2Zmc2V0cy5oIgorICAgIHJldHVybiBleHRyYWN0b3JUYWJsZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKK2ludCBtYWluKGludCwgY2hhcioqKQoreworICAgIC8vIE91dCBvZiBhbiBhYnVu
ZGFuY2Ugb2YgY2F1dGlvbiwgbWFrZSBzdXJlIHRoYXQgTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpk
dW1teSgpIGlzIGxpdmUsCisgICAgLy8gYW5kIHRoZSBleHRyYWN0b3JUYWJsZSBpcyBsaXZlLCB0
b28uCisgICAgcHJpbnRmKCIlcFxuIiwgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15
KCkpOworICAgIHJldHVybiAwOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50VGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKwor
I2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgiCisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2lu
Y2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBMTEludCB7CisKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCB2b2lkICgqdGFyZ2V0KSgpKQorewor
ICAgIEpTSW50ZXJmYWNlSklUIGppdDsKKyAgICAKKyAgICAvLyBGSVhNRTogdGhlcmUncyBwcm9i
YWJseSBhIGJldHRlciB3YXkgdG8gZG8gaXQgb24gWDg2LCBidXQgSSdtIG5vdCBzdXJlIEkgY2Fy
ZS4KKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nh
c3Q8dm9pZCo+KHRhcmdldCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDApOworICAgIGppdC5qdW1w
KEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cigqZ2xvYmFsRGF0YSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICByZXR1cm4gcGF0Y2hC
dWZmZXIuZmluYWxpemVDb2RlKCk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlv
bkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sK
KyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwg
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
byhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayk7Cit9CisK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVu
a0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1
bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9ldmFsX3Byb2xvZ3VlKTsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG8oZ2xvYmFsRGF0YSwgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSk7Cit9CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIExMSW50VGh1bmtzX2gKKyNkZWZpbmUgTExJbnRUaHVua3NfaAorCisjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJNYWNy
b0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFs
RGF0YTsKKworbmFtZXNwYWNlIExMSW50IHsKKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0
aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xv
YmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hl
Y2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBm
dW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEq
KTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2Jh
bERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRv
cihKU0dsb2JhbERhdGEqKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludFRodW5rc19oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzNzggQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBDcmFzaCBjb3Vyc2Ugb24gdGhl
IGxhbmd1YWdlIHRoYXQgdGhpcyBpcyB3cml0dGVuIGluICh3aGljaCBJIGp1c3QgY2FsbAorIyAi
YXNzZW1ibHkiIGV2ZW4gdGhvdWdoIGl0J3MgbW9yZSB0aGFuIHRoYXQpOgorIworIyAtIE1vc3Rs
eSBnYXMtc3R5bGUgb3BlcmFuZCBvcmRlcmluZy4gVGhlIGxhc3Qgb3BlcmFuZCB0ZW5kcyB0byBi
ZSB0aGUKKyMgICBkZXN0aW5hdGlvbi4gU28gImEgOj0gYiIgaXMgd3JpdHRlbiBhcyAibW92IGIs
IGEiLiBCdXQgdW5saWtlIGdhcywKKyMgICBjb21wYXJpc29ucyBhcmUgaW4tb3JkZXIsIHNvICJp
ZiAoYSA8IGIpIiBpcyB3cml0dGVuIGFzCisjICAgImJpbHQgYSwgYiwgLi4uIi4KKyMKKyMgLSAi
YiIgPSBieXRlLCAiaCIgPSAxNi1iaXQgd29yZCwgImkiID0gMzItYml0IHdvcmQsICJwIiA9IHBv
aW50ZXIuCisjICAgQ3VycmVudGx5IHRoaXMgaXMganVzdCAzMi1iaXQgc28gImkiIGFuZCAicCIg
YXJlIGludGVyY2hhbmdlYWJsZQorIyAgIGV4Y2VwdCB3aGVuIGFuIG9wIHN1cHBvcnRzIG9uZSBi
dXQgbm90IHRoZSBvdGhlci4KKyMKKyMgLSBJbiBnZW5lcmFsLCB2YWxpZCBvcGVyYW5kcyBmb3Ig
bWFjcm8gaW52b2NhdGlvbnMgYW5kIGluc3RydWN0aW9ucyBhcmUKKyMgICByZWdpc3RlcnMgKGVn
ICJ0MCIpLCBhZGRyZXNzZXMgKGVnICI0W3QwXSIpLCBiYXNlLWluZGV4IGFkZHJlc3NlcworIyAg
IChlZyAiN1t0MCwgdDEsIDJdIiksIGFic29sdXRlIGFkZHJlc3NlcyAoZWcgIjB4YTAwMDAwMDBb
XSIpLCBvciBsYWJlbHMKKyMgICAoZWcgIl9mb28iIG9yICIuZm9vIikuIE1hY3JvIGludm9jYXRp
b25zIGNhbiBhbHNvIHRha2UgYW5vbnltb3VzCisjICAgbWFjcm9zIGFzIG9wZXJhbmRzLiBJbnN0
cnVjdGlvbnMgY2Fubm90IHRha2UgYW5vbnltb3VzIG1hY3Jvcy4KKyMKKyMgLSBMYWJlbHMgbXVz
dCBoYXZlIG5hbWVzIHRoYXQgYmVnaW4gd2l0aCBlaXRoZXIgIl8iIG9yICIuIi4gIEEgIi4iIGxh
YmVsCisjICAgaXMgbG9jYWwgYW5kIGdldHMgcmVuYW1lZCBiZWZvcmUgY29kZSBnZW4gdG8gbWlu
aW1pemUgbmFtZXNwYWNlCisjICAgcG9sbHV0aW9uLiBBICJfIiBsYWJlbCBpcyBhbiBleHRlcm4g
c3ltYm9sIChpLmUuICIuZ2xvYmwiKS4gVGhlICJfIgorIyAgIG1heSBvciBtYXkgbm90IGJlIHJl
bW92ZWQgZHVyaW5nIGNvZGUgZ2VuIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBhc20KKyMgICBj
b252ZW50aW9ucyBmb3IgQyBuYW1lIG1hbmdsaW5nIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0gbWFu
ZGF0ZSBhICJfIgorIyAgIHByZWZpeC4KKyMKKyMgLSBBICJtYWNybyIgaXMgYSBsYW1iZGEgZXhw
cmVzc2lvbiwgd2hpY2ggbWF5IGJlIGVpdGhlciBhbm9ueW1vdXMgb3IKKyMgICBuYW1lZC4gQnV0
IHRoaXMgaGFzIGNhdmVhdHMuICJtYWNybyIgY2FuIHRha2UgemVybyBvciBtb3JlIGFyZ3VtZW50
cywKKyMgICB3aGljaCBtYXkgYmUgbWFjcm9zIG9yIGFueSB2YWxpZCBvcGVyYW5kcywgYnV0IGl0
IGNhbiBvbmx5IHJldHVybgorIyAgIGNvZGUuIEJ1dCB5b3UgY2FuIGRvIFR1cmluZy1jb21wbGV0
ZSB0aGluZ3MgdmlhIGNvbnRpbnVhdGlvbiBwYXNzaW5nCisjICAgc3R5bGU6ICJtYWNybyBmb28g
KGEsIGIpIGIoYSkgZW5kIGZvbyhmb28sIGZvbykiLiBBY3R1YWxseSwgZG9uJ3QgZG8KKyMgICB0
aGF0LCBzaW5jZSB5b3UnbGwganVzdCBjcmFzaCB0aGUgYXNzZW1ibGVyLgorIworIyAtIEFuICJp
ZiIgaXMgYSBjb25kaXRpb25hbCBvbiBzZXR0aW5ncy4gQW55IGlkZW50aWZpZXIgc3VwcGxpZWQg
aW4gdGhlCisjICAgcHJlZGljYXRlIG9mIGFuICJpZiIgaXMgYXNzdW1lZCB0byBiZSBhICNkZWZp
bmUgdGhhdCBpcyBhdmFpbGFibGUKKyMgICBkdXJpbmcgY29kZSBnZW4uIFNvIHlvdSBjYW4ndCB1
c2UgImlmIiBmb3IgY29tcHV0YXRpb24gaW4gYSBtYWNybywgYnV0CisjICAgeW91IGNhbiB1c2Ug
aXQgdG8gc2VsZWN0IGRpZmZlcmVudCBwaWVjZXMgb2YgY29kZSBmb3IgZGlmZmVyZW50CisjICAg
cGxhdGZvcm1zLgorIworIyAtIEFyZ3VtZW50cyB0byBtYWNyb3MgZm9sbG93IGxleGljYWwgc2Nv
cGluZyByYXRoZXIgdGhhbiBkeW5hbWljIHNjb3BpbmcuCisjICAgQ29uc3QncyBhbHNvIGZvbGxv
dyBsZXhpY2FsIHNjb3BpbmcgYW5kIG1heSBvdmVycmlkZSAoaGlkZSkgYXJndW1lbnRzCisjICAg
b3Igb3RoZXIgY29uc3RzLiBBbGwgdmFyaWFibGVzIChhcmd1bWVudHMgYW5kIGNvbnN0YW50cykg
Y2FuIGJlIGJvdW5kCisjICAgdG8gb3BlcmFuZHMuIEFkZGl0aW9uYWxseSwgYXJndW1lbnRzIChi
dXQgbm90IGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gbWFjcm9zLgorCisKKyMgVGhl
c2UgZGVjbGFyYXRpb25zIG11c3QgbWF0Y2ggaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmguCitj
b25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gNDgKK2NvbnN0IEFyZ3VtZW50Q291bnQgPSAtNDgK
K2NvbnN0IENhbGxlckZyYW1lID0gLTQwCitjb25zdCBDYWxsZWUgPSAtMzIKK2NvbnN0IFNjb3Bl
Q2hhaW4gPSAtMjQKK2NvbnN0IFJldHVyblBDID0gLTE2Citjb25zdCBDb2RlQmxvY2sgPSAtOAor
Citjb25zdCBUaGlzQXJndW1lbnRPZmZzZXQgPSAtQ2FsbEZyYW1lSGVhZGVyU2l6ZSAtIDgKKwor
IyBEZWNsYXJlIHNvbWUgYWxpYXNlcyBmb3IgdGhlIHJlZ2lzdGVycyB3ZSB3aWxsIHVzZS4KK2Nv
bnN0IFBDID0gdDQKKworIyBPZmZzZXRzIG5lZWRlZCBmb3IgcmVhc29uaW5nIGFib3V0IHZhbHVl
IHJlcHJlc2VudGF0aW9uLgoraWYgQklHX0VORElBTgorICAgIGNvbnN0IFRhZ09mZnNldCA9IDAK
KyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gNAorZWxzZQorICAgIGNvbnN0IFRhZ09mZnNldCA9
IDQKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gMAorZW5kCisKKyMgVmFsdWUgcmVwcmVzZW50
YXRpb24gY29uc3RhbnRzLgorY29uc3QgSW50MzJUYWcgPSAtMQorY29uc3QgQm9vbGVhblRhZyA9
IC0yCitjb25zdCBOdWxsVGFnID0gLTMKK2NvbnN0IFVuZGVmaW5lZFRhZyA9IC00Citjb25zdCBD
ZWxsVGFnID0gLTUKK2NvbnN0IEVtcHR5VmFsdWVUYWcgPSAtNgorY29uc3QgRGVsZXRlZFZhbHVl
VGFnID0gLTcKK2NvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRhZworCisjIFR5cGUgY29u
c3RhbnRzLgorY29uc3QgU3RyaW5nVHlwZSA9IDUKK2NvbnN0IE9iamVjdFR5cGUgPSAxMAorCisj
IFR5cGUgZmxhZ3MgY29uc3RhbnRzLgorY29uc3QgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDEK
K2NvbnN0IEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDIKK2NvbnN0IEltcGxlbWVudHNEZWZhdWx0
SGFzSW5zdGFuY2UgPSA4CisKKyMgSGVhcCBhbGxvY2F0aW9uIGNvbnN0YW50cy4KK2NvbnN0IEpT
RmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9IDMKKworIyBCeXRlY29kZSBvcGVyYW5kIGNvbnN0
YW50cy4KK2NvbnN0IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMAorCisj
IENvZGUgdHlwZSBjb25zdGFudHMuCitjb25zdCBHbG9iYWxDb2RlID0gMAorY29uc3QgRXZhbENv
ZGUgPSAxCitjb25zdCBGdW5jdGlvbkNvZGUgPSAyCisKKyMgVGhlIGludGVycHJldGVyIHN0ZWFs
cyB0aGUgdGFnIHdvcmQgb2YgdGhlIGFyZ3VtZW50IGNvdW50LgorY29uc3QgTExJbnRSZXR1cm5Q
QyA9IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQKKworIyBUaGlzIG11c3QgbWF0Y2ggd3RmL1Zl
Y3Rvci5oLgorY29uc3QgVmVjdG9yU2l6ZU9mZnNldCA9IDAKK2NvbnN0IFZlY3RvckJ1ZmZlck9m
ZnNldCA9IDQKKworIyBTdHJpbmcgZmxhZ3MuCitjb25zdCBIYXNoRmxhZ3M4Qml0QnVmZmVyID0g
NjQKKworIyBVdGlsaXRpZXMKK21hY3JvIGNyYXNoKCkKKyAgICBzdG9yZWkgMCwgMHhiYmFkYmVl
ZltdCisgICAgbW92ZSAwLCB0MAorICAgIGNhbGwgdDAKK2VuZAorCittYWNybyBhc3NlcnQoYXNz
ZXJ0aW9uKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGFzc2VydGlvbigub2spCisg
ICAgICAgIGNyYXNoKCkKKyAgICAub2s6CisgICAgZW5kCitlbmQKKworbWFjcm8gcHJlc2VydmVS
ZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIpCisgICAgaWYgQVJNdjcK
KyAgICAgICAgbW92ZSBsciwgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2lmIFg4NgorICAg
ICAgICBwb3AgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAg
ICBlbmQKK2VuZAorCittYWNybyByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihzb3Vy
Y2VSZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBs
cgorICAgIGVsc2lmIFg4NgorICAgICAgICBwdXNoIHNvdXJjZVJlZ2lzdGVyCisgICAgZWxzZQor
ICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCisg
ICAgYWRkcCBhZHZhbmNlICogNCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3Bh
dGNoQnJhbmNoV2l0aE9mZnNldChwY09mZnNldCkKKyAgICBsc2hpZnRpIDIsIHBjT2Zmc2V0Cisg
ICAgYWRkcCBwY09mZnNldCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNo
QnJhbmNoKHBjT2Zmc2V0KQorICAgIGxvYWRpIHBjT2Zmc2V0LCB0MAorICAgIGRpc3BhdGNoQnJh
bmNoV2l0aE9mZnNldCh0MCkKK2VuZAorCittYWNybyBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAg
bG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgIGptcCBbUENdCitl
bmQKKworbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQorICAgIGlmIEFSTXY3Cisg
ICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgIGVsc2lmIFg4
NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisgICAgZWxzZQor
ICAgICAgICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCisjIFRoaXMg
YmFyZWx5IHdvcmtzLiBhcmczIGFuZCBhcmc0IHNob3VsZCBwcm9iYWJseSBiZSBpbW1lZGlhdGVz
LgorbWFjcm8gY0NhbGw0KGZ1bmN0aW9uLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KQorICAgIGlm
IEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAg
ICAgICBtb3ZlIGFyZzMsIHQyCisgICAgICAgIG1vdmUgYXJnNCwgdDMKKyAgICBlbHNpZiBYODYK
KyAgICAgICAgcG9rZSBhcmcxLCAwCisgICAgICAgIHBva2UgYXJnMiwgMQorICAgICAgICBwb2tl
IGFyZzMsIDIKKyAgICAgICAgcG9rZSBhcmc0LCAzCisgICAgZWxzZQorICAgICAgICBlcnJvcgor
ICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCittYWNybyBjYWxsSGVscGVyKGhlbHBl
cikKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92
ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8g
cHJpbnQgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtLiBmcm9tV2hlcmUKKyMg
c2hvdWxkIGJlIGFuIGltbWVkaWF0ZSBpbnRlZ2VyIC0gYW55IGludGVnZXIgeW91IGxpa2U7IHVz
ZSBpdCB0byBpZGVudGlmeSB0aGUgcGxhY2UgeW91J3JlCisjIGRlYnVnZ2luZyBmcm9tLiBvcGVy
YW5kIHNob3VsZCBsaWtld2lzZSBiZSBhbiBpbW1lZGlhdGUsIGFuZCBzaG91bGQgaWRlbnRpZnkg
dGhlIG9wZXJhbmQKKyMgaW4gdGhlIGluc3RydWN0aW9uIHN0cmVhbSB5b3UnZCBsaWtlIHRvIHBy
aW50IG91dC4KK21hY3JvIHRyYWNlT3BlcmFuZChmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgY0Nh
bGw0KF9sbGludF90cmFjZV9vcGVyYW5kLCBjZnIsIFBDLCBmcm9tV2hlcmUsIG9wZXJhbmQpCisg
ICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVnZ2luZyBvcGVy
YXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCB0aGUgdmFsdWUgb2YgYW4gb3BlcmFuZCBpbiB0
aGUgaW5zdHJ1Y3Rpb24KKyMgc3RyZWFtLiBTYW1lIGFzIHRyYWNlT3BlcmFuZCgpLCBidXQgYXNz
dW1lcyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgcmVnaXN0ZXIsIGFuZCBwcmludHMgaXRzCisjIHZh
bHVlLgorbWFjcm8gdHJhY2VWYWx1ZShmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgY0NhbGw0KF9s
bGludF90cmFjZV92YWx1ZSwgY2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUg
dDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworbWFjcm8gdHJhY2VFeGVjdXRpb24oKQor
ICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3RyYWNl
KQorICAgIGVuZAorZW5kCisKKyMgQ2FsbCBhIGhlbHBlciBmb3IgY2FsbCBvcGNvZGVzLgorbWFj
cm8gY2FsbENhbGxIZWxwZXIoYWR2YW5jZSwgaGVscGVyLCBhY3Rpb24pCisgICAgYWRkcCBhZHZh
bmNlICogNCwgUEMsIHQwCisgICAgc3RvcmVwIHQwLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0
W2Nmcl0KKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUgdDEsIGNmcgorICAg
IGFjdGlvbih0MCkKK2VuZAorCittYWNybyBzbG93UGF0aEZvckNhbGwoYWR2YW5jZSwgaGVscGVy
KQorICAgIGNhbGxDYWxsSGVscGVyKAorICAgICAgICBhZHZhbmNlLAorICAgICAgICBoZWxwZXIs
CisgICAgICAgIG1hY3JvIChjYWxsZWUpCisgICAgICAgICAgICBjYWxsIGNhbGxlZQorICAgICAg
ICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hl
Y2tTd2l0Y2hUb0pJVChpbmNyZW1lbnQsIGFjdGlvbikKKyAgICBpZiBKSVRfRU5BQkxFRAorICAg
ICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICAgICAgYmFkZGlzIGluY3JlbWVudCwg
Q29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJbdDBdLCAuY29udGludWUKKyAgICAgICAg
YWN0aW9uKCkKKyAgICAuY29udGludWU6CisgICAgZW5kCitlbmQKKworbWFjcm8gY2hlY2tTd2l0
Y2hUb0pJVEZvckxvb3AoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEsCisgICAg
ICAgIG1hY3JvICgpCisgICAgICAgICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdP
ZmZzZXRbY2ZyXQorICAgICAgICAgICAgY0NhbGwyKF9sbGludF9sb29wX29zciwgY2ZyLCBQQykK
KyAgICAgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAgICAgICAgYnRweiB0MCwgLnJlY292ZXIK
KyAgICAgICAgICAgIGptcCB0MAorICAgICAgICAucmVjb3ZlcjoKKyAgICAgICAgICAgIGxvYWRp
IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICAgICAgZW5kKQorZW5kCisK
K21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgY2hlY2tTd2l0Y2hUb0pJ
VCgKKyAgICAgICAgMTAsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBjYWxsSGVscGVy
KF9sbGludF9yZXBsYWNlKQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gYXNzZXJ0Tm90Q29u
c3RhbnQoaW5kZXgpCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlsdCBpbmRleCwgRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXgsIG9rIGVuZCkKK2VuZAorCisjIEluZGV4LCB0YWcsIGFuZCBwYXls
b2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90CisjIGNoYW5nZWQu
CittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAg
YmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAg
bG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6Cisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
Y29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQK
KyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5z
IGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVl
IDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCkgPDwgMy4KKyAgICBsb2FkcCBUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCB0YWcKKyAg
ICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6
CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBtYXkgYmUgdGhlIHNhbWUgcmVnaXN0ZXIuIElu
ZGV4IG1heSBiZSBjbG9iYmVyZWQuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhp
bmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwg
dGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAg
IGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YWcKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbdGFnXSwgdGFnCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBp
bmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAg
ICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbHNoaWZ0aSAzLCBpbmRleAorICAgIGFkZHAgaW5k
ZXgsIHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdGFnXSwgcGF5bG9hZAorICAgIGxvYWRw
IFRhZ09mZnNldFt0YWddLCB0YWcKKy5kb25lOgorZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKGluZGV4LCB0YWdDaGVjaywgcGF5bG9hZCkKKyAgICBi
aWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICB0
YWdDaGVjayhUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0pCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2Nv
bnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisg
ICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBh
IHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8
PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgp
IDw8IDMuCisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSkKKyAgICBs
b2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6Citl
bmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIElu
ZGV4IGlzIG5vdCBtdXRhdGVkLiBVc2UKKyMgdGhpcyBpZiB5b3Uga25vdyB3aGF0IHRoZSB0YWcg
b2YgdGhlIHZhcmlhYmxlIHNob3VsZCBiZS4gRG9pbmcgdGhlIHRhZworIyB0ZXN0IGFzIHBhcnQg
b2YgbG9hZGluZyB0aGUgdmFyaWFibGUgcmVkdWNlcyByZWdpc3RlciB1c2UsIGJ1dCBtYXkgbm90
CisjIGJlIGZhc3RlciB0aGFuIGRvaW5nIGxvYWRDb25zdGFudE9yVmFyaWFibGUgZm9sbG93ZWQg
YnkgYSBicmFuY2ggb24gdGhlCisjIHRhZy4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywgcGF5bG9hZCwgc2xvdykKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgKKyAgICAgICAgaW5kZXgsCisgICAgICAgIG1h
Y3JvIChhY3R1YWxUYWcpIGJpbmVxIGFjdHVhbFRhZywgZXhwZWN0ZWRUYWcsIHNsb3cgZW5kLAor
ICAgICAgICBwYXlsb2FkKQorZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkVW5jaGVja2VkKGluZGV4LCBwYXlsb2FkKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkVGFnQ3VzdG9tKAorICAgICAgICBpbmRleCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRh
ZykgZW5kLAorICAgICAgICBwYXlsb2FkKQorZW5kCisKK21hY3JvIHdyaXRlQmFycmllcih0YWcs
IHBheWxvYWQpCisgICAgIyBOb3RoaW5nIHRvIGRvLCBzaW5jZSB3ZSBkb24ndCBoYXZlIGEgZ2Vu
ZXJhdGlvbmFsIG9yIGluY3JlbWVudGFsIGNvbGxlY3Rvci4KK2VuZAorCittYWNybyB2YWx1ZVBy
b2ZpbGUodGFnLCBwYXlsb2FkLCBwcm9maWxlKQorICAgIHN0b3JlaSB0YWcsIFZhbHVlUHJvZmls
ZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3Byb2ZpbGVdCisgICAgc3RvcmVpIHBheWxvYWQsIFZh
bHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFtwcm9maWxlXQorZW5kCisKKwor
IyBJbmRpY2F0ZSB0aGUgYmVnaW5uaW5nIG9mIExMSW50LgorX2xsaW50X2JlZ2luOgorICAgIGNy
YXNoKCkKKworCisjIEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVycHJldGVyCisKK21hY3JvIGZ1
bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBD
YWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1
dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVn
aXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0
YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAg
ICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRS
ZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25z
dHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIG5vdEZ1
bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0
dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgIHN0b3JlcCBzb3VyY2VSZWdpc3RlciwgQ29kZUJsb2Nr
W2Nmcl0KK2VuZAorCittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdp
c3RlcikKKyAgICAjIE5vdGhpbmcgdG8gZG8hCitlbmQKKworIyBEbyB0aGUgYmFyZSBtaW5pbXVt
IHJlcXVpcmVkIHRvIGV4ZWN1dGUgY29kZS4gU2V0cyB1cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2Rl
QmxvY2sqCisjIGluIHQxLiBNYXkgYWxzbyB0cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KK21h
Y3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JIZWxwZXIs
IHRyYWNlSGVscGVyKQorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAg
ICAKKyAgICAjIFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9T
Ui4KKyAgICBzdG9yZXAgdDIsIFJldHVyblBDW2Nmcl0KKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lO
RworICAgICAgICBjYWxsSGVscGVyKHRyYWNlSGVscGVyKQorICAgIGVuZAorICAgIGNvZGVCbG9j
a0dldHRlcih0MSkKKyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBiYWRkaXMgNSwgQ29kZUJs
b2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJbdDFdLCAuY29udGludWUKKyAgICAgICAgY0NhbGwy
KG9zckhlbHBlciwgY2ZyLCBQQykKKyAgICAgICAgbW92ZSB0MSwgY2ZyCisgICAgICAgIGJ0cHog
dDAsIC5yZWNvdmVyCisgICAgICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCisgICAgICAgIHJl
c3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAgICAgICBqbXAgdDAKKyAgICAu
cmVjb3ZlcjoKKyAgICAgICAgY29kZUJsb2NrR2V0dGVyKHQxKQorICAgIC5jb250aW51ZToKKyAg
ICBlbmQKKyAgICBjb2RlQmxvY2tTZXR0ZXIodDEpCisgICAgCisgICAgIyBTZXQgdXAgdGhlIFBD
LgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRw
IENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9m
ZnNldFt0MF0sIFBDCitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3
aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KKyMgTXVzdCBjYWxsIGRpc3Bh
dGNoKDApIGFmdGVyIGNhbGxpbmcgdGhpcy4KK21hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24o
cHJvZmlsZUFyZ1NraXApCisgICAgIyBQcm9maWxlIHRoZSBhcmd1bWVudHMuIFVuZm9ydHVuYXRl
bHksIHdlIGhhdmUgbm8gY2hvaWNlIGJ1dCB0byBkbyB0aGlzLiBUaGlzCisgICAgIyBjb2RlIGlz
IHByZXR0eSBob3JyZW5kb3VzIGJlY2F1c2Ugb2YgdGhlIGRpZmZlcmVuY2UgaW4gb3JkZXJpbmcg
YmV0d2VlbgorICAgICMgYXJndW1lbnRzIGFuZCB2YWx1ZSBwcm9maWxlcywgdGhlIGRlc2lyZSB0
byBoYXZlIGEgc2ltcGxlIGxvb3AtZG93bi10by16ZXJvCisgICAgIyBsb29wLCBhbmQgdGhlIGRl
c2lyZSB0byB1c2Ugb25seSB0aHJlZSByZWdpc3RlcnMgc28gYXMgdG8gcHJlc2VydmUgdGhlIFBD
IGFuZAorICAgICMgdGhlIGNvZGUgYmxvY2suIEl0IGlzIGxpa2VseSB0aGF0IHRoaXMgY29kZSBz
aG91bGQgYmUgcmV3cml0dGVuIGluIGEgbW9yZQorICAgICMgb3B0aW1hbCB3YXkgZm9yIGFyY2hp
dGVjdHVyZXMgdGhhdCBoYXZlIG1vcmUgdGhhbiBmaXZlIHJlZ2lzdGVycyBhdmFpbGFibGUKKyAg
ICAjIGZvciBhcmJpdHJhcnkgdXNlIGluIHRoZSBpbnRlcnByZXRlci4KKyAgICBsb2FkaSBDb2Rl
QmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIHQwCisgICAgYWRkaSAtcHJvZmlsZUFyZ1NraXAs
IHQwICMgVXNlIGFkZGkgYmVjYXVzZSB0aGF0J3Mgd2hhdCBoYXMgdGhlIHBlZXBob2xlCisgICAg
YXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHQwLCAwLCBvayBlbmQpCisgICAgYnRpeiB0MCwgLmFy
Z3VtZW50UHJvZmlsZURvbmUKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVBy
b2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QxXSwgdDMKKyAgICBtdWxpIHNpemVvZiBWYWx1
ZVByb2ZpbGUsIHQwLCB0MiAjIEFhYWFhaGhoaCEgTmVlZCBzdHJlbmd0aCByZWR1Y3Rpb24hCisg
ICAgbmVnaSB0MAorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQyLCB0MworLmFyZ3VtZW50
UHJvZmlsZUxvb3A6CisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0ICsg
OCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIKKyAgICBzdWJwIHNpemVvZiBWYWx1
ZVByb2ZpbGUsIHQzCisgICAgc3RvcmVpIHQyLCBwcm9maWxlQXJnU2tpcCAqIHNpemVvZiBWYWx1
ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNldFt0M10KKyAgICBs
b2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdT
a2lwICogOFtjZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIsIHByb2ZpbGVBcmdTa2lwICogc2l6
ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNl
dFt0M10KKyAgICBiYWRkaW56IDgsIHQwLCAuYXJndW1lbnRQcm9maWxlTG9vcAorLmFyZ3VtZW50
UHJvZmlsZURvbmU6CisgICAgCisgICAgIyBDaGVjayBzdGFjayBoZWlnaHQuCisgICAgbG9hZGkg
Q29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lzdGVyc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MgorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6aW50ZXJw
cmV0ZXJbdDJdLCB0MiAgICMgRklYTUU6IENhbiBnZXQgdG8gdGhlIFJlZ2lzdGVyRmlsZSBmcm9t
IHRoZSBKSVRTdGFja0ZyYW1lCisgICAgbHNoaWZ0aSAzLCB0MAorICAgIGFkZHAgdDAsIGNmciwg
dDAKKyAgICBicGFlcSBJbnRlcnByZXRlcjo6bV9yZWdpc3RlckZpbGUgKyBSZWdpc3RlckZpbGU6
Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCisKKyAgICAjIFN0YWNrIGhlaWdodCBjaGVj
ayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBoZWxwZXIuCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
cmVnaXN0ZXJfZmlsZV9jaGVjaykKKy5zdGFja0hlaWdodE9LOgorZW5kCisKKyMgRXhwZWN0cyB0
aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBi
ZWhpbmQuCittYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBoZWxwZXIpCisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwgdDAKKyAgICBiaWFlcSB0
MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKKyAgICBjQ2FsbDIo
aGVscGVyLCBjZnIsIFBDKSAgICMgVGhpcyBoZWxwZXIgaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0
MCA9IDAgPT4gbm8gZXJyb3IsIHQwICE9IDAgPT4gZXJyb3IKKyAgICBtb3ZlIHQxLCBjZnIKKyAg
ICBidGl6IHQwLCAuY29udGludWUKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRh
W3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwg
dDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKy5j
b250aW51ZToKKyAgICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIFBDLCBzaW5jZSB0aGUgaGVscGVy
IGNsb2JiZXJlZCBpdC4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Oklu
c3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQwor
ICAgIGptcCBkb25lTGFiZWwKK2VuZAorCitfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKKyAgICBw
cm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tT
ZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNw
YXRjaCgwKQorCisKK19sbGludF9ldmFsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0
aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2Vu
dHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9y
Q2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9m
b3JfY2FsbCkKKy5mdW5jdGlvbkZvckNhbGxCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0
aW9uKDApCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxv
Y2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29u
c3RydWN0KQorLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFs
aXphdGlvbigxKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tH
ZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQor
ICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9sbGludF9oZWxw
ZXJfY2FsbF9hcml0eUNoZWNrKQorCisKK19sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0
dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25z
dHJ1Y3QpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2lu
LCBfbGxpbnRfaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQorCisjIEluc3RydWN0aW9uIGlt
cGxlbWVudGF0aW9ucworCitfbGxpbnRfb3BfZW50ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1W
YXJzW3QyXSwgdDIKKyAgICBidGl6IHQyLCAub3BFbnRlckRvbmUKKyAgICBtb3ZlIFVuZGVmaW5l
ZFRhZywgdDAKKyAgICBtb3ZlIDAsIHQxCisub3BFbnRlckxvb3A6CisgICAgc3ViaSAxLCB0Mgor
ICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgYnRpbnogdDIsIC5vcEVudGVyTG9vcAorLm9wRW50
ZXJEb25lOgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX2NyZWF0ZV9hY3RpdmF0aW9u
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFjdGl2YXRpb25E
b25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQorLm9w
Q3JlYXRlQWN0aXZhdGlvbkRvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5p
dF9sYXp5X3JlZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3Jl
aSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxp
bnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFn
LCAub3BDcmVhdGVBcmd1bWVudHNEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Ny
ZWF0ZV9hcmd1bWVudHMpCisub3BDcmVhdGVBcmd1bWVudHNEb25lOgorICAgIGRpc3BhdGNoKDIp
CisKKworbWFjcm8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNpemVDbGFzc0luZGV4LCBjbGFzc0lu
Zm9PZmZzZXQsIHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNsb3dDYXNl
KQorICAgIGlmIEFMV0FZU19BTExPQ0FURV9TTE9XCisgICAgICAgIGptcCBzbG93Q2FzZQorICAg
IGVsc2UKKyAgICAgICAgY29uc3Qgb2Zmc2V0T2ZNeVNpemVDbGFzcyA9IEpTR2xvYmFsRGF0YTo6
aGVhcCArIEhlYXA6Om1fb2JqZWN0U3BhY2UgKyBNYXJrZWRTcGFjZTo6bV9wcmVjaXNlU2l6ZUNs
YXNzZXMgKyBzaXplQ2xhc3NJbmRleCAqIHNpemVvZiBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzCisg
ICAgICAgIAorICAgICAgICAjIEZJWE1FOiB3ZSBjYW4gZ2V0IHRoZSBnbG9iYWwgZGF0YSBpbiBv
bmUgbG9hZCBmcm9tIHRoZSBzdGFjay4KKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNj
cmF0Y2gxCisgICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwg
c2NyYXRjaDEKKyAgICAgICAgCisgICAgICAgICMgR2V0IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJl
ZSBsaXN0LiAgICAKKyAgICAgICAgbG9hZHAgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNw
YWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKKyAgICAgICAg
YnRweiByZXN1bHQsIHNsb3dDYXNlCisgICAgICAgIAorICAgICAgICAjIFJlbW92ZSB0aGUgb2Jq
ZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAgICAgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0Y2gy
CisgICAgICAgIHN0b3JlcCBzY3JhdGNoMiwgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNw
YWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdCisgICAgCisgICAgICAgICMg
SW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgorICAgICAgICBsb2FkcCBjbGFzc0luZm9PZmZzZXRbc2Ny
YXRjaDFdLCBzY3JhdGNoMgorICAgICAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCisgICAg
ICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQorICAgICAg
ICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0XQorICAgICAgICBhZGRw
IHNpemVvZiBKU09iamVjdCwgcmVzdWx0LCBzY3JhdGNoMQorICAgICAgICBzdG9yZXAgc2NyYXRj
aDEsIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVtyZXN1bHRdCisgICAgZW5kCitlbmQKKwor
X2xsaW50X29wX2NyZWF0ZV90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDEKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0
MV0sIE9iamVjdFR5cGUsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1f
aW5oZXJpdG9ySURbdDBdLCB0MgorICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAg
YWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9i
YWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRl
VGhpc1Nsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4
XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcENyZWF0ZVRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9jcmVhdGVfdGhpcykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9nZXRfY2FsbGVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0ICsgQ2FsbGVlW2Nmcl0sIHQxCisgICAgc3RvcmVpIENl
bGxUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NvbnZlcnRfdGhp
czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5m
bzo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNTbG93CisgICAgZGlzcGF0
Y2goMikKKworLm9wQ29udmVydFRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9jb252ZXJ0X3RoaXMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X29iamVj
dDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNH
bG9iYWxPYmplY3Q6Om1fZW1wdHlPYmplY3RTdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGFsbG9jYXRl
QmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6
anNGaW5hbE9iamVjdENsYXNzSW5mbywgdDEsIHQwLCB0MiwgdDMsIC5vcE5ld09iamVjdFNsb3cp
CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIs
IHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRp
c3BhdGNoKDIpCisKKy5vcE5ld09iamVjdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX25ld19vYmplY3QpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X2FycmF5
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3
X2FycmF5KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19hcnJheV9idWZmZXI6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdf
YXJyYXlfYnVmZmVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19yZWdleHA6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdf
cmVnZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX21vdjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bfbm90OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5v
cE5vdFNsb3cKKyAgICB4b3JpIDEsIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNw
YXRjaCgzKQorCisub3BOb3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ub3Qp
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZXE6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcEVxU2xvdworICAgIGJpZXEgdDIs
IENlbGxUYWcsIC5vcEVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cKKyAg
ICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaWVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVh
blRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wRXFTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9lcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9lcV9u
dWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
aSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisg
ICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0ZQorLm9wRXFOdWxsSW1tZWRpYXRlOgorICAgIGNp
ZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2llcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIG9y
aSB0MiwgdDEKKy5vcEVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywg
VGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVxOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93CisgICAg
YmllcSB0MiwgQ2VsbFRhZywgLm9wTmVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BO
ZXFTbG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2luZXEgdDAsIHQxLCB0MAorICAgIHN0
b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BOZXFTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXEpCisgICAgZGlzcGF0Y2goNCkKKyAgICAK
KworX2xsaW50X29wX25lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkK
KyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbElt
bWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRieiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKKy5vcE5lcU51
bGxJbW1lZGlhdGU6CisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2luZXEgdDEsIFVu
ZGVmaW5lZFRhZywgdDEKKyAgICBhbmRpIHQyLCB0MQorLm9wTmVxTnVsbE5vdEltbWVkaWF0ZToK
KyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVp
IHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCittYWNy
byBzdHJpY3RFcShlcXVhbGl0eU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwg
dDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBi
aW5lcSB0MiwgdDMsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmlu
ZXEgdDIsIENlbGxUYWcsIC5ub3RTdHJpbmcKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKKyAgICBiYm5l
cSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlw
ZSwgLm5vdFN0cmluZworICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93Cisubm90U3RyaW5nOgorICAgIGxvYWRpIDRb
UENdLCB0MgorICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDApCisgICAgc3RvcmVpIEJv
b2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxw
ZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50X29wX3N0cmljdGVxOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJl
c3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9zdHJpY3Rl
cSkKKworCitfbGxpbnRfb3BfbnN0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBz
dHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwgcmlnaHQsIHJl
c3VsdCBlbmQsIF9sbGludF9oZWxwZXJfbnN0cmljdGVxKQorCisKK19sbGludF9vcF9sZXNzOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzcykK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzZXEpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2dyZWF0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfZ3JlYXRlcmVxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3By
ZV9pbmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZUluY1Nsb3cKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJhZGRpbyAxLCB0MSwgLm9w
UHJlSW5jU2xvdworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAg
IGRpc3BhdGNoKDIpCisKKy5vcFByZUluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3ByZV9pbmMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJlX2RlYzoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdworICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNTbG93
CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2go
MikKKworLm9wUHJlRGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2Rl
YykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3N0X2luYzoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAg
YmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdEluY1Nsb3cKKyAg
ICBiaWVxIHQwLCB0MSwgLm9wUG9zdEluY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYmFkZGlvIDEsIHQzLCAub3BQb3N0
SW5jU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0SW5jRG9uZToKKyAgICBkaXNwYXRjaCgzKQor
Cisub3BQb3N0SW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9pbmMp
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcG9zdF9kZWM6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3REZWNTbG93CisgICAg
YmllcSB0MCwgdDEsIC5vcFBvc3REZWNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDIKKyAgICBtb3ZlIHQyLCB0MworICAgIGJzdWJpbyAxLCB0MywgLm9wUG9zdERl
Y1Nsb3cKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0
b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQorLm9wUG9zdERlY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKwor
Lm9wUG9zdERlY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfZGVjKQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3RvX2pzbnVtYmVyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmllcSB0MiwgSW50MzJUYWcs
IC5vcFRvSnNudW1iZXJJc0ludAorICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BUb0pz
bnVtYmVyU2xvdworLm9wVG9Kc251bWJlcklzSW50OgorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgZGlzcGF0Y2goMykKKworLm9wVG9Kc251bWJlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3RvX2pzbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25l
Z2F0ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9h
ZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQorICAg
IGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3
ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdworICAgIG5lZ2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcs
IFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisub3BOZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQx
LCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKKyAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAg
c3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOZWdhdGVTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZWdhdGUpCisgICAgZGlzcGF0Y2goMykKKworCitt
YWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91Ymxl
T3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywg
Lm9wMU5vdEludAorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGxvYWRp
IDRbUENdLCB0MgorICAgIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0MywgdDEsIHQwLCAuc2xv
dywgdDIpCisgICAgZGlzcGF0Y2goNSkKKworLm9wMU5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJh
bmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291bGQgYmUg
YW55dGhpbmcuCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQzLCBMb3dl
c3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93
CisgICAgY2kyZCB0MSwgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9w
MkRvdWJsZToKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGxv
YWRpIDRbUENdLCB0MQorICAgIGZpaTJkIHQwLCB0MiwgZnQwCisgICAgZG91YmxlT3BlcmF0aW9u
KGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDUp
CisKKy5vcDJOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50
LCB0aGUgc2Vjb25kIG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QuCisgICAgbG9hZGkgNFtQQ10s
IHQyCisgICAgYmlhIHQzLCBMb3dlc3RUYWcsIC5zbG93CisgICAgY2kyZCB0MCwgZnQwCisgICAg
ZmlpMmQgdDEsIHQzLCBmdDEKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3Rv
cmVkIGZ0MCwgW2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLnNsb3c6CisgICAgY2Fs
bEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNSkKK2VuZAorCittYWNybyBiaW5hcnlPcChp
bnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBiaW5hcnlPcEN1
c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBp
bmRleCkKKyAgICAgICAgICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCisg
ICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAg
ICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAg
ICAgIGVuZCwKKyAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCitlbmQKKworX2xsaW50
X29wX2FkZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgc2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9hZGQpCisKKworX2xsaW50X29wX211bDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBs
ZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjb25zdCBzY3JhdGNoID0gaW50
MzJUYWcgICAjIFdlIGtub3cgdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIGludDMyVGFnIHJlZ2lzdGVy
IHNpbmNlIGl0IGhhcyBhIGNvbnN0YW50LgorICAgICAgICAgICAgbW92ZSByaWdodCwgc2NyYXRj
aAorICAgICAgICAgICAgYm11bGlvIGxlZnQsIHNjcmF0Y2gsIHNsb3cKKyAgICAgICAgICAgIGJ0
aW56IHNjcmF0Y2gsIC5kb25lCisgICAgICAgICAgICBiaWx0IGxlZnQsIDAsIHNsb3cKKyAgICAg
ICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgLmRvbmU6CisgICAgICAgICAgICBz
dG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3Rv
cmVpIHNjcmF0Y2gsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIG11bGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX211bCkKKworCitfbGxpbnRfb3Bfc3ViOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBi
c3ViaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQp
IHN1YmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3N1YikKKworCitf
bGxpbnRfb3BfZGl2OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0
b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkK
KyAgICAgICAgICAgIGNpMmQgbGVmdCwgZnQwCisgICAgICAgICAgICBjaTJkIHJpZ2h0LCBmdDEK
KyAgICAgICAgICAgIGRpdmQgZnQwLCBmdDEKKyAgICAgICAgICAgIGJjZDJpIGZ0MSwgcmlnaHQs
IC5ub3RJbnQKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5k
ZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0KKyAgICAgICAgICAgIGptcCAuZG9uZQorICAgICAgICAubm90SW50OgorICAgICAgICAg
ICAgc3RvcmVkIGZ0MSwgW2NmciwgaW5kZXgsIDhdCisgICAgICAgIC5kb25lOgorICAgICAgICBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgZGl2ZCBsZWZ0LCByaWdodCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfZGl2KQorCisKK19sbGludF9vcF9tb2Q6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9tb2QpCisgICAgZGlzcGF0
Y2goNCkKKworCittYWNybyBiaXRPcChvcGVyYXRpb24sIGhlbHBlciwgYWR2YW5jZSkKKyAgICBs
b2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0
MiwgdDApCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBJbnQz
MlRhZywgLnNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBvcGVyYXRpb24odDEsIHQwLCAu
c2xvdykKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCisKKy5z
bG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCitlbmQK
KworX2xsaW50X29wX2xzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfbHNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9v
cF9yc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX3JzaGlmdCwKKyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfdXJzaGlmdDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgc2xvdykKKyAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0CisgICAgICAgICAg
ICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAgIGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl91cnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF9iaXRhbmQ6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cp
IGFuZGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdGFuZCwKKyAg
ICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQsIHJp
Z2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXR4b3IsCisgICAgICAgIDUpCisKKwor
X2xsaW50X29wX2JpdG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2JpdG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRub3Q6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBiaW5l
cSB0MiwgSW50MzJUYWcsIC5vcEJpdG5vdFNsb3cKKyAgICBub3RpIHQzCisgICAgc3RvcmVpIHQy
LCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BCaXRub3RTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9iaXRub3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bf
Y2hlY2tfaGFzX2luc3RhbmNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAs
IC5vcENoZWNrSGFzSW5zdGFuY2VTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxh
Z3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93Cisg
ICAgZGlzcGF0Y2goMikKKworLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKKyAgICBkaXNwYXRjaCgyKQorCisK
K19sbGludF9vcF9pbnN0YW5jZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIENoZWNr
IHRoYXQgYmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9y
LgorICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuCisgICAgbG9hZGkgMTJb
UENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKHQxLCB0
MCkKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1
bHRIYXNJbnN0YW5jZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICAKKyAgICAjIEFjdHVhbGx5IGRv
IHRoZSB3b3JrLgorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEluc3Rh
bmNlb2ZTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGJi
YiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlw
ZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQor
ICAgIAorICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCisg
ICAgbW92ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxvb3A6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0Ml0sIHQyCisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxv
YWRPZmZzZXRbdDJdLCB0MgorICAgIGJwZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQorICAg
IGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcAorCisgICAgbW92ZSAwLCB0MAorLm9wSW5zdGFu
Y2VvZkRvbmU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQor
ICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDUp
CisKKy5vcEluc3RhbmNlb2ZTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbnN0
YW5jZW9mKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3R5cGVvZjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3R5cGVvZikKKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc191bmRlZmluZWQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc191bmRlZmluZWQpCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfYm9vbGVhbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Jvb2xlYW4pCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfaXNfbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX2lzX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2lzX3N0cmluZykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9pc19vYmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9pc19vYmplY3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfZnVu
Y3Rpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9pc19mdW5jdGlvbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pbjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luKQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29sdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlKQorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX3Jlc29sdmVfc2tpcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfc2tpcCkKKyAgICBkaXNwYXRjaCg1KQorCisK
K21hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBm
b2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4
W1BDXSAgIFByb3BlcnR5IGlkZW50aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2suCisgICAg
IyAxMltQQ10gIFN0cnVjdHVyZSBwb2ludGVyLCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2Rl
IGdlbmVyYXRvci4KKyAgICAjIDE2W1BDXSAgT2Zmc2V0IGluIGdsb2JhbCBvYmplY3QsIGluaXRp
YWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJwbmVxIHQxLCAxMltQQ10s
IHNsb3cKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVy
dHlTdG9yYWdlW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQw
CisgICAgdmFsdWVQcm9maWxlKHQyLCB0MywgdDApCitlbmQKKworX2xsaW50X29wX3Jlc29sdmVf
Z2xvYmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICByZXNvbHZlR2xvYmFsKDYsIC5vcFJl
c29sdmVHbG9iYWxTbG93KQorICAgIGRpc3BhdGNoKDYpCisKKy5vcFJlc29sdmVHbG9iYWxTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNw
YXRjaCg2KQorCisKKyMgR2l2ZXMgeW91IHRoZSBzY29wZSBpbiB0MCwgd2hpbGUgYWxsb3dpbmcg
eW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0aGUKKyMgc2Nv
cGVzIGFzIHRoZXkgYXJlIHRyYXZlcnNlZC4gc2NvcGVDaGVjaygpIGlzIGNhbGxlZCB3aXRoIHR3
byBhcmd1bWVudHM6IHRoZSByZWdpc3RlcgorIyBob2xkaW5nIHRoZSBzY29wZSwgYW5kIGEgcmVn
aXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc2NyYXRjaC4gTm90ZSB0aGF0IHRoaXMgZG9lcyBu
b3QKKyMgdXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQgc3R1ZmYgaW4gdDMgaWYgbmVlZCBiZS4KK21h
Y3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2Fk
cCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIGRlQnJ1aWpp
bkluZGV4T3BlcmFuZCwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorICAgIAorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGJpbmVxIENvZGVCbG9jazo6bV9jb2RlVHlwZVt0
MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AKKyAgICBidGJ6IENvZGVCbG9jazo6bV9uZWVkc0Z1bGxT
Y29wZUNoYWluW3QxXSwgLmxvb3AKKyAgICAKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZh
dGlvblJlZ2lzdGVyW3QxXSwgdDEKKworICAgICMgTmVlZCB0byBjb25kaXRpb25hbGx5IHNraXAg
b3ZlciBvbmUgc2NvcGUuCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFs
dWVUYWcsIC5ub0FjdGl2YXRpb24KKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBT
Y29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisubm9BY3RpdmF0aW9uOgorICAgIHN1YmkgMSwg
dDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorLmxvb3A6CisgICAgc2NvcGVDaGVjayh0MCwg
dDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MAorICAgIHN1YmkgMSwg
dDIKKyAgICBidGlueiB0MiwgLmxvb3AKKworLmRvbmU6CitlbmQKKworX2xsaW50X29wX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0
YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0
aXZhdGlvblN0cnVjdHVyZVt0M10sIHQzCisgICAgZ2V0U2NvcGUoCisgICAgICAgIDIwW1BDXSwK
KyAgICAgICAgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKQorICAgICAgICAgICAgbG9hZHAgU2NvcGVD
aGFpbk5vZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGJwbmVxIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVy
U2xvdworICAgICAgICBlbmQpCisgICAgcmVzb2x2ZUdsb2JhbCg3LCAub3BSZXNvbHZlR2xvYmFs
RHluYW1pY1Nsb3cpCisgICAgZGlzcGF0Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNT
dXBlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWMpCisgICAgZGlzcGF0Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5
bmFtaWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbF9k
eW5hbWljKQorICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX2dldF9zY29wZWRfdmFyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAg
ICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIEluZGV4
IG9mIHJlZ2lzdGVyIGluIHRoZSBzY29wZS4KKyAgICAjIDEyW1BDXSAgRGUgQnJ1aWppbiBpbmRl
eC4KKyAgICBnZXRTY29wZSgxMltQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAg
IGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRwIFNjb3BlQ2hh
aW5Ob2RlOjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVn
aXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgdDMKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MCwgdDEpCisgICAg
ZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGdldFNjb3BlKDhbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkK
KyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDMs
IHQyKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHdyaXRlQmFycmllcih0MywgdDIpCisgICAg
bG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJs
ZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W3Qw
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0
W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAor
ICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbdDAsIHQxLCA4XSwgdDEKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQor
ICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGxvYWRpIDEyW1BD
XSwgdDMKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MykKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgOFtQQ10sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6
Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0Miwg
dDMpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQyLCB0MykKKyAgICBz
dG9yZWkgdDIsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zm
c2V0W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX2Jh
c2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9y
ZXNvbHZlX2Jhc2UpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZW5zdXJlX3Byb3Bl
cnR5X2V4aXN0czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfcmVzb2x2ZV93aXRoX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQor
CisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQorICAgIGRpc3Bh
dGNoKDUpCisKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFu
ZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQorICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxs
b3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKKyAgICAj
IHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9i
eV9pZCB3aWxsIGNvbnRpbnVlCisgICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNh
Y2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAorICAgICMgd2Ug
d291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENl
bGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9h
ZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKKyAgICBicG5lcSBKU0NlbGw6
Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgbG9hZGkgNFtQQ10sIHQx
CisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0Ml0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFt0MCwgdDJdLCB0MgorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgMzJbUENdLCB0
MQorICAgIHZhbHVlUHJvZmlsZSh0MywgdDIsIHQxKQorICAgIGRpc3BhdGNoKDkpCisKKy5vcEdl
dEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfaWQpCisgICAg
ZGlzcGF0Y2goOSkKKworCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQor
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJn
dW1lbnRzTGVuZ3RoU2xvdworICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0
W2Nmcl0sIHQyCisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAx
MltQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMK
KyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93Cisg
ICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0
MCwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQwLCB0MikKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNl
dFt0MywgdDFdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBkaXNw
YXRjaCg5KQorCisub3BQdXRCeUlkU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cHV0X2J5X2lkKQorICAgIGRpc3BhdGNoKDkpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24o
YWRkaXRpb25hbENoZWNrcykKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQzCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0
MgorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cK
KyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkg
MjBbUENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQz
CisgICAgYWRkcCB0MSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDEs
IHQyKQorICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRb
dDNdCisgICAgbG9hZGkgMjRbUENdLCB0MQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0
M10KKyAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgZGlzcGF0Y2go
OSkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIHB1
dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkK
KworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgIHB1dEJ5SWRU
cmFuc2l0aW9uKAorICAgICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQor
ICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRo
ZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bworICAgICAgICAKKyAgICAgICAg
ICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAorICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykg
YnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46
Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9r
KSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9w
cm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAgICAg
ICAgLmxvb3A6CisgICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5
bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICAgICAgICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgICAgICAgICBi
cG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdworICAgICAgICAgICAgYWRkcCA0LCBz
Y3JhdGNoCisgICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zm
c2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisgICAgICAgIC5kb25lOgorICAgICAg
ICBlbmQpCisKKworX2xsaW50X29wX2RlbF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9nZXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQ
Q10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxT
bG93KQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MV0sIHQyCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIEludDMyVGFnLCB0MSwgLm9wR2V0
QnlWYWxTbG93KQorICAgIGJwbmVxIFt0MF0sIHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2Fk
cCBKU0FycmF5OjptX3N0b3JhZ2VbdDBdLCB0MworICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3Zl
Y3Rvckxlbmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIK
KyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEs
IDhdLCB0MQorICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAg
IHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIHZhbHVlUHJvZmls
ZSh0MiwgdDEsIHQwKQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEdldEJ5VmFsU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg1KQorCisK
K19sbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdwor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBJbnQzMlRhZywgdDIsIC5vcEdl
dEFyZ3VtZW50QnlWYWxTbG93KQorICAgIGFkZGkgMSwgdDIKKyAgICBsb2FkaSBBcmd1bWVudENv
dW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQorICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJn
dW1lbnRCeVZhbFNsb3cKKyAgICBuZWdpIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9h
ZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxv
YWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisg
ICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3BHZXRBcmd1bWVudEJ5
VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3Zh
bCkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9nZXRfYnlfcG5hbWU6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxv
YWRpIDE2W1BDXSwgdDAKKyAgICBicG5lcSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
Lm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5UG5hbWVTbG93KQorICAg
IGxvYWRpIDIwW1BDXSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAorICAgIGJwbmVxIHQwLCBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0M10sIC5vcEdldEJ5UG5h
bWVTbG93CisgICAgbG9hZGkgMjRbUENdLCB0MAorICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAK
KyAgICBzdWJpIDEsIHQwCisgICAgYmlhZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1f
bnVtQ2FjaGVhYmxlU2xvdHNbdDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRwIEpTT2Jq
ZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QyLCB0
MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MiwgdDAsIDhdLCB0MworICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
c3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNykKKwor
Lm9wR2V0QnlQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9w
bmFtZSkKKyAgICBkaXNwYXRjaCg3KQorCisKK19sbGludF9vcF9wdXRfYnlfdmFsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgSW50MzJU
YWcsIHQyLCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xv
YmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MF0sIHQwCisgICAgYnBuZXEgW3QxXSwgdDAsIC5v
cFB1dEJ5VmFsU2xvdworICAgIGJpYWVxIHQyLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MV0s
IC5vcFB1dEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQwCisg
ICAgYmllcSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIEVt
cHR5VmFsdWVUYWcsIC5vcFB1dEJ5VmFsRW1wdHkKKy5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQ6Cisg
ICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0
MSwgdDMpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MykKKyAgICBzdG9yZWkgdDEsIEFycmF5U3Rv
cmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0b3JlaSB0MywgQXJy
YXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3Bh
dGNoKDQpCisKKy5vcFB1dEJ5VmFsRW1wdHk6CisgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1f
bnVtVmFsdWVzSW5WZWN0b3JbdDBdCisgICAgYmliIHQyLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3Ro
W3QwXSwgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorICAgIGFkZGkgMSwgdDIsIHQxCisgICAgc3Rv
cmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXQorICAgIGptcCAub3BQdXRCeVZhbFN0
b3JlUmVzdWx0CisKKy5vcFB1dEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcHV0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9kZWxfYnlfdmFs
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVs
X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaW5kZXg6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlf
aW5kZXgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dldHRlcl9zZXR0ZXI6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRf
Z2V0dGVyX3NldHRlcikKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9sb29wOgorICAg
IG5vcAorX2xsaW50X29wX2ptcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0Y2hC
cmFuY2goNFtQQ10pCisKKworX2xsaW50X29wX2ptcF9zY29wZXM6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9qbXBfc2NvcGVzKQorICAgIGRpc3Bh
dGNoKDApCisKKworbWFjcm8ganVtcFRydWVPckZhbHNlKGNvbmRpdGlvbk9wLCBzbG93KQorICAg
IGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBC
b29sZWFuVGFnLCB0MCwgLnNsb3cpCisgICAgY29uZGl0aW9uT3AodDAsIC50YXJnZXQpCisgICAg
ZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLnNs
b3c6CisgICAgY2FsbEhlbHBlcihzbG93KQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50
X29wX2xvb3BfaWZfdHJ1ZToKKyAgICBub3AKK19sbGludF9vcF9qdHJ1ZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAganVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRh
cmdldCkgYnRpbnogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfanRy
dWUpCisKKworX2xsaW50X29wX2xvb3BfaWZfZmFsc2U6CisgICAgbm9wCitfbGxpbnRfb3BfamZh
bHNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAg
IG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGl6IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2pmYWxzZSkKKworCittYWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGlt
bWVkaWF0ZUhhbmRsZXIpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
CisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5pbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDIKKyAgICBjZWxsSGFuZGxlcihTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV9mbGFnc1t0Ml0sIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRh
cmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLmltbWVkaWF0ZToKKyAgICBvcmkg
MSwgdDEKKyAgICBpbW1lZGlhdGVIYW5kbGVyKHQxLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMp
CitlbmQKKworX2xsaW50X29wX2plcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBl
cXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJueiB2YWx1ZSwgTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0
YXJnZXQpIGJpZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisgICAgCisKK19sbGludF9v
cF9qbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAg
ICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0YnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaW5lcSB2YWx1
ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKworCitfbGxpbnRfb3Bfam5lcV9wdHI6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQor
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wSm5lcVB0ckJyYW5j
aAorICAgIGJwZXEgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEsIC5vcEpuZXFQdHJGYWxs
VGhyb3VnaAorLm9wSm5lcVB0ckJyYW5jaDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisu
b3BKbmVxUHRyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBjb21wYXJl
KGludGVnZXJDb21wYXJlLCBkb3VibGVDb21wYXJlLCBoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10s
IHQyCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwg
dDAsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MiwgdDMpCisgICAg
YmluZXEgdDAsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAu
b3AyTm90SW50CisgICAgaW50ZWdlckNvbXBhcmUodDEsIHQzLCAuanVtcFRhcmdldCkKKyAgICBk
aXNwYXRjaCg0KQorCisub3AxTm90SW50OgorICAgIGJpYSB0MCwgTG93ZXN0VGFnLCAuc2xvdwor
ICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisgICAgYmluZXEgdDIs
IEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDMsIGZ0MQorICAgIGptcCAub3AxTm90SW50UmVh
ZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKy5vcDFOb3RJ
bnRSZWFkeToKKyAgICBmaWkyZCB0MSwgdDAsIGZ0MAorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBm
dDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDJOb3RJbnQ6CisgICAgY2ky
ZCB0MSwgZnQwCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgZmlpMmQgdDMsIHQy
LCBmdDEKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNw
YXRjaCg0KQorCisuanVtcFRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisKKy5z
bG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xs
aW50X29wX2xvb3BfaWZfbGVzczoKKyAgICBub3AKK19sbGludF9vcF9qbGVzczoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0
YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiZGx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2psZXNzKQorCisKK19sbGludF9vcF9qbmxlc3M6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgdGFyZ2V0KSBiZGd0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9qbmxlc3MpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcjoKKyAg
ICBub3AKK19sbGludF9vcF9qZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29t
cGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0
IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVhdGVy
KQorCisKK19sbGludF9vcF9qbmdyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNv
bXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
ZGx0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9q
bmdyZWF0ZXIpCisKKworX2xsaW50X29wX2xvb3BfaWZfbGVzc2VxOgorICAgIG5vcAorX2xsaW50
X29wX2psZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXEgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3NlcSkKKworCitfbGxp
bnRfb3Bfam5sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQg
ZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndHVuIGxlZnQsIHJp
Z2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzc2VxKQorCisKK19s
bGludF9vcF9sb29wX2lmX2dyZWF0ZXJlcToKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcmVx
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVhdGVyZXEpCisKKworX2xsaW50X29wX2pu
Z3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHR1biBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXJlcSkKKworCitfbGxp
bnRfb3BfbG9vcF9oaW50OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRv
SklURm9yTG9vcCgpCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2ltbToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDRb
UENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJd
LCB0MgorICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMgICAjIEZJWE1FOiB3b3Vs
ZCBiZSBuaWNlIHRvIHBlZXBob2xlIHRoaXMhCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0
YTo6bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwg
dDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wU3dpdGNoSW1t
Tm90SW50CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEg
dDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJd
LCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJh
bmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0
MCwgNF0sIHQxCisgICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNw
YXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCisKKy5vcFN3aXRjaEltbU5vdEludDoKKyAgICBiaWIg
dDEsIExvd2VzdFRhZywgLm9wU3dpdGNoSW1tU2xvdyAgIyBHbyB0byBzbG93IHBhdGggaWYgaXQn
cyBhIGRvdWJsZS4KKy5vcFN3aXRjaEltbUZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNo
KDhbUENdKQorCisub3BTd2l0Y2hJbW1TbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9zd2l0Y2hfaW1tKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3N3aXRjaF9jaGFy
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkg
NFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0
Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MworICAgIGxvYWRwIENv
ZGVCbG9jazo6UmFyZURhdGE6Om1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1
ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgYWRkcCB0MywgdDIKKyAgICBiaW5lcSB0MSwgQ2VsbFRh
ZywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQxCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
dHlwZVt0MV0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRw
IEpTU3RyaW5nOjptX3ZhbHVlW3QwXSwgdDAKKyAgICBiaW5lcSBTdHJpbmdJbXBsOjptX2xlbmd0
aFt0MF0sIDEsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFN0cmluZ0ltcGw6
Om1fZGF0YThbdDBdLCB0MQorICAgIGJ0aW56IFN0cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdzW3Qw
XSwgSGFzaEZsYWdzOEJpdEJ1ZmZlciwgLm9wU3dpdGNoQ2hhcjhCaXQKKyAgICBsb2FkaCBbdDFd
LCB0MAorICAgIGptcCAub3BTd2l0Y2hDaGFyUmVhZHkKKy5vcFN3aXRjaENoYXI4Qml0OgorICAg
IGxvYWRiIFt0MV0sIHQwCisub3BTd2l0Y2hDaGFyUmVhZHk6CisgICAgc3ViaSBTaW1wbGVKdW1w
VGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNo
T2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gK
KyAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJP
ZmZzZXRbdDJdLCB0MgorICAgIGxvYWRpIFt0MiwgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEsIC5v
cFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQor
Cisub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisK
KworX2xsaW50X29wX3N3aXRjaF9zdHJpbmc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfc3RyaW5nKQorICAgIGRpc3BhdGNoKDApCisK
KworX2xsaW50X29wX25ld19mdW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidGl6IDEy
W1BDXSwgLm9wTmV3RnVuY1VuY2hlY2tlZAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVx
IFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wTmV3RnVuY0RvbmUKKy5v
cE5ld0Z1bmNVbmNoZWNrZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19mdW5j
KQorLm9wTmV3RnVuY0RvbmU6CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2Z1
bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfbmV3X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gZG9DYWxsKGhlbHBl
cikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAg
TExJbnRDYWxsTGlua0luZm86OmNhbGxlZVt0MV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BDYWxsU2xvdykKKyAgICBiaW5lcSB0Mywg
dDIsIC5vcENhbGxTbG93CisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGFkZHAgMjQsIFBDCisg
ICAgbHNoaWZ0aSAzLCB0MworICAgIGFkZHAgY2ZyLCB0MyAgIyB0MyBjb250YWlucyB0aGUgbmV3
IHZhbHVlIG9mIGNmcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fc2NvcGVDaGFpblt0Ml0sIHQw
CisgICAgc3RvcmVpIHQyLCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSB0
MCwgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgbG9hZGkgOCAtIDI0W1BDXSwg
dDIKKyAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0
b3JlcCBjZnIsIENhbGxlckZyYW1lW3QzXQorICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCAr
IFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNl
dFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10KKyAg
ICBtb3ZlIHQzLCBjZnIKKyAgICBjYWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRh
cmdldFt0MV0KKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKy5vcENhbGxTbG93OgorICAgIHNs
b3dQYXRoRm9yQ2FsbCg2LCBoZWxwZXIpCitlbmQKKworX2xsaW50X29wX2NhbGw6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRfaGVscGVyX2NhbGwpCisKKworX2xsaW50
X29wX2NvbnN0cnVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9o
ZWxwZXJfY29uc3RydWN0KQorCisKK19sbGludF9vcF9jYWxsX3ZhcmFyZ3M6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBfbGxpbnRfaGVscGVyX2NhbGxfdmFy
YXJncykKKworCitfbGxpbnRfb3BfY2FsbF9ldmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICAKKyAgICAjIEV2YWwgaXMgZXhlY3V0ZWQgaW4gb25lIG9mIHR3byBtb2RlczoKKyAgICAjCisg
ICAgIyAxKSBXZSBmaW5kIHRoYXQgd2UncmUgcmVhbGx5IGludm9raW5nIGV2YWwoKSBpbiB3aGlj
aCBjYXNlIHRoZQorICAgICMgICAgZXhlY3V0aW9uIGlzIHBlcmZvbWVkIGVudGlyZWx5IGluc2lk
ZSB0aGUgaGVscGVyLCBhbmQgaXQKKyAgICAjICAgIHJldHVybnMgdGhlIFBDIG9mIGEgZnVuY3Rp
b24gdGhhdCBqdXN0IHJldHVybnMgdGhlIHJldHVybiB2YWx1ZQorICAgICMgICAgdGhhdCB0aGUg
ZXZhbCByZXR1cm5lZC4KKyAgICAjCisgICAgIyAyKSBXZSBmaW5kIHRoYXQgd2UncmUgaW52b2tp
bmcgc29tZXRoaW5nIGNhbGxlZCBldmFsKCkgdGhhdCBpcyBub3QKKyAgICAjICAgIHRoZSByZWFs
IGV2YWwuIFRoZW4gdGhlIGhlbHBlciByZXR1cm5zIHRoZSBQQyBvZiB0aGUgdGhpbmcgdG8KKyAg
ICAjICAgIGNhbGwsIGFuZCB3ZSBjYWxsIGl0LgorICAgICMKKyAgICAjIFRoaXMgYWxsb3dzIHVz
IHRvIGhhbmRsZSB0d28gY2FzZXMsIHdoaWNoIHdvdWxkIHJlcXVpcmUgYSB0b3RhbCBvZgorICAg
ICMgdXAgdG8gZm91ciBwaWVjZXMgb2Ygc3RhdGUgdGhhdCBjYW5ub3QgYmUgZWFzaWx5IHBhY2tl
ZCBpbnRvIHR3bworICAgICMgcmVnaXN0ZXJzIChDIGZ1bmN0aW9ucyBjYW4gcmV0dXJuIHVwIHRv
IHR3byByZWdpc3RlcnMsIGVhc2lseSk6CisgICAgIworICAgICMgLSBUaGUgY2FsbCBmcmFtZSBy
ZWdpc3Rlci4gVGhpcyBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4gbW9kaWZpZWQKKyAgICAjICAg
YnkgdGhlIGhlbHBlciwgYnV0IHRoZSBjb252ZW50aW9uIGlzIHRoYXQgaXQgcmV0dXJucyBpdC4g
SXQncyBub3QKKyAgICAjICAgdG90YWxseSBjbGVhciBpZiB0aGF0J3MgbmVjZXNzYXJ5LCBzaW5j
ZSB0aGUgY2ZyIGlzIGNhbGxlZSBzYXZlLgorICAgICMgICBCdXQgdGhhdCdzIG91ciBzdHlsZSBp
biB0aGlzIGhlcmUgaW50ZXJwcmV0ZXIgc28gd2Ugc3RpY2sgd2l0aCBpdC4KKyAgICAjCisgICAg
IyAtIEEgYml0IHRvIHNheSBpZiB0aGUgaGVscGVyIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCB0aGUg
ZXZhbCBhbmQgaGFzCisgICAgIyAgIHRoZSByZXR1cm4gdmFsdWUsIG9yIGRpZCBub3QgZXhlY3V0
ZSB0aGUgZXZhbCBidXQgaGFzIGEgUEMgZm9yIHVzCisgICAgIyAgIHRvIGNhbGwuCisgICAgIwor
ICAgICMgLSBFaXRoZXI6CisgICAgIyAgIC0gVGhlIEpTIHJldHVybiB2YWx1ZSAodHdvIHJlZ2lz
dGVycyksIG9yCisgICAgIworICAgICMgICAtIFRoZSBQQyB0byBjYWxsLgorICAgICMKKyAgICAj
IEl0IHR1cm5zIG91dCB0byBiZSBlYXNpZXIgdG8ganVzdCBhbHdheXMgaGF2ZSB0aGlzIHJldHVy
biB0aGUgY2ZyCisgICAgIyBhbmQgYSBQQyB0byBjYWxsLCBhbmQgdGhhdCBQQyBtYXkgYmUgYSBk
dW1teSB0aHVuayB0aGF0IGp1c3QKKyAgICAjIHJldHVybnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhl
IGV2YWwgcmV0dXJuZWQuCisgICAgCisgICAgc2xvd1BhdGhGb3JDYWxsKDQsIF9sbGludF9oZWxw
ZXJfY2FsbF9ldmFsKQorCisKK19sbGludF9nZW5lcmljX3JldHVybl9wb2ludDoKKyAgICBkaXNw
YXRjaEFmdGVyQ2FsbCgpCisKKworX2xsaW50X29wX3RlYXJfb2ZmX2FjdGl2YXRpb246CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0
MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVh
ck9mZkFjdGl2YXRpb25DcmVhdGVkCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVt
cHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZAorLm9wVGVhck9mZkFj
dGl2YXRpb25DcmVhdGVkOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9h
Y3RpdmF0aW9uKQorLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkOgorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX3RlYXJfb2ZmX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3ViaSAxLCB0MCAgICMgR2V0IHRoZSB1bm1v
ZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
RW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQorLm9wVGVhck9mZkFyZ3VtZW50
c05vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBkb1JldHVybigpCisgICAg
bG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIK
KyAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICByZXQKK2VuZAor
CitfbGxpbnRfb3BfcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRv
SklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX2NhbGxf
cHV0X3Jlc3VsdDoKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAg
ICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHZhbHVlUHJvZmlsZSh0MSwgdDAsIHQzKQorICAgIHRy
YWNlRXhlY3V0aW9uKCkgIyBOZWVkcyB0byBiZSBoZXJlIGJlY2F1c2UgaXQgd291bGQgY2xvYmJl
ciB0MSwgdDAKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXRfb2JqZWN0X29yX3Ro
aXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1
ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwg
dDEsIHQwKQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmpl
Y3QKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYmIgU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcFJl
dE9iamVjdE9yVGhpc05vdE9iamVjdAorICAgIGRvUmV0dXJuKCkKKworLm9wUmV0T2JqZWN0T3JU
aGlzTm90T2JqZWN0OgorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX21ldGhvZF9j
aGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNoZWNr
cyBhbmQgdXNlIG5vcm1hbCBnZXRfYnlfaWQgb3B0aW1pemF0aW9ucy4KKyAgICBkaXNwYXRjaCgx
KQorCisKK19sbGludF9vcF9zdHJjYXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9zdHJjYXQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfdG9fcHJpbWl0aXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFRvUHJpbWl0aXZlSXNJbW0KKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1f
dHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm9wVG9QcmltaXRp
dmVTbG93Q2FzZQorLm9wVG9QcmltaXRpdmVJc0ltbToKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNl
dFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQor
ICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvUHJpbWl0aXZlU2xvd0Nhc2U6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3RvX3ByaW1pdGl2ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9nZXRfcG5hbWVzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfZ2V0X3BuYW1lcykKKyAgICBkaXNwYXRjaCgwKSAjIFRoZSBoZWxwZXIgZWl0
aGVyIGFkdmFuY2VzIHRoZSBQQyBvciBqdW1wcyB1cyB0byBzb21ld2hlcmUgZWxzZS4KKworCitf
bGxpbnRfb3BfbmV4dF9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJb
UENdLCB0MQorICAgIGxvYWRpIDE2W1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDEsIDhdLCB0MAorICAgIGJpZXEgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIC5v
cE5leHRQbmFtZUVuZAorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdLCB0MgorICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1f
anNTdHJpbmdzW3QyXSwgdDMKKyAgICBsb2FkaSBbdDMsIHQwLCA4XSwgdDMKKyAgICBhZGRpIDEs
IHQwCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkg
NFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAg
IHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDhbUENdLCB0
MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRw
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0MAor
ICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCisgICAgYnRweiBbdDBd
LCAub3BOZXh0UG5hbWVUYXJnZXQKKy5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcDoKKyAg
ICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbdDFdLCBOdWxsVGFnLCAu
b3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxv
YWRPZmZzZXRbdDFdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MQor
ICAgIGJwbmVxIHQxLCBbdDBdLCAub3BOZXh0UG5hbWVTbG93CisgICAgYWRkcCA0LCB0MAorICAg
IGJ0cG56IFt0MF0sIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcAorLm9wTmV4dFBuYW1l
VGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDI0W1BDXSkKKworLm9wTmV4dFBuYW1lRW5kOgor
ICAgIGRpc3BhdGNoKDcpCisKKy5vcE5leHRQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX25leHRfcG5hbWUpICMgVGhpcyBlaXRoZXIga2VlcHMgdGhlIFBDIHdoZXJlIGl0
IHdhcyAoY2F1c2luZyB1cyB0byBsb29wKSBvciBzZXRzIGl0IHRvIHRhcmdldC4KKyAgICBkaXNw
YXRjaCgwKQorCisKK19sbGludF9vcF9wdXNoX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9zY29wZSkKKyAgICBkaXNwYXRjaCgy
KQorCisKK19sbGludF9vcF9wb3Bfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3Bfc2NvcGUpCisgICAgZGlzcGF0Y2goMSkKKworCitf
bGxpbnRfb3BfcHVzaF9uZXdfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX25ld19zY29wZSkKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9jYXRjaDoKKyAgICAjIFRoaXMgaXMgd2hlcmUgd2UgZW5kIHVwIGZyb20gdGhl
IEpJVCdzIHRocm93IHRyYW1wb2xpbmUgKGJlY2F1c2UgdGhlCisgICAgIyBtYWNoaW5lIGNvZGUg
cmV0dXJuIGFkZHJlc3Mgd2lsbCBiZSBzZXQgdG8gX2xsaW50X29wX2NhdGNoKSwgYW5kIGZyb20K
KyAgICAjIHRoZSBpbnRlcnByZXRlcidzIHRocm93IHRyYW1wb2xpbmUgKHNlZSBfbGxpbnRfdGhy
b3dfdHJhbXBvbGluZSkuCisgICAgIyBUaGUgSklUIHRocm93aW5nIHByb3RvY29sIGNhbGxzIGZv
ciB0aGUgY2ZyIHRvIGJlIGluIHQwLiBUaGUgdGhyb3dpbmcKKyAgICAjIGNvZGUgbXVzdCBoYXZl
IGtub3duIHRoYXQgd2Ugd2VyZSB0aHJvd2luZyB0byB0aGUgaW50ZXJwcmV0ZXIsIGFuZCBoYXZl
CisgICAgIyBzZXQgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cuCisg
ICAgbW92ZSB0MCwgY2ZyCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0s
IHQzCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3db
dDNdLCBQQworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNl
dFt0M10sIHQwCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRb
dDNdLCB0MQorICAgIHN0b3JlaSAwLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRP
ZmZzZXRbdDNdCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0
aW9uICsgVGFnT2Zmc2V0W3QzXSAgICAgICAKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBzdG9y
ZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNl
dFtjZnIsIHQyLCA4XQorICAgIHRyYWNlRXhlY3V0aW9uKCkgICMgVGhpcyBuZWVkcyB0byBiZSBo
ZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjbG9iYmVyIHQwLCB0MSwgdDIsIHQzIGFib3Zl
LgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGhyb3cpCisgICAgZGlzcGF0Y2go
MikKKworCitfbGxpbnRfb3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9y
KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2pzcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYWRkaSAzICogNCwgUEMsIHQxCisgICAgc3Rv
cmVpIHQxLCBbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxp
bnRfb3Bfc3JldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgbG9hZHAgW2NmciwgdDAsIDhdLCBQQworICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29w
X2RlYnVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfZGVidWcpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJvZmlsZV93aWxsX2Nh
bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJs
ZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BQcm9maWxlV2ls
bENhbGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxs
KQorLm9wUHJvZmlsZVdpbGxDYWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9v
cF9wcm9maWxlX2RpZF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBKSVRT
dGFja0ZyYW1lOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCB0MAorICAgIGJ0cHogW3Qw
XSwgLm9wUHJvZmlsZVdpbGxDYWxsRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9w
cm9maWxlX2RpZF9jYWxsKQorLm9wUHJvZmlsZURpZENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX2VuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0
Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1w
b2xpbmU6CisgICAgIyBXaGVuIHRocm93aW5nIGZyb20gdGhlIGludGVycHJldGVyIChpLmUuIHRo
cm93aW5nIGZyb20gTExJbnRIZWxwZXJzKSwgc28KKyAgICAjIHRoZSB0aHJvdyB0YXJnZXQgaXMg
bm90IG5lY2Vzc2FyaWx5IGludGVycHJldGVkIGNvZGUsIHdlIGNvbWUgdG8gaGVyZS4KKyAgICAj
IFRoaXMgZXNzZW50aWFsbHkgZW11bGF0ZXMgdGhlIEpJVCdzIHRocm93aW5nIHByb3RvY29sLgor
ICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpT
R2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERh
dGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKK19sbGludF90aHJvd19kdXJpbmdf
Y2FsbF90cmFtcG9saW5lOgorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikK
KyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBK
U0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxE
YXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCisjIExhc3RseSwgbWFrZSBzdXJl
IHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rl
cy4KKyMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTEludCBv
ciBlaXRoZXIgSklULiBXZSBhc3NlcnQKKyMgYXMgbXVjaC4KKworbWFjcm8gbm90U3VwcG9ydGVk
KCkKKyAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBjcmFzaCgpCisgICAgZWxzZQorICAg
ICAgICAjIFdlIHNob3VsZCB1c2Ugd2hhdGV2ZXIgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIGluc3Ry
dWN0aW9uIGlzLCBqdXN0IHRvCisgICAgICAgICMgZW5zdXJlIHRoYXQgdGhlcmUgaXMgYSBnYXAg
YmV0d2VlbiBpbnN0cnVjdGlvbiBsYWJlbHMuIElmIG11bHRpcGxlCisgICAgICAgICMgc21hbGxl
c3QgaW5zdHJ1Y3Rpb25zIGV4aXN0LCB3ZSBzaG91bGQgcGljayB0aGUgb25lIHRoYXQgaXMgbW9z
dAorICAgICAgICAjIGxpa2VseSByZXN1bHQgaW4gZXhlY3V0aW9uIGJlaW5nIGhhbHRlZC4gQ3Vy
cmVudGx5IHRoYXQgaXMgdGhlIGJyZWFrCisgICAgICAgICMgaW5zdHJ1Y3Rpb24gb24gYWxsIGFy
Y2hpdGVjdHVyZXMgd2UncmUgaW50ZXJlc3RlZCBpbi4gKEJyZWFrIGlzIGludDMKKyAgICAgICAg
IyBvbiBJbnRlbCwgd2hpY2ggaXMgMSBieXRlLCBhbmQgYmtwdCBvbiBBUk12Nywgd2hpY2ggaXMg
MiBieXRlcy4pCisgICAgICAgIGJyZWFrCisgICAgZW5kCitlbmQKKworX2xsaW50X29wX2dldF9h
cnJheV9sZW5ndGg6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9j
aGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9j
aGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9w
cm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9z
ZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2VuZXJpYzoK
KyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9jaGFpbjoK
KyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9wcm90bzoK
KyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9zZWxmOgor
ICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfcHJvdG86CisgICAgbm90
U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9zZWxmOgorICAgIG5vdFN1cHBvcnRl
ZCgpCisKK19sbGludF9vcF9nZXRfc3RyaW5nX2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQor
CitfbGxpbnRfb3BfcHV0X2J5X2lkX2dlbmVyaWM6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xs
aW50X29wX3B1dF9ieV9pZF9yZXBsYWNlOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9v
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCisKKyMgSW5kaWNh
dGUgdGhlIGVuZCBvZiBMTEludC4KK19sbGludF9lbmQ6CisgICAgY3Jhc2goKQorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisK
KyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRlIDx3dGYvSW5saW5l
QVNNLmg+CisKKy8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtLCB3aGlj
aCBjb250YWlucyBhbGwgb2YgdGhlIGFzc2VtYmx5IGNvZGUKKy8vIGZvciB0aGUgaW50ZXJwcmV0
ZXIsIGFzIGNvbXBpbGVkIGZyb20gTG93TGV2ZWxJbnRlcnByZXRlci5hc20uCisjaW5jbHVkZSAi
TExJbnRBc3NlbWJseS5oIgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExvd0xldmVsSW50ZXJwcmV0ZXJfaAor
I2RlZmluZSBMb3dMZXZlbEludGVycHJldGVyX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKKyNkZWZpbmUg
TExJTlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxlbmd0aCkgZXh0ZXJuICJDIiB2b2lkIGxs
aW50XyMjb3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKExMSU5UX0lOU1RSVUNUSU9O
X0RFQ0wpOworI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wKKworZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2JlZ2luKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW5kKCk7CitleHRlcm4gIkMi
IHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2V2
YWxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9w
cm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
cHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0
eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9nZW5lcmljX3JldHVybl9wb2lu
dCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUo
KTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKCk7
CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMb3dMZXZlbEludGVycHJl
dGVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAzMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib3B0IgorCitjbGFzcyBOb2Rl
CisgIGRlZiBhcm1WN1NpbmdsZQorICAgIGRvdWJsZU9wZXJhbmQgPSBhcm1WN09wZXJhbmQKKyAg
ICByYWlzZSAiQm9ndXMgcmVnaXN0ZXIgbmFtZSAje2RvdWJsZU9wZXJhbmR9IiB1bmxlc3MgZG91
YmxlT3BlcmFuZCA9fiAvXmQvCisgICAgInMiICsgKCR+LnBvc3RfbWF0Y2gudG9faSAqIDIpLnRv
X3MKKyAgZW5kCitlbmQKKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVyIDwgTm9DaGlsZHJlbgorICBk
ZWYgaW5pdGlhbGl6ZShuYW1lKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBh
cm1WN09wZXJhbmQKKyAgICBAbmFtZQorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVm
IGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICB0
cnVlCisgIGVuZAorZW5kCisKK0FSTXY3X0VYVFJBX0dQUlMgPSBbU3BlY2lhbFJlZ2lzdGVyLm5l
dygicjkiKSwgU3BlY2lhbFJlZ2lzdGVyLm5ldygicjgiKSwgU3BlY2lhbFJlZ2lzdGVyLm5ldygi
cjMiKV0KK0FSTXY3X0VYVFJBX0ZQUlMgPSBbU3BlY2lhbFJlZ2lzdGVyLm5ldygiZDciKV0KK0FS
TXY3X1NDUkFUQ0hfRlBSID0gU3BlY2lhbFJlZ2lzdGVyLm5ldygiZDgiKQorCitkZWYgYXJtVjdN
b3ZlSW1tZWRpYXRlKHZhbHVlLCByZWdpc3RlcikKKyAgIyBDdXJyZW50bHkgd2Ugb25seSBoYW5k
bGUgdGhlIHNpbXBsZSBjYXNlcywgYW5kIGZhbGwgYmFjayB0byBtb3YvbW92dCBmb3IgdGhlIGNv
bXBsZXggb25lcy4KKyAgaWYgdmFsdWUgPj0gMCAmJiB2YWx1ZSA8IDI1NgorICAgICRhc20ucHV0
cyAibW92dyAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0sIFwjI3t2YWx1ZX0iCisgIGVsc2lmICh+
dmFsdWUpID49IDAgJiYgKH52YWx1ZSkgPCAyNTYKKyAgICAkYXNtLnB1dHMgIm12biAje3JlZ2lz
dGVyLmFybVY3T3BlcmFuZH0sIFwjI3t+dmFsdWV9IgorICBlbHNlCisgICAgJGFzbS5wdXRzICJt
b3Z3ICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje3ZhbHVlICYgMHhmZmZmfSIKKyAgICBp
ZiAodmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCisgICAgICAkYXNtLnB1dHMgIm1vdnQgI3tyZWdp
c3Rlci5hcm1WN09wZXJhbmR9LCBcIyN7dmFsdWUgPj4gMTZ9IgorICAgIGVuZAorICBlbmQKK2Vu
ZAorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUK
KyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICJyMCIKKyAgICB3aGVuICJ0MSIsICJh
MSIsICJyMSIKKyAgICAgICJyMSIKKyAgICB3aGVuICJ0MiIsICJhMiIKKyAgICAgICJyMiIKKyAg
ICB3aGVuICJhMyIKKyAgICAgICJyMyIKKyAgICB3aGVuICJ0MyIKKyAgICAgICJyNCIKKyAgICB3
aGVuICJ0NCIKKyAgICAgICJyNyIKKyAgICB3aGVuICJjZnIiCisgICAgICAicjUiCisgICAgd2hl
biAibHIiCisgICAgICAibHIiCisgICAgd2hlbiAic3AiCisgICAgICAic3AiCisgICAgZWxzZQor
ICAgICAgcmFpc2UgIkJhZCByZWdpc3RlciAje25hbWV9IGZvciBBUk12NyBhdCAje2NvZGVPcmln
aW5TdHJpbmd9IgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQKKyAg
ZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIsICJmciIKKyAg
ICAgICJkMCIKKyAgICB3aGVuICJmdDEiCisgICAgICAiZDEiCisgICAgd2hlbiAiZnQyIgorICAg
ICAgImQyIgorICAgIHdoZW4gImZ0MyIKKyAgICAgICJkMyIKKyAgICB3aGVuICJmdDQiCisgICAg
ICAiZDQiCisgICAgd2hlbiAiZnQ1IgorICAgICAgImQ1IgorICAgIGVsc2UKKyAgICAgIHJhaXNl
ICJCYWQgcmVnaXN0ZXIgI3tuYW1lfSBmb3IgQVJNdjcgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIK
KyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiBhcm1WN09wZXJh
bmQKKyAgICByYWlzZSAiSW52YWxpZCBpbW1lZGlhdGUgI3t2YWx1ZX0gYXQgI3tjb2RlT3JpZ2lu
U3RyaW5nfSIgaWYgdmFsdWUgPCAwIG9yIHZhbHVlID4gMjU1CisgICAgIlwjI3t2YWx1ZX0iCisg
IGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIHJhaXNl
ICJCYWQgb2Zmc2V0IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIGlmIG9mZnNldC52YWx1ZSA8IC0w
eGZmIG9yIG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwg
XCMje29mZnNldC52YWx1ZX1dIgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgZGVm
IGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJCYWQgb2Zmc2V0IGF0ICN7Y29kZU9yaWdpblN0cmlu
Z30iIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tp
bmRleC5hcm1WN09wZXJhbmR9LCBsc2wgXCMje3NjYWxlU2hpZnR9XSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICByYWlzZSAiVW5j
b252ZXJ0ZWQgYWJzb2x1dGUgYWRkcmVzcyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICBlbmQK
K2VuZAorCisjCisjIExvd2VyaW5nIG9mIGJyYW5jaCBvcHMuIEZvciBleGFtcGxlOgorIworIyBi
YWRkaXogZm9vLCBiYXIsIGJhegorIworIyB3aWxsIGJlY29tZToKKyMKKyMgYWRkaSBmb28sIGJh
cgorIyBieiBiYXoKKyMKKworZGVmIGFybVY3TG93ZXJCcmFuY2hPcHMobGlzdCkKKyAgbmV3TGlz
dCA9IFtdCisgIGxpc3QuZWFjaCB7CisgICAgfCBub2RlIHwKKyAgICBpZiBub2RlLmlzX2E/IElu
c3RydWN0aW9uCisgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICB3aGVuIC9eYihhZGRpfHN1
Yml8b3JpfGFkZHApLworICAgICAgICBvcCA9ICQxCisgICAgICAgIGJyYW5jaCA9ICJiIiArICR+
LnBvc3RfbWF0Y2gKKyAgICAgICAgCisgICAgICAgIGNhc2Ugb3AKKyAgICAgICAgd2hlbiAiYWRk
aSIsICJhZGRwIgorICAgICAgICAgIG9wID0gImFkZGlzIgorICAgICAgICB3aGVuICJzdWJpIgor
ICAgICAgICAgIG9wID0gInN1YmlzIgorICAgICAgICB3aGVuICJvcmkiCisgICAgICAgICAgb3Ag
PSAib3JpcyIKKyAgICAgICAgZW5kCisgICAgICAgIAorICAgICAgICBuZXdMaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG9wLCBub2RlLm9wZXJhbmRzWzAuLi0yXSkKKyAg
ICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBicmFuY2gs
IFtub2RlLm9wZXJhbmRzWy0xXV0pCisgICAgICB3aGVuICJibXVsaW8iCisgICAgICAgIHRtcDEg
PSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgdG1wMiA9IFRtcC5uZXco
bm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhub2RlLmNvZGVPcmlnaW4sICJzbXVsbGkiLCBbbm9kZS5vcGVyYW5kc1swXSwgbm9kZS5vcGVy
YW5kc1sxXSwgbm9kZS5vcGVyYW5kc1sxXSwgdG1wMV0pCisgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInJzaGlmdGkiLCBbbm9kZS5vcGVyYW5kc1st
Ml0sIEltbWVkaWF0ZS5uZXcobm9kZS5jb2RlT3JpZ2luLCAzMSksIHRtcDJdKQorICAgICAgICBu
ZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJiaW5lcSIsIFt0bXAx
LCB0bXAyLCBub2RlLm9wZXJhbmRzWy0xXV0pCisgICAgICB3aGVuIC9eYm11bGkvCisgICAgICAg
IGNvbmRpdGlvbiA9ICR+LnBvc3RfbWF0Y2gKKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibXVsaSIsIG5vZGUub3BlcmFuZHNbMC4uLTJdKQorICAg
ICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJidGkiICsg
Y29uZGl0aW9uLCBbbm9kZS5vcGVyYW5kc1stMl0sIG5vZGUub3BlcmFuZHNbLTFdXSkKKyAgICAg
IGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICBlbmQKKyAgICBlbHNlCisgICAg
ICBuZXdMaXN0IDw8IG5vZGUKKyAgICBlbmQKKyAgfQorICBuZXdMaXN0CitlbmQKKworIworIyBM
b3dlcmluZyBvZiBzaGlmdCBvcHMuIEZvciBleGFtcGxlOgorIworIyBsc2hpZnRpIGZvbywgYmFy
CisjCisjIHdpbGwgYmVjb21lOgorIworIyBhbmRpIGZvbywgMzEsIHRtcAorIyBsc2hpZnRpIHRt
cCwgYmFyCisjCisKK2RlZiBhcm1WN1Nhbml0aXplU2hpZnQob3BlcmFuZCwgbGlzdCkKKyAgcmV0
dXJuIG9wZXJhbmQgaWYgb3BlcmFuZC5pbW1lZGlhdGU/CisgIAorICB0bXAgPSBUbXAubmV3KG9w
ZXJhbmQuY29kZU9yaWdpbiwgOmdwcikKKyAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFu
ZC5jb2RlT3JpZ2luLCAiYW5kaSIsIFtvcGVyYW5kLCBJbW1lZGlhdGUubmV3KG9wZXJhbmQuY29k
ZU9yaWdpbiwgMzEpLCB0bXBdKQorICB0bXAKK2VuZAorCitkZWYgYXJtVjdMb3dlclNoaWZ0T3Bz
KGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9kZSB8CisgICAg
aWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAg
d2hlbiAibHNoaWZ0aSIsICJyc2hpZnRpIiwgInVyc2hpZnRpIgorICAgICAgICBpZiBub2RlLm9w
ZXJhbmRzLnNpemUgPT0gMgorICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5v
ZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFthcm1WN1Nhbml0aXplU2hpZnQobm9kZS5vcGVy
YW5kc1swXSwgbmV3TGlzdCksIG5vZGUub3BlcmFuZHNbMV1dKQorICAgICAgICBlbHNlCisgICAg
ICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2RlLm9w
Y29kZSwgW25vZGUub3BlcmFuZHNbMF0sIGFybVY3U2FuaXRpemVTaGlmdChub2RlLm9wZXJhbmRz
WzFdLCBuZXdMaXN0KSwgbm9kZS5vcGVyYW5kc1syXV0pCisgICAgICAgICAgcmFpc2UgIldyb25n
IG51bWJlciBvZiBvcGVyYW5kcyBmb3Igc2hpZnQgYXQgI3tub2RlLmNvZGVPcmlnaW5TdHJpbmd9
IiB1bmxlc3Mgbm9kZS5vcGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgZW5kCisgICAgICBlbHNl
CisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgbmV3
TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJp
bmcgb2YgbWFsZm9ybWVkIGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGU6CisjCisjIGxvYWRwIDEwMDAw
W2Zvb10sIGJhcgorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbW92ZSAxMDAwMCwgdG1wCisjIGFk
ZHAgZm9vLCB0bXAKKyMgbG9hZHAgMFt0bXBdLCBiYXIKKyMKKworY2xhc3MgTm9kZQorICBkZWYg
YXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICBtYXBDaGlsZHJl
biB7CisgICAgICB8IG5vZGUgfAorICAgICAgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVz
c2VzUmVjdXJzZShsaXN0KQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBk
ZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICBpZiBvZmZz
ZXQudmFsdWUgPCAtMHhmZiBvciBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgdG1wID0gVG1w
Lm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29k
ZU9yaWdpbiwgIm1vdmUiLCBbb2Zmc2V0LCB0bXBdKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcoY29kZU9yaWdpbiwgImFkZHAiLCBbYmFzZSwgdG1wXSkKKyAgICAgIEFkZHJlc3MubmV3
KGNvZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkKKyAgICBlbHNl
CisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBk
ZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICBpZiBvZmZz
ZXQudmFsdWUgIT0gMAorICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAg
ICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbb2Zmc2V0LCB0
bXBdKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgImFkZHAiLCBb
YmFzZSwgdG1wXSkKKyAgICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgdG1wLCBpbmRleCwg
c2NhbGUsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCisgICAgZWxzZQorICAgICAgc2Vs
ZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIGFy
bVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNSZWN1cnNlKGxpc3QpCisgICAgdG1wID0gVG1wLm5l
dyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmln
aW4sICJtb3ZlIiwgW2FkZHJlc3MsIHRtcF0pCisgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwg
dG1wLCBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIDApKQorICBlbmQKK2VuZAorCitkZWYgYXJt
VjdMb3dlck1hbGZvcm1lZEFkZHJlc3NlcyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5l
YWNoIHsKKyAgICB8IG5vZGUgfAorICAgIG5ld0xpc3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9y
bWVkQWRkcmVzc2VzUmVjdXJzZShuZXdMaXN0KQorICB9CisgIG5ld0xpc3QKK2VuZAorCisjCisj
IExvd2VyaW5nIG9mIG1hbGZvcm1lZCBhZGRyZXNzZXMgaW4gZG91YmxlIGxvYWRzIGFuZCBzdG9y
ZXMuIEZvciBleGFtcGxlOgorIworIyBsb2FkZCBbZm9vLCBiYXIsIDhdLCBiYXoKKyMKKyMgYmVj
b21lczoKKyMKKyMgbGVhcCBbZm9vLCBiYXIsIDhdLCB0bXAKKyMgbG9hZGQgW3RtcF0sIGJhegor
IworCitjbGFzcyBOb2RlCisgIGRlZiBhcm1WN0RvdWJsZUFkZHJlc3MobGlzdCkKKyAgICBzZWxm
CisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJtVjdEb3VibGVBZGRyZXNz
KGxpc3QpCisgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgIGxpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJsZWFwIiwgW3NlbGYsIHRtcF0pCisgICAgQWRk
cmVzcy5uZXcoY29kZU9yaWdpbiwgdG1wLCBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIDApKQor
ICBlbmQKK2VuZAorCitkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc0RvdWJsZShsaXN0
KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIGlmIG5v
ZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdoZW4g
ImxvYWRkIgorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmln
aW4sICJsb2FkZCIsIFtub2RlLm9wZXJhbmRzWzBdLmFybVY3RG91YmxlQWRkcmVzcyhuZXdMaXN0
KSwgbm9kZS5vcGVyYW5kc1sxXV0pCisgICAgICB3aGVuICJzdG9yZWQiCisgICAgICAgIG5ld0xp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInN0b3JlZCIsIFtub2RlLm9w
ZXJhbmRzWzBdLCBub2RlLm9wZXJhbmRzWzFdLmFybVY3RG91YmxlQWRkcmVzcyhuZXdMaXN0KV0p
CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgZW5kCisgICAgZWxz
ZQorICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisK
KyMKKyMgTG93ZXJpbmcgb2YgbWlzcGxhY2VkIGltbWVkaWF0ZXMuIEZvciBleGFtcGxlOgorIwor
IyBzdG9yZWkgMCwgW2Zvb10KKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUgMCwgdG1wCisj
IHN0b3JlaSB0bXAsIFtmb29dCisjCisKK2RlZiBhcm1WN0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRl
cyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAg
IGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAg
IHdoZW4gInN0b3JlaSIsICJzdG9yZXAiCisgICAgICAgIG9wZXJhbmRzID0gbm9kZS5vcGVyYW5k
cworICAgICAgICBuZXdPcGVyYW5kcyA9IFtdCisgICAgICAgIG9wZXJhbmRzLmVhY2ggeworICAg
ICAgICAgIHwgb3BlcmFuZCB8CisgICAgICAgICAgaWYgb3BlcmFuZC5pc19hPyBJbW1lZGlhdGUK
KyAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCA6Z3ByKQorICAg
ICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAi
bW92ZSIsIFtvcGVyYW5kLCB0bXBdKQorICAgICAgICAgICAgbmV3T3BlcmFuZHMgPDwgdG1wCisg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3T3BlcmFuZHMgPDwgb3BlcmFuZAorICAgICAg
ICAgIGVuZAorICAgICAgICB9CisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5v
ZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIG5ld09wZXJhbmRzKQorICAgICAgZWxzZQorICAg
ICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIG5ld0xpc3Qg
PDwgbm9kZQorICAgIGVuZAorICB9CisgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9m
IG1hbGZvcm1lZCBpbW1lZGlhdGVzIGV4Y2VwdCB3aGVuIHVzZWQgaW4gYSAibW92ZSIgaW5zdHJ1
Y3Rpb24uCisjIEZvciBleGFtcGxlOgorIworIyBhZGRwIDY0MjY0MSwgZm9vCisjCisjIHdpbGwg
YmVjb21lOgorIworIyBtb3ZlIDY0MjY0MSwgdG1wCisjIGFkZHAgdG1wLCBmb28KKyMKKworY2xh
c3MgTm9kZQorICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3Qp
CisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUuYXJtVjdMb3dl
ck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgfQorICBlbmQKK2VuZAorCitj
bGFzcyBBZGRyZXNzCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2Uo
bGlzdCkKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJt
VjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgc2VsZgorICBlbmQK
K2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJ
bW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgSW1t
ZWRpYXRlCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkK
KyAgICBpZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAgIHRtcCA9IFRtcC5uZXcoY29k
ZU9yaWdpbiwgOmdwcikKKyAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4s
ICJtb3ZlIiwgW3NlbGYsIHRtcF0pCisgICAgICB0bXAKKyAgICBlbHNlCisgICAgICBzZWxmCisg
ICAgZW5kCisgIGVuZAorZW5kCisKK2RlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlcyhs
aXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIGlm
IG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdo
ZW4gIm1vdmUiCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgd2hlbiAiYWRkaSIsICJh
ZGRwIiwgImFkZGlzIiwgInN1YmkiLCAic3VicCIsICJzdWJpcyIKKyAgICAgICAgaWYgbm9kZS5v
cGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgYW5kCisgICAgICAgICAgICBub2RlLm9wZXJhbmRz
WzBdLnZhbHVlIDwgMCBhbmQKKyAgICAgICAgICAgIG5vZGUub3BlcmFuZHNbMF0udmFsdWUgPj0g
MjU1IGFuZAorICAgICAgICAgICAgbm9kZS5vcGVyYW5kcy5zaXplID09IDIKKyAgICAgICAgICBp
ZiBub2RlLm9wY29kZSA9fiAvYWRkLworICAgICAgICAgICAgbmV3T3Bjb2RlID0gInN1YiIgKyBu
b2RlLm9wY29kZVstMS4uLTFdCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3T3Bjb2Rl
ID0gImFkZCIgKyBub2RlLm9wY29kZVstMS4uLTFdCisgICAgICAgICAgZW5kCisgICAgICAgICAg
bmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBuZXdPcGNvZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ltbWVkaWF0ZS5uZXcoLW5vZGUu
b3BlcmFuZHNbMF0udmFsdWUpXSArIG5vZGUub3BlcmFuZHNbMS4uLTFdKQorICAgICAgICBlbHNl
CisgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVz
UmVjdXJzZShuZXdMaXN0KQorICAgICAgICBlbmQKKyAgICAgIHdoZW4gIm11bGkiCisgICAgICAg
IGlmIG5vZGUub3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICAgdG1wID0gVG1w
Lm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSkKKyAg
ICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtdWxp
IiwgW3RtcF0gKyBub2RlLm9wZXJhbmRzWzEuLi0xXSkKKyAgICAgICAgZWxzZQorICAgICAgICAg
IG5ld0xpc3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobmV3
TGlzdCkKKyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZS5h
cm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobmV3TGlzdCkKKyAgICAgIGVuZAor
ICAgIGVsc2UKKyAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgIGVuZAorICB9CisgIG5ld0xpc3QK
K2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1pc3BsYWNlZCBhZGRyZXNzZXMuIEZvciBleGFtcGxl
OgorIworIyBhZGRpIGZvbywgW2Jhcl0KKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIGxvYWRpIFti
YXJdLCB0bXAKKyMgYWRkaSBmb28sIHRtcAorIyBzdG9yZWkgdG1wLCBbYmFyXQorIworIyBBbm90
aGVyIGV4YW1wbGU6CisjCisjIGFkZGkgW2Zvb10sIGJhcgorIworIyB3aWxsIGJlY29tZToKKyMK
KyMgbG9hZGkgW2Zvb10sIHRtcAorIyBhZGRpIHRtcCwgYmFyCisjCisKK2RlZiBhcm1WN0FzUmVn
aXN0ZXIocHJlTGlzdCwgcG9zdExpc3QsIG9wZXJhbmQsIHN1ZmZpeCwgbmVlZFN0b3JlKQorICBy
ZXR1cm4gb3BlcmFuZCB1bmxlc3Mgb3BlcmFuZC5hZGRyZXNzPworICAKKyAgdG1wID0gVG1wLm5l
dyhvcGVyYW5kLmNvZGVPcmlnaW4sIGlmIHN1ZmZpeCA9PSAiZCIgdGhlbiA6ZnByIGVsc2UgOmdw
ciBlbmQpCisgIHByZUxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwg
ImxvYWQiICsgc3VmZml4LCBbb3BlcmFuZCwgdG1wXSkKKyAgaWYgbmVlZFN0b3JlCisgICAgcG9z
dExpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgInN0b3JlIiArIHN1
ZmZpeCwgW3RtcCwgb3BlcmFuZF0pCisgIGVuZAorICB0bXAKK2VuZAorCitkZWYgYXJtVjdBc1Jl
Z2lzdGVycyhwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFuZHMsIHN1ZmZpeCkKKyAgbmV3T3BlcmFu
ZHMgPSBbXQorICBvcGVyYW5kcy5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgb3BlcmFuZCwgaW5k
ZXggfAorICAgIG5ld09wZXJhbmRzIDw8IGFybVY3QXNSZWdpc3RlcihwcmVMaXN0LCBwb3N0TGlz
dCwgb3BlcmFuZCwgc3VmZml4LCBpbmRleCA9PSBvcGVyYW5kcy5zaXplIC0gMSkKKyAgfQorICBu
ZXdPcGVyYW5kcworZW5kCisKK2RlZiBhcm1WN0xvd2VyTWlzcGxhY2VkQWRkcmVzc2VzKGxpc3Qp
CisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9kZSB8CisgICAgaWYgbm9k
ZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgcG9zdEluc3RydWN0aW9ucyA9IFtdCisgICAgICBj
YXNlIG5vZGUub3Bjb2RlCisgICAgICB3aGVuICJhZGRpIiwgImFkZHAiLCAiYWRkaXMiLCAiYW5k
aSIsICJhbmRwIiwgImxzaGlmdGkiLCAibXVsaSIsICJuZWdpIiwgIm5vdGkiLCAib3JpIiwgIm9y
aXMiLAorICAgICAgICAib3JwIiwgInJzaGlmdGkiLCAidXJzaGlmdGkiLCAic3ViaSIsICJzdWJw
IiwgInN1YmlzIiwgInhvcmkiLCAieG9ycCIsIC9eYmkvLCAvXmJwLywgL15idGkvLAorICAgICAg
ICAvXmJ0cC8sIC9eY2kvLCAvXmNwLywgL150aS8KKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJt
VjdBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAi
aSIpKQorICAgICAgd2hlbiAiYmJlcSIsICJiYm5lcSIsICJiYmEiLCAiYmJhZXEiLCAiYmJiIiwg
ImJiYmVxIiwgImJ0Ym8iLCAiYnRieiIsICJidGJueiIsICJ0YnoiLCAidGJueiIsCisgICAgICAg
ICJ0Ym8iCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdp
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwg
cG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImIiKSkKKyAgICAgIHdoZW4gImJiZ3Qi
LCAiYmJndGVxIiwgImJibHQiLCAiYmJsdGVxIiwgImJ0YnMiLCAidGJzIgorICAgICAgICBuZXdM
aXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhcm1WN0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5v
ZGUub3BlcmFuZHMsICJicyIpKQorICAgICAgd2hlbiAiYWRkZCIsICJkaXZkIiwgInN1YmQiLCAi
bXVsZCIsICJzcXJ0ZCIsIC9eYmQvCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS5vcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdp
c3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImQiKSkKKyAg
ICAgIHdoZW4gImptcCIsICJjYWxsIgorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJtVjdBc1Jl
Z2lzdGVyKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHNbMF0sICJwIiwg
ZmFsc2UpXSkKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICBlbmQK
KyAgICAgIG5ld0xpc3QgKz0gcG9zdEluc3RydWN0aW9ucworICAgIGVsc2UKKyAgICAgIG5ld0xp
c3QgPDwgbm9kZQorICAgIGVuZAorICB9CisgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5n
IG9mIHJlZ2lzdGVyIHJldXNlIGluIGNvbXBhcmUgaW5zdHJ1Y3Rpb25zLiBGb3IgZXhhbXBsZToK
KyMKKyMgY2llcSB0MCwgdDEsIHQwCisjCisjIHdpbGwgYmVjb21lOgorIworIyBtb3YgdG1wLCB0
MAorIyBjaWVxIHRtcCwgdDEsIHQwCisjCisKK2RlZiBhcm1WN0xvd2VyUmVnaXN0ZXJSZXVzZShs
aXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIGlm
IG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdo
ZW4gImNpZXEiLCAiY2luZXEiLCAiY2lhIiwgImNpYWVxIiwgImNpYiIsICJjaWJlcSIsICJjaWd0
IiwgImNpZ3RlcSIsICJjaWx0IiwgImNpbHRlcSIsCisgICAgICAgICJjcGVxIiwgImNwbmVxIiwg
ImNwYSIsICJjcGFlcSIsICJjcGIiLCAiY3BiZXEiLCAiY3BndCIsICJjcGd0ZXEiLCAiY3BsdCIs
ICJjcGx0ZXEiLAorICAgICAgICAidGlvIiwgInRpcyIsICJ0aXoiLCAidGlueiIsICJ0Ym8iLCAi
dGJzIiwgInRieiIsICJ0Ym56IgorICAgICAgICBpZiBub2RlLm9wZXJhbmRzLnNpemUgPT0gMgor
ICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0gPT0gbm9kZS5vcGVyYW5kc1sxXQorICAgICAg
ICAgICAgdG1wID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICBu
ZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUu
b3BlcmFuZHNbMF0sIHRtcF0pCisgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbdG1wLCBub2RlLm9wZXJhbmRzWzFdXSkK
KyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICBl
bmQKKyAgICAgICAgZWxzZQorICAgICAgICAgIHJhaXNlICJXcm9uZyBudW1iZXIgb2YgYXJndW1l
bnRzIGF0ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG5vZGUub3BlcmFuZHMuc2l6
ZSA9PSAzCisgICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1swXSA9PSBub2RlLm9wZXJhbmRzWzJd
CisgICAgICAgICAgICB0bXAgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUi
LCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSkKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFt0bXAsIG5vZGUub3BlcmFu
ZHNbMV0sIG5vZGUub3BlcmFuZHNbMl1dKQorICAgICAgICAgIGVsc2lmIG5vZGUub3BlcmFuZHNb
MV0gPT0gbm9kZS5vcGVyYW5kc1syXQorICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhub2RlLmNv
ZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhu
b2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMV0sIHRtcF0pCisgICAgICAg
ICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bj
b2RlLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wLCBub2RlLm9wZXJhbmRzWzJdXSkKKyAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICBlbmQKKyAgICAg
ICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgZW5kCisg
ICAgZWxzZQorICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAor
ZW5kCisKKyMKKyMgTGVhIHN1cHBvcnQuCisjCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIGFybVY3
RW1pdExlYShkZXN0aW5hdGlvbikKKyAgICBpZiBkZXN0aW5hdGlvbiA9PSBiYXNlCisgICAgICAk
YXNtLnB1dHMgImFkZHMgI3tkZXN0aW5hdGlvbi5hcm1WN09wZXJhbmR9LCBcIyN7b2Zmc2V0LnZh
bHVlfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgImFkZHMgI3tkZXN0aW5hdGlvbi5hcm1W
N09wZXJhbmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSwgXCMje29mZnNldC52YWx1ZX0iCisgICAg
ZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJtVjdFbWl0TGVhKGRl
c3RpbmF0aW9uKQorICAgIHJhaXNlICJNYWxmb3JtZWQgQmFzZUluZGV4LCBvZmZzZXQgc2hvdWxk
IGJlIHplcm8gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG9mZnNldC52YWx1ZSA9PSAw
CisgICAgJGFzbS5wdXRzICJhZGQudyAje2Rlc3RpbmF0aW9uLmFybVY3T3BlcmFuZH0sICN7YmFz
ZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGVTaGlm
dH0iCisgIGVuZAorZW5kCisKKyMgRklYTUU6IHdlIGNvdWxkIHN1cHBvcnQgQWJzb2x1dGVBZGRy
ZXNzIGZvciBsZWEsIGJ1dCB3ZSBkb24ndC4KKworIworIyBBY3R1YWwgbG93ZXJpbmcgY29kZSBm
b2xsb3dzLgorIworCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXJBUk12NworICAgIG15TGlz
dCA9IEBsaXN0CisgICAgCisgICAgIyBWZXJpZnkgdGhhdCB3ZSB3aWxsIG9ubHkgc2VlIGluc3Ry
dWN0aW9ucyBhbmQgbGFiZWxzLgorICAgIG15TGlzdC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8Cisg
ICAgICB1bmxlc3Mgbm9kZS5pc19hPyBJbnN0cnVjdGlvbiBvcgorICAgICAgICAgIG5vZGUuaXNf
YT8gTGFiZWwgb3IKKyAgICAgICAgICBub2RlLmlzX2E/IExvY2FsTGFiZWwgb3IKKyAgICAgICAg
ICBub2RlLmlzX2E/IFNraXAKKyAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQgI3tub2RlLmluc3Bl
Y3R9IGF0ICN7bm9kZS5jb2RlT3JpZ2lufSIgCisgICAgICBlbmQKKyAgICB9CisgICAgCisgICAg
bXlMaXN0ID0gYXJtVjdMb3dlckJyYW5jaE9wcyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdM
b3dlclNoaWZ0T3BzKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWFsZm9ybWVkQWRk
cmVzc2VzKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2Vz
RG91YmxlKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRl
cyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXMobXlM
aXN0KQorICAgIG15TGlzdCA9IGFybVY3TG93ZXJNaXNwbGFjZWRBZGRyZXNzZXMobXlMaXN0KQor
ICAgIG15TGlzdCA9IGFybVY3TG93ZXJSZWdpc3RlclJldXNlKG15TGlzdCkKKyAgICBteUxpc3Qg
PSBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFyaWVzKG15TGlzdCwgOmdwciwgQVJNdjdfRVhUUkFf
R1BSUykKKyAgICBteUxpc3QgPSBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFyaWVzKG15TGlzdCwg
OmZwciwgQVJNdjdfRVhUUkFfRlBSUykKKyAgICBteUxpc3QuZWFjaCB7CisgICAgICB8IG5vZGUg
fAorICAgICAgbm9kZS5sb3dlcigiQVJNdjciKQorICAgIH0KKyAgZW5kCitlbmQKKworZGVmIGFy
bVY3T3BlcmFuZHMob3BlcmFuZHMpCisgIG9wZXJhbmRzLm1hcHt8dnwgdi5hcm1WN09wZXJhbmR9
LmpvaW4oIiwgIikKK2VuZAorCitkZWYgYXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpCisg
IGFybVY3T3BlcmFuZHMoW29wZXJhbmRzWy0xXV0gKyBvcGVyYW5kc1swLi4tMl0pCitlbmQKKwor
ZGVmIGVtaXRBcm1WN0NvbXBhY3Qob3Bjb2RlMiwgb3Bjb2RlMywgb3BlcmFuZHMpCisgIGlmIG9w
ZXJhbmRzLnNpemUgPT0gMworICAgICRhc20ucHV0cyAiI3tvcGNvZGUzfSAje2FybVY3RmxpcHBl
ZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgIGVsc2UKKyAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHMu
c2l6ZSA9PSAyCisgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQK
KyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICRhc20ucHV0cyAiI3tv
cGNvZGUzfSAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdP
cGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgIGVsc2UKKyAgICAgICRh
c20ucHV0cyAiI3tvcGNvZGUyfSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisg
ICAgZW5kCisgIGVuZAorZW5kCisKK2RlZiBlbWl0QXJtVjcob3Bjb2RlLCBvcGVyYW5kcykKKyAg
aWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3thcm1WN0Zs
aXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICBlbHNlCisgICAgcmFpc2UgdW5sZXNzIG9wZXJh
bmRzLnNpemUgPT0gMgorICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0uYXJt
VjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFy
bVY3T3BlcmFuZH0iCisgIGVuZAorZW5kCisKK2RlZiBlbWl0QXJtVjdEb3VibGVCcmFuY2goYnJh
bmNoT3Bjb2RlLCBvcGVyYW5kcykKKyAgJGFzbS5wdXRzICJ2Y21wZS5mNjQgI3thcm1WN09wZXJh
bmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICRhc20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2Ny
IgorICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIK
K2VuZAorCitkZWYgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgdmFsdWUgPSBvcGVyYW5kc1sw
XQorICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgd2hlbiAyCisgICAgbWFzayA9IEltbWVkaWF0ZS5u
ZXcoY29kZU9yaWdpbiwgLTEpCisgIHdoZW4gMworICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICBl
bHNlCisgICAgcmFpc2UgIkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5kcyBidXQgZ290ICN7b3BlcmFu
ZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgZW5kCisgIAorICBpZiBtYXNrLmlz
X2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQorICAgICRhc20ucHV0cyAidHN0ICN7
dmFsdWUuYXJtVjdPcGVyYW5kfSwgI3t2YWx1ZS5hcm1WN09wZXJhbmR9IgorICBlbHNpZiBtYXNr
LmlzX2E/IEltbWVkaWF0ZQorICAgICRhc20ucHV0cyAidHN0LncgI3t2YWx1ZS5hcm1WN09wZXJh
bmR9LCAje21hc2suYXJtVjdPcGVyYW5kfSIKKyAgZWxzZQorICAgICRhc20ucHV0cyAidHN0ICN7
dmFsdWUuYXJtVjdPcGVyYW5kfSwgI3ttYXNrLmFybVY3T3BlcmFuZH0iCisgIGVuZAorZW5kCisK
K2RlZiBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCBjb2RlKQorICAkYXNtLnB1dHMgIm1vdnMg
I3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCBcIzAiCisgICRhc20ucHV0cyAiY21wICN7b3Bl
cmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAk
YXNtLnB1dHMgIml0ICN7Y29kZX0iCisgICRhc20ucHV0cyAibW92I3tjb2RlfSAje29wZXJhbmRz
WzJdLmFybVY3T3BlcmFuZH0sIFwjMSIKK2VuZAorCitkZWYgZW1pdEFybVY3VGVzdFNldChvcGVy
YW5kcywgY29kZSkKKyAgJGFzbS5wdXRzICJtb3ZzICN7b3BlcmFuZHNbLTFdLmFybVY3T3BlcmFu
ZH0sIFwjMCIKKyAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgJGFzbS5wdXRzICJpdCAje2Nv
ZGV9IgorICAkYXNtLnB1dHMgIm1vdiN7Y29kZX0gI3tvcGVyYW5kc1stMV0uYXJtVjdPcGVyYW5k
fSwgXCMxIgorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgIGRlZiBsb3dlckFSTXY3CisgICAg
JGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICBjYXNlIG9wY29kZQorICAgIHdoZW4g
ImFkZGkiLCAiYWRkcCIsICJhZGRpcyIKKyAgICAgIGlmIG9wY29kZSA9PSAiYWRkaXMiCisgICAg
ICAgIHN1ZmZpeCA9ICJzIgorICAgICAgZWxzZQorICAgICAgICBzdWZmaXggPSAiIgorICAgICAg
ZW5kCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IElt
bWVkaWF0ZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJ
RAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAg
ICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCBzdWZmaXguZW1wdHk/CisgICAgICAg
ICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAkYXNtLnB1
dHMgIm1vdiAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdP
cGVyYW5kfSIKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICRhc20ucHV0
cyAiYWRkcyAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdP
cGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICBlbmQKKyAgICAg
IGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJ
RAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAg
ICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAk
YXNtLnB1dHMgImFkZHMgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAg
ZWxzZQorICAgICAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgICB1
bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgICAk
YXNtLnB1dHMgImFkZHMgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAg
ICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRzICJhZGQje3N1ZmZpeH0g
I3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICBlbmQKKyAgICAgIGVu
ZAorICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgIGVtaXRBcm1WN0NvbXBhY3QoImFuZHMi
LCAiYW5kIiwgb3BlcmFuZHMpCisgICAgd2hlbiAib3JpIiwgIm9ycCIKKyAgICAgIGVtaXRBcm1W
N0NvbXBhY3QoIm9ycnMiLCAib3JyIiwgb3BlcmFuZHMpCisgICAgd2hlbiAib3JpcyIKKyAgICAg
IGVtaXRBcm1WN0NvbXBhY3QoIm9ycnMiLCAib3JycyIsIG9wZXJhbmRzKQorICAgIHdoZW4gInhv
cmkiLCAieG9ycCIKKyAgICAgIGVtaXRBcm1WN0NvbXBhY3QoImVvcnMiLCAiZW9yIiwgb3BlcmFu
ZHMpCisgICAgd2hlbiAibHNoaWZ0aSIKKyAgICAgIGVtaXRBcm1WN0NvbXBhY3QoImxzbHMiLCAi
bHNscyIsIG9wZXJhbmRzKQorICAgIHdoZW4gInJzaGlmdGkiCisgICAgICBlbWl0QXJtVjdDb21w
YWN0KCJhc3JzIiwgImFzcnMiLCBvcGVyYW5kcykKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAg
IGVtaXRBcm1WN0NvbXBhY3QoImxzcnMiLCAibHNycyIsIG9wZXJhbmRzKQorICAgIHdoZW4gIm11
bGkiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDIgb3Igb3BlcmFuZHNbMF0gPT0gb3BlcmFu
ZHNbMl0gb3Igb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgZW1pdEFybVY3KCJt
dWxzIiwgb3BlcmFuZHMpCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAibW92ICN7b3Bl
cmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAg
ICAgICAkYXNtLnB1dHMgIm11bHMgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCAje29wZXJh
bmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICAg
IGVuZAorICAgIHdoZW4gInN1YmkiLCAic3VicCIsICJzdWJpcyIKKyAgICAgIGVtaXRBcm1WN0Nv
bXBhY3QoInN1YnMiLCAic3VicyIsIG9wZXJhbmRzKQorICAgIHdoZW4gIm5lZ2kiCisgICAgICAk
YXNtLnB1dHMgInJzYnMgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBd
LmFybVY3T3BlcmFuZH0sIFwjMCIKKyAgICB3aGVuICJub3RpIgorICAgICAgJGFzbS5wdXRzICJt
dm5zICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJh
bmR9IgorICAgIHdoZW4gImxvYWRpIiwgImxvYWRwIgorICAgICAgJGFzbS5wdXRzICJsZHIgI3th
cm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gInN0b3JlaSIsICJzdG9y
ZXAiCisgICAgICAkYXNtLnB1dHMgInN0ciAje2FybVY3T3BlcmFuZHMob3BlcmFuZHMpfSIKKyAg
ICB3aGVuICJsb2FkYiIKKyAgICAgICRhc20ucHV0cyAibGRyYiAje2FybVY3RmxpcHBlZE9wZXJh
bmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAibG9hZGJzIgorICAgICAgJGFzbS5wdXRzICJsZHJz
Yi53ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJzdG9yZWIi
CisgICAgICAkYXNtLnB1dHMgInN0cmIgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAg
d2hlbiAibG9hZGgiCisgICAgICAkYXNtLnB1dHMgImxkcmggI3thcm1WN0ZsaXBwZWRPcGVyYW5k
cyhvcGVyYW5kcyl9IgorICAgIHdoZW4gImxvYWRocyIKKyAgICAgICRhc20ucHV0cyAibGRyc2gu
dyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAic3RvcmVoIgor
ICAgICAgJGFzbS5wdXRzICJzdHJoICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdo
ZW4gImxvYWRkIgorICAgICAgJGFzbS5wdXRzICJ2bGRyLjY0ICN7YXJtVjdGbGlwcGVkT3BlcmFu
ZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJzdG9yZWQiCisgICAgICAkYXNtLnB1dHMgInZzdHIu
NjQgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAiYWRkZCIKKyAgICAgIGVt
aXRBcm1WNygidmFkZC5mNjQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJkaXZkIgorICAgICAgZW1p
dEFybVY3KCJ2ZGl2LmY2NCIsIG9wZXJhbmRzKQorICAgIHdoZW4gInN1YmQiCisgICAgICBlbWl0
QXJtVjcoInZzdWIuZjY0Iiwgb3BlcmFuZHMpCisgICAgd2hlbiAibXVsZCIKKyAgICAgIGVtaXRB
cm1WNygidm11bC5mNjQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJzcXJ0ZCIKKyAgICAgICRhc20u
cHV0cyAidnNxcnQuZjY0ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3
aGVuICJjaTJkIgorICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMV0uYXJtVjdTaW5n
bGV9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAkYXNtLnB1dHMgInZjdnQu
ZjY0LnMzMiAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdT
aW5nbGV9IgorICAgIHdoZW4gImJkZXEiCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJl
cSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkbmVxIgorICAgICAgJGFzbS5wdXRzICJ2Y21wZS5m
NjQgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgInZt
cnMgYXBzcl9uemN2LCBmcHNjciIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlx
dWUoImJkbmVxIikKKyAgICAgICRhc20ucHV0cyAiYnZzICN7TGFiZWxSZWZlcmVuY2UubmV3KGNv
ZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS5hc21MYWJlbH0iCisgICAgICAkYXNtLnB1dHMgImJuZSAj
e29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJBUk12NyIp
CisgICAgd2hlbiAiYmRndCIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmd0Iiwgb3Bl
cmFuZHMpCisgICAgd2hlbiAiYmRndGVxIgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJi
Z2UiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGx0IgorICAgICAgZW1pdEFybVY3RG91YmxlQnJh
bmNoKCJibWkiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGx0ZXEiCisgICAgICBlbWl0QXJtVjdE
b3VibGVCcmFuY2goImJscyIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkZXF1biIKKyAgICAgICRh
c20ucHV0cyAidmNtcGUuZjY0ICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAg
ICAgJGFzbS5wdXRzICJ2bXJzIGFwc3JfbnpjdiwgZnBzY3IiCisgICAgICAkYXNtLnB1dHMgImJ2
cyAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiYmVxICN7b3BlcmFu
ZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJkbmVxdW4iCisgICAgICBlbWl0QXJtVjdEb3Vi
bGVCcmFuY2goImJuZSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkZ3R1biIKKyAgICAgIGVtaXRB
cm1WN0RvdWJsZUJyYW5jaCgiYmhpIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRndGVxdW4iCisg
ICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJwbCIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJk
bHR1biIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmx0Iiwgb3BlcmFuZHMpCisgICAg
d2hlbiAiYmRsdGVxdW4iCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJsZSIsIG9wZXJh
bmRzKQorICAgIHdoZW4gImJ0ZDJpIgorICAgICAgIyBGSVhNRTogbWF5IGJlIGEgZ29vZCBpZGVh
IHRvIGp1c3QgZ2V0IHJpZCBvZiB0aGlzIGluc3RydWN0aW9uLCBzaW5jZSB0aGUgaW50ZXJwcmV0
ZXIKKyAgICAgICMgY3VycmVudGx5IGRvZXMgbm90IHVzZSBpdC4KKyAgICAgIHJhaXNlICJBUk12
NyBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3Bjb2RlIHlldCwgI3tjb2RlT3JpZ2lufSIKKyAgICB3
aGVuICJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJ2Y3Z0LnMzMi5mNjQgI3tBUk12N19TQ1JBVENI
X0ZQUi5hcm1WN1NpbmdsZX0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICRh
c20ucHV0cyAidm1vdiAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7QVJNdjdfU0NSQVRD
SF9GUFIuYXJtVjdTaW5nbGV9IgorICAgIHdoZW4gImJjZDJpIgorICAgICAgJGFzbS5wdXRzICJ2
Y3Z0LnMzMi5mNjQgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0sICN7b3BlcmFuZHNb
MF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzFdLmFy
bVY3T3BlcmFuZH0sICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJtVjdTaW5nbGV9IgorICAgICAgJGFz
bS5wdXRzICJ2Y3Z0LmY2NC5zMzIgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN09wZXJhbmR9LCAj
e0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJy
YW5jaCgiYm5lIiwgW0FSTXY3X1NDUkFUQ0hfRlBSLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMl1d
KQorICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29w
ZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgICAkYXNtLnB1dHMgImJlcSAje29wZXJhbmRz
WzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJtb3ZkeiIKKyAgICAgICMgRklYTUU6IGVpdGhlciBz
dXBwb3J0IHRoaXMgb3IgcmVtb3ZlIGl0LgorICAgICAgcmFpc2UgIkFSTXY3IGRvZXMgbm90IHN1
cHBvcnQgdGhpcyBvcGNvZGUgeWV0LCAje2NvZGVPcmlnaW59IgorICAgIHdoZW4gInBvcCIKKyAg
ICAgICRhc20ucHV0cyAicG9wICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICB3aGVu
ICJwdXNoIgorICAgICAgJGFzbS5wdXRzICJwdXNoICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5k
fSIKKyAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgaWYgb3BlcmFuZHNb
MF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIGFybVY3TW92ZUltbWVkaWF0ZShvcGVyYW5kc1sw
XS52YWx1ZSwgb3BlcmFuZHNbMV0pCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAibW92
ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgIGVuZAorICAgIHdoZW4g
Im5vcCIKKyAgICAgICRhc20ucHV0cyAibm9wIgorICAgIHdoZW4gImJpZXEiLCAiYnBlcSIsICJi
YmVxIgorICAgICAgaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAg
ICAgICRhc20ucHV0cyAidHN0ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgZWxzaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09
IG9wZXJhbmRzWzFdCisgICAgICAgICRhc20ucHV0cyAidHN0ICN7b3BlcmFuZHNbMF0uYXJtVjdP
cGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgZWxzZQorICAgICAg
ICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAg
IGVuZAorICAgICAgJGFzbS5wdXRzICJiZXEgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAg
d2hlbiAiYmluZXEiLCAiYnBuZXEiLCAiYmJuZXEiCisgICAgICBpZiBJbW1lZGlhdGUubmV3KG5p
bCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5kc1sx
XS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgICBlbHNp
ZiBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMV0KKyAgICAgICAgJGFzbS5wdXRz
ICJ0c3QgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3Bl
cmFuZH0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5k
cyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgZW5kCisgICAgICAkYXNtLnB1dHMgImJuZSAje29w
ZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWEiLCAiYnBhIiwgImJiYSIKKyAgICAg
ICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAg
JGFzbS5wdXRzICJiaGkgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmlhZXEi
LCAiYnBhZXEiLCAiYmJhZXEiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMo
b3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmhzICN7b3BlcmFuZHNbMl0uYXNt
TGFiZWx9IgorICAgIHdoZW4gImJpYiIsICJicGIiLCAiYmJiIgorICAgICAgJGFzbS5wdXRzICJj
bXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgImJs
byAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWJlcSIsICJicGJlcSIsICJi
YmJlcSIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4x
XSl9IgorICAgICAgJGFzbS5wdXRzICJibHMgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAg
d2hlbiAiYmlndCIsICJicGd0IiwgImJiZ3QiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3
T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmd0ICN7b3BlcmFu
ZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJpZ3RlcSIsICJicGd0ZXEiLCAiYmJndGVxIgor
ICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisg
ICAgICAkYXNtLnB1dHMgImJnZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJi
aWx0IiwgImJwbHQiLCAiYmJsdCIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5k
cyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5wdXRzICJibHQgI3tvcGVyYW5kc1syXS5h
c21MYWJlbH0iCisgICAgd2hlbiAiYmlsdGVxIiwgImJwbHRlcSIsICJiYmx0ZXEiCisgICAgICAk
YXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRh
c20ucHV0cyAiYmxlICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJ0aXoiLCAi
YnRweiIsICJidGJ6IgorICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgICAgICRhc20u
cHV0cyAiYmVxICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJidGlueiIsICJi
dHBueiIsICJidGJueiIKKyAgICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgICAgICAkYXNt
LnB1dHMgImJuZSAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYnRpbyIsICJi
dHBvIiwgImJ0Ym8iCisgICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICAgICAgJGFzbS5w
dXRzICJidnMgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJ0aXMiLCAiYnRw
cyIsICJidGJzIgorICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgICAgICRhc20ucHV0
cyAiYm1pICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJqbXAiCisgICAgICBp
ZiBvcGVyYW5kc1swXS5sYWJlbD8KKyAgICAgICAgJGFzbS5wdXRzICJiICN7b3BlcmFuZHNbMF0u
YXNtTGFiZWx9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgIm1vdiBwYywgI3tvcGVy
YW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgZW5kCisgICAgd2hlbiAiY2FsbCIKKyAgICAg
IGlmIG9wZXJhbmRzWzBdLmxhYmVsPworICAgICAgICAkYXNtLnB1dHMgImJseCAje29wZXJhbmRz
WzBdLmFzbUxhYmVsfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJibHggI3tvcGVy
YW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgZW5kCisgICAgd2hlbiAiYnJlYWsiCisgICAg
ICAkYXNtLnB1dHMgImJrcHQiCisgICAgd2hlbiAicmV0IgorICAgICAgJGFzbS5wdXRzICJieCBs
ciIKKyAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJh
bmRzLCAiZXEiKQorICAgIHdoZW4gImNpbmVxIiwgImNwbmVxIgorICAgICAgZW1pdEFybVY3Q29t
cGFyZShvcGVyYW5kcywgIm5lIikKKyAgICB3aGVuICJjaWEiLCAiY3BhIgorICAgICAgZW1pdEFy
bVY3Q29tcGFyZShvcGVyYW5kcywgImhpIikKKyAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAg
ICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJocyIpCisgICAgd2hlbiAiY2liIiwgImNw
YiIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJsbyIpCisgICAgd2hlbiAiY2li
ZXEiLCAiY3BiZXEiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibHMiKQorICAg
IHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJn
dCIpCisgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUo
b3BlcmFuZHMsICJnZSIpCisgICAgd2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAgZW1pdEFybVY3
Q29tcGFyZShvcGVyYW5kcywgImx0IikKKyAgICB3aGVuICJjaWx0ZXEiLCAiY3BsdGVxIgorICAg
ICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImxlIikKKyAgICB3aGVuICJ0aW8iLCAidGJv
IgorICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywgInZzIikKKyAgICB3aGVuICJ0aXMi
LCAidGJzIgorICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywgIm1pIikKKyAgICB3aGVu
ICJ0aXoiLCAidGJ6IgorICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywgImVxIikKKyAg
ICB3aGVuICJ0aW56IiwgInRibnoiCisgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAi
bmUiKQorICAgIHdoZW4gInBlZWsiCisgICAgICAkYXNtLnB1dHMgImxkciAje29wZXJhbmRzWzFd
LmFybVY3T3BlcmFuZH0sIFtzcCwgXCMje29wZXJhbmRzWzBdLnZhbHVlICogNH1dIgorICAgIHdo
ZW4gInBva2UiCisgICAgICAkYXNtLnB1dHMgInN0ciAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFu
ZH0sIFtzcCwgXCMje29wZXJhbmRzWzBdLnZhbHVlICogNH1dIgorICAgIHdoZW4gImZpaTJkIgor
ICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVy
YW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAg
d2hlbiAiZmQyaWkiCisgICAgICAkYXNtLnB1dHMgInZtb3YgI3tvcGVyYW5kc1sxXS5hcm1WN09w
ZXJhbmR9LCAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdP
cGVyYW5kfSIKKyAgICB3aGVuICJibyIKKyAgICAgICRhc20ucHV0cyAiYnZzICN7b3BlcmFuZHNb
MF0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJzIgorICAgICAgJGFzbS5wdXRzICJibWkgI3tvcGVy
YW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYnoiCisgICAgICAkYXNtLnB1dHMgImJlcSAj
e29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJibnoiCisgICAgICAkYXNtLnB1dHMg
ImJuZSAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJsZWFpIiwgImxlYXAiCisg
ICAgICBvcGVyYW5kc1swXS5hcm1WN0VtaXRMZWEob3BlcmFuZHNbMV0pCisgICAgd2hlbiAic211
bGxpIgorICAgICAgcmFpc2UgIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgdG8gc211bGwgaW4g
I3tzZWxmLmluc3BlY3R9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBvcGVyYW5kcy5s
ZW5ndGggPT0gNAorICAgICAgJGFzbS5wdXRzICJzbXVsbCAje29wZXJhbmRzWzJdLmFybVY3T3Bl
cmFuZH0sICN7b3BlcmFuZHNbM10uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09w
ZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgZWxzZQorICAgICAgcmFp
c2UgIlVuaGFuZGxlZCBvcGNvZGUgI3tvcGNvZGV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisg
ICAgZW5kCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FzbS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hc20ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hc20ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcyIEBACisjIS91c3IvYmluL2VudiBy
dWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUu
ZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qv
c2hhMSIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZWxm
X2hhc2giCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworY2xhc3Mg
QXNzZW1ibGVyCisgIGRlZiBpbml0aWFsaXplKG91dHApCisgICAgQG91dHAgPSBvdXRwCisgICAg
QHN0YXRlID0gOmNwcAorICAgIEBjb21tZW50U3RhdGUgPSA6bm9uZQorICAgIEBjb21tZW50ID0g
bmlsCisgIGVuZAorICAKKyAgZGVmIGVudGVyQXNtCisgICAgQG91dHAucHV0cyAiYXNtICgiCisg
ICAgQHN0YXRlID0gOmFzbQorICBlbmQKKyAgCisgIGRlZiBsZWF2ZUFzbQorICAgIHB1dHNMYXN0
Q29tbWVudAorICAgIEBvdXRwLnB1dHMgIik7IgorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisg
IAorICBkZWYgaW5Bc20KKyAgICBlbnRlckFzbQorICAgIHlpZWxkCisgICAgbGVhdmVBc20KKyAg
ZW5kCisgIAorICBkZWYgbGFzdENvbW1lbnQKKyAgICBpZiBAY29tbWVudAorICAgICAgcmVzdWx0
ID0gIi8vICN7QGNvbW1lbnR9IgorICAgIGVsc2UKKyAgICAgIHJlc3VsdCA9ICIiCisgICAgZW5k
CisgICAgQGNvbW1lbnRTdGF0ZSA9IDpub25lCisgICAgQGNvbW1lbnQgPSBuaWwKKyAgICByZXN1
bHQKKyAgZW5kCisgIAorICBkZWYgcHV0c0xhc3RDb21tZW50CisgICAgY29tbWVudCA9IGxhc3RD
b21tZW50CisgICAgdW5sZXNzIGNvbW1lbnQuZW1wdHk/CisgICAgICBAb3V0cC5wdXRzIGNvbW1l
bnQKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcHV0cygqbGluZSkKKyAgICByYWlzZSB1bmxl
c3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wdXRzKCJcIlxcdCIgKyBsaW5lLmpvaW4oJycp
ICsgIlxcblwiICN7bGFzdENvbW1lbnR9IikKKyAgZW5kCisgIAorICBkZWYgcHJpbnQobGluZSkK
KyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wcmludCgiXCIiICsg
bGluZSArICJcIiIpCisgIGVuZAorICAKKyAgZGVmIHB1dHNMYWJlbChsYWJlbE5hbWUpCisgICAg
cmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAgQG91dHAucHV0cygiT0ZGTElORV9BU01f
R0xPQkFMX0xBQkVMKCN7bGFiZWxOYW1lfSkgI3tsYXN0Q29tbWVudH0iKQorICBlbmQKKyAgCisg
IGRlZiBwdXRzTG9jYWxMYWJlbChsYWJlbE5hbWUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9
PSA6YXNtCisgICAgQG91dHAucHV0cygiTE9DQUxfTEFCRUxfU1RSSU5HKCN7bGFiZWxOYW1lfSkg
XCI6XFxuXCIgI3tsYXN0Q29tbWVudH0iKQorICBlbmQKKyAgCisgIGRlZiBzZWxmLmxhYmVsUmVm
ZXJlbmNlKGxhYmVsTmFtZSkKKyAgICAiXCIgU1lNQk9MX1NUUklORygje2xhYmVsTmFtZX0pIFwi
IgorICBlbmQKKyAgCisgIGRlZiBzZWxmLmxvY2FsTGFiZWxSZWZlcmVuY2UobGFiZWxOYW1lKQor
ICAgICJcIiBMT0NBTF9MQUJFTF9TVFJJTkcoI3tsYWJlbE5hbWV9KSBcIiIKKyAgZW5kCisgIAor
ICBkZWYgY29tbWVudCh0ZXh0KQorICAgIGNhc2UgQGNvbW1lbnRTdGF0ZQorICAgIHdoZW4gOm5v
bmUKKyAgICAgIEBjb21tZW50ID0gdGV4dAorICAgICAgQGNvbW1lbnRTdGF0ZSA9IDpvbmUKKyAg
ICB3aGVuIDpvbmUKKyAgICAgIEBvdXRwLnB1dHMgIi8vICN7QGNvbW1lbnR9IgorICAgICAgQG91
dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgICAgIEBjb21tZW50ID0gbmlsCisgICAgICBAY29tbWVu
dFN0YXRlID0gOm1hbnkKKyAgICB3aGVuIDptYW55CisgICAgICBAb3V0cC5wdXRzICIvLyAje3Rl
eHR9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorZW5kCisKK2FzbUZp
bGUgPSBBUkdWLnNoaWZ0CitvZmZzZXRzRmlsZSA9IEFSR1Yuc2hpZnQKK291dHB1dEZsbm0gPSBB
UkdWLnNoaWZ0CisKKyRzdGRlcnIucHV0cyAib2ZmbGluZWFzbTogUGFyc2luZyAje2FzbUZpbGV9
IGFuZCAje29mZnNldHNGaWxlfSBhbmQgY3JlYXRpbmcgYXNzZW1ibHkgZmlsZSAje291dHB1dEZs
bm19LiIKKworb2Zmc2V0c0xpc3QsIGNvbmZpZ0luZGV4ID0gb2Zmc2V0c0FuZENvbmZpZ3VyYXRp
b25JbmRleChvZmZzZXRzRmlsZSkKK2lucHV0RGF0YSA9IElPOjpyZWFkKGFzbUZpbGUpCisKK2lu
cHV0SGFzaCA9CisgICIvLyBvZmZsaW5lYXNtIGlucHV0IGhhc2g6ICIgKyBEaWdlc3Q6OlNIQTEu
aGV4ZGlnZXN0KGlucHV0RGF0YSkgKworICAiICIgKyBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KChv
ZmZzZXRzTGlzdCArIFtjb25maWdJbmRleF0pLmpvaW4oJyAnKSkgKworICAiICIgKyBzZWxmSGFz
aAorCitpZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0RmxubQorICBGaWxlLm9wZW4ob3V0cHV0Rmxu
bSwgInIiKSB7CisgICAgfCBpbnAgfAorICAgIGZpcnN0TGluZSA9IGlucC5nZXRzCisgICAgaWYg
Zmlyc3RMaW5lIGFuZCBmaXJzdExpbmUuY2hvbXAgPT0gaW5wdXRIYXNoCisgICAgICAkc3RkZXJy
LnB1dHMgIm9mZmxpbmVhc206IE5vdGhpbmcgY2hhbmdlZC4iCisgICAgICBleGl0IDAKKyAgICBl
bmQKKyAgfQorZW5kCisKK0ZpbGUub3BlbihvdXRwdXRGbG5tLCAidyIpIHsKKyAgfCBvdXRwIHwK
KyAgJG91dHB1dCA9IG91dHAKKyAgJG91dHB1dC5wdXRzIGlucHV0SGFzaAorICAKKyAgJGFzbSA9
IEFzc2VtYmxlci5uZXcoJG91dHB1dCkKKyAgCisgIGFzdCA9IHBhcnNlKGxleChpbnB1dERhdGEp
KQorICAKKyAgZm9yU2V0dGluZ3MoY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdClbY29u
ZmlnSW5kZXhdLCBhc3QpIHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBi
YWNrZW5kIHwKKyAgICBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgICAg
bG93TGV2ZWxBU1QgPSBsb3dMZXZlbEFTVC5yZXNvbHZlKCpidWlsZE9mZnNldHNNYXAobG93TGV2
ZWxBU1QsIG9mZnNldHNMaXN0KSkKKyAgICBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0
ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCkgeworICAgICAgJGFzbS5pbkFzbSB7Cisg
ICAgICAgIGxvd0xldmVsQVNULmxvd2VyKGJhY2tlbmQpCisgICAgICB9CisgICAgfQorICB9Cit9
CisKKyRzdGRlcnIucHV0cyAib2ZmbGluZWFzbTogQXNzZW1ibHkgZmlsZSAje291dHB1dEZsbm19
IHN1Y2Nlc3NmdWxseSBnZW5lcmF0ZWQuIgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9hc3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMzkgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMKKyMgQmFzZSB1dGlsaXR5IHR5cGVzIGZv
ciB0aGUgQVNULgorIworCisjIFZhbGlkIG1ldGhvZHMgZm9yIE5vZGU6CisjCisjIG5vZGUuY2hp
bGRyZW4gLT4gUmV0dXJucyBhbiBhcnJheSBvZiBpbW1lZGlhdGUgY2hpbGRyZW4uCisjCisjIG5v
ZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgc3RyaWN0IGRlc2NlbmRh
bnRzIChjaGlsZHJlbgorIyAgICAgYW5kIGNoaWxkcmVuIG9mIGNoaWxkcmVuLCB0cmFuc2l0aXZl
bHkpLgorIworIyBub2RlLmZsYXR0ZW4gLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRo
ZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5kCisjICAgICB0aGUgbm9kZSBpdHNlbGYuCisjCisjIG5v
ZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aG9zZSBlbGVt
ZW50cyBpbgorIyAgICAgbm9kZS5mbGF0dGVuIHRoYXQgYXJlIG9mIHRoZSBnaXZlbiB0eXBlIChp
c19hPyB0eXBlIHJldHVybnMgdHJ1ZSkuCisjCisjIG5vZGUubWFwQ2hpbGRyZW57fHZ8IC4uLn0g
LT4gUmV0dXJucyBhIG5ldyBub2RlIHdpdGggYWxsIGNoaWxkcmVuCisjICAgICByZXBsYWNlZCBh
Y2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJsb2NrLgorIworIyBFeGFtcGxlczoKKyMKKyMgbm9kZS5m
aWx0ZXIoU2V0dGluZykudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc2V0dGluZ3MgdGhhdCB0
aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVsc2UgYmxvY2tzIGRlcGVuZCBvbi4KKyMKKyMgbm9kZS5m
aWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzdHJ1Y3R1cmUg
b2Zmc2V0cworIyAgICAgdGhhdCB0aGUgQVNUIGRlcGVuZHMgb24uCisKK2NsYXNzIE5vZGUKKyAg
YXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4p
CisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgIGVuZAorICAKKyAgZGVmIGNvZGVPcmln
aW5TdHJpbmcKKyAgICAibGluZSBudW1iZXIgI3tAY29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAg
ZGVmIGRlc2NlbmRhbnRzCisgICAgY2hpbGRyZW4uY29sbGVjdHt8dnwgdi5mbGF0dGVufS5mbGF0
dGVuCisgIGVuZAorICAKKyAgZGVmIGZsYXR0ZW4KKyAgICBbc2VsZl0gKyBkZXNjZW5kYW50cwor
ICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIodHlwZSkKKyAgICBmbGF0dGVuLnNlbGVjdHt8dnwgdi5p
c19hPyB0eXBlfQorICBlbmQKK2VuZAorCitjbGFzcyBOb0NoaWxkcmVuIDwgTm9kZQorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAK
KyAgZGVmIGNoaWxkcmVuCisgICAgW10KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldEtleQorICBhdHRyX3JlYWRl
ciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKHN0cnVjdCwgZmllbGQpCisg
ICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAgZGVm
IGhhc2gKKyAgICBAc3RydWN0Lmhhc2ggKyBAZmllbGQuaGFzaCAqIDMKKyAgZW5kCisgIAorICBk
ZWYgZXFsPyhvdGhlcikKKyAgICBAc3RydWN0ID09IG90aGVyLnN0cnVjdCBhbmQgQGZpZWxkID09
IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisKKyMKKyMgQVNUIG5vZGVzLgorIworCitjbGFzcyBT
dHJ1Y3RPZmZzZXQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAor
ICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JGaWVsZChjb2Rl
T3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGtleSA9IFN0cnVjdE9mZnNldEtleS5uZXcoc3Ry
dWN0LCBmaWVsZCkKKyAgICAKKyAgICB1bmxlc3MgQEBtYXBwaW5nW2tleV0KKyAgICAgIEBAbWFw
cGluZ1trZXldID0gU3RydWN0T2Zmc2V0Lm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQor
ICAgIGVuZAorICAgIEBAbWFwcGluZ1trZXldCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
I3tzdHJ1Y3R9Ojoje2ZpZWxkfSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAgIGlm
IEBzdHJ1Y3QgIT0gb3RoZXIuc3RydWN0CisgICAgICByZXR1cm4gQHN0cnVjdCA8PT4gb3RoZXIu
c3RydWN0CisgICAgZW5kCisgICAgQGZpZWxkIDw9PiBvdGhlci5maWVsZAorICBlbmQKKyAgCisg
IGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAKKyAg
ZGVmIHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZiA8IE5v
Q2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVjdAorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgc3RydWN0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0
cnVjdAorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1l
KGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW3N0cnVjdF0KKyAgICAg
IEBAbWFwcGluZ1tzdHJ1Y3RdID0gU2l6ZW9mLm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAg
ZW5kCisgICAgQEBtYXBwaW5nW3N0cnVjdF0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJz
aXplb2YgI3tAc3RydWN0fSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAgIEBzdHJ1
Y3QgPD0+IG90aGVyLnN0cnVjdAorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNl
CisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGlt
bWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIGZhbHNl
CisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFk
ZXIgOnZhbHVlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEB2YWx1ZSA9IHZhbHVlCisgICAgcmFpc2UgIkJhZCBpbW1l
ZGlhdGUgdmFsdWUgI3t2YWx1ZS5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxl
c3MgdmFsdWUuaXNfYT8gSW50ZWdlcgorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7dmFs
dWV9IgorICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBvdGhlci5pc19hPyBJbW1lZGlh
dGUgYW5kIG90aGVyLnZhbHVlID09IEB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPwor
ICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAK
KyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPwor
ICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0Cisg
ICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQs
IEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBZGRJbW1lZGlhdGVz
Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICsgI3tyaWdodC5kdW1wfSkiCisgIGVu
ZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/
CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5k
CisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgU3Vi
SW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbgorICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5
aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0g
LSAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxzZQor
ICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBpbW1l
ZGlhdGU/CisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICBmYWxzZQor
ICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6
bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdo
dCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9
IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTXVsSW1tZWRpYXRlcy5uZXcoY29kZU9y
aWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAqICN7cmlnaHQuZHVtcH0pIgorICBlbmQKKyAgCisgIGRl
ZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNl
CisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVm
IHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0ZSA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisg
IGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BjaGlsZF0KKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBOZWdJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hp
bGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigtI3tAY2hpbGQuZHVtcH0pIgorICBl
bmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVs
PworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVu
ZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIFJl
Z2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5h
bWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZv
ck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAg
ICBAQG1hcHBpbmdbbmFtZV0gPSBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAg
IGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFt
ZQorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVm
IGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxz
ZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICB0cnVlCisgIGVuZAorZW5kCisKK2Ns
YXNzIEZQUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVm
IHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFt
ZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IEZQUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgIG5hbWUKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxzZQorICBlbmQK
KyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBpbW1lZGlhdGU/
CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgdHJ1ZQorICBlbmQK
K2VuZAorCitjbGFzcyBWYXJpYWJsZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAK
KyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBp
bmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFZhcmlhYmxlLm5ldyhjb2RlT3JpZ2lu
LCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzIDwgTm9kZQorICBhdHRy
X3JlYWRlciA6YmFzZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
YmFzZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisg
ICAgQG9mZnNldCA9IG9mZnNldAorICAgIHJhaXNlICJCYWQgYmFzZSBmb3IgYWRkcmVzcyAje2Jh
c2UuaW5zcGVjdH0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIGJhc2UuaXNfYT8gVmFy
aWFibGUgb3IgYmFzZS5yZWdpc3Rlcj8KKyAgICByYWlzZSAiQmFkIG9mZnNldCBmb3IgYWRkcmVz
cyAje29mZnNldC5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb2Zmc2V0
LmlzX2E/IFZhcmlhYmxlIG9yIG9mZnNldC5pbW1lZGlhdGU/CisgIGVuZAorICAKKyAgZGVmIGNo
aWxkcmVuCisgICAgW0BiYXNlLCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJl
bgorICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAb2Zm
c2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2Uu
ZHVtcH1dIgorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIHRydWUKKyAgZW5kCisgIAor
ICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAg
IGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5k
CisKK2NsYXNzIEJhc2VJbmRleCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2UsIDppbmRleCwg
OnNjYWxlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBiYXNlID0g
YmFzZQorICAgIEBpbmRleCA9IGluZGV4CisgICAgQHNjYWxlID0gc2NhbGUKKyAgICByYWlzZSB1
bmxlc3MgWzEsIDIsIDQsIDhdLm1lbWJlcj8gQHNjYWxlCisgICAgQG9mZnNldCA9IG9mZnNldAor
ICBlbmQKKyAgCisgIGRlZiBzY2FsZVNoaWZ0CisgICAgY2FzZSBzY2FsZQorICAgIHdoZW4gMQor
ICAgICAgMAorICAgIHdoZW4gMgorICAgICAgMQorICAgIHdoZW4gNAorICAgICAgMgorICAgIHdo
ZW4gOAorICAgICAgMworICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQgc2NhbGUgYXQgI3tjb2Rl
T3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBb
QGJhc2UsIEBpbmRleCwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAaW5kZXgp
LCBAc2NhbGUsICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIj
e29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH0sICN7aW5kZXguZHVtcH0sICN7c2NhbGV9XSIKKyAg
ZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGxhYmVs
PworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBl
bmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICBmYWxzZQorICBlbmQKK2VuZAorCitjbGFzcyBB
YnNvbHV0ZUFkZHJlc3MgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDphZGRyZXNzCisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBhZGRyZXNzKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQGFkZHJlc3MgPSBhZGRyZXNzCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
I3thZGRyZXNzLmR1bXB9W10iCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgdHJ1ZQor
ICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBpbW1l
ZGlhdGU/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UK
KyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpv
cGNvZGUsIDpvcGVyYW5kcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgb3Bjb2Rl
LCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBvcGNvZGUgPSBvcGNvZGUK
KyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIEluc3Ry
dWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBAb3Bjb2RlLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdCIgKyBvcGNvZGUudG9fcyArICIgIiArIG9wZXJh
bmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKQorICBlbmQKK2VuZAorCitjbGFzcyBF
cnJvciA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0ZXJyb3IiCisgIGVu
ZAorZW5kCisKK2NsYXNzIENvbnN0RGVjbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnZhcmlhYmxl
LCA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1
ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YXJpYWJsZSA9IHZhcmlhYmxlCisgICAg
QHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQHZhcmlhYmxl
LCBAdmFsdWVdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQ29uc3REZWNsLm5l
dyhjb2RlT3JpZ2luLCAoeWllbGQgQHZhcmlhYmxlKSwgKHlpZWxkIEB2YWx1ZSkpCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiY29uc3QgI3tAdmFyaWFibGUuZHVtcH0gPSAje0B2YWx1ZS5k
dW1wfSIKKyAgZW5kCitlbmQKKworJGxhYmVsTWFwcGluZyA9IHt9CisKK2NsYXNzIExhYmVsIDwg
Tm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQor
ICBlbmQKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAk
bGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7
bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExhYmVsCisgICAgZWxzZQor
ICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbCA8IE5vQ2hpbGRy
ZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisK
KyAgQEB1bmlxdWVOYW1lQ291bnRlciA9IDAKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9y
aWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFi
ZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlz
X2E/IExvY2FsTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTG9j
YWxMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5n
W25hbWVdCisgIGVuZAorICAKKyAgZGVmIHNlbGYudW5pcXVlKGNvbW1lbnQpCisgICAgbmV3TmFt
ZSA9ICJfI3tjb21tZW50fSIKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25ld05hbWVdCisgICAgICB3
aGlsZSAkbGFiZWxNYXBwaW5nW25ld05hbWUgPSAiXyN7QEB1bmlxdWVOYW1lQ291bnRlcn1fI3tj
b21tZW50fSJdCisgICAgICAgIEBAdW5pcXVlTmFtZUNvdW50ZXIgKz0gMQorICAgICAgZW5kCisg
ICAgZW5kCisgICAgZm9yTmFtZShuaWwsIG5ld05hbWUpCisgIGVuZAorICAKKyAgZGVmIGNsZWFu
TmFtZQorICAgIGlmIG5hbWUgPX4gL15cLi8KKyAgICAgICJfIiArIG5hbWVbMS4uLTFdCisgICAg
ZWxzZQorICAgICAgbmFtZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7
bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZSA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICBMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVu
ZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAg
ZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgdHJ1ZQorICBlbmQKK2VuZAorCitjbGFzcyBMb2Nh
bExhYmVsUmVmZXJlbmNlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxh
YmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExvY2FsTGFiZWxSZWZlcmVu
Y2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1l
CisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQor
ICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxh
YmVsPworICAgIHRydWUKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpsaXN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsaXN0KQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxpc3QgPSBsaXN0CisgIGVuZAorICAKKyAgZGVm
IGNoaWxkcmVuCisgICAgbGlzdAorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykK
KyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgQGxpc3QubWFwKCZwcm9jKSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgIGxpc3QuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCJcbiIpCisg
IGVuZAorZW5kCisKK2NsYXNzIFRydWUgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisg
ICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBUcnVlLm5ldworICAKKyAg
ZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVmIHZhbHVl
CisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgInRydWUiCisgIGVuZAorZW5k
CisKK2NsYXNzIEZhbHNlIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQorICAgIHN1cGVy
KG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNlID0gRmFsc2UubmV3CisgIAorICBkZWYgc2Vs
Zi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICBm
YWxzZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImZhbHNlIgorICBlbmQKK2VuZAorCitj
bGFzcyBUcnVlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAgIFRydWUuaW5zdGFuY2UKKyAgZW5kCitl
bmQKKworY2xhc3MgRmFsc2VDbGFzcworICBkZWYgYXNOb2RlCisgICAgRmFsc2UuaW5zdGFuY2UK
KyAgZW5kCitlbmQKKworY2xhc3MgU2V0dGluZyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIg
Om5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7
fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBA
QG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFNldHRpbmcubmV3KGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZCA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAg
ICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwg
QHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFuZC5uZXcoY29kZU9y
aWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBhbmQgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisK
K2NsYXNzIE9yIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVm
IGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxk
cmVuCisgICAgT3IubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQp
KQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gb3IgI3tyaWdodC5k
dW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE5vdCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNo
aWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVu
CisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAg
Tm90Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgICIobm90ICN7Y2hpbGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwIDwg
Tm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRza2lwIgorICBlbmQKK2VuZAor
CitjbGFzcyBJZlRoZW5FbHNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6cHJlZGljYXRlLCA6dGhl
bkNhc2UKKyAgYXR0cl9hY2Nlc3NvciA6ZWxzZUNhc2UKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIHByZWRpY2F0ZSwgdGhlbkNhc2UpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAcHJlZGljYXRlID0gcHJlZGljYXRlCisgICAgQHRoZW5DYXNlID0gdGhlbkNhc2UKKyAgICBA
ZWxzZUNhc2UgPSBTa2lwLm5ldyhjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJl
bgorICAgIGlmIEBlbHNlQ2FzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZSwgQGVsc2VD
YXNlXQorICAgIGVsc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2VdCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdp
biwgKHlpZWxkIEBwcmVkaWNhdGUpLCAoeWllbGQgQHRoZW5DYXNlKSwgKHlpZWxkIEBlbHNlQ2Fz
ZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiaWYgI3twcmVkaWNhdGUuZHVtcH1cbiIg
KyB0aGVuQ2FzZS5kdW1wICsgIlxuZWxzZVxuIiArIGVsc2VDYXNlLmR1bXAgKyAiXG5lbmQiCisg
IGVuZAorZW5kCisKK2NsYXNzIE1hY3JvIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOnZh
cmlhYmxlcywgOmJvZHkKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIHZh
cmlhYmxlcywgYm9keSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQor
ICAgIEB2YXJpYWJsZXMgPSB2YXJpYWJsZXMKKyAgICBAYm9keSA9IGJvZHkKKyAgZW5kCisgIAor
ICBkZWYgY2hpbGRyZW4KKyAgICBAdmFyaWFibGVzICsgW0Bib2R5XQorICBlbmQKKyAgCisgIGRl
ZiBtYXBDaGlsZHJlbgorICAgIE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQHZhcmlhYmxl
cy5tYXB7fHZ8IHlpZWxkIHZ9LCAoeWllbGQgQGJvZHkpKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIm1hY3JvICN7bmFtZX0oIiArIHZhcmlhYmxlcy5jb2xsZWN0e3x2fCB2LmR1bXB9Lmpv
aW4oIiwgIikgKyAiKVxuIiArIGJvZHkuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xh
c3MgTWFjcm9DYWxsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOm9wZXJhbmRzCisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisg
ICAgcmFpc2UgdW5sZXNzIEBvcGVyYW5kcworICAgIEBvcGVyYW5kcy5lYWNoe3x2fCByYWlzZSB1
bmxlc3Mgdn0KKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAb3BlcmFuZHMKKyAgZW5k
CisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgTWFjcm9DYWxsLm5ldyhjb2RlT3Jp
Z2luLCBAbmFtZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiXHQje25hbWV9KCIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwg
IikgKyAiKSIKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vYmFja2VuZHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NiBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXJtdjciCity
ZXF1aXJlICJhc3QiCityZXF1aXJlICJ4ODYiCisKK0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIs
CisgICAiQVJNdjciCisgIF0KKworIyBLZWVwIHRoZSBzZXQgb2Ygd29ya2luZyBiYWNrZW5kcyBz
ZXBhcmF0ZSBmcm9tIHRoZSBzZXQgb2YgYmFja2VuZHMgdGhhdCBtaWdodCBiZQorIyBzdXBwb3J0
ZWQuIFRoaXMgaXMgZ3JlYXQgYmVjYXVzZSB0aGUgQkFDS0VORFMgbGlzdCBpcyBhbG1vc3QgbGlr
ZSBhIHJlc2VydmVkCisjIHdvcmRzIGxpc3QsIGluIHRoYXQgaXQgY2F1c2VzIHNldHRpbmdzIHJl
c29sdXRpb24gdG8gdHJlYXQgdGhvc2Ugd29yZHMgc3BlY2lhbGx5LgorIyBIZW5jZSB0aGlzIGxl
dHMgdXMgc2V0IGFzaWRlIHRoZSBuYW1lIG9mIGEgYmFja2VuZCB3ZSBtaWdodCB3YW50IHRvIHN1
cHBvcnQgaW4KKyMgdGhlIGZ1dHVyZSB3aGlsZSBub3QgYWN0dWFsbHkgc3VwcG9ydGluZyB0aGUg
YmFja2VuZCB5ZXQuCitXT1JLSU5HX0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIsCisgICAiQVJN
djciCisgIF0KKworQkFDS0VORF9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCcgKyBCQUNLRU5E
Uy5qb2luKCcpfCgnKSArICcpXFxaJykKKworY2xhc3MgTm9kZQorICBkZWYgbG93ZXIobmFtZSkK
KyAgICBzZW5kKCJsb3dlciIgKyBuYW1lKQorICBlbmQKK2VuZAorCisjIE92ZXJyaWRlcyBmb3Ig
bG93ZXIoKSBmb3IgdGhvc2Ugbm9kZXMgdGhhdCBhcmUgYmFja2VuZC1hZ25vc3RpYworCitjbGFz
cyBMYWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHNMYWJlbChzZWxmLm5hbWVb
MS4uLTFdKQorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBsb3dlcihuYW1l
KQorICAgICRhc20ucHV0c0xvY2FsTGFiZWwgIl9vZmZsaW5lYXNtXyN7c2VsZi5uYW1lWzEuLi0x
XX0iCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgIGRlZiBhc21MYWJlbAor
ICAgIEFzc2VtYmxlci5sYWJlbFJlZmVyZW5jZShuYW1lWzEuLi0xXSkKKyAgZW5kCitlbmQKKwor
Y2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQorICBkZWYgYXNtTGFiZWwKKyAgICBBc3NlbWJsZXIu
bG9jYWxMYWJlbFJlZmVyZW5jZSgiX29mZmxpbmVhc21fIituYW1lWzEuLi0xXSkKKyAgZW5kCitl
bmQKKworY2xhc3MgU2tpcAorICBkZWYgbG93ZXIobmFtZSkKKyAgZW5kCitlbmQKKworY2xhc3Mg
U2VxdWVuY2UKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgaWYgcmVzcG9uZF90bz8gImxvd2VyI3tu
YW1lfSIKKyAgICAgIHNlbmQoImxvd2VyI3tuYW1lfSIpCisgICAgZWxzZQorICAgICAgQGxpc3Qu
ZWFjaCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIG5vZGUubG93ZXIobmFtZSkKKyAgICAg
IH0KKyAgICBlbmQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJi
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJh
dGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MyBAQAorIyEv
dXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVx
dWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgor
cmVxdWlyZSAic2VsZl9oYXNoIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zv
cm0iCisKK2lucHV0RmxubSA9IEFSR1Yuc2hpZnQKK291dHB1dEZsbm0gPSBBUkdWLnNoaWZ0CisK
KyRzdGRlcnIucHV0cyAib2ZmbGluZWFzbTogUGFyc2luZyAje2lucHV0RmxubX0gYW5kIGNyZWF0
aW5nIG9mZnNldCBleHRyYWN0b3IgI3tvdXRwdXRGbG5tfS4iCisKK2RlZiBlbWl0TWFnaWNOdW1i
ZXIKKyAgT0ZGU0VUX01BR0lDX05VTUJFUlMuZWFjaCB7CisgICAgfCBudW1iZXIgfAorICAgICRv
dXRwdXQucHV0cyAiI3tudW1iZXJ9LCIKKyAgfQorZW5kCisKK2lucHV0RGF0YSA9IElPOjpyZWFk
KGlucHV0RmxubSkKK2lucHV0SGFzaCA9ICIvLyBvZmZsaW5lYXNtIGlucHV0IGhhc2g6ICN7RGln
ZXN0OjpTSEExLmhleGRpZ2VzdChpbnB1dERhdGEpfSAje3NlbGZIYXNofSIKKworaWYgRmlsZVRl
c3QuZXhpc3Q/IG91dHB1dEZsbm0KKyAgRmlsZS5vcGVuKG91dHB1dEZsbm0sICJyIikgeworICAg
IHwgaW5wIHwKKyAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAgIGlmIGZpcnN0TGluZSBhbmQg
Zmlyc3RMaW5lLmNob21wID09IGlucHV0SGFzaAorICAgICAgJHN0ZGVyci5wdXRzICJvZmZsaW5l
YXNtOiBOb3RoaW5nIGNoYW5nZWQuIgorICAgICAgZXhpdCAwCisgICAgZW5kCisgIH0KK2VuZAor
CitvcmlnaW5hbEFTVCA9IHBhcnNlKGxleChpbnB1dERhdGEpKQorCitGaWxlLm9wZW4ob3V0cHV0
RmxubSwgInciKSB7CisgIHwgb3V0cCB8CisgICRvdXRwdXQgPSBvdXRwCisgIG91dHAucHV0cyBp
bnB1dEhhc2gKKyAgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKG9yaWdpbmFsQVNUKSB7Cisg
ICAgfCBzZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8CisgICAgb2Zmc2V0c0xpc3QgPSBh
c3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CisgICAgc2l6ZXNMaXN0ID0gYXN0LmZp
bHRlcihTaXplb2YpLnVuaXEuc29ydAorICAgIAorICAgIGxlbmd0aCA9IChPRkZTRVRfTUFHSUNf
TlVNQkVSUy5zaXplICsgMSkgKiAoMSArIG9mZnNldHNMaXN0LnNpemUgKyBzaXplc0xpc3Quc2l6
ZSkKKyAgICAKKyAgICBvdXRwLnB1dHMgInN0YXRpYyBjb25zdCB1bnNpZ25lZCBleHRyYWN0b3JU
YWJsZVsje2xlbmd0aH1dID0geyIKKyAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICBvdXRwLnB1dHMg
IiN7aW5kZXh9LCIKKyAgICBvZmZzZXRzTGlzdC5lYWNoIHsKKyAgICAgIHwgb2Zmc2V0IHwKKyAg
ICAgIGVtaXRNYWdpY051bWJlcgorICAgICAgb3V0cC5wdXRzICJPRkZMSU5FX0FTTV9PRkZTRVRP
Rigje29mZnNldC5zdHJ1Y3R9LCAje29mZnNldC5maWVsZH0pLCIKKyAgICB9CisgICAgc2l6ZXNM
aXN0LmVhY2ggeworICAgICAgfCBvZmZzZXQgfAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAg
ICBvdXRwLnB1dHMgInNpemVvZigje29mZnNldC5zdHJ1Y3R9KSwiCisgICAgfQorICAgIG91dHAu
cHV0cyAifTsiCisgIH0KK30KKworJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBvZmZzZXQgZXh0
cmFjdG9yICN7b3V0cHV0RmxubX0gc3VjY2Vzc2Z1bGx5IGdlbmVyYXRlZC4iCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlv
bnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjE3IEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjIEludGVyZXN0aW5nIGludmFyaWFudCwgd2hpY2ggd2UgdGFr
ZSBhZHZhbnRhZ2Ugb2Y6IGJyYW5jaGluZyBpbnN0cnVjdGlvbnMKKyMgYWx3YXlzIGJlZ2luIHdp
dGggImIiLCBhbmQgbm8gbm9uLWJyYW5jaGluZyBpbnN0cnVjdGlvbnMgYmVnaW4gd2l0aCAiYiIu
CisjIFRlcm1pbmFsIGluc3RydWN0aW9ucyBhcmUgImptcCIgYW5kICJyZXQiLgorCitNQUNST19J
TlNUUlVDVElPTlMgPQorICBbCisgICAiYWRkaSIsCisgICAiYW5kaSIsCisgICAibHNoaWZ0aSIs
CisgICAibXVsaSIsCisgICAibmVnaSIsCisgICAibm90aSIsCisgICAib3JpIiwKKyAgICJyc2hp
ZnRpIiwKKyAgICJ1cnNoaWZ0aSIsCisgICAic3ViaSIsCisgICAieG9yaSIsCisgICAibG9hZGki
LAorICAgImxvYWRiIiwKKyAgICJsb2FkYnMiLAorICAgImxvYWRoIiwKKyAgICJsb2FkaHMiLAor
ICAgInN0b3JlaSIsCisgICAic3RvcmViIiwKKyAgICJsb2FkZCIsCisgICAibW92ZWQiLAorICAg
InN0b3JlZCIsCisgICAiYWRkZCIsCisgICAiZGl2ZCIsCisgICAic3ViZCIsCisgICAibXVsZCIs
CisgICAic3FydGQiLAorICAgImNpMmQiLAorICAgImZpaTJkIiwgIyB1c2FnZTogZmlpMmQgPGdw
ciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2Fu
dCBiaXRzPiwgPGZwcj4KKyAgICJmZDJpaSIsICMgdXNhZ2U6IGZkMmlpIDxmcHI+LCA8Z3ByIHdp
dGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJp
dHM+CisgICAiYmRlcSIsCisgICAiYmRuZXEiLAorICAgImJkZ3QiLAorICAgImJkZ3RlcSIsCisg
ICAiYmRsdCIsCisgICAiYmRsdGVxIiwKKyAgICJiZGVxdW4iLAorICAgImJkbmVxdW4iLAorICAg
ImJkZ3R1biIsCisgICAiYmRndGVxdW4iLAorICAgImJkbHR1biIsCisgICAiYmRsdGVxdW4iLAor
ICAgImJ0ZDJpIiwKKyAgICJ0ZDJpIiwKKyAgICJiY2QyaSIsCisgICAibW92ZHoiLAorICAgInBv
cCIsCisgICAicHVzaCIsCisgICAibW92ZSIsCisgICAic3hpMnAiLAorICAgInp4aTJwIiwKKyAg
ICJub3AiLAorICAgImJpZXEiLAorICAgImJpbmVxIiwKKyAgICJiaWEiLAorICAgImJpYWVxIiwK
KyAgICJiaWIiLAorICAgImJpYmVxIiwKKyAgICJiaWd0IiwKKyAgICJiaWd0ZXEiLAorICAgImJp
bHQiLAorICAgImJpbHRlcSIsCisgICAiYmJlcSIsCisgICAiYmJuZXEiLAorICAgImJiYSIsCisg
ICAiYmJhZXEiLAorICAgImJiYiIsCisgICAiYmJiZXEiLAorICAgImJiZ3QiLAorICAgImJiZ3Rl
cSIsCisgICAiYmJsdCIsCisgICAiYmJsdGVxIiwKKyAgICJidGlvIiwKKyAgICJidGlzIiwKKyAg
ICJidGl6IiwKKyAgICJidGlueiIsCisgICAiYnRibyIsCisgICAiYnRicyIsCisgICAiYnRieiIs
CisgICAiYnRibnoiLAorICAgImptcCIsCisgICAiYmFkZGlvIiwKKyAgICJiYWRkaXMiLAorICAg
ImJhZGRpeiIsCisgICAiYmFkZGlueiIsCisgICAiYnN1YmlvIiwKKyAgICJic3ViaXMiLAorICAg
ImJzdWJpeiIsCisgICAiYnN1YmlueiIsCisgICAiYm11bGlvIiwKKyAgICJibXVsaXMiLAorICAg
ImJtdWxpeiIsCisgICAiYm11bGlueiIsCisgICAiYm9yaW8iLAorICAgImJvcmlzIiwKKyAgICJi
b3JpeiIsCisgICAiYm9yaW56IiwKKyAgICJicmVhayIsCisgICAiY2FsbCIsCisgICAicmV0IiwK
KyAgICJjaWVxIiwKKyAgICJjaW5lcSIsCisgICAiY2lhIiwKKyAgICJjaWFlcSIsCisgICAiY2li
IiwKKyAgICJjaWJlcSIsCisgICAiY2lndCIsCisgICAiY2lndGVxIiwKKyAgICJjaWx0IiwKKyAg
ICJjaWx0ZXEiLAorICAgInRpbyIsCisgICAidGlzIiwKKyAgICJ0aXoiLAorICAgInRpbnoiLAor
ICAgInRibyIsCisgICAidGJzIiwKKyAgICJ0YnoiLAorICAgInRibnoiLAorICAgInBlZWsiLAor
ICAgInBva2UiLAorICAgImJwZXEiLAorICAgImJwbmVxIiwKKyAgICJicGEiLAorICAgImJwYWVx
IiwKKyAgICJicGIiLAorICAgImJwYmVxIiwKKyAgICJicGd0IiwKKyAgICJicGd0ZXEiLAorICAg
ImJwbHQiLAorICAgImJwbHRlcSIsCisgICAiYWRkcCIsCisgICAiYW5kcCIsCisgICAib3JwIiwK
KyAgICJzdWJwIiwKKyAgICJ4b3JwIiwKKyAgICJsb2FkcCIsCisgICAiY3BlcSIsCisgICAiY3Bu
ZXEiLAorICAgImNwYSIsCisgICAiY3BhZXEiLAorICAgImNwYiIsCisgICAiY3BiZXEiLAorICAg
ImNwZ3QiLAorICAgImNwZ3RlcSIsCisgICAiY3BsdCIsCisgICAiY3BsdGVxIiwKKyAgICJzdG9y
ZXAiLAorICAgImJ0cG8iLAorICAgImJ0cHMiLAorICAgImJ0cHoiLAorICAgImJ0cG56IiwKKyAg
ICJiYWRkcG8iLAorICAgImJhZGRwcyIsCisgICAiYmFkZHB6IiwKKyAgICJiYWRkcG56IiwKKyAg
ICJibyIsCisgICAiYnMiLAorICAgImJ6IiwKKyAgICJibnoiLAorICAgImxlYWkiLAorICAgImxl
YXAiLAorICBdCisKK1g4Nl9JTlNUUlVDVElPTlMgPQorICBbCisgICAiY2RxaSIsCisgICAiaWRp
dmkiCisgIF0KKworQVJNdjdfSU5TVFJVQ1RJT05TID0KKyAgWworICAgInNtdWxsaSIsCisgICAi
YWRkaXMiLAorICAgInN1YmlzIiwKKyAgICJvcmlzIgorICBdCisKK0lOU1RSVUNUSU9OUyA9IE1B
Q1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMgKyBBUk12N19JTlNUUlVDVElPTlMK
KworSU5TVFJVQ1RJT05fUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIElOU1RSVUNUSU9O
Uy5qb2luKCcpfCgnKSArICcpKVxcWicpCisKK2RlZiBpc0JyYW5jaChpbnN0cnVjdGlvbikKKyAg
aW5zdHJ1Y3Rpb24gPX4gL15iLworZW5kCisKK2RlZiBoYXNGYWxsVGhyb3VnaChpbnN0cnVjdGlv
bikKKyAgaW5zdHJ1Y3Rpb24gIT0gInJldCIgYW5kIGluc3RydWN0aW9uICE9ICJqbXAiCitlbmQK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rv
cl9jb25zdGFudHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5y
YgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgwZmY1ZTc1NSBd
CisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJi
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0
cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIm9mZnNldF9leHRyYWN0
b3JfY29uc3RhbnRzIgorCitPRkZTRVRfTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgw
ZmY1ZTc1NSBdCisKKyMKKyMgb2Zmc2V0c0xpc3QoYXN0KQorIyBzaXplc0xpc3QoYXN0KQorIwor
IyBSZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCBzaXplcyB1c2VkIGJ5IHRoZSBBU1QuCisj
CisKK2RlZiBvZmZzZXRzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlx
LnNvcnQKK2VuZAorCitkZWYgc2l6ZXNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTaXplb2YpLnVu
aXEuc29ydAorZW5kCisKKyMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChhc3QsIGZp
bGUpIC0+CisjICAgICBbb2Zmc2V0cywgaW5kZXhdCisjCisjIFBhcnNlcyB0aGUgb2Zmc2V0cyBm
cm9tIGEgZmlsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgdGhlCisjIGluZGV4
IG9mIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgaXMgdmFsaWQgaW4gdGhpcyBidWlsZCB0YXJnZXQu
CisjCisKK2RlZiBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUpCisgIGluZGV4ID0g
bmlsCisgIG9mZnNldHMgPSBbXQorICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBuaWwKKyAgCisg
IGRlZiByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICBieXRlcyA9IFtdCisgICAgNC50aW1l
cyB7CisgICAgICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQorICAgIH0KKyAgICAKKyAgICBpZiBlbmRp
YW5uZXNzID09IDpsaXR0bGUKKyAgICAgICMgTGl0dGxlIGVuZGlhbgorICAgICAgKGJ5dGVzWzBd
IDw8IDAgfAorICAgICAgIGJ5dGVzWzFdIDw8IDggfAorICAgICAgIGJ5dGVzWzJdIDw8IDE2IHwK
KyAgICAgICBieXRlc1szXSA8PCAyNCkKKyAgICBlbHNlCisgICAgICAjIEJpZyBlbmRpYW4KKyAg
ICAgIChieXRlc1swXSA8PCAyNCB8CisgICAgICAgYnl0ZXNbMV0gPDwgMTYgfAorICAgICAgIGJ5
dGVzWzJdIDw8IDggfAorICAgICAgIGJ5dGVzWzNdIDw8IDApCisgICAgZW5kCisgIGVuZAorICAK
KyAgWzpsaXR0bGUsIDpiaWddLmVhY2ggeworICAgIHwgZW5kaWFubmVzcyB8CisgICAgbWFnaWNC
eXRlcyA9IFtdCisgICAgTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICAgIHwgbnVtYmVyIHwKKyAg
ICAgIGN1cnJlbnRCeXRlcyA9IFtdCisgICAgICA0LnRpbWVzIHsKKyAgICAgICAgY3VycmVudEJ5
dGVzIDw8IChudW1iZXIgJiAweGZmKQorICAgICAgICBudW1iZXIgPj49IDgKKyAgICAgIH0KKyAg
ICAgIGlmIGVuZGlhbm5lc3MgPT0gOmJpZworICAgICAgICBjdXJyZW50Qnl0ZXMucmV2ZXJzZSEK
KyAgICAgIGVuZAorICAgICAgbWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0ZXMKKyAgICB9CisgICAg
CisgICAgRmlsZS5vcGVuKGZpbGUsICJyIikgeworICAgICAgfCBpbnAgfAorICAgICAgd2hlcmVJ
bk1hcmtlciA9IDAKKyAgICAgIGxvb3AgeworICAgICAgICBieXRlID0gaW5wLmdldGJ5dGUKKyAg
ICAgICAgYnJlYWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgaWYgYnl0ZSA9PSBtYWdpY0J5dGVzW3do
ZXJlSW5NYXJrZXJdCisgICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisgICAgICAgICAgaWYg
d2hlcmVJbk1hcmtlciA9PSBtYWdpY0J5dGVzLnNpemUKKyAgICAgICAgICAgICMgV2UgaGF2ZSBh
IG1hdGNoISBJZiB3ZSBoYXZlIG5vdCB5ZXQgcmVhZCB0aGUgZW5kaWFubmVzcyBtYXJrZXIgYW5k
IGluZGV4LAorICAgICAgICAgICAgIyB0aGVuIHJlYWQgdGhvc2Ugbm93OyBvdGhlcndpc2UgcmVh
ZCBhbiBvZmZzZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIG5vdCBpbmRleAorICAg
ICAgICAgICAgICBpbmRleCA9IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICBvZmZzZXRzIDw8IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQor
ICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdoZXJlSW5NYXJrZXIg
PSAwCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICB3aGVyZUluTWFya2Vy
ID0gMAorICAgICAgICBlbmQKKyAgICAgIH0KKyAgICB9CisgICAgCisgICAgYnJlYWsgaWYgaW5k
ZXgKKyAgfQorICAKKyAgcmFpc2UgdW5sZXNzIGluZGV4CisgIAorICBbb2Zmc2V0cywgaW5kZXhd
CitlbmQKKworIworIyBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkgLT4gW29mZnNl
dHMsIHNpemVzXQorIworIyBCdWlsZHMgYSBtYXBwaW5nIGJldHdlZW4gU3RydWN0T2Zmc2V0IG5v
ZGVzIGFuZCB0aGVpciB2YWx1ZXMuCisjCisKK2RlZiBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZz
ZXRzTGlzdCkKKyAgb2Zmc2V0c01hcCA9IHt9CisgIHNpemVzTWFwID0ge30KKyAgYXN0T2Zmc2V0
c0xpc3QgPSBvZmZzZXRzTGlzdChhc3QpCisgIGFzdFNpemVzTGlzdCA9IHNpemVzTGlzdChhc3Qp
CisgIHJhaXNlIHVubGVzcyBhc3RPZmZzZXRzTGlzdC5zaXplICsgYXN0U2l6ZXNMaXN0LnNpemUg
PT0gb2Zmc2V0c0xpc3Quc2l6ZQorICBvZmZzZXRzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7
CisgICAgfCBzdHJ1Y3RPZmZzZXQsIGluZGV4IHwKKyAgICBvZmZzZXRzTWFwW3N0cnVjdE9mZnNl
dF0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIHNpemVzTGlzdChhc3QpLmVhY2hfd2l0aF9p
bmRleCB7CisgICAgfCBzaXplb2YsIGluZGV4IHwKKyAgICBzaXplc01hcFtzaXplb2ZdID0gb2Zm
c2V0c0xpc3Quc2hpZnQKKyAgfQorICBbb2Zmc2V0c01hcCwgc2l6ZXNNYXBdCitlbmQKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb3B0LnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29wdC5yYgkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29wdC5yYgkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMzQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3Jl
cXVpcmUgImFzdCIKKworIworIyAiT3B0aW1pemF0aW9uIiBwYXNzZXMuIFRoZXNlIGFyZSB1c2Vk
IHRvIGxvd2VyIHRoZSByZXByZXNlbnRhdGlvbiBmb3IKKyMgYmFja2VuZHMgdGhhdCBjYW5ub3Qg
aGFuZGxlIHNvbWUgb2Ygb3VyIGhpZ2hlci1sZXZlbCBpbnN0cnVjdGlvbnMuCisjCisKKyMKKyMg
QSB0ZW1wb3JhcnkgLSBhIHZhcmlhYmxlIHRoYXQgd2lsbCBiZSBhbGxvY2F0ZWQgdG8gYSByZWdp
c3RlciBhZnRlciB3ZSdyZQorIyBkb25lLgorIworCitjbGFzcyBOb2RlCisgIGRlZiByZXBsYWNl
VGVtcG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAg
fCBub2RlIHwKKyAgICAgIG5vZGUucmVwbGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lzdGVycyhraW5k
KQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVG1wIDwgTm9DaGlsZHJlbgorICBhdHRyX3Jl
YWRlciA6Zmlyc3RNZW50aW9uLCA6bGFzdE1lbnRpb24KKyAgYXR0cl9yZWFkZXIgOmtpbmQKKyAg
YXR0cl9hY2Nlc3NvciA6cmVnaXN0ZXIKKworICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBr
aW5kKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGtpbmQgPSBraW5kCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICAiJHRtcCN7b2JqZWN0X2lkfSIKKyAgZW5kCisgIAorICBkZWYgbWVu
dGlvbiEocG9zaXRpb24pCisgICAgaWYgbm90IEBmaXJzdE1lbnRpb24gb3IgcG9zaXRpb24gPCBA
Zmlyc3RNZW50aW9uCisgICAgICBAZmlyc3RNZW50aW9uID0gcG9zaXRpb24KKyAgICBlbmQKKyAg
ICBpZiBub3QgQGxhc3RNZW50aW9uIG9yIHBvc2l0aW9uID4gQGxhc3RNZW50aW9uCisgICAgICBA
bGFzdE1lbnRpb24gPSBwb3NpdGlvbgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiByZXBsYWNl
VGVtcG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgaWYgQGtpbmQgPT0ga2luZAorICAg
ICAgcmFpc2UgIkRpZCBub3QgYWxsb2NhdGUgcmVnaXN0ZXIgdG8gdGVtcG9yYXJ5IGF0ICN7Y29k
ZU9yaWdpblN0cmluZ30iIHVubGVzcyBAcmVnaXN0ZXIKKyAgICAgIEByZWdpc3RlcgorICAgIGVs
c2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBm
YWxzZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRl
ZiBpbW1lZGlhdGU/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAg
dHJ1ZQorICBlbmQKK2VuZAorCisjIEFzc2lnbiByZWdpc3RlcnMgdG8gdGVtcG9yYXJpZXMsIGJ5
IGZpbmRpbmcgd2hpY2ggdGVtcG9yYXJpZXMgaW50ZXJmZXJlCisjIHdpdGggZWFjaCBvdGhlci4g
Tm90ZSB0aGF0IHRoaXMgcmVsaWVzIG9uIHRlbXBvcmFyeSBsaXZlIHJhbmdlcyBub3QgY3Jvc3Np
bmcKKyMgYmFzaWMgYmxvY2sgYm91bmRhcmllcy4KKworZGVmIGFzc2lnblJlZ2lzdGVyc1RvVGVt
cG9yYXJpZXMobGlzdCwga2luZCwgcmVnaXN0ZXJzKQorICBsaXN0LmVhY2hfd2l0aF9pbmRleCB7
CisgICAgfCBub2RlLCBpbmRleCB8CisgICAgbm9kZS5maWx0ZXIoVG1wKS51bmlxLmVhY2ggewor
ICAgICAgfCB0bXAgfAorICAgICAgaWYgdG1wLmtpbmQgPT0ga2luZAorICAgICAgICB0bXAubWVu
dGlvbiEgaW5kZXgKKyAgICAgIGVuZAorICAgIH0KKyAgfQorICAKKyAgZnJlZVJlZ2lzdGVycyA9
IHJlZ2lzdGVycy5kdXAKKyAgbGlzdC5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgbm9kZSwgaW5k
ZXggfAorICAgIHRtcExpc3QgPSBub2RlLmZpbHRlcihUbXApLnVuaXEKKyAgICB0bXBMaXN0LmVh
Y2ggeworICAgICAgfCB0bXAgfAorICAgICAgaWYgdG1wLmtpbmQgPT0ga2luZCBhbmQgdG1wLmZp
cnN0TWVudGlvbiA9PSBpbmRleAorICAgICAgICByYWlzZSAiQ291bGQgbm90IGFsbG9jYXRlIHJl
Z2lzdGVyIHRvIHRlbXBvcmFyeSBhdCAje25vZGUuY29kZU9yaWdpblN0cmluZ30iIGlmIGZyZWVS
ZWdpc3RlcnMuZW1wdHk/CisgICAgICAgIHRtcC5yZWdpc3RlciA9IGZyZWVSZWdpc3RlcnMucG9w
CisgICAgICBlbmQKKyAgICB9CisgICAgdG1wTGlzdC5lYWNoIHsKKyAgICAgIHwgdG1wIHwKKyAg
ICAgIGlmIHRtcC5raW5kID09IGtpbmQgYW5kIHRtcC5sYXN0TWVudGlvbiA9PSBpbmRleAorICAg
ICAgICBmcmVlUmVnaXN0ZXJzLnB1c2ggdG1wLnJlZ2lzdGVyCisgICAgICAgIHJhaXNlICJSZWdp
c3RlciBhbGxvY2F0aW9uIGluY29uc2lzdGVuY3kgYXQgI3tub2RlLmNvZGVPcmlnaW5TdHJpbmd9
IiBpZiBmcmVlUmVnaXN0ZXJzLnNpemUgPiByZWdpc3RlcnMuc2l6ZQorICAgICAgZW5kCisgICAg
fQorICB9CisgIAorICBsaXN0Lm1hcCB7CisgICAgfCBub2RlIHwKKyAgICBub2RlLnJlcGxhY2VU
ZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkKKyAgfQorZW5kCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTg1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1
aXJlICJhc3QiCityZXF1aXJlICJpbnN0cnVjdGlvbnMiCityZXF1aXJlICJyZWdpc3RlcnMiCisK
K2NsYXNzIFRva2VuCisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luLCA6c3RyaW5nCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJpbmcpCisgICAgQGNvZGVPcmlnaW4gPSBjb2Rl
T3JpZ2luCisgICAgQHN0cmluZyA9IHN0cmluZworICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikK
KyAgICBpZiBvdGhlci5pc19hPyBUb2tlbgorICAgICAgQHN0cmluZyA9PSBvdGhlci5zdHJpbmcK
KyAgICBlbHNlCisgICAgICBAc3RyaW5nID09IG90aGVyCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmID1+KG90aGVyKQorICAgIEBzdHJpbmcgPX4gb3RoZXIKKyAgZW5kCisgIAorICBkZWYgdG9f
cworICAgICIje0BzdHJpbmcuaW5zcGVjdH0gYXQgbGluZSAje2NvZGVPcmlnaW59IgorICBlbmQK
KyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIGNvbW1lbnQuZW1wdHk/Cisg
ICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc30iCisgICAgZWxzZQorICAgICAgcmFpc2Ug
IlBhcnNlIGVycm9yOiAje3RvX3N9OiAje2NvbW1lbnRbMF19IgorICAgIGVuZAorICBlbmQKK2Vu
ZAorCisjCisjIFRoZSBsZXhlci4gVGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYW4gYXJyYXkg
b2YgdG9rZW5zLgorIworCitkZWYgbGV4KHN0cikKKyAgcmVzdWx0ID0gW10KKyAgbGluZU51bWJl
ciA9IDEKKyAgd2hpbGUgbm90IHN0ci5lbXB0eT8KKyAgICBjYXNlIHN0cgorICAgIHdoZW4gL1xB
XCMoW15cbl0qKS8KKyAgICAgICMgY29tbWVudCwgaWdub3JlCisgICAgd2hlbiAvXEFcbi8KKyAg
ICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICBsaW5lTnVtYmVy
ICs9IDEKKyAgICB3aGVuIC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0
IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVwuKFthLXpBLVowLTlf
XSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVu
IC9cQV8oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1i
ZXIsICQmKQorICAgIHdoZW4gL1xBKFsgXHRdKykvCisgICAgICAjIHdoaXRlc3BhY2UsIGlnbm9y
ZQorICAgIHdoZW4gL1xBMHgoWzAtOWEtZkEtRl0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5u
ZXcobGluZU51bWJlciwgJCYuaGV4LnRvX3MpCisgICAgd2hlbiAvXEEwKFswLTddKykvCisgICAg
ICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLm9jdC50b19zKQorICAgIHdoZW4g
L1xBKFswLTldKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQor
ICAgIHdoZW4gL1xBOjovCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQm
KQorICAgIHdoZW4gL1xBWzosXChcKVxbXF09XCtcLSpdLworICAgICAgcmVzdWx0IDw8IFRva2Vu
Lm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICBlbHNlCisgICAgICByYWlzZSAiTGV4ZXIgZXJyb3Ig
YXQgbGluZSBudW1iZXIgI3tsaW5lTnVtYmVyfSwgdW5leHBlY3RlZCBzZXF1ZW5jZSAje3N0clsw
Li4yMF0uaW5zcGVjdH0iCisgICAgZW5kCisgICAgc3RyID0gJH4ucG9zdF9tYXRjaAorICBlbmQK
KyAgcmVzdWx0CitlbmQKKworIworIyBUb2tlbiBpZGVudGlmaWNhdGlvbi4KKyMKKworZGVmIGlz
UmVnaXN0ZXIodG9rZW4pCisgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4KK2VuZAorCitkZWYg
aXNJbnN0cnVjdGlvbih0b2tlbikKKyAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5k
CisKK2RlZiBpc0tleXdvcmQodG9rZW4pCisgIHRva2VuID1+IC9cQSgodHJ1ZSl8KGZhbHNlKXwo
aWYpfCh0aGVuKXwoZWxzZSl8KGVsc2lmKXwoZW5kKXwoYW5kKXwob3IpfChub3QpfChtYWNybyl8
KGNvbnN0KXwoc2l6ZW9mKXwoZXJyb3IpKVxaLyBvcgorICAgIHRva2VuID1+IFJFR0lTVEVSX1BB
VFRFUk4gb3IKKyAgICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlz
SWRlbnRpZmllcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKilc
Wi8gYW5kIG5vdCBpc0tleXdvcmQodG9rZW4pCitlbmQKKworZGVmIGlzTGFiZWwodG9rZW4pCisg
IHRva2VuID1+IC9cQV8oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNMb2NhbExhYmVs
KHRva2VuKQorICB0b2tlbiA9fiAvXEFcLihbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBp
c1ZhcmlhYmxlKHRva2VuKQorICBpc0lkZW50aWZpZXIodG9rZW4pIG9yIGlzUmVnaXN0ZXIodG9r
ZW4pCitlbmQKKworZGVmIGlzSW50ZWdlcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBWzAtOV0vCitl
bmQKKworIworIyBUaGUgcGFyc2VyLiBUYWtlcyBhbiBhcnJheSBvZiB0b2tlbnMgYW5kIHJldHVy
bnMgYW4gQVNULiBNZXRob2RzCisjIG90aGVyIHRoYW4gcGFyc2UodG9rZW5zKSBhcmUgbm90IGZv
ciBwdWJsaWMgY29uc3VtcHRpb24uCisjCisKK2NsYXNzIFBhcnNlcgorICBkZWYgaW5pdGlhbGl6
ZSh0b2tlbnMpCisgICAgQHRva2VucyA9IHRva2VucworICAgIEBpZHggPSAwCisgIGVuZAorICAK
KyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgQHRva2Vuc1tAaWR4XQorICAgICAg
QHRva2Vuc1tAaWR4XS5wYXJzZUVycm9yKCpjb21tZW50KQorICAgIGVsc2UKKyAgICAgIGlmIGNv
bW1lbnQuZW1wdHk/CisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZSIK
KyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlOiAj
e2NvbW1lbnRbMF19IgorICAgICAgZW5kCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGNvbnN1
bWUocmVnZXhwKQorICAgIGlmIHJlZ2V4cAorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vu
c1tAaWR4XSA9fiByZWdleHAKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAaWR4
ID09IEB0b2tlbnMubGVuZ3RoCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgIGVuZAorICAKKyAg
ZGVmIHNraXBOZXdMaW5lCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICBA
aWR4ICs9IDEKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBdG9tCisg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibm90IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJz
ZVByZWRpY2F0ZUF0b20KKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlk
eCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGUK
KyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInRydWUiCisg
ICAgICByZXN1bHQgPSBUcnVlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3Vs
dAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImZhbHNlIgorICAgICAgcmVzdWx0ID0gRmFs
c2UuaW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJ
ZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IFNldHRpbmcuZm9yTmFtZShA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgQGlk
eCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5k
CisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQW5kCisgICAgcmVzdWx0ID0gcGFyc2VQ
cmVkaWNhdGVBdG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiYW5kIgorICAgICAgY29k
ZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAg
ICBza2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgIHJl
c3VsdCA9IEFuZC5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICBy
ZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGUKKyAgICAjIHNvbWUgZXhhbXBs
ZXMgb2YgcHJlY2VkZW5jZToKKyAgICAjIG5vdCBhIGFuZCBiIC0+IChub3QgYSkgYW5kIGIKKyAg
ICAjIGEgYW5kIGIgb3IgYyAtPiAoYSBhbmQgYikgb3IgYworICAgICMgYSBvciBiIGFuZCBjIC0+
IGEgb3IgKGIgYW5kIGMpCisgICAgCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAg
ICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJvciIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAg
ICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICAgIHJlc3VsdCA9IE9yLm5ldyhjb2Rl
T3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisg
IGRlZiBwYXJzZVZhcmlhYmxlCisgICAgaWYgaXNSZWdpc3RlcihAdG9rZW5zW0BpZHhdKQorICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9fiBGUFJfUEFUVEVSTgorICAgICAgICByZXN1bHQgPSBGUFJl
Z2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0u
c3RyaW5nKQorICAgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBSZWdpc3RlcklELmZvck5hbWUo
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVu
ZAorICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgcmVzdWx0ID0g
VmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0u
c3RyaW5nKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgICBAaWR4ICs9
IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VBZGRyZXNzKG9mZnNldCkKKyAg
ICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgIGNvZGVPcmlnaW4g
PSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAKKyAgICAjIFRocmVlIHBvc3NpYmlsaXRp
ZXM6CisgICAgIyBbXSAgICAgICAtPiBBYnNvbHV0ZUFkZHJlc3MKKyAgICAjIFthXSAgICAgIC0+
IEFkZHJlc3MKKyAgICAjIFthLGJdICAgIC0+IEJhc2VJbmRleCB3aXRoIHNjYWxlID0gMQorICAg
ICMgW2EsYixjXSAgLT4gQmFzZUluZGV4CisgICAgCisgICAgQGlkeCArPSAxCisgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmV0dXJuIEFic29sdXRl
QWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0KQorICAgIGVuZAorICAgIGEgPSBwYXJzZVZh
cmlhYmxlCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIHJlc3VsdCA9IEFkZHJl
c3MubmV3KGNvZGVPcmlnaW4sIGEsIG9mZnNldCkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9y
IHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgQGlkeCArPSAxCisgICAgICBiID0g
cGFyc2VWYXJpYWJsZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVz
dWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCAxLCBvZmZzZXQpCisgICAgICBl
bHNlCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBbIjEiLCAiMiIsICI0Iiwg
IjgiXS5tZW1iZXI/IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIGMgPSBAdG9rZW5zW0Bp
ZHhdLnN0cmluZy50b19pCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVu
bGVzcyBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3
KGNvZGVPcmlnaW4sIGEsIGIsIGMsIG9mZnNldCkKKyAgICAgIGVuZAorICAgIGVuZAorICAgIEBp
ZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUNvbG9uQ29sb24KKyAg
ICBza2lwTmV3TGluZQorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4K
KyAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgIG5h
bWVzID0gW0B0b2tlbnNbQGlkeF0uc3RyaW5nXQorICAgIEBpZHggKz0gMQorICAgIHdoaWxlIEB0
b2tlbnNbQGlkeF0gPT0gIjo6IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZUVycm9yIHVu
bGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgbmFtZXMgPDwgQHRva2Vuc1tA
aWR4XS5zdHJpbmcKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICAgIHJhaXNlIGlmIG5hbWVz
LmVtcHR5PworICAgIFtjb2RlT3JpZ2luLCBuYW1lc10KKyAgZW5kCisgIAorICBkZWYgcGFyc2VF
eHByZXNzaW9uQXRvbQorICAgIHNraXBOZXdMaW5lCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
LSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgTmVnSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHgg
LSAxXS5jb2RlT3JpZ2luLCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVz
c2lvbgorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAg
IEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJbnRlZ2VyIEB0b2tlbnNbQGlk
eF0KKyAgICAgIHJlc3VsdCA9IEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1
bHQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgY29kZU9yaWdp
biwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIGlmIG5hbWVzLnNpemUgPiAxCisgICAg
ICAgIFN0cnVjdE9mZnNldC5mb3JGaWVsZChjb2RlT3JpZ2luLCBuYW1lc1swLi4tMl0uam9pbign
OjonKSwgbmFtZXNbLTFdKQorICAgICAgZWxzZQorICAgICAgICBWYXJpYWJsZS5mb3JOYW1lKGNv
ZGVPcmlnaW4sIG5hbWVzWzBdKQorICAgICAgZW5kCisgICAgZWxzaWYgaXNSZWdpc3RlciBAdG9r
ZW5zW0BpZHhdCisgICAgICBwYXJzZVZhcmlhYmxlCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9
PSAic2l6ZW9mIgorICAgICAgQGlkeCArPSAxCisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBh
cnNlQ29sb25Db2xvbgorICAgICAgU2l6ZW9mLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXMuam9p
bignOjonKSkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIHBhcnNlRXhwcmVzc2lvbk11bAorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0g
cGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVz
dWx0ID0gTXVsSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVz
dWx0LCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAg
ICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIGNvdWxkQmVFeHBy
ZXNzaW9uCisgICAgQHRva2Vuc1tAaWR4XSA9PSAiLSIgb3IgQHRva2Vuc1tAaWR4XSA9PSAic2l6
ZW9mIiBvciBpc0ludGVnZXIoQHRva2Vuc1tAaWR4XSkgb3IgaXNWYXJpYWJsZShAdG9rZW5zW0Bp
ZHhdKSBvciBAdG9rZW5zW0BpZHhdID09ICIoIgorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJl
c3Npb24KKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbk11bAor
ICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisg
ICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
cmVzdWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwg
cmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICItIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gU3ViSW1tZWRpYXRlcy5u
ZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25N
dWwpCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBy
ZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1lbnQpCisgICAgaWYgY291
bGRCZUV4cHJlc3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIGlmIEB0
b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRkcmVzcyhleHByKQorICAgICAgZWxz
ZQorICAgICAgICBleHByCisgICAgICBlbmQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJb
IgorICAgICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luLCAwKSkKKyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9
IExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExhYmVsLmZvck5h
bWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAg
ICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzTG9jYWxMYWJlbCBAdG9rZW5z
W0BpZHhdCisgICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0
CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50KQorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb25zdW1l
KC9cQVwoXFovKQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAgbG9vcCB7CisgICAgICBza2lwTmV3
TGluZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAg
ICAgICAgdmFyaWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNr
aXBOZXdMaW5lCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAi
LCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJy
b3IKKyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IKKyAgICAgIGVu
ZAorICAgIH0KKyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAorICBkZWYgcGFyc2VTZXF1ZW5jZShm
aW5hbCwgY29tbWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4KKyAgICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAgICAgIGlmIChAaWR4ID09IEB0b2tl
bnMubGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBm
aW5hbCkKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgor
ICAgICAgICAjIGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1
bmxlc3MgaXNWYXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAgICAgIHZhcmlhYmxlID0gVmFyaWFi
bGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5n
KQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tA
aWR4XSA9PSAiPSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhbHVlID0gcGFyc2VPcGVy
YW5kKCJ3aGlsZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5uYW1lfSIpCisgICAgICAgIGxp
c3QgPDwgQ29uc3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2
YWx1ZSkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImVycm9yIgorICAgICAgICBsaXN0
IDw8IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4pCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAgICAgIGNvZGVPcmlnaW4g
PSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNr
aXBOZXdMaW5lCisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgIGNv
bnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAg
aWZUaGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VT
ZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRlIG9mIFwi
aWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBsaXN0IDw8IGlmVGhlbkVsc2UKKyAg
ICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisgICAgICAgICAgY29kZU9yaWdp
biA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAg
ICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgICAgc2tpcE5ld0xp
bmUKKyAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRp
Y2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUg
aW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICAgIGlmVGhlbkVs
c2UuZWxzZUNhc2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlmVGhlbkVsc2UgPSBlbHNlQ2FzZQor
ICAgICAgICBlbmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiZWxzZSIKKyAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gcGFyc2VTZXF1ZW5j
ZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNlIGZvciBcImlmICN7cHJlZGlj
YXRlLmR1bXB9XCIiKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAg
ICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiZW5kIgorICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3Jv
IgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwYXJzZUVycm9yIHVubGVz
cyBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlk
eF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1h
Y3JvVmFyaWFibGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndo
aWxlIGluc2lkZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAg
IGxpc3QgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAg
ICAgIGVsc2lmIGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2lu
ID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhd
LnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlk
eCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkK
KyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5kIGl0J3MgdGhlIGxhc3Qg
b25lLgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUs
IFtdKQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxu
IgorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLgorICAgICAgICAgIGxpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBJdCdzIGRlZmluaXRlbHkgYW4gaW5zdHJ1
Y3Rpb24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJhbmQuCisgICAgICAgICAgb3BlcmFu
ZHMgPSBbXQorICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxzZQorICAgICAgICAgIGxvb3Ag
eworICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2Yg
aW5zdHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4
ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQor
ICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uIGFuZCBvZiB0aGUgc2Vx
dWVuY2UuCisgICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSB0cnVlCisgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAg
ICAgICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgICAgICMgVGhl
IGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBwYXJzZUVycm9y
KCJFeHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFsfSBhZnRlciAje29wZXJhbmRz
Lmxhc3QuZHVtcH0iKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgfQorICAgICAgICAgIGxp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAg
ICAgIGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgZW5kCisg
ICAgICAgIGVuZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAg
ICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0g
QHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gIigiCisgICAgICAgICAgIyBNYWNybyBpbnZvY2F0aW9uLgorICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBza2lwTmV3TGlu
ZQorICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgICAgc2tp
cE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAg
ICAgICAgICAgICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQorICAgICAgICAgICAgICAgIGNvZGVP
cmlnaW5Jbm5lciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMK
KyAgICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBp
bnNpZGUgb2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1bWVudCB0byAje25hbWV9IikK
KyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBN
YWNyby5uZXcoY29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlhYmxlcywgYm9keSkKKyAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hp
bGUgaW5zaWRlIG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgIGVuZAor
ICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhd
ID09ICIpIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGJyZWFr
CisgICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZUVy
cm9yICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5zcGVjdH0gd2hpbGUgcGFy
c2luZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgfQorICAgICAgICAgIGVuZAorICAgICAgICAgIGxpc3QgPDwgTWFjcm9DYWxsLm5l
dyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBh
cnNlRXJyb3IgIkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFtZX0iCisgICAgICAgIGVuZAorICAg
ICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0Bp
ZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAg
ICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI6IgorICAgICAgICAjIEl0J3Mg
YSBsYWJlbC4KKyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAgICAgbGlzdCA8PCBMYWJl
bC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVsc2UKKyAgICAgICAgICBsaXN0
IDw8IExvY2FsTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbmQKKyAg
ICAgICAgQGlkeCArPSAxCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgIkV4cGVjdGlu
ZyB0ZXJtaW5hbCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAgICAgZW5kCisgICAgfQorICAgIFNl
cXVlbmNlLm5ldyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisgIGVuZAorZW5kCisKK2RlZiBwYXJz
ZSh0b2tlbnMpCisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9rZW5zKQorICBwYXJzZXIucGFyc2VT
ZXF1ZW5jZShuaWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3JlZ2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK0dQUlMgPQorICBbCisg
ICAidDAiLAorICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMiLAorICAgInQ0IiwKKyAgICJjZnIi
LAorICAgImEwIiwKKyAgICJhMSIsCisgICAicjAiLAorICAgInIxIiwKKyAgICJzcCIsCisgICAi
bHIiCisgIF0KKworRlBSUyA9CisgIFsKKyAgICJmdDAiLAorICAgImZ0MSIsCisgICAiZnQyIiwK
KyAgICJmdDMiLAorICAgImZ0NCIsCisgICAiZnQ1IiwKKyAgICJmYTAiLAorICAgImZhMSIsCisg
ICAiZmEyIiwKKyAgICJmYTMiLAorICAgImZyIgorICBdCisKK1JFR0lTVEVSUyA9IEdQUlMgKyBG
UFJTCisKK0dQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgR1BSUy5qb2luKCcpfCgn
KSArICcpKVxcWicpCitGUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMuam9p
bignKXwoJykgKyAnKSlcXFonKQorCitSRUdJU1RFUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxB
KCgnICsgUkVHSVNURVJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZWxmX2hhc2gucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZWxmX2hhc2gucmIJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K3JlcXVpcmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAicGF0aG5hbWUiCisKKyMKKyMgc2VsZkhh
c2ggLT4gU0hBMSBoZXhkaWdlc3QKKyMKKyMgUmV0dXJucyBhIGhhc2ggb2YgdGhlIG9mZmxpbmVh
c20gc291cmNlIGNvZGUuIFRoaXMgYWxsb3dzIGRlcGVuZGVuY3kKKyMgdHJhY2tpbmcgZm9yIG5v
dCBqdXN0IGNoYW5nZXMgaW4gaW5wdXQsIGJ1dCBhbHNvIGNoYW5nZXMgaW4gdGhlIGFzc2VtYmxl
cgorIyBpdHNlbGYuCisjCisKK2RlZiBzZWxmSGFzaAorICBjb250ZW50cyA9ICIiCisgIG15UGF0
aCA9IFBhdGhuYW1lLm5ldyhfX0ZJTEVfXykuZGlybmFtZQorICBEaXIuZm9yZWFjaChteVBhdGgp
IHsKKyAgICB8IGVudHJ5IHwKKyAgICBpZiBlbnRyeSA9fiAvXC5yYiQvCisgICAgICBjb250ZW50
cyArPSBJTzo6cmVhZChteVBhdGggKyBlbnRyeSkKKyAgICBlbmQKKyAgfQorICByZXR1cm4gRGln
ZXN0OjpTSEExLmhleGRpZ2VzdChjb250ZW50cykKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDIwNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVx
dWlyZSAiYXN0IgorcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJl
ICJ0cmFuc2Zvcm0iCisKKyMKKyMgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgLT4g
c2V0dGluZ3NDb21iaWF0aW9ucworIworIyBDb21wdXRlcyBhbiBhcnJheSBvZiBzZXR0aW5ncyBt
YXBzLCB3aGVyZSBhIHNldHRpbmdzIG1hcCBjb25zdGl0dXRlcworIyBhIGNvbmZpZ3VyYXRpb24g
Zm9yIHRoZSBhc3NlbWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIG1hcAorIyBjb250YWlu
cyBrZXkgdmFsdWUgcGFpcnMgd2hlcmUga2V5cyBhcmUgc2V0dGluZ3MgbmFtZXMgKHN0cmluZ3Mp
IGFuZAorIyB0aGUgdmFsdWVzIGFyZSBib29sZWFucyAodHJ1ZSBmb3IgZW5hYmxlZCwgZmFsc2Ug
Zm9yIGRpc2FibGVkKS4KKyMKKworZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3Qp
CisgIHNldHRpbmdzQ29tYmluYXRpb25zID0gW10KKyAgCisgIGRlZiBzZXR0aW5nc0NvbWJpbmF0
b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG1hcFNvRmFyLCByZW1haW5pbmcpCisgICAgaWYgcmVt
YWluaW5nLmVtcHR5PworICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFwU29GYXIKKyAg
ICAgIHJldHVybgorICAgIGVuZAorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAg
IG5ld01hcFtyZW1haW5pbmdbMF1dID0gdHJ1ZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0
aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICAgIAorICAgIG5l
d01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gZmFsc2UKKyAg
ICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWlu
aW5nWzEuLi0xXSkKKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21i
aW5hdGlvbnMsIHt9LCAoYXN0LmZpbHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7fHZ8IHYubmFt
ZX0gKyBbIlg4NiIsICJBUk12NyJdKS51bmlxKQorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMK
K2VuZAorCisjCisjIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgeworIyAgICAg
fCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8IC4uLiB9CisjCisjIERl
dGVybWluZXMgaWYgdGhlIHNldHRpbmdzIGNvbWJpbmF0aW9uIGlzIHZhbGlkLCBhbmQgaWYgc28s
IGNhbGxzCisjIHRoZSBibG9jayB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgbmVlZCB0byBnZW5l
cmF0ZSBjb2RlLgorIworCitkZWYgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KQor
ICAjIENoZWNrIHdoaWNoIGFyY2hpdGVjdHVyZXMgdGhpcyBjb21iaW5hdG9yIGNsYWltcyB0byBz
dXBwb3J0LgorICBudW1DbGFpbWVkQmFja2VuZHMgPSAwCisgIHNlbGVjdGVkQmFja2VuZCA9IG5p
bAorICBCQUNLRU5EUy5lYWNoIHsKKyAgICB8IGJhY2tlbmQgfAorICAgIGlzU3VwcG9ydGVkID0g
Y29uY3JldGVTZXR0aW5nc1tiYWNrZW5kXQorICAgIHJhaXNlIHVubGVzcyBpc1N1cHBvcnRlZCAh
PSBuaWwKKyAgICBudW1DbGFpbWVkQmFja2VuZHMgKz0gaWYgaXNTdXBwb3J0ZWQgdGhlbiAxIGVs
c2UgMCBlbmQKKyAgICBpZiBpc1N1cHBvcnRlZAorICAgICAgc2VsZWN0ZWRCYWNrZW5kID0gYmFj
a2VuZAorICAgIGVuZAorICB9CisgIAorICByZXR1cm4gaWYgbnVtQ2xhaW1lZEJhY2tlbmRzID4g
MQorICAKKyAgIyBSZXNvbHZlIHRoZSBBU1QgZG93biB0byBhIGxvdy1sZXZlbCBmb3JtIChubyBt
YWNyb3Mgb3IgY29uZGl0aW9uYWxzKS4KKyAgbG93TGV2ZWxBU1QgPSBhc3QucmVzb2x2ZVNldHRp
bmdzKGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dM
ZXZlbEFTVCwgc2VsZWN0ZWRCYWNrZW5kCitlbmQKKworIworIyBmb3JFYWNoVmFsaWRTZXR0aW5n
c0NvbWJpbmF0aW9uKGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tl
bmQsIGluZGV4IHwgLi4uIH0KKyMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihh
c3QsIHNldHRpbmdzQ29tYmluYXRpb25zKSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFz
dCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBFeGVjdXRlcyB0aGUgZ2l2ZW4gYmxvY2sg
Zm9yIGVhY2ggdmFsaWQgc2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlCisjIHNldHRpbmdzIG1h
cC4gVGhlIGFzdCBwYXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQKKyMgKGFzdC5yZXNv
bHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4KKyMKKyMgVGhlIGZpcnN0IGZvcm0gd2lsbCBjYWxs
IGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIGZvciB5b3UuCisjCisKK2RlZiBmb3JF
YWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgKm9wdGlvbmFsU2V0dGluZ3NDb21iaW5h
dGlvbnMpCisgIHJhaXNlIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEK
KyAgCisgIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuZW1wdHk/CisgICAgc2V0dGlu
Z3NDb21iaW5hdGlvbnMgPSBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBlbHNl
CisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBvcHRpb25hbFNldHRpbmdzQ29tYmlhdGlvbnNb
MF0KKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucy5lYWNoX3dpdGhfaW5kZXggewor
ICAgIHwgY29uY3JldGVTZXR0aW5ncywgaW5kZXggfAorICAgIGZvclNldHRpbmdzKGNvbmNyZXRl
U2V0dGluZ3MsIGFzdCkgeworICAgICAgfCBjb25jcmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1Qs
IGJhY2tlbmQgfAorICAgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJh
Y2tlbmQsIGluZGV4CisgICAgfQorICB9CitlbmQKKworIworIyBjcHBTZXR0aW5nc1Rlc3QoY29u
Y3JldGVTZXR0aW5ncykKKyMKKyMgUmV0dXJucyB0aGUgQysrIGNvZGUgdXNlZCB0byB0ZXN0IGlm
IHdlIGFyZSBpbiBhIGNvbmZpZ3VyYXRpb24gdGhhdAorIyBjb3JyZXNwb25kcyB0byB0aGUgZ2l2
ZW4gY29uY3JldGUgc2V0dGluZ3MuCisjCisKK2RlZiBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVT
ZXR0aW5ncykKKyAgIiNpZiAiICsgY29uY3JldGVTZXR0aW5ncy50b19hLmNvbGxlY3R7CisgICAg
fCBwYWlyIHwKKyAgICAoaWYgcGFpclsxXQorICAgICAgICIiCisgICAgIGVsc2UKKyAgICAgICAi
ISIKKyAgICAgZW5kKSArICJPRkZMSU5FX0FTTV8iICsgcGFpclswXQorICB9LmpvaW4oIiAmJiAi
KQorZW5kCisKKyMKKyMgaXNBU1RFcnJvbmVvdXMoYXN0KQorIworIyBUZXN0cyB0byBzZWUgaWYg
dGhlIEFTVCBjbGFpbXMgdGhhdCB0aGVyZSBpcyBhbiBlcnJvciAtIGkuZS4gaWYgdGhlCisjIHVz
ZXIncyBjb2RlLCBhZnRlciBzZXR0aW5ncyByZXNvbHV0aW9uLCBoYXMgRXJyb3Igbm9kZXMuCisj
CisKK2RlZiBpc0FTVEVycm9uZW91cyhhc3QpCisgIG5vdCBhc3QuZmlsdGVyKEVycm9yKS5lbXB0
eT8KK2VuZAorCisjCisjIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyMK
KyMgRW1pdHMgYSBjaGVjayB0aGF0IGFzc2VydHMgdGhhdCB3ZSdyZSB1c2luZyB0aGUgZ2l2ZW4g
Y29uZmlndXJhdGlvbi4KKyMKKworZGVmIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0
aW5ncykKKyAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQor
ICAkb3V0cHV0LnB1dHMgIiNlbHNlIgorICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIkNvbmZpZ3Vy
YXRpb24gbWlzbWF0Y2guXCIiCisgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMKKyMg
ZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKSB7
CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCB8IC4uLiB9CisjCisjIEVt
aXRzIGFsbCByZWxldmFudCBndWFyZHMgdG8gc2VlIGlmIHRoZSBjb25maWd1cmF0aW9uIGhvbGRz
IGFuZAorIyBjYWxscyB0aGUgYmxvY2sgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGVycm9u
ZW91cy4KKyMKKworZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3Ms
IGFzdCwgYmFja2VuZCkKKyAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNl
dHRpbmdzKQorICAKKyAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAgICRvdXRwdXQucHV0cyAi
I2Vycm9yIFwiSW52YWxpZCBjb25maWd1cmF0aW9uLlwiIgorICBlbHNpZiBub3QgV09SS0lOR19C
QUNLRU5EUy5pbmNsdWRlPyBiYWNrZW5kCisgICAgJG91dHB1dC5wdXRzICIjZXJyb3IgXCJUaGlz
IGJhY2tlbmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UKKyAgICB5aWVsZCBjb25j
cmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICAkb3V0cHV0LnB1dHMgIiNl
bmRpZiIKK2VuZAorCisjCisjIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3QpIHsKKyMg
ICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9CisjCisj
IEVtaXRzIGd1YXJkIGNvZGVzIGZvciBhbGwgdmFsaWQgY29uZmlndXJhdGlvbnMsIGFuZCBjYWxs
cyB0aGUgYmxvY2sKKyMgZm9yIHRob3NlIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHZhbGlkIGFu
ZCBub3QgZXJyb25lb3VzLgorIworCitkZWYgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFz
dCkKKyAgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsKKyAgICB8IGNvbmNy
ZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleCB8CisgICAgJG91dHB1dC5w
dXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAgIHlpZWxkIGNvbmNyZXRl
U2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgICRvdXRwdXQucHV0cyAi
I2VuZGlmIgorICB9CitlbmQKKworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3RyYW5zZm9ybS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQy
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3Qi
CisKKyMKKyMgbm9kZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisjCisjIENvbnN0cnVjdCBh
IG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBJZlRoZW5FbHNlIG5vZGVzIGJ5CisjIHN1
YnN0aXR1dGluZyBjb25jcmV0ZSBib29sZWFuIHZhbHVlcyBmb3IgZWFjaCBTZXR0aW5nLgorIwor
CitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgbWFwQ2hp
bGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlCisgIGRlZiByZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZQorICBk
ZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xh
c3MgU2V0dGluZworICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNldHRpbmdz
W0BuYW1lXS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kCisgIGRlZiByZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFs
dWUgYW5kIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAg
ZW5kCitlbmQKKworY2xhc3MgT3IKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAg
ICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBvciBAcmlnaHQucmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE5v
dAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChub3QgQGNoaWxkLnJlc29s
dmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBJ
ZlRoZW5FbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgaWYgQHByZWRp
Y2F0ZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlCisgICAgICBAdGhlbkNhc2UucmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVsc2UKKyAgICAgIEBlbHNlQ2FzZS5yZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNl
CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgbmV3TGlzdCA9IFtdCisgICAg
QGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaXRlbSA9IGl0ZW0ucmVzb2x2ZVNl
dHRpbmdzKHNldHRpbmdzKQorICAgICAgaWYgaXRlbS5pc19hPyBTZXF1ZW5jZQorICAgICAgICBu
ZXdMaXN0ICs9IGl0ZW0ubGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0K
KyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkK
KyAgZW5kCitlbmQKKworIworIyBub2RlLmRlbWFjcm9pZnkobWFjcm9zKQorIyBub2RlLnN1YnN0
aXR1dGUobWFwcGluZykKKyMKKyMgZGVtYWNyb2lmeSgpIGNvbnN0cnVjdHMgYSBuZXcgQVNUIHRo
YXQgZG9lcyBub3QgaGF2ZSBhbnkgTWFjcm8KKyMgbm9kZXMsIHdoaWxlIHN1YnN0aXR1dGUoKSBy
ZXBsYWNlcyBWYXJpYWJsZSBub2RlcyB3aXRoIHRoZSBnaXZlbgorIyBub2RlcyBpbiB0aGUgbWFw
cGluZy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbWFw
Q2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5kZW1hY3JvaWZ5KG1hY3Jv
cykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBtYXBD
aGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobWFwcGlu
ZykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAg
ICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGVM
YWJlbHMobWFwcGluZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvCisgIGRlZiBz
dWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbXlNYXBwaW5nID0ge30KKyAgICBtYXBwaW5nLmVhY2hf
cGFpciB7CisgICAgICB8IGtleSwgdmFsdWUgfAorICAgICAgdW5sZXNzIEB2YXJpYWJsZXMuaW5j
bHVkZT8ga2V5CisgICAgICAgIG15TWFwcGluZ1trZXldID0gdmFsdWUKKyAgICAgIGVuZAorICAg
IH0KKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0
aXR1dGUobXlNYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUKKyAg
ZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBw
aW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitj
bGFzcyBMb2NhbExhYmVsCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgaWYg
bWFwcGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNlbGYK
KyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHN1YnN0aXR1dGUo
Y29uc3RhbnRzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIG15Q29uc3RhbnRzID0gY29uc3RhbnRz
LmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNf
YT8gQ29uc3REZWNsCisgICAgICAgIG15Q29uc3RhbnRzW2l0ZW0udmFyaWFibGVdID0gaXRlbS52
YWx1ZS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0
IDw8IGl0ZW0uc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgIGVuZAorICAgIH0KKyAgICBT
ZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5kCisgIAorICBkZWYgcmVuYW1l
TGFiZWxzKGNvbW1lbnQpCisgICAgbWFwcGluZyA9IHt9CisgICAgCisgICAgQGxpc3QuZWFjaCB7
CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBMb2NhbExhYmVsCisgICAgICAg
IG1hcHBpbmdbaXRlbV0gPSBMb2NhbExhYmVsLnVuaXF1ZShpZiBjb21tZW50IHRoZW4gY29tbWVu
dCArICJfIiBlbHNlICIiIGVuZCArIGl0ZW0uY2xlYW5OYW1lKQorICAgICAgZW5kCisgICAgfQor
ICAgIAorICAgIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgZW5kCisgIAorICBkZWYgZGVt
YWNyb2lmeShtYWNyb3MpCisgICAgbXlNYWNyb3MgPSBtYWNyb3MuZHVwCisgICAgQGxpc3QuZWFj
aCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICBt
eU1hY3Jvc1tpdGVtLm5hbWVdID0gaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3Qg
PSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNf
YT8gTWFjcm8KKyAgICAgICAgIyBJZ25vcmUuCisgICAgICBlbHNpZiBpdGVtLmlzX2E/IE1hY3Jv
Q2FsbAorICAgICAgICBtYXBwaW5nID0ge30KKyAgICAgICAgbXlNeU1hY3JvcyA9IG15TWFjcm9z
LmR1cAorICAgICAgICByYWlzZSAiQ291bGQgbm90IGZpbmQgbWFjcm8gI3tpdGVtLm5hbWV9IGF0
ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG15TWFjcm9zW2l0ZW0ubmFtZV0KKyAg
ICAgICAgcmFpc2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxsIHRvICN7aXRlbS5u
YW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVtLm9wZXJhbmRzLnNp
emUgPT0gbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQorICAgICAgICBpdGVtLm9w
ZXJhbmRzLnNpemUudGltZXMgeworICAgICAgICAgIHwgaWR4IHwKKyAgICAgICAgICBpZiBpdGVt
Lm9wZXJhbmRzW2lkeF0uaXNfYT8gVmFyaWFibGUgYW5kIG15TWFjcm9zW2l0ZW0ub3BlcmFuZHNb
aWR4XS5uYW1lXQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZh
cmlhYmxlc1tpZHhdLm5hbWVdID0gbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisg
ICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFt
ZV0gPSBuaWwKKyAgICAgICAgICBlbHNpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gTWFjcm8K
KyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4
XS5uYW1lXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jv
c1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhd
XSA9IG5pbAorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxl
c1tpZHhdXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgIGVuZAorICAgICAgICB9Cisg
ICAgICAgIG5ld0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5LnN1YnN0aXR1dGUobWFw
cGluZykuZGVtYWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMoaXRlbS5uYW1lKS5saXN0
CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5kZW1hY3JvaWZ5KG15TWFjcm9z
KQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0
KS5zdWJzdGl0dXRlKHt9KQorICBlbmQKK2VuZAorCisjCisjIG5vZGUucmVzb2x2ZU9mZnNldHMo
b2Zmc2V0cywgc2l6ZXMpCisjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBoYXMgb2Zmc2V0
IHZhbHVlcyBpbnN0ZWFkIG9mIHN5bWJvbGljCisjIG9mZnNldHMuCisjCisKK2NsYXNzIE5vZGUK
KyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIG1hcENoaWxkcmVuIHsK
KyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6
ZXMpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXQKKyAgZGVmIHJlc29s
dmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlmIG9mZnNldHNbc2VsZl0KKyAgICAgIElt
bWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0c1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBz
ZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZgorICBkZWYgcmVzb2x2ZU9m
ZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgc2l6ZXNbc2VsZl0KKyAgICAgIEltbWVkaWF0
ZS5uZXcoY29kZU9yaWdpbiwgc2l6ZXNbc2VsZl0pCisgICAgZWxzZQorICAgICAgcHV0cyAiQ291
bGQgbm90IGZpbmQgI3tzZWxmLmluc3BlY3R9IGluICN7c2l6ZXMua2V5cy5pbnNwZWN0fSIKKyAg
ICAgIHB1dHMgInNpemVzID0gI3tzaXplcy5pbnNwZWN0fSIKKyAgICAgIHNlbGYKKyAgICBlbmQK
KyAgZW5kCitlbmQKKworIworIyBub2RlLmZvbGQKKyMKKyMgUmVzb2x2ZSBjb25zdGFudCByZWZl
cmVuY2VzIGFuZCBjb21wdXRlIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMuCisjCisKK2NsYXNzIE5v
ZGUKKyAgZGVmIGZvbGQKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAg
IGNoaWxkLmZvbGQKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMKKyAg
ZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9s
ZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1
cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXco
Y29kZU9yaWdpbiwgQGxlZnQudmFsdWUgKyBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2Ns
YXNzIFN1YkltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAg
ICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19h
PyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0
ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgLSBAcmlnaHQudmFs
dWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBA
bGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBz
ZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3Mg
QHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxl
ZnQudmFsdWUgKiBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0
ZQorICBkZWYgZm9sZAorICAgIEBjaGlsZCA9IEBjaGlsZC5mb2xkCisgICAgcmV0dXJuIHNlbGYg
dW5sZXNzIEBjaGlsZC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmln
aW4sIC1AY2hpbGQudmFsdWUpCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5yZXNvbHZlQWZ0ZXJT
ZXR0aW5ncyhvZmZzZXRzLCBzaXplcykKKyMKKyMgQ29tcGlsZSBhc3NlbWJseSBhZ2FpbnN0IGEg
c2V0IG9mIG9mZnNldHMuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmUob2Zmc2V0cywg
c2l6ZXMpCisgICAgZGVtYWNyb2lmeSh7fSkucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMp
LmZvbGQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3g4Ni5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3g4Ni5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2ODEgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIHN1cHBvcnRzOEJp
dE9uWDg2CisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiLCAidDEiLCAi
YTEiLCAicjEiLCAidDIiLCAidDMiCisgICAgICB0cnVlCisgICAgd2hlbiAidDQiLCAiY2ZyIgor
ICAgICAgZmFsc2UKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAi
LCAicjAiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVhbCIK
KyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVheCIKKyAgICAgIHdoZW4gOmludAorICAgICAg
ICAiJWVheCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4g
InQxIiwgImExIiwgInIxIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAg
ICAgICIlZGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZHgiCisgICAgICB3aGVuIDpp
bnQKKyAgICAgICAgIiVlZHgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQK
KyAgICB3aGVuICJ0MiIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAg
ICAiJWNsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWN4IgorICAgICAgd2hlbiA6aW50
CisgICAgICAgICIlZWN4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisg
ICAgd2hlbiAidDMiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAg
IiVibCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVieCIKKyAgICAgIHdoZW4gOmludAor
ICAgICAgICAiJWVieCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAg
IHdoZW4gInQ0IgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIl
c2lsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNpIgorICAgICAgd2hlbiA6aW50Cisg
ICAgICAgICIlZXNpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAg
d2hlbiAiY2ZyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIl
ZGlsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWRpIgorICAgICAgd2hlbiA6aW50Cisg
ICAgICAgICIlZWRpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAg
d2hlbiAic3AiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVz
cGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc3AiCisgICAgICB3aGVuIDppbnQKKyAg
ICAgICAgIiVlc3AiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBl
bHNlCisgICAgICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIFg4NiBhdCAje2NvZGVP
cmlnaW5TdHJpbmd9IgorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQp
CisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lz
dGVySUQKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICByYWlzZSB1bmxlc3Mga2luZCA9PSA6
ZG91YmxlCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZhMCIsICJmciIKKyAgICAg
ICIleG1tMCIKKyAgICB3aGVuICJmdDEiLCAiZmExIgorICAgICAgIiV4bW0xIgorICAgIHdoZW4g
ImZ0MiIsICJmYTIiCisgICAgICAiJXhtbTIiCisgICAgd2hlbiAiZnQzIiwgImZhMyIKKyAgICAg
ICIleG1tMyIKKyAgICB3aGVuICJmdDQiCisgICAgICAiJXhtbTQiCisgICAgd2hlbiAiZnQ1Igor
ICAgICAgIiV4bW01IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQgcmVnaXN0ZXIgI3tuYW1l
fSBmb3IgWDg2IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgIGVuZAorICBkZWYg
eDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAor
ZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIkI3t2
YWx1ZX0iCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiI3t2YWx1ZX0i
CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2Cisg
ICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0
LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0pIgorICBlbmQKKyAgZGVmIHg4NkNhbGxP
cGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitj
bGFzcyBCYXNlSW5kZXgKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQK
KyAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2Uu
eDg2T3BlcmFuZCg6aW50KX0sICN7aW5kZXgueDg2T3BlcmFuZCg6aW50KX0sICN7c2NhbGV9KSIK
KyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nm9wZXJhbmQo
a2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIHN1cHBv
cnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQp
CisgICAgIiN7YWRkcmVzcy52YWx1ZX0iCisgIGVuZAorCisgIGRlZiB4ODZDYWxsT3BlcmFuZChr
aW5kKQorICAgICIqI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxS
ZWZlcmVuY2UKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgYXNtTGFiZWwKKyAgZW5k
CitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2Q2FsbE9wZXJhbmQo
a2luZCkKKyAgICBhc21MYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbgorICBk
ZWYgeDg2T3BlcmFuZHMoKmtpbmRzKQorICAgIHJhaXNlIHVubGVzcyBraW5kcy5zaXplID09IG9w
ZXJhbmRzLnNpemUKKyAgICByZXN1bHQgPSBbXQorICAgIGtpbmRzLnNpemUudGltZXMgeworICAg
ICAgfCBpZHggfAorICAgICAgcmVzdWx0IDw8IG9wZXJhbmRzW2lkeF0ueDg2T3BlcmFuZChraW5k
c1tpZHhdKQorICAgIH0KKyAgICByZXN1bHQuam9pbigiLCAiKQorICBlbmQKKworICBkZWYgeDg2
U3VmZml4KGtpbmQpCisgICAgY2FzZSBraW5kCisgICAgd2hlbiA6Ynl0ZQorICAgICAgImIiCisg
ICAgd2hlbiA6aGFsZgorICAgICAgInciCisgICAgd2hlbiA6aW50CisgICAgICAibCIKKyAgICB3
aGVuIDpkb3VibGUKKyAgICAgICJzZCIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQs
IG51bU9wZXJhbmRzKQorICAgIGlmIG51bU9wZXJhbmRzID09IDMKKyAgICAgIGlmIG9wZXJhbmRz
WzBdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0i
CisgICAgICBlbHNpZiBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1
dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRz
WzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgIm1v
diN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29w
ZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2Rl
fSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJh
bmQoa2luZCl9IgorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICIje29wY29k
ZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3Aob3Bjb2Rl
LCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3Bl
cmFuZHMuc2l6ZSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2hpZnQob3Bjb2RlLCBraW5k
KQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBvciBvcGVyYW5kc1swXSA9PSBS
ZWdpc3RlcklELmZvck5hbWUobmlsLCAidDIiKQorICAgICAgJGFzbS5wdXRzICIje29wY29kZX0g
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZChraW5kKX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJ4Y2hnbCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gJWNs
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgJGFzbS5wdXRzICJ4Y2hn
bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBoYW5kbGVYODZEb3VibGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAg
IGNhc2UgbW9kZQorICAgIHdoZW4gOm5vcm1hbAorICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0iCisgICAgd2hlbiA6cmV2ZXJzZQorICAgICAgJGFzbS5wdXRzICJ1Y29taXNk
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0iCisgICAgZWxzZQorICAgICAgcmFpc2UgbW9kZS5pbnNwZWN0CisgICAg
ZW5kCisgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS5hc21MYWJl
bH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmUob3Bjb2RlU3VmZml4LCBr
aW5kKQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMF0u
dmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1
ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgInRl
c3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAg
ICBlbHNpZiBvcGVyYW5kc1sxXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzFdLnZhbHVl
ID09IDAgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXgg
PT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4
ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxz
ZQorICAgICAgJGFzbS5wdXRzICJjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBl
bmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50QnJhbmNoKGJyYW5jaE9wY29kZSwga2lu
ZCkKKyAgICBoYW5kbGVYODZJbnRDb21wYXJlKGJyYW5jaE9wY29kZVsxLi4tMV0sIGtpbmQpCisg
ICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisg
IGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmQpCisgICAgaWYg
b3BlcmFuZC5zdXBwb3J0czhCaXRPblg4NgorICAgICAgJGFzbS5wdXRzICIje3NldE9wY29kZX0g
I3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSIKKyAgICAgICRhc20ucHV0cyAibW92emJsICN7
b3BlcmFuZC54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDpp
bnQpfSwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiI3tzZXRPcGNvZGV9ICVhbCIKKyAgICAgICRh
c20ucHV0cyAibW92emJsICVhbCwgJWVheCIKKyAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVy
YW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBo
YW5kbGVYODZJbnRDb21wYXJlU2V0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZJbnRD
b21wYXJlKHNldE9wY29kZVszLi4tMV0sIGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29k
ZSwgb3BlcmFuZHNbMl0pCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAg
ICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiAy
CisgICAgICBtYXNrID0gSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtMSkKKyAgICB3aGVuIDMK
KyAgICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJFeHBlY3Rl
ZCAyIG9yIDMgb3BlcmFuZHMsIGJ1dCBnb3QgI3tvcGVyYW5kcy5zaXplfSBhdCAje2NvZGVPcmln
aW5TdHJpbmd9IgorICAgIGVuZAorICAgIAorICAgIGlmIG1hc2suaXNfYT8gSW1tZWRpYXRlIGFu
ZCBtYXNrLnZhbHVlID09IC0xCisgICAgICBpZiB2YWx1ZS5pc19hPyBSZWdpc3RlcklECisgICAg
ICAgICRhc20ucHV0cyAidGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQo
a2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAk
YXNtLnB1dHMgImNtcCN7eDg2U3VmZml4KGtpbmQpfSAkMCwgI3t2YWx1ZS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAidGVzdCN7eDg2U3Vm
Zml4KGtpbmQpfSAje21hc2sueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChr
aW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkJyYW5jaFRlc3QoYnJh
bmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICAkYXNtLnB1dHMg
IiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzLmxhc3QuYXNtTGFiZWx9IgorICBlbmQKKyAgCisg
IGRlZiBoYW5kbGVYODZTZXRUZXN0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0
KGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHMubGFzdCkKKyAgZW5k
CisgIAorICBkZWYgaGFuZGxlWDg2T3BCcmFuY2gob3Bjb2RlLCBicmFuY2hPcGNvZGUsIGtpbmQp
CisgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5z
aXplIC0gMSkKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAgIGp1bXBU
YXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9IG9wZXJh
bmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5kCisgICAg
JGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0LmFzbUxhYmVsfSIKKyAgZW5k
CisgIAorICBkZWYgaGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBp
ZiBvcGVyYW5kcy5zaXplID09IDQgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAg
ICAkYXNtLnB1dHMgIm5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
ICRhc20ucHV0cyAiYWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIGhhbmRsZVg4Nk9wV2l0
aE51bU9wZXJhbmRzKCJzdWIje3g4NlN1ZmZpeChraW5kKX0iLCBraW5kLCBvcGVyYW5kcy5zaXpl
IC0gMSkKKyAgICBlbmQKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAg
IGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9
IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5k
CisgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0LmFzbUxhYmVsfSIK
KyAgZW5kCisgIAorICBkZWYgbG93ZXJYODYKKyAgICAkYXNtLmNvbW1lbnQgY29kZU9yaWdpblN0
cmluZworICAgIGNhc2Ugb3Bjb2RlCisgICAgd2hlbiAiYWRkaSIsICJhZGRwIgorICAgICAgaWYg
b3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAg
ICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFp
c2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgaWYgb3BlcmFu
ZHNbMF0udmFsdWUgPT0gMAorICAgICAgICAgIHVubGVzcyBvcGVyYW5kc1sxXSA9PSBvcGVyYW5k
c1syXQorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAgZW5k
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAkYXNtLnB1dHMgImxlYWwgI3tvcGVyYW5kc1swXS52
YWx1ZX0oI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9
PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVz
cyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVy
YW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAibGVhbCAoI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQp
fSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAg
IHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAk
YXNtLnB1dHMgImFkZGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgICAgIGVuZAor
ICAgICAgZW5kCisgICAgd2hlbiAiYW5kaSIsICJhbmRwIgorICAgICAgaGFuZGxlWDg2T3AoImFu
ZGwiLCA6aW50KQorICAgIHdoZW4gImxzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2Fs
bCIsIDppbnQpCisgICAgd2hlbiAibXVsaSIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBh
bmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICRhc20ucHV0cyAiaW11bGwg
I3t4ODZPcGVyYW5kcyg6aW50LCA6aW50LCA6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgICMg
RklYTUU6IGNvdWxkIGRvIHNvbWUgcGVlcGhvbGUgaW4gY2FzZSB0aGUgbGVmdCBvcGVyYW5kIGlz
IGltbWVkaWF0ZSBhbmQgaXQncworICAgICAgICAjIGEgcG93ZXIgb2YgdHdvLgorICAgICAgICBo
YW5kbGVYODZPcCgiaW11bGwiLCA6aW50KQorICAgICAgZW5kCisgICAgd2hlbiAibmVnaSIKKyAg
ICAgICRhc20ucHV0cyAibmVnbCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJub3Rp
IgorICAgICAgJGFzbS5wdXRzICJub3RsICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4g
Im9yaSIsICJvcnAiCisgICAgICBoYW5kbGVYODZPcCgib3JsIiwgOmludCkKKyAgICB3aGVuICJy
c2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNhcmwiLCA6aW50KQorICAgIHdoZW4gInVy
c2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNocmwiLCA6aW50KQorICAgIHdoZW4gInN1
YmkiLCAic3VicCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMV0g
PT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJuZWdsICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgICAgICRhc20ucHV0cyAiYWRkbCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
ZWxzZQorICAgICAgICBoYW5kbGVYODZPcCgic3VibCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3
aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICBoYW5kbGVYODZPcCgieG9ybCIsIDppbnQpCisgICAg
d2hlbiAibG9hZGkiLCAic3RvcmVpIiwgImxvYWRwIiwgInN0b3JlcCIKKyAgICAgICRhc20ucHV0
cyAibW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICB3aGVuICJsb2FkYiIKKyAg
ICAgICRhc20ucHV0cyAibW92emJsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImxvYWRicyIKKyAgICAg
ICRhc20ucHV0cyAibW92c2JsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImxvYWRoIgorICAgICAgJGFz
bS5wdXRzICJtb3Z6d2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpoYWxmKX0sICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGhzIgorICAgICAgJGFzbS5w
dXRzICJtb3Zzd2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpoYWxmKX0sICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAic3RvcmViIgorICAgICAgJGFzbS5wdXRz
ICJtb3ZiICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0iCisgICAgd2hlbiAibG9hZGQiLCAi
bW92ZWQiLCAic3RvcmVkIgorICAgICAgJGFzbS5wdXRzICJtb3ZzZCAje3g4Nk9wZXJhbmRzKDpk
b3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJhZGRkIgorICAgICAgJGFzbS5wdXRzICJhZGRz
ZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJkaXZkIgorICAg
ICAgJGFzbS5wdXRzICJkaXZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAg
ICB3aGVuICJzdWJkIgorICAgICAgJGFzbS5wdXRzICJzdWJzZCAje3g4Nk9wZXJhbmRzKDpkb3Vi
bGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJtdWxkIgorICAgICAgJGFzbS5wdXRzICJtdWxzZCAj
e3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJzcXJ0ZCIKKyAgICAg
ICRhc20ucHV0cyAic3FydHNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiY2kyZCIKKyAgICAg
ICRhc20ucHV0cyAiY3Z0c2kyc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJiZGVxIgorICAgICAg
aXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRlcSIpCisgICAgICAkYXNtLnB1dHMg
InVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAianAgI3tMYWJlbFJlZmVy
ZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICRhc20u
cHV0cyAiamUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgb3BlcmFuZHNbMl0pLmFz
bUxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkbmVx
IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqbmUiLCA6bm9ybWFsKQorICAgIHdoZW4g
ImJkZ3QiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphIiwgOm5vcm1hbCkKKyAgICB3
aGVuICJiZGd0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIsIDpub3JtYWwp
CisgICAgd2hlbiAiYmRsdCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6cmV2
ZXJzZSkKKyAgICB3aGVuICJiZGx0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImph
ZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJy
YW5jaCgiamUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbmVxdW4iCisgICAgICBpc1Vub3JkZXJl
ZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgIGlzRXF1YWwgPSBMb2NhbExh
YmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSIKKyAgICAgICRhc20ucHV0cyAianAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdp
biwgaXNVbm9yZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiamUgI3tMYWJlbFJl
ZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNFcXVhbCkuYXNtTGFiZWx9IgorICAgICAgaXNVbm9y
ZGVyZWQubG93ZXIoIlg4NiIpCisgICAgICAkYXNtLnB1dHMgImptcCAje29wZXJhbmRzWzJdLmFz
bUxhYmVsfSIKKyAgICAgIGlzRXF1YWwubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRndHVuIgor
ICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJk
Z3RlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6cmV2ZXJzZSkKKyAg
ICB3aGVuICJiZGx0dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOm5vcm1h
bCkKKyAgICB3aGVuICJiZGx0ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamJl
IiwgOm5vcm1hbCkKKyAgICB3aGVuICJidGQyaSIKKyAgICAgICRhc20ucHV0cyAiY3Z0dHNkMnNp
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgImNtcGwgJDB4ODAwMDAwMDAgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiamUgI3tvcGVyYW5kc1sy
XS5hc21MYWJlbH0iCisgICAgd2hlbiAidGQyaSIKKyAgICAgICRhc20ucHV0cyAiY3Z0dHNkMnNp
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgd2hlbiAiYmNkMmkiCisgICAgICAkYXNtLnB1dHMgImN2dHRzZDJz
aSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJ0ZXN0bCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFz
bS5wdXRzICJqZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiY3Z0
c2kyc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNt
LnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTci
CisgICAgICAkYXNtLnB1dHMgImpwICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgJGFz
bS5wdXRzICJqbmUgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAibW92ZHoiCisg
ICAgICAkYXNtLnB1dHMgInhvcnBkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0s
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAicG9wIgorICAg
ICAgJGFzbS5wdXRzICJwb3AgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3
aGVuICJwdXNoIgorICAgICAgJGFzbS5wdXRzICJwdXNoICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6eGkycCIKKyAgICAgIGlmIElt
bWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXSBhbmQgb3BlcmFuZHNbMV0uaXNfYT8g
UmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgInhvcmwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2lm
IG9wZXJhbmRzWzBdICE9IG9wZXJhbmRzWzFdCisgICAgICAgICRhc20ucHV0cyAibW92bCAje3g4
Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgIGVuZAorICAgIHdoZW4gIm5vcCIKKyAgICAg
ICRhc20ucHV0cyAibm9wIgorICAgIHdoZW4gImJpZXEiLCAiYnBlcSIKKyAgICAgIGhhbmRsZVg4
NkludEJyYW5jaCgiamUiLCA6aW50KQorICAgIHdoZW4gImJpbmVxIiwgImJwbmVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6aW50KQorICAgIHdoZW4gImJpYSIsICJicGEiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphIiwgOmludCkKKyAgICB3aGVuICJiaWFlcSIsICJi
cGFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmludCkKKyAgICB3aGVuICJi
aWIiLCAiYnBiIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDppbnQpCisgICAgd2hl
biAiYmliZXEiLCAiYnBiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDppbnQp
CisgICAgd2hlbiAiYmlndCIsICJicGd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIs
IDppbnQpCisgICAgd2hlbiAiYmlndGVxIiwgImJwZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamdlIiwgOmludCkKKyAgICB3aGVuICJiaWx0IiwgImJwbHQiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImpsIiwgOmludCkKKyAgICB3aGVuICJiaWx0ZXEiLCAiYnBsdGVxIgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbGUiLCA6aW50KQorICAgIHdoZW4gImJiZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJuZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDpieXRlKQorICAgIHdoZW4gImJiYSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmFlcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDpieXRlKQorICAgIHdoZW4gImJiYmVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0IgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDpieXRlKQorICAgIHdoZW4gImJiZ3RlcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdCIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0ZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpsdGVxIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRpbyIsICJi
dHBvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6aW50KQorICAgIHdoZW4gImJ0
aXMiLCAiYnRwcyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmludCkKKyAgICB3
aGVuICJidGl6IiwgImJ0cHoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDppbnQp
CisgICAgd2hlbiAiYnRpbnoiLCAiYnRwbnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
bnoiLCA6aW50KQorICAgIHdoZW4gImJ0Ym8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
byIsIDpieXRlKQorICAgIHdoZW4gImJ0YnMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
cyIsIDpieXRlKQorICAgIHdoZW4gImJ0YnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
eiIsIDpieXRlKQorICAgIHdoZW4gImJ0Ym56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgi
am56IiwgOmJ5dGUpCisgICAgd2hlbiAiam1wIgorICAgICAgJGFzbS5wdXRzICJqbXAgI3tvcGVy
YW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiYmFkZGlvIiwgImJhZGRw
byIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpvIiwgOmludCkKKyAgICB3aGVu
ICJiYWRkaXMiLCAiYmFkZHBzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianMi
LCA6aW50KQorICAgIHdoZW4gImJhZGRpeiIsICJiYWRkcHoiCisgICAgICBoYW5kbGVYODZPcEJy
YW5jaCgiYWRkbCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlueiIsICJiYWRkcG56Igor
ICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJi
c3ViaW8iCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpvIiwgOmludCkKKyAgICB3aGVuICJi
c3ViaXMiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpzIiwgOmludCkKKyAgICB3aGVuICJi
c3ViaXoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImp6IiwgOmludCkKKyAgICB3aGVuICJi
c3ViaW56IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbnoiLCA6aW50KQorICAgIHdoZW4g
ImJtdWxpbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbyIsIDppbnQpCisg
ICAgd2hlbiAiYm11bGlzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpzIiwg
OmludCkKKyAgICB3aGVuICJibXVsaXoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwi
LCAianoiLCA6aW50KQorICAgIHdoZW4gImJtdWxpbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5j
aCgiaW11bGwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJib3JpbyIKKyAgICAgIGhhbmRsZVg4
Nk9wQnJhbmNoKCJvcmwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJvcmlzIgorICAgICAgaGFu
ZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXoiCisgICAg
ICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJib3Jpbnoi
CisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAi
YnJlYWsiCisgICAgICAkYXNtLnB1dHMgImludCAkMyIKKyAgICB3aGVuICJjYWxsIgorICAgICAg
JGFzbS5wdXRzICJjYWxsICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAg
IHdoZW4gInJldCIKKyAgICAgICRhc20ucHV0cyAicmV0IgorICAgIHdoZW4gImNpZXEiLCAiY3Bl
cSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGUiLCA6aW50KQorICAgIHdoZW4g
ImNpbmVxIiwgImNwbmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bmUiLCA6
aW50KQorICAgIHdoZW4gImNpYSIsICJjcGEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0
KCJzZXRhIiwgOmludCkKKyAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAgICAgIGhhbmRsZVg4
NkludENvbXBhcmVTZXQoInNldGFlIiwgOmludCkKKyAgICB3aGVuICJjaWIiLCAiY3BiIgorICAg
ICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YiIsIDppbnQpCisgICAgd2hlbiAiY2liZXEi
LCAiY3BiZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiZSIsIDppbnQpCisg
ICAgd2hlbiAiY2lndCIsICJjcGd0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
ZyIsIDppbnQpCisgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIKKyAgICAgIGhhbmRsZVg4Nklu
dENvbXBhcmVTZXQoInNldGdlIiwgOmludCkKKyAgICB3aGVuICJjaWx0IiwgImNwbHQiCisgICAg
ICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsIiwgOmludCkKKyAgICB3aGVuICJjaWx0ZXEi
LCAiY3BsdGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bGUiLCA6aW50KQor
ICAgIHdoZW4gInRpbyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6aW50KQorICAg
IHdoZW4gInRpcyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6aW50KQorICAgIHdo
ZW4gInRpeiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6aW50KQorICAgIHdoZW4g
InRpbnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDppbnQpCisgICAgd2hlbiAi
dGJvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDpieXRlKQorICAgIHdoZW4gInRi
cyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ynoi
CisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmJ5dGUpCisgICAgd2hlbiAidGJueiIK
KyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmJ5dGUpCisgICAgd2hlbiAicGVlayIK
KyAgICAgICRhc20ucHV0cyAibW92bCAje29wZXJhbmRzWzBdLnZhbHVlICogNH0oJWVzcCksICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicG9rZSIKKyAgICAgICRh
c20ucHV0cyAibW92bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRz
WzFdLnZhbHVlICogNH0oJWVzcCkiCisgICAgd2hlbiAiY2RxaSIKKyAgICAgICRhc20ucHV0cyAi
Y2RxIgorICAgIHdoZW4gImlkaXZpIgorICAgICAgJGFzbS5wdXRzICJpZGl2bCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImZpaTJkIgorICAgICAgJGFzbS5wdXRz
ICJtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgInBzbGxxICQzMiwgJXht
bTciCisgICAgICAkYXNtLnB1dHMgInBvciAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5k
KDpkb3VibGUpfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRhc20ucHV0cyAibW92ZCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgJGFzbS5wdXRzICJtb3ZzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAicHNybHEgJDMyLCAleG1tNyIKKyAg
ICAgICRhc20ucHV0cyAibW92c2QgJXhtbTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgd2hlbiAiYm8iCisgICAgICAkYXNtLnB1dHMgImpvICN7b3BlcmFuZHNbMF0uYXNt
TGFiZWx9IgorICAgIHdoZW4gImJzIgorICAgICAgJGFzbS5wdXRzICJqcyAje29wZXJhbmRzWzBd
LmFzbUxhYmVsfSIKKyAgICB3aGVuICJieiIKKyAgICAgICRhc20ucHV0cyAianogI3tvcGVyYW5k
c1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYm56IgorICAgICAgJGFzbS5wdXRzICJqbnogI3tv
cGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAibGVhaSIsICJsZWFwIgorICAgICAgJGFz
bS5wdXRzICJsZWFsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgcmFpc2UgIkJhZCBvcGNvZGU6
ICN7b3Bjb2RlfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXph
dGlvbktpbmQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENvZGVTcGVjaWFsaXphdGlv
bktpbmRfaAorI2RlZmluZSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKworbmFtZXNwYWNlIEpT
QyB7CisKK2VudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7IENvZGVGb3JDYWxsLCBDb2RlRm9y
Q29uc3RydWN0IH07CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ29kZVNwZWNp
YWxpemF0aW9uS2luZF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAxMDY1MjgpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBDb21tb25TbG93UGF0aHNfaAogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAKQEAgLTQxLDYgKzQyLDM4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKIAorQUxX
QVlTX0lOTElORSBFeGVjU3RhdGUqIGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXRlKiBleGVjLCBSZWdp
c3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorewor
ICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAg
IEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKKyAgICBDb2RlQmxvY2sqIG5ld0Nv
ZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihr
aW5kKTsKKyAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBleGVjLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcygpOworCisgICAgLy8gVGhpcyBlbnN1cmVzIGVub3VnaCBzcGFj
ZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1bWVudHMgcGFzc2VkIGJ5
IHRoZSBjYWxsZXIuCisgICAgaWYgKCFyZWdpc3RlckZpbGUtPmdyb3coZXhlYy0+cmVnaXN0ZXJz
KCkgKyBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+bV9udW1D
YWxsZWVSZWdpc3RlcnMpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFTU0VSVChhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKwor
ICAgIC8vIFRvbyBmZXcgYXJndW1lbnRzIC0tIGNvcHkgY2FsbCBmcmFtZSBhbmQgYXJndW1lbnRz
LCB0aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1bWVudHMgd2l0aCB1bmRlZmluZWQuCisgICAgc2l6
ZV90IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpczsKKyAgICBSZWdpc3Rlciogc3JjID0gZXhlYy0+cmVnaXN0ZXJzKCk7Cisg
ICAgUmVnaXN0ZXIqIGRzdCA9IGV4ZWMtPnJlZ2lzdGVycygpICsgZGVsdGE7CisKKyAgICBpbnQg
aTsKKyAgICBpbnQgZW5kID0gLUV4ZWNTdGF0ZTo6b2Zmc2V0Rm9yKGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKTsKKyAgICBmb3IgKGkgPSAtMTsgaSA+PSBlbmQ7IC0taSkKKyAgICAgICAgZHN0
W2ldID0gc3JjW2ldOworCisgICAgZW5kIC09IGRlbHRhOworICAgIGZvciAoIDsgaSA+PSBlbmQ7
IC0taSkKKyAgICAgICAgZHN0W2ldID0ganNVbmRlZmluZWQoKTsKKworICAgIEV4ZWNTdGF0ZSog
bmV3RXhlYyA9IEV4ZWNTdGF0ZTo6Y3JlYXRlKGRzdCk7CisgICAgQVNTRVJUKCh2b2lkKiluZXdF
eGVjIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOworICAgIHJldHVybiBuZXdFeGVjOworfQorCiBB
TFdBWVNfSU5MSU5FIGJvb2wgb3BJbnN0YW5jZU9mU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdmFsdWUsIEpTVmFsdWUgYmFzZVZhbCwgSlNWYWx1ZSBwcm90bykKIHsKICAgICBBU1NFUlQo
IXZhbHVlLmlzQ2VsbCgpIHx8ICFiYXNlVmFsLmlzQ2VsbCgpIHx8ICFwcm90by5pc0NlbGwoKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJl
dmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQnl0ZWNv
ZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdEcml2
ZXIuaCIKKyNpbmNsdWRlICJFeGVjdXRpb25IYXJuZXNzLmgiCiAjaW5jbHVkZSAiSklULmgiCiAj
aW5jbHVkZSAiSklURHJpdmVyLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCkBAIC04NCw3ICs4NSw3
IEBAIEludHJpbnNpYyBOYXRpdmVFeGVjdXRhYmxlOjppbnRyaW5zaWMoKSAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiBzdGF0aWMgdm9pZCBqZXR0aXNvbkNvZGVCbG9jayhKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIE93blB0cjxUPiYgY29kZUJsb2NrKQogewotICAgIEFTU0VSVChjb2RlQmxvY2st
PmdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENv
ZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VS
VChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwogICAgIE93blB0cjxUPiBjb2RlQmxvY2tUb0pl
dHRpc29uID0gY29kZUJsb2NrLnJlbGVhc2UoKTsKICAgICBjb2RlQmxvY2sgPSBzdGF0aWNfcG9p
bnRlcl9jYXN0PFQ+KGNvZGVCbG9ja1RvSmV0dGlzb24tPnJlbGVhc2VBbHRlcm5hdGl2ZSgpKTsK
QEAgLTE2OSw5ICsxNzAsMzAgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlT3B0
aW1pegogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBFdmFsRXhlY3V0YWJsZTo6aml0Q29t
cGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRD
b21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29k
ZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7Cit9CisKK2lubGluZSBjb25zdCBjaGFyKiBzYW1wbGluZ0Rlc2NyaXB0
aW9uKEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyAgICBzd2l0Y2ggKGppdFR5cGUpIHsK
KyAgICBjYXNlIEpJVENvZGU6OkludGVycHJldGVyVGh1bms6CisgICAgICAgIHJldHVybiAiSW50
ZXJwcmV0ZXIgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpCYXNlbGlu
ZUpJVDoKKyAgICAgICAgcmV0dXJuICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAg
ICBjYXNlIEpJVENvZGU6OkRGR0pJVDoKKyAgICAgICAgcmV0dXJuICJERkcgQ29tcGlsYXRpb24g
KFRPVEFMKSI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwogSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpj
b21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFp
bk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBz
YW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5l
IENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAg
U2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBl
KSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpA
QCAtMjEyLDcgKzIzNCw3IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVy
bmEKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUoKmdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0
VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKCpnbG9iYWxEYXRhLCBtX2V2YWxD
b2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAgICAgICByZXR1cm4gMDsK
ICNlbmRpZgogCkBAIC0yOTcsOSArMzE5LDE1IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJs
ZTo6Y29tcGlsZU9wdGkKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgUHJvZ3JhbUV4ZWN1
dGFibGU6OmppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wg
cmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29k
ZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCiBKU09iamVjdCogUHJvZ3JhbUV4
ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBs
aW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQg
PyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RB
TCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0
aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0o
aml0VHlwZSk7CkBAIC0zMzgsNyArMzY2LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxl
Ojpjb21waWxlSW50ZQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21w
aWxlSWZBcHByb3ByaWF0ZSgqZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENv
ZGVGb3JDYWxsLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVjdXRpb24oKmdsb2Jh
bERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAg
ICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTQxNCw3ICs0NDIsNyBAQCBGdW5jdGlvbkNv
ZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpiCiAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJu
YXRpdmUoKSkKICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sq
PihyZXN1bHQtPmFsdGVybmF0aXZlKCkpOwogICAgIEFTU0VSVChyZXN1bHQpOwotICAgIEFTU0VS
VChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNT
RVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDQwLDYgKzQ2OCwxOCBAQCBKU09iamVjdCogRnVuY3Rp
b25FeGVjdXRhYmxlOjpjb21waWxlT3B0CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0
ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0
Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgSklUQ29kZTo6Ym90dG9t
VGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9p
ZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0aW9uSWZB
cHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2Rl
Rm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1i
b2xUYWJsZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0KTsKK30KKwogRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y29kZUJsb2NrV2l0aEJ5dGVjb2RlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
IHsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tG
b3Ioa2luZCk7CkBAIC00ODQsNyArNTI0LDcgQEAgUGFzc093blB0cjxGdW5jdGlvbkNvZGVCbG9j
az4gRnVuY3Rpb25FeAogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9y
Q2FsbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5O
b2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBD
b21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNh
bXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkp
OwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTUw
Niw3ICs1NDYsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAg
ICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC0+c2hhcmVkU3ltYm9sVGFibGUo
KTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJv
cHJpYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVG
b3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGpp
dFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVG
b3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENvZGVGb3JDYWxs
KSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNTI2LDcgKzU2Niw3IEBAIEpTT2Jq
ZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKIAogSlNPYmplY3QqIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywg
U2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUp
CiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2Rl
OjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29t
cGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNh
bXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAg
IFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTU0OCw3ICs1ODgsNyBAQCBKU09iamVjdCogRnVu
Y3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAgICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJs
b2NrRm9yQ29uc3RydWN0LT5zaGFyZWRTeW1ib2xUYWJsZSgpOwogCiAjaWYgRU5BQkxFKEpJVCkK
LSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBtX2pp
dENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSkp
CisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBtX2ppdENv
ZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSwgQ29k
ZUZvckNvbnN0cnVjdCkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDEwNjUyOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBFeGVjdXRhYmxlX2gKIAogI2luY2x1ZGUg
IkNhbGxEYXRhLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIk5v
ZGVzLmgiCkBAIC0zOSwxMiArNDAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRGVi
dWdnZXI7CiAgICAgY2xhc3MgRXZhbENvZGVCbG9jazsKICAgICBjbGFzcyBGdW5jdGlvbkNvZGVC
bG9jazsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3Jh
bUNvZGVCbG9jazsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKIAogICAgIHN0cnVjdCBFeGNl
cHRpb25JbmZvOwogICAgIAotICAgIGVudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7IENvZGVG
b3JDYWxsLCBDb2RlRm9yQ29uc3RydWN0IH07CiAgICAgZW51bSBDb21waWxhdGlvbktpbmQgeyBG
aXJzdENvbXBpbGF0aW9uLCBPcHRpbWl6aW5nQ29tcGlsYXRpb24gfTsKIAogICAgIGlubGluZSBi
b29sIGlzQ2FsbChDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0zMTksNiArMzIwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDog
cHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRh
YmxlIEJhc2U7CiAKQEAgLTMzOCw2ICszNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGUoSlNH
bG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShKU0dsb2JhbERhdGEmKTsKICNl
bmRpZgogCiAgICAgICAgIEV2YWxDb2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkKQEAgLTM4
NCw2ICszODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgUHJvZ3Jh
bUV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVm
IFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNDExLDYgKzQxNSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0
aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlKEpTR2xv
YmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayYgZ2VuZXJhdGVk
Qnl0ZWNvZGUoKQpAQCAtNDUzLDYgKzQ1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAg
ICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJh
c2U7CiAKQEAgLTUwOCw2ICs1MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYg
RU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDYWxsKEpT
R2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDYWxsKEpTR2xvYmFsRGF0
YSYpOwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNhbGwoKSBjb25zdApA
QCAtNTM1LDYgKzU0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUo
SklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChKU0ds
b2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ29uc3RydWN0KEpTR2xvYmFs
RGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNvbnN0cnVjdCgp
IGNvbnN0CkBAIC01ODIsNiArNTkwLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
ICAgIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChnbG9iYWxEYXRhKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9y
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAg
ICAgICAgICAgIGppdENvbXBpbGVGb3JDYWxsKGdsb2JhbERhdGEpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVG
b3JDb25zdHJ1Y3QpOworICAgICAgICAgICAgaml0Q29tcGlsZUZvckNvbnN0cnVjdChnbG9iYWxE
YXRhKTsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBib29sIGlzR2VuZXJh
dGVkRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBFeGVjdXRpb25IYXJuZXNzX2gKKyNkZWZpbmUgRXhlY3V0
aW9uSGFybmVzc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShK
SVQpCisKKyNpbmNsdWRlICJKSVREcml2ZXIuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRz
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBl
PgoraW5saW5lIGJvb2wgcHJlcGFyZUZvckV4ZWN1dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBK
SVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChm
YWxzZSAmJiBKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkgeworICAgICAgICAvLyBT
dGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRlcnByZXRlci4KKyAgICAgICAgTExJbnQ6Omdl
dEVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsKKyAgICAg
ICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigp
KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkK
KyAgICByZXR1cm4gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgY29kZUJsb2Nr
LCBqaXRDb2RlLCBqaXRUeXBlKTsKK30KKworaW5saW5lIGJvb2wgcHJlcGFyZUZ1bmN0aW9uRm9y
RXhlY3V0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJs
b2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIm
IGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwg
SklUQ29kZTo6SklUVHlwZSBqaXRUeXBlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7
CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChmYWxzZSAmJiBKSVRDb2RlOjppc0Jhc2VsaW5l
Q29kZShqaXRUeXBlKSAmJiBjb2RlQmxvY2stPmluc3RydWN0aW9uQ291bnQoKSA9PSA0OCkgewor
ICAgICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRlcnByZXRlci4KKyAgICAg
ICAgTExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludChnbG9iYWxEYXRhLCBraW5kLCBqaXRDb2Rl
LCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUo
aml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oa2luZCk7CisjZW5kaWYgLy8gRU5BQkxFKExM
SU5UKQorICAgIHJldHVybiBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERh
dGEsIGNvZGVCbG9jaywgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBzeW1ib2xUYWJs
ZSwgaml0VHlwZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKKworI2VuZGlmIC8vIEV4ZWN1dGlvbkhhcm5lc3NfaAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkocmV2aXNpb24gMTA2NTI4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBPd25B
cnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5ID0gYWRvcHRBcnJh
eVB0cihuZXcgV3JpdGVCYXJyaWVyPFVua25vd24+W3JlZ2lzdGVyQXJyYXlTaXplXSk7CiAgICAg
ICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzID0gcmVnaXN0ZXJBcnJheS5nZXQo
KSArIHJlZ2lzdGVyT2Zmc2V0OwotCisgICAgICAgIAogICAgICAgICAvLyBDb3B5IGFsbCBhcmd1
bWVudHMgdGhhdCBjYW4gYmUgY2FwdHVyZWQgYnkgbmFtZSBvciBieSB0aGUgYXJndW1lbnRzIG9i
amVjdC4KICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX251bUNhcHR1cmVkQXJnczsgKytp
KSB7CiAgICAgICAgICAgICBpbnQgaW5kZXggPSBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KGkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24g
MTA2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEpTQXJyYXk7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgc3RydWN0
IFNwYXJzZUFycmF5RW50cnkgOiBwdWJsaWMgV3JpdGVCYXJyaWVyPFVua25vd24+IHsKICAgICAg
ICAgdHlwZWRlZiBXcml0ZUJhcnJpZXI8VW5rbm93bj4gQmFzZTsKQEAgLTEyMiw2ICsxMjMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgSlNBcnJheSA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdhbGtlcjsKIAogICAgIHByb3RlY3RlZDoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxMDY1Mjgp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsOSArMzYsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNHbG9i
YWxPYmplY3Q7Ci0gICAgY2xhc3MgU3RydWN0dXJlOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVy
dHlOYW1lQXJyYXk7CisgICAgY2xhc3MgU3RydWN0dXJlOwogCiAgICAgZW51bSBFbnVtZXJhdGlv
bk1vZGUgewogICAgICAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLApAQCAtMTY0LDYgKzE2
NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgY29uc3QgQ2xhc3NJbmZv
KiBtX2NsYXNzSW5mbzsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1
cmU7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBKU0FjdGl2YXRp
b247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgU291cmNlQ29k
ZTsKICAgICBuYW1lc3BhY2UgREZHIHsKQEAgLTE0Miw2ICsxNDMsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0
RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBhcmd1
bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCShy
ZXZpc2lvbiAxMDY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRGVi
dWdnZXJBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVyLmgiCkBAIC0xNDEsNiArMTQyLDggQEAgSlNHbG9iYWxE
YXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgICwga2V5d29yZHMoYWRvcHRQdHIo
bmV3IEtleXdvcmRzKHRoaXMpKSkKICAgICAsIGludGVycHJldGVyKDApCiAgICAgLCBoZWFwKHRo
aXMsIGhlYXBTaXplKQorICAgICwganNBcnJheUNsYXNzSW5mbygmSlNBcnJheTo6c19pbmZvKQor
ICAgICwganNGaW5hbE9iamVjdENsYXNzSW5mbygmSlNGaW5hbE9iamVjdDo6c19pbmZvKQogI2lm
IEVOQUJMRShERkdfSklUKQogICAgICwgc2l6ZU9mTGFzdFNjcmF0Y2hCdWZmZXIoMCkKICNlbmRp
ZgpAQCAtMjE2LDcgKzIxOSw5IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERh
dGFUeXAKICAgICBqaXRTdHVicyA9IGFkb3B0UHRyKG5ldyBKSVRUaHVua3ModGhpcykpOwogI2Vu
ZGlmCiAKLSAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSh0aGlzLT5jYW5Vc2VKSVQoKSk7Cisg
ICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUoJmxsaW50RGF0YSwgdGhpcy0+Y2FuVXNlSklUKCkp
OworICAgIAorICAgIGluaXRpYWxpemVIb3N0Q2FsbFJldHVyblZhbHVlKCk7IC8vIFRoaXMgaXMg
bmVlZGVkIHRvIGNvbnZpbmNlIHRoZSBsaW5rZXIgbm90IHRvIGRyb3AgaG9zdCBjYWxsIHJldHVy
biBzdXBwb3J0LgogCiAgICAgaGVhcC5ub3RpZnlJc1NhZmVUb0NvbGxlY3QoKTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lv
biAxMDY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTUgKzMwLDE2IEBACiAjZGVmaW5lIEpTR2xvYmFsRGF0
YV9oCiAKICNpbmNsdWRlICJDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgiCi0jaW5jbHVk
ZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRl
ICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIlN0
cm9uZy5oIgorI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAj
aW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk51
bWVyaWNTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU3Ry
b25nLmgiCiAjaW5jbHVkZSAiVGVybWluYXRvci5oIgogI2luY2x1ZGUgIlRpbWVvdXRDaGVja2Vy
LmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgpAQCAtNjUsNiArNjYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKICAg
ICBjbGFzcyBLZXl3b3JkczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAg
Y2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAgICBjbGFz
cyBSZWdFeHBDYWNoZTsKQEAgLTI0MSw2ICsyNDMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEhlYXAgaGVhcDsKIAogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKKworICAgICAgICBj
b25zdCBDbGFzc0luZm8qIGNvbnN0IGpzQXJyYXlDbGFzc0luZm87CisgICAgICAgIGNvbnN0IENs
YXNzSW5mbyogY29uc3QganNGaW5hbE9iamVjdENsYXNzSW5mbzsKKworICAgICAgICBMTEludDo6
RGF0YSBsbGludERhdGE7CisKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZXR1cm5BZGRyZXNz
UHRyIGV4Y2VwdGlvbkxvY2F0aW9uOwogICAgICAgICBKU1ZhbHVlIGhvc3RDYWxsUmV0dXJuVmFs
dWU7CkBAIC0zNDYsNiArMzU0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjdW5kZWYgcmVnaXN0ZXJU
eXBlZEFycmF5RnVuY3Rpb24KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU0dsb2JhbERhdGEoR2xv
YmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUpOwogICAgICAgICBzdGF0aWMg
SlNHbG9iYWxEYXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwogICAgICAgICB2b2lkIGNy
ZWF0ZU5hdGl2ZVRodW5rKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYg
KzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAg
ICAgY2xhc3MgR2V0dGVyU2V0dGVyOwogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1
Y3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFJlZ0V4cENvbnN0
cnVjdG9yOwpAQCAtMzM1LDYgKzMzNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGFkZFN0YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiwg
aW50IGNvdW50KTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogRm9sZCByZXNldCBp
bnRvIGluaXQuCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdChKU09iamVjdCog
dGhpc1ZhbHVlKTsKICAgICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEwNjUy
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgR2V0dGVy
U2V0dGVyOwogICAgIGNsYXNzIEhhc2hFbnRyeTsKICAgICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9u
OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRCbG9j
azsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1l
QXJyYXk7CkBAIC0yNzEsNiArMjcyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTT2Jq
ZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9y
YWdlKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIgYXNrIGFu
eSBvZiB0aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25vd24gdG8gYmUgYSBK
U09iamVjdC4KICAgICAgICAgdXNpbmcgSlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcjsKICAgICAg
ICAgdXNpbmcgSlNDZWxsOjppc0dldHRlclNldHRlcjsKQEAgLTM4Myw2ICszODYsOCBAQCBDT01Q
SUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgZXhwbGljaXQgSlNGaW5h
bE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5lU3Rv
cmFnZSkKICAgICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkocmV2aXNpb24gMTA2NTI4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC05Niw2ICs5Nyw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5
TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpOwogCiAgICAgICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FjaGVkU3RydWN0dXJlOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxMDY1MjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2
ICszMiw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTU3RyaW5nOworICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5n
KEpTR2xvYmFsRGF0YSopOwogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSop
OwpAQCAtMjQwLDYgKzI0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNvbHZlUm9wZShFeGVjU3RhdGUqKSBjb25z
dDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlOChMQ2hhciopIGNvbnN0OwogICAg
ICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2UoVUNoYXIqKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDEwNjUyOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkID0gMTsgLy8gV2ViQ29yZSB1c2VzIE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQgdG8gbWFrZSBkb2N1bWVudC5hbGwgdW5kZXRlY3RhYmxlLgogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPSAxIDw8IDE7CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIE92ZXJyaWRlc0hhc0luc3RhbmNlID0gMSA8PCAyOwpAQCAtODcsNiArODksOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wg
aXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnIDw9ICgxIDw8
IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBmbGFnOyB9CiAgICAgICAgIGJvb2wgaXNTZXRPbkZsYWdz
Mih1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnID49ICgxIDw8IDgpKTsgcmV0dXJu
IG1fZmxhZ3MyICYgKGZsYWcgPj4gOCk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsMTAgKzEx
Niw5IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEUKICAgICByZXR1
cm4gSlNOb3RBbk9iamVjdDo6Y3JlYXRlKGV4ZWMpOwogfQogCi0jaWZuZGVmIE5ERUJVRwogY2hh
ciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogewotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6
ZSA9IDY0OworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZSA9IDEyODsKICAgICBzdGF0aWMg
Y2hhciBkZXNjcmlwdGlvbltzaXplXTsKIAogICAgIGlmICghKnRoaXMpCkBAIC0xMjgsMTQgKzEy
NywxNCBAQCBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiAgICAgICAgIHNucHJpbnRmKGRl
c2NyaXB0aW9uLCBzaXplLCAiSW50MzI6ICVkIiwgYXNJbnQzMigpKTsKICAgICBlbHNlIGlmIChp
c0RvdWJsZSgpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc25wcmludGYoZGVzY3Jp
cHRpb24sIHNpemUsICJEb3VibGU6ICVsZiwgJWx4IiwgYXNEb3VibGUoKSwgcmVpbnRlcnByZXRE
b3VibGVUb0ludHB0cihhc0RvdWJsZSgpKSk7CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9u
LCBzaXplLCAiRG91YmxlOiAlbHgsICVsZiIsIHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIoYXNE
b3VibGUoKSksIGFzRG91YmxlKCkpOwogI2Vsc2UKICAgICAgICAgdW5pb24gewogICAgICAgICAg
ICAgZG91YmxlIGFzRG91YmxlOwogICAgICAgICAgICAgdWludDMyX3QgYXNUd29JbnQzMnNbMl07
CiAgICAgICAgIH0gdTsKICAgICAgICAgdS5hc0RvdWJsZSA9IGFzRG91YmxlKCk7Ci0gICAgICAg
IHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICUwOHg6JTA4eCIsIGFz
RG91YmxlKCksIHUuYXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0pOworICAgICAgICBz
bnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJTA4eDolMDh4LCAlbGYiLCB1LmFz
VHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdLCBhc0RvdWJsZSgpKTsKICNlbmRpZgogICAg
IH0gZWxzZSBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXpl
LCAiQ2VsbDogJXAiLCBhc0NlbGwoKSk7CkBAIC0xNTIsNyArMTUxLDYgQEAgY2hhciogSlNWYWx1
ZTo6ZGVzY3JpcHRpb24oKQogCiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQotI2VuZGlmCiAK
IC8vIFRoaXMgaW4gdGhlIFRvSW50MzIgb3BlcmF0aW9uIGlzIGRlZmluZWQgaW4gc2VjdGlvbiA5
LjUgb2YgdGhlIEVDTUEtMjYyIHNwZWMuCiAvLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMg
aWRlbnRpY2FsIHRvIFRvVUludDMyIG90aGVyIHRoYW4gdG8gaW50ZXJwcmV0YXRpb24KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHJldmlzaW9uIDEwNjUyOCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMyLDkgKzIzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU0NlbGwqIGFz
Q2VsbCgpIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRDYWxs
ZWUoKTsKIAotI2lmbmRlZiBOREVCVUcKICAgICAgICAgY2hhciogZGVzY3JpcHRpb24oKTsKLSNl
bmRpZgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpTVmFsdWUo
V3JpdGVCYXJyaWVyQmFzZTxUPik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiAxMDY1MjgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDEwICszOCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBSZWdpc3RlcjsKIAogICAgIGNsYXNzIEpTVmFy
aWFibGVPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAK
ICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDEw
NjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxMCBAQCB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JD
b25zdHJ1Y3RJbmxpCiAKIHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOwogCitpbnQzMl90
IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworaW50MzJfdCBleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CitpbnQzMl90IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvckpJVFNvb247CisKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
T3B0aW1pemVBZnRlcldhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVBZnRlckxvbmdXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRv
bnRPcHRpbWl6ZUFueXRpbWVTb29uOwpAQCAtMTM3LDYgKzE0MSwxMCBAQCB2b2lkIGluaXRpYWxp
emVPcHRpb25zKCkKICAgICAKICAgICBTRVQobWF4aW11bUlubGluaW5nRGVwdGgsIDUpOwogCisg
ICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwLCAgICAgLTEwMCk7
CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbiwgc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOworICAgIFNFVChleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JKSVRTb29uLCAgICAgICAgICAgIC0xMDApOworCiAgICAgU0VUKGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAsICAgICAtMTAwMCk7CiAgICAgU0VU
KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwLCAtNTAwMCk7
CiAgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29u
LCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CkBAIC0xODUsNiArMTkzLDgg
QEAgdm9pZCBpbml0aWFsaXplT3B0aW9ucygpCiAgICAgaWYgKGNwdXNUb1VzZSA8IDEpCiAgICAg
ICAgIGNwdXNUb1VzZSA9IDE7CiAgICAgCisgICAgY3B1c1RvVXNlID0gMTsKKyAgICAKICAgICBT
RVQobnVtYmVyT2ZHQ01hcmtlcnMsIGNwdXNUb1VzZSk7CiAKICAgICBBU1NFUlQoZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24gPD0gZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTA2NTI4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywx
MCBAQCBleHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RyCiAKIGV4dGVybiB1
bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsgLy8gRGVwdGggb2YgaW5saW5lIHN0YWNrLCBz
byAxID0gbm8gaW5saW5pbmcsIDIgPSBvbmUgbGV2ZWwsIGV0Yy4KIAorZXh0ZXJuIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitleHRlcm4gaW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CitleHRlcm4gaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBleHRlcm4gaW50MzJfdCBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogZXh0ZXJuIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7CiBleHRlcm4g
aW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHJldmlz
aW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4u
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3Mg
SlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFNj
b3BlQ2hhaW5JdGVyYXRvcjsKICAgICBjbGFzcyBTbG90VmlzaXRvcjsKICAgICAKQEAgLTkxLDYg
KzkyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNv
bnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbjsKICAgICB9
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJ
KHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw3ICszMjIsNyBAQCBTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgICAgICAgICB0cmFuc2l0aW9uLT5ncm93
UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb247CiAg
ICAgfQotCisgICAgCiAgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gY3JlYXRlKGdsb2JhbERh
dGEsIHN0cnVjdHVyZSk7CiAKICAgICB0cmFuc2l0aW9uLT5tX2NhY2hlZFByb3RvdHlwZUNoYWlu
LnNldE1heUJlTnVsbChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUtPm1fY2FjaGVk
UHJvdG90eXBlQ2hhaW4uZ2V0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAg
IGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5RGF0
YTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3Qg
VHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFs
RGF0YSYpOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJl
Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNo
YWluLmgJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xh
c3MgU3RydWN0dXJlOwogCiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlNDZWxs
IHsKQEAgLTc0LDYgKzc1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHBy
aXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
ICAgIAogICAgICAgICBTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsK
ICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3duQXJyYXlQ
dHI8V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvQml0VmVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0JpdFZlY3Rvci5jcHAJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvQml0VmVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcg
KzEwNSw2IEBAIHZvaWQgQml0VmVjdG9yOjpyZXNpemVPdXRPZkxpbmUoc2l6ZV90IG4KICAgICBt
X2JpdHNPclBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihuZXdPdXRPZkxpbmVCaXRz
KSA+PiAxOwogfQogCi0jaWZuZGVmIE5ERUJVRwogdm9pZCBCaXRWZWN0b3I6OmR1bXAoRklMRSog
b3V0KQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpIHsKQEAgLTEx
NSw2ICsxMTQsNSBAQCB2b2lkIEJpdFZlY3Rvcjo6ZHVtcChGSUxFKiBvdXQpCiAgICAgICAgICAg
ICBmcHJpbnRmKG91dCwgIi0iKTsKICAgICB9CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0JpdFZlY3Rvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQml0VmVjdG9yLmgJKHJldmlzaW9uIDEw
NjUyOCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQml0VmVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE2NSw5ICsxNjUsNyBAQCBwdWJsaWM6IAogICAgICAgICAgICAgY2xlYXIoYml0
KTsKICAgICB9CiAgICAgCi0jaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgZHVtcChGSUxFKiBvdXQp
OwotI2VuZGlmCiAgICAgCiBwcml2YXRlOgogICAgIHN0YXRpYyB1bnNpZ25lZCBiaXRzSW5Qb2lu
dGVyKCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSW5saW5lQVNNLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9JbmxpbmVBU00uaAkocmV2aXNpb24g
MTA2NTI4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9JbmxpbmVBU00uaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzAsNCArNzAsMTEgQEAKICNkZWZpbmUgSElERV9TWU1CT0wobmFtZSkKICNl
bmRpZgogCisvLyBGSVhNRTogZmlndXJlIG91dCBob3cgdGhpcyB3b3JrcyBvbiBhbGwgdGhlIHBs
YXRmb3Jtcy4gSSBrbm93IHRoYXQKKy8vIG9uIExpbnV4LCB0aGUgcHJlZmVycmVkIGZvcm0gaXMg
Ii5Mc3R1ZmYiIGFzIG9wcG9zZWQgdG8gIkxzdHVmZiIuCisvLyBEb24ndCBrbm93IGFib3V0IGFu
eSBvZiB0aGUgb3RoZXJzLgorI2lmIFBMQVRGT1JNKE1BQykKKyNkZWZpbmUgTE9DQUxfTEFCRUxf
U1RSSU5HKG5hbWUpICJMIiAjbmFtZQorI2VuZGlmCisKICNlbmRpZiAvLyBJbmxpbmVBU01faApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMTA2NTI4KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBA
IC05MjMsNiArOTIzLDE4IEBACiAjZGVmaW5lIEVOQUJMRV9KSVQgMQogI2VuZGlmCiAKKy8qIE9u
IHNvbWUgb2YgdGhlIHBsYXRmb3JtcyB3aGVyZSB3ZSBoYXZlIGEgSklULCB3ZSB3YW50IHRvIGFs
c28gaGF2ZSB0aGUgCisgICBsb3ctbGV2ZWwgaW50ZXJwcmV0ZXIuICovCisjaWYgIWRlZmluZWQo
RU5BQkxFX0xMSU5UKSAmJiBFTkFCTEUoSklUKSAmJiBPUyhEQVJXSU4pICYmIChDUFUoWDg2KSB8
fCBDUFUoQVJNX1RIVU1CMikpICYmIFVTRShKU1ZBTFVFMzJfNjQpCisjZGVmaW5lIEVOQUJMRV9M
TElOVCAxCisjZW5kaWYKKworLyogSWYgd2UgaGF2ZSBMTEludCBlbmFibGVkIGFuZCB0aGUgSklU
IGVuYWJsZWQsIHdlIGFsc28gZW5hYmxlIE9TUmluZyBmcm9tCisgICBMTEludCB0byB0aGUgSklU
LiAqLworI2lmICFkZWZpbmVkKEVOQUJMRV9MTElOVF9PU1JfVE9fSklUKSAmJiBFTkFCTEUoSklU
KSAmJiBFTkFCTEUoTExJTlQpCisjZGVmaW5lIEVOQUJMRV9MTElOVF9PU1JfVE9fSklUIDEKKyNl
bmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0RGR19KSVQpICYmIEVOQUJMRShKSVQpCiAvKiBF
bmFibGUgdGhlIERGRyBKSVQgb24gWDg2IGFuZCBYODZfNjQuICBPbmx5IHRlc3RlZCBvbiBNYWMg
YW5kIEdOVS9MaW51eC4gKi8KICNpZiAoQ1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpICYmIChQTEFU
Rk9STShNQUMpIHx8IE9TKExJTlVYKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
U2VudGluZWxMaW5rZWRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAkocmV2aXNpb24gMTA2NTI4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAt
ODYsNiArODYsOCBAQCBwdWJsaWM6CiAKICAgICBpdGVyYXRvciBiZWdpbigpOwogICAgIGl0ZXJh
dG9yIGVuZCgpOworICAgIAorICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0dXJuIGJlZ2luKCkgPT0g
ZW5kKCk7IH0KIAogcHJpdmF0ZToKICAgICBSYXdOb2RlIG1faGVhZFNlbnRpbmVsOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAx
MDY1MjgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZT
dHJpbmcgKiBDRlN0cmkKIC8vIExhbmRpbmcgdGhlIGZpbGUgbW92ZXMgaW4gb25lIHBhdGNoLCB3
aWxsIGZvbGxvdyBvbiB3aXRoIHBhdGNoZXMgdG8gY2hhbmdlIHRoZSBuYW1lc3BhY2VzLgogbmFt
ZXNwYWNlIEpTQyB7CiBzdHJ1Y3QgSWRlbnRpZmllckNTdHJpbmdUcmFuc2xhdG9yOworY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJZGVu
dGlmaWVyQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiBzdHJ1Y3QgSWRlbnRpZmllckxDaGFyRnJvbVVD
aGFyVHJhbnNsYXRvcjsKIH0KQEAgLTcyLDcgKzczLDggQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAg
ICAgZnJpZW5kIHN0cnVjdCBXVEY6OlN1YnN0cmluZ1RyYW5zbGF0b3I7CiAgICAgZnJpZW5kIHN0
cnVjdCBXVEY6OlVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKICAgICBmcmllbmQgY2xhc3MgQXRvbWlj
U3RyaW5nSW1wbDsKLQorICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICAKIHByaXZhdGU6CiAgICAgZW51bSBCdWZmZXJPd25lcnNoaXAgewogICAgICAgICBC
dWZmZXJJbnRlcm5hbCwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEy
LTAxLTI2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgSlNDIHNo
b3VsZCBiZSBhIHRyaXBsZS10aWVyIFZNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NTgxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAwNzk2OTQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
ZCBFRkwncyBidWlsZCBzeXN0ZW0gdG8gaW5jbHVkZSBhIG5ldyBkaXJlY3RvcnkgaW4gSmF2YVNj
cmlwdENvcmUuCisgICAgICAgIAorICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSBubyBiZWhh
dmlvciBjaGFuZ2VkLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMTItMDItMDEg
IEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJlbW92ZSBb
RGVsZWdhdGluZ1Byb3RvdHlwZUdldE93blByb3BlcnR5U2xvdF0sIFtIYXNDdXN0b21JbmRleEdl
dHRlcl0sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA2NTI4KQorKysgU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcg
QEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9pbnRlcnByZXRlciIK
ICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcGFyc2VyIgogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9y
dW50aW1lIgpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMjYgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mgc2hvdWxkIGJlIGEg
dHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3OTY5ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1
aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4K
KyAgICAgICAgCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMTItMDEtMTEgIEphY2t5
IEppYW5nICA8emhhamlhbmdAcmltLmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gQVNTRVJU
IGZhaWx1cmUgaW4gQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFZpc2libGVDb250ZW50cygpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNjUyOCkKKysrIFNvdXJjZS9XZWJLaXQv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgU0VUKFdlYktp
dF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZWJ1Z2dl
ciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyIgogICAgICIke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUiCkluZGV4
OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lv
biAxMDY1MjgpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
NSBAQAorMjAxMi0wMS0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAg
ICAgIEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzEwMDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENoYW5nZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5
IGluIEphdmFTY3JpcHRDb3JlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtl
TGlzdHMudHh0OgorCiAyMDEyLTAyLTAxICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVXBkYXRlIHRoZSB0ZXN0cyB0byBzaG93IHRoYXQgdGhlIG1hYy1ld3MgcHJv
Y2Vzc2VzIHBhdGNoZXMgZnJvbQpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtl
TGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxp
c3RzLnR4dAkocmV2aXNpb24gMTA2NTI4KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NN
YWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02OCwxMCArNjgsMTIgQEAgU0VUKER1bXBS
ZW5kZXJUcmVlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0K
ICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vQVBJCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2Fzc2VtYmxlcgorICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZQogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9kZmcKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaGVhcAogICAg
ICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnRlcnByZXRlcgogICAgICR7SkFWQVNDUklQVENPUkVf
RElSfS9qaXQKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vcnVudGltZQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9Gb3J3YXJkaW5n
SGVhZGVycwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS93dGYK
</data>
<flag name="commit-queue"
          id="126517"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125091</attachid>
            <date>2012-02-02 00:37:31 -0800</date>
            <delta_ts>2012-02-02 13:57:15 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_88.diff</filename>
            <type>text/plain</type>
            <size>507804</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NTQwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0MiBA
QAorMjAxMi0wMi0wMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgIEFzIGFu
IGFkZGl0aW9uYWwgY2hhbmdlLCB0aGlzIHBhdGNoIG1ha2VzIGJ5dGVjb2RlIGR1bXBpbmcsIERG
RyBJUiBkdW1waW5nLAorICAgICAgICBhbmQgSlNWYWx1ZSBkdW1waW5nIHdvcmsgaW4gcmVsZWFz
ZSBidWlsZHMsIHNpbmNlIGRlYnVnZ2luZyBzb21lIG9mIHRoZQorICAgICAgICBuYXN0aWVyIGFz
cGVjdHMgb2YgdGhpcyBwYXRjaCB3b3VsZCBoYXZlIGJlZW4gaW1wb3NzaWJsZSB3aXRob3V0IHRo
YXQuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5h
bToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRD
b3JlLnByaToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52c3Byb3BzOgorICAgICAgICAqIEph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZpbGVzLmNtZDoKKyAgICAg
ICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRhcmdldC5wcmk6CisgICAgICAgICogYXNzZW1ibGVyL0Fic3RyYWN0TWFjcm9Bc3NlbWJsZXIu
aDoKKyAgICAgICAgKEFic3RyYWN0TWFjcm9Bc3NlbWJsZXIpOgorICAgICAgICAoSlNDOjpBYnN0
cmFjdE1hY3JvQXNzZW1ibGVyOjpkZWJ1Z09mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVyL0Fz
c2VtYmxlckJ1ZmZlci5oOgorICAgICAgICAoQXNzZW1ibGVyQnVmZmVyKToKKyAgICAgICAgKEpT
Qzo6QXNzZW1ibGVyQnVmZmVyOjpkZWJ1Z09mZnNldCk6CisgICAgICAgICogYXNzZW1ibGVyL0xp
bmtCdWZmZXIuaDoKKyAgICAgICAgKExpbmtCdWZmZXIpOgorICAgICAgICAoSlNDOjpMaW5rQnVm
ZmVyOjpkZWJ1Z1NpemUpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVS
ZWYuaDoKKyAgICAgICAgKE1hY3JvQXNzZW1ibGVyQ29kZVB0cik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKToKKyAgICAg
ICAgKiBhc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmg6CisgICAgICAgIChYODZBc3NlbWJsZXIpOgor
ICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmRlYnVnT2Zmc2V0KToKKyAgICAgICAgKFg4Nklu
c3RydWN0aW9uRm9ybWF0dGVyKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpYODZJbnN0
cnVjdGlvbkZvcm1hdHRlcjo6ZGVidWdPZmZzZXQpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVj
b2RlQ29udmVudGlvbnMuaDogQWRkZWQuCisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0
dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZv
cik6CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6
Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9w
ZXJhdG9yISk6CisgICAgICAgIChDYWxsTGlua1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUv
Q29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
ZHVtcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Q29kZUJsb2NrKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjp+Q29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6c3Ryb25nbHlW
aXNpdFN0cm9uZ1JlZmVyZW5jZXMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0Nh
bGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlBy
b2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6
amV0dGlzb24pOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24pOgor
ICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbCk6CisgICAgICAg
IChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RnVu
Y3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
OjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSk6CisgICAgICAgICogYnl0ZWNv
ZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiYXNlbGluZVZlcnNpb24pOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmxpbmtJbmNvbWluZ0NhbGwpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRDb21waWxlKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjphZGRMTEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6YWRkR2xvYmFsUmVzb2x2ZUluZm8pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6
Om51bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZvcyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6
dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9j
azo6Y291bGRUYWtlU2xvd0Nhc2UpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRv
VGFrZVNwZWNpYWxGYXN0Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9U
YWtlRGVlcGVzdFNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rh
a2VBbnlTbG93Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkRnJlcXVlbnRFeGl0
U2l0ZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6ZG9udEpJVEFueXRpbWVTb29uKToKKyAg
ICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRBZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkNv
ZGVCbG9jazo6aml0U29vbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGxpbnRFeGVjdXRl
Q291bnRlcik6CisgICAgICAgIChQcm9ncmFtQ29kZUJsb2NrKToKKyAgICAgICAgKEV2YWxDb2Rl
QmxvY2spOgorICAgICAgICAoRnVuY3Rpb25Db2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2Rl
L0NvZGVPcmlnaW4uaDoKKyAgICAgICAgKENvZGVPcmlnaW4pOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6Q29kZU9yaWdpbjo6aW5saW5lU3RhY2spOgorICAgICAgICAqIGJ5dGVjb2Rl
L0RGR0V4aXRQcm9maWxlLmg6CisgICAgICAgIChKU0M6OkRGRzo6ZXhpdEtpbmRUb1N0cmluZyk6
CisgICAgICAgICogYnl0ZWNvZGUvRGF0YUZvcm1hdC5oOgorICAgICAgICAoSlNDOjpkYXRhRm9y
bWF0VG9TdHJpbmcpOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAg
ICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAq
IGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6
R2V0QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6Ondhc1NlZW5JbkpJ
VCk6CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVj
dGlvbi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246Okluc3Ry
dWN0aW9uKToKKyAgICAgICAgKEluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9MTElu
dENhbGxMaW5rSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkxM
SW50Q2FsbExpbmtJbmZvOjpMTEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChMTEludENhbGxM
aW5rSW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjp+TExJbnRDYWxsTGlu
a0luZm8pOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6aXNMaW5rZWQpOgorICAg
ICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6dW5saW5rKToKKyAgICAgICAgKiBieXRlY29k
ZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZENhbGxMaW5r
U3RhdHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgorICAgICAgICAqIGJ5dGVj
b2RlL1ByZWRpY3RlZFR5cGUuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6cHJl
ZGljdGlvblRvU3RyaW5nKToKKyAgICAgICAgKiBieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmg6Cisg
ICAgICAgIChKU0MpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwOgorICAg
ICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAq
IGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKFB1dEJ5SWRTdGF0dXMpOgorICAg
ICAgICAqIGJ5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaDoKKyAgICAgICAgKFZhbHVlUmVjb3Zlcnkp
OgorICAgICAgICAoSlNDOjpWYWx1ZVJlY292ZXJ5OjpkdW1wKToKKyAgICAgICAgKiBieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZSk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdFJlc29sdmUpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZW1pdFJlc29sdmVXaXRoQmFzZSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0R2V0QnlJZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJ
ZCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZCk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCk6CisgICAgICAgIChK
U0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaCk6CisgICAgICAgICogZGZnL0RGR0Fic3RyYWN0VmFs
dWUuaDoKKyAgICAgICAgKFN0cnVjdHVyZUFic3RyYWN0VmFsdWUpOgorICAgICAgICAoSlNDOjpE
Rkc6OlN0cnVjdHVyZUFic3RyYWN0VmFsdWU6OmR1bXApOgorICAgICAgICAoQWJzdHJhY3RWYWx1
ZSk6CisgICAgICAgIChKU0M6OkRGRzo6QWJzdHJhY3RWYWx1ZTo6ZHVtcCk6CisgICAgICAgICog
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBh
cnNlcjo6Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0aWVzLmg6
CisgICAgICAgIChKU0M6OkRGRzo6Y2FuQ29tcGlsZU9wY29kZSk6CisgICAgICAgICogZGZnL0RG
R0ZQUkluZm8uaDoKKyAgICAgICAgKEZQUkluZm8pOgorICAgICAgICAoSlNDOjpERkc6OkZQUklu
Zm86OmRlYnVnTmFtZSk6CisgICAgICAgICogZGZnL0RGR0dQUkluZm8uaDoKKyAgICAgICAgKEdQ
UkluZm8pOgorICAgICAgICAoSlNDOjpERkc6OkdQUkluZm86OmRlYnVnTmFtZSk6CisgICAgICAg
ICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKERGRyk6CisgICAgICAgICogZGZnL0RGR0dy
YXBoLmg6CisgICAgICAgIChHcmFwaCk6CisgICAgICAgICogZGZnL0RGR05vZGUuaDoKKyAgICAg
ICAgKERGRyk6CisgICAgICAgIChKU0M6OkRGRzo6YXJpdGhOb2RlRmxhZ3NBc1N0cmluZyk6Cisg
ICAgICAgIChOb2RlKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNJZGVudGlmaWVyKToK
KyAgICAgICAgKiBkZmcvREZHT1NSRXhpdC5jcHA6CisgICAgICAgIChERkcpOgorICAgICAgICAo
SlNDOjpERkc6Ok9TUkV4aXQ6OmR1bXApOgorICAgICAgICAqIGRmZy9ERkdPU1JFeGl0Lmg6Cisg
ICAgICAgIChPU1JFeGl0KToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaGVhcC9IZWFwLmNw
cDoKKyAgICAgICAgKEpTQzo6SGVhcDo6Y29sbGVjdCk6CisgICAgICAgICogaGVhcC9IZWFwLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3Rh
Y2suY3BwOgorICAgICAgICAoSlNDOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01h
cmtlZFNwYWNlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAg
ICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAg
ICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRl
ci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0
ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxp
emUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0
ZXI6OnByaXZhdGVFeGVjdXRlKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZl
TGFzdENhbGxlcik6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChJbnRlcnByZXRlcik6CisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjpnZXRPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQp
OgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZW5hYmxlZCk6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvUmVnaXN0ZXJGaWxlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoUmVnaXN0ZXJG
aWxlKToKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVj
U3RhdGUpOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmg6IEFkZGVkLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJuVmFsdWUp
OgorICAgICAgICAqIGppdC9KSVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21w
aWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2Vz
KToKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJ
VENvZGUuaDoKKyAgICAgICAgKEpTQzo6SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKToKKyAgICAg
ICAgKEpJVENvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZSk6Cisg
ICAgICAgIChKU0M6OkpJVENvZGU6OkpJVENvZGUpOgorICAgICAgICAqIGppdC9KSVREcml2ZXIu
aDoKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUpOgorICAgICAgICAoSlND
OjpqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKiBqaXQvSklURXhj
ZXB0aW9ucy5jcHA6CisgICAgICAgIChKU0M6OmppdFRocm93KToKKyAgICAgICAgKiBqaXQvSklU
U3R1YnMuY3BwOgorICAgICAgICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAg
IChKU0MpOgorICAgICAgICAqIGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAqIGxsaW50
OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAgICAg
KiBsbGludC9MTEludERhdGEuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OkRhdGE6OkRhdGEpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6fkRh
dGEpOgorICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChMTEludCk6CisgICAgICAgIChEYXRhKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OkRhdGE6OmV4Y2VwdGlvbkluc3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRh
OjpvcGNvZGVNYXApOgorICAgICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZ1bmN0aW9uRW50
cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFdmFsRW50cnlwb2ludCk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpnZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAgICogbGxpbnQv
TExJbnRFbnRyeXBvaW50cy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTElu
dCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGlu
dC9MTEludEV4Y2VwdGlvbnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmludGVycHJldGVyVGhyb3dJbkNhbGxlcik6CisgICAgICAgIChKU0M6OkxM
SW50OjpyZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OnJldHVyblRvVGhyb3cpOgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgor
ICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmNwcDogQWRk
ZWQuCisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9v
cGVyYW5kKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkxMSU5UX0hFTFBFUl9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6
OnRyYWNlRnVuY3Rpb25Qcm9sb2d1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpzaG91bGRKSVQp
OgorICAgICAgICAoSlNDOjpMTEludDo6ZW50cnlPU1IpOgorICAgICAgICAoSlNDOjpMTEludDo6
cmVzb2x2ZUdsb2JhbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZXRCeVZhbCk6CisgICAgICAg
IChKU0M6OkxMSW50OjpoYW5kbGVIb3N0Q2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRV
cENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2VuZXJpY0NhbGwpOgorICAgICAgICAqIGxs
aW50L0xMSW50SGVscGVycy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTElu
dCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6IEFkZGVkLgorICAg
ICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAo
SlNDKToKKyAgICAgICAgKExMSW50T2Zmc2V0c0V4dHJhY3Rvcik6CisgICAgICAgIChKU0M6OkxM
SW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAgICAobWFpbik6CisgICAgICAgICog
bGxpbnQvTExJbnRUaHVua3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OmZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpM
TEludDo6ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dl
bmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpldmFsRW50cnlUaHVua0dlbmVyYXRvcik6
CisgICAgICAgIChKU0M6OkxMSW50Ojpwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAg
ICAgICogbGxpbnQvTExJbnRUaHVua3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAg
ICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRl
ZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDogQWRkZWQuCisgICAg
ICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBvZmZs
aW5lYXNtOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBBZGRlZC4KKyAg
ICAgICAgKiBvZmZsaW5lYXNtL2FzbS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9h
c3QucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6IEFkZGVkLgor
ICAgICAgICAqIG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYjogQWRkZWQu
CisgICAgICAgICogb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmI6IEFkZGVkLgorICAgICAgICAq
IG9mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vb2Zmc2V0cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9v
cHQucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAg
ICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGlu
ZWFzbS9zZWxmX2hhc2gucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2V0dGluZ3Mu
cmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBBZGRlZC4KKyAg
ICAgICAgKiBvZmZsaW5lYXNtL3g4Ni5yYjogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBy
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6
OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAoQ29tbW9uU2xvd1BhdGhzKToKKyAgICAgICAgKiBy
dW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9jayk6
CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU0M6OnNhbXBsaW5nRGVzY3JpcHRpb24pOgorICAgICAgICAoSlNDOjpF
dmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4
ZWN1dGFibGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6
Y29tcGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpiYXNl
bGluZUNvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0
Q29tcGlsZUZvckNhbGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENv
bXBpbGVGb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNv
bXBpbGVGb3JDYWxsSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6
OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRh
YmxlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoRXZhbEV4ZWN1dGFibGUpOgorICAgICAg
ICAoUHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAg
ICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAg
KiBydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAg
ICAgICAoSlNDOjpwcmVwYXJlRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1
bmN0aW9uRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgor
ICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnRlYXJPZmYpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBcnJheS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQXJyYXkpOgorICAgICAgICAq
IHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDZWxsKToKKyAg
ICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChK
U0Z1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsRGF0YS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsRGF0YSk6Cisg
ICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoSlNPYmplY3QpOgorICAgICAgICAoSlNGaW5hbE9iamVjdCk6
CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgICogcnVudGlt
ZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTU3RyaW5nKToKKyAgICAg
ICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChUeXBl
SW5mbyk6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OkpTVmFsdWU6OmRlc2NyaXB0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pT
VmFsdWUuaDoKKyAgICAgICAgKEpTVmFsdWUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJs
ZU9iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTVmFyaWFibGVPYmplY3QpOgor
ICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChPcHRpb25zKToKKyAgICAg
ICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUv
T3B0aW9ucy5oOgorICAgICAgICAoT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9TY29wZUNo
YWluLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU2NvcGVDaGFpbk5vZGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQ
cm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVj
dHVyZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3RydWN0dXJlQ2hhaW4pOgor
ICAgICAgICAqIHd0Zi9CaXRWZWN0b3IuY3BwOgorICAgICAgICAoV1RGKToKKyAgICAgICAgKFdU
Rjo6Qml0VmVjdG9yOjpkdW1wKToKKyAgICAgICAgKiB3dGYvQml0VmVjdG9yLmg6CisgICAgICAg
IChCaXRWZWN0b3IpOgorICAgICAgICAqIHd0Zi9JbmxpbmVBU00uaDoKKyAgICAgICAgKiB3dGYv
UGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg6CisgICAgICAg
IChTZW50aW5lbExpbmtlZExpc3QpOgorICAgICAgICAoV1RGOjpTZW50aW5lbExpbmtlZExpc3Q6
OmlzRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChTdHJpbmdJbXBsKToKKwogMjAxMi0wMi0wMSAgTWljaGFlbCBTYWJvZmYg
IDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBZYXJyIGNyYXNoIHdpdGggcmVnZXhwIHJl
cGxhY2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEw
NjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMTEsNiArMTEsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2pp
dCIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpAQCAtOTUsNiArOTYsNyBAQCBTRVQo
SmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5jcHAK
IAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAorICAgIGppdC9Ib3N0Q2FsbFJldHVy
blZhbHVlLmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwCiAgICAgaml0L0pJVEFy
aXRobWV0aWMuY3BwCiAgICAgaml0L0pJVENhbGwzMl82NC5jcHAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtNTcsNiArNTcsNyBAQCBq
YXZhc2NyaXB0Y29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0IFwKKwktSSQoc3Jj
ZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlz
aW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvUmVwYXRjaEJ1ZmZlci5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NINEFzc2VtYmxlci5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oIFwKKwlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIFwKQEAgLTEwMiw2ICsxMDMsNyBAQCBqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuaCBcCisJU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5lSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5oIFwKQEAgLTI3Nyw2ICsyNzksOCBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0NvbXBhY3RKSVRDb2RlTWFwLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0
YWJsZUFsbG9jYXRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJs
ZUFsbG9jYXRvci5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJu
VmFsdWUuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFs
dWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljMzJfNjQuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFyaXRobWV0aWMuY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5jcHAgXApAQCAtMzAwLDYgKzMwNCw3
IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1Ro
dW5rR2VuZXJhdG9ycy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5l
cmF0b3JzLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL29zLXdpbjMyL3N0ZGJvb2wuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL29zLXdpbjMyL3N0ZGludC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0FTVEJ1aWxkZXIuaCBcCkBAIC0zNTAsNiArMzU1LDcgQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuY3BwIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NvbW1vblNsb3dQYXRocy5oIFwKQEAgLTM3OCw2ICszODQsNyBAQCBqYXZhc2NyaXB0
Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25IZWxwZXJzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggXAorCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90b3R5cGUuY3BwIFwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQkocmV2aXNpb24gMTA2NTQwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnByaQkod29ya2luZyBjb3B5
KQpAQCAtMjAsNiArMjAsNyBAQCBJTkNMVURFUEFUSCArPSBcCiAgICAgJCRTT1VSQ0VfRElSL2Rl
YnVnZ2VyIFwKICAgICAkJFNPVVJDRV9ESVIvaW50ZXJwcmV0ZXIgXAogICAgICQkU09VUkNFX0RJ
Ui9qaXQgXAorICAgICQkU09VUkNFX0RJUi9sbGludCBcCiAgICAgJCRTT1VSQ0VfRElSL3BhcnNl
ciBcCiAgICAgJCRTT1VSQ0VfRElSL3Byb2ZpbGVyIFwKICAgICAkJFNPVVJDRV9ESVIvcnVudGlt
ZSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQkocmV2aXNpb24gMTA2NTQwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTEwNiw2
ICsxMDYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3Bw
IFwKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVkVk1Qb29sLmNwcCBcCiAgICAgaml0
L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5j
cHAgXAogICAgIGppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAgICAgaml0L0pJVEFyaXRobWV0aWMz
Ml82NC5jcHAgXAogICAgIGppdC9KSVRDYWxsLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24g
MTA2NTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTE3
NTgsNiArMTc1OCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlwuLlxqaXRcSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAiCisJCQkJPgorCQkJPC9G
aWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGppdFxKSVQuY3BwIgogCQkJ
CT4KIAkJCTwvRmlsZT4KQEAgLTE4NDMsNiArMTg0NywxNCBAQAogCQkJPC9GaWxlPgogCQk8L0Zp
bHRlcj4KIAkJPEZpbHRlcgorCQkJTmFtZT0ibGxpbnQiCisJCQk+CisJCQk8RmlsZQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cLi5cbGxpbnRcTExJbnREYXRhLmgiCisJCQkJPgorCQkJPC9GaWxlPgor
CQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgogCQkJTmFtZT0iaW50ZXJwcmV0ZXIiCiAJCQk+CiAJCQk8
RmlsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52c3Byb3BzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwkocmV2aXNpb24gMTA2NTQwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZUNvbW1vbi52c3Byb3BzCSh3b3JraW5nIGNvcHkpCkBAIC02LDcgKzYsNyBA
QAogCT4KIAk8VG9vbAogCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgotCQlBZGRpdGlvbmFsSW5j
bHVkZURpcmVjdG9yaWVzPSImcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXEphdmFT
Y3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXCZxdW90OzsuLi8uLi87Li4vLi4vQVBJLzsuLi8uLi9w
YXJzZXIvOy4uLy4uL2J5dGVjb21waWxlci87Li4vLi4vZGZnLzsuLi8uLi9qaXQvOy4uLy4uL3J1
bnRpbWUvOy4uLy4uL3Rvb2xzLzsuLi8uLi9ieXRlY29kZS87Li4vLi4vaW50ZXJwcmV0ZXIvOy4u
Ly4uL3d0Zi87Li4vLi4vcHJvZmlsZXI7Li4vLi4vYXNzZW1ibGVyLzsuLi8uLi9kZWJ1Z2dlci87
Li4vLi4vaGVhcC87JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1
b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKENv
bmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25C
dWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVz
RGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7IgorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9y
aWVzPSImcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcb2JqXEphdmFTY3JpcHRDb3JlXERl
cml2ZWRTb3VyY2VzXCZxdW90OzsuLi8uLi87Li4vLi4vQVBJLzsuLi8uLi9wYXJzZXIvOy4uLy4u
L2J5dGVjb21waWxlci87Li4vLi4vZGZnLzsuLi8uLi9qaXQvOy4uLy4uL2xsaW50LzsuLi8uLi9y
dW50aW1lLzsuLi8uLi90b29scy87Li4vLi4vYnl0ZWNvZGUvOy4uLy4uL2ludGVycHJldGVyLzsu
Li8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fzc2VtYmxlci87Li4vLi4vZGVidWdnZXIv
Oy4uLy4uL2hlYXAvOyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlJnF1b3Q7OyZx
dW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmll
c0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OyIKIAkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9
Il9fU1REX0MiCiAJCUZvcmNlZEluY2x1ZGVGaWxlcz0iSUNVVmVyc2lvbi5oIgogCS8+CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL2NvcHktZmlsZXMuY21kCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQJKHJldmlz
aW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYg
KzQzLDcgQEAgZm9yICUlZCBpbiAoCiAgICAgZGVidWdnZXIKICAgICBpbnRlcnByZXRlcgogICAg
IGppdAorICAgIGxsaW50CiAgICAgcGFyc2VyCiAgICAgcHJvZmlsZXIKICAgICBydW50aW1lCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTA2NTQwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxNSBAQAogCW9iamVjdHMgPSB7CiAKIC8qIEJl
Z2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCisJCTBGNDY4MEE5MTRCQTdGRDkwMEJG
RTI3MiAvKiBMTEludCBPZmZzZXRzICovID0geworCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0
OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQg
T2Zmc2V0cyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODBBQTE0QkE3RkQ5MDBC
RkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAorCQkJKTsKKwkJCW5hbWUgPSAi
TExJbnQgT2Zmc2V0cyI7CisJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOworCQl9
OwogCQk2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyogRGVyaXZlZCBTb3VyY2VzICovID0gewog
CQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9
IDY1RkIzRjc3MDlEMTFFQkQwMEY0OURFQiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVyaXZlZCBTb3VyY2VzIiAqLzsKQEAgLTE0LDYgKzIzLDkg
QEAKIAkJCQk2NUZCM0Y2NTA5RDExRTkxMDBGNDlERUIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3Vy
Y2VzICovLAogCQkJCTVEMzVERUUxMEM3QzE0MEIwMDg2NDhCMiAvKiBHZW5lcmF0ZSBEVHJhY2Ug
aGVhZGVyICovLAogCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2ODBCNDE0QkE4
MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CiAJCQluYW1lID0g
IkRlcml2ZWQgU291cmNlcyI7CiAJCQlwcm9kdWN0TmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwog
CQl9OwpAQCAtNDgsNiArNjAsMTAgQEAKIAkJMEJBQzk0QTAxMzM4NzI4NDAwQ0YxMzVCIC8qIFRo
cmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmlj
dGlvblZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEJDRDgzNTcxNDg1ODQ1MjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJDRDgzNTQxNDg1
ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCRjI4QTI5MTFBMzNEQzMwMDYzOEY4NCAvKiBT
aXplTGltaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLzsgfTsKKwkJ
MEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTUxNEJDRjQ1QTAw
ODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovOyB9OworCQkwRjBCODM5QjE0QkNGNDYw
MDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50
cnlwb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTcxNEJDRjQ1QTAw
ODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1
QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBNzE0
QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4
M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhh
bmRsZXJJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0FBMTRC
Q0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU4LDkgKzc0LDEzIEBACiAJCTBGMEI4
M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0IzMTRCQ0Y4NUUwMDg4NUI0
RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyogR2xvYmFsUmVz
b2x2ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I5MTRCQ0Y5
NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjgxNEJDRjk1QjAw
ODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwRkM0NUExNEJEMTVGNTAw
QjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxs
TGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE1RjE1RDE0QjdBNzNB
MDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNkQ3MjYxNDJDMzlDMDAwQ0Y3ODRBIC8qIEJpdFZl
Y3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLzsgfTsKIAkJMEYyMUMy
NjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERy
aXZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3QTE0QkU3MjczMDBB
REM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
MjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3RTE0QkVBQTgwMDBB
REM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFr
UmVmZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZl
c3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGMkM1NTZGMTQ3MzhGMzEwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RTE0NzM4RjJFMDAxMjFF
NEYgLyogREZHQ29kZUJsb2Nrcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGMkM1NTcwMTQ3MzhGMzUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tz
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMkM1
NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLzsgfTsKQEAgLTcxLDYg
KzkxLDE5IEBACiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDMxNzM2
MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIg
LyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2ODA4MzE0
QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklU
RXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MEEzMTRCQTdGOEQwMEJGRTI3MiAvKiBMTElu
dEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBBNDE0QkE3
RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhl
bHBlcnMuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLXVudXNlZC1w
YXJhbWV0ZXIiOyB9OyB9OworCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxw
ZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2
ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcy
IC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExM
SW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAq
LzsgfTsKKwkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNTE0QkJCMTY5
MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZs
aW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0Njgw
Q0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzcxNEJCQjE2OTAwQkZF
MjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovOyB9OworCQkwRjQ2ODBDRDE0QkJCMTdE
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xl
dmVsSW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENFMTRCQkIz
RDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovOyB9OworCQkwRjQ2ODBEMzE0QkJEMTY3MDBC
RkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDQxNEJC
RDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8q
IEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovOyB9OworCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUy
NzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0
dXJuVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjU1RjBGNDE0RDEwNjM5MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1RjBGMTE0RDEwNjM2MDBB
Qzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi87IH07CiAJCTBGNTVGMEY1MTREMTA2M0MwMEFDNzY0
OSAvKiBBYnN0cmFjdFBDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUYwOENGMTQ2Qzc2
MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyog
VW5jb25kaXRpb25hbEZpbmFsaXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC0zODcsNyArNDIwLDcgQEAKIAkJODZCOTlBRTMxMTdFNTc4MTAw
REY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODZCOTlBRTExMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QkIw
OUMwMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJFMTM4RTM4MUIwMDU2NzAyRiAvKiBE
RkdSZXBhdGNoLmNwcCAqLzsgfTsKIAkJODZCQjA5QzExMzhFMzgxQjAwNTY3MDJGIC8qIERGR1Jl
cGF0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
QkIwOUJGMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggKi87IH07Ci0JCTg2QzM2RUVB
MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1h
Y3JvQXNzZW1ibGVyLmggKi87IH07CisJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNy
b0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTAxMUEyMTNF
RTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OEREMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNy
b0Fzc2VtYmxlckFSTS5jcHAgKi87IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBN
YWNyb0Fzc2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMu
aCAqLzsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERGMTFB
MjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IH07CkBAIC03NTQsNiArNzg3LDIw
IEBACiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFp
bmVySXRlbVByb3h5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBC
WENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94
eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9q
ZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmlu
ZyA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSAiTExJbnQgT2Zm
c2V0cyI7CisJCX07CisJCTBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJ
dGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250
YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3Qg
Ki87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODA4
RTE0QkE3RTVFMDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gSlNDTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworCQl9OwogCQkxNDEyMTRCRTBBNDkxOTBFMDA0ODAyNTUgLyogUEJYQ29udGFpbmVySXRl
bVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFp
bmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICov
OwpAQCAtNzk5LDYgKzg0NiwxNSBAQAogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkw
RjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJY
Q29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJ
CQlkc3RQYXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJmb2xkZXJTcGVjID0g
MDsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAxOworCQl9OwogCQk1REJCMTUxMTEzMUQwQjEzMDA1NkFEMzYgLyogQ29weSBTdXBw
b3J0IFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAxMjsKQEAgLTgzOSw2ICs4OTUsMTAgQEAKIAkJMEJBQzk0OUUxMzM4
NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9y
YXJ5Q2hhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFyeUNo
YW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkYyOEEyODExQTMzREMzMDA2
MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgz
OTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5jcHA7IHBhdGggPSBsbGlu
dC9MTEludEVudHJ5cG9pbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYw
QjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5oOyBwYXRoID0gbGxpbnQvTExJ
bnRFbnRyeXBvaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NzE0
QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTExJbnRUaHVua3MuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5ODE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJ
bnRUaHVua3MuaDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlckluZm8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Np
b25SYW5nZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwcmVzc2lv
blJhbmdlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODQ5LDkgKzkwOSwx
MyBAQAogCQkwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGhvZENhbGxMaW5rSW5mby5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyog
R2xvYmFsUmVzb2x2ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2xv
YmFsUmVzb2x2ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjgx
NEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2Rl
T2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEZDNDU4MTRCRDE1RjEw
MEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBMTEludENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vblNsb3dQYXRocy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdFZlY3Rvci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBK
SVREcml2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURHJpdmVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAv
KiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0aW9uSGFybmVzcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVD
b252ZW50aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUNv
bnZlbnRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjQyREE1MTNGM0Ix
QkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3Mu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0
RiAvKiBERkdDb2RlQmxvY2tzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERG
R0NvZGVCbG9ja3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg2Miw2ICs5MjYs
MjAgQEAKIAkJMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaXN0YWJsZUhhbmRsZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4
Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklURXhj
ZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDgwMTRCQTU3
MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpJVEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0
NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gt
by5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gSlNDTExJbnRPZmZzZXRz
RXh0cmFjdG9yOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkwRjQ2ODA5
RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5jcHA7IHBhdGggPSBsbGludC9M
TEludEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5
RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5oOyBwYXRoID0gbGxpbnQvTExJbnRFeGNl
cHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlGMTRCQTdGODIw
MEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTExJbnRIZWxwZXJzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50SGVscGVycy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRI
ZWxwZXJzLmg7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8q
IExMSW50Q29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50Q29t
bW9uLmg7IHBhdGggPSBsbGludC9MTEludENvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmln
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oOyBwYXRoID0gbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVy
cHJldGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBM
b3dMZXZlbEludGVycHJldGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExv
d0xldmVsSW50ZXJwcmV0ZXIuaDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8q
IExMSW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTElu
dERhdGEuY3BwOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludERhdGEuaDsgcGF0aCA9IGxsaW50L0xM
SW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMDE0QkJDNUY4
MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJu
VmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSG9zdENhbGxSZXR1cm5W
YWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1RjBGMTE0RDEwNjM2MDBB
Qzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBBYnN0cmFjdFBDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NUYw
RjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQWJzdHJhY3RQQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyogREZHQnl0ZUNvZGVDYWNoZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCeXRlQ29kZUNhY2hlLmg7IHBhdGggPSBkZmcvREZH
Qnl0ZUNvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTU4Nyw2ICsx
NjY1LDEzIEBACiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEMxNEJBN0U1RTAw
QkZFMjcyIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJ
CSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJ
MTQxMjExMUUwQTQ4NzkzQzAwNDgwMjU1IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CkBAIC0xNjQ1LDYgKzE3MzAsNyBAQAogCQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4MDI1NSAvKiBt
aW5pZG9tICovLAogCQkJCTE0QkQ1OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAog
CQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4
MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCiAJCQkp
OwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE2
NzUsNiArMTc2MSw3IEBACiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3Jp
cHRDb3JlUHJlZml4LmggKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5j
cHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5oICovLAorCQkJ
CTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLywKIAkJCQkxNDMyRUJENzBBMzRD
QUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBh
c3NlbWJsZXIgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICov
LApAQCAtMTcxNCw2ICsxODAxLDI4IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9
IDA7CiAJCX07CisJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYwQjgzOTUxNEJDRjQ1QTAw
ODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovLAorCQkJCTBGMEI4Mzk2MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8sCisJCQkJMEYwQjgzOTcxNEJDRjQ1QTAw
ODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLywKKwkJCQkwRjBCODM5ODE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRUaHVua3MuaCAqLywKKwkJCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyog
TExJbnREYXRhLmNwcCAqLywKKwkJCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnRE
YXRhLmggKi8sCisJCQkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmgg
Ki8sCisJCQkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oICovLAorCQkJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJl
dGVyLmNwcCAqLywKKwkJCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRl
cnByZXRlci5oICovLAorCQkJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2Vw
dGlvbnMuY3BwICovLAorCQkJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2Vw
dGlvbnMuaCAqLywKKwkJCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJz
LmNwcCAqLywKKwkJCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmgg
Ki8sCisJCQkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rv
ci5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGxsaW50OworCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKKwkJfTsKIAkJMTQxMjExMDAwQTQ4NzcyNjAwNDgwMjU1IC8qIHRlc3RzICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTE3NDgsNiArMTg1Nyw4IEBA
CiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBI
b3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLywKKwkJCQkwRjQ2ODBEMTE0QkJDNUY4MDBCRkUyNzIg
LyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovLAogCQkJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3
MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLywKIAkJCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIg
LyogSklURXhjZXB0aW9ucy5oICovLAogCQkJCTBGRDgyRTM3MTQxQUIxNDIwMDE3OUM5NCAvKiBD
b21wYWN0SklUQ29kZU1hcC5oICovLApAQCAtMjE3NSw2ICsyMjg2LDggQEAKIAkJN0VGNkUwQkIw
RUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kLmggKi8sCisJCQkJMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1
dGlvbkhhcm5lc3MuaCAqLywKIAkJCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9u
U2xvd1BhdGhzLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3Qu
Y3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmggKi8sCkBA
IC0yNTQ3LDYgKzI2NjAsOCBAQAogCQk5NjlBMDc4RjBFRDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNv
ZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGMjFD
MjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8sCisJCQkJMEYw
RkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi8sCiAJCQkJMEY5
MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmNwcCAqLywKIAkJCQkwRjkz
MzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0dXMuaCAqLywKIAkJCQkwRjkzMzI5
NTE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5jcHAgKi8sCkBAIC0zMDk3LDcgKzMy
MTIsMTYgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBp
biBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4
Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8q
IENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTMxNEJBN0Y4RDAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTUx
NEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0
NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xl
dmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEQzMTRCQkQxNjcwMEJG
RTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEQ1MTRCQkQyNEIw
MEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBC
ODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25S
YW5nZUluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtMzEwNiw3ICszMjMwLDExIEBACiAJCQkJMEYw
QjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVy
bk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEZDNDVBMTRC
RDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyog
Qnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEExNEMzQ0Qy
OTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5
NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY3QjI5NEMxNEMzQ0Q0MzAwN0MzREIxIC8qIERGR0J5dGVDb2RlQ2FjaGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtMzEyNSw2ICszMjUzLDI0IEBACiAvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkw
RjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0g
eworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9
IDBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLzsKKwkJCWJ1aWxk
UGhhc2VzID0gKAorCQkJCTBGNDY4MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovLAor
CQkJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovLAorCQkJCTBGNDY4
MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxl
cyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjIxNEJBODExNTAw
QkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9IEpTQ0xM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3ROYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAv
KiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBw
bGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OwogCQkxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUg
LyogbWluaWRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29u
ZmlndXJhdGlvbkxpc3QgPSAxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovOwpAQCAtMzI1MSwx
MSArMzM5NywyOSBAQAogCQkJCTE0QkQ1OUJFMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICov
LAogCQkJCTkzMkY1QkRBMDgyMkExQzcwMDczNjk3NSAvKiBqc2MgKi8sCiAJCQkJNjUxMTIyRjcx
NDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEUxNEJBN0U1RTAw
QkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKKwkJCQkwRjQ2ODBBOTE0QkE3
RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLywKIAkJCSk7CiAJCX07CiAvKiBFbmQgUEJY
UHJvamVjdCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBz
ZWN0aW9uICovCisJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVk
IFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5w
dXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9sbGludC9Mb3dMZXZlbEFzc2VtYmxlci5hc20i
LAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKKwkJCW91dHB1
dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzL0xMSW50
RGVzaXJlZE9mZnNldHMuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAi
bWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL1wiXG5cbi91c3Iv
YmluL2VudiBydWJ5IFwiJHtTUkNST09UfS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRy
YWN0b3IucmJcIiBcIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc21cIiBc
IiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5o
XCJcbiI7CisJCX07CiAJCTM3MTNGMDE0MTQyOTA1MjQwMDM2Mzg3RiAvKiBDaGVjayBGb3IgSW5h
cHByb3ByaWF0ZSBPYmplY3RpdmUtQyBDbGFzcyBOYW1lcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBA
IC0zMzYxLDcgKzM1MjUsNyBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKLQkJCXNoZWxsU2NyaXB0ID0g
Im1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL2RvY3NcIlxuY2QgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmVcIlxuXG4vYmluL2xuIC1zZmggXCIke1NSQ1JPT1R9XCIgSmF2YVNjcmlw
dENvcmVcbmV4cG9ydCBKYXZhU2NyaXB0Q29yZT1cIkphdmFTY3JpcHRDb3JlXCJcbmV4cG9ydCBC
VUlMVF9QUk9EVUNUU19ESVI9XCIuLi8uLlwiXG5cbm1ha2UgLS1uby1idWlsdGluLXJ1bGVzIC1m
IFwiSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNyL3NiaW4vc3lz
Y3RsIC1uIGh3Lm5jcHVgXG4iOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxU
X1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBc
IiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5c
bi9iaW4vbG4gLXNmaCBcIiR7U1JDUk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFT
Y3JpcHRDb3JlPVwiSmF2YVNjcmlwdENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1c
Ii4uLy4uXCJcblxubWFrZSAtLW5vLWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlXCIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNwdWBcblxu
L3Vzci9iaW4vZW52IHJ1YnkgSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIgSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJHtCVUlMVF9QUk9EVUNUU19E
SVJ9L0pTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciBMTEludEFzc2VtYmx5LmhcbiI7CiAJCX07CiAJ
CTkzMTk1ODZCMDlEOUY5MUEwMEE1NkZENCAvKiBDaGVjayBGb3IgR2xvYmFsIEluaXRpYWxpemVy
cyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKQEAgLTMzOTYsNiAr
MzU2MCwxNCBAQAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEIxNEJB
N0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJ
CQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBp
biBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOworCQl9OwogCQkxNDEyMTExRDBBNDg3OTNDMDA0ODAyNTUgLyogU291cmNlcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKQEAgLTM2NTMsNyArMzgyNSwxNCBAQAogCQkJCTg2NzA0Qjg2MTJEQkEzMzcw
MEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg5MTJEQkEz
MzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI0
MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25z
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRF
eGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3
MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQy
MTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0
NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50
VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4NUI0RiAv
KiBDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjQxNEJDRjg2MDAw
ODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNjlF
ODZDMzE0QzZFNTUxMDAyQzJDNjIgLyogTnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNlcyAqLywK
QEAgLTM2NzgsNiArMzg1NywxNiBAQAogLyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTBGNDY4
MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNh
ID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJG
RTI3MiAvKiBMTEludCBPZmZzZXRzICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMTE0QkE4
MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQkwRjQ2ODBC
NDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9
IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUy
NzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2
ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9Owog
CQkxNDEyMTRCRjBBNDkxOTBFMDA0ODAyNTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsK
IAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEyMTExRjBBNDg3
OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLzsKQEAgLTM3MTEsNiArMzkwMCwxNTAgQEAKIC8qIEVu
ZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZp
Z3VyYXRpb24gc2VjdGlvbiAqLworCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcg
Ki8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChB
UkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJ
R0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMg
PSBOTzsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfT1BU
SU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0g
KAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0ND
X1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBs
ZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NP
TlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZ
RVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5f
VU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0i
ID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJ
bnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJ
TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0g
Tk87CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0g
bWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsK
KwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcyIC8qIFJl
bGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0
dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMg
PSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVT
OworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJ
CUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VY
Q0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxs
dm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87
CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19X
QVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJM
RSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwK
KwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyQoSEVB
REVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VU
ID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gTk87CisJCQkJUFJPRFVDVF9OQU1FID0g
IiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVS
X1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRz
ICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9
OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNh
ID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZ
U19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRf
NjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1B
VElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFO
REFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJ
CUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlH
Q0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VU
X01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQ
RSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURF
Ul9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQo
QlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNI
X1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43Owor
CQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBOTzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRf
TkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BB
VEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJf
U0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJMEY0
NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJD
SF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQp
IjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZP
Uk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0g
Z251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZF
UlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJO
XzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lO
R19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVT
OworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJD
SF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
IiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJP
RFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJ
CVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
TExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQ
cm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQlu
YW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNl
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9Owor
CQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQ
cm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsK
KwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2ODBCMDE0QkE3RkQ5MDBC
RkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3Vy
Y2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEz
QTBBNDg3OTg0MDA0ODAyNTUgLyogRGVidWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CkBAIC0zOTUyLDYgKzQyODUsMjggQEAKIC8q
IEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQ29uZmln
dXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0
c0V4dHJhY3RvciIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVp
bGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVi
dWcgKi8sCisJCQkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJ
MEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODA5OTE0
QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmln
dXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9k
dWN0aW9uOworCQl9OworCQkwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmln
dXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovID0g
eworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMg
PSAoCisJCQkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4
MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4MEFGMTRCQTdGRDkw
MEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8q
IFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUg
PSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJ
MTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3Ig
UEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlv
bkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgJ
KHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQWJz
dHJhY3RNYWNyb0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01MzgsOSArNTM4LDcgQEAg
cHVibGljOgogICAgIHZvaWQgYmVnaW5VbmludGVycnVwdGVkU2VxdWVuY2UoKSB7IH0KICAgICB2
b2lkIGVuZFVuaW50ZXJydXB0ZWRTZXF1ZW5jZSgpIHsgfQogCi0jaWZuZGVmIE5ERUJVRwogICAg
IHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9hc3NlbWJsZXIuZGVidWdPZmZzZXQo
KTsgfQotI2VuZGlmCiAKIHByb3RlY3RlZDoKICAgICBBc3NlbWJsZXJUeXBlIG1fYXNzZW1ibGVy
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Bc3NlbWJsZXJCdWZmZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0Fzc2VtYmxl
ckJ1ZmZlci5oCShyZXZpc2lvbiAxMDY1NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Fzc2VtYmxlckJ1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsOSArMTQ2LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsK
ICAgICAgICAgfQogCi0jaWZuZGVmIE5ERUJVRwogICAgICAgICB1bnNpZ25lZCBkZWJ1Z09mZnNl
dCgpIHsgcmV0dXJuIG1faW5kZXg7IH0KLSNlbmRpZgogCiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICB2b2lkIGFwcGVuZChjb25zdCBjaGFyKiBkYXRhLCBpbnQgc2l6ZSkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShyZXZpc2lvbiAxMDY1NDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2RlZmluZSBHTE9CQUxfVEhVTktfSUQgcmVpbnRl
cnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0xKSkKICNkZWZpbmUgUkVH
RVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+
KC0yKSkKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+CisjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7
CkBAIC0xODksNyArMTg5LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gQ29kZVB0cihNYWNy
b0Fzc2VtYmxlcjo6QXNzZW1ibGVyVHlwZV9UOjpnZXRSZWxvY2F0ZWRBZGRyZXNzKGNvZGUoKSwg
YXBwbHlPZmZzZXQobGFiZWwubV9sYWJlbCkpKTsKICAgICB9CiAKLSNpZm5kZWYgTkRFQlVHCiAg
ICAgdm9pZCogZGVidWdBZGRyZXNzKCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX2NvZGU7CkBA
IC0xOTksNyArMTk4LDYgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgcmV0dXJuIG1fc2l6ZTsK
ICAgICB9Ci0jZW5kaWYKIAogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gVCBh
cHBseU9mZnNldChUIHNyYykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAkocmV2aXNpb24gMTA2NTQwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYu
aAkod29ya2luZyBjb3B5KQpAQCAtMjczLDYgKzI3MywxNCBAQCBwdWJsaWM6CiAgICAgewogICAg
ICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KKyAgICAKKyAg
ICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVz
cyh2b2lkKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIo
dmFsdWUpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0OworICAgICAgICBy
ZXN1bHQubV92YWx1ZSA9IHZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAog
ICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihSZXR1cm5BZGRyZXNzUHRyIHJhKQog
ICAgICAgICA6IG1fdmFsdWUocmEudmFsdWUoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkocmV2aXNpb24gMTA2NTQwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMTc4Nyw5ICsxNzg3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV9mb3JtYXR0
ZXIuZXhlY3V0YWJsZUNvcHkoZ2xvYmFsRGF0YSwgb3duZXJVSUQpOwogICAgIH0KIAotI2lmbmRl
ZiBOREVCVUcKICAgICB1bnNpZ25lZCBkZWJ1Z09mZnNldCgpIHsgcmV0dXJuIG1fZm9ybWF0dGVy
LmRlYnVnT2Zmc2V0KCk7IH0KLSNlbmRpZgogCiAgICAgdm9pZCBub3AoKQogICAgIHsKQEAgLTIx
MzcsOSArMjEzNSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm4gbV9idWZmZXIuZXhl
Y3V0YWJsZUNvcHkoZ2xvYmFsRGF0YSwgb3duZXJVSUQpOwogICAgICAgICB9CiAKLSNpZm5kZWYg
TkRFQlVHCiAgICAgICAgIHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9idWZmZXIu
ZGVidWdPZmZzZXQoKTsgfQotI2VuZGlmCiAKICAgICBwcml2YXRlOgogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVD
b252ZW50aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQnl0ZWNvZGVDb252ZW50
aW9uc19oCisjZGVmaW5lIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCisvLyBSZWdpc3RlciBudW1i
ZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFj
Y29yZGluZyB0byB0aGVpciByYW5nZXM6CisvLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAg
TmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBp
biB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgorLy8gICAgICAweDAwMDAwMDAw
LTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIg
YXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZy
YW1lLgorLy8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJv
bSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUg
Q29kZUJsb2NrLgorc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9
IDB4NDAwMDAwMDA7CisKKyNlbmRpZiAvLyBCeXRlY29kZUNvbnZlbnRpb25zX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3Bw
CShyZXZpc2lvbiAxMDY1NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNyArMjcsNDAgQEAKICNpbmNs
dWRlICJDYWxsTGlua1N0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVk
ZSAiTExJbnRDYWxsTGlua0luZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0NhbGxMaW5rU3Rh
dHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRC
bG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmls
ZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworI2lmIEVOQUJMRShM
TElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKyAgICBMTEludENhbGxMaW5rSW5m
byogY2FsbExpbmtJbmZvID0gaW5zdHJ1Y3Rpb25bNF0udS5jYWxsTGlua0luZm87CisgICAgCisg
ICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0
KCksIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsK
KyNlbmRpZgorfQorCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUlu
ZGV4KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgcmV0
dXJuIENhbGxMaW5rU3RhdHVzKAotICAgICAgICBwcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0lu
Zm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0KCksCi0gICAgICAgIHByb2ZpbGVk
QmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKTsKKyAgICBpZiAoIXByb2Zp
bGVkQmxvY2stPm51bWJlck9mQ2FsbExpbmtJbmZvcygpKQorICAgICAgICByZXR1cm4gY29tcHV0
ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KTsKKyAgICAKKyAgICBpZiAo
cHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCisgICAgICAg
IHJldHVybiBDYWxsTGlua1N0YXR1cygwLCB0cnVlKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiB0
YXJnZXQgPSBwcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFz
dFNlZW5DYWxsZWUuZ2V0KCk7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAgIHJldHVybiBjb21w
dXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIHJl
dHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQsIGZhbHNlKTsKICNlbHNlCiAgICAgcmV0dXJuIENh
bGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlzaW9uIDEwNjU0MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC00NywxNSArNDcsMTcgQEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBDYWxs
TGlua1N0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgp
OwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbFRhcmdldDsg
fQorICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbFRhcmdldCB8fCBtX2Nv
dWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJl
dHVybiAhbV9jYWxsVGFyZ2V0OyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVy
biAhaXNTZXQoKTsgfQogICAgIAogICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7
IHJldHVybiBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCiAgICAgSlNGdW5jdGlvbiogY2Fs
bFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQogICAgIAogcHJpdmF0ZToK
KyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1
bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAgICAKICAgICBKU0Z1bmN0aW9uKiBtX2NhbGxUYXJn
ZXQ7CiAgICAgYm9vbCBtX2NvdWxkVGFrZVNsb3dQYXRoOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMDY1NDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUg
Ikxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5j
bHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTU5LDgg
KzYwLDYgQEAgbmFtZXNwYWNlIEpTQyB7CiB1c2luZyBuYW1lc3BhY2UgREZHOwogI2VuZGlmCiAK
LSNpZiAhZGVmaW5lZChOREVCVUcpIHx8IEVOQUJMRShPUENPREVfU0FNUExJTkcpCi0KIHN0YXRp
YyBVU3RyaW5nIGVzY2FwZVF1b3Rlcyhjb25zdCBVU3RyaW5nJiBzdHIpCiB7CiAgICAgVVN0cmlu
ZyByZXN1bHQgPSBzdHI7CkBAIC0zNTgsMTAgKzM1NywxMCBAQCB2b2lkIENvZGVCbG9jazo6ZHVt
cChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbnN0cnVj
dGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bjb2RlTGVuZ3Roc1tleGVjLT5pbnRlcnByZXRlcigpLT5n
ZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtpXS51Lm9wY29kZSldKQogICAgICAgICArK2luc3Ry
dWN0aW9uQ291bnQ7CiAKLSAgICBwcmludGYoIiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVz
IGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKVxuXG4iLAorICAg
IHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRl
cihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpOyAlZCB2YXJpYWJsZShzKVxuXG4iLAogICAgICAg
ICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbkNvdW50KSwKICAgICAgICAg
c3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9m
KEluc3RydWN0aW9uKSksCi0gICAgICAgIHRoaXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxs
ZWVSZWdpc3RlcnMpOworICAgICAgICB0aGlzLCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVl
UmVnaXN0ZXJzLCBtX251bVZhcnMpOwogCiAgICAgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3Rf
aXRlcmF0b3IgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIFZlY3RvcjxJbnN0
cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGluc3RydWN0aW9ucygpLmVuZCgpOwpAQCAt
ODk4LDYgKzg5NywxNCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNv
CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlf
aWRfdHJhbnNpdGlvbiIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50
UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4
ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJp
YzogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0
X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTI4Niw4ICsxMjkzLDYg
QEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgIH0KIH0KIAot
I2VuZGlmIC8vICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLQog
I2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNTCiBzdGF0aWMgSGFzaFNldDxDb2RlQmxvY2sq
PiBsaXZlQ29kZUJsb2NrU2V0OwogI2VuZGlmCkBAIC0xNDU3LDYgKzE0NjIsNyBAQCBDb2RlQmxv
Y2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsCiB7CiAgICAgc2V0TnVtUGFyYW1ldGVy
cyhvdGhlci5udW1QYXJhbWV0ZXJzKCkpOwogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAg
ICBqaXRBZnRlcldhcm1VcCgpOwogICAgIAogICAgIGlmIChvdGhlci5tX3JhcmVEYXRhKSB7CiAg
ICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTE1MDUsNiArMTUxMSw3IEBA
IENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICBBU1NFUlQobV9z
b3VyY2UpOwogICAgIAogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldh
cm1VcCgpOwogCiAjaWYgRFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJQ1MKICAgICBsaXZlQ29kZUJs
b2NrU2V0LmFkZCh0aGlzKTsKQEAgLTE1MjIsNyArMTUyOSwxMSBAQCBDb2RlQmxvY2s6On5Db2Rl
QmxvY2soKQogI2lmIEVOQUJMRShWRVJCT1NFX1ZBTFVFX1BST0ZJTEUpCiAgICAgZHVtcFZhbHVl
UHJvZmlsZXMoKTsKICNlbmRpZgotICAgIAorCisjaWYgRU5BQkxFKExMSU5UKSAgICAKKyAgICB3
aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxs
cy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7
CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8gV2UgbWF5
IGJlIGRlc3Ryb3llZCBiZWZvcmUgYW55IENvZGVCbG9ja3MgdGhhdCByZWZlciB0byB1cyBhcmUg
ZGVzdHJveWVkLgogICAgIC8vIENvbnNpZGVyIHRoYXQgdHdvIENvZGVCbG9ja3MgYmVjb21lIHVu
cmVhY2hhYmxlIGF0IHRoZSBzYW1lIHRpbWUuIFRoZXJlCkBAIC0xNzM0LDggKzE3NDUsNjkgQEAg
dm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogI2Vsc2UKICAgICBzdGF0
aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5saW5raW5nID0gZmFsc2U7CiAjZW5kaWYKLSNlbmRpZgor
I2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgCisjaWYgRU5BQkxFKExMSU5UKQorICAgIEludGVy
cHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXI7CisgICAgLy8g
aW50ZXJwcmV0ZXItPmVuYWJsZWQoKSByZXR1cm5zIHRydWUgaWYgdGhlIG9sZCBDKysgaW50ZXJw
cmV0ZXIgaXMgZW5hYmxlZC4gSWYgdGhhdCdzIGVuYWJsZWQKKyAgICAvLyB0aGVuIHdlJ3JlIG5v
dCB1c2luZyBMTEludC4KKyAgICBpZiAoIWludGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAg
ICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgp
LCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cklu
c3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNb
aV1dOworICAgICAgICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5z
dHJ1Y3Rpb25bMF0udS5vcGNvZGUpKSB7CisgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoK
KyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICAgICAgICAgIGlmICghY3Vy
SW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rp
b25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAg
cHJpbnRmKCJDbGVhcmluZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3Mgd2l0aCBzdHJ1Y3R1cmUgJXAu
XG4iLCBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgICAgICAg
ICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAg
ICBjdXJJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQgPSAwOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAg
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAg
ICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0
KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9u
WzZdLnUuc3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01h
cmtlZChjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpKSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcp
IHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBwdXQgdHJhbnNp
dGlvbiB3aXRoIHN0cnVjdHVyZXMgJXAgLT4gJXAsIGNoYWluICVwLlxuIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVj
dHVyZUNoYWluLmdldCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY3Vy
SW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJ
bnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1cklu
c3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBj
dXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSA9IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0
X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6Cisg
ICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0
aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVj
dGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5z
dHJ1Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsCisgICAg
ICAgICAgICAgICAgICAgfHwgaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9u
WzBdLnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKKyAgICAgICAgICAg
IGlmICghY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3Vy
SW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAg
cHJpbnRmKCJDbGVhcmluZyBMTEludCBnbG9iYWwgcmVzb2x2ZSBjYWNoZSB3aXRoIHN0cnVjdHVy
ZSAlcC5cbiIsIGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAg
ICAgIGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICBj
dXJJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQgPSAwOworICAgICAgICB9CisgICAgICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgewor
ICAgICAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkgJiYgIUhl
YXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsKKyAg
ICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAg
cHJpbnRmKCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAg
ICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGlmICghIW1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVl
ICYmICFIZWFwOjppc01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxl
ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNl
ZW5DYWxsZWUuY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJ
TlQpCisKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2
ZS4gSWYgd2UgYXJlLCB0aGVuIGpldHRpc29uLgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5
QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Q
cm92ZWQpKSB7CkBAIC0xNzU4LDcgKzE4MzAsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVV
bmNvbmRpdGlvbmFsbHkoCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJP
ZkNhbGxMaW5rSW5mb3MoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoY2FsbExpbmtJbmZvKGkp
LmlzTGlua2VkKCkgJiYgIUhlYXA6OmlzTWFya2VkKGNhbGxMaW5rSW5mbyhpKS5jYWxsZWUuZ2V0
KCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCi0gICAgICAgICAg
ICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcgY2FsbCBmcm9tICVwLlxuIiwgdGhpcyk7CisgICAg
ICAgICAgICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcgY2FsbCBmcm9tICVwIHRvICVwLlxuIiwg
dGhpcywgY2FsbExpbmtJbmZvKGkpLmNhbGxlZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgY2Fs
bExpbmtJbmZvKGkpLnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGlmICghIWNhbGxMaW5rSW5mbyhpKS5sYXN0U2VlbkNhbGxl
ZQpAQCAtMTg1NiwxMCArMTkyOCwxMiBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0
cm9uZ1JlZmVyCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVjbHMuc2l6
ZSgpOyArK2kpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9uRGVjbHNbaV0pOwog
I2lmIEVOQUJMRShJTlRFUlBSRVRFUikKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAg
ICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nl
c3NJbnN0cnVjdGlvbnNbaV1dKTsKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNv
bHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZp
c2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5z
dHJ1Y3Rpb25zW2ldXSk7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXItPmVuYWJs
ZWQoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRT
dHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb25zW2ldXSk7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHZp
c2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5z
dHJ1Y3Rpb25zW2ldXSk7CisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAg
LTE4NjcsOCArMTk0MSw5IEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVm
ZXIKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgZXhlY3V0YWJsZXMgdGhhdCB3ZSBoYXZlIGlu
bGluZWQgZG9uJ3QgZGllLgogICAgICAgICAvLyBGSVhNRTogSWYgdGhleSB3b3VsZCBoYXZlIG90
aGVyd2lzZSBkaWVkLCB3ZSBzaG91bGQgcHJvYmFibHkgdHJpZ2dlciByZWNvbXBpbGF0aW9uLgog
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlubGluZUNhbGxGcmFtZXMoKS5zaXplKCk7
ICsraSkgewotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZXMoKVtp
XS5leGVjdXRhYmxlKTsKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpbmxpbmVDYWxsRnJh
bWVzKClbaV0uY2FsbGVlKTsKKyAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSYgaW5saW5lQ2Fs
bEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lcygpW2ldOworICAgICAgICAgICAgdmlzaXRvci5hcHBl
bmQoJmlubGluZUNhbGxGcmFtZS5leGVjdXRhYmxlKTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBw
ZW5kKCZpbmxpbmVDYWxsRnJhbWUuY2FsbGVlKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpA
QCAtMjA3OCw2ICsyMTUzLDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiB7CiAg
ICAgaWYgKCEhbV9hbHRlcm5hdGl2ZSkKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+dW5saW5rQ2Fs
bHMoKTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xs
aW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9sbGludENhbGxM
aW5rSW5mb3NbaV0uaXNMaW5rZWQoKSkKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9z
W2ldLnVubGluaygpOworICAgIH0KKyNlbmRpZgogICAgIGlmICghKG1fY2FsbExpbmtJbmZvcy5z
aXplKCkgfHwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsK
ICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0yMDkyLDEwICsyMTczLDM5
IEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiAKIHZvaWQgQ29kZUJsb2NrOjp1bmxp
bmtJbmNvbWluZ0NhbGxzKCkKIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgd2hpbGUgKG1faW5j
b21pbmdMTEludENhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisg
ICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCktPnVubGluaygpOworI2VuZGlmCisg
ICAgaWYgKG1faW5jb21pbmdDYWxscy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKICAgICBS
ZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIodGhpcyk7CiAgICAgd2hpbGUgKG1faW5jb21pbmdD
YWxscy5iZWdpbigpICE9IG1faW5jb21pbmdDYWxscy5lbmQoKSkKICAgICAgICAgbV9pbmNvbWlu
Z0NhbGxzLmJlZ2luKCktPnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKIH0K
KwordW5zaWduZWQgQ29kZUJsb2NrOjpieXRlY29kZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMsIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAg
aWYgKHJldHVybkFkZHJlc3MudmFsdWUoKSA+PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9i
ZWdpbikKKyAgICAgICAgJiYgcmV0dXJuQWRkcmVzcy52YWx1ZSgpIDw9IGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X2VuZCkpIHsKKyAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpKTsK
KyAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpID09IHRoaXMpOworICAgICAgICBBU1NF
UlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CisgICAgICAgIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiA9IGV4ZWMtPmN1cnJlbnRWUEMoKTsKKyAgICAgICAgQVNTRVJU
KGluc3RydWN0aW9uKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9u
KTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyNlbmRpZgorICAgIGlm
ICghbV9yYXJlRGF0YSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgVmVjdG9yPENhbGxSZXR1cm5P
ZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxS
ZXR1cm5JbmRleFZlY3RvcjsKKyAgICBpZiAoIWNhbGxJbmRpY2VzLnNpemUoKSkKKyAgICAgICAg
cmV0dXJuIDE7CisgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJl
Z2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFk
ZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKK30KICNlbmRpZgogCiB2b2lkIENvZGVC
bG9jazo6Y2xlYXJFdmFsQ2FjaGUoKQpAQCAtMjE5MSwyNCArMjMwMSw0NSBAQCBib29sIEZ1bmN0
aW9uQ29kZUJsb2NrOjpjYW5Db21waWxlV2l0aERGCiAKIHZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6
amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxp
bmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgp
KSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8
UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVk
Q29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBFdmFsQ29kZUJsb2NrOjpqZXR0aXNvbigp
CiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Cisg
ICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBB
U1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0
YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxE
YXRhKCkpOwogfQogCiB2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAg
QVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJU
KEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhp
cyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
Pihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZUZvcigqZ2xvYmFsRGF0
YSgpLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOwog
fQorCit2b2lkIFByb2dyYW1Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVy
cHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+
aml0Q29tcGlsZShnbG9iYWxEYXRhKTsKK30KKwordm9pZCBFdmFsQ29kZUJsb2NrOjpqaXRDb21w
aWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdldEpJVFR5
cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhpcyA9PSBy
ZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihv
d25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZ2xvYmFsRGF0YSk7Cit9CisKK3ZvaWQgRnVu
Y3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
K3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmsp
OworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGVG
b3IoZ2xvYmFsRGF0YSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVG
b3JDYWxsKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtMjMx
MSw2ICsyNDQyLDE4IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wVmFsdWVQcm9maWxlcygpCiB9CiAj
ZW5kaWYKIAordm9pZCBDb2RlQmxvY2s6OmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVu
aXR5KCkKK3sKKyNpZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykgJiYgIUVOQUJMRShMTElOVCkK
KyAgICBpZiAoQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKCEhYWx0ZXJuYXRpdmUoKSkKKyAgICAgICAgZGlzY2FyZEJ5dGVj
b2RlKCk7CisgICAgZWxzZQorICAgICAgICBkaXNjYXJkQnl0ZWNvZGVMYXRlcigpOworI2VuZGlm
Cit9CisKICNpZm5kZWYgTkRFQlVHCiBib29sIENvZGVCbG9jazo6dXNlc09wY29kZShPcGNvZGVJ
RCBvcGNvZGVJRCkKIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRl
ZiBDb2RlQmxvY2tfaAogI2RlZmluZSBDb2RlQmxvY2tfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVD
b252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgpA
QCAtNTAsNiArNTEsNyBAQAogI2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJ
bnRDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJMaW5lSW5mby5oIgogI2luY2x1ZGUgIk5vZGVz
LmgiCiAjaW5jbHVkZSAiUHJlZGljdGlvblRyYWNrZXIuaCIKQEAgLTY1LDE2ICs2NywxMSBAQAog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgog
Ci0vLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRp
ZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6Ci0vLyAgICAgIDB4ODAw
MDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9p
bnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgot
Ly8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUg
Q2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhl
IGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgotLy8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBv
c2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29u
c3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgotc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7Ci0KIG5hbWVzcGFjZSBKU0MgewogCi0gICAg
Y2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgRXhl
Y1N0YXRlOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGlubGluZSBp
bnQgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGludCBhcmd1bWVudHNSZWdpc3RlcikgeyBy
ZXR1cm4gYXJndW1lbnRzUmVnaXN0ZXIgLSAxOyB9CiAKQEAgLTgzLDYgKzgwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXIsIHB1YmxpYyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyIHsKICAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICBlbnVt
IENvcHlQYXJzZWRCbG9ja1RhZyB7IENvcHlQYXJzZWRCbG9jayB9OwogICAgIHByb3RlY3RlZDoK
QEAgLTEyMyw3ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHdoaWxlIChy
ZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5h
bHRlcm5hdGl2ZSgpOwogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgICAgICBB
U1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAg
ICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlw
ZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAjZW5kaWYKQEAg
LTEzNCwxMSArMTMyLDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgc3RhdGljIHZvaWQg
ZHVtcFN0YXRpc3RpY3MoKTsKIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFX09QQ09E
RV9TQU1QTElORwogICAgICAgICB2b2lkIGR1bXAoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAg
IHZvaWQgcHJpbnRTdHJ1Y3R1cmVzKGNvbnN0IEluc3RydWN0aW9uKikgY29uc3Q7CiAgICAgICAg
IHZvaWQgcHJpbnRTdHJ1Y3R1cmUoY29uc3QgY2hhciogbmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24q
LCBpbnQgb3BlcmFuZCkgY29uc3Q7Ci0jZW5kaWYKIAogICAgICAgICBib29sIGlzU3RyaWN0TW9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNTdHJpY3RNb2RlOyB9CiAKQEAgLTE5NCwxNSArMTkwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0
aG9kQ2FsbExpbmtJbmZvLCB1bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJ
bmRleD4obV9tZXRob2RDYWxsTGlua0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZv
cy5zaXplKCksIGJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLSAgICAgICAg
ewotICAgICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICAgICAgICAgIHJldHVybiAx
OwotICAgICAgICAgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYg
Y2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKLSAgICAg
ICAgICAgIGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAx
OwotICAgICAgICAgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJl
Z2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFk
ZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKLSAgICAgICAgfQorICAgICAgICB1bnNp
Z25lZCBieXRlY29kZU9mZnNldChFeGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAg
ICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4
KQogICAgICAgICB7CkBAIC0yMjMsMTEgKzIxMSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgewogICAgICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwogICAgICAg
ICB9CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoTExJ
bnRDYWxsTGlua0luZm8qIGluY29taW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2luY29t
aW5nTExJbnRDYWxscy5wdXNoKGluY29taW5nKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJM
RShMTElOVCkKICAgICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5rSW5jb21pbmdDYWxscygpOwot
I2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAotI2lmIEVOQUJMRShERkdfSklUKQorI2lm
IEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIHZvaWQgc2V0SklUQ29k
ZU1hcChQYXNzT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBqaXRDb2RlTWFwKQogICAgICAgICB7
CiAgICAgICAgICAgICBtX2ppdENvZGVNYXAgPSBqaXRDb2RlTWFwOwpAQCAtMjM2LDcgKzIzMCw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9qaXRD
b2RlTWFwLmdldCgpOwogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgCisjaWYgRU5BQkxFKERG
R19KSVQpCiAgICAgICAgIHZvaWQgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCkKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKCEhbV9kZmdEYXRhKQpAQCAtMzM1LDEyICszMzEsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVS
KQogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChJbnN0cnVjdGlvbiogcmV0dXJuQWRk
cmVzcykKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJldHVybkFkZHJlc3MgPj0gaW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKSAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zKCkuZW5k
KCkpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJu
QWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgICAgICB9Ci0jZW5kaWYKIAog
ICAgICAgICB2b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0Nv
bXBhcmVGdW5jdGlvbikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0Nv
bXBhcmVGdW5jdGlvbjsgfQogICAgICAgICBib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbigp
IHsgcmV0dXJuIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CkBAIC0zNTQsMTcgKzM0OSw5
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICBtX3Nob3VsZERpc2Nh
cmRCeXRlY29kZSA9IHRydWU7CiAgICAgICAgIH0KLSAgICAgICAgdm9pZCBoYW5kbGVCeXRlY29k
ZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICghIWFs
dGVybmF0aXZlKCkpCi0gICAgICAgICAgICAgICAgZGlzY2FyZEJ5dGVjb2RlKCk7Ci0gICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZGlzY2FyZEJ5dGVjb2RlTGF0ZXIoKTsKLSAgICAg
ICAgfQorICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7
CiAgICAgICAgIAotI2lmbmRlZiBOREVCVUcKICAgICAgICAgYm9vbCB1c2VzT3Bjb2RlKE9wY29k
ZUlEKTsKLSNlbmRpZgogCiAgICAgICAgIHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQoKSB7IHJl
dHVybiBtX2luc3RydWN0aW9uQ291bnQ7IH0KICAgICAgICAgdm9pZCBzZXRJbnN0cnVjdGlvbkNv
dW50KHVuc2lnbmVkIGluc3RydWN0aW9uQ291bnQpIHsgbV9pbnN0cnVjdGlvbkNvdW50ID0gaW5z
dHJ1Y3Rpb25Db3VudDsgfQpAQCAtMzg3LDYgKzM3NCwxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZSogZXhlY3V0YWJsZU1lbW9yeSgpIHsgcmV0dXJu
IGdldEpJVENvZGUoKS5nZXRFeGVjdXRhYmxlTWVtb3J5KCk7IH0KICAgICAgICAgdmlydHVhbCBK
U09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCkgPSAwOworICAgICAgICBib29sIGpp
dENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspIHsKKyAgICAg
ICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBqaXRDb21waWxlSW1wbChnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpID0gMDsK
IAogICAgICAgICBlbnVtIENvbXBpbGVXaXRoREZHU3RhdGUgewpAQCAtNDA2LDEzICs0MDIsMTMg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBoYXNPcHRpbWl6ZWRSZXBsYWNlbWVu
dCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVD
b2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgYm9vbCByZXN1bHQgPSByZXBsYWNlbWVu
dCgpLT5nZXRKSVRUeXBlKCkgPiBnZXRKSVRUeXBlKCk7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1l
bnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CiAgICAgICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID09
IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6
aXNCYXNlbGluZUNvZGUocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAg
ICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCkgPT0gdGhpcyk7CiAgICAgICAgICAgICB9CiAjZW5k
aWYKQEAgLTQ3MSwxOCArNDY3LDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQg
Y2xlYXJFdmFsQ2FjaGUoKTsKIAotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgdm9p
ZCBhZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKHVuc2lnbmVkIHByb3BlcnR5QWNjZXNzSW5z
dHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5V
c2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmFw
cGVuZChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKTsKKyAgICAgICAgICAgIG1fcHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbnMuYXBwZW5kKHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOwogICAg
ICAgICB9CiAgICAgICAgIHZvaWQgYWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKHVuc2lnbmVk
IGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFt
X2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9ucy5hcHBlbmQoZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKTsKKyAgICAgICAg
ICAgIG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5hcHBlbmQoZ2xvYmFsUmVzb2x2ZUluc3Ry
dWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICBib29sIGhhc0dsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbkF0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOworI2lmIEVOQUJM
RShMTElOVCkKKyAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGFkZExMSW50Q2FsbExpbmtJbmZv
KCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3MuYXBwZW5kKExM
SW50Q2FsbExpbmtJbmZvKCkpOworICAgICAgICAgICAgcmV0dXJuICZtX2xsaW50Q2FsbExpbmtJ
bmZvcy5sYXN0KCk7CisgICAgICAgIH0KICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgICAg
IHZvaWQgc2V0TnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3Moc2l6ZV90IHNpemUpIHsgbV9zdHJ1
Y3R1cmVTdHViSW5mb3MuZ3JvdyhzaXplKTsgfQpAQCAtNDkxLDggKzQ5MCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkR2xvYmFsUmVzb2x2ZUluZm8odW5zaWduZWQgZ2xv
YmFsUmVzb2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9nbG9i
YWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbmZv
cy5hcHBlbmQoR2xvYmFsUmVzb2x2ZUluZm8oZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKSk7Cisg
ICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbmZvcy5hcHBlbmQoR2xvYmFsUmVzb2x2ZUluZm8o
Z2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKSk7CiAgICAgICAgIH0KICAgICAgICAgR2xvYmFsUmVz
b2x2ZUluZm8mIGdsb2JhbFJlc29sdmVJbmZvKGludCBpbmRleCkgeyByZXR1cm4gbV9nbG9iYWxS
ZXNvbHZlSW5mb3NbaW5kZXhdOyB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluZm9B
dEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTUwMyw2ICs1MDEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGFkZE1ldGhvZENhbGxMaW5rSW5m
b3ModW5zaWduZWQgbikgeyBBU1NFUlQobV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSk7IG1fbWV0
aG9kQ2FsbExpbmtJbmZvcy5ncm93KG4pOyB9CiAgICAgICAgIE1ldGhvZENhbGxMaW5rSW5mbyYg
bWV0aG9kQ2FsbExpbmtJbmZvKGludCBpbmRleCkgeyByZXR1cm4gbV9tZXRob2RDYWxsTGlua0lu
Zm9zW2luZGV4XTsgfQorICAgICAgICBzaXplX3QgbnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9z
KCkgeyByZXR1cm4gbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKTsgfQogI2VuZGlmCiAgICAg
ICAgIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKQEAgLTU0Myw2ICs1NDIsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0XS51Lm9wY29kZSkpIC0gMV0udS5wcm9maWxlID09IHJlc3VsdCk7CiAgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CisgICAgICAgIFByZWRpY3RlZFR5cGUgdmFsdWVQ
cm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgICAgIH0K
ICAgICAgICAgCiAgICAgICAgIHVuc2lnbmVkIHRvdGFsTnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkK
ICAgICAgICAgewpAQCAtNTY5LDEyICs1NzIsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IAogICAgICAgICBib29sIGxpa2VseVRvVGFrZVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkK
ICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1
ZSA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9j
b3VudGVyOwogICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49IE9wdGlvbnM6Omxpa2VseVRvVGFr
ZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIC8gbV9l
eGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNo
b2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGNvdWxkVGFrZVNsb3dDYXNl
KGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJP
ZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0
KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49
IE9wdGlvbnM6OmNvdWxkVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRv
dWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6OmNvdWxkVGFr
ZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CkBAIC01OTMsMTIgKzYwMCwxNiBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlU3BlY2lhbEZh
c3RDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFu
dW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0
Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsK
ICAgICAgICAgICAgIHJldHVybiBzcGVjaWFsRmFzdENhc2VDb3VudCA+PSBPcHRpb25zOjpsaWtl
bHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHNwZWNp
YWxGYXN0Q2FzZUNvdW50KSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtl
bHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
Ym9vbCBsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHNsb3dDYXNl
Q291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCkt
Pm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0g
c3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+
bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBzbG93Q2FzZUNvdW50IC0g
c3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBAIC02MDcsNiArNjE4LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZUFueVNsb3dDYXNlKGludCBieXRl
Y29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNl
UHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1
bnNpZ25lZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFs
RmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0g
c2xvd0Nhc2VDb3VudCArIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNzA0LDcgKzcxNyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBhZGRGcmVxdWVudEV4aXRT
aXRlKGNvbnN0IERGRzo6RnJlcXVlbnRFeGl0U2l0ZSYgc2l0ZSkKICAgICAgICAgewotICAgICAg
ICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAg
ICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CiAg
ICAgICAgICAgICByZXR1cm4gbV9leGl0UHJvZmlsZS5hZGQoc2l0ZSk7CiAgICAgICAgIH0KIApA
QCAtODEyLDYgKzgyNSwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBjb3B5UG9z
dFBhcnNlRGF0YUZyb20oQ29kZUJsb2NrKiBhbHRlcm5hdGl2ZSk7CiAgICAgICAgIHZvaWQgY29w
eVBvc3RQYXJzZURhdGFGcm9tQWx0ZXJuYXRpdmUoKTsKICAgICAgICAgCisgICAgICAgIC8vIEZ1
bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiBKSVR0aW5nIGtpY2tzIGluLCBpbiBhIG1peGVk
IG1vZGUKKyAgICAgICAgLy8gZXhlY3V0aW9uIHdvcmxkLgorICAgICAgICAKKyAgICAgICAgdm9p
ZCBkb250SklUQW55dGltZVNvb24oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhl
Y3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55
dGltZVNvb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0QWZ0ZXJXYXJt
VXAoKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRp
b25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRTb29uKCkKKyAgICAgICAgeworICAgICAgICAgICAg
bV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
SklUU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50MzJfdCBsbGludEV4ZWN1
dGVDb3VudGVyKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG1fbGxpbnRF
eGVjdXRlQ291bnRlcjsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgLy8gRnVuY3Rpb25z
IGZvciBjb250cm9sbGluZyB3aGVuIHRpZXJlZCBjb21waWxhdGlvbiBraWNrcyBpbi4gVGhpcwog
ICAgICAgICAvLyBjb250cm9scyBib3RoIHdoZW4gdGhlIG9wdGltaXppbmcgY29tcGlsZXIgaXMg
aW52b2tlZCBhbmQgd2hlbiBPU1IKICAgICAgICAgLy8gZW50cnkgaGFwcGVucy4gVHdvIHRyaWdn
ZXJzIGV4aXN0OiB0aGUgbG9vcCB0cmlnZ2VyIGFuZCB0aGUgcmV0dXJuCkBAIC0xMDA0LDYgKzEw
NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3Nob3VsZERpc2NhcmRCeXRl
Y29kZTsKIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJ
bXBsKEpTR2xvYmFsRGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0V2Vha1Jl
ZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplVW5j
b25kaXRpb25hbGx5KCk7CiAgICAgICAgIApAQCAtMTAxNiw3ICsxMDUzLDYgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHZvaWQgdGFsbHlGcmVxdWVudEV4aXRTaXRlcygpIHsgfQogI2VuZGlm
CiAgICAgICAgIAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElO
RykKICAgICAgICAgdm9pZCBkdW1wKEV4ZWNTdGF0ZSosIGNvbnN0IFZlY3RvcjxJbnN0cnVjdGlv
bj46OmNvbnN0X2l0ZXJhdG9yJiBiZWdpbiwgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRl
cmF0b3ImKSBjb25zdDsKIAogICAgICAgICBDU3RyaW5nIHJlZ2lzdGVyTmFtZShFeGVjU3RhdGUq
LCBpbnQgcikgY29uc3Q7CkBAIC0xMDI2LDcgKzEwNjIsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdm9pZCBwcmludEdldEJ5SWRPcChFeGVjU3RhdGUqLCBpbnQgbG9jYXRpb24sIFZlY3Rv
cjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yJiwgY29uc3QgY2hhciogb3ApIGNvbnN0Owog
ICAgICAgICB2b2lkIHByaW50Q2FsbE9wKEV4ZWNTdGF0ZSosIGludCBsb2NhdGlvbiwgVmVjdG9y
PEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3ImLCBjb25zdCBjaGFyKiBvcCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgcHJpbnRQdXRCeUlkT3AoRXhlY1N0YXRlKiwgaW50IGxvY2F0aW9uLCBWZWN0
b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciYsIGNvbnN0IGNoYXIqIG9wKSBjb25zdDsK
LSNlbmRpZgogICAgICAgICB2b2lkIHZpc2l0U3RydWN0dXJlcyhTbG90VmlzaXRvciYsIEluc3Ry
dWN0aW9uKiB2UEMpIGNvbnN0OwogICAgICAgICAKICNpZiBFTkFCTEUoREZHX0pJVCkKQEAgLTEw
ODcsOSArMTEyMiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFNvdXJjZVBy
b3ZpZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7CiAKLSNp
ZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9wcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2dsb2JhbFJl
c29sdmVJbnN0cnVjdGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBTZWdtZW50ZWRW
ZWN0b3I8TExJbnRDYWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxsTGlua0luZm9zOworICAgICAg
ICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxO
b2RlPExMSW50Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdMTEludENhbGxzOwogI2VuZGlmCiAj
aWYgRU5BQkxFKEpJVCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0cnVj
dHVyZVN0dWJJbmZvczsKQEAgLTExMDAsOSArMTEzNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNoZWNrOwogICAg
ICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9k
ZTxDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2VuZGlmCi0jaWYgRU5BQkxFKERG
R19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgT3du
UHRyPENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAgICAgIAorI2VuZGlmCisj
aWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFrUmVmZXJlbmNlVHJhbnNpdGlv
biB7CiAgICAgICAgICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigpIHsgfQogICAgICAgICAg
ICAgCkBAIC0xMTY1LDEyICsxMjAzLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93
blB0cjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAgIAorICAgICAgICBpbnQzMl90
IG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAgICAgIGludDMyX3QgbV9qaXRF
eGVjdXRlQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3Vu
dGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFpbENvdW50ZXI7CiAgICAgICAg
IHVpbnQ4X3QgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9y
ZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKLQorICAgICAgICAKICAgICAgICAgc3RydWN0IFJh
cmVEYXRhIHsKICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHB1
YmxpYzoKQEAgLTEyNDYsNiArMTI4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3Rl
ZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUq
LCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAg
ICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29s
IGNhbkNvbXBpbGVXaXRoREZHSW50ZXJuYWwoKTsKICNlbmRpZgpAQCAtMTI4MCw2ICsxMzIxLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2Jq
ZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29t
cGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBs
YWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkdJbnRlcm5h
bCgpOwogI2VuZGlmCkBAIC0xMzE3LDYgKzEzNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBw
cm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhl
Y1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29u
KCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKTsK
ICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1
YWwgYm9vbCBjYW5Db21waWxlV2l0aERGR0ludGVybmFsKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAkocmV2aXNpb24gMTA2NTQw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAkod29ya2lu
ZyBjb3B5KQpAQCAtODMsMTAgKzgzLDggQEAgc3RydWN0IENvZGVPcmlnaW4gewogICAgIAogICAg
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBDb2RlT3JpZ2luJiBvdGhlcikgY29uc3QgeyByZXR1cm4g
ISgqdGhpcyA9PSBvdGhlcik7IH0KICAgICAKLSNpZm5kZWYgTkRFQlVHCiAgICAgLy8gR2V0IHRo
ZSBpbmxpbmUgc3RhY2suIFRoaXMgaXMgc2xvdywgYW5kIGlzIGludGVuZGVkIGZvciBkZWJ1Z2dp
bmcgb25seS4KICAgICBWZWN0b3I8Q29kZU9yaWdpbj4gaW5saW5lU3RhY2soKSBjb25zdDsKLSNl
bmRpZgogfTsKIAogc3RydWN0IElubGluZUNhbGxGcmFtZSB7CkBAIC0xMjIsNyArMTIwLDYgQEAg
aW5saW5lIGJvb2wgQ29kZU9yaWdpbjo6b3BlcmF0b3I9PShjb25zdAogICAgICAgICAmJiBpbmxp
bmVDYWxsRnJhbWUgPT0gb3RoZXIuaW5saW5lQ2FsbEZyYW1lOwogfQogICAgIAotI2lmbmRlZiBO
REVCVUcKIC8vIEdldCB0aGUgaW5saW5lIHN0YWNrLiBUaGlzIGlzIHNsb3csIGFuZCBpcyBpbnRl
bmRlZCBmb3IgZGVidWdnaW5nIG9ubHkuCiBpbmxpbmUgVmVjdG9yPENvZGVPcmlnaW4+IENvZGVP
cmlnaW46OmlubGluZVN0YWNrKCkgY29uc3QKIHsKQEAgLTEzMyw3ICsxMzAsNiBAQCBpbmxpbmUg
VmVjdG9yPENvZGVPcmlnaW4+IENvZGVPcmlnaW46OmluCiAgICAgICAgIHJlc3VsdFtpbmRleC0t
XSA9IGN1cnJlbnQtPmNhbGxlcjsKICAgICByZXR1cm4gcmVzdWx0OwogfQotI2VuZGlmCiAKIGlu
bGluZSB1bnNpZ25lZCBnZXRDYWxsUmV0dXJuT2Zmc2V0Rm9yQ29kZU9yaWdpbihDb2RlT3JpZ2lu
QXRDYWxsUmV0dXJuT2Zmc2V0KiBkYXRhKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0RGR0V4aXRQcm9maWxlLmgJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9ERkdFeGl0UHJvZmlsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00MSw3ICs0MSw2IEBAIGVudW0gRXhpdEtpbmQgewogICAgIFVuY291bnRhYmxlLCAv
LyBXZSBleGl0ZWQgZm9yIG5vbmUgb2YgdGhlIGFib3ZlIHJlYXNvbnMsIGFuZCB3ZSBzaG91bGQg
bm90IGNvdW50IGl0LiBNb3N0IHVzZXMgb2YgdGhpcyBzaG91bGQgYmUgdmlld2VkIGFzIGEgRklY
TUUuCiB9OwogCi0jaWZuZGVmIE5ERUJVRwogaW5saW5lIGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9T
dHJpbmcoRXhpdEtpbmQga2luZCkKIHsKICAgICBzd2l0Y2ggKGtpbmQpIHsKQEAgLTU5LDcgKzU4
LDYgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGV4aXRLaW5kVG9TdHJpbmcoRXhpdAogICAgICAgICBy
ZXR1cm4gIlVua25vd24iOwogICAgIH0KIH0KLSNlbmRpZgogCiBpbmxpbmUgYm9vbCBleGl0S2lu
ZElzQ291bnRhYmxlKEV4aXRLaW5kIGtpbmQpCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvRGF0YUZvcm1hdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EYXRhRm9ybWF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTUw
LDcgKzUwLDYgQEAgZW51bSBEYXRhRm9ybWF0IHsKICAgICBEYXRhRm9ybWF0SlNCb29sZWFuID0g
RGF0YUZvcm1hdEpTIHwgRGF0YUZvcm1hdEJvb2xlYW4KIH07CiAKLSNpZm5kZWYgTkRFQlVHCiBp
bmxpbmUgY29uc3QgY2hhciogZGF0YUZvcm1hdFRvU3RyaW5nKERhdGFGb3JtYXQgZGF0YUZvcm1h
dCkKIHsKICAgICBzd2l0Y2ggKGRhdGFGb3JtYXQpIHsKQEAgLTgwLDcgKzc5LDYgQEAgaW5saW5l
IGNvbnN0IGNoYXIqIGRhdGFGb3JtYXRUb1N0cmluZyhEYQogICAgICAgICByZXR1cm4gIlVua25v
d24iOwogICAgIH0KIH0KLSNlbmRpZgogCiAjaWYgVVNFKEpTVkFMVUU2NCkKIGlubGluZSBib29s
IG5lZWREYXRhRm9ybWF0Q29udmVyc2lvbihEYXRhRm9ybWF0IGZyb20sIERhdGFGb3JtYXQgdG8p
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuY3BwCShyZXZpc2lvbiAxMDY1NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDIwICsyNyw0OSBAQAog
I2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2lu
Y2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0dldEJ5
SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2Zp
bGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQorewor
ICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNv
ZGVJbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CisgICAgCisgICAgaWYgKGluc3RydWN0aW9uWzBd
LnUub3Bjb2RlID09IGxsaW50X29wX21ldGhvZF9jaGVjaykKKyAgICAgICAgaW5zdHJ1Y3Rpb24r
KzsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1
cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUpCisgICAgICAgIHJldHVybiBHZXRCeUlkU3Rh
dHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOworICAg
IAorICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xv
YmFsRGF0YSgpLCBpZGVudCk7CisgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICAgICAg
cmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZv
dW5kLCBmYWxzZSk7CisgICAgCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoU2ltcGxlRGlyZWN0
LCBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSwgb2Zmc2V0LCBmYWxzZSk7CisjZWxzZQorICAgIHJl
dHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3Vu
ZCwgZmFsc2UpOworI2VuZGlmCit9CisKIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgs
IElkZW50aWZpZXImIGlkZW50KQogewogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsK
ICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50
KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgaWYgKCFw
cm9maWxlZEJsb2NrLT5udW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcygpKQorICAgICAgICByZXR1
cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7
CisgICAgCiAgICAgLy8gRmlyc3QgY2hlY2sgaWYgaXQgbWFrZXMgZWl0aGVyIGNhbGxzLCBpbiB3
aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUgc3VwZXIgY2FyZWZ1bCwgb3IKICAgICAvLyBpZiBpdCdz
IG5vdCBzZXQgYXQgYWxsLCBpbiB3aGljaCBjYXNlIHdlIHB1bnQuCiAgICAgU3RydWN0dXJlU3R1
YkluZm8mIHN0dWJJbmZvID0gcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm8oYnl0ZWNvZGVJbmRl
eCk7CiAgICAgaWYgKCFzdHViSW5mby5zZWVuKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1
cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICByZXR1
cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7
CiAgICAgCiAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0KiBsaXN0OwogICAgIGlu
dCBsaXN0U2l6ZTsKQEAgLTYwLDE4ICs4OSwxOSBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0
dXM6OmNvbXB1dGVGb3IoCiAgICAgfQogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGlzdFNpemU7
ICsraSkgewogICAgICAgICBpZiAoIWxpc3QtPmxpc3RbaV0uaXNEaXJlY3QpCi0gICAgICAgICAg
ICByZXR1cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91
bmQpOworICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTWFrZXNDYWxscywgU3RydWN0
dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsKICAgICB9CiAgICAgCiAgICAgLy8gTmV4dCBjaGVj
ayBpZiBpdCB0YWtlcyBzbG93IGNhc2UsIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBiZSBraW5k
IG9mIGNhcmVmdWwuCiAgICAgaWYgKHByb2ZpbGVkQmxvY2stPmxpa2VseVRvVGFrZVNsb3dDYXNl
KGJ5dGVjb2RlSW5kZXgpKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQ
YXRoLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhUYWtlc1Nsb3dQYXRoLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIHRydWUpOwogICAg
IAogICAgIC8vIEZpbmFsbHkgZmlndXJlIG91dCBpZiB3ZSBjYW4gZGVyaXZlIGFuIGFjY2VzcyBz
dHJhdGVneS4KICAgICBHZXRCeUlkU3RhdHVzIHJlc3VsdDsKKyAgICByZXN1bHQubV93YXNTZWVu
SW5KSVQgPSB0cnVlOwogICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewogICAgIGNh
c2UgYWNjZXNzX3Vuc2V0OgotICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZy
b21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgICAgIAog
ICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9zZWxmOiB7CiAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gc3R1YkluZm8udS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0U3RydWN0dXJlLmdldCgp
OwpAQCAtMTMwLDcgKzE2MCw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0
ZUZvcigKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UgLy8gRU5BQkxFKEpJVCkKLSAg
ICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90
Rm91bmQpOworICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVy
ZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOwogI2VuZGlmIC8vIEVOQUJMRShKSVQpCiB9CiAKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAko
cmV2aXNpb24gMTA2NTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDExIEBAIHB1YmxpYzoKICAg
ICB7CiAgICAgfQogICAgIAotICAgIEdldEJ5SWRTdGF0dXMoU3RhdGUgc3RhdGUsIGNvbnN0IFN0
cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0LCBzaXplX3Qgb2Zmc2V0KQorICAgIEdldEJ5SWRTdGF0
dXMoU3RhdGUgc3RhdGUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0LCBzaXplX3Qg
b2Zmc2V0LCBib29sIHdhc1NlZW5JbkpJVCkKICAgICAgICAgOiBtX3N0YXRlKHN0YXRlKQogICAg
ICAgICAsIG1fc3RydWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAgICAgLCBtX29mZnNldChv
ZmZzZXQpCisgICAgICAgICwgbV93YXNTZWVuSW5KSVQod2FzU2VlbkluSklUKQogICAgIHsKICAg
ICAgICAgQVNTRVJUKChzdGF0ZSA9PSBTaW1wbGVEaXJlY3QpID09IChvZmZzZXQgIT0gbm90Rm91
bmQpKTsKICAgICB9CkBAIC03MCwxMCArNzEsMTUgQEAgcHVibGljOgogICAgIGNvbnN0IFN0cnVj
dHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9zdHJ1Y3R1cmVTZXQ7IH0K
ICAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKKyAg
ICBib29sIHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2FzU2VlbkluSklUOyB9Cisg
ICAgCiBwcml2YXRlOgorICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQo
Q29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYpOworICAgIAog
ICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgU3RydWN0dXJlU2V0IG1fc3RydWN0dXJlU2V0OwogICAg
IHNpemVfdCBtX29mZnNldDsKKyAgICBib29sIG1fd2FzU2VlbkluSklUOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1
Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5z
dHJ1Y3Rpb24uaAkocmV2aXNpb24gMTA2NTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNDZWxsOwogICAgIGNsYXNzIFN0cnVjdHVyZTsKICAg
ICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKKyAgICBzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm87CiAg
ICAgc3RydWN0IFZhbHVlUHJvZmlsZTsKIAogI2lmIEVOQUJMRShKSVQpCkBAIC0xNDYsNiArMTQ3
LDExIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb24g
eworICAgICAgICBJbnN0cnVjdGlvbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIHUuanNDZWxs
LmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIEluc3RydWN0aW9uKE9wY29k
ZSBvcGNvZGUpCiAgICAgICAgIHsKICNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVU
RVIpCkBAIC0xODIsNiArMTg4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgSW5zdHJ1
Y3Rpb24oUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYykgeyB1LmdldHRlckZ1
bmMgPSBnZXR0ZXJGdW5jOyB9CiAgICAgICAgIAorICAgICAgICBJbnN0cnVjdGlvbihMTEludENh
bGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSB7IHUuY2FsbExpbmtJbmZvID0gY2FsbExpbmtJbmZv
OyB9CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihWYWx1ZVByb2ZpbGUqIHByb2ZpbGUp
IHsgdS5wcm9maWxlID0gcHJvZmlsZTsgfQogCiAgICAgICAgIHVuaW9uIHsKQEAgLTE5MSw3ICsx
OTksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8U3Ry
dWN0dXJlQ2hhaW4+IHN0cnVjdHVyZUNoYWluOwogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFz
ZTxKU0NlbGw+IGpzQ2VsbDsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
IGdldHRlckZ1bmM7CisgICAgICAgICAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
OwogICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlOworICAgICAgICAgICAgdm9pZCog
cG9pbnRlcjsKICAgICAgICAgfSB1OwogICAgICAgICAKICAgICBwcml2YXRlOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxs
TGlua0luZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50Q2FsbExpbmtJbmZv
X2gKKyNkZWZpbmUgTExJbnRDYWxsTGlua0luZm9faAorCisjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9TZW50
aW5lbExpbmtlZExpc3QuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJbnN0cnVjdGlv
bjsKKworc3RydWN0IExMSW50Q2FsbExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3U2VudGluZWxO
b2RlPExMSW50Q2FsbExpbmtJbmZvPiB7CisgICAgTExJbnRDYWxsTGlua0luZm8oKQorICAgIHsK
KyAgICB9CisgICAgCisgICAgfkxMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAgICAgIGlm
IChpc09uTGlzdCgpKQorICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgfQorICAgIAorICAgIGJv
b2wgaXNMaW5rZWQoKSB7IHJldHVybiBjYWxsZWU7IH0KKyAgICAKKyAgICB2b2lkIHVubGluaygp
CisgICAgeworICAgICAgICBjYWxsZWUuY2xlYXIoKTsKKyAgICAgICAgbWFjaGluZUNvZGVUYXJn
ZXQgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisg
ICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgV3JpdGVCYXJyaWVyPEpTRnVu
Y3Rpb24+IGNhbGxlZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbGFzdFNlZW5DYWxs
ZWU7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1hY2hpbmVDb2RlVGFyZ2V0OworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBMTEludENhbGxMaW5rSW5mb19oCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENh
bGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTA2NTQwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzUsNiArMzUsMTEgQEAgTWV0aG9kQ2FsbExpbmtTdGF0dXMgTWV0aG9kQ2FsbExpbmtTdGF0dQog
ICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNv
ZGVJbmRleCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAg
IC8vIE5PVEU6IFRoaXMgZG9lcyBub3QgaGF2ZSBhbiBMTEludCBmYWxsLWJhY2sgYmVjYXVzZSBM
TEludCBkb2VzIG5vdCBkbyBhbnkgbWV0aG9kCisgICAgLy8gY2FsbCBsaW5rIGNhY2hpbmcuCisg
ICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MoKSkKKyAg
ICAgICAgcmV0dXJuIE1ldGhvZENhbGxMaW5rU3RhdHVzKCk7CisgICAgCiAgICAgTWV0aG9kQ2Fs
bExpbmtJbmZvJiBtZXRob2RDYWxsID0gcHJvZmlsZWRCbG9jay0+Z2V0TWV0aG9kQ2FsbExpbmtJ
bmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIAogICAgIGlmICghbWV0aG9kQ2FsbC5zZWVuIHx8ICFt
ZXRob2RDYWxsLmNhY2hlZFN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9nZXRfYXJndW1lbnRzX2xlbmd0aCwgNCkg
XAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWQsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0
X2J5X2lkX3RyYW5zaXRpb24sIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0LCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X25vcm1hbCwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfcmVwbGFjZSwgOSkgXAog
ICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfZ2VuZXJpYywgOSkgXAogICAgICAgICBtYWNybyhv
cF9kZWxfYnlfaWQsIDQpIFwKQEAgLTIwMSw2ICsyMDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgdHlwZWRlZiBlbnVtIHsgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9JRF9FTlVNKSB9
IE9wY29kZUlEOwogICAgICN1bmRlZiBPUENPREVfSURfRU5VTQogCisgICAgY29uc3QgaW50IG1h
eE9wY29kZUxlbmd0aCA9IDk7CiAgICAgY29uc3QgaW50IG51bU9wY29kZUlEcyA9IG9wX2VuZCAr
IDE7CiAKICAgICAjZGVmaW5lIE9QQ09ERV9JRF9MRU5HVEhTKGlkLCBsZW5ndGgpIGNvbnN0IGlu
dCBpZCMjX2xlbmd0aCA9IGxlbmd0aDsKQEAgLTIxNyw3ICsyMjAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKFZFUklGWV9PUENPREVfSUQpOwogICAgICN1
bmRlZiBWRVJJRllfT1BDT0RFX0lECiAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBS
RVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExM
SU5UKQogI2lmIENPTVBJTEVSKFJWQ1QpIHx8IENPTVBJTEVSKElOVEVMKQogICAgIHR5cGVkZWYg
dm9pZCogT3Bjb2RlOwogI2Vsc2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QcmVkaWN0ZWRUeXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHJlZGljdGVkVHlwZS5jcHAJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzYsNyArMzYsNiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2lmbmRlZiBOREVCVUcKIGNv
bnN0IGNoYXIqIHByZWRpY3Rpb25Ub1N0cmluZyhQcmVkaWN0ZWRUeXBlIHZhbHVlKQogewogICAg
IGlmICh2YWx1ZSA9PSBQcmVkaWN0Tm9uZSkKQEAgLTE2MCw3ICsxNTksNiBAQCBjb25zdCBjaGFy
KiBwcmVkaWN0aW9uVG9TdHJpbmcoUHJlZGljdGVkCiAgICAgCiAgICAgcmV0dXJuIGRlc2NyaXB0
aW9uOwogfQotI2VuZGlmCiAKIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbkZyb21DbGFzc0luZm8o
Y29uc3QgQ2xhc3NJbmZvKiBjbGFzc0luZm8pCiB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvUHJlZGljdGVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QcmVkaWN0ZWRUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIxNyw5ICsyMTcsNyBAQCBpbmxpbmUgYm9vbCBpc090aGVyUHJlZGljdGlvbihQcmVk
aWN0ZWRUCiAgICAgcmV0dXJuIHZhbHVlID09IFByZWRpY3RPdGhlcjsKIH0KIAotI2lmbmRlZiBO
REVCVUcKIGNvbnN0IGNoYXIqIHByZWRpY3Rpb25Ub1N0cmluZyhQcmVkaWN0ZWRUeXBlIHZhbHVl
KTsKLSNlbmRpZgogCiAvLyBNZXJnZSB0d28gcHJlZGljdGlvbnMuIE5vdGUgdGhhdCBjdXJyZW50
bHkgdGhpcyBqdXN0IGRvZXMgbGVmdCB8IHJpZ2h0LiBJdCBtYXkKIC8vIHNlZW0gdGVtcHRpbmcg
dG8gZG8gc28gZGlyZWN0bHksIGJ1dCB5b3Ugd291bGQgYmUgZG9pbmcgc28gYXQgeW91ciBvd24g
cGVyaWwsCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5
SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDY1NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDI3ICsyNyw2
OSBAQAogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUu
aCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorUHV0
QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7
CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRl
Y29kZUluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkK
KyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJl
ID0gaW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUp
CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5v
dEZvdW5kKTsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRf
b3BfcHV0X2J5X2lkKSB7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgq
cHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgICAgIGlmIChvZmZzZXQg
PT0gbm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gUHV0QnlJ
ZFN0YXR1cyhTaW1wbGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9mZnNldCk7CisgICAgfQor
ICAgIAorICAgIEFTU0VSVChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5v
cGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAKKyAg
ICBTdHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdl
dCgpOworICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IGluc3RydWN0aW9uWzddLnUuc3RydWN0
dXJlQ2hhaW4uZ2V0KCk7CisgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7CisgICAgQVNTRVJUKGNo
YWluKTsKKyAgICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5nZXQoKnByb2Zp
bGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91
bmQpCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAs
IG5vdEZvdW5kKTsKKyAgICAKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVUcmFuc2l0
aW9uLCBzdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY2hhaW4sIG9mZnNldCk7CisjZWxzZQorICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsK
KyNlbmRpZgorfQorCiBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29k
ZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVy
JiBpZGVudCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VE
X1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5B
QkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9j
ay0+bnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVG
cm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAg
IGlmIChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkK
ICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90
Rm91bmQpOwogICAgIAogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVk
QmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1YkluZm8uc2Vl
bikKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwg
bm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2Nr
LCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgCiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nl
c3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlk
U3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJu
IGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwog
ICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTogewogICAgICAgICBz
aXplX3Qgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0
dXJlLT5nZXQoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRC
eUlkU3RhdHVzLmgJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDggQEAg
cHVibGljOgogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQog
ICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50
KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAK
ICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAg
U3RydWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9WYWx1ZVJlY292ZXJ5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAkocmV2aXNpb24gMTA2NTQwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuaAkod29ya2luZyBjb3B5KQpA
QCAtMjQ5LDcgKzI0OSw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmRlY29k
ZShtX3NvdXJjZS5jb25zdGFudCk7CiAgICAgfQogICAgIAotI2lmbmRlZiBOREVCVUcKICAgICB2
b2lkIGR1bXAoRklMRSogb3V0KSBjb25zdAogICAgIHsKICAgICAgICAgc3dpdGNoICh0ZWNobmlx
dWUoKSkgewpAQCAtMzE0LDcgKzMxMyw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgfQotI2VuZGlmCiAgICAgCiBwcml2YXRlOgogICAgIFZhbHVlUmVjb3Zl
cnlUZWNobmlxdWUgbV90ZWNobmlxdWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24g
MTA2NTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJC
YXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIK
ICNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIlVTdHJpbmcuaCIKQEAgLTE1MCwyNiArMTUxLDE2IEBAIHZvaWQgUmVzb2x2ZVJlc3Vs
dDo6Y2hlY2tWYWxpZGl0eSgpCiB9CiAjZW5kaWYKIAotI2lmbmRlZiBOREVCVUcKIHN0YXRpYyBi
b29sIHNfZHVtcHNHZW5lcmF0ZWRDb2RlID0gZmFsc2U7Ci0jZW5kaWYKIAogdm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6c2V0RHVtcHNHZW5lcmF0ZWRDb2RlKGJvb2wgZHVtcHNHZW5lcmF0ZWRDb2Rl
KQogewotI2lmbmRlZiBOREVCVUcKICAgICBzX2R1bXBzR2VuZXJhdGVkQ29kZSA9IGR1bXBzR2Vu
ZXJhdGVkQ29kZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGR1bXBzR2VuZXJhdGVkQ29kZSk7
Ci0jZW5kaWYKIH0KIAogYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6ZHVtcHNHZW5lcmF0ZWRDb2Rl
KCkKIHsKLSNpZm5kZWYgTkRFQlVHCiAgICAgcmV0dXJuIHNfZHVtcHNHZW5lcmF0ZWRDb2RlOwot
I2Vsc2UKLSAgICByZXR1cm4gZmFsc2U7Ci0jZW5kaWYKIH0KIAogSlNPYmplY3QqIEJ5dGVjb2Rl
R2VuZXJhdG9yOjpnZW5lcmF0ZSgpCkBAIC0xODIsMTAgKzE3Myw4IEBAIEpTT2JqZWN0KiBCeXRl
Y29kZUdlbmVyYXRvcjo6Z2VuZXJhdGUoKQogCiAgICAgbV9jb2RlQmxvY2stPnNldEluc3RydWN0
aW9uQ291bnQobV9jb2RlQmxvY2stPmluc3RydWN0aW9ucygpLnNpemUoKSk7CiAKLSNpZm5kZWYg
TkRFQlVHCiAgICAgaWYgKHNfZHVtcHNHZW5lcmF0ZWRDb2RlKQogICAgICAgICBtX2NvZGVCbG9j
ay0+ZHVtcChtX3Njb3BlQ2hhaW4tPmdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKTsKLSNlbmRp
ZgogCiAgICAgaWYgKChtX2NvZGVUeXBlID09IEZ1bmN0aW9uQ29kZSAmJiAhbV9jb2RlQmxvY2st
Pm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSAmJiAhbV9jb2RlQmxvY2stPnVzZXNBcmd1bWVudHMoKSkg
fHwgbV9jb2RlVHlwZSA9PSBFdmFsQ29kZSkKICAgICAgICAgc3ltYm9sVGFibGUoKS5jbGVhcigp
OwpAQCAtMTMwNSw5ICsxMjk0LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxS
ZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKElO
VEVSUFJFVEVSKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0
aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICAgICAgYm9vbCBkeW5hbWlj
ID0gcmVzb2x2ZVJlc3VsdC5pc0R5bmFtaWMoKSAmJiByZXNvbHZlUmVzdWx0LmRlcHRoKCk7CiAg
ICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShkeW5hbWlj
ID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0xNDExLDkgKzEzOTgs
NiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAgICAgICAgIHJl
dHVybiBiYXNlRHN0OwogICAgIH0KIAotCi0KLQogICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9
IGVtaXRQcm9maWxlZE9wY29kZShvcF9yZXNvbHZlX3dpdGhfYmFzZSk7CiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGJhc2VEc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZChwcm9wRHN0LT5pbmRleCgpKTsKQEAgLTE1MjEsOSArMTUwNSw3IEBAIHZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmVtaXRNZXRob2RDaGVjaygKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHkpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1f
Y29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNp
emUoKSk7Ci0jZW5kaWYKIAogICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxl
ZE9wY29kZShvcF9nZXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmlu
ZGV4KCkpOwpAQCAtMTU0OSw5ICsxNTMxLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRHZXRBcgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5
SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVy
SUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+
YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2Vu
ZGlmCiAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTU2Nyw5ICsxNTQ3LDcgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmll
ciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRF
UikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVj
dGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlf
aWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE4NTAs
NyArMTgyOCwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENhbGwoCiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoKSk7IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVu
dHMucmVnaXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5U
KQorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlu
a0luZm8oKSk7CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgog
ICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1
bHQoKSkgewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNv
ZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKQEAgLTE5NTQsNyArMTkzNiwxMSBAQCBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxB
cmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7IC8vIGFyZ0NvdW50CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0ZXJPZmZzZXQoKSk7IC8v
IHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0luZm8oKSk7CisjZWxzZQogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICBWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsK
QEAgLTIyMTUsNyArMjIwMSwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENhdGNoCiB7CiAgICAgbV91c2VzRXhjZXB0aW9ucyA9IHRydWU7CiAjaWYgRU5BQkxFKEpJVCkK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgSGFuZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQo
MCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNT
Y29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0aW9uTGFiZWwoTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3MoYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfb3BfY2F0Y2gpKSkgfTsKKyNlbHNlCiAgICAgSGFuZGxlckluZm8gaW5mbyA9
IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0aW9u
TGFiZWwoKSB9OworI2VuZGlmCiAjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0
LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9k
eW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGggfTsKICNlbmRpZgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdFZhbHVlLmgJKHJldmlzaW9uIDEw
NjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yODcsNyArMjg3LDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4g
bV9zdHJ1Y3R1cmUgPT0gb3RoZXIubV9zdHJ1Y3R1cmU7CiAgICAgfQogICAgIAotI2lmbmRlZiBO
REVCVUcKICAgICB2b2lkIGR1bXAoRklMRSogb3V0KSBjb25zdAogICAgIHsKICAgICAgICAgaWYg
KGlzVG9wKCkpIHsKQEAgLTMwMCw3ICsyOTksNiBAQCBwdWJsaWM6CiAgICAgICAgICAgICBmcHJp
bnRmKG91dCwgIiVwIiwgbV9zdHJ1Y3R1cmUpOwogICAgICAgICBmcHJpbnRmKG91dCwgIl0iKTsK
ICAgICB9Ci0jZW5kaWYKIAogcHJpdmF0ZToKICAgICBzdGF0aWMgU3RydWN0dXJlKiB0b3BWYWx1
ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8U3RydWN0dXJlKj4oMSk7IH0KQEAgLTQ2Niwx
NCArNDY0LDEyIEBAIHN0cnVjdCBBYnN0cmFjdFZhbHVlIHsKICAgICAgICAgLy8gY29tcGxleGl0
eSBvZiB0aGUgY29kZS4KICAgICB9CiAgICAgCi0jaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgZHVt
cChGSUxFKiBvdXQpIGNvbnN0CiAgICAgewogICAgICAgICBmcHJpbnRmKG91dCwgIiglcywgIiwg
cHJlZGljdGlvblRvU3RyaW5nKG1fdHlwZSkpOwogICAgICAgICBtX3N0cnVjdHVyZS5kdW1wKG91
dCk7CiAgICAgICAgIGZwcmludGYob3V0LCAiKSIpOwogICAgIH0KLSNlbmRpZgogCiAgICAgU3Ry
dWN0dXJlQWJzdHJhY3RWYWx1ZSBtX3N0cnVjdHVyZTsKICAgICBQcmVkaWN0ZWRUeXBlIG1fdHlw
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCShyZXZpc2lvbiAxMDY1NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA2LDkgKzYwNiw3IEBAIHBy
aXZhdGU6CiAgICAgewogICAgICAgICBVTlVTRURfUEFSQU0obm9kZUluZGV4KTsKICAgICAgICAg
Ci0gICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJv
ZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7
Ci0gICAgICAgIEFTU0VSVChwcm9maWxlKTsKLSAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0
aW9uID0gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgICAgIFByZWRp
Y3RlZFR5cGUgcHJlZGljdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+
dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwog
I2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCJEeW5hbWljIFtA
JXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4LCBieXRlY29kZUluZGV4LCBw
cmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikpOwogI2VuZGlmCkBAIC0xMDQzLDYgKzEwNDEs
OSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhib29sCiAgICAgCiAgICAg
Ly8gSWYgd2UgZ2V0IGhlcmUgdGhlbiBpdCBsb29rcyBsaWtlIHdlIHNob3VsZCBkZWZpbml0ZWx5
IGlubGluZSB0aGlzIGNvZGUuIFByb2NlZWQKICAgICAvLyB3aXRoIHBhcnNpbmcgdGhlIGNvZGUg
dG8gZ2V0IGJ5dGVjb2RlLCBzbyB0aGF0IHdlIGNhbiB0aGVuIHBhcnNlIHRoZSBieXRlY29kZS4K
KyAgICAvLyBOb3RlIHRoYXQgaWYgTExJbnQgaXMgZW5hYmxlZCwgdGhlIGJ5dGVjb2RlIHdpbGwg
YWx3YXlzIGJlIGF2YWlsYWJsZS4gQWxzbyBub3RlCisgICAgLy8gdGhhdCBpZiBMTEludCBpcyBl
bmFibGVkLCB3ZSBtYXkgaW5saW5lIGEgY29kZSBibG9jayB0aGF0IGhhcyBuZXZlciBiZWVuIEpJ
VHRlZAorICAgIC8vIGJlZm9yZSEKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fY29kZUJs
b2NrQ2FjaGUuZ2V0KENvZGVCbG9ja0tleShleGVjdXRhYmxlLCBraW5kKSwgZXhwZWN0ZWRGdW5j
dGlvbi0+c2NvcGUoKSk7CiAgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTE3NDMsNyArMTc0NCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2ssIG1fY3VycmVudEluZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG1ldGhv
ZENhbGxTdGF0dXMuaXNTZXQoKQotICAgICAgICAgICAgICAgICYmICFnZXRCeUlkU3RhdHVzLmlz
U2V0KCkKKyAgICAgICAgICAgICAgICAmJiAhZ2V0QnlJZFN0YXR1cy53YXNTZWVuSW5KSVQoKQog
ICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4
aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpIHsKICAgICAgICAgICAgICAgICAvLyBJ
dCdzIG1vbm9tb3JwaGljIGFzIGZhciBhcyB3ZSBjYW4gdGVsbCwgc2luY2UgdGhlIG1ldGhvZF9j
aGVjayB3YXMgbGlua2VkCiAgICAgICAgICAgICAgICAgLy8gYnV0IHRoZSBzbG93IHBhdGggKGku
ZS4gdGhlIG5vcm1hbCBnZXRfYnlfaWQpIG5ldmVyIGZpcmVkLgpAQCAtMTgxMiw3ICsxODEzLDkg
QEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAgICAg
ICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkOiB7CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChj
dXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBi
YXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAg
dW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmll
clJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMDY1NDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTEsNiArMTExLDggQEAgaW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNv
ZGVJRCBvcAogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlf
aWQ6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAg
ICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgog
ICAgIGNhc2Ugb3Bfam1wOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJ
bmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGUFJJbmZv
LmgJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRlBS
SW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw2IEBAIHB1YmxpYzoKICAgICAgICAg
cmV0dXJuICh1bnNpZ25lZClyZWc7CiAgICAgfQogCi0jaWZuZGVmIE5ERUJVRwogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBkZWJ1Z05hbWUoRlBSUmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VS
VChyZWcgIT0gSW52YWxpZEZQUlJlZyk7CkBAIC05OSw3ICs5OCw2IEBAIHB1YmxpYzoKICNlbmRp
ZgogICAgICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107CiAgICAgfQotI2VuZGlmCiB9
OwogCiAjZW5kaWYKQEAgLTE0MSw3ICsxMzksNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAo
dW5zaWduZWQpcmVnOwogICAgIH0KIAotI2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgY29uc3Qg
Y2hhciogZGVidWdOYW1lKEZQUlJlZyByZWcpCiAgICAgewogICAgICAgICBBU1NFUlQocmVnICE9
IEludmFsaWRGUFJSZWcpOwpAQCAtMTU4LDcgKzE1NSw2IEBAIHB1YmxpYzoKICAgICAgICAgfTsK
ICAgICAgICAgcmV0dXJuIG5hbWVGb3JSZWdpc3RlcltyZWddOwogICAgIH0KLSNlbmRpZgogfTsK
IAogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dQUkluZm8uaAkocmV2
aXNpb24gMTA2NTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHUFJJbmZvLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTI5Miw3ICsyOTIsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQogCi0jaWZuZGVmIE5ERUJVRwogICAgIHN0YXRpYyBjb25zdCBjaGFy
KiBkZWJ1Z05hbWUoR1BSUmVnIHJlZykKICAgICB7CiAgICAgICAgIEFTU0VSVChyZWcgIT0gSW52
YWxpZEdQUlJlZyk7CkBAIC0zMDMsNyArMzAyLDYgQEAgcHVibGljOgogICAgICAgICB9OwogICAg
ICAgICByZXR1cm4gbmFtZUZvclJlZ2lzdGVyW3JlZ107CiAgICAgfQotI2VuZGlmCiBwcml2YXRl
OgogCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEludmFsaWRJbmRleCA9IDB4ZmZmZmZmZmY7
CkBAIC0zNjMsNyArMzYxLDYgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAg
IH0KIAotI2lmbmRlZiBOREVCVUcKICAgICBzdGF0aWMgY29uc3QgY2hhciogZGVidWdOYW1lKEdQ
UlJlZyByZWcpCiAgICAgewogICAgICAgICBBU1NFUlQocmVnICE9IEludmFsaWRHUFJSZWcpOwpA
QCAtMzc2LDcgKzM3Myw2IEBAIHB1YmxpYzoKICAgICAgICAgfTsKICAgICAgICAgcmV0dXJuIG5h
bWVGb3JSZWdpc3RlcltyZWddOwogICAgIH0KLSNlbmRpZgogcHJpdmF0ZToKIAogICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBJbnZhbGlkSW5kZXggPSAweGZmZmZmZmZmOwpAQCAtNDM2LDcgKzQz
Miw2IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKLSNpZm5kZWYg
TkRFQlVHCiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGRlYnVnTmFtZShHUFJSZWcgcmVnKQogICAg
IHsKICAgICAgICAgQVNTRVJUKHJlZyAhPSBJbnZhbGlkR1BSUmVnKTsKQEAgLTQ0OSw3ICs0NDQs
NiBAQCBwdWJsaWM6CiAgICAgICAgIH07CiAgICAgICAgIHJldHVybiBuYW1lRm9yUmVnaXN0ZXJb
cmVnXTsKICAgICB9Ci0jZW5kaWYKIHByaXZhdGU6CiAKICAgICBzdGF0aWMgY29uc3QgdW5zaWdu
ZWQgSW52YWxpZEluZGV4ID0gMHhmZmZmZmZmZjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCShyZXZpc2lvbiAxMDY1NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNiBAQAogCiBu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAKLSNpZm5kZWYgTkRFQlVHCi0KIC8vIENy
ZWF0ZXMgYW4gYXJyYXkgb2Ygc3RyaW5naXplZCBuYW1lcy4KIHN0YXRpYyBjb25zdCBjaGFyKiBk
ZmdPcE5hbWVzW10gPSB7CiAjZGVmaW5lIFNUUklOR0laRV9ERkdfT1BfRU5VTShvcGNvZGUsIGZs
YWdzKSAjb3Bjb2RlICwKQEAgLTI5OCw4ICsyOTYsNiBAQCB2b2lkIEdyYXBoOjpkdW1wKENvZGVC
bG9jayogY29kZUJsb2NrKQogICAgICAgICBkdW1wKGksIGNvZGVCbG9jayk7CiB9CiAKLSNlbmRp
ZgotCiAvLyBGSVhNRTogQ29udmVydCB0aGlzIHRvIGJlIGl0ZXJhdGl2ZSwgbm90IHJlY3Vyc2l2
ZS4KICNkZWZpbmUgRE9fVE9fQ0hJTERSRU4obm9kZSwgdGhpbmdUb0RvKSBkbyB7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgTm9kZSYgX25vZGUgPSAobm9kZSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw2IEBA
IHB1YmxpYzoKICAgICAgICAgbm9kZS5jaGlsZHJlbi5maXhlZC5jaGlsZDMgPSBOb05vZGU7CiAg
ICAgfQogCi0jaWZuZGVmIE5ERUJVRwogICAgIC8vIENvZGVCbG9jayBpcyBvcHRpb25hbCwgYnV0
IG1heSBhbGxvdyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHRvIGJlIGR1bXBlZCAoZS5nLiBJZGVu
dGlmaWVyIG5hbWVzKS4KICAgICB2b2lkIGR1bXAoQ29kZUJsb2NrKiA9IDApOwogICAgIHZvaWQg
ZHVtcChOb2RlSW5kZXgsIENvZGVCbG9jayogPSAwKTsKQEAgLTExOCw3ICsxMTcsNiBAQCBwdWJs
aWM6CiAgICAgLy8gRHVtcCB0aGUgY29kZSBvcmlnaW4gb2YgdGhlIGdpdmVuIG5vZGUgYXMgYSBk
aWZmIGZyb20gdGhlIGNvZGUgb3JpZ2luIG9mIHRoZQogICAgIC8vIHByZWNlZGluZyBub2RlLgog
ICAgIHZvaWQgZHVtcENvZGVPcmlnaW4oTm9kZUluZGV4KTsKLSNlbmRpZgogCiAgICAgQmxvY2tJ
bmRleCBibG9ja0luZGV4Rm9yQnl0ZWNvZGVPZmZzZXQoVmVjdG9yPEJsb2NrSW5kZXg+JiBibG9j
a3MsIHVuc2lnbmVkIGJ5dGVjb2RlQmVnaW4pOwogCkBAIC0yMTQsMTIgKzIxMiwxMCBAQCBwdWJs
aWM6CiAgICAgICAgIHJldHVybiBhc0Z1bmN0aW9uKGZ1bmN0aW9uKTsKICAgICB9CiAKLSNpZm5k
ZWYgTkRFQlVHCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgKm9wTmFtZShOb2RlVHlwZSk7CiAgICAg
CiAgICAgLy8gVGhpcyBpcyBPKG4pLCBhbmQgc2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdmVyYm9z
ZSBkdW1wcy4KICAgICBjb25zdCBjaGFyKiBuYW1lT2ZWYXJpYWJsZUFjY2Vzc0RhdGEoVmFyaWFi
bGVBY2Nlc3NEYXRhKik7Ci0jZW5kaWYKIAogICAgIHZvaWQgcHJlZGljdEFyZ3VtZW50VHlwZXMo
Q29kZUJsb2NrKik7CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAko
cmV2aXNpb24gMTA2NTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDYgQEAgc3RhdGljIGlubGluZSBib29sIG5vZGVD
YW5TcGVjdWxhdGVJbnRlZwogICAgIHJldHVybiB0cnVlOwogfQogCi0jaWZuZGVmIE5ERUJVRwog
c3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBhcml0aE5vZGVGbGFnc0FzU3RyaW5nKEFyaXRoTm9k
ZUZsYWdzIGZsYWdzKQogewogICAgIGlmICghZmxhZ3MpCkBAIC0xMzgsNyArMTM3LDYgQEAgc3Rh
dGljIGlubGluZSBjb25zdCBjaGFyKiBhcml0aE5vZGVGbGFncwogICAgIAogICAgIHJldHVybiBk
ZXNjcmlwdGlvbjsKIH0KLSNlbmRpZgogCiAvLyBFbnRyaWVzIGluIHRoZSBOb2RlVHlwZSBlbnVt
IChiZWxvdykgYXJlIGNvbXBvc2VkIG9mIGFuIGlkLCBhIHJlc3VsdCB0eXBlIChwb3NzaWJseSBu
b25lKQogLy8gYW5kIHNvbWUgYWRkaXRpb25hbCBpbmZvcm1hdGl2ZSBmbGFncyAobXVzdCBnZW5l
cmF0ZSwgaXMgY29uc3RhbnQsIGV0YykuCkBAIC00OTksNyArNDk3LDYgQEAgc3RydWN0IE5vZGUg
ewogICAgICAgICByZXR1cm4gdmFyaWFibGVBY2Nlc3NEYXRhKCktPmxvY2FsKCk7CiAgICAgfQog
Ci0jaWZuZGVmIE5ERUJVRwogICAgIGJvb2wgaGFzSWRlbnRpZmllcigpCiAgICAgewogICAgICAg
ICBzd2l0Y2ggKG9wKSB7CkBAIC01MTUsNyArNTEyLDYgQEAgc3RydWN0IE5vZGUgewogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQotI2VuZGlmCiAKICAgICB1bnNp
Z25lZCBpZGVudGlmaWVyTnVtYmVyKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdC5jcHAJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT1NSRXhpdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzLDcgKzUzLDYg
QEAgT1NSRXhpdDo6T1NSRXhpdChFeGl0S2luZCBraW5kLCBKU1ZhbHVlUwogICAgICAgICBtX3Zh
cmlhYmxlc1t2YXJpYWJsZV0gPSBqaXQtPmNvbXB1dGVWYWx1ZVJlY292ZXJ5Rm9yKGppdC0+bV92
YXJpYWJsZXNbdmFyaWFibGVdKTsKIH0KIAotI2lmbmRlZiBOREVCVUcKIHZvaWQgT1NSRXhpdDo6
ZHVtcChGSUxFKiBvdXQpIGNvbnN0CiB7CiAgICAgZm9yICh1bnNpZ25lZCBhcmd1bWVudCA9IDA7
IGFyZ3VtZW50IDwgbV9hcmd1bWVudHMuc2l6ZSgpOyArK2FyZ3VtZW50KQpAQCAtNjIsNyArNjEs
NiBAQCB2b2lkIE9TUkV4aXQ6OmR1bXAoRklMRSogb3V0KSBjb25zdAogICAgIGZvciAodW5zaWdu
ZWQgdmFyaWFibGUgPSAwOyB2YXJpYWJsZSA8IG1fdmFyaWFibGVzLnNpemUoKTsgKyt2YXJpYWJs
ZSkKICAgICAgICAgbV92YXJpYWJsZXNbdmFyaWFibGVdLmR1bXAob3V0KTsKIH0KLSNlbmRpZgog
CiBib29sIE9TUkV4aXQ6OmNvbnNpZGVyQWRkaW5nQXNGcmVxdWVudEV4aXRTaXRlU2xvdyhDb2Rl
QmxvY2sqIGRmZ0NvZGVCbG9jaywgQ29kZUJsb2NrKiBwcm9maWxlZENvZGVCbG9jaykKIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdC5oCShyZXZpc2lvbiAxMDY1NDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTM3LDkgKzEzNyw3IEBAIHN0cnVjdCBPU1JFeGl0IHsKICAgICAgICAgcmV0dXJuIGNv
bnNpZGVyQWRkaW5nQXNGcmVxdWVudEV4aXRTaXRlU2xvdyhkZmdDb2RlQmxvY2ssIHByb2ZpbGVk
Q29kZUJsb2NrKTsKICAgICB9CiAgICAgCi0jaWZuZGVmIE5ERUJVRwogICAgIHZvaWQgZHVtcChG
SUxFKiBvdXQpIGNvbnN0OwotI2VuZGlmCiAgICAgCiAgICAgVmVjdG9yPFZhbHVlUmVjb3Zlcnks
IDA+IG1fYXJndW1lbnRzOwogICAgIFZlY3RvcjxWYWx1ZVJlY292ZXJ5LCAwPiBtX3ZhcmlhYmxl
czsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21w
aWxlci5jcHAJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsMjEgQEAg
dm9pZCBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdWludDMyX3QgZXhpdElu
ZGV4ID0gZ2xvYmFsRGF0YS0+b3NyRXhpdEluZGV4OwogICAgIE9TUkV4aXQmIGV4aXQgPSBjb2Rl
QmxvY2stPm9zckV4aXQoZXhpdEluZGV4KTsKICAgICAKKyAgICAvLyBNYWtlIHN1cmUgYWxsIGNv
ZGUgb24gb3VyIGlubGluZSBzdGFjayBpcyBKSVQgY29tcGlsZWQuIFRoaXMgaXMgbmVjZXNzYXJ5
IHNpbmNlCisgICAgLy8gd2UgbWF5IG9wdCB0byBpbmxpbmUgYSBjb2RlIGJsb2NrIGV2ZW4gYmVm
b3JlIGl0IGhhZCBldmVyIGJlZW4gY29tcGlsZWQgYnkgdGhlCisgICAgLy8gSklULCBidXQgb3Vy
IE9TUiBleGl0IGluZnJhc3RydWN0dXJlIGN1cnJlbnRseSBvbmx5IHdvcmtzIGlmIHRoZSB0YXJn
ZXQgb2YgdGhlCisgICAgLy8gT1NSIGV4aXQgaXMgSklUIGNvZGUuIFRoaXMgY291bGQgYmUgY2hh
bmdlZCBzaW5jZSB0aGVyZSBpcyBub3RoaW5nIHBhcnRpY3VsYXJseQorICAgIC8vIGhhcmQgYWJv
dXQgZG9pbmcgYW4gT1NSIGV4aXQgaW50byB0aGUgaW50ZXJwcmV0ZXIsIGJ1dCBmb3Igbm93IHRo
aXMgc2VlbXMgdG8gbWFrZQorICAgIC8vIHNlbnNlIGluIHRoYXQgaWYgd2UncmUgT1NSIGV4aXRp
bmcgZnJvbSBpbmxpbmVkIGNvZGUgb2YgYSBERkcgY29kZSBibG9jaywgdGhlbgorICAgIC8vIHBy
b2JhYmx5IGl0J3MgYSBnb29kIHNpZ24gdGhhdCB0aGUgdGhpbmcgd2UncmUgZXhpdGluZyBpbnRv
IGlzIGhvdC4gRXZlbiBtb3JlCisgICAgLy8gaW50ZXJlc3RpbmdseSwgc2luY2UgdGhlIGNvZGUg
d2FzIGlubGluZWQsIGl0IG1heSBuZXZlciBvdGhlcndpc2UgZ2V0IEpJVAorICAgIC8vIGNvbXBp
bGVkIHNpbmNlIHRoZSBhY3Qgb2YgaW5saW5pbmcgaXQgbWF5IGVuc3VyZSB0aGF0IGl0IG90aGVy
d2lzZSBuZXZlciBydW5zLgorICAgIGZvciAoQ29kZU9yaWdpbiBjb2RlT3JpZ2luID0gZXhpdC5t
X2NvZGVPcmlnaW47IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBjb2RlT3JpZ2luID0gY29k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlcikgeworICAgICAgICBzdGF0aWNfY2FzdDxG
dW5jdGlvbkV4ZWN1dGFibGUqPihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZXhlY3V0YWJs
ZS5nZXQoKSkKKyAgICAgICAgICAgIC0+YmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9yaWdpbi5p
bmxpbmVDYWxsRnJhbWUtPmlzQ2FsbCA/IENvZGVGb3JDYWxsIDogQ29kZUZvckNvbnN0cnVjdCkK
KyAgICAgICAgICAgIC0+aml0Q29tcGlsZSgqZ2xvYmFsRGF0YSk7CisgICAgfQorICAgIAogICAg
IFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5ID0gMDsKICAgICBpZiAoZXhpdC5tX3JlY292
ZXJ5SW5kZXgpCiAgICAgICAgIHJlY292ZXJ5ID0gJmNvZGVCbG9jay0+c3BlY3VsYXRpb25SZWNv
dmVyeShleGl0Lm1fcmVjb3ZlcnlJbmRleCAtIDEpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxMDY1NDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHT1NSRXhp
dC5oIgogI2luY2x1ZGUgIkRGR1JlcGF0Y2guaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZh
bHVlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAjaW5jbHVkZSAiSW5saW5lQVNNLmgi
CiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTY3Myw1MCArNjc0LDYgQEAgc2l6ZV90IERG
R19PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cgogICAgIHJldHVybiBKU1ZhbHVlOjpzdHJp
Y3RFcXVhbChleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMSksIEpTVmFsdWU6OmRlY29k
ZShlbmNvZGVkT3AyKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSgpOwotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0
Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqKTsKLQotI2lmIENQVShYODZf
NjQpCi1hc20gKAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9M
X1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJtb3YgLTQwKCVy
MTMpLCAlcjEzXG4iCi0gICAgIm1vdiAlcjEzLCAlcmRpXG4iCi0gICAgImptcCAiIFNZTUJPTF9T
VFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxu
IgotKTsKLSNlbGlmIENQVShYODYpCi1hc20gKAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxu
IgotICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4iCi0gICAgIm1vdiAlZWRpLCA0KCVlc3ApXG4i
Ci0gICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZh
bHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQVShBUk1fVEhVTUIyKQotYXNtICgK
LSIudGV4dCIgIlxuIgotIi5hbGlnbiAyIiAiXG4iCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiXG4iCi0iLnRodW1iIiAiXG4iCi0iLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BB
UkFNKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibGRyIHI1LCBbcjUsICMtNDBdIiAiXG4iCi0g
ICAgImNweSByMCwgcjUiICJcbiIKLSAgICAiYiAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbmRpZgotCi1F
bmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhl
Y1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEg
PSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwotICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIo
Z2xvYmFsRGF0YSwgZXhlYyk7Ci0gICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVj
LT5nbG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Ci19Ci0KIHN0YXRpYyB2b2lkKiBo
YW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEpTVmFsdWUgY2FsbGVlLCBDb2Rl
U3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0Nh
bGxlZS0+Y2FsbGVyRnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
CShyZXZpc2lvbiAxMDY1NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtODM3LDcgKzgzNyw3IEBAIHZvaWQgSGVhcDo6Y29sbGVjdChT
d2VlcFRvZ2dsZSBzd2VlcFRvZ2cKICAgICAgICAgc2V0SGlnaFdhdGVyTWFyayhtYXgocHJvcG9y
dGlvbmFsQnl0ZXMsIG1fbWluQnl0ZXNQZXJDeWNsZSkpOwogICAgIH0KICAgICBKQVZBU0NSSVBU
Q09SRV9HQ19FTkQoKTsKLQorICAgIAogICAgICgqbV9hY3Rpdml0eUNhbGxiYWNrKSgpOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMDY1NDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYg
KzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNs
YXNzIEpTVmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAg
ICBjbGFzcyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTEzNSwxMSArMTM2
LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2ZVJlZ2lz
dGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZFNwYWNlOwogICAgICAg
ICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBCdW1wU3Bh
Y2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRvcjsKLSAgICAgICAgZnJpZW5kIGNs
YXNzIENvZGVCbG9jazsKIAogICAgICAgICBzaXplX3Qgd2F0ZXJNYXJrKCk7CiAgICAgICAgIHNp
emVfdCBoaWdoV2F0ZXJNYXJrKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrU3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFjay5jcHAJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL01hcmtTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwNCw3ICszMDQsNyBAQCBBTFdB
WVNfSU5MSU5FIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oCiAjZW5kaWYKIAogICAgIEFTU0VS
VChIZWFwOjppc01hcmtlZChjZWxsKSk7Ci0KKyAgICAKICAgICBpZiAoaXNKU1N0cmluZyhjZWxs
KSkgewogICAgICAgICBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+
KGNlbGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxMDY1NDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNz
IExpdmVPYmplY3RJdGVyYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNz
IFdlYWtHQ0hhbmRsZTsKIGNsYXNzIFNsb3RWaXNpdG9yOwogCkBAIC04Nyw2ICs4OCw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGZyZWVCbG9ja3MoTWFya2VkQmxvY2sqIGhlYWQpOwogCiBwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCogYWxsb2NhdGVTbG93Q2FzZShTaXplQ2xhc3MmKTsKICAgICB2
b2lkKiB0cnlBbGxvY2F0ZUhlbHBlcihNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CiAgICAgdm9p
ZCogdHJ5QWxsb2NhdGUoTWFya2VkU3BhY2U6OlNpemVDbGFzcyYpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTA2NTQw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDkgQEAgbmFtZXNwYWNlIEpTQyAgewogI2lmIEVOQUJM
RShJTlRFUlBSRVRFUikKICAgICAgICAgSW5zdHJ1Y3Rpb24qIHJldHVyblZQQygpIGNvbnN0IHsg
cmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10udlBDKCk7IH0KICNlbmRpZgorI2lm
IEVOQUJMRShMTElOVCkKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdCB7
IHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPih0aGlzW1JlZ2lzdGVyRmlsZTo6QXJn
dW1lbnRDb3VudF0udGFnKCkpOyB9CisjZW5kaWYKIAogICAgICAgICB2b2lkIHNldENhbGxlckZy
YW1lKENhbGxGcmFtZSogY2FsbGVyRnJhbWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlz
KVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXSA9IGNhbGxlckZyYW1lOyB9CiAgICAgICAgIHZv
aWQgc2V0U2NvcGVDaGFpbihTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbikgeyBzdGF0aWNfY2Fz
dDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0gPSBzY29wZUNoYWlu
OyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcg
QEAKICNpbmNsdWRlICJKSVQuaCIKICNlbmRpZgogCi0jZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBV
VEVEX0dPVE9fV09SS0FST1VORCAoRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpICYm
ICFkZWZpbmVkKF9fbGx2bV9fKSkKKyNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19X
T1JLQVJPVU5EICgoRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShM
TElOVCkpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApA
QCAtNTQ3LDE3ICs1NDcsNDMgQEAgSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKIHsKIH0KIAot
dm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShib29sIGNhblVzZUpJVCkKK0ludGVycHJldGVy
Ojp+SW50ZXJwcmV0ZXIoKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVS
KQorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICBkZWxldGVb
XSBtX29wY29kZVRhYmxlOworI2VuZGlmCit9CisKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxp
emUoTExJbnQ6OkRhdGEqIGxsaW50RGF0YSwgYm9vbCBjYW5Vc2VKSVQpCit7CisgICAgVU5VU0VE
X1BBUkFNKGxsaW50RGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKGNhblVzZUpJVCk7CisjaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5B
QkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisgICAgLy8gSGF2aW5nIExMSW50IGVuYWJs
ZWQsIGJ1dCBub3QgYmVpbmcgYWJsZSB0byB1c2UgdGhlIEpJVCwgYW5kIG5vdCBoYXZpbmcKKyAg
ICAvLyBhIGNvbXB1dGVkIGdvdG8gaW50ZXJwcmV0ZXIsIGlzIG5vdCBzdXBwb3J0ZWQuIE5vdCBi
ZWNhdXNlIHdlIGNhbm5vdAorICAgIC8vIHN1cHBvcnQgaXQsIGJ1dCBiZWNhdXNlIEkgZGVjaWRl
ZCB0byBkcmF3IHRoZSBsaW5lIGF0IHRoZSBudW1iZXIgb2YKKyAgICAvLyBwZXJtdXRhdGlvbnMg
b2YgZXhlY3V0aW9uIGVuZ2luZXMgdGhhdCBJIHdhbnRlZCB0aGlzIGNvZGUgdG8gZ3Jvay4KKyAg
ICBBU1NFUlQoY2FuVXNlSklUKTsKKyNlbmRpZgogICAgIGlmIChjYW5Vc2VKSVQpIHsKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bjb2RlVGFibGUgPSBsbGludERhdGEtPm9wY29kZU1h
cCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQorICAg
ICAgICAgICAgbV9vcGNvZGVJRFRhYmxlLmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2Fz
dDxPcGNvZGVJRD4oaSkpOworI2Vsc2UKICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVzZW50
LCBkb24ndCB1c2UganVtcCBkZXN0aW5hdGlvbnMgZm9yIG9wY29kZXMuCiAgICAgICAgIAogICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAgICAg
ICBPcGNvZGUgb3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KGkpKTsKICAgICAgICAgICAgIG1fb3Bjb2RlVGFibGVbaV0gPSBvcGNvZGU7CiAgICAgICAg
IH0KKyNlbmRpZgogICAgIH0gZWxzZSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29w
Y29kZVRhYmxlID0gbmV3IE9wY29kZVtudW1PcGNvZGVJRHNdOworI2VuZGlmCiAgICAgICAgIHBy
aXZhdGVFeGVjdXRlKEluaXRpYWxpemVBbmRSZXR1cm4sIDAsIDApOwogICAgICAgICAKICAgICAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkKQEAgLTU2Niw3ICs1OTIs
NiBAQCB2b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKGJvb2wgY2FuVXNlCiAgICAgICAgIG1f
ZW5hYmxlZCA9IHRydWU7CiAgICAgfQogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2FuVXNlSklU
KTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICNlbHNl
CkBAIC02NjcsOSArNjkyLDExIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2Fs
bEZyYW0KIAogYm9vbCBJbnRlcnByZXRlcjo6aXNPcGNvZGUoT3Bjb2RlIG9wY29kZSkKIHsKLSNp
ZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURf
R09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoTExJTlQpCiAg
ICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJldHVybiBvcGNvZGUgPj0gMCAmJiBzdGF0aWNf
Y2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSkgPD0gb3BfZW5k
OworI2VuZGlmCiAgICAgcmV0dXJuIG9wY29kZSAhPSBIYXNoVHJhaXRzPE9wY29kZT46OmVtcHR5
VmFsdWUoKQogICAgICAgICAmJiAhSGFzaFRyYWl0czxPcGNvZGU+Ojppc0RlbGV0ZWRWYWx1ZShv
cGNvZGUpCiAgICAgICAgICYmIG1fb3Bjb2RlSURUYWJsZS5jb250YWlucyhvcGNvZGUpOwpAQCAt
NzI2LDExICs3NTMsMTEgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENh
bAogICAgIC8vIGhhdmUgdG8gc3VidHJhY3QgMS4KICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUo
SU5URVJQUkVURVIpCiAgICAgaWYgKGNhbGxlckZyYW1lLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklU
KCkpCi0gICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChj
YWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9j
ay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAg
ICAgZWxzZQogICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZz
ZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAxOwogI2VsaWYgRU5BQkxFKEpJVCkKLSAgICBi
eXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1
cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQo
Y2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZWxzZQogICAgIGJ5dGVjb2Rl
T2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygp
KSAtIDE7CiAjZW5kaWYKQEAgLTMzMjUsNiArMzM1Miw4IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6
CiAjaWYgVVNFKEdDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQpCiAgICAgICBza2lwX3B1dF9i
eV9pZDoKICNlbmRpZgorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0KQorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
KQogICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pIHsKICAgICAgICAg
Lyogb3BfcHV0X2J5X2lkX3RyYW5zaXRpb24gYmFzZShyKSBwcm9wZXJ0eShpZCkgdmFsdWUocikg
b2xkU3RydWN0dXJlKHNJRCkgbmV3U3RydWN0dXJlKHNJRCkgc3RydWN0dXJlQ2hhaW4oY2hhaW4p
IG9mZnNldChuKSBkaXJlY3QoYikKICAgICAgICAgIApAQCAtNTE1NywxMCArNTE4NiwxMCBAQCB2
b2lkIEludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVy
blZQQygpKTsKICNpZiBFTkFCTEUoSklUKQogICAgIGVsc2UKLSAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMo
KSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9m
ZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogI2Vsc2UK
LSAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2Fs
bEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9j
ay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAj
ZW5kaWYKICAgICBsaW5lTnVtYmVyID0gY2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQgLSAxKTsKICAgICBzb3VyY2VJRCA9IGNhbGxlckNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCk7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTA2
NTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNp
bmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJMTElu
dERhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIK
IApAQCAtNDUsNiArNDYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvbkV4
ZWN1dGFibGU7CiAgICAgY2xhc3MgSlNGdW5jdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVj
dDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUV4
ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7
CkBAIC0xMDAsMTkgKzEwMiwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEludGVy
cHJldGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVu
ZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQgY2xhc3Mg
SklUOwogICAgIHB1YmxpYzoKICAgICAgICAgSW50ZXJwcmV0ZXIoKTsKKyAgICAgICAgfkludGVy
cHJldGVyKCk7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBjYW5Vc2VK
SVQpOworICAgICAgICB2b2lkIGluaXRpYWxpemUoTExJbnQ6OkRhdGEqLCBib29sIGNhblVzZUpJ
VCk7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKSB7IHJldHVybiBtX3Jl
Z2lzdGVyRmlsZTsgfQogICAgICAgICAKICAgICAgICAgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJ
RCBpZCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwotI2lm
IEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9H
T1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgICAgICByZXR1cm4gbV9v
cGNvZGVUYWJsZVtpZF07CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIGlkOwpAQCAtMTIyLDcg
KzEyNiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQo
T3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6
ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShM
TElOVCkKKyAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKKyAgICAgICAgICAg
IHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CisjZWxpZiBFTkFCTEUoQ09NUFVU
RURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUp
KTsKICAgICAgICAgICAgIGlmICghbV9lbmFibGVkKQogICAgICAgICAgICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSk7CkBA
IC0xMzIsNiArMTM5LDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG9w
Y29kZTsKICNlbmRpZgogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sIGVuYWJsZWQo
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9lbmFibGVkOworICAgICAgICB9CiAK
ICAgICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCkBAIC0xOTksNyArMjExLDEwIEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSBtX3JlZ2lzdGVyRmlsZTsKICAg
ICAgICAgCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxF
KExMSU5UKQorICAgICAgICBPcGNvZGUqIG1fb3Bjb2RlVGFibGU7IC8vIE1hcHMgT3Bjb2RlSUQg
PT4gT3Bjb2RlIGZvciBjb21waWxpbmcKKyAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlE
PiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBp
bGluZworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgIE9w
Y29kZSBtX29wY29kZVRhYmxlW251bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bj
b2RlIGZvciBjb21waWxpbmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29w
Y29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJG
aWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Jl
Z2lzdGVyRmlsZS5oCShyZXZpc2lvbiAxMDY1NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAgICBj
bGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAog
ICAgIGNsYXNzIFJlZ2lzdGVyRmlsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJl
Z2lzdGVyRmlsZSk7CkBAIC04MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9
CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIqKTsKICAg
ICAgICAgdm9pZCByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9pZCBhZGRUb0Nv
bW1pdHRlZEJ5dGVDb3VudChsb25nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUu
aCIKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIklubGluZUFTTS5oIgorI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNWYWx1ZUlubGluZU1ldGhvZHMuaCIKKyNp
bmNsdWRlICJTY29wZUNoYWluLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisjaWYgQ09NUElMRVIo
R0NDKQorCisjaWYgQ1BVKFg4Nl82NCkKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAi
XG4iCisgICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKKyAgICAibW92ICVyMTMsICVyZGlcbiIK
KyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKFg4NikKK2FzbSAoCisiLmdsb2Js
ICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJP
TChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKKyAgICAi
bW92ICVlZGksIDQoJWVzcClcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9O
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BV
KEFSTV9USFVNQjIpCithc20gKAorIi50ZXh0IiAiXG4iCisiLmFsaWduIDIiICJcbiIKKyIuZ2xv
YmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lN
Qk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKKyIudGh1bWIiICJcbiIKKyIudGh1bWJf
ZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lN
Qk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJsZHIgcjUs
IFtyNSwgIy00MF0iICJcbiIKKyAgICAiY3B5IHIwLCByNSIgIlxuIgorICAgICJiICIgU1lNQk9M
X1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAi
XG4iCispOworI2VuZGlmCisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JF
VFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIGlmICghZXhlYykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xv
YmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOworfQorCisjZW5kaWYgLy8gQ09NUElMRVIo
R0NDKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorI2RlZmluZSBIb3N0Q2FsbFJldHVy
blZhbHVlX2gKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworLy8gVW5mb3J0dW5hdGVs
eSB0aGlzIG9ubHkgd29ya3Mgb24gR0NDLWxpa2UgY29tcGlsZXJzLiBBbmQgaXQncyBjdXJyZW50
bHkgb25seSB1c2VkCisvLyBieSBMTEludCBhbmQgREZHLCB3aGljaCBhbHNvIGFyZSByZXN0cmlj
dGVkIHRvIEdDQy1saWtlIGNvbXBpbGVycy4gV2Ugc2hvdWxkCisvLyBwcm9iYWJseSBmaXggdGhh
dCBhdCBzb21lIHBvaW50LgorI2lmIENPTVBJTEVSKEdDQykKKworI2lmIENBTExJTkdfQ09OVkVO
VElPTl9JU19TVERDQUxMCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIENE
RUNMCisjZWxzZQorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTgorI2VuZGlm
CisKK25hbWVzcGFjZSBKU0MgeworCitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FM
TF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKKworLy8gVGhp
cyBpcyBhIHB1YmxpYyBkZWNsYXJhdGlvbiBvbmx5IHRvIGNvbnZpbmNlIENMQU5HIG5vdCB0byBl
bGlkZSBpdC4KK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxV
RV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7
CisKK2lubGluZSB2b2lkIGluaXRpYWxpemVIb3N0Q2FsbFJldHVyblZhbHVlKCkKK3sKKyAgICBn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSgwKTsKK30KKworfQorCisjZWxzZSAv
LyBDT01QSUxFUihHQ0MpCisKK25hbWVzcGFjZSBKU0MgeworaW5saW5lIHZvaWQgaW5pdGlhbGl6
ZUhvc3RDYWxsUmV0dXJuVmFsdWUoKSB7IH0KK30KKworI2VuZGlmIC8vIENPTVBJTEVSKEdDQykK
KworI2VuZGlmIC8vIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMDY1NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsOCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dp
bGxfY2FsbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcHVzaF9zY29wZSkKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
OgogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3Bf
cHV0X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKQEAgLTQ4Niw2
ICs0ODgsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfcG9zdF9pbmMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wcmVfZGVjKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2luYykKKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3Zh
bCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsKQpAQCAtNTI1
LDYgKzUyOSwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiBKSVRD
b2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2sp
CiB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIkNvbXBpbGluZyBK
SVQgY29kZSFcbiIpOworI2VuZGlmCisgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQog
ICAgIG1fY2FuQmVPcHRpbWl6ZWQgPSBtX2NvZGVCbG9jay0+Y2FuQ29tcGlsZVdpdGhERkcoKTsK
ICNlbmRpZgpAQCAtNjg5LDggKzY5NywxMiBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUo
Q29kZVB0ciogZnVuCiAgICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gbV9jb2RlQmxv
Y2stPnN0cnVjdHVyZVN0dWJJbmZvKG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mb1tpXS5wcm9w
ZXJ0eUFjY2Vzc0luZGV4KS5jYWxsUmV0dXJuTG9jYXRpb247CiAgICAgfQogCi0jaWYgRU5BQkxF
KERGR19KSVQpCi0gICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQpIHsKKyNpZiBFTkFCTEUoREZHX0pJ
VCkgfHwgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2NhbkJlT3B0aW1pemVkCisjaWYgRU5BQkxF
KExMSU5UKQorICAgICAgICB8fCB0cnVlCisjZW5kaWYKKyAgICAgICAgKSB7CiAgICAgICAgIENv
bXBhY3RKSVRDb2RlTWFwOjpFbmNvZGVyIGppdENvZGVNYXBFbmNvZGVyOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBtX2xhYmVscy5z
aXplKCk7ICsrYnl0ZWNvZGVPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChtX2xhYmVsc1tieXRl
Y29kZU9mZnNldF0uaXNTZXQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5o
CShyZXZpc2lvbiAxMDY1NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSklUQ29kZSgpIHsgfQogI2VuZGlmCiAgICAgcHVibGljOgotICAgICAgICBlbnVtIEpJVFR5
cGUgeyBIb3N0Q2FsbFRodW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CisgICAgICAgIGVudW0g
SklUVHlwZSB7IE5vbmUsIEhvc3RDYWxsVGh1bmssIEludGVycHJldGVyVGh1bmssIEJhc2VsaW5l
SklULCBERkdKSVQgfTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKSVRUeXBlIGJvdHRvbVRp
ZXJKSVQoKQogICAgICAgICB7CkBAIC02Niw4ICs2NiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIHJldHVybiBERkdKSVQ7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0
YXRpYyBib29sIGlzT3B0aW1pemluZ0pJVChKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IERGR0pJVDsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgc3RhdGljIGJvb2wgaXNCYXNlbGluZUNvZGUoSklUVHlwZSBqaXRUeXBlKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBJbnRlcnByZXRlclRodW5rIHx8
IGppdFR5cGUgPT0gQmFzZWxpbmVKSVQ7CisgICAgICAgIH0KKyAgICAgICAgCiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgSklUQ29kZSgpCisgICAgICAgICAgICA6IG1faml0VHlwZShOb25lKQog
ICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNzUsNiArODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIDogbV9yZWYocmVmKQogICAgICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlw
ZSkKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGppdFR5cGUgIT0gTm9uZSk7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3IgISgpIGNvbnN0CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDE1ICszMywyMSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
REZHRHJpdmVyLmgiCiAjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlw
ZT4KIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENv
ZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2Rl
QmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYg
KCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAg
ICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29sIGRmZ0Nv
bXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAg
ICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZShnbG9iYWxEYXRhLCBjb2RlQmxvY2su
Z2V0KCksIGppdENvZGUpOwpAQCAtNTUsMTAgKzYxLDcgQEAgaW5saW5lIGJvb2wgaml0Q29tcGls
ZUlmQXBwcm9wcmlhdGUoSlNHbAogICAgICAgICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNv
bXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSk7CiAgICAgfQotI2lmICFFTkFCTEUo
T1BDT0RFX1NBTVBMSU5HKQotICAgIGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJh
dGVkQ29kZSgpKQotICAgICAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09w
cG9ydHVuaXR5KCk7Ci0jZW5kaWYKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2Fy
ZGluZ09wcG9ydHVuaXR5KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTY2LDkg
KzY5LDE0IEBAIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2wKIAogaW5s
aW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYg
aml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNo
YXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkK
IHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2Fs
bHMoKTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5
cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29t
cGlsZUZ1bmN0aW9uKGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSwgaml0Q29k
ZVdpdGhBcml0eUNoZWNrKTsKQEAgLTgzLDExICs5MSw3IEBAIGlubGluZSBib29sIGppdENvbXBp
bGVGdW5jdGlvbklmQXBwcm9wcmkKICAgICAgICAgfQogICAgICAgICBqaXRDb2RlID0gSklUOjpj
b21waWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksICZqaXRDb2RlV2l0aEFyaXR5Q2hl
Y2spOwogICAgIH0KLSNpZiAhRU5BQkxFKE9QQ09ERV9TQU1QTElORykKLSAgICBpZiAoIUJ5dGVj
b2RlR2VuZXJhdG9yOjpkdW1wc0dlbmVyYXRlZENvZGUoKSkKLSAgICAgICAgY29kZUJsb2NrLT5o
YW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwotI2VuZGlmCi0gICAgCisgICAg
Y29kZUJsb2NrLT5oYW5kbGVCeXRlY29kZURpc2NhcmRpbmdPcHBvcnR1bml0eSgpOwogICAgIGNv
ZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAg
IAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRF
eGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAxMDY1NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCw3IEBA
IEV4Y2VwdGlvbkhhbmRsZXIgZ2VuZXJpY1Rocm93KEpTR2xvYmFsRGEKIAogRXhjZXB0aW9uSGFu
ZGxlciBqaXRUaHJvdyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4ZWNTdGF0ZSogY2FsbEZy
YW1lLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBSZXR1cm5BZGRyZXNzUHRyIGZhdWx0TG9jYXRp
b24pCiB7Ci0gICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJhbWUsIGV4
Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChmYXVs
dExvY2F0aW9uKSk7CisgICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBjYWxsRnJh
bWUsIGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNl
dChjYWxsRnJhbWUsIGZhdWx0TG9jYXRpb24pKTsKIH0KIAogfQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQ2LDYgKzE0
NDYsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfaWRfCiAgICAgUHV0
UHJvcGVydHlTbG90IHNsb3QoY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkp
OwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUoKTsK
ICAgICBBU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOworICAgIAogICAgIGFzT2JqZWN0KGJh
c2VWYWx1ZSktPnB1dERpcmVjdChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgaWRlbnQsIHN0YWNr
RnJhbWUuYXJnc1syXS5qc1ZhbHVlKCksIHNsb3QpOwogICAgIAogICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpOwpAQCAtMTkzMSw3ICsx
OTMyLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogICAgIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaW50MzIoKTsKIAogI2lm
IEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgcHJpbnRmKCJFbnRlcmVkIG9wdGltaXplX2Zy
b21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2stPmpp
dEV4ZWN1dGVDb3VudGVyKCksIGNvZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIo
KSwgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNvdW50ZXIoKSk7CisgICAgcHJpbnRmKCIl
cDogRW50ZXJlZCBvcHRpbWl6ZV9mcm9tX2xvb3Agd2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCBy
ZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIg
PSAldVxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCksIGNvZGVC
bG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29kZUJsb2NrLT5vcHRpbWl6YXRp
b25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYKIAogICAgIGlmIChjb2RlQmxvY2stPmhhc09wdGlt
aXplZFJlcGxhY2VtZW50KCkpIHsKQEAgLTIxODYsNDUgKzIxODcsMTMgQEAgREVGSU5FX1NUVUJf
RlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlu
bGluZSBDYWxsRnJhbWUqIGFyaXR5Q2hlY2tGb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lz
dGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCi17Ci0g
ICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKTsK
LSAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgQ29kZUJsb2NrKiBu
ZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVG
b3Ioa2luZCk7Ci0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZyYW1l
LT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOwotCi0gICAgLy8gVGhpcyBlbnN1cmVzIGVu
b3VnaCBzcGFjZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1bWVudHMg
cGFzc2VkIGJ5IHRoZSBjYWxsZXIuCi0gICAgaWYgKCFyZWdpc3RlckZpbGUtPmdyb3coY2FsbEZy
YW1lLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29k
ZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAg
QVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpOwotCi0gICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1l
IGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVm
aW5lZC4KLSAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAt
IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwotICAgIFJlZ2lzdGVyKiBzcmMgPSBjYWxsRnJh
bWUtPnJlZ2lzdGVycygpOwotICAgIFJlZ2lzdGVyKiBkc3QgPSBjYWxsRnJhbWUtPnJlZ2lzdGVy
cygpICsgZGVsdGE7Ci0KLSAgICBpbnQgaTsKLSAgICBpbnQgZW5kID0gLUNhbGxGcmFtZTo6b2Zm
c2V0Rm9yKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKLSAgICBmb3IgKGkgPSAtMTsgaSA+
PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0gc3JjW2ldOwotCi0gICAgZW5kIC09IGRlbHRh
OwotICAgIGZvciAoIDsgaSA+PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0ganNVbmRlZmlu
ZWQoKTsKLQotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUo
ZHN0KTsKLSAgICBBU1NFUlQoKHZvaWQqKW5ld0NhbGxGcmFtZSA8PSByZWdpc3RlckZpbGUtPmVu
ZCgpKTsKLSAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElP
Tih2b2lkKiwgb3BfY2FsbF9hcml0eUNoZWNrKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFN
RShzdGFja0ZyYW1lKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5j
YWxsRnJhbWU7CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3Io
Y2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOworICAgIENh
bGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNh
bGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDYWxsKTsKICAgICBpZiAo
IW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2
b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVT
dGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKQEAgLTIyMzcs
NyArMjIwNiw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKIAog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAgICBD
YWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0Zy
YW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgQ2FsbEZyYW1lKiBuZXdD
YWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFj
a0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7CiAgICAgaWYgKCFuZXdDYWxs
RnJhbWUpCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0
YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVy
Zmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOwogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxMDY1NDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDggKzI2LDEwIEBACiAjaWZuZGVmIEpTSW50ZXJmYWNlSklUX2gKICNkZWZpbmUgSlNJ
bnRlcmZhY2VKSVRfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1
ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTU3RyaW5n
LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAj
aW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRDb21tb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDb21t
b25faAorI2RlZmluZSBMTEludENvbW1vbl9oCisKKyNkZWZpbmUgTExJTlRfRVhFQ1VUSU9OX1RS
QUNJTkcgMAorI2RlZmluZSBMTElOVF9IRUxQRVJfVFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0FM
V0FZU19BTExPQ0FURV9TTE9XIDAKKworI2VuZGlmIC8vIExMSW50Q29tbW9uX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCisKKyNp
ZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIkxv
d0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworbmFtZXNwYWNlIEpT
QyB7IG5hbWVzcGFjZSBMTEludCB7CisKK0RhdGE6OkRhdGEoKQorICAgIDogbV9leGNlcHRpb25J
bnN0cnVjdGlvbnMobmV3IEluc3RydWN0aW9uW21heE9wY29kZUxlbmd0aCArIDFdKQorICAgICwg
bV9vcGNvZGVNYXAobmV3IE9wY29kZVtudW1PcGNvZGVJRHNdKQoreworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbWF4T3Bjb2RlTGVuZ3RoICsgMTsgKytpKQorICAgICAgICBtX2V4Y2VwdGlvbklu
c3RydWN0aW9uc1tpXS51LnBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJv
d19mcm9tX2hlbHBlcl90cmFtcG9saW5lKTsKKyNkZWZpbmUgT1BDT0RFX0VOVFJZKG9wY29kZSwg
bGVuZ3RoKSBtX29wY29kZU1hcFtvcGNvZGVdID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
IyNvcGNvZGUpOworICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfRU5UUlkpOworI3VuZGVm
IE9QQ09ERV9FTlRSWQorfQorCitEYXRhOjp+RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9leGNl
cHRpb25JbnN0cnVjdGlvbnM7CisgICAgZGVsZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIExMSW50RGF0YV9oCisjZGVmaW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRlICJP
cGNvZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisK
K3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKworI2lmIEVOQUJMRShM
TElOVCkKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIERhdGEoKTsKKyAgICB+RGF0YSgpOwor
ICAgIAorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAgICBP
cGNvZGUqIG9wY29kZU1hcCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7Cisg
ICAgfQorcHJpdmF0ZToKKyAgICBJbnN0cnVjdGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7
CisgICAgT3Bjb2RlKiBtX29wY29kZU1hcDsKK307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQpCisK
KyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlm
CisKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25JbnN0
cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgewor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQor
fTsKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAor
I2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpMTEludAorCisjZW5kaWYgLy8gTExJbnREYXRhX2gKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBv
aW50cy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSklUQ29kZS5oIgorI2lu
Y2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5jbHVk
ZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExM
SW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpJVENvZGUmIGppdENvZGUsIE1hY3Jv
QXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjaykKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2Fu
VXNlSklUKCkpIHsKKyAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAg
ICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSkpKTsKKyAgICAg
ICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25z
dHJ1Y3QpOworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNz
ZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3By
b2xvZ3VlKSkpKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2No
ZWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKGtpbmQgPT0gQ29k
ZUZvckNhbGwpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElT
dHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnBy
ZXRlclRodW5rKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihm
dW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOwor
ICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNv
bnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsK
KyAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29uc3Ry
dWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7Cit9CisKK3ZvaWQgZ2V0RXZhbEVu
dHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQorewor
ICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklU
Q29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFn
ZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF9ldmFsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBq
aXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtHZW5l
cmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKK30KKwordm9pZCBnZXRQcm9ncmFt
RW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUpCit7
CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUgPSBK
SVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFu
YWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X3Byb2dyYW1fcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAor
ICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihwcm9ncmFtRW50cnlU
aHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQorCit9IH0gLy8g
bmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVudHJ5cG9pbnRzX2gKKyNkZWZpbmUg
TExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVO
QUJMRShMTElOVCkKKworI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKKworbmFt
ZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV2YWxDb2RlQmxvY2s7CitjbGFzcyBKSVRDb2RlOworY2xh
c3MgSlNHbG9iYWxEYXRhOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworY2xhc3MgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmOworY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKKworbmFtZXNwYWNl
IExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCwgSklUQ29kZSYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJp
dHlDaGVjayk7Cit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUm
KTsKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYpOwor
CitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgRXZh
bENvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0RXZhbEVudHJ5cG9pbnQo
Z2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9ncmFtQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29k
ZSkKK3sKKyAgICBnZXRQcm9ncmFtRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30K
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQp
CisKKyNlbmRpZiAvLyBMTEludEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5o
IgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVk
ZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJKSVRF
eGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMb3dMZXZl
bEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2
b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNH
bG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9I
RUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzLlxuIiwgZ2xv
YmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Ro
cm93KAorICAgICAgICBnbG9iYWxEYXRhLCBleGVjLT5jYWxsZXJGcmFtZSgpLCBnbG9iYWxEYXRh
LT5leGNlcHRpb24sCisgICAgICAgIGV4ZWMtPmNhbGxlckZyYW1lKCktPmNvZGVCbG9jaygpLT5i
eXRlY29kZU9mZnNldChleGVjLT5jYWxsZXJGcmFtZSgpLCBleGVjLT5yZXR1cm5QQygpKSk7Cit9
CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmxsaW50RGF0YS5leGNl
cHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhl
Y1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORwor
ICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93KS5cbiIsIGds
b2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNU
aHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+
Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBn
bG9iYWxEYXRhLT5sbGludERhdGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK3ZvaWQq
IGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRf
SEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAoY2FsbFRv
VGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlm
CisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlv
biwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAg
CisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2R1cmluZ19jYWxs
X3RyYW1wb2xpbmUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlm
IC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTElu
dEV4Y2VwdGlvbnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNfaAorCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxF
KExMSU5UKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IElu
c3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisvLyBUaHJvdyB0aGUgY3VycmVudGx5
IGFjdGl2ZSBleGNlcHRpb24gaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNhbGxlcidzIGNhbGwgZnJh
bWUuCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqKTsKKworLy8gVGVs
bHMgeW91IHdoZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0dXJuLXRvLXRocm93LCBh
ZnRlciB5b3UndmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8g
dGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3du
RXhjZXB0aW9uKEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0aGUgY3VycmVudCBQQyBpbiB0aGUg
Z2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlvdSBhIFBDCisvLyB0aGF0
IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdoaWNoIHdoZW4gYWR2YW5j
ZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91IGFuICJpbnN0cnVjdGlv
biIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBleGNlcHRpb24gaGFuZGxl
ci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhjZXB0aW9uIGhhbmRsaW5n
LAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhhdCBQQyB3aXRob3V0IGRv
aW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVhZCBleGNlcHRpb24gaGFu
ZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5CisvLyBvdGhlciBo
ZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rp
b24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcgdG8gYSBjYWxsIHRodW5r
Lgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRp
ZiAvLyBMTEludEV4Y2VwdGlvbnNfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50SGVscGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTQzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEhlbHBlcnMuaCIKKworI2lmIEVOQUJM
RShMTElOVCkKKworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZS5o
IgorI2luY2x1ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5o
IgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRl
ci5oIgorI2luY2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUg
IkpTQWN0aXZhdGlvbi5oIgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
LmgiCisjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5n
LmgiCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5j
bHVkZSAiTExJbnRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5o
IgorI2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBM
TEludCB7CisKKyNkZWZpbmUgTExJTlRfQkVHSU4oKSBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJh
Y2VyKCZleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpCisKKyNkZWZpbmUgTExJTlRfT1AoaW5kZXgp
IChleGVjLT51bmNoZWNrZWRSKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorI2RlZmluZSBMTElOVF9P
UF9DKGluZGV4KSAoZXhlYy0+cihwY1tpbmRleF0udS5vcGVyYW5kKSkKKworI2RlZmluZSBMTElO
VF9SRVRVUk5fVFdPKGZpcnN0LCBzZWNvbmQpIGRvIHsgICAgICAgXAorICAgICAgICB1bmlvbiB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgc3RydWN0
IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQq
IGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGI7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSBwYWlyOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaW50NjRfdCBpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9IF9fcnRfdTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5hID0gZmlyc3Q7ICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBfX3J0X3UucGFpci5iID0gc2Vjb25kOyAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gX19ydF91Lmk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORF9JTVBM
KCkgTExJTlRfUkVUVVJOX1RXTyhwYywgZXhlYykKKworI2RlZmluZSBMTElOVF9USFJPVyhleGNl
cHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0ds
b2JhbERhdGEmIF9fdF9nbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOyAgICAgICAgXAor
ICAgICAgICBfX3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAg
ICAgICAgICAgXAorICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQor
CisjZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpIGRvIHsgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSB7
ICAgXAorICAgICAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORCgpIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQlJB
TkNIKG9wY29kZSwgY29uZGl0aW9uKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgYm9vbCBfX2JfY29uZGl0aW9uID0gKGNvbmRpdGlvbik7ICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9fYl9jb25kaXRpb24pICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IHBjW09QQ09E
RV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsgICAgICAgIFwKKyAgICAgICAgZWxzZSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bjb2RlKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElO
VF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9f
cl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9PUCgxKSA9IF9fcl9yZXR1
cm5WYWx1ZTsgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVS
Tl9QUk9GSUxFRChvcGNvZGUsIHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBK
U1ZhbHVlIF9fcnBfcmV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0gX19ycF9yZXR1cm5WYWx1ZTsgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAx
XS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IFwKKyAgICAgICAgICAgIEpTVmFsdWU6OmVuY29k
ZShfX3JwX3JldHVyblZhbHVlKTsgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VO
RF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0g
d2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfRU5EX0lNUEwoZXhlYywgY2FsbFRh
cmdldCkgTExJTlRfUkVUVVJOX1RXTygoY2FsbFRhcmdldCksIChleGVjKSkKKworI2RlZmluZSBM
TElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAgICAgICAg
ICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3RfZXhlYyA9IChleGVjKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jdF9wYyA9
IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBKU0ds
b2JhbERhdGEmIF9fY3RfZ2xvYmFsRGF0YSA9IChfX2N0X2V4ZWMpLT5nbG9iYWxEYXRhKCk7ICAg
ICAgXAorICAgICAgICBfX2N0X2dsb2JhbERhdGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhy
b3cpOyAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3Rf
ZXhlYywgY2FsbFRvVGhyb3coX19jdF9leGVjLCBfX2N0X3BjKSk7IFwKKyAgICB9IHdoaWxlIChm
YWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYykgZG8g
eyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY2NlX2V4ZWMg
PSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0
cnVjdGlvbiogX19jY2VfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoX19jY2VfZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2Vw
dGlvbikpICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChf
X2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2NjZV9leGVjLCBfX2NjZV9wYykpOyBcCisgICAgfSB3
aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9SRVRVUk4oZXhlYywgcGMsIGNhbGxU
YXJnZXQpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2Ny
X2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgdm9pZCogX19jcl9jYWxsVGFyZ2V0ID0gKGNhbGxUYXJnZXQp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9DSEVDS19F
WENFUFRJT04oX19jcl9leGVjLT5jYWxsZXJGcmFtZSgpLCBfX2NyX3BjKTsgIFwKKyAgICAgICAg
TExJTlRfQ0FMTF9FTkRfSU1QTChfX2NyX2V4ZWMsIF9fY3JfY2FsbFRhcmdldCk7ICAgICAgICAg
ICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5U
eXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMs
IGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhl
Y3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkXG4iLAorICAgICAgICAgICBl
eGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgc3RhdGljX2Nh
c3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2lu
KCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29k
ZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJvbVdoZXJlLAorICAgICAgICAgICBv
cGVyYW5kLAorICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQpOworICAgIExMSU5UX0VO
RCgpOworfQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUo
RXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVy
YW5kKQoreworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKG9wZXJhbmQpLmpzVmFsdWUo
KTsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCB0
YWc7CisgICAgICAgICAgICB1aW50MzJfdCBwYXlsb2FkOworICAgICAgICB9IGJpdHM7CisgICAg
ICAgIEVuY29kZWRKU1ZhbHVlIGFzVmFsdWU7CisgICAgfSB1OworICAgIHUuYXNWYWx1ZSA9IEpT
VmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMj
JXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWQ6ICUwOHg6JTA4eCIsCisgICAgICAgICAgIGV4
ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBzdGF0aWNfY2Fz
dDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4o
KSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUsCisgICAgICAgICAgIG9w
ZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCwKKyAgICAgICAgICAgdS5i
aXRzLnRhZywKKyAgICAgICAgICAgdS5iaXRzLnBheWxvYWQpOworI2lmbmRlZiBOREVCVUcKKyAg
ICBwcmludGYoIjogJXMiLCB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIHByaW50
ZigiXG4iKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2Vf
cHJvbG9ndWUpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBpbiBwcm9sb2d1ZS5cbiIsIGV4ZWMt
PmNvZGVCbG9jaygpLCBleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworc3RhdGljIHZvaWQg
dHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVu
dCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxl
ZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgcHJp
bnRmKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFy
cyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZVJlZ2lzdGVycyA9ICV1LlxuIiwK
KyAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBjb21tZW50LCBjYWxsZWUsIGV4ZWN1dGFibGUs
CisgICAgICAgICAgIGNvZGVCbG9jay0+bV9udW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSwgY29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHRyYWNlRnVu
Y3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBwcm9sb2d1ZSIsIENvZGVGb3JDYWxsKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNv
bnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQoreworICAg
IHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY2FsbCBhcml0eSBjaGVjayIsIENvZGVGb3JD
YWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJp
dHlDaGVja19mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVj
LCAiY29uc3RydWN0IGFyaXR5IGNoZWNrIiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKQoreworICAgIHByaW50ZigiJXAg
LyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgIiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCks
CisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAt
IGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisjaWZuZGVmIE5E
RUJVRworICAgIHByaW50ZigiJXMsICIsIG9wY29kZU5hbWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5p
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpXSk7CisjZWxzZQorICAgIHBy
aW50Zigib3AjJXUsICIsIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQocGNbMF0udS5vcGNvZGUpKTsKKyNlbmRpZgorICAgIHByaW50Zigic2NvcGUgJXBcbiIsIGV4
ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKHNwZWNpYWxfdHJhY2UpCit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgc3Bl
Y2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICAgICAgICAg
ZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19j
YXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGV4ZWMtPnJldHVyblBDKCkudmFsdWUo
KSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2lubGluZSBib29sIHNob3VsZEpJVChFeGVjU3Rh
dGUqIGV4ZWMpCit7CisgICAgLy8gWW91IGNhbiBtb2RpZnkgdGhpcyB0byB0dXJuIG9mZiBKSVR0
aW5nIHdpdGhvdXQgcmVidWlsZGluZyB0aGUgd29ybGQuCisgICAgcmV0dXJuIGV4ZWMtPmdsb2Jh
bERhdGEoKS5jYW5Vc2VKSVQoKTsKK30KKworZW51bSBFbnRyeUtpbmQgeyBQcm9sb2d1ZSwgQXJp
dHlDaGVjayB9Oworc3RhdGljIEhlbHBlclJldHVyblR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBl
eGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBjaGFyICpu
YW1lLCBFbnRyeUtpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAg
IHByaW50ZigiJXA6IEVudGVyZWQgJXMgd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2Rl
QmxvY2ssIG5hbWUsIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgor
ICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGNvZGVCbG9jay0+ZG9u
dEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7Cisg
ICAgfQorICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkp
IHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICBwcmludGYoIiAgICBDb2Rl
IHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICB9CisgICAgY29kZUJsb2Nr
LT5qaXRTb29uKCk7CisgICAgaWYgKGtpbmQgPT0gUHJvbG9ndWUpCisgICAgICAgIExMSU5UX1JF
VFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNl
dCgwKSwgZXhlYyk7CisgICAgQVNTRVJUKGtpbmQgPT0gQXJpdHlDaGVjayk7CisgICAgTExJTlRf
UkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGVXaXRoQXJpdHlDaGVjaygpLmV4ZWN1dGFi
bGVBZGRyZXNzKCksIGV4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpCit7
CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCBleGVjLT5jb2RlQmxvY2soKSwgImVudHJ5
X29zciIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0
aW9uX2Zvcl9jYWxsKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rp
b24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Io
Q29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsIiwgUHJvbG9ndWUpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkK
K3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxl
ZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1
Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QiLCBQcm9sb2d1ZSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNr
KQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2Fs
bGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwp
LCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2siLCBBcml0eUNoZWNrKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlDaGVjaykKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9u
KGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENv
ZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlD
aGVjayIsIEFyaXR5Q2hlY2spOworfQorCitMTElOVF9IRUxQRVJfREVDTChsb29wX29zcikKK3sK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lm
IEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCBsb29wX29z
ciB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5sbGlu
dEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhl
YykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAg
TExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb2RlQmxv
Y2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVS
Qk9TRV9PU1IpCisgICAgICAgIHByaW50ZigiICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQu
XG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICAKKyAg
ICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQp
OworICAgIAorICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ+IG1hcDsKKyAgICBj
b2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKG1hcCk7CisgICAgQnl0ZWNvZGVBbmRNYWNo
aW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2VhcmNoPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNl
dCwgdW5zaWduZWQsIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldDo6Z2V0Qnl0ZWNvZGVJbmRleD4o
bWFwLmJlZ2luKCksIG1hcC5zaXplKCksIHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpKTsKKyAgICBBU1NFUlQobWFwcGluZyk7CisgICAgQVNTRVJUKG1hcHBpbmctPm1fYnl0
ZWNvZGVJbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocGMgLSBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCkpKTsKKyAgICAKKyAgICB2b2lkKiBqdW1wVGFyZ2V0ID0gY29kZUJs
b2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldChtYXBwaW5nLT5tX21h
Y2hpbmVDb2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQoanVtcFRhcmdldCk7CisgICAgCisgICAgTExJ
TlRfUkVUVVJOX1RXTyhqdW1wVGFyZ2V0LCBleGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
cmVwbGFjZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50
ZXJlZCByZXBsYWNlIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2Rl
QmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoc2hv
dWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMt
Pmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICAg
ICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlmCisg
ICAgICAgIH0KKyAgICAgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgfSBlbHNlCisgICAg
ICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ2hlY2tpbmcg
c3RhY2sgaGVpZ2h0IHdpdGggZXhlYyA9ICVwLlxuIiwgZXhlYyk7CisgICAgcHJpbnRmKCJDb2Rl
QmxvY2sgPSAlcC5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpKTsKKyAgICBwcmludGYoIk51bSBjYWxs
ZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdp
c3RlcnMpOworICAgIHByaW50ZigiTnVtIHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygp
LT5tX251bVZhcnMpOworICAgIHByaW50ZigiQ3VycmVudCBlbmQgaXMgYXQgJXAuXG4iLCBleGVj
LT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKKyNlbmRp
ZgorICAgIEFTU0VSVCgmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVt
Q2FsbGVlUmVnaXN0ZXJzXSA+IGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0
ZXJGaWxlKCkuZW5kKCkpOworICAgIGlmIChVTkxJS0VMWSghZXhlYy0+Z2xvYmFsRGF0YSgpLmlu
dGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5j
b2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnNdKSkpIHsKKyAgICAgICAgZXhlYyA9IGV4
ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24g
PSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhy
b3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhj
ZXB0aW9uKGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9FTkRfSU1QTCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNrKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9y
KGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBD
b2RlRm9yQ2FsbCk7CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5j
YWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3Jl
YXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5D
YWxsZXIoZXhlYyk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQq
PihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JF
VFVSTl9UV08oMCwgbmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25z
dHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEV4ZWNTdGF0ZSog
bmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmZXhlYy0+Z2xv
YmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNvbnN0cnVjdCk7
CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgp
OworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVy
Zmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYyk7
CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwg
bmV3RXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlv
bikKK3sKKyAgICBMTElOVF9CRUdJTigpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAg
cHJpbnRmKCJDcmVhdGluZyBhbiBhY3RpdmF0aW9uLCBleGVjID0gJXAhXG4iLCBleGVjKTsKKyNl
bmRpZgorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRl
KGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYywgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4oZXhlYy0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSk7CisgICAgZXhlYy0+c2V0
U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goYWN0aXZhdGlvbikpOworICAgIExM
SU5UX1JFVFVSTihKU1ZhbHVlKGFjdGl2YXRpb24pKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1Zh
bHVlIGFyZ3VtZW50cyA9IEpTVmFsdWUoQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBleGVjKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgZXhlYy0+dW5j
aGVja2VkUihwY1sxXS51Lm9wZXJhbmQpID0gYXJndW1lbnRzOworICAgIGV4ZWMtPnVuY2hlY2tl
ZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpID0gYXJndW1l
bnRzOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3Jl
YXRlX3RoaXMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU0Z1bmN0aW9uKiBjb25zdHJ1
Y3RvciA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIAorI2lmICFBU1NFUlRfRElT
QUJMRUQKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQVNTRVJUKGNvbnN0
cnVjdG9yLT5tZXRob2RUYWJsZSgpLT5nZXRDb25zdHJ1Y3REYXRhKGNvbnN0cnVjdG9yLCBjb25z
dHJ1Y3REYXRhKSA9PSBDb25zdHJ1Y3RUeXBlSlMpOworI2VuZGlmCisgICAgCisgICAgU3RydWN0
dXJlKiBzdHJ1Y3R1cmU7CisgICAgSlNWYWx1ZSBwcm90byA9IExMSU5UX09QKDIpLmpzVmFsdWUo
KTsKKyAgICBpZiAocHJvdG8uaXNPYmplY3QoKSkKKyAgICAgICAgc3RydWN0dXJlID0gYXNPYmpl
Y3QocHJvdG8pLT5pbmhlcml0b3JJRChleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGVsc2UKKyAg
ICAgICAgc3RydWN0dXJlID0gY29uc3RydWN0b3ItPnNjb3BlKCktPmdsb2JhbE9iamVjdC0+ZW1w
dHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1w
dHlPYmplY3QoZXhlYywgc3RydWN0dXJlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9jb252ZXJ0X3RoaXMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHYxID0g
TExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAg
ICBMTElOVF9SRVRVUk4odjEudG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25ld19vYmplY3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElO
VF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbmV3X2FycmF5KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
UkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4oJkxMSU5U
X09QKDIpKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uZXdfYXJyYXlfYnVmZmVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVU
VVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZl
cihwY1syXS51Lm9wZXJhbmQpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25ld19yZWdleHApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBSZWdF
eHAqIHJlZ0V4cCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZWdleHAocGNbMl0udS5vcGVyYW5kKTsK
KyAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVT
eW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBmbGFnIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1
Y3Rvci4iKSk7CisgICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKGV4ZWMtPmds
b2JhbERhdGEoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdFeHApKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25vdCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oIUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZXEpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3N0cmljdGVxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElO
VF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9sZXNzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbGVzc2VxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9n
cmVhdGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVh
bihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJl
cSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNM
ZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1Ao
MSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICsgMSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHJlX2RlYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYykKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIo
ZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQgKyAxKTsKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wb3N0X2RlYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGRvdWJsZSByZXN1bHQgPSBM
TElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBq
c051bWJlcihyZXN1bHQgLSAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcikKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVn
YXRlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKC1M
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfYWRkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2
MSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKTsKKyAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50
ZigiVHJ5aW5nIHRvIGFkZCAlcyIsIHYxLmRlc2NyaXB0aW9uKCkpOworICAgIHByaW50ZigiIHRv
ICVzLlxuIiwgdjIuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNT
dHJpbmcoKSAmJiAhdjIuaXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5n
KGV4ZWMsIGFzU3RyaW5nKHYxKSwgdjIudG9TdHJpbmcoZXhlYykpKTsKKyAgICAKKyAgICBpZiAo
djEuaXNOdW1iZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIodjEuYXNOdW1iZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKKyAgICAKKyAgICBMTElOVF9S
RVRVUk4oanNBZGRTbG93Q2FzZShleGVjLCB2MSwgdjIpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX211bCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAqIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9zdWIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZGl2KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX21vZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihmbW9kKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpLCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2xzaGlmdCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIDw8IChMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSAmIDMxKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcnNoaWZ0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4g
KExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpICYgMzEpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNoaWZ0KQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvVUludDMy
KGV4ZWMpID4+IChMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSAmIDMxKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgp
LnRvSW50MzIoZXhlYykgJiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcikKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50
b0ludDMyKGV4ZWMpIHwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRv
SW50MzIoZXhlYykgXiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIofkxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRv
SW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19p
bnN0YW5jZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgYmFzZVZhbCA9IExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpOworI2lmbmRlZiBOREVCVUcKKyAgICBUeXBlSW5mbyB0eXBl
SW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VSVCghYmFzZVZhbC5pc09iamVjdCgpCisg
ICAgICAgICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVjdChiYXNlVmFsKS0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKTsKKyNlbmRpZgorICAgIExMSU5U
X1RIUk9XKGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4ZWMsICJpbnN0YW5jZW9mIiwgYmFzZVZh
bCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZikKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhz
OjpvcEluc3RhbmNlT2ZTbG93KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBM
TElOVF9SRVRVUk4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3VuZGVmaW5lZCkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QX0MoMikuanNWYWx1
ZSgpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4odi5pc0NlbGwoKSA/IHYuYXNDZWxsKCkt
PnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNVbmRlZmluZWQoKSA6IHYuaXNV
bmRlZmluZWQoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVhbikK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkuaXNCb29sZWFuKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX251bWJlcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVS
Tihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihpc0pTU3RyaW5nKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfb2JqZWN0KQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzT2JqZWN0
VHlwZShMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX2Z1bmN0aW9uKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihqc0lzRnVuY3Rpb25UeXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW4pCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihleGVj
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmUsIENvbW1vblNsb3dQYXRo
czo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUu
b3BlcmFuZCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRCgKKyAgICAg
ICAgb3BfcmVzb2x2ZV9za2lwLAorICAgICAgICBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVNr
aXAoCisgICAgICAgICAgICBleGVjLAorICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmlk
ZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwKKyAgICAgICAgICAgIHBjWzNdLnUub3BlcmFuZCkp
OworfQorCitzdGF0aWMgSlNWYWx1ZSByZXNvbHZlR2xvYmFsKEV4ZWNTdGF0ZSogZXhlYywgSW5z
dHJ1Y3Rpb24qIHBjKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJs
b2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVCbG9jay0+Z2xv
YmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9iYWxPYmplY3QoKSk7
CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0udS5vcGVyYW5kOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgCisgICAgQVNTRVJUX1VOVVNF
RChzdHJ1Y3R1cmUsIHN0cnVjdHVyZSAhPSBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAg
ICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwcm9wZXJ0
eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAKKyAgICBpZiAo
Z2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKSB7CisgICAg
ICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCk7CisgICAgICAg
IGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUo
KS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgc2xvdC5zbG90QmFz
ZSgpID09IGdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgcGNbM10udS5zdHJ1Y3R1cmUuc2V0
KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgICAgICAgICBwY1s0
XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRp
b24gPSBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KTsKKyAgICByZXR1
cm4gSlNWYWx1ZSgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9i
YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3Bf
cmVzb2x2ZV9nbG9iYWwsIHJlc29sdmVHbG9iYWwoZXhlYywgcGMpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1p
YywgcmVzb2x2ZUdsb2JhbChleGVjLCBwYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWlj
LCBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRl
bnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9yZXNvbHZlX2Jhc2UpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBJZGVudGlmaWVyJiBp
ZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7Cisg
ICAgaWYgKHBjWzNdLnUub3BlcmFuZCkgeworICAgICAgICBKU1ZhbHVlIGJhc2UgPSBKU0M6OnJl
c29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIHRydWUpOworICAgICAg
ICBpZiAoIWJhc2UpCisgICAgICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFs
aWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgICAgICBMTElO
VF9SRVRVUk4oYmFzZSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChv
cF9yZXNvbHZlX2Jhc2UsIEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3Bl
Q2hhaW4oKSwgZmFsc2UpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9w
cm9wZXJ0eV9leGlzdHMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU09iamVjdCogb2Jq
ZWN0ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBQcm9wZXJ0eVNsb3Qg
c2xvdChvYmplY3QpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCkt
PmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIW9iamVjdC0+Z2V0UHJvcGVy
dHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJy
b3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0
aF9iYXNlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21t
b25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhCYXNlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5p
ZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTog
dGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVj
YXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhU
aGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCks
IExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9P
UCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJv
ZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4K
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9p
ZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50
aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDEpID0gcmVzdWx0OworCisg
ICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkK
KyAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAmJiBzbG90
LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAgICAgICAg
CisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAK
KyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAg
ICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5n
KCkpIHsKKyAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAg
ICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVj
dHVyZSk7CisgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgp
ICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHBjW09QQ09E
RV9MRU5HVEgob3BfZ2V0X2J5X2lkKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0gSlNW
YWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRl
bnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsK
KyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9w
ZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworICAgIExMSU5UX1JFVFVSTihiYXNlVmFsdWUuZ2V0
KGV4ZWMsIGlkZW50LCBzbG90KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRf
YnlfaWQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5p
ZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUg
PSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjb2Rl
QmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAg
ICBhc09iamVjdChiYXNlVmFsdWUpLT5wdXREaXJlY3QoZXhlYy0+Z2xvYmFsRGF0YSgpLCBpZGVu
dCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOworICAgIGVsc2UKKyAgICAgICAgYmFz
ZVZhbHVlLnB1dChleGVjLCBpZGVudCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHNsb3QpOwor
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIGlmIChiYXNlVmFsdWUuaXND
ZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpKSB7CisgICAgICAgIAorICAgICAg
ICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAg
IGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAm
JiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpCisgICAg
ICAgICAgICAmJiBiYXNlQ2VsbCA9PSBzbG90LmJhc2UoKSkgeworICAgICAgICAgICAgCisgICAg
ICAgICAgICBpZiAoc2xvdC50eXBlKCkgPT0gUHV0UHJvcGVydHlTbG90OjpOZXdQcm9wZXJ0eSkg
eworICAgICAgICAgICAgICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiBzdHJ1
Y3R1cmUtPnByZXZpb3VzSUQoKS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSA9PSBzdHJ1Y3R1
cmUtPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8g
VGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzb21lIG9mIHRoZSBtZXRob2RzIHdlIGNhbGwKKyAgICAg
ICAgICAgICAgICAgICAgLy8gYmVsb3cgbWF5IEdDLgorICAgICAgICAgICAgICAgICAgICBwY1sw
XS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisK
KyAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplUHJvdG90eXBlQ2hhaW4oZXhlYywgYmFzZUNl
bGwpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0
cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5pc09iamVjdCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
cGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZp
b3VzSUQoKSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzZd
LnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAg
ICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVD
aGFpbihleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsKKyAgICAgICAg
ICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAgICAgICAgICAg
ICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCks
IGNoYWluKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChw
Y1s4XS51Lm9wZXJhbmQpCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9
IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dCk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIHBj
WzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fbm9ybWFsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfb3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5z
ZXQoCisgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAgICBwY1s1XS51Lm9w
ZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIGlmIChmYWxzZSAmJiAhc3RyY21wKGlk
ZW50LmFzY2lpKCkuZGF0YSgpLCAicmVuZGVyUmVmbGVjdGlvbnMiKSkKKyAgICAgICAgcHJpbnRm
KCJGaW5pc2hpbmcgYWNjZXNzIHRvIHJlbmRlclJlZmxlY3Rpb25zIGZyb20gTExJbnQgc2xvdyBw
YXRoLlxuIik7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9kZWxfYnlfaWQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0
ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7CisgICAgYm9vbCBjb3Vs
ZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VP
YmplY3QsIGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpKTsKKyAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJv
cihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKK3sK
KyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmco
KSkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5m
YXN0R2V0T3duUHJvcGVydHkoZXhlYywgYXNTdHJpbmcoc3Vic2NyaXB0KS0+dmFsdWUoZXhlYykp
KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgaWYgKHN1YnNj
cmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50
MzIoKTsKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNl
VmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc1N0cmluZyhiYXNl
VmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0pTQnl0
ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5k
ZXgoaSkpCisgICAgICAgICAgICByZXR1cm4gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5k
ZXgoZXhlYywgaSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVj
LCBpKTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3Jp
cHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZhbHVlLmdl
dChleGVjLCBwcm9wZXJ0eSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlf
dmFsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9w
X2dldF9ieV92YWwsIGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X2FyZ3VtZW50X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgYXJn
dW1lbnRzID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICghYXJndW1lbnRzKSB7Cisg
ICAgICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
ZXhlYyk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBMTElOVF9P
UCgyKSA9IGFyZ3VtZW50czsKKyAgICAgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgfQorICAg
IAorICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBhcmd1bWVudHMsIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5h
bWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhl
YywgTExJTlRfT1AoMikuanNWYWx1ZSgpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7Cisg
ICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAg
ICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFs
dWUgdmFsdWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBpZiAoTElLRUxZ
KHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0
LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgeworICAgICAg
ICAgICAgSlNBcnJheSoganNBcnJheSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAg
IGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkKKyAgICAgICAgICAgICAgICBqc0FycmF5LT5z
ZXRJbmRleChnbG9iYWxEYXRhLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgSlNBcnJheTo6cHV0QnlJbmRleChqc0FycmF5LCBleGVjLCBpLCB2YWx1ZSk7Cisg
ICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNKU0J5dGVB
cnJheShiYXNlVmFsdWUpCisgICAgICAgICAgICAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5j
YW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICAgICAgSlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5
ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMy
KCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNJ
bnQzMigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAganNCeXRl
QXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICAgICAgICAgIExM
SU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJhc2VWYWx1ZS5w
dXQoZXhlYywgaSwgdmFsdWUpOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisg
ICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYyktPnZh
bHVlKGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VW
YWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgp
OworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOwor
ICAgIAorICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7Cisg
ICAgCisgICAgYm9vbCBjb3VsZERlbGV0ZTsKKyAgICAKKyAgICB1aW50MzJfdCBpOworICAgIGlm
IChzdWJzY3JpcHQuZ2V0VUludDMyKGkpKQorICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmpl
Y3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNlT2JqZWN0LCBleGVj
LCBpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
ICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBj
b3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJh
c2VPYmplY3QsIGV4ZWMsIHByb3BlcnR5KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb3VsZERl
bGV0ZSAmJiBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5U
X1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4i
KSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkucHV0KGV4ZWMsIHBjWzJdLnUub3Bl
cmFuZCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2dldHRlcl9zZXR0ZXIpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOwor
ICAgIEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsK
KyAgICAKKyAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUo
ZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgSlNWYWx1ZSBn
ZXR0ZXIgPSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzZXR0ZXIgPSBMTElO
VF9PUCg0KS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKGdldHRlci5pc09iamVjdCgpIHx8IGdldHRl
ci5pc1VuZGVmaW5lZCgpKTsKKyAgICBBU1NFUlQoc2V0dGVyLmlzT2JqZWN0KCkgfHwgc2V0dGVy
LmlzVW5kZWZpbmVkKCkpOworICAgIEFTU0VSVChnZXR0ZXIuaXNPYmplY3QoKSB8fCBzZXR0ZXIu
aXNPYmplY3QoKSk7CisgICAgCisgICAgaWYgKCFnZXR0ZXIuaXNVbmRlZmluZWQoKSkKKyAgICAg
ICAgYWNjZXNzb3ItPnNldEdldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KGdldHRl
cikpOworICAgIGlmICghc2V0dGVyLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIGFjY2Vzc29yLT5z
ZXRTZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBhc09iamVjdChzZXR0ZXIpKTsKKyAgICBiYXNl
T2JqLT5wdXREaXJlY3RBY2Nlc3NvcigKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLAorICAg
ICAgICBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAg
ICAgICBhY2Nlc3NvciwgQWNjZXNzb3IpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfam1wX3Njb3BlcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IHVuc2lnbmVkIGNvdW50ID0gcGNbMV0udS5vcGVyYW5kOworICAgIFNjb3BlQ2hhaW5Ob2RlKiB0
bXAgPSBleGVjLT5zY29wZUNoYWluKCk7CisgICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAgIHRt
cCA9IHRtcC0+cG9wKCk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbih0bXApOworICAgIHBjICs9
IHBjWzJdLnUub3BlcmFuZDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2p0cnVlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNI
KG9wX2p0cnVlLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZhbHNlKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgTExJTlRfQlJBTkNIKG9wX2pmYWxzZSwgIUxMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRv
Qm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcykKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX0JSQU5DSChvcF9qbGVzcywganNMZXNzPHRy
dWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2pubGVzcywgIWpzTGVzczx0cnVlPihleGVj
LCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVhdGVyLCBqc0xlc3M8ZmFsc2U+KGV4ZWMsIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlciwgIWpzTGVzczxmYWxzZT4oZXhlYywgTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEsIGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09Q
X0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBM
TElOVF9CUkFOQ0gob3Bfam5sZXNzZXEsICFqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBM
TElOVF9CUkFOQ0gob3BfamdyZWF0ZXJlcSwganNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEsICFqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBB
U1NFUlQoc2NydXRpbmVlLmlzRG91YmxlKCkpOworICAgIGRvdWJsZSB2YWx1ZSA9IHNjcnV0aW5l
ZS5hc0RvdWJsZSgpOworICAgIGludDMyX3QgaW50VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90
Pih2YWx1ZSk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAg
aWYgKHZhbHVlID09IGludFZhbHVlKSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+aW1tZWRpYXRlU3dp
dGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoaW50VmFsdWUsIGRl
ZmF1bHRPZmZzZXQpOworICAgIH0gZWxzZQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0Owor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0
cmluZykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9w
ZXJhbmQ7CisgICAgaWYgKCFzY3J1dGluZWUuaXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVm
YXVsdE9mZnNldDsKKyAgICBlbHNlIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hK
dW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGlu
ZWUpLT52YWx1ZShleGVjKS5pbXBsKCksIGRlZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxv
Y2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZQor
ICAgICAgICAgICB8fCAhY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkKKyAgICAgICAg
ICAgfHwgZXhlYy0+dW5jaGVja2VkUihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5q
c1ZhbHVlKCkpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDcmVhdGlu
ZyBmdW5jdGlvbiFcbiIpOworI2VuZGlmCisgICAgTExJTlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVu
Y3Rpb25EZWNsKHBjWzJdLnUub3BlcmFuZCktPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9j
aygpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0
aW9uRXhwcihwY1syXS51Lm9wZXJhbmQpOworICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBmdW5jdGlv
bi0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpOworICAgIAorICAgIGlmICghZnVuY3Rp
b24tPm5hbWUoKS5pc051bGwoKSkgeworICAgICAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBmdW5j
dGlvblNjb3BlT2JqZWN0ID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGZ1bmN0
aW9uLT5uYW1lKCksIGZ1bmMsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGZ1bmMt
PnNldFNjb3BlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZnVuYy0+c2NvcGUoKS0+cHVzaChmdW5jdGlv
blNjb3BlT2JqZWN0KSk7CisgICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihmdW5jKTsKK30K
Kworc3RhdGljIEhlbHBlclJldHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVj
Q2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVy
RnJhbWUoKTsKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0
YSgpOworCisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkp
OworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKworICAgIGlmIChraW5kID09IENv
ZGVGb3JDYWxsKSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgICAgICBDYWxsVHlw
ZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxlZSwgY2FsbERhdGEpOworICAgIAorICAgICAg
ICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVKUyk7CisgICAgCisgICAgICAgIGlmIChjYWxs
VHlwZSA9PSBDYWxsVHlwZUhvc3QpIHsKKyAgICAgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxs
UmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4
ZWNDYWxsZWUpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4o
ZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpKTsKKyAgICAgICAgfQorICAgICAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORwor
ICAgICAgICBwcmludGYoIkNhbGwgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwgY2Fs
bGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICAgICAgQVNTRVJUKGNhbGxUeXBlID09
IENhbGxUeXBlTm9uZSk7CisgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0
ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAgIH0KKworICAgIEFTU0VSVChr
aW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIAorICAgIENvbnN0cnVjdERhdGEgY29uc3Ry
dWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5cGUgPSBnZXRDb25zdHJ1Y3RE
YXRhKGNhbGxlZSwgY29uc3RydWN0RGF0YSk7CisgICAgCisgICAgQVNTRVJUKGNvbnN0cnVjdFR5
cGUgIT0gQ29uc3RydWN0VHlwZUpTKTsKKyAgICAKKyAgICBpZiAoY29uc3RydWN0VHlwZSA9PSBD
b25zdHJ1Y3RUeXBlSG9zdCkgeworICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWND
YWxsZWUpKTsKKworICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgIH0KKyAg
ICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ29uc3RydWN0b3IgY2Fs
bGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2Vu
ZGlmCisKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlTm9uZSk7Cisg
ICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUNvbnN0cnVjdG9yRXJyb3Io
ZXhlYywgY2FsbGVlKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBlIHNldFVwQ2FsbChF
eGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExpbmtJbmZvKiBjYWxs
TGlua0luZm8gPSAwKQoreworICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwgPSBnZXRK
U0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOworICAgIGlmICghY2FsbGVlQXNGdW5jdGlvbkNlbGwp
CisgICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2FsbGVlQXNW
YWx1ZSwga2luZCk7CisgICAgCisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihj
YWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihjYWxs
ZWUtPnNjb3BlVW5jaGVja2VkKCkpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0g
Y2FsbGVlLT5leGVjdXRhYmxlKCk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNv
ZGVQdHI7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOworICAgIGlmIChleGVjdXRhYmxl
LT5pc0hvc3RGdW5jdGlvbigpKQorICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJh
dGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIGVsc2UgeworICAgICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1
bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOworICAgICAgICBKU09iamVjdCogZXJyb3Ig
PSBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29w
ZSgpLCBraW5kKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgTExJTlRfQ0FMTF9U
SFJPVyhleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOworICAgICAgICBjb2Rl
QmxvY2sgPSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsK
KyAgICAgICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSkpCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRh
YmxlLT5nZW5lcmF0ZWRKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJ
VENvZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICB9CisgICAgCisgICAgaWYgKGNh
bGxMaW5rSW5mbykgeworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLT5pc09uTGlzdCgpKQorICAg
ICAgICAgICAgY2FsbExpbmtJbmZvLT5yZW1vdmUoKTsKKyAgICAgICAgRXhlY1N0YXRlKiBleGVj
Q2FsbGVyID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgY2FsbExpbmtJbmZv
LT5jYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+Y29kZUJs
b2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8t
Pmxhc3RTZWVuQ2FsbGVlLnNldChleGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4ZWNDYWxsZXIt
PmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAgICAgY2FsbExp
bmtJbmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9IGNvZGVQdHI7CisgICAgICAgIGlmIChjb2RlQmxv
Y2spCisgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2FsbExpbmtJbmZv
KTsKKyAgICB9CisgICAgCisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIGNv
ZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Cit9CisKK2lubGluZSBIZWxwZXJSZXR1cm5UeXBl
IGdlbmVyaWNDYWxsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNl
dCB1cCBhIGNhbGwgZnJhbWUuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQg
Y29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBJZiBwb3NzaWJsZSwgbGluayB0aGUg
Y2FsbCdzIGlubGluZSBjYWNoZS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUg
Y29kZSBhZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBK
U1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAg
ICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIAor
ICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3Bl
cmFuZCk7CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkg
PSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOwor
ICAgIAorICAgIEFTU0VSVChwY1s0XS51LmNhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJuIHNldFVw
Q2FsbChleGVjQ2FsbGVlLCBwYywga2luZCwgY2FsbGVlQXNWYWx1ZSwgcGNbNF0udS5jYWxsTGlu
a0luZm8pOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCkKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0KQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ29uc3Ry
dWN0KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFyYXJncykKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAg
YSBjYWxsIGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50cy4KKyAg
ICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2Fy
eS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNzIHRvIGNh
bGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFs
dWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUqIGV4ZWND
YWxsZWUgPSBsb2FkVmFyYXJncygKKyAgICAgICAgZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5p
bnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksCisgICAgICAgIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgcGNbNF0udS5vcGVyYW5kKTsKKyAgICBMTElO
VF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYyk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+
dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4
ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIoUmVn
aXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90Pihw
YyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSk7CisgICAgCisgICAgcmV0dXJuIHNl
dFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOwor
ICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7
CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAg
IAorICAgIGV4ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUu
b3BlcmFuZCk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhl
Y0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVl
OworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAg
ICBleGVjQ2FsbGVlLT5zZXRSZXR1cm5QQyhiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbGxp
bnRfZ2VuZXJpY19yZXR1cm5fcG9pbnQpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2so
MCk7CisgICAgZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRh
ZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX2V2
YWwpKTsKKyAgICAKKyAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2Jh
bEZ1bmNFdmFsKSkKKyAgICAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29k
ZUZvckNhbGwsIGNhbGxlZUFzVmFsdWUpOworICAgIAorICAgIGdsb2JhbERhdGEuaG9zdENhbGxS
ZXR1cm5WYWx1ZSA9IGV2YWwoZXhlY0NhbGxlZSk7CisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhl
Y0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24p
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCktPm5l
ZWRzRnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgSlNWYWx1ZSBhY3RpdmF0aW9uVmFsdWUgPSBMTElO
VF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhY3RpdmF0aW9uVmFsdWUpIHsKKyAgICAgICAg
aWYgKEpTVmFsdWUgdiA9IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lz
dGVyKHBjWzJdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSkgeworICAgICAgICAgICAgaWYgKCFleGVj
LT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICAgICAgYXNBcmd1bWVu
dHModiktPnRlYXJPZmYoZXhlYyk7CisgICAgICAgIH0KKyAgICAgICAgTExJTlRfRU5EKCk7Cisg
ICAgfQorICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGFzQWN0aXZhdGlvbihhY3RpdmF0
aW9uVmFsdWUpOworICAgIGFjdGl2YXRpb24tPnRlYXJPZmYoZXhlYy0+Z2xvYmFsRGF0YSgpKTsK
KyAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKQorICAgICAgICBhc0FyZ3VtZW50
cyh2KS0+ZGlkVGVhck9mZkFjdGl2YXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBhY3RpdmF0aW9u
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJf
b2ZmX2FyZ3VtZW50cykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEFTU0VSVChleGVjLT5j
b2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygpICYmICFleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNG
dWxsU2NvcGVDaGFpbigpKTsKKyAgICBhc0FyZ3VtZW50cyhleGVjLT51bmNoZWNrZWRSKHVubW9k
aWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpLT50ZWFy
T2ZmKGV4ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfc3RyY2F0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzU3Ry
aW5nKGV4ZWMsICZMTElOVF9PUCgyKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9QcmltaXRpdmUoZXhlYykp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X3BuYW1lcykKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBp
ZiAodi5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBjICs9IHBjWzVdLnUub3BlcmFu
ZDsKKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBvID0g
di50b09iamVjdChleGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVjdHVy
ZSgpOworICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3Ig
PSBzdHJ1Y3R1cmUtPmVudW1lcmF0aW9uQ2FjaGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlOYW1l
SXRlcmF0b3IgfHwganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4o
KSAhPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpKQorICAgICAgICBqc1Byb3BlcnR5
TmFtZUl0ZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8pOwor
ICAgIAorICAgIExMSU5UX09QKDEpID0gSlNWYWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsK
KyAgICBMTElOVF9PUCgyKSA9IEpTVmFsdWUobyk7CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rl
cjo6d2l0aEludCgwKTsKKyAgICBMTElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJv
cGVydHlOYW1lSXRlcmF0b3ItPnNpemUoKSk7CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xFTkdU
SChvcF9nZXRfcG5hbWVzKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25leHRfcG5hbWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU09iamVj
dCogYmFzZSA9IGFzT2JqZWN0KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CisgICAgSlNTdHJpbmcq
IHByb3BlcnR5ID0gYXNTdHJpbmcoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBpZiAoYmFz
ZS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eS0+dmFsdWUoZXhl
YykpKSkgeworICAgICAgICAvLyBHbyB0byB0YXJnZXQuCisgICAgICAgIHBjICs9IHBjWzZdLnUu
b3BlcmFuZDsKKyAgICB9IC8vIEVsc2UsIGRvbid0IGNoYW5nZSB0aGUgUEMsIHNvIHRoZSBpbnRl
cnByZXRlciB3aWxsIHJlbG9vcC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1Zh
bHVlIHYgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2Jq
ZWN0KGV4ZWMpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIExMSU5U
X09QKDEpID0gbzsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+
cHVzaChvKSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wb3Bfc2NvcGUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBleGVjLT5zZXRT
Y29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cG9wKCkpOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgIEpTT2JqZWN0KiBzY29wZSA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVj
LCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwgTExJTlRfT1AoMykuanNW
YWx1ZSgpLCBEb250RGVsZXRlKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3Bl
Q2hhaW4oKS0+cHVzaChzY29wZSkpOworICAgIExMSU5UX1JFVFVSTihzY29wZSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IExMSU5UX1RIUk9XKExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIExMSU5UX1RIUk9XKGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIExMSU5UX09QX0Mo
MSkuanNWYWx1ZSgpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZGVidWcpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBpbnQg
ZGVidWdIb29rSUQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgaW50IGZpcnN0TGluZSA9IHBjWzJd
LnUub3BlcmFuZDsKKyAgICBpbnQgbGFzdExpbmUgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5kZWJ1ZyhleGVjLCBzdGF0aWNfY2Fz
dDxEZWJ1Z0hvb2tJRD4oZGVidWdIb29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVf
d2lsbF9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxl
ZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT53aWxsRXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1Zh
bHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJvZmlsZV9kaWRfY2FsbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgICgqUHJvZmlsZXI6
OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSgpKS0+ZGlkRXhlY3V0ZShleGVjLCBMTElOVF9PUCgx
KS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgTExJbnRIZWxwZXJzX2gKKyNkZWZpbmUgTExJbnRIZWxwZXJzX2gKKworI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIEVO
QUJMRShMTElOVCkKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVj
dCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKwordHlwZWRlZiBpbnQ2NF90IEhl
bHBlclJldHVyblR5cGU7CisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFj
ZV9vcGVyYW5kKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9w
ZXJhbmQpOworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4
ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworCisj
ZGVmaW5lIExMSU5UX0hFTFBFUl9ERUNMKG5hbWUpIFwKKyAgICBleHRlcm4gIkMiIEhlbHBlclJl
dHVyblR5cGUgbGxpbnRfIyNuYW1lKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQor
CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZSk7CitMTElOVF9IRUxQRVJfREVDTCh0
cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFj
ZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRy
YWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlD
aGVja19mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKHNwZWNpYWxfdHJhY2UpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCk7CitMTElOVF9I
RUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQ
RVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9I
RUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3NyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2Up
OworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjayk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
b25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2Fj
dGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jb252ZXJ0X3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19vYmpl
Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbmV3X2FycmF5X2J1ZmZlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bmV3X3JlZ2V4cCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9lcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJpY3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bnN0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9sZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHJlX2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Bvc3RfZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19qc251bWJlcik7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9hZGQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX211bCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfc3ViKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX21vZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3Vyc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfYml0b3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhv
cik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lu
c3RhbmNlb2YpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19ib29sZWFuKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
aXNfb2JqZWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfaW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfc2tpcCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Jlc29sdmVfYmFzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5
X2V4aXN0cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9nZXRfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9h
cmd1bWVudHNfbGVuZ3RoKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50
X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9kZWxfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXJfc2V0dGVyKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qdHJ1
ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamZhbHNlKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qbGVzcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
am5ncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzc2VxKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdy
ZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVyZXEpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9pbW0pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3N3aXRjaF9jaGFyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbmV3X2Z1bmNfZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NhbGxfdmFyYXJncyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF9ldmFsKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3N0cmNhdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fcHJpbWl0aXZlKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXh0X3BuYW1lKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX3Njb3Bl
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3Bfc2NvcGUpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJv
dyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1Zyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJvZmlsZV93aWxsX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVfZGlk
X2NhbGwpOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJM
RShMTElOVCkKKworI2VuZGlmIC8vIExMSW50SGVscGVyc19oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29u
ZmlnLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludE9mZmxpbmVBc21Db25maWdf
aAorI2RlZmluZSBMTEludE9mZmxpbmVBc21Db25maWdfaAorCisjaW5jbHVkZSAiTExJbnRDb21t
b24uaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9JbmxpbmVB
c20uaD4KKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENQVShYODYpCisjZGVmaW5l
IE9GRkxJTkVfQVNNX1g4NiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMAorI2Vu
ZGlmCisKKyNpZiBDUFUoQVJNX1RIVU1CMikKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMQor
I2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMAorI2VuZGlmCisKKyNpZiAhQVNTRVJU
X0RJU0FCTEVECisjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDEKKyNlbHNlCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgQ1BVKEJJ
R19FTkRJQU4pCisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMQorI2Vsc2UKKyNkZWZp
bmUgT0ZGTElORV9BU01fQklHX0VORElBTiAwCisjZW5kaWYKKworI2lmIEVOQUJMRShMTElOVF9P
U1JfVE9fSklUKQorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAxCisjZWxzZQorI2Rl
ZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIExMSU5UX0VYRUNV
VElPTl9UUkFDSU5HCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDEKKyNl
bHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNlbmRpZgorCisj
aWYgTExJTlRfQUxXQVlTX0FMTE9DQVRFX1NMT1cKKyNkZWZpbmUgT0ZGTElORV9BU01fQUxXQVlT
X0FMTE9DQVRFX1NMT1cgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQUxXQVlTX0FMTE9D
QVRFX1NMT1cgMAorI2VuZGlmCisKKyNpZiBDUFUoQVJNX1RIVU1CMikKKyNkZWZpbmUgT0ZGTElO
RV9BU01fR0xPQkFMX0xBQkVMKGxhYmVsKSAgICAgICAgICBcCisgICAgIi5nbG9ibCAiIFNZTUJP
TF9TVFJJTkcobGFiZWwpICJcbiIgICAgICAgICAgXAorICAgIEhJREVfU1lNQk9MKG5hbWUpICJc
biIgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiLnRodW1iXG4iICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJB
TShsYWJlbCkgIlxuIiAgXAorICAgIFNZTUJPTF9TVFJJTkcobGFiZWwpICI6XG4iCisjZWxzZQor
I2RlZmluZSBPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGFiZWwpICAgICAgICAgXAorICAgICIu
Z2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxhYmVsKSAiXG4iICAgICAgICAgXAorICAgIEhJREVfU1lN
Qk9MKG5hbWUpICJcbiIgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFNZTUJPTF9TVFJJTkco
bGFiZWwpICI6XG4iCisjZW5kaWYKKworI2VuZGlmIC8vIExMSW50T2ZmbGluZUFzbUNvbmZpZ19o
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgy
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkV4ZWN1
dGFibGUuaCIKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNp
bmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0Nl
bGwuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgi
CisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2lu
Y2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgor
I2luY2x1ZGUgIkpTVHlwZUluZm8uaCIKKyNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCisj
aW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgi
CisjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKKyNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKKyNp
bmNsdWRlICJTY29wZUNoYWluLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAi
U3RydWN0dXJlQ2hhaW4uaCIKKyNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKyNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdJbXBsLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX09GRlNFVE9GKGNsYXp6LCBmaWVsZCkgT0JKRUNUX09GRlNFVE9GKGNsYXp6LCBmaWVs
ZCkKKworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQqIGR1bW15KCk7Cit9OworCitjb25zdCB1bnNpZ25lZCogTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOjpkdW1teSgpCit7CisvLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkg
b2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRzX2V4dHJhY3Rvci5yYiwgYW5kIGNvbnRhaW5zIGNv
ZGUKKy8vIHRvIGNyZWF0ZSBhIHRhYmxlIG9mIG9mZnNldHMsIHNpemVzLCBhbmQgYSBoZWFkZXIg
aWRlbnRpZnlpbmcgd2hhdCBjb21iaW5hdGlvbiBvZgorLy8gUGxhdGZvcm0uaCBtYWNyb3Mgd2Ug
aGF2ZSBzZXQuIFdlIGluY2x1ZGUgaXQgaW5zaWRlIG9mIGEgbWV0aG9kIG9uIExMSW50T2Zmc2V0
c0V4dHJhY3RvcgorLy8gYmVjYXVzZSB0aGUgZmllbGRzIHdob3NlIG9mZnNldHMgd2UncmUgZXh0
cmFjdGluZyBhcmUgbW9zdGx5IHByaXZhdGUuIFNvIHdlIG1ha2UgdGhlaXIKKy8vIGNsYXNzZXMg
ZnJpZW5kcyB3aXRoIExMSW50T2Zmc2V0c0V4dHJhY3RvciwgYW5kIGluY2x1ZGUgdGhlIGhlYWRl
ciBoZXJlLCB0byBnZXQgdGhlIEMrKworLy8gY29tcGlsZXIgdG8ga2luZGx5IHN0ZXAgYXNpZGUg
YW5kIHlpZWxkIHRvIG91ciBiZXN0IGludGVudGlvbnMuCisjaW5jbHVkZSAiTExJbnREZXNpcmVk
T2Zmc2V0cy5oIgorICAgIHJldHVybiBleHRyYWN0b3JUYWJsZTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCisKK2ludCBtYWluKGludCwgY2hhcioqKQoreworICAgIC8vIE91dCBvZiBhbiBhYnVu
ZGFuY2Ugb2YgY2F1dGlvbiwgbWFrZSBzdXJlIHRoYXQgTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpk
dW1teSgpIGlzIGxpdmUsCisgICAgLy8gYW5kIHRoZSBleHRyYWN0b3JUYWJsZSBpcyBsaXZlLCB0
b28uCisgICAgcHJpbnRmKCIlcFxuIiwgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15
KCkpOworICAgIHJldHVybiAwOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50VGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKwor
I2luY2x1ZGUgIkpTSW50ZXJmYWNlSklULmgiCisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2lu
Y2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBMTEludCB7CisKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dp
dGhKdW1wVG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCB2b2lkICgqdGFyZ2V0KSgpKQorewor
ICAgIEpTSW50ZXJmYWNlSklUIGppdDsKKyAgICAKKyAgICAvLyBGSVhNRTogdGhlcmUncyBwcm9i
YWJseSBhIGJldHRlciB3YXkgdG8gZG8gaXQgb24gWDg2LCBidXQgSSdtIG5vdCBzdXJlIEkgY2Fy
ZS4KKyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nh
c3Q8dm9pZCo+KHRhcmdldCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDApOworICAgIGppdC5qdW1w
KEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZl
cigqZ2xvYmFsRGF0YSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICByZXR1cm4gcGF0Y2hC
dWZmZXIuZmluYWxpemVDb2RlKCk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlv
bkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sK
KyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVu
Y3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwg
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
byhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayk7Cit9CisK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVu
a0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1
bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9ldmFsX3Byb2xvZ3VlKTsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG8oZ2xvYmFsRGF0YSwgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSk7Cit9CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIExMSW50VGh1bmtzX2gKKyNkZWZpbmUgTExJbnRUaHVua3NfaAorCisjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJNYWNy
b0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFs
RGF0YTsKKworbmFtZXNwYWNlIExMSW50IHsKKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0
aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xv
YmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hl
Y2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBm
dW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEq
KTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2Jh
bERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRv
cihKU0dsb2JhbERhdGEqKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludFRodW5rc19oCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50
ZXJwcmV0ZXIuYXNtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzNzggQEAKKyMgQ29weXJpZ2h0
IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBDcmFzaCBjb3Vyc2Ugb24gdGhl
IGxhbmd1YWdlIHRoYXQgdGhpcyBpcyB3cml0dGVuIGluICh3aGljaCBJIGp1c3QgY2FsbAorIyAi
YXNzZW1ibHkiIGV2ZW4gdGhvdWdoIGl0J3MgbW9yZSB0aGFuIHRoYXQpOgorIworIyAtIE1vc3Rs
eSBnYXMtc3R5bGUgb3BlcmFuZCBvcmRlcmluZy4gVGhlIGxhc3Qgb3BlcmFuZCB0ZW5kcyB0byBi
ZSB0aGUKKyMgICBkZXN0aW5hdGlvbi4gU28gImEgOj0gYiIgaXMgd3JpdHRlbiBhcyAibW92IGIs
IGEiLiBCdXQgdW5saWtlIGdhcywKKyMgICBjb21wYXJpc29ucyBhcmUgaW4tb3JkZXIsIHNvICJp
ZiAoYSA8IGIpIiBpcyB3cml0dGVuIGFzCisjICAgImJpbHQgYSwgYiwgLi4uIi4KKyMKKyMgLSAi
YiIgPSBieXRlLCAiaCIgPSAxNi1iaXQgd29yZCwgImkiID0gMzItYml0IHdvcmQsICJwIiA9IHBv
aW50ZXIuCisjICAgQ3VycmVudGx5IHRoaXMgaXMganVzdCAzMi1iaXQgc28gImkiIGFuZCAicCIg
YXJlIGludGVyY2hhbmdlYWJsZQorIyAgIGV4Y2VwdCB3aGVuIGFuIG9wIHN1cHBvcnRzIG9uZSBi
dXQgbm90IHRoZSBvdGhlci4KKyMKKyMgLSBJbiBnZW5lcmFsLCB2YWxpZCBvcGVyYW5kcyBmb3Ig
bWFjcm8gaW52b2NhdGlvbnMgYW5kIGluc3RydWN0aW9ucyBhcmUKKyMgICByZWdpc3RlcnMgKGVn
ICJ0MCIpLCBhZGRyZXNzZXMgKGVnICI0W3QwXSIpLCBiYXNlLWluZGV4IGFkZHJlc3NlcworIyAg
IChlZyAiN1t0MCwgdDEsIDJdIiksIGFic29sdXRlIGFkZHJlc3NlcyAoZWcgIjB4YTAwMDAwMDBb
XSIpLCBvciBsYWJlbHMKKyMgICAoZWcgIl9mb28iIG9yICIuZm9vIikuIE1hY3JvIGludm9jYXRp
b25zIGNhbiBhbHNvIHRha2UgYW5vbnltb3VzCisjICAgbWFjcm9zIGFzIG9wZXJhbmRzLiBJbnN0
cnVjdGlvbnMgY2Fubm90IHRha2UgYW5vbnltb3VzIG1hY3Jvcy4KKyMKKyMgLSBMYWJlbHMgbXVz
dCBoYXZlIG5hbWVzIHRoYXQgYmVnaW4gd2l0aCBlaXRoZXIgIl8iIG9yICIuIi4gIEEgIi4iIGxh
YmVsCisjICAgaXMgbG9jYWwgYW5kIGdldHMgcmVuYW1lZCBiZWZvcmUgY29kZSBnZW4gdG8gbWlu
aW1pemUgbmFtZXNwYWNlCisjICAgcG9sbHV0aW9uLiBBICJfIiBsYWJlbCBpcyBhbiBleHRlcm4g
c3ltYm9sIChpLmUuICIuZ2xvYmwiKS4gVGhlICJfIgorIyAgIG1heSBvciBtYXkgbm90IGJlIHJl
bW92ZWQgZHVyaW5nIGNvZGUgZ2VuIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBhc20KKyMgICBj
b252ZW50aW9ucyBmb3IgQyBuYW1lIG1hbmdsaW5nIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0gbWFu
ZGF0ZSBhICJfIgorIyAgIHByZWZpeC4KKyMKKyMgLSBBICJtYWNybyIgaXMgYSBsYW1iZGEgZXhw
cmVzc2lvbiwgd2hpY2ggbWF5IGJlIGVpdGhlciBhbm9ueW1vdXMgb3IKKyMgICBuYW1lZC4gQnV0
IHRoaXMgaGFzIGNhdmVhdHMuICJtYWNybyIgY2FuIHRha2UgemVybyBvciBtb3JlIGFyZ3VtZW50
cywKKyMgICB3aGljaCBtYXkgYmUgbWFjcm9zIG9yIGFueSB2YWxpZCBvcGVyYW5kcywgYnV0IGl0
IGNhbiBvbmx5IHJldHVybgorIyAgIGNvZGUuIEJ1dCB5b3UgY2FuIGRvIFR1cmluZy1jb21wbGV0
ZSB0aGluZ3MgdmlhIGNvbnRpbnVhdGlvbiBwYXNzaW5nCisjICAgc3R5bGU6ICJtYWNybyBmb28g
KGEsIGIpIGIoYSkgZW5kIGZvbyhmb28sIGZvbykiLiBBY3R1YWxseSwgZG9uJ3QgZG8KKyMgICB0
aGF0LCBzaW5jZSB5b3UnbGwganVzdCBjcmFzaCB0aGUgYXNzZW1ibGVyLgorIworIyAtIEFuICJp
ZiIgaXMgYSBjb25kaXRpb25hbCBvbiBzZXR0aW5ncy4gQW55IGlkZW50aWZpZXIgc3VwcGxpZWQg
aW4gdGhlCisjICAgcHJlZGljYXRlIG9mIGFuICJpZiIgaXMgYXNzdW1lZCB0byBiZSBhICNkZWZp
bmUgdGhhdCBpcyBhdmFpbGFibGUKKyMgICBkdXJpbmcgY29kZSBnZW4uIFNvIHlvdSBjYW4ndCB1
c2UgImlmIiBmb3IgY29tcHV0YXRpb24gaW4gYSBtYWNybywgYnV0CisjICAgeW91IGNhbiB1c2Ug
aXQgdG8gc2VsZWN0IGRpZmZlcmVudCBwaWVjZXMgb2YgY29kZSBmb3IgZGlmZmVyZW50CisjICAg
cGxhdGZvcm1zLgorIworIyAtIEFyZ3VtZW50cyB0byBtYWNyb3MgZm9sbG93IGxleGljYWwgc2Nv
cGluZyByYXRoZXIgdGhhbiBkeW5hbWljIHNjb3BpbmcuCisjICAgQ29uc3QncyBhbHNvIGZvbGxv
dyBsZXhpY2FsIHNjb3BpbmcgYW5kIG1heSBvdmVycmlkZSAoaGlkZSkgYXJndW1lbnRzCisjICAg
b3Igb3RoZXIgY29uc3RzLiBBbGwgdmFyaWFibGVzIChhcmd1bWVudHMgYW5kIGNvbnN0YW50cykg
Y2FuIGJlIGJvdW5kCisjICAgdG8gb3BlcmFuZHMuIEFkZGl0aW9uYWxseSwgYXJndW1lbnRzIChi
dXQgbm90IGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gbWFjcm9zLgorCisKKyMgVGhl
c2UgZGVjbGFyYXRpb25zIG11c3QgbWF0Y2ggaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmguCitj
b25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gNDgKK2NvbnN0IEFyZ3VtZW50Q291bnQgPSAtNDgK
K2NvbnN0IENhbGxlckZyYW1lID0gLTQwCitjb25zdCBDYWxsZWUgPSAtMzIKK2NvbnN0IFNjb3Bl
Q2hhaW4gPSAtMjQKK2NvbnN0IFJldHVyblBDID0gLTE2Citjb25zdCBDb2RlQmxvY2sgPSAtOAor
Citjb25zdCBUaGlzQXJndW1lbnRPZmZzZXQgPSAtQ2FsbEZyYW1lSGVhZGVyU2l6ZSAtIDgKKwor
IyBEZWNsYXJlIHNvbWUgYWxpYXNlcyBmb3IgdGhlIHJlZ2lzdGVycyB3ZSB3aWxsIHVzZS4KK2Nv
bnN0IFBDID0gdDQKKworIyBPZmZzZXRzIG5lZWRlZCBmb3IgcmVhc29uaW5nIGFib3V0IHZhbHVl
IHJlcHJlc2VudGF0aW9uLgoraWYgQklHX0VORElBTgorICAgIGNvbnN0IFRhZ09mZnNldCA9IDAK
KyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gNAorZWxzZQorICAgIGNvbnN0IFRhZ09mZnNldCA9
IDQKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gMAorZW5kCisKKyMgVmFsdWUgcmVwcmVzZW50
YXRpb24gY29uc3RhbnRzLgorY29uc3QgSW50MzJUYWcgPSAtMQorY29uc3QgQm9vbGVhblRhZyA9
IC0yCitjb25zdCBOdWxsVGFnID0gLTMKK2NvbnN0IFVuZGVmaW5lZFRhZyA9IC00Citjb25zdCBD
ZWxsVGFnID0gLTUKK2NvbnN0IEVtcHR5VmFsdWVUYWcgPSAtNgorY29uc3QgRGVsZXRlZFZhbHVl
VGFnID0gLTcKK2NvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRhZworCisjIFR5cGUgY29u
c3RhbnRzLgorY29uc3QgU3RyaW5nVHlwZSA9IDUKK2NvbnN0IE9iamVjdFR5cGUgPSAxMAorCisj
IFR5cGUgZmxhZ3MgY29uc3RhbnRzLgorY29uc3QgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDEK
K2NvbnN0IEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDIKK2NvbnN0IEltcGxlbWVudHNEZWZhdWx0
SGFzSW5zdGFuY2UgPSA4CisKKyMgSGVhcCBhbGxvY2F0aW9uIGNvbnN0YW50cy4KK2NvbnN0IEpT
RmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9IDMKKworIyBCeXRlY29kZSBvcGVyYW5kIGNvbnN0
YW50cy4KK2NvbnN0IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMAorCisj
IENvZGUgdHlwZSBjb25zdGFudHMuCitjb25zdCBHbG9iYWxDb2RlID0gMAorY29uc3QgRXZhbENv
ZGUgPSAxCitjb25zdCBGdW5jdGlvbkNvZGUgPSAyCisKKyMgVGhlIGludGVycHJldGVyIHN0ZWFs
cyB0aGUgdGFnIHdvcmQgb2YgdGhlIGFyZ3VtZW50IGNvdW50LgorY29uc3QgTExJbnRSZXR1cm5Q
QyA9IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQKKworIyBUaGlzIG11c3QgbWF0Y2ggd3RmL1Zl
Y3Rvci5oLgorY29uc3QgVmVjdG9yU2l6ZU9mZnNldCA9IDAKK2NvbnN0IFZlY3RvckJ1ZmZlck9m
ZnNldCA9IDQKKworIyBTdHJpbmcgZmxhZ3MuCitjb25zdCBIYXNoRmxhZ3M4Qml0QnVmZmVyID0g
NjQKKworIyBVdGlsaXRpZXMKK21hY3JvIGNyYXNoKCkKKyAgICBzdG9yZWkgMCwgMHhiYmFkYmVl
ZltdCisgICAgbW92ZSAwLCB0MAorICAgIGNhbGwgdDAKK2VuZAorCittYWNybyBhc3NlcnQoYXNz
ZXJ0aW9uKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGFzc2VydGlvbigub2spCisg
ICAgICAgIGNyYXNoKCkKKyAgICAub2s6CisgICAgZW5kCitlbmQKKworbWFjcm8gcHJlc2VydmVS
ZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIpCisgICAgaWYgQVJNdjcK
KyAgICAgICAgbW92ZSBsciwgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2lmIFg4NgorICAg
ICAgICBwb3AgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAg
ICBlbmQKK2VuZAorCittYWNybyByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybihzb3Vy
Y2VSZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lzdGVyLCBs
cgorICAgIGVsc2lmIFg4NgorICAgICAgICBwdXNoIHNvdXJjZVJlZ2lzdGVyCisgICAgZWxzZQor
ICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIGRpc3BhdGNoKGFkdmFuY2UpCisg
ICAgYWRkcCBhZHZhbmNlICogNCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3Bh
dGNoQnJhbmNoV2l0aE9mZnNldChwY09mZnNldCkKKyAgICBsc2hpZnRpIDIsIHBjT2Zmc2V0Cisg
ICAgYWRkcCBwY09mZnNldCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRpc3BhdGNo
QnJhbmNoKHBjT2Zmc2V0KQorICAgIGxvYWRpIHBjT2Zmc2V0LCB0MAorICAgIGRpc3BhdGNoQnJh
bmNoV2l0aE9mZnNldCh0MCkKK2VuZAorCittYWNybyBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAg
bG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgIGptcCBbUENdCitl
bmQKKworbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQorICAgIGlmIEFSTXY3Cisg
ICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgIGVsc2lmIFg4
NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisgICAgZWxzZQor
ICAgICAgICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCisjIFRoaXMg
YmFyZWx5IHdvcmtzLiBhcmczIGFuZCBhcmc0IHNob3VsZCBwcm9iYWJseSBiZSBpbW1lZGlhdGVz
LgorbWFjcm8gY0NhbGw0KGZ1bmN0aW9uLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KQorICAgIGlm
IEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAg
ICAgICBtb3ZlIGFyZzMsIHQyCisgICAgICAgIG1vdmUgYXJnNCwgdDMKKyAgICBlbHNpZiBYODYK
KyAgICAgICAgcG9rZSBhcmcxLCAwCisgICAgICAgIHBva2UgYXJnMiwgMQorICAgICAgICBwb2tl
IGFyZzMsIDIKKyAgICAgICAgcG9rZSBhcmc0LCAzCisgICAgZWxzZQorICAgICAgICBlcnJvcgor
ICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCittYWNybyBjYWxsSGVscGVyKGhlbHBl
cikKKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92
ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8g
cHJpbnQgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtLiBmcm9tV2hlcmUKKyMg
c2hvdWxkIGJlIGFuIGltbWVkaWF0ZSBpbnRlZ2VyIC0gYW55IGludGVnZXIgeW91IGxpa2U7IHVz
ZSBpdCB0byBpZGVudGlmeSB0aGUgcGxhY2UgeW91J3JlCisjIGRlYnVnZ2luZyBmcm9tLiBvcGVy
YW5kIHNob3VsZCBsaWtld2lzZSBiZSBhbiBpbW1lZGlhdGUsIGFuZCBzaG91bGQgaWRlbnRpZnkg
dGhlIG9wZXJhbmQKKyMgaW4gdGhlIGluc3RydWN0aW9uIHN0cmVhbSB5b3UnZCBsaWtlIHRvIHBy
aW50IG91dC4KK21hY3JvIHRyYWNlT3BlcmFuZChmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgY0Nh
bGw0KF9sbGludF90cmFjZV9vcGVyYW5kLCBjZnIsIFBDLCBmcm9tV2hlcmUsIG9wZXJhbmQpCisg
ICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVnZ2luZyBvcGVy
YXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCB0aGUgdmFsdWUgb2YgYW4gb3BlcmFuZCBpbiB0
aGUgaW5zdHJ1Y3Rpb24KKyMgc3RyZWFtLiBTYW1lIGFzIHRyYWNlT3BlcmFuZCgpLCBidXQgYXNz
dW1lcyB0aGF0IHRoZSBvcGVyYW5kIGlzIGEgcmVnaXN0ZXIsIGFuZCBwcmludHMgaXRzCisjIHZh
bHVlLgorbWFjcm8gdHJhY2VWYWx1ZShmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgY0NhbGw0KF9s
bGludF90cmFjZV92YWx1ZSwgY2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUg
dDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworbWFjcm8gdHJhY2VFeGVjdXRpb24oKQor
ICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3RyYWNl
KQorICAgIGVuZAorZW5kCisKKyMgQ2FsbCBhIGhlbHBlciBmb3IgY2FsbCBvcGNvZGVzLgorbWFj
cm8gY2FsbENhbGxIZWxwZXIoYWR2YW5jZSwgaGVscGVyLCBhY3Rpb24pCisgICAgYWRkcCBhZHZh
bmNlICogNCwgUEMsIHQwCisgICAgc3RvcmVwIHQwLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0
W2Nmcl0KKyAgICBjQ2FsbDIoaGVscGVyLCBjZnIsIFBDKQorICAgIG1vdmUgdDEsIGNmcgorICAg
IGFjdGlvbih0MCkKK2VuZAorCittYWNybyBzbG93UGF0aEZvckNhbGwoYWR2YW5jZSwgaGVscGVy
KQorICAgIGNhbGxDYWxsSGVscGVyKAorICAgICAgICBhZHZhbmNlLAorICAgICAgICBoZWxwZXIs
CisgICAgICAgIG1hY3JvIChjYWxsZWUpCisgICAgICAgICAgICBjYWxsIGNhbGxlZQorICAgICAg
ICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hl
Y2tTd2l0Y2hUb0pJVChpbmNyZW1lbnQsIGFjdGlvbikKKyAgICBpZiBKSVRfRU5BQkxFRAorICAg
ICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICAgICAgYmFkZGlzIGluY3JlbWVudCwg
Q29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJbdDBdLCAuY29udGludWUKKyAgICAgICAg
YWN0aW9uKCkKKyAgICAuY29udGludWU6CisgICAgZW5kCitlbmQKKworbWFjcm8gY2hlY2tTd2l0
Y2hUb0pJVEZvckxvb3AoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAgIDEsCisgICAg
ICAgIG1hY3JvICgpCisgICAgICAgICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdP
ZmZzZXRbY2ZyXQorICAgICAgICAgICAgY0NhbGwyKF9sbGludF9sb29wX29zciwgY2ZyLCBQQykK
KyAgICAgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAgICAgICAgYnRweiB0MCwgLnJlY292ZXIK
KyAgICAgICAgICAgIGptcCB0MAorICAgICAgICAucmVjb3ZlcjoKKyAgICAgICAgICAgIGxvYWRp
IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICAgICAgZW5kKQorZW5kCisK
K21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgY2hlY2tTd2l0Y2hUb0pJ
VCgKKyAgICAgICAgMTAsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBjYWxsSGVscGVy
KF9sbGludF9yZXBsYWNlKQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gYXNzZXJ0Tm90Q29u
c3RhbnQoaW5kZXgpCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlsdCBpbmRleCwgRmlyc3RDb25z
dGFudFJlZ2lzdGVySW5kZXgsIG9rIGVuZCkKK2VuZAorCisjIEluZGV4LCB0YWcsIGFuZCBwYXls
b2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90CisjIGNoYW5nZWQu
CittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAg
YmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAg
bG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6Cisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
Y29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQK
KyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5z
IGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVl
IDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCkgPDwgMy4KKyAgICBsb2FkcCBUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCB0YWcKKyAg
ICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6
CitlbmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBtYXkgYmUgdGhlIHNhbWUgcmVnaXN0ZXIuIElu
ZGV4IG1heSBiZSBjbG9iYmVyZWQuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhp
bmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwg
dGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAg
IGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YWcKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZz
ZXRbdGFnXSwgdGFnCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBp
bmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAg
ICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbHNoaWZ0aSAzLCBpbmRleAorICAgIGFkZHAgaW5k
ZXgsIHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdGFnXSwgcGF5bG9hZAorICAgIGxvYWRw
IFRhZ09mZnNldFt0YWddLCB0YWcKKy5kb25lOgorZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKGluZGV4LCB0YWdDaGVjaywgcGF5bG9hZCkKKyAgICBi
aWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICB0
YWdDaGVjayhUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0pCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2Nv
bnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisg
ICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBh
IHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8
PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgp
IDw8IDMuCisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSkKKyAgICBs
b2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6Citl
bmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIElu
ZGV4IGlzIG5vdCBtdXRhdGVkLiBVc2UKKyMgdGhpcyBpZiB5b3Uga25vdyB3aGF0IHRoZSB0YWcg
b2YgdGhlIHZhcmlhYmxlIHNob3VsZCBiZS4gRG9pbmcgdGhlIHRhZworIyB0ZXN0IGFzIHBhcnQg
b2YgbG9hZGluZyB0aGUgdmFyaWFibGUgcmVkdWNlcyByZWdpc3RlciB1c2UsIGJ1dCBtYXkgbm90
CisjIGJlIGZhc3RlciB0aGFuIGRvaW5nIGxvYWRDb25zdGFudE9yVmFyaWFibGUgZm9sbG93ZWQg
YnkgYSBicmFuY2ggb24gdGhlCisjIHRhZy4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKGluZGV4LCBleHBlY3RlZFRhZywgcGF5bG9hZCwgc2xvdykKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgKKyAgICAgICAgaW5kZXgsCisgICAgICAgIG1h
Y3JvIChhY3R1YWxUYWcpIGJpbmVxIGFjdHVhbFRhZywgZXhwZWN0ZWRUYWcsIHNsb3cgZW5kLAor
ICAgICAgICBwYXlsb2FkKQorZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkVW5jaGVja2VkKGluZGV4LCBwYXlsb2FkKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkVGFnQ3VzdG9tKAorICAgICAgICBpbmRleCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRh
ZykgZW5kLAorICAgICAgICBwYXlsb2FkKQorZW5kCisKK21hY3JvIHdyaXRlQmFycmllcih0YWcs
IHBheWxvYWQpCisgICAgIyBOb3RoaW5nIHRvIGRvLCBzaW5jZSB3ZSBkb24ndCBoYXZlIGEgZ2Vu
ZXJhdGlvbmFsIG9yIGluY3JlbWVudGFsIGNvbGxlY3Rvci4KK2VuZAorCittYWNybyB2YWx1ZVBy
b2ZpbGUodGFnLCBwYXlsb2FkLCBwcm9maWxlKQorICAgIHN0b3JlaSB0YWcsIFZhbHVlUHJvZmls
ZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3Byb2ZpbGVdCisgICAgc3RvcmVpIHBheWxvYWQsIFZh
bHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFtwcm9maWxlXQorZW5kCisKKwor
IyBJbmRpY2F0ZSB0aGUgYmVnaW5uaW5nIG9mIExMSW50LgorX2xsaW50X2JlZ2luOgorICAgIGNy
YXNoKCkKKworCisjIEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVycHJldGVyCisKK21hY3JvIGZ1
bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBD
YWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1
dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVn
aXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0
YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAg
ICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRS
ZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25z
dHJ1Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIG5vdEZ1
bmN0aW9uQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0
dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgIHN0b3JlcCBzb3VyY2VSZWdpc3RlciwgQ29kZUJsb2Nr
W2Nmcl0KK2VuZAorCittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdp
c3RlcikKKyAgICAjIE5vdGhpbmcgdG8gZG8hCitlbmQKKworIyBEbyB0aGUgYmFyZSBtaW5pbXVt
IHJlcXVpcmVkIHRvIGV4ZWN1dGUgY29kZS4gU2V0cyB1cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2Rl
QmxvY2sqCisjIGluIHQxLiBNYXkgYWxzbyB0cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KK21h
Y3JvIHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JIZWxwZXIs
IHRyYWNlSGVscGVyKQorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAg
ICAKKyAgICAjIFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sgaWYgd2Ugc2hvdWxkIE9T
Ui4KKyAgICBzdG9yZXAgdDIsIFJldHVyblBDW2Nmcl0KKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lO
RworICAgICAgICBjYWxsSGVscGVyKHRyYWNlSGVscGVyKQorICAgIGVuZAorICAgIGNvZGVCbG9j
a0dldHRlcih0MSkKKyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBiYWRkaXMgNSwgQ29kZUJs
b2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJbdDFdLCAuY29udGludWUKKyAgICAgICAgY0NhbGwy
KG9zckhlbHBlciwgY2ZyLCBQQykKKyAgICAgICAgbW92ZSB0MSwgY2ZyCisgICAgICAgIGJ0cHog
dDAsIC5yZWNvdmVyCisgICAgICAgIGxvYWRwIFJldHVyblBDW2Nmcl0sIHQyCisgICAgICAgIHJl
c3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAgICAgICBqbXAgdDAKKyAgICAu
cmVjb3ZlcjoKKyAgICAgICAgY29kZUJsb2NrR2V0dGVyKHQxKQorICAgIC5jb250aW51ZToKKyAg
ICBlbmQKKyAgICBjb2RlQmxvY2tTZXR0ZXIodDEpCisgICAgCisgICAgIyBTZXQgdXAgdGhlIFBD
LgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRw
IENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9m
ZnNldFt0MF0sIFBDCitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3
aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KKyMgTXVzdCBjYWxsIGRpc3Bh
dGNoKDApIGFmdGVyIGNhbGxpbmcgdGhpcy4KK21hY3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24o
cHJvZmlsZUFyZ1NraXApCisgICAgIyBQcm9maWxlIHRoZSBhcmd1bWVudHMuIFVuZm9ydHVuYXRl
bHksIHdlIGhhdmUgbm8gY2hvaWNlIGJ1dCB0byBkbyB0aGlzLiBUaGlzCisgICAgIyBjb2RlIGlz
IHByZXR0eSBob3JyZW5kb3VzIGJlY2F1c2Ugb2YgdGhlIGRpZmZlcmVuY2UgaW4gb3JkZXJpbmcg
YmV0d2VlbgorICAgICMgYXJndW1lbnRzIGFuZCB2YWx1ZSBwcm9maWxlcywgdGhlIGRlc2lyZSB0
byBoYXZlIGEgc2ltcGxlIGxvb3AtZG93bi10by16ZXJvCisgICAgIyBsb29wLCBhbmQgdGhlIGRl
c2lyZSB0byB1c2Ugb25seSB0aHJlZSByZWdpc3RlcnMgc28gYXMgdG8gcHJlc2VydmUgdGhlIFBD
IGFuZAorICAgICMgdGhlIGNvZGUgYmxvY2suIEl0IGlzIGxpa2VseSB0aGF0IHRoaXMgY29kZSBz
aG91bGQgYmUgcmV3cml0dGVuIGluIGEgbW9yZQorICAgICMgb3B0aW1hbCB3YXkgZm9yIGFyY2hp
dGVjdHVyZXMgdGhhdCBoYXZlIG1vcmUgdGhhbiBmaXZlIHJlZ2lzdGVycyBhdmFpbGFibGUKKyAg
ICAjIGZvciBhcmJpdHJhcnkgdXNlIGluIHRoZSBpbnRlcnByZXRlci4KKyAgICBsb2FkaSBDb2Rl
QmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIHQwCisgICAgYWRkaSAtcHJvZmlsZUFyZ1NraXAs
IHQwICMgVXNlIGFkZGkgYmVjYXVzZSB0aGF0J3Mgd2hhdCBoYXMgdGhlIHBlZXBob2xlCisgICAg
YXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHQwLCAwLCBvayBlbmQpCisgICAgYnRpeiB0MCwgLmFy
Z3VtZW50UHJvZmlsZURvbmUKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fYXJndW1lbnRWYWx1ZVBy
b2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QxXSwgdDMKKyAgICBtdWxpIHNpemVvZiBWYWx1
ZVByb2ZpbGUsIHQwLCB0MiAjIEFhYWFhaGhoaCEgTmVlZCBzdHJlbmd0aCByZWR1Y3Rpb24hCisg
ICAgbmVnaSB0MAorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQyLCB0MworLmFyZ3VtZW50
UHJvZmlsZUxvb3A6CisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0ICsg
OCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIKKyAgICBzdWJwIHNpemVvZiBWYWx1
ZVByb2ZpbGUsIHQzCisgICAgc3RvcmVpIHQyLCBwcm9maWxlQXJnU2tpcCAqIHNpemVvZiBWYWx1
ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNldFt0M10KKyAgICBs
b2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdT
a2lwICogOFtjZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIsIHByb2ZpbGVBcmdTa2lwICogc2l6
ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNl
dFt0M10KKyAgICBiYWRkaW56IDgsIHQwLCAuYXJndW1lbnRQcm9maWxlTG9vcAorLmFyZ3VtZW50
UHJvZmlsZURvbmU6CisgICAgCisgICAgIyBDaGVjayBzdGFjayBoZWlnaHQuCisgICAgbG9hZGkg
Q29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lzdGVyc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MgorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6aW50ZXJw
cmV0ZXJbdDJdLCB0MiAgICMgRklYTUU6IENhbiBnZXQgdG8gdGhlIFJlZ2lzdGVyRmlsZSBmcm9t
IHRoZSBKSVRTdGFja0ZyYW1lCisgICAgbHNoaWZ0aSAzLCB0MAorICAgIGFkZHAgdDAsIGNmciwg
dDAKKyAgICBicGFlcSBJbnRlcnByZXRlcjo6bV9yZWdpc3RlckZpbGUgKyBSZWdpc3RlckZpbGU6
Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCisKKyAgICAjIFN0YWNrIGhlaWdodCBjaGVj
ayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBoZWxwZXIuCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
cmVnaXN0ZXJfZmlsZV9jaGVjaykKKy5zdGFja0hlaWdodE9LOgorZW5kCisKKyMgRXhwZWN0cyB0
aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBi
ZWhpbmQuCittYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBoZWxwZXIpCisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwgdDAKKyAgICBiaWFlcSB0
MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFiZWwKKyAgICBjQ2FsbDIo
aGVscGVyLCBjZnIsIFBDKSAgICMgVGhpcyBoZWxwZXIgaGFzIGEgc2ltcGxlIHByb3RvY29sOiB0
MCA9IDAgPT4gbm8gZXJyb3IsIHQwICE9IDAgPT4gZXJyb3IKKyAgICBtb3ZlIHQxLCBjZnIKKyAg
ICBidGl6IHQwLCAuY29udGludWUKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRh
W3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwg
dDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKy5j
b250aW51ZToKKyAgICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5kIFBDLCBzaW5jZSB0aGUgaGVscGVy
IGNsb2JiZXJlZCBpdC4KKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkcCBD
b2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Oklu
c3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBdLCBQQwor
ICAgIGptcCBkb25lTGFiZWwKK2VuZAorCitfbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZToKKyAgICBw
cm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tT
ZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNw
YXRjaCgwKQorCisKK19sbGludF9ldmFsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0
aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2Vu
dHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9y
Q2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9m
b3JfY2FsbCkKKy5mdW5jdGlvbkZvckNhbGxCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0
aW9uKDApCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25z
dHJ1Y3RfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxv
Y2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGludF90cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29u
c3RydWN0KQorLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFs
aXphdGlvbigxKQorICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3Jf
Y2FsbF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2RlQmxvY2tH
ZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQor
ICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDYWxsQmVnaW4sIF9sbGludF9oZWxw
ZXJfY2FsbF9hcml0eUNoZWNrKQorCisKK19sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0
dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGludF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25z
dHJ1Y3QpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2lu
LCBfbGxpbnRfaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQorCisjIEluc3RydWN0aW9uIGlt
cGxlbWVudGF0aW9ucworCitfbGxpbnRfb3BfZW50ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1W
YXJzW3QyXSwgdDIKKyAgICBidGl6IHQyLCAub3BFbnRlckRvbmUKKyAgICBtb3ZlIFVuZGVmaW5l
ZFRhZywgdDAKKyAgICBtb3ZlIDAsIHQxCisub3BFbnRlckxvb3A6CisgICAgc3ViaSAxLCB0Mgor
ICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgYnRpbnogdDIsIC5vcEVudGVyTG9vcAorLm9wRW50
ZXJEb25lOgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX2NyZWF0ZV9hY3RpdmF0aW9u
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFjdGl2YXRpb25E
b25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQorLm9w
Q3JlYXRlQWN0aXZhdGlvbkRvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfaW5p
dF9sYXp5X3JlZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3Jl
aSAwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxp
bnRfb3BfY3JlYXRlX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFn
LCAub3BDcmVhdGVBcmd1bWVudHNEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2Ny
ZWF0ZV9hcmd1bWVudHMpCisub3BDcmVhdGVBcmd1bWVudHNEb25lOgorICAgIGRpc3BhdGNoKDIp
CisKKworbWFjcm8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNpemVDbGFzc0luZGV4LCBjbGFzc0lu
Zm9PZmZzZXQsIHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNsb3dDYXNl
KQorICAgIGlmIEFMV0FZU19BTExPQ0FURV9TTE9XCisgICAgICAgIGptcCBzbG93Q2FzZQorICAg
IGVsc2UKKyAgICAgICAgY29uc3Qgb2Zmc2V0T2ZNeVNpemVDbGFzcyA9IEpTR2xvYmFsRGF0YTo6
aGVhcCArIEhlYXA6Om1fb2JqZWN0U3BhY2UgKyBNYXJrZWRTcGFjZTo6bV9wcmVjaXNlU2l6ZUNs
YXNzZXMgKyBzaXplQ2xhc3NJbmRleCAqIHNpemVvZiBNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzCisg
ICAgICAgIAorICAgICAgICAjIEZJWE1FOiB3ZSBjYW4gZ2V0IHRoZSBnbG9iYWwgZGF0YSBpbiBv
bmUgbG9hZCBmcm9tIHRoZSBzdGFjay4KKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNj
cmF0Y2gxCisgICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwg
c2NyYXRjaDEKKyAgICAgICAgCisgICAgICAgICMgR2V0IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJl
ZSBsaXN0LiAgICAKKyAgICAgICAgbG9hZHAgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNw
YWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdLCByZXN1bHQKKyAgICAgICAg
YnRweiByZXN1bHQsIHNsb3dDYXNlCisgICAgICAgIAorICAgICAgICAjIFJlbW92ZSB0aGUgb2Jq
ZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAgICAgICAgbG9hZHAgW3Jlc3VsdF0sIHNjcmF0Y2gy
CisgICAgICAgIHN0b3JlcCBzY3JhdGNoMiwgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZFNw
YWNlOjpTaXplQ2xhc3M6OmZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdCisgICAgCisgICAgICAgICMg
SW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgorICAgICAgICBsb2FkcCBjbGFzc0luZm9PZmZzZXRbc2Ny
YXRjaDFdLCBzY3JhdGNoMgorICAgICAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCisgICAg
ICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQorICAgICAg
ICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0XQorICAgICAgICBhZGRw
IHNpemVvZiBKU09iamVjdCwgcmVzdWx0LCBzY3JhdGNoMQorICAgICAgICBzdG9yZXAgc2NyYXRj
aDEsIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVtyZXN1bHRdCisgICAgZW5kCitlbmQKKwor
X2xsaW50X29wX2NyZWF0ZV90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDEKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0
MV0sIE9iamVjdFR5cGUsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1f
aW5oZXJpdG9ySURbdDBdLCB0MgorICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAg
YWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9i
YWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRl
VGhpc1Nsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4
XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcENyZWF0ZVRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9jcmVhdGVfdGhpcykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9nZXRfY2FsbGVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0ICsgQ2FsbGVlW2Nmcl0sIHQxCisgICAgc3RvcmVpIENl
bGxUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NvbnZlcnRfdGhp
czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5m
bzo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNTbG93CisgICAgZGlzcGF0
Y2goMikKKworLm9wQ29udmVydFRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9jb252ZXJ0X3RoaXMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X29iamVj
dDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNH
bG9iYWxPYmplY3Q6Om1fZW1wdHlPYmplY3RTdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGFsbG9jYXRl
QmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0YTo6
anNGaW5hbE9iamVjdENsYXNzSW5mbywgdDEsIHQwLCB0MiwgdDMsIC5vcE5ld09iamVjdFNsb3cp
CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIs
IHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRp
c3BhdGNoKDIpCisKKy5vcE5ld09iamVjdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX25ld19vYmplY3QpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X2FycmF5
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3
X2FycmF5KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19hcnJheV9idWZmZXI6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdf
YXJyYXlfYnVmZmVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19yZWdleHA6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdf
cmVnZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX21vdjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bfbm90OgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5v
cE5vdFNsb3cKKyAgICB4b3JpIDEsIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNw
YXRjaCgzKQorCisub3BOb3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ub3Qp
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZXE6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcEVxU2xvdworICAgIGJpZXEgdDIs
IENlbGxUYWcsIC5vcEVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cKKyAg
ICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaWVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVh
blRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wRXFTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9lcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9lcV9u
dWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
aSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisg
ICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0ZQorLm9wRXFOdWxsSW1tZWRpYXRlOgorICAgIGNp
ZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2llcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIG9y
aSB0MiwgdDEKKy5vcEVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywg
VGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVxOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93CisgICAg
YmllcSB0MiwgQ2VsbFRhZywgLm9wTmVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BO
ZXFTbG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2luZXEgdDAsIHQxLCB0MAorICAgIHN0
b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BOZXFTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXEpCisgICAgZGlzcGF0Y2goNCkKKyAgICAK
KworX2xsaW50X29wX25lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkK
KyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbElt
bWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRieiBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVz
QXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKKy5vcE5lcU51
bGxJbW1lZGlhdGU6CisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2luZXEgdDEsIFVu
ZGVmaW5lZFRhZywgdDEKKyAgICBhbmRpIHQyLCB0MQorLm9wTmVxTnVsbE5vdEltbWVkaWF0ZToK
KyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVp
IHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCittYWNy
byBzdHJpY3RFcShlcXVhbGl0eU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BDXSwg
dDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBi
aW5lcSB0MiwgdDMsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmlu
ZXEgdDIsIENlbGxUYWcsIC5ub3RTdHJpbmcKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKKyAgICBiYm5l
cSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlw
ZSwgLm5vdFN0cmluZworICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93Cisubm90U3RyaW5nOgorICAgIGxvYWRpIDRb
UENdLCB0MgorICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDApCisgICAgc3RvcmVpIEJv
b2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxIZWxw
ZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50X29wX3N0cmljdGVxOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJl
c3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9zdHJpY3Rl
cSkKKworCitfbGxpbnRfb3BfbnN0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBz
dHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwgcmlnaHQsIHJl
c3VsdCBlbmQsIF9sbGludF9oZWxwZXJfbnN0cmljdGVxKQorCisKK19sbGludF9vcF9sZXNzOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVzcykK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzZXEpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2dyZWF0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfZ3JlYXRlcmVxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3By
ZV9pbmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZUluY1Nsb3cKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJhZGRpbyAxLCB0MSwgLm9w
UHJlSW5jU2xvdworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAg
IGRpc3BhdGNoKDIpCisKKy5vcFByZUluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3ByZV9pbmMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJlX2RlYzoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdworICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNTbG93
CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2go
MikKKworLm9wUHJlRGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2Rl
YykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3N0X2luYzoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAg
YmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdEluY1Nsb3cKKyAg
ICBiaWVxIHQwLCB0MSwgLm9wUG9zdEluY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYmFkZGlvIDEsIHQzLCAub3BQb3N0
SW5jU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0SW5jRG9uZToKKyAgICBkaXNwYXRjaCgzKQor
Cisub3BQb3N0SW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9pbmMp
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcG9zdF9kZWM6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3REZWNTbG93CisgICAg
YmllcSB0MCwgdDEsIC5vcFBvc3REZWNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDIKKyAgICBtb3ZlIHQyLCB0MworICAgIGJzdWJpbyAxLCB0MywgLm9wUG9zdERl
Y1Nsb3cKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0
b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQorLm9wUG9zdERlY0RvbmU6CisgICAgZGlzcGF0Y2goMykKKwor
Lm9wUG9zdERlY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfZGVjKQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3RvX2pzbnVtYmVyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmllcSB0MiwgSW50MzJUYWcs
IC5vcFRvSnNudW1iZXJJc0ludAorICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BUb0pz
bnVtYmVyU2xvdworLm9wVG9Kc251bWJlcklzSW50OgorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgZGlzcGF0Y2goMykKKworLm9wVG9Kc251bWJlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3RvX2pzbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25l
Z2F0ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9h
ZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQorICAg
IGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3
ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdworICAgIG5lZ2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcs
IFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisub3BOZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQx
LCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKKyAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAg
c3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOZWdhdGVTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZWdhdGUpCisgICAgZGlzcGF0Y2goMykKKworCitt
YWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91Ymxl
T3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywg
Lm9wMU5vdEludAorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGxvYWRp
IDRbUENdLCB0MgorICAgIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0MywgdDEsIHQwLCAuc2xv
dywgdDIpCisgICAgZGlzcGF0Y2goNSkKKworLm9wMU5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJh
bmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291bGQgYmUg
YW55dGhpbmcuCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQzLCBMb3dl
c3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93
CisgICAgY2kyZCB0MSwgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9w
MkRvdWJsZToKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGxv
YWRpIDRbUENdLCB0MQorICAgIGZpaTJkIHQwLCB0MiwgZnQwCisgICAgZG91YmxlT3BlcmF0aW9u
KGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDUp
CisKKy5vcDJOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4gaW50
LCB0aGUgc2Vjb25kIG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QuCisgICAgbG9hZGkgNFtQQ10s
IHQyCisgICAgYmlhIHQzLCBMb3dlc3RUYWcsIC5zbG93CisgICAgY2kyZCB0MCwgZnQwCisgICAg
ZmlpMmQgdDEsIHQzLCBmdDEKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3Rv
cmVkIGZ0MCwgW2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLnNsb3c6CisgICAgY2Fs
bEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNSkKK2VuZAorCittYWNybyBiaW5hcnlPcChp
bnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBiaW5hcnlPcEN1
c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBp
bmRleCkKKyAgICAgICAgICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCisg
ICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAg
ICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAg
ICAgIGVuZCwKKyAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCitlbmQKKworX2xsaW50
X29wX2FkZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgc2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9hZGQpCisKKworX2xsaW50X29wX211bDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBs
ZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjb25zdCBzY3JhdGNoID0gaW50
MzJUYWcgICAjIFdlIGtub3cgdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIGludDMyVGFnIHJlZ2lzdGVy
IHNpbmNlIGl0IGhhcyBhIGNvbnN0YW50LgorICAgICAgICAgICAgbW92ZSByaWdodCwgc2NyYXRj
aAorICAgICAgICAgICAgYm11bGlvIGxlZnQsIHNjcmF0Y2gsIHNsb3cKKyAgICAgICAgICAgIGJ0
aW56IHNjcmF0Y2gsIC5kb25lCisgICAgICAgICAgICBiaWx0IGxlZnQsIDAsIHNsb3cKKyAgICAg
ICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgLmRvbmU6CisgICAgICAgICAgICBz
dG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3Rv
cmVpIHNjcmF0Y2gsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIG11bGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX211bCkKKworCitfbGxpbnRfb3Bfc3ViOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBi
c3ViaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQp
IHN1YmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3N1YikKKworCitf
bGxpbnRfb3BfZGl2OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0
b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkK
KyAgICAgICAgICAgIGNpMmQgbGVmdCwgZnQwCisgICAgICAgICAgICBjaTJkIHJpZ2h0LCBmdDEK
KyAgICAgICAgICAgIGRpdmQgZnQwLCBmdDEKKyAgICAgICAgICAgIGJjZDJpIGZ0MSwgcmlnaHQs
IC5ub3RJbnQKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5k
ZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0KKyAgICAgICAgICAgIGptcCAuZG9uZQorICAgICAgICAubm90SW50OgorICAgICAgICAg
ICAgc3RvcmVkIGZ0MSwgW2NmciwgaW5kZXgsIDhdCisgICAgICAgIC5kb25lOgorICAgICAgICBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgZGl2ZCBsZWZ0LCByaWdodCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfZGl2KQorCisKK19sbGludF9vcF9tb2Q6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9tb2QpCisgICAgZGlzcGF0
Y2goNCkKKworCittYWNybyBiaXRPcChvcGVyYXRpb24sIGhlbHBlciwgYWR2YW5jZSkKKyAgICBs
b2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0
MiwgdDApCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBJbnQz
MlRhZywgLnNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBvcGVyYXRpb24odDEsIHQwLCAu
c2xvdykKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCisKKy5z
bG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCitlbmQK
KworX2xsaW50X29wX2xzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfbHNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9v
cF9yc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX3JzaGlmdCwKKyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfdXJzaGlmdDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgc2xvdykKKyAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0CisgICAgICAgICAg
ICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAgIGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl91cnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF9iaXRhbmQ6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cp
IGFuZGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdGFuZCwKKyAg
ICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQsIHJp
Z2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXR4b3IsCisgICAgICAgIDUpCisKKwor
X2xsaW50X29wX2JpdG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2JpdG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRub3Q6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBiaW5l
cSB0MiwgSW50MzJUYWcsIC5vcEJpdG5vdFNsb3cKKyAgICBub3RpIHQzCisgICAgc3RvcmVpIHQy
LCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BCaXRub3RTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9iaXRub3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bf
Y2hlY2tfaGFzX2luc3RhbmNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAs
IC5vcENoZWNrSGFzSW5zdGFuY2VTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxh
Z3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93Cisg
ICAgZGlzcGF0Y2goMikKKworLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKKyAgICBkaXNwYXRjaCgyKQorCisK
K19sbGludF9vcF9pbnN0YW5jZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIENoZWNr
IHRoYXQgYmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2aW9y
LgorICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuCisgICAgbG9hZGkgMTJb
UENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKHQxLCB0
MCkKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0RlZmF1
bHRIYXNJbnN0YW5jZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICAKKyAgICAjIEFjdHVhbGx5IGRv
IHRoZSB3b3JrLgorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEluc3Rh
bmNlb2ZTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAgIGJi
YiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0VHlw
ZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEluc3RhbmNlb2ZTbG93KQor
ICAgIAorICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVlCisg
ICAgbW92ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxvb3A6CisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0Ml0sIHQyCisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxv
YWRPZmZzZXRbdDJdLCB0MgorICAgIGJwZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQorICAg
IGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcAorCisgICAgbW92ZSAwLCB0MAorLm9wSW5zdGFu
Y2VvZkRvbmU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQor
ICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDUp
CisKKy5vcEluc3RhbmNlb2ZTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pbnN0
YW5jZW9mKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3R5cGVvZjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3R5cGVvZikKKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc191bmRlZmluZWQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc191bmRlZmluZWQpCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfYm9vbGVhbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Jvb2xlYW4pCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfaXNfbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX2lzX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2lzX3N0cmluZykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9pc19vYmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9pc19vYmplY3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfZnVu
Y3Rpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9pc19mdW5jdGlvbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pbjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luKQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29sdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlKQorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX3Jlc29sdmVfc2tpcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfc2tpcCkKKyAgICBkaXNwYXRjaCg1KQorCisK
K21hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBm
b2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4
W1BDXSAgIFByb3BlcnR5IGlkZW50aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2suCisgICAg
IyAxMltQQ10gIFN0cnVjdHVyZSBwb2ludGVyLCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2Rl
IGdlbmVyYXRvci4KKyAgICAjIDE2W1BDXSAgT2Zmc2V0IGluIGdsb2JhbCBvYmplY3QsIGluaXRp
YWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJwbmVxIHQxLCAxMltQQ10s
IHNsb3cKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVy
dHlTdG9yYWdlW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQw
CisgICAgdmFsdWVQcm9maWxlKHQyLCB0MywgdDApCitlbmQKKworX2xsaW50X29wX3Jlc29sdmVf
Z2xvYmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICByZXNvbHZlR2xvYmFsKDYsIC5vcFJl
c29sdmVHbG9iYWxTbG93KQorICAgIGRpc3BhdGNoKDYpCisKKy5vcFJlc29sdmVHbG9iYWxTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBkaXNw
YXRjaCg2KQorCisKKyMgR2l2ZXMgeW91IHRoZSBzY29wZSBpbiB0MCwgd2hpbGUgYWxsb3dpbmcg
eW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0aGUKKyMgc2Nv
cGVzIGFzIHRoZXkgYXJlIHRyYXZlcnNlZC4gc2NvcGVDaGVjaygpIGlzIGNhbGxlZCB3aXRoIHR3
byBhcmd1bWVudHM6IHRoZSByZWdpc3RlcgorIyBob2xkaW5nIHRoZSBzY29wZSwgYW5kIGEgcmVn
aXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc2NyYXRjaC4gTm90ZSB0aGF0IHRoaXMgZG9lcyBu
b3QKKyMgdXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQgc3R1ZmYgaW4gdDMgaWYgbmVlZCBiZS4KK21h
Y3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKKyAgICBsb2Fk
cCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIGRlQnJ1aWpp
bkluZGV4T3BlcmFuZCwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorICAgIAorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGJpbmVxIENvZGVCbG9jazo6bV9jb2RlVHlwZVt0
MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AKKyAgICBidGJ6IENvZGVCbG9jazo6bV9uZWVkc0Z1bGxT
Y29wZUNoYWluW3QxXSwgLmxvb3AKKyAgICAKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0aXZh
dGlvblJlZ2lzdGVyW3QxXSwgdDEKKworICAgICMgTmVlZCB0byBjb25kaXRpb25hbGx5IHNraXAg
b3ZlciBvbmUgc2NvcGUuCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFs
dWVUYWcsIC5ub0FjdGl2YXRpb24KKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBT
Y29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisubm9BY3RpdmF0aW9uOgorICAgIHN1YmkgMSwg
dDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorLmxvb3A6CisgICAgc2NvcGVDaGVjayh0MCwg
dDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MAorICAgIHN1YmkgMSwg
dDIKKyAgICBidGlueiB0MiwgLmxvb3AKKworLmRvbmU6CitlbmQKKworX2xsaW50X29wX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0
YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6YWN0
aXZhdGlvblN0cnVjdHVyZVt0M10sIHQzCisgICAgZ2V0U2NvcGUoCisgICAgICAgIDIwW1BDXSwK
KyAgICAgICAgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKQorICAgICAgICAgICAgbG9hZHAgU2NvcGVD
aGFpbk5vZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGJwbmVxIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVy
U2xvdworICAgICAgICBlbmQpCisgICAgcmVzb2x2ZUdsb2JhbCg3LCAub3BSZXNvbHZlR2xvYmFs
RHluYW1pY1Nsb3cpCisgICAgZGlzcGF0Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFtaWNT
dXBlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWMpCisgICAgZGlzcGF0Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5
bmFtaWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbF9k
eW5hbWljKQorICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX2dldF9zY29wZWRfdmFyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAg
ICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIEluZGV4
IG9mIHJlZ2lzdGVyIGluIHRoZSBzY29wZS4KKyAgICAjIDEyW1BDXSAgRGUgQnJ1aWppbiBpbmRl
eC4KKyAgICBnZXRTY29wZSgxMltQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAg
IGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRwIFNjb3BlQ2hh
aW5Ob2RlOjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVn
aXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgdDMKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MCwgdDEpCisgICAg
ZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGdldFNjb3BlKDhbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkK
KyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDMs
IHQyKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHdyaXRlQmFycmllcih0MywgdDIpCisgICAg
bG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJs
ZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W3Qw
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0
W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAor
ICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbdDAsIHQxLCA4XSwgdDEKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQor
ICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGxvYWRpIDEyW1BD
XSwgdDMKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MykKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgOFtQQ10sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6
Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0Miwg
dDMpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQyLCB0MykKKyAgICBz
dG9yZWkgdDIsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zm
c2V0W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX2Jh
c2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9y
ZXNvbHZlX2Jhc2UpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZW5zdXJlX3Byb3Bl
cnR5X2V4aXN0czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfcmVzb2x2ZV93aXRoX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQor
CisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQorICAgIGRpc3Bh
dGNoKDUpCisKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFu
ZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQorICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxs
b3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKKyAgICAj
IHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9i
eV9pZCB3aWxsIGNvbnRpbnVlCisgICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNh
Y2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAorICAgICMgd2Ug
d291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENl
bGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9h
ZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKKyAgICBicG5lcSBKU0NlbGw6
Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgbG9hZGkgNFtQQ10sIHQx
CisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0Ml0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFt0MCwgdDJdLCB0MgorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
c3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgMzJbUENdLCB0
MQorICAgIHZhbHVlUHJvZmlsZSh0MywgdDIsIHQxKQorICAgIGRpc3BhdGNoKDkpCisKKy5vcEdl
dEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfaWQpCisgICAg
ZGlzcGF0Y2goOSkKKworCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQor
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJn
dW1lbnRzTGVuZ3RoU2xvdworICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0
W2Nmcl0sIHQyCisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAx
MltQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMK
KyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93Cisg
ICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0
MCwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQwLCB0MikKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNl
dFt0MywgdDFdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBkaXNw
YXRjaCg5KQorCisub3BQdXRCeUlkU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cHV0X2J5X2lkKQorICAgIGRpc3BhdGNoKDkpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRpb24o
YWRkaXRpb25hbENoZWNrcykKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQzCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENdLCB0
MgorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cK
KyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkg
MjBbUENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQz
CisgICAgYWRkcCB0MSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MiwgdDEs
IHQyKQorICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRb
dDNdCisgICAgbG9hZGkgMjRbUENdLCB0MQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0
M10KKyAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgZGlzcGF0Y2go
OSkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgIHB1
dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVuZCkK
KworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgIHB1dEJ5SWRU
cmFuc2l0aW9uKAorICAgICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93KQor
ICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5nIHRo
ZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bworICAgICAgICAKKyAgICAgICAg
ICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAorICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykg
YnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46
Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9r
KSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6bV9w
cm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAgICAg
ICAgLmxvb3A6CisgICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5
bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICAgICAgICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgICAgICAgICBi
cG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdworICAgICAgICAgICAgYWRkcCA0LCBz
Y3JhdGNoCisgICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zm
c2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisgICAgICAgIC5kb25lOgorICAgICAg
ICBlbmQpCisKKworX2xsaW50X29wX2RlbF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9nZXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSAxMltQ
Q10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlWYWxT
bG93KQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MV0sIHQyCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIEludDMyVGFnLCB0MSwgLm9wR2V0
QnlWYWxTbG93KQorICAgIGJwbmVxIFt0MF0sIHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2Fk
cCBKU0FycmF5OjptX3N0b3JhZ2VbdDBdLCB0MworICAgIGJpYWVxIHQxLCBKU0FycmF5OjptX3Zl
Y3Rvckxlbmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwgdDIK
KyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MywgdDEs
IDhdLCB0MQorICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdworICAg
IHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIHZhbHVlUHJvZmls
ZSh0MiwgdDEsIHQwKQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEdldEJ5VmFsU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg1KQorCisK
K19sbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdwor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBJbnQzMlRhZywgdDIsIC5vcEdl
dEFyZ3VtZW50QnlWYWxTbG93KQorICAgIGFkZGkgMSwgdDIKKyAgICBsb2FkaSBBcmd1bWVudENv
dW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQorICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJn
dW1lbnRCeVZhbFNsb3cKKyAgICBuZWdpIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9h
ZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxv
YWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisg
ICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3BHZXRBcmd1bWVudEJ5
VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50X2J5X3Zh
bCkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9nZXRfYnlfcG5hbWU6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEdldEJ5UG5hbWVTbG93KQorICAgIGxv
YWRpIDE2W1BDXSwgdDAKKyAgICBicG5lcSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
Lm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5UG5hbWVTbG93KQorICAg
IGxvYWRpIDIwW1BDXSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAorICAgIGJwbmVxIHQwLCBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0M10sIC5vcEdldEJ5UG5h
bWVTbG93CisgICAgbG9hZGkgMjRbUENdLCB0MAorICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwgdDAK
KyAgICBzdWJpIDEsIHQwCisgICAgYmlhZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1f
bnVtQ2FjaGVhYmxlU2xvdHNbdDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRwIEpTT2Jq
ZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QyLCB0
MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MiwgdDAsIDhdLCB0MworICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
c3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNykKKwor
Lm9wR2V0QnlQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9ieV9w
bmFtZSkKKyAgICBkaXNwYXRjaCg3KQorCisKK19sbGludF9vcF9wdXRfYnlfdmFsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgSW50MzJU
YWcsIHQyLCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xv
YmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MF0sIHQwCisgICAgYnBuZXEgW3QxXSwgdDAsIC5v
cFB1dEJ5VmFsU2xvdworICAgIGJpYWVxIHQyLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0MV0s
IC5vcFB1dEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQwCisg
ICAgYmllcSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0sIEVt
cHR5VmFsdWVUYWcsIC5vcFB1dEJ5VmFsRW1wdHkKKy5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQ6Cisg
ICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0
MSwgdDMpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MykKKyAgICBzdG9yZWkgdDEsIEFycmF5U3Rv
cmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0b3JlaSB0MywgQXJy
YXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XQorICAgIGRpc3Bh
dGNoKDQpCisKKy5vcFB1dEJ5VmFsRW1wdHk6CisgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6Om1f
bnVtVmFsdWVzSW5WZWN0b3JbdDBdCisgICAgYmliIHQyLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3Ro
W3QwXSwgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorICAgIGFkZGkgMSwgdDIsIHQxCisgICAgc3Rv
cmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXQorICAgIGptcCAub3BQdXRCeVZhbFN0
b3JlUmVzdWx0CisKKy5vcFB1dEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcHV0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9kZWxfYnlfdmFs
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVs
X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaW5kZXg6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlf
aW5kZXgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dldHRlcl9zZXR0ZXI6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRf
Z2V0dGVyX3NldHRlcikKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9sb29wOgorICAg
IG5vcAorX2xsaW50X29wX2ptcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0Y2hC
cmFuY2goNFtQQ10pCisKKworX2xsaW50X29wX2ptcF9zY29wZXM6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9qbXBfc2NvcGVzKQorICAgIGRpc3Bh
dGNoKDApCisKKworbWFjcm8ganVtcFRydWVPckZhbHNlKGNvbmRpdGlvbk9wLCBzbG93KQorICAg
IGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBC
b29sZWFuVGFnLCB0MCwgLnNsb3cpCisgICAgY29uZGl0aW9uT3AodDAsIC50YXJnZXQpCisgICAg
ZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLnNs
b3c6CisgICAgY2FsbEhlbHBlcihzbG93KQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50
X29wX2xvb3BfaWZfdHJ1ZToKKyAgICBub3AKK19sbGludF9vcF9qdHJ1ZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAganVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRh
cmdldCkgYnRpbnogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfanRy
dWUpCisKKworX2xsaW50X29wX2xvb3BfaWZfZmFsc2U6CisgICAgbm9wCitfbGxpbnRfb3BfamZh
bHNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAg
IG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGl6IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2pmYWxzZSkKKworCittYWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIsIGlt
bWVkaWF0ZUhhbmRsZXIpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQw
CisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5pbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDIKKyAgICBjZWxsSGFuZGxlcihTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV9mbGFnc1t0Ml0sIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKworLnRh
cmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLmltbWVkaWF0ZToKKyAgICBvcmkg
MSwgdDEKKyAgICBpbW1lZGlhdGVIYW5kbGVyKHQxLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMp
CitlbmQKKworX2xsaW50X29wX2plcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBl
cXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJueiB2YWx1ZSwgTWFz
cXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0
YXJnZXQpIGJpZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisgICAgCisKK19sbGludF9v
cF9qbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAg
ICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0YnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaW5lcSB2YWx1
ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKworCitfbGxpbnRfb3Bfam5lcV9wdHI6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQor
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wSm5lcVB0ckJyYW5j
aAorICAgIGJwZXEgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEsIC5vcEpuZXFQdHJGYWxs
VGhyb3VnaAorLm9wSm5lcVB0ckJyYW5jaDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisu
b3BKbmVxUHRyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBjb21wYXJl
KGludGVnZXJDb21wYXJlLCBkb3VibGVDb21wYXJlLCBoZWxwZXIpCisgICAgbG9hZGkgNFtQQ10s
IHQyCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwg
dDAsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MiwgdDMpCisgICAg
YmluZXEgdDAsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAu
b3AyTm90SW50CisgICAgaW50ZWdlckNvbXBhcmUodDEsIHQzLCAuanVtcFRhcmdldCkKKyAgICBk
aXNwYXRjaCg0KQorCisub3AxTm90SW50OgorICAgIGJpYSB0MCwgTG93ZXN0VGFnLCAuc2xvdwor
ICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisgICAgYmluZXEgdDIs
IEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDMsIGZ0MQorICAgIGptcCAub3AxTm90SW50UmVh
ZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKy5vcDFOb3RJ
bnRSZWFkeToKKyAgICBmaWkyZCB0MSwgdDAsIGZ0MAorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBm
dDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDJOb3RJbnQ6CisgICAgY2ky
ZCB0MSwgZnQwCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgZmlpMmQgdDMsIHQy
LCBmdDEKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNw
YXRjaCg0KQorCisuanVtcFRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisKKy5z
bG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xs
aW50X29wX2xvb3BfaWZfbGVzczoKKyAgICBub3AKK19sbGludF9vcF9qbGVzczoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0
YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiZGx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2psZXNzKQorCisKK19sbGludF9vcF9qbmxlc3M6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgdGFyZ2V0KSBiZGd0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9qbmxlc3MpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcjoKKyAg
ICBub3AKK19sbGludF9vcF9qZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29t
cGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0
IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVhdGVy
KQorCisKK19sbGludF9vcF9qbmdyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNv
bXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
ZGx0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9q
bmdyZWF0ZXIpCisKKworX2xsaW50X29wX2xvb3BfaWZfbGVzc2VxOgorICAgIG5vcAorX2xsaW50
X29wX2psZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXEgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3NlcSkKKworCitfbGxp
bnRfb3Bfam5sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQg
ZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndHVuIGxlZnQsIHJp
Z2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzc2VxKQorCisKK19s
bGludF9vcF9sb29wX2lmX2dyZWF0ZXJlcToKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcmVx
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVhdGVyZXEpCisKKworX2xsaW50X29wX2pu
Z3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHR1biBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXJlcSkKKworCitfbGxp
bnRfb3BfbG9vcF9oaW50OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRv
SklURm9yTG9vcCgpCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2ltbToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDRb
UENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJd
LCB0MgorICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMgICAjIEZJWE1FOiB3b3Vs
ZCBiZSBuaWNlIHRvIHBlZXBob2xlIHRoaXMhCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0
YTo6bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwg
dDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wU3dpdGNoSW1t
Tm90SW50CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEg
dDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJd
LCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJh
bmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0
MCwgNF0sIHQxCisgICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNw
YXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCisKKy5vcFN3aXRjaEltbU5vdEludDoKKyAgICBiaWIg
dDEsIExvd2VzdFRhZywgLm9wU3dpdGNoSW1tU2xvdyAgIyBHbyB0byBzbG93IHBhdGggaWYgaXQn
cyBhIGRvdWJsZS4KKy5vcFN3aXRjaEltbUZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNo
KDhbUENdKQorCisub3BTd2l0Y2hJbW1TbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9zd2l0Y2hfaW1tKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3N3aXRjaF9jaGFy
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkg
NFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0
Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MworICAgIGxvYWRwIENv
ZGVCbG9jazo6UmFyZURhdGE6Om1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1
ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgYWRkcCB0MywgdDIKKyAgICBiaW5lcSB0MSwgQ2VsbFRh
ZywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQxCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
dHlwZVt0MV0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRw
IEpTU3RyaW5nOjptX3ZhbHVlW3QwXSwgdDAKKyAgICBiaW5lcSBTdHJpbmdJbXBsOjptX2xlbmd0
aFt0MF0sIDEsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFN0cmluZ0ltcGw6
Om1fZGF0YThbdDBdLCB0MQorICAgIGJ0aW56IFN0cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdzW3Qw
XSwgSGFzaEZsYWdzOEJpdEJ1ZmZlciwgLm9wU3dpdGNoQ2hhcjhCaXQKKyAgICBsb2FkaCBbdDFd
LCB0MAorICAgIGptcCAub3BTd2l0Y2hDaGFyUmVhZHkKKy5vcFN3aXRjaENoYXI4Qml0OgorICAg
IGxvYWRiIFt0MV0sIHQwCisub3BTd2l0Y2hDaGFyUmVhZHk6CisgICAgc3ViaSBTaW1wbGVKdW1w
VGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNo
T2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gK
KyAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJP
ZmZzZXRbdDJdLCB0MgorICAgIGxvYWRpIFt0MiwgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEsIC5v
cFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQor
Cisub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisK
KworX2xsaW50X29wX3N3aXRjaF9zdHJpbmc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfc3RyaW5nKQorICAgIGRpc3BhdGNoKDApCisK
KworX2xsaW50X29wX25ld19mdW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidGl6IDEy
W1BDXSwgLm9wTmV3RnVuY1VuY2hlY2tlZAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJpbmVx
IFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wTmV3RnVuY0RvbmUKKy5v
cE5ld0Z1bmNVbmNoZWNrZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19mdW5j
KQorLm9wTmV3RnVuY0RvbmU6CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2Z1
bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfbmV3X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gZG9DYWxsKGhlbHBl
cikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAg
TExJbnRDYWxsTGlua0luZm86OmNhbGxlZVt0MV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BDYWxsU2xvdykKKyAgICBiaW5lcSB0Mywg
dDIsIC5vcENhbGxTbG93CisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGFkZHAgMjQsIFBDCisg
ICAgbHNoaWZ0aSAzLCB0MworICAgIGFkZHAgY2ZyLCB0MyAgIyB0MyBjb250YWlucyB0aGUgbmV3
IHZhbHVlIG9mIGNmcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fc2NvcGVDaGFpblt0Ml0sIHQw
CisgICAgc3RvcmVpIHQyLCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSB0
MCwgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgbG9hZGkgOCAtIDI0W1BDXSwg
dDIKKyAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0
b3JlcCBjZnIsIENhbGxlckZyYW1lW3QzXQorICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCAr
IFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNl
dFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10KKyAg
ICBtb3ZlIHQzLCBjZnIKKyAgICBjYWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRh
cmdldFt0MV0KKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKy5vcENhbGxTbG93OgorICAgIHNs
b3dQYXRoRm9yQ2FsbCg2LCBoZWxwZXIpCitlbmQKKworX2xsaW50X29wX2NhbGw6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRfaGVscGVyX2NhbGwpCisKKworX2xsaW50
X29wX2NvbnN0cnVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9o
ZWxwZXJfY29uc3RydWN0KQorCisKK19sbGludF9vcF9jYWxsX3ZhcmFyZ3M6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBfbGxpbnRfaGVscGVyX2NhbGxfdmFy
YXJncykKKworCitfbGxpbnRfb3BfY2FsbF9ldmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICAKKyAgICAjIEV2YWwgaXMgZXhlY3V0ZWQgaW4gb25lIG9mIHR3byBtb2RlczoKKyAgICAjCisg
ICAgIyAxKSBXZSBmaW5kIHRoYXQgd2UncmUgcmVhbGx5IGludm9raW5nIGV2YWwoKSBpbiB3aGlj
aCBjYXNlIHRoZQorICAgICMgICAgZXhlY3V0aW9uIGlzIHBlcmZvbWVkIGVudGlyZWx5IGluc2lk
ZSB0aGUgaGVscGVyLCBhbmQgaXQKKyAgICAjICAgIHJldHVybnMgdGhlIFBDIG9mIGEgZnVuY3Rp
b24gdGhhdCBqdXN0IHJldHVybnMgdGhlIHJldHVybiB2YWx1ZQorICAgICMgICAgdGhhdCB0aGUg
ZXZhbCByZXR1cm5lZC4KKyAgICAjCisgICAgIyAyKSBXZSBmaW5kIHRoYXQgd2UncmUgaW52b2tp
bmcgc29tZXRoaW5nIGNhbGxlZCBldmFsKCkgdGhhdCBpcyBub3QKKyAgICAjICAgIHRoZSByZWFs
IGV2YWwuIFRoZW4gdGhlIGhlbHBlciByZXR1cm5zIHRoZSBQQyBvZiB0aGUgdGhpbmcgdG8KKyAg
ICAjICAgIGNhbGwsIGFuZCB3ZSBjYWxsIGl0LgorICAgICMKKyAgICAjIFRoaXMgYWxsb3dzIHVz
IHRvIGhhbmRsZSB0d28gY2FzZXMsIHdoaWNoIHdvdWxkIHJlcXVpcmUgYSB0b3RhbCBvZgorICAg
ICMgdXAgdG8gZm91ciBwaWVjZXMgb2Ygc3RhdGUgdGhhdCBjYW5ub3QgYmUgZWFzaWx5IHBhY2tl
ZCBpbnRvIHR3bworICAgICMgcmVnaXN0ZXJzIChDIGZ1bmN0aW9ucyBjYW4gcmV0dXJuIHVwIHRv
IHR3byByZWdpc3RlcnMsIGVhc2lseSk6CisgICAgIworICAgICMgLSBUaGUgY2FsbCBmcmFtZSBy
ZWdpc3Rlci4gVGhpcyBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4gbW9kaWZpZWQKKyAgICAjICAg
YnkgdGhlIGhlbHBlciwgYnV0IHRoZSBjb252ZW50aW9uIGlzIHRoYXQgaXQgcmV0dXJucyBpdC4g
SXQncyBub3QKKyAgICAjICAgdG90YWxseSBjbGVhciBpZiB0aGF0J3MgbmVjZXNzYXJ5LCBzaW5j
ZSB0aGUgY2ZyIGlzIGNhbGxlZSBzYXZlLgorICAgICMgICBCdXQgdGhhdCdzIG91ciBzdHlsZSBp
biB0aGlzIGhlcmUgaW50ZXJwcmV0ZXIgc28gd2Ugc3RpY2sgd2l0aCBpdC4KKyAgICAjCisgICAg
IyAtIEEgYml0IHRvIHNheSBpZiB0aGUgaGVscGVyIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCB0aGUg
ZXZhbCBhbmQgaGFzCisgICAgIyAgIHRoZSByZXR1cm4gdmFsdWUsIG9yIGRpZCBub3QgZXhlY3V0
ZSB0aGUgZXZhbCBidXQgaGFzIGEgUEMgZm9yIHVzCisgICAgIyAgIHRvIGNhbGwuCisgICAgIwor
ICAgICMgLSBFaXRoZXI6CisgICAgIyAgIC0gVGhlIEpTIHJldHVybiB2YWx1ZSAodHdvIHJlZ2lz
dGVycyksIG9yCisgICAgIworICAgICMgICAtIFRoZSBQQyB0byBjYWxsLgorICAgICMKKyAgICAj
IEl0IHR1cm5zIG91dCB0byBiZSBlYXNpZXIgdG8ganVzdCBhbHdheXMgaGF2ZSB0aGlzIHJldHVy
biB0aGUgY2ZyCisgICAgIyBhbmQgYSBQQyB0byBjYWxsLCBhbmQgdGhhdCBQQyBtYXkgYmUgYSBk
dW1teSB0aHVuayB0aGF0IGp1c3QKKyAgICAjIHJldHVybnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhl
IGV2YWwgcmV0dXJuZWQuCisgICAgCisgICAgc2xvd1BhdGhGb3JDYWxsKDQsIF9sbGludF9oZWxw
ZXJfY2FsbF9ldmFsKQorCisKK19sbGludF9nZW5lcmljX3JldHVybl9wb2ludDoKKyAgICBkaXNw
YXRjaEFmdGVyQ2FsbCgpCisKKworX2xsaW50X29wX3RlYXJfb2ZmX2FjdGl2YXRpb246CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0
MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVh
ck9mZkFjdGl2YXRpb25DcmVhdGVkCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVt
cHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZAorLm9wVGVhck9mZkFj
dGl2YXRpb25DcmVhdGVkOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9h
Y3RpdmF0aW9uKQorLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkOgorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX3RlYXJfb2ZmX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3ViaSAxLCB0MCAgICMgR2V0IHRoZSB1bm1v
ZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
RW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQorLm9wVGVhck9mZkFyZ3VtZW50
c05vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBkb1JldHVybigpCisgICAg
bG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIK
KyAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICByZXQKK2VuZAor
CitfbGxpbnRfb3BfcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRv
SklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX2NhbGxf
cHV0X3Jlc3VsdDoKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAg
ICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHZhbHVlUHJvZmlsZSh0MSwgdDAsIHQzKQorICAgIHRy
YWNlRXhlY3V0aW9uKCkgIyBOZWVkcyB0byBiZSBoZXJlIGJlY2F1c2UgaXQgd291bGQgY2xvYmJl
ciB0MSwgdDAKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXRfb2JqZWN0X29yX3Ro
aXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1
ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwg
dDEsIHQwKQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmpl
Y3QKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYmIgU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcFJl
dE9iamVjdE9yVGhpc05vdE9iamVjdAorICAgIGRvUmV0dXJuKCkKKworLm9wUmV0T2JqZWN0T3JU
aGlzTm90T2JqZWN0OgorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX21ldGhvZF9j
aGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNoZWNr
cyBhbmQgdXNlIG5vcm1hbCBnZXRfYnlfaWQgb3B0aW1pemF0aW9ucy4KKyAgICBkaXNwYXRjaCgx
KQorCisKK19sbGludF9vcF9zdHJjYXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9zdHJjYXQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfdG9fcHJpbWl0aXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFRvUHJpbWl0aXZlSXNJbW0KKyAgICBs
b2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1f
dHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm9wVG9QcmltaXRp
dmVTbG93Q2FzZQorLm9wVG9QcmltaXRpdmVJc0ltbToKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNl
dFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQor
ICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvUHJpbWl0aXZlU2xvd0Nhc2U6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3RvX3ByaW1pdGl2ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9nZXRfcG5hbWVzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9s
bGludF9oZWxwZXJfZ2V0X3BuYW1lcykKKyAgICBkaXNwYXRjaCgwKSAjIFRoZSBoZWxwZXIgZWl0
aGVyIGFkdmFuY2VzIHRoZSBQQyBvciBqdW1wcyB1cyB0byBzb21ld2hlcmUgZWxzZS4KKworCitf
bGxpbnRfb3BfbmV4dF9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJb
UENdLCB0MQorICAgIGxvYWRpIDE2W1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDEsIDhdLCB0MAorICAgIGJpZXEgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIC5v
cE5leHRQbmFtZUVuZAorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdLCB0MgorICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1f
anNTdHJpbmdzW3QyXSwgdDMKKyAgICBsb2FkaSBbdDMsIHQwLCA4XSwgdDMKKyAgICBhZGRpIDEs
IHQwCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkg
NFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAg
IHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDhbUENdLCB0
MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1lSXRl
cmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRw
IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0MAor
ICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCisgICAgYnRweiBbdDBd
LCAub3BOZXh0UG5hbWVUYXJnZXQKKy5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcDoKKyAg
ICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbdDFdLCBOdWxsVGFnLCAu
b3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxv
YWRPZmZzZXRbdDFdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MQor
ICAgIGJwbmVxIHQxLCBbdDBdLCAub3BOZXh0UG5hbWVTbG93CisgICAgYWRkcCA0LCB0MAorICAg
IGJ0cG56IFt0MF0sIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcAorLm9wTmV4dFBuYW1l
VGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDI0W1BDXSkKKworLm9wTmV4dFBuYW1lRW5kOgor
ICAgIGRpc3BhdGNoKDcpCisKKy5vcE5leHRQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX25leHRfcG5hbWUpICMgVGhpcyBlaXRoZXIga2VlcHMgdGhlIFBDIHdoZXJlIGl0
IHdhcyAoY2F1c2luZyB1cyB0byBsb29wKSBvciBzZXRzIGl0IHRvIHRhcmdldC4KKyAgICBkaXNw
YXRjaCgwKQorCisKK19sbGludF9vcF9wdXNoX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9zY29wZSkKKyAgICBkaXNwYXRjaCgy
KQorCisKK19sbGludF9vcF9wb3Bfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3Bfc2NvcGUpCisgICAgZGlzcGF0Y2goMSkKKworCitf
bGxpbnRfb3BfcHVzaF9uZXdfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX25ld19zY29wZSkKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9jYXRjaDoKKyAgICAjIFRoaXMgaXMgd2hlcmUgd2UgZW5kIHVwIGZyb20gdGhl
IEpJVCdzIHRocm93IHRyYW1wb2xpbmUgKGJlY2F1c2UgdGhlCisgICAgIyBtYWNoaW5lIGNvZGUg
cmV0dXJuIGFkZHJlc3Mgd2lsbCBiZSBzZXQgdG8gX2xsaW50X29wX2NhdGNoKSwgYW5kIGZyb20K
KyAgICAjIHRoZSBpbnRlcnByZXRlcidzIHRocm93IHRyYW1wb2xpbmUgKHNlZSBfbGxpbnRfdGhy
b3dfdHJhbXBvbGluZSkuCisgICAgIyBUaGUgSklUIHRocm93aW5nIHByb3RvY29sIGNhbGxzIGZv
ciB0aGUgY2ZyIHRvIGJlIGluIHQwLiBUaGUgdGhyb3dpbmcKKyAgICAjIGNvZGUgbXVzdCBoYXZl
IGtub3duIHRoYXQgd2Ugd2VyZSB0aHJvd2luZyB0byB0aGUgaW50ZXJwcmV0ZXIsIGFuZCBoYXZl
CisgICAgIyBzZXQgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cuCisg
ICAgbW92ZSB0MCwgY2ZyCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0s
IHQzCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3db
dDNdLCBQQworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNl
dFt0M10sIHQwCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRb
dDNdLCB0MQorICAgIHN0b3JlaSAwLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxvYWRP
ZmZzZXRbdDNdCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0
aW9uICsgVGFnT2Zmc2V0W3QzXSAgICAgICAKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBzdG9y
ZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNl
dFtjZnIsIHQyLCA4XQorICAgIHRyYWNlRXhlY3V0aW9uKCkgICMgVGhpcyBuZWVkcyB0byBiZSBo
ZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjbG9iYmVyIHQwLCB0MSwgdDIsIHQzIGFib3Zl
LgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGhyb3cpCisgICAgZGlzcGF0Y2go
MikKKworCitfbGxpbnRfb3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9y
KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2pzcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYWRkaSAzICogNCwgUEMsIHQxCisgICAgc3Rv
cmVpIHQxLCBbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxp
bnRfb3Bfc3JldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgbG9hZHAgW2NmciwgdDAsIDhdLCBQQworICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29w
X2RlYnVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfZGVidWcpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJvZmlsZV93aWxsX2Nh
bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJs
ZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BQcm9maWxlV2ls
bENhbGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfd2lsbF9jYWxs
KQorLm9wUHJvZmlsZVdpbGxDYWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9v
cF9wcm9maWxlX2RpZF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBKSVRT
dGFja0ZyYW1lOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCB0MAorICAgIGJ0cHogW3Qw
XSwgLm9wUHJvZmlsZVdpbGxDYWxsRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9w
cm9maWxlX2RpZF9jYWxsKQorLm9wUHJvZmlsZURpZENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX2VuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0
Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1w
b2xpbmU6CisgICAgIyBXaGVuIHRocm93aW5nIGZyb20gdGhlIGludGVycHJldGVyIChpLmUuIHRo
cm93aW5nIGZyb20gTExJbnRIZWxwZXJzKSwgc28KKyAgICAjIHRoZSB0aHJvdyB0YXJnZXQgaXMg
bm90IG5lY2Vzc2FyaWx5IGludGVycHJldGVkIGNvZGUsIHdlIGNvbWUgdG8gaGVyZS4KKyAgICAj
IFRoaXMgZXNzZW50aWFsbHkgZW11bGF0ZXMgdGhlIEpJVCdzIHRocm93aW5nIHByb3RvY29sLgor
ICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpT
R2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERh
dGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKK19sbGludF90aHJvd19kdXJpbmdf
Y2FsbF90cmFtcG9saW5lOgorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikK
KyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBK
U0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxE
YXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCisjIExhc3RseSwgbWFrZSBzdXJl
IHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rl
cy4KKyMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTEludCBv
ciBlaXRoZXIgSklULiBXZSBhc3NlcnQKKyMgYXMgbXVjaC4KKworbWFjcm8gbm90U3VwcG9ydGVk
KCkKKyAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBjcmFzaCgpCisgICAgZWxzZQorICAg
ICAgICAjIFdlIHNob3VsZCB1c2Ugd2hhdGV2ZXIgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIGluc3Ry
dWN0aW9uIGlzLCBqdXN0IHRvCisgICAgICAgICMgZW5zdXJlIHRoYXQgdGhlcmUgaXMgYSBnYXAg
YmV0d2VlbiBpbnN0cnVjdGlvbiBsYWJlbHMuIElmIG11bHRpcGxlCisgICAgICAgICMgc21hbGxl
c3QgaW5zdHJ1Y3Rpb25zIGV4aXN0LCB3ZSBzaG91bGQgcGljayB0aGUgb25lIHRoYXQgaXMgbW9z
dAorICAgICAgICAjIGxpa2VseSByZXN1bHQgaW4gZXhlY3V0aW9uIGJlaW5nIGhhbHRlZC4gQ3Vy
cmVudGx5IHRoYXQgaXMgdGhlIGJyZWFrCisgICAgICAgICMgaW5zdHJ1Y3Rpb24gb24gYWxsIGFy
Y2hpdGVjdHVyZXMgd2UncmUgaW50ZXJlc3RlZCBpbi4gKEJyZWFrIGlzIGludDMKKyAgICAgICAg
IyBvbiBJbnRlbCwgd2hpY2ggaXMgMSBieXRlLCBhbmQgYmtwdCBvbiBBUk12Nywgd2hpY2ggaXMg
MiBieXRlcy4pCisgICAgICAgIGJyZWFrCisgICAgZW5kCitlbmQKKworX2xsaW50X29wX2dldF9h
cnJheV9sZW5ndGg6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9j
aGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9j
aGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9w
cm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9z
ZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2VuZXJpYzoK
KyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9jaGFpbjoK
KyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9wcm90bzoK
KyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9zZWxmOgor
ICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfcHJvdG86CisgICAgbm90
U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9zZWxmOgorICAgIG5vdFN1cHBvcnRl
ZCgpCisKK19sbGludF9vcF9nZXRfc3RyaW5nX2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQor
CitfbGxpbnRfb3BfcHV0X2J5X2lkX2dlbmVyaWM6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xs
aW50X29wX3B1dF9ieV9pZF9yZXBsYWNlOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9v
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCisKKyMgSW5kaWNh
dGUgdGhlIGVuZCBvZiBMTEludC4KK19sbGludF9lbmQ6CisgICAgY3Jhc2goKQorCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVs
SW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisK
KyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRlIDx3dGYvSW5saW5l
QVNNLmg+CisKKy8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtLCB3aGlj
aCBjb250YWlucyBhbGwgb2YgdGhlIGFzc2VtYmx5IGNvZGUKKy8vIGZvciB0aGUgaW50ZXJwcmV0
ZXIsIGFzIGNvbXBpbGVkIGZyb20gTG93TGV2ZWxJbnRlcnByZXRlci5hc20uCisjaW5jbHVkZSAi
TExJbnRBc3NlbWJseS5oIgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExvd0xldmVsSW50ZXJwcmV0ZXJfaAor
I2RlZmluZSBMb3dMZXZlbEludGVycHJldGVyX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKKyNkZWZpbmUg
TExJTlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxlbmd0aCkgZXh0ZXJuICJDIiB2b2lkIGxs
aW50XyMjb3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKExMSU5UX0lOU1RSVUNUSU9O
X0RFQ0wpOworI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wKKworZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2JlZ2luKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW5kKCk7CitleHRlcm4gIkMi
IHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2V2
YWxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9w
cm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
cHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0
eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9nZW5lcmljX3JldHVybl9wb2lu
dCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUo
KTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKCk7
CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMb3dMZXZlbEludGVycHJl
dGVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAzMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib3B0IgorCitjbGFzcyBOb2Rl
CisgIGRlZiBhcm1WN1NpbmdsZQorICAgIGRvdWJsZU9wZXJhbmQgPSBhcm1WN09wZXJhbmQKKyAg
ICByYWlzZSAiQm9ndXMgcmVnaXN0ZXIgbmFtZSAje2RvdWJsZU9wZXJhbmR9IiB1bmxlc3MgZG91
YmxlT3BlcmFuZCA9fiAvXmQvCisgICAgInMiICsgKCR+LnBvc3RfbWF0Y2gudG9faSAqIDIpLnRv
X3MKKyAgZW5kCitlbmQKKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVyIDwgTm9DaGlsZHJlbgorICBk
ZWYgaW5pdGlhbGl6ZShuYW1lKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRlZiBh
cm1WN09wZXJhbmQKKyAgICBAbmFtZQorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVm
IGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICB0
cnVlCisgIGVuZAorZW5kCisKK0FSTXY3X0VYVFJBX0dQUlMgPSBbU3BlY2lhbFJlZ2lzdGVyLm5l
dygicjkiKSwgU3BlY2lhbFJlZ2lzdGVyLm5ldygicjgiKSwgU3BlY2lhbFJlZ2lzdGVyLm5ldygi
cjMiKV0KK0FSTXY3X0VYVFJBX0ZQUlMgPSBbU3BlY2lhbFJlZ2lzdGVyLm5ldygiZDciKV0KK0FS
TXY3X1NDUkFUQ0hfRlBSID0gU3BlY2lhbFJlZ2lzdGVyLm5ldygiZDgiKQorCitkZWYgYXJtVjdN
b3ZlSW1tZWRpYXRlKHZhbHVlLCByZWdpc3RlcikKKyAgIyBDdXJyZW50bHkgd2Ugb25seSBoYW5k
bGUgdGhlIHNpbXBsZSBjYXNlcywgYW5kIGZhbGwgYmFjayB0byBtb3YvbW92dCBmb3IgdGhlIGNv
bXBsZXggb25lcy4KKyAgaWYgdmFsdWUgPj0gMCAmJiB2YWx1ZSA8IDI1NgorICAgICRhc20ucHV0
cyAibW92dyAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0sIFwjI3t2YWx1ZX0iCisgIGVsc2lmICh+
dmFsdWUpID49IDAgJiYgKH52YWx1ZSkgPCAyNTYKKyAgICAkYXNtLnB1dHMgIm12biAje3JlZ2lz
dGVyLmFybVY3T3BlcmFuZH0sIFwjI3t+dmFsdWV9IgorICBlbHNlCisgICAgJGFzbS5wdXRzICJt
b3Z3ICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje3ZhbHVlICYgMHhmZmZmfSIKKyAgICBp
ZiAodmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCisgICAgICAkYXNtLnB1dHMgIm1vdnQgI3tyZWdp
c3Rlci5hcm1WN09wZXJhbmR9LCBcIyN7dmFsdWUgPj4gMTZ9IgorICAgIGVuZAorICBlbmQKK2Vu
ZAorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5hbWUK
KyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICJyMCIKKyAgICB3aGVuICJ0MSIsICJh
MSIsICJyMSIKKyAgICAgICJyMSIKKyAgICB3aGVuICJ0MiIsICJhMiIKKyAgICAgICJyMiIKKyAg
ICB3aGVuICJhMyIKKyAgICAgICJyMyIKKyAgICB3aGVuICJ0MyIKKyAgICAgICJyNCIKKyAgICB3
aGVuICJ0NCIKKyAgICAgICJyNyIKKyAgICB3aGVuICJjZnIiCisgICAgICAicjUiCisgICAgd2hl
biAibHIiCisgICAgICAibHIiCisgICAgd2hlbiAic3AiCisgICAgICAic3AiCisgICAgZWxzZQor
ICAgICAgcmFpc2UgIkJhZCByZWdpc3RlciAje25hbWV9IGZvciBBUk12NyBhdCAje2NvZGVPcmln
aW5TdHJpbmd9IgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQKKyAg
ZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIsICJmciIKKyAg
ICAgICJkMCIKKyAgICB3aGVuICJmdDEiCisgICAgICAiZDEiCisgICAgd2hlbiAiZnQyIgorICAg
ICAgImQyIgorICAgIHdoZW4gImZ0MyIKKyAgICAgICJkMyIKKyAgICB3aGVuICJmdDQiCisgICAg
ICAiZDQiCisgICAgd2hlbiAiZnQ1IgorICAgICAgImQ1IgorICAgIGVsc2UKKyAgICAgIHJhaXNl
ICJCYWQgcmVnaXN0ZXIgI3tuYW1lfSBmb3IgQVJNdjcgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIK
KyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiBhcm1WN09wZXJh
bmQKKyAgICByYWlzZSAiSW52YWxpZCBpbW1lZGlhdGUgI3t2YWx1ZX0gYXQgI3tjb2RlT3JpZ2lu
U3RyaW5nfSIgaWYgdmFsdWUgPCAwIG9yIHZhbHVlID4gMjU1CisgICAgIlwjI3t2YWx1ZX0iCisg
IGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIHJhaXNl
ICJCYWQgb2Zmc2V0IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIGlmIG9mZnNldC52YWx1ZSA8IC0w
eGZmIG9yIG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwg
XCMje29mZnNldC52YWx1ZX1dIgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgZGVm
IGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJCYWQgb2Zmc2V0IGF0ICN7Y29kZU9yaWdpblN0cmlu
Z30iIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tp
bmRleC5hcm1WN09wZXJhbmR9LCBsc2wgXCMje3NjYWxlU2hpZnR9XSIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICByYWlzZSAiVW5j
b252ZXJ0ZWQgYWJzb2x1dGUgYWRkcmVzcyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICBlbmQK
K2VuZAorCisjCisjIExvd2VyaW5nIG9mIGJyYW5jaCBvcHMuIEZvciBleGFtcGxlOgorIworIyBi
YWRkaXogZm9vLCBiYXIsIGJhegorIworIyB3aWxsIGJlY29tZToKKyMKKyMgYWRkaSBmb28sIGJh
cgorIyBieiBiYXoKKyMKKworZGVmIGFybVY3TG93ZXJCcmFuY2hPcHMobGlzdCkKKyAgbmV3TGlz
dCA9IFtdCisgIGxpc3QuZWFjaCB7CisgICAgfCBub2RlIHwKKyAgICBpZiBub2RlLmlzX2E/IElu
c3RydWN0aW9uCisgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICB3aGVuIC9eYihhZGRpfHN1
Yml8b3JpfGFkZHApLworICAgICAgICBvcCA9ICQxCisgICAgICAgIGJyYW5jaCA9ICJiIiArICR+
LnBvc3RfbWF0Y2gKKyAgICAgICAgCisgICAgICAgIGNhc2Ugb3AKKyAgICAgICAgd2hlbiAiYWRk
aSIsICJhZGRwIgorICAgICAgICAgIG9wID0gImFkZGlzIgorICAgICAgICB3aGVuICJzdWJpIgor
ICAgICAgICAgIG9wID0gInN1YmlzIgorICAgICAgICB3aGVuICJvcmkiCisgICAgICAgICAgb3Ag
PSAib3JpcyIKKyAgICAgICAgZW5kCisgICAgICAgIAorICAgICAgICBuZXdMaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG9wLCBub2RlLm9wZXJhbmRzWzAuLi0yXSkKKyAg
ICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBicmFuY2gs
IFtub2RlLm9wZXJhbmRzWy0xXV0pCisgICAgICB3aGVuICJibXVsaW8iCisgICAgICAgIHRtcDEg
PSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgdG1wMiA9IFRtcC5uZXco
bm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhub2RlLmNvZGVPcmlnaW4sICJzbXVsbGkiLCBbbm9kZS5vcGVyYW5kc1swXSwgbm9kZS5vcGVy
YW5kc1sxXSwgbm9kZS5vcGVyYW5kc1sxXSwgdG1wMV0pCisgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInJzaGlmdGkiLCBbbm9kZS5vcGVyYW5kc1st
Ml0sIEltbWVkaWF0ZS5uZXcobm9kZS5jb2RlT3JpZ2luLCAzMSksIHRtcDJdKQorICAgICAgICBu
ZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJiaW5lcSIsIFt0bXAx
LCB0bXAyLCBub2RlLm9wZXJhbmRzWy0xXV0pCisgICAgICB3aGVuIC9eYm11bGkvCisgICAgICAg
IGNvbmRpdGlvbiA9ICR+LnBvc3RfbWF0Y2gKKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibXVsaSIsIG5vZGUub3BlcmFuZHNbMC4uLTJdKQorICAg
ICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJidGkiICsg
Y29uZGl0aW9uLCBbbm9kZS5vcGVyYW5kc1stMl0sIG5vZGUub3BlcmFuZHNbLTFdXSkKKyAgICAg
IGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICBlbmQKKyAgICBlbHNlCisgICAg
ICBuZXdMaXN0IDw8IG5vZGUKKyAgICBlbmQKKyAgfQorICBuZXdMaXN0CitlbmQKKworIworIyBM
b3dlcmluZyBvZiBzaGlmdCBvcHMuIEZvciBleGFtcGxlOgorIworIyBsc2hpZnRpIGZvbywgYmFy
CisjCisjIHdpbGwgYmVjb21lOgorIworIyBhbmRpIGZvbywgMzEsIHRtcAorIyBsc2hpZnRpIHRt
cCwgYmFyCisjCisKK2RlZiBhcm1WN1Nhbml0aXplU2hpZnQob3BlcmFuZCwgbGlzdCkKKyAgcmV0
dXJuIG9wZXJhbmQgaWYgb3BlcmFuZC5pbW1lZGlhdGU/CisgIAorICB0bXAgPSBUbXAubmV3KG9w
ZXJhbmQuY29kZU9yaWdpbiwgOmdwcikKKyAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFu
ZC5jb2RlT3JpZ2luLCAiYW5kaSIsIFtvcGVyYW5kLCBJbW1lZGlhdGUubmV3KG9wZXJhbmQuY29k
ZU9yaWdpbiwgMzEpLCB0bXBdKQorICB0bXAKK2VuZAorCitkZWYgYXJtVjdMb3dlclNoaWZ0T3Bz
KGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9kZSB8CisgICAg
aWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAg
d2hlbiAibHNoaWZ0aSIsICJyc2hpZnRpIiwgInVyc2hpZnRpIgorICAgICAgICBpZiBub2RlLm9w
ZXJhbmRzLnNpemUgPT0gMgorICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5v
ZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFthcm1WN1Nhbml0aXplU2hpZnQobm9kZS5vcGVy
YW5kc1swXSwgbmV3TGlzdCksIG5vZGUub3BlcmFuZHNbMV1dKQorICAgICAgICBlbHNlCisgICAg
ICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2RlLm9w
Y29kZSwgW25vZGUub3BlcmFuZHNbMF0sIGFybVY3U2FuaXRpemVTaGlmdChub2RlLm9wZXJhbmRz
WzFdLCBuZXdMaXN0KSwgbm9kZS5vcGVyYW5kc1syXV0pCisgICAgICAgICAgcmFpc2UgIldyb25n
IG51bWJlciBvZiBvcGVyYW5kcyBmb3Igc2hpZnQgYXQgI3tub2RlLmNvZGVPcmlnaW5TdHJpbmd9
IiB1bmxlc3Mgbm9kZS5vcGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgZW5kCisgICAgICBlbHNl
CisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgbmV3
TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJp
bmcgb2YgbWFsZm9ybWVkIGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGU6CisjCisjIGxvYWRwIDEwMDAw
W2Zvb10sIGJhcgorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbW92ZSAxMDAwMCwgdG1wCisjIGFk
ZHAgZm9vLCB0bXAKKyMgbG9hZHAgMFt0bXBdLCBiYXIKKyMKKworY2xhc3MgTm9kZQorICBkZWYg
YXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICBtYXBDaGlsZHJl
biB7CisgICAgICB8IG5vZGUgfAorICAgICAgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVz
c2VzUmVjdXJzZShsaXN0KQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBk
ZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICBpZiBvZmZz
ZXQudmFsdWUgPCAtMHhmZiBvciBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgdG1wID0gVG1w
Lm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29k
ZU9yaWdpbiwgIm1vdmUiLCBbb2Zmc2V0LCB0bXBdKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcoY29kZU9yaWdpbiwgImFkZHAiLCBbYmFzZSwgdG1wXSkKKyAgICAgIEFkZHJlc3MubmV3
KGNvZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkKKyAgICBlbHNl
CisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBk
ZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICBpZiBvZmZz
ZXQudmFsdWUgIT0gMAorICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAg
ICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbb2Zmc2V0LCB0
bXBdKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgImFkZHAiLCBb
YmFzZSwgdG1wXSkKKyAgICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgdG1wLCBpbmRleCwg
c2NhbGUsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCisgICAgZWxzZQorICAgICAgc2Vs
ZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIGFy
bVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNSZWN1cnNlKGxpc3QpCisgICAgdG1wID0gVG1wLm5l
dyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmln
aW4sICJtb3ZlIiwgW2FkZHJlc3MsIHRtcF0pCisgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwg
dG1wLCBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIDApKQorICBlbmQKK2VuZAorCitkZWYgYXJt
VjdMb3dlck1hbGZvcm1lZEFkZHJlc3NlcyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5l
YWNoIHsKKyAgICB8IG5vZGUgfAorICAgIG5ld0xpc3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9y
bWVkQWRkcmVzc2VzUmVjdXJzZShuZXdMaXN0KQorICB9CisgIG5ld0xpc3QKK2VuZAorCisjCisj
IExvd2VyaW5nIG9mIG1hbGZvcm1lZCBhZGRyZXNzZXMgaW4gZG91YmxlIGxvYWRzIGFuZCBzdG9y
ZXMuIEZvciBleGFtcGxlOgorIworIyBsb2FkZCBbZm9vLCBiYXIsIDhdLCBiYXoKKyMKKyMgYmVj
b21lczoKKyMKKyMgbGVhcCBbZm9vLCBiYXIsIDhdLCB0bXAKKyMgbG9hZGQgW3RtcF0sIGJhegor
IworCitjbGFzcyBOb2RlCisgIGRlZiBhcm1WN0RvdWJsZUFkZHJlc3MobGlzdCkKKyAgICBzZWxm
CisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJtVjdEb3VibGVBZGRyZXNz
KGxpc3QpCisgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgIGxpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJsZWFwIiwgW3NlbGYsIHRtcF0pCisgICAgQWRk
cmVzcy5uZXcoY29kZU9yaWdpbiwgdG1wLCBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIDApKQor
ICBlbmQKK2VuZAorCitkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc0RvdWJsZShsaXN0
KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIGlmIG5v
ZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdoZW4g
ImxvYWRkIgorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmln
aW4sICJsb2FkZCIsIFtub2RlLm9wZXJhbmRzWzBdLmFybVY3RG91YmxlQWRkcmVzcyhuZXdMaXN0
KSwgbm9kZS5vcGVyYW5kc1sxXV0pCisgICAgICB3aGVuICJzdG9yZWQiCisgICAgICAgIG5ld0xp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInN0b3JlZCIsIFtub2RlLm9w
ZXJhbmRzWzBdLCBub2RlLm9wZXJhbmRzWzFdLmFybVY3RG91YmxlQWRkcmVzcyhuZXdMaXN0KV0p
CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgZW5kCisgICAgZWxz
ZQorICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisK
KyMKKyMgTG93ZXJpbmcgb2YgbWlzcGxhY2VkIGltbWVkaWF0ZXMuIEZvciBleGFtcGxlOgorIwor
IyBzdG9yZWkgMCwgW2Zvb10KKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUgMCwgdG1wCisj
IHN0b3JlaSB0bXAsIFtmb29dCisjCisKK2RlZiBhcm1WN0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRl
cyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAg
IGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAg
IHdoZW4gInN0b3JlaSIsICJzdG9yZXAiCisgICAgICAgIG9wZXJhbmRzID0gbm9kZS5vcGVyYW5k
cworICAgICAgICBuZXdPcGVyYW5kcyA9IFtdCisgICAgICAgIG9wZXJhbmRzLmVhY2ggeworICAg
ICAgICAgIHwgb3BlcmFuZCB8CisgICAgICAgICAgaWYgb3BlcmFuZC5pc19hPyBJbW1lZGlhdGUK
KyAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCA6Z3ByKQorICAg
ICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAi
bW92ZSIsIFtvcGVyYW5kLCB0bXBdKQorICAgICAgICAgICAgbmV3T3BlcmFuZHMgPDwgdG1wCisg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3T3BlcmFuZHMgPDwgb3BlcmFuZAorICAgICAg
ICAgIGVuZAorICAgICAgICB9CisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5v
ZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIG5ld09wZXJhbmRzKQorICAgICAgZWxzZQorICAg
ICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIG5ld0xpc3Qg
PDwgbm9kZQorICAgIGVuZAorICB9CisgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9m
IG1hbGZvcm1lZCBpbW1lZGlhdGVzIGV4Y2VwdCB3aGVuIHVzZWQgaW4gYSAibW92ZSIgaW5zdHJ1
Y3Rpb24uCisjIEZvciBleGFtcGxlOgorIworIyBhZGRwIDY0MjY0MSwgZm9vCisjCisjIHdpbGwg
YmVjb21lOgorIworIyBtb3ZlIDY0MjY0MSwgdG1wCisjIGFkZHAgdG1wLCBmb28KKyMKKworY2xh
c3MgTm9kZQorICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3Qp
CisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUuYXJtVjdMb3dl
ck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgfQorICBlbmQKK2VuZAorCitj
bGFzcyBBZGRyZXNzCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2Uo
bGlzdCkKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJt
VjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgc2VsZgorICBlbmQK
K2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJ
bW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgSW1t
ZWRpYXRlCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkK
KyAgICBpZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAgIHRtcCA9IFRtcC5uZXcoY29k
ZU9yaWdpbiwgOmdwcikKKyAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4s
ICJtb3ZlIiwgW3NlbGYsIHRtcF0pCisgICAgICB0bXAKKyAgICBlbHNlCisgICAgICBzZWxmCisg
ICAgZW5kCisgIGVuZAorZW5kCisKK2RlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlcyhs
aXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIGlm
IG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdo
ZW4gIm1vdmUiCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgd2hlbiAiYWRkaSIsICJh
ZGRwIiwgImFkZGlzIiwgInN1YmkiLCAic3VicCIsICJzdWJpcyIKKyAgICAgICAgaWYgbm9kZS5v
cGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgYW5kCisgICAgICAgICAgICBub2RlLm9wZXJhbmRz
WzBdLnZhbHVlIDwgMCBhbmQKKyAgICAgICAgICAgIG5vZGUub3BlcmFuZHNbMF0udmFsdWUgPj0g
MjU1IGFuZAorICAgICAgICAgICAgbm9kZS5vcGVyYW5kcy5zaXplID09IDIKKyAgICAgICAgICBp
ZiBub2RlLm9wY29kZSA9fiAvYWRkLworICAgICAgICAgICAgbmV3T3Bjb2RlID0gInN1YiIgKyBu
b2RlLm9wY29kZVstMS4uLTFdCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3T3Bjb2Rl
ID0gImFkZCIgKyBub2RlLm9wY29kZVstMS4uLTFdCisgICAgICAgICAgZW5kCisgICAgICAgICAg
bmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBuZXdPcGNvZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ltbWVkaWF0ZS5uZXcoLW5vZGUu
b3BlcmFuZHNbMF0udmFsdWUpXSArIG5vZGUub3BlcmFuZHNbMS4uLTFdKQorICAgICAgICBlbHNl
CisgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVz
UmVjdXJzZShuZXdMaXN0KQorICAgICAgICBlbmQKKyAgICAgIHdoZW4gIm11bGkiCisgICAgICAg
IGlmIG5vZGUub3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICAgdG1wID0gVG1w
Lm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSkKKyAg
ICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtdWxp
IiwgW3RtcF0gKyBub2RlLm9wZXJhbmRzWzEuLi0xXSkKKyAgICAgICAgZWxzZQorICAgICAgICAg
IG5ld0xpc3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobmV3
TGlzdCkKKyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZS5h
cm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobmV3TGlzdCkKKyAgICAgIGVuZAor
ICAgIGVsc2UKKyAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgIGVuZAorICB9CisgIG5ld0xpc3QK
K2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1pc3BsYWNlZCBhZGRyZXNzZXMuIEZvciBleGFtcGxl
OgorIworIyBhZGRpIGZvbywgW2Jhcl0KKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIGxvYWRpIFti
YXJdLCB0bXAKKyMgYWRkaSBmb28sIHRtcAorIyBzdG9yZWkgdG1wLCBbYmFyXQorIworIyBBbm90
aGVyIGV4YW1wbGU6CisjCisjIGFkZGkgW2Zvb10sIGJhcgorIworIyB3aWxsIGJlY29tZToKKyMK
KyMgbG9hZGkgW2Zvb10sIHRtcAorIyBhZGRpIHRtcCwgYmFyCisjCisKK2RlZiBhcm1WN0FzUmVn
aXN0ZXIocHJlTGlzdCwgcG9zdExpc3QsIG9wZXJhbmQsIHN1ZmZpeCwgbmVlZFN0b3JlKQorICBy
ZXR1cm4gb3BlcmFuZCB1bmxlc3Mgb3BlcmFuZC5hZGRyZXNzPworICAKKyAgdG1wID0gVG1wLm5l
dyhvcGVyYW5kLmNvZGVPcmlnaW4sIGlmIHN1ZmZpeCA9PSAiZCIgdGhlbiA6ZnByIGVsc2UgOmdw
ciBlbmQpCisgIHByZUxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwg
ImxvYWQiICsgc3VmZml4LCBbb3BlcmFuZCwgdG1wXSkKKyAgaWYgbmVlZFN0b3JlCisgICAgcG9z
dExpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgInN0b3JlIiArIHN1
ZmZpeCwgW3RtcCwgb3BlcmFuZF0pCisgIGVuZAorICB0bXAKK2VuZAorCitkZWYgYXJtVjdBc1Jl
Z2lzdGVycyhwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFuZHMsIHN1ZmZpeCkKKyAgbmV3T3BlcmFu
ZHMgPSBbXQorICBvcGVyYW5kcy5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgb3BlcmFuZCwgaW5k
ZXggfAorICAgIG5ld09wZXJhbmRzIDw8IGFybVY3QXNSZWdpc3RlcihwcmVMaXN0LCBwb3N0TGlz
dCwgb3BlcmFuZCwgc3VmZml4LCBpbmRleCA9PSBvcGVyYW5kcy5zaXplIC0gMSkKKyAgfQorICBu
ZXdPcGVyYW5kcworZW5kCisKK2RlZiBhcm1WN0xvd2VyTWlzcGxhY2VkQWRkcmVzc2VzKGxpc3Qp
CisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9kZSB8CisgICAgaWYgbm9k
ZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgcG9zdEluc3RydWN0aW9ucyA9IFtdCisgICAgICBj
YXNlIG5vZGUub3Bjb2RlCisgICAgICB3aGVuICJhZGRpIiwgImFkZHAiLCAiYWRkaXMiLCAiYW5k
aSIsICJhbmRwIiwgImxzaGlmdGkiLCAibXVsaSIsICJuZWdpIiwgIm5vdGkiLCAib3JpIiwgIm9y
aXMiLAorICAgICAgICAib3JwIiwgInJzaGlmdGkiLCAidXJzaGlmdGkiLCAic3ViaSIsICJzdWJw
IiwgInN1YmlzIiwgInhvcmkiLCAieG9ycCIsIC9eYmkvLCAvXmJwLywgL15idGkvLAorICAgICAg
ICAvXmJ0cC8sIC9eY2kvLCAvXmNwLywgL150aS8KKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJt
VjdBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAi
aSIpKQorICAgICAgd2hlbiAiYmJlcSIsICJiYm5lcSIsICJiYmEiLCAiYmJhZXEiLCAiYmJiIiwg
ImJiYmVxIiwgImJ0Ym8iLCAiYnRieiIsICJidGJueiIsICJ0YnoiLCAidGJueiIsCisgICAgICAg
ICJ0Ym8iCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdp
biwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwg
cG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImIiKSkKKyAgICAgIHdoZW4gImJiZ3Qi
LCAiYmJndGVxIiwgImJibHQiLCAiYmJsdGVxIiwgImJ0YnMiLCAidGJzIgorICAgICAgICBuZXdM
aXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhcm1WN0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5v
ZGUub3BlcmFuZHMsICJicyIpKQorICAgICAgd2hlbiAiYWRkZCIsICJkaXZkIiwgInN1YmQiLCAi
bXVsZCIsICJzcXJ0ZCIsIC9eYmQvCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9k
ZS5vcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdp
c3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImQiKSkKKyAg
ICAgIHdoZW4gImptcCIsICJjYWxsIgorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJtVjdBc1Jl
Z2lzdGVyKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHNbMF0sICJwIiwg
ZmFsc2UpXSkKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICBlbmQK
KyAgICAgIG5ld0xpc3QgKz0gcG9zdEluc3RydWN0aW9ucworICAgIGVsc2UKKyAgICAgIG5ld0xp
c3QgPDwgbm9kZQorICAgIGVuZAorICB9CisgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5n
IG9mIHJlZ2lzdGVyIHJldXNlIGluIGNvbXBhcmUgaW5zdHJ1Y3Rpb25zLiBGb3IgZXhhbXBsZToK
KyMKKyMgY2llcSB0MCwgdDEsIHQwCisjCisjIHdpbGwgYmVjb21lOgorIworIyBtb3YgdG1wLCB0
MAorIyBjaWVxIHRtcCwgdDEsIHQwCisjCisKK2RlZiBhcm1WN0xvd2VyUmVnaXN0ZXJSZXVzZShs
aXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIGlm
IG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdo
ZW4gImNpZXEiLCAiY2luZXEiLCAiY2lhIiwgImNpYWVxIiwgImNpYiIsICJjaWJlcSIsICJjaWd0
IiwgImNpZ3RlcSIsICJjaWx0IiwgImNpbHRlcSIsCisgICAgICAgICJjcGVxIiwgImNwbmVxIiwg
ImNwYSIsICJjcGFlcSIsICJjcGIiLCAiY3BiZXEiLCAiY3BndCIsICJjcGd0ZXEiLCAiY3BsdCIs
ICJjcGx0ZXEiLAorICAgICAgICAidGlvIiwgInRpcyIsICJ0aXoiLCAidGlueiIsICJ0Ym8iLCAi
dGJzIiwgInRieiIsICJ0Ym56IgorICAgICAgICBpZiBub2RlLm9wZXJhbmRzLnNpemUgPT0gMgor
ICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0gPT0gbm9kZS5vcGVyYW5kc1sxXQorICAgICAg
ICAgICAgdG1wID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICBu
ZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUu
b3BlcmFuZHNbMF0sIHRtcF0pCisgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbdG1wLCBub2RlLm9wZXJhbmRzWzFdXSkK
KyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICBl
bmQKKyAgICAgICAgZWxzZQorICAgICAgICAgIHJhaXNlICJXcm9uZyBudW1iZXIgb2YgYXJndW1l
bnRzIGF0ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG5vZGUub3BlcmFuZHMuc2l6
ZSA9PSAzCisgICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1swXSA9PSBub2RlLm9wZXJhbmRzWzJd
CisgICAgICAgICAgICB0bXAgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUi
LCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSkKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFt0bXAsIG5vZGUub3BlcmFu
ZHNbMV0sIG5vZGUub3BlcmFuZHNbMl1dKQorICAgICAgICAgIGVsc2lmIG5vZGUub3BlcmFuZHNb
MV0gPT0gbm9kZS5vcGVyYW5kc1syXQorICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhub2RlLmNv
ZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhu
b2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMV0sIHRtcF0pCisgICAgICAg
ICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bj
b2RlLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wLCBub2RlLm9wZXJhbmRzWzJdXSkKKyAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICBlbmQKKyAgICAg
ICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgZW5kCisg
ICAgZWxzZQorICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAor
ZW5kCisKKyMKKyMgTGVhIHN1cHBvcnQuCisjCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIGFybVY3
RW1pdExlYShkZXN0aW5hdGlvbikKKyAgICBpZiBkZXN0aW5hdGlvbiA9PSBiYXNlCisgICAgICAk
YXNtLnB1dHMgImFkZHMgI3tkZXN0aW5hdGlvbi5hcm1WN09wZXJhbmR9LCBcIyN7b2Zmc2V0LnZh
bHVlfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgImFkZHMgI3tkZXN0aW5hdGlvbi5hcm1W
N09wZXJhbmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSwgXCMje29mZnNldC52YWx1ZX0iCisgICAg
ZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJtVjdFbWl0TGVhKGRl
c3RpbmF0aW9uKQorICAgIHJhaXNlICJNYWxmb3JtZWQgQmFzZUluZGV4LCBvZmZzZXQgc2hvdWxk
IGJlIHplcm8gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG9mZnNldC52YWx1ZSA9PSAw
CisgICAgJGFzbS5wdXRzICJhZGQudyAje2Rlc3RpbmF0aW9uLmFybVY3T3BlcmFuZH0sICN7YmFz
ZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGVTaGlm
dH0iCisgIGVuZAorZW5kCisKKyMgRklYTUU6IHdlIGNvdWxkIHN1cHBvcnQgQWJzb2x1dGVBZGRy
ZXNzIGZvciBsZWEsIGJ1dCB3ZSBkb24ndC4KKworIworIyBBY3R1YWwgbG93ZXJpbmcgY29kZSBm
b2xsb3dzLgorIworCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXJBUk12NworICAgIG15TGlz
dCA9IEBsaXN0CisgICAgCisgICAgIyBWZXJpZnkgdGhhdCB3ZSB3aWxsIG9ubHkgc2VlIGluc3Ry
dWN0aW9ucyBhbmQgbGFiZWxzLgorICAgIG15TGlzdC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8Cisg
ICAgICB1bmxlc3Mgbm9kZS5pc19hPyBJbnN0cnVjdGlvbiBvcgorICAgICAgICAgIG5vZGUuaXNf
YT8gTGFiZWwgb3IKKyAgICAgICAgICBub2RlLmlzX2E/IExvY2FsTGFiZWwgb3IKKyAgICAgICAg
ICBub2RlLmlzX2E/IFNraXAKKyAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQgI3tub2RlLmluc3Bl
Y3R9IGF0ICN7bm9kZS5jb2RlT3JpZ2lufSIgCisgICAgICBlbmQKKyAgICB9CisgICAgCisgICAg
bXlMaXN0ID0gYXJtVjdMb3dlckJyYW5jaE9wcyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdM
b3dlclNoaWZ0T3BzKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWFsZm9ybWVkQWRk
cmVzc2VzKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2Vz
RG91YmxlKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRl
cyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXMobXlM
aXN0KQorICAgIG15TGlzdCA9IGFybVY3TG93ZXJNaXNwbGFjZWRBZGRyZXNzZXMobXlMaXN0KQor
ICAgIG15TGlzdCA9IGFybVY3TG93ZXJSZWdpc3RlclJldXNlKG15TGlzdCkKKyAgICBteUxpc3Qg
PSBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFyaWVzKG15TGlzdCwgOmdwciwgQVJNdjdfRVhUUkFf
R1BSUykKKyAgICBteUxpc3QgPSBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFyaWVzKG15TGlzdCwg
OmZwciwgQVJNdjdfRVhUUkFfRlBSUykKKyAgICBteUxpc3QuZWFjaCB7CisgICAgICB8IG5vZGUg
fAorICAgICAgbm9kZS5sb3dlcigiQVJNdjciKQorICAgIH0KKyAgZW5kCitlbmQKKworZGVmIGFy
bVY3T3BlcmFuZHMob3BlcmFuZHMpCisgIG9wZXJhbmRzLm1hcHt8dnwgdi5hcm1WN09wZXJhbmR9
LmpvaW4oIiwgIikKK2VuZAorCitkZWYgYXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpCisg
IGFybVY3T3BlcmFuZHMoW29wZXJhbmRzWy0xXV0gKyBvcGVyYW5kc1swLi4tMl0pCitlbmQKKwor
ZGVmIGVtaXRBcm1WN0NvbXBhY3Qob3Bjb2RlMiwgb3Bjb2RlMywgb3BlcmFuZHMpCisgIGlmIG9w
ZXJhbmRzLnNpemUgPT0gMworICAgICRhc20ucHV0cyAiI3tvcGNvZGUzfSAje2FybVY3RmxpcHBl
ZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgIGVsc2UKKyAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHMu
c2l6ZSA9PSAyCisgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQK
KyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICRhc20ucHV0cyAiI3tv
cGNvZGUzfSAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdP
cGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgIGVsc2UKKyAgICAgICRh
c20ucHV0cyAiI3tvcGNvZGUyfSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisg
ICAgZW5kCisgIGVuZAorZW5kCisKK2RlZiBlbWl0QXJtVjcob3Bjb2RlLCBvcGVyYW5kcykKKyAg
aWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3thcm1WN0Zs
aXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICBlbHNlCisgICAgcmFpc2UgdW5sZXNzIG9wZXJh
bmRzLnNpemUgPT0gMgorICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0uYXJt
VjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFy
bVY3T3BlcmFuZH0iCisgIGVuZAorZW5kCisKK2RlZiBlbWl0QXJtVjdEb3VibGVCcmFuY2goYnJh
bmNoT3Bjb2RlLCBvcGVyYW5kcykKKyAgJGFzbS5wdXRzICJ2Y21wZS5mNjQgI3thcm1WN09wZXJh
bmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICRhc20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2Ny
IgorICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIK
K2VuZAorCitkZWYgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgdmFsdWUgPSBvcGVyYW5kc1sw
XQorICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgd2hlbiAyCisgICAgbWFzayA9IEltbWVkaWF0ZS5u
ZXcoY29kZU9yaWdpbiwgLTEpCisgIHdoZW4gMworICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICBl
bHNlCisgICAgcmFpc2UgIkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5kcyBidXQgZ290ICN7b3BlcmFu
ZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgZW5kCisgIAorICBpZiBtYXNrLmlz
X2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQorICAgICRhc20ucHV0cyAidHN0ICN7
dmFsdWUuYXJtVjdPcGVyYW5kfSwgI3t2YWx1ZS5hcm1WN09wZXJhbmR9IgorICBlbHNpZiBtYXNr
LmlzX2E/IEltbWVkaWF0ZQorICAgICRhc20ucHV0cyAidHN0LncgI3t2YWx1ZS5hcm1WN09wZXJh
bmR9LCAje21hc2suYXJtVjdPcGVyYW5kfSIKKyAgZWxzZQorICAgICRhc20ucHV0cyAidHN0ICN7
dmFsdWUuYXJtVjdPcGVyYW5kfSwgI3ttYXNrLmFybVY3T3BlcmFuZH0iCisgIGVuZAorZW5kCisK
K2RlZiBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCBjb2RlKQorICAkYXNtLnB1dHMgIm1vdnMg
I3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCBcIzAiCisgICRhc20ucHV0cyAiY21wICN7b3Bl
cmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAk
YXNtLnB1dHMgIml0ICN7Y29kZX0iCisgICRhc20ucHV0cyAibW92I3tjb2RlfSAje29wZXJhbmRz
WzJdLmFybVY3T3BlcmFuZH0sIFwjMSIKK2VuZAorCitkZWYgZW1pdEFybVY3VGVzdFNldChvcGVy
YW5kcywgY29kZSkKKyAgJGFzbS5wdXRzICJtb3ZzICN7b3BlcmFuZHNbLTFdLmFybVY3T3BlcmFu
ZH0sIFwjMCIKKyAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgJGFzbS5wdXRzICJpdCAje2Nv
ZGV9IgorICAkYXNtLnB1dHMgIm1vdiN7Y29kZX0gI3tvcGVyYW5kc1stMV0uYXJtVjdPcGVyYW5k
fSwgXCMxIgorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgIGRlZiBsb3dlckFSTXY3CisgICAg
JGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICBjYXNlIG9wY29kZQorICAgIHdoZW4g
ImFkZGkiLCAiYWRkcCIsICJhZGRpcyIKKyAgICAgIGlmIG9wY29kZSA9PSAiYWRkaXMiCisgICAg
ICAgIHN1ZmZpeCA9ICJzIgorICAgICAgZWxzZQorICAgICAgICBzdWZmaXggPSAiIgorICAgICAg
ZW5kCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IElt
bWVkaWF0ZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJ
RAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAg
ICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCBzdWZmaXguZW1wdHk/CisgICAgICAg
ICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAkYXNtLnB1
dHMgIm1vdiAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdP
cGVyYW5kfSIKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICRhc20ucHV0
cyAiYWRkcyAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdP
cGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICBlbmQKKyAgICAg
IGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJ
RAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAg
ICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAk
YXNtLnB1dHMgImFkZHMgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAg
ZWxzZQorICAgICAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgICB1
bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgICAk
YXNtLnB1dHMgImFkZHMgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAg
ICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRzICJhZGQje3N1ZmZpeH0g
I3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICBlbmQKKyAgICAgIGVu
ZAorICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgIGVtaXRBcm1WN0NvbXBhY3QoImFuZHMi
LCAiYW5kIiwgb3BlcmFuZHMpCisgICAgd2hlbiAib3JpIiwgIm9ycCIKKyAgICAgIGVtaXRBcm1W
N0NvbXBhY3QoIm9ycnMiLCAib3JyIiwgb3BlcmFuZHMpCisgICAgd2hlbiAib3JpcyIKKyAgICAg
IGVtaXRBcm1WN0NvbXBhY3QoIm9ycnMiLCAib3JycyIsIG9wZXJhbmRzKQorICAgIHdoZW4gInhv
cmkiLCAieG9ycCIKKyAgICAgIGVtaXRBcm1WN0NvbXBhY3QoImVvcnMiLCAiZW9yIiwgb3BlcmFu
ZHMpCisgICAgd2hlbiAibHNoaWZ0aSIKKyAgICAgIGVtaXRBcm1WN0NvbXBhY3QoImxzbHMiLCAi
bHNscyIsIG9wZXJhbmRzKQorICAgIHdoZW4gInJzaGlmdGkiCisgICAgICBlbWl0QXJtVjdDb21w
YWN0KCJhc3JzIiwgImFzcnMiLCBvcGVyYW5kcykKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAg
IGVtaXRBcm1WN0NvbXBhY3QoImxzcnMiLCAibHNycyIsIG9wZXJhbmRzKQorICAgIHdoZW4gIm11
bGkiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDIgb3Igb3BlcmFuZHNbMF0gPT0gb3BlcmFu
ZHNbMl0gb3Igb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgZW1pdEFybVY3KCJt
dWxzIiwgb3BlcmFuZHMpCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAibW92ICN7b3Bl
cmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAg
ICAgICAkYXNtLnB1dHMgIm11bHMgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCAje29wZXJh
bmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICAg
IGVuZAorICAgIHdoZW4gInN1YmkiLCAic3VicCIsICJzdWJpcyIKKyAgICAgIGVtaXRBcm1WN0Nv
bXBhY3QoInN1YnMiLCAic3VicyIsIG9wZXJhbmRzKQorICAgIHdoZW4gIm5lZ2kiCisgICAgICAk
YXNtLnB1dHMgInJzYnMgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBd
LmFybVY3T3BlcmFuZH0sIFwjMCIKKyAgICB3aGVuICJub3RpIgorICAgICAgJGFzbS5wdXRzICJt
dm5zICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJh
bmR9IgorICAgIHdoZW4gImxvYWRpIiwgImxvYWRwIgorICAgICAgJGFzbS5wdXRzICJsZHIgI3th
cm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gInN0b3JlaSIsICJzdG9y
ZXAiCisgICAgICAkYXNtLnB1dHMgInN0ciAje2FybVY3T3BlcmFuZHMob3BlcmFuZHMpfSIKKyAg
ICB3aGVuICJsb2FkYiIKKyAgICAgICRhc20ucHV0cyAibGRyYiAje2FybVY3RmxpcHBlZE9wZXJh
bmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAibG9hZGJzIgorICAgICAgJGFzbS5wdXRzICJsZHJz
Yi53ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJzdG9yZWIi
CisgICAgICAkYXNtLnB1dHMgInN0cmIgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAg
d2hlbiAibG9hZGgiCisgICAgICAkYXNtLnB1dHMgImxkcmggI3thcm1WN0ZsaXBwZWRPcGVyYW5k
cyhvcGVyYW5kcyl9IgorICAgIHdoZW4gImxvYWRocyIKKyAgICAgICRhc20ucHV0cyAibGRyc2gu
dyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAic3RvcmVoIgor
ICAgICAgJGFzbS5wdXRzICJzdHJoICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdo
ZW4gImxvYWRkIgorICAgICAgJGFzbS5wdXRzICJ2bGRyLjY0ICN7YXJtVjdGbGlwcGVkT3BlcmFu
ZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJzdG9yZWQiCisgICAgICAkYXNtLnB1dHMgInZzdHIu
NjQgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAiYWRkZCIKKyAgICAgIGVt
aXRBcm1WNygidmFkZC5mNjQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJkaXZkIgorICAgICAgZW1p
dEFybVY3KCJ2ZGl2LmY2NCIsIG9wZXJhbmRzKQorICAgIHdoZW4gInN1YmQiCisgICAgICBlbWl0
QXJtVjcoInZzdWIuZjY0Iiwgb3BlcmFuZHMpCisgICAgd2hlbiAibXVsZCIKKyAgICAgIGVtaXRB
cm1WNygidm11bC5mNjQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJzcXJ0ZCIKKyAgICAgICRhc20u
cHV0cyAidnNxcnQuZjY0ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3
aGVuICJjaTJkIgorICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMV0uYXJtVjdTaW5n
bGV9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAkYXNtLnB1dHMgInZjdnQu
ZjY0LnMzMiAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdT
aW5nbGV9IgorICAgIHdoZW4gImJkZXEiCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJl
cSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkbmVxIgorICAgICAgJGFzbS5wdXRzICJ2Y21wZS5m
NjQgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgInZt
cnMgYXBzcl9uemN2LCBmcHNjciIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlx
dWUoImJkbmVxIikKKyAgICAgICRhc20ucHV0cyAiYnZzICN7TGFiZWxSZWZlcmVuY2UubmV3KGNv
ZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS5hc21MYWJlbH0iCisgICAgICAkYXNtLnB1dHMgImJuZSAj
e29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJBUk12NyIp
CisgICAgd2hlbiAiYmRndCIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmd0Iiwgb3Bl
cmFuZHMpCisgICAgd2hlbiAiYmRndGVxIgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJi
Z2UiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGx0IgorICAgICAgZW1pdEFybVY3RG91YmxlQnJh
bmNoKCJibWkiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGx0ZXEiCisgICAgICBlbWl0QXJtVjdE
b3VibGVCcmFuY2goImJscyIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkZXF1biIKKyAgICAgICRh
c20ucHV0cyAidmNtcGUuZjY0ICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAg
ICAgJGFzbS5wdXRzICJ2bXJzIGFwc3JfbnpjdiwgZnBzY3IiCisgICAgICAkYXNtLnB1dHMgImJ2
cyAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiYmVxICN7b3BlcmFu
ZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJkbmVxdW4iCisgICAgICBlbWl0QXJtVjdEb3Vi
bGVCcmFuY2goImJuZSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkZ3R1biIKKyAgICAgIGVtaXRB
cm1WN0RvdWJsZUJyYW5jaCgiYmhpIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRndGVxdW4iCisg
ICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJwbCIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJk
bHR1biIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmx0Iiwgb3BlcmFuZHMpCisgICAg
d2hlbiAiYmRsdGVxdW4iCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJsZSIsIG9wZXJh
bmRzKQorICAgIHdoZW4gImJ0ZDJpIgorICAgICAgIyBGSVhNRTogbWF5IGJlIGEgZ29vZCBpZGVh
IHRvIGp1c3QgZ2V0IHJpZCBvZiB0aGlzIGluc3RydWN0aW9uLCBzaW5jZSB0aGUgaW50ZXJwcmV0
ZXIKKyAgICAgICMgY3VycmVudGx5IGRvZXMgbm90IHVzZSBpdC4KKyAgICAgIHJhaXNlICJBUk12
NyBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3Bjb2RlIHlldCwgI3tjb2RlT3JpZ2lufSIKKyAgICB3
aGVuICJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJ2Y3Z0LnMzMi5mNjQgI3tBUk12N19TQ1JBVENI
X0ZQUi5hcm1WN1NpbmdsZX0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICRh
c20ucHV0cyAidm1vdiAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7QVJNdjdfU0NSQVRD
SF9GUFIuYXJtVjdTaW5nbGV9IgorICAgIHdoZW4gImJjZDJpIgorICAgICAgJGFzbS5wdXRzICJ2
Y3Z0LnMzMi5mNjQgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0sICN7b3BlcmFuZHNb
MF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzFdLmFy
bVY3T3BlcmFuZH0sICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJtVjdTaW5nbGV9IgorICAgICAgJGFz
bS5wdXRzICJ2Y3Z0LmY2NC5zMzIgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN09wZXJhbmR9LCAj
e0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJy
YW5jaCgiYm5lIiwgW0FSTXY3X1NDUkFUQ0hfRlBSLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMl1d
KQorICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29w
ZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgICAkYXNtLnB1dHMgImJlcSAje29wZXJhbmRz
WzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJtb3ZkeiIKKyAgICAgICMgRklYTUU6IGVpdGhlciBz
dXBwb3J0IHRoaXMgb3IgcmVtb3ZlIGl0LgorICAgICAgcmFpc2UgIkFSTXY3IGRvZXMgbm90IHN1
cHBvcnQgdGhpcyBvcGNvZGUgeWV0LCAje2NvZGVPcmlnaW59IgorICAgIHdoZW4gInBvcCIKKyAg
ICAgICRhc20ucHV0cyAicG9wICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICB3aGVu
ICJwdXNoIgorICAgICAgJGFzbS5wdXRzICJwdXNoICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5k
fSIKKyAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgaWYgb3BlcmFuZHNb
MF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIGFybVY3TW92ZUltbWVkaWF0ZShvcGVyYW5kc1sw
XS52YWx1ZSwgb3BlcmFuZHNbMV0pCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAibW92
ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgIGVuZAorICAgIHdoZW4g
Im5vcCIKKyAgICAgICRhc20ucHV0cyAibm9wIgorICAgIHdoZW4gImJpZXEiLCAiYnBlcSIsICJi
YmVxIgorICAgICAgaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAg
ICAgICRhc20ucHV0cyAidHN0ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgZWxzaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09
IG9wZXJhbmRzWzFdCisgICAgICAgICRhc20ucHV0cyAidHN0ICN7b3BlcmFuZHNbMF0uYXJtVjdP
cGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgZWxzZQorICAgICAg
ICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAg
IGVuZAorICAgICAgJGFzbS5wdXRzICJiZXEgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAg
d2hlbiAiYmluZXEiLCAiYnBuZXEiLCAiYmJuZXEiCisgICAgICBpZiBJbW1lZGlhdGUubmV3KG5p
bCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5kc1sx
XS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgICBlbHNp
ZiBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMV0KKyAgICAgICAgJGFzbS5wdXRz
ICJ0c3QgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3Bl
cmFuZH0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5k
cyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgZW5kCisgICAgICAkYXNtLnB1dHMgImJuZSAje29w
ZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWEiLCAiYnBhIiwgImJiYSIKKyAgICAg
ICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAg
JGFzbS5wdXRzICJiaGkgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmlhZXEi
LCAiYnBhZXEiLCAiYmJhZXEiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMo
b3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmhzICN7b3BlcmFuZHNbMl0uYXNt
TGFiZWx9IgorICAgIHdoZW4gImJpYiIsICJicGIiLCAiYmJiIgorICAgICAgJGFzbS5wdXRzICJj
bXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgImJs
byAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWJlcSIsICJicGJlcSIsICJi
YmJlcSIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4x
XSl9IgorICAgICAgJGFzbS5wdXRzICJibHMgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAg
d2hlbiAiYmlndCIsICJicGd0IiwgImJiZ3QiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3
T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmd0ICN7b3BlcmFu
ZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJpZ3RlcSIsICJicGd0ZXEiLCAiYmJndGVxIgor
ICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisg
ICAgICAkYXNtLnB1dHMgImJnZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJi
aWx0IiwgImJwbHQiLCAiYmJsdCIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5k
cyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5wdXRzICJibHQgI3tvcGVyYW5kc1syXS5h
c21MYWJlbH0iCisgICAgd2hlbiAiYmlsdGVxIiwgImJwbHRlcSIsICJiYmx0ZXEiCisgICAgICAk
YXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRh
c20ucHV0cyAiYmxlICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJ0aXoiLCAi
YnRweiIsICJidGJ6IgorICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgICAgICRhc20u
cHV0cyAiYmVxICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJidGlueiIsICJi
dHBueiIsICJidGJueiIKKyAgICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgICAgICAkYXNt
LnB1dHMgImJuZSAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYnRpbyIsICJi
dHBvIiwgImJ0Ym8iCisgICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICAgICAgJGFzbS5w
dXRzICJidnMgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJ0aXMiLCAiYnRw
cyIsICJidGJzIgorICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgICAgICRhc20ucHV0
cyAiYm1pICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJqbXAiCisgICAgICBp
ZiBvcGVyYW5kc1swXS5sYWJlbD8KKyAgICAgICAgJGFzbS5wdXRzICJiICN7b3BlcmFuZHNbMF0u
YXNtTGFiZWx9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgIm1vdiBwYywgI3tvcGVy
YW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgZW5kCisgICAgd2hlbiAiY2FsbCIKKyAgICAg
IGlmIG9wZXJhbmRzWzBdLmxhYmVsPworICAgICAgICAkYXNtLnB1dHMgImJseCAje29wZXJhbmRz
WzBdLmFzbUxhYmVsfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJibHggI3tvcGVy
YW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgZW5kCisgICAgd2hlbiAiYnJlYWsiCisgICAg
ICAkYXNtLnB1dHMgImJrcHQiCisgICAgd2hlbiAicmV0IgorICAgICAgJGFzbS5wdXRzICJieCBs
ciIKKyAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJh
bmRzLCAiZXEiKQorICAgIHdoZW4gImNpbmVxIiwgImNwbmVxIgorICAgICAgZW1pdEFybVY3Q29t
cGFyZShvcGVyYW5kcywgIm5lIikKKyAgICB3aGVuICJjaWEiLCAiY3BhIgorICAgICAgZW1pdEFy
bVY3Q29tcGFyZShvcGVyYW5kcywgImhpIikKKyAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAg
ICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJocyIpCisgICAgd2hlbiAiY2liIiwgImNw
YiIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJsbyIpCisgICAgd2hlbiAiY2li
ZXEiLCAiY3BiZXEiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibHMiKQorICAg
IHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJn
dCIpCisgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUo
b3BlcmFuZHMsICJnZSIpCisgICAgd2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAgZW1pdEFybVY3
Q29tcGFyZShvcGVyYW5kcywgImx0IikKKyAgICB3aGVuICJjaWx0ZXEiLCAiY3BsdGVxIgorICAg
ICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImxlIikKKyAgICB3aGVuICJ0aW8iLCAidGJv
IgorICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywgInZzIikKKyAgICB3aGVuICJ0aXMi
LCAidGJzIgorICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywgIm1pIikKKyAgICB3aGVu
ICJ0aXoiLCAidGJ6IgorICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywgImVxIikKKyAg
ICB3aGVuICJ0aW56IiwgInRibnoiCisgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAi
bmUiKQorICAgIHdoZW4gInBlZWsiCisgICAgICAkYXNtLnB1dHMgImxkciAje29wZXJhbmRzWzFd
LmFybVY3T3BlcmFuZH0sIFtzcCwgXCMje29wZXJhbmRzWzBdLnZhbHVlICogNH1dIgorICAgIHdo
ZW4gInBva2UiCisgICAgICAkYXNtLnB1dHMgInN0ciAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFu
ZH0sIFtzcCwgXCMje29wZXJhbmRzWzBdLnZhbHVlICogNH1dIgorICAgIHdoZW4gImZpaTJkIgor
ICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVy
YW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAg
d2hlbiAiZmQyaWkiCisgICAgICAkYXNtLnB1dHMgInZtb3YgI3tvcGVyYW5kc1sxXS5hcm1WN09w
ZXJhbmR9LCAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdP
cGVyYW5kfSIKKyAgICB3aGVuICJibyIKKyAgICAgICRhc20ucHV0cyAiYnZzICN7b3BlcmFuZHNb
MF0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJzIgorICAgICAgJGFzbS5wdXRzICJibWkgI3tvcGVy
YW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYnoiCisgICAgICAkYXNtLnB1dHMgImJlcSAj
e29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJibnoiCisgICAgICAkYXNtLnB1dHMg
ImJuZSAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJsZWFpIiwgImxlYXAiCisg
ICAgICBvcGVyYW5kc1swXS5hcm1WN0VtaXRMZWEob3BlcmFuZHNbMV0pCisgICAgd2hlbiAic211
bGxpIgorICAgICAgcmFpc2UgIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgdG8gc211bGwgaW4g
I3tzZWxmLmluc3BlY3R9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBvcGVyYW5kcy5s
ZW5ndGggPT0gNAorICAgICAgJGFzbS5wdXRzICJzbXVsbCAje29wZXJhbmRzWzJdLmFybVY3T3Bl
cmFuZH0sICN7b3BlcmFuZHNbM10uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09w
ZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgZWxzZQorICAgICAgcmFp
c2UgIlVuaGFuZGxlZCBvcGNvZGUgI3tvcGNvZGV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisg
ICAgZW5kCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2FzbS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hc20ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hc20ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcyIEBACisjIS91c3IvYmluL2VudiBy
dWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUu
ZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qv
c2hhMSIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZWxm
X2hhc2giCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworY2xhc3Mg
QXNzZW1ibGVyCisgIGRlZiBpbml0aWFsaXplKG91dHApCisgICAgQG91dHAgPSBvdXRwCisgICAg
QHN0YXRlID0gOmNwcAorICAgIEBjb21tZW50U3RhdGUgPSA6bm9uZQorICAgIEBjb21tZW50ID0g
bmlsCisgIGVuZAorICAKKyAgZGVmIGVudGVyQXNtCisgICAgQG91dHAucHV0cyAiYXNtICgiCisg
ICAgQHN0YXRlID0gOmFzbQorICBlbmQKKyAgCisgIGRlZiBsZWF2ZUFzbQorICAgIHB1dHNMYXN0
Q29tbWVudAorICAgIEBvdXRwLnB1dHMgIik7IgorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5kCisg
IAorICBkZWYgaW5Bc20KKyAgICBlbnRlckFzbQorICAgIHlpZWxkCisgICAgbGVhdmVBc20KKyAg
ZW5kCisgIAorICBkZWYgbGFzdENvbW1lbnQKKyAgICBpZiBAY29tbWVudAorICAgICAgcmVzdWx0
ID0gIi8vICN7QGNvbW1lbnR9IgorICAgIGVsc2UKKyAgICAgIHJlc3VsdCA9ICIiCisgICAgZW5k
CisgICAgQGNvbW1lbnRTdGF0ZSA9IDpub25lCisgICAgQGNvbW1lbnQgPSBuaWwKKyAgICByZXN1
bHQKKyAgZW5kCisgIAorICBkZWYgcHV0c0xhc3RDb21tZW50CisgICAgY29tbWVudCA9IGxhc3RD
b21tZW50CisgICAgdW5sZXNzIGNvbW1lbnQuZW1wdHk/CisgICAgICBAb3V0cC5wdXRzIGNvbW1l
bnQKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcHV0cygqbGluZSkKKyAgICByYWlzZSB1bmxl
c3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wdXRzKCJcIlxcdCIgKyBsaW5lLmpvaW4oJycp
ICsgIlxcblwiICN7bGFzdENvbW1lbnR9IikKKyAgZW5kCisgIAorICBkZWYgcHJpbnQobGluZSkK
KyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wcmludCgiXCIiICsg
bGluZSArICJcIiIpCisgIGVuZAorICAKKyAgZGVmIHB1dHNMYWJlbChsYWJlbE5hbWUpCisgICAg
cmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAgQG91dHAucHV0cygiT0ZGTElORV9BU01f
R0xPQkFMX0xBQkVMKCN7bGFiZWxOYW1lfSkgI3tsYXN0Q29tbWVudH0iKQorICBlbmQKKyAgCisg
IGRlZiBwdXRzTG9jYWxMYWJlbChsYWJlbE5hbWUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9
PSA6YXNtCisgICAgQG91dHAucHV0cygiTE9DQUxfTEFCRUxfU1RSSU5HKCN7bGFiZWxOYW1lfSkg
XCI6XFxuXCIgI3tsYXN0Q29tbWVudH0iKQorICBlbmQKKyAgCisgIGRlZiBzZWxmLmxhYmVsUmVm
ZXJlbmNlKGxhYmVsTmFtZSkKKyAgICAiXCIgU1lNQk9MX1NUUklORygje2xhYmVsTmFtZX0pIFwi
IgorICBlbmQKKyAgCisgIGRlZiBzZWxmLmxvY2FsTGFiZWxSZWZlcmVuY2UobGFiZWxOYW1lKQor
ICAgICJcIiBMT0NBTF9MQUJFTF9TVFJJTkcoI3tsYWJlbE5hbWV9KSBcIiIKKyAgZW5kCisgIAor
ICBkZWYgY29tbWVudCh0ZXh0KQorICAgIGNhc2UgQGNvbW1lbnRTdGF0ZQorICAgIHdoZW4gOm5v
bmUKKyAgICAgIEBjb21tZW50ID0gdGV4dAorICAgICAgQGNvbW1lbnRTdGF0ZSA9IDpvbmUKKyAg
ICB3aGVuIDpvbmUKKyAgICAgIEBvdXRwLnB1dHMgIi8vICN7QGNvbW1lbnR9IgorICAgICAgQG91
dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgICAgIEBjb21tZW50ID0gbmlsCisgICAgICBAY29tbWVu
dFN0YXRlID0gOm1hbnkKKyAgICB3aGVuIDptYW55CisgICAgICBAb3V0cC5wdXRzICIvLyAje3Rl
eHR9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorZW5kCisKK2FzbUZp
bGUgPSBBUkdWLnNoaWZ0CitvZmZzZXRzRmlsZSA9IEFSR1Yuc2hpZnQKK291dHB1dEZsbm0gPSBB
UkdWLnNoaWZ0CisKKyRzdGRlcnIucHV0cyAib2ZmbGluZWFzbTogUGFyc2luZyAje2FzbUZpbGV9
IGFuZCAje29mZnNldHNGaWxlfSBhbmQgY3JlYXRpbmcgYXNzZW1ibHkgZmlsZSAje291dHB1dEZs
bm19LiIKKworb2Zmc2V0c0xpc3QsIGNvbmZpZ0luZGV4ID0gb2Zmc2V0c0FuZENvbmZpZ3VyYXRp
b25JbmRleChvZmZzZXRzRmlsZSkKK2lucHV0RGF0YSA9IElPOjpyZWFkKGFzbUZpbGUpCisKK2lu
cHV0SGFzaCA9CisgICIvLyBvZmZsaW5lYXNtIGlucHV0IGhhc2g6ICIgKyBEaWdlc3Q6OlNIQTEu
aGV4ZGlnZXN0KGlucHV0RGF0YSkgKworICAiICIgKyBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KChv
ZmZzZXRzTGlzdCArIFtjb25maWdJbmRleF0pLmpvaW4oJyAnKSkgKworICAiICIgKyBzZWxmSGFz
aAorCitpZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0RmxubQorICBGaWxlLm9wZW4ob3V0cHV0Rmxu
bSwgInIiKSB7CisgICAgfCBpbnAgfAorICAgIGZpcnN0TGluZSA9IGlucC5nZXRzCisgICAgaWYg
Zmlyc3RMaW5lIGFuZCBmaXJzdExpbmUuY2hvbXAgPT0gaW5wdXRIYXNoCisgICAgICAkc3RkZXJy
LnB1dHMgIm9mZmxpbmVhc206IE5vdGhpbmcgY2hhbmdlZC4iCisgICAgICBleGl0IDAKKyAgICBl
bmQKKyAgfQorZW5kCisKK0ZpbGUub3BlbihvdXRwdXRGbG5tLCAidyIpIHsKKyAgfCBvdXRwIHwK
KyAgJG91dHB1dCA9IG91dHAKKyAgJG91dHB1dC5wdXRzIGlucHV0SGFzaAorICAKKyAgJGFzbSA9
IEFzc2VtYmxlci5uZXcoJG91dHB1dCkKKyAgCisgIGFzdCA9IHBhcnNlKGxleChpbnB1dERhdGEp
KQorICAKKyAgZm9yU2V0dGluZ3MoY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdClbY29u
ZmlnSW5kZXhdLCBhc3QpIHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBi
YWNrZW5kIHwKKyAgICBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgICAg
bG93TGV2ZWxBU1QgPSBsb3dMZXZlbEFTVC5yZXNvbHZlKCpidWlsZE9mZnNldHNNYXAobG93TGV2
ZWxBU1QsIG9mZnNldHNMaXN0KSkKKyAgICBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0
ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCkgeworICAgICAgJGFzbS5pbkFzbSB7Cisg
ICAgICAgIGxvd0xldmVsQVNULmxvd2VyKGJhY2tlbmQpCisgICAgICB9CisgICAgfQorICB9Cit9
CisKKyRzdGRlcnIucHV0cyAib2ZmbGluZWFzbTogQXNzZW1ibHkgZmlsZSAje291dHB1dEZsbm19
IHN1Y2Nlc3NmdWxseSBnZW5lcmF0ZWQuIgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9hc3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMzkgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMKKyMgQmFzZSB1dGlsaXR5IHR5cGVzIGZv
ciB0aGUgQVNULgorIworCisjIFZhbGlkIG1ldGhvZHMgZm9yIE5vZGU6CisjCisjIG5vZGUuY2hp
bGRyZW4gLT4gUmV0dXJucyBhbiBhcnJheSBvZiBpbW1lZGlhdGUgY2hpbGRyZW4uCisjCisjIG5v
ZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgc3RyaWN0IGRlc2NlbmRh
bnRzIChjaGlsZHJlbgorIyAgICAgYW5kIGNoaWxkcmVuIG9mIGNoaWxkcmVuLCB0cmFuc2l0aXZl
bHkpLgorIworIyBub2RlLmZsYXR0ZW4gLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRo
ZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5kCisjICAgICB0aGUgbm9kZSBpdHNlbGYuCisjCisjIG5v
ZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aG9zZSBlbGVt
ZW50cyBpbgorIyAgICAgbm9kZS5mbGF0dGVuIHRoYXQgYXJlIG9mIHRoZSBnaXZlbiB0eXBlIChp
c19hPyB0eXBlIHJldHVybnMgdHJ1ZSkuCisjCisjIG5vZGUubWFwQ2hpbGRyZW57fHZ8IC4uLn0g
LT4gUmV0dXJucyBhIG5ldyBub2RlIHdpdGggYWxsIGNoaWxkcmVuCisjICAgICByZXBsYWNlZCBh
Y2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJsb2NrLgorIworIyBFeGFtcGxlczoKKyMKKyMgbm9kZS5m
aWx0ZXIoU2V0dGluZykudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc2V0dGluZ3MgdGhhdCB0
aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVsc2UgYmxvY2tzIGRlcGVuZCBvbi4KKyMKKyMgbm9kZS5m
aWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzdHJ1Y3R1cmUg
b2Zmc2V0cworIyAgICAgdGhhdCB0aGUgQVNUIGRlcGVuZHMgb24uCisKK2NsYXNzIE5vZGUKKyAg
YXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4p
CisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgIGVuZAorICAKKyAgZGVmIGNvZGVPcmln
aW5TdHJpbmcKKyAgICAibGluZSBudW1iZXIgI3tAY29kZU9yaWdpbn0iCisgIGVuZAorICAKKyAg
ZGVmIGRlc2NlbmRhbnRzCisgICAgY2hpbGRyZW4uY29sbGVjdHt8dnwgdi5mbGF0dGVufS5mbGF0
dGVuCisgIGVuZAorICAKKyAgZGVmIGZsYXR0ZW4KKyAgICBbc2VsZl0gKyBkZXNjZW5kYW50cwor
ICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIodHlwZSkKKyAgICBmbGF0dGVuLnNlbGVjdHt8dnwgdi5p
c19hPyB0eXBlfQorICBlbmQKK2VuZAorCitjbGFzcyBOb0NoaWxkcmVuIDwgTm9kZQorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAK
KyAgZGVmIGNoaWxkcmVuCisgICAgW10KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldEtleQorICBhdHRyX3JlYWRl
ciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKHN0cnVjdCwgZmllbGQpCisg
ICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAgZGVm
IGhhc2gKKyAgICBAc3RydWN0Lmhhc2ggKyBAZmllbGQuaGFzaCAqIDMKKyAgZW5kCisgIAorICBk
ZWYgZXFsPyhvdGhlcikKKyAgICBAc3RydWN0ID09IG90aGVyLnN0cnVjdCBhbmQgQGZpZWxkID09
IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisKKyMKKyMgQVNUIG5vZGVzLgorIworCitjbGFzcyBT
dHJ1Y3RPZmZzZXQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAor
ICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVsZAor
ICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JGaWVsZChjb2Rl
T3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGtleSA9IFN0cnVjdE9mZnNldEtleS5uZXcoc3Ry
dWN0LCBmaWVsZCkKKyAgICAKKyAgICB1bmxlc3MgQEBtYXBwaW5nW2tleV0KKyAgICAgIEBAbWFw
cGluZ1trZXldID0gU3RydWN0T2Zmc2V0Lm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQor
ICAgIGVuZAorICAgIEBAbWFwcGluZ1trZXldCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
I3tzdHJ1Y3R9Ojoje2ZpZWxkfSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAgIGlm
IEBzdHJ1Y3QgIT0gb3RoZXIuc3RydWN0CisgICAgICByZXR1cm4gQHN0cnVjdCA8PT4gb3RoZXIu
c3RydWN0CisgICAgZW5kCisgICAgQGZpZWxkIDw9PiBvdGhlci5maWVsZAorICBlbmQKKyAgCisg
IGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAKKyAg
ZGVmIHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZiA8IE5v
Q2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVjdAorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgc3RydWN0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0
cnVjdAorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1l
KGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW3N0cnVjdF0KKyAgICAg
IEBAbWFwcGluZ1tzdHJ1Y3RdID0gU2l6ZW9mLm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAg
ZW5kCisgICAgQEBtYXBwaW5nW3N0cnVjdF0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJz
aXplb2YgI3tAc3RydWN0fSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAgIEBzdHJ1
Y3QgPD0+IG90aGVyLnN0cnVjdAorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNl
CisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGlt
bWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIGZhbHNl
CisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFk
ZXIgOnZhbHVlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEB2YWx1ZSA9IHZhbHVlCisgICAgcmFpc2UgIkJhZCBpbW1l
ZGlhdGUgdmFsdWUgI3t2YWx1ZS5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxl
c3MgdmFsdWUuaXNfYT8gSW50ZWdlcgorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7dmFs
dWV9IgorICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBvdGhlci5pc19hPyBJbW1lZGlh
dGUgYW5kIG90aGVyLnZhbHVlID09IEB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPwor
ICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAK
KyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPwor
ICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0Cisg
ICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQs
IEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBZGRJbW1lZGlhdGVz
Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICsgI3tyaWdodC5kdW1wfSkiCisgIGVu
ZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/
CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5k
CisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgU3Vi
SW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRl
ZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbgorICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5
aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0g
LSAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxzZQor
ICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBpbW1l
ZGlhdGU/CisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICBmYWxzZQor
ICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6
bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdo
dCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9
IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTXVsSW1tZWRpYXRlcy5uZXcoY29kZU9y
aWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAqICN7cmlnaHQuZHVtcH0pIgorICBlbmQKKyAgCisgIGRl
ZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNl
CisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVm
IHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0ZSA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisg
IGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BjaGlsZF0KKyAgZW5kCisgIAorICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICBOZWdJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hp
bGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigtI3tAY2hpbGQuZHVtcH0pIgorICBl
bmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVs
PworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVu
ZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIFJl
Z2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5h
bWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZv
ck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAg
ICBAQG1hcHBpbmdbbmFtZV0gPSBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAg
IGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbmFt
ZQorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVm
IGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxz
ZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICB0cnVlCisgIGVuZAorZW5kCisKK2Ns
YXNzIEZQUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAgZGVm
IHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdbbmFt
ZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IEZQUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgIG5hbWUKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxzZQorICBlbmQK
KyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBpbW1lZGlhdGU/
CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgdHJ1ZQorICBlbmQK
K2VuZAorCitjbGFzcyBWYXJpYWJsZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAK
KyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBp
bmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFZhcmlhYmxlLm5ldyhjb2RlT3JpZ2lu
LCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzIDwgTm9kZQorICBhdHRy
X3JlYWRlciA6YmFzZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
YmFzZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNlCisg
ICAgQG9mZnNldCA9IG9mZnNldAorICAgIHJhaXNlICJCYWQgYmFzZSBmb3IgYWRkcmVzcyAje2Jh
c2UuaW5zcGVjdH0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIGJhc2UuaXNfYT8gVmFy
aWFibGUgb3IgYmFzZS5yZWdpc3Rlcj8KKyAgICByYWlzZSAiQmFkIG9mZnNldCBmb3IgYWRkcmVz
cyAje29mZnNldC5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb2Zmc2V0
LmlzX2E/IFZhcmlhYmxlIG9yIG9mZnNldC5pbW1lZGlhdGU/CisgIGVuZAorICAKKyAgZGVmIGNo
aWxkcmVuCisgICAgW0BiYXNlLCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJl
bgorICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAb2Zm
c2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jhc2Uu
ZHVtcH1dIgorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIHRydWUKKyAgZW5kCisgIAor
ICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAg
IGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5k
CisKK2NsYXNzIEJhc2VJbmRleCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2UsIDppbmRleCwg
OnNjYWxlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBp
bmRleCwgc2NhbGUsIG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBiYXNlID0g
YmFzZQorICAgIEBpbmRleCA9IGluZGV4CisgICAgQHNjYWxlID0gc2NhbGUKKyAgICByYWlzZSB1
bmxlc3MgWzEsIDIsIDQsIDhdLm1lbWJlcj8gQHNjYWxlCisgICAgQG9mZnNldCA9IG9mZnNldAor
ICBlbmQKKyAgCisgIGRlZiBzY2FsZVNoaWZ0CisgICAgY2FzZSBzY2FsZQorICAgIHdoZW4gMQor
ICAgICAgMAorICAgIHdoZW4gMgorICAgICAgMQorICAgIHdoZW4gNAorICAgICAgMgorICAgIHdo
ZW4gOAorICAgICAgMworICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQgc2NhbGUgYXQgI3tjb2Rl
T3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBb
QGJhc2UsIEBpbmRleCwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAaW5kZXgp
LCBAc2NhbGUsICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIj
e29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH0sICN7aW5kZXguZHVtcH0sICN7c2NhbGV9XSIKKyAg
ZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGxhYmVs
PworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBl
bmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICBmYWxzZQorICBlbmQKK2VuZAorCitjbGFzcyBB
YnNvbHV0ZUFkZHJlc3MgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDphZGRyZXNzCisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBhZGRyZXNzKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQGFkZHJlc3MgPSBhZGRyZXNzCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAi
I3thZGRyZXNzLmR1bXB9W10iCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgdHJ1ZQor
ICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBpbW1l
ZGlhdGU/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UK
KyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24gPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpv
cGNvZGUsIDpvcGVyYW5kcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgb3Bjb2Rl
LCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBvcGNvZGUgPSBvcGNvZGUK
KyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIEluc3Ry
dWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBAb3Bjb2RlLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdCIgKyBvcGNvZGUudG9fcyArICIgIiArIG9wZXJh
bmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKQorICBlbmQKK2VuZAorCitjbGFzcyBF
cnJvciA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0ZXJyb3IiCisgIGVu
ZAorZW5kCisKK2NsYXNzIENvbnN0RGVjbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnZhcmlhYmxl
LCA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1
ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YXJpYWJsZSA9IHZhcmlhYmxlCisgICAg
QHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQHZhcmlhYmxl
LCBAdmFsdWVdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQ29uc3REZWNsLm5l
dyhjb2RlT3JpZ2luLCAoeWllbGQgQHZhcmlhYmxlKSwgKHlpZWxkIEB2YWx1ZSkpCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICAiY29uc3QgI3tAdmFyaWFibGUuZHVtcH0gPSAje0B2YWx1ZS5k
dW1wfSIKKyAgZW5kCitlbmQKKworJGxhYmVsTWFwcGluZyA9IHt9CisKK2NsYXNzIExhYmVsIDwg
Tm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQor
ICBlbmQKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAk
bGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7
bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExhYmVsCisgICAgZWxzZQor
ICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVtcAor
ICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbCA8IE5vQ2hpbGRy
ZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisK
KyAgQEB1bmlxdWVOYW1lQ291bnRlciA9IDAKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9y
aWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFi
ZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlz
X2E/IExvY2FsTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTG9j
YWxMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBwaW5n
W25hbWVdCisgIGVuZAorICAKKyAgZGVmIHNlbGYudW5pcXVlKGNvbW1lbnQpCisgICAgbmV3TmFt
ZSA9ICJfI3tjb21tZW50fSIKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25ld05hbWVdCisgICAgICB3
aGlsZSAkbGFiZWxNYXBwaW5nW25ld05hbWUgPSAiXyN7QEB1bmlxdWVOYW1lQ291bnRlcn1fI3tj
b21tZW50fSJdCisgICAgICAgIEBAdW5pcXVlTmFtZUNvdW50ZXIgKz0gMQorICAgICAgZW5kCisg
ICAgZW5kCisgICAgZm9yTmFtZShuaWwsIG5ld05hbWUpCisgIGVuZAorICAKKyAgZGVmIGNsZWFu
TmFtZQorICAgIGlmIG5hbWUgPX4gL15cLi8KKyAgICAgICJfIiArIG5hbWVbMS4uLTFdCisgICAg
ZWxzZQorICAgICAgbmFtZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7
bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZSA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICBMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVu
ZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAg
ZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgdHJ1ZQorICBlbmQKK2VuZAorCitjbGFzcyBMb2Nh
bExhYmVsUmVmZXJlbmNlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxh
YmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExvY2FsTGFiZWxSZWZlcmVu
Y2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBuYW1l
CisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFtZQor
ICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxh
YmVsPworICAgIHRydWUKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpsaXN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsaXN0KQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxpc3QgPSBsaXN0CisgIGVuZAorICAKKyAgZGVm
IGNoaWxkcmVuCisgICAgbGlzdAorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykK
KyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgQGxpc3QubWFwKCZwcm9jKSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgIGxpc3QuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCJcbiIpCisg
IGVuZAorZW5kCisKK2NsYXNzIFRydWUgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplCisg
ICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBUcnVlLm5ldworICAKKyAg
ZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVmIHZhbHVl
CisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgInRydWUiCisgIGVuZAorZW5k
CisKK2NsYXNzIEZhbHNlIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQorICAgIHN1cGVy
KG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNlID0gRmFsc2UubmV3CisgIAorICBkZWYgc2Vs
Zi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAgICBm
YWxzZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImZhbHNlIgorICBlbmQKK2VuZAorCitj
bGFzcyBUcnVlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAgIFRydWUuaW5zdGFuY2UKKyAgZW5kCitl
bmQKKworY2xhc3MgRmFsc2VDbGFzcworICBkZWYgYXNOb2RlCisgICAgRmFsc2UuaW5zdGFuY2UK
KyAgZW5kCitlbmQKKworY2xhc3MgU2V0dGluZyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIg
Om5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7
fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBA
QG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFNldHRpbmcubmV3KGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAg
ZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZCA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAg
ICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwg
QHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFuZC5uZXcoY29kZU9y
aWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBhbmQgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5kCisK
K2NsYXNzIE9yIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVm
IGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxk
cmVuCisgICAgT3IubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQp
KQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gb3IgI3tyaWdodC5k
dW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE5vdCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNo
aWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVu
CisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAg
Tm90Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgICIobm90ICN7Y2hpbGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwIDwg
Tm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRza2lwIgorICBlbmQKK2VuZAor
CitjbGFzcyBJZlRoZW5FbHNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6cHJlZGljYXRlLCA6dGhl
bkNhc2UKKyAgYXR0cl9hY2Nlc3NvciA6ZWxzZUNhc2UKKyAgCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIHByZWRpY2F0ZSwgdGhlbkNhc2UpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICBAcHJlZGljYXRlID0gcHJlZGljYXRlCisgICAgQHRoZW5DYXNlID0gdGhlbkNhc2UKKyAgICBA
ZWxzZUNhc2UgPSBTa2lwLm5ldyhjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJl
bgorICAgIGlmIEBlbHNlQ2FzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZSwgQGVsc2VD
YXNlXQorICAgIGVsc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2VdCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdp
biwgKHlpZWxkIEBwcmVkaWNhdGUpLCAoeWllbGQgQHRoZW5DYXNlKSwgKHlpZWxkIEBlbHNlQ2Fz
ZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiaWYgI3twcmVkaWNhdGUuZHVtcH1cbiIg
KyB0aGVuQ2FzZS5kdW1wICsgIlxuZWxzZVxuIiArIGVsc2VDYXNlLmR1bXAgKyAiXG5lbmQiCisg
IGVuZAorZW5kCisKK2NsYXNzIE1hY3JvIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOnZh
cmlhYmxlcywgOmJvZHkKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIHZh
cmlhYmxlcywgYm9keSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQor
ICAgIEB2YXJpYWJsZXMgPSB2YXJpYWJsZXMKKyAgICBAYm9keSA9IGJvZHkKKyAgZW5kCisgIAor
ICBkZWYgY2hpbGRyZW4KKyAgICBAdmFyaWFibGVzICsgW0Bib2R5XQorICBlbmQKKyAgCisgIGRl
ZiBtYXBDaGlsZHJlbgorICAgIE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQHZhcmlhYmxl
cy5tYXB7fHZ8IHlpZWxkIHZ9LCAoeWllbGQgQGJvZHkpKQorICBlbmQKKyAgCisgIGRlZiBkdW1w
CisgICAgIm1hY3JvICN7bmFtZX0oIiArIHZhcmlhYmxlcy5jb2xsZWN0e3x2fCB2LmR1bXB9Lmpv
aW4oIiwgIikgKyAiKVxuIiArIGJvZHkuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xh
c3MgTWFjcm9DYWxsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOm9wZXJhbmRzCisgIAor
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisg
ICAgcmFpc2UgdW5sZXNzIEBvcGVyYW5kcworICAgIEBvcGVyYW5kcy5lYWNoe3x2fCByYWlzZSB1
bmxlc3Mgdn0KKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAb3BlcmFuZHMKKyAgZW5k
CisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgTWFjcm9DYWxsLm5ldyhjb2RlT3Jp
Z2luLCBAbmFtZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiXHQje25hbWV9KCIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwg
IikgKyAiKSIKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vYmFja2VuZHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NiBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXJtdjciCity
ZXF1aXJlICJhc3QiCityZXF1aXJlICJ4ODYiCisKK0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIs
CisgICAiQVJNdjciCisgIF0KKworIyBLZWVwIHRoZSBzZXQgb2Ygd29ya2luZyBiYWNrZW5kcyBz
ZXBhcmF0ZSBmcm9tIHRoZSBzZXQgb2YgYmFja2VuZHMgdGhhdCBtaWdodCBiZQorIyBzdXBwb3J0
ZWQuIFRoaXMgaXMgZ3JlYXQgYmVjYXVzZSB0aGUgQkFDS0VORFMgbGlzdCBpcyBhbG1vc3QgbGlr
ZSBhIHJlc2VydmVkCisjIHdvcmRzIGxpc3QsIGluIHRoYXQgaXQgY2F1c2VzIHNldHRpbmdzIHJl
c29sdXRpb24gdG8gdHJlYXQgdGhvc2Ugd29yZHMgc3BlY2lhbGx5LgorIyBIZW5jZSB0aGlzIGxl
dHMgdXMgc2V0IGFzaWRlIHRoZSBuYW1lIG9mIGEgYmFja2VuZCB3ZSBtaWdodCB3YW50IHRvIHN1
cHBvcnQgaW4KKyMgdGhlIGZ1dHVyZSB3aGlsZSBub3QgYWN0dWFsbHkgc3VwcG9ydGluZyB0aGUg
YmFja2VuZCB5ZXQuCitXT1JLSU5HX0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIsCisgICAiQVJN
djciCisgIF0KKworQkFDS0VORF9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCcgKyBCQUNLRU5E
Uy5qb2luKCcpfCgnKSArICcpXFxaJykKKworY2xhc3MgTm9kZQorICBkZWYgbG93ZXIobmFtZSkK
KyAgICBzZW5kKCJsb3dlciIgKyBuYW1lKQorICBlbmQKK2VuZAorCisjIE92ZXJyaWRlcyBmb3Ig
bG93ZXIoKSBmb3IgdGhvc2Ugbm9kZXMgdGhhdCBhcmUgYmFja2VuZC1hZ25vc3RpYworCitjbGFz
cyBMYWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHNMYWJlbChzZWxmLm5hbWVb
MS4uLTFdKQorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBsb3dlcihuYW1l
KQorICAgICRhc20ucHV0c0xvY2FsTGFiZWwgIl9vZmZsaW5lYXNtXyN7c2VsZi5uYW1lWzEuLi0x
XX0iCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgIGRlZiBhc21MYWJlbAor
ICAgIEFzc2VtYmxlci5sYWJlbFJlZmVyZW5jZShuYW1lWzEuLi0xXSkKKyAgZW5kCitlbmQKKwor
Y2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQorICBkZWYgYXNtTGFiZWwKKyAgICBBc3NlbWJsZXIu
bG9jYWxMYWJlbFJlZmVyZW5jZSgiX29mZmxpbmVhc21fIituYW1lWzEuLi0xXSkKKyAgZW5kCitl
bmQKKworY2xhc3MgU2tpcAorICBkZWYgbG93ZXIobmFtZSkKKyAgZW5kCitlbmQKKworY2xhc3Mg
U2VxdWVuY2UKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgaWYgcmVzcG9uZF90bz8gImxvd2VyI3tu
YW1lfSIKKyAgICAgIHNlbmQoImxvd2VyI3tuYW1lfSIpCisgICAgZWxzZQorICAgICAgQGxpc3Qu
ZWFjaCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIG5vZGUubG93ZXIobmFtZSkKKyAgICAg
IH0KKyAgICBlbmQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJi
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJh
dGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MyBAQAorIyEv
dXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVx
dWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgor
cmVxdWlyZSAic2VsZl9oYXNoIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zv
cm0iCisKK2lucHV0RmxubSA9IEFSR1Yuc2hpZnQKK291dHB1dEZsbm0gPSBBUkdWLnNoaWZ0CisK
KyRzdGRlcnIucHV0cyAib2ZmbGluZWFzbTogUGFyc2luZyAje2lucHV0RmxubX0gYW5kIGNyZWF0
aW5nIG9mZnNldCBleHRyYWN0b3IgI3tvdXRwdXRGbG5tfS4iCisKK2RlZiBlbWl0TWFnaWNOdW1i
ZXIKKyAgT0ZGU0VUX01BR0lDX05VTUJFUlMuZWFjaCB7CisgICAgfCBudW1iZXIgfAorICAgICRv
dXRwdXQucHV0cyAiI3tudW1iZXJ9LCIKKyAgfQorZW5kCisKK2lucHV0RGF0YSA9IElPOjpyZWFk
KGlucHV0RmxubSkKK2lucHV0SGFzaCA9ICIvLyBvZmZsaW5lYXNtIGlucHV0IGhhc2g6ICN7RGln
ZXN0OjpTSEExLmhleGRpZ2VzdChpbnB1dERhdGEpfSAje3NlbGZIYXNofSIKKworaWYgRmlsZVRl
c3QuZXhpc3Q/IG91dHB1dEZsbm0KKyAgRmlsZS5vcGVuKG91dHB1dEZsbm0sICJyIikgeworICAg
IHwgaW5wIHwKKyAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAgIGlmIGZpcnN0TGluZSBhbmQg
Zmlyc3RMaW5lLmNob21wID09IGlucHV0SGFzaAorICAgICAgJHN0ZGVyci5wdXRzICJvZmZsaW5l
YXNtOiBOb3RoaW5nIGNoYW5nZWQuIgorICAgICAgZXhpdCAwCisgICAgZW5kCisgIH0KK2VuZAor
CitvcmlnaW5hbEFTVCA9IHBhcnNlKGxleChpbnB1dERhdGEpKQorCitGaWxlLm9wZW4ob3V0cHV0
RmxubSwgInciKSB7CisgIHwgb3V0cCB8CisgICRvdXRwdXQgPSBvdXRwCisgIG91dHAucHV0cyBp
bnB1dEhhc2gKKyAgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKG9yaWdpbmFsQVNUKSB7Cisg
ICAgfCBzZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8CisgICAgb2Zmc2V0c0xpc3QgPSBh
c3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CisgICAgc2l6ZXNMaXN0ID0gYXN0LmZp
bHRlcihTaXplb2YpLnVuaXEuc29ydAorICAgIAorICAgIGxlbmd0aCA9IChPRkZTRVRfTUFHSUNf
TlVNQkVSUy5zaXplICsgMSkgKiAoMSArIG9mZnNldHNMaXN0LnNpemUgKyBzaXplc0xpc3Quc2l6
ZSkKKyAgICAKKyAgICBvdXRwLnB1dHMgInN0YXRpYyBjb25zdCB1bnNpZ25lZCBleHRyYWN0b3JU
YWJsZVsje2xlbmd0aH1dID0geyIKKyAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICBvdXRwLnB1dHMg
IiN7aW5kZXh9LCIKKyAgICBvZmZzZXRzTGlzdC5lYWNoIHsKKyAgICAgIHwgb2Zmc2V0IHwKKyAg
ICAgIGVtaXRNYWdpY051bWJlcgorICAgICAgb3V0cC5wdXRzICJPRkZMSU5FX0FTTV9PRkZTRVRP
Rigje29mZnNldC5zdHJ1Y3R9LCAje29mZnNldC5maWVsZH0pLCIKKyAgICB9CisgICAgc2l6ZXNM
aXN0LmVhY2ggeworICAgICAgfCBvZmZzZXQgfAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAg
ICBvdXRwLnB1dHMgInNpemVvZigje29mZnNldC5zdHJ1Y3R9KSwiCisgICAgfQorICAgIG91dHAu
cHV0cyAifTsiCisgIH0KK30KKworJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBvZmZzZXQgZXh0
cmFjdG9yICN7b3V0cHV0RmxubX0gc3VjY2Vzc2Z1bGx5IGdlbmVyYXRlZC4iCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlv
bnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjE3IEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjIEludGVyZXN0aW5nIGludmFyaWFudCwgd2hpY2ggd2UgdGFr
ZSBhZHZhbnRhZ2Ugb2Y6IGJyYW5jaGluZyBpbnN0cnVjdGlvbnMKKyMgYWx3YXlzIGJlZ2luIHdp
dGggImIiLCBhbmQgbm8gbm9uLWJyYW5jaGluZyBpbnN0cnVjdGlvbnMgYmVnaW4gd2l0aCAiYiIu
CisjIFRlcm1pbmFsIGluc3RydWN0aW9ucyBhcmUgImptcCIgYW5kICJyZXQiLgorCitNQUNST19J
TlNUUlVDVElPTlMgPQorICBbCisgICAiYWRkaSIsCisgICAiYW5kaSIsCisgICAibHNoaWZ0aSIs
CisgICAibXVsaSIsCisgICAibmVnaSIsCisgICAibm90aSIsCisgICAib3JpIiwKKyAgICJyc2hp
ZnRpIiwKKyAgICJ1cnNoaWZ0aSIsCisgICAic3ViaSIsCisgICAieG9yaSIsCisgICAibG9hZGki
LAorICAgImxvYWRiIiwKKyAgICJsb2FkYnMiLAorICAgImxvYWRoIiwKKyAgICJsb2FkaHMiLAor
ICAgInN0b3JlaSIsCisgICAic3RvcmViIiwKKyAgICJsb2FkZCIsCisgICAibW92ZWQiLAorICAg
InN0b3JlZCIsCisgICAiYWRkZCIsCisgICAiZGl2ZCIsCisgICAic3ViZCIsCisgICAibXVsZCIs
CisgICAic3FydGQiLAorICAgImNpMmQiLAorICAgImZpaTJkIiwgIyB1c2FnZTogZmlpMmQgPGdw
ciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2Fu
dCBiaXRzPiwgPGZwcj4KKyAgICJmZDJpaSIsICMgdXNhZ2U6IGZkMmlpIDxmcHI+LCA8Z3ByIHdp
dGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJp
dHM+CisgICAiYmRlcSIsCisgICAiYmRuZXEiLAorICAgImJkZ3QiLAorICAgImJkZ3RlcSIsCisg
ICAiYmRsdCIsCisgICAiYmRsdGVxIiwKKyAgICJiZGVxdW4iLAorICAgImJkbmVxdW4iLAorICAg
ImJkZ3R1biIsCisgICAiYmRndGVxdW4iLAorICAgImJkbHR1biIsCisgICAiYmRsdGVxdW4iLAor
ICAgImJ0ZDJpIiwKKyAgICJ0ZDJpIiwKKyAgICJiY2QyaSIsCisgICAibW92ZHoiLAorICAgInBv
cCIsCisgICAicHVzaCIsCisgICAibW92ZSIsCisgICAic3hpMnAiLAorICAgInp4aTJwIiwKKyAg
ICJub3AiLAorICAgImJpZXEiLAorICAgImJpbmVxIiwKKyAgICJiaWEiLAorICAgImJpYWVxIiwK
KyAgICJiaWIiLAorICAgImJpYmVxIiwKKyAgICJiaWd0IiwKKyAgICJiaWd0ZXEiLAorICAgImJp
bHQiLAorICAgImJpbHRlcSIsCisgICAiYmJlcSIsCisgICAiYmJuZXEiLAorICAgImJiYSIsCisg
ICAiYmJhZXEiLAorICAgImJiYiIsCisgICAiYmJiZXEiLAorICAgImJiZ3QiLAorICAgImJiZ3Rl
cSIsCisgICAiYmJsdCIsCisgICAiYmJsdGVxIiwKKyAgICJidGlvIiwKKyAgICJidGlzIiwKKyAg
ICJidGl6IiwKKyAgICJidGlueiIsCisgICAiYnRibyIsCisgICAiYnRicyIsCisgICAiYnRieiIs
CisgICAiYnRibnoiLAorICAgImptcCIsCisgICAiYmFkZGlvIiwKKyAgICJiYWRkaXMiLAorICAg
ImJhZGRpeiIsCisgICAiYmFkZGlueiIsCisgICAiYnN1YmlvIiwKKyAgICJic3ViaXMiLAorICAg
ImJzdWJpeiIsCisgICAiYnN1YmlueiIsCisgICAiYm11bGlvIiwKKyAgICJibXVsaXMiLAorICAg
ImJtdWxpeiIsCisgICAiYm11bGlueiIsCisgICAiYm9yaW8iLAorICAgImJvcmlzIiwKKyAgICJi
b3JpeiIsCisgICAiYm9yaW56IiwKKyAgICJicmVhayIsCisgICAiY2FsbCIsCisgICAicmV0IiwK
KyAgICJjaWVxIiwKKyAgICJjaW5lcSIsCisgICAiY2lhIiwKKyAgICJjaWFlcSIsCisgICAiY2li
IiwKKyAgICJjaWJlcSIsCisgICAiY2lndCIsCisgICAiY2lndGVxIiwKKyAgICJjaWx0IiwKKyAg
ICJjaWx0ZXEiLAorICAgInRpbyIsCisgICAidGlzIiwKKyAgICJ0aXoiLAorICAgInRpbnoiLAor
ICAgInRibyIsCisgICAidGJzIiwKKyAgICJ0YnoiLAorICAgInRibnoiLAorICAgInBlZWsiLAor
ICAgInBva2UiLAorICAgImJwZXEiLAorICAgImJwbmVxIiwKKyAgICJicGEiLAorICAgImJwYWVx
IiwKKyAgICJicGIiLAorICAgImJwYmVxIiwKKyAgICJicGd0IiwKKyAgICJicGd0ZXEiLAorICAg
ImJwbHQiLAorICAgImJwbHRlcSIsCisgICAiYWRkcCIsCisgICAiYW5kcCIsCisgICAib3JwIiwK
KyAgICJzdWJwIiwKKyAgICJ4b3JwIiwKKyAgICJsb2FkcCIsCisgICAiY3BlcSIsCisgICAiY3Bu
ZXEiLAorICAgImNwYSIsCisgICAiY3BhZXEiLAorICAgImNwYiIsCisgICAiY3BiZXEiLAorICAg
ImNwZ3QiLAorICAgImNwZ3RlcSIsCisgICAiY3BsdCIsCisgICAiY3BsdGVxIiwKKyAgICJzdG9y
ZXAiLAorICAgImJ0cG8iLAorICAgImJ0cHMiLAorICAgImJ0cHoiLAorICAgImJ0cG56IiwKKyAg
ICJiYWRkcG8iLAorICAgImJhZGRwcyIsCisgICAiYmFkZHB6IiwKKyAgICJiYWRkcG56IiwKKyAg
ICJibyIsCisgICAiYnMiLAorICAgImJ6IiwKKyAgICJibnoiLAorICAgImxlYWkiLAorICAgImxl
YXAiLAorICBdCisKK1g4Nl9JTlNUUlVDVElPTlMgPQorICBbCisgICAiY2RxaSIsCisgICAiaWRp
dmkiCisgIF0KKworQVJNdjdfSU5TVFJVQ1RJT05TID0KKyAgWworICAgInNtdWxsaSIsCisgICAi
YWRkaXMiLAorICAgInN1YmlzIiwKKyAgICJvcmlzIgorICBdCisKK0lOU1RSVUNUSU9OUyA9IE1B
Q1JPX0lOU1RSVUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMgKyBBUk12N19JTlNUUlVDVElPTlMK
KworSU5TVFJVQ1RJT05fUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIElOU1RSVUNUSU9O
Uy5qb2luKCcpfCgnKSArICcpKVxcWicpCisKK2RlZiBpc0JyYW5jaChpbnN0cnVjdGlvbikKKyAg
aW5zdHJ1Y3Rpb24gPX4gL15iLworZW5kCisKK2RlZiBoYXNGYWxsVGhyb3VnaChpbnN0cnVjdGlv
bikKKyAgaW5zdHJ1Y3Rpb24gIT0gInJldCIgYW5kIGluc3RydWN0aW9uICE9ICJqbXAiCitlbmQK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rv
cl9jb25zdGFudHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5y
YgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
IyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgwZmY1ZTc1NSBd
CisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJi
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0
cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIm9mZnNldF9leHRyYWN0
b3JfY29uc3RhbnRzIgorCitPRkZTRVRfTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgw
ZmY1ZTc1NSBdCisKKyMKKyMgb2Zmc2V0c0xpc3QoYXN0KQorIyBzaXplc0xpc3QoYXN0KQorIwor
IyBSZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCBzaXplcyB1c2VkIGJ5IHRoZSBBU1QuCisj
CisKK2RlZiBvZmZzZXRzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlx
LnNvcnQKK2VuZAorCitkZWYgc2l6ZXNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTaXplb2YpLnVu
aXEuc29ydAorZW5kCisKKyMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChhc3QsIGZp
bGUpIC0+CisjICAgICBbb2Zmc2V0cywgaW5kZXhdCisjCisjIFBhcnNlcyB0aGUgb2Zmc2V0cyBm
cm9tIGEgZmlsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgdGhlCisjIGluZGV4
IG9mIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgaXMgdmFsaWQgaW4gdGhpcyBidWlsZCB0YXJnZXQu
CisjCisKK2RlZiBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUpCisgIGluZGV4ID0g
bmlsCisgIG9mZnNldHMgPSBbXQorICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBuaWwKKyAgCisg
IGRlZiByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICBieXRlcyA9IFtdCisgICAgNC50aW1l
cyB7CisgICAgICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQorICAgIH0KKyAgICAKKyAgICBpZiBlbmRp
YW5uZXNzID09IDpsaXR0bGUKKyAgICAgICMgTGl0dGxlIGVuZGlhbgorICAgICAgKGJ5dGVzWzBd
IDw8IDAgfAorICAgICAgIGJ5dGVzWzFdIDw8IDggfAorICAgICAgIGJ5dGVzWzJdIDw8IDE2IHwK
KyAgICAgICBieXRlc1szXSA8PCAyNCkKKyAgICBlbHNlCisgICAgICAjIEJpZyBlbmRpYW4KKyAg
ICAgIChieXRlc1swXSA8PCAyNCB8CisgICAgICAgYnl0ZXNbMV0gPDwgMTYgfAorICAgICAgIGJ5
dGVzWzJdIDw8IDggfAorICAgICAgIGJ5dGVzWzNdIDw8IDApCisgICAgZW5kCisgIGVuZAorICAK
KyAgWzpsaXR0bGUsIDpiaWddLmVhY2ggeworICAgIHwgZW5kaWFubmVzcyB8CisgICAgbWFnaWNC
eXRlcyA9IFtdCisgICAgTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICAgIHwgbnVtYmVyIHwKKyAg
ICAgIGN1cnJlbnRCeXRlcyA9IFtdCisgICAgICA0LnRpbWVzIHsKKyAgICAgICAgY3VycmVudEJ5
dGVzIDw8IChudW1iZXIgJiAweGZmKQorICAgICAgICBudW1iZXIgPj49IDgKKyAgICAgIH0KKyAg
ICAgIGlmIGVuZGlhbm5lc3MgPT0gOmJpZworICAgICAgICBjdXJyZW50Qnl0ZXMucmV2ZXJzZSEK
KyAgICAgIGVuZAorICAgICAgbWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0ZXMKKyAgICB9CisgICAg
CisgICAgRmlsZS5vcGVuKGZpbGUsICJyIikgeworICAgICAgfCBpbnAgfAorICAgICAgd2hlcmVJ
bk1hcmtlciA9IDAKKyAgICAgIGxvb3AgeworICAgICAgICBieXRlID0gaW5wLmdldGJ5dGUKKyAg
ICAgICAgYnJlYWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgaWYgYnl0ZSA9PSBtYWdpY0J5dGVzW3do
ZXJlSW5NYXJrZXJdCisgICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisgICAgICAgICAgaWYg
d2hlcmVJbk1hcmtlciA9PSBtYWdpY0J5dGVzLnNpemUKKyAgICAgICAgICAgICMgV2UgaGF2ZSBh
IG1hdGNoISBJZiB3ZSBoYXZlIG5vdCB5ZXQgcmVhZCB0aGUgZW5kaWFubmVzcyBtYXJrZXIgYW5k
IGluZGV4LAorICAgICAgICAgICAgIyB0aGVuIHJlYWQgdGhvc2Ugbm93OyBvdGhlcndpc2UgcmVh
ZCBhbiBvZmZzZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIG5vdCBpbmRleAorICAg
ICAgICAgICAgICBpbmRleCA9IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICBvZmZzZXRzIDw8IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQor
ICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdoZXJlSW5NYXJrZXIg
PSAwCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICB3aGVyZUluTWFya2Vy
ID0gMAorICAgICAgICBlbmQKKyAgICAgIH0KKyAgICB9CisgICAgCisgICAgYnJlYWsgaWYgaW5k
ZXgKKyAgfQorICAKKyAgcmFpc2UgdW5sZXNzIGluZGV4CisgIAorICBbb2Zmc2V0cywgaW5kZXhd
CitlbmQKKworIworIyBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkgLT4gW29mZnNl
dHMsIHNpemVzXQorIworIyBCdWlsZHMgYSBtYXBwaW5nIGJldHdlZW4gU3RydWN0T2Zmc2V0IG5v
ZGVzIGFuZCB0aGVpciB2YWx1ZXMuCisjCisKK2RlZiBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZz
ZXRzTGlzdCkKKyAgb2Zmc2V0c01hcCA9IHt9CisgIHNpemVzTWFwID0ge30KKyAgYXN0T2Zmc2V0
c0xpc3QgPSBvZmZzZXRzTGlzdChhc3QpCisgIGFzdFNpemVzTGlzdCA9IHNpemVzTGlzdChhc3Qp
CisgIHJhaXNlIHVubGVzcyBhc3RPZmZzZXRzTGlzdC5zaXplICsgYXN0U2l6ZXNMaXN0LnNpemUg
PT0gb2Zmc2V0c0xpc3Quc2l6ZQorICBvZmZzZXRzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7
CisgICAgfCBzdHJ1Y3RPZmZzZXQsIGluZGV4IHwKKyAgICBvZmZzZXRzTWFwW3N0cnVjdE9mZnNl
dF0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIHNpemVzTGlzdChhc3QpLmVhY2hfd2l0aF9p
bmRleCB7CisgICAgfCBzaXplb2YsIGluZGV4IHwKKyAgICBzaXplc01hcFtzaXplb2ZdID0gb2Zm
c2V0c0xpc3Quc2hpZnQKKyAgfQorICBbb2Zmc2V0c01hcCwgc2l6ZXNNYXBdCitlbmQKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb3B0LnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29wdC5yYgkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29wdC5yYgkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMzQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3Jl
cXVpcmUgImFzdCIKKworIworIyAiT3B0aW1pemF0aW9uIiBwYXNzZXMuIFRoZXNlIGFyZSB1c2Vk
IHRvIGxvd2VyIHRoZSByZXByZXNlbnRhdGlvbiBmb3IKKyMgYmFja2VuZHMgdGhhdCBjYW5ub3Qg
aGFuZGxlIHNvbWUgb2Ygb3VyIGhpZ2hlci1sZXZlbCBpbnN0cnVjdGlvbnMuCisjCisKKyMKKyMg
QSB0ZW1wb3JhcnkgLSBhIHZhcmlhYmxlIHRoYXQgd2lsbCBiZSBhbGxvY2F0ZWQgdG8gYSByZWdp
c3RlciBhZnRlciB3ZSdyZQorIyBkb25lLgorIworCitjbGFzcyBOb2RlCisgIGRlZiByZXBsYWNl
VGVtcG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAg
fCBub2RlIHwKKyAgICAgIG5vZGUucmVwbGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lzdGVycyhraW5k
KQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVG1wIDwgTm9DaGlsZHJlbgorICBhdHRyX3Jl
YWRlciA6Zmlyc3RNZW50aW9uLCA6bGFzdE1lbnRpb24KKyAgYXR0cl9yZWFkZXIgOmtpbmQKKyAg
YXR0cl9hY2Nlc3NvciA6cmVnaXN0ZXIKKworICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBr
aW5kKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGtpbmQgPSBraW5kCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICAiJHRtcCN7b2JqZWN0X2lkfSIKKyAgZW5kCisgIAorICBkZWYgbWVu
dGlvbiEocG9zaXRpb24pCisgICAgaWYgbm90IEBmaXJzdE1lbnRpb24gb3IgcG9zaXRpb24gPCBA
Zmlyc3RNZW50aW9uCisgICAgICBAZmlyc3RNZW50aW9uID0gcG9zaXRpb24KKyAgICBlbmQKKyAg
ICBpZiBub3QgQGxhc3RNZW50aW9uIG9yIHBvc2l0aW9uID4gQGxhc3RNZW50aW9uCisgICAgICBA
bGFzdE1lbnRpb24gPSBwb3NpdGlvbgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiByZXBsYWNl
VGVtcG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgaWYgQGtpbmQgPT0ga2luZAorICAg
ICAgcmFpc2UgIkRpZCBub3QgYWxsb2NhdGUgcmVnaXN0ZXIgdG8gdGVtcG9yYXJ5IGF0ICN7Y29k
ZU9yaWdpblN0cmluZ30iIHVubGVzcyBAcmVnaXN0ZXIKKyAgICAgIEByZWdpc3RlcgorICAgIGVs
c2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBm
YWxzZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRl
ZiBpbW1lZGlhdGU/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAg
dHJ1ZQorICBlbmQKK2VuZAorCisjIEFzc2lnbiByZWdpc3RlcnMgdG8gdGVtcG9yYXJpZXMsIGJ5
IGZpbmRpbmcgd2hpY2ggdGVtcG9yYXJpZXMgaW50ZXJmZXJlCisjIHdpdGggZWFjaCBvdGhlci4g
Tm90ZSB0aGF0IHRoaXMgcmVsaWVzIG9uIHRlbXBvcmFyeSBsaXZlIHJhbmdlcyBub3QgY3Jvc3Np
bmcKKyMgYmFzaWMgYmxvY2sgYm91bmRhcmllcy4KKworZGVmIGFzc2lnblJlZ2lzdGVyc1RvVGVt
cG9yYXJpZXMobGlzdCwga2luZCwgcmVnaXN0ZXJzKQorICBsaXN0LmVhY2hfd2l0aF9pbmRleCB7
CisgICAgfCBub2RlLCBpbmRleCB8CisgICAgbm9kZS5maWx0ZXIoVG1wKS51bmlxLmVhY2ggewor
ICAgICAgfCB0bXAgfAorICAgICAgaWYgdG1wLmtpbmQgPT0ga2luZAorICAgICAgICB0bXAubWVu
dGlvbiEgaW5kZXgKKyAgICAgIGVuZAorICAgIH0KKyAgfQorICAKKyAgZnJlZVJlZ2lzdGVycyA9
IHJlZ2lzdGVycy5kdXAKKyAgbGlzdC5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgbm9kZSwgaW5k
ZXggfAorICAgIHRtcExpc3QgPSBub2RlLmZpbHRlcihUbXApLnVuaXEKKyAgICB0bXBMaXN0LmVh
Y2ggeworICAgICAgfCB0bXAgfAorICAgICAgaWYgdG1wLmtpbmQgPT0ga2luZCBhbmQgdG1wLmZp
cnN0TWVudGlvbiA9PSBpbmRleAorICAgICAgICByYWlzZSAiQ291bGQgbm90IGFsbG9jYXRlIHJl
Z2lzdGVyIHRvIHRlbXBvcmFyeSBhdCAje25vZGUuY29kZU9yaWdpblN0cmluZ30iIGlmIGZyZWVS
ZWdpc3RlcnMuZW1wdHk/CisgICAgICAgIHRtcC5yZWdpc3RlciA9IGZyZWVSZWdpc3RlcnMucG9w
CisgICAgICBlbmQKKyAgICB9CisgICAgdG1wTGlzdC5lYWNoIHsKKyAgICAgIHwgdG1wIHwKKyAg
ICAgIGlmIHRtcC5raW5kID09IGtpbmQgYW5kIHRtcC5sYXN0TWVudGlvbiA9PSBpbmRleAorICAg
ICAgICBmcmVlUmVnaXN0ZXJzLnB1c2ggdG1wLnJlZ2lzdGVyCisgICAgICAgIHJhaXNlICJSZWdp
c3RlciBhbGxvY2F0aW9uIGluY29uc2lzdGVuY3kgYXQgI3tub2RlLmNvZGVPcmlnaW5TdHJpbmd9
IiBpZiBmcmVlUmVnaXN0ZXJzLnNpemUgPiByZWdpc3RlcnMuc2l6ZQorICAgICAgZW5kCisgICAg
fQorICB9CisgIAorICBsaXN0Lm1hcCB7CisgICAgfCBub2RlIHwKKyAgICBub2RlLnJlcGxhY2VU
ZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkKKyAgfQorZW5kCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTg1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1
aXJlICJhc3QiCityZXF1aXJlICJpbnN0cnVjdGlvbnMiCityZXF1aXJlICJyZWdpc3RlcnMiCisK
K2NsYXNzIFRva2VuCisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luLCA6c3RyaW5nCisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJpbmcpCisgICAgQGNvZGVPcmlnaW4gPSBjb2Rl
T3JpZ2luCisgICAgQHN0cmluZyA9IHN0cmluZworICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikK
KyAgICBpZiBvdGhlci5pc19hPyBUb2tlbgorICAgICAgQHN0cmluZyA9PSBvdGhlci5zdHJpbmcK
KyAgICBlbHNlCisgICAgICBAc3RyaW5nID09IG90aGVyCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmID1+KG90aGVyKQorICAgIEBzdHJpbmcgPX4gb3RoZXIKKyAgZW5kCisgIAorICBkZWYgdG9f
cworICAgICIje0BzdHJpbmcuaW5zcGVjdH0gYXQgbGluZSAje2NvZGVPcmlnaW59IgorICBlbmQK
KyAgCisgIGRlZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIGNvbW1lbnQuZW1wdHk/Cisg
ICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc30iCisgICAgZWxzZQorICAgICAgcmFpc2Ug
IlBhcnNlIGVycm9yOiAje3RvX3N9OiAje2NvbW1lbnRbMF19IgorICAgIGVuZAorICBlbmQKK2Vu
ZAorCisjCisjIFRoZSBsZXhlci4gVGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYW4gYXJyYXkg
b2YgdG9rZW5zLgorIworCitkZWYgbGV4KHN0cikKKyAgcmVzdWx0ID0gW10KKyAgbGluZU51bWJl
ciA9IDEKKyAgd2hpbGUgbm90IHN0ci5lbXB0eT8KKyAgICBjYXNlIHN0cgorICAgIHdoZW4gL1xB
XCMoW15cbl0qKS8KKyAgICAgICMgY29tbWVudCwgaWdub3JlCisgICAgd2hlbiAvXEFcbi8KKyAg
ICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICBsaW5lTnVtYmVy
ICs9IDEKKyAgICB3aGVuIC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0
IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVwuKFthLXpBLVowLTlf
XSopLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVu
IC9cQV8oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1i
ZXIsICQmKQorICAgIHdoZW4gL1xBKFsgXHRdKykvCisgICAgICAjIHdoaXRlc3BhY2UsIGlnbm9y
ZQorICAgIHdoZW4gL1xBMHgoWzAtOWEtZkEtRl0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5u
ZXcobGluZU51bWJlciwgJCYuaGV4LnRvX3MpCisgICAgd2hlbiAvXEEwKFswLTddKykvCisgICAg
ICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLm9jdC50b19zKQorICAgIHdoZW4g
L1xBKFswLTldKykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQor
ICAgIHdoZW4gL1xBOjovCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQm
KQorICAgIHdoZW4gL1xBWzosXChcKVxbXF09XCtcLSpdLworICAgICAgcmVzdWx0IDw8IFRva2Vu
Lm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICBlbHNlCisgICAgICByYWlzZSAiTGV4ZXIgZXJyb3Ig
YXQgbGluZSBudW1iZXIgI3tsaW5lTnVtYmVyfSwgdW5leHBlY3RlZCBzZXF1ZW5jZSAje3N0clsw
Li4yMF0uaW5zcGVjdH0iCisgICAgZW5kCisgICAgc3RyID0gJH4ucG9zdF9tYXRjaAorICBlbmQK
KyAgcmVzdWx0CitlbmQKKworIworIyBUb2tlbiBpZGVudGlmaWNhdGlvbi4KKyMKKworZGVmIGlz
UmVnaXN0ZXIodG9rZW4pCisgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4KK2VuZAorCitkZWYg
aXNJbnN0cnVjdGlvbih0b2tlbikKKyAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5k
CisKK2RlZiBpc0tleXdvcmQodG9rZW4pCisgIHRva2VuID1+IC9cQSgodHJ1ZSl8KGZhbHNlKXwo
aWYpfCh0aGVuKXwoZWxzZSl8KGVsc2lmKXwoZW5kKXwoYW5kKXwob3IpfChub3QpfChtYWNybyl8
KGNvbnN0KXwoc2l6ZW9mKXwoZXJyb3IpKVxaLyBvcgorICAgIHRva2VuID1+IFJFR0lTVEVSX1BB
VFRFUk4gb3IKKyAgICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlz
SWRlbnRpZmllcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKilc
Wi8gYW5kIG5vdCBpc0tleXdvcmQodG9rZW4pCitlbmQKKworZGVmIGlzTGFiZWwodG9rZW4pCisg
IHRva2VuID1+IC9cQV8oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNMb2NhbExhYmVs
KHRva2VuKQorICB0b2tlbiA9fiAvXEFcLihbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBp
c1ZhcmlhYmxlKHRva2VuKQorICBpc0lkZW50aWZpZXIodG9rZW4pIG9yIGlzUmVnaXN0ZXIodG9r
ZW4pCitlbmQKKworZGVmIGlzSW50ZWdlcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBWzAtOV0vCitl
bmQKKworIworIyBUaGUgcGFyc2VyLiBUYWtlcyBhbiBhcnJheSBvZiB0b2tlbnMgYW5kIHJldHVy
bnMgYW4gQVNULiBNZXRob2RzCisjIG90aGVyIHRoYW4gcGFyc2UodG9rZW5zKSBhcmUgbm90IGZv
ciBwdWJsaWMgY29uc3VtcHRpb24uCisjCisKK2NsYXNzIFBhcnNlcgorICBkZWYgaW5pdGlhbGl6
ZSh0b2tlbnMpCisgICAgQHRva2VucyA9IHRva2VucworICAgIEBpZHggPSAwCisgIGVuZAorICAK
KyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgQHRva2Vuc1tAaWR4XQorICAgICAg
QHRva2Vuc1tAaWR4XS5wYXJzZUVycm9yKCpjb21tZW50KQorICAgIGVsc2UKKyAgICAgIGlmIGNv
bW1lbnQuZW1wdHk/CisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZSIK
KyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlOiAj
e2NvbW1lbnRbMF19IgorICAgICAgZW5kCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGNvbnN1
bWUocmVnZXhwKQorICAgIGlmIHJlZ2V4cAorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vu
c1tAaWR4XSA9fiByZWdleHAKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAaWR4
ID09IEB0b2tlbnMubGVuZ3RoCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgIGVuZAorICAKKyAg
ZGVmIHNraXBOZXdMaW5lCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICBA
aWR4ICs9IDEKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBdG9tCisg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibm90IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJz
ZVByZWRpY2F0ZUF0b20KKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlk
eCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGUK
KyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInRydWUiCisg
ICAgICByZXN1bHQgPSBUcnVlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3Vs
dAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImZhbHNlIgorICAgICAgcmVzdWx0ID0gRmFs
c2UuaW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJ
ZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IFNldHRpbmcuZm9yTmFtZShA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgQGlk
eCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5k
CisgIGVuZAorICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQW5kCisgICAgcmVzdWx0ID0gcGFyc2VQ
cmVkaWNhdGVBdG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiYW5kIgorICAgICAgY29k
ZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAg
ICBza2lwTmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgIHJl
c3VsdCA9IEFuZC5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICBy
ZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGUKKyAgICAjIHNvbWUgZXhhbXBs
ZXMgb2YgcHJlY2VkZW5jZToKKyAgICAjIG5vdCBhIGFuZCBiIC0+IChub3QgYSkgYW5kIGIKKyAg
ICAjIGEgYW5kIGIgb3IgYyAtPiAoYSBhbmQgYikgb3IgYworICAgICMgYSBvciBiIGFuZCBjIC0+
IGEgb3IgKGIgYW5kIGMpCisgICAgCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAg
ICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJvciIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAg
ICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICAgIHJlc3VsdCA9IE9yLm5ldyhjb2Rl
T3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisg
IGRlZiBwYXJzZVZhcmlhYmxlCisgICAgaWYgaXNSZWdpc3RlcihAdG9rZW5zW0BpZHhdKQorICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9fiBGUFJfUEFUVEVSTgorICAgICAgICByZXN1bHQgPSBGUFJl
Z2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0u
c3RyaW5nKQorICAgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBSZWdpc3RlcklELmZvck5hbWUo
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVu
ZAorICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgcmVzdWx0ID0g
VmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0u
c3RyaW5nKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgICBAaWR4ICs9
IDEKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VBZGRyZXNzKG9mZnNldCkKKyAg
ICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgIGNvZGVPcmlnaW4g
PSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAKKyAgICAjIFRocmVlIHBvc3NpYmlsaXRp
ZXM6CisgICAgIyBbXSAgICAgICAtPiBBYnNvbHV0ZUFkZHJlc3MKKyAgICAjIFthXSAgICAgIC0+
IEFkZHJlc3MKKyAgICAjIFthLGJdICAgIC0+IEJhc2VJbmRleCB3aXRoIHNjYWxlID0gMQorICAg
ICMgW2EsYixjXSAgLT4gQmFzZUluZGV4CisgICAgCisgICAgQGlkeCArPSAxCisgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmV0dXJuIEFic29sdXRl
QWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0KQorICAgIGVuZAorICAgIGEgPSBwYXJzZVZh
cmlhYmxlCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIHJlc3VsdCA9IEFkZHJl
c3MubmV3KGNvZGVPcmlnaW4sIGEsIG9mZnNldCkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9y
IHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgQGlkeCArPSAxCisgICAgICBiID0g
cGFyc2VWYXJpYWJsZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVz
dWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCAxLCBvZmZzZXQpCisgICAgICBl
bHNlCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBbIjEiLCAiMiIsICI0Iiwg
IjgiXS5tZW1iZXI/IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIGMgPSBAdG9rZW5zW0Bp
ZHhdLnN0cmluZy50b19pCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVu
bGVzcyBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3
KGNvZGVPcmlnaW4sIGEsIGIsIGMsIG9mZnNldCkKKyAgICAgIGVuZAorICAgIGVuZAorICAgIEBp
ZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUNvbG9uQ29sb24KKyAg
ICBza2lwTmV3TGluZQorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4K
KyAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgIG5h
bWVzID0gW0B0b2tlbnNbQGlkeF0uc3RyaW5nXQorICAgIEBpZHggKz0gMQorICAgIHdoaWxlIEB0
b2tlbnNbQGlkeF0gPT0gIjo6IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZUVycm9yIHVu
bGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgbmFtZXMgPDwgQHRva2Vuc1tA
aWR4XS5zdHJpbmcKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICAgIHJhaXNlIGlmIG5hbWVz
LmVtcHR5PworICAgIFtjb2RlT3JpZ2luLCBuYW1lc10KKyAgZW5kCisgIAorICBkZWYgcGFyc2VF
eHByZXNzaW9uQXRvbQorICAgIHNraXBOZXdMaW5lCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
LSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgTmVnSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHgg
LSAxXS5jb2RlT3JpZ2luLCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gIigiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVz
c2lvbgorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAg
IEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJbnRlZ2VyIEB0b2tlbnNbQGlk
eF0KKyAgICAgIHJlc3VsdCA9IEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2lu
LCBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1
bHQKKyAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgY29kZU9yaWdp
biwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIGlmIG5hbWVzLnNpemUgPiAxCisgICAg
ICAgIFN0cnVjdE9mZnNldC5mb3JGaWVsZChjb2RlT3JpZ2luLCBuYW1lc1swLi4tMl0uam9pbign
OjonKSwgbmFtZXNbLTFdKQorICAgICAgZWxzZQorICAgICAgICBWYXJpYWJsZS5mb3JOYW1lKGNv
ZGVPcmlnaW4sIG5hbWVzWzBdKQorICAgICAgZW5kCisgICAgZWxzaWYgaXNSZWdpc3RlciBAdG9r
ZW5zW0BpZHhdCisgICAgICBwYXJzZVZhcmlhYmxlCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9
PSAic2l6ZW9mIgorICAgICAgQGlkeCArPSAxCisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBh
cnNlQ29sb25Db2xvbgorICAgICAgU2l6ZW9mLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXMuam9p
bignOjonKSkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIHBhcnNlRXhwcmVzc2lvbk11bAorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0g
cGFyc2VFeHByZXNzaW9uQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVz
dWx0ID0gTXVsSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVz
dWx0LCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAg
ICAgZW5kCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIGNvdWxkQmVFeHBy
ZXNzaW9uCisgICAgQHRva2Vuc1tAaWR4XSA9PSAiLSIgb3IgQHRva2Vuc1tAaWR4XSA9PSAic2l6
ZW9mIiBvciBpc0ludGVnZXIoQHRva2Vuc1tAaWR4XSkgb3IgaXNWYXJpYWJsZShAdG9rZW5zW0Bp
ZHhdKSBvciBAdG9rZW5zW0BpZHhdID09ICIoIgorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJl
c3Npb24KKyAgICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbk11bAor
ICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisg
ICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
cmVzdWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwg
cmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICItIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gU3ViSW1tZWRpYXRlcy5u
ZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25N
dWwpCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICBy
ZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1lbnQpCisgICAgaWYgY291
bGRCZUV4cHJlc3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIGlmIEB0
b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRkcmVzcyhleHByKQorICAgICAgZWxz
ZQorICAgICAgICBleHByCisgICAgICBlbmQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJb
IgorICAgICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luLCAwKSkKKyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9
IExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExhYmVsLmZvck5h
bWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAg
ICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzTG9jYWxMYWJlbCBAdG9rZW5z
W0BpZHhdCisgICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0
CisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50KQorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb25zdW1l
KC9cQVwoXFovKQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAgbG9vcCB7CisgICAgICBza2lwTmV3
TGluZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgIGJyZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAg
ICAgICAgdmFyaWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNr
aXBOZXdMaW5lCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAi
LCIKKyAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJy
b3IKKyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IKKyAgICAgIGVu
ZAorICAgIH0KKyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAorICBkZWYgcGFyc2VTZXF1ZW5jZShm
aW5hbCwgY29tbWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4KKyAgICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAgICAgIGlmIChAaWR4ID09IEB0b2tl
bnMubGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBm
aW5hbCkKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgor
ICAgICAgICAjIGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1
bmxlc3MgaXNWYXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAgICAgIHZhcmlhYmxlID0gVmFyaWFi
bGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5n
KQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tA
aWR4XSA9PSAiPSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhbHVlID0gcGFyc2VPcGVy
YW5kKCJ3aGlsZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5uYW1lfSIpCisgICAgICAgIGxp
c3QgPDwgQ29uc3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2
YWx1ZSkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImVycm9yIgorICAgICAgICBsaXN0
IDw8IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4pCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAgICAgIGNvZGVPcmlnaW4g
PSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNr
aXBOZXdMaW5lCisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgIGNv
bnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAg
aWZUaGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VT
ZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRlIG9mIFwi
aWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBsaXN0IDw8IGlmVGhlbkVsc2UKKyAg
ICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisgICAgICAgICAgY29kZU9yaWdp
biA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAg
ICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgICAgc2tpcE5ld0xp
bmUKKyAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRp
Y2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUg
aW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICAgIGlmVGhlbkVs
c2UuZWxzZUNhc2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlmVGhlbkVsc2UgPSBlbHNlQ2FzZQor
ICAgICAgICBlbmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiZWxzZSIKKyAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gcGFyc2VTZXF1ZW5j
ZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNlIGZvciBcImlmICN7cHJlZGlj
YXRlLmR1bXB9XCIiKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAg
ICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiZW5kIgorICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3Jv
IgorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwYXJzZUVycm9yIHVubGVz
cyBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlk
eF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1h
Y3JvVmFyaWFibGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndo
aWxlIGluc2lkZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAg
IGxpc3QgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAg
ICAgIGVsc2lmIGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2lu
ID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhd
LnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlk
eCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkK
KyAgICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5kIGl0J3MgdGhlIGxhc3Qg
b25lLgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUs
IFtdKQorICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxu
IgorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLgorICAgICAgICAgIGxpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBJdCdzIGRlZmluaXRlbHkgYW4gaW5zdHJ1
Y3Rpb24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJhbmQuCisgICAgICAgICAgb3BlcmFu
ZHMgPSBbXQorICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxzZQorICAgICAgICAgIGxvb3Ag
eworICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2Yg
aW5zdHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4
ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQor
ICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uIGFuZCBvZiB0aGUgc2Vx
dWVuY2UuCisgICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSB0cnVlCisgICAgICAgICAgICAg
IGJyZWFrCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAg
ICAgICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgICAgICMgVGhl
IGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBwYXJzZUVycm9y
KCJFeHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFsfSBhZnRlciAje29wZXJhbmRz
Lmxhc3QuZHVtcH0iKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgfQorICAgICAgICAgIGxp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAg
ICAgIGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgZW5kCisg
ICAgICAgIGVuZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAg
ICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0g
QHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gIigiCisgICAgICAgICAgIyBNYWNybyBpbnZvY2F0aW9uLgorICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBza2lwTmV3TGlu
ZQorICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgICAgc2tp
cE5ld0xpbmUKKyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAg
ICAgICAgICAgICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQorICAgICAgICAgICAgICAgIGNvZGVP
cmlnaW5Jbm5lciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMK
KyAgICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBp
bnNpZGUgb2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1bWVudCB0byAje25hbWV9IikK
KyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBN
YWNyby5uZXcoY29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlhYmxlcywgYm9keSkKKyAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hp
bGUgaW5zaWRlIG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgIGVuZAor
ICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhd
ID09ICIpIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGJyZWFr
CisgICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZUVy
cm9yICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5zcGVjdH0gd2hpbGUgcGFy
c2luZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgfQorICAgICAgICAgIGVuZAorICAgICAgICAgIGxpc3QgPDwgTWFjcm9DYWxsLm5l
dyhjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBh
cnNlRXJyb3IgIkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFtZX0iCisgICAgICAgIGVuZAorICAg
ICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0Bp
ZHhdCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAg
ICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI6IgorICAgICAgICAjIEl0J3Mg
YSBsYWJlbC4KKyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAgICAgbGlzdCA8PCBMYWJl
bC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVsc2UKKyAgICAgICAgICBsaXN0
IDw8IExvY2FsTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbmQKKyAg
ICAgICAgQGlkeCArPSAxCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgIkV4cGVjdGlu
ZyB0ZXJtaW5hbCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAgICAgZW5kCisgICAgfQorICAgIFNl
cXVlbmNlLm5ldyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisgIGVuZAorZW5kCisKK2RlZiBwYXJz
ZSh0b2tlbnMpCisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9rZW5zKQorICBwYXJzZXIucGFyc2VT
ZXF1ZW5jZShuaWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3JlZ2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK0dQUlMgPQorICBbCisg
ICAidDAiLAorICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMiLAorICAgInQ0IiwKKyAgICJjZnIi
LAorICAgImEwIiwKKyAgICJhMSIsCisgICAicjAiLAorICAgInIxIiwKKyAgICJzcCIsCisgICAi
bHIiCisgIF0KKworRlBSUyA9CisgIFsKKyAgICJmdDAiLAorICAgImZ0MSIsCisgICAiZnQyIiwK
KyAgICJmdDMiLAorICAgImZ0NCIsCisgICAiZnQ1IiwKKyAgICJmYTAiLAorICAgImZhMSIsCisg
ICAiZmEyIiwKKyAgICJmYTMiLAorICAgImZyIgorICBdCisKK1JFR0lTVEVSUyA9IEdQUlMgKyBG
UFJTCisKK0dQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgR1BSUy5qb2luKCcpfCgn
KSArICcpKVxcWicpCitGUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMuam9p
bignKXwoJykgKyAnKSlcXFonKQorCitSRUdJU1RFUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxB
KCgnICsgUkVHSVNURVJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZWxmX2hhc2gucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZWxmX2hhc2gucmIJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K3JlcXVpcmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAicGF0aG5hbWUiCisKKyMKKyMgc2VsZkhh
c2ggLT4gU0hBMSBoZXhkaWdlc3QKKyMKKyMgUmV0dXJucyBhIGhhc2ggb2YgdGhlIG9mZmxpbmVh
c20gc291cmNlIGNvZGUuIFRoaXMgYWxsb3dzIGRlcGVuZGVuY3kKKyMgdHJhY2tpbmcgZm9yIG5v
dCBqdXN0IGNoYW5nZXMgaW4gaW5wdXQsIGJ1dCBhbHNvIGNoYW5nZXMgaW4gdGhlIGFzc2VtYmxl
cgorIyBpdHNlbGYuCisjCisKK2RlZiBzZWxmSGFzaAorICBjb250ZW50cyA9ICIiCisgIG15UGF0
aCA9IFBhdGhuYW1lLm5ldyhfX0ZJTEVfXykuZGlybmFtZQorICBEaXIuZm9yZWFjaChteVBhdGgp
IHsKKyAgICB8IGVudHJ5IHwKKyAgICBpZiBlbnRyeSA9fiAvXC5yYiQvCisgICAgICBjb250ZW50
cyArPSBJTzo6cmVhZChteVBhdGggKyBlbnRyeSkKKyAgICBlbmQKKyAgfQorICByZXR1cm4gRGln
ZXN0OjpTSEExLmhleGRpZ2VzdChjb250ZW50cykKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDIwNSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVx
dWlyZSAiYXN0IgorcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJl
ICJ0cmFuc2Zvcm0iCisKKyMKKyMgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgLT4g
c2V0dGluZ3NDb21iaWF0aW9ucworIworIyBDb21wdXRlcyBhbiBhcnJheSBvZiBzZXR0aW5ncyBt
YXBzLCB3aGVyZSBhIHNldHRpbmdzIG1hcCBjb25zdGl0dXRlcworIyBhIGNvbmZpZ3VyYXRpb24g
Zm9yIHRoZSBhc3NlbWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIG1hcAorIyBjb250YWlu
cyBrZXkgdmFsdWUgcGFpcnMgd2hlcmUga2V5cyBhcmUgc2V0dGluZ3MgbmFtZXMgKHN0cmluZ3Mp
IGFuZAorIyB0aGUgdmFsdWVzIGFyZSBib29sZWFucyAodHJ1ZSBmb3IgZW5hYmxlZCwgZmFsc2Ug
Zm9yIGRpc2FibGVkKS4KKyMKKworZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3Qp
CisgIHNldHRpbmdzQ29tYmluYXRpb25zID0gW10KKyAgCisgIGRlZiBzZXR0aW5nc0NvbWJpbmF0
b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG1hcFNvRmFyLCByZW1haW5pbmcpCisgICAgaWYgcmVt
YWluaW5nLmVtcHR5PworICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFwU29GYXIKKyAg
ICAgIHJldHVybgorICAgIGVuZAorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAg
IG5ld01hcFtyZW1haW5pbmdbMF1dID0gdHJ1ZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0
aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICAgIAorICAgIG5l
d01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gZmFsc2UKKyAg
ICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWlu
aW5nWzEuLi0xXSkKKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21i
aW5hdGlvbnMsIHt9LCAoYXN0LmZpbHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7fHZ8IHYubmFt
ZX0gKyBbIlg4NiIsICJBUk12NyJdKS51bmlxKQorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMK
K2VuZAorCisjCisjIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgeworIyAgICAg
fCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8IC4uLiB9CisjCisjIERl
dGVybWluZXMgaWYgdGhlIHNldHRpbmdzIGNvbWJpbmF0aW9uIGlzIHZhbGlkLCBhbmQgaWYgc28s
IGNhbGxzCisjIHRoZSBibG9jayB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgbmVlZCB0byBnZW5l
cmF0ZSBjb2RlLgorIworCitkZWYgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KQor
ICAjIENoZWNrIHdoaWNoIGFyY2hpdGVjdHVyZXMgdGhpcyBjb21iaW5hdG9yIGNsYWltcyB0byBz
dXBwb3J0LgorICBudW1DbGFpbWVkQmFja2VuZHMgPSAwCisgIHNlbGVjdGVkQmFja2VuZCA9IG5p
bAorICBCQUNLRU5EUy5lYWNoIHsKKyAgICB8IGJhY2tlbmQgfAorICAgIGlzU3VwcG9ydGVkID0g
Y29uY3JldGVTZXR0aW5nc1tiYWNrZW5kXQorICAgIHJhaXNlIHVubGVzcyBpc1N1cHBvcnRlZCAh
PSBuaWwKKyAgICBudW1DbGFpbWVkQmFja2VuZHMgKz0gaWYgaXNTdXBwb3J0ZWQgdGhlbiAxIGVs
c2UgMCBlbmQKKyAgICBpZiBpc1N1cHBvcnRlZAorICAgICAgc2VsZWN0ZWRCYWNrZW5kID0gYmFj
a2VuZAorICAgIGVuZAorICB9CisgIAorICByZXR1cm4gaWYgbnVtQ2xhaW1lZEJhY2tlbmRzID4g
MQorICAKKyAgIyBSZXNvbHZlIHRoZSBBU1QgZG93biB0byBhIGxvdy1sZXZlbCBmb3JtIChubyBt
YWNyb3Mgb3IgY29uZGl0aW9uYWxzKS4KKyAgbG93TGV2ZWxBU1QgPSBhc3QucmVzb2x2ZVNldHRp
bmdzKGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dM
ZXZlbEFTVCwgc2VsZWN0ZWRCYWNrZW5kCitlbmQKKworIworIyBmb3JFYWNoVmFsaWRTZXR0aW5n
c0NvbWJpbmF0aW9uKGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tl
bmQsIGluZGV4IHwgLi4uIH0KKyMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihh
c3QsIHNldHRpbmdzQ29tYmluYXRpb25zKSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFz
dCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBFeGVjdXRlcyB0aGUgZ2l2ZW4gYmxvY2sg
Zm9yIGVhY2ggdmFsaWQgc2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlCisjIHNldHRpbmdzIG1h
cC4gVGhlIGFzdCBwYXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQKKyMgKGFzdC5yZXNv
bHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4KKyMKKyMgVGhlIGZpcnN0IGZvcm0gd2lsbCBjYWxs
IGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIGZvciB5b3UuCisjCisKK2RlZiBmb3JF
YWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgKm9wdGlvbmFsU2V0dGluZ3NDb21iaW5h
dGlvbnMpCisgIHJhaXNlIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEK
KyAgCisgIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuZW1wdHk/CisgICAgc2V0dGlu
Z3NDb21iaW5hdGlvbnMgPSBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBlbHNl
CisgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBvcHRpb25hbFNldHRpbmdzQ29tYmlhdGlvbnNb
MF0KKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucy5lYWNoX3dpdGhfaW5kZXggewor
ICAgIHwgY29uY3JldGVTZXR0aW5ncywgaW5kZXggfAorICAgIGZvclNldHRpbmdzKGNvbmNyZXRl
U2V0dGluZ3MsIGFzdCkgeworICAgICAgfCBjb25jcmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1Qs
IGJhY2tlbmQgfAorICAgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJh
Y2tlbmQsIGluZGV4CisgICAgfQorICB9CitlbmQKKworIworIyBjcHBTZXR0aW5nc1Rlc3QoY29u
Y3JldGVTZXR0aW5ncykKKyMKKyMgUmV0dXJucyB0aGUgQysrIGNvZGUgdXNlZCB0byB0ZXN0IGlm
IHdlIGFyZSBpbiBhIGNvbmZpZ3VyYXRpb24gdGhhdAorIyBjb3JyZXNwb25kcyB0byB0aGUgZ2l2
ZW4gY29uY3JldGUgc2V0dGluZ3MuCisjCisKK2RlZiBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVT
ZXR0aW5ncykKKyAgIiNpZiAiICsgY29uY3JldGVTZXR0aW5ncy50b19hLmNvbGxlY3R7CisgICAg
fCBwYWlyIHwKKyAgICAoaWYgcGFpclsxXQorICAgICAgICIiCisgICAgIGVsc2UKKyAgICAgICAi
ISIKKyAgICAgZW5kKSArICJPRkZMSU5FX0FTTV8iICsgcGFpclswXQorICB9LmpvaW4oIiAmJiAi
KQorZW5kCisKKyMKKyMgaXNBU1RFcnJvbmVvdXMoYXN0KQorIworIyBUZXN0cyB0byBzZWUgaWYg
dGhlIEFTVCBjbGFpbXMgdGhhdCB0aGVyZSBpcyBhbiBlcnJvciAtIGkuZS4gaWYgdGhlCisjIHVz
ZXIncyBjb2RlLCBhZnRlciBzZXR0aW5ncyByZXNvbHV0aW9uLCBoYXMgRXJyb3Igbm9kZXMuCisj
CisKK2RlZiBpc0FTVEVycm9uZW91cyhhc3QpCisgIG5vdCBhc3QuZmlsdGVyKEVycm9yKS5lbXB0
eT8KK2VuZAorCisjCisjIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyMK
KyMgRW1pdHMgYSBjaGVjayB0aGF0IGFzc2VydHMgdGhhdCB3ZSdyZSB1c2luZyB0aGUgZ2l2ZW4g
Y29uZmlndXJhdGlvbi4KKyMKKworZGVmIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0
aW5ncykKKyAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQor
ICAkb3V0cHV0LnB1dHMgIiNlbHNlIgorICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIkNvbmZpZ3Vy
YXRpb24gbWlzbWF0Y2guXCIiCisgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMKKyMg
ZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKSB7
CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCB8IC4uLiB9CisjCisjIEVt
aXRzIGFsbCByZWxldmFudCBndWFyZHMgdG8gc2VlIGlmIHRoZSBjb25maWd1cmF0aW9uIGhvbGRz
IGFuZAorIyBjYWxscyB0aGUgYmxvY2sgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGVycm9u
ZW91cy4KKyMKKworZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3Ms
IGFzdCwgYmFja2VuZCkKKyAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNl
dHRpbmdzKQorICAKKyAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAgICRvdXRwdXQucHV0cyAi
I2Vycm9yIFwiSW52YWxpZCBjb25maWd1cmF0aW9uLlwiIgorICBlbHNpZiBub3QgV09SS0lOR19C
QUNLRU5EUy5pbmNsdWRlPyBiYWNrZW5kCisgICAgJG91dHB1dC5wdXRzICIjZXJyb3IgXCJUaGlz
IGJhY2tlbmQgaXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UKKyAgICB5aWVsZCBjb25j
cmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICAkb3V0cHV0LnB1dHMgIiNl
bmRpZiIKK2VuZAorCisjCisjIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3QpIHsKKyMg
ICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9CisjCisj
IEVtaXRzIGd1YXJkIGNvZGVzIGZvciBhbGwgdmFsaWQgY29uZmlndXJhdGlvbnMsIGFuZCBjYWxs
cyB0aGUgYmxvY2sKKyMgZm9yIHRob3NlIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHZhbGlkIGFu
ZCBub3QgZXJyb25lb3VzLgorIworCitkZWYgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFz
dCkKKyAgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsKKyAgICB8IGNvbmNy
ZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleCB8CisgICAgJG91dHB1dC5w
dXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAgIHlpZWxkIGNvbmNyZXRl
U2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgICRvdXRwdXQucHV0cyAi
I2VuZGlmIgorICB9CitlbmQKKworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3RyYW5zZm9ybS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQy
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3Qi
CisKKyMKKyMgbm9kZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisjCisjIENvbnN0cnVjdCBh
IG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBJZlRoZW5FbHNlIG5vZGVzIGJ5CisjIHN1
YnN0aXR1dGluZyBjb25jcmV0ZSBib29sZWFuIHZhbHVlcyBmb3IgZWFjaCBTZXR0aW5nLgorIwor
CitjbGFzcyBOb2RlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgbWFwQ2hp
bGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlCisgIGRlZiByZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZQorICBk
ZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xh
c3MgU2V0dGluZworICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNldHRpbmdz
W0BuYW1lXS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kCisgIGRlZiByZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFs
dWUgYW5kIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAg
ZW5kCitlbmQKKworY2xhc3MgT3IKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAg
ICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBvciBAcmlnaHQucmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE5v
dAorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChub3QgQGNoaWxkLnJlc29s
dmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBJ
ZlRoZW5FbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgaWYgQHByZWRp
Y2F0ZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlCisgICAgICBAdGhlbkNhc2UucmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIGVsc2UKKyAgICAgIEBlbHNlQ2FzZS5yZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNl
CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgbmV3TGlzdCA9IFtdCisgICAg
QGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaXRlbSA9IGl0ZW0ucmVzb2x2ZVNl
dHRpbmdzKHNldHRpbmdzKQorICAgICAgaWYgaXRlbS5pc19hPyBTZXF1ZW5jZQorICAgICAgICBu
ZXdMaXN0ICs9IGl0ZW0ubGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0K
KyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkK
KyAgZW5kCitlbmQKKworIworIyBub2RlLmRlbWFjcm9pZnkobWFjcm9zKQorIyBub2RlLnN1YnN0
aXR1dGUobWFwcGluZykKKyMKKyMgZGVtYWNyb2lmeSgpIGNvbnN0cnVjdHMgYSBuZXcgQVNUIHRo
YXQgZG9lcyBub3QgaGF2ZSBhbnkgTWFjcm8KKyMgbm9kZXMsIHdoaWxlIHN1YnN0aXR1dGUoKSBy
ZXBsYWNlcyBWYXJpYWJsZSBub2RlcyB3aXRoIHRoZSBnaXZlbgorIyBub2RlcyBpbiB0aGUgbWFw
cGluZy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbWFw
Q2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5kZW1hY3JvaWZ5KG1hY3Jv
cykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBtYXBD
aGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobWFwcGlu
ZykKKyAgICB9CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAg
ICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGVM
YWJlbHMobWFwcGluZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvCisgIGRlZiBz
dWJzdGl0dXRlKG1hcHBpbmcpCisgICAgbXlNYXBwaW5nID0ge30KKyAgICBtYXBwaW5nLmVhY2hf
cGFpciB7CisgICAgICB8IGtleSwgdmFsdWUgfAorICAgICAgdW5sZXNzIEB2YXJpYWJsZXMuaW5j
bHVkZT8ga2V5CisgICAgICAgIG15TWFwcGluZ1trZXldID0gdmFsdWUKKyAgICAgIGVuZAorICAg
IH0KKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0
aXR1dGUobXlNYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUKKyAg
ZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBw
aW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitj
bGFzcyBMb2NhbExhYmVsCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgaWYg
bWFwcGluZ1tzZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNlbGYK
KyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHN1YnN0aXR1dGUo
Y29uc3RhbnRzKQorICAgIG5ld0xpc3QgPSBbXQorICAgIG15Q29uc3RhbnRzID0gY29uc3RhbnRz
LmR1cAorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNf
YT8gQ29uc3REZWNsCisgICAgICAgIG15Q29uc3RhbnRzW2l0ZW0udmFyaWFibGVdID0gaXRlbS52
YWx1ZS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0
IDw8IGl0ZW0uc3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgIGVuZAorICAgIH0KKyAgICBT
ZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5kCisgIAorICBkZWYgcmVuYW1l
TGFiZWxzKGNvbW1lbnQpCisgICAgbWFwcGluZyA9IHt9CisgICAgCisgICAgQGxpc3QuZWFjaCB7
CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBMb2NhbExhYmVsCisgICAgICAg
IG1hcHBpbmdbaXRlbV0gPSBMb2NhbExhYmVsLnVuaXF1ZShpZiBjb21tZW50IHRoZW4gY29tbWVu
dCArICJfIiBlbHNlICIiIGVuZCArIGl0ZW0uY2xlYW5OYW1lKQorICAgICAgZW5kCisgICAgfQor
ICAgIAorICAgIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgZW5kCisgIAorICBkZWYgZGVt
YWNyb2lmeShtYWNyb3MpCisgICAgbXlNYWNyb3MgPSBtYWNyb3MuZHVwCisgICAgQGxpc3QuZWFj
aCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICBt
eU1hY3Jvc1tpdGVtLm5hbWVdID0gaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3Qg
PSBbXQorICAgIEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNf
YT8gTWFjcm8KKyAgICAgICAgIyBJZ25vcmUuCisgICAgICBlbHNpZiBpdGVtLmlzX2E/IE1hY3Jv
Q2FsbAorICAgICAgICBtYXBwaW5nID0ge30KKyAgICAgICAgbXlNeU1hY3JvcyA9IG15TWFjcm9z
LmR1cAorICAgICAgICByYWlzZSAiQ291bGQgbm90IGZpbmQgbWFjcm8gI3tpdGVtLm5hbWV9IGF0
ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG15TWFjcm9zW2l0ZW0ubmFtZV0KKyAg
ICAgICAgcmFpc2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxsIHRvICN7aXRlbS5u
YW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVtLm9wZXJhbmRzLnNp
emUgPT0gbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQorICAgICAgICBpdGVtLm9w
ZXJhbmRzLnNpemUudGltZXMgeworICAgICAgICAgIHwgaWR4IHwKKyAgICAgICAgICBpZiBpdGVt
Lm9wZXJhbmRzW2lkeF0uaXNfYT8gVmFyaWFibGUgYW5kIG15TWFjcm9zW2l0ZW0ub3BlcmFuZHNb
aWR4XS5uYW1lXQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZh
cmlhYmxlc1tpZHhdLm5hbWVdID0gbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisg
ICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFt
ZV0gPSBuaWwKKyAgICAgICAgICBlbHNpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gTWFjcm8K
KyAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4
XS5uYW1lXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jv
c1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhd
XSA9IG5pbAorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxl
c1tpZHhdXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgIGVuZAorICAgICAgICB9Cisg
ICAgICAgIG5ld0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5LnN1YnN0aXR1dGUobWFw
cGluZykuZGVtYWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMoaXRlbS5uYW1lKS5saXN0
CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5kZW1hY3JvaWZ5KG15TWFjcm9z
KQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0
KS5zdWJzdGl0dXRlKHt9KQorICBlbmQKK2VuZAorCisjCisjIG5vZGUucmVzb2x2ZU9mZnNldHMo
b2Zmc2V0cywgc2l6ZXMpCisjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBoYXMgb2Zmc2V0
IHZhbHVlcyBpbnN0ZWFkIG9mIHN5bWJvbGljCisjIG9mZnNldHMuCisjCisKK2NsYXNzIE5vZGUK
KyAgZGVmIHJlc29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIG1hcENoaWxkcmVuIHsK
KyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6
ZXMpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXQKKyAgZGVmIHJlc29s
dmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIGlmIG9mZnNldHNbc2VsZl0KKyAgICAgIElt
bWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0c1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBz
ZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZgorICBkZWYgcmVzb2x2ZU9m
ZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgc2l6ZXNbc2VsZl0KKyAgICAgIEltbWVkaWF0
ZS5uZXcoY29kZU9yaWdpbiwgc2l6ZXNbc2VsZl0pCisgICAgZWxzZQorICAgICAgcHV0cyAiQ291
bGQgbm90IGZpbmQgI3tzZWxmLmluc3BlY3R9IGluICN7c2l6ZXMua2V5cy5pbnNwZWN0fSIKKyAg
ICAgIHB1dHMgInNpemVzID0gI3tzaXplcy5pbnNwZWN0fSIKKyAgICAgIHNlbGYKKyAgICBlbmQK
KyAgZW5kCitlbmQKKworIworIyBub2RlLmZvbGQKKyMKKyMgUmVzb2x2ZSBjb25zdGFudCByZWZl
cmVuY2VzIGFuZCBjb21wdXRlIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMuCisjCisKK2NsYXNzIE5v
ZGUKKyAgZGVmIGZvbGQKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAg
IGNoaWxkLmZvbGQKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMKKyAg
ZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9s
ZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1
cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXco
Y29kZU9yaWdpbiwgQGxlZnQudmFsdWUgKyBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2Ns
YXNzIFN1YkltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAg
ICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19h
PyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0
ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgLSBAcmlnaHQudmFs
dWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBA
bGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBz
ZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3Mg
QHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxl
ZnQudmFsdWUgKiBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0
ZQorICBkZWYgZm9sZAorICAgIEBjaGlsZCA9IEBjaGlsZC5mb2xkCisgICAgcmV0dXJuIHNlbGYg
dW5sZXNzIEBjaGlsZC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmln
aW4sIC1AY2hpbGQudmFsdWUpCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5yZXNvbHZlQWZ0ZXJT
ZXR0aW5ncyhvZmZzZXRzLCBzaXplcykKKyMKKyMgQ29tcGlsZSBhc3NlbWJseSBhZ2FpbnN0IGEg
c2V0IG9mIG9mZnNldHMuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmUob2Zmc2V0cywg
c2l6ZXMpCisgICAgZGVtYWNyb2lmeSh7fSkucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMp
LmZvbGQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20veDg2LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3g4Ni5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3g4Ni5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2ODEgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIHN1cHBvcnRzOEJp
dE9uWDg2CisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiLCAidDEiLCAi
YTEiLCAicjEiLCAidDIiLCAidDMiCisgICAgICB0cnVlCisgICAgd2hlbiAidDQiLCAiY2ZyIgor
ICAgICAgZmFsc2UKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisg
IGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAi
LCAicjAiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVhbCIK
KyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVheCIKKyAgICAgIHdoZW4gOmludAorICAgICAg
ICAiJWVheCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4g
InQxIiwgImExIiwgInIxIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAg
ICAgICIlZGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZHgiCisgICAgICB3aGVuIDpp
bnQKKyAgICAgICAgIiVlZHgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQK
KyAgICB3aGVuICJ0MiIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAg
ICAiJWNsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWN4IgorICAgICAgd2hlbiA6aW50
CisgICAgICAgICIlZWN4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisg
ICAgd2hlbiAidDMiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAg
IiVibCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVieCIKKyAgICAgIHdoZW4gOmludAor
ICAgICAgICAiJWVieCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAg
IHdoZW4gInQ0IgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIl
c2lsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNpIgorICAgICAgd2hlbiA6aW50Cisg
ICAgICAgICIlZXNpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAg
d2hlbiAiY2ZyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIl
ZGlsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWRpIgorICAgICAgd2hlbiA6aW50Cisg
ICAgICAgICIlZWRpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAg
d2hlbiAic3AiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVz
cGwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc3AiCisgICAgICB3aGVuIDppbnQKKyAg
ICAgICAgIiVlc3AiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBl
bHNlCisgICAgICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIFg4NiBhdCAje2NvZGVP
cmlnaW5TdHJpbmd9IgorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQp
CisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lz
dGVySUQKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICByYWlzZSB1bmxlc3Mga2luZCA9PSA6
ZG91YmxlCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZhMCIsICJmciIKKyAgICAg
ICIleG1tMCIKKyAgICB3aGVuICJmdDEiLCAiZmExIgorICAgICAgIiV4bW0xIgorICAgIHdoZW4g
ImZ0MiIsICJmYTIiCisgICAgICAiJXhtbTIiCisgICAgd2hlbiAiZnQzIiwgImZhMyIKKyAgICAg
ICIleG1tMyIKKyAgICB3aGVuICJmdDQiCisgICAgICAiJXhtbTQiCisgICAgd2hlbiAiZnQ1Igor
ICAgICAgIiV4bW01IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQgcmVnaXN0ZXIgI3tuYW1l
fSBmb3IgWDg2IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgIGVuZAorICBkZWYg
eDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAor
ZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIkI3t2
YWx1ZX0iCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiI3t2YWx1ZX0i
CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2Cisg
ICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0
LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0pIgorICBlbmQKKyAgZGVmIHg4NkNhbGxP
cGVyYW5kKGtpbmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitj
bGFzcyBCYXNlSW5kZXgKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQK
KyAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2Uu
eDg2T3BlcmFuZCg6aW50KX0sICN7aW5kZXgueDg2T3BlcmFuZCg6aW50KX0sICN7c2NhbGV9KSIK
KyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nm9wZXJhbmQo
a2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIHN1cHBv
cnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQp
CisgICAgIiN7YWRkcmVzcy52YWx1ZX0iCisgIGVuZAorCisgIGRlZiB4ODZDYWxsT3BlcmFuZChr
aW5kKQorICAgICIqI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxS
ZWZlcmVuY2UKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgYXNtTGFiZWwKKyAgZW5k
CitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2Q2FsbE9wZXJhbmQo
a2luZCkKKyAgICBhc21MYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbgorICBk
ZWYgeDg2T3BlcmFuZHMoKmtpbmRzKQorICAgIHJhaXNlIHVubGVzcyBraW5kcy5zaXplID09IG9w
ZXJhbmRzLnNpemUKKyAgICByZXN1bHQgPSBbXQorICAgIGtpbmRzLnNpemUudGltZXMgeworICAg
ICAgfCBpZHggfAorICAgICAgcmVzdWx0IDw8IG9wZXJhbmRzW2lkeF0ueDg2T3BlcmFuZChraW5k
c1tpZHhdKQorICAgIH0KKyAgICByZXN1bHQuam9pbigiLCAiKQorICBlbmQKKworICBkZWYgeDg2
U3VmZml4KGtpbmQpCisgICAgY2FzZSBraW5kCisgICAgd2hlbiA6Ynl0ZQorICAgICAgImIiCisg
ICAgd2hlbiA6aGFsZgorICAgICAgInciCisgICAgd2hlbiA6aW50CisgICAgICAibCIKKyAgICB3
aGVuIDpkb3VibGUKKyAgICAgICJzZCIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAor
ICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQs
IG51bU9wZXJhbmRzKQorICAgIGlmIG51bU9wZXJhbmRzID09IDMKKyAgICAgIGlmIG9wZXJhbmRz
WzBdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0i
CisgICAgICBlbHNpZiBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1
dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRz
WzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgIm1v
diN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29w
ZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2Rl
fSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJh
bmQoa2luZCl9IgorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICIje29wY29k
ZX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3Aob3Bjb2Rl
LCBraW5kKQorICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3Bl
cmFuZHMuc2l6ZSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2hpZnQob3Bjb2RlLCBraW5k
KQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBvciBvcGVyYW5kc1swXSA9PSBS
ZWdpc3RlcklELmZvck5hbWUobmlsLCAidDIiKQorICAgICAgJGFzbS5wdXRzICIje29wY29kZX0g
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZChraW5kKX0iCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJ4Y2hnbCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gJWNs
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgJGFzbS5wdXRzICJ4Y2hn
bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgIGVuZAorICBlbmQK
KyAgCisgIGRlZiBoYW5kbGVYODZEb3VibGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAg
IGNhc2UgbW9kZQorICAgIHdoZW4gOm5vcm1hbAorICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0iCisgICAgd2hlbiA6cmV2ZXJzZQorICAgICAgJGFzbS5wdXRzICJ1Y29taXNk
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0iCisgICAgZWxzZQorICAgICAgcmFpc2UgbW9kZS5pbnNwZWN0CisgICAg
ZW5kCisgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS5hc21MYWJl
bH0iCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmUob3Bjb2RlU3VmZml4LCBr
aW5kKQorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMF0u
dmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1
ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgInRl
c3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAg
ICBlbHNpZiBvcGVyYW5kc1sxXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzFdLnZhbHVl
ID09IDAgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXgg
PT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4
ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxz
ZQorICAgICAgJGFzbS5wdXRzICJjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBl
bmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50QnJhbmNoKGJyYW5jaE9wY29kZSwga2lu
ZCkKKyAgICBoYW5kbGVYODZJbnRDb21wYXJlKGJyYW5jaE9wY29kZVsxLi4tMV0sIGtpbmQpCisg
ICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisg
IGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmQpCisgICAgaWYg
b3BlcmFuZC5zdXBwb3J0czhCaXRPblg4NgorICAgICAgJGFzbS5wdXRzICIje3NldE9wY29kZX0g
I3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSIKKyAgICAgICRhc20ucHV0cyAibW92emJsICN7
b3BlcmFuZC54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDpp
bnQpfSwgJWVheCIKKyAgICAgICRhc20ucHV0cyAiI3tzZXRPcGNvZGV9ICVhbCIKKyAgICAgICRh
c20ucHV0cyAibW92emJsICVhbCwgJWVheCIKKyAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVy
YW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBo
YW5kbGVYODZJbnRDb21wYXJlU2V0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZJbnRD
b21wYXJlKHNldE9wY29kZVszLi4tMV0sIGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29k
ZSwgb3BlcmFuZHNbMl0pCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAg
ICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiAy
CisgICAgICBtYXNrID0gSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtMSkKKyAgICB3aGVuIDMK
KyAgICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJFeHBlY3Rl
ZCAyIG9yIDMgb3BlcmFuZHMsIGJ1dCBnb3QgI3tvcGVyYW5kcy5zaXplfSBhdCAje2NvZGVPcmln
aW5TdHJpbmd9IgorICAgIGVuZAorICAgIAorICAgIGlmIG1hc2suaXNfYT8gSW1tZWRpYXRlIGFu
ZCBtYXNrLnZhbHVlID09IC0xCisgICAgICBpZiB2YWx1ZS5pc19hPyBSZWdpc3RlcklECisgICAg
ICAgICRhc20ucHV0cyAidGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQo
a2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAk
YXNtLnB1dHMgImNtcCN7eDg2U3VmZml4KGtpbmQpfSAkMCwgI3t2YWx1ZS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAidGVzdCN7eDg2U3Vm
Zml4KGtpbmQpfSAje21hc2sueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChr
aW5kKX0iCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkJyYW5jaFRlc3QoYnJh
bmNoT3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICAkYXNtLnB1dHMg
IiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzLmxhc3QuYXNtTGFiZWx9IgorICBlbmQKKyAgCisg
IGRlZiBoYW5kbGVYODZTZXRUZXN0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0
KGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHMubGFzdCkKKyAgZW5k
CisgIAorICBkZWYgaGFuZGxlWDg2T3BCcmFuY2gob3Bjb2RlLCBicmFuY2hPcGNvZGUsIGtpbmQp
CisgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5z
aXplIC0gMSkKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAgIGp1bXBU
YXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9IG9wZXJh
bmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5kCisgICAg
JGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0LmFzbUxhYmVsfSIKKyAgZW5k
CisgIAorICBkZWYgaGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBp
ZiBvcGVyYW5kcy5zaXplID09IDQgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAg
ICAkYXNtLnB1dHMgIm5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
ICRhc20ucHV0cyAiYWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIGhhbmRsZVg4Nk9wV2l0
aE51bU9wZXJhbmRzKCJzdWIje3g4NlN1ZmZpeChraW5kKX0iLCBraW5kLCBvcGVyYW5kcy5zaXpl
IC0gMSkKKyAgICBlbmQKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAg
IGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9
IG9wZXJhbmRzWzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5k
CisgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0LmFzbUxhYmVsfSIK
KyAgZW5kCisgIAorICBkZWYgbG93ZXJYODYKKyAgICAkYXNtLmNvbW1lbnQgY29kZU9yaWdpblN0
cmluZworICAgIGNhc2Ugb3Bjb2RlCisgICAgd2hlbiAiYWRkaSIsICJhZGRwIgorICAgICAgaWYg
b3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAg
ICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFp
c2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgaWYgb3BlcmFu
ZHNbMF0udmFsdWUgPT0gMAorICAgICAgICAgIHVubGVzcyBvcGVyYW5kc1sxXSA9PSBvcGVyYW5k
c1syXQorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAgZW5k
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAkYXNtLnB1dHMgImxlYWwgI3tvcGVyYW5kc1swXS52
YWx1ZX0oI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9
PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVz
cyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVy
YW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAibGVhbCAoI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQp
fSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAg
IHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAk
YXNtLnB1dHMgImFkZGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgICAgIGVuZAor
ICAgICAgZW5kCisgICAgd2hlbiAiYW5kaSIsICJhbmRwIgorICAgICAgaGFuZGxlWDg2T3AoImFu
ZGwiLCA6aW50KQorICAgIHdoZW4gImxzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2Fs
bCIsIDppbnQpCisgICAgd2hlbiAibXVsaSIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBh
bmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICRhc20ucHV0cyAiaW11bGwg
I3t4ODZPcGVyYW5kcyg6aW50LCA6aW50LCA6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgICMg
RklYTUU6IGNvdWxkIGRvIHNvbWUgcGVlcGhvbGUgaW4gY2FzZSB0aGUgbGVmdCBvcGVyYW5kIGlz
IGltbWVkaWF0ZSBhbmQgaXQncworICAgICAgICAjIGEgcG93ZXIgb2YgdHdvLgorICAgICAgICBo
YW5kbGVYODZPcCgiaW11bGwiLCA6aW50KQorICAgICAgZW5kCisgICAgd2hlbiAibmVnaSIKKyAg
ICAgICRhc20ucHV0cyAibmVnbCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJub3Rp
IgorICAgICAgJGFzbS5wdXRzICJub3RsICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4g
Im9yaSIsICJvcnAiCisgICAgICBoYW5kbGVYODZPcCgib3JsIiwgOmludCkKKyAgICB3aGVuICJy
c2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNhcmwiLCA6aW50KQorICAgIHdoZW4gInVy
c2hpZnRpIgorICAgICAgaGFuZGxlWDg2U2hpZnQoInNocmwiLCA6aW50KQorICAgIHdoZW4gInN1
YmkiLCAic3VicCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMV0g
PT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJuZWdsICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgICAgICRhc20ucHV0cyAiYWRkbCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
ZWxzZQorICAgICAgICBoYW5kbGVYODZPcCgic3VibCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3
aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICBoYW5kbGVYODZPcCgieG9ybCIsIDppbnQpCisgICAg
d2hlbiAibG9hZGkiLCAic3RvcmVpIiwgImxvYWRwIiwgInN0b3JlcCIKKyAgICAgICRhc20ucHV0
cyAibW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICB3aGVuICJsb2FkYiIKKyAg
ICAgICRhc20ucHV0cyAibW92emJsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImxvYWRicyIKKyAgICAg
ICRhc20ucHV0cyAibW92c2JsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImxvYWRoIgorICAgICAgJGFz
bS5wdXRzICJtb3Z6d2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpoYWxmKX0sICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGhzIgorICAgICAgJGFzbS5w
dXRzICJtb3Zzd2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpoYWxmKX0sICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAic3RvcmViIgorICAgICAgJGFzbS5wdXRz
ICJtb3ZiICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0iCisgICAgd2hlbiAibG9hZGQiLCAi
bW92ZWQiLCAic3RvcmVkIgorICAgICAgJGFzbS5wdXRzICJtb3ZzZCAje3g4Nk9wZXJhbmRzKDpk
b3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJhZGRkIgorICAgICAgJGFzbS5wdXRzICJhZGRz
ZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJkaXZkIgorICAg
ICAgJGFzbS5wdXRzICJkaXZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAg
ICB3aGVuICJzdWJkIgorICAgICAgJGFzbS5wdXRzICJzdWJzZCAje3g4Nk9wZXJhbmRzKDpkb3Vi
bGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJtdWxkIgorICAgICAgJGFzbS5wdXRzICJtdWxzZCAj
e3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJzcXJ0ZCIKKyAgICAg
ICRhc20ucHV0cyAic3FydHNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiY2kyZCIKKyAgICAg
ICRhc20ucHV0cyAiY3Z0c2kyc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJiZGVxIgorICAgICAg
aXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRlcSIpCisgICAgICAkYXNtLnB1dHMg
InVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAianAgI3tMYWJlbFJlZmVy
ZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICRhc20u
cHV0cyAiamUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgb3BlcmFuZHNbMl0pLmFz
bUxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkbmVx
IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqbmUiLCA6bm9ybWFsKQorICAgIHdoZW4g
ImJkZ3QiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphIiwgOm5vcm1hbCkKKyAgICB3
aGVuICJiZGd0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIsIDpub3JtYWwp
CisgICAgd2hlbiAiYmRsdCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6cmV2
ZXJzZSkKKyAgICB3aGVuICJiZGx0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImph
ZSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJy
YW5jaCgiamUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbmVxdW4iCisgICAgICBpc1Vub3JkZXJl
ZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgIGlzRXF1YWwgPSBMb2NhbExh
YmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSIKKyAgICAgICRhc20ucHV0cyAianAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdp
biwgaXNVbm9yZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiamUgI3tMYWJlbFJl
ZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNFcXVhbCkuYXNtTGFiZWx9IgorICAgICAgaXNVbm9y
ZGVyZWQubG93ZXIoIlg4NiIpCisgICAgICAkYXNtLnB1dHMgImptcCAje29wZXJhbmRzWzJdLmFz
bUxhYmVsfSIKKyAgICAgIGlzRXF1YWwubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRndHVuIgor
ICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJk
Z3RlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6cmV2ZXJzZSkKKyAg
ICB3aGVuICJiZGx0dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOm5vcm1h
bCkKKyAgICB3aGVuICJiZGx0ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamJl
IiwgOm5vcm1hbCkKKyAgICB3aGVuICJidGQyaSIKKyAgICAgICRhc20ucHV0cyAiY3Z0dHNkMnNp
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgImNtcGwgJDB4ODAwMDAwMDAgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiamUgI3tvcGVyYW5kc1sy
XS5hc21MYWJlbH0iCisgICAgd2hlbiAidGQyaSIKKyAgICAgICRhc20ucHV0cyAiY3Z0dHNkMnNp
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgd2hlbiAiYmNkMmkiCisgICAgICAkYXNtLnB1dHMgImN2dHRzZDJz
aSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJ0ZXN0bCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFz
bS5wdXRzICJqZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiY3Z0
c2kyc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNt
LnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTci
CisgICAgICAkYXNtLnB1dHMgImpwICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgJGFz
bS5wdXRzICJqbmUgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAibW92ZHoiCisg
ICAgICAkYXNtLnB1dHMgInhvcnBkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0s
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAicG9wIgorICAg
ICAgJGFzbS5wdXRzICJwb3AgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3
aGVuICJwdXNoIgorICAgICAgJGFzbS5wdXRzICJwdXNoICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6eGkycCIKKyAgICAgIGlmIElt
bWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXSBhbmQgb3BlcmFuZHNbMV0uaXNfYT8g
UmVnaXN0ZXJJRAorICAgICAgICAkYXNtLnB1dHMgInhvcmwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2lm
IG9wZXJhbmRzWzBdICE9IG9wZXJhbmRzWzFdCisgICAgICAgICRhc20ucHV0cyAibW92bCAje3g4
Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgIGVuZAorICAgIHdoZW4gIm5vcCIKKyAgICAg
ICRhc20ucHV0cyAibm9wIgorICAgIHdoZW4gImJpZXEiLCAiYnBlcSIKKyAgICAgIGhhbmRsZVg4
NkludEJyYW5jaCgiamUiLCA6aW50KQorICAgIHdoZW4gImJpbmVxIiwgImJwbmVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6aW50KQorICAgIHdoZW4gImJpYSIsICJicGEiCisg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphIiwgOmludCkKKyAgICB3aGVuICJiaWFlcSIsICJi
cGFlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmludCkKKyAgICB3aGVuICJi
aWIiLCAiYnBiIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDppbnQpCisgICAgd2hl
biAiYmliZXEiLCAiYnBiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDppbnQp
CisgICAgd2hlbiAiYmlndCIsICJicGd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIs
IDppbnQpCisgICAgd2hlbiAiYmlndGVxIiwgImJwZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamdlIiwgOmludCkKKyAgICB3aGVuICJiaWx0IiwgImJwbHQiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImpsIiwgOmludCkKKyAgICB3aGVuICJiaWx0ZXEiLCAiYnBsdGVxIgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbGUiLCA6aW50KQorICAgIHdoZW4gImJiZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJuZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDpieXRlKQorICAgIHdoZW4gImJiYSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmFlcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDpieXRlKQorICAgIHdoZW4gImJiYmVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0IgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDpieXRlKQorICAgIHdoZW4gImJiZ3RlcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamdlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdCIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0ZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpsdGVxIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRpbyIsICJi
dHBvIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6aW50KQorICAgIHdoZW4gImJ0
aXMiLCAiYnRwcyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmludCkKKyAgICB3
aGVuICJidGl6IiwgImJ0cHoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDppbnQp
CisgICAgd2hlbiAiYnRpbnoiLCAiYnRwbnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
bnoiLCA6aW50KQorICAgIHdoZW4gImJ0Ym8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
byIsIDpieXRlKQorICAgIHdoZW4gImJ0YnMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
cyIsIDpieXRlKQorICAgIHdoZW4gImJ0YnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
eiIsIDpieXRlKQorICAgIHdoZW4gImJ0Ym56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgi
am56IiwgOmJ5dGUpCisgICAgd2hlbiAiam1wIgorICAgICAgJGFzbS5wdXRzICJqbXAgI3tvcGVy
YW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiYmFkZGlvIiwgImJhZGRw
byIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpvIiwgOmludCkKKyAgICB3aGVu
ICJiYWRkaXMiLCAiYmFkZHBzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianMi
LCA6aW50KQorICAgIHdoZW4gImJhZGRpeiIsICJiYWRkcHoiCisgICAgICBoYW5kbGVYODZPcEJy
YW5jaCgiYWRkbCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlueiIsICJiYWRkcG56Igor
ICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJi
c3ViaW8iCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpvIiwgOmludCkKKyAgICB3aGVuICJi
c3ViaXMiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpzIiwgOmludCkKKyAgICB3aGVuICJi
c3ViaXoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImp6IiwgOmludCkKKyAgICB3aGVuICJi
c3ViaW56IgorICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbnoiLCA6aW50KQorICAgIHdoZW4g
ImJtdWxpbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbyIsIDppbnQpCisg
ICAgd2hlbiAiYm11bGlzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpzIiwg
OmludCkKKyAgICB3aGVuICJibXVsaXoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwi
LCAianoiLCA6aW50KQorICAgIHdoZW4gImJtdWxpbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5j
aCgiaW11bGwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJib3JpbyIKKyAgICAgIGhhbmRsZVg4
Nk9wQnJhbmNoKCJvcmwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJvcmlzIgorICAgICAgaGFu
ZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXoiCisgICAg
ICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJib3Jpbnoi
CisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAi
YnJlYWsiCisgICAgICAkYXNtLnB1dHMgImludCAkMyIKKyAgICB3aGVuICJjYWxsIgorICAgICAg
JGFzbS5wdXRzICJjYWxsICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAg
IHdoZW4gInJldCIKKyAgICAgICRhc20ucHV0cyAicmV0IgorICAgIHdoZW4gImNpZXEiLCAiY3Bl
cSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGUiLCA6aW50KQorICAgIHdoZW4g
ImNpbmVxIiwgImNwbmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bmUiLCA6
aW50KQorICAgIHdoZW4gImNpYSIsICJjcGEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0
KCJzZXRhIiwgOmludCkKKyAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAgICAgIGhhbmRsZVg4
NkludENvbXBhcmVTZXQoInNldGFlIiwgOmludCkKKyAgICB3aGVuICJjaWIiLCAiY3BiIgorICAg
ICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YiIsIDppbnQpCisgICAgd2hlbiAiY2liZXEi
LCAiY3BiZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiZSIsIDppbnQpCisg
ICAgd2hlbiAiY2lndCIsICJjcGd0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
ZyIsIDppbnQpCisgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIKKyAgICAgIGhhbmRsZVg4Nklu
dENvbXBhcmVTZXQoInNldGdlIiwgOmludCkKKyAgICB3aGVuICJjaWx0IiwgImNwbHQiCisgICAg
ICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsIiwgOmludCkKKyAgICB3aGVuICJjaWx0ZXEi
LCAiY3BsdGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bGUiLCA6aW50KQor
ICAgIHdoZW4gInRpbyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6aW50KQorICAg
IHdoZW4gInRpcyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6aW50KQorICAgIHdo
ZW4gInRpeiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6aW50KQorICAgIHdoZW4g
InRpbnoiCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDppbnQpCisgICAgd2hlbiAi
dGJvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDpieXRlKQorICAgIHdoZW4gInRi
cyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ynoi
CisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmJ5dGUpCisgICAgd2hlbiAidGJueiIK
KyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmJ5dGUpCisgICAgd2hlbiAicGVlayIK
KyAgICAgICRhc20ucHV0cyAibW92bCAje29wZXJhbmRzWzBdLnZhbHVlICogNH0oJWVzcCksICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicG9rZSIKKyAgICAgICRh
c20ucHV0cyAibW92bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRz
WzFdLnZhbHVlICogNH0oJWVzcCkiCisgICAgd2hlbiAiY2RxaSIKKyAgICAgICRhc20ucHV0cyAi
Y2RxIgorICAgIHdoZW4gImlkaXZpIgorICAgICAgJGFzbS5wdXRzICJpZGl2bCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImZpaTJkIgorICAgICAgJGFzbS5wdXRz
ICJtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgInBzbGxxICQzMiwgJXht
bTciCisgICAgICAkYXNtLnB1dHMgInBvciAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5k
KDpkb3VibGUpfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRhc20ucHV0cyAibW92ZCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgJGFzbS5wdXRzICJtb3ZzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAicHNybHEgJDMyLCAleG1tNyIKKyAg
ICAgICRhc20ucHV0cyAibW92c2QgJXhtbTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgd2hlbiAiYm8iCisgICAgICAkYXNtLnB1dHMgImpvICN7b3BlcmFuZHNbMF0uYXNt
TGFiZWx9IgorICAgIHdoZW4gImJzIgorICAgICAgJGFzbS5wdXRzICJqcyAje29wZXJhbmRzWzBd
LmFzbUxhYmVsfSIKKyAgICB3aGVuICJieiIKKyAgICAgICRhc20ucHV0cyAianogI3tvcGVyYW5k
c1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYm56IgorICAgICAgJGFzbS5wdXRzICJqbnogI3tv
cGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAibGVhaSIsICJsZWFwIgorICAgICAgJGFz
bS5wdXRzICJsZWFsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgcmFpc2UgIkJhZCBvcGNvZGU6
ICN7b3Bjb2RlfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXph
dGlvbktpbmQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENvZGVTcGVjaWFsaXphdGlv
bktpbmRfaAorI2RlZmluZSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKworbmFtZXNwYWNlIEpT
QyB7CisKK2VudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7IENvZGVGb3JDYWxsLCBDb2RlRm9y
Q29uc3RydWN0IH07CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ29kZVNwZWNp
YWxpemF0aW9uS2luZF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5oCShyZXZpc2lvbiAxMDY1NDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcs
NiArMjcsNyBAQAogI2RlZmluZSBDb21tb25TbG93UGF0aHNfaAogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkV4
Y2VwdGlvbkhlbHBlcnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAKQEAgLTQxLDYgKzQyLDM4
IEBAIG5hbWVzcGFjZSBKU0MgewogCiBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKIAorQUxX
QVlTX0lOTElORSBFeGVjU3RhdGUqIGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXRlKiBleGVjLCBSZWdp
c3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorewor
ICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAg
IEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKKyAgICBDb2RlQmxvY2sqIG5ld0Nv
ZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihr
aW5kKTsKKyAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBleGVjLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcygpOworCisgICAgLy8gVGhpcyBlbnN1cmVzIGVub3VnaCBzcGFj
ZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1bWVudHMgcGFzc2VkIGJ5
IHRoZSBjYWxsZXIuCisgICAgaWYgKCFyZWdpc3RlckZpbGUtPmdyb3coZXhlYy0+cmVnaXN0ZXJz
KCkgKyBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+bV9udW1D
YWxsZWVSZWdpc3RlcnMpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFTU0VSVChhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKwor
ICAgIC8vIFRvbyBmZXcgYXJndW1lbnRzIC0tIGNvcHkgY2FsbCBmcmFtZSBhbmQgYXJndW1lbnRz
LCB0aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1bWVudHMgd2l0aCB1bmRlZmluZWQuCisgICAgc2l6
ZV90IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpczsKKyAgICBSZWdpc3Rlciogc3JjID0gZXhlYy0+cmVnaXN0ZXJzKCk7Cisg
ICAgUmVnaXN0ZXIqIGRzdCA9IGV4ZWMtPnJlZ2lzdGVycygpICsgZGVsdGE7CisKKyAgICBpbnQg
aTsKKyAgICBpbnQgZW5kID0gLUV4ZWNTdGF0ZTo6b2Zmc2V0Rm9yKGFyZ3VtZW50Q291bnRJbmNs
dWRpbmdUaGlzKTsKKyAgICBmb3IgKGkgPSAtMTsgaSA+PSBlbmQ7IC0taSkKKyAgICAgICAgZHN0
W2ldID0gc3JjW2ldOworCisgICAgZW5kIC09IGRlbHRhOworICAgIGZvciAoIDsgaSA+PSBlbmQ7
IC0taSkKKyAgICAgICAgZHN0W2ldID0ganNVbmRlZmluZWQoKTsKKworICAgIEV4ZWNTdGF0ZSog
bmV3RXhlYyA9IEV4ZWNTdGF0ZTo6Y3JlYXRlKGRzdCk7CisgICAgQVNTRVJUKCh2b2lkKiluZXdF
eGVjIDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOworICAgIHJldHVybiBuZXdFeGVjOworfQorCiBB
TFdBWVNfSU5MSU5FIGJvb2wgb3BJbnN0YW5jZU9mU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUgdmFsdWUsIEpTVmFsdWUgYmFzZVZhbCwgSlNWYWx1ZSBwcm90bykKIHsKICAgICBBU1NFUlQo
IXZhbHVlLmlzQ2VsbCgpIHx8ICFiYXNlVmFsLmlzQ2VsbCgpIHx8ICFwcm90by5pc0NlbGwoKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJl
dmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFi
bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQnl0ZWNv
ZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdEcml2
ZXIuaCIKKyNpbmNsdWRlICJFeGVjdXRpb25IYXJuZXNzLmgiCiAjaW5jbHVkZSAiSklULmgiCiAj
aW5jbHVkZSAiSklURHJpdmVyLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCkBAIC04NCw3ICs4NSw3
IEBAIEludHJpbnNpYyBOYXRpdmVFeGVjdXRhYmxlOjppbnRyaW5zaWMoKSAKIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiBzdGF0aWMgdm9pZCBqZXR0aXNvbkNvZGVCbG9jayhKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEsIE93blB0cjxUPiYgY29kZUJsb2NrKQogewotICAgIEFTU0VSVChjb2RlQmxvY2st
PmdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENv
ZGU6OmlzT3B0aW1pemluZ0pJVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VS
VChjb2RlQmxvY2stPmFsdGVybmF0aXZlKCkpOwogICAgIE93blB0cjxUPiBjb2RlQmxvY2tUb0pl
dHRpc29uID0gY29kZUJsb2NrLnJlbGVhc2UoKTsKICAgICBjb2RlQmxvY2sgPSBzdGF0aWNfcG9p
bnRlcl9jYXN0PFQ+KGNvZGVCbG9ja1RvSmV0dGlzb24tPnJlbGVhc2VBbHRlcm5hdGl2ZSgpKTsK
QEAgLTE2OSw5ICsxNzAsMzAgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlT3B0
aW1pegogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBFdmFsRXhlY3V0YWJsZTo6aml0Q29t
cGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRD
b21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29k
ZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7Cit9CisKK2lubGluZSBjb25zdCBjaGFyKiBzYW1wbGluZ0Rlc2NyaXB0
aW9uKEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyAgICBzd2l0Y2ggKGppdFR5cGUpIHsK
KyAgICBjYXNlIEpJVENvZGU6OkludGVycHJldGVyVGh1bms6CisgICAgICAgIHJldHVybiAiSW50
ZXJwcmV0ZXIgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpCYXNlbGlu
ZUpJVDoKKyAgICAgICAgcmV0dXJuICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAg
ICBjYXNlIEpJVENvZGU6OkRGR0pJVDoKKyAgICAgICAgcmV0dXJuICJERkcgQ29tcGlsYXRpb24g
KFRPVEFMKSI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwogSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpj
b21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFp
bk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBz
YW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5l
IENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAg
U2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBl
KSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpA
QCAtMjEyLDcgKzIzNCw3IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVy
bmEKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUlmQXBwcm9w
cmlhdGUoKmdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0
VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKCpnbG9iYWxEYXRhLCBtX2V2YWxD
b2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAgICAgICByZXR1cm4gMDsK
ICNlbmRpZgogCkBAIC0yOTcsOSArMzE5LDE1IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJs
ZTo6Y29tcGlsZU9wdGkKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgUHJvZ3JhbUV4ZWN1
dGFibGU6OmppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wg
cmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29k
ZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCiBKU09iamVjdCogUHJvZ3JhbUV4
ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBs
aW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQg
PyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RB
TCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0
aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0o
aml0VHlwZSk7CkBAIC0zMzgsNyArMzY2LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxl
Ojpjb21waWxlSW50ZQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21w
aWxlSWZBcHByb3ByaWF0ZSgqZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENv
ZGVGb3JDYWxsLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVjdXRpb24oKmdsb2Jh
bERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAg
ICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTQxNCw3ICs0NDIsNyBAQCBGdW5jdGlvbkNv
ZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpiCiAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJu
YXRpdmUoKSkKICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sq
PihyZXN1bHQtPmFsdGVybmF0aXZlKCkpOwogICAgIEFTU0VSVChyZXN1bHQpOwotICAgIEFTU0VS
VChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNT
RVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAg
cmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtNDQwLDYgKzQ2OCwxOCBAQCBKU09iamVjdCogRnVuY3Rp
b25FeGVjdXRhYmxlOjpjb21waWxlT3B0CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0
ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0
Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgSklUQ29kZTo6Ym90dG9t
VGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9p
ZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0aW9uSWZB
cHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2Rl
Rm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1i
b2xUYWJsZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0KTsKK30KKwogRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y29kZUJsb2NrV2l0aEJ5dGVjb2RlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
IHsKICAgICBGdW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tG
b3Ioa2luZCk7CkBAIC00ODQsNyArNTI0LDcgQEAgUGFzc093blB0cjxGdW5jdGlvbkNvZGVCbG9j
az4gRnVuY3Rpb25FeAogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9y
Q2FsbEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5O
b2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBD
b21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNh
bXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkp
OwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTUw
Niw3ICs1NDYsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAg
ICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC0+c2hhcmVkU3ltYm9sVGFibGUo
KTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJv
cHJpYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVG
b3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGpp
dFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMtPmdsb2Jh
bERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVG
b3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENvZGVGb3JDYWxs
KSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNTI2LDcgKzU2Niw3IEBAIEpTT2Jq
ZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKIAogSlNPYmplY3QqIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywg
U2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUp
CiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2Rl
OjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29t
cGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNh
bXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAg
IFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTU0OCw3ICs1ODgsNyBAQCBKU09iamVjdCogRnVu
Y3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAgICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJs
b2NrRm9yQ29uc3RydWN0LT5zaGFyZWRTeW1ib2xUYWJsZSgpOwogCiAjaWYgRU5BQkxFKEpJVCkK
LSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYy0+Z2xvYmFsRGF0
YSgpLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBtX2pp
dENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSkp
CisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgp
LCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBtX2ppdENv
ZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSwgQ29k
ZUZvckNvbnN0cnVjdCkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDEwNjU0MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2RlZmluZSBFeGVjdXRhYmxlX2gKIAogI2luY2x1ZGUg
IkNhbGxEYXRhLmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIk5v
ZGVzLmgiCkBAIC0zOSwxMiArNDAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRGVi
dWdnZXI7CiAgICAgY2xhc3MgRXZhbENvZGVCbG9jazsKICAgICBjbGFzcyBGdW5jdGlvbkNvZGVC
bG9jazsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3Jh
bUNvZGVCbG9jazsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKIAogICAgIHN0cnVjdCBFeGNl
cHRpb25JbmZvOwogICAgIAotICAgIGVudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7IENvZGVG
b3JDYWxsLCBDb2RlRm9yQ29uc3RydWN0IH07CiAgICAgZW51bSBDb21waWxhdGlvbktpbmQgeyBG
aXJzdENvbXBpbGF0aW9uLCBPcHRpbWl6aW5nQ29tcGlsYXRpb24gfTsKIAogICAgIGlubGluZSBi
b29sIGlzQ2FsbChDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0zMTksNiArMzIwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDog
cHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRh
YmxlIEJhc2U7CiAKQEAgLTMzOCw2ICszNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGUoSlNH
bG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShKU0dsb2JhbERhdGEmKTsKICNl
bmRpZgogCiAgICAgICAgIEV2YWxDb2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkKQEAgLTM4
NCw2ICszODcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgUHJvZ3Jh
bUV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVm
IFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNDExLDYgKzQxNSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0
aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlKEpTR2xv
YmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayYgZ2VuZXJhdGVk
Qnl0ZWNvZGUoKQpAQCAtNDUzLDYgKzQ1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgRnVuY3Rpb25FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAg
ICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJh
c2U7CiAKQEAgLTUwOCw2ICs1MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYg
RU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDYWxsKEpT
R2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDYWxsKEpTR2xvYmFsRGF0
YSYpOwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNhbGwoKSBjb25zdApA
QCAtNTM1LDYgKzU0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUo
SklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChKU0ds
b2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ29uc3RydWN0KEpTR2xvYmFs
RGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNvbnN0cnVjdCgp
IGNvbnN0CkBAIC01ODIsNiArNTkwLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAg
ICAgIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChnbG9iYWxEYXRhKTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9y
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQor
ICAgICAgICB7CisgICAgICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAg
ICAgICAgICAgIGppdENvbXBpbGVGb3JDYWxsKGdsb2JhbERhdGEpOworICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVG
b3JDb25zdHJ1Y3QpOworICAgICAgICAgICAgaml0Q29tcGlsZUZvckNvbnN0cnVjdChnbG9iYWxE
YXRhKTsKKyAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBib29sIGlzR2VuZXJh
dGVkRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBFeGVjdXRpb25IYXJuZXNzX2gKKyNkZWZpbmUgRXhlY3V0
aW9uSGFybmVzc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShK
SVQpCisKKyNpbmNsdWRlICJKSVREcml2ZXIuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRz
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBl
PgoraW5saW5lIGJvb2wgcHJlcGFyZUZvckV4ZWN1dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBK
SVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChK
SVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkgeworICAgICAgICAvLyBTdGFydCBvZmYg
aW4gdGhlIGxvdyBsZXZlbCBpbnRlcnByZXRlci4KKyAgICAgICAgTExJbnQ6OmdldEVudHJ5cG9p
bnQoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsKKyAgICAgICAgY29kZUJs
b2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKKyAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKyAgICByZXR1
cm4gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLCBqaXRDb2Rl
LCBqaXRUeXBlKTsKK30KKworaW5saW5lIGJvb2wgcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9u
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29k
ZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGppdENvZGVX
aXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6
SklUVHlwZSBqaXRUeXBlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisjaWYgRU5B
QkxFKExMSU5UKQorICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkgewor
ICAgICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRlcnByZXRlci4KKyAgICAg
ICAgTExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludChnbG9iYWxEYXRhLCBraW5kLCBqaXRDb2Rl
LCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUo
aml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oa2luZCk7CisjZW5kaWYgLy8gRU5BQkxFKExM
SU5UKQorICAgIHJldHVybiBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERh
dGEsIGNvZGVCbG9jaywgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBzeW1ib2xUYWJs
ZSwgaml0VHlwZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKKworI2VuZGlmIC8vIEV4ZWN1dGlvbkhhcm5lc3NfaAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkocmV2aXNpb24gMTA2NTQwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEyNCw3ICsxMjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBPd25B
cnJheVB0cjxXcml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5ID0gYWRvcHRBcnJh
eVB0cihuZXcgV3JpdGVCYXJyaWVyPFVua25vd24+W3JlZ2lzdGVyQXJyYXlTaXplXSk7CiAgICAg
ICAgIFdyaXRlQmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzID0gcmVnaXN0ZXJBcnJheS5nZXQo
KSArIHJlZ2lzdGVyT2Zmc2V0OwotCisgICAgICAgIAogICAgICAgICAvLyBDb3B5IGFsbCBhcmd1
bWVudHMgdGhhdCBjYW4gYmUgY2FwdHVyZWQgYnkgbmFtZSBvciBieSB0aGUgYXJndW1lbnRzIG9i
amVjdC4KICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX251bUNhcHR1cmVkQXJnczsgKytp
KSB7CiAgICAgICAgICAgICBpbnQgaW5kZXggPSBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KGkp
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24g
MTA2NTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEpTQXJyYXk7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgc3RydWN0
IFNwYXJzZUFycmF5RW50cnkgOiBwdWJsaWMgV3JpdGVCYXJyaWVyPFVua25vd24+IHsKICAgICAg
ICAgdHlwZWRlZiBXcml0ZUJhcnJpZXI8VW5rbm93bj4gQmFzZTsKQEAgLTEyMiw2ICsxMjMsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgSlNBcnJheSA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIFdhbGtlcjsKIAogICAgIHByb3RlY3RlZDoKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxMDY1NDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5
KQpAQCAtMzYsOSArMzYsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNHbG9i
YWxPYmplY3Q7Ci0gICAgY2xhc3MgU3RydWN0dXJlOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVy
dHlOYW1lQXJyYXk7CisgICAgY2xhc3MgU3RydWN0dXJlOwogCiAgICAgZW51bSBFbnVtZXJhdGlv
bk1vZGUgewogICAgICAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLApAQCAtMTY0LDYgKzE2
NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJv
cGVydHlEZXNjcmlwdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgY29uc3QgQ2xhc3NJbmZv
KiBtX2NsYXNzSW5mbzsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1
cmU7CiAgICAgfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRnVuY3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBKU0FjdGl2YXRp
b247CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgU291cmNlQ29k
ZTsKICAgICBuYW1lc3BhY2UgREZHIHsKQEAgLTE0Miw2ICsxNDMsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRv
ciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0
RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBhcmd1
bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCShy
ZXZpc2lvbiAxMDY1NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRGVi
dWdnZXJBY3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2lu
Y2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIK
ICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVyLmgiCkBAIC0xNDEsNiArMTQyLDggQEAgSlNHbG9iYWxE
YXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgICwga2V5d29yZHMoYWRvcHRQdHIo
bmV3IEtleXdvcmRzKHRoaXMpKSkKICAgICAsIGludGVycHJldGVyKDApCiAgICAgLCBoZWFwKHRo
aXMsIGhlYXBTaXplKQorICAgICwganNBcnJheUNsYXNzSW5mbygmSlNBcnJheTo6c19pbmZvKQor
ICAgICwganNGaW5hbE9iamVjdENsYXNzSW5mbygmSlNGaW5hbE9iamVjdDo6c19pbmZvKQogI2lm
IEVOQUJMRShERkdfSklUKQogICAgICwgc2l6ZU9mTGFzdFNjcmF0Y2hCdWZmZXIoMCkKICNlbmRp
ZgpAQCAtMjE2LDcgKzIxOSw5IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERh
dGFUeXAKICAgICBqaXRTdHVicyA9IGFkb3B0UHRyKG5ldyBKSVRUaHVua3ModGhpcykpOwogI2Vu
ZGlmCiAKLSAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSh0aGlzLT5jYW5Vc2VKSVQoKSk7Cisg
ICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUoJmxsaW50RGF0YSwgdGhpcy0+Y2FuVXNlSklUKCkp
OworICAgIAorICAgIGluaXRpYWxpemVIb3N0Q2FsbFJldHVyblZhbHVlKCk7IC8vIFRoaXMgaXMg
bmVlZGVkIHRvIGNvbnZpbmNlIHRoZSBsaW5rZXIgbm90IHRvIGRyb3AgaG9zdCBjYWxsIHJldHVy
biBzdXBwb3J0LgogCiAgICAgaGVhcC5ub3RpZnlJc1NhZmVUb0NvbGxlY3QoKTsKIH0KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lv
biAxMDY1NDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTUgKzMwLDE2IEBACiAjZGVmaW5lIEpTR2xvYmFsRGF0
YV9oCiAKICNpbmNsdWRlICJDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgiCi0jaW5jbHVk
ZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRl
ICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIlN0
cm9uZy5oIgorI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAj
aW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk51
bWVyaWNTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU3Ry
b25nLmgiCiAjaW5jbHVkZSAiVGVybWluYXRvci5oIgogI2luY2x1ZGUgIlRpbWVvdXRDaGVja2Vy
LmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgpAQCAtNjUsNiArNjYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKICAg
ICBjbGFzcyBLZXl3b3JkczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAg
Y2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAgICBjbGFz
cyBSZWdFeHBDYWNoZTsKQEAgLTI0MSw2ICsyNDMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEhlYXAgaGVhcDsKIAogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKKworICAgICAgICBj
b25zdCBDbGFzc0luZm8qIGNvbnN0IGpzQXJyYXlDbGFzc0luZm87CisgICAgICAgIGNvbnN0IENs
YXNzSW5mbyogY29uc3QganNGaW5hbE9iamVjdENsYXNzSW5mbzsKKworICAgICAgICBMTEludDo6
RGF0YSBsbGludERhdGE7CisKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZXR1cm5BZGRyZXNz
UHRyIGV4Y2VwdGlvbkxvY2F0aW9uOwogICAgICAgICBKU1ZhbHVlIGhvc3RDYWxsUmV0dXJuVmFs
dWU7CkBAIC0zNDYsNiArMzU0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjdW5kZWYgcmVnaXN0ZXJU
eXBlZEFycmF5RnVuY3Rpb24KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU0dsb2JhbERhdGEoR2xv
YmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUpOwogICAgICAgICBzdGF0aWMg
SlNHbG9iYWxEYXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwogICAgICAgICB2b2lkIGNy
ZWF0ZU5hdGl2ZVRodW5rKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYg
KzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAg
ICAgY2xhc3MgR2V0dGVyU2V0dGVyOwogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1
Y3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFJlZ0V4cENvbnN0
cnVjdG9yOwpAQCAtMzM1LDYgKzMzNiw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGFkZFN0YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiwg
aW50IGNvdW50KTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogRm9sZCByZXNldCBp
bnRvIGluaXQuCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdChKU09iamVjdCog
dGhpc1ZhbHVlKTsKICAgICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEwNjU0
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgR2V0dGVy
U2V0dGVyOwogICAgIGNsYXNzIEhhc2hFbnRyeTsKICAgICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9u
OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRCbG9j
azsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1l
QXJyYXk7CkBAIC0yNzEsNiArMjcyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTT2Jq
ZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9y
YWdlKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIgYXNrIGFu
eSBvZiB0aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25vd24gdG8gYmUgYSBK
U09iamVjdC4KICAgICAgICAgdXNpbmcgSlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcjsKICAgICAg
ICAgdXNpbmcgSlNDZWxsOjppc0dldHRlclNldHRlcjsKQEAgLTM4Myw2ICszODYsOCBAQCBDT01Q
SUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIHN0YXRpYyB2b2lk
IGRlc3Ryb3koSlNDZWxsKik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgZXhwbGljaXQgSlNGaW5h
bE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQog
ICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5lU3Rv
cmFnZSkKICAgICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkocmV2aXNpb24gMTA2NTQwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yIDogcHVibGlj
IEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC05Niw2ICs5Nyw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5
TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpOwogCiAgICAgICAgIFdyaXRl
QmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FjaGVkU3RydWN0dXJlOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxMDY1NDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2
ICszMiw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTU3RyaW5nOworICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5n
KEpTR2xvYmFsRGF0YSopOwogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSop
OwpAQCAtMjQwLDYgKzI0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9p
ZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAg
ICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZXNvbHZlUm9wZShFeGVjU3RhdGUqKSBjb25z
dDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlOChMQ2hhciopIGNvbnN0OwogICAg
ICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2UoVUNoYXIqKSBjb25zdDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDEwNjU0MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBj
b3B5KQpAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkID0gMTsgLy8gV2ViQ29yZSB1c2VzIE1hc3F1ZXJhZGVzQXNVbmRlZmlu
ZWQgdG8gbWFrZSBkb2N1bWVudC5hbGwgdW5kZXRlY3RhYmxlLgogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPSAxIDw8IDE7CiAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIE92ZXJyaWRlc0hhc0luc3RhbmNlID0gMSA8PCAyOwpAQCAtODcsNiArODksOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wg
aXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnIDw9ICgxIDw8
IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBmbGFnOyB9CiAgICAgICAgIGJvb2wgaXNTZXRPbkZsYWdz
Mih1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnID49ICgxIDw8IDgpKTsgcmV0dXJu
IG1fZmxhZ3MyICYgKGZsYWcgPj4gOCk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTYsMTAgKzEx
Niw5IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEUKICAgICByZXR1
cm4gSlNOb3RBbk9iamVjdDo6Y3JlYXRlKGV4ZWMpOwogfQogCi0jaWZuZGVmIE5ERUJVRwogY2hh
ciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogewotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6
ZSA9IDY0OworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZSA9IDEyODsKICAgICBzdGF0aWMg
Y2hhciBkZXNjcmlwdGlvbltzaXplXTsKIAogICAgIGlmICghKnRoaXMpCkBAIC0xMjgsMTQgKzEy
NywxNCBAQCBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiAgICAgICAgIHNucHJpbnRmKGRl
c2NyaXB0aW9uLCBzaXplLCAiSW50MzI6ICVkIiwgYXNJbnQzMigpKTsKICAgICBlbHNlIGlmIChp
c0RvdWJsZSgpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc25wcmludGYoZGVzY3Jp
cHRpb24sIHNpemUsICJEb3VibGU6ICVsZiwgJWx4IiwgYXNEb3VibGUoKSwgcmVpbnRlcnByZXRE
b3VibGVUb0ludHB0cihhc0RvdWJsZSgpKSk7CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9u
LCBzaXplLCAiRG91YmxlOiAlbHgsICVsZiIsIHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIoYXNE
b3VibGUoKSksIGFzRG91YmxlKCkpOwogI2Vsc2UKICAgICAgICAgdW5pb24gewogICAgICAgICAg
ICAgZG91YmxlIGFzRG91YmxlOwogICAgICAgICAgICAgdWludDMyX3QgYXNUd29JbnQzMnNbMl07
CiAgICAgICAgIH0gdTsKICAgICAgICAgdS5hc0RvdWJsZSA9IGFzRG91YmxlKCk7Ci0gICAgICAg
IHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICUwOHg6JTA4eCIsIGFz
RG91YmxlKCksIHUuYXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0pOworICAgICAgICBz
bnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJTA4eDolMDh4LCAlbGYiLCB1LmFz
VHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdLCBhc0RvdWJsZSgpKTsKICNlbmRpZgogICAg
IH0gZWxzZSBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXpl
LCAiQ2VsbDogJXAiLCBhc0NlbGwoKSk7CkBAIC0xNTIsNyArMTUxLDYgQEAgY2hhciogSlNWYWx1
ZTo6ZGVzY3JpcHRpb24oKQogCiAgICAgcmV0dXJuIGRlc2NyaXB0aW9uOwogfQotI2VuZGlmCiAK
IC8vIFRoaXMgaW4gdGhlIFRvSW50MzIgb3BlcmF0aW9uIGlzIGRlZmluZWQgaW4gc2VjdGlvbiA5
LjUgb2YgdGhlIEVDTUEtMjYyIHNwZWMuCiAvLyBOb3RlIHRoYXQgdGhpcyBvcGVyYXRpb24gaXMg
aWRlbnRpY2FsIHRvIFRvVUludDMyIG90aGVyIHRoYW4gdG8gaW50ZXJwcmV0YXRpb24KSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHJldmlzaW9uIDEwNjU0MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjMyLDkgKzIzMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU0NlbGwqIGFz
Q2VsbCgpIGNvbnN0OwogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzVmFsaWRDYWxs
ZWUoKTsKIAotI2lmbmRlZiBOREVCVUcKICAgICAgICAgY2hhciogZGVzY3JpcHRpb24oKTsKLSNl
bmRpZgogCiAgICAgcHJpdmF0ZToKICAgICAgICAgdGVtcGxhdGUgPGNsYXNzIFQ+IEpTVmFsdWUo
V3JpdGVCYXJyaWVyQmFzZTxUPik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiAxMDY1NDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDEwICszOCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBSZWdpc3RlcjsKIAogICAgIGNsYXNzIEpTVmFy
aWFibGVPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAK
ICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDEw
NjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Miw2ICs1MiwxMCBAQCB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JD
b25zdHJ1Y3RJbmxpCiAKIHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOwogCitpbnQzMl90
IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworaW50MzJfdCBleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CitpbnQzMl90IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvckpJVFNvb247CisKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
T3B0aW1pemVBZnRlcldhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVBZnRlckxvbmdXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRv
bnRPcHRpbWl6ZUFueXRpbWVTb29uOwpAQCAtMTM3LDYgKzE0MSwxMCBAQCB2b2lkIGluaXRpYWxp
emVPcHRpb25zKCkKICAgICAKICAgICBTRVQobWF4aW11bUlubGluaW5nRGVwdGgsIDUpOwogCisg
ICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwLCAgICAgLTEwMCk7
CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbiwgc3Rk
OjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOworICAgIFNFVChleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JKSVRTb29uLCAgICAgICAgICAgIC0xMDApOworCiAgICAgU0VUKGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAsICAgICAtMTAwMCk7CiAgICAgU0VU
KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwLCAtNTAwMCk7
CiAgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29u
LCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CkBAIC0xODUsNiArMTkzLDgg
QEAgdm9pZCBpbml0aWFsaXplT3B0aW9ucygpCiAgICAgaWYgKGNwdXNUb1VzZSA8IDEpCiAgICAg
ICAgIGNwdXNUb1VzZSA9IDE7CiAgICAgCisgICAgY3B1c1RvVXNlID0gMTsKKyAgICAKICAgICBT
RVQobnVtYmVyT2ZHQ01hcmtlcnMsIGNwdXNUb1VzZSk7CiAKICAgICBBU1NFUlQoZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24gPD0gZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTA2NTQwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywx
MCBAQCBleHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RyCiAKIGV4dGVybiB1
bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsgLy8gRGVwdGggb2YgaW5saW5lIHN0YWNrLCBz
byAxID0gbm8gaW5saW5pbmcsIDIgPSBvbmUgbGV2ZWwsIGV0Yy4KIAorZXh0ZXJuIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitleHRlcm4gaW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CitleHRlcm4gaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBleHRlcm4gaW50MzJfdCBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogZXh0ZXJuIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7CiBleHRlcm4g
aW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHJldmlz
aW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4u
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3Mg
SlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFNj
b3BlQ2hhaW5JdGVyYXRvcjsKICAgICBjbGFzcyBTbG90VmlzaXRvcjsKICAgICAKQEAgLTkxLDYg
KzkyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNv
bnN0IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0
IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbjsKICAgICB9
OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJ
KHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVj
dHVyZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw3ICszMjIsNyBAQCBTdHJ1Y3R1cmUqIFN0
cnVjdHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgICAgICAgICB0cmFuc2l0aW9uLT5ncm93
UHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb247CiAg
ICAgfQotCisgICAgCiAgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gY3JlYXRlKGdsb2JhbERh
dGEsIHN0cnVjdHVyZSk7CiAKICAgICB0cmFuc2l0aW9uLT5tX2NhY2hlZFByb3RvdHlwZUNoYWlu
LnNldE1heUJlTnVsbChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUtPm1fY2FjaGVk
UHJvdG90eXBlQ2hhaW4uZ2V0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmgJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAg
IGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5RGF0
YTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNf
aW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUo
SlNHbG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3Qg
VHlwZUluZm8mLCBjb25zdCBDbGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFs
RGF0YSYpOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJl
Kik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNo
YWluLmgJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFt
ZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xh
c3MgU3RydWN0dXJlOwogCiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlNDZWxs
IHsKQEAgLTc0LDYgKzc1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHBy
aXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
ICAgIAogICAgICAgICBTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsK
ICAgICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3duQXJyYXlQ
dHI8V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvQml0VmVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0JpdFZlY3Rvci5jcHAJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvQml0VmVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDcg
KzEwNSw2IEBAIHZvaWQgQml0VmVjdG9yOjpyZXNpemVPdXRPZkxpbmUoc2l6ZV90IG4KICAgICBt
X2JpdHNPclBvaW50ZXIgPSBiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihuZXdPdXRPZkxpbmVCaXRz
KSA+PiAxOwogfQogCi0jaWZuZGVmIE5ERUJVRwogdm9pZCBCaXRWZWN0b3I6OmR1bXAoRklMRSog
b3V0KQogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSgpOyArK2kpIHsKQEAgLTEx
NSw2ICsxMTQsNSBAQCB2b2lkIEJpdFZlY3Rvcjo6ZHVtcChGSUxFKiBvdXQpCiAgICAgICAgICAg
ICBmcHJpbnRmKG91dCwgIi0iKTsKICAgICB9CiB9Ci0jZW5kaWYKIAogfSAvLyBuYW1lc3BhY2Ug
V1RGCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0JpdFZlY3Rvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQml0VmVjdG9yLmgJKHJldmlzaW9uIDEw
NjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvQml0VmVjdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDEzICsyNiwxMCBAQAogI2lmbmRlZiBCaXRWZWN0b3JfaAogI2RlZmluZSBC
aXRWZWN0b3JfaAogCisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9u
cy5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAotI2lmbmRlZiBOREVCVUcKLSNp
bmNsdWRlIDxzdGRpby5oPgotI2VuZGlmCi0KIG5hbWVzcGFjZSBXVEYgewogCiAvLyBUaGlzIGlz
IGEgc3BhY2UtZWZmaWNpZW50LCByZXNpemVhYmxlIGJpdHZlY3RvciBjbGFzcy4gSW4gdGhlIGNv
bW1vbiBjYXNlIGl0CkBAIC0xNjUsOSArMTYyLDcgQEAgcHVibGljOiAKICAgICAgICAgICAgIGNs
ZWFyKGJpdCk7CiAgICAgfQogICAgIAotI2lmbmRlZiBOREVCVUcKICAgICB2b2lkIGR1bXAoRklM
RSogb3V0KTsKLSNlbmRpZgogICAgIAogcHJpdmF0ZToKICAgICBzdGF0aWMgdW5zaWduZWQgYml0
c0luUG9pbnRlcigpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0lubGluZUFTTS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSW5saW5lQVNNLmgJKHJl
dmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSW5saW5lQVNNLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTcwLDQgKzcwLDExIEBACiAjZGVmaW5lIEhJREVfU1lNQk9MKG5h
bWUpCiAjZW5kaWYKIAorLy8gRklYTUU6IGZpZ3VyZSBvdXQgaG93IHRoaXMgd29ya3Mgb24gYWxs
IHRoZSBwbGF0Zm9ybXMuIEkga25vdyB0aGF0CisvLyBvbiBMaW51eCwgdGhlIHByZWZlcnJlZCBm
b3JtIGlzICIuTHN0dWZmIiBhcyBvcHBvc2VkIHRvICJMc3R1ZmYiLgorLy8gRG9uJ3Qga25vdyBh
Ym91dCBhbnkgb2YgdGhlIG90aGVycy4KKyNpZiBQTEFURk9STShNQUMpCisjZGVmaW5lIExPQ0FM
X0xBQkVMX1NUUklORyhuYW1lKSAiTCIgI25hbWUKKyNlbmRpZgorCiAjZW5kaWYgLy8gSW5saW5l
QVNNX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEw
NjU0MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBj
b3B5KQpAQCAtOTIzLDYgKzkyMywxOCBAQAogI2RlZmluZSBFTkFCTEVfSklUIDEKICNlbmRpZgog
CisvKiBPbiBzb21lIG9mIHRoZSBwbGF0Zm9ybXMgd2hlcmUgd2UgaGF2ZSBhIEpJVCwgd2Ugd2Fu
dCB0byBhbHNvIGhhdmUgdGhlIAorICAgbG93LWxldmVsIGludGVycHJldGVyLiAqLworI2lmICFk
ZWZpbmVkKEVOQUJMRV9MTElOVCkgJiYgRU5BQkxFKEpJVCkgJiYgT1MoREFSV0lOKSAmJiAoQ1BV
KFg4NikgfHwgQ1BVKEFSTV9USFVNQjIpKSAmJiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBF
TkFCTEVfTExJTlQgMQorI2VuZGlmCisKKy8qIElmIHdlIGhhdmUgTExJbnQgZW5hYmxlZCBhbmQg
dGhlIEpJVCBlbmFibGVkLCB3ZSBhbHNvIGVuYWJsZSBPU1JpbmcgZnJvbQorICAgTExJbnQgdG8g
dGhlIEpJVC4gKi8KKyNpZiAhZGVmaW5lZChFTkFCTEVfTExJTlRfT1NSX1RPX0pJVCkgJiYgRU5B
QkxFKEpJVCkgJiYgRU5BQkxFKExMSU5UKQorI2RlZmluZSBFTkFCTEVfTExJTlRfT1NSX1RPX0pJ
VCAxCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJMRV9ERkdfSklUKSAmJiBFTkFCTEUoSklU
KQogLyogRW5hYmxlIHRoZSBERkcgSklUIG9uIFg4NiBhbmQgWDg2XzY0LiAgT25seSB0ZXN0ZWQg
b24gTWFjIGFuZCBHTlUvTGludXguICovCiAjaWYgKENQVShYODYpIHx8IENQVShYODZfNjQpKSAm
JiAoUExBVEZPUk0oTUFDKSB8fCBPUyhMSU5VWCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTg2LDYgKzg2LDggQEAgcHVibGljOgogCiAgICAgaXRlcmF0b3IgYmVnaW4oKTsKICAg
ICBpdGVyYXRvciBlbmQoKTsKKyAgICAKKyAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBiZWdp
bigpID09IGVuZCgpOyB9CiAKIHByaXZhdGU6CiAgICAgUmF3Tm9kZSBtX2hlYWRTZW50aW5lbDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2
aXNpb24gMTA2NTQwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0lt
cGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVj
dCBfX0NGU3RyaW5nICogQ0ZTdHJpCiAvLyBMYW5kaW5nIHRoZSBmaWxlIG1vdmVzIGluIG9uZSBw
YXRjaCwgd2lsbCBmb2xsb3cgb24gd2l0aCBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgbmFtZXNwYWNl
cy4KIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRvcjsK
K2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1
Y3QgSWRlbnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9yOwogc3RydWN0IElkZW50aWZpZXJMQ2hh
ckZyb21VQ2hhclRyYW5zbGF0b3I7CiB9CkBAIC03Miw3ICs3Myw4IEBAIGNsYXNzIFN0cmluZ0lt
cGwgewogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpTdWJzdHJpbmdUcmFuc2xhdG9yOwogICAgIGZy
aWVuZCBzdHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiAgICAgZnJpZW5kIGNsYXNz
IEF0b21pY1N0cmluZ0ltcGw7Ci0KKyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgCiBwcml2YXRlOgogICAgIGVudW0gQnVmZmVyT3duZXJzaGlwIHsKICAg
ICAgICAgQnVmZmVySW50ZXJuYWwsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDY1NDApCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBA
QAorMjAxMi0wMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IENoYW5nZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGlu
IEphdmFTY3JpcHRDb3JlLgorICAgICAgICAKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ug
bm8gYmVoYXZpb3IgY2hhbmdlZC4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorCiAyMDEy
LTAyLTAyICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBU
aGUgdGhpcmQgYXJndW1lbnQgb2YgYWRkRXZlbnRMaXN0ZW5lci9yZW1vdmVFdmVudExpc3RlbmVy
IG9mIFBlZXJDb25uZWN0aW9uIHNob3VsZCBiZSBvcHRpb25hbApJbmRleDogU291cmNlL1dlYkNv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQJKHJldmlzaW9uIDEwNjU0MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCw3IEBAIFNFVChXZWJDb3JlX0lOQ0xVREVfRElS
RUNUT1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElS
fS9qaXQiCisgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludCIKICAgICAiJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L3BhcnNlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVy
IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZSIKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZp
c2lvbiAxMDY1NDApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE1IEBACisyMDEyLTAxLTI2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgSlNDIHNob3VsZCBiZSBhIHRyaXBsZS10aWVyIFZNCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgxMgorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vMTAwNzk2OTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQ2hhbmdlZCBFRkwncyBidWlsZCBzeXN0ZW0gdG8gaW5jbHVkZSBhIG5l
dyBkaXJlY3RvcnkgaW4gSmF2YVNjcmlwdENvcmUuCisgICAgICAgIAorICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorCiAyMDEyLTAxLTExICBKYWNreSBKaWFuZyAgPHpoYWppYW5nQHJpbS5jb20+
CiAKICAgICAgICAgW0JsYWNrQmVycnldIEFTU0VSVCBmYWlsdXJlIGluIEJhY2tpbmdTdG9yZVBy
aXZhdGU6OmJsaXRWaXNpYmxlQ29udGVudHMoKQpJbmRleDogU291cmNlL1dlYktpdC9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAxMDY1NDApCisrKyBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC00NCw2ICs0NCw3IEBAIFNFVChXZWJLaXRfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIKKyAgICAi
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
cGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAgICAgIiR7SkFW
QVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NTQwKQorKysgVG9vbHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMjcgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxl
LXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3OTY5ND4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1aWxkIHN5
c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4KKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dDoKKwogMjAxMi0wMi0wMiAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZS1sYW5kIHIxMDY0
NDIgcGVyIEFkYW0ncyBzdWdnZXN0aW9uLiBXZSdsbCBkbyBib3RoIHJlc3RhcnRpbmcgRFJUIGFu
ZCBsb2FkaW5nIGEgZmFrZSB0ZXN0IGZpcnN0LgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Vm
bC9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA2NTQwKQorKysgVG9vbHMvRHVtcFJlbmRlclRy
ZWUvZWZsL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02OCwxMCArNjgsMTIgQEAg
U0VUKER1bXBSZW5kZXJUcmVlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0pBVkFTQ1JJUFRD
T1JFX0RJUn0KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vQVBJCiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L2Fzc2VtYmxlcgorICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZQog
ICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9kZmcKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
aGVhcAogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnRlcnByZXRlcgogICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9qaXQKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9G
b3J3YXJkaW5nSGVhZGVycwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS93dGYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125186</attachid>
            <date>2012-02-02 13:57:15 -0800</date>
            <delta_ts>2012-02-02 14:53:55 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_89.diff</filename>
            <type>text/plain</type>
            <size>487053</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3MiBA
QAorMjAxMi0wMi0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcmk6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmVDb21tb24udnNwcm9wczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAg
ICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJl
c3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDogQWRkZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToKKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAgIChDYWxsTGlu
a1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2sp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6dW5saW5rQ2FsbHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0luY29t
aW5nQ2FsbHMpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToK
KyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJs
b2NrOjpqaXRDb21waWxlSW1wbCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENv
bXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdP
cHBvcnR1bml0eSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiYXNl
bGluZVZlcnNpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpbmtJbmNvbWluZ0NhbGwp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNP
cHRpbWl6ZWRSZXBsYWNlbWVudCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkUHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRMTEludENh
bGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVzb2x2ZUlu
Zm8pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZv
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VTbG93
Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y291bGRUYWtlU2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZVNwZWNpYWxGYXN0Q2FzZSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VBbnlTbG93Q2FzZSk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YWRkRnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZG9udEpJVEFueXRpbWVTb29uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRB
ZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0U29vbik6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGxpbnRFeGVjdXRlQ291bnRlcik6CisgICAgICAgIChQcm9ncmFt
Q29kZUJsb2NrKToKKyAgICAgICAgKEV2YWxDb2RlQmxvY2spOgorICAgICAgICAoRnVuY3Rpb25D
b2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAg
ICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6R2V0
QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6Ondhc1NlZW5JbkpJVCk6
CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlv
bi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246Okluc3RydWN0
aW9uKToKKyAgICAgICAgKEluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludENh
bGxMaW5rSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkxMSW50
Q2FsbExpbmtJbmZvOjpMTEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChMTEludENhbGxMaW5r
SW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjp+TExJbnRDYWxsTGlua0lu
Zm8pOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6aXNMaW5rZWQpOgorICAgICAg
ICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6dW5saW5rKToKKyAgICAgICAgKiBieXRlY29kZS9N
ZXRob2RDYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZENhbGxMaW5rU3Rh
dHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRl
RnJvbUxMSW50KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaDoKKyAgICAg
ICAgKFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENh
dGNoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9E
RkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToK
KyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6Y29sbGVjdCk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAo
SlNDOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVy
L0NhbGxGcmFtZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0
YXRlOjpjdXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53
aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRl
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChJbnRlcnByZXRlcik6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGUpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6ZW5hYmxlZCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxl
Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoUmVnaXN0ZXJGaWxlKToKKyAgICAgICAgKiBq
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpOgorICAgICAgICAq
IGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6aW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJuVmFsdWUpOgorICAgICAgICAqIGppdC9K
SVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAg
KEpTQzo6SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpJVENvZGUpOgorICAg
ICAgICAoSlNDOjpKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENv
ZGU6OkpJVENvZGUpOgorICAgICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6
aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rp
b25JZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6OmppdFRocm93KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAg
ICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgIChKU0MpOgorICAgICAgICAq
IGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAg
KiBsbGludC9MTEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6
OkRhdGEpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxs
aW50L0xMSW50RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6
CisgICAgICAgIChEYXRhKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbklu
c3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAg
ICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAg
IChKU0M6OkxMSW50OjpnZXRFdmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50Ojpn
ZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVy
cHJldGVyVGhyb3dJbkNhbGxlcik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93
Rm9yVGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cp
OgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xM
SW50RXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6
CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChMTElu
dCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxM
SU5UX0hFTFBFUl9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9s
b2d1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoSlNDOjpM
TEludDo6ZW50cnlPU1IpOgorICAgICAgICAoSlNDOjpMTEludDo6cmVzb2x2ZUdsb2JhbCk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpnZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpoYW5k
bGVIb3N0Q2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAo
SlNDOjpMTEludDo6Z2VuZXJpY0NhbGwpOgorICAgICAgICAqIGxsaW50L0xMSW50SGVscGVycy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExM
SW50T2Zmc2V0c0V4dHJhY3Rvcik6CisgICAgICAgIChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rv
cjo6ZHVtbXkpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3Mu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2Fs
bEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JD
b25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0
aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50
OjpmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkxMSW50OjpldmFsRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxM
SW50Ojpwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgICogbGxpbnQvTExJbnRU
aHVua3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoTExJbnQpOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRlZC4KKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtOiBBZGRlZC4KKyAg
ICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L2FzbS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc3QucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVh
c20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGlu
ZWFzbS9pbnN0cnVjdGlvbnMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb2Zmc2V0
X2V4dHJhY3Rvcl9jb25zdGFudHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb2Zm
c2V0cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9vcHQucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9zZWxmX2hhc2gucmI6
IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2V0dGluZ3MucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L3g4Ni5yYjogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5k
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgor
ICAgICAgICAoQ29tbW9uU2xvd1BhdGhzKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUu
Y3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2
YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6
OnNhbXBsaW5nRGVzY3JpcHRpb24pOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y29t
cGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBp
bGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1Y3Qp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1
Y3RJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoRXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAoUHJvZ3JhbUV4ZWN1dGFi
bGUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGlv
bkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwcmVwYXJl
Rm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Fj
dGl2YXRpb246OnRlYXJPZmYpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKEpTQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDZWxsKToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0
YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNPYmplY3QpOgorICAgICAgICAoSlNGaW5hbE9iamVjdCk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlw
ZUluZm8uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChUeXBlSW5mbyk6CisgICAgICAgICog
cnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6ZGVzY3JpcHRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTVmFyaWFibGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5j
cHA6CisgICAgICAgIChPcHRpb25zKToKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6
ZU9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAoT3B0aW9u
cyk6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoU2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoU3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAqIHd0Zi9JbmxpbmVBU00uaDoK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvU2VudGluZWxMaW5rZWRM
aXN0Lmg6CisgICAgICAgIChTZW50aW5lbExpbmtlZExpc3QpOgorICAgICAgICAoV1RGOjpTZW50
aW5lbExpbmtlZExpc3Q6OmlzRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwu
aDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChTdHJpbmdJbXBsKToKKwogMjAxMi0wMi0wMiAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbGVhc2UgYnVpbGQg
ZGVidWdnaW5nIHNob3VsZCBiZSBlYXNpZXIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTEsNiArMTEsNyBAQCBTRVQoSmF2YVNjcmlw
dENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVi
dWdnZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50
IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vcHJvZmlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpA
QCAtOTUsNiArOTYsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5jcHAKIAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAor
ICAgIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljMzJf
NjQuY3BwCiAgICAgaml0L0pJVEFyaXRobWV0aWMuY3BwCiAgICAgaml0L0pJVENhbGwzMl82NC5j
cHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDEwNjU5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5
KQpAQCAtNTcsNiArNTcsNyBAQCBqYXZhc2NyaXB0Y29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyIFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0IFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQgXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw3IEBAIGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvUmVwYXRjaEJ1ZmZlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NI
NEFzc2VtYmxlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2Vt
Ymxlci5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50
aW9ucy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIFwKQEAgLTEw
Miw2ICsxMDMsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0p1bXBUYWJsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9KdW1wVGFibGUuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2Fs
bExpbmtJbmZvLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5lSW5mby5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5o
IFwKQEAgLTI3Nyw2ICsyNzksOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NvbXBhY3RKSVRDb2RlTWFwLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRBcml0aG1ldGljMzJfNjQuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFy
aXRobWV0aWMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5j
cHAgXApAQCAtMzAwLDYgKzMwNCw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL29zLXdpbjMyL3N0ZGJv
b2wuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL29zLXdpbjMyL3N0ZGludC5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBcCkBAIC0zNTAsNiArMzU1LDcg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FsbERhdGEuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxs
RGF0YS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIFwKQEAgLTM3OCw2
ICszODQsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlv
bkhhcm5lc3MuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5w
cmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBy
aQkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnByaQkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQCBJTkNMVURFUEFUSCArPSBc
CiAgICAgJCRTT1VSQ0VfRElSL2RlYnVnZ2VyIFwKICAgICAkJFNPVVJDRV9ESVIvaW50ZXJwcmV0
ZXIgXAogICAgICQkU09VUkNFX0RJUi9qaXQgXAorICAgICQkU09VUkNFX0RJUi9sbGludCBcCiAg
ICAgJCRTT1VSQ0VfRElSL3BhcnNlciBcCiAgICAgJCRTT1VSQ0VfRElSL3Byb2ZpbGVyIFwKICAg
ICAkJFNPVVJDRV9ESVIvcnVudGltZSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFy
Z2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQko
cmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHdv
cmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnRlcnBy
ZXRlci9SZWdpc3RlckZpbGUuY3BwIFwKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVk
Vk1Qb29sLmNwcCBcCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwKKyAgICBqaXQv
SG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgXAogICAgIGppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAg
ICAgaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAgXAogICAgIGppdC9KSVRDYWxsLmNwcCBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvagkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTE3NTgsNiArMTc1OCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4K
IAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcSG9zdENhbGxSZXR1cm5WYWx1
ZS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XC4uXGppdFxKSVQuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTE4NDMsNiArMTg0NywxNCBA
QAogCQkJPC9GaWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZpbHRlcgorCQkJTmFtZT0ibGxpbnQiCisJ
CQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cbGxpbnRcTExJbnREYXRhLmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgogCQkJTmFtZT0iaW50
ZXJwcmV0ZXIiCiAJCQk+CiAJCQk8RmlsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52
c3Byb3BzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwkocmV2
aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52c3Byb3BzCSh3b3JraW5n
IGNvcHkpCkBAIC02LDcgKzYsNyBAQAogCT4KIAk8VG9vbAogCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXCZxdW90OzsuLi8u
Li87Li4vLi4vQVBJLzsuLi8uLi9wYXJzZXIvOy4uLy4uL2J5dGVjb21waWxlci87Li4vLi4vZGZn
LzsuLi8uLi9qaXQvOy4uLy4uL3J1bnRpbWUvOy4uLy4uL3Rvb2xzLzsuLi8uLi9ieXRlY29kZS87
Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJvZmlsZXI7Li4vLi4vYXNzZW1i
bGVyLzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNE
aXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHJp
dmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZSZxdW90Ozsm
cXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90
OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZx
dW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7IgorCQlBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXCZxdW90OzsuLi8uLi87Li4vLi4vQVBJ
LzsuLi8uLi9wYXJzZXIvOy4uLy4uL2J5dGVjb21waWxlci87Li4vLi4vZGZnLzsuLi8uLi9qaXQv
Oy4uLy4uL2xsaW50LzsuLi8uLi9ydW50aW1lLzsuLi8uLi90b29scy87Li4vLi4vYnl0ZWNvZGUv
Oy4uLy4uL2ludGVycHJldGVyLzsuLi8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fzc2Vt
Ymxlci87Li4vLi4vZGVidWdnZXIvOy4uLy4uL2hlYXAvOyZxdW90OyQoV2ViS2l0TGlicmFyaWVz
RGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHBy
aXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7
JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVv
dDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90Ozsm
cXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OyIKIAkJUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9fU1REX0MiCiAJCUZvcmNlZEluY2x1ZGVGaWxlcz0iSUNV
VmVyc2lvbi5oIgogCS8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL2NvcHktZmlsZXMuY21kCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
Y29weS1maWxlcy5jbWQJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgZm9yICUlZCBpbiAoCiAgICAgZGVidWdnZXIK
ICAgICBpbnRlcnByZXRlcgogICAgIGppdAorICAgIGxsaW50CiAgICAgcGFyc2VyCiAgICAgcHJv
ZmlsZXIKICAgICBydW50aW1lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxNSBAQAog
CW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCisJ
CTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovID0geworCQkJaXNh
ID0gUEJYQWdncmVnYXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4
MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFn
Z3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJ
CQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICov
LAorCQkJKTsKKwkJCW5hbWUgPSAiTExJbnQgT2Zmc2V0cyI7CisJCQlwcm9kdWN0TmFtZSA9ICJE
ZXJpdmVkIFNvdXJjZXMiOworCQl9OwogCQk2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyogRGVy
aXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OwogCQkJYnVp
bGRDb25maWd1cmF0aW9uTGlzdCA9IDY1RkIzRjc3MDlEMTFFQkQwMEY0OURFQiAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVyaXZlZCBTb3VyY2Vz
IiAqLzsKQEAgLTE0LDYgKzIzLDkgQEAKIAkJCQk2NUZCM0Y2NTA5RDExRTkxMDBGNDlERUIgLyog
R2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTVEMzVERUUxMEM3QzE0MEIwMDg2NDhC
MiAvKiBHZW5lcmF0ZSBEVHJhY2UgaGVhZGVyICovLAogCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9
ICgKKwkJCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LywKKwkJCSk7CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlwcm9kdWN0TmFtZSA9
ICJEZXJpdmVkIFNvdXJjZXMiOwogCQl9OwpAQCAtNDgsNiArNjAsMTAgQEAKIAkJMEJBQzk0QTAx
MzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQUM5NDlFMTMzODcyODQwMENG
MTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJDRDgzNTcxNDg1ODQ1MjAwRUEyMDAzIC8q
IFRlbXBvcmFyeUNoYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEJDRDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCRjI4QTI5
MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXpl
TGltaXRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50
cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovOyB9
OworCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTYxNEJDRjQ1
QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLzsgfTsKKwkJ
MEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYg
LyogTExJbnRUaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E1MTRCQ0Y1MDQw
MDg4NUI0RiAvKiBDb2RlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTgx
NEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4
cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZv
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU4
LDkgKzc0LDEzIEBACiAJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlu
a0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCNzE0QkNGOEUx
MDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxS
ZXNvbHZlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2Rl
T2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBGQzQ1ODE0QkQxNUYx
MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29t
bW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNkQ3MjYxNDJD
MzlDMDAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9y
LmNwcCAqLzsgfTsKIAkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNjYxNEJF
NUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRp
b25IYXJuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdEMTRCRTcy
N0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyog
Q29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNv
bnZlbnRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjQyREE3MTNG
M0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMg
LyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTZGMTQ3MzhGMzEwMDEyMUU0RiAvKiBERkdDb2Rl
QmxvY2tzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTcwMTQ3MzhGMzUwMDEy
MUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tz
LmNwcCAqLzsgfTsKQEAgLTcxLDYgKzkxLDE5IEBACiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5
MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2
ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8q
IEpJVEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA3RjE0
QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MEEzMTRC
QTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlGMTRCQTdG
ODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9G
TEFHUyA9ICItV25vLXVudXNlZC1wYXJhbWV0ZXIiOyB9OyB9OworCQkwRjQ2ODBBNTE0QkE3RjhE
MDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0
NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTgx
NEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8q
IExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQjE0QkJCMTcy
MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovOyB9
OworCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzgxNEJC
QjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIg
LyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovOyB9Owor
CQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIg
LyogTExJbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Njgw
RDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovOyB9OworCQkw
RjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDExNEJCQzVGODAw
QkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU1RjBGNDE0RDEwNjM5MDBBQzc2NDkgLyogQWJz
dHJhY3RQQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjU1RjBGMTE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi87IH07CiAJCTBG
NTVGMEY1MTREMTA2M0MwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyog
QWJzdHJhY3RQQy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVGMDhD
RTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zODcsNyArNDIwLDcgQEAK
IAkJODZCOTlBRTMxMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCOTlBRTExMTdFNTc4MTAwREY1
QTkwIC8qIFN0cmluZ0J1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTg2QkIwOUMwMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJF
MTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCAqLzsgfTsKIAkJODZCQjA5QzExMzhF
MzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJGMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNo
LmggKi87IH07Ci0JCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkw
RUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IH07CisJCTg2QzM2RUVBMEVF
MTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3Jv
QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OEREMTFB
MjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgKi87IH07CiAJCTg2QzU2OEUx
MTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAv
KiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLzsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0Yw
IC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87
IH07CkBAIC03NTQsNiArNzg3LDIwIEBACiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjEx
NEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9
IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4
NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJ
CQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MjsKKwkJCXJl
bW90ZUluZm8gPSAiTExJbnQgT2Zmc2V0cyI7CisJCX07CisJCTBGNDY4MEIzMTRCQTgyMTQwMEJG
RTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWlu
ZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFD
MDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xv
YmFsSURTdHJpbmcgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0g
SlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQl9OwogCQkxNDEyMTRCRTBBNDkxOTBFMDA0ODAy
NTUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVy
SXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3
IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtNzk5LDYgKzg0NiwxNSBAQAogLyogRW5kIFBCWENv
bnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVz
ICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQYXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJ
CQlkc3RTdWJmb2xkZXJTcGVjID0gMDsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAxOworCQl9OwogCQk1REJCMTUxMTEzMUQwQjEz
MDA1NkFEMzYgLyogQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWENvcHlG
aWxlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAxMjsKQEAgLTgzOSw2ICs4OTUs
MTAgQEAKIAkJMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVy
aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkUmVzdHJpY3Rp
b25WZXJpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkNEODM1NDE0ODU4
NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRlbXBvcmFyeUNoYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2lu
dHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFbnRyeXBv
aW50cy5jcHA7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlw
b2ludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFbnRyeXBvaW50
cy5oOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRUaHVua3MuY3BwOyBwYXRo
ID0gbGxpbnQvTExJbnRUaHVua3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTExJbnRUaHVua3MuaDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0
RiAvKiBDb2RlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlVHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBODE0QkNGNTVFMDA4ODVC
NEYgLyogSGFuZGxlckluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFu
ZGxlckluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQUExNEJDRjVC
OTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRXhwcmVzc2lvblJhbmdlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtODQ5LDkgKzkwOSwxMyBAQAogCQkwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyog
TWV0aG9kQ2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
dGhvZENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNC
NjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2xvYmFsUmVzb2x2ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMTEludENhbGxMaW5rSW5mby5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9u
U2xvd1BhdGhzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vblNsb3dQ
YXRocy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE2RDcyNDE0MkMzOUEyMDBD
Rjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjFDMjY2
MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSklURHJpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFD
Mjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1
dGlvbkhhcm5lc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0aW9u
SGFybmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3RTE0QkVBQTgw
MDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCeXRlY29kZUNvbnZlbnRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkQxNDczOEYyRTAwMTIx
RTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gREZHQ29kZUJsb2Nrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTg2Miw2ICs5MjYsMjAgQEAKIAkJMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8q
IExpc3RhYmxlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaXN0
YWJsZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwN0YxNEJB
NTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSklURXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zm
c2V0c0V4dHJhY3RvciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBw
YXRoID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RXhjZXB0aW9u
cy5jcHA7IHBhdGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5oOyBw
YXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRIZWxwZXJzLmNwcDsgcGF0aCA9IGxs
aW50L0xMSW50SGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4
MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTExJbnRIZWxwZXJzLmg7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0Njgw
QzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExMSW50Q29tbW9uLmg7IHBhdGggPSBsbGludC9MTEludENvbW1vbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyog
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBwYXRoID0gbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29u
ZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM3MTRCQkIxNjkwMEJG
RTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBwYXRoID0gbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM4
MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIuaDsgcGF0aCA9IGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0Njgw
Q0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBMTEludERhdGEuY3BwOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcy
IC8qIExMSW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludERh
dGEuaDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwRDExNEJCQzVGODAwQkZF
MjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjU1RjBGMTE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdFBDLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RQQy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyogREZHQnl0ZUNv
ZGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCeXRlQ29kZUNh
Y2hlLmg7IHBhdGggPSBkZmcvREZHQnl0ZUNvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTU4Nyw2ICsxNjY1LDEzIEBACiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8K
KwkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2Eg
PSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUUwQTQ4NzkzQzAwNDgwMjU1IC8qIEZyYW1ld29y
a3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0xNjQ1LDYgKzE3MzAsNyBAQAogCQkJCTE0MTIxMTIw
MEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovLAogCQkJCTE0QkQ1OUJGMEEzRThGOTAwMEJB
RjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0
UmVnRXhwICovLAorCQkJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNl
dHNFeHRyYWN0b3IgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTE2NzUsNiArMTc2MSw3IEBACiAJCQkJRjVDMjkwRTYwMjg0Rjk4
RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCiAJCQkJNDVFMTJEODgwNkE0
OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3
IC8qIGNvbmZpZy5oICovLAorCQkJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAq
LywKIAkJCQkxNDMyRUJENzBBMzRDQUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEy
MEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJsZXIgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAw
RjFGNjgxIC8qIGJ5dGVjb2RlICovLApAQCAtMTcxNCw2ICsxODAxLDI4IEBACiAJCQl0YWJXaWR0
aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3
MiAvKiBsbGludCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovLAor
CQkJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8sCisJ
CQkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLywKKwkJCQkw
RjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLywKKwkJCQkwRjQ2ODBD
RTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLywKKwkJCQkwRjQ2ODBDRjE0QkJC
M0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi8sCisJCQkJMEY0NjgwQzUxNEJCQjE2OTAwQkZF
MjcyIC8qIExMSW50Q29tbW9uLmggKi8sCisJCQkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8q
IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovLAorCQkJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3
MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLywKKwkJCQkwRjQ2ODBDODE0QkJCMTY5MDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovLAorCQkJCTBGNDY4MDlEMTRCQTdGODIw
MEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovLAorCQkJCTBGNDY4MDlFMTRCQTdGODIw
MEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLywKKwkJCQkwRjQ2ODA5RjE0QkE3RjgyMDBC
RkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLywKKwkJCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUy
NzIgLyogTExJbnRIZWxwZXJzLmggKi8sCisJCQkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8q
IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGxsaW50Owor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMTQxMjExMDAwQTQ4NzcyNjAwNDgw
MjU1IC8qIHRlc3RzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
QEAgLTE3NDgsNiArMTg1Nyw4IEBACiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNDY4MEQw
MTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLywKKwkJCQkwRjQ2
ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovLAogCQkJCTBG
NDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLywKIAkJCQkwRjQ2
ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovLAogCQkJCTBGRDgyRTM3
MTQxQUIxNDIwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oICovLApAQCAtMjE3NSw2ICsy
Mjg2LDggQEAKIAkJN0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGMjFDMjc5MTRCRTcyNzMw
MEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi8sCisJCQkJMEYyMUMyN0ExNEJF
NzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLywKIAkJCQkwRjE1RjE1RDE0QjdB
NzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VG
ODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0
RCAvKiBBcmdMaXN0LmggKi8sCkBAIC0yNTQ3LDYgKzI2NjAsOCBAQAogCQk5NjlBMDc4RjBFRDFE
M0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZl
bnRpb25zLmggKi8sCisJCQkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExp
bmtJbmZvLmggKi8sCiAJCQkJMEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3Rh
dHVzLmNwcCAqLywKIAkJCQkwRjkzMzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0
dXMuaCAqLywKIAkJCQkwRjkzMzI5NTE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5j
cHAgKi8sCkBAIC0zMDk3LDcgKzMyMTIsMTYgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZF
N0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJEQjhBODEw
MEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYx
NUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlv
bnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBMTElu
dENvbW1vbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8q
IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0QxNEJC
QjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBv
aW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExM
SW50VGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYg
LyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0
RiAvKiBIYW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAw
ODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtMzEwNiw3
ICszMjMwLDExIEBACiAJCQkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxM
aW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8q
IEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCOTE0QkNGOTVG
MDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1
dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0
QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3
RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY3QjI5NEExNEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEMxNEMzQ0Q0MzAwN0MzREIxIC8qIERGR0J5
dGVDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzEyNSw2ICszMjUzLDI0IEBACiAvKiBF
bmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVU
YXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVp
bGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0
cmFjdG9yIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MDhCMTRCQTdFNUUwMEJG
RTI3MiAvKiBTb3VyY2VzICovLAorCQkJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFt
ZXdvcmtzICovLAorCQkJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8s
CisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJ
CQkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJ
CQkpOworCQkJbmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3ROYW1l
ID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDBGNDY4
MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQlw
cm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OwogCQkxNDEy
MTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2
ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDEyMTEzOTBBNDg3OTg0MDA0
ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1p
bmlkb20iICovOwpAQCAtMzI1MSwxMSArMzM5NywyOSBAQAogCQkJCTE0QkQ1OUJFMEEzRThGOTAw
MEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTkzMkY1QkRBMDgyMkExQzcwMDczNjk3NSAvKiBq
c2MgKi8sCiAJCQkJNjUxMTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJ
CQkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAq
LywKKwkJCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLywKIAkJ
CSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3
MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNj
cmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmls
ZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9sbGludC9M
b3dMZXZlbEFzc2VtYmxlci5hc20iLAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUgRGVyaXZl
ZCBTb3VyY2VzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaCIsCisJCQkpOworCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3No
OworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJ
bnRPZmZzZXRzL1wiXG5cbi91c3IvYmluL2VudiBydWJ5IFwiJHtTUkNST09UfS9vZmZsaW5lYXNt
L2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmJcIiBcIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc21cIiBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMv
TExJbnREZXNpcmVkT2Zmc2V0cy5oXCJcbiI7CisJCX07CiAJCTM3MTNGMDE0MTQyOTA1MjQwMDM2
Mzg3RiAvKiBDaGVjayBGb3IgSW5hcHByb3ByaWF0ZSBPYmplY3RpdmUtQyBDbGFzcyBOYW1lcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zMzYxLDcgKzM1MjUsNyBAQAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQkJc2hlbGxQYXRoID0gL2Jpbi9z
aDsKLQkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL2RvY3NcIlxuY2QgXCIke0JVSUxUX1BST0RVQ1RT
X0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmVcIlxuXG4vYmluL2xuIC1zZmggXCIk
e1NSQ1JPT1R9XCIgSmF2YVNjcmlwdENvcmVcbmV4cG9ydCBKYXZhU2NyaXB0Q29yZT1cIkphdmFT
Y3JpcHRDb3JlXCJcbmV4cG9ydCBCVUlMVF9QUk9EVUNUU19ESVI9XCIuLi8uLlwiXG5cbm1ha2Ug
LS1uby1idWlsdGluLXJ1bGVzIC1mIFwiSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZVwiIC1qIGAvdXNyL3NiaW4vc3lzY3RsIC1uIGh3Lm5jcHVgXG4iOworCQkJc2hlbGxTY3JpcHQg
PSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvZG9jc1wiXG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7U1JDUk9PVH1cIiBKYXZhU2Ny
aXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2YVNjcmlwdENvcmVcIlxuZXhwb3J0
IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJcblxubWFrZSAtLW5vLWJ1aWx0aW4tcnVsZXMg
LWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlXCIgLWogYC91c3Ivc2Jpbi9z
eXNjdGwgLW4gaHcubmNwdWBcblxuL3Vzci9iaW4vZW52IHJ1YnkgSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9hc20ucmIgSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0pTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciBMTEludEFz
c2VtYmx5LmhcbiI7CiAJCX07CiAJCTkzMTk1ODZCMDlEOUY5MUEwMEE1NkZENCAvKiBDaGVjayBG
b3IgR2xvYmFsIEluaXRpYWxpemVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVp
bGRQaGFzZTsKQEAgLTMzOTYsNiArMzU2MCwxNCBAQAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVp
bGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KKwkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlp
c2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRDBBNDg3OTNDMDA0
ODAyNTUgLyogU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwog
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTM2NTMsNyArMzgyNSwxNCBAQAog
CQkJCTg2NzA0Qjg2MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2NzA0Qjg5MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNr
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExM
SW50SGVscGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUy
NzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MDgzMTRC
QTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
NDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0
dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRG
IC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUMxNEJD
RjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4
M0IwMTRCQ0Y3MTYwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYwQjgzQjQxNEJDRjg2MDAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGNjlFODZDMzE0QzZFNTUxMDAyQzJDNjIgLyogTnVtYmVyT2ZDb3Jl
cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM2NzgsNiArMzg1NywxNiBAQAogLyogRW5kIFBCWFNv
dXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5j
eSBzZWN0aW9uICovCisJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBl
bmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9
IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovOworCQkJdGFyZ2V0
UHJveHkgPSAwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5
ICovOworCQl9OworCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5k
ZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAw
RjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOwor
CQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovOworCQl9OwogCQkxNDEyMTRCRjBBNDkxOTBFMDA0ODAyNTUgLyogUEJYVGFy
Z2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0
YXJnZXQgPSAxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLzsKQEAgLTM3MTEs
NiArMzkwMCwxNTAgQEAKIC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkwRjQ2ODA5NjE0QkE3
RTVFMDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0g
Tk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BI
QVNFX1NUUklQID0gTk87CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJ
CQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9O
UyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJP
Q0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRl
ZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBOTzsKKwkJCQlH
Q0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0ND
X1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9N
SVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUg
PSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJf
U0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJV
SUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9Q
QVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJ
CQlPTkxZX0FDVElWRV9BUkNIID0gTk87CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05B
TUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRI
UyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NF
QVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwOTcx
NEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BB
VEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlD
T1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJk
d2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJ
CQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBj
b20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMy
X0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZ
UEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdD
Q19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1th
cmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19E
SVIpL0xMSW50T2Zmc2V0cyQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gTk87
CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFj
b3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJ
CW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJv
ZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hT
ID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlF
UzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJ
CQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19F
WENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5s
bHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5P
OworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0Nf
V0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFC
TEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4s
CisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAor
CQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9Z
TUVOVF9UQVJHRVQgPSAxMC43OworCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBOTzsKKwkJCQlQUk9E
VUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJ
VVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9M
TEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFBy
b2ZpbGluZzsKKwkJfTsKKwkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24g
Ki8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChB
UkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJ
CURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19D
X0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElP
TlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xh
bmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJ
R0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FC
T1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlF
UzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJ
aWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIk
KEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RB
UkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlT
REtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUyki
OworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBBRDE0QkE3RkQ5
MDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNl
cyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MEFFMTRCQTdG
RDkwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNv
dXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4MEFG
MTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRl
cml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9Owor
CQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNU
X05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0
aW9uOworCQl9OwogCQkxNDEyMTEzQTBBNDg3OTg0MDA0ODAyNTUgLyogRGVidWcgKi8gPSB7CiAJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CkBAIC0z
OTUyLDYgKzQyODUsMjggQEAKIC8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkwRjQ2ODA5QTE0
QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVU
YXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZp
Z3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODA5NjE0
QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcy
IC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2ZpbGlu
ZyAqLywKKwkJCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJ
CSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBBQzE0QkE3RkQ5MDBC
RkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQg
IkxMSW50IE9mZnNldHMiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJ
CWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8q
IERlYnVnICovLAorCQkJCTBGNDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovLAor
CQkJCTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY0Njgw
QjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0g
UHJvZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLyA9IHsKIAkJ
CWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHJl
dmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1
ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjZGVmaW5lIEdMT0JBTF9U
SFVOS19JRCByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLTEp
KQogI2RlZmluZSBSRUdFWFBfQ09ERV9JRCByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNf
Y2FzdDxpbnRwdHJfdD4oLTIpKQogCi0jaW5jbHVkZSA8TWFjcm9Bc3NlbWJsZXIuaD4KKyNpbmNs
dWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAkocmV2aXNpb24gMTA2NTkwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAko
d29ya2luZyBjb3B5KQpAQCAtMjczLDYgKzI3MywxNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KKyAgICAKKyAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyh2
b2lkKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIodmFs
dWUpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0OworICAgICAgICByZXN1
bHQubV92YWx1ZSA9IHZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAg
IGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihSZXR1cm5BZGRyZXNzUHRyIHJhKQogICAg
ICAgICA6IG1fdmFsdWUocmEudmFsdWUoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCeXRlY29kZUNvbnZlbnRpb25zX2gKKyNkZWZpbmUg
Qnl0ZWNvZGVDb252ZW50aW9uc19oCisKKy8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRl
Y29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWly
IHJhbmdlczoKKy8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2Vz
IGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1l
LCBzZWUgUmVnaXN0ZXJGaWxlLmguCisvLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9y
d2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBh
bmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCisvLyAgICAgIDB4
NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3Bl
Y2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCitzdGF0
aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKKwor
I2VuZGlmIC8vIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDEwNjU5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDE3ICsyNyw0MCBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3Rh
dHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMTEludENhbGxMaW5r
SW5mby5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBV
TlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2lu
KCkgKyBieXRlY29kZUluZGV4OworICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8g
PSBpbnN0cnVjdGlvbls0XS51LmNhbGxMaW5rSW5mbzsKKyAgICAKKyAgICByZXR1cm4gQ2FsbExp
bmtTdGF0dXMoY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5nZXQoKSwgZmFsc2UpOworI2Vs
c2UKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFsc2UpOworI2VuZGlmCit9CisKIENh
bGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmls
ZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJv
ZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lmIEVOQUJM
RShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAgICByZXR1cm4gQ2FsbExpbmtTdGF0
dXMoCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4
KS5sYXN0U2VlbkNhbGxlZS5nZXQoKSwKLSAgICAgICAgcHJvZmlsZWRCbG9jay0+Y291bGRUYWtl
U2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpOworICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVy
T2ZDYWxsTGlua0luZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2Zp
bGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIGlmIChwcm9maWxlZEJsb2NrLT5j
b3VsZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKKyAgICAgICAgcmV0dXJuIENhbGxMaW5r
U3RhdHVzKDAsIHRydWUpOworICAgIAorICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IHByb2ZpbGVk
QmxvY2stPmdldENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KS5sYXN0U2VlbkNhbGxlZS5nZXQo
KTsKKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJv
ZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgcmV0dXJuIENhbGxMaW5rU3Rh
dHVzKHRhcmdldCwgZmFsc2UpOwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwg
ZmFsc2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE1
ICs0NywxNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1
dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAgICAgCi0gICAgYm9v
bCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0OyB9CisgICAgYm9vbCBpc1Nl
dCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0IHx8IG1fY291bGRUYWtlU2xvd1BhdGg7
IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2NhbGxUYXJn
ZXQ7IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAg
ICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bGRU
YWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBKU0Z1bmN0aW9uKiBjYWxsVGFyZ2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgCiBwcml2YXRlOgorICAgIHN0YXRpYyBDYWxs
TGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgpOworICAgIAogICAgIEpTRnVuY3Rpb24qIG1fY2FsbFRhcmdldDsKICAgICBib29sIG1f
Y291bGRUYWtlU2xvd1BhdGg7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0
Miw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVP
YmplY3QuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJVU3RyaW5nQ29u
Y2F0ZW5hdGUuaCIKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMzU2LDEwICszNTcsMTAgQEAgdm9p
ZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjKSBjbwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBpICs9IG9wY29kZUxlbmd0aHNbZXhlYy0+
aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbaV0udS5vcGNvZGUpXSkK
ICAgICAgICAgKytpbnN0cnVjdGlvbkNvdW50OwogCi0gICAgcHJpbnRmKCIlbHUgbV9pbnN0cnVj
dGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0
ZXIocylcblxuIiwKKyAgICBwcmludGYoIiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0
ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUo
cylcblxuIiwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25D
b3VudCksCiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygp
LnNpemUoKSAqIHNpemVvZihJbnN0cnVjdGlvbikpLAotICAgICAgICB0aGlzLCBtX251bVBhcmFt
ZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgdGhpcywgbV9udW1QYXJhbWV0
ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycywgbV9udW1WYXJzKTsKIAogICAgIFZlY3RvcjxJbnN0
cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsK
ICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBpbnN0cnVjdGlv
bnMoKS5lbmQoKTsKQEAgLTg5Niw2ICs4OTcsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhl
Y1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRp
b24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7Cisg
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CisgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWwiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX2dlbmVyaWM6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgInB1dF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTE0NTMsNiArMTQ2Miw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1Rh
ZywKIHsKICAgICBzZXROdW1QYXJhbWV0ZXJzKG90aGVyLm51bVBhcmFtZXRlcnMoKSk7CiAgICAg
b3B0aW1pemVBZnRlcldhcm1VcCgpOworICAgIGppdEFmdGVyV2FybVVwKCk7CiAgICAgCiAgICAg
aWYgKG90aGVyLm1fcmFyZURhdGEpIHsKICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2Fy
eSgpOwpAQCAtMTUwMSw2ICsxNTExLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhl
Y3V0YWJsZSogbwogICAgIEFTU0VSVChtX3NvdXJjZSk7CiAgICAgCiAgICAgb3B0aW1pemVBZnRl
cldhcm1VcCgpOworICAgIGppdEFmdGVyV2FybVVwKCk7CiAKICNpZiBEVU1QX0NPREVfQkxPQ0tf
U1RBVElTVElDUwogICAgIGxpdmVDb2RlQmxvY2tTZXQuYWRkKHRoaXMpOwpAQCAtMTUxOCw3ICsx
NTI5LDExIEBAIENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFM
VUVfUFJPRklMRSkKICAgICBkdW1wVmFsdWVQcm9maWxlcygpOwogI2VuZGlmCi0gICAgCisKKyNp
ZiBFTkFCTEUoTExJTlQpICAgIAorICAgIHdoaWxlIChtX2luY29taW5nTExJbnRDYWxscy5iZWdp
bigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQorICAgICAgICBtX2luY29taW5nTExJ
bnRDYWxscy5iZWdpbigpLT5yZW1vdmUoKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAjaWYg
RU5BQkxFKEpJVCkKICAgICAvLyBXZSBtYXkgYmUgZGVzdHJveWVkIGJlZm9yZSBhbnkgQ29kZUJs
b2NrcyB0aGF0IHJlZmVyIHRvIHVzIGFyZSBkZXN0cm95ZWQuCiAgICAgLy8gQ29uc2lkZXIgdGhh
dCB0d28gQ29kZUJsb2NrcyBiZWNvbWUgdW5yZWFjaGFibGUgYXQgdGhlIHNhbWUgdGltZS4gVGhl
cmUKQEAgLTE3MzAsOCArMTc0NSw2OSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkoCiAjZWxzZQogICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VVbmxpbmtpbmcg
PSBmYWxzZTsKICNlbmRpZgotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAgICAKKyNp
ZiBFTkFCTEUoTExJTlQpCisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9nbG9iYWxE
YXRhLT5pbnRlcnByZXRlcjsKKyAgICAvLyBpbnRlcnByZXRlci0+ZW5hYmxlZCgpIHJldHVybnMg
dHJ1ZSBpZiB0aGUgb2xkIEMrKyBpbnRlcnByZXRlciBpcyBlbmFibGVkLiBJZiB0aGF0J3MgZW5h
YmxlZAorICAgIC8vIHRoZW4gd2UncmUgbm90IHVzaW5nIExMSW50LgorICAgIGlmICghaW50ZXJw
cmV0ZXItPmVuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAg
ICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9w
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV07CisgICAgICAgICAgICBzd2l0Y2ggKGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkpIHsKKyAgICAg
ICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6
CisgICAgICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZSB8fCBI
ZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkpCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5r
aW5nKQorICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IHByb3BlcnR5
IGFjY2VzcyB3aXRoIHN0cnVjdHVyZSAlcC5cbiIsIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0
dXJlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVy
ZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzVdLnUub3BlcmFuZCA9
IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsOgorICAgICAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZChjdXJJbnN0
cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgSGVh
cDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAg
ICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0
dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZVVubGlua2luZykgeworICAgICAgICAgICAgICAgICAgICBwcmludGYo
IkNsZWFyaW5nIExMSW50IHB1dCB0cmFuc2l0aW9uIHdpdGggc3RydWN0dXJlcyAlcCAtPiAlcCwg
Y2hhaW4gJXAuXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25b
NF0udS5zdHJ1Y3R1cmUuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJJbnN0
cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVh
cigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmNsZWFy
KCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5j
bGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlID0gaW50
ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBzaXpl
ID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVj
dGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgQVNT
RVJUKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkg
PT0gb3BfcmVzb2x2ZV9nbG9iYWwKKyAgICAgICAgICAgICAgICAgICB8fCBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMpOworICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvblszXS51LnN0cnVj
dHVyZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQo
KSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAodmVyYm9zZVVu
bGlua2luZykKKyAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IGdsb2JhbCBy
ZXNvbHZlIGNhY2hlIHdpdGggc3RydWN0dXJlICVwLlxuIiwgY3VySW5zdHJ1Y3Rpb25bM10udS5z
dHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1
cmUuY2xlYXIoKTsKKyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9IDA7
CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGxpbnRDYWxs
TGlua0luZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAobV9sbGludENhbGxMaW5r
SW5mb3NbaV0uaXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQobV9sbGludENhbGxMaW5rSW5m
b3NbaV0uY2FsbGVlLmdldCgpKSkgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5r
aW5nKQorICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IGNhbGwgZnJv
bSAlcC5cbiIsIHRoaXMpOworICAgICAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ld
LnVubGluaygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCEhbV9sbGludENhbGxM
aW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxs
TGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBtX2xs
aW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgICAgICB9Cisg
ICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKwogI2lmIEVOQUJMRShERkdfSklUKQogICAg
IC8vIENoZWNrIGlmIHdlJ3JlIG5vdCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAg
ICAgaWYgKCEoc2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBt
X2RmZ0RhdGEtPmxpdmVuZXNzSGFzQmVlblByb3ZlZCkpIHsKQEAgLTE3NTQsNyArMTgzMCw3IEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2FsbExpbmtJbmZvcygpOyArK2kpIHsKICAgICAg
ICAgICAgIGlmIChjYWxsTGlua0luZm8oaSkuaXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQo
Y2FsbExpbmtJbmZvKGkpLmNhbGxlZS5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZVVubGlua2luZykKLSAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBjYWxs
IGZyb20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmlu
ZyBjYWxsIGZyb20gJXAgdG8gJXAuXG4iLCB0aGlzLCBjYWxsTGlua0luZm8oaSkuY2FsbGVlLmdl
dCgpKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8oaSkudW5saW5rKCptX2dsb2JhbERh
dGEsIHJlcGF0Y2hCdWZmZXIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCEhY2Fs
bExpbmtJbmZvKGkpLmxhc3RTZWVuQ2FsbGVlCkBAIC0xODUyLDEwICsxOTI4LDEyIEBAIHZvaWQg
Q29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXIKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7ICsraSkKICAgICAgICAgdmlzaXRvci5hcHBl
bmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQotICAgIGZv
ciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9
IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5z
dHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOwotICAgIGZvciAo
c2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsg
aSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVj
dGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICBpZiAobV9nbG9i
YWxEYXRhLT5pbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNp
emUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9u
cygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICAgICAgZm9yIChzaXpl
X3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwg
c2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVj
dGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICB9CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTg2Myw4ICsxOTQxLDkgQEAgdm9pZCBDb2RlQmxv
Y2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgogICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBl
eGVjdXRhYmxlcyB0aGF0IHdlIGhhdmUgaW5saW5lZCBkb24ndCBkaWUuCiAgICAgICAgIC8vIEZJ
WE1FOiBJZiB0aGV5IHdvdWxkIGhhdmUgb3RoZXJ3aXNlIGRpZWQsIHdlIHNob3VsZCBwcm9iYWJs
eSB0cmlnZ2VyIHJlY29tcGlsYXRpb24uCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aW5saW5lQ2FsbEZyYW1lcygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmaW5saW5lQ2FsbEZyYW1lcygpW2ldLmV4ZWN1dGFibGUpOwotICAgICAgICAgICAgdmlz
aXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZXMoKVtpXS5jYWxsZWUpOworICAgICAgICAgICAg
SW5saW5lQ2FsbEZyYW1lJiBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJhbWVzKClbaV07
CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZyYW1lLmV4ZWN1dGFibGUp
OworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZS5jYWxsZWUpOwog
ICAgICAgICB9CiAgICAgfQogI2VuZGlmCkBAIC0yMDc0LDYgKzIxNTMsMTIgQEAgdm9pZCBDb2Rl
QmxvY2s6OnVubGlua0NhbGxzKCkKIHsKICAgICBpZiAoISFtX2FsdGVybmF0aXZlKQogICAgICAg
ICBtX2FsdGVybmF0aXZlLT51bmxpbmtDYWxscygpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9zLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGlmIChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpKQorICAgICAg
ICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgfQorI2VuZGlmCiAg
ICAgaWYgKCEobV9jYWxsTGlua0luZm9zLnNpemUoKSB8fCBtX21ldGhvZENhbGxMaW5rSW5mb3Mu
c2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VK
SVQoKSkKQEAgLTIwODgsMTAgKzIxNzMsMzkgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0NhbGxz
KCkKIAogdm9pZCBDb2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMoKQogeworI2lmIEVOQUJM
RShMTElOVCkKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2lu
Y29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVn
aW4oKS0+dW5saW5rKCk7CisjZW5kaWYKKyAgICBpZiAobV9pbmNvbWluZ0NhbGxzLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOwogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcih0aGlz
KTsKICAgICB3aGlsZSAobV9pbmNvbWluZ0NhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0NhbGxz
LmVuZCgpKQogICAgICAgICBtX2luY29taW5nQ2FsbHMuYmVnaW4oKS0+dW5saW5rKCptX2dsb2Jh
bERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogfQorCit1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2Rl
T2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQor
eworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAocmV0dXJuQWRkcmVzcy52YWx1ZSgpID49IGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2JlZ2luKQorICAgICAgICAmJiByZXR1cm5BZGRyZXNz
LnZhbHVlKCkgPD0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZW5kKSkgeworICAgICAgICBB
U1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkpOworICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2Nr
KCkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRK
SVRUeXBlKCkpKTsKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gZXhlYy0+Y3Vy
cmVudFZQQygpOworICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb24pOworICAgICAgICByZXR1cm4g
Ynl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb24pOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOworI2VuZGlmCisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4g
MTsKKyAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5k
aWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOworICAgIGlmICghY2Fs
bEluZGljZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gYmluYXJ5U2Vh
cmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJl
dHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRK
SVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0
OworfQogI2VuZGlmCiAKIHZvaWQgQ29kZUJsb2NrOjpjbGVhckV2YWxDYWNoZSgpCkBAIC0yMTg3
LDI0ICsyMzAxLDQ1IEBAIGJvb2wgRnVuY3Rpb25Db2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRoREYK
IAogdm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJ
VFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6Omlz
T3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNl
bWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0
YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwogfQogCiB2b2lk
IEV2YWxDb2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9
IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5n
SklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwog
ICAgIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0
aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRnVuY3Rpb25Db2Rl
QmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6
OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJ
VFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRp
Y19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25P
cHRpbWl6ZWRDb2RlRm9yKCpnbG9iYWxEYXRhKCksIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JD
b25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7CiB9CisKK3ZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6aml0
Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRK
SVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMg
PT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRh
YmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlKGdsb2JhbERhdGEpOworfQorCit2
b2lkIEV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1
bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShn
bG9iYWxEYXRhKTsKK30KKwordm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0g
SklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1l
bnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVy
RXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZUZvcihnbG9iYWxEYXRhLCBtX2lzQ29uc3RydWN0b3Ig
PyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOworfQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoVkFMVUVfUFJPRklMRVIpCkBAIC0yMzA3LDYgKzI0NDIsMTggQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXBWYWx1ZVByb2ZpbGVzKCkKIH0KICNlbmRpZgogCit2b2lkIENvZGVCbG9jazo6aGFuZGxl
Qnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKQoreworI2lmICFFTkFCTEUoT1BDT0RFX1NB
TVBMSU5HKSAmJiAhRU5BQkxFKExMSU5UKQorICAgIGlmIChCeXRlY29kZUdlbmVyYXRvcjo6ZHVt
cHNHZW5lcmF0ZWRDb2RlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoISFhbHRlcm5hdGl2
ZSgpKQorICAgICAgICBkaXNjYXJkQnl0ZWNvZGUoKTsKKyAgICBlbHNlCisgICAgICAgIGRpc2Nh
cmRCeXRlY29kZUxhdGVyKCk7CisjZW5kaWYKK30KKwogI2lmbmRlZiBOREVCVUcKIGJvb2wgQ29k
ZUJsb2NrOjp1c2VzT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlEKQogewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTA2NTkwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw2ICszMCw3IEBACiAjaWZuZGVmIENvZGVCbG9ja19oCiAjZGVmaW5lIENvZGVCbG9j
a19oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbExp
bmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIK
ICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCkBAIC01MCw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSklU
V3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJK
dW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkxp
bmVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQcmVkaWN0aW9uVHJhY2tl
ci5oIgpAQCAtNjUsMTYgKzY3LDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKLS8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBi
eXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRo
ZWlyIHJhbmdlczoKLS8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRp
Y2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZy
YW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCi0vLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAg
Rm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFy
cyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCi0vLyAgICAg
IDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAg
c3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCi1z
dGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsK
LQogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgREZH
Q29kZUJsb2NrczsKKyAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogCiAgICAgaW5saW5lIGludCB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIo
aW50IGFyZ3VtZW50c1JlZ2lzdGVyKSB7IHJldHVybiBhcmd1bWVudHNSZWdpc3RlciAtIDE7IH0K
IApAQCAtODMsNiArODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb2RlQmxvY2sg
OiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXplciwgcHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJpZW5k
IGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
ICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gQ29weVBhcnNlZEJsb2NrVGFnIHsgQ29weVBhcnNl
ZEJsb2NrIH07CiAgICAgcHJvdGVjdGVkOgpAQCAtMTIzLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAg
ICAgICAgICByZXN1bHQgPSByZXN1bHQtPmFsdGVybmF0aXZlKCk7CiAgICAgICAgICAgICBBU1NF
UlQocmVzdWx0KTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBK
SVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNl
bGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMTkyLDE1ICsxOTAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxNZXRob2RDYWxsTGlua0luZm8s
IHVuc2lnbmVkLCBnZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUluZGV4PihtX21ldGhvZENh
bGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSwgYnl0ZWNv
ZGVJbmRleCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQo
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoIW1fcmFyZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBW
ZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1f
cmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOwotICAgICAgICAgICAgaWYgKCFjYWxs
SW5kaWNlcy5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBy
ZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNp
Z25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGlj
ZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSkt
PmJ5dGVjb2RlT2Zmc2V0OwotICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KEV4ZWNTdGF0ZSosIFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAgICAgIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0Rm9yQ2FsbEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKQEAg
LTIyMSwxMSArMjExLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAg
ICBtX2luY29taW5nQ2FsbHMucHVzaChpbmNvbWluZyk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgICAgIHZvaWQgbGlua0luY29taW5nQ2FsbChMTEludENhbGxMaW5rSW5mbyog
aW5jb21pbmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLnB1
c2goaW5jb21pbmcpOworICAgICAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogICAgICAg
ICAKICAgICAgICAgdm9pZCB1bmxpbmtJbmNvbWluZ0NhbGxzKCk7Ci0jZW5kaWYKKyNlbmRpZiAv
LyBFTkFCTEUoSklUKQogCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQp
IHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgdm9pZCBzZXRKSVRDb2RlTWFwKFBhc3NPd25QdHI8
Q29tcGFjdEpJVENvZGVNYXA+IGppdENvZGVNYXApCiAgICAgICAgIHsKICAgICAgICAgICAgIG1f
aml0Q29kZU1hcCA9IGppdENvZGVNYXA7CkBAIC0yMzQsNyArMjMwLDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2ppdENvZGVNYXAuZ2V0KCk7CiAg
ICAgICAgIH0KKyNlbmRpZgogICAgICAgICAKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAg
dm9pZCBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoISFtX2RmZ0RhdGEpCkBAIC0zMzMsMTIgKzMzMSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQogICAgICAgICB7
CisgICAgICAgICAgICBBU1NFUlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0cnVjdGlvbnMoKS5iZWdp
bigpICYmIHJldHVybkFkZHJlc3MgPCBpbnN0cnVjdGlvbnMoKS5lbmQoKSk7CiAgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3Ry
dWN0aW9ucygpLmJlZ2luKCk7CiAgICAgICAgIH0KLSNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0
SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7
IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9
CiAgICAgICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgeyByZXR1cm4gbV9pc051
bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KQEAgLTM1MiwxMyArMzQ5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIG1fc2hvdWxkRGlzY2FyZEJ5dGVjb2RlID0gdHJ1
ZTsKICAgICAgICAgfQotICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9y
dHVuaXR5KCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCEhYWx0ZXJuYXRpdmUoKSkKLSAg
ICAgICAgICAgICAgICBkaXNjYXJkQnl0ZWNvZGUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBkaXNjYXJkQnl0ZWNvZGVMYXRlcigpOwotICAgICAgICB9CisgICAgICAgIHZv
aWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICAgICAgCiAgICAg
ICAgIGJvb2wgdXNlc09wY29kZShPcGNvZGVJRCk7CiAKQEAgLTM4Myw2ICszNzQsMTUgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGV4ZWN1dGFibGVN
ZW1vcnkoKSB7IHJldHVybiBnZXRKSVRDb2RlKCkuZ2V0RXhlY3V0YWJsZU1lbW9yeSgpOyB9CiAg
ICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2Nv
cGVDaGFpbk5vZGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpID0gMDsK
KyAgICAgICAgYm9vbCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2Rl
OjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaml0Q29tcGlsZUltcGwoZ2xvYmFsRGF0YSk7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVw
bGFjZW1lbnQoKSA9IDA7CiAKICAgICAgICAgZW51bSBDb21waWxlV2l0aERGR1N0YXRlIHsKQEAg
LTQwMiwxMyArNDAyLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgaGFzT3B0
aW1pemVkUmVwbGFjZW1lbnQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklU
VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRD
b2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIGJvb2wgcmVz
dWx0ID0gcmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID4gZ2V0SklUVHlwZSgpOwogI2lmICFB
U1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAg
QVNTRVJUKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwog
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCkt
PmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUo
KSkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpID09IHRoaXMpOwogICAg
ICAgICAgICAgfQogI2VuZGlmCkBAIC00NjcsMTggKzQ2NywyMSBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICB2b2lkIGNsZWFyRXZhbENhY2hlKCk7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVU
RVIpCiAgICAgICAgIHZvaWQgYWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbih1bnNpZ25lZCBw
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1f
Z2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CisgICAgICAg
ICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbih1bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAg
ICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbik7CisgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGds
b2JhbFJlc29sdmVJbnN0cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBoYXNHbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb25BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBhZGRM
TEludENhbGxMaW5rSW5mbygpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlu
a0luZm9zLmFwcGVuZChMTEludENhbGxMaW5rSW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiAm
bV9sbGludENhbGxMaW5rSW5mb3MubGFzdCgpOworICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFC
TEUoSklUKQogICAgICAgICB2b2lkIHNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKHNpemVf
dCBzaXplKSB7IG1fc3RydWN0dXJlU3R1YkluZm9zLmdyb3coc2l6ZSk7IH0KQEAgLTQ4Nyw4ICs0
OTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJ
bmZvKHVuc2lnbmVkIGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAg
ICAgICAgaWYgKG1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9n
bG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbikpOworICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEds
b2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOwogICAgICAgICB9CiAg
ICAgICAgIEdsb2JhbFJlc29sdmVJbmZvJiBnbG9iYWxSZXNvbHZlSW5mbyhpbnQgaW5kZXgpIHsg
cmV0dXJuIG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2luZGV4XTsgfQogICAgICAgICBib29sIGhhc0ds
b2JhbFJlc29sdmVJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7
CkBAIC00OTksNiArNTAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBhZGRN
ZXRob2RDYWxsTGlua0luZm9zKHVuc2lnbmVkIG4pIHsgQVNTRVJUKG1fZ2xvYmFsRGF0YS0+Y2Fu
VXNlSklUKCkpOyBtX21ldGhvZENhbGxMaW5rSW5mb3MuZ3JvdyhuKTsgfQogICAgICAgICBNZXRo
b2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGxMaW5rSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJuIG1f
bWV0aG9kQ2FsbExpbmtJbmZvc1tpbmRleF07IH0KKyAgICAgICAgc2l6ZV90IG51bWJlck9mTWV0
aG9kQ2FsbExpbmtJbmZvcygpIHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCk7
IH0KICNlbmRpZgogICAgICAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC01Mzks
NiArNTQyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJvZmlsZSA9PSByZXN1
bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQorICAgICAgICBQcmVk
aWN0ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChpbnQgYnl0
ZWNvZGVPZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZVByb2ZpbGVG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bigpOworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCB0b3RhbE51bWJlck9m
VmFsdWVQcm9maWxlcygpCiAgICAgICAgIHsKQEAgLTU2NSwxMiArNTcyLDE2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTbG93Q2FzZShpbnQg
Ynl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJl
Q2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRl
Y29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRp
b25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rh
a2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBj
b3VsZFRha2VTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAg
IHJldHVybiB2YWx1ZSA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCAm
JiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBP
cHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQpAQCAtNTg5LDEy
ICs2MDAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2Vs
eVRvVGFrZVNwZWNpYWxGYXN0Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291
bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gc3BlY2lhbEZhc3RDYXNlQ291bnQg
Pj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nh
c3Q8ZG91YmxlPihzcGVjaWFsRmFzdENhc2VDb3VudCkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQg
Pj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKGludCBieXRl
Y29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNl
UHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1
bnNpZ25lZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFs
RmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0g
c2xvd0Nhc2VDb3VudCAtIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNjAzLDYgKzYxOCw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VBbnlT
bG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgh
bnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAg
dW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1
bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgKyBzcGVjaWFsRmFzdENhc2VDb3VudDsKQEAg
LTcwMCw3ICs3MTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wg
YWRkRnJlcXVlbnRFeGl0U2l0ZShjb25zdCBERkc6OkZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFz
ZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdl
dEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIG1fZXhpdFByb2ZpbGUuYWRkKHNpdGUp
OwogICAgICAgICB9CiAKQEAgLTgwOCw2ICs4MjUsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgY29weVBvc3RQYXJzZURhdGFGcm9tKENvZGVCbG9jayogYWx0ZXJuYXRpdmUpOwog
ICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbUFsdGVybmF0aXZlKCk7CiAgICAgICAg
IAorICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gSklUdGluZyBraWNr
cyBpbiwgaW4gYSBtaXhlZCBtb2RlCisgICAgICAgIC8vIGV4ZWN1dGlvbiB3b3JsZC4KKyAgICAg
ICAgCisgICAgICAgIHZvaWQgZG9udEpJVEFueXRpbWVTb29uKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2
b2lkIGppdEFmdGVyV2FybVVwKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1
dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJt
VXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0U29vbigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlu
dDMyX3QgbGxpbnRFeGVjdXRlQ291bnRlcigpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAg
ICAgIC8vIEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiB0aWVyZWQgY29tcGlsYXRpb24g
a2lja3MgaW4uIFRoaXMKICAgICAgICAgLy8gY29udHJvbHMgYm90aCB3aGVuIHRoZSBvcHRpbWl6
aW5nIGNvbXBpbGVyIGlzIGludm9rZWQgYW5kIHdoZW4gT1NSCiAgICAgICAgIC8vIGVudHJ5IGhh
cHBlbnMuIFR3byB0cmlnZ2VycyBleGlzdDogdGhlIGxvb3AgdHJpZ2dlciBhbmQgdGhlIHJldHVy
bgpAQCAtMTAwMCw2ICsxMDQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9z
aG91bGREaXNjYXJkQnl0ZWNvZGU7CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwg
dm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwogICAgICAgICAKQEAgLTEwODEsOSArMTEy
MiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBt
X3NvdXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7CiAKLSNpZiBFTkFCTEUo
SU5URVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9wcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2dsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBTZWdtZW50ZWRWZWN0b3I8TExJ
bnRDYWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxsTGlua0luZm9zOworICAgICAgICBTZW50aW5l
bExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50
Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdMTEludENhbGxzOwogI2VuZGlmCiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0cnVjdHVyZVN0dWJJ
bmZvczsKQEAgLTEwOTQsOSArMTEzNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNoZWNrOwogICAgICAgICBTZW50
aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlu
a0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2VuZGlmCi0jaWYgRU5BQkxFKERGR19KSVQpCisj
aWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgT3duUHRyPENvbXBh
Y3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAgICAgIAorI2VuZGlmCisjaWYgRU5BQkxF
KERGR19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbiB7CiAgICAg
ICAgICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigpIHsgfQogICAgICAgICAgICAgCkBAIC0x
MTU5LDEyICsxMjAzLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93blB0cjxDb2Rl
QmxvY2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAgIAorICAgICAgICBpbnQzMl90IG1fbGxpbnRF
eGVjdXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAgICAgIGludDMyX3QgbV9qaXRFeGVjdXRlQ291
bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyOwogICAg
ICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFpbENvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3Qg
bV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9yZW9wdGltaXph
dGlvblJldHJ5Q291bnRlcjsKLQorICAgICAgICAKICAgICAgICAgc3RydWN0IFJhcmVEYXRhIHsK
ICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHB1YmxpYzoKQEAg
LTEyNDAsNiArMTI4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAg
ICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNo
YWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFs
IENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBp
bGVXaXRoREZHSW50ZXJuYWwoKTsKICNlbmRpZgpAQCAtMTI3NCw2ICsxMzIxLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21w
aWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwo
SlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgp
OwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkdJbnRlcm5hbCgpOwogI2Vu
ZGlmCkBAIC0xMzExLDYgKzEzNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwg
U2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAgICAg
dmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBj
YW5Db21waWxlV2l0aERGR0ludGVybmFsKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEwNjU5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMjAgKzI3LDQ5IEBACiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1
cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnBy
ZXRlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVz
Ojpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0
ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2Zp
bGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyAgICBVTlVTRURf
UEFSQU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJ
bmRleDsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3Bf
bWV0aG9kX2NoZWNrKQorICAgICAgICBpbnN0cnVjdGlvbisrOworCisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0
cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3Ry
dWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisgICAgCisgICAgc2l6ZV90IG9mZnNldCA9
IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAg
ICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhO
b0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAg
ICByZXR1cm4gR2V0QnlJZFN0YXR1cyhTaW1wbGVEaXJlY3QsIFN0cnVjdHVyZVNldChzdHJ1Y3R1
cmUpLCBvZmZzZXQsIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9J
bmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisjZW5kaWYKK30K
KwogR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRl
Y29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYm
IEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9m
U3RydWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHBy
b2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICAvLyBGaXJzdCBj
aGVjayBpZiBpdCBtYWtlcyBlaXRoZXIgY2FsbHMsIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBi
ZSBzdXBlciBjYXJlZnVsLCBvcgogICAgIC8vIGlmIGl0J3Mgbm90IHNldCBhdCBhbGwsIGluIHdo
aWNoIGNhc2Ugd2UgcHVudC4KICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9m
aWxlZEJsb2NrLT5nZXRTdHViSW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZv
LnNlZW4pCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVj
dHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHBy
b2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAKICAgICBQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3QqIGxpc3Q7CiAgICAgaW50IGxpc3RTaXplOwpAQCAtNjAsMTgg
Kzg5LDE5IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICB9
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgIGlmICgh
bGlzdC0+bGlzdFtpXS5pc0RpcmVjdCkKLSAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVz
KE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgICAgICByZXR1
cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIHRy
dWUpOwogICAgIH0KICAgICAKICAgICAvLyBOZXh0IGNoZWNrIGlmIGl0IHRha2VzIHNsb3cgY2Fz
ZSwgaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIGtpbmQgb2YgY2FyZWZ1bC4KICAgICBpZiAo
cHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCi0gICAg
ICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBu
b3RGb3VuZCk7CisgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0
cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7CiAgICAgCiAgICAgLy8gRmluYWxseSBmaWd1
cmUgb3V0IGlmIHdlIGNhbiBkZXJpdmUgYW4gYWNjZXNzIHN0cmF0ZWd5LgogICAgIEdldEJ5SWRT
dGF0dXMgcmVzdWx0OworICAgIHJlc3VsdC5tX3dhc1NlZW5JbkpJVCA9IHRydWU7CiAgICAgc3dp
dGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAg
ICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBu
b3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ss
IGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5
X2lkX3NlbGY6IHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5mby51Lmdl
dEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CkBAIC0xMzAsNyArMTYwLDcgQEAg
R2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIAogICAgIHJldHVy
biByZXN1bHQ7CiAjZWxzZSAvLyBFTkFCTEUoSklUKQotICAgIHJldHVybiBHZXRCeUlkU3RhdHVz
KE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgcmV0dXJuIEdl
dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxz
ZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMDY1OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OSwxMCArNDksMTEgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAg
R2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVT
ZXQsIHNpemVfdCBvZmZzZXQpCisgICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3Qg
U3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQsIGJvb2wgd2FzU2Vlbklu
SklUKQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVTZXQo
c3RydWN0dXJlU2V0KQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBtX3dh
c1NlZW5JbkpJVCh3YXNTZWVuSW5KSVQpCiAgICAgewogICAgICAgICBBU1NFUlQoKHN0YXRlID09
IFNpbXBsZURpcmVjdCkgPT0gKG9mZnNldCAhPSBub3RGb3VuZCkpOwogICAgIH0KQEAgLTcwLDEw
ICs3MSwxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQo
KSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsgfQogICAgIHNpemVfdCBvZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAorICAgIGJvb2wgd2FzU2VlbkluSklUKCkg
Y29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KKyAgICAKIHByaXZhdGU6CisgICAgc3Rh
dGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAg
ICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CiAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAg
IGJvb2wgbV93YXNTZWVuSW5KSVQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAx
MDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFz
cyBKU0NlbGw7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWlu
OworICAgIHN0cnVjdCBMTEludENhbGxMaW5rSW5mbzsKICAgICBzdHJ1Y3QgVmFsdWVQcm9maWxl
OwogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE0Niw2ICsxNDcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAjZW5kaWYKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlvbiB7CisgICAgICAgIEluc3RydWN0aW9u
KCkKKyAgICAgICAgeworICAgICAgICAgICAgdS5qc0NlbGwuY2xlYXIoKTsKKyAgICAgICAgfQor
ICAgICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewog
I2lmICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKQEAgLTE4Miw2ICsxODgsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYyBnZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7IH0KICAg
ICAgICAgCisgICAgICAgIEluc3RydWN0aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8pIHsgdS5jYWxsTGlua0luZm8gPSBjYWxsTGlua0luZm87IH0KKyAgICAgICAgCiAgICAgICAg
IEluc3RydWN0aW9uKFZhbHVlUHJvZmlsZSogcHJvZmlsZSkgeyB1LnByb2ZpbGUgPSBwcm9maWxl
OyB9CiAKICAgICAgICAgdW5pb24gewpAQCAtMTkxLDcgKzE5OSw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3RydWN0dXJl
Q2hhaW47CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxsOwogICAg
ICAgICAgICAgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKKyAgICAgICAg
ICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm87CiAgICAgICAgICAgICBWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGU7CisgICAgICAgICAgICB2b2lkKiBwb2ludGVyOwogICAgICAgICB9IHU7
CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgTExJbnRDYWxsTGlua0luZm9faAorI2RlZmluZSBMTEludENhbGxM
aW5rSW5mb19oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOworCitzdHJ1Y3QgTExJbnRDYWxs
TGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+
IHsKKyAgICBMTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgIH0KKyAgICAKKyAgICB+TExJ
bnRDYWxsTGlua0luZm8oKQorICAgIHsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAg
ICAgICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJu
IGNhbGxlZTsgfQorICAgIAorICAgIHZvaWQgdW5saW5rKCkKKyAgICB7CisgICAgICAgIGNhbGxl
ZS5jbGVhcigpOworICAgICAgICBtYWNoaW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cigpOworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOwor
ICAgIH0KKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOworICAgIFdy
aXRlQmFycmllcjxKU0Z1bmN0aW9uPiBsYXN0U2VlbkNhbGxlZTsKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgbWFjaGluZUNvZGVUYXJnZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIExMSW50Q2FsbExpbmtJbmZvX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZp
c2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2Fs
bExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwxMSBAQCBNZXRob2RD
YWxsTGlua1N0YXR1cyBNZXRob2RDYWxsTGlua1N0YXR1CiAgICAgVU5VU0VEX1BBUkFNKHByb2Zp
bGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUo
SklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgLy8gTk9URTogVGhpcyBkb2VzIG5v
dCBoYXZlIGFuIExMSW50IGZhbGwtYmFjayBiZWNhdXNlIExMSW50IGRvZXMgbm90IGRvIGFueSBt
ZXRob2QKKyAgICAvLyBjYWxsIGxpbmsgY2FjaGluZy4KKyAgICBpZiAoIXByb2ZpbGVkQmxvY2st
Pm51bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZvcygpKQorICAgICAgICByZXR1cm4gTWV0aG9kQ2Fs
bExpbmtTdGF0dXMoKTsKKyAgICAKICAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGwg
PSBwcm9maWxlZEJsb2NrLT5nZXRNZXRob2RDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCk7CiAg
ICAgCiAgICAgaWYgKCFtZXRob2RDYWxsLnNlZW4gfHwgIW1ldGhvZENhbGwuY2FjaGVkU3RydWN0
dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNp
b24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IG1hY3JvKG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1
dF9ieV9pZCwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkg
XAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAg
ICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCiAgICAgICAg
IG1hY3JvKG9wX3B1dF9ieV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9i
eV9pZF9nZW5lcmljLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApAQCAt
MjAxLDYgKzIwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIGVudW0geyBG
T1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0lEX0VOVU0pIH0gT3Bjb2RlSUQ7CiAgICAgI3VuZGVm
IE9QQ09ERV9JRF9FTlVNCiAKKyAgICBjb25zdCBpbnQgbWF4T3Bjb2RlTGVuZ3RoID0gOTsKICAg
ICBjb25zdCBpbnQgbnVtT3Bjb2RlSURzID0gb3BfZW5kICsgMTsKIAogICAgICNkZWZpbmUgT1BD
T0RFX0lEX0xFTkdUSFMoaWQsIGxlbmd0aCkgY29uc3QgaW50IGlkIyNfbGVuZ3RoID0gbGVuZ3Ro
OwpAQCAtMjE3LDcgKzIyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGT1JfRUFDSF9P
UENPREVfSUQoVkVSSUZZX09QQ09ERV9JRCk7CiAgICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQK
IAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAjaWYgQ09NUElMRVIoUlZD
VCkgfHwgQ09NUElMRVIoSU5URUwpCiAgICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVz
LmNwcAkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyNyArMjcsNjkgQEAKICNp
bmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNs
dWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK1B1dEJ5SWRTdGF0
dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxv
Y2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQoreworICAgIFVO
VVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRl
eCk7CisgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVn
aW4oKSArIGJ5dGVjb2RlSW5kZXg7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3Ry
dWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOworICAgIGlmICghc3RydWN0dXJlKQorICAgICAg
ICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7
CisgICAgCisgICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9i
eV9pZCkgeworICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVk
QmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgICAgICBpZiAob2Zmc2V0ID09IG5vdEZv
dW5kKQorICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwg
MCwgMCwgbm90Rm91bmQpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMo
U2ltcGxlUmVwbGFjZSwgc3RydWN0dXJlLCAwLCAwLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAg
ICBBU1NFUlQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0CisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09
IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgCisgICAgU3RydWN0
dXJlKiBuZXdTdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAg
ICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBpbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWlu
LmdldCgpOworICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUpOworICAgIEFTU0VSVChjaGFpbik7Cisg
ICAgCisgICAgc2l6ZV90IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2Nr
LT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAg
ICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3Vu
ZCk7CisgICAgCisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3Ry
dWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNoYWluLCBvZmZzZXQpOworI2Vsc2UKKyAgICByZXR1cm4g
UHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisjZW5kaWYK
K30KKwogUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayog
cHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShi
eXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQp
ICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJl
ck9mU3RydWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50
KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICBpZiAocHJv
ZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCiAgICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsK
ICAgICAKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5n
ZXRTdHViSW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAg
ICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5k
KTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNv
ZGVJbmRleCwgaWRlbnQpOwogICAgIAogICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkg
ewogICAgIGNhc2UgYWNjZXNzX3Vuc2V0OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhO
b0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRl
RnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAg
CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6IHsKICAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0
KApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5oCShyZXZpc2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoK
ICAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKIHBy
aXZhdGU6CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxv
Y2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3Rh
dGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOwogICAgIFN0cnVjdHVy
ZSogbV9uZXdTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTA2NTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJCYXRjaGVk
VHJhbnNpdGlvbk9wdGltaXplci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUg
IlVTdHJpbmcuaCIKQEAgLTEyOTMsOSArMTI5NCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBtX2NvZGVCbG9jay0+
YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lm
IEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29s
dmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgICAgIGJv
b2wgZHluYW1pYyA9IHJlc29sdmVSZXN1bHQuaXNEeW5hbWljKCkgJiYgcmVzb2x2ZVJlc3VsdC5k
ZXB0aCgpOwogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNv
ZGUoZHluYW1pYyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2Jh
bCk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwpAQCAtMTM5
OSw5ICsxMzk4LDYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAog
ICAgICAgICByZXR1cm4gYmFzZURzdDsKICAgICB9CiAKLQotCi0KICAgICBWYWx1ZVByb2ZpbGUq
IHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfcmVzb2x2ZV93aXRoX2Jhc2UpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlRHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CkBAIC0xNTA5LDkgKzE1MDUsNyBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TWV0aG9kQ2hlY2soCiAKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRF
UikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVj
dGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBl
bWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoZHN0LT5pbmRleCgpKTsKQEAgLTE1MzcsOSArMTUzMSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0QXIKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9j
b2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE1NTUsOSArMTU0Nyw3IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnkKIAogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUo
SU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIAogICAgIGVtaXRPcGNvZGUo
b3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7
CkBAIC0xODM4LDcgKzE4MjgsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDYWxsKAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVu
YwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChj
YWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVO
QUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExM
SW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7
CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBp
Z25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFBy
b2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0xOTQyLDcgKzE5MzYsMTEgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdAogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdD
b3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zm
c2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vs
c2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0
X3Jlc3VsdCk7CkBAIC0yMjAzLDcgKzIyMDEsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRDYXRjaAogewogICAgIG1fdXNlc0V4Y2VwdGlvbnMgPSB0cnVlOwogI2lmIEVO
QUJMRShKSVQpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0
YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwg
bV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVs
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX2NhdGNoKSkpIH07CisjZWxzZQogICAgIEhhbmRsZXJJ
bmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0
aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENv
ZGVMb2NhdGlvbkxhYmVsKCkgfTsKKyNlbmRpZgogI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZv
ID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5z
aXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoIH07CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCShyZXZpc2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA2LDkgKzYwNiw3IEBAIHByaXZh
dGU6CiAgICAgewogICAgICAgICBVTlVTRURfUEFSQU0obm9kZUluZGV4KTsKICAgICAgICAgCi0g
ICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7Ci0g
ICAgICAgIEFTU0VSVChwcm9maWxlKTsKLSAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9u
ID0gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgICAgIFByZWRpY3Rl
ZFR5cGUgcHJlZGljdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFs
dWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogI2lm
IERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCJEeW5hbWljIFtAJXUs
IGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4LCBieXRlY29kZUluZGV4LCBwcmVk
aWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikpOwogI2VuZGlmCkBAIC0xMDQzLDYgKzEwNDEsOSBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhib29sCiAgICAgCiAgICAgLy8g
SWYgd2UgZ2V0IGhlcmUgdGhlbiBpdCBsb29rcyBsaWtlIHdlIHNob3VsZCBkZWZpbml0ZWx5IGlu
bGluZSB0aGlzIGNvZGUuIFByb2NlZWQKICAgICAvLyB3aXRoIHBhcnNpbmcgdGhlIGNvZGUgdG8g
Z2V0IGJ5dGVjb2RlLCBzbyB0aGF0IHdlIGNhbiB0aGVuIHBhcnNlIHRoZSBieXRlY29kZS4KKyAg
ICAvLyBOb3RlIHRoYXQgaWYgTExJbnQgaXMgZW5hYmxlZCwgdGhlIGJ5dGVjb2RlIHdpbGwgYWx3
YXlzIGJlIGF2YWlsYWJsZS4gQWxzbyBub3RlCisgICAgLy8gdGhhdCBpZiBMTEludCBpcyBlbmFi
bGVkLCB3ZSBtYXkgaW5saW5lIGEgY29kZSBibG9jayB0aGF0IGhhcyBuZXZlciBiZWVuIEpJVHRl
ZAorICAgIC8vIGJlZm9yZSEKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fY29kZUJsb2Nr
Q2FjaGUuZ2V0KENvZGVCbG9ja0tleShleGVjdXRhYmxlLCBraW5kKSwgZXhwZWN0ZWRGdW5jdGlv
bi0+c2NvcGUoKSk7CiAgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTE3NDMsNyArMTc0NCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ss
IG1fY3VycmVudEluZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG1ldGhvZENh
bGxTdGF0dXMuaXNTZXQoKQotICAgICAgICAgICAgICAgICYmICFnZXRCeUlkU3RhdHVzLmlzU2V0
KCkKKyAgICAgICAgICAgICAgICAmJiAhZ2V0QnlJZFN0YXR1cy53YXNTZWVuSW5KSVQoKQogICAg
ICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpIHsKICAgICAgICAgICAgICAgICAvLyBJdCdz
IG1vbm9tb3JwaGljIGFzIGZhciBhcyB3ZSBjYW4gdGVsbCwgc2luY2UgdGhlIG1ldGhvZF9jaGVj
ayB3YXMgbGlua2VkCiAgICAgICAgICAgICAgICAgLy8gYnV0IHRoZSBzbG93IHBhdGggKGkuZS4g
dGhlIG5vcm1hbCBnZXRfYnlfaWQpIG5ldmVyIGZpcmVkLgpAQCAtMTgxMiw3ICsxODEzLDkgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkOiB7CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNl
ID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJl
bWFwW2N1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMDY1OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTEsNiArMTExLDggQEAgaW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJ
RCBvcAogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6
CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAg
Y2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAg
IGNhc2Ugb3Bfam1wOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2
ICs0OCwyMSBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICB1aW50
MzJfdCBleGl0SW5kZXggPSBnbG9iYWxEYXRhLT5vc3JFeGl0SW5kZXg7CiAgICAgT1NSRXhpdCYg
ZXhpdCA9IGNvZGVCbG9jay0+b3NyRXhpdChleGl0SW5kZXgpOwogICAgIAorICAgIC8vIE1ha2Ug
c3VyZSBhbGwgY29kZSBvbiBvdXIgaW5saW5lIHN0YWNrIGlzIEpJVCBjb21waWxlZC4gVGhpcyBp
cyBuZWNlc3Nhcnkgc2luY2UKKyAgICAvLyB3ZSBtYXkgb3B0IHRvIGlubGluZSBhIGNvZGUgYmxv
Y2sgZXZlbiBiZWZvcmUgaXQgaGFkIGV2ZXIgYmVlbiBjb21waWxlZCBieSB0aGUKKyAgICAvLyBK
SVQsIGJ1dCBvdXIgT1NSIGV4aXQgaW5mcmFzdHJ1Y3R1cmUgY3VycmVudGx5IG9ubHkgd29ya3Mg
aWYgdGhlIHRhcmdldCBvZiB0aGUKKyAgICAvLyBPU1IgZXhpdCBpcyBKSVQgY29kZS4gVGhpcyBj
b3VsZCBiZSBjaGFuZ2VkIHNpbmNlIHRoZXJlIGlzIG5vdGhpbmcgcGFydGljdWxhcmx5CisgICAg
Ly8gaGFyZCBhYm91dCBkb2luZyBhbiBPU1IgZXhpdCBpbnRvIHRoZSBpbnRlcnByZXRlciwgYnV0
IGZvciBub3cgdGhpcyBzZWVtcyB0byBtYWtlCisgICAgLy8gc2Vuc2UgaW4gdGhhdCBpZiB3ZSdy
ZSBPU1IgZXhpdGluZyBmcm9tIGlubGluZWQgY29kZSBvZiBhIERGRyBjb2RlIGJsb2NrLCB0aGVu
CisgICAgLy8gcHJvYmFibHkgaXQncyBhIGdvb2Qgc2lnbiB0aGF0IHRoZSB0aGluZyB3ZSdyZSBl
eGl0aW5nIGludG8gaXMgaG90LiBFdmVuIG1vcmUKKyAgICAvLyBpbnRlcmVzdGluZ2x5LCBzaW5j
ZSB0aGUgY29kZSB3YXMgaW5saW5lZCwgaXQgbWF5IG5ldmVyIG90aGVyd2lzZSBnZXQgSklUCisg
ICAgLy8gY29tcGlsZWQgc2luY2UgdGhlIGFjdCBvZiBpbmxpbmluZyBpdCBtYXkgZW5zdXJlIHRo
YXQgaXQgb3RoZXJ3aXNlIG5ldmVyIHJ1bnMuCisgICAgZm9yIChDb2RlT3JpZ2luIGNvZGVPcmln
aW4gPSBleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGNvZGVP
cmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVyKSB7CisgICAgICAgIHN0
YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
LT5leGVjdXRhYmxlLmdldCgpKQorICAgICAgICAgICAgLT5iYXNlbGluZUNvZGVCbG9ja0Zvcihj
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+aXNDYWxsID8gQ29kZUZvckNhbGwgOiBDb2RlRm9y
Q29uc3RydWN0KQorICAgICAgICAgICAgLT5qaXRDb21waWxlKCpnbG9iYWxEYXRhKTsKKyAgICB9
CisgICAgCiAgICAgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkgPSAwOwogICAgIGlmIChl
eGl0Lm1fcmVjb3ZlcnlJbmRleCkKICAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5zcGVj
dWxhdGlvblJlY292ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4IC0gMSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEwNjU5MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiREZHUmVwYXRjaC5oIgorI2luY2x1ZGUgIkhvc3RD
YWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJ
bmxpbmVBU00uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNjczLDUwICs2NzQsNiBA
QCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyCiAgICAgcmV0dXJuIEpT
VmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJB
VElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFU
SU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOwotCi0j
aWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAi
XG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAg
Im1vdiAtNDAoJXIxMyksICVyMTNcbiIKLSAgICAibW92ICVyMTMsICVyZGlcbiIKLSAgICAiam1w
ICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhl
Y1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKFg4NikKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9M
X1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0
Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGks
IDQoJWVzcClcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVN
QjIpCi1hc20gKAotIi50ZXh0IiAiXG4iCi0iLmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1C
T0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLSIudGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRI
VU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklO
RyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00
MF0iICJcbiIKLSAgICAiY3B5IHIwLCByNSIgIlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19S
RUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwot
I2VuZGlmCi0KLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKLSAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKLX0KLQogc3Rh
dGljIHZvaWQqIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBj
YWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzcsNyArODM3LDcgQEAgdm9pZCBIZWFw
Ojpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZwogICAgICAgICBzZXRIaWdoV2F0ZXJNYXJr
KG1heChwcm9wb3J0aW9uYWxCeXRlcywgbV9taW5CeXRlc1BlckN5Y2xlKSk7CiAgICAgfQogICAg
IEpBVkFTQ1JJUFRDT1JFX0dDX0VORCgpOwotCisgICAgCiAgICAgKCptX2FjdGl2aXR5Q2FsbGJh
Y2spKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDEw
NjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5
KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERh
dGE7CiAgICAgY2xhc3MgSlNWYWx1ZTsKICAgICBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7Cisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE1hcmtlZEFyZ3VtZW50
QnVmZmVyOwogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZTsKICAgICBjbGFzcyBVU3RyaW5nOwpAQCAt
MTM1LDExICsxMzYsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZ2V0Q29uc2Vy
dmF0aXZlUmVnaXN0ZXJSb290cyhIYXNoU2V0PEpTQ2VsbCo+JiByb290cyk7CiAKICAgICBwcml2
YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOworICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkU3Bh
Y2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNs
YXNzIEJ1bXBTcGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwotICAgICAg
ICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwogCiAgICAgICAgIHNpemVfdCB3YXRlck1hcmsoKTsK
ICAgICAgICAgc2l6ZV90IGhpZ2hXYXRlck1hcmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya1N0YWNrLmNwcAkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMw
NCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbigKICNlbmRpZgog
CiAgICAgQVNTRVJUKEhlYXA6OmlzTWFya2VkKGNlbGwpKTsKLQorICAgIAogICAgIGlmIChpc0pT
U3RyaW5nKGNlbGwpKSB7CiAgICAgICAgIEpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKGNvbnN0X2Nh
c3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDEwNjU5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBIZWFwOwogY2xhc3MgSlND
ZWxsOwogY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogY2xhc3MgV2Vha0dDSGFuZGxlOwogY2xhc3MgU2xvdFZpc2l0b3I7CiAKQEAgLTg3LDYg
Kzg4LDggQEAgcHVibGljOgogICAgIHZvaWQgZnJlZUJsb2NrcyhNYXJrZWRCbG9jayogaGVhZCk7
CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAg
ICAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKFNpemVDbGFz
cyYpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlSGVscGVyKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3Mm
KTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZp
c2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsOSBAQCBuYW1lc3BhY2UgSlNDICB7
CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBJbnN0cnVjdGlvbiogcmV0dXJuVlBD
KCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKTsgfQog
I2VuZGlmCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBJbnN0cnVjdGlvbiogY3VycmVudFZQ
QygpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KHRoaXNbUmVnaXN0
ZXJGaWxlOjpBcmd1bWVudENvdW50XS50YWcoKSk7IH0KKyNlbmRpZgogCiAgICAgICAgIHZvaWQg
c2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSkgeyBzdGF0aWNfY2FzdDxSZWdp
c3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWVdID0gY2FsbGVyRnJhbWU7IH0K
ICAgICAgICAgdm9pZCBzZXRTY29wZUNoYWluKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKSB7
IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluXSA9
IHNjb3BlQ2hhaW47IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjksNyArNjksNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2VuZGlmCiAKLSNkZWZpbmUgV1RGX1VT
RV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EIChFTkFCTEUoQ09NUFVURURfR09UT19JTlRF
UlBSRVRFUikgJiYgIWRlZmluZWQoX19sbHZtX18pKQorI2RlZmluZSBXVEZfVVNFX0dDQ19DT01Q
VVRFRF9HT1RPX1dPUktBUk9VTkQgKChFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikg
fHwgRU5BQkxFKExMSU5UKSkgJiYgIWRlZmluZWQoX19sbHZtX18pKQogCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCkBAIC01NDcsMTcgKzU0Nyw0MyBAQCBJbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIo
KQogewogfQogCi12b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKQor
SW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcigpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
SU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2VuYWJsZWQpCisgICAg
ICAgIGRlbGV0ZVtdIG1fb3Bjb2RlVGFibGU7CisjZW5kaWYKK30KKwordm9pZCBJbnRlcnByZXRl
cjo6aW5pdGlhbGl6ZShMTEludDo6RGF0YSogbGxpbnREYXRhLCBib29sIGNhblVzZUpJVCkKK3sK
KyAgICBVTlVTRURfUEFSQU0obGxpbnREYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oY2FuVXNlSklU
KTsKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5U
KQorI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyAgICAvLyBIYXZpbmcg
TExJbnQgZW5hYmxlZCwgYnV0IG5vdCBiZWluZyBhYmxlIHRvIHVzZSB0aGUgSklULCBhbmQgbm90
IGhhdmluZworICAgIC8vIGEgY29tcHV0ZWQgZ290byBpbnRlcnByZXRlciwgaXMgbm90IHN1cHBv
cnRlZC4gTm90IGJlY2F1c2Ugd2UgY2Fubm90CisgICAgLy8gc3VwcG9ydCBpdCwgYnV0IGJlY2F1
c2UgSSBkZWNpZGVkIHRvIGRyYXcgdGhlIGxpbmUgYXQgdGhlIG51bWJlciBvZgorICAgIC8vIHBl
cm11dGF0aW9ucyBvZiBleGVjdXRpb24gZW5naW5lcyB0aGF0IEkgd2FudGVkIHRoaXMgY29kZSB0
byBncm9rLgorICAgIEFTU0VSVChjYW5Vc2VKSVQpOworI2VuZGlmCiAgICAgaWYgKGNhblVzZUpJ
VCkgeworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJsZSA9IGxsaW50RGF0
YS0+b3Bjb2RlTWFwKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURz
OyArK2kpCisgICAgICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1fb3Bjb2RlVGFibGVbaV0s
IHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7CisjZWxzZQogICAgICAgICAvLyBJZiB0aGUgSklU
IGlzIHByZXNlbnQsIGRvbid0IHVzZSBqdW1wIGRlc3RpbmF0aW9ucyBmb3Igb3Bjb2Rlcy4KICAg
ICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpIHsK
ICAgICAgICAgICAgIE9wY29kZSBvcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19j
YXN0PHVpbnRwdHJfdD4oaSkpOwogICAgICAgICAgICAgbV9vcGNvZGVUYWJsZVtpXSA9IG9wY29k
ZTsKICAgICAgICAgfQorI2VuZGlmCiAgICAgfSBlbHNlIHsKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgICAgIG1fb3Bjb2RlVGFibGUgPSBuZXcgT3Bjb2RlW251bU9wY29kZUlEc107CisjZW5kaWYK
ICAgICAgICAgcHJpdmF0ZUV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVybiwgMCwgMCk7CiAgICAg
ICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQpAQCAt
NTY2LDcgKzU5Miw2IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBjYW5Vc2UK
ICAgICAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICAgICB9CiAjZWxzZQotICAgIFVOVVNFRF9QQVJB
TShjYW5Vc2VKSVQpOwogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2VuYWJsZWQgPSB0
cnVlOwogI2Vsc2UKQEAgLTY2Nyw5ICs2OTIsMTEgQEAgdm9pZCBJbnRlcnByZXRlcjo6ZHVtcFJl
Z2lzdGVycyhDYWxsRnJhbQogCiBib29sIEludGVycHJldGVyOjppc09wY29kZShPcGNvZGUgb3Bj
b2RlKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJM
RShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJM
RShMTElOVCkKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG9wY29kZSA+PSAw
ICYmIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUp
KSA8PSBvcF9lbmQ7CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2RlICE9IEhhc2hUcmFpdHM8T3Bj
b2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJhaXRzPE9wY29kZT46OmlzRGVs
ZXRlZFZhbHVlKG9wY29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJRFRhYmxlLmNvbnRhaW5zKG9w
Y29kZSk7CkBAIC03MjYsMTEgKzc1MywxMSBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRl
cjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAxLgogI2lmIEVOQUJMRShKSVQp
ICYmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBpZiAoY2FsbGVyRnJhbWUtPmdsb2JhbERhdGEo
KS5jYW5Vc2VKSVQoKSkKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1
cm5QQygpKTsKICAgICBlbHNlCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5i
eXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZWxpZiBFTkFCTEUo
SklUKQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxs
RnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRl
Y29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbHNlCiAg
ICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+
cmV0dXJuVlBDKCkpIC0gMTsKICNlbmRpZgpAQCAtMzMyNSw2ICszMzUyLDggQEAgc2tpcF9pZF9j
dXN0b21fc2VsZjoKICNpZiBVU0UoR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCkKICAgICAg
IHNraXBfcHV0X2J5X2lkOgogI2VuZGlmCisgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QpCisgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWwpCiAgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbikg
ewogICAgICAgICAvKiBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiBiYXNlKHIpIHByb3BlcnR5KGlk
KSB2YWx1ZShyKSBvbGRTdHJ1Y3R1cmUoc0lEKSBuZXdTdHJ1Y3R1cmUoc0lEKSBzdHJ1Y3R1cmVD
aGFpbihjaGFpbikgb2Zmc2V0KG4pIGRpcmVjdChiKQogICAgICAgICAgCkBAIC01MTU3LDEwICs1
MTg2LDEwIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcihDYWwKICAgICAg
ICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxG
cmFtZS0+cmV0dXJuVlBDKCkpOwogI2lmIEVOQUJMRShKSVQpCiAgICAgZWxzZQotICAgICAgICBi
eXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1l
LT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2Vu
ZGlmCiAjZWxzZQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29k
ZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2Fs
bGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1
cm5QQygpKTsKICNlbmRpZgogICAgIGxpbmVOdW1iZXIgPSBjYWxsZXJDb2RlQmxvY2stPmxpbmVO
dW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCAtIDEpOwogICAgIHNvdXJjZUlE
ID0gY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShy
ZXZpc2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpT
Q2VsbC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2lu
Y2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlJlZ2lz
dGVyRmlsZS5oIgogCkBAIC00NSw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpT
R2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFz
cyBQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTY29w
ZUNoYWluTm9kZTsKQEAgLTEwMCwxOSArMTAyLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAg
ICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgogICAgICAgICBJbnRlcnByZXRlcigpOworICAg
ICAgICB+SW50ZXJwcmV0ZXIoKTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgaW5pdGlhbGl6ZShi
b29sIGNhblVzZUpJVCk7CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZShMTEludDo6RGF0YSosIGJv
b2wgY2FuVXNlSklUKTsKIAogICAgICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSgpIHsg
cmV0dXJuIG1fcmVnaXN0ZXJGaWxlOyB9CiAgICAgICAgIAogICAgICAgICBPcGNvZGUgZ2V0T3Bj
b2RlKE9wY29kZUlEIGlkKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0aWFs
aXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxF
KENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgICAg
IHJldHVybiBtX29wY29kZVRhYmxlW2lkXTsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4gaWQ7
CkBAIC0xMjIsNyArMTI2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPcGNvZGVJRCBn
ZXRPcGNvZGVJRChPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
bV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisj
aWYgRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOwor
ICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKKyNlbGlmIEVO
QUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgQVNTRVJUKGlzT3Bj
b2RlKG9wY29kZSkpOwogICAgICAgICAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihv
cGNvZGUpKTsKQEAgLTEzMiw2ICsxMzksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJv
b2wgZW5hYmxlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2VuYWJsZWQ7Cisg
ICAgICAgIH0KIAogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKQEAgLTE5OSw3ICsy
MTEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlIG1fcmVnaXN0
ZXJGaWxlOwogICAgICAgICAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIE9wY29kZSogbV9vcGNvZGVUYWJsZTsgLy8gTWFw
cyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZworICAgICAgICBIYXNoTWFwPE9wY29k
ZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQg
Zm9yIGRlY29tcGlsaW5nCisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikK
ICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2RlSURzXTsgLy8gTWFwcyBPcGNv
ZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bj
b2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRl
Y29tcGlsaW5nCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9SZWdpc3RlckZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnNlcnZhdGl2ZVJv
b3RzOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogCiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlIHsKICAgICAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUmVnaXN0ZXJGaWxlKTsKQEAgLTgxLDYgKzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGdyb3dTbG93Q2FzZShSZWdp
c3RlciopOwogICAgICAgICB2b2lkIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwogICAgICAgICB2
b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSG9zdENhbGxS
ZXR1cm5WYWx1ZS5oIgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSW5saW5l
QVNNLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1ZhbHVlSW5saW5lTWV0
aG9kcy5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyNp
ZiBDT01QSUxFUihHQ0MpCisKKyNpZiBDUFUoWDg2XzY0KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1C
T0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lNQk9MKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgorICAgICJtb3YgJXIx
MywgJXJkaVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUoWDg2KQorYXNt
ICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIK
K0hJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkco
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglZWRpKSwgJWVk
aVxuIgorICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5H
X1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7
CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKK2FzbSAoCisiLnRleHQiICJcbiIKKyIuYWxpZ24gMiIg
IlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxu
IgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorIi50aHVtYiIgIlxu
IgorIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisg
ICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgorICAgICJjcHkgcjAsIHI1IiAiXG4iCisgICAg
ImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhF
eGVjU3RhdGUpICJcbiIKKyk7CisjZW5kaWYKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBI
T1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4
ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFleGVjKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Cit9CisKKyNlbmRpZiAv
LyBDT01QSUxFUihHQ0MpCisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisjZGVmaW5lIEhv
c3RDYWxsUmV0dXJuVmFsdWVfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIk1h
Y3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisvLyBV
bmZvcnR1bmF0ZWx5IHRoaXMgb25seSB3b3JrcyBvbiBHQ0MtbGlrZSBjb21waWxlcnMuIEFuZCBp
dCdzIGN1cnJlbnRseSBvbmx5IHVzZWQKKy8vIGJ5IExMSW50IGFuZCBERkcsIHdoaWNoIGFsc28g
YXJlIHJlc3RyaWN0ZWQgdG8gR0NDLWxpa2UgY29tcGlsZXJzLiBXZSBzaG91bGQKKy8vIHByb2Jh
Ymx5IGZpeCB0aGF0IGF0IHNvbWUgcG9pbnQuCisjaWYgQ09NUElMRVIoR0NDKQorCisjaWYgQ0FM
TElOR19DT05WRU5USU9OX0lTX1NURENBTEwKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxV
RV9PUFRJT04gQ0RFQ0wKKyNlbHNlCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BU
SU9OCisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFs
dWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgp
OworCisvLyBUaGlzIGlzIGEgcHVibGljIGRlY2xhcmF0aW9uIG9ubHkgdG8gY29udmluY2UgQ0xB
Tkcgbm90IHRvIGVsaWRlIGl0LgorZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExf
UkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShF
eGVjU3RhdGUqKTsKKworaW5saW5lIHZvaWQgaW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJuVmFsdWUo
KQoreworICAgIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKDApOworfQorCit9
CisKKyNlbHNlIC8vIENPTVBJTEVSKEdDQykKKworbmFtZXNwYWNlIEpTQyB7CitpbmxpbmUgdm9p
ZCBpbml0aWFsaXplSG9zdENhbGxSZXR1cm5WYWx1ZSgpIHsgfQorfQorCisjZW5kaWYgLy8gQ09N
UElMRVIoR0NDKQorCisjZW5kaWYgLy8gSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw4IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9w
X3Byb2ZpbGVfd2lsbF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9uZXdfc2NvcGUp
CiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX3Njb3BlKQorICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERF
RklORV9PUChvcF9wdXRfYnlfaW5kZXgpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFs
KQpAQCAtNDg2LDYgKzQ4OCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9w
cmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcmVzb2x2ZV9nbG9i
YWwpCkBAIC01MjUsNiArNTI5LDEwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNl
cygpCiAKIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5jdGlvbkVudHJ5
QXJpdHlDaGVjaykKIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50Zigi
Q29tcGlsaW5nIEpJVCBjb2RlIVxuIik7CisjZW5kaWYKKyAgICAKICNpZiBFTkFCTEUoVkFMVUVf
UFJPRklMRVIpCiAgICAgbV9jYW5CZU9wdGltaXplZCA9IG1fY29kZUJsb2NrLT5jYW5Db21waWxl
V2l0aERGRygpOwogI2VuZGlmCkBAIC02ODksOCArNjk3LDEyIEBAIEpJVENvZGUgSklUOjpwcml2
YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24g
PSBtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8obV9tZXRob2RDYWxsQ29tcGlsYXRpb25J
bmZvW2ldLnByb3BlcnR5QWNjZXNzSW5kZXgpLmNhbGxSZXR1cm5Mb2NhdGlvbjsKICAgICB9CiAK
LSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAobV9jYW5CZU9wdGltaXplZCkgeworI2lmIEVO
QUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHx8IHRydWUKKyNlbmRpZgorICAgICAgICApIHsK
ICAgICAgICAgQ29tcGFjdEpJVENvZGVNYXA6OkVuY29kZXIgaml0Q29kZU1hcEVuY29kZXI7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8
IG1fbGFiZWxzLnNpemUoKTsgKytieXRlY29kZU9mZnNldCkgewogICAgICAgICAgICAgaWYgKG1f
bGFiZWxzW2J5dGVjb2RlT2Zmc2V0XS5pc1NldCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDb2RlLmgJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBKSVRDb2RlKCkgeyB9CiAjZW5kaWYKICAgICBwdWJsaWM6Ci0gICAgICAg
IGVudW0gSklUVHlwZSB7IEhvc3RDYWxsVGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsKKyAg
ICAgICAgZW51bSBKSVRUeXBlIHsgTm9uZSwgSG9zdENhbGxUaHVuaywgSW50ZXJwcmV0ZXJUaHVu
aywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OwogICAgICAgICAKICAgICAgICAgc3RhdGljIEpJVFR5
cGUgYm90dG9tVGllckpJVCgpCiAgICAgICAgIHsKQEAgLTY2LDggKzY2LDE5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIERGR0pJVDsKICAgICAgICAgfQogICAgICAgICAK
KyAgICAgICAgc3RhdGljIGJvb2wgaXNPcHRpbWl6aW5nSklUKEpJVFR5cGUgaml0VHlwZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gREZHSklUOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBzdGF0aWMgYm9vbCBpc0Jhc2VsaW5lQ29kZShKSVRUeXBlIGpp
dFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IEludGVycHJl
dGVyVGh1bmsgfHwgaml0VHlwZSA9PSBCYXNlbGluZUpJVDsKKyAgICAgICAgfQorICAgICAgICAK
ICNpZiBFTkFCTEUoSklUKQogICAgICAgICBKSVRDb2RlKCkKKyAgICAgICAgICAgIDogbV9qaXRU
eXBlKE5vbmUpCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03NSw2ICs4Niw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgOiBtX3JlZihyZWYpCiAgICAgICAgICAgICAsIG1faml0
VHlwZShqaXRUeXBlKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaml0VHlwZSAhPSBO
b25lKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciAhKCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkocmV2aXNpb24gMTA2
NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsMTUgKzMzLDIxIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIK
ICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJMTElu
dEVudHJ5cG9pbnRzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
b2RlQmxvY2tUeXBlPgogaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklU
Q29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRU
eXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAg
IGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpE
RkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlKGdsb2JhbERhdGEs
IGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CkBAIC01NSwxMCArNjEsNyBAQCBpbmxpbmUgYm9v
bCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShKU0dsCiAgICAgICAgIH0KICAgICAgICAgaml0Q29k
ZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpKTsKICAgICB9Ci0j
aWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRlY29kZUdlbmVyYXRvcjo6
ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVE
aXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgorICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0
ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUo
aml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwogICAgIAogICAgIHJldHVybiB0cnVl
OwpAQCAtNjYsOSArNjksMTQgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUo
SlNHbAogCiBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29kZUJsb2Nr
LCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGppdENvZGVXaXRoQXJp
dHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6SklUVHlw
ZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNl
SklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5r
SW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAg
ICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0g
REZHOjp0cnlDb21waWxlRnVuY3Rpb24oZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRD
b2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwpAQCAtODMsMTEgKzkxLDcgQEAgaW5saW5lIGJv
b2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaQogICAgICAgICB9CiAgICAgICAgIGppdENv
ZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgJmppdENvZGVX
aXRoQXJpdHlDaGVjayk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotICAg
IGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQotICAgICAgICBj
b2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7Ci0jZW5kaWYK
LSAgICAKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5
KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlD
aGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0
LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3coSlNHbG9iYWxEYQogCiBF
eGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhlY1N0
YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIFJldHVybkFkZHJlc3NQdHIg
ZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGNh
bGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2Rl
T2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERh
dGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5
dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1bHRMb2NhdGlvbikpOwogfQogCiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTA2NTkwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0NDYsNiArMTQ0Niw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV9p
ZF8KICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0
cmljdE1vZGUoKSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0u
anNWYWx1ZSgpOwogICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CisgICAgCiAgICAg
YXNPYmplY3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBp
ZGVudCwgc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwgc2xvdCk7CiAgICAgCiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBA
IC0xOTMxLDcgKzE5MzIsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9m
cm9tCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNrRnJhbWUuYXJnc1swXS5pbnQz
MigpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmludGYoIkVudGVyZWQg
b3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRp
b25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNv
ZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJl
dHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAg
ICBwcmludGYoIiVwOiBFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVDb3Vu
dGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRl
bGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50
ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2st
Pm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAgaWYgKGNvZGVCbG9j
ay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewpAQCAtMjE4Niw0NSArMjE4NywxMyBAQCBE
RUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotaW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+
Y2FsbGVlKCkpOwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICBD
b2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0
ZWRCeXRlY29kZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAgICAvLyBUaGlz
IGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJv
IGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+
Z3JvdyhjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5
IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRz
IHdpdGggdW5kZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVnaXN0ZXIqIHNy
YyA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGNhbGxGcmFt
ZS0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGludCBlbmQgPSAtQ2Fs
bEZyYW1lOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZvciAo
aSA9IC0xOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07Ci0KLSAgICBl
bmQgLT0gZGVsdGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0g
PSBqc1VuZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJh
bWU6OmNyZWF0ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1lIDw9IHJlZ2lz
dGVyRmlsZS0+ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0KIERFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklU
X1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBz
dGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJp
dHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2Fs
bCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5
Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwp
OwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25G
cm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJF
U1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsK
IApAQCAtMjIzNyw3ICsyMjA2LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2Nv
bnN0cnVjdAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFt
ZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJh
bWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBDYWxs
RnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxs
RnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBp
ZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2Fs
bDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDEw
NjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgSlNJbnRlcmZhY2VKSVRfaAog
I2RlZmluZSBKU0ludGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25z
LmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVk
ZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2RlZmluZSBMTElOVF9F
WEVDVVRJT05fVFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFDSU5HIDAKKyNkZWZp
bmUgTExJTlRfQUxXQVlTX0FMTE9DQVRFX1NMT1cgMAorCisjZW5kaWYgLy8gTExJbnRDb21tb25f
aAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludERh
dGEuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisj
aW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wY29kZS5oIgorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworRGF0YTo6RGF0YSgpCisgICAgOiBt
X2V4Y2VwdGlvbkluc3RydWN0aW9ucyhuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsg
MV0pCisgICAgLCBtX29wY29kZU1hcChuZXcgT3Bjb2RlW251bU9wY29kZUlEc10pCit7CisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyArK2kpCisgICAgICAgIG1f
ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUpOworI2RlZmluZSBPUENPREVfRU5U
Ulkob3Bjb2RlLCBsZW5ndGgpIG1fb3Bjb2RlTWFwW29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF8jI29wY29kZSk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9FTlRS
WSk7CisjdW5kZWYgT1BDT0RFX0VOVFJZCit9CisKK0RhdGE6On5EYXRhKCkKK3sKKyAgICBkZWxl
dGVbXSBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBkZWxldGVbXSBtX29wY29kZU1hcDsK
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJ
TlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgTExJbnREYXRhX2gKKyNkZWZpbmUgTExJbnREYXRhX2gKKwor
I2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisj
aWYgRU5BQkxFKExMSU5UKQorY2xhc3MgRGF0YSB7CitwdWJsaWM6CisgICAgRGF0YSgpOworICAg
IH5EYXRhKCk7CisgICAgCisgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygp
CisgICAgeworICAgICAgICByZXR1cm4gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgfQor
ICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX29w
Y29kZU1hcDsKKyAgICB9Citwcml2YXRlOgorICAgIEluc3RydWN0aW9uKiBtX2V4Y2VwdGlvbklu
c3RydWN0aW9uczsKKyAgICBPcGNvZGUqIG1fb3Bjb2RlTWFwOworfTsKKyNlbHNlIC8vIEVOQUJM
RShMTElOVCkKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Npbmctbm9yZXR1
cm4iCisjZW5kaWYKKworY2xhc3MgRGF0YSB7CitwdWJsaWM6CisgICAgSW5zdHJ1Y3Rpb24qIGV4
Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFw
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9Cit9OworCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgcG9wCisjZW5kaWYKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludERhdGFfaAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJM
TEludEVudHJ5cG9pbnRzLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJKSVRD
b2RlLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3Mu
aCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSklUQ29kZSYgaml0
Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0eUNoZWNrKQoreworICAgIGlmICghZ2xv
YmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkg
eworICAgICAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUp
KSkpOworICAgICAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaykpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rp
b24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfcHJvbG9ndWUpKSkpOworICAgICAgICBhcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAo
a2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxE
YXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENv
ZGU6OkludGVycHJldGVyVGh1bmspOworICAgICAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5n
ZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNv
bnN0cnVjdCk7CisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1
bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJl
dGVyVGh1bmspOworICAgIGFyaXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKK30KKwordm9p
ZCBnZXRFdmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGpp
dENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGpp
dENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X2V2YWxfcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihldmFsRW50
cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQorCit2b2lk
IGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSYg
aml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAg
aml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNy
ZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkpKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKHBy
b2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cit9
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5U
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50
cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50
cnlwb2ludHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RW50cnlwb2ludHNf
aAorI2RlZmluZSBMTEludEVudHJ5cG9pbnRzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXZhbENvZGVCbG9jazsKK2NsYXNzIEpJ
VENvZGU7CitjbGFzcyBKU0dsb2JhbERhdGE7CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI7
CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CitjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwor
CituYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0dsb2Jh
bERhdGEmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBKSVRDb2RlJiwgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyJiBhcml0eUNoZWNrKTsKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRh
JiwgSklUQ29kZSYpOwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBK
SVRDb2RlJik7CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBFdmFsQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRFdmFs
RW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworaW5saW5lIHZvaWQgZ2V0RW50
cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb2dyYW1Db2RlQmxvY2sqLCBKSVRD
b2RlJiBqaXRDb2RlKQoreworICAgIGdldFByb2dyYW1FbnRyeXBvaW50KGdsb2JhbERhdGEsIGpp
dENvZGUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50RW50cnlwb2ludHNfaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRF
eGNlcHRpb25zLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJDYWxsRnJhbWUu
aCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2lu
Y2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1
ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBM
TEludCB7CisKK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwor
I2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24g
JXMuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAg
ICBnZW5lcmljVGhyb3coCisgICAgICAgIGdsb2JhbERhdGEsIGV4ZWMtPmNhbGxlckZyYW1lKCks
IGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwKKyAgICAgICAgZXhlYy0+Y2FsbGVyRnJhbWUoKS0+Y29k
ZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGV4ZWMtPmNhbGxlckZyYW1lKCksIGV4ZWMtPnJldHVy
blBDKCkpKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRp
b24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkubGxp
bnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworfQorCitJbnN0cnVjdGlvbiogcmV0dXJu
VG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hFTFBF
Ul9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKHJldHVyblRvVGhy
b3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisg
ICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwg
cGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisg
ICAgcmV0dXJuIGdsb2JhbERhdGEtPmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsK
K30KKwordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMp
Cit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsK
KyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9u
ICVzIChjYWxsVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24o
KSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0
YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpKTsKKyAgICAKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3df
ZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTElu
dAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIExMSW50RXhjZXB0aW9uc19oCisjZGVmaW5lIExMSW50RXhjZXB0aW9uc19oCisKKyNp
bmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisK
KyNpZiBFTkFCTEUoTExJTlQpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7
CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKKy8vIFRocm93IHRo
ZSBjdXJyZW50bHkgYWN0aXZlIGV4Y2VwdGlvbiBpbiB0aGUgY29udGV4dCBvZiB0aGUgY2FsbGVy
J3MgY2FsbCBmcmFtZS4KK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKEV4ZWNTdGF0ZSop
OworCisvLyBUZWxscyB5b3Ugd2hlcmUgdG8ganVtcCB0byBpZiB5b3Ugd2FudCB0byByZXR1cm4t
dG8tdGhyb3csIGFmdGVyIHlvdSd2ZSBhbHJlYWR5CisvLyBzZXQgdXAgYWxsIGluZm9ybWF0aW9u
IG5lZWRlZCB0byB0aHJvdyB0aGUgZXhjZXB0aW9uLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhy
b3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0YXRlKik7CisKKy8vIFNhdmVzIHRoZSBjdXJyZW50
IFBDIGluIHRoZSBnbG9iYWwgZGF0YSBmb3Igc2FmZS1rZWVwaW5nLCBhbmQgZ2l2ZXMgeW91IGEg
UEMKKy8vIHRoYXQgeW91IGNhbiB0ZWxsIHRoZSBpbnRlcnByZXRlciB0byBnbyB0bywgd2hpY2gg
d2hlbiBhZHZhbmNlZCBiZXR3ZWVuIDEKKy8vIGFuZCA5IHNsb3RzIHdpbGwgZ2l2ZSB5b3UgYW4g
Imluc3RydWN0aW9uIiB0aGF0IHRocmVhZHMgdG8gdGhlIGludGVycHJldGVyJ3MKKy8vIGV4Y2Vw
dGlvbiBoYW5kbGVyLiBOb3RlIHRoYXQgaWYgeW91IGdpdmUgaXQgdGhlIFBDIGZvciBleGNlcHRp
b24gaGFuZGxpbmcsCisvLyBpdCdzIHNtYXJ0IGVub3VnaCB0byBqdXN0IHJldHVybiB0aGF0IFBD
IHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxzZTsgdGhpcworLy8gbGV0cyB5b3UgdGhyZWFkIGV4
Y2VwdGlvbiBoYW5kbGluZyB0aHJvdWdoIGNvbW1vbiBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgYnkK
Ky8vIG90aGVyIGhlbHBlcnMuCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUq
LCBJbnN0cnVjdGlvbiopOworCisvLyBVc2UgdGhpcyB3aGVuIHlvdSdyZSB0aHJvd2luZyB0byBh
IGNhbGwgdGh1bmsuCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiop
OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKKworI2VuZGlmIC8vIExMSW50RXhjZXB0aW9uc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE1NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50SGVscGVycy5oIgor
CisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAi
Q2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCisjaW5jbHVkZSAiR2V0
dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiSklURHJpdmVyLmgi
CisjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKKyNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnRDb21t
b24uaCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMb3dMZXZlbElu
dGVycHJldGVyLmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorCituYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIExMSW50IHsKKworI2RlZmluZSBMTElOVF9CRUdJTigpIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoJmV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYykKKworI2RlZmluZSBMTElO
VF9PUChpbmRleCkgKGV4ZWMtPnVuY2hlY2tlZFIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisjZGVm
aW5lIExMSU5UX09QX0MoaW5kZXgpIChleGVjLT5yKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorCisj
ZGVmaW5lIExMSU5UX1JFVFVSTl9UV08oZmlyc3QsIHNlY29uZCkgZG8geyAgICAgICBcCisgICAg
ICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICAgICAgdm9pZCogYTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgdm9pZCogYjsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9IHBh
aXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpbnQ2NF90
IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gX19ydF91OyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmEgPSBm
aXJzdDsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmIgPSBzZWNv
bmQ7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX3J0X3UuaTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJ
TlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCBleGVjKQorCisjZGVmaW5lIExMSU5U
X1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIEpTR2xvYmFsRGF0YSYgX190X2dsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7
ICAgICAgICBcCisgICAgICAgIF9fdF9nbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IChleGNlcHRpb25U
b1Rocm93KTsgICAgICAgICAgICBcCisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBw
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBM
KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGls
ZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCkgZG8geyAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+Z2xvYmFsRGF0YSgpLmV4
Y2VwdGlvbikpIHsgICBcCisgICAgICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMp
OyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJ
TlRfRU5EKCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwo
KTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmlu
ZSBMTElOVF9CUkFOQ0gob3Bjb2RlLCBjb25kaXRpb24pIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBib29sIF9fYl9jb25kaXRpb24gPSAoY29uZGl0aW9uKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoX19iX2NvbmRpdGlvbikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMg
Kz0gcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5vcGVyYW5kOyAgICAgICAgXAorICAg
ICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcGNvZGUpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisj
ZGVmaW5lIExMSU5UX1JFVFVSTih2YWx1ZSkgZG8geyAgICAgICAgICAgICAgICBcCisgICAgICAg
IEpTVmFsdWUgX19yX3JldHVyblZhbHVlID0gKHZhbHVlKTsgICAgICBcCisgICAgICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEp
ID0gX19yX3JldHVyblZhbHVlOyAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUg
TExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wY29kZSwgdmFsdWUpIGRvIHsgICAgICAgICAgICAgICBc
CisgICAgICAgIEpTVmFsdWUgX19ycF9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfT1AoMSkgPSBfX3JwX3JldHVyblZh
bHVlOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHBjW09QQ09ERV9MRU5HVEgo
b3Bjb2RlKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0gXAorICAgICAgICAgICAgSlNW
YWx1ZTo6ZW5jb2RlKF9fcnBfcmV0dXJuVmFsdWUpOyAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChl
eGVjLCBjYWxsVGFyZ2V0KSBMTElOVF9SRVRVUk5fVFdPKChjYWxsVGFyZ2V0KSwgKGV4ZWMpKQor
CisjZGVmaW5lIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRv
IHsgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jdF9leGVjID0gKGV4ZWMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9u
KiBfX2N0X3BjID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIEpTR2xvYmFsRGF0YSYgX19jdF9nbG9iYWxEYXRhID0gKF9fY3RfZXhlYyktPmdsb2Jh
bERhdGEoKTsgICAgICBcCisgICAgICAgIF9fY3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhj
ZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NBTExfRU5E
X0lNUEwoX19jdF9leGVjLCBjYWxsVG9UaHJvdyhfX2N0X2V4ZWMsIF9fY3RfcGMpKTsgXAorICAg
IH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4
ZWMsIHBjKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSog
X19jY2VfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIEluc3RydWN0aW9uKiBfX2NjZV9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VMWShfX2NjZV9leGVjLT5nbG9iYWxE
YXRhKCkuZXhjZXB0aW9uKSkgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9DQUxM
X0VORF9JTVBMKF9fY2NlX2V4ZWMsIGNhbGxUb1Rocm93KF9fY2NlX2V4ZWMsIF9fY2NlX3BjKSk7
IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX1JFVFVSTihleGVj
LCBwYywgY2FsbFRhcmdldCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVj
U3RhdGUqIF9fY3JfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jcl9wYyA9IChwYyk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2b2lkKiBfX2NyX2NhbGxUYXJnZXQgPSAo
Y2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9D
QUxMX0NIRUNLX0VYQ0VQVElPTihfX2NyX2V4ZWMtPmNhbGxlckZyYW1lKCksIF9fY3JfcGMpOyAg
XAorICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3JfZXhlYywgX19jcl9jYWxsVGFyZ2V0
KTsgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCitleHRlcm4gIkMiIEhl
bHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqIGV4ZWMsIEluc3Ry
dWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCit7CisgICAgcHJpbnRmKCIl
cCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWRcbiIsCisg
ICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAg
ICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRl
ci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUsCisg
ICAgICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90
cmFjZV92YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVy
ZSwgaW50IG9wZXJhbmQpCit7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0Mob3BlcmFu
ZCkuanNWYWx1ZSgpOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAg
IHVpbnQzMl90IHRhZzsKKyAgICAgICAgICAgIHVpbnQzMl90IHBheWxvYWQ7CisgICAgICAgIH0g
Yml0czsKKyAgICAgICAgRW5jb2RlZEpTVmFsdWUgYXNWYWx1ZTsKKyAgICB9IHU7CisgICAgdS5h
c1ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4
ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZDogJTA4eDolMDh4IiwKKyAg
ICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAg
IHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVy
LT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGZyb21XaGVyZSwKKyAg
ICAgICAgICAgb3BlcmFuZCwKKyAgICAgICAgICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kLAorICAg
ICAgICAgICB1LmJpdHMudGFnLAorICAgICAgICAgICB1LmJpdHMucGF5bG9hZCk7CisjaWZuZGVm
IE5ERUJVRworICAgIHByaW50ZigiOiAlcyIsIHZhbHVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlm
CisgICAgcHJpbnRmKCJcbiIpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTCh0cmFjZV9wcm9sb2d1ZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGluIHByb2xvZ3Vl
LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitz
dGF0aWMgdm9pZCB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBj
aGFyKiBjb21tZW50LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5j
dGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9ICZleGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5k
KTsKKyAgICBwcmludGYoIiVwIC8gJXA6IGluICVzIG9mIGZ1bmN0aW9uICVwLCBleGVjdXRhYmxl
ICVwOyBudW1WYXJzID0gJXUsIG51bVBhcmFtZXRlcnMgPSAldSwgbnVtQ2FsbGVlUmVnaXN0ZXJz
ID0gJXUuXG4iLAorICAgICAgICAgICBjb2RlQmxvY2ssIGV4ZWMsIGNvbW1lbnQsIGNhbGxlZSwg
ZXhlY3V0YWJsZSwKKyAgICAgICAgICAgY29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCit7Cisg
ICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIHByb2xvZ3VlIiwgQ29kZUZvckNh
bGwpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9s
b2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1
ZShleGVjLCAiY29uc3RydWN0IHByb2xvZ3VlIiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2Nh
bGwpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIGFyaXR5IGNoZWNr
IiwgQ29kZUZvckNhbGwpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgdHJhY2VGdW5jdGlvblBy
b2xvZ3VlKGV4ZWMsICJjb25zdHJ1Y3QgYXJpdHkgY2hlY2siLCBDb2RlRm9yQ29uc3RydWN0KTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2UpCit7CisgICAg
cHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCAiLAorICAgICAgICAgICBleGVjLT5j
b2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsK
KyNpZm5kZWYgTkRFQlVHCisgICAgcHJpbnRmKCIlcywgIiwgb3Bjb2RlTmFtZXNbZXhlYy0+Z2xv
YmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSldKTsKKyNl
bHNlCisgICAgcHJpbnRmKCJvcCMldSwgIiwgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVy
LT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSkpOworI2VuZGlmCisgICAgcHJpbnRmKCJzY29w
ZSAlcFxuIiwgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woc3BlY2lhbF90cmFjZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4
ZWN1dGluZyBzcGVjaWFsIGNhc2UgYmMjJXp1LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAor
ICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0
aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZXhlYy0+cmV0dXJu
UEMoKS52YWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworaW5saW5lIGJvb2wgc2hvdWxk
SklUKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBZb3UgY2FuIG1vZGlmeSB0aGlzIHRvIHR1
cm4gb2ZmIEpJVHRpbmcgd2l0aG91dCByZWJ1aWxkaW5nIHRoZSB3b3JsZC4KKyAgICByZXR1cm4g
ZXhlYy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpOworfQorCitlbnVtIEVudHJ5S2luZCB7IFBy
b2xvZ3VlLCBBcml0eUNoZWNrIH07CitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBlbnRyeU9TUihF
eGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IGNoYXIgKm5hbWUsIEVudHJ5S2luZCBraW5kKQoreworI2lmIEVOQUJMRShKSVRfVkVSQk9T
RV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCAlcyB3aXRoIGV4ZWN1dGVDb3VudGVyID0g
JWRcbiIsIGNvZGVCbG9jaywgbmFtZSwgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkp
OworI2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29k
ZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygw
LCBleGVjKTsKKyAgICB9CisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xv
YmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50
ZigiICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAg
ICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICBpZiAoa2luZCA9PSBQcm9sb2d1ZSkKKyAgICAg
ICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRk
cmVzc0F0T2Zmc2V0KDApLCBleGVjKTsKKyAgICBBU1NFUlQoa2luZCA9PSBBcml0eUNoZWNrKTsK
KyAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+Z2V0SklUQ29kZVdpdGhBcml0eUNoZWNr
KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVu
dHJ5X29zcikKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsIGV4ZWMtPmNvZGVCbG9j
aygpLCAiZW50cnlfb3NyIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBj
LCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRC
eXRlY29kZUZvcihDb2RlRm9yQ2FsbCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwiLCBQ
cm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0KQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24o
ZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29k
ZUZvckNvbnN0cnVjdCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCIsIFByb2xv
Z3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxs
X2FyaXR5Q2hlY2spCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlv
bihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihD
b2RlRm9yQ2FsbCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjayIsIEFy
aXR5Q2hlY2spOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywg
JmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0
ZWNvZGVGb3IoQ29kZUZvckNvbnN0cnVjdCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9hcml0eUNoZWNrIiwgQXJpdHlDaGVjayk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGxv
b3Bfb3NyKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CisgICAgCisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRl
cmVkIGxvb3Bfb3NyIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2Rl
QmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoIXNo
b3VsZEpJVChleGVjKSkgeworICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigp
OworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAgICAKKyAgICBp
ZiAoIWNvZGVCbG9jay0+aml0Q29tcGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5B
QkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFk
eSBjb21waWxlZC5cbiIpOworI2VuZGlmCisgICAgfQorICAgIGNvZGVCbG9jay0+aml0U29vbigp
OworICAgIAorICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpC
YXNlbGluZUpJVCk7CisgICAgCisgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4g
bWFwOworICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgpLT5kZWNvZGUobWFwKTsKKyAgICBCeXRl
Y29kZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcgPSBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRN
YWNoaW5lT2Zmc2V0LCB1bnNpZ25lZCwgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRl
Y29kZUluZGV4PihtYXAuYmVnaW4oKSwgbWFwLnNpemUoKSwgcGMgLSBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCkpOworICAgIEFTU0VSVChtYXBwaW5nKTsKKyAgICBBU1NFUlQobWFw
cGluZy0+bV9ieXRlY29kZUluZGV4ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwYyAtIGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSkpOworICAgIAorICAgIHZvaWQqIGp1bXBUYXJn
ZXQgPSBjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KG1h
cHBpbmctPm1fbWFjaGluZUNvZGVPZmZzZXQpOworICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsKKyAg
ICAKKyAgICBMTElOVF9SRVRVUk5fVFdPKGp1bXBUYXJnZXQsIGV4ZWMpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChyZXBsYWNlKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgCisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmlu
dGYoIiVwOiBFbnRlcmVkIHJlcGxhY2Ugd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2Rl
QmxvY2ssIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAor
ICAgIGlmIChzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgaWYgKCFjb2RlQmxvY2stPmppdENv
bXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1Ip
CisgICAgICAgICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7
CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjaykKK3sK
KyAgICBMTElOVF9CRUdJTigpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRm
KCJDaGVja2luZyBzdGFjayBoZWlnaHQgd2l0aCBleGVjID0gJXAuXG4iLCBleGVjKTsKKyAgICBw
cmludGYoIkNvZGVCbG9jayA9ICVwLlxuIiwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAgIHByaW50
ZigiTnVtIGNhbGxlZSByZWdpc3RlcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251
bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgcHJpbnRmKCJOdW0gdmFycyA9ICV1LlxuIiwgZXhlYy0+
Y29kZUJsb2NrKCktPm1fbnVtVmFycyk7CisgICAgcHJpbnRmKCJDdXJyZW50IGVuZCBpcyBhdCAl
cC5cbiIsIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5k
KCkpOworI2VuZGlmCisgICAgQVNTRVJUKCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxv
Y2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnNdID4gZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJl
dGVyLT5yZWdpc3RlckZpbGUoKS5lbmQoKSk7CisgICAgaWYgKFVOTElLRUxZKCFleGVjLT5nbG9i
YWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmdyb3coJmV4ZWMtPnJlZ2lzdGVy
cygpW2V4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVyc10pKSkgeworICAgICAg
ICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50
ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMpOworICAgICAgICBwYyA9IHJldHVyblRvVGhyb3dG
b3JUaHJvd25FeGNlcHRpb24oZXhlYyk7CisgICAgfQorICAgIExMSU5UX0VORF9JTVBMKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFy
aXR5Q2hlY2tGb3IoZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0
ZXJGaWxlKCksIENvZGVGb3JDYWxsKTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhl
YyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNl
cHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJl
dGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNl
X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKKyAgICB9Cisg
ICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
RXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMs
ICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9y
Q29uc3RydWN0KTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNh
bGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNh
bGxlcihleGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVU
VVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0
ZV9hY3RpdmF0aW9uKQoreworICAgIExMSU5UX0JFR0lOKCk7CisjaWYgTExJTlRfSEVMUEVSX1RS
QUNJTkcKKyAgICBwcmludGYoIkNyZWF0aW5nIGFuIGFjdGl2YXRpb24sIGV4ZWMgPSAlcCFcbiIs
IGV4ZWMpOworI2VuZGlmCisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gSlNBY3RpdmF0
aW9uOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLCBzdGF0aWNfY2FzdDxGdW5jdGlv
bkV4ZWN1dGFibGUqPihleGVjLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkpKTsKKyAg
ICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChhY3RpdmF0aW9u
KSk7CisgICAgTExJTlRfUkVUVVJOKEpTVmFsdWUoYWN0aXZhdGlvbikpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1bWVudHM6OmNyZWF0ZShleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAg
ICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFuZCkgPSBhcmd1bWVudHM7CisgICAgZXhl
Yy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5k
KSkgPSBhcmd1bWVudHM7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTRnVuY3Rp
b24qIGNvbnN0cnVjdG9yID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgCisjaWYg
IUFTU0VSVF9ESVNBQkxFRAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBB
U1NFUlQoY29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3Ry
dWN0b3IsIGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CisjZW5kaWYKKyAgICAK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBKU1ZhbHVlIHByb3RvID0gTExJTlRfT1Ao
MikuanNWYWx1ZSgpOworICAgIGlmIChwcm90by5pc09iamVjdCgpKQorICAgICAgICBzdHJ1Y3R1
cmUgPSBhc09iamVjdChwcm90byktPmluaGVyaXRvcklEKGV4ZWMtPmdsb2JhbERhdGEoKSk7Cisg
ICAgZWxzZQorICAgICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c2NvcGUoKS0+Z2xvYmFs
T2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpOworICAgIAorICAgIExMSU5UX1JFVFVSTihj
b25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpT
VmFsdWUgdjEgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHYxLmlzUHJpbWl0
aXZlKCkpOworICAgIExMSU5UX1JFVFVSTih2MS50b1RoaXNPYmplY3QoZXhlYykpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVjdCkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgYml0d2lzZV9jYXN0PEpTVmFs
dWUqPigmTExJTlRfT1AoMikpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmNv
bnN0YW50QnVmZmVyKHBjWzJdLnUub3BlcmFuZCksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlZ2V4cChwY1syXS51
Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCisgICAgICAgIExMSU5UX1RI
Uk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIGZsYWcgc3VwcGxpZWQgdG8gUmVn
RXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2JqZWN0OjpjcmVh
dGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4cCkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9Cb29s
ZWFuKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6ZXF1YWwo
ZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMs
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElO
VF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dyZWF0ZXIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKGpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJlX2luYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKyAxKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDEpLmpzVmFsdWUoKS50b051bWJlcihleGVj
KSAtIDEpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUo
KS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCArIDEp
OworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Bvc3RfZGVjKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgZG91Ymxl
IHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElO
VF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCAtIDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZWdhdGUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4o
anNOdW1iZXIoLUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBKU1ZhbHVlIHYxID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2MiA9
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5H
CisgICAgcHJpbnRmKCJUcnlpbmcgdG8gYWRkICVzIiwgdjEuZGVzY3JpcHRpb24oKSk7CisgICAg
cHJpbnRmKCIgdG8gJXMuXG4iLCB2Mi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIAorICAg
IGlmICh2MS5pc1N0cmluZygpICYmICF2Mi5pc09iamVjdCgpKQorICAgICAgICBMTElOVF9SRVRV
Uk4oanNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEpLCB2Mi50b1N0cmluZyhleGVjKSkpOworICAg
IAorICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCisgICAgICAgIExMSU5U
X1JFVFVSTihqc051bWJlcih2MS5hc051bWJlcigpICsgdjIuYXNOdW1iZXIoKSkpOworICAgIAor
ICAgIExMSU5UX1JFVFVSTihqc0FkZFNsb3dDYXNlKGV4ZWMsIHYxLCB2MikpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
ICogTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3N1YikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAt
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9kaXYpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLyBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbW9kKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyks
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykg
PDwgKExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpICYgMzEpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQz
MihleGVjKSA+PiAoTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykgJiAzMSkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9VSW50MzIoZXhlYykgPj4gKExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4
ZWMpICYgMzEpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSAmIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50
MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG9yKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvSW50MzIoZXhlYykgfCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMy
KGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9JbnQzMihleGVjKSBeIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIo
ZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcih+TExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y2hlY2tfaGFzX2luc3RhbmNlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSBi
YXNlVmFsID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisjaWZuZGVmIE5ERUJVRworICAgIFR5
cGVJbmZvIHR5cGVJbmZvKFVuc3BlY2lmaWVkVHlwZSk7CisgICAgQVNTRVJUKCFiYXNlVmFsLmlz
T2JqZWN0KCkKKyAgICAgICAgICAgfHwgISh0eXBlSW5mbyA9IGFzT2JqZWN0KGJhc2VWYWwpLT5z
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKSkuaW1wbGVtZW50c0hhc0luc3RhbmNlKCkpOworI2VuZGlm
CisgICAgTExJTlRfVEhST1coY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoZXhlYywgImluc3RhbmNl
b2YiLCBiYXNlVmFsKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9m
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21t
b25TbG93UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3coZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQpLmpzVmFsdWUoKSkpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZikKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIExMSU5UX1JFVFVSTihqc1R5cGVTdHJpbmdGb3JWYWx1ZShleGVjLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5k
ZWZpbmVkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbih2LmlzQ2VsbCgpID8g
di5hc0NlbGwoKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCgpIDogdi5pc1VuZGVmaW5lZCgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19ib29sZWFuKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS5pc051bWJlcigp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19zdHJpbmcpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGlzSlNTdHJpbmcoTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19v
YmplY3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KGpzSXNPYmplY3RUeXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUoTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbikKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhz
OjpvcEluKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZSwgQ29t
bW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZp
ZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVz
b2x2ZV9za2lwKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJ
TEVEKAorICAgICAgICBvcF9yZXNvbHZlX3NraXAsCisgICAgICAgIENvbW1vblNsb3dQYXRoczo6
b3BSZXNvbHZlU2tpcCgKKyAgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgICBleGVjLT5jb2Rl
QmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAgICAgICAgICAgcGNbM10u
dS5vcGVyYW5kKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlIHJlc29sdmVHbG9iYWwoRXhlY1N0YXRl
KiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5pc0dsb2Jh
bE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICAKKyAgICBB
U1NFUlRfVU5VU0VEKHN0cnVjdHVyZSwgc3RydWN0dXJlICE9IGdsb2JhbE9iamVjdC0+c3RydWN0
dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlm
aWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3QpOworICAg
IAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xv
dCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50
KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmICFnbG9iYWxPYmplY3Qt
PnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiBz
bG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICBwY1szXS51LnN0
cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAg
ICAgICAgIHBjWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQp
OworICAgIHJldHVybiBKU1ZhbHVlKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9y
ZXNvbHZlX2dsb2JhbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTl9Q
Uk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbCwgcmVzb2x2ZUdsb2JhbChleGVjLCBwYykpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2ds
b2JhbF9keW5hbWljLCByZXNvbHZlR2xvYmFsKGV4ZWMsIHBjKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMsIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVC
bG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIElk
ZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5v
cGVyYW5kKTsKKyAgICBpZiAocGNbM10udS5vcGVyYW5kKSB7CisgICAgICAgIEpTVmFsdWUgYmFz
ZSA9IEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgdHJ1
ZSk7CisgICAgICAgIGlmICghYmFzZSkKKyAgICAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVy
cm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7Cisg
ICAgICAgIExMSU5UX1JFVFVSTihiYXNlKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJO
X1BST0ZJTEVEKG9wX3Jlc29sdmVfYmFzZSwgSlNDOjpyZXNvbHZlQmFzZShleGVjLCBpZGVudCwg
ZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIFBy
b3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5j
b2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghb2JqZWN0
LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKQorICAgICAgICBMTElOVF9USFJP
VyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJp
bmcoKSkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cmVzb2x2ZV93aXRoX2Jhc2UpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aEJhc2UoZXhlYywgZXhlYy0+Y29k
ZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0OworICAg
IC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcsIGJ1dCB3ZSBkb24n
dCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BS
ZXNvbHZlV2l0aFRoaXMoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10u
dS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgIExMSU5UX09QKDIpID0gcmVzdWx0OworICAgIC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91
bGQgaGF2ZSBwcm9maWxpbmcsIGJ1dCB3ZSBkb24ndCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29u
J3QgdXNlIGl0LgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZ2V0X2J5X2lkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVC
bG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZh
bHVlKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwg
c2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1AoMSkgPSBy
ZXN1bHQ7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCisgICAgICAgICYmIHNsb3QuaXND
YWNoZWFibGUoKQorICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlCisgICAg
ICAgICYmIHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpWYWx1ZSkg
eworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwo
KTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7
CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25h
cnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9w
ZXJ0eUNhY2hpbmcoKSkgeworICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAg
ICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgcGNbT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfaWQpIC0gMV0udS5wcm9maWxlLT5tX2J1Y2tl
dHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2so
KTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51
Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMikuanNWYWx1ZSgp
OworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisgICAgTExJTlRfUkVUVVJOKGJh
c2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3B1dF9ieV9pZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBj
b2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICAKKyAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgIGlmIChwY1s4XS51Lm9wZXJh
bmQpCisgICAgICAgIGFzT2JqZWN0KGJhc2VWYWx1ZSktPnB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGlkZW50LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgZWxzZQor
ICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KSwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgaWYgKGJh
c2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsKKyAgICAg
ICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAg
ICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAg
ICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNo
aW5nKCkKKyAgICAgICAgICAgICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5l
d1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFy
eSgpICYmIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
ID09IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWUgb2YgdGhlIG1ldGhvZHMgd2Ug
Y2FsbAorICAgICAgICAgICAgICAgICAgICAvLyBiZWxvdyBtYXkgR0MuCisgICAgICAgICAgICAg
ICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0
X2J5X2lkKTsKKworICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihl
eGVjLCBiYXNlQ2VsbCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOworICAgICAgICAg
ICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAgICAg
ICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVj
dHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5k
ID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUp
OworICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBzdHJ1Y3R1cmUt
PnByb3RvdHlwZUNoYWluKGV4ZWMpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2hhaW4p
OworICAgICAgICAgICAgICAgICAgICBwY1s3XS51LnN0cnVjdHVyZUNoYWluLnNldCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSwgY2hhaW4pOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBd
LnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIHBjWzRdLnUu
c3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAg
IHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKGZhbHNlICYm
ICFzdHJjbXAoaWRlbnQuYXNjaWkoKS5kYXRhKCksICJyZW5kZXJSZWZsZWN0aW9ucyIpKQorICAg
ICAgICBwcmludGYoIkZpbmlzaGluZyBhY2Nlc3MgdG8gcmVuZGVyUmVmbGVjdGlvbnMgZnJvbSBM
TEludCBzbG93IHBhdGguXG4iKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3Qq
IGJhc2VPYmplY3QgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b09iamVjdChleGVjKTsKKyAg
ICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJv
cGVydHkoYmFzZU9iamVjdCwgZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3Bl
cmFuZCkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGlmICghY291bGREZWxl
dGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICBM
TElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisKK2lubGluZSBKU1ZhbHVl
IGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vi
c2NyaXB0KQoreworICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlw
dC5pc1N0cmluZygpKSkgeworICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUu
YXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eShleGVjLCBhc1N0cmluZyhzdWJzY3JpcHQpLT52
YWx1ZShleGVjKSkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAg
ICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNj
cmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpICYmIGFz
U3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFz
U3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAg
aWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5j
YW5BY2Nlc3NJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc0J5dGVBcnJheShiYXNlVmFs
dWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBiYXNlVmFs
dWUuZ2V0KGV4ZWMsIGkpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4
ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIHJldHVybiBi
YXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2dldF9ieV92YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk5f
UFJPRklMRUQob3BfZ2V0X2J5X3ZhbCwgZ2V0QnlWYWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
SlNWYWx1ZSBhcmd1bWVudHMgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhcmd1
bWVudHMpIHsKKyAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
ICAgIExMSU5UX09QKDIpID0gYXJndW1lbnRzOworICAgICAgICBleGVjLT51bmNoZWNrZWRSKHVu
bW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsK
KyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIGFyZ3VtZW50cywg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2dldF9ieV9wbmFtZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihn
ZXRCeVZhbChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2Jh
bERhdGEoKTsKKyAgICAKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7
CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAg
IGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CisgICAgICAgIHVpbnQzMl90IGkg
PSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUp
KSB7CisgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOwor
ICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNhblNldEluZGV4KGkpKQorICAgICAgICAgICAgICAg
IGpzQXJyYXktPnNldEluZGV4KGdsb2JhbERhdGEsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4KGpzQXJyYXksIGV4ZWMsIGks
IHZhbHVlKTsKKyAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICB9CisgICAgICAgIGlm
IChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkKKyAgICAgICAgICAgICYmIGFzQnl0ZUFycmF5KGJh
c2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CisgICAgICAgICAgICBKU0J5dGVBcnJheSog
anNCeXRlQXJyYXkgPSBhc0J5dGVBcnJheShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYgKHZh
bHVlLmlzSW50MzIoKSkgeworICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChp
LCB2YWx1ZS5hc0ludDMyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAg
ICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNOdW1iZXIoKSk7CisgICAgICAg
ICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
YmFzZVZhbHVlLnB1dChleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgIExMSU5UX0VORCgpOworICAg
IH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7
CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUudG9PYmpl
Y3QoZXhlYyk7CisgICAgCisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKTsKKyAgICAKKyAgICBib29sIGNvdWxkRGVsZXRlOworICAgIAorICAgIHVpbnQzMl90
IGk7CisgICAgaWYgKHN1YnNjcmlwdC5nZXRVSW50MzIoaSkpCisgICAgICAgIGNvdWxkRGVsZXRl
ID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KGJhc2VP
YmplY3QsIGV4ZWMsIGkpOworICAgIGVsc2UgeworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7
CisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRl
UHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgcHJvcGVydHkpOworICAgIH0KKyAgICAKKyAgICBp
ZiAoIWNvdWxkRGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAg
ICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRl
IHByb3BlcnR5LiIpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVs
ZXRlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS5wdXQoZXhlYywg
cGNbMl0udS5vcGVyYW5kLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyX3NldHRlcikKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNP
YmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5q
c1ZhbHVlKCkpOworICAgIAorICAgIEdldHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0
ZXI6OmNyZWF0ZShleGVjKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAg
ICBKU1ZhbHVlIGdldHRlciA9IExMSU5UX09QKDMpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHNl
dHRlciA9IExMSU5UX09QKDQpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoZ2V0dGVyLmlzT2JqZWN0
KCkgfHwgZ2V0dGVyLmlzVW5kZWZpbmVkKCkpOworICAgIEFTU0VSVChzZXR0ZXIuaXNPYmplY3Qo
KSB8fCBzZXR0ZXIuaXNVbmRlZmluZWQoKSk7CisgICAgQVNTRVJUKGdldHRlci5pc09iamVjdCgp
IHx8IHNldHRlci5pc09iamVjdCgpKTsKKyAgICAKKyAgICBpZiAoIWdldHRlci5pc1VuZGVmaW5l
ZCgpKQorICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgYXNP
YmplY3QoZ2V0dGVyKSk7CisgICAgaWYgKCFzZXR0ZXIuaXNVbmRlZmluZWQoKSkKKyAgICAgICAg
YWNjZXNzb3ItPnNldFNldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KHNldHRlcikp
OworICAgIGJhc2VPYmotPnB1dERpcmVjdEFjY2Vzc29yKAorICAgICAgICBleGVjLT5nbG9iYWxE
YXRhKCksCisgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3Bl
cmFuZCksCisgICAgICAgIGFjY2Vzc29yLCBBY2Nlc3Nvcik7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgdW5zaWduZWQgY291bnQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgU2NvcGVD
aGFpbk5vZGUqIHRtcCA9IGV4ZWMtPnNjb3BlQ2hhaW4oKTsKKyAgICB3aGlsZSAoY291bnQtLSkK
KyAgICAgICAgdG1wID0gdG1wLT5wb3AoKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKHRtcCk7
CisgICAgcGMgKz0gcGNbMl0udS5vcGVyYW5kOworICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBM
TElOVF9CUkFOQ0gob3BfanRydWUsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihl
eGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3BfamZhbHNlLCAhTExJTlRfT1BfQygxKS5q
c1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2psZXNzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNz
LCBqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzLCAhanNMZXNz
PHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXIpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXIsIGpzTGVzczxmYWxz
ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyLCAhanNMZXNzPGZhbHNl
PihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3NlcSwganNMZXNzRXE8dHJ1ZT4oZXhl
YywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIExMSU5UX0JSQU5DSChvcF9qbmxlc3NlcSwgIWpzTGVzc0VxPHRydWU+KGV4ZWMs
IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlcmVxLCBqc0xlc3NFcTxmYWxzZT4oZXhl
YywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9C
RUdJTigpOworICAgIExMSU5UX0JSQU5DSChvcF9qbmdyZWF0ZXJlcSwgIWpzTGVzc0VxPGZhbHNl
PihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9pbW0pCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QX0MoMykuanNWYWx1
ZSgpOworICAgIEFTU0VSVChzY3J1dGluZWUuaXNEb3VibGUoKSk7CisgICAgZG91YmxlIHZhbHVl
ID0gc2NydXRpbmVlLmFzRG91YmxlKCk7CisgICAgaW50MzJfdCBpbnRWYWx1ZSA9IHN0YXRpY19j
YXN0PGludDMyX3Q+KHZhbHVlKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3Bl
cmFuZDsKKyAgICBpZiAodmFsdWUgPT0gaW50VmFsdWUpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5p
bW1lZGlhdGVTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShp
bnRWYWx1ZSwgZGVmYXVsdE9mZnNldCk7CisgICAgfSBlbHNlCisgICAgICAgIHBjICs9IGRlZmF1
bHRPZmZzZXQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9zd2l0Y2hfc3RyaW5nKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSBzY3J1
dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9
IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAoIXNjcnV0aW5lZS5pc1N0cmluZygpKQorICAgICAg
ICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIGVsc2UgeworICAgICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2RlQmxvY2stPnN0
cmluZ1N3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGFzU3Ry
aW5nKHNjcnV0aW5lZSktPnZhbHVlKGV4ZWMpLmltcGwoKSwgZGVmYXVsdE9mZnNldCk7CisgICAg
fQorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1
bmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVUeXBlKCkgIT0gRnVu
Y3Rpb25Db2RlCisgICAgICAgICAgIHx8ICFjb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4o
KQorICAgICAgICAgICB8fCBleGVjLT51bmNoZWNrZWRSKGNvZGVCbG9jay0+YWN0aXZhdGlvblJl
Z2lzdGVyKCkpLmpzVmFsdWUoKSk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmlu
dGYoIkNyZWF0aW5nIGZ1bmN0aW9uIVxuIik7CisjZW5kaWYKKyAgICBMTElOVF9SRVRVUk4oY29k
ZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbMl0udS5vcGVyYW5kKS0+bWFrZShleGVjLCBleGVjLT5z
Y29wZUNoYWluKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jX2V4
cCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVC
bG9jay0+ZnVuY3Rpb25FeHByKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNGdW5jdGlvbiogZnVu
YyA9IGZ1bmN0aW9uLT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgCisgICAg
aWYgKCFmdW5jdGlvbi0+bmFtZSgpLmlzTnVsbCgpKSB7CisgICAgICAgIEpTU3RhdGljU2NvcGVP
YmplY3QqIGZ1bmN0aW9uU2NvcGVPYmplY3QgPSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUo
ZXhlYywgZnVuY3Rpb24tPm5hbWUoKSwgZnVuYywgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAg
ICAgICAgZnVuYy0+c2V0U2NvcGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jLT5zY29wZSgpLT5w
dXNoKGZ1bmN0aW9uU2NvcGVPYmplY3QpKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJO
KGZ1bmMpOworfQorCitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxsZWUsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2Fs
bGVlLT5jYWxsZXJGcmFtZSgpOworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVj
LT5nbG9iYWxEYXRhKCk7CisKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNj
b3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworCisgICAgaWYg
KGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAg
ICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoY2FsbGVlLCBjYWxsRGF0YSk7Cisg
ICAgCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZUpTKTsKKyAgICAKKyAgICAg
ICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSG9zdCkgeworICAgICAgICAgICAgZ2xvYmFsRGF0
YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUu
ZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBMTElOVF9D
QUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkpOworICAgICAgICB9CisgICAgICAgIAorI2lmIExMSU5UX0hFTFBF
Ul9UUkFDSU5HCisgICAgICAgIHByaW50ZigiQ2FsbCBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246
ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgICAgICBBU1NFUlQo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKTsKKyAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVj
LCBwYywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CisgICAgfQorCisg
ICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgCisgICAgQ29uc3RydWN0
RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdl
dENvbnN0cnVjdERhdGEoY2FsbGVlLCBjb25zdHJ1Y3REYXRhKTsKKyAgICAKKyAgICBBU1NFUlQo
Y29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlSlMpOworICAgIAorICAgIGlmIChjb25zdHJ1
Y3RUeXBlID09IENvbnN0cnVjdFR5cGVIb3N0KSB7CisgICAgICAgIGdsb2JhbERhdGEtPmhvc3RD
YWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVu
Y3Rpb24oZXhlY0NhbGxlZSkpOworCisgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxs
ZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7
CisgICAgfQorICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDb25z
dHJ1Y3RvciBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRp
b24oKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5
cGVOb25lKTsKKyAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBQ29uc3Ry
dWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUg
c2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSwgTExJbnRDYWxsTGlu
a0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCit7CisgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9u
Q2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSk7CisgICAgaWYgKCFjYWxsZWVBc0Z1
bmN0aW9uQ2VsbCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIHBj
LCBjYWxsZWVBc1ZhbHVlLCBraW5kKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBh
c0Z1bmN0aW9uKGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29w
ZUNoYWluKGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKSk7CisgICAgRXhlY3V0YWJsZUJhc2UqIGV4
ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgY29kZVB0cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CisgICAgaWYg
KGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRh
YmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgZWxz
ZSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3Rh
dGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAgICAgIEpTT2Jq
ZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVjQ2FsbGVlLCBj
YWxsZWUtPnNjb3BlKCksIGtpbmQpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBM
TElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCksIHBjLCBlcnJvcik7Cisg
ICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2Rl
Rm9yKGtpbmQpOworICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICAgICAgaWYgKGV4ZWND
YWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+
KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5j
dGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihraW5kKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+
Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIH0KKyAgICAK
KyAgICBpZiAoY2FsbExpbmtJbmZvKSB7CisgICAgICAgIGlmIChjYWxsTGlua0luZm8tPmlzT25M
aXN0KCkpCisgICAgICAgICAgICBjYWxsTGlua0luZm8tPnJlbW92ZSgpOworICAgICAgICBFeGVj
U3RhdGUqIGV4ZWNDYWxsZXIgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBj
YWxsTGlua0luZm8tPmNhbGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBleGVjQ2Fs
bGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAgICAgIGNh
bGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEoKSwg
ZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAg
ICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKKyAgICAgICAg
aWYgKGNvZGVCbG9jaykKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChj
YWxsTGlua0luZm8pOworICAgIH0KKyAgICAKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2Fs
bGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKK30KKworaW5saW5lIEhlbHBl
clJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgor
ICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0
byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIElmIHBvc3NpYmxl
LCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUg
b2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgor
ICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
OworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJh
bmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMo
cGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmls
ZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJh
bWUoZXhlYyk7CisgICAgCisgICAgQVNTRVJUKHBjWzRdLnUuY2FsbExpbmtJbmZvKTsKKyAgICBy
ZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCBwY1s0
XS51LmNhbGxMaW5rSW5mbyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBD
b2RlRm9yQ2FsbCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENv
ZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJh
cmdzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAv
LyAtIFNldCB1cCBhIGNhbGwgZnJhbWUgd2hpbGUgcmVzcGVjdGluZyB0aGUgdmFyaWFibGUgYXJn
dW1lbnRzLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQg
aWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFk
ZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUg
Y2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNT
dGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAorICAgICAgICBleGVjLCAmZXhlYy0+Z2xv
YmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwKKyAgICAgICAgTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBwY1s0XS51Lm9wZXJhbmQp
OworICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKTsKKyAgICAKKyAgICBl
eGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFs
dWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlYy0+dW5j
aGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0d2lzZV9jYXN0
PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpKTsKKyAgICAKKyAg
ICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNW
YWx1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKS5q
c1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNd
LnUub3BlcmFuZDsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxE
YXRhKCk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVj
KTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNh
bGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNo
YWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVj
dGlvbio+KCZsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOworICAgIGV4ZWNDYWxsZWUtPnNl
dENvZGVCbG9jaygwKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1l
bnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4ocGMgKyBPUENPREVfTEVOR1RI
KG9wX2NhbGxfZXZhbCkpOworICAgIAorICAgIGlmICghaXNIb3N0RnVuY3Rpb24oY2FsbGVlQXNW
YWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQorICAgICAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxs
ZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7CisgICAgCisgICAgZ2xvYmFsRGF0
YS5ob3N0Q2FsbFJldHVyblZhbHVlID0gZXZhbChleGVjQ2FsbGVlKTsKKyAgICBMTElOVF9DQUxM
X1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZf
YWN0aXZhdGlvbikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEFTU0VSVChleGVjLT5jb2Rl
QmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBKU1ZhbHVlIGFjdGl2YXRpb25W
YWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFjdGl2YXRpb25WYWx1ZSkg
eworICAgICAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKSB7CisgICAgICAgICAg
ICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAg
ICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAgfQorICAgICAgICBMTElO
VF9FTkQoKTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0
aW9uKGFjdGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihleGVjLT5nbG9i
YWxEYXRhKCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpCisgICAgICAg
IGFzQXJndW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IGFjdGl2YXRpb24pOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQVNT
RVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkgJiYgIWV4ZWMtPmNvZGVCbG9j
aygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIGFzQXJndW1lbnRzKGV4ZWMtPnVuY2hl
Y2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpLmpzVmFs
dWUoKSktPnRlYXJPZmYoZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9zdHJjYXQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9S
RVRVUk4oanNTdHJpbmcoZXhlYywgJkxMSU5UX09QKDIpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSkKK3sKKyAgICBMTElOVF9C
RUdJTigpOworICAgIExMSU5UX1JFVFVSTihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1ByaW1p
dGl2ZShleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1
ZSgpOworICAgIGlmICh2LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcGMgKz0gcGNb
NV0udS5vcGVyYW5kOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSlNP
YmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
by0+c3RydWN0dXJlKCk7CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5h
bWVJdGVyYXRvciA9IHN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpOworICAgIGlmICghanNQ
cm9wZXJ0eU5hbWVJdGVyYXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQcm90
b3R5cGVDaGFpbigpICE9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCisgICAgICAg
IGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUo
ZXhlYywgbyk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBKU1ZhbHVlKGpzUHJvcGVydHlOYW1l
SXRlcmF0b3IpOworICAgIExMSU5UX09QKDIpID0gSlNWYWx1ZShvKTsKKyAgICBMTElOVF9PUCgz
KSA9IFJlZ2lzdGVyOjp3aXRoSW50KDApOworICAgIExMSU5UX09QKDQpID0gUmVnaXN0ZXI6Ondp
dGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAgICAKKyAgICBwYyArPSBP
UENPREVfTEVOR1RIKG9wX2dldF9wbmFtZXMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoTExJTlRfT1AoMikuanNWYWx1ZSgpKTsKKyAg
ICBKU1N0cmluZyogcHJvcGVydHkgPSBhc1N0cmluZyhMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOwor
ICAgIGlmIChiYXNlLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5
LT52YWx1ZShleGVjKSkpKSB7CisgICAgICAgIC8vIEdvIHRvIHRhcmdldC4KKyAgICAgICAgcGMg
Kz0gcGNbNl0udS5vcGVyYW5kOworICAgIH0gLy8gRWxzZSwgZG9uJ3QgY2hhbmdlIHRoZSBQQywg
c28gdGhlIGludGVycHJldGVyIHdpbGwgcmVsb29wLgorICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCog
byA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
CisgICAgTExJTlRfT1AoMSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2Nv
cGVDaGFpbigpLT5wdXNoKG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wb3AoKSk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIHNjb3BlID0gSlNTdGF0aWNTY29wZU9iamVjdDo6
Y3JlYXRlKGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLCBMTElO
VF9PUCgzKS5qc1ZhbHVlKCksIERvbnREZWxldGUpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4o
ZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKHNjb3BlKSk7CisgICAgTExJTlRfUkVUVVJOKHNjb3Bl
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgTExJTlRfVEhST1coTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgTExJTlRfVEhST1coY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywg
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1ZykKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZmlyc3RM
aW5lID0gcGNbMl0udS5vcGVyYW5kOworICAgIGludCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFu
ZDsKKyAgICAKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMs
IHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExp
bmUpOworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICAoKlByb2Zp
bGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPndpbGxFeGVjdXRlKGV4ZWMsIExMSU5U
X09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
KCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT5kaWRFeGVjdXRlKGV4ZWMs
IExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBMTEludEhlbHBlcnNfaAorI2RlZmluZSBMTEludEhlbHBlcnNfaAor
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorCisjaWYgRU5BQkxFKExMSU5UKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0
YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCit0eXBlZGVm
IGludDY0X3QgSGVscGVyUmV0dXJuVHlwZTsKKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBl
IGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdo
ZXJlLCBpbnQgb3BlcmFuZCk7CitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJh
Y2VfdmFsdWUoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3Bl
cmFuZCk7CisKKyNkZWZpbmUgTExJTlRfSEVMUEVSX0RFQ0wobmFtZSkgXAorICAgIGV4dGVybiAi
QyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF8jI25hbWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVj
dGlvbiogcGMpCisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVM
UEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCh0
cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2Up
OworTExJTlRfSEVMUEVSX0RFQ0woc3BlY2lhbF90cmFjZSk7CitMTElOVF9IRUxQRVJfREVDTChl
bnRyeV9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxs
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNr
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0wobG9vcF9vc3IpOworTExJTlRfSEVMUEVSX0RF
Q0wocmVwbGFjZSk7CitMTElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9jcmVhdGVfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2Fy
Z3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3RoaXMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbmV3X29iamVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXdfcmVnZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcmVxKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
cmVfZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcG9zdF9kZWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pz
bnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2FkZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rpdik7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9sc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3JzaGlmdCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfdXJzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5k
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcik7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfYml0eG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaW5zdGFuY2VvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRlZmluZWQpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2lzX2Jvb2xlYW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJl
cik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pc19vYmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0
aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbik7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcmVzb2x2ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcmVzb2x2ZV9iYXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1
cmVfcHJvcGVydHlfZXhpc3RzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dp
dGhfYmFzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1
dF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X2lkKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9n
ZXRfYXJndW1lbnRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5h
bWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2RlbF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9i
eV9pbmRleCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2dldHRlcl9zZXR0ZXIpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2p0cnVlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxl
c3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9qbmdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJl
cSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfc3dpdGNoX2NoYXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRj
aF9zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
YWxsX2V2YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24p
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19w
cmltaXRpdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3B1c2hfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Rocm93KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2Vf
ZXJyb3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJvZmlsZV9kaWRfY2FsbCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5k
aWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRIZWxwZXJzX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25m
aWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9m
ZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50T2ZmbGlu
ZUFzbUNvbmZpZ19oCisjZGVmaW5lIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisKKyNpbmNsdWRl
ICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL0lubGluZUFzbS5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4
NikKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNN
X1g4NiAwCisjZW5kaWYKKworI2lmIENQVShBUk1fVEhVTUIyKQorI2RlZmluZSBPRkZMSU5FX0FT
TV9BUk12NyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCisjZW5kaWYKKwor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQg
MQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMAorI2VuZGlmCisK
KyNpZiBDUFUoQklHX0VORElBTikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAxCisj
ZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDAKKyNlbmRpZgorCisjaWYgRU5B
QkxFKExMSU5UX09TUl9UT19KSVQpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEK
KyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYg
TExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RS
QUNJTkcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMAor
I2VuZGlmCisKKyNpZiBMTElOVF9BTFdBWVNfQUxMT0NBVEVfU0xPVworI2RlZmluZSBPRkZMSU5F
X0FTTV9BTFdBWVNfQUxMT0NBVEVfU0xPVyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9B
TFdBWVNfQUxMT0NBVEVfU0xPVyAwCisjZW5kaWYKKworI2lmIENQVShBUk1fVEhVTUIyKQorI2Rl
ZmluZSBPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGFiZWwpICAgICAgICAgIFwKKyAgICAiLmds
b2JsICIgU1lNQk9MX1NUUklORyhsYWJlbCkgIlxuIiAgICAgICAgICBcCisgICAgSElERV9TWU1C
T0wobmFtZSkgIlxuIiAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICIudGh1bWJcbiIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiLnRodW1iX2Z1bmMgIiBUSFVN
Ql9GVU5DX1BBUkFNKGxhYmVsKSAiXG4iICBcCisgICAgU1lNQk9MX1NUUklORyhsYWJlbCkgIjpc
biIKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0dMT0JBTF9MQUJFTChsYWJlbCkgICAgICAg
ICBcCisgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGFiZWwpICJcbiIgICAgICAgICBcCisg
ICAgSElERV9TWU1CT0wobmFtZSkgIlxuIiAgICAgICAgICAgICAgICAgICAgICBcCisgICAgU1lN
Qk9MX1NUUklORyhsYWJlbCkgIjpcbiIKKyNlbmRpZgorCisjZW5kaWYgLy8gTExJbnRPZmZsaW5l
QXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5j
bHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgorI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2lu
Y2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0ds
b2JhbERhdGEuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCisjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVP
YmplY3QuaCIKKyNpbmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVB
c21Db25maWcuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVy
RmlsZS5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIK
KyNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNk
ZWZpbmUgT0ZGTElORV9BU01fT0ZGU0VUT0YoY2xhenosIGZpZWxkKSBPQkpFQ1RfT0ZGU0VUT0Yo
Y2xhenosIGZpZWxkKQorCitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3IgeworcHVibGljOgor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCogZHVtbXkoKTsKK307CisKK2NvbnN0IHVuc2lnbmVk
KiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkKK3sKKy8vIFRoaXMgaXMgYSBmaWxlIGdl
bmVyYXRlZCBieSBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldHNfZXh0cmFjdG9yLnJiLCBhbmQg
Y29udGFpbnMgY29kZQorLy8gdG8gY3JlYXRlIGEgdGFibGUgb2Ygb2Zmc2V0cywgc2l6ZXMsIGFu
ZCBhIGhlYWRlciBpZGVudGlmeWluZyB3aGF0IGNvbWJpbmF0aW9uIG9mCisvLyBQbGF0Zm9ybS5o
IG1hY3JvcyB3ZSBoYXZlIHNldC4gV2UgaW5jbHVkZSBpdCBpbnNpZGUgb2YgYSBtZXRob2Qgb24g
TExJbnRPZmZzZXRzRXh0cmFjdG9yCisvLyBiZWNhdXNlIHRoZSBmaWVsZHMgd2hvc2Ugb2Zmc2V0
cyB3ZSdyZSBleHRyYWN0aW5nIGFyZSBtb3N0bHkgcHJpdmF0ZS4gU28gd2UgbWFrZSB0aGVpcgor
Ly8gY2xhc3NlcyBmcmllbmRzIHdpdGggTExJbnRPZmZzZXRzRXh0cmFjdG9yLCBhbmQgaW5jbHVk
ZSB0aGUgaGVhZGVyIGhlcmUsIHRvIGdldCB0aGUgQysrCisvLyBjb21waWxlciB0byBraW5kbHkg
c3RlcCBhc2lkZSBhbmQgeWllbGQgdG8gb3VyIGJlc3QgaW50ZW50aW9ucy4KKyNpbmNsdWRlICJM
TEludERlc2lyZWRPZmZzZXRzLmgiCisgICAgcmV0dXJuIGV4dHJhY3RvclRhYmxlOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworaW50IG1haW4oaW50LCBjaGFyKiopCit7CisgICAgLy8gT3V0
IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0aW9uLCBtYWtlIHN1cmUgdGhhdCBMTEludE9mZnNldHNF
eHRyYWN0b3I6OmR1bW15KCkgaXMgbGl2ZSwKKyAgICAvLyBhbmQgdGhlIGV4dHJhY3RvclRhYmxl
IGlzIGxpdmUsIHRvby4KKyAgICBwcmludGYoIiVwXG4iLCBKU0M6OkxMSW50T2Zmc2V0c0V4dHJh
Y3Rvcjo6ZHVtbXkoKSk7CisgICAgcmV0dXJuIDA7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludFRodW5rcy5oIgorCisjaWYgRU5BQkxF
KExMSU5UKQorCisjaW5jbHVkZSAiSlNJbnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRlICJMaW5rQnVm
ZmVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIExMSW50IHsKKworc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIHZvaWQgKCp0YXJn
ZXQpKCkpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIAorICAgIC8vIEZJWE1FOiB0
aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20gbm90
IHN1cmUgSSBjYXJlLgorICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRy
KGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7Cisg
ICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJl
dHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRh
LCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhn
bG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKK30KKwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJp
dHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICBy
ZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBl
dmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAg
cmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2V2YWxfcHJv
bG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5l
cmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKTsKK30KKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgTExJbnRUaHVua3NfaAorI2RlZmluZSBMTEludFRodW5rc19o
CisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2lu
Y2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgSlNHbG9iYWxEYXRhOworCituYW1lc3BhY2UgTExJbnQgeworCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5l
cmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JD
YWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpT
R2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRo
dW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJ
bnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50VGh1bmtzX2gK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjM3OCBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjIENyYXNoIGNv
dXJzZSBvbiB0aGUgbGFuZ3VhZ2UgdGhhdCB0aGlzIGlzIHdyaXR0ZW4gaW4gKHdoaWNoIEkganVz
dCBjYWxsCisjICJhc3NlbWJseSIgZXZlbiB0aG91Z2ggaXQncyBtb3JlIHRoYW4gdGhhdCk6Cisj
CisjIC0gTW9zdGx5IGdhcy1zdHlsZSBvcGVyYW5kIG9yZGVyaW5nLiBUaGUgbGFzdCBvcGVyYW5k
IHRlbmRzIHRvIGJlIHRoZQorIyAgIGRlc3RpbmF0aW9uLiBTbyAiYSA6PSBiIiBpcyB3cml0dGVu
IGFzICJtb3YgYiwgYSIuIEJ1dCB1bmxpa2UgZ2FzLAorIyAgIGNvbXBhcmlzb25zIGFyZSBpbi1v
cmRlciwgc28gImlmIChhIDwgYikiIGlzIHdyaXR0ZW4gYXMKKyMgICAiYmlsdCBhLCBiLCAuLi4i
LgorIworIyAtICJiIiA9IGJ5dGUsICJoIiA9IDE2LWJpdCB3b3JkLCAiaSIgPSAzMi1iaXQgd29y
ZCwgInAiID0gcG9pbnRlci4KKyMgICBDdXJyZW50bHkgdGhpcyBpcyBqdXN0IDMyLWJpdCBzbyAi
aSIgYW5kICJwIiBhcmUgaW50ZXJjaGFuZ2VhYmxlCisjICAgZXhjZXB0IHdoZW4gYW4gb3Agc3Vw
cG9ydHMgb25lIGJ1dCBub3QgdGhlIG90aGVyLgorIworIyAtIEluIGdlbmVyYWwsIHZhbGlkIG9w
ZXJhbmRzIGZvciBtYWNybyBpbnZvY2F0aW9ucyBhbmQgaW5zdHJ1Y3Rpb25zIGFyZQorIyAgIHJl
Z2lzdGVycyAoZWcgInQwIiksIGFkZHJlc3NlcyAoZWcgIjRbdDBdIiksIGJhc2UtaW5kZXggYWRk
cmVzc2VzCisjICAgKGVnICI3W3QwLCB0MSwgMl0iKSwgYWJzb2x1dGUgYWRkcmVzc2VzIChlZyAi
MHhhMDAwMDAwMFtdIiksIG9yIGxhYmVscworIyAgIChlZyAiX2ZvbyIgb3IgIi5mb28iKS4gTWFj
cm8gaW52b2NhdGlvbnMgY2FuIGFsc28gdGFrZSBhbm9ueW1vdXMKKyMgICBtYWNyb3MgYXMgb3Bl
cmFuZHMuIEluc3RydWN0aW9ucyBjYW5ub3QgdGFrZSBhbm9ueW1vdXMgbWFjcm9zLgorIworIyAt
IExhYmVscyBtdXN0IGhhdmUgbmFtZXMgdGhhdCBiZWdpbiB3aXRoIGVpdGhlciAiXyIgb3IgIi4i
LiAgQSAiLiIgbGFiZWwKKyMgICBpcyBsb2NhbCBhbmQgZ2V0cyByZW5hbWVkIGJlZm9yZSBjb2Rl
IGdlbiB0byBtaW5pbWl6ZSBuYW1lc3BhY2UKKyMgICBwb2xsdXRpb24uIEEgIl8iIGxhYmVsIGlz
IGFuIGV4dGVybiBzeW1ib2wgKGkuZS4gIi5nbG9ibCIpLiBUaGUgIl8iCisjICAgbWF5IG9yIG1h
eSBub3QgYmUgcmVtb3ZlZCBkdXJpbmcgY29kZSBnZW4gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhl
IGFzbQorIyAgIGNvbnZlbnRpb25zIGZvciBDIG5hbWUgbWFuZ2xpbmcgb24gdGhlIHRhcmdldCBw
bGF0Zm9ybSBtYW5kYXRlIGEgIl8iCisjICAgcHJlZml4LgorIworIyAtIEEgIm1hY3JvIiBpcyBh
IGxhbWJkYSBleHByZXNzaW9uLCB3aGljaCBtYXkgYmUgZWl0aGVyIGFub255bW91cyBvcgorIyAg
IG5hbWVkLiBCdXQgdGhpcyBoYXMgY2F2ZWF0cy4gIm1hY3JvIiBjYW4gdGFrZSB6ZXJvIG9yIG1v
cmUgYXJndW1lbnRzLAorIyAgIHdoaWNoIG1heSBiZSBtYWNyb3Mgb3IgYW55IHZhbGlkIG9wZXJh
bmRzLCBidXQgaXQgY2FuIG9ubHkgcmV0dXJuCisjICAgY29kZS4gQnV0IHlvdSBjYW4gZG8gVHVy
aW5nLWNvbXBsZXRlIHRoaW5ncyB2aWEgY29udGludWF0aW9uIHBhc3NpbmcKKyMgICBzdHlsZTog
Im1hY3JvIGZvbyAoYSwgYikgYihhKSBlbmQgZm9vKGZvbywgZm9vKSIuIEFjdHVhbGx5LCBkb24n
dCBkbworIyAgIHRoYXQsIHNpbmNlIHlvdSdsbCBqdXN0IGNyYXNoIHRoZSBhc3NlbWJsZXIuCisj
CisjIC0gQW4gImlmIiBpcyBhIGNvbmRpdGlvbmFsIG9uIHNldHRpbmdzLiBBbnkgaWRlbnRpZmll
ciBzdXBwbGllZCBpbiB0aGUKKyMgICBwcmVkaWNhdGUgb2YgYW4gImlmIiBpcyBhc3N1bWVkIHRv
IGJlIGEgI2RlZmluZSB0aGF0IGlzIGF2YWlsYWJsZQorIyAgIGR1cmluZyBjb2RlIGdlbi4gU28g
eW91IGNhbid0IHVzZSAiaWYiIGZvciBjb21wdXRhdGlvbiBpbiBhIG1hY3JvLCBidXQKKyMgICB5
b3UgY2FuIHVzZSBpdCB0byBzZWxlY3QgZGlmZmVyZW50IHBpZWNlcyBvZiBjb2RlIGZvciBkaWZm
ZXJlbnQKKyMgICBwbGF0Zm9ybXMuCisjCisjIC0gQXJndW1lbnRzIHRvIG1hY3JvcyBmb2xsb3cg
bGV4aWNhbCBzY29waW5nIHJhdGhlciB0aGFuIGR5bmFtaWMgc2NvcGluZy4KKyMgICBDb25zdCdz
IGFsc28gZm9sbG93IGxleGljYWwgc2NvcGluZyBhbmQgbWF5IG92ZXJyaWRlIChoaWRlKSBhcmd1
bWVudHMKKyMgICBvciBvdGhlciBjb25zdHMuIEFsbCB2YXJpYWJsZXMgKGFyZ3VtZW50cyBhbmQg
Y29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBvcGVyYW5kcy4gQWRkaXRpb25hbGx5LCBh
cmd1bWVudHMgKGJ1dCBub3QgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBtYWNyb3Mu
CisKKworIyBUaGVzZSBkZWNsYXJhdGlvbnMgbXVzdCBtYXRjaCBpbnRlcnByZXRlci9SZWdpc3Rl
ckZpbGUuaC4KK2NvbnN0IENhbGxGcmFtZUhlYWRlclNpemUgPSA0OAorY29uc3QgQXJndW1lbnRD
b3VudCA9IC00OAorY29uc3QgQ2FsbGVyRnJhbWUgPSAtNDAKK2NvbnN0IENhbGxlZSA9IC0zMgor
Y29uc3QgU2NvcGVDaGFpbiA9IC0yNAorY29uc3QgUmV0dXJuUEMgPSAtMTYKK2NvbnN0IENvZGVC
bG9jayA9IC04CisKK2NvbnN0IFRoaXNBcmd1bWVudE9mZnNldCA9IC1DYWxsRnJhbWVIZWFkZXJT
aXplIC0gOAorCisjIERlY2xhcmUgc29tZSBhbGlhc2VzIGZvciB0aGUgcmVnaXN0ZXJzIHdlIHdp
bGwgdXNlLgorY29uc3QgUEMgPSB0NAorCisjIE9mZnNldHMgbmVlZGVkIGZvciByZWFzb25pbmcg
YWJvdXQgdmFsdWUgcmVwcmVzZW50YXRpb24uCitpZiBCSUdfRU5ESUFOCisgICAgY29uc3QgVGFn
T2Zmc2V0ID0gMAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSA0CitlbHNlCisgICAgY29uc3Qg
VGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSAwCitlbmQKKworIyBWYWx1
ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCitjb25zdCBJbnQzMlRhZyA9IC0xCitjb25zdCBC
b29sZWFuVGFnID0gLTIKK2NvbnN0IE51bGxUYWcgPSAtMworY29uc3QgVW5kZWZpbmVkVGFnID0g
LTQKK2NvbnN0IENlbGxUYWcgPSAtNQorY29uc3QgRW1wdHlWYWx1ZVRhZyA9IC02Citjb25zdCBE
ZWxldGVkVmFsdWVUYWcgPSAtNworY29uc3QgTG93ZXN0VGFnID0gRGVsZXRlZFZhbHVlVGFnCisK
KyMgVHlwZSBjb25zdGFudHMuCitjb25zdCBTdHJpbmdUeXBlID0gNQorY29uc3QgT2JqZWN0VHlw
ZSA9IDEwCisKKyMgVHlwZSBmbGFncyBjb25zdGFudHMuCitjb25zdCBNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkID0gMQorY29uc3QgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMgorY29uc3QgSW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDgKKworIyBIZWFwIGFsbG9jYXRpb24gY29uc3RhbnRz
LgorY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0gMworCisjIEJ5dGVjb2RlIG9w
ZXJhbmQgY29uc3RhbnRzLgorY29uc3QgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQw
MDAwMDAwCisKKyMgQ29kZSB0eXBlIGNvbnN0YW50cy4KK2NvbnN0IEdsb2JhbENvZGUgPSAwCitj
b25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0IEZ1bmN0aW9uQ29kZSA9IDIKKworIyBUaGUgaW50ZXJw
cmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0aGUgYXJndW1lbnQgY291bnQuCitjb25zdCBM
TEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRhZ09mZnNldAorCisjIFRoaXMgbXVzdCBt
YXRjaCB3dGYvVmVjdG9yLmguCitjb25zdCBWZWN0b3JTaXplT2Zmc2V0ID0gMAorY29uc3QgVmVj
dG9yQnVmZmVyT2Zmc2V0ID0gNAorCisjIFN0cmluZyBmbGFncy4KK2NvbnN0IEhhc2hGbGFnczhC
aXRCdWZmZXIgPSA2NAorCisjIFV0aWxpdGllcworbWFjcm8gY3Jhc2goKQorICAgIHN0b3JlaSAw
LCAweGJiYWRiZWVmW10KKyAgICBtb3ZlIDAsIHQwCisgICAgY2FsbCB0MAorZW5kCisKK21hY3Jv
IGFzc2VydChhc3NlcnRpb24pCisgICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgYXNzZXJ0
aW9uKC5vaykKKyAgICAgICAgY3Jhc2goKQorICAgIC5vazoKKyAgICBlbmQKK2VuZAorCittYWNy
byBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVzdGluYXRpb25SZWdpc3RlcikKKyAg
ICBpZiBBUk12NworICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxz
aWYgWDg2CisgICAgICAgIHBvcCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzZQorICAgICAg
ICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3Jl
UmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgc291cmNl
UmVnaXN0ZXIsIGxyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHB1c2ggc291cmNlUmVnaXN0ZXIK
KyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKworbWFjcm8gZGlzcGF0Y2go
YWR2YW5jZSkKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQworICAgIGptcCBbUENdCitlbmQKKwor
bWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHBjT2Zmc2V0KQorICAgIGxzaGlmdGkgMiwg
cGNPZmZzZXQKKyAgICBhZGRwIHBjT2Zmc2V0LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFj
cm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZzZXQpCisgICAgbG9hZGkgcGNPZmZzZXQsIHQwCisgICAg
ZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQwKQorZW5kCisKK21hY3JvIGRpc3BhdGNoQWZ0ZXJD
YWxsKCkKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAg
am1wIFtQQ10KK2VuZAorCittYWNybyBjQ2FsbDIoZnVuY3Rpb24sIGFyZzEsIGFyZzIpCisgICAg
aWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisg
ICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAorICAgICAgICBwb2tlIGFyZzIsIDEK
KyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5k
CisKKyMgVGhpcyBiYXJlbHkgd29ya3MuIGFyZzMgYW5kIGFyZzQgc2hvdWxkIHByb2JhYmx5IGJl
IGltbWVkaWF0ZXMuCittYWNybyBjQ2FsbDQoZnVuY3Rpb24sIGFyZzEsIGFyZzIsIGFyZzMsIGFy
ZzQpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFy
ZzIsIHQxCisgICAgICAgIG1vdmUgYXJnMywgdDIKKyAgICAgICAgbW92ZSBhcmc0LCB0MworICAg
IGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisg
ICAgICAgIHBva2UgYXJnMywgMgorICAgICAgICBwb2tlIGFyZzQsIDMKKyAgICBlbHNlCisgICAg
ICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5kCisKK21hY3JvIGNhbGxI
ZWxwZXIoaGVscGVyKQorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MCwg
UEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91
J2QgbGlrZSB0byBwcmludCBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uIGZy
b21XaGVyZQorIyBzaG91bGQgYmUgYW4gaW1tZWRpYXRlIGludGVnZXIgLSBhbnkgaW50ZWdlciB5
b3UgbGlrZTsgdXNlIGl0IHRvIGlkZW50aWZ5IHRoZSBwbGFjZSB5b3UncmUKKyMgZGVidWdnaW5n
IGZyb20uIG9wZXJhbmQgc2hvdWxkIGxpa2V3aXNlIGJlIGFuIGltbWVkaWF0ZSwgYW5kIHNob3Vs
ZCBpZGVudGlmeSB0aGUgb3BlcmFuZAorIyBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtIHlvdSdk
IGxpa2UgdG8gcHJpbnQgb3V0LgorbWFjcm8gdHJhY2VPcGVyYW5kKGZyb21XaGVyZSwgb3BlcmFu
ZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX29wZXJhbmQsIGNmciwgUEMsIGZyb21XaGVyZSwg
b3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKKyMgRGVi
dWdnaW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBsaWtlIHRvIHByaW50IHRoZSB2YWx1ZSBvZiBhbiBv
cGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbgorIyBzdHJlYW0uIFNhbWUgYXMgdHJhY2VPcGVyYW5k
KCksIGJ1dCBhc3N1bWVzIHRoYXQgdGhlIG9wZXJhbmQgaXMgYSByZWdpc3RlciwgYW5kIHByaW50
cyBpdHMKKyMgdmFsdWUuCittYWNybyB0cmFjZVZhbHVlKGZyb21XaGVyZSwgb3BlcmFuZCkKKyAg
ICBjQ2FsbDQoX2xsaW50X3RyYWNlX3ZhbHVlLCBjZnIsIFBDLCBmcm9tV2hlcmUsIG9wZXJhbmQp
CisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCittYWNybyB0cmFjZUV4
ZWN1dGlvbigpCisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcKKyAgICAgICAgY2FsbEhlbHBlcihf
bGxpbnRfdHJhY2UpCisgICAgZW5kCitlbmQKKworIyBDYWxsIGEgaGVscGVyIGZvciBjYWxsIG9w
Y29kZXMuCittYWNybyBjYWxsQ2FsbEhlbHBlcihhZHZhbmNlLCBoZWxwZXIsIGFjdGlvbikKKyAg
ICBhZGRwIGFkdmFuY2UgKiA0LCBQQywgdDAKKyAgICBzdG9yZXAgdDAsIEFyZ3VtZW50Q291bnQg
KyBUYWdPZmZzZXRbY2ZyXQorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0
MSwgY2ZyCisgICAgYWN0aW9uKHQwKQorZW5kCisKK21hY3JvIHNsb3dQYXRoRm9yQ2FsbChhZHZh
bmNlLCBoZWxwZXIpCisgICAgY2FsbENhbGxIZWxwZXIoCisgICAgICAgIGFkdmFuY2UsCisgICAg
ICAgIGhlbHBlciwKKyAgICAgICAgbWFjcm8gKGNhbGxlZSkKKyAgICAgICAgICAgIGNhbGwgY2Fs
bGVlCisgICAgICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAgICAgIGVuZCkKK2VuZAor
CittYWNybyBjaGVja1N3aXRjaFRvSklUKGluY3JlbWVudCwgYWN0aW9uKQorICAgIGlmIEpJVF9F
TkFCTEVECisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgICAgICBiYWRkaXMg
aW5jcmVtZW50LCBDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRlclt0MF0sIC5jb250aW51
ZQorICAgICAgICBhY3Rpb24oKQorICAgIC5jb250aW51ZToKKyAgICBlbmQKK2VuZAorCittYWNy
byBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAg
ICAgMSwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRD
b3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgICAgICAgICBjQ2FsbDIoX2xsaW50X2xvb3Bfb3Ny
LCBjZnIsIFBDKQorICAgICAgICAgICAgbW92ZSB0MSwgY2ZyCisgICAgICAgICAgICBidHB6IHQw
LCAucmVjb3ZlcgorICAgICAgICAgICAgam1wIHQwCisgICAgICAgIC5yZWNvdmVyOgorICAgICAg
ICAgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgICAgICBl
bmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBjaGVj
a1N3aXRjaFRvSklUKAorICAgICAgICAxMCwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAg
IGNhbGxIZWxwZXIoX2xsaW50X3JlcGxhY2UpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBh
c3NlcnROb3RDb25zdGFudChpbmRleCkKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWx0IGluZGV4
LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgb2sgZW5kKQorZW5kCisKKyMgSW5kZXgsIHRh
ZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QK
KyMgY2hhbmdlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUoaW5kZXgsIHRhZywgcGF5
bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29u
c3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5j
b25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2Fk
XSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5k
ZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAj
IHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxvYWRwIFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwg
OF0sIHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXls
b2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4IGFuZCBwYXlsb2FkIG1heSBiZSB0aGUgc2FtZSBy
ZWdpc3Rlci4gSW5kZXggbWF5IGJlIGNsb2JiZXJlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBw
YXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHRhZworICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFt0YWddLCB0YWcKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVy
ZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsc2hpZnRpIDMsIGluZGV4Cisg
ICAgYWRkcCBpbmRleCwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFt0YWddLCBwYXlsb2Fk
CisgICAgbG9hZHAgVGFnT2Zmc2V0W3RhZ10sIHRhZworLmRvbmU6CitlbmQKKworbWFjcm8gbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oaW5kZXgsIHRhZ0NoZWNrLCBwYXls
b2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25z
dGFudAorICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSkKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29u
c3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0s
IHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4
IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0
aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCkgPDwgMy4KKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgs
IDhdKQorICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2Fk
CisuZG9uZToKK2VuZAorCisjIEluZGV4IGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJl
Z2lzdGVycy4gSW5kZXggaXMgbm90IG11dGF0ZWQuIFVzZQorIyB0aGlzIGlmIHlvdSBrbm93IHdo
YXQgdGhlIHRhZyBvZiB0aGUgdmFyaWFibGUgc2hvdWxkIGJlLiBEb2luZyB0aGUgdGFnCisjIHRl
c3QgYXMgcGFydCBvZiBsb2FkaW5nIHRoZSB2YXJpYWJsZSByZWR1Y2VzIHJlZ2lzdGVyIHVzZSwg
YnV0IG1heSBub3QKKyMgYmUgZmFzdGVyIHRoYW4gZG9pbmcgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSBmb2xsb3dlZCBieSBhIGJyYW5jaCBvbiB0aGUKKyMgdGFnLgorbWFjcm8gbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBwYXlsb2FkLCBzbG93KQorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKAorICAgICAgICBpbmRleCwK
KyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykgYmluZXEgYWN0dWFsVGFnLCBleHBlY3RlZFRhZywg
c2xvdyBlbmQsCisgICAgICAgIHBheWxvYWQpCitlbmQKKworbWFjcm8gbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRVbmNoZWNrZWQoaW5kZXgsIHBheWxvYWQpCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCisgICAgICAgIGluZGV4LAorICAgICAgICBtYWNy
byAoYWN0dWFsVGFnKSBlbmQsCisgICAgICAgIHBheWxvYWQpCitlbmQKKworbWFjcm8gd3JpdGVC
YXJyaWVyKHRhZywgcGF5bG9hZCkKKyAgICAjIE5vdGhpbmcgdG8gZG8sIHNpbmNlIHdlIGRvbid0
IGhhdmUgYSBnZW5lcmF0aW9uYWwgb3IgaW5jcmVtZW50YWwgY29sbGVjdG9yLgorZW5kCisKK21h
Y3JvIHZhbHVlUHJvZmlsZSh0YWcsIHBheWxvYWQsIHByb2ZpbGUpCisgICAgc3RvcmVpIHRhZywg
VmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbcHJvZmlsZV0KKyAgICBzdG9yZWkg
cGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3Byb2ZpbGVd
CitlbmQKKworCisjIEluZGljYXRlIHRoZSBiZWdpbm5pbmcgb2YgTExJbnQuCitfbGxpbnRfYmVn
aW46CisgICAgY3Jhc2goKQorCisKKyMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIK
KworbWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQor
ICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rp
b246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9h
ZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGxbdGFyZ2V0UmVnaXN0ZXJd
LCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJs
b2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRS
ZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rl
cl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVC
bG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKwor
bWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25D
b2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCisgICAgc3RvcmVwIHNvdXJjZVJlZ2lzdGVy
LCBDb2RlQmxvY2tbY2ZyXQorZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVy
KHNvdXJjZVJlZ2lzdGVyKQorICAgICMgTm90aGluZyB0byBkbyEKK2VuZAorCisjIERvIHRoZSBi
YXJlIG1pbmltdW0gcmVxdWlyZWQgdG8gZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVh
dmUgdGhlIENvZGVCbG9jayoKKyMgaW4gdDEuIE1heSBhbHNvIHRyaWdnZXIgcHJvbG9ndWUgZW50
cnkgT1NSLgorbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIs
IG9zckhlbHBlciwgdHJhY2VIZWxwZXIpCisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJD
YWxsKHQyKQorICAgIAorICAgICMgU2V0IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3
ZSBzaG91bGQgT1NSLgorICAgIHN0b3JlcCB0MiwgUmV0dXJuUENbY2ZyXQorICAgIGlmIEVYRUNV
VElPTl9UUkFDSU5HCisgICAgICAgIGNhbGxIZWxwZXIodHJhY2VIZWxwZXIpCisgICAgZW5kCisg
ICAgY29kZUJsb2NrR2V0dGVyKHQxKQorICAgIGlmIEpJVF9FTkFCTEVECisgICAgICAgIGJhZGRp
cyA1LCBDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRlclt0MV0sIC5jb250aW51ZQorICAg
ICAgICBjQ2FsbDIob3NySGVscGVyLCBjZnIsIFBDKQorICAgICAgICBtb3ZlIHQxLCBjZnIKKyAg
ICAgICAgYnRweiB0MCwgLnJlY292ZXIKKyAgICAgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIK
KyAgICAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4odDIpCisgICAgICAgIGpt
cCB0MAorICAgIC5yZWNvdmVyOgorICAgICAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCisgICAgLmNv
bnRpbnVlOgorICAgIGVuZAorICAgIGNvZGVCbG9ja1NldHRlcih0MSkKKyAgICAKKyAgICAjIFNl
dCB1cCB0aGUgUEMuCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIHQw
CisgICAgbG9hZHAgQ29kZUJsb2NrOjpJbnN0cnVjdGlvbnM6Om1faW5zdHJ1Y3Rpb25zICsgVmVj
dG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKK2VuZAorCisjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sg
aXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgorIyBNdXN0
IGNhbGwgZGlzcGF0Y2goMCkgYWZ0ZXIgY2FsbGluZyB0aGlzLgorbWFjcm8gZnVuY3Rpb25Jbml0
aWFsaXphdGlvbihwcm9maWxlQXJnU2tpcCkKKyAgICAjIFByb2ZpbGUgdGhlIGFyZ3VtZW50cy4g
VW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBubyBjaG9pY2UgYnV0IHRvIGRvIHRoaXMuIFRoaXMKKyAg
ICAjIGNvZGUgaXMgcHJldHR5IGhvcnJlbmRvdXMgYmVjYXVzZSBvZiB0aGUgZGlmZmVyZW5jZSBp
biBvcmRlcmluZyBiZXR3ZWVuCisgICAgIyBhcmd1bWVudHMgYW5kIHZhbHVlIHByb2ZpbGVzLCB0
aGUgZGVzaXJlIHRvIGhhdmUgYSBzaW1wbGUgbG9vcC1kb3duLXRvLXplcm8KKyAgICAjIGxvb3As
IGFuZCB0aGUgZGVzaXJlIHRvIHVzZSBvbmx5IHRocmVlIHJlZ2lzdGVycyBzbyBhcyB0byBwcmVz
ZXJ2ZSB0aGUgUEMgYW5kCisgICAgIyB0aGUgY29kZSBibG9jay4gSXQgaXMgbGlrZWx5IHRoYXQg
dGhpcyBjb2RlIHNob3VsZCBiZSByZXdyaXR0ZW4gaW4gYSBtb3JlCisgICAgIyBvcHRpbWFsIHdh
eSBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGhhdmUgbW9yZSB0aGFuIGZpdmUgcmVnaXN0ZXJzIGF2
YWlsYWJsZQorICAgICMgZm9yIGFyYml0cmFyeSB1c2UgaW4gdGhlIGludGVycHJldGVyLgorICAg
IGxvYWRpIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgdDAKKyAgICBhZGRpIC1wcm9m
aWxlQXJnU2tpcCwgdDAgIyBVc2UgYWRkaSBiZWNhdXNlIHRoYXQncyB3aGF0IGhhcyB0aGUgcGVl
cGhvbGUKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWd0ZXEgdDAsIDAsIG9rIGVuZCkKKyAgICBi
dGl6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9uZQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9hcmd1
bWVudFZhbHVlUHJvZmlsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDFdLCB0MworICAgIG11bGkg
c2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDAsIHQyICMgQWFhYWFoaGhoISBOZWVkIHN0cmVuZ3RoIHJl
ZHVjdGlvbiEKKyAgICBuZWdpIHQwCisgICAgbHNoaWZ0aSAzLCB0MAorICAgIGFkZHAgdDIsIHQz
CisuYXJndW1lbnRQcm9maWxlTG9vcDoKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBU
YWdPZmZzZXQgKyA4IC0gcHJvZmlsZUFyZ1NraXAgKiA4W2NmciwgdDBdLCB0MgorICAgIHN1YnAg
c2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDMKKyAgICBzdG9yZWkgdDIsIHByb2ZpbGVBcmdTa2lwICog
c2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0
W3QzXQorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXQgKyA4IC0g
cHJvZmlsZUFyZ1NraXAgKiA4W2NmciwgdDBdLCB0MgorICAgIHN0b3JlaSB0MiwgcHJvZmlsZUFy
Z1NraXAgKiBzaXplb2YgVmFsdWVQcm9maWxlICsgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQ
YXlsb2FkT2Zmc2V0W3QzXQorICAgIGJhZGRpbnogOCwgdDAsIC5hcmd1bWVudFByb2ZpbGVMb29w
CisuYXJndW1lbnRQcm9maWxlRG9uZToKKyAgICAKKyAgICAjIENoZWNrIHN0YWNrIGhlaWdodC4K
KyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVnaXN0ZXJzW3QxXSwgdDAKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQyCisgICAgbG9hZHAgSlNHbG9iYWxE
YXRhOjppbnRlcnByZXRlclt0Ml0sIHQyICAgIyBGSVhNRTogQ2FuIGdldCB0byB0aGUgUmVnaXN0
ZXJGaWxlIGZyb20gdGhlIEpJVFN0YWNrRnJhbWUKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRk
cCB0MCwgY2ZyLCB0MAorICAgIGJwYWVxIEludGVycHJldGVyOjptX3JlZ2lzdGVyRmlsZSArIFJl
Z2lzdGVyRmlsZTo6bV9lbmRbdDJdLCB0MCwgLnN0YWNrSGVpZ2h0T0sKKworICAgICMgU3RhY2sg
aGVpZ2h0IGNoZWNrIGZhaWxlZCAtIG5lZWQgdG8gY2FsbCBhIGhlbHBlci4KKyAgICBjYWxsSGVs
cGVyKF9sbGludF9yZWdpc3Rlcl9maWxlX2NoZWNrKQorLnN0YWNrSGVpZ2h0T0s6CitlbmQKKwor
IyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3Vl
KCkgbGVhdmVzIGJlaGluZC4KK21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIGhl
bHBlcikKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAor
ICAgIGJpYWVxIHQwLCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJlbAor
ICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpICAgIyBUaGlzIGhlbHBlciBoYXMgYSBzaW1wbGUg
cHJvdG9jb2w6IHQwID0gMCA9PiBubyBlcnJvciwgdDAgIT0gMCA9PiBlcnJvcgorICAgIG1vdmUg
dDEsIGNmcgorICAgIGJ0aXogdDAsIC5jb250aW51ZQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6
Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9y
VGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRo
cm93W3QxXQorLmNvbnRpbnVlOgorICAgICMgUmVsb2FkIENvZGVCbG9jayBhbmQgUEMsIHNpbmNl
IHRoZSBoZWxwZXIgY2xvYmJlcmVkIGl0LgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENv
ZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNl
dFt0MF0sIFBDCisgICAgam1wIGRvbmVMYWJlbAorZW5kCisKK19sbGludF9wcm9ncmFtX3Byb2xv
Z3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlv
bkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3Vl
KQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2V2YWxfcHJvbG9ndWU6CisgICAgcHJvbG9n
dWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVy
LCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2go
MCkKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUo
ZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwg
X2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCwgX2xsaW50X3RyYWNlX3Byb2xvZ3Vl
X2Z1bmN0aW9uX2Zvcl9jYWxsKQorLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luOgorICAgIGZ1bmN0aW9u
SW5pdGlhbGl6YXRpb24oMCkKKyAgICBkaXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0
cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3QpCisuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbjoKKyAgICBmdW5j
dGlvbkluaXRpYWxpemF0aW9uKDEpCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1
bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2Fs
bENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9v
c3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tf
Zm9yX2NhbGwpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwg
X2xsaW50X2hlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RD
b2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hl
Y2tfZm9yX2NvbnN0cnVjdCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29u
c3RydWN0QmVnaW4sIF9sbGludF9oZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spCisKKyMgSW5z
dHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25zCisKK19sbGludF9vcF9lbnRlcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZGkgQ29kZUJs
b2NrOjptX251bVZhcnNbdDJdLCB0MgorICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZQorICAgIG1v
dmUgVW5kZWZpbmVkVGFnLCB0MAorICAgIG1vdmUgMCwgdDEKKy5vcEVudGVyTG9vcDoKKyAgICBz
dWJpIDEsIHQyCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9y
ZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBidGlueiB0MiwgLm9wRW50ZXJM
b29wCisub3BFbnRlckRvbmU6CisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfY3JlYXRl
X2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRl
QWN0aXZhdGlvbkRvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FjdGl2
YXRpb24pCisub3BDcmVhdGVBY3RpdmF0aW9uRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19s
bGludF9vcF9pbml0X2xhenlfcmVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgc3RvcmVpIDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgy
KQorCisKK19sbGludF9vcF9jcmVhdGVfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVt
cHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKKy5vcENyZWF0ZUFyZ3VtZW50c0RvbmU6CisgICAg
ZGlzcGF0Y2goMikKKworCittYWNybyBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5k
ZXgsIGNsYXNzSW5mb09mZnNldCwgc3RydWN0dXJlLCByZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNo
Miwgc2xvd0Nhc2UpCisgICAgaWYgQUxXQVlTX0FMTE9DQVRFX1NMT1cKKyAgICAgICAgam1wIHNs
b3dDYXNlCisgICAgZWxzZQorICAgICAgICBjb25zdCBvZmZzZXRPZk15U2l6ZUNsYXNzID0gSlNH
bG9iYWxEYXRhOjpoZWFwICsgSGVhcDo6bV9vYmplY3RTcGFjZSArIE1hcmtlZFNwYWNlOjptX3By
ZWNpc2VTaXplQ2xhc3NlcyArIHNpemVDbGFzc0luZGV4ICogc2l6ZW9mIE1hcmtlZFNwYWNlOjpT
aXplQ2xhc3MKKyAgICAgICAgCisgICAgICAgICMgRklYTUU6IHdlIGNhbiBnZXQgdGhlIGdsb2Jh
bCBkYXRhIGluIG9uZSBsb2FkIGZyb20gdGhlIHN0YWNrLgorICAgICAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgc2NyYXRjaDEKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFb
c2NyYXRjaDFdLCBzY3JhdGNoMQorICAgICAgICAKKyAgICAgICAgIyBHZXQgdGhlIG9iamVjdCBm
cm9tIHRoZSBmcmVlIGxpc3QuICAgIAorICAgICAgICBsb2FkcCBvZmZzZXRPZk15U2l6ZUNsYXNz
ICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0sIHJlc3Vs
dAorICAgICAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UKKyAgICAgICAgCisgICAgICAgICMgUmVt
b3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LgorICAgICAgICBsb2FkcCBbcmVzdWx0
XSwgc2NyYXRjaDIKKyAgICAgICAgc3RvcmVwIHNjcmF0Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNz
ICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0KKyAgICAK
KyAgICAgICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgICAgIGxvYWRwIGNsYXNzSW5m
b09mZnNldFtzY3JhdGNoMV0sIHNjcmF0Y2gyCisgICAgICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jl
c3VsdF0KKyAgICAgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1
bHRdCisgICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCisg
ICAgICAgIGFkZHAgc2l6ZW9mIEpTT2JqZWN0LCByZXN1bHQsIHNjcmF0Y2gxCisgICAgICAgIHN0
b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KKyAgICBl
bmQKK2VuZAorCitfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVx
IFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5m
bzo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkcCBK
U09iamVjdDo6bV9pbmhlcml0b3JJRFt0MF0sIHQyCisgICAgYnRweiB0MiwgLm9wQ3JlYXRlVGhp
c1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0lu
ZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIHQyLCB0MCwgdDEsIHQz
LCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2Vs
bFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wQ3JlYXRlVGhpc1Nsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV90aGlzKQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRPZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEKKyAg
ICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3Bf
Y29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRUaGlz
U2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Nsb3cK
KyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9v
cF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAg
ICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQxCisg
ICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNH
bG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3
T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFn
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3T2JqZWN0U2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9v
cF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2Fy
cmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX25ld19hcnJheV9idWZmZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
bmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX25ld19yZWdleHApCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbW92Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgc3RvcmVp
IHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9ub3Q6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBiaW5lcSB0MiwgQm9v
bGVhblRhZywgLm9wTm90U2xvdworICAgIHhvcmkgMSwgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4
XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9lcToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93Cisg
ICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5v
cEVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpZXEgdDAsIHQxLCB0MAorICAgIHN0
b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BFcVNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2VxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX2VxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0
MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxv
YWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BFcU51bGxJbW1lZGlhdGUK
KyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0Ym56IFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCwgdDEKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlCisub3BFcU51bGxJbW1lZGlh
dGU6CisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaWVxIHQxLCBVbmRlZmluZWRUYWcs
IHQxCisgICAgb3JpIHQyLCB0MQorLm9wRXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBC
b29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZXE6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcE5l
cVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFTbG93CisgICAgYmliIHQyLCBMb3dl
c3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaW5lcSB0MCwgdDEs
IHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5v
cE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lcSkKKyAgICBkaXNwYXRj
aCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENv
bnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
b3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQx
CisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwg
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wTmVxTnVsbE5vdEltbWVkaWF0
ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBjaW5lcSB0MSwgTnVsbFRhZywgdDIKKyAgICBj
aW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIGFuZGkgdDIsIHQxCisub3BOZXFOdWxsTm90
SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0K
KyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgz
KQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9h
ZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIs
IHQwKQorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLnNs
b3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmluZworICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0
MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJd
LCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cKKy5ub3RTdHJpbmc6Cisg
ICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkKKyAg
ICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6Cisg
ICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRfb3Bf
c3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0
LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVs
cGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0
LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9uc3RyaWN0ZXEpCisKKworX2xsaW50
X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xlc3NlcToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3NlcSkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcikKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlSW5j
U2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYmFkZGlv
IDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5jU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9w
cmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVEZWNTbG93CisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBic3ViaW8gMSwgdDEsIC5v
cFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Bvc3RfaW5jOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0
SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBiYWRkaW8gMSwg
dDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNEb25lOgorICAgIGRp
c3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9wb3N0X2RlYzoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10s
IHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdERl
Y1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYnN1YmlvIDEsIHQz
LCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVp
IHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0RGVjRG9uZToKKyAgICBkaXNw
YXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdG9fanNudW1iZXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENd
LCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBiaWVxIHQy
LCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklzSW50CisgICAgYmlhZXEgdDIsIEVtcHR5VmFsdWVU
YWcsIC5vcFRvSnNudW1iZXJTbG93Cisub3BUb0pzbnVtYmVySXNJbnQ6CisgICAgc3RvcmVpIHQy
LCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb0pzbnVtYmVyU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfdG9fanNudW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0
MSwgdDIpCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BOZWdhdGVTcmNOb3RJbnQKKyAgICBi
dGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CisgICAgbmVnaSB0MgorICAgIHN0b3Jl
aSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKy5vcE5lZ2F0ZVNyY05vdEludDoK
KyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xvdworICAgIHhvcmkgMHg4MDAwMDAw
MCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0
MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5lZ2F0
ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lZ2F0ZSkKKyAgICBkaXNwYXRj
aCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0
b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIs
IEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDMsIEludDMyVGFnLCAub3AyTm90SW50
CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHQzLCB0
MSwgdDAsIC5zbG93LCB0MikKKyAgICBkaXNwYXRjaCg1KQorCisub3AxTm90SW50OgorICAgICMg
Rmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFu
ZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBi
aWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQzLCBJbnQz
MlRhZywgLnNsb3cKKyAgICBjaTJkIHQxLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisu
b3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQxLCB0MywgZnQxCisub3AxTm90SW50UmVh
ZHk6CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgZmlpMmQgdDAsIHQyLCBmdDAKKyAgICBkb3Vi
bGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDEsIDhdCisgICAg
ZGlzcGF0Y2goNSkKKworLm9wMk5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5p
dGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNsb3cKKyAgICBjaTJkIHQw
LCBmdDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0
MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisuc2xv
dzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCg1KQorZW5kCisKK21hY3Jv
IGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorICAg
IGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmln
aHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgaW50ZWdlck9wZXJhdGlvbihsZWZ0LCByaWdo
dCwgc2xvdykKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5k
ZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKK2Vu
ZAorCitfbGxpbnRfb3BfYWRkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNs
b3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2FkZCkKKworCitfbGxpbnRfb3BfbXVsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAo
aW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGNvbnN0IHNj
cmF0Y2ggPSBpbnQzMlRhZyAgICMgV2Uga25vdyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgaW50MzJU
YWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEgY29uc3RhbnQuCisgICAgICAgICAgICBtb3ZlIHJp
Z2h0LCBzY3JhdGNoCisgICAgICAgICAgICBibXVsaW8gbGVmdCwgc2NyYXRjaCwgc2xvdworICAg
ICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRvbmUKKyAgICAgICAgICAgIGJpbHQgbGVmdCwgMCwg
c2xvdworICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdworICAgICAgICAuZG9uZToKKyAg
ICAgICAgICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAg
ICAgICAgICBzdG9yZWkgc2NyYXRjaCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAg
ICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbXVsKQorCisKK19sbGludF9vcF9zdWI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
c3ViKQorCisKK19sbGludF9vcF9kaXY6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFy
eU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNs
b3csIGluZGV4KQorICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQg
cmlnaHQsIGZ0MQorICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkg
ZnQxLCByaWdodCwgLm5vdEludAorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZz
ZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNl
dFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6
CisgICAgICAgICAgICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6
CisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJp
Z2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9kaXYpCisKKworX2xsaW50X29wX21vZDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkK
KyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGJpdE9wKG9wZXJhdGlvbiwgaGVscGVyLCBhZHZh
bmNlKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgYmlu
ZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIG9wZXJhdGlv
bih0MSwgdDAsIC5zbG93KQorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goYWR2
YW5jZSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goYWR2
YW5jZSkKK2VuZAorCitfbGxpbnRfb3BfbHNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBsc2hpZnRpIGxlZnQs
IHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9sc2hpZnQsCisgICAgICAgIDQpCisK
KworX2xsaW50X29wX3JzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgcnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfcnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9v
cF91cnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQK
KyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX3Vyc2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX2JpdGFuZDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgc2xvdykgYW5kaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
Yml0YW5kLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXR4b3I6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhv
cmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdHhvciwKKyAgICAg
ICAgNSkKKworCitfbGxpbnRfb3BfYml0b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJp
dE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIG9yaSBsZWZ0LCByaWdodCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0b3IsCisgICAgICAgIDUpCisKKworX2xsaW50
X29wX2JpdG5vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQz
KQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wQml0bm90U2xvdworICAgIG5vdGkgdDMKKyAg
ICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2JpdG5vdCkKKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBD
ZWxsVGFnLCB0MCwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0
YW5jZVNsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQorICAgIGRpc3Bh
dGNoKDIpCisKKworX2xsaW50X29wX2luc3RhbmNlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFu
Y2UgYmVoYXZpb3IuCisgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVwcmVjYXRlZC4KKyAg
ICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNo
ZWNrZWQodDEsIHQwKQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAg
IGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIAorICAgICMg
QWN0dWFsbHkgZG8gdGhlIHdvcmsuCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGxvYWRpIDRb
UENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0
MSwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0s
IHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJd
LCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFu
Y2VvZlNsb3cpCisgICAgCisgICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQy
ID0gdmFsdWUKKyAgICBtb3ZlIDEsIHQwCisub3BJbnN0YW5jZW9mTG9vcDoKKyAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90
eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNl
b2ZEb25lCisgICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQw
Cisub3BJbnN0YW5jZW9mRG9uZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
ZGlzcGF0Y2goNSkKKworLm9wSW5zdGFuY2VvZlNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2luc3RhbmNlb2YpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfdHlwZW9m
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdHlw
ZW9mKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3VuZGVmaW5l
ZCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfYm9vbGVhbikKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19udW1iZXI6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19udW1iZXIpCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfaXNfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX2lzX29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2lzX29iamVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9pc19mdW5jdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2lzX2Z1bmN0aW9uKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X2luOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
aW4pCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9za2lwKQorICAgIGRpc3Bh
dGNoKDUpCisKKworbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQorICAgICMgT3BlcmFu
ZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9h
ZC4KKyAgICAjIDhbUENdICAgUHJvcGVydHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBi
bG9jay4KKyAgICAjIDEyW1BDXSAgU3RydWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAg
YnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9i
amVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0
MF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYnBuZXEg
dDEsIDEyW1BDXSwgc2xvdworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVj
dDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEs
IDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2Fk
aSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0
b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGxvYWRpIChzaXplIC0gMSkg
KiA0W1BDXSwgdDAKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQzLCB0MCkKK2VuZAorCitfbGxpbnRf
b3BfcmVzb2x2ZV9nbG9iYWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHJlc29sdmVHbG9i
YWwoNiwgLm9wUmVzb2x2ZUdsb2JhbFNsb3cpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2
ZUdsb2JhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFs
KQorICAgIGRpc3BhdGNoKDYpCisKKworIyBHaXZlcyB5b3UgdGhlIHNjb3BlIGluIHQwLCB3aGls
ZSBhbGxvd2luZyB5b3UgdG8gb3B0aW9uYWxseSBwZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9u
IHRoZQorIyBzY29wZXMgYXMgdGhleSBhcmUgdHJhdmVyc2VkLiBzY29wZUNoZWNrKCkgaXMgY2Fs
bGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHJlZ2lzdGVyCisjIGhvbGRpbmcgdGhlIHNjb3Bl
LCBhbmQgYSByZWdpc3RlciB0aGF0IGNhbiBiZSB1c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRoYXQg
dGhpcyBkb2VzIG5vdAorIyB1c2UgdDMsIHNvIHlvdSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBpZiBu
ZWVkIGJlLgorbWFjcm8gZ2V0U2NvcGUoZGVCcnVpamluSW5kZXhPcGVyYW5kLCBzY29wZUNoZWNr
KQorICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9h
ZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisg
ICAgCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgYmluZXEgQ29kZUJsb2NrOjpt
X2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAubG9vcAorICAgIGJ0YnogQ29kZUJsb2NrOjpt
X25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9vcAorICAgIAorICAgIGxvYWRpIENvZGVCbG9j
azo6bV9hY3RpdmF0aW9uUmVnaXN0ZXJbdDFdLCB0MQorCisgICAgIyBOZWVkIHRvIGNvbmRpdGlv
bmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4
XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlvbgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQor
ICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKy5ub0FjdGl2YXRpb246Cisg
ICAgc3ViaSAxLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisubG9vcDoKKyAgICBzY29w
ZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisg
ICAgc3ViaSAxLCB0MgorICAgIGJ0aW56IHQyLCAubG9vcAorCisuZG9uZToKK2VuZAorCitfbGxp
bnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZHAgSlNHbG9i
YWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJlW3QzXSwgdDMKKyAgICBnZXRTY29wZSgKKyAgICAg
ICAgMjBbUENdLAorICAgICAgICBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpCisgICAgICAgICAgICBs
b2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3Njb3BlXSwgc2NyYXRjaAorICAgICAgICAgICAg
YnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVtzY3JhdGNoXSwgdDMsIC5vcFJlc29sdmVHbG9iYWxE
eW5hbWljU3VwZXJTbG93CisgICAgICAgIGVuZCkKKyAgICByZXNvbHZlR2xvYmFsKDcsIC5vcFJl
c29sdmVHbG9iYWxEeW5hbWljU2xvdykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xv
YmFsRHluYW1pY1N1cGVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2
ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNv
bHZlR2xvYmFsRHluYW1pY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWMpCisgICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfZ2V0X3Nj
b3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZv
bGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhb
UENdICAgSW5kZXggb2YgcmVnaXN0ZXIgaW4gdGhlIHNjb3BlLgorICAgICMgMTJbUENdICBEZSBC
cnVpamluIGluZGV4LgorICAgIGdldFNjb3BlKDEyW1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNo
KSBlbmQpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9h
ZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9i
amVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhd
LCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkg
dDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQxLCA4XQorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICB2YWx1ZVByb2ZpbGUodDMsIHQw
LCB0MSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZ2V0U2NvcGUoOFtQQ10sIG1hY3JvIChzY29wZSwgc2Ny
YXRjaCkgZW5kKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQxLCB0MywgdDIpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQz
LCB0MikKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2Fk
cCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgc3RvcmVpIHQzLCBU
YWdPZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MCwgdDEs
IDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0
MworICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVy
c1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
bG9hZGkgMTJbUENdLCB0MworICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQzKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0ds
b2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDEsIHQyLCB0MykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDIs
IHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMs
IFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X3Jlc29sdmVfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3Jlc29sdmVfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9l
bnN1cmVfcHJvcGVydHlfZXhpc3RzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQorICAgIGRp
c3BhdGNoKDUpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMp
CisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcg
Zm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisgICAgIyBvcGNvZGUuIFdlIGRvLCBo
b3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBz
aW5jZQorICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFu
ZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKKyAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9u
IHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0
CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwg
dDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAgIGJw
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2Fk
aSAzMltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MiwgdDEpCisgICAgZGlzcGF0Y2go
OSkKKworLm9wR2V0QnlJZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9i
eV9pZCkKKyAgICBkaXNwYXRjaCg5KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0
aDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkg
NFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFn
LCAub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93CisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBh
eWxvYWRPZmZzZXRbY2ZyXSwgdDIKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIEludDMyVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQor
ICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3Jh
Z2VbdDBdLCB0MworICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0
QnlJZFNsb3cKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDIsIHQwLCB0MikKKyAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQorICAgIHN0b3JlaSB0
MCwgVGFnT2Zmc2V0W3QzLCB0MV0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQx
XQorICAgIGRpc3BhdGNoKDkpCisKKy5vcFB1dEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9wdXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOSkKKworCittYWNybyBwdXRCeUlk
VHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2Fk
aSAxMltQQ10sIHQyCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQ
dXRCeUlkU2xvdworICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykK
KyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9y
YWdlW3QwXSwgdDMKKyAgICBhZGRwIHQxLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnKHQyLCB0MSwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKKyAgICBzdG9yZWkgdDEs
IFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSAyNFtQQ10sIHQxCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAg
ICBkaXNwYXRjaCg5KQorZW5kCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Q6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwg
c2xvdykgZW5kKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6Cisg
ICAgcHV0QnlJZFRyYW5zaXRpb24oCisgICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0
Y2gsIHNsb3cpCisgICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAj
IFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAgICAg
IAorICAgICAgICAgICAgbG9hZHAgMjhbUENdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQo
bWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBsb2FkcCBTdHJ1
Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGFzc2Vy
dChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICAgICAgICAgIGJpZXEgU3Ry
dWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAu
ZG9uZQorICAgICAgICAubG9vcDoKKyAgICAgICAgICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90
b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAgICAgICAg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAg
ICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCBzbG93CisgICAgICAgICAg
ICBhZGRwIDQsIHNjcmF0Y2gKKyAgICAgICAgICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5
cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKKyAgICAgICAgLmRv
bmU6CisgICAgICAgIGVuZCkKKworCitfbGxpbnRfb3BfZGVsX2J5X2lkOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X2lkKQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAg
IGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0s
IHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAu
b3BHZXRCeVZhbFNsb3cpCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZv
W3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgSW50MzJUYWcs
IHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAgYnBuZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFsU2xv
dworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MF0sIHQzCisgICAgYmlhZXEgdDEsIEpT
QXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0Mywg
dDEsIDhdLCB0MgorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zm
c2V0W3QzLCB0MSwgOF0sIHQxCisgICAgYmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlW
YWxTbG93CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkg
dDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAg
dmFsdWVQcm9maWxlKHQyLCB0MSwgdDApCisgICAgZGlzcGF0Y2goNSkKKworLm9wR2V0QnlWYWxT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3Bh
dGNoKDUpCisKKworX2xsaW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50
QnlWYWxTbG93CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEludDMyVGFn
LCB0MiwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cpCisgICAgYWRkaSAxLCB0MgorICAgIGxvYWRp
IEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisgICAgYmlhZXEgdDIsIHQx
LCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIG5lZ2kgdDIKKyAgICBsb2FkaSA0W1BDXSwg
dDMKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0s
IHQwCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQy
LCA4XSwgdDEKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3Jl
aSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEdl
dEFyZ3VtZW50QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJn
dW1lbnRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2dldF9ieV9wbmFt
ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wR2V0QnlQbmFtZVNs
b3cpCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGJwbmVxIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFt
ZVNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAg
YnBuZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwg
Lm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSAyNFtQQ10sIHQwCisgICAgbG9hZGkgW2Nmciwg
dDAsIDhdLCB0MAorICAgIHN1YmkgMSwgdDAKKyAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcjo6bV9udW1DYWNoZWFibGVTbG90c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAg
bG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbdDIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0s
IHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNw
YXRjaCg3KQorCisub3BHZXRCeVBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfZ2V0X2J5X3BuYW1lKQorICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX3B1dF9ieV92
YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93
KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQwLCBJbnQzMlRhZywgdDIsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MF0sIHQwCisgICAg
bG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QwXSwgdDAKKyAgICBicG5lcSBb
dDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93CisgICAgYmlhZXEgdDIsIEpTQXJyYXk6Om1fdmVjdG9y
TGVuZ3RoW3QxXSwgLm9wUHV0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdl
W3QxXSwgdDAKKyAgICBiaWVxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAs
IHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wUHV0QnlWYWxFbXB0eQorLm9wUHV0QnlWYWxTdG9y
ZVJlc3VsdDoKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDMsIHQxLCB0MykKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQzKQorICAgIHN0b3JlaSB0
MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdCisgICAgc3Rv
cmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhd
CisgICAgZGlzcGF0Y2goNCkKKworLm9wUHV0QnlWYWxFbXB0eToKKyAgICBhZGRpIDEsIEFycmF5
U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KKyAgICBiaWIgdDIsIEFycmF5U3RvcmFn
ZTo6bV9sZW5ndGhbdDBdLCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0Miwg
dDEKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdCisgICAgam1wIC5v
cFB1dEJ5VmFsU3RvcmVSZXN1bHQKKworLm9wUHV0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9wdXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X2RlbF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9kZWxfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9i
eV9pbmRleDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3B1dF9ieV9pbmRleCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2V0
dGVyX3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3B1dF9nZXR0ZXJfc2V0dGVyKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29w
X2xvb3A6CisgICAgbm9wCitfbGxpbnRfb3Bfam1wOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBkaXNwYXRjaEJyYW5jaCg0W1BDXSkKKworCitfbGxpbnRfb3Bfam1wX3Njb3BlczoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2ptcF9zY29wZXMp
CisgICAgZGlzcGF0Y2goMCkKKworCittYWNybyBqdW1wVHJ1ZU9yRmFsc2UoY29uZGl0aW9uT3As
IHNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDEsIEJvb2xlYW5UYWcsIHQwLCAuc2xvdykKKyAgICBjb25kaXRpb25PcCh0MCwgLnRh
cmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhb
UENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKHNsb3cpCisgICAgZGlzcGF0Y2goMCkKK2Vu
ZAorCitfbGxpbnRfb3BfbG9vcF9pZl90cnVlOgorICAgIG5vcAorX2xsaW50X29wX2p0cnVlOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3Jv
ICh2YWx1ZSwgdGFyZ2V0KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9qdHJ1ZSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKKyAgICBub3AKK19s
bGludF9vcF9qZmFsc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxz
ZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIHRhcmdldCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfamZhbHNlKQorCisKK21hY3JvIGVxdWFsTnVsbChjZWxs
SGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2Fk
aSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxIYW5kbGVyKFN0cnVjdHVyZTo6
bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKKyAgICBkaXNwYXRj
aCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuaW1tZWRpYXRl
OgorICAgIG9yaSAxLCB0MQorICAgIGltbWVkaWF0ZUhhbmRsZXIodDEsIC50YXJnZXQpCisgICAg
ZGlzcGF0Y2goMykKK2VuZAorCitfbGxpbnRfb3BfamVxX251bGw6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0Ym56
IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNy
byAodmFsdWUsIHRhcmdldCkgYmllcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKyAgICAK
KworX2xsaW50X29wX2puZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxO
dWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRieiB2YWx1ZSwgTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQp
IGJpbmVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorCisKK19sbGludF9vcF9qbmVxX3B0
cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkg
OFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BK
bmVxUHRyQnJhbmNoCisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwgLm9w
Sm5lcVB0ckZhbGxUaHJvdWdoCisub3BKbmVxUHRyQnJhbmNoOgorICAgIGRpc3BhdGNoQnJhbmNo
KDEyW1BDXSkKKy5vcEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaCg0KQorCisKK21h
Y3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUsIGhlbHBlcikKKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQyLCB0MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQy
LCB0MykKKyAgICBiaW5lcSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0Miwg
SW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5qdW1wVGFy
Z2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgYmlhIHQwLCBMb3dlc3RU
YWcsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAg
ICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MywgZnQxCisgICAgam1wIC5v
cDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MywgdDIsIGZ0
MQorLm9wMU5vdEludFJlYWR5OgorICAgIGZpaTJkIHQxLCB0MCwgZnQwCisgICAgZG91YmxlQ29t
cGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMk5vdElu
dDoKKyAgICBjaTJkIHQxLCBmdDAKKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBm
aWkyZCB0MywgdDIsIGZ0MQorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0
KQorICAgIGRpc3BhdGNoKDQpCisKKy5qdW1wVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDEy
W1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goMCkK
K2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzOgorICAgIG5vcAorX2xsaW50X29wX2psZXNz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3MpCisKKworX2xsaW50X29wX2pubGVzczoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzcykKKworCitfbGxpbnRfb3BfbG9vcF9pZl9n
cmVhdGVyOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmln
dCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0
YXJnZXQpIGJkZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfamdyZWF0ZXIpCisKKworX2xsaW50X29wX2puZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJp
bHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJkbHRlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX2puZ3JlYXRlcikKKworCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzZXE6CisgICAg
bm9wCitfbGxpbnRfb3Bfamxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFy
ZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRl
cSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzc2Vx
KQorCisKK19sbGludF9vcF9qbmxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29t
cGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0
dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNz
ZXEpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcmVxOgorICAgIG5vcAorX2xsaW50X29w
X2pncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXEgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXJlcSkKKworCitf
bGxpbnRfb3Bfam5ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUo
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdHVuIGxl
ZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcmVx
KQorCisKK19sbGludF9vcF9sb29wX2hpbnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNo
ZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9z
d2l0Y2hfaW1tOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisg
ICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQw
KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9y
YXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MyAgICMg
RklYTUU6IHdvdWxkIGJlIG5pY2UgdG8gcGVlcGhvbGUgdGhpcyEKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6OlJhcmVEYXRhOjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJP
ZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAu
b3BTd2l0Y2hJbW1Ob3RJbnQKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAK
KyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6
ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVt
cFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDMKKyAgICBs
b2FkaSBbdDMsIHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3Vn
aAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoSW1tTm90SW50
OgorICAgIGJpYiB0MSwgTG93ZXN0VGFnLCAub3BTd2l0Y2hJbW1TbG93ICAjIEdvIHRvIHNsb3cg
cGF0aCBpZiBpdCdzIGEgZG91YmxlLgorLm9wU3dpdGNoSW1tRmFsbFRocm91Z2g6CisgICAgZGlz
cGF0Y2hCcmFuY2goOFtQQ10pCisKKy5vcFN3aXRjaEltbVNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3N3aXRjaF9pbW0pCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3Bf
c3dpdGNoX2NoYXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIK
KyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwg
dDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQzCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVz
ICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVx
IHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBU
eXBlSW5mbzo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdo
CisgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0MAorICAgIGJpbmVxIFN0cmluZ0lt
cGw6Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAg
U3RyaW5nSW1wbDo6bV9kYXRhOFt0MF0sIHQxCisgICAgYnRpbnogU3RyaW5nSW1wbDo6bV9oYXNo
QW5kRmxhZ3NbdDBdLCBIYXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0Y2hDaGFyOEJpdAorICAg
IGxvYWRoIFt0MV0sIHQwCisgICAgam1wIC5vcFN3aXRjaENoYXJSZWFkeQorLm9wU3dpdGNoQ2hh
cjhCaXQ6CisgICAgbG9hZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENoYXJSZWFkeToKKyAgICBzdWJp
IFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRh
YmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENoYXJG
YWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZl
Y3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCisgICAg
YnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhP
ZmZzZXQodDEpCisKKy5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5j
aCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9zdHJpbmcpCisgICAgZGlz
cGF0Y2goMCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGJ0aXogMTJbUENdLCAub3BOZXdGdW5jVW5jaGVja2VkCisgICAgbG9hZGkgNFtQQ10sIHQx
CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BOZXdG
dW5jRG9uZQorLm9wTmV3RnVuY1VuY2hlY2tlZDoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfbmV3X2Z1bmMpCisub3BOZXdGdW5jRG9uZToKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9uZXdfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9uZXdfZnVuY19leHApCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBk
b0NhbGwoaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEK
KyAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93KQorICAg
IGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgYWRk
cCAyNCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRh
aW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNo
YWluW3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNdCisg
ICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBsb2FkaSA4
IC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtj
ZnJdCisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNdCisgICAgc3RvcmVpIHQyLCBBcmd1
bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVl
ICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFnT2Zm
c2V0W3QzXQorICAgIG1vdmUgdDMsIGNmcgorICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86Om1h
Y2hpbmVDb2RlVGFyZ2V0W3QxXQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworLm9wQ2FsbFNs
b3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfY2Fs
bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY2FsbCkK
KworCitfbGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0Nh
bGwoX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3QpCisKKworX2xsaW50X29wX2NhbGxfdmFyYXJnczoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIF9sbGludF9oZWxw
ZXJfY2FsbF92YXJhcmdzKQorCisKK19sbGludF9vcF9jYWxsX2V2YWw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIAorICAgICMgRXZhbCBpcyBleGVjdXRlZCBpbiBvbmUgb2YgdHdvIG1vZGVz
OgorICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSByZWFsbHkgaW52b2tpbmcgZXZh
bCgpIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBleGVjdXRpb24gaXMgcGVyZm9tZWQgZW50
aXJlbHkgaW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBpdAorICAgICMgICAgcmV0dXJucyB0aGUgUEMg
b2YgYSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0aGUgcmV0dXJuIHZhbHVlCisgICAgIyAg
ICB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgICMKKyAgICAjIDIpIFdlIGZpbmQgdGhhdCB3
ZSdyZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwoKSB0aGF0IGlzIG5vdAorICAgICMg
ICAgdGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVscGVyIHJldHVybnMgdGhlIFBDIG9mIHRoZSB0
aGluZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQuCisgICAgIworICAgICMgVGhp
cyBhbGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywgd2hpY2ggd291bGQgcmVxdWlyZSBhIHRv
dGFsIG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0ZSB0aGF0IGNhbm5vdCBiZSBl
YXNpbHkgcGFja2VkIGludG8gdHdvCisgICAgIyByZWdpc3RlcnMgKEMgZnVuY3Rpb25zIGNhbiBy
ZXR1cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5KToKKyAgICAjCisgICAgIyAtIFRoZSBj
YWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBtb2RpZmll
ZAorICAgICMgICBieSB0aGUgaGVscGVyLCBidXQgdGhlIGNvbnZlbnRpb24gaXMgdGhhdCBpdCBy
ZXR1cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0b3RhbGx5IGNsZWFyIGlmIHRoYXQncyBuZWNl
c3NhcnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUuCisgICAgIyAgIEJ1dCB0aGF0J3Mg
b3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRlciBzbyB3ZSBzdGljayB3aXRoIGl0Lgor
ICAgICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBoZWxwZXIgc3VjY2Vzc2Z1bGx5IGV4
ZWN1dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAjICAgdGhlIHJldHVybiB2YWx1ZSwgb3IgZGlk
IG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3IgdXMKKyAgICAjICAgdG8gY2Fs
bC4KKyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAgICAjICAgLSBUaGUgSlMgcmV0dXJuIHZhbHVl
ICh0d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisgICAgIyAgIC0gVGhlIFBDIHRvIGNhbGwuCisg
ICAgIworICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2llciB0byBqdXN0IGFsd2F5cyBoYXZl
IHRoaXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBhIFBDIHRvIGNhbGwsIGFuZCB0aGF0IFBD
IG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAorICAgICMgcmV0dXJucyB0aGUgSlMgdmFs
dWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAKKyAgICBzbG93UGF0aEZvckNhbGwoNCwg
X2xsaW50X2hlbHBlcl9jYWxsX2V2YWwpCisKKworX2xsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50
OgorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYWN0aXZh
dGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9h
ZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVl
VGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIs
IHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkCisu
b3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3RlYXJfb2ZmX2FjdGl2YXRpb24pCisub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQ6Cisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYXJndW1lbnRzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdWJpIDEsIHQwICAgIyBH
ZXQgdGhlIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcgorICAgIGJpZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZAor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCisub3BUZWFy
T2ZmQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGRvUmV0
dXJuKCkKKyAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgIGxvYWRwIENhbGxlckZyYW1l
W2Nmcl0sIGNmcgorICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAg
IHJldAorZW5kCisKK19sbGludF9vcF9yZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNo
ZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxp
bnRfb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhb
UENdLCB0MworICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdmFsdWVQcm9maWxlKHQxLCB0MCwg
dDMpCisgICAgdHJhY2VFeGVjdXRpb24oKSAjIE5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSBpdCB3
b3VsZCBjbG9iYmVyIHQxLCB0MAorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3JldF9v
YmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJ
VEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFJldE9iamVjdE9y
VGhpc05vdE9iamVjdAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAg
IGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0
VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgZG9SZXR1cm4oKQorCisub3BS
ZXRPYmplY3RPclRoaXNOb3RPYmplY3Q6CisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRf
b3BfbWV0aG9kX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIGlnbm9yZSBt
ZXRob2QgY2hlY2tzIGFuZCB1c2Ugbm9ybWFsIGdldF9ieV9pZCBvcHRpbWl6YXRpb25zLgorICAg
IGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N0cmNhdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N0cmNhdCkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF90b19wcmltaXRpdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9QcmltaXRpdmVJ
c0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJibmVxIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAu
b3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisub3BUb1ByaW1pdGl2ZUlzSW1tOgorICAgIHN0b3JlaSB0
MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9QcmltaXRpdmVTbG93Q2FzZToKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fcHJpbWl0aXZlKQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX2dldF9wbmFtZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfcG5hbWVzKQorICAgIGRpc3BhdGNoKDApICMgVGhl
IGhlbHBlciBlaXRoZXIgYWR2YW5jZXMgdGhlIFBDIG9yIGp1bXBzIHVzIHRvIHNvbWV3aGVyZSBl
bHNlLgorCisKK19sbGludF9vcF9uZXh0X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZGkgMTZbUENdLCB0MgorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQwCisgICAgYmllcSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XSwgLm9wTmV4dFBuYW1lRW5kCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcjo6bV9qc1N0cmluZ3NbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDhdLCB0Mwor
ICAgIGFkZGkgMSwgdDAKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9h
ZGkgOFtQQ10sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAgICBicG5lcSB0MSwgSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93
CisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFp
blt0Ml0sIHQwCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKKyAg
ICBidHB6IFt0MF0sIC5vcE5leHRQbmFtZVRhcmdldAorLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5
cGVMb29wOgorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFt0MV0s
IE51bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90
eXBlICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0Ml0sIHQxCisgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBhZGRw
IDQsIHQwCisgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wCisu
b3BOZXh0UG5hbWVUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMjRbUENdKQorCisub3BOZXh0
UG5hbWVFbmQ6CisgICAgZGlzcGF0Y2goNykKKworLm9wTmV4dFBuYW1lU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfbmV4dF9wbmFtZSkgIyBUaGlzIGVpdGhlciBrZWVwcyB0aGUg
UEMgd2hlcmUgaXQgd2FzIChjYXVzaW5nIHVzIHRvIGxvb3ApIG9yIHNldHMgaXQgdG8gdGFyZ2V0
LgorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3B1c2hfc2NvcGU6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX3Njb3BlKQorICAg
IGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3BvcF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3BvcF9zY29wZSkKKyAgICBkaXNwYXRj
aCgxKQorCisKK19sbGludF9vcF9wdXNoX25ld19zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfbmV3X3Njb3BlKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX2NhdGNoOgorICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQg
dXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKKyAgICAjIG1h
Y2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gp
LCBhbmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2Vl
IF9sbGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRoZSBKSVQgdGhyb3dpbmcgcHJvdG9j
b2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0aHJvd2luZworICAgICMgY29k
ZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93aW5nIHRvIHRoZSBpbnRlcnByZXRl
ciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENG
b3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9i
YWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVy
UENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQ
YXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiAr
IFRhZ09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9u
ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxE
YXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAgICAgIAorICAgIGxvYWRpIDRbUENdLCB0
MgorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0
MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdHJhY2VFeGVjdXRpb24oKSAgIyBUaGlzIG5l
ZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIgdDAsIHQxLCB0
MiwgdDMgYWJvdmUuCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3c6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvdykKKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3I6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvd19yZWZl
cmVuY2VfZXJyb3IpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfanNyOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBhZGRpIDMgKiA0LCBQQywg
dDEKKyAgICBzdG9yZWkgdDEsIFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENd
KQorCisKK19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkcCBbY2ZyLCB0MCwgOF0sIFBDCisgICAgZGlzcGF0Y2goMCkKKwor
CitfbGxpbnRfb3BfZGVidWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9kZWJ1ZykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcm9m
aWxlX3dpbGxfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tG
cmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5v
cFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmls
ZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisK
KworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIHQwCisg
ICAgYnRweiBbdDBdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERvbmU6CisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhyb3dfZnJvbV9o
ZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJwcmV0
ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMpLCBzbworICAgICMgdGhlIHRocm93
IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0byBo
ZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcg
cHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisg
ICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1w
IEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworX2xsaW50X3Ro
cm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0
ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQor
ICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGpt
cCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKKyMgTGFzdGx5
LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0
IGFsbCBvcGNvZGVzLgorIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVuIHVz
aW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAorIyBhcyBtdWNoLgorCittYWNybyBu
b3RTdXBwb3J0ZWQoKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGNyYXNoKCkKKyAg
ICBlbHNlCisgICAgICAgICMgV2Ugc2hvdWxkIHVzZSB3aGF0ZXZlciB0aGUgc21hbGxlc3QgcG9z
c2libGUgaW5zdHJ1Y3Rpb24gaXMsIGp1c3QgdG8KKyAgICAgICAgIyBlbnN1cmUgdGhhdCB0aGVy
ZSBpcyBhIGdhcCBiZXR3ZWVuIGluc3RydWN0aW9uIGxhYmVscy4gSWYgbXVsdGlwbGUKKyAgICAg
ICAgIyBzbWFsbGVzdCBpbnN0cnVjdGlvbnMgZXhpc3QsIHdlIHNob3VsZCBwaWNrIHRoZSBvbmUg
dGhhdCBpcyBtb3N0CisgICAgICAgICMgbGlrZWx5IHJlc3VsdCBpbiBleGVjdXRpb24gYmVpbmcg
aGFsdGVkLiBDdXJyZW50bHkgdGhhdCBpcyB0aGUgYnJlYWsKKyAgICAgICAgIyBpbnN0cnVjdGlv
biBvbiBhbGwgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBpbnRlcmVzdGVkIGluLiAoQnJlYWsgaXMgaW50
MworICAgICAgICAjIG9uIEludGVsLCB3aGljaCBpcyAxIGJ5dGUsIGFuZCBia3B0IG9uIEFSTXY3
LCB3aGljaCBpcyAyIGJ5dGVzLikKKyAgICAgICAgYnJlYWsKKyAgICBlbmQKK2VuZAorCitfbGxp
bnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfY3VzdG9tX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfY3VzdG9tX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfY3VzdG9tX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9p
ZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0
dGVyX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0
dGVyX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0
dGVyX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9wcm90
bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3NlbGY6CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9zdHJpbmdfbGVuZ3RoOgorICAgIG5vdFN1
cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0
ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3JlcGxhY2U6CisgICAgbm90U3VwcG9ydGVkKCkK
KworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uOgorICAgIG5vdFN1cHBvcnRlZCgpCisK
KworIyBJbmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50LgorX2xsaW50X2VuZDoKKyAgICBjcmFzaCgp
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworI2lmIEVOQUJM
RShMTElOVCkKKworI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUg
PHd0Zi9JbmxpbmVBU00uaD4KKworLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxp
bmVhc20sIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUgYXNzZW1ibHkgY29kZQorLy8gZm9yIHRo
ZSBpbnRlcnByZXRlciwgYXMgY29tcGlsZWQgZnJvbSBMb3dMZXZlbEludGVycHJldGVyLmFzbS4K
KyNpbmNsdWRlICJMTEludEFzc2VtYmx5LmgiCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTG93TGV2ZWxJbnRl
cnByZXRlcl9oCisjZGVmaW5lIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJPcGNvZGUuaCIK
KworI2RlZmluZSBMTElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29kZSwgbGVuZ3RoKSBleHRlcm4g
IkMiIHZvaWQgbGxpbnRfIyNvcGNvZGUoKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoTExJTlRf
SU5TVFJVQ1RJT05fREVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJVQ1RJT05fREVDTAorCitleHRl
cm4gIkMiIHZvaWQgbGxpbnRfYmVnaW4oKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9lbmQoKTsK
K2V4dGVybiAiQyIgdm9pZCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZv
aWQgbGxpbnRfZXZhbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2dlbmVyaWNf
cmV0dXJuX3BvaW50KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJf
dHJhbXBvbGluZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3Ry
YW1wb2xpbmUoKTsKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExvd0xl
dmVsSW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXJtdjcucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXJtdjcucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hcm12Ny5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDMyIEBACisjIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJvcHQiCisK
K2NsYXNzIE5vZGUKKyAgZGVmIGFybVY3U2luZ2xlCisgICAgZG91YmxlT3BlcmFuZCA9IGFybVY3
T3BlcmFuZAorICAgIHJhaXNlICJCb2d1cyByZWdpc3RlciBuYW1lICN7ZG91YmxlT3BlcmFuZH0i
IHVubGVzcyBkb3VibGVPcGVyYW5kID1+IC9eZC8KKyAgICAicyIgKyAoJH4ucG9zdF9tYXRjaC50
b19pICogMikudG9fcworICBlbmQKK2VuZAorCitjbGFzcyBTcGVjaWFsUmVnaXN0ZXIgPCBOb0No
aWxkcmVuCisgIGRlZiBpbml0aWFsaXplKG5hbWUpCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAor
ICAKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIEBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJl
c3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5k
CisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lz
dGVyPworICAgIHRydWUKKyAgZW5kCitlbmQKKworQVJNdjdfRVhUUkFfR1BSUyA9IFtTcGVjaWFs
UmVnaXN0ZXIubmV3KCJyOSIpLCBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyOCIpLCBTcGVjaWFsUmVn
aXN0ZXIubmV3KCJyMyIpXQorQVJNdjdfRVhUUkFfRlBSUyA9IFtTcGVjaWFsUmVnaXN0ZXIubmV3
KCJkNyIpXQorQVJNdjdfU0NSQVRDSF9GUFIgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJkOCIpCisK
K2RlZiBhcm1WN01vdmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJlbnRseSB3
ZSBvbmx5IGhhbmRsZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1vdi9tb3Z0
IGZvciB0aGUgY29tcGxleCBvbmVzLgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2Cisg
ICAgJGFzbS5wdXRzICJtb3Z3ICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje3ZhbHVlfSIK
KyAgZWxzaWYgKH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20ucHV0cyAi
bXZuICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje352YWx1ZX0iCisgIGVsc2UKKyAgICAk
YXNtLnB1dHMgIm1vdncgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9LCBcIyN7dmFsdWUgJiAweGZm
ZmZ9IgorICAgIGlmICh2YWx1ZSAmIDB4ZmZmZjAwMDApICE9IDAKKyAgICAgICRhc20ucHV0cyAi
bW92dCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0sIFwjI3t2YWx1ZSA+PiAxNn0iCisgICAgZW5k
CisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIGFybVY3T3BlcmFuZAorICAg
IGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgInIwIgorICAgIHdo
ZW4gInQxIiwgImExIiwgInIxIgorICAgICAgInIxIgorICAgIHdoZW4gInQyIiwgImEyIgorICAg
ICAgInIyIgorICAgIHdoZW4gImEzIgorICAgICAgInIzIgorICAgIHdoZW4gInQzIgorICAgICAg
InI0IgorICAgIHdoZW4gInQ0IgorICAgICAgInI3IgorICAgIHdoZW4gImNmciIKKyAgICAgICJy
NSIKKyAgICB3aGVuICJsciIKKyAgICAgICJsciIKKyAgICB3aGVuICJzcCIKKyAgICAgICJzcCIK
KyAgICBlbHNlCisgICAgICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIEFSTXY3IGF0
ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVn
aXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQw
IiwgImZyIgorICAgICAgImQwIgorICAgIHdoZW4gImZ0MSIKKyAgICAgICJkMSIKKyAgICB3aGVu
ICJmdDIiCisgICAgICAiZDIiCisgICAgd2hlbiAiZnQzIgorICAgICAgImQzIgorICAgIHdoZW4g
ImZ0NCIKKyAgICAgICJkNCIKKyAgICB3aGVuICJmdDUiCisgICAgICAiZDUiCisgICAgZWxzZQor
ICAgICAgcmFpc2UgIkJhZCByZWdpc3RlciAje25hbWV9IGZvciBBUk12NyBhdCAje2NvZGVPcmln
aW5TdHJpbmd9IgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVm
IGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJJbnZhbGlkIGltbWVkaWF0ZSAje3ZhbHVlfSBhdCAj
e2NvZGVPcmlnaW5TdHJpbmd9IiBpZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAiXCMj
e3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBkZWYgYXJtVjdPcGVyYW5k
CisgICAgcmFpc2UgIkJhZCBvZmZzZXQgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgaWYgb2Zmc2V0
LnZhbHVlIDwgLTB4ZmYgb3Igb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAiWyN7YmFzZS5hcm1W
N09wZXJhbmR9LCBcIyN7b2Zmc2V0LnZhbHVlfV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJ
bmRleAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2UgIkJhZCBvZmZzZXQgYXQgI3tjb2Rl
T3JpZ2luU3RyaW5nfSIgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAiWyN7YmFzZS5hcm1WN09w
ZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGVTaGlmdH1dIgorICBl
bmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIGFybVY3T3BlcmFuZAorICAg
IHJhaXNlICJVbmNvbnZlcnRlZCBhYnNvbHV0ZSBhZGRyZXNzIGF0ICN7Y29kZU9yaWdpblN0cmlu
Z30iCisgIGVuZAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgYnJhbmNoIG9wcy4gRm9yIGV4YW1w
bGU6CisjCisjIGJhZGRpeiBmb28sIGJhciwgYmF6CisjCisjIHdpbGwgYmVjb21lOgorIworIyBh
ZGRpIGZvbywgYmFyCisjIGJ6IGJhegorIworCitkZWYgYXJtVjdMb3dlckJyYW5jaE9wcyhsaXN0
KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIGlmIG5v
ZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdoZW4g
L15iKGFkZGl8c3ViaXxvcml8YWRkcCkvCisgICAgICAgIG9wID0gJDEKKyAgICAgICAgYnJhbmNo
ID0gImIiICsgJH4ucG9zdF9tYXRjaAorICAgICAgICAKKyAgICAgICAgY2FzZSBvcAorICAgICAg
ICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAgICAgICAgb3AgPSAiYWRkaXMiCisgICAgICAgIHdo
ZW4gInN1YmkiCisgICAgICAgICAgb3AgPSAic3ViaXMiCisgICAgICAgIHdoZW4gIm9yaSIKKyAg
ICAgICAgICBvcCA9ICJvcmlzIgorICAgICAgICBlbmQKKyAgICAgICAgCisgICAgICAgIG5ld0xp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgb3AsIG5vZGUub3BlcmFuZHNb
MC4uLTJdKQorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmln
aW4sIGJyYW5jaCwgW25vZGUub3BlcmFuZHNbLTFdXSkKKyAgICAgIHdoZW4gImJtdWxpbyIKKyAg
ICAgICAgdG1wMSA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICB0bXAy
ID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInNtdWxsaSIsIFtub2RlLm9wZXJhbmRzWzBd
LCBub2RlLm9wZXJhbmRzWzFdLCBub2RlLm9wZXJhbmRzWzFdLCB0bXAxXSkKKyAgICAgICAgbmV3
TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAicnNoaWZ0aSIsIFtub2Rl
Lm9wZXJhbmRzWy0yXSwgSW1tZWRpYXRlLm5ldyhub2RlLmNvZGVPcmlnaW4sIDMxKSwgdG1wMl0p
CisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgImJp
bmVxIiwgW3RtcDEsIHRtcDIsIG5vZGUub3BlcmFuZHNbLTFdXSkKKyAgICAgIHdoZW4gL15ibXVs
aS8KKyAgICAgICAgY29uZGl0aW9uID0gJH4ucG9zdF9tYXRjaAorICAgICAgICBuZXdMaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtdWxpIiwgbm9kZS5vcGVyYW5kc1sw
Li4tMl0pCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdp
biwgImJ0aSIgKyBjb25kaXRpb24sIFtub2RlLm9wZXJhbmRzWy0yXSwgbm9kZS5vcGVyYW5kc1st
MV1dKQorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgIGVuZAorICAg
IGVsc2UKKyAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgIGVuZAorICB9CisgIG5ld0xpc3QKK2Vu
ZAorCisjCisjIExvd2VyaW5nIG9mIHNoaWZ0IG9wcy4gRm9yIGV4YW1wbGU6CisjCisjIGxzaGlm
dGkgZm9vLCBiYXIKKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIGFuZGkgZm9vLCAzMSwgdG1wCisj
IGxzaGlmdGkgdG1wLCBiYXIKKyMKKworZGVmIGFybVY3U2FuaXRpemVTaGlmdChvcGVyYW5kLCBs
aXN0KQorICByZXR1cm4gb3BlcmFuZCBpZiBvcGVyYW5kLmltbWVkaWF0ZT8KKyAgCisgIHRtcCA9
IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCA6Z3ByKQorICBsaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJhbmRpIiwgW29wZXJhbmQsIEltbWVkaWF0ZS5uZXco
b3BlcmFuZC5jb2RlT3JpZ2luLCAzMSksIHRtcF0pCisgIHRtcAorZW5kCisKK2RlZiBhcm1WN0xv
d2VyU2hpZnRPcHMobGlzdCkKKyAgbmV3TGlzdCA9IFtdCisgIGxpc3QuZWFjaCB7CisgICAgfCBu
b2RlIHwKKyAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICBjYXNlIG5vZGUub3Bj
b2RlCisgICAgICB3aGVuICJsc2hpZnRpIiwgInJzaGlmdGkiLCAidXJzaGlmdGkiCisgICAgICAg
IGlmIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgW2FybVY3U2FuaXRpemVTaGlm
dChub2RlLm9wZXJhbmRzWzBdLCBuZXdMaXN0KSwgbm9kZS5vcGVyYW5kc1sxXV0pCisgICAgICAg
IGVsc2UKKyAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmln
aW4sIG5vZGUub3Bjb2RlLCBbbm9kZS5vcGVyYW5kc1swXSwgYXJtVjdTYW5pdGl6ZVNoaWZ0KG5v
ZGUub3BlcmFuZHNbMV0sIG5ld0xpc3QpLCBub2RlLm9wZXJhbmRzWzJdXSkKKyAgICAgICAgICBy
YWlzZSAiV3JvbmcgbnVtYmVyIG9mIG9wZXJhbmRzIGZvciBzaGlmdCBhdCAje25vZGUuY29kZU9y
aWdpblN0cmluZ30iIHVubGVzcyBub2RlLm9wZXJhbmRzLnNpemUgPT0gMworICAgICAgICBlbmQK
KyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICBlbmQKKyAgICBlbHNl
CisgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICBlbmQKKyAgfQorICBuZXdMaXN0CitlbmQKKwor
IworIyBMb3dlcmluZyBvZiBtYWxmb3JtZWQgYWRkcmVzc2VzLiBGb3IgZXhhbXBsZToKKyMKKyMg
bG9hZHAgMTAwMDBbZm9vXSwgYmFyCisjCisjIHdpbGwgYmVjb21lOgorIworIyBtb3ZlIDEwMDAw
LCB0bXAKKyMgYWRkcCBmb28sIHRtcAorIyBsb2FkcCAwW3RtcF0sIGJhcgorIworCitjbGFzcyBO
b2RlCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAg
IG1hcENoaWxkcmVuIHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBub2RlLmFybVY3TG93ZXJNYWxm
b3JtZWRBZGRyZXNzZXNSZWN1cnNlKGxpc3QpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBB
ZGRyZXNzCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQor
ICAgIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIG9yIG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAg
ICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICBsaXN0IDw8IEluc3RydWN0
aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFtvZmZzZXQsIHRtcF0pCisgICAgICBsaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAiYWRkcCIsIFtiYXNlLCB0bXBdKQorICAgICAg
QWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgdG1wLCBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIDAp
KQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQmFz
ZUluZGV4CisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQor
ICAgIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4s
IDpncHIpCisgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92ZSIs
IFtvZmZzZXQsIHRtcF0pCisgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2lu
LCAiYWRkcCIsIFtiYXNlLCB0bXBdKQorICAgICAgQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCB0
bXAsIGluZGV4LCBzY2FsZSwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkKKyAgICBlbHNl
CisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVz
cworICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICB0
bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbYWRkcmVzcywgdG1wXSkKKyAgICBBZGRyZXNzLm5ldyhj
b2RlT3JpZ2luLCB0bXAsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCisgIGVuZAorZW5k
CisKK2RlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzKGxpc3QpCisgIG5ld0xpc3QgPSBb
XQorICBsaXN0LmVhY2ggeworICAgIHwgbm9kZSB8CisgICAgbmV3TGlzdCA8PCBub2RlLmFybVY3
TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNSZWN1cnNlKG5ld0xpc3QpCisgIH0KKyAgbmV3TGlzdAor
ZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWFsZm9ybWVkIGFkZHJlc3NlcyBpbiBkb3VibGUgbG9h
ZHMgYW5kIHN0b3Jlcy4gRm9yIGV4YW1wbGU6CisjCisjIGxvYWRkIFtmb28sIGJhciwgOF0sIGJh
egorIworIyBiZWNvbWVzOgorIworIyBsZWFwIFtmb28sIGJhciwgOF0sIHRtcAorIyBsb2FkZCBb
dG1wXSwgYmF6CisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIGFybVY3RG91YmxlQWRkcmVzcyhsaXN0
KQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBhcm1WN0Rv
dWJsZUFkZHJlc3MobGlzdCkKKyAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisg
ICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgImxlYXAiLCBbc2VsZiwgdG1w
XSkKKyAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCB0bXAsIEltbWVkaWF0ZS5uZXcoY29kZU9y
aWdpbiwgMCkpCisgIGVuZAorZW5kCisKK2RlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2Vz
RG91YmxlKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9kZSB8
CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgY2FzZSBub2RlLm9wY29kZQor
ICAgICAgd2hlbiAibG9hZGQiCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5v
ZGUuY29kZU9yaWdpbiwgImxvYWRkIiwgW25vZGUub3BlcmFuZHNbMF0uYXJtVjdEb3VibGVBZGRy
ZXNzKG5ld0xpc3QpLCBub2RlLm9wZXJhbmRzWzFdXSkKKyAgICAgIHdoZW4gInN0b3JlZCIKKyAg
ICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAic3RvcmVk
IiwgW25vZGUub3BlcmFuZHNbMF0sIG5vZGUub3BlcmFuZHNbMV0uYXJtVjdEb3VibGVBZGRyZXNz
KG5ld0xpc3QpXSkKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICBl
bmQKKyAgICBlbHNlCisgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICBlbmQKKyAgfQorICBuZXdM
aXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBtaXNwbGFjZWQgaW1tZWRpYXRlcy4gRm9yIGV4
YW1wbGU6CisjCisjIHN0b3JlaSAwLCBbZm9vXQorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbW92
ZSAwLCB0bXAKKyMgc3RvcmVpIHRtcCwgW2Zvb10KKyMKKworZGVmIGFybVY3TG93ZXJNaXNwbGFj
ZWRJbW1lZGlhdGVzKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwg
bm9kZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgY2FzZSBub2RlLm9w
Y29kZQorICAgICAgd2hlbiAic3RvcmVpIiwgInN0b3JlcCIKKyAgICAgICAgb3BlcmFuZHMgPSBu
b2RlLm9wZXJhbmRzCisgICAgICAgIG5ld09wZXJhbmRzID0gW10KKyAgICAgICAgb3BlcmFuZHMu
ZWFjaCB7CisgICAgICAgICAgfCBvcGVyYW5kIHwKKyAgICAgICAgICBpZiBvcGVyYW5kLmlzX2E/
IEltbWVkaWF0ZQorICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4s
IDpncHIpCisgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNv
ZGVPcmlnaW4sICJtb3ZlIiwgW29wZXJhbmQsIHRtcF0pCisgICAgICAgICAgICBuZXdPcGVyYW5k
cyA8PCB0bXAKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdPcGVyYW5kcyA8PCBvcGVy
YW5kCisgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgbmV3T3BlcmFuZHMpCisgICAg
ICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgZW5kCisgICAgZWxzZQorICAg
ICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMg
TG93ZXJpbmcgb2YgbWFsZm9ybWVkIGltbWVkaWF0ZXMgZXhjZXB0IHdoZW4gdXNlZCBpbiBhICJt
b3ZlIiBpbnN0cnVjdGlvbi4KKyMgRm9yIGV4YW1wbGU6CisjCisjIGFkZHAgNjQyNjQxLCBmb28K
KyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUgNjQyNjQxLCB0bXAKKyMgYWRkcCB0bXAsIGZv
bworIworCitjbGFzcyBOb2RlCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1Jl
Y3Vyc2UobGlzdCkKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IG5vZGUgfAorICAgICAgbm9k
ZS5hcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkKKyAgICB9CisgIGVu
ZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlh
dGVzUmVjdXJzZShsaXN0KQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4
CisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkKKyAgICBz
ZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBkZWYgYXJtVjdMb3dl
ck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgc2VsZgorICBlbmQKK2VuZAor
CitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVj
dXJzZShsaXN0KQorICAgIGlmIHZhbHVlIDwgMCBvciB2YWx1ZSA+IDI1NQorICAgICAgdG1wID0g
VG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
Y29kZU9yaWdpbiwgIm1vdmUiLCBbc2VsZiwgdG1wXSkKKyAgICAgIHRtcAorICAgIGVsc2UKKyAg
ICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJ
bW1lZGlhdGVzKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9k
ZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgY2FzZSBub2RlLm9wY29k
ZQorICAgICAgd2hlbiAibW92ZSIKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICB3aGVu
ICJhZGRpIiwgImFkZHAiLCAiYWRkaXMiLCAic3ViaSIsICJzdWJwIiwgInN1YmlzIgorICAgICAg
ICBpZiBub2RlLm9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBhbmQKKyAgICAgICAgICAgIG5v
ZGUub3BlcmFuZHNbMF0udmFsdWUgPCAwIGFuZAorICAgICAgICAgICAgbm9kZS5vcGVyYW5kc1sw
XS52YWx1ZSA+PSAyNTUgYW5kCisgICAgICAgICAgICBub2RlLm9wZXJhbmRzLnNpemUgPT0gMgor
ICAgICAgICAgIGlmIG5vZGUub3Bjb2RlID1+IC9hZGQvCisgICAgICAgICAgICBuZXdPcGNvZGUg
PSAic3ViIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICBuZXdPcGNvZGUgPSAiYWRkIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KKyAgICAgICAgICBlbmQK
KyAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5l
d09wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSW1tZWRpYXRl
Lm5ldygtbm9kZS5vcGVyYW5kc1swXS52YWx1ZSldICsgbm9kZS5vcGVyYW5kc1sxLi4tMV0pCisg
ICAgICAgIGVsc2UKKyAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUuYXJtVjdMb3dlck1hbGZvcm1l
ZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QpCisgICAgICAgIGVuZAorICAgICAgd2hlbiAibXVs
aSIKKyAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAg
ICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgbmV3TGlzdCA8PCBJ
bnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzBd
LCB0bXBdKQorICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9y
aWdpbiwgIm11bGkiLCBbdG1wXSArIG5vZGUub3BlcmFuZHNbMS4uLTFdKQorICAgICAgICBlbHNl
CisgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVz
UmVjdXJzZShuZXdMaXN0KQorICAgICAgICBlbmQKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlz
dCA8PCBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0KQor
ICAgICAgZW5kCisgICAgZWxzZQorICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0K
KyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWlzcGxhY2VkIGFkZHJlc3Nlcy4g
Rm9yIGV4YW1wbGU6CisjCisjIGFkZGkgZm9vLCBbYmFyXQorIworIyB3aWxsIGJlY29tZToKKyMK
KyMgbG9hZGkgW2Jhcl0sIHRtcAorIyBhZGRpIGZvbywgdG1wCisjIHN0b3JlaSB0bXAsIFtiYXJd
CisjCisjIEFub3RoZXIgZXhhbXBsZToKKyMKKyMgYWRkaSBbZm9vXSwgYmFyCisjCisjIHdpbGwg
YmVjb21lOgorIworIyBsb2FkaSBbZm9vXSwgdG1wCisjIGFkZGkgdG1wLCBiYXIKKyMKKworZGVm
IGFybVY3QXNSZWdpc3RlcihwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFuZCwgc3VmZml4LCBuZWVk
U3RvcmUpCisgIHJldHVybiBvcGVyYW5kIHVubGVzcyBvcGVyYW5kLmFkZHJlc3M/CisgIAorICB0
bXAgPSBUbXAubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgaWYgc3VmZml4ID09ICJkIiB0aGVuIDpm
cHIgZWxzZSA6Z3ByIGVuZCkKKyAgcHJlTGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5j
b2RlT3JpZ2luLCAibG9hZCIgKyBzdWZmaXgsIFtvcGVyYW5kLCB0bXBdKQorICBpZiBuZWVkU3Rv
cmUKKyAgICBwb3N0TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAi
c3RvcmUiICsgc3VmZml4LCBbdG1wLCBvcGVyYW5kXSkKKyAgZW5kCisgIHRtcAorZW5kCisKK2Rl
ZiBhcm1WN0FzUmVnaXN0ZXJzKHByZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kcywgc3VmZml4KQor
ICBuZXdPcGVyYW5kcyA9IFtdCisgIG9wZXJhbmRzLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBv
cGVyYW5kLCBpbmRleCB8CisgICAgbmV3T3BlcmFuZHMgPDwgYXJtVjdBc1JlZ2lzdGVyKHByZUxp
c3QsIHBvc3RMaXN0LCBvcGVyYW5kLCBzdWZmaXgsIGluZGV4ID09IG9wZXJhbmRzLnNpemUgLSAx
KQorICB9CisgIG5ld09wZXJhbmRzCitlbmQKKworZGVmIGFybVY3TG93ZXJNaXNwbGFjZWRBZGRy
ZXNzZXMobGlzdCkKKyAgbmV3TGlzdCA9IFtdCisgIGxpc3QuZWFjaCB7CisgICAgfCBub2RlIHwK
KyAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICBwb3N0SW5zdHJ1Y3Rpb25zID0g
W10KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdoZW4gImFkZGkiLCAiYWRkcCIsICJh
ZGRpcyIsICJhbmRpIiwgImFuZHAiLCAibHNoaWZ0aSIsICJtdWxpIiwgIm5lZ2kiLCAibm90aSIs
ICJvcmkiLCAib3JpcyIsCisgICAgICAgICJvcnAiLCAicnNoaWZ0aSIsICJ1cnNoaWZ0aSIsICJz
dWJpIiwgInN1YnAiLCAic3ViaXMiLCAieG9yaSIsICJ4b3JwIiwgL15iaS8sIC9eYnAvLCAvXmJ0
aS8sCisgICAgICAgIC9eYnRwLywgL15jaS8sIC9eY3AvLCAvXnRpLworICAgICAgICBuZXdMaXN0
IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcm1WN0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUu
b3BlcmFuZHMsICJpIikpCisgICAgICB3aGVuICJiYmVxIiwgImJibmVxIiwgImJiYSIsICJiYmFl
cSIsICJiYmIiLCAiYmJiZXEiLCAiYnRibyIsICJidGJ6IiwgImJ0Ym56IiwgInRieiIsICJ0Ym56
IiwKKyAgICAgICAgInRibyIKKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9k
ZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9w
Y29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJtVjdBc1JlZ2lzdGVy
cyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAiYiIpKQorICAgICAg
d2hlbiAiYmJndCIsICJiYmd0ZXEiLCAiYmJsdCIsICJiYmx0ZXEiLCAiYnRicyIsICJ0YnMiCisg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3Ry
dWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImJzIikpCisgICAgICB3aGVuICJhZGRkIiwgImRpdmQi
LCAic3ViZCIsICJtdWxkIiwgInNxcnRkIiwgL15iZC8KKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJtVjdBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRz
LCAiZCIpKQorICAgICAgd2hlbiAiam1wIiwgImNhbGwiCisgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFthcm1WN0FzUmVnaXN0ZXIobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5k
c1swXSwgInAiLCBmYWxzZSldKQorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IG5vZGUK
KyAgICAgIGVuZAorICAgICAgbmV3TGlzdCArPSBwb3N0SW5zdHJ1Y3Rpb25zCisgICAgZWxzZQor
ICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMK
KyMgTG93ZXJpbmcgb2YgcmVnaXN0ZXIgcmV1c2UgaW4gY29tcGFyZSBpbnN0cnVjdGlvbnMuIEZv
ciBleGFtcGxlOgorIworIyBjaWVxIHQwLCB0MSwgdDAKKyMKKyMgd2lsbCBiZWNvbWU6CisjCisj
IG1vdiB0bXAsIHQwCisjIGNpZXEgdG1wLCB0MSwgdDAKKyMKKworZGVmIGFybVY3TG93ZXJSZWdp
c3RlclJldXNlKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9k
ZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgY2FzZSBub2RlLm9wY29k
ZQorICAgICAgd2hlbiAiY2llcSIsICJjaW5lcSIsICJjaWEiLCAiY2lhZXEiLCAiY2liIiwgImNp
YmVxIiwgImNpZ3QiLCAiY2lndGVxIiwgImNpbHQiLCAiY2lsdGVxIiwKKyAgICAgICAgImNwZXEi
LCAiY3BuZXEiLCAiY3BhIiwgImNwYWVxIiwgImNwYiIsICJjcGJlcSIsICJjcGd0IiwgImNwZ3Rl
cSIsICJjcGx0IiwgImNwbHRlcSIsCisgICAgICAgICJ0aW8iLCAidGlzIiwgInRpeiIsICJ0aW56
IiwgInRibyIsICJ0YnMiLCAidGJ6IiwgInRibnoiCisgICAgICAgIGlmIG5vZGUub3BlcmFuZHMu
c2l6ZSA9PSAyCisgICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1swXSA9PSBub2RlLm9wZXJhbmRz
WzFdCisgICAgICAgICAgICB0bXAgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAg
ICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1v
dmUiLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSkKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFt0bXAsIG5vZGUub3Bl
cmFuZHNbMV1dKQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQor
ICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgcmFpc2UgIldyb25nIG51bWJl
ciBvZiBhcmd1bWVudHMgYXQgI3tub2RlLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgbm9kZS5v
cGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgICBpZiBub2RlLm9wZXJhbmRzWzBdID09IG5vZGUu
b3BlcmFuZHNbMl0KKyAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6
Z3ByKQorICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3Jp
Z2luLCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzBdLCB0bXBdKQorICAgICAgICAgICAgbmV3TGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgW3RtcCwg
bm9kZS5vcGVyYW5kc1sxXSwgbm9kZS5vcGVyYW5kc1syXV0pCisgICAgICAgICAgZWxzaWYgbm9k
ZS5vcGVyYW5kc1sxXSA9PSBub2RlLm9wZXJhbmRzWzJdCisgICAgICAgICAgICB0bXAgPSBUbXAu
bmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1sxXSwgdG1w
XSkKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdp
biwgbm9kZS5vcGNvZGUsIFtub2RlLm9wZXJhbmRzWzBdLCB0bXAsIG5vZGUub3BlcmFuZHNbMl1d
KQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAg
IGVuZAorICAgICAgICBlbmQKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisg
ICAgICBlbmQKKyAgICBlbHNlCisgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICBlbmQKKyAgfQor
ICBuZXdMaXN0CitlbmQKKworIworIyBMZWEgc3VwcG9ydC4KKyMKKworY2xhc3MgQWRkcmVzcwor
ICBkZWYgYXJtVjdFbWl0TGVhKGRlc3RpbmF0aW9uKQorICAgIGlmIGRlc3RpbmF0aW9uID09IGJh
c2UKKyAgICAgICRhc20ucHV0cyAiYWRkcyAje2Rlc3RpbmF0aW9uLmFybVY3T3BlcmFuZH0sIFwj
I3tvZmZzZXQudmFsdWV9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiYWRkcyAje2Rlc3Rp
bmF0aW9uLmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09wZXJhbmR9LCBcIyN7b2Zmc2V0LnZh
bHVlfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBhcm1W
N0VtaXRMZWEoZGVzdGluYXRpb24pCisgICAgcmFpc2UgIk1hbGZvcm1lZCBCYXNlSW5kZXgsIG9m
ZnNldCBzaG91bGQgYmUgemVybyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb2Zmc2V0
LnZhbHVlID09IDAKKyAgICAkYXNtLnB1dHMgImFkZC53ICN7ZGVzdGluYXRpb24uYXJtVjdPcGVy
YW5kfSwgI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwj
I3tzY2FsZVNoaWZ0fSIKKyAgZW5kCitlbmQKKworIyBGSVhNRTogd2UgY291bGQgc3VwcG9ydCBB
YnNvbHV0ZUFkZHJlc3MgZm9yIGxlYSwgYnV0IHdlIGRvbid0LgorCisjCisjIEFjdHVhbCBsb3dl
cmluZyBjb2RlIGZvbGxvd3MuCisjCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBsb3dlckFSTXY3
CisgICAgbXlMaXN0ID0gQGxpc3QKKyAgICAKKyAgICAjIFZlcmlmeSB0aGF0IHdlIHdpbGwgb25s
eSBzZWUgaW5zdHJ1Y3Rpb25zIGFuZCBsYWJlbHMuCisgICAgbXlMaXN0LmVhY2ggeworICAgICAg
fCBub2RlIHwKKyAgICAgIHVubGVzcyBub2RlLmlzX2E/IEluc3RydWN0aW9uIG9yCisgICAgICAg
ICAgbm9kZS5pc19hPyBMYWJlbCBvcgorICAgICAgICAgIG5vZGUuaXNfYT8gTG9jYWxMYWJlbCBv
cgorICAgICAgICAgIG5vZGUuaXNfYT8gU2tpcAorICAgICAgICByYWlzZSAiVW5leHBlY3RlZCAj
e25vZGUuaW5zcGVjdH0gYXQgI3tub2RlLmNvZGVPcmlnaW59IiAKKyAgICAgIGVuZAorICAgIH0K
KyAgICAKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyQnJhbmNoT3BzKG15TGlzdCkKKyAgICBteUxp
c3QgPSBhcm1WN0xvd2VyU2hpZnRPcHMobXlMaXN0KQorICAgIG15TGlzdCA9IGFybVY3TG93ZXJN
YWxmb3JtZWRBZGRyZXNzZXMobXlMaXN0KQorICAgIG15TGlzdCA9IGFybVY3TG93ZXJNYWxmb3Jt
ZWRBZGRyZXNzZXNEb3VibGUobXlMaXN0KQorICAgIG15TGlzdCA9IGFybVY3TG93ZXJNaXNwbGFj
ZWRJbW1lZGlhdGVzKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWFsZm9ybWVkSW1t
ZWRpYXRlcyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1pc3BsYWNlZEFkZHJlc3Nl
cyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdMb3dlclJlZ2lzdGVyUmV1c2UobXlMaXN0KQor
ICAgIG15TGlzdCA9IGFzc2lnblJlZ2lzdGVyc1RvVGVtcG9yYXJpZXMobXlMaXN0LCA6Z3ByLCBB
Uk12N19FWFRSQV9HUFJTKQorICAgIG15TGlzdCA9IGFzc2lnblJlZ2lzdGVyc1RvVGVtcG9yYXJp
ZXMobXlMaXN0LCA6ZnByLCBBUk12N19FWFRSQV9GUFJTKQorICAgIG15TGlzdC5lYWNoIHsKKyAg
ICAgIHwgbm9kZSB8CisgICAgICBub2RlLmxvd2VyKCJBUk12NyIpCisgICAgfQorICBlbmQKK2Vu
ZAorCitkZWYgYXJtVjdPcGVyYW5kcyhvcGVyYW5kcykKKyAgb3BlcmFuZHMubWFwe3x2fCB2LmFy
bVY3T3BlcmFuZH0uam9pbigiLCAiKQorZW5kCisKK2RlZiBhcm1WN0ZsaXBwZWRPcGVyYW5kcyhv
cGVyYW5kcykKKyAgYXJtVjdPcGVyYW5kcyhbb3BlcmFuZHNbLTFdXSArIG9wZXJhbmRzWzAuLi0y
XSkKK2VuZAorCitkZWYgZW1pdEFybVY3Q29tcGFjdChvcGNvZGUyLCBvcGNvZGUzLCBvcGVyYW5k
cykKKyAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgJGFzbS5wdXRzICIje29wY29kZTN9ICN7
YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgZWxzZQorICAgIHJhaXNlIHVubGVz
cyBvcGVyYW5kcy5zaXplID09IDIKKyAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8g
UmVnaXN0ZXJJRAorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgJGFz
bS5wdXRzICIje29wY29kZTN9ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgZWxz
ZQorICAgICAgJGFzbS5wdXRzICIje29wY29kZTJ9ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3Bl
cmFuZHMpfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworZGVmIGVtaXRBcm1WNyhvcGNvZGUsIG9w
ZXJhbmRzKQorICBpZiBvcGVyYW5kcy5zaXplID09IDMKKyAgICAkYXNtLnB1dHMgIiN7b3Bjb2Rl
fSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgIGVsc2UKKyAgICByYWlzZSB1
bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVy
YW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3Bl
cmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgZW5kCitlbmQKKworZGVmIGVtaXRBcm1WN0RvdWJs
ZUJyYW5jaChicmFuY2hPcGNvZGUsIG9wZXJhbmRzKQorICAkYXNtLnB1dHMgInZjbXBlLmY2NCAj
e2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgJGFzbS5wdXRzICJ2bXJzIGFwc3Jf
bnpjdiwgZnBzY3IiCisgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0u
YXNtTGFiZWx9IgorZW5kCisKK2RlZiBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICB2YWx1ZSA9
IG9wZXJhbmRzWzBdCisgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICB3aGVuIDIKKyAgICBtYXNrID0g
SW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtMSkKKyAgd2hlbiAzCisgICAgbWFzayA9IG9wZXJh
bmRzWzFdCisgIGVsc2UKKyAgICByYWlzZSAiRXhwZWN0ZWQgMiBvciAzIG9wZXJhbmRzIGJ1dCBn
b3QgI3tvcGVyYW5kcy5zaXplfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICBlbmQKKyAgCisg
IGlmIG1hc2suaXNfYT8gSW1tZWRpYXRlIGFuZCBtYXNrLnZhbHVlID09IC0xCisgICAgJGFzbS5w
dXRzICJ0c3QgI3t2YWx1ZS5hcm1WN09wZXJhbmR9LCAje3ZhbHVlLmFybVY3T3BlcmFuZH0iCisg
IGVsc2lmIG1hc2suaXNfYT8gSW1tZWRpYXRlCisgICAgJGFzbS5wdXRzICJ0c3QudyAje3ZhbHVl
LmFybVY3T3BlcmFuZH0sICN7bWFzay5hcm1WN09wZXJhbmR9IgorICBlbHNlCisgICAgJGFzbS5w
dXRzICJ0c3QgI3t2YWx1ZS5hcm1WN09wZXJhbmR9LCAje21hc2suYXJtVjdPcGVyYW5kfSIKKyAg
ZW5kCitlbmQKKworZGVmIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsIGNvZGUpCisgICRhc20u
cHV0cyAibW92cyAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sIFwjMCIKKyAgJGFzbS5wdXRz
ICJjbXAgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3Bl
cmFuZH0iCisgICRhc20ucHV0cyAiaXQgI3tjb2RlfSIKKyAgJGFzbS5wdXRzICJtb3Yje2NvZGV9
ICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgXCMxIgorZW5kCisKK2RlZiBlbWl0QXJtVjdU
ZXN0U2V0KG9wZXJhbmRzLCBjb2RlKQorICAkYXNtLnB1dHMgIm1vdnMgI3tvcGVyYW5kc1stMV0u
YXJtVjdPcGVyYW5kfSwgXCMwIgorICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICAkYXNtLnB1
dHMgIml0ICN7Y29kZX0iCisgICRhc20ucHV0cyAibW92I3tjb2RlfSAje29wZXJhbmRzWy0xXS5h
cm1WN09wZXJhbmR9LCBcIzEiCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24KKyAgZGVmIGxvd2Vy
QVJNdjcKKyAgICAkYXNtLmNvbW1lbnQgY29kZU9yaWdpblN0cmluZworICAgIGNhc2Ugb3Bjb2Rl
CisgICAgd2hlbiAiYWRkaSIsICJhZGRwIiwgImFkZGlzIgorICAgICAgaWYgb3Bjb2RlID09ICJh
ZGRpcyIKKyAgICAgICAgc3VmZml4ID0gInMiCisgICAgICBlbHNlCisgICAgICAgIHN1ZmZpeCA9
ICIiCisgICAgICBlbmQKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNb
MF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19h
PyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdp
c3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAgYW5kIHN1ZmZpeC5lbXB0
eT8KKyAgICAgICAgICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAg
ICAgICRhc20ucHV0cyAibW92ICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAg
ICAgJGFzbS5wdXRzICJhZGRzICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAg
IGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19h
PyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdp
c3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklE
CisgICAgICAgICRhc20ucHV0cyAiYWRkcyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRz
KX0iCisgICAgICBlbHNlCisgICAgICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQor
ICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAg
ICAgICAgICAgICRhc20ucHV0cyAiYWRkcyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRz
KX0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAkYXNtLnB1dHMgImFk
ZCN7c3VmZml4fSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIGVu
ZAorICAgICAgZW5kCisgICAgd2hlbiAiYW5kaSIsICJhbmRwIgorICAgICAgZW1pdEFybVY3Q29t
cGFjdCgiYW5kcyIsICJhbmQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJvcmkiLCAib3JwIgorICAg
ICAgZW1pdEFybVY3Q29tcGFjdCgib3JycyIsICJvcnIiLCBvcGVyYW5kcykKKyAgICB3aGVuICJv
cmlzIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgib3JycyIsICJvcnJzIiwgb3BlcmFuZHMpCisg
ICAgd2hlbiAieG9yaSIsICJ4b3JwIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgiZW9ycyIsICJl
b3IiLCBvcGVyYW5kcykKKyAgICB3aGVuICJsc2hpZnRpIgorICAgICAgZW1pdEFybVY3Q29tcGFj
dCgibHNscyIsICJsc2xzIiwgb3BlcmFuZHMpCisgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgIGVt
aXRBcm1WN0NvbXBhY3QoImFzcnMiLCAiYXNycyIsIG9wZXJhbmRzKQorICAgIHdoZW4gInVyc2hp
ZnRpIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgibHNycyIsICJsc3JzIiwgb3BlcmFuZHMpCisg
ICAgd2hlbiAibXVsaSIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMiBvciBvcGVyYW5kc1sw
XSA9PSBvcGVyYW5kc1syXSBvciBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICBl
bWl0QXJtVjcoIm11bHMiLCBvcGVyYW5kcykKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRz
ICJtb3YgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3Bl
cmFuZH0iCisgICAgICAgICRhc20ucHV0cyAibXVscyAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFu
ZH0sICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJh
bmR9IgorICAgICAgZW5kCisgICAgd2hlbiAic3ViaSIsICJzdWJwIiwgInN1YmlzIgorICAgICAg
ZW1pdEFybVY3Q29tcGFjdCgic3VicyIsICJzdWJzIiwgb3BlcmFuZHMpCisgICAgd2hlbiAibmVn
aSIKKyAgICAgICRhc20ucHV0cyAicnNicyAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7
b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgXCMwIgorICAgIHdoZW4gIm5vdGkiCisgICAgICAk
YXNtLnB1dHMgIm12bnMgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBd
LmFybVY3T3BlcmFuZH0iCisgICAgd2hlbiAibG9hZGkiLCAibG9hZHAiCisgICAgICAkYXNtLnB1
dHMgImxkciAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAic3Rv
cmVpIiwgInN0b3JlcCIKKyAgICAgICRhc20ucHV0cyAic3RyICN7YXJtVjdPcGVyYW5kcyhvcGVy
YW5kcyl9IgorICAgIHdoZW4gImxvYWRiIgorICAgICAgJGFzbS5wdXRzICJsZHJiICN7YXJtVjdG
bGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJsb2FkYnMiCisgICAgICAkYXNt
LnB1dHMgImxkcnNiLncgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdo
ZW4gInN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAic3RyYiAje2FybVY3T3BlcmFuZHMob3BlcmFu
ZHMpfSIKKyAgICB3aGVuICJsb2FkaCIKKyAgICAgICRhc20ucHV0cyAibGRyaCAje2FybVY3Rmxp
cHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAibG9hZGhzIgorICAgICAgJGFzbS5w
dXRzICJsZHJzaC53ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVu
ICJzdG9yZWgiCisgICAgICAkYXNtLnB1dHMgInN0cmggI3thcm1WN09wZXJhbmRzKG9wZXJhbmRz
KX0iCisgICAgd2hlbiAibG9hZGQiCisgICAgICAkYXNtLnB1dHMgInZsZHIuNjQgI3thcm1WN0Zs
aXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gInN0b3JlZCIKKyAgICAgICRhc20u
cHV0cyAidnN0ci42NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJhZGRk
IgorICAgICAgZW1pdEFybVY3KCJ2YWRkLmY2NCIsIG9wZXJhbmRzKQorICAgIHdoZW4gImRpdmQi
CisgICAgICBlbWl0QXJtVjcoInZkaXYuZjY0Iiwgb3BlcmFuZHMpCisgICAgd2hlbiAic3ViZCIK
KyAgICAgIGVtaXRBcm1WNygidnN1Yi5mNjQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJtdWxkIgor
ICAgICAgZW1pdEFybVY3KCJ2bXVsLmY2NCIsIG9wZXJhbmRzKQorICAgIHdoZW4gInNxcnRkIgor
ICAgICAgJGFzbS5wdXRzICJ2c3FydC5mNjQgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5k
cyl9IgorICAgIHdoZW4gImNpMmQiCisgICAgICAkYXNtLnB1dHMgInZtb3YgI3tvcGVyYW5kc1sx
XS5hcm1WN1NpbmdsZX0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICRhc20u
cHV0cyAidmN2dC5mNjQuczMyICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1sxXS5hcm1WN1NpbmdsZX0iCisgICAgd2hlbiAiYmRlcSIKKyAgICAgIGVtaXRBcm1WN0RvdWJs
ZUJyYW5jaCgiYmVxIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRuZXEiCisgICAgICAkYXNtLnB1
dHMgInZjbXBlLmY2NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRh
c20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2NyIgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2Nh
bExhYmVsLnVuaXF1ZSgiYmRuZXEiKQorICAgICAgJGFzbS5wdXRzICJidnMgI3tMYWJlbFJlZmVy
ZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICRhc20u
cHV0cyAiYm5lICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93
ZXIoIkFSTXY3IikKKyAgICB3aGVuICJiZGd0IgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNo
KCJiZ3QiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGd0ZXEiCisgICAgICBlbWl0QXJtVjdEb3Vi
bGVCcmFuY2goImJnZSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkbHQiCisgICAgICBlbWl0QXJt
VjdEb3VibGVCcmFuY2goImJtaSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkbHRlcSIKKyAgICAg
IGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmxzIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRlcXVu
IgorICAgICAgJGFzbS5wdXRzICJ2Y21wZS5mNjQgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAu
LjFdKX0iCisgICAgICAkYXNtLnB1dHMgInZtcnMgYXBzcl9uemN2LCBmcHNjciIKKyAgICAgICRh
c20ucHV0cyAiYnZzICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJi
ZXEgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmRuZXF1biIKKyAgICAgIGVt
aXRBcm1WN0RvdWJsZUJyYW5jaCgiYm5lIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRndHVuIgor
ICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJiaGkiLCBvcGVyYW5kcykKKyAgICB3aGVuICJi
ZGd0ZXF1biIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYnBsIiwgb3BlcmFuZHMpCisg
ICAgd2hlbiAiYmRsdHVuIgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJibHQiLCBvcGVy
YW5kcykKKyAgICB3aGVuICJiZGx0ZXF1biIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgi
YmxlIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYnRkMmkiCisgICAgICAjIEZJWE1FOiBtYXkgYmUg
YSBnb29kIGlkZWEgdG8ganVzdCBnZXQgcmlkIG9mIHRoaXMgaW5zdHJ1Y3Rpb24sIHNpbmNlIHRo
ZSBpbnRlcnByZXRlcgorICAgICAgIyBjdXJyZW50bHkgZG9lcyBub3QgdXNlIGl0LgorICAgICAg
cmFpc2UgIkFSTXY3IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGNvZGUgeWV0LCAje2NvZGVPcmln
aW59IgorICAgIHdoZW4gInRkMmkiCisgICAgICAkYXNtLnB1dHMgInZjdnQuczMyLmY2NCAje0FS
TXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9
IgorICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tB
Uk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0iCisgICAgd2hlbiAiYmNkMmkiCisgICAgICAk
YXNtLnB1dHMgInZjdnQuczMyLmY2NCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSwg
I3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3Bl
cmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0i
CisgICAgICAkYXNtLnB1dHMgInZjdnQuZjY0LnMzMiAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3
T3BlcmFuZH0sICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJtVjdTaW5nbGV9IgorICAgICAgZW1pdEFy
bVY3RG91YmxlQnJhbmNoKCJibmUiLCBbQVJNdjdfU0NSQVRDSF9GUFIsIG9wZXJhbmRzWzBdLCBv
cGVyYW5kc1syXV0pCisgICAgICAkYXNtLnB1dHMgInRzdCAje29wZXJhbmRzWzFdLmFybVY3T3Bl
cmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICRhc20ucHV0cyAiYmVx
ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gIm1vdmR6IgorICAgICAgIyBGSVhN
RTogZWl0aGVyIHN1cHBvcnQgdGhpcyBvciByZW1vdmUgaXQuCisgICAgICByYWlzZSAiQVJNdjcg
ZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wY29kZSB5ZXQsICN7Y29kZU9yaWdpbn0iCisgICAgd2hl
biAicG9wIgorICAgICAgJGFzbS5wdXRzICJwb3AgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9
IgorICAgIHdoZW4gInB1c2giCisgICAgICAkYXNtLnB1dHMgInB1c2ggI3tvcGVyYW5kc1swXS5h
cm1WN09wZXJhbmR9IgorICAgIHdoZW4gIm1vdmUiLCAic3hpMnAiLCAienhpMnAiCisgICAgICBp
ZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgYXJtVjdNb3ZlSW1tZWRpYXRl
KG9wZXJhbmRzWzBdLnZhbHVlLCBvcGVyYW5kc1sxXSkKKyAgICAgIGVsc2UKKyAgICAgICAgJGFz
bS5wdXRzICJtb3YgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgZW5k
CisgICAgd2hlbiAibm9wIgorICAgICAgJGFzbS5wdXRzICJub3AiCisgICAgd2hlbiAiYmllcSIs
ICJicGVxIiwgImJiZXEiCisgICAgICBpZiBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFu
ZHNbMF0KKyAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9
LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgICBlbHNpZiBJbW1lZGlhdGUubmV3
KG5pbCwgMCkgPT0gb3BlcmFuZHNbMV0KKyAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5k
c1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICBl
bHNlCisgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4x
XSl9IgorICAgICAgZW5kCisgICAgICAkYXNtLnB1dHMgImJlcSAje29wZXJhbmRzWzJdLmFzbUxh
YmVsfSIKKyAgICB3aGVuICJiaW5lcSIsICJicG5lcSIsICJiYm5lcSIKKyAgICAgIGlmIEltbWVk
aWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAkYXNtLnB1dHMgInRzdCAj
e29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIK
KyAgICAgIGVsc2lmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1sxXQorICAgICAg
ICAkYXNtLnB1dHMgInRzdCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNb
MF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJjbXAgI3th
cm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICBlbmQKKyAgICAgICRhc20ucHV0
cyAiYm5lICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJpYSIsICJicGEiLCAi
YmJhIgorICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFd
KX0iCisgICAgICAkYXNtLnB1dHMgImJoaSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3
aGVuICJiaWFlcSIsICJicGFlcSIsICJiYmFlcSIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJt
VjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5wdXRzICJiaHMgI3tvcGVy
YW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmliIiwgImJwYiIsICJiYmIiCisgICAgICAk
YXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRh
c20ucHV0cyAiYmxvICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJpYmVxIiwg
ImJwYmVxIiwgImJiYmVxIgorICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9w
ZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgImJscyAje29wZXJhbmRzWzJdLmFzbUxh
YmVsfSIKKyAgICB3aGVuICJiaWd0IiwgImJwZ3QiLCAiYmJndCIKKyAgICAgICRhc20ucHV0cyAi
Y21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5wdXRzICJi
Z3QgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmlndGVxIiwgImJwZ3RlcSIs
ICJiYmd0ZXEiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNb
MC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmdlICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9Igor
ICAgIHdoZW4gImJpbHQiLCAiYnBsdCIsICJiYmx0IgorICAgICAgJGFzbS5wdXRzICJjbXAgI3th
cm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgImJsdCAje29w
ZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWx0ZXEiLCAiYnBsdGVxIiwgImJibHRl
cSIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9
IgorICAgICAgJGFzbS5wdXRzICJibGUgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hl
biAiYnRpeiIsICJidHB6IiwgImJ0YnoiCisgICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQor
ICAgICAgJGFzbS5wdXRzICJiZXEgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgorICAgIHdoZW4g
ImJ0aW56IiwgImJ0cG56IiwgImJ0Ym56IgorICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykK
KyAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKKyAgICB3aGVu
ICJidGlvIiwgImJ0cG8iLCAiYnRibyIKKyAgICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisg
ICAgICAkYXNtLnB1dHMgImJ2cyAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCisgICAgd2hlbiAi
YnRpcyIsICJidHBzIiwgImJ0YnMiCisgICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICAg
ICAgJGFzbS5wdXRzICJibWkgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgorICAgIHdoZW4gImpt
cCIKKyAgICAgIGlmIG9wZXJhbmRzWzBdLmxhYmVsPworICAgICAgICAkYXNtLnB1dHMgImIgI3tv
cGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAibW92
IHBjLCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICBlbmQKKyAgICB3aGVuICJj
YWxsIgorICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAgICRhc20ucHV0cyAiYmx4
ICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMg
ImJseCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICBlbmQKKyAgICB3aGVuICJi
cmVhayIKKyAgICAgICRhc20ucHV0cyAiYmtwdCIKKyAgICB3aGVuICJyZXQiCisgICAgICAkYXNt
LnB1dHMgImJ4IGxyIgorICAgIHdoZW4gImNpZXEiLCAiY3BlcSIKKyAgICAgIGVtaXRBcm1WN0Nv
bXBhcmUob3BlcmFuZHMsICJlcSIpCisgICAgd2hlbiAiY2luZXEiLCAiY3BuZXEiCisgICAgICBl
bWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibmUiKQorICAgIHdoZW4gImNpYSIsICJjcGEiCisg
ICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiaGkiKQorICAgIHdoZW4gImNpYWVxIiwg
ImNwYWVxIgorICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImhzIikKKyAgICB3aGVu
ICJjaWIiLCAiY3BiIgorICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImxvIikKKyAg
ICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMs
ICJscyIpCisgICAgd2hlbiAiY2lndCIsICJjcGd0IgorICAgICAgZW1pdEFybVY3Q29tcGFyZShv
cGVyYW5kcywgImd0IikKKyAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAgZW1pdEFy
bVY3Q29tcGFyZShvcGVyYW5kcywgImdlIikKKyAgICB3aGVuICJjaWx0IiwgImNwbHQiCisgICAg
ICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibHQiKQorICAgIHdoZW4gImNpbHRlcSIsICJj
cGx0ZXEiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibGUiKQorICAgIHdoZW4g
InRpbyIsICJ0Ym8iCisgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAidnMiKQorICAg
IHdoZW4gInRpcyIsICJ0YnMiCisgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAibWki
KQorICAgIHdoZW4gInRpeiIsICJ0YnoiCisgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRz
LCAiZXEiKQorICAgIHdoZW4gInRpbnoiLCAidGJueiIKKyAgICAgIGVtaXRBcm1WN1Rlc3RTZXQo
b3BlcmFuZHMsICJuZSIpCisgICAgd2hlbiAicGVlayIKKyAgICAgICRhc20ucHV0cyAibGRyICN7
b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgW3NwLCBcIyN7b3BlcmFuZHNbMF0udmFsdWUgKiA0
fV0iCisgICAgd2hlbiAicG9rZSIKKyAgICAgICRhc20ucHV0cyAic3RyICN7b3BlcmFuZHNbMV0u
YXJtVjdPcGVyYW5kfSwgW3NwLCBcIyN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fV0iCisgICAgd2hl
biAiZmlpMmQiCisgICAgICAkYXNtLnB1dHMgInZtb3YgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJh
bmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVy
YW5kfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRz
WzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1swXS5hcm1WN09wZXJhbmR9IgorICAgIHdoZW4gImJvIgorICAgICAgJGFzbS5wdXRzICJidnMg
I3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYnMiCisgICAgICAkYXNtLnB1dHMg
ImJtaSAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJieiIKKyAgICAgICRhc20u
cHV0cyAiYmVxICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJueiIKKyAgICAg
ICRhc20ucHV0cyAiYm5lICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgIHdoZW4gImxlYWki
LCAibGVhcCIKKyAgICAgIG9wZXJhbmRzWzBdLmFybVY3RW1pdExlYShvcGVyYW5kc1sxXSkKKyAg
ICB3aGVuICJzbXVsbGkiCisgICAgICByYWlzZSAiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyB0
byBzbXVsbCBpbiAje3NlbGYuaW5zcGVjdH0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNz
IG9wZXJhbmRzLmxlbmd0aCA9PSA0CisgICAgICAkYXNtLnB1dHMgInNtdWxsICN7b3BlcmFuZHNb
Ml0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1szXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRz
WzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICBlbHNl
CisgICAgICByYWlzZSAiVW5oYW5kbGVkIG9wY29kZSAje29wY29kZX0gYXQgI3tjb2RlT3JpZ2lu
U3RyaW5nfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYXNtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNzIgQEAKKyMhL3Vz
ci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
JDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVp
cmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3Jl
cXVpcmUgInNlbGZfaGFzaCIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3Jt
IgorCitjbGFzcyBBc3NlbWJsZXIKKyAgZGVmIGluaXRpYWxpemUob3V0cCkKKyAgICBAb3V0cCA9
IG91dHAKKyAgICBAc3RhdGUgPSA6Y3BwCisgICAgQGNvbW1lbnRTdGF0ZSA9IDpub25lCisgICAg
QGNvbW1lbnQgPSBuaWwKKyAgZW5kCisgIAorICBkZWYgZW50ZXJBc20KKyAgICBAb3V0cC5wdXRz
ICJhc20gKCIKKyAgICBAc3RhdGUgPSA6YXNtCisgIGVuZAorICAKKyAgZGVmIGxlYXZlQXNtCisg
ICAgcHV0c0xhc3RDb21tZW50CisgICAgQG91dHAucHV0cyAiKTsiCisgICAgQHN0YXRlID0gOmNw
cAorICBlbmQKKyAgCisgIGRlZiBpbkFzbQorICAgIGVudGVyQXNtCisgICAgeWllbGQKKyAgICBs
ZWF2ZUFzbQorICBlbmQKKyAgCisgIGRlZiBsYXN0Q29tbWVudAorICAgIGlmIEBjb21tZW50Cisg
ICAgICByZXN1bHQgPSAiLy8gI3tAY29tbWVudH0iCisgICAgZWxzZQorICAgICAgcmVzdWx0ID0g
IiIKKyAgICBlbmQKKyAgICBAY29tbWVudFN0YXRlID0gOm5vbmUKKyAgICBAY29tbWVudCA9IG5p
bAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwdXRzTGFzdENvbW1lbnQKKyAgICBjb21t
ZW50ID0gbGFzdENvbW1lbnQKKyAgICB1bmxlc3MgY29tbWVudC5lbXB0eT8KKyAgICAgIEBvdXRw
LnB1dHMgY29tbWVudAorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwdXRzKCpsaW5lKQorICAg
IHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnB1dHMoIlwiXFx0IiArIGxp
bmUuam9pbignJykgKyAiXFxuXCIgI3tsYXN0Q29tbWVudH0iKQorICBlbmQKKyAgCisgIGRlZiBw
cmludChsaW5lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnBy
aW50KCJcIiIgKyBsaW5lICsgIlwiIikKKyAgZW5kCisgIAorICBkZWYgcHV0c0xhYmVsKGxhYmVs
TmFtZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wdXRzKCJP
RkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwoI3tsYWJlbE5hbWV9KSAje2xhc3RDb21tZW50fSIpCisg
IGVuZAorICAKKyAgZGVmIHB1dHNMb2NhbExhYmVsKGxhYmVsTmFtZSkKKyAgICByYWlzZSB1bmxl
c3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wdXRzKCJMT0NBTF9MQUJFTF9TVFJJTkcoI3ts
YWJlbE5hbWV9KSBcIjpcXG5cIiAje2xhc3RDb21tZW50fSIpCisgIGVuZAorICAKKyAgZGVmIHNl
bGYubGFiZWxSZWZlcmVuY2UobGFiZWxOYW1lKQorICAgICJcIiBTWU1CT0xfU1RSSU5HKCN7bGFi
ZWxOYW1lfSkgXCIiCisgIGVuZAorICAKKyAgZGVmIHNlbGYubG9jYWxMYWJlbFJlZmVyZW5jZShs
YWJlbE5hbWUpCisgICAgIlwiIExPQ0FMX0xBQkVMX1NUUklORygje2xhYmVsTmFtZX0pIFwiIgor
ICBlbmQKKyAgCisgIGRlZiBjb21tZW50KHRleHQpCisgICAgY2FzZSBAY29tbWVudFN0YXRlCisg
ICAgd2hlbiA6bm9uZQorICAgICAgQGNvbW1lbnQgPSB0ZXh0CisgICAgICBAY29tbWVudFN0YXRl
ID0gOm9uZQorICAgIHdoZW4gOm9uZQorICAgICAgQG91dHAucHV0cyAiLy8gI3tAY29tbWVudH0i
CisgICAgICBAb3V0cC5wdXRzICIvLyAje3RleHR9IgorICAgICAgQGNvbW1lbnQgPSBuaWwKKyAg
ICAgIEBjb21tZW50U3RhdGUgPSA6bWFueQorICAgIHdoZW4gOm1hbnkKKyAgICAgIEBvdXRwLnB1
dHMgIi8vICN7dGV4dH0iCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCitl
bmQKKworYXNtRmlsZSA9IEFSR1Yuc2hpZnQKK29mZnNldHNGaWxlID0gQVJHVi5zaGlmdAorb3V0
cHV0RmxubSA9IEFSR1Yuc2hpZnQKKworJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBQYXJzaW5n
ICN7YXNtRmlsZX0gYW5kICN7b2Zmc2V0c0ZpbGV9IGFuZCBjcmVhdGluZyBhc3NlbWJseSBmaWxl
ICN7b3V0cHV0RmxubX0uIgorCitvZmZzZXRzTGlzdCwgY29uZmlnSW5kZXggPSBvZmZzZXRzQW5k
Q29uZmlndXJhdGlvbkluZGV4KG9mZnNldHNGaWxlKQoraW5wdXREYXRhID0gSU86OnJlYWQoYXNt
RmlsZSkKKworaW5wdXRIYXNoID0KKyAgIi8vIG9mZmxpbmVhc20gaW5wdXQgaGFzaDogIiArIERp
Z2VzdDo6U0hBMS5oZXhkaWdlc3QoaW5wdXREYXRhKSArCisgICIgIiArIERpZ2VzdDo6U0hBMS5o
ZXhkaWdlc3QoKG9mZnNldHNMaXN0ICsgW2NvbmZpZ0luZGV4XSkuam9pbignICcpKSArCisgICIg
IiArIHNlbGZIYXNoCisKK2lmIEZpbGVUZXN0LmV4aXN0PyBvdXRwdXRGbG5tCisgIEZpbGUub3Bl
bihvdXRwdXRGbG5tLCAiciIpIHsKKyAgICB8IGlucCB8CisgICAgZmlyc3RMaW5lID0gaW5wLmdl
dHMKKyAgICBpZiBmaXJzdExpbmUgYW5kIGZpcnN0TGluZS5jaG9tcCA9PSBpbnB1dEhhc2gKKyAg
ICAgICRzdGRlcnIucHV0cyAib2ZmbGluZWFzbTogTm90aGluZyBjaGFuZ2VkLiIKKyAgICAgIGV4
aXQgMAorICAgIGVuZAorICB9CitlbmQKKworRmlsZS5vcGVuKG91dHB1dEZsbm0sICJ3Iikgewor
ICB8IG91dHAgfAorICAkb3V0cHV0ID0gb3V0cAorICAkb3V0cHV0LnB1dHMgaW5wdXRIYXNoCisg
IAorICAkYXNtID0gQXNzZW1ibGVyLm5ldygkb3V0cHV0KQorICAKKyAgYXN0ID0gcGFyc2UobGV4
KGlucHV0RGF0YSkpCisgIAorICBmb3JTZXR0aW5ncyhjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlv
bnMoYXN0KVtjb25maWdJbmRleF0sIGFzdCkgeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93
TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0
aW5ncykKKyAgICBsb3dMZXZlbEFTVCA9IGxvd0xldmVsQVNULnJlc29sdmUoKmJ1aWxkT2Zmc2V0
c01hcChsb3dMZXZlbEFTVCwgb2Zmc2V0c0xpc3QpKQorICAgIGVtaXRDb2RlSW5Db25maWd1cmF0
aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kKSB7CisgICAgICAkYXNt
LmluQXNtIHsKKyAgICAgICAgbG93TGV2ZWxBU1QubG93ZXIoYmFja2VuZCkKKyAgICAgIH0KKyAg
ICB9CisgIH0KK30KKworJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBBc3NlbWJseSBmaWxlICN7
b3V0cHV0RmxubX0gc3VjY2Vzc2Z1bGx5IGdlbmVyYXRlZC4iCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAzOSBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIworIyBCYXNlIHV0aWxp
dHkgdHlwZXMgZm9yIHRoZSBBU1QuCisjCisKKyMgVmFsaWQgbWV0aG9kcyBmb3IgTm9kZToKKyMK
KyMgbm9kZS5jaGlsZHJlbiAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGltbWVkaWF0ZSBjaGlsZHJl
bi4KKyMKKyMgbm9kZS5kZXNjZW5kZW50cyAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBzdHJp
Y3QgZGVzY2VuZGFudHMgKGNoaWxkcmVuCisjICAgICBhbmQgY2hpbGRyZW4gb2YgY2hpbGRyZW4s
IHRyYW5zaXRpdmVseSkuCisjCisjIG5vZGUuZmxhdHRlbiAtPiBSZXR1cm5zIGFuIGFycmF5IGNv
bnRhaW5pbmcgdGhlIHN0cmljdCBkZXNjZW5kYW50cyBhbmQKKyMgICAgIHRoZSBub2RlIGl0c2Vs
Zi4KKyMKKyMgbm9kZS5maWx0ZXIodHlwZSkgLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5n
IHRob3NlIGVsZW1lbnRzIGluCisjICAgICBub2RlLmZsYXR0ZW4gdGhhdCBhcmUgb2YgdGhlIGdp
dmVuIHR5cGUgKGlzX2E/IHR5cGUgcmV0dXJucyB0cnVlKS4KKyMKKyMgbm9kZS5tYXBDaGlsZHJl
bnt8dnwgLi4ufSAtPiBSZXR1cm5zIGEgbmV3IG5vZGUgd2l0aCBhbGwgY2hpbGRyZW4KKyMgICAg
IHJlcGxhY2VkIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gYmxvY2suCisjCisjIEV4YW1wbGVzOgor
IworIyBub2RlLmZpbHRlcihTZXR0aW5nKS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzZXR0
aW5ncyB0aGF0IHRoZSBBU1QncworIyAgICAgSWZUaGVuRWxzZSBibG9ja3MgZGVwZW5kIG9uLgor
IworIyBub2RlLmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhl
IHN0cnVjdHVyZSBvZmZzZXRzCisjICAgICB0aGF0IHRoZSBBU1QgZGVwZW5kcyBvbi4KKworY2xh
c3MgTm9kZQorICBhdHRyX3JlYWRlciA6Y29kZU9yaWdpbgorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbikKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgZW5kCisgIAorICBk
ZWYgY29kZU9yaWdpblN0cmluZworICAgICJsaW5lIG51bWJlciAje0Bjb2RlT3JpZ2lufSIKKyAg
ZW5kCisgIAorICBkZWYgZGVzY2VuZGFudHMKKyAgICBjaGlsZHJlbi5jb2xsZWN0e3x2fCB2LmZs
YXR0ZW59LmZsYXR0ZW4KKyAgZW5kCisgIAorICBkZWYgZmxhdHRlbgorICAgIFtzZWxmXSArIGRl
c2NlbmRhbnRzCisgIGVuZAorICAKKyAgZGVmIGZpbHRlcih0eXBlKQorICAgIGZsYXR0ZW4uc2Vs
ZWN0e3x2fCB2LmlzX2E/IHR5cGV9CisgIGVuZAorZW5kCisKK2NsYXNzIE5vQ2hpbGRyZW4gPCBO
b2RlCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbXQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0S2V5Cisg
IGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUoc3RydWN0
LCBmaWVsZCkKKyAgICBAc3RydWN0ID0gc3RydWN0CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5k
CisgIAorICBkZWYgaGFzaAorICAgIEBzdHJ1Y3QuaGFzaCArIEBmaWVsZC5oYXNoICogMworICBl
bmQKKyAgCisgIGRlZiBlcWw/KG90aGVyKQorICAgIEBzdHJ1Y3QgPT0gb3RoZXIuc3RydWN0IGFu
ZCBAZmllbGQgPT0gb3RoZXIuZmllbGQKKyAgZW5kCitlbmQKKworIworIyBBU1Qgbm9kZXMuCisj
CisKK2NsYXNzIFN0cnVjdE9mZnNldCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVj
dCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxk
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVs
ZCA9IGZpZWxkCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZv
ckZpZWxkKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAga2V5ID0gU3RydWN0T2Zmc2V0
S2V5Lm5ldyhzdHJ1Y3QsIGZpZWxkKQorICAgIAorICAgIHVubGVzcyBAQG1hcHBpbmdba2V5XQor
ICAgICAgQEBtYXBwaW5nW2tleV0gPSBTdHJ1Y3RPZmZzZXQubmV3KGNvZGVPcmlnaW4sIHN0cnVj
dCwgZmllbGQpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW2tleV0KKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICIje3N0cnVjdH06OiN7ZmllbGR9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3Ro
ZXIpCisgICAgaWYgQHN0cnVjdCAhPSBvdGhlci5zdHJ1Y3QKKyAgICAgIHJldHVybiBAc3RydWN0
IDw9PiBvdGhlci5zdHJ1Y3QKKyAgICBlbmQKKyAgICBAZmllbGQgPD0+IG90aGVyLmZpZWxkCisg
IGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFi
ZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAg
ZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3Mg
U2l6ZW9mIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0CisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
c3RydWN0ID0gc3RydWN0CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBz
ZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHVubGVzcyBAQG1hcHBpbmdbc3Ry
dWN0XQorICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBTaXplb2YubmV3KGNvZGVPcmlnaW4sIHN0
cnVjdCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbc3RydWN0XQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgInNpemVvZiAje0BzdHJ1Y3R9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIp
CisgICAgQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/
CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisg
IAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/
CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlIDwgTm9DaGlsZHJlbgor
ICBhdHRyX3JlYWRlciA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZh
bHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhbHVlID0gdmFsdWUKKyAgICByYWlz
ZSAiQmFkIGltbWVkaWF0ZSB2YWx1ZSAje3ZhbHVlLmluc3BlY3R9IGF0ICN7Y29kZU9yaWdpblN0
cmluZ30iIHVubGVzcyB2YWx1ZS5pc19hPyBJbnRlZ2VyCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiI3t2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIG90aGVyLmlz
X2E/IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUgPT0gQHZhbHVlCisgIGVuZAorICAKKyAgZGVm
IGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UK
KyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYg
cmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVm
dCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgor
ICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFk
ZEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQp
KQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1
bXB9KSIKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxzZQorICBlbmQKKyAgCisg
IGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBpbW1lZGlhdGU/CisgICAg
dHJ1ZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICBmYWxzZQorICBlbmQKK2VuZAor
CitjbGFzcyBTdWJJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAg
ZGVmIG1hcENoaWxkcmVuCisgICAgU3ViSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxk
IEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7
bGVmdC5kdW1wfSAtICN7cmlnaHQuZHVtcH0pIgorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPwor
ICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAK
KyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPwor
ICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0Cisg
ICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQs
IEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBNdWxJbW1lZGlhdGVz
Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICogI3tyaWdodC5kdW1wfSkiCisgIGVu
ZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/
CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5k
CisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgTmVn
SW1tZWRpYXRlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxk
ID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGNoaWxkXQorICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5lZ0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwg
KHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKC0je0BjaGlsZC5k
dW1wfSkiCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAor
ICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAg
IHRydWUKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQK
KworY2xhc3MgUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAg
ZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdb
bmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5k
CisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRl
PworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIHRydWUKKyAgZW5k
CitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9
CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBA
bWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gRlBSZWdpc3RlcklELm5ldyhj
b2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVm
IGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICB0
cnVlCisgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlIDwgTm9DaGlsZHJlbgorICBhdHRyX3Jl
YWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGlu
ZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5s
ZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gVmFyaWFibGUubmV3
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MgPCBO
b2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBiYXNlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFz
ZSA9IGJhc2UKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgICAgcmFpc2UgIkJhZCBiYXNlIGZvciBh
ZGRyZXNzICN7YmFzZS5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgYmFz
ZS5pc19hPyBWYXJpYWJsZSBvciBiYXNlLnJlZ2lzdGVyPworICAgIHJhaXNlICJCYWQgb2Zmc2V0
IGZvciBhZGRyZXNzICN7b2Zmc2V0Lmluc3BlY3R9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVu
bGVzcyBvZmZzZXQuaXNfYT8gVmFyaWFibGUgb3Igb2Zmc2V0LmltbWVkaWF0ZT8KKyAgZW5kCisg
IAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVm
IG1hcENoaWxkcmVuCisgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwg
KHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1
bXB9WyN7YmFzZS5kdW1wfV0iCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgdHJ1ZQor
ICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBpbW1l
ZGlhdGU/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UK
KyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFz
ZSwgOmluZGV4LCA6c2NhbGUsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQGJhc2UgPSBiYXNlCisgICAgQGluZGV4ID0gaW5kZXgKKyAgICBAc2NhbGUgPSBzY2FsZQor
ICAgIHJhaXNlIHVubGVzcyBbMSwgMiwgNCwgOF0ubWVtYmVyPyBAc2NhbGUKKyAgICBAb2Zmc2V0
ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIHNjYWxlU2hpZnQKKyAgICBjYXNlIHNjYWxlCisg
ICAgd2hlbiAxCisgICAgICAwCisgICAgd2hlbiAyCisgICAgICAxCisgICAgd2hlbiA0CisgICAg
ICAyCisgICAgd2hlbiA4CisgICAgICAzCisgICAgZWxzZQorICAgICAgcmFpc2UgIkJhZCBzY2Fs
ZSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIFtAYmFzZSwgQGluZGV4LCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlp
ZWxkIEBpbmRleCksIEBzY2FsZSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfSwgI3tpbmRleC5kdW1wfSwgI3tz
Y2FsZX1dIgorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIHRydWUKKyAgZW5kCisgIAor
ICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAg
IGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5k
CisKK2NsYXNzIEFic29sdXRlQWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmFk
ZHJlc3MKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGFkZHJlc3MpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICIje2FkZHJlc3MuZHVtcH1bXSIKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8K
KyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAK
KyAgZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8K
KyAgICBmYWxzZQorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbiA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBvcGNvZGUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG9wY29k
ZSA9IG9wY29kZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIGNo
aWxkcmVuCisgICAgb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2Mp
CisgICAgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5tYXAo
JnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0IiArIG9wY29kZS50b19zICsg
IiAiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCisgIGVuZAorZW5k
CisKK2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRl
cnJvciIKKyAgZW5kCitlbmQKKworY2xhc3MgQ29uc3REZWNsIDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6dmFyaWFibGUsIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFy
aWFibGUsIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhcmlhYmxlID0gdmFy
aWFibGUKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IFtAdmFyaWFibGUsIEB2YWx1ZV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBD
b25zdERlY2wubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAdmFyaWFibGUpLCAoeWllbGQgQHZhbHVl
KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJjb25zdCAje0B2YXJpYWJsZS5kdW1wfSA9
ICN7QHZhbHVlLmR1bXB9IgorICBlbmQKK2VuZAorCiskbGFiZWxNYXBwaW5nID0ge30KKworY2xh
c3MgTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5h
bWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1l
KQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNv
bGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTGFiZWwK
KyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFiZWwubmV3KGNvZGVPcmln
aW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVs
IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFt
ZQorICBlbmQKKworICBAQHVuaXF1ZU5hbWVDb3VudGVyID0gMAorICAKKyAgZGVmIHNlbGYuZm9y
TmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAg
IHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBp
bmdbbmFtZV0uaXNfYT8gTG9jYWxMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdb
bmFtZV0gPSBMb2NhbExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRs
YWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgc2VsZi51bmlxdWUoY29tbWVudCkK
KyAgICBuZXdOYW1lID0gIl8je2NvbW1lbnR9IgorICAgIGlmICRsYWJlbE1hcHBpbmdbbmV3TmFt
ZV0KKyAgICAgIHdoaWxlICRsYWJlbE1hcHBpbmdbbmV3TmFtZSA9ICJfI3tAQHVuaXF1ZU5hbWVD
b3VudGVyfV8je2NvbW1lbnR9Il0KKyAgICAgICAgQEB1bmlxdWVOYW1lQ291bnRlciArPSAxCisg
ICAgICBlbmQKKyAgICBlbmQKKyAgICBmb3JOYW1lKG5pbCwgbmV3TmFtZSkKKyAgZW5kCisgIAor
ICBkZWYgY2xlYW5OYW1lCisgICAgaWYgbmFtZSA9fiAvXlwuLworICAgICAgIl8iICsgbmFtZVsx
Li4tMV0KKyAgICBlbHNlCisgICAgICBuYW1lCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlIDwg
Tm9kZQorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAg
ZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbgorICAgIExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxh
YmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAg
ICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICB0cnVlCisgIGVuZAorZW5kCisK
K2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDps
YWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJl
bgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTG9jYWxM
YWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAK
KyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBs
YWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisg
IAorICBkZWYgbGFiZWw/CisgICAgdHJ1ZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZSA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIGxpc3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGlzdCA9IGxpc3QKKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBsaXN0CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxk
cmVuKCZwcm9jKQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBAbGlzdC5tYXAoJnByb2Mp
KQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0e3x2fCB2LmR1bXB9Lmpv
aW4oIlxuIikKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGlu
aXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IFRydWUu
bmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAor
ICBkZWYgdmFsdWUKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAidHJ1ZSIK
KyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXpl
CisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBGYWxzZS5uZXcKKyAg
CisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2
YWx1ZQorICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiZmFsc2UiCisgIGVu
ZAorZW5kCisKK2NsYXNzIFRydWVDbGFzcworICBkZWYgYXNOb2RlCisgICAgVHJ1ZS5pbnN0YW5j
ZQorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBGYWxz
ZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nIDwgTm9DaGlsZHJlbgorICBh
dHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBA
bWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisg
ICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gU2V0dGlu
Zy5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kIDwg
Tm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0
ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisg
ICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQW5k
Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3JpZ2h0LmR1bXB9KSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgT3IgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBk
ZWYgbWFwQ2hpbGRyZW4KKyAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlp
ZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBv
ciAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTm90IDwgTm9kZQorICBhdHRy
X3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBk
ZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hp
bGRyZW4KKyAgICBOb3QubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2Ns
YXNzIFNraXAgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdHNraXAiCisg
IGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpwcmVk
aWNhdGUsIDp0aGVuQ2FzZQorICBhdHRyX2FjY2Vzc29yIDplbHNlQ2FzZQorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZSkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBwcmVkaWNhdGUgPSBwcmVkaWNhdGUKKyAgICBAdGhlbkNhc2UgPSB0aGVu
Q2FzZQorICAgIEBlbHNlQ2FzZSA9IFNraXAubmV3KGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgaWYgQGVsc2VDYXNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5D
YXNlLCBAZWxzZUNhc2VdCisgICAgZWxzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZV0K
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBJZlRoZW5FbHNlLm5l
dyhjb2RlT3JpZ2luLCAoeWllbGQgQHByZWRpY2F0ZSksICh5aWVsZCBAdGhlbkNhc2UpLCAoeWll
bGQgQGVsc2VDYXNlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJpZiAje3ByZWRpY2F0
ZS5kdW1wfVxuIiArIHRoZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsgZWxzZUNhc2UuZHVtcCAr
ICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8gPCBOb2RlCisgIGF0dHJfcmVhZGVy
IDpuYW1lLCA6dmFyaWFibGVzLCA6Ym9keQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5h
bWUgPSBuYW1lCisgICAgQHZhcmlhYmxlcyA9IHZhcmlhYmxlcworICAgIEBib2R5ID0gYm9keQor
ICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEB2YXJpYWJsZXMgKyBbQGJvZHldCisgIGVu
ZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIEBuYW1l
LCBAdmFyaWFibGVzLm1hcHt8dnwgeWllbGQgdn0sICh5aWVsZCBAYm9keSkpCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFibGVzLmNvbGxlY3R7fHZ8
IHYuZHVtcH0uam9pbigiLCAiKSArICIpXG4iICsgYm9keS5kdW1wICsgIlxuZW5kIgorICBlbmQK
K2VuZAorCitjbGFzcyBNYWNyb0NhbGwgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6b3Bl
cmFuZHMKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQG9wZXJhbmRzID0g
b3BlcmFuZHMKKyAgICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAgQG9wZXJhbmRzLmVhY2h7
fHZ8IHJhaXNlIHVubGVzcyB2fQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEBvcGVy
YW5kcworICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBNYWNyb0NhbGwu
bmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICJcdCN7bmFtZX0oIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVt
cH0uam9pbigiLCAiKSArICIpIgorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDk2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJl
ICJhcm12NyIKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIng4NiIKKworQkFDS0VORFMgPQorICBb
CisgICAiWDg2IiwKKyAgICJBUk12NyIKKyAgXQorCisjIEtlZXAgdGhlIHNldCBvZiB3b3JraW5n
IGJhY2tlbmRzIHNlcGFyYXRlIGZyb20gdGhlIHNldCBvZiBiYWNrZW5kcyB0aGF0IG1pZ2h0IGJl
CisjIHN1cHBvcnRlZC4gVGhpcyBpcyBncmVhdCBiZWNhdXNlIHRoZSBCQUNLRU5EUyBsaXN0IGlz
IGFsbW9zdCBsaWtlIGEgcmVzZXJ2ZWQKKyMgd29yZHMgbGlzdCwgaW4gdGhhdCBpdCBjYXVzZXMg
c2V0dGluZ3MgcmVzb2x1dGlvbiB0byB0cmVhdCB0aG9zZSB3b3JkcyBzcGVjaWFsbHkuCisjIEhl
bmNlIHRoaXMgbGV0cyB1cyBzZXQgYXNpZGUgdGhlIG5hbWUgb2YgYSBiYWNrZW5kIHdlIG1pZ2h0
IHdhbnQgdG8gc3VwcG9ydCBpbgorIyB0aGUgZnV0dXJlIHdoaWxlIG5vdCBhY3R1YWxseSBzdXBw
b3J0aW5nIHRoZSBiYWNrZW5kIHlldC4KK1dPUktJTkdfQkFDS0VORFMgPQorICBbCisgICAiWDg2
IiwKKyAgICJBUk12NyIKKyAgXQorCitCQUNLRU5EX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEo
JyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFonKQorCitjbGFzcyBOb2RlCisgIGRlZiBs
b3dlcihuYW1lKQorICAgIHNlbmQoImxvd2VyIiArIG5hbWUpCisgIGVuZAorZW5kCisKKyMgT3Zl
cnJpZGVzIGZvciBsb3dlcigpIGZvciB0aG9zZSBub2RlcyB0aGF0IGFyZSBiYWNrZW5kLWFnbm9z
dGljCisKK2NsYXNzIExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAgICRhc20ucHV0c0xhYmVs
KHNlbGYubmFtZVsxLi4tMV0pCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVm
IGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzTG9jYWxMYWJlbCAiX29mZmxpbmVhc21fI3tzZWxm
Lm5hbWVbMS4uLTFdfSIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAgZGVm
IGFzbUxhYmVsCisgICAgQXNzZW1ibGVyLmxhYmVsUmVmZXJlbmNlKG5hbWVbMS4uLTFdKQorICBl
bmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCisgIGRlZiBhc21MYWJlbAorICAg
IEFzc2VtYmxlci5sb2NhbExhYmVsUmVmZXJlbmNlKCJfb2ZmbGluZWFzbV8iK25hbWVbMS4uLTFd
KQorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwCisgIGRlZiBsb3dlcihuYW1lKQorICBlbmQKK2Vu
ZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBpZiByZXNwb25kX3Rv
PyAibG93ZXIje25hbWV9IgorICAgICAgc2VuZCgibG93ZXIje25hbWV9IikKKyAgICBlbHNlCisg
ICAgICBAbGlzdC5lYWNoIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgbm9kZS5sb3dlcihu
YW1lKQorICAgICAgfQorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9l
eHRyYWN0b3IucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDkzIEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMg
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFj
a2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJl
ICJwYXJzZXIiCityZXF1aXJlICJzZWxmX2hhc2giCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVp
cmUgInRyYW5zZm9ybSIKKworaW5wdXRGbG5tID0gQVJHVi5zaGlmdAorb3V0cHV0RmxubSA9IEFS
R1Yuc2hpZnQKKworJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBQYXJzaW5nICN7aW5wdXRGbG5t
fSBhbmQgY3JlYXRpbmcgb2Zmc2V0IGV4dHJhY3RvciAje291dHB1dEZsbm19LiIKKworZGVmIGVt
aXRNYWdpY051bWJlcgorICBPRkZTRVRfTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICB8IG51bWJl
ciB8CisgICAgJG91dHB1dC5wdXRzICIje251bWJlcn0sIgorICB9CitlbmQKKworaW5wdXREYXRh
ID0gSU86OnJlYWQoaW5wdXRGbG5tKQoraW5wdXRIYXNoID0gIi8vIG9mZmxpbmVhc20gaW5wdXQg
aGFzaDogI3tEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0YSl9ICN7c2VsZkhhc2h9Igor
CitpZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0RmxubQorICBGaWxlLm9wZW4ob3V0cHV0RmxubSwg
InIiKSB7CisgICAgfCBpbnAgfAorICAgIGZpcnN0TGluZSA9IGlucC5nZXRzCisgICAgaWYgZmly
c3RMaW5lIGFuZCBmaXJzdExpbmUuY2hvbXAgPT0gaW5wdXRIYXNoCisgICAgICAkc3RkZXJyLnB1
dHMgIm9mZmxpbmVhc206IE5vdGhpbmcgY2hhbmdlZC4iCisgICAgICBleGl0IDAKKyAgICBlbmQK
KyAgfQorZW5kCisKK29yaWdpbmFsQVNUID0gcGFyc2UobGV4KGlucHV0RGF0YSkpCisKK0ZpbGUu
b3BlbihvdXRwdXRGbG5tLCAidyIpIHsKKyAgfCBvdXRwIHwKKyAgJG91dHB1dCA9IG91dHAKKyAg
b3V0cC5wdXRzIGlucHV0SGFzaAorICBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMob3JpZ2lu
YWxBU1QpIHsKKyAgICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICBvZmZz
ZXRzTGlzdCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKKyAgICBzaXplc0xp
c3QgPSBhc3QuZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CisgICAgCisgICAgbGVuZ3RoID0gKE9G
RlNFVF9NQUdJQ19OVU1CRVJTLnNpemUgKyAxKSAqICgxICsgb2Zmc2V0c0xpc3Quc2l6ZSArIHNp
emVzTGlzdC5zaXplKQorICAgIAorICAgIG91dHAucHV0cyAic3RhdGljIGNvbnN0IHVuc2lnbmVk
IGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICAgIGVtaXRNYWdpY051bWJlcgorICAg
IG91dHAucHV0cyAiI3tpbmRleH0sIgorICAgIG9mZnNldHNMaXN0LmVhY2ggeworICAgICAgfCBv
ZmZzZXQgfAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICBvdXRwLnB1dHMgIk9GRkxJTkVf
QVNNX09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSksIgorICAgIH0K
KyAgICBzaXplc0xpc3QuZWFjaCB7CisgICAgICB8IG9mZnNldCB8CisgICAgICBlbWl0TWFnaWNO
dW1iZXIKKyAgICAgIG91dHAucHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0cnVjdH0pLCIKKyAgICB9
CisgICAgb3V0cC5wdXRzICJ9OyIKKyAgfQorfQorCiskc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206
IG9mZnNldCBleHRyYWN0b3IgI3tvdXRwdXRGbG5tfSBzdWNjZXNzZnVsbHkgZ2VuZXJhdGVkLiIK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0
aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMTcgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgSW50ZXJlc3RpbmcgaW52YXJpYW50LCB3
aGljaCB3ZSB0YWtlIGFkdmFudGFnZSBvZjogYnJhbmNoaW5nIGluc3RydWN0aW9ucworIyBhbHdh
eXMgYmVnaW4gd2l0aCAiYiIsIGFuZCBubyBub24tYnJhbmNoaW5nIGluc3RydWN0aW9ucyBiZWdp
biB3aXRoICJiIi4KKyMgVGVybWluYWwgaW5zdHJ1Y3Rpb25zIGFyZSAiam1wIiBhbmQgInJldCIu
CisKK01BQ1JPX0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJhZGRpIiwKKyAgICJhbmRpIiwKKyAg
ICJsc2hpZnRpIiwKKyAgICJtdWxpIiwKKyAgICJuZWdpIiwKKyAgICJub3RpIiwKKyAgICJvcmki
LAorICAgInJzaGlmdGkiLAorICAgInVyc2hpZnRpIiwKKyAgICJzdWJpIiwKKyAgICJ4b3JpIiwK
KyAgICJsb2FkaSIsCisgICAibG9hZGIiLAorICAgImxvYWRicyIsCisgICAibG9hZGgiLAorICAg
ImxvYWRocyIsCisgICAic3RvcmVpIiwKKyAgICJzdG9yZWIiLAorICAgImxvYWRkIiwKKyAgICJt
b3ZlZCIsCisgICAic3RvcmVkIiwKKyAgICJhZGRkIiwKKyAgICJkaXZkIiwKKyAgICJzdWJkIiwK
KyAgICJtdWxkIiwKKyAgICJzcXJ0ZCIsCisgICAiY2kyZCIsCisgICAiZmlpMmQiLCAjIHVzYWdl
OiBmaWkyZCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0
IHNpZ25pZmljYW50IGJpdHM+LCA8ZnByPgorICAgImZkMmlpIiwgIyB1c2FnZTogZmQyaWkgPGZw
cj4sIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2ln
bmlmaWNhbnQgYml0cz4KKyAgICJiZGVxIiwKKyAgICJiZG5lcSIsCisgICAiYmRndCIsCisgICAi
YmRndGVxIiwKKyAgICJiZGx0IiwKKyAgICJiZGx0ZXEiLAorICAgImJkZXF1biIsCisgICAiYmRu
ZXF1biIsCisgICAiYmRndHVuIiwKKyAgICJiZGd0ZXF1biIsCisgICAiYmRsdHVuIiwKKyAgICJi
ZGx0ZXF1biIsCisgICAiYnRkMmkiLAorICAgInRkMmkiLAorICAgImJjZDJpIiwKKyAgICJtb3Zk
eiIsCisgICAicG9wIiwKKyAgICJwdXNoIiwKKyAgICJtb3ZlIiwKKyAgICJzeGkycCIsCisgICAi
enhpMnAiLAorICAgIm5vcCIsCisgICAiYmllcSIsCisgICAiYmluZXEiLAorICAgImJpYSIsCisg
ICAiYmlhZXEiLAorICAgImJpYiIsCisgICAiYmliZXEiLAorICAgImJpZ3QiLAorICAgImJpZ3Rl
cSIsCisgICAiYmlsdCIsCisgICAiYmlsdGVxIiwKKyAgICJiYmVxIiwKKyAgICJiYm5lcSIsCisg
ICAiYmJhIiwKKyAgICJiYmFlcSIsCisgICAiYmJiIiwKKyAgICJiYmJlcSIsCisgICAiYmJndCIs
CisgICAiYmJndGVxIiwKKyAgICJiYmx0IiwKKyAgICJiYmx0ZXEiLAorICAgImJ0aW8iLAorICAg
ImJ0aXMiLAorICAgImJ0aXoiLAorICAgImJ0aW56IiwKKyAgICJidGJvIiwKKyAgICJidGJzIiwK
KyAgICJidGJ6IiwKKyAgICJidGJueiIsCisgICAiam1wIiwKKyAgICJiYWRkaW8iLAorICAgImJh
ZGRpcyIsCisgICAiYmFkZGl6IiwKKyAgICJiYWRkaW56IiwKKyAgICJic3ViaW8iLAorICAgImJz
dWJpcyIsCisgICAiYnN1Yml6IiwKKyAgICJic3ViaW56IiwKKyAgICJibXVsaW8iLAorICAgImJt
dWxpcyIsCisgICAiYm11bGl6IiwKKyAgICJibXVsaW56IiwKKyAgICJib3JpbyIsCisgICAiYm9y
aXMiLAorICAgImJvcml6IiwKKyAgICJib3JpbnoiLAorICAgImJyZWFrIiwKKyAgICJjYWxsIiwK
KyAgICJyZXQiLAorICAgImNpZXEiLAorICAgImNpbmVxIiwKKyAgICJjaWEiLAorICAgImNpYWVx
IiwKKyAgICJjaWIiLAorICAgImNpYmVxIiwKKyAgICJjaWd0IiwKKyAgICJjaWd0ZXEiLAorICAg
ImNpbHQiLAorICAgImNpbHRlcSIsCisgICAidGlvIiwKKyAgICJ0aXMiLAorICAgInRpeiIsCisg
ICAidGlueiIsCisgICAidGJvIiwKKyAgICJ0YnMiLAorICAgInRieiIsCisgICAidGJueiIsCisg
ICAicGVlayIsCisgICAicG9rZSIsCisgICAiYnBlcSIsCisgICAiYnBuZXEiLAorICAgImJwYSIs
CisgICAiYnBhZXEiLAorICAgImJwYiIsCisgICAiYnBiZXEiLAorICAgImJwZ3QiLAorICAgImJw
Z3RlcSIsCisgICAiYnBsdCIsCisgICAiYnBsdGVxIiwKKyAgICJhZGRwIiwKKyAgICJhbmRwIiwK
KyAgICJvcnAiLAorICAgInN1YnAiLAorICAgInhvcnAiLAorICAgImxvYWRwIiwKKyAgICJjcGVx
IiwKKyAgICJjcG5lcSIsCisgICAiY3BhIiwKKyAgICJjcGFlcSIsCisgICAiY3BiIiwKKyAgICJj
cGJlcSIsCisgICAiY3BndCIsCisgICAiY3BndGVxIiwKKyAgICJjcGx0IiwKKyAgICJjcGx0ZXEi
LAorICAgInN0b3JlcCIsCisgICAiYnRwbyIsCisgICAiYnRwcyIsCisgICAiYnRweiIsCisgICAi
YnRwbnoiLAorICAgImJhZGRwbyIsCisgICAiYmFkZHBzIiwKKyAgICJiYWRkcHoiLAorICAgImJh
ZGRwbnoiLAorICAgImJvIiwKKyAgICJicyIsCisgICAiYnoiLAorICAgImJueiIsCisgICAibGVh
aSIsCisgICAibGVhcCIsCisgIF0KKworWDg2X0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJjZHFp
IiwKKyAgICJpZGl2aSIKKyAgXQorCitBUk12N19JTlNUUlVDVElPTlMgPQorICBbCisgICAic211
bGxpIiwKKyAgICJhZGRpcyIsCisgICAic3ViaXMiLAorICAgIm9yaXMiCisgIF0KKworSU5TVFJV
Q1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05TICsgWDg2X0lOU1RSVUNUSU9OUyArIEFSTXY3X0lO
U1RSVUNUSU9OUworCitJTlNUUlVDVElPTl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsg
SU5TVFJVQ1RJT05TLmpvaW4oJyl8KCcpICsgJykpXFxaJykKKworZGVmIGlzQnJhbmNoKGluc3Ry
dWN0aW9uKQorICBpbnN0cnVjdGlvbiA9fiAvXmIvCitlbmQKKworZGVmIGhhc0ZhbGxUaHJvdWdo
KGluc3RydWN0aW9uKQorICBpbnN0cnVjdGlvbiAhPSAicmV0IiBhbmQgaW5zdHJ1Y3Rpb24gIT0g
ImptcCIKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZz
ZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3Jf
Y29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitNQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAw
eDBmZjVlNzU1IF0KKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9v
ZmZzZXRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L29mZnNldHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1MCBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zm
c2V0X2V4dHJhY3Rvcl9jb25zdGFudHMiCisKK09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVj
NTc3YWM3LCAweDBmZjVlNzU1IF0KKworIworIyBvZmZzZXRzTGlzdChhc3QpCisjIHNpemVzTGlz
dChhc3QpCisjCisjIFJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkg
dGhlIEFTVC4KKyMKKworZGVmIG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTdHJ1Y3RP
ZmZzZXQpLnVuaXEuc29ydAorZW5kCisKK2RlZiBzaXplc0xpc3QoYXN0KQorICBhc3QuZmlsdGVy
KFNpemVvZikudW5pcS5zb3J0CitlbmQKKworIworIyBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbklu
ZGV4KGFzdCwgZmlsZSkgLT4KKyMgICAgIFtvZmZzZXRzLCBpbmRleF0KKyMKKyMgUGFyc2VzIHRo
ZSBvZmZzZXRzIGZyb20gYSBmaWxlIGFuZCByZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCB0
aGUKKyMgaW5kZXggb2YgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB2YWxpZCBpbiB0aGlzIGJ1
aWxkIHRhcmdldC4KKyMKKworZGVmIG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgoZmlsZSkK
KyAgaW5kZXggPSBuaWwKKyAgb2Zmc2V0cyA9IFtdCisgIGVuZGlhbm5lc3NNYXJrZXJCeXRlcyA9
IG5pbAorICAKKyAgZGVmIHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgIGJ5dGVzID0gW10K
KyAgICA0LnRpbWVzIHsKKyAgICAgIGJ5dGVzIDw8IGlucC5nZXRieXRlCisgICAgfQorICAgIAor
ICAgIGlmIGVuZGlhbm5lc3MgPT0gOmxpdHRsZQorICAgICAgIyBMaXR0bGUgZW5kaWFuCisgICAg
ICAoYnl0ZXNbMF0gPDwgMCB8CisgICAgICAgYnl0ZXNbMV0gPDwgOCB8CisgICAgICAgYnl0ZXNb
Ml0gPDwgMTYgfAorICAgICAgIGJ5dGVzWzNdIDw8IDI0KQorICAgIGVsc2UKKyAgICAgICMgQmln
IGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDI0IHwKKyAgICAgICBieXRlc1sxXSA8PCAxNiB8
CisgICAgICAgYnl0ZXNbMl0gPDwgOCB8CisgICAgICAgYnl0ZXNbM10gPDwgMCkKKyAgICBlbmQK
KyAgZW5kCisgIAorICBbOmxpdHRsZSwgOmJpZ10uZWFjaCB7CisgICAgfCBlbmRpYW5uZXNzIHwK
KyAgICBtYWdpY0J5dGVzID0gW10KKyAgICBNQUdJQ19OVU1CRVJTLmVhY2ggeworICAgICAgfCBu
dW1iZXIgfAorICAgICAgY3VycmVudEJ5dGVzID0gW10KKyAgICAgIDQudGltZXMgeworICAgICAg
ICBjdXJyZW50Qnl0ZXMgPDwgKG51bWJlciAmIDB4ZmYpCisgICAgICAgIG51bWJlciA+Pj0gOAor
ICAgICAgfQorICAgICAgaWYgZW5kaWFubmVzcyA9PSA6YmlnCisgICAgICAgIGN1cnJlbnRCeXRl
cy5yZXZlcnNlIQorICAgICAgZW5kCisgICAgICBtYWdpY0J5dGVzICs9IGN1cnJlbnRCeXRlcwor
ICAgIH0KKyAgICAKKyAgICBGaWxlLm9wZW4oZmlsZSwgInIiKSB7CisgICAgICB8IGlucCB8Cisg
ICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgbG9vcCB7CisgICAgICAgIGJ5dGUgPSBpbnAu
Z2V0Ynl0ZQorICAgICAgICBicmVhayB1bmxlc3MgYnl0ZQorICAgICAgICBpZiBieXRlID09IG1h
Z2ljQnl0ZXNbd2hlcmVJbk1hcmtlcl0KKyAgICAgICAgICB3aGVyZUluTWFya2VyICs9IDEKKyAg
ICAgICAgICBpZiB3aGVyZUluTWFya2VyID09IG1hZ2ljQnl0ZXMuc2l6ZQorICAgICAgICAgICAg
IyBXZSBoYXZlIGEgbWF0Y2ghIElmIHdlIGhhdmUgbm90IHlldCByZWFkIHRoZSBlbmRpYW5uZXNz
IG1hcmtlciBhbmQgaW5kZXgsCisgICAgICAgICAgICAjIHRoZW4gcmVhZCB0aG9zZSBub3c7IG90
aGVyd2lzZSByZWFkIGFuIG9mZnNldC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgbm90
IGluZGV4CisgICAgICAgICAgICAgIGluZGV4ID0gcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIG9mZnNldHMgPDwgcmVhZEludChlbmRpYW5u
ZXNzLCBpbnApCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd2hl
cmVJbk1hcmtlciA9IDAKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgIHdo
ZXJlSW5NYXJrZXIgPSAwCisgICAgICAgIGVuZAorICAgICAgfQorICAgIH0KKyAgICAKKyAgICBi
cmVhayBpZiBpbmRleAorICB9CisgIAorICByYWlzZSB1bmxlc3MgaW5kZXgKKyAgCisgIFtvZmZz
ZXRzLCBpbmRleF0KK2VuZAorCisjCisjIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0
KSAtPiBbb2Zmc2V0cywgc2l6ZXNdCisjCisjIEJ1aWxkcyBhIG1hcHBpbmcgYmV0d2VlbiBTdHJ1
Y3RPZmZzZXQgbm9kZXMgYW5kIHRoZWlyIHZhbHVlcy4KKyMKKworZGVmIGJ1aWxkT2Zmc2V0c01h
cChhc3QsIG9mZnNldHNMaXN0KQorICBvZmZzZXRzTWFwID0ge30KKyAgc2l6ZXNNYXAgPSB7fQor
ICBhc3RPZmZzZXRzTGlzdCA9IG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0U2l6ZXNMaXN0ID0gc2l6
ZXNMaXN0KGFzdCkKKyAgcmFpc2UgdW5sZXNzIGFzdE9mZnNldHNMaXN0LnNpemUgKyBhc3RTaXpl
c0xpc3Quc2l6ZSA9PSBvZmZzZXRzTGlzdC5zaXplCisgIG9mZnNldHNMaXN0KGFzdCkuZWFjaF93
aXRoX2luZGV4IHsKKyAgICB8IHN0cnVjdE9mZnNldCwgaW5kZXggfAorICAgIG9mZnNldHNNYXBb
c3RydWN0T2Zmc2V0XSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgc2l6ZXNMaXN0KGFzdCku
ZWFjaF93aXRoX2luZGV4IHsKKyAgICB8IHNpemVvZiwgaW5kZXggfAorICAgIHNpemVzTWFwW3Np
emVvZl0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICB9CisgIFtvZmZzZXRzTWFwLCBzaXplc01hcF0K
K2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vcHQucmIKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb3B0LnJiCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb3B0LnJiCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDEzNCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworcmVxdWlyZSAiYXN0IgorCisjCisjICJPcHRpbWl6YXRpb24iIHBhc3Nlcy4gVGhl
c2UgYXJlIHVzZWQgdG8gbG93ZXIgdGhlIHJlcHJlc2VudGF0aW9uIGZvcgorIyBiYWNrZW5kcyB0
aGF0IGNhbm5vdCBoYW5kbGUgc29tZSBvZiBvdXIgaGlnaGVyLWxldmVsIGluc3RydWN0aW9ucy4K
KyMKKworIworIyBBIHRlbXBvcmFyeSAtIGEgdmFyaWFibGUgdGhhdCB3aWxsIGJlIGFsbG9jYXRl
ZCB0byBhIHJlZ2lzdGVyIGFmdGVyIHdlJ3JlCisjIGRvbmUuCisjCisKK2NsYXNzIE5vZGUKKyAg
ZGVmIHJlcGxhY2VUZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkKKyAgICBtYXBDaGlsZHJl
biB7CisgICAgICB8IG5vZGUgfAorICAgICAgbm9kZS5yZXBsYWNlVGVtcG9yYXJpZXNXaXRoUmVn
aXN0ZXJzKGtpbmQpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBUbXAgPCBOb0NoaWxkcmVu
CisgIGF0dHJfcmVhZGVyIDpmaXJzdE1lbnRpb24sIDpsYXN0TWVudGlvbgorICBhdHRyX3JlYWRl
ciA6a2luZAorICBhdHRyX2FjY2Vzc29yIDpyZWdpc3RlcgorCisgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIGtpbmQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAa2luZCA9IGtpbmQK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIkdG1wI3tvYmplY3RfaWR9IgorICBlbmQKKyAg
CisgIGRlZiBtZW50aW9uIShwb3NpdGlvbikKKyAgICBpZiBub3QgQGZpcnN0TWVudGlvbiBvciBw
b3NpdGlvbiA8IEBmaXJzdE1lbnRpb24KKyAgICAgIEBmaXJzdE1lbnRpb24gPSBwb3NpdGlvbgor
ICAgIGVuZAorICAgIGlmIG5vdCBAbGFzdE1lbnRpb24gb3IgcG9zaXRpb24gPiBAbGFzdE1lbnRp
b24KKyAgICAgIEBsYXN0TWVudGlvbiA9IHBvc2l0aW9uCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmIHJlcGxhY2VUZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkKKyAgICBpZiBAa2luZCA9
PSBraW5kCisgICAgICByYWlzZSAiRGlkIG5vdCBhbGxvY2F0ZSByZWdpc3RlciB0byB0ZW1wb3Jh
cnkgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIEByZWdpc3RlcgorICAgICAgQHJlZ2lz
dGVyCisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhZGRy
ZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVu
ZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiByZWdp
c3Rlcj8KKyAgICB0cnVlCisgIGVuZAorZW5kCisKKyMgQXNzaWduIHJlZ2lzdGVycyB0byB0ZW1w
b3JhcmllcywgYnkgZmluZGluZyB3aGljaCB0ZW1wb3JhcmllcyBpbnRlcmZlcmUKKyMgd2l0aCBl
YWNoIG90aGVyLiBOb3RlIHRoYXQgdGhpcyByZWxpZXMgb24gdGVtcG9yYXJ5IGxpdmUgcmFuZ2Vz
IG5vdCBjcm9zc2luZworIyBiYXNpYyBibG9jayBib3VuZGFyaWVzLgorCitkZWYgYXNzaWduUmVn
aXN0ZXJzVG9UZW1wb3JhcmllcyhsaXN0LCBraW5kLCByZWdpc3RlcnMpCisgIGxpc3QuZWFjaF93
aXRoX2luZGV4IHsKKyAgICB8IG5vZGUsIGluZGV4IHwKKyAgICBub2RlLmZpbHRlcihUbXApLnVu
aXEuZWFjaCB7CisgICAgICB8IHRtcCB8CisgICAgICBpZiB0bXAua2luZCA9PSBraW5kCisgICAg
ICAgIHRtcC5tZW50aW9uISBpbmRleAorICAgICAgZW5kCisgICAgfQorICB9CisgIAorICBmcmVl
UmVnaXN0ZXJzID0gcmVnaXN0ZXJzLmR1cAorICBsaXN0LmVhY2hfd2l0aF9pbmRleCB7CisgICAg
fCBub2RlLCBpbmRleCB8CisgICAgdG1wTGlzdCA9IG5vZGUuZmlsdGVyKFRtcCkudW5pcQorICAg
IHRtcExpc3QuZWFjaCB7CisgICAgICB8IHRtcCB8CisgICAgICBpZiB0bXAua2luZCA9PSBraW5k
IGFuZCB0bXAuZmlyc3RNZW50aW9uID09IGluZGV4CisgICAgICAgIHJhaXNlICJDb3VsZCBub3Qg
YWxsb2NhdGUgcmVnaXN0ZXIgdG8gdGVtcG9yYXJ5IGF0ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5n
fSIgaWYgZnJlZVJlZ2lzdGVycy5lbXB0eT8KKyAgICAgICAgdG1wLnJlZ2lzdGVyID0gZnJlZVJl
Z2lzdGVycy5wb3AKKyAgICAgIGVuZAorICAgIH0KKyAgICB0bXBMaXN0LmVhY2ggeworICAgICAg
fCB0bXAgfAorICAgICAgaWYgdG1wLmtpbmQgPT0ga2luZCBhbmQgdG1wLmxhc3RNZW50aW9uID09
IGluZGV4CisgICAgICAgIGZyZWVSZWdpc3RlcnMucHVzaCB0bXAucmVnaXN0ZXIKKyAgICAgICAg
cmFpc2UgIlJlZ2lzdGVyIGFsbG9jYXRpb24gaW5jb25zaXN0ZW5jeSBhdCAje25vZGUuY29kZU9y
aWdpblN0cmluZ30iIGlmIGZyZWVSZWdpc3RlcnMuc2l6ZSA+IHJlZ2lzdGVycy5zaXplCisgICAg
ICBlbmQKKyAgICB9CisgIH0KKyAgCisgIGxpc3QubWFwIHsKKyAgICB8IG5vZGUgfAorICAgIG5v
ZGUucmVwbGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lzdGVycyhraW5kKQorICB9CitlbmQKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1ODUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUg
bWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImluc3RydWN0aW9ucyIKK3JlcXVpcmUgInJl
Z2lzdGVycyIKKworY2xhc3MgVG9rZW4KKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4sIDpzdHJp
bmcKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cmluZykKKyAgICBAY29kZU9y
aWdpbiA9IGNvZGVPcmlnaW4KKyAgICBAc3RyaW5nID0gc3RyaW5nCisgIGVuZAorICAKKyAgZGVm
ID09KG90aGVyKQorICAgIGlmIG90aGVyLmlzX2E/IFRva2VuCisgICAgICBAc3RyaW5nID09IG90
aGVyLnN0cmluZworICAgIGVsc2UKKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIKKyAgICBlbmQKKyAg
ZW5kCisgIAorICBkZWYgPX4ob3RoZXIpCisgICAgQHN0cmluZyA9fiBvdGhlcgorICBlbmQKKyAg
CisgIGRlZiB0b19zCisgICAgIiN7QHN0cmluZy5pbnNwZWN0fSBhdCBsaW5lICN7Y29kZU9yaWdp
bn0iCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgY29tbWVu
dC5lbXB0eT8KKyAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfSIKKyAgICBlbHNlCisg
ICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc306ICN7Y29tbWVudFswXX0iCisgICAgZW5k
CisgIGVuZAorZW5kCisKKyMKKyMgVGhlIGxleGVyLiBUYWtlcyBhIHN0cmluZyBhbmQgcmV0dXJu
cyBhbiBhcnJheSBvZiB0b2tlbnMuCisjCisKK2RlZiBsZXgoc3RyKQorICByZXN1bHQgPSBbXQor
ICBsaW5lTnVtYmVyID0gMQorICB3aGlsZSBub3Qgc3RyLmVtcHR5PworICAgIGNhc2Ugc3RyCisg
ICAgd2hlbiAvXEFcIyhbXlxuXSopLworICAgICAgIyBjb21tZW50LCBpZ25vcmUKKyAgICB3aGVu
IC9cQVxuLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICAg
IGxpbmVOdW1iZXIgKz0gMQorICAgIHdoZW4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKikvCisg
ICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBXC4o
W2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQm
KQorICAgIHdoZW4gL1xBXyhbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5u
ZXcobGluZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEEoWyBcdF0rKS8KKyAgICAgICMgd2hpdGVz
cGFjZSwgaWdub3JlCisgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSspLworICAgICAgcmVzdWx0
IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAgICB3aGVuIC9cQTAoWzAt
N10rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYub2N0LnRvX3Mp
CisgICAgd2hlbiAvXEEoWzAtOV0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51
bWJlciwgJCYpCisgICAgd2hlbiAvXEE6Oi8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGlu
ZU51bWJlciwgJCYpCisgICAgd2hlbiAvXEFbOixcKFwpXFtcXT1cK1wtKl0vCisgICAgICByZXN1
bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJM
ZXhlciBlcnJvciBhdCBsaW5lIG51bWJlciAje2xpbmVOdW1iZXJ9LCB1bmV4cGVjdGVkIHNlcXVl
bmNlICN7c3RyWzAuLjIwXS5pbnNwZWN0fSIKKyAgICBlbmQKKyAgICBzdHIgPSAkfi5wb3N0X21h
dGNoCisgIGVuZAorICByZXN1bHQKK2VuZAorCisjCisjIFRva2VuIGlkZW50aWZpY2F0aW9uLgor
IworCitkZWYgaXNSZWdpc3Rlcih0b2tlbikKKyAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTgor
ZW5kCisKK2RlZiBpc0luc3RydWN0aW9uKHRva2VuKQorICB0b2tlbiA9fiBJTlNUUlVDVElPTl9Q
QVRURVJOCitlbmQKKworZGVmIGlzS2V5d29yZCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBKCh0cnVl
KXwoZmFsc2UpfChpZil8KHRoZW4pfChlbHNlKXwoZWxzaWYpfChlbmQpfChhbmQpfChvcil8KG5v
dCl8KG1hY3JvKXwoY29uc3QpfChzaXplb2YpfChlcnJvcikpXFovIG9yCisgICAgdG9rZW4gPX4g
UkVHSVNURVJfUEFUVEVSTiBvcgorICAgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2Vu
ZAorCitkZWYgaXNJZGVudGlmaWVyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbYS16QS1aXShbYS16
QS1aMC05X10qKVxaLyBhbmQgbm90IGlzS2V5d29yZCh0b2tlbikKK2VuZAorCitkZWYgaXNMYWJl
bCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBXyhbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBp
c0xvY2FsTGFiZWwodG9rZW4pCisgIHRva2VuID1+IC9cQVwuKFthLXpBLVowLTlfXSopXFovCitl
bmQKKworZGVmIGlzVmFyaWFibGUodG9rZW4pCisgIGlzSWRlbnRpZmllcih0b2tlbikgb3IgaXNS
ZWdpc3Rlcih0b2tlbikKK2VuZAorCitkZWYgaXNJbnRlZ2VyKHRva2VuKQorICB0b2tlbiA9fiAv
XEFbMC05XS8KK2VuZAorCisjCisjIFRoZSBwYXJzZXIuIFRha2VzIGFuIGFycmF5IG9mIHRva2Vu
cyBhbmQgcmV0dXJucyBhbiBBU1QuIE1ldGhvZHMKKyMgb3RoZXIgdGhhbiBwYXJzZSh0b2tlbnMp
IGFyZSBub3QgZm9yIHB1YmxpYyBjb25zdW1wdGlvbi4KKyMKKworY2xhc3MgUGFyc2VyCisgIGRl
ZiBpbml0aWFsaXplKHRva2VucykKKyAgICBAdG9rZW5zID0gdG9rZW5zCisgICAgQGlkeCA9IDAK
KyAgZW5kCisgIAorICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBpZiBAdG9rZW5zW0Bp
ZHhdCisgICAgICBAdG9rZW5zW0BpZHhdLnBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgZWxzZQor
ICAgICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVu
ZCBvZiBmaWxlIgorICAgICAgZWxzZQorICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5k
IG9mIGZpbGU6ICN7Y29tbWVudFswXX0iCisgICAgICBlbmQKKyAgICBlbmQKKyAgZW5kCisgIAor
ICBkZWYgY29uc3VtZShyZWdleHApCisgICAgaWYgcmVnZXhwCisgICAgICBwYXJzZUVycm9yIHVu
bGVzcyBAdG9rZW5zW0BpZHhdID1+IHJlZ2V4cAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3Ig
dW5sZXNzIEBpZHggPT0gQHRva2Vucy5sZW5ndGgKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAg
ZW5kCisgIAorICBkZWYgc2tpcE5ld0xpbmUKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJc
biIKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRp
Y2F0ZUF0b20KKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJub3QiCisgICAgICBAaWR4ICs9IDEK
KyAgICAgIHBhcnNlUHJlZGljYXRlQXRvbQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigi
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByZXN1bHQgPSBwYXJz
ZVByZWRpY2F0ZQorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIK
KyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9
PSAidHJ1ZSIKKyAgICAgIHJlc3VsdCA9IFRydWUuaW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQor
ICAgICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZmFsc2UiCisgICAgICBy
ZXN1bHQgPSBGYWxzZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAg
ICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gU2V0dGlu
Zy5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcp
CisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJy
b3IKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBbmQKKyAgICByZXN1
bHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJhbmQi
CisgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQXRv
bQorICAgICAgcmVzdWx0ID0gQW5kLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAg
IGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZQorICAgICMg
c29tZSBleGFtcGxlcyBvZiBwcmVjZWRlbmNlOgorICAgICMgbm90IGEgYW5kIGIgLT4gKG5vdCBh
KSBhbmQgYgorICAgICMgYSBhbmQgYiBvciBjIC0+IChhIGFuZCBiKSBvciBjCisgICAgIyBhIG9y
IGIgYW5kIGMgLT4gYSBvciAoYiBhbmQgYykKKyAgICAKKyAgICByZXN1bHQgPSBwYXJzZVByZWRp
Y2F0ZUFuZAorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIm9yIgorICAgICAgY29kZU9yaWdp
biA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lw
TmV3TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAgICAgcmVzdWx0ID0g
T3IubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5kCisgICAgcmVzdWx0Cisg
IGVuZAorICAKKyAgZGVmIHBhcnNlVmFyaWFibGUKKyAgICBpZiBpc1JlZ2lzdGVyKEB0b2tlbnNb
QGlkeF0pCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID1+IEZQUl9QQVRURVJOCisgICAgICAgIHJl
c3VsdCA9IEZQUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRv
a2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IFJlZ2lzdGVy
SUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5n
KQorICAgICAgZW5kCisgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAg
ICByZXN1bHQgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRv
a2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAor
ICAgIEBpZHggKz0gMQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUFkZHJlc3Mo
b2Zmc2V0KQorICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAg
Y29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIAorICAgICMgVGhyZWUg
cG9zc2liaWxpdGllczoKKyAgICAjIFtdICAgICAgIC0+IEFic29sdXRlQWRkcmVzcworICAgICMg
W2FdICAgICAgLT4gQWRkcmVzcworICAgICMgW2EsYl0gICAgLT4gQmFzZUluZGV4IHdpdGggc2Nh
bGUgPSAxCisgICAgIyBbYSxiLGNdICAtPiBCYXNlSW5kZXgKKyAgICAKKyAgICBAaWR4ICs9IDEK
KyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXR1
cm4gQWJzb2x1dGVBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXQpCisgICAgZW5kCisgICAg
YSA9IHBhcnNlVmFyaWFibGUKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgcmVz
dWx0ID0gQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgYSwgb2Zmc2V0KQorICAgIGVsc2UKKyAgICAg
IHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICBAaWR4ICs9IDEK
KyAgICAgIGIgPSBwYXJzZVZhcmlhYmxlCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgor
ICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIDEsIG9mZnNl
dCkKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9
PSAiLCIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIFsiMSIs
ICIyIiwgIjQiLCAiOCJdLm1lbWJlcj8gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgYyA9
IEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBh
cnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAgIHJlc3VsdCA9IEJh
c2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgYywgb2Zmc2V0KQorICAgICAgZW5kCisgICAg
ZW5kCisgICAgQGlkeCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQ29s
b25Db2xvbgorICAgIHNraXBOZXdMaW5lCisgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbgorICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0Bp
ZHhdCisgICAgbmFtZXMgPSBbQHRva2Vuc1tAaWR4XS5zdHJpbmddCisgICAgQGlkeCArPSAxCisg
ICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiOjoiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHBh
cnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICBuYW1lcyA8
PCBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgICAgcmFp
c2UgaWYgbmFtZXMuZW1wdHk/CisgICAgW2NvZGVPcmlnaW4sIG5hbWVzXQorICBlbmQKKyAgCisg
IGRlZiBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgc2tpcE5ld0xpbmUKKyAgICBpZiBAdG9rZW5z
W0BpZHhdID09ICItIgorICAgICAgQGlkeCArPSAxCisgICAgICBOZWdJbW1lZGlhdGUubmV3KEB0
b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHBhcnNlRXhwcmVzc2lvbkF0b20pCisgICAgZWxz
aWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0ID0g
cGFyc2VFeHByZXNzaW9uCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09
ICIpIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0ludGVnZXIg
QHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kpCisgICAgICBAaWR4ICs9IDEK
KyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAg
ICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAgaWYgbmFtZXMuc2l6
ZSA+IDEKKyAgICAgICAgU3RydWN0T2Zmc2V0LmZvckZpZWxkKGNvZGVPcmlnaW4sIG5hbWVzWzAu
Li0yXS5qb2luKCc6OicpLCBuYW1lc1stMV0pCisgICAgICBlbHNlCisgICAgICAgIFZhcmlhYmxl
LmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXNbMF0pCisgICAgICBlbmQKKyAgICBlbHNpZiBpc1Jl
Z2lzdGVyIEB0b2tlbnNbQGlkeF0KKyAgICAgIHBhcnNlVmFyaWFibGUKKyAgICBlbHNpZiBAdG9r
ZW5zW0BpZHhdID09ICJzaXplb2YiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIGNvZGVPcmlnaW4s
IG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICBTaXplb2YuZm9yTmFtZShjb2RlT3JpZ2lu
LCBuYW1lcy5qb2luKCc6OicpKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQK
KyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9uTXVsCisgICAgc2tpcE5ld0xpbmUKKyAg
ICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9
PSAiKiIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICByZXN1bHQgPSBNdWxJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2Rl
T3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbkF0b20pCisgICAgICBlbHNlCisgICAgICAg
IHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYg
Y291bGRCZUV4cHJlc3Npb24KKyAgICBAdG9rZW5zW0BpZHhdID09ICItIiBvciBAdG9rZW5zW0Bp
ZHhdID09ICJzaXplb2YiIG9yIGlzSW50ZWdlcihAdG9rZW5zW0BpZHhdKSBvciBpc1ZhcmlhYmxl
KEB0b2tlbnNbQGlkeF0pIG9yIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgIGVuZAorICAKKyAgZGVm
IHBhcnNlRXhwcmVzc2lvbgorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHBy
ZXNzaW9uTXVsCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKyIgb3IgQHRva2Vuc1tAaWR4
XSA9PSAiLSIKKyAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIisiCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgICByZXN1bHQgPSBBZGRJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5j
b2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkKKyAgICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gIi0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBTdWJJ
bW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNl
RXhwcmVzc2lvbk11bCkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAg
IGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZU9wZXJhbmQoY29tbWVudCkK
KyAgICBpZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgICAgZXhwciA9IHBhcnNlRXhwcmVzc2lvbgor
ICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgICAgcGFyc2VBZGRyZXNzKGV4cHIp
CisgICAgICBlbHNlCisgICAgICAgIGV4cHIKKyAgICAgIGVuZAorICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gIlsiCisgICAgICBwYXJzZUFkZHJlc3MoSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4sIDApKQorICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XQorICAg
ICAgcmVzdWx0ID0gTGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwg
TGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3Ry
aW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNMb2NhbExh
YmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IExvY2FsTGFiZWxSZWZlcmVuY2UubmV3
KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgTG9jYWxMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAxCisg
ICAgICByZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yKGNvbW1lbnQpCisgICAgZW5k
CisgIGVuZAorICAKKyAgZGVmIHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICBza2lwTmV3TGluZQor
ICAgIGNvbnN1bWUoL1xBXChcWi8pCisgICAgdmFyaWFibGVzID0gW10KKyAgICBsb29wIHsKKyAg
ICAgIHNraXBOZXdMaW5lCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5z
W0BpZHhdKQorICAgICAgICB2YXJpYWJsZXMgPDwgVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5z
W0BpZHhdID09ICIsIgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAg
ICAgcGFyc2VFcnJvcgorICAgICAgICBlbmQKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJv
cgorICAgICAgZW5kCisgICAgfQorICAgIHZhcmlhYmxlcworICBlbmQKKyAgCisgIGRlZiBwYXJz
ZVNlcXVlbmNlKGZpbmFsLCBjb21tZW50KQorICAgIGZpcnN0Q29kZU9yaWdpbiA9IEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbgorICAgIGxpc3QgPSBbXQorICAgIGxvb3AgeworICAgICAgaWYgKEBp
ZHggPT0gQHRva2Vucy5sZW5ndGggYW5kIG5vdCBmaW5hbCkgb3IgKGZpbmFsIGFuZCBAdG9rZW5z
W0BpZHhdID1+IGZpbmFsKQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4
XSA9PSAiXG4iCisgICAgICAgICMgaWdub3JlCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxz
aWYgQHRva2Vuc1tAaWR4XSA9PSAiY29uc3QiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBw
YXJzZUVycm9yIHVubGVzcyBpc1ZhcmlhYmxlIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgdmFyaWFi
bGUgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tA
aWR4XS5zdHJpbmcpCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVz
cyBAdG9rZW5zW0BpZHhdID09ICI9IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFsdWUg
PSBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBjb25zdCAje3ZhcmlhYmxlLm5hbWV9IikK
KyAgICAgICAgbGlzdCA8PCBDb25zdERlY2wubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwg
dmFyaWFibGUsIHZhbHVlKQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZXJyb3IiCisg
ICAgICAgIGxpc3QgPDwgRXJyb3IubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbikKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJpZiIKKyAgICAgICAg
Y29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUK
KyAgICAgICAgY29uc3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICBza2lwTmV3TGlu
ZQorICAgICAgICBpZlRoZW5FbHNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGlj
YXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBp
bnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAgIGxpc3QgPDwgaWZU
aGVuRWxzZQorICAgICAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJlbHNpZiIKKyAgICAgICAg
ICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVBy
ZWRpY2F0ZQorICAgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAg
ICBza2lwTmV3TGluZQorICAgICAgICAgIGVsc2VDYXNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9y
aWdpbiwgcHJlZGljYXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlc
Wi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAg
ICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IGVsc2VDYXNlCisgICAgICAgICAgaWZUaGVuRWxzZSA9
IGVsc2VDYXNlCisgICAgICAgIGVuZAorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJlbHNl
IgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBw
YXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBlbHNlIGNhc2UgZm9yIFwi
aWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVs
c2UKKyAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJlbmQiCisg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4
XSA9PSAibWFjcm8iCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4KKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICBuYW1lID0g
QHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhcmlhYmxl
cyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xB
ZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIG1hY3JvICN7bmFtZX0iKQorICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgbGlzdCA8PCBNYWNyby5uZXcoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVz
LCBib2R5KQorICAgICAgZWxzaWYgaXNJbnN0cnVjdGlvbiBAdG9rZW5zW0BpZHhdCisgICAgICAg
IGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0
b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBpZiAobm90IGZp
bmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhd
ID1+IGZpbmFsKQorICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLCBhbmQgaXQn
cyB0aGUgbGFzdCBvbmUuCisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9y
aWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAiXG4iCisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24uCisgICAg
ICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICAjIEl0J3MgZGVmaW5pdGVs
eSBhbiBpbnN0cnVjdGlvbiwgYW5kIGl0IGhhcyBhdCBsZWFzdCBvbmUgb3BlcmFuZC4KKyAgICAg
ICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9IGZhbHNlCisgICAg
ICAgICAgbG9vcCB7CisgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxl
IGluc2lkZSBvZiBpbnN0cnVjdGlvbiAje25hbWV9IikKKyAgICAgICAgICAgIGlmIChub3QgZmlu
YWwgYW5kIEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0g
PX4gZmluYWwpCisgICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24gYW5k
IG9mIHRoZSBzZXF1ZW5jZS4KKyAgICAgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9IHRydWUKKyAg
ICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwi
CisgICAgICAgICAgICAgICMgSGFzIGFub3RoZXIgb3BlcmFuZC4KKyAgICAgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAg
ICAgICAgIyBUaGUgZW5kIG9mIHRoZSBpbnN0cnVjdGlvbi4KKyAgICAgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
IHBhcnNlRXJyb3IoIkV4cGVjdGVkIGEgY29tbWEsIG5ld2xpbmUsIG9yICN7ZmluYWx9IGFmdGVy
ICN7b3BlcmFuZHMubGFzdC5kdW1wfSIpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICB9Cisg
ICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFu
ZHMpCisgICAgICAgICAgaWYgZW5kT2ZTZXF1ZW5jZQorICAgICAgICAgICAgYnJlYWsKKyAgICAg
ICAgICBlbmQKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tA
aWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAg
ICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgICAgICAjIE1hY3JvIGludm9jYXRpb24u
CisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAg
IHNraXBOZXdMaW5lCisgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvb3AgeworICAgICAg
ICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJt
YWNybyIKKyAgICAgICAgICAgICAgICAjIEl0J3MgYSBtYWNybyBsYW1iZGEhCisgICAgICAgICAg
ICAgICAgY29kZU9yaWdpbklubmVyID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgdmFyaWFibGVzID0gcGFyc2VNYWNy
b1ZhcmlhYmxlcworICAgICAgICAgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxa
LywgIndoaWxlIGluc2lkZSBvZiBhbm9ueW1vdXMgbWFjcm8gcGFzc2VkIGFzIGFyZ3VtZW50IHRv
ICN7bmFtZX0iKQorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIG9w
ZXJhbmRzIDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luSW5uZXIsIG5pbCwgdmFyaWFibGVzLCBib2R5
KQorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VP
cGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gY2FsbCB0byAje25hbWV9IikKKyAgICAgICAg
ICAgICAgZW5kCisgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0
b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAg
ICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAg
ICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHBhcnNlRXJyb3IgIlVuZXhwZWN0ZWQgI3tAdG9rZW5zW0BpZHhdLnN0cmluZy5pbnNwZWN0
fSB3aGlsZSBwYXJzaW5nIGludm9jYXRpb24gb2YgbWFjcm8gI3tuYW1lfSIKKyAgICAgICAgICAg
ICAgZW5kCisgICAgICAgICAgICB9CisgICAgICAgICAgZW5kCisgICAgICAgICAgbGlzdCA8PCBN
YWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAgICBlbHNlCisg
ICAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0ZWQgXCIoXCIgYWZ0ZXIgI3tuYW1lfSIKKyAgICAg
ICAgZW5kCisgICAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0gb3IgaXNMb2NhbExhYmVs
IEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIjoiCisgICAg
ICAgICMgSXQncyBhIGxhYmVsLgorICAgICAgICBpZiBpc0xhYmVsIG5hbWUKKyAgICAgICAgICBs
aXN0IDw8IExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZWxzZQorICAg
ICAgICAgIGxpc3QgPDwgTG9jYWxMYWJlbC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
ICAgIGVuZAorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJv
ciAiRXhwZWN0aW5nIHRlcm1pbmFsICN7ZmluYWx9ICN7Y29tbWVudH0iCisgICAgICBlbmQKKyAg
ICB9CisgICAgU2VxdWVuY2UubmV3KGZpcnN0Q29kZU9yaWdpbiwgbGlzdCkKKyAgZW5kCitlbmQK
KworZGVmIHBhcnNlKHRva2VucykKKyAgcGFyc2VyID0gUGFyc2VyLm5ldyh0b2tlbnMpCisgIHBh
cnNlci5wYXJzZVNlcXVlbmNlKG5pbCwgIiIpCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworR1BS
UyA9CisgIFsKKyAgICJ0MCIsCisgICAidDEiLAorICAgInQyIiwKKyAgICJ0MyIsCisgICAidDQi
LAorICAgImNmciIsCisgICAiYTAiLAorICAgImExIiwKKyAgICJyMCIsCisgICAicjEiLAorICAg
InNwIiwKKyAgICJsciIKKyAgXQorCitGUFJTID0KKyAgWworICAgImZ0MCIsCisgICAiZnQxIiwK
KyAgICJmdDIiLAorICAgImZ0MyIsCisgICAiZnQ0IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisg
ICAiZmExIiwKKyAgICJmYTIiLAorICAgImZhMyIsCisgICAiZnIiCisgIF0KKworUkVHSVNURVJT
ID0gR1BSUyArIEZQUlMKKworR1BSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJT
LmpvaW4oJyl8KCcpICsgJykpXFxaJykKK0ZQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgn
ICsgRlBSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdl
eHAubmV3KCdcXEEoKCcgKyBSRUdJU1RFUlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2VsZl9oYXNoLnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworcmVxdWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJwYXRobmFtZSIKKwor
IworIyBzZWxmSGFzaCAtPiBTSEExIGhleGRpZ2VzdAorIworIyBSZXR1cm5zIGEgaGFzaCBvZiB0
aGUgb2ZmbGluZWFzbSBzb3VyY2UgY29kZS4gVGhpcyBhbGxvd3MgZGVwZW5kZW5jeQorIyB0cmFj
a2luZyBmb3Igbm90IGp1c3QgY2hhbmdlcyBpbiBpbnB1dCwgYnV0IGFsc28gY2hhbmdlcyBpbiB0
aGUgYXNzZW1ibGVyCisjIGl0c2VsZi4KKyMKKworZGVmIHNlbGZIYXNoCisgIGNvbnRlbnRzID0g
IiIKKyAgbXlQYXRoID0gUGF0aG5hbWUubmV3KF9fRklMRV9fKS5kaXJuYW1lCisgIERpci5mb3Jl
YWNoKG15UGF0aCkgeworICAgIHwgZW50cnkgfAorICAgIGlmIGVudHJ5ID1+IC9cLnJiJC8KKyAg
ICAgIGNvbnRlbnRzICs9IElPOjpyZWFkKG15UGF0aCArIGVudHJ5KQorICAgIGVuZAorICB9Cisg
IHJldHVybiBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGNvbnRlbnRzKQorZW5kCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjA1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgInBhcnNl
ciIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworIworIyBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlv
bnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25zCisjCisjIENvbXB1dGVzIGFuIGFycmF5IG9m
IHNldHRpbmdzIG1hcHMsIHdoZXJlIGEgc2V0dGluZ3MgbWFwIGNvbnN0aXR1dGVzCisjIGEgY29u
ZmlndXJhdGlvbiBmb3IgdGhlIGFzc2VtYmx5IGNvZGUgYmVpbmcgZ2VuZXJhdGVkLiBUaGUgbWFw
CisjIGNvbnRhaW5zIGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBzZXR0aW5ncyBuYW1l
cyAoc3RyaW5ncykgYW5kCisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xlYW5zICh0cnVlIGZvciBlbmFi
bGVkLCBmYWxzZSBmb3IgZGlzYWJsZWQpLgorIworCitkZWYgY29tcHV0ZVNldHRpbmdzQ29tYmlu
YXRpb25zKGFzdCkKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBbXQorICAKKyAgZGVmIHNldHRp
bmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbWFwU29GYXIsIHJlbWFpbmluZykK
KyAgICBpZiByZW1haW5pbmcuZW1wdHk/CisgICAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA8PCBt
YXBTb0ZhcgorICAgICAgcmV0dXJuCisgICAgZW5kCisgICAgCisgICAgbmV3TWFwID0gbWFwU29G
YXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSB0cnVlCisgICAgc2V0dGluZ3NDb21i
aW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmluZ1sxLi4tMV0pCisg
ICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0g
PSBmYWxzZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3
TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmluYXRvcihz
ZXR0aW5nc0NvbWJpbmF0aW9ucywge30sIChhc3QuZmlsdGVyKFNldHRpbmcpLnVuaXEuY29sbGVj
dHt8dnwgdi5uYW1lfSArIFsiWDg2IiwgIkFSTXY3Il0pLnVuaXEpCisgIAorICBzZXR0aW5nc0Nv
bWJpbmF0aW9ucworZW5kCisKKyMKKyMgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0
KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwgLi4u
IH0KKyMKKyMgRGV0ZXJtaW5lcyBpZiB0aGUgc2V0dGluZ3MgY29tYmluYXRpb24gaXMgdmFsaWQs
IGFuZCBpZiBzbywgY2FsbHMKKyMgdGhlIGJsb2NrIHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSBu
ZWVkIHRvIGdlbmVyYXRlIGNvZGUuCisjCisKK2RlZiBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRp
bmdzLCBhc3QpCisgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0aGlzIGNvbWJpbmF0b3Ig
Y2xhaW1zIHRvIHN1cHBvcnQuCisgIG51bUNsYWltZWRCYWNrZW5kcyA9IDAKKyAgc2VsZWN0ZWRC
YWNrZW5kID0gbmlsCisgIEJBQ0tFTkRTLmVhY2ggeworICAgIHwgYmFja2VuZCB8CisgICAgaXNT
dXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2JhY2tlbmRdCisgICAgcmFpc2UgdW5sZXNzIGlz
U3VwcG9ydGVkICE9IG5pbAorICAgIG51bUNsYWltZWRCYWNrZW5kcyArPSBpZiBpc1N1cHBvcnRl
ZCB0aGVuIDEgZWxzZSAwIGVuZAorICAgIGlmIGlzU3VwcG9ydGVkCisgICAgICBzZWxlY3RlZEJh
Y2tlbmQgPSBiYWNrZW5kCisgICAgZW5kCisgIH0KKyAgCisgIHJldHVybiBpZiBudW1DbGFpbWVk
QmFja2VuZHMgPiAxCisgIAorICAjIFJlc29sdmUgdGhlIEFTVCBkb3duIHRvIGEgbG93LWxldmVs
IGZvcm0gKG5vIG1hY3JvcyBvciBjb25kaXRpb25hbHMpLgorICBsb3dMZXZlbEFTVCA9IGFzdC5y
ZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIHlpZWxkIGNvbmNyZXRlU2V0
dGluZ3MsIGxvd0xldmVsQVNULCBzZWxlY3RlZEJhY2tlbmQKK2VuZAorCisjCisjIGZvckVhY2hW
YWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3Ms
IGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0Nv
bWJpbmF0aW9uKGFzdCwgc2V0dGluZ3NDb21iaW5hdGlvbnMpIHsKKyMgICAgIHwgY29uY3JldGVT
ZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9CisjCisjIEV4ZWN1dGVzIHRoZSBn
aXZlbiBibG9jayBmb3IgZWFjaCB2YWxpZCBzZXR0aW5ncyBjb21iaW5hdGlvbiBpbiB0aGUKKyMg
c2V0dGluZ3MgbWFwLiBUaGUgYXN0IHBhc3NlZCBpbnRvIHRoZSBibG9jayBpcyByZXNvbHZlZAor
IyAoYXN0LnJlc29sdmUpIGFnYWluc3QgdGhlIHNldHRpbmdzLgorIworIyBUaGUgZmlyc3QgZm9y
bSB3aWxsIGNhbGwgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgZm9yIHlvdS4KKyMK
KworZGVmIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCAqb3B0aW9uYWxTZXR0
aW5nc0NvbWJpbmF0aW9ucykKKyAgcmFpc2UgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9u
cy5zaXplID4gMQorICAKKyAgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucy5lbXB0eT8K
KyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhh
c3QpCisgIGVsc2UKKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IG9wdGlvbmFsU2V0dGluZ3ND
b21iaWF0aW9uc1swXQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zLmVhY2hfd2l0
aF9pbmRleCB7CisgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBpbmRleCB8CisgICAgZm9yU2V0dGlu
Z3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7CisgICAgICB8IGNvbmNyZXRlU2V0dGluZ3NfLCBs
b3dMZXZlbEFTVCwgYmFja2VuZCB8CisgICAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dM
ZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICB9CisgIH0KK2VuZAorCisjCisjIGNwcFNldHRp
bmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorIworIyBSZXR1cm5zIHRoZSBDKysgY29kZSB1c2Vk
IHRvIHRlc3QgaWYgd2UgYXJlIGluIGEgY29uZmlndXJhdGlvbiB0aGF0CisjIGNvcnJlc3BvbmRz
IHRvIHRoZSBnaXZlbiBjb25jcmV0ZSBzZXR0aW5ncy4KKyMKKworZGVmIGNwcFNldHRpbmdzVGVz
dChjb25jcmV0ZVNldHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdzLnRvX2EuY29s
bGVjdHsKKyAgICB8IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisgICAgICAgIiIKKyAgICAgZWxz
ZQorICAgICAgICIhIgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIgKyBwYWlyWzBdCisgIH0u
am9pbigiICYmICIpCitlbmQKKworIworIyBpc0FTVEVycm9uZW91cyhhc3QpCisjCisjIFRlc3Rz
IHRvIHNlZSBpZiB0aGUgQVNUIGNsYWltcyB0aGF0IHRoZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBp
ZiB0aGUKKyMgdXNlcidzIGNvZGUsIGFmdGVyIHNldHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJv
ciBub2Rlcy4KKyMKKworZGVmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAgbm90IGFzdC5maWx0ZXIo
RXJyb3IpLmVtcHR5PworZW5kCisKKyMKKyMgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNl
dHRpbmdzKQorIworIyBFbWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdlJ3JlIHVzaW5n
IHRoZSBnaXZlbiBjb25maWd1cmF0aW9uLgorIworCitkZWYgYXNzZXJ0Q29uZmlndXJhdGlvbihj
b25jcmV0ZVNldHRpbmdzKQorICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRl
U2V0dGluZ3MpCisgICRvdXRwdXQucHV0cyAiI2Vsc2UiCisgICRvdXRwdXQucHV0cyAiI2Vycm9y
IFwiQ29uZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAgJG91dHB1dC5wdXRzICIjZW5kaWYiCitl
bmQKKworIworIyBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3Qs
IGJhY2tlbmQpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4u
IH0KKyMKKyMgRW1pdHMgYWxsIHJlbGV2YW50IGd1YXJkcyB0byBzZWUgaWYgdGhlIGNvbmZpZ3Vy
YXRpb24gaG9sZHMgYW5kCisjIGNhbGxzIHRoZSBibG9jayBpZiB0aGUgY29uZmlndXJhdGlvbiBp
cyBub3QgZXJyb25lb3VzLgorIworCitkZWYgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3Jl
dGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKQorICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0
KGNvbmNyZXRlU2V0dGluZ3MpCisgIAorICBpZiBpc0FTVEVycm9uZW91cyhhc3QpCisgICAgJG91
dHB1dC5wdXRzICIjZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uXCIiCisgIGVsc2lmIG5v
dCBXT1JLSU5HX0JBQ0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICAkb3V0cHV0LnB1dHMgIiNl
cnJvciBcIlRoaXMgYmFja2VuZCBpcyBub3Qgc3VwcG9ydGVkIHlldC5cIiIKKyAgZWxzZQorICAg
IHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZAorICBlbmQKKyAgCisgICRvdXRw
dXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMKKyMgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25z
KGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwg
Li4uIH0KKyMKKyMgRW1pdHMgZ3VhcmQgY29kZXMgZm9yIGFsbCB2YWxpZCBjb25maWd1cmF0aW9u
cywgYW5kIGNhbGxzIHRoZSBibG9jaworIyBmb3IgdGhvc2UgY29uZmlndXJhdGlvbnMgdGhhdCBh
cmUgdmFsaWQgYW5kIG5vdCBlcnJvbmVvdXMuCisjCisKK2RlZiBlbWl0Q29kZUluQWxsQ29uZmln
dXJhdGlvbnMoYXN0KQorICBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgewor
ICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4IHwKKyAg
ICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICAgeWll
bGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgJG91
dHB1dC5wdXRzICIjZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwzNDIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3Jl
cXVpcmUgImFzdCIKKworIworIyBub2RlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyMKKyMg
Q29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IElmVGhlbkVsc2Ugbm9k
ZXMgYnkKKyMgc3Vic3RpdHV0aW5nIGNvbmNyZXRlIGJvb2xlYW4gdmFsdWVzIGZvciBlYWNoIFNl
dHRpbmcuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykK
KyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUKKyAgZGVm
IHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNz
IEZhbHNlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQK
K2VuZAorCitjbGFzcyBTZXR0aW5nCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisg
ICAgc2V0dGluZ3NbQG5hbWVdLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQKKyAgZGVm
IHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNl
dHRpbmdzKS52YWx1ZSBhbmQgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUp
LmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBPcgorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNl
dHRpbmdzKQorICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIG9yIEBy
aWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQK
KworY2xhc3MgTm90CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKG5vdCBA
Y2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5k
CisKK2NsYXNzIElmVGhlbkVsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAg
ICBpZiBAcHJlZGljYXRlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUKKyAgICAgIEB0
aGVuQ2FzZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZWxzZQorICAgICAgQGVsc2VD
YXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xh
c3MgU2VxdWVuY2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBuZXdMaXN0
ID0gW10KKyAgICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpdGVtID0gaXRl
bS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICBpZiBpdGVtLmlzX2E/IFNlcXVlbmNl
CisgICAgICAgIG5ld0xpc3QgKz0gaXRlbS5saXN0CisgICAgICBlbHNlCisgICAgICAgIG5ld0xp
c3QgPDwgaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2lu
LCBuZXdMaXN0KQorICBlbmQKK2VuZAorCisjCisjIG5vZGUuZGVtYWNyb2lmeShtYWNyb3MpCisj
IG5vZGUuc3Vic3RpdHV0ZShtYXBwaW5nKQorIworIyBkZW1hY3JvaWZ5KCkgY29uc3RydWN0cyBh
IG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBNYWNybworIyBub2Rlcywgd2hpbGUgc3Vi
c3RpdHV0ZSgpIHJlcGxhY2VzIFZhcmlhYmxlIG5vZGVzIHdpdGggdGhlIGdpdmVuCisjIG5vZGVz
IGluIHRoZSBtYXBwaW5nLgorIworCitjbGFzcyBOb2RlCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3Jv
cykKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLmRlbWFj
cm9pZnkobWFjcm9zKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5n
KQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3Rp
dHV0ZShtYXBwaW5nKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyht
YXBwaW5nKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQu
c3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgTWFj
cm8KKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBteU1hcHBpbmcgPSB7fQorICAgIG1h
cHBpbmcuZWFjaF9wYWlyIHsKKyAgICAgIHwga2V5LCB2YWx1ZSB8CisgICAgICB1bmxlc3MgQHZh
cmlhYmxlcy5pbmNsdWRlPyBrZXkKKyAgICAgICAgbXlNYXBwaW5nW2tleV0gPSB2YWx1ZQorICAg
ICAgZW5kCisgICAgfQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAg
Y2hpbGQuc3Vic3RpdHV0ZShteU1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBW
YXJpYWJsZQorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0K
KyAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVu
ZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGlu
ZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQor
ICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYg
c3Vic3RpdHV0ZShjb25zdGFudHMpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbXlDb25zdGFudHMg
PSBjb25zdGFudHMuZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAg
aWYgaXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAgICAgbXlDb25zdGFudHNbaXRlbS52YXJpYWJs
ZV0gPSBpdGVtLnZhbHVlLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICBlbHNlCisgICAg
ICAgIG5ld0xpc3QgPDwgaXRlbS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZW5kCisg
ICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKKyAgCisg
IGRlZiByZW5hbWVMYWJlbHMoY29tbWVudCkKKyAgICBtYXBwaW5nID0ge30KKyAgICAKKyAgICBA
bGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IExvY2FsTGFi
ZWwKKyAgICAgICAgbWFwcGluZ1tpdGVtXSA9IExvY2FsTGFiZWwudW5pcXVlKGlmIGNvbW1lbnQg
dGhlbiBjb21tZW50ICsgIl8iIGVsc2UgIiIgZW5kICsgaXRlbS5jbGVhbk5hbWUpCisgICAgICBl
bmQKKyAgICB9CisgICAgCisgICAgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICBlbmQKKyAg
CisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBteU1hY3JvcyA9IG1hY3Jvcy5kdXAKKyAg
ICBAbGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3Jv
CisgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBpdGVtCisgICAgICBlbmQKKyAgICB9Cisg
ICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAg
aWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICAjIElnbm9yZS4KKyAgICAgIGVsc2lmIGl0ZW0u
aXNfYT8gTWFjcm9DYWxsCisgICAgICAgIG1hcHBpbmcgPSB7fQorICAgICAgICBteU15TWFjcm9z
ID0gbXlNYWNyb3MuZHVwCisgICAgICAgIHJhaXNlICJDb3VsZCBub3QgZmluZCBtYWNybyAje2l0
ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgbXlNYWNyb3NbaXRl
bS5uYW1lXQorICAgICAgICByYWlzZSAiQXJndW1lbnQgY291bnQgbWlzbWF0Y2ggZm9yIGNhbGwg
dG8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIGl0ZW0u
b3BlcmFuZHMuc2l6ZSA9PSBteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlcy5zaXplCisgICAg
ICAgIGl0ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgfCBpZHggfAorICAgICAg
ICAgIGlmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBWYXJpYWJsZSBhbmQgbXlNYWNyb3NbaXRl
bS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0
ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lk
eF0ubmFtZV0KKyAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJs
ZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgIGVsc2lmIGl0ZW0ub3BlcmFuZHNbaWR4XS5p
c19hPyBNYWNybworICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZh
cmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgICBtYXBw
aW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFy
aWFibGVzW2lkeF1dID0gbmlsCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFt
ZV0udmFyaWFibGVzW2lkeF1dID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgZW5kCisg
ICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCArPSBteU1hY3Jvc1tpdGVtLm5hbWVdLmJvZHkuc3Vi
c3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNyb3MpLnJlbmFtZUxhYmVscyhpdGVt
Lm5hbWUpLmxpc3QKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtLmRlbWFjcm9p
ZnkobXlNYWNyb3MpCisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmln
aW4sIG5ld0xpc3QpLnN1YnN0aXR1dGUoe30pCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5yZXNv
bHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0
IGhhcyBvZmZzZXQgdmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMKKyMgb2Zmc2V0cy4KKyMKKwor
Y2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgbWFw
Q2hpbGRyZW4geworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlT2Zmc2V0cyhv
ZmZzZXRzLCBzaXplcykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldAor
ICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgb2Zmc2V0c1tzZWxm
XQorICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXRzW3NlbGZdKQorICAgIGVs
c2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mCisgIGRl
ZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBzaXplc1tzZWxmXQorICAg
ICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBzaXplc1tzZWxmXSkKKyAgICBlbHNlCisgICAg
ICBwdXRzICJDb3VsZCBub3QgZmluZCAje3NlbGYuaW5zcGVjdH0gaW4gI3tzaXplcy5rZXlzLmlu
c3BlY3R9IgorICAgICAgcHV0cyAic2l6ZXMgPSAje3NpemVzLmluc3BlY3R9IgorICAgICAgc2Vs
ZgorICAgIGVuZAorICBlbmQKK2VuZAorCisjCisjIG5vZGUuZm9sZAorIworIyBSZXNvbHZlIGNv
bnN0YW50IHJlZmVyZW5jZXMgYW5kIGNvbXB1dGUgYXJpdGhtZXRpYyBleHByZXNzaW9ucy4KKyMK
KworY2xhc3MgTm9kZQorICBkZWYgZm9sZAorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hp
bGQgfAorICAgICAgY2hpbGQuZm9sZAorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1t
ZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9
IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0
ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1t
ZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSArIEByaWdodC52YWx1ZSkKKyAgZW5k
CitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxl
ZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNz
IEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNf
YT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAt
IEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcworICBkZWYg
Zm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisg
ICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBz
ZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2Rl
T3JpZ2luLCBAbGVmdC52YWx1ZSAqIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3Mg
TmVnSW1tZWRpYXRlCisgIGRlZiBmb2xkCisgICAgQGNoaWxkID0gQGNoaWxkLmZvbGQKKyAgICBy
ZXR1cm4gc2VsZiB1bmxlc3MgQGNoaWxkLmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5u
ZXcoY29kZU9yaWdpbiwgLUBjaGlsZC52YWx1ZSkKKyAgZW5kCitlbmQKKworIworIyBub2RlLnJl
c29sdmVBZnRlclNldHRpbmdzKG9mZnNldHMsIHNpemVzKQorIworIyBDb21waWxlIGFzc2VtYmx5
IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2
ZShvZmZzZXRzLCBzaXplcykKKyAgICBkZW1hY3JvaWZ5KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZz
ZXRzLCBzaXplcykuZm9sZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4MSBAQAorIyBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMg
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
IyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYg
c3VwcG9ydHM4Qml0T25YODYKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJy
MCIsICJ0MSIsICJhMSIsICJyMSIsICJ0MiIsICJ0MyIKKyAgICAgIHRydWUKKyAgICB3aGVuICJ0
NCIsICJjZnIiCisgICAgICBmYWxzZQorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVu
ICJ0MCIsICJhMCIsICJyMCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAg
ICAgICAiJWFsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWF4IgorICAgICAgd2hlbiA6
aW50CisgICAgICAgICIlZWF4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5k
CisgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4g
OmJ5dGUKKyAgICAgICAgIiVkbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVkeCIKKyAg
ICAgIHdoZW4gOmludAorICAgICAgICAiJWVkeCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UK
KyAgICAgIGVuZAorICAgIHdoZW4gInQyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpi
eXRlCisgICAgICAgICIlY2wiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlY3giCisgICAg
ICB3aGVuIDppbnQKKyAgICAgICAgIiVlY3giCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisg
ICAgICBlbmQKKyAgICB3aGVuICJ0MyIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0
ZQorICAgICAgICAiJWJsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWJ4IgorICAgICAg
d2hlbiA6aW50CisgICAgICAgICIlZWJ4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAg
ICAgZW5kCisgICAgd2hlbiAidDQiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUK
KyAgICAgICAgIiVzaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc2kiCisgICAgICB3
aGVuIDppbnQKKyAgICAgICAgIiVlc2kiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAg
ICBlbmQKKyAgICB3aGVuICJjZnIiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUK
KyAgICAgICAgIiVkaWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZGkiCisgICAgICB3
aGVuIDppbnQKKyAgICAgICAgIiVlZGkiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAg
ICBlbmQKKyAgICB3aGVuICJzcCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQor
ICAgICAgICAiJXNwbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVzcCIKKyAgICAgIHdo
ZW4gOmludAorICAgICAgICAiJWVzcCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAg
IGVuZAorICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQgcmVnaXN0ZXIgI3tuYW1lfSBmb3IgWDg2
IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9w
ZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2Ns
YXNzIEZQUmVnaXN0ZXJJRAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIHJhaXNlIHVubGVz
cyBraW5kID09IDpkb3VibGUKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAiZmEwIiwg
ImZyIgorICAgICAgIiV4bW0wIgorICAgIHdoZW4gImZ0MSIsICJmYTEiCisgICAgICAiJXhtbTEi
CisgICAgd2hlbiAiZnQyIiwgImZhMiIKKyAgICAgICIleG1tMiIKKyAgICB3aGVuICJmdDMiLCAi
ZmEzIgorICAgICAgIiV4bW0zIgorICAgIHdoZW4gImZ0NCIKKyAgICAgICIleG1tNCIKKyAgICB3
aGVuICJmdDUiCisgICAgICAiJXhtbTUiCisgICAgZWxzZQorICAgICAgcmFpc2UgIkJhZCByZWdp
c3RlciAje25hbWV9IGZvciBYODYgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKyAg
ZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQp
fSIKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQp
CisgICAgIiQje3ZhbHVlfSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAg
ICIje3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBkZWYgc3VwcG9ydHM4
Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAg
ICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSkiCisgIGVuZAorICBk
ZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVu
ZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0
cnVlCisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3tvZmZzZXQudmFs
dWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSwgI3tpbmRleC54ODZPcGVyYW5kKDppbnQpfSwg
I3tzY2FsZX0pIgorICBlbmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7
eDg2b3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcwor
ICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIHg4Nk9w
ZXJhbmQoa2luZCkKKyAgICAiI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCisKKyAgZGVmIHg4NkNh
bGxPcGVyYW5kKGtpbmQpCisgICAgIioje2FkZHJlc3MudmFsdWV9IgorICBlbmQKK2VuZAorCitj
bGFzcyBMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICBhc21M
YWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCisgIGRlZiB4ODZD
YWxsT3BlcmFuZChraW5kKQorICAgIGFzbUxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIEluc3Ry
dWN0aW9uCisgIGRlZiB4ODZPcGVyYW5kcygqa2luZHMpCisgICAgcmFpc2UgdW5sZXNzIGtpbmRz
LnNpemUgPT0gb3BlcmFuZHMuc2l6ZQorICAgIHJlc3VsdCA9IFtdCisgICAga2luZHMuc2l6ZS50
aW1lcyB7CisgICAgICB8IGlkeCB8CisgICAgICByZXN1bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZP
cGVyYW5kKGtpbmRzW2lkeF0pCisgICAgfQorICAgIHJlc3VsdC5qb2luKCIsICIpCisgIGVuZAor
CisgIGRlZiB4ODZTdWZmaXgoa2luZCkKKyAgICBjYXNlIGtpbmQKKyAgICB3aGVuIDpieXRlCisg
ICAgICAiYiIKKyAgICB3aGVuIDpoYWxmCisgICAgICAidyIKKyAgICB3aGVuIDppbnQKKyAgICAg
ICJsIgorICAgIHdoZW4gOmRvdWJsZQorICAgICAgInNkIgorICAgIGVsc2UKKyAgICAgIHJhaXNl
CisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9w
Y29kZSwga2luZCwgbnVtT3BlcmFuZHMpCisgICAgaWYgbnVtT3BlcmFuZHMgPT0gMworICAgICAg
aWYgb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICIje29wY29k
ZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVy
YW5kKGtpbmQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAg
ICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0s
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNlCisgICAgICAgICRh
c20ucHV0cyAibW92I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChr
aW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICRhc20ucHV0
cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNb
Ml0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICAkYXNtLnB1
dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVY
ODZPcChvcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2Rl
LCBraW5kLCBvcGVyYW5kcy5zaXplKQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTaGlmdChv
cGNvZGUsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIG9yIG9wZXJh
bmRzWzBdID09IFJlZ2lzdGVySUQuZm9yTmFtZShuaWwsICJ0MiIpCisgICAgICAkYXNtLnB1dHMg
IiN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgInhjaGdsICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAgICAkYXNtLnB1dHMgIiN7
b3Bjb2RlfSAlY2wsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAkYXNt
LnB1dHMgInhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAg
ZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkRvdWJsZUJyYW5jaChicmFuY2hPcGNvZGUs
IG1vZGUpCisgICAgY2FzZSBtb2RlCisgICAgd2hlbiA6bm9ybWFsCisgICAgICAkYXNtLnB1dHMg
InVjb21pc2QgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuIDpyZXZlcnNlCisgICAgICAkYXNtLnB1
dHMgInVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSBtb2RlLmlu
c3BlY3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRz
WzJdLmFzbUxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29tcGFyZShvcGNv
ZGVTdWZmaXgsIGtpbmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZCBv
cGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklEIGFu
ZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikKKyAgICAgICRh
c20ucHV0cyAidGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
a2luZCl9IgorICAgIGVsc2lmIG9wZXJhbmRzWzFdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFu
ZHNbMV0udmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9w
Y29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1
dHMgInRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQp
fSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgImNtcCN7eDg2U3VmZml4KGtpbmQpfSAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2lu
ZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRCcmFuY2goYnJhbmNo
T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NkludENvbXBhcmUoYnJhbmNoT3Bjb2RlWzEuLi0x
XSwga2luZCkKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLmFz
bUxhYmVsfSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFu
ZCkKKyAgICBpZiBvcGVyYW5kLnN1cHBvcnRzOEJpdE9uWDg2CisgICAgICAkYXNtLnB1dHMgIiN7
c2V0T3Bjb2RlfSAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9IgorICAgICAgJGFzbS5wdXRz
ICJtb3Z6YmwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kLng4Nk9wZXJh
bmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVyYW5kLng4
Nk9wZXJhbmQoOmludCl9LCAlZWF4IgorICAgICAgJGFzbS5wdXRzICIje3NldE9wY29kZX0gJWFs
IgorICAgICAgJGFzbS5wdXRzICJtb3Z6YmwgJWFsLCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJ4
Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgZW5kCisgIGVuZAor
ICAKKyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmVTZXQoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhh
bmRsZVg4NkludENvbXBhcmUoc2V0T3Bjb2RlWzMuLi0xXSwga2luZCkKKyAgICBoYW5kbGVYODZT
ZXQoc2V0T3Bjb2RlLCBvcGVyYW5kc1syXSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2VGVz
dChraW5kKQorICAgIHZhbHVlID0gb3BlcmFuZHNbMF0KKyAgICBjYXNlIG9wZXJhbmRzLnNpemUK
KyAgICB3aGVuIDIKKyAgICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQor
ICAgIHdoZW4gMworICAgICAgbWFzayA9IG9wZXJhbmRzWzFdCisgICAgZWxzZQorICAgICAgcmFp
c2UgIkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5kcywgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0
ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAgaWYgbWFzay5pc19hPyBJ
bW1lZGlhdGUgYW5kIG1hc2sudmFsdWUgPT0gLTEKKyAgICAgIGlmIHZhbHVlLmlzX2E/IFJlZ2lz
dGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7dmFsdWUu
eDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNl
CisgICAgICAgICRhc20ucHV0cyAiY21wI3t4ODZTdWZmaXgoa2luZCl9ICQwLCAje3ZhbHVlLng4
Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJ0
ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7bWFzay54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54
ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2QnJh
bmNoVGVzdChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAg
ICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHMubGFzdC5hc21MYWJlbH0iCisg
IGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlNldFRlc3Qoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhh
bmRsZVg4NlRlc3Qoa2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kcy5s
YXN0KQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcEJyYW5jaChvcGNvZGUsIGJyYW5jaE9w
Y29kZSwga2luZCkKKyAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQs
IG9wZXJhbmRzLnNpemUgLSAxKQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gNAor
ICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgd2hlbiAzCisgICAgICBqdW1wVGFy
Z2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAg
ICBlbmQKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQuYXNtTGFi
ZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTdWJCcmFuY2goYnJhbmNoT3Bjb2RlLCBr
aW5kKQorICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gNCBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFu
ZHNbMl0KKyAgICAgICRhc20ucHV0cyAibmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgICAgJGFzbS5wdXRzICJhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50
KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgaGFu
ZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMoInN1YiN7eDg2U3VmZml4KGtpbmQpfSIsIGtpbmQsIG9w
ZXJhbmRzLnNpemUgLSAxKQorICAgIGVuZAorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdo
ZW4gNAorICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgd2hlbiAzCisgICAgICBq
dW1wVGFyZ2V0ID0gb3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICByYWlzZSBzZWxmLmluc3Bl
Y3QKKyAgICBlbmQKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQu
YXNtTGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBsb3dlclg4NgorICAgICRhc20uY29tbWVudCBj
b2RlT3JpZ2luU3RyaW5nCisgICAgY2FzZSBvcGNvZGUKKyAgICB3aGVuICJhZGRpIiwgImFkZHAi
CisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVk
aWF0ZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAor
ICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAg
ICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwCisgICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFd
ID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdmwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAg
ICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICRhc20ucHV0cyAibGVhbCAje29w
ZXJhbmRzWzBdLnZhbHVlfSgje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBvcGVy
YW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAg
cmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2Ug
dW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJs
ZWFsICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVs
c2UKKyAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQor
ICAgICAgICAgICRhc20ucHV0cyAiYWRkbCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAg
ICAgICAgZW5kCisgICAgICBlbmQKKyAgICB3aGVuICJhbmRpIiwgImFuZHAiCisgICAgICBoYW5k
bGVYODZPcCgiYW5kbCIsIDppbnQpCisgICAgd2hlbiAibHNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4
NlNoaWZ0KCJzYWxsIiwgOmludCkKKyAgICB3aGVuICJtdWxpIgorICAgICAgaWYgb3BlcmFuZHMu
c2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgJGFzbS5w
dXRzICJpbXVsbCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQsIDppbnQpfSIKKyAgICAgIGVsc2UK
KyAgICAgICAgIyBGSVhNRTogY291bGQgZG8gc29tZSBwZWVwaG9sZSBpbiBjYXNlIHRoZSBsZWZ0
IG9wZXJhbmQgaXMgaW1tZWRpYXRlIGFuZCBpdCdzCisgICAgICAgICMgYSBwb3dlciBvZiB0d28u
CisgICAgICAgIGhhbmRsZVg4Nk9wKCJpbXVsbCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVu
ICJuZWdpIgorICAgICAgJGFzbS5wdXRzICJuZWdsICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAg
IHdoZW4gIm5vdGkiCisgICAgICAkYXNtLnB1dHMgIm5vdGwgI3t4ODZPcGVyYW5kcyg6aW50KX0i
CisgICAgd2hlbiAib3JpIiwgIm9ycCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJvcmwiLCA6aW50KQor
ICAgIHdoZW4gInJzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2FybCIsIDppbnQpCisg
ICAgd2hlbiAidXJzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2hybCIsIDppbnQpCisg
ICAgd2hlbiAic3ViaSIsICJzdWJwIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBv
cGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1dHMgIm5lZ2wgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgJGFzbS5wdXRzICJhZGRsICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgICBlbHNlCisgICAgICAgIGhhbmRsZVg4Nk9wKCJzdWJsIiwgOmludCkKKyAgICAg
IGVuZAorICAgIHdoZW4gInhvcmkiLCAieG9ycCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJ4b3JsIiwg
OmludCkKKyAgICB3aGVuICJsb2FkaSIsICJzdG9yZWkiLCAibG9hZHAiLCAic3RvcmVwIgorICAg
ICAgJGFzbS5wdXRzICJtb3ZsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgIHdoZW4g
ImxvYWRiIgorICAgICAgJGFzbS5wdXRzICJtb3Z6YmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9h
ZGJzIgorICAgICAgJGFzbS5wdXRzICJtb3ZzYmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpi
eXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGgi
CisgICAgICAkYXNtLnB1dHMgIm1vdnp3bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYp
fSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJsb2FkaHMiCisg
ICAgICAkYXNtLnB1dHMgIm1vdnN3bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJzdG9yZWIiCisgICAg
ICAkYXNtLnB1dHMgIm1vdmIgI3t4ODZPcGVyYW5kcyg6Ynl0ZSwgOmJ5dGUpfSIKKyAgICB3aGVu
ICJsb2FkZCIsICJtb3ZlZCIsICJzdG9yZWQiCisgICAgICAkYXNtLnB1dHMgIm1vdnNkICN7eDg2
T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImFkZGQiCisgICAgICAkYXNt
LnB1dHMgImFkZHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4g
ImRpdmQiCisgICAgICAkYXNtLnB1dHMgImRpdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRv
dWJsZSl9IgorICAgIHdoZW4gInN1YmQiCisgICAgICAkYXNtLnB1dHMgInN1YnNkICN7eDg2T3Bl
cmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gIm11bGQiCisgICAgICAkYXNtLnB1
dHMgIm11bHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInNx
cnRkIgorICAgICAgJGFzbS5wdXRzICJzcXJ0c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpk
b3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJj
aTJkIgorICAgICAgJGFzbS5wdXRzICJjdnRzaTJzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImJk
ZXEiCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZGVxIikKKyAgICAg
ICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJqcCAj
e0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkuYXNtTGFiZWx9Igor
ICAgICAgJGFzbS5wdXRzICJqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBvcGVy
YW5kc1syXSkuYXNtTGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAg
d2hlbiAiYmRuZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpuZSIsIDpub3JtYWwp
CisgICAgd2hlbiAiYmRndCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6bm9y
bWFsKQorICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFl
IiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGx0IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNo
KCJqYSIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkbHRlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJs
ZUJyYW5jaCgiamFlIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRlcXVuIgorICAgICAgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRuZXF1biIKKyAgICAg
IGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4iKQorICAgICAgaXNFcXVh
bCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgICRhc20ucHV0cyAidWNvbWlz
ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJqcCAje0xhYmVsUmVmZXJlbmNlLm5l
dyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkuYXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJq
ZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc0VxdWFsKS5hc21MYWJlbH0iCisg
ICAgICBpc1Vub3JkZXJlZC5sb3dlcigiWDg2IikKKyAgICAgICRhc20ucHV0cyAiam1wICN7b3Bl
cmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgaXNFcXVhbC5sb3dlcigiWDg2IikKKyAgICB3aGVu
ICJiZGd0dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOnJldmVyc2UpCisg
ICAgd2hlbiAiYmRndGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpy
ZXZlcnNlKQorICAgIHdoZW4gImJkbHR1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgi
amIiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91Ymxl
QnJhbmNoKCJqYmUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJ0ZDJpIgorICAgICAgJGFzbS5wdXRz
ICJjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiY21wbCAkMHg4MDAwMDAw
MCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJqZSAj
e29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJ0ZDJpIgorICAgICAgJGFzbS5wdXRz
ICJjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiY2QyaSIKKyAgICAgICRhc20ucHV0
cyAiY3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgInRlc3RsICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgICAkYXNtLnB1dHMgImplICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgJGFz
bS5wdXRzICJjdnRzaTJzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIK
KyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAianAgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0i
CisgICAgICAkYXNtLnB1dHMgImpuZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVu
ICJtb3ZkeiIKKyAgICAgICRhc20ucHV0cyAieG9ycGQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVu
ICJwb3AiCisgICAgICAkYXNtLnB1dHMgInBvcCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgIHdoZW4gInB1c2giCisgICAgICAkYXNtLnB1dHMgInB1c2ggI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgor
ICAgICAgaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdIGFuZCBvcGVyYW5k
c1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAieG9ybCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgICAgZWxzaWYgb3BlcmFuZHNbMF0gIT0gb3BlcmFuZHNbMV0KKyAgICAgICAgJGFzbS5wdXRz
ICJtb3ZsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgZW5kCisgICAgd2hlbiAi
bm9wIgorICAgICAgJGFzbS5wdXRzICJub3AiCisgICAgd2hlbiAiYmllcSIsICJicGVxIgorICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDppbnQpCisgICAgd2hlbiAiYmluZXEiLCAiYnBu
ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDppbnQpCisgICAgd2hlbiAiYmlh
IiwgImJwYSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6aW50KQorICAgIHdoZW4g
ImJpYWVxIiwgImJwYWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6aW50KQor
ICAgIHdoZW4gImJpYiIsICJicGIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmlu
dCkKKyAgICB3aGVuICJiaWJlcSIsICJicGJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgi
amJlIiwgOmludCkKKyAgICB3aGVuICJiaWd0IiwgImJwZ3QiCisgICAgICBoYW5kbGVYODZJbnRC
cmFuY2goImpnIiwgOmludCkKKyAgICB3aGVuICJiaWd0ZXEiLCAiYnBndGVxIgorICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6aW50KQorICAgIHdoZW4gImJpbHQiLCAiYnBsdCIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6aW50KQorICAgIHdoZW4gImJpbHRlcSIsICJi
cGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsZSIsIDppbnQpCisgICAgd2hlbiAi
YmJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6Ynl0ZSkKKyAgICB3aGVuICJi
Ym5lcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmJ5dGUpCisgICAgd2hlbiAi
YmJhIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDpieXRlKQorICAgIHdoZW4gImJi
YWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6Ynl0ZSkKKyAgICB3aGVuICJi
YmIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJi
ZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRlKQorICAgIHdoZW4gImJi
Z3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJn
dGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6Ynl0ZSkKKyAgICB3aGVuICJi
Ymx0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDpieXRlKQorICAgIHdoZW4gImJi
bHRlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6Ynl0ZSkKKyAgICB3aGVu
ICJidGlvIiwgImJ0cG8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDppbnQpCisg
ICAgd2hlbiAiYnRpcyIsICJidHBzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6
aW50KQorICAgIHdoZW4gImJ0aXoiLCAiYnRweiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3Qo
Imp6IiwgOmludCkKKyAgICB3aGVuICJidGlueiIsICJidHBueiIKKyAgICAgIGhhbmRsZVg4NkJy
YW5jaFRlc3QoImpueiIsIDppbnQpCisgICAgd2hlbiAiYnRibyIKKyAgICAgIGhhbmRsZVg4NkJy
YW5jaFRlc3QoImpvIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRicyIKKyAgICAgIGhhbmRsZVg4NkJy
YW5jaFRlc3QoImpzIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRieiIKKyAgICAgIGhhbmRsZVg4NkJy
YW5jaFRlc3QoImp6IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRibnoiCisgICAgICBoYW5kbGVYODZC
cmFuY2hUZXN0KCJqbnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJqbXAiCisgICAgICAkYXNtLnB1dHMg
ImptcCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiYWRk
aW8iLCAiYmFkZHBvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam8iLCA6aW50
KQorICAgIHdoZW4gImJhZGRpcyIsICJiYWRkcHMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgi
YWRkbCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYmFkZGl6IiwgImJhZGRweiIKKyAgICAgIGhh
bmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJiYWRkaW56Iiwg
ImJhZGRwbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbnoiLCA6aW50KQor
ICAgIHdoZW4gImJzdWJpbyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam8iLCA6aW50KQor
ICAgIHdoZW4gImJzdWJpcyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianMiLCA6aW50KQor
ICAgIHdoZW4gImJzdWJpeiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianoiLCA6aW50KQor
ICAgIHdoZW4gImJzdWJpbnoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpueiIsIDppbnQp
CisgICAgd2hlbiAiYm11bGlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpv
IiwgOmludCkKKyAgICB3aGVuICJibXVsaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11
bGwiLCAianMiLCA6aW50KQorICAgIHdoZW4gImJtdWxpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJh
bmNoKCJpbXVsbCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlueiIKKyAgICAgIGhhbmRs
ZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJvcmlvIgorICAg
ICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXMi
CisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJi
b3JpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianoiLCA6aW50KQorICAgIHdo
ZW4gImJvcmlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAiam56IiwgOmludCkK
KyAgICB3aGVuICJicmVhayIKKyAgICAgICRhc20ucHV0cyAiaW50ICQzIgorICAgIHdoZW4gImNh
bGwiCisgICAgICAkYXNtLnB1dHMgImNhbGwgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6
aW50KX0iCisgICAgd2hlbiAicmV0IgorICAgICAgJGFzbS5wdXRzICJyZXQiCisgICAgd2hlbiAi
Y2llcSIsICJjcGVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQp
CisgICAgd2hlbiAiY2luZXEiLCAiY3BuZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0
KCJzZXRuZSIsIDppbnQpCisgICAgd2hlbiAiY2lhIiwgImNwYSIKKyAgICAgIGhhbmRsZVg4Nklu
dENvbXBhcmVTZXQoInNldGEiLCA6aW50KQorICAgIHdoZW4gImNpYWVxIiwgImNwYWVxIgorICAg
ICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YWUiLCA6aW50KQorICAgIHdoZW4gImNpYiIs
ICJjcGIiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiIiwgOmludCkKKyAgICB3
aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGJl
IiwgOmludCkKKyAgICB3aGVuICJjaWd0IiwgImNwZ3QiCisgICAgICBoYW5kbGVYODZJbnRDb21w
YXJlU2V0KCJzZXRnIiwgOmludCkKKyAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAg
aGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0Z2UiLCA6aW50KQorICAgIHdoZW4gImNpbHQiLCAi
Y3BsdCIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGwiLCA6aW50KQorICAgIHdo
ZW4gImNpbHRlcSIsICJjcGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRs
ZSIsIDppbnQpCisgICAgd2hlbiAidGlvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIs
IDppbnQpCisgICAgd2hlbiAidGlzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpp
bnQpCisgICAgd2hlbiAidGl6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDppbnQp
CisgICAgd2hlbiAidGlueiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmludCkK
KyAgICB3aGVuICJ0Ym8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCisg
ICAgd2hlbiAidGJzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAg
IHdoZW4gInRieiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6Ynl0ZSkKKyAgICB3
aGVuICJ0Ym56IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6Ynl0ZSkKKyAgICB3
aGVuICJwZWVrIgorICAgICAgJGFzbS5wdXRzICJtb3ZsICN7b3BlcmFuZHNbMF0udmFsdWUgKiA0
fSglZXNwKSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJwb2tl
IgorICAgICAgJGFzbS5wdXRzICJtb3ZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0s
ICN7b3BlcmFuZHNbMV0udmFsdWUgKiA0fSglZXNwKSIKKyAgICB3aGVuICJjZHFpIgorICAgICAg
JGFzbS5wdXRzICJjZHEiCisgICAgd2hlbiAiaWRpdmkiCisgICAgICAkYXNtLnB1dHMgImlkaXZs
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiZmlpMmQiCisgICAg
ICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAibW92ZCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAicHNs
bHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAicG9yICV4bW03LCAje29wZXJhbmRzWzJd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImZkMmlpIgorICAgICAgJGFzbS5wdXRz
ICJtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgIm1vdnNkICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJwc3JscSAkMzIs
ICV4bW03IgorICAgICAgJGFzbS5wdXRzICJtb3ZzZCAleG1tNywgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJibyIKKyAgICAgICRhc20ucHV0cyAiam8gI3tvcGVy
YW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYnMiCisgICAgICAkYXNtLnB1dHMgImpzICN7
b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJ6IgorICAgICAgJGFzbS5wdXRzICJq
eiAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJibnoiCisgICAgICAkYXNtLnB1
dHMgImpueiAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJsZWFpIiwgImxlYXAi
CisgICAgICAkYXNtLnB1dHMgImxlYWwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAi
QmFkIG9wY29kZTogI3tvcGNvZGV9IgorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29k
ZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZF9oCisjZGVmaW5lIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCitu
YW1lc3BhY2UgSlNDIHsKKworZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNh
bGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAv
LyBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIENvbW1vblNsb3dQYXRoc19oCiAKICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAj
aW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKIApAQCAt
NDEsNiArNDIsMzggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBDb21tb25TbG93UGF0
aHMgewogCitBTFdBWVNfSU5MSU5FIEV4ZWNTdGF0ZSogYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUq
IGV4ZWMsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
IGtpbmQpCit7CisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxs
ZWUoKSk7CisgICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOworICAgIENvZGVC
bG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5
dGVjb2RlRm9yKGtpbmQpOworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4
ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CisKKyAgICAvLyBUaGlzIGVuc3VyZXMg
ZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50
cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KKyAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhleGVj
LT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJs
b2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCisgICAgICAgIHJldHVybiAwOworCisgICAgQVNT
RVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0
ZXJzKCkpOworCisgICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1lIGFu
ZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5l
ZC4KKyAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOworICAgIFJlZ2lzdGVyKiBzcmMgPSBleGVjLT5yZWdp
c3RlcnMoKTsKKyAgICBSZWdpc3RlciogZHN0ID0gZXhlYy0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsK
KworICAgIGludCBpOworICAgIGludCBlbmQgPSAtRXhlY1N0YXRlOjpvZmZzZXRGb3IoYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQor
ICAgICAgICBkc3RbaV0gPSBzcmNbaV07CisKKyAgICBlbmQgLT0gZGVsdGE7CisgICAgZm9yICgg
OyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOworCisgICAg
RXhlY1N0YXRlKiBuZXdFeGVjID0gRXhlY1N0YXRlOjpjcmVhdGUoZHN0KTsKKyAgICBBU1NFUlQo
KHZvaWQqKW5ld0V4ZWMgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7CisgICAgcmV0dXJuIG5ld0V4
ZWM7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBvcEluc3RhbmNlT2ZTbG93KEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3RvKQogewog
ICAgIEFTU0VSVCghdmFsdWUuaXNDZWxsKCkgfHwgIWJhc2VWYWwuaXNDZWxsKCkgfHwgIXByb3Rv
LmlzQ2VsbCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNs
dWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1
ZGUgIkRGR0RyaXZlci5oIgorI2luY2x1ZGUgIkV4ZWN1dGlvbkhhcm5lc3MuaCIKICNpbmNsdWRl
ICJKSVQuaCIKICNpbmNsdWRlICJKSVREcml2ZXIuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKQEAg
LTg0LDcgKzg1LDcgQEAgSW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6OmludHJpbnNpYygpIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRpYyB2b2lkIGpldHRpc29uQ29kZUJsb2NrKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPFQ+JiBjb2RlQmxvY2spCiB7Ci0gICAgQVNTRVJU
KGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBB
U1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKSk7
CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgT3duUHRyPFQ+IGNv
ZGVCbG9ja1RvSmV0dGlzb24gPSBjb2RlQmxvY2sucmVsZWFzZSgpOwogICAgIGNvZGVCbG9jayA9
IHN0YXRpY19wb2ludGVyX2Nhc3Q8VD4oY29kZUJsb2NrVG9KZXR0aXNvbi0+cmVsZWFzZUFsdGVy
bmF0aXZlKCkpOwpAQCAtMTY5LDkgKzE3MCwzMCBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6
OmNvbXBpbGVPcHRpbWl6CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEV2YWxFeGVjdXRh
YmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJl
c3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9j
aywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKworaW5saW5lIGNvbnN0IGNoYXIqIHNhbXBs
aW5nRGVzY3JpcHRpb24oSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworICAgIHN3aXRjaCAo
aml0VHlwZSkgeworICAgIGNhc2UgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAgICAg
cmV0dXJuICJJbnRlcnByZXRlciBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBjYXNlIEpJVENv
ZGU6OkJhc2VsaW5lSklUOgorICAgICAgICByZXR1cm4gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChU
T1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6REZHSklUOgorICAgICAgICByZXR1cm4gIkRGRyBD
b21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiBKU09iamVjdCogRXZhbEV4
ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2Rl
KiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBs
aW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQg
PyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RB
TCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0
aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0o
aml0VHlwZSk7CkBAIC0yMTIsNyArMjM0LDcgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpj
b21waWxlSW50ZXJuYQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21w
aWxlSWZBcHByb3ByaWF0ZSgqZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVG
b3JDYWxsLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVjdXRpb24oKmdsb2JhbERh
dGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAg
IHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTI5Nyw5ICszMTksMTUgQEAgSlNPYmplY3QqIFByb2dy
YW1FeGVjdXRhYmxlOjpjb21waWxlT3B0aQogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBQ
cm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7
CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBt
X3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJK
SVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEpTT2JqZWN0
KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2Nv
cGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7
Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpC
YXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGls
YXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBs
aW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVO
VVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTMzOCw3ICszNjYsNyBAQCBKU09iamVjdCogUHJvZ3Jh
bUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBp
ZiAoIWppdENvbXBpbGVJZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxv
Y2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1
dGlvbigqZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBq
aXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNDE0LDcgKzQ0Miw3IEBA
IEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmIKICAgICB3aGlsZSAocmVz
dWx0LT5hbHRlcm5hdGl2ZSgpKQogICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxGdW5jdGlv
bkNvZGVCbG9jayo+KHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgQVNTRVJUKHJlc3VsdCk7
Ci0gICAgQVNTRVJUKHJlc3VsdC0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklU
KTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBl
KCkpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00NDAsNiArNDY4LDE4IEBAIEpTT2Jq
ZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVPcHQKICAgICByZXR1cm4gZXJyb3I7CiB9
CiAKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25J
ZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9y
Q2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRD
b2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQp
OworfQorCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxl
RnVuY3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0
LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNo
ZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCiBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rp
b25FeGVjdXRhYmxlOjpjb2RlQmxvY2tXaXRoQnl0ZWNvZGVGb3IoQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQogewogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGlu
ZUNvZGVCbG9ja0ZvcihraW5kKTsKQEAgLTQ4NCw3ICs1MjQsNyBAQCBQYXNzT3duUHRyPEZ1bmN0
aW9uQ29kZUJsb2NrPiBGdW5jdGlvbkV4CiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6
OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSog
c2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGlu
Z1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8g
IkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwp
Iik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlv
bihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGV4
ZWMpOwpAQCAtNTA2LDcgKzU0Niw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNv
bXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDYWxsLT5zaGFyZWRT
eW1ib2xUYWJsZSgpOwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5j
dGlvbklmQXBwcm9wcmlhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGws
IG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1i
b2xUYWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24o
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGws
IG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSwg
Q29kZUZvckNhbGwpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC01MjYsNyArNTY2
LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogCiBKU09iamVj
dCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwoRXhlY1N0
YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5
cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBl
ID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCki
IDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxp
bmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJM
RShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtNTQ4LDcgKzU4OCw3IEBAIEpT
T2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxl
ID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBF
TkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVj
LT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25z
dHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxl
LCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5n
bG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1
Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBq
aXRUeXBlLCBDb2RlRm9yQ29uc3RydWN0KSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNp
b24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEV4ZWN1dGFibGVfaAog
CiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5k
LmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAj
aW5jbHVkZSAiTm9kZXMuaCIKQEAgLTM5LDEyICs0MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBEZWJ1Z2dlcjsKICAgICBjbGFzcyBFdmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIEZ1
bmN0aW9uQ29kZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBj
bGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwogCiAgICAg
c3RydWN0IEV4Y2VwdGlvbkluZm87CiAgICAgCi0gICAgZW51bSBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKICAgICBlbnVtIENvbXBpbGF0
aW9uS2luZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21waWxhdGlvbiB9OwogCiAg
ICAgaW5saW5lIGJvb2wgaXNDYWxsKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAgLTMx
OSw2ICszMjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgRXZhbEV4
ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNj
cmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtMzM4LDYgKzM0MCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1p
emVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlKEpTR2xvYmFs
RGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgRXZhbENvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNv
ZGUoKQpAQCAtMzg0LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBj
bGFzcyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAg
ICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC00MTEsNiArNDE1LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQg
amV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENv
bXBpbGUoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBQcm9ncmFtQ29kZUJsb2Nr
JiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC00NTMsNiArNDU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJs
ZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4
ZWN1dGFibGUgQmFzZTsKIApAQCAtNTA4LDYgKzUxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29k
ZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNhbGwo
SlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ2Fs
bCgpIGNvbnN0CkBAIC01MzUsNiArNTQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAog
I2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29u
c3RydWN0KEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDb25zdHJ1
Y3QoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9y
Q29uc3RydWN0KCkgY29uc3QKQEAgLTU4Miw2ICs1OTAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgICAgICAgICAgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KGdsb2JhbERh
dGEpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGpp
dENvbXBpbGVGb3IoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxs
KSB7CisgICAgICAgICAgICAgICAgaml0Q29tcGlsZUZvckNhbGwoZ2xvYmFsRGF0YSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKGtp
bmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgICAgICBqaXRDb21waWxlRm9yQ29uc3Ry
dWN0KGdsb2JhbERhdGEpOworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIGJv
b2wgaXNHZW5lcmF0ZWRGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5l
c3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEV4ZWN1dGlvbkhhcm5lc3NfaAorI2Rl
ZmluZSBFeGVjdXRpb25IYXJuZXNzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisj
aWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkxMSW50
RW50cnlwb2ludHMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENv
ZGVCbG9ja1R5cGU+CitpbmxpbmUgYm9vbCBwcmVwYXJlRm9yRXhlY3V0aW9uKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUm
IGppdENvZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyNpZiBFTkFCTEUoTExJTlQp
CisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8v
IFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAgICAgICBMTEludDo6
Z2V0RW50cnlwb2ludChnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUpOworICAg
ICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRy
KCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5U
KQorICAgIHJldHVybiBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxv
Y2ssIGppdENvZGUsIGppdFR5cGUpOworfQorCitpbmxpbmUgYm9vbCBwcmVwYXJlRnVuY3Rpb25G
b3JFeGVjdXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2Rl
QmxvY2s+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxl
LCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
K3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGpp
dFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJl
dGVyLgorICAgICAgICBMTEludDo6Z2V0RnVuY3Rpb25FbnRyeXBvaW50KGdsb2JhbERhdGEsIGtp
bmQsIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIGNvZGVCbG9jay0+
c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShraW5kKTsKKyNlbmRpZiAv
LyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlh
dGUoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ss
IHN5bWJvbFRhYmxlLCBqaXRUeXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRp
ZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8gRXhlY3V0aW9uSGFybmVzc19oCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCShyZXZpc2lv
biAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkg
PSBhZG9wdEFycmF5UHRyKG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bcmVnaXN0ZXJBcnJheVNp
emVdKTsKICAgICAgICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMgPSByZWdpc3Rl
ckFycmF5LmdldCgpICsgcmVnaXN0ZXJPZmZzZXQ7Ci0KKyAgICAgICAgCiAgICAgICAgIC8vIENv
cHkgYWxsIGFyZ3VtZW50cyB0aGF0IGNhbiBiZSBjYXB0dXJlZCBieSBuYW1lIG9yIGJ5IHRoZSBh
cmd1bWVudHMgb2JqZWN0LgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbnVtQ2FwdHVy
ZWRBcmdzOyArK2kpIHsKICAgICAgICAgICAgIGludCBpbmRleCA9IENhbGxGcmFtZTo6YXJndW1l
bnRPZmZzZXQoaSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5o
CShyZXZpc2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Fy
cmF5LmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgSlNBcnJheTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAK
ICAgICBzdHJ1Y3QgU3BhcnNlQXJyYXlFbnRyeSA6IHB1YmxpYyBXcml0ZUJhcnJpZXI8VW5rbm93
bj4gewogICAgICAgICB0eXBlZGVmIFdyaXRlQmFycmllcjxVbmtub3duPiBCYXNlOwpAQCAtMTIy
LDYgKzEyMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBKU0FycmF5
IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgV2Fsa2VyOwogCiAgICAgcHJv
dGVjdGVkOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlz
aW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0zNiw5ICszNiwxMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBj
bGFzcyBKU0dsb2JhbE9iamVjdDsKLSAgICBjbGFzcyBTdHJ1Y3R1cmU7CisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBj
bGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKKyAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBlbnVt
IEVudW1lcmF0aW9uTW9kZSB7CiAgICAgICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsCkBA
IC0xNjQsNiArMTY1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIGdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50
aWZpZXImLCBQcm9wZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBjb25z
dCBDbGFzc0luZm8qIG1fY2xhc3NJbmZvOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJl
PiBtX3N0cnVjdHVyZTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNGdW5jdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uaAkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNz
IEpTQWN0aXZhdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFz
cyBTb3VyY2VDb2RlOwogICAgIG5hbWVzcGFjZSBERkcgewpAQCAtMTQyLDYgKzE0Myw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCos
IFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBpc0hvc3RGdW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBK
U1ZhbHVlIGFyZ3VtZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlm
aWVyJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5jcHAJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlICJEZWJ1Z2dlckFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1
cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0
aW9uLmgiCiAjaW5jbHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIKQEAgLTE0MSw2ICsxNDIsOCBA
QCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgLCBrZXl3b3Jk
cyhhZG9wdFB0cihuZXcgS2V5d29yZHModGhpcykpKQogICAgICwgaW50ZXJwcmV0ZXIoMCkKICAg
ICAsIGhlYXAodGhpcywgaGVhcFNpemUpCisgICAgLCBqc0FycmF5Q2xhc3NJbmZvKCZKU0FycmF5
OjpzX2luZm8pCisgICAgLCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvKCZKU0ZpbmFsT2JqZWN0Ojpz
X2luZm8pCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLCBzaXplT2ZMYXN0U2NyYXRjaEJ1ZmZl
cigwKQogI2VuZGlmCkBAIC0yMTYsNyArMjE5LDkgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERh
dGEoR2xvYmFsRGF0YVR5cAogICAgIGppdFN0dWJzID0gYWRvcHRQdHIobmV3IEpJVFRodW5rcyh0
aGlzKSk7CiAjZW5kaWYKIAotICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKHRoaXMtPmNhblVz
ZUpJVCgpKTsKKyAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSgmbGxpbnREYXRhLCB0aGlzLT5j
YW5Vc2VKSVQoKSk7CisgICAgCisgICAgaW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJuVmFsdWUoKTsg
Ly8gVGhpcyBpcyBuZWVkZWQgdG8gY29udmluY2UgdGhlIGxpbmtlciBub3QgdG8gZHJvcCBob3N0
IGNhbGwgcmV0dXJuIHN1cHBvcnQuCiAKICAgICBoZWFwLm5vdGlmeUlzU2FmZVRvQ29sbGVjdCgp
OwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmgJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTYgQEAKICNkZWZpbmUg
SlNHbG9iYWxEYXRhX2gKIAogI2luY2x1ZGUgIkNhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24u
aCIKLSNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2VDYWNoZS5o
IgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCi0j
aW5jbHVkZSAiU3Ryb25nLmgiCisjaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiSklU
U3R1YnMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAj
aW5jbHVkZSAiTnVtZXJpY1N0cmluZ3MuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKKyNp
bmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUZXJtaW5hdG9yLmgiCiAjaW5jbHVkZSAiVGlt
ZW91dENoZWNrZXIuaCIKICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCkBAIC02NSw2ICs2Niw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpT
T2JqZWN0OwogICAgIGNsYXNzIEtleXdvcmRzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFBhcnNlckFyZW5h
OwogICAgIGNsYXNzIFJlZ0V4cENhY2hlOwpAQCAtMjQxLDYgKzI0MywxMiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgSGVhcCBoZWFwOwogCiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uOwor
CisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QganNBcnJheUNsYXNzSW5mbzsKKyAgICAg
ICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOworCisgICAg
ICAgIExMSW50OjpEYXRhIGxsaW50RGF0YTsKKwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFJl
dHVybkFkZHJlc3NQdHIgZXhjZXB0aW9uTG9jYXRpb247CiAgICAgICAgIEpTVmFsdWUgaG9zdENh
bGxSZXR1cm5WYWx1ZTsKQEAgLTM0Niw2ICszNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICN1bmRl
ZiByZWdpc3RlclR5cGVkQXJyYXlGdW5jdGlvbgogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJp
ZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTR2xv
YmFsRGF0YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CiAgICAg
ICAgIHN0YXRpYyBKU0dsb2JhbERhdGEqJiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAg
ICAgIHZvaWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTA2NTkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5
KQpAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblBy
b3RvdHlwZTsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgR2xvYmFsQ29kZUJs
b2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVF
cnJvckNvbnN0cnVjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3Mg
UmVnRXhwQ29uc3RydWN0b3I7CkBAIC0zMzUsNiArMzM2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9w
ZXJ0eUluZm8qLCBpbnQgY291bnQpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBG
b2xkIHJlc2V0IGludG8gaW5pdC4KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0
KEpTT2JqZWN0KiB0aGlzVmFsdWUpOwogICAgICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJvdG90
eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2
aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgSGFzaEVudHJ5OwogICAgIGNsYXNzIEludGVy
bmFsRnVuY3Rpb247CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IE1hcmtlZEJsb2NrOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQ
cm9wZXJ0eU5hbWVBcnJheTsKQEAgLTI3MSw2ICsyNzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgSlNPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdl
IGlubGluZVN0b3JhZ2UpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIE5vYm9keSBzaG91bGQg
ZXZlciBhc2sgYW55IG9mIHRoZXNlIHF1ZXN0aW9ucyBvbiBzb21ldGhpbmcgYWxyZWFkeSBrbm93
biB0byBiZSBhIEpTT2JqZWN0LgogICAgICAgICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFw
cGVyOwogICAgICAgICB1c2luZyBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyOwpAQCAtMzgzLDYgKzM4
Niw4IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAg
c3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBleHBs
aWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUpCiAgICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwg
bV9pbmxpbmVTdG9yYWdlKQogICAgICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAx
MDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0
ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICBjbGFzcyBJZGVudGlmaWVyOwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIEpTUHJvcGVydHlOYW1lSXRlcmF0
b3IgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTk2LDYg
Kzk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAg
ICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAg
ICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5RGF0
YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7CiAKICAg
ICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRTdHJ1Y3R1cmU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDEwNjU5MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNTdHJp
bmc7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgSlNTdHJpbmcqIGpz
RW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7CiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmco
RXhlY1N0YXRlKik7CkBAIC0yNDAsNiArMjQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlc29sdmVSb3BlKEV4ZWNT
dGF0ZSopIGNvbnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2U4KExDaGFyKikg
Y29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hhciopIGNvbnN0OwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNp
b24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxOyAvLyBXZWJDb3JlIHVzZXMgTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCB0byBtYWtlIGRvY3VtZW50LmFsbCB1bmRldGVjdGFibGUuCiAgICAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDEgPDwgMTsKICAgICBz
dGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJpZGVzSGFzSW5zdGFuY2UgPSAxIDw8IDI7CkBAIC04
Nyw2ICs4OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgor
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAg
ICAgICAgYm9vbCBpc1NldE9uRmxhZ3MxKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZs
YWcgPD0gKDEgPDwgNykpOyByZXR1cm4gbV9mbGFncyAmIGZsYWc7IH0KICAgICAgICAgYm9vbCBp
c1NldE9uRmxhZ3MyKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPj0gKDEgPDwg
OCkpOyByZXR1cm4gbV9mbGFnczIgJiAoZmxhZyA+PiA4KTsgfQogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24gMTA2NTkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTExOCw3ICsxMTgsNyBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShF
CiAKIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIHsKLSAgICBzdGF0aWMgY29uc3Qgc2l6
ZV90IHNpemUgPSA2NDsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSAxMjg7CiAgICAg
c3RhdGljIGNoYXIgZGVzY3JpcHRpb25bc2l6ZV07CiAKICAgICBpZiAoISp0aGlzKQpAQCAtMTI3
LDE0ICsxMjcsMTQgQEAgY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogICAgICAgICBzbnBy
aW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkludDMyOiAlZCIsIGFzSW50MzIoKSk7CiAgICAgZWxz
ZSBpZiAoaXNEb3VibGUoKSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHNucHJpbnRm
KGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICVseCIsIGFzRG91YmxlKCksIHJlaW50
ZXJwcmV0RG91YmxlVG9JbnRwdHIoYXNEb3VibGUoKSkpOworICAgICAgICBzbnByaW50ZihkZXNj
cmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWx4LCAlbGYiLCByZWludGVycHJldERvdWJsZVRvSW50
cHRyKGFzRG91YmxlKCkpLCBhc0RvdWJsZSgpKTsKICNlbHNlCiAgICAgICAgIHVuaW9uIHsKICAg
ICAgICAgICAgIGRvdWJsZSBhc0RvdWJsZTsKICAgICAgICAgICAgIHVpbnQzMl90IGFzVHdvSW50
MzJzWzJdOwogICAgICAgICB9IHU7CiAgICAgICAgIHUuYXNEb3VibGUgPSBhc0RvdWJsZSgpOwot
ICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlMDh4OiUw
OHgiLCBhc0RvdWJsZSgpLCB1LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdKTsKKyAg
ICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICUwOHg6JTA4eCwgJWxm
IiwgdS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSwgYXNEb3VibGUoKSk7CiAjZW5k
aWYKICAgICB9IGVsc2UgaWYgKGlzQ2VsbCgpKQogICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlv
biwgc2l6ZSwgIkNlbGw6ICVwIiwgYXNDZWxsKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMTA2NTkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zOCwxMCArMzgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAKICAgICBj
bGFzcyBKU1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAg
ICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3Qg
QmFzZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShy
ZXZpc2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25z
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTAgQEAgdW5zaWduZWQgbWF4aW11bUZ1
bmN0aW9uRm9yQ29uc3RydWN0SW5saQogCiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsK
IAoraW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2ludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworaW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVy
VmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKQEAgLTEzNyw2ICsxNDEsMTAgQEAgdm9p
ZCBpbml0aWFsaXplT3B0aW9ucygpCiAgICAgCiAgICAgU0VUKG1heGltdW1JbmxpbmluZ0RlcHRo
LCA1KTsKIAorICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcCwg
ICAgIC0xMDApOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGlt
ZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKKyAgICBTRVQoZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbiwgICAgICAgICAgICAtMTAwKTsKKwogICAgIFNF
VChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwLCAgICAgLTEwMDAp
OwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1V
cCwgLTUwMDApOwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVB
bnl0aW1lU29vbiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOwpAQCAtMTg1
LDYgKzE5Myw4IEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIGlmIChjcHVzVG9Vc2Ug
PCAxKQogICAgICAgICBjcHVzVG9Vc2UgPSAxOwogICAgIAorICAgIGNwdXNUb1VzZSA9IDE7Cisg
ICAgCiAgICAgU0VUKG51bWJlck9mR0NNYXJrZXJzLCBjcHVzVG9Vc2UpOwogCiAgICAgQVNTRVJU
KGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uIDw9IGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAt
MzcsNiArMzcsMTAgQEAgZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cgog
CiBleHRlcm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERlcHRoIG9mIGlubGlu
ZSBzdGFjaywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMuCiAKK2V4dGVy
biBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworZXh0ZXJu
IGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworZXh0
ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogZXh0ZXJuIGlu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGV4dGVy
biBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVw
OwogZXh0ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55
dGltZVNvb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWlu
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFp
bi5oCShyZXZpc2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
Y29wZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0Owog
ICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICBjbGFzcyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAg
CkBAIC05MSw2ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQ
T1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRy
ZW47CiAgICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1
Y3R1cmUuY3BwCShyZXZpc2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjIsNyArMzIyLDcgQEAgU3Ry
dWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgICAgICAgICAgdHJhbnNp
dGlvbi0+Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgICAgIHJldHVybiB0cmFu
c2l0aW9uOwogICAgIH0KLQorICAgIAogICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNyZWF0
ZShnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgdHJhbnNpdGlvbi0+bV9jYWNoZWRQcm90
b3R5cGVDaGFpbi5zZXRNYXlCZU51bGwoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbiwgc3RydWN0dXJl
LT5tX2NhY2hlZFByb3RvdHlwZUNoYWluLmdldCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiAr
NDUsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAgICBjbGFzcyBQcm9wZXJ0eU5h
bWVBcnJheURhdGE7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CkBAIC0xOTYsNiArMTk3LDgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENs
YXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
U3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5
cGUsIGNvbnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKik7CiAgICAgICAgIFN0cnVjdHVy
ZShKU0dsb2JhbERhdGEmKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNvbnN0
IFN0cnVjdHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0
dXJlQ2hhaW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oCShyZXZpc2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3
IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluIDogcHVi
bGljIEpTQ2VsbCB7CkBAIC03NCw2ICs3NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9
CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworICAgICAgICAKICAgICAgICAgU3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiwgU3Ry
dWN0dXJlKik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAg
IE93bkFycmF5UHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0lubGluZUFTTS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvSW5saW5lQVNNLmgJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvSW5saW5lQVNNLmgJKHdvcmtpbmcgY29weSkKQEAgLTcw
LDQgKzcwLDExIEBACiAjZGVmaW5lIEhJREVfU1lNQk9MKG5hbWUpCiAjZW5kaWYKIAorLy8gRklY
TUU6IGZpZ3VyZSBvdXQgaG93IHRoaXMgd29ya3Mgb24gYWxsIHRoZSBwbGF0Zm9ybXMuIEkga25v
dyB0aGF0CisvLyBvbiBMaW51eCwgdGhlIHByZWZlcnJlZCBmb3JtIGlzICIuTHN0dWZmIiBhcyBv
cHBvc2VkIHRvICJMc3R1ZmYiLgorLy8gRG9uJ3Qga25vdyBhYm91dCBhbnkgb2YgdGhlIG90aGVy
cy4KKyNpZiBQTEFURk9STShNQUMpCisjZGVmaW5lIExPQ0FMX0xBQkVMX1NUUklORyhuYW1lKSAi
TCIgI25hbWUKKyNlbmRpZgorCiAjZW5kaWYgLy8gSW5saW5lQVNNX2gKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTIzLDYgKzkyMywx
OCBAQAogI2RlZmluZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCisvKiBPbiBzb21lIG9mIHRoZSBw
bGF0Zm9ybXMgd2hlcmUgd2UgaGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNvIGhhdmUgdGhlIAor
ICAgbG93LWxldmVsIGludGVycHJldGVyLiAqLworI2lmICFkZWZpbmVkKEVOQUJMRV9MTElOVCkg
JiYgRU5BQkxFKEpJVCkgJiYgT1MoREFSV0lOKSAmJiAoQ1BVKFg4NikgfHwgQ1BVKEFSTV9USFVN
QjIpKSAmJiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBFTkFCTEVfTExJTlQgMQorI2VuZGlm
CisKKy8qIElmIHdlIGhhdmUgTExJbnQgZW5hYmxlZCBhbmQgdGhlIEpJVCBlbmFibGVkLCB3ZSBh
bHNvIGVuYWJsZSBPU1JpbmcgZnJvbQorICAgTExJbnQgdG8gdGhlIEpJVC4gKi8KKyNpZiAhZGVm
aW5lZChFTkFCTEVfTExJTlRfT1NSX1RPX0pJVCkgJiYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKExM
SU5UKQorI2RlZmluZSBFTkFCTEVfTExJTlRfT1NSX1RPX0pJVCAxCisjZW5kaWYKKwogI2lmICFk
ZWZpbmVkKEVOQUJMRV9ERkdfSklUKSAmJiBFTkFCTEUoSklUKQogLyogRW5hYmxlIHRoZSBERkcg
SklUIG9uIFg4NiBhbmQgWDg2XzY0LiAgT25seSB0ZXN0ZWQgb24gTWFjIGFuZCBHTlUvTGludXgu
ICovCiAjaWYgKENQVShYODYpIHx8IENQVShYODZfNjQpKSAmJiAoUExBVEZPUk0oTUFDKSB8fCBP
UyhMSU5VWCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2Vk
TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxM
aW5rZWRMaXN0LmgJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDggQEAg
cHVibGljOgogCiAgICAgaXRlcmF0b3IgYmVnaW4oKTsKICAgICBpdGVyYXRvciBlbmQoKTsKKyAg
ICAKKyAgICBib29sIGlzRW1wdHkoKSB7IHJldHVybiBiZWdpbigpID09IGVuZCgpOyB9CiAKIHBy
aXZhdGU6CiAgICAgUmF3Tm9kZSBtX2hlYWRTZW50aW5lbDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gMTA2NTkwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpA
QCAtNDMsNiArNDMsNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJp
CiAvLyBMYW5kaW5nIHRoZSBmaWxlIG1vdmVzIGluIG9uZSBwYXRjaCwgd2lsbCBmb2xsb3cgb24g
d2l0aCBwYXRjaGVzIHRvIGNoYW5nZSB0aGUgbmFtZXNwYWNlcy4KIG5hbWVzcGFjZSBKU0Mgewog
c3RydWN0IElkZW50aWZpZXJDU3RyaW5nVHJhbnNsYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSWRlbnRpZmllckNoYXJCdWZm
ZXJUcmFuc2xhdG9yOwogc3RydWN0IElkZW50aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5zbGF0b3I7
CiB9CkBAIC03Miw3ICs3Myw4IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgIGZyaWVuZCBzdHJ1
Y3QgV1RGOjpTdWJzdHJpbmdUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpVQ2hh
ckJ1ZmZlclRyYW5zbGF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7Ci0K
KyAgICBmcmllbmQgY2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiBwcml2
YXRlOgogICAgIGVudW0gQnVmZmVyT3duZXJzaGlwIHsKICAgICAgICAgQnVmZmVySW50ZXJuYWws
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDY1OTApCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMS0yNiAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0cmlw
bGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQgRUZMJ3MgYnVpbGQg
c3lzdGVtIHRvIGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3JpcHRDb3JlLgorICAg
ICAgICAKKyAgICAgICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8gYmVoYXZpb3IgY2hhbmdlZC4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAyLTAyICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgVGhlIG92ZXJoYW5nIGFyZWEgbGF5
ZXIgc2hvdWxkIGhhdmUgYSBsaW5lbiBiYWNrZ3JvdW5kCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RP
UklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2pp
dCIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpJbmRleDogU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9u
IDEwNjU5MCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTItMDEtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
KworICAgICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRp
cmVjdG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4KKyAgICAgICAgCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisKIDIwMTItMDEtMTEgIEphY2t5IEppYW5nICA8emhhamlhbmdAcmltLmNvbT4KIAog
ICAgICAgICBbQmxhY2tCZXJyeV0gQVNTRVJUIGZhaWx1cmUgaW4gQmFja2luZ1N0b3JlUHJpdmF0
ZTo6YmxpdFZpc2libGVDb250ZW50cygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDEwNjU5MCkKKysrIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTQ0LDYgKzQ0LDcgQEAgU0VUKFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2ludGVycHJldGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJz
ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L3J1bnRpbWUiCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDY1OTApCisrKyBUb29scy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0yNyAgRmlsaXAgUGl6bG8g
IDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGll
ciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4
MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQgRUZMJ3MgYnVpbGQgc3lzdGVt
IHRvIGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3JpcHRDb3JlLgorCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAyLTAyICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTA2NTQzLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZs
L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9D
TWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA2NTkwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02OCwxMCArNjgsMTIgQEAgU0VU
KER1bXBSZW5kZXJUcmVlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0KICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vQVBJCiAgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L2Fzc2VtYmxlcgorICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZQogICAg
ICR7SkFWQVNDUklQVENPUkVfRElSfS9kZmcKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaGVh
cAogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9pbnRlcnByZXRlcgogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9qaXQKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQKICAgICAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9Gb3J3
YXJkaW5nSGVhZGVycwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS93dGYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125194</attachid>
            <date>2012-02-02 14:53:55 -0800</date>
            <delta_ts>2012-02-06 15:17:08 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_90.diff</filename>
            <type>text/plain</type>
            <size>487953</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3MiBA
QAorMjAxMi0wMi0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcmk6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmVDb21tb24udnNwcm9wczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAg
ICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJl
c3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDogQWRkZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToKKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAgIChDYWxsTGlu
a1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2sp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6dW5saW5rQ2FsbHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0luY29t
aW5nQ2FsbHMpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToK
KyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJs
b2NrOjpqaXRDb21waWxlSW1wbCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENv
bXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdP
cHBvcnR1bml0eSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiYXNl
bGluZVZlcnNpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpbmtJbmNvbWluZ0NhbGwp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNP
cHRpbWl6ZWRSZXBsYWNlbWVudCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkUHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRMTEludENh
bGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVzb2x2ZUlu
Zm8pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZv
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VTbG93
Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y291bGRUYWtlU2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZVNwZWNpYWxGYXN0Q2FzZSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VBbnlTbG93Q2FzZSk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YWRkRnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZG9udEpJVEFueXRpbWVTb29uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRB
ZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0U29vbik6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGxpbnRFeGVjdXRlQ291bnRlcik6CisgICAgICAgIChQcm9ncmFt
Q29kZUJsb2NrKToKKyAgICAgICAgKEV2YWxDb2RlQmxvY2spOgorICAgICAgICAoRnVuY3Rpb25D
b2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAg
ICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6R2V0
QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6Ondhc1NlZW5JbkpJVCk6
CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlv
bi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246Okluc3RydWN0
aW9uKToKKyAgICAgICAgKEluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludENh
bGxMaW5rSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkxMSW50
Q2FsbExpbmtJbmZvOjpMTEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChMTEludENhbGxMaW5r
SW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjp+TExJbnRDYWxsTGlua0lu
Zm8pOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6aXNMaW5rZWQpOgorICAgICAg
ICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6dW5saW5rKToKKyAgICAgICAgKiBieXRlY29kZS9N
ZXRob2RDYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZENhbGxMaW5rU3Rh
dHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRl
RnJvbUxMSW50KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaDoKKyAgICAg
ICAgKFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENh
dGNoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9E
RkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToK
KyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6Y29sbGVjdCk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAo
SlNDOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVy
L0NhbGxGcmFtZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0
YXRlOjpjdXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53
aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRl
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChJbnRlcnByZXRlcik6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGUpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6ZW5hYmxlZCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxl
Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoUmVnaXN0ZXJGaWxlKToKKyAgICAgICAgKiBq
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpOgorICAgICAgICAq
IGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6aW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJuVmFsdWUpOgorICAgICAgICAqIGppdC9K
SVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAg
KEpTQzo6SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpJVENvZGUpOgorICAg
ICAgICAoSlNDOjpKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENv
ZGU6OkpJVENvZGUpOgorICAgICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6
aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rp
b25JZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6OmppdFRocm93KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAg
ICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgIChKU0MpOgorICAgICAgICAq
IGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAg
KiBsbGludC9MTEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6
OkRhdGEpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxs
aW50L0xMSW50RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6
CisgICAgICAgIChEYXRhKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbklu
c3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAg
ICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAg
IChKU0M6OkxMSW50OjpnZXRFdmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50Ojpn
ZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVy
cHJldGVyVGhyb3dJbkNhbGxlcik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93
Rm9yVGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cp
OgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xM
SW50RXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6
CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChMTElu
dCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxM
SU5UX0hFTFBFUl9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9s
b2d1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoSlNDOjpM
TEludDo6ZW50cnlPU1IpOgorICAgICAgICAoSlNDOjpMTEludDo6cmVzb2x2ZUdsb2JhbCk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpnZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpoYW5k
bGVIb3N0Q2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAo
SlNDOjpMTEludDo6Z2VuZXJpY0NhbGwpOgorICAgICAgICAqIGxsaW50L0xMSW50SGVscGVycy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExM
SW50T2Zmc2V0c0V4dHJhY3Rvcik6CisgICAgICAgIChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rv
cjo6ZHVtbXkpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3Mu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2Fs
bEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JD
b25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0
aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50
OjpmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkxMSW50OjpldmFsRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxM
SW50Ojpwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgICogbGxpbnQvTExJbnRU
aHVua3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoTExJbnQpOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRlZC4KKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtOiBBZGRlZC4KKyAg
ICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L2FzbS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc3QucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVh
c20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGlu
ZWFzbS9pbnN0cnVjdGlvbnMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb2Zmc2V0
X2V4dHJhY3Rvcl9jb25zdGFudHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb2Zm
c2V0cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9vcHQucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9zZWxmX2hhc2gucmI6
IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2V0dGluZ3MucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L3g4Ni5yYjogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5k
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgor
ICAgICAgICAoQ29tbW9uU2xvd1BhdGhzKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUu
Y3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2
YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6
OnNhbXBsaW5nRGVzY3JpcHRpb24pOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y29t
cGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBp
bGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1Y3Qp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1
Y3RJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoRXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAoUHJvZ3JhbUV4ZWN1dGFi
bGUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGlv
bkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwcmVwYXJl
Rm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Fj
dGl2YXRpb246OnRlYXJPZmYpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKEpTQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDZWxsKToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0
YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNPYmplY3QpOgorICAgICAgICAoSlNGaW5hbE9iamVjdCk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlw
ZUluZm8uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChUeXBlSW5mbyk6CisgICAgICAgICog
cnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6ZGVzY3JpcHRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTVmFyaWFibGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5j
cHA6CisgICAgICAgIChPcHRpb25zKToKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6
ZU9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAoT3B0aW9u
cyk6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoU2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoU3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAqIHd0Zi9JbmxpbmVBU00uaDoK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvU2VudGluZWxMaW5rZWRM
aXN0Lmg6CisgICAgICAgIChTZW50aW5lbExpbmtlZExpc3QpOgorICAgICAgICAoV1RGOjpTZW50
aW5lbExpbmtlZExpc3Q6OmlzRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwu
aDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChTdHJpbmdJbXBsKToKKwogMjAxMi0wMi0wMiAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbGVhc2UgYnVpbGQg
ZGVidWdnaW5nIHNob3VsZCBiZSBlYXNpZXIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTEsNiArMTEsNyBAQCBTRVQoSmF2YVNjcmlw
dENvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVi
dWdnZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50
IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vcHJvZmlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpA
QCAtOTUsNiArOTYsNyBAQCBTRVQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGludGVycHJl
dGVyL1JlZ2lzdGVyRmlsZS5jcHAKIAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAor
ICAgIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljMzJf
NjQuY3BwCiAgICAgaml0L0pJVEFyaXRobWV0aWMuY3BwCiAgICAgaml0L0pJVENhbGwzMl82NC5j
cHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDEwNjU5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5
KQpAQCAtNTcsNiArNTcsNyBAQCBqYXZhc2NyaXB0Y29yZV9jcHBmbGFncyArPSBcCiAJLUkkKHNy
Y2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyIFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0IFwKKwktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQgXAog
CS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCSh3b3JraW5nIGNvcHkpCkBAIC04MSw2ICs4MSw3IEBAIGph
dmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvUmVwYXRjaEJ1ZmZlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1NI
NEFzc2VtYmxlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2Vt
Ymxlci5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50
aW9ucy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZvLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwIFwKQEAgLTEw
Miw2ICsxMDMsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0p1bXBUYWJsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9KdW1wVGFibGUuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2Fs
bExpbmtJbmZvLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MaW5lSW5mby5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtJbmZvLmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5o
IFwKQEAgLTI3Nyw2ICsyNzksOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0NvbXBhY3RKSVRDb2RlTWFwLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRBcml0aG1ldGljMzJfNjQuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEFy
aXRobWV0aWMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENhbGwzMl82NC5j
cHAgXApAQCAtMzAwLDYgKzMwNCw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvU3BlY2lhbGl6ZWRUaHVua0pJVC5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL29zLXdpbjMyL3N0ZGJv
b2wuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL29zLXdpbjMyL3N0ZGludC5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1aWxkZXIuaCBcCkBAIC0zNTAsNiArMzU1LDcg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FsbERhdGEuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DYWxs
RGF0YS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaCBcCisJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5jcHAgXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oIFwKQEAgLTM3OCw2
ICszODQsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlv
bkhhcm5lc3MuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Qcm90
b3R5cGUuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5w
cmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnBy
aQkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnByaQkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNyBAQCBJTkNMVURFUEFUSCArPSBc
CiAgICAgJCRTT1VSQ0VfRElSL2RlYnVnZ2VyIFwKICAgICAkJFNPVVJDRV9ESVIvaW50ZXJwcmV0
ZXIgXAogICAgICQkU09VUkNFX0RJUi9qaXQgXAorICAgICQkU09VUkNFX0RJUi9sbGludCBcCiAg
ICAgJCRTT1VSQ0VfRElSL3BhcnNlciBcCiAgICAgJCRTT1VSQ0VfRElSL3Byb2ZpbGVyIFwKICAg
ICAkJFNPVVJDRV9ESVIvcnVudGltZSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFy
Z2V0LnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQko
cmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHdv
cmtpbmcgY29weSkKQEAgLTEwNiw2ICsxMDYsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBpbnRlcnBy
ZXRlci9SZWdpc3RlckZpbGUuY3BwIFwKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvckZpeGVk
Vk1Qb29sLmNwcCBcCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwKKyAgICBqaXQv
SG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgXAogICAgIGppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAg
ICAgaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAgXAogICAgIGppdC9KSVRDYWxsLmNwcCBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvagkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTE3NTgsNiArMTc1OCwxMCBAQAogCQkJCT4KIAkJCTwvRmlsZT4K
IAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcSG9zdENhbGxSZXR1cm5WYWx1
ZS5jcHAiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XC4uXGppdFxKSVQuY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KQEAgLTE4NDMsNiArMTg0NywxNCBA
QAogCQkJPC9GaWxlPgogCQk8L0ZpbHRlcj4KIAkJPEZpbHRlcgorCQkJTmFtZT0ibGxpbnQiCisJ
CQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cbGxpbnRcTExJbnREYXRhLmgi
CisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgogCQkJTmFtZT0iaW50
ZXJwcmV0ZXIiCiAJCQk+CiAJCQk8RmlsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52
c3Byb3BzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwkocmV2
aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52c3Byb3BzCSh3b3JraW5n
IGNvcHkpCkBAIC02LDcgKzYsNyBAQAogCT4KIAk8VG9vbAogCQlOYW1lPSJWQ0NMQ29tcGlsZXJU
b29sIgotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKENvbmZpZ3VyYXRp
b25CdWlsZERpcilcb2JqXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXCZxdW90OzsuLi8u
Li87Li4vLi4vQVBJLzsuLi8uLi9wYXJzZXIvOy4uLy4uL2J5dGVjb21waWxlci87Li4vLi4vZGZn
LzsuLi8uLi9qaXQvOy4uLy4uL3J1bnRpbWUvOy4uLy4uL3Rvb2xzLzsuLi8uLi9ieXRlY29kZS87
Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJvZmlsZXI7Li4vLi4vYXNzZW1i
bGVyLzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNE
aXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHJp
dmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZSZxdW90Ozsm
cXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0Q29yZSZxdW90
OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZx
dW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7IgorCQlBZGRp
dGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilc
b2JqXEphdmFTY3JpcHRDb3JlXERlcml2ZWRTb3VyY2VzXCZxdW90OzsuLi8uLi87Li4vLi4vQVBJ
LzsuLi8uLi9wYXJzZXIvOy4uLy4uL2J5dGVjb21waWxlci87Li4vLi4vZGZnLzsuLi8uLi9qaXQv
Oy4uLy4uL2xsaW50LzsuLi8uLi9ydW50aW1lLzsuLi8uLi90b29scy87Li4vLi4vYnl0ZWNvZGUv
Oy4uLy4uL2ludGVycHJldGVyLzsuLi8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fzc2Vt
Ymxlci87Li4vLi4vZGVidWdnZXIvOy4uLy4uL2hlYXAvOyZxdW90OyQoV2ViS2l0TGlicmFyaWVz
RGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHBy
aXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7
JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVv
dDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90Ozsm
cXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OyIKIAkJUHJl
cHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9fU1REX0MiCiAJCUZvcmNlZEluY2x1ZGVGaWxlcz0iSUNV
VmVyc2lvbi5oIgogCS8+CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL2NvcHktZmlsZXMuY21kCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
Y29weS1maWxlcy5jbWQJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgZm9yICUlZCBpbiAoCiAgICAgZGVidWdnZXIK
ICAgICBpbnRlcnByZXRlcgogICAgIGppdAorICAgIGxsaW50CiAgICAgcGFyc2VyCiAgICAgcHJv
ZmlsZXIKICAgICBydW50aW1lCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTcsNiArNywxNSBAQAog
CW9iamVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCisJ
CTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovID0geworCQkJaXNh
ID0gUEJYQWdncmVnYXRlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4
MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFn
Z3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi87CisJCQlidWlsZFBoYXNlcyA9ICgKKwkJ
CQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICov
LAorCQkJKTsKKwkJCW5hbWUgPSAiTExJbnQgT2Zmc2V0cyI7CisJCQlwcm9kdWN0TmFtZSA9ICJE
ZXJpdmVkIFNvdXJjZXMiOworCQl9OwogCQk2NUZCM0Y2NjA5RDExRTkxMDBGNDlERUIgLyogRGVy
aXZlZCBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYQWdncmVnYXRlVGFyZ2V0OwogCQkJYnVp
bGRDb25maWd1cmF0aW9uTGlzdCA9IDY1RkIzRjc3MDlEMTFFQkQwMEY0OURFQiAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiRGVyaXZlZCBTb3VyY2Vz
IiAqLzsKQEAgLTE0LDYgKzIzLDkgQEAKIAkJCQk2NUZCM0Y2NTA5RDExRTkxMDBGNDlERUIgLyog
R2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzICovLAogCQkJCTVEMzVERUUxMEM3QzE0MEIwMDg2NDhC
MiAvKiBHZW5lcmF0ZSBEVHJhY2UgaGVhZGVyICovLAogCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9
ICgKKwkJCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAq
LywKKwkJCSk7CiAJCQluYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCQlwcm9kdWN0TmFtZSA9
ICJEZXJpdmVkIFNvdXJjZXMiOwogCQl9OwpAQCAtNDgsNiArNjAsMTAgQEAKIAkJMEJBQzk0QTAx
MzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQUM5NDlFMTMzODcyODQwMENG
MTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEJDRDgzNTcxNDg1ODQ1MjAwRUEyMDAzIC8q
IFRlbXBvcmFyeUNoYW5nZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEJDRDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCRjI4QTI5
MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXpl
TGltaXRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRGIC8qIExMSW50RW50
cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovOyB9
OworCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTYxNEJDRjQ1
QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJ
bnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLzsgfTsKKwkJ
MEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYg
LyogTExJbnRUaHVua3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E1MTRCQ0Y1MDQw
MDg4NUI0RiAvKiBDb2RlVHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTgx
NEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4
cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZv
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTU4
LDkgKzc0LDEzIEBACiAJCTBGMEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlu
a0luZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MEI4M0IzMTRCQ0Y4NUUwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCNzE0QkNGOEUx
MDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxS
ZXNvbHZlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2Rl
T2Zmc2V0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBGQzQ1ODE0QkQxNUYx
MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29t
bW9uU2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNkQ3MjYxNDJD
MzlDMDAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9y
LmNwcCAqLzsgfTsKIAkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNjYxNEJF
NUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRp
b25IYXJuZXNzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdEMTRCRTcy
N0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyog
Q29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNv
bnZlbnRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjQyREE3MTNG
M0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMg
LyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTZGMTQ3MzhGMzEwMDEyMUU0RiAvKiBERkdDb2Rl
QmxvY2tzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMkM1NTcwMTQ3MzhGMzUwMDEy
MUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tz
LmNwcCAqLzsgfTsKQEAgLTcxLDYgKzkxLDE5IEBACiAJCTBGNDMxNzM4MTQ2QkFDNjkwMDdFMzg5
MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjQ2
ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8q
IEpJVEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA3RjE0
QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MEEzMTRC
QTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dEV4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlGMTRCQTdG
ODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovOyBzZXR0aW5ncyA9IHtDT01QSUxFUl9G
TEFHUyA9ICItV25vLXVudXNlZC1wYXJhbWV0ZXIiOyB9OyB9OworCQkwRjQ2ODBBNTE0QkE3RjhE
MDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0
NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTgx
NEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8q
IExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQjE0QkJCMTcy
MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJ
bnRPZmZsaW5lQXNtQ29uZmlnLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovOyB9
OworCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzgxNEJC
QjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIg
LyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovOyB9Owor
CQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIg
LyogTExJbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Njgw
RDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovOyB9OworCQkw
RjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDExNEJCQzVGODAw
QkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU1RjBGNDE0RDEwNjM5MDBBQzc2NDkgLyogQWJz
dHJhY3RQQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjU1RjBGMTE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi87IH07CiAJCTBG
NTVGMEY1MTREMTA2M0MwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyog
QWJzdHJhY3RQQy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVGMDhD
RTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zODcsNyArNDIwLDcgQEAK
IAkJODZCOTlBRTMxMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCOTlBRTExMTdFNTc4MTAwREY1
QTkwIC8qIFN0cmluZ0J1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTg2QkIwOUMwMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJF
MTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCAqLzsgfTsKIAkJODZCQjA5QzExMzhF
MzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJGMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNo
LmggKi87IH07Ci0JCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkw
RUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IH07CisJCTg2QzM2RUVBMEVF
MTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3Jv
QXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OEREMTFB
MjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgKi87IH07CiAJCTg2QzU2OEUx
MTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAv
KiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLzsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0Yw
IC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87
IH07CkBAIC03NTQsNiArNzg3LDIwIEBACiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8K
IAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjEx
NEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9
IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4
NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJ
CQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MjsKKwkJCXJl
bW90ZUluZm8gPSAiTExJbnQgT2Zmc2V0cyI7CisJCX07CisJCTBGNDY4MEIzMTRCQTgyMTQwMEJG
RTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWlu
ZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFD
MDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xv
YmFsSURTdHJpbmcgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0g
SlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQl9OwogCQkxNDEyMTRCRTBBNDkxOTBFMDA0ODAy
NTUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVy
SXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3
IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtNzk5LDYgKzg0NiwxNSBAQAogLyogRW5kIFBCWENv
bnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVz
ICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQYXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJ
CQlkc3RTdWJmb2xkZXJTcGVjID0gMDsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAxOworCQl9OwogCQk1REJCMTUxMTEzMUQwQjEz
MDA1NkFEMzYgLyogQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWENvcHlG
aWxlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAxMjsKQEAgLTgzOSw2ICs4OTUs
MTAgQEAKIAkJMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVy
aWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkUmVzdHJpY3Rp
b25WZXJpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkNEODM1NDE0ODU4
NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFRlbXBvcmFyeUNoYW5nZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2lu
dHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFbnRyeXBv
aW50cy5jcHA7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlw
b2ludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFbnRyeXBvaW50
cy5oOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRUaHVua3MuY3BwOyBwYXRo
ID0gbGxpbnQvTExJbnRUaHVua3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTExJbnRUaHVua3MuaDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0
RiAvKiBDb2RlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlVHlw
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBODE0QkNGNTVFMDA4ODVC
NEYgLyogSGFuZGxlckluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFu
ZGxlckluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQUExNEJDRjVC
OTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRXhwcmVzc2lvblJhbmdlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtODQ5LDkgKzkwOSwxMyBAQAogCQkwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyog
TWV0aG9kQ2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1l
dGhvZENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNC
NjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gR2xvYmFsUmVzb2x2ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRU
b0J5dGVjb2RlT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMTEludENhbGxMaW5rSW5mby5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9u
U2xvd1BhdGhzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vblNsb3dQ
YXRocy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE2RDcyNDE0MkMzOUEyMDBD
Rjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjFDMjY2
MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSklURHJpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFD
Mjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1
dGlvbkhhcm5lc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0aW9u
SGFybmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3RTE0QkVBQTgw
MDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBCeXRlY29kZUNvbnZlbnRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQzU1NkQxNDczOEYyRTAwMTIx
RTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gREZHQ29kZUJsb2Nrcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTg2Miw2ICs5MjYsMjAgQEAKIAkJMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8q
IExpc3RhYmxlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaXN0
YWJsZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwN0YxNEJB
NTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSklURXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zm
c2V0c0V4dHJhY3RvciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVU
eXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBw
YXRoID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RXhjZXB0aW9u
cy5jcHA7IHBhdGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25z
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5oOyBw
YXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRIZWxwZXJzLmNwcDsgcGF0aCA9IGxs
aW50L0xMSW50SGVscGVycy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4
MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gTExJbnRIZWxwZXJzLmg7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0Njgw
QzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExMSW50Q29tbW9uLmg7IHBhdGggPSBsbGludC9MTEludENvbW1vbi5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyog
TExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBwYXRoID0gbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29u
ZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM3MTRCQkIxNjkwMEJG
RTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBwYXRoID0gbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM4
MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIuaDsgcGF0aCA9IGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0Njgw
Q0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBMTEludERhdGEuY3BwOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcy
IC8qIExMSW50RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludERh
dGEuaDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwRDExNEJCQzVGODAwQkZF
MjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjU1RjBGMTE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBYnN0cmFjdFBDLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RQQy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyogREZHQnl0ZUNv
ZGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCeXRlQ29kZUNh
Y2hlLmg7IHBhdGggPSBkZmcvREZHQnl0ZUNvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTU4Nyw2ICsxNjY1LDEzIEBACiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8K
KwkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2Eg
PSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUUwQTQ4NzkzQzAwNDgwMjU1IC8qIEZyYW1ld29y
a3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0
aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0xNjQ1LDYgKzE3MzAsNyBAQAogCQkJCTE0MTIxMTIw
MEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovLAogCQkJCTE0QkQ1OUJGMEEzRThGOTAwMEJB
RjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0
UmVnRXhwICovLAorCQkJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNl
dHNFeHRyYWN0b3IgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKQEAgLTE2NzUsNiArMTc2MSw3IEBACiAJCQkJRjVDMjkwRTYwMjg0Rjk4
RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCiAJCQkJNDVFMTJEODgwNkE0
OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3
IC8qIGNvbmZpZy5oICovLAorCQkJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAq
LywKIAkJCQkxNDMyRUJENzBBMzRDQUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEy
MEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJsZXIgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAw
RjFGNjgxIC8qIGJ5dGVjb2RlICovLApAQCAtMTcxNCw2ICsxODAxLDI4IEBACiAJCQl0YWJXaWR0
aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7CiAJCX07CisJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3
MiAvKiBsbGludCAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJ
CQkJMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovLAor
CQkJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8sCisJ
CQkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLywKKwkJCQkw
RjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLywKKwkJCQkwRjQ2ODBD
RTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLywKKwkJCQkwRjQ2ODBDRjE0QkJC
M0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi8sCisJCQkJMEY0NjgwQzUxNEJCQjE2OTAwQkZF
MjcyIC8qIExMSW50Q29tbW9uLmggKi8sCisJCQkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8q
IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovLAorCQkJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3
MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLywKKwkJCQkwRjQ2ODBDODE0QkJCMTY5MDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovLAorCQkJCTBGNDY4MDlEMTRCQTdGODIw
MEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovLAorCQkJCTBGNDY4MDlFMTRCQTdGODIw
MEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCAqLywKKwkJCQkwRjQ2ODA5RjE0QkE3RjgyMDBC
RkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLywKKwkJCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUy
NzIgLyogTExJbnRIZWxwZXJzLmggKi8sCisJCQkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8q
IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi8sCisJCQkpOworCQkJbmFtZSA9IGxsaW50Owor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJMTQxMjExMDAwQTQ4NzcyNjAwNDgw
MjU1IC8qIHRlc3RzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
QEAgLTE3NDgsNiArMTg1Nyw4IEBACiAJCTE0MjlEOTJDMEVEMjJENzAwMEI4OTYxOSAvKiBqaXQg
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGNDY4MEQw
MTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLywKKwkJCQkwRjQ2
ODBEMTE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovLAogCQkJCTBG
NDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLywKIAkJCQkwRjQ2
ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovLAogCQkJCTBGRDgyRTM3
MTQxQUIxNDIwMDE3OUM5NCAvKiBDb21wYWN0SklUQ29kZU1hcC5oICovLApAQCAtMjE3NSw2ICsy
Mjg2LDggQEAKIAkJN0VGNkUwQkIwRUI3QTFFQzAwNzlBRkFGIC8qIHJ1bnRpbWUgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTBGMjFDMjc5MTRCRTcyNzMw
MEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi8sCisJCQkJMEYyMUMyN0ExNEJF
NzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLywKIAkJCQkwRjE1RjE1RDE0QjdB
NzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8sCiAJCQkJQkNGNjA1MTEwRTIwM0VG
ODAwQjlBNjREIC8qIEFyZ0xpc3QuY3BwICovLAogCQkJCUJDRjYwNTEyMEUyMDNFRjgwMEI5QTY0
RCAvKiBBcmdMaXN0LmggKi8sCkBAIC0yNTQ3LDYgKzI2NjAsOCBAQAogCQk5NjlBMDc4RjBFRDFE
M0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNo
aWxkcmVuID0gKAorCQkJCTBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZl
bnRpb25zLmggKi8sCisJCQkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExp
bmtJbmZvLmggKi8sCiAJCQkJMEY5MzMyOTMxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3Rh
dHVzLmNwcCAqLywKIAkJCQkwRjkzMzI5NDE0Q0E3REMxMDA4NUYzQzYgLyogQ2FsbExpbmtTdGF0
dXMuaCAqLywKIAkJCQkwRjkzMzI5NTE0Q0E3REMxMDA4NUYzQzYgLyogR2V0QnlJZFN0YXR1cy5j
cHAgKi8sCkBAIC0zMDk3LDcgKzMyMTIsMTYgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZF
N0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJEQjhBODEw
MEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYx
NUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlv
bnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBMTElu
dENvbW1vbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8q
IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0QxNEJC
QjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBv
aW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExM
SW50VGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYg
LyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0
RiAvKiBIYW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAw
ODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtMzEwNiw3
ICszMjMwLDExIEBACiAJCQkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxM
aW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8q
IEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCOTE0QkNGOTVG
MDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZl
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1
dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0
QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3
RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY3QjI5NEExNEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGll
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEMxNEMzQ0Q0MzAwN0MzREIxIC8qIERGR0J5
dGVDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzEyNSw2ICszMjUzLDI0IEBACiAvKiBF
bmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVU
YXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVp
bGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBj
b25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0
cmFjdG9yIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MDhCMTRCQTdFNUUwMEJG
RTI3MiAvKiBTb3VyY2VzICovLAorCQkJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFt
ZXdvcmtzICovLAorCQkJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8s
CisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJ
CQkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJ
CQkpOworCQkJbmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3ROYW1l
ID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDBGNDY4
MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQlw
cm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OwogCQkxNDEy
MTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2
ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDEyMTEzOTBBNDg3OTg0MDA0
ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1p
bmlkb20iICovOwpAQCAtMzI1MSwxMSArMzM5NywyOSBAQAogCQkJCTE0QkQ1OUJFMEEzRThGOTAw
MEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTkzMkY1QkRBMDgyMkExQzcwMDczNjk3NSAvKiBq
c2MgKi8sCiAJCQkJNjUxMTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJ
CQkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAq
LywKKwkJCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLywKIAkJ
CSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3
MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNj
cmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmls
ZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9sbGludC9M
b3dMZXZlbEFzc2VtYmxlci5hc20iLAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUgRGVyaXZl
ZCBTb3VyY2VzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaCIsCisJCQkpOworCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3No
OworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJ
bnRPZmZzZXRzL1wiXG5cbi91c3IvYmluL2VudiBydWJ5IFwiJHtTUkNST09UfS9vZmZsaW5lYXNt
L2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmJcIiBcIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5hc21cIiBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMv
TExJbnREZXNpcmVkT2Zmc2V0cy5oXCJcbiI7CisJCX07CiAJCTM3MTNGMDE0MTQyOTA1MjQwMDM2
Mzg3RiAvKiBDaGVjayBGb3IgSW5hcHByb3ByaWF0ZSBPYmplY3RpdmUtQyBDbGFzcyBOYW1lcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9u
TWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zMzYxLDcgKzM1MjUsNyBAQAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQkJc2hlbGxQYXRoID0gL2Jpbi9z
aDsKLQkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL2RvY3NcIlxuY2QgXCIke0JVSUxUX1BST0RVQ1RT
X0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmVcIlxuXG4vYmluL2xuIC1zZmggXCIk
e1NSQ1JPT1R9XCIgSmF2YVNjcmlwdENvcmVcbmV4cG9ydCBKYXZhU2NyaXB0Q29yZT1cIkphdmFT
Y3JpcHRDb3JlXCJcbmV4cG9ydCBCVUlMVF9QUk9EVUNUU19ESVI9XCIuLi8uLlwiXG5cbm1ha2Ug
LS1uby1idWlsdGluLXJ1bGVzIC1mIFwiSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZVwiIC1qIGAvdXNyL3NiaW4vc3lzY3RsIC1uIGh3Lm5jcHVgXG4iOworCQkJc2hlbGxTY3JpcHQg
PSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNj
cmlwdENvcmUvZG9jc1wiXG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7U1JDUk9PVH1cIiBKYXZhU2Ny
aXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2YVNjcmlwdENvcmVcIlxuZXhwb3J0
IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJcblxubWFrZSAtLW5vLWJ1aWx0aW4tcnVsZXMg
LWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlXCIgLWogYC91c3Ivc2Jpbi9z
eXNjdGwgLW4gaHcubmNwdWBcblxuL3Vzci9iaW4vZW52IHJ1YnkgSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9hc20ucmIgSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5h
c20gJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0pTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciBMTEludEFz
c2VtYmx5LmhcbiI7CiAJCX07CiAJCTkzMTk1ODZCMDlEOUY5MUEwMEE1NkZENCAvKiBDaGVjayBG
b3IgR2xvYmFsIEluaXRpYWxpemVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVp
bGRQaGFzZTsKQEAgLTMzOTYsNiArMzU2MCwxNCBAQAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVp
bGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KKwkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlp
c2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2
NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRP
ZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRDBBNDg3OTNDMDA0
ODAyNTUgLyogU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwog
CQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTM2NTMsNyArMzgyNSwxNCBAQAog
CQkJCTg2NzA0Qjg2MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTg2NzA0Qjg5MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNr
ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExM
SW50SGVscGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBODE0QkE3RkFCMDBCRkUy
NzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGNDY4MDgzMTRC
QTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
NDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0
dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUExNEJDRjQ1RDAwODg1QjRG
IC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUMxNEJD
RjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4
M0IwMTRCQ0Y3MTYwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYwQjgzQjQxNEJDRjg2MDAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGNjlFODZDMzE0QzZFNTUxMDAyQzJDNjIgLyogTnVtYmVyT2ZDb3Jl
cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM2NzgsNiArMzg1NywxNiBAQAogLyogRW5kIFBCWFNv
dXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVGFyZ2V0RGVwZW5kZW5j
eSBzZWN0aW9uICovCisJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBl
bmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9
IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovOworCQkJdGFyZ2V0
UHJveHkgPSAwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5
ICovOworCQl9OworCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5k
ZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAw
RjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOwor
CQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovOworCQl9OwogCQkxNDEyMTRCRjBBNDkxOTBFMDA0ODAyNTUgLyogUEJYVGFy
Z2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CiAJCQl0
YXJnZXQgPSAxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLzsKQEAgLTM3MTEs
NiArMzkwMCwxNTAgQEAKIC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24gKi8KIAog
LyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkwRjQ2ODA5NjE0QkE3
RTVFMDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0g
Tk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BI
QVNFX1NUUklQID0gTk87CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJ
CQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9O
UyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlHQ0NfUFJFUFJP
Q0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIkKGluaGVyaXRl
ZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBOTzsKKwkJCQlH
Q0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0ND
X1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9N
SVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUg
PSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJf
U0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJV
SUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9Q
QVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJ
CQlPTkxZX0FDVElWRV9BUkNIID0gTk87CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05B
TUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRI
UyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NF
QVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwOTcx
NEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BB
VEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlD
T1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJk
d2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJ
CQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBj
b20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMy
X0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZ
UEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdD
Q19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1th
cmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19E
SVIpL0xMSW50T2Zmc2V0cyQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gTk87
CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFj
b3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJ
CW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJv
ZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hT
ID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlF
UzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJ
CQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19F
WENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5s
bHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5P
OworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0Nf
V0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFC
TEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4s
CisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAor
CQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9Z
TUVOVF9UQVJHRVQgPSAxMC43OworCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBOTzsKKwkJCQlQUk9E
VUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJ
VVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9M
TEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFBy
b2ZpbGluZzsKKwkJfTsKKwkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24g
Ki8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChB
UkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJ
CURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19D
X0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElP
TlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xh
bmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJ
R0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FC
T1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlF
UzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJ
aWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIk
KEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RB
UkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlT
REtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUyki
OworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBBRDE0QkE3RkQ5
MDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
KwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNl
cyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MEFFMTRCQTdG
RDkwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNv
dXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4MEFG
MTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRl
cml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOworCQl9Owor
CQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNU
X05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0
aW9uOworCQl9OwogCQkxNDEyMTEzQTBBNDg3OTg0MDA0ODAyNTUgLyogRGVidWcgKi8gPSB7CiAJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CkBAIC0z
OTUyLDYgKzQyODUsMjggQEAKIC8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkwRjQ2ODA5QTE0
QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVU
YXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZp
Z3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODA5NjE0
QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcy
IC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2ZpbGlu
ZyAqLywKKwkJCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJ
CSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29u
ZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBBQzE0QkE3RkQ5MDBC
RkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQg
IkxMSW50IE9mZnNldHMiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJ
CWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8q
IERlYnVnICovLAorCQkJCTBGNDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovLAor
CQkJCTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY0Njgw
QjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENv
bmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0g
UHJvZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLyA9IHsKIAkJ
CWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHJl
dmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1
ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjZGVmaW5lIEdMT0JBTF9U
SFVOS19JRCByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLTEp
KQogI2RlZmluZSBSRUdFWFBfQ09ERV9JRCByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNf
Y2FzdDxpbnRwdHJfdD4oLTIpKQogCi0jaW5jbHVkZSA8TWFjcm9Bc3NlbWJsZXIuaD4KKyNpbmNs
dWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBu
YW1lc3BhY2UgSlNDIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAkocmV2aXNpb24gMTA2NTkwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAko
d29ya2luZyBjb3B5KQpAQCAtMjczLDYgKzI3MywxNCBAQCBwdWJsaWM6CiAgICAgewogICAgICAg
ICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwogICAgIH0KKyAgICAKKyAgICBz
dGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyh2
b2lkKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIodmFs
dWUpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVzdWx0OworICAgICAgICByZXN1
bHQubV92YWx1ZSA9IHZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KIAogICAg
IGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihSZXR1cm5BZGRyZXNzUHRyIHJhKQogICAg
ICAgICA6IG1fdmFsdWUocmEudmFsdWUoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCeXRlY29kZUNvbnZlbnRpb25zX2gKKyNkZWZpbmUg
Qnl0ZWNvZGVDb252ZW50aW9uc19oCisKKy8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBieXRl
Y29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRoZWly
IHJhbmdlczoKKy8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRpY2Vz
IGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZyYW1l
LCBzZWUgUmVnaXN0ZXJGaWxlLmguCisvLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAgRm9y
d2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFycyBh
bmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCisvLyAgICAgIDB4
NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAgc3Bl
Y2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCitzdGF0
aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsKKwor
I2VuZGlmIC8vIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDEwNjU5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDE3ICsyNyw0MCBAQAogI2luY2x1ZGUgIkNhbGxMaW5rU3Rh
dHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMTEludENhbGxMaW5r
SW5mby5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0
dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBV
TlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2lu
KCkgKyBieXRlY29kZUluZGV4OworICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8g
PSBpbnN0cnVjdGlvbls0XS51LmNhbGxMaW5rSW5mbzsKKyAgICAKKyAgICByZXR1cm4gQ2FsbExp
bmtTdGF0dXMoY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5nZXQoKSwgZmFsc2UpOworI2Vs
c2UKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFsc2UpOworI2VuZGlmCit9CisKIENh
bGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmls
ZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJv
ZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lmIEVOQUJM
RShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAgICByZXR1cm4gQ2FsbExpbmtTdGF0
dXMoCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4
KS5sYXN0U2VlbkNhbGxlZS5nZXQoKSwKLSAgICAgICAgcHJvZmlsZWRCbG9jay0+Y291bGRUYWtl
U2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpOworICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVy
T2ZDYWxsTGlua0luZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2Zp
bGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIGlmIChwcm9maWxlZEJsb2NrLT5j
b3VsZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKKyAgICAgICAgcmV0dXJuIENhbGxMaW5r
U3RhdHVzKDAsIHRydWUpOworICAgIAorICAgIEpTRnVuY3Rpb24qIHRhcmdldCA9IHByb2ZpbGVk
QmxvY2stPmdldENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KS5sYXN0U2VlbkNhbGxlZS5nZXQo
KTsKKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJv
ZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgcmV0dXJuIENhbGxMaW5rU3Rh
dHVzKHRhcmdldCwgZmFsc2UpOwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwg
ZmFsc2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDE1
ICs0NywxNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIENhbGxMaW5rU3RhdHVzIGNvbXB1
dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAgICAgCi0gICAgYm9v
bCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0OyB9CisgICAgYm9vbCBpc1Nl
dCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0IHx8IG1fY291bGRUYWtlU2xvd1BhdGg7
IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFtX2NhbGxUYXJn
ZXQ7IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFpc1NldCgpOyB9CiAg
ICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0dXJuIG1fY291bGRU
YWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBKU0Z1bmN0aW9uKiBjYWxsVGFyZ2V0KCkgY29uc3Qg
eyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgCiBwcml2YXRlOgorICAgIHN0YXRpYyBDYWxs
TGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2Rl
SW5kZXgpOworICAgIAogICAgIEpTRnVuY3Rpb24qIG1fY2FsbFRhcmdldDsKICAgICBib29sIG1f
Y291bGRUYWtlU2xvd1BhdGg7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0
Miw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVP
YmplY3QuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnBy
ZXRlci5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRlICJVU3RyaW5nQ29u
Y2F0ZW5hdGUuaCIKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMzU2LDEwICszNTcsMTAgQEAgdm9p
ZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjKSBjbwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBpICs9IG9wY29kZUxlbmd0aHNbZXhlYy0+
aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbaV0udS5vcGNvZGUpXSkK
ICAgICAgICAgKytpbnN0cnVjdGlvbkNvdW50OwogCi0gICAgcHJpbnRmKCIlbHUgbV9pbnN0cnVj
dGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0
ZXIocylcblxuIiwKKyAgICBwcmludGYoIiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0
ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3RlcihzKTsgJWQgdmFyaWFibGUo
cylcblxuIiwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1Y3Rpb25D
b3VudCksCiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9ucygp
LnNpemUoKSAqIHNpemVvZihJbnN0cnVjdGlvbikpLAotICAgICAgICB0aGlzLCBtX251bVBhcmFt
ZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgdGhpcywgbV9udW1QYXJhbWV0
ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycywgbV9udW1WYXJzKTsKIAogICAgIFZlY3RvcjxJbnN0
cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGJlZ2luID0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsK
ICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBpbnN0cnVjdGlv
bnMoKS5lbmQoKTsKQEAgLTg5Niw2ICs4OTcsMTQgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhl
Y1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRp
b24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OiB7Cisg
ICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAg
ICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CisgICAgICAgICAgICBw
cmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWwiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX2dlbmVyaWM6IHsKICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgInB1dF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAgICAgICBicmVhazsKQEAg
LTE0NTMsNiArMTQ2Miw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKENvcHlQYXJzZWRCbG9ja1Rh
ZywKIHsKICAgICBzZXROdW1QYXJhbWV0ZXJzKG90aGVyLm51bVBhcmFtZXRlcnMoKSk7CiAgICAg
b3B0aW1pemVBZnRlcldhcm1VcCgpOworICAgIGppdEFmdGVyV2FybVVwKCk7CiAgICAgCiAgICAg
aWYgKG90aGVyLm1fcmFyZURhdGEpIHsKICAgICAgICAgY3JlYXRlUmFyZURhdGFJZk5lY2Vzc2Fy
eSgpOwpAQCAtMTUwMSw2ICsxNTExLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhl
Y3V0YWJsZSogbwogICAgIEFTU0VSVChtX3NvdXJjZSk7CiAgICAgCiAgICAgb3B0aW1pemVBZnRl
cldhcm1VcCgpOworICAgIGppdEFmdGVyV2FybVVwKCk7CiAKICNpZiBEVU1QX0NPREVfQkxPQ0tf
U1RBVElTVElDUwogICAgIGxpdmVDb2RlQmxvY2tTZXQuYWRkKHRoaXMpOwpAQCAtMTUxOCw3ICsx
NTI5LDExIEBAIENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiAjaWYgRU5BQkxFKFZFUkJPU0VfVkFM
VUVfUFJPRklMRSkKICAgICBkdW1wVmFsdWVQcm9maWxlcygpOwogI2VuZGlmCi0gICAgCisKKyNp
ZiBFTkFCTEUoTExJTlQpICAgIAorICAgIHdoaWxlIChtX2luY29taW5nTExJbnRDYWxscy5iZWdp
bigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQorICAgICAgICBtX2luY29taW5nTExJ
bnRDYWxscy5iZWdpbigpLT5yZW1vdmUoKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCiAjaWYg
RU5BQkxFKEpJVCkKICAgICAvLyBXZSBtYXkgYmUgZGVzdHJveWVkIGJlZm9yZSBhbnkgQ29kZUJs
b2NrcyB0aGF0IHJlZmVyIHRvIHVzIGFyZSBkZXN0cm95ZWQuCiAgICAgLy8gQ29uc2lkZXIgdGhh
dCB0d28gQ29kZUJsb2NrcyBiZWNvbWUgdW5yZWFjaGFibGUgYXQgdGhlIHNhbWUgdGltZS4gVGhl
cmUKQEAgLTE3MzAsOCArMTc0NSw2OSBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRp
dGlvbmFsbHkoCiAjZWxzZQogICAgIHN0YXRpYyBjb25zdCBib29sIHZlcmJvc2VVbmxpbmtpbmcg
PSBmYWxzZTsKICNlbmRpZgotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKICAgICAKKyNp
ZiBFTkFCTEUoTExJTlQpCisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJldGVyID0gbV9nbG9iYWxE
YXRhLT5pbnRlcnByZXRlcjsKKyAgICAvLyBpbnRlcnByZXRlci0+ZW5hYmxlZCgpIHJldHVybnMg
dHJ1ZSBpZiB0aGUgb2xkIEMrKyBpbnRlcnByZXRlciBpcyBlbmFibGVkLiBJZiB0aGF0J3MgZW5h
YmxlZAorICAgIC8vIHRoZW4gd2UncmUgbm90IHVzaW5nIExMSW50LgorICAgIGlmICghaW50ZXJw
cmV0ZXItPmVuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAg
ICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9w
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV07CisgICAgICAgICAgICBzd2l0Y2ggKGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkpIHsKKyAgICAg
ICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6
CisgICAgICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZSB8fCBI
ZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkpCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5r
aW5nKQorICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IHByb3BlcnR5
IGFjY2VzcyB3aXRoIHN0cnVjdHVyZSAlcC5cbiIsIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0
dXJlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVy
ZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzVdLnUub3BlcmFuZCA9
IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fbm9ybWFsOgorICAgICAgICAgICAgICAgIGlmIChIZWFwOjppc01hcmtlZChjdXJJbnN0
cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgSGVh
cDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAg
ICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0
dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBpZiAodmVyYm9zZVVubGlua2luZykgeworICAgICAgICAgICAgICAgICAgICBwcmludGYo
IkNsZWFyaW5nIExMSW50IHB1dCB0cmFuc2l0aW9uIHdpdGggc3RydWN0dXJlcyAlcCAtPiAlcCwg
Y2hhaW4gJXAuXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25b
NF0udS5zdHJ1Y3R1cmUuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJJbnN0
cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVh
cigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmNsZWFy
KCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5j
bGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlID0gaW50
ZXJwcmV0ZXItPmdldE9wY29kZShvcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBzaXpl
ID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyAr
K2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVj
dGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgQVNT
RVJUKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkg
PT0gb3BfcmVzb2x2ZV9nbG9iYWwKKyAgICAgICAgICAgICAgICAgICB8fCBpbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMpOworICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvblszXS51LnN0cnVj
dHVyZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQo
KSkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAodmVyYm9zZVVu
bGlua2luZykKKyAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IGdsb2JhbCBy
ZXNvbHZlIGNhY2hlIHdpdGggc3RydWN0dXJlICVwLlxuIiwgY3VySW5zdHJ1Y3Rpb25bM10udS5z
dHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1
cmUuY2xlYXIoKTsKKyAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUub3BlcmFuZCA9IDA7
CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbGxpbnRDYWxs
TGlua0luZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAobV9sbGludENhbGxMaW5r
SW5mb3NbaV0uaXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQobV9sbGludENhbGxMaW5rSW5m
b3NbaV0uY2FsbGVlLmdldCgpKSkgeworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5r
aW5nKQorICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFyaW5nIExMSW50IGNhbGwgZnJv
bSAlcC5cbiIsIHRoaXMpOworICAgICAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ld
LnVubGluaygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCEhbV9sbGludENhbGxM
aW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxs
TGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBtX2xs
aW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgICAgICB9Cisg
ICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKwogI2lmIEVOQUJMRShERkdfSklUKQogICAg
IC8vIENoZWNrIGlmIHdlJ3JlIG5vdCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAg
ICAgaWYgKCEoc2hvdWxkSW1tZWRpYXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBt
X2RmZ0RhdGEtPmxpdmVuZXNzSGFzQmVlblByb3ZlZCkpIHsKQEAgLTE3NTQsNyArMTgzMCw3IEBA
IHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2FsbExpbmtJbmZvcygpOyArK2kpIHsKICAgICAg
ICAgICAgIGlmIChjYWxsTGlua0luZm8oaSkuaXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQo
Y2FsbExpbmtJbmZvKGkpLmNhbGxlZS5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVy
Ym9zZVVubGlua2luZykKLSAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBjYWxs
IGZyb20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmlu
ZyBjYWxsIGZyb20gJXAgdG8gJXAuXG4iLCB0aGlzLCBjYWxsTGlua0luZm8oaSkuY2FsbGVlLmdl
dCgpKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8oaSkudW5saW5rKCptX2dsb2JhbERh
dGEsIHJlcGF0Y2hCdWZmZXIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCEhY2Fs
bExpbmtJbmZvKGkpLmxhc3RTZWVuQ2FsbGVlCkBAIC0xODUyLDEwICsxOTI4LDEyIEBAIHZvaWQg
Q29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXIKICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7ICsraSkKICAgICAgICAgdmlzaXRvci5hcHBl
bmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQotICAgIGZv
ciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9
IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5z
dHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOwotICAgIGZvciAo
c2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsg
aSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVj
dGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICBpZiAobV9nbG9i
YWxEYXRhLT5pbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNp
emUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9u
cygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICAgICAgZm9yIChzaXpl
X3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwg
c2l6ZTsgKytpKQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVj
dGlvbnMoKVttX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICB9CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShERkdfSklUKQpAQCAtMTg2Myw4ICsxOTQxLDkgQEAgdm9pZCBDb2RlQmxv
Y2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgogICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBl
eGVjdXRhYmxlcyB0aGF0IHdlIGhhdmUgaW5saW5lZCBkb24ndCBkaWUuCiAgICAgICAgIC8vIEZJ
WE1FOiBJZiB0aGV5IHdvdWxkIGhhdmUgb3RoZXJ3aXNlIGRpZWQsIHdlIHNob3VsZCBwcm9iYWJs
eSB0cmlnZ2VyIHJlY29tcGlsYXRpb24uCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
aW5saW5lQ2FsbEZyYW1lcygpLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICB2aXNpdG9yLmFw
cGVuZCgmaW5saW5lQ2FsbEZyYW1lcygpW2ldLmV4ZWN1dGFibGUpOwotICAgICAgICAgICAgdmlz
aXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZXMoKVtpXS5jYWxsZWUpOworICAgICAgICAgICAg
SW5saW5lQ2FsbEZyYW1lJiBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJhbWVzKClbaV07
CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZyYW1lLmV4ZWN1dGFibGUp
OworICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZS5jYWxsZWUpOwog
ICAgICAgICB9CiAgICAgfQogI2VuZGlmCkBAIC0yMDc0LDYgKzIxNTMsMTIgQEAgdm9pZCBDb2Rl
QmxvY2s6OnVubGlua0NhbGxzKCkKIHsKICAgICBpZiAoISFtX2FsdGVybmF0aXZlKQogICAgICAg
ICBtX2FsdGVybmF0aXZlLT51bmxpbmtDYWxscygpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9zLnNpemUoKTsgKytpKSB7
CisgICAgICAgIGlmIChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpKQorICAgICAg
ICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgfQorI2VuZGlmCiAg
ICAgaWYgKCEobV9jYWxsTGlua0luZm9zLnNpemUoKSB8fCBtX21ldGhvZENhbGxMaW5rSW5mb3Mu
c2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VK
SVQoKSkKQEAgLTIwODgsMTAgKzIxNzMsMzkgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0NhbGxz
KCkKIAogdm9pZCBDb2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMoKQogeworI2lmIEVOQUJM
RShMTElOVCkKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2lu
Y29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVn
aW4oKS0+dW5saW5rKCk7CisjZW5kaWYKKyAgICBpZiAobV9pbmNvbWluZ0NhbGxzLmlzRW1wdHko
KSkKKyAgICAgICAgcmV0dXJuOwogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcih0aGlz
KTsKICAgICB3aGlsZSAobV9pbmNvbWluZ0NhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0NhbGxz
LmVuZCgpKQogICAgICAgICBtX2luY29taW5nQ2FsbHMuYmVnaW4oKS0+dW5saW5rKCptX2dsb2Jh
bERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogfQorCit1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2Rl
T2Zmc2V0KEV4ZWNTdGF0ZSogZXhlYywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQor
eworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAocmV0dXJuQWRkcmVzcy52YWx1ZSgpID49IGJp
dHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2JlZ2luKQorICAgICAgICAmJiByZXR1cm5BZGRyZXNz
LnZhbHVlKCkgPD0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZW5kKSkgeworICAgICAgICBB
U1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkpOworICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2Nr
KCkgPT0gdGhpcyk7CisgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRK
SVRUeXBlKCkpKTsKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gZXhlYy0+Y3Vy
cmVudFZQQygpOworICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb24pOworICAgICAgICByZXR1cm4g
Ynl0ZWNvZGVPZmZzZXQoaW5zdHJ1Y3Rpb24pOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGV4ZWMpOworI2VuZGlmCisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4g
MTsKKyAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5k
aWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOworICAgIGlmICghY2Fs
bEluZGljZXMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gYmluYXJ5U2Vh
cmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJl
dHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRK
SVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0
OworfQogI2VuZGlmCiAKIHZvaWQgQ29kZUJsb2NrOjpjbGVhckV2YWxDYWNoZSgpCkBAIC0yMTg3
LDI0ICsyMzAxLDQ1IEBAIGJvb2wgRnVuY3Rpb25Db2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRoREYK
IAogdm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJ
VFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6Omlz
T3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNl
bWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0
YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwogfQogCiB2b2lk
IEV2YWxDb2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9
IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5n
SklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwog
ICAgIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0
aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRnVuY3Rpb25Db2Rl
QmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6
OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJ
VFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRp
Y19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25P
cHRpbWl6ZWRDb2RlRm9yKCpnbG9iYWxEYXRhKCksIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JD
b25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7CiB9CisKK3ZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6aml0
Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRK
SVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMg
PT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRh
YmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlKGdsb2JhbERhdGEpOworfQorCit2
b2lkIEV2YWxDb2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1
bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxFdmFsRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShn
bG9iYWxEYXRhKTsKK30KKwordm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0g
SklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1l
bnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVy
RXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZUZvcihnbG9iYWxEYXRhLCBtX2lzQ29uc3RydWN0b3Ig
PyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOworfQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoVkFMVUVfUFJPRklMRVIpCkBAIC0yMzA3LDYgKzI0NDIsMTggQEAgdm9pZCBDb2RlQmxvY2s6
OmR1bXBWYWx1ZVByb2ZpbGVzKCkKIH0KICNlbmRpZgogCit2b2lkIENvZGVCbG9jazo6aGFuZGxl
Qnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKQoreworI2lmICFFTkFCTEUoT1BDT0RFX1NB
TVBMSU5HKSAmJiAhRU5BQkxFKExMSU5UKQorICAgIGlmIChCeXRlY29kZUdlbmVyYXRvcjo6ZHVt
cHNHZW5lcmF0ZWRDb2RlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAoISFhbHRlcm5hdGl2
ZSgpKQorICAgICAgICBkaXNjYXJkQnl0ZWNvZGUoKTsKKyAgICBlbHNlCisgICAgICAgIGRpc2Nh
cmRCeXRlY29kZUxhdGVyKCk7CisjZW5kaWYKK30KKwogI2lmbmRlZiBOREVCVUcKIGJvb2wgQ29k
ZUJsb2NrOjp1c2VzT3Bjb2RlKE9wY29kZUlEIG9wY29kZUlEKQogewpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTA2NTkwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMCw2ICszMCw3IEBACiAjaWZuZGVmIENvZGVCbG9ja19oCiAjZGVmaW5lIENvZGVCbG9j
a19oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiQ2FsbExp
bmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCIK
ICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCkBAIC01MCw2ICs1MSw3IEBACiAjaW5jbHVkZSAiSklU
V3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNpbmNsdWRlICJK
dW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkxp
bmVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQcmVkaWN0aW9uVHJhY2tl
ci5oIgpAQCAtNjUsMTYgKzY3LDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKLS8vIFJlZ2lzdGVyIG51bWJlcnMgdXNlZCBpbiBi
eXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3JkaW5nIHRvIHRo
ZWlyIHJhbmdlczoKLS8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdhdGl2ZSBpbmRp
Y2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRoZSBjYWxsIGZy
YW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCi0vLyAgICAgIDB4MDAwMDAwMDAtMHgzRkZGRkZGRiAg
Rm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgbG9jYWwgdmFy
cyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUuCi0vLyAgICAg
IDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4NDAwMDAwMDAg
c3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2RlQmxvY2suCi1z
dGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAwMDsK
LQogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAgY2xhc3MgREZH
Q29kZUJsb2NrczsKKyAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogCiAgICAgaW5saW5lIGludCB1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIo
aW50IGFyZ3VtZW50c1JlZ2lzdGVyKSB7IHJldHVybiBhcmd1bWVudHNSZWdpc3RlciAtIDE7IH0K
IApAQCAtODMsNiArODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBDb2RlQmxvY2sg
OiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXplciwgcHVibGljIFdlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgZnJpZW5k
IGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
ICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gQ29weVBhcnNlZEJsb2NrVGFnIHsgQ29weVBhcnNl
ZEJsb2NrIH07CiAgICAgcHJvdGVjdGVkOgpAQCAtMTIzLDcgKzEyMSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkKICAgICAgICAg
ICAgICAgICByZXN1bHQgPSByZXN1bHQtPmFsdGVybmF0aXZlKCk7CiAgICAgICAgICAgICBBU1NF
UlQocmVzdWx0KTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5cGUoKSA9PSBK
SVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNl
bGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMTkyLDE1ICsxOTAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxNZXRob2RDYWxsTGlua0luZm8s
IHVuc2lnbmVkLCBnZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUluZGV4PihtX21ldGhvZENh
bGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSwgYnl0ZWNv
ZGVJbmRleCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQo
UmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoIW1fcmFyZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBW
ZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1f
cmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOwotICAgICAgICAgICAgaWYgKCFjYWxs
SW5kaWNlcy5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBy
ZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNp
Z25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGlj
ZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSkt
PmJ5dGVjb2RlT2Zmc2V0OwotICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KEV4ZWNTdGF0ZSosIFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAgICAgIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0Rm9yQ2FsbEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAgICAgIHsKQEAg
LTIyMSwxMSArMjExLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAg
ICBtX2luY29taW5nQ2FsbHMucHVzaChpbmNvbWluZyk7CiAgICAgICAgIH0KKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgICAgIHZvaWQgbGlua0luY29taW5nQ2FsbChMTEludENhbGxMaW5rSW5mbyog
aW5jb21pbmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLnB1
c2goaW5jb21pbmcpOworICAgICAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogICAgICAg
ICAKICAgICAgICAgdm9pZCB1bmxpbmtJbmNvbWluZ0NhbGxzKCk7Ci0jZW5kaWYKKyNlbmRpZiAv
LyBFTkFCTEUoSklUKQogCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQp
IHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgdm9pZCBzZXRKSVRDb2RlTWFwKFBhc3NPd25QdHI8
Q29tcGFjdEpJVENvZGVNYXA+IGppdENvZGVNYXApCiAgICAgICAgIHsKICAgICAgICAgICAgIG1f
aml0Q29kZU1hcCA9IGppdENvZGVNYXA7CkBAIC0yMzQsNyArMjMwLDkgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2ppdENvZGVNYXAuZ2V0KCk7CiAg
ICAgICAgIH0KKyNlbmRpZgogICAgICAgICAKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAg
dm9pZCBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKQogICAgICAgICB7CiAgICAgICAgICAgICBp
ZiAoISFtX2RmZ0RhdGEpCkBAIC0zMzMsMTIgKzMzMSwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNzKQogICAgICAgICB7
CisgICAgICAgICAgICBBU1NFUlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0cnVjdGlvbnMoKS5iZWdp
bigpICYmIHJldHVybkFkZHJlc3MgPCBpbnN0cnVjdGlvbnMoKS5lbmQoKSk7CiAgICAgICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRyZXNzKSAtIGluc3Ry
dWN0aW9ucygpLmJlZ2luKCk7CiAgICAgICAgIH0KLSNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0
SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKSB7
IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9
CiAgICAgICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgeyByZXR1cm4gbV9pc051
bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KQEAgLTM1MiwxMyArMzQ5LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIG1fc2hvdWxkRGlzY2FyZEJ5dGVjb2RlID0gdHJ1
ZTsKICAgICAgICAgfQotICAgICAgICB2b2lkIGhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9y
dHVuaXR5KCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCEhYWx0ZXJuYXRpdmUoKSkKLSAg
ICAgICAgICAgICAgICBkaXNjYXJkQnl0ZWNvZGUoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBkaXNjYXJkQnl0ZWNvZGVMYXRlcigpOwotICAgICAgICB9CisgICAgICAgIHZv
aWQgaGFuZGxlQnl0ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICAgICAgCiAgICAg
ICAgIGJvb2wgdXNlc09wY29kZShPcGNvZGVJRCk7CiAKQEAgLTM4Myw2ICszNzQsMTUgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGV4ZWN1dGFibGVN
ZW1vcnkoKSB7IHJldHVybiBnZXRKSVRDb2RlKCkuZ2V0RXhlY3V0YWJsZU1lbW9yeSgpOyB9CiAg
ICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2Nv
cGVDaGFpbk5vZGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpID0gMDsK
KyAgICAgICAgYm9vbCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2Rl
OjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaml0Q29tcGlsZUltcGwoZ2xvYmFsRGF0YSk7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVw
bGFjZW1lbnQoKSA9IDA7CiAKICAgICAgICAgZW51bSBDb21waWxlV2l0aERGR1N0YXRlIHsKQEAg
LTQwMiwxMyArNDAyLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgaGFzT3B0
aW1pemVkUmVwbGFjZW1lbnQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklU
VHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRD
b2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIGJvb2wgcmVz
dWx0ID0gcmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID4gZ2V0SklUVHlwZSgpOwogI2lmICFB
U1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICAgICAg
QVNTRVJUKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpERkdKSVQpOwog
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCkt
PmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAg
QVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUo
KSkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpID09IHRoaXMpOwogICAg
ICAgICAgICAgfQogI2VuZGlmCkBAIC00NjcsMTggKzQ2NywyMSBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICB2b2lkIGNsZWFyRXZhbENhY2hlKCk7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVU
RVIpCiAgICAgICAgIHZvaWQgYWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbih1bnNpZ25lZCBw
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1f
Z2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CisgICAgICAg
ICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbih1bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAg
ICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbik7CisgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGds
b2JhbFJlc29sdmVJbnN0cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBoYXNHbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb25BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBhZGRM
TEludENhbGxMaW5rSW5mbygpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlu
a0luZm9zLmFwcGVuZChMTEludENhbGxMaW5rSW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiAm
bV9sbGludENhbGxMaW5rSW5mb3MubGFzdCgpOworICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFC
TEUoSklUKQogICAgICAgICB2b2lkIHNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKHNpemVf
dCBzaXplKSB7IG1fc3RydWN0dXJlU3R1YkluZm9zLmdyb3coc2l6ZSk7IH0KQEAgLTQ4Nyw4ICs0
OTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJ
bmZvKHVuc2lnbmVkIGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAg
ICAgICAgaWYgKG1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9n
bG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbikpOworICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEds
b2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOwogICAgICAgICB9CiAg
ICAgICAgIEdsb2JhbFJlc29sdmVJbmZvJiBnbG9iYWxSZXNvbHZlSW5mbyhpbnQgaW5kZXgpIHsg
cmV0dXJuIG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2luZGV4XTsgfQogICAgICAgICBib29sIGhhc0ds
b2JhbFJlc29sdmVJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7
CkBAIC00OTksNiArNTAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBhZGRN
ZXRob2RDYWxsTGlua0luZm9zKHVuc2lnbmVkIG4pIHsgQVNTRVJUKG1fZ2xvYmFsRGF0YS0+Y2Fu
VXNlSklUKCkpOyBtX21ldGhvZENhbGxMaW5rSW5mb3MuZ3JvdyhuKTsgfQogICAgICAgICBNZXRo
b2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGxMaW5rSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJuIG1f
bWV0aG9kQ2FsbExpbmtJbmZvc1tpbmRleF07IH0KKyAgICAgICAgc2l6ZV90IG51bWJlck9mTWV0
aG9kQ2FsbExpbmtJbmZvcygpIHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCk7
IH0KICNlbmRpZgogICAgICAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC01Mzks
NiArNTQyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJvZmlsZSA9PSByZXN1
bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQorICAgICAgICBQcmVk
aWN0ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChpbnQgYnl0
ZWNvZGVPZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZVByb2ZpbGVG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bigpOworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCB0b3RhbE51bWJlck9m
VmFsdWVQcm9maWxlcygpCiAgICAgICAgIHsKQEAgLTU2NSwxMiArNTcyLDE2IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTbG93Q2FzZShpbnQg
Ynl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJl
Q2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRl
Y29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRp
b25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rh
a2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBj
b3VsZFRha2VTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAg
IHJldHVybiB2YWx1ZSA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCAm
JiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBP
cHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQpAQCAtNTg5LDEy
ICs2MDAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2Vs
eVRvVGFrZVNwZWNpYWxGYXN0Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291
bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gc3BlY2lhbEZhc3RDYXNlQ291bnQg
Pj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nh
c3Q8ZG91YmxlPihzcGVjaWFsRmFzdENhc2VDb3VudCkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQg
Pj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAg
ICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKGludCBieXRl
Y29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNl
UHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1
bnNpZ25lZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFs
RmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChi
eXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0g
c2xvd0Nhc2VDb3VudCAtIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNjAzLDYgKzYxOCw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VBbnlT
bG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgh
bnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAg
dW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1
bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgKyBzcGVjaWFsRmFzdENhc2VDb3VudDsKQEAg
LTcwMCw3ICs3MTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wg
YWRkRnJlcXVlbnRFeGl0U2l0ZShjb25zdCBERkc6OkZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFz
ZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdl
dEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIG1fZXhpdFByb2ZpbGUuYWRkKHNpdGUp
OwogICAgICAgICB9CiAKQEAgLTgwOCw2ICs4MjUsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIHZvaWQgY29weVBvc3RQYXJzZURhdGFGcm9tKENvZGVCbG9jayogYWx0ZXJuYXRpdmUpOwog
ICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbUFsdGVybmF0aXZlKCk7CiAgICAgICAg
IAorICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gSklUdGluZyBraWNr
cyBpbiwgaW4gYSBtaXhlZCBtb2RlCisgICAgICAgIC8vIGV4ZWN1dGlvbiB3b3JsZC4KKyAgICAg
ICAgCisgICAgICAgIHZvaWQgZG9udEpJVEFueXRpbWVTb29uKCkKKyAgICAgICAgeworICAgICAg
ICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2
b2lkIGppdEFmdGVyV2FybVVwKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1
dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJt
VXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0U29vbigpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlu
dDMyX3QgbGxpbnRFeGVjdXRlQ291bnRlcigpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAg
IHJldHVybiBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAg
ICAgIC8vIEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiB0aWVyZWQgY29tcGlsYXRpb24g
a2lja3MgaW4uIFRoaXMKICAgICAgICAgLy8gY29udHJvbHMgYm90aCB3aGVuIHRoZSBvcHRpbWl6
aW5nIGNvbXBpbGVyIGlzIGludm9rZWQgYW5kIHdoZW4gT1NSCiAgICAgICAgIC8vIGVudHJ5IGhh
cHBlbnMuIFR3byB0cmlnZ2VycyBleGlzdDogdGhlIGxvb3AgdHJpZ2dlciBhbmQgdGhlIHJldHVy
bgpAQCAtMTAwMCw2ICsxMDQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9z
aG91bGREaXNjYXJkQnl0ZWNvZGU7CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwg
dm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwogICAgICAgICAKQEAgLTEwODEsOSArMTEy
MiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBt
X3NvdXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7CiAKLSNpZiBFTkFCTEUo
SU5URVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9wcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2dsb2JhbFJlc29sdmVJbnN0
cnVjdGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBTZWdtZW50ZWRWZWN0b3I8TExJ
bnRDYWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxsTGlua0luZm9zOworICAgICAgICBTZW50aW5l
bExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50
Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdMTEludENhbGxzOwogI2VuZGlmCiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0cnVjdHVyZVN0dWJJ
bmZvczsKQEAgLTEwOTQsOSArMTEzNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNoZWNrOwogICAgICAgICBTZW50
aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlu
a0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2VuZGlmCi0jaWYgRU5BQkxFKERGR19KSVQpCisj
aWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgT3duUHRyPENvbXBh
Y3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAgICAgIAorI2VuZGlmCisjaWYgRU5BQkxF
KERGR19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbiB7CiAgICAg
ICAgICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigpIHsgfQogICAgICAgICAgICAgCkBAIC0x
MTU5LDEyICsxMjAzLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93blB0cjxDb2Rl
QmxvY2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAgIAorICAgICAgICBpbnQzMl90IG1fbGxpbnRF
eGVjdXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAgICAgIGludDMyX3QgbV9qaXRFeGVjdXRlQ291
bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyOwogICAg
ICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFpbENvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3Qg
bV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9yZW9wdGltaXph
dGlvblJldHJ5Q291bnRlcjsKLQorICAgICAgICAKICAgICAgICAgc3RydWN0IFJhcmVEYXRhIHsK
ICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHB1YmxpYzoKQEAg
LTEyNDAsNiArMTI4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAg
ICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNo
YWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFs
IENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBp
bGVXaXRoREZHSW50ZXJuYWwoKTsKICNlbmRpZgpAQCAtMTI3NCw2ICsxMzIxLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21w
aWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwo
SlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgp
OwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkdJbnRlcm5hbCgpOwogI2Vu
ZGlmCkBAIC0xMzExLDYgKzEzNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6
CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwg
U2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAgICAg
dmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBj
YW5Db21waWxlV2l0aERGR0ludGVybmFsKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEwNjU5
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMjAgKzI3LDQ5IEBACiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1
cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnBy
ZXRlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVz
Ojpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0
ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2Zp
bGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyAgICBVTlVTRURf
UEFSQU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1
Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJ
bmRleDsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3Bf
bWV0aG9kX2NoZWNrKQorICAgICAgICBpbnN0cnVjdGlvbisrOworCisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0
cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3Ry
dWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisgICAgCisgICAgc2l6ZV90IG9mZnNldCA9
IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAg
ICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhO
b0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAg
ICByZXR1cm4gR2V0QnlJZFN0YXR1cyhTaW1wbGVEaXJlY3QsIFN0cnVjdHVyZVNldChzdHJ1Y3R1
cmUpLCBvZmZzZXQsIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9J
bmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisjZW5kaWYKK30K
KwogR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRl
Y29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYm
IEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9m
U3RydWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHBy
b2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICAvLyBGaXJzdCBj
aGVjayBpZiBpdCBtYWtlcyBlaXRoZXIgY2FsbHMsIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBi
ZSBzdXBlciBjYXJlZnVsLCBvcgogICAgIC8vIGlmIGl0J3Mgbm90IHNldCBhdCBhbGwsIGluIHdo
aWNoIGNhc2Ugd2UgcHVudC4KICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9m
aWxlZEJsb2NrLT5nZXRTdHViSW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZv
LnNlZW4pCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVj
dHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHBy
b2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAKICAgICBQb2x5bW9ycGhp
Y0FjY2Vzc1N0cnVjdHVyZUxpc3QqIGxpc3Q7CiAgICAgaW50IGxpc3RTaXplOwpAQCAtNjAsMTgg
Kzg5LDE5IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICB9
CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgIGlmICgh
bGlzdC0+bGlzdFtpXS5pc0RpcmVjdCkKLSAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVz
KE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgICAgICByZXR1
cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIHRy
dWUpOwogICAgIH0KICAgICAKICAgICAvLyBOZXh0IGNoZWNrIGlmIGl0IHRha2VzIHNsb3cgY2Fz
ZSwgaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIGtpbmQgb2YgY2FyZWZ1bC4KICAgICBpZiAo
cHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCi0gICAg
ICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBu
b3RGb3VuZCk7CisgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0
cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7CiAgICAgCiAgICAgLy8gRmluYWxseSBmaWd1
cmUgb3V0IGlmIHdlIGNhbiBkZXJpdmUgYW4gYWNjZXNzIHN0cmF0ZWd5LgogICAgIEdldEJ5SWRT
dGF0dXMgcmVzdWx0OworICAgIHJlc3VsdC5tX3dhc1NlZW5JbkpJVCA9IHRydWU7CiAgICAgc3dp
dGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAg
ICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBu
b3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ss
IGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5
X2lkX3NlbGY6IHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5mby51Lmdl
dEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CkBAIC0xMzAsNyArMTYwLDcgQEAg
R2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIAogICAgIHJldHVy
biByZXN1bHQ7CiAjZWxzZSAvLyBFTkFCTEUoSklUKQotICAgIHJldHVybiBHZXRCeUlkU3RhdHVz
KE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgcmV0dXJuIEdl
dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxz
ZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMDY1OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OSwxMCArNDksMTEgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAg
R2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVT
ZXQsIHNpemVfdCBvZmZzZXQpCisgICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3Qg
U3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQsIGJvb2wgd2FzU2Vlbklu
SklUKQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVTZXQo
c3RydWN0dXJlU2V0KQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBtX3dh
c1NlZW5JbkpJVCh3YXNTZWVuSW5KSVQpCiAgICAgewogICAgICAgICBBU1NFUlQoKHN0YXRlID09
IFNpbXBsZURpcmVjdCkgPT0gKG9mZnNldCAhPSBub3RGb3VuZCkpOwogICAgIH0KQEAgLTcwLDEw
ICs3MSwxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQo
KSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsgfQogICAgIHNpemVfdCBvZmZzZXQoKSBj
b25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAorICAgIGJvb2wgd2FzU2VlbkluSklUKCkg
Y29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KKyAgICAKIHByaXZhdGU6CisgICAgc3Rh
dGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBi
eXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAg
ICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CiAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAg
IGJvb2wgbV93YXNTZWVuSW5KSVQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAx
MDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFz
cyBKU0NlbGw7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWlu
OworICAgIHN0cnVjdCBMTEludENhbGxMaW5rSW5mbzsKICAgICBzdHJ1Y3QgVmFsdWVQcm9maWxl
OwogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE0Niw2ICsxNDcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAjZW5kaWYKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlvbiB7CisgICAgICAgIEluc3RydWN0aW9u
KCkKKyAgICAgICAgeworICAgICAgICAgICAgdS5qc0NlbGwuY2xlYXIoKTsKKyAgICAgICAgfQor
ICAgICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewog
I2lmICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKQEAgLTE4Miw2ICsxODgsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYyBnZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7IH0KICAg
ICAgICAgCisgICAgICAgIEluc3RydWN0aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0lu
Zm8pIHsgdS5jYWxsTGlua0luZm8gPSBjYWxsTGlua0luZm87IH0KKyAgICAgICAgCiAgICAgICAg
IEluc3RydWN0aW9uKFZhbHVlUHJvZmlsZSogcHJvZmlsZSkgeyB1LnByb2ZpbGUgPSBwcm9maWxl
OyB9CiAKICAgICAgICAgdW5pb24gewpAQCAtMTkxLDcgKzE5OSw5IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3RydWN0dXJl
Q2hhaW47CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxsOwogICAg
ICAgICAgICAgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKKyAgICAgICAg
ICAgIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm87CiAgICAgICAgICAgICBWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGU7CisgICAgICAgICAgICB2b2lkKiBwb2ludGVyOwogICAgICAgICB9IHU7
CiAgICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgTExJbnRDYWxsTGlua0luZm9faAorI2RlZmluZSBMTEludENhbGxM
aW5rSW5mb19oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOworCitzdHJ1Y3QgTExJbnRDYWxs
TGlua0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+
IHsKKyAgICBMTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgIH0KKyAgICAKKyAgICB+TExJ
bnRDYWxsTGlua0luZm8oKQorICAgIHsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAg
ICAgICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJu
IGNhbGxlZTsgfQorICAgIAorICAgIHZvaWQgdW5saW5rKCkKKyAgICB7CisgICAgICAgIGNhbGxl
ZS5jbGVhcigpOworICAgICAgICBtYWNoaW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cigpOworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOwor
ICAgIH0KKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOworICAgIFdy
aXRlQmFycmllcjxKU0Z1bmN0aW9uPiBsYXN0U2VlbkNhbGxlZTsKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgbWFjaGluZUNvZGVUYXJnZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIExMSW50Q2FsbExpbmtJbmZvX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZp
c2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2Fs
bExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwxMSBAQCBNZXRob2RD
YWxsTGlua1N0YXR1cyBNZXRob2RDYWxsTGlua1N0YXR1CiAgICAgVU5VU0VEX1BBUkFNKHByb2Zp
bGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUo
SklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgLy8gTk9URTogVGhpcyBkb2VzIG5v
dCBoYXZlIGFuIExMSW50IGZhbGwtYmFjayBiZWNhdXNlIExMSW50IGRvZXMgbm90IGRvIGFueSBt
ZXRob2QKKyAgICAvLyBjYWxsIGxpbmsgY2FjaGluZy4KKyAgICBpZiAoIXByb2ZpbGVkQmxvY2st
Pm51bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZvcygpKQorICAgICAgICByZXR1cm4gTWV0aG9kQ2Fs
bExpbmtTdGF0dXMoKTsKKyAgICAKICAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGwg
PSBwcm9maWxlZEJsb2NrLT5nZXRNZXRob2RDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCk7CiAg
ICAgCiAgICAgaWYgKCFtZXRob2RDYWxsLnNlZW4gfHwgIW1ldGhvZENhbGwuY2FjaGVkU3RydWN0
dXJlKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNp
b24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IG1hY3JvKG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1
dF9ieV9pZCwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkg
XAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAg
ICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCiAgICAgICAg
IG1hY3JvKG9wX3B1dF9ieV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9i
eV9pZF9nZW5lcmljLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApAQCAt
MjAxLDYgKzIwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIGVudW0geyBG
T1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0lEX0VOVU0pIH0gT3Bjb2RlSUQ7CiAgICAgI3VuZGVm
IE9QQ09ERV9JRF9FTlVNCiAKKyAgICBjb25zdCBpbnQgbWF4T3Bjb2RlTGVuZ3RoID0gOTsKICAg
ICBjb25zdCBpbnQgbnVtT3Bjb2RlSURzID0gb3BfZW5kICsgMTsKIAogICAgICNkZWZpbmUgT1BD
T0RFX0lEX0xFTkdUSFMoaWQsIGxlbmd0aCkgY29uc3QgaW50IGlkIyNfbGVuZ3RoID0gbGVuZ3Ro
OwpAQCAtMjE3LDcgKzIyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGT1JfRUFDSF9P
UENPREVfSUQoVkVSSUZZX09QQ09ERV9JRCk7CiAgICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQK
IAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAjaWYgQ09NUElMRVIoUlZD
VCkgfHwgQ09NUElMRVIoSU5URUwpCiAgICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVz
LmNwcAkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyNyArMjcsNjkgQEAKICNp
bmNsdWRlICJQdXRCeUlkU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNs
dWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5j
bHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK1B1dEJ5SWRTdGF0
dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxv
Y2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQoreworICAgIFVO
VVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRl
eCk7CisgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVn
aW4oKSArIGJ5dGVjb2RlSW5kZXg7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3Ry
dWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOworICAgIGlmICghc3RydWN0dXJlKQorICAgICAg
ICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7
CisgICAgCisgICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9i
eV9pZCkgeworICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVk
QmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgICAgICBpZiAob2Zmc2V0ID09IG5vdEZv
dW5kKQorICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwg
MCwgMCwgbm90Rm91bmQpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMo
U2ltcGxlUmVwbGFjZSwgc3RydWN0dXJlLCAwLCAwLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAg
ICBBU1NFUlQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3Ry
YW5zaXRpb25fZGlyZWN0CisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09
IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgCisgICAgU3RydWN0
dXJlKiBuZXdTdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAg
ICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBpbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWlu
LmdldCgpOworICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUpOworICAgIEFTU0VSVChjaGFpbik7Cisg
ICAgCisgICAgc2l6ZV90IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2Nr
LT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAg
ICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3Vu
ZCk7CisgICAgCisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3Ry
dWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNoYWluLCBvZmZzZXQpOworI2Vsc2UKKyAgICByZXR1cm4g
UHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisjZW5kaWYK
K30KKwogUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayog
cHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShi
eXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQp
ICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJl
ck9mU3RydWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50
KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICBpZiAocHJv
ZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCiAgICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsK
ICAgICAKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5n
ZXRTdHViSW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAg
ICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5k
KTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNv
ZGVJbmRleCwgaWRlbnQpOwogICAgIAogICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkg
ewogICAgIGNhc2UgYWNjZXNzX3Vuc2V0OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhO
b0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRl
RnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAg
CiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6IHsKICAgICAgICAgc2l6ZV90IG9m
ZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0
KApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5oCShyZXZpc2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoK
ICAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKIHBy
aXZhdGU6CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxv
Y2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3Rh
dGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOwogICAgIFN0cnVjdHVy
ZSogbV9uZXdTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTA2NTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJCYXRjaGVk
VHJhbnNpdGlvbk9wdGltaXplci5oIgogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNs
dWRlICJTY29wZUNoYWluLmgiCiAjaW5jbHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUg
IlVTdHJpbmcuaCIKQEAgLTEyOTMsOSArMTI5NCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjplbWl0UmVzb2wKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBtX2NvZGVCbG9jay0+
YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lm
IEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29s
dmVJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgICAgIGJv
b2wgZHluYW1pYyA9IHJlc29sdmVSZXN1bHQuaXNEeW5hbWljKCkgJiYgcmVzb2x2ZVJlc3VsdC5k
ZXB0aCgpOwogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNv
ZGUoZHluYW1pYyA/IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2Jh
bCk7CiAgICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwpAQCAtMTM5
OSw5ICsxMzk4LDYgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAog
ICAgICAgICByZXR1cm4gYmFzZURzdDsKICAgICB9CiAKLQotCi0KICAgICBWYWx1ZVByb2ZpbGUq
IHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfcmVzb2x2ZV93aXRoX2Jhc2UpOwogICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlRHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQocHJvcERzdC0+aW5kZXgoKSk7CkBAIC0xNTA5LDkgKzE1MDUsNyBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0TWV0aG9kQ2hlY2soCiAKIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJh
c2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5KQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRF
UikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVj
dGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBl
bWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBl
bmQoZHN0LT5pbmRleCgpKTsKQEAgLTE1MzcsOSArMTUzMSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0R2V0QXIKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5
LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9j
b2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE1NTUsOSArMTU0Nyw3IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnkKIAogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUo
SU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rp
b24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIAogICAgIGVtaXRPcGNvZGUo
b3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7
CkBAIC0xODM4LDcgKzE4MjgsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRDYWxsKAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVu
YwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChj
YWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVO
QUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExM
SW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7
CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBp
Z25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFBy
b2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0xOTQyLDcgKzE5MzYsMTEgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdAogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdD
b3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zm
c2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vs
c2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0
X3Jlc3VsdCk7CkBAIC0yMjAzLDcgKzIyMDEsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRDYXRjaAogewogICAgIG1fdXNlc0V4Y2VwdGlvbnMgPSB0cnVlOwogI2lmIEVO
QUJMRShKSVQpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0
YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwg
bV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVs
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX2NhdGNoKSkpIH07CisjZWxzZQogICAgIEhhbmRsZXJJ
bmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0
aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENv
ZGVMb2NhdGlvbkxhYmVsKCkgfTsKKyNlbmRpZgogI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZv
ID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5z
aXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoIH07CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCShyZXZpc2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA2LDkgKzYwNiw3IEBAIHByaXZh
dGU6CiAgICAgewogICAgICAgICBVTlVTRURfUEFSQU0obm9kZUluZGV4KTsKICAgICAgICAgCi0g
ICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7Ci0g
ICAgICAgIEFTU0VSVChwcm9maWxlKTsKLSAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9u
ID0gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgICAgIFByZWRpY3Rl
ZFR5cGUgcHJlZGljdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFs
dWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogI2lm
IERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICAgICAgcHJpbnRmKCJEeW5hbWljIFtAJXUs
IGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4LCBieXRlY29kZUluZGV4LCBwcmVk
aWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikpOwogI2VuZGlmCkBAIC0xMDQzLDYgKzEwNDEsOSBA
QCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhib29sCiAgICAgCiAgICAgLy8g
SWYgd2UgZ2V0IGhlcmUgdGhlbiBpdCBsb29rcyBsaWtlIHdlIHNob3VsZCBkZWZpbml0ZWx5IGlu
bGluZSB0aGlzIGNvZGUuIFByb2NlZWQKICAgICAvLyB3aXRoIHBhcnNpbmcgdGhlIGNvZGUgdG8g
Z2V0IGJ5dGVjb2RlLCBzbyB0aGF0IHdlIGNhbiB0aGVuIHBhcnNlIHRoZSBieXRlY29kZS4KKyAg
ICAvLyBOb3RlIHRoYXQgaWYgTExJbnQgaXMgZW5hYmxlZCwgdGhlIGJ5dGVjb2RlIHdpbGwgYWx3
YXlzIGJlIGF2YWlsYWJsZS4gQWxzbyBub3RlCisgICAgLy8gdGhhdCBpZiBMTEludCBpcyBlbmFi
bGVkLCB3ZSBtYXkgaW5saW5lIGEgY29kZSBibG9jayB0aGF0IGhhcyBuZXZlciBiZWVuIEpJVHRl
ZAorICAgIC8vIGJlZm9yZSEKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fY29kZUJsb2Nr
Q2FjaGUuZ2V0KENvZGVCbG9ja0tleShleGVjdXRhYmxlLCBraW5kKSwgZXhwZWN0ZWRGdW5jdGlv
bi0+c2NvcGUoKSk7CiAgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTE3NDMsNyArMTc0NCw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5z
aWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ss
IG1fY3VycmVudEluZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG1ldGhvZENh
bGxTdGF0dXMuaXNTZXQoKQotICAgICAgICAgICAgICAgICYmICFnZXRCeUlkU3RhdHVzLmlzU2V0
KCkKKyAgICAgICAgICAgICAgICAmJiAhZ2V0QnlJZFN0YXR1cy53YXNTZWVuSW5KSVQoKQogICAg
ICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRT
aXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpIHsKICAgICAgICAgICAgICAgICAvLyBJdCdz
IG1vbm9tb3JwaGljIGFzIGZhciBhcyB3ZSBjYW4gdGVsbCwgc2luY2UgdGhlIG1ldGhvZF9jaGVj
ayB3YXMgbGlua2VkCiAgICAgICAgICAgICAgICAgLy8gYnV0IHRoZSBzbG93IHBhdGggKGkuZS4g
dGhlIG5vcm1hbCBnZXRfYnlfaWQpIG5ldmVyIGZpcmVkLgpAQCAtMTgxMiw3ICsxODEzLDkgQEAg
Ym9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAgICAgICBO
RVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkOiB7CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJy
ZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNl
ID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5z
aWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJl
bWFwW2N1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMDY1OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTEsNiArMTExLDggQEAgaW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJ
RCBvcAogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6
CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAg
Y2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAg
IGNhc2Ugb3Bfam1wOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2
ICs0OCwyMSBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICB1aW50
MzJfdCBleGl0SW5kZXggPSBnbG9iYWxEYXRhLT5vc3JFeGl0SW5kZXg7CiAgICAgT1NSRXhpdCYg
ZXhpdCA9IGNvZGVCbG9jay0+b3NyRXhpdChleGl0SW5kZXgpOwogICAgIAorICAgIC8vIE1ha2Ug
c3VyZSBhbGwgY29kZSBvbiBvdXIgaW5saW5lIHN0YWNrIGlzIEpJVCBjb21waWxlZC4gVGhpcyBp
cyBuZWNlc3Nhcnkgc2luY2UKKyAgICAvLyB3ZSBtYXkgb3B0IHRvIGlubGluZSBhIGNvZGUgYmxv
Y2sgZXZlbiBiZWZvcmUgaXQgaGFkIGV2ZXIgYmVlbiBjb21waWxlZCBieSB0aGUKKyAgICAvLyBK
SVQsIGJ1dCBvdXIgT1NSIGV4aXQgaW5mcmFzdHJ1Y3R1cmUgY3VycmVudGx5IG9ubHkgd29ya3Mg
aWYgdGhlIHRhcmdldCBvZiB0aGUKKyAgICAvLyBPU1IgZXhpdCBpcyBKSVQgY29kZS4gVGhpcyBj
b3VsZCBiZSBjaGFuZ2VkIHNpbmNlIHRoZXJlIGlzIG5vdGhpbmcgcGFydGljdWxhcmx5CisgICAg
Ly8gaGFyZCBhYm91dCBkb2luZyBhbiBPU1IgZXhpdCBpbnRvIHRoZSBpbnRlcnByZXRlciwgYnV0
IGZvciBub3cgdGhpcyBzZWVtcyB0byBtYWtlCisgICAgLy8gc2Vuc2UgaW4gdGhhdCBpZiB3ZSdy
ZSBPU1IgZXhpdGluZyBmcm9tIGlubGluZWQgY29kZSBvZiBhIERGRyBjb2RlIGJsb2NrLCB0aGVu
CisgICAgLy8gcHJvYmFibHkgaXQncyBhIGdvb2Qgc2lnbiB0aGF0IHRoZSB0aGluZyB3ZSdyZSBl
eGl0aW5nIGludG8gaXMgaG90LiBFdmVuIG1vcmUKKyAgICAvLyBpbnRlcmVzdGluZ2x5LCBzaW5j
ZSB0aGUgY29kZSB3YXMgaW5saW5lZCwgaXQgbWF5IG5ldmVyIG90aGVyd2lzZSBnZXQgSklUCisg
ICAgLy8gY29tcGlsZWQgc2luY2UgdGhlIGFjdCBvZiBpbmxpbmluZyBpdCBtYXkgZW5zdXJlIHRo
YXQgaXQgb3RoZXJ3aXNlIG5ldmVyIHJ1bnMuCisgICAgZm9yIChDb2RlT3JpZ2luIGNvZGVPcmln
aW4gPSBleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGNvZGVP
cmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVyKSB7CisgICAgICAgIHN0
YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
LT5leGVjdXRhYmxlLmdldCgpKQorICAgICAgICAgICAgLT5iYXNlbGluZUNvZGVCbG9ja0Zvcihj
b2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+aXNDYWxsID8gQ29kZUZvckNhbGwgOiBDb2RlRm9y
Q29uc3RydWN0KQorICAgICAgICAgICAgLT5qaXRDb21waWxlKCpnbG9iYWxEYXRhKTsKKyAgICB9
CisgICAgCiAgICAgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkgPSAwOwogICAgIGlmIChl
eGl0Lm1fcmVjb3ZlcnlJbmRleCkKICAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5zcGVj
dWxhdGlvblJlY292ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4IC0gMSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEwNjU5MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRl
ICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiREZHUmVwYXRjaC5oIgorI2luY2x1ZGUgIkhvc3RD
YWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJ
bmxpbmVBU00uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNjczLDUwICs2NzQsNiBA
QCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyCiAgICAgcmV0dXJuIEpT
VmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNW
YWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJB
VElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFU
SU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOwotCi0j
aWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAi
XG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAg
Im1vdiAtNDAoJXIxMyksICVyMTNcbiIKLSAgICAibW92ICVyMTMsICVyZGlcbiIKLSAgICAiam1w
ICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhl
Y1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKFg4NikKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9M
X1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0
Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGks
IDQoJWVzcClcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVN
QjIpCi1hc20gKAotIi50ZXh0IiAiXG4iCi0iLmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1C
T0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLSIudGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRI
VU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklO
RyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00
MF0iICJcbiIKLSAgICAiY3B5IHIwLCByNSIgIlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19S
RUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwot
I2VuZGlmCi0KLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJh
Y2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKLSAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKLX0KLQogc3Rh
dGljIHZvaWQqIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBj
YWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBFeGVjU3RhdGUqIGV4
ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcC5jcHAJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MzcsNyArODM3LDcgQEAgdm9pZCBIZWFw
Ojpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3ZWVwVG9nZwogICAgICAgICBzZXRIaWdoV2F0ZXJNYXJr
KG1heChwcm9wb3J0aW9uYWxCeXRlcywgbV9taW5CeXRlc1BlckN5Y2xlKSk7CiAgICAgfQogICAg
IEpBVkFTQ1JJUFRDT1JFX0dDX0VORCgpOwotCisgICAgCiAgICAgKCptX2FjdGl2aXR5Q2FsbGJh
Y2spKCk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDEw
NjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5
KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERh
dGE7CiAgICAgY2xhc3MgSlNWYWx1ZTsKICAgICBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7Cisg
ICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE1hcmtlZEFyZ3VtZW50
QnVmZmVyOwogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZTsKICAgICBjbGFzcyBVU3RyaW5nOwpAQCAt
MTM1LDExICsxMzYsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZ2V0Q29uc2Vy
dmF0aXZlUmVnaXN0ZXJSb290cyhIYXNoU2V0PEpTQ2VsbCo+JiByb290cyk7CiAKICAgICBwcml2
YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOworICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkU3Bh
Y2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNs
YXNzIEJ1bXBTcGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwotICAgICAg
ICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwogCiAgICAgICAgIHNpemVfdCB3YXRlck1hcmsoKTsK
ICAgICAgICAgc2l6ZV90IGhpZ2hXYXRlck1hcmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya1N0YWNrLmNwcAkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA0LDcgKzMw
NCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbigKICNlbmRpZgog
CiAgICAgQVNTRVJUKEhlYXA6OmlzTWFya2VkKGNlbGwpKTsKLQorICAgIAogICAgIGlmIChpc0pT
U3RyaW5nKGNlbGwpKSB7CiAgICAgICAgIEpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKGNvbnN0X2Nh
c3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDEwNjU5MCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTQwLDYgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBIZWFwOwogY2xhc3MgSlND
ZWxsOwogY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogY2xhc3MgV2Vha0dDSGFuZGxlOwogY2xhc3MgU2xvdFZpc2l0b3I7CiAKQEAgLTg3LDYg
Kzg4LDggQEAgcHVibGljOgogICAgIHZvaWQgZnJlZUJsb2NrcyhNYXJrZWRCbG9jayogaGVhZCk7
CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAg
ICAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKFNpemVDbGFz
cyYpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlSGVscGVyKE1hcmtlZFNwYWNlOjpTaXplQ2xhc3Mm
KTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZShNYXJrZWRTcGFjZTo6U2l6ZUNsYXNzJik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZp
c2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsOSBAQCBuYW1lc3BhY2UgSlNDICB7
CiAjaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBJbnN0cnVjdGlvbiogcmV0dXJuVlBD
KCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKTsgfQog
I2VuZGlmCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBJbnN0cnVjdGlvbiogY3VycmVudFZQ
QygpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KHRoaXNbUmVnaXN0
ZXJGaWxlOjpBcmd1bWVudENvdW50XS50YWcoKSk7IH0KKyNlbmRpZgogCiAgICAgICAgIHZvaWQg
c2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSkgeyBzdGF0aWNfY2FzdDxSZWdp
c3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWVdID0gY2FsbGVyRnJhbWU7IH0K
ICAgICAgICAgdm9pZCBzZXRTY29wZUNoYWluKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKSB7
IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluXSA9
IHNjb3BlQ2hhaW47IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjksNyArNjksNyBAQAogI2luY2x1ZGUgIkpJVC5oIgogI2VuZGlmCiAKLSNkZWZpbmUgV1RGX1VT
RV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EIChFTkFCTEUoQ09NUFVURURfR09UT19JTlRF
UlBSRVRFUikgJiYgIWRlZmluZWQoX19sbHZtX18pKQorI2RlZmluZSBXVEZfVVNFX0dDQ19DT01Q
VVRFRF9HT1RPX1dPUktBUk9VTkQgKChFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikg
fHwgRU5BQkxFKExMSU5UKSkgJiYgIWRlZmluZWQoX19sbHZtX18pKQogCiB1c2luZyBuYW1lc3Bh
Y2Ugc3RkOwogCkBAIC01NDcsMTcgKzU0Nyw0MyBAQCBJbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIo
KQogewogfQogCi12b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKQor
SW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcigpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9f
SU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2VuYWJsZWQpCisgICAg
ICAgIGRlbGV0ZVtdIG1fb3Bjb2RlVGFibGU7CisjZW5kaWYKK30KKwordm9pZCBJbnRlcnByZXRl
cjo6aW5pdGlhbGl6ZShMTEludDo6RGF0YSogbGxpbnREYXRhLCBib29sIGNhblVzZUpJVCkKK3sK
KyAgICBVTlVTRURfUEFSQU0obGxpbnREYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oY2FuVXNlSklU
KTsKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5U
KQorI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyAgICAvLyBIYXZpbmcg
TExJbnQgZW5hYmxlZCwgYnV0IG5vdCBiZWluZyBhYmxlIHRvIHVzZSB0aGUgSklULCBhbmQgbm90
IGhhdmluZworICAgIC8vIGEgY29tcHV0ZWQgZ290byBpbnRlcnByZXRlciwgaXMgbm90IHN1cHBv
cnRlZC4gTm90IGJlY2F1c2Ugd2UgY2Fubm90CisgICAgLy8gc3VwcG9ydCBpdCwgYnV0IGJlY2F1
c2UgSSBkZWNpZGVkIHRvIGRyYXcgdGhlIGxpbmUgYXQgdGhlIG51bWJlciBvZgorICAgIC8vIHBl
cm11dGF0aW9ucyBvZiBleGVjdXRpb24gZW5naW5lcyB0aGF0IEkgd2FudGVkIHRoaXMgY29kZSB0
byBncm9rLgorICAgIEFTU0VSVChjYW5Vc2VKSVQpOworI2VuZGlmCiAgICAgaWYgKGNhblVzZUpJ
VCkgeworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJsZSA9IGxsaW50RGF0
YS0+b3Bjb2RlTWFwKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURz
OyArK2kpCisgICAgICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1fb3Bjb2RlVGFibGVbaV0s
IHN0YXRpY19jYXN0PE9wY29kZUlEPihpKSk7CisjZWxzZQogICAgICAgICAvLyBJZiB0aGUgSklU
IGlzIHByZXNlbnQsIGRvbid0IHVzZSBqdW1wIGRlc3RpbmF0aW9ucyBmb3Igb3Bjb2Rlcy4KICAg
ICAgICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpIHsK
ICAgICAgICAgICAgIE9wY29kZSBvcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19j
YXN0PHVpbnRwdHJfdD4oaSkpOwogICAgICAgICAgICAgbV9vcGNvZGVUYWJsZVtpXSA9IG9wY29k
ZTsKICAgICAgICAgfQorI2VuZGlmCiAgICAgfSBlbHNlIHsKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgICAgIG1fb3Bjb2RlVGFibGUgPSBuZXcgT3Bjb2RlW251bU9wY29kZUlEc107CisjZW5kaWYK
ICAgICAgICAgcHJpdmF0ZUV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVybiwgMCwgMCk7CiAgICAg
ICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQpAQCAt
NTY2LDcgKzU5Miw2IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBjYW5Vc2UK
ICAgICAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICAgICB9CiAjZWxzZQotICAgIFVOVVNFRF9QQVJB
TShjYW5Vc2VKSVQpOwogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2VuYWJsZWQgPSB0
cnVlOwogI2Vsc2UKQEAgLTY2Nyw5ICs2OTIsMTEgQEAgdm9pZCBJbnRlcnByZXRlcjo6ZHVtcFJl
Z2lzdGVycyhDYWxsRnJhbQogCiBib29sIEludGVycHJldGVyOjppc09wY29kZShPcGNvZGUgb3Bj
b2RlKQogewotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJM
RShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJM
RShMTElOVCkKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG9wY29kZSA+PSAw
ICYmIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUp
KSA8PSBvcF9lbmQ7CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2RlICE9IEhhc2hUcmFpdHM8T3Bj
b2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJhaXRzPE9wY29kZT46OmlzRGVs
ZXRlZFZhbHVlKG9wY29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJRFRhYmxlLmNvbnRhaW5zKG9w
Y29kZSk7CkBAIC03MjYsMTEgKzc1MywxMSBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRl
cjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAxLgogI2lmIEVOQUJMRShKSVQp
ICYmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBpZiAoY2FsbGVyRnJhbWUtPmdsb2JhbERhdGEo
KS5jYW5Vc2VKSVQoKSkKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0
ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1
cm5QQygpKTsKICAgICBlbHNlCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5i
eXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZWxpZiBFTkFCTEUo
SklUKQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxs
RnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRl
Y29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbHNlCiAg
ICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+
cmV0dXJuVlBDKCkpIC0gMTsKICNlbmRpZgpAQCAtMzMyNSw2ICszMzUyLDggQEAgc2tpcF9pZF9j
dXN0b21fc2VsZjoKICNpZiBVU0UoR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCkKICAgICAg
IHNraXBfcHV0X2J5X2lkOgogI2VuZGlmCisgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3QpCisgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWwpCiAgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbikg
ewogICAgICAgICAvKiBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiBiYXNlKHIpIHByb3BlcnR5KGlk
KSB2YWx1ZShyKSBvbGRTdHJ1Y3R1cmUoc0lEKSBuZXdTdHJ1Y3R1cmUoc0lEKSBzdHJ1Y3R1cmVD
aGFpbihjaGFpbikgb2Zmc2V0KG4pIGRpcmVjdChiKQogICAgICAgICAgCkBAIC01MTU3LDEwICs1
MTg2LDEwIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcihDYWwKICAgICAg
ICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxG
cmFtZS0+cmV0dXJuVlBDKCkpOwogI2lmIEVOQUJMRShKSVQpCiAgICAgZWxzZQotICAgICAgICBi
eXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1l
LT5yZXR1cm5QQygpKTsKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2Vu
ZGlmCiAjZWxzZQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29k
ZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2Fs
bGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1
cm5QQygpKTsKICNlbmRpZgogICAgIGxpbmVOdW1iZXIgPSBjYWxsZXJDb2RlQmxvY2stPmxpbmVO
dW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCAtIDEpOwogICAgIHNvdXJjZUlE
ID0gY2FsbGVyQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShy
ZXZpc2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50
ZXJwcmV0ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpT
Q2VsbC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2lu
Y2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlJlZ2lz
dGVyRmlsZS5oIgogCkBAIC00NSw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpT
R2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFz
cyBQcm9ncmFtRXhlY3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTY29w
ZUNoYWluTm9kZTsKQEAgLTEwMCwxOSArMTAyLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
Y2xhc3MgSW50ZXJwcmV0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAg
ICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVibGljOgogICAgICAgICBJbnRlcnByZXRlcigpOworICAg
ICAgICB+SW50ZXJwcmV0ZXIoKTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgaW5pdGlhbGl6ZShi
b29sIGNhblVzZUpJVCk7CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZShMTEludDo6RGF0YSosIGJv
b2wgY2FuVXNlSklUKTsKIAogICAgICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSgpIHsg
cmV0dXJuIG1fcmVnaXN0ZXJGaWxlOyB9CiAgICAgICAgIAogICAgICAgICBPcGNvZGUgZ2V0T3Bj
b2RlKE9wY29kZUlEIGlkKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0aWFs
aXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxF
KENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgICAg
IHJldHVybiBtX29wY29kZVRhYmxlW2lkXTsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4gaWQ7
CkBAIC0xMjIsNyArMTI2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPcGNvZGVJRCBn
ZXRPcGNvZGVJRChPcGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
bV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisj
aWYgRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOwor
ICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKKyNlbGlmIEVO
QUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgQVNTRVJUKGlzT3Bj
b2RlKG9wY29kZSkpOwogICAgICAgICAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90Pihv
cGNvZGUpKTsKQEAgLTEzMiw2ICsxMzksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJv
b2wgZW5hYmxlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2VuYWJsZWQ7Cisg
ICAgICAgIH0KIAogICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKQEAgLTE5OSw3ICsy
MTEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlIG1fcmVnaXN0
ZXJGaWxlOwogICAgICAgICAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIE9wY29kZSogbV9vcGNvZGVUYWJsZTsgLy8gTWFw
cyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZworICAgICAgICBIYXNoTWFwPE9wY29k
ZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQg
Zm9yIGRlY29tcGlsaW5nCisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikK
ICAgICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2RlSURzXTsgLy8gTWFwcyBPcGNv
ZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bj
b2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRl
Y29tcGlsaW5nCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9SZWdpc3RlckZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnNlcnZhdGl2ZVJv
b3RzOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogCiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlIHsKICAgICAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUmVnaXN0ZXJGaWxlKTsKQEAgLTgxLDYgKzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGdyb3dTbG93Q2FzZShSZWdp
c3RlciopOwogICAgICAgICB2b2lkIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwogICAgICAgICB2
b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSG9zdENhbGxS
ZXR1cm5WYWx1ZS5oIgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSW5saW5l
QVNNLmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1ZhbHVlSW5saW5lTWV0
aG9kcy5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyNp
ZiBDT01QSUxFUihHQ0MpCisKKyNpZiBDUFUoWDg2XzY0KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1C
T0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lNQk9MKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgorICAgICJtb3YgJXIx
MywgJXJkaVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUoWDg2KQorYXNt
ICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIK
K0hJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkco
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglZWRpKSwgJWVk
aVxuIgorICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5H
X1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7
CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKK2FzbSAoCisiLnRleHQiICJcbiIKKyIuYWxpZ24gMiIg
IlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxu
IgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorIi50aHVtYiIgIlxu
IgorIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisg
ICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgorICAgICJjcHkgcjAsIHI1IiAiXG4iCisgICAg
ImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhF
eGVjU3RhdGUpICJcbiIKKyk7CisjZW5kaWYKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBI
T1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4
ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFleGVjKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Cit9CisKKyNlbmRpZiAv
LyBDT01QSUxFUihHQ0MpCisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisjZGVmaW5lIEhv
c3RDYWxsUmV0dXJuVmFsdWVfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIk1h
Y3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisvLyBV
bmZvcnR1bmF0ZWx5IHRoaXMgb25seSB3b3JrcyBvbiBHQ0MtbGlrZSBjb21waWxlcnMuIEFuZCBp
dCdzIGN1cnJlbnRseSBvbmx5IHVzZWQKKy8vIGJ5IExMSW50IGFuZCBERkcsIHdoaWNoIGFsc28g
YXJlIHJlc3RyaWN0ZWQgdG8gR0NDLWxpa2UgY29tcGlsZXJzLiBXZSBzaG91bGQKKy8vIHByb2Jh
Ymx5IGZpeCB0aGF0IGF0IHNvbWUgcG9pbnQuCisjaWYgQ09NUElMRVIoR0NDKQorCisjaWYgQ0FM
TElOR19DT05WRU5USU9OX0lTX1NURENBTEwKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxV
RV9PUFRJT04gQ0RFQ0wKKyNlbHNlCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BU
SU9OCisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFs
dWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgp
OworCisvLyBUaGlzIGlzIGEgcHVibGljIGRlY2xhcmF0aW9uIG9ubHkgdG8gY29udmluY2UgQ0xB
Tkcgbm90IHRvIGVsaWRlIGl0LgorZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExf
UkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShF
eGVjU3RhdGUqKTsKKworaW5saW5lIHZvaWQgaW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJuVmFsdWUo
KQoreworICAgIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKDApOworfQorCit9
CisKKyNlbHNlIC8vIENPTVBJTEVSKEdDQykKKworbmFtZXNwYWNlIEpTQyB7CitpbmxpbmUgdm9p
ZCBpbml0aWFsaXplSG9zdENhbGxSZXR1cm5WYWx1ZSgpIHsgfQorfQorCisjZW5kaWYgLy8gQ09N
UElMRVIoR0NDKQorCisjZW5kaWYgLy8gSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw4IEBA
IHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9w
X3Byb2ZpbGVfd2lsbF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9uZXdfc2NvcGUp
CiAgICAgICAgIERFRklORV9PUChvcF9wdXNoX3Njb3BlKQorICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERF
RklORV9PUChvcF9wdXRfYnlfaW5kZXgpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFs
KQpAQCAtNDg2LDYgKzQ4OCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAgICAgICAgREVGSU5F
X1NMT1dDQVNFX09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9w
cmVfaW5jKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklO
RV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChv
cF9wdXRfYnlfdmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcmVzb2x2ZV9nbG9i
YWwpCkBAIC01MjUsNiArNTI5LDEwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNl
cygpCiAKIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5jdGlvbkVudHJ5
QXJpdHlDaGVjaykKIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50Zigi
Q29tcGlsaW5nIEpJVCBjb2RlIVxuIik7CisjZW5kaWYKKyAgICAKICNpZiBFTkFCTEUoVkFMVUVf
UFJPRklMRVIpCiAgICAgbV9jYW5CZU9wdGltaXplZCA9IG1fY29kZUJsb2NrLT5jYW5Db21waWxl
V2l0aERGRygpOwogI2VuZGlmCkBAIC02ODksOCArNjk3LDEyIEBAIEpJVENvZGUgSklUOjpwcml2
YXRlQ29tcGlsZShDb2RlUHRyKiBmdW4KICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24g
PSBtX2NvZGVCbG9jay0+c3RydWN0dXJlU3R1YkluZm8obV9tZXRob2RDYWxsQ29tcGlsYXRpb25J
bmZvW2ldLnByb3BlcnR5QWNjZXNzSW5kZXgpLmNhbGxSZXR1cm5Mb2NhdGlvbjsKICAgICB9CiAK
LSNpZiBFTkFCTEUoREZHX0pJVCkKLSAgICBpZiAobV9jYW5CZU9wdGltaXplZCkgeworI2lmIEVO
QUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHx8IHRydWUKKyNlbmRpZgorICAgICAgICApIHsK
ICAgICAgICAgQ29tcGFjdEpJVENvZGVNYXA6OkVuY29kZXIgaml0Q29kZU1hcEVuY29kZXI7CiAg
ICAgICAgIGZvciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8
IG1fbGFiZWxzLnNpemUoKTsgKytieXRlY29kZU9mZnNldCkgewogICAgICAgICAgICAgaWYgKG1f
bGFiZWxzW2J5dGVjb2RlT2Zmc2V0XS5pc1NldCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRDb2RlLmgJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQ29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBKSVRDb2RlKCkgeyB9CiAjZW5kaWYKICAgICBwdWJsaWM6Ci0gICAgICAg
IGVudW0gSklUVHlwZSB7IEhvc3RDYWxsVGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsKKyAg
ICAgICAgZW51bSBKSVRUeXBlIHsgTm9uZSwgSG9zdENhbGxUaHVuaywgSW50ZXJwcmV0ZXJUaHVu
aywgQmFzZWxpbmVKSVQsIERGR0pJVCB9OwogICAgICAgICAKICAgICAgICAgc3RhdGljIEpJVFR5
cGUgYm90dG9tVGllckpJVCgpCiAgICAgICAgIHsKQEAgLTY2LDggKzY2LDE5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIERGR0pJVDsKICAgICAgICAgfQogICAgICAgICAK
KyAgICAgICAgc3RhdGljIGJvb2wgaXNPcHRpbWl6aW5nSklUKEpJVFR5cGUgaml0VHlwZSkKKyAg
ICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gREZHSklUOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBzdGF0aWMgYm9vbCBpc0Jhc2VsaW5lQ29kZShKSVRUeXBlIGpp
dFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IEludGVycHJl
dGVyVGh1bmsgfHwgaml0VHlwZSA9PSBCYXNlbGluZUpJVDsKKyAgICAgICAgfQorICAgICAgICAK
ICNpZiBFTkFCTEUoSklUKQogICAgICAgICBKSVRDb2RlKCkKKyAgICAgICAgICAgIDogbV9qaXRU
eXBlKE5vbmUpCiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03NSw2ICs4Niw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICAgICAgOiBtX3JlZihyZWYpCiAgICAgICAgICAgICAsIG1faml0
VHlwZShqaXRUeXBlKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaml0VHlwZSAhPSBO
b25lKTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciAhKCkgY29u
c3QKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkocmV2aXNpb24gMTA2
NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsMTUgKzMzLDIxIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIK
ICNpbmNsdWRlICJERkdEcml2ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJMTElu
dEVudHJ5cG9pbnRzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
b2RlQmxvY2tUeXBlPgogaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklU
Q29kZSYgaml0Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRU
eXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAg
IGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpE
RkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlKGdsb2JhbERhdGEs
IGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CkBAIC01NSwxMCArNjEsNyBAQCBpbmxpbmUgYm9v
bCBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShKU0dsCiAgICAgICAgIH0KICAgICAgICAgaml0Q29k
ZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpKTsKICAgICB9Ci0j
aWYgIUVOQUJMRShPUENPREVfU0FNUExJTkcpCi0gICAgaWYgKCFCeXRlY29kZUdlbmVyYXRvcjo6
ZHVtcHNHZW5lcmF0ZWRDb2RlKCkpCi0gICAgICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0ZWNvZGVE
aXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKLSNlbmRpZgorICAgIGNvZGVCbG9jay0+aGFuZGxlQnl0
ZWNvZGVEaXNjYXJkaW5nT3Bwb3J0dW5pdHkoKTsKICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUo
aml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOwogICAgIAogICAgIHJldHVybiB0cnVl
OwpAQCAtNjYsOSArNjksMTQgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUo
SlNHbAogCiBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKEpTR2xv
YmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29kZUJsb2Nr
LCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGppdENvZGVXaXRoQXJp
dHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6SklUVHlw
ZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgp
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNl
SklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5r
SW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAg
ICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0g
REZHOjp0cnlDb21waWxlRnVuY3Rpb24oZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRD
b2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwpAQCAtODMsMTEgKzkxLDcgQEAgaW5saW5lIGJv
b2wgaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaQogICAgICAgICB9CiAgICAgICAgIGppdENv
ZGUgPSBKSVQ6OmNvbXBpbGUoJmdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgJmppdENvZGVX
aXRoQXJpdHlDaGVjayk7CiAgICAgfQotI2lmICFFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKQotICAg
IGlmICghQnl0ZWNvZGVHZW5lcmF0b3I6OmR1bXBzR2VuZXJhdGVkQ29kZSgpKQotICAgICAgICBj
b2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5KCk7Ci0jZW5kaWYK
LSAgICAKKyAgICBjb2RlQmxvY2stPmhhbmRsZUJ5dGVjb2RlRGlzY2FyZGluZ09wcG9ydHVuaXR5
KCk7CiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlD
aGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0
LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3coSlNHbG9iYWxEYQogCiBF
eGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhlY1N0
YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIFJldHVybkFkZHJlc3NQdHIg
ZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGNh
bGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2Rl
T2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERh
dGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5
dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1bHRMb2NhdGlvbikpOwogfQogCiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTA2NTkwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0NDYsNiArMTQ0Niw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wX3B1dF9ieV9p
ZF8KICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5pc1N0
cmljdE1vZGUoKSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0ZyYW1lLmFyZ3NbMF0u
anNWYWx1ZSgpOwogICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7CisgICAgCiAgICAg
YXNPYmplY3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGNhbGxGcmFtZS0+Z2xvYmFsRGF0YSgpLCBp
ZGVudCwgc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwgc2xvdCk7CiAgICAgCiAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJsb2NrKCk7CkBA
IC0xOTMxLDcgKzE5MzIsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcHRpbWl6ZV9m
cm9tCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNrRnJhbWUuYXJnc1swXS5pbnQz
MigpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmludGYoIkVudGVyZWQg
b3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRp
b25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNv
ZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJl
dHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAg
ICBwcmludGYoIiVwOiBFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVDb3Vu
dGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRl
bGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50
ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2st
Pm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAgaWYgKGNvZGVCbG9j
ay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewpAQCAtMjE4Niw0NSArMjE4NywxMyBAQCBE
RUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotaW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJhbWUqIGNhbGxG
cmFtZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQg
a2luZCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+
Y2FsbGVlKCkpOwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICBD
b2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0
ZWRCeXRlY29kZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAgICAvLyBUaGlz
IGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJv
IGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+
Z3JvdyhjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJz
KCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0dXJu
IDA7Ci0KLSAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxv
Y2stPm51bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5
IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRz
IHdpdGggdW5kZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFy
YW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVnaXN0ZXIqIHNy
YyA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGNhbGxGcmFt
ZS0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGludCBlbmQgPSAtQ2Fs
bEZyYW1lOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZvciAo
aSA9IC0xOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07Ci0KLSAgICBl
bmQgLT0gZGVsdGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0g
PSBqc1VuZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJh
bWU6OmNyZWF0ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1lIDw9IHJlZ2lz
dGVyRmlsZS0+ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0KIERFRklORV9T
VFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklU
X1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBz
dGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJp
dHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2Fs
bCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5
Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwp
OwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25G
cm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJF
U1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsK
IApAQCAtMjIzNyw3ICsyMjA2LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2Nv
bnN0cnVjdAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFt
ZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJh
bWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBDYWxs
RnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxs
RnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBp
ZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2Fs
bDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDEw
NjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgSlNJbnRlcmZhY2VKSVRfaAog
I2RlZmluZSBKU0ludGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25z
LmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVk
ZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3Nl
bWJsZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2RlZmluZSBMTElOVF9F
WEVDVVRJT05fVFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFDSU5HIDAKKyNkZWZp
bmUgTExJTlRfQUxXQVlTX0FMTE9DQVRFX1NMT1cgMAorCisjZW5kaWYgLy8gTExJbnRDb21tb25f
aAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludERh
dGEuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisj
aW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wY29kZS5oIgorCitu
YW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworRGF0YTo6RGF0YSgpCisgICAgOiBt
X2V4Y2VwdGlvbkluc3RydWN0aW9ucyhuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsg
MV0pCisgICAgLCBtX29wY29kZU1hcChuZXcgT3Bjb2RlW251bU9wY29kZUlEc10pCit7CisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyArK2kpCisgICAgICAgIG1f
ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUpOworI2RlZmluZSBPUENPREVfRU5U
Ulkob3Bjb2RlLCBsZW5ndGgpIG1fb3Bjb2RlTWFwW29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF8jI29wY29kZSk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9FTlRS
WSk7CisjdW5kZWYgT1BDT0RFX0VOVFJZCit9CisKK0RhdGE6On5EYXRhKCkKK3sKKyAgICBkZWxl
dGVbXSBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBkZWxldGVbXSBtX29wY29kZU1hcDsK
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJ
TlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgTExJbnREYXRhX2gKKyNkZWZpbmUgTExJbnREYXRhX2gKKwor
I2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisj
aWYgRU5BQkxFKExMSU5UKQorY2xhc3MgRGF0YSB7CitwdWJsaWM6CisgICAgRGF0YSgpOworICAg
IH5EYXRhKCk7CisgICAgCisgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygp
CisgICAgeworICAgICAgICByZXR1cm4gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgfQor
ICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX29w
Y29kZU1hcDsKKyAgICB9Citwcml2YXRlOgorICAgIEluc3RydWN0aW9uKiBtX2V4Y2VwdGlvbklu
c3RydWN0aW9uczsKKyAgICBPcGNvZGUqIG1fb3Bjb2RlTWFwOworfTsKKyNlbHNlIC8vIEVOQUJM
RShMTElOVCkKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Npbmctbm9yZXR1
cm4iCisjZW5kaWYKKworY2xhc3MgRGF0YSB7CitwdWJsaWM6CisgICAgSW5zdHJ1Y3Rpb24qIGV4
Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFw
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9Cit9OworCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdu
b3N0aWMgcG9wCisjZW5kaWYKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworfSB9IC8vIG5h
bWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludERhdGFfaAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJM
TEludEVudHJ5cG9pbnRzLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJKSVRD
b2RlLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3Mu
aCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBu
YW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSklUQ29kZSYgaml0
Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0eUNoZWNrKQoreworICAgIGlmICghZ2xv
YmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkg
eworICAgICAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2Vt
YmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQ
dHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWUp
KSkpOworICAgICAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaykpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rp
b24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfcHJvbG9ndWUpKSkpOworICAgICAgICBhcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBpZiAo
a2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxE
YXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENv
ZGU6OkludGVycHJldGVyVGh1bmspOworICAgICAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5n
ZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgp
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNv
bnN0cnVjdCk7CisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1
bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJl
dGVyVGh1bmspOworICAgIGFyaXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKK30KKwordm9p
ZCBnZXRFdmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGpp
dENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGpp
dENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVh
dGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X2V2YWxfcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQor
ICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihldmFsRW50
cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQorCit2b2lk
IGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSYg
aml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAg
aml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNy
ZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkpKSk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKHBy
b2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cit9
CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5U
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50
cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50
cnlwb2ludHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RW50cnlwb2ludHNf
aAorI2RlZmluZSBMTEludEVudHJ5cG9pbnRzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXZhbENvZGVCbG9jazsKK2NsYXNzIEpJ
VENvZGU7CitjbGFzcyBKU0dsb2JhbERhdGE7CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVQdHI7
CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CitjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwor
CituYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0dsb2Jh
bERhdGEmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBKSVRDb2RlJiwgTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyJiBhcml0eUNoZWNrKTsKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRh
JiwgSklUQ29kZSYpOwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBK
SVRDb2RlJik7CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBFdmFsQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBnZXRFdmFs
RW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworaW5saW5lIHZvaWQgZ2V0RW50
cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb2dyYW1Db2RlQmxvY2sqLCBKSVRD
b2RlJiBqaXRDb2RlKQoreworICAgIGdldFByb2dyYW1FbnRyeXBvaW50KGdsb2JhbERhdGEsIGpp
dENvZGUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50RW50cnlwb2ludHNfaApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRF
eGNlcHRpb25zLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJDYWxsRnJhbWUu
aCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5oIgorI2lu
Y2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1
ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBM
TEludCB7CisKK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKEV4ZWNTdGF0ZSogZXhlYykK
K3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwor
I2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24g
JXMuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAg
ICBnZW5lcmljVGhyb3coCisgICAgICAgIGdsb2JhbERhdGEsIGV4ZWMtPmNhbGxlckZyYW1lKCks
IGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwKKyAgICAgICAgZXhlYy0+Y2FsbGVyRnJhbWUoKS0+Y29k
ZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGV4ZWMtPmNhbGxlckZyYW1lKCksIGV4ZWMtPnJldHVy
blBDKCkpKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRp
b24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkubGxp
bnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworfQorCitJbnN0cnVjdGlvbiogcmV0dXJu
VG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hFTFBF
Ul9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKHJldHVyblRvVGhy
b3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisg
ICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwg
cGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisg
ICAgcmV0dXJuIGdsb2JhbERhdGEtPmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsK
K30KKwordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMp
Cit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsK
KyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcgZXhjZXB0aW9u
ICVzIChjYWxsVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24o
KSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0
YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpKTsKKyAgICAKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3df
ZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTElu
dAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIExMSW50RXhjZXB0aW9uc19oCisjZGVmaW5lIExMSW50RXhjZXB0aW9uc19oCisKKyNp
bmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisK
KyNpZiBFTkFCTEUoTExJTlQpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7
CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKKy8vIFRocm93IHRo
ZSBjdXJyZW50bHkgYWN0aXZlIGV4Y2VwdGlvbiBpbiB0aGUgY29udGV4dCBvZiB0aGUgY2FsbGVy
J3MgY2FsbCBmcmFtZS4KK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKEV4ZWNTdGF0ZSop
OworCisvLyBUZWxscyB5b3Ugd2hlcmUgdG8ganVtcCB0byBpZiB5b3Ugd2FudCB0byByZXR1cm4t
dG8tdGhyb3csIGFmdGVyIHlvdSd2ZSBhbHJlYWR5CisvLyBzZXQgdXAgYWxsIGluZm9ybWF0aW9u
IG5lZWRlZCB0byB0aHJvdyB0aGUgZXhjZXB0aW9uLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhy
b3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0YXRlKik7CisKKy8vIFNhdmVzIHRoZSBjdXJyZW50
IFBDIGluIHRoZSBnbG9iYWwgZGF0YSBmb3Igc2FmZS1rZWVwaW5nLCBhbmQgZ2l2ZXMgeW91IGEg
UEMKKy8vIHRoYXQgeW91IGNhbiB0ZWxsIHRoZSBpbnRlcnByZXRlciB0byBnbyB0bywgd2hpY2gg
d2hlbiBhZHZhbmNlZCBiZXR3ZWVuIDEKKy8vIGFuZCA5IHNsb3RzIHdpbGwgZ2l2ZSB5b3UgYW4g
Imluc3RydWN0aW9uIiB0aGF0IHRocmVhZHMgdG8gdGhlIGludGVycHJldGVyJ3MKKy8vIGV4Y2Vw
dGlvbiBoYW5kbGVyLiBOb3RlIHRoYXQgaWYgeW91IGdpdmUgaXQgdGhlIFBDIGZvciBleGNlcHRp
b24gaGFuZGxpbmcsCisvLyBpdCdzIHNtYXJ0IGVub3VnaCB0byBqdXN0IHJldHVybiB0aGF0IFBD
IHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxzZTsgdGhpcworLy8gbGV0cyB5b3UgdGhyZWFkIGV4
Y2VwdGlvbiBoYW5kbGluZyB0aHJvdWdoIGNvbW1vbiBoZWxwZXIgZnVuY3Rpb25zIHVzZWQgYnkK
Ky8vIG90aGVyIGhlbHBlcnMuCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUq
LCBJbnN0cnVjdGlvbiopOworCisvLyBVc2UgdGhpcyB3aGVuIHlvdSdyZSB0aHJvd2luZyB0byBh
IGNhbGwgdGh1bmsuCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiop
OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKKworI2VuZGlmIC8vIExMSW50RXhjZXB0aW9uc19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE1NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50SGVscGVycy5oIgor
CisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAi
Q2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCisjaW5jbHVkZSAiR2V0
dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorI2luY2x1ZGUg
IkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiSklURHJpdmVyLmgi
CisjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKKyNp
bmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlO
YW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCisjaW5jbHVk
ZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnRDb21t
b24uaCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMb3dMZXZlbElu
dGVycHJldGVyLmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorCituYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIExMSW50IHsKKworI2RlZmluZSBMTElOVF9CRUdJTigpIE5hdGl2ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIoJmV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYykKKworI2RlZmluZSBMTElO
VF9PUChpbmRleCkgKGV4ZWMtPnVuY2hlY2tlZFIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisjZGVm
aW5lIExMSU5UX09QX0MoaW5kZXgpIChleGVjLT5yKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorCisj
ZGVmaW5lIExMSU5UX1JFVFVSTl9UV08oZmlyc3QsIHNlY29uZCkgZG8geyAgICAgICBcCisgICAg
ICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICAgICAgdm9pZCogYTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAg
ICAgdm9pZCogYjsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9IHBh
aXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpbnQ2NF90
IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gX19ydF91OyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmEgPSBm
aXJzdDsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmIgPSBzZWNv
bmQ7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX3J0X3UuaTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJ
TlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCBleGVjKQorCisjZGVmaW5lIExMSU5U
X1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIEpTR2xvYmFsRGF0YSYgX190X2dsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7
ICAgICAgICBcCisgICAgICAgIF9fdF9nbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IChleGNlcHRpb25U
b1Rocm93KTsgICAgICAgICAgICBcCisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBw
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBM
KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGls
ZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCkgZG8geyAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+Z2xvYmFsRGF0YSgpLmV4
Y2VwdGlvbikpIHsgICBcCisgICAgICAgICAgICBwYyA9IHJldHVyblRvVGhyb3coZXhlYywgcGMp
OyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJ
TlRfRU5EKCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwo
KTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmlu
ZSBMTElOVF9CUkFOQ0gob3Bjb2RlLCBjb25kaXRpb24pIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBib29sIF9fYl9jb25kaXRpb24gPSAoY29uZGl0aW9uKTsgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoX19iX2NvbmRpdGlvbikg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMg
Kz0gcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5vcGVyYW5kOyAgICAgICAgXAorICAg
ICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcGNvZGUpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisj
ZGVmaW5lIExMSU5UX1JFVFVSTih2YWx1ZSkgZG8geyAgICAgICAgICAgICAgICBcCisgICAgICAg
IEpTVmFsdWUgX19yX3JldHVyblZhbHVlID0gKHZhbHVlKTsgICAgICBcCisgICAgICAgIExMSU5U
X0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEp
ID0gX19yX3JldHVyblZhbHVlOyAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUg
TExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wY29kZSwgdmFsdWUpIGRvIHsgICAgICAgICAgICAgICBc
CisgICAgICAgIEpTVmFsdWUgX19ycF9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfT1AoMSkgPSBfX3JwX3JldHVyblZh
bHVlOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHBjW09QQ09ERV9MRU5HVEgo
b3Bjb2RlKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0gXAorICAgICAgICAgICAgSlNW
YWx1ZTo6ZW5jb2RlKF9fcnBfcmV0dXJuVmFsdWUpOyAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9FTkRfSU1QTChl
eGVjLCBjYWxsVGFyZ2V0KSBMTElOVF9SRVRVUk5fVFdPKChjYWxsVGFyZ2V0KSwgKGV4ZWMpKQor
CisjZGVmaW5lIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGV4Y2VwdGlvblRvVGhyb3cpIGRv
IHsgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jdF9leGVjID0gKGV4ZWMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9u
KiBfX2N0X3BjID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIEpTR2xvYmFsRGF0YSYgX19jdF9nbG9iYWxEYXRhID0gKF9fY3RfZXhlYyktPmdsb2Jh
bERhdGEoKTsgICAgICBcCisgICAgICAgIF9fY3RfZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhj
ZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NBTExfRU5E
X0lNUEwoX19jdF9leGVjLCBjYWxsVG9UaHJvdyhfX2N0X2V4ZWMsIF9fY3RfcGMpKTsgXAorICAg
IH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4
ZWMsIHBjKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSog
X19jY2VfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIEluc3RydWN0aW9uKiBfX2NjZV9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VMWShfX2NjZV9leGVjLT5nbG9iYWxE
YXRhKCkuZXhjZXB0aW9uKSkgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9DQUxM
X0VORF9JTVBMKF9fY2NlX2V4ZWMsIGNhbGxUb1Rocm93KF9fY2NlX2V4ZWMsIF9fY2NlX3BjKSk7
IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX1JFVFVSTihleGVj
LCBwYywgY2FsbFRhcmdldCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVj
U3RhdGUqIF9fY3JfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jcl9wYyA9IChwYyk7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2b2lkKiBfX2NyX2NhbGxUYXJnZXQgPSAo
Y2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9D
QUxMX0NIRUNLX0VYQ0VQVElPTihfX2NyX2V4ZWMtPmNhbGxlckZyYW1lKCksIF9fY3JfcGMpOyAg
XAorICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3JfZXhlYywgX19jcl9jYWxsVGFyZ2V0
KTsgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCitleHRlcm4gIkMiIEhl
bHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqIGV4ZWMsIEluc3Ry
dWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCit7CisgICAgcHJpbnRmKCIl
cCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWRcbiIsCisg
ICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAg
ICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRl
ci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBmcm9tV2hlcmUsCisg
ICAgICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90
cmFjZV92YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVy
ZSwgaW50IG9wZXJhbmQpCit7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0Mob3BlcmFu
ZCkuanNWYWx1ZSgpOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAg
IHVpbnQzMl90IHRhZzsKKyAgICAgICAgICAgIHVpbnQzMl90IHBheWxvYWQ7CisgICAgICAgIH0g
Yml0czsKKyAgICAgICAgRW5jb2RlZEpTVmFsdWUgYXNWYWx1ZTsKKyAgICB9IHU7CisgICAgdS5h
c1ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4
ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZDogJTA4eDolMDh4IiwKKyAg
ICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAg
IHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVy
LT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGZyb21XaGVyZSwKKyAg
ICAgICAgICAgb3BlcmFuZCwKKyAgICAgICAgICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kLAorICAg
ICAgICAgICB1LmJpdHMudGFnLAorICAgICAgICAgICB1LmJpdHMucGF5bG9hZCk7CisjaWZuZGVm
IE5ERUJVRworICAgIHByaW50ZigiOiAlcyIsIHZhbHVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlm
CisgICAgcHJpbnRmKCJcbiIpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTCh0cmFjZV9wcm9sb2d1ZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGluIHByb2xvZ3Vl
LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitz
dGF0aWMgdm9pZCB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBj
aGFyKiBjb21tZW50LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5j
dGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgRnVuY3Rpb25F
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9ICZleGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5k
KTsKKyAgICBwcmludGYoIiVwIC8gJXA6IGluICVzIG9mIGZ1bmN0aW9uICVwLCBleGVjdXRhYmxl
ICVwOyBudW1WYXJzID0gJXUsIG51bVBhcmFtZXRlcnMgPSAldSwgbnVtQ2FsbGVlUmVnaXN0ZXJz
ID0gJXUuXG4iLAorICAgICAgICAgICBjb2RlQmxvY2ssIGV4ZWMsIGNvbW1lbnQsIGNhbGxlZSwg
ZXhlY3V0YWJsZSwKKyAgICAgICAgICAgY29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCit7Cisg
ICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIHByb2xvZ3VlIiwgQ29kZUZvckNh
bGwpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9s
b2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1
ZShleGVjLCAiY29uc3RydWN0IHByb2xvZ3VlIiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2Nh
bGwpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIGFyaXR5IGNoZWNr
IiwgQ29kZUZvckNhbGwpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgdHJhY2VGdW5jdGlvblBy
b2xvZ3VlKGV4ZWMsICJjb25zdHJ1Y3QgYXJpdHkgY2hlY2siLCBDb2RlRm9yQ29uc3RydWN0KTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2UpCit7CisgICAg
cHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCAiLAorICAgICAgICAgICBleGVjLT5j
b2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsK
KyNpZm5kZWYgTkRFQlVHCisgICAgcHJpbnRmKCIlcywgIiwgb3Bjb2RlTmFtZXNbZXhlYy0+Z2xv
YmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSldKTsKKyNl
bHNlCisgICAgcHJpbnRmKCJvcCMldSwgIiwgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVy
LT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSkpOworI2VuZGlmCisgICAgcHJpbnRmKCJzY29w
ZSAlcFxuIiwgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woc3BlY2lhbF90cmFjZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4
ZWN1dGluZyBzcGVjaWFsIGNhc2UgYmMjJXp1LCBvcCMldSwgcmV0dXJuIFBDIGlzICVwXG4iLAor
ICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0
aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZXhlYy0+cmV0dXJu
UEMoKS52YWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworaW5saW5lIGJvb2wgc2hvdWxk
SklUKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBZb3UgY2FuIG1vZGlmeSB0aGlzIHRvIHR1
cm4gb2ZmIEpJVHRpbmcgd2l0aG91dCByZWJ1aWxkaW5nIHRoZSB3b3JsZC4KKyAgICByZXR1cm4g
ZXhlYy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpOworfQorCitlbnVtIEVudHJ5S2luZCB7IFBy
b2xvZ3VlLCBBcml0eUNoZWNrIH07CitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBlbnRyeU9TUihF
eGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IGNoYXIgKm5hbWUsIEVudHJ5S2luZCBraW5kKQoreworI2lmIEVOQUJMRShKSVRfVkVSQk9T
RV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCAlcyB3aXRoIGV4ZWN1dGVDb3VudGVyID0g
JWRcbiIsIGNvZGVCbG9jaywgbmFtZSwgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkp
OworI2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29k
ZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygw
LCBleGVjKTsKKyAgICB9CisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xv
YmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIHByaW50
ZigiICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAg
ICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICBpZiAoa2luZCA9PSBQcm9sb2d1ZSkKKyAgICAg
ICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRk
cmVzc0F0T2Zmc2V0KDApLCBleGVjKTsKKyAgICBBU1NFUlQoa2luZCA9PSBBcml0eUNoZWNrKTsK
KyAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+Z2V0SklUQ29kZVdpdGhBcml0eUNoZWNr
KCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVu
dHJ5X29zcikKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsIGV4ZWMtPmNvZGVCbG9j
aygpLCAiZW50cnlfb3NyIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBj
LCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRC
eXRlY29kZUZvcihDb2RlRm9yQ2FsbCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwiLCBQ
cm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0KQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24o
ZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29k
ZUZvckNvbnN0cnVjdCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCIsIFByb2xv
Z3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxs
X2FyaXR5Q2hlY2spCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlv
bihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihD
b2RlRm9yQ2FsbCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjayIsIEFy
aXR5Q2hlY2spOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywg
JmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0
ZWNvZGVGb3IoQ29kZUZvckNvbnN0cnVjdCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9hcml0eUNoZWNrIiwgQXJpdHlDaGVjayk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGxv
b3Bfb3NyKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7
CisgICAgCisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIiVwOiBFbnRl
cmVkIGxvb3Bfb3NyIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2Rl
QmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoIXNo
b3VsZEpJVChleGVjKSkgeworICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigp
OworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAgICAKKyAgICBp
ZiAoIWNvZGVCbG9jay0+aml0Q29tcGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5B
QkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxyZWFk
eSBjb21waWxlZC5cbiIpOworI2VuZGlmCisgICAgfQorICAgIGNvZGVCbG9jay0+aml0U29vbigp
OworICAgIAorICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpC
YXNlbGluZUpJVCk7CisgICAgCisgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4g
bWFwOworICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgpLT5kZWNvZGUobWFwKTsKKyAgICBCeXRl
Y29kZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcgPSBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRN
YWNoaW5lT2Zmc2V0LCB1bnNpZ25lZCwgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRl
Y29kZUluZGV4PihtYXAuYmVnaW4oKSwgbWFwLnNpemUoKSwgcGMgLSBjb2RlQmxvY2stPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCkpOworICAgIEFTU0VSVChtYXBwaW5nKTsKKyAgICBBU1NFUlQobWFw
cGluZy0+bV9ieXRlY29kZUluZGV4ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwYyAtIGNvZGVC
bG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSkpOworICAgIAorICAgIHZvaWQqIGp1bXBUYXJn
ZXQgPSBjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KG1h
cHBpbmctPm1fbWFjaGluZUNvZGVPZmZzZXQpOworICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsKKyAg
ICAKKyAgICBMTElOVF9SRVRVUk5fVFdPKGp1bXBUYXJnZXQsIGV4ZWMpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChyZXBsYWNlKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgCisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmlu
dGYoIiVwOiBFbnRlcmVkIHJlcGxhY2Ugd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2Rl
QmxvY2ssIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAor
ICAgIGlmIChzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgaWYgKCFjb2RlQmxvY2stPmppdENv
bXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1Ip
CisgICAgICAgICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7
CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICB9
IGVsc2UKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjaykKK3sK
KyAgICBMTElOVF9CRUdJTigpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRm
KCJDaGVja2luZyBzdGFjayBoZWlnaHQgd2l0aCBleGVjID0gJXAuXG4iLCBleGVjKTsKKyAgICBw
cmludGYoIkNvZGVCbG9jayA9ICVwLlxuIiwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAgIHByaW50
ZigiTnVtIGNhbGxlZSByZWdpc3RlcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251
bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgcHJpbnRmKCJOdW0gdmFycyA9ICV1LlxuIiwgZXhlYy0+
Y29kZUJsb2NrKCktPm1fbnVtVmFycyk7CisgICAgcHJpbnRmKCJDdXJyZW50IGVuZCBpcyBhdCAl
cC5cbiIsIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5k
KCkpOworI2VuZGlmCisgICAgQVNTRVJUKCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxv
Y2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnNdID4gZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJl
dGVyLT5yZWdpc3RlckZpbGUoKS5lbmQoKSk7CisgICAgaWYgKFVOTElLRUxZKCFleGVjLT5nbG9i
YWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmdyb3coJmV4ZWMtPnJlZ2lzdGVy
cygpW2V4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVyc10pKSkgeworICAgICAg
ICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50
ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMpOworICAgICAgICBwYyA9IHJldHVyblRvVGhyb3dG
b3JUaHJvd25FeGNlcHRpb24oZXhlYyk7CisgICAgfQorICAgIExMSU5UX0VORF9JTVBMKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFy
aXR5Q2hlY2tGb3IoZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0
ZXJGaWxlKCksIENvZGVGb3JDYWxsKTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhl
YyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNl
cHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJl
dGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNl
X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKKyAgICB9Cisg
ICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
RXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMs
ICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9y
Q29uc3RydWN0KTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNh
bGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24gPSBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNh
bGxlcihleGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+
KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVU
VVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0
ZV9hY3RpdmF0aW9uKQoreworICAgIExMSU5UX0JFR0lOKCk7CisjaWYgTExJTlRfSEVMUEVSX1RS
QUNJTkcKKyAgICBwcmludGYoIkNyZWF0aW5nIGFuIGFjdGl2YXRpb24sIGV4ZWMgPSAlcCFcbiIs
IGV4ZWMpOworI2VuZGlmCisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gSlNBY3RpdmF0
aW9uOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLCBzdGF0aWNfY2FzdDxGdW5jdGlv
bkV4ZWN1dGFibGUqPihleGVjLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCkpKTsKKyAg
ICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChhY3RpdmF0aW9u
KSk7CisgICAgTExJTlRfUkVUVVJOKEpTVmFsdWUoYWN0aXZhdGlvbikpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1bWVudHM6OmNyZWF0ZShleGVj
LT5nbG9iYWxEYXRhKCksIGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAg
ICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFuZCkgPSBhcmd1bWVudHM7CisgICAgZXhl
Yy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5k
KSkgPSBhcmd1bWVudHM7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTRnVuY3Rp
b24qIGNvbnN0cnVjdG9yID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgCisjaWYg
IUFTU0VSVF9ESVNBQkxFRAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBB
U1NFUlQoY29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3Ry
dWN0b3IsIGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CisjZW5kaWYKKyAgICAK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBKU1ZhbHVlIHByb3RvID0gTExJTlRfT1Ao
MikuanNWYWx1ZSgpOworICAgIGlmIChwcm90by5pc09iamVjdCgpKQorICAgICAgICBzdHJ1Y3R1
cmUgPSBhc09iamVjdChwcm90byktPmluaGVyaXRvcklEKGV4ZWMtPmdsb2JhbERhdGEoKSk7Cisg
ICAgZWxzZQorICAgICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c2NvcGUoKS0+Z2xvYmFs
T2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpOworICAgIAorICAgIExMSU5UX1JFVFVSTihj
b25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpT
VmFsdWUgdjEgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHYxLmlzUHJpbWl0
aXZlKCkpOworICAgIExMSU5UX1JFVFVSTih2MS50b1RoaXNPYmplY3QoZXhlYykpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVjdCkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgYml0d2lzZV9jYXN0PEpTVmFs
dWUqPigmTExJTlRfT1AoMikpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmNv
bnN0YW50QnVmZmVyKHBjWzJdLnUub3BlcmFuZCksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlZ2V4cChwY1syXS51
Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCisgICAgICAgIExMSU5UX1RI
Uk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIGZsYWcgc3VwcGxpZWQgdG8gUmVn
RXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2JqZWN0OjpjcmVh
dGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCksIGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4cCkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9Cb29s
ZWFuKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6ZXF1YWwo
ZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6ZXF1YWwoZXhlYywgTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMs
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElO
VF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMikuanNW
YWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dyZWF0ZXIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKGpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCks
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJlX2luYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKyAxKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDEpLmpzVmFsdWUoKS50b051bWJlcihleGVj
KSAtIDEpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUo
KS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCArIDEp
OworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Bvc3RfZGVjKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgZG91Ymxl
IHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElO
VF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCAtIDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZWdhdGUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4o
anNOdW1iZXIoLUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBKU1ZhbHVlIHYxID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2MiA9
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5H
CisgICAgcHJpbnRmKCJUcnlpbmcgdG8gYWRkICVzIiwgdjEuZGVzY3JpcHRpb24oKSk7CisgICAg
cHJpbnRmKCIgdG8gJXMuXG4iLCB2Mi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIAorICAg
IGlmICh2MS5pc1N0cmluZygpICYmICF2Mi5pc09iamVjdCgpKQorICAgICAgICBMTElOVF9SRVRV
Uk4oanNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEpLCB2Mi50b1N0cmluZyhleGVjKSkpOworICAg
IAorICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCisgICAgICAgIExMSU5U
X1JFVFVSTihqc051bWJlcih2MS5hc051bWJlcigpICsgdjIuYXNOdW1iZXIoKSkpOworICAgIAor
ICAgIExMSU5UX1JFVFVSTihqc0FkZFNsb3dDYXNlKGV4ZWMsIHYxLCB2MikpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
ICogTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3N1YikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAt
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9kaXYpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9S
RVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLyBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbW9kKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyks
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykg
PDwgKExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpICYgMzEpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQz
MihleGVjKSA+PiAoTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykgJiAzMSkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9VSW50MzIoZXhlYykgPj4gKExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4
ZWMpICYgMzEpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSAmIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50
MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG9yKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvSW50MzIoZXhlYykgfCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMy
KGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9JbnQzMihleGVjKSBeIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIo
ZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcih+TExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y2hlY2tfaGFzX2luc3RhbmNlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSBi
YXNlVmFsID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisjaWZuZGVmIE5ERUJVRworICAgIFR5
cGVJbmZvIHR5cGVJbmZvKFVuc3BlY2lmaWVkVHlwZSk7CisgICAgQVNTRVJUKCFiYXNlVmFsLmlz
T2JqZWN0KCkKKyAgICAgICAgICAgfHwgISh0eXBlSW5mbyA9IGFzT2JqZWN0KGJhc2VWYWwpLT5z
dHJ1Y3R1cmUoKS0+dHlwZUluZm8oKSkuaW1wbGVtZW50c0hhc0luc3RhbmNlKCkpOworI2VuZGlm
CisgICAgTExJTlRfVEhST1coY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoZXhlYywgImluc3RhbmNl
b2YiLCBiYXNlVmFsKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9m
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21t
b25TbG93UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3coZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQpLmpzVmFsdWUoKSkpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZikKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIExMSU5UX1JFVFVSTihqc1R5cGVTdHJpbmdGb3JWYWx1ZShleGVjLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfdW5k
ZWZpbmVkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbih2LmlzQ2VsbCgpID8g
di5hc0NlbGwoKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkubWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCgpIDogdi5pc1VuZGVmaW5lZCgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19ib29sZWFuKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS5pc051bWJlcigp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19zdHJpbmcpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGlzSlNTdHJpbmcoTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19v
YmplY3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KGpzSXNPYmplY3RUeXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUoTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbikKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhz
OjpvcEluKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZSwgQ29t
bW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZp
ZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVz
b2x2ZV9za2lwKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJ
TEVEKAorICAgICAgICBvcF9yZXNvbHZlX3NraXAsCisgICAgICAgIENvbW1vblNsb3dQYXRoczo6
b3BSZXNvbHZlU2tpcCgKKyAgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgICBleGVjLT5jb2Rl
QmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAgICAgICAgICAgcGNbM10u
dS5vcGVyYW5kKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlIHJlc29sdmVHbG9iYWwoRXhlY1N0YXRl
KiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBl
eGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29k
ZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0LT5pc0dsb2Jh
bE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICAKKyAgICBB
U1NFUlRfVU5VU0VEKHN0cnVjdHVyZSwgc3RydWN0dXJlICE9IGdsb2JhbE9iamVjdC0+c3RydWN0
dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlm
aWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmplY3QpOworICAg
IAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xv
dCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGV4ZWMsIGlkZW50
KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmICFnbG9iYWxPYmplY3Qt
PnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiBz
bG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICBwY1szXS51LnN0
cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxv
Y2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpKTsKKyAgICAg
ICAgICAgIHBjWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhlYywgaWRlbnQp
OworICAgIHJldHVybiBKU1ZhbHVlKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9y
ZXNvbHZlX2dsb2JhbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTl9Q
Uk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbCwgcmVzb2x2ZUdsb2JhbChleGVjLCBwYykpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2ds
b2JhbF9keW5hbWljLCByZXNvbHZlR2xvYmFsKGV4ZWMsIHBjKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xv
YmFsX2R5bmFtaWMsIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVC
bG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIElk
ZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5v
cGVyYW5kKTsKKyAgICBpZiAocGNbM10udS5vcGVyYW5kKSB7CisgICAgICAgIEpTVmFsdWUgYmFz
ZSA9IEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgdHJ1
ZSk7CisgICAgICAgIGlmICghYmFzZSkKKyAgICAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVy
cm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7Cisg
ICAgICAgIExMSU5UX1JFVFVSTihiYXNlKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJO
X1BST0ZJTEVEKG9wX3Jlc29sdmVfYmFzZSwgSlNDOjpyZXNvbHZlQmFzZShleGVjLCBpZGVudCwg
ZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpT
T2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIFBy
b3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5j
b2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghb2JqZWN0
LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKQorICAgICAgICBMTElOVF9USFJP
VyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJp
bmcoKSkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cmVzb2x2ZV93aXRoX2Jhc2UpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHJl
c3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aEJhc2UoZXhlYywgZXhlYy0+Y29k
ZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0OworICAg
IC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcsIGJ1dCB3ZSBkb24n
dCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BS
ZXNvbHZlV2l0aFRoaXMoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10u
dS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwor
ICAgIExMSU5UX09QKDIpID0gcmVzdWx0OworICAgIC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91
bGQgaGF2ZSBwcm9maWxpbmcsIGJ1dCB3ZSBkb24ndCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29u
J3QgdXNlIGl0LgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZ2V0X2J5X2lkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVC
bG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVl
ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZh
bHVlKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwg
c2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1AoMSkgPSBy
ZXN1bHQ7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCisgICAgICAgICYmIHNsb3QuaXND
YWNoZWFibGUoKQorICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlCisgICAg
ICAgICYmIHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpWYWx1ZSkg
eworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwo
KTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7
CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25h
cnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9w
ZXJ0eUNhY2hpbmcoKSkgeworICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAg
ICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2Fj
aGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisg
ICAgcGNbT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfaWQpIC0gMV0udS5wcm9maWxlLT5tX2J1Y2tl
dHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2so
KTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51
Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMikuanNWYWx1ZSgp
OworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisgICAgTExJTlRfUkVUVVJOKGJh
c2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3B1dF9ieV9pZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBj
b2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICAKKyAgICBKU1ZhbHVl
IGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgIGlmIChwY1s4XS51Lm9wZXJh
bmQpCisgICAgICAgIGFzT2JqZWN0KGJhc2VWYWx1ZSktPnB1dERpcmVjdChleGVjLT5nbG9iYWxE
YXRhKCksIGlkZW50LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgZWxzZQor
ICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KSwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgaWYgKGJh
c2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsKKyAgICAg
ICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAg
ICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAg
ICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAg
ICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNo
aW5nKCkKKyAgICAgICAgICAgICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5l
d1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFy
eSgpICYmIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgp
ID09IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAg
ICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWUgb2YgdGhlIG1ldGhvZHMgd2Ug
Y2FsbAorICAgICAgICAgICAgICAgICAgICAvLyBiZWxvdyBtYXkgR0MuCisgICAgICAgICAgICAg
ICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0
X2J5X2lkKTsKKworICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihl
eGVjLCBiYXNlQ2VsbCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOworICAgICAgICAg
ICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAgICAg
ICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVj
dHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5k
ID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUp
OworICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBzdHJ1Y3R1cmUt
PnByb3RvdHlwZUNoYWluKGV4ZWMpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2hhaW4p
OworICAgICAgICAgICAgICAgICAgICBwY1s3XS51LnN0cnVjdHVyZUNoYWluLnNldCgKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKSwgY2hhaW4pOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHBjWzBd
LnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAgIHBjWzRdLnUu
c3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAg
IHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKGZhbHNlICYm
ICFzdHJjbXAoaWRlbnQuYXNjaWkoKS5kYXRhKCksICJyZW5kZXJSZWZsZWN0aW9ucyIpKQorICAg
ICAgICBwcmludGYoIkZpbmlzaGluZyBhY2Nlc3MgdG8gcmVuZGVyUmVmbGVjdGlvbnMgZnJvbSBM
TEludCBzbG93IHBhdGguXG4iKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3Qq
IGJhc2VPYmplY3QgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b09iamVjdChleGVjKTsKKyAg
ICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJv
cGVydHkoYmFzZU9iamVjdCwgZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3Bl
cmFuZCkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGlmICghY291bGREZWxl
dGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICBM
TElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisKK2lubGluZSBKU1ZhbHVl
IGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vi
c2NyaXB0KQoreworICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlw
dC5pc1N0cmluZygpKSkgeworICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUu
YXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eShleGVjLCBhc1N0cmluZyhzdWJzY3JpcHQpLT52
YWx1ZShleGVjKSkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAg
ICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNj
cmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFsdWUpICYmIGFz
U3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFz
U3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAKKyAgICAgICAg
aWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5j
YW5BY2Nlc3NJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc0J5dGVBcnJheShiYXNlVmFs
dWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBiYXNlVmFs
dWUuZ2V0KGV4ZWMsIGkpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4
ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIHJldHVybiBi
YXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2dldF9ieV92YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk5f
UFJPRklMRUQob3BfZ2V0X2J5X3ZhbCwgZ2V0QnlWYWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
SlNWYWx1ZSBhcmd1bWVudHMgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhcmd1
bWVudHMpIHsKKyAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xv
YmFsRGF0YSgpLCBleGVjKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
ICAgIExMSU5UX09QKDIpID0gYXJndW1lbnRzOworICAgICAgICBleGVjLT51bmNoZWNrZWRSKHVu
bW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsK
KyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIGFyZ3VtZW50cywg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2dldF9ieV9wbmFtZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihn
ZXRCeVZhbChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2Jh
bERhdGEoKTsKKyAgICAKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7
CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAg
IGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CisgICAgICAgIHVpbnQzMl90IGkg
PSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUp
KSB7CisgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOwor
ICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNhblNldEluZGV4KGkpKQorICAgICAgICAgICAgICAg
IGpzQXJyYXktPnNldEluZGV4KGdsb2JhbERhdGEsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4KGpzQXJyYXksIGV4ZWMsIGks
IHZhbHVlKTsKKyAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICB9CisgICAgICAgIGlm
IChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkKKyAgICAgICAgICAgICYmIGFzQnl0ZUFycmF5KGJh
c2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CisgICAgICAgICAgICBKU0J5dGVBcnJheSog
anNCeXRlQXJyYXkgPSBhc0J5dGVBcnJheShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYgKHZh
bHVlLmlzSW50MzIoKSkgeworICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChp
LCB2YWx1ZS5hc0ludDMyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAg
ICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNOdW1iZXIoKSk7CisgICAgICAg
ICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
YmFzZVZhbHVlLnB1dChleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgIExMSU5UX0VORCgpOworICAg
IH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAg
IFB1dFByb3BlcnR5U2xvdCBzbG90KGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7
CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X3ZhbCkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBiYXNlVmFsdWUudG9PYmpl
Y3QoZXhlYyk7CisgICAgCisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKTsKKyAgICAKKyAgICBib29sIGNvdWxkRGVsZXRlOworICAgIAorICAgIHVpbnQzMl90
IGk7CisgICAgaWYgKHN1YnNjcmlwdC5nZXRVSW50MzIoaSkpCisgICAgICAgIGNvdWxkRGVsZXRl
ID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUluZGV4KGJhc2VP
YmplY3QsIGV4ZWMsIGkpOworICAgIGVsc2UgeworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7
CisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRl
UHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgcHJvcGVydHkpOworICAgIH0KKyAgICAKKyAgICBp
ZiAoIWNvdWxkRGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAg
ICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRl
IHByb3BlcnR5LiIpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVs
ZXRlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5kZXgpCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS5wdXQoZXhlYywg
cGNbMl0udS5vcGVyYW5kLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyX3NldHRlcikKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNP
YmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElOVF9PUCgxKS5q
c1ZhbHVlKCkpOworICAgIAorICAgIEdldHRlclNldHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0
ZXI6OmNyZWF0ZShleGVjKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAg
ICBKU1ZhbHVlIGdldHRlciA9IExMSU5UX09QKDMpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHNl
dHRlciA9IExMSU5UX09QKDQpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoZ2V0dGVyLmlzT2JqZWN0
KCkgfHwgZ2V0dGVyLmlzVW5kZWZpbmVkKCkpOworICAgIEFTU0VSVChzZXR0ZXIuaXNPYmplY3Qo
KSB8fCBzZXR0ZXIuaXNVbmRlZmluZWQoKSk7CisgICAgQVNTRVJUKGdldHRlci5pc09iamVjdCgp
IHx8IHNldHRlci5pc09iamVjdCgpKTsKKyAgICAKKyAgICBpZiAoIWdldHRlci5pc1VuZGVmaW5l
ZCgpKQorICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgYXNP
YmplY3QoZ2V0dGVyKSk7CisgICAgaWYgKCFzZXR0ZXIuaXNVbmRlZmluZWQoKSkKKyAgICAgICAg
YWNjZXNzb3ItPnNldFNldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0KHNldHRlcikp
OworICAgIGJhc2VPYmotPnB1dERpcmVjdEFjY2Vzc29yKAorICAgICAgICBleGVjLT5nbG9iYWxE
YXRhKCksCisgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3Bl
cmFuZCksCisgICAgICAgIGFjY2Vzc29yLCBBY2Nlc3Nvcik7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgdW5zaWduZWQgY291bnQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgU2NvcGVD
aGFpbk5vZGUqIHRtcCA9IGV4ZWMtPnNjb3BlQ2hhaW4oKTsKKyAgICB3aGlsZSAoY291bnQtLSkK
KyAgICAgICAgdG1wID0gdG1wLT5wb3AoKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKHRtcCk7
CisgICAgcGMgKz0gcGNbMl0udS5vcGVyYW5kOworICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBM
TElOVF9CUkFOQ0gob3BfanRydWUsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihl
eGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3BfamZhbHNlLCAhTExJTlRfT1BfQygxKS5q
c1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2psZXNzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNz
LCBqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzLCAhanNMZXNz
PHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXIpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXIsIGpzTGVzczxmYWxz
ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyLCAhanNMZXNzPGZhbHNl
PihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3NlcSwganNMZXNzRXE8dHJ1ZT4oZXhl
YywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIExMSU5UX0JSQU5DSChvcF9qbmxlc3NlcSwgIWpzTGVzc0VxPHRydWU+KGV4ZWMs
IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlcmVxLCBqc0xlc3NFcTxmYWxzZT4oZXhl
YywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9C
RUdJTigpOworICAgIExMSU5UX0JSQU5DSChvcF9qbmdyZWF0ZXJlcSwgIWpzTGVzc0VxPGZhbHNl
PihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9pbW0pCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QX0MoMykuanNWYWx1
ZSgpOworICAgIEFTU0VSVChzY3J1dGluZWUuaXNEb3VibGUoKSk7CisgICAgZG91YmxlIHZhbHVl
ID0gc2NydXRpbmVlLmFzRG91YmxlKCk7CisgICAgaW50MzJfdCBpbnRWYWx1ZSA9IHN0YXRpY19j
YXN0PGludDMyX3Q+KHZhbHVlKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3Bl
cmFuZDsKKyAgICBpZiAodmFsdWUgPT0gaW50VmFsdWUpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5p
bW1lZGlhdGVTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShp
bnRWYWx1ZSwgZGVmYXVsdE9mZnNldCk7CisgICAgfSBlbHNlCisgICAgICAgIHBjICs9IGRlZmF1
bHRPZmZzZXQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9zd2l0Y2hfc3RyaW5nKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSBzY3J1
dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9
IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAoIXNjcnV0aW5lZS5pc1N0cmluZygpKQorICAgICAg
ICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIGVsc2UgeworICAgICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2RlQmxvY2stPnN0
cmluZ1N3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGFzU3Ry
aW5nKHNjcnV0aW5lZSktPnZhbHVlKGV4ZWMpLmltcGwoKSwgZGVmYXVsdE9mZnNldCk7CisgICAg
fQorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1
bmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVUeXBlKCkgIT0gRnVu
Y3Rpb25Db2RlCisgICAgICAgICAgIHx8ICFjb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4o
KQorICAgICAgICAgICB8fCBleGVjLT51bmNoZWNrZWRSKGNvZGVCbG9jay0+YWN0aXZhdGlvblJl
Z2lzdGVyKCkpLmpzVmFsdWUoKSk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmlu
dGYoIkNyZWF0aW5nIGZ1bmN0aW9uIVxuIik7CisjZW5kaWYKKyAgICBMTElOVF9SRVRVUk4oY29k
ZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbMl0udS5vcGVyYW5kKS0+bWFrZShleGVjLCBleGVjLT5z
Y29wZUNoYWluKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jX2V4
cCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVC
bG9jay0+ZnVuY3Rpb25FeHByKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNGdW5jdGlvbiogZnVu
YyA9IGZ1bmN0aW9uLT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgCisgICAg
aWYgKCFmdW5jdGlvbi0+bmFtZSgpLmlzTnVsbCgpKSB7CisgICAgICAgIEpTU3RhdGljU2NvcGVP
YmplY3QqIGZ1bmN0aW9uU2NvcGVPYmplY3QgPSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUo
ZXhlYywgZnVuY3Rpb24tPm5hbWUoKSwgZnVuYywgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAg
ICAgICAgZnVuYy0+c2V0U2NvcGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jLT5zY29wZSgpLT5w
dXNoKGZ1bmN0aW9uU2NvcGVPYmplY3QpKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJO
KGZ1bmMpOworfQorCitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxsZWUsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2Fs
bGVlLT5jYWxsZXJGcmFtZSgpOworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVj
LT5nbG9iYWxEYXRhKCk7CisKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNj
b3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworCisgICAgaWYg
KGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAg
ICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoY2FsbGVlLCBjYWxsRGF0YSk7Cisg
ICAgCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZUpTKTsKKyAgICAKKyAgICAg
ICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSG9zdCkgeworICAgICAgICAgICAgZ2xvYmFsRGF0
YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRpdmUu
ZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBMTElOVF9D
QUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkpOworICAgICAgICB9CisgICAgICAgIAorI2lmIExMSU5UX0hFTFBF
Ul9UUkFDSU5HCisgICAgICAgIHByaW50ZigiQ2FsbCBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246
ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgICAgICBBU1NFUlQo
Y2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKTsKKyAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhleGVj
LCBwYywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7CisgICAgfQorCisg
ICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgCisgICAgQ29uc3RydWN0
RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0VHlwZSA9IGdl
dENvbnN0cnVjdERhdGEoY2FsbGVlLCBjb25zdHJ1Y3REYXRhKTsKKyAgICAKKyAgICBBU1NFUlQo
Y29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlSlMpOworICAgIAorICAgIGlmIChjb25zdHJ1
Y3RUeXBlID09IENvbnN0cnVjdFR5cGVIb3N0KSB7CisgICAgICAgIGdsb2JhbERhdGEtPmhvc3RD
YWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRpdmUuZnVu
Y3Rpb24oZXhlY0NhbGxlZSkpOworCisgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxs
ZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7
CisgICAgfQorICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJDb25z
dHJ1Y3RvciBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRp
b24oKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5
cGVOb25lKTsKKyAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBQ29uc3Ry
dWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUg
c2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSwgTExJbnRDYWxsTGlu
a0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCit7CisgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9u
Q2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSk7CisgICAgaWYgKCFjYWxsZWVBc0Z1
bmN0aW9uQ2VsbCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIHBj
LCBjYWxsZWVBc1ZhbHVlLCBraW5kKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBh
c0Z1bmN0aW9uKGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29w
ZUNoYWluKGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKSk7CisgICAgRXhlY3V0YWJsZUJhc2UqIGV4
ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIgY29kZVB0cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7CisgICAgaWYg
KGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRh
YmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgZWxz
ZSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3Rh
dGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAgICAgIEpTT2Jq
ZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVjQ2FsbGVlLCBj
YWxsZWUtPnNjb3BlKCksIGtpbmQpOworICAgICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBM
TElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCksIHBjLCBlcnJvcik7Cisg
ICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2Rl
Rm9yKGtpbmQpOworICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICAgICAgaWYgKGV4ZWND
YWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+
KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5j
dGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0ZvcihraW5kKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+
Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIH0KKyAgICAK
KyAgICBpZiAoY2FsbExpbmtJbmZvKSB7CisgICAgICAgIGlmIChjYWxsTGlua0luZm8tPmlzT25M
aXN0KCkpCisgICAgICAgICAgICBjYWxsTGlua0luZm8tPnJlbW92ZSgpOworICAgICAgICBFeGVj
U3RhdGUqIGV4ZWNDYWxsZXIgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBj
YWxsTGlua0luZm8tPmNhbGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBleGVjQ2Fs
bGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAgICAgIGNh
bGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEoKSwg
ZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAg
ICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsKKyAgICAgICAg
aWYgKGNvZGVCbG9jaykKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChj
YWxsTGlua0luZm8pOworICAgIH0KKyAgICAKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2Fs
bGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKK30KKworaW5saW5lIEhlbHBl
clJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgor
ICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0
byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIElmIHBvc3NpYmxl
LCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUg
b2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgor
ICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
OworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJh
bmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMo
cGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmls
ZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJh
bWUoZXhlYyk7CisgICAgCisgICAgQVNTRVJUKHBjWzRdLnUuY2FsbExpbmtJbmZvKTsKKyAgICBy
ZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCBwY1s0
XS51LmNhbGxMaW5rSW5mbyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBD
b2RlRm9yQ2FsbCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENv
ZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJh
cmdzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAv
LyAtIFNldCB1cCBhIGNhbGwgZnJhbWUgd2hpbGUgcmVzcGVjdGluZyB0aGUgdmFyaWFibGUgYXJn
dW1lbnRzLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQg
aWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFk
ZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUg
Y2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNT
dGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAorICAgICAgICBleGVjLCAmZXhlYy0+Z2xv
YmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwKKyAgICAgICAgTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBwY1s0XS51Lm9wZXJhbmQp
OworICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKTsKKyAgICAKKyAgICBl
eGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFs
dWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlYy0+dW5j
aGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0d2lzZV9jYXN0
PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpKTsKKyAgICAKKyAg
ICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNW
YWx1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKS5q
c1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNd
LnUub3BlcmFuZDsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxE
YXRhKCk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVj
KTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNh
bGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNo
YWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVj
dGlvbio+KCZsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOworICAgIGV4ZWNDYWxsZWUtPnNl
dENvZGVCbG9jaygwKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1l
bnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4ocGMgKyBPUENPREVfTEVOR1RI
KG9wX2NhbGxfZXZhbCkpOworICAgIAorICAgIGlmICghaXNIb3N0RnVuY3Rpb24oY2FsbGVlQXNW
YWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQorICAgICAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxs
ZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7CisgICAgCisgICAgZ2xvYmFsRGF0
YS5ob3N0Q2FsbFJldHVyblZhbHVlID0gZXZhbChleGVjQ2FsbGVlKTsKKyAgICBMTElOVF9DQUxM
X1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZf
YWN0aXZhdGlvbikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEFTU0VSVChleGVjLT5jb2Rl
QmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBKU1ZhbHVlIGFjdGl2YXRpb25W
YWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFjdGl2YXRpb25WYWx1ZSkg
eworICAgICAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKSB7CisgICAgICAgICAg
ICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAg
ICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAgfQorICAgICAgICBMTElO
VF9FTkQoKTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0
aW9uKGFjdGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihleGVjLT5nbG9i
YWxEYXRhKCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpCisgICAgICAg
IGFzQXJndW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IGFjdGl2YXRpb24pOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQVNT
RVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkgJiYgIWV4ZWMtPmNvZGVCbG9j
aygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIGFzQXJndW1lbnRzKGV4ZWMtPnVuY2hl
Y2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpLmpzVmFs
dWUoKSktPnRlYXJPZmYoZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9zdHJjYXQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9S
RVRVUk4oanNTdHJpbmcoZXhlYywgJkxMSU5UX09QKDIpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSkKK3sKKyAgICBMTElOVF9C
RUdJTigpOworICAgIExMSU5UX1JFVFVSTihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1ByaW1p
dGl2ZShleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1
ZSgpOworICAgIGlmICh2LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcGMgKz0gcGNb
NV0udS5vcGVyYW5kOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSlNP
YmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
by0+c3RydWN0dXJlKCk7CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5h
bWVJdGVyYXRvciA9IHN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpOworICAgIGlmICghanNQ
cm9wZXJ0eU5hbWVJdGVyYXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQcm90
b3R5cGVDaGFpbigpICE9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCisgICAgICAg
IGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUo
ZXhlYywgbyk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBKU1ZhbHVlKGpzUHJvcGVydHlOYW1l
SXRlcmF0b3IpOworICAgIExMSU5UX09QKDIpID0gSlNWYWx1ZShvKTsKKyAgICBMTElOVF9PUCgz
KSA9IFJlZ2lzdGVyOjp3aXRoSW50KDApOworICAgIExMSU5UX09QKDQpID0gUmVnaXN0ZXI6Ondp
dGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAgICAKKyAgICBwYyArPSBP
UENPREVfTEVOR1RIKG9wX2dldF9wbmFtZXMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoTExJTlRfT1AoMikuanNWYWx1ZSgpKTsKKyAg
ICBKU1N0cmluZyogcHJvcGVydHkgPSBhc1N0cmluZyhMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOwor
ICAgIGlmIChiYXNlLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5
LT52YWx1ZShleGVjKSkpKSB7CisgICAgICAgIC8vIEdvIHRvIHRhcmdldC4KKyAgICAgICAgcGMg
Kz0gcGNbNl0udS5vcGVyYW5kOworICAgIH0gLy8gRWxzZSwgZG9uJ3QgY2hhbmdlIHRoZSBQQywg
c28gdGhlIGludGVycHJldGVyIHdpbGwgcmVsb29wLgorICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCog
byA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
CisgICAgTExJTlRfT1AoMSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2Nv
cGVDaGFpbigpLT5wdXNoKG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wb3AoKSk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIHNjb3BlID0gSlNTdGF0aWNTY29wZU9iamVjdDo6
Y3JlYXRlKGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLCBMTElO
VF9PUCgzKS5qc1ZhbHVlKCksIERvbnREZWxldGUpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4o
ZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKHNjb3BlKSk7CisgICAgTExJTlRfUkVUVVJOKHNjb3Bl
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgTExJTlRfVEhST1coTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgTExJTlRfVEhST1coY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywg
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1ZykKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZmlyc3RM
aW5lID0gcGNbMl0udS5vcGVyYW5kOworICAgIGludCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFu
ZDsKKyAgICAKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMs
IHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExp
bmUpOworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICAoKlByb2Zp
bGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPndpbGxFeGVjdXRlKGV4ZWMsIExMSU5U
X09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
KCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT5kaWRFeGVjdXRlKGV4ZWMs
IExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBMTEludEhlbHBlcnNfaAorI2RlZmluZSBMTEludEhlbHBlcnNfaAor
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorCisjaWYgRU5BQkxFKExMSU5UKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0
YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCit0eXBlZGVm
IGludDY0X3QgSGVscGVyUmV0dXJuVHlwZTsKKworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBl
IGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdo
ZXJlLCBpbnQgb3BlcmFuZCk7CitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJh
Y2VfdmFsdWUoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3Bl
cmFuZCk7CisKKyNkZWZpbmUgTExJTlRfSEVMUEVSX0RFQ0wobmFtZSkgXAorICAgIGV4dGVybiAi
QyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF8jI25hbWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVj
dGlvbiogcGMpCisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVM
UEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCh0
cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2Up
OworTExJTlRfSEVMUEVSX0RFQ0woc3BlY2lhbF90cmFjZSk7CitMTElOVF9IRUxQRVJfREVDTChl
bnRyeV9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxs
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNr
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2Fy
aXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0wobG9vcF9vc3IpOworTExJTlRfSEVMUEVSX0RF
Q0wocmVwbGFjZSk7CitMTElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9jcmVhdGVfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2Fy
Z3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3RoaXMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbmV3X29iamVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2FycmF5KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uZXdfcmVnZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9u
ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9uc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcmVxKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
cmVfZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcG9zdF9kZWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pz
bnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2FkZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rpdik7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9sc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3JzaGlmdCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfdXJzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5k
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcik7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfYml0eG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3QpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfaW5zdGFuY2VvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRlZmluZWQpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2lzX2Jvb2xlYW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJl
cik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pc19vYmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0
aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbik7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcmVzb2x2ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcmVzb2x2ZV9iYXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1
cmVfcHJvcGVydHlfZXhpc3RzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dp
dGhfYmFzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1
dF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X2lkKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9n
ZXRfYXJndW1lbnRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5h
bWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2RlbF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9i
eV9pbmRleCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2dldHRlcl9zZXR0ZXIpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2p0cnVlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxl
c3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9qbmdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJl
cSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfc3dpdGNoX2NoYXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRj
aF9zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
YWxsX2V2YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24p
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cyk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19w
cmltaXRpdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3B1c2hfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Rocm93KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2Vf
ZXJyb3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cHJvZmlsZV9kaWRfY2FsbCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5k
aWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRIZWxwZXJzX2gKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25m
aWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9m
ZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50T2ZmbGlu
ZUFzbUNvbmZpZ19oCisjZGVmaW5lIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisKKyNpbmNsdWRl
ICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8
d3RmL0lubGluZUFzbS5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4
NikKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNN
X1g4NiAwCisjZW5kaWYKKworI2lmIENQVShBUk1fVEhVTUIyKQorI2RlZmluZSBPRkZMSU5FX0FT
TV9BUk12NyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCisjZW5kaWYKKwor
I2lmICFBU1NFUlRfRElTQUJMRUQKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQg
MQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMAorI2VuZGlmCisK
KyNpZiBDUFUoQklHX0VORElBTikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAxCisj
ZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDAKKyNlbmRpZgorCisjaWYgRU5B
QkxFKExMSU5UX09TUl9UT19KSVQpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEK
KyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYg
TExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RS
QUNJTkcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMAor
I2VuZGlmCisKKyNpZiBMTElOVF9BTFdBWVNfQUxMT0NBVEVfU0xPVworI2RlZmluZSBPRkZMSU5F
X0FTTV9BTFdBWVNfQUxMT0NBVEVfU0xPVyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9B
TFdBWVNfQUxMT0NBVEVfU0xPVyAwCisjZW5kaWYKKworI2lmIENQVShBUk1fVEhVTUIyKQorI2Rl
ZmluZSBPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGFiZWwpICAgICAgICAgIFwKKyAgICAiLmds
b2JsICIgU1lNQk9MX1NUUklORyhsYWJlbCkgIlxuIiAgICAgICAgICBcCisgICAgSElERV9TWU1C
T0wobmFtZSkgIlxuIiAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICIudGh1bWJcbiIgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiLnRodW1iX2Z1bmMgIiBUSFVN
Ql9GVU5DX1BBUkFNKGxhYmVsKSAiXG4iICBcCisgICAgU1lNQk9MX1NUUklORyhsYWJlbCkgIjpc
biIKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0dMT0JBTF9MQUJFTChsYWJlbCkgICAgICAg
ICBcCisgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGFiZWwpICJcbiIgICAgICAgICBcCisg
ICAgSElERV9TWU1CT0wobmFtZSkgIlxuIiAgICAgICAgICAgICAgICAgICAgICBcCisgICAgU1lN
Qk9MX1NUUklORyhsYWJlbCkgIjpcbiIKKyNlbmRpZgorCisjZW5kaWYgLy8gTExJbnRPZmZsaW5l
QXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNl
dHNFeHRyYWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5j
bHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgorI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2lu
Y2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0ds
b2JhbERhdGEuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpT
U3RyaW5nLmgiCisjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVP
YmplY3QuaCIKKyNpbmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVB
c21Db25maWcuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVy
RmlsZS5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIK
KyNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNk
ZWZpbmUgT0ZGTElORV9BU01fT0ZGU0VUT0YoY2xhenosIGZpZWxkKSBPQkpFQ1RfT0ZGU0VUT0Yo
Y2xhenosIGZpZWxkKQorCitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3IgeworcHVibGljOgor
ICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCogZHVtbXkoKTsKK307CisKK2NvbnN0IHVuc2lnbmVk
KiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkKK3sKKy8vIFRoaXMgaXMgYSBmaWxlIGdl
bmVyYXRlZCBieSBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldHNfZXh0cmFjdG9yLnJiLCBhbmQg
Y29udGFpbnMgY29kZQorLy8gdG8gY3JlYXRlIGEgdGFibGUgb2Ygb2Zmc2V0cywgc2l6ZXMsIGFu
ZCBhIGhlYWRlciBpZGVudGlmeWluZyB3aGF0IGNvbWJpbmF0aW9uIG9mCisvLyBQbGF0Zm9ybS5o
IG1hY3JvcyB3ZSBoYXZlIHNldC4gV2UgaW5jbHVkZSBpdCBpbnNpZGUgb2YgYSBtZXRob2Qgb24g
TExJbnRPZmZzZXRzRXh0cmFjdG9yCisvLyBiZWNhdXNlIHRoZSBmaWVsZHMgd2hvc2Ugb2Zmc2V0
cyB3ZSdyZSBleHRyYWN0aW5nIGFyZSBtb3N0bHkgcHJpdmF0ZS4gU28gd2UgbWFrZSB0aGVpcgor
Ly8gY2xhc3NlcyBmcmllbmRzIHdpdGggTExJbnRPZmZzZXRzRXh0cmFjdG9yLCBhbmQgaW5jbHVk
ZSB0aGUgaGVhZGVyIGhlcmUsIHRvIGdldCB0aGUgQysrCisvLyBjb21waWxlciB0byBraW5kbHkg
c3RlcCBhc2lkZSBhbmQgeWllbGQgdG8gb3VyIGJlc3QgaW50ZW50aW9ucy4KKyNpbmNsdWRlICJM
TEludERlc2lyZWRPZmZzZXRzLmgiCisgICAgcmV0dXJuIGV4dHJhY3RvclRhYmxlOworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKKworaW50IG1haW4oaW50LCBjaGFyKiopCit7CisgICAgLy8gT3V0
IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0aW9uLCBtYWtlIHN1cmUgdGhhdCBMTEludE9mZnNldHNF
eHRyYWN0b3I6OmR1bW15KCkgaXMgbGl2ZSwKKyAgICAvLyBhbmQgdGhlIGV4dHJhY3RvclRhYmxl
IGlzIGxpdmUsIHRvby4KKyAgICBwcmludGYoIiVwXG4iLCBKU0M6OkxMSW50T2Zmc2V0c0V4dHJh
Y3Rvcjo6ZHVtbXkoKSk7CisgICAgcmV0dXJuIDA7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludFRodW5rcy5oIgorCisjaWYgRU5BQkxF
KExMSU5UKQorCisjaW5jbHVkZSAiSlNJbnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRlICJMaW5rQnVm
ZmVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIExMSW50IHsKKworc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIHZvaWQgKCp0YXJn
ZXQpKCkpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIAorICAgIC8vIEZJWE1FOiB0
aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20gbm90
IHN1cmUgSSBjYXJlLgorICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRy
KGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7Cisg
ICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBMaW5rQnVmZmVy
IHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJl
dHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRh
LCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhn
bG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKK30KKwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVy
YXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1
bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJp
dHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICBy
ZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBl
dmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAg
cmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2V2YWxfcHJv
bG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5l
cmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRo
dW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKTsKK30KKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgTExJbnRUaHVua3NfaAorI2RlZmluZSBMTEludFRodW5rc19o
CisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2lu
Y2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgSlNHbG9iYWxEYXRhOworCituYW1lc3BhY2UgTExJbnQgeworCitNYWNyb0Fzc2VtYmxlckNv
ZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5l
cmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JD
YWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpT
R2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRo
dW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJ
bnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50VGh1bmtzX2gK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFz
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjM3OCBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjIENyYXNoIGNv
dXJzZSBvbiB0aGUgbGFuZ3VhZ2UgdGhhdCB0aGlzIGlzIHdyaXR0ZW4gaW4gKHdoaWNoIEkganVz
dCBjYWxsCisjICJhc3NlbWJseSIgZXZlbiB0aG91Z2ggaXQncyBtb3JlIHRoYW4gdGhhdCk6Cisj
CisjIC0gTW9zdGx5IGdhcy1zdHlsZSBvcGVyYW5kIG9yZGVyaW5nLiBUaGUgbGFzdCBvcGVyYW5k
IHRlbmRzIHRvIGJlIHRoZQorIyAgIGRlc3RpbmF0aW9uLiBTbyAiYSA6PSBiIiBpcyB3cml0dGVu
IGFzICJtb3YgYiwgYSIuIEJ1dCB1bmxpa2UgZ2FzLAorIyAgIGNvbXBhcmlzb25zIGFyZSBpbi1v
cmRlciwgc28gImlmIChhIDwgYikiIGlzIHdyaXR0ZW4gYXMKKyMgICAiYmlsdCBhLCBiLCAuLi4i
LgorIworIyAtICJiIiA9IGJ5dGUsICJoIiA9IDE2LWJpdCB3b3JkLCAiaSIgPSAzMi1iaXQgd29y
ZCwgInAiID0gcG9pbnRlci4KKyMgICBDdXJyZW50bHkgdGhpcyBpcyBqdXN0IDMyLWJpdCBzbyAi
aSIgYW5kICJwIiBhcmUgaW50ZXJjaGFuZ2VhYmxlCisjICAgZXhjZXB0IHdoZW4gYW4gb3Agc3Vw
cG9ydHMgb25lIGJ1dCBub3QgdGhlIG90aGVyLgorIworIyAtIEluIGdlbmVyYWwsIHZhbGlkIG9w
ZXJhbmRzIGZvciBtYWNybyBpbnZvY2F0aW9ucyBhbmQgaW5zdHJ1Y3Rpb25zIGFyZQorIyAgIHJl
Z2lzdGVycyAoZWcgInQwIiksIGFkZHJlc3NlcyAoZWcgIjRbdDBdIiksIGJhc2UtaW5kZXggYWRk
cmVzc2VzCisjICAgKGVnICI3W3QwLCB0MSwgMl0iKSwgYWJzb2x1dGUgYWRkcmVzc2VzIChlZyAi
MHhhMDAwMDAwMFtdIiksIG9yIGxhYmVscworIyAgIChlZyAiX2ZvbyIgb3IgIi5mb28iKS4gTWFj
cm8gaW52b2NhdGlvbnMgY2FuIGFsc28gdGFrZSBhbm9ueW1vdXMKKyMgICBtYWNyb3MgYXMgb3Bl
cmFuZHMuIEluc3RydWN0aW9ucyBjYW5ub3QgdGFrZSBhbm9ueW1vdXMgbWFjcm9zLgorIworIyAt
IExhYmVscyBtdXN0IGhhdmUgbmFtZXMgdGhhdCBiZWdpbiB3aXRoIGVpdGhlciAiXyIgb3IgIi4i
LiAgQSAiLiIgbGFiZWwKKyMgICBpcyBsb2NhbCBhbmQgZ2V0cyByZW5hbWVkIGJlZm9yZSBjb2Rl
IGdlbiB0byBtaW5pbWl6ZSBuYW1lc3BhY2UKKyMgICBwb2xsdXRpb24uIEEgIl8iIGxhYmVsIGlz
IGFuIGV4dGVybiBzeW1ib2wgKGkuZS4gIi5nbG9ibCIpLiBUaGUgIl8iCisjICAgbWF5IG9yIG1h
eSBub3QgYmUgcmVtb3ZlZCBkdXJpbmcgY29kZSBnZW4gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhl
IGFzbQorIyAgIGNvbnZlbnRpb25zIGZvciBDIG5hbWUgbWFuZ2xpbmcgb24gdGhlIHRhcmdldCBw
bGF0Zm9ybSBtYW5kYXRlIGEgIl8iCisjICAgcHJlZml4LgorIworIyAtIEEgIm1hY3JvIiBpcyBh
IGxhbWJkYSBleHByZXNzaW9uLCB3aGljaCBtYXkgYmUgZWl0aGVyIGFub255bW91cyBvcgorIyAg
IG5hbWVkLiBCdXQgdGhpcyBoYXMgY2F2ZWF0cy4gIm1hY3JvIiBjYW4gdGFrZSB6ZXJvIG9yIG1v
cmUgYXJndW1lbnRzLAorIyAgIHdoaWNoIG1heSBiZSBtYWNyb3Mgb3IgYW55IHZhbGlkIG9wZXJh
bmRzLCBidXQgaXQgY2FuIG9ubHkgcmV0dXJuCisjICAgY29kZS4gQnV0IHlvdSBjYW4gZG8gVHVy
aW5nLWNvbXBsZXRlIHRoaW5ncyB2aWEgY29udGludWF0aW9uIHBhc3NpbmcKKyMgICBzdHlsZTog
Im1hY3JvIGZvbyAoYSwgYikgYihhKSBlbmQgZm9vKGZvbywgZm9vKSIuIEFjdHVhbGx5LCBkb24n
dCBkbworIyAgIHRoYXQsIHNpbmNlIHlvdSdsbCBqdXN0IGNyYXNoIHRoZSBhc3NlbWJsZXIuCisj
CisjIC0gQW4gImlmIiBpcyBhIGNvbmRpdGlvbmFsIG9uIHNldHRpbmdzLiBBbnkgaWRlbnRpZmll
ciBzdXBwbGllZCBpbiB0aGUKKyMgICBwcmVkaWNhdGUgb2YgYW4gImlmIiBpcyBhc3N1bWVkIHRv
IGJlIGEgI2RlZmluZSB0aGF0IGlzIGF2YWlsYWJsZQorIyAgIGR1cmluZyBjb2RlIGdlbi4gU28g
eW91IGNhbid0IHVzZSAiaWYiIGZvciBjb21wdXRhdGlvbiBpbiBhIG1hY3JvLCBidXQKKyMgICB5
b3UgY2FuIHVzZSBpdCB0byBzZWxlY3QgZGlmZmVyZW50IHBpZWNlcyBvZiBjb2RlIGZvciBkaWZm
ZXJlbnQKKyMgICBwbGF0Zm9ybXMuCisjCisjIC0gQXJndW1lbnRzIHRvIG1hY3JvcyBmb2xsb3cg
bGV4aWNhbCBzY29waW5nIHJhdGhlciB0aGFuIGR5bmFtaWMgc2NvcGluZy4KKyMgICBDb25zdCdz
IGFsc28gZm9sbG93IGxleGljYWwgc2NvcGluZyBhbmQgbWF5IG92ZXJyaWRlIChoaWRlKSBhcmd1
bWVudHMKKyMgICBvciBvdGhlciBjb25zdHMuIEFsbCB2YXJpYWJsZXMgKGFyZ3VtZW50cyBhbmQg
Y29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBvcGVyYW5kcy4gQWRkaXRpb25hbGx5LCBh
cmd1bWVudHMgKGJ1dCBub3QgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBtYWNyb3Mu
CisKKworIyBUaGVzZSBkZWNsYXJhdGlvbnMgbXVzdCBtYXRjaCBpbnRlcnByZXRlci9SZWdpc3Rl
ckZpbGUuaC4KK2NvbnN0IENhbGxGcmFtZUhlYWRlclNpemUgPSA0OAorY29uc3QgQXJndW1lbnRD
b3VudCA9IC00OAorY29uc3QgQ2FsbGVyRnJhbWUgPSAtNDAKK2NvbnN0IENhbGxlZSA9IC0zMgor
Y29uc3QgU2NvcGVDaGFpbiA9IC0yNAorY29uc3QgUmV0dXJuUEMgPSAtMTYKK2NvbnN0IENvZGVC
bG9jayA9IC04CisKK2NvbnN0IFRoaXNBcmd1bWVudE9mZnNldCA9IC1DYWxsRnJhbWVIZWFkZXJT
aXplIC0gOAorCisjIERlY2xhcmUgc29tZSBhbGlhc2VzIGZvciB0aGUgcmVnaXN0ZXJzIHdlIHdp
bGwgdXNlLgorY29uc3QgUEMgPSB0NAorCisjIE9mZnNldHMgbmVlZGVkIGZvciByZWFzb25pbmcg
YWJvdXQgdmFsdWUgcmVwcmVzZW50YXRpb24uCitpZiBCSUdfRU5ESUFOCisgICAgY29uc3QgVGFn
T2Zmc2V0ID0gMAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSA0CitlbHNlCisgICAgY29uc3Qg
VGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSAwCitlbmQKKworIyBWYWx1
ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCitjb25zdCBJbnQzMlRhZyA9IC0xCitjb25zdCBC
b29sZWFuVGFnID0gLTIKK2NvbnN0IE51bGxUYWcgPSAtMworY29uc3QgVW5kZWZpbmVkVGFnID0g
LTQKK2NvbnN0IENlbGxUYWcgPSAtNQorY29uc3QgRW1wdHlWYWx1ZVRhZyA9IC02Citjb25zdCBE
ZWxldGVkVmFsdWVUYWcgPSAtNworY29uc3QgTG93ZXN0VGFnID0gRGVsZXRlZFZhbHVlVGFnCisK
KyMgVHlwZSBjb25zdGFudHMuCitjb25zdCBTdHJpbmdUeXBlID0gNQorY29uc3QgT2JqZWN0VHlw
ZSA9IDEwCisKKyMgVHlwZSBmbGFncyBjb25zdGFudHMuCitjb25zdCBNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkID0gMQorY29uc3QgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMgorY29uc3QgSW1wbGVt
ZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDgKKworIyBIZWFwIGFsbG9jYXRpb24gY29uc3RhbnRz
LgorY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0gMworCisjIEJ5dGVjb2RlIG9w
ZXJhbmQgY29uc3RhbnRzLgorY29uc3QgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQw
MDAwMDAwCisKKyMgQ29kZSB0eXBlIGNvbnN0YW50cy4KK2NvbnN0IEdsb2JhbENvZGUgPSAwCitj
b25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0IEZ1bmN0aW9uQ29kZSA9IDIKKworIyBUaGUgaW50ZXJw
cmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0aGUgYXJndW1lbnQgY291bnQuCitjb25zdCBM
TEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRhZ09mZnNldAorCisjIFRoaXMgbXVzdCBt
YXRjaCB3dGYvVmVjdG9yLmguCitjb25zdCBWZWN0b3JTaXplT2Zmc2V0ID0gMAorY29uc3QgVmVj
dG9yQnVmZmVyT2Zmc2V0ID0gNAorCisjIFN0cmluZyBmbGFncy4KK2NvbnN0IEhhc2hGbGFnczhC
aXRCdWZmZXIgPSA2NAorCisjIFV0aWxpdGllcworbWFjcm8gY3Jhc2goKQorICAgIHN0b3JlaSAw
LCAweGJiYWRiZWVmW10KKyAgICBtb3ZlIDAsIHQwCisgICAgY2FsbCB0MAorZW5kCisKK21hY3Jv
IGFzc2VydChhc3NlcnRpb24pCisgICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgYXNzZXJ0
aW9uKC5vaykKKyAgICAgICAgY3Jhc2goKQorICAgIC5vazoKKyAgICBlbmQKK2VuZAorCittYWNy
byBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVzdGluYXRpb25SZWdpc3RlcikKKyAg
ICBpZiBBUk12NworICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxz
aWYgWDg2CisgICAgICAgIHBvcCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzZQorICAgICAg
ICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3Jl
UmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgc291cmNl
UmVnaXN0ZXIsIGxyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHB1c2ggc291cmNlUmVnaXN0ZXIK
KyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKworbWFjcm8gZGlzcGF0Y2go
YWR2YW5jZSkKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQworICAgIGptcCBbUENdCitlbmQKKwor
bWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHBjT2Zmc2V0KQorICAgIGxzaGlmdGkgMiwg
cGNPZmZzZXQKKyAgICBhZGRwIHBjT2Zmc2V0LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFj
cm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZzZXQpCisgICAgbG9hZGkgcGNPZmZzZXQsIHQwCisgICAg
ZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQwKQorZW5kCisKK21hY3JvIGRpc3BhdGNoQWZ0ZXJD
YWxsKCkKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAg
am1wIFtQQ10KK2VuZAorCittYWNybyBjQ2FsbDIoZnVuY3Rpb24sIGFyZzEsIGFyZzIpCisgICAg
aWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisg
ICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAorICAgICAgICBwb2tlIGFyZzIsIDEK
KyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5k
CisKKyMgVGhpcyBiYXJlbHkgd29ya3MuIGFyZzMgYW5kIGFyZzQgc2hvdWxkIHByb2JhYmx5IGJl
IGltbWVkaWF0ZXMuCittYWNybyBjQ2FsbDQoZnVuY3Rpb24sIGFyZzEsIGFyZzIsIGFyZzMsIGFy
ZzQpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFy
ZzIsIHQxCisgICAgICAgIG1vdmUgYXJnMywgdDIKKyAgICAgICAgbW92ZSBhcmc0LCB0MworICAg
IGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisg
ICAgICAgIHBva2UgYXJnMywgMgorICAgICAgICBwb2tlIGFyZzQsIDMKKyAgICBlbHNlCisgICAg
ICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5kCisKK21hY3JvIGNhbGxI
ZWxwZXIoaGVscGVyKQorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MCwg
UEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91
J2QgbGlrZSB0byBwcmludCBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uIGZy
b21XaGVyZQorIyBzaG91bGQgYmUgYW4gaW1tZWRpYXRlIGludGVnZXIgLSBhbnkgaW50ZWdlciB5
b3UgbGlrZTsgdXNlIGl0IHRvIGlkZW50aWZ5IHRoZSBwbGFjZSB5b3UncmUKKyMgZGVidWdnaW5n
IGZyb20uIG9wZXJhbmQgc2hvdWxkIGxpa2V3aXNlIGJlIGFuIGltbWVkaWF0ZSwgYW5kIHNob3Vs
ZCBpZGVudGlmeSB0aGUgb3BlcmFuZAorIyBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtIHlvdSdk
IGxpa2UgdG8gcHJpbnQgb3V0LgorbWFjcm8gdHJhY2VPcGVyYW5kKGZyb21XaGVyZSwgb3BlcmFu
ZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX29wZXJhbmQsIGNmciwgUEMsIGZyb21XaGVyZSwg
b3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKKyMgRGVi
dWdnaW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBsaWtlIHRvIHByaW50IHRoZSB2YWx1ZSBvZiBhbiBv
cGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbgorIyBzdHJlYW0uIFNhbWUgYXMgdHJhY2VPcGVyYW5k
KCksIGJ1dCBhc3N1bWVzIHRoYXQgdGhlIG9wZXJhbmQgaXMgYSByZWdpc3RlciwgYW5kIHByaW50
cyBpdHMKKyMgdmFsdWUuCittYWNybyB0cmFjZVZhbHVlKGZyb21XaGVyZSwgb3BlcmFuZCkKKyAg
ICBjQ2FsbDQoX2xsaW50X3RyYWNlX3ZhbHVlLCBjZnIsIFBDLCBmcm9tV2hlcmUsIG9wZXJhbmQp
CisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCittYWNybyB0cmFjZUV4
ZWN1dGlvbigpCisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcKKyAgICAgICAgY2FsbEhlbHBlcihf
bGxpbnRfdHJhY2UpCisgICAgZW5kCitlbmQKKworIyBDYWxsIGEgaGVscGVyIGZvciBjYWxsIG9w
Y29kZXMuCittYWNybyBjYWxsQ2FsbEhlbHBlcihhZHZhbmNlLCBoZWxwZXIsIGFjdGlvbikKKyAg
ICBhZGRwIGFkdmFuY2UgKiA0LCBQQywgdDAKKyAgICBzdG9yZXAgdDAsIEFyZ3VtZW50Q291bnQg
KyBUYWdPZmZzZXRbY2ZyXQorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0
MSwgY2ZyCisgICAgYWN0aW9uKHQwKQorZW5kCisKK21hY3JvIHNsb3dQYXRoRm9yQ2FsbChhZHZh
bmNlLCBoZWxwZXIpCisgICAgY2FsbENhbGxIZWxwZXIoCisgICAgICAgIGFkdmFuY2UsCisgICAg
ICAgIGhlbHBlciwKKyAgICAgICAgbWFjcm8gKGNhbGxlZSkKKyAgICAgICAgICAgIGNhbGwgY2Fs
bGVlCisgICAgICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAgICAgIGVuZCkKK2VuZAor
CittYWNybyBjaGVja1N3aXRjaFRvSklUKGluY3JlbWVudCwgYWN0aW9uKQorICAgIGlmIEpJVF9F
TkFCTEVECisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgICAgICBiYWRkaXMg
aW5jcmVtZW50LCBDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRlclt0MF0sIC5jb250aW51
ZQorICAgICAgICBhY3Rpb24oKQorICAgIC5jb250aW51ZToKKyAgICBlbmQKK2VuZAorCittYWNy
byBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAg
ICAgMSwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRD
b3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgICAgICAgICBjQ2FsbDIoX2xsaW50X2xvb3Bfb3Ny
LCBjZnIsIFBDKQorICAgICAgICAgICAgbW92ZSB0MSwgY2ZyCisgICAgICAgICAgICBidHB6IHQw
LCAucmVjb3ZlcgorICAgICAgICAgICAgam1wIHQwCisgICAgICAgIC5yZWNvdmVyOgorICAgICAg
ICAgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgICAgICBl
bmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBjaGVj
a1N3aXRjaFRvSklUKAorICAgICAgICAxMCwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAg
IGNhbGxIZWxwZXIoX2xsaW50X3JlcGxhY2UpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBh
c3NlcnROb3RDb25zdGFudChpbmRleCkKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWx0IGluZGV4
LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgb2sgZW5kKQorZW5kCisKKyMgSW5kZXgsIHRh
ZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QK
KyMgY2hhbmdlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUoaW5kZXgsIHRhZywgcGF5
bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29u
c3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5j
b25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2Fk
XSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5k
ZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAj
IHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxvYWRwIFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwg
OF0sIHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXls
b2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4IGFuZCBwYXlsb2FkIG1heSBiZSB0aGUgc2FtZSBy
ZWdpc3Rlci4gSW5kZXggbWF5IGJlIGNsb2JiZXJlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBw
YXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHRhZworICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFt0YWddLCB0YWcKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVy
ZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsc2hpZnRpIDMsIGluZGV4Cisg
ICAgYWRkcCBpbmRleCwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFt0YWddLCBwYXlsb2Fk
CisgICAgbG9hZHAgVGFnT2Zmc2V0W3RhZ10sIHRhZworLmRvbmU6CitlbmQKKworbWFjcm8gbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oaW5kZXgsIHRhZ0NoZWNrLCBwYXls
b2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25z
dGFudAorICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSkKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29u
c3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0s
IHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4
IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0
aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCkgPDwgMy4KKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgs
IDhdKQorICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2Fk
CisuZG9uZToKK2VuZAorCisjIEluZGV4IGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJl
Z2lzdGVycy4gSW5kZXggaXMgbm90IG11dGF0ZWQuIFVzZQorIyB0aGlzIGlmIHlvdSBrbm93IHdo
YXQgdGhlIHRhZyBvZiB0aGUgdmFyaWFibGUgc2hvdWxkIGJlLiBEb2luZyB0aGUgdGFnCisjIHRl
c3QgYXMgcGFydCBvZiBsb2FkaW5nIHRoZSB2YXJpYWJsZSByZWR1Y2VzIHJlZ2lzdGVyIHVzZSwg
YnV0IG1heSBub3QKKyMgYmUgZmFzdGVyIHRoYW4gZG9pbmcgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSBmb2xsb3dlZCBieSBhIGJyYW5jaCBvbiB0aGUKKyMgdGFnLgorbWFjcm8gbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBwYXlsb2FkLCBzbG93KQorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKAorICAgICAgICBpbmRleCwK
KyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykgYmluZXEgYWN0dWFsVGFnLCBleHBlY3RlZFRhZywg
c2xvdyBlbmQsCisgICAgICAgIHBheWxvYWQpCitlbmQKKworbWFjcm8gbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRVbmNoZWNrZWQoaW5kZXgsIHBheWxvYWQpCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCisgICAgICAgIGluZGV4LAorICAgICAgICBtYWNy
byAoYWN0dWFsVGFnKSBlbmQsCisgICAgICAgIHBheWxvYWQpCitlbmQKKworbWFjcm8gd3JpdGVC
YXJyaWVyKHRhZywgcGF5bG9hZCkKKyAgICAjIE5vdGhpbmcgdG8gZG8sIHNpbmNlIHdlIGRvbid0
IGhhdmUgYSBnZW5lcmF0aW9uYWwgb3IgaW5jcmVtZW50YWwgY29sbGVjdG9yLgorZW5kCisKK21h
Y3JvIHZhbHVlUHJvZmlsZSh0YWcsIHBheWxvYWQsIHByb2ZpbGUpCisgICAgc3RvcmVpIHRhZywg
VmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbcHJvZmlsZV0KKyAgICBzdG9yZWkg
cGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3Byb2ZpbGVd
CitlbmQKKworCisjIEluZGljYXRlIHRoZSBiZWdpbm5pbmcgb2YgTExJbnQuCitfbGxpbnRfYmVn
aW46CisgICAgY3Jhc2goKQorCisKKyMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIK
KworbWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQor
ICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rp
b246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9h
ZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGxbdGFyZ2V0UmVnaXN0ZXJd
LCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJs
b2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRS
ZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rl
cl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVC
bG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKwor
bWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25D
b2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCisgICAgc3RvcmVwIHNvdXJjZVJlZ2lzdGVy
LCBDb2RlQmxvY2tbY2ZyXQorZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVy
KHNvdXJjZVJlZ2lzdGVyKQorICAgICMgTm90aGluZyB0byBkbyEKK2VuZAorCisjIERvIHRoZSBi
YXJlIG1pbmltdW0gcmVxdWlyZWQgdG8gZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVh
dmUgdGhlIENvZGVCbG9jayoKKyMgaW4gdDEuIE1heSBhbHNvIHRyaWdnZXIgcHJvbG9ndWUgZW50
cnkgT1NSLgorbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIs
IG9zckhlbHBlciwgdHJhY2VIZWxwZXIpCisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJD
YWxsKHQyKQorICAgIAorICAgICMgU2V0IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3
ZSBzaG91bGQgT1NSLgorICAgIHN0b3JlcCB0MiwgUmV0dXJuUENbY2ZyXQorICAgIGlmIEVYRUNV
VElPTl9UUkFDSU5HCisgICAgICAgIGNhbGxIZWxwZXIodHJhY2VIZWxwZXIpCisgICAgZW5kCisg
ICAgY29kZUJsb2NrR2V0dGVyKHQxKQorICAgIGlmIEpJVF9FTkFCTEVECisgICAgICAgIGJhZGRp
cyA1LCBDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRlclt0MV0sIC5jb250aW51ZQorICAg
ICAgICBjQ2FsbDIob3NySGVscGVyLCBjZnIsIFBDKQorICAgICAgICBtb3ZlIHQxLCBjZnIKKyAg
ICAgICAgYnRweiB0MCwgLnJlY292ZXIKKyAgICAgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIK
KyAgICAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4odDIpCisgICAgICAgIGpt
cCB0MAorICAgIC5yZWNvdmVyOgorICAgICAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCisgICAgLmNv
bnRpbnVlOgorICAgIGVuZAorICAgIGNvZGVCbG9ja1NldHRlcih0MSkKKyAgICAKKyAgICAjIFNl
dCB1cCB0aGUgUEMuCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIHQw
CisgICAgbG9hZHAgQ29kZUJsb2NrOjpJbnN0cnVjdGlvbnM6Om1faW5zdHJ1Y3Rpb25zICsgVmVj
dG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKK2VuZAorCisjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sg
aXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgorIyBNdXN0
IGNhbGwgZGlzcGF0Y2goMCkgYWZ0ZXIgY2FsbGluZyB0aGlzLgorbWFjcm8gZnVuY3Rpb25Jbml0
aWFsaXphdGlvbihwcm9maWxlQXJnU2tpcCkKKyAgICAjIFByb2ZpbGUgdGhlIGFyZ3VtZW50cy4g
VW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBubyBjaG9pY2UgYnV0IHRvIGRvIHRoaXMuIFRoaXMKKyAg
ICAjIGNvZGUgaXMgcHJldHR5IGhvcnJlbmRvdXMgYmVjYXVzZSBvZiB0aGUgZGlmZmVyZW5jZSBp
biBvcmRlcmluZyBiZXR3ZWVuCisgICAgIyBhcmd1bWVudHMgYW5kIHZhbHVlIHByb2ZpbGVzLCB0
aGUgZGVzaXJlIHRvIGhhdmUgYSBzaW1wbGUgbG9vcC1kb3duLXRvLXplcm8KKyAgICAjIGxvb3As
IGFuZCB0aGUgZGVzaXJlIHRvIHVzZSBvbmx5IHRocmVlIHJlZ2lzdGVycyBzbyBhcyB0byBwcmVz
ZXJ2ZSB0aGUgUEMgYW5kCisgICAgIyB0aGUgY29kZSBibG9jay4gSXQgaXMgbGlrZWx5IHRoYXQg
dGhpcyBjb2RlIHNob3VsZCBiZSByZXdyaXR0ZW4gaW4gYSBtb3JlCisgICAgIyBvcHRpbWFsIHdh
eSBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGhhdmUgbW9yZSB0aGFuIGZpdmUgcmVnaXN0ZXJzIGF2
YWlsYWJsZQorICAgICMgZm9yIGFyYml0cmFyeSB1c2UgaW4gdGhlIGludGVycHJldGVyLgorICAg
IGxvYWRpIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgdDAKKyAgICBhZGRpIC1wcm9m
aWxlQXJnU2tpcCwgdDAgIyBVc2UgYWRkaSBiZWNhdXNlIHRoYXQncyB3aGF0IGhhcyB0aGUgcGVl
cGhvbGUKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWd0ZXEgdDAsIDAsIG9rIGVuZCkKKyAgICBi
dGl6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9uZQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9hcmd1
bWVudFZhbHVlUHJvZmlsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDFdLCB0MworICAgIG11bGkg
c2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDAsIHQyICMgQWFhYWFoaGhoISBOZWVkIHN0cmVuZ3RoIHJl
ZHVjdGlvbiEKKyAgICBuZWdpIHQwCisgICAgbHNoaWZ0aSAzLCB0MAorICAgIGFkZHAgdDIsIHQz
CisuYXJndW1lbnRQcm9maWxlTG9vcDoKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBU
YWdPZmZzZXQgKyA4IC0gcHJvZmlsZUFyZ1NraXAgKiA4W2NmciwgdDBdLCB0MgorICAgIHN1YnAg
c2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDMKKyAgICBzdG9yZWkgdDIsIHByb2ZpbGVBcmdTa2lwICog
c2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0
W3QzXQorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXQgKyA4IC0g
cHJvZmlsZUFyZ1NraXAgKiA4W2NmciwgdDBdLCB0MgorICAgIHN0b3JlaSB0MiwgcHJvZmlsZUFy
Z1NraXAgKiBzaXplb2YgVmFsdWVQcm9maWxlICsgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQ
YXlsb2FkT2Zmc2V0W3QzXQorICAgIGJhZGRpbnogOCwgdDAsIC5hcmd1bWVudFByb2ZpbGVMb29w
CisuYXJndW1lbnRQcm9maWxlRG9uZToKKyAgICAKKyAgICAjIENoZWNrIHN0YWNrIGhlaWdodC4K
KyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVnaXN0ZXJzW3QxXSwgdDAKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQyCisgICAgbG9hZHAgSlNHbG9iYWxE
YXRhOjppbnRlcnByZXRlclt0Ml0sIHQyICAgIyBGSVhNRTogQ2FuIGdldCB0byB0aGUgUmVnaXN0
ZXJGaWxlIGZyb20gdGhlIEpJVFN0YWNrRnJhbWUKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRk
cCB0MCwgY2ZyLCB0MAorICAgIGJwYWVxIEludGVycHJldGVyOjptX3JlZ2lzdGVyRmlsZSArIFJl
Z2lzdGVyRmlsZTo6bV9lbmRbdDJdLCB0MCwgLnN0YWNrSGVpZ2h0T0sKKworICAgICMgU3RhY2sg
aGVpZ2h0IGNoZWNrIGZhaWxlZCAtIG5lZWQgdG8gY2FsbCBhIGhlbHBlci4KKyAgICBjYWxsSGVs
cGVyKF9sbGludF9yZWdpc3Rlcl9maWxlX2NoZWNrKQorLnN0YWNrSGVpZ2h0T0s6CitlbmQKKwor
IyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3Vl
KCkgbGVhdmVzIGJlaGluZC4KK21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIGhl
bHBlcikKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAor
ICAgIGJpYWVxIHQwLCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJlbAor
ICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpICAgIyBUaGlzIGhlbHBlciBoYXMgYSBzaW1wbGUg
cHJvdG9jb2w6IHQwID0gMCA9PiBubyBlcnJvciwgdDAgIT0gMCA9PiBlcnJvcgorICAgIG1vdmUg
dDEsIGNmcgorICAgIGJ0aXogdDAsIC5jb250aW51ZQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6
Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9y
VGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRo
cm93W3QxXQorLmNvbnRpbnVlOgorICAgICMgUmVsb2FkIENvZGVCbG9jayBhbmQgUEMsIHNpbmNl
IHRoZSBoZWxwZXIgY2xvYmJlcmVkIGl0LgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENv
ZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNl
dFt0MF0sIFBDCisgICAgam1wIGRvbmVMYWJlbAorZW5kCisKK19sbGludF9wcm9ncmFtX3Byb2xv
Z3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlv
bkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3Vl
KQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2V2YWxfcHJvbG9ndWU6CisgICAgcHJvbG9n
dWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVy
LCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2go
MCkKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUo
ZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwg
X2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCwgX2xsaW50X3RyYWNlX3Byb2xvZ3Vl
X2Z1bmN0aW9uX2Zvcl9jYWxsKQorLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luOgorICAgIGZ1bmN0aW9u
SW5pdGlhbGl6YXRpb24oMCkKKyAgICBkaXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0
cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3QpCisuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbjoKKyAgICBmdW5j
dGlvbkluaXRpYWxpemF0aW9uKDEpCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1
bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2Fs
bENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9v
c3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tf
Zm9yX2NhbGwpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwg
X2xsaW50X2hlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RD
b2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3Ny
X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hl
Y2tfZm9yX2NvbnN0cnVjdCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29u
c3RydWN0QmVnaW4sIF9sbGludF9oZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spCisKKyMgSW5z
dHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25zCisKK19sbGludF9vcF9lbnRlcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZGkgQ29kZUJs
b2NrOjptX251bVZhcnNbdDJdLCB0MgorICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZQorICAgIG1v
dmUgVW5kZWZpbmVkVGFnLCB0MAorICAgIG1vdmUgMCwgdDEKKy5vcEVudGVyTG9vcDoKKyAgICBz
dWJpIDEsIHQyCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9y
ZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBidGlueiB0MiwgLm9wRW50ZXJM
b29wCisub3BFbnRlckRvbmU6CisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfY3JlYXRl
X2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRl
QWN0aXZhdGlvbkRvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FjdGl2
YXRpb24pCisub3BDcmVhdGVBY3RpdmF0aW9uRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19s
bGludF9vcF9pbml0X2xhenlfcmVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgc3RvcmVpIDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgy
KQorCisKK19sbGludF9vcF9jcmVhdGVfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVt
cHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUKKyAgICBjYWxsSGVscGVyKF9sbGlu
dF9oZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKKy5vcENyZWF0ZUFyZ3VtZW50c0RvbmU6CisgICAg
ZGlzcGF0Y2goMikKKworCittYWNybyBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5k
ZXgsIGNsYXNzSW5mb09mZnNldCwgc3RydWN0dXJlLCByZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNo
Miwgc2xvd0Nhc2UpCisgICAgaWYgQUxXQVlTX0FMTE9DQVRFX1NMT1cKKyAgICAgICAgam1wIHNs
b3dDYXNlCisgICAgZWxzZQorICAgICAgICBjb25zdCBvZmZzZXRPZk15U2l6ZUNsYXNzID0gSlNH
bG9iYWxEYXRhOjpoZWFwICsgSGVhcDo6bV9vYmplY3RTcGFjZSArIE1hcmtlZFNwYWNlOjptX3By
ZWNpc2VTaXplQ2xhc3NlcyArIHNpemVDbGFzc0luZGV4ICogc2l6ZW9mIE1hcmtlZFNwYWNlOjpT
aXplQ2xhc3MKKyAgICAgICAgCisgICAgICAgICMgRklYTUU6IHdlIGNhbiBnZXQgdGhlIGdsb2Jh
bCBkYXRhIGluIG9uZSBsb2FkIGZyb20gdGhlIHN0YWNrLgorICAgICAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgc2NyYXRjaDEKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFb
c2NyYXRjaDFdLCBzY3JhdGNoMQorICAgICAgICAKKyAgICAgICAgIyBHZXQgdGhlIG9iamVjdCBm
cm9tIHRoZSBmcmVlIGxpc3QuICAgIAorICAgICAgICBsb2FkcCBvZmZzZXRPZk15U2l6ZUNsYXNz
ICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0sIHJlc3Vs
dAorICAgICAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UKKyAgICAgICAgCisgICAgICAgICMgUmVt
b3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LgorICAgICAgICBsb2FkcCBbcmVzdWx0
XSwgc2NyYXRjaDIKKyAgICAgICAgc3RvcmVwIHNjcmF0Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNz
ICsgTWFya2VkU3BhY2U6OlNpemVDbGFzczo6Zmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0KKyAgICAK
KyAgICAgICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgICAgIGxvYWRwIGNsYXNzSW5m
b09mZnNldFtzY3JhdGNoMV0sIHNjcmF0Y2gyCisgICAgICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jl
c3VsdF0KKyAgICAgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1
bHRdCisgICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCisg
ICAgICAgIGFkZHAgc2l6ZW9mIEpTT2JqZWN0LCByZXN1bHQsIHNjcmF0Y2gxCisgICAgICAgIHN0
b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KKyAgICBl
bmQKK2VuZAorCitfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVx
IFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5m
bzo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkcCBK
U09iamVjdDo6bV9pbmhlcml0b3JJRFt0MF0sIHQyCisgICAgYnRweiB0MiwgLm9wQ3JlYXRlVGhp
c1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0lu
ZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIHQyLCB0MCwgdDEsIHQz
LCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2Vs
bFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wQ3JlYXRlVGhpc1Nsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV90aGlzKQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRPZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEKKyAg
ICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3Bf
Y29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRUaGlz
U2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Nsb3cK
KyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9v
cF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAg
ICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQxCisg
ICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNH
bG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3
T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFn
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3T2JqZWN0U2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9v
cF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2Fy
cmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX25ld19hcnJheV9idWZmZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
bmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX25ld19yZWdleHApCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbW92Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgc3RvcmVp
IHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9ub3Q6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBiaW5lcSB0MiwgQm9v
bGVhblRhZywgLm9wTm90U2xvdworICAgIHhvcmkgMSwgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4
XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9lcToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93Cisg
ICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5v
cEVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpZXEgdDAsIHQxLCB0MAorICAgIHN0
b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BFcVNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2VxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX2VxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0
MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxv
YWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BFcU51bGxJbW1lZGlhdGUK
KyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0Ym56IFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCwgdDEKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlCisub3BFcU51bGxJbW1lZGlh
dGU6CisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaWVxIHQxLCBVbmRlZmluZWRUYWcs
IHQxCisgICAgb3JpIHQyLCB0MQorLm9wRXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBC
b29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZXE6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcE5l
cVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFTbG93CisgICAgYmliIHQyLCBMb3dl
c3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaW5lcSB0MCwgdDEs
IHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5v
cE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lcSkKKyAgICBkaXNwYXRj
aCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENv
bnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
b3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQx
CisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwg
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wTmVxTnVsbE5vdEltbWVkaWF0
ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBjaW5lcSB0MSwgTnVsbFRhZywgdDIKKyAgICBj
aW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIGFuZGkgdDIsIHQxCisub3BOZXFOdWxsTm90
SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0K
KyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgz
KQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9h
ZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIs
IHQwKQorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLnNs
b3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmluZworICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0
MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJd
LCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cKKy5ub3RTdHJpbmc6Cisg
ICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkKKyAg
ICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6Cisg
ICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRfb3Bf
c3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0
LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVs
cGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0
LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9uc3RyaWN0ZXEpCisKKworX2xsaW50
X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xlc3NlcToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3NlcSkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcikKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlSW5j
U2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYmFkZGlv
IDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5jU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9w
cmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVEZWNTbG93CisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBic3ViaW8gMSwgdDEsIC5v
cFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Bvc3RfaW5jOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0
SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBiYWRkaW8gMSwg
dDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNEb25lOgorICAgIGRp
c3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9wb3N0X2RlYzoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10s
IHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdERl
Y1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYnN1YmlvIDEsIHQz
LCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVp
IHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0RGVjRG9uZToKKyAgICBkaXNw
YXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdG9fanNudW1iZXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENd
LCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBiaWVxIHQy
LCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklzSW50CisgICAgYmlhZXEgdDIsIEVtcHR5VmFsdWVU
YWcsIC5vcFRvSnNudW1iZXJTbG93Cisub3BUb0pzbnVtYmVySXNJbnQ6CisgICAgc3RvcmVpIHQy
LCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb0pzbnVtYmVyU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfdG9fanNudW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0
MSwgdDIpCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BOZWdhdGVTcmNOb3RJbnQKKyAgICBi
dGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CisgICAgbmVnaSB0MgorICAgIHN0b3Jl
aSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKy5vcE5lZ2F0ZVNyY05vdEludDoK
KyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xvdworICAgIHhvcmkgMHg4MDAwMDAw
MCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0
MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5lZ2F0
ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lZ2F0ZSkKKyAgICBkaXNwYXRj
aCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0
b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIs
IEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDMsIEludDMyVGFnLCAub3AyTm90SW50
CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHQzLCB0
MSwgdDAsIC5zbG93LCB0MikKKyAgICBkaXNwYXRjaCg1KQorCisub3AxTm90SW50OgorICAgICMg
Rmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFu
ZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBi
aWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQzLCBJbnQz
MlRhZywgLnNsb3cKKyAgICBjaTJkIHQxLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisu
b3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQxLCB0MywgZnQxCisub3AxTm90SW50UmVh
ZHk6CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgZmlpMmQgdDAsIHQyLCBmdDAKKyAgICBkb3Vi
bGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDEsIDhdCisgICAg
ZGlzcGF0Y2goNSkKKworLm9wMk5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5p
dGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNsb3cKKyAgICBjaTJkIHQw
LCBmdDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0
MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisuc2xv
dzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCg1KQorZW5kCisKK21hY3Jv
IGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorICAg
IGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmln
aHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgaW50ZWdlck9wZXJhdGlvbihsZWZ0LCByaWdo
dCwgc2xvdykKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5k
ZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKK2Vu
ZAorCitfbGxpbnRfb3BfYWRkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNs
b3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2FkZCkKKworCitfbGxpbnRfb3BfbXVsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAo
aW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGNvbnN0IHNj
cmF0Y2ggPSBpbnQzMlRhZyAgICMgV2Uga25vdyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgaW50MzJU
YWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEgY29uc3RhbnQuCisgICAgICAgICAgICBtb3ZlIHJp
Z2h0LCBzY3JhdGNoCisgICAgICAgICAgICBibXVsaW8gbGVmdCwgc2NyYXRjaCwgc2xvdworICAg
ICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRvbmUKKyAgICAgICAgICAgIGJpbHQgbGVmdCwgMCwg
c2xvdworICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdworICAgICAgICAuZG9uZToKKyAg
ICAgICAgICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAg
ICAgICAgICBzdG9yZWkgc2NyYXRjaCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAg
ICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbXVsKQorCisKK19sbGludF9vcF9zdWI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
c3ViKQorCisKK19sbGludF9vcF9kaXY6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFy
eU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNs
b3csIGluZGV4KQorICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQg
cmlnaHQsIGZ0MQorICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkg
ZnQxLCByaWdodCwgLm5vdEludAorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZz
ZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNl
dFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6
CisgICAgICAgICAgICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6
CisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJp
Z2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9kaXYpCisKKworX2xsaW50X29wX21vZDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkK
KyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGJpdE9wKG9wZXJhdGlvbiwgaGVscGVyLCBhZHZh
bmNlKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgYmlu
ZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIG9wZXJhdGlv
bih0MSwgdDAsIC5zbG93KQorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goYWR2
YW5jZSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goYWR2
YW5jZSkKK2VuZAorCitfbGxpbnRfb3BfbHNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBsc2hpZnRpIGxlZnQs
IHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9sc2hpZnQsCisgICAgICAgIDQpCisK
KworX2xsaW50X29wX3JzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgcnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfcnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9v
cF91cnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQK
KyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX3Vyc2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX2JpdGFuZDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgc2xvdykgYW5kaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
Yml0YW5kLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXR4b3I6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhv
cmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdHhvciwKKyAgICAg
ICAgNSkKKworCitfbGxpbnRfb3BfYml0b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJp
dE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIG9yaSBsZWZ0LCByaWdodCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0b3IsCisgICAgICAgIDUpCisKKworX2xsaW50
X29wX2JpdG5vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQz
KQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wQml0bm90U2xvdworICAgIG5vdGkgdDMKKyAg
ICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2JpdG5vdCkKKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBD
ZWxsVGFnLCB0MCwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0
YW5jZVNsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQorICAgIGRpc3Bh
dGNoKDIpCisKKworX2xsaW50X29wX2luc3RhbmNlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFu
Y2UgYmVoYXZpb3IuCisgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVwcmVjYXRlZC4KKyAg
ICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNo
ZWNrZWQodDEsIHQwKQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAg
IGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIAorICAgICMg
QWN0dWFsbHkgZG8gdGhlIHdvcmsuCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGxvYWRpIDRb
UENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0
MSwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0s
IHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJd
LCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFu
Y2VvZlNsb3cpCisgICAgCisgICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQy
ID0gdmFsdWUKKyAgICBtb3ZlIDEsIHQwCisub3BJbnN0YW5jZW9mTG9vcDoKKyAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90
eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNl
b2ZEb25lCisgICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQw
Cisub3BJbnN0YW5jZW9mRG9uZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
ZGlzcGF0Y2goNSkKKworLm9wSW5zdGFuY2VvZlNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2luc3RhbmNlb2YpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfdHlwZW9m
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdHlw
ZW9mKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3VuZGVmaW5l
ZCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfYm9vbGVhbikKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19udW1iZXI6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19udW1iZXIpCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfaXNfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX2lzX29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2lzX29iamVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9pc19mdW5jdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2lzX2Z1bmN0aW9uKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X2luOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
aW4pCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9za2lwKQorICAgIGRpc3Bh
dGNoKDUpCisKKworbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQorICAgICMgT3BlcmFu
ZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9h
ZC4KKyAgICAjIDhbUENdICAgUHJvcGVydHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBi
bG9jay4KKyAgICAjIDEyW1BDXSAgU3RydWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAg
YnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9i
amVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0
MF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYnBuZXEg
dDEsIDEyW1BDXSwgc2xvdworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVj
dDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEs
IDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2Fk
aSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0
b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGxvYWRpIChzaXplIC0gMSkg
KiA0W1BDXSwgdDAKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQzLCB0MCkKK2VuZAorCitfbGxpbnRf
b3BfcmVzb2x2ZV9nbG9iYWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHJlc29sdmVHbG9i
YWwoNiwgLm9wUmVzb2x2ZUdsb2JhbFNsb3cpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2
ZUdsb2JhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFs
KQorICAgIGRpc3BhdGNoKDYpCisKKworIyBHaXZlcyB5b3UgdGhlIHNjb3BlIGluIHQwLCB3aGls
ZSBhbGxvd2luZyB5b3UgdG8gb3B0aW9uYWxseSBwZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9u
IHRoZQorIyBzY29wZXMgYXMgdGhleSBhcmUgdHJhdmVyc2VkLiBzY29wZUNoZWNrKCkgaXMgY2Fs
bGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHJlZ2lzdGVyCisjIGhvbGRpbmcgdGhlIHNjb3Bl
LCBhbmQgYSByZWdpc3RlciB0aGF0IGNhbiBiZSB1c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRoYXQg
dGhpcyBkb2VzIG5vdAorIyB1c2UgdDMsIHNvIHlvdSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBpZiBu
ZWVkIGJlLgorbWFjcm8gZ2V0U2NvcGUoZGVCcnVpamluSW5kZXhPcGVyYW5kLCBzY29wZUNoZWNr
KQorICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9h
ZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisg
ICAgCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgYmluZXEgQ29kZUJsb2NrOjpt
X2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAubG9vcAorICAgIGJ0YnogQ29kZUJsb2NrOjpt
X25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9vcAorICAgIAorICAgIGxvYWRpIENvZGVCbG9j
azo6bV9hY3RpdmF0aW9uUmVnaXN0ZXJbdDFdLCB0MQorCisgICAgIyBOZWVkIHRvIGNvbmRpdGlv
bmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4
XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlvbgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQor
ICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKy5ub0FjdGl2YXRpb246Cisg
ICAgc3ViaSAxLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisubG9vcDoKKyAgICBzY29w
ZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisg
ICAgc3ViaSAxLCB0MgorICAgIGJ0aW56IHQyLCAubG9vcAorCisuZG9uZToKK2VuZAorCitfbGxp
bnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZHAgSlNHbG9i
YWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJlW3QzXSwgdDMKKyAgICBnZXRTY29wZSgKKyAgICAg
ICAgMjBbUENdLAorICAgICAgICBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpCisgICAgICAgICAgICBs
b2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3Njb3BlXSwgc2NyYXRjaAorICAgICAgICAgICAg
YnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVtzY3JhdGNoXSwgdDMsIC5vcFJlc29sdmVHbG9iYWxE
eW5hbWljU3VwZXJTbG93CisgICAgICAgIGVuZCkKKyAgICByZXNvbHZlR2xvYmFsKDcsIC5vcFJl
c29sdmVHbG9iYWxEeW5hbWljU2xvdykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xv
YmFsRHluYW1pY1N1cGVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2
ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNv
bHZlR2xvYmFsRHluYW1pY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWMpCisgICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfZ2V0X3Nj
b3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZv
bGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhb
UENdICAgSW5kZXggb2YgcmVnaXN0ZXIgaW4gdGhlIHNjb3BlLgorICAgICMgMTJbUENdICBEZSBC
cnVpamluIGluZGV4LgorICAgIGdldFNjb3BlKDEyW1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNo
KSBlbmQpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9h
ZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9i
amVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhd
LCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkg
dDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQxLCA4XQorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICB2YWx1ZVByb2ZpbGUodDMsIHQw
LCB0MSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZ2V0U2NvcGUoOFtQQ10sIG1hY3JvIChzY29wZSwgc2Ny
YXRjaCkgZW5kKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQxLCB0MywgdDIpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQz
LCB0MikKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2Fk
cCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgc3RvcmVpIHQzLCBU
YWdPZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MCwgdDEs
IDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0
MworICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVy
c1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
bG9hZGkgMTJbUENdLCB0MworICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQzKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0ds
b2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDEsIHQyLCB0MykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDIs
IHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMs
IFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X3Jlc29sdmVfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3Jlc29sdmVfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9l
bnN1cmVfcHJvcGVydHlfZXhpc3RzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQorICAgIGRp
c3BhdGNoKDUpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMp
CisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcg
Zm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisgICAgIyBvcGNvZGUuIFdlIGRvLCBo
b3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBz
aW5jZQorICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFu
ZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKKyAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9u
IHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0
CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwg
dDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAgIGJw
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2Fk
aSAzMltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MiwgdDEpCisgICAgZGlzcGF0Y2go
OSkKKworLm9wR2V0QnlJZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9i
eV9pZCkKKyAgICBkaXNwYXRjaCg5KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0
aDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkg
NFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFn
LCAub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93CisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBh
eWxvYWRPZmZzZXRbY2ZyXSwgdDIKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIEludDMyVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQor
ICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3Jh
Z2VbdDBdLCB0MworICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0
QnlJZFNsb3cKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDIsIHQwLCB0MikKKyAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQorICAgIHN0b3JlaSB0
MCwgVGFnT2Zmc2V0W3QzLCB0MV0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQx
XQorICAgIGRpc3BhdGNoKDkpCisKKy5vcFB1dEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9wdXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOSkKKworCittYWNybyBwdXRCeUlk
VHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2Fk
aSAxMltQQ10sIHQyCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQ
dXRCeUlkU2xvdworICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykK
KyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9y
YWdlW3QwXSwgdDMKKyAgICBhZGRwIHQxLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnKHQyLCB0MSwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKKyAgICBzdG9yZWkgdDEs
IFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSAyNFtQQ10sIHQxCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAg
ICBkaXNwYXRjaCg5KQorZW5kCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Q6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwg
c2xvdykgZW5kKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6Cisg
ICAgcHV0QnlJZFRyYW5zaXRpb24oCisgICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0
Y2gsIHNsb3cpCisgICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAj
IFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAgICAg
IAorICAgICAgICAgICAgbG9hZHAgMjhbUENdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQo
bWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBsb2FkcCBTdHJ1
Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGFzc2Vy
dChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICAgICAgICAgIGJpZXEgU3Ry
dWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAu
ZG9uZQorICAgICAgICAubG9vcDoKKyAgICAgICAgICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90
b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAgICAgICAg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAg
ICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCBzbG93CisgICAgICAgICAg
ICBhZGRwIDQsIHNjcmF0Y2gKKyAgICAgICAgICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5
cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKKyAgICAgICAgLmRv
bmU6CisgICAgICAgIGVuZCkKKworCitfbGxpbnRfb3BfZGVsX2J5X2lkOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X2lkKQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAg
IGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0s
IHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAu
b3BHZXRCeVZhbFNsb3cpCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZv
W3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgSW50MzJUYWcs
IHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAgYnBuZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFsU2xv
dworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MF0sIHQzCisgICAgYmlhZXEgdDEsIEpT
QXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0Mywg
dDEsIDhdLCB0MgorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zm
c2V0W3QzLCB0MSwgOF0sIHQxCisgICAgYmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlW
YWxTbG93CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkg
dDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAg
dmFsdWVQcm9maWxlKHQyLCB0MSwgdDApCisgICAgZGlzcGF0Y2goNSkKKworLm9wR2V0QnlWYWxT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3Bh
dGNoKDUpCisKKworX2xsaW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50
QnlWYWxTbG93CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEludDMyVGFn
LCB0MiwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cpCisgICAgYWRkaSAxLCB0MgorICAgIGxvYWRp
IEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisgICAgYmlhZXEgdDIsIHQx
LCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIG5lZ2kgdDIKKyAgICBsb2FkaSA0W1BDXSwg
dDMKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0s
IHQwCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQy
LCA4XSwgdDEKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3Jl
aSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEdl
dEFyZ3VtZW50QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJn
dW1lbnRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2dldF9ieV9wbmFt
ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wR2V0QnlQbmFtZVNs
b3cpCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGJwbmVxIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFt
ZVNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAg
YnBuZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwg
Lm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSAyNFtQQ10sIHQwCisgICAgbG9hZGkgW2Nmciwg
dDAsIDhdLCB0MAorICAgIHN1YmkgMSwgdDAKKyAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcjo6bV9udW1DYWNoZWFibGVTbG90c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAg
bG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbdDIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0s
IHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNw
YXRjaCg3KQorCisub3BHZXRCeVBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfZ2V0X2J5X3BuYW1lKQorICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX3B1dF9ieV92
YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93
KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQwLCBJbnQzMlRhZywgdDIsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MF0sIHQwCisgICAg
bG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QwXSwgdDAKKyAgICBicG5lcSBb
dDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93CisgICAgYmlhZXEgdDIsIEpTQXJyYXk6Om1fdmVjdG9y
TGVuZ3RoW3QxXSwgLm9wUHV0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdl
W3QxXSwgdDAKKyAgICBiaWVxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAs
IHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wUHV0QnlWYWxFbXB0eQorLm9wUHV0QnlWYWxTdG9y
ZVJlc3VsdDoKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDMsIHQxLCB0MykKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQzKQorICAgIHN0b3JlaSB0
MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdCisgICAgc3Rv
cmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhd
CisgICAgZGlzcGF0Y2goNCkKKworLm9wUHV0QnlWYWxFbXB0eToKKyAgICBhZGRpIDEsIEFycmF5
U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KKyAgICBiaWIgdDIsIEFycmF5U3RvcmFn
ZTo6bV9sZW5ndGhbdDBdLCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0Miwg
dDEKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdCisgICAgam1wIC5v
cFB1dEJ5VmFsU3RvcmVSZXN1bHQKKworLm9wUHV0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9wdXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X2RlbF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9kZWxfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9i
eV9pbmRleDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3B1dF9ieV9pbmRleCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2V0
dGVyX3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3B1dF9nZXR0ZXJfc2V0dGVyKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29w
X2xvb3A6CisgICAgbm9wCitfbGxpbnRfb3Bfam1wOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBkaXNwYXRjaEJyYW5jaCg0W1BDXSkKKworCitfbGxpbnRfb3Bfam1wX3Njb3BlczoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2ptcF9zY29wZXMp
CisgICAgZGlzcGF0Y2goMCkKKworCittYWNybyBqdW1wVHJ1ZU9yRmFsc2UoY29uZGl0aW9uT3As
IHNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDEsIEJvb2xlYW5UYWcsIHQwLCAuc2xvdykKKyAgICBjb25kaXRpb25PcCh0MCwgLnRh
cmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhb
UENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKHNsb3cpCisgICAgZGlzcGF0Y2goMCkKK2Vu
ZAorCitfbGxpbnRfb3BfbG9vcF9pZl90cnVlOgorICAgIG5vcAorX2xsaW50X29wX2p0cnVlOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3Jv
ICh2YWx1ZSwgdGFyZ2V0KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9qdHJ1ZSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKKyAgICBub3AKK19s
bGludF9vcF9qZmFsc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxz
ZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIHRhcmdldCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfamZhbHNlKQorCisKK21hY3JvIGVxdWFsTnVsbChjZWxs
SGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2Fk
aSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxIYW5kbGVyKFN0cnVjdHVyZTo6
bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKKyAgICBkaXNwYXRj
aCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuaW1tZWRpYXRl
OgorICAgIG9yaSAxLCB0MQorICAgIGltbWVkaWF0ZUhhbmRsZXIodDEsIC50YXJnZXQpCisgICAg
ZGlzcGF0Y2goMykKK2VuZAorCitfbGxpbnRfb3BfamVxX251bGw6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0Ym56
IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNy
byAodmFsdWUsIHRhcmdldCkgYmllcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKyAgICAK
KworX2xsaW50X29wX2puZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxO
dWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRieiB2YWx1ZSwgTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQp
IGJpbmVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorCisKK19sbGludF9vcF9qbmVxX3B0
cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkg
OFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BK
bmVxUHRyQnJhbmNoCisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwgLm9w
Sm5lcVB0ckZhbGxUaHJvdWdoCisub3BKbmVxUHRyQnJhbmNoOgorICAgIGRpc3BhdGNoQnJhbmNo
KDEyW1BDXSkKKy5vcEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaCg0KQorCisKK21h
Y3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUsIGhlbHBlcikKKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQyLCB0MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQy
LCB0MykKKyAgICBiaW5lcSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0Miwg
SW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5qdW1wVGFy
Z2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgYmlhIHQwLCBMb3dlc3RU
YWcsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAg
ICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MywgZnQxCisgICAgam1wIC5v
cDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MywgdDIsIGZ0
MQorLm9wMU5vdEludFJlYWR5OgorICAgIGZpaTJkIHQxLCB0MCwgZnQwCisgICAgZG91YmxlQ29t
cGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMk5vdElu
dDoKKyAgICBjaTJkIHQxLCBmdDAKKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBm
aWkyZCB0MywgdDIsIGZ0MQorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0
KQorICAgIGRpc3BhdGNoKDQpCisKKy5qdW1wVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDEy
W1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goMCkK
K2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzOgorICAgIG5vcAorX2xsaW50X29wX2psZXNz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3MpCisKKworX2xsaW50X29wX2pubGVzczoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzcykKKworCitfbGxpbnRfb3BfbG9vcF9pZl9n
cmVhdGVyOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmln
dCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0
YXJnZXQpIGJkZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfamdyZWF0ZXIpCisKKworX2xsaW50X29wX2puZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJp
bHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJkbHRlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX2puZ3JlYXRlcikKKworCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzZXE6CisgICAg
bm9wCitfbGxpbnRfb3Bfamxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFy
ZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRl
cSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzc2Vx
KQorCisKK19sbGludF9vcF9qbmxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29t
cGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0
dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNz
ZXEpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcmVxOgorICAgIG5vcAorX2xsaW50X29w
X2pncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXEgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXJlcSkKKworCitf
bGxpbnRfb3Bfam5ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUo
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdHVuIGxl
ZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcmVx
KQorCisKK19sbGludF9vcF9sb29wX2hpbnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNo
ZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9z
d2l0Y2hfaW1tOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisg
ICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQw
KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9y
YXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MyAgICMg
RklYTUU6IHdvdWxkIGJlIG5pY2UgdG8gcGVlcGhvbGUgdGhpcyEKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6OlJhcmVEYXRhOjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJP
ZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAu
b3BTd2l0Y2hJbW1Ob3RJbnQKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAK
KyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6
ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVt
cFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDMKKyAgICBs
b2FkaSBbdDMsIHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3Vn
aAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoSW1tTm90SW50
OgorICAgIGJpYiB0MSwgTG93ZXN0VGFnLCAub3BTd2l0Y2hJbW1TbG93ICAjIEdvIHRvIHNsb3cg
cGF0aCBpZiBpdCdzIGEgZG91YmxlLgorLm9wU3dpdGNoSW1tRmFsbFRocm91Z2g6CisgICAgZGlz
cGF0Y2hCcmFuY2goOFtQQ10pCisKKy5vcFN3aXRjaEltbVNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3N3aXRjaF9pbW0pCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3Bf
c3dpdGNoX2NoYXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIK
KyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwg
dDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQzCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVz
ICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVx
IHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBU
eXBlSW5mbzo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdo
CisgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0MAorICAgIGJpbmVxIFN0cmluZ0lt
cGw6Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAg
U3RyaW5nSW1wbDo6bV9kYXRhOFt0MF0sIHQxCisgICAgYnRpbnogU3RyaW5nSW1wbDo6bV9oYXNo
QW5kRmxhZ3NbdDBdLCBIYXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0Y2hDaGFyOEJpdAorICAg
IGxvYWRoIFt0MV0sIHQwCisgICAgam1wIC5vcFN3aXRjaENoYXJSZWFkeQorLm9wU3dpdGNoQ2hh
cjhCaXQ6CisgICAgbG9hZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENoYXJSZWFkeToKKyAgICBzdWJp
IFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRh
YmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENoYXJG
YWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZl
Y3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCisgICAg
YnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhP
ZmZzZXQodDEpCisKKy5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5j
aCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9zdHJpbmcpCisgICAgZGlz
cGF0Y2goMCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGJ0aXogMTJbUENdLCAub3BOZXdGdW5jVW5jaGVja2VkCisgICAgbG9hZGkgNFtQQ10sIHQx
CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BOZXdG
dW5jRG9uZQorLm9wTmV3RnVuY1VuY2hlY2tlZDoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfbmV3X2Z1bmMpCisub3BOZXdGdW5jRG9uZToKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9uZXdfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9uZXdfZnVuY19leHApCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBk
b0NhbGwoaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEK
KyAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93KQorICAg
IGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgYWRk
cCAyNCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRh
aW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNo
YWluW3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNdCisg
ICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBsb2FkaSA4
IC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtj
ZnJdCisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNdCisgICAgc3RvcmVpIHQyLCBBcmd1
bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVl
ICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFnT2Zm
c2V0W3QzXQorICAgIG1vdmUgdDMsIGNmcgorICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86Om1h
Y2hpbmVDb2RlVGFyZ2V0W3QxXQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworLm9wQ2FsbFNs
b3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfY2Fs
bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY2FsbCkK
KworCitfbGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0Nh
bGwoX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3QpCisKKworX2xsaW50X29wX2NhbGxfdmFyYXJnczoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIF9sbGludF9oZWxw
ZXJfY2FsbF92YXJhcmdzKQorCisKK19sbGludF9vcF9jYWxsX2V2YWw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIAorICAgICMgRXZhbCBpcyBleGVjdXRlZCBpbiBvbmUgb2YgdHdvIG1vZGVz
OgorICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSByZWFsbHkgaW52b2tpbmcgZXZh
bCgpIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBleGVjdXRpb24gaXMgcGVyZm9tZWQgZW50
aXJlbHkgaW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBpdAorICAgICMgICAgcmV0dXJucyB0aGUgUEMg
b2YgYSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0aGUgcmV0dXJuIHZhbHVlCisgICAgIyAg
ICB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgICMKKyAgICAjIDIpIFdlIGZpbmQgdGhhdCB3
ZSdyZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwoKSB0aGF0IGlzIG5vdAorICAgICMg
ICAgdGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVscGVyIHJldHVybnMgdGhlIFBDIG9mIHRoZSB0
aGluZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQuCisgICAgIworICAgICMgVGhp
cyBhbGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywgd2hpY2ggd291bGQgcmVxdWlyZSBhIHRv
dGFsIG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0ZSB0aGF0IGNhbm5vdCBiZSBl
YXNpbHkgcGFja2VkIGludG8gdHdvCisgICAgIyByZWdpc3RlcnMgKEMgZnVuY3Rpb25zIGNhbiBy
ZXR1cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5KToKKyAgICAjCisgICAgIyAtIFRoZSBj
YWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBtb2RpZmll
ZAorICAgICMgICBieSB0aGUgaGVscGVyLCBidXQgdGhlIGNvbnZlbnRpb24gaXMgdGhhdCBpdCBy
ZXR1cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0b3RhbGx5IGNsZWFyIGlmIHRoYXQncyBuZWNl
c3NhcnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUuCisgICAgIyAgIEJ1dCB0aGF0J3Mg
b3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRlciBzbyB3ZSBzdGljayB3aXRoIGl0Lgor
ICAgICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBoZWxwZXIgc3VjY2Vzc2Z1bGx5IGV4
ZWN1dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAjICAgdGhlIHJldHVybiB2YWx1ZSwgb3IgZGlk
IG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3IgdXMKKyAgICAjICAgdG8gY2Fs
bC4KKyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAgICAjICAgLSBUaGUgSlMgcmV0dXJuIHZhbHVl
ICh0d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisgICAgIyAgIC0gVGhlIFBDIHRvIGNhbGwuCisg
ICAgIworICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2llciB0byBqdXN0IGFsd2F5cyBoYXZl
IHRoaXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBhIFBDIHRvIGNhbGwsIGFuZCB0aGF0IFBD
IG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAorICAgICMgcmV0dXJucyB0aGUgSlMgdmFs
dWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAKKyAgICBzbG93UGF0aEZvckNhbGwoNCwg
X2xsaW50X2hlbHBlcl9jYWxsX2V2YWwpCisKKworX2xsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50
OgorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYWN0aXZh
dGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9h
ZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVl
VGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIs
IHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkCisu
b3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3RlYXJfb2ZmX2FjdGl2YXRpb24pCisub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQ6Cisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYXJndW1lbnRzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdWJpIDEsIHQwICAgIyBH
ZXQgdGhlIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcgorICAgIGJpZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZAor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCisub3BUZWFy
T2ZmQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGRvUmV0
dXJuKCkKKyAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgIGxvYWRwIENhbGxlckZyYW1l
W2Nmcl0sIGNmcgorICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAg
IHJldAorZW5kCisKK19sbGludF9vcF9yZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNo
ZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxp
bnRfb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhb
UENdLCB0MworICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdmFsdWVQcm9maWxlKHQxLCB0MCwg
dDMpCisgICAgdHJhY2VFeGVjdXRpb24oKSAjIE5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSBpdCB3
b3VsZCBjbG9iYmVyIHQxLCB0MAorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3JldF9v
YmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJ
VEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFJldE9iamVjdE9y
VGhpc05vdE9iamVjdAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAg
IGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0
VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgZG9SZXR1cm4oKQorCisub3BS
ZXRPYmplY3RPclRoaXNOb3RPYmplY3Q6CisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRf
b3BfbWV0aG9kX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIGlnbm9yZSBt
ZXRob2QgY2hlY2tzIGFuZCB1c2Ugbm9ybWFsIGdldF9ieV9pZCBvcHRpbWl6YXRpb25zLgorICAg
IGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N0cmNhdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N0cmNhdCkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF90b19wcmltaXRpdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9QcmltaXRpdmVJ
c0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJibmVxIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAu
b3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisub3BUb1ByaW1pdGl2ZUlzSW1tOgorICAgIHN0b3JlaSB0
MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9QcmltaXRpdmVTbG93Q2FzZToKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fcHJpbWl0aXZlKQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX2dldF9wbmFtZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfcG5hbWVzKQorICAgIGRpc3BhdGNoKDApICMgVGhl
IGhlbHBlciBlaXRoZXIgYWR2YW5jZXMgdGhlIFBDIG9yIGp1bXBzIHVzIHRvIHNvbWV3aGVyZSBl
bHNlLgorCisKK19sbGludF9vcF9uZXh0X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZGkgMTZbUENdLCB0MgorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQwCisgICAgYmllcSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XSwgLm9wTmV4dFBuYW1lRW5kCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcjo6bV9qc1N0cmluZ3NbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDhdLCB0Mwor
ICAgIGFkZGkgMSwgdDAKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9h
ZGkgOFtQQ10sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAgICBicG5lcSB0MSwgSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93
CisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFp
blt0Ml0sIHQwCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKKyAg
ICBidHB6IFt0MF0sIC5vcE5leHRQbmFtZVRhcmdldAorLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5
cGVMb29wOgorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFt0MV0s
IE51bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90
eXBlICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0Ml0sIHQxCisgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBhZGRw
IDQsIHQwCisgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wCisu
b3BOZXh0UG5hbWVUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMjRbUENdKQorCisub3BOZXh0
UG5hbWVFbmQ6CisgICAgZGlzcGF0Y2goNykKKworLm9wTmV4dFBuYW1lU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfbmV4dF9wbmFtZSkgIyBUaGlzIGVpdGhlciBrZWVwcyB0aGUg
UEMgd2hlcmUgaXQgd2FzIChjYXVzaW5nIHVzIHRvIGxvb3ApIG9yIHNldHMgaXQgdG8gdGFyZ2V0
LgorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3B1c2hfc2NvcGU6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX3Njb3BlKQorICAg
IGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3BvcF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3BvcF9zY29wZSkKKyAgICBkaXNwYXRj
aCgxKQorCisKK19sbGludF9vcF9wdXNoX25ld19zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfbmV3X3Njb3BlKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX2NhdGNoOgorICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQg
dXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKKyAgICAjIG1h
Y2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gp
LCBhbmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2Vl
IF9sbGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRoZSBKSVQgdGhyb3dpbmcgcHJvdG9j
b2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0aHJvd2luZworICAgICMgY29k
ZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93aW5nIHRvIHRoZSBpbnRlcnByZXRl
ciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENG
b3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9i
YWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVy
UENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQ
YXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiAr
IFRhZ09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9u
ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxE
YXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAgICAgIAorICAgIGxvYWRpIDRbUENdLCB0
MgorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0
MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdHJhY2VFeGVjdXRpb24oKSAgIyBUaGlzIG5l
ZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIgdDAsIHQxLCB0
MiwgdDMgYWJvdmUuCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3c6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvdykKKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3I6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvd19yZWZl
cmVuY2VfZXJyb3IpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfanNyOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBhZGRpIDMgKiA0LCBQQywg
dDEKKyAgICBzdG9yZWkgdDEsIFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENd
KQorCisKK19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkcCBbY2ZyLCB0MCwgOF0sIFBDCisgICAgZGlzcGF0Y2goMCkKKwor
CitfbGxpbnRfb3BfZGVidWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9kZWJ1ZykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcm9m
aWxlX3dpbGxfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tG
cmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5v
cFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmls
ZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisK
KworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIHQwCisg
ICAgYnRweiBbdDBdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERvbmU6CisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhyb3dfZnJvbV9o
ZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJwcmV0
ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMpLCBzbworICAgICMgdGhlIHRocm93
IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0byBo
ZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcg
cHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisg
ICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1w
IEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworX2xsaW50X3Ro
cm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0
ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQor
ICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGpt
cCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKKyMgTGFzdGx5
LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0
IGFsbCBvcGNvZGVzLgorIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVuIHVz
aW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAorIyBhcyBtdWNoLgorCittYWNybyBu
b3RTdXBwb3J0ZWQoKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGNyYXNoKCkKKyAg
ICBlbHNlCisgICAgICAgICMgV2Ugc2hvdWxkIHVzZSB3aGF0ZXZlciB0aGUgc21hbGxlc3QgcG9z
c2libGUgaW5zdHJ1Y3Rpb24gaXMsIGp1c3QgdG8KKyAgICAgICAgIyBlbnN1cmUgdGhhdCB0aGVy
ZSBpcyBhIGdhcCBiZXR3ZWVuIGluc3RydWN0aW9uIGxhYmVscy4gSWYgbXVsdGlwbGUKKyAgICAg
ICAgIyBzbWFsbGVzdCBpbnN0cnVjdGlvbnMgZXhpc3QsIHdlIHNob3VsZCBwaWNrIHRoZSBvbmUg
dGhhdCBpcyBtb3N0CisgICAgICAgICMgbGlrZWx5IHJlc3VsdCBpbiBleGVjdXRpb24gYmVpbmcg
aGFsdGVkLiBDdXJyZW50bHkgdGhhdCBpcyB0aGUgYnJlYWsKKyAgICAgICAgIyBpbnN0cnVjdGlv
biBvbiBhbGwgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBpbnRlcmVzdGVkIGluLiAoQnJlYWsgaXMgaW50
MworICAgICAgICAjIG9uIEludGVsLCB3aGljaCBpcyAxIGJ5dGUsIGFuZCBia3B0IG9uIEFSTXY3
LCB3aGljaCBpcyAyIGJ5dGVzLikKKyAgICAgICAgYnJlYWsKKyAgICBlbmQKK2VuZAorCitfbGxp
bnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfY3VzdG9tX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfY3VzdG9tX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfY3VzdG9tX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9p
ZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0
dGVyX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0
dGVyX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0
dGVyX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9wcm90
bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3NlbGY6CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9zdHJpbmdfbGVuZ3RoOgorICAgIG5vdFN1
cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0
ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3JlcGxhY2U6CisgICAgbm90U3VwcG9ydGVkKCkK
KworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uOgorICAgIG5vdFN1cHBvcnRlZCgpCisK
KworIyBJbmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50LgorX2xsaW50X2VuZDoKKyAgICBjcmFzaCgp
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworI2lmIEVOQUJM
RShMTElOVCkKKworI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUg
PHd0Zi9JbmxpbmVBU00uaD4KKworLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxp
bmVhc20sIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUgYXNzZW1ibHkgY29kZQorLy8gZm9yIHRo
ZSBpbnRlcnByZXRlciwgYXMgY29tcGlsZWQgZnJvbSBMb3dMZXZlbEludGVycHJldGVyLmFzbS4K
KyNpbmNsdWRlICJMTEludEFzc2VtYmx5LmgiCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTG93TGV2ZWxJbnRl
cnByZXRlcl9oCisjZGVmaW5lIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJPcGNvZGUuaCIK
KworI2RlZmluZSBMTElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29kZSwgbGVuZ3RoKSBleHRlcm4g
IkMiIHZvaWQgbGxpbnRfIyNvcGNvZGUoKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoTExJTlRf
SU5TVFJVQ1RJT05fREVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJVQ1RJT05fREVDTAorCitleHRl
cm4gIkMiIHZvaWQgbGxpbnRfYmVnaW4oKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9lbmQoKTsK
K2V4dGVybiAiQyIgdm9pZCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZv
aWQgbGxpbnRfZXZhbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2dlbmVyaWNf
cmV0dXJuX3BvaW50KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJf
dHJhbXBvbGluZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3Ry
YW1wb2xpbmUoKTsKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExvd0xl
dmVsSW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXJtdjcucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXJtdjcucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hcm12Ny5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDMyIEBACisjIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJvcHQiCisK
K2NsYXNzIE5vZGUKKyAgZGVmIGFybVY3U2luZ2xlCisgICAgZG91YmxlT3BlcmFuZCA9IGFybVY3
T3BlcmFuZAorICAgIHJhaXNlICJCb2d1cyByZWdpc3RlciBuYW1lICN7ZG91YmxlT3BlcmFuZH0i
IHVubGVzcyBkb3VibGVPcGVyYW5kID1+IC9eZC8KKyAgICAicyIgKyAoJH4ucG9zdF9tYXRjaC50
b19pICogMikudG9fcworICBlbmQKK2VuZAorCitjbGFzcyBTcGVjaWFsUmVnaXN0ZXIgPCBOb0No
aWxkcmVuCisgIGRlZiBpbml0aWFsaXplKG5hbWUpCisgICAgQG5hbWUgPSBuYW1lCisgIGVuZAor
ICAKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIEBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJl
c3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5k
CisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lz
dGVyPworICAgIHRydWUKKyAgZW5kCitlbmQKKworQVJNdjdfRVhUUkFfR1BSUyA9IFtTcGVjaWFs
UmVnaXN0ZXIubmV3KCJyOSIpLCBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyOCIpLCBTcGVjaWFsUmVn
aXN0ZXIubmV3KCJyMyIpXQorQVJNdjdfRVhUUkFfRlBSUyA9IFtTcGVjaWFsUmVnaXN0ZXIubmV3
KCJkNyIpXQorQVJNdjdfU0NSQVRDSF9GUFIgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJkOCIpCisK
K2RlZiBhcm1WN01vdmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQorICAjIEN1cnJlbnRseSB3
ZSBvbmx5IGhhbmRsZSB0aGUgc2ltcGxlIGNhc2VzLCBhbmQgZmFsbCBiYWNrIHRvIG1vdi9tb3Z0
IGZvciB0aGUgY29tcGxleCBvbmVzLgorICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2Cisg
ICAgJGFzbS5wdXRzICJtb3Z3ICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje3ZhbHVlfSIK
KyAgZWxzaWYgKH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgorICAgICRhc20ucHV0cyAi
bXZuICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje352YWx1ZX0iCisgIGVsc2UKKyAgICAk
YXNtLnB1dHMgIm1vdncgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9LCBcIyN7dmFsdWUgJiAweGZm
ZmZ9IgorICAgIGlmICh2YWx1ZSAmIDB4ZmZmZjAwMDApICE9IDAKKyAgICAgICRhc20ucHV0cyAi
bW92dCAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0sIFwjI3t2YWx1ZSA+PiAxNn0iCisgICAgZW5k
CisgIGVuZAorZW5kCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIGFybVY3T3BlcmFuZAorICAg
IGNhc2UgbmFtZQorICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgInIwIgorICAgIHdo
ZW4gInQxIiwgImExIiwgInIxIgorICAgICAgInIxIgorICAgIHdoZW4gInQyIiwgImEyIgorICAg
ICAgInIyIgorICAgIHdoZW4gImEzIgorICAgICAgInIzIgorICAgIHdoZW4gInQzIgorICAgICAg
InI0IgorICAgIHdoZW4gInQ0IgorICAgICAgInI3IgorICAgIHdoZW4gImNmciIKKyAgICAgICJy
NSIKKyAgICB3aGVuICJsciIKKyAgICAgICJsciIKKyAgICB3aGVuICJzcCIKKyAgICAgICJzcCIK
KyAgICBlbHNlCisgICAgICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIEFSTXY3IGF0
ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVn
aXN0ZXJJRAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQw
IiwgImZyIgorICAgICAgImQwIgorICAgIHdoZW4gImZ0MSIKKyAgICAgICJkMSIKKyAgICB3aGVu
ICJmdDIiCisgICAgICAiZDIiCisgICAgd2hlbiAiZnQzIgorICAgICAgImQzIgorICAgIHdoZW4g
ImZ0NCIKKyAgICAgICJkNCIKKyAgICB3aGVuICJmdDUiCisgICAgICAiZDUiCisgICAgZWxzZQor
ICAgICAgcmFpc2UgIkJhZCByZWdpc3RlciAje25hbWV9IGZvciBBUk12NyBhdCAje2NvZGVPcmln
aW5TdHJpbmd9IgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgZGVm
IGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJJbnZhbGlkIGltbWVkaWF0ZSAje3ZhbHVlfSBhdCAj
e2NvZGVPcmlnaW5TdHJpbmd9IiBpZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAiXCMj
e3ZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBkZWYgYXJtVjdPcGVyYW5k
CisgICAgcmFpc2UgIkJhZCBvZmZzZXQgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgaWYgb2Zmc2V0
LnZhbHVlIDwgLTB4ZmYgb3Igb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAgICAiWyN7YmFzZS5hcm1W
N09wZXJhbmR9LCBcIyN7b2Zmc2V0LnZhbHVlfV0iCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJ
bmRleAorICBkZWYgYXJtVjdPcGVyYW5kCisgICAgcmFpc2UgIkJhZCBvZmZzZXQgYXQgI3tjb2Rl
T3JpZ2luU3RyaW5nfSIgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAiWyN7YmFzZS5hcm1WN09w
ZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGVTaGlmdH1dIgorICBl
bmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIGFybVY3T3BlcmFuZAorICAg
IHJhaXNlICJVbmNvbnZlcnRlZCBhYnNvbHV0ZSBhZGRyZXNzIGF0ICN7Y29kZU9yaWdpblN0cmlu
Z30iCisgIGVuZAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgYnJhbmNoIG9wcy4gRm9yIGV4YW1w
bGU6CisjCisjIGJhZGRpeiBmb28sIGJhciwgYmF6CisjCisjIHdpbGwgYmVjb21lOgorIworIyBh
ZGRpIGZvbywgYmFyCisjIGJ6IGJhegorIworCitkZWYgYXJtVjdMb3dlckJyYW5jaE9wcyhsaXN0
KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIGlmIG5v
ZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdoZW4g
L15iKGFkZGl8c3ViaXxvcml8YWRkcCkvCisgICAgICAgIG9wID0gJDEKKyAgICAgICAgYnJhbmNo
ID0gImIiICsgJH4ucG9zdF9tYXRjaAorICAgICAgICAKKyAgICAgICAgY2FzZSBvcAorICAgICAg
ICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAgICAgICAgb3AgPSAiYWRkaXMiCisgICAgICAgIHdo
ZW4gInN1YmkiCisgICAgICAgICAgb3AgPSAic3ViaXMiCisgICAgICAgIHdoZW4gIm9yaSIKKyAg
ICAgICAgICBvcCA9ICJvcmlzIgorICAgICAgICBlbmQKKyAgICAgICAgCisgICAgICAgIG5ld0xp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgb3AsIG5vZGUub3BlcmFuZHNb
MC4uLTJdKQorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmln
aW4sIGJyYW5jaCwgW25vZGUub3BlcmFuZHNbLTFdXSkKKyAgICAgIHdoZW4gImJtdWxpbyIKKyAg
ICAgICAgdG1wMSA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICB0bXAy
ID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInNtdWxsaSIsIFtub2RlLm9wZXJhbmRzWzBd
LCBub2RlLm9wZXJhbmRzWzFdLCBub2RlLm9wZXJhbmRzWzFdLCB0bXAxXSkKKyAgICAgICAgbmV3
TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAicnNoaWZ0aSIsIFtub2Rl
Lm9wZXJhbmRzWy0yXSwgSW1tZWRpYXRlLm5ldyhub2RlLmNvZGVPcmlnaW4sIDMxKSwgdG1wMl0p
CisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgImJp
bmVxIiwgW3RtcDEsIHRtcDIsIG5vZGUub3BlcmFuZHNbLTFdXSkKKyAgICAgIHdoZW4gL15ibXVs
aS8KKyAgICAgICAgY29uZGl0aW9uID0gJH4ucG9zdF9tYXRjaAorICAgICAgICBuZXdMaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtdWxpIiwgbm9kZS5vcGVyYW5kc1sw
Li4tMl0pCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdp
biwgImJ0aSIgKyBjb25kaXRpb24sIFtub2RlLm9wZXJhbmRzWy0yXSwgbm9kZS5vcGVyYW5kc1st
MV1dKQorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgIGVuZAorICAg
IGVsc2UKKyAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgIGVuZAorICB9CisgIG5ld0xpc3QKK2Vu
ZAorCisjCisjIExvd2VyaW5nIG9mIHNoaWZ0IG9wcy4gRm9yIGV4YW1wbGU6CisjCisjIGxzaGlm
dGkgZm9vLCBiYXIKKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIGFuZGkgZm9vLCAzMSwgdG1wCisj
IGxzaGlmdGkgdG1wLCBiYXIKKyMKKworZGVmIGFybVY3U2FuaXRpemVTaGlmdChvcGVyYW5kLCBs
aXN0KQorICByZXR1cm4gb3BlcmFuZCBpZiBvcGVyYW5kLmltbWVkaWF0ZT8KKyAgCisgIHRtcCA9
IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCA6Z3ByKQorICBsaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJhbmRpIiwgW29wZXJhbmQsIEltbWVkaWF0ZS5uZXco
b3BlcmFuZC5jb2RlT3JpZ2luLCAzMSksIHRtcF0pCisgIHRtcAorZW5kCisKK2RlZiBhcm1WN0xv
d2VyU2hpZnRPcHMobGlzdCkKKyAgbmV3TGlzdCA9IFtdCisgIGxpc3QuZWFjaCB7CisgICAgfCBu
b2RlIHwKKyAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICBjYXNlIG5vZGUub3Bj
b2RlCisgICAgICB3aGVuICJsc2hpZnRpIiwgInJzaGlmdGkiLCAidXJzaGlmdGkiCisgICAgICAg
IGlmIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgW2FybVY3U2FuaXRpemVTaGlm
dChub2RlLm9wZXJhbmRzWzBdLCBuZXdMaXN0KSwgbm9kZS5vcGVyYW5kc1sxXV0pCisgICAgICAg
IGVsc2UKKyAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmln
aW4sIG5vZGUub3Bjb2RlLCBbbm9kZS5vcGVyYW5kc1swXSwgYXJtVjdTYW5pdGl6ZVNoaWZ0KG5v
ZGUub3BlcmFuZHNbMV0sIG5ld0xpc3QpLCBub2RlLm9wZXJhbmRzWzJdXSkKKyAgICAgICAgICBy
YWlzZSAiV3JvbmcgbnVtYmVyIG9mIG9wZXJhbmRzIGZvciBzaGlmdCBhdCAje25vZGUuY29kZU9y
aWdpblN0cmluZ30iIHVubGVzcyBub2RlLm9wZXJhbmRzLnNpemUgPT0gMworICAgICAgICBlbmQK
KyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICBlbmQKKyAgICBlbHNl
CisgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICBlbmQKKyAgfQorICBuZXdMaXN0CitlbmQKKwor
IworIyBMb3dlcmluZyBvZiBtYWxmb3JtZWQgYWRkcmVzc2VzLiBGb3IgZXhhbXBsZToKKyMKKyMg
bG9hZHAgMTAwMDBbZm9vXSwgYmFyCisjCisjIHdpbGwgYmVjb21lOgorIworIyBtb3ZlIDEwMDAw
LCB0bXAKKyMgYWRkcCBmb28sIHRtcAorIyBsb2FkcCAwW3RtcF0sIGJhcgorIworCitjbGFzcyBO
b2RlCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAg
IG1hcENoaWxkcmVuIHsKKyAgICAgIHwgbm9kZSB8CisgICAgICBub2RlLmFybVY3TG93ZXJNYWxm
b3JtZWRBZGRyZXNzZXNSZWN1cnNlKGxpc3QpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBB
ZGRyZXNzCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQor
ICAgIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIG9yIG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAg
ICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICBsaXN0IDw8IEluc3RydWN0
aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92ZSIsIFtvZmZzZXQsIHRtcF0pCisgICAgICBsaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAiYWRkcCIsIFtiYXNlLCB0bXBdKQorICAgICAg
QWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgdG1wLCBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIDAp
KQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQmFz
ZUluZGV4CisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQor
ICAgIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4s
IDpncHIpCisgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92ZSIs
IFtvZmZzZXQsIHRtcF0pCisgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2lu
LCAiYWRkcCIsIFtiYXNlLCB0bXBdKQorICAgICAgQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCB0
bXAsIGluZGV4LCBzY2FsZSwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkKKyAgICBlbHNl
CisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVz
cworICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICB0
bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbYWRkcmVzcywgdG1wXSkKKyAgICBBZGRyZXNzLm5ldyhj
b2RlT3JpZ2luLCB0bXAsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCisgIGVuZAorZW5k
CisKK2RlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzKGxpc3QpCisgIG5ld0xpc3QgPSBb
XQorICBsaXN0LmVhY2ggeworICAgIHwgbm9kZSB8CisgICAgbmV3TGlzdCA8PCBub2RlLmFybVY3
TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNSZWN1cnNlKG5ld0xpc3QpCisgIH0KKyAgbmV3TGlzdAor
ZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWFsZm9ybWVkIGFkZHJlc3NlcyBpbiBkb3VibGUgbG9h
ZHMgYW5kIHN0b3Jlcy4gRm9yIGV4YW1wbGU6CisjCisjIGxvYWRkIFtmb28sIGJhciwgOF0sIGJh
egorIworIyBiZWNvbWVzOgorIworIyBsZWFwIFtmb28sIGJhciwgOF0sIHRtcAorIyBsb2FkZCBb
dG1wXSwgYmF6CisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIGFybVY3RG91YmxlQWRkcmVzcyhsaXN0
KQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBhcm1WN0Rv
dWJsZUFkZHJlc3MobGlzdCkKKyAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisg
ICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgImxlYXAiLCBbc2VsZiwgdG1w
XSkKKyAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCB0bXAsIEltbWVkaWF0ZS5uZXcoY29kZU9y
aWdpbiwgMCkpCisgIGVuZAorZW5kCisKK2RlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2Vz
RG91YmxlKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9kZSB8
CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgY2FzZSBub2RlLm9wY29kZQor
ICAgICAgd2hlbiAibG9hZGQiCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5v
ZGUuY29kZU9yaWdpbiwgImxvYWRkIiwgW25vZGUub3BlcmFuZHNbMF0uYXJtVjdEb3VibGVBZGRy
ZXNzKG5ld0xpc3QpLCBub2RlLm9wZXJhbmRzWzFdXSkKKyAgICAgIHdoZW4gInN0b3JlZCIKKyAg
ICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAic3RvcmVk
IiwgW25vZGUub3BlcmFuZHNbMF0sIG5vZGUub3BlcmFuZHNbMV0uYXJtVjdEb3VibGVBZGRyZXNz
KG5ld0xpc3QpXSkKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICBl
bmQKKyAgICBlbHNlCisgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICBlbmQKKyAgfQorICBuZXdM
aXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBtaXNwbGFjZWQgaW1tZWRpYXRlcy4gRm9yIGV4
YW1wbGU6CisjCisjIHN0b3JlaSAwLCBbZm9vXQorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbW92
ZSAwLCB0bXAKKyMgc3RvcmVpIHRtcCwgW2Zvb10KKyMKKworZGVmIGFybVY3TG93ZXJNaXNwbGFj
ZWRJbW1lZGlhdGVzKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwg
bm9kZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgY2FzZSBub2RlLm9w
Y29kZQorICAgICAgd2hlbiAic3RvcmVpIiwgInN0b3JlcCIKKyAgICAgICAgb3BlcmFuZHMgPSBu
b2RlLm9wZXJhbmRzCisgICAgICAgIG5ld09wZXJhbmRzID0gW10KKyAgICAgICAgb3BlcmFuZHMu
ZWFjaCB7CisgICAgICAgICAgfCBvcGVyYW5kIHwKKyAgICAgICAgICBpZiBvcGVyYW5kLmlzX2E/
IEltbWVkaWF0ZQorICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4s
IDpncHIpCisgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNv
ZGVPcmlnaW4sICJtb3ZlIiwgW29wZXJhbmQsIHRtcF0pCisgICAgICAgICAgICBuZXdPcGVyYW5k
cyA8PCB0bXAKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdPcGVyYW5kcyA8PCBvcGVy
YW5kCisgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgbmV3T3BlcmFuZHMpCisgICAg
ICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgZW5kCisgICAgZWxzZQorICAg
ICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMg
TG93ZXJpbmcgb2YgbWFsZm9ybWVkIGltbWVkaWF0ZXMgZXhjZXB0IHdoZW4gdXNlZCBpbiBhICJt
b3ZlIiBpbnN0cnVjdGlvbi4KKyMgRm9yIGV4YW1wbGU6CisjCisjIGFkZHAgNjQyNjQxLCBmb28K
KyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUgNjQyNjQxLCB0bXAKKyMgYWRkcCB0bXAsIGZv
bworIworCitjbGFzcyBOb2RlCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1Jl
Y3Vyc2UobGlzdCkKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IG5vZGUgfAorICAgICAgbm9k
ZS5hcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkKKyAgICB9CisgIGVu
ZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlh
dGVzUmVjdXJzZShsaXN0KQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4
CisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkKKyAgICBz
ZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBkZWYgYXJtVjdMb3dl
ck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgc2VsZgorICBlbmQKK2VuZAor
CitjbGFzcyBJbW1lZGlhdGUKKyAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVj
dXJzZShsaXN0KQorICAgIGlmIHZhbHVlIDwgMCBvciB2YWx1ZSA+IDI1NQorICAgICAgdG1wID0g
VG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
Y29kZU9yaWdpbiwgIm1vdmUiLCBbc2VsZiwgdG1wXSkKKyAgICAgIHRtcAorICAgIGVsc2UKKyAg
ICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJ
bW1lZGlhdGVzKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9k
ZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgY2FzZSBub2RlLm9wY29k
ZQorICAgICAgd2hlbiAibW92ZSIKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICB3aGVu
ICJhZGRpIiwgImFkZHAiLCAiYWRkaXMiLCAic3ViaSIsICJzdWJwIiwgInN1YmlzIgorICAgICAg
ICBpZiBub2RlLm9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBhbmQKKyAgICAgICAgICAgIG5v
ZGUub3BlcmFuZHNbMF0udmFsdWUgPCAwIGFuZAorICAgICAgICAgICAgbm9kZS5vcGVyYW5kc1sw
XS52YWx1ZSA+PSAyNTUgYW5kCisgICAgICAgICAgICBub2RlLm9wZXJhbmRzLnNpemUgPT0gMgor
ICAgICAgICAgIGlmIG5vZGUub3Bjb2RlID1+IC9hZGQvCisgICAgICAgICAgICBuZXdPcGNvZGUg
PSAic3ViIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICBuZXdPcGNvZGUgPSAiYWRkIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KKyAgICAgICAgICBlbmQK
KyAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5l
d09wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbSW1tZWRpYXRl
Lm5ldygtbm9kZS5vcGVyYW5kc1swXS52YWx1ZSldICsgbm9kZS5vcGVyYW5kc1sxLi4tMV0pCisg
ICAgICAgIGVsc2UKKyAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUuYXJtVjdMb3dlck1hbGZvcm1l
ZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QpCisgICAgICAgIGVuZAorICAgICAgd2hlbiAibXVs
aSIKKyAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAg
ICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgbmV3TGlzdCA8PCBJ
bnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzBd
LCB0bXBdKQorICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9y
aWdpbiwgIm11bGkiLCBbdG1wXSArIG5vZGUub3BlcmFuZHNbMS4uLTFdKQorICAgICAgICBlbHNl
CisgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVz
UmVjdXJzZShuZXdMaXN0KQorICAgICAgICBlbmQKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlz
dCA8PCBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0KQor
ICAgICAgZW5kCisgICAgZWxzZQorICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0K
KyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWlzcGxhY2VkIGFkZHJlc3Nlcy4g
Rm9yIGV4YW1wbGU6CisjCisjIGFkZGkgZm9vLCBbYmFyXQorIworIyB3aWxsIGJlY29tZToKKyMK
KyMgbG9hZGkgW2Jhcl0sIHRtcAorIyBhZGRpIGZvbywgdG1wCisjIHN0b3JlaSB0bXAsIFtiYXJd
CisjCisjIEFub3RoZXIgZXhhbXBsZToKKyMKKyMgYWRkaSBbZm9vXSwgYmFyCisjCisjIHdpbGwg
YmVjb21lOgorIworIyBsb2FkaSBbZm9vXSwgdG1wCisjIGFkZGkgdG1wLCBiYXIKKyMKKworZGVm
IGFybVY3QXNSZWdpc3RlcihwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFuZCwgc3VmZml4LCBuZWVk
U3RvcmUpCisgIHJldHVybiBvcGVyYW5kIHVubGVzcyBvcGVyYW5kLmFkZHJlc3M/CisgIAorICB0
bXAgPSBUbXAubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgaWYgc3VmZml4ID09ICJkIiB0aGVuIDpm
cHIgZWxzZSA6Z3ByIGVuZCkKKyAgcHJlTGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5j
b2RlT3JpZ2luLCAibG9hZCIgKyBzdWZmaXgsIFtvcGVyYW5kLCB0bXBdKQorICBpZiBuZWVkU3Rv
cmUKKyAgICBwb3N0TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAi
c3RvcmUiICsgc3VmZml4LCBbdG1wLCBvcGVyYW5kXSkKKyAgZW5kCisgIHRtcAorZW5kCisKK2Rl
ZiBhcm1WN0FzUmVnaXN0ZXJzKHByZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kcywgc3VmZml4KQor
ICBuZXdPcGVyYW5kcyA9IFtdCisgIG9wZXJhbmRzLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBv
cGVyYW5kLCBpbmRleCB8CisgICAgbmV3T3BlcmFuZHMgPDwgYXJtVjdBc1JlZ2lzdGVyKHByZUxp
c3QsIHBvc3RMaXN0LCBvcGVyYW5kLCBzdWZmaXgsIGluZGV4ID09IG9wZXJhbmRzLnNpemUgLSAx
KQorICB9CisgIG5ld09wZXJhbmRzCitlbmQKKworZGVmIGFybVY3TG93ZXJNaXNwbGFjZWRBZGRy
ZXNzZXMobGlzdCkKKyAgbmV3TGlzdCA9IFtdCisgIGxpc3QuZWFjaCB7CisgICAgfCBub2RlIHwK
KyAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICBwb3N0SW5zdHJ1Y3Rpb25zID0g
W10KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdoZW4gImFkZGkiLCAiYWRkcCIsICJh
ZGRpcyIsICJhbmRpIiwgImFuZHAiLCAibHNoaWZ0aSIsICJtdWxpIiwgIm5lZ2kiLCAibm90aSIs
ICJvcmkiLCAib3JpcyIsCisgICAgICAgICJvcnAiLCAicnNoaWZ0aSIsICJ1cnNoaWZ0aSIsICJz
dWJpIiwgInN1YnAiLCAic3ViaXMiLCAieG9yaSIsICJ4b3JwIiwgL15iaS8sIC9eYnAvLCAvXmJ0
aS8sCisgICAgICAgIC9eYnRwLywgL15jaS8sIC9eY3AvLCAvXnRpLworICAgICAgICBuZXdMaXN0
IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcm1WN0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUu
b3BlcmFuZHMsICJpIikpCisgICAgICB3aGVuICJiYmVxIiwgImJibmVxIiwgImJiYSIsICJiYmFl
cSIsICJiYmIiLCAiYmJiZXEiLCAiYnRibyIsICJidGJ6IiwgImJ0Ym56IiwgInRieiIsICJ0Ym56
IiwKKyAgICAgICAgInRibyIKKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9k
ZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9w
Y29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJtVjdBc1JlZ2lzdGVy
cyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAiYiIpKQorICAgICAg
d2hlbiAiYmJndCIsICJiYmd0ZXEiLCAiYmJsdCIsICJiYmx0ZXEiLCAiYnRicyIsICJ0YnMiCisg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3Ry
dWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImJzIikpCisgICAgICB3aGVuICJhZGRkIiwgImRpdmQi
LCAic3ViZCIsICJtdWxkIiwgInNxcnRkIiwgL15iZC8KKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJtVjdBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRz
LCAiZCIpKQorICAgICAgd2hlbiAiam1wIiwgImNhbGwiCisgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFthcm1WN0FzUmVnaXN0ZXIobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5k
c1swXSwgInAiLCBmYWxzZSldKQorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IG5vZGUK
KyAgICAgIGVuZAorICAgICAgbmV3TGlzdCArPSBwb3N0SW5zdHJ1Y3Rpb25zCisgICAgZWxzZQor
ICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMK
KyMgTG93ZXJpbmcgb2YgcmVnaXN0ZXIgcmV1c2UgaW4gY29tcGFyZSBpbnN0cnVjdGlvbnMuIEZv
ciBleGFtcGxlOgorIworIyBjaWVxIHQwLCB0MSwgdDAKKyMKKyMgd2lsbCBiZWNvbWU6CisjCisj
IG1vdiB0bXAsIHQwCisjIGNpZXEgdG1wLCB0MSwgdDAKKyMKKworZGVmIGFybVY3TG93ZXJSZWdp
c3RlclJldXNlKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9k
ZSB8CisgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgY2FzZSBub2RlLm9wY29k
ZQorICAgICAgd2hlbiAiY2llcSIsICJjaW5lcSIsICJjaWEiLCAiY2lhZXEiLCAiY2liIiwgImNp
YmVxIiwgImNpZ3QiLCAiY2lndGVxIiwgImNpbHQiLCAiY2lsdGVxIiwKKyAgICAgICAgImNwZXEi
LCAiY3BuZXEiLCAiY3BhIiwgImNwYWVxIiwgImNwYiIsICJjcGJlcSIsICJjcGd0IiwgImNwZ3Rl
cSIsICJjcGx0IiwgImNwbHRlcSIsCisgICAgICAgICJ0aW8iLCAidGlzIiwgInRpeiIsICJ0aW56
IiwgInRibyIsICJ0YnMiLCAidGJ6IiwgInRibnoiCisgICAgICAgIGlmIG5vZGUub3BlcmFuZHMu
c2l6ZSA9PSAyCisgICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1swXSA9PSBub2RlLm9wZXJhbmRz
WzFdCisgICAgICAgICAgICB0bXAgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAg
ICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1v
dmUiLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSkKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFt0bXAsIG5vZGUub3Bl
cmFuZHNbMV1dKQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQor
ICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgcmFpc2UgIldyb25nIG51bWJl
ciBvZiBhcmd1bWVudHMgYXQgI3tub2RlLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgbm9kZS5v
cGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgICBpZiBub2RlLm9wZXJhbmRzWzBdID09IG5vZGUu
b3BlcmFuZHNbMl0KKyAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6
Z3ByKQorICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3Jp
Z2luLCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzBdLCB0bXBdKQorICAgICAgICAgICAgbmV3TGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgW3RtcCwg
bm9kZS5vcGVyYW5kc1sxXSwgbm9kZS5vcGVyYW5kc1syXV0pCisgICAgICAgICAgZWxzaWYgbm9k
ZS5vcGVyYW5kc1sxXSA9PSBub2RlLm9wZXJhbmRzWzJdCisgICAgICAgICAgICB0bXAgPSBUbXAu
bmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1sxXSwgdG1w
XSkKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdp
biwgbm9kZS5vcGNvZGUsIFtub2RlLm9wZXJhbmRzWzBdLCB0bXAsIG5vZGUub3BlcmFuZHNbMl1d
KQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAg
IGVuZAorICAgICAgICBlbmQKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisg
ICAgICBlbmQKKyAgICBlbHNlCisgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICBlbmQKKyAgfQor
ICBuZXdMaXN0CitlbmQKKworIworIyBMZWEgc3VwcG9ydC4KKyMKKworY2xhc3MgQWRkcmVzcwor
ICBkZWYgYXJtVjdFbWl0TGVhKGRlc3RpbmF0aW9uKQorICAgIGlmIGRlc3RpbmF0aW9uID09IGJh
c2UKKyAgICAgICRhc20ucHV0cyAiYWRkcyAje2Rlc3RpbmF0aW9uLmFybVY3T3BlcmFuZH0sIFwj
I3tvZmZzZXQudmFsdWV9IgorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAiYWRkcyAje2Rlc3Rp
bmF0aW9uLmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09wZXJhbmR9LCBcIyN7b2Zmc2V0LnZh
bHVlfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgIGRlZiBhcm1W
N0VtaXRMZWEoZGVzdGluYXRpb24pCisgICAgcmFpc2UgIk1hbGZvcm1lZCBCYXNlSW5kZXgsIG9m
ZnNldCBzaG91bGQgYmUgemVybyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb2Zmc2V0
LnZhbHVlID09IDAKKyAgICAkYXNtLnB1dHMgImFkZC53ICN7ZGVzdGluYXRpb24uYXJtVjdPcGVy
YW5kfSwgI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwj
I3tzY2FsZVNoaWZ0fSIKKyAgZW5kCitlbmQKKworIyBGSVhNRTogd2UgY291bGQgc3VwcG9ydCBB
YnNvbHV0ZUFkZHJlc3MgZm9yIGxlYSwgYnV0IHdlIGRvbid0LgorCisjCisjIEFjdHVhbCBsb3dl
cmluZyBjb2RlIGZvbGxvd3MuCisjCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBsb3dlckFSTXY3
CisgICAgbXlMaXN0ID0gQGxpc3QKKyAgICAKKyAgICAjIFZlcmlmeSB0aGF0IHdlIHdpbGwgb25s
eSBzZWUgaW5zdHJ1Y3Rpb25zIGFuZCBsYWJlbHMuCisgICAgbXlMaXN0LmVhY2ggeworICAgICAg
fCBub2RlIHwKKyAgICAgIHVubGVzcyBub2RlLmlzX2E/IEluc3RydWN0aW9uIG9yCisgICAgICAg
ICAgbm9kZS5pc19hPyBMYWJlbCBvcgorICAgICAgICAgIG5vZGUuaXNfYT8gTG9jYWxMYWJlbCBv
cgorICAgICAgICAgIG5vZGUuaXNfYT8gU2tpcAorICAgICAgICByYWlzZSAiVW5leHBlY3RlZCAj
e25vZGUuaW5zcGVjdH0gYXQgI3tub2RlLmNvZGVPcmlnaW59IiAKKyAgICAgIGVuZAorICAgIH0K
KyAgICAKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyQnJhbmNoT3BzKG15TGlzdCkKKyAgICBteUxp
c3QgPSBhcm1WN0xvd2VyU2hpZnRPcHMobXlMaXN0KQorICAgIG15TGlzdCA9IGFybVY3TG93ZXJN
YWxmb3JtZWRBZGRyZXNzZXMobXlMaXN0KQorICAgIG15TGlzdCA9IGFybVY3TG93ZXJNYWxmb3Jt
ZWRBZGRyZXNzZXNEb3VibGUobXlMaXN0KQorICAgIG15TGlzdCA9IGFybVY3TG93ZXJNaXNwbGFj
ZWRJbW1lZGlhdGVzKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWFsZm9ybWVkSW1t
ZWRpYXRlcyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1pc3BsYWNlZEFkZHJlc3Nl
cyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdMb3dlclJlZ2lzdGVyUmV1c2UobXlMaXN0KQor
ICAgIG15TGlzdCA9IGFzc2lnblJlZ2lzdGVyc1RvVGVtcG9yYXJpZXMobXlMaXN0LCA6Z3ByLCBB
Uk12N19FWFRSQV9HUFJTKQorICAgIG15TGlzdCA9IGFzc2lnblJlZ2lzdGVyc1RvVGVtcG9yYXJp
ZXMobXlMaXN0LCA6ZnByLCBBUk12N19FWFRSQV9GUFJTKQorICAgIG15TGlzdC5lYWNoIHsKKyAg
ICAgIHwgbm9kZSB8CisgICAgICBub2RlLmxvd2VyKCJBUk12NyIpCisgICAgfQorICBlbmQKK2Vu
ZAorCitkZWYgYXJtVjdPcGVyYW5kcyhvcGVyYW5kcykKKyAgb3BlcmFuZHMubWFwe3x2fCB2LmFy
bVY3T3BlcmFuZH0uam9pbigiLCAiKQorZW5kCisKK2RlZiBhcm1WN0ZsaXBwZWRPcGVyYW5kcyhv
cGVyYW5kcykKKyAgYXJtVjdPcGVyYW5kcyhbb3BlcmFuZHNbLTFdXSArIG9wZXJhbmRzWzAuLi0y
XSkKK2VuZAorCitkZWYgZW1pdEFybVY3Q29tcGFjdChvcGNvZGUyLCBvcGNvZGUzLCBvcGVyYW5k
cykKKyAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgJGFzbS5wdXRzICIje29wY29kZTN9ICN7
YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgZWxzZQorICAgIHJhaXNlIHVubGVz
cyBvcGVyYW5kcy5zaXplID09IDIKKyAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8g
UmVnaXN0ZXJJRAorICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgJGFz
bS5wdXRzICIje29wY29kZTN9ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgZWxz
ZQorICAgICAgJGFzbS5wdXRzICIje29wY29kZTJ9ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3Bl
cmFuZHMpfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworZGVmIGVtaXRBcm1WNyhvcGNvZGUsIG9w
ZXJhbmRzKQorICBpZiBvcGVyYW5kcy5zaXplID09IDMKKyAgICAkYXNtLnB1dHMgIiN7b3Bjb2Rl
fSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgIGVsc2UKKyAgICByYWlzZSB1
bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVy
YW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3Bl
cmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgZW5kCitlbmQKKworZGVmIGVtaXRBcm1WN0RvdWJs
ZUJyYW5jaChicmFuY2hPcGNvZGUsIG9wZXJhbmRzKQorICAkYXNtLnB1dHMgInZjbXBlLmY2NCAj
e2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgJGFzbS5wdXRzICJ2bXJzIGFwc3Jf
bnpjdiwgZnBzY3IiCisgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0u
YXNtTGFiZWx9IgorZW5kCisKK2RlZiBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICB2YWx1ZSA9
IG9wZXJhbmRzWzBdCisgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICB3aGVuIDIKKyAgICBtYXNrID0g
SW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtMSkKKyAgd2hlbiAzCisgICAgbWFzayA9IG9wZXJh
bmRzWzFdCisgIGVsc2UKKyAgICByYWlzZSAiRXhwZWN0ZWQgMiBvciAzIG9wZXJhbmRzIGJ1dCBn
b3QgI3tvcGVyYW5kcy5zaXplfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICBlbmQKKyAgCisg
IGlmIG1hc2suaXNfYT8gSW1tZWRpYXRlIGFuZCBtYXNrLnZhbHVlID09IC0xCisgICAgJGFzbS5w
dXRzICJ0c3QgI3t2YWx1ZS5hcm1WN09wZXJhbmR9LCAje3ZhbHVlLmFybVY3T3BlcmFuZH0iCisg
IGVsc2lmIG1hc2suaXNfYT8gSW1tZWRpYXRlCisgICAgJGFzbS5wdXRzICJ0c3QudyAje3ZhbHVl
LmFybVY3T3BlcmFuZH0sICN7bWFzay5hcm1WN09wZXJhbmR9IgorICBlbHNlCisgICAgJGFzbS5w
dXRzICJ0c3QgI3t2YWx1ZS5hcm1WN09wZXJhbmR9LCAje21hc2suYXJtVjdPcGVyYW5kfSIKKyAg
ZW5kCitlbmQKKworZGVmIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsIGNvZGUpCisgICRhc20u
cHV0cyAibW92cyAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sIFwjMCIKKyAgJGFzbS5wdXRz
ICJjbXAgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3Bl
cmFuZH0iCisgICRhc20ucHV0cyAiaXQgI3tjb2RlfSIKKyAgJGFzbS5wdXRzICJtb3Yje2NvZGV9
ICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgXCMxIgorZW5kCisKK2RlZiBlbWl0QXJtVjdU
ZXN0U2V0KG9wZXJhbmRzLCBjb2RlKQorICAkYXNtLnB1dHMgIm1vdnMgI3tvcGVyYW5kc1stMV0u
YXJtVjdPcGVyYW5kfSwgXCMwIgorICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICAkYXNtLnB1
dHMgIml0ICN7Y29kZX0iCisgICRhc20ucHV0cyAibW92I3tjb2RlfSAje29wZXJhbmRzWy0xXS5h
cm1WN09wZXJhbmR9LCBcIzEiCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24KKyAgZGVmIGxvd2Vy
QVJNdjcKKyAgICAkYXNtLmNvbW1lbnQgY29kZU9yaWdpblN0cmluZworICAgIGNhc2Ugb3Bjb2Rl
CisgICAgd2hlbiAiYWRkaSIsICJhZGRwIiwgImFkZGlzIgorICAgICAgaWYgb3Bjb2RlID09ICJh
ZGRpcyIKKyAgICAgICAgc3VmZml4ID0gInMiCisgICAgICBlbHNlCisgICAgICAgIHN1ZmZpeCA9
ICIiCisgICAgICBlbmQKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNb
MF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19h
PyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdp
c3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAgYW5kIHN1ZmZpeC5lbXB0
eT8KKyAgICAgICAgICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAg
ICAgICRhc20ucHV0cyAibW92ICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAg
ICAgJGFzbS5wdXRzICJhZGRzICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAg
IGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19h
PyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdp
c3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklE
CisgICAgICAgICRhc20ucHV0cyAiYWRkcyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRz
KX0iCisgICAgICBlbHNlCisgICAgICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQor
ICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAg
ICAgICAgICAgICRhc20ucHV0cyAiYWRkcyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRz
KX0iCisgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAkYXNtLnB1dHMgImFk
ZCN7c3VmZml4fSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIGVu
ZAorICAgICAgZW5kCisgICAgd2hlbiAiYW5kaSIsICJhbmRwIgorICAgICAgZW1pdEFybVY3Q29t
cGFjdCgiYW5kcyIsICJhbmQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJvcmkiLCAib3JwIgorICAg
ICAgZW1pdEFybVY3Q29tcGFjdCgib3JycyIsICJvcnIiLCBvcGVyYW5kcykKKyAgICB3aGVuICJv
cmlzIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgib3JycyIsICJvcnJzIiwgb3BlcmFuZHMpCisg
ICAgd2hlbiAieG9yaSIsICJ4b3JwIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgiZW9ycyIsICJl
b3IiLCBvcGVyYW5kcykKKyAgICB3aGVuICJsc2hpZnRpIgorICAgICAgZW1pdEFybVY3Q29tcGFj
dCgibHNscyIsICJsc2xzIiwgb3BlcmFuZHMpCisgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgIGVt
aXRBcm1WN0NvbXBhY3QoImFzcnMiLCAiYXNycyIsIG9wZXJhbmRzKQorICAgIHdoZW4gInVyc2hp
ZnRpIgorICAgICAgZW1pdEFybVY3Q29tcGFjdCgibHNycyIsICJsc3JzIiwgb3BlcmFuZHMpCisg
ICAgd2hlbiAibXVsaSIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMiBvciBvcGVyYW5kc1sw
XSA9PSBvcGVyYW5kc1syXSBvciBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICBl
bWl0QXJtVjcoIm11bHMiLCBvcGVyYW5kcykKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRz
ICJtb3YgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3Bl
cmFuZH0iCisgICAgICAgICRhc20ucHV0cyAibXVscyAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFu
ZH0sICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJh
bmR9IgorICAgICAgZW5kCisgICAgd2hlbiAic3ViaSIsICJzdWJwIiwgInN1YmlzIgorICAgICAg
ZW1pdEFybVY3Q29tcGFjdCgic3VicyIsICJzdWJzIiwgb3BlcmFuZHMpCisgICAgd2hlbiAibmVn
aSIKKyAgICAgICRhc20ucHV0cyAicnNicyAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7
b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgXCMwIgorICAgIHdoZW4gIm5vdGkiCisgICAgICAk
YXNtLnB1dHMgIm12bnMgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBd
LmFybVY3T3BlcmFuZH0iCisgICAgd2hlbiAibG9hZGkiLCAibG9hZHAiCisgICAgICAkYXNtLnB1
dHMgImxkciAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAic3Rv
cmVpIiwgInN0b3JlcCIKKyAgICAgICRhc20ucHV0cyAic3RyICN7YXJtVjdPcGVyYW5kcyhvcGVy
YW5kcyl9IgorICAgIHdoZW4gImxvYWRiIgorICAgICAgJGFzbS5wdXRzICJsZHJiICN7YXJtVjdG
bGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJsb2FkYnMiCisgICAgICAkYXNt
LnB1dHMgImxkcnNiLncgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdo
ZW4gInN0b3JlYiIKKyAgICAgICRhc20ucHV0cyAic3RyYiAje2FybVY3T3BlcmFuZHMob3BlcmFu
ZHMpfSIKKyAgICB3aGVuICJsb2FkaCIKKyAgICAgICRhc20ucHV0cyAibGRyaCAje2FybVY3Rmxp
cHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAibG9hZGhzIgorICAgICAgJGFzbS5w
dXRzICJsZHJzaC53ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVu
ICJzdG9yZWgiCisgICAgICAkYXNtLnB1dHMgInN0cmggI3thcm1WN09wZXJhbmRzKG9wZXJhbmRz
KX0iCisgICAgd2hlbiAibG9hZGQiCisgICAgICAkYXNtLnB1dHMgInZsZHIuNjQgI3thcm1WN0Zs
aXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gInN0b3JlZCIKKyAgICAgICRhc20u
cHV0cyAidnN0ci42NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJhZGRk
IgorICAgICAgZW1pdEFybVY3KCJ2YWRkLmY2NCIsIG9wZXJhbmRzKQorICAgIHdoZW4gImRpdmQi
CisgICAgICBlbWl0QXJtVjcoInZkaXYuZjY0Iiwgb3BlcmFuZHMpCisgICAgd2hlbiAic3ViZCIK
KyAgICAgIGVtaXRBcm1WNygidnN1Yi5mNjQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJtdWxkIgor
ICAgICAgZW1pdEFybVY3KCJ2bXVsLmY2NCIsIG9wZXJhbmRzKQorICAgIHdoZW4gInNxcnRkIgor
ICAgICAgJGFzbS5wdXRzICJ2c3FydC5mNjQgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5k
cyl9IgorICAgIHdoZW4gImNpMmQiCisgICAgICAkYXNtLnB1dHMgInZtb3YgI3tvcGVyYW5kc1sx
XS5hcm1WN1NpbmdsZX0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICRhc20u
cHV0cyAidmN2dC5mNjQuczMyICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1sxXS5hcm1WN1NpbmdsZX0iCisgICAgd2hlbiAiYmRlcSIKKyAgICAgIGVtaXRBcm1WN0RvdWJs
ZUJyYW5jaCgiYmVxIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRuZXEiCisgICAgICAkYXNtLnB1
dHMgInZjbXBlLmY2NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRh
c20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2NyIgorICAgICAgaXNVbm9yZGVyZWQgPSBMb2Nh
bExhYmVsLnVuaXF1ZSgiYmRuZXEiKQorICAgICAgJGFzbS5wdXRzICJidnMgI3tMYWJlbFJlZmVy
ZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICRhc20u
cHV0cyAiYm5lICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93
ZXIoIkFSTXY3IikKKyAgICB3aGVuICJiZGd0IgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNo
KCJiZ3QiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGd0ZXEiCisgICAgICBlbWl0QXJtVjdEb3Vi
bGVCcmFuY2goImJnZSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkbHQiCisgICAgICBlbWl0QXJt
VjdEb3VibGVCcmFuY2goImJtaSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkbHRlcSIKKyAgICAg
IGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmxzIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRlcXVu
IgorICAgICAgJGFzbS5wdXRzICJ2Y21wZS5mNjQgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAu
LjFdKX0iCisgICAgICAkYXNtLnB1dHMgInZtcnMgYXBzcl9uemN2LCBmcHNjciIKKyAgICAgICRh
c20ucHV0cyAiYnZzICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJi
ZXEgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmRuZXF1biIKKyAgICAgIGVt
aXRBcm1WN0RvdWJsZUJyYW5jaCgiYm5lIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRndHVuIgor
ICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJiaGkiLCBvcGVyYW5kcykKKyAgICB3aGVuICJi
ZGd0ZXF1biIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYnBsIiwgb3BlcmFuZHMpCisg
ICAgd2hlbiAiYmRsdHVuIgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJibHQiLCBvcGVy
YW5kcykKKyAgICB3aGVuICJiZGx0ZXF1biIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgi
YmxlIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYnRkMmkiCisgICAgICAjIEZJWE1FOiBtYXkgYmUg
YSBnb29kIGlkZWEgdG8ganVzdCBnZXQgcmlkIG9mIHRoaXMgaW5zdHJ1Y3Rpb24sIHNpbmNlIHRo
ZSBpbnRlcnByZXRlcgorICAgICAgIyBjdXJyZW50bHkgZG9lcyBub3QgdXNlIGl0LgorICAgICAg
cmFpc2UgIkFSTXY3IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGNvZGUgeWV0LCAje2NvZGVPcmln
aW59IgorICAgIHdoZW4gInRkMmkiCisgICAgICAkYXNtLnB1dHMgInZjdnQuczMyLmY2NCAje0FS
TXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9
IgorICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tB
Uk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0iCisgICAgd2hlbiAiYmNkMmkiCisgICAgICAk
YXNtLnB1dHMgInZjdnQuczMyLmY2NCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSwg
I3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3Bl
cmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0i
CisgICAgICAkYXNtLnB1dHMgInZjdnQuZjY0LnMzMiAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3
T3BlcmFuZH0sICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJtVjdTaW5nbGV9IgorICAgICAgZW1pdEFy
bVY3RG91YmxlQnJhbmNoKCJibmUiLCBbQVJNdjdfU0NSQVRDSF9GUFIsIG9wZXJhbmRzWzBdLCBv
cGVyYW5kc1syXV0pCisgICAgICAkYXNtLnB1dHMgInRzdCAje29wZXJhbmRzWzFdLmFybVY3T3Bl
cmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICRhc20ucHV0cyAiYmVx
ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gIm1vdmR6IgorICAgICAgIyBGSVhN
RTogZWl0aGVyIHN1cHBvcnQgdGhpcyBvciByZW1vdmUgaXQuCisgICAgICByYWlzZSAiQVJNdjcg
ZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wY29kZSB5ZXQsICN7Y29kZU9yaWdpbn0iCisgICAgd2hl
biAicG9wIgorICAgICAgJGFzbS5wdXRzICJwb3AgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9
IgorICAgIHdoZW4gInB1c2giCisgICAgICAkYXNtLnB1dHMgInB1c2ggI3tvcGVyYW5kc1swXS5h
cm1WN09wZXJhbmR9IgorICAgIHdoZW4gIm1vdmUiLCAic3hpMnAiLCAienhpMnAiCisgICAgICBp
ZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgYXJtVjdNb3ZlSW1tZWRpYXRl
KG9wZXJhbmRzWzBdLnZhbHVlLCBvcGVyYW5kc1sxXSkKKyAgICAgIGVsc2UKKyAgICAgICAgJGFz
bS5wdXRzICJtb3YgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgZW5k
CisgICAgd2hlbiAibm9wIgorICAgICAgJGFzbS5wdXRzICJub3AiCisgICAgd2hlbiAiYmllcSIs
ICJicGVxIiwgImJiZXEiCisgICAgICBpZiBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFu
ZHNbMF0KKyAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9
LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgICBlbHNpZiBJbW1lZGlhdGUubmV3
KG5pbCwgMCkgPT0gb3BlcmFuZHNbMV0KKyAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5k
c1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICBl
bHNlCisgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4x
XSl9IgorICAgICAgZW5kCisgICAgICAkYXNtLnB1dHMgImJlcSAje29wZXJhbmRzWzJdLmFzbUxh
YmVsfSIKKyAgICB3aGVuICJiaW5lcSIsICJicG5lcSIsICJiYm5lcSIKKyAgICAgIGlmIEltbWVk
aWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAkYXNtLnB1dHMgInRzdCAj
e29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIK
KyAgICAgIGVsc2lmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1sxXQorICAgICAg
ICAkYXNtLnB1dHMgInRzdCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNb
MF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJjbXAgI3th
cm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICBlbmQKKyAgICAgICRhc20ucHV0
cyAiYm5lICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJpYSIsICJicGEiLCAi
YmJhIgorICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFd
KX0iCisgICAgICAkYXNtLnB1dHMgImJoaSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3
aGVuICJiaWFlcSIsICJicGFlcSIsICJiYmFlcSIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJt
VjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5wdXRzICJiaHMgI3tvcGVy
YW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmliIiwgImJwYiIsICJiYmIiCisgICAgICAk
YXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRh
c20ucHV0cyAiYmxvICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJpYmVxIiwg
ImJwYmVxIiwgImJiYmVxIgorICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9w
ZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgImJscyAje29wZXJhbmRzWzJdLmFzbUxh
YmVsfSIKKyAgICB3aGVuICJiaWd0IiwgImJwZ3QiLCAiYmJndCIKKyAgICAgICRhc20ucHV0cyAi
Y21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5wdXRzICJi
Z3QgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmlndGVxIiwgImJwZ3RlcSIs
ICJiYmd0ZXEiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNb
MC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmdlICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9Igor
ICAgIHdoZW4gImJpbHQiLCAiYnBsdCIsICJiYmx0IgorICAgICAgJGFzbS5wdXRzICJjbXAgI3th
cm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMgImJsdCAje29w
ZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWx0ZXEiLCAiYnBsdGVxIiwgImJibHRl
cSIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9
IgorICAgICAgJGFzbS5wdXRzICJibGUgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hl
biAiYnRpeiIsICJidHB6IiwgImJ0YnoiCisgICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQor
ICAgICAgJGFzbS5wdXRzICJiZXEgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgorICAgIHdoZW4g
ImJ0aW56IiwgImJ0cG56IiwgImJ0Ym56IgorICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykK
KyAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKKyAgICB3aGVu
ICJidGlvIiwgImJ0cG8iLCAiYnRibyIKKyAgICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisg
ICAgICAkYXNtLnB1dHMgImJ2cyAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCisgICAgd2hlbiAi
YnRpcyIsICJidHBzIiwgImJ0YnMiCisgICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICAg
ICAgJGFzbS5wdXRzICJibWkgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgorICAgIHdoZW4gImpt
cCIKKyAgICAgIGlmIG9wZXJhbmRzWzBdLmxhYmVsPworICAgICAgICAkYXNtLnB1dHMgImIgI3tv
cGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAibW92
IHBjLCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICBlbmQKKyAgICB3aGVuICJj
YWxsIgorICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAgICRhc20ucHV0cyAiYmx4
ICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMg
ImJseCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICBlbmQKKyAgICB3aGVuICJi
cmVhayIKKyAgICAgICRhc20ucHV0cyAiYmtwdCIKKyAgICB3aGVuICJyZXQiCisgICAgICAkYXNt
LnB1dHMgImJ4IGxyIgorICAgIHdoZW4gImNpZXEiLCAiY3BlcSIKKyAgICAgIGVtaXRBcm1WN0Nv
bXBhcmUob3BlcmFuZHMsICJlcSIpCisgICAgd2hlbiAiY2luZXEiLCAiY3BuZXEiCisgICAgICBl
bWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibmUiKQorICAgIHdoZW4gImNpYSIsICJjcGEiCisg
ICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiaGkiKQorICAgIHdoZW4gImNpYWVxIiwg
ImNwYWVxIgorICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImhzIikKKyAgICB3aGVu
ICJjaWIiLCAiY3BiIgorICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImxvIikKKyAg
ICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMs
ICJscyIpCisgICAgd2hlbiAiY2lndCIsICJjcGd0IgorICAgICAgZW1pdEFybVY3Q29tcGFyZShv
cGVyYW5kcywgImd0IikKKyAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAgZW1pdEFy
bVY3Q29tcGFyZShvcGVyYW5kcywgImdlIikKKyAgICB3aGVuICJjaWx0IiwgImNwbHQiCisgICAg
ICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibHQiKQorICAgIHdoZW4gImNpbHRlcSIsICJj
cGx0ZXEiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibGUiKQorICAgIHdoZW4g
InRpbyIsICJ0Ym8iCisgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAidnMiKQorICAg
IHdoZW4gInRpcyIsICJ0YnMiCisgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAibWki
KQorICAgIHdoZW4gInRpeiIsICJ0YnoiCisgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRz
LCAiZXEiKQorICAgIHdoZW4gInRpbnoiLCAidGJueiIKKyAgICAgIGVtaXRBcm1WN1Rlc3RTZXQo
b3BlcmFuZHMsICJuZSIpCisgICAgd2hlbiAicGVlayIKKyAgICAgICRhc20ucHV0cyAibGRyICN7
b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgW3NwLCBcIyN7b3BlcmFuZHNbMF0udmFsdWUgKiA0
fV0iCisgICAgd2hlbiAicG9rZSIKKyAgICAgICRhc20ucHV0cyAic3RyICN7b3BlcmFuZHNbMV0u
YXJtVjdPcGVyYW5kfSwgW3NwLCBcIyN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fV0iCisgICAgd2hl
biAiZmlpMmQiCisgICAgICAkYXNtLnB1dHMgInZtb3YgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJh
bmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVy
YW5kfSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRz
WzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1swXS5hcm1WN09wZXJhbmR9IgorICAgIHdoZW4gImJvIgorICAgICAgJGFzbS5wdXRzICJidnMg
I3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYnMiCisgICAgICAkYXNtLnB1dHMg
ImJtaSAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJieiIKKyAgICAgICRhc20u
cHV0cyAiYmVxICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJueiIKKyAgICAg
ICRhc20ucHV0cyAiYm5lICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgIHdoZW4gImxlYWki
LCAibGVhcCIKKyAgICAgIG9wZXJhbmRzWzBdLmFybVY3RW1pdExlYShvcGVyYW5kc1sxXSkKKyAg
ICB3aGVuICJzbXVsbGkiCisgICAgICByYWlzZSAiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyB0
byBzbXVsbCBpbiAje3NlbGYuaW5zcGVjdH0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNz
IG9wZXJhbmRzLmxlbmd0aCA9PSA0CisgICAgICAkYXNtLnB1dHMgInNtdWxsICN7b3BlcmFuZHNb
Ml0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1szXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRz
WzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICBlbHNl
CisgICAgICByYWlzZSAiVW5oYW5kbGVkIG9wY29kZSAje29wY29kZX0gYXQgI3tjb2RlT3JpZ2lu
U3RyaW5nfSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vYXNtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2FzbS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNzIgQEAKKyMhL3Vz
ci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
JDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVp
cmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3Jl
cXVpcmUgInNlbGZfaGFzaCIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3Jt
IgorCitjbGFzcyBBc3NlbWJsZXIKKyAgZGVmIGluaXRpYWxpemUob3V0cCkKKyAgICBAb3V0cCA9
IG91dHAKKyAgICBAc3RhdGUgPSA6Y3BwCisgICAgQGNvbW1lbnRTdGF0ZSA9IDpub25lCisgICAg
QGNvbW1lbnQgPSBuaWwKKyAgZW5kCisgIAorICBkZWYgZW50ZXJBc20KKyAgICBAb3V0cC5wdXRz
ICJhc20gKCIKKyAgICBAc3RhdGUgPSA6YXNtCisgIGVuZAorICAKKyAgZGVmIGxlYXZlQXNtCisg
ICAgcHV0c0xhc3RDb21tZW50CisgICAgQG91dHAucHV0cyAiKTsiCisgICAgQHN0YXRlID0gOmNw
cAorICBlbmQKKyAgCisgIGRlZiBpbkFzbQorICAgIGVudGVyQXNtCisgICAgeWllbGQKKyAgICBs
ZWF2ZUFzbQorICBlbmQKKyAgCisgIGRlZiBsYXN0Q29tbWVudAorICAgIGlmIEBjb21tZW50Cisg
ICAgICByZXN1bHQgPSAiLy8gI3tAY29tbWVudH0iCisgICAgZWxzZQorICAgICAgcmVzdWx0ID0g
IiIKKyAgICBlbmQKKyAgICBAY29tbWVudFN0YXRlID0gOm5vbmUKKyAgICBAY29tbWVudCA9IG5p
bAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwdXRzTGFzdENvbW1lbnQKKyAgICBjb21t
ZW50ID0gbGFzdENvbW1lbnQKKyAgICB1bmxlc3MgY29tbWVudC5lbXB0eT8KKyAgICAgIEBvdXRw
LnB1dHMgY29tbWVudAorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwdXRzKCpsaW5lKQorICAg
IHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnB1dHMoIlwiXFx0IiArIGxp
bmUuam9pbignJykgKyAiXFxuXCIgI3tsYXN0Q29tbWVudH0iKQorICBlbmQKKyAgCisgIGRlZiBw
cmludChsaW5lKQorICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgIEBvdXRwLnBy
aW50KCJcIiIgKyBsaW5lICsgIlwiIikKKyAgZW5kCisgIAorICBkZWYgcHV0c0xhYmVsKGxhYmVs
TmFtZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wdXRzKCJP
RkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwoI3tsYWJlbE5hbWV9KSAje2xhc3RDb21tZW50fSIpCisg
IGVuZAorICAKKyAgZGVmIHB1dHNMb2NhbExhYmVsKGxhYmVsTmFtZSkKKyAgICByYWlzZSB1bmxl
c3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wdXRzKCJMT0NBTF9MQUJFTF9TVFJJTkcoI3ts
YWJlbE5hbWV9KSBcIjpcXG5cIiAje2xhc3RDb21tZW50fSIpCisgIGVuZAorICAKKyAgZGVmIHNl
bGYubGFiZWxSZWZlcmVuY2UobGFiZWxOYW1lKQorICAgICJcIiBTWU1CT0xfU1RSSU5HKCN7bGFi
ZWxOYW1lfSkgXCIiCisgIGVuZAorICAKKyAgZGVmIHNlbGYubG9jYWxMYWJlbFJlZmVyZW5jZShs
YWJlbE5hbWUpCisgICAgIlwiIExPQ0FMX0xBQkVMX1NUUklORygje2xhYmVsTmFtZX0pIFwiIgor
ICBlbmQKKyAgCisgIGRlZiBjb21tZW50KHRleHQpCisgICAgY2FzZSBAY29tbWVudFN0YXRlCisg
ICAgd2hlbiA6bm9uZQorICAgICAgQGNvbW1lbnQgPSB0ZXh0CisgICAgICBAY29tbWVudFN0YXRl
ID0gOm9uZQorICAgIHdoZW4gOm9uZQorICAgICAgQG91dHAucHV0cyAiLy8gI3tAY29tbWVudH0i
CisgICAgICBAb3V0cC5wdXRzICIvLyAje3RleHR9IgorICAgICAgQGNvbW1lbnQgPSBuaWwKKyAg
ICAgIEBjb21tZW50U3RhdGUgPSA6bWFueQorICAgIHdoZW4gOm1hbnkKKyAgICAgIEBvdXRwLnB1
dHMgIi8vICN7dGV4dH0iCisgICAgZWxzZQorICAgICAgcmFpc2UKKyAgICBlbmQKKyAgZW5kCitl
bmQKKworYXNtRmlsZSA9IEFSR1Yuc2hpZnQKK29mZnNldHNGaWxlID0gQVJHVi5zaGlmdAorb3V0
cHV0RmxubSA9IEFSR1Yuc2hpZnQKKworJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBQYXJzaW5n
ICN7YXNtRmlsZX0gYW5kICN7b2Zmc2V0c0ZpbGV9IGFuZCBjcmVhdGluZyBhc3NlbWJseSBmaWxl
ICN7b3V0cHV0RmxubX0uIgorCitvZmZzZXRzTGlzdCwgY29uZmlnSW5kZXggPSBvZmZzZXRzQW5k
Q29uZmlndXJhdGlvbkluZGV4KG9mZnNldHNGaWxlKQoraW5wdXREYXRhID0gSU86OnJlYWQoYXNt
RmlsZSkKKworaW5wdXRIYXNoID0KKyAgIi8vIG9mZmxpbmVhc20gaW5wdXQgaGFzaDogIiArIERp
Z2VzdDo6U0hBMS5oZXhkaWdlc3QoaW5wdXREYXRhKSArCisgICIgIiArIERpZ2VzdDo6U0hBMS5o
ZXhkaWdlc3QoKG9mZnNldHNMaXN0ICsgW2NvbmZpZ0luZGV4XSkuam9pbignICcpKSArCisgICIg
IiArIHNlbGZIYXNoCisKK2lmIEZpbGVUZXN0LmV4aXN0PyBvdXRwdXRGbG5tCisgIEZpbGUub3Bl
bihvdXRwdXRGbG5tLCAiciIpIHsKKyAgICB8IGlucCB8CisgICAgZmlyc3RMaW5lID0gaW5wLmdl
dHMKKyAgICBpZiBmaXJzdExpbmUgYW5kIGZpcnN0TGluZS5jaG9tcCA9PSBpbnB1dEhhc2gKKyAg
ICAgICRzdGRlcnIucHV0cyAib2ZmbGluZWFzbTogTm90aGluZyBjaGFuZ2VkLiIKKyAgICAgIGV4
aXQgMAorICAgIGVuZAorICB9CitlbmQKKworRmlsZS5vcGVuKG91dHB1dEZsbm0sICJ3Iikgewor
ICB8IG91dHAgfAorICAkb3V0cHV0ID0gb3V0cAorICAkb3V0cHV0LnB1dHMgaW5wdXRIYXNoCisg
IAorICAkYXNtID0gQXNzZW1ibGVyLm5ldygkb3V0cHV0KQorICAKKyAgYXN0ID0gcGFyc2UobGV4
KGlucHV0RGF0YSkpCisgIAorICBmb3JTZXR0aW5ncyhjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlv
bnMoYXN0KVtjb25maWdJbmRleF0sIGFzdCkgeworICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93
TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0
aW5ncykKKyAgICBsb3dMZXZlbEFTVCA9IGxvd0xldmVsQVNULnJlc29sdmUoKmJ1aWxkT2Zmc2V0
c01hcChsb3dMZXZlbEFTVCwgb2Zmc2V0c0xpc3QpKQorICAgIGVtaXRDb2RlSW5Db25maWd1cmF0
aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kKSB7CisgICAgICAkYXNt
LmluQXNtIHsKKyAgICAgICAgbG93TGV2ZWxBU1QubG93ZXIoYmFja2VuZCkKKyAgICAgIH0KKyAg
ICB9CisgIH0KK30KKworJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBBc3NlbWJseSBmaWxlICN7
b3V0cHV0RmxubX0gc3VjY2Vzc2Z1bGx5IGdlbmVyYXRlZC4iCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAzOSBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIworIyBCYXNlIHV0aWxp
dHkgdHlwZXMgZm9yIHRoZSBBU1QuCisjCisKKyMgVmFsaWQgbWV0aG9kcyBmb3IgTm9kZToKKyMK
KyMgbm9kZS5jaGlsZHJlbiAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGltbWVkaWF0ZSBjaGlsZHJl
bi4KKyMKKyMgbm9kZS5kZXNjZW5kZW50cyAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBzdHJp
Y3QgZGVzY2VuZGFudHMgKGNoaWxkcmVuCisjICAgICBhbmQgY2hpbGRyZW4gb2YgY2hpbGRyZW4s
IHRyYW5zaXRpdmVseSkuCisjCisjIG5vZGUuZmxhdHRlbiAtPiBSZXR1cm5zIGFuIGFycmF5IGNv
bnRhaW5pbmcgdGhlIHN0cmljdCBkZXNjZW5kYW50cyBhbmQKKyMgICAgIHRoZSBub2RlIGl0c2Vs
Zi4KKyMKKyMgbm9kZS5maWx0ZXIodHlwZSkgLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5n
IHRob3NlIGVsZW1lbnRzIGluCisjICAgICBub2RlLmZsYXR0ZW4gdGhhdCBhcmUgb2YgdGhlIGdp
dmVuIHR5cGUgKGlzX2E/IHR5cGUgcmV0dXJucyB0cnVlKS4KKyMKKyMgbm9kZS5tYXBDaGlsZHJl
bnt8dnwgLi4ufSAtPiBSZXR1cm5zIGEgbmV3IG5vZGUgd2l0aCBhbGwgY2hpbGRyZW4KKyMgICAg
IHJlcGxhY2VkIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gYmxvY2suCisjCisjIEV4YW1wbGVzOgor
IworIyBub2RlLmZpbHRlcihTZXR0aW5nKS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzZXR0
aW5ncyB0aGF0IHRoZSBBU1QncworIyAgICAgSWZUaGVuRWxzZSBibG9ja3MgZGVwZW5kIG9uLgor
IworIyBub2RlLmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhl
IHN0cnVjdHVyZSBvZmZzZXRzCisjICAgICB0aGF0IHRoZSBBU1QgZGVwZW5kcyBvbi4KKworY2xh
c3MgTm9kZQorICBhdHRyX3JlYWRlciA6Y29kZU9yaWdpbgorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbikKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgZW5kCisgIAorICBk
ZWYgY29kZU9yaWdpblN0cmluZworICAgICJsaW5lIG51bWJlciAje0Bjb2RlT3JpZ2lufSIKKyAg
ZW5kCisgIAorICBkZWYgZGVzY2VuZGFudHMKKyAgICBjaGlsZHJlbi5jb2xsZWN0e3x2fCB2LmZs
YXR0ZW59LmZsYXR0ZW4KKyAgZW5kCisgIAorICBkZWYgZmxhdHRlbgorICAgIFtzZWxmXSArIGRl
c2NlbmRhbnRzCisgIGVuZAorICAKKyAgZGVmIGZpbHRlcih0eXBlKQorICAgIGZsYXR0ZW4uc2Vs
ZWN0e3x2fCB2LmlzX2E/IHR5cGV9CisgIGVuZAorZW5kCisKK2NsYXNzIE5vQ2hpbGRyZW4gPCBO
b2RlCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbXQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0S2V5Cisg
IGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAKKyAgZGVmIGluaXRpYWxpemUoc3RydWN0
LCBmaWVsZCkKKyAgICBAc3RydWN0ID0gc3RydWN0CisgICAgQGZpZWxkID0gZmllbGQKKyAgZW5k
CisgIAorICBkZWYgaGFzaAorICAgIEBzdHJ1Y3QuaGFzaCArIEBmaWVsZC5oYXNoICogMworICBl
bmQKKyAgCisgIGRlZiBlcWw/KG90aGVyKQorICAgIEBzdHJ1Y3QgPT0gb3RoZXIuc3RydWN0IGFu
ZCBAZmllbGQgPT0gb3RoZXIuZmllbGQKKyAgZW5kCitlbmQKKworIworIyBBU1Qgbm9kZXMuCisj
CisKK2NsYXNzIFN0cnVjdE9mZnNldCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVj
dCwgOmZpZWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxk
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVs
ZCA9IGZpZWxkCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxmLmZv
ckZpZWxkKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAga2V5ID0gU3RydWN0T2Zmc2V0
S2V5Lm5ldyhzdHJ1Y3QsIGZpZWxkKQorICAgIAorICAgIHVubGVzcyBAQG1hcHBpbmdba2V5XQor
ICAgICAgQEBtYXBwaW5nW2tleV0gPSBTdHJ1Y3RPZmZzZXQubmV3KGNvZGVPcmlnaW4sIHN0cnVj
dCwgZmllbGQpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW2tleV0KKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICIje3N0cnVjdH06OiN7ZmllbGR9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3Ro
ZXIpCisgICAgaWYgQHN0cnVjdCAhPSBvdGhlci5zdHJ1Y3QKKyAgICAgIHJldHVybiBAc3RydWN0
IDw9PiBvdGhlci5zdHJ1Y3QKKyAgICBlbmQKKyAgICBAZmllbGQgPD0+IG90aGVyLmZpZWxkCisg
IGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFi
ZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAg
ZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3Mg
U2l6ZW9mIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6c3RydWN0CisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBA
c3RydWN0ID0gc3RydWN0CisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBz
ZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgc3RydWN0KQorICAgIHVubGVzcyBAQG1hcHBpbmdbc3Ry
dWN0XQorICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBTaXplb2YubmV3KGNvZGVPcmlnaW4sIHN0
cnVjdCkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbc3RydWN0XQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgInNpemVvZiAje0BzdHJ1Y3R9IgorICBlbmQKKyAgCisgIGRlZiA8PT4ob3RoZXIp
CisgICAgQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/
CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisg
IAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/
CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlIDwgTm9DaGlsZHJlbgor
ICBhdHRyX3JlYWRlciA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZh
bHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhbHVlID0gdmFsdWUKKyAgICByYWlz
ZSAiQmFkIGltbWVkaWF0ZSB2YWx1ZSAje3ZhbHVlLmluc3BlY3R9IGF0ICN7Y29kZU9yaWdpblN0
cmluZ30iIHVubGVzcyB2YWx1ZS5pc19hPyBJbnRlZ2VyCisgIGVuZAorICAKKyAgZGVmIGR1bXAK
KyAgICAiI3t2YWx1ZX0iCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQorICAgIG90aGVyLmlz
X2E/IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUgPT0gQHZhbHVlCisgIGVuZAorICAKKyAgZGVm
IGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UK
KyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5kCisgIAorICBkZWYg
cmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVm
dCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgor
ICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFk
ZEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQp
KQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1
bXB9KSIKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxzZQorICBlbmQKKyAgCisg
IGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBpbW1lZGlhdGU/CisgICAg
dHJ1ZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICBmYWxzZQorICBlbmQKK2VuZAor
CitjbGFzcyBTdWJJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0
CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVu
ZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAg
ZGVmIG1hcENoaWxkcmVuCisgICAgU3ViSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxk
IEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7
bGVmdC5kdW1wfSAtICN7cmlnaHQuZHVtcH0pIgorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPwor
ICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAK
KyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPwor
ICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMgPCBOb2RlCisgIGF0
dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0Cisg
ICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQs
IEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBNdWxJbW1lZGlhdGVz
Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICogI3tyaWdodC5kdW1wfSkiCisgIGVu
ZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFiZWw/
CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAgZW5k
CisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgTmVn
SW1tZWRpYXRlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxk
ID0gY2hpbGQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGNoaWxkXQorICBlbmQK
KyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIE5lZ0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwg
KHlpZWxkIEBjaGlsZCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKC0je0BjaGlsZC5k
dW1wfSkiCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAor
ICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAg
IHRydWUKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQK
KworY2xhc3MgUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAg
ZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdb
bmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4s
IG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICBuYW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5k
CisgIAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRl
PworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIHRydWUKKyAgZW5k
CitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6
bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9
CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5sZXNzIEBA
bWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gRlBSZWdpc3RlcklELm5ldyhj
b2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgbmFtZQorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVm
IGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICB0
cnVlCisgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlIDwgTm9DaGlsZHJlbgorICBhdHRyX3Jl
YWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBAbWFwcGlu
ZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgdW5s
ZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gVmFyaWFibGUubmV3
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAor
ICAKKyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MgPCBO
b2RlCisgIGF0dHJfcmVhZGVyIDpiYXNlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBiYXNlLCBvZmZzZXQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAYmFz
ZSA9IGJhc2UKKyAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgICAgcmFpc2UgIkJhZCBiYXNlIGZvciBh
ZGRyZXNzICN7YmFzZS5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgYmFz
ZS5pc19hPyBWYXJpYWJsZSBvciBiYXNlLnJlZ2lzdGVyPworICAgIHJhaXNlICJCYWQgb2Zmc2V0
IGZvciBhZGRyZXNzICN7b2Zmc2V0Lmluc3BlY3R9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVu
bGVzcyBvZmZzZXQuaXNfYT8gVmFyaWFibGUgb3Igb2Zmc2V0LmltbWVkaWF0ZT8KKyAgZW5kCisg
IAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGJhc2UsIEBvZmZzZXRdCisgIGVuZAorICAKKyAgZGVm
IG1hcENoaWxkcmVuCisgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwg
KHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7b2Zmc2V0LmR1
bXB9WyN7YmFzZS5kdW1wfV0iCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgdHJ1ZQor
ICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBpbW1l
ZGlhdGU/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UK
KyAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9kZQorICBhdHRyX3JlYWRlciA6YmFz
ZSwgOmluZGV4LCA6c2NhbGUsIDpvZmZzZXQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgQGJhc2UgPSBiYXNlCisgICAgQGluZGV4ID0gaW5kZXgKKyAgICBAc2NhbGUgPSBzY2FsZQor
ICAgIHJhaXNlIHVubGVzcyBbMSwgMiwgNCwgOF0ubWVtYmVyPyBAc2NhbGUKKyAgICBAb2Zmc2V0
ID0gb2Zmc2V0CisgIGVuZAorICAKKyAgZGVmIHNjYWxlU2hpZnQKKyAgICBjYXNlIHNjYWxlCisg
ICAgd2hlbiAxCisgICAgICAwCisgICAgd2hlbiAyCisgICAgICAxCisgICAgd2hlbiA0CisgICAg
ICAyCisgICAgd2hlbiA4CisgICAgICAzCisgICAgZWxzZQorICAgICAgcmFpc2UgIkJhZCBzY2Fs
ZSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIFtAYmFzZSwgQGluZGV4LCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlp
ZWxkIEBpbmRleCksIEBzY2FsZSwgKHlpZWxkIEBvZmZzZXQpKQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfSwgI3tpbmRleC5kdW1wfSwgI3tz
Y2FsZX1dIgorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIHRydWUKKyAgZW5kCisgIAor
ICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAg
IGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5k
CisKK2NsYXNzIEFic29sdXRlQWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOmFk
ZHJlc3MKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGFkZHJlc3MpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICIje2FkZHJlc3MuZHVtcH1bXSIKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8K
KyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAK
KyAgZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8K
KyAgICBmYWxzZQorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbiA8IE5vZGUKKyAgYXR0
cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBvcGNvZGUsIG9wZXJhbmRzKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG9wY29k
ZSA9IG9wY29kZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIGNo
aWxkcmVuCisgICAgb3BlcmFuZHMKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2Mp
CisgICAgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5tYXAo
JnByb2MpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0IiArIG9wY29kZS50b19zICsg
IiAiICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCisgIGVuZAorZW5k
CisKK2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRl
cnJvciIKKyAgZW5kCitlbmQKKworY2xhc3MgQ29uc3REZWNsIDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6dmFyaWFibGUsIDp2YWx1ZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFy
aWFibGUsIHZhbHVlKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHZhcmlhYmxlID0gdmFy
aWFibGUKKyAgICBAdmFsdWUgPSB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAg
IFtAdmFyaWFibGUsIEB2YWx1ZV0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBD
b25zdERlY2wubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAdmFyaWFibGUpLCAoeWllbGQgQHZhbHVl
KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJjb25zdCAje0B2YXJpYWJsZS5kdW1wfSA9
ICN7QHZhbHVlLmR1bXB9IgorICBlbmQKK2VuZAorCiskbGFiZWxNYXBwaW5nID0ge30KKworY2xh
c3MgTGFiZWwgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5h
bWUgPSBuYW1lCisgIGVuZAorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1l
KQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNv
bGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTGFiZWwK
KyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFiZWwubmV3KGNvZGVPcmln
aW4sIG5hbWUpCisgICAgZW5kCisgICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisg
IGRlZiBkdW1wCisgICAgIiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVs
IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFt
ZQorICBlbmQKKworICBAQHVuaXF1ZU5hbWVDb3VudGVyID0gMAorICAKKyAgZGVmIHNlbGYuZm9y
TmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAg
IHJhaXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBp
bmdbbmFtZV0uaXNfYT8gTG9jYWxMYWJlbAorICAgIGVsc2UKKyAgICAgICRsYWJlbE1hcHBpbmdb
bmFtZV0gPSBMb2NhbExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgIGVuZAorICAgICRs
YWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgc2VsZi51bmlxdWUoY29tbWVudCkK
KyAgICBuZXdOYW1lID0gIl8je2NvbW1lbnR9IgorICAgIGlmICRsYWJlbE1hcHBpbmdbbmV3TmFt
ZV0KKyAgICAgIHdoaWxlICRsYWJlbE1hcHBpbmdbbmV3TmFtZSA9ICJfI3tAQHVuaXF1ZU5hbWVD
b3VudGVyfV8je2NvbW1lbnR9Il0KKyAgICAgICAgQEB1bmlxdWVOYW1lQ291bnRlciArPSAxCisg
ICAgICBlbmQKKyAgICBlbmQKKyAgICBmb3JOYW1lKG5pbCwgbmV3TmFtZSkKKyAgZW5kCisgIAor
ICBkZWYgY2xlYW5OYW1lCisgICAgaWYgbmFtZSA9fiAvXlwuLworICAgICAgIl8iICsgbmFtZVsx
Li4tMV0KKyAgICBlbHNlCisgICAgICBuYW1lCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiI3tuYW1lfToiCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlIDwg
Tm9kZQorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAg
ZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBt
YXBDaGlsZHJlbgorICAgIExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxh
YmVsKSkKKyAgZW5kCisgIAorICBkZWYgbmFtZQorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgIGxhYmVsLm5hbWUKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAg
ICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICB0cnVlCisgIGVuZAorZW5kCisK
K2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDps
YWJlbAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBAbGFiZWwgPSBsYWJlbAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJl
bgorICAgIFtAbGFiZWxdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTG9jYWxM
YWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgIGVuZAorICAK
KyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICBs
YWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisg
IAorICBkZWYgbGFiZWw/CisgICAgdHJ1ZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZSA8
IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxpc3QKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIGxpc3QpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGlzdCA9IGxpc3QKKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBsaXN0CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxk
cmVuKCZwcm9jKQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBAbGlzdC5tYXAoJnByb2Mp
KQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGlzdC5jb2xsZWN0e3x2fCB2LmR1bXB9Lmpv
aW4oIlxuIikKKyAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hpbGRyZW4KKyAgZGVmIGlu
aXRpYWxpemUKKyAgICBzdXBlcihuaWwpCisgIGVuZAorICAKKyAgQEBpbnN0YW5jZSA9IFRydWUu
bmV3CisgIAorICBkZWYgc2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAor
ICBkZWYgdmFsdWUKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAidHJ1ZSIK
KyAgZW5kCitlbmQKKworY2xhc3MgRmFsc2UgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXpl
CisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBGYWxzZS5uZXcKKyAg
CisgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgQEBpbnN0YW5jZQorICBlbmQKKyAgCisgIGRlZiB2
YWx1ZQorICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiZmFsc2UiCisgIGVu
ZAorZW5kCisKK2NsYXNzIFRydWVDbGFzcworICBkZWYgYXNOb2RlCisgICAgVHJ1ZS5pbnN0YW5j
ZQorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZUNsYXNzCisgIGRlZiBhc05vZGUKKyAgICBGYWxz
ZS5pbnN0YW5jZQorICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nIDwgTm9DaGlsZHJlbgorICBh
dHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkK
KyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIEBA
bWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisg
ICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgQEBtYXBwaW5nW25hbWVdID0gU2V0dGlu
Zy5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAg
ZW5kCisgIAorICBkZWYgZHVtcAorICAgIG5hbWUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kIDwg
Tm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0
ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisg
ICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQW5k
Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5kCisg
IAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3JpZ2h0LmR1bXB9KSIKKyAg
ZW5kCitlbmQKKworY2xhc3MgT3IgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQK
KyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5k
CisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBk
ZWYgbWFwQ2hpbGRyZW4KKyAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlp
ZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBv
ciAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCitlbmQKKworY2xhc3MgTm90IDwgTm9kZQorICBhdHRy
X3JlYWRlciA6Y2hpbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGNoaWxkID0gY2hpbGQKKyAgZW5kCisgIAorICBk
ZWYgY2hpbGRyZW4KKyAgICBbQGxlZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hp
bGRyZW4KKyAgICBOb3QubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICBlbmQKKyAg
CisgIGRlZiBkdW1wCisgICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2Ns
YXNzIFNraXAgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdHNraXAiCisg
IGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2UgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpwcmVk
aWNhdGUsIDp0aGVuQ2FzZQorICBhdHRyX2FjY2Vzc29yIDplbHNlQ2FzZQorICAKKyAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZSkKKyAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIEBwcmVkaWNhdGUgPSBwcmVkaWNhdGUKKyAgICBAdGhlbkNhc2UgPSB0aGVu
Q2FzZQorICAgIEBlbHNlQ2FzZSA9IFNraXAubmV3KGNvZGVPcmlnaW4pCisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgaWYgQGVsc2VDYXNlCisgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5D
YXNlLCBAZWxzZUNhc2VdCisgICAgZWxzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZV0K
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBJZlRoZW5FbHNlLm5l
dyhjb2RlT3JpZ2luLCAoeWllbGQgQHByZWRpY2F0ZSksICh5aWVsZCBAdGhlbkNhc2UpLCAoeWll
bGQgQGVsc2VDYXNlKSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJpZiAje3ByZWRpY2F0
ZS5kdW1wfVxuIiArIHRoZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsgZWxzZUNhc2UuZHVtcCAr
ICJcbmVuZCIKKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8gPCBOb2RlCisgIGF0dHJfcmVhZGVy
IDpuYW1lLCA6dmFyaWFibGVzLCA6Ym9keQorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5h
bWUgPSBuYW1lCisgICAgQHZhcmlhYmxlcyA9IHZhcmlhYmxlcworICAgIEBib2R5ID0gYm9keQor
ICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEB2YXJpYWJsZXMgKyBbQGJvZHldCisgIGVu
ZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIEBuYW1l
LCBAdmFyaWFibGVzLm1hcHt8dnwgeWllbGQgdn0sICh5aWVsZCBAYm9keSkpCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFibGVzLmNvbGxlY3R7fHZ8
IHYuZHVtcH0uam9pbigiLCAiKSArICIpXG4iICsgYm9keS5kdW1wICsgIlxuZW5kIgorICBlbmQK
K2VuZAorCitjbGFzcyBNYWNyb0NhbGwgPCBOb2RlCisgIGF0dHJfcmVhZGVyIDpuYW1lLCA6b3Bl
cmFuZHMKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQor
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQG5hbWUgPSBuYW1lCisgICAgQG9wZXJhbmRzID0g
b3BlcmFuZHMKKyAgICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAgQG9wZXJhbmRzLmVhY2h7
fHZ8IHJhaXNlIHVubGVzcyB2fQorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIEBvcGVy
YW5kcworICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICBNYWNyb0NhbGwu
bmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICJcdCN7bmFtZX0oIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVt
cH0uam9pbigiLCAiKSArICIpIgorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDk2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJl
ICJhcm12NyIKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIng4NiIKKworQkFDS0VORFMgPQorICBb
CisgICAiWDg2IiwKKyAgICJBUk12NyIKKyAgXQorCisjIEtlZXAgdGhlIHNldCBvZiB3b3JraW5n
IGJhY2tlbmRzIHNlcGFyYXRlIGZyb20gdGhlIHNldCBvZiBiYWNrZW5kcyB0aGF0IG1pZ2h0IGJl
CisjIHN1cHBvcnRlZC4gVGhpcyBpcyBncmVhdCBiZWNhdXNlIHRoZSBCQUNLRU5EUyBsaXN0IGlz
IGFsbW9zdCBsaWtlIGEgcmVzZXJ2ZWQKKyMgd29yZHMgbGlzdCwgaW4gdGhhdCBpdCBjYXVzZXMg
c2V0dGluZ3MgcmVzb2x1dGlvbiB0byB0cmVhdCB0aG9zZSB3b3JkcyBzcGVjaWFsbHkuCisjIEhl
bmNlIHRoaXMgbGV0cyB1cyBzZXQgYXNpZGUgdGhlIG5hbWUgb2YgYSBiYWNrZW5kIHdlIG1pZ2h0
IHdhbnQgdG8gc3VwcG9ydCBpbgorIyB0aGUgZnV0dXJlIHdoaWxlIG5vdCBhY3R1YWxseSBzdXBw
b3J0aW5nIHRoZSBiYWNrZW5kIHlldC4KK1dPUktJTkdfQkFDS0VORFMgPQorICBbCisgICAiWDg2
IiwKKyAgICJBUk12NyIKKyAgXQorCitCQUNLRU5EX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEo
JyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFonKQorCitjbGFzcyBOb2RlCisgIGRlZiBs
b3dlcihuYW1lKQorICAgIHNlbmQoImxvd2VyIiArIG5hbWUpCisgIGVuZAorZW5kCisKKyMgT3Zl
cnJpZGVzIGZvciBsb3dlcigpIGZvciB0aG9zZSBub2RlcyB0aGF0IGFyZSBiYWNrZW5kLWFnbm9z
dGljCisKK2NsYXNzIExhYmVsCisgIGRlZiBsb3dlcihuYW1lKQorICAgICRhc20ucHV0c0xhYmVs
KHNlbGYubmFtZVsxLi4tMV0pCisgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgZGVm
IGxvd2VyKG5hbWUpCisgICAgJGFzbS5wdXRzTG9jYWxMYWJlbCAiX29mZmxpbmVhc21fI3tzZWxm
Lm5hbWVbMS4uLTFdfSIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAgZGVm
IGFzbUxhYmVsCisgICAgQXNzZW1ibGVyLmxhYmVsUmVmZXJlbmNlKG5hbWVbMS4uLTFdKQorICBl
bmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCisgIGRlZiBhc21MYWJlbAorICAg
IEFzc2VtYmxlci5sb2NhbExhYmVsUmVmZXJlbmNlKCJfb2ZmbGluZWFzbV8iK25hbWVbMS4uLTFd
KQorICBlbmQKK2VuZAorCitjbGFzcyBTa2lwCisgIGRlZiBsb3dlcihuYW1lKQorICBlbmQKK2Vu
ZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXIobmFtZSkKKyAgICBpZiByZXNwb25kX3Rv
PyAibG93ZXIje25hbWV9IgorICAgICAgc2VuZCgibG93ZXIje25hbWV9IikKKyAgICBlbHNlCisg
ICAgICBAbGlzdC5lYWNoIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgbm9kZS5sb3dlcihu
YW1lKQorICAgICAgfQorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9l
eHRyYWN0b3IucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDEzNiBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJh
Y2tlbmRzIgorcmVxdWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWly
ZSAicGFyc2VyIgorcmVxdWlyZSAic2VsZl9oYXNoIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1
aXJlICJ0cmFuc2Zvcm0iCisKK2lucHV0RmxubSA9IEFSR1Yuc2hpZnQKK291dHB1dEZsbm0gPSBB
UkdWLnNoaWZ0CisKKyRzdGRlcnIucHV0cyAib2ZmbGluZWFzbTogUGFyc2luZyAje2lucHV0Rmxu
bX0gYW5kIGNyZWF0aW5nIG9mZnNldCBleHRyYWN0b3IgI3tvdXRwdXRGbG5tfS4iCisKK2RlZiBl
bWl0TWFnaWNOdW1iZXIKKyAgT0ZGU0VUX01BR0lDX05VTUJFUlMuZWFjaCB7CisgICAgfCBudW1i
ZXIgfAorICAgICRvdXRwdXQucHV0cyAiI3tudW1iZXJ9LCIKKyAgfQorZW5kCisKK2lucHV0RGF0
YSA9IElPOjpyZWFkKGlucHV0RmxubSkKK2lucHV0SGFzaCA9ICIvLyBvZmZsaW5lYXNtIGlucHV0
IGhhc2g6ICN7RGlnZXN0OjpTSEExLmhleGRpZ2VzdChpbnB1dERhdGEpfSAje3NlbGZIYXNofSIK
KworaWYgRmlsZVRlc3QuZXhpc3Q/IG91dHB1dEZsbm0KKyAgRmlsZS5vcGVuKG91dHB1dEZsbm0s
ICJyIikgeworICAgIHwgaW5wIHwKKyAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAgIGlmIGZp
cnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09IGlucHV0SGFzaAorICAgICAgJHN0ZGVyci5w
dXRzICJvZmZsaW5lYXNtOiBOb3RoaW5nIGNoYW5nZWQuIgorICAgICAgZXhpdCAwCisgICAgZW5k
CisgIH0KK2VuZAorCitvcmlnaW5hbEFTVCA9IHBhcnNlKGxleChpbnB1dERhdGEpKQorCisjCisj
IE9wdGltaXplIHRoZSBBU1QgdG8gbWFrZSBjb25maWd1cmF0aW9uIGV4dHJhY3Rpb24gZmFzdGVy
LiBUaGlzIHJlZHVjZXMgdGhlIEFTVCB0byBhIGZvcm0KKyMgdGhhdCBvbmx5IGNvbnRhaW5zIHRo
ZSB0aGluZ3MgdGhhdCBtYXR0ZXIgZm9yIG91ciBwdXJwb3Nlczogb2Zmc2V0cywgc2l6ZXMsIGFu
ZCBpZgorIyBzdGF0ZW1lbnRzLgorIworCitjbGFzcyBOb2RlCisgIGRlZiBvZmZzZXRzUHJ1bmVU
byhzZXF1ZW5jZSkKKyAgICBjaGlsZHJlbi5lYWNoIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAg
Y2hpbGQub2Zmc2V0c1BydW5lVG8oc2VxdWVuY2UpCisgICAgfQorICBlbmQKKyAgCisgIGRlZiBv
ZmZzZXRzUHJ1bmUKKyAgICByZXN1bHQgPSBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgW10pCisg
ICAgb2Zmc2V0c1BydW5lVG8ocmVzdWx0KQorICAgIHJlc3VsdAorICBlbmQKK2VuZAorCitjbGFz
cyBJZlRoZW5FbHNlCisgIGRlZiBvZmZzZXRzUHJ1bmVUbyhzZXF1ZW5jZSkKKyAgICBpZlRoZW5F
bHNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZS5vZmZz
ZXRzUHJ1bmUpCisgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IGVsc2VDYXNlLm9mZnNldHNQcnVu
ZQorICAgIHNlcXVlbmNlLmxpc3QgPDwgaWZUaGVuRWxzZQorICBlbmQKK2VuZAorCitjbGFzcyBT
dHJ1Y3RPZmZzZXQKKyAgZGVmIG9mZnNldHNQcnVuZVRvKHNlcXVlbmNlKQorICAgIHNlcXVlbmNl
Lmxpc3QgPDwgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YKKyAgZGVmIG9mZnNldHNQ
cnVuZVRvKHNlcXVlbmNlKQorICAgIHNlcXVlbmNlLmxpc3QgPDwgc2VsZgorICBlbmQKK2VuZAor
CitwcnVuZWRBU1QgPSBvcmlnaW5hbEFTVC5vZmZzZXRzUHJ1bmUKKworRmlsZS5vcGVuKG91dHB1
dEZsbm0sICJ3IikgeworICB8IG91dHAgfAorICAkb3V0cHV0ID0gb3V0cAorICBvdXRwLnB1dHMg
aW5wdXRIYXNoCisgIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhwcnVuZWRBU1QpIHsKKyAg
ICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICBvZmZzZXRzTGlzdCA9IGFz
dC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKKyAgICBzaXplc0xpc3QgPSBhc3QuZmls
dGVyKFNpemVvZikudW5pcS5zb3J0CisgICAgCisgICAgbGVuZ3RoID0gKE9GRlNFVF9NQUdJQ19O
VU1CRVJTLnNpemUgKyAxKSAqICgxICsgb2Zmc2V0c0xpc3Quc2l6ZSArIHNpemVzTGlzdC5zaXpl
KQorICAgIAorICAgIG91dHAucHV0cyAic3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4dHJhY3RvclRh
YmxlWyN7bGVuZ3RofV0gPSB7IgorICAgIGVtaXRNYWdpY051bWJlcgorICAgIG91dHAucHV0cyAi
I3tpbmRleH0sIgorICAgIG9mZnNldHNMaXN0LmVhY2ggeworICAgICAgfCBvZmZzZXQgfAorICAg
ICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICBvdXRwLnB1dHMgIk9GRkxJTkVfQVNNX09GRlNFVE9G
KCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSksIgorICAgIH0KKyAgICBzaXplc0xp
c3QuZWFjaCB7CisgICAgICB8IG9mZnNldCB8CisgICAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICAg
IG91dHAucHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0cnVjdH0pLCIKKyAgICB9CisgICAgb3V0cC5w
dXRzICJ9OyIKKyAgfQorfQorCiskc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IG9mZnNldCBleHRy
YWN0b3IgI3tvdXRwdXRGbG5tfSBzdWNjZXNzZnVsbHkgZ2VuZXJhdGVkLiIKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9u
cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMTcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyMgSW50ZXJlc3RpbmcgaW52YXJpYW50LCB3aGljaCB3ZSB0YWtl
IGFkdmFudGFnZSBvZjogYnJhbmNoaW5nIGluc3RydWN0aW9ucworIyBhbHdheXMgYmVnaW4gd2l0
aCAiYiIsIGFuZCBubyBub24tYnJhbmNoaW5nIGluc3RydWN0aW9ucyBiZWdpbiB3aXRoICJiIi4K
KyMgVGVybWluYWwgaW5zdHJ1Y3Rpb25zIGFyZSAiam1wIiBhbmQgInJldCIuCisKK01BQ1JPX0lO
U1RSVUNUSU9OUyA9CisgIFsKKyAgICJhZGRpIiwKKyAgICJhbmRpIiwKKyAgICJsc2hpZnRpIiwK
KyAgICJtdWxpIiwKKyAgICJuZWdpIiwKKyAgICJub3RpIiwKKyAgICJvcmkiLAorICAgInJzaGlm
dGkiLAorICAgInVyc2hpZnRpIiwKKyAgICJzdWJpIiwKKyAgICJ4b3JpIiwKKyAgICJsb2FkaSIs
CisgICAibG9hZGIiLAorICAgImxvYWRicyIsCisgICAibG9hZGgiLAorICAgImxvYWRocyIsCisg
ICAic3RvcmVpIiwKKyAgICJzdG9yZWIiLAorICAgImxvYWRkIiwKKyAgICJtb3ZlZCIsCisgICAi
c3RvcmVkIiwKKyAgICJhZGRkIiwKKyAgICJkaXZkIiwKKyAgICJzdWJkIiwKKyAgICJtdWxkIiwK
KyAgICJzcXJ0ZCIsCisgICAiY2kyZCIsCisgICAiZmlpMmQiLCAjIHVzYWdlOiBmaWkyZCA8Z3By
IHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50
IGJpdHM+LCA8ZnByPgorICAgImZkMmlpIiwgIyB1c2FnZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0
aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0
cz4KKyAgICJiZGVxIiwKKyAgICJiZG5lcSIsCisgICAiYmRndCIsCisgICAiYmRndGVxIiwKKyAg
ICJiZGx0IiwKKyAgICJiZGx0ZXEiLAorICAgImJkZXF1biIsCisgICAiYmRuZXF1biIsCisgICAi
YmRndHVuIiwKKyAgICJiZGd0ZXF1biIsCisgICAiYmRsdHVuIiwKKyAgICJiZGx0ZXF1biIsCisg
ICAiYnRkMmkiLAorICAgInRkMmkiLAorICAgImJjZDJpIiwKKyAgICJtb3ZkeiIsCisgICAicG9w
IiwKKyAgICJwdXNoIiwKKyAgICJtb3ZlIiwKKyAgICJzeGkycCIsCisgICAienhpMnAiLAorICAg
Im5vcCIsCisgICAiYmllcSIsCisgICAiYmluZXEiLAorICAgImJpYSIsCisgICAiYmlhZXEiLAor
ICAgImJpYiIsCisgICAiYmliZXEiLAorICAgImJpZ3QiLAorICAgImJpZ3RlcSIsCisgICAiYmls
dCIsCisgICAiYmlsdGVxIiwKKyAgICJiYmVxIiwKKyAgICJiYm5lcSIsCisgICAiYmJhIiwKKyAg
ICJiYmFlcSIsCisgICAiYmJiIiwKKyAgICJiYmJlcSIsCisgICAiYmJndCIsCisgICAiYmJndGVx
IiwKKyAgICJiYmx0IiwKKyAgICJiYmx0ZXEiLAorICAgImJ0aW8iLAorICAgImJ0aXMiLAorICAg
ImJ0aXoiLAorICAgImJ0aW56IiwKKyAgICJidGJvIiwKKyAgICJidGJzIiwKKyAgICJidGJ6IiwK
KyAgICJidGJueiIsCisgICAiam1wIiwKKyAgICJiYWRkaW8iLAorICAgImJhZGRpcyIsCisgICAi
YmFkZGl6IiwKKyAgICJiYWRkaW56IiwKKyAgICJic3ViaW8iLAorICAgImJzdWJpcyIsCisgICAi
YnN1Yml6IiwKKyAgICJic3ViaW56IiwKKyAgICJibXVsaW8iLAorICAgImJtdWxpcyIsCisgICAi
Ym11bGl6IiwKKyAgICJibXVsaW56IiwKKyAgICJib3JpbyIsCisgICAiYm9yaXMiLAorICAgImJv
cml6IiwKKyAgICJib3JpbnoiLAorICAgImJyZWFrIiwKKyAgICJjYWxsIiwKKyAgICJyZXQiLAor
ICAgImNpZXEiLAorICAgImNpbmVxIiwKKyAgICJjaWEiLAorICAgImNpYWVxIiwKKyAgICJjaWIi
LAorICAgImNpYmVxIiwKKyAgICJjaWd0IiwKKyAgICJjaWd0ZXEiLAorICAgImNpbHQiLAorICAg
ImNpbHRlcSIsCisgICAidGlvIiwKKyAgICJ0aXMiLAorICAgInRpeiIsCisgICAidGlueiIsCisg
ICAidGJvIiwKKyAgICJ0YnMiLAorICAgInRieiIsCisgICAidGJueiIsCisgICAicGVlayIsCisg
ICAicG9rZSIsCisgICAiYnBlcSIsCisgICAiYnBuZXEiLAorICAgImJwYSIsCisgICAiYnBhZXEi
LAorICAgImJwYiIsCisgICAiYnBiZXEiLAorICAgImJwZ3QiLAorICAgImJwZ3RlcSIsCisgICAi
YnBsdCIsCisgICAiYnBsdGVxIiwKKyAgICJhZGRwIiwKKyAgICJhbmRwIiwKKyAgICJvcnAiLAor
ICAgInN1YnAiLAorICAgInhvcnAiLAorICAgImxvYWRwIiwKKyAgICJjcGVxIiwKKyAgICJjcG5l
cSIsCisgICAiY3BhIiwKKyAgICJjcGFlcSIsCisgICAiY3BiIiwKKyAgICJjcGJlcSIsCisgICAi
Y3BndCIsCisgICAiY3BndGVxIiwKKyAgICJjcGx0IiwKKyAgICJjcGx0ZXEiLAorICAgInN0b3Jl
cCIsCisgICAiYnRwbyIsCisgICAiYnRwcyIsCisgICAiYnRweiIsCisgICAiYnRwbnoiLAorICAg
ImJhZGRwbyIsCisgICAiYmFkZHBzIiwKKyAgICJiYWRkcHoiLAorICAgImJhZGRwbnoiLAorICAg
ImJvIiwKKyAgICJicyIsCisgICAiYnoiLAorICAgImJueiIsCisgICAibGVhaSIsCisgICAibGVh
cCIsCisgIF0KKworWDg2X0lOU1RSVUNUSU9OUyA9CisgIFsKKyAgICJjZHFpIiwKKyAgICJpZGl2
aSIKKyAgXQorCitBUk12N19JTlNUUlVDVElPTlMgPQorICBbCisgICAic211bGxpIiwKKyAgICJh
ZGRpcyIsCisgICAic3ViaXMiLAorICAgIm9yaXMiCisgIF0KKworSU5TVFJVQ1RJT05TID0gTUFD
Uk9fSU5TVFJVQ1RJT05TICsgWDg2X0lOU1RSVUNUSU9OUyArIEFSTXY3X0lOU1RSVUNUSU9OUwor
CitJTlNUUlVDVElPTl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgSU5TVFJVQ1RJT05T
LmpvaW4oJyl8KCcpICsgJykpXFxaJykKKworZGVmIGlzQnJhbmNoKGluc3RydWN0aW9uKQorICBp
bnN0cnVjdGlvbiA9fiAvXmIvCitlbmQKKworZGVmIGhhc0ZhbGxUaHJvdWdoKGluc3RydWN0aW9u
KQorICBpbnN0cnVjdGlvbiAhPSAicmV0IiBhbmQgaW5zdHJ1Y3Rpb24gIT0gImptcCIKK2VuZAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9y
X2NvbnN0YW50cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJi
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisj
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCitNQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0K
KworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRz
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJhY3Rv
cl9jb25zdGFudHMiCisKK09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBm
ZjVlNzU1IF0KKworIworIyBvZmZzZXRzTGlzdChhc3QpCisjIHNpemVzTGlzdChhc3QpCisjCisj
IFJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhlIEFTVC4KKyMK
KworZGVmIG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEu
c29ydAorZW5kCisKK2RlZiBzaXplc0xpc3QoYXN0KQorICBhc3QuZmlsdGVyKFNpemVvZikudW5p
cS5zb3J0CitlbmQKKworIworIyBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGFzdCwgZmls
ZSkgLT4KKyMgICAgIFtvZmZzZXRzLCBpbmRleF0KKyMKKyMgUGFyc2VzIHRoZSBvZmZzZXRzIGZy
b20gYSBmaWxlIGFuZCByZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCB0aGUKKyMgaW5kZXgg
b2YgdGhlIGNvbmZpZ3VyYXRpb24gdGhhdCBpcyB2YWxpZCBpbiB0aGlzIGJ1aWxkIHRhcmdldC4K
KyMKKworZGVmIG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgoZmlsZSkKKyAgaW5kZXggPSBu
aWwKKyAgb2Zmc2V0cyA9IFtdCisgIGVuZGlhbm5lc3NNYXJrZXJCeXRlcyA9IG5pbAorICAKKyAg
ZGVmIHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgIGJ5dGVzID0gW10KKyAgICA0LnRpbWVz
IHsKKyAgICAgIGJ5dGVzIDw8IGlucC5nZXRieXRlCisgICAgfQorICAgIAorICAgIGlmIGVuZGlh
bm5lc3MgPT0gOmxpdHRsZQorICAgICAgIyBMaXR0bGUgZW5kaWFuCisgICAgICAoYnl0ZXNbMF0g
PDwgMCB8CisgICAgICAgYnl0ZXNbMV0gPDwgOCB8CisgICAgICAgYnl0ZXNbMl0gPDwgMTYgfAor
ICAgICAgIGJ5dGVzWzNdIDw8IDI0KQorICAgIGVsc2UKKyAgICAgICMgQmlnIGVuZGlhbgorICAg
ICAgKGJ5dGVzWzBdIDw8IDI0IHwKKyAgICAgICBieXRlc1sxXSA8PCAxNiB8CisgICAgICAgYnl0
ZXNbMl0gPDwgOCB8CisgICAgICAgYnl0ZXNbM10gPDwgMCkKKyAgICBlbmQKKyAgZW5kCisgIAor
ICBbOmxpdHRsZSwgOmJpZ10uZWFjaCB7CisgICAgfCBlbmRpYW5uZXNzIHwKKyAgICBtYWdpY0J5
dGVzID0gW10KKyAgICBNQUdJQ19OVU1CRVJTLmVhY2ggeworICAgICAgfCBudW1iZXIgfAorICAg
ICAgY3VycmVudEJ5dGVzID0gW10KKyAgICAgIDQudGltZXMgeworICAgICAgICBjdXJyZW50Qnl0
ZXMgPDwgKG51bWJlciAmIDB4ZmYpCisgICAgICAgIG51bWJlciA+Pj0gOAorICAgICAgfQorICAg
ICAgaWYgZW5kaWFubmVzcyA9PSA6YmlnCisgICAgICAgIGN1cnJlbnRCeXRlcy5yZXZlcnNlIQor
ICAgICAgZW5kCisgICAgICBtYWdpY0J5dGVzICs9IGN1cnJlbnRCeXRlcworICAgIH0KKyAgICAK
KyAgICBGaWxlLm9wZW4oZmlsZSwgInIiKSB7CisgICAgICB8IGlucCB8CisgICAgICB3aGVyZUlu
TWFya2VyID0gMAorICAgICAgbG9vcCB7CisgICAgICAgIGJ5dGUgPSBpbnAuZ2V0Ynl0ZQorICAg
ICAgICBicmVhayB1bmxlc3MgYnl0ZQorICAgICAgICBpZiBieXRlID09IG1hZ2ljQnl0ZXNbd2hl
cmVJbk1hcmtlcl0KKyAgICAgICAgICB3aGVyZUluTWFya2VyICs9IDEKKyAgICAgICAgICBpZiB3
aGVyZUluTWFya2VyID09IG1hZ2ljQnl0ZXMuc2l6ZQorICAgICAgICAgICAgIyBXZSBoYXZlIGEg
bWF0Y2ghIElmIHdlIGhhdmUgbm90IHlldCByZWFkIHRoZSBlbmRpYW5uZXNzIG1hcmtlciBhbmQg
aW5kZXgsCisgICAgICAgICAgICAjIHRoZW4gcmVhZCB0aG9zZSBub3c7IG90aGVyd2lzZSByZWFk
IGFuIG9mZnNldC4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgbm90IGluZGV4CisgICAg
ICAgICAgICAgIGluZGV4ID0gcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgIG9mZnNldHMgPDwgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9
IDAKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgIHdoZXJlSW5NYXJrZXIg
PSAwCisgICAgICAgIGVuZAorICAgICAgfQorICAgIH0KKyAgICAKKyAgICBicmVhayBpZiBpbmRl
eAorICB9CisgIAorICByYWlzZSB1bmxlc3MgaW5kZXgKKyAgCisgIFtvZmZzZXRzLCBpbmRleF0K
K2VuZAorCisjCisjIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNldHNMaXN0KSAtPiBbb2Zmc2V0
cywgc2l6ZXNdCisjCisjIEJ1aWxkcyBhIG1hcHBpbmcgYmV0d2VlbiBTdHJ1Y3RPZmZzZXQgbm9k
ZXMgYW5kIHRoZWlyIHZhbHVlcy4KKyMKKworZGVmIGJ1aWxkT2Zmc2V0c01hcChhc3QsIG9mZnNl
dHNMaXN0KQorICBvZmZzZXRzTWFwID0ge30KKyAgc2l6ZXNNYXAgPSB7fQorICBhc3RPZmZzZXRz
TGlzdCA9IG9mZnNldHNMaXN0KGFzdCkKKyAgYXN0U2l6ZXNMaXN0ID0gc2l6ZXNMaXN0KGFzdCkK
KyAgcmFpc2UgdW5sZXNzIGFzdE9mZnNldHNMaXN0LnNpemUgKyBhc3RTaXplc0xpc3Quc2l6ZSA9
PSBvZmZzZXRzTGlzdC5zaXplCisgIG9mZnNldHNMaXN0KGFzdCkuZWFjaF93aXRoX2luZGV4IHsK
KyAgICB8IHN0cnVjdE9mZnNldCwgaW5kZXggfAorICAgIG9mZnNldHNNYXBbc3RydWN0T2Zmc2V0
XSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgIH0KKyAgc2l6ZXNMaXN0KGFzdCkuZWFjaF93aXRoX2lu
ZGV4IHsKKyAgICB8IHNpemVvZiwgaW5kZXggfAorICAgIHNpemVzTWFwW3NpemVvZl0gPSBvZmZz
ZXRzTGlzdC5zaGlmdAorICB9CisgIFtvZmZzZXRzTWFwLCBzaXplc01hcF0KK2VuZAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vcHQucmIKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb3B0LnJiCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb3B0LnJiCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEzNCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVx
dWlyZSAiYXN0IgorCisjCisjICJPcHRpbWl6YXRpb24iIHBhc3Nlcy4gVGhlc2UgYXJlIHVzZWQg
dG8gbG93ZXIgdGhlIHJlcHJlc2VudGF0aW9uIGZvcgorIyBiYWNrZW5kcyB0aGF0IGNhbm5vdCBo
YW5kbGUgc29tZSBvZiBvdXIgaGlnaGVyLWxldmVsIGluc3RydWN0aW9ucy4KKyMKKworIworIyBB
IHRlbXBvcmFyeSAtIGEgdmFyaWFibGUgdGhhdCB3aWxsIGJlIGFsbG9jYXRlZCB0byBhIHJlZ2lz
dGVyIGFmdGVyIHdlJ3JlCisjIGRvbmUuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlcGxhY2VU
ZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8
IG5vZGUgfAorICAgICAgbm9kZS5yZXBsYWNlVGVtcG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQp
CisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBUbXAgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVh
ZGVyIDpmaXJzdE1lbnRpb24sIDpsYXN0TWVudGlvbgorICBhdHRyX3JlYWRlciA6a2luZAorICBh
dHRyX2FjY2Vzc29yIDpyZWdpc3RlcgorCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGtp
bmQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAa2luZCA9IGtpbmQKKyAgZW5kCisgIAor
ICBkZWYgZHVtcAorICAgICIkdG1wI3tvYmplY3RfaWR9IgorICBlbmQKKyAgCisgIGRlZiBtZW50
aW9uIShwb3NpdGlvbikKKyAgICBpZiBub3QgQGZpcnN0TWVudGlvbiBvciBwb3NpdGlvbiA8IEBm
aXJzdE1lbnRpb24KKyAgICAgIEBmaXJzdE1lbnRpb24gPSBwb3NpdGlvbgorICAgIGVuZAorICAg
IGlmIG5vdCBAbGFzdE1lbnRpb24gb3IgcG9zaXRpb24gPiBAbGFzdE1lbnRpb24KKyAgICAgIEBs
YXN0TWVudGlvbiA9IHBvc2l0aW9uCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHJlcGxhY2VU
ZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkKKyAgICBpZiBAa2luZCA9PSBraW5kCisgICAg
ICByYWlzZSAiRGlkIG5vdCBhbGxvY2F0ZSByZWdpc3RlciB0byB0ZW1wb3JhcnkgYXQgI3tjb2Rl
T3JpZ2luU3RyaW5nfSIgdW5sZXNzIEByZWdpc3RlcgorICAgICAgQHJlZ2lzdGVyCisgICAgZWxz
ZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVm
IGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICB0
cnVlCisgIGVuZAorZW5kCisKKyMgQXNzaWduIHJlZ2lzdGVycyB0byB0ZW1wb3JhcmllcywgYnkg
ZmluZGluZyB3aGljaCB0ZW1wb3JhcmllcyBpbnRlcmZlcmUKKyMgd2l0aCBlYWNoIG90aGVyLiBO
b3RlIHRoYXQgdGhpcyByZWxpZXMgb24gdGVtcG9yYXJ5IGxpdmUgcmFuZ2VzIG5vdCBjcm9zc2lu
ZworIyBiYXNpYyBibG9jayBib3VuZGFyaWVzLgorCitkZWYgYXNzaWduUmVnaXN0ZXJzVG9UZW1w
b3JhcmllcyhsaXN0LCBraW5kLCByZWdpc3RlcnMpCisgIGxpc3QuZWFjaF93aXRoX2luZGV4IHsK
KyAgICB8IG5vZGUsIGluZGV4IHwKKyAgICBub2RlLmZpbHRlcihUbXApLnVuaXEuZWFjaCB7Cisg
ICAgICB8IHRtcCB8CisgICAgICBpZiB0bXAua2luZCA9PSBraW5kCisgICAgICAgIHRtcC5tZW50
aW9uISBpbmRleAorICAgICAgZW5kCisgICAgfQorICB9CisgIAorICBmcmVlUmVnaXN0ZXJzID0g
cmVnaXN0ZXJzLmR1cAorICBsaXN0LmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBub2RlLCBpbmRl
eCB8CisgICAgdG1wTGlzdCA9IG5vZGUuZmlsdGVyKFRtcCkudW5pcQorICAgIHRtcExpc3QuZWFj
aCB7CisgICAgICB8IHRtcCB8CisgICAgICBpZiB0bXAua2luZCA9PSBraW5kIGFuZCB0bXAuZmly
c3RNZW50aW9uID09IGluZGV4CisgICAgICAgIHJhaXNlICJDb3VsZCBub3QgYWxsb2NhdGUgcmVn
aXN0ZXIgdG8gdGVtcG9yYXJ5IGF0ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIgaWYgZnJlZVJl
Z2lzdGVycy5lbXB0eT8KKyAgICAgICAgdG1wLnJlZ2lzdGVyID0gZnJlZVJlZ2lzdGVycy5wb3AK
KyAgICAgIGVuZAorICAgIH0KKyAgICB0bXBMaXN0LmVhY2ggeworICAgICAgfCB0bXAgfAorICAg
ICAgaWYgdG1wLmtpbmQgPT0ga2luZCBhbmQgdG1wLmxhc3RNZW50aW9uID09IGluZGV4CisgICAg
ICAgIGZyZWVSZWdpc3RlcnMucHVzaCB0bXAucmVnaXN0ZXIKKyAgICAgICAgcmFpc2UgIlJlZ2lz
dGVyIGFsbG9jYXRpb24gaW5jb25zaXN0ZW5jeSBhdCAje25vZGUuY29kZU9yaWdpblN0cmluZ30i
IGlmIGZyZWVSZWdpc3RlcnMuc2l6ZSA+IHJlZ2lzdGVycy5zaXplCisgICAgICBlbmQKKyAgICB9
CisgIH0KKyAgCisgIGxpc3QubWFwIHsKKyAgICB8IG5vZGUgfAorICAgIG5vZGUucmVwbGFjZVRl
bXBvcmFyaWVzV2l0aFJlZ2lzdGVycyhraW5kKQorICB9CitlbmQKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1ODUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVp
cmUgImFzdCIKK3JlcXVpcmUgImluc3RydWN0aW9ucyIKK3JlcXVpcmUgInJlZ2lzdGVycyIKKwor
Y2xhc3MgVG9rZW4KKyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4sIDpzdHJpbmcKKyAgCisgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cmluZykKKyAgICBAY29kZU9yaWdpbiA9IGNvZGVP
cmlnaW4KKyAgICBAc3RyaW5nID0gc3RyaW5nCisgIGVuZAorICAKKyAgZGVmID09KG90aGVyKQor
ICAgIGlmIG90aGVyLmlzX2E/IFRva2VuCisgICAgICBAc3RyaW5nID09IG90aGVyLnN0cmluZwor
ICAgIGVsc2UKKyAgICAgIEBzdHJpbmcgPT0gb3RoZXIKKyAgICBlbmQKKyAgZW5kCisgIAorICBk
ZWYgPX4ob3RoZXIpCisgICAgQHN0cmluZyA9fiBvdGhlcgorICBlbmQKKyAgCisgIGRlZiB0b19z
CisgICAgIiN7QHN0cmluZy5pbnNwZWN0fSBhdCBsaW5lICN7Y29kZU9yaWdpbn0iCisgIGVuZAor
ICAKKyAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgY29tbWVudC5lbXB0eT8KKyAg
ICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAi
UGFyc2UgZXJyb3I6ICN7dG9fc306ICN7Y29tbWVudFswXX0iCisgICAgZW5kCisgIGVuZAorZW5k
CisKKyMKKyMgVGhlIGxleGVyLiBUYWtlcyBhIHN0cmluZyBhbmQgcmV0dXJucyBhbiBhcnJheSBv
ZiB0b2tlbnMuCisjCisKK2RlZiBsZXgoc3RyKQorICByZXN1bHQgPSBbXQorICBsaW5lTnVtYmVy
ID0gMQorICB3aGlsZSBub3Qgc3RyLmVtcHR5PworICAgIGNhc2Ugc3RyCisgICAgd2hlbiAvXEFc
IyhbXlxuXSopLworICAgICAgIyBjb21tZW50LCBpZ25vcmUKKyAgICB3aGVuIC9cQVxuLworICAg
ICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICAgIGxpbmVOdW1iZXIg
Kz0gMQorICAgIHdoZW4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKikvCisgICAgICByZXN1bHQg
PDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4gL1xBXC4oW2EtekEtWjAtOV9d
KikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4g
L1xBXyhbYS16QS1aMC05X10qKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJl
ciwgJCYpCisgICAgd2hlbiAvXEEoWyBcdF0rKS8KKyAgICAgICMgd2hpdGVzcGFjZSwgaWdub3Jl
CisgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSspLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5l
dyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAgICB3aGVuIC9cQTAoWzAtN10rKS8KKyAgICAg
IHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYub2N0LnRvX3MpCisgICAgd2hlbiAv
XEEoWzAtOV0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisg
ICAgd2hlbiAvXEE6Oi8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYp
CisgICAgd2hlbiAvXEFbOixcKFwpXFtcXT1cK1wtKl0vCisgICAgICByZXN1bHQgPDwgVG9rZW4u
bmV3KGxpbmVOdW1iZXIsICQmKQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJMZXhlciBlcnJvciBh
dCBsaW5lIG51bWJlciAje2xpbmVOdW1iZXJ9LCB1bmV4cGVjdGVkIHNlcXVlbmNlICN7c3RyWzAu
LjIwXS5pbnNwZWN0fSIKKyAgICBlbmQKKyAgICBzdHIgPSAkfi5wb3N0X21hdGNoCisgIGVuZAor
ICByZXN1bHQKK2VuZAorCisjCisjIFRva2VuIGlkZW50aWZpY2F0aW9uLgorIworCitkZWYgaXNS
ZWdpc3Rlcih0b2tlbikKKyAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTgorZW5kCisKK2RlZiBp
c0luc3RydWN0aW9uKHRva2VuKQorICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQK
KworZGVmIGlzS2V5d29yZCh0b2tlbikKKyAgdG9rZW4gPX4gL1xBKCh0cnVlKXwoZmFsc2UpfChp
Zil8KHRoZW4pfChlbHNlKXwoZWxzaWYpfChlbmQpfChhbmQpfChvcil8KG5vdCl8KG1hY3JvKXwo
Y29uc3QpfChzaXplb2YpfChlcnJvcikpXFovIG9yCisgICAgdG9rZW4gPX4gUkVHSVNURVJfUEFU
VEVSTiBvcgorICAgIHRva2VuID1+IElOU1RSVUNUSU9OX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJ
ZGVudGlmaWVyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKVxa
LyBhbmQgbm90IGlzS2V5d29yZCh0b2tlbikKK2VuZAorCitkZWYgaXNMYWJlbCh0b2tlbikKKyAg
dG9rZW4gPX4gL1xBXyhbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc0xvY2FsTGFiZWwo
dG9rZW4pCisgIHRva2VuID1+IC9cQVwuKFthLXpBLVowLTlfXSopXFovCitlbmQKKworZGVmIGlz
VmFyaWFibGUodG9rZW4pCisgIGlzSWRlbnRpZmllcih0b2tlbikgb3IgaXNSZWdpc3Rlcih0b2tl
bikKK2VuZAorCitkZWYgaXNJbnRlZ2VyKHRva2VuKQorICB0b2tlbiA9fiAvXEFbMC05XS8KK2Vu
ZAorCisjCisjIFRoZSBwYXJzZXIuIFRha2VzIGFuIGFycmF5IG9mIHRva2VucyBhbmQgcmV0dXJu
cyBhbiBBU1QuIE1ldGhvZHMKKyMgb3RoZXIgdGhhbiBwYXJzZSh0b2tlbnMpIGFyZSBub3QgZm9y
IHB1YmxpYyBjb25zdW1wdGlvbi4KKyMKKworY2xhc3MgUGFyc2VyCisgIGRlZiBpbml0aWFsaXpl
KHRva2VucykKKyAgICBAdG9rZW5zID0gdG9rZW5zCisgICAgQGlkeCA9IDAKKyAgZW5kCisgIAor
ICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICBpZiBAdG9rZW5zW0BpZHhdCisgICAgICBA
dG9rZW5zW0BpZHhdLnBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgZWxzZQorICAgICAgaWYgY29t
bWVudC5lbXB0eT8KKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlIgor
ICAgICAgZWxzZQorICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZpbGU6ICN7
Y29tbWVudFswXX0iCisgICAgICBlbmQKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgY29uc3Vt
ZShyZWdleHApCisgICAgaWYgcmVnZXhwCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5z
W0BpZHhdID1+IHJlZ2V4cAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEBpZHgg
PT0gQHRva2Vucy5sZW5ndGgKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgZW5kCisgIAorICBk
ZWYgc2tpcE5ld0xpbmUKKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgIEBp
ZHggKz0gMQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZUF0b20KKyAg
ICBpZiBAdG9rZW5zW0BpZHhdID09ICJub3QiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHBhcnNl
UHJlZGljYXRlQXRvbQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHNraXBOZXdMaW5lCisgICAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZQor
ICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgIEBpZHgg
Kz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAidHJ1ZSIKKyAg
ICAgIHJlc3VsdCA9IFRydWUuaW5zdGFuY2UKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0
CisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZmFsc2UiCisgICAgICByZXN1bHQgPSBGYWxz
ZS5pbnN0YW5jZQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0lk
ZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0gU2V0dGluZy5mb3JOYW1lKEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICBAaWR4
ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQK
KyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBbmQKKyAgICByZXN1bHQgPSBwYXJzZVBy
ZWRpY2F0ZUF0b20KKyAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJhbmQiCisgICAgICBjb2Rl
T3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICBAaWR4ICs9IDEKKyAgICAg
IHNraXBOZXdMaW5lCisgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRlQXRvbQorICAgICAgcmVz
dWx0ID0gQW5kLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJl
c3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZVByZWRpY2F0ZQorICAgICMgc29tZSBleGFtcGxl
cyBvZiBwcmVjZWRlbmNlOgorICAgICMgbm90IGEgYW5kIGIgLT4gKG5vdCBhKSBhbmQgYgorICAg
ICMgYSBhbmQgYiBvciBjIC0+IChhIGFuZCBiKSBvciBjCisgICAgIyBhIG9yIGIgYW5kIGMgLT4g
YSBvciAoYiBhbmQgYykKKyAgICAKKyAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAg
IHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIm9yIgorICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNb
QGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3TGluZQorICAg
ICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAgICAgcmVzdWx0ID0gT3IubmV3KGNvZGVP
cmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAg
ZGVmIHBhcnNlVmFyaWFibGUKKyAgICBpZiBpc1JlZ2lzdGVyKEB0b2tlbnNbQGlkeF0pCisgICAg
ICBpZiBAdG9rZW5zW0BpZHhdID1+IEZQUl9QQVRURVJOCisgICAgICAgIHJlc3VsdCA9IEZQUmVn
aXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5z
dHJpbmcpCisgICAgICBlbHNlCisgICAgICAgIHJlc3VsdCA9IFJlZ2lzdGVySUQuZm9yTmFtZShA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgZW5k
CisgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICByZXN1bHQgPSBW
YXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5z
dHJpbmcpCisgICAgZWxzZQorICAgICAgcGFyc2VFcnJvcgorICAgIGVuZAorICAgIEBpZHggKz0g
MQorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUFkZHJlc3Mob2Zmc2V0KQorICAg
IHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgY29kZU9yaWdpbiA9
IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgIAorICAgICMgVGhyZWUgcG9zc2liaWxpdGll
czoKKyAgICAjIFtdICAgICAgIC0+IEFic29sdXRlQWRkcmVzcworICAgICMgW2FdICAgICAgLT4g
QWRkcmVzcworICAgICMgW2EsYl0gICAgLT4gQmFzZUluZGV4IHdpdGggc2NhbGUgPSAxCisgICAg
IyBbYSxiLGNdICAtPiBCYXNlSW5kZXgKKyAgICAKKyAgICBAaWR4ICs9IDEKKyAgICBpZiBAdG9r
ZW5zW0BpZHhdID09ICJdIgorICAgICAgQGlkeCArPSAxCisgICAgICByZXR1cm4gQWJzb2x1dGVB
ZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXQpCisgICAgZW5kCisgICAgYSA9IHBhcnNlVmFy
aWFibGUKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgcmVzdWx0ID0gQWRkcmVz
cy5uZXcoY29kZU9yaWdpbiwgYSwgb2Zmc2V0KQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3Ig
dW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIGIgPSBw
YXJzZVZhcmlhYmxlCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICByZXN1
bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIDEsIG9mZnNldCkKKyAgICAgIGVs
c2UKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIFsiMSIsICIyIiwgIjQiLCAi
OCJdLm1lbWJlcj8gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgYyA9IEB0b2tlbnNbQGlk
eF0uc3RyaW5nLnRvX2kKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXco
Y29kZU9yaWdpbiwgYSwgYiwgYywgb2Zmc2V0KQorICAgICAgZW5kCisgICAgZW5kCisgICAgQGlk
eCArPSAxCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIHBhcnNlQ29sb25Db2xvbgorICAg
IHNraXBOZXdMaW5lCisgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgor
ICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgbmFt
ZXMgPSBbQHRva2Vuc1tAaWR4XS5zdHJpbmddCisgICAgQGlkeCArPSAxCisgICAgd2hpbGUgQHRv
a2Vuc1tAaWR4XSA9PSAiOjoiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICBuYW1lcyA8PCBAdG9rZW5zW0Bp
ZHhdLnN0cmluZworICAgICAgQGlkeCArPSAxCisgICAgZW5kCisgICAgcmFpc2UgaWYgbmFtZXMu
ZW1wdHk/CisgICAgW2NvZGVPcmlnaW4sIG5hbWVzXQorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4
cHJlc3Npb25BdG9tCisgICAgc2tpcE5ld0xpbmUKKyAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIt
IgorICAgICAgQGlkeCArPSAxCisgICAgICBOZWdJbW1lZGlhdGUubmV3KEB0b2tlbnNbQGlkeCAt
IDFdLmNvZGVPcmlnaW4sIHBhcnNlRXhwcmVzc2lvbkF0b20pCisgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAiKCIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNz
aW9uCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAg
QGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBlbHNpZiBpc0ludGVnZXIgQHRva2Vuc1tAaWR4
XQorICAgICAgcmVzdWx0ID0gSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4s
IEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kpCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3Vs
dAorICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICBjb2RlT3JpZ2lu
LCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAgaWYgbmFtZXMuc2l6ZSA+IDEKKyAgICAg
ICAgU3RydWN0T2Zmc2V0LmZvckZpZWxkKGNvZGVPcmlnaW4sIG5hbWVzWzAuLi0yXS5qb2luKCc6
OicpLCBuYW1lc1stMV0pCisgICAgICBlbHNlCisgICAgICAgIFZhcmlhYmxlLmZvck5hbWUoY29k
ZU9yaWdpbiwgbmFtZXNbMF0pCisgICAgICBlbmQKKyAgICBlbHNpZiBpc1JlZ2lzdGVyIEB0b2tl
bnNbQGlkeF0KKyAgICAgIHBhcnNlVmFyaWFibGUKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJzaXplb2YiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0gcGFy
c2VDb2xvbkNvbG9uCisgICAgICBTaXplb2YuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lcy5qb2lu
KCc6OicpKQorICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgZW5kCisgIAor
ICBkZWYgcGFyc2VFeHByZXNzaW9uTXVsCisgICAgc2tpcE5ld0xpbmUKKyAgICByZXN1bHQgPSBw
YXJzZUV4cHJlc3Npb25BdG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1
bHQgPSBNdWxJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1
bHQsIHBhcnNlRXhwcmVzc2lvbkF0b20pCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAg
ICBlbmQKKyAgICBlbmQKKyAgICByZXN1bHQKKyAgZW5kCisgIAorICBkZWYgY291bGRCZUV4cHJl
c3Npb24KKyAgICBAdG9rZW5zW0BpZHhdID09ICItIiBvciBAdG9rZW5zW0BpZHhdID09ICJzaXpl
b2YiIG9yIGlzSW50ZWdlcihAdG9rZW5zW0BpZHhdKSBvciBpc1ZhcmlhYmxlKEB0b2tlbnNbQGlk
eF0pIG9yIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgIGVuZAorICAKKyAgZGVmIHBhcnNlRXhwcmVz
c2lvbgorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uTXVsCisg
ICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKyIgb3IgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAg
ICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIisiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBy
ZXN1bHQgPSBBZGRJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCBy
ZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0g
Ii0iCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQgPSBTdWJJbW1lZGlhdGVzLm5l
dyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11
bCkKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVuZAorICAgIHJl
c3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZU9wZXJhbmQoY29tbWVudCkKKyAgICBpZiBjb3Vs
ZEJlRXhwcmVzc2lvbgorICAgICAgZXhwciA9IHBhcnNlRXhwcmVzc2lvbgorICAgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgICAgcGFyc2VBZGRyZXNzKGV4cHIpCisgICAgICBlbHNl
CisgICAgICAgIGV4cHIKKyAgICAgIGVuZAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlsi
CisgICAgICBwYXJzZUFkZHJlc3MoSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4sIDApKQorICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgcmVzdWx0ID0g
TGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgTGFiZWwuZm9yTmFt
ZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKSkKKyAgICAg
IEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNMb2NhbExhYmVsIEB0b2tlbnNb
QGlkeF0KKyAgICAgIHJlc3VsdCA9IExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgTG9jYWxMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdp
biwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQK
KyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yKGNvbW1lbnQpCisgICAgZW5kCisgIGVuZAorICAK
KyAgZGVmIHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICBza2lwTmV3TGluZQorICAgIGNvbnN1bWUo
L1xBXChcWi8pCisgICAgdmFyaWFibGVzID0gW10KKyAgICBsb29wIHsKKyAgICAgIHNraXBOZXdM
aW5lCisgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAg
ICAgICB2YXJpYWJsZXMgPDwgVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tp
cE5ld0xpbmUKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgICBicmVhaworICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIs
IgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFyc2VFcnJv
cgorICAgICAgICBlbmQKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvcgorICAgICAgZW5k
CisgICAgfQorICAgIHZhcmlhYmxlcworICBlbmQKKyAgCisgIGRlZiBwYXJzZVNlcXVlbmNlKGZp
bmFsLCBjb21tZW50KQorICAgIGZpcnN0Q29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbgorICAgIGxpc3QgPSBbXQorICAgIGxvb3AgeworICAgICAgaWYgKEBpZHggPT0gQHRva2Vu
cy5sZW5ndGggYW5kIG5vdCBmaW5hbCkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZp
bmFsKQorICAgICAgICBicmVhaworICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisg
ICAgICAgICMgaWdub3JlCisgICAgICAgIEBpZHggKz0gMQorICAgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAiY29uc3QiCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVu
bGVzcyBpc1ZhcmlhYmxlIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgdmFyaWFibGUgPSBWYXJpYWJs
ZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcp
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0Bp
ZHhdID09ICI9IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgdmFsdWUgPSBwYXJzZU9wZXJh
bmQoIndoaWxlIGluc2lkZSBvZiBjb25zdCAje3ZhcmlhYmxlLm5hbWV9IikKKyAgICAgICAgbGlz
dCA8PCBDb25zdERlY2wubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgdmFyaWFibGUsIHZh
bHVlKQorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZXJyb3IiCisgICAgICAgIGxpc3Qg
PDwgRXJyb3IubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbikKKyAgICAgICAgQGlkeCArPSAx
CisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJpZiIKKyAgICAgICAgY29kZU9yaWdpbiA9
IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgc2tp
cE5ld0xpbmUKKyAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgY29u
c3VtZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBp
ZlRoZW5FbHNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGljYXRlLCBwYXJzZVNl
cXVlbmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJp
ZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAgIGxpc3QgPDwgaWZUaGVuRWxzZQorICAg
ICAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJlbHNpZiIKKyAgICAgICAgICBjb2RlT3JpZ2lu
ID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAg
ICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgICBza2lwTmV3TGlu
ZQorICAgICAgICAgIGVsc2VDYXNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGlj
YXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBp
bnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAgICAgaWZUaGVuRWxz
ZS5lbHNlQ2FzZSA9IGVsc2VDYXNlCisgICAgICAgICAgaWZUaGVuRWxzZSA9IGVsc2VDYXNlCisg
ICAgICAgIGVuZAorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJlbHNlIgorICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBwYXJzZVNlcXVlbmNl
KC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBlbHNlIGNhc2UgZm9yIFwiaWYgI3twcmVkaWNh
dGUuZHVtcH1cIiIpCisgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJlbmQiCisgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8i
CisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAg
QGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNz
IGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4
XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFj
cm9WYXJpYWJsZXMKKyAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hp
bGUgaW5zaWRlIG9mIG1hY3JvICN7bmFtZX0iKQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
bGlzdCA8PCBNYWNyby5uZXcoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVzLCBib2R5KQorICAg
ICAgZWxzaWYgaXNJbnN0cnVjdGlvbiBAdG9rZW5zW0BpZHhdCisgICAgICAgIGNvZGVPcmlnaW4g
PSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0u
c3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4
ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQor
ICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLCBhbmQgaXQncyB0aGUgbGFzdCBv
bmUuCisgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwg
W10pCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4i
CisgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgbGlzdCA8
PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgIGVsc2UKKyAgICAgICAgICAjIEl0J3MgZGVmaW5pdGVseSBhbiBpbnN0cnVj
dGlvbiwgYW5kIGl0IGhhcyBhdCBsZWFzdCBvbmUgb3BlcmFuZC4KKyAgICAgICAgICBvcGVyYW5k
cyA9IFtdCisgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9IGZhbHNlCisgICAgICAgICAgbG9vcCB7
CisgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBp
bnN0cnVjdGlvbiAje25hbWV9IikKKyAgICAgICAgICAgIGlmIChub3QgZmluYWwgYW5kIEBpZHgg
PT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisg
ICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24gYW5kIG9mIHRoZSBzZXF1
ZW5jZS4KKyAgICAgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9IHRydWUKKyAgICAgICAgICAgICAg
YnJlYWsKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAg
ICAgICMgSGFzIGFub3RoZXIgb3BlcmFuZC4KKyAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAgICAgIyBUaGUg
ZW5kIG9mIHRoZSBpbnN0cnVjdGlvbi4KKyAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIHBhcnNlRXJyb3Io
IkV4cGVjdGVkIGEgY29tbWEsIG5ld2xpbmUsIG9yICN7ZmluYWx9IGFmdGVyICN7b3BlcmFuZHMu
bGFzdC5kdW1wfSIpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICB9CisgICAgICAgICAgbGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAg
ICAgaWYgZW5kT2ZTZXF1ZW5jZQorICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICBlbmQKKyAg
ICAgICAgZW5kCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAg
ICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBA
dG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgQHRva2Vu
c1tAaWR4XSA9PSAiKCIKKyAgICAgICAgICAjIE1hY3JvIGludm9jYXRpb24uCisgICAgICAgICAg
QGlkeCArPSAxCisgICAgICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgIHNraXBOZXdMaW5l
CisgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAgICBza2lw
TmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAg
ICAgICAgICAgICAjIEl0J3MgYSBtYWNybyBsYW1iZGEhCisgICAgICAgICAgICAgICAgY29kZU9y
aWdpbklubmVyID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgICAgICAgICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcwor
ICAgICAgICAgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGlu
c2lkZSBvZiBhbm9ueW1vdXMgbWFjcm8gcGFzc2VkIGFzIGFyZ3VtZW50IHRvICN7bmFtZX0iKQor
ICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IE1h
Y3JvLm5ldyhjb2RlT3JpZ2luSW5uZXIsIG5pbCwgdmFyaWFibGVzLCBib2R5KQorICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGls
ZSBpbnNpZGUgb2YgbWFjcm8gY2FsbCB0byAje25hbWV9IikKKyAgICAgICAgICAgICAgZW5kCisg
ICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gIikiCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgYnJlYWsK
KyAgICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHBhcnNlRXJy
b3IgIlVuZXhwZWN0ZWQgI3tAdG9rZW5zW0BpZHhdLnN0cmluZy5pbnNwZWN0fSB3aGlsZSBwYXJz
aW5nIGludm9jYXRpb24gb2YgbWFjcm8gI3tuYW1lfSIKKyAgICAgICAgICAgICAgZW5kCisgICAg
ICAgICAgICB9CisgICAgICAgICAgZW5kCisgICAgICAgICAgbGlzdCA8PCBNYWNyb0NhbGwubmV3
KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFy
c2VFcnJvciAiRXhwZWN0ZWQgXCIoXCIgYWZ0ZXIgI3tuYW1lfSIKKyAgICAgICAgZW5kCisgICAg
ICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0gb3IgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlk
eF0KKyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAg
ICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAg
IHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIjoiCisgICAgICAgICMgSXQncyBh
IGxhYmVsLgorICAgICAgICBpZiBpc0xhYmVsIG5hbWUKKyAgICAgICAgICBsaXN0IDw8IExhYmVs
LmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZWxzZQorICAgICAgICAgIGxpc3Qg
PDwgTG9jYWxMYWJlbC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVuZAorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2UKKyAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0aW5n
IHRlcm1pbmFsICN7ZmluYWx9ICN7Y29tbWVudH0iCisgICAgICBlbmQKKyAgICB9CisgICAgU2Vx
dWVuY2UubmV3KGZpcnN0Q29kZU9yaWdpbiwgbGlzdCkKKyAgZW5kCitlbmQKKworZGVmIHBhcnNl
KHRva2VucykKKyAgcGFyc2VyID0gUGFyc2VyLm5ldyh0b2tlbnMpCisgIHBhcnNlci5wYXJzZVNl
cXVlbmNlKG5pbCwgIiIpCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vcmVnaXN0ZXJzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MCBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworR1BSUyA9CisgIFsKKyAg
ICJ0MCIsCisgICAidDEiLAorICAgInQyIiwKKyAgICJ0MyIsCisgICAidDQiLAorICAgImNmciIs
CisgICAiYTAiLAorICAgImExIiwKKyAgICJyMCIsCisgICAicjEiLAorICAgInNwIiwKKyAgICJs
ciIKKyAgXQorCitGUFJTID0KKyAgWworICAgImZ0MCIsCisgICAiZnQxIiwKKyAgICJmdDIiLAor
ICAgImZ0MyIsCisgICAiZnQ0IiwKKyAgICJmdDUiLAorICAgImZhMCIsCisgICAiZmExIiwKKyAg
ICJmYTIiLAorICAgImZhMyIsCisgICAiZnIiCisgIF0KKworUkVHSVNURVJTID0gR1BSUyArIEZQ
UlMKKworR1BSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBHUFJTLmpvaW4oJyl8KCcp
ICsgJykpXFxaJykKK0ZQUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgRlBSUy5qb2lu
KCcpfCgnKSArICcpKVxcWicpCisKK1JFR0lTVEVSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEo
KCcgKyBSRUdJU1RFUlMuam9pbignKXwoJykgKyAnKSlcXFonKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vc2VsZl9oYXNoLnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
cmVxdWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJwYXRobmFtZSIKKworIworIyBzZWxmSGFz
aCAtPiBTSEExIGhleGRpZ2VzdAorIworIyBSZXR1cm5zIGEgaGFzaCBvZiB0aGUgb2ZmbGluZWFz
bSBzb3VyY2UgY29kZS4gVGhpcyBhbGxvd3MgZGVwZW5kZW5jeQorIyB0cmFja2luZyBmb3Igbm90
IGp1c3QgY2hhbmdlcyBpbiBpbnB1dCwgYnV0IGFsc28gY2hhbmdlcyBpbiB0aGUgYXNzZW1ibGVy
CisjIGl0c2VsZi4KKyMKKworZGVmIHNlbGZIYXNoCisgIGNvbnRlbnRzID0gIiIKKyAgbXlQYXRo
ID0gUGF0aG5hbWUubmV3KF9fRklMRV9fKS5kaXJuYW1lCisgIERpci5mb3JlYWNoKG15UGF0aCkg
eworICAgIHwgZW50cnkgfAorICAgIGlmIGVudHJ5ID1+IC9cLnJiJC8KKyAgICAgIGNvbnRlbnRz
ICs9IElPOjpyZWFkKG15UGF0aCArIGVudHJ5KQorICAgIGVuZAorICB9CisgIHJldHVybiBEaWdl
c3Q6OlNIQTEuaGV4ZGlnZXN0KGNvbnRlbnRzKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjA1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1
aXJlICJhc3QiCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUg
InRyYW5zZm9ybSIKKworIworIyBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSAtPiBz
ZXR0aW5nc0NvbWJpYXRpb25zCisjCisjIENvbXB1dGVzIGFuIGFycmF5IG9mIHNldHRpbmdzIG1h
cHMsIHdoZXJlIGEgc2V0dGluZ3MgbWFwIGNvbnN0aXR1dGVzCisjIGEgY29uZmlndXJhdGlvbiBm
b3IgdGhlIGFzc2VtYmx5IGNvZGUgYmVpbmcgZ2VuZXJhdGVkLiBUaGUgbWFwCisjIGNvbnRhaW5z
IGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFyZSBzZXR0aW5ncyBuYW1lcyAoc3RyaW5ncykg
YW5kCisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xlYW5zICh0cnVlIGZvciBlbmFibGVkLCBmYWxzZSBm
b3IgZGlzYWJsZWQpLgorIworCitkZWYgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkK
KyAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPSBbXQorICAKKyAgZGVmIHNldHRpbmdzQ29tYmluYXRv
cihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbWFwU29GYXIsIHJlbWFpbmluZykKKyAgICBpZiByZW1h
aW5pbmcuZW1wdHk/CisgICAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA8PCBtYXBTb0ZhcgorICAg
ICAgcmV0dXJuCisgICAgZW5kCisgICAgCisgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAg
bmV3TWFwW3JlbWFpbmluZ1swXV0gPSB0cnVlCisgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRp
bmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmluZ1sxLi4tMV0pCisgICAgCisgICAgbmV3
TWFwID0gbWFwU29GYXIuZHVwCisgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSBmYWxzZQorICAg
IHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1haW5p
bmdbMS4uLTFdKQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJp
bmF0aW9ucywge30sIChhc3QuZmlsdGVyKFNldHRpbmcpLnVuaXEuY29sbGVjdHt8dnwgdi5uYW1l
fSArIFsiWDg2IiwgIkFSTXY3Il0pLnVuaXEpCisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucwor
ZW5kCisKKyMKKyMgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KSB7CisjICAgICB8
IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwgLi4uIH0KKyMKKyMgRGV0
ZXJtaW5lcyBpZiB0aGUgc2V0dGluZ3MgY29tYmluYXRpb24gaXMgdmFsaWQsIGFuZCBpZiBzbywg
Y2FsbHMKKyMgdGhlIGJsb2NrIHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSBuZWVkIHRvIGdlbmVy
YXRlIGNvZGUuCisjCisKK2RlZiBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpCisg
ICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0aGlzIGNvbWJpbmF0b3IgY2xhaW1zIHRvIHN1
cHBvcnQuCisgIG51bUNsYWltZWRCYWNrZW5kcyA9IDAKKyAgc2VsZWN0ZWRCYWNrZW5kID0gbmls
CisgIEJBQ0tFTkRTLmVhY2ggeworICAgIHwgYmFja2VuZCB8CisgICAgaXNTdXBwb3J0ZWQgPSBj
b25jcmV0ZVNldHRpbmdzW2JhY2tlbmRdCisgICAgcmFpc2UgdW5sZXNzIGlzU3VwcG9ydGVkICE9
IG5pbAorICAgIG51bUNsYWltZWRCYWNrZW5kcyArPSBpZiBpc1N1cHBvcnRlZCB0aGVuIDEgZWxz
ZSAwIGVuZAorICAgIGlmIGlzU3VwcG9ydGVkCisgICAgICBzZWxlY3RlZEJhY2tlbmQgPSBiYWNr
ZW5kCisgICAgZW5kCisgIH0KKyAgCisgIHJldHVybiBpZiBudW1DbGFpbWVkQmFja2VuZHMgPiAx
CisgIAorICAjIFJlc29sdmUgdGhlIEFTVCBkb3duIHRvIGEgbG93LWxldmVsIGZvcm0gKG5vIG1h
Y3JvcyBvciBjb25kaXRpb25hbHMpLgorICBsb3dMZXZlbEFTVCA9IGFzdC5yZXNvbHZlU2V0dGlu
Z3MoY29uY3JldGVTZXR0aW5ncykKKyAgCisgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xl
dmVsQVNULCBzZWxlY3RlZEJhY2tlbmQKK2VuZAorCisjCisjIGZvckVhY2hWYWxpZFNldHRpbmdz
Q29tYmluYXRpb24oYXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2Vu
ZCwgaW5kZXggfCAuLi4gfQorIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFz
dCwgc2V0dGluZ3NDb21iaW5hdGlvbnMpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0
LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9CisjCisjIEV4ZWN1dGVzIHRoZSBnaXZlbiBibG9jayBm
b3IgZWFjaCB2YWxpZCBzZXR0aW5ncyBjb21iaW5hdGlvbiBpbiB0aGUKKyMgc2V0dGluZ3MgbWFw
LiBUaGUgYXN0IHBhc3NlZCBpbnRvIHRoZSBibG9jayBpcyByZXNvbHZlZAorIyAoYXN0LnJlc29s
dmUpIGFnYWluc3QgdGhlIHNldHRpbmdzLgorIworIyBUaGUgZmlyc3QgZm9ybSB3aWxsIGNhbGwg
Y29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgZm9yIHlvdS4KKyMKKworZGVmIGZvckVh
Y2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCAqb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0
aW9ucykKKyAgcmFpc2UgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucy5zaXplID4gMQor
ICAKKyAgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9ucy5lbXB0eT8KKyAgICBzZXR0aW5n
c0NvbWJpbmF0aW9ucyA9IGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIGVsc2UK
KyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IG9wdGlvbmFsU2V0dGluZ3NDb21iaWF0aW9uc1sw
XQorICBlbmQKKyAgCisgIHNldHRpbmdzQ29tYmluYXRpb25zLmVhY2hfd2l0aF9pbmRleCB7Cisg
ICAgfCBjb25jcmV0ZVNldHRpbmdzLCBpbmRleCB8CisgICAgZm9yU2V0dGluZ3MoY29uY3JldGVT
ZXR0aW5ncywgYXN0KSB7CisgICAgICB8IGNvbmNyZXRlU2V0dGluZ3NfLCBsb3dMZXZlbEFTVCwg
YmFja2VuZCB8CisgICAgICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFj
a2VuZCwgaW5kZXgKKyAgICB9CisgIH0KK2VuZAorCisjCisjIGNwcFNldHRpbmdzVGVzdChjb25j
cmV0ZVNldHRpbmdzKQorIworIyBSZXR1cm5zIHRoZSBDKysgY29kZSB1c2VkIHRvIHRlc3QgaWYg
d2UgYXJlIGluIGEgY29uZmlndXJhdGlvbiB0aGF0CisjIGNvcnJlc3BvbmRzIHRvIHRoZSBnaXZl
biBjb25jcmV0ZSBzZXR0aW5ncy4KKyMKKworZGVmIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNl
dHRpbmdzKQorICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdzLnRvX2EuY29sbGVjdHsKKyAgICB8
IHBhaXIgfAorICAgIChpZiBwYWlyWzFdCisgICAgICAgIiIKKyAgICAgZWxzZQorICAgICAgICIh
IgorICAgICBlbmQpICsgIk9GRkxJTkVfQVNNXyIgKyBwYWlyWzBdCisgIH0uam9pbigiICYmICIp
CitlbmQKKworIworIyBpc0FTVEVycm9uZW91cyhhc3QpCisjCisjIFRlc3RzIHRvIHNlZSBpZiB0
aGUgQVNUIGNsYWltcyB0aGF0IHRoZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUKKyMgdXNl
cidzIGNvZGUsIGFmdGVyIHNldHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4KKyMK
KworZGVmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAgbm90IGFzdC5maWx0ZXIoRXJyb3IpLmVtcHR5
PworZW5kCisKKyMKKyMgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorIwor
IyBFbWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBnaXZlbiBj
b25maWd1cmF0aW9uLgorIworCitkZWYgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRp
bmdzKQorICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisg
ICRvdXRwdXQucHV0cyAiI2Vsc2UiCisgICRvdXRwdXQucHV0cyAiI2Vycm9yIFwiQ29uZmlndXJh
dGlvbiBtaXNtYXRjaC5cIiIKKyAgJG91dHB1dC5wdXRzICIjZW5kaWYiCitlbmQKKworIworIyBl
bWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpIHsK
KyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kIHwgLi4uIH0KKyMKKyMgRW1p
dHMgYWxsIHJlbGV2YW50IGd1YXJkcyB0byBzZWUgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaG9sZHMg
YW5kCisjIGNhbGxzIHRoZSBibG9jayBpZiB0aGUgY29uZmlndXJhdGlvbiBpcyBub3QgZXJyb25l
b3VzLgorIworCitkZWYgZW1pdENvZGVJbkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywg
YXN0LCBiYWNrZW5kKQorICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0
dGluZ3MpCisgIAorICBpZiBpc0FTVEVycm9uZW91cyhhc3QpCisgICAgJG91dHB1dC5wdXRzICIj
ZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uXCIiCisgIGVsc2lmIG5vdCBXT1JLSU5HX0JB
Q0tFTkRTLmluY2x1ZGU/IGJhY2tlbmQKKyAgICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIlRoaXMg
YmFja2VuZCBpcyBub3Qgc3VwcG9ydGVkIHlldC5cIiIKKyAgZWxzZQorICAgIHlpZWxkIGNvbmNy
ZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZAorICBlbmQKKyAgCisgICRvdXRwdXQucHV0cyAiI2Vu
ZGlmIgorZW5kCisKKyMKKyMgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkgeworIyAg
ICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0KKyMKKyMg
RW1pdHMgZ3VhcmQgY29kZXMgZm9yIGFsbCB2YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxz
IHRoZSBibG9jaworIyBmb3IgdGhvc2UgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5k
IG5vdCBlcnJvbmVvdXMuCisjCisKK2RlZiBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0
KQorICBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworICAgIHwgY29uY3Jl
dGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICAkb3V0cHV0LnB1
dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICAgeWllbGQgY29uY3JldGVT
ZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4CisgICAgJG91dHB1dC5wdXRzICIj
ZW5kaWYiCisgIH0KK2VuZAorCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vdHJhbnNmb3JtLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNDIg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIK
KworIworIyBub2RlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyMKKyMgQ29uc3RydWN0IGEg
bmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IElmVGhlbkVsc2Ugbm9kZXMgYnkKKyMgc3Vi
c3RpdHV0aW5nIGNvbmNyZXRlIGJvb2xlYW4gdmFsdWVzIGZvciBlYWNoIFNldHRpbmcuCisjCisK
K2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBtYXBDaGls
ZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUKKyAgZGVmIHJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlCisgIGRl
ZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFz
cyBTZXR0aW5nCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgc2V0dGluZ3Nb
QG5hbWVdLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBBbmQKKyAgZGVmIHJlc29sdmVTZXR0
aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1
ZSBhbmQgQHJpZ2h0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBl
bmQKK2VuZAorCitjbGFzcyBPcgorICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAg
IChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIG9yIEByaWdodC5yZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgTm90
CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgKG5vdCBAY2hpbGQucmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIElm
VGhlbkVsc2UKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBpZiBAcHJlZGlj
YXRlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUKKyAgICAgIEB0aGVuQ2FzZS5yZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgZWxzZQorICAgICAgQGVsc2VDYXNlLnJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UK
KyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICBuZXdMaXN0ID0gW10KKyAgICBA
bGlzdC5lYWNoIHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpCisgICAgICBpZiBpdGVtLmlzX2E/IFNlcXVlbmNlCisgICAgICAgIG5l
d0xpc3QgKz0gaXRlbS5saXN0CisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbQor
ICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQor
ICBlbmQKK2VuZAorCisjCisjIG5vZGUuZGVtYWNyb2lmeShtYWNyb3MpCisjIG5vZGUuc3Vic3Rp
dHV0ZShtYXBwaW5nKQorIworIyBkZW1hY3JvaWZ5KCkgY29uc3RydWN0cyBhIG5ldyBBU1QgdGhh
dCBkb2VzIG5vdCBoYXZlIGFueSBNYWNybworIyBub2Rlcywgd2hpbGUgc3Vic3RpdHV0ZSgpIHJl
cGxhY2VzIFZhcmlhYmxlIG5vZGVzIHdpdGggdGhlIGdpdmVuCisjIG5vZGVzIGluIHRoZSBtYXBw
aW5nLgorIworCitjbGFzcyBOb2RlCisgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICBtYXBD
aGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLmRlbWFjcm9pZnkobWFjcm9z
KQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIG1hcENo
aWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZShtYXBwaW5n
KQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAg
IG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxh
YmVscyhtYXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8KKyAgZGVmIHN1
YnN0aXR1dGUobWFwcGluZykKKyAgICBteU1hcHBpbmcgPSB7fQorICAgIG1hcHBpbmcuZWFjaF9w
YWlyIHsKKyAgICAgIHwga2V5LCB2YWx1ZSB8CisgICAgICB1bmxlc3MgQHZhcmlhYmxlcy5pbmNs
dWRlPyBrZXkKKyAgICAgICAgbXlNYXBwaW5nW2tleV0gPSB2YWx1ZQorICAgICAgZW5kCisgICAg
fQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAgY2hpbGQuc3Vic3Rp
dHV0ZShteU1hcHBpbmcpCisgICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZQorICBk
ZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgIG1hcHBp
bmdbc2VsZl0KKyAgICBlbHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2Ns
YXNzIExvY2FsTGFiZWwKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBpZiBt
YXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZdCisgICAgZWxzZQorICAgICAgc2VsZgor
ICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgc3Vic3RpdHV0ZShj
b25zdGFudHMpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbXlDb25zdGFudHMgPSBjb25zdGFudHMu
ZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19h
PyBDb25zdERlY2wKKyAgICAgICAgbXlDb25zdGFudHNbaXRlbS52YXJpYWJsZV0gPSBpdGVtLnZh
bHVlLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3Qg
PDwgaXRlbS5zdWJzdGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZW5kCisgICAgfQorICAgIFNl
cXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICBlbmQKKyAgCisgIGRlZiByZW5hbWVM
YWJlbHMoY29tbWVudCkKKyAgICBtYXBwaW5nID0ge30KKyAgICAKKyAgICBAbGlzdC5lYWNoIHsK
KyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAg
bWFwcGluZ1tpdGVtXSA9IExvY2FsTGFiZWwudW5pcXVlKGlmIGNvbW1lbnQgdGhlbiBjb21tZW50
ICsgIl8iIGVsc2UgIiIgZW5kICsgaXRlbS5jbGVhbk5hbWUpCisgICAgICBlbmQKKyAgICB9Cisg
ICAgCisgICAgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICBlbmQKKyAgCisgIGRlZiBkZW1h
Y3JvaWZ5KG1hY3JvcykKKyAgICBteU1hY3JvcyA9IG1hY3Jvcy5kdXAKKyAgICBAbGlzdC5lYWNo
IHsKKyAgICAgIHwgaXRlbSB8CisgICAgICBpZiBpdGVtLmlzX2E/IE1hY3JvCisgICAgICAgIG15
TWFjcm9zW2l0ZW0ubmFtZV0gPSBpdGVtCisgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdCA9
IFtdCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19h
PyBNYWNybworICAgICAgICAjIElnbm9yZS4KKyAgICAgIGVsc2lmIGl0ZW0uaXNfYT8gTWFjcm9D
YWxsCisgICAgICAgIG1hcHBpbmcgPSB7fQorICAgICAgICBteU15TWFjcm9zID0gbXlNYWNyb3Mu
ZHVwCisgICAgICAgIHJhaXNlICJDb3VsZCBub3QgZmluZCBtYWNybyAje2l0ZW0ubmFtZX0gYXQg
I3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgbXlNYWNyb3NbaXRlbS5uYW1lXQorICAg
ICAgICByYWlzZSAiQXJndW1lbnQgY291bnQgbWlzbWF0Y2ggZm9yIGNhbGwgdG8gI3tpdGVtLm5h
bWV9IGF0ICN7aXRlbS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIGl0ZW0ub3BlcmFuZHMuc2l6
ZSA9PSBteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlcy5zaXplCisgICAgICAgIGl0ZW0ub3Bl
cmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgfCBpZHggfAorICAgICAgICAgIGlmIGl0ZW0u
b3BlcmFuZHNbaWR4XS5pc19hPyBWYXJpYWJsZSBhbmQgbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tp
ZHhdLm5hbWVdCisgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFy
aWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAg
ICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1l
XSA9IG5pbAorICAgICAgICAgIGVsc2lmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBNYWNybwor
ICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhd
Lm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9z
W2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBuaWwKKyAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF1d
ID0gbmlsCisgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVz
W2lkeF1dID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAg
ICAgICAgbmV3TGlzdCArPSBteU1hY3Jvc1tpdGVtLm5hbWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBw
aW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNyb3MpLnJlbmFtZUxhYmVscyhpdGVtLm5hbWUpLmxpc3QK
KyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBpdGVtLmRlbWFjcm9pZnkobXlNYWNyb3Mp
CisgICAgICBlbmQKKyAgICB9CisgICAgU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIG5ld0xpc3Qp
LnN1YnN0aXR1dGUoe30pCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5yZXNvbHZlT2Zmc2V0cyhv
ZmZzZXRzLCBzaXplcykKKyMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGhhcyBvZmZzZXQg
dmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMKKyMgb2Zmc2V0cy4KKyMKKworY2xhc3MgTm9kZQor
ICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgbWFwQ2hpbGRyZW4gewor
ICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXpl
cykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldAorICBkZWYgcmVzb2x2
ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgaWYgb2Zmc2V0c1tzZWxmXQorICAgICAgSW1t
ZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXRzW3NlbGZdKQorICAgIGVsc2UKKyAgICAgIHNl
bGYKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mCisgIGRlZiByZXNvbHZlT2Zm
c2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICBpZiBzaXplc1tzZWxmXQorICAgICAgSW1tZWRpYXRl
Lm5ldyhjb2RlT3JpZ2luLCBzaXplc1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBwdXRzICJDb3Vs
ZCBub3QgZmluZCAje3NlbGYuaW5zcGVjdH0gaW4gI3tzaXplcy5rZXlzLmluc3BlY3R9IgorICAg
ICAgcHV0cyAic2l6ZXMgPSAje3NpemVzLmluc3BlY3R9IgorICAgICAgc2VsZgorICAgIGVuZAor
ICBlbmQKK2VuZAorCisjCisjIG5vZGUuZm9sZAorIworIyBSZXNvbHZlIGNvbnN0YW50IHJlZmVy
ZW5jZXMgYW5kIGNvbXB1dGUgYXJpdGhtZXRpYyBleHByZXNzaW9ucy4KKyMKKworY2xhc3MgTm9k
ZQorICBkZWYgZm9sZAorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwgY2hpbGQgfAorICAgICAg
Y2hpbGQuZm9sZAorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcworICBk
ZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xk
CisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVy
biBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhj
b2RlT3JpZ2luLCBAbGVmdC52YWx1ZSArIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xh
c3MgU3ViSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAg
IEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBsZWZ0LmlzX2E/
IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRl
CisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAtIEByaWdodC52YWx1
ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcworICBkZWYgZm9sZAorICAgIEBs
ZWZ0ID0gQGxlZnQuZm9sZAorICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgcmV0dXJuIHNl
bGYgdW5sZXNzIEBsZWZ0LmlzX2E/IEltbWVkaWF0ZQorICAgIHJldHVybiBzZWxmIHVubGVzcyBA
cmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVm
dC52YWx1ZSAqIEByaWdodC52YWx1ZSkKKyAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRl
CisgIGRlZiBmb2xkCisgICAgQGNoaWxkID0gQGNoaWxkLmZvbGQKKyAgICByZXR1cm4gc2VsZiB1
bmxlc3MgQGNoaWxkLmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdp
biwgLUBjaGlsZC52YWx1ZSkKKyAgZW5kCitlbmQKKworIworIyBub2RlLnJlc29sdmVBZnRlclNl
dHRpbmdzKG9mZnNldHMsIHNpemVzKQorIworIyBDb21waWxlIGFzc2VtYmx5IGFnYWluc3QgYSBz
ZXQgb2Ygb2Zmc2V0cy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgcmVzb2x2ZShvZmZzZXRzLCBz
aXplcykKKyAgICBkZW1hY3JvaWZ5KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcyku
Zm9sZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
eDg2LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
eDg2LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIw
MTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgUmVnaXN0ZXJJRAorICBkZWYgc3VwcG9ydHM4Qml0
T25YODYKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0MSIsICJh
MSIsICJyMSIsICJ0MiIsICJ0MyIKKyAgICAgIHRydWUKKyAgICB3aGVuICJ0NCIsICJjZnIiCisg
ICAgICBmYWxzZQorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorICAKKyAg
ZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJ0MCIsICJhMCIs
ICJyMCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWFsIgor
ICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWF4IgorICAgICAgd2hlbiA6aW50CisgICAgICAg
ICIlZWF4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAi
dDEiLCAiYTEiLCAicjEiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAg
ICAgIiVkbCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVkeCIKKyAgICAgIHdoZW4gOmlu
dAorICAgICAgICAiJWVkeCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAor
ICAgIHdoZW4gInQyIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAg
ICIlY2wiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlY3giCisgICAgICB3aGVuIDppbnQK
KyAgICAgICAgIiVlY3giCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAg
ICB3aGVuICJ0MyIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAi
JWJsIgorICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWJ4IgorICAgICAgd2hlbiA6aW50Cisg
ICAgICAgICIlZWJ4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAg
d2hlbiAidDQiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVz
aWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlc2kiCisgICAgICB3aGVuIDppbnQKKyAg
ICAgICAgIiVlc2kiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3
aGVuICJjZnIiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVk
aWwiCisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZGkiCisgICAgICB3aGVuIDppbnQKKyAg
ICAgICAgIiVlZGkiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3
aGVuICJzcCIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJXNw
bCIKKyAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVzcCIKKyAgICAgIHdoZW4gOmludAorICAg
ICAgICAiJWVzcCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIGVs
c2UKKyAgICAgIHJhaXNlICJCYWQgcmVnaXN0ZXIgI3tuYW1lfSBmb3IgWDg2IGF0ICN7Y29kZU9y
aWdpblN0cmluZ30iCisgICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkK
KyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0
ZXJJRAorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgIHJhaXNlIHVubGVzcyBraW5kID09IDpk
b3VibGUKKyAgICBjYXNlIG5hbWUKKyAgICB3aGVuICJmdDAiLCAiZmEwIiwgImZyIgorICAgICAg
IiV4bW0wIgorICAgIHdoZW4gImZ0MSIsICJmYTEiCisgICAgICAiJXhtbTEiCisgICAgd2hlbiAi
ZnQyIiwgImZhMiIKKyAgICAgICIleG1tMiIKKyAgICB3aGVuICJmdDMiLCAiZmEzIgorICAgICAg
IiV4bW0zIgorICAgIHdoZW4gImZ0NCIKKyAgICAgICIleG1tNCIKKyAgICB3aGVuICJmdDUiCisg
ICAgICAiJXhtbTUiCisgICAgZWxzZQorICAgICAgcmFpc2UgIkJhZCByZWdpc3RlciAje25hbWV9
IGZvciBYODYgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKyAgZW5kCisgIGRlZiB4
ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgZW5kCitl
bmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiQje3Zh
bHVlfSIKKyAgZW5kCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICIje3ZhbHVlfSIK
KyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAg
ICB0cnVlCisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3tvZmZzZXQu
dmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSkiCisgIGVuZAorICBkZWYgeDg2Q2FsbE9w
ZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2Ns
YXNzIEJhc2VJbmRleAorICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAor
ICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54
ODZPcGVyYW5kKDppbnQpfSwgI3tpbmRleC54ODZPcGVyYW5kKDppbnQpfSwgI3tzY2FsZX0pIgor
ICBlbmQKKworICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2b3BlcmFuZChr
aW5kKX0iCisgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICBkZWYgc3VwcG9y
dHM4Qml0T25YODYKKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIHg4Nk9wZXJhbmQoa2luZCkK
KyAgICAiI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCisKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtp
bmQpCisgICAgIioje2FkZHJlc3MudmFsdWV9IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJl
ZmVyZW5jZQorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICBhc21MYWJlbAorICBlbmQK
K2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCisgIGRlZiB4ODZDYWxsT3BlcmFuZChr
aW5kKQorICAgIGFzbUxhYmVsCisgIGVuZAorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgIGRl
ZiB4ODZPcGVyYW5kcygqa2luZHMpCisgICAgcmFpc2UgdW5sZXNzIGtpbmRzLnNpemUgPT0gb3Bl
cmFuZHMuc2l6ZQorICAgIHJlc3VsdCA9IFtdCisgICAga2luZHMuc2l6ZS50aW1lcyB7CisgICAg
ICB8IGlkeCB8CisgICAgICByZXN1bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZPcGVyYW5kKGtpbmRz
W2lkeF0pCisgICAgfQorICAgIHJlc3VsdC5qb2luKCIsICIpCisgIGVuZAorCisgIGRlZiB4ODZT
dWZmaXgoa2luZCkKKyAgICBjYXNlIGtpbmQKKyAgICB3aGVuIDpieXRlCisgICAgICAiYiIKKyAg
ICB3aGVuIDpoYWxmCisgICAgICAidyIKKyAgICB3aGVuIDppbnQKKyAgICAgICJsIgorICAgIHdo
ZW4gOmRvdWJsZQorICAgICAgInNkIgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisg
IGVuZAorICAKKyAgZGVmIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwg
bnVtT3BlcmFuZHMpCisgICAgaWYgbnVtT3BlcmFuZHMgPT0gMworICAgICAgaWYgb3BlcmFuZHNb
MF0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICAgIGVsc2lmIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0
cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNb
Ml0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAibW92
I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFu
ZChraW5kKX0iCisgICAgICBlbmQKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2Rl
fSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoa2luZCl9IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZPcChvcGNvZGUs
IGtpbmQpCisgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVy
YW5kcy5zaXplKQorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZTaGlmdChvcGNvZGUsIGtpbmQp
CisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIG9yIG9wZXJhbmRzWzBdID09IFJl
Z2lzdGVySUQuZm9yTmFtZShuaWwsICJ0MiIpCisgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KGtpbmQpfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAlY2ws
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAkYXNtLnB1dHMgInhjaGds
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAgZW5kCisgIGVuZAor
ICAKKyAgZGVmIGhhbmRsZVg4NkRvdWJsZUJyYW5jaChicmFuY2hPcGNvZGUsIG1vZGUpCisgICAg
Y2FzZSBtb2RlCisgICAgd2hlbiA6bm9ybWFsCisgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDpkb3VibGUpfSIKKyAgICB3aGVuIDpyZXZlcnNlCisgICAgICAkYXNtLnB1dHMgInVjb21pc2Qg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDpkb3VibGUpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSBtb2RlLmluc3BlY3QKKyAgICBl
bmQKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLmFzbUxhYmVs
fSIKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2SW50Q29tcGFyZShvcGNvZGVTdWZmaXgsIGtp
bmQpCisgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1swXS52
YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3Vm
Zml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikKKyAgICAgICRhc20ucHV0cyAidGVz
dCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAg
IGVsc2lmIG9wZXJhbmRzWzFdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUg
PT0gMCBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9
PSAiZSIgb3Igb3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4
NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNl
CisgICAgICAkYXNtLnB1dHMgImNtcCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVu
ZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJbnRCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5k
KQorICAgIGhhbmRsZVg4NkludENvbXBhcmUoYnJhbmNoT3Bjb2RlWzEuLi0xXSwga2luZCkKKyAg
ICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAg
ZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZCkKKyAgICBpZiBv
cGVyYW5kLnN1cHBvcnRzOEJpdE9uWDg2CisgICAgICAkYXNtLnB1dHMgIiN7c2V0T3Bjb2RlfSAj
e29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9IgorICAgICAgJGFzbS5wdXRzICJtb3Z6YmwgI3tv
cGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmlu
dCl9LCAlZWF4IgorICAgICAgJGFzbS5wdXRzICIje3NldE9wY29kZX0gJWFsIgorICAgICAgJGFz
bS5wdXRzICJtb3Z6YmwgJWFsLCAlZWF4IgorICAgICAgJGFzbS5wdXRzICJ4Y2hnbCAje29wZXJh
bmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhh
bmRsZVg4NkludENvbXBhcmVTZXQoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NkludENv
bXBhcmUoc2V0T3Bjb2RlWzMuLi0xXSwga2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2Rl
LCBvcGVyYW5kc1syXSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2VGVzdChraW5kKQorICAg
IHZhbHVlID0gb3BlcmFuZHNbMF0KKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDIK
KyAgICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAgIHdoZW4gMwor
ICAgICAgbWFzayA9IG9wZXJhbmRzWzFdCisgICAgZWxzZQorICAgICAgcmFpc2UgIkV4cGVjdGVk
IDIgb3IgMyBvcGVyYW5kcywgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdp
blN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAgaWYgbWFzay5pc19hPyBJbW1lZGlhdGUgYW5k
IG1hc2sudmFsdWUgPT0gLTEKKyAgICAgIGlmIHZhbHVlLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAg
ICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7dmFsdWUueDg2T3BlcmFuZChr
aW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBlbHNlCisgICAgICAgICRh
c20ucHV0cyAiY21wI3t4ODZTdWZmaXgoa2luZCl9ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQoa2lu
ZCl9IgorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZm
aXgoa2luZCl9ICN7bWFzay54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2QnJhbmNoVGVzdChicmFu
Y2hPcGNvZGUsIGtpbmQpCisgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgICRhc20ucHV0cyAi
I3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHMubGFzdC5hc21MYWJlbH0iCisgIGVuZAorICAKKyAg
ZGVmIGhhbmRsZVg4NlNldFRlc3Qoc2V0T3Bjb2RlLCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qo
a2luZCkKKyAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kcy5sYXN0KQorICBlbmQK
KyAgCisgIGRlZiBoYW5kbGVYODZPcEJyYW5jaChvcGNvZGUsIGJyYW5jaE9wY29kZSwga2luZCkK
KyAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNp
emUgLSAxKQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAganVtcFRh
cmdldCA9IG9wZXJhbmRzWzNdCisgICAgd2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0gb3BlcmFu
ZHNbMl0KKyAgICBlbHNlCisgICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQKKyAgICAk
YXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQuYXNtTGFiZWx9IgorICBlbmQK
KyAgCisgIGRlZiBoYW5kbGVYODZTdWJCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgIGlm
IG9wZXJhbmRzLnNpemUgPT0gNCBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAg
ICRhc20ucHV0cyAibmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
JGFzbS5wdXRzICJhZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFu
ZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgaGFuZGxlWDg2T3BXaXRo
TnVtT3BlcmFuZHMoInN1YiN7eDg2U3VmZml4KGtpbmQpfSIsIGtpbmQsIG9wZXJhbmRzLnNpemUg
LSAxKQorICAgIGVuZAorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gNAorICAgICAg
anVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgd2hlbiAzCisgICAgICBqdW1wVGFyZ2V0ID0g
b3BlcmFuZHNbMl0KKyAgICBlbHNlCisgICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICBlbmQK
KyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje2p1bXBUYXJnZXQuYXNtTGFiZWx9Igor
ICBlbmQKKyAgCisgIGRlZiBsb3dlclg4NgorICAgICRhc20uY29tbWVudCBjb2RlT3JpZ2luU3Ry
aW5nCisgICAgY2FzZSBvcGNvZGUKKyAgICB3aGVuICJhZGRpIiwgImFkZHAiCisgICAgICBpZiBv
cGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAg
ICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICByYWlz
ZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICBpZiBvcGVyYW5k
c1swXS52YWx1ZSA9PSAwCisgICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRz
WzJdCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdmwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICBlbmQK
KyAgICAgICAgZWxzZQorICAgICAgICAgICRhc20ucHV0cyAibGVhbCAje29wZXJhbmRzWzBdLnZh
bHVlfSgje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICAgICAgZW5kCisgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09
IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNz
IG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJh
bmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgJGFzbS5wdXRzICJsZWFsICgje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9
KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAg
dW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAgICRh
c20ucHV0cyAiYWRkbCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgICAgZW5kCisg
ICAgICBlbmQKKyAgICB3aGVuICJhbmRpIiwgImFuZHAiCisgICAgICBoYW5kbGVYODZPcCgiYW5k
bCIsIDppbnQpCisgICAgd2hlbiAibHNoaWZ0aSIKKyAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYWxs
IiwgOmludCkKKyAgICB3aGVuICJtdWxpIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFu
ZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgJGFzbS5wdXRzICJpbXVsbCAj
e3g4Nk9wZXJhbmRzKDppbnQsIDppbnQsIDppbnQpfSIKKyAgICAgIGVsc2UKKyAgICAgICAgIyBG
SVhNRTogY291bGQgZG8gc29tZSBwZWVwaG9sZSBpbiBjYXNlIHRoZSBsZWZ0IG9wZXJhbmQgaXMg
aW1tZWRpYXRlIGFuZCBpdCdzCisgICAgICAgICMgYSBwb3dlciBvZiB0d28uCisgICAgICAgIGhh
bmRsZVg4Nk9wKCJpbXVsbCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJuZWdpIgorICAg
ICAgJGFzbS5wdXRzICJuZWdsICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm5vdGki
CisgICAgICAkYXNtLnB1dHMgIm5vdGwgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgd2hlbiAi
b3JpIiwgIm9ycCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJvcmwiLCA6aW50KQorICAgIHdoZW4gInJz
aGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2FybCIsIDppbnQpCisgICAgd2hlbiAidXJz
aGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2hybCIsIDppbnQpCisgICAgd2hlbiAic3Vi
aSIsICJzdWJwIgorICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9
PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1dHMgIm5lZ2wgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICAgICAgJGFzbS5wdXRzICJhZGRsICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBl
bHNlCisgICAgICAgIGhhbmRsZVg4Nk9wKCJzdWJsIiwgOmludCkKKyAgICAgIGVuZAorICAgIHdo
ZW4gInhvcmkiLCAieG9ycCIKKyAgICAgIGhhbmRsZVg4Nk9wKCJ4b3JsIiwgOmludCkKKyAgICB3
aGVuICJsb2FkaSIsICJzdG9yZWkiLCAibG9hZHAiLCAic3RvcmVwIgorICAgICAgJGFzbS5wdXRz
ICJtb3ZsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgIHdoZW4gImxvYWRiIgorICAg
ICAgJGFzbS5wdXRzICJtb3Z6YmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGJzIgorICAgICAg
JGFzbS5wdXRzICJtb3ZzYmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGgiCisgICAgICAkYXNt
LnB1dHMgIm1vdnp3bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJsb2FkaHMiCisgICAgICAkYXNtLnB1
dHMgIm1vdnN3bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJzdG9yZWIiCisgICAgICAkYXNtLnB1dHMg
Im1vdmIgI3t4ODZPcGVyYW5kcyg6Ynl0ZSwgOmJ5dGUpfSIKKyAgICB3aGVuICJsb2FkZCIsICJt
b3ZlZCIsICJzdG9yZWQiCisgICAgICAkYXNtLnB1dHMgIm1vdnNkICN7eDg2T3BlcmFuZHMoOmRv
dWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImFkZGQiCisgICAgICAkYXNtLnB1dHMgImFkZHNk
ICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gImRpdmQiCisgICAg
ICAkYXNtLnB1dHMgImRpdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAg
IHdoZW4gInN1YmQiCisgICAgICAkYXNtLnB1dHMgInN1YnNkICN7eDg2T3BlcmFuZHMoOmRvdWJs
ZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gIm11bGQiCisgICAgICAkYXNtLnB1dHMgIm11bHNkICN7
eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgIHdoZW4gInNxcnRkIgorICAgICAg
JGFzbS5wdXRzICJzcXJ0c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJjaTJkIgorICAgICAg
JGFzbS5wdXRzICJjdnRzaTJzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgIHdoZW4gImJkZXEiCisgICAgICBp
c1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZGVxIikKKyAgICAgICRhc20ucHV0cyAi
dWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgJGFzbS5wdXRzICJqcCAje0xhYmVsUmVmZXJl
bmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkuYXNtTGFiZWx9IgorICAgICAgJGFzbS5w
dXRzICJqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBvcGVyYW5kc1syXSkuYXNt
TGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRuZXEi
CisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpuZSIsIDpub3JtYWwpCisgICAgd2hlbiAi
YmRndCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6bm9ybWFsKQorICAgIHdo
ZW4gImJkZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOm5vcm1hbCkK
KyAgICB3aGVuICJiZGx0IgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYSIsIDpyZXZl
cnNlKQorICAgIHdoZW4gImJkbHRlcSIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFl
IiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJh
bmNoKCJqZSIsIDpub3JtYWwpCisgICAgd2hlbiAiYmRuZXF1biIKKyAgICAgIGlzVW5vcmRlcmVk
ID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4iKQorICAgICAgaXNFcXVhbCA9IExvY2FsTGFi
ZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJs
ZSl9IgorICAgICAgJGFzbS5wdXRzICJqcCAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2lu
LCBpc1Vub3JkZXJlZCkuYXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJqZSAje0xhYmVsUmVm
ZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBpc0VxdWFsKS5hc21MYWJlbH0iCisgICAgICBpc1Vub3Jk
ZXJlZC5sb3dlcigiWDg2IikKKyAgICAgICRhc20ucHV0cyAiam1wICN7b3BlcmFuZHNbMl0uYXNt
TGFiZWx9IgorICAgICAgaXNFcXVhbC5sb3dlcigiWDg2IikKKyAgICB3aGVuICJiZGd0dW4iCisg
ICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOnJldmVyc2UpCisgICAgd2hlbiAiYmRn
dGVxdW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpyZXZlcnNlKQorICAg
IHdoZW4gImJkbHR1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6bm9ybWFs
KQorICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUi
LCA6bm9ybWFsKQorICAgIHdoZW4gImJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiY21wbCAkMHg4MDAwMDAwMCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJqZSAje29wZXJhbmRzWzJd
LmFzbUxhYmVsfSIKKyAgICB3aGVuICJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICB3aGVuICJiY2QyaSIKKyAgICAgICRhc20ucHV0cyAiY3Z0dHNkMnNp
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICAkYXNtLnB1dHMgInRlc3RsICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAkYXNt
LnB1dHMgImplICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJjdnRz
aTJzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20u
cHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIK
KyAgICAgICRhc20ucHV0cyAianAgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAkYXNt
LnB1dHMgImpuZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJtb3ZkeiIKKyAg
ICAgICRhc20ucHV0cyAieG9ycGQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJwb3AiCisgICAg
ICAkYXNtLnB1dHMgInBvcCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdo
ZW4gInB1c2giCisgICAgICAkYXNtLnB1dHMgInB1c2ggI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgaWYgSW1t
ZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBS
ZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAieG9ybCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzaWYg
b3BlcmFuZHNbMF0gIT0gb3BlcmFuZHNbMV0KKyAgICAgICAgJGFzbS5wdXRzICJtb3ZsICN7eDg2
T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgZW5kCisgICAgd2hlbiAibm9wIgorICAgICAg
JGFzbS5wdXRzICJub3AiCisgICAgd2hlbiAiYmllcSIsICJicGVxIgorICAgICAgaGFuZGxlWDg2
SW50QnJhbmNoKCJqZSIsIDppbnQpCisgICAgd2hlbiAiYmluZXEiLCAiYnBuZXEiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImpuZSIsIDppbnQpCisgICAgd2hlbiAiYmlhIiwgImJwYSIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6aW50KQorICAgIHdoZW4gImJpYWVxIiwgImJw
YWVxIgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6aW50KQorICAgIHdoZW4gImJp
YiIsICJicGIiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmludCkKKyAgICB3aGVu
ICJiaWJlcSIsICJicGJlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmludCkK
KyAgICB3aGVuICJiaWd0IiwgImJwZ3QiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwg
OmludCkKKyAgICB3aGVuICJiaWd0ZXEiLCAiYnBndGVxIgorICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqZ2UiLCA6aW50KQorICAgIHdoZW4gImJpbHQiLCAiYnBsdCIKKyAgICAgIGhhbmRsZVg4
NkludEJyYW5jaCgiamwiLCA6aW50KQorICAgIHdoZW4gImJpbHRlcSIsICJicGx0ZXEiCisgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpsZSIsIDppbnQpCisgICAgd2hlbiAiYmJlcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYm5lcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJhIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDpieXRlKQorICAgIHdoZW4gImJiYWVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmIiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImpiIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiZXEiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRlKQorICAgIHdoZW4gImJiZ3QiCisgICAgICBo
YW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJndGVxIgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0IgorICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDpieXRlKQorICAgIHdoZW4gImJibHRlcSIKKyAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamx0ZXEiLCA6Ynl0ZSkKKyAgICB3aGVuICJidGlvIiwgImJ0
cG8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDppbnQpCisgICAgd2hlbiAiYnRp
cyIsICJidHBzIgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6aW50KQorICAgIHdo
ZW4gImJ0aXoiLCAiYnRweiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6IiwgOmludCkK
KyAgICB3aGVuICJidGlueiIsICJidHBueiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpu
eiIsIDppbnQpCisgICAgd2hlbiAiYnRibyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpv
IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRicyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpz
IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRieiIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6
IiwgOmJ5dGUpCisgICAgd2hlbiAiYnRibnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJq
bnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJqbXAiCisgICAgICAkYXNtLnB1dHMgImptcCAje29wZXJh
bmRzWzBdLng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJiYWRkaW8iLCAiYmFkZHBv
IgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam8iLCA6aW50KQorICAgIHdoZW4g
ImJhZGRpcyIsICJiYWRkcHMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqcyIs
IDppbnQpCisgICAgd2hlbiAiYmFkZGl6IiwgImJhZGRweiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJh
bmNoKCJhZGRsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJiYWRkaW56IiwgImJhZGRwbnoiCisg
ICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJz
dWJpbyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgiam8iLCA6aW50KQorICAgIHdoZW4gImJz
dWJpcyIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianMiLCA6aW50KQorICAgIHdoZW4gImJz
dWJpeiIKKyAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianoiLCA6aW50KQorICAgIHdoZW4gImJz
dWJpbnoiCisgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpueiIsIDppbnQpCisgICAgd2hlbiAi
Ym11bGlvIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpvIiwgOmludCkKKyAg
ICB3aGVuICJibXVsaXMiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAianMiLCA6
aW50KQorICAgIHdoZW4gImJtdWxpeiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIs
ICJqeiIsIDppbnQpCisgICAgd2hlbiAiYm11bGlueiIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNo
KCJpbXVsbCIsICJqbnoiLCA6aW50KQorICAgIHdoZW4gImJvcmlvIgorICAgICAgaGFuZGxlWDg2
T3BCcmFuY2goIm9ybCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXMiCisgICAgICBoYW5k
bGVYODZPcEJyYW5jaCgib3JsIiwgImpzIiwgOmludCkKKyAgICB3aGVuICJib3JpeiIKKyAgICAg
IGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAianoiLCA6aW50KQorICAgIHdoZW4gImJvcmlueiIK
KyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJi
cmVhayIKKyAgICAgICRhc20ucHV0cyAiaW50ICQzIgorICAgIHdoZW4gImNhbGwiCisgICAgICAk
YXNtLnB1dHMgImNhbGwgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAg
d2hlbiAicmV0IgorICAgICAgJGFzbS5wdXRzICJyZXQiCisgICAgd2hlbiAiY2llcSIsICJjcGVx
IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQpCisgICAgd2hlbiAi
Y2luZXEiLCAiY3BuZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRuZSIsIDpp
bnQpCisgICAgd2hlbiAiY2lhIiwgImNwYSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQo
InNldGEiLCA6aW50KQorICAgIHdoZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAgaGFuZGxlWDg2
SW50Q29tcGFyZVNldCgic2V0YWUiLCA6aW50KQorICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAg
ICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiIiwgOmludCkKKyAgICB3aGVuICJjaWJlcSIs
ICJjcGJlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGJlIiwgOmludCkKKyAg
ICB3aGVuICJjaWd0IiwgImNwZ3QiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRn
IiwgOmludCkKKyAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAgaGFuZGxlWDg2SW50
Q29tcGFyZVNldCgic2V0Z2UiLCA6aW50KQorICAgIHdoZW4gImNpbHQiLCAiY3BsdCIKKyAgICAg
IGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGwiLCA6aW50KQorICAgIHdoZW4gImNpbHRlcSIs
ICJjcGx0ZXEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisg
ICAgd2hlbiAidGlvIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDppbnQpCisgICAg
d2hlbiAidGlzIgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDppbnQpCisgICAgd2hl
biAidGl6IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDppbnQpCisgICAgd2hlbiAi
dGlueiIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG56IiwgOmludCkKKyAgICB3aGVuICJ0
Ym8iCisgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgd2hlbiAidGJz
IgorICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAgIHdoZW4gInRieiIK
KyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0Ym56Igor
ICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6Ynl0ZSkKKyAgICB3aGVuICJwZWVrIgor
ICAgICAgJGFzbS5wdXRzICJtb3ZsICN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fSglZXNwKSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJwb2tlIgorICAgICAgJGFz
bS5wdXRzICJtb3ZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNb
MV0udmFsdWUgKiA0fSglZXNwKSIKKyAgICB3aGVuICJjZHFpIgorICAgICAgJGFzbS5wdXRzICJj
ZHEiCisgICAgd2hlbiAiaWRpdmkiCisgICAgICAkYXNtLnB1dHMgImlkaXZsICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiZmlpMmQiCisgICAgICAkYXNtLnB1dHMg
Im1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAibW92ZCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAicHNsbHEgJDMyLCAleG1t
NyIKKyAgICAgICRhc20ucHV0cyAicG9yICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9IgorICAgIHdoZW4gImZkMmlpIgorICAgICAgJGFzbS5wdXRzICJtb3ZkICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgICAkYXNtLnB1dHMgIm1vdnNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0sICV4bW03IgorICAgICAgJGFzbS5wdXRzICJwc3JscSAkMzIsICV4bW03IgorICAg
ICAgJGFzbS5wdXRzICJtb3ZzZCAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQp
fSIKKyAgICB3aGVuICJibyIKKyAgICAgICRhc20ucHV0cyAiam8gI3tvcGVyYW5kc1swXS5hc21M
YWJlbH0iCisgICAgd2hlbiAiYnMiCisgICAgICAkYXNtLnB1dHMgImpzICN7b3BlcmFuZHNbMF0u
YXNtTGFiZWx9IgorICAgIHdoZW4gImJ6IgorICAgICAgJGFzbS5wdXRzICJqeiAje29wZXJhbmRz
WzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJibnoiCisgICAgICAkYXNtLnB1dHMgImpueiAje29w
ZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJsZWFpIiwgImxlYXAiCisgICAgICAkYXNt
LnB1dHMgImxlYWwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNlCisgICAgICByYWlzZSAiQmFkIG9wY29kZTog
I3tvcGNvZGV9IgorICAgIGVuZAorICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ29kZVNwZWNpYWxpemF0aW9u
S2luZF9oCisjZGVmaW5lIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCituYW1lc3BhY2UgSlND
IHsKKworZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JD
b25zdHJ1Y3QgfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDb2RlU3BlY2lh
bGl6YXRpb25LaW5kX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2
ICsyNyw3IEBACiAjZGVmaW5lIENvbW1vblNsb3dQYXRoc19oCiAKICNpbmNsdWRlICJDb2RlQmxv
Y2suaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiRXhj
ZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQXJyYXkuaCIKIApAQCAtNDEsNiArNDIsMzgg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMgewogCitBTFdB
WVNfSU5MSU5FIEV4ZWNTdGF0ZSogYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lz
dGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7Cisg
ICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAg
QVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOworICAgIENvZGVCbG9jayogbmV3Q29k
ZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtp
bmQpOworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzKCk7CisKKyAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNl
IGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkg
dGhlIGNhbGxlci4KKyAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhleGVjLT5yZWdpc3RlcnMo
KSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2NrLT5tX251bUNh
bGxlZVJlZ2lzdGVycykpCisgICAgICAgIHJldHVybiAwOworCisgICAgQVNTRVJUKGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworCisg
ICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1lIGFuZCBhcmd1bWVudHMs
IHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5lZC4KKyAgICBzaXpl
X3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzOworICAgIFJlZ2lzdGVyKiBzcmMgPSBleGVjLT5yZWdpc3RlcnMoKTsKKyAg
ICBSZWdpc3RlciogZHN0ID0gZXhlYy0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKKworICAgIGludCBp
OworICAgIGludCBlbmQgPSAtRXhlY1N0YXRlOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMpOworICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3Rb
aV0gPSBzcmNbaV07CisKKyAgICBlbmQgLT0gZGVsdGE7CisgICAgZm9yICggOyBpID49IGVuZDsg
LS1pKQorICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOworCisgICAgRXhlY1N0YXRlKiBu
ZXdFeGVjID0gRXhlY1N0YXRlOjpjcmVhdGUoZHN0KTsKKyAgICBBU1NFUlQoKHZvaWQqKW5ld0V4
ZWMgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7CisgICAgcmV0dXJuIG5ld0V4ZWM7Cit9CisKIEFM
V0FZU19JTkxJTkUgYm9vbCBvcEluc3RhbmNlT2ZTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1
ZSB2YWx1ZSwgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHByb3RvKQogewogICAgIEFTU0VSVCgh
dmFsdWUuaXNDZWxsKCkgfHwgIWJhc2VWYWwuaXNDZWxsKCkgfHwgIXByb3RvLmlzQ2VsbCgpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2
aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJs
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCeXRlY29k
ZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0RyaXZl
ci5oIgorI2luY2x1ZGUgIkV4ZWN1dGlvbkhhcm5lc3MuaCIKICNpbmNsdWRlICJKSVQuaCIKICNp
bmNsdWRlICJKSVREcml2ZXIuaCIKICNpbmNsdWRlICJQYXJzZXIuaCIKQEAgLTg0LDcgKzg1LDcg
QEAgSW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6OmludHJpbnNpYygpIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KIHN0YXRpYyB2b2lkIGpldHRpc29uQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgT3duUHRyPFQ+JiBjb2RlQmxvY2spCiB7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+
Z2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29k
ZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJU
KGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgT3duUHRyPFQ+IGNvZGVCbG9ja1RvSmV0
dGlzb24gPSBjb2RlQmxvY2sucmVsZWFzZSgpOwogICAgIGNvZGVCbG9jayA9IHN0YXRpY19wb2lu
dGVyX2Nhc3Q8VD4oY29kZUJsb2NrVG9KZXR0aXNvbi0+cmVsZWFzZUFsdGVybmF0aXZlKCkpOwpA
QCAtMTY5LDkgKzE3MCwzMCBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVPcHRp
bWl6CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEV2YWxFeGVjdXRhYmxlOjpqaXRDb21w
aWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENv
bXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2Rl
Rm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJl
c3VsdCwgcmVzdWx0KTsKK30KKworaW5saW5lIGNvbnN0IGNoYXIqIHNhbXBsaW5nRGVzY3JpcHRp
b24oSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworICAgIHN3aXRjaCAoaml0VHlwZSkgewor
ICAgIGNhc2UgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAgICAgcmV0dXJuICJJbnRl
cnByZXRlciBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBjYXNlIEpJVENvZGU6OkJhc2VsaW5l
SklUOgorICAgICAgICByZXR1cm4gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAg
IGNhc2UgSklUQ29kZTo6REZHSklUOgorICAgICAgICByZXR1cm4gIkRGRyBDb21waWxhdGlvbiAo
VE9UQUwpIjsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCiBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNv
bXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWlu
Tm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNh
bXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUg
Q29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBT
YW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUp
KTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBA
IC0yMTIsNyArMjM0LDcgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJu
YQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlSWZBcHByb3By
aWF0ZSgqZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRU
eXBlKSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVjdXRpb24oKmdsb2JhbERhdGEsIG1fZXZhbENv
ZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwog
I2VuZGlmCiAKQEAgLTI5Nyw5ICszMTksMTUgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxl
Ojpjb21waWxlT3B0aQogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBQcm9ncmFtRXhlY3V0
YWJsZTo6aml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCBy
ZXN1bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2Rl
QmxvY2ssIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAg
QVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKIEpTT2JqZWN0KiBQcm9ncmFtRXhl
Y3V0YWJsZTo6Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUq
IHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxp
bmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/
ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFM
KSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRp
b24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShq
aXRUeXBlKTsKQEAgLTMzOCw3ICszNjYsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6
OmNvbXBpbGVJbnRlCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBp
bGVJZkFwcHJvcHJpYXRlKCpnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29k
ZUZvckNhbGwsIGppdFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xvYmFs
RGF0YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNDE0LDcgKzQ0Miw3IEBAIEZ1bmN0aW9uQ29k
ZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmIKICAgICB3aGlsZSAocmVzdWx0LT5hbHRlcm5h
dGl2ZSgpKQogICAgICAgICByZXN1bHQgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+
KHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgQVNTRVJU
KHJlc3VsdC0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NF
UlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCkBAIC00NDAsNiArNDY4LDE4IEBAIEpTT2JqZWN0KiBGdW5jdGlv
bkV4ZWN1dGFibGU6OmNvbXBpbGVPcHQKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRnVu
Y3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRl
KGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRD
b2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0b21U
aWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lk
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25JZkFw
cHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVG
b3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJv
bFRhYmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQpOworfQorCiBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxl
Ojpjb2RlQmxvY2tXaXRoQnl0ZWNvZGVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQog
ewogICAgIEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0Zv
cihraW5kKTsKQEAgLTQ4NCw3ICs1MjQsNyBAQCBQYXNzT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2Nr
PiBGdW5jdGlvbkV4CiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JD
YWxsSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5v
ZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1w
bGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENv
bXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2Ft
cGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7
CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNTA2
LDcgKzU0Niw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAg
ICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDYWxsLT5zaGFyZWRTeW1ib2xUYWJsZSgp
OwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9w
cmlhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZv
ckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0
VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYy0+Z2xvYmFs
RGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZv
ckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSwgQ29kZUZvckNhbGwp
KQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC01MjYsNyArNTY2LDcgQEAgSlNPYmpl
Y3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogCiBKU09iamVjdCogRnVuY3Rpb25F
eGVjdXRhYmxlOjpjb21waWxlRm9yQ29uc3RydWN0SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBT
Y29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkK
IHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6
OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21w
aWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2Ft
cGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAg
VU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtNTQ4LDcgKzU4OCw3IEBAIEpTT2JqZWN0KiBGdW5j
dGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxv
Y2tGb3JDb25zdHJ1Y3QtPnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQot
ICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9iYWxEYXRh
KCksIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0
Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkK
KyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxEYXRhKCks
IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29k
ZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2Rl
Rm9yQ29uc3RydWN0KSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTA2NTkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIEV4ZWN1dGFibGVfaAogCiAjaW5jbHVkZSAi
Q2FsbERhdGEuaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTm9k
ZXMuaCIKQEAgLTM5LDEyICs0MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1
Z2dlcjsKICAgICBjbGFzcyBFdmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIEZ1bmN0aW9uQ29kZUJs
b2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFt
Q29kZUJsb2NrOwogICAgIGNsYXNzIFNjb3BlQ2hhaW5Ob2RlOwogCiAgICAgc3RydWN0IEV4Y2Vw
dGlvbkluZm87CiAgICAgCi0gICAgZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZv
ckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKICAgICBlbnVtIENvbXBpbGF0aW9uS2luZCB7IEZp
cnN0Q29tcGlsYXRpb24sIE9wdGltaXppbmdDb21waWxhdGlvbiB9OwogCiAgICAgaW5saW5lIGJv
b2wgaXNDYWxsKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKQEAgLTMxOSw2ICszMjAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBw
dWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFi
bGUgQmFzZTsKIApAQCAtMzM4LDYgKzM0MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAK
ICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZShKU0ds
b2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYpOwogI2Vu
ZGlmCiAKICAgICAgICAgRXZhbENvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAtMzg0
LDYgKzM4Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBQcm9ncmFt
RXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYg
U2NyaXB0RXhlY3V0YWJsZSBCYXNlOwogCkBAIC00MTEsNiArNDE1LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRp
bWl6ZWRDb2RlKEpTR2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNHbG9i
YWxEYXRhJik7CiAjZW5kaWYKIAogICAgICAgICBQcm9ncmFtQ29kZUJsb2NrJiBnZW5lcmF0ZWRC
eXRlY29kZSgpCkBAIC00NTMsNiArNDU4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBGdW5jdGlvbkV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFz
ZTsKIApAQCAtNTA4LDYgKzUxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBF
TkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNhbGwoSlNH
bG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNhbGwoSlNHbG9iYWxEYXRh
Jik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ2FsbCgpIGNvbnN0CkBA
IC01MzUsNiArNTQyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShK
SVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KEpTR2xv
YmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxE
YXRhJik7CiAjZW5kaWYKIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ29uc3RydWN0KCkg
Y29uc3QKQEAgLTU4Miw2ICs1OTAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAg
ICAgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdENvbXBpbGVGb3Io
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAg
ICAgICAgICAgaml0Q29tcGlsZUZvckNhbGwoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZv
ckNvbnN0cnVjdCk7CisgICAgICAgICAgICBqaXRDb21waWxlRm9yQ29uc3RydWN0KGdsb2JhbERh
dGEpOworICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0
ZWRGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIEV4ZWN1dGlvbkhhcm5lc3NfaAorI2RlZmluZSBFeGVjdXRp
b25IYXJuZXNzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKEpJ
VCkKKworI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMu
aCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+
CitpbmxpbmUgYm9vbCBwcmVwYXJlRm9yRXhlY3V0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJ
VENvZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJ
VENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBp
biB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RW50cnlwb2lu
dChnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUpOworICAgICAgICBjb2RlQmxv
Y2stPnNldEpJVENvZGUoaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOworICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorICAgIHJldHVy
biBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENvZGUs
IGppdFR5cGUpOworfQorCitpbmxpbmUgYm9vbCBwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24o
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBjb2Rl
QmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdp
dGhBcml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBKSVRDb2RlOjpK
SVRUeXBlIGppdFR5cGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7Cisg
ICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAgICAg
ICBMTEludDo6Z2V0RnVuY3Rpb25FbnRyeXBvaW50KGdsb2JhbERhdGEsIGtpbmQsIGppdENvZGUs
IGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShq
aXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShraW5kKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJ
TlQpCisgICAgcmV0dXJuIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0
YSwgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIHN5bWJvbFRhYmxl
LCBqaXRUeXBlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUo
SklUKQorCisjZW5kaWYgLy8gRXhlY3V0aW9uSGFybmVzc19oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCShyZXZpc2lvbiAxMDY1OTApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMTI0LDcgKzEyNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93bkFy
cmF5UHRyPFdyaXRlQmFycmllcjxVbmtub3duPiA+IHJlZ2lzdGVyQXJyYXkgPSBhZG9wdEFycmF5
UHRyKG5ldyBXcml0ZUJhcnJpZXI8VW5rbm93bj5bcmVnaXN0ZXJBcnJheVNpemVdKTsKICAgICAg
ICAgV3JpdGVCYXJyaWVyPFVua25vd24+KiByZWdpc3RlcnMgPSByZWdpc3RlckFycmF5LmdldCgp
ICsgcmVnaXN0ZXJPZmZzZXQ7Ci0KKyAgICAgICAgCiAgICAgICAgIC8vIENvcHkgYWxsIGFyZ3Vt
ZW50cyB0aGF0IGNhbiBiZSBjYXB0dXJlZCBieSBuYW1lIG9yIGJ5IHRoZSBhcmd1bWVudHMgb2Jq
ZWN0LgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fbnVtQ2FwdHVyZWRBcmdzOyArK2kp
IHsKICAgICAgICAgICAgIGludCBpbmRleCA9IENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXQoaSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCShyZXZpc2lvbiAx
MDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
SlNBcnJheTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBzdHJ1Y3Qg
U3BhcnNlQXJyYXlFbnRyeSA6IHB1YmxpYyBXcml0ZUJhcnJpZXI8VW5rbm93bj4gewogICAgICAg
ICB0eXBlZGVmIFdyaXRlQmFycmllcjxVbmtub3duPiBCYXNlOwpAQCAtMTIyLDYgKzEyMyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBKU0FycmF5IDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgICAgICBmcmllbmQgY2xhc3MgV2Fsa2VyOwogCiAgICAgcHJvdGVjdGVkOgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlzaW9uIDEwNjU5MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zNiw5ICszNiwxMCBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU0dsb2Jh
bE9iamVjdDsKLSAgICBjbGFzcyBTdHJ1Y3R1cmU7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0
eU5hbWVBcnJheTsKKyAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBlbnVtIEVudW1lcmF0aW9u
TW9kZSB7CiAgICAgICAgIEV4Y2x1ZGVEb250RW51bVByb3BlcnRpZXMsCkBAIC0xNjQsNiArMTY1
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBib29sIGdldE93blByb3BlcnR5
RGVzY3JpcHRvcihKU09iamVjdCosIEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBQcm9w
ZXJ0eURlc2NyaXB0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBjb25zdCBDbGFzc0luZm8q
IG1fY2xhc3NJbmZvOwogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBtX3N0cnVjdHVy
ZTsKICAgICB9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNGdW5jdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw2ICszMyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAgIGNsYXNzIEpTQWN0aXZhdGlv
bjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBTb3VyY2VDb2Rl
OwogICAgIG5hbWVzcGFjZSBERkcgewpAQCAtMTQyLDYgKzE0Myw4IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9y
Jik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0hvc3RG
dW5jdGlvbk5vbklubGluZSgpIGNvbnN0OwogCiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlIGFyZ3Vt
ZW50c0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVlLCBjb25zdCBJZGVudGlmaWVyJik7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAJKHJl
dmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
RGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJEZWJ1
Z2dlckFjdGl2YXRpb24uaCIKICNpbmNsdWRlICJGdW5jdGlvbkNvbnN0cnVjdG9yLmgiCiAjaW5j
bHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAjaW5j
bHVkZSAiSlNBUElWYWx1ZVdyYXBwZXIuaCIKQEAgLTE0MSw2ICsxNDIsOCBAQCBKU0dsb2JhbERh
dGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgLCBrZXl3b3JkcyhhZG9wdFB0cihu
ZXcgS2V5d29yZHModGhpcykpKQogICAgICwgaW50ZXJwcmV0ZXIoMCkKICAgICAsIGhlYXAodGhp
cywgaGVhcFNpemUpCisgICAgLCBqc0FycmF5Q2xhc3NJbmZvKCZKU0FycmF5OjpzX2luZm8pCisg
ICAgLCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvKCZKU0ZpbmFsT2JqZWN0OjpzX2luZm8pCiAjaWYg
RU5BQkxFKERGR19KSVQpCiAgICAgLCBzaXplT2ZMYXN0U2NyYXRjaEJ1ZmZlcigwKQogI2VuZGlm
CkBAIC0yMTYsNyArMjE5LDkgQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFsRGF0
YVR5cAogICAgIGppdFN0dWJzID0gYWRvcHRQdHIobmV3IEpJVFRodW5rcyh0aGlzKSk7CiAjZW5k
aWYKIAotICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKHRoaXMtPmNhblVzZUpJVCgpKTsKKyAg
ICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSgmbGxpbnREYXRhLCB0aGlzLT5jYW5Vc2VKSVQoKSk7
CisgICAgCisgICAgaW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJuVmFsdWUoKTsgLy8gVGhpcyBpcyBu
ZWVkZWQgdG8gY29udmluY2UgdGhlIGxpbmtlciBub3QgdG8gZHJvcCBob3N0IGNhbGwgcmV0dXJu
IHN1cHBvcnQuCiAKICAgICBoZWFwLm5vdGlmeUlzU2FmZVRvQ29sbGVjdCgpOwogfQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJKHJldmlzaW9u
IDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTYgQEAKICNkZWZpbmUgSlNHbG9iYWxEYXRh
X2gKIAogI2luY2x1ZGUgIkNhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rpb24uaCIKLSNpbmNsdWRl
ICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2VDYWNoZS5oIgogI2luY2x1ZGUg
IkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgiCi0jaW5jbHVkZSAiU3Ry
b25nLmgiCisjaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKICNp
bmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVkZSAiTnVt
ZXJpY1N0cmluZ3MuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIKKyNpbmNsdWRlICJTdHJv
bmcuaCIKICNpbmNsdWRlICJUZXJtaW5hdG9yLmgiCiAjaW5jbHVkZSAiVGltZW91dENoZWNrZXIu
aCIKICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCkBAIC02NSw2ICs2Niw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpTT2JqZWN0OwogICAg
IGNsYXNzIEtleXdvcmRzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBj
bGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFBhcnNlckFyZW5hOwogICAgIGNsYXNz
IFJlZ0V4cENhY2hlOwpAQCAtMjQxLDYgKzI0MywxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSGVhcCBoZWFwOwogCiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uOworCisgICAgICAgIGNv
bnN0IENsYXNzSW5mbyogY29uc3QganNBcnJheUNsYXNzSW5mbzsKKyAgICAgICAgY29uc3QgQ2xh
c3NJbmZvKiBjb25zdCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOworCisgICAgICAgIExMSW50OjpE
YXRhIGxsaW50RGF0YTsKKwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFJldHVybkFkZHJlc3NQ
dHIgZXhjZXB0aW9uTG9jYXRpb247CiAgICAgICAgIEpTVmFsdWUgaG9zdENhbGxSZXR1cm5WYWx1
ZTsKQEAgLTM0Niw2ICszNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICN1bmRlZiByZWdpc3RlclR5
cGVkQXJyYXlGdW5jdGlvbgogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTR2xvYmFsRGF0YShHbG9i
YWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CiAgICAgICAgIHN0YXRpYyBK
U0dsb2JhbERhdGEqJiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAgICAgIHZvaWQgY3Jl
YXRlTmF0aXZlVGh1bmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiAr
NDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAg
ICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgR2xvYmFsQ29kZUJsb2NrOworICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFcnJvckNvbnN0cnVj
dG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgUmVnRXhwQ29uc3Ry
dWN0b3I7CkBAIC0zMzUsNiArMzM2LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VY
UE9SVF9QUklWQVRFIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0eUluZm8qLCBp
bnQgY291bnQpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBGb2xkIHJlc2V0IGlu
dG8gaW5pdC4KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0KEpTT2JqZWN0KiB0
aGlzVmFsdWUpOwogICAgICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJvdG90eXBlKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNpb24gMTA2NTkw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBHZXR0ZXJT
ZXR0ZXI7CiAgICAgY2xhc3MgSGFzaEVudHJ5OwogICAgIGNsYXNzIEludGVybmFsRnVuY3Rpb247
CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE1hcmtlZEJsb2Nr
OwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVB
cnJheTsKQEAgLTI3MSw2ICsyNzIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNPYmpl
Y3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdlIGlubGluZVN0b3Jh
Z2UpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIE5vYm9keSBzaG91bGQgZXZlciBhc2sgYW55
IG9mIHRoZXNlIHF1ZXN0aW9ucyBvbiBzb21ldGhpbmcgYWxyZWFkeSBrbm93biB0byBiZSBhIEpT
T2JqZWN0LgogICAgICAgICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVyOwogICAgICAg
ICB1c2luZyBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyOwpAQCAtMzgzLDYgKzM4Niw4IEBAIENPTVBJ
TEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgc3RhdGljIHZvaWQg
ZGVzdHJveShKU0NlbGwqKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFs
T2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAg
ICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2JhbERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9y
YWdlKQogICAgICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCShyZXZpc2lvbiAxMDY1OTApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBJZGVudGlmaWVyOwogICAgIGNsYXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IgOiBwdWJsaWMg
SlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKQEAgLTk2LDYgKzk3LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFByb3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlO
YW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2FjaGVhYmxlU2xvdCk7CiAKICAgICAgICAgV3JpdGVC
YXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYg
KzMyLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNTdHJpbmc7CisgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmco
SlNHbG9iYWxEYXRhKik7CiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKik7
CkBAIC0yNDAsNiArMjQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lk
IHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAg
ICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNvbnN0
OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2U4KExDaGFyKikgY29uc3Q7CiAgICAg
ICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZShVQ2hhciopIGNvbnN0OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkocmV2aXNpb24gMTA2NTkwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zNCw2ICszNCw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQgPSAxOyAvLyBXZWJDb3JlIHVzZXMgTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCB0byBtYWtlIGRvY3VtZW50LmFsbCB1bmRldGVjdGFibGUuCiAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDEgPDwgMTsKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgT3ZlcnJpZGVzSGFzSW5zdGFuY2UgPSAxIDw8IDI7CkBAIC04Nyw2ICs4OSw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBp
c1NldE9uRmxhZ3MxKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPD0gKDEgPDwg
NykpOyByZXR1cm4gbV9mbGFncyAmIGZsYWc7IH0KICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3My
KHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNTRVJUKGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1cm4g
bV9mbGFnczIgJiAoZmxhZyA+PiA4KTsgfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1ZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1ZhbHVlLmNwcAkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgs
NyBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3ludGhlc2l6ZVByb3RvdHlwZShFCiAKIGNoYXIqIEpT
VmFsdWU6OmRlc2NyaXB0aW9uKCkKIHsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSA2
NDsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSAxMjg7CiAgICAgc3RhdGljIGNoYXIg
ZGVzY3JpcHRpb25bc2l6ZV07CiAKICAgICBpZiAoISp0aGlzKQpAQCAtMTI3LDE0ICsxMjcsMTQg
QEAgY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24oKQogICAgICAgICBzbnByaW50ZihkZXNjcmlw
dGlvbiwgc2l6ZSwgIkludDMyOiAlZCIsIGFzSW50MzIoKSk7CiAgICAgZWxzZSBpZiAoaXNEb3Vi
bGUoKSkgewogI2lmIFVTRShKU1ZBTFVFNjQpCi0gICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9u
LCBzaXplLCAiRG91YmxlOiAlbGYsICVseCIsIGFzRG91YmxlKCksIHJlaW50ZXJwcmV0RG91Ymxl
VG9JbnRwdHIoYXNEb3VibGUoKSkpOworICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6
ZSwgIkRvdWJsZTogJWx4LCAlbGYiLCByZWludGVycHJldERvdWJsZVRvSW50cHRyKGFzRG91Ymxl
KCkpLCBhc0RvdWJsZSgpKTsKICNlbHNlCiAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIGRv
dWJsZSBhc0RvdWJsZTsKICAgICAgICAgICAgIHVpbnQzMl90IGFzVHdvSW50MzJzWzJdOwogICAg
ICAgICB9IHU7CiAgICAgICAgIHUuYXNEb3VibGUgPSBhc0RvdWJsZSgpOwotICAgICAgICBzbnBy
aW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlMDh4OiUwOHgiLCBhc0RvdWJs
ZSgpLCB1LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdKTsKKyAgICAgICAgc25wcmlu
dGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICUwOHg6JTA4eCwgJWxmIiwgdS5hc1R3b0lu
dDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSwgYXNEb3VibGUoKSk7CiAjZW5kaWYKICAgICB9IGVs
c2UgaWYgKGlzQ2VsbCgpKQogICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkNl
bGw6ICVwIiwgYXNDZWxsKCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCwxMCArMzgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAKICAgICBjbGFzcyBKU1Zhcmlh
YmxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBmcmllbmQgY2xh
c3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAg
ICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAxMDY1
OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNiArNTIsMTAgQEAgdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29u
c3RydWN0SW5saQogCiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsKIAoraW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2ludDMyX3QgZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworaW50MzJfdCBleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JKSVRTb29uOworCiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9w
dGltaXplQWZ0ZXJXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJMb25nV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250
T3B0aW1pemVBbnl0aW1lU29vbjsKQEAgLTEzNyw2ICsxNDEsMTAgQEAgdm9pZCBpbml0aWFsaXpl
T3B0aW9ucygpCiAgICAgCiAgICAgU0VUKG1heGltdW1JbmxpbmluZ0RlcHRoLCA1KTsKIAorICAg
IFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcCwgICAgIC0xMDApOwor
ICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb24sIHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9ySklUU29vbiwgICAgICAgICAgICAtMTAwKTsKKwogICAgIFNFVChleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwLCAgICAgLTEwMDApOwogICAgIFNFVChl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCwgLTUwMDApOwog
ICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiwg
c3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOwpAQCAtMTg1LDYgKzE5Myw4IEBA
IHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIGlmIChjcHVzVG9Vc2UgPCAxKQogICAgICAg
ICBjcHVzVG9Vc2UgPSAxOwogICAgIAorICAgIGNwdXNUb1VzZSA9IDE7CisgICAgCiAgICAgU0VU
KG51bWJlck9mR0NNYXJrZXJzLCBjcHVzVG9Vc2UpOwogCiAgICAgQVNTRVJUKGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uIDw9IGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTAg
QEAgZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cgogCiBleHRlcm4gdW5z
aWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERlcHRoIG9mIGlubGluZSBzdGFjaywgc28g
MSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMuCiAKK2V4dGVybiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworZXh0ZXJuIGludDMyX3QgZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworZXh0ZXJuIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogZXh0ZXJuIGludDMyX3QgZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogZXh0ZXJuIGlu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZpc2lv
biAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpT
T2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTY29w
ZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCkBAIC05MSw2ICs5
Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25z
dCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAgICAgfTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShy
ZXZpc2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjIsNyArMzIyLDcgQEAgU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgICAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd1By
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgICAgIHJldHVybiB0cmFuc2l0aW9uOwogICAg
IH0KLQorICAgIAogICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNyZWF0ZShnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUpOwogCiAgICAgdHJhbnNpdGlvbi0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5z
ZXRNYXlCZU51bGwoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbiwgc3RydWN0dXJlLT5tX2NhY2hlZFBy
b3RvdHlwZUNoYWluLmdldCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBj
bGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7
CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CkBAIC0xOTYsNiArMTk3LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2lu
Zm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5
cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERh
dGEmKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVyZSop
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFp
bi5oCShyZXZpc2lvbiAxMDY1OTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IFN0cnVjdHVyZTsKIAogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluIDogcHVibGljIEpTQ2VsbCB7
CkBAIC03NCw2ICs3NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2
YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAg
ICAKICAgICAgICAgU3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAg
ICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIE93bkFycmF5UHRy
PFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0lubGluZUFTTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvSW5saW5lQVNNLmgJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvSW5saW5lQVNNLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDQgKzcwLDExIEBA
CiAjZGVmaW5lIEhJREVfU1lNQk9MKG5hbWUpCiAjZW5kaWYKIAorLy8gRklYTUU6IGZpZ3VyZSBv
dXQgaG93IHRoaXMgd29ya3Mgb24gYWxsIHRoZSBwbGF0Zm9ybXMuIEkga25vdyB0aGF0CisvLyBv
biBMaW51eCwgdGhlIHByZWZlcnJlZCBmb3JtIGlzICIuTHN0dWZmIiBhcyBvcHBvc2VkIHRvICJM
c3R1ZmYiLgorLy8gRG9uJ3Qga25vdyBhYm91dCBhbnkgb2YgdGhlIG90aGVycy4KKyNpZiBQTEFU
Rk9STShNQUMpCisjZGVmaW5lIExPQ0FMX0xBQkVMX1NUUklORyhuYW1lKSAiTCIgI25hbWUKKyNl
bmRpZgorCiAjZW5kaWYgLy8gSW5saW5lQVNNX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmgJKHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTIzLDYgKzkyMywxOCBAQAogI2RlZmlu
ZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCisvKiBPbiBzb21lIG9mIHRoZSBwbGF0Zm9ybXMgd2hl
cmUgd2UgaGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNvIGhhdmUgdGhlIAorICAgbG93LWxldmVs
IGludGVycHJldGVyLiAqLworI2lmICFkZWZpbmVkKEVOQUJMRV9MTElOVCkgJiYgRU5BQkxFKEpJ
VCkgJiYgT1MoREFSV0lOKSAmJiAoQ1BVKFg4NikgfHwgQ1BVKEFSTV9USFVNQjIpKSAmJiBVU0Uo
SlNWQUxVRTMyXzY0KQorI2RlZmluZSBFTkFCTEVfTExJTlQgMQorI2VuZGlmCisKKy8qIElmIHdl
IGhhdmUgTExJbnQgZW5hYmxlZCBhbmQgdGhlIEpJVCBlbmFibGVkLCB3ZSBhbHNvIGVuYWJsZSBP
U1JpbmcgZnJvbQorICAgTExJbnQgdG8gdGhlIEpJVC4gKi8KKyNpZiAhZGVmaW5lZChFTkFCTEVf
TExJTlRfT1NSX1RPX0pJVCkgJiYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKExMSU5UKQorI2RlZmlu
ZSBFTkFCTEVfTExJTlRfT1NSX1RPX0pJVCAxCisjZW5kaWYKKwogI2lmICFkZWZpbmVkKEVOQUJM
RV9ERkdfSklUKSAmJiBFTkFCTEUoSklUKQogLyogRW5hYmxlIHRoZSBERkcgSklUIG9uIFg4NiBh
bmQgWDg2XzY0LiAgT25seSB0ZXN0ZWQgb24gTWFjIGFuZCBHTlUvTGludXguICovCiAjaWYgKENQ
VShYODYpIHx8IENQVShYODZfNjQpKSAmJiAoUExBVEZPUk0oTUFDKSB8fCBPUyhMSU5VWCkpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgJ
KHJldmlzaW9uIDEwNjU5MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxM
aW5rZWRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDggQEAgcHVibGljOgogCiAg
ICAgaXRlcmF0b3IgYmVnaW4oKTsKICAgICBpdGVyYXRvciBlbmQoKTsKKyAgICAKKyAgICBib29s
IGlzRW1wdHkoKSB7IHJldHVybiBiZWdpbigpID09IGVuZCgpOyB9CiAKIHByaXZhdGU6CiAgICAg
UmF3Tm9kZSBtX2hlYWRTZW50aW5lbDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
dGV4dC9TdHJpbmdJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaAkocmV2aXNpb24gMTA2NTkwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMs
NyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBfX0NGU3RyaW5nICogQ0ZTdHJpCiAvLyBMYW5kaW5n
IHRoZSBmaWxlIG1vdmVzIGluIG9uZSBwYXRjaCwgd2lsbCBmb2xsb3cgb24gd2l0aCBwYXRjaGVz
IHRvIGNoYW5nZSB0aGUgbmFtZXNwYWNlcy4KIG5hbWVzcGFjZSBKU0Mgewogc3RydWN0IElkZW50
aWZpZXJDU3RyaW5nVHJhbnNsYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIHRl
bXBsYXRlIDx0eXBlbmFtZSBUPiBzdHJ1Y3QgSWRlbnRpZmllckNoYXJCdWZmZXJUcmFuc2xhdG9y
Owogc3RydWN0IElkZW50aWZpZXJMQ2hhckZyb21VQ2hhclRyYW5zbGF0b3I7CiB9CkBAIC03Miw3
ICs3Myw4IEBAIGNsYXNzIFN0cmluZ0ltcGwgewogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpTdWJz
dHJpbmdUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBzdHJ1Y3QgV1RGOjpVQ2hhckJ1ZmZlclRyYW5z
bGF0b3I7CiAgICAgZnJpZW5kIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7Ci0KKyAgICBmcmllbmQg
Y2xhc3MgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiBwcml2YXRlOgogICAgIGVu
dW0gQnVmZmVyT3duZXJzaGlwIHsKICAgICAgICAgQnVmZmVySW50ZXJuYWwsCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMDY1OTApCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMS0yNiAgRmlsaXAgUGl6bG8gIDxmcGl6
bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGlu
Y2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3JpcHRDb3JlLgorICAgICAgICAKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGJlY2F1c2Ugbm8gYmVoYXZpb3IgY2hhbmdlZC4KKworICAgICAgICAq
IENNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAyLTAyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNj
YUBhcHBsZS5jb20+CiAKICAgICAgICAgVGhlIG92ZXJoYW5nIGFyZWEgbGF5ZXIgc2hvdWxkIGhh
dmUgYSBsaW5lbiBiYWNrZ3JvdW5kCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24g
MTA2NTkwKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTc0LDYgKzc0LDcgQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElS
fS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIKKyAgICAiJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcGFy
c2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9ydW50aW1lIgpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjU5MCkKKysr
IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTItMDEtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBK
U0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3
OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
aGFuZ2VkIEVGTCdzIGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9yeSBpbiBK
YXZhU2NyaXB0Q29yZS4KKyAgICAgICAgCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIw
MTItMDEtMTEgIEphY2t5IEppYW5nICA8emhhamlhbmdAcmltLmNvbT4KIAogICAgICAgICBbQmxh
Y2tCZXJyeV0gQVNTRVJUIGZhaWx1cmUgaW4gQmFja2luZ1N0b3JlUHJpdmF0ZTo6YmxpdFZpc2li
bGVDb250ZW50cygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNjU5MCkKKysr
IFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0
LDcgQEAgU0VUKFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVy
IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L3J1bnRpbWUiCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMDY1OTApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBw
bGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIENoYW5nZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUg
YSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3JpcHRDb3JlLgorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvZWZsL0NNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAyLTAyICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTA2NTQzLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4
dAkocmV2aXNpb24gMTA2NTkwKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlz
dHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02OCwxMCArNjgsMTIgQEAgU0VUKER1bXBSZW5kZXJU
cmVlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0KICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vQVBJCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2Fzc2Vt
YmxlcgorICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZQogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9kZmcKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaGVhcAogICAgICR7SkFW
QVNDUklQVENPUkVfRElSfS9pbnRlcnByZXRlcgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9q
aXQKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQKICAgICAke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vcnVudGltZQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9Gb3J3YXJkaW5nSGVhZGVy
cwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS93dGYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125715</attachid>
            <date>2012-02-06 15:17:08 -0800</date>
            <delta_ts>2012-02-06 17:18:58 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_91.diff</filename>
            <type>text/plain</type>
            <size>487174</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2ODM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3MiBA
QAorMjAxMi0wMi0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcmk6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmVDb21tb24udnNwcm9wczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAg
ICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJl
c3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDogQWRkZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToKKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAgIChDYWxsTGlu
a1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2sp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6dW5saW5rQ2FsbHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0luY29t
aW5nQ2FsbHMpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToK
KyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJs
b2NrOjpqaXRDb21waWxlSW1wbCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENv
bXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdP
cHBvcnR1bml0eSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiYXNl
bGluZVZlcnNpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpbmtJbmNvbWluZ0NhbGwp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNP
cHRpbWl6ZWRSZXBsYWNlbWVudCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkUHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRMTEludENh
bGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVzb2x2ZUlu
Zm8pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZv
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VTbG93
Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y291bGRUYWtlU2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZVNwZWNpYWxGYXN0Q2FzZSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VBbnlTbG93Q2FzZSk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YWRkRnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZG9udEpJVEFueXRpbWVTb29uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRB
ZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0U29vbik6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGxpbnRFeGVjdXRlQ291bnRlcik6CisgICAgICAgIChQcm9ncmFt
Q29kZUJsb2NrKToKKyAgICAgICAgKEV2YWxDb2RlQmxvY2spOgorICAgICAgICAoRnVuY3Rpb25D
b2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAg
ICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6R2V0
QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6Ondhc1NlZW5JbkpJVCk6
CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlv
bi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246Okluc3RydWN0
aW9uKToKKyAgICAgICAgKEluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludENh
bGxMaW5rSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkxMSW50
Q2FsbExpbmtJbmZvOjpMTEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChMTEludENhbGxMaW5r
SW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjp+TExJbnRDYWxsTGlua0lu
Zm8pOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6aXNMaW5rZWQpOgorICAgICAg
ICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6dW5saW5rKToKKyAgICAgICAgKiBieXRlY29kZS9N
ZXRob2RDYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZENhbGxMaW5rU3Rh
dHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRl
RnJvbUxMSW50KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaDoKKyAgICAg
ICAgKFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENh
dGNoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9E
RkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToK
KyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6Y29sbGVjdCk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAo
SlNDOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVy
L0NhbGxGcmFtZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0
YXRlOjpjdXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53
aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRl
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChJbnRlcnByZXRlcik6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGUpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6ZW5hYmxlZCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxl
Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoUmVnaXN0ZXJGaWxlKToKKyAgICAgICAgKiBq
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpOgorICAgICAgICAq
IGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6aW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJuVmFsdWUpOgorICAgICAgICAqIGppdC9K
SVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAg
KEpTQzo6SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpJVENvZGUpOgorICAg
ICAgICAoSlNDOjpKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENv
ZGU6OkpJVENvZGUpOgorICAgICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6
aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rp
b25JZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6OmppdFRocm93KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAg
ICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgIChKU0MpOgorICAgICAgICAq
IGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAg
KiBsbGludC9MTEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6
OkRhdGEpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxs
aW50L0xMSW50RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6
CisgICAgICAgIChEYXRhKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbklu
c3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAg
ICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAg
IChKU0M6OkxMSW50OjpnZXRFdmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50Ojpn
ZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVy
cHJldGVyVGhyb3dJbkNhbGxlcik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93
Rm9yVGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cp
OgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xM
SW50RXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6
CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChMTElu
dCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxM
SU5UX0hFTFBFUl9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9s
b2d1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoSlNDOjpM
TEludDo6ZW50cnlPU1IpOgorICAgICAgICAoSlNDOjpMTEludDo6cmVzb2x2ZUdsb2JhbCk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpnZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpoYW5k
bGVIb3N0Q2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAo
SlNDOjpMTEludDo6Z2VuZXJpY0NhbGwpOgorICAgICAgICAqIGxsaW50L0xMSW50SGVscGVycy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExM
SW50T2Zmc2V0c0V4dHJhY3Rvcik6CisgICAgICAgIChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rv
cjo6ZHVtbXkpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3Mu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2Fs
bEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JD
b25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0
aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50
OjpmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkxMSW50OjpldmFsRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxM
SW50Ojpwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgICogbGxpbnQvTExJbnRU
aHVua3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoTExJbnQpOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRlZC4KKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtOiBBZGRlZC4KKyAg
ICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L2FzbS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc3QucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVh
c20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGlu
ZWFzbS9pbnN0cnVjdGlvbnMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb2Zmc2V0
X2V4dHJhY3Rvcl9jb25zdGFudHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb2Zm
c2V0cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9vcHQucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9zZWxmX2hhc2gucmI6
IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2V0dGluZ3MucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L3g4Ni5yYjogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5k
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgor
ICAgICAgICAoQ29tbW9uU2xvd1BhdGhzKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUu
Y3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2
YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6
OnNhbXBsaW5nRGVzY3JpcHRpb24pOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y29t
cGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBp
bGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1Y3Qp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1
Y3RJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoRXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAoUHJvZ3JhbUV4ZWN1dGFi
bGUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGlv
bkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwcmVwYXJl
Rm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Fj
dGl2YXRpb246OnRlYXJPZmYpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKEpTQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDZWxsKToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0
YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNPYmplY3QpOgorICAgICAgICAoSlNGaW5hbE9iamVjdCk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlw
ZUluZm8uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChUeXBlSW5mbyk6CisgICAgICAgICog
cnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6ZGVzY3JpcHRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTVmFyaWFibGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5j
cHA6CisgICAgICAgIChPcHRpb25zKToKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6
ZU9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAoT3B0aW9u
cyk6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoU2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoU3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAqIHd0Zi9JbmxpbmVBU00uaDoK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvU2VudGluZWxMaW5rZWRM
aXN0Lmg6CisgICAgICAgIChTZW50aW5lbExpbmtlZExpc3QpOgorICAgICAgICAoV1RGOjpTZW50
aW5lbExpbmtlZExpc3Q6OmlzRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwu
aDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChTdHJpbmdJbXBsKToKKwogMjAxMi0wMi0wNiAg
UGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmll
d2VkIFdpbkNFIGJ1aWxkIGZpeCBhZnRlciByMTA2MTk3LgpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA2ODM0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw2ICsxMSw3IEBAIFNFVChK
YXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyIgog
ICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAgICAgIiR7SkFW
QVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1
bnRpbWUiCkBAIC05Niw2ICs5Nyw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAg
aW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcAogCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0
b3IuY3BwCisgICAgaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCiAgICAgaml0L0pJVEFyaXRo
bWV0aWMzMl82NC5jcHAKICAgICBqaXQvSklUQXJpdGhtZXRpYy5jcHAKICAgICBqaXQvSklUQ2Fs
bDMyXzY0LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNp
b24gMTA2ODM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBAIGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzICs9IFwK
IAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIgXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludCBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlciBcCiAJLUkk
KHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyIFwKIAktSSQoc3JjZGlyKS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTA2ODM0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgx
LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvU0g0QXNzZW1ibGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIv
WDg2QXNzZW1ibGVyLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUNvbnZlbnRpb25zLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a0luZm8uY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJbmZv
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAg
XApAQCAtMTAyLDYgKzEwMyw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0p1bXBUYWJsZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TExJbnRDYWxsTGlua0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xp
bmVJbmZvLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlu
a0luZm8uY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExp
bmtJbmZvLmggXApAQCAtMjgxLDYgKzI4Myw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0g
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ29tcGFjdEpJVENvZGVNYXAuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmggXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgXAorCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQXJpdGhtZXRpYy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ2Fs
bDMyXzY0LmNwcCBcCkBAIC0zMDQsNiArMzA4LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50RGF0YS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvb3Mtd2lu
MzIvc3RkYm9vbC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvb3Mtd2luMzIvc3RkaW50Lmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIFwKQEAgLTM1NCw2
ICszNTksNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9DYWxsRGF0YS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NhbGxEYXRhLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5m
by5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25L
aW5kLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJz
LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmggXApA
QCAtMzgyLDYgKzM4OCw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaCBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhlY3V0aW9uSGFybmVzcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5j
dGlvblByb3RvdHlwZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUucHJpCShyZXZpc2lvbiAxMDY4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2ICsyMCw3IEBAIElOQ0xVREVQ
QVRIICs9IFwKICAgICAkJFNPVVJDRV9ESVIvZGVidWdnZXIgXAogICAgICQkU09VUkNFX0RJUi9p
bnRlcnByZXRlciBcCiAgICAgJCRTT1VSQ0VfRElSL2ppdCBcCisgICAgJCRTT1VSQ0VfRElSL2xs
aW50IFwKICAgICAkJFNPVVJDRV9ESVIvcGFyc2VyIFwKICAgICAkJFNPVVJDRV9ESVIvcHJvZmls
ZXIgXAogICAgICQkU09VUkNFX0RJUi9ydW50aW1lIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpCShyZXZpc2lvbiAxMDY4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0
LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTA3LDYgKzEwNyw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5jcHAgXAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2Nh
dG9yRml4ZWRWTVBvb2wuY3BwIFwKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAgXAor
ICAgIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCiAgICAgaml0L0pJVEFyaXRobWV0aWMu
Y3BwIFwKICAgICBqaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAgICAgaml0L0pJVENhbGwu
Y3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxMDY4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
LnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTc1OCw2ICsxNzU4LDEwIEBACiAJCQkJPgogCQkJ
PC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGppdFxIb3N0Q2FsbFJl
dHVyblZhbHVlLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5cLi5caml0XEpJVC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtMTg0Myw2ICsx
ODQ3LDE0IEBACiAJCQk8L0ZpbGU+CiAJCTwvRmlsdGVyPgogCQk8RmlsdGVyCisJCQlOYW1lPSJs
bGludCIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxsbGludFxMTElu
dERhdGEuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCiAJCQlO
YW1lPSJpbnRlcnByZXRlciIKIAkJCT4KIAkJCTxGaWxlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Q29tbW9uLnZzcHJvcHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52c3By
b3BzCShyZXZpc2lvbiAxMDY4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMJ
KHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBACiAJPgogCTxUb29sCiAJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoQ29u
ZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNvdXJjZXNcJnF1
b3Q7Oy4uLy4uLzsuLi8uLi9BUEkvOy4uLy4uL3BhcnNlci87Li4vLi4vYnl0ZWNvbXBpbGVyLzsu
Li8uLi9kZmcvOy4uLy4uL2ppdC87Li4vLi4vcnVudGltZS87Li4vLi4vdG9vbHMvOy4uLy4uL2J5
dGVjb2RlLzsuLi8uLi9pbnRlcnByZXRlci87Li4vLi4vd3RmLzsuLi8uLi9wcm9maWxlcjsuLi8u
Li9hc3NlbWJsZXIvOy4uLy4uL2RlYnVnZ2VyLzsuLi8uLi9oZWFwLzsmcXVvdDskKFdlYktpdExp
YnJhcmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5j
bHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRl
JnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRD
b3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGUm
cXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDsi
CisJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoQ29uZmlndXJhdGlvbkJ1
aWxkRGlyKVxvYmpcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNvdXJjZXNcJnF1b3Q7Oy4uLy4uLzsu
Li8uLi9BUEkvOy4uLy4uL3BhcnNlci87Li4vLi4vYnl0ZWNvbXBpbGVyLzsuLi8uLi9kZmcvOy4u
Ly4uL2ppdC87Li4vLi4vbGxpbnQvOy4uLy4uL3J1bnRpbWUvOy4uLy4uL3Rvb2xzLzsuLi8uLi9i
eXRlY29kZS87Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJvZmlsZXI7Li4v
Li4vYXNzZW1ibGVyLzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7JChXZWJLaXRM
aWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGlu
Y2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVk
ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2NyaXB0
Q29yZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2YXRl
JnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1b3Q7
IgogCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX19TVERfQyIKIAkJRm9yY2VkSW5jbHVkZUZp
bGVzPSJJQ1VWZXJzaW9uLmgiCiAJLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZh
U2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9jb3B5LWZpbGVzLmNtZAkocmV2aXNpb24gMTA2ODM0KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZpbGVz
LmNtZAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBmb3IgJSVkIGluICgKICAgICBk
ZWJ1Z2dlcgogICAgIGludGVycHJldGVyCiAgICAgaml0CisgICAgbGxpbnQKICAgICBwYXJzZXIK
ICAgICBwcm9maWxlcgogICAgIHJ1bnRpbWUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAxMDY4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNyw2ICs3
LDE1IEBACiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQWdncmVnYXRlVGFyZ2V0IHNlY3Rp
b24gKi8KKwkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8gPSB7
CisJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0
ID0gMEY0NjgwQUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBm
b3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJMTEludCBPZmZzZXRzIiAqLzsKKwkJCWJ1aWxkUGhhc2Vz
ID0gKAorCQkJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNv
dXJjZXMgKi8sCisJCQkpOworCQkJbmFtZSA9ICJMTEludCBPZmZzZXRzIjsKKwkJCXByb2R1Y3RO
YW1lID0gIkRlcml2ZWQgU291cmNlcyI7CisJCX07CiAJCTY1RkIzRjY2MDlEMTFFOTEwMEY0OURF
QiAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7
CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNjVGQjNGNzcwOUQxMUVCRDAwRjQ5REVCIC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJEZXJpdmVk
IFNvdXJjZXMiICovOwpAQCAtMTQsNiArMjMsOSBAQAogCQkJCTY1RkIzRjY1MDlEMTFFOTEwMEY0
OURFQiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJNUQzNURFRTEwQzdDMTQw
QjAwODY0OEIyIC8qIEdlbmVyYXRlIERUcmFjZSBoZWFkZXIgKi8sCiAJCQkpOworCQkJZGVwZW5k
ZW5jaWVzID0gKAorCQkJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBl
bmRlbmN5ICovLAorCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJCXByb2R1
Y3ROYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCX07CkBAIC00OCw2ICs2MCwxMCBAQAogCQkw
QkFDOTRBMDEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJBQzk0OUUxMzM4
NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkNEODM1NzE0ODU4NDUyMDBF
QTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hh
bmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEJGMjhBMjkxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0
IC8qIFNpemVMaW1pdHMuY3BwICovOyB9OworCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyog
TExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5j
cHAgKi87IH07CisJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODM5
NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0
RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICov
OyB9OworCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk4MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQTUx
NEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRs
ZXJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVC
NEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25S
YW5nZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtNTgsOSArNzQsMTMgQEAKIAkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhv
ZENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0I3
MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8q
IEdsb2JhbFJlc29sdmVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZz
ZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEZDNDU4
MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3
RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE2
RDcyNjE0MkMzOUMwMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAvKiBC
aXRWZWN0b3IuY3BwICovOyB9OwogCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJp
dmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIx
QzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8q
IEV4ZWN1dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMy
N0QxNEJFNzI3QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjc5MTRCRTcyNzMwMEFE
QzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8qIEJ5
dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25z
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYy
NDJEQTcxM0YzQjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjQyREE1MTNGM0IxQkIw
MDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NkYxNDczOEYzMTAwMTIxRTRGIC8q
IERGR0NvZGVCbG9ja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NzAxNDcz
OEYzNTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0Nv
ZGVCbG9ja3MuY3BwICovOyB9OwpAQCAtNzEsNiArOTEsMTkgQEAKIAkJMEY0MzE3MzgxNDZCQUM2
OTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxl
SGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA4MDE0QkE1NzI3MDBC
RkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRp
b25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0
NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50RXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Njgw
OUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi87IHNldHRpbmdzID0ge0NP
TVBJTEVSX0ZMQUdTID0gIi1Xbm8tdW51c2VkLXBhcmFtZXRlciI7IH07IH07CisJCTBGNDY4MEE1
MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dEhlbHBlcnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEEx
MTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovOyB9OworCQkw
RjQ2ODBBODE0QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDlEMTRCQTdGODIwMEJG
RTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBDQTE0QkJCMTZDMDBC
RkUyNzIgLyogTExJbnRDb21tb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENC
MTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3
MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5j
cHAgKi87IH07CisJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJl
dGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2
ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQyMTRCQkQxNjUw
MEJGRTI3MiAvKiBMTEludERhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAg
Ki87IH07CisJCTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENGMTRCQkIzRDEw
MEJGRTI3MiAvKiBMTEludERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1
cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi87
IH07CisJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBEMTE0
QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNTVGMEY0MTREMTA2MzkwMEFDNzY0
OSAvKiBBYnN0cmFjdFBDLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLzsg
fTsKIAkJMEY1NUYwRjUxNEQxMDYzQzAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTVGMEYyMTREMTA2MzYwMEFD
NzY0OSAvKiBBYnN0cmFjdFBDLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxG
aW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM4OSw3ICs0
MjIsNyBAQAogCQk4NkI5OUFFMzExN0U1NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkI5OUFFMTExN0U1
NzgxMDBERjVBOTAgLyogU3RyaW5nQnVmZmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZCQjA5QzAxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1Jl
cGF0Y2guY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODZCQjA5QkUxMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guY3BwICovOyB9OwogCQk4NkJC
MDlDMTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZCQjA5QkYxMzhFMzgxQjAwNTY3MDJGIC8qIERG
R1JlcGF0Y2guaCAqLzsgfTsKLQkJODZDMzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNz
ZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgfTsKKwkJODZD
MzZFRUEwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkMzNkVFOTBFRTEyODlEMDBCM0RGNTkg
LyogTWFjcm9Bc3NlbWJsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk4NkM1NjhFMDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJB
Uk0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZD
NTY4REQxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCAqLzsgfTsKIAkJ
ODZDNTY4RTExMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REUxMUEyMTNFRTAw
MDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyTUlQUy5oICovOyB9OwogCQk4NkM1NjhFMjExQTIxM0VF
MDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODZDNTY4REYxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJs
ZXIuaCAqLzsgfTsKQEAgLTc1OCw2ICs3OTEsMjAgQEAKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLworCQkw
RjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewor
CQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2
N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBl
ID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcy
OworCQkJcmVtb3RlSW5mbyA9ICJMTEludCBPZmZzZXRzIjsKKwkJfTsKKwkJMEY0NjgwQjMxNEJB
ODIxNDAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBC
WENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAy
OEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQly
ZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MjsKKwkJCXJlbW90
ZUluZm8gPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCX07CiAJCTE0MTIxNEJFMEE0OTE5
MEUwMDQ4MDI1NSAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhD
b250YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhG
QzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC04MDMsNiArODUwLDE1IEBACiAvKiBF
bmQgUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29weUZp
bGVzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBD
b3B5RmlsZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOworCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWRzdFBhdGggPSAvdXNyL3NoYXJlL21hbi9t
YW4xLzsKKwkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCX07CiAJCTVEQkIxNTEx
MTMxRDBCMTMwMDU2QUQzNiAvKiBDb3B5IFN1cHBvcnQgU2NyaXB0ICovID0gewogCQkJaXNhID0g
UEJYQ29weUZpbGVzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDEyOwpAQCAtODQz
LDYgKzg5OSwxMCBAQAogCQkwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJp
Y3Rpb25WZXJpZmllci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHJlYWRS
ZXN0cmljdGlvblZlcmlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBCQ0Q4
MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGVtcG9yYXJ5Q2hhbmdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBCRjI4QTI4MTFBMzNEQzMwMDYzOEY4NCAvKiBTaXplTGltaXRzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNpemVMaW1pdHMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRF
bnRyeXBvaW50cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTElu
dEVudHJ5cG9pbnRzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJ
bnRFbnRyeXBvaW50cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEVu
dHJ5cG9pbnRzLmg7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5r
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludFRodW5rcy5j
cHA7IHBhdGggPSBsbGludC9MTEludFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludFRodW5rcy5oOyBwYXRoID0gbGxpbnQvTExJ
bnRUaHVua3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTUxNEJDRjUw
NDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvZGVUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0E4MTRCQ0Y1
NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBIYW5kbGVySW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNB
QTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBFeHByZXNzaW9uUmFuZ2VJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC04NTMsOSArOTEzLDEzIEBACiAJCTBGMEI4M0IzMTRCQ0Y4NUUwMDg4
NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWV0aG9kQ2FsbExpbmtJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTBGMEI4M0I2MTRCQ0Y4REYwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHbG9iYWxSZXNvbHZlSW5mby5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVy
bk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IExMSW50Q2FsbExpbmtJbmZvLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAv
KiBDb21tb25TbG93UGF0aHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29t
bW9uU2xvd1BhdGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMTZENzI0MTQy
QzM5QTIwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQml0VmVjdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYyMUMyNjYxNEJFNUY1RTAwQURDNjRCIC8qIEpJVERyaXZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKSVREcml2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVNwZWNpYWxpemF0aW9uS2luZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIg
LyogRXhlY3V0aW9uSGFybmVzcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
eGVjdXRpb25IYXJuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdF
MTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVjb2RlQ29udmVudGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VI
YXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5j
ZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RDE0NzM4
RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBERkdDb2RlQmxvY2tzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtODY2LDYgKzkzMCwyMCBAQAogCQkwRjQzMTczNjE0NkJBQzY1MDA3
RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IExpc3RhYmxlSGFuZGxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2
ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKSVRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURXhjZXB0aW9ucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlND
TExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGV4cGxp
Y2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFibGUiOyBpbmNsdWRlSW5JbmRl
eCA9IDA7IHBhdGggPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7IHNvdXJjZVRyZWUgPSBCVUlM
VF9QUk9EVUNUU19ESVI7IH07CisJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4
Y2VwdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRF
eGNlcHRpb25zLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4
Y2VwdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFeGNlcHRp
b25zLmg7IHBhdGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEhlbHBlcnMuY3BwOyBw
YXRoID0gbGxpbnQvTExJbnRIZWxwZXJzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEhlbHBlcnMuaDsgcGF0aCA9IGxsaW50L0xMSW50
SGVscGVycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMTE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHBhdGggPSBsbGlu
dC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRDb21tb24uaDsgcGF0aCA9IGxsaW50L0xMSW50Q29t
bW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM2MTRCQkIxNjkwMEJG
RTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHBhdGggPSBsbGludC9MTEludE9mZmxp
bmVBc21Db25maWcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzcxNEJC
QjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHBhdGggPSBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTG93TGV2ZWxJbnRlcnByZXRlci5oOyBwYXRoID0g
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RGF0YS5jcHA7IHBhdGggPSBsbGludC9MTElu
dERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDRjE0QkJCM0Qx
MDBCRkUyNzIgLyogTExJbnREYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IExMSW50RGF0YS5oOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZh
bHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhvc3RDYWxsUmV0
dXJuVmFsdWUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMTE0QkJD
NUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGNTVGMEYxMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFic3RyYWN0UEMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJh
Y3RQQy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBYnN0cmFjdFBDLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUYwOENDMTQ2QkU2MDIwMDA0NzJBOSAvKiBE
RkdCeXRlQ29kZUNhY2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0J5
dGVDb2RlQ2FjaGUuaDsgcGF0aCA9IGRmZy9ERkdCeXRlQ29kZUNhY2hlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0xNTkyLDYgKzE2NzAsMTMgQEAKIC8qIEVuZCBQQlhGaWxlUmVm
ZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2Vj
dGlvbiAqLworCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLyA9IHsK
KwkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRTBBNDg3OTNDMDA0ODAyNTUgLyog
RnJhbWV3b3JrcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlOwogCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTE2NTAsNiArMTczNSw3IEBACiAJCQkJ
MTQxMjExMjAwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi8sCiAJCQkJMTRCRDU5QkYwQTNF
OEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJNjUxMTIzMDUxNDA0NkE0QzAwMkIxMDFE
IC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xM
SW50T2Zmc2V0c0V4dHJhY3RvciAqLywKIAkJCSk7CiAJCQluYW1lID0gUHJvZHVjdHM7CiAJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTY3Nyw2ICsxNzYzLDcgQEAKIAkJCQlGNUMyOTBF
NjAyODRGOThFMDE4NjM1Q0EgLyogSmF2YVNjcmlwdENvcmVQcmVmaXguaCAqLywKIAkJCQk0NUUx
MkQ4ODA2QTQ5QjBGMDBFOURGODQgLyoganNjLmNwcCAqLywKIAkJCQlGNjhFQkI4QzAyNTVENEM2
MDFGRjYwRjcgLyogY29uZmlnLmggKi8sCisJCQkJMEY0NjgwOUMxNEJBN0Y0RDAwQkZFMjcyIC8q
IGxsaW50ICovLAogCQkJCTE0MzJFQkQ3MEEzNENBRDQwMDcxN0I5RiAvKiBBUEkgKi8sCiAJCQkJ
OTY4OENCMTIwRUQxMkI0RTAwMUQ2NDlGIC8qIGFzc2VtYmxlciAqLywKIAkJCQk5NjlBMDc4RjBF
RDFEM0FFMDBGMUY2ODEgLyogYnl0ZWNvZGUgKi8sCkBAIC0xNzE2LDYgKzE4MDMsMjggQEAKIAkJ
CXRhYldpZHRoID0gNDsKIAkJCXVzZXNUYWJzID0gMDsKIAkJfTsKKwkJMEY0NjgwOUMxNEJBN0Y0
RDAwQkZFMjcyIC8qIGxsaW50ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJl
biA9ICgKKwkJCQkwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5j
cHAgKi8sCisJCQkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMu
aCAqLywKKwkJCQkwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICov
LAorCQkJCTBGMEI4Mzk4MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovLAorCQkJ
CTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovLAorCQkJCTBGNDY4
MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLywKKwkJCQkwRjQ2ODBDNTE0QkJC
MTY5MDBCRkUyNzIgLyogTExJbnRDb21tb24uaCAqLywKKwkJCQkwRjQ2ODBDNjE0QkJCMTY5MDBC
RkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi8sCisJCQkJMEY0NjgwQzcxNEJCQjE2
OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovLAorCQkJCTBGNDY4MEM4MTRC
QkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi8sCisJCQkJMEY0NjgwOUQx
NEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8sCisJCQkJMEY0NjgwOUUx
NEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovLAorCQkJCTBGNDY4MDlGMTRC
QTdGODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwICovLAorCQkJCTBGNDY4MEEwMTRCQTdG
ODIwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCAqLywKKwkJCQkwRjQ2ODBBMTE0QkE3RjgyMDBC
RkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0g
bGxpbnQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQkxNDEyMTEwMDBBNDg3
NzI2MDA0ODAyNTUgLyogdGVzdHMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKApAQCAtMTc1MCw2ICsxODU5LDggQEAKIAkJMTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5
IC8qIGppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
MEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovLAor
CQkJCTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8s
CiAJCQkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovLAog
CQkJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8sCiAJCQkJ
MEZEODJFMzcxNDFBQjE0MjAwMTc5Qzk0IC8qIENvbXBhY3RKSVRDb2RlTWFwLmggKi8sCkBAIC0y
MTc5LDYgKzIyOTAsOCBAQAogCQk3RUY2RTBCQjBFQjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYyMUMyNzkx
NEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLywKKwkJCQkwRjIx
QzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oICovLAogCQkJCTBGMTVG
MTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCAqLywKIAkJCQlCQ0Y2MDUx
MTBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5jcHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VG
ODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAqLywKQEAgLTI1NTMsNiArMjY2Niw4IEBACiAJCTk2OUEw
NzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVj
b2RlQ29udmVudGlvbnMuaCAqLywKKwkJCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJ
bnRDYWxsTGlua0luZm8uaCAqLywKIAkJCQkwRjkzMzI5MzE0Q0E3REMxMDA4NUYzQzYgLyogQ2Fs
bExpbmtTdGF0dXMuY3BwICovLAogCQkJCTBGOTMzMjk0MTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxs
TGlua1N0YXR1cy5oICovLAogCQkJCTBGOTMzMjk1MTRDQTdEQzEwMDg1RjNDNiAvKiBHZXRCeUlk
U3RhdHVzLmNwcCAqLywKQEAgLTMxMDQsNyArMzIxOSwxNiBAQAogCQkJCTg2NzA0QjhBMTJEQkEz
MzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODY3MDRCNDMx
MkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjE1RjE1RjE0QjdBNzNFMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmgg
aW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRIZWxw
ZXJzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklU
RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcy
IC8qIExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBC
RkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2
ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFs
dWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTElu
dEVudHJ5cG9pbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVC
NEYgLyogTExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRCQ0Y1MDcw
MDg4NUI0RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTkxNEJDRjU2
MjAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0
QkNGNUJCMDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zMTEzLDcgKzMyMzcsMTEgQEAKIAkJCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0
aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCNzE0QkNGOEUxMDA4
ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I5
MTRCQ0Y5NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExp
bmtJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyog
SklURHJpdmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIg
LyogRXhlY3V0aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0QxNEJFNzI3
QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTBGMjFDMjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjdCMjk0QTE0QzNDRDI5MDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJz
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2Fw
YWJpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QzE0QzNDRDQzMDA3QzNEQjEg
LyogREZHQnl0ZUNvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMTM0LDYgKzMyNjIsMjQg
QEAKIC8qIEVuZCBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBC
WE5hdGl2ZVRhcmdldCBzZWN0aW9uICovCisJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBK
U0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7
CisJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9m
ZnNldHNFeHRyYWN0b3IiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwOEIxNEJB
N0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcy
IC8qIEZyYW1ld29ya3MgKi8sCisJCQkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlG
aWxlcyAqLywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2ll
cyA9ICgKKwkJCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5j
eSAqLywKKwkJCSk7CisJCQluYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJv
ZHVjdE5hbWUgPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0UmVmZXJlbmNl
ID0gMEY0NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAq
LzsKKwkJCXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07
CiAJCTE0MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovID0gewogCQkJaXNhID0g
UEJYTmF0aXZlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MTIxMTM5MEE0
ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRh
cmdldCAibWluaWRvbSIgKi87CkBAIC0zMjYwLDExICszNDA2LDI5IEBACiAJCQkJMTRCRDU5QkUw
QTNFOEY5MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJOTMyRjVCREEwODIyQTFDNzAwNzM2
OTc1IC8qIGpzYyAqLywKIAkJCQk2NTExMjJGNzE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4
cCAqLywKKwkJCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0
cmFjdG9yICovLAorCQkJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRz
ICovLAogCQkJKTsKIAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwQUExNEJBN0ZE
OTAwQkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBC
WFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1Qp
L2xsaW50L0xvd0xldmVsQXNzZW1ibGVyLmFzbSIsCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0
ZSBEZXJpdmVkIFNvdXJjZXMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoQlVJTFRfUFJP
RFVDVFNfRElSKS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oIiwKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9
IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNf
RElSfS9MTEludE9mZnNldHMvXCJcblxuL3Vzci9iaW4vZW52IHJ1YnkgXCIke1NSQ1JPT1R9L29m
ZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYlwiIFwiJHtTUkNST09UfS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmFzbVwiIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50
T2Zmc2V0cy9MTEludERlc2lyZWRPZmZzZXRzLmhcIlxuIjsKKwkJfTsKIAkJMzcxM0YwMTQxNDI5
MDUyNDAwMzYzODdGIC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1DIENsYXNz
IE5hbWVzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVp
bGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTMzNzAsNyArMzUzNCw3IEBACiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlzaGVsbFBhdGgg
PSAvYmluL3NoOwotCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RT
X0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBcIiR7QlVJTFRf
UFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4g
LXNmaCBcIiR7U1JDUk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3Jl
PVwiSmF2YVNjcmlwdENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJc
blxubWFrZSAtLW5vLWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy5tYWtlXCIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNwdWBcbiI7CisJCQlzaGVs
bFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNl
cy9KYXZhU2NyaXB0Q29yZS9kb2NzXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlXCJcblxuL2Jpbi9sbiAtc2ZoIFwiJHtTUkNST09UfVwi
IEphdmFTY3JpcHRDb3JlXG5leHBvcnQgSmF2YVNjcmlwdENvcmU9XCJKYXZhU2NyaXB0Q29yZVwi
XG5leHBvcnQgQlVJTFRfUFJPRFVDVFNfRElSPVwiLi4vLi5cIlxuXG5tYWtlIC0tbm8tYnVpbHRp
bi1ydWxlcyAtZiBcIkphdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2VcIiAtaiBgL3Vz
ci9zYmluL3N5c2N0bCAtbiBody5uY3B1YFxuXG4vdXNyL2Jpbi9lbnYgcnVieSBKYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2FzbS5yYiBKYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbSAke0JVSUxUX1BST0RVQ1RTX0RJUn0vSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9y
IExMSW50QXNzZW1ibHkuaFxuIjsKIAkJfTsKIAkJOTMxOTU4NkIwOUQ5RjkxQTAwQTU2RkQ0IC8q
IENoZWNrIEZvciBHbG9iYWwgSW5pdGlhbGl6ZXJzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxT
Y3JpcHRCdWlsZFBoYXNlOwpAQCAtMzQwNSw2ICszNTY5LDE0IEBACiAvKiBFbmQgUEJYU2hlbGxT
Y3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLyA9
IHsKKwkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAv
KiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFEMEE0
ODc5M0MwMDQ4MDI1NSAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxk
UGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzY2Miw3ICszODM0
LDE0IEBACiAJCQkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3lu
dGF4Q2hlY2tlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUy
NzIgLyogTExJbnRIZWxwZXJzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE4MTRCQTdG
QUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0
NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0
YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9z
dENhbGxSZXR1cm5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QTE0QkNGNDVE
MDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBC
ODM5QzE0QkNGNDYzMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMEYwQjgzQjAxNEJDRjcxNjAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjBCODNCNDE0QkNGODYwMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZv
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY2OUU4NkMzMTRDNkU1NTEwMDJDMkM2MiAvKiBOdW1i
ZXJPZkNvcmVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMzY4OCw2ICszODY3LDE2IEBACiAvKiBF
bmQgUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhUYXJnZXRE
ZXBlbmRlbmN5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRh
cmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJ
dGFyZ2V0ID0gMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi87CisJ
CQl0YXJnZXRQcm94eSA9IDBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJ
dGVtUHJveHkgKi87CisJCX07CisJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJn
ZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRh
cmdldCA9IDBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0
b3IgKi87CisJCQl0YXJnZXRQcm94eSA9IDBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhD
b250YWluZXJJdGVtUHJveHkgKi87CisJCX07CiAJCTE0MTIxNEJGMEE0OTE5MEUwMDQ4MDI1NSAv
KiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5j
eTsKIAkJCXRhcmdldCA9IDE0MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovOwpA
QCAtMzcyMSw2ICszOTEwLDE1MCBAQAogLyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlv
biAqLwogCiAvKiBCZWdpbiBYQ0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTBGNDY4
MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJf
UEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJ
CUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdu
dTk5OworCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19FTkFCTEVfT0JKQ19F
WENFUFRJT05TID0gWUVTOworCQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdD
Q19QUkVQUk9DRVNTT1JfREVGSU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQo
aW5oZXJpdGVkKSIsCisJCQkJKTsKKwkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5P
OworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsK
KwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJO
X0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRV
Uk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJ
IkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJ
CQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJf
U0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAx
MC43OworCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBOTzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChU
QVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VB
UkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChI
RUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkw
RjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVp
bGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNI
X1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCki
OworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9S
TUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBn
bnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVS
U0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5f
NjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5H
X1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7
CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNI
X1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsK
KwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCU9OTFlfQUNUSVZFX0FS
Q0ggPSBOTzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JP
T1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJ
CQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3
MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJ
CWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJ
CQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NU
UklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRz
eW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJM
RV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29t
cGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJT
SU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOwor
CQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNF
RF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgK
KwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zm
c2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09T
WF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IE5POwor
CQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29z
eDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNU
U19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQlu
YW1lID0gUHJvZmlsaW5nOworCQl9OworCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJv
ZHVjdGlvbiAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNI
UyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZ
RVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJ
CQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNf
RVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMu
bGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBO
TzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0ND
X1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklB
QkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQku
LAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwK
KwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExP
WU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSki
OworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0g
Ii4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNI
X1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFE
MTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZl
ZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0Njgw
QUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRl
cml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJ
MEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05B
TUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7
CisJCX07CisJCTBGNDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovID0gewor
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJ
CVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9
IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1NSAvKiBEZWJ1ZyAq
LyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9
IHsKQEAgLTM5NjIsNiArNDI5NSwyOCBAQAogLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNl
Y3Rpb24gKi8KIAogLyogQmVnaW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTBG
NDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBC
WE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLyA9IHsKKwkJCWlzYSA9
IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBG
NDY4MDk2MTRCQTdFNUUwMEJGRTI3MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODA5NzE0QkE3RTVF
MDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyog
UHJvZmlsaW5nICovLAorCQkJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9u
ICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRl
ZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFDMTRC
QTdGRDkwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0
ZVRhcmdldCAiTExJbnQgT2Zmc2V0cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25M
aXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODBBRDE0QkE3RkQ5MDBC
RkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVh
c2UgKi8sCisJCQkJMEY0NjgwQUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywKKwkJ
CQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyog
QnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICov
ID0gewogCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlv
bnMgPSAoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZm
ZXIuaAkocmV2aXNpb24gMTA2ODM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9MaW5rQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNkZWZpbmUg
R0xPQkFMX1RIVU5LX0lEIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0
cl90PigtMSkpCiAjZGVmaW5lIFJFR0VYUF9DT0RFX0lEIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+
KHN0YXRpY19jYXN0PGludHB0cl90PigtMikpCiAKLSNpbmNsdWRlIDxNYWNyb0Fzc2VtYmxlci5o
PgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCShyZXZpc2lvbiAxMDY4
MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzMsNiArMjczLDE0IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQorICAg
IAorICAgIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3JlYXRlRnJvbUV4ZWN1dGFibGVB
ZGRyZXNzKHZvaWQqIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9J
TlRFUih2YWx1ZSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQ7CisgICAg
ICAgIHJlc3VsdC5tX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQogCiAgICAgZXhwbGljaXQgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKFJldHVybkFkZHJlc3NQdHIg
cmEpCiAgICAgICAgIDogbV92YWx1ZShyYS52YWx1ZSgpKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlv
bnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEJ5dGVjb2RlQ29udmVudGlvbnNfaAor
I2RlZmluZSBCeXRlY29kZUNvbnZlbnRpb25zX2gKKworLy8gUmVnaXN0ZXIgbnVtYmVycyB1c2Vk
IGluIGJ5dGVjb2RlIG9wZXJhdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbWVhbmluZyBhY2NvcmRpbmcg
dG8gdGhlaXIgcmFuZ2VzOgorLy8gICAgICAweDgwMDAwMDAwLTB4RkZGRkZGRkYgIE5lZ2F0aXZl
IGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGVudHJpZXMgaW4gdGhlIGNh
bGwgZnJhbWUsIHNlZSBSZWdpc3RlckZpbGUuaC4KKy8vICAgICAgMHgwMDAwMDAwMC0weDNGRkZG
RkZGICBGb3J3YXJkcyBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBsb2Nh
bCB2YXJzIGFuZCB0ZW1wb3JhcmllcyB3aXRoIHRoZSBmdW5jdGlvbidzIGNhbGxmcmFtZS4KKy8v
ICAgICAgMHg0MDAwMDAwMC0weDdGRkZGRkZGICBQb3NpdGl2ZSBpbmRpY2VzIGZyb20gMHg0MDAw
MDAwMCBzcGVjaWZ5IGVudHJpZXMgaW4gdGhlIGNvbnN0YW50IHBvb2wgb24gdGhlIENvZGVCbG9j
ay4KK3N0YXRpYyBjb25zdCBpbnQgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAw
MDAwOworCisjZW5kaWYgLy8gQnl0ZWNvZGVDb252ZW50aW9uc19oCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNp
b24gMTA2ODM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3Rh
dHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMTcgKzI3LDQwIEBACiAjaW5jbHVkZSAiQ2Fs
bExpbmtTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkxMSW50
Q2FsbExpbmtJbmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitDYWxsTGlua1N0YXR1cyBDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2sp
OworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CisgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxM
aW5rSW5mbyA9IGluc3RydWN0aW9uWzRdLnUuY2FsbExpbmtJbmZvOworICAgIAorICAgIHJldHVy
biBDYWxsTGlua1N0YXR1cyhjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLmdldCgpLCBmYWxz
ZSk7CisjZWxzZQorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygwLCBmYWxzZSk7CisjZW5kaWYK
K30KKwogQ2FsbExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2Nr
KiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQogewogICAgIFVOVVNFRF9Q
QVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAj
aWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQotICAgIHJldHVybiBDYWxs
TGlua1N0YXR1cygKLSAgICAgICAgcHJvZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJbmZvKGJ5dGVj
b2RlSW5kZXgpLmxhc3RTZWVuQ2FsbGVlLmdldCgpLAotICAgICAgICBwcm9maWxlZEJsb2NrLT5j
b3VsZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSk7CisgICAgaWYgKCFwcm9maWxlZEJsb2Nr
LT5udW1iZXJPZkNhbGxMaW5rSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJ
bnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgaWYgKHByb2ZpbGVk
QmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQorICAgICAgICByZXR1cm4g
Q2FsbExpbmtTdGF0dXMoMCwgdHJ1ZSk7CisgICAgCisgICAgSlNGdW5jdGlvbiogdGFyZ2V0ID0g
cHJvZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJbmZvKGJ5dGVjb2RlSW5kZXgpLmxhc3RTZWVuQ2Fs
bGVlLmdldCgpOworICAgIGlmICghdGFyZ2V0KQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21M
TEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KTsKKyAgICAKKyAgICByZXR1cm4gQ2Fs
bExpbmtTdGF0dXModGFyZ2V0LCBmYWxzZSk7CiAjZWxzZQogICAgIHJldHVybiBDYWxsTGlua1N0
YXR1cygwLCBmYWxzZSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua1N0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCShyZXZpc2lvbiAxMDY4MzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkod29ya2luZyBjb3B5KQpA
QCAtNDcsMTUgKzQ3LDE3IEBAIHB1YmxpYzoKICAgICAKICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0
dXMgY29tcHV0ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICAgICAK
LSAgICBib29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxUYXJnZXQ7IH0KKyAgICBi
b29sIGlzU2V0KCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxUYXJnZXQgfHwgbV9jb3VsZFRha2VT
bG93UGF0aDsgfQogICAgIAotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1f
Y2FsbFRhcmdldDsgfQorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0
KCk7IH0KICAgICAKICAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4g
bV9jb3VsZFRha2VTbG93UGF0aDsgfQogICAgIAogICAgIEpTRnVuY3Rpb24qIGNhbGxUYXJnZXQo
KSBjb25zdCB7IHJldHVybiBtX2NhbGxUYXJnZXQ7IH0KICAgICAKIHByaXZhdGU6CisgICAgc3Rh
dGljIENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCk7CisgICAgCiAgICAgSlNGdW5jdGlvbiogbV9jYWxsVGFyZ2V0OwogICAg
IGJvb2wgbV9jb3VsZFRha2VTbG93UGF0aDsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTA2ODM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQyLDYgKzQyLDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdGF0
aWNTY29wZU9iamVjdC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMb3dMZXZl
bEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlVT
dHJpbmdDb25jYXRlbmF0ZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0zNTYsMTAgKzM1Nywx
MCBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bjb2RlTGVuZ3Ro
c1tleGVjLT5pbnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtpXS51Lm9w
Y29kZSldKQogICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7CiAKLSAgICBwcmludGYoIiVsdSBt
X2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxl
ZSByZWdpc3RlcihzKVxuXG4iLAorICAgIHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUg
Ynl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpOyAlZCB2
YXJpYWJsZShzKVxuXG4iLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0
cnVjdGlvbkNvdW50KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4oaW5zdHJ1
Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSksCi0gICAgICAgIHRoaXMsIG1f
bnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgICAgICB0aGlzLCBtX251
bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX251bVZhcnMpOwogCiAgICAgVmVj
dG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4gPSBpbnN0cnVjdGlvbnMoKS5i
ZWdpbigpOwogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGlu
c3RydWN0aW9ucygpLmVuZCgpOwpAQCAtODk2LDYgKzg5NywxNCBAQCB2b2lkIENvZGVCbG9jazo6
ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVj
LCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIpOwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Q6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1
dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKKyAgICAg
ICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3Ao
ZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtMTQ1Myw2ICsxNDYyLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soQ29weVBhcnNl
ZEJsb2NrVGFnLAogewogICAgIHNldE51bVBhcmFtZXRlcnMob3RoZXIubnVtUGFyYW1ldGVycygp
KTsKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsKICAg
ICAKICAgICBpZiAob3RoZXIubV9yYXJlRGF0YSkgewogICAgICAgICBjcmVhdGVSYXJlRGF0YUlm
TmVjZXNzYXJ5KCk7CkBAIC0xNTAxLDYgKzE1MTEsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhT
Y3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgQVNTRVJUKG1fc291cmNlKTsKICAgICAKICAgICBvcHRp
bWl6ZUFmdGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsKIAogI2lmIERVTVBfQ09E
RV9CTE9DS19TVEFUSVNUSUNTCiAgICAgbGl2ZUNvZGVCbG9ja1NldC5hZGQodGhpcyk7CkBAIC0x
NTE4LDcgKzE1MjksMTEgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKICNpZiBFTkFCTEUoVkVS
Qk9TRV9WQUxVRV9QUk9GSUxFKQogICAgIGR1bXBWYWx1ZVByb2ZpbGVzKCk7CiAjZW5kaWYKLSAg
ICAKKworI2lmIEVOQUJMRShMTElOVCkgICAgCisgICAgd2hpbGUgKG1faW5jb21pbmdMTEludENh
bGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisgICAgICAgIG1faW5j
b21pbmdMTEludENhbGxzLmJlZ2luKCktPnJlbW92ZSgpOworI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFdlIG1heSBiZSBkZXN0cm95ZWQgYmVmb3JlIGFu
eSBDb2RlQmxvY2tzIHRoYXQgcmVmZXIgdG8gdXMgYXJlIGRlc3Ryb3llZC4KICAgICAvLyBDb25z
aWRlciB0aGF0IHR3byBDb2RlQmxvY2tzIGJlY29tZSB1bnJlYWNoYWJsZSBhdCB0aGUgc2FtZSB0
aW1lLiBUaGVyZQpAQCAtMTczMCw4ICsxNzQ1LDY5IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6
ZVVuY29uZGl0aW9uYWxseSgKICNlbHNlCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVyYm9zZVVu
bGlua2luZyA9IGZhbHNlOwogI2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQog
ICAgIAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0ZXIgPSBt
X2dsb2JhbERhdGEtPmludGVycHJldGVyOworICAgIC8vIGludGVycHJldGVyLT5lbmFibGVkKCkg
cmV0dXJucyB0cnVlIGlmIHRoZSBvbGQgQysrIGludGVycHJldGVyIGlzIGVuYWJsZWQuIElmIHRo
YXQncyBlbmFibGVkCisgICAgLy8gdGhlbiB3ZSdyZSBub3QgdXNpbmcgTExJbnQuCisgICAgaWYg
KCFpbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBt
X3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kp
IHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlv
bnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIHN3aXRj
aCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlKSkg
eworICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgICAgICBjYXNlIG9wX3B1
dF9ieV9pZDoKKyAgICAgICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0
dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgp
KSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcgTExJbnQg
cHJvcGVydHkgYWNjZXNzIHdpdGggc3RydWN0dXJlICVwLlxuIiwgY3VySW5zdHJ1Y3Rpb25bNF0u
dS5zdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUu
c3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNV0udS5v
cGVyYW5kID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgICAgICAgICAgICAgaWYgKEhlYXA6OmlzTWFya2Vk
KGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAgICAgICAg
ICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKSkK
KyAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bN10u
dS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKSB7CisgICAgICAgICAgICAgICAgICAg
IHByaW50ZigiQ2xlYXJpbmcgTExJbnQgcHV0IHRyYW5zaXRpb24gd2l0aCBzdHJ1Y3R1cmVzICVw
IC0+ICVwLCBjaGFpbiAlcC5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJJbnN0
cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
IGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0
dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1
cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVy
ZUNoYWluLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNv
ZGUgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAoc2l6
ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8
IHNpemU7ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3RydWN0aW9uID0g
Jmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV07CisgICAgICAg
ICAgICBBU1NFUlQoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUu
b3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbAorICAgICAgICAgICAgICAgICAgIHx8IGludGVy
cHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3BfcmVz
b2x2ZV9nbG9iYWxfZHluYW1pYyk7CisgICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9uWzNd
LnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0
dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICh2
ZXJib3NlVW5saW5raW5nKQorICAgICAgICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcgTExJbnQg
Z2xvYmFsIHJlc29sdmUgY2FjaGUgd2l0aCBzdHJ1Y3R1cmUgJXAuXG4iLCBjdXJJbnN0cnVjdGlv
blszXS51LnN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgICAgICBjdXJJbnN0cnVjdGlvblszXS51
LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5vcGVy
YW5kID0gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9s
bGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChtX2xsaW50
Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpICYmICFIZWFwOjppc01hcmtlZChtX2xsaW50Q2Fs
bExpbmtJbmZvc1tpXS5jYWxsZWUuZ2V0KCkpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJv
c2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcgTExJbnQg
Y2FsbCBmcm9tICVwLlxuIiwgdGhpcyk7CisgICAgICAgICAgICAgICAgbV9sbGludENhbGxMaW5r
SW5mb3NbaV0udW5saW5rKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoISFtX2xs
aW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobV9s
bGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUuZ2V0KCkpKQorICAgICAgICAgICAg
ICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlLmNsZWFyKCk7CisgICAg
ICAgIH0KKyAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCiAjaWYgRU5BQkxFKERGR19K
SVQpCiAgICAgLy8gQ2hlY2sgaWYgd2UncmUgbm90IGxpdmUuIElmIHdlIGFyZSwgdGhlbiBqZXR0
aXNvbi4KICAgICBpZiAoIShzaG91bGRJbW1lZGlhdGVseUFzc3VtZUxpdmVuZXNzRHVyaW5nU2Nh
bigpIHx8IG1fZGZnRGF0YS0+bGl2ZW5lc3NIYXNCZWVuUHJvdmVkKSkgewpAQCAtMTc1NCw3ICsx
ODMwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogICAgICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVtYmVyT2ZDYWxsTGlua0luZm9zKCk7ICsraSkg
ewogICAgICAgICAgICAgaWYgKGNhbGxMaW5rSW5mbyhpKS5pc0xpbmtlZCgpICYmICFIZWFwOjpp
c01hcmtlZChjYWxsTGlua0luZm8oaSkuY2FsbGVlLmdldCgpKSkgewogICAgICAgICAgICAgICAg
IGlmICh2ZXJib3NlVW5saW5raW5nKQotICAgICAgICAgICAgICAgICAgICBwcmludGYoIkNsZWFy
aW5nIGNhbGwgZnJvbSAlcC5cbiIsIHRoaXMpOworICAgICAgICAgICAgICAgICAgICBwcmludGYo
IkNsZWFyaW5nIGNhbGwgZnJvbSAlcCB0byAlcC5cbiIsIHRoaXMsIGNhbGxMaW5rSW5mbyhpKS5j
YWxsZWUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mbyhpKS51bmxpbmsoKm1f
Z2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBp
ZiAoISFjYWxsTGlua0luZm8oaSkubGFzdFNlZW5DYWxsZWUKQEAgLTE4NTIsMTAgKzE5MjgsMTIg
QEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJvbmdSZWZlcgogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlvbkRlY2xzLnNpemUoKTsgKytpKQogICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmbV9mdW5jdGlvbkRlY2xzW2ldKTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIp
Ci0gICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6
ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0
b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7Ci0g
ICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCks
IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwg
Jmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIGlm
IChtX2dsb2JhbERhdGEtPmludGVycHJldGVyLT5lbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChz
aXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsg
aSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5z
dHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOworICAgICAgICBm
b3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9
IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwg
Jmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIH0K
ICNlbmRpZgogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0xODYzLDggKzE5NDEsOSBAQCB2b2lk
IENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyCiAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IGV4ZWN1dGFibGVzIHRoYXQgd2UgaGF2ZSBpbmxpbmVkIGRvbid0IGRpZS4KICAgICAg
ICAgLy8gRklYTUU6IElmIHRoZXkgd291bGQgaGF2ZSBvdGhlcndpc2UgZGllZCwgd2Ugc2hvdWxk
IHByb2JhYmx5IHRyaWdnZXIgcmVjb21waWxhdGlvbi4KICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBpbmxpbmVDYWxsRnJhbWVzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIHZp
c2l0b3IuYXBwZW5kKCZpbmxpbmVDYWxsRnJhbWVzKClbaV0uZXhlY3V0YWJsZSk7Ci0gICAgICAg
ICAgICB2aXNpdG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZyYW1lcygpW2ldLmNhbGxlZSk7CisgICAg
ICAgICAgICBJbmxpbmVDYWxsRnJhbWUmIGlubGluZUNhbGxGcmFtZSA9IGlubGluZUNhbGxGcmFt
ZXMoKVtpXTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpbmxpbmVDYWxsRnJhbWUuZXhl
Y3V0YWJsZSk7CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZyYW1lLmNh
bGxlZSk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKQEAgLTIwNzQsNiArMjE1MywxMiBAQCB2
b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogewogICAgIGlmICghIW1fYWx0ZXJuYXRpdmUp
CiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPnVubGlua0NhbGxzKCk7CisjaWYgRU5BQkxFKExMSU5U
KQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkp
CisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICB9Cisj
ZW5kaWYKICAgICBpZiAoIShtX2NhbGxMaW5rSW5mb3Muc2l6ZSgpIHx8IG1fbWV0aG9kQ2FsbExp
bmtJbmZvcy5zaXplKCkpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKCFtX2dsb2JhbERhdGEt
PmNhblVzZUpJVCgpKQpAQCAtMjA4OCwxMCArMjE3MywzOSBAQCB2b2lkIENvZGVCbG9jazo6dW5s
aW5rQ2FsbHMoKQogCiB2b2lkIENvZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxscygpCiB7Cisj
aWYgRU5BQkxFKExMSU5UKQorICAgIHdoaWxlIChtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigp
ICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQorICAgICAgICBtX2luY29taW5nTExJbnRD
YWxscy5iZWdpbigpLT51bmxpbmsoKTsKKyNlbmRpZgorICAgIGlmIChtX2luY29taW5nQ2FsbHMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVm
ZmVyKHRoaXMpOwogICAgIHdoaWxlIChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAhPSBtX2luY29t
aW5nQ2FsbHMuZW5kKCkpCiAgICAgICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigpLT51bmxpbmso
Km1fZ2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CiB9CisKK3Vuc2lnbmVkIENvZGVCbG9jazo6
Ynl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFk
ZHJlc3MpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVl
KCkgPj0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfYmVnaW4pCisgICAgICAgICYmIHJldHVy
bkFkZHJlc3MudmFsdWUoKSA8PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQpKSB7Cisg
ICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSk7CisgICAgICAgIEFTU0VSVChleGVjLT5j
b2RlQmxvY2soKSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVD
b2RlKGdldEpJVFR5cGUoKSkpOworICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBl
eGVjLT5jdXJyZW50VlBDKCk7CisgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbik7CisgICAgICAg
IHJldHVybiBieXRlY29kZU9mZnNldChpbnN0cnVjdGlvbik7CisgICAgfQorI2Vsc2UKKyAgICBV
TlVTRURfUEFSQU0oZXhlYyk7CisjZW5kaWYKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAg
IHJldHVybiAxOworICAgIFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldD4m
IGNhbGxJbmRpY2VzID0gbV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7CisgICAg
aWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiBi
aW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBn
ZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXpl
KCksIGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNv
ZGVPZmZzZXQ7Cit9CiAjZW5kaWYKIAogdm9pZCBDb2RlQmxvY2s6OmNsZWFyRXZhbENhY2hlKCkK
QEAgLTIxODcsMjQgKzIzMDEsNDUgQEAgYm9vbCBGdW5jdGlvbkNvZGVCbG9jazo6Y2FuQ29tcGls
ZVdpdGhERgogCiB2b2lkIFByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NF
UlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklU
Q29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09
IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3du
ZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9
CiAKIHZvaWQgRXZhbENvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRU
eXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09w
dGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1l
bnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUo
KSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBGdW5j
dGlvbkNvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0g
SklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdK
SVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAg
ICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5q
ZXR0aXNvbk9wdGltaXplZENvZGVGb3IoKmdsb2JhbERhdGEoKSwgbV9pc0NvbnN0cnVjdG9yID8g
Q29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKIH0KKwordm9pZCBQcm9ncmFtQ29kZUJs
b2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNT
RVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NF
UlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8UHJvZ3Jh
bUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZ2xvYmFsRGF0YSk7
Cit9CisKK3ZvaWQgRXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRD
b21waWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqaXRDb21w
aWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdldEpJVFR5
cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhpcyA9PSBy
ZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlRm9yKGdsb2JhbERhdGEsIG1faXNDb25z
dHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2FsbCk7Cit9CiAjZW5kaWYKIAog
I2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEwNjgzNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAs
NyBAQAogI2lmbmRlZiBDb2RlQmxvY2tfaAogI2RlZmluZSBDb2RlQmxvY2tfaAogCisjaW5jbHVk
ZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkNhbGxMaW5rSW5mby5oIgogI2lu
Y2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29k
ZU9yaWdpbi5oIgpAQCAtNTAsNiArNTEsNyBAQAogI2luY2x1ZGUgIkpJVFdyaXRlQmFycmllci5o
IgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSnVtcFRhYmxlLmgiCisj
aW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJMaW5lSW5mby5oIgogI2lu
Y2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUHJlZGljdGlvblRyYWNrZXIuaCIKQEAgLTY1LDE2
ICs2NywxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlICJTdHJ1Y3R1cmVT
dHViSW5mby5oIgogCi0vLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0
aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6Ci0v
LyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBD
YWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lz
dGVyRmlsZS5oLgotLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGlj
ZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFy
aWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgotLy8gICAgICAweDQwMDAwMDAwLTB4
N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmll
cyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgotc3RhdGljIGNvbnN0IGlu
dCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7Ci0KIG5hbWVzcGFjZSBK
U0MgewogCi0gICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7Cisg
ICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAog
ICAgIGlubGluZSBpbnQgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKGludCBhcmd1bWVudHNS
ZWdpc3RlcikgeyByZXR1cm4gYXJndW1lbnRzUmVnaXN0ZXIgLSAxOyB9CiAKQEAgLTgzLDYgKzgw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29kZUJsb2NrIDogcHVibGljIFVuY29u
ZGl0aW9uYWxGaW5hbGl6ZXIsIHB1YmxpYyBXZWFrUmVmZXJlbmNlSGFydmVzdGVyIHsKICAgICAg
ICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7Cisg
ICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgog
ICAgICAgICBlbnVtIENvcHlQYXJzZWRCbG9ja1RhZyB7IENvcHlQYXJzZWRCbG9jayB9OwogICAg
IHByb3RlY3RlZDoKQEAgLTEyMyw3ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAgICAgICAgICAgcmVzdWx0
ID0gcmVzdWx0LT5hbHRlcm5hdGl2ZSgpOwogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0g
ICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxp
bmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3Vs
dC0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9
CiAjZW5kaWYKQEAgLTE5MiwxNSArMTkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9kQ2FsbExpbmtJbmZvLCB1bnNpZ25lZCwgZ2V0
TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4obV9tZXRob2RDYWxsTGlua0luZm9zLmJl
Z2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCksIGJ5dGVjb2RlSW5kZXgpKTsKICAg
ICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KFJldHVybkFkZHJlc3NQ
dHIgcmV0dXJuQWRkcmVzcykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX3JhcmVEYXRh
KQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgVmVjdG9yPENhbGxSZXR1
cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2Nh
bGxSZXR1cm5JbmRleFZlY3RvcjsKLSAgICAgICAgICAgIGlmICghY2FsbEluZGljZXMuc2l6ZSgp
KQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgcmV0dXJuIGJpbmFyeVNl
YXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxS
ZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0
SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNl
dDsKLSAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChFeGVjU3RhdGUq
LCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldEZv
ckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7CkBAIC0yMjEsMTEgKzIxMSwx
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgbV9pbmNvbWluZ0Nh
bGxzLnB1c2goaW5jb21pbmcpOwogICAgICAgICB9CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAg
ICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoTExJbnRDYWxsTGlua0luZm8qIGluY29taW5nKQorICAg
ICAgICB7CisgICAgICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5wdXNoKGluY29taW5nKTsK
KyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKICAgICAgICAgCiAgICAgICAgIHZv
aWQgdW5saW5rSW5jb21pbmdDYWxscygpOwotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkK
IAotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8fCBFTkFCTEUoTExJ
TlQpCiAgICAgICAgIHZvaWQgc2V0SklUQ29kZU1hcChQYXNzT3duUHRyPENvbXBhY3RKSVRDb2Rl
TWFwPiBqaXRDb2RlTWFwKQogICAgICAgICB7CiAgICAgICAgICAgICBtX2ppdENvZGVNYXAgPSBq
aXRDb2RlTWFwOwpAQCAtMjM0LDcgKzIzMCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7
CiAgICAgICAgICAgICByZXR1cm4gbV9qaXRDb2RlTWFwLmdldCgpOwogICAgICAgICB9CisjZW5k
aWYKICAgICAgICAgCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHZvaWQgY3JlYXRlREZH
RGF0YUlmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCEhbV9kZmdEYXRh
KQpAQCAtMzMzLDEyICszMzEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICNlbmRp
ZgogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9m
ZnNldChJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKHJldHVybkFkZHJlc3MgPj0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSAmJiByZXR1cm5B
ZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zKCkuZW5kKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdp
bigpOwogICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgICB2b2lkIHNldElzTnVtZXJpY0NvbXBh
cmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVtZXJpY0Nv
bXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgICAgICBib29s
IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbigpIHsgcmV0dXJuIG1faXNOdW1lcmljQ29tcGFyZUZ1
bmN0aW9uOyB9CkBAIC0zNzYsNiArMzczLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBF
eGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgeyByZXR1cm4gZ2V0SklU
Q29kZSgpLmdldEV4ZWN1dGFibGVNZW1vcnkoKTsgfQogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0
KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKikgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKSA9IDA7CisgICAgICAgIGJvb2wgaml0Q29tcGls
ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChn
ZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykgeworICAgICAgICAgICAg
ICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGppdENv
bXBpbGVJbXBsKGdsb2JhbERhdGEpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgPSAwOwogCiAgICAg
ICAgIGVudW0gQ29tcGlsZVdpdGhERkdTdGF0ZSB7CkBAIC0zOTUsMTMgKzQwMSwxMyBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGhhc09wdGltaXplZFJlcGxhY2VtZW50KCkKICAg
ICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNl
bGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0
SklUVHlwZSgpKSk7CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHJlcGxhY2VtZW50KCktPmdl
dEpJVFR5cGUoKSA+IGdldEpJVFR5cGUoKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAg
ICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5n
ZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKICAgICAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2Vs
aW5lQ29kZShyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgICAgICBB
U1NFUlQocmVwbGFjZW1lbnQoKSA9PSB0aGlzKTsKICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAt
NDYwLDE4ICs0NjYsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjbGVhckV2
YWxDYWNoZSgpOwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICB2b2lkIGFkZFBy
b3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24odW5zaWduZWQgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlv
bikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgp
KQotICAgICAgICAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBwZW5kKHBy
b3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CiAgICAgICAgIH0K
ICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24odW5zaWduZWQgZ2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZ2xvYmFs
RGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgbV9n
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24p
OwogICAgICAgICB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uQXRC
eXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CisjaWYgRU5BQkxFKExMSU5U
KQorICAgICAgICBMTEludENhbGxMaW5rSW5mbyogYWRkTExJbnRDYWxsTGlua0luZm8oKQorICAg
ICAgICB7CisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvcy5hcHBlbmQoTExJbnRDYWxs
TGlua0luZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gJm1fbGxpbnRDYWxsTGlua0luZm9zLmxh
c3QoKTsKKyAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBz
ZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVjdHVyZVN0
dWJJbmZvcy5ncm93KHNpemUpOyB9CkBAIC00ODAsOCArNDg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5mbyh1bnNpZ25lZCBnbG9iYWxSZXNv
bHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2dsb2JhbERhdGEt
PmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVu
ZChHbG9iYWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKKyAgICAgICAg
ICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhnbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKICAgICAgICAgfQogICAgICAgICBHbG9iYWxSZXNvbHZlSW5m
byYgZ2xvYmFsUmVzb2x2ZUluZm8oaW50IGluZGV4KSB7IHJldHVybiBtX2dsb2JhbFJlc29sdmVJ
bmZvc1tpbmRleF07IH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5mb0F0Qnl0ZWNv
ZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAtNDkyLDYgKzUwMCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkTWV0aG9kQ2FsbExpbmtJbmZvcyh1bnNp
Z25lZCBuKSB7IEFTU0VSVChtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKTsgbV9tZXRob2RDYWxs
TGlua0luZm9zLmdyb3cobik7IH0KICAgICAgICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RD
YWxsTGlua0luZm8oaW50IGluZGV4KSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5mb3NbaW5k
ZXhdOyB9CisgICAgICAgIHNpemVfdCBudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MoKSB7IHJl
dHVybiBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpOyB9CiAjZW5kaWYKICAgICAgICAgCiAj
aWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtNTMzLDYgKzU0MiwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXRd
LnUub3Bjb2RlKSkgLSAxXS51LnByb2ZpbGUgPT0gcmVzdWx0KTsKICAgICAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgICAgIH0KKyAgICAgICAgUHJlZGljdGVkVHlwZSB2YWx1ZVByb2ZpbGVQ
cmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICB7
CisgICAgICAgICAgICByZXR1cm4gdmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgfQogICAgICAg
ICAKICAgICAgICAgdW5zaWduZWQgdG90YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMoKQogICAgICAg
ICB7CkBAIC01NTksMTIgKzU3MiwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAg
ICAgIGJvb2wgbGlrZWx5VG9UYWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAg
ICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gcmFy
ZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7
CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nh
c2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlv
bkVudHJ5Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAg
ICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgY291bGRUYWtlU2xvd0Nhc2UoaW50IGJ5
dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNh
c2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IHVuc2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9u
czo6Y291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2
YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6Y291bGRUYWtlU2xvd0Nh
c2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KQEAgLTU4MywxMiArNjAwLDE2IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2Uo
aW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9m
UmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg
ICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJv
ZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAg
ICAgICAgcmV0dXJuIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFr
ZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4oc3BlY2lhbEZhc3RD
YXNlQ291bnQpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFr
ZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGxp
a2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9
IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3Vu
dGVyOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFs
RmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50
ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgLSBzcGVjaWFs
RmFzdENhc2VDb3VudDsKQEAgLTU5Nyw2ICs2MTgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zm
c2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxl
cygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVk
IHNsb3dDYXNlQ291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29k
ZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2Fz
ZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2Rl
T2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBzbG93Q2Fz
ZUNvdW50ICsgc3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBAIC02OTQsNyArNzE3LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGFkZEZyZXF1ZW50RXhpdFNpdGUoY29u
c3QgREZHOjpGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgICAgICB7Ci0gICAgICAgICAgICBB
U1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAg
IEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAg
ICAgIHJldHVybiBtX2V4aXRQcm9maWxlLmFkZChzaXRlKTsKICAgICAgICAgfQogCkBAIC04MDIs
NiArODI1LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VE
YXRhRnJvbShDb2RlQmxvY2sqIGFsdGVybmF0aXZlKTsKICAgICAgICAgdm9pZCBjb3B5UG9zdFBh
cnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgICAgICAKKyAgICAgICAgLy8gRnVuY3Rpb25z
IGZvciBjb250cm9sbGluZyB3aGVuIEpJVHRpbmcga2lja3MgaW4sIGluIGEgbWl4ZWQgbW9kZQor
ICAgICAgICAvLyBleGVjdXRpb24gd29ybGQuCisgICAgICAgIAorICAgICAgICB2b2lkIGRvbnRK
SVRBbnl0aW1lU29vbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291
bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29v
bjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRBZnRlcldhcm1VcCgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICB2b2lkIGppdFNvb24oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50
RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29u
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQzMl90IGxsaW50RXhlY3V0ZUNvdW50
ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbV9sbGludEV4ZWN1dGVD
b3VudGVyOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNv
bnRyb2xsaW5nIHdoZW4gdGllcmVkIGNvbXBpbGF0aW9uIGtpY2tzIGluLiBUaGlzCiAgICAgICAg
IC8vIGNvbnRyb2xzIGJvdGggd2hlbiB0aGUgb3B0aW1pemluZyBjb21waWxlciBpcyBpbnZva2Vk
IGFuZCB3aGVuIE9TUgogICAgICAgICAvLyBlbnRyeSBoYXBwZW5zLiBUd28gdHJpZ2dlcnMgZXhp
c3Q6IHRoZSBsb29wIHRyaWdnZXIgYW5kIHRoZSByZXR1cm4KQEAgLTk5NCw2ICsxMDQwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zaG91bGREaXNjYXJkQnl0ZWNvZGU7CiAK
ICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0ds
b2JhbERhdGEmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2Vz
KFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9u
YWxseSgpOwogICAgICAgICAKQEAgLTEwNzUsOSArMTEyMiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5zaWdu
ZWQgbV9zb3VyY2VPZmZzZXQ7CiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgICAgIFZl
Y3Rvcjx1bnNpZ25lZD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKICAgICAgICAgVmVj
dG9yPHVuc2lnbmVkPiBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnM7CisjaWYgRU5BQkxFKExM
SU5UKQorICAgICAgICBTZWdtZW50ZWRWZWN0b3I8TExJbnRDYWxsTGlua0luZm8sIDg+IG1fbGxp
bnRDYWxsTGlua0luZm9zOworICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlu
a0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiA+IG1faW5jb21p
bmdMTEludENhbGxzOwogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgVmVjdG9yPFN0
cnVjdHVyZVN0dWJJbmZvPiBtX3N0cnVjdHVyZVN0dWJJbmZvczsKQEAgLTEwODgsOSArMTEzNywx
MCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0
Q29kZVdpdGhBcml0eUNoZWNrOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJ
bmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0NhbGxz
OwogI2VuZGlmCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVO
QUJMRShMTElOVCkKICAgICAgICAgT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENvZGVN
YXA7Ci0gICAgICAgIAorI2VuZGlmCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHN0cnVj
dCBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbiB7CiAgICAgICAgICAgICBXZWFrUmVmZXJlbmNlVHJh
bnNpdGlvbigpIHsgfQogICAgICAgICAgICAgCkBAIC0xMTUzLDEyICsxMjAzLDE0IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgICAgIE93blB0cjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7CiAg
ICAgICAgIAorICAgICAgICBpbnQzMl90IG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAg
CiAgICAgICAgIGludDMyX3QgbV9qaXRFeGVjdXRlQ291bnRlcjsKICAgICAgICAgdWludDMyX3Qg
bV9zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0
aXZlRmFpbENvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50
ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKLQorICAg
ICAgICAKICAgICAgICAgc3RydWN0IFJhcmVEYXRhIHsKICAgICAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiAgICAgICAgIHB1YmxpYzoKQEAgLTEyMzQsNiArMTI4Niw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29t
cGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBs
KEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQo
KTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHSW50ZXJuYWwoKTsKICNl
bmRpZgpAQCAtMTI2OCw2ICsxMzIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVk
OgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSos
IFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAg
IHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wg
Y2FuQ29tcGlsZVdpdGhERkdJbnRlcm5hbCgpOwogI2VuZGlmCkBAIC0xMzA1LDYgKzEzNTksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmpl
Y3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21w
aWxlSW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxh
Y2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGR0ludGVybmFs
KCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEwNjgzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjAg
KzI3LDQ5IEBACiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIAorR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVC
bG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYg
aWRlbnQpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9Q
QVJBTShieXRlY29kZUluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lmIEVOQUJM
RShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKyAgICAKKyAgICBpZiAoaW5z
dHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfbWV0aG9kX2NoZWNrKQorICAgICAgICBp
bnN0cnVjdGlvbisrOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0
XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJu
IEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBm
YWxzZSk7CisgICAgCisgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxl
ZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5k
KQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVT
ZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhT
aW1wbGVEaXJlY3QsIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQsIGZhbHNlKTsKKyNl
bHNlCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0
KCksIG5vdEZvdW5kLCBmYWxzZSk7CisjZW5kaWYKK30KKwogR2V0QnlJZFN0YXR1cyBHZXRCeUlk
U3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0
ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2Zp
bGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURf
UEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikK
KyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKCkpCisg
ICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5k
ZXgsIGlkZW50KTsKKyAgICAKICAgICAvLyBGaXJzdCBjaGVjayBpZiBpdCBtYWtlcyBlaXRoZXIg
Y2FsbHMsIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBiZSBzdXBlciBjYXJlZnVsLCBvcgogICAg
IC8vIGlmIGl0J3Mgbm90IHNldCBhdCBhbGwsIGluIHdoaWNoIGNhc2Ugd2UgcHVudC4KICAgICBT
dHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mbyhi
eXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJldHVybiBH
ZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7Cisg
ICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5k
ZXgsIGlkZW50KTsKICAgICAKICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIGxp
c3Q7CiAgICAgaW50IGxpc3RTaXplOwpAQCAtNjAsMTggKzg5LDE5IEBAIEdldEJ5SWRTdGF0dXMg
R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICB9CiAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgIGlmICghbGlzdC0+bGlzdFtpXS5pc0RpcmVjdCkK
LSAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNl
dCgpLCBub3RGb3VuZCk7CisgICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0Nh
bGxzLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIHRydWUpOwogICAgIH0KICAgICAKICAgICAv
LyBOZXh0IGNoZWNrIGlmIGl0IHRha2VzIHNsb3cgY2FzZSwgaW4gd2hpY2ggY2FzZSB3ZSB3YW50
IHRvIGJlIGtpbmQgb2YgY2FyZWZ1bC4KICAgICBpZiAocHJvZmlsZWRCbG9jay0+bGlrZWx5VG9U
YWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVz
KFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVy
biBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwg
dHJ1ZSk7CiAgICAgCiAgICAgLy8gRmluYWxseSBmaWd1cmUgb3V0IGlmIHdlIGNhbiBkZXJpdmUg
YW4gYWNjZXNzIHN0cmF0ZWd5LgogICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OworICAgIHJlc3Vs
dC5tX3dhc1NlZW5JbkpJVCA9IHRydWU7CiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBl
KSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVz
KE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVy
biBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsK
ICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6IHsKICAgICAgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5mby51LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1
Y3R1cmUuZ2V0KCk7CkBAIC0xMzAsNyArMTYwLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3Rh
dHVzOjpjb21wdXRlRm9yKAogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZSAvLyBFTkFC
TEUoSklUKQotICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVy
ZVNldCgpLCBub3RGb3VuZCk7CisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlv
biwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJ
VCkKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0
dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJ
ZFN0YXR1cy5oCShyZXZpc2lvbiAxMDY4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMCArNDksMTEgQEAg
cHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0
ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQpCisgICAg
R2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVT
ZXQsIHNpemVfdCBvZmZzZXQsIGJvb2wgd2FzU2VlbkluSklUKQogICAgICAgICA6IG1fc3RhdGUo
c3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQogICAgICAgICAs
IG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBtX3dhc1NlZW5JbkpJVCh3YXNTZWVuSW5KSVQp
CiAgICAgewogICAgICAgICBBU1NFUlQoKHN0YXRlID09IFNpbXBsZURpcmVjdCkgPT0gKG9mZnNl
dCAhPSBub3RGb3VuZCkpOwogICAgIH0KQEAgLTcwLDEwICs3MSwxNSBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0cnVj
dHVyZVNldDsgfQogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsg
fQogICAgIAorICAgIGJvb2wgd2FzU2VlbkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVu
SW5KSVQ7IH0KKyAgICAKIHByaXZhdGU6CisgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0
ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVy
Jik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1
cmVTZXQ7CiAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIGJvb2wgbV93YXNTZWVuSW5KSVQ7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMDY4MzQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiAr
NDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xhc3MgU3Ry
dWN0dXJlOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOworICAgIHN0cnVjdCBMTEludENhbGxM
aW5rSW5mbzsKICAgICBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCiAjaWYgRU5BQkxFKEpJVCkKQEAg
LTE0Niw2ICsxNDcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHN0cnVjdCBJ
bnN0cnVjdGlvbiB7CisgICAgICAgIEluc3RydWN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgdS5qc0NlbGwuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgSW5zdHJ1
Y3Rpb24oT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogI2lmICFFTkFCTEUoQ09NUFVURURfR09U
T19JTlRFUlBSRVRFUikKQEAgLTE4Miw2ICsxODgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAg
ICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jKSB7
IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7IH0KICAgICAgICAgCisgICAgICAgIEluc3RydWN0
aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pIHsgdS5jYWxsTGlua0luZm8gPSBj
YWxsTGlua0luZm87IH0KKyAgICAgICAgCiAgICAgICAgIEluc3RydWN0aW9uKFZhbHVlUHJvZmls
ZSogcHJvZmlsZSkgeyB1LnByb2ZpbGUgPSBwcm9maWxlOyB9CiAKICAgICAgICAgdW5pb24gewpA
QCAtMTkxLDcgKzE5OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgV3JpdGVCYXJy
aWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3RydWN0dXJlQ2hhaW47CiAgICAgICAgICAgICBXcml0
ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxsOwogICAgICAgICAgICAgUHJvcGVydHlTbG90OjpH
ZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKKyAgICAgICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBj
YWxsTGlua0luZm87CiAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGU7CisgICAgICAg
ICAgICB2b2lkKiBwb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAogICAgIHByaXZhdGU6
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8u
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRDYWxs
TGlua0luZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRD
YWxsTGlua0luZm9faAorI2RlZmluZSBMTEludENhbGxMaW5rSW5mb19oCisKKyNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVk
ZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0
IEluc3RydWN0aW9uOworCitzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm8gOiBwdWJsaWMgQmFzaWNS
YXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+IHsKKyAgICBMTEludENhbGxMaW5rSW5m
bygpCisgICAgeworICAgIH0KKyAgICAKKyAgICB+TExJbnRDYWxsTGlua0luZm8oKQorICAgIHsK
KyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9Cisg
ICAgCisgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIGNhbGxlZTsgfQorICAgIAorICAgIHZv
aWQgdW5saW5rKCkKKyAgICB7CisgICAgICAgIGNhbGxlZS5jbGVhcigpOworICAgICAgICBtYWNo
aW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAgICAgICBpZiAoaXNP
bkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBXcml0ZUJh
cnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBs
YXN0U2VlbkNhbGxlZTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFjaGluZUNvZGVUYXJn
ZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIExMSW50Q2FsbExpbmtJ
bmZvX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxM
aW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDY4MzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNSw2ICszNSwxMSBAQCBNZXRob2RDYWxsTGlua1N0YXR1cyBNZXRob2RDYWxs
TGlua1N0YXR1CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9Q
QVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJP
RklMRVIpCisgICAgLy8gTk9URTogVGhpcyBkb2VzIG5vdCBoYXZlIGFuIExMSW50IGZhbGwtYmFj
ayBiZWNhdXNlIExMSW50IGRvZXMgbm90IGRvIGFueSBtZXRob2QKKyAgICAvLyBjYWxsIGxpbmsg
Y2FjaGluZy4KKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mTWV0aG9kQ2FsbExpbmtJ
bmZvcygpKQorICAgICAgICByZXR1cm4gTWV0aG9kQ2FsbExpbmtTdGF0dXMoKTsKKyAgICAKICAg
ICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGwgPSBwcm9maWxlZEJsb2NrLT5nZXRNZXRo
b2RDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCk7CiAgICAgCiAgICAgaWYgKCFtZXRob2RDYWxs
LnNlZW4gfHwgIW1ldGhvZENhbGwuY2FjaGVkU3RydWN0dXJlKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTA2ODM0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiAr
MTIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9hcmd1bWVudHNf
bGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkgXAogICAgICAgICBt
YWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9yZXBs
YWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmljLCA5KSBcCiAgICAg
ICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApAQCAtMjAxLDYgKzIwMyw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB0eXBlZGVmIGVudW0geyBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RF
X0lEX0VOVU0pIH0gT3Bjb2RlSUQ7CiAgICAgI3VuZGVmIE9QQ09ERV9JRF9FTlVNCiAKKyAgICBj
b25zdCBpbnQgbWF4T3Bjb2RlTGVuZ3RoID0gOTsKICAgICBjb25zdCBpbnQgbnVtT3Bjb2RlSURz
ID0gb3BfZW5kICsgMTsKIAogICAgICNkZWZpbmUgT1BDT0RFX0lEX0xFTkdUSFMoaWQsIGxlbmd0
aCkgY29uc3QgaW50IGlkIyNfbGVuZ3RoID0gbGVuZ3RoOwpAQCAtMjE3LDcgKzIyMCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoVkVSSUZZX09QQ09ERV9J
RCk7CiAgICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQKIAotI2lmIEVOQUJMRShDT01QVVRFRF9H
T1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8
fCBFTkFCTEUoTExJTlQpCiAjaWYgQ09NUElMRVIoUlZDVCkgfHwgQ09NUElMRVIoSU5URUwpCiAg
ICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24gMTA2ODM0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNywyNyArMjcsNjkgQEAKICNpbmNsdWRlICJQdXRCeUlkU3RhdHVzLmgi
CiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVy
LmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlQ2hhaW4uaCIK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK1B1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0
ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5k
ZXgsIElkZW50aWZpZXImIGlkZW50KQoreworICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2Nr
KTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKGlk
ZW50KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0g
cHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CisK
KyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdl
dCgpOworICAgIGlmICghc3RydWN0dXJlKQorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhO
b0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgCisgICAgaWYgKGluc3RydWN0
aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZCkgeworICAgICAgICBzaXplX3Qg
b2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRl
bnQpOworICAgICAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICAgICAgcmV0dXJu
IFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAg
ICAKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlUmVwbGFjZSwgc3RydWN0dXJl
LCAwLCAwLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQoaW5zdHJ1Y3Rpb25bMF0u
dS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0CisgICAgICAg
ICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX25vcm1hbCk7CisgICAgCisgICAgU3RydWN0dXJlKiBuZXdTdHJ1Y3R1cmUgPSBpbnN0
cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4g
PSBpbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpOworICAgIEFTU0VSVChuZXdT
dHJ1Y3R1cmUpOworICAgIEFTU0VSVChjaGFpbik7CisgICAgCisgICAgc2l6ZV90IG9mZnNldCA9
IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsK
KyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1
cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgCisgICAgcmV0dXJuIFB1
dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3RydWN0dXJlLCBuZXdTdHJ1Y3R1cmUsIGNo
YWluLCBvZmZzZXQpOworI2Vsc2UKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisjZW5kaWYKK30KKwogUHV0QnlJZFN0YXR1cyBQdXRC
eUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQg
Ynl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHBy
b2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVT
RURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxF
UikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKCkp
CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2Rl
SW5kZXgsIGlkZW50KTsKKyAgICAKICAgICBpZiAocHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtl
U2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCiAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFRh
a2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKICAgICAKICAgICBTdHJ1Y3R1cmVTdHVi
SW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mbyhieXRlY29kZUluZGV4
KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVz
KE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1
dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgIAog
ICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewogICAgIGNhc2UgYWNjZXNzX3Vuc2V0
OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBu
b3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ss
IGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfcHV0X2J5
X2lkX3JlcGxhY2U6IHsKICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0dWJJbmZvLnUucHV0QnlJ
ZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0KApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMDY4MzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCSh3b3JraW5n
IGNvcHkpCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKICAgICBzaXplX3Qgb2Zmc2V0KCkgY29u
c3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKIHByaXZhdGU6CisgICAgc3RhdGljIFB1dEJ5
SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUlu
ZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1
cmUqIG1fb2xkU3RydWN0dXJlOwogICAgIFN0cnVjdHVyZSogbV9uZXdTdHJ1Y3R1cmU7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTA2ODM0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJCYXRjaGVkVHJhbnNpdGlvbk9wdGltaXplci5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1
ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAjaW5j
bHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKQEAgLTEyOTMsOSAr
MTI5NCw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBF
TkFCTEUoSklUKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAg
ICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihpbnN0cnVjdGlv
bnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgICAgIGJvb2wgZHluYW1pYyA9IHJlc29sdmVSZXN1
bHQuaXNEeW5hbWljKCkgJiYgcmVzb2x2ZVJlc3VsdC5kZXB0aCgpOwogICAgICAgICBWYWx1ZVBy
b2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUoZHluYW1pYyA/IG9wX3Jlc29sdmVf
Z2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwpAQCAtMTM5OSw5ICsxMzk4LDYgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAgICAgICByZXR1cm4gYmFzZURzdDsK
ICAgICB9CiAKLQotCi0KICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRP
cGNvZGUob3BfcmVzb2x2ZV93aXRoX2Jhc2UpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChi
YXNlRHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvcERzdC0+aW5k
ZXgoKSk7CkBAIC0xNTA5LDkgKzE1MDUsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
TWV0aG9kQ2hlY2soCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QnlJ
ZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5KQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRk
UHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlm
CiAKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0
X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKQEAgLTE1
MzcsOSArMTUzMSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXIK
IAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQq
IGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsK
LSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1p
dE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5p
bmRleCgpKTsKQEAgLTE1NTUsOSArMTU0Nyw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0UHV0QnkKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJl
Y3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBS
ZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2Rl
QmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KTsKLSNlbmRpZgogICAgIAogICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBAIC0xODM4LDcgKzE4MjgsMTEgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYWxsKAogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdD
b3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zm
c2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vs
c2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAg
ICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0
X3Jlc3VsdCk7CkBAIC0xOTQyLDcgKzE5MzYsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRDb25zdAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgp
KTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNl
dAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxv
Y2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYg
KGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxl
ID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0yMjAzLDcgKzIy
MDEsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaAogewogICAg
IG1fdXNlc0V4Y2VwdGlvbnMgPSB0cnVlOwogI2lmIEVOQUJMRShKSVQpCisjaWYgRU5BQkxFKExM
SU5UKQorICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJp
bmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1f
YmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6
Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29w
X2NhdGNoKSkpIH07CisjZWxzZQogICAgIEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5k
KDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWlj
U2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKCkgfTsKKyNl
bmRpZgogI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwg
ZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVw
dGggKyBtX2Jhc2VTY29wZURlcHRoIH07CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMDY4MzQpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjA2LDkgKzYwNiw3IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBVTlVT
RURfUEFSQU0obm9kZUluZGV4KTsKICAgICAgICAgCi0gICAgICAgIFZhbHVlUHJvZmlsZSogcHJv
ZmlsZSA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIEFTU0VSVChwcm9maWxlKTsK
LSAgICAgICAgUHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0
ZWRQcmVkaWN0aW9uKCk7CisgICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1faW5s
aW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9T
RSkKICAgICAgICAgcHJpbnRmKCJEeW5hbWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xu
Iiwgbm9kZUluZGV4LCBieXRlY29kZUluZGV4LCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlv
bikpOwogI2VuZGlmCkBAIC0xMDQzLDYgKzEwNDEsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVJbmxpbmluZyhib29sCiAgICAgCiAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhlbiBpdCBs
b29rcyBsaWtlIHdlIHNob3VsZCBkZWZpbml0ZWx5IGlubGluZSB0aGlzIGNvZGUuIFByb2NlZWQK
ICAgICAvLyB3aXRoIHBhcnNpbmcgdGhlIGNvZGUgdG8gZ2V0IGJ5dGVjb2RlLCBzbyB0aGF0IHdl
IGNhbiB0aGVuIHBhcnNlIHRoZSBieXRlY29kZS4KKyAgICAvLyBOb3RlIHRoYXQgaWYgTExJbnQg
aXMgZW5hYmxlZCwgdGhlIGJ5dGVjb2RlIHdpbGwgYWx3YXlzIGJlIGF2YWlsYWJsZS4gQWxzbyBu
b3RlCisgICAgLy8gdGhhdCBpZiBMTEludCBpcyBlbmFibGVkLCB3ZSBtYXkgaW5saW5lIGEgY29k
ZSBibG9jayB0aGF0IGhhcyBuZXZlciBiZWVuIEpJVHRlZAorICAgIC8vIGJlZm9yZSEKICAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IG1fY29kZUJsb2NrQ2FjaGUuZ2V0KENvZGVCbG9ja0tleShl
eGVjdXRhYmxlLCBraW5kKSwgZXhwZWN0ZWRGdW5jdGlvbi0+c2NvcGUoKSk7CiAgICAgaWYgKCFj
b2RlQmxvY2spCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE3NDMsNyArMTc0NCw3IEBAIGJv
b2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBt
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2ssIG1fY3VycmVudEluZGV4KTsKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgaWYgKG1ldGhvZENhbGxTdGF0dXMuaXNTZXQoKQotICAgICAg
ICAgICAgICAgICYmICFnZXRCeUlkU3RhdHVzLmlzU2V0KCkKKyAgICAgICAgICAgICAgICAmJiAh
Z2V0QnlJZFN0YXR1cy53YXNTZWVuSW5KSVQoKQogICAgICAgICAgICAgICAgICYmICFtX2lubGlu
ZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxlLmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRD
YWNoZSkpIHsKICAgICAgICAgICAgICAgICAvLyBJdCdzIG1vbm9tb3JwaGljIGFzIGZhciBhcyB3
ZSBjYW4gdGVsbCwgc2luY2UgdGhlIG1ldGhvZF9jaGVjayB3YXMgbGlua2VkCiAgICAgICAgICAg
ICAgICAgLy8gYnV0IHRoZSBzbG93IHBhdGggKGkuZS4gdGhlIG5vcm1hbCBnZXRfYnlfaWQpIG5l
dmVyIGZpcmVkLgpAQCAtMTgxMiw3ICsxODEzLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFy
c2VCbG9jayh1bnNpZ25lZAogCiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQp
OwogICAgICAgICB9Ci0gICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOiB7CisgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkOgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVj
dDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAg
ICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVy
YW5kKTsKICAgICAgICAgICAgIE5vZGVJbmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlv
blsxXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9
IG1faW5saW5lU3RhY2tUb3AtPm1faWRlbnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsy
XS51Lm9wZXJhbmRdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmls
aXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5oCShyZXZpc2lvbiAxMDY4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NhcGFiaWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDggQEAgaW5s
aW5lIGJvb2wgY2FuQ29tcGlsZU9wY29kZShPcGNvZGVJRCBvcAogICAgIGNhc2Ugb3BfcHV0X3Nj
b3BlZF92YXI6CiAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6
CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoK
ICAgICBjYXNlIG9wX3B1dF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2
aXNpb24gMTA2ODM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29t
cGlsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCwyMSBAQCB2b2lkIGNvbXBpbGVP
U1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykKICAgICB1aW50MzJfdCBleGl0SW5kZXggPSBnbG9iYWxE
YXRhLT5vc3JFeGl0SW5kZXg7CiAgICAgT1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jay0+b3NyRXhp
dChleGl0SW5kZXgpOwogICAgIAorICAgIC8vIE1ha2Ugc3VyZSBhbGwgY29kZSBvbiBvdXIgaW5s
aW5lIHN0YWNrIGlzIEpJVCBjb21waWxlZC4gVGhpcyBpcyBuZWNlc3Nhcnkgc2luY2UKKyAgICAv
LyB3ZSBtYXkgb3B0IHRvIGlubGluZSBhIGNvZGUgYmxvY2sgZXZlbiBiZWZvcmUgaXQgaGFkIGV2
ZXIgYmVlbiBjb21waWxlZCBieSB0aGUKKyAgICAvLyBKSVQsIGJ1dCBvdXIgT1NSIGV4aXQgaW5m
cmFzdHJ1Y3R1cmUgY3VycmVudGx5IG9ubHkgd29ya3MgaWYgdGhlIHRhcmdldCBvZiB0aGUKKyAg
ICAvLyBPU1IgZXhpdCBpcyBKSVQgY29kZS4gVGhpcyBjb3VsZCBiZSBjaGFuZ2VkIHNpbmNlIHRo
ZXJlIGlzIG5vdGhpbmcgcGFydGljdWxhcmx5CisgICAgLy8gaGFyZCBhYm91dCBkb2luZyBhbiBP
U1IgZXhpdCBpbnRvIHRoZSBpbnRlcnByZXRlciwgYnV0IGZvciBub3cgdGhpcyBzZWVtcyB0byBt
YWtlCisgICAgLy8gc2Vuc2UgaW4gdGhhdCBpZiB3ZSdyZSBPU1IgZXhpdGluZyBmcm9tIGlubGlu
ZWQgY29kZSBvZiBhIERGRyBjb2RlIGJsb2NrLCB0aGVuCisgICAgLy8gcHJvYmFibHkgaXQncyBh
IGdvb2Qgc2lnbiB0aGF0IHRoZSB0aGluZyB3ZSdyZSBleGl0aW5nIGludG8gaXMgaG90LiBFdmVu
IG1vcmUKKyAgICAvLyBpbnRlcmVzdGluZ2x5LCBzaW5jZSB0aGUgY29kZSB3YXMgaW5saW5lZCwg
aXQgbWF5IG5ldmVyIG90aGVyd2lzZSBnZXQgSklUCisgICAgLy8gY29tcGlsZWQgc2luY2UgdGhl
IGFjdCBvZiBpbmxpbmluZyBpdCBtYXkgZW5zdXJlIHRoYXQgaXQgb3RoZXJ3aXNlIG5ldmVyIHJ1
bnMuCisgICAgZm9yIChDb2RlT3JpZ2luIGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbjsg
Y29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGlu
ZUNhbGxGcmFtZS0+Y2FsbGVyKSB7CisgICAgICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0
YWJsZSo+KGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKQorICAg
ICAgICAgICAgLT5iYXNlbGluZUNvZGVCbG9ja0Zvcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFt
ZS0+aXNDYWxsID8gQ29kZUZvckNhbGwgOiBDb2RlRm9yQ29uc3RydWN0KQorICAgICAgICAgICAg
LT5qaXRDb21waWxlKCpnbG9iYWxEYXRhKTsKKyAgICB9CisgICAgCiAgICAgU3BlY3VsYXRpb25S
ZWNvdmVyeSogcmVjb3ZlcnkgPSAwOwogICAgIGlmIChleGl0Lm1fcmVjb3ZlcnlJbmRleCkKICAg
ICAgICAgcmVjb3ZlcnkgPSAmY29kZUJsb2NrLT5zcGVjdWxhdGlvblJlY292ZXJ5KGV4aXQubV9y
ZWNvdmVyeUluZGV4IC0gMSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEwNjgzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAK
ICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVk
ZSAiREZHUmVwYXRjaC5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNs
dWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbmxpbmVBU00uaCIKICNpbmNsdWRlICJJ
bnRlcnByZXRlci5oIgpAQCAtNjczLDUwICs2NzQsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBv
cGVyYXRpb25Db21wYXJlU3RyCiAgICAgcmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMs
IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIp
KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKCk7Ci1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFs
dWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSopOwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0i
Lmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1ISURF
X1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIK
LSAgICAibW92ICVyMTMsICVyZGlcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FU
SU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYg
Q1BVKFg4NikKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1T
WU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAt
NDAoJWVkaSksICVlZGlcbiIKLSAgICAibW92ICVlZGksIDQoJWVzcClcbiIKLSAgICAiam1wICIg
U1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKEFSTV9USFVNQjIpCi1hc20gKAotIi50ZXh0IiAiXG4i
Ci0iLmFsaWduIDIiICJcbiIKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIK
LSIudGh1bWIiICJcbiIKLSIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiOiIgIlxuIgotICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKLSAgICAiY3B5IHIwLCBy
NSIgIlxuIgotICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VuZGlmCi0KLUVuY29kZWRKU1ZhbHVl
IERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0
YXRlKiBleGVjKQotewotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9i
YWxEYXRhKCk7Ci0gICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBl
eGVjKTsKLSAgICAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEo
KS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKLX0KLQogc3RhdGljIHZvaWQqIGhhbmRsZUhvc3RDYWxs
KEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlv
bktpbmQga2luZCkKIHsKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJG
cmFtZSgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHJldmlzaW9uIDEw
NjgzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC04MzcsNyArODM3LDcgQEAgdm9pZCBIZWFwOjpjb2xsZWN0KFN3ZWVwVG9nZ2xlIHN3
ZWVwVG9nZwogICAgICAgICBzZXRIaWdoV2F0ZXJNYXJrKG1heChwcm9wb3J0aW9uYWxCeXRlcywg
bV9taW5CeXRlc1BlckN5Y2xlKSk7CiAgICAgfQogICAgIEpBVkFTQ1JJUFRDT1JFX0dDX0VORCgp
OwotCisgICAgCiAgICAgKCptX2FjdGl2aXR5Q2FsbGJhY2spKCk7CiB9CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmgJKHJldmlzaW9uIDEwNjgzNCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNWYWx1ZTsK
ICAgICBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGNsYXNzIE1hcmtlZEFyZ3VtZW50QnVmZmVyOwogICAgIGNsYXNzIFJlZ2lz
dGVyRmlsZTsKICAgICBjbGFzcyBVU3RyaW5nOwpAQCAtMTM2LDEyICsxMzcsMTMgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHZvaWQgZ2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cyhIYXNo
U2V0PEpTQ2VsbCo+JiByb290cyk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xh
c3MgQ29kZUJsb2NrOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBNYXJrZWRBbGxvY2F0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAg
ICAgICAgZnJpZW5kIGNsYXNzIEJ1bXBTcGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIFNsb3RW
aXNpdG9yOwotICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwogCiAgICAgICAgIHNpemVf
dCB3YXRlck1hcmsoKTsKICAgICAgICAgc2l6ZV90IGhpZ2hXYXRlck1hcmsoKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkocmV2aXNpb24gMTA2ODM0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzA0LDcgKzMwNCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbigKICNlbmRpZgogCiAgICAgQVNTRVJUKEhlYXA6OmlzTWFya2VkKGNlbGwpKTsKLQorICAg
IAogICAgIGlmIChpc0pTU3RyaW5nKGNlbGwpKSB7CiAgICAgICAgIEpTU3RyaW5nOjp2aXNpdENo
aWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOwogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3Iu
aAkocmV2aXNpb24gMTA2ODM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBIZWFwOwogY2xhc3MgTWFya2VkU3BhY2U7CitjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAKIG5hbWVzcGFjZSBERkcgewogY2xhc3MgU3BlY3VsYXRpdmVKSVQ7CkBAIC0z
NCw2ICszNSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldE1hcmtlZFNwYWNlKE1hcmtlZFNwYWNl
KiBzcGFjZSkgeyBtX21hcmtlZFNwYWNlID0gc3BhY2U7IH0KICAgICAKIHByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKCk7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGUo
KTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZUhlbHBlcigpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxMDY4MzQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0
MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNz
IExpdmVPYmplY3RJdGVyYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNz
IFdlYWtHQ0hhbmRsZTsKIGNsYXNzIFNsb3RWaXNpdG9yOwogCkBAIC03Niw2ICs3Nyw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZENvbnN1bWVGcmVlTGlzdChNYXJrZWRCbG9jayopOwogCiBwcml2
YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiAgICAg
Ly8gWyAzMi4uLiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZVN0ZXAgPSBN
YXJrZWRCbG9jazo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlQ3V0
b2ZmID0gMjU2OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxG
cmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9D
YWxsRnJhbWUuaAkocmV2aXNpb24gMTA2ODM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNiArMTIyLDkgQEAg
bmFtZXNwYWNlIEpTQyAgewogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgSW5zdHJ1
Y3Rpb24qIHJldHVyblZQQygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1
cm5QQ10udlBDKCk7IH0KICNlbmRpZgorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgSW5zdHJ1
Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rp
b24qPih0aGlzW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0udGFnKCkpOyB9CisjZW5kaWYK
IAogICAgICAgICB2b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogY2FsbGVyRnJhbWUpIHsg
c3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXSA9
IGNhbGxlckZyYW1lOyB9CiAgICAgICAgIHZvaWQgc2V0U2NvcGVDaGFpbihTY29wZUNoYWluTm9k
ZSogc2NvcGVDaGFpbikgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmls
ZTo6U2NvcGVDaGFpbl0gPSBzY29wZUNoYWluOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEwNjgzNCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNlbmRpZgog
Ci0jZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAoRU5BQkxFKENP
TVBVVEVEX0dPVE9fSU5URVJQUkVURVIpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKKyNkZWZpbmUg
V1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EICgoRU5BQkxFKENPTVBVVEVEX0dP
VE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkK
IAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNTQ3LDE3ICs1NDcsNDMgQEAgSW50ZXJwcmV0
ZXI6OkludGVycHJldGVyKCkKIHsKIH0KIAotdm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6ZShi
b29sIGNhblVzZUpJVCkKK0ludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIoKQogewotI2lmIEVOQUJM
RShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAo
bV9lbmFibGVkKQorICAgICAgICBkZWxldGVbXSBtX29wY29kZVRhYmxlOworI2VuZGlmCit9CisK
K3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRhdGEqIGxsaW50RGF0YSwgYm9v
bCBjYW5Vc2VKSVQpCit7CisgICAgVU5VU0VEX1BBUkFNKGxsaW50RGF0YSk7CisgICAgVU5VU0VE
X1BBUkFNKGNhblVzZUpJVCk7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIp
IHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIp
CisgICAgLy8gSGF2aW5nIExMSW50IGVuYWJsZWQsIGJ1dCBub3QgYmVpbmcgYWJsZSB0byB1c2Ug
dGhlIEpJVCwgYW5kIG5vdCBoYXZpbmcKKyAgICAvLyBhIGNvbXB1dGVkIGdvdG8gaW50ZXJwcmV0
ZXIsIGlzIG5vdCBzdXBwb3J0ZWQuIE5vdCBiZWNhdXNlIHdlIGNhbm5vdAorICAgIC8vIHN1cHBv
cnQgaXQsIGJ1dCBiZWNhdXNlIEkgZGVjaWRlZCB0byBkcmF3IHRoZSBsaW5lIGF0IHRoZSBudW1i
ZXIgb2YKKyAgICAvLyBwZXJtdXRhdGlvbnMgb2YgZXhlY3V0aW9uIGVuZ2luZXMgdGhhdCBJIHdh
bnRlZCB0aGlzIGNvZGUgdG8gZ3Jvay4KKyAgICBBU1NFUlQoY2FuVXNlSklUKTsKKyNlbmRpZgog
ICAgIGlmIChjYW5Vc2VKSVQpIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bjb2Rl
VGFibGUgPSBsbGludERhdGEtPm9wY29kZU1hcCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bU9wY29kZUlEczsgKytpKQorICAgICAgICAgICAgbV9vcGNvZGVJRFRhYmxlLmFkZCht
X29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworI2Vsc2UKICAgICAg
ICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0aW5hdGlvbnMg
Zm9yIG9wY29kZXMuCiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9w
Y29kZUlEczsgKytpKSB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlID0gYml0d2lzZV9jYXN0
PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpKTsKICAgICAgICAgICAgIG1fb3Bjb2Rl
VGFibGVbaV0gPSBvcGNvZGU7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0gZWxzZSB7CisjaWYg
RU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbmV3IE9wY29kZVtudW1PcGNv
ZGVJRHNdOworI2VuZGlmCiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRpYWxpemVBbmRSZXR1
cm4sIDAsIDApOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNv
ZGVJRHM7ICsraSkKQEAgLTU2Niw3ICs1OTIsNiBAQCB2b2lkIEludGVycHJldGVyOjppbml0aWFs
aXplKGJvb2wgY2FuVXNlCiAgICAgICAgIG1fZW5hYmxlZCA9IHRydWU7CiAgICAgfQogI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0oY2FuVXNlSklUKTsKICNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAg
ICAgbV9lbmFibGVkID0gdHJ1ZTsKICNlbHNlCkBAIC02NjcsOSArNjkyLDExIEBAIHZvaWQgSW50
ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW0KIAogYm9vbCBJbnRlcnByZXRlcjo6aXNP
cGNvZGUoT3Bjb2RlIG9wY29kZSkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBS
RVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExM
SU5UKQorI2lmICFFTkFCTEUoTExJTlQpCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgIHJl
dHVybiBvcGNvZGUgPj0gMCAmJiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVp
bnRwdHJfdD4ob3Bjb2RlKSkgPD0gb3BfZW5kOworI2VuZGlmCiAgICAgcmV0dXJuIG9wY29kZSAh
PSBIYXNoVHJhaXRzPE9wY29kZT46OmVtcHR5VmFsdWUoKQogICAgICAgICAmJiAhSGFzaFRyYWl0
czxPcGNvZGU+Ojppc0RlbGV0ZWRWYWx1ZShvcGNvZGUpCiAgICAgICAgICYmIG1fb3Bjb2RlSURU
YWJsZS5jb250YWlucyhvcGNvZGUpOwpAQCAtNzI2LDExICs3NTMsMTEgQEAgTkVWRVJfSU5MSU5F
IGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbAogICAgIC8vIGhhdmUgdG8gc3VidHJhY3QgMS4K
ICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgaWYgKGNhbGxlckZy
YW1lLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCkpCi0gICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0g
Y29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgICAg
ICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUs
IGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAgICAgZWxzZQogICAgICAgICBieXRlY29kZU9mZnNl
dCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAx
OwogI2VsaWYgRU5BQkxFKEpJVCkKLSAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0
ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9
IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJu
UEMoKSk7CiAjZWxzZQogICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9m
ZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZW5kaWYKQEAgLTMzMjcsNiArMzM1
NCw4IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAjaWYgVVNFKEdDQ19DT01QVVRFRF9HT1RPX1dP
UktBUk9VTkQpCiAgICAgICBza2lwX3B1dF9ieV9pZDoKICNlbmRpZgorICAgIERFRklORV9PUENP
REUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KQorICAgIERFRklORV9PUENPREUob3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKQogICAgIERFRklORV9PUENPREUob3BfcHV0X2J5
X2lkX3RyYW5zaXRpb24pIHsKICAgICAgICAgLyogb3BfcHV0X2J5X2lkX3RyYW5zaXRpb24gYmFz
ZShyKSBwcm9wZXJ0eShpZCkgdmFsdWUocikgb2xkU3RydWN0dXJlKHNJRCkgbmV3U3RydWN0dXJl
KHNJRCkgc3RydWN0dXJlQ2hhaW4oY2hhaW4pIG9mZnNldChuKSBkaXJlY3QoYikKICAgICAgICAg
IApAQCAtNTE2MCwxMCArNTE4OSwxMCBAQCB2b2lkIEludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RD
YWxsZXIoQ2FsCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRl
Y29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKTsKICNpZiBFTkFCTEUoSklUKQogICAg
IGVsc2UKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2Rl
T2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0g
Y2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5y
ZXR1cm5QQygpKTsKICNlbmRpZgogI2Vsc2UKLSAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNv
ZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRl
Y29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUs
IGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYKICAgICBsaW5lTnVtYmVyID0gY2FsbGVy
Q29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQgLSAx
KTsKICAgICBzb3VyY2VJRCA9IGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNv
dXJjZUlEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
SW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTA2ODM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAi
SlNPYmplY3QuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJPcGNvZGUuaCIK
ICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKIApAQCAtNDUsNiArNDYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3MgSlNGdW5jdGlv
bjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7
CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CkBAIC0xMDAsMTkgKzEwMiwyMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBDYWNoZWRDYWxsOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIHB1YmxpYzoKICAgICAgICAgSW50
ZXJwcmV0ZXIoKTsKKyAgICAgICAgfkludGVycHJldGVyKCk7CiAgICAgICAgIAotICAgICAgICB2
b2lkIGluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQpOworICAgICAgICB2b2lkIGluaXRpYWxpemUo
TExJbnQ6OkRhdGEqLCBib29sIGNhblVzZUpJVCk7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlJiBy
ZWdpc3RlckZpbGUoKSB7IHJldHVybiBtX3JlZ2lzdGVyRmlsZTsgfQogICAgICAgICAKICAgICAg
ICAgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCBpZCkKICAgICAgICAgewogICAgICAgICAgICAg
QVNTRVJUKG1faW5pdGlhbGl6ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJF
VEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJ
TlQpCiAgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVUYWJsZVtpZF07CiAjZWxzZQogICAgICAg
ICAgICAgcmV0dXJuIGlkOwpAQCAtMTIyLDcgKzEyNiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogICAg
ICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RP
X0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgICAgIEFTU0VSVChpc09w
Y29kZShvcGNvZGUpKTsKKyAgICAgICAgICAgIHJldHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9w
Y29kZSk7CisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAg
ICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKICAgICAgICAgICAgIGlmICghbV9lbmFibGVk
KQogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9j
YXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSk7CkBAIC0xMzIsNiArMTM5LDExIEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICAgICAgcmV0dXJuIG9wY29kZTsKICNlbmRpZgogICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBib29sIGVuYWJsZWQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gbV9lbmFibGVkOworICAgICAgICB9CiAKICAgICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUp
OwogCkBAIC0xOTksNyArMjExLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lz
dGVyRmlsZSBtX3JlZ2lzdGVyRmlsZTsKICAgICAgICAgCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dP
VE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBPcGNvZGUqIG1fb3Bj
b2RlVGFibGU7IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bjb2RlIGZvciBjb21waWxpbmcKKyAgICAg
ICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bj
b2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dP
VE9fSU5URVJQUkVURVIpCiAgICAgICAgIE9wY29kZSBtX29wY29kZVRhYmxlW251bU9wY29kZUlE
c107IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bjb2RlIGZvciBjb21waWxpbmcKICAgICAgICAgSGFz
aE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+
IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCShyZXZpc2lvbiAxMDY4MzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBDb25zZXJ2YXRpdmVSb290czsKICAgICBjbGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZSB7CiAgICAg
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlZ2lzdGVyRmlsZSk7CkBAIC04MSw2ICs4Miw4IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBn
cm93U2xvd0Nhc2UoUmVnaXN0ZXIqKTsKICAgICAgICAgdm9pZCByZWxlYXNlRXhjZXNzQ2FwYWNp
dHkoKTsKICAgICAgICAgdm9pZCBhZGRUb0NvbW1pdHRlZEJ5dGVDb3VudChsb25nKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1
cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgor
I2luY2x1ZGUgIklubGluZUFTTS5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAi
SlNWYWx1ZUlubGluZU1ldGhvZHMuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCisjaWYgQ09NUElMRVIoR0NDKQorCisjaWYgQ1BVKFg4Nl82NCkKK2FzbSAo
CisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitI
SURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJXIxMyksICVyMTNc
biIKKyAgICAibW92ICVyMTMsICVyZGlcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxP
Q0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2Vs
aWYgQ1BVKFg4NikKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4i
CitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1v
diAtNDAoJWVkaSksICVlZGlcbiIKKyAgICAibW92ICVlZGksIDQoJWVzcClcbiIKKyAgICAiam1w
ICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhl
Y1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpCithc20gKAorIi50ZXh0IiAi
XG4iCisiLmFsaWduIDIiICJcbiIKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJc
biIKKyIudGh1bWIiICJcbiIKKyIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiOiIgIlxuIgorICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKKyAgICAiY3B5IHIw
LCByNSIgIlxuIgorICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VuZGlmCisKK2V4dGVybiAiQyIg
RW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmICghZXhl
YykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUp
OworfQorCisjZW5kaWYgLy8gQ09NUElMRVIoR0NDKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVl
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0
dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEhvc3RDYWxsUmV0dXJuVmFs
dWVfaAorI2RlZmluZSBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKworI2luY2x1ZGUgIkpTVmFsdWUu
aCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KKworLy8gVW5mb3J0dW5hdGVseSB0aGlzIG9ubHkgd29ya3Mgb24gR0NDLWxpa2Ug
Y29tcGlsZXJzLiBBbmQgaXQncyBjdXJyZW50bHkgb25seSB1c2VkCisvLyBieSBMTEludCBhbmQg
REZHLCB3aGljaCBhbHNvIGFyZSByZXN0cmljdGVkIHRvIEdDQy1saWtlIGNvbXBpbGVycy4gV2Ug
c2hvdWxkCisvLyBwcm9iYWJseSBmaXggdGhhdCBhdCBzb21lIHBvaW50LgorI2lmIENPTVBJTEVS
KEdDQykKKworI2lmIENBTExJTkdfQ09OVkVOVElPTl9JU19TVERDQUxMCisjZGVmaW5lIEhPU1Rf
Q0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIENERUNMCisjZWxzZQorI2RlZmluZSBIT1NUX0NBTExf
UkVUVVJOX1ZBTFVFX09QVElPTgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0MgeworCitleHRlcm4g
IkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUoKTsKKworLy8gVGhpcyBpcyBhIHB1YmxpYyBkZWNsYXJhdGlvbiBvbmx5
IHRvIGNvbnZpbmNlIENMQU5HIG5vdCB0byBlbGlkZSBpdC4KK2V4dGVybiAiQyIgRW5jb2RlZEpT
VmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7CisKK2lubGluZSB2b2lkIGluaXRpYWxpemVIb3N0
Q2FsbFJldHVyblZhbHVlKCkKK3sKKyAgICBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNT
dGF0ZSgwKTsKK30KKworfQorCisjZWxzZSAvLyBDT01QSUxFUihHQ0MpCisKK25hbWVzcGFjZSBK
U0MgeworaW5saW5lIHZvaWQgaW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJuVmFsdWUoKSB7IH0KK30K
KworI2VuZGlmIC8vIENPTVBJTEVSKEdDQykKKworI2VuZGlmIC8vIEhvc3RDYWxsUmV0dXJuVmFs
dWVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMDY4MzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyNSw2ICszMjUsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAg
ICAgIERFRklORV9PUChvcF9wcm9maWxlX3dpbGxfY2FsbCkKICAgICAgICAgREVGSU5FX09QKG9w
X3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9zY29wZSkKKyAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5
X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2luZGV4KQogICAgICAgICBERUZJTkVf
T1Aob3BfcHV0X2J5X3ZhbCkKQEAgLTQ4Niw2ICs0ODgsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNv
bXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcG9zdF9pbmMp
CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVfZGVjKQogICAgICAgICBERUZJTkVf
U0xPV0NBU0VfT1Aob3BfcHJlX2luYykKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
OgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJ
TkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3Jlc29sdmVfZ2xvYmFsKQpAQCAtNTI1LDYgKzUyOSwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0
ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0
ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2spCiB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09T
UikKKyAgICBwcmludGYoIkNvbXBpbGluZyBKSVQgY29kZSFcbiIpOworI2VuZGlmCisgICAgCiAj
aWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogICAgIG1fY2FuQmVPcHRpbWl6ZWQgPSBtX2NvZGVC
bG9jay0+Y2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtNjg5LDggKzY5NywxMiBAQCBK
SVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAgICAgICAgIGluZm8uY2Fs
bFJldHVybkxvY2F0aW9uID0gbV9jb2RlQmxvY2stPnN0cnVjdHVyZVN0dWJJbmZvKG1fbWV0aG9k
Q2FsbENvbXBpbGF0aW9uSW5mb1tpXS5wcm9wZXJ0eUFjY2Vzc0luZGV4KS5jYWxsUmV0dXJuTG9j
YXRpb247CiAgICAgfQogCi0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgaWYgKG1fY2FuQmVPcHRp
bWl6ZWQpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQorICAgIGlmICht
X2NhbkJlT3B0aW1pemVkCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICB8fCB0cnVlCisjZW5k
aWYKKyAgICAgICAgKSB7CiAgICAgICAgIENvbXBhY3RKSVRDb2RlTWFwOjpFbmNvZGVyIGppdENv
ZGVNYXBFbmNvZGVyOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsg
Ynl0ZWNvZGVPZmZzZXQgPCBtX2xhYmVscy5zaXplKCk7ICsrYnl0ZWNvZGVPZmZzZXQpIHsKICAg
ICAgICAgICAgIGlmIChtX2xhYmVsc1tieXRlY29kZU9mZnNldF0uaXNTZXQoKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCShyZXZpc2lvbiAxMDY4MzQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSklUQ29kZSgpIHsgfQogI2VuZGlmCiAgICAg
cHVibGljOgotICAgICAgICBlbnVtIEpJVFR5cGUgeyBIb3N0Q2FsbFRodW5rLCBCYXNlbGluZUpJ
VCwgREZHSklUIH07CisgICAgICAgIGVudW0gSklUVHlwZSB7IE5vbmUsIEhvc3RDYWxsVGh1bmss
IEludGVycHJldGVyVGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsKICAgICAgICAgCiAgICAg
ICAgIHN0YXRpYyBKSVRUeXBlIGJvdHRvbVRpZXJKSVQoKQogICAgICAgICB7CkBAIC02Niw4ICs2
NiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBERkdKSVQ7CiAgICAg
ICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBib29sIGlzT3B0aW1pemluZ0pJVChKSVRU
eXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IERG
R0pJVDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3RhdGljIGJvb2wgaXNCYXNlbGlu
ZUNvZGUoSklUVHlwZSBqaXRUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaml0
VHlwZSA9PSBJbnRlcnByZXRlclRodW5rIHx8IGppdFR5cGUgPT0gQmFzZWxpbmVKSVQ7CisgICAg
ICAgIH0KKyAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgSklUQ29kZSgpCisgICAg
ICAgICAgICA6IG1faml0VHlwZShOb25lKQogICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNzUs
NiArODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIDogbV9yZWYocmVmKQogICAg
ICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKICAgICAgICAgeworICAgICAgICAgICAgQVNT
RVJUKGppdFR5cGUgIT0gTm9uZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wg
b3BlcmF0b3IgISgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERy
aXZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVy
LmgJKHJldmlzaW9uIDEwNjgzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJp
dmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE1ICszMywyMSBAQAogI2luY2x1ZGUgIkJ5dGVj
b2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCiAjaW5jbHVkZSAiSklULmgi
CisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVt
cGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KIGlubGluZSBib29sIGppdENvbXBpbGVJZkFw
cHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+
JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkK
IHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2Fs
bHMoKTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5
cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29t
cGlsZShnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUpOwpAQCAtNjIsOSArNjgs
MTQgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbAogCiBpbmxpbmUg
Ym9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRD
b2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVk
U3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewor
ICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygp
OworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9
PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxl
RnVuY3Rpb24oZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlLCBqaXRDb2RlV2l0
aEFyaXR5Q2hlY2spOwpAQCAtNzksNyArOTAsNiBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVu
Y3Rpb25JZkFwcHJvcHJpCiAgICAgICAgIH0KICAgICAgICAgaml0Q29kZSA9IEpJVDo6Y29tcGls
ZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCAmaml0Q29kZVdpdGhBcml0eUNoZWNrKTsK
ICAgICB9Ci0gICAgCiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVX
aXRoQXJpdHlDaGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEwNjgzNCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhyb3coSlNHbG9i
YWxEYQogCiBFeGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIFJldHVybkFk
ZHJlc3NQdHIgZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2Jh
bERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCkt
PmJ5dGVjb2RlT2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAgICByZXR1cm4gZ2VuZXJpY1Rocm93
KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJs
b2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1bHRMb2NhdGlvbikpOwogfQogCiB9
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24gMTA2
ODM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0NDYsNiArMTQ0Niw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9w
X3B1dF9ieV9pZF8KICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJhbWUtPmNvZGVCbG9j
aygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0ZyYW1l
LmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7Cisg
ICAgCiAgICAgYXNPYmplY3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGNhbGxGcmFtZS0+Z2xvYmFs
RGF0YSgpLCBpZGVudCwgc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwgc2xvdCk7CiAgICAg
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29kZUJs
b2NrKCk7CkBAIC0xOTMxLDcgKzE5MzIsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBv
cHRpbWl6ZV9mcm9tCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNrRnJhbWUuYXJn
c1swXS5pbnQzMigpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBwcmludGYo
IkVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVv
cHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0g
JXVcbiIsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGlt
aXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRl
cigpKTsKKyAgICBwcmludGYoIiVwOiBFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4
ZWN1dGVDb3VudGVyID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGlt
aXphdGlvbkRlbGF5Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+aml0RXhl
Y3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBj
b2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAgaWYg
KGNvZGVCbG9jay0+aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewpAQCAtMjE4Niw0NSArMjE4
NywxMyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotaW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgUmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKLXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNh
bGxGcmFtZS0+Y2FsbGVlKCkpOwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigp
KTsKLSAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgp
LT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAg
ICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJp
byBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lz
dGVyRmlsZS0+Z3JvdyhjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBu
ZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50
cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3Npbmcg
YXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9j
ay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVn
aXN0ZXIqIHNyYyA9IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9
IGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGludCBl
bmQgPSAtQ2FsbEZyYW1lOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwot
ICAgIGZvciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07
Ci0KLSAgICBlbmQgLT0gZGVsdGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAgICAg
ICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUg
PSBDYWxsRnJhbWU6OmNyZWF0ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1l
IDw9IHJlZ2lzdGVyRmlsZS0+ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0K
IERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAg
U1RVQl9JTklUX1NUQUNLX0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZy
YW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBD
b2RlRm9yQ2FsbCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0
aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29k
ZUZvckNhbGwpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dF
eGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVU
VVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZy
YW1lKCkpKTsKIApAQCAtMjIzNyw3ICsyMjA2LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9p
ZCosIG9wX2NvbnN0cnVjdAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1l
LmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0Zv
cihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsK
KyAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVj
a0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0
KTsKICAgICBpZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9u
RnJvbU9wQ2FsbDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERS
RVNTLCBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7
CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJl
dmlzaW9uIDEwNjgzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VK
SVQuaAkod29ya2luZyBjb3B5KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgSlNJbnRlcmZh
Y2VKSVRfaAogI2RlZmluZSBKU0ludGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNv
bnZlbnRpb25zLmgiCiAjaW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgi
CisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAi
TWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBMTEludENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworI2RlZmlu
ZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lORyAwCisjZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFDSU5H
IDAKKyNkZWZpbmUgTExJTlRfQUxXQVlTX0FMTE9DQVRFX1NMT1cgMAorCisjZW5kaWYgLy8gTExJ
bnRDb21tb25faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERh
dGEuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJMTEludERhdGEuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkluc3RydWN0
aW9uLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wY29k
ZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworRGF0YTo6RGF0YSgp
CisgICAgOiBtX2V4Y2VwdGlvbkluc3RydWN0aW9ucyhuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2Rl
TGVuZ3RoICsgMV0pCisgICAgLCBtX29wY29kZU1hcChuZXcgT3Bjb2RlW251bU9wY29kZUlEc10p
Cit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyArK2kpCisg
ICAgICAgIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9IGJpdHdpc2VfY2Fz
dDx2b2lkKj4oJmxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xpbmUpOworI2RlZmluZSBP
UENPREVfRU5UUlkob3Bjb2RlLCBsZW5ndGgpIG1fb3Bjb2RlTWFwW29wY29kZV0gPSBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZsbGludF8jI29wY29kZSk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKE9Q
Q09ERV9FTlRSWSk7CisjdW5kZWYgT1BDT0RFX0VOVFJZCit9CisKK0RhdGE6On5EYXRhKCkKK3sK
KyAgICBkZWxldGVbXSBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBkZWxldGVbXSBtX29w
Y29kZU1hcDsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBF
TkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5o
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnREYXRhX2gKKyNkZWZpbmUgTExJbnRE
YXRhX2gKKworI2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgor
CituYW1lc3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJ
bnQgeworCisjaWYgRU5BQkxFKExMSU5UKQorY2xhc3MgRGF0YSB7CitwdWJsaWM6CisgICAgRGF0
YSgpOworICAgIH5EYXRhKCk7CisgICAgCisgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3Ry
dWN0aW9ucygpCisgICAgeworICAgICAgICByZXR1cm4gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7
CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX29wY29kZU1hcDsKKyAgICB9Citwcml2YXRlOgorICAgIEluc3RydWN0aW9uKiBtX2V4
Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBPcGNvZGUqIG1fb3Bjb2RlTWFwOworfTsKKyNlbHNl
IC8vIEVOQUJMRShMTElOVCkKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBk
aWFnbm9zdGljIHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Np
bmctbm9yZXR1cm4iCisjZW5kaWYKKworY2xhc3MgRGF0YSB7CitwdWJsaWM6CisgICAgSW5zdHJ1
Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAorICAgIE9wY29kZSog
b3Bjb2RlTWFwKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9Cit9OworCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludERhdGFfaAorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50
cnlwb2ludHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNs
dWRlICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiTExJ
bnRUaHVua3MuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFj
ZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSklU
Q29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0eUNoZWNrKQoreworICAg
IGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBpZiAoa2luZCA9PSBDb2Rl
Rm9yQ2FsbCkgeworICAgICAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihN
YWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxf
cHJvbG9ndWUpKSkpOworICAgICAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29k
ZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9j
aGVjaykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJU
KGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpI
b3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVS
ZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpKSkpOworICAgICAgICBhcml0eUNoZWNrID0gTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAK
KyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29k
ZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRv
ciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgICAgICBhcml0eUNoZWNrID0gZ2xv
YmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRv
cikuY29kZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0g
Q29kZUZvckNvbnN0cnVjdCk7CisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRD
VElTdHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspOworICAgIGFyaXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0
dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsK
K30KKwordm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJ
VENvZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7Cisg
ICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X2V2YWxfcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1
YihldmFsRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOwor
fQorCit2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsK
KyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkpKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRD
VElTdHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJU
aHVuayk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5B
QkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlw
b2ludHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
bnRyeXBvaW50cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RW50
cnlwb2ludHNfaAorI2RlZmluZSBMTEludEVudHJ5cG9pbnRzX2gKKworI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXZhbENvZGVCbG9jazsK
K2NsYXNzIEpJVENvZGU7CitjbGFzcyBKU0dsb2JhbERhdGE7CitjbGFzcyBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHI7CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CitjbGFzcyBQcm9ncmFtQ29k
ZUJsb2NrOworCituYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2lu
dChKU0dsb2JhbERhdGEmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBKSVRDb2RlJiwgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyJiBhcml0eUNoZWNrKTsKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNH
bG9iYWxEYXRhJiwgSklUQ29kZSYpOwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2Jh
bERhdGEmLCBKSVRDb2RlJik7CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhLCBFdmFsQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAg
ICBnZXRFdmFsRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworaW5saW5lIHZv
aWQgZ2V0RW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb2dyYW1Db2RlQmxv
Y2sqLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGdldFByb2dyYW1FbnRyeXBvaW50KGdsb2Jh
bERhdGEsIGppdENvZGUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2Vu
ZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50RW50cnlwb2ludHNfaApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRp
b25zLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTExJbnRFeGNlcHRpb25zLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJD
YWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnN0cnVjdGlv
bi5oIgorI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMTEludENvbW1vbi5o
IgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5h
bWVzcGFjZSBMTEludCB7CisKK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFs
RGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBl
eGNlcHRpb24gJXMuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7Cisj
ZW5kaWYKKyAgICBnZW5lcmljVGhyb3coCisgICAgICAgIGdsb2JhbERhdGEsIGV4ZWMtPmNhbGxl
ckZyYW1lKCksIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwKKyAgICAgICAgZXhlYy0+Y2FsbGVyRnJh
bWUoKS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGV4ZWMtPmNhbGxlckZyYW1lKCksIGV4
ZWMtPnJldHVyblBDKCkpKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3dGb3JUaHJv
d25FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBleGVjLT5nbG9iYWxE
YXRhKCkubGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworfQorCitJbnN0cnVjdGlv
biogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAg
ICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExM
SU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKHJl
dHVyblRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOwor
I2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4
Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7
CisgICAgCisgICAgcmV0dXJuIGdsb2JhbERhdGEtPmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVj
dGlvbnMoKTsKK30KKwordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVj
dGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2Jh
bERhdGEoKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiVGhyb3dpbmcg
ZXhjZXB0aW9uICVzIChjYWxsVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVz
Y3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywg
Z2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpKTsKKyAgICAKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxp
bnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIExMSW50RXhjZXB0aW9uc19oCisjZGVmaW5lIExMSW50RXhjZXB0aW9u
c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBF
eGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKKy8v
IFRocm93IHRoZSBjdXJyZW50bHkgYWN0aXZlIGV4Y2VwdGlvbiBpbiB0aGUgY29udGV4dCBvZiB0
aGUgY2FsbGVyJ3MgY2FsbCBmcmFtZS4KK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKEV4
ZWNTdGF0ZSopOworCisvLyBUZWxscyB5b3Ugd2hlcmUgdG8ganVtcCB0byBpZiB5b3Ugd2FudCB0
byByZXR1cm4tdG8tdGhyb3csIGFmdGVyIHlvdSd2ZSBhbHJlYWR5CisvLyBzZXQgdXAgYWxsIGlu
Zm9ybWF0aW9uIG5lZWRlZCB0byB0aHJvdyB0aGUgZXhjZXB0aW9uLgorSW5zdHJ1Y3Rpb24qIHJl
dHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0YXRlKik7CisKKy8vIFNhdmVzIHRo
ZSBjdXJyZW50IFBDIGluIHRoZSBnbG9iYWwgZGF0YSBmb3Igc2FmZS1rZWVwaW5nLCBhbmQgZ2l2
ZXMgeW91IGEgUEMKKy8vIHRoYXQgeW91IGNhbiB0ZWxsIHRoZSBpbnRlcnByZXRlciB0byBnbyB0
bywgd2hpY2ggd2hlbiBhZHZhbmNlZCBiZXR3ZWVuIDEKKy8vIGFuZCA5IHNsb3RzIHdpbGwgZ2l2
ZSB5b3UgYW4gImluc3RydWN0aW9uIiB0aGF0IHRocmVhZHMgdG8gdGhlIGludGVycHJldGVyJ3MK
Ky8vIGV4Y2VwdGlvbiBoYW5kbGVyLiBOb3RlIHRoYXQgaWYgeW91IGdpdmUgaXQgdGhlIFBDIGZv
ciBleGNlcHRpb24gaGFuZGxpbmcsCisvLyBpdCdzIHNtYXJ0IGVub3VnaCB0byBqdXN0IHJldHVy
biB0aGF0IFBDIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxzZTsgdGhpcworLy8gbGV0cyB5b3Ug
dGhyZWFkIGV4Y2VwdGlvbiBoYW5kbGluZyB0aHJvdWdoIGNvbW1vbiBoZWxwZXIgZnVuY3Rpb25z
IHVzZWQgYnkKKy8vIG90aGVyIGhlbHBlcnMuCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhF
eGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOworCisvLyBVc2UgdGhpcyB3aGVuIHlvdSdyZSB0aHJv
d2luZyB0byBhIGNhbGwgdGh1bmsuCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqLCBJbnN0
cnVjdGlvbiopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVO
QUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50RXhjZXB0aW9uc19oCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRIZWxwZXJzLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE1NDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50SGVs
cGVycy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisj
aW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCisjaW5j
bHVkZSAiR2V0dGVyU2V0dGVyLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgor
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiSklU
RHJpdmVyLmgiCisjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNCeXRlQXJy
YXkuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0Lmgi
CisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAi
TExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJM
b3dMZXZlbEludGVycHJldGVyLmgiCisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworI2RlZmluZSBMTElOVF9CRUdJTigpIE5hdGl2
ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJmV4ZWMtPmdsb2JhbERhdGEoKSwgZXhlYykKKworI2Rl
ZmluZSBMTElOVF9PUChpbmRleCkgKGV4ZWMtPnVuY2hlY2tlZFIocGNbaW5kZXhdLnUub3BlcmFu
ZCkpCisjZGVmaW5lIExMSU5UX09QX0MoaW5kZXgpIChleGVjLT5yKHBjW2luZGV4XS51Lm9wZXJh
bmQpKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9UV08oZmlyc3QsIHNlY29uZCkgZG8geyAgICAg
ICBcCisgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICAgICAgdm9pZCogYTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICAgICAgdm9pZCogYjsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
ICAgICB9IHBhaXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICBpbnQ2NF90IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gX19y
dF91OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5w
YWlyLmEgPSBmaXJzdDsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIF9fcnRfdS5wYWly
LmIgPSBzZWNvbmQ7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiBfX3J0X3Uu
aTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNk
ZWZpbmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9SRVRVUk5fVFdPKHBjLCBleGVjKQorCisjZGVm
aW5lIExMSU5UX1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYgX190X2dsb2JhbERhdGEgPSBleGVjLT5nbG9i
YWxEYXRhKCk7ICAgICAgICBcCisgICAgICAgIF9fdF9nbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IChl
eGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICBcCisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJv
dyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5U
X0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCkgZG8g
eyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoZXhlYy0+Z2xvYmFs
RGF0YSgpLmV4Y2VwdGlvbikpIHsgICBcCisgICAgICAgICAgICBwYyA9IHJldHVyblRvVGhyb3co
ZXhlYywgcGMpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5UX0VORF9JTVBMKCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNk
ZWZpbmUgTExJTlRfRU5EKCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRf
RU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkK
KworI2RlZmluZSBMTElOVF9CUkFOQ0gob3Bjb2RlLCBjb25kaXRpb24pIGRvIHsgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBib29sIF9fYl9jb25kaXRpb24gPSAoY29uZGl0aW9uKTsg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoX19iX2Nv
bmRpdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICAgICAgcGMgKz0gcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5vcGVyYW5kOyAgICAg
ICAgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcGNvZGUp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZh
bHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTih2YWx1ZSkgZG8geyAgICAgICAgICAgICAgICBc
CisgICAgICAgIEpTVmFsdWUgX19yX3JldHVyblZhbHVlID0gKHZhbHVlKTsgICAgICBcCisgICAg
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExM
SU5UX09QKDEpID0gX19yX3JldHVyblZhbHVlOyAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VO
RF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
KyNkZWZpbmUgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wY29kZSwgdmFsdWUpIGRvIHsgICAgICAg
ICAgICAgICBcCisgICAgICAgIEpTVmFsdWUgX19ycF9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfT1AoMSkgPSBfX3Jw
X3JldHVyblZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHBjW09QQ09E
RV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBdID0gXAorICAgICAg
ICAgICAgSlNWYWx1ZTo6ZW5jb2RlKF9fcnBfcmV0dXJuVmFsdWUpOyAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9F
TkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0KSBMTElOVF9SRVRVUk5fVFdPKChjYWxsVGFyZ2V0KSwg
KGV4ZWMpKQorCisjZGVmaW5lIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMsIGV4Y2VwdGlvblRv
VGhyb3cpIGRvIHsgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jdF9leGVj
ID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIElu
c3RydWN0aW9uKiBfX2N0X3BjID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIEpTR2xvYmFsRGF0YSYgX19jdF9nbG9iYWxEYXRhID0gKF9fY3RfZXhl
YyktPmdsb2JhbERhdGEoKTsgICAgICBcCisgICAgICAgIF9fY3RfZ2xvYmFsRGF0YS5leGNlcHRp
b24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5U
X0NBTExfRU5EX0lNUEwoX19jdF9leGVjLCBjYWxsVG9UaHJvdyhfX2N0X2V4ZWMsIF9fY3RfcGMp
KTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfQ0hFQ0tfRVhD
RVBUSU9OKGV4ZWMsIHBjKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEV4
ZWNTdGF0ZSogX19jY2VfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2NjZV9wYyA9IChwYyk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VMWShfX2NjZV9leGVj
LT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBM
TElOVF9DQUxMX0VORF9JTVBMKF9fY2NlX2V4ZWMsIGNhbGxUb1Rocm93KF9fY2NlX2V4ZWMsIF9f
Y2NlX3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX1JF
VFVSTihleGVjLCBwYywgY2FsbFRhcmdldCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBFeGVjU3RhdGUqIF9fY3JfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jcl9wYyA9IChwYyk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2b2lkKiBfX2NyX2NhbGxU
YXJnZXQgPSAoY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihfX2NyX2V4ZWMtPmNhbGxlckZyYW1lKCksIF9f
Y3JfcGMpOyAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3JfZXhlYywgX19jcl9j
YWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCitleHRl
cm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqIGV4
ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCit7CisgICAg
cHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDog
JWRcbiIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAor
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5p
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICBmcm9t
V2hlcmUsCisgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3Bl
cmFuZCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlw
ZSBsbGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50
IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCit7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09Q
X0Mob3BlcmFuZCkuanNWYWx1ZSgpOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAg
ICAgICAgICAgIHVpbnQzMl90IHRhZzsKKyAgICAgICAgICAgIHVpbnQzMl90IHBheWxvYWQ7Cisg
ICAgICAgIH0gYml0czsKKyAgICAgICAgRW5jb2RlZEpTVmFsdWUgYXNWYWx1ZTsKKyAgICB9IHU7
CisgICAgdS5hc1ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICBwcmludGYoIiVw
IC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZDogJTA4eDol
MDh4IiwKKyAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisg
ICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisgICAgICAgICAgIGZyb21X
aGVyZSwKKyAgICAgICAgICAgb3BlcmFuZCwKKyAgICAgICAgICAgcGNbb3BlcmFuZF0udS5vcGVy
YW5kLAorICAgICAgICAgICB1LmJpdHMudGFnLAorICAgICAgICAgICB1LmJpdHMucGF5bG9hZCk7
CisjaWZuZGVmIE5ERUJVRworICAgIHByaW50ZigiOiAlcyIsIHZhbHVlLmRlc2NyaXB0aW9uKCkp
OworI2VuZGlmCisgICAgcHJpbnRmKCJcbiIpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGlu
IHByb2xvZ3VlLlxuIiwgZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMpOworICAgIExMSU5UX0VORCgp
OworfQorCitzdGF0aWMgdm9pZCB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBjaGFyKiBjb21tZW50LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7Cisg
ICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAg
RnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9ICZleGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29k
ZUZvcihraW5kKTsKKyAgICBwcmludGYoIiVwIC8gJXA6IGluICVzIG9mIGZ1bmN0aW9uICVwLCBl
eGVjdXRhYmxlICVwOyBudW1WYXJzID0gJXUsIG51bVBhcmFtZXRlcnMgPSAldSwgbnVtQ2FsbGVl
UmVnaXN0ZXJzID0gJXUuXG4iLAorICAgICAgICAgICBjb2RlQmxvY2ssIGV4ZWMsIGNvbW1lbnQs
IGNhbGxlZSwgZXhlY3V0YWJsZSwKKyAgICAgICAgICAgY29kZUJsb2NrLT5tX251bVZhcnMsIGNv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJz
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2Nh
bGwpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIHByb2xvZ3VlIiwg
Q29kZUZvckNhbGwpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0
cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rp
b25Qcm9sb2d1ZShleGVjLCAiY29uc3RydWN0IHByb2xvZ3VlIiwgQ29kZUZvckNvbnN0cnVjdCk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hl
Y2tfZm9yX2NhbGwpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIGFy
aXR5IGNoZWNrIiwgQ29kZUZvckNhbGwpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9I
RUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgdHJhY2VG
dW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjb25zdHJ1Y3QgYXJpdHkgY2hlY2siLCBDb2RlRm9yQ29u
c3RydWN0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2Up
Cit7CisgICAgcHJpbnRmKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCAiLAorICAgICAgICAg
ICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJl
Z2luKCkpKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgcHJpbnRmKCIlcywgIiwgb3Bjb2RlTmFtZXNb
ZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29k
ZSldKTsKKyNlbHNlCisgICAgcHJpbnRmKCJvcCMldSwgIiwgZXhlYy0+Z2xvYmFsRGF0YSgpLmlu
dGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSkpOworI2VuZGlmCisgICAgcHJp
bnRmKCJzY29wZSAlcFxuIiwgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBMTElOVF9FTkQoKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woc3BlY2lhbF90cmFjZSkKK3sKKyAgICBwcmludGYoIiVw
IC8gJXA6IGV4ZWN1dGluZyBzcGVjaWFsIGNhc2UgYmMjJXp1LCBvcCMldSwgcmV0dXJuIFBDIGlz
ICVwXG4iLAorICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgZXhlYywK
KyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCkt
Pmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCku
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgZXhl
Yy0+cmV0dXJuUEMoKS52YWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworaW5saW5lIGJv
b2wgc2hvdWxkSklUKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBZb3UgY2FuIG1vZGlmeSB0
aGlzIHRvIHR1cm4gb2ZmIEpJVHRpbmcgd2l0aG91dCByZWJ1aWxkaW5nIHRoZSB3b3JsZC4KKyAg
ICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpOworfQorCitlbnVtIEVudHJ5
S2luZCB7IFByb2xvZ3VlLCBBcml0eUNoZWNrIH07CitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBl
bnRyeU9TUihFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2Rl
QmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUsIEVudHJ5S2luZCBraW5kKQoreworI2lmIEVOQUJMRShK
SVRfVkVSQk9TRV9PU1IpCisgICAgcHJpbnRmKCIlcDogRW50ZXJlZCAlcyB3aXRoIGV4ZWN1dGVD
b3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywgbmFtZSwgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVD
b3VudGVyKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAg
ICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVU
VVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUo
ZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAg
ICAgIHByaW50ZigiICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgor
ICAgIH0KKyAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAgICBpZiAoa2luZCA9PSBQcm9sb2d1
ZSkKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVj
dXRhYmxlQWRkcmVzc0F0T2Zmc2V0KDApLCBleGVjKTsKKyAgICBBU1NFUlQoa2luZCA9PSBBcml0
eUNoZWNrKTsKKyAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+Z2V0SklUQ29kZVdpdGhB
cml0eUNoZWNrKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGVudHJ5X29zcikKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsIGV4ZWMt
PmNvZGVCbG9jaygpLCAiZW50cnlfb3NyIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwpCit7CisgICAgcmV0dXJuIGVudHJ5T1NS
KGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5n
ZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ2FsbCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9y
X2NhbGwiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY29uc3RydWN0KQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFz
RnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNv
ZGVGb3IoQ29kZUZvckNvbnN0cnVjdCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dCIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAm
YXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRl
Y29kZUZvcihDb2RlRm9yQ2FsbCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlD
aGVjayIsIEFyaXR5Q2hlY2spOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihl
eGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2Vu
ZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNvbnN0cnVjdCksICJlbnRyeV9vc3JfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrIiwgQXJpdHlDaGVjayk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGxvb3Bfb3NyKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CisgICAgCisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYo
IiVwOiBFbnRlcmVkIGxvb3Bfb3NyIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJs
b2NrLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAg
ICBpZiAoIXNob3VsZEpJVChleGVjKSkgeworICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0
aW1lU29vbigpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAg
ICAKKyAgICBpZiAoIWNvZGVCbG9jay0+aml0Q29tcGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7
CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3
YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlmCisgICAgfQorICAgIGNvZGVCbG9jay0+
aml0U29vbigpOworICAgIAorICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBK
SVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgCisgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGlu
ZU9mZnNldD4gbWFwOworICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgpLT5kZWNvZGUobWFwKTsK
KyAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcgPSBiaW5hcnlTZWFyY2g8Qnl0
ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25lZCwgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0
OjpnZXRCeXRlY29kZUluZGV4PihtYXAuYmVnaW4oKSwgbWFwLnNpemUoKSwgcGMgLSBjb2RlQmxv
Y2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIEFTU0VSVChtYXBwaW5nKTsKKyAgICBB
U1NFUlQobWFwcGluZy0+bV9ieXRlY29kZUluZGV4ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihw
YyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSkpOworICAgIAorICAgIHZvaWQq
IGp1bXBUYXJnZXQgPSBjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0
T2Zmc2V0KG1hcHBpbmctPm1fbWFjaGluZUNvZGVPZmZzZXQpOworICAgIEFTU0VSVChqdW1wVGFy
Z2V0KTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk5fVFdPKGp1bXBUYXJnZXQsIGV4ZWMpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgCisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikK
KyAgICBwcmludGYoIiVwOiBFbnRlcmVkIHJlcGxhY2Ugd2l0aCBleGVjdXRlQ291bnRlciA9ICVk
XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRp
ZgorICAgIAorICAgIGlmIChzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgaWYgKCFjb2RlQmxv
Y2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVS
Qk9TRV9PU1IpCisgICAgICAgICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBp
bGVkLlxuIik7CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBjb2RlQmxvY2stPmppdFNvb24o
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9j
aGVjaykKK3sKKyAgICBMTElOVF9CRUdJTigpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisg
ICAgcHJpbnRmKCJDaGVja2luZyBzdGFjayBoZWlnaHQgd2l0aCBleGVjID0gJXAuXG4iLCBleGVj
KTsKKyAgICBwcmludGYoIkNvZGVCbG9jayA9ICVwLlxuIiwgZXhlYy0+Y29kZUJsb2NrKCkpOwor
ICAgIHByaW50ZigiTnVtIGNhbGxlZSByZWdpc3RlcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9j
aygpLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgcHJpbnRmKCJOdW0gdmFycyA9ICV1Llxu
IiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtVmFycyk7CisgICAgcHJpbnRmKCJDdXJyZW50IGVu
ZCBpcyBhdCAlcC5cbiIsIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJG
aWxlKCkuZW5kKCkpOworI2VuZGlmCisgICAgQVNTRVJUKCZleGVjLT5yZWdpc3RlcnMoKVtleGVj
LT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnNdID4gZXhlYy0+Z2xvYmFsRGF0YSgp
LmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5lbmQoKSk7CisgICAgaWYgKFVOTElLRUxZKCFl
eGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmdyb3coJmV4ZWMt
PnJlZ2lzdGVycygpW2V4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVyc10pKSkg
eworICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xv
YmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAg
ICAgICAgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMpOworICAgICAgICBwYyA9IHJldHVy
blRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oZXhlYyk7CisgICAgfQorICAgIExMSU5UX0VORF9J
TVBMKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93
UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRl
ci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDYWxsKTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAg
ICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAg
IGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RX
TyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsK
KyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNr
Rm9yKGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgp
LCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9
IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRp
b24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVy
VGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nh
c3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKKyAgICB9CisgICAg
TExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NyZWF0ZV9hY3RpdmF0aW9uKQoreworICAgIExMSU5UX0JFR0lOKCk7CisjaWYgTExJTlRf
SEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIkNyZWF0aW5nIGFuIGFjdGl2YXRpb24sIGV4ZWMg
PSAlcCFcbiIsIGV4ZWMpOworI2VuZGlmCisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0g
SlNBY3RpdmF0aW9uOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLCBzdGF0aWNfY2Fz
dDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxl
KCkpKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChh
Y3RpdmF0aW9uKSk7CisgICAgTExJTlRfUkVUVVJOKEpTVmFsdWUoYWN0aXZhdGlvbikpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1bWVudHM6OmNy
ZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFuZCkgPSBhcmd1bWVudHM7
CisgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMV0u
dS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7Cisg
ICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0
YTsKKyAgICBBU1NFUlQoY29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERh
dGEoY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7CisjZW5k
aWYKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBKU1ZhbHVlIHByb3RvID0g
TExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmIChwcm90by5pc09iamVjdCgpKQorICAgICAg
ICBzdHJ1Y3R1cmUgPSBhc09iamVjdChwcm90byktPmluaGVyaXRvcklEKGV4ZWMtPmdsb2JhbERh
dGEoKSk7CisgICAgZWxzZQorICAgICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c2NvcGUo
KS0+Z2xvYmFsT2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpOworICAgIAorICAgIExMSU5U
X1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcykKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIEpTVmFsdWUgdjEgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHYx
LmlzUHJpbWl0aXZlKCkpOworICAgIExMSU5UX1JFVFVSTih2MS50b1RoaXNPYmplY3QoZXhlYykp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVjdCkKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgYml0d2lzZV9j
YXN0PEpTVmFsdWUqPigmTExJTlRfT1AoMikpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgZXhlYy0+Y29kZUJs
b2NrKCktPmNvbnN0YW50QnVmZmVyKHBjWzJdLnUub3BlcmFuZCksIHBjWzNdLnUub3BlcmFuZCkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCkKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlZ2V4
cChwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCisgICAgICAg
IExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIGZsYWcgc3VwcGxp
ZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2Jq
ZWN0OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJlZ0V4
cCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9Cb29sZWFuKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lcSkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1
ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6ZXF1YWwo
ZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OnN0cmljdEVxdWFs
KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3RlcSkKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OnN0cmljdEVx
dWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVlPihleGVjLCBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBM
TElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
UkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHJlX2luYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKyAxKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDEpLmpzVmFsdWUoKS50b051
bWJlcihleGVjKSAtIDEpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5j
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJl
c3VsdCArIDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsK
KyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCAtIDEpOworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pz
bnVtYmVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVy
KExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIoLUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSB2MiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorI2lmIExMSU5UX0hFTFBF
Ul9UUkFDSU5HCisgICAgcHJpbnRmKCJUcnlpbmcgdG8gYWRkICVzIiwgdjEuZGVzY3JpcHRpb24o
KSk7CisgICAgcHJpbnRmKCIgdG8gJXMuXG4iLCB2Mi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgor
ICAgIAorICAgIGlmICh2MS5pc1N0cmluZygpICYmICF2Mi5pc09iamVjdCgpKQorICAgICAgICBM
TElOVF9SRVRVUk4oanNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEpLCB2Mi50b1N0cmluZyhleGVj
KSkpOworICAgIAorICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCisgICAg
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcih2MS5hc051bWJlcigpICsgdjIuYXNOdW1iZXIoKSkp
OworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0FkZFNsb3dDYXNlKGV4ZWMsIHYxLCB2MikpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVt
YmVyKGV4ZWMpICogTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1YikKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJl
cihleGVjKSAtIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIo
ZXhlYykgLyBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1i
ZXIoZXhlYyksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50
MzIoZXhlYykgPDwgKExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpICYgMzEp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9JbnQzMihleGVjKSA+PiAoTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhl
YykgJiAzMSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Vyc2hpZnQpCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykgPj4gKExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRv
VUludDMyKGV4ZWMpICYgMzEpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRh
bmQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSAmIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG9y
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgfCBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3Ip
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSBeIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcih+TExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
SlNWYWx1ZSBiYXNlVmFsID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisjaWZuZGVmIE5ERUJV
RworICAgIFR5cGVJbmZvIHR5cGVJbmZvKFVuc3BlY2lmaWVkVHlwZSk7CisgICAgQVNTRVJUKCFi
YXNlVmFsLmlzT2JqZWN0KCkKKyAgICAgICAgICAgfHwgISh0eXBlSW5mbyA9IGFzT2JqZWN0KGJh
c2VWYWwpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKSkuaW1wbGVtZW50c0hhc0luc3RhbmNlKCkp
OworI2VuZGlmCisgICAgTExJTlRfVEhST1coY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoZXhlYywg
Imluc3RhbmNlb2YiLCBiYXNlVmFsKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
bnN0YW5jZW9mKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3coZXhlYywgTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQpLmpzVmFs
dWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5cGVvZikKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc1R5cGVTdHJpbmdGb3JWYWx1ZShleGVj
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaXNfdW5kZWZpbmVkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2ID0g
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbih2Lmlz
Q2VsbCgpID8gdi5hc0NlbGwoKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCkubWFzcXVlcmFkZXNB
c1VuZGVmaW5lZCgpIDogdi5pc1VuZGVmaW5lZCgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9pc19ib29sZWFuKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS5pc0Jvb2xlYW4oKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS5p
c051bWJlcigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19zdHJpbmcpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGlzSlNTdHJp
bmcoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9pc19vYmplY3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKGpzSXNPYmplY3RUeXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUoTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbikK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9u
U2xvd1BhdGhzOjpvcEluKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmUp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVz
b2x2ZSwgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCkt
PmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcmVzb2x2ZV9za2lwKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVU
VVJOX1BST0ZJTEVEKAorICAgICAgICBvcF9yZXNvbHZlX3NraXAsCisgICAgICAgIENvbW1vblNs
b3dQYXRoczo6b3BSZXNvbHZlU2tpcCgKKyAgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgICBl
eGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAgICAgICAg
ICAgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlIHJlc29sdmVHbG9iYWwo
RXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgQ29kZUJsb2NrKiBjb2Rl
QmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBBU1NFUlQoZ2xvYmFsT2JqZWN0
LT5pc0dsb2JhbE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkgPSBwY1syXS51Lm9wZXJhbmQ7
CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVyZS5nZXQoKTsKKyAg
ICAKKyAgICBBU1NFUlRfVU5VU0VEKHN0cnVjdHVyZSwgc3RydWN0dXJlICE9IGdsb2JhbE9iamVj
dC0+c3RydWN0dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2Nr
LT5pZGVudGlmaWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxPYmpl
Y3QpOworICAgIAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBp
ZGVudCwgc2xvdCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVlKGV4
ZWMsIGlkZW50KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmICFnbG9i
YWxPYmplY3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAg
ICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAgICBw
Y1szXS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgp
LCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgp
KTsKKyAgICAgICAgICAgIHBjWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgZXhlYy0+
Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3IoZXhl
YywgaWRlbnQpOworICAgIHJldHVybiBKU1ZhbHVlKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9yZXNvbHZlX2dsb2JhbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5U
X1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbCwgcmVzb2x2ZUdsb2JhbChleGVjLCBw
YykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1p
YykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9y
ZXNvbHZlX2dsb2JhbF9keW5hbWljLCByZXNvbHZlR2xvYmFsKGV4ZWMsIHBjKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWlj
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jl
c29sdmVfZ2xvYmFsX2R5bmFtaWMsIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMsIGV4
ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIo
cGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAocGNbM10udS5vcGVyYW5kKSB7CisgICAgICAgIEpT
VmFsdWUgYmFzZSA9IEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hh
aW4oKSwgdHJ1ZSk7CisgICAgICAgIGlmICghYmFzZSkKKyAgICAgICAgICAgIExMSU5UX1RIUk9X
KGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmlu
ZygpKSk7CisgICAgICAgIExMSU5UX1JFVFVSTihiYXNlKTsKKyAgICB9CisgICAgCisgICAgTExJ
TlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfYmFzZSwgSlNDOjpyZXNvbHZlQmFzZShleGVj
LCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkp
OworICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQg
PSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIGlm
ICghb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3QpKQorICAgICAgICBM
TElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlk
ZW50LnVzdHJpbmcoKSkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBK
U1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aEJhc2UoZXhlYywg
ZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1Ao
MSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVz
dWx0OworICAgIC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcsIGJ1
dCB3ZSBkb24ndCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQ
YXRoczo6b3BSZXNvbHZlV2l0aFRoaXMoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZp
ZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0OworICAgIC8vIEZJWE1FOiB0ZWNobmlj
YWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcsIGJ1dCB3ZSBkb24ndCBkbyBpdCBiZWNhdXNlIHRo
ZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZ2V0X2J5X2lkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVu
dCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgUHJvcGVydHlTbG90IHNs
b3QoYmFzZVZhbHVlKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChleGVj
LCBpZGVudCwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRf
T1AoMSkgPSByZXN1bHQ7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCisgICAgICAgICYm
IHNsb3QuaXNDYWNoZWFibGUoKQorICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZh
bHVlCisgICAgICAgICYmIHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90
OjpWYWx1ZSkgeworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1
ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3Ry
dWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJs
ZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9o
aWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgeworICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUu
c2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9
IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgIH0KKyAgICB9
CisgICAgCisgICAgcGNbT1BDT0RFX0xFTkdUSChvcF9nZXRfYnlfaWQpIC0gMV0udS5wcm9maWxl
LT5tX2J1Y2tldHNbMF0gPSBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudHNfbGVuZ3RoKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmll
cihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1AoMiku
anNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisgICAgTExJTlRf
UkVUVVJOKGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYg
aWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICAKKyAg
ICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIFB1dFBy
b3BlcnR5U2xvdCBzbG90KGNvZGVCbG9jay0+aXNTdHJpY3RNb2RlKCkpOworICAgIGlmIChwY1s4
XS51Lm9wZXJhbmQpCisgICAgICAgIGFzT2JqZWN0KGJhc2VWYWx1ZSktPnB1dERpcmVjdChleGVj
LT5nbG9iYWxEYXRhKCksIGlkZW50LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7Cisg
ICAgZWxzZQorICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50LCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisg
ICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkp
IHsKKyAgICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxs
KCk7CisgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgp
OworICAgICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9u
YXJ5KCkKKyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJv
cGVydHlDYWNoaW5nKCkKKyAgICAgICAgICAgICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7
CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0
eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7CisgICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlz
RGljdGlvbmFyeSgpICYmIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5wcm9wZXJ0eVN0b3JhZ2VD
YXBhY2l0eSgpID09IHN0cnVjdHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkgeworICAg
ICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWUgb2YgdGhlIG1l
dGhvZHMgd2UgY2FsbAorICAgICAgICAgICAgICAgICAgICAvLyBiZWxvdyBtYXkgR0MuCisgICAg
ICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxp
bnRfb3BfcHV0X2J5X2lkKTsKKworICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5
cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOwor
ICAgICAgICAgICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAg
ICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCksIHN0cnVjdHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0u
dS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAg
ICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBz
dHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgICAgICBTdHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBz
dHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpOworICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoY2hhaW4pOworICAgICAgICAgICAgICAgICAgICBwY1s3XS51LnN0cnVjdHVyZUNoYWluLnNl
dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOworICAgICAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAgICAgICAgICAg
IHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFs
RGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAg
ICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkgKiBzaXplb2Yo
SlNWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYg
KGZhbHNlICYmICFzdHJjbXAoaWRlbnQuYXNjaWkoKS5kYXRhKCksICJyZW5kZXJSZWZsZWN0aW9u
cyIpKQorICAgICAgICBwcmludGYoIkZpbmlzaGluZyBhY2Nlc3MgdG8gcmVuZGVyUmVmbGVjdGlv
bnMgZnJvbSBMTEludCBzbG93IHBhdGguXG4iKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAg
SlNPYmplY3QqIGJhc2VPYmplY3QgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b09iamVjdChl
eGVjKTsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+
ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgY29kZUJsb2NrLT5pZGVudGlmaWVyKHBj
WzNdLnUub3BlcmFuZCkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGlmICgh
Y291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJTlRf
VEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIp
KTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisKK2lubGlu
ZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBiYXNlVmFsdWUsIEpT
VmFsdWUgc3Vic2NyaXB0KQoreworICAgIGlmIChMSUtFTFkoYmFzZVZhbHVlLmlzQ2VsbCgpICYm
IHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBpZiAoSlNWYWx1ZSByZXN1bHQgPSBi
YXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eShleGVjLCBhc1N0cmluZyhzdWJz
Y3JpcHQpLT52YWx1ZShleGVjKSkpCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0K
KyAgICAKKyAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsKKyAgICAgICAgdWludDMyX3Qg
aSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU1N0cmluZyhiYXNlVmFs
dWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4KGkpKQorICAgICAgICAgICAg
cmV0dXJuIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAgICAgICAK
KyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAmJiBhc0J5dGVBcnJheShiYXNl
VmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc0J5dGVBcnJh
eShiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIHJldHVy
biBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGkpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHBy
b3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAg
IHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5KTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2dldF9ieV92YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElO
VF9SRVRVUk5fUFJPRklMRUQob3BfZ2V0X2J5X3ZhbCwgZ2V0QnlWYWwoZXhlYywgTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAg
aWYgKCFhcmd1bWVudHMpIHsKKyAgICAgICAgYXJndW1lbnRzID0gQXJndW1lbnRzOjpjcmVhdGUo
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgICAgIExMSU5UX09QKDIpID0gYXJndW1lbnRzOworICAgICAgICBleGVjLT51bmNo
ZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKSA9IGFy
Z3VtZW50czsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIGFy
Z3VtZW50cywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dldF9ieV9wbmFtZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5U
X1JFVFVSTihnZXRCeVZhbChleGVjLCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMp
LmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4
ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09Q
X0MoMSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOwor
ICAgIAorICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMyKCkpKSB7CisgICAgICAgIHVp
bnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSlNBcnJheShi
YXNlVmFsdWUpKSB7CisgICAgICAgICAgICBKU0FycmF5KiBqc0FycmF5ID0gYXNBcnJheShiYXNl
VmFsdWUpOworICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNhblNldEluZGV4KGkpKQorICAgICAg
ICAgICAgICAgIGpzQXJyYXktPnNldEluZGV4KGdsb2JhbERhdGEsIGksIHZhbHVlKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBKU0FycmF5OjpwdXRCeUluZGV4KGpzQXJyYXks
IGV4ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICB9Cisg
ICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkKKyAgICAgICAgICAgICYmIGFzQnl0
ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7CisgICAgICAgICAgICBKU0J5
dGVBcnJheSoganNCeXRlQXJyYXkgPSBhc0J5dGVBcnJheShiYXNlVmFsdWUpOworICAgICAgICAg
ICAgaWYgKHZhbHVlLmlzSW50MzIoKSkgeworICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5z
ZXRJbmRleChpLCB2YWx1ZS5hc0ludDMyKCkpOworICAgICAgICAgICAgICAgIExMSU5UX0VORCgp
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAg
ICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNOdW1iZXIoKSk7
CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpLCB2YWx1ZSk7CisgICAgICAgIExMSU5UX0VO
RCgpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlw
dC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmlj
dE1vZGUoKSk7CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBwcm9wZXJ0eSwgdmFsdWUsIHNsb3Qp
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5
X3ZhbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBiYXNlVmFs
dWUudG9PYmplY3QoZXhlYyk7CisgICAgCisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBib29sIGNvdWxkRGVsZXRlOworICAgIAorICAg
IHVpbnQzMl90IGk7CisgICAgaWYgKHN1YnNjcmlwdC5nZXRVSW50MzIoaSkpCisgICAgICAgIGNv
dWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHlCeUlu
ZGV4KGJhc2VPYmplY3QsIGV4ZWMsIGkpOworICAgIGVsc2UgeworICAgICAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3Jp
cHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUo
KS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgcHJvcGVydHkpOworICAgIH0KKyAg
ICAKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1v
ZGUoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUg
dG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KGNvdWxkRGVsZXRlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaW5k
ZXgpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS5w
dXQoZXhlYywgcGNbMl0udS5vcGVyYW5kLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyX3Nl
dHRlcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEFTU0VSVChMTElOVF9PUCgxKS5qc1Zh
bHVlKCkuaXNPYmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VPYmogPSBhc09iamVjdChMTElO
VF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIAorICAgIEdldHRlclNldHRlciogYWNjZXNzb3IgPSBH
ZXR0ZXJTZXR0ZXI6OmNyZWF0ZShleGVjKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsK
KyAgICAKKyAgICBKU1ZhbHVlIGdldHRlciA9IExMSU5UX09QKDMpLmpzVmFsdWUoKTsKKyAgICBK
U1ZhbHVlIHNldHRlciA9IExMSU5UX09QKDQpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoZ2V0dGVy
LmlzT2JqZWN0KCkgfHwgZ2V0dGVyLmlzVW5kZWZpbmVkKCkpOworICAgIEFTU0VSVChzZXR0ZXIu
aXNPYmplY3QoKSB8fCBzZXR0ZXIuaXNVbmRlZmluZWQoKSk7CisgICAgQVNTRVJUKGdldHRlci5p
c09iamVjdCgpIHx8IHNldHRlci5pc09iamVjdCgpKTsKKyAgICAKKyAgICBpZiAoIWdldHRlci5p
c1VuZGVmaW5lZCgpKQorICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0dGVyKGV4ZWMtPmdsb2JhbERh
dGEoKSwgYXNPYmplY3QoZ2V0dGVyKSk7CisgICAgaWYgKCFzZXR0ZXIuaXNVbmRlZmluZWQoKSkK
KyAgICAgICAgYWNjZXNzb3ItPnNldFNldHRlcihleGVjLT5nbG9iYWxEYXRhKCksIGFzT2JqZWN0
KHNldHRlcikpOworICAgIGJhc2VPYmotPnB1dERpcmVjdEFjY2Vzc29yKAorICAgICAgICBleGVj
LT5nbG9iYWxEYXRhKCksCisgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBj
WzJdLnUub3BlcmFuZCksCisgICAgICAgIGFjY2Vzc29yLCBBY2Nlc3Nvcik7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbXBfc2NvcGVzKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgdW5zaWduZWQgY291bnQgPSBwY1sxXS51Lm9wZXJhbmQ7Cisg
ICAgU2NvcGVDaGFpbk5vZGUqIHRtcCA9IGV4ZWMtPnNjb3BlQ2hhaW4oKTsKKyAgICB3aGlsZSAo
Y291bnQtLSkKKyAgICAgICAgdG1wID0gdG1wLT5wb3AoKTsKKyAgICBleGVjLT5zZXRTY29wZUNo
YWluKHRtcCk7CisgICAgcGMgKz0gcGNbMl0udS5vcGVyYW5kOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBMTElOVF9CUkFOQ0gob3BfanRydWUsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRv
Qm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2UpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3BfamZhbHNlLCAhTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2psZXNzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNI
KG9wX2psZXNzLCBqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bmxlc3MpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNz
LCAhanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXIp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXIsIGpz
TGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSku
anNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyLCAhanNM
ZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5q
c1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3NlcSwganNMZXNzRXE8
dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3NlcSkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX0JSQU5DSChvcF9qbmxlc3NlcSwgIWpzTGVzc0VxPHRy
dWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdyZWF0ZXJlcSkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlcmVxLCBqc0xlc3NFcTxm
YWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1
ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX0JSQU5DSChvcF9qbmdyZWF0ZXJlcSwgIWpzTGVz
c0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5q
c1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9pbW0pCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpOworICAgIEFTU0VSVChzY3J1dGluZWUuaXNEb3VibGUoKSk7CisgICAgZG91
YmxlIHZhbHVlID0gc2NydXRpbmVlLmFzRG91YmxlKCk7CisgICAgaW50MzJfdCBpbnRWYWx1ZSA9
IHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBj
WzJdLnUub3BlcmFuZDsKKyAgICBpZiAodmFsdWUgPT0gaW50VmFsdWUpIHsKKyAgICAgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAgcGMgKz0gY29k
ZUJsb2NrLT5pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5vZmZzZXRG
b3JWYWx1ZShpbnRWYWx1ZSwgZGVmYXVsdE9mZnNldCk7CisgICAgfSBlbHNlCisgICAgICAgIHBj
ICs9IGRlZmF1bHRPZmZzZXQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNW
YWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBpbnQgZGVmYXVs
dE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAoIXNjcnV0aW5lZS5pc1N0cmluZygp
KQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIGVsc2UgeworICAgICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2Rl
QmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZh
bHVlKGFzU3RyaW5nKHNjcnV0aW5lZSktPnZhbHVlKGV4ZWMpLmltcGwoKSwgZGVmYXVsdE9mZnNl
dCk7CisgICAgfQorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbmV3X2Z1bmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChjb2RlQmxvY2stPmNvZGVUeXBl
KCkgIT0gRnVuY3Rpb25Db2RlCisgICAgICAgICAgIHx8ICFjb2RlQmxvY2stPm5lZWRzRnVsbFNj
b3BlQ2hhaW4oKQorICAgICAgICAgICB8fCBleGVjLT51bmNoZWNrZWRSKGNvZGVCbG9jay0+YWN0
aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcK
KyAgICBwcmludGYoIkNyZWF0aW5nIGZ1bmN0aW9uIVxuIik7CisjZW5kaWYKKyAgICBMTElOVF9S
RVRVUk4oY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbMl0udS5vcGVyYW5kKS0+bWFrZShleGVj
LCBleGVjLT5zY29wZUNoYWluKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
d19mdW5jX2V4cCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBmdW5jdGlv
biA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzJdLnUub3BlcmFuZCk7CisgICAgSlNGdW5j
dGlvbiogZnVuYyA9IGZ1bmN0aW9uLT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7Cisg
ICAgCisgICAgaWYgKCFmdW5jdGlvbi0+bmFtZSgpLmlzTnVsbCgpKSB7CisgICAgICAgIEpTU3Rh
dGljU2NvcGVPYmplY3QqIGZ1bmN0aW9uU2NvcGVPYmplY3QgPSBKU1N0YXRpY1Njb3BlT2JqZWN0
OjpjcmVhdGUoZXhlYywgZnVuY3Rpb24tPm5hbWUoKSwgZnVuYywgUmVhZE9ubHkgfCBEb250RGVs
ZXRlKTsKKyAgICAgICAgZnVuYy0+c2V0U2NvcGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBmdW5jLT5z
Y29wZSgpLT5wdXNoKGZ1bmN0aW9uU2NvcGVPYmplY3QpKTsKKyAgICB9CisgICAgCisgICAgTExJ
TlRfUkVUVVJOKGZ1bmMpOworfQorCitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBoYW5kbGVIb3N0
Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBjYWxs
ZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBFeGVjU3RhdGUqIGV4ZWMg
PSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWlu
KGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOwor
CisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgQ2FsbERhdGEgY2FsbERh
dGE7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoY2FsbGVlLCBjYWxs
RGF0YSk7CisgICAgCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZUpTKTsKKyAg
ICAKKyAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSG9zdCkgeworICAgICAgICAgICAg
Z2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0
YS5uYXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICAgICAgCisgICAgICAgICAg
ICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgICAgICB9CisgICAgICAgIAorI2lmIExM
SU5UX0hFTFBFUl9UUkFDSU5HCisgICAgICAgIHByaW50ZigiQ2FsbCBjYWxsZWUgaXMgbm90IGEg
ZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgICAg
ICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKTsKKyAgICAgICAgTExJTlRfQ0FMTF9U
SFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVlKSk7Cisg
ICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgCisgICAg
Q29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIENvbnN0cnVjdFR5cGUgY29uc3RydWN0
VHlwZSA9IGdldENvbnN0cnVjdERhdGEoY2FsbGVlLCBjb25zdHJ1Y3REYXRhKTsKKyAgICAKKyAg
ICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlSlMpOworICAgIAorICAgIGlm
IChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVIb3N0KSB7CisgICAgICAgIGdsb2JhbERh
dGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5u
YXRpdmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworCisgICAgICAgIExMSU5UX0NBTExfUkVUVVJO
KGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSk7CisgICAgfQorICAgIAorI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgcHJp
bnRmKCJDb25zdHJ1Y3RvciBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUu
ZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlID09IENv
bnN0cnVjdFR5cGVOb25lKTsKKyAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVO
b3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKK30KKworaW5saW5lIEhlbHBlclJl
dHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBj
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSwgTExJ
bnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCit7CisgICAgSlNDZWxsKiBjYWxsZWVB
c0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSk7CisgICAgaWYgKCFj
YWxsZWVBc0Z1bmN0aW9uQ2VsbCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWND
YWxsZWUsIHBjLCBjYWxsZWVBc1ZhbHVlLCBraW5kKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBj
YWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBleGVjQ2FsbGVl
LT5zZXRTY29wZUNoYWluKGNhbGxlZS0+c2NvcGVVbmNoZWNrZWQoKSk7CisgICAgRXhlY3V0YWJs
ZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAgICAKKyAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7
CisgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGNvZGVQdHIg
PSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7
CisgICAgZWxzZSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAg
ICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVj
Q2FsbGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOworICAgICAgICBpZiAoZXJyb3IpCisgICAg
ICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCksIHBjLCBl
cnJvcik7CisgICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRl
ZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICAgICAg
aWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIGNvZGVQ
dHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0Zv
cihraW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhl
Y3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAg
IH0KKyAgICAKKyAgICBpZiAoY2FsbExpbmtJbmZvKSB7CisgICAgICAgIGlmIChjYWxsTGlua0lu
Zm8tPmlzT25MaXN0KCkpCisgICAgICAgICAgICBjYWxsTGlua0luZm8tPnJlbW92ZSgpOworICAg
ICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZXIgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwor
ICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0YSgp
LCBleGVjQ2FsbGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7Cisg
ICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuc2V0KGV4ZWNDYWxsZXItPmdsb2Jh
bERhdGEoKSwgZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxs
ZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0cjsK
KyAgICAgICAgaWYgKGNvZGVCbG9jaykKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0luY29t
aW5nQ2FsbChjYWxsTGlua0luZm8pOworICAgIH0KKyAgICAKKyAgICBMTElOVF9DQUxMX1JFVFVS
TihleGVjQ2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKK30KKworaW5s
aW5lIEhlbHBlclJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVj
dGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICAvLyBUaGlzIG5l
ZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAvLyAtIEZpZ3VyZSBv
dXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIElm
IHBvc3NpYmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAgIC8vIC0gUmV0dXJu
IGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxs
IGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSku
anNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1sz
XS51Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJl
Z2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0
Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgCisgICAgQVNTRVJUKHBjWzRdLnUuY2FsbExpbmtJbmZv
KTsKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1Zh
bHVlLCBwY1s0XS51LmNhbGxMaW5rSW5mbyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4
ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25z
dHJ1Y3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhl
YywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y2FsbF92YXJhcmdzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgLy8gVGhpcyBuZWVkcyB0
bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUgd2hpbGUgcmVzcGVjdGluZyB0aGUgdmFy
aWFibGUgYXJndW1lbnRzLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNv
bXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGlu
ZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAg
IEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAor
ICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAorICAgICAgICBleGVjLCAm
ZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwKKyAgICAgICAg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBwY1s0XS51
Lm9wZXJhbmQpOworICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKGV4ZWMsIHBjKTsKKyAg
ICAKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNh
bGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAg
ZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0
d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX3ZhcmFyZ3MpKTsK
KyAgICAKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwg
Y2FsbGVlQXNWYWx1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElO
VF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhl
YyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVj
LT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJG
cmFtZShleGVjKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2Fs
bGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVj
LT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBDKGJpdHdpc2VfY2Fz
dDxJbnN0cnVjdGlvbio+KCZsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOworICAgIGV4ZWND
YWxsZWUtPnNldENvZGVCbG9jaygwKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmls
ZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4ocGMgKyBPUENP
REVfTEVOR1RIKG9wX2NhbGxfZXZhbCkpOworICAgIAorICAgIGlmICghaXNIb3N0RnVuY3Rpb24o
Y2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQorICAgICAgICByZXR1cm4gc2V0VXBDYWxs
KGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7CisgICAgCisgICAg
Z2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0gZXZhbChleGVjQ2FsbGVlKTsKKyAgICBM
TElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4o
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
dGVhcl9vZmZfYWN0aXZhdGlvbikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEFTU0VSVChl
eGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBKU1ZhbHVlIGFj
dGl2YXRpb25WYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFjdGl2YXRp
b25WYWx1ZSkgeworICAgICAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1v
ZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKSB7Cisg
ICAgICAgICAgICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAg
ICAgICAgICAgICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAgfQorICAg
ICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0g
YXNBY3RpdmF0aW9uKGFjdGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihl
eGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRS
KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkp
CisgICAgICAgIGFzQXJndW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIGFjdGl2YXRpb24pOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2VzQXJndW1lbnRzKCkgJiYgIWV4ZWMt
PmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIGFzQXJndW1lbnRzKGV4
ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzFdLnUub3BlcmFu
ZCkpLmpzVmFsdWUoKSktPnRlYXJPZmYoZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNTdHJpbmcoZXhlYywgJkxMSU5UX09QKDIpLCBwY1szXS51Lm9wZXJh
bmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KS50b1ByaW1pdGl2ZShleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRf
cG5hbWVzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1Ao
MikuanNWYWx1ZSgpOworICAgIGlmICh2LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAg
cGMgKz0gcGNbNV0udS5vcGVyYW5kOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAg
CisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gby0+c3RydWN0dXJlKCk7CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQ
cm9wZXJ0eU5hbWVJdGVyYXRvciA9IHN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpOworICAg
IGlmICghanNQcm9wZXJ0eU5hbWVJdGVyYXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5j
YWNoZWRQcm90b3R5cGVDaGFpbigpICE9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykp
CisgICAgICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9y
OjpjcmVhdGUoZXhlYywgbyk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBKU1ZhbHVlKGpzUHJv
cGVydHlOYW1lSXRlcmF0b3IpOworICAgIExMSU5UX09QKDIpID0gSlNWYWx1ZShvKTsKKyAgICBM
TElOVF9PUCgzKSA9IFJlZ2lzdGVyOjp3aXRoSW50KDApOworICAgIExMSU5UX09QKDQpID0gUmVn
aXN0ZXI6OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAgICAKKyAg
ICBwYyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFtZXMpOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9wbmFtZSkKK3sKKyAgICBMTElOVF9C
RUdJTigpOworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoTExJTlRfT1AoMikuanNWYWx1
ZSgpKTsKKyAgICBKU1N0cmluZyogcHJvcGVydHkgPSBhc1N0cmluZyhMTElOVF9PUCgxKS5qc1Zh
bHVlKCkpOworICAgIGlmIChiYXNlLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4ZWMs
IHByb3BlcnR5LT52YWx1ZShleGVjKSkpKSB7CisgICAgICAgIC8vIEdvIHRvIHRhcmdldC4KKyAg
ICAgICAgcGMgKz0gcGNbNl0udS5vcGVyYW5kOworICAgIH0gLy8gRWxzZSwgZG9uJ3QgY2hhbmdl
IHRoZSBQQywgc28gdGhlIGludGVycHJldGVyIHdpbGwgcmVsb29wLgorICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSkKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBK
U09iamVjdCogbyA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4o
ZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29wZSkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wb3AoKSk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXNoX25l
d19zY29wZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIHNjb3BlID0gSlNTdGF0aWNTY29w
ZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJh
bmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIERvbnREZWxldGUpOworICAgIGV4ZWMtPnNldFNj
b3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKHNjb3BlKSk7CisgICAgTExJTlRfUkVU
VVJOKHNjb3BlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfVEhST1coTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfVEhST1coY3JlYXRlUmVmZXJlbmNlRXJy
b3IoZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4
ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWJ1ZykKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBp
bnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOworICAgIGludCBsYXN0TGluZSA9IHBjWzNd
LnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmRl
YnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGlu
ZSwgbGFzdExpbmUpOworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICAoKlByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPndpbGxFeGVjdXRlKGV4
ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT5kaWRFeGVj
dXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEhlbHBlcnNfaAorI2RlZmluZSBMTEludEhl
bHBlcnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xh
c3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgewor
Cit0eXBlZGVmIGludDY0X3QgSGVscGVyUmV0dXJuVHlwZTsKKworZXh0ZXJuICJDIiBIZWxwZXJS
ZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBp
bnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7CitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUg
bGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJl
LCBpbnQgb3BlcmFuZCk7CisKKyNkZWZpbmUgTExJTlRfSEVMUEVSX0RFQ0wobmFtZSkgXAorICAg
IGV4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF8jI25hbWUoRXhlY1N0YXRlKiBleGVj
LCBJbnN0cnVjdGlvbiogcGMpCisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOwor
TExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCk7CitMTElOVF9IRUxQ
RVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RF
Q0wodHJhY2UpOworTExJTlRfSEVMUEVSX0RFQ0woc3BlY2lhbF90cmFjZSk7CitMTElOVF9IRUxQ
RVJfREVDTChlbnRyeV9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9u
X2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29u
c3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0wobG9vcF9vc3IpOworTExJTlRf
SEVMUEVSX0RFQ0wocmVwbGFjZSk7CitMTElOVF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxlX2No
ZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2FyaXR5Q2hlY2spOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y3JlYXRlX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX3RoaXMp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfbmV3X29iamVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Fy
cmF5KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXlfYnVmZmVyKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfcmVnZXhwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9ub3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2xlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3NlcSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZ3JlYXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcmVx
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wcmVfZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2luYyk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9kZWMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3RvX2pzbnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2FkZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVs
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2Rpdik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9sc2hpZnQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3JzaGlmdCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdXJzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfYml0YW5kKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRvcik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfYml0eG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRub3Qp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
dHlwZW9mKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRlZmluZWQpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2lzX2Jvb2xlYW4pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2lzX251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfc3RyaW5nKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2lzX2Z1bmN0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcmVzb2x2ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2
ZV9za2lwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9iYXNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9y
ZXNvbHZlX3dpdGhfYmFzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRo
X3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9pZCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3B1dF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5X2lkKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9n
ZXRfYnlfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV92YWwpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3B1dF9ieV9pbmRleCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2dldHRlcl9z
ZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2ptcF9zY29wZXMpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2p0cnVlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZmFsc2Up
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qbmxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2psZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzc2VxKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bmdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2NoYXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3N3aXRjaF9zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19mdW5jKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9jYWxsX2V2YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2Fj
dGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RlYXJfb2ZmX2FyZ3VtZW50cyk7
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90b19wcmltaXRpdmUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5hbWUpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3B1c2hfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29w
ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Rocm93KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvd19y
ZWZlcmVuY2VfZXJyb3IpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlYnVnKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2FsbCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTElu
dAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRIZWxwZXJzX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxp
bmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExM
SW50T2ZmbGluZUFzbUNvbmZpZ19oCisjZGVmaW5lIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisK
KyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+Cisj
aW5jbHVkZSA8d3RmL0lubGluZUFzbS5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisj
aWYgQ1BVKFg4NikKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDEKKyNlbHNlCisjZGVmaW5lIE9G
RkxJTkVfQVNNX1g4NiAwCisjZW5kaWYKKworI2lmIENQVShBUk1fVEhVTUIyKQorI2RlZmluZSBP
RkZMSU5FX0FTTV9BUk12NyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCisj
ZW5kaWYKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJU
X0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMAor
I2VuZGlmCisKKyNpZiBDUFUoQklHX0VORElBTikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VO
RElBTiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDAKKyNlbmRpZgor
CisjaWYgRU5BQkxFKExMSU5UX09TUl9UT19KSVQpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9F
TkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRp
ZgorCisjaWYgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhF
Q1VUSU9OX1RSQUNJTkcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RS
QUNJTkcgMAorI2VuZGlmCisKKyNpZiBMTElOVF9BTFdBWVNfQUxMT0NBVEVfU0xPVworI2RlZmlu
ZSBPRkZMSU5FX0FTTV9BTFdBWVNfQUxMT0NBVEVfU0xPVyAxCisjZWxzZQorI2RlZmluZSBPRkZM
SU5FX0FTTV9BTFdBWVNfQUxMT0NBVEVfU0xPVyAwCisjZW5kaWYKKworI2lmIENQVShBUk1fVEhV
TUIyKQorI2RlZmluZSBPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGFiZWwpICAgICAgICAgIFwK
KyAgICAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsYWJlbCkgIlxuIiAgICAgICAgICBcCisgICAg
SElERV9TWU1CT0wobmFtZSkgIlxuIiAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICIudGh1
bWJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiLnRodW1iX2Z1
bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGxhYmVsKSAiXG4iICBcCisgICAgU1lNQk9MX1NUUklORyhs
YWJlbCkgIjpcbiIKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0dMT0JBTF9MQUJFTChsYWJl
bCkgICAgICAgICBcCisgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGFiZWwpICJcbiIgICAg
ICAgICBcCisgICAgSElERV9TWU1CT0wobmFtZSkgIlxuIiAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgU1lNQk9MX1NUUklORyhsYWJlbCkgIjpcbiIKKyNlbmRpZgorCisjZW5kaWYgLy8gTExJ
bnRPZmZsaW5lQXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludE9mZnNldHNFeHRyYWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQ29kZUJsb2Nr
LmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNBcnJh
eS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNs
dWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1
ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgorI2luY2x1ZGUgIkpT
VmFyaWFibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTElu
dE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUg
IlJlZ2lzdGVyRmlsZS5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1
Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlZhbHVlUHJv
ZmlsZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIEpT
QyB7CisKKyNkZWZpbmUgT0ZGTElORV9BU01fT0ZGU0VUT0YoY2xhenosIGZpZWxkKSBPQkpFQ1Rf
T0ZGU0VUT0YoY2xhenosIGZpZWxkKQorCitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3Igewor
cHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCogZHVtbXkoKTsKK307CisKK2NvbnN0
IHVuc2lnbmVkKiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkKK3sKKy8vIFRoaXMgaXMg
YSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldHNfZXh0cmFjdG9y
LnJiLCBhbmQgY29udGFpbnMgY29kZQorLy8gdG8gY3JlYXRlIGEgdGFibGUgb2Ygb2Zmc2V0cywg
c2l6ZXMsIGFuZCBhIGhlYWRlciBpZGVudGlmeWluZyB3aGF0IGNvbWJpbmF0aW9uIG9mCisvLyBQ
bGF0Zm9ybS5oIG1hY3JvcyB3ZSBoYXZlIHNldC4gV2UgaW5jbHVkZSBpdCBpbnNpZGUgb2YgYSBt
ZXRob2Qgb24gTExJbnRPZmZzZXRzRXh0cmFjdG9yCisvLyBiZWNhdXNlIHRoZSBmaWVsZHMgd2hv
c2Ugb2Zmc2V0cyB3ZSdyZSBleHRyYWN0aW5nIGFyZSBtb3N0bHkgcHJpdmF0ZS4gU28gd2UgbWFr
ZSB0aGVpcgorLy8gY2xhc3NlcyBmcmllbmRzIHdpdGggTExJbnRPZmZzZXRzRXh0cmFjdG9yLCBh
bmQgaW5jbHVkZSB0aGUgaGVhZGVyIGhlcmUsIHRvIGdldCB0aGUgQysrCisvLyBjb21waWxlciB0
byBraW5kbHkgc3RlcCBhc2lkZSBhbmQgeWllbGQgdG8gb3VyIGJlc3QgaW50ZW50aW9ucy4KKyNp
bmNsdWRlICJMTEludERlc2lyZWRPZmZzZXRzLmgiCisgICAgcmV0dXJuIGV4dHJhY3RvclRhYmxl
OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworaW50IG1haW4oaW50LCBjaGFyKiopCit7Cisg
ICAgLy8gT3V0IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0aW9uLCBtYWtlIHN1cmUgdGhhdCBMTElu
dE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkgaXMgbGl2ZSwKKyAgICAvLyBhbmQgdGhlIGV4dHJh
Y3RvclRhYmxlIGlzIGxpdmUsIHRvby4KKyAgICBwcmludGYoIiVwXG4iLCBKU0M6OkxMSW50T2Zm
c2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSk7CisgICAgcmV0dXJuIDA7Cit9CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludFRodW5rcy5oIgorCisj
aWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSlNJbnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRl
ICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIHZv
aWQgKCp0YXJnZXQpKCkpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIAorICAgIC8v
IEZJWE1FOiB0aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0byBkbyBpdCBvbiBYODYsIGJ1
dCBJJ20gbm90IHN1cmUgSSBjYXJlLgorICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVz
dGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSksIEpTSW50ZXJmYWNlSklUOjpy
ZWdUMCk7CisgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBM
aW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0LCBHTE9CQUxfVEhVTktfSUQp
OworICAgIHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKK30KKworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhn
bG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSk7Cit9CisKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3Io
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0
aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3Vl
KTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tU
aHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdl
bmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxs
X2FyaXR5X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkK
K3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEp
Cit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50
X2V2YWxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5
VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9wcm9ncmFtX3Byb2xvZ3Vl
KTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUo
TExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRUaHVua3NfaAorI2RlZmluZSBMTElu
dFRodW5rc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShMTElO
VCkKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgSlNHbG9iYWxEYXRhOworCituYW1lc3BhY2UgTExJbnQgeworCitNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2Jh
bERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5
VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVu
Y3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2Vu
ZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRo
dW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dy
YW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworCit9IH0gLy8gbmFtZXNwYWNl
IEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50
VGh1bmtzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjM3OCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisj
IENyYXNoIGNvdXJzZSBvbiB0aGUgbGFuZ3VhZ2UgdGhhdCB0aGlzIGlzIHdyaXR0ZW4gaW4gKHdo
aWNoIEkganVzdCBjYWxsCisjICJhc3NlbWJseSIgZXZlbiB0aG91Z2ggaXQncyBtb3JlIHRoYW4g
dGhhdCk6CisjCisjIC0gTW9zdGx5IGdhcy1zdHlsZSBvcGVyYW5kIG9yZGVyaW5nLiBUaGUgbGFz
dCBvcGVyYW5kIHRlbmRzIHRvIGJlIHRoZQorIyAgIGRlc3RpbmF0aW9uLiBTbyAiYSA6PSBiIiBp
cyB3cml0dGVuIGFzICJtb3YgYiwgYSIuIEJ1dCB1bmxpa2UgZ2FzLAorIyAgIGNvbXBhcmlzb25z
IGFyZSBpbi1vcmRlciwgc28gImlmIChhIDwgYikiIGlzIHdyaXR0ZW4gYXMKKyMgICAiYmlsdCBh
LCBiLCAuLi4iLgorIworIyAtICJiIiA9IGJ5dGUsICJoIiA9IDE2LWJpdCB3b3JkLCAiaSIgPSAz
Mi1iaXQgd29yZCwgInAiID0gcG9pbnRlci4KKyMgICBDdXJyZW50bHkgdGhpcyBpcyBqdXN0IDMy
LWJpdCBzbyAiaSIgYW5kICJwIiBhcmUgaW50ZXJjaGFuZ2VhYmxlCisjICAgZXhjZXB0IHdoZW4g
YW4gb3Agc3VwcG9ydHMgb25lIGJ1dCBub3QgdGhlIG90aGVyLgorIworIyAtIEluIGdlbmVyYWws
IHZhbGlkIG9wZXJhbmRzIGZvciBtYWNybyBpbnZvY2F0aW9ucyBhbmQgaW5zdHJ1Y3Rpb25zIGFy
ZQorIyAgIHJlZ2lzdGVycyAoZWcgInQwIiksIGFkZHJlc3NlcyAoZWcgIjRbdDBdIiksIGJhc2Ut
aW5kZXggYWRkcmVzc2VzCisjICAgKGVnICI3W3QwLCB0MSwgMl0iKSwgYWJzb2x1dGUgYWRkcmVz
c2VzIChlZyAiMHhhMDAwMDAwMFtdIiksIG9yIGxhYmVscworIyAgIChlZyAiX2ZvbyIgb3IgIi5m
b28iKS4gTWFjcm8gaW52b2NhdGlvbnMgY2FuIGFsc28gdGFrZSBhbm9ueW1vdXMKKyMgICBtYWNy
b3MgYXMgb3BlcmFuZHMuIEluc3RydWN0aW9ucyBjYW5ub3QgdGFrZSBhbm9ueW1vdXMgbWFjcm9z
LgorIworIyAtIExhYmVscyBtdXN0IGhhdmUgbmFtZXMgdGhhdCBiZWdpbiB3aXRoIGVpdGhlciAi
XyIgb3IgIi4iLiAgQSAiLiIgbGFiZWwKKyMgICBpcyBsb2NhbCBhbmQgZ2V0cyByZW5hbWVkIGJl
Zm9yZSBjb2RlIGdlbiB0byBtaW5pbWl6ZSBuYW1lc3BhY2UKKyMgICBwb2xsdXRpb24uIEEgIl8i
IGxhYmVsIGlzIGFuIGV4dGVybiBzeW1ib2wgKGkuZS4gIi5nbG9ibCIpLiBUaGUgIl8iCisjICAg
bWF5IG9yIG1heSBub3QgYmUgcmVtb3ZlZCBkdXJpbmcgY29kZSBnZW4gZGVwZW5kaW5nIG9uIHdo
ZXRoZXIgdGhlIGFzbQorIyAgIGNvbnZlbnRpb25zIGZvciBDIG5hbWUgbWFuZ2xpbmcgb24gdGhl
IHRhcmdldCBwbGF0Zm9ybSBtYW5kYXRlIGEgIl8iCisjICAgcHJlZml4LgorIworIyAtIEEgIm1h
Y3JvIiBpcyBhIGxhbWJkYSBleHByZXNzaW9uLCB3aGljaCBtYXkgYmUgZWl0aGVyIGFub255bW91
cyBvcgorIyAgIG5hbWVkLiBCdXQgdGhpcyBoYXMgY2F2ZWF0cy4gIm1hY3JvIiBjYW4gdGFrZSB6
ZXJvIG9yIG1vcmUgYXJndW1lbnRzLAorIyAgIHdoaWNoIG1heSBiZSBtYWNyb3Mgb3IgYW55IHZh
bGlkIG9wZXJhbmRzLCBidXQgaXQgY2FuIG9ubHkgcmV0dXJuCisjICAgY29kZS4gQnV0IHlvdSBj
YW4gZG8gVHVyaW5nLWNvbXBsZXRlIHRoaW5ncyB2aWEgY29udGludWF0aW9uIHBhc3NpbmcKKyMg
ICBzdHlsZTogIm1hY3JvIGZvbyAoYSwgYikgYihhKSBlbmQgZm9vKGZvbywgZm9vKSIuIEFjdHVh
bGx5LCBkb24ndCBkbworIyAgIHRoYXQsIHNpbmNlIHlvdSdsbCBqdXN0IGNyYXNoIHRoZSBhc3Nl
bWJsZXIuCisjCisjIC0gQW4gImlmIiBpcyBhIGNvbmRpdGlvbmFsIG9uIHNldHRpbmdzLiBBbnkg
aWRlbnRpZmllciBzdXBwbGllZCBpbiB0aGUKKyMgICBwcmVkaWNhdGUgb2YgYW4gImlmIiBpcyBh
c3N1bWVkIHRvIGJlIGEgI2RlZmluZSB0aGF0IGlzIGF2YWlsYWJsZQorIyAgIGR1cmluZyBjb2Rl
IGdlbi4gU28geW91IGNhbid0IHVzZSAiaWYiIGZvciBjb21wdXRhdGlvbiBpbiBhIG1hY3JvLCBi
dXQKKyMgICB5b3UgY2FuIHVzZSBpdCB0byBzZWxlY3QgZGlmZmVyZW50IHBpZWNlcyBvZiBjb2Rl
IGZvciBkaWZmZXJlbnQKKyMgICBwbGF0Zm9ybXMuCisjCisjIC0gQXJndW1lbnRzIHRvIG1hY3Jv
cyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIHJhdGhlciB0aGFuIGR5bmFtaWMgc2NvcGluZy4KKyMg
ICBDb25zdCdzIGFsc28gZm9sbG93IGxleGljYWwgc2NvcGluZyBhbmQgbWF5IG92ZXJyaWRlICho
aWRlKSBhcmd1bWVudHMKKyMgICBvciBvdGhlciBjb25zdHMuIEFsbCB2YXJpYWJsZXMgKGFyZ3Vt
ZW50cyBhbmQgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBvcGVyYW5kcy4gQWRkaXRp
b25hbGx5LCBhcmd1bWVudHMgKGJ1dCBub3QgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0
byBtYWNyb3MuCisKKworIyBUaGVzZSBkZWNsYXJhdGlvbnMgbXVzdCBtYXRjaCBpbnRlcnByZXRl
ci9SZWdpc3RlckZpbGUuaC4KK2NvbnN0IENhbGxGcmFtZUhlYWRlclNpemUgPSA0OAorY29uc3Qg
QXJndW1lbnRDb3VudCA9IC00OAorY29uc3QgQ2FsbGVyRnJhbWUgPSAtNDAKK2NvbnN0IENhbGxl
ZSA9IC0zMgorY29uc3QgU2NvcGVDaGFpbiA9IC0yNAorY29uc3QgUmV0dXJuUEMgPSAtMTYKK2Nv
bnN0IENvZGVCbG9jayA9IC04CisKK2NvbnN0IFRoaXNBcmd1bWVudE9mZnNldCA9IC1DYWxsRnJh
bWVIZWFkZXJTaXplIC0gOAorCisjIERlY2xhcmUgc29tZSBhbGlhc2VzIGZvciB0aGUgcmVnaXN0
ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAorCisjIE9mZnNldHMgbmVlZGVkIGZvciBy
ZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRpb24uCitpZiBCSUdfRU5ESUFOCisgICAg
Y29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSA0CitlbHNlCisg
ICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSAwCitlbmQK
KworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCitjb25zdCBJbnQzMlRhZyA9IC0x
Citjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51bGxUYWcgPSAtMworY29uc3QgVW5kZWZp
bmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQorY29uc3QgRW1wdHlWYWx1ZVRhZyA9IC02
Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29uc3QgTG93ZXN0VGFnID0gRGVsZXRlZFZh
bHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25zdCBTdHJpbmdUeXBlID0gNQorY29uc3Qg
T2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFncyBjb25zdGFudHMuCitjb25zdCBNYXNxdWVy
YWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMgorY29u
c3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDgKKworIyBIZWFwIGFsbG9jYXRpb24g
Y29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0gMworCisjIEJ5
dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3QgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNvbnN0YW50cy4KK2NvbnN0IEdsb2JhbENv
ZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0IEZ1bmN0aW9uQ29kZSA9IDIKKworIyBU
aGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0aGUgYXJndW1lbnQgY291bnQu
Citjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRhZ09mZnNldAorCisjIFRo
aXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25zdCBWZWN0b3JTaXplT2Zmc2V0ID0gMAor
Y29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisjIFN0cmluZyBmbGFncy4KK2NvbnN0IEhh
c2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxpdGllcworbWFjcm8gY3Jhc2goKQorICAg
IHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3ZlIDAsIHQwCisgICAgY2FsbCB0MAorZW5k
CisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAg
ICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAgY3Jhc2goKQorICAgIC5vazoKKyAgICBlbmQKK2Vu
ZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVzdGluYXRpb25SZWdp
c3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVy
CisgICAgZWxzaWYgWDg2CisgICAgICAgIHBvcCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxz
ZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIHJlc3RvcmVSZXR1cm5BZGRy
ZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1v
dmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHB1c2ggc291cmNl
UmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKworbWFjcm8g
ZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQworICAgIGptcCBbUENd
CitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHBjT2Zmc2V0KQorICAgIGxz
aGlmdGkgMiwgcGNPZmZzZXQKKyAgICBhZGRwIHBjT2Zmc2V0LCBQQworICAgIGptcCBbUENdCitl
bmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZzZXQpCisgICAgbG9hZGkgcGNPZmZzZXQs
IHQwCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQwKQorZW5kCisKK21hY3JvIGRpc3Bh
dGNoQWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0s
IFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBjQ2FsbDIoZnVuY3Rpb24sIGFyZzEsIGFy
ZzIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFy
ZzIsIHQxCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAorICAgICAgICBwb2tl
IGFyZzIsIDEKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5j
dGlvbgorZW5kCisKKyMgVGhpcyBiYXJlbHkgd29ya3MuIGFyZzMgYW5kIGFyZzQgc2hvdWxkIHBy
b2JhYmx5IGJlIGltbWVkaWF0ZXMuCittYWNybyBjQ2FsbDQoZnVuY3Rpb24sIGFyZzEsIGFyZzIs
IGFyZzMsIGFyZzQpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAg
ICBtb3ZlIGFyZzIsIHQxCisgICAgICAgIG1vdmUgYXJnMywgdDIKKyAgICAgICAgbW92ZSBhcmc0
LCB0MworICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9rZSBh
cmcyLCAxCisgICAgICAgIHBva2UgYXJnMywgMgorICAgICAgICBwb2tlIGFyZzQsIDMKKyAgICBl
bHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5kCisKK21h
Y3JvIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpCisgICAg
bW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVnZ2luZyBvcGVyYXRp
b24gaWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbiBz
dHJlYW0uIGZyb21XaGVyZQorIyBzaG91bGQgYmUgYW4gaW1tZWRpYXRlIGludGVnZXIgLSBhbnkg
aW50ZWdlciB5b3UgbGlrZTsgdXNlIGl0IHRvIGlkZW50aWZ5IHRoZSBwbGFjZSB5b3UncmUKKyMg
ZGVidWdnaW5nIGZyb20uIG9wZXJhbmQgc2hvdWxkIGxpa2V3aXNlIGJlIGFuIGltbWVkaWF0ZSwg
YW5kIHNob3VsZCBpZGVudGlmeSB0aGUgb3BlcmFuZAorIyBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3Ry
ZWFtIHlvdSdkIGxpa2UgdG8gcHJpbnQgb3V0LgorbWFjcm8gdHJhY2VPcGVyYW5kKGZyb21XaGVy
ZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX29wZXJhbmQsIGNmciwgUEMsIGZy
b21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5k
CisKKyMgRGVidWdnaW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBsaWtlIHRvIHByaW50IHRoZSB2YWx1
ZSBvZiBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbgorIyBzdHJlYW0uIFNhbWUgYXMgdHJh
Y2VPcGVyYW5kKCksIGJ1dCBhc3N1bWVzIHRoYXQgdGhlIG9wZXJhbmQgaXMgYSByZWdpc3Rlciwg
YW5kIHByaW50cyBpdHMKKyMgdmFsdWUuCittYWNybyB0cmFjZVZhbHVlKGZyb21XaGVyZSwgb3Bl
cmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX3ZhbHVlLCBjZnIsIFBDLCBmcm9tV2hlcmUs
IG9wZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCittYWNy
byB0cmFjZUV4ZWN1dGlvbigpCisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcKKyAgICAgICAgY2Fs
bEhlbHBlcihfbGxpbnRfdHJhY2UpCisgICAgZW5kCitlbmQKKworIyBDYWxsIGEgaGVscGVyIGZv
ciBjYWxsIG9wY29kZXMuCittYWNybyBjYWxsQ2FsbEhlbHBlcihhZHZhbmNlLCBoZWxwZXIsIGFj
dGlvbikKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQywgdDAKKyAgICBzdG9yZXAgdDAsIEFyZ3Vt
ZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpCisg
ICAgbW92ZSB0MSwgY2ZyCisgICAgYWN0aW9uKHQwKQorZW5kCisKK21hY3JvIHNsb3dQYXRoRm9y
Q2FsbChhZHZhbmNlLCBoZWxwZXIpCisgICAgY2FsbENhbGxIZWxwZXIoCisgICAgICAgIGFkdmFu
Y2UsCisgICAgICAgIGhlbHBlciwKKyAgICAgICAgbWFjcm8gKGNhbGxlZSkKKyAgICAgICAgICAg
IGNhbGwgY2FsbGVlCisgICAgICAgICAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisgICAgICAgIGVu
ZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklUKGluY3JlbWVudCwgYWN0aW9uKQorICAg
IGlmIEpJVF9FTkFCTEVECisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgICAg
ICBiYWRkaXMgaW5jcmVtZW50LCBDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRlclt0MF0s
IC5jb250aW51ZQorICAgICAgICBhY3Rpb24oKQorICAgIC5jb250aW51ZToKKyAgICBlbmQKK2Vu
ZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgY2hlY2tTd2l0Y2hUb0pJ
VCgKKyAgICAgICAgMSwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAgIHN0b3JlaSBQQywg
QXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgICAgICAgICBjQ2FsbDIoX2xsaW50
X2xvb3Bfb3NyLCBjZnIsIFBDKQorICAgICAgICAgICAgbW92ZSB0MSwgY2ZyCisgICAgICAgICAg
ICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAgICAgICAgam1wIHQwCisgICAgICAgIC5yZWNvdmVy
OgorICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQwor
ICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkK
KyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxMCwKKyAgICAgICAgbWFjcm8gKCkKKyAg
ICAgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlcGxhY2UpCisgICAgICAgIGVuZCkKK2VuZAor
CittYWNybyBhc3NlcnROb3RDb25zdGFudChpbmRleCkKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBi
aWx0IGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgb2sgZW5kKQorZW5kCisKKyMg
SW5kZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRl
eCBpcyBub3QKKyMgY2hhbmdlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUoaW5kZXgs
IHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZwor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAg
LmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAg
IGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNl
dFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBp
ZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0
Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxvYWRwIFRhZ09mZnNldFtwYXlsb2Fk
LCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgs
IDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4IGFuZCBwYXlsb2FkIG1heSBiZSB0
aGUgc2FtZSByZWdpc3Rlci4gSW5kZXggbWF5IGJlIGNsb2JiZXJlZC4KK21hY3JvIGxvYWRDb25z
dGFudE9yVmFyaWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4
LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zm
c2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5k
ZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHRhZworICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVy
cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0YWddLCB0YWcKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9m
IGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAo
dmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsc2hpZnRpIDMs
IGluZGV4CisgICAgYWRkcCBpbmRleCwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFt0YWdd
LCBwYXlsb2FkCisgICAgbG9hZHAgVGFnT2Zmc2V0W3RhZ10sIHRhZworLmRvbmU6CitlbmQKKwor
bWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oaW5kZXgsIHRhZ0No
ZWNrLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5k
ZXgsIC5jb25zdGFudAorICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSkKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5k
b25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRb
cGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYg
dGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgs
CisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbcGF5bG9h
ZCwgaW5kZXgsIDhdKQorICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhd
LCBwYXlsb2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4IGFuZCBwYXlsb2FkIG11c3QgYmUgZGlm
ZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90IG11dGF0ZWQuIFVzZQorIyB0aGlzIGlmIHlv
dSBrbm93IHdoYXQgdGhlIHRhZyBvZiB0aGUgdmFyaWFibGUgc2hvdWxkIGJlLiBEb2luZyB0aGUg
dGFnCisjIHRlc3QgYXMgcGFydCBvZiBsb2FkaW5nIHRoZSB2YXJpYWJsZSByZWR1Y2VzIHJlZ2lz
dGVyIHVzZSwgYnV0IG1heSBub3QKKyMgYmUgZmFzdGVyIHRoYW4gZG9pbmcgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSBmb2xsb3dlZCBieSBhIGJyYW5jaCBvbiB0aGUKKyMgdGFnLgorbWFjcm8gbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBwYXlsb2FkLCBz
bG93KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKAorICAgICAg
ICBpbmRleCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykgYmluZXEgYWN0dWFsVGFnLCBleHBl
Y3RlZFRhZywgc2xvdyBlbmQsCisgICAgICAgIHBheWxvYWQpCitlbmQKKworbWFjcm8gbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQoaW5kZXgsIHBheWxvYWQpCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCisgICAgICAgIGluZGV4LAorICAg
ICAgICBtYWNybyAoYWN0dWFsVGFnKSBlbmQsCisgICAgICAgIHBheWxvYWQpCitlbmQKKworbWFj
cm8gd3JpdGVCYXJyaWVyKHRhZywgcGF5bG9hZCkKKyAgICAjIE5vdGhpbmcgdG8gZG8sIHNpbmNl
IHdlIGRvbid0IGhhdmUgYSBnZW5lcmF0aW9uYWwgb3IgaW5jcmVtZW50YWwgY29sbGVjdG9yLgor
ZW5kCisKK21hY3JvIHZhbHVlUHJvZmlsZSh0YWcsIHBheWxvYWQsIHByb2ZpbGUpCisgICAgc3Rv
cmVpIHRhZywgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbcHJvZmlsZV0KKyAg
ICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0
W3Byb2ZpbGVdCitlbmQKKworCisjIEluZGljYXRlIHRoZSBiZWdpbm5pbmcgb2YgTExJbnQuCitf
bGxpbnRfYmVnaW46CisgICAgY3Jhc2goKQorCisKKyMgRW50cnlwb2ludHMgaW50byB0aGUgaW50
ZXJwcmV0ZXIKKworbWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJl
Z2lzdGVyKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRw
IEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVy
CisgICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGxbdGFyZ2V0
UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1bmN0aW9uRm9yQ29uc3Ry
dWN0Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENhbGxlZVtjZnJd
LCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJn
ZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxl
OjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVy
CitlbmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIp
CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8g
ZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCisgICAgc3RvcmVwIHNvdXJj
ZVJlZ2lzdGVyLCBDb2RlQmxvY2tbY2ZyXQorZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJs
b2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgICMgTm90aGluZyB0byBkbyEKK2VuZAorCisj
IERvIHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8gZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRo
ZSBQQywgbGVhdmUgdGhlIENvZGVCbG9jayoKKyMgaW4gdDEuIE1heSBhbHNvIHRyaWdnZXIgcHJv
bG9ndWUgZW50cnkgT1NSLgorbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxv
Y2tTZXR0ZXIsIG9zckhlbHBlciwgdHJhY2VIZWxwZXIpCisgICAgcHJlc2VydmVSZXR1cm5BZGRy
ZXNzQWZ0ZXJDYWxsKHQyKQorICAgIAorICAgICMgU2V0IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBj
aGVjayBpZiB3ZSBzaG91bGQgT1NSLgorICAgIHN0b3JlcCB0MiwgUmV0dXJuUENbY2ZyXQorICAg
IGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAgICAgIGNhbGxIZWxwZXIodHJhY2VIZWxwZXIpCisg
ICAgZW5kCisgICAgY29kZUJsb2NrR2V0dGVyKHQxKQorICAgIGlmIEpJVF9FTkFCTEVECisgICAg
ICAgIGJhZGRpcyA1LCBDb2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRlclt0MV0sIC5jb250
aW51ZQorICAgICAgICBjQ2FsbDIob3NySGVscGVyLCBjZnIsIFBDKQorICAgICAgICBtb3ZlIHQx
LCBjZnIKKyAgICAgICAgYnRweiB0MCwgLnJlY292ZXIKKyAgICAgICAgbG9hZHAgUmV0dXJuUENb
Y2ZyXSwgdDIKKyAgICAgICAgcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4odDIpCisg
ICAgICAgIGptcCB0MAorICAgIC5yZWNvdmVyOgorICAgICAgICBjb2RlQmxvY2tHZXR0ZXIodDEp
CisgICAgLmNvbnRpbnVlOgorICAgIGVuZAorICAgIGNvZGVCbG9ja1NldHRlcih0MSkKKyAgICAK
KyAgICAjIFNldCB1cCB0aGUgUEMuCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2luc3RydWN0aW9u
c1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpJbnN0cnVjdGlvbnM6Om1faW5zdHJ1Y3Rp
b25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKK2VuZAorCisjIEV4cGVjdHMgdGhhdCBD
b2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5k
LgorIyBNdXN0IGNhbGwgZGlzcGF0Y2goMCkgYWZ0ZXIgY2FsbGluZyB0aGlzLgorbWFjcm8gZnVu
Y3Rpb25Jbml0aWFsaXphdGlvbihwcm9maWxlQXJnU2tpcCkKKyAgICAjIFByb2ZpbGUgdGhlIGFy
Z3VtZW50cy4gVW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBubyBjaG9pY2UgYnV0IHRvIGRvIHRoaXMu
IFRoaXMKKyAgICAjIGNvZGUgaXMgcHJldHR5IGhvcnJlbmRvdXMgYmVjYXVzZSBvZiB0aGUgZGlm
ZmVyZW5jZSBpbiBvcmRlcmluZyBiZXR3ZWVuCisgICAgIyBhcmd1bWVudHMgYW5kIHZhbHVlIHBy
b2ZpbGVzLCB0aGUgZGVzaXJlIHRvIGhhdmUgYSBzaW1wbGUgbG9vcC1kb3duLXRvLXplcm8KKyAg
ICAjIGxvb3AsIGFuZCB0aGUgZGVzaXJlIHRvIHVzZSBvbmx5IHRocmVlIHJlZ2lzdGVycyBzbyBh
cyB0byBwcmVzZXJ2ZSB0aGUgUEMgYW5kCisgICAgIyB0aGUgY29kZSBibG9jay4gSXQgaXMgbGlr
ZWx5IHRoYXQgdGhpcyBjb2RlIHNob3VsZCBiZSByZXdyaXR0ZW4gaW4gYSBtb3JlCisgICAgIyBv
cHRpbWFsIHdheSBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGhhdmUgbW9yZSB0aGFuIGZpdmUgcmVn
aXN0ZXJzIGF2YWlsYWJsZQorICAgICMgZm9yIGFyYml0cmFyeSB1c2UgaW4gdGhlIGludGVycHJl
dGVyLgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgdDAKKyAgICBh
ZGRpIC1wcm9maWxlQXJnU2tpcCwgdDAgIyBVc2UgYWRkaSBiZWNhdXNlIHRoYXQncyB3aGF0IGhh
cyB0aGUgcGVlcGhvbGUKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWd0ZXEgdDAsIDAsIG9rIGVu
ZCkKKyAgICBidGl6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9uZQorICAgIGxvYWRwIENvZGVCbG9j
azo6bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDFdLCB0Mwor
ICAgIG11bGkgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDAsIHQyICMgQWFhYWFoaGhoISBOZWVkIHN0
cmVuZ3RoIHJlZHVjdGlvbiEKKyAgICBuZWdpIHQwCisgICAgbHNoaWZ0aSAzLCB0MAorICAgIGFk
ZHAgdDIsIHQzCisuYXJndW1lbnRQcm9maWxlTG9vcDoKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRP
ZmZzZXQgKyBUYWdPZmZzZXQgKyA4IC0gcHJvZmlsZUFyZ1NraXAgKiA4W2NmciwgdDBdLCB0Mgor
ICAgIHN1YnAgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDMKKyAgICBzdG9yZWkgdDIsIHByb2ZpbGVB
cmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVlUHJvZmlsZTo6bV9idWNrZXRzICsg
VGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZz
ZXQgKyA4IC0gcHJvZmlsZUFyZ1NraXAgKiA4W2NmciwgdDBdLCB0MgorICAgIHN0b3JlaSB0Miwg
cHJvZmlsZUFyZ1NraXAgKiBzaXplb2YgVmFsdWVQcm9maWxlICsgVmFsdWVQcm9maWxlOjptX2J1
Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGJhZGRpbnogOCwgdDAsIC5hcmd1bWVudFBy
b2ZpbGVMb29wCisuYXJndW1lbnRQcm9maWxlRG9uZToKKyAgICAKKyAgICAjIENoZWNrIHN0YWNr
IGhlaWdodC4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtQ2FsbGVlUmVnaXN0ZXJzW3QxXSwg
dDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQyCisgICAgbG9hZHAg
SlNHbG9iYWxEYXRhOjppbnRlcnByZXRlclt0Ml0sIHQyICAgIyBGSVhNRTogQ2FuIGdldCB0byB0
aGUgUmVnaXN0ZXJGaWxlIGZyb20gdGhlIEpJVFN0YWNrRnJhbWUKKyAgICBsc2hpZnRpIDMsIHQw
CisgICAgYWRkcCB0MCwgY2ZyLCB0MAorICAgIGJwYWVxIEludGVycHJldGVyOjptX3JlZ2lzdGVy
RmlsZSArIFJlZ2lzdGVyRmlsZTo6bV9lbmRbdDJdLCB0MCwgLnN0YWNrSGVpZ2h0T0sKKworICAg
ICMgU3RhY2sgaGVpZ2h0IGNoZWNrIGZhaWxlZCAtIG5lZWQgdG8gY2FsbCBhIGhlbHBlci4KKyAg
ICBjYWxsSGVscGVyKF9sbGludF9yZWdpc3Rlcl9maWxlX2NoZWNrKQorLnN0YWNrSGVpZ2h0T0s6
CitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0
IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KK21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25l
TGFiZWwsIGhlbHBlcikKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtj
ZnJdLCB0MAorICAgIGJpYWVxIHQwLCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIGRv
bmVMYWJlbAorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMpICAgIyBUaGlzIGhlbHBlciBoYXMg
YSBzaW1wbGUgcHJvdG9jb2w6IHQwID0gMCA9PiBubyBlcnJvciwgdDAgIT0gMCA9PiBlcnJvcgor
ICAgIG1vdmUgdDEsIGNmcgorICAgIGJ0aXogdDAsIC5jb250aW51ZQorICAgIGxvYWRwIEpJVFN0
YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2Fs
bEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hp
bmVQQ0ZvclRocm93W3QxXQorLmNvbnRpbnVlOgorICAgICMgUmVsb2FkIENvZGVCbG9jayBhbmQg
UEMsIHNpbmNlIHRoZSBoZWxwZXIgY2xvYmJlcmVkIGl0LgorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAg
IGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0aW9ucyArIFZlY3RvckJ1
ZmZlck9mZnNldFt0MF0sIFBDCisgICAgam1wIGRvbmVMYWJlbAorZW5kCisKK19sbGludF9wcm9n
cmFtX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBu
b3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNl
X3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2V2YWxfcHJvbG9ndWU6Cisg
ICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJs
b2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAg
ZGlzcGF0Y2goMCkKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWU6CisgICAg
cHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9j
a1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCwgX2xsaW50X3RyYWNl
X3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQorLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luOgorICAg
IGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKKyAgICBkaXNwYXRjaCgwKQorICAgIAorCitfbGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlv
bkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9s
bGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCwgX2xsaW50X3RyYWNlX3Byb2xv
Z3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCisuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbjoK
KyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKwor
X2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0
aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGlu
dF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2Fy
aXR5Q2hlY2tfZm9yX2NhbGwpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNh
bGxCZWdpbiwgX2xsaW50X2hlbHBlcl9jYWxsX2FyaXR5Q2hlY2spCisKKworX2xsaW50X2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JD
b25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRf
ZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNl
X2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0
aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9sbGludF9oZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2sp
CisKKyMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25zCisKK19sbGludF9vcF9lbnRlcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9h
ZGkgQ29kZUJsb2NrOjptX251bVZhcnNbdDJdLCB0MgorICAgIGJ0aXogdDIsIC5vcEVudGVyRG9u
ZQorICAgIG1vdmUgVW5kZWZpbmVkVGFnLCB0MAorICAgIG1vdmUgMCwgdDEKKy5vcEVudGVyTG9v
cDoKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0K
KyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBidGlueiB0Miwg
Lm9wRW50ZXJMb29wCisub3BFbnRlckRvbmU6CisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRf
b3BfY3JlYXRlX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywg
Lm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3Jl
YXRlX2FjdGl2YXRpb24pCisub3BDcmVhdGVBY3RpdmF0aW9uRG9uZToKKyAgICBkaXNwYXRjaCgy
KQorCisKK19sbGludF9vcF9pbml0X2xhenlfcmVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgc3RvcmVpIDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBk
aXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jcmVhdGVfYXJndW1lbnRzOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFyZ3VtZW50c0RvbmUKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKKy5vcENyZWF0ZUFyZ3VtZW50c0Rv
bmU6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBhbGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6
ZUNsYXNzSW5kZXgsIGNsYXNzSW5mb09mZnNldCwgc3RydWN0dXJlLCByZXN1bHQsIHNjcmF0Y2gx
LCBzY3JhdGNoMiwgc2xvd0Nhc2UpCisgICAgaWYgQUxXQVlTX0FMTE9DQVRFX1NMT1cKKyAgICAg
ICAgam1wIHNsb3dDYXNlCisgICAgZWxzZQorICAgICAgICBjb25zdCBvZmZzZXRPZk15U2l6ZUNs
YXNzID0gSlNHbG9iYWxEYXRhOjpoZWFwICsgSGVhcDo6bV9vYmplY3RTcGFjZSArIE1hcmtlZFNw
YWNlOjptX3ByZWNpc2VTaXplQ2xhc3NlcyArIHNpemVDbGFzc0luZGV4ICogc2l6ZW9mIE1hcmtl
ZEFsbG9jYXRvcgorICAgICAgICAKKyAgICAgICAgIyBGSVhNRTogd2UgY2FuIGdldCB0aGUgZ2xv
YmFsIGRhdGEgaW4gb25lIGxvYWQgZnJvbSB0aGUgc3RhY2suCisgICAgICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCBzY3JhdGNoMQorICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0
YVtzY3JhdGNoMV0sIHNjcmF0Y2gxCisgICAgICAgIAorICAgICAgICAjIEdldCB0aGUgb2JqZWN0
IGZyb20gdGhlIGZyZWUgbGlzdC4gICAgCisgICAgICAgIGxvYWRwIG9mZnNldE9mTXlTaXplQ2xh
c3MgKyBNYXJrZWRBbGxvY2F0b3I6Om1fZmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0sIHJlc3VsdAor
ICAgICAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UKKyAgICAgICAgCisgICAgICAgICMgUmVtb3Zl
IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LgorICAgICAgICBsb2FkcCBbcmVzdWx0XSwg
c2NyYXRjaDIKKyAgICAgICAgc3RvcmVwIHNjcmF0Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsg
TWFya2VkQWxsb2NhdG9yOjptX2ZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdCisgICAgCisgICAgICAg
ICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgorICAgICAgICBsb2FkcCBjbGFzc0luZm9PZmZzZXRb
c2NyYXRjaDFdLCBzY3JhdGNoMgorICAgICAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCisg
ICAgICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQorICAg
ICAgICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0XQorICAgICAgICBh
ZGRwIHNpemVvZiBKU09iamVjdCwgcmVzdWx0LCBzY3JhdGNoMQorICAgICAgICBzdG9yZXAgc2Ny
YXRjaDEsIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVtyZXN1bHRdCisgICAgZW5kCitlbmQK
KworX2xsaW50X29wX2NyZWF0ZV90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QwXSwgdDEKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlw
ZVt0MV0sIE9iamVjdFR5cGUsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6
Om1faW5oZXJpdG9ySURbdDBdLCB0MgorICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93Cisg
ICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNH
bG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MiwgdDAsIHQxLCB0MywgLm9wQ3Jl
YXRlVGhpc1Nsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRh
Z09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcENyZWF0ZVRoaXNTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfdGhpcykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9nZXRfY2FsbGVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0ICsgQ2FsbGVlW2Nmcl0sIHQxCisgICAgc3RvcmVp
IENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2NvbnZlcnRf
dGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmlu
ZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNTbG93CisgICAgZGlz
cGF0Y2goMikKKworLm9wQ29udmVydFRoaXNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9jb252ZXJ0X3RoaXMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X29i
amVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQw
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAg
SlNHbG9iYWxPYmplY3Q6Om1fZW1wdHlPYmplY3RTdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGFsbG9j
YXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5kZXgsIEpTR2xvYmFsRGF0
YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywgdDEsIHQwLCB0MiwgdDMsIC5vcE5ld09iamVjdFNs
b3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAg
IGRpc3BhdGNoKDIpCisKKy5vcE5ld09iamVjdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX25ld19vYmplY3QpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X2Fy
cmF5OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
bmV3X2FycmF5KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19hcnJheV9idWZm
ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9u
ZXdfYXJyYXlfYnVmZmVyKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19yZWdl
eHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9u
ZXdfcmVnZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX21vdjoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAs
IDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bfbm90OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEJvb2xlYW5UYWcs
IC5vcE5vdFNsb3cKKyAgICB4b3JpIDEsIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBk
aXNwYXRjaCgzKQorCisub3BOb3RTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9u
b3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcEVxU2xvdworICAgIGJpZXEg
dDIsIENlbGxUYWcsIC5vcEVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cK
KyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaWVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9v
bGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wRXFTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9lcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9l
cV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wRXFOdWxsSW1tZWRpYXRlCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJueiBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQx
CisgICAgam1wIC5vcEVxTnVsbE5vdEltbWVkaWF0ZQorLm9wRXFOdWxsSW1tZWRpYXRlOgorICAg
IGNpZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2llcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAg
IG9yaSB0MiwgdDEKKy5vcEVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRh
ZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVxOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIHQzLCAub3BOZXFTbG93Cisg
ICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wTmVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAu
b3BOZXFTbG93CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgY2luZXEgdDAsIHQxLCB0MAorICAg
IHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BOZXFTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXEpCisgICAgZGlzcGF0Y2goNCkKKyAg
ICAKKworX2xsaW50X29wX25lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0
MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVs
bEltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRi
eiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKKy5vcE5l
cU51bGxJbW1lZGlhdGU6CisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyCisgICAgY2luZXEgdDEs
IFVuZGVmaW5lZFRhZywgdDEKKyAgICBhbmRpIHQyLCB0MQorLm9wTmVxTnVsbE5vdEltbWVkaWF0
ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3Rv
cmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitt
YWNybyBzdHJpY3RFcShlcXVhbGl0eU9wZXJhdGlvbiwgaGVscGVyKQorICAgIGxvYWRpIDEyW1BD
XSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQy
LCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAg
ICBiaW5lcSB0MiwgdDMsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAg
YmluZXEgdDIsIENlbGxUYWcsIC5ub3RTdHJpbmcKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0
dXJlW3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKKyAgICBi
Ym5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5n
VHlwZSwgLm5vdFN0cmluZworICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUlu
Zm86Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93Cisubm90U3RyaW5nOgorICAgIGxvYWRp
IDRbUENdLCB0MgorICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDApCisgICAgc3RvcmVp
IEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxI
ZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50X29wX3N0cmljdGVx
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQs
IHJlc3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9zdHJp
Y3RlcSkKKworCitfbGxpbnRfb3BfbnN0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwgcmlnaHQs
IHJlc3VsdCBlbmQsIF9sbGludF9oZWxwZXJfbnN0cmljdGVxKQorCisKK19sbGludF9vcF9sZXNz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbGVz
cykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9sZXNzZXE6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzZXEpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dyZWF0ZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfZ3JlYXRlcmVxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X3ByZV9pbmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFByZUluY1Nsb3cKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGJhZGRpbyAxLCB0MSwg
Lm9wUHJlSW5jU2xvdworICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQor
ICAgIGRpc3BhdGNoKDIpCisKKy5vcFByZUluY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3ByZV9pbmMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJlX2RlYzoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdworICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNT
bG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0
Y2goMikKKworLm9wUHJlRGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJl
X2RlYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9wb3N0X2luYzoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisg
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdEluY1Nsb3cK
KyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdEluY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYmFkZGlvIDEsIHQzLCAub3BQ
b3N0SW5jU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0SW5jRG9uZToKKyAgICBkaXNwYXRjaCgz
KQorCisub3BQb3N0SW5jU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9p
bmMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfcG9zdF9kZWM6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAg
IGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50MzJUYWcsIC5vcFBvc3REZWNTbG93Cisg
ICAgYmllcSB0MCwgdDEsIC5vcFBvc3REZWNEb25lCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDIKKyAgICBtb3ZlIHQyLCB0MworICAgIGJzdWJpbyAxLCB0MywgLm9wUG9z
dERlY1Nsb3cKKyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAg
IHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorLm9wUG9zdERlY0RvbmU6CisgICAgZGlzcGF0Y2goMykK
KworLm9wUG9zdERlY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bvc3RfZGVj
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3RvX2pzbnVtYmVyOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmllcSB0MiwgSW50MzJU
YWcsIC5vcFRvSnNudW1iZXJJc0ludAorICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BU
b0pzbnVtYmVyU2xvdworLm9wVG9Kc251bWJlcklzSW50OgorICAgIHN0b3JlaSB0MiwgVGFnT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhd
CisgICAgZGlzcGF0Y2goMykKKworLm9wVG9Kc251bWJlclNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3RvX2pzbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X25lZ2F0ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAg
bG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQor
ICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CisgICAgYnRpeiB0Miwg
MHg3ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdworICAgIG5lZ2kgdDIKKyAgICBzdG9yZWkgSW50MzJU
YWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisub3BOZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlh
IHQxLCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKKyAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCisg
ICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOZWdhdGVTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZWdhdGUpCisgICAgZGlzcGF0Y2goMykKKwor
CittYWNybyBiaW5hcnlPcEN1c3RvbVN0b3JlKGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSwgZG91
YmxlT3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhb
UENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCBJbnQzMlRh
ZywgLm9wMU5vdEludAorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGxv
YWRpIDRbUENdLCB0MgorICAgIGludGVnZXJPcGVyYXRpb25BbmRTdG9yZSh0MywgdDEsIHQwLCAu
c2xvdywgdDIpCisgICAgZGlzcGF0Y2goNSkKKworLm9wMU5vdEludDoKKyAgICAjIEZpcnN0IG9w
ZXJhbmQgaXMgZGVmaW5pdGVseSBub3QgYW4gaW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgY291bGQg
YmUgYW55dGhpbmcuCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQzLCBM
b3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5z
bG93CisgICAgY2kyZCB0MSwgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdElu
dE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAg
IGxvYWRpIDRbUENdLCB0MQorICAgIGZpaTJkIHQwLCB0MiwgZnQwCisgICAgZG91YmxlT3BlcmF0
aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNo
KDUpCisKKy5vcDJOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgYW4g
aW50LCB0aGUgc2Vjb25kIG9wZXJhbmQgaXMgZGVmaW5pdGVseSBub3QuCisgICAgbG9hZGkgNFtQ
Q10sIHQyCisgICAgYmlhIHQzLCBMb3dlc3RUYWcsIC5zbG93CisgICAgY2kyZCB0MCwgZnQwCisg
ICAgZmlpMmQgdDEsIHQzLCBmdDEKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAg
c3RvcmVkIGZ0MCwgW2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLnNsb3c6CisgICAg
Y2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNSkKK2VuZAorCittYWNybyBiaW5hcnlP
cChpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBiaW5hcnlP
cEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93
LCBpbmRleCkKKyAgICAgICAgICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cp
CisgICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQor
ICAgICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisg
ICAgICAgIGVuZCwKKyAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBoZWxwZXIpCitlbmQKKworX2xs
aW50X29wX2FkZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAg
ICAgX2xsaW50X2hlbHBlcl9hZGQpCisKKworX2xsaW50X29wX211bDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFn
LCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjb25zdCBzY3JhdGNoID0g
aW50MzJUYWcgICAjIFdlIGtub3cgdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIGludDMyVGFnIHJlZ2lz
dGVyIHNpbmNlIGl0IGhhcyBhIGNvbnN0YW50LgorICAgICAgICAgICAgbW92ZSByaWdodCwgc2Ny
YXRjaAorICAgICAgICAgICAgYm11bGlvIGxlZnQsIHNjcmF0Y2gsIHNsb3cKKyAgICAgICAgICAg
IGJ0aW56IHNjcmF0Y2gsIC5kb25lCisgICAgICAgICAgICBiaWx0IGxlZnQsIDAsIHNsb3cKKyAg
ICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgLmRvbmU6CisgICAgICAgICAg
ICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAg
c3RvcmVpIHNjcmF0Y2gsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5k
LAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIG11bGQgbGVmdCwgcmlnaHQgZW5kLAorICAg
ICAgICBfbGxpbnRfaGVscGVyX211bCkKKworCitfbGxpbnRfb3Bfc3ViOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93
KSBic3ViaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQpIHN1YmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3N1YikKKwor
CitfbGxpbnRfb3BfZGl2OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3Rv
bVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRl
eCkKKyAgICAgICAgICAgIGNpMmQgbGVmdCwgZnQwCisgICAgICAgICAgICBjaTJkIHJpZ2h0LCBm
dDEKKyAgICAgICAgICAgIGRpdmQgZnQwLCBmdDEKKyAgICAgICAgICAgIGJjZDJpIGZ0MSwgcmln
aHQsIC5ub3RJbnQKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBp
bmRleCwgOF0KKyAgICAgICAgICAgIGptcCAuZG9uZQorICAgICAgICAubm90SW50OgorICAgICAg
ICAgICAgc3RvcmVkIGZ0MSwgW2NmciwgaW5kZXgsIDhdCisgICAgICAgIC5kb25lOgorICAgICAg
ICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgZGl2ZCBsZWZ0LCByaWdodCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfZGl2KQorCisKK19sbGludF9vcF9tb2Q6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9tb2QpCisgICAgZGlz
cGF0Y2goNCkKKworCittYWNybyBiaXRPcChvcGVyYXRpb24sIGhlbHBlciwgYWR2YW5jZSkKKyAg
ICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQw
LCB0MiwgdDApCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBJ
bnQzMlRhZywgLnNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBvcGVyYXRpb24odDEsIHQw
LCAuc2xvdykKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3Jl
aSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCisK
Ky5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCitl
bmQKKworX2xsaW50X29wX2xzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3Ao
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgbHNoaWZ0aSBsZWZ0LCByaWdodCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbHNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGlu
dF9vcF9yc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHJzaGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX3JzaGlmdCwKKyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfdXJzaGlm
dDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHVyc2hpZnRpIGxlZnQsIHJpZ2h0CisgICAgICAg
ICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAgIGVuZCwKKyAgICAgICAgX2xsaW50X2hl
bHBlcl91cnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF9iaXRhbmQ6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3cpIGFuZGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdGFuZCwK
KyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0eG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSB4b3JpIGxlZnQs
IHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9iaXR4b3IsCisgICAgICAgIDUpCisK
KworX2xsaW50X29wX2JpdG9yOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAg
ICAgICBfbGxpbnRfaGVscGVyX2JpdG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRu
b3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBi
aW5lcSB0MiwgSW50MzJUYWcsIC5vcEJpdG5vdFNsb3cKKyAgICBub3RpIHQzCisgICAgc3RvcmVp
IHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BCaXRub3RTbG93OgorICAgIGNhbGxI
ZWxwZXIoX2xsaW50X2hlbHBlcl9iaXRub3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRf
b3BfY2hlY2tfaGFzX2luc3RhbmNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywg
dDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1f
ZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93
CisgICAgZGlzcGF0Y2goMikKKworLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2NoZWNrX2hhc19pbnN0YW5jZSkKKyAgICBkaXNwYXRjaCgyKQor
CisKK19sbGludF9vcF9pbnN0YW5jZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIENo
ZWNrIHRoYXQgYmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0luc3RhbmNlIGJlaGF2
aW9yLgorICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQuCisgICAgbG9hZGkg
MTJbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVW5jaGVja2VkKHQx
LCB0MCkKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0Rl
ZmF1bHRIYXNJbnN0YW5jZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICAKKyAgICAjIEFjdHVhbGx5
IGRvIHRoZSB3b3JrLgorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcElu
c3RhbmNlb2ZTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MgorICAg
IGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0
VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEluc3RhbmNlb2ZTbG93
KQorICAgIAorICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBlLCB0MiA9IHZhbHVl
CisgICAgbW92ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxvb3A6CisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0Ml0sIHQyCisgICAgbG9hZGkgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBh
eWxvYWRPZmZzZXRbdDJdLCB0MgorICAgIGJwZXEgdDIsIHQxLCAub3BJbnN0YW5jZW9mRG9uZQor
ICAgIGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcAorCisgICAgbW92ZSAwLCB0MAorLm9wSW5z
dGFuY2VvZkRvbmU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4
XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNo
KDUpCisKKy5vcEluc3RhbmNlb2ZTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9p
bnN0YW5jZW9mKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3R5cGVvZjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3R5cGVvZikKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc191bmRlZmluZWQ6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc191bmRlZmluZWQpCisgICAg
ZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfYm9vbGVhbjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Jvb2xlYW4pCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfaXNfbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX2lzX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2lzX3N0cmluZykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9pc19vYmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9pc19vYmplY3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNf
ZnVuY3Rpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9pc19mdW5jdGlvbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pbjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29sdmU6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX3Jlc29sdmVfc2tpcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfc2tpcCkKKyAgICBkaXNwYXRjaCg1KQor
CisKK21hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKKyAgICAjIE9wZXJhbmRzIGFyZSBh
cyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAg
IyA4W1BDXSAgIFByb3BlcnR5IGlkZW50aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2suCisg
ICAgIyAxMltQQ10gIFN0cnVjdHVyZSBwb2ludGVyLCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVj
b2RlIGdlbmVyYXRvci4KKyAgICAjIDE2W1BDXSAgT2Zmc2V0IGluIGdsb2JhbCBvYmplY3QsIGlu
aXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgIGxvYWRwIENvZGVCbG9j
a1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJwbmVxIHQxLCAxMltQ
Q10sIHNsb3cKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJv
cGVydHlTdG9yYWdlW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAoc2l6ZSAtIDEpICogNFtQQ10s
IHQwCisgICAgdmFsdWVQcm9maWxlKHQyLCB0MywgdDApCitlbmQKKworX2xsaW50X29wX3Jlc29s
dmVfZ2xvYmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICByZXNvbHZlR2xvYmFsKDYsIC5v
cFJlc29sdmVHbG9iYWxTbG93KQorICAgIGRpc3BhdGNoKDYpCisKKy5vcFJlc29sdmVHbG9iYWxT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2JhbCkKKyAgICBk
aXNwYXRjaCg2KQorCisKKyMgR2l2ZXMgeW91IHRoZSBzY29wZSBpbiB0MCwgd2hpbGUgYWxsb3dp
bmcgeW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlvbmFsIGNoZWNrcyBvbiB0aGUKKyMg
c2NvcGVzIGFzIHRoZXkgYXJlIHRyYXZlcnNlZC4gc2NvcGVDaGVjaygpIGlzIGNhbGxlZCB3aXRo
IHR3byBhcmd1bWVudHM6IHRoZSByZWdpc3RlcgorIyBob2xkaW5nIHRoZSBzY29wZSwgYW5kIGEg
cmVnaXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc2NyYXRjaC4gTm90ZSB0aGF0IHRoaXMgZG9l
cyBub3QKKyMgdXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQgc3R1ZmYgaW4gdDMgaWYgbmVlZCBiZS4K
K21hY3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2NvcGVDaGVjaykKKyAgICBs
b2FkcCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAorICAgIGxvYWRpIGRlQnJ1
aWppbkluZGV4T3BlcmFuZCwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorICAgIAorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGJpbmVxIENvZGVCbG9jazo6bV9jb2RlVHlw
ZVt0MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AKKyAgICBidGJ6IENvZGVCbG9jazo6bV9uZWVkc0Z1
bGxTY29wZUNoYWluW3QxXSwgLmxvb3AKKyAgICAKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fYWN0
aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEKKworICAgICMgTmVlZCB0byBjb25kaXRpb25hbGx5IHNr
aXAgb3ZlciBvbmUgc2NvcGUuCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5
VmFsdWVUYWcsIC5ub0FjdGl2YXRpb24KKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2Fk
cCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisubm9BY3RpdmF0aW9uOgorICAgIHN1Ymkg
MSwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorLmxvb3A6CisgICAgc2NvcGVDaGVjayh0
MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBdLCB0MAorICAgIHN1Ymkg
MSwgdDIKKyAgICBidGlueiB0MiwgLmxvb3AKKworLmRvbmU6CitlbmQKKworX2xsaW50X29wX3Jl
c29sdmVfZ2xvYmFsX2R5bmFtaWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJ
VFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6
YWN0aXZhdGlvblN0cnVjdHVyZVt0M10sIHQzCisgICAgZ2V0U2NvcGUoCisgICAgICAgIDIwW1BD
XSwKKyAgICAgICAgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKQorICAgICAgICAgICAgbG9hZHAgU2Nv
cGVDaGFpbk5vZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGJwbmVxIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1
cGVyU2xvdworICAgICAgICBlbmQpCisgICAgcmVzb2x2ZUdsb2JhbCg3LCAub3BSZXNvbHZlR2xv
YmFsRHluYW1pY1Nsb3cpCisgICAgZGlzcGF0Y2goNykKKworLm9wUmVzb2x2ZUdsb2JhbER5bmFt
aWNTdXBlclNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZm9yX3Jl
c29sdmVfZ2xvYmFsX2R5bmFtaWMpCisgICAgZGlzcGF0Y2goNykKKworLm9wUmVzb2x2ZUdsb2Jh
bER5bmFtaWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX2dsb2Jh
bF9keW5hbWljKQorICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX2dldF9zY29wZWRfdmFy
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgor
ICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIElu
ZGV4IG9mIHJlZ2lzdGVyIGluIHRoZSBzY29wZS4KKyAgICAjIDEyW1BDXSAgRGUgQnJ1aWppbiBp
bmRleC4KKyAgICBnZXRTY29wZSgxMltQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQor
ICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRwIFNjb3Bl
Q2hhaW5Ob2RlOjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1f
cmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgdDMKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MCwgdDEpCisg
ICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGdldFNjb3BlKDhbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVu
ZCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwg
dDMsIHQyKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHdyaXRlQmFycmllcih0MywgdDIpCisg
ICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJp
YWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0
W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2Jq
ZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0
MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRP
ZmZzZXRbdDAsIHQxLCA4XSwgdDEKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4
XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGxvYWRpIDEy
W1BDXSwgdDMKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MykKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmpl
Y3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0
MiwgdDMpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQyLCB0MykKKyAg
ICBzdG9yZWkgdDIsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2Fk
T2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZl
X2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9yZXNvbHZlX2Jhc2UpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZW5zdXJlX3By
b3BlcnR5X2V4aXN0czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfcmVzb2x2ZV93aXRoX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKKyAgICBkaXNwYXRjaCg1
KQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF90aGlzKQorICAgIGRp
c3BhdGNoKDUpCisKKworX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgIyBXZSBvbmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3cs
IGFuZCB3ZSBkbyBub3QgbW9kaWZ5IHRoZQorICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwg
YWxsb3cgZm9yIHRoZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKKyAg
ICAjIHBpbmctcG9uZ2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdl
dF9ieV9pZCB3aWxsIGNvbnRpbnVlCisgICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3
IGNhY2hlLiBBdCB3b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAorICAgICMg
d2Ugd291bGQgaGF2ZSBiZWVuIGRvaW5nIGFueXdheS4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAs
IENlbGxUYWcsIHQzLCAub3BHZXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAg
bG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKKyAgICBicG5lcSBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgbG9hZGkgNFtQQ10s
IHQxCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0Ml0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9m
ZnNldFt0MCwgdDJdLCB0MgorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisg
ICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgMzJbUENd
LCB0MQorICAgIHZhbHVlUHJvZmlsZSh0MywgdDIsIHQxKQorICAgIGRpc3BhdGNoKDkpCisKKy5v
cEdldEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfaWQpCisg
ICAgZGlzcGF0Y2goOSkKKworCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50c19sZW5ndGg6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0
MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0
QXJndW1lbnRzTGVuZ3RoU2xvdworICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zm
c2V0W2Nmcl0sIHQyCisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhd
CisgICAgZGlzcGF0Y2goNCkKKworLm9wR2V0QXJndW1lbnRzTGVuZ3RoU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2Fk
aSAxMltQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwg
dDMKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93
CisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQy
LCB0MCwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQwLCB0MikKKyAgICBzdG9yZWkgdDAsIFRhZ09m
ZnNldFt0MywgdDFdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBk
aXNwYXRjaCg5KQorCisub3BQdXRCeUlkU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcHV0X2J5X2lkKQorICAgIGRpc3BhdGNoKDkpCisKKworbWFjcm8gcHV0QnlJZFRyYW5zaXRp
b24oYWRkaXRpb25hbENoZWNrcykKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQzCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJbUENd
LCB0MgorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNs
b3cKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9h
ZGkgMjBbUENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0s
IHQzCisgICAgYWRkcCB0MSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0Miwg
dDEsIHQyKQorICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgc3RvcmVpIHQxLCBUYWdPZmZz
ZXRbdDNdCisgICAgbG9hZGkgMjRbUENdLCB0MQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNl
dFt0M10KKyAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgZGlzcGF0
Y2goOSkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAg
IHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpIGVu
ZCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgIHB1dEJ5
SWRUcmFuc2l0aW9uKAorICAgICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBzbG93
KQorICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVzaW5n
IHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bworICAgICAgICAKKyAgICAg
ICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAorICAgICAgICAgICAgYXNzZXJ0KG1hY3JvIChv
aykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJlQ2hh
aW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8g
KG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBiaWVxIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUKKyAg
ICAgICAgLmxvb3A6CisgICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsg
UGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICAgICAgICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgICAgICAg
ICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdworICAgICAgICAgICAgYWRkcCA0
LCBzY3JhdGNoCisgICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFn
T2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisgICAgICAgIC5kb25lOgorICAg
ICAgICBlbmQpCisKKworX2xsaW50X29wX2RlbF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2RlbF9ieV9pZCkKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9nZXRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDEKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSAx
MltQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MQorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQyLCBDZWxsVGFnLCB0MCwgLm9wR2V0QnlW
YWxTbG93KQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MV0sIHQy
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIEludDMyVGFnLCB0MSwgLm9w
R2V0QnlWYWxTbG93KQorICAgIGJwbmVxIFt0MF0sIHQyLCAub3BHZXRCeVZhbFNsb3cKKyAgICBs
b2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDBdLCB0MworICAgIGJpYWVxIHQxLCBKU0FycmF5Ojpt
X3ZlY3Rvckxlbmd0aFt0MF0sIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDMsIHQxLCA4XSwg
dDIKKyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0Mywg
dDEsIDhdLCB0MQorICAgIGJpZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcEdldEJ5VmFsU2xvdwor
ICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIHZhbHVlUHJv
ZmlsZSh0MiwgdDEsIHQwKQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEdldEJ5VmFsU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg1KQor
CisKK19sbGludF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgYmluZXEgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xv
dworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBJbnQzMlRhZywgdDIsIC5v
cEdldEFyZ3VtZW50QnlWYWxTbG93KQorICAgIGFkZGkgMSwgdDIKKyAgICBsb2FkaSBBcmd1bWVu
dENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MQorICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0
QXJndW1lbnRCeVZhbFNsb3cKKyAgICBuZWdpIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAg
bG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0MAorICAg
IGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQx
CisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3BHZXRBcmd1bWVu
dEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2FyZ3VtZW50X2J5
X3ZhbCkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9nZXRfYnlfcG5hbWU6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEdldEJ5UG5hbWVTbG93KQorICAg
IGxvYWRpIDE2W1BDXSwgdDAKKyAgICBicG5lcSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcEdldEJ5UG5hbWVTbG93KQor
ICAgIGxvYWRpIDIwW1BDXSwgdDAKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MAorICAgIGJwbmVxIHQw
LCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0M10sIC5vcEdldEJ5
UG5hbWVTbG93CisgICAgbG9hZGkgMjRbUENdLCB0MAorICAgIGxvYWRpIFtjZnIsIHQwLCA4XSwg
dDAKKyAgICBzdWJpIDEsIHQwCisgICAgYmlhZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
Om1fbnVtQ2FjaGVhYmxlU2xvdHNbdDNdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRwIEpT
T2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0Ml0sIHQyCisgICAgbG9hZGkgVGFnT2Zmc2V0W3Qy
LCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MiwgdDAsIDhdLCB0MworICAg
IGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisg
ICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goNykK
KworLm9wR2V0QnlQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9i
eV9wbmFtZSkKKyAgICBkaXNwYXRjaCg3KQorCisKK19sbGludF9vcF9wdXRfYnlfdmFsOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBs
b2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgSW50
MzJUYWcsIHQyLCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQw
CisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDBdLCB0MAorICAgIGxvYWRwIEpT
R2xvYmFsRGF0YTo6anNBcnJheUNsYXNzSW5mb1t0MF0sIHQwCisgICAgYnBuZXEgW3QxXSwgdDAs
IC5vcFB1dEJ5VmFsU2xvdworICAgIGJpYWVxIHQyLCBKU0FycmF5OjptX3ZlY3Rvckxlbmd0aFt0
MV0sIC5vcFB1dEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MV0sIHQw
CisgICAgYmllcSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0s
IEVtcHR5VmFsdWVUYWcsIC5vcFB1dEJ5VmFsRW1wdHkKKy5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQ6
CisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQz
LCB0MSwgdDMpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MykKKyAgICBzdG9yZWkgdDEsIEFycmF5
U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XQorICAgIHN0b3JlaSB0Mywg
QXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XQorICAgIGRp
c3BhdGNoKDQpCisKKy5vcFB1dEJ5VmFsRW1wdHk6CisgICAgYWRkaSAxLCBBcnJheVN0b3JhZ2U6
Om1fbnVtVmFsdWVzSW5WZWN0b3JbdDBdCisgICAgYmliIHQyLCBBcnJheVN0b3JhZ2U6Om1fbGVu
Z3RoW3QwXSwgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorICAgIGFkZGkgMSwgdDIsIHQxCisgICAg
c3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fbGVuZ3RoW3QwXQorICAgIGptcCAub3BQdXRCeVZh
bFN0b3JlUmVzdWx0CisKKy5vcFB1dEJ5VmFsU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfcHV0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9kZWxfYnlf
dmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
ZGVsX2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaW5kZXg6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRf
YnlfaW5kZXgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dldHRlcl9zZXR0
ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9w
dXRfZ2V0dGVyX3NldHRlcikKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9sb29wOgor
ICAgIG5vcAorX2xsaW50X29wX2ptcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0
Y2hCcmFuY2goNFtQQ10pCisKKworX2xsaW50X29wX2ptcF9zY29wZXM6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9qbXBfc2NvcGVzKQorICAgIGRp
c3BhdGNoKDApCisKKworbWFjcm8ganVtcFRydWVPckZhbHNlKGNvbmRpdGlvbk9wLCBzbG93KQor
ICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQx
LCBCb29sZWFuVGFnLCB0MCwgLnNsb3cpCisgICAgY29uZGl0aW9uT3AodDAsIC50YXJnZXQpCisg
ICAgZGlzcGF0Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKwor
LnNsb3c6CisgICAgY2FsbEhlbHBlcihzbG93KQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xs
aW50X29wX2xvb3BfaWZfdHJ1ZToKKyAgICBub3AKK19sbGludF9vcF9qdHJ1ZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAganVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUs
IHRhcmdldCkgYnRpbnogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
anRydWUpCisKKworX2xsaW50X29wX2xvb3BfaWZfZmFsc2U6CisgICAgbm9wCitfbGxpbnRfb3Bf
amZhbHNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAg
ICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGl6IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2pmYWxzZSkKKworCittYWNybyBlcXVhbE51bGwoY2VsbEhhbmRsZXIs
IGltbWVkaWF0ZUhhbmRsZXIpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0s
IHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5pbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBjZWxsSGFuZGxlcihTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0Ml0sIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKKwor
LnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLmltbWVkaWF0ZToKKyAgICBv
cmkgMSwgdDEKKyAgICBpbW1lZGlhdGVIYW5kbGVyKHQxLCAudGFyZ2V0KQorICAgIGRpc3BhdGNo
KDMpCitlbmQKKworX2xsaW50X29wX2plcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJueiB2YWx1ZSwg
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVl
LCB0YXJnZXQpIGJpZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisgICAgCisKK19sbGlu
dF9vcF9qbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAg
ICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0YnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRl
ZmluZWQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaW5lcSB2
YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKworCitfbGxpbnRfb3Bfam5lcV9wdHI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0
MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wSm5lcVB0ckJy
YW5jaAorICAgIGJwZXEgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEsIC5vcEpuZXFQdHJG
YWxsVGhyb3VnaAorLm9wSm5lcVB0ckJyYW5jaDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10p
Cisub3BKbmVxUHRyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBjb21w
YXJlKGludGVnZXJDb21wYXJlLCBkb3VibGVDb21wYXJlLCBoZWxwZXIpCisgICAgbG9hZGkgNFtQ
Q10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MiwgdDAsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQzLCB0MiwgdDMpCisg
ICAgYmluZXEgdDAsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDIsIEludDMyVGFn
LCAub3AyTm90SW50CisgICAgaW50ZWdlckNvbXBhcmUodDEsIHQzLCAuanVtcFRhcmdldCkKKyAg
ICBkaXNwYXRjaCg0KQorCisub3AxTm90SW50OgorICAgIGJpYSB0MCwgTG93ZXN0VGFnLCAuc2xv
dworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisgICAgYmluZXEg
dDIsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDMsIGZ0MQorICAgIGptcCAub3AxTm90SW50
UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDMsIHQyLCBmdDEKKy5vcDFO
b3RJbnRSZWFkeToKKyAgICBmaWkyZCB0MSwgdDAsIGZ0MAorICAgIGRvdWJsZUNvbXBhcmUoZnQw
LCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDJOb3RJbnQ6CisgICAg
Y2kyZCB0MSwgZnQwCisgICAgYmlhIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgZmlpMmQgdDMs
IHQyLCBmdDEKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBk
aXNwYXRjaCg0KQorCisuanVtcFRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgxMltQQ10pCisK
Ky5zbG93OgorICAgIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGRpc3BhdGNoKDApCitlbmQKKwor
X2xsaW50X29wX2xvb3BfaWZfbGVzczoKKyAgICBub3AKK19sbGludF9vcF9qbGVzczoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX2psZXNzKQorCisKK19sbGludF9vcF9qbmxlc3M6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFy
Z2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAg
ICAgX2xsaW50X2hlbHBlcl9qbmxlc3MpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcjoK
KyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
ZGd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVh
dGVyKQorCisKK19sbGludF9vcF9qbmdyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiZGx0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBl
cl9qbmdyZWF0ZXIpCisKKworX2xsaW50X29wX2xvb3BfaWZfbGVzc2VxOgorICAgIG5vcAorX2xs
aW50X29wX2psZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXEgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3NlcSkKKworCitf
bGxpbnRfb3Bfam5sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndHVuIGxlZnQs
IHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzc2VxKQorCisK
K19sbGludF9vcF9sb29wX2lmX2dyZWF0ZXJlcToKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRl
cmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxIGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pncmVhdGVyZXEpCisKKworX2xsaW50X29w
X2puZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAg
ICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVu
ZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHR1biBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbmdyZWF0ZXJlcSkKKworCitf
bGxpbnRfb3BfbG9vcF9oaW50OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRj
aFRvSklURm9yTG9vcCgpCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2lt
bToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRp
IDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFb
dDJdLCB0MgorICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMgICAjIEZJWE1FOiB3
b3VsZCBiZSBuaWNlIHRvIHBlZXBob2xlIHRoaXMhCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJl
RGF0YTo6bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3Qy
XSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wU3dpdGNo
SW1tTm90SW50CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlh
ZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRb
dDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6
YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQzCisgICAgbG9hZGkgW3Qz
LCB0MCwgNF0sIHQxCisgICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBk
aXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCisKKy5vcFN3aXRjaEltbU5vdEludDoKKyAgICBi
aWIgdDEsIExvd2VzdFRhZywgLm9wU3dpdGNoSW1tU2xvdyAgIyBHbyB0byBzbG93IHBhdGggaWYg
aXQncyBhIGRvdWJsZS4KKy5vcFN3aXRjaEltbUZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJh
bmNoKDhbUENdKQorCisub3BTd2l0Y2hJbW1TbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9zd2l0Y2hfaW1tKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3N3aXRjaF9j
aGFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9h
ZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0
YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MworICAgIGxvYWRw
IENvZGVCbG9jazo6UmFyZURhdGE6Om1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgYWRkcCB0MywgdDIKKyAgICBiaW5lcSB0MSwgQ2Vs
bFRhZywgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0MF0sIHQxCisgICAgYmJuZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fdHlwZVt0MV0sIFN0cmluZ1R5cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxv
YWRwIEpTU3RyaW5nOjptX3ZhbHVlW3QwXSwgdDAKKyAgICBiaW5lcSBTdHJpbmdJbXBsOjptX2xl
bmd0aFt0MF0sIDEsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFN0cmluZ0lt
cGw6Om1fZGF0YThbdDBdLCB0MQorICAgIGJ0aW56IFN0cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdz
W3QwXSwgSGFzaEZsYWdzOEJpdEJ1ZmZlciwgLm9wU3dpdGNoQ2hhcjhCaXQKKyAgICBsb2FkaCBb
dDFdLCB0MAorICAgIGptcCAub3BTd2l0Y2hDaGFyUmVhZHkKKy5vcFN3aXRjaENoYXI4Qml0Ogor
ICAgIGxvYWRiIFt0MV0sIHQwCisub3BTd2l0Y2hDaGFyUmVhZHk6CisgICAgc3ViaSBTaW1wbGVK
dW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJh
bmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91
Z2gKKyAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZm
ZXJPZmZzZXRbdDJdLCB0MgorICAgIGxvYWRpIFt0MiwgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEs
IC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQx
KQorCisub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10p
CisKKworX2xsaW50X29wX3N3aXRjaF9zdHJpbmc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zd2l0Y2hfc3RyaW5nKQorICAgIGRpc3BhdGNoKDAp
CisKKworX2xsaW50X29wX25ld19mdW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBidGl6
IDEyW1BDXSwgLm9wTmV3RnVuY1VuY2hlY2tlZAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wTmV3RnVuY0RvbmUK
Ky5vcE5ld0Z1bmNVbmNoZWNrZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19m
dW5jKQorLm9wTmV3RnVuY0RvbmU6CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3
X2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfbmV3X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gZG9DYWxsKGhl
bHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9h
ZHAgTExJbnRDYWxsTGlua0luZm86OmNhbGxlZVt0MV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BDYWxsU2xvdykKKyAgICBiaW5lcSB0
MywgdDIsIC5vcENhbGxTbG93CisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGFkZHAgMjQsIFBD
CisgICAgbHNoaWZ0aSAzLCB0MworICAgIGFkZHAgY2ZyLCB0MyAgIyB0MyBjb250YWlucyB0aGUg
bmV3IHZhbHVlIG9mIGNmcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fc2NvcGVDaGFpblt0Ml0s
IHQwCisgICAgc3RvcmVpIHQyLCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3Jl
aSB0MCwgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgbG9hZGkgOCAtIDI0W1BD
XSwgdDIKKyAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAg
IHN0b3JlcCBjZnIsIENhbGxlckZyYW1lW3QzXQorICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3Vu
dCArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09m
ZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10K
KyAgICBtb3ZlIHQzLCBjZnIKKyAgICBjYWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29k
ZVRhcmdldFt0MV0KKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKy5vcENhbGxTbG93OgorICAg
IHNsb3dQYXRoRm9yQ2FsbCg2LCBoZWxwZXIpCitlbmQKKworX2xsaW50X29wX2NhbGw6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRfaGVscGVyX2NhbGwpCisKKworX2xs
aW50X29wX2NvbnN0cnVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGlu
dF9oZWxwZXJfY29uc3RydWN0KQorCisKK19sbGludF9vcF9jYWxsX3ZhcmFyZ3M6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBfbGxpbnRfaGVscGVyX2NhbGxf
dmFyYXJncykKKworCitfbGxpbnRfb3BfY2FsbF9ldmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICAKKyAgICAjIEV2YWwgaXMgZXhlY3V0ZWQgaW4gb25lIG9mIHR3byBtb2RlczoKKyAgICAj
CisgICAgIyAxKSBXZSBmaW5kIHRoYXQgd2UncmUgcmVhbGx5IGludm9raW5nIGV2YWwoKSBpbiB3
aGljaCBjYXNlIHRoZQorICAgICMgICAgZXhlY3V0aW9uIGlzIHBlcmZvbWVkIGVudGlyZWx5IGlu
c2lkZSB0aGUgaGVscGVyLCBhbmQgaXQKKyAgICAjICAgIHJldHVybnMgdGhlIFBDIG9mIGEgZnVu
Y3Rpb24gdGhhdCBqdXN0IHJldHVybnMgdGhlIHJldHVybiB2YWx1ZQorICAgICMgICAgdGhhdCB0
aGUgZXZhbCByZXR1cm5lZC4KKyAgICAjCisgICAgIyAyKSBXZSBmaW5kIHRoYXQgd2UncmUgaW52
b2tpbmcgc29tZXRoaW5nIGNhbGxlZCBldmFsKCkgdGhhdCBpcyBub3QKKyAgICAjICAgIHRoZSBy
ZWFsIGV2YWwuIFRoZW4gdGhlIGhlbHBlciByZXR1cm5zIHRoZSBQQyBvZiB0aGUgdGhpbmcgdG8K
KyAgICAjICAgIGNhbGwsIGFuZCB3ZSBjYWxsIGl0LgorICAgICMKKyAgICAjIFRoaXMgYWxsb3dz
IHVzIHRvIGhhbmRsZSB0d28gY2FzZXMsIHdoaWNoIHdvdWxkIHJlcXVpcmUgYSB0b3RhbCBvZgor
ICAgICMgdXAgdG8gZm91ciBwaWVjZXMgb2Ygc3RhdGUgdGhhdCBjYW5ub3QgYmUgZWFzaWx5IHBh
Y2tlZCBpbnRvIHR3bworICAgICMgcmVnaXN0ZXJzIChDIGZ1bmN0aW9ucyBjYW4gcmV0dXJuIHVw
IHRvIHR3byByZWdpc3RlcnMsIGVhc2lseSk6CisgICAgIworICAgICMgLSBUaGUgY2FsbCBmcmFt
ZSByZWdpc3Rlci4gVGhpcyBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4gbW9kaWZpZWQKKyAgICAj
ICAgYnkgdGhlIGhlbHBlciwgYnV0IHRoZSBjb252ZW50aW9uIGlzIHRoYXQgaXQgcmV0dXJucyBp
dC4gSXQncyBub3QKKyAgICAjICAgdG90YWxseSBjbGVhciBpZiB0aGF0J3MgbmVjZXNzYXJ5LCBz
aW5jZSB0aGUgY2ZyIGlzIGNhbGxlZSBzYXZlLgorICAgICMgICBCdXQgdGhhdCdzIG91ciBzdHls
ZSBpbiB0aGlzIGhlcmUgaW50ZXJwcmV0ZXIgc28gd2Ugc3RpY2sgd2l0aCBpdC4KKyAgICAjCisg
ICAgIyAtIEEgYml0IHRvIHNheSBpZiB0aGUgaGVscGVyIHN1Y2Nlc3NmdWxseSBleGVjdXRlZCB0
aGUgZXZhbCBhbmQgaGFzCisgICAgIyAgIHRoZSByZXR1cm4gdmFsdWUsIG9yIGRpZCBub3QgZXhl
Y3V0ZSB0aGUgZXZhbCBidXQgaGFzIGEgUEMgZm9yIHVzCisgICAgIyAgIHRvIGNhbGwuCisgICAg
IworICAgICMgLSBFaXRoZXI6CisgICAgIyAgIC0gVGhlIEpTIHJldHVybiB2YWx1ZSAodHdvIHJl
Z2lzdGVycyksIG9yCisgICAgIworICAgICMgICAtIFRoZSBQQyB0byBjYWxsLgorICAgICMKKyAg
ICAjIEl0IHR1cm5zIG91dCB0byBiZSBlYXNpZXIgdG8ganVzdCBhbHdheXMgaGF2ZSB0aGlzIHJl
dHVybiB0aGUgY2ZyCisgICAgIyBhbmQgYSBQQyB0byBjYWxsLCBhbmQgdGhhdCBQQyBtYXkgYmUg
YSBkdW1teSB0aHVuayB0aGF0IGp1c3QKKyAgICAjIHJldHVybnMgdGhlIEpTIHZhbHVlIHRoYXQg
dGhlIGV2YWwgcmV0dXJuZWQuCisgICAgCisgICAgc2xvd1BhdGhGb3JDYWxsKDQsIF9sbGludF9o
ZWxwZXJfY2FsbF9ldmFsKQorCisKK19sbGludF9nZW5lcmljX3JldHVybl9wb2ludDoKKyAgICBk
aXNwYXRjaEFmdGVyQ2FsbCgpCisKKworX2xsaW50X29wX3RlYXJfb2ZmX2FjdGl2YXRpb246Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDhbUENd
LCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9w
VGVhck9mZkFjdGl2YXRpb25DcmVhdGVkCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0s
IEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZAorLm9wVGVhck9m
ZkFjdGl2YXRpb25DcmVhdGVkOgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29m
Zl9hY3RpdmF0aW9uKQorLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkOgorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX3RlYXJfb2ZmX2FyZ3VtZW50czoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3ViaSAxLCB0MCAgICMgR2V0IHRoZSB1
bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQwLCA4
XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQorLm9wVGVhck9mZkFyZ3Vt
ZW50c05vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBkb1JldHVybigpCisg
ICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBj
ZnIKKyAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICByZXQKK2Vu
ZAorCitfbGxpbnRfb3BfcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRj
aFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFu
dE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX2Nh
bGxfcHV0X3Jlc3VsdDoKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMK
KyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHZhbHVlUHJvZmlsZSh0MSwgdDAsIHQzKQorICAg
IHRyYWNlRXhlY3V0aW9uKCkgIyBOZWVkcyB0byBiZSBoZXJlIGJlY2F1c2UgaXQgd291bGQgY2xv
YmJlciB0MSwgdDAKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXRfb2JqZWN0X29y
X3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGls
b2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MiwgdDEsIHQwKQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BSZXRPYmplY3RPclRoaXNOb3RP
YmplY3QKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYmIgU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5v
cFJldE9iamVjdE9yVGhpc05vdE9iamVjdAorICAgIGRvUmV0dXJuKCkKKworLm9wUmV0T2JqZWN0
T3JUaGlzTm90T2JqZWN0OgorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX21ldGhv
ZF9jaGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNo
ZWNrcyBhbmQgdXNlIG5vcm1hbCBnZXRfYnlfaWQgb3B0aW1pemF0aW9ucy4KKyAgICBkaXNwYXRj
aCgxKQorCisKK19sbGludF9vcF9zdHJjYXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9zdHJjYXQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfdG9fcHJpbWl0aXZlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQy
LCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFRvUHJpbWl0aXZlSXNJbW0KKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm9wVG9Qcmlt
aXRpdmVTbG93Q2FzZQorLm9wVG9QcmltaXRpdmVJc0ltbToKKyAgICBzdG9yZWkgdDEsIFRhZ09m
ZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4
XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcFRvUHJpbWl0aXZlU2xvd0Nhc2U6CisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX3RvX3ByaW1pdGl2ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9nZXRfcG5hbWVzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfZ2V0X3BuYW1lcykKKyAgICBkaXNwYXRjaCgwKSAjIFRoZSBoZWxwZXIg
ZWl0aGVyIGFkdmFuY2VzIHRoZSBQQyBvciBqdW1wcyB1cyB0byBzb21ld2hlcmUgZWxzZS4KKwor
CitfbGxpbnRfb3BfbmV4dF9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
MTJbUENdLCB0MQorICAgIGxvYWRpIDE2W1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdLCB0MAorICAgIGJpZXEgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0s
IC5vcE5leHRQbmFtZUVuZAorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDIsIDhdLCB0MgorICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
Om1fanNTdHJpbmdzW3QyXSwgdDMKKyAgICBsb2FkaSBbdDMsIHQwLCA4XSwgdDMKKyAgICBhZGRp
IDEsIHQwCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9h
ZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQor
ICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDhbUENd
LCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGxv
YWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0
MAorICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCisgICAgYnRweiBb
dDBdLCAub3BOZXh0UG5hbWVUYXJnZXQKKy5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcDoK
KyAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbdDFdLCBOdWxsVGFn
LCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBh
eWxvYWRPZmZzZXRbdDFdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0
MQorICAgIGJwbmVxIHQxLCBbdDBdLCAub3BOZXh0UG5hbWVTbG93CisgICAgYWRkcCA0LCB0MAor
ICAgIGJ0cG56IFt0MF0sIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcAorLm9wTmV4dFBu
YW1lVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDI0W1BDXSkKKworLm9wTmV4dFBuYW1lRW5k
OgorICAgIGRpc3BhdGNoKDcpCisKKy5vcE5leHRQbmFtZVNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX25leHRfcG5hbWUpICMgVGhpcyBlaXRoZXIga2VlcHMgdGhlIFBDIHdoZXJl
IGl0IHdhcyAoY2F1c2luZyB1cyB0byBsb29wKSBvciBzZXRzIGl0IHRvIHRhcmdldC4KKyAgICBk
aXNwYXRjaCgwKQorCisKK19sbGludF9vcF9wdXNoX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHVzaF9zY29wZSkKKyAgICBkaXNwYXRj
aCgyKQorCisKK19sbGludF9vcF9wb3Bfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3Bfc2NvcGUpCisgICAgZGlzcGF0Y2goMSkKKwor
CitfbGxpbnRfb3BfcHVzaF9uZXdfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX25ld19zY29wZSkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9jYXRjaDoKKyAgICAjIFRoaXMgaXMgd2hlcmUgd2UgZW5kIHVwIGZyb20g
dGhlIEpJVCdzIHRocm93IHRyYW1wb2xpbmUgKGJlY2F1c2UgdGhlCisgICAgIyBtYWNoaW5lIGNv
ZGUgcmV0dXJuIGFkZHJlc3Mgd2lsbCBiZSBzZXQgdG8gX2xsaW50X29wX2NhdGNoKSwgYW5kIGZy
b20KKyAgICAjIHRoZSBpbnRlcnByZXRlcidzIHRocm93IHRyYW1wb2xpbmUgKHNlZSBfbGxpbnRf
dGhyb3dfdHJhbXBvbGluZSkuCisgICAgIyBUaGUgSklUIHRocm93aW5nIHByb3RvY29sIGNhbGxz
IGZvciB0aGUgY2ZyIHRvIGJlIGluIHQwLiBUaGUgdGhyb3dpbmcKKyAgICAjIGNvZGUgbXVzdCBo
YXZlIGtub3duIHRoYXQgd2Ugd2VyZSB0aHJvd2luZyB0byB0aGUgaW50ZXJwcmV0ZXIsIGFuZCBo
YXZlCisgICAgIyBzZXQgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhyb3cu
CisgICAgbW92ZSB0MCwgY2ZyCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtz
cF0sIHQzCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnByZXRlclBDRm9yVGhy
b3dbdDNdLCBQQworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9m
ZnNldFt0M10sIHQwCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZz
ZXRbdDNdLCB0MQorICAgIHN0b3JlaSAwLCBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFBheWxv
YWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIEpTR2xvYmFsRGF0YTo6ZXhj
ZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSAgICAgICAKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBz
dG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFRhZ09m
ZnNldFtjZnIsIHQyLCA4XQorICAgIHRyYWNlRXhlY3V0aW9uKCkgICMgVGhpcyBuZWVkcyB0byBi
ZSBoZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjbG9iYmVyIHQwLCB0MSwgdDIsIHQzIGFi
b3ZlLgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93OgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGhyb3cpCisgICAgZGlzcGF0
Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3dfcmVmZXJlbmNlX2Vycm9yOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdGhyb3dfcmVmZXJlbmNlX2Vy
cm9yKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2pzcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYWRkaSAzICogNCwgUEMsIHQxCisgICAg
c3RvcmVpIHQxLCBbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitf
bGxpbnRfb3Bfc3JldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQw
CisgICAgbG9hZHAgW2NmciwgdDAsIDhdLCBQQworICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50
X29wX2RlYnVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfZGVidWcpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJvZmlsZV93aWxs
X2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVu
YWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BQcm9maWxl
V2lsbENhbGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfd2lsbF9j
YWxsKQorLm9wUHJvZmlsZVdpbGxDYWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9wcm9maWxlX2RpZF9jYWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBK
SVRTdGFja0ZyYW1lOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2Vbc3BdLCB0MAorICAgIGJ0cHog
W3QwXSwgLm9wUHJvZmlsZVdpbGxDYWxsRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9wcm9maWxlX2RpZF9jYWxsKQorLm9wUHJvZmlsZURpZENhbGxEb25lOgorICAgIGRpc3BhdGNo
KDIpCisKKworX2xsaW50X29wX2VuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tT
d2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQw
LCA4XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X3Rocm93X2Zyb21faGVscGVyX3Ry
YW1wb2xpbmU6CisgICAgIyBXaGVuIHRocm93aW5nIGZyb20gdGhlIGludGVycHJldGVyIChpLmUu
IHRocm93aW5nIGZyb20gTExJbnRIZWxwZXJzKSwgc28KKyAgICAjIHRoZSB0aHJvdyB0YXJnZXQg
aXMgbm90IG5lY2Vzc2FyaWx5IGludGVycHJldGVkIGNvZGUsIHdlIGNvbWUgdG8gaGVyZS4KKyAg
ICAjIFRoaXMgZXNzZW50aWFsbHkgZW11bGF0ZXMgdGhlIEpJVCdzIHRocm93aW5nIHByb3RvY29s
LgorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRw
IEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2Jh
bERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKK19sbGludF90aHJvd19kdXJp
bmdfY2FsbF90cmFtcG9saW5lOgorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0
MikKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2Fk
cCBKU0dsb2JhbERhdGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9i
YWxEYXRhOjp0YXJnZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCisjIExhc3RseSwgbWFrZSBz
dXJlIHRoYXQgd2UgY2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bj
b2Rlcy4KKyMgVGhlc2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTElu
dCBvciBlaXRoZXIgSklULiBXZSBhc3NlcnQKKyMgYXMgbXVjaC4KKworbWFjcm8gbm90U3VwcG9y
dGVkKCkKKyAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBjcmFzaCgpCisgICAgZWxzZQor
ICAgICAgICAjIFdlIHNob3VsZCB1c2Ugd2hhdGV2ZXIgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIGlu
c3RydWN0aW9uIGlzLCBqdXN0IHRvCisgICAgICAgICMgZW5zdXJlIHRoYXQgdGhlcmUgaXMgYSBn
YXAgYmV0d2VlbiBpbnN0cnVjdGlvbiBsYWJlbHMuIElmIG11bHRpcGxlCisgICAgICAgICMgc21h
bGxlc3QgaW5zdHJ1Y3Rpb25zIGV4aXN0LCB3ZSBzaG91bGQgcGljayB0aGUgb25lIHRoYXQgaXMg
bW9zdAorICAgICAgICAjIGxpa2VseSByZXN1bHQgaW4gZXhlY3V0aW9uIGJlaW5nIGhhbHRlZC4g
Q3VycmVudGx5IHRoYXQgaXMgdGhlIGJyZWFrCisgICAgICAgICMgaW5zdHJ1Y3Rpb24gb24gYWxs
IGFyY2hpdGVjdHVyZXMgd2UncmUgaW50ZXJlc3RlZCBpbi4gKEJyZWFrIGlzIGludDMKKyAgICAg
ICAgIyBvbiBJbnRlbCwgd2hpY2ggaXMgMSBieXRlLCBhbmQgYmtwdCBvbiBBUk12Nywgd2hpY2gg
aXMgMiBieXRlcy4pCisgICAgICAgIGJyZWFrCisgICAgZW5kCitlbmQKKworX2xsaW50X29wX2dl
dF9hcnJheV9sZW5ndGg6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9p
ZF9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3Rv
bV9jaGFpbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3Rv
bV9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3Rv
bV9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2VuZXJp
YzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9jaGFp
bjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9wcm90
bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9zZWxm
OgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfcHJvdG86CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9zZWxmOgorICAgIG5vdFN1cHBv
cnRlZCgpCisKK19sbGludF9vcF9nZXRfc3RyaW5nX2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQo
KQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX2dlbmVyaWM6CisgICAgbm90U3VwcG9ydGVkKCkKKwor
X2xsaW50X29wX3B1dF9ieV9pZF9yZXBsYWNlOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGlu
dF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCisKKyMgSW5k
aWNhdGUgdGhlIGVuZCBvZiBMTEludC4KK19sbGludF9lbmQ6CisgICAgY3Jhc2goKQorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKKyNpZiBFTkFCTEUoTExJTlQp
CisKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRlIDx3dGYvSW5s
aW5lQVNNLmg+CisKKy8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtLCB3
aGljaCBjb250YWlucyBhbGwgb2YgdGhlIGFzc2VtYmx5IGNvZGUKKy8vIGZvciB0aGUgaW50ZXJw
cmV0ZXIsIGFzIGNvbXBpbGVkIGZyb20gTG93TGV2ZWxJbnRlcnByZXRlci5hc20uCisjaW5jbHVk
ZSAiTExJbnRBc3NlbWJseS5oIgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExvd0xldmVsSW50ZXJwcmV0ZXJf
aAorI2RlZmluZSBMb3dMZXZlbEludGVycHJldGVyX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKKyNkZWZp
bmUgTExJTlRfSU5TVFJVQ1RJT05fREVDTChvcGNvZGUsIGxlbmd0aCkgZXh0ZXJuICJDIiB2b2lk
IGxsaW50XyMjb3Bjb2RlKCk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKExMSU5UX0lOU1RSVUNU
SU9OX0RFQ0wpOworI3VuZGVmIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wKKworZXh0ZXJuICJDIiB2
b2lkIGxsaW50X2JlZ2luKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW5kKCk7CitleHRlcm4g
IkMiIHZvaWQgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50
X2V2YWxfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfcHJvbG9ndWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9h
cml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9nZW5lcmljX3JldHVybl9w
b2ludCgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2Zyb21faGVscGVyX3RyYW1wb2xp
bmUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5l
KCk7CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMb3dMZXZlbEludGVy
cHJldGVyX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJi
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcu
cmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAzMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib3B0IgorCitjbGFzcyBO
b2RlCisgIGRlZiBhcm1WN1NpbmdsZQorICAgIGRvdWJsZU9wZXJhbmQgPSBhcm1WN09wZXJhbmQK
KyAgICByYWlzZSAiQm9ndXMgcmVnaXN0ZXIgbmFtZSAje2RvdWJsZU9wZXJhbmR9IiB1bmxlc3Mg
ZG91YmxlT3BlcmFuZCA9fiAvXmQvCisgICAgInMiICsgKCR+LnBvc3RfbWF0Y2gudG9faSAqIDIp
LnRvX3MKKyAgZW5kCitlbmQKKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVyIDwgTm9DaGlsZHJlbgor
ICBkZWYgaW5pdGlhbGl6ZShuYW1lKQorICAgIEBuYW1lID0gbmFtZQorICBlbmQKKyAgCisgIGRl
ZiBhcm1WN09wZXJhbmQKKyAgICBAbmFtZQorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAg
IGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAg
ZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAg
ICB0cnVlCisgIGVuZAorZW5kCisKK0FSTXY3X0VYVFJBX0dQUlMgPSBbU3BlY2lhbFJlZ2lzdGVy
Lm5ldygicjkiKSwgU3BlY2lhbFJlZ2lzdGVyLm5ldygicjgiKSwgU3BlY2lhbFJlZ2lzdGVyLm5l
dygicjMiKV0KK0FSTXY3X0VYVFJBX0ZQUlMgPSBbU3BlY2lhbFJlZ2lzdGVyLm5ldygiZDciKV0K
K0FSTXY3X1NDUkFUQ0hfRlBSID0gU3BlY2lhbFJlZ2lzdGVyLm5ldygiZDgiKQorCitkZWYgYXJt
VjdNb3ZlSW1tZWRpYXRlKHZhbHVlLCByZWdpc3RlcikKKyAgIyBDdXJyZW50bHkgd2Ugb25seSBo
YW5kbGUgdGhlIHNpbXBsZSBjYXNlcywgYW5kIGZhbGwgYmFjayB0byBtb3YvbW92dCBmb3IgdGhl
IGNvbXBsZXggb25lcy4KKyAgaWYgdmFsdWUgPj0gMCAmJiB2YWx1ZSA8IDI1NgorICAgICRhc20u
cHV0cyAibW92dyAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0sIFwjI3t2YWx1ZX0iCisgIGVsc2lm
ICh+dmFsdWUpID49IDAgJiYgKH52YWx1ZSkgPCAyNTYKKyAgICAkYXNtLnB1dHMgIm12biAje3Jl
Z2lzdGVyLmFybVY3T3BlcmFuZH0sIFwjI3t+dmFsdWV9IgorICBlbHNlCisgICAgJGFzbS5wdXRz
ICJtb3Z3ICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje3ZhbHVlICYgMHhmZmZmfSIKKyAg
ICBpZiAodmFsdWUgJiAweGZmZmYwMDAwKSAhPSAwCisgICAgICAkYXNtLnB1dHMgIm1vdnQgI3ty
ZWdpc3Rlci5hcm1WN09wZXJhbmR9LCBcIyN7dmFsdWUgPj4gMTZ9IgorICAgIGVuZAorICBlbmQK
K2VuZAorCitjbGFzcyBSZWdpc3RlcklECisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICBjYXNlIG5h
bWUKKyAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICJyMCIKKyAgICB3aGVuICJ0MSIs
ICJhMSIsICJyMSIKKyAgICAgICJyMSIKKyAgICB3aGVuICJ0MiIsICJhMiIKKyAgICAgICJyMiIK
KyAgICB3aGVuICJhMyIKKyAgICAgICJyMyIKKyAgICB3aGVuICJ0MyIKKyAgICAgICJyNCIKKyAg
ICB3aGVuICJ0NCIKKyAgICAgICJyNyIKKyAgICB3aGVuICJjZnIiCisgICAgICAicjUiCisgICAg
d2hlbiAibHIiCisgICAgICAibHIiCisgICAgd2hlbiAic3AiCisgICAgICAic3AiCisgICAgZWxz
ZQorICAgICAgcmFpc2UgIkJhZCByZWdpc3RlciAje25hbWV9IGZvciBBUk12NyBhdCAje2NvZGVP
cmlnaW5TdHJpbmd9IgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQK
KyAgZGVmIGFybVY3T3BlcmFuZAorICAgIGNhc2UgbmFtZQorICAgIHdoZW4gImZ0MCIsICJmciIK
KyAgICAgICJkMCIKKyAgICB3aGVuICJmdDEiCisgICAgICAiZDEiCisgICAgd2hlbiAiZnQyIgor
ICAgICAgImQyIgorICAgIHdoZW4gImZ0MyIKKyAgICAgICJkMyIKKyAgICB3aGVuICJmdDQiCisg
ICAgICAiZDQiCisgICAgd2hlbiAiZnQ1IgorICAgICAgImQ1IgorICAgIGVsc2UKKyAgICAgIHJh
aXNlICJCYWQgcmVnaXN0ZXIgI3tuYW1lfSBmb3IgQVJNdjcgYXQgI3tjb2RlT3JpZ2luU3RyaW5n
fSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgIGRlZiBhcm1WN09w
ZXJhbmQKKyAgICByYWlzZSAiSW52YWxpZCBpbW1lZGlhdGUgI3t2YWx1ZX0gYXQgI3tjb2RlT3Jp
Z2luU3RyaW5nfSIgaWYgdmFsdWUgPCAwIG9yIHZhbHVlID4gMjU1CisgICAgIlwjI3t2YWx1ZX0i
CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIGFybVY3T3BlcmFuZAorICAgIHJh
aXNlICJCYWQgb2Zmc2V0IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIGlmIG9mZnNldC52YWx1ZSA8
IC0weGZmIG9yIG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5k
fSwgXCMje29mZnNldC52YWx1ZX1dIgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAg
ZGVmIGFybVY3T3BlcmFuZAorICAgIHJhaXNlICJCYWQgb2Zmc2V0IGF0ICN7Y29kZU9yaWdpblN0
cmluZ30iIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgIlsje2Jhc2UuYXJtVjdPcGVyYW5kfSwg
I3tpbmRleC5hcm1WN09wZXJhbmR9LCBsc2wgXCMje3NjYWxlU2hpZnR9XSIKKyAgZW5kCitlbmQK
KworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgIGRlZiBhcm1WN09wZXJhbmQKKyAgICByYWlzZSAi
VW5jb252ZXJ0ZWQgYWJzb2x1dGUgYWRkcmVzcyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICBl
bmQKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIGJyYW5jaCBvcHMuIEZvciBleGFtcGxlOgorIwor
IyBiYWRkaXogZm9vLCBiYXIsIGJhegorIworIyB3aWxsIGJlY29tZToKKyMKKyMgYWRkaSBmb28s
IGJhcgorIyBieiBiYXoKKyMKKworZGVmIGFybVY3TG93ZXJCcmFuY2hPcHMobGlzdCkKKyAgbmV3
TGlzdCA9IFtdCisgIGxpc3QuZWFjaCB7CisgICAgfCBub2RlIHwKKyAgICBpZiBub2RlLmlzX2E/
IEluc3RydWN0aW9uCisgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICB3aGVuIC9eYihhZGRp
fHN1Yml8b3JpfGFkZHApLworICAgICAgICBvcCA9ICQxCisgICAgICAgIGJyYW5jaCA9ICJiIiAr
ICR+LnBvc3RfbWF0Y2gKKyAgICAgICAgCisgICAgICAgIGNhc2Ugb3AKKyAgICAgICAgd2hlbiAi
YWRkaSIsICJhZGRwIgorICAgICAgICAgIG9wID0gImFkZGlzIgorICAgICAgICB3aGVuICJzdWJp
IgorICAgICAgICAgIG9wID0gInN1YmlzIgorICAgICAgICB3aGVuICJvcmkiCisgICAgICAgICAg
b3AgPSAib3JpcyIKKyAgICAgICAgZW5kCisgICAgICAgIAorICAgICAgICBuZXdMaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG9wLCBub2RlLm9wZXJhbmRzWzAuLi0yXSkK
KyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBicmFu
Y2gsIFtub2RlLm9wZXJhbmRzWy0xXV0pCisgICAgICB3aGVuICJibXVsaW8iCisgICAgICAgIHRt
cDEgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgdG1wMiA9IFRtcC5u
ZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhub2RlLmNvZGVPcmlnaW4sICJzbXVsbGkiLCBbbm9kZS5vcGVyYW5kc1swXSwgbm9kZS5v
cGVyYW5kc1sxXSwgbm9kZS5vcGVyYW5kc1sxXSwgdG1wMV0pCisgICAgICAgIG5ld0xpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInJzaGlmdGkiLCBbbm9kZS5vcGVyYW5k
c1stMl0sIEltbWVkaWF0ZS5uZXcobm9kZS5jb2RlT3JpZ2luLCAzMSksIHRtcDJdKQorICAgICAg
ICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJiaW5lcSIsIFt0
bXAxLCB0bXAyLCBub2RlLm9wZXJhbmRzWy0xXV0pCisgICAgICB3aGVuIC9eYm11bGkvCisgICAg
ICAgIGNvbmRpdGlvbiA9ICR+LnBvc3RfbWF0Y2gKKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibXVsaSIsIG5vZGUub3BlcmFuZHNbMC4uLTJdKQor
ICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJidGki
ICsgY29uZGl0aW9uLCBbbm9kZS5vcGVyYW5kc1stMl0sIG5vZGUub3BlcmFuZHNbLTFdXSkKKyAg
ICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICBlbmQKKyAgICBlbHNlCisg
ICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICBlbmQKKyAgfQorICBuZXdMaXN0CitlbmQKKworIwor
IyBMb3dlcmluZyBvZiBzaGlmdCBvcHMuIEZvciBleGFtcGxlOgorIworIyBsc2hpZnRpIGZvbywg
YmFyCisjCisjIHdpbGwgYmVjb21lOgorIworIyBhbmRpIGZvbywgMzEsIHRtcAorIyBsc2hpZnRp
IHRtcCwgYmFyCisjCisKK2RlZiBhcm1WN1Nhbml0aXplU2hpZnQob3BlcmFuZCwgbGlzdCkKKyAg
cmV0dXJuIG9wZXJhbmQgaWYgb3BlcmFuZC5pbW1lZGlhdGU/CisgIAorICB0bXAgPSBUbXAubmV3
KG9wZXJhbmQuY29kZU9yaWdpbiwgOmdwcikKKyAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3Bl
cmFuZC5jb2RlT3JpZ2luLCAiYW5kaSIsIFtvcGVyYW5kLCBJbW1lZGlhdGUubmV3KG9wZXJhbmQu
Y29kZU9yaWdpbiwgMzEpLCB0bXBdKQorICB0bXAKK2VuZAorCitkZWYgYXJtVjdMb3dlclNoaWZ0
T3BzKGxpc3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9kZSB8Cisg
ICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgY2FzZSBub2RlLm9wY29kZQorICAg
ICAgd2hlbiAibHNoaWZ0aSIsICJyc2hpZnRpIiwgInVyc2hpZnRpIgorICAgICAgICBpZiBub2Rl
Lm9wZXJhbmRzLnNpemUgPT0gMgorICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFthcm1WN1Nhbml0aXplU2hpZnQobm9kZS5v
cGVyYW5kc1swXSwgbmV3TGlzdCksIG5vZGUub3BlcmFuZHNbMV1dKQorICAgICAgICBlbHNlCisg
ICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2Rl
Lm9wY29kZSwgW25vZGUub3BlcmFuZHNbMF0sIGFybVY3U2FuaXRpemVTaGlmdChub2RlLm9wZXJh
bmRzWzFdLCBuZXdMaXN0KSwgbm9kZS5vcGVyYW5kc1syXV0pCisgICAgICAgICAgcmFpc2UgIldy
b25nIG51bWJlciBvZiBvcGVyYW5kcyBmb3Igc2hpZnQgYXQgI3tub2RlLmNvZGVPcmlnaW5TdHJp
bmd9IiB1bmxlc3Mgbm9kZS5vcGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgZW5kCisgICAgICBl
bHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgZW5kCisgICAgZWxzZQorICAgICAg
bmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93
ZXJpbmcgb2YgbWFsZm9ybWVkIGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGU6CisjCisjIGxvYWRwIDEw
MDAwW2Zvb10sIGJhcgorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbW92ZSAxMDAwMCwgdG1wCisj
IGFkZHAgZm9vLCB0bXAKKyMgbG9hZHAgMFt0bXBdLCBiYXIKKyMKKworY2xhc3MgTm9kZQorICBk
ZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICBtYXBDaGls
ZHJlbiB7CisgICAgICB8IG5vZGUgfAorICAgICAgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkQWRk
cmVzc2VzUmVjdXJzZShsaXN0KQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcwor
ICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICBpZiBv
ZmZzZXQudmFsdWUgPCAtMHhmZiBvciBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgdG1wID0g
VG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
Y29kZU9yaWdpbiwgIm1vdmUiLCBbb2Zmc2V0LCB0bXBdKQorICAgICAgbGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcoY29kZU9yaWdpbiwgImFkZHAiLCBbYmFzZSwgdG1wXSkKKyAgICAgIEFkZHJlc3Mu
bmV3KGNvZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkKKyAgICBl
bHNlCisgICAgICBzZWxmCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAor
ICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICBpZiBv
ZmZzZXQudmFsdWUgIT0gMAorICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQor
ICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbb2Zmc2V0
LCB0bXBdKQorICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgImFkZHAi
LCBbYmFzZSwgdG1wXSkKKyAgICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgdG1wLCBpbmRl
eCwgc2NhbGUsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCisgICAgZWxzZQorICAgICAg
c2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVm
IGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNSZWN1cnNlKGxpc3QpCisgICAgdG1wID0gVG1w
Lm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVP
cmlnaW4sICJtb3ZlIiwgW2FkZHJlc3MsIHRtcF0pCisgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdp
biwgdG1wLCBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIDApKQorICBlbmQKK2VuZAorCitkZWYg
YXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3NlcyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlz
dC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIG5ld0xpc3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFs
Zm9ybWVkQWRkcmVzc2VzUmVjdXJzZShuZXdMaXN0KQorICB9CisgIG5ld0xpc3QKK2VuZAorCisj
CisjIExvd2VyaW5nIG9mIG1hbGZvcm1lZCBhZGRyZXNzZXMgaW4gZG91YmxlIGxvYWRzIGFuZCBz
dG9yZXMuIEZvciBleGFtcGxlOgorIworIyBsb2FkZCBbZm9vLCBiYXIsIDhdLCBiYXoKKyMKKyMg
YmVjb21lczoKKyMKKyMgbGVhcCBbZm9vLCBiYXIsIDhdLCB0bXAKKyMgbG9hZGQgW3RtcF0sIGJh
egorIworCitjbGFzcyBOb2RlCisgIGRlZiBhcm1WN0RvdWJsZUFkZHJlc3MobGlzdCkKKyAgICBz
ZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJtVjdEb3VibGVBZGRy
ZXNzKGxpc3QpCisgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgIGxpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJsZWFwIiwgW3NlbGYsIHRtcF0pCisgICAg
QWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgdG1wLCBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIDAp
KQorICBlbmQKK2VuZAorCitkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc0RvdWJsZShs
aXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAgIGlm
IG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgIHdo
ZW4gImxvYWRkIgorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVP
cmlnaW4sICJsb2FkZCIsIFtub2RlLm9wZXJhbmRzWzBdLmFybVY3RG91YmxlQWRkcmVzcyhuZXdM
aXN0KSwgbm9kZS5vcGVyYW5kc1sxXV0pCisgICAgICB3aGVuICJzdG9yZWQiCisgICAgICAgIG5l
d0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInN0b3JlZCIsIFtub2Rl
Lm9wZXJhbmRzWzBdLCBub2RlLm9wZXJhbmRzWzFdLmFybVY3RG91YmxlQWRkcmVzcyhuZXdMaXN0
KV0pCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgZW5kCisgICAg
ZWxzZQorICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlzdAorZW5k
CisKKyMKKyMgTG93ZXJpbmcgb2YgbWlzcGxhY2VkIGltbWVkaWF0ZXMuIEZvciBleGFtcGxlOgor
IworIyBzdG9yZWkgMCwgW2Zvb10KKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUgMCwgdG1w
CisjIHN0b3JlaSB0bXAsIFtmb29dCisjCisKK2RlZiBhcm1WN0xvd2VyTWlzcGxhY2VkSW1tZWRp
YXRlcyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAor
ICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAg
ICAgIHdoZW4gInN0b3JlaSIsICJzdG9yZXAiCisgICAgICAgIG9wZXJhbmRzID0gbm9kZS5vcGVy
YW5kcworICAgICAgICBuZXdPcGVyYW5kcyA9IFtdCisgICAgICAgIG9wZXJhbmRzLmVhY2ggewor
ICAgICAgICAgIHwgb3BlcmFuZCB8CisgICAgICAgICAgaWYgb3BlcmFuZC5pc19hPyBJbW1lZGlh
dGUKKyAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCA6Z3ByKQor
ICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5jb2RlT3JpZ2lu
LCAibW92ZSIsIFtvcGVyYW5kLCB0bXBdKQorICAgICAgICAgICAgbmV3T3BlcmFuZHMgPDwgdG1w
CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3T3BlcmFuZHMgPDwgb3BlcmFuZAorICAg
ICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIG5ld09wZXJhbmRzKQorICAgICAgZWxzZQor
ICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgIGVuZAorICAgIGVsc2UKKyAgICAgIG5ld0xp
c3QgPDwgbm9kZQorICAgIGVuZAorICB9CisgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5n
IG9mIG1hbGZvcm1lZCBpbW1lZGlhdGVzIGV4Y2VwdCB3aGVuIHVzZWQgaW4gYSAibW92ZSIgaW5z
dHJ1Y3Rpb24uCisjIEZvciBleGFtcGxlOgorIworIyBhZGRwIDY0MjY0MSwgZm9vCisjCisjIHdp
bGwgYmVjb21lOgorIworIyBtb3ZlIDY0MjY0MSwgdG1wCisjIGFkZHAgdG1wLCBmb28KKyMKKwor
Y2xhc3MgTm9kZQorICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxp
c3QpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBub2RlIHwKKyAgICAgIG5vZGUuYXJtVjdM
b3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgfQorICBlbmQKK2VuZAor
CitjbGFzcyBBZGRyZXNzCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vy
c2UobGlzdCkKKyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYg
YXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgc2VsZgorICBl
bmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIGFybVY3TG93ZXJNYWxmb3Jt
ZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3Mg
SW1tZWRpYXRlCisgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlz
dCkKKyAgICBpZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAyNTUKKyAgICAgIHRtcCA9IFRtcC5uZXco
Y29kZU9yaWdpbiwgOmdwcikKKyAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmln
aW4sICJtb3ZlIiwgW3NlbGYsIHRtcF0pCisgICAgICB0bXAKKyAgICBlbHNlCisgICAgICBzZWxm
CisgICAgZW5kCisgIGVuZAorZW5kCisKK2RlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRl
cyhsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAg
IGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAg
IHdoZW4gIm1vdmUiCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgd2hlbiAiYWRkaSIs
ICJhZGRwIiwgImFkZGlzIiwgInN1YmkiLCAic3VicCIsICJzdWJpcyIKKyAgICAgICAgaWYgbm9k
ZS5vcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgYW5kCisgICAgICAgICAgICBub2RlLm9wZXJh
bmRzWzBdLnZhbHVlIDwgMCBhbmQKKyAgICAgICAgICAgIG5vZGUub3BlcmFuZHNbMF0udmFsdWUg
Pj0gMjU1IGFuZAorICAgICAgICAgICAgbm9kZS5vcGVyYW5kcy5zaXplID09IDIKKyAgICAgICAg
ICBpZiBub2RlLm9wY29kZSA9fiAvYWRkLworICAgICAgICAgICAgbmV3T3Bjb2RlID0gInN1YiIg
KyBub2RlLm9wY29kZVstMS4uLTFdCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3T3Bj
b2RlID0gImFkZCIgKyBub2RlLm9wY29kZVstMS4uLTFdCisgICAgICAgICAgZW5kCisgICAgICAg
ICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBuZXdPcGNvZGUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ltbWVkaWF0ZS5uZXcoLW5v
ZGUub3BlcmFuZHNbMF0udmFsdWUpXSArIG5vZGUub3BlcmFuZHNbMS4uLTFdKQorICAgICAgICBl
bHNlCisgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlh
dGVzUmVjdXJzZShuZXdMaXN0KQorICAgICAgICBlbmQKKyAgICAgIHdoZW4gIm11bGkiCisgICAg
ICAgIGlmIG5vZGUub3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICAgdG1wID0g
VG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSkK
KyAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJt
dWxpIiwgW3RtcF0gKyBub2RlLm9wZXJhbmRzWzEuLi0xXSkKKyAgICAgICAgZWxzZQorICAgICAg
ICAgIG5ld0xpc3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2Uo
bmV3TGlzdCkKKyAgICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9k
ZS5hcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobmV3TGlzdCkKKyAgICAgIGVu
ZAorICAgIGVsc2UKKyAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgIGVuZAorICB9CisgIG5ld0xp
c3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1pc3BsYWNlZCBhZGRyZXNzZXMuIEZvciBleGFt
cGxlOgorIworIyBhZGRpIGZvbywgW2Jhcl0KKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIGxvYWRp
IFtiYXJdLCB0bXAKKyMgYWRkaSBmb28sIHRtcAorIyBzdG9yZWkgdG1wLCBbYmFyXQorIworIyBB
bm90aGVyIGV4YW1wbGU6CisjCisjIGFkZGkgW2Zvb10sIGJhcgorIworIyB3aWxsIGJlY29tZToK
KyMKKyMgbG9hZGkgW2Zvb10sIHRtcAorIyBhZGRpIHRtcCwgYmFyCisjCisKK2RlZiBhcm1WN0Fz
UmVnaXN0ZXIocHJlTGlzdCwgcG9zdExpc3QsIG9wZXJhbmQsIHN1ZmZpeCwgbmVlZFN0b3JlKQor
ICByZXR1cm4gb3BlcmFuZCB1bmxlc3Mgb3BlcmFuZC5hZGRyZXNzPworICAKKyAgdG1wID0gVG1w
Lm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sIGlmIHN1ZmZpeCA9PSAiZCIgdGhlbiA6ZnByIGVsc2Ug
OmdwciBlbmQpCisgIHByZUxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG9wZXJhbmQuY29kZU9yaWdp
biwgImxvYWQiICsgc3VmZml4LCBbb3BlcmFuZCwgdG1wXSkKKyAgaWYgbmVlZFN0b3JlCisgICAg
cG9zdExpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgInN0b3JlIiAr
IHN1ZmZpeCwgW3RtcCwgb3BlcmFuZF0pCisgIGVuZAorICB0bXAKK2VuZAorCitkZWYgYXJtVjdB
c1JlZ2lzdGVycyhwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFuZHMsIHN1ZmZpeCkKKyAgbmV3T3Bl
cmFuZHMgPSBbXQorICBvcGVyYW5kcy5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgb3BlcmFuZCwg
aW5kZXggfAorICAgIG5ld09wZXJhbmRzIDw8IGFybVY3QXNSZWdpc3RlcihwcmVMaXN0LCBwb3N0
TGlzdCwgb3BlcmFuZCwgc3VmZml4LCBpbmRleCA9PSBvcGVyYW5kcy5zaXplIC0gMSkKKyAgfQor
ICBuZXdPcGVyYW5kcworZW5kCisKK2RlZiBhcm1WN0xvd2VyTWlzcGxhY2VkQWRkcmVzc2VzKGxp
c3QpCisgIG5ld0xpc3QgPSBbXQorICBsaXN0LmVhY2ggeworICAgIHwgbm9kZSB8CisgICAgaWYg
bm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgcG9zdEluc3RydWN0aW9ucyA9IFtdCisgICAg
ICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICB3aGVuICJhZGRpIiwgImFkZHAiLCAiYWRkaXMiLCAi
YW5kaSIsICJhbmRwIiwgImxzaGlmdGkiLCAibXVsaSIsICJuZWdpIiwgIm5vdGkiLCAib3JpIiwg
Im9yaXMiLAorICAgICAgICAib3JwIiwgInJzaGlmdGkiLCAidXJzaGlmdGkiLCAic3ViaSIsICJz
dWJwIiwgInN1YmlzIiwgInhvcmkiLCAieG9ycCIsIC9eYmkvLCAvXmJwLywgL15idGkvLAorICAg
ICAgICAvXmJ0cC8sIC9eY2kvLCAvXmNwLywgL150aS8KKyAgICAgICAgbmV3TGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXJtVjdBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJhbmRz
LCAiaSIpKQorICAgICAgd2hlbiAiYmJlcSIsICJiYm5lcSIsICJiYmEiLCAiYmJhZXEiLCAiYmJi
IiwgImJiYmVxIiwgImJ0Ym8iLCAiYnRieiIsICJidGJueiIsICJ0YnoiLCAidGJueiIsCisgICAg
ICAgICJ0Ym8iCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9y
aWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlz
dCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImIiKSkKKyAgICAgIHdoZW4gImJi
Z3QiLCAiYmJndGVxIiwgImJibHQiLCAiYmJsdGVxIiwgImJ0YnMiLCAidGJzIgorICAgICAgICBu
ZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcm1WN0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMs
IG5vZGUub3BlcmFuZHMsICJicyIpKQorICAgICAgd2hlbiAiYWRkZCIsICJkaXZkIiwgInN1YmQi
LCAibXVsZCIsICJzcXJ0ZCIsIC9eYmQvCisgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bm9kZS5vcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNS
ZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImQiKSkK
KyAgICAgIHdoZW4gImptcCIsICJjYWxsIgorICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJtVjdB
c1JlZ2lzdGVyKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHNbMF0sICJw
IiwgZmFsc2UpXSkKKyAgICAgIGVsc2UKKyAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICBl
bmQKKyAgICAgIG5ld0xpc3QgKz0gcG9zdEluc3RydWN0aW9ucworICAgIGVsc2UKKyAgICAgIG5l
d0xpc3QgPDwgbm9kZQorICAgIGVuZAorICB9CisgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2Vy
aW5nIG9mIHJlZ2lzdGVyIHJldXNlIGluIGNvbXBhcmUgaW5zdHJ1Y3Rpb25zLiBGb3IgZXhhbXBs
ZToKKyMKKyMgY2llcSB0MCwgdDEsIHQwCisjCisjIHdpbGwgYmVjb21lOgorIworIyBtb3YgdG1w
LCB0MAorIyBjaWVxIHRtcCwgdDEsIHQwCisjCisKK2RlZiBhcm1WN0xvd2VyUmVnaXN0ZXJSZXVz
ZShsaXN0KQorICBuZXdMaXN0ID0gW10KKyAgbGlzdC5lYWNoIHsKKyAgICB8IG5vZGUgfAorICAg
IGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAg
IHdoZW4gImNpZXEiLCAiY2luZXEiLCAiY2lhIiwgImNpYWVxIiwgImNpYiIsICJjaWJlcSIsICJj
aWd0IiwgImNpZ3RlcSIsICJjaWx0IiwgImNpbHRlcSIsCisgICAgICAgICJjcGVxIiwgImNwbmVx
IiwgImNwYSIsICJjcGFlcSIsICJjcGIiLCAiY3BiZXEiLCAiY3BndCIsICJjcGd0ZXEiLCAiY3Bs
dCIsICJjcGx0ZXEiLAorICAgICAgICAidGlvIiwgInRpcyIsICJ0aXoiLCAidGlueiIsICJ0Ym8i
LCAidGJzIiwgInRieiIsICJ0Ym56IgorICAgICAgICBpZiBub2RlLm9wZXJhbmRzLnNpemUgPT0g
MgorICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0gPT0gbm9kZS5vcGVyYW5kc1sxXQorICAg
ICAgICAgICAgdG1wID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAg
ICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW25v
ZGUub3BlcmFuZHNbMF0sIHRtcF0pCisgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbdG1wLCBub2RlLm9wZXJhbmRzWzFd
XSkKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAg
ICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgIHJhaXNlICJXcm9uZyBudW1iZXIgb2YgYXJn
dW1lbnRzIGF0ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG5vZGUub3BlcmFuZHMu
c2l6ZSA9PSAzCisgICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1swXSA9PSBub2RlLm9wZXJhbmRz
WzJdCisgICAgICAgICAgICB0bXAgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAg
ICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1v
dmUiLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSkKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFt0bXAsIG5vZGUub3Bl
cmFuZHNbMV0sIG5vZGUub3BlcmFuZHNbMl1dKQorICAgICAgICAgIGVsc2lmIG5vZGUub3BlcmFu
ZHNbMV0gPT0gbm9kZS5vcGVyYW5kc1syXQorICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhub2Rl
LmNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhub2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMV0sIHRtcF0pCisgICAg
ICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5vZGUu
b3Bjb2RlLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wLCBub2RlLm9wZXJhbmRzWzJdXSkKKyAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICBlbmQKKyAg
ICAgICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgZW5k
CisgICAgZWxzZQorICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgZW5kCisgIH0KKyAgbmV3TGlz
dAorZW5kCisKKyMKKyMgTGVhIHN1cHBvcnQuCisjCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIGFy
bVY3RW1pdExlYShkZXN0aW5hdGlvbikKKyAgICBpZiBkZXN0aW5hdGlvbiA9PSBiYXNlCisgICAg
ICAkYXNtLnB1dHMgImFkZHMgI3tkZXN0aW5hdGlvbi5hcm1WN09wZXJhbmR9LCBcIyN7b2Zmc2V0
LnZhbHVlfSIKKyAgICBlbHNlCisgICAgICAkYXNtLnB1dHMgImFkZHMgI3tkZXN0aW5hdGlvbi5h
cm1WN09wZXJhbmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSwgXCMje29mZnNldC52YWx1ZX0iCisg
ICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICBkZWYgYXJtVjdFbWl0TGVh
KGRlc3RpbmF0aW9uKQorICAgIHJhaXNlICJNYWxmb3JtZWQgQmFzZUluZGV4LCBvZmZzZXQgc2hv
dWxkIGJlIHplcm8gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG9mZnNldC52YWx1ZSA9
PSAwCisgICAgJGFzbS5wdXRzICJhZGQudyAje2Rlc3RpbmF0aW9uLmFybVY3T3BlcmFuZH0sICN7
YmFzZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGVT
aGlmdH0iCisgIGVuZAorZW5kCisKKyMgRklYTUU6IHdlIGNvdWxkIHN1cHBvcnQgQWJzb2x1dGVB
ZGRyZXNzIGZvciBsZWEsIGJ1dCB3ZSBkb24ndC4KKworIworIyBBY3R1YWwgbG93ZXJpbmcgY29k
ZSBmb2xsb3dzLgorIworCitjbGFzcyBTZXF1ZW5jZQorICBkZWYgbG93ZXJBUk12NworICAgIG15
TGlzdCA9IEBsaXN0CisgICAgCisgICAgIyBWZXJpZnkgdGhhdCB3ZSB3aWxsIG9ubHkgc2VlIGlu
c3RydWN0aW9ucyBhbmQgbGFiZWxzLgorICAgIG15TGlzdC5lYWNoIHsKKyAgICAgIHwgbm9kZSB8
CisgICAgICB1bmxlc3Mgbm9kZS5pc19hPyBJbnN0cnVjdGlvbiBvcgorICAgICAgICAgIG5vZGUu
aXNfYT8gTGFiZWwgb3IKKyAgICAgICAgICBub2RlLmlzX2E/IExvY2FsTGFiZWwgb3IKKyAgICAg
ICAgICBub2RlLmlzX2E/IFNraXAKKyAgICAgICAgcmFpc2UgIlVuZXhwZWN0ZWQgI3tub2RlLmlu
c3BlY3R9IGF0ICN7bm9kZS5jb2RlT3JpZ2lufSIgCisgICAgICBlbmQKKyAgICB9CisgICAgCisg
ICAgbXlMaXN0ID0gYXJtVjdMb3dlckJyYW5jaE9wcyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJt
VjdMb3dlclNoaWZ0T3BzKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWFsZm9ybWVk
QWRkcmVzc2VzKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVz
c2VzRG91YmxlKG15TGlzdCkKKyAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWlzcGxhY2VkSW1tZWRp
YXRlcyhteUxpc3QpCisgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXMo
bXlMaXN0KQorICAgIG15TGlzdCA9IGFybVY3TG93ZXJNaXNwbGFjZWRBZGRyZXNzZXMobXlMaXN0
KQorICAgIG15TGlzdCA9IGFybVY3TG93ZXJSZWdpc3RlclJldXNlKG15TGlzdCkKKyAgICBteUxp
c3QgPSBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFyaWVzKG15TGlzdCwgOmdwciwgQVJNdjdfRVhU
UkFfR1BSUykKKyAgICBteUxpc3QgPSBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFyaWVzKG15TGlz
dCwgOmZwciwgQVJNdjdfRVhUUkFfRlBSUykKKyAgICBteUxpc3QuZWFjaCB7CisgICAgICB8IG5v
ZGUgfAorICAgICAgbm9kZS5sb3dlcigiQVJNdjciKQorICAgIH0KKyAgZW5kCitlbmQKKworZGVm
IGFybVY3T3BlcmFuZHMob3BlcmFuZHMpCisgIG9wZXJhbmRzLm1hcHt8dnwgdi5hcm1WN09wZXJh
bmR9LmpvaW4oIiwgIikKK2VuZAorCitkZWYgYXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMp
CisgIGFybVY3T3BlcmFuZHMoW29wZXJhbmRzWy0xXV0gKyBvcGVyYW5kc1swLi4tMl0pCitlbmQK
KworZGVmIGVtaXRBcm1WN0NvbXBhY3Qob3Bjb2RlMiwgb3Bjb2RlMywgb3BlcmFuZHMpCisgIGlm
IG9wZXJhbmRzLnNpemUgPT0gMworICAgICRhc20ucHV0cyAiI3tvcGNvZGUzfSAje2FybVY3Rmxp
cHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgIGVsc2UKKyAgICByYWlzZSB1bmxlc3Mgb3BlcmFu
ZHMuc2l6ZSA9PSAyCisgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVy
SUQKKyAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICRhc20ucHV0cyAi
I3tvcGNvZGUzfSAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJt
VjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgIGVsc2UKKyAgICAg
ICRhc20ucHV0cyAiI3tvcGNvZGUyfSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0i
CisgICAgZW5kCisgIGVuZAorZW5kCisKK2RlZiBlbWl0QXJtVjcob3Bjb2RlLCBvcGVyYW5kcykK
KyAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3thcm1W
N0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICBlbHNlCisgICAgcmFpc2UgdW5sZXNzIG9w
ZXJhbmRzLnNpemUgPT0gMgorICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0u
YXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBd
LmFybVY3T3BlcmFuZH0iCisgIGVuZAorZW5kCisKK2RlZiBlbWl0QXJtVjdEb3VibGVCcmFuY2go
YnJhbmNoT3Bjb2RlLCBvcGVyYW5kcykKKyAgJGFzbS5wdXRzICJ2Y21wZS5mNjQgI3thcm1WN09w
ZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICRhc20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZw
c2NyIgorICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLmFzbUxhYmVs
fSIKK2VuZAorCitkZWYgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgdmFsdWUgPSBvcGVyYW5k
c1swXQorICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgd2hlbiAyCisgICAgbWFzayA9IEltbWVkaWF0
ZS5uZXcoY29kZU9yaWdpbiwgLTEpCisgIHdoZW4gMworICAgIG1hc2sgPSBvcGVyYW5kc1sxXQor
ICBlbHNlCisgICAgcmFpc2UgIkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5kcyBidXQgZ290ICN7b3Bl
cmFuZHMuc2l6ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgZW5kCisgIAorICBpZiBtYXNr
LmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQorICAgICRhc20ucHV0cyAidHN0
ICN7dmFsdWUuYXJtVjdPcGVyYW5kfSwgI3t2YWx1ZS5hcm1WN09wZXJhbmR9IgorICBlbHNpZiBt
YXNrLmlzX2E/IEltbWVkaWF0ZQorICAgICRhc20ucHV0cyAidHN0LncgI3t2YWx1ZS5hcm1WN09w
ZXJhbmR9LCAje21hc2suYXJtVjdPcGVyYW5kfSIKKyAgZWxzZQorICAgICRhc20ucHV0cyAidHN0
ICN7dmFsdWUuYXJtVjdPcGVyYW5kfSwgI3ttYXNrLmFybVY3T3BlcmFuZH0iCisgIGVuZAorZW5k
CisKK2RlZiBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCBjb2RlKQorICAkYXNtLnB1dHMgIm1v
dnMgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCBcIzAiCisgICRhc20ucHV0cyAiY21wICN7
b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9Igor
ICAkYXNtLnB1dHMgIml0ICN7Y29kZX0iCisgICRhc20ucHV0cyAibW92I3tjb2RlfSAje29wZXJh
bmRzWzJdLmFybVY3T3BlcmFuZH0sIFwjMSIKK2VuZAorCitkZWYgZW1pdEFybVY3VGVzdFNldChv
cGVyYW5kcywgY29kZSkKKyAgJGFzbS5wdXRzICJtb3ZzICN7b3BlcmFuZHNbLTFdLmFybVY3T3Bl
cmFuZH0sIFwjMCIKKyAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgJGFzbS5wdXRzICJpdCAj
e2NvZGV9IgorICAkYXNtLnB1dHMgIm1vdiN7Y29kZX0gI3tvcGVyYW5kc1stMV0uYXJtVjdPcGVy
YW5kfSwgXCMxIgorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgIGRlZiBsb3dlckFSTXY3Cisg
ICAgJGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICBjYXNlIG9wY29kZQorICAgIHdo
ZW4gImFkZGkiLCAiYWRkcCIsICJhZGRpcyIKKyAgICAgIGlmIG9wY29kZSA9PSAiYWRkaXMiCisg
ICAgICAgIHN1ZmZpeCA9ICJzIgorICAgICAgZWxzZQorICAgICAgICBzdWZmaXggPSAiIgorICAg
ICAgZW5kCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/
IEltbWVkaWF0ZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0
ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAor
ICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCBzdWZmaXguZW1wdHk/CisgICAg
ICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAkYXNt
LnB1dHMgIm1vdiAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJt
VjdPcGVyYW5kfSIKKyAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICRhc20u
cHV0cyAiYWRkcyAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJt
VjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICBlbmQKKyAg
ICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0
ZXJJRAorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAor
ICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAg
ICAkYXNtLnB1dHMgImFkZHMgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAg
ICAgZWxzZQorICAgICAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAg
ICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAg
ICAkYXNtLnB1dHMgImFkZHMgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAg
ICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgJGFzbS5wdXRzICJhZGQje3N1ZmZp
eH0gI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICBlbmQKKyAgICAg
IGVuZAorICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgIGVtaXRBcm1WN0NvbXBhY3QoImFu
ZHMiLCAiYW5kIiwgb3BlcmFuZHMpCisgICAgd2hlbiAib3JpIiwgIm9ycCIKKyAgICAgIGVtaXRB
cm1WN0NvbXBhY3QoIm9ycnMiLCAib3JyIiwgb3BlcmFuZHMpCisgICAgd2hlbiAib3JpcyIKKyAg
ICAgIGVtaXRBcm1WN0NvbXBhY3QoIm9ycnMiLCAib3JycyIsIG9wZXJhbmRzKQorICAgIHdoZW4g
InhvcmkiLCAieG9ycCIKKyAgICAgIGVtaXRBcm1WN0NvbXBhY3QoImVvcnMiLCAiZW9yIiwgb3Bl
cmFuZHMpCisgICAgd2hlbiAibHNoaWZ0aSIKKyAgICAgIGVtaXRBcm1WN0NvbXBhY3QoImxzbHMi
LCAibHNscyIsIG9wZXJhbmRzKQorICAgIHdoZW4gInJzaGlmdGkiCisgICAgICBlbWl0QXJtVjdD
b21wYWN0KCJhc3JzIiwgImFzcnMiLCBvcGVyYW5kcykKKyAgICB3aGVuICJ1cnNoaWZ0aSIKKyAg
ICAgIGVtaXRBcm1WN0NvbXBhY3QoImxzcnMiLCAibHNycyIsIG9wZXJhbmRzKQorICAgIHdoZW4g
Im11bGkiCisgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDIgb3Igb3BlcmFuZHNbMF0gPT0gb3Bl
cmFuZHNbMl0gb3Igb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgZW1pdEFybVY3
KCJtdWxzIiwgb3BlcmFuZHMpCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAibW92ICN7
b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9Igor
ICAgICAgICAkYXNtLnB1dHMgIm11bHMgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCAje29w
ZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAg
ICAgIGVuZAorICAgIHdoZW4gInN1YmkiLCAic3VicCIsICJzdWJpcyIKKyAgICAgIGVtaXRBcm1W
N0NvbXBhY3QoInN1YnMiLCAic3VicyIsIG9wZXJhbmRzKQorICAgIHdoZW4gIm5lZ2kiCisgICAg
ICAkYXNtLnB1dHMgInJzYnMgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRz
WzBdLmFybVY3T3BlcmFuZH0sIFwjMCIKKyAgICB3aGVuICJub3RpIgorICAgICAgJGFzbS5wdXRz
ICJtdm5zICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09w
ZXJhbmR9IgorICAgIHdoZW4gImxvYWRpIiwgImxvYWRwIgorICAgICAgJGFzbS5wdXRzICJsZHIg
I3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gInN0b3JlaSIsICJz
dG9yZXAiCisgICAgICAkYXNtLnB1dHMgInN0ciAje2FybVY3T3BlcmFuZHMob3BlcmFuZHMpfSIK
KyAgICB3aGVuICJsb2FkYiIKKyAgICAgICRhc20ucHV0cyAibGRyYiAje2FybVY3RmxpcHBlZE9w
ZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAibG9hZGJzIgorICAgICAgJGFzbS5wdXRzICJs
ZHJzYi53ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJzdG9y
ZWIiCisgICAgICAkYXNtLnB1dHMgInN0cmIgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzKX0iCisg
ICAgd2hlbiAibG9hZGgiCisgICAgICAkYXNtLnB1dHMgImxkcmggI3thcm1WN0ZsaXBwZWRPcGVy
YW5kcyhvcGVyYW5kcyl9IgorICAgIHdoZW4gImxvYWRocyIKKyAgICAgICRhc20ucHV0cyAibGRy
c2gudyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAic3RvcmVo
IgorICAgICAgJGFzbS5wdXRzICJzdHJoICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAg
IHdoZW4gImxvYWRkIgorICAgICAgJGFzbS5wdXRzICJ2bGRyLjY0ICN7YXJtVjdGbGlwcGVkT3Bl
cmFuZHMob3BlcmFuZHMpfSIKKyAgICB3aGVuICJzdG9yZWQiCisgICAgICAkYXNtLnB1dHMgInZz
dHIuNjQgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgd2hlbiAiYWRkZCIKKyAgICAg
IGVtaXRBcm1WNygidmFkZC5mNjQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJkaXZkIgorICAgICAg
ZW1pdEFybVY3KCJ2ZGl2LmY2NCIsIG9wZXJhbmRzKQorICAgIHdoZW4gInN1YmQiCisgICAgICBl
bWl0QXJtVjcoInZzdWIuZjY0Iiwgb3BlcmFuZHMpCisgICAgd2hlbiAibXVsZCIKKyAgICAgIGVt
aXRBcm1WNygidm11bC5mNjQiLCBvcGVyYW5kcykKKyAgICB3aGVuICJzcXJ0ZCIKKyAgICAgICRh
c20ucHV0cyAidnNxcnQuZjY0ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAg
ICB3aGVuICJjaTJkIgorICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMV0uYXJtVjdT
aW5nbGV9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAkYXNtLnB1dHMgInZj
dnQuZjY0LnMzMiAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJt
VjdTaW5nbGV9IgorICAgIHdoZW4gImJkZXEiCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2go
ImJlcSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkbmVxIgorICAgICAgJGFzbS5wdXRzICJ2Y21w
ZS5mNjQgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMg
InZtcnMgYXBzcl9uemN2LCBmcHNjciIKKyAgICAgIGlzVW5vcmRlcmVkID0gTG9jYWxMYWJlbC51
bmlxdWUoImJkbmVxIikKKyAgICAgICRhc20ucHV0cyAiYnZzICN7TGFiZWxSZWZlcmVuY2UubmV3
KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS5hc21MYWJlbH0iCisgICAgICAkYXNtLnB1dHMgImJu
ZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJBUk12
NyIpCisgICAgd2hlbiAiYmRndCIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmd0Iiwg
b3BlcmFuZHMpCisgICAgd2hlbiAiYmRndGVxIgorICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNo
KCJiZ2UiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGx0IgorICAgICAgZW1pdEFybVY3RG91Ymxl
QnJhbmNoKCJibWkiLCBvcGVyYW5kcykKKyAgICB3aGVuICJiZGx0ZXEiCisgICAgICBlbWl0QXJt
VjdEb3VibGVCcmFuY2goImJscyIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkZXF1biIKKyAgICAg
ICRhc20ucHV0cyAidmNtcGUuZjY0ICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9Igor
ICAgICAgJGFzbS5wdXRzICJ2bXJzIGFwc3JfbnpjdiwgZnBzY3IiCisgICAgICAkYXNtLnB1dHMg
ImJ2cyAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiYmVxICN7b3Bl
cmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJkbmVxdW4iCisgICAgICBlbWl0QXJtVjdE
b3VibGVCcmFuY2goImJuZSIsIG9wZXJhbmRzKQorICAgIHdoZW4gImJkZ3R1biIKKyAgICAgIGVt
aXRBcm1WN0RvdWJsZUJyYW5jaCgiYmhpIiwgb3BlcmFuZHMpCisgICAgd2hlbiAiYmRndGVxdW4i
CisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJwbCIsIG9wZXJhbmRzKQorICAgIHdoZW4g
ImJkbHR1biIKKyAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmx0Iiwgb3BlcmFuZHMpCisg
ICAgd2hlbiAiYmRsdGVxdW4iCisgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJsZSIsIG9w
ZXJhbmRzKQorICAgIHdoZW4gImJ0ZDJpIgorICAgICAgIyBGSVhNRTogbWF5IGJlIGEgZ29vZCBp
ZGVhIHRvIGp1c3QgZ2V0IHJpZCBvZiB0aGlzIGluc3RydWN0aW9uLCBzaW5jZSB0aGUgaW50ZXJw
cmV0ZXIKKyAgICAgICMgY3VycmVudGx5IGRvZXMgbm90IHVzZSBpdC4KKyAgICAgIHJhaXNlICJB
Uk12NyBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3Bjb2RlIHlldCwgI3tjb2RlT3JpZ2lufSIKKyAg
ICB3aGVuICJ0ZDJpIgorICAgICAgJGFzbS5wdXRzICJ2Y3Z0LnMzMi5mNjQgI3tBUk12N19TQ1JB
VENIX0ZQUi5hcm1WN1NpbmdsZX0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAg
ICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7QVJNdjdfU0NS
QVRDSF9GUFIuYXJtVjdTaW5nbGV9IgorICAgIHdoZW4gImJjZDJpIgorICAgICAgJGFzbS5wdXRz
ICJ2Y3Z0LnMzMi5mNjQgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0sICN7b3BlcmFu
ZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzFd
LmFybVY3T3BlcmFuZH0sICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJtVjdTaW5nbGV9IgorICAgICAg
JGFzbS5wdXRzICJ2Y3Z0LmY2NC5zMzIgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN09wZXJhbmR9
LCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSIKKyAgICAgIGVtaXRBcm1WN0RvdWJs
ZUJyYW5jaCgiYm5lIiwgW0FSTXY3X1NDUkFUQ0hfRlBSLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNb
Ml1dKQorICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAj
e29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgICAkYXNtLnB1dHMgImJlcSAje29wZXJh
bmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJtb3ZkeiIKKyAgICAgICMgRklYTUU6IGVpdGhl
ciBzdXBwb3J0IHRoaXMgb3IgcmVtb3ZlIGl0LgorICAgICAgcmFpc2UgIkFSTXY3IGRvZXMgbm90
IHN1cHBvcnQgdGhpcyBvcGNvZGUgeWV0LCAje2NvZGVPcmlnaW59IgorICAgIHdoZW4gInBvcCIK
KyAgICAgICRhc20ucHV0cyAicG9wICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICB3
aGVuICJwdXNoIgorICAgICAgJGFzbS5wdXRzICJwdXNoICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVy
YW5kfSIKKyAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgaWYgb3BlcmFu
ZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIGFybVY3TW92ZUltbWVkaWF0ZShvcGVyYW5k
c1swXS52YWx1ZSwgb3BlcmFuZHNbMV0pCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAi
bW92ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgIGVuZAorICAgIHdo
ZW4gIm5vcCIKKyAgICAgICRhc20ucHV0cyAibm9wIgorICAgIHdoZW4gImJpZXEiLCAiYnBlcSIs
ICJiYmVxIgorICAgICAgaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisg
ICAgICAgICRhc20ucHV0cyAidHN0ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVy
YW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgZWxzaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDAp
ID09IG9wZXJhbmRzWzFdCisgICAgICAgICRhc20ucHV0cyAidHN0ICN7b3BlcmFuZHNbMF0uYXJt
VjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgZWxzZQorICAg
ICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAg
ICAgIGVuZAorICAgICAgJGFzbS5wdXRzICJiZXEgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisg
ICAgd2hlbiAiYmluZXEiLCAiYnBuZXEiLCAiYmJuZXEiCisgICAgICBpZiBJbW1lZGlhdGUubmV3
KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5k
c1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgICBl
bHNpZiBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMV0KKyAgICAgICAgJGFzbS5w
dXRzICJ0c3QgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3
T3BlcmFuZH0iCisgICAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVy
YW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgZW5kCisgICAgICAkYXNtLnB1dHMgImJuZSAj
e29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWEiLCAiYnBhIiwgImJiYSIKKyAg
ICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAg
ICAgJGFzbS5wdXRzICJiaGkgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmlh
ZXEiLCAiYnBhZXEiLCAiYmJhZXEiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFu
ZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmhzICN7b3BlcmFuZHNbMl0u
YXNtTGFiZWx9IgorICAgIHdoZW4gImJpYiIsICJicGIiLCAiYmJiIgorICAgICAgJGFzbS5wdXRz
ICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAkYXNtLnB1dHMg
ImJsbyAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJiaWJlcSIsICJicGJlcSIs
ICJiYmJlcSIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1sw
Li4xXSl9IgorICAgICAgJGFzbS5wdXRzICJibHMgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisg
ICAgd2hlbiAiYmlndCIsICJicGd0IiwgImJiZ3QiCisgICAgICAkYXNtLnB1dHMgImNtcCAje2Fy
bVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICRhc20ucHV0cyAiYmd0ICN7b3Bl
cmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJpZ3RlcSIsICJicGd0ZXEiLCAiYmJndGVx
IgorICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0i
CisgICAgICAkYXNtLnB1dHMgImJnZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICB3aGVu
ICJiaWx0IiwgImJwbHQiLCAiYmJsdCIKKyAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVy
YW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgJGFzbS5wdXRzICJibHQgI3tvcGVyYW5kc1sy
XS5hc21MYWJlbH0iCisgICAgd2hlbiAiYmlsdGVxIiwgImJwbHRlcSIsICJiYmx0ZXEiCisgICAg
ICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAg
ICRhc20ucHV0cyAiYmxlICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJ0aXoi
LCAiYnRweiIsICJidGJ6IgorICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgICAgICRh
c20ucHV0cyAiYmVxICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJidGlueiIs
ICJidHBueiIsICJidGJueiIKKyAgICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgICAgICAk
YXNtLnB1dHMgImJuZSAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYnRpbyIs
ICJidHBvIiwgImJ0Ym8iCisgICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICAgICAgJGFz
bS5wdXRzICJidnMgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJ0aXMiLCAi
YnRwcyIsICJidGJzIgorICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgICAgICRhc20u
cHV0cyAiYm1pICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJqbXAiCisgICAg
ICBpZiBvcGVyYW5kc1swXS5sYWJlbD8KKyAgICAgICAgJGFzbS5wdXRzICJiICN7b3BlcmFuZHNb
MF0uYXNtTGFiZWx9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgIm1vdiBwYywgI3tv
cGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgZW5kCisgICAgd2hlbiAiY2FsbCIKKyAg
ICAgIGlmIG9wZXJhbmRzWzBdLmxhYmVsPworICAgICAgICAkYXNtLnB1dHMgImJseCAje29wZXJh
bmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJibHggI3tv
cGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgZW5kCisgICAgd2hlbiAiYnJlYWsiCisg
ICAgICAkYXNtLnB1dHMgImJrcHQiCisgICAgd2hlbiAicmV0IgorICAgICAgJGFzbS5wdXRzICJi
eCBsciIKKyAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9w
ZXJhbmRzLCAiZXEiKQorICAgIHdoZW4gImNpbmVxIiwgImNwbmVxIgorICAgICAgZW1pdEFybVY3
Q29tcGFyZShvcGVyYW5kcywgIm5lIikKKyAgICB3aGVuICJjaWEiLCAiY3BhIgorICAgICAgZW1p
dEFybVY3Q29tcGFyZShvcGVyYW5kcywgImhpIikKKyAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIK
KyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJocyIpCisgICAgd2hlbiAiY2liIiwg
ImNwYiIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJsbyIpCisgICAgd2hlbiAi
Y2liZXEiLCAiY3BiZXEiCisgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibHMiKQor
ICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMs
ICJndCIpCisgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIKKyAgICAgIGVtaXRBcm1WN0NvbXBh
cmUob3BlcmFuZHMsICJnZSIpCisgICAgd2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAgZW1pdEFy
bVY3Q29tcGFyZShvcGVyYW5kcywgImx0IikKKyAgICB3aGVuICJjaWx0ZXEiLCAiY3BsdGVxIgor
ICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImxlIikKKyAgICB3aGVuICJ0aW8iLCAi
dGJvIgorICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywgInZzIikKKyAgICB3aGVuICJ0
aXMiLCAidGJzIgorICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywgIm1pIikKKyAgICB3
aGVuICJ0aXoiLCAidGJ6IgorICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywgImVxIikK
KyAgICB3aGVuICJ0aW56IiwgInRibnoiCisgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRz
LCAibmUiKQorICAgIHdoZW4gInBlZWsiCisgICAgICAkYXNtLnB1dHMgImxkciAje29wZXJhbmRz
WzFdLmFybVY3T3BlcmFuZH0sIFtzcCwgXCMje29wZXJhbmRzWzBdLnZhbHVlICogNH1dIgorICAg
IHdoZW4gInBva2UiCisgICAgICAkYXNtLnB1dHMgInN0ciAje29wZXJhbmRzWzFdLmFybVY3T3Bl
cmFuZH0sIFtzcCwgXCMje29wZXJhbmRzWzBdLnZhbHVlICogNH1dIgorICAgIHdoZW4gImZpaTJk
IgorICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tv
cGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisg
ICAgd2hlbiAiZmQyaWkiCisgICAgICAkYXNtLnB1dHMgInZtb3YgI3tvcGVyYW5kc1sxXS5hcm1W
N09wZXJhbmR9LCAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJt
VjdPcGVyYW5kfSIKKyAgICB3aGVuICJibyIKKyAgICAgICRhc20ucHV0cyAiYnZzICN7b3BlcmFu
ZHNbMF0uYXNtTGFiZWx9IgorICAgIHdoZW4gImJzIgorICAgICAgJGFzbS5wdXRzICJibWkgI3tv
cGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgd2hlbiAiYnoiCisgICAgICAkYXNtLnB1dHMgImJl
cSAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJibnoiCisgICAgICAkYXNtLnB1
dHMgImJuZSAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICB3aGVuICJsZWFpIiwgImxlYXAi
CisgICAgICBvcGVyYW5kc1swXS5hcm1WN0VtaXRMZWEob3BlcmFuZHNbMV0pCisgICAgd2hlbiAi
c211bGxpIgorICAgICAgcmFpc2UgIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgdG8gc211bGwg
aW4gI3tzZWxmLmluc3BlY3R9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBvcGVyYW5k
cy5sZW5ndGggPT0gNAorICAgICAgJGFzbS5wdXRzICJzbXVsbCAje29wZXJhbmRzWzJdLmFybVY3
T3BlcmFuZH0sICN7b3BlcmFuZHNbM10uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1W
N09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgZWxzZQorICAgICAg
cmFpc2UgIlVuaGFuZGxlZCBvcGNvZGUgI3tvcGNvZGV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30i
CisgICAgZW5kCisgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2FzbS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcyIEBACisjIS91c3IvYmluL2Vu
diBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZp
bGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdl
c3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJz
ZWxmX2hhc2giCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworY2xh
c3MgQXNzZW1ibGVyCisgIGRlZiBpbml0aWFsaXplKG91dHApCisgICAgQG91dHAgPSBvdXRwCisg
ICAgQHN0YXRlID0gOmNwcAorICAgIEBjb21tZW50U3RhdGUgPSA6bm9uZQorICAgIEBjb21tZW50
ID0gbmlsCisgIGVuZAorICAKKyAgZGVmIGVudGVyQXNtCisgICAgQG91dHAucHV0cyAiYXNtICgi
CisgICAgQHN0YXRlID0gOmFzbQorICBlbmQKKyAgCisgIGRlZiBsZWF2ZUFzbQorICAgIHB1dHNM
YXN0Q29tbWVudAorICAgIEBvdXRwLnB1dHMgIik7IgorICAgIEBzdGF0ZSA9IDpjcHAKKyAgZW5k
CisgIAorICBkZWYgaW5Bc20KKyAgICBlbnRlckFzbQorICAgIHlpZWxkCisgICAgbGVhdmVBc20K
KyAgZW5kCisgIAorICBkZWYgbGFzdENvbW1lbnQKKyAgICBpZiBAY29tbWVudAorICAgICAgcmVz
dWx0ID0gIi8vICN7QGNvbW1lbnR9IgorICAgIGVsc2UKKyAgICAgIHJlc3VsdCA9ICIiCisgICAg
ZW5kCisgICAgQGNvbW1lbnRTdGF0ZSA9IDpub25lCisgICAgQGNvbW1lbnQgPSBuaWwKKyAgICBy
ZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcHV0c0xhc3RDb21tZW50CisgICAgY29tbWVudCA9IGxh
c3RDb21tZW50CisgICAgdW5sZXNzIGNvbW1lbnQuZW1wdHk/CisgICAgICBAb3V0cC5wdXRzIGNv
bW1lbnQKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcHV0cygqbGluZSkKKyAgICByYWlzZSB1
bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wdXRzKCJcIlxcdCIgKyBsaW5lLmpvaW4o
JycpICsgIlxcblwiICN7bGFzdENvbW1lbnR9IikKKyAgZW5kCisgIAorICBkZWYgcHJpbnQobGlu
ZSkKKyAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICBAb3V0cC5wcmludCgiXCIi
ICsgbGluZSArICJcIiIpCisgIGVuZAorICAKKyAgZGVmIHB1dHNMYWJlbChsYWJlbE5hbWUpCisg
ICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAgQG91dHAucHV0cygiT0ZGTElORV9B
U01fR0xPQkFMX0xBQkVMKCN7bGFiZWxOYW1lfSkgI3tsYXN0Q29tbWVudH0iKQorICBlbmQKKyAg
CisgIGRlZiBwdXRzTG9jYWxMYWJlbChsYWJlbE5hbWUpCisgICAgcmFpc2UgdW5sZXNzIEBzdGF0
ZSA9PSA6YXNtCisgICAgQG91dHAucHV0cygiTE9DQUxfTEFCRUxfU1RSSU5HKCN7bGFiZWxOYW1l
fSkgXCI6XFxuXCIgI3tsYXN0Q29tbWVudH0iKQorICBlbmQKKyAgCisgIGRlZiBzZWxmLmxhYmVs
UmVmZXJlbmNlKGxhYmVsTmFtZSkKKyAgICAiXCIgU1lNQk9MX1NUUklORygje2xhYmVsTmFtZX0p
IFwiIgorICBlbmQKKyAgCisgIGRlZiBzZWxmLmxvY2FsTGFiZWxSZWZlcmVuY2UobGFiZWxOYW1l
KQorICAgICJcIiBMT0NBTF9MQUJFTF9TVFJJTkcoI3tsYWJlbE5hbWV9KSBcIiIKKyAgZW5kCisg
IAorICBkZWYgY29tbWVudCh0ZXh0KQorICAgIGNhc2UgQGNvbW1lbnRTdGF0ZQorICAgIHdoZW4g
Om5vbmUKKyAgICAgIEBjb21tZW50ID0gdGV4dAorICAgICAgQGNvbW1lbnRTdGF0ZSA9IDpvbmUK
KyAgICB3aGVuIDpvbmUKKyAgICAgIEBvdXRwLnB1dHMgIi8vICN7QGNvbW1lbnR9IgorICAgICAg
QG91dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgICAgIEBjb21tZW50ID0gbmlsCisgICAgICBAY29t
bWVudFN0YXRlID0gOm1hbnkKKyAgICB3aGVuIDptYW55CisgICAgICBAb3V0cC5wdXRzICIvLyAj
e3RleHR9IgorICAgIGVsc2UKKyAgICAgIHJhaXNlCisgICAgZW5kCisgIGVuZAorZW5kCisKK2Fz
bUZpbGUgPSBBUkdWLnNoaWZ0CitvZmZzZXRzRmlsZSA9IEFSR1Yuc2hpZnQKK291dHB1dEZsbm0g
PSBBUkdWLnNoaWZ0CisKKyRzdGRlcnIucHV0cyAib2ZmbGluZWFzbTogUGFyc2luZyAje2FzbUZp
bGV9IGFuZCAje29mZnNldHNGaWxlfSBhbmQgY3JlYXRpbmcgYXNzZW1ibHkgZmlsZSAje291dHB1
dEZsbm19LiIKKworb2Zmc2V0c0xpc3QsIGNvbmZpZ0luZGV4ID0gb2Zmc2V0c0FuZENvbmZpZ3Vy
YXRpb25JbmRleChvZmZzZXRzRmlsZSkKK2lucHV0RGF0YSA9IElPOjpyZWFkKGFzbUZpbGUpCisK
K2lucHV0SGFzaCA9CisgICIvLyBvZmZsaW5lYXNtIGlucHV0IGhhc2g6ICIgKyBEaWdlc3Q6OlNI
QTEuaGV4ZGlnZXN0KGlucHV0RGF0YSkgKworICAiICIgKyBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0
KChvZmZzZXRzTGlzdCArIFtjb25maWdJbmRleF0pLmpvaW4oJyAnKSkgKworICAiICIgKyBzZWxm
SGFzaAorCitpZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0RmxubQorICBGaWxlLm9wZW4ob3V0cHV0
RmxubSwgInIiKSB7CisgICAgfCBpbnAgfAorICAgIGZpcnN0TGluZSA9IGlucC5nZXRzCisgICAg
aWYgZmlyc3RMaW5lIGFuZCBmaXJzdExpbmUuY2hvbXAgPT0gaW5wdXRIYXNoCisgICAgICAkc3Rk
ZXJyLnB1dHMgIm9mZmxpbmVhc206IE5vdGhpbmcgY2hhbmdlZC4iCisgICAgICBleGl0IDAKKyAg
ICBlbmQKKyAgfQorZW5kCisKK0ZpbGUub3BlbihvdXRwdXRGbG5tLCAidyIpIHsKKyAgfCBvdXRw
IHwKKyAgJG91dHB1dCA9IG91dHAKKyAgJG91dHB1dC5wdXRzIGlucHV0SGFzaAorICAKKyAgJGFz
bSA9IEFzc2VtYmxlci5uZXcoJG91dHB1dCkKKyAgCisgIGFzdCA9IHBhcnNlKGxleChpbnB1dERh
dGEpKQorICAKKyAgZm9yU2V0dGluZ3MoY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdClb
Y29uZmlnSW5kZXhdLCBhc3QpIHsKKyAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNU
LCBiYWNrZW5kIHwKKyAgICBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisg
ICAgbG93TGV2ZWxBU1QgPSBsb3dMZXZlbEFTVC5yZXNvbHZlKCpidWlsZE9mZnNldHNNYXAobG93
TGV2ZWxBU1QsIG9mZnNldHNMaXN0KSkKKyAgICBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25j
cmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCkgeworICAgICAgJGFzbS5pbkFzbSB7
CisgICAgICAgIGxvd0xldmVsQVNULmxvd2VyKGJhY2tlbmQpCisgICAgICB9CisgICAgfQorICB9
Cit9CisKKyRzdGRlcnIucHV0cyAib2ZmbGluZWFzbTogQXNzZW1ibHkgZmlsZSAje291dHB1dEZs
bm19IHN1Y2Nlc3NmdWxseSBnZW5lcmF0ZWQuIgorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9hc3QucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwMzkgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMKKyMgQmFzZSB1dGlsaXR5IHR5cGVz
IGZvciB0aGUgQVNULgorIworCisjIFZhbGlkIG1ldGhvZHMgZm9yIE5vZGU6CisjCisjIG5vZGUu
Y2hpbGRyZW4gLT4gUmV0dXJucyBhbiBhcnJheSBvZiBpbW1lZGlhdGUgY2hpbGRyZW4uCisjCisj
IG5vZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJucyBhbiBhcnJheSBvZiBhbGwgc3RyaWN0IGRlc2Nl
bmRhbnRzIChjaGlsZHJlbgorIyAgICAgYW5kIGNoaWxkcmVuIG9mIGNoaWxkcmVuLCB0cmFuc2l0
aXZlbHkpLgorIworIyBub2RlLmZsYXR0ZW4gLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5n
IHRoZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5kCisjICAgICB0aGUgbm9kZSBpdHNlbGYuCisjCisj
IG5vZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aG9zZSBl
bGVtZW50cyBpbgorIyAgICAgbm9kZS5mbGF0dGVuIHRoYXQgYXJlIG9mIHRoZSBnaXZlbiB0eXBl
IChpc19hPyB0eXBlIHJldHVybnMgdHJ1ZSkuCisjCisjIG5vZGUubWFwQ2hpbGRyZW57fHZ8IC4u
Ln0gLT4gUmV0dXJucyBhIG5ldyBub2RlIHdpdGggYWxsIGNoaWxkcmVuCisjICAgICByZXBsYWNl
ZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJsb2NrLgorIworIyBFeGFtcGxlczoKKyMKKyMgbm9k
ZS5maWx0ZXIoU2V0dGluZykudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc2V0dGluZ3MgdGhh
dCB0aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVsc2UgYmxvY2tzIGRlcGVuZCBvbi4KKyMKKyMgbm9k
ZS5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzdHJ1Y3R1
cmUgb2Zmc2V0cworIyAgICAgdGhhdCB0aGUgQVNUIGRlcGVuZHMgb24uCisKK2NsYXNzIE5vZGUK
KyAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4pCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgIGVuZAorICAKKyAgZGVmIGNvZGVP
cmlnaW5TdHJpbmcKKyAgICAibGluZSBudW1iZXIgI3tAY29kZU9yaWdpbn0iCisgIGVuZAorICAK
KyAgZGVmIGRlc2NlbmRhbnRzCisgICAgY2hpbGRyZW4uY29sbGVjdHt8dnwgdi5mbGF0dGVufS5m
bGF0dGVuCisgIGVuZAorICAKKyAgZGVmIGZsYXR0ZW4KKyAgICBbc2VsZl0gKyBkZXNjZW5kYW50
cworICBlbmQKKyAgCisgIGRlZiBmaWx0ZXIodHlwZSkKKyAgICBmbGF0dGVuLnNlbGVjdHt8dnwg
di5pc19hPyB0eXBlfQorICBlbmQKK2VuZAorCitjbGFzcyBOb0NoaWxkcmVuIDwgTm9kZQorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgIGVuZAor
ICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW10KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICBzZWxmCisgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldEtleQorICBhdHRyX3Jl
YWRlciA6c3RydWN0LCA6ZmllbGQKKyAgCisgIGRlZiBpbml0aWFsaXplKHN0cnVjdCwgZmllbGQp
CisgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIEBmaWVsZCA9IGZpZWxkCisgIGVuZAorICAKKyAg
ZGVmIGhhc2gKKyAgICBAc3RydWN0Lmhhc2ggKyBAZmllbGQuaGFzaCAqIDMKKyAgZW5kCisgIAor
ICBkZWYgZXFsPyhvdGhlcikKKyAgICBAc3RydWN0ID09IG90aGVyLnN0cnVjdCBhbmQgQGZpZWxk
ID09IG90aGVyLmZpZWxkCisgIGVuZAorZW5kCisKKyMKKyMgQVNUIG5vZGVzLgorIworCitjbGFz
cyBTdHJ1Y3RPZmZzZXQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVs
ZAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBAZmllbGQgPSBmaWVs
ZAorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JGaWVsZChj
b2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxkKQorICAgIGtleSA9IFN0cnVjdE9mZnNldEtleS5uZXco
c3RydWN0LCBmaWVsZCkKKyAgICAKKyAgICB1bmxlc3MgQEBtYXBwaW5nW2tleV0KKyAgICAgIEBA
bWFwcGluZ1trZXldID0gU3RydWN0T2Zmc2V0Lm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QsIGZpZWxk
KQorICAgIGVuZAorICAgIEBAbWFwcGluZ1trZXldCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiI3tzdHJ1Y3R9Ojoje2ZpZWxkfSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAg
IGlmIEBzdHJ1Y3QgIT0gb3RoZXIuc3RydWN0CisgICAgICByZXR1cm4gQHN0cnVjdCA8PT4gb3Ro
ZXIuc3RydWN0CisgICAgZW5kCisgICAgQGZpZWxkIDw9PiBvdGhlci5maWVsZAorICBlbmQKKyAg
CisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAg
IGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAK
KyAgZGVmIHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZiA8
IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOnN0cnVjdAorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgc3RydWN0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQHN0cnVjdCA9
IHN0cnVjdAorICBlbmQKKyAgCisgIEBAbWFwcGluZyA9IHt9CisgIAorICBkZWYgc2VsZi5mb3JO
YW1lKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW3N0cnVjdF0KKyAg
ICAgIEBAbWFwcGluZ1tzdHJ1Y3RdID0gU2l6ZW9mLm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QpCisg
ICAgZW5kCisgICAgQEBtYXBwaW5nW3N0cnVjdF0KKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICJzaXplb2YgI3tAc3RydWN0fSIKKyAgZW5kCisgIAorICBkZWYgPD0+KG90aGVyKQorICAgIEBz
dHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVm
IGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIGZh
bHNlCisgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9y
ZWFkZXIgOnZhbHVlCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkKKyAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YWx1ZSA9IHZhbHVlCisgICAgcmFpc2UgIkJhZCBp
bW1lZGlhdGUgdmFsdWUgI3t2YWx1ZS5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1
bmxlc3MgdmFsdWUuaXNfYT8gSW50ZWdlcgorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIiN7
dmFsdWV9IgorICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBvdGhlci5pc19hPyBJbW1l
ZGlhdGUgYW5kIG90aGVyLnZhbHVlID09IEB2YWx1ZQorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNz
PworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAor
ICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVy
PworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMgPCBOb2RlCisg
IGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIGxlZnQsIHJpZ2h0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxlZnQgPSBsZWZ0
CisgICAgQHJpZ2h0ID0gcmlnaHQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQGxl
ZnQsIEByaWdodF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4KKyAgICBBZGRJbW1lZGlh
dGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgICIoI3tsZWZ0LmR1bXB9ICsgI3tyaWdodC5kdW1wfSkiCisg
IGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgbGFi
ZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPworICAgIHRydWUKKyAg
ZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFsc2UKKyAgZW5kCitlbmQKKworY2xhc3Mg
U3ViSW1tZWRpYXRlcyA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICBAbGVmdCA9IGxlZnQKKyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisg
IGRlZiBjaGlsZHJlbgorICAgIFtAbGVmdCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBD
aGlsZHJlbgorICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCks
ICh5aWVsZCBAcmlnaHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVt
cH0gLSAje3JpZ2h0LmR1bXB9KSIKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxz
ZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBp
bW1lZGlhdGU/CisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICBmYWxz
ZQorICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzIDwgTm9kZQorICBhdHRyX3JlYWRl
ciA6bGVmdCwgOnJpZ2h0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCBy
aWdodCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdo
dCA9IHJpZ2h0CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRd
CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgTXVsSW1tZWRpYXRlcy5uZXcoY29k
ZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSAqICN7cmlnaHQuZHVtcH0pIgorICBlbmQKKyAgCisg
IGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxhYmVsPworICAgIGZh
bHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisgIGVuZAorICAKKyAg
ZGVmIHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0
ZSA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmNoaWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBjaGlsZCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxk
CisgIGVuZAorICAKKyAgZGVmIGNoaWxkcmVuCisgICAgW0BjaGlsZF0KKyAgZW5kCisgIAorICBk
ZWYgbWFwQ2hpbGRyZW4KKyAgICBOZWdJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBA
Y2hpbGQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigtI3tAY2hpbGQuZHVtcH0pIgor
ICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGxh
YmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICB0cnVlCisg
IGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAorZW5kCisKK2NsYXNz
IFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDpuYW1lCisgIAorICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
QG5hbWUgPSBuYW1lCisgIGVuZAorICAKKyAgQEBtYXBwaW5nID0ge30KKyAgCisgIGRlZiBzZWxm
LmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisg
ICAgICBAQG1hcHBpbmdbbmFtZV0gPSBSZWdpc3RlcklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQor
ICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
bmFtZQorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAg
ZGVmIGxhYmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICBm
YWxzZQorICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICB0cnVlCisgIGVuZAorZW5kCisK
K2NsYXNzIEZQUmVnaXN0ZXJJRCA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQorICAKKyAg
ZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1hcHBpbmdb
bmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IEZQUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdp
biwgbmFtZSkKKyAgICBlbmQKKyAgICBAQG1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgIG5hbWUKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxzZQorICBl
bmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBpbW1lZGlh
dGU/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgdHJ1ZQorICBl
bmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZSA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5h
bWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcgPSB7fQor
ICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVzcyBAQG1h
cHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFZhcmlhYmxlLm5ldyhjb2RlT3Jp
Z2luLCBuYW1lKQorICAgIGVuZAorICAgIEBAbWFwcGluZ1tuYW1lXQorICBlbmQKKyAgCisgIGRl
ZiBkdW1wCisgICAgbmFtZQorICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzIDwgTm9kZQorICBh
dHRyX3JlYWRlciA6YmFzZSwgOm9mZnNldAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgYmFzZSwgb2Zmc2V0KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGJhc2UgPSBiYXNl
CisgICAgQG9mZnNldCA9IG9mZnNldAorICAgIHJhaXNlICJCYWQgYmFzZSBmb3IgYWRkcmVzcyAj
e2Jhc2UuaW5zcGVjdH0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIGJhc2UuaXNfYT8g
VmFyaWFibGUgb3IgYmFzZS5yZWdpc3Rlcj8KKyAgICByYWlzZSAiQmFkIG9mZnNldCBmb3IgYWRk
cmVzcyAje29mZnNldC5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb2Zm
c2V0LmlzX2E/IFZhcmlhYmxlIG9yIG9mZnNldC5pbW1lZGlhdGU/CisgIGVuZAorICAKKyAgZGVm
IGNoaWxkcmVuCisgICAgW0BiYXNlLCBAb2Zmc2V0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGls
ZHJlbgorICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBA
b2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICIje29mZnNldC5kdW1wfVsje2Jh
c2UuZHVtcH1dIgorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIHRydWUKKyAgZW5kCisg
IAorICBkZWYgbGFiZWw/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgaW1tZWRpYXRlPwor
ICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIHJlZ2lzdGVyPworICAgIGZhbHNlCisgIGVuZAor
ZW5kCisKK2NsYXNzIEJhc2VJbmRleCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOmJhc2UsIDppbmRl
eCwgOnNjYWxlLCA6b2Zmc2V0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNl
LCBpbmRleCwgc2NhbGUsIG9mZnNldCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBiYXNl
ID0gYmFzZQorICAgIEBpbmRleCA9IGluZGV4CisgICAgQHNjYWxlID0gc2NhbGUKKyAgICByYWlz
ZSB1bmxlc3MgWzEsIDIsIDQsIDhdLm1lbWJlcj8gQHNjYWxlCisgICAgQG9mZnNldCA9IG9mZnNl
dAorICBlbmQKKyAgCisgIGRlZiBzY2FsZVNoaWZ0CisgICAgY2FzZSBzY2FsZQorICAgIHdoZW4g
MQorICAgICAgMAorICAgIHdoZW4gMgorICAgICAgMQorICAgIHdoZW4gNAorICAgICAgMgorICAg
IHdoZW4gOAorICAgICAgMworICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQgc2NhbGUgYXQgI3tj
b2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAg
ICBbQGJhc2UsIEBpbmRleCwgQG9mZnNldF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAaW5k
ZXgpLCBAc2NhbGUsICh5aWVsZCBAb2Zmc2V0KSkKKyAgZW5kCisgIAorICBkZWYgZHVtcAorICAg
ICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH0sICN7aW5kZXguZHVtcH0sICN7c2NhbGV9XSIK
KyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICB0cnVlCisgIGVuZAorICAKKyAgZGVmIGxh
YmVsPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVmIGltbWVkaWF0ZT8KKyAgICBmYWxzZQor
ICBlbmQKKyAgCisgIGRlZiByZWdpc3Rlcj8KKyAgICBmYWxzZQorICBlbmQKK2VuZAorCitjbGFz
cyBBYnNvbHV0ZUFkZHJlc3MgPCBOb0NoaWxkcmVuCisgIGF0dHJfcmVhZGVyIDphZGRyZXNzCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBhZGRyZXNzKQorICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgQGFkZHJlc3MgPSBhZGRyZXNzCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAg
ICAiI3thZGRyZXNzLmR1bXB9W10iCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgdHJ1
ZQorICBlbmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBp
bW1lZGlhdGU/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgZmFs
c2UKKyAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24gPCBOb2RlCisgIGF0dHJfcmVhZGVy
IDpvcGNvZGUsIDpvcGVyYW5kcworICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgb3Bj
b2RlLCBvcGVyYW5kcykKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBvcGNvZGUgPSBvcGNv
ZGUKKyAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcworICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgor
ICAgIG9wZXJhbmRzCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgIElu
c3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBAb3Bjb2RlLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkK
KyAgZW5kCisgIAorICBkZWYgZHVtcAorICAgICJcdCIgKyBvcGNvZGUudG9fcyArICIgIiArIG9w
ZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKQorICBlbmQKK2VuZAorCitjbGFz
cyBFcnJvciA8IE5vQ2hpbGRyZW4KKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICBz
dXBlcihjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIlx0ZXJyb3IiCisg
IGVuZAorZW5kCisKK2NsYXNzIENvbnN0RGVjbCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIgOnZhcmlh
YmxlLCA6dmFsdWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2
YWx1ZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEB2YXJpYWJsZSA9IHZhcmlhYmxlCisg
ICAgQHZhbHVlID0gdmFsdWUKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBbQHZhcmlh
YmxlLCBAdmFsdWVdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgQ29uc3REZWNs
Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHZhcmlhYmxlKSwgKHlpZWxkIEB2YWx1ZSkpCisgIGVu
ZAorICAKKyAgZGVmIGR1bXAKKyAgICAiY29uc3QgI3tAdmFyaWFibGUuZHVtcH0gPSAje0B2YWx1
ZS5kdW1wfSIKKyAgZW5kCitlbmQKKworJGxhYmVsTWFwcGluZyA9IHt9CisKK2NsYXNzIExhYmVs
IDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bmFtZQorICAKKyAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgbmFtZSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFt
ZQorICBlbmQKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBp
ZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246
ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExhYmVsCisgICAgZWxz
ZQorICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1l
KQorICAgIGVuZAorICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgZW5kCisgIAorICBkZWYgZHVt
cAorICAgICIje25hbWV9OiIKKyAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbCA8IE5vQ2hp
bGRyZW4KKyAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIG5hbWUpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5k
CisKKyAgQEB1bmlxdWVOYW1lQ291bnRlciA9IDAKKyAgCisgIGRlZiBzZWxmLmZvck5hbWUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICByYWlzZSAi
TGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVd
LmlzX2E/IExvY2FsTGFiZWwKKyAgICBlbHNlCisgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0g
TG9jYWxMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICBlbmQKKyAgICAkbGFiZWxNYXBw
aW5nW25hbWVdCisgIGVuZAorICAKKyAgZGVmIHNlbGYudW5pcXVlKGNvbW1lbnQpCisgICAgbmV3
TmFtZSA9ICJfI3tjb21tZW50fSIKKyAgICBpZiAkbGFiZWxNYXBwaW5nW25ld05hbWVdCisgICAg
ICB3aGlsZSAkbGFiZWxNYXBwaW5nW25ld05hbWUgPSAiXyN7QEB1bmlxdWVOYW1lQ291bnRlcn1f
I3tjb21tZW50fSJdCisgICAgICAgIEBAdW5pcXVlTmFtZUNvdW50ZXIgKz0gMQorICAgICAgZW5k
CisgICAgZW5kCisgICAgZm9yTmFtZShuaWwsIG5ld05hbWUpCisgIGVuZAorICAKKyAgZGVmIGNs
ZWFuTmFtZQorICAgIGlmIG5hbWUgPX4gL15cLi8KKyAgICAgICJfIiArIG5hbWVbMS4uLTFdCisg
ICAgZWxzZQorICAgICAgbmFtZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAg
IiN7bmFtZX06IgorICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZSA8IE5vZGUKKyAg
YXR0cl9yZWFkZXIgOmxhYmVsCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJl
bCkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBsYWJlbCA9IGxhYmVsCisgIGVuZAorICAK
KyAgZGVmIGNoaWxkcmVuCisgICAgW0BsYWJlbF0KKyAgZW5kCisgIAorICBkZWYgbWFwQ2hpbGRy
ZW4KKyAgICBMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisg
IGVuZAorICAKKyAgZGVmIG5hbWUKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICBsYWJlbC5uYW1lCisgIGVuZAorICAKKyAgZGVmIGFkZHJlc3M/CisgICAgZmFsc2UK
KyAgZW5kCisgIAorICBkZWYgbGFiZWw/CisgICAgdHJ1ZQorICBlbmQKK2VuZAorCitjbGFzcyBM
b2NhbExhYmVsUmVmZXJlbmNlIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6bGFiZWwKKyAg
CisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgQGxhYmVsID0gbGFiZWwKKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBb
QGxhYmVsXQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIExvY2FsTGFiZWxSZWZl
cmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICBlbmQKKyAgCisgIGRlZiBu
YW1lCisgICAgbGFiZWwubmFtZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgbGFiZWwubmFt
ZQorICBlbmQKKyAgCisgIGRlZiBhZGRyZXNzPworICAgIGZhbHNlCisgIGVuZAorICAKKyAgZGVm
IGxhYmVsPworICAgIHRydWUKKyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UgPCBOb2RlCisg
IGF0dHJfcmVhZGVyIDpsaXN0CisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsaXN0
KQorICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGxpc3QgPSBsaXN0CisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgbGlzdAorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbigmcHJv
YykKKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgQGxpc3QubWFwKCZwcm9jKSkKKyAgZW5k
CisgIAorICBkZWYgZHVtcAorICAgIGxpc3QuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCJcbiIp
CisgIGVuZAorZW5kCisKK2NsYXNzIFRydWUgPCBOb0NoaWxkcmVuCisgIGRlZiBpbml0aWFsaXpl
CisgICAgc3VwZXIobmlsKQorICBlbmQKKyAgCisgIEBAaW5zdGFuY2UgPSBUcnVlLm5ldworICAK
KyAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICBAQGluc3RhbmNlCisgIGVuZAorICAKKyAgZGVmIHZh
bHVlCisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgInRydWUiCisgIGVuZAor
ZW5kCisKK2NsYXNzIEZhbHNlIDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZQorICAgIHN1
cGVyKG5pbCkKKyAgZW5kCisgIAorICBAQGluc3RhbmNlID0gRmFsc2UubmV3CisgIAorICBkZWYg
c2VsZi5pbnN0YW5jZQorICAgIEBAaW5zdGFuY2UKKyAgZW5kCisgIAorICBkZWYgdmFsdWUKKyAg
ICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgImZhbHNlIgorICBlbmQKK2VuZAor
CitjbGFzcyBUcnVlQ2xhc3MKKyAgZGVmIGFzTm9kZQorICAgIFRydWUuaW5zdGFuY2UKKyAgZW5k
CitlbmQKKworY2xhc3MgRmFsc2VDbGFzcworICBkZWYgYXNOb2RlCisgICAgRmFsc2UuaW5zdGFu
Y2UKKyAgZW5kCitlbmQKKworY2xhc3MgU2V0dGluZyA8IE5vQ2hpbGRyZW4KKyAgYXR0cl9yZWFk
ZXIgOm5hbWUKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBAbmFtZSA9IG5hbWUKKyAgZW5kCisgIAorICBAQG1hcHBpbmcg
PSB7fQorICAKKyAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgIHVubGVz
cyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFNldHRpbmcubmV3KGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgZW5kCisgICAgQEBtYXBwaW5nW25hbWVdCisgIGVuZAorICAK
KyAgZGVmIGR1bXAKKyAgICBuYW1lCisgIGVuZAorZW5kCisKK2NsYXNzIEFuZCA8IE5vZGUKKyAg
YXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAKKyAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbGVmdCwgcmlnaHQpCisgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBAbGVmdCA9IGxlZnQK
KyAgICBAcmlnaHQgPSByaWdodAorICBlbmQKKyAgCisgIGRlZiBjaGlsZHJlbgorICAgIFtAbGVm
dCwgQHJpZ2h0XQorICBlbmQKKyAgCisgIGRlZiBtYXBDaGlsZHJlbgorICAgIEFuZC5uZXcoY29k
ZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgIGVuZAorICAKKyAgZGVm
IGR1bXAKKyAgICAiKCN7bGVmdC5kdW1wfSBhbmQgI3tyaWdodC5kdW1wfSkiCisgIGVuZAorZW5k
CisKK2NsYXNzIE9yIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgIAorICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgIEBsZWZ0ID0gbGVmdAorICAgIEByaWdodCA9IHJpZ2h0CisgIGVuZAorICAKKyAg
ZGVmIGNoaWxkcmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENo
aWxkcmVuCisgICAgT3IubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmln
aHQpKQorICBlbmQKKyAgCisgIGRlZiBkdW1wCisgICAgIigje2xlZnQuZHVtcH0gb3IgI3tyaWdo
dC5kdW1wfSkiCisgIGVuZAorZW5kCisKK2NsYXNzIE5vdCA8IE5vZGUKKyAgYXR0cl9yZWFkZXIg
OmNoaWxkCisgIAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBjaGlsZCA9IGNoaWxkCisgIGVuZAorICAKKyAgZGVmIGNoaWxk
cmVuCisgICAgW0BsZWZ0LCBAcmlnaHRdCisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisg
ICAgTm90Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgZW5kCisgIAorICBkZWYg
ZHVtcAorICAgICIobm90ICN7Y2hpbGQuZHVtcH0pIgorICBlbmQKK2VuZAorCitjbGFzcyBTa2lw
IDwgTm9DaGlsZHJlbgorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiXHRza2lwIgorICBlbmQKK2Vu
ZAorCitjbGFzcyBJZlRoZW5FbHNlIDwgTm9kZQorICBhdHRyX3JlYWRlciA6cHJlZGljYXRlLCA6
dGhlbkNhc2UKKyAgYXR0cl9hY2Nlc3NvciA6ZWxzZUNhc2UKKyAgCisgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgdGhlbkNhc2UpCisgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICBAcHJlZGljYXRlID0gcHJlZGljYXRlCisgICAgQHRoZW5DYXNlID0gdGhlbkNhc2UKKyAg
ICBAZWxzZUNhc2UgPSBTa2lwLm5ldyhjb2RlT3JpZ2luKQorICBlbmQKKyAgCisgIGRlZiBjaGls
ZHJlbgorICAgIGlmIEBlbHNlQ2FzZQorICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZSwgQGVs
c2VDYXNlXQorICAgIGVsc2UKKyAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2VdCisgICAgZW5k
CisgIGVuZAorICAKKyAgZGVmIG1hcENoaWxkcmVuCisgICAgSWZUaGVuRWxzZS5uZXcoY29kZU9y
aWdpbiwgKHlpZWxkIEBwcmVkaWNhdGUpLCAoeWllbGQgQHRoZW5DYXNlKSwgKHlpZWxkIEBlbHNl
Q2FzZSkpCisgIGVuZAorICAKKyAgZGVmIGR1bXAKKyAgICAiaWYgI3twcmVkaWNhdGUuZHVtcH1c
biIgKyB0aGVuQ2FzZS5kdW1wICsgIlxuZWxzZVxuIiArIGVsc2VDYXNlLmR1bXAgKyAiXG5lbmQi
CisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwg
OnZhcmlhYmxlcywgOmJvZHkKKyAgCisgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUs
IHZhcmlhYmxlcywgYm9keSkKKyAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFt
ZQorICAgIEB2YXJpYWJsZXMgPSB2YXJpYWJsZXMKKyAgICBAYm9keSA9IGJvZHkKKyAgZW5kCisg
IAorICBkZWYgY2hpbGRyZW4KKyAgICBAdmFyaWFibGVzICsgW0Bib2R5XQorICBlbmQKKyAgCisg
IGRlZiBtYXBDaGlsZHJlbgorICAgIE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQHZhcmlh
Ymxlcy5tYXB7fHZ8IHlpZWxkIHZ9LCAoeWllbGQgQGJvZHkpKQorICBlbmQKKyAgCisgIGRlZiBk
dW1wCisgICAgIm1hY3JvICN7bmFtZX0oIiArIHZhcmlhYmxlcy5jb2xsZWN0e3x2fCB2LmR1bXB9
LmpvaW4oIiwgIikgKyAiKVxuIiArIGJvZHkuZHVtcCArICJcbmVuZCIKKyAgZW5kCitlbmQKKwor
Y2xhc3MgTWFjcm9DYWxsIDwgTm9kZQorICBhdHRyX3JlYWRlciA6bmFtZSwgOm9wZXJhbmRzCisg
IAorICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgIEBuYW1lID0gbmFtZQorICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRz
CisgICAgcmFpc2UgdW5sZXNzIEBvcGVyYW5kcworICAgIEBvcGVyYW5kcy5lYWNoe3x2fCByYWlz
ZSB1bmxlc3Mgdn0KKyAgZW5kCisgIAorICBkZWYgY2hpbGRyZW4KKyAgICBAb3BlcmFuZHMKKyAg
ZW5kCisgIAorICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgTWFjcm9DYWxsLm5ldyhjb2Rl
T3JpZ2luLCBAbmFtZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiXHQje25hbWV9KCIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4o
IiwgIikgKyAiKSIKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vYmFja2VuZHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NiBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
IworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXJtdjci
CityZXF1aXJlICJhc3QiCityZXF1aXJlICJ4ODYiCisKK0JBQ0tFTkRTID0KKyAgWworICAgIlg4
NiIsCisgICAiQVJNdjciCisgIF0KKworIyBLZWVwIHRoZSBzZXQgb2Ygd29ya2luZyBiYWNrZW5k
cyBzZXBhcmF0ZSBmcm9tIHRoZSBzZXQgb2YgYmFja2VuZHMgdGhhdCBtaWdodCBiZQorIyBzdXBw
b3J0ZWQuIFRoaXMgaXMgZ3JlYXQgYmVjYXVzZSB0aGUgQkFDS0VORFMgbGlzdCBpcyBhbG1vc3Qg
bGlrZSBhIHJlc2VydmVkCisjIHdvcmRzIGxpc3QsIGluIHRoYXQgaXQgY2F1c2VzIHNldHRpbmdz
IHJlc29sdXRpb24gdG8gdHJlYXQgdGhvc2Ugd29yZHMgc3BlY2lhbGx5LgorIyBIZW5jZSB0aGlz
IGxldHMgdXMgc2V0IGFzaWRlIHRoZSBuYW1lIG9mIGEgYmFja2VuZCB3ZSBtaWdodCB3YW50IHRv
IHN1cHBvcnQgaW4KKyMgdGhlIGZ1dHVyZSB3aGlsZSBub3QgYWN0dWFsbHkgc3VwcG9ydGluZyB0
aGUgYmFja2VuZCB5ZXQuCitXT1JLSU5HX0JBQ0tFTkRTID0KKyAgWworICAgIlg4NiIsCisgICAi
QVJNdjciCisgIF0KKworQkFDS0VORF9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCcgKyBCQUNL
RU5EUy5qb2luKCcpfCgnKSArICcpXFxaJykKKworY2xhc3MgTm9kZQorICBkZWYgbG93ZXIobmFt
ZSkKKyAgICBzZW5kKCJsb3dlciIgKyBuYW1lKQorICBlbmQKK2VuZAorCisjIE92ZXJyaWRlcyBm
b3IgbG93ZXIoKSBmb3IgdGhvc2Ugbm9kZXMgdGhhdCBhcmUgYmFja2VuZC1hZ25vc3RpYworCitj
bGFzcyBMYWJlbAorICBkZWYgbG93ZXIobmFtZSkKKyAgICAkYXNtLnB1dHNMYWJlbChzZWxmLm5h
bWVbMS4uLTFdKQorICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgIGRlZiBsb3dlcihu
YW1lKQorICAgICRhc20ucHV0c0xvY2FsTGFiZWwgIl9vZmZsaW5lYXNtXyN7c2VsZi5uYW1lWzEu
Li0xXX0iCisgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgIGRlZiBhc21MYWJl
bAorICAgIEFzc2VtYmxlci5sYWJlbFJlZmVyZW5jZShuYW1lWzEuLi0xXSkKKyAgZW5kCitlbmQK
KworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQorICBkZWYgYXNtTGFiZWwKKyAgICBBc3NlbWJs
ZXIubG9jYWxMYWJlbFJlZmVyZW5jZSgiX29mZmxpbmVhc21fIituYW1lWzEuLi0xXSkKKyAgZW5k
CitlbmQKKworY2xhc3MgU2tpcAorICBkZWYgbG93ZXIobmFtZSkKKyAgZW5kCitlbmQKKworY2xh
c3MgU2VxdWVuY2UKKyAgZGVmIGxvd2VyKG5hbWUpCisgICAgaWYgcmVzcG9uZF90bz8gImxvd2Vy
I3tuYW1lfSIKKyAgICAgIHNlbmQoImxvd2VyI3tuYW1lfSIpCisgICAgZWxzZQorICAgICAgQGxp
c3QuZWFjaCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIG5vZGUubG93ZXIobmFtZSkKKyAg
ICAgIH0KKyAgICBlbmQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9y
LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2Vu
ZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzYgQEAK
KyMhL3Vzci9iaW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworJDogPDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNrZW5kcyIK
K3JlcXVpcmUgImRpZ2VzdC9zaGExIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNl
ciIKK3JlcXVpcmUgInNlbGZfaGFzaCIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJh
bnNmb3JtIgorCitpbnB1dEZsbm0gPSBBUkdWLnNoaWZ0CitvdXRwdXRGbG5tID0gQVJHVi5zaGlm
dAorCiskc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IFBhcnNpbmcgI3tpbnB1dEZsbm19IGFuZCBj
cmVhdGluZyBvZmZzZXQgZXh0cmFjdG9yICN7b3V0cHV0RmxubX0uIgorCitkZWYgZW1pdE1hZ2lj
TnVtYmVyCisgIE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVhY2ggeworICAgIHwgbnVtYmVyIHwKKyAg
ICAkb3V0cHV0LnB1dHMgIiN7bnVtYmVyfSwiCisgIH0KK2VuZAorCitpbnB1dERhdGEgPSBJTzo6
cmVhZChpbnB1dEZsbm0pCitpbnB1dEhhc2ggPSAiLy8gb2ZmbGluZWFzbSBpbnB1dCBoYXNoOiAj
e0RpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoaW5wdXREYXRhKX0gI3tzZWxmSGFzaH0iCisKK2lmIEZp
bGVUZXN0LmV4aXN0PyBvdXRwdXRGbG5tCisgIEZpbGUub3BlbihvdXRwdXRGbG5tLCAiciIpIHsK
KyAgICB8IGlucCB8CisgICAgZmlyc3RMaW5lID0gaW5wLmdldHMKKyAgICBpZiBmaXJzdExpbmUg
YW5kIGZpcnN0TGluZS5jaG9tcCA9PSBpbnB1dEhhc2gKKyAgICAgICRzdGRlcnIucHV0cyAib2Zm
bGluZWFzbTogTm90aGluZyBjaGFuZ2VkLiIKKyAgICAgIGV4aXQgMAorICAgIGVuZAorICB9Citl
bmQKKworb3JpZ2luYWxBU1QgPSBwYXJzZShsZXgoaW5wdXREYXRhKSkKKworIworIyBPcHRpbWl6
ZSB0aGUgQVNUIHRvIG1ha2UgY29uZmlndXJhdGlvbiBleHRyYWN0aW9uIGZhc3Rlci4gVGhpcyBy
ZWR1Y2VzIHRoZSBBU1QgdG8gYSBmb3JtCisjIHRoYXQgb25seSBjb250YWlucyB0aGUgdGhpbmdz
IHRoYXQgbWF0dGVyIGZvciBvdXIgcHVycG9zZXM6IG9mZnNldHMsIHNpemVzLCBhbmQgaWYKKyMg
c3RhdGVtZW50cy4KKyMKKworY2xhc3MgTm9kZQorICBkZWYgb2Zmc2V0c1BydW5lVG8oc2VxdWVu
Y2UpCisgICAgY2hpbGRyZW4uZWFjaCB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLm9m
ZnNldHNQcnVuZVRvKHNlcXVlbmNlKQorICAgIH0KKyAgZW5kCisgIAorICBkZWYgb2Zmc2V0c1By
dW5lCisgICAgcmVzdWx0ID0gU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIFtdKQorICAgIG9mZnNl
dHNQcnVuZVRvKHJlc3VsdCkKKyAgICByZXN1bHQKKyAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVu
RWxzZQorICBkZWYgb2Zmc2V0c1BydW5lVG8oc2VxdWVuY2UpCisgICAgaWZUaGVuRWxzZSA9IElm
VGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgdGhlbkNhc2Uub2Zmc2V0c1BydW5l
KQorICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBlbHNlQ2FzZS5vZmZzZXRzUHJ1bmUKKyAgICBz
ZXF1ZW5jZS5saXN0IDw8IGlmVGhlbkVsc2UKKyAgZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zm
c2V0CisgIGRlZiBvZmZzZXRzUHJ1bmVUbyhzZXF1ZW5jZSkKKyAgICBzZXF1ZW5jZS5saXN0IDw8
IHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mCisgIGRlZiBvZmZzZXRzUHJ1bmVUbyhz
ZXF1ZW5jZSkKKyAgICBzZXF1ZW5jZS5saXN0IDw8IHNlbGYKKyAgZW5kCitlbmQKKworcHJ1bmVk
QVNUID0gb3JpZ2luYWxBU1Qub2Zmc2V0c1BydW5lCisKK0ZpbGUub3BlbihvdXRwdXRGbG5tLCAi
dyIpIHsKKyAgfCBvdXRwIHwKKyAgJG91dHB1dCA9IG91dHAKKyAgb3V0cC5wdXRzIGlucHV0SGFz
aAorICBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMocHJ1bmVkQVNUKSB7CisgICAgfCBzZXR0
aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8CisgICAgb2Zmc2V0c0xpc3QgPSBhc3QuZmlsdGVy
KFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CisgICAgc2l6ZXNMaXN0ID0gYXN0LmZpbHRlcihTaXpl
b2YpLnVuaXEuc29ydAorICAgIAorICAgIGxlbmd0aCA9IChPRkZTRVRfTUFHSUNfTlVNQkVSUy5z
aXplICsgMSkgKiAoMSArIG9mZnNldHNMaXN0LnNpemUgKyBzaXplc0xpc3Quc2l6ZSkKKyAgICAK
KyAgICBvdXRwLnB1dHMgInN0YXRpYyBjb25zdCB1bnNpZ25lZCBleHRyYWN0b3JUYWJsZVsje2xl
bmd0aH1dID0geyIKKyAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICBvdXRwLnB1dHMgIiN7aW5kZXh9
LCIKKyAgICBvZmZzZXRzTGlzdC5lYWNoIHsKKyAgICAgIHwgb2Zmc2V0IHwKKyAgICAgIGVtaXRN
YWdpY051bWJlcgorICAgICAgb3V0cC5wdXRzICJPRkZMSU5FX0FTTV9PRkZTRVRPRigje29mZnNl
dC5zdHJ1Y3R9LCAje29mZnNldC5maWVsZH0pLCIKKyAgICB9CisgICAgc2l6ZXNMaXN0LmVhY2gg
eworICAgICAgfCBvZmZzZXQgfAorICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICBvdXRwLnB1
dHMgInNpemVvZigje29mZnNldC5zdHJ1Y3R9KSwiCisgICAgfQorICAgIG91dHAucHV0cyAifTsi
CisgIH0KK30KKworJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBvZmZzZXQgZXh0cmFjdG9yICN7
b3V0cHV0RmxubX0gc3VjY2Vzc2Z1bGx5IGdlbmVyYXRlZC4iCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjE3IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisjIEludGVyZXN0aW5nIGludmFyaWFudCwgd2hpY2ggd2UgdGFrZSBhZHZhbnRh
Z2Ugb2Y6IGJyYW5jaGluZyBpbnN0cnVjdGlvbnMKKyMgYWx3YXlzIGJlZ2luIHdpdGggImIiLCBh
bmQgbm8gbm9uLWJyYW5jaGluZyBpbnN0cnVjdGlvbnMgYmVnaW4gd2l0aCAiYiIuCisjIFRlcm1p
bmFsIGluc3RydWN0aW9ucyBhcmUgImptcCIgYW5kICJyZXQiLgorCitNQUNST19JTlNUUlVDVElP
TlMgPQorICBbCisgICAiYWRkaSIsCisgICAiYW5kaSIsCisgICAibHNoaWZ0aSIsCisgICAibXVs
aSIsCisgICAibmVnaSIsCisgICAibm90aSIsCisgICAib3JpIiwKKyAgICJyc2hpZnRpIiwKKyAg
ICJ1cnNoaWZ0aSIsCisgICAic3ViaSIsCisgICAieG9yaSIsCisgICAibG9hZGkiLAorICAgImxv
YWRiIiwKKyAgICJsb2FkYnMiLAorICAgImxvYWRoIiwKKyAgICJsb2FkaHMiLAorICAgInN0b3Jl
aSIsCisgICAic3RvcmViIiwKKyAgICJsb2FkZCIsCisgICAibW92ZWQiLAorICAgInN0b3JlZCIs
CisgICAiYWRkZCIsCisgICAiZGl2ZCIsCisgICAic3ViZCIsCisgICAibXVsZCIsCisgICAic3Fy
dGQiLAorICAgImNpMmQiLAorICAgImZpaTJkIiwgIyB1c2FnZTogZmlpMmQgPGdwciB3aXRoIGxl
YXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPiwg
PGZwcj4KKyAgICJmZDJpaSIsICMgdXNhZ2U6IGZkMmlpIDxmcHI+LCA8Z3ByIHdpdGggbGVhc3Qg
c2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+CisgICAi
YmRlcSIsCisgICAiYmRuZXEiLAorICAgImJkZ3QiLAorICAgImJkZ3RlcSIsCisgICAiYmRsdCIs
CisgICAiYmRsdGVxIiwKKyAgICJiZGVxdW4iLAorICAgImJkbmVxdW4iLAorICAgImJkZ3R1biIs
CisgICAiYmRndGVxdW4iLAorICAgImJkbHR1biIsCisgICAiYmRsdGVxdW4iLAorICAgImJ0ZDJp
IiwKKyAgICJ0ZDJpIiwKKyAgICJiY2QyaSIsCisgICAibW92ZHoiLAorICAgInBvcCIsCisgICAi
cHVzaCIsCisgICAibW92ZSIsCisgICAic3hpMnAiLAorICAgInp4aTJwIiwKKyAgICJub3AiLAor
ICAgImJpZXEiLAorICAgImJpbmVxIiwKKyAgICJiaWEiLAorICAgImJpYWVxIiwKKyAgICJiaWIi
LAorICAgImJpYmVxIiwKKyAgICJiaWd0IiwKKyAgICJiaWd0ZXEiLAorICAgImJpbHQiLAorICAg
ImJpbHRlcSIsCisgICAiYmJlcSIsCisgICAiYmJuZXEiLAorICAgImJiYSIsCisgICAiYmJhZXEi
LAorICAgImJiYiIsCisgICAiYmJiZXEiLAorICAgImJiZ3QiLAorICAgImJiZ3RlcSIsCisgICAi
YmJsdCIsCisgICAiYmJsdGVxIiwKKyAgICJidGlvIiwKKyAgICJidGlzIiwKKyAgICJidGl6IiwK
KyAgICJidGlueiIsCisgICAiYnRibyIsCisgICAiYnRicyIsCisgICAiYnRieiIsCisgICAiYnRi
bnoiLAorICAgImptcCIsCisgICAiYmFkZGlvIiwKKyAgICJiYWRkaXMiLAorICAgImJhZGRpeiIs
CisgICAiYmFkZGlueiIsCisgICAiYnN1YmlvIiwKKyAgICJic3ViaXMiLAorICAgImJzdWJpeiIs
CisgICAiYnN1YmlueiIsCisgICAiYm11bGlvIiwKKyAgICJibXVsaXMiLAorICAgImJtdWxpeiIs
CisgICAiYm11bGlueiIsCisgICAiYm9yaW8iLAorICAgImJvcmlzIiwKKyAgICJib3JpeiIsCisg
ICAiYm9yaW56IiwKKyAgICJicmVhayIsCisgICAiY2FsbCIsCisgICAicmV0IiwKKyAgICJjaWVx
IiwKKyAgICJjaW5lcSIsCisgICAiY2lhIiwKKyAgICJjaWFlcSIsCisgICAiY2liIiwKKyAgICJj
aWJlcSIsCisgICAiY2lndCIsCisgICAiY2lndGVxIiwKKyAgICJjaWx0IiwKKyAgICJjaWx0ZXEi
LAorICAgInRpbyIsCisgICAidGlzIiwKKyAgICJ0aXoiLAorICAgInRpbnoiLAorICAgInRibyIs
CisgICAidGJzIiwKKyAgICJ0YnoiLAorICAgInRibnoiLAorICAgInBlZWsiLAorICAgInBva2Ui
LAorICAgImJwZXEiLAorICAgImJwbmVxIiwKKyAgICJicGEiLAorICAgImJwYWVxIiwKKyAgICJi
cGIiLAorICAgImJwYmVxIiwKKyAgICJicGd0IiwKKyAgICJicGd0ZXEiLAorICAgImJwbHQiLAor
ICAgImJwbHRlcSIsCisgICAiYWRkcCIsCisgICAiYW5kcCIsCisgICAib3JwIiwKKyAgICJzdWJw
IiwKKyAgICJ4b3JwIiwKKyAgICJsb2FkcCIsCisgICAiY3BlcSIsCisgICAiY3BuZXEiLAorICAg
ImNwYSIsCisgICAiY3BhZXEiLAorICAgImNwYiIsCisgICAiY3BiZXEiLAorICAgImNwZ3QiLAor
ICAgImNwZ3RlcSIsCisgICAiY3BsdCIsCisgICAiY3BsdGVxIiwKKyAgICJzdG9yZXAiLAorICAg
ImJ0cG8iLAorICAgImJ0cHMiLAorICAgImJ0cHoiLAorICAgImJ0cG56IiwKKyAgICJiYWRkcG8i
LAorICAgImJhZGRwcyIsCisgICAiYmFkZHB6IiwKKyAgICJiYWRkcG56IiwKKyAgICJibyIsCisg
ICAiYnMiLAorICAgImJ6IiwKKyAgICJibnoiLAorICAgImxlYWkiLAorICAgImxlYXAiLAorICBd
CisKK1g4Nl9JTlNUUlVDVElPTlMgPQorICBbCisgICAiY2RxaSIsCisgICAiaWRpdmkiCisgIF0K
KworQVJNdjdfSU5TVFJVQ1RJT05TID0KKyAgWworICAgInNtdWxsaSIsCisgICAiYWRkaXMiLAor
ICAgInN1YmlzIiwKKyAgICJvcmlzIgorICBdCisKK0lOU1RSVUNUSU9OUyA9IE1BQ1JPX0lOU1RS
VUNUSU9OUyArIFg4Nl9JTlNUUlVDVElPTlMgKyBBUk12N19JTlNUUlVDVElPTlMKKworSU5TVFJV
Q1RJT05fUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIElOU1RSVUNUSU9OUy5qb2luKCcp
fCgnKSArICcpKVxcWicpCisKK2RlZiBpc0JyYW5jaChpbnN0cnVjdGlvbikKKyAgaW5zdHJ1Y3Rp
b24gPX4gL15iLworZW5kCisKK2RlZiBoYXNGYWxsVGhyb3VnaChpbnN0cnVjdGlvbikKKyAgaW5z
dHJ1Y3Rpb24gIT0gInJldCIgYW5kIGluc3RydWN0aW9uICE9ICJqbXAiCitlbmQKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFu
dHMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zm
c2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyNiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgwZmY1ZTc1NSBdCisKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNTAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIm9mZnNldF9leHRyYWN0b3JfY29uc3Rh
bnRzIgorCitPRkZTRVRfTUFHSUNfTlVNQkVSUyA9IFsgMHhlYzU3N2FjNywgMHgwZmY1ZTc1NSBd
CisKKyMKKyMgb2Zmc2V0c0xpc3QoYXN0KQorIyBzaXplc0xpc3QoYXN0KQorIworIyBSZXR1cm5z
IGEgbGlzdCBvZiBvZmZzZXRzIGFuZCBzaXplcyB1c2VkIGJ5IHRoZSBBU1QuCisjCisKK2RlZiBv
ZmZzZXRzTGlzdChhc3QpCisgIGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNvcnQKK2Vu
ZAorCitkZWYgc2l6ZXNMaXN0KGFzdCkKKyAgYXN0LmZpbHRlcihTaXplb2YpLnVuaXEuc29ydAor
ZW5kCisKKyMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChhc3QsIGZpbGUpIC0+Cisj
ICAgICBbb2Zmc2V0cywgaW5kZXhdCisjCisjIFBhcnNlcyB0aGUgb2Zmc2V0cyBmcm9tIGEgZmls
ZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgdGhlCisjIGluZGV4IG9mIHRoZSBj
b25maWd1cmF0aW9uIHRoYXQgaXMgdmFsaWQgaW4gdGhpcyBidWlsZCB0YXJnZXQuCisjCisKK2Rl
ZiBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUpCisgIGluZGV4ID0gbmlsCisgIG9m
ZnNldHMgPSBbXQorICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBuaWwKKyAgCisgIGRlZiByZWFk
SW50KGVuZGlhbm5lc3MsIGlucCkKKyAgICBieXRlcyA9IFtdCisgICAgNC50aW1lcyB7CisgICAg
ICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQorICAgIH0KKyAgICAKKyAgICBpZiBlbmRpYW5uZXNzID09
IDpsaXR0bGUKKyAgICAgICMgTGl0dGxlIGVuZGlhbgorICAgICAgKGJ5dGVzWzBdIDw8IDAgfAor
ICAgICAgIGJ5dGVzWzFdIDw8IDggfAorICAgICAgIGJ5dGVzWzJdIDw8IDE2IHwKKyAgICAgICBi
eXRlc1szXSA8PCAyNCkKKyAgICBlbHNlCisgICAgICAjIEJpZyBlbmRpYW4KKyAgICAgIChieXRl
c1swXSA8PCAyNCB8CisgICAgICAgYnl0ZXNbMV0gPDwgMTYgfAorICAgICAgIGJ5dGVzWzJdIDw8
IDggfAorICAgICAgIGJ5dGVzWzNdIDw8IDApCisgICAgZW5kCisgIGVuZAorICAKKyAgWzpsaXR0
bGUsIDpiaWddLmVhY2ggeworICAgIHwgZW5kaWFubmVzcyB8CisgICAgbWFnaWNCeXRlcyA9IFtd
CisgICAgTUFHSUNfTlVNQkVSUy5lYWNoIHsKKyAgICAgIHwgbnVtYmVyIHwKKyAgICAgIGN1cnJl
bnRCeXRlcyA9IFtdCisgICAgICA0LnRpbWVzIHsKKyAgICAgICAgY3VycmVudEJ5dGVzIDw8IChu
dW1iZXIgJiAweGZmKQorICAgICAgICBudW1iZXIgPj49IDgKKyAgICAgIH0KKyAgICAgIGlmIGVu
ZGlhbm5lc3MgPT0gOmJpZworICAgICAgICBjdXJyZW50Qnl0ZXMucmV2ZXJzZSEKKyAgICAgIGVu
ZAorICAgICAgbWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0ZXMKKyAgICB9CisgICAgCisgICAgRmls
ZS5vcGVuKGZpbGUsICJyIikgeworICAgICAgfCBpbnAgfAorICAgICAgd2hlcmVJbk1hcmtlciA9
IDAKKyAgICAgIGxvb3AgeworICAgICAgICBieXRlID0gaW5wLmdldGJ5dGUKKyAgICAgICAgYnJl
YWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgaWYgYnl0ZSA9PSBtYWdpY0J5dGVzW3doZXJlSW5NYXJr
ZXJdCisgICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisgICAgICAgICAgaWYgd2hlcmVJbk1h
cmtlciA9PSBtYWdpY0J5dGVzLnNpemUKKyAgICAgICAgICAgICMgV2UgaGF2ZSBhIG1hdGNoISBJ
ZiB3ZSBoYXZlIG5vdCB5ZXQgcmVhZCB0aGUgZW5kaWFubmVzcyBtYXJrZXIgYW5kIGluZGV4LAor
ICAgICAgICAgICAgIyB0aGVuIHJlYWQgdGhvc2Ugbm93OyBvdGhlcndpc2UgcmVhZCBhbiBvZmZz
ZXQuCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIG5vdCBpbmRleAorICAgICAgICAgICAg
ICBpbmRleCA9IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICBvZmZzZXRzIDw8IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAg
ICAgZW5kCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdoZXJlSW5NYXJrZXIgPSAwCisgICAg
ICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAg
ICAgICBlbmQKKyAgICAgIH0KKyAgICB9CisgICAgCisgICAgYnJlYWsgaWYgaW5kZXgKKyAgfQor
ICAKKyAgcmFpc2UgdW5sZXNzIGluZGV4CisgIAorICBbb2Zmc2V0cywgaW5kZXhdCitlbmQKKwor
IworIyBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkgLT4gW29mZnNldHMsIHNpemVz
XQorIworIyBCdWlsZHMgYSBtYXBwaW5nIGJldHdlZW4gU3RydWN0T2Zmc2V0IG5vZGVzIGFuZCB0
aGVpciB2YWx1ZXMuCisjCisKK2RlZiBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkK
KyAgb2Zmc2V0c01hcCA9IHt9CisgIHNpemVzTWFwID0ge30KKyAgYXN0T2Zmc2V0c0xpc3QgPSBv
ZmZzZXRzTGlzdChhc3QpCisgIGFzdFNpemVzTGlzdCA9IHNpemVzTGlzdChhc3QpCisgIHJhaXNl
IHVubGVzcyBhc3RPZmZzZXRzTGlzdC5zaXplICsgYXN0U2l6ZXNMaXN0LnNpemUgPT0gb2Zmc2V0
c0xpc3Quc2l6ZQorICBvZmZzZXRzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBz
dHJ1Y3RPZmZzZXQsIGluZGV4IHwKKyAgICBvZmZzZXRzTWFwW3N0cnVjdE9mZnNldF0gPSBvZmZz
ZXRzTGlzdC5zaGlmdAorICB9CisgIHNpemVzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7Cisg
ICAgfCBzaXplb2YsIGluZGV4IHwKKyAgICBzaXplc01hcFtzaXplb2ZdID0gb2Zmc2V0c0xpc3Qu
c2hpZnQKKyAgfQorICBbb2Zmc2V0c01hcCwgc2l6ZXNNYXBdCitlbmQKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb3B0LnJiCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29wdC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29wdC5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MzQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
IyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFz
dCIKKworIworIyAiT3B0aW1pemF0aW9uIiBwYXNzZXMuIFRoZXNlIGFyZSB1c2VkIHRvIGxvd2Vy
IHRoZSByZXByZXNlbnRhdGlvbiBmb3IKKyMgYmFja2VuZHMgdGhhdCBjYW5ub3QgaGFuZGxlIHNv
bWUgb2Ygb3VyIGhpZ2hlci1sZXZlbCBpbnN0cnVjdGlvbnMuCisjCisKKyMKKyMgQSB0ZW1wb3Jh
cnkgLSBhIHZhcmlhYmxlIHRoYXQgd2lsbCBiZSBhbGxvY2F0ZWQgdG8gYSByZWdpc3RlciBhZnRl
ciB3ZSdyZQorIyBkb25lLgorIworCitjbGFzcyBOb2RlCisgIGRlZiByZXBsYWNlVGVtcG9yYXJp
ZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgbWFwQ2hpbGRyZW4geworICAgICAgfCBub2RlIHwK
KyAgICAgIG5vZGUucmVwbGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lzdGVycyhraW5kKQorICAgIH0K
KyAgZW5kCitlbmQKKworY2xhc3MgVG1wIDwgTm9DaGlsZHJlbgorICBhdHRyX3JlYWRlciA6Zmly
c3RNZW50aW9uLCA6bGFzdE1lbnRpb24KKyAgYXR0cl9yZWFkZXIgOmtpbmQKKyAgYXR0cl9hY2Nl
c3NvciA6cmVnaXN0ZXIKKworICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBraW5kKQorICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgQGtpbmQgPSBraW5kCisgIGVuZAorICAKKyAgZGVmIGR1
bXAKKyAgICAiJHRtcCN7b2JqZWN0X2lkfSIKKyAgZW5kCisgIAorICBkZWYgbWVudGlvbiEocG9z
aXRpb24pCisgICAgaWYgbm90IEBmaXJzdE1lbnRpb24gb3IgcG9zaXRpb24gPCBAZmlyc3RNZW50
aW9uCisgICAgICBAZmlyc3RNZW50aW9uID0gcG9zaXRpb24KKyAgICBlbmQKKyAgICBpZiBub3Qg
QGxhc3RNZW50aW9uIG9yIHBvc2l0aW9uID4gQGxhc3RNZW50aW9uCisgICAgICBAbGFzdE1lbnRp
b24gPSBwb3NpdGlvbgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiByZXBsYWNlVGVtcG9yYXJp
ZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgaWYgQGtpbmQgPT0ga2luZAorICAgICAgcmFpc2Ug
IkRpZCBub3QgYWxsb2NhdGUgcmVnaXN0ZXIgdG8gdGVtcG9yYXJ5IGF0ICN7Y29kZU9yaWdpblN0
cmluZ30iIHVubGVzcyBAcmVnaXN0ZXIKKyAgICAgIEByZWdpc3RlcgorICAgIGVsc2UKKyAgICAg
IHNlbGYKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgYWRkcmVzcz8KKyAgICBmYWxzZQorICBl
bmQKKyAgCisgIGRlZiBsYWJlbD8KKyAgICBmYWxzZQorICBlbmQKKyAgCisgIGRlZiBpbW1lZGlh
dGU/CisgICAgZmFsc2UKKyAgZW5kCisgIAorICBkZWYgcmVnaXN0ZXI/CisgICAgdHJ1ZQorICBl
bmQKK2VuZAorCisjIEFzc2lnbiByZWdpc3RlcnMgdG8gdGVtcG9yYXJpZXMsIGJ5IGZpbmRpbmcg
d2hpY2ggdGVtcG9yYXJpZXMgaW50ZXJmZXJlCisjIHdpdGggZWFjaCBvdGhlci4gTm90ZSB0aGF0
IHRoaXMgcmVsaWVzIG9uIHRlbXBvcmFyeSBsaXZlIHJhbmdlcyBub3QgY3Jvc3NpbmcKKyMgYmFz
aWMgYmxvY2sgYm91bmRhcmllcy4KKworZGVmIGFzc2lnblJlZ2lzdGVyc1RvVGVtcG9yYXJpZXMo
bGlzdCwga2luZCwgcmVnaXN0ZXJzKQorICBsaXN0LmVhY2hfd2l0aF9pbmRleCB7CisgICAgfCBu
b2RlLCBpbmRleCB8CisgICAgbm9kZS5maWx0ZXIoVG1wKS51bmlxLmVhY2ggeworICAgICAgfCB0
bXAgfAorICAgICAgaWYgdG1wLmtpbmQgPT0ga2luZAorICAgICAgICB0bXAubWVudGlvbiEgaW5k
ZXgKKyAgICAgIGVuZAorICAgIH0KKyAgfQorICAKKyAgZnJlZVJlZ2lzdGVycyA9IHJlZ2lzdGVy
cy5kdXAKKyAgbGlzdC5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgbm9kZSwgaW5kZXggfAorICAg
IHRtcExpc3QgPSBub2RlLmZpbHRlcihUbXApLnVuaXEKKyAgICB0bXBMaXN0LmVhY2ggeworICAg
ICAgfCB0bXAgfAorICAgICAgaWYgdG1wLmtpbmQgPT0ga2luZCBhbmQgdG1wLmZpcnN0TWVudGlv
biA9PSBpbmRleAorICAgICAgICByYWlzZSAiQ291bGQgbm90IGFsbG9jYXRlIHJlZ2lzdGVyIHRv
IHRlbXBvcmFyeSBhdCAje25vZGUuY29kZU9yaWdpblN0cmluZ30iIGlmIGZyZWVSZWdpc3RlcnMu
ZW1wdHk/CisgICAgICAgIHRtcC5yZWdpc3RlciA9IGZyZWVSZWdpc3RlcnMucG9wCisgICAgICBl
bmQKKyAgICB9CisgICAgdG1wTGlzdC5lYWNoIHsKKyAgICAgIHwgdG1wIHwKKyAgICAgIGlmIHRt
cC5raW5kID09IGtpbmQgYW5kIHRtcC5sYXN0TWVudGlvbiA9PSBpbmRleAorICAgICAgICBmcmVl
UmVnaXN0ZXJzLnB1c2ggdG1wLnJlZ2lzdGVyCisgICAgICAgIHJhaXNlICJSZWdpc3RlciBhbGxv
Y2F0aW9uIGluY29uc2lzdGVuY3kgYXQgI3tub2RlLmNvZGVPcmlnaW5TdHJpbmd9IiBpZiBmcmVl
UmVnaXN0ZXJzLnNpemUgPiByZWdpc3RlcnMuc2l6ZQorICAgICAgZW5kCisgICAgfQorICB9Cisg
IAorICBsaXN0Lm1hcCB7CisgICAgfCBub2RlIHwKKyAgICBub2RlLnJlcGxhY2VUZW1wb3Jhcmll
c1dpdGhSZWdpc3RlcnMoa2luZCkKKyAgfQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTg1
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3Qi
CityZXF1aXJlICJpbnN0cnVjdGlvbnMiCityZXF1aXJlICJyZWdpc3RlcnMiCisKK2NsYXNzIFRv
a2VuCisgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luLCA6c3RyaW5nCisgIAorICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCBzdHJpbmcpCisgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisg
ICAgQHN0cmluZyA9IHN0cmluZworICBlbmQKKyAgCisgIGRlZiA9PShvdGhlcikKKyAgICBpZiBv
dGhlci5pc19hPyBUb2tlbgorICAgICAgQHN0cmluZyA9PSBvdGhlci5zdHJpbmcKKyAgICBlbHNl
CisgICAgICBAc3RyaW5nID09IG90aGVyCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmID1+KG90
aGVyKQorICAgIEBzdHJpbmcgPX4gb3RoZXIKKyAgZW5kCisgIAorICBkZWYgdG9fcworICAgICIj
e0BzdHJpbmcuaW5zcGVjdH0gYXQgbGluZSAje2NvZGVPcmlnaW59IgorICBlbmQKKyAgCisgIGRl
ZiBwYXJzZUVycm9yKCpjb21tZW50KQorICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICByYWlz
ZSAiUGFyc2UgZXJyb3I6ICN7dG9fc30iCisgICAgZWxzZQorICAgICAgcmFpc2UgIlBhcnNlIGVy
cm9yOiAje3RvX3N9OiAje2NvbW1lbnRbMF19IgorICAgIGVuZAorICBlbmQKK2VuZAorCisjCisj
IFRoZSBsZXhlci4gVGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdG9rZW5z
LgorIworCitkZWYgbGV4KHN0cikKKyAgcmVzdWx0ID0gW10KKyAgbGluZU51bWJlciA9IDEKKyAg
d2hpbGUgbm90IHN0ci5lbXB0eT8KKyAgICBjYXNlIHN0cgorICAgIHdoZW4gL1xBXCMoW15cbl0q
KS8KKyAgICAgICMgY29tbWVudCwgaWdub3JlCisgICAgd2hlbiAvXEFcbi8KKyAgICAgIHJlc3Vs
dCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICBsaW5lTnVtYmVyICs9IDEKKyAg
ICB3aGVuIC9cQVthLXpBLVpdKFthLXpBLVowLTlfXSopLworICAgICAgcmVzdWx0IDw8IFRva2Vu
Lm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQVwuKFthLXpBLVowLTlfXSopLworICAg
ICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICB3aGVuIC9cQV8oW2Et
ekEtWjAtOV9dKikvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQor
ICAgIHdoZW4gL1xBKFsgXHRdKykvCisgICAgICAjIHdoaXRlc3BhY2UsIGlnbm9yZQorICAgIHdo
ZW4gL1xBMHgoWzAtOWEtZkEtRl0rKS8KKyAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51
bWJlciwgJCYuaGV4LnRvX3MpCisgICAgd2hlbiAvXEEwKFswLTddKykvCisgICAgICByZXN1bHQg
PDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLm9jdC50b19zKQorICAgIHdoZW4gL1xBKFswLTld
KykvCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdoZW4g
L1xBOjovCisgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgIHdo
ZW4gL1xBWzosXChcKVxbXF09XCtcLSpdLworICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5l
TnVtYmVyLCAkJikKKyAgICBlbHNlCisgICAgICByYWlzZSAiTGV4ZXIgZXJyb3IgYXQgbGluZSBu
dW1iZXIgI3tsaW5lTnVtYmVyfSwgdW5leHBlY3RlZCBzZXF1ZW5jZSAje3N0clswLi4yMF0uaW5z
cGVjdH0iCisgICAgZW5kCisgICAgc3RyID0gJH4ucG9zdF9tYXRjaAorICBlbmQKKyAgcmVzdWx0
CitlbmQKKworIworIyBUb2tlbiBpZGVudGlmaWNhdGlvbi4KKyMKKworZGVmIGlzUmVnaXN0ZXIo
dG9rZW4pCisgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJbnN0cnVj
dGlvbih0b2tlbikKKyAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBp
c0tleXdvcmQodG9rZW4pCisgIHRva2VuID1+IC9cQSgodHJ1ZSl8KGZhbHNlKXwoaWYpfCh0aGVu
KXwoZWxzZSl8KGVsc2lmKXwoZW5kKXwoYW5kKXwob3IpfChub3QpfChtYWNybyl8KGNvbnN0KXwo
c2l6ZW9mKXwoZXJyb3IpKVxaLyBvcgorICAgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4gb3IK
KyAgICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzSWRlbnRpZmll
cih0b2tlbikKKyAgdG9rZW4gPX4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKilcWi8gYW5kIG5v
dCBpc0tleXdvcmQodG9rZW4pCitlbmQKKworZGVmIGlzTGFiZWwodG9rZW4pCisgIHRva2VuID1+
IC9cQV8oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNMb2NhbExhYmVsKHRva2VuKQor
ICB0b2tlbiA9fiAvXEFcLihbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc1ZhcmlhYmxl
KHRva2VuKQorICBpc0lkZW50aWZpZXIodG9rZW4pIG9yIGlzUmVnaXN0ZXIodG9rZW4pCitlbmQK
KworZGVmIGlzSW50ZWdlcih0b2tlbikKKyAgdG9rZW4gPX4gL1xBWzAtOV0vCitlbmQKKworIwor
IyBUaGUgcGFyc2VyLiBUYWtlcyBhbiBhcnJheSBvZiB0b2tlbnMgYW5kIHJldHVybnMgYW4gQVNU
LiBNZXRob2RzCisjIG90aGVyIHRoYW4gcGFyc2UodG9rZW5zKSBhcmUgbm90IGZvciBwdWJsaWMg
Y29uc3VtcHRpb24uCisjCisKK2NsYXNzIFBhcnNlcgorICBkZWYgaW5pdGlhbGl6ZSh0b2tlbnMp
CisgICAgQHRva2VucyA9IHRva2VucworICAgIEBpZHggPSAwCisgIGVuZAorICAKKyAgZGVmIHBh
cnNlRXJyb3IoKmNvbW1lbnQpCisgICAgaWYgQHRva2Vuc1tAaWR4XQorICAgICAgQHRva2Vuc1tA
aWR4XS5wYXJzZUVycm9yKCpjb21tZW50KQorICAgIGVsc2UKKyAgICAgIGlmIGNvbW1lbnQuZW1w
dHk/CisgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZSIKKyAgICAgIGVs
c2UKKyAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlOiAje2NvbW1lbnRb
MF19IgorICAgICAgZW5kCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGNvbnN1bWUocmVnZXhw
KQorICAgIGlmIHJlZ2V4cAorICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9
fiByZWdleHAKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBAaWR4ID09IEB0b2tl
bnMubGVuZ3RoCisgICAgZW5kCisgICAgQGlkeCArPSAxCisgIGVuZAorICAKKyAgZGVmIHNraXBO
ZXdMaW5lCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICBAaWR4ICs9IDEK
KyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAibm90IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZVByZWRpY2F0
ZUF0b20KKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgQGlkeCArPSAxCisg
ICAgICBza2lwTmV3TGluZQorICAgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgIHBh
cnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICBAaWR4ICs9IDEKKyAg
ICAgIHJlc3VsdAorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInRydWUiCisgICAgICByZXN1
bHQgPSBUcnVlLmluc3RhbmNlCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdAorICAgIGVs
c2lmIEB0b2tlbnNbQGlkeF0gPT0gImZhbHNlIgorICAgICAgcmVzdWx0ID0gRmFsc2UuaW5zdGFu
Y2UKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJZGVudGlmaWVy
IEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IFNldHRpbmcuZm9yTmFtZShAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgQGlkeCArPSAxCisg
ICAgICByZXN1bHQKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAor
ICAKKyAgZGVmIHBhcnNlUHJlZGljYXRlQW5kCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVB
dG9tCisgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiYW5kIgorICAgICAgY29kZU9yaWdpbiA9
IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgQGlkeCArPSAxCisgICAgICBza2lwTmV3
TGluZQorICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgIHJlc3VsdCA9IEFu
ZC5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICBlbmQKKyAgICByZXN1bHQKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VQcmVkaWNhdGUKKyAgICAjIHNvbWUgZXhhbXBsZXMgb2YgcHJl
Y2VkZW5jZToKKyAgICAjIG5vdCBhIGFuZCBiIC0+IChub3QgYSkgYW5kIGIKKyAgICAjIGEgYW5k
IGIgb3IgYyAtPiAoYSBhbmQgYikgb3IgYworICAgICMgYSBvciBiIGFuZCBjIC0+IGEgb3IgKGIg
YW5kIGMpCisgICAgCisgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICB3aGlsZSBA
dG9rZW5zW0BpZHhdID09ICJvciIKKyAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4KKyAgICAgIEBpZHggKz0gMQorICAgICAgc2tpcE5ld0xpbmUKKyAgICAgIHJpZ2h0
ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICAgIHJlc3VsdCA9IE9yLm5ldyhjb2RlT3JpZ2luLCBy
ZXN1bHQsIHJpZ2h0KQorICAgIGVuZAorICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJz
ZVZhcmlhYmxlCisgICAgaWYgaXNSZWdpc3RlcihAdG9rZW5zW0BpZHhdKQorICAgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9fiBGUFJfUEFUVEVSTgorICAgICAgICByZXN1bHQgPSBGUFJlZ2lzdGVySUQu
Zm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQor
ICAgICAgZWxzZQorICAgICAgICByZXN1bHQgPSBSZWdpc3RlcklELmZvck5hbWUoQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgIGVuZAorICAgIGVs
c2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgcmVzdWx0ID0gVmFyaWFibGUu
Zm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQor
ICAgIGVsc2UKKyAgICAgIHBhcnNlRXJyb3IKKyAgICBlbmQKKyAgICBAaWR4ICs9IDEKKyAgICBy
ZXN1bHQKKyAgZW5kCisgIAorICBkZWYgcGFyc2VBZGRyZXNzKG9mZnNldCkKKyAgICBwYXJzZUVy
cm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4KKyAgICAKKyAgICAjIFRocmVlIHBvc3NpYmlsaXRpZXM6CisgICAg
IyBbXSAgICAgICAtPiBBYnNvbHV0ZUFkZHJlc3MKKyAgICAjIFthXSAgICAgIC0+IEFkZHJlc3MK
KyAgICAjIFthLGJdICAgIC0+IEJhc2VJbmRleCB3aXRoIHNjYWxlID0gMQorICAgICMgW2EsYixj
XSAgLT4gQmFzZUluZGV4CisgICAgCisgICAgQGlkeCArPSAxCisgICAgaWYgQHRva2Vuc1tAaWR4
XSA9PSAiXSIKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmV0dXJuIEFic29sdXRlQWRkcmVzcy5u
ZXcoY29kZU9yaWdpbiwgb2Zmc2V0KQorICAgIGVuZAorICAgIGEgPSBwYXJzZVZhcmlhYmxlCisg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgIHJlc3VsdCA9IEFkZHJlc3MubmV3KGNv
ZGVPcmlnaW4sIGEsIG9mZnNldCkKKyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBA
dG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgQGlkeCArPSAxCisgICAgICBiID0gcGFyc2VWYXJp
YWJsZQorICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgcmVzdWx0ID0gQmFz
ZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCAxLCBvZmZzZXQpCisgICAgICBlbHNlCisgICAg
ICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBbIjEiLCAiMiIsICI0IiwgIjgiXS5tZW1i
ZXI/IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIGMgPSBAdG9rZW5zW0BpZHhdLnN0cmlu
Zy50b19pCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9r
ZW5zW0BpZHhdID09ICJdIgorICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmln
aW4sIGEsIGIsIGMsIG9mZnNldCkKKyAgICAgIGVuZAorICAgIGVuZAorICAgIEBpZHggKz0gMQor
ICAgIHJlc3VsdAorICBlbmQKKyAgCisgIGRlZiBwYXJzZUNvbG9uQ29sb24KKyAgICBza2lwTmV3
TGluZQorICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICBwYXJz
ZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgIG5hbWVzID0gW0B0
b2tlbnNbQGlkeF0uc3RyaW5nXQorICAgIEBpZHggKz0gMQorICAgIHdoaWxlIEB0b2tlbnNbQGlk
eF0gPT0gIjo6IgorICAgICAgQGlkeCArPSAxCisgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lk
ZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgbmFtZXMgPDwgQHRva2Vuc1tAaWR4XS5zdHJp
bmcKKyAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICAgIHJhaXNlIGlmIG5hbWVzLmVtcHR5Pwor
ICAgIFtjb2RlT3JpZ2luLCBuYW1lc10KKyAgZW5kCisgIAorICBkZWYgcGFyc2VFeHByZXNzaW9u
QXRvbQorICAgIHNraXBOZXdMaW5lCisgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAg
IEBpZHggKz0gMQorICAgICAgTmVnSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2Rl
T3JpZ2luLCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0g
IigiCisgICAgICBAaWR4ICs9IDEKKyAgICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbgorICAg
ICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgIEBpZHggKz0g
MQorICAgICAgcmVzdWx0CisgICAgZWxzaWYgaXNJbnRlZ2VyIEB0b2tlbnNbQGlkeF0KKyAgICAg
IHJlc3VsdCA9IEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5z
W0BpZHhdLnN0cmluZy50b19pKQorICAgICAgQGlkeCArPSAxCisgICAgICByZXN1bHQKKyAgICBl
bHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgY29kZU9yaWdpbiwgbmFtZXMg
PSBwYXJzZUNvbG9uQ29sb24KKyAgICAgIGlmIG5hbWVzLnNpemUgPiAxCisgICAgICAgIFN0cnVj
dE9mZnNldC5mb3JGaWVsZChjb2RlT3JpZ2luLCBuYW1lc1swLi4tMl0uam9pbignOjonKSwgbmFt
ZXNbLTFdKQorICAgICAgZWxzZQorICAgICAgICBWYXJpYWJsZS5mb3JOYW1lKGNvZGVPcmlnaW4s
IG5hbWVzWzBdKQorICAgICAgZW5kCisgICAgZWxzaWYgaXNSZWdpc3RlciBAdG9rZW5zW0BpZHhd
CisgICAgICBwYXJzZVZhcmlhYmxlCisgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9m
IgorICAgICAgQGlkeCArPSAxCisgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25D
b2xvbgorICAgICAgU2l6ZW9mLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXMuam9pbignOjonKSkK
KyAgICBlbHNlCisgICAgICBwYXJzZUVycm9yCisgICAgZW5kCisgIGVuZAorICAKKyAgZGVmIHBh
cnNlRXhwcmVzc2lvbk11bAorICAgIHNraXBOZXdMaW5lCisgICAgcmVzdWx0ID0gcGFyc2VFeHBy
ZXNzaW9uQXRvbQorICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICBpZiBAdG9r
ZW5zW0BpZHhdID09ICIqIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gTXVs
SW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJz
ZUV4cHJlc3Npb25BdG9tKQorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisg
ICAgZW5kCisgICAgcmVzdWx0CisgIGVuZAorICAKKyAgZGVmIGNvdWxkQmVFeHByZXNzaW9uCisg
ICAgQHRva2Vuc1tAaWR4XSA9PSAiLSIgb3IgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIiBvciBp
c0ludGVnZXIoQHRva2Vuc1tAaWR4XSkgb3IgaXNWYXJpYWJsZShAdG9rZW5zW0BpZHhdKSBvciBA
dG9rZW5zW0BpZHhdID09ICIoIgorICBlbmQKKyAgCisgIGRlZiBwYXJzZUV4cHJlc3Npb24KKyAg
ICBza2lwTmV3TGluZQorICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbk11bAorICAgIHdoaWxl
IEB0b2tlbnNbQGlkeF0gPT0gIisiIG9yIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICBpZiBA
dG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0g
QWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBw
YXJzZUV4cHJlc3Npb25NdWwpCisgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICItIgorICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0ID0gU3ViSW1tZWRpYXRlcy5uZXcoQHRva2Vu
c1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAg
ICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbmQKKyAgICByZXN1bHQKKyAg
ZW5kCisgIAorICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1lbnQpCisgICAgaWYgY291bGRCZUV4cHJl
c3Npb24KKyAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgIGlmIEB0b2tlbnNbQGlk
eF0gPT0gIlsiCisgICAgICAgIHBhcnNlQWRkcmVzcyhleHByKQorICAgICAgZWxzZQorICAgICAg
ICBleHByCisgICAgICBlbmQKKyAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAg
cGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCAwKSkK
KyAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgIHJlc3VsdCA9IExhYmVsUmVm
ZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExhYmVsLmZvck5hbWUoQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICBAaWR4ICs9
IDEKKyAgICAgIHJlc3VsdAorICAgIGVsc2lmIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhdCisg
ICAgICByZXN1bHQgPSBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4sIExvY2FsTGFiZWwuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tl
bnNbQGlkeF0uc3RyaW5nKSkKKyAgICAgIEBpZHggKz0gMQorICAgICAgcmVzdWx0CisgICAgZWxz
ZQorICAgICAgcGFyc2VFcnJvcihjb21tZW50KQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBw
YXJzZU1hY3JvVmFyaWFibGVzCisgICAgc2tpcE5ld0xpbmUKKyAgICBjb25zdW1lKC9cQVwoXFov
KQorICAgIHZhcmlhYmxlcyA9IFtdCisgICAgbG9vcCB7CisgICAgICBza2lwTmV3TGluZQorICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGJy
ZWFrCisgICAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgdmFy
aWFibGVzIDw8IFZhcmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9r
ZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5l
CisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3IKKyAgICAg
ICAgZW5kCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IKKyAgICAgIGVuZAorICAgIH0K
KyAgICB2YXJpYWJsZXMKKyAgZW5kCisgIAorICBkZWYgcGFyc2VTZXF1ZW5jZShmaW5hbCwgY29t
bWVudCkKKyAgICBmaXJzdENvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAg
ICBsaXN0ID0gW10KKyAgICBsb29wIHsKKyAgICAgIGlmIChAaWR4ID09IEB0b2tlbnMubGVuZ3Ro
IGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAg
ICAgICAgYnJlYWsKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAj
IGlnbm9yZQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0g
ImNvbnN0IgorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNW
YXJpYWJsZSBAdG9rZW5zW0BpZHhdCisgICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZm9yTmFt
ZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAi
PSIKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHZhbHVlID0gcGFyc2VPcGVyYW5kKCJ3aGls
ZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5uYW1lfSIpCisgICAgICAgIGxpc3QgPDwgQ29u
c3REZWNsLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIHZhcmlhYmxlLCB2YWx1ZSkKKyAg
ICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gImVycm9yIgorICAgICAgICBsaXN0IDw8IEVycm9y
Lm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4pCisgICAgICAgIEBpZHggKz0gMQorICAgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIHNraXBOZXdMaW5l
CisgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAgIGNvbnN1bWUoL1xB
KCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWZUaGVuRWxz
ZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgv
XEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRlIG9mIFwiaWYgI3twcmVk
aWNhdGUuZHVtcH1cIiIpKQorICAgICAgICBsaXN0IDw8IGlmVGhlbkVsc2UKKyAgICAgICAgd2hp
bGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisgICAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tl
bnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgIHNraXBO
ZXdMaW5lCisgICAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgICBj
b25zdW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAg
ICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgcGFy
c2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUgaW5zaWRlIG9m
IFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICAgIGlmVGhlbkVsc2UuZWxzZUNh
c2UgPSBlbHNlQ2FzZQorICAgICAgICAgIGlmVGhlbkVsc2UgPSBlbHNlQ2FzZQorICAgICAgICBl
bmQKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiZWxzZSIKKyAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRc
Wi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNlIGZvciBcImlmICN7cHJlZGljYXRlLmR1bXB9
XCIiKQorICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbHNlCisgICAgICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiZW5kIgorICAgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICBlbmQKKyAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgorICAgICAg
ICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIEBpZHggKz0g
MQorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lkZW50
aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgbmFtZSA9IEB0b2tlbnNbQGlkeF0uc3RyaW5n
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFi
bGVzCisgICAgICAgIGJvZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lk
ZSBvZiBtYWNybyAje25hbWV9IikKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGxpc3QgPDwg
TWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICAgIGVsc2lm
IGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZwor
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9r
ZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAg
ICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5kIGl0J3MgdGhlIGxhc3Qgb25lLgorICAg
ICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAg
ICAgICAgIGJyZWFrCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAg
ICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLgorICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICBlbHNlCisgICAgICAgICAgIyBJdCdzIGRlZmluaXRlbHkgYW4gaW5zdHJ1Y3Rpb24sIGFu
ZCBpdCBoYXMgYXQgbGVhc3Qgb25lIG9wZXJhbmQuCisgICAgICAgICAgb3BlcmFuZHMgPSBbXQor
ICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxzZQorICAgICAgICAgIGxvb3AgeworICAgICAg
ICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgaW5zdHJ1Y3Rp
b24gI3tuYW1lfSIpCisgICAgICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tl
bnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICAg
ICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uIGFuZCBvZiB0aGUgc2VxdWVuY2UuCisg
ICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSB0cnVlCisgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgICAgICAjIEhh
cyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0
aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICBi
cmVhaworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3Rl
ZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFsfSBhZnRlciAje29wZXJhbmRzLmxhc3QuZHVt
cH0iKQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgfQorICAgICAgICAgIGxpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAgICAgIGlmIGVu
ZE9mU2VxdWVuY2UKKyAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgZW5kCisgICAgICAgIGVu
ZAorICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgY29kZU9y
aWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBuYW1lID0gQHRva2Vuc1tA
aWR4XS5zdHJpbmcKKyAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gIigiCisgICAgICAgICAgIyBNYWNybyBpbnZvY2F0aW9uLgorICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICBza2lwTmV3TGluZQorICAgICAg
ICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgICAgc2tpcE5ld0xpbmUK
KyAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFjcm8iCisgICAgICAgICAgICAg
ICAgIyBJdCdzIGEgbWFjcm8gbGFtYmRhIQorICAgICAgICAgICAgICAgIGNvZGVPcmlnaW5Jbm5l
ciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJpYWJsZXMKKyAgICAgICAg
ICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2Yg
YW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1bWVudCB0byAje25hbWV9IikKKyAgICAgICAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBNYWNyby5uZXco
Y29kZU9yaWdpbklubmVyLCBuaWwsIHZhcmlhYmxlcywgYm9keSkKKyAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRl
IG9mIG1hY3JvIGNhbGwgdG8gI3tuYW1lfSIpCisgICAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgor
ICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAg
ICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9yICJVbmV4
cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5zcGVjdH0gd2hpbGUgcGFyc2luZyBpbnZv
Y2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAg
fQorICAgICAgICAgIGVuZAorICAgICAgICAgIGxpc3QgPDwgTWFjcm9DYWxsLm5ldyhjb2RlT3Jp
Z2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAgZWxzZQorICAgICAgICAgIHBhcnNlRXJyb3Ig
IkV4cGVjdGVkIFwiKFwiIGFmdGVyICN7bmFtZX0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYg
aXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAg
ICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgbmFtZSA9
IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBwYXJzZUVy
cm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI6IgorICAgICAgICAjIEl0J3MgYSBsYWJlbC4K
KyAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAgICAgbGlzdCA8PCBMYWJlbC5mb3JOYW1l
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVsc2UKKyAgICAgICAgICBsaXN0IDw8IExvY2Fs
TGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbmQKKyAgICAgICAgQGlk
eCArPSAxCisgICAgICBlbHNlCisgICAgICAgIHBhcnNlRXJyb3IgIkV4cGVjdGluZyB0ZXJtaW5h
bCAje2ZpbmFsfSAje2NvbW1lbnR9IgorICAgICAgZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5l
dyhmaXJzdENvZGVPcmlnaW4sIGxpc3QpCisgIGVuZAorZW5kCisKK2RlZiBwYXJzZSh0b2tlbnMp
CisgIHBhcnNlciA9IFBhcnNlci5uZXcodG9rZW5zKQorICBwYXJzZXIucGFyc2VTZXF1ZW5jZShu
aWwsICIiKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Jl
Z2lzdGVycy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9yZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK0dQUlMgPQorICBbCisgICAidDAiLAor
ICAgInQxIiwKKyAgICJ0MiIsCisgICAidDMiLAorICAgInQ0IiwKKyAgICJjZnIiLAorICAgImEw
IiwKKyAgICJhMSIsCisgICAicjAiLAorICAgInIxIiwKKyAgICJzcCIsCisgICAibHIiCisgIF0K
KworRlBSUyA9CisgIFsKKyAgICJmdDAiLAorICAgImZ0MSIsCisgICAiZnQyIiwKKyAgICJmdDMi
LAorICAgImZ0NCIsCisgICAiZnQ1IiwKKyAgICJmYTAiLAorICAgImZhMSIsCisgICAiZmEyIiwK
KyAgICJmYTMiLAorICAgImZyIgorICBdCisKK1JFR0lTVEVSUyA9IEdQUlMgKyBGUFJTCisKK0dQ
Ul9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgR1BSUy5qb2luKCcpfCgnKSArICcpKVxc
WicpCitGUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMuam9pbignKXwoJykg
KyAnKSlcXFonKQorCitSRUdJU1RFUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgUkVH
SVNURVJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL3NlbGZfaGFzaC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9zZWxmX2hhc2gucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZWxmX2hhc2gucmIJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDYgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUg
ImRpZ2VzdC9zaGExIgorcmVxdWlyZSAicGF0aG5hbWUiCisKKyMKKyMgc2VsZkhhc2ggLT4gU0hB
MSBoZXhkaWdlc3QKKyMKKyMgUmV0dXJucyBhIGhhc2ggb2YgdGhlIG9mZmxpbmVhc20gc291cmNl
IGNvZGUuIFRoaXMgYWxsb3dzIGRlcGVuZGVuY3kKKyMgdHJhY2tpbmcgZm9yIG5vdCBqdXN0IGNo
YW5nZXMgaW4gaW5wdXQsIGJ1dCBhbHNvIGNoYW5nZXMgaW4gdGhlIGFzc2VtYmxlcgorIyBpdHNl
bGYuCisjCisKK2RlZiBzZWxmSGFzaAorICBjb250ZW50cyA9ICIiCisgIG15UGF0aCA9IFBhdGhu
YW1lLm5ldyhfX0ZJTEVfXykuZGlybmFtZQorICBEaXIuZm9yZWFjaChteVBhdGgpIHsKKyAgICB8
IGVudHJ5IHwKKyAgICBpZiBlbnRyeSA9fiAvXC5yYiQvCisgICAgICBjb250ZW50cyArPSBJTzo6
cmVhZChteVBhdGggKyBlbnRyeSkKKyAgICBlbmQKKyAgfQorICByZXR1cm4gRGlnZXN0OjpTSEEx
LmhleGRpZ2VzdChjb250ZW50cykKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9zZXR0aW5ncy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIw
NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0
IgorcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJ0cmFuc2Zv
cm0iCisKKyMKKyMgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkgLT4gc2V0dGluZ3ND
b21iaWF0aW9ucworIworIyBDb21wdXRlcyBhbiBhcnJheSBvZiBzZXR0aW5ncyBtYXBzLCB3aGVy
ZSBhIHNldHRpbmdzIG1hcCBjb25zdGl0dXRlcworIyBhIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBh
c3NlbWJseSBjb2RlIGJlaW5nIGdlbmVyYXRlZC4gVGhlIG1hcAorIyBjb250YWlucyBrZXkgdmFs
dWUgcGFpcnMgd2hlcmUga2V5cyBhcmUgc2V0dGluZ3MgbmFtZXMgKHN0cmluZ3MpIGFuZAorIyB0
aGUgdmFsdWVzIGFyZSBib29sZWFucyAodHJ1ZSBmb3IgZW5hYmxlZCwgZmFsc2UgZm9yIGRpc2Fi
bGVkKS4KKyMKKworZGVmIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgIHNldHRp
bmdzQ29tYmluYXRpb25zID0gW10KKyAgCisgIGRlZiBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGlu
Z3NDb21iaW5hdGlvbnMsIG1hcFNvRmFyLCByZW1haW5pbmcpCisgICAgaWYgcmVtYWluaW5nLmVt
cHR5PworICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFwU29GYXIKKyAgICAgIHJldHVy
bgorICAgIGVuZAorICAgIAorICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAorICAgIG5ld01hcFty
ZW1haW5pbmdbMF1dID0gdHJ1ZQorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJp
bmF0aW9ucywgbmV3TWFwLCByZW1haW5pbmdbMS4uLTFdKQorICAgIAorICAgIG5ld01hcCA9IG1h
cFNvRmFyLmR1cAorICAgIG5ld01hcFtyZW1haW5pbmdbMF1dID0gZmFsc2UKKyAgICBzZXR0aW5n
c0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0x
XSkKKyAgZW5kCisgIAorICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMs
IHt9LCAoYXN0LmZpbHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7fHZ8IHYubmFtZX0gKyBbIlg4
NiIsICJBUk12NyJdKS51bmlxKQorICAKKyAgc2V0dGluZ3NDb21iaW5hdGlvbnMKK2VuZAorCisj
CisjIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgeworIyAgICAgfCBjb25jcmV0
ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8IC4uLiB9CisjCisjIERldGVybWluZXMg
aWYgdGhlIHNldHRpbmdzIGNvbWJpbmF0aW9uIGlzIHZhbGlkLCBhbmQgaWYgc28sIGNhbGxzCisj
IHRoZSBibG9jayB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3UgbmVlZCB0byBnZW5lcmF0ZSBjb2Rl
LgorIworCitkZWYgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncywgYXN0KQorICAjIENoZWNr
IHdoaWNoIGFyY2hpdGVjdHVyZXMgdGhpcyBjb21iaW5hdG9yIGNsYWltcyB0byBzdXBwb3J0Lgor
ICBudW1DbGFpbWVkQmFja2VuZHMgPSAwCisgIHNlbGVjdGVkQmFja2VuZCA9IG5pbAorICBCQUNL
RU5EUy5lYWNoIHsKKyAgICB8IGJhY2tlbmQgfAorICAgIGlzU3VwcG9ydGVkID0gY29uY3JldGVT
ZXR0aW5nc1tiYWNrZW5kXQorICAgIHJhaXNlIHVubGVzcyBpc1N1cHBvcnRlZCAhPSBuaWwKKyAg
ICBudW1DbGFpbWVkQmFja2VuZHMgKz0gaWYgaXNTdXBwb3J0ZWQgdGhlbiAxIGVsc2UgMCBlbmQK
KyAgICBpZiBpc1N1cHBvcnRlZAorICAgICAgc2VsZWN0ZWRCYWNrZW5kID0gYmFja2VuZAorICAg
IGVuZAorICB9CisgIAorICByZXR1cm4gaWYgbnVtQ2xhaW1lZEJhY2tlbmRzID4gMQorICAKKyAg
IyBSZXNvbHZlIHRoZSBBU1QgZG93biB0byBhIGxvdy1sZXZlbCBmb3JtIChubyBtYWNyb3Mgb3Ig
Y29uZGl0aW9uYWxzKS4KKyAgbG93TGV2ZWxBU1QgPSBhc3QucmVzb2x2ZVNldHRpbmdzKGNvbmNy
ZXRlU2V0dGluZ3MpCisgIAorICB5aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwg
c2VsZWN0ZWRCYWNrZW5kCitlbmQKKworIworIyBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0
aW9uKGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4
IHwgLi4uIH0KKyMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QsIHNldHRp
bmdzQ29tYmluYXRpb25zKSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2Vu
ZCwgaW5kZXggfCAuLi4gfQorIworIyBFeGVjdXRlcyB0aGUgZ2l2ZW4gYmxvY2sgZm9yIGVhY2gg
dmFsaWQgc2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlCisjIHNldHRpbmdzIG1hcC4gVGhlIGFz
dCBwYXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQKKyMgKGFzdC5yZXNvbHZlKSBhZ2Fp
bnN0IHRoZSBzZXR0aW5ncy4KKyMKKyMgVGhlIGZpcnN0IGZvcm0gd2lsbCBjYWxsIGNvbXB1dGVT
ZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIGZvciB5b3UuCisjCisKK2RlZiBmb3JFYWNoVmFsaWRT
ZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgKm9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMpCisg
IHJhaXNlIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEKKyAgCisgIGlm
IG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuZW1wdHk/CisgICAgc2V0dGluZ3NDb21iaW5h
dGlvbnMgPSBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KQorICBlbHNlCisgICAgc2V0
dGluZ3NDb21iaW5hdGlvbnMgPSBvcHRpb25hbFNldHRpbmdzQ29tYmlhdGlvbnNbMF0KKyAgZW5k
CisgIAorICBzZXR0aW5nc0NvbWJpbmF0aW9ucy5lYWNoX3dpdGhfaW5kZXggeworICAgIHwgY29u
Y3JldGVTZXR0aW5ncywgaW5kZXggfAorICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3Ms
IGFzdCkgeworICAgICAgfCBjb25jcmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJhY2tlbmQg
fAorICAgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGlu
ZGV4CisgICAgfQorICB9CitlbmQKKworIworIyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0
aW5ncykKKyMKKyMgUmV0dXJucyB0aGUgQysrIGNvZGUgdXNlZCB0byB0ZXN0IGlmIHdlIGFyZSBp
biBhIGNvbmZpZ3VyYXRpb24gdGhhdAorIyBjb3JyZXNwb25kcyB0byB0aGUgZ2l2ZW4gY29uY3Jl
dGUgc2V0dGluZ3MuCisjCisKK2RlZiBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5ncykK
KyAgIiNpZiAiICsgY29uY3JldGVTZXR0aW5ncy50b19hLmNvbGxlY3R7CisgICAgfCBwYWlyIHwK
KyAgICAoaWYgcGFpclsxXQorICAgICAgICIiCisgICAgIGVsc2UKKyAgICAgICAiISIKKyAgICAg
ZW5kKSArICJPRkZMSU5FX0FTTV8iICsgcGFpclswXQorICB9LmpvaW4oIiAmJiAiKQorZW5kCisK
KyMKKyMgaXNBU1RFcnJvbmVvdXMoYXN0KQorIworIyBUZXN0cyB0byBzZWUgaWYgdGhlIEFTVCBj
bGFpbXMgdGhhdCB0aGVyZSBpcyBhbiBlcnJvciAtIGkuZS4gaWYgdGhlCisjIHVzZXIncyBjb2Rl
LCBhZnRlciBzZXR0aW5ncyByZXNvbHV0aW9uLCBoYXMgRXJyb3Igbm9kZXMuCisjCisKK2RlZiBp
c0FTVEVycm9uZW91cyhhc3QpCisgIG5vdCBhc3QuZmlsdGVyKEVycm9yKS5lbXB0eT8KK2VuZAor
CisjCisjIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyMKKyMgRW1pdHMg
YSBjaGVjayB0aGF0IGFzc2VydHMgdGhhdCB3ZSdyZSB1c2luZyB0aGUgZ2l2ZW4gY29uZmlndXJh
dGlvbi4KKyMKKworZGVmIGFzc2VydENvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncykKKyAg
JG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAkb3V0cHV0
LnB1dHMgIiNlbHNlIgorICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIkNvbmZpZ3VyYXRpb24gbWlz
bWF0Y2guXCIiCisgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMKKyMgZW1pdENvZGVJ
bkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKSB7CisjICAgICB8
IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCB8IC4uLiB9CisjCisjIEVtaXRzIGFsbCBy
ZWxldmFudCBndWFyZHMgdG8gc2VlIGlmIHRoZSBjb25maWd1cmF0aW9uIGhvbGRzIGFuZAorIyBj
YWxscyB0aGUgYmxvY2sgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGVycm9uZW91cy4KKyMK
KworZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFj
a2VuZCkKKyAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQor
ICAKKyAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAgICRvdXRwdXQucHV0cyAiI2Vycm9yIFwi
SW52YWxpZCBjb25maWd1cmF0aW9uLlwiIgorICBlbHNpZiBub3QgV09SS0lOR19CQUNLRU5EUy5p
bmNsdWRlPyBiYWNrZW5kCisgICAgJG91dHB1dC5wdXRzICIjZXJyb3IgXCJUaGlzIGJhY2tlbmQg
aXMgbm90IHN1cHBvcnRlZCB5ZXQuXCIiCisgIGVsc2UKKyAgICB5aWVsZCBjb25jcmV0ZVNldHRp
bmdzLCBhc3QsIGJhY2tlbmQKKyAgZW5kCisgIAorICAkb3V0cHV0LnB1dHMgIiNlbmRpZiIKK2Vu
ZAorCisjCisjIGVtaXRDb2RlSW5BbGxDb25maWd1cmF0aW9ucyhhc3QpIHsKKyMgICAgIHwgY29u
Y3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9CisjCisjIEVtaXRzIGd1
YXJkIGNvZGVzIGZvciBhbGwgdmFsaWQgY29uZmlndXJhdGlvbnMsIGFuZCBjYWxscyB0aGUgYmxv
Y2sKKyMgZm9yIHRob3NlIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHZhbGlkIGFuZCBub3QgZXJy
b25lb3VzLgorIworCitkZWYgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkKKyAgZm9y
RWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsKKyAgICB8IGNvbmNyZXRlU2V0dGlu
Z3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleCB8CisgICAgJG91dHB1dC5wdXRzIGNwcFNl
dHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3Ms
IGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgICRvdXRwdXQucHV0cyAiI2VuZGlmIgor
ICB9CitlbmQKKworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Ry
YW5zZm9ybS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS90cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQyIEBACisjIENv
cHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCisKKyMKKyMg
bm9kZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisjCisjIENvbnN0cnVjdCBhIG5ldyBBU1Qg
dGhhdCBkb2VzIG5vdCBoYXZlIGFueSBJZlRoZW5FbHNlIG5vZGVzIGJ5CisjIHN1YnN0aXR1dGlu
ZyBjb25jcmV0ZSBib29sZWFuIHZhbHVlcyBmb3IgZWFjaCBTZXR0aW5nLgorIworCitjbGFzcyBO
b2RlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgbWFwQ2hpbGRyZW4gewor
ICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisg
ICAgfQorICBlbmQKK2VuZAorCitjbGFzcyBUcnVlCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpCisgICAgc2VsZgorICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZQorICBkZWYgcmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNlbGYKKyAgZW5kCitlbmQKKworY2xhc3MgU2V0dGlu
ZworICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIHNldHRpbmdzW0BuYW1lXS5h
c05vZGUKKyAgZW5kCitlbmQKKworY2xhc3MgQW5kCisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpCisgICAgKEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgYW5kIEBy
aWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgZW5kCitlbmQK
KworY2xhc3MgT3IKKyAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAoQGxlZnQu
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBvciBAcmlnaHQucmVzb2x2ZVNldHRpbmdz
KHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgIGVuZAorZW5kCisKK2NsYXNzIE5vdAorICBkZWYg
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgIChub3QgQGNoaWxkLnJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykudmFsdWUpLmFzTm9kZQorICBlbmQKK2VuZAorCitjbGFzcyBJZlRoZW5FbHNl
CisgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgaWYgQHByZWRpY2F0ZS5yZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlCisgICAgICBAdGhlbkNhc2UucmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKQorICAgIGVsc2UKKyAgICAgIEBlbHNlQ2FzZS5yZXNvbHZlU2V0dGluZ3Mo
c2V0dGluZ3MpCisgICAgZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNlCisgIGRlZiBy
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgbmV3TGlzdCA9IFtdCisgICAgQGxpc3QuZWFj
aCB7CisgICAgICB8IGl0ZW0gfAorICAgICAgaXRlbSA9IGl0ZW0ucmVzb2x2ZVNldHRpbmdzKHNl
dHRpbmdzKQorICAgICAgaWYgaXRlbS5pc19hPyBTZXF1ZW5jZQorICAgICAgICBuZXdMaXN0ICs9
IGl0ZW0ubGlzdAorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0KKyAgICAgIGVu
ZAorICAgIH0KKyAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5kCitl
bmQKKworIworIyBub2RlLmRlbWFjcm9pZnkobWFjcm9zKQorIyBub2RlLnN1YnN0aXR1dGUobWFw
cGluZykKKyMKKyMgZGVtYWNyb2lmeSgpIGNvbnN0cnVjdHMgYSBuZXcgQVNUIHRoYXQgZG9lcyBu
b3QgaGF2ZSBhbnkgTWFjcm8KKyMgbm9kZXMsIHdoaWxlIHN1YnN0aXR1dGUoKSByZXBsYWNlcyBW
YXJpYWJsZSBub2RlcyB3aXRoIHRoZSBnaXZlbgorIyBub2RlcyBpbiB0aGUgbWFwcGluZy4KKyMK
KworY2xhc3MgTm9kZQorICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgbWFwQ2hpbGRyZW4g
eworICAgICAgfCBjaGlsZCB8CisgICAgICBjaGlsZC5kZW1hY3JvaWZ5KG1hY3JvcykKKyAgICB9
CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICBtYXBDaGlsZHJlbiB7
CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobWFwcGluZykKKyAgICB9
CisgIGVuZAorICAKKyAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICBtYXBDaGls
ZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGVMYWJlbHMobWFw
cGluZykKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvCisgIGRlZiBzdWJzdGl0dXRl
KG1hcHBpbmcpCisgICAgbXlNYXBwaW5nID0ge30KKyAgICBtYXBwaW5nLmVhY2hfcGFpciB7Cisg
ICAgICB8IGtleSwgdmFsdWUgfAorICAgICAgdW5sZXNzIEB2YXJpYWJsZXMuaW5jbHVkZT8ga2V5
CisgICAgICAgIG15TWFwcGluZ1trZXldID0gdmFsdWUKKyAgICAgIGVuZAorICAgIH0KKyAgICBt
YXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLnN1YnN0aXR1dGUobXlN
YXBwaW5nKQorICAgIH0KKyAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUKKyAgZGVmIHN1YnN0
aXR1dGUobWFwcGluZykKKyAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICBtYXBwaW5nW3NlbGZd
CisgICAgZWxzZQorICAgICAgc2VsZgorICAgIGVuZAorICBlbmQKK2VuZAorCitjbGFzcyBMb2Nh
bExhYmVsCisgIGRlZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgaWYgbWFwcGluZ1tz
ZWxmXQorICAgICAgbWFwcGluZ1tzZWxmXQorICAgIGVsc2UKKyAgICAgIHNlbGYKKyAgICBlbmQK
KyAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgZGVmIHN1YnN0aXR1dGUoY29uc3RhbnRz
KQorICAgIG5ld0xpc3QgPSBbXQorICAgIG15Q29uc3RhbnRzID0gY29uc3RhbnRzLmR1cAorICAg
IEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gQ29uc3RE
ZWNsCisgICAgICAgIG15Q29uc3RhbnRzW2l0ZW0udmFyaWFibGVdID0gaXRlbS52YWx1ZS5zdWJz
dGl0dXRlKG15Q29uc3RhbnRzKQorICAgICAgZWxzZQorICAgICAgICBuZXdMaXN0IDw8IGl0ZW0u
c3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgIGVuZAorICAgIH0KKyAgICBTZXF1ZW5jZS5u
ZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAgZW5kCisgIAorICBkZWYgcmVuYW1lTGFiZWxzKGNv
bW1lbnQpCisgICAgbWFwcGluZyA9IHt9CisgICAgCisgICAgQGxpc3QuZWFjaCB7CisgICAgICB8
IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBMb2NhbExhYmVsCisgICAgICAgIG1hcHBpbmdb
aXRlbV0gPSBMb2NhbExhYmVsLnVuaXF1ZShpZiBjb21tZW50IHRoZW4gY29tbWVudCArICJfIiBl
bHNlICIiIGVuZCArIGl0ZW0uY2xlYW5OYW1lKQorICAgICAgZW5kCisgICAgfQorICAgIAorICAg
IHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgZW5kCisgIAorICBkZWYgZGVtYWNyb2lmeSht
YWNyb3MpCisgICAgbXlNYWNyb3MgPSBtYWNyb3MuZHVwCisgICAgQGxpc3QuZWFjaCB7CisgICAg
ICB8IGl0ZW0gfAorICAgICAgaWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICBteU1hY3Jvc1tp
dGVtLm5hbWVdID0gaXRlbQorICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3QgPSBbXQorICAg
IEBsaXN0LmVhY2ggeworICAgICAgfCBpdGVtIHwKKyAgICAgIGlmIGl0ZW0uaXNfYT8gTWFjcm8K
KyAgICAgICAgIyBJZ25vcmUuCisgICAgICBlbHNpZiBpdGVtLmlzX2E/IE1hY3JvQ2FsbAorICAg
ICAgICBtYXBwaW5nID0ge30KKyAgICAgICAgbXlNeU1hY3JvcyA9IG15TWFjcm9zLmR1cAorICAg
ICAgICByYWlzZSAiQ291bGQgbm90IGZpbmQgbWFjcm8gI3tpdGVtLm5hbWV9IGF0ICN7aXRlbS5j
b2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG15TWFjcm9zW2l0ZW0ubmFtZV0KKyAgICAgICAgcmFp
c2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxsIHRvICN7aXRlbS5uYW1lfSBhdCAj
e2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVtLm9wZXJhbmRzLnNpemUgPT0gbXlN
YWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQorICAgICAgICBpdGVtLm9wZXJhbmRzLnNp
emUudGltZXMgeworICAgICAgICAgIHwgaWR4IHwKKyAgICAgICAgICBpZiBpdGVtLm9wZXJhbmRz
W2lkeF0uaXNfYT8gVmFyaWFibGUgYW5kIG15TWFjcm9zW2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1l
XQorICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tp
ZHhdLm5hbWVdID0gbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAg
ICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBuaWwK
KyAgICAgICAgICBlbHNpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gTWFjcm8KKyAgICAgICAg
ICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9
IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5h
bWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9IG5pbAor
ICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9
IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIG5l
d0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5LnN1YnN0aXR1dGUobWFwcGluZykuZGVt
YWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMoaXRlbS5uYW1lKS5saXN0CisgICAgICBl
bHNlCisgICAgICAgIG5ld0xpc3QgPDwgaXRlbS5kZW1hY3JvaWZ5KG15TWFjcm9zKQorICAgICAg
ZW5kCisgICAgfQorICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KS5zdWJzdGl0
dXRlKHt9KQorICBlbmQKK2VuZAorCisjCisjIG5vZGUucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywg
c2l6ZXMpCisjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBoYXMgb2Zmc2V0IHZhbHVlcyBp
bnN0ZWFkIG9mIHN5bWJvbGljCisjIG9mZnNldHMuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJl
c29sdmVPZmZzZXRzKG9mZnNldHMsIHNpemVzKQorICAgIG1hcENoaWxkcmVuIHsKKyAgICAgIHwg
Y2hpbGQgfAorICAgICAgY2hpbGQucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAg
fQorICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXQKKyAgZGVmIHJlc29sdmVPZmZzZXRz
KG9mZnNldHMsIHNpemVzKQorICAgIGlmIG9mZnNldHNbc2VsZl0KKyAgICAgIEltbWVkaWF0ZS5u
ZXcoY29kZU9yaWdpbiwgb2Zmc2V0c1tzZWxmXSkKKyAgICBlbHNlCisgICAgICBzZWxmCisgICAg
ZW5kCisgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZgorICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zm
c2V0cywgc2l6ZXMpCisgICAgaWYgc2l6ZXNbc2VsZl0KKyAgICAgIEltbWVkaWF0ZS5uZXcoY29k
ZU9yaWdpbiwgc2l6ZXNbc2VsZl0pCisgICAgZWxzZQorICAgICAgcHV0cyAiQ291bGQgbm90IGZp
bmQgI3tzZWxmLmluc3BlY3R9IGluICN7c2l6ZXMua2V5cy5pbnNwZWN0fSIKKyAgICAgIHB1dHMg
InNpemVzID0gI3tzaXplcy5pbnNwZWN0fSIKKyAgICAgIHNlbGYKKyAgICBlbmQKKyAgZW5kCitl
bmQKKworIworIyBub2RlLmZvbGQKKyMKKyMgUmVzb2x2ZSBjb25zdGFudCByZWZlcmVuY2VzIGFu
ZCBjb21wdXRlIGFyaXRobWV0aWMgZXhwcmVzc2lvbnMuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVm
IGZvbGQKKyAgICBtYXBDaGlsZHJlbiB7CisgICAgICB8IGNoaWxkIHwKKyAgICAgIGNoaWxkLmZv
bGQKKyAgICB9CisgIGVuZAorZW5kCisKK2NsYXNzIEFkZEltbWVkaWF0ZXMKKyAgZGVmIGZvbGQK
KyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJl
dHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1
bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdp
biwgQGxlZnQudmFsdWUgKyBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIFN1Yklt
bWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBsZWZ0LmZvbGQKKyAgICBAcmlnaHQg
PSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlh
dGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0LmlzX2E/IEltbWVkaWF0ZQorICAgIElt
bWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgLSBAcmlnaHQudmFsdWUpCisgIGVu
ZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMKKyAgZGVmIGZvbGQKKyAgICBAbGVmdCA9IEBs
ZWZ0LmZvbGQKKyAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgIHJldHVybiBzZWxmIHVubGVz
cyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICByZXR1cm4gc2VsZiB1bmxlc3MgQHJpZ2h0Lmlz
X2E/IEltbWVkaWF0ZQorICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUg
KiBAcmlnaHQudmFsdWUpCisgIGVuZAorZW5kCisKK2NsYXNzIE5lZ0ltbWVkaWF0ZQorICBkZWYg
Zm9sZAorICAgIEBjaGlsZCA9IEBjaGlsZC5mb2xkCisgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEBj
aGlsZC5pc19hPyBJbW1lZGlhdGUKKyAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC1AY2hp
bGQudmFsdWUpCisgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5yZXNvbHZlQWZ0ZXJTZXR0aW5ncyhv
ZmZzZXRzLCBzaXplcykKKyMKKyMgQ29tcGlsZSBhc3NlbWJseSBhZ2FpbnN0IGEgc2V0IG9mIG9m
ZnNldHMuCisjCisKK2NsYXNzIE5vZGUKKyAgZGVmIHJlc29sdmUob2Zmc2V0cywgc2l6ZXMpCisg
ICAgZGVtYWNyb2lmeSh7fSkucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpLmZvbGQKKyAg
ZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2ODEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMg
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK2NsYXNzIFJlZ2lzdGVySUQKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2Cisg
ICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiLCAidDEiLCAiYTEiLCAicjEi
LCAidDIiLCAidDMiCisgICAgICB0cnVlCisgICAgd2hlbiAidDQiLCAiY2ZyIgorICAgICAgZmFs
c2UKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiB4ODZP
cGVyYW5kKGtpbmQpCisgICAgY2FzZSBuYW1lCisgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiCisg
ICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVhbCIKKyAgICAgIHdo
ZW4gOmhhbGYKKyAgICAgICAgIiVheCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAiJWVheCIK
KyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQxIiwgImEx
IiwgInIxIgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlZGwi
CisgICAgICB3aGVuIDpoYWxmCisgICAgICAgICIlZHgiCisgICAgICB3aGVuIDppbnQKKyAgICAg
ICAgIiVlZHgiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICB3aGVu
ICJ0MiIKKyAgICAgIGNhc2Uga2luZAorICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAiJWNsIgor
ICAgICAgd2hlbiA6aGFsZgorICAgICAgICAiJWN4IgorICAgICAgd2hlbiA6aW50CisgICAgICAg
ICIlZWN4IgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAi
dDMiCisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVibCIKKyAg
ICAgIHdoZW4gOmhhbGYKKyAgICAgICAgIiVieCIKKyAgICAgIHdoZW4gOmludAorICAgICAgICAi
JWVieCIKKyAgICAgIGVsc2UKKyAgICAgICAgcmFpc2UKKyAgICAgIGVuZAorICAgIHdoZW4gInQ0
IgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlc2lsIgorICAg
ICAgd2hlbiA6aGFsZgorICAgICAgICAiJXNpIgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIl
ZXNpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAiY2Zy
IgorICAgICAgY2FzZSBraW5kCisgICAgICB3aGVuIDpieXRlCisgICAgICAgICIlZGlsIgorICAg
ICAgd2hlbiA6aGFsZgorICAgICAgICAiJWRpIgorICAgICAgd2hlbiA6aW50CisgICAgICAgICIl
ZWRpIgorICAgICAgZWxzZQorICAgICAgICByYWlzZQorICAgICAgZW5kCisgICAgd2hlbiAic3Ai
CisgICAgICBjYXNlIGtpbmQKKyAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgIiVzcGwiCisgICAg
ICB3aGVuIDpoYWxmCisgICAgICAgICIlc3AiCisgICAgICB3aGVuIDppbnQKKyAgICAgICAgIiVl
c3AiCisgICAgICBlbHNlCisgICAgICAgIHJhaXNlCisgICAgICBlbmQKKyAgICBlbHNlCisgICAg
ICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIFg4NiBhdCAje2NvZGVPcmlnaW5TdHJp
bmd9IgorICAgIGVuZAorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioj
e3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQKKyAg
ZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICByYWlzZSB1bmxlc3Mga2luZCA9PSA6ZG91YmxlCisg
ICAgY2FzZSBuYW1lCisgICAgd2hlbiAiZnQwIiwgImZhMCIsICJmciIKKyAgICAgICIleG1tMCIK
KyAgICB3aGVuICJmdDEiLCAiZmExIgorICAgICAgIiV4bW0xIgorICAgIHdoZW4gImZ0MiIsICJm
YTIiCisgICAgICAiJXhtbTIiCisgICAgd2hlbiAiZnQzIiwgImZhMyIKKyAgICAgICIleG1tMyIK
KyAgICB3aGVuICJmdDQiCisgICAgICAiJXhtbTQiCisgICAgd2hlbiAiZnQ1IgorICAgICAgIiV4
bW01IgorICAgIGVsc2UKKyAgICAgIHJhaXNlICJCYWQgcmVnaXN0ZXIgI3tuYW1lfSBmb3IgWDg2
IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgIGVuZAorICBkZWYgeDg2Q2FsbE9w
ZXJhbmQoa2luZCkKKyAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgIGVuZAorZW5kCisKK2Ns
YXNzIEltbWVkaWF0ZQorICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICIkI3t2YWx1ZX0iCisg
IGVuZAorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAiI3t2YWx1ZX0iCisgIGVuZAor
ZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQor
ICBlbmQKKyAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgj
e2Jhc2UueDg2T3BlcmFuZCg6aW50KX0pIgorICBlbmQKKyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtp
bmQpCisgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICBlbmQKK2VuZAorCitjbGFzcyBCYXNl
SW5kZXgKKyAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRl
ZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFu
ZCg6aW50KX0sICN7aW5kZXgueDg2T3BlcmFuZCg6aW50KX0sICN7c2NhbGV9KSIKKyAgZW5kCisK
KyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgIioje3g4Nm9wZXJhbmQoa2luZCl9Igor
ICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgZGVmIHN1cHBvcnRzOEJpdE9u
WDg2CisgICAgdHJ1ZQorICBlbmQKKyAgCisgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgIiN7
YWRkcmVzcy52YWx1ZX0iCisgIGVuZAorCisgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAg
ICIqI3thZGRyZXNzLnZhbHVlfSIKKyAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UK
KyAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgYXNtTGFiZWwKKyAgZW5kCitlbmQKKwor
Y2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZQorICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAg
ICBhc21MYWJlbAorICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbgorICBkZWYgeDg2T3Bl
cmFuZHMoKmtpbmRzKQorICAgIHJhaXNlIHVubGVzcyBraW5kcy5zaXplID09IG9wZXJhbmRzLnNp
emUKKyAgICByZXN1bHQgPSBbXQorICAgIGtpbmRzLnNpemUudGltZXMgeworICAgICAgfCBpZHgg
fAorICAgICAgcmVzdWx0IDw8IG9wZXJhbmRzW2lkeF0ueDg2T3BlcmFuZChraW5kc1tpZHhdKQor
ICAgIH0KKyAgICByZXN1bHQuam9pbigiLCAiKQorICBlbmQKKworICBkZWYgeDg2U3VmZml4KGtp
bmQpCisgICAgY2FzZSBraW5kCisgICAgd2hlbiA6Ynl0ZQorICAgICAgImIiCisgICAgd2hlbiA6
aGFsZgorICAgICAgInciCisgICAgd2hlbiA6aW50CisgICAgICAibCIKKyAgICB3aGVuIDpkb3Vi
bGUKKyAgICAgICJzZCIKKyAgICBlbHNlCisgICAgICByYWlzZQorICAgIGVuZAorICBlbmQKKyAg
CisgIGRlZiBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtpbmQsIG51bU9wZXJh
bmRzKQorICAgIGlmIG51bU9wZXJhbmRzID09IDMKKyAgICAgIGlmIG9wZXJhbmRzWzBdID09IG9w
ZXJhbmRzWzJdCisgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICBl
bHNpZiBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAkYXNtLnB1dHMgIiN7b3Bj
b2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9w
ZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMgIm1vdiN7eDg2U3Vm
Zml4KGtpbmQpfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJd
Lng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgICAgZW5kCisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQp
fSIKKyAgICBlbmQKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2T3Aob3Bjb2RlLCBraW5kKQor
ICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6
ZSkKKyAgZW5kCisgIAorICBkZWYgaGFuZGxlWDg2U2hpZnQob3Bjb2RlLCBraW5kKQorICAgIGlm
IG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBvciBvcGVyYW5kc1swXSA9PSBSZWdpc3RlcklE
LmZvck5hbWUobmlsLCAidDIiKQorICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0i
CisgICAgZWxzZQorICAgICAgJGFzbS5wdXRzICJ4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmludCl9LCAlZWN4IgorICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gJWNsLCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgJGFzbS5wdXRzICJ4Y2hnbCAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRl
ZiBoYW5kbGVYODZEb3VibGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAgIGNhc2UgbW9k
ZQorICAgIHdoZW4gOm5vcm1hbAorICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0iCisgICAgd2hlbiA6cmV2ZXJzZQorICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91
YmxlKX0iCisgICAgZWxzZQorICAgICAgcmFpc2UgbW9kZS5pbnNwZWN0CisgICAgZW5kCisgICAg
JGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgIGVu
ZAorICAKKyAgZGVmIGhhbmRsZVg4NkludENvbXBhcmUob3Bjb2RlU3VmZml4LCBraW5kKQorICAg
IGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMF0udmFsdWUgPT0g
MCBhbmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAi
ZSIgb3Igb3Bjb2RlU3VmZml4ID09ICJuZSIpCisgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1
ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbHNpZiBv
cGVyYW5kc1sxXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzFdLnZhbHVlID09IDAgYW5k
IG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9y
IG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgo
a2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgZWxzZQorICAgICAg
JGFzbS5wdXRzICJjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KGtpbmQpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKKyAgZW5k
CisgIAorICBkZWYgaGFuZGxlWDg2SW50QnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBo
YW5kbGVYODZJbnRDb21wYXJlKGJyYW5jaE9wY29kZVsxLi4tMV0sIGtpbmQpCisgICAgJGFzbS5w
dXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgIGVuZAorICAK
KyAgZGVmIGhhbmRsZVg4NlNldChzZXRPcGNvZGUsIG9wZXJhbmQpCisgICAgaWYgb3BlcmFuZC5z
dXBwb3J0czhCaXRPblg4NgorICAgICAgJGFzbS5wdXRzICIje3NldE9wY29kZX0gI3tvcGVyYW5k
Lng4Nk9wZXJhbmQoOmJ5dGUpfSIKKyAgICAgICRhc20ucHV0cyAibW92emJsICN7b3BlcmFuZC54
ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSIKKyAgICBlbHNl
CisgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSwgJWVh
eCIKKyAgICAgICRhc20ucHV0cyAiI3tzZXRPcGNvZGV9ICVhbCIKKyAgICAgICRhc20ucHV0cyAi
bW92emJsICVhbCwgJWVheCIKKyAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVyYW5kLng4Nk9w
ZXJhbmQoOmludCl9LCAlZWF4IgorICAgIGVuZAorICBlbmQKKyAgCisgIGRlZiBoYW5kbGVYODZJ
bnRDb21wYXJlU2V0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZJbnRDb21wYXJlKHNl
dE9wY29kZVszLi4tMV0sIGtpbmQpCisgICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFu
ZHNbMl0pCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICB2YWx1ZSA9
IG9wZXJhbmRzWzBdCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiAyCisgICAgICBt
YXNrID0gSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtMSkKKyAgICB3aGVuIDMKKyAgICAgIG1h
c2sgPSBvcGVyYW5kc1sxXQorICAgIGVsc2UKKyAgICAgIHJhaXNlICJFeHBlY3RlZCAyIG9yIDMg
b3BlcmFuZHMsIGJ1dCBnb3QgI3tvcGVyYW5kcy5zaXplfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9
IgorICAgIGVuZAorICAgIAorICAgIGlmIG1hc2suaXNfYT8gSW1tZWRpYXRlIGFuZCBtYXNrLnZh
bHVlID09IC0xCisgICAgICBpZiB2YWx1ZS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20u
cHV0cyAidGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9LCAj
e3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgZWxzZQorICAgICAgICAkYXNtLnB1dHMg
ImNtcCN7eDg2U3VmZml4KGtpbmQpfSAkMCwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAg
ICAgIGVuZAorICAgIGVsc2UKKyAgICAgICRhc20ucHV0cyAidGVzdCN7eDg2U3VmZml4KGtpbmQp
fSAje21hc2sueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2T3BlcmFuZChraW5kKX0iCisg
ICAgZW5kCisgIGVuZAorICAKKyAgZGVmIGhhbmRsZVg4NkJyYW5jaFRlc3QoYnJhbmNoT3Bjb2Rl
LCBraW5kKQorICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNo
T3Bjb2RlfSAje29wZXJhbmRzLmxhc3QuYXNtTGFiZWx9IgorICBlbmQKKyAgCisgIGRlZiBoYW5k
bGVYODZTZXRUZXN0KHNldE9wY29kZSwga2luZCkKKyAgICBoYW5kbGVYODZUZXN0KGtpbmQpCisg
ICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHMubGFzdCkKKyAgZW5kCisgIAorICBk
ZWYgaGFuZGxlWDg2T3BCcmFuY2gob3Bjb2RlLCBicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgaGFu
ZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXplIC0gMSkK
KyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAgIGp1bXBUYXJnZXQgPSBv
cGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisg
ICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5kCisgICAgJGFzbS5wdXRz
ICIje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0LmFzbUxhYmVsfSIKKyAgZW5kCisgIAorICBk
ZWYgaGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAgICBpZiBvcGVyYW5k
cy5zaXplID09IDQgYW5kIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAkYXNtLnB1
dHMgIm5lZ2wgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0
cyAiYWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgIGVsc2UKKyAgICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJh
bmRzKCJzdWIje3g4NlN1ZmZpeChraW5kKX0iLCBraW5kLCBvcGVyYW5kcy5zaXplIC0gMSkKKyAg
ICBlbmQKKyAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICB3aGVuIDQKKyAgICAgIGp1bXBUYXJn
ZXQgPSBvcGVyYW5kc1szXQorICAgIHdoZW4gMworICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRz
WzJdCisgICAgZWxzZQorICAgICAgcmFpc2Ugc2VsZi5pbnNwZWN0CisgICAgZW5kCisgICAgJGFz
bS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0LmFzbUxhYmVsfSIKKyAgZW5kCisg
IAorICBkZWYgbG93ZXJYODYKKyAgICAkYXNtLmNvbW1lbnQgY29kZU9yaWdpblN0cmluZworICAg
IGNhc2Ugb3Bjb2RlCisgICAgd2hlbiAiYWRkaSIsICJhZGRwIgorICAgICAgaWYgb3BlcmFuZHMu
c2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgcmFpc2Ug
dW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgcmFpc2UgdW5sZXNz
IG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgaWYgb3BlcmFuZHNbMF0udmFs
dWUgPT0gMAorICAgICAgICAgIHVubGVzcyBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAg
ICAgICAgICAgJGFzbS5wdXRzICJtb3ZsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0s
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAgZW5kCisgICAgICAg
IGVsc2UKKyAgICAgICAgICAkYXNtLnB1dHMgImxlYWwgI3tvcGVyYW5kc1swXS52YWx1ZX0oI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZWxzaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBv
cGVyYW5kc1swXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5k
c1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5p
c19hPyBSZWdpc3RlcklECisgICAgICAgICRhc20ucHV0cyAibGVhbCAoI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3Bl
cmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgIHVubGVzcyBJ
bW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAkYXNtLnB1dHMg
ImFkZGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgICAgIGVuZAorICAgICAgZW5k
CisgICAgd2hlbiAiYW5kaSIsICJhbmRwIgorICAgICAgaGFuZGxlWDg2T3AoImFuZGwiLCA6aW50
KQorICAgIHdoZW4gImxzaGlmdGkiCisgICAgICBoYW5kbGVYODZTaGlmdCgic2FsbCIsIDppbnQp
CisgICAgd2hlbiAibXVsaSIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFu
ZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICRhc20ucHV0cyAiaW11bGwgI3t4ODZPcGVy
YW5kcyg6aW50LCA6aW50LCA6aW50KX0iCisgICAgICBlbHNlCisgICAgICAgICMgRklYTUU6IGNv
dWxkIGRvIHNvbWUgcGVlcGhvbGUgaW4gY2FzZSB0aGUgbGVmdCBvcGVyYW5kIGlzIGltbWVkaWF0
ZSBhbmQgaXQncworICAgICAgICAjIGEgcG93ZXIgb2YgdHdvLgorICAgICAgICBoYW5kbGVYODZP
cCgiaW11bGwiLCA6aW50KQorICAgICAgZW5kCisgICAgd2hlbiAibmVnaSIKKyAgICAgICRhc20u
cHV0cyAibmVnbCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICB3aGVuICJub3RpIgorICAgICAg
JGFzbS5wdXRzICJub3RsICN7eDg2T3BlcmFuZHMoOmludCl9IgorICAgIHdoZW4gIm9yaSIsICJv
cnAiCisgICAgICBoYW5kbGVYODZPcCgib3JsIiwgOmludCkKKyAgICB3aGVuICJyc2hpZnRpIgor
ICAgICAgaGFuZGxlWDg2U2hpZnQoInNhcmwiLCA6aW50KQorICAgIHdoZW4gInVyc2hpZnRpIgor
ICAgICAgaGFuZGxlWDg2U2hpZnQoInNocmwiLCA6aW50KQorICAgIHdoZW4gInN1YmkiLCAic3Vi
cCIKKyAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFu
ZHNbMl0KKyAgICAgICAgJGFzbS5wdXRzICJuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgICAgICRhc20ucHV0cyAiYWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQo
OmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgZWxzZQorICAg
ICAgICBoYW5kbGVYODZPcCgic3VibCIsIDppbnQpCisgICAgICBlbmQKKyAgICB3aGVuICJ4b3Jp
IiwgInhvcnAiCisgICAgICBoYW5kbGVYODZPcCgieG9ybCIsIDppbnQpCisgICAgd2hlbiAibG9h
ZGkiLCAic3RvcmVpIiwgImxvYWRwIiwgInN0b3JlcCIKKyAgICAgICRhc20ucHV0cyAibW92bCAj
e3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICB3aGVuICJsb2FkYiIKKyAgICAgICRhc20u
cHV0cyAibW92emJsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImxvYWRicyIKKyAgICAgICRhc20ucHV0
cyAibW92c2JsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gImxvYWRoIgorICAgICAgJGFzbS5wdXRzICJt
b3Z6d2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpoYWxmKX0sICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAibG9hZGhzIgorICAgICAgJGFzbS5wdXRzICJtb3Zz
d2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpoYWxmKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgd2hlbiAic3RvcmViIgorICAgICAgJGFzbS5wdXRzICJtb3ZiICN7
eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0iCisgICAgd2hlbiAibG9hZGQiLCAibW92ZWQiLCAi
c3RvcmVkIgorICAgICAgJGFzbS5wdXRzICJtb3ZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpk
b3VibGUpfSIKKyAgICB3aGVuICJhZGRkIgorICAgICAgJGFzbS5wdXRzICJhZGRzZCAje3g4Nk9w
ZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJkaXZkIgorICAgICAgJGFzbS5w
dXRzICJkaXZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJz
dWJkIgorICAgICAgJGFzbS5wdXRzICJzdWJzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3Vi
bGUpfSIKKyAgICB3aGVuICJtdWxkIgorICAgICAgJGFzbS5wdXRzICJtdWxzZCAje3g4Nk9wZXJh
bmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICB3aGVuICJzcXJ0ZCIKKyAgICAgICRhc20ucHV0
cyAic3FydHNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAiY2kyZCIKKyAgICAgICRhc20ucHV0
cyAiY3Z0c2kyc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICB3aGVuICJiZGVxIgorICAgICAgaXNVbm9yZGVy
ZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRlcSIpCisgICAgICAkYXNtLnB1dHMgInVjb21pc2Qg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDpkb3VibGUpfSIKKyAgICAgICRhc20ucHV0cyAianAgI3tMYWJlbFJlZmVyZW5jZS5uZXco
Y29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiamUg
I3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgb3BlcmFuZHNbMl0pLmFzbUxhYmVsfSIK
KyAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgIHdoZW4gImJkbmVxIgorICAgICAg
aGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqbmUiLCA6bm9ybWFsKQorICAgIHdoZW4gImJkZ3QiCisg
ICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphIiwgOm5vcm1hbCkKKyAgICB3aGVuICJiZGd0
ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIsIDpub3JtYWwpCisgICAgd2hl
biAiYmRsdCIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6cmV2ZXJzZSkKKyAg
ICB3aGVuICJiZGx0ZXEiCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIsIDpyZXZl
cnNlKQorICAgIHdoZW4gImJkZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamUi
LCA6bm9ybWFsKQorICAgIHdoZW4gImJkbmVxdW4iCisgICAgICBpc1Vub3JkZXJlZCA9IExvY2Fs
TGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAgIGlzRXF1YWwgPSBMb2NhbExhYmVsLnVuaXF1
ZSgiYmRuZXF1biIpCisgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAg
ICAgICRhc20ucHV0cyAianAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9y
ZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiamUgI3tMYWJlbFJlZmVyZW5jZS5u
ZXcoY29kZU9yaWdpbiwgaXNFcXVhbCkuYXNtTGFiZWx9IgorICAgICAgaXNVbm9yZGVyZWQubG93
ZXIoIlg4NiIpCisgICAgICAkYXNtLnB1dHMgImptcCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIK
KyAgICAgIGlzRXF1YWwubG93ZXIoIlg4NiIpCisgICAgd2hlbiAiYmRndHVuIgorICAgICAgaGFu
ZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpyZXZlcnNlKQorICAgIHdoZW4gImJkZ3RlcXVuIgor
ICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6cmV2ZXJzZSkKKyAgICB3aGVuICJi
ZGx0dW4iCisgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOm5vcm1hbCkKKyAgICB3
aGVuICJiZGx0ZXF1biIKKyAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamJlIiwgOm5vcm1h
bCkKKyAgICB3aGVuICJidGQyaSIKKyAgICAgICRhc20ucHV0cyAiY3Z0dHNkMnNpICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgICAkYXNtLnB1dHMgImNtcGwgJDB4ODAwMDAwMDAgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICAgICRhc20ucHV0cyAiamUgI3tvcGVyYW5kc1syXS5hc21MYWJl
bH0iCisgICAgd2hlbiAidGQyaSIKKyAgICAgICRhc20ucHV0cyAiY3Z0dHNkMnNpICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgd2hlbiAiYmNkMmkiCisgICAgICAkYXNtLnB1dHMgImN2dHRzZDJzaSAje29wZXJh
bmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgICAgJGFzbS5wdXRzICJ0ZXN0bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmlu
dCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgJGFzbS5wdXRzICJq
ZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICRhc20ucHV0cyAiY3Z0c2kyc2QgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgInVj
b21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAk
YXNtLnB1dHMgImpwICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgJGFzbS5wdXRzICJq
bmUgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgd2hlbiAibW92ZHoiCisgICAgICAkYXNt
LnB1dHMgInhvcnBkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgd2hlbiAicG9wIgorICAgICAgJGFzbS5w
dXRzICJwb3AgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICB3aGVuICJwdXNo
IgorICAgICAgJGFzbS5wdXRzICJwdXNoICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6eGkycCIKKyAgICAgIGlmIEltbWVkaWF0ZS5u
ZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXSBhbmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJ
RAorICAgICAgICAkYXNtLnB1dHMgInhvcmwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQp
fSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgIGVsc2lmIG9wZXJhbmRz
WzBdICE9IG9wZXJhbmRzWzFdCisgICAgICAgICRhc20ucHV0cyAibW92bCAje3g4Nk9wZXJhbmRz
KDppbnQsIDppbnQpfSIKKyAgICAgIGVuZAorICAgIHdoZW4gIm5vcCIKKyAgICAgICRhc20ucHV0
cyAibm9wIgorICAgIHdoZW4gImJpZXEiLCAiYnBlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamUiLCA6aW50KQorICAgIHdoZW4gImJpbmVxIiwgImJwbmVxIgorICAgICAgaGFuZGxlWDg2
SW50QnJhbmNoKCJqbmUiLCA6aW50KQorICAgIHdoZW4gImJpYSIsICJicGEiCisgICAgICBoYW5k
bGVYODZJbnRCcmFuY2goImphIiwgOmludCkKKyAgICB3aGVuICJiaWFlcSIsICJicGFlcSIKKyAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmludCkKKyAgICB3aGVuICJiaWIiLCAiYnBi
IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYiIsIDppbnQpCisgICAgd2hlbiAiYmliZXEi
LCAiYnBiZXEiCisgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDppbnQpCisgICAgd2hl
biAiYmlndCIsICJicGd0IgorICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDppbnQpCisg
ICAgd2hlbiAiYmlndGVxIiwgImJwZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamdl
IiwgOmludCkKKyAgICB3aGVuICJiaWx0IiwgImJwbHQiCisgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImpsIiwgOmludCkKKyAgICB3aGVuICJiaWx0ZXEiLCAiYnBsdGVxIgorICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqbGUiLCA6aW50KQorICAgIHdoZW4gImJiZXEiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImplIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJuZXEiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImpuZSIsIDpieXRlKQorICAgIHdoZW4gImJiYSIKKyAgICAgIGhhbmRsZVg4
NkludEJyYW5jaCgiamEiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmFlcSIKKyAgICAgIGhhbmRsZVg4
NkludEJyYW5jaCgiamFlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJiIgorICAgICAgaGFuZGxlWDg2
SW50QnJhbmNoKCJqYiIsIDpieXRlKQorICAgIHdoZW4gImJiYmVxIgorICAgICAgaGFuZGxlWDg2
SW50QnJhbmNoKCJqYmUiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmd0IgorICAgICAgaGFuZGxlWDg2
SW50QnJhbmNoKCJqZyIsIDpieXRlKQorICAgIHdoZW4gImJiZ3RlcSIKKyAgICAgIGhhbmRsZVg4
NkludEJyYW5jaCgiamdlIiwgOmJ5dGUpCisgICAgd2hlbiAiYmJsdCIKKyAgICAgIGhhbmRsZVg4
NkludEJyYW5jaCgiamwiLCA6Ynl0ZSkKKyAgICB3aGVuICJiYmx0ZXEiCisgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImpsdGVxIiwgOmJ5dGUpCisgICAgd2hlbiAiYnRpbyIsICJidHBvIgorICAg
ICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam8iLCA6aW50KQorICAgIHdoZW4gImJ0aXMiLCAiYnRw
cyIKKyAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmludCkKKyAgICB3aGVuICJidGl6
IiwgImJ0cHoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDppbnQpCisgICAgd2hl
biAiYnRpbnoiLCAiYnRwbnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6aW50
KQorICAgIHdoZW4gImJ0Ym8iCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpieXRl
KQorICAgIHdoZW4gImJ0YnMiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqcyIsIDpieXRl
KQorICAgIHdoZW4gImJ0YnoiCisgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDpieXRl
KQorICAgIHdoZW4gImJ0Ym56IgorICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmJ5
dGUpCisgICAgd2hlbiAiam1wIgorICAgICAgJGFzbS5wdXRzICJqbXAgI3tvcGVyYW5kc1swXS54
ODZDYWxsT3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAiYmFkZGlvIiwgImJhZGRwbyIKKyAgICAg
IGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpvIiwgOmludCkKKyAgICB3aGVuICJiYWRkaXMi
LCAiYmFkZHBzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianMiLCA6aW50KQor
ICAgIHdoZW4gImJhZGRpeiIsICJiYWRkcHoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRk
bCIsICJqeiIsIDppbnQpCisgICAgd2hlbiAiYmFkZGlueiIsICJiYWRkcG56IgorICAgICAgaGFu
ZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam56IiwgOmludCkKKyAgICB3aGVuICJic3ViaW8iCisg
ICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpvIiwgOmludCkKKyAgICB3aGVuICJic3ViaXMiCisg
ICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpzIiwgOmludCkKKyAgICB3aGVuICJic3ViaXoiCisg
ICAgICBoYW5kbGVYODZTdWJCcmFuY2goImp6IiwgOmludCkKKyAgICB3aGVuICJic3ViaW56Igor
ICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqbnoiLCA6aW50KQorICAgIHdoZW4gImJtdWxpbyIK
KyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbyIsIDppbnQpCisgICAgd2hlbiAi
Ym11bGlzIgorICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpzIiwgOmludCkKKyAg
ICB3aGVuICJibXVsaXoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAianoiLCA6
aW50KQorICAgIHdoZW4gImJtdWxpbnoiCisgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwi
LCAiam56IiwgOmludCkKKyAgICB3aGVuICJib3JpbyIKKyAgICAgIGhhbmRsZVg4Nk9wQnJhbmNo
KCJvcmwiLCAiam8iLCA6aW50KQorICAgIHdoZW4gImJvcmlzIgorICAgICAgaGFuZGxlWDg2T3BC
cmFuY2goIm9ybCIsICJqcyIsIDppbnQpCisgICAgd2hlbiAiYm9yaXoiCisgICAgICBoYW5kbGVY
ODZPcEJyYW5jaCgib3JsIiwgImp6IiwgOmludCkKKyAgICB3aGVuICJib3JpbnoiCisgICAgICBo
YW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpueiIsIDppbnQpCisgICAgd2hlbiAiYnJlYWsiCisg
ICAgICAkYXNtLnB1dHMgImludCAkMyIKKyAgICB3aGVuICJjYWxsIgorICAgICAgJGFzbS5wdXRz
ICJjYWxsICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgIHdoZW4gInJl
dCIKKyAgICAgICRhc20ucHV0cyAicmV0IgorICAgIHdoZW4gImNpZXEiLCAiY3BlcSIKKyAgICAg
IGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGUiLCA6aW50KQorICAgIHdoZW4gImNpbmVxIiwg
ImNwbmVxIgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bmUiLCA6aW50KQorICAg
IHdoZW4gImNpYSIsICJjcGEiCisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRhIiwg
OmludCkKKyAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBh
cmVTZXQoInNldGFlIiwgOmludCkKKyAgICB3aGVuICJjaWIiLCAiY3BiIgorICAgICAgaGFuZGxl
WDg2SW50Q29tcGFyZVNldCgic2V0YiIsIDppbnQpCisgICAgd2hlbiAiY2liZXEiLCAiY3BiZXEi
CisgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRiZSIsIDppbnQpCisgICAgd2hlbiAi
Y2lndCIsICJjcGd0IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZyIsIDppbnQp
CisgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIKKyAgICAgIGhhbmRsZVg4NkludENvbXBhcmVT
ZXQoInNldGdlIiwgOmludCkKKyAgICB3aGVuICJjaWx0IiwgImNwbHQiCisgICAgICBoYW5kbGVY
ODZJbnRDb21wYXJlU2V0KCJzZXRsIiwgOmludCkKKyAgICB3aGVuICJjaWx0ZXEiLCAiY3BsdGVx
IgorICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bGUiLCA6aW50KQorICAgIHdoZW4g
InRpbyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6aW50KQorICAgIHdoZW4gInRp
cyIKKyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6aW50KQorICAgIHdoZW4gInRpeiIK
KyAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6aW50KQorICAgIHdoZW4gInRpbnoiCisg
ICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDppbnQpCisgICAgd2hlbiAidGJvIgorICAg
ICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0byIsIDpieXRlKQorICAgIHdoZW4gInRicyIKKyAgICAg
IGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6Ynl0ZSkKKyAgICB3aGVuICJ0YnoiCisgICAgICBo
YW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmJ5dGUpCisgICAgd2hlbiAidGJueiIKKyAgICAgIGhh
bmRsZVg4NlNldFRlc3QoInNldG56IiwgOmJ5dGUpCisgICAgd2hlbiAicGVlayIKKyAgICAgICRh
c20ucHV0cyAibW92bCAje29wZXJhbmRzWzBdLnZhbHVlICogNH0oJWVzcCksICN7b3BlcmFuZHNb
MV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgd2hlbiAicG9rZSIKKyAgICAgICRhc20ucHV0cyAi
bW92bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLnZhbHVl
ICogNH0oJWVzcCkiCisgICAgd2hlbiAiY2RxaSIKKyAgICAgICRhc20ucHV0cyAiY2RxIgorICAg
IHdoZW4gImlkaXZpIgorICAgICAgJGFzbS5wdXRzICJpZGl2bCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgIHdoZW4gImZpaTJkIgorICAgICAgJGFzbS5wdXRzICJtb3ZkICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0iCisgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDppbnQpfSwgJXhtbTciCisgICAgICAkYXNtLnB1dHMgInBzbGxxICQzMiwgJXhtbTciCisgICAg
ICAkYXNtLnB1dHMgInBvciAleG1tNywgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUp
fSIKKyAgICB3aGVuICJmZDJpaSIKKyAgICAgICRhc20ucHV0cyAibW92ZCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgICAgJGFzbS5wdXRzICJtb3ZzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
LCAleG1tNyIKKyAgICAgICRhc20ucHV0cyAicHNybHEgJDMyLCAleG1tNyIKKyAgICAgICRhc20u
cHV0cyAibW92c2QgJXhtbTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
d2hlbiAiYm8iCisgICAgICAkYXNtLnB1dHMgImpvICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9Igor
ICAgIHdoZW4gImJzIgorICAgICAgJGFzbS5wdXRzICJqcyAje29wZXJhbmRzWzBdLmFzbUxhYmVs
fSIKKyAgICB3aGVuICJieiIKKyAgICAgICRhc20ucHV0cyAianogI3tvcGVyYW5kc1swXS5hc21M
YWJlbH0iCisgICAgd2hlbiAiYm56IgorICAgICAgJGFzbS5wdXRzICJqbnogI3tvcGVyYW5kc1sw
XS5hc21MYWJlbH0iCisgICAgd2hlbiAibGVhaSIsICJsZWFwIgorICAgICAgJGFzbS5wdXRzICJs
ZWFsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgZWxzZQorICAgICAgcmFpc2UgIkJhZCBvcGNvZGU6ICN7b3Bjb2Rl
fSIKKyAgICBlbmQKKyAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENvZGVTcGVjaWFsaXphdGlvbktpbmRfaAor
I2RlZmluZSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKworbmFtZXNwYWNlIEpTQyB7CisKK2Vu
dW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7IENvZGVGb3JDYWxsLCBDb2RlRm9yQ29uc3RydWN0
IH07CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gQ29kZVNwZWNpYWxpemF0aW9u
S2luZF9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
blNsb3dQYXRocy5oCShyZXZpc2lvbiAxMDY4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBA
QAogI2RlZmluZSBDb21tb25TbG93UGF0aHNfaAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkhl
bHBlcnMuaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAKQEAgLTQxLDYgKzQyLDM4IEBAIG5hbWVz
cGFjZSBKU0MgewogCiBuYW1lc3BhY2UgQ29tbW9uU2xvd1BhdGhzIHsKIAorQUxXQVlTX0lOTElO
RSBFeGVjU3RhdGUqIGFyaXR5Q2hlY2tGb3IoRXhlY1N0YXRlKiBleGVjLCBSZWdpc3RlckZpbGUq
IHJlZ2lzdGVyRmlsZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEpTRnVu
Y3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIEFTU0VSVCgh
Y2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKKyAgICBDb2RlQmxvY2sqIG5ld0NvZGVCbG9jayA9
ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAg
ICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBleGVjLT5hcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcygpOworCisgICAgLy8gVGhpcyBlbnN1cmVzIGVub3VnaCBzcGFjZSBmb3IgdGhl
IHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1bWVudHMgcGFzc2VkIGJ5IHRoZSBjYWxs
ZXIuCisgICAgaWYgKCFyZWdpc3RlckZpbGUtPmdyb3coZXhlYy0+cmVnaXN0ZXJzKCkgKyBuZXdD
b2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdp
c3RlcnMpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKKworICAgIC8vIFRv
byBmZXcgYXJndW1lbnRzIC0tIGNvcHkgY2FsbCBmcmFtZSBhbmQgYXJndW1lbnRzLCB0aGVuIGZp
bGwgaW4gbWlzc2luZyBhcmd1bWVudHMgd2l0aCB1bmRlZmluZWQuCisgICAgc2l6ZV90IGRlbHRh
ID0gbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpczsKKyAgICBSZWdpc3Rlciogc3JjID0gZXhlYy0+cmVnaXN0ZXJzKCk7CisgICAgUmVnaXN0
ZXIqIGRzdCA9IGV4ZWMtPnJlZ2lzdGVycygpICsgZGVsdGE7CisKKyAgICBpbnQgaTsKKyAgICBp
bnQgZW5kID0gLUV4ZWNTdGF0ZTo6b2Zmc2V0Rm9yKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KTsKKyAgICBmb3IgKGkgPSAtMTsgaSA+PSBlbmQ7IC0taSkKKyAgICAgICAgZHN0W2ldID0gc3Jj
W2ldOworCisgICAgZW5kIC09IGRlbHRhOworICAgIGZvciAoIDsgaSA+PSBlbmQ7IC0taSkKKyAg
ICAgICAgZHN0W2ldID0ganNVbmRlZmluZWQoKTsKKworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9
IEV4ZWNTdGF0ZTo6Y3JlYXRlKGRzdCk7CisgICAgQVNTRVJUKCh2b2lkKiluZXdFeGVjIDw9IHJl
Z2lzdGVyRmlsZS0+ZW5kKCkpOworICAgIHJldHVybiBuZXdFeGVjOworfQorCiBBTFdBWVNfSU5M
SU5FIGJvb2wgb3BJbnN0YW5jZU9mU2xvdyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUs
IEpTVmFsdWUgYmFzZVZhbCwgSlNWYWx1ZSBwcm90bykKIHsKICAgICBBU1NFUlQoIXZhbHVlLmlz
Q2VsbCgpIHx8ICFiYXNlVmFsLmlzQ2VsbCgpIHx8ICFwcm90by5pc0NlbGwoKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHJldmlzaW9uIDEw
NjgzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0
b3IuaCIKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdEcml2ZXIuaCIKKyNp
bmNsdWRlICJFeGVjdXRpb25IYXJuZXNzLmgiCiAjaW5jbHVkZSAiSklULmgiCiAjaW5jbHVkZSAi
SklURHJpdmVyLmgiCiAjaW5jbHVkZSAiUGFyc2VyLmgiCkBAIC04NCw3ICs4NSw3IEBAIEludHJp
bnNpYyBOYXRpdmVFeGVjdXRhYmxlOjppbnRyaW5zaWMoKSAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+
CiBzdGF0aWMgdm9pZCBqZXR0aXNvbkNvZGVCbG9jayhKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IE93blB0cjxUPiYgY29kZUJsb2NrKQogewotICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJVFR5
cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0
aW1pemluZ0pJVChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkpOwogICAgIEFTU0VSVChjb2RlQmxv
Y2stPmFsdGVybmF0aXZlKCkpOwogICAgIE93blB0cjxUPiBjb2RlQmxvY2tUb0pldHRpc29uID0g
Y29kZUJsb2NrLnJlbGVhc2UoKTsKICAgICBjb2RlQmxvY2sgPSBzdGF0aWNfcG9pbnRlcl9jYXN0
PFQ+KGNvZGVCbG9ja1RvSmV0dGlzb24tPnJlbGVhc2VBbHRlcm5hdGl2ZSgpKTsKQEAgLTE2OSw5
ICsxNzAsMzAgQEAgSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlT3B0aW1pegogICAg
IHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBFdmFsRXhlY3V0YWJsZTo6aml0Q29tcGlsZShKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlSWZB
cHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGws
IEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7Cit9CisKK2lubGluZSBjb25zdCBjaGFyKiBzYW1wbGluZ0Rlc2NyaXB0aW9uKEpJVENv
ZGU6OkpJVFR5cGUgaml0VHlwZSkKK3sKKyAgICBzd2l0Y2ggKGppdFR5cGUpIHsKKyAgICBjYXNl
IEpJVENvZGU6OkludGVycHJldGVyVGh1bms6CisgICAgICAgIHJldHVybiAiSW50ZXJwcmV0ZXIg
Q29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpCYXNlbGluZUpJVDoKKyAg
ICAgICAgcmV0dXJuICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBjYXNlIEpJ
VENvZGU6OkRGR0pJVDoKKyAgICAgICAgcmV0dXJuICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSI7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiAwOworICAgIH0KK30KKwogSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50
ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJ
VENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1Jl
Z2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0
aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdS
ZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAg
CiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtMjEyLDcg
KzIzNCw3IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmEKICAgICB9
CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoKmds
b2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCisg
ICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKCpnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ss
IG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgog
CkBAIC0yOTcsOSArMzE5LDE1IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGls
ZU9wdGkKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgUHJvZ3JhbUV4ZWN1dGFibGU6Ompp
dENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0g
aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBt
X2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9V
TlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCiBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6
OmNvbXBpbGVJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNo
YWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9u
IHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxp
bmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAg
ICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5
cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7
CkBAIC0zMzgsNyArMzY2LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxl
SW50ZQogICAgIH0KIAogI2lmIEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlSWZBcHBy
b3ByaWF0ZSgqZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxs
LCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGb3JFeGVjdXRpb24oKmdsb2JhbERhdGEsIG1f
cHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJl
dHVybiAwOwogI2VuZGlmCiAKQEAgLTQxNCw3ICs0NDIsNyBAQCBGdW5jdGlvbkNvZGVCbG9jayog
RnVuY3Rpb25FeGVjdXRhYmxlOjpiCiAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkK
ICAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Db2RlQmxvY2sqPihyZXN1bHQt
PmFsdGVybmF0aXZlKCkpOwogICAgIEFTU0VSVChyZXN1bHQpOwotICAgIEFTU0VSVChyZXN1bHQt
PmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENv
ZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KIApAQCAtNDQwLDYgKzQ2OCwxOCBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRh
YmxlOjpjb21waWxlT3B0CiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQorewor
ICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxE
YXRhLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNh
bGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgp
KTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBGdW5jdGlv
bkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0
ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3Ry
dWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwg
SklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVz
dWx0KTsKK30KKwogRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJs
b2NrV2l0aEJ5dGVjb2RlRm9yKENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBG
dW5jdGlvbkNvZGVCbG9jayogY29kZUJsb2NrID0gYmFzZWxpbmVDb2RlQmxvY2tGb3Ioa2luZCk7
CkBAIC00ODQsNyArNTI0LDcgQEAgUGFzc093blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4gRnVuY3Rp
b25FeAogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yQ2FsbEludGVy
bmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRD
b2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdp
b24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlv
biAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVn
aW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAgIAog
I2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShleGVjKTsKQEAgLTUwNiw3ICs1NDYs
NyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAgICAgbV9zeW1i
b2xUYWJsZSA9IG1fY29kZUJsb2NrRm9yQ2FsbC0+c2hhcmVkU3ltYm9sVGFibGUoKTsKIAogI2lm
IEVOQUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4
ZWMtPmdsb2JhbERhdGEoKSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBt
X2ppdENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUpKQor
ICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwg
bV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsV2l0
aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENvZGVGb3JDYWxsKSkKICAgICAg
ICAgcmV0dXJuIDA7CiAjZW5kaWYKIApAQCAtNTI2LDcgKzU2Niw3IEBAIEpTT2JqZWN0KiBGdW5j
dGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKIAogSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFp
bk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAg
U2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGlu
ZUpJVCA/ICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24g
KFRPVEFMKSIpOworICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVz
Y3JpcHRpb24oaml0VHlwZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9Q
QVJBTShqaXRUeXBlKTsKQEAgLTU0OCw3ICs1ODgsNyBAQCBKU09iamVjdCogRnVuY3Rpb25FeGVj
dXRhYmxlOjpjb21waWxlRm9yCiAgICAgbV9zeW1ib2xUYWJsZSA9IG1fY29kZUJsb2NrRm9yQ29u
c3RydWN0LT5zaGFyZWRTeW1ib2xUYWJsZSgpOwogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAo
IWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2Nv
ZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JD
b25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSkpCisgICAgaWYg
KCFwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVC
bG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25z
dHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSwgQ29kZUZvckNvbnN0
cnVjdCkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHJldmlzaW9uIDEwNjgzNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MjcsNiArMjcsNyBAQAogI2RlZmluZSBFeGVjdXRhYmxlX2gKIAogI2luY2x1ZGUgIkNhbGxEYXRh
LmgiCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIkpTRnVu
Y3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCkBA
IC0zOSwxMiArNDAsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRGVidWdnZXI7CiAg
ICAgY2xhc3MgRXZhbENvZGVCbG9jazsKICAgICBjbGFzcyBGdW5jdGlvbkNvZGVCbG9jazsKKyAg
ICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9j
azsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKIAogICAgIHN0cnVjdCBFeGNlcHRpb25JbmZv
OwogICAgIAotICAgIGVudW0gQ29kZVNwZWNpYWxpemF0aW9uS2luZCB7IENvZGVGb3JDYWxsLCBD
b2RlRm9yQ29uc3RydWN0IH07CiAgICAgZW51bSBDb21waWxhdGlvbktpbmQgeyBGaXJzdENvbXBp
bGF0aW9uLCBPcHRpbWl6aW5nQ29tcGlsYXRpb24gfTsKIAogICAgIGlubGluZSBib29sIGlzQ2Fs
bChDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkBAIC0zMTksNiArMzIwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEV2YWxFeGVjdXRhYmxlIDogcHVibGljIFNj
cmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7
CiAKQEAgLTMzOCw2ICszNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5B
QkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGUoSlNHbG9iYWxEYXRh
Jik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShKU0dsb2JhbERhdGEmKTsKICNlbmRpZgogCiAg
ICAgICAgIEV2YWxDb2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVjb2RlKCkKQEAgLTM4NCw2ICszODcs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFi
bGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4
ZWN1dGFibGUgQmFzZTsKIApAQCAtNDExLDYgKzQxNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29k
ZShKU0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYp
OwogI2VuZGlmCiAKICAgICAgICAgUHJvZ3JhbUNvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUo
KQpAQCAtNDUzLDYgKzQ1OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgRnVuY3Rp
b25FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgewogICAgICAgICBmcmllbmQg
Y2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAg
LTUwOCw2ICs1MTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDYWxsKEpTR2xvYmFsRGF0
YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGVGb3JDYWxsKEpTR2xvYmFsRGF0YSYpOwogI2Vu
ZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNhbGwoKSBjb25zdApAQCAtNTM1LDYg
KzU0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAg
ICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEm
KTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYpOwog
I2VuZGlmCiAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZvckNvbnN0cnVjdCgpIGNvbnN0CkBA
IC01ODIsNiArNTkwLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgIGpldHRp
c29uT3B0aW1pemVkQ29kZUZvckNvbnN0cnVjdChnbG9iYWxEYXRhKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICAgICAgICAg
IGppdENvbXBpbGVGb3JDYWxsKGdsb2JhbERhdGEpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1
Y3QpOworICAgICAgICAgICAgaml0Q29tcGlsZUZvckNvbnN0cnVjdChnbG9iYWxEYXRhKTsKKyAg
ICAgICAgfQogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yKENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBFeGVjdXRpb25IYXJuZXNzX2gKKyNkZWZpbmUgRXhlY3V0aW9uSGFybmVz
c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShKSVQpCisKKyNp
bmNsdWRlICJKSVREcml2ZXIuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRzLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCit0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBlPgoraW5saW5l
IGJvb2wgcHJlcGFyZUZvckV4ZWN1dGlvbihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0
cjxDb2RlQmxvY2tUeXBlPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBKSVRDb2RlOjpK
SVRUeXBlIGppdFR5cGUpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChKSVRDb2RlOjpp
c0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkgeworICAgICAgICAvLyBTdGFydCBvZmYgaW4gdGhlIGxv
dyBsZXZlbCBpbnRlcnByZXRlci4KKyAgICAgICAgTExJbnQ6OmdldEVudHJ5cG9pbnQoZ2xvYmFs
RGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRK
SVRDb2RlKGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpKTsKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKyAgICByZXR1cm4gaml0Q29t
cGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLCBqaXRDb2RlLCBqaXRUeXBl
KTsKK30KKworaW5saW5lIGJvb2wgcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29kZUJsb2NrLCBK
SVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGppdENvZGVXaXRoQXJpdHlD
aGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6SklUVHlwZSBq
aXRUeXBlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisjaWYgRU5BQkxFKExMSU5U
KQorICAgIGlmIChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKSkgeworICAgICAgICAv
LyBTdGFydCBvZmYgaW4gdGhlIGxvdyBsZXZlbCBpbnRlcnByZXRlci4KKyAgICAgICAgTExJbnQ6
OmdldEZ1bmN0aW9uRW50cnlwb2ludChnbG9iYWxEYXRhLCBraW5kLCBqaXRDb2RlLCBqaXRDb2Rl
V2l0aEFyaXR5Q2hlY2spOworICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0Q29kZSwg
aml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2Vs
c2UKKyAgICBVTlVTRURfUEFSQU0oa2luZCk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorICAg
IHJldHVybiBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIGNvZGVC
bG9jaywgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBzeW1ib2xUYWJsZSwgaml0VHlw
ZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKKwor
I2VuZGlmIC8vIEV4ZWN1dGlvbkhhcm5lc3NfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FjdGl2YXRpb24uaAkocmV2aXNpb24gMTA2ODM0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEyNCw3ICsxMjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBPd25BcnJheVB0cjxX
cml0ZUJhcnJpZXI8VW5rbm93bj4gPiByZWdpc3RlckFycmF5ID0gYWRvcHRBcnJheVB0cihuZXcg
V3JpdGVCYXJyaWVyPFVua25vd24+W3JlZ2lzdGVyQXJyYXlTaXplXSk7CiAgICAgICAgIFdyaXRl
QmFycmllcjxVbmtub3duPiogcmVnaXN0ZXJzID0gcmVnaXN0ZXJBcnJheS5nZXQoKSArIHJlZ2lz
dGVyT2Zmc2V0OwotCisgICAgICAgIAogICAgICAgICAvLyBDb3B5IGFsbCBhcmd1bWVudHMgdGhh
dCBjYW4gYmUgY2FwdHVyZWQgYnkgbmFtZSBvciBieSB0aGUgYXJndW1lbnRzIG9iamVjdC4KICAg
ICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX251bUNhcHR1cmVkQXJnczsgKytpKSB7CiAgICAg
ICAgICAgICBpbnQgaW5kZXggPSBDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0KGkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24gMTA2ODM0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yOCw2ICsyOCw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTQXJyYXk7
CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgc3RydWN0IFNwYXJzZUFy
cmF5RW50cnkgOiBwdWJsaWMgV3JpdGVCYXJyaWVyPFVua25vd24+IHsKICAgICAgICAgdHlwZWRl
ZiBXcml0ZUJhcnJpZXI8VW5rbm93bj4gQmFzZTsKQEAgLTEyMiw2ICsxMjMsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICB9OwogCiAgICAgY2xhc3MgSlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAg
ICAgICAgZnJpZW5kIGNsYXNzIFdhbGtlcjsKIAogICAgIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxMDY4MzQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzYs
OSArMzYsMTAgQEAKIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7
Ci0gICAgY2xhc3MgU3RydWN0dXJlOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
ICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJy
YXk7CisgICAgY2xhc3MgU3RydWN0dXJlOwogCiAgICAgZW51bSBFbnVtZXJhdGlvbk1vZGUgewog
ICAgICAgICBFeGNsdWRlRG9udEVudW1Qcm9wZXJ0aWVzLApAQCAtMTYyLDYgKzE2Myw4IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNj
cmlwdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNz
SW5mbzsKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CiAgICAg
fTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJl
dmlzaW9uIDEwNjgzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBGdW5jdGlvblByb3RvdHlwZTsKICAgICBjbGFzcyBKU0FjdGl2YXRpb247CiAgICAg
Y2xhc3MgSlNHbG9iYWxPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
ICAgIGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgU291cmNlQ29kZTsKICAgICBu
YW1lc3BhY2UgREZHIHsKQEAgLTE0Miw2ICsxNDMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0RnVuY3Rpb25O
b25JbmxpbmUoKSBjb25zdDsKIAogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBhcmd1bWVudHNHZXR0
ZXIoRXhlY1N0YXRlKiwgSlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCShyZXZpc2lvbiAx
MDY4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRGVidWdnZXJBY3Rp
dmF0aW9uLmgiCiAjaW5jbHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdl
dHRlclNldHRlci5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRl
ICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpT
QVBJVmFsdWVXcmFwcGVyLmgiCkBAIC0xNDEsNiArMTQyLDggQEAgSlNHbG9iYWxEYXRhOjpKU0ds
b2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgICwga2V5d29yZHMoYWRvcHRQdHIobmV3IEtleXdv
cmRzKHRoaXMpKSkKICAgICAsIGludGVycHJldGVyKDApCiAgICAgLCBoZWFwKHRoaXMsIGhlYXBT
aXplKQorICAgICwganNBcnJheUNsYXNzSW5mbygmSlNBcnJheTo6c19pbmZvKQorICAgICwganNG
aW5hbE9iamVjdENsYXNzSW5mbygmSlNGaW5hbE9iamVjdDo6c19pbmZvKQogI2lmIEVOQUJMRShE
RkdfSklUKQogICAgICwgc2l6ZU9mTGFzdFNjcmF0Y2hCdWZmZXIoMCkKICNlbmRpZgpAQCAtMjE2
LDcgKzIxOSw5IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAg
ICBqaXRTdHVicyA9IGFkb3B0UHRyKG5ldyBKSVRUaHVua3ModGhpcykpOwogI2VuZGlmCiAKLSAg
ICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSh0aGlzLT5jYW5Vc2VKSVQoKSk7CisgICAgaW50ZXJw
cmV0ZXItPmluaXRpYWxpemUoJmxsaW50RGF0YSwgdGhpcy0+Y2FuVXNlSklUKCkpOworICAgIAor
ICAgIGluaXRpYWxpemVIb3N0Q2FsbFJldHVyblZhbHVlKCk7IC8vIFRoaXMgaXMgbmVlZGVkIHRv
IGNvbnZpbmNlIHRoZSBsaW5rZXIgbm90IHRvIGRyb3AgaG9zdCBjYWxsIHJldHVybiBzdXBwb3J0
LgogCiAgICAgaGVhcC5ub3RpZnlJc1NhZmVUb0NvbGxlY3QoKTsKIH0KSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lvbiAxMDY4MzQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsMTUgKzMwLDE2IEBACiAjZGVmaW5lIEpTR2xvYmFsRGF0YV9oCiAKICNp
bmNsdWRlICJDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgiCi0jaW5jbHVkZSAiSW50cmlu
c2ljLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRlICJFeGVjdXRh
YmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIlN0cm9uZy5oIgor
I2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAjaW5jbHVkZSAi
SlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk51bWVyaWNTdHJp
bmdzLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU3Ryb25nLmgiCiAj
aW5jbHVkZSAiVGVybWluYXRvci5oIgogI2luY2x1ZGUgIlRpbWVvdXRDaGVja2VyLmgiCiAjaW5j
bHVkZSAiV2Vha1JhbmRvbS5oIgpAQCAtNjUsNiArNjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKICAgICBjbGFzcyBL
ZXl3b3JkczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0
aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAgICBjbGFzcyBSZWdFeHBD
YWNoZTsKQEAgLTI0MSw2ICsyNDMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEhlYXAg
aGVhcDsKIAogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKKworICAgICAgICBjb25zdCBDbGFz
c0luZm8qIGNvbnN0IGpzQXJyYXlDbGFzc0luZm87CisgICAgICAgIGNvbnN0IENsYXNzSW5mbyog
Y29uc3QganNGaW5hbE9iamVjdENsYXNzSW5mbzsKKworICAgICAgICBMTEludDo6RGF0YSBsbGlu
dERhdGE7CisKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIGV4Y2Vw
dGlvbkxvY2F0aW9uOwogICAgICAgICBKU1ZhbHVlIGhvc3RDYWxsUmV0dXJuVmFsdWU7CkBAIC0z
NDYsNiArMzU0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjdW5kZWYgcmVnaXN0ZXJUeXBlZEFycmF5
RnVuY3Rpb24KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5
cGUsIFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUpOwogICAgICAgICBzdGF0aWMgSlNHbG9iYWxE
YXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwogICAgICAgICB2b2lkIGNyZWF0ZU5hdGl2
ZVRodW5rKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmgJKHJldmlzaW9uIDEwNjgzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3Mg
R2V0dGVyU2V0dGVyOwogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKKyAgICBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjsKICAg
ICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFJlZ0V4cENvbnN0cnVjdG9yOwpA
QCAtMzM2LDYgKzMzNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGFkZFN0YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiwgaW50IGNvdW50
KTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogRm9sZCByZXNldCBpbnRvIGluaXQu
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdChKU09iamVjdCogdGhpc1ZhbHVl
KTsKICAgICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEwNjgzNCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgR2V0dGVyU2V0dGVyOwog
ICAgIGNsYXNzIEhhc2hFbnRyeTsKICAgICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9uOworICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRCbG9jazsKICAgICBj
bGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CkBA
IC0yNjQsNiArMjY1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTT2JqZWN0KEpTR2xv
YmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9yYWdlKTsKIAog
ICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CisgICAgICAgIAogICAgICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIgYXNrIGFueSBvZiB0aGVz
ZSBxdWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25vd24gdG8gYmUgYSBKU09iamVjdC4K
ICAgICAgICAgdXNpbmcgSlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcjsKICAgICAgICAgdXNpbmcg
SlNDZWxsOjppc0dldHRlclNldHRlcjsKQEAgLTM3Nyw2ICszODAsOCBAQCBDT01QSUxFX0FTU0VS
VCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3ko
SlNDZWxsKik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgZXhwbGljaXQgSlNGaW5hbE9iamVjdChK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICAg
ICAgOiBKU09iamVjdChnbG9iYWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5lU3RvcmFnZSkKICAg
ICAgICAgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkocmV2aXNpb24gMTA2ODM0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCw2ICszOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSWRlbnRp
ZmllcjsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAKICAgICBjbGFzcyBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yIDogcHVibGljIEpTQ2VsbCB7
CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CkBAIC05Niw2ICs5Nyw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvcihFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5
RGF0YSwgc2l6ZV90IG51bUNhY2hlYWJsZVNsb3QpOwogCiAgICAgICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fY2FjaGVkU3RydWN0dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1N0cmluZy5oCShyZXZpc2lvbiAxMDY4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1N0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBA
CiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTU3RyaW5nOworICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEpTR2xvYmFs
RGF0YSopOwogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSopOwpAQCAtMjQw
LDYgKzI0MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENo
aWxkcmVuKEpTQ2VsbCosIFNsb3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBm
cmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCByZXNvbHZlUm9wZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAg
ICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlOChMQ2hhciopIGNvbnN0OwogICAgICAgICB2b2lk
IHJlc29sdmVSb3BlU2xvd0Nhc2UoVUNoYXIqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHJldmlzaW9uIDEwNjgzNCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKKwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXNxdWVyYWRlc0FzVW5k
ZWZpbmVkID0gMTsgLy8gV2ViQ29yZSB1c2VzIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgdG8gbWFr
ZSBkb2N1bWVudC5hbGwgdW5kZXRlY3RhYmxlLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJ
bXBsZW1lbnRzSGFzSW5zdGFuY2UgPSAxIDw8IDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVk
IE92ZXJyaWRlc0hhc0luc3RhbmNlID0gMSA8PCAyOwpAQCAtODcsNiArODksOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTZXRPbkZs
YWdzMSh1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnIDw9ICgxIDw8IDcpKTsgcmV0
dXJuIG1fZmxhZ3MgJiBmbGFnOyB9CiAgICAgICAgIGJvb2wgaXNTZXRPbkZsYWdzMih1bnNpZ25l
ZCBmbGFnKSBjb25zdCB7IEFTU0VSVChmbGFnID49ICgxIDw8IDgpKTsgcmV0dXJuIG1fZmxhZ3My
ICYgKGZsYWcgPj4gOCk7IH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYWx1ZS5jcHAJKHJldmlzaW9uIDEwNjgzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgSlNP
YmplY3QqIEpTVmFsdWU6OnN5bnRoZXNpemVQcm90b3R5cGUoRQogCiBjaGFyKiBKU1ZhbHVlOjpk
ZXNjcmlwdGlvbigpCiB7Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0gNjQ7CisgICAg
c3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0gMTI4OwogICAgIHN0YXRpYyBjaGFyIGRlc2NyaXB0
aW9uW3NpemVdOwogCiAgICAgaWYgKCEqdGhpcykKQEAgLTEyNywxNCArMTI3LDE0IEBAIGNoYXIq
IEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKICAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNp
emUsICJJbnQzMjogJWQiLCBhc0ludDMyKCkpOwogICAgIGVsc2UgaWYgKGlzRG91YmxlKCkpIHsK
ICNpZiBVU0UoSlNWQUxVRTY0KQotICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwg
IkRvdWJsZTogJWxmLCAlbHgiLCBhc0RvdWJsZSgpLCByZWludGVycHJldERvdWJsZVRvSW50cHRy
KGFzRG91YmxlKCkpKTsKKyAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3Vi
bGU6ICVseCwgJWxmIiwgcmVpbnRlcnByZXREb3VibGVUb0ludHB0cihhc0RvdWJsZSgpKSwgYXNE
b3VibGUoKSk7CiAjZWxzZQogICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBkb3VibGUgYXNE
b3VibGU7CiAgICAgICAgICAgICB1aW50MzJfdCBhc1R3b0ludDMyc1syXTsKICAgICAgICAgfSB1
OwogICAgICAgICB1LmFzRG91YmxlID0gYXNEb3VibGUoKTsKLSAgICAgICAgc25wcmludGYoZGVz
Y3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVsZiwgJTA4eDolMDh4IiwgYXNEb3VibGUoKSwgdS5h
c1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSk7CisgICAgICAgIHNucHJpbnRmKGRlc2Ny
aXB0aW9uLCBzaXplLCAiRG91YmxlOiAlMDh4OiUwOHgsICVsZiIsIHUuYXNUd29JbnQzMnNbMV0s
IHUuYXNUd29JbnQzMnNbMF0sIGFzRG91YmxlKCkpOwogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChp
c0NlbGwoKSkKICAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJDZWxsOiAlcCIs
IGFzQ2VsbCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFi
bGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEwNjgzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAg
KzM4LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogCiAgICAgY2xhc3MgSlNWYXJpYWJsZU9iamVj
dCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsK
KyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHB1Ymxp
YzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTA2ODM0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDYgKzUyLDEwIEBAIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElu
bGkKIAogdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7CiAKK2ludDMyX3QgZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9ySklUU29vbjsKKwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFm
dGVyV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVy
TG9uZ1dhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXpl
QW55dGltZVNvb247CkBAIC0xMzcsNiArMTQxLDEwIEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMo
KQogICAgIAogICAgIFNFVChtYXhpbXVtSW5saW5pbmdEZXB0aCwgNSk7CiAKKyAgICBTRVQoZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXAsICAgICAtMTAwKTsKKyAgICBTRVQo
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptaW4oKSk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckpJVFNvb24sICAgICAgICAgICAgLTEwMCk7CisKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCwgICAgIC0xMDAwKTsKICAgICBTRVQoZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAsIC01MDAwKTsKICAgICBTRVQo
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKQEAgLTE4NSw2ICsxOTMsOCBAQCB2b2lkIGlu
aXRpYWxpemVPcHRpb25zKCkKICAgICBpZiAoY3B1c1RvVXNlIDwgMSkKICAgICAgICAgY3B1c1Rv
VXNlID0gMTsKICAgICAKKyAgICBjcHVzVG9Vc2UgPSAxOworICAgIAogICAgIFNFVChudW1iZXJP
ZkdDTWFya2VycywgY3B1c1RvVXNlKTsKIAogICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JP
cHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxMDY4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEwIEBAIGV4dGVy
biB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHIKIAogZXh0ZXJuIHVuc2lnbmVkIG1h
eGltdW1JbmxpbmluZ0RlcHRoOyAvLyBEZXB0aCBvZiBpbmxpbmUgc3RhY2ssIHNvIDEgPSBubyBp
bmxpbmluZywgMiA9IG9uZSBsZXZlbCwgZXRjLgogCitleHRlcm4gaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBleHRlcm4gaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gMTA2ODM0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xv
YmFsRGF0YTsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU2NvcGVDaGFpbkl0
ZXJhdG9yOwogICAgIGNsYXNzIFNsb3RWaXNpdG9yOwogICAgIApAQCAtOTEsNiArOTIsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJ
bmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuOwogICAgIH07CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24g
MTA2ODM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIyLDcgKzMyMiw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjph
ZGRQcm9wZXJ0eVRyYW5zaXQKICAgICAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dQcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpOwogICAgICAgICByZXR1cm4gdHJhbnNpdGlvbjsKICAgICB9Ci0KKyAg
ICAKICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwgc3RydWN0
dXJlKTsKIAogICAgIHRyYW5zaXRpb24tPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uc2V0TWF5QmVO
dWxsKGdsb2JhbERhdGEsIHRyYW5zaXRpb24sIHN0cnVjdHVyZS0+bV9jYWNoZWRQcm90b3R5cGVD
aGFpbi5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAkocmV2aXNpb24gMTA2ODM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJv
cGVydHlOYW1lQXJyYXk7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhOwogICAgIGNs
YXNzIFN0cnVjdHVyZUNoYWluOwpAQCAtMTk2LDYgKzE5Nyw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZShKU0dsb2JhbERh
dGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYs
IGNvbnN0IENsYXNzSW5mbyopOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAg
ICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2
aXNpb24gMTA2ODM0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
Q2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTdHJ1Y3R1
cmU7CiAKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbiA6IHB1YmxpYyBKU0NlbGwgewpAQCAtNzQs
NiArNzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIFN0cnVjdHVyZUNoYWluKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiA+IG1fdmVjdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9JbmxpbmVBU00uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0lubGluZUFTTS5oCShyZXZpc2lvbiAxMDY4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0lubGluZUFTTS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw0ICs3MCwxMSBAQAogI2RlZmlu
ZSBISURFX1NZTUJPTChuYW1lKQogI2VuZGlmCiAKKy8vIEZJWE1FOiBmaWd1cmUgb3V0IGhvdyB0
aGlzIHdvcmtzIG9uIGFsbCB0aGUgcGxhdGZvcm1zLiBJIGtub3cgdGhhdAorLy8gb24gTGludXgs
IHRoZSBwcmVmZXJyZWQgZm9ybSBpcyAiLkxzdHVmZiIgYXMgb3Bwb3NlZCB0byAiTHN0dWZmIi4K
Ky8vIERvbid0IGtub3cgYWJvdXQgYW55IG9mIHRoZSBvdGhlcnMuCisjaWYgUExBVEZPUk0oTUFD
KQorI2RlZmluZSBMT0NBTF9MQUJFTF9TVFJJTkcobmFtZSkgIkwiICNuYW1lCisjZW5kaWYKKwog
I2VuZGlmIC8vIElubGluZUFTTV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bs
YXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9y
bS5oCShyZXZpc2lvbiAxMDY4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyMyw2ICs5MjMsMTggQEAKICNkZWZpbmUgRU5BQkxF
X0pJVCAxCiAjZW5kaWYKIAorLyogT24gc29tZSBvZiB0aGUgcGxhdGZvcm1zIHdoZXJlIHdlIGhh
dmUgYSBKSVQsIHdlIHdhbnQgdG8gYWxzbyBoYXZlIHRoZSAKKyAgIGxvdy1sZXZlbCBpbnRlcnBy
ZXRlci4gKi8KKyNpZiAhZGVmaW5lZChFTkFCTEVfTExJTlQpICYmIEVOQUJMRShKSVQpICYmIE9T
KERBUldJTikgJiYgKENQVShYODYpIHx8IENQVShBUk1fVEhVTUIyKSkgJiYgVVNFKEpTVkFMVUUz
Ml82NCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyNlbmRpZgorCisvKiBJZiB3ZSBoYXZlIExM
SW50IGVuYWJsZWQgYW5kIHRoZSBKSVQgZW5hYmxlZCwgd2UgYWxzbyBlbmFibGUgT1NSaW5nIGZy
b20KKyAgIExMSW50IHRvIHRoZSBKSVQuICovCisjaWYgIWRlZmluZWQoRU5BQkxFX0xMSU5UX09T
Ul9UT19KSVQpICYmIEVOQUJMRShKSVQpICYmIEVOQUJMRShMTElOVCkKKyNkZWZpbmUgRU5BQkxF
X0xMSU5UX09TUl9UT19KSVQgMQorI2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfREZHX0pJ
VCkgJiYgRU5BQkxFKEpJVCkKIC8qIEVuYWJsZSB0aGUgREZHIEpJVCBvbiBYODYgYW5kIFg4Nl82
NC4gIE9ubHkgdGVzdGVkIG9uIE1hYyBhbmQgR05VL0xpbnV4LiAqLwogI2lmIChDUFUoWDg2KSB8
fCBDUFUoWDg2XzY0KSkgJiYgKFBMQVRGT1JNKE1BQykgfHwgT1MoTElOVVgpKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCShyZXZpc2lv
biAxMDY4MzQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlz
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4IEBAIHB1YmxpYzoKIAogICAgIGl0ZXJh
dG9yIGJlZ2luKCk7CiAgICAgaXRlcmF0b3IgZW5kKCk7CisgICAgCisgICAgYm9vbCBpc0VtcHR5
KCkgeyByZXR1cm4gYmVnaW4oKSA9PSBlbmQoKTsgfQogCiBwcml2YXRlOgogICAgIFJhd05vZGUg
bV9oZWFkU2VudGluZWw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3Ry
aW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9T
dHJpbmdJbXBsLmgJKHJldmlzaW9uIDEwNjgzNCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgdHlw
ZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlN0cmluZyAqIENGU3RyaQogLy8gTGFuZGluZyB0aGUgZmls
ZSBtb3ZlcyBpbiBvbmUgcGF0Y2gsIHdpbGwgZm9sbG93IG9uIHdpdGggcGF0Y2hlcyB0byBjaGFu
Z2UgdGhlIG5hbWVzcGFjZXMuCiBuYW1lc3BhY2UgSlNDIHsKIHN0cnVjdCBJZGVudGlmaWVyQ1N0
cmluZ1RyYW5zbGF0b3I7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gc3RydWN0IElkZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjsKIHN0cnVj
dCBJZGVudGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9yOwogfQpAQCAtNzIsNyArNzMsOCBA
QCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICBmcmllbmQgc3RydWN0IFdURjo6U3Vic3RyaW5nVHJh
bnNsYXRvcjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6VUNoYXJCdWZmZXJUcmFuc2xhdG9yOwog
ICAgIGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmdJbXBsOwotCisgICAgZnJpZW5kIGNsYXNzIEpT
Qzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogcHJpdmF0ZToKICAgICBlbnVtIEJ1ZmZl
ck93bmVyc2hpcCB7CiAgICAgICAgIEJ1ZmZlckludGVybmFsLApJbmRleDogU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2
aXNpb24gMTA2ODM0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDEtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxl
LmNvbT4KKworICAgICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS8xMDA3OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEg
bmV3IGRpcmVjdG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4KKyAgICAgICAgCisgICAgICAgIE5vIG5l
dyB0ZXN0cyBiZWNhdXNlIG5vIGJlaGF2aW9yIGNoYW5nZWQuCisKKyAgICAgICAgKiBDTWFrZUxp
c3RzLnR4dDoKKwogMjAxMi0wMi0wNiAgQ2FpbyBNYXJjZWxvIGRlIE9saXZlaXJhIEZpbGhvICA8
Y2Fpby5vbGl2ZWlyYUBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFByb3ZpZGUgbW9yZSBhdHRy
aWJ1dGUgbWV0aG9kcyBpbiBFbGVtZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMTA2ODM0KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTc0LDYgKzc0LDcgQEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAg
ICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIKKyAgICAi
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
cGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAgICAgIiR7SkFW
QVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjgzNCkK
KysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMTItMDEtMjYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAg
ICBKU0Mgc2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8x
MDA3OTY5ND4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBDaGFuZ2VkIEVGTCdzIGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9yeSBp
biBKYXZhU2NyaXB0Q29yZS4KKyAgICAgICAgCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisK
IDIwMTItMDItMDYgIFJvYmluIENhbyAgPHJvYmluLmNhb0B0b3JjaG1vYmlsZS5jb20uY24+CiAK
ICAgICAgICAgW0JsYWNrQmVycnldIFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgaW4gQmFja2luZ1N0
b3JlCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNjgzNCkKKysrIFNvdXJjZS9X
ZWJLaXQvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgU0VU
KFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9k
ZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyIgogICAgICIk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxp
bnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAgICAgIiR7SkFWQVNDUklQ
VENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUi
CkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAxMDY4MzQpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNSBAQAorMjAxMi0wMS0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgor
CisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIENoYW5nZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUgYSBuZXcgZGly
ZWN0b3J5IGluIEphdmFTY3JpcHRDb3JlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZs
L0NNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAyLTA2ICBFcmljIFNlaWRlbCAgPGVyaWNAd2Via2l0
Lm9yZz4KIAogICAgICAgICB3ZWJraXQtcGF0Y2ggYXBwbHktZnJvbS1idWcgc2hvdWxkIGJlIGFi
bGUgdG8gYXBwbHkgbm9uLXJldmlld2VkIHBhdGNoZXMKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2VmbC9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJl
ZS9lZmwvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNjgzNCkKKysrIFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNjgsMTAgKzY4LDEy
IEBAIFNFVChEdW1wUmVuZGVyVHJlZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0FQSQogICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9hc3NlbWJsZXIKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNv
ZGUKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGZnCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2hlYXAKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIKICAgICAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vaml0CisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50CiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vRm9yd2FyZGluZ0hlYWRlcnMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vd3RmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125735</attachid>
            <date>2012-02-06 17:18:58 -0800</date>
            <delta_ts>2012-02-14 11:19:01 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_92.diff</filename>
            <type>text/plain</type>
            <size>502998</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA2ODgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3MiBA
QAorMjAxMi0wMi0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcmk6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmVDb21tb24udnNwcm9wczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAg
ICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJl
c3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDogQWRkZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToKKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAgIChDYWxsTGlu
a1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2sp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6dW5saW5rQ2FsbHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0luY29t
aW5nQ2FsbHMpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToK
KyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJs
b2NrOjpqaXRDb21waWxlSW1wbCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENv
bXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdP
cHBvcnR1bml0eSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiYXNl
bGluZVZlcnNpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpbmtJbmNvbWluZ0NhbGwp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNP
cHRpbWl6ZWRSZXBsYWNlbWVudCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkUHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRMTEludENh
bGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVzb2x2ZUlu
Zm8pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZv
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VTbG93
Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y291bGRUYWtlU2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZVNwZWNpYWxGYXN0Q2FzZSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VBbnlTbG93Q2FzZSk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YWRkRnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZG9udEpJVEFueXRpbWVTb29uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRB
ZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0U29vbik6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGxpbnRFeGVjdXRlQ291bnRlcik6CisgICAgICAgIChQcm9ncmFt
Q29kZUJsb2NrKToKKyAgICAgICAgKEV2YWxDb2RlQmxvY2spOgorICAgICAgICAoRnVuY3Rpb25D
b2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAg
ICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6R2V0
QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6Ondhc1NlZW5JbkpJVCk6
CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlv
bi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246Okluc3RydWN0
aW9uKToKKyAgICAgICAgKEluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludENh
bGxMaW5rSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkxMSW50
Q2FsbExpbmtJbmZvOjpMTEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChMTEludENhbGxMaW5r
SW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjp+TExJbnRDYWxsTGlua0lu
Zm8pOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6aXNMaW5rZWQpOgorICAgICAg
ICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6dW5saW5rKToKKyAgICAgICAgKiBieXRlY29kZS9N
ZXRob2RDYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZENhbGxMaW5rU3Rh
dHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRl
RnJvbUxMSW50KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaDoKKyAgICAg
ICAgKFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENh
dGNoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9E
RkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToK
KyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6Y29sbGVjdCk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAo
SlNDOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVy
L0NhbGxGcmFtZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0
YXRlOjpjdXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53
aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRl
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChJbnRlcnByZXRlcik6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGUpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6ZW5hYmxlZCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxl
Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoUmVnaXN0ZXJGaWxlKToKKyAgICAgICAgKiBq
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpOgorICAgICAgICAq
IGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6aW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJuVmFsdWUpOgorICAgICAgICAqIGppdC9K
SVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAg
KEpTQzo6SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpJVENvZGUpOgorICAg
ICAgICAoSlNDOjpKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENv
ZGU6OkpJVENvZGUpOgorICAgICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6
aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rp
b25JZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6OmppdFRocm93KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAg
ICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgIChKU0MpOgorICAgICAgICAq
IGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAg
KiBsbGludC9MTEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6
OkRhdGEpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxs
aW50L0xMSW50RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6
CisgICAgICAgIChEYXRhKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbklu
c3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAg
ICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAg
IChKU0M6OkxMSW50OjpnZXRFdmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50Ojpn
ZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVy
cHJldGVyVGhyb3dJbkNhbGxlcik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93
Rm9yVGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cp
OgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xM
SW50RXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6
CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChMTElu
dCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxM
SU5UX0hFTFBFUl9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9s
b2d1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoSlNDOjpM
TEludDo6ZW50cnlPU1IpOgorICAgICAgICAoSlNDOjpMTEludDo6cmVzb2x2ZUdsb2JhbCk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpnZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpoYW5k
bGVIb3N0Q2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAo
SlNDOjpMTEludDo6Z2VuZXJpY0NhbGwpOgorICAgICAgICAqIGxsaW50L0xMSW50SGVscGVycy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExM
SW50T2Zmc2V0c0V4dHJhY3Rvcik6CisgICAgICAgIChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rv
cjo6ZHVtbXkpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3Mu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2Fs
bEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JD
b25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0
aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50
OjpmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkxMSW50OjpldmFsRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxM
SW50Ojpwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgICogbGxpbnQvTExJbnRU
aHVua3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoTExJbnQpOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRlZC4KKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtOiBBZGRlZC4KKyAg
ICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L2FzbS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc3QucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVh
c20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGlu
ZWFzbS9pbnN0cnVjdGlvbnMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb2Zmc2V0
X2V4dHJhY3Rvcl9jb25zdGFudHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb2Zm
c2V0cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9vcHQucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9zZWxmX2hhc2gucmI6
IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2V0dGluZ3MucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L3g4Ni5yYjogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5k
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgor
ICAgICAgICAoQ29tbW9uU2xvd1BhdGhzKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUu
Y3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2
YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6
OnNhbXBsaW5nRGVzY3JpcHRpb24pOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y29t
cGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBp
bGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1Y3Qp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1
Y3RJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoRXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAoUHJvZ3JhbUV4ZWN1dGFi
bGUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGlv
bkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwcmVwYXJl
Rm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Fj
dGl2YXRpb246OnRlYXJPZmYpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKEpTQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDZWxsKToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0
YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNPYmplY3QpOgorICAgICAgICAoSlNGaW5hbE9iamVjdCk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlw
ZUluZm8uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChUeXBlSW5mbyk6CisgICAgICAgICog
cnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6ZGVzY3JpcHRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTVmFyaWFibGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5j
cHA6CisgICAgICAgIChPcHRpb25zKToKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6
ZU9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAoT3B0aW9u
cyk6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoU2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoU3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAqIHd0Zi9JbmxpbmVBU00uaDoK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvU2VudGluZWxMaW5rZWRM
aXN0Lmg6CisgICAgICAgIChTZW50aW5lbExpbmtlZExpc3QpOgorICAgICAgICAoV1RGOjpTZW50
aW5lbExpbmtlZExpc3Q6OmlzRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwu
aDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChTdHJpbmdJbXBsKToKKwogMjAxMi0wMi0wNiAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFZhbHVlVG9OdW1iZXIg
YW5kIFZhbHVlVG9Eb3VibGUgbm9kZXMgZG9uJ3QgZG8gYW55dGhpbmcgYW5kIHNob3VsZCBiZSBy
ZW1vdmVkCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAx
MDY4ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTExLDYgKzExLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX0lOQ0xVREVfRElSRUNU
T1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9q
aXQiCisgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L3BhcnNlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgog
ICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZSIKQEAgLTk2LDYgKzk3LDcgQEAgU0VU
KEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3Bw
CiAKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKyAgICBqaXQvSG9zdENhbGxSZXR1
cm5WYWx1ZS5jcHAKICAgICBqaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAogICAgIGppdC9KSVRB
cml0aG1ldGljLmNwcAogICAgIGppdC9KSVRDYWxsMzJfNjQuY3BwCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAxMDY4ODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAg
amF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdCBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCisJLUkkKHNy
Y2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
IFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZp
c2lvbiAxMDY4ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBcCisJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBcCkBAIC0xMDIsNiArMTAzLDcgQEAgamF2YXNj
cmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RydWN0aW9uLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUu
Y3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggXAorCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGluZUluZm8uaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8uaCBcCkBAIC0yODEsNiArMjgzLDgg
QEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Db21wYWN0SklUQ29kZU1hcC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1
dGFibGVBbGxvY2F0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3IuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVy
blZhbHVlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZh
bHVlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNw
cCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIFwKQEAgLTMwNCw2ICszMDgs
NyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9U
aHVua0dlbmVyYXRvcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2Vu
ZXJhdG9ycy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4zMi9zdGRib29sLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vcy13aW4zMi9zdGRpbnQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9BU1RCdWlsZGVyLmggXApAQCAtMzU0LDYgKzM1OSw3IEBAIGphdmFzY3JpcHRjb3JlX3Nv
dXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21tb25TbG93UGF0aHMuaCBcCkBAIC0zODIsNiArMzg4LDcgQEAgamF2YXNjcmlw
dGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0
aW9uSGVscGVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIFwKKwlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBcCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHJldmlzaW9uIDEwNjg4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHdvcmtpbmcgY29w
eSkKQEAgLTIwLDYgKzIwLDcgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9k
ZWJ1Z2dlciBcCiAgICAgJCRTT1VSQ0VfRElSL2ludGVycHJldGVyIFwKICAgICAkJFNPVVJDRV9E
SVIvaml0IFwKKyAgICAkJFNPVVJDRV9ESVIvbGxpbnQgXAogICAgICQkU09VUkNFX0RJUi9wYXJz
ZXIgXAogICAgICQkU09VUkNFX0RJUi9wcm9maWxlciBcCiAgICAgJCRTT1VSQ0VfRElSL3J1bnRp
bWUgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwNjg4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcs
NiArMTA3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNw
cCBcCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgXAogICAgIGpp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBcCisgICAgaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUu
Y3BwIFwKICAgICBqaXQvSklUQXJpdGhtZXRpYy5jcHAgXAogICAgIGppdC9KSVRBcml0aG1ldGlj
MzJfNjQuY3BwIFwKICAgICBqaXQvSklUQ2FsbC5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9u
IDEwNjg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0x
NzU4LDYgKzE3NTgsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5cLi5caml0XEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIgorCQkJCT4KKwkJCTwv
RmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcSklULmNwcCIKIAkJ
CQk+CiAJCQk8L0ZpbGU+CkBAIC0xODQzLDYgKzE4NDcsMTQgQEAKIAkJCTwvRmlsZT4KIAkJPC9G
aWx0ZXI+CiAJCTxGaWx0ZXIKKwkJCU5hbWU9ImxsaW50IgorCQkJPgorCQkJPEZpbGUKKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXC4uXGxsaW50XExMSW50RGF0YS5oIgorCQkJCT4KKwkJCTwvRmlsZT4K
KwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKIAkJCU5hbWU9ImludGVycHJldGVyIgogCQkJPgogCQkJ
PEZpbGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMJKHJldmlzaW9uIDEwNjg4MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcg
QEAKIAk+CiAJPFRvb2wKIAkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJQWRkaXRpb25hbElu
Y2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZh
U2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4v
cGFyc2VyLzsuLi8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL2RmZy87Li4vLi4vaml0LzsuLi8uLi9y
dW50aW1lLzsuLi8uLi90b29scy87Li4vLi4vYnl0ZWNvZGUvOy4uLy4uL2ludGVycHJldGVyLzsu
Li8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fzc2VtYmxlci87Li4vLi4vZGVidWdnZXIv
Oy4uLy4uL2hlYXAvOyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlJnF1b3Q7OyZx
dW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmll
c0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OyIKKwkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxE
ZXJpdmVkU291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8u
Li9ieXRlY29tcGlsZXIvOy4uLy4uL2RmZy87Li4vLi4vaml0LzsuLi8uLi9sbGludC87Li4vLi4v
cnVudGltZS87Li4vLi4vdG9vbHMvOy4uLy4uL2J5dGVjb2RlLzsuLi8uLi9pbnRlcnByZXRlci87
Li4vLi4vd3RmLzsuLi8uLi9wcm9maWxlcjsuLi8uLi9hc3NlbWJsZXIvOy4uLy4uL2RlYnVnZ2Vy
LzsuLi8uLi9oZWFwLzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90Ozsm
cXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJh
dGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJp
ZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDsiCiAJCVByZXByb2Nlc3NvckRlZmluaXRpb25z
PSJfX1NURF9DIgogCQlGb3JjZWRJbmNsdWRlRmlsZXM9IklDVVZlcnNpb24uaCIKIAkvPgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9jb3B5LWZpbGVzLmNtZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL2NvcHktZmlsZXMuY21kCShyZXZp
c2lvbiAxMDY4ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qL0phdmFTY3JpcHRDb3JlL2NvcHktZmlsZXMuY21kCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2
ICs0Myw3IEBAIGZvciAlJWQgaW4gKAogICAgIGRlYnVnZ2VyCiAgICAgaW50ZXJwcmV0ZXIKICAg
ICBqaXQKKyAgICBsbGludAogICAgIHBhcnNlcgogICAgIHByb2ZpbGVyCiAgICAgcnVudGltZQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEwNjg4MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsMTUgQEAKIAlvYmplY3RzID0gewogCiAvKiBC
ZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBC
RkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdl
dDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIg
LyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50
IE9mZnNldHMiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwQUExNEJBN0ZEOTAw
QkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKKwkJCSk7CisJCQluYW1lID0g
IkxMSW50IE9mZnNldHMiOworCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJ
fTsKIAkJNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCIC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3Qg
PSA2NUZCM0Y3NzA5RDExRUJEMDBGNDlERUIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkRlcml2ZWQgU291cmNlcyIgKi87CkBAIC0xNCw2ICsyMyw5
IEBACiAJCQkJNjVGQjNGNjUwOUQxMUU5MTAwRjQ5REVCIC8qIEdlbmVyYXRlIERlcml2ZWQgU291
cmNlcyAqLywKIAkJCQk1RDM1REVFMTBDN0MxNDBCMDA4NjQ4QjIgLyogR2VuZXJhdGUgRFRyYWNl
IGhlYWRlciAqLywKIAkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjQxNEJB
ODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOwogCQkJbmFtZSA9
ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsK
IAkJfTsKQEAgLTQ4LDYgKzYwLDEwIEBACiAJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBU
aHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJp
Y3Rpb25WZXJpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTBCQ0Q4MzU3MTQ4NTg0NTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4
NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyog
U2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi87IH07CisJ
CTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUIxNEJDRjQ2
MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi87IH07CisJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4
NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTcx
NEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBC
ODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBI
YW5kbGVySW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBQTE0
QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01OCw5ICs3NCwxMyBAQAogCQkwRjBC
ODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCMzE0QkNGODVFMDA4ODVC
NEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJl
c29sdmVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCOTE0QkNG
OTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIw
MDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEZDNDVBMTRCRDE1RjUw
MEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2Fs
bExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNUYxNUQxNEI3QTcz
QTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTZENzI2MTQyQzM5QzAwMENGNzg0QSAvKiBCaXRW
ZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCTBGMjFD
MjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVRE
cml2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0ExNEJFNzI3MzAw
QURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNw
ZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktp
bmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkw
RjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAw
QURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjI0MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vh
a1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2
ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjJDNTU2RjE0NzM4RjMxMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkUxNDczOEYyRTAwMTIx
RTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjJDNTU3MDE0NzM4RjM1MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nr
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJD
NTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi87IH07CkBAIC03MSw2
ICs5MSwxOSBAQAogCQkwRjQzMTczODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQzMTcz
NjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODMx
NEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJ
VEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJ
bnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTQxNEJB
N0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRI
ZWxwZXJzLmNwcCAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJfRkxBR1MgPSAiLVduby11bnVzZWQt
cGFyYW1ldGVyIjsgfTsgfTsKKwkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVs
cGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0
NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3
MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAgKi87IH07CisJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBM
TEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAg
Ki87IH07CisJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzUxNEJCQjE2
OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2Zm
bGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4
MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM3MTRCQkIxNjkwMEJG
RTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0QxNEJCQjE3
RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dM
ZXZlbEludGVycHJldGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRTE0QkJC
M0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLzsgfTsKKwkJMEY0NjgwRDMxNEJCRDE2NzAw
QkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQ0MTRC
QkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAv
KiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLzsgfTsKKwkJMEY0NjgwRDUxNEJCRDI0QjAwQkZF
MjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJl
dHVyblZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY1NUYwRjQxNEQxMDYzOTAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NUYwRjExNEQxMDYzNjAw
QUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovOyB9OwogCQkwRjU1RjBGNTE0RDEwNjNDMDBBQzc2
NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVGMDhDRjE0NkM3
NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8q
IFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwpAQCAtMzg5LDcgKzQyMiw3IEBACiAJCTg2Qjk5QUUzMTE3RTU3ODEw
MERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUUxMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkJC
MDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRTEzOEUzODFCMDA1NjcwMkYgLyog
REZHUmVwYXRjaC5jcHAgKi87IH07CiAJCTg2QkIwOUMxMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdS
ZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5oICovOyB9OwotCQk4NkMzNkVF
QTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBN
YWNyb0Fzc2VtYmxlci5oICovOyB9OworCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFj
cm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzU2OEUwMTFBMjEz
RUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERDExQTIxM0VFMDAwN0Y3RjAgLyogTWFj
cm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9OwogCQk4NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyog
TWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBT
LmggKi87IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjEx
QTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICovOyB9OwpAQCAtNzU4LDYgKzc5MSwy
MCBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQ
QlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJv
eHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJv
amVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJp
bmcgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gIkxMSW50IE9m
ZnNldHMiOworCQl9OworCQkwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29u
dGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0
ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0Njgw
OEUxNEJBN0U1RTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKwkJfTsKIAkJMTQxMjE0QkUwQTQ5MTkwRTAwNDgwMjU1IC8qIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRh
aW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAq
LzsKQEAgLTgwMyw2ICs4NTAsMTUgQEAKIC8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJ
MEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBC
WENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owor
CQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEvOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9
IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMTsKKwkJfTsKIAkJNURCQjE1MTExMzFEMEIxMzAwNTZBRDM2IC8qIENvcHkgU3Vw
cG9ydCBTY3JpcHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOwogCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMTI7CkBAIC04NDMsNiArODk5LDEwIEBACiAJCTBCQUM5NDlFMTMz
ODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJDRDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBv
cmFyeUNoYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhcnlD
aGFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAw
NjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4
Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMuY3BwOyBwYXRoID0gbGxp
bnQvTExJbnRFbnRyeXBvaW50cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
MEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RW50cnlwb2ludHMuaDsgcGF0aCA9IGxsaW50L0xM
SW50RW50cnlwb2ludHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTcx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IExMSW50VGh1bmtzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1
QjRGIC8qIExMSW50VGh1bmtzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExM
SW50VGh1bmtzLmg7IHBhdGggPSBsbGludC9MTEludFRodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNz
aW9uUmFuZ2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Np
b25SYW5nZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg1Myw5ICs5MTMs
MTMgQEAKIAkJMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZXRob2RDYWxsTGlua0luZm8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8q
IEdsb2JhbFJlc29sdmVJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEds
b2JhbFJlc29sdmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I4
MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29k
ZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBGQzQ1ODE0QkQxNUYx
MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTExJbnRDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25TbG93UGF0aHMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaXRWZWN0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyog
SklURHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVERyaXZlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIg
LyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGlvbkhhcm5lc3MuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2Rl
Q29udmVudGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVD
b252ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI0MkRBNTEzRjNC
MUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERGR0NvZGVCbG9ja3Mu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjJDNTU2RTE0NzM4RjJFMDAxMjFF
NEYgLyogREZHQ29kZUJsb2Nrcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
RkdDb2RlQmxvY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04NjYsNiArOTMw
LDIwIEBACiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5kbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRF
eGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEV4
Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA4MDE0QkE1
NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKSVRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNo
LW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0
c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMEY0Njgw
OUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuY3BwOyBwYXRoID0gbGxpbnQv
TExJbnRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0Njgw
OUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuaDsgcGF0aCA9IGxsaW50L0xMSW50RXhj
ZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RjE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IExMSW50SGVscGVycy5jcHA7IHBhdGggPSBsbGludC9MTEludEhlbHBlcnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIg
LyogTExJbnRIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50
SGVscGVycy5oOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRPZmZz
ZXRzRXh0cmFjdG9yLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAv
KiBMTEludENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENv
bW1vbi5oOyBwYXRoID0gbGxpbnQvTExJbnRDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludE9mZmxpbmVBc21Db25m
aWcuaDsgcGF0aCA9IGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRl
cnByZXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMb3dMZXZl
bEludGVycHJldGVyLmNwcDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyog
TG93TGV2ZWxJbnRlcnByZXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBM
b3dMZXZlbEludGVycHJldGVyLmg7IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAv
KiBMTEludERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJ
bnREYXRhLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnREYXRhLmg7IHBhdGggPSBsbGludC9M
TEludERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwRDAxNEJCQzVG
ODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVy
blZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJu
VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NUYwRjExNEQxMDYzNjAw
QUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQWJzdHJhY3RQQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTVG
MEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEFic3RyYWN0UEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5dGVDb2RlQ2FjaGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNvZGVDYWNoZS5oOyBwYXRoID0gZGZnL0RG
R0J5dGVDb2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE1OTIsNiAr
MTY3MCwxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhDMTRCQTdFNUUw
MEJGRTI3MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxk
UGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJ
CQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJ
CTE0MTIxMTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0g
UEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OwpAQCAtMTY1MCw2ICsxNzM1LDcgQEAKIAkJCQkxNDEyMTEyMDBBNDg3OTNDMDA0ODAyNTUgLyog
bWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywK
IAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2
ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0x
Njc3LDYgKzE3NjMsNyBAQAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2Ny
aXB0Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2Mu
Y3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLywKKwkJ
CQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8sCiAJCQkJMTQzMkVCRDcwQTM0
Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyog
YXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAq
LywKQEAgLTE3MTYsNiArMTgwMywyOCBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMg
PSAwOwogCQl9OworCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8gPSB7CisJ
CQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTBGMEI4Mzk1MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLywKKwkJCQkwRjBCODM5NjE0QkNGNDVB
MDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovLAorCQkJCTBGMEI4Mzk3MTRCQ0Y0NUEw
MDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8sCisJCQkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1
QjRGIC8qIExMSW50VGh1bmtzLmggKi8sCisJCQkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8q
IExMSW50RGF0YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50
RGF0YS5oICovLAorCQkJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5o
ICovLAorCQkJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25m
aWcuaCAqLywKKwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnBy
ZXRlci5jcHAgKi8sCisJCQkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50
ZXJwcmV0ZXIuaCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNl
cHRpb25zLmNwcCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNl
cHRpb25zLmggKi8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVy
cy5jcHAgKi8sCisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5o
ICovLAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGludDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3MjYwMDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xNzUwLDYgKzE4NTksOCBA
QAogCQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkgLyogaml0ICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyog
SG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcy
IC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUy
NzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyog
Q29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTIxNzksNiArMjI5MCw4IEBACiAJCTdFRjZFMEJC
MEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNp
YWxpemF0aW9uS2luZC5oICovLAorCQkJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVj
dXRpb25IYXJuZXNzLmggKi8sCiAJCQkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1v
blNsb3dQYXRocy5oICovLAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0
LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLApA
QCAtMjU1Myw2ICsyNjY2LDggQEAKIAkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVj
b2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIx
QzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovLAorCQkJCTBG
MEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovLAogCQkJCTBG
OTMzMjkzMTRDQTdEQzEwMDg1RjNDNiAvKiBDYWxsTGlua1N0YXR1cy5jcHAgKi8sCiAJCQkJMEY5
MzMyOTQxNENBN0RDMTAwODVGM0M2IC8qIENhbGxMaW5rU3RhdHVzLmggKi8sCiAJCQkJMEY5MzMy
OTUxNENBN0RDMTAwODVGM0M2IC8qIEdldEJ5SWRTdGF0dXMuY3BwICovLApAQCAtMzEwNCw3ICsz
MjE5LDE2IEBACiAJCQkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRh
eENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVERTM3RCAv
KiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEEzMTRCQTdGOEQw
MEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEE1
MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
NDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjQ2ODBDQTE0QkJCMTZDMDBCRkUyNzIgLyogTExJbnRDb21tb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGNDY4MENCMTRCQkIxNzIwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25m
aWcuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENEMTRCQkIxN0QwMEJGRTI3MiAvKiBMb3dM
ZXZlbEludGVycHJldGVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBEMzE0QkJEMTY3MDBC
RkUyNzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBENTE0QkJEMjRC
MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYw
QjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICov
LAorCQkJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9u
UmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLywKQEAgLTMxMTMsNyArMzIzNywxMSBAQAogCQkJCTBG
MEI4M0I1MTRCQ0Y4NjIwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJz
ICovLAogCQkJCTBGMEI4M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1
cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBGQzQ1QTE0
QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMjFDMjdDMTRCRTcyNzYwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8q
IEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0IyOTRBMTRDM0NE
MjkwMDdDM0RCMSAvKiBERkdDQ2FsbEhlbHBlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0Iy
OTRCMTRDM0NEMkYwMDdDM0RCMSAvKiBERkdDYXBhYmlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTBGN0IyOTRDMTRDM0NENDMwMDdDM0RCMSAvKiBERkdCeXRlQ29kZUNhY2hlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTMxMzQsNiArMzI2MiwyNCBAQAogLyogRW5kIFBCWEhlYWRlcnNCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYTmF0aXZlVGFyZ2V0IHNlY3Rpb24gKi8KKwkJ
MEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9
IHsKKwkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3Qg
PSAwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIgKi87CisJCQlidWls
ZFBoYXNlcyA9ICgKKwkJCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLywK
KwkJCQkwRjQ2ODA4QzE0QkE3RTVFMDBCRkUyNzIgLyogRnJhbWV3b3JrcyAqLywKKwkJCQkwRjQ2
ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovLAorCQkJKTsKKwkJCWJ1aWxkUnVs
ZXMgPSAoCisJCQkpOworCQkJZGVwZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4MEIyMTRCQTgxMTUw
MEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovLAorCQkJKTsKKwkJCW5hbWUgPSBKU0NM
TEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0TmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKwkJCXByb2R1Y3RSZWZlcmVuY2UgPSAwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIg
LyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovOworCQkJcHJvZHVjdFR5cGUgPSAiY29tLmFw
cGxlLnByb2R1Y3QtdHlwZS50b29sIjsKKwkJfTsKIAkJMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1
IC8qIG1pbmlkb20gKi8gPSB7CiAJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CiAJCQlidWlsZENv
bmZpZ3VyYXRpb25MaXN0ID0gMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAqLzsKQEAgLTMyNjAs
MTEgKzM0MDYsMjkgQEAKIAkJCQkxNEJENTlCRTBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAq
LywKIAkJCQk5MzJGNUJEQTA4MjJBMUM3MDA3MzY5NzUgLyoganNjICovLAogCQkJCTY1MTEyMkY3
MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4MDhFMTRCQTdFNUUw
MEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCisJCQkJMEY0NjgwQTkxNEJB
N0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8sCiAJCQkpOwogCQl9OwogLyogRW5kIFBC
WFByb2plY3Qgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ug
c2VjdGlvbiAqLworCQkwRjQ2ODBBQTE0QkE3RkQ5MDBCRkUyNzIgLyogR2VuZXJhdGUgRGVyaXZl
ZCBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCWlu
cHV0UGF0aHMgPSAoCisJCQkJIiQoU1JDUk9PVCkvbGxpbnQvTG93TGV2ZWxBc3NlbWJsZXIuYXNt
IiwKKwkJCSk7CisJCQluYW1lID0gIkdlbmVyYXRlIERlcml2ZWQgU291cmNlcyI7CisJCQlvdXRw
dXRQYXRocyA9ICgKKwkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cy9MTElu
dERlc2lyZWRPZmZzZXRzLmgiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0g
Im1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9cIlxuXG4vdXNy
L2Jpbi9lbnYgcnVieSBcIiR7U1JDUk9PVH0vb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0
cmFjdG9yLnJiXCIgXCIke1NSQ1JPT1R9L2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtXCIg
XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMu
aFwiXG4iOworCQl9OwogCQkzNzEzRjAxNDE0MjkwNTI0MDAzNjM4N0YgLyogQ2hlY2sgRm9yIElu
YXBwcm9wcmlhdGUgT2JqZWN0aXZlLUMgQ2xhc3MgTmFtZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhT
aGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpA
QCAtMzM3MCw3ICszNTM0LDcgQEAKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7Ci0JCQlzaGVsbFNjcmlwdCA9
ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9kb2NzXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlXCJcblxuL2Jpbi9sbiAtc2ZoIFwiJHtTUkNST09UfVwiIEphdmFTY3Jp
cHRDb3JlXG5leHBvcnQgSmF2YVNjcmlwdENvcmU9XCJKYXZhU2NyaXB0Q29yZVwiXG5leHBvcnQg
QlVJTFRfUFJPRFVDVFNfRElSPVwiLi4vLi5cIlxuXG5tYWtlIC0tbm8tYnVpbHRpbi1ydWxlcyAt
ZiBcIkphdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2VcIiAtaiBgL3Vzci9zYmluL3N5
c2N0bCAtbiBody5uY3B1YFxuIjsKKwkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlM
VF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL2RvY3NcIlxuY2Qg
XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmVcIlxu
XG4vYmluL2xuIC1zZmggXCIke1NSQ1JPT1R9XCIgSmF2YVNjcmlwdENvcmVcbmV4cG9ydCBKYXZh
U2NyaXB0Q29yZT1cIkphdmFTY3JpcHRDb3JlXCJcbmV4cG9ydCBCVUlMVF9QUk9EVUNUU19ESVI9
XCIuLi8uLlwiXG5cbm1ha2UgLS1uby1idWlsdGluLXJ1bGVzIC1mIFwiSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNyL3NiaW4vc3lzY3RsIC1uIGh3Lm5jcHVgXG5c
bi91c3IvYmluL2VudiBydWJ5IEphdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXNtLnJiIEphdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtICR7QlVJTFRfUFJPRFVDVFNf
RElSfS9KU0NMTEludE9mZnNldHNFeHRyYWN0b3IgTExJbnRBc3NlbWJseS5oXG4iOwogCQl9Owog
CQk5MzE5NTg2QjA5RDlGOTFBMDBBNTZGRDQgLyogQ2hlY2sgRm9yIEdsb2JhbCBJbml0aWFsaXpl
cnMgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CkBAIC0zNDA1LDYg
KzM1NjksMTQgQEAKIC8qIEVuZCBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhCMTRC
QTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovID0geworCQkJaXNhID0gUEJYU291cmNlc0J1aWxk
UGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJ
CQkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKKwkJfTsKIAkJMTQxMjExMUQwQTQ4NzkzQzAwNDgwMjU1IC8qIFNvdXJjZXMgKi8g
PSB7CiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CkBAIC0zNjYyLDcgKzM4MzQsMTQgQEAKIAkJCQk4NjcwNEI4NjEyREJBMzM3
MDBBOUZFN0IgLyogWWFyckpJVC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI4OTEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRC
NDIxMkRCOEE4MTAwQTlGRTdCIC8qIFlhcnJTeW50YXhDaGVja2VyLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludEhlbHBlcnMuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUyNzIgLyogSklU
RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUy
NzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBE
MjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBG
NDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTElu
dFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBCODNCMDE0QkNGNzE2MDA4ODVCNEYg
LyogQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4M0I0MTRCQ0Y4NjAw
MDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjY5
RTg2QzMxNEM2RTU1MTAwMkMyQzYyIC8qIE51bWJlck9mQ29yZXMuY3BwIGluIFNvdXJjZXMgKi8s
CkBAIC0zNjg4LDYgKzM4NjcsMTYgQEAKIC8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLworCQkwRjQ2
ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlz
YSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBC
RkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLzsKKwkJCXRhcmdldFByb3h5ID0gMEY0NjgwQjExNEJB
ODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKKwkJMEY0Njgw
QjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CisJCQlpc2Eg
PSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZF
MjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXRhcmdldFByb3h5ID0gMEY0
NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsK
IAkJMTQxMjE0QkYwQTQ5MTkwRTAwNDgwMjU1IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7
CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwogCQkJdGFyZ2V0ID0gMTQxMjExMUYwQTQ4
NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi87CkBAIC0zNzIxLDYgKzM5MTAsMTUwIEBACiAvKiBF
bmQgUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQnVpbGRDb25m
aWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMEY0NjgwOTYxNEJBN0U1RTAwQkZFMjcyIC8qIERlYnVn
ICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdz
ID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQo
QVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJ
CUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0RZTkFNSUNfTk9fUElD
ID0gTk87CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX09Q
VElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJTklUSU9OUyA9
ICgKKwkJCQkJIkRFQlVHPTEiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkpOworCQkJCUdD
Q19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gTk87CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBw
bGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9D
T05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0g
WUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJO
X1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpd
IiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xM
SW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJ
CU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9
IE5POworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9
IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07
CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBS
ZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hT
ID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlF
UzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJ
CQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19F
WENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5s
bHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5P
OworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0Nf
V0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFC
TEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4s
CisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMkKEhF
QURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdF
VCA9IDEwLjc7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IE5POworCQkJCVBST0RVQ1RfTkFNRSA9
ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURF
Ul9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0
cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJ
fTsKKwkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdB
WVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJE
XzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JN
QVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RB
TkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJ
CQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJ
R0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9V
VF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZ
UEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFE
RVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIk
KEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NFQVJD
SF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsK
KwkJCQlPTkxZX0FDVElWRV9BUkNIID0gTk87CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VU
X05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9Q
QVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVS
X1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBG
NDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFS
Q0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklU
KSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9G
T1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9
IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19W
RVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FS
Tl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJ
TkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlF
UzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFS
Q0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRf
UFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhT
KSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCVBS
T0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJ
CQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIp
L0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0g
UHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8qIERlYnVnICov
ID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJ
bmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFz
ZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5n
cyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsK
KwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyog
UHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7
CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJMEY0NjgwQjAxNEJBN0ZEOTAw
QkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlv
bjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291
cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjEx
M0EwQTQ4Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZp
Z3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewpAQCAtMzk2Miw2ICs0Mjk1LDI4IEBACiAv
KiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBYQ0NvbmZp
Z3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNl
dHNFeHRyYWN0b3IiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1
aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwOTYxNEJBN0U1RTAwQkZFMjcyIC8qIERl
YnVnICovLAorCQkJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovLAorCQkJ
CTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJMEY0NjgwOTkx
NEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUHJv
ZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZp
Z3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJMTEludCBPZmZzZXRzIiAqLyA9
IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25z
ID0gKAorCQkJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2
ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODBBRjE0QkE3RkQ5
MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAv
KiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxl
ID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247CisJCX07CiAJ
CTE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9y
IFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi8gPSB7CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRp
b25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShyZXZpc2lvbiAxMDY4ODEpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkod29ya2luZyBjb3B5
KQpAQCAtMzQsNyArMzQsNyBAQAogI2RlZmluZSBHTE9CQUxfVEhVTktfSUQgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0xKSkKICNkZWZpbmUgUkVHRVhQX0NP
REVfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0yKSkK
IAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+CisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIu
aCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmLmgJKHJldmlzaW9uIDEwNjg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
Myw2ICsyNzMsMTQgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVf
UE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CisgICAgCisgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVy
Q29kZVB0ciBjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3Modm9pZCogdmFsdWUpCisgICAgewor
ICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKHZhbHVlKTsKKyAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0Lm1fdmFsdWUgPSB2YWx1ZTsK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CiAKICAgICBleHBsaWNpdCBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIoUmV0dXJuQWRkcmVzc1B0ciByYSkKICAgICAgICAgOiBtX3ZhbHVlKHJhLnZh
bHVlKCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252
ZW50aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9C
eXRlY29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgQnl0ZWNvZGVDb252ZW50aW9uc19oCisjZGVmaW5lIEJ5dGVjb2RlQ29udmVudGlvbnNf
aAorCisvLyBSZWdpc3RlciBudW1iZXJzIHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZl
IGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0byB0aGVpciByYW5nZXM6CisvLyAgICAgIDB4
ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUg
cG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5o
LgorLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0
aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGgg
dGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgorLy8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYg
IFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUg
Y29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2NrLgorc3RhdGljIGNvbnN0IGludCBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDA7CisKKyNlbmRpZiAvLyBCeXRlY29kZUNv
bnZlbnRpb25zX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDY4ODEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NywxNyArMjcsNDAgQEAKICNpbmNsdWRlICJDYWxsTGlua1N0YXR1cy5oIgogCiAjaW5jbHVkZSAi
Q29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK0NhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50
KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2Rl
SW5kZXgpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24g
PSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsK
KyAgICBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gaW5zdHJ1Y3Rpb25bNF0udS5j
YWxsTGlua0luZm87CisgICAgCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKGNhbGxMaW5rSW5m
by0+bGFzdFNlZW5DYWxsZWUuZ2V0KCksIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJuIENhbGxM
aW5rU3RhdHVzKDAsIGZhbHNlKTsKKyNlbmRpZgorfQorCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlu
a1N0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVO
VVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFM
VUVfUFJPRklMRVIpCi0gICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKAotICAgICAgICBwcm9maWxl
ZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0
KCksCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmNvdWxkVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5k
ZXgpKTsKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mQ2FsbExpbmtJbmZvcygpKQor
ICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUlu
ZGV4KTsKKyAgICAKKyAgICBpZiAocHJvZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UoYnl0
ZWNvZGVJbmRleCkpCisgICAgICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygwLCB0cnVlKTsKKyAg
ICAKKyAgICBKU0Z1bmN0aW9uKiB0YXJnZXQgPSBwcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0lu
Zm8oYnl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0KCk7CisgICAgaWYgKCF0YXJnZXQp
CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2Rl
SW5kZXgpOworICAgIAorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cyh0YXJnZXQsIGZhbHNlKTsK
ICNlbHNlCiAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKICNlbmRpZgpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJ
KHJldmlzaW9uIDEwNjg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua1N0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxNSArNDcsMTcgQEAgcHVibGljOgog
ICAgIAogICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVu
c2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwogICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJl
dHVybiAhIW1fY2FsbFRhcmdldDsgfQorICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAh
IW1fY2FsbFRhcmdldCB8fCBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCi0gICAgYm9vbCBv
cGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAhbV9jYWxsVGFyZ2V0OyB9CisgICAgYm9vbCBvcGVy
YXRvciEoKSBjb25zdCB7IHJldHVybiAhaXNTZXQoKTsgfQogICAgIAogICAgIGJvb2wgY291bGRU
YWtlU2xvd1BhdGgoKSBjb25zdCB7IHJldHVybiBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAg
CiAgICAgSlNGdW5jdGlvbiogY2FsbFRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdl
dDsgfQogICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZy
b21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKKyAgICAKICAgICBK
U0Z1bmN0aW9uKiBtX2NhbGxUYXJnZXQ7CiAgICAgYm9vbCBtX2NvdWxkVGFrZVNsb3dQYXRoOwog
fTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3Bw
CShyZXZpc2lvbiAxMDY4ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJS
ZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVkZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAjaW5jbHVk
ZSA8c3RkaW8uaD4KQEAgLTM1NiwxMCArMzU3LDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4
ZWNTdGF0ZSogZXhlYykgY28KICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGluc3RydWN0aW9u
cygpLnNpemUoKTsgaSArPSBvcGNvZGVMZW5ndGhzW2V4ZWMtPmludGVycHJldGVyKCktPmdldE9w
Y29kZUlEKGluc3RydWN0aW9ucygpW2ldLnUub3Bjb2RlKV0pCiAgICAgICAgICsraW5zdHJ1Y3Rp
b25Db3VudDsKIAotICAgIHByaW50ZigiJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQg
JXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpXG5cbiIsCisgICAgcHJp
bnRmKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVyKHMp
OyAlZCBjYWxsZWUgcmVnaXN0ZXIocyk7ICVkIHZhcmlhYmxlKHMpXG5cbiIsCiAgICAgICAgIHN0
YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9uQ291bnQpLAogICAgICAgICBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMoKS5zaXplKCkgKiBzaXplb2YoSW5z
dHJ1Y3Rpb24pKSwKLSAgICAgICAgdGhpcywgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJl
Z2lzdGVycyk7CisgICAgICAgIHRoaXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdp
c3RlcnMsIG1fbnVtVmFycyk7CiAKICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVy
YXRvciBiZWdpbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgVmVjdG9yPEluc3RydWN0
aW9uPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW5zdHJ1Y3Rpb25zKCkuZW5kKCk7CkBAIC04OTYs
NiArODk3LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KICAg
ICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF90
cmFuc2l0aW9uIik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQorICAgICAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDogeworICAgICAgICAgICAgcHJpbnRQdXRC
eUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Iik7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywg
bG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsIik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF9nZW5lcmljOiB7
CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlf
aWRfZ2VuZXJpYyIpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDUzLDYgKzE0NjIsNyBAQCBD
b2RlQmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tUYWcsCiB7CiAgICAgc2V0TnVtUGFy
YW1ldGVycyhvdGhlci5udW1QYXJhbWV0ZXJzKCkpOwogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAo
KTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogICAgIAogICAgIGlmIChvdGhlci5tX3JhcmVEYXRh
KSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3NhcnkoKTsKQEAgLTE1MDEsNiArMTUx
MSw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICBBU1NF
UlQobV9zb3VyY2UpOwogICAgIAogICAgIG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRB
ZnRlcldhcm1VcCgpOwogCiAjaWYgRFVNUF9DT0RFX0JMT0NLX1NUQVRJU1RJQ1MKICAgICBsaXZl
Q29kZUJsb2NrU2V0LmFkZCh0aGlzKTsKQEAgLTE1MTgsNyArMTUyOSwxMSBAQCBDb2RlQmxvY2s6
On5Db2RlQmxvY2soKQogI2lmIEVOQUJMRShWRVJCT1NFX1ZBTFVFX1BST0ZJTEUpCiAgICAgZHVt
cFZhbHVlUHJvZmlsZXMoKTsKICNlbmRpZgotICAgIAorCisjaWYgRU5BQkxFKExMSU5UKSAgICAK
KyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJ
bnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+cmVt
b3ZlKCk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogI2lmIEVOQUJMRShKSVQpCiAgICAgLy8g
V2UgbWF5IGJlIGRlc3Ryb3llZCBiZWZvcmUgYW55IENvZGVCbG9ja3MgdGhhdCByZWZlciB0byB1
cyBhcmUgZGVzdHJveWVkLgogICAgIC8vIENvbnNpZGVyIHRoYXQgdHdvIENvZGVCbG9ja3MgYmVj
b21lIHVucmVhY2hhYmxlIGF0IHRoZSBzYW1lIHRpbWUuIFRoZXJlCkBAIC0xNzMwLDggKzE3NDUs
NjkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KAogI2Vsc2UKICAg
ICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5saW5raW5nID0gZmFsc2U7CiAjZW5kaWYKLSNl
bmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgCisjaWYgRU5BQkxFKExMSU5UKQorICAg
IEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXI7Cisg
ICAgLy8gaW50ZXJwcmV0ZXItPmVuYWJsZWQoKSByZXR1cm5zIHRydWUgaWYgdGhlIG9sZCBDKysg
aW50ZXJwcmV0ZXIgaXMgZW5hYmxlZC4gSWYgdGhhdCdzIGVuYWJsZWQKKyAgICAvLyB0aGVuIHdl
J3JlIG5vdCB1c2luZyBMTEludC4KKyAgICBpZiAoIWludGVycHJldGVyLT5lbmFibGVkKCkpIHsK
KyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMu
c2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24q
IGN1ckluc3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbnNbaV1dOworICAgICAgICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
Y3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpKSB7CisgICAgICAgICAgICBjYXNlIG9wX2dldF9i
eV9pZDoKKyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICAgICAgICAgIGlm
ICghY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5z
dHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAg
ICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3Mgd2l0aCBzdHJ1Y3R1
cmUgJXAuXG4iLCBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAg
ICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAg
ICAgICAgICBjdXJJbnN0cnVjdGlvbls1XS51Lm9wZXJhbmQgPSAwOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6
CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAg
ICAgICAgICAgICBpZiAoSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1
cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3Ry
dWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpKQorICAgICAgICAgICAgICAgICAgICAmJiBIZWFw
Ojppc01hcmtlZChjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpKSkKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxp
bmtpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBwdXQg
dHJhbnNpdGlvbiB3aXRoIHN0cnVjdHVyZXMgJXAgLT4gJXAsIGNoYWluICVwLlxuIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1
cmUuZ2V0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51
LnN0cnVjdHVyZUNoYWluLmdldCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAg
ICBjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAg
IGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAgICAgICAg
ICAgICBjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSA9IGludGVycHJldGVyLT5nZXRPcGNvZGUo
b3BfcHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUlu
c3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJ
bnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNv
bHZlSW5zdHJ1Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0
T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFs
CisgICAgICAgICAgICAgICAgICAgfHwgaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3Ry
dWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKKyAgICAg
ICAgICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJr
ZWQoY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAg
ICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBnbG9iYWwgcmVzb2x2ZSBjYWNoZSB3aXRoIHN0
cnVjdHVyZSAlcC5cbiIsIGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpKTsKKyAg
ICAgICAgICAgIGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAg
ICAgICBjdXJJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQgPSAwOworICAgICAgICB9CisgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsr
aSkgeworICAgICAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkg
JiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmNhbGxlZS5nZXQoKSkp
IHsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAg
ICAgICAgcHJpbnRmKCJDbGVhcmluZyBMTEludCBjYWxsIGZyb20gJXAuXG4iLCB0aGlzKTsKKyAg
ICAgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGlmICghIW1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVu
Q2FsbGVlICYmICFIZWFwOjppc01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2Vl
bkNhbGxlZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0u
bGFzdFNlZW5DYWxsZWUuY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFC
TEUoTExJTlQpCisKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBu
b3QgbGl2ZS4gSWYgd2UgYXJlLCB0aGVuIGpldHRpc29uLgogICAgIGlmICghKHNob3VsZEltbWVk
aWF0ZWx5QXNzdW1lTGl2ZW5lc3NEdXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hh
c0JlZW5Qcm92ZWQpKSB7CkBAIC0xNzU0LDcgKzE4MzAsNyBAQCB2b2lkIENvZGVCbG9jazo6Zmlu
YWxpemVVbmNvbmRpdGlvbmFsbHkoCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1iZXJPZkNhbGxMaW5rSW5mb3MoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoY2FsbExpbmtJ
bmZvKGkpLmlzTGlua2VkKCkgJiYgIUhlYXA6OmlzTWFya2VkKGNhbGxMaW5rSW5mbyhpKS5jYWxs
ZWUuZ2V0KCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCi0gICAg
ICAgICAgICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcgY2FsbCBmcm9tICVwLlxuIiwgdGhpcyk7
CisgICAgICAgICAgICAgICAgICAgIHByaW50ZigiQ2xlYXJpbmcgY2FsbCBmcm9tICVwIHRvICVw
LlxuIiwgdGhpcywgY2FsbExpbmtJbmZvKGkpLmNhbGxlZS5nZXQoKSk7CiAgICAgICAgICAgICAg
ICAgY2FsbExpbmtJbmZvKGkpLnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghIWNhbGxMaW5rSW5mbyhpKS5sYXN0U2Vl
bkNhbGxlZQpAQCAtMTg1MiwxMCArMTkyOCwxMiBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlW
aXNpdFN0cm9uZ1JlZmVyCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVj
bHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9uRGVjbHNb
aV0pOwogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9w
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQot
ICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAg
ICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNv
bHZlSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0ZXIt
PmVuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFjY2Vz
c0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAgICAg
dmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJl
c29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAg
ICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNv
bHZlSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREZHX0pJ
VCkKQEAgLTE4NjMsOCArMTk0MSw5IEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ry
b25nUmVmZXIKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgZXhlY3V0YWJsZXMgdGhhdCB3ZSBo
YXZlIGlubGluZWQgZG9uJ3QgZGllLgogICAgICAgICAvLyBGSVhNRTogSWYgdGhleSB3b3VsZCBo
YXZlIG90aGVyd2lzZSBkaWVkLCB3ZSBzaG91bGQgcHJvYmFibHkgdHJpZ2dlciByZWNvbXBpbGF0
aW9uLgogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlubGluZUNhbGxGcmFtZXMoKS5z
aXplKCk7ICsraSkgewotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFt
ZXMoKVtpXS5leGVjdXRhYmxlKTsKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpbmxpbmVD
YWxsRnJhbWVzKClbaV0uY2FsbGVlKTsKKyAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSYgaW5s
aW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lcygpW2ldOworICAgICAgICAgICAgdmlzaXRv
ci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZS5leGVjdXRhYmxlKTsKKyAgICAgICAgICAgIHZpc2l0
b3IuYXBwZW5kKCZpbmxpbmVDYWxsRnJhbWUuY2FsbGVlKTsKICAgICAgICAgfQogICAgIH0KICNl
bmRpZgpAQCAtMjA3NCw2ICsyMTUzLDEyIEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygp
CiB7CiAgICAgaWYgKCEhbV9hbHRlcm5hdGl2ZSkKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+dW5s
aW5rQ2FsbHMoKTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9sbGlu
dENhbGxMaW5rSW5mb3NbaV0uaXNMaW5rZWQoKSkKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlu
a0luZm9zW2ldLnVubGluaygpOworICAgIH0KKyNlbmRpZgogICAgIGlmICghKG1fY2FsbExpbmtJ
bmZvcy5zaXplKCkgfHwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSkpCiAgICAgICAgIHJl
dHVybjsKICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0yMDg4LDEwICsy
MTczLDM5IEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiAKIHZvaWQgQ29kZUJsb2Nr
Ojp1bmxpbmtJbmNvbWluZ0NhbGxzKCkKIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgd2hpbGUg
KG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5k
KCkpCisgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCktPnVubGluaygpOworI2Vu
ZGlmCisgICAgaWYgKG1faW5jb21pbmdDYWxscy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsK
ICAgICBSZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIodGhpcyk7CiAgICAgd2hpbGUgKG1faW5j
b21pbmdDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdDYWxscy5lbmQoKSkKICAgICAgICAgbV9p
bmNvbWluZ0NhbGxzLmJlZ2luKCktPnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVy
KTsKIH0KKwordW5zaWduZWQgQ29kZUJsb2NrOjpieXRlY29kZU9mZnNldChFeGVjU3RhdGUqIGV4
ZWMsIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3sKKyNpZiBFTkFCTEUoTExJTlQp
CisgICAgaWYgKHJldHVybkFkZHJlc3MudmFsdWUoKSA+PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF9iZWdpbikKKyAgICAgICAgJiYgcmV0dXJuQWRkcmVzcy52YWx1ZSgpIDw9IGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X2VuZCkpIHsKKyAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9j
aygpKTsKKyAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpID09IHRoaXMpOworICAgICAg
ICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CisgICAgICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGV4ZWMtPmN1cnJlbnRWUEMoKTsKKyAgICAgICAg
QVNTRVJUKGluc3RydWN0aW9uKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0KGluc3Ry
dWN0aW9uKTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyNlbmRpZgor
ICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgVmVjdG9yPENhbGxS
ZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5t
X2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKKyAgICBpZiAoIWNhbGxJbmRpY2VzLnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0
VG9CeXRlY29kZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRp
Y2VzLmJlZ2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJl
dHVybkFkZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKK30KICNlbmRpZgogCiB2b2lk
IENvZGVCbG9jazo6Y2xlYXJFdmFsQ2FjaGUoKQpAQCAtMjE4NywyNCArMjMwMSw0NSBAQCBib29s
IEZ1bmN0aW9uQ29kZUJsb2NrOjpjYW5Db21waWxlV2l0aERGCiAKIHZvaWQgUHJvZ3JhbUNvZGVC
bG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklU
VHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGlj
X2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0
aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBFdmFsQ29kZUJsb2NrOjpqZXR0
aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJ
VCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsK
ICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxFdmFs
RXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpn
bG9iYWxEYXRhKCkpOwogfQogCiB2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7
Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAg
QVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NF
UlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1
dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZUZvcigqZ2xv
YmFsRGF0YSgpLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNh
bGwpOwogfQorCit2b2lkIFByb2dyYW1Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6
OkludGVycHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwor
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJs
ZSgpKS0+aml0Q29tcGlsZShnbG9iYWxEYXRhKTsKK30KKwordm9pZCBFdmFsQ29kZUJsb2NrOjpq
aXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdl
dEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhp
cyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFi
bGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZ2xvYmFsRGF0YSk7Cit9CisKK3Zv
aWQgRnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVy
VGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBz
dGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENv
bXBpbGVGb3IoZ2xvYmFsRGF0YSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6
IENvZGVGb3JDYWxsKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNp
b24gMTA2ODgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaWZuZGVmIENvZGVCbG9ja19oCiAj
ZGVmaW5lIENvZGVCbG9ja19oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAj
aW5jbHVkZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0
ZWNvZGVPZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCkBAIC01MCw2ICs1MSw3IEBA
CiAjaW5jbHVkZSAiSklUV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKICNpbmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5o
IgogI2luY2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQ
cmVkaWN0aW9uVHJhY2tlci5oIgpAQCAtNjUsMTYgKzY3LDExIEBACiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKLS8vIFJlZ2lzdGVyIG51
bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcg
YWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKLS8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZG
ICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVz
IGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCi0vLyAgICAgIDB4MDAwMDAw
MDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRl
ciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxs
ZnJhbWUuCi0vLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBm
cm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRo
ZSBDb2RlQmxvY2suCi1zdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
ID0gMHg0MDAwMDAwMDsKLQogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBFeGVjU3RhdGU7
CiAgICAgY2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgaW5saW5lIGludCB1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIoaW50IGFyZ3VtZW50c1JlZ2lzdGVyKSB7IHJldHVybiBhcmd1bWVudHNS
ZWdpc3RlciAtIDE7IH0KIApAQCAtODMsNiArODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBj
bGFzcyBDb2RlQmxvY2sgOiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXplciwgcHVibGljIFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gQ29weVBhcnNlZEJsb2Nr
VGFnIHsgQ29weVBhcnNlZEJsb2NrIH07CiAgICAgcHJvdGVjdGVkOgpAQCAtMTIzLDcgKzEyMSw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRp
dmUoKSkKICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQtPmFsdGVybmF0aXZlKCk7CiAg
ICAgICAgICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmdl
dEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQo
SklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMTkyLDE1ICsxOTAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxNZXRo
b2RDYWxsTGlua0luZm8sIHVuc2lnbmVkLCBnZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUlu
ZGV4PihtX21ldGhvZENhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0luZm9z
LnNpemUoKSwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQotICAgICAgICB7
Ci0gICAgICAgICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7
Ci0gICAgICAgICAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBj
YWxsSW5kaWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOwotICAgICAg
ICAgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7
Ci0gICAgICAgICAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVj
b2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVn
aW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRk
cmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OwotICAgICAgICB9CisgICAgICAgIHVuc2ln
bmVkIGJ5dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSosIFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAg
ICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Rm9yQ2FsbEF0SW5kZXgodW5zaWduZWQgaW5kZXgp
CiAgICAgICAgIHsKQEAgLTIyMSwxMSArMjExLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB7CiAgICAgICAgICAgICBtX2luY29taW5nQ2FsbHMucHVzaChpbmNvbWluZyk7CiAgICAgICAg
IH0KKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHZvaWQgbGlua0luY29taW5nQ2FsbChMTElu
dENhbGxMaW5rSW5mbyogaW5jb21pbmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faW5jb21p
bmdMTEludENhbGxzLnB1c2goaW5jb21pbmcpOworICAgICAgICB9CisjZW5kaWYgLy8gRU5BQkxF
KExMSU5UKQogICAgICAgICAKICAgICAgICAgdm9pZCB1bmxpbmtJbmNvbWluZ0NhbGxzKCk7Ci0j
ZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYg
RU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgdm9pZCBzZXRKSVRDb2Rl
TWFwKFBhc3NPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IGppdENvZGVNYXApCiAgICAgICAgIHsK
ICAgICAgICAgICAgIG1faml0Q29kZU1hcCA9IGppdENvZGVNYXA7CkBAIC0yMzQsNyArMjMwLDkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2ppdENv
ZGVNYXAuZ2V0KCk7CiAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAKKyNpZiBFTkFCTEUoREZH
X0pJVCkKICAgICAgICAgdm9pZCBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKQogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoISFtX2RmZ0RhdGEpCkBAIC0zMzMsMTIgKzMzMSwxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIp
CiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uKiByZXR1cm5BZGRy
ZXNzKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0
cnVjdGlvbnMoKS5iZWdpbigpICYmIHJldHVybkFkZHJlc3MgPCBpbnN0cnVjdGlvbnMoKS5lbmQo
KSk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5B
ZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgICAgIH0KLSNlbmRpZgogCiAg
ICAgICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29t
cGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29t
cGFyZUZ1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkg
eyByZXR1cm4gbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KQEAgLTM3Niw2ICszNzMsMTUg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGV4ZWN1
dGFibGVNZW1vcnkoKSB7IHJldHVybiBnZXRKSVRDb2RlKCkuZ2V0RXhlY3V0YWJsZU1lbW9yeSgp
OyB9CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRl
KiwgU2NvcGVDaGFpbk5vZGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigp
ID0gMDsKKyAgICAgICAgYm9vbCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBK
SVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgfQorICAgICAgICAgICAgaml0Q29tcGlsZUltcGwoZ2xvYmFsRGF0YSk7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIENvZGVCbG9j
ayogcmVwbGFjZW1lbnQoKSA9IDA7CiAKICAgICAgICAgZW51bSBDb21waWxlV2l0aERGR1N0YXRl
IHsKQEAgLTM5NSwxMyArNDAxLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wg
aGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQo
Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VS
VChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIGJv
b2wgcmVzdWx0ID0gcmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID4gZ2V0SklUVHlwZSgpOwog
I2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAg
ICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpERkdK
SVQpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2Vt
ZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlcGxhY2VtZW50KCktPmdldEpJ
VFR5cGUoKSkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpID09IHRoaXMp
OwogICAgICAgICAgICAgfQogI2VuZGlmCkBAIC00NjAsMTggKzQ2NiwyMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICB2b2lkIGNsZWFyRXZhbENhY2hlKCk7CiAKLSNpZiBFTkFCTEUoSU5U
RVJQUkVURVIpCiAgICAgICAgIHZvaWQgYWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbih1bnNp
Z25lZCBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBp
ZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9wcm9wZXJ0
eUFjY2Vzc0luc3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7Cisg
ICAgICAgICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9uKTsKICAgICAgICAgfQogICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29s
dmVJbnN0cnVjdGlvbih1bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAg
IHsKLSAgICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAg
ICAgICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbik7CisgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuYXBw
ZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBo
YXNHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIExMSW50Q2FsbExpbmtJbmZv
KiBhZGRMTEludENhbGxMaW5rSW5mbygpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRD
YWxsTGlua0luZm9zLmFwcGVuZChMTEludENhbGxMaW5rSW5mbygpKTsKKyAgICAgICAgICAgIHJl
dHVybiAmbV9sbGludENhbGxMaW5rSW5mb3MubGFzdCgpOworICAgICAgICB9CiAjZW5kaWYKICNp
ZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIHNldE51bWJlck9mU3RydWN0dXJlU3R1YkluZm9z
KHNpemVfdCBzaXplKSB7IG1fc3RydWN0dXJlU3R1YkluZm9zLmdyb3coc2l6ZSk7IH0KQEAgLTQ4
MCw4ICs0ODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGFkZEdsb2JhbFJl
c29sdmVJbmZvKHVuc2lnbmVkIGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikKICAgICAgICAgewot
ICAgICAgICAgICAgaWYgKG1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAg
ICAgbV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJl
c29sdmVJbnN0cnVjdGlvbikpOworICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBw
ZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOwogICAgICAg
ICB9CiAgICAgICAgIEdsb2JhbFJlc29sdmVJbmZvJiBnbG9iYWxSZXNvbHZlSW5mbyhpbnQgaW5k
ZXgpIHsgcmV0dXJuIG1fZ2xvYmFsUmVzb2x2ZUluZm9zW2luZGV4XTsgfQogICAgICAgICBib29s
IGhhc0dsb2JhbFJlc29sdmVJbmZvQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9m
ZnNldCk7CkBAIC00OTIsNiArNTAwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9p
ZCBhZGRNZXRob2RDYWxsTGlua0luZm9zKHVuc2lnbmVkIG4pIHsgQVNTRVJUKG1fZ2xvYmFsRGF0
YS0+Y2FuVXNlSklUKCkpOyBtX21ldGhvZENhbGxMaW5rSW5mb3MuZ3JvdyhuKTsgfQogICAgICAg
ICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGxMaW5rSW5mbyhpbnQgaW5kZXgpIHsgcmV0
dXJuIG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpbmRleF07IH0KKyAgICAgICAgc2l6ZV90IG51bWJl
ck9mTWV0aG9kQ2FsbExpbmtJbmZvcygpIHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5z
aXplKCk7IH0KICNlbmRpZgogICAgICAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCkBA
IC01MzMsNiArNTQyLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBieXRlY29kZU9mZnNldF0udS5vcGNvZGUpKSAtIDFdLnUucHJvZmlsZSA9
PSByZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQorICAgICAg
ICBQcmVkaWN0ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChp
bnQgYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZVBy
b2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPmNvbXB1dGVVcGRhdGVkUHJl
ZGljdGlvbigpOworICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB1bnNpZ25lZCB0b3RhbE51
bWJlck9mVmFsdWVQcm9maWxlcygpCiAgICAgICAgIHsKQEAgLTU1OSwxMiArNTcyLDE2IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTbG93Q2Fz
ZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVy
T2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNl
dChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+
PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2Fz
dDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtl
bHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAg
Ym9vbCBjb3VsZFRha2VTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAg
ICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2FzZVBy
b2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZU1pbmltdW1D
b3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50cnlDb3Vu
dCA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAgICAgfQpAQCAt
NTgzLDEyICs2MDAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29s
IGxpa2VseVRvVGFrZVNwZWNpYWxGYXN0Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAg
IHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RD
YXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gc3BlY2lhbEZhc3RDYXNl
Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3Rh
dGljX2Nhc3Q8ZG91YmxlPihzcGVjaWFsRmFzdENhc2VDb3VudCkgLyBtX2V4ZWN1dGlvbkVudHJ5
Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAg
IH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKGlu
dCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJh
cmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
ICAgICB1bnNpZ25lZCBzbG93Q2FzZUNvdW50ID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVP
ZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBz
cGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2lnbmVkIHZh
bHVlID0gc2xvd0Nhc2VDb3VudCAtIHNwZWNpYWxGYXN0Q2FzZUNvdW50OwpAQCAtNTk3LDYgKzYx
OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rh
a2VBbnlTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAg
IGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJv
ZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAg
ICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9m
aWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAg
ICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgKyBzcGVjaWFsRmFzdENhc2VDb3Vu
dDsKQEAgLTY5NCw3ICs3MTcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAg
IGJvb2wgYWRkRnJlcXVlbnRFeGl0U2l0ZShjb25zdCBERkc6OkZyZXF1ZW50RXhpdFNpdGUmIHNp
dGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVD
b2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgcmV0dXJuIG1fZXhpdFByb2ZpbGUuYWRk
KHNpdGUpOwogICAgICAgICB9CiAKQEAgLTgwMiw2ICs4MjUsMjkgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHZvaWQgY29weVBvc3RQYXJzZURhdGFGcm9tKENvZGVCbG9jayogYWx0ZXJuYXRp
dmUpOwogICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbUFsdGVybmF0aXZlKCk7CiAg
ICAgICAgIAorICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gSklUdGlu
ZyBraWNrcyBpbiwgaW4gYSBtaXhlZCBtb2RlCisgICAgICAgIC8vIGV4ZWN1dGlvbiB3b3JsZC4K
KyAgICAgICAgCisgICAgICAgIHZvaWQgZG9udEpJVEFueXRpbWVTb29uKCkKKyAgICAgICAgewor
ICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICB2b2lkIGppdEFmdGVyV2FybVVwKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGlu
dEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0
ZXJXYXJtVXA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0U29vbigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIGludDMyX3QgbGxpbnRFeGVjdXRlQ291bnRlcigpIGNvbnN0CisgICAgICAgIHsKKyAgICAg
ICAgICAgIHJldHVybiBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAgICAgIH0KKyAgICAgICAg
CiAgICAgICAgIC8vIEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcgd2hlbiB0aWVyZWQgY29tcGls
YXRpb24ga2lja3MgaW4uIFRoaXMKICAgICAgICAgLy8gY29udHJvbHMgYm90aCB3aGVuIHRoZSBv
cHRpbWl6aW5nIGNvbXBpbGVyIGlzIGludm9rZWQgYW5kIHdoZW4gT1NSCiAgICAgICAgIC8vIGVu
dHJ5IGhhcHBlbnMuIFR3byB0cmlnZ2VycyBleGlzdDogdGhlIGxvb3AgdHJpZ2dlciBhbmQgdGhl
IHJldHVybgpAQCAtOTk0LDYgKzEwNDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9v
bCBtX3Nob3VsZERpc2NhcmRCeXRlY29kZTsKIAogICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmly
dHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpID0gMDsKICAgICAgICAgdmly
dHVhbCB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xvdFZpc2l0b3ImKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5KCk7CiAgICAgICAgIApAQCAtMTA3NSw5
ICsxMTIyLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8U291cmNlUHJvdmlk
ZXI+IG1fc291cmNlOwogICAgICAgICB1bnNpZ25lZCBtX3NvdXJjZU9mZnNldDsKIAotI2lmIEVO
QUJMRShJTlRFUlBSRVRFUikKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zOwogICAgICAgICBWZWN0b3I8dW5zaWduZWQ+IG1fZ2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9uczsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIFNlZ21lbnRlZFZlY3Rv
cjxMTEludENhbGxMaW5rSW5mbywgOD4gbV9sbGludENhbGxMaW5rSW5mb3M7CisgICAgICAgIFNl
bnRpbmVsTGlua2VkTGlzdDxMTEludENhbGxMaW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8
TExJbnRDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0xMSW50Q2FsbHM7CiAjZW5kaWYKICNpZiBF
TkFCTEUoSklUKQogICAgICAgICBWZWN0b3I8U3RydWN0dXJlU3R1YkluZm8+IG1fc3RydWN0dXJl
U3R1YkluZm9zOwpAQCAtMTA4OCw5ICsxMTM3LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlV2l0aEFyaXR5Q2hlY2s7CiAgICAgICAg
IFNlbnRpbmVsTGlua2VkTGlzdDxDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPENh
bGxMaW5rSW5mbz4gPiBtX2luY29taW5nQ2FsbHM7CiAjZW5kaWYKLSNpZiBFTkFCTEUoREZHX0pJ
VCkKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICBPd25QdHI8
Q29tcGFjdEpJVENvZGVNYXA+IG1faml0Q29kZU1hcDsKLSAgICAgICAgCisjZW5kaWYKKyNpZiBF
TkFCTEUoREZHX0pJVCkKICAgICAgICAgc3RydWN0IFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uIHsK
ICAgICAgICAgICAgIFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uKCkgeyB9CiAgICAgICAgICAgICAK
QEAgLTExNTMsMTIgKzEyMDMsMTQgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgT3duUHRy
PENvZGVCbG9jaz4gbV9hbHRlcm5hdGl2ZTsKICAgICAgICAgCisgICAgICAgIGludDMyX3QgbV9s
bGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICAKICAgICAgICAgaW50MzJfdCBtX2ppdEV4ZWN1
dGVDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlU3VjY2Vzc0NvdW50ZXI7
CiAgICAgICAgIHVpbnQzMl90IG1fc3BlY3VsYXRpdmVGYWlsQ291bnRlcjsKICAgICAgICAgdWlu
dDhfdCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcjsKICAgICAgICAgdWludDhfdCBtX3Jlb3B0
aW1pemF0aW9uUmV0cnlDb3VudGVyOwotCisgICAgICAgIAogICAgICAgICBzdHJ1Y3QgUmFyZURh
dGEgewogICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAgICAgcHVibGlj
OgpAQCAtMTIzNCw2ICsxMjg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNj
b3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZp
cnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2Fu
Q29tcGlsZVdpdGhERkdJbnRlcm5hbCgpOwogI2VuZGlmCkBAIC0xMjY4LDYgKzEzMjEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3Qq
IGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxl
SW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2Vt
ZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGR0ludGVybmFsKCk7
CiAjZW5kaWYKQEAgLTEzMDUsNiArMTM1OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3Rh
dGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAg
ICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBi
b29sIGNhbkNvbXBpbGVXaXRoREZHSW50ZXJuYWwoKTsKICNlbmRpZgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkocmV2aXNpb24g
MTA2ODgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMCArMjcsNDkgQEAKICNpbmNsdWRlICJHZXRCeUlk
U3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMb3dMZXZlbElu
dGVycHJldGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitHZXRCeUlkU3RhdHVzIEdldEJ5SWRT
dGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBVTlVTRURfUEFSQU0o
cHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworICAgIFVO
VVNFRF9QQVJBTShpZGVudCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRl
Y29kZUluZGV4OworICAgIAorICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGlu
dF9vcF9tZXRob2RfY2hlY2spCisgICAgICAgIGluc3RydWN0aW9uKys7CisKKyAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOworICAgIGlm
ICghc3RydWN0dXJlKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9u
LCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAgICBzaXplX3Qgb2Zm
c2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQp
OworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBHZXRCeUlkU3Rh
dHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOworICAg
IAorICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZURpcmVjdCwgU3RydWN0dXJlU2V0KHN0
cnVjdHVyZSksIG9mZnNldCwgZmFsc2UpOworI2Vsc2UKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1
cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyNlbmRp
ZgorfQorCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2Nr
KiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVu
dCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFN
KGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5BQkxFKEpJ
VCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVt
YmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJ
bnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAgIC8vIEZp
cnN0IGNoZWNrIGlmIGl0IG1ha2VzIGVpdGhlciBjYWxscywgaW4gd2hpY2ggY2FzZSB3ZSB3YW50
IHRvIGJlIHN1cGVyIGNhcmVmdWwsIG9yCiAgICAgLy8gaWYgaXQncyBub3Qgc2V0IGF0IGFsbCwg
aW4gd2hpY2ggY2FzZSB3ZSBwdW50LgogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9
IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1
YkluZm8uc2VlbikKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwg
U3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJ
bnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgIAogICAgIFBvbHlt
b3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogbGlzdDsKICAgICBpbnQgbGlzdFNpemU7CkBAIC02
MCwxOCArODksMTkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAog
ICAgIH0KICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKICAgICAgICAg
aWYgKCFsaXN0LT5saXN0W2ldLmlzRGlyZWN0KQotICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRT
dGF0dXMoTWFrZXNDYWxscywgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RGb3Vu
ZCwgdHJ1ZSk7CiAgICAgfQogICAgIAogICAgIC8vIE5leHQgY2hlY2sgaWYgaXQgdGFrZXMgc2xv
dyBjYXNlLCBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUga2luZCBvZiBjYXJlZnVsLgogICAg
IGlmIChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkK
LSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgU3RydWN0dXJlU2V0
KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0
aCwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsKICAgICAKICAgICAvLyBGaW5hbGx5
IGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGRlcml2ZSBhbiBhY2Nlc3Mgc3RyYXRlZ3kuCiAgICAgR2V0
QnlJZFN0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fd2FzU2VlbkluSklUID0gdHJ1ZTsKICAg
ICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICBjYXNlIGFjY2Vzc191bnNldDoK
LSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0
KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRC
bG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAgICBjYXNlIGFjY2Vzc19n
ZXRfYnlfaWRfc2VsZjogewogICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHN0dWJJbmZv
LnUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQoKTsKQEAgLTEzMCw3ICsxNjAs
NyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgCiAgICAg
cmV0dXJuIHJlc3VsdDsKICNlbHNlIC8vIEVOQUJMRShKSVQpCi0gICAgcmV0dXJuIEdldEJ5SWRT
dGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICByZXR1
cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQs
IGZhbHNlKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHJldmlzaW9uIDEwNjg4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ5LDEwICs0OSwxMSBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KICAgICAK
LSAgICBHZXRCeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVj
dHVyZVNldCwgc2l6ZV90IG9mZnNldCkKKyAgICBHZXRCeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBj
b25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6ZV90IG9mZnNldCwgYm9vbCB3YXNT
ZWVuSW5KSVQpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAgICAgICAgLCBtX3N0cnVjdHVy
ZVNldChzdHJ1Y3R1cmVTZXQpCiAgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0KQorICAgICAgICAs
IG1fd2FzU2VlbkluSklUKHdhc1NlZW5JbkpJVCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoc3Rh
dGUgPT0gU2ltcGxlRGlyZWN0KSA9PSAob2Zmc2V0ICE9IG5vdEZvdW5kKSk7CiAgICAgfQpAQCAt
NzAsMTAgKzcxLDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVy
ZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9CiAgICAgc2l6ZV90IG9mZnNl
dCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCisgICAgYm9vbCB3YXNTZWVuSW5K
SVQoKSBjb25zdCB7IHJldHVybiBtX3dhc1NlZW5JbkpJVDsgfQorICAgIAogcHJpdmF0ZToKKyAg
ICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKICAgICBTdGF0ZSBtX3N0YXRl
OwogICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKICAgICBzaXplX3QgbV9vZmZzZXQ7
CisgICAgYm9vbCBtX3dhc1NlZW5JbkpJVDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHJldmlz
aW9uIDEwNjg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlv
bi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
IGNsYXNzIEpTQ2VsbDsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAgICAgY2xhc3MgU3RydWN0dXJl
Q2hhaW47CisgICAgc3RydWN0IExMSW50Q2FsbExpbmtJbmZvOwogICAgIHN0cnVjdCBWYWx1ZVBy
b2ZpbGU7CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTQ2LDYgKzE0NywxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICNlbmRpZgogCiAgICAgc3RydWN0IEluc3RydWN0aW9uIHsKKyAgICAgICAgSW5zdHJ1
Y3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB1LmpzQ2VsbC5jbGVhcigpOworICAgICAg
ICB9CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihPcGNvZGUgb3Bjb2RlKQogICAgICAg
ICB7CiAjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQpAQCAtMTgyLDYgKzE4
OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEluc3RydWN0aW9uKFByb3BlcnR5U2xv
dDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1bmMpIHsgdS5nZXR0ZXJGdW5jID0gZ2V0dGVyRnVuYzsg
fQogICAgICAgICAKKyAgICAgICAgSW5zdHJ1Y3Rpb24oTExJbnRDYWxsTGlua0luZm8qIGNhbGxM
aW5rSW5mbykgeyB1LmNhbGxMaW5rSW5mbyA9IGNhbGxMaW5rSW5mbzsgfQorICAgICAgICAKICAg
ICAgICAgSW5zdHJ1Y3Rpb24oVmFsdWVQcm9maWxlKiBwcm9maWxlKSB7IHUucHJvZmlsZSA9IHBy
b2ZpbGU7IH0KIAogICAgICAgICB1bmlvbiB7CkBAIC0xOTEsNyArMTk5LDkgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBzdHJ1
Y3R1cmVDaGFpbjsKICAgICAgICAgICAgIFdyaXRlQmFycmllckJhc2U8SlNDZWxsPiBqc0NlbGw7
CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jOworICAg
ICAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbzsKICAgICAgICAgICAgIFZh
bHVlUHJvZmlsZSogcHJvZmlsZTsKKyAgICAgICAgICAgIHZvaWQqIHBvaW50ZXI7CiAgICAgICAg
IH0gdTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENhbGxMaW5rSW5mb19oCisjZGVmaW5lIExMSW50
Q2FsbExpbmtJbmZvX2gKKworI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJNYWNy
b0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+
CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK3N0cnVjdCBMTElu
dENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5r
SW5mbz4geworICAgIExMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7CisgICAgfQorICAgIAorICAg
IH5MTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAg
ICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzTGlua2VkKCkgeyBy
ZXR1cm4gY2FsbGVlOyB9CisgICAgCisgICAgdm9pZCB1bmxpbmsoKQorICAgIHsKKyAgICAgICAg
Y2FsbGVlLmNsZWFyKCk7CisgICAgICAgIG1hY2hpbmVDb2RlVGFyZ2V0ID0gTWFjcm9Bc3NlbWJs
ZXJDb2RlUHRyKCk7CisgICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAgICAgcmVtb3Zl
KCk7CisgICAgfQorICAgIAorICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBjYWxsZWU7Cisg
ICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGxhc3RTZWVuQ2FsbGVlOworICAgIE1hY3JvQXNz
ZW1ibGVyQ29kZVB0ciBtYWNoaW5lQ29kZVRhcmdldDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpT
QworCisjZW5kaWYgLy8gTExJbnRDYWxsTGlua0luZm9faAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAJ
KHJldmlzaW9uIDEwNjg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRo
b2RDYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDExIEBAIE1l
dGhvZENhbGxMaW5rU3RhdHVzIE1ldGhvZENhbGxMaW5rU3RhdHUKICAgICBVTlVTRURfUEFSQU0o
cHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lmIEVO
QUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICAvLyBOT1RFOiBUaGlzIGRv
ZXMgbm90IGhhdmUgYW4gTExJbnQgZmFsbC1iYWNrIGJlY2F1c2UgTExJbnQgZG9lcyBub3QgZG8g
YW55IG1ldGhvZAorICAgIC8vIGNhbGwgbGluayBjYWNoaW5nLgorICAgIGlmICghcHJvZmlsZWRC
bG9jay0+bnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKCkpCisgICAgICAgIHJldHVybiBNZXRo
b2RDYWxsTGlua1N0YXR1cygpOworICAgIAogICAgIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9k
Q2FsbCA9IHByb2ZpbGVkQmxvY2stPmdldE1ldGhvZENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4
KTsKICAgICAKICAgICBpZiAoIW1ldGhvZENhbGwuc2VlbiB8fCAhbWV0aG9kQ2FsbC5jYWNoZWRT
dHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShy
ZXZpc2lvbiAxMDY4ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2Rl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50c19sZW5ndGgsIDQpIFwKICAgICAgICAgbWFjcm8o
b3BfcHV0X2J5X2lkLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
LCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCwgOSkg
XAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwKICAg
ICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3JlcGxhY2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3Bf
cHV0X2J5X2lkX2dlbmVyaWMsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBc
CkBAIC0yMDEsNiArMjAzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHR5cGVkZWYgZW51
bSB7IEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfSURfRU5VTSkgfSBPcGNvZGVJRDsKICAgICAj
dW5kZWYgT1BDT0RFX0lEX0VOVU0KIAorICAgIGNvbnN0IGludCBtYXhPcGNvZGVMZW5ndGggPSA5
OwogICAgIGNvbnN0IGludCBudW1PcGNvZGVJRHMgPSBvcF9lbmQgKyAxOwogCiAgICAgI2RlZmlu
ZSBPUENPREVfSURfTEVOR1RIUyhpZCwgbGVuZ3RoKSBjb25zdCBpbnQgaWQjI19sZW5ndGggPSBs
ZW5ndGg7CkBAIC0yMTcsNyArMjIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZPUl9F
QUNIX09QQ09ERV9JRChWRVJJRllfT1BDT0RFX0lEKTsKICAgICAjdW5kZWYgVkVSSUZZX09QQ09E
RV9JRAogCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxF
KENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICNpZiBDT01QSUxF
UihSVkNUKSB8fCBDT01QSUxFUihJTlRFTCkKICAgICB0eXBlZGVmIHZvaWQqIE9wY29kZTsKICNl
bHNlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuY3BwCShyZXZpc2lvbiAxMDY4ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDI3ICsyNyw2OSBA
QAogI2luY2x1ZGUgIlB1dEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgor
I2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIK
ICNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorUHV0QnlJ
ZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmls
ZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7Cisg
ICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29k
ZUluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkKKyAg
ICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0g
aW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUpCisg
ICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZv
dW5kKTsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3Bf
cHV0X2J5X2lkKSB7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJv
ZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0g
bm90Rm91bmQpCisgICAgICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9u
LCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhTaW1wbGVSZXBsYWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9mZnNldCk7CisgICAgfQorICAg
IAorICAgIEFTU0VSVChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3QKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNv
ZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAKKyAgICBT
dHJ1Y3R1cmUqIG5ld1N0cnVjdHVyZSA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgp
OworICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IGluc3RydWN0aW9uWzddLnUuc3RydWN0dXJl
Q2hhaW4uZ2V0KCk7CisgICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7CisgICAgQVNTRVJUKGNoYWlu
KTsKKyAgICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVk
QmxvY2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQp
CisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5v
dEZvdW5kKTsKKyAgICAKKyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVUcmFuc2l0aW9u
LCBzdHJ1Y3R1cmUsIG5ld1N0cnVjdHVyZSwgY2hhaW4sIG9mZnNldCk7CisjZWxzZQorICAgIHJl
dHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyNl
bmRpZgorfQorCiBQdXRCeUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJs
b2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBp
ZGVudCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BB
UkFNKGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5BQkxF
KEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9jay0+
bnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9t
TExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAgIGlm
IChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKICAg
ICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90Rm91
bmQpOwogICAgIAogICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVkQmxv
Y2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1YkluZm8uc2VlbikK
LSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90
Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBi
eXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgCiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NU
eXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3Rh
dHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNv
bXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAg
ICAgICAKICAgICBjYXNlIGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTogewogICAgICAgICBzaXpl
X3Qgb2Zmc2V0ID0gc3R1YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJl
LT5nZXQoCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlk
U3RhdHVzLmgJKHJldmlzaW9uIDEwNjg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDggQEAgcHVi
bGljOgogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAg
IAogcHJpdmF0ZToKKyAgICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENv
ZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKICAg
ICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAgU3Ry
dWN0dXJlKiBtX25ld1N0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAx
MDY4ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2Vu
ZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkJh
dGNoZWRUcmFuc2l0aW9uT3B0aW1pemVyLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgog
I2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiVVN0cmluZy5oIgpAQCAtMTI5Myw5ICsxMjk0LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIG1fY29kZUJs
b2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlm
Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICAg
ICAgYm9vbCBkeW5hbWljID0gcmVzb2x2ZVJlc3VsdC5pc0R5bmFtaWMoKSAmJiByZXNvbHZlUmVz
dWx0LmRlcHRoKCk7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxl
ZE9wY29kZShkeW5hbWljID8gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVf
Z2xvYmFsKTsKICAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBA
IC0xMzk5LDkgKzEzOTgsNiBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJl
c29sCiAgICAgICAgIHJldHVybiBiYXNlRHN0OwogICAgIH0KIAotCi0KLQogICAgIFZhbHVlUHJv
ZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9yZXNvbHZlX3dpdGhfYmFzZSk7
CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2VEc3QtPmluZGV4KCkpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChwcm9wRHN0LT5pbmRleCgpKTsKQEAgLTE1MDksOSArMTUwNSw3IEBA
IHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRNZXRob2RDaGVjaygKIAogUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJ
RCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHkpCiB7Ci0jaWYgRU5BQkxFKElOVEVS
UFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGlu
c3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKIAogICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9nZXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChkc3QtPmluZGV4KCkpOwpAQCAtMTUzNyw5ICsxNTMxLDcgQEAgUmVnaXN0ZXJJRCog
Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRBcgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJv
cGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAg
ICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMo
KS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTU1NSw5ICsxNTQ3LDcg
QEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogCiBSZWdpc3RlcklE
KiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwg
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVO
QUJMRShJTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgCiAgICAgZW1pdE9w
Y29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRl
eCgpKTsKQEAgLTE4MzgsNyArMTgyOCwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdENhbGwoCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAv
LyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKSk7IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0Cisj
aWYgRU5BQkxFKExMSU5UKQorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+
YWRkTExJbnRDYWxsTGlua0luZm8oKSk7CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVu
ZCgwKTsKKyNlbmRpZgogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0
ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBl
bWl0UHJvZmlsZWRPcGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKQEAgLTE5NDIsNyArMTkzNiwx
MSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7IC8v
IGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0
ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0luZm8oKSk7
CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewog
ICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfY2Fs
bF9wdXRfcmVzdWx0KTsKQEAgLTIyMDMsNyArMjIwMSwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdENhdGNoCiB7CiAgICAgbV91c2VzRXhjZXB0aW9ucyA9IHRydWU7CiAj
aWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSGFuZGxlckluZm8gaW5mbyA9
IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0aW9u
TGFiZWwoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJlc3Mo
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfY2F0Y2gpKSkgfTsKKyNlbHNlCiAgICAgSGFu
ZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0
aCwgQ29kZUxvY2F0aW9uTGFiZWwoKSB9OworI2VuZGlmCiAjZWxzZQogICAgIEhhbmRsZXJJbmZv
IGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9u
cygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGggfTsKICNl
bmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAJKHJldmlzaW9uIDEwNjg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODUsOSArNTg1LDcgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShub2RlSW5kZXgpOwogICAgICAg
ICAKLSAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+bV9w
cm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4
KTsKLSAgICAgICAgQVNTRVJUKHByb2ZpbGUpOwotICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRp
Y3Rpb24gPSBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgUHJl
ZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJsb2Nr
LT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRleCk7
CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgICAgICBwcmludGYoIkR5bmFtaWMg
W0AldSwgYmMjJXVdIHByZWRpY3Rpb246ICVzXG4iLCBub2RlSW5kZXgsIGJ5dGVjb2RlSW5kZXgs
IHByZWRpY3Rpb25Ub1N0cmluZyhwcmVkaWN0aW9uKSk7CiAjZW5kaWYKQEAgLTEwMjIsNiArMTAy
MCw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKGJvb2wKICAgICAKICAg
ICAvLyBJZiB3ZSBnZXQgaGVyZSB0aGVuIGl0IGxvb2tzIGxpa2Ugd2Ugc2hvdWxkIGRlZmluaXRl
bHkgaW5saW5lIHRoaXMgY29kZS4gUHJvY2VlZAogICAgIC8vIHdpdGggcGFyc2luZyB0aGUgY29k
ZSB0byBnZXQgYnl0ZWNvZGUsIHNvIHRoYXQgd2UgY2FuIHRoZW4gcGFyc2UgdGhlIGJ5dGVjb2Rl
LgorICAgIC8vIE5vdGUgdGhhdCBpZiBMTEludCBpcyBlbmFibGVkLCB0aGUgYnl0ZWNvZGUgd2ls
bCBhbHdheXMgYmUgYXZhaWxhYmxlLiBBbHNvIG5vdGUKKyAgICAvLyB0aGF0IGlmIExMSW50IGlz
IGVuYWJsZWQsIHdlIG1heSBpbmxpbmUgYSBjb2RlIGJsb2NrIHRoYXQgaGFzIG5ldmVyIGJlZW4g
SklUdGVkCisgICAgLy8gYmVmb3JlIQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2Rl
QmxvY2tDYWNoZS5nZXQoQ29kZUJsb2NrS2V5KGV4ZWN1dGFibGUsIGtpbmQpLCBleHBlY3RlZEZ1
bmN0aW9uLT5zY29wZSgpKTsKICAgICBpZiAoIWNvZGVCbG9jaykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwpAQCAtMTcyMiw3ICsxNzIzLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9j
ayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jaywgbV9jdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobWV0
aG9kQ2FsbFN0YXR1cy5pc1NldCgpCi0gICAgICAgICAgICAgICAgJiYgIWdldEJ5SWRTdGF0dXMu
aXNTZXQoKQorICAgICAgICAgICAgICAgICYmICFnZXRCeUlkU3RhdHVzLndhc1NlZW5JbkpJVCgp
CiAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFz
RXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSkgewogICAgICAgICAgICAgICAgIC8v
IEl0J3MgbW9ub21vcnBoaWMgYXMgZmFyIGFzIHdlIGNhbiB0ZWxsLCBzaW5jZSB0aGUgbWV0aG9k
X2NoZWNrIHdhcyBsaW5rZWQKICAgICAgICAgICAgICAgICAvLyBidXQgdGhlIHNsb3cgcGF0aCAo
aS5lLiB0aGUgbm9ybWFsIGdldF9ieV9pZCkgbmV2ZXIgZmlyZWQuCkBAIC0xNzkxLDcgKzE3OTIs
OSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAKICAgICAgICAg
ICAgIE5FWFRfT1BDT0RFKG9wX2dldF9ieV9pZCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWQ6IHsKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbDogewogICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0
KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4
IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgICAg
ICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlm
aWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZF07CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDEwNjg4MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTExMSw2ICsxMTEsOCBAQCBpbmxpbmUgYm9vbCBjYW5Db21waWxlT3Bjb2RlKE9w
Y29kZUlEIG9wCiAgICAgY2FzZSBvcF9wdXRfc2NvcGVkX3ZhcjoKICAgICBjYXNlIG9wX2dldF9i
eV9pZDoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX2RpcmVjdDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoK
ICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6
CiAgICAgY2FzZSBvcF9qbXA6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMDY4ODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ4LDYgKzQ4LDIxIEBAIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQogICAg
IHVpbnQzMl90IGV4aXRJbmRleCA9IGdsb2JhbERhdGEtPm9zckV4aXRJbmRleDsKICAgICBPU1JF
eGl0JiBleGl0ID0gY29kZUJsb2NrLT5vc3JFeGl0KGV4aXRJbmRleCk7CiAgICAgCisgICAgLy8g
TWFrZSBzdXJlIGFsbCBjb2RlIG9uIG91ciBpbmxpbmUgc3RhY2sgaXMgSklUIGNvbXBpbGVkLiBU
aGlzIGlzIG5lY2Vzc2FyeSBzaW5jZQorICAgIC8vIHdlIG1heSBvcHQgdG8gaW5saW5lIGEgY29k
ZSBibG9jayBldmVuIGJlZm9yZSBpdCBoYWQgZXZlciBiZWVuIGNvbXBpbGVkIGJ5IHRoZQorICAg
IC8vIEpJVCwgYnV0IG91ciBPU1IgZXhpdCBpbmZyYXN0cnVjdHVyZSBjdXJyZW50bHkgb25seSB3
b3JrcyBpZiB0aGUgdGFyZ2V0IG9mIHRoZQorICAgIC8vIE9TUiBleGl0IGlzIEpJVCBjb2RlLiBU
aGlzIGNvdWxkIGJlIGNoYW5nZWQgc2luY2UgdGhlcmUgaXMgbm90aGluZyBwYXJ0aWN1bGFybHkK
KyAgICAvLyBoYXJkIGFib3V0IGRvaW5nIGFuIE9TUiBleGl0IGludG8gdGhlIGludGVycHJldGVy
LCBidXQgZm9yIG5vdyB0aGlzIHNlZW1zIHRvIG1ha2UKKyAgICAvLyBzZW5zZSBpbiB0aGF0IGlm
IHdlJ3JlIE9TUiBleGl0aW5nIGZyb20gaW5saW5lZCBjb2RlIG9mIGEgREZHIGNvZGUgYmxvY2ss
IHRoZW4KKyAgICAvLyBwcm9iYWJseSBpdCdzIGEgZ29vZCBzaWduIHRoYXQgdGhlIHRoaW5nIHdl
J3JlIGV4aXRpbmcgaW50byBpcyBob3QuIEV2ZW4gbW9yZQorICAgIC8vIGludGVyZXN0aW5nbHks
IHNpbmNlIHRoZSBjb2RlIHdhcyBpbmxpbmVkLCBpdCBtYXkgbmV2ZXIgb3RoZXJ3aXNlIGdldCBK
SVQKKyAgICAvLyBjb21waWxlZCBzaW5jZSB0aGUgYWN0IG9mIGlubGluaW5nIGl0IG1heSBlbnN1
cmUgdGhhdCBpdCBvdGhlcndpc2UgbmV2ZXIgcnVucy4KKyAgICBmb3IgKENvZGVPcmlnaW4gY29k
ZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luOyBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsg
Y29kZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpIHsKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY29kZU9yaWdpbi5pbmxpbmVDYWxs
RnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpCisgICAgICAgICAgICAtPmJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5pc0NhbGwgPyBDb2RlRm9yQ2FsbCA6IENv
ZGVGb3JDb25zdHJ1Y3QpCisgICAgICAgICAgICAtPmppdENvbXBpbGUoKmdsb2JhbERhdGEpOwor
ICAgIH0KKyAgICAKICAgICBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeSA9IDA7CiAgICAg
aWYgKGV4aXQubV9yZWNvdmVyeUluZGV4KQogICAgICAgICByZWNvdmVyeSA9ICZjb2RlQmxvY2st
PnNwZWN1bGF0aW9uUmVjb3ZlcnkoZXhpdC5tX3JlY292ZXJ5SW5kZXggLSAxKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTA2
ODgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2lu
Y2x1ZGUgIkRGR09TUkV4aXQuaCIKICNpbmNsdWRlICJERkdSZXBhdGNoLmgiCisjaW5jbHVkZSAi
SG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1
ZGUgIklubGluZUFTTS5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC02NzMsNTAgKzY3
NCw2IEBAIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHIKICAgICByZXR1
cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEp
LCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBERkdf
T1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKLUVuY29kZWRKU1ZhbHVlIERGR19P
UEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7
Ci0KLSNpZiBDUFUoWDg2XzY0KQotYXNtICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIK
LSAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgotICAgICJtb3YgJXIxMywgJXJkaVxuIgotICAg
ICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdp
dGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoWDg2KQotYXNtICgKLSIuZ2xvYmwgIiBT
WU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgotICAgICJtb3Yg
JWVkaSwgNCglZXNwKVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoQVJN
X1RIVU1CMikKLWFzbSAoCi0iLnRleHQiICJcbiIKLSIuYWxpZ24gMiIgIlxuIgotIi5nbG9ibCAi
IFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0wo
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotIi50aHVtYiIgIlxuIgotIi50aHVtYl9mdW5j
ICIgVEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xf
U1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgImxkciByNSwgW3I1
LCAjLTQwXSIgIlxuIgotICAgICJjcHkgcjAsIHI1IiAiXG4iCi0gICAgImIgIiBTWU1CT0xfU1RS
SU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIK
LSk7Ci0jZW5kaWYKLQotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKLSAgICBOYXRpdmVDYWxsRnJh
bWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOwotICAgIAotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQot
CiBzdGF0aWMgdm9pZCogaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1Zh
bHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTA2ODgxKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgzNyw3ICs4MzcsNyBAQCB2b2lk
IEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnCiAgICAgICAgIHNldEhpZ2hXYXRl
ck1hcmsobWF4KHByb3BvcnRpb25hbEJ5dGVzLCBtX21pbkJ5dGVzUGVyQ3ljbGUpKTsKICAgICB9
CiAgICAgSkFWQVNDUklQVENPUkVfR0NfRU5EKCk7Ci0KKyAgICAKICAgICAoKm1fYWN0aXZpdHlD
YWxsYmFjaykoKTsKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNp
b24gMTA2ODgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5n
IGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xv
YmFsRGF0YTsKICAgICBjbGFzcyBKU1ZhbHVlOwogICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRv
cjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQXJn
dW1lbnRCdWZmZXI7CiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlOwogICAgIGNsYXNzIFVTdHJpbmc7
CkBAIC0xMzYsMTIgKzEzNywxMyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBnZXRD
b25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJr
ZWRTcGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEFsbG9jYXRvcjsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQnVtcFNwYWNl
OwogICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7Ci0gICAgICAgIGZyaWVuZCBjbGFz
cyBDb2RlQmxvY2s7CiAKICAgICAgICAgc2l6ZV90IHdhdGVyTWFyaygpOwogICAgICAgICBzaXpl
X3QgaGlnaFdhdGVyTWFyaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
U3RhY2suY3BwCShyZXZpc2lvbiAxMDY4ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9NYXJrU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDQsNyArMzA0LDcgQEAgQUxXQVlT
X0lOTElORSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKAogI2VuZGlmCiAKICAgICBBU1NFUlQo
SGVhcDo6aXNNYXJrZWQoY2VsbCkpOwotCisgICAgCiAgICAgaWYgKGlzSlNTdHJpbmcoY2VsbCkp
IHsKICAgICAgICAgSlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4oY29uc3RfY2FzdDxKU0NlbGwqPihj
ZWxsKSwgdmlzaXRvcik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCShyZXZpc2lvbiAxMDY4ODEpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtOCw2ICs4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEhlYXA7CiBjbGFzcyBNYXJr
ZWRTcGFjZTsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogbmFtZXNwYWNlIERGRyB7
CiBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKQEAgLTM0LDYgKzM1LDggQEAgcHVibGljOgogICAgIHZv
aWQgc2V0TWFya2VkU3BhY2UoTWFya2VkU3BhY2UqIHNwYWNlKSB7IG1fbWFya2VkU3BhY2UgPSBz
cGFjZTsgfQogICAgIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQqIGFsbG9jYXRlU2xvd0Nh
c2UoKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZSgpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlSGVs
cGVyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJl
dmlzaW9uIDEwNjg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFz
cyBIZWFwOwogY2xhc3MgSlNDZWxsOwogY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgV2Vha0dDSGFuZGxlOwogY2xhc3MgU2xvdFZp
c2l0b3I7CiAKQEAgLTc2LDYgKzc3LDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29uc3VtZUZy
ZWVMaXN0KE1hcmtlZEJsb2NrKik7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICAvLyBbIDMyLi4uIDI1NiBdCiAgICAgc3RhdGlj
IGNvbnN0IHNpemVfdCBwcmVjaXNlU3RlcCA9IE1hcmtlZEJsb2NrOjphdG9tU2l6ZTsKICAgICBz
dGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VDdXRvZmYgPSAyNTY7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAxMDY4ODEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyMiw2ICsxMjIsOSBAQCBuYW1lc3BhY2UgSlNDICB7CiAjaWYgRU5BQkxF
KElOVEVSUFJFVEVSKQogICAgICAgICBJbnN0cnVjdGlvbiogcmV0dXJuVlBDKCkgY29uc3QgeyBy
ZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKTsgfQogI2VuZGlmCisjaWYg
RU5BQkxFKExMSU5UKQorICAgICAgICBJbnN0cnVjdGlvbiogY3VycmVudFZQQygpIGNvbnN0IHsg
cmV0dXJuIGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KHRoaXNbUmVnaXN0ZXJGaWxlOjpBcmd1
bWVudENvdW50XS50YWcoKSk7IH0KKyNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0Q2FsbGVyRnJh
bWUoQ2FsbEZyYW1lKiBjYWxsZXJGcmFtZSkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMp
W1JlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWVdID0gY2FsbGVyRnJhbWU7IH0KICAgICAgICAgdm9p
ZCBzZXRTY29wZUNoYWluKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKSB7IHN0YXRpY19jYXN0
PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluXSA9IHNjb3BlQ2hhaW47
IH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmNwcAkocmV2aXNpb24gMTA2ODgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBA
QAogI2luY2x1ZGUgIkpJVC5oIgogI2VuZGlmCiAKLSNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVU
RURfR09UT19XT1JLQVJPVU5EIChFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgJiYg
IWRlZmluZWQoX19sbHZtX18pKQorI2RlZmluZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9HT1RPX1dP
UktBUk9VTkQgKChFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExM
SU5UKSkgJiYgIWRlZmluZWQoX19sbHZtX18pKQogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBA
IC01NDcsMTcgKzU0Nyw0MyBAQCBJbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIoKQogewogfQogCi12
b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKQorSW50ZXJwcmV0ZXI6
On5JbnRlcnByZXRlcigpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIp
CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2VuYWJsZWQpCisgICAgICAgIGRlbGV0ZVtd
IG1fb3Bjb2RlVGFibGU7CisjZW5kaWYKK30KKwordm9pZCBJbnRlcnByZXRlcjo6aW5pdGlhbGl6
ZShMTEludDo6RGF0YSogbGxpbnREYXRhLCBib29sIGNhblVzZUpJVCkKK3sKKyAgICBVTlVTRURf
UEFSQU0obGxpbnREYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oY2FuVXNlSklUKTsKKyNpZiBFTkFC
TEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lmICFFTkFC
TEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyAgICAvLyBIYXZpbmcgTExJbnQgZW5hYmxl
ZCwgYnV0IG5vdCBiZWluZyBhYmxlIHRvIHVzZSB0aGUgSklULCBhbmQgbm90IGhhdmluZworICAg
IC8vIGEgY29tcHV0ZWQgZ290byBpbnRlcnByZXRlciwgaXMgbm90IHN1cHBvcnRlZC4gTm90IGJl
Y2F1c2Ugd2UgY2Fubm90CisgICAgLy8gc3VwcG9ydCBpdCwgYnV0IGJlY2F1c2UgSSBkZWNpZGVk
IHRvIGRyYXcgdGhlIGxpbmUgYXQgdGhlIG51bWJlciBvZgorICAgIC8vIHBlcm11dGF0aW9ucyBv
ZiBleGVjdXRpb24gZW5naW5lcyB0aGF0IEkgd2FudGVkIHRoaXMgY29kZSB0byBncm9rLgorICAg
IEFTU0VSVChjYW5Vc2VKSVQpOworI2VuZGlmCiAgICAgaWYgKGNhblVzZUpJVCkgeworI2lmIEVO
QUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJsZSA9IGxsaW50RGF0YS0+b3Bjb2RlTWFw
KCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpCisgICAg
ICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1fb3Bjb2RlVGFibGVbaV0sIHN0YXRpY19jYXN0
PE9wY29kZUlEPihpKSk7CisjZWxzZQogICAgICAgICAvLyBJZiB0aGUgSklUIGlzIHByZXNlbnQs
IGRvbid0IHVzZSBqdW1wIGRlc3RpbmF0aW9ucyBmb3Igb3Bjb2Rlcy4KICAgICAgICAgCiAgICAg
ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpIHsKICAgICAgICAgICAg
IE9wY29kZSBvcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJf
dD4oaSkpOwogICAgICAgICAgICAgbV9vcGNvZGVUYWJsZVtpXSA9IG9wY29kZTsKICAgICAgICAg
fQorI2VuZGlmCiAgICAgfSBlbHNlIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bj
b2RlVGFibGUgPSBuZXcgT3Bjb2RlW251bU9wY29kZUlEc107CisjZW5kaWYKICAgICAgICAgcHJp
dmF0ZUV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVybiwgMCwgMCk7CiAgICAgICAgIAogICAgICAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQpAQCAtNTY2LDcgKzU5Miw2
IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBjYW5Vc2UKICAgICAgICAgbV9l
bmFibGVkID0gdHJ1ZTsKICAgICB9CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShjYW5Vc2VKSVQp
OwogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICBtX2VuYWJsZWQgPSB0cnVlOwogI2Vsc2UK
QEAgLTY2Nyw5ICs2OTIsMTEgQEAgdm9pZCBJbnRlcnByZXRlcjo6ZHVtcFJlZ2lzdGVycyhDYWxs
RnJhbQogCiBib29sIEludGVycHJldGVyOjppc09wY29kZShPcGNvZGUgb3Bjb2RlKQogewotI2lm
IEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9H
T1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJMRShMTElOVCkKICAg
ICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG9wY29kZSA+PSAwICYmIHN0YXRpY19j
YXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKSA8PSBvcF9lbmQ7
CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2RlICE9IEhhc2hUcmFpdHM8T3Bjb2RlPjo6ZW1wdHlW
YWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJhaXRzPE9wY29kZT46OmlzRGVsZXRlZFZhbHVlKG9w
Y29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJRFRhYmxlLmNvbnRhaW5zKG9wY29kZSk7CkBAIC03
MjYsMTEgKzc1MywxMSBAQCBORVZFUl9JTkxJTkUgYm9vbCBJbnRlcnByZXRlcjo6dW53aW5kQ2Fs
CiAgICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAxLgogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShJ
TlRFUlBSRVRFUikKICAgICBpZiAoY2FsbGVyRnJhbWUtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQo
KSkKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNh
bGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2Nr
LT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICAg
ICBlbHNlCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNl
dChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZWxpZiBFTkFCTEUoSklUKQotICAgIGJ5
dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVy
blBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChj
YWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbHNlCiAgICAgYnl0ZWNvZGVP
ZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkp
IC0gMTsKICNlbmRpZgpAQCAtMzMyNyw2ICszMzU0LDggQEAgc2tpcF9pZF9jdXN0b21fc2VsZjoK
ICNpZiBVU0UoR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCkKICAgICAgIHNraXBfcHV0X2J5
X2lkOgogI2VuZGlmCisgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3QpCisgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwp
CiAgICAgREVGSU5FX09QQ09ERShvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbikgewogICAgICAgICAv
KiBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiBiYXNlKHIpIHByb3BlcnR5KGlkKSB2YWx1ZShyKSBv
bGRTdHJ1Y3R1cmUoc0lEKSBuZXdTdHJ1Y3R1cmUoc0lEKSBzdHJ1Y3R1cmVDaGFpbihjaGFpbikg
b2Zmc2V0KG4pIGRpcmVjdChiKQogICAgICAgICAgCkBAIC01MTYwLDEwICs1MTg5LDEwIEBAIHZv
aWQgSW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcihDYWwKICAgICAgICAgYnl0ZWNvZGVP
ZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJu
VlBDKCkpOwogI2lmIEVOQUJMRShKSVQpCiAgICAgZWxzZQotICAgICAgICBieXRlY29kZU9mZnNl
dCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygp
KTsKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zm
c2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAjZWxzZQot
ICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxs
RnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2Nr
LT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNl
bmRpZgogICAgIGxpbmVOdW1iZXIgPSBjYWxsZXJDb2RlQmxvY2stPmxpbmVOdW1iZXJGb3JCeXRl
Y29kZU9mZnNldChieXRlY29kZU9mZnNldCAtIDEpOwogICAgIHNvdXJjZUlEID0gY2FsbGVyQ29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlSUQoKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5oCShyZXZpc2lvbiAxMDY4
ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAko
d29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgIkpTQ2VsbC5oIgogI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkxMSW50
RGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgog
CkBAIC00NSw2ICs0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uRXhl
Y3V0YWJsZTsKICAgICBjbGFzcyBKU0Z1bmN0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0
OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtRXhl
Y3V0YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsK
QEAgLTEwMCwxOSArMTAyLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSW50ZXJw
cmV0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgZnJpZW5k
IGNsYXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7CisgICAgICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBK
SVQ7CiAgICAgcHVibGljOgogICAgICAgICBJbnRlcnByZXRlcigpOworICAgICAgICB+SW50ZXJw
cmV0ZXIoKTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGNhblVzZUpJ
VCk7CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZShMTEludDo6RGF0YSosIGJvb2wgY2FuVXNlSklU
KTsKIAogICAgICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSgpIHsgcmV0dXJuIG1fcmVn
aXN0ZXJGaWxlOyB9CiAgICAgICAgIAogICAgICAgICBPcGNvZGUgZ2V0T3Bjb2RlKE9wY29kZUlE
IGlkKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7Ci0jaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dP
VE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgICAgIHJldHVybiBtX29w
Y29kZVRhYmxlW2lkXTsKICNlbHNlCiAgICAgICAgICAgICByZXR1cm4gaWQ7CkBAIC0xMjIsNyAr
MTI2LDEwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPcGNvZGVJRCBnZXRPcGNvZGVJRChP
cGNvZGUgb3Bjb2RlKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0aWFsaXpl
ZCk7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExM
SU5UKQorICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOworICAgICAgICAgICAg
cmV0dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKKyNlbGlmIEVOQUJMRShDT01QVVRF
RF9HT1RPX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkp
OwogICAgICAgICAgICAgaWYgKCFtX2VuYWJsZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKTsKQEAg
LTEzMiw2ICsxMzksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gb3Bj
b2RlOwogI2VuZGlmCiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgZW5hYmxlZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2VuYWJsZWQ7CisgICAgICAgIH0KIAog
ICAgICAgICBib29sIGlzT3Bjb2RlKE9wY29kZSk7CiAKQEAgLTE5OSw3ICsyMTEsMTAgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlIG1fcmVnaXN0ZXJGaWxlOwogICAg
ICAgICAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgICAgIE9wY29kZSogbV9vcGNvZGVUYWJsZTsgLy8gTWFwcyBPcGNvZGVJRCA9
PiBPcGNvZGUgZm9yIGNvbXBpbGluZworICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+
IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGls
aW5nCisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKICAgICAgICAgT3Bj
b2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2RlSURzXTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNv
ZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bj
b2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZp
bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVn
aXN0ZXJGaWxlLmgJKHJldmlzaW9uIDEwNjg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwogICAgIGNs
YXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAg
ICAgY2xhc3MgUmVnaXN0ZXJGaWxlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUmVn
aXN0ZXJGaWxlKTsKQEAgLTgxLDYgKzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0K
IAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CisgICAgICAgIAogICAgICAgICBib29sIGdyb3dTbG93Q2FzZShSZWdpc3RlciopOwogICAg
ICAgICB2b2lkIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwogICAgICAgICB2b2lkIGFkZFRvQ29t
bWl0dGVkQnl0ZUNvdW50KGxvbmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9I
b3N0Q2FsbFJldHVyblZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5o
IgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSW5saW5lQVNNLmgiCisjaW5j
bHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1ZhbHVlSW5saW5lTWV0aG9kcy5oIgorI2lu
Y2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBDT01QSUxFUihH
Q0MpCisKKyNpZiBDUFUoWDg2XzY0KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJc
biIKKyAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgorICAgICJtb3YgJXIxMywgJXJkaVxuIgor
ICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUoWDg2KQorYXNtICgKKyIuZ2xvYmwg
IiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lNQk9M
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgorICAgICJt
b3YgJWVkaSwgNCglZXNwKVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04o
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUo
QVJNX1RIVU1CMikKK2FzbSAoCisiLnRleHQiICJcbiIKKyIuYWxpZ24gMiIgIlxuIgorIi5nbG9i
bCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1C
T0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorIi50aHVtYiIgIlxuIgorIi50aHVtYl9m
dW5jICIgVEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1C
T0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgImxkciByNSwg
W3I1LCAjLTQwXSIgIlxuIgorICAgICJjcHkgcjAsIHI1IiAiXG4iCisgICAgImIgIiBTWU1CT0xf
U1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJc
biIKKyk7CisjZW5kaWYKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVU
VVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVj
U3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFleGVjKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9i
YWxEYXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Cit9CisKKyNlbmRpZiAvLyBDT01QSUxFUihH
Q0MpCisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisjZGVmaW5lIEhvc3RDYWxsUmV0dXJu
VmFsdWVfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVy
Q29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisvLyBVbmZvcnR1bmF0ZWx5
IHRoaXMgb25seSB3b3JrcyBvbiBHQ0MtbGlrZSBjb21waWxlcnMuIEFuZCBpdCdzIGN1cnJlbnRs
eSBvbmx5IHVzZWQKKy8vIGJ5IExMSW50IGFuZCBERkcsIHdoaWNoIGFsc28gYXJlIHJlc3RyaWN0
ZWQgdG8gR0NDLWxpa2UgY29tcGlsZXJzLiBXZSBzaG91bGQKKy8vIHByb2JhYmx5IGZpeCB0aGF0
IGF0IHNvbWUgcG9pbnQuCisjaWYgQ09NUElMRVIoR0NDKQorCisjaWYgQ0FMTElOR19DT05WRU5U
SU9OX0lTX1NURENBTEwKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gQ0RF
Q0wKKyNlbHNlCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OCisjZW5kaWYK
KworbmFtZXNwYWNlIEpTQyB7CisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxM
X1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOworCisvLyBUaGlz
IGlzIGEgcHVibGljIGRlY2xhcmF0aW9uIG9ubHkgdG8gY29udmluY2UgQ0xBTkcgbm90IHRvIGVs
aWRlIGl0LgorZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVF
X09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqKTsK
KworaW5saW5lIHZvaWQgaW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJuVmFsdWUoKQoreworICAgIGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKDApOworfQorCit9CisKKyNlbHNlIC8v
IENPTVBJTEVSKEdDQykKKworbmFtZXNwYWNlIEpTQyB7CitpbmxpbmUgdm9pZCBpbml0aWFsaXpl
SG9zdENhbGxSZXR1cm5WYWx1ZSgpIHsgfQorfQorCisjZW5kaWYgLy8gQ09NUElMRVIoR0NDKQor
CisjZW5kaWYgLy8gSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAJKHJldmlzaW9uIDEwNjg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw4IEBAIHZvaWQgSklUOjpw
cml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3Byb2ZpbGVfd2ls
bF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9uZXdfc2NvcGUpCiAgICAgICAgIERF
RklORV9PUChvcF9wdXNoX3Njb3BlKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6
CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChvcF9w
dXRfYnlfaW5kZXgpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsKQpAQCAtNDg2LDYg
KzQ4OCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgIERF
RklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09Q
KG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVfaW5jKQorICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlfdmFs
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcmVzb2x2ZV9nbG9iYWwpCkBAIC01MjUs
NiArNTI5LDEwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAKIEpJVENv
ZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5jdGlvbkVudHJ5QXJpdHlDaGVjaykK
IHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiQ29tcGlsaW5nIEpJ
VCBjb2RlIVxuIik7CisjZW5kaWYKKyAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCiAg
ICAgbV9jYW5CZU9wdGltaXplZCA9IG1fY29kZUJsb2NrLT5jYW5Db21waWxlV2l0aERGRygpOwog
I2VuZGlmCkBAIC02ODksOCArNjk3LDEyIEBAIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShD
b2RlUHRyKiBmdW4KICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBtX2NvZGVCbG9j
ay0+c3RydWN0dXJlU3R1YkluZm8obV9tZXRob2RDYWxsQ29tcGlsYXRpb25JbmZvW2ldLnByb3Bl
cnR5QWNjZXNzSW5kZXgpLmNhbGxSZXR1cm5Mb2NhdGlvbjsKICAgICB9CiAKLSNpZiBFTkFCTEUo
REZHX0pJVCkKLSAgICBpZiAobV9jYW5CZU9wdGltaXplZCkgeworI2lmIEVOQUJMRShERkdfSklU
KSB8fCBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQKKyNpZiBFTkFCTEUo
TExJTlQpCisgICAgICAgIHx8IHRydWUKKyNlbmRpZgorICAgICAgICApIHsKICAgICAgICAgQ29t
cGFjdEpJVENvZGVNYXA6OkVuY29kZXIgaml0Q29kZU1hcEVuY29kZXI7CiAgICAgICAgIGZvciAo
dW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IG1fbGFiZWxzLnNp
emUoKTsgKytieXRlY29kZU9mZnNldCkgewogICAgICAgICAgICAgaWYgKG1fbGFiZWxzW2J5dGVj
b2RlT2Zmc2V0XS5pc1NldCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
b2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJ
KHJldmlzaW9uIDEwNjg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBKSVRDb2RlKCkgeyB9CiAjZW5kaWYKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gSklUVHlw
ZSB7IEhvc3RDYWxsVGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsKKyAgICAgICAgZW51bSBK
SVRUeXBlIHsgTm9uZSwgSG9zdENhbGxUaHVuaywgSW50ZXJwcmV0ZXJUaHVuaywgQmFzZWxpbmVK
SVQsIERGR0pJVCB9OwogICAgICAgICAKICAgICAgICAgc3RhdGljIEpJVFR5cGUgYm90dG9tVGll
ckpJVCgpCiAgICAgICAgIHsKQEAgLTY2LDggKzY2LDE5IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAgICAgcmV0dXJuIERGR0pJVDsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAgc3Rh
dGljIGJvb2wgaXNPcHRpbWl6aW5nSklUKEpJVFR5cGUgaml0VHlwZSkKKyAgICAgICAgeworICAg
ICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gREZHSklUOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBzdGF0aWMgYm9vbCBpc0Jhc2VsaW5lQ29kZShKSVRUeXBlIGppdFR5cGUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IEludGVycHJldGVyVGh1bmsgfHwg
aml0VHlwZSA9PSBCYXNlbGluZUpJVDsKKyAgICAgICAgfQorICAgICAgICAKICNpZiBFTkFCTEUo
SklUKQogICAgICAgICBKSVRDb2RlKCkKKyAgICAgICAgICAgIDogbV9qaXRUeXBlKE5vbmUpCiAg
ICAgICAgIHsKICAgICAgICAgfQogCkBAIC03NSw2ICs4Niw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgOiBtX3JlZihyZWYpCiAgICAgICAgICAgICAsIG1faml0VHlwZShqaXRUeXBl
KQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaml0VHlwZSAhPSBOb25lKTsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciAhKCkgY29uc3QKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkocmV2aXNpb24gMTA2ODgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzMs
MTUgKzMzLDIxIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJE
RkdEcml2ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9pbnRz
LmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tUeXBl
PgogaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29k
ZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVC
bG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAo
IWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAg
IGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29t
cGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAg
ICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlKGdsb2JhbERhdGEsIGNvZGVCbG9jay5n
ZXQoKSwgaml0Q29kZSk7CkBAIC02Miw5ICs2OCwxNCBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxl
SWZBcHByb3ByaWF0ZShKU0dsCiAKIGlubGluZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklmQXBw
cm9wcmlhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxv
Y2s+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYg
aml0Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBK
SVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CisgICAgaWYgKGppdFR5cGUgPT0gY29kZUJsb2Nr
LT5nZXRKSVRUeXBlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAogICAgIGlmICghZ2xv
YmFsRGF0YS5jYW5Vc2VKSVQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisgICAgY29k
ZUJsb2NrLT51bmxpbmtJbmNvbWluZ0NhbGxzKCk7CisgICAgCiAgICAgYm9vbCBkZmdDb21waWxl
ZCA9IGZhbHNlOwogICAgIGlmIChqaXRUeXBlID09IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAg
ZGZnQ29tcGlsZWQgPSBERkc6OnRyeUNvbXBpbGVGdW5jdGlvbihnbG9iYWxEYXRhLCBjb2RlQmxv
Y2suZ2V0KCksIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CkBAIC03OSw3ICs5MCw2
IEBAIGlubGluZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmkKICAgICAgICAgfQog
ICAgICAgICBqaXRDb2RlID0gSklUOjpjb21waWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0
KCksICZqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAgIH0KLSAgICAKICAgICBjb2RlQmxvY2st
PnNldEpJVENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKICAgICAKICAgICBy
ZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9u
cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNlcHRp
b25zLmNwcAkocmV2aXNpb24gMTA2ODgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBFeGNlcHRp
b25IYW5kbGVyIGdlbmVyaWNUaHJvdyhKU0dsb2JhbERhCiAKIEV4Y2VwdGlvbkhhbmRsZXIgaml0
VGhyb3coSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVjU3RhdGUqIGNhbGxGcmFtZSwgSlNW
YWx1ZSBleGNlcHRpb25WYWx1ZSwgUmV0dXJuQWRkcmVzc1B0ciBmYXVsdExvY2F0aW9uKQogewot
ICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBleGNlcHRpb25W
YWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZmF1bHRMb2NhdGlv
bikpOworICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBleGNl
cHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZy
YW1lLCBmYXVsdExvY2F0aW9uKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMDY4ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0Niw2ICsxNDQ2LDcgQEAg
REVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5X2lkXwogICAgIFB1dFByb3BlcnR5
U2xvdCBzbG90KGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKICAgICBK
U1ZhbHVlIGJhc2VWYWx1ZSA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7CiAgICAgQVNT
RVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKKyAgICAKICAgICBhc09iamVjdChiYXNlVmFsdWUp
LT5wdXREaXJlY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGlkZW50LCBzdGFja0ZyYW1lLmFy
Z3NbMl0uanNWYWx1ZSgpLCBzbG90KTsKICAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKQEAgLTE5MzEsNyArMTkzMiw3IEBA
IERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20KICAgICB1bnNpZ25lZCBi
eXRlY29kZUluZGV4ID0gc3RhY2tGcmFtZS5hcmdzWzBdLmludDMyKCk7CiAKICNpZiBFTkFCTEUo
SklUX1ZFUkJPU0VfT1NSKQotICAgIHByaW50ZigiRW50ZXJlZCBvcHRpbWl6ZV9mcm9tX2xvb3Ag
d2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICV1
LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAldVxuIiwgY29kZUJsb2NrLT5qaXRFeGVjdXRl
Q291bnRlcigpLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCksIGNvZGVC
bG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOworICAgIHByaW50ZigiJXA6IEVudGVy
ZWQgb3B0aW1pemVfZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6
YXRpb25SZXRyeUNvdW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIs
IGNvZGVCbG9jaywgY29kZUJsb2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLCBjb2RlQmxvY2stPnJl
b3B0aW1pemF0aW9uUmV0cnlDb3VudGVyKCksIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlD
b3VudGVyKCkpOwogI2VuZGlmCiAKICAgICBpZiAoY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBs
YWNlbWVudCgpKSB7CkBAIC0yMTg2LDQ1ICsyMTg3LDEzIEBAIERFRklORV9TVFVCX0ZVTkNUSU9O
KHZvaWQqLCBvcF9jb25zdHJ1Y3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1pbmxpbmUgQ2Fs
bEZyYW1lKiBhcml0eUNoZWNrRm9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBSZWdpc3RlckZpbGUq
IHJlZ2lzdGVyRmlsZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQotewotICAgIEpTRnVu
Y3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oY2FsbEZyYW1lLT5jYWxsZWUoKSk7Ci0gICAgQVNT
RVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwotICAgIENvZGVCbG9jayogbmV3Q29kZUJs
b2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQp
OwotICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKLQotICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3Bh
Y2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBi
eSB0aGUgY2FsbGVyLgotICAgIGlmICghcmVnaXN0ZXJGaWxlLT5ncm93KGNhbGxGcmFtZS0+cmVn
aXN0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+
bV9udW1DYWxsZWVSZWdpc3RlcnMpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEFTU0VSVChh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
KTsKLQotICAgIC8vIFRvbyBmZXcgYXJndW1lbnRzIC0tIGNvcHkgY2FsbCBmcmFtZSBhbmQgYXJn
dW1lbnRzLCB0aGVuIGZpbGwgaW4gbWlzc2luZyBhcmd1bWVudHMgd2l0aCB1bmRlZmluZWQuCi0g
ICAgc2l6ZV90IGRlbHRhID0gbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpczsKLSAgICBSZWdpc3Rlciogc3JjID0gY2FsbEZyYW1lLT5yZWdp
c3RlcnMoKTsKLSAgICBSZWdpc3RlciogZHN0ID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIGRl
bHRhOwotCi0gICAgaW50IGk7Ci0gICAgaW50IGVuZCA9IC1DYWxsRnJhbWU6Om9mZnNldEZvcihh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7Ci0gICAgZm9yIChpID0gLTE7IGkgPj0gZW5kOyAt
LWkpCi0gICAgICAgIGRzdFtpXSA9IHNyY1tpXTsKLQotICAgIGVuZCAtPSBkZWx0YTsKLSAgICBm
b3IgKCA7IGkgPj0gZW5kOyAtLWkpCi0gICAgICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7Ci0K
LSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGRzdCk7Ci0g
ICAgQVNTRVJUKCh2b2lkKiluZXdDYWxsRnJhbWUgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7Ci0g
ICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsKLX0KLQogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCos
IG9wX2NhbGxfYXJpdHlDaGVjaykKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tG
cmFtZSk7CiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1l
OwogCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBhcml0eUNoZWNrRm9yKGNhbGxGcmFt
ZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDYWxsKTsKKyAgICBDYWxsRnJhbWUq
IG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUs
IHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CiAgICAgaWYgKCFuZXdDYWxs
RnJhbWUpCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0
YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVy
Zmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOwogCkBAIC0yMjM3LDcgKzIyMDYs
NyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogCi0gICAgQ2FsbEZyYW1l
KiBuZXdDYWxsRnJhbWUgPSBhcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdp
c3RlckZpbGUsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1l
ID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5y
ZWdpc3RlckZpbGUsIENvZGVGb3JDb25zdHJ1Y3QpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQog
ICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1l
LCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJv
cihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkocmV2aXNpb24gMTA2ODgxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4
ICsyNiwxMCBAQAogI2lmbmRlZiBKU0ludGVyZmFjZUpJVF9oCiAjZGVmaW5lIEpTSW50ZXJmYWNl
SklUX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJKSVRD
b2RlLmgiCiAjaW5jbHVkZSAiSklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgogI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUg
IlJlZ2lzdGVyRmlsZS5oIgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
Q29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
Q29tbW9uLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRDb21tb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50Q29tbW9uX2gKKyNk
ZWZpbmUgTExJbnRDb21tb25faAorCisjZGVmaW5lIExMSU5UX0VYRUNVVElPTl9UUkFDSU5HIDAK
KyNkZWZpbmUgTExJTlRfSEVMUEVSX1RSQUNJTkcgMAorI2RlZmluZSBMTElOVF9BTFdBWVNfQUxM
T0NBVEVfU0xPVyAwCisKKyNlbmRpZiAvLyBMTEludENvbW1vbl9oCisKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorCisjaWYgRU5BQkxF
KExMSU5UKQorCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbElu
dGVycHJldGVyLmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1l
c3BhY2UgTExJbnQgeworCitEYXRhOjpEYXRhKCkKKyAgICA6IG1fZXhjZXB0aW9uSW5zdHJ1Y3Rp
b25zKG5ldyBJbnN0cnVjdGlvblttYXhPcGNvZGVMZW5ndGggKyAxXSkKKyAgICAsIG1fb3Bjb2Rl
TWFwKG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXSkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IG1heE9wY29kZUxlbmd0aCArIDE7ICsraSkKKyAgICAgICAgbV9leGNlcHRpb25JbnN0cnVjdGlv
bnNbaV0udS5wb2ludGVyID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZnJvbV9o
ZWxwZXJfdHJhbXBvbGluZSk7CisjZGVmaW5lIE9QQ09ERV9FTlRSWShvcGNvZGUsIGxlbmd0aCkg
bV9vcGNvZGVNYXBbb3Bjb2RlXSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50XyMjb3Bjb2Rl
KTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0VOVFJZKTsKKyN1bmRlZiBPUENPREVf
RU5UUlkKK30KKworRGF0YTo6fkRhdGEoKQoreworICAgIGRlbGV0ZVtdIG1fZXhjZXB0aW9uSW5z
dHJ1Y3Rpb25zOworICAgIGRlbGV0ZVtdIG1fb3Bjb2RlTWFwOworfQorCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludERhdGFfaAorI2RlZmluZSBMTEludERhdGFfaAorCisjaW5jbHVkZSAiT3Bjb2RlLmgi
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3Qg
SW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKKyNpZiBFTkFCTEUoTExJTlQpCitj
bGFzcyBEYXRhIHsKK3B1YmxpYzoKKyAgICBEYXRhKCk7CisgICAgfkRhdGEoKTsKKyAgICAKKyAg
ICBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBv
cGNvZGVNYXAoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fb3Bjb2RlTWFwOworICAgIH0KK3By
aXZhdGU6CisgICAgSW5zdHJ1Y3Rpb24qIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIE9w
Y29kZSogbV9vcGNvZGVNYXA7Cit9OworI2Vsc2UgLy8gRU5BQkxFKExMSU5UKQorCisjaWYgQ09N
UElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XbWlzc2luZy1ub3JldHVybiIKKyNlbmRpZgorCitjbGFz
cyBEYXRhIHsKK3B1YmxpYzoKKyAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25z
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
MDsKKyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQorICAgIHsKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK307CisKKyNp
ZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgor
CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQK
KworI2VuZGlmIC8vIExMSW50RGF0YV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEVudHJ5cG9pbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIK
KworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlICJK
U0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJMTEludFRodW5rcy5oIgorI2luY2x1ZGUgIkxvd0xl
dmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisK
K3ZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxl
ckNvZGVQdHImIGFyaXR5Q2hlY2spCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgp
KSB7CisgICAgICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAgICBqaXRD
b2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRl
U2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSkpKSk7CisgICAgICAgICAgICBh
cml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKSk7CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKworICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsK
KyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkp
KSk7CisgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9j
YXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaykpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChraW5kID09IENvZGVGb3JDYWxs
KSB7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5j
dGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVu
ayk7CisgICAgICAgIGFyaXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25G
b3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBqaXRD
b2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RF
bnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgYXJp
dHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5
Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgpOworfQorCit2b2lkIGdldEV2YWxFbnRyeXBvaW50
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAo
IWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhv
c3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJl
ZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZXZhbF9w
cm9sb2d1ZSkpKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9
IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwg
SklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7Cit9CisKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9p
bnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlm
ICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6
SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2Rl
UmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9wcm9n
cmFtX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRD
b2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5l
cmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKK30KKworfSB9IC8vIG5hbWVzcGFj
ZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgTExJbnRFbnRyeXBvaW50c19oCisjZGVmaW5lIExMSW50RW50
cnlwb2ludHNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJ
TlQpCisKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBFdmFsQ29kZUJsb2NrOworY2xhc3MgSklUQ29kZTsKK2NsYXNzIEpTR2xv
YmFsRGF0YTsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVB0cjsKK2NsYXNzIE1hY3JvQXNzZW1i
bGVyQ29kZVJlZjsKK2NsYXNzIFByb2dyYW1Db2RlQmxvY2s7CisKK25hbWVzcGFjZSBMTEludCB7
CisKK3ZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQsIEpJVENvZGUmLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2sp
Owordm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBKSVRDb2RlJik7Cit2b2lk
IGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKKworaW5saW5l
IHZvaWQgZ2V0RW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEV2YWxDb2RlQmxv
Y2sqLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGdldEV2YWxFbnRyeXBvaW50KGdsb2JhbERh
dGEsIGppdENvZGUpOworfQorCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgUHJvZ3JhbUNvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7Cisg
ICAgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5k
aWYgLy8gTExJbnRFbnRyeXBvaW50c19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKworI2lm
IEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgorI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSklURXhjZXB0aW9u
cy5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnBy
ZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBpbnRl
cnByZXRlclRocm93SW5DYWxsZXIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RS
QUNJTkcKKyAgICBwcmludGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcy5cbiIsIGdsb2JhbERhdGEt
PmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdygKKyAg
ICAgICAgZ2xvYmFsRGF0YSwgZXhlYy0+Y2FsbGVyRnJhbWUoKSwgZ2xvYmFsRGF0YS0+ZXhjZXB0
aW9uLAorICAgICAgICBleGVjLT5jYWxsZXJGcmFtZSgpLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVP
ZmZzZXQoZXhlYy0+Y2FsbGVyRnJhbWUoKSwgZXhlYy0+cmV0dXJuUEMoKSkpOworfQorCitJbnN0
cnVjdGlvbiogcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihFeGVjU3RhdGUqIGV4ZWMp
Cit7CisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5sbGludERhdGEuZXhjZXB0aW9uSW5z
dHJ1Y3Rpb25zKCk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSog
ZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9
ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmlu
dGYoIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAocmV0dXJuVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRh
LT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coZ2xv
YmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9j
aygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAKKyAgICByZXR1cm4gZ2xvYmFsRGF0
YS0+bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworfQorCit2b2lkKiBjYWxsVG9U
aHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9U
UkFDSU5HCisgICAgcHJpbnRmKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKGNhbGxUb1Rocm93KS5c
biIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdl
bmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0g
ZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJl
dHVybiBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9s
aW5lKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFC
TEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRp
b25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhj
ZXB0aW9ucy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RXhjZXB0aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRFeGNlcHRp
b25zX2gKKyNkZWZpbmUgTExJbnRFeGNlcHRpb25zX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIEVOQUJMRShMTElOVCkK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlv
bjsKKworbmFtZXNwYWNlIExMSW50IHsKKworLy8gVGhyb3cgdGhlIGN1cnJlbnRseSBhY3RpdmUg
ZXhjZXB0aW9uIGluIHRoZSBjb250ZXh0IG9mIHRoZSBjYWxsZXIncyBjYWxsIGZyYW1lLgordm9p
ZCBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoRXhlY1N0YXRlKik7CisKKy8vIFRlbGxzIHlvdSB3
aGVyZSB0byBqdW1wIHRvIGlmIHlvdSB3YW50IHRvIHJldHVybi10by10aHJvdywgYWZ0ZXIgeW91
J3ZlIGFscmVhZHkKKy8vIHNldCB1cCBhbGwgaW5mb3JtYXRpb24gbmVlZGVkIHRvIHRocm93IHRo
ZSBleGNlcHRpb24uCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlv
bihFeGVjU3RhdGUqKTsKKworLy8gU2F2ZXMgdGhlIGN1cnJlbnQgUEMgaW4gdGhlIGdsb2JhbCBk
YXRhIGZvciBzYWZlLWtlZXBpbmcsIGFuZCBnaXZlcyB5b3UgYSBQQworLy8gdGhhdCB5b3UgY2Fu
IHRlbGwgdGhlIGludGVycHJldGVyIHRvIGdvIHRvLCB3aGljaCB3aGVuIGFkdmFuY2VkIGJldHdl
ZW4gMQorLy8gYW5kIDkgc2xvdHMgd2lsbCBnaXZlIHlvdSBhbiAiaW5zdHJ1Y3Rpb24iIHRoYXQg
dGhyZWFkcyB0byB0aGUgaW50ZXJwcmV0ZXIncworLy8gZXhjZXB0aW9uIGhhbmRsZXIuIE5vdGUg
dGhhdCBpZiB5b3UgZ2l2ZSBpdCB0aGUgUEMgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZywKKy8vIGl0
J3Mgc21hcnQgZW5vdWdoIHRvIGp1c3QgcmV0dXJuIHRoYXQgUEMgd2l0aG91dCBkb2luZyBhbnl0
aGluZyBlbHNlOyB0aGlzCisvLyBsZXRzIHlvdSB0aHJlYWQgZXhjZXB0aW9uIGhhbmRsaW5nIHRo
cm91Z2ggY29tbW9uIGhlbHBlciBmdW5jdGlvbnMgdXNlZCBieQorLy8gb3RoZXIgaGVscGVycy4K
K0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisK
Ky8vIFVzZSB0aGlzIHdoZW4geW91J3JlIHRocm93aW5nIHRvIGEgY2FsbCB0aHVuay4KK3ZvaWQq
IGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJ
bnRFeGNlcHRpb25zX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhl
bHBlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEhlbHBlcnMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50SGVscGVycy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU0MyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRIZWxwZXJzLmgiCisKKyNpZiBFTkFCTEUoTExJTlQp
CisKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNs
dWRlICJDb21tb25TbG93UGF0aHMuaCIKKyNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNs
dWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNp
bmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJKSVREcml2ZXIuaCIKKyNpbmNsdWRlICJKU0FjdGl2
YXRpb24uaCIKKyNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2lu
Y2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgIkxM
SW50RXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNs
dWRlICJPcGVyYXRpb25zLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewor
CisjZGVmaW5lIExMSU5UX0JFR0lOKCkgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBleGVjKQorCisjZGVmaW5lIExMSU5UX09QKGluZGV4KSAoZXhlYy0+
dW5jaGVja2VkUihwY1tpbmRleF0udS5vcGVyYW5kKSkKKyNkZWZpbmUgTExJTlRfT1BfQyhpbmRl
eCkgKGV4ZWMtPnIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJO
X1RXTyhmaXJzdCwgc2Vjb25kKSBkbyB7ICAgICAgIFwKKyAgICAgICAgdW5pb24geyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHN0cnVjdCB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB2b2lkKiBhOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB2b2lkKiBiOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gcGFpcjsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGludDY0X3QgaTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgfSBfX3J0X3U7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgX19ydF91LnBhaXIuYSA9IGZpcnN0OyAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgX19ydF91LnBhaXIuYiA9IHNlY29uZDsgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgcmV0dXJuIF9fcnRfdS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9FTkRfSU1QTCgpIExMSU5U
X1JFVFVSTl9UV08ocGMsIGV4ZWMpCisKKyNkZWZpbmUgTExJTlRfVEhST1coZXhjZXB0aW9uVG9U
aHJvdykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNHbG9iYWxEYXRh
JiBfX3RfZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsgICAgICAgIFwKKyAgICAgICAg
X190X2dsb2JhbERhdGEuZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAg
IFwKKyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmlu
ZSBMTElOVF9DSEVDS19FWENFUFRJT04oKSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIGlmIChVTkxJS0VMWShleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgeyAgIFwKKyAg
ICAgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgXAor
ICAgICAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9FTkQoKSBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAg
ICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0JSQU5DSChvcGNv
ZGUsIGNvbmRpdGlvbikgZG8geyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGJvb2wg
X19iX2NvbmRpdGlvbiA9IChjb25kaXRpb24pOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIGlmIChfX2JfY29uZGl0aW9uKSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwYyArPSBwY1tPUENPREVfTEVOR1RI
KG9wY29kZSkgLSAxXS51Lm9wZXJhbmQ7ICAgICAgICBcCisgICAgICAgIGVsc2UgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAg
ICBwYyArPSBPUENPREVfTEVOR1RIKG9wY29kZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJO
KHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNWYWx1ZSBfX3JfcmV0dXJu
VmFsdWUgPSAodmFsdWUpOyAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfT1AoMSkgPSBfX3JfcmV0dXJuVmFsdWU7
ICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fUFJPRklM
RUQob3Bjb2RlLCB2YWx1ZSkgZG8geyAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNWYWx1ZSBf
X3JwX3JldHVyblZhbHVlID0gKHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBMTElOVF9PUCgxKSA9IF9fcnBfcmV0dXJuVmFsdWU7ICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5wcm9m
aWxlLT5tX2J1Y2tldHNbMF0gPSBcCisgICAgICAgICAgICBKU1ZhbHVlOjplbmNvZGUoX19ycF9y
ZXR1cm5WYWx1ZSk7ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChm
YWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0VORF9JTVBMKGV4ZWMsIGNhbGxUYXJnZXQpIExM
SU5UX1JFVFVSTl9UV08oKGNhbGxUYXJnZXQpLCAoZXhlYykpCisKKyNkZWZpbmUgTExJTlRfQ0FM
TF9USFJPVyhleGVjLCBwYywgZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgIFwK
KyAgICAgICAgRXhlY1N0YXRlKiBfX2N0X2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3RfcGMgPSAocGMpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNHbG9iYWxEYXRh
JiBfX2N0X2dsb2JhbERhdGEgPSAoX19jdF9leGVjKS0+Z2xvYmFsRGF0YSgpOyAgICAgIFwKKyAg
ICAgICAgX19jdF9nbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Rocm93KTsgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2N0X2V4ZWMsIGNh
bGxUb1Rocm93KF9fY3RfZXhlYywgX19jdF9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
KyNkZWZpbmUgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpIGRvIHsgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2NjZV9leGVjID0gKGV4ZWMp
OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24q
IF9fY2NlX3BjID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgaWYgKFVOTElLRUxZKF9fY2NlX2V4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jY2VfZXhl
YywgY2FsbFRvVGhyb3coX19jY2VfZXhlYywgX19jY2VfcGMpKTsgXAorICAgIH0gd2hpbGUgKGZh
bHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfUkVUVVJOKGV4ZWMsIHBjLCBjYWxsVGFyZ2V0KSBk
byB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jcl9leGVjID0g
KGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3Ry
dWN0aW9uKiBfX2NyX3BjID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIHZvaWQqIF9fY3JfY2FsbFRhcmdldCA9IChjYWxsVGFyZ2V0KTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9O
KF9fY3JfZXhlYy0+Y2FsbGVyRnJhbWUoKSwgX19jcl9wYyk7ICBcCisgICAgICAgIExMSU5UX0NB
TExfRU5EX0lNUEwoX19jcl9leGVjLCBfX2NyX2NhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICBc
CisgICAgfSB3aGlsZSAoZmFsc2UpCisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGlu
dF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJv
bVdoZXJlLCBpbnQgb3BlcmFuZCkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4ZWN1dGluZyBi
YyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZFxuIiwKKyAgICAgICAgICAgZXhlYy0+Y29k
ZUJsb2NrKCksCisgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0
cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAg
ICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1sw
XS51Lm9wY29kZSksCisgICAgICAgICAgIGZyb21XaGVyZSwKKyAgICAgICAgICAgb3BlcmFuZCwK
KyAgICAgICAgICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0
ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCkKK3sK
KyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQyhvcGVyYW5kKS5qc1ZhbHVlKCk7CisgICAg
dW5pb24geworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgdWludDMyX3QgdGFnOworICAg
ICAgICAgICAgdWludDMyX3QgcGF5bG9hZDsKKyAgICAgICAgfSBiaXRzOworICAgICAgICBFbmNv
ZGVkSlNWYWx1ZSBhc1ZhbHVlOworICAgIH0gdTsKKyAgICB1LmFzVmFsdWUgPSBKU1ZhbHVlOjpl
bmNvZGUodmFsdWUpOworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3Aj
JXU6IFRyYWNlKCVkKTogJWQ6ICVkOiAlMDh4OiUwOHgiLAorICAgICAgICAgICBleGVjLT5jb2Rl
QmxvY2soKSwKKyAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAg
ICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBd
LnUub3Bjb2RlKSwKKyAgICAgICAgICAgZnJvbVdoZXJlLAorICAgICAgICAgICBvcGVyYW5kLAor
ICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQsCisgICAgICAgICAgIHUuYml0cy50YWcs
CisgICAgICAgICAgIHUuYml0cy5wYXlsb2FkKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgcHJpbnRm
KCI6ICVzIiwgdmFsdWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBwcmludGYoIlxuIik7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3Vl
KQoreworICAgIHByaW50ZigiJXAgLyAlcDogaW4gcHJvbG9ndWUuXG4iLCBleGVjLT5jb2RlQmxv
Y2soKSwgZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK3N0YXRpYyB2b2lkIHRyYWNlRnVu
Y3Rpb25Qcm9sb2d1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IGNoYXIqIGNvbW1lbnQsIENvZGVT
cGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1
bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFi
bGUgPSBjYWxsZWUtPmpzRXhlY3V0YWJsZSgpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
JmV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgIHByaW50ZigiJXAg
LyAlcDogaW4gJXMgb2YgZnVuY3Rpb24gJXAsIGV4ZWN1dGFibGUgJXA7IG51bVZhcnMgPSAldSwg
bnVtUGFyYW1ldGVycyA9ICV1LCBudW1DYWxsZWVSZWdpc3RlcnMgPSAldS5cbiIsCisgICAgICAg
ICAgIGNvZGVCbG9jaywgZXhlYywgY29tbWVudCwgY2FsbGVlLCBleGVjdXRhYmxlLAorICAgICAg
ICAgICBjb2RlQmxvY2stPm1fbnVtVmFycywgY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCksIGNv
ZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0
cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJv
bG9ndWUoZXhlYywgImNhbGwgcHJvbG9ndWUiLCBDb2RlRm9yQ2FsbCk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3QpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjb25zdHJ1Y3Qg
cHJvbG9ndWUiLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKK3sKKyAgICB0cmFjZUZ1
bmN0aW9uUHJvbG9ndWUoZXhlYywgImNhbGwgYXJpdHkgY2hlY2siLCBDb2RlRm9yQ2FsbCk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tf
Zm9yX2NvbnN0cnVjdCkKK3sKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0
cnVjdCBhcml0eSBjaGVjayIsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZSkKK3sKKyAgICBwcmludGYoIiVwIC8gJXA6IGV4
ZWN1dGluZyBiYyMlenUsICIsCisgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAg
ICAgICBleGVjLAorICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5j
b2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSkpOworI2lmbmRlZiBOREVCVUcKKyAg
ICBwcmludGYoIiVzLCAiLCBvcGNvZGVOYW1lc1tleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKV0pOworI2Vsc2UKKyAgICBwcmludGYoIm9w
IyV1LCAiLCBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBd
LnUub3Bjb2RlKSk7CisjZW5kaWYKKyAgICBwcmludGYoInNjb3BlICVwXG4iLCBleGVjLT5zY29w
ZUNoYWluKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChzcGVj
aWFsX3RyYWNlKQoreworICAgIHByaW50ZigiJXAgLyAlcDogZXhlY3V0aW5nIHNwZWNpYWwgY2Fz
ZSBiYyMlenUsIG9wIyV1LCByZXR1cm4gUEMgaXMgJXBcbiIsCisgICAgICAgICAgIGV4ZWMtPmNv
ZGVCbG9jaygpLAorICAgICAgICAgICBleGVjLAorICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRw
dHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisg
ICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNb
MF0udS5vcGNvZGUpLAorICAgICAgICAgICBleGVjLT5yZXR1cm5QQygpLnZhbHVlKCkpOworICAg
IExMSU5UX0VORCgpOworfQorCitpbmxpbmUgYm9vbCBzaG91bGRKSVQoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIC8vIFlvdSBjYW4gbW9kaWZ5IHRoaXMgdG8gdHVybiBvZmYgSklUdGluZyB3aXRo
b3V0IHJlYnVpbGRpbmcgdGhlIHdvcmxkLgorICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCku
Y2FuVXNlSklUKCk7Cit9CisKK2VudW0gRW50cnlLaW5kIHsgUHJvbG9ndWUsIEFyaXR5Q2hlY2sg
fTsKK3N0YXRpYyBIZWxwZXJSZXR1cm5UeXBlIGVudHJ5T1NSKEV4ZWNTdGF0ZSogZXhlYywgSW5z
dHJ1Y3Rpb24qIHBjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29uc3QgY2hhciAqbmFtZSwgRW50
cnlLaW5kIGtpbmQpCit7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYo
IiVwOiBFbnRlcmVkICVzIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBu
YW1lLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAg
ICBpZiAoIXNob3VsZEpJVChleGVjKSkgeworICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0
aW1lU29vbigpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAg
ICBpZiAoIWNvZGVCbG9jay0+aml0Q29tcGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYg
RU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICAgICAgcHJpbnRmKCIgICAgQ29kZSB3YXMgYWxy
ZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlmCisgICAgfQorICAgIGNvZGVCbG9jay0+aml0U29v
bigpOworICAgIGlmIChraW5kID09IFByb2xvZ3VlKQorICAgICAgICBMTElOVF9SRVRVUk5fVFdP
KGNvZGVCbG9jay0+Z2V0SklUQ29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQoMCksIGV4
ZWMpOworICAgIEFTU0VSVChraW5kID09IEFyaXR5Q2hlY2spOworICAgIExMSU5UX1JFVFVSTl9U
V08oY29kZUJsb2NrLT5nZXRKSVRDb2RlV2l0aEFyaXR5Q2hlY2soKS5leGVjdXRhYmxlQWRkcmVz
cygpLCBleGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyKQoreworICAgIHJl
dHVybiBlbnRyeU9TUihleGVjLCBwYywgZXhlYy0+Y29kZUJsb2NrKCksICJlbnRyeV9vc3IiLCBQ
cm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3Jf
Y2FsbCkKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMt
PmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JD
YWxsKSwgImVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCIsIFByb2xvZ3VlKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAg
cmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpz
RXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ29uc3RydWN0KSwgImVu
dHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0IiwgUHJvbG9ndWUpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAg
ICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+
anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDYWxsKSwgImVudHJ5
X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrIiwgQXJpdHlDaGVjayk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hl
Y2spCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5j
YWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ29u
c3RydWN0KSwgImVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2siLCBB
cml0eUNoZWNrKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wobG9vcF9vc3IpCit7CisgICAgQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAKKyNpZiBFTkFCTEUo
SklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgbG9vcF9vc3Igd2l0aCBl
eGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRl
Q291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7Cisg
ICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JF
VFVSTl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIAorICAgIGlmICghY29kZUJsb2NrLT5qaXRD
b21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NS
KQorICAgICAgICBwcmludGYoIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7Cisj
ZW5kaWYKKyAgICB9CisgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgCisgICAgQVNTRVJU
KGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAK
KyAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiBtYXA7CisgICAgY29kZUJsb2Nr
LT5qaXRDb2RlTWFwKCktPmRlY29kZShtYXApOworICAgIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNl
dCogbWFwcGluZyA9IGJpbmFyeVNlYXJjaDxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQsIHVuc2ln
bmVkLCBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ6OmdldEJ5dGVjb2RlSW5kZXg+KG1hcC5iZWdp
bigpLCBtYXAuc2l6ZSgpLCBwYyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7
CisgICAgQVNTRVJUKG1hcHBpbmcpOworICAgIEFTU0VSVChtYXBwaW5nLT5tX2J5dGVjb2RlSW5k
ZXggPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpKSk7CisgICAgCisgICAgdm9pZCoganVtcFRhcmdldCA9IGNvZGVCbG9jay0+Z2V0
SklUQ29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQobWFwcGluZy0+bV9tYWNoaW5lQ29k
ZU9mZnNldCk7CisgICAgQVNTRVJUKGp1bXBUYXJnZXQpOworICAgIAorICAgIExMSU5UX1JFVFVS
Tl9UV08oanVtcFRhcmdldCwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2Up
Cit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAK
KyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiJXA6IEVudGVyZWQgcmVw
bGFjZSB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5s
bGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKHNob3VsZEpJVChl
eGVjKSkgeworICAgICAgICBpZiAoIWNvZGVCbG9jay0+aml0Q29tcGlsZShleGVjLT5nbG9iYWxE
YXRhKCkpKSB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICAgICAgICAgIHByaW50
ZigiICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgICAgICB9
CisgICAgICAgIGNvZGVCbG9jay0+aml0U29vbigpOworICAgIH0gZWxzZQorICAgICAgICBjb2Rl
QmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIkNoZWNraW5nIHN0YWNrIGhl
aWdodCB3aXRoIGV4ZWMgPSAlcC5cbiIsIGV4ZWMpOworICAgIHByaW50ZigiQ29kZUJsb2NrID0g
JXAuXG4iLCBleGVjLT5jb2RlQmxvY2soKSk7CisgICAgcHJpbnRmKCJOdW0gY2FsbGVlIHJlZ2lz
dGVycyA9ICV1LlxuIiwgZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsK
KyAgICBwcmludGYoIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1W
YXJzKTsKKyAgICBwcmludGYoIkN1cnJlbnQgZW5kIGlzIGF0ICVwLlxuIiwgZXhlYy0+Z2xvYmFs
RGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5lbmQoKSk7CisjZW5kaWYKKyAgICBB
U1NFUlQoJmV4ZWMtPnJlZ2lzdGVycygpW2V4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJl
Z2lzdGVyc10gPiBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgp
LmVuZCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRl
ci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhlYy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2Nr
KCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkpKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxs
ZXJGcmFtZSgpOworICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRl
U3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxs
ZXIoZXhlYyk7CisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihl
eGVjKTsKKyAgICB9CisgICAgTExJTlRfRU5EX0lNUEwoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEV4
ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAm
ZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNh
bGwpOworICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJh
bWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4
ZWMpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGlj
X2Nhc3Q8dWludHB0cl90PigxKSksIGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9SRVRVUk5fVFdP
KDAsIG5ld0V4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0X2Fy
aXR5Q2hlY2spCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMg
PSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEo
KS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGlm
ICghbmV3RXhlYykgeworICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAg
ICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJv
cihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMpOworICAgICAg
ICBMTElOVF9SRVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0
cl90PigxKSksIGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9SRVRVUk5fVFdPKDAsIG5ld0V4ZWMp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50Zigi
Q3JlYXRpbmcgYW4gYWN0aXZhdGlvbiwgZXhlYyA9ICVwIVxuIiwgZXhlYyk7CisjZW5kaWYKKyAg
ICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBKU0FjdGl2YXRpb246OmNyZWF0ZShleGVjLT5n
bG9iYWxEYXRhKCksIGV4ZWMsIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWMt
PmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSkpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hh
aW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2YXRpb24pKTsKKyAgICBMTElOVF9SRVRV
Uk4oSlNWYWx1ZShhY3RpdmF0aW9uKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
cmVhdGVfYXJndW1lbnRzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSBhcmd1
bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwgZXhl
YykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIo
cGNbMV0udS5vcGVyYW5kKSA9IGFyZ3VtZW50czsKKyAgICBleGVjLT51bmNoZWNrZWRSKHVubW9k
aWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlz
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNGdW5jdGlvbiogY29uc3RydWN0b3IgPSBh
c0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIEFTU0VSVChjb25zdHJ1Y3Rvci0+
bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0YShjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0
YSkgPT0gQ29uc3RydWN0VHlwZUpTKTsKKyNlbmRpZgorICAgIAorICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlOworICAgIEpTVmFsdWUgcHJvdG8gPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAg
aWYgKHByb3RvLmlzT2JqZWN0KCkpCisgICAgICAgIHN0cnVjdHVyZSA9IGFzT2JqZWN0KHByb3Rv
KS0+aW5oZXJpdG9ySUQoZXhlYy0+Z2xvYmFsRGF0YSgpKTsKKyAgICBlbHNlCisgICAgICAgIHN0
cnVjdHVyZSA9IGNvbnN0cnVjdG9yLT5zY29wZSgpLT5nbG9iYWxPYmplY3QtPmVtcHR5T2JqZWN0
U3RydWN0dXJlKCk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGV4ZWMsIHN0cnVjdHVyZSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29udmVy
dF90aGlzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09Q
KDEpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQodjEuaXNQcmltaXRpdmUoKSk7CisgICAgTExJTlRf
UkVUVVJOKHYxLnRvVGhpc09iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9uZXdfb2JqZWN0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJO
KGNvbnN0cnVjdEVtcHR5T2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25ld19hcnJheSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihj
b25zdHJ1Y3RBcnJheShleGVjLCBiaXR3aXNlX2Nhc3Q8SlNWYWx1ZSo+KCZMTElOVF9PUCgyKSks
IHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Fy
cmF5X2J1ZmZlcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihjb25z
dHJ1Y3RBcnJheShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+Y29uc3RhbnRCdWZmZXIocGNbMl0u
dS5vcGVyYW5kKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9uZXdfcmVnZXhwKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgUmVnRXhwKiByZWdF
eHAgPSBleGVjLT5jb2RlQmxvY2soKS0+cmVnZXhwKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYg
KCFyZWdFeHAtPmlzVmFsaWQoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlU3ludGF4RXJy
b3IoZXhlYywgIkludmFsaWQgZmxhZyBzdXBwbGllZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIikp
OworICAgIExMSU5UX1JFVFVSTihSZWdFeHBPYmplY3Q6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRh
KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9ub3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKCFMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2VxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9uZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRV
Uk4oanNCb29sZWFuKCFKU1ZhbHVlOjplcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9zdHJpY3RlcSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbnN0cmljdGVxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbighSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbGVzcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xl
c3NlcSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4o
anNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcikK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNz
PGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPGZh
bHNlPihleGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5jKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDEpLmpzVmFs
dWUoKS50b051bWJlcihleGVjKSArIDEpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3ByZV9kZWMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gMSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9pbmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBkb3VibGUgcmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOwor
ICAgIExMSU5UX09QKDIpID0ganNOdW1iZXIocmVzdWx0ICsgMSk7CisgICAgTExJTlRfUkVUVVJO
KGpzTnVtYmVyKHJlc3VsdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9k
ZWMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJTlRfT1Ao
MikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0ganNOdW1iZXIo
cmVzdWx0IC0gMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9O
dW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcigtTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2FkZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgdjEgPSBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHYyID0gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCk7CisgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIlRyeWlu
ZyB0byBhZGQgJXMiLCB2MS5kZXNjcmlwdGlvbigpKTsKKyAgICBwcmludGYoIiB0byAlcy5cbiIs
IHYyLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKHYxLmlzU3RyaW5nKCkg
JiYgIXYyLmlzT2JqZWN0KCkpCisgICAgICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhleGVjLCBh
c1N0cmluZyh2MSksIHYyLnRvU3RyaW5nKGV4ZWMpKSk7CisgICAgCisgICAgaWYgKHYxLmlzTnVt
YmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHYx
LmFzTnVtYmVyKCkgKyB2Mi5hc051bWJlcigpKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpz
QWRkU2xvd0Nhc2UoZXhlYywgdjEsIHYyKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9tdWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIo
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKiBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
c3ViKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExM
SU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rp
dikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAvIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2Qp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoZm1vZChM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSwgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9s
c2hpZnQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIo
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA8PCAoTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkudG9VSW50MzIoZXhlYykgJiAzMSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3JzaGlmdCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpID4+IChMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSAmIDMxKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfdXJzaGlmdCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSA+
PiAoTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykgJiAzMSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdGFuZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMy
KGV4ZWMpICYgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0b3IpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihl
eGVjKSB8IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdHhvcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4
ZWMpIF4gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfYml0bm90KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
TExJTlRfUkVUVVJOKGpzTnVtYmVyKH5MTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4
ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2Up
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWwgPSBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKTsKKyNpZm5kZWYgTkRFQlVHCisgICAgVHlwZUluZm8gdHlwZUluZm8oVW5z
cGVjaWZpZWRUeXBlKTsKKyAgICBBU1NFUlQoIWJhc2VWYWwuaXNPYmplY3QoKQorICAgICAgICAg
ICB8fCAhKHR5cGVJbmZvID0gYXNPYmplY3QoYmFzZVZhbCktPnN0cnVjdHVyZSgpLT50eXBlSW5m
bygpKS5pbXBsZW1lbnRzSGFzSW5zdGFuY2UoKSk7CisjZW5kaWYKKyAgICBMTElOVF9USFJPVyhj
cmVhdGVJbnZhbGlkUGFyYW1FcnJvcihleGVjLCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luc3RhbmNlb2YpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbnN0
YW5jZU9mU2xvdyhleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoNCkuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfdHlwZW9mKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVU
VVJOKGpzVHlwZVN0cmluZ0ZvclZhbHVlKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc191bmRlZmluZWQpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKHYuaXNDZWxsKCkgPyB2LmFzQ2VsbCgpLT5zdHJ1Y3R1
cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVyYWRlc0FzVW5kZWZpbmVkKCkgOiB2LmlzVW5kZWZpbmVk
KCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Jvb2xlYW4pCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLmlzQm9vbGVhbigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19udW1iZXIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLmlzTnVtYmVyKCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2lzX3N0cmluZykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExM
SU5UX1JFVFVSTihqc0Jvb2xlYW4oaXNKU1N0cmluZyhMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkp
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX29iamVjdCkKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc09iamVjdFR5cGUoTExJ
TlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c19mdW5jdGlvbikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oanNJc0Z1bmN0aW9uVHlwZShMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2luKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
TExJTlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW4oZXhlYywgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlLCBDb21tb25TbG93UGF0aHM6Om9wUmVz
b2x2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQoCisgICAgICAgIG9wX3Jl
c29sdmVfc2tpcCwKKyAgICAgICAgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVTa2lwKAorICAg
ICAgICAgICAgZXhlYywKKyAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVy
KHBjWzJdLnUub3BlcmFuZCksCisgICAgICAgICAgICBwY1szXS51Lm9wZXJhbmQpKTsKK30KKwor
c3RhdGljIEpTVmFsdWUgcmVzb2x2ZUdsb2JhbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9u
KiBwYykKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwor
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVj
dCgpOworICAgIEFTU0VSVChnbG9iYWxPYmplY3QtPmlzR2xvYmFsT2JqZWN0KCkpOworICAgIGlu
dCBwcm9wZXJ0eSA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9
IHBjWzNdLnUuc3RydWN0dXJlLmdldCgpOworICAgIAorICAgIEFTU0VSVF9VTlVTRUQoc3RydWN0
dXJlLCBzdHJ1Y3R1cmUgIT0gZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgCisgICAg
SWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpOworICAg
IFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9iamVjdCk7CisgICAgCisgICAgaWYgKGdsb2JhbE9i
amVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50LCBzbG90KSkgeworICAgICAgICBKU1Zh
bHVlIHJlc3VsdCA9IHNsb3QuZ2V0VmFsdWUoZXhlYywgaWRlbnQpOworICAgICAgICBpZiAoc2xv
dC5pc0NhY2hlYWJsZVZhbHVlKCkgJiYgIWdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5j
YWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBn
bG9iYWxPYmplY3QpIHsKKyAgICAgICAgICAgIHBjWzNdLnUuc3RydWN0dXJlLnNldCgKKyAgICAg
ICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCksIGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOworICAgICAgICAgICAgcGNbNF0gPSBzbG90
LmNhY2hlZE9mZnNldCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKyAgICAKKyAgICBleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3Jl
YXRlVW5kZWZpbmVkVmFyaWFibGVFcnJvcihleGVjLCBpZGVudCk7CisgICAgcmV0dXJuIEpTVmFs
dWUoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVf
Z2xvYmFsLCByZXNvbHZlR2xvYmFsKGV4ZWMsIHBjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIHJlc29s
dmVHbG9iYWwoZXhlYywgcGMpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29s
dmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYywgQ29tbW9u
U2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIo
cGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2
ZV9iYXNlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBl
eGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIGlmIChw
Y1szXS51Lm9wZXJhbmQpIHsKKyAgICAgICAgSlNWYWx1ZSBiYXNlID0gSlNDOjpyZXNvbHZlQmFz
ZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCB0cnVlKTsKKyAgICAgICAgaWYgKCFi
YXNlKQorICAgICAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFs
QXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICAgICAgTExJTlRfUkVUVVJO
KGJhc2UpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2
ZV9iYXNlLCBKU0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCks
IGZhbHNlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlf
ZXhpc3RzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFz
T2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qob2Jq
ZWN0KTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlm
aWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKCFvYmplY3QtPmdldFByb3BlcnR5U2xvdChl
eGVjLCBpZGVudCwgc2xvdCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52
YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1Bh
dGhzOjpvcFJlc29sdmVXaXRoQmFzZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmll
cihwY1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgLy8gRklYTUU6IHRlY2huaWNh
bGx5IHNob3VsZCBoYXZlIHByb2ZpbGluZywgYnV0IHdlIGRvbid0IGRvIGl0IGJlY2F1c2UgdGhl
IERGRyB3b24ndCB1c2UgaXQuCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVXaXRoVGhpcyhleGVj
LCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpLCBMTElOVF9P
UCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1AoMikgPSBy
ZXN1bHQ7CisgICAgLy8gRklYTUU6IHRlY2huaWNhbGx5IHNob3VsZCBoYXZlIHByb2ZpbGluZywg
YnV0IHdlIGRvbid0IGRvIGl0IGJlY2F1c2UgdGhlIERGRyB3b24ndCB1c2UgaXQuCisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfaWQpCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVC
bG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBj
WzNdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1
ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgxKSA9IHJlc3VsdDsKKworICAgIGlmIChi
YXNlVmFsdWUuaXNDZWxsKCkKKyAgICAgICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCisgICAgICAg
ICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBiYXNlVmFsdWUKKyAgICAgICAgJiYgc2xvdC5jYWNoZWRQ
cm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0eVNsb3Q6OlZhbHVlKSB7CisgICAgICAgIAorICAgICAg
ICBKU0NlbGwqIGJhc2VDZWxsID0gYmFzZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1
cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxsLT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAg
IGlmICghc3RydWN0dXJlLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAm
JiAhc3RydWN0dXJlLT50eXBlSW5mbygpLnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpKSB7Cisg
ICAgICAgICAgICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+
Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwor
ICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVv
ZihKU1ZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwY1tPUENPREVfTEVOR1RI
KG9wX2dldF9ieV9pZCkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXIm
IGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgUHJvcGVydHlTbG90
IHNsb3QoYmFzZVZhbHVlKTsKKyAgICBMTElOVF9SRVRVUk4oYmFzZVZhbHVlLmdldChleGVjLCBp
ZGVudCwgc2xvdCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmll
cihwY1syXS51Lm9wZXJhbmQpOworICAgIAorICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3QoY29kZUJsb2NrLT5p
c1N0cmljdE1vZGUoKSk7CisgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAgICAgYXNPYmpl
Y3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGV4ZWMtPmdsb2JhbERhdGEoKSwgaWRlbnQsIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICBlbHNlCisgICAgICAgIGJhc2VWYWx1ZS5w
dXQoZXhlYywgaWRlbnQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCisg
ICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKSkgeworICAgICAgICAKKyAgICAgICAgSlNDZWxs
KiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0
cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVj
dHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKQorICAgICAgICAgICAg
JiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
aWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgc3RydWN0dXJlLT5w
cmV2aW91c0lEKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkgPT0gc3RydWN0dXJlLT5wcm9w
ZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMg
bmVlZGVkIGJlY2F1c2Ugc29tZSBvZiB0aGUgbWV0aG9kcyB3ZSBjYWxsCisgICAgICAgICAgICAg
ICAgICAgIC8vIGJlbG93IG1heSBHQy4KKyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNv
ZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworCisgICAgICAg
ICAgICAgICAgICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKKyAg
ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUt
PnByZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzRdLnUu
c3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEo
KSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlLT5wcmV2aW91c0lEKCkp
OworICAgICAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNl
dCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBwY1s2XS51LnN0cnVj
dHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAg
ICAgIFN0cnVjdHVyZUNoYWluKiBjaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhl
Yyk7CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFpbik7CisgICAgICAgICAgICAgICAg
ICAgIHBjWzddLnUuc3RydWN0dXJlQ2hhaW4uc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjaGFpbik7
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5v
cGVyYW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOworICAg
ICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9w
Y29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X25vcm1hbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29w
X3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAg
ICAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVj
dXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0g
c2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICBpZiAoZmFsc2UgJiYgIXN0cmNtcChpZGVudC5hc2Np
aSgpLmRhdGEoKSwgInJlbmRlclJlZmxlY3Rpb25zIikpCisgICAgICAgIHByaW50ZigiRmluaXNo
aW5nIGFjY2VzcyB0byByZW5kZXJSZWZsZWN0aW9ucyBmcm9tIExMSW50IHNsb3cgcGF0aC5cbiIp
OworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
ZGVsX2J5X2lkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLnRvT2JqZWN0KGV4ZWMpOworICAgIGJvb2wgY291bGREZWxldGUg
PSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBl
eGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSk7CisgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlz
U3RyaWN0TW9kZSgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywg
IlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xl
YW4oY291bGREZWxldGUpKTsKK30KKworaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCit7CisgICAgaWYg
KExJS0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7Cisg
ICAgICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93
blByb3BlcnR5KGV4ZWMsIGFzU3RyaW5nKHN1YnNjcmlwdCktPnZhbHVlKGV4ZWMpKSkKKyAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIGlmIChzdWJzY3JpcHQuaXNV
SW50MzIoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7Cisg
ICAgICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+
Y2FuR2V0SW5kZXgoaSkpCisgICAgICAgICAgICByZXR1cm4gYXNTdHJpbmcoYmFzZVZhbHVlKS0+
Z2V0SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShi
YXNlVmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKQor
ICAgICAgICAgICAgcmV0dXJuIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMs
IGkpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgaSk7Cisg
ICAgfQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywg
cHJvcGVydHkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3ZhbCkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9nZXRfYnlf
dmFsLCBnZXRCeVZhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVu
dF9ieV92YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50cyA9
IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykgeworICAgICAgICBh
cmd1bWVudHMgPSBBcmd1bWVudHM6OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpOwor
ICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgTExJTlRfT1AoMikgPSBh
cmd1bWVudHM7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOworICAgIH0KKyAgICAKKyAgICBM
TElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgYXJndW1lbnRzLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIExMSU5U
X09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAg
IEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1
ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHZhbHVl
ID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisgICAgaWYgKExJS0VMWShzdWJzY3Jp
cHQuaXNVSW50MzIoKSkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQz
MigpOworICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1ZSkpIHsKKyAgICAgICAgICAgIEpT
QXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAoanNB
cnJheS0+Y2FuU2V0SW5kZXgoaSkpCisgICAgICAgICAgICAgICAganNBcnJheS0+c2V0SW5kZXgo
Z2xvYmFsRGF0YSwgaSwgdmFsdWUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IEpTQXJyYXk6OnB1dEJ5SW5kZXgoanNBcnJheSwgZXhlYywgaSwgdmFsdWUpOworICAgICAgICAg
ICAgTExJTlRfRU5EKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFz
ZVZhbHVlKQorICAgICAgICAgICAgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNz
SW5kZXgoaSkpIHsKKyAgICAgICAgICAgIEpTQnl0ZUFycmF5KiBqc0J5dGVBcnJheSA9IGFzQnl0
ZUFycmF5KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAodmFsdWUuaXNJbnQzMigpKSB7Cisg
ICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzSW50MzIoKSk7
CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIGpzQnl0ZUFycmF5LT5z
ZXRJbmRleChpLCB2YWx1ZS5hc051bWJlcigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBiYXNlVmFsdWUucHV0KGV4ZWMs
IGksIHZhbHVlKTsKKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIElkZW50
aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNs
b3QoZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBiYXNlVmFsdWUucHV0
KGV4ZWMsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfdmFsKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBK
U09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVjdChleGVjKTsKKyAgICAKKyAg
ICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorICAg
IGJvb2wgY291bGREZWxldGU7CisgICAgCisgICAgdWludDMyX3QgaTsKKyAgICBpZiAoc3Vic2Ny
aXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRo
b2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYmFzZU9iamVjdCwgZXhlYywgaSk7Cisg
ICAgZWxzZSB7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBJZGVu
dGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpOworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgY291bGREZWxl
dGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0
LCBleGVjLCBwcm9wZXJ0eSk7CisgICAgfQorICAgIAorICAgIGlmICghY291bGREZWxldGUgJiYg
ZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICBMTElOVF9USFJPVyhj
cmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAg
IAorICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxldGUpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnB1dChleGVjLCBwY1syXS51Lm9wZXJhbmQsIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3B1dF9nZXR0ZXJfc2V0dGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09i
amVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgCisg
ICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGV4ZWMpOwor
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIEpTVmFsdWUgZ2V0dGVyID0g
TExJTlRfT1AoMykuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc2V0dGVyID0gTExJTlRfT1AoNCku
anNWYWx1ZSgpOworICAgIEFTU0VSVChnZXR0ZXIuaXNPYmplY3QoKSB8fCBnZXR0ZXIuaXNVbmRl
ZmluZWQoKSk7CisgICAgQVNTRVJUKHNldHRlci5pc09iamVjdCgpIHx8IHNldHRlci5pc1VuZGVm
aW5lZCgpKTsKKyAgICBBU1NFUlQoZ2V0dGVyLmlzT2JqZWN0KCkgfHwgc2V0dGVyLmlzT2JqZWN0
KCkpOworICAgIAorICAgIGlmICghZ2V0dGVyLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIGFjY2Vz
c29yLT5zZXRHZXR0ZXIoZXhlYy0+Z2xvYmFsRGF0YSgpLCBhc09iamVjdChnZXR0ZXIpKTsKKyAg
ICBpZiAoIXNldHRlci5pc1VuZGVmaW5lZCgpKQorICAgICAgICBhY2Nlc3Nvci0+c2V0U2V0dGVy
KGV4ZWMtPmdsb2JhbERhdGEoKSwgYXNPYmplY3Qoc2V0dGVyKSk7CisgICAgYmFzZU9iai0+cHV0
RGlyZWN0QWNjZXNzb3IoCisgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwKKyAgICAgICAgZXhl
Yy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwKKyAgICAgICAgYWNj
ZXNzb3IsIEFjY2Vzc29yKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2ptcF9zY29wZXMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICB1bnNpZ25l
ZCBjb3VudCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBTY29wZUNoYWluTm9kZSogdG1wID0gZXhl
Yy0+c2NvcGVDaGFpbigpOworICAgIHdoaWxlIChjb3VudC0tKQorICAgICAgICB0bXAgPSB0bXAt
PnBvcCgpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4odG1wKTsKKyAgICBwYyArPSBwY1syXS51
Lm9wZXJhbmQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9qdHJ1ZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX0JSQU5DSChvcF9qdHJ1
ZSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2pmYWxzZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExM
SU5UX0JSQU5DSChvcF9qZmFsc2UsICFMTElOVF9PUF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4o
ZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3MpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfamxlc3MsIGpzTGVzczx0cnVlPihleGVj
LCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcykKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIExMSU5UX0JSQU5DSChvcF9qbmxlc3MsICFqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRf
T1BfQygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IExMSU5UX0JSQU5DSChvcF9qZ3JlYXRlciwganNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExM
SU5UX0JSQU5DSChvcF9qbmdyZWF0ZXIsICFqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfamxlc3NlcSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5U
X0JSQU5DSChvcF9qbGVzc2VxLCBqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2pubGVzc2VxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJB
TkNIKG9wX2pubGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJB
TkNIKG9wX2pncmVhdGVyZXEsIGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2puZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
QlJBTkNIKG9wX2puZ3JlYXRlcmVxLCAhanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfc3dpdGNoX2ltbSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpT
VmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHNj
cnV0aW5lZS5pc0RvdWJsZSgpKTsKKyAgICBkb3VibGUgdmFsdWUgPSBzY3J1dGluZWUuYXNEb3Vi
bGUoKTsKKyAgICBpbnQzMl90IGludFZhbHVlID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUp
OworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlmICh2YWx1
ZSA9PSBpbnRWYWx1ZSkgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNv
ZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2RlQmxvY2stPmltbWVkaWF0ZVN3aXRjaEp1bXBU
YWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVlKGludFZhbHVlLCBkZWZhdWx0T2Zm
c2V0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOwor
ICAgIGlmICghc2NydXRpbmVlLmlzU3RyaW5nKCkpCisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZz
ZXQ7CisgICAgZWxzZSB7CisgICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29k
ZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxl
KHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFsdWUoYXNTdHJpbmcoc2NydXRpbmVlKS0+dmFs
dWUoZXhlYykuaW1wbCgpLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuYykKK3sKKyAgICBMTElOVF9C
RUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Cisg
ICAgQVNTRVJUKGNvZGVCbG9jay0+Y29kZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUKKyAgICAgICAg
ICAgfHwgIWNvZGVCbG9jay0+bmVlZHNGdWxsU2NvcGVDaGFpbigpCisgICAgICAgICAgIHx8IGV4
ZWMtPnVuY2hlY2tlZFIoY29kZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgp
KTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIHByaW50ZigiQ3JlYXRpbmcgZnVuY3Rp
b24hXG4iKTsKKyNlbmRpZgorICAgIExMSU5UX1JFVFVSTihjb2RlQmxvY2stPmZ1bmN0aW9uRGVj
bChwY1syXS51Lm9wZXJhbmQpLT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmNfZXhwKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIo
cGNbMl0udS5vcGVyYW5kKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVuY3Rpb24tPm1ha2Uo
ZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICAKKyAgICBpZiAoIWZ1bmN0aW9uLT5uYW1l
KCkuaXNOdWxsKCkpIHsKKyAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25TY29w
ZU9iamVjdCA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBmdW5jdGlvbi0+bmFt
ZSgpLCBmdW5jLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBmdW5jLT5zZXRTY29w
ZShleGVjLT5nbG9iYWxEYXRhKCksIGZ1bmMtPnNjb3BlKCktPnB1c2goZnVuY3Rpb25TY29wZU9i
amVjdCkpOworICAgIH0KKyAgICAKKyAgICBMTElOVF9SRVRVUk4oZnVuYyk7Cit9CisKK3N0YXRp
YyBIZWxwZXJSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwg
SW5zdHJ1Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7
CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKwor
ICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBl
eGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CisKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2Fs
bCkgeworICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5
cGUgPSBnZXRDYWxsRGF0YShjYWxsZWUsIGNhbGxEYXRhKTsKKyAgICAKKyAgICAgICAgQVNTRVJU
KGNhbGxUeXBlICE9IENhbGxUeXBlSlMpOworICAgIAorICAgICAgICBpZiAoY2FsbFR5cGUgPT0g
Q2FsbFR5cGVIb3N0KSB7CisgICAgICAgICAgICBnbG9iYWxEYXRhLT5ob3N0Q2FsbFJldHVyblZh
bHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVl
KSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxs
ZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7
CisgICAgICAgIH0KKyAgICAgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAgICAg
cHJpbnRmKCJDYWxsIGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNj
cmlwdGlvbigpKTsKKyNlbmRpZgorCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlw
ZU5vbmUpOworICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBRnVu
Y3Rpb25FcnJvcihleGVjLCBjYWxsZWUpKTsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBD
b2RlRm9yQ29uc3RydWN0KTsKKyAgICAKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7
CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShjYWxs
ZWUsIGNvbnN0cnVjdERhdGEpOworICAgIAorICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENv
bnN0cnVjdFR5cGVKUyk7CisgICAgCisgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0
VHlwZUhvc3QpIHsKKyAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpT
VmFsdWU6OmRlY29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7
CisKKyAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0
X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgCisjaWYg
TExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBwcmludGYoIkNvbnN0cnVjdG9yIGNhbGxlZSBpcyBu
b3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorCisg
ICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZU5vbmUpOworICAgIExMSU5U
X0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMsIGNh
bGxlZSkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRl
KiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCwgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlLCBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
ID0gMCkKK3sKKyAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlv
bihjYWxsZWVBc1ZhbHVlKTsKKyAgICBpZiAoIWNhbGxlZUFzRnVuY3Rpb25DZWxsKQorICAgICAg
ICByZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgcGMsIGNhbGxlZUFzVmFsdWUsIGtp
bmQpOworICAgIAorICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oY2FsbGVlQXNG
dW5jdGlvbkNlbGwpOworICAgIGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oY2FsbGVlLT5zY29w
ZVVuY2hlY2tlZCgpKTsKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+
ZXhlY3V0YWJsZSgpOworICAgIAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOwor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gMDsKKyAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0
RnVuY3Rpb24oKSkKKyAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENv
ZGVGb3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4
ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKKyAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rp
b25FeGVjdXRhYmxlLT5jb21waWxlRm9yKGV4ZWNDYWxsZWUsIGNhbGxlZS0+c2NvcGUoKSwga2lu
ZCk7CisgICAgICAgIGlmIChlcnJvcikKKyAgICAgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhl
Y0NhbGxlZS0+Y2FsbGVyRnJhbWUoKSwgcGMsIGVycm9yKTsKKyAgICAgICAgY29kZUJsb2NrID0g
JmZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgICAg
IEFTU0VSVChjb2RlQmxvY2spOworICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpKQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2Vu
ZXJhdGVkSklUQ29kZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9y
KGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgfQorICAgIAorICAgIGlmIChjYWxsTGlua0lu
Zm8pIHsKKyAgICAgICAgaWYgKGNhbGxMaW5rSW5mby0+aXNPbkxpc3QoKSkKKyAgICAgICAgICAg
IGNhbGxMaW5rSW5mby0+cmVtb3ZlKCk7CisgICAgICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlciA9
IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+Y2FsbGVl
LnNldChleGVjQ2FsbGVyLT5nbG9iYWxEYXRhKCksIGV4ZWNDYWxsZXItPmNvZGVCbG9jaygpLT5v
d25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5sYXN0U2Vl
bkNhbGxlZS5zZXQoZXhlY0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBleGVjQ2FsbGVyLT5jb2RlQmxv
Y2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+
bWFjaGluZUNvZGVUYXJnZXQgPSBjb2RlUHRyOworICAgICAgICBpZiAoY29kZUJsb2NrKQorICAg
ICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKGNhbGxMaW5rSW5mbyk7CisgICAg
fQorICAgIAorICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCBjb2RlUHRyLmV4
ZWN1dGFibGVBZGRyZXNzKCkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJuVHlwZSBnZW5lcmlj
Q2FsbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAgYSBj
YWxsIGZyYW1lLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUg
aXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gSWYgcG9zc2libGUsIGxpbmsgdGhlIGNhbGwncyBp
bmxpbmUgY2FjaGUuCisgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRk
cmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCisgICAgCisgICAgSlNWYWx1ZSBj
YWxsZWVBc1ZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0
YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVj
Q2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOwor
ICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVl
QXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICAKKyAg
ICBBU1NFUlQocGNbNF0udS5jYWxsTGlua0luZm8pOworICAgIHJldHVybiBzZXRVcENhbGwoZXhl
Y0NhbGxlZSwgcGMsIGtpbmQsIGNhbGxlZUFzVmFsdWUsIHBjWzRdLnUuY2FsbExpbmtJbmZvKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDYWxsKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdCkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0cnVjdCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX3ZhcmFyZ3MpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBm
cmFtZSB3aGlsZSByZXNwZWN0aW5nIHRoZSB2YXJpYWJsZSBhcmd1bWVudHMuCisgICAgLy8gLSBG
aWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAg
Ly8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0
aGUgbmV3IGNhbGwgZnJhbWUuCisgICAgCisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0g
bG9hZFZhcmFyZ3MoCisgICAgICAgIGV4ZWMsICZleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0
ZXItPnJlZ2lzdGVyRmlsZSgpLAorICAgICAgICBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCksIHBjWzRdLnUub3BlcmFuZCk7CisgICAgTExJTlRfQ0FMTF9D
SEVDS19FWENFUFRJT04oZXhlYywgcGMpOworICAgIAorICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tl
ZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVl
LT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmls
ZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4ocGMgKyBPUENP
REVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykpOworICAgIAorICAgIHJldHVybiBzZXRVcENhbGwo
ZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAg
ICBFeGVjU3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBl
eGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQp
OworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIGV4ZWNDYWxsZWUt
PnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBl
eGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0Nh
bGxlZS0+c2V0UmV0dXJuUEMoYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4oJmxsaW50X2dlbmVy
aWNfcmV0dXJuX3BvaW50KSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2NrKDApOworICAg
IGV4ZWMtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJp
dHdpc2VfY2FzdDxpbnQzMl90PihwYyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7Cisg
ICAgCisgICAgaWYgKCFpc0hvc3RGdW5jdGlvbihjYWxsZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZh
bCkpCisgICAgICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxs
LCBjYWxsZWVBc1ZhbHVlKTsKKyAgICAKKyAgICBnbG9iYWxEYXRhLmhvc3RDYWxsUmV0dXJuVmFs
dWUgPSBldmFsKGV4ZWNDYWxsZWUpOworICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUs
IHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hY3RpdmF0aW9uKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxT
Y29wZUNoYWluKCkpOworICAgIEpTVmFsdWUgYWN0aXZhdGlvblZhbHVlID0gTExJTlRfT1AoMSku
anNWYWx1ZSgpOworICAgIGlmICghYWN0aXZhdGlvblZhbHVlKSB7CisgICAgICAgIGlmIChKU1Zh
bHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sy
XS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpIHsKKyAgICAgICAgICAgIGlmICghZXhlYy0+Y29kZUJs
b2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT50
ZWFyT2ZmKGV4ZWMpOworICAgICAgICB9CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAg
ICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBhc0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVl
KTsKKyAgICBhY3RpdmF0aW9uLT50ZWFyT2ZmKGV4ZWMtPmdsb2JhbERhdGEoKSk7CisgICAgaWYg
KEpTVmFsdWUgdiA9IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVy
KHBjWzJdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSkKKyAgICAgICAgYXNBcmd1bWVudHModiktPmRp
ZFRlYXJPZmZBY3RpdmF0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgYWN0aXZhdGlvbik7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90ZWFyX29mZl9hcmd1
bWVudHMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2Nr
KCktPnVzZXNBcmd1bWVudHMoKSAmJiAhZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVsbFNjb3Bl
Q2hhaW4oKSk7CisgICAgYXNBcmd1bWVudHMoZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKS0+dGVhck9mZihleGVj
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmNh
dCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhleGVj
LCAmTExJTlRfT1AoMiksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfdG9fcHJpbWl0aXZlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
UkVUVVJOKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvUHJpbWl0aXZlKGV4ZWMpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9wbmFtZXMpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgaWYgKHYuaXNV
bmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBwYyArPSBwY1s1XS51Lm9wZXJhbmQ7CisgICAg
ICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAKKyAgICBKU09iamVjdCogbyA9IHYudG9PYmpl
Y3QoZXhlYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBvLT5zdHJ1Y3R1cmUoKTsKKyAg
ICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gc3RydWN0
dXJlLT5lbnVtZXJhdGlvbkNhY2hlKCk7CisgICAgaWYgKCFqc1Byb3BlcnR5TmFtZUl0ZXJhdG9y
IHx8IGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmNhY2hlZFByb3RvdHlwZUNoYWluKCkgIT0gc3Ry
dWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSkKKyAgICAgICAganNQcm9wZXJ0eU5hbWVJdGVy
YXRvciA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6OmNyZWF0ZShleGVjLCBvKTsKKyAgICAKKyAg
ICBMTElOVF9PUCgxKSA9IEpTVmFsdWUoanNQcm9wZXJ0eU5hbWVJdGVyYXRvcik7CisgICAgTExJ
TlRfT1AoMikgPSBKU1ZhbHVlKG8pOworICAgIExMSU5UX09QKDMpID0gUmVnaXN0ZXI6OndpdGhJ
bnQoMCk7CisgICAgTExJTlRfT1AoNCkgPSBSZWdpc3Rlcjo6d2l0aEludChqc1Byb3BlcnR5TmFt
ZUl0ZXJhdG9yLT5zaXplKCkpOworICAgIAorICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0
X3BuYW1lcyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9uZXh0X3BuYW1lKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNPYmplY3QqIGJhc2Ug
PSBhc09iamVjdChMTElOVF9PUCgyKS5qc1ZhbHVlKCkpOworICAgIEpTU3RyaW5nKiBwcm9wZXJ0
eSA9IGFzU3RyaW5nKExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgaWYgKGJhc2UtPmhhc1By
b3BlcnR5KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgcHJvcGVydHktPnZhbHVlKGV4ZWMpKSkpIHsK
KyAgICAgICAgLy8gR28gdG8gdGFyZ2V0LgorICAgICAgICBwYyArPSBwY1s2XS51Lm9wZXJhbmQ7
CisgICAgfSAvLyBFbHNlLCBkb24ndCBjaGFuZ2UgdGhlIFBDLCBzbyB0aGUgaW50ZXJwcmV0ZXIg
d2lsbCByZWxvb3AuCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wdXNoX3Njb3BlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2ID0g
TExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVj
KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9
IG87CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2gobykp
OworICAgIAorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
cG9wX3Njb3BlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFp
bihleGVjLT5zY29wZUNoYWluKCktPnBvcCgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfbmV3X3Njb3BlKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBK
U09iamVjdCogc2NvcGUgPSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgY29kZUJs
b2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwg
RG9udERlbGV0ZSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkt
PnB1c2goc2NvcGUpKTsKKyAgICBMTElOVF9SRVRVUk4oc2NvcGUpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfdGhyb3cpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9U
SFJPVyhMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBM
TElOVF9USFJPVyhjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFs
dWUoKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2RlYnVnKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgaW50IGRlYnVnSG9v
a0lEID0gcGNbMV0udS5vcGVyYW5kOworICAgIGludCBmaXJzdExpbmUgPSBwY1syXS51Lm9wZXJh
bmQ7CisgICAgaW50IGxhc3RMaW5lID0gcGNbM10udS5vcGVyYW5kOworICAgIAorICAgIGV4ZWMt
Pmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+ZGVidWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVidWdI
b29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgCisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2Fs
bCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9maWxl
clJlZmVyZW5jZSgpKS0+d2lsbEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVf
ZGlkX2NhbGwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICAoKlByb2ZpbGVyOjplbmFibGVk
UHJvZmlsZXJSZWZlcmVuY2UoKSktPmRpZEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1
ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50
CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExM
SW50SGVscGVyc19oCisjZGVmaW5lIExMSW50SGVscGVyc19oCisKKyNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBFTkFCTEUoTExJ
TlQpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1
Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKK3R5cGVkZWYgaW50NjRfdCBIZWxwZXJSZXR1
cm5UeXBlOworCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFu
ZChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsK
K2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUq
LCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKKworI2RlZmluZSBM
TElOVF9IRUxQRVJfREVDTChuYW1lKSBcCisgICAgZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBl
IGxsaW50XyMjbmFtZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKKworTExJTlRf
SEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJv
bG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9n
dWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0
eUNoZWNrX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9y
X2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZSk7CitMTElOVF9IRUxQRVJfREVD
TChzcGVjaWFsX3RyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcik7CitMTElOVF9I
RUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RF
Q0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wo
ZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RF
Q0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9I
RUxQRVJfREVDTChsb29wX29zcik7CitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0
X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0aW9u
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y29udmVydF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfb2JqZWN0KTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX25ld19hcnJheV9idWZmZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19yZWdl
eHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3Rl
cSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3ByZV9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9kZWMpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0
X2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX25lZ2F0ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3N1Yik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9tb2QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91cnNo
aWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2JpdG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y2hlY2tfaGFzX2luc3RhbmNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5jZW9m
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2lzX3VuZGVmaW5lZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9vbGVh
bik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pc19zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX29iamVj
dCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2luKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Jlc29sdmVfZ2xvYmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZl
X2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Zvcl9y
ZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZl
X2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfZ2V0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRz
X2xlbmd0aCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dl
dF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92YWwp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHV0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVsX2J5
X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KTsKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyX3NldHRlcik7CitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfam1wX3Njb3Blcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2pmYWxzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
amxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcyk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfamdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRl
cik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3NlcSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfam5sZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9zd2l0Y2hfaW1tKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hf
Y2hhcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0cmluZyk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
d19mdW5jX2V4cCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxs
X3ZhcmFyZ3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9z
dHJjYXQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZ2V0X3BuYW1lcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bmV4dF9wbmFtZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcG9wX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9wdXNoX25ld19zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcik7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZGVidWcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2ZpbGVf
d2lsbF9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxsKTsK
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQp
CisKKyNlbmRpZiAvLyBMTEludEhlbHBlcnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKKyNkZWZp
bmUgTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKKworI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisj
aW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSW5saW5lQXNtLmg+Cisj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBDUFUoWDg2KQorI2RlZmluZSBPRkZMSU5F
X0FTTV9YODYgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDAKKyNlbmRpZgorCisj
aWYgQ1BVKEFSTV9USFVNQjIpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDEKKyNlbHNlCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDAKKyNlbmRpZgorCisjaWYgIUFTU0VSVF9ESVNBQkxF
RAorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAxCisjZWxzZQorI2RlZmluZSBP
RkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIENQVShCSUdfRU5ESUFO
KQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX0JJR19FTkRJQU4gMAorI2VuZGlmCisKKyNpZiBFTkFCTEUoTExJTlRfT1NSX1RPX0pJ
VCkKKyNkZWZpbmUgT0ZGTElORV9BU01fSklUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZG
TElORV9BU01fSklUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBMTElOVF9FWEVDVVRJT05fVFJB
Q0lORworI2RlZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAxCisjZWxzZQorI2Rl
ZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAwCisjZW5kaWYKKworI2lmIExMSU5U
X0FMV0FZU19BTExPQ0FURV9TTE9XCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FMV0FZU19BTExPQ0FU
RV9TTE9XIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FMV0FZU19BTExPQ0FURV9TTE9X
IDAKKyNlbmRpZgorCisjaWYgQ1BVKEFSTV9USFVNQjIpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0dM
T0JBTF9MQUJFTChsYWJlbCkgICAgICAgICAgXAorICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5H
KGxhYmVsKSAiXG4iICAgICAgICAgIFwKKyAgICBISURFX1NZTUJPTChuYW1lKSAiXG4iICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgIi50aHVtYlxuIiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0obGFiZWwp
ICJcbiIgIFwKKyAgICBTWU1CT0xfU1RSSU5HKGxhYmVsKSAiOlxuIgorI2Vsc2UKKyNkZWZpbmUg
T0ZGTElORV9BU01fR0xPQkFMX0xBQkVMKGxhYmVsKSAgICAgICAgIFwKKyAgICAiLmdsb2JsICIg
U1lNQk9MX1NUUklORyhsYWJlbCkgIlxuIiAgICAgICAgIFwKKyAgICBISURFX1NZTUJPTChuYW1l
KSAiXG4iICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBTWU1CT0xfU1RSSU5HKGxhYmVsKSAi
OlxuIgorI2VuZGlmCisKKyNlbmRpZiAvLyBMTEludE9mZmxpbmVBc21Db25maWdfaApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJh
Y3Rvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgi
CisjaW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAi
SklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1
ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRl
ICJKU1R5cGVJbmZvLmgiCisjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgorI2luY2x1ZGUg
Ikp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1
ZGUgIk1hcmtlZFNwYWNlLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCisjaW5jbHVkZSAi
U2NvcGVDaGFpbi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVy
ZUNoYWluLmgiCisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSW1wbC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBPRkZMSU5FX0FTTV9P
RkZTRVRPRihjbGF6eiwgZmllbGQpIE9CSkVDVF9PRkZTRVRPRihjbGF6eiwgZmllbGQpCisKK2Ns
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkKiBkdW1teSgpOworfTsKKworY29uc3QgdW5zaWduZWQqIExMSW50T2Zmc2V0c0V4dHJh
Y3Rvcjo6ZHVtbXkoKQoreworLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVh
c20vZ2VuZXJhdGVfb2Zmc2V0c19leHRyYWN0b3IucmIsIGFuZCBjb250YWlucyBjb2RlCisvLyB0
byBjcmVhdGUgYSB0YWJsZSBvZiBvZmZzZXRzLCBzaXplcywgYW5kIGEgaGVhZGVyIGlkZW50aWZ5
aW5nIHdoYXQgY29tYmluYXRpb24gb2YKKy8vIFBsYXRmb3JtLmggbWFjcm9zIHdlIGhhdmUgc2V0
LiBXZSBpbmNsdWRlIGl0IGluc2lkZSBvZiBhIG1ldGhvZCBvbiBMTEludE9mZnNldHNFeHRyYWN0
b3IKKy8vIGJlY2F1c2UgdGhlIGZpZWxkcyB3aG9zZSBvZmZzZXRzIHdlJ3JlIGV4dHJhY3Rpbmcg
YXJlIG1vc3RseSBwcml2YXRlLiBTbyB3ZSBtYWtlIHRoZWlyCisvLyBjbGFzc2VzIGZyaWVuZHMg
d2l0aCBMTEludE9mZnNldHNFeHRyYWN0b3IsIGFuZCBpbmNsdWRlIHRoZSBoZWFkZXIgaGVyZSwg
dG8gZ2V0IHRoZSBDKysKKy8vIGNvbXBpbGVyIHRvIGtpbmRseSBzdGVwIGFzaWRlIGFuZCB5aWVs
ZCB0byBvdXIgYmVzdCBpbnRlbnRpb25zLgorI2luY2x1ZGUgIkxMSW50RGVzaXJlZE9mZnNldHMu
aCIKKyAgICByZXR1cm4gZXh0cmFjdG9yVGFibGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CitpbnQgbWFpbihpbnQsIGNoYXIqKikKK3sKKyAgICAvLyBPdXQgb2YgYW4gYWJ1bmRhbmNlIG9m
IGNhdXRpb24sIG1ha2Ugc3VyZSB0aGF0IExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSBp
cyBsaXZlLAorICAgIC8vIGFuZCB0aGUgZXh0cmFjdG9yVGFibGUgaXMgbGl2ZSwgdG9vLgorICAg
IHByaW50ZigiJXBcbiIsIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpKTsKKyAg
ICByZXR1cm4gMDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRo
dW5rcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
VGh1bmtzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFRodW5rcy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRl
ICJKU0ludGVyZmFjZUpJVC5oIgorI2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJM
b3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQg
eworCitzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRv
KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgdm9pZCAoKnRhcmdldCkoKSkKK3sKKyAgICBKU0lu
dGVyZmFjZUpJVCBqaXQ7CisgICAgCisgICAgLy8gRklYTUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBi
ZXR0ZXIgd2F5IHRvIGRvIGl0IG9uIFg4NiwgYnV0IEknbSBub3Qgc3VyZSBJIGNhcmUuCisgICAg
aml0Lm1vdmUoSlNJbnRlcmZhY2VKSVQ6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQq
Pih0YXJnZXQpKSwgSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICBqaXQuanVtcChKU0ludGVy
ZmFjZUpJVDo6cmVnVDApOworICAgIAorICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2Jh
bERhdGEsICZqaXQsIEdMT0JBTF9USFVOS19JRCk7CisgICAgcmV0dXJuIHBhdGNoQnVmZmVyLmZp
bmFsaXplQ29kZSgpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxs
RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0
dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9y
Q29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7
CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFs
RGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fz
c2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0
b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5r
V2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5
X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVu
a1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZXZhbF9wcm9sb2d1ZSk7Cit9CisKK01hY3Jv
QXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEq
IGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2Jh
bERhdGEsIGxsaW50X3Byb2dyYW1fcHJvbG9ndWUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBMTEludFRodW5rc19oCisjZGVmaW5lIExMSW50VGh1bmtzX2gKKworI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0dsb2JhbERhdGE7CisK
K25hbWVzcGFjZSBMTEludCB7CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNh
bGxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEq
KTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtH
ZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25G
b3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7
CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9i
YWxEYXRhKik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5B
QkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRUaHVua3NfaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMzc4IEBACisjIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyMgQ3Jhc2ggY291cnNlIG9uIHRoZSBsYW5ndWFn
ZSB0aGF0IHRoaXMgaXMgd3JpdHRlbiBpbiAod2hpY2ggSSBqdXN0IGNhbGwKKyMgImFzc2VtYmx5
IiBldmVuIHRob3VnaCBpdCdzIG1vcmUgdGhhbiB0aGF0KToKKyMKKyMgLSBNb3N0bHkgZ2FzLXN0
eWxlIG9wZXJhbmQgb3JkZXJpbmcuIFRoZSBsYXN0IG9wZXJhbmQgdGVuZHMgdG8gYmUgdGhlCisj
ICAgZGVzdGluYXRpb24uIFNvICJhIDo9IGIiIGlzIHdyaXR0ZW4gYXMgIm1vdiBiLCBhIi4gQnV0
IHVubGlrZSBnYXMsCisjICAgY29tcGFyaXNvbnMgYXJlIGluLW9yZGVyLCBzbyAiaWYgKGEgPCBi
KSIgaXMgd3JpdHRlbiBhcworIyAgICJiaWx0IGEsIGIsIC4uLiIuCisjCisjIC0gImIiID0gYnl0
ZSwgImgiID0gMTYtYml0IHdvcmQsICJpIiA9IDMyLWJpdCB3b3JkLCAicCIgPSBwb2ludGVyLgor
IyAgIEN1cnJlbnRseSB0aGlzIGlzIGp1c3QgMzItYml0IHNvICJpIiBhbmQgInAiIGFyZSBpbnRl
cmNoYW5nZWFibGUKKyMgICBleGNlcHQgd2hlbiBhbiBvcCBzdXBwb3J0cyBvbmUgYnV0IG5vdCB0
aGUgb3RoZXIuCisjCisjIC0gSW4gZ2VuZXJhbCwgdmFsaWQgb3BlcmFuZHMgZm9yIG1hY3JvIGlu
dm9jYXRpb25zIGFuZCBpbnN0cnVjdGlvbnMgYXJlCisjICAgcmVnaXN0ZXJzIChlZyAidDAiKSwg
YWRkcmVzc2VzIChlZyAiNFt0MF0iKSwgYmFzZS1pbmRleCBhZGRyZXNzZXMKKyMgICAoZWcgIjdb
dDAsIHQxLCAyXSIpLCBhYnNvbHV0ZSBhZGRyZXNzZXMgKGVnICIweGEwMDAwMDAwW10iKSwgb3Ig
bGFiZWxzCisjICAgKGVnICJfZm9vIiBvciAiLmZvbyIpLiBNYWNybyBpbnZvY2F0aW9ucyBjYW4g
YWxzbyB0YWtlIGFub255bW91cworIyAgIG1hY3JvcyBhcyBvcGVyYW5kcy4gSW5zdHJ1Y3Rpb25z
IGNhbm5vdCB0YWtlIGFub255bW91cyBtYWNyb3MuCisjCisjIC0gTGFiZWxzIG11c3QgaGF2ZSBu
YW1lcyB0aGF0IGJlZ2luIHdpdGggZWl0aGVyICJfIiBvciAiLiIuICBBICIuIiBsYWJlbAorIyAg
IGlzIGxvY2FsIGFuZCBnZXRzIHJlbmFtZWQgYmVmb3JlIGNvZGUgZ2VuIHRvIG1pbmltaXplIG5h
bWVzcGFjZQorIyAgIHBvbGx1dGlvbi4gQSAiXyIgbGFiZWwgaXMgYW4gZXh0ZXJuIHN5bWJvbCAo
aS5lLiAiLmdsb2JsIikuIFRoZSAiXyIKKyMgICBtYXkgb3IgbWF5IG5vdCBiZSByZW1vdmVkIGR1
cmluZyBjb2RlIGdlbiBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgYXNtCisjICAgY29udmVudGlv
bnMgZm9yIEMgbmFtZSBtYW5nbGluZyBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtIG1hbmRhdGUgYSAi
XyIKKyMgICBwcmVmaXguCisjCisjIC0gQSAibWFjcm8iIGlzIGEgbGFtYmRhIGV4cHJlc3Npb24s
IHdoaWNoIG1heSBiZSBlaXRoZXIgYW5vbnltb3VzIG9yCisjICAgbmFtZWQuIEJ1dCB0aGlzIGhh
cyBjYXZlYXRzLiAibWFjcm8iIGNhbiB0YWtlIHplcm8gb3IgbW9yZSBhcmd1bWVudHMsCisjICAg
d2hpY2ggbWF5IGJlIG1hY3JvcyBvciBhbnkgdmFsaWQgb3BlcmFuZHMsIGJ1dCBpdCBjYW4gb25s
eSByZXR1cm4KKyMgICBjb2RlLiBCdXQgeW91IGNhbiBkbyBUdXJpbmctY29tcGxldGUgdGhpbmdz
IHZpYSBjb250aW51YXRpb24gcGFzc2luZworIyAgIHN0eWxlOiAibWFjcm8gZm9vIChhLCBiKSBi
KGEpIGVuZCBmb28oZm9vLCBmb28pIi4gQWN0dWFsbHksIGRvbid0IGRvCisjICAgdGhhdCwgc2lu
Y2UgeW91J2xsIGp1c3QgY3Jhc2ggdGhlIGFzc2VtYmxlci4KKyMKKyMgLSBBbiAiaWYiIGlzIGEg
Y29uZGl0aW9uYWwgb24gc2V0dGluZ3MuIEFueSBpZGVudGlmaWVyIHN1cHBsaWVkIGluIHRoZQor
IyAgIHByZWRpY2F0ZSBvZiBhbiAiaWYiIGlzIGFzc3VtZWQgdG8gYmUgYSAjZGVmaW5lIHRoYXQg
aXMgYXZhaWxhYmxlCisjICAgZHVyaW5nIGNvZGUgZ2VuLiBTbyB5b3UgY2FuJ3QgdXNlICJpZiIg
Zm9yIGNvbXB1dGF0aW9uIGluIGEgbWFjcm8sIGJ1dAorIyAgIHlvdSBjYW4gdXNlIGl0IHRvIHNl
bGVjdCBkaWZmZXJlbnQgcGllY2VzIG9mIGNvZGUgZm9yIGRpZmZlcmVudAorIyAgIHBsYXRmb3Jt
cy4KKyMKKyMgLSBBcmd1bWVudHMgdG8gbWFjcm9zIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgcmF0
aGVyIHRoYW4gZHluYW1pYyBzY29waW5nLgorIyAgIENvbnN0J3MgYWxzbyBmb2xsb3cgbGV4aWNh
bCBzY29waW5nIGFuZCBtYXkgb3ZlcnJpZGUgKGhpZGUpIGFyZ3VtZW50cworIyAgIG9yIG90aGVy
IGNvbnN0cy4gQWxsIHZhcmlhYmxlcyAoYXJndW1lbnRzIGFuZCBjb25zdGFudHMpIGNhbiBiZSBi
b3VuZAorIyAgIHRvIG9wZXJhbmRzLiBBZGRpdGlvbmFsbHksIGFyZ3VtZW50cyAoYnV0IG5vdCBj
b25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAgIHRvIG1hY3Jvcy4KKworCisjIFRoZXNlIGRlY2xh
cmF0aW9ucyBtdXN0IG1hdGNoIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oLgorY29uc3QgQ2Fs
bEZyYW1lSGVhZGVyU2l6ZSA9IDQ4Citjb25zdCBBcmd1bWVudENvdW50ID0gLTQ4Citjb25zdCBD
YWxsZXJGcmFtZSA9IC00MAorY29uc3QgQ2FsbGVlID0gLTMyCitjb25zdCBTY29wZUNoYWluID0g
LTI0Citjb25zdCBSZXR1cm5QQyA9IC0xNgorY29uc3QgQ29kZUJsb2NrID0gLTgKKworY29uc3Qg
VGhpc0FyZ3VtZW50T2Zmc2V0ID0gLUNhbGxGcmFtZUhlYWRlclNpemUgLSA4CisKKyMgRGVjbGFy
ZSBzb21lIGFsaWFzZXMgZm9yIHRoZSByZWdpc3RlcnMgd2Ugd2lsbCB1c2UuCitjb25zdCBQQyA9
IHQ0CisKKyMgT2Zmc2V0cyBuZWVkZWQgZm9yIHJlYXNvbmluZyBhYm91dCB2YWx1ZSByZXByZXNl
bnRhdGlvbi4KK2lmIEJJR19FTkRJQU4KKyAgICBjb25zdCBUYWdPZmZzZXQgPSAwCisgICAgY29u
c3QgUGF5bG9hZE9mZnNldCA9IDQKK2Vsc2UKKyAgICBjb25zdCBUYWdPZmZzZXQgPSA0CisgICAg
Y29uc3QgUGF5bG9hZE9mZnNldCA9IDAKK2VuZAorCisjIFZhbHVlIHJlcHJlc2VudGF0aW9uIGNv
bnN0YW50cy4KK2NvbnN0IEludDMyVGFnID0gLTEKK2NvbnN0IEJvb2xlYW5UYWcgPSAtMgorY29u
c3QgTnVsbFRhZyA9IC0zCitjb25zdCBVbmRlZmluZWRUYWcgPSAtNAorY29uc3QgQ2VsbFRhZyA9
IC01Citjb25zdCBFbXB0eVZhbHVlVGFnID0gLTYKK2NvbnN0IERlbGV0ZWRWYWx1ZVRhZyA9IC03
Citjb25zdCBMb3dlc3RUYWcgPSBEZWxldGVkVmFsdWVUYWcKKworIyBUeXBlIGNvbnN0YW50cy4K
K2NvbnN0IFN0cmluZ1R5cGUgPSA1Citjb25zdCBPYmplY3RUeXBlID0gMTAKKworIyBUeXBlIGZs
YWdzIGNvbnN0YW50cy4KK2NvbnN0IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxCitjb25zdCBJ
bXBsZW1lbnRzSGFzSW5zdGFuY2UgPSAyCitjb25zdCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3Rh
bmNlID0gOAorCisjIEhlYXAgYWxsb2NhdGlvbiBjb25zdGFudHMuCitjb25zdCBKU0ZpbmFsT2Jq
ZWN0U2l6ZUNsYXNzSW5kZXggPSAzCisKKyMgQnl0ZWNvZGUgb3BlcmFuZCBjb25zdGFudHMuCitj
b25zdCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDAKKworIyBDb2RlIHR5
cGUgY29uc3RhbnRzLgorY29uc3QgR2xvYmFsQ29kZSA9IDAKK2NvbnN0IEV2YWxDb2RlID0gMQor
Y29uc3QgRnVuY3Rpb25Db2RlID0gMgorCisjIFRoZSBpbnRlcnByZXRlciBzdGVhbHMgdGhlIHRh
ZyB3b3JkIG9mIHRoZSBhcmd1bWVudCBjb3VudC4KK2NvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1
bWVudENvdW50ICsgVGFnT2Zmc2V0CisKKyMgVGhpcyBtdXN0IG1hdGNoIHd0Zi9WZWN0b3IuaC4K
K2NvbnN0IFZlY3RvclNpemVPZmZzZXQgPSAwCitjb25zdCBWZWN0b3JCdWZmZXJPZmZzZXQgPSA0
CisKKyMgU3RyaW5nIGZsYWdzLgorY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDY0CisKKyMg
VXRpbGl0aWVzCittYWNybyBjcmFzaCgpCisgICAgc3RvcmVpIDAsIDB4YmJhZGJlZWZbXQorICAg
IG1vdmUgMCwgdDAKKyAgICBjYWxsIHQwCitlbmQKKworbWFjcm8gYXNzZXJ0KGFzc2VydGlvbikK
KyAgICBpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBhc3NlcnRpb24oLm9rKQorICAgICAgICBj
cmFzaCgpCisgICAgLm9rOgorICAgIGVuZAorZW5kCisKK21hY3JvIHByZXNlcnZlUmV0dXJuQWRk
cmVzc0FmdGVyQ2FsbChkZXN0aW5hdGlvblJlZ2lzdGVyKQorICAgIGlmIEFSTXY3CisgICAgICAg
IG1vdmUgbHIsIGRlc3RpbmF0aW9uUmVnaXN0ZXIKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9w
IGRlc3RpbmF0aW9uUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitl
bmQKKworbWFjcm8gcmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oc291cmNlUmVnaXN0
ZXIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBzb3VyY2VSZWdpc3RlciwgbHIKKyAgICBl
bHNpZiBYODYKKyAgICAgICAgcHVzaCBzb3VyY2VSZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAg
ZXJyb3IKKyAgICBlbmQKK2VuZAorCittYWNybyBkaXNwYXRjaChhZHZhbmNlKQorICAgIGFkZHAg
YWR2YW5jZSAqIDQsIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEJyYW5j
aFdpdGhPZmZzZXQocGNPZmZzZXQpCisgICAgbHNoaWZ0aSAyLCBwY09mZnNldAorICAgIGFkZHAg
cGNPZmZzZXQsIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEJyYW5jaChw
Y09mZnNldCkKKyAgICBsb2FkaSBwY09mZnNldCwgdDAKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhP
ZmZzZXQodDApCitlbmQKKworbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIGxvYWRpIEFy
Z3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21h
Y3JvIGNDYWxsMihmdW5jdGlvbiwgYXJnMSwgYXJnMikKKyAgICBpZiBBUk12NworICAgICAgICBt
b3ZlIGFyZzEsIHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICBlbHNpZiBYODYKKyAgICAg
ICAgcG9rZSBhcmcxLCAwCisgICAgICAgIHBva2UgYXJnMiwgMQorICAgIGVsc2UKKyAgICAgICAg
ZXJyb3IKKyAgICBlbmQKKyAgICBjYWxsIGZ1bmN0aW9uCitlbmQKKworIyBUaGlzIGJhcmVseSB3
b3Jrcy4gYXJnMyBhbmQgYXJnNCBzaG91bGQgcHJvYmFibHkgYmUgaW1tZWRpYXRlcy4KK21hY3Jv
IGNDYWxsNChmdW5jdGlvbiwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCkKKyAgICBpZiBBUk12Nwor
ICAgICAgICBtb3ZlIGFyZzEsIHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICAgICAgbW92
ZSBhcmczLCB0MgorICAgICAgICBtb3ZlIGFyZzQsIHQzCisgICAgZWxzaWYgWDg2CisgICAgICAg
IHBva2UgYXJnMSwgMAorICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICAgICAgcG9rZSBhcmczLCAy
CisgICAgICAgIHBva2UgYXJnNCwgMworICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQK
KyAgICBjYWxsIGZ1bmN0aW9uCitlbmQKKworbWFjcm8gY2FsbEhlbHBlcihoZWxwZXIpCisgICAg
Y0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNm
cgorZW5kCisKKyMgRGVidWdnaW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBsaWtlIHRvIHByaW50IGFu
IG9wZXJhbmQgaW4gdGhlIGluc3RydWN0aW9uIHN0cmVhbS4gZnJvbVdoZXJlCisjIHNob3VsZCBi
ZSBhbiBpbW1lZGlhdGUgaW50ZWdlciAtIGFueSBpbnRlZ2VyIHlvdSBsaWtlOyB1c2UgaXQgdG8g
aWRlbnRpZnkgdGhlIHBsYWNlIHlvdSdyZQorIyBkZWJ1Z2dpbmcgZnJvbS4gb3BlcmFuZCBzaG91
bGQgbGlrZXdpc2UgYmUgYW4gaW1tZWRpYXRlLCBhbmQgc2hvdWxkIGlkZW50aWZ5IHRoZSBvcGVy
YW5kCisjIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0geW91J2QgbGlrZSB0byBwcmludCBvdXQu
CittYWNybyB0cmFjZU9wZXJhbmQoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxp
bnRfdHJhY2Vfb3BlcmFuZCwgY2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUg
dDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlm
IHlvdSdkIGxpa2UgdG8gcHJpbnQgdGhlIHZhbHVlIG9mIGFuIG9wZXJhbmQgaW4gdGhlIGluc3Ry
dWN0aW9uCisjIHN0cmVhbS4gU2FtZSBhcyB0cmFjZU9wZXJhbmQoKSwgYnV0IGFzc3VtZXMgdGhh
dCB0aGUgb3BlcmFuZCBpcyBhIHJlZ2lzdGVyLCBhbmQgcHJpbnRzIGl0cworIyB2YWx1ZS4KK21h
Y3JvIHRyYWNlVmFsdWUoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJh
Y2VfdmFsdWUsIGNmciwgUEMsIGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQwor
ICAgIG1vdmUgdDEsIGNmcgorZW5kCisKK21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBpZiBF
WEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsSGVscGVyKF9sbGludF90cmFjZSkKKyAgICBl
bmQKK2VuZAorCisjIENhbGwgYSBoZWxwZXIgZm9yIGNhbGwgb3Bjb2Rlcy4KK21hY3JvIGNhbGxD
YWxsSGVscGVyKGFkdmFuY2UsIGhlbHBlciwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5jZSAqIDQs
IFBDLCB0MAorICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisg
ICAgY0NhbGwyKGhlbHBlciwgY2ZyLCBQQykKKyAgICBtb3ZlIHQxLCBjZnIKKyAgICBhY3Rpb24o
dDApCitlbmQKKworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIGhlbHBlcikKKyAgICBj
YWxsQ2FsbEhlbHBlcigKKyAgICAgICAgYWR2YW5jZSwKKyAgICAgICAgaGVscGVyLAorICAgICAg
ICBtYWNybyAoY2FsbGVlKQorICAgICAgICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAgICAgIGRp
c3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNo
VG9KSVQoaW5jcmVtZW50LCBhY3Rpb24pCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENvZGVCbG9j
azo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3QwXSwgLmNvbnRpbnVlCisgICAgICAgIGFjdGlvbigp
CisgICAgLmNvbnRpbnVlOgorICAgIGVuZAorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRG
b3JMb29wKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxLAorICAgICAgICBtYWNy
byAoKQorICAgICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nm
cl0KKyAgICAgICAgICAgIGNDYWxsMihfbGxpbnRfbG9vcF9vc3IsIGNmciwgUEMpCisgICAgICAg
ICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAg
ICAgICBqbXAgdDAKKyAgICAgICAgLnJlY292ZXI6CisgICAgICAgICAgICBsb2FkaSBBcmd1bWVu
dENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBj
aGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAg
ICAgIDEwLAorICAgICAgICBtYWNybyAoKQorICAgICAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRf
cmVwbGFjZSkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGFzc2VydE5vdENvbnN0YW50KGlu
ZGV4KQorICAgIGFzc2VydChtYWNybyAob2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdp
c3RlckluZGV4LCBvayBlbmQpCitlbmQKKworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0
IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8g
bG9hZENvbnN0YW50T3JWYXJpYWJsZShpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBp
bmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRh
Z09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRw
IENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50
UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBU
aGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVl
ID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdp
bGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMu
CisgICAgbG9hZHAgVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAg
UGF5bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisK
KyMgSW5kZXggYW5kIHBheWxvYWQgbWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLiBJbmRleCBtYXkg
YmUgY2xvYmJlcmVkLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRh
ZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRv
bmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFnCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3RhZ10s
IHRhZworICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29u
dGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4g
dmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3Rl
ckluZGV4KSA8PCAzLgorICAgIGxzaGlmdGkgMywgaW5kZXgKKyAgICBhZGRwIGluZGV4LCB0YWcK
KyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQKKyAgICBsb2FkcCBUYWdPZmZz
ZXRbdGFnXSwgdGFnCisuZG9uZToKK2VuZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZFRhZ0N1c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxvYWQpCisgICAgYmlndGVxIGlu
ZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgdGFnQ2hlY2so
VGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBp
bmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJl
Z2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhl
cmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+
PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxs
IGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgor
ICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0pCisgICAgbG9hZHAgUGF5
bG9hZE9mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMg
SW5kZXggYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBu
b3QgbXV0YXRlZC4gVXNlCisjIHRoaXMgaWYgeW91IGtub3cgd2hhdCB0aGUgdGFnIG9mIHRoZSB2
YXJpYWJsZSBzaG91bGQgYmUuIERvaW5nIHRoZSB0YWcKKyMgdGVzdCBhcyBwYXJ0IG9mIGxvYWRp
bmcgdGhlIHZhcmlhYmxlIHJlZHVjZXMgcmVnaXN0ZXIgdXNlLCBidXQgbWF5IG5vdAorIyBiZSBm
YXN0ZXIgdGhhbiBkb2luZyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlIGZvbGxvd2VkIGJ5IGEgYnJh
bmNoIG9uIHRoZQorIyB0YWcuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChp
bmRleCwgZXhwZWN0ZWRUYWcsIHBheWxvYWQsIHNsb3cpCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWRUYWdDdXN0b20oCisgICAgICAgIGluZGV4LAorICAgICAgICBtYWNybyAoYWN0
dWFsVGFnKSBiaW5lcSBhY3R1YWxUYWcsIGV4cGVjdGVkVGFnLCBzbG93IGVuZCwKKyAgICAgICAg
cGF5bG9hZCkKK2VuZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hl
Y2tlZChpbmRleCwgcGF5bG9hZCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRh
Z0N1c3RvbSgKKyAgICAgICAgaW5kZXgsCisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGVuZCwK
KyAgICAgICAgcGF5bG9hZCkKK2VuZAorCittYWNybyB3cml0ZUJhcnJpZXIodGFnLCBwYXlsb2Fk
KQorICAgICMgTm90aGluZyB0byBkbywgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGdlbmVyYXRpb25h
bCBvciBpbmNyZW1lbnRhbCBjb2xsZWN0b3IuCitlbmQKKworbWFjcm8gdmFsdWVQcm9maWxlKHRh
ZywgcGF5bG9hZCwgcHJvZmlsZSkKKyAgICBzdG9yZWkgdGFnLCBWYWx1ZVByb2ZpbGU6Om1fYnVj
a2V0cyArIFRhZ09mZnNldFtwcm9maWxlXQorICAgIHN0b3JlaSBwYXlsb2FkLCBWYWx1ZVByb2Zp
bGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbcHJvZmlsZV0KK2VuZAorCisKKyMgSW5kaWNh
dGUgdGhlIGJlZ2lubmluZyBvZiBMTEludC4KK19sbGludF9iZWdpbjoKKyAgICBjcmFzaCgpCisK
KworIyBFbnRyeXBvaW50cyBpbnRvIHRoZSBpbnRlcnByZXRlcgorCittYWNybyBmdW5jdGlvbkZv
ckNhbGxDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ2FsbGVlW2Nm
cl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3Rh
cmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFi
bGU6Om1fY29kZUJsb2NrRm9yQ2FsbFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCitl
bmQKKworbWFjcm8gZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVn
aXN0ZXIpCisgICAgbG9hZHAgQ2FsbGVlW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAg
SlNGdW5jdGlvbjo6bV9leGVjdXRhYmxlW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIK
KyAgICBsb2FkcCBGdW5jdGlvbkV4ZWN1dGFibGU6Om1fY29kZUJsb2NrRm9yQ29uc3RydWN0W3Rh
cmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBub3RGdW5jdGlvbkNv
ZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwg
dGFyZ2V0UmVnaXN0ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3Vy
Y2VSZWdpc3RlcikKKyAgICBzdG9yZXAgc291cmNlUmVnaXN0ZXIsIENvZGVCbG9ja1tjZnJdCitl
bmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCisg
ICAgIyBOb3RoaW5nIHRvIGRvIQorZW5kCisKKyMgRG8gdGhlIGJhcmUgbWluaW11bSByZXF1aXJl
ZCB0byBleGVjdXRlIGNvZGUuIFNldHMgdXAgdGhlIFBDLCBsZWF2ZSB0aGUgQ29kZUJsb2NrKgor
IyBpbiB0MS4gTWF5IGFsc28gdHJpZ2dlciBwcm9sb2d1ZSBlbnRyeSBPU1IuCittYWNybyBwcm9s
b2d1ZShjb2RlQmxvY2tHZXR0ZXIsIGNvZGVCbG9ja1NldHRlciwgb3NySGVscGVyLCB0cmFjZUhl
bHBlcikKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpCisgICAgCisgICAg
IyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBPU1IuCisgICAg
c3RvcmVwIHQyLCBSZXR1cm5QQ1tjZnJdCisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcKKyAgICAg
ICAgY2FsbEhlbHBlcih0cmFjZUhlbHBlcikKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tHZXR0ZXIo
dDEpCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAgYmFkZGlzIDUsIENvZGVCbG9jazo6bV9s
bGludEV4ZWN1dGVDb3VudGVyW3QxXSwgLmNvbnRpbnVlCisgICAgICAgIGNDYWxsMihvc3JIZWxw
ZXIsIGNmciwgUEMpCisgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAgICBidHB6IHQwLCAucmVj
b3ZlcgorICAgICAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgICAgICByZXN0b3JlUmV0
dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICAgICAgam1wIHQwCisgICAgLnJlY292ZXI6
CisgICAgICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICAuY29udGludWU6CisgICAgZW5kCisg
ICAgY29kZUJsb2NrU2V0dGVyKHQxKQorICAgIAorICAgICMgU2V0IHVwIHRoZSBQQy4KKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDBd
LCBQQworZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMg
d2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCisjIE11c3QgY2FsbCBkaXNwYXRjaCgwKSBh
ZnRlciBjYWxsaW5nIHRoaXMuCittYWNybyBmdW5jdGlvbkluaXRpYWxpemF0aW9uKHByb2ZpbGVB
cmdTa2lwKQorICAgICMgUHJvZmlsZSB0aGUgYXJndW1lbnRzLiBVbmZvcnR1bmF0ZWx5LCB3ZSBo
YXZlIG5vIGNob2ljZSBidXQgdG8gZG8gdGhpcy4gVGhpcworICAgICMgY29kZSBpcyBwcmV0dHkg
aG9ycmVuZG91cyBiZWNhdXNlIG9mIHRoZSBkaWZmZXJlbmNlIGluIG9yZGVyaW5nIGJldHdlZW4K
KyAgICAjIGFyZ3VtZW50cyBhbmQgdmFsdWUgcHJvZmlsZXMsIHRoZSBkZXNpcmUgdG8gaGF2ZSBh
IHNpbXBsZSBsb29wLWRvd24tdG8temVybworICAgICMgbG9vcCwgYW5kIHRoZSBkZXNpcmUgdG8g
dXNlIG9ubHkgdGhyZWUgcmVnaXN0ZXJzIHNvIGFzIHRvIHByZXNlcnZlIHRoZSBQQyBhbmQKKyAg
ICAjIHRoZSBjb2RlIGJsb2NrLiBJdCBpcyBsaWtlbHkgdGhhdCB0aGlzIGNvZGUgc2hvdWxkIGJl
IHJld3JpdHRlbiBpbiBhIG1vcmUKKyAgICAjIG9wdGltYWwgd2F5IGZvciBhcmNoaXRlY3R1cmVz
IHRoYXQgaGF2ZSBtb3JlIHRoYW4gZml2ZSByZWdpc3RlcnMgYXZhaWxhYmxlCisgICAgIyBmb3Ig
YXJiaXRyYXJ5IHVzZSBpbiB0aGUgaW50ZXJwcmV0ZXIuCisgICAgbG9hZGkgQ29kZUJsb2NrOjpt
X251bVBhcmFtZXRlcnNbdDFdLCB0MAorICAgIGFkZGkgLXByb2ZpbGVBcmdTa2lwLCB0MCAjIFVz
ZSBhZGRpIGJlY2F1c2UgdGhhdCdzIHdoYXQgaGFzIHRoZSBwZWVwaG9sZQorICAgIGFzc2VydCht
YWNybyAob2spIGJpZ3RlcSB0MCwgMCwgb2sgZW5kKQorICAgIGJ0aXogdDAsIC5hcmd1bWVudFBy
b2ZpbGVEb25lCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2FyZ3VtZW50VmFsdWVQcm9maWxlcyAr
IFZlY3RvckJ1ZmZlck9mZnNldFt0MV0sIHQzCisgICAgbXVsaSBzaXplb2YgVmFsdWVQcm9maWxl
LCB0MCwgdDIgIyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVkdWN0aW9uIQorICAgIG5lZ2kg
dDAKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MiwgdDMKKy5hcmd1bWVudFByb2ZpbGVM
b29wOgorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNldCArIDggLSBwcm9m
aWxlQXJnU2tpcCAqIDhbY2ZyLCB0MF0sIHQyCisgICAgc3VicCBzaXplb2YgVmFsdWVQcm9maWxl
LCB0MworICAgIHN0b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBzaXplb2YgVmFsdWVQcm9maWxl
ICsgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbdDNdCisgICAgbG9hZGkgVGhp
c0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldCArIDggLSBwcm9maWxlQXJnU2tpcCAqIDhb
Y2ZyLCB0MF0sIHQyCisgICAgc3RvcmVpIHQyLCBwcm9maWxlQXJnU2tpcCAqIHNpemVvZiBWYWx1
ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxvYWRPZmZzZXRbdDNdCisg
ICAgYmFkZGlueiA4LCB0MCwgLmFyZ3VtZW50UHJvZmlsZUxvb3AKKy5hcmd1bWVudFByb2ZpbGVE
b25lOgorICAgIAorICAgICMgQ2hlY2sgc3RhY2sgaGVpZ2h0LgorICAgIGxvYWRpIENvZGVCbG9j
azo6bV9udW1DYWxsZWVSZWdpc3RlcnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxEYXRhW3QxXSwgdDIKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmludGVycHJldGVyW3Qy
XSwgdDIgICAjIEZJWE1FOiBDYW4gZ2V0IHRvIHRoZSBSZWdpc3RlckZpbGUgZnJvbSB0aGUgSklU
U3RhY2tGcmFtZQorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQwLCBjZnIsIHQwCisgICAg
YnBhZXEgSW50ZXJwcmV0ZXI6Om1fcmVnaXN0ZXJGaWxlICsgUmVnaXN0ZXJGaWxlOjptX2VuZFt0
Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSworCisgICAgIyBTdGFjayBoZWlnaHQgY2hlY2sgZmFpbGVk
IC0gbmVlZCB0byBjYWxsIGEgaGVscGVyLgorICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlZ2lzdGVy
X2ZpbGVfY2hlY2spCisuc3RhY2tIZWlnaHRPSzoKK2VuZAorCisjIEV4cGVjdHMgdGhhdCBDb2Rl
QmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgor
bWFjcm8gZnVuY3Rpb25Bcml0eUNoZWNrKGRvbmVMYWJlbCwgaGVscGVyKQorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXQgKyBBcmd1bWVudENvdW50W2Nmcl0sIHQwCisgICAgYmlhZXEgdDAsIENvZGVC
bG9jazo6bV9udW1QYXJhbWV0ZXJzW3QxXSwgZG9uZUxhYmVsCisgICAgY0NhbGwyKGhlbHBlciwg
Y2ZyLCBQQykgICAjIFRoaXMgaGVscGVyIGhhcyBhIHNpbXBsZSBwcm90b2NvbDogdDAgPSAwID0+
IG5vIGVycm9yLCB0MCAhPSAwID0+IGVycm9yCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYnRpeiB0
MCwgLmNvbnRpbnVlCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQx
CisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAg
am1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisuY29udGludWU6
CisgICAgIyBSZWxvYWQgQ29kZUJsb2NrIGFuZCBQQywgc2luY2UgdGhlIGhlbHBlciBjbG9iYmVy
ZWQgaXQuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX2luc3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpJbnN0cnVjdGlv
bnM6Om1faW5zdHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKKyAgICBqbXAg
ZG9uZUxhYmVsCitlbmQKKworX2xsaW50X3Byb2dyYW1fcHJvbG9ndWU6CisgICAgcHJvbG9ndWUo
bm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBf
bGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2goMCkK
KworCitfbGxpbnRfZXZhbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVC
bG9ja0dldHRlciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3Is
IF9sbGludF90cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNhbGxDb2Rl
QmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1
bmN0aW9uX2Zvcl9jYWxsLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwp
CisuZnVuY3Rpb25Gb3JDYWxsQmVnaW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigwKQor
ICAgIGRpc3BhdGNoKDApCisgICAgCisKK19sbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3By
b2xvZ3VlOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVy
LCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3Jf
Y29uc3RydWN0LCBfbGxpbnRfdHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkK
Ky5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24o
MSkKKyAgICBkaXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJp
dHlfY2hlY2s6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBm
dW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2Fs
bF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY2FsbCkKKyAgICBmdW5j
dGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luLCBfbGxpbnRfaGVscGVyX2NhbGxf
YXJpdHlDaGVjaykKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVj
azoKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVu
Y3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9hcml0eUNoZWNrLCBfbGxpbnRfdHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KQor
ICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbiwgX2xsaW50
X2hlbHBlcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKKworIyBJbnN0cnVjdGlvbiBpbXBsZW1lbnRh
dGlvbnMKKworX2xsaW50X29wX2VudGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtVmFyc1t0Ml0s
IHQyCisgICAgYnRpeiB0MiwgLm9wRW50ZXJEb25lCisgICAgbW92ZSBVbmRlZmluZWRUYWcsIHQw
CisgICAgbW92ZSAwLCB0MQorLm9wRW50ZXJMb29wOgorICAgIHN1YmkgMSwgdDIKKyAgICBzdG9y
ZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQyLCA4XQorICAgIGJ0aW56IHQyLCAub3BFbnRlckxvb3AKKy5vcEVudGVyRG9uZToK
KyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9jcmVhdGVfYWN0aXZhdGlvbjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BDcmVhdGVBY3RpdmF0aW9uRG9uZQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbikKKy5vcENyZWF0ZUFj
dGl2YXRpb25Eb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luaXRfbGF6eV9y
ZWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3Jl
aSBFbXB0eVZhbHVlVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgMCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2Ny
ZWF0ZV9hcmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3Jl
YXRlQXJndW1lbnRzRG9uZQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9jcmVhdGVfYXJn
dW1lbnRzKQorLm9wQ3JlYXRlQXJndW1lbnRzRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK21h
Y3JvIGFsbG9jYXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJbmRleCwgY2xhc3NJbmZvT2Zmc2V0
LCBzdHJ1Y3R1cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBzbG93Q2FzZSkKKyAgICBp
ZiBBTFdBWVNfQUxMT0NBVEVfU0xPVworICAgICAgICBqbXAgc2xvd0Nhc2UKKyAgICBlbHNlCisg
ICAgICAgIGNvbnN0IG9mZnNldE9mTXlTaXplQ2xhc3MgPSBKU0dsb2JhbERhdGE6OmhlYXAgKyBI
ZWFwOjptX29iamVjdFNwYWNlICsgTWFya2VkU3BhY2U6Om1fcHJlY2lzZVNpemVDbGFzc2VzICsg
c2l6ZUNsYXNzSW5kZXggKiBzaXplb2YgTWFya2VkQWxsb2NhdG9yCisgICAgICAgIAorICAgICAg
ICAjIEZJWE1FOiB3ZSBjYW4gZ2V0IHRoZSBnbG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRo
ZSBzdGFjay4KKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gxCisgICAgICAg
IGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAg
ICAgCisgICAgICAgICMgR2V0IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LiAgICAKKyAg
ICAgICAgbG9hZHAgb2Zmc2V0T2ZNeVNpemVDbGFzcyArIE1hcmtlZEFsbG9jYXRvcjo6bV9maXJz
dEZyZWVDZWxsW3NjcmF0Y2gxXSwgcmVzdWx0CisgICAgICAgIGJ0cHogcmVzdWx0LCBzbG93Q2Fz
ZQorICAgICAgICAKKyAgICAgICAgIyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxp
c3QuCisgICAgICAgIGxvYWRwIFtyZXN1bHRdLCBzY3JhdGNoMgorICAgICAgICBzdG9yZXAgc2Ny
YXRjaDIsIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRBbGxvY2F0b3I6Om1fZmlyc3RGcmVl
Q2VsbFtzY3JhdGNoMV0KKyAgICAKKyAgICAgICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisg
ICAgICAgIGxvYWRwIGNsYXNzSW5mb09mZnNldFtzY3JhdGNoMV0sIHNjcmF0Y2gyCisgICAgICAg
IHN0b3JlcCBzY3JhdGNoMiwgW3Jlc3VsdF0KKyAgICAgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlND
ZWxsOjptX3N0cnVjdHVyZVtyZXN1bHRdCisgICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9p
bmhlcml0b3JJRFtyZXN1bHRdCisgICAgICAgIGFkZHAgc2l6ZW9mIEpTT2JqZWN0LCByZXN1bHQs
IHNjcmF0Y2gxCisgICAgICAgIHN0b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVydHlT
dG9yYWdlW3Jlc3VsdF0KKyAgICBlbmQKK2VuZAorCitfbGxpbnRfb3BfY3JlYXRlX3RoaXM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGFzc2VydE5vdENv
bnN0YW50KHQwKQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9w
Q3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAor
ICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBTdHJ1Y3R1cmU6
Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wQ3JlYXRl
VGhpc1Nsb3cKKyAgICBsb2FkcCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFt0MF0sIHQyCisgICAg
YnRweiB0MiwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNG
aW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFz
c0luZm8sIHQyLCB0MCwgdDEsIHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9w
Q3JlYXRlVGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV90aGlz
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRPZmZzZXQg
KyBDYWxsZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0
Y2goMikKKworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENl
bGxUYWcsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYmJi
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBl
LCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0VGhpc1Ns
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAgICBkaXNw
YXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xv
YmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVj
dFN0cnVjdHVyZVt0MF0sIHQxCisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmpl
Y3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0
MSwgdDAsIHQyLCB0MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3T2JqZWN0
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkKKyAgICBkaXNw
YXRjaCgyKQorCisKK19sbGludF9vcF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlzcGF0Y2goNCkK
KworCitfbGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19hcnJheV9idWZmZXIpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25ld19yZWdleHApCisgICAgZGlzcGF0Y2goMykK
KworCitfbGxpbnRfb3BfbW92OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQx
LCB0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9ub3Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0
MykKKyAgICBiaW5lcSB0MiwgQm9vbGVhblRhZywgLm9wTm90U2xvdworICAgIHhvcmkgMSwgdDMK
KyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5
bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5vdFNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0Mgor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0
MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVx
IHQyLCB0MywgLm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93CisgICAg
YmliIHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNp
ZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0Miwg
OF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRj
aCg0KQorCisub3BFcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2VxKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2VxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5v
dENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFn
LCAub3BFcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwg
dDEKKyAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3Qx
XSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRp
YXRlCisub3BFcU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIKKyAgICBj
aWVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQyLCB0MQorLm9wRXFOdWxsTm90SW1t
ZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAg
ICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BD
XSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQy
LCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAg
ICBiaW5lcSB0MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFT
bG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwg
dDIKKyAgICBjaW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNl
dFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQor
ICAgIGRpc3BhdGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX25lcSkKKyAgICBkaXNwYXRjaCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251bGw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENd
LCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAg
IGJpbmVxIHQxLCBDZWxsVGFnLCAub3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAg
Lm9wTmVxTnVsbE5vdEltbWVkaWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBjaW5lcSB0
MSwgTnVsbFRhZywgdDIKKyAgICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIGFuZGkg
dDIsIHQxCisub3BOZXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBU
YWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0
aW9uLCBoZWxwZXIpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKKyAgICBi
aWIgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmlu
ZworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDFdLCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJlcSBT
dHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwg
LnNsb3cKKy5ub3RTdHJpbmc6CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVy
YXRpb24odDAsIHQxLCB0MCkKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2Nmciwg
dDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlz
cGF0Y2goNCkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2go
NCkKK2VuZAorCitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCBy
ZXN1bHQgZW5kLCBfbGxpbnRfaGVscGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3RyaWN0
ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdo
dCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9u
c3RyaWN0ZXEpCisKKworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX2xlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2xlc3NlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVy
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3Jl
YXRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCBJbnQzMlRhZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQxCisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5j
U2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNwYXRj
aCgyKQorCisKK19sbGludF9vcF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFn
LCAub3BQcmVEZWNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEK
KyAgICBic3ViaW8gMSwgdDEsIC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93OgorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKwor
X2xsaW50X29wX3Bvc3RfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0sIEludDMyVGFnLCAub3BQb3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5j
RG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0
MiwgdDMKKyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMy
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5v
cFBvc3RJbmNEb25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9wb3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10s
IHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCBJbnQzMlRhZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0Rv
bmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIs
IHQzCisgICAgYnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQzMlRh
ZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQ
b3N0RGVjRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxp
bnRfb3BfdG9fanNudW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAs
IHQyLCB0MykKKyAgICBiaWVxIHQyLCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklzSW50CisgICAg
YmlhZXEgdDIsIEVtcHR5VmFsdWVUYWcsIC5vcFRvSnNudW1iZXJTbG93Cisub3BUb0pzbnVtYmVy
SXNJbnQ6CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkg
dDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb0pz
bnVtYmVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fanNudW1iZXIpCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQwLCB0MSwgdDIpCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BO
ZWdhdGVTcmNOb3RJbnQKKyAgICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93Cisg
ICAgbmVnaSB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisg
ICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykK
Ky5vcE5lZ2F0ZVNyY05vdEludDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xv
dworICAgIHhvcmkgMHg4MDAwMDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIs
IHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRp
c3BhdGNoKDMpCisKKy5vcE5lZ2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X25lZ2F0ZSkKKyAgICBkaXNwYXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUo
aW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBs
b2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZSh0MiwgdDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0
MiwgdDApCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDMs
IEludDMyVGFnLCAub3AyTm90SW50CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50ZWdlck9w
ZXJhdGlvbkFuZFN0b3JlKHQzLCB0MSwgdDAsIC5zbG93LCB0MikKKyAgICBkaXNwYXRjaCg1KQor
Cisub3AxTm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBp
bnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEgdDIsIExv
d2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJs
ZQorICAgIGJpbmVxIHQzLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQxLCBmdDEKKyAgICBq
bXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQxLCB0
MywgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgZmlpMmQg
dDAsIHQyLCBmdDAKKyAgICBkb3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0
MCwgW2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wMk5vdEludDoKKyAgICAjIEZp
cnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBk
ZWZpbml0ZWx5IG5vdC4KKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBiaWEgdDMsIExvd2VzdFRh
ZywgLnNsb3cKKyAgICBjaTJkIHQwLCBmdDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorICAgIGRv
dWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KKyAg
ICBkaXNwYXRjaCg1KQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNw
YXRjaCg1KQorZW5kCisKK21hY3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9w
ZXJhdGlvbiwgaGVscGVyKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3Jv
IChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgaW50ZWdl
ck9wZXJhdGlvbihsZWZ0LCByaWdodCwgc2xvdykKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRh
ZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBh
eWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBkb3VibGVP
cGVyYXRpb24sIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfYWRkOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBi
YWRkaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQp
IGFkZGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2FkZCkKKworCitf
bGxpbnRfb3BfbXVsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0
b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkK
KyAgICAgICAgICAgIGNvbnN0IHNjcmF0Y2ggPSBpbnQzMlRhZyAgICMgV2Uga25vdyB0aGF0IHdl
IGNhbiByZXVzZSB0aGUgaW50MzJUYWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEgY29uc3RhbnQu
CisgICAgICAgICAgICBtb3ZlIHJpZ2h0LCBzY3JhdGNoCisgICAgICAgICAgICBibXVsaW8gbGVm
dCwgc2NyYXRjaCwgc2xvdworICAgICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRvbmUKKyAgICAg
ICAgICAgIGJpbHQgbGVmdCwgMCwgc2xvdworICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xv
dworICAgICAgICAuZG9uZToKKyAgICAgICAgICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0
W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgUGF5bG9hZE9mZnNl
dFtjZnIsIGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCkgbXVsZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbXVsKQorCisK
K19sbGludF9vcF9zdWI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfc3ViKQorCisKK19sbGludF9vcF9kaXY6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQz
MlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgY2kyZCBsZWZ0LCBm
dDAKKyAgICAgICAgICAgIGNpMmQgcmlnaHQsIGZ0MQorICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0
MQorICAgICAgICAgICAgYmNkMmkgZnQxLCByaWdodCwgLm5vdEludAorICAgICAgICAgICAgc3Rv
cmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3Jl
aSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgam1wIC5k
b25lCisgICAgICAgIC5ub3RJbnQ6CisgICAgICAgICAgICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRl
eCwgOF0KKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0KSBkaXZkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9kaXYp
CisKKworX2xsaW50X29wX21vZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX21vZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGJpdE9wKG9w
ZXJhdGlvbiwgaGVscGVyLCBhZHZhbmNlKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MywgSW50
MzJUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGxvYWRpIDRb
UENdLCB0MgorICAgIG9wZXJhdGlvbih0MSwgdDAsIC5zbG93KQorICAgIHN0b3JlaSB0MywgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIs
IDhdCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxw
ZXIpCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKK2VuZAorCitfbGxpbnRfb3BfbHNoaWZ0OgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCBzbG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9s
c2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX3JzaGlmdDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgcnNo
aWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfcnNoaWZ0LAorICAg
ICAgICA0KQorCisKK19sbGludF9vcF91cnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAg
dXJzaGlmdGkgbGVmdCwgcmlnaHQKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAg
ICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX3Vyc2hpZnQsCisgICAgICAgIDQpCisK
KworX2xsaW50X29wX2JpdGFuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5kaSBsZWZ0LCByaWdodCBlbmQsCisg
ICAgICAgIF9sbGludF9oZWxwZXJfYml0YW5kLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9i
aXR4b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRf
aGVscGVyX2JpdHhvciwKKyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0b3I6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNs
b3cpIG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0b3IsCisg
ICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdG5vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wQml0bm90
U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQor
ICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMp
CisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2JpdG5vdCkK
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQxLCBDZWxsVGFnLCB0MCwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cp
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1
cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNIYXNJbnN0
YW5jZSwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDaGVj
a0hhc0luc3RhbmNlU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY2hlY2tfaGFz
X2luc3RhbmNlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luc3RhbmNlb2Y6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMg
dGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisgICAgIyBGSVhNRTogVGhpcyBzaG91
bGQgYmUgZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDEsIHQwKQorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUlu
Zm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5j
ZW9mU2xvdworICAgIAorICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCisgICAgbG9hZGkgMTZb
UENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgbG9hZHAgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyAr
IFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdworICAg
IGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBD
ZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgCisgICAgIyBSZWdpc3RlciBzdGF0
ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3ZlIDEsIHQwCisub3BJbnN0YW5j
ZW9mTG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIKKyAgICBsb2Fk
aSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCisgICAgYnBl
cSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZM
b29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9mRG9uZToKKyAgICBzdG9yZWkgQm9v
bGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wSW5zdGFuY2VvZlNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2luc3RhbmNlb2YpCisgICAgZGlzcGF0Y2goNSkK
KworCitfbGxpbnRfb3BfdHlwZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfdHlwZW9mKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X2lzX3VuZGVmaW5lZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9p
c19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19udW1i
ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9p
c19udW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfc3RyaW5nOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfc3RyaW5n
KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX29iamVjdDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX29iamVjdCkKKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19mdW5jdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX2Z1bmN0aW9uKQorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX2luOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfaW4pCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
cmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3Jlc29sdmUpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9za2lw
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVz
b2x2ZV9za2lwKQorICAgIGRpc3BhdGNoKDUpCisKKworbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXpl
LCBzbG93KQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERl
c3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgUHJvcGVydHkgaWRlbnRpZmll
ciBpbmRleCBpbiB0aGUgY29kZSBibG9jay4KKyAgICAjIDEyW1BDXSAgU3RydWN0dXJlIHBvaW50
ZXIsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgICMgMTZbUENd
ICBPZmZzZXQgaW4gZ2xvYmFsIG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBn
ZW5lcmF0b3IuCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQxCisgICAgYnBuZXEgdDEsIDEyW1BDXSwgc2xvdworICAgIGxvYWRpIDE2W1BDXSwg
dDEKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAorICAgIGxv
YWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAs
IHQxLCA4XSwgdDMKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNl
dFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQor
ICAgIGxvYWRpIChzaXplIC0gMSkgKiA0W1BDXSwgdDAKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQz
LCB0MCkKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWw6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIHJlc29sdmVHbG9iYWwoNiwgLm9wUmVzb2x2ZUdsb2JhbFNsb3cpCisgICAgZGlz
cGF0Y2goNikKKworLm9wUmVzb2x2ZUdsb2JhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3BhdGNoKDYpCisKKworIyBHaXZlcyB5b3Ug
dGhlIHNjb3BlIGluIHQwLCB3aGlsZSBhbGxvd2luZyB5b3UgdG8gb3B0aW9uYWxseSBwZXJmb3Jt
IGFkZGl0aW9uYWwgY2hlY2tzIG9uIHRoZQorIyBzY29wZXMgYXMgdGhleSBhcmUgdHJhdmVyc2Vk
LiBzY29wZUNoZWNrKCkgaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHJlZ2lzdGVy
CisjIGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdpc3RlciB0aGF0IGNhbiBiZSB1c2VkIGZv
ciBzY3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAorIyB1c2UgdDMsIHNvIHlvdSBjYW4g
aG9sZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJlLgorbWFjcm8gZ2V0U2NvcGUoZGVCcnVpamluSW5k
ZXhPcGVyYW5kLCBzY29wZUNoZWNrKQorICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zm
c2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0MgorICAgIAor
ICAgIGJ0aXogdDIsIC5kb25lCisgICAgCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisg
ICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAubG9vcAor
ICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9vcAorICAg
IAorICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0aW9uUmVnaXN0ZXJbdDFdLCB0MQorCisg
ICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KKyAgICBiaWVx
IFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlvbgorICAg
IHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwg
dDAKKy5ub0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5k
b25lCisubG9vcDoKKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWlu
Tm9kZTo6bmV4dFt0MF0sIHQwCisgICAgc3ViaSAxLCB0MgorICAgIGJ0aW56IHQyLCAubG9vcAor
CisuZG9uZToKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYzoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0s
IHQzCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJlW3QzXSwgdDMK
KyAgICBnZXRTY29wZSgKKyAgICAgICAgMjBbUENdLAorICAgICAgICBtYWNybyAoc2NvcGUsIHNj
cmF0Y2gpCisgICAgICAgICAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3Njb3BlXSwg
c2NyYXRjaAorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVtzY3JhdGNoXSwg
dDMsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93CisgICAgICAgIGVuZCkKKyAgICBy
ZXNvbHZlR2xvYmFsKDcsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdykKKyAgICBkaXNwYXRj
aCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKKyAgICBk
aXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpCisgICAgZGlzcGF0Y2goNykK
KworCitfbGxpbnRfb3BfZ2V0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
ICMgT3BlcmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZv
ciB0aGUgbG9hZC4KKyAgICAjIDhbUENdICAgSW5kZXggb2YgcmVnaXN0ZXIgaW4gdGhlIHNjb3Bl
LgorICAgICMgMTJbUENdICBEZSBCcnVpamluIGluZGV4LgorICAgIGdldFNjb3BlKDEyW1BDXSwg
bWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9h
ZGkgOFtQQ10sIHQyCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisg
ICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRp
IFRhZ09mZnNldFt0MCwgdDIsIDhdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQy
LCA4XSwgdDAKKyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3Jl
aSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAg
ICB2YWx1ZVByb2ZpbGUodDMsIHQwLCB0MSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9v
cF9wdXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZ2V0U2NvcGUoOFtQ
Q10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MywgdDIpCisgICAgbG9hZGkgNFtQQ10sIHQx
CisgICAgd3JpdGVCYXJyaWVyKHQzLCB0MikKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2Jq
ZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0s
IHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0b3JlaSB0Miwg
UGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
Z2V0X2dsb2JhbF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0
MQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAg
IGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xv
YmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0
MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MQorICAgIHN0
b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDMsIDhdCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIHZhbHVlUHJvZmlsZSh0
MiwgdDEsIHQzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9nbG9iYWxfdmFy
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3Qw
XSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQyLCB0MykKKyAgICBsb2FkaSA0W1BDXSwgdDEK
KyAgICB3cml0ZUJhcnJpZXIodDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W3QwLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfYmFzZSkKKyAgICBkaXNwYXRj
aCg1KQorCisKK19sbGludF9vcF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4
aXN0cykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfYmFzZToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29s
dmVfd2l0aF9iYXNlKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0
aF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcmVzb2x2ZV93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZ2V0
X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBo
aWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisg
ICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5n
ZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQorICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0
IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKKyAgICAj
IHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xv
dyBwYXRoLCB3aGljaCBpcyB3aGF0CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55
d2F5LgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93
KQorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0
b3JhZ2VbdDNdLCB0MAorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9w
R2V0QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAs
IHQyXSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAgc3RvcmVp
IHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAzMltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0
MiwgdDEpCisgICAgZGlzcGF0Y2goOSkKKworLm9wR2V0QnlJZFNsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2dldF9ieV9pZCkKKyAgICBkaXNwYXRjaCg5KQorCisKK19sbGludF9v
cF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
OFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93CisgICAgbG9h
ZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDIKKyAgICBzdWJpIDEsIHQy
CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkg
dDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRB
cmd1bWVudHNMZW5ndGhTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJn
dW1lbnRzX2xlbmd0aCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaWQ6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2
W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywg
dDAsIC5vcFB1dEJ5SWRTbG93KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkcCBKU09i
amVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MworICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJZFNsb3cKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDIsIHQwLCB0MikKKyAgICB3cml0ZUJhcnJpZXIo
dDAsIHQyKQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KKyAgICBzdG9yZWkgdDIs
IFBheWxvYWRPZmZzZXRbdDMsIHQxXQorICAgIGRpc3BhdGNoKDkpCisKKy5vcFB1dEJ5SWRTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfaWQpCisgICAgZGlzcGF0Y2go
OSkKKworCittYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQx
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQ
dXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgYnBuZXEgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGFkZGl0aW9uYWxDaGVja3ModDEs
IHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZHAgSlNP
YmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBhZGRwIHQxLCB0MworICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQx
LCB0MikKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSAyNFtQQ10sIHQx
CisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlcCB0MSwgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0KKyAgICBkaXNwYXRjaCg5KQorZW5kCisKK19sbGludF9vcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9s
ZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWw6CisgICAgcHV0QnlJZFRyYW5zaXRpb24oCisgICAgICAgIG1hY3Jv
IChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCisgICAgICAgICAgICBjb25zdCBwcm90b0Nl
bGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBm
b3IgdGhlIHByb3RvCisgICAgICAgIAorICAgICAgICAgICAgbG9hZHAgMjhbUENdLCBzY3JhdGNo
CisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisg
ICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0
Y2gKKyAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkK
KyAgICAgICAgICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRT
dHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorICAgICAgICAubG9vcDoKKyAgICAgICAgICAgIGxv
YWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0s
IHByb3RvQ2VsbAorICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0Nl
bGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0
Y2hdLCBzbG93CisgICAgICAgICAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICAgICAgICAgIGJpbmVx
IFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRh
ZywgLmxvb3AKKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCkKKworCitfbGxpbnRfb3BfZGVs
X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfZGVsX2J5X2lkKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV92YWw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAg
IGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fZ2xvYmFsRGF0YVt0MV0sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQodDIsIENlbGxUYWcsIHQwLCAub3BHZXRCeVZhbFNsb3cpCisgICAgbG9hZHAgSlNHbG9iYWxE
YXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MywgSW50MzJUYWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAgYnBuZXEgW3Qw
XSwgdDIsIC5vcEdldEJ5VmFsU2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MF0s
IHQzCisgICAgYmlhZXEgdDEsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9wR2V0QnlW
YWxTbG93CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3Zl
Y3RvciArIFRhZ09mZnNldFt0MywgdDEsIDhdLCB0MgorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6
bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisgICAgYmllcSB0MiwgRW1w
dHlWYWx1ZVRhZywgLm9wR2V0QnlWYWxTbG93CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBs
b2FkaSAxNltQQ10sIHQwCisgICAgdmFsdWVQcm9maWxlKHQyLCB0MSwgdDApCisgICAgZGlzcGF0
Y2goNSkKKworLm9wR2V0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9n
ZXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2dldF9hcmd1bWVudF9i
eV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRpIDEyW1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFs
dWVUYWcsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQodDEsIEludDMyVGFnLCB0MiwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cpCisgICAg
YWRkaSAxLCB0MgorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0s
IHQxCisgICAgYmlhZXEgdDIsIHQxLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIG5lZ2kg
dDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBU
YWdPZmZzZXRbY2ZyLCB0MiwgOF0sIHQwCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsg
UGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgdDEKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtj
ZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAg
IGRpc3BhdGNoKDUpCisKKy5vcEdldEFyZ3VtZW50QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisKKwor
X2xsaW50X29wX2dldF9ieV9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
MTJbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFn
LCB0MSwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGJwbmVx
IHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxs
VGFnLCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MAorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1f
Y2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSAyNFtQQ10s
IHQwCisgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAorICAgIHN1YmkgMSwgdDAKKyAgICBiaWFl
cSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFibGVTbG90c1t0M10sIC5v
cEdldEJ5UG5hbWVTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Qy
XSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVp
IHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg3KQorCisub3BHZXRCeVBuYW1lU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ2V0X2J5X3BuYW1lKQorICAgIGRpc3BhdGNoKDcpCisK
KworX2xsaW50X29wX3B1dF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFn
LCB0MSwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBJbnQzMlRhZywgdDIsIC5vcFB1dEJ5VmFsU2xvdykK
KyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xv
YmFsRGF0YVt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZv
W3QwXSwgdDAKKyAgICBicG5lcSBbdDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93CisgICAgYmlhZXEg
dDIsIEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QxXSwgLm9wUHV0QnlWYWxTbG93CisgICAgbG9h
ZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QxXSwgdDAKKyAgICBiaWVxIEFycmF5U3RvcmFnZTo6bV92
ZWN0b3IgKyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wUHV0QnlWYWxF
bXB0eQorLm9wUHV0QnlWYWxTdG9yZVJlc3VsdDoKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQxLCB0MykKKyAgICB3cml0ZUJhcnJpZXIo
dDEsIHQzKQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNl
dFt0MCwgdDIsIDhdCisgICAgc3RvcmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5
bG9hZE9mZnNldFt0MCwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wUHV0QnlWYWxFbXB0
eToKKyAgICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KKyAg
ICBiaWIgdDIsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdLCAub3BQdXRCeVZhbFN0b3JlUmVz
dWx0CisgICAgYWRkaSAxLCB0MiwgdDEKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV9s
ZW5ndGhbdDBdCisgICAgam1wIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQKKworLm9wUHV0QnlWYWxT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfdmFsKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX2RlbF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWxfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX3B1dF9ieV9pbmRleDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9ieV9pbmRleCkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF9wdXRfZ2V0dGVyX3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1dF9nZXR0ZXJfc2V0dGVyKQorICAgIGRpc3Bh
dGNoKDUpCisKKworX2xsaW50X29wX2xvb3A6CisgICAgbm9wCitfbGxpbnRfb3Bfam1wOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkaXNwYXRjaEJyYW5jaCg0W1BDXSkKKworCitfbGxpbnRf
b3Bfam1wX3Njb3BlczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2ptcF9zY29wZXMpCisgICAgZGlzcGF0Y2goMCkKKworCittYWNybyBqdW1wVHJ1
ZU9yRmFsc2UoY29uZGl0aW9uT3AsIHNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEJvb2xlYW5UYWcsIHQwLCAuc2xvdykKKyAg
ICBjb25kaXRpb25PcCh0MCwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0Ogor
ICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKHNsb3cp
CisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl90cnVlOgorICAgIG5v
cAorX2xsaW50X29wX2p0cnVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9y
RmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGlueiB2YWx1ZSwgdGFyZ2V0
IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qdHJ1ZSkKKworCitfbGxpbnRfb3BfbG9vcF9p
Zl9mYWxzZToKKyAgICBub3AKK19sbGludF9vcF9qZmFsc2U6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0
aXogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamZhbHNlKQorCisK
K21hY3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2Fk
aSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywg
LmltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNl
bGxIYW5kbGVyKFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwg
LnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNo
KDhbUENdKQorCisuaW1tZWRpYXRlOgorICAgIG9yaSAxLCB0MQorICAgIGltbWVkaWF0ZUhhbmRs
ZXIodDEsIC50YXJnZXQpCisgICAgZGlzcGF0Y2goMykKK2VuZAorCitfbGxpbnRfb3BfamVxX251
bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8g
KHZhbHVlLCB0YXJnZXQpIGJ0Ym56IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJn
ZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmllcSB2YWx1ZSwgTnVsbFRh
ZywgdGFyZ2V0IGVuZCkKKyAgICAKKworX2xsaW50X29wX2puZXFfbnVsbDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkg
YnRieiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
bWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpbmVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQor
CisKK19sbGludF9vcF9qbmVxX3B0cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJhbmNoCisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZhbGxUaHJvdWdoCisub3BKbmVxUHRyQnJhbmNo
OgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKy5vcEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAg
ICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNv
bXBhcmUsIGhlbHBlcikKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MCwgdDEpCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZTJSZWcodDMsIHQyLCB0MykKKyAgICBiaW5lcSB0MCwgSW50MzJUYWcsIC5vcDFO
b3RJbnQKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29t
cGFyZSh0MSwgdDMsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6
CisgICAgYmlhIHQwLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5v
cDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgY2ky
ZCB0MywgZnQxCisgICAgam1wIC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToK
KyAgICBmaWkyZCB0MywgdDIsIGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGZpaTJkIHQxLCB0
MCwgZnQwCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlz
cGF0Y2goNCkKKworLm9wMk5vdEludDoKKyAgICBjaTJkIHQxLCBmdDAKKyAgICBiaWEgdDIsIExv
d2VzdFRhZywgLnNsb3cKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQorICAgIGRvdWJsZUNvbXBhcmUo
ZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5qdW1wVGFyZ2V0Ogor
ICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxw
ZXIpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzOgorICAg
IG5vcAorX2xsaW50X29wX2psZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJl
KAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwg
dGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHQgbGVm
dCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3MpCisKKwor
X2xsaW50X29wX2pubGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxl
ZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzcykKKwor
CitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVy
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXIpCisKKworX2xsaW50X29wX2puZ3JlYXRl
cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxl
ZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRlcXVuIGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcikKKworCitfbGxpbnRfb3Bf
bG9vcF9pZl9sZXNzZXE6CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3NlcToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJn
ZXQpIGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJkbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
X2xsaW50X2hlbHBlcl9qbGVzc2VxKQorCisKK19sbGludF9vcF9qbmxlc3NlcToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0
YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiZGd0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAg
IF9sbGludF9oZWxwZXJfam5sZXNzZXEpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcmVx
OgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEg
bGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFy
Z2V0KSBiZGd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfamdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3Bfam5ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmRsdHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX2puZ3JlYXRlcmVxKQorCisKK19sbGludF9vcF9sb29wX2hpbnQ6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBkaXNwYXRj
aCgxKQorCisKK19sbGludF9vcF9zd2l0Y2hfaW1tOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAg
IGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2lt
cGxlSnVtcFRhYmxlLCB0MyAgICMgRklYTUU6IHdvdWxkIGJlIG5pY2UgdG8gcGVlcGhvbGUgdGhp
cyEKKyAgICBsb2FkcCBDb2RlQmxvY2s6OlJhcmVEYXRhOjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBU
YWJsZXMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisgICAg
YmluZXEgdDEsIEludDMyVGFnLCAub3BTd2l0Y2hJbW1Ob3RJbnQKKyAgICBzdWJpIFNpbXBsZUp1
bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFu
Y2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdo
CisgICAgbG9hZHAgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3QyXSwgdDMKKyAgICBsb2FkaSBbdDMsIHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAu
b3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkK
KworLm9wU3dpdGNoSW1tTm90SW50OgorICAgIGJpYiB0MSwgTG93ZXN0VGFnLCAub3BTd2l0Y2hJ
bW1TbG93ICAjIEdvIHRvIHNsb3cgcGF0aCBpZiBpdCdzIGEgZG91YmxlLgorLm9wU3dpdGNoSW1t
RmFsbFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5vcFN3aXRjaEltbVNs
b3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9pbW0pCisgICAgZGlzcGF0
Y2goMCkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBT
aW1wbGVKdW1wVGFibGUsIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9jaGFy
YWN0ZXJTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBh
ZGRwIHQzLCB0MgorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91
Z2gKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYm5lcSBTdHJ1
Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9w
U3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0
MAorICAgIGJpbmVxIFN0cmluZ0ltcGw6Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZh
bGxUaHJvdWdoCisgICAgbG9hZHAgU3RyaW5nSW1wbDo6bV9kYXRhOFt0MF0sIHQxCisgICAgYnRp
bnogU3RyaW5nSW1wbDo6bV9oYXNoQW5kRmxhZ3NbdDBdLCBIYXNoRmxhZ3M4Qml0QnVmZmVyLCAu
b3BTd2l0Y2hDaGFyOEJpdAorICAgIGxvYWRoIFt0MV0sIHQwCisgICAgam1wIC5vcFN3aXRjaENo
YXJSZWFkeQorLm9wU3dpdGNoQ2hhcjhCaXQ6CisgICAgbG9hZGIgW3QxXSwgdDAKKy5vcFN3aXRj
aENoYXJSZWFkeToKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBi
aWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNl
dFt0Ml0sIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJs
ZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgbG9hZGkg
W3QyLCB0MCwgNF0sIHQxCisgICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAg
ICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCisKKy5vcFN3aXRjaENoYXJGYWxsVGhyb3Vn
aDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX3N0cmlu
ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3
aXRjaF9zdHJpbmcpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0aXogMTJbUENdLCAub3BOZXdGdW5jVW5jaGVja2Vk
CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBF
bXB0eVZhbHVlVGFnLCAub3BOZXdGdW5jRG9uZQorLm9wTmV3RnVuY1VuY2hlY2tlZDoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV3X2Z1bmMpCisub3BOZXdGdW5jRG9uZToKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuY19leHApCisgICAgZGlz
cGF0Y2goMykKKworCittYWNybyBkb0NhbGwoaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVl
W3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywg
dDMsIC5vcENhbGxTbG93KQorICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBsb2Fk
aSAxMltQQ10sIHQzCisgICAgYWRkcCAyNCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgYWRk
cCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9hZHAg
SlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxlZSAr
IFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9m
ZnNldFt0M10KKyAgICBsb2FkaSA4IC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1l
bnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNd
CisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBz
dG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFn
LCBTY29wZUNoYWluICsgVGFnT2Zmc2V0W3QzXQorICAgIG1vdmUgdDMsIGNmcgorICAgIGNhbGwg
TExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQorICAgIGRpc3BhdGNoQWZ0
ZXJDYWxsKCkKKworLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhlbHBlcikK
K2VuZAorCitfbGxpbnRfb3BfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxs
KF9sbGludF9oZWxwZXJfY2FsbCkKKworCitfbGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3QpCisKKworX2xs
aW50X29wX2NhbGxfdmFyYXJnczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1BhdGhG
b3JDYWxsKDYsIF9sbGludF9oZWxwZXJfY2FsbF92YXJhcmdzKQorCisKK19sbGludF9vcF9jYWxs
X2V2YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIAorICAgICMgRXZhbCBpcyBleGVjdXRl
ZCBpbiBvbmUgb2YgdHdvIG1vZGVzOgorICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdy
ZSByZWFsbHkgaW52b2tpbmcgZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBleGVj
dXRpb24gaXMgcGVyZm9tZWQgZW50aXJlbHkgaW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBpdAorICAg
ICMgICAgcmV0dXJucyB0aGUgUEMgb2YgYSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0aGUg
cmV0dXJuIHZhbHVlCisgICAgIyAgICB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgICMKKyAg
ICAjIDIpIFdlIGZpbmQgdGhhdCB3ZSdyZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwo
KSB0aGF0IGlzIG5vdAorICAgICMgICAgdGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVscGVyIHJl
dHVybnMgdGhlIFBDIG9mIHRoZSB0aGluZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNhbGwg
aXQuCisgICAgIworICAgICMgVGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywgd2hp
Y2ggd291bGQgcmVxdWlyZSBhIHRvdGFsIG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBvZiBz
dGF0ZSB0aGF0IGNhbm5vdCBiZSBlYXNpbHkgcGFja2VkIGludG8gdHdvCisgICAgIyByZWdpc3Rl
cnMgKEMgZnVuY3Rpb25zIGNhbiByZXR1cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5KToK
KyAgICAjCisgICAgIyAtIFRoZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBtYXkg
bm90IGhhdmUgYmVlbiBtb2RpZmllZAorICAgICMgICBieSB0aGUgaGVscGVyLCBidXQgdGhlIGNv
bnZlbnRpb24gaXMgdGhhdCBpdCByZXR1cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0b3RhbGx5
IGNsZWFyIGlmIHRoYXQncyBuZWNlc3NhcnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUu
CisgICAgIyAgIEJ1dCB0aGF0J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRlciBz
byB3ZSBzdGljayB3aXRoIGl0LgorICAgICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBo
ZWxwZXIgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAjICAgdGhl
IHJldHVybiB2YWx1ZSwgb3IgZGlkIG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBm
b3IgdXMKKyAgICAjICAgdG8gY2FsbC4KKyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAgICAjICAg
LSBUaGUgSlMgcmV0dXJuIHZhbHVlICh0d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisgICAgIyAg
IC0gVGhlIFBDIHRvIGNhbGwuCisgICAgIworICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2ll
ciB0byBqdXN0IGFsd2F5cyBoYXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBhIFBD
IHRvIGNhbGwsIGFuZCB0aGF0IFBDIG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAorICAg
ICMgcmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAKKyAg
ICBzbG93UGF0aEZvckNhbGwoNCwgX2xsaW50X2hlbHBlcl9jYWxsX2V2YWwpCisKKworX2xsaW50
X2dlbmVyaWNfcmV0dXJuX3BvaW50OgorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitfbGxp
bnRfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQKKyAg
ICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFj
dGl2YXRpb25Ob3RDcmVhdGVkCisub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6CisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCisub3BUZWFyT2ZmQWN0
aXZhdGlvbk5vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdGVhcl9v
ZmZfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBzdWJpIDEsIHQwICAgIyBHZXQgdGhlIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcgor
ICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2Zm
QXJndW1lbnRzTm90Q3JlYXRlZAorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29m
Zl9hcmd1bWVudHMpCisub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRj
aCgyKQorCisKK21hY3JvIGRvUmV0dXJuKCkKKyAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0Mgor
ICAgIGxvYWRwIENhbGxlckZyYW1lW2Nmcl0sIGNmcgorICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNz
QmVmb3JlUmV0dXJuKHQyKQorICAgIHJldAorZW5kCisKK19sbGludF9vcF9yZXQ6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9h
ZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAg
IGRvUmV0dXJuKCkKKworCitfbGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIGxvYWRpIDRb
UENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MworICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAg
dmFsdWVQcm9maWxlKHQxLCB0MCwgdDMpCisgICAgdHJhY2VFeGVjdXRpb24oKSAjIE5lZWRzIHRv
IGJlIGhlcmUgYmVjYXVzZSBpdCB3b3VsZCBjbG9iYmVyIHQxLCB0MAorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX3JldF9vYmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEsIENl
bGxUYWcsIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5m
bzo6bV90eXBlW3QyXSwgT2JqZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0Cisg
ICAgZG9SZXR1cm4oKQorCisub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3Q6CisgICAgbG9hZGkg
OFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRv
UmV0dXJuKCkKKworCitfbGxpbnRfb3BfbWV0aG9kX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICAjIFdlIGlnbm9yZSBtZXRob2QgY2hlY2tzIGFuZCB1c2Ugbm9ybWFsIGdldF9ieV9p
ZCBvcHRpbWl6YXRpb25zLgorICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N0cmNhdDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N0cmNh
dCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF90b19wcmltaXRpdmU6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0Mwor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2Vs
bFRhZywgLm9wVG9QcmltaXRpdmVJc0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDBdLCB0MgorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5
cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisub3BUb1ByaW1pdGl2
ZUlzSW1tOgorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9Q
cmltaXRpdmVTbG93Q2FzZToKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fcHJpbWl0
aXZlKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9wbmFtZXM6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfcG5hbWVzKQor
ICAgIGRpc3BhdGNoKDApICMgVGhlIGhlbHBlciBlaXRoZXIgYWR2YW5jZXMgdGhlIFBDIG9yIGp1
bXBzIHVzIHRvIHNvbWV3aGVyZSBlbHNlLgorCisKK19sbGludF9vcF9uZXh0X3BuYW1lOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZGkgMTZbUENd
LCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQwCisgICAgYmllcSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XSwgLm9wTmV4dFBuYW1lRW5kCisgICAgbG9hZGkg
MjBbUENdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAg
bG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9qc1N0cmluZ3NbdDJdLCB0MworICAgIGxv
YWRpIFt0MywgdDAsIDhdLCB0MworICAgIGFkZGkgMSwgdDAKKyAgICBzdG9yZWkgdDAsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2Vs
bFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQzLCA4XSwgdDMKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEK
KyAgICBicG5lcSB0MSwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVb
dDJdLCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6
bV9jYWNoZWRQcm90b3R5cGVDaGFpblt0Ml0sIHQwCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46
Om1fdmVjdG9yW3QwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5vcE5leHRQbmFtZVRhcmdldAorLm9w
TmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wOgorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3Rv
dHlwZSArIFRhZ09mZnNldFt0MV0sIE51bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2Fk
cCBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQxCisgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5l
eHRQbmFtZVNsb3cKKyAgICBhZGRwIDQsIHQwCisgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1l
Q2hlY2tQcm90b3R5cGVMb29wCisub3BOZXh0UG5hbWVUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFu
Y2goMjRbUENdKQorCisub3BOZXh0UG5hbWVFbmQ6CisgICAgZGlzcGF0Y2goNykKKworLm9wTmV4
dFBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV4dF9wbmFtZSkgIyBU
aGlzIGVpdGhlciBrZWVwcyB0aGUgUEMgd2hlcmUgaXQgd2FzIChjYXVzaW5nIHVzIHRvIGxvb3Ap
IG9yIHNldHMgaXQgdG8gdGFyZ2V0LgorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3B1
c2hfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9wdXNoX3Njb3BlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3BvcF9zY29w
ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Bv
cF9zY29wZSkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9wdXNoX25ld19zY29wZToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hf
bmV3X3Njb3BlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2NhdGNoOgorICAgICMg
VGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAo
YmVjYXVzZSB0aGUKKyAgICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNl
dCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3Mg
dGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRo
ZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRo
ZSB0aHJvd2luZworICAgICMgY29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93
aW5nIHRvIHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6
OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2Fk
cCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERh
dGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9i
YWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0ds
b2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpT
R2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1w
dHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAgICAg
IAorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdHJhY2VF
eGVjdXRpb24oKSAgIyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50
IHRvIGNsb2JiZXIgdDAsIHQxLCB0MiwgdDMgYWJvdmUuCisgICAgZGlzcGF0Y2goMikKKworCitf
bGxpbnRfb3BfdGhyb3c6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl90aHJvdykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvd19y
ZWZlcmVuY2VfZXJyb3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpCisgICAgZGlzcGF0Y2goMikKKworCitf
bGxpbnRfb3BfanNyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBhZGRpIDMgKiA0LCBQQywgdDEKKyAgICBzdG9yZWkgdDEsIFtjZnIsIHQwLCA4XQorICAg
IGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisKK19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkcCBbY2ZyLCB0MCwgOF0sIFBD
CisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfZGVidWc6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9kZWJ1ZykKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9wcm9maWxlX3dpbGxfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwg
dDAKKyAgICBidHB6IFt0MF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENhbGxEb25l
OgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxl
clJlZmVyZW5jZVtzcF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BQcm9maWxlV2lsbENhbGxEb25l
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9m
aWxlRGlkQ2FsbERvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAg
IGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKwor
CitfbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dp
bmcgZnJvbSB0aGUgaW50ZXJwcmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMp
LCBzbworICAgICMgdGhlIHRocm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0
ZWQgY29kZSwgd2UgY29tZSB0byBoZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRl
cyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6
Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JU
aHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhy
b3dbdDFdCisKKworX2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJl
c2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6
Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9y
VGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRo
cm93W3QxXQorCisKKyMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRo
b3VnaCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgorIyBUaGVzZSBvcGNvZGVzIHNob3Vs
ZCBuZXZlciBhcmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAor
IyBhcyBtdWNoLgorCittYWNybyBub3RTdXBwb3J0ZWQoKQorICAgIGlmIEFTU0VSVF9FTkFCTEVE
CisgICAgICAgIGNyYXNoKCkKKyAgICBlbHNlCisgICAgICAgICMgV2Ugc2hvdWxkIHVzZSB3aGF0
ZXZlciB0aGUgc21hbGxlc3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24gaXMsIGp1c3QgdG8KKyAgICAg
ICAgIyBlbnN1cmUgdGhhdCB0aGVyZSBpcyBhIGdhcCBiZXR3ZWVuIGluc3RydWN0aW9uIGxhYmVs
cy4gSWYgbXVsdGlwbGUKKyAgICAgICAgIyBzbWFsbGVzdCBpbnN0cnVjdGlvbnMgZXhpc3QsIHdl
IHNob3VsZCBwaWNrIHRoZSBvbmUgdGhhdCBpcyBtb3N0CisgICAgICAgICMgbGlrZWx5IHJlc3Vs
dCBpbiBleGVjdXRpb24gYmVpbmcgaGFsdGVkLiBDdXJyZW50bHkgdGhhdCBpcyB0aGUgYnJlYWsK
KyAgICAgICAgIyBpbnN0cnVjdGlvbiBvbiBhbGwgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBpbnRlcmVz
dGVkIGluLiAoQnJlYWsgaXMgaW50MworICAgICAgICAjIG9uIEludGVsLCB3aGljaCBpcyAxIGJ5
dGUsIGFuZCBia3B0IG9uIEFSTXY3LCB3aGljaCBpcyAyIGJ5dGVzLikKKyAgICAgICAgYnJlYWsK
KyAgICBlbmQKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBub3RTdXBw
b3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgp
CisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgp
CisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgp
CisKK19sbGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkK
KworX2xsaW50X29wX2dldF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19s
bGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19s
bGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19s
bGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xs
aW50X29wX2dldF9ieV9pZF9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9zdHJp
bmdfbGVuZ3RoOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfZ2Vu
ZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3JlcGxhY2U6
CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uOgor
ICAgIG5vdFN1cHBvcnRlZCgpCisKKworIyBJbmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50LgorX2xs
aW50X2VuZDoKKyAgICBjcmFzaCgpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJw
cmV0ZXIuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFz
bUNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KKworLy8gVGhpcyBpcyBhIGZp
bGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20sIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUgYXNz
ZW1ibHkgY29kZQorLy8gZm9yIHRoZSBpbnRlcnByZXRlciwgYXMgY29tcGlsZWQgZnJvbSBMb3dM
ZXZlbEludGVycHJldGVyLmFzbS4KKyNpbmNsdWRlICJMTEludEFzc2VtYmx5LmgiCisKKyNlbmRp
ZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisjZGVmaW5lIExvd0xldmVsSW50ZXJwcmV0
ZXJfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisK
KyNpbmNsdWRlICJPcGNvZGUuaCIKKworI2RlZmluZSBMTElOVF9JTlNUUlVDVElPTl9ERUNMKG9w
Y29kZSwgbGVuZ3RoKSBleHRlcm4gIkMiIHZvaWQgbGxpbnRfIyNvcGNvZGUoKTsKKyAgICBGT1Jf
RUFDSF9PUENPREVfSUQoTExJTlRfSU5TVFJVQ1RJT05fREVDTCk7CisjdW5kZWYgTExJTlRfSU5T
VFJVQ1RJT05fREVDTAorCitleHRlcm4gIkMiIHZvaWQgbGxpbnRfYmVnaW4oKTsKK2V4dGVybiAi
QyIgdm9pZCBsbGludF9lbmQoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9wcm9ncmFtX3Byb2xv
Z3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZXZhbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJD
IiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZv
aWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2
b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZv
aWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJD
IiB2b2lkIGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KCk7CitleHRlcm4gIkMiIHZvaWQgbGxp
bnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50
X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUoKTsKKworI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKKworI2VuZGlmIC8vIExvd0xldmVsSW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
MDMyIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJh
c3QiCityZXF1aXJlICJvcHQiCisKK2NsYXNzIE5vZGUKKyAgICBkZWYgYXJtVjdTaW5nbGUKKyAg
ICAgICAgZG91YmxlT3BlcmFuZCA9IGFybVY3T3BlcmFuZAorICAgICAgICByYWlzZSAiQm9ndXMg
cmVnaXN0ZXIgbmFtZSAje2RvdWJsZU9wZXJhbmR9IiB1bmxlc3MgZG91YmxlT3BlcmFuZCA9fiAv
XmQvCisgICAgICAgICJzIiArICgkfi5wb3N0X21hdGNoLnRvX2kgKiAyKS50b19zCisgICAgZW5k
CitlbmQKKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVyIDwgTm9DaGlsZHJlbgorICAgIGRlZiBpbml0
aWFsaXplKG5hbWUpCisgICAgICAgIEBuYW1lID0gbmFtZQorICAgIGVuZAorICAgIAorICAgIGRl
ZiBhcm1WN09wZXJhbmQKKyAgICAgICAgQG5hbWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRk
cmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAg
ICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAgZmFs
c2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/CisgICAgICAgIHRydWUKKyAgICBl
bmQKK2VuZAorCitBUk12N19FWFRSQV9HUFJTID0gW1NwZWNpYWxSZWdpc3Rlci5uZXcoInI5Iiks
IFNwZWNpYWxSZWdpc3Rlci5uZXcoInI4IiksIFNwZWNpYWxSZWdpc3Rlci5uZXcoInIzIildCitB
Uk12N19FWFRSQV9GUFJTID0gW1NwZWNpYWxSZWdpc3Rlci5uZXcoImQ3IildCitBUk12N19TQ1JB
VENIX0ZQUiA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoImQ4IikKKworZGVmIGFybVY3TW92ZUltbWVk
aWF0ZSh2YWx1ZSwgcmVnaXN0ZXIpCisgICAgIyBDdXJyZW50bHkgd2Ugb25seSBoYW5kbGUgdGhl
IHNpbXBsZSBjYXNlcywgYW5kIGZhbGwgYmFjayB0byBtb3YvbW92dCBmb3IgdGhlIGNvbXBsZXgg
b25lcy4KKyAgICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2CisgICAgICAgICRhc20ucHV0
cyAibW92dyAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0sIFwjI3t2YWx1ZX0iCisgICAgZWxzaWYg
KH52YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgorICAgICAgICAkYXNtLnB1dHMgIm12biAj
e3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0sIFwjI3t+dmFsdWV9IgorICAgIGVsc2UKKyAgICAgICAg
JGFzbS5wdXRzICJtb3Z3ICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje3ZhbHVlICYgMHhm
ZmZmfSIKKyAgICAgICAgaWYgKHZhbHVlICYgMHhmZmZmMDAwMCkgIT0gMAorICAgICAgICAgICAg
JGFzbS5wdXRzICJtb3Z0ICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje3ZhbHVlID4+IDE2
fSIKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRAorICAgIGRl
ZiBhcm1WN09wZXJhbmQKKyAgICAgICAgY2FzZSBuYW1lCisgICAgICAgIHdoZW4gInQwIiwgImEw
IiwgInIwIgorICAgICAgICAgICAgInIwIgorICAgICAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIK
KyAgICAgICAgICAgICJyMSIKKyAgICAgICAgd2hlbiAidDIiLCAiYTIiCisgICAgICAgICAgICAi
cjIiCisgICAgICAgIHdoZW4gImEzIgorICAgICAgICAgICAgInIzIgorICAgICAgICB3aGVuICJ0
MyIKKyAgICAgICAgICAgICJyNCIKKyAgICAgICAgd2hlbiAidDQiCisgICAgICAgICAgICAicjci
CisgICAgICAgIHdoZW4gImNmciIKKyAgICAgICAgICAgICJyNSIKKyAgICAgICAgd2hlbiAibHIi
CisgICAgICAgICAgICAibHIiCisgICAgICAgIHdoZW4gInNwIgorICAgICAgICAgICAgInNwIgor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9y
IEFSTXY3IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAgIGVuZAorICAgIGVuZAorZW5k
CisKK2NsYXNzIEZQUmVnaXN0ZXJJRAorICAgIGRlZiBhcm1WN09wZXJhbmQKKyAgICAgICAgY2Fz
ZSBuYW1lCisgICAgICAgIHdoZW4gImZ0MCIsICJmciIKKyAgICAgICAgICAgICJkMCIKKyAgICAg
ICAgd2hlbiAiZnQxIgorICAgICAgICAgICAgImQxIgorICAgICAgICB3aGVuICJmdDIiCisgICAg
ICAgICAgICAiZDIiCisgICAgICAgIHdoZW4gImZ0MyIKKyAgICAgICAgICAgICJkMyIKKyAgICAg
ICAgd2hlbiAiZnQ0IgorICAgICAgICAgICAgImQ0IgorICAgICAgICB3aGVuICJmdDUiCisgICAg
ICAgICAgICAiZDUiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJCYWQgcmVnaXN0
ZXIgI3tuYW1lfSBmb3IgQVJNdjcgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5k
CisgICAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgICAgZGVmIGFybVY3T3BlcmFuZAor
ICAgICAgICByYWlzZSAiSW52YWxpZCBpbW1lZGlhdGUgI3t2YWx1ZX0gYXQgI3tjb2RlT3JpZ2lu
U3RyaW5nfSIgaWYgdmFsdWUgPCAwIG9yIHZhbHVlID4gMjU1CisgICAgICAgICJcIyN7dmFsdWV9
IgorICAgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgICBkZWYgYXJtVjdPcGVyYW5kCisg
ICAgICAgIHJhaXNlICJCYWQgb2Zmc2V0IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIGlmIG9mZnNl
dC52YWx1ZSA8IC0weGZmIG9yIG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICAgICJbI3tiYXNl
LmFybVY3T3BlcmFuZH0sIFwjI3tvZmZzZXQudmFsdWV9XSIKKyAgICBlbmQKK2VuZAorCitjbGFz
cyBCYXNlSW5kZXgKKyAgICBkZWYgYXJtVjdPcGVyYW5kCisgICAgICAgIHJhaXNlICJCYWQgb2Zm
c2V0IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICAg
ICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tz
Y2FsZVNoaWZ0fV0iCisgICAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgICAg
ZGVmIGFybVY3T3BlcmFuZAorICAgICAgICByYWlzZSAiVW5jb252ZXJ0ZWQgYWJzb2x1dGUgYWRk
cmVzcyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorZW5kCisKKyMKKyMgTG93ZXJp
bmcgb2YgYnJhbmNoIG9wcy4gRm9yIGV4YW1wbGU6CisjCisjIGJhZGRpeiBmb28sIGJhciwgYmF6
CisjCisjIHdpbGwgYmVjb21lOgorIworIyBhZGRpIGZvbywgYmFyCisjIGJ6IGJhegorIworCitk
ZWYgYXJtVjdMb3dlckJyYW5jaE9wcyhsaXN0KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3Qu
ZWFjaCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rp
b24KKyAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgICAgICAgIHdoZW4gL15iKGFk
ZGl8c3ViaXxvcml8YWRkcCkvCisgICAgICAgICAgICAgICAgb3AgPSAkMQorICAgICAgICAgICAg
ICAgIGJyYW5jaCA9ICJiIiArICR+LnBvc3RfbWF0Y2gKKyAgICAgICAgICAgICAgICAKKyAgICAg
ICAgICAgICAgICBjYXNlIG9wCisgICAgICAgICAgICAgICAgd2hlbiAiYWRkaSIsICJhZGRwIgor
ICAgICAgICAgICAgICAgICAgICBvcCA9ICJhZGRpcyIKKyAgICAgICAgICAgICAgICB3aGVuICJz
dWJpIgorICAgICAgICAgICAgICAgICAgICBvcCA9ICJzdWJpcyIKKyAgICAgICAgICAgICAgICB3
aGVuICJvcmkiCisgICAgICAgICAgICAgICAgICAgIG9wID0gIm9yaXMiCisgICAgICAgICAgICAg
ICAgZW5kCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBvcCwgbm9kZS5vcGVyYW5kc1swLi4tMl0pCisg
ICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2lu
LCBicmFuY2gsIFtub2RlLm9wZXJhbmRzWy0xXV0pCisgICAgICAgICAgICB3aGVuICJibXVsaW8i
CisgICAgICAgICAgICAgICAgdG1wMSA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQor
ICAgICAgICAgICAgICAgIHRtcDIgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAg
ICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4s
ICJzbXVsbGkiLCBbbm9kZS5vcGVyYW5kc1swXSwgbm9kZS5vcGVyYW5kc1sxXSwgbm9kZS5vcGVy
YW5kc1sxXSwgdG1wMV0pCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcobm9kZS5jb2RlT3JpZ2luLCAicnNoaWZ0aSIsIFtub2RlLm9wZXJhbmRzWy0yXSwgSW1tZWRp
YXRlLm5ldyhub2RlLmNvZGVPcmlnaW4sIDMxKSwgdG1wMl0pCisgICAgICAgICAgICAgICAgbmV3
TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAiYmluZXEiLCBbdG1wMSwg
dG1wMiwgbm9kZS5vcGVyYW5kc1stMV1dKQorICAgICAgICAgICAgd2hlbiAvXmJtdWxpLworICAg
ICAgICAgICAgICAgIGNvbmRpdGlvbiA9ICR+LnBvc3RfbWF0Y2gKKyAgICAgICAgICAgICAgICBu
ZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtdWxpIiwgbm9kZS5v
cGVyYW5kc1swLi4tMl0pCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcobm9kZS5jb2RlT3JpZ2luLCAiYnRpIiArIGNvbmRpdGlvbiwgW25vZGUub3BlcmFuZHNbLTJd
LCBub2RlLm9wZXJhbmRzWy0xXV0pCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
bmV3TGlzdCA8PCBub2RlCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgIGVuZAorICAgIH0KKyAgICBuZXdMaXN0CitlbmQK
KworIworIyBMb3dlcmluZyBvZiBzaGlmdCBvcHMuIEZvciBleGFtcGxlOgorIworIyBsc2hpZnRp
IGZvbywgYmFyCisjCisjIHdpbGwgYmVjb21lOgorIworIyBhbmRpIGZvbywgMzEsIHRtcAorIyBs
c2hpZnRpIHRtcCwgYmFyCisjCisKK2RlZiBhcm1WN1Nhbml0aXplU2hpZnQob3BlcmFuZCwgbGlz
dCkKKyAgICByZXR1cm4gb3BlcmFuZCBpZiBvcGVyYW5kLmltbWVkaWF0ZT8KKyAgICAKKyAgICB0
bXAgPSBUbXAubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgOmdwcikKKyAgICBsaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJhbmRpIiwgW29wZXJhbmQsIEltbWVkaWF0
ZS5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAzMSksIHRtcF0pCisgICAgdG1wCitlbmQKKworZGVm
IGFybVY3TG93ZXJTaGlmdE9wcyhsaXN0KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3QuZWFj
aCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24K
KyAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgICAgICAgIHdoZW4gImxzaGlmdGki
LCAicnNoaWZ0aSIsICJ1cnNoaWZ0aSIKKyAgICAgICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRz
LnNpemUgPT0gMgorICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbYXJtVjdTYW5pdGl6ZVNoaWZ0KG5vZGUu
b3BlcmFuZHNbMF0sIG5ld0xpc3QpLCBub2RlLm9wZXJhbmRzWzFdXSkKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5v
ZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFtub2RlLm9wZXJhbmRzWzBdLCBhcm1WN1Nhbml0
aXplU2hpZnQobm9kZS5vcGVyYW5kc1sxXSwgbmV3TGlzdCksIG5vZGUub3BlcmFuZHNbMl1dKQor
ICAgICAgICAgICAgICAgICAgICByYWlzZSAiV3JvbmcgbnVtYmVyIG9mIG9wZXJhbmRzIGZvciBz
aGlmdCBhdCAje25vZGUuY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBub2RlLm9wZXJhbmRzLnNp
emUgPT0gMworICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlz
dAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWFsZm9ybWVkIGFkZHJlc3Nlcy4gRm9yIGV4YW1w
bGU6CisjCisjIGxvYWRwIDEwMDAwW2Zvb10sIGJhcgorIworIyB3aWxsIGJlY29tZToKKyMKKyMg
bW92ZSAxMDAwMCwgdG1wCisjIGFkZHAgZm9vLCB0bXAKKyMgbG9hZHAgMFt0bXBdLCBiYXIKKyMK
KworY2xhc3MgTm9kZQorICAgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJz
ZShsaXN0KQorICAgICAgICBtYXBDaGlsZHJlbiB7CisgICAgICAgICAgICB8IG5vZGUgfAorICAg
ICAgICAgICAgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQor
ICAgICAgICB9CisgICAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICAgIGRlZiBhcm1WN0xv
d2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgICAgICBpZiBvZmZzZXQudmFs
dWUgPCAtMHhmZiBvciBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgICAgICAgdG1wID0gVG1w
Lm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbb2Zmc2V0LCB0bXBdKQorICAgICAgICAgICAgbGlzdCA8
PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgImFkZHAiLCBbYmFzZSwgdG1wXSkKKyAgICAg
ICAgICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldyhjb2RlT3Jp
Z2luLCAwKSkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VsZgorICAgICAgICBlbmQKKyAg
ICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1l
ZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICAgICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAg
ICAgICAgICAgIHRtcCA9IFRtcC5uZXcoY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIGxp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW29mZnNldCwgdG1wXSkK
KyAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJhZGRwIiwg
W2Jhc2UsIHRtcF0pCisgICAgICAgICAgICBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIHRtcCwg
aW5kZXgsIHNjYWxlLCBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIDApKQorICAgICAgICBlbHNl
CisgICAgICAgICAgICBzZWxmCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIEFi
c29sdXRlQWRkcmVzcworICAgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJz
ZShsaXN0KQorICAgICAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICAg
IGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW2FkZHJlc3MsIHRt
cF0pCisgICAgICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldyhj
b2RlT3JpZ2luLCAwKSkKKyAgICBlbmQKK2VuZAorCitkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFk
ZHJlc3NlcyhsaXN0KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3QuZWFjaCB7CisgICAgICAg
IHwgbm9kZSB8CisgICAgICAgIG5ld0xpc3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkQWRk
cmVzc2VzUmVjdXJzZShuZXdMaXN0KQorICAgIH0KKyAgICBuZXdMaXN0CitlbmQKKworIworIyBM
b3dlcmluZyBvZiBtYWxmb3JtZWQgYWRkcmVzc2VzIGluIGRvdWJsZSBsb2FkcyBhbmQgc3RvcmVz
LiBGb3IgZXhhbXBsZToKKyMKKyMgbG9hZGQgW2ZvbywgYmFyLCA4XSwgYmF6CisjCisjIGJlY29t
ZXM6CisjCisjIGxlYXAgW2ZvbywgYmFyLCA4XSwgdG1wCisjIGxvYWRkIFt0bXBdLCBiYXoKKyMK
KworY2xhc3MgTm9kZQorICAgIGRlZiBhcm1WN0RvdWJsZUFkZHJlc3MobGlzdCkKKyAgICAgICAg
c2VsZgorICAgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICAgIGRlZiBhcm1WN0RvdWJs
ZUFkZHJlc3MobGlzdCkKKyAgICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQor
ICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibGVhcCIsIFtzZWxm
LCB0bXBdKQorICAgICAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCB0bXAsIEltbWVkaWF0ZS5u
ZXcoY29kZU9yaWdpbiwgMCkpCisgICAgZW5kCitlbmQKKworZGVmIGFybVY3TG93ZXJNYWxmb3Jt
ZWRBZGRyZXNzZXNEb3VibGUobGlzdCkKKyAgICBuZXdMaXN0ID0gW10KKyAgICBsaXN0LmVhY2gg
eworICAgICAgICB8IG5vZGUgfAorICAgICAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisg
ICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICAgICAgICB3aGVuICJsb2FkZCIKKyAg
ICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4s
ICJsb2FkZCIsIFtub2RlLm9wZXJhbmRzWzBdLmFybVY3RG91YmxlQWRkcmVzcyhuZXdMaXN0KSwg
bm9kZS5vcGVyYW5kc1sxXV0pCisgICAgICAgICAgICB3aGVuICJzdG9yZWQiCisgICAgICAgICAg
ICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAic3RvcmVk
IiwgW25vZGUub3BlcmFuZHNbMF0sIG5vZGUub3BlcmFuZHNbMV0uYXJtVjdEb3VibGVBZGRyZXNz
KG5ld0xpc3QpXSkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8
IG5vZGUKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0
IDw8IG5vZGUKKyAgICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3QKK2VuZAorCisjCisjIExv
d2VyaW5nIG9mIG1pc3BsYWNlZCBpbW1lZGlhdGVzLiBGb3IgZXhhbXBsZToKKyMKKyMgc3RvcmVp
IDAsIFtmb29dCisjCisjIHdpbGwgYmVjb21lOgorIworIyBtb3ZlIDAsIHRtcAorIyBzdG9yZWkg
dG1wLCBbZm9vXQorIworCitkZWYgYXJtVjdMb3dlck1pc3BsYWNlZEltbWVkaWF0ZXMobGlzdCkK
KyAgICBuZXdMaXN0ID0gW10KKyAgICBsaXN0LmVhY2ggeworICAgICAgICB8IG5vZGUgfAorICAg
ICAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICAgICAgICBjYXNlIG5vZGUub3Bj
b2RlCisgICAgICAgICAgICB3aGVuICJzdG9yZWkiLCAic3RvcmVwIgorICAgICAgICAgICAgICAg
IG9wZXJhbmRzID0gbm9kZS5vcGVyYW5kcworICAgICAgICAgICAgICAgIG5ld09wZXJhbmRzID0g
W10KKyAgICAgICAgICAgICAgICBvcGVyYW5kcy5lYWNoIHsKKyAgICAgICAgICAgICAgICAgICAg
fCBvcGVyYW5kIHwKKyAgICAgICAgICAgICAgICAgICAgaWYgb3BlcmFuZC5pc19hPyBJbW1lZGlh
dGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcob3BlcmFuZC5jb2RlT3Jp
Z2luLCA6Z3ByKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAibW92ZSIsIFtvcGVyYW5kLCB0bXBdKQorICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3T3BlcmFuZHMgPDwgdG1wCisgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld09wZXJhbmRzIDw8IG9wZXJhbmQKKyAg
ICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUs
IG5ld09wZXJhbmRzKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld0xpc3Qg
PDwgbm9kZQorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xp
c3QgPDwgbm9kZQorICAgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdAorZW5kCisKKyMKKyMg
TG93ZXJpbmcgb2YgbWFsZm9ybWVkIGltbWVkaWF0ZXMgZXhjZXB0IHdoZW4gdXNlZCBpbiBhICJt
b3ZlIiBpbnN0cnVjdGlvbi4KKyMgRm9yIGV4YW1wbGU6CisjCisjIGFkZHAgNjQyNjQxLCBmb28K
KyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUgNjQyNjQxLCB0bXAKKyMgYWRkcCB0bXAsIGZv
bworIworCitjbGFzcyBOb2RlCisgICAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVz
UmVjdXJzZShsaXN0KQorICAgICAgICBtYXBDaGlsZHJlbiB7CisgICAgICAgICAgICB8IG5vZGUg
fAorICAgICAgICAgICAgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2Uo
bGlzdCkKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgICBkZWYg
YXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgICAgIHNlbGYK
KyAgICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZv
cm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAor
CitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVk
aWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJ
bW1lZGlhdGUKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxp
c3QpCisgICAgICAgIGlmIHZhbHVlIDwgMCBvciB2YWx1ZSA+IDI1NQorICAgICAgICAgICAgdG1w
ID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgbGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbc2VsZiwgdG1wXSkKKyAgICAgICAgICAgIHRt
cAorICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmCisgICAgICAgIGVuZAorICAgIGVuZAor
ZW5kCisKK2RlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlcyhsaXN0KQorICAgIG5ld0xp
c3QgPSBbXQorICAgIGxpc3QuZWFjaCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIGlmIG5v
ZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAg
ICAgICAgIHdoZW4gIm1vdmUiCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAg
ICAgICAgICB3aGVuICJhZGRpIiwgImFkZHAiLCAiYWRkaXMiLCAic3ViaSIsICJzdWJwIiwgInN1
YmlzIgorICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRl
IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGVyYW5kc1swXS52YWx1ZSA8IDAg
YW5kCisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wZXJhbmRzWzBdLnZhbHVlID49IDI1
NSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAyCisg
ICAgICAgICAgICAgICAgICAgIGlmIG5vZGUub3Bjb2RlID1+IC9hZGQvCisgICAgICAgICAgICAg
ICAgICAgICAgICBuZXdPcGNvZGUgPSAic3ViIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KKyAgICAg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3Bjb2RlID0g
ImFkZCIgKyBub2RlLm9wY29kZVstMS4uLTFdCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmln
aW4sIG5ld09wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgW0ltbWVkaWF0ZS5uZXcoLW5vZGUub3BlcmFuZHNbMF0udmFsdWUpXSArIG5vZGUub3Bl
cmFuZHNbMS4uLTFdKQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
bmV3TGlzdCA8PCBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdM
aXN0KQorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgd2hlbiAibXVsaSIKKyAgICAg
ICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAg
ICAgICAgICAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICAg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUi
LCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSkKKyAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8
PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibXVsaSIsIFt0bXBdICsgbm9kZS5v
cGVyYW5kc1sxLi4tMV0pCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBuZXdMaXN0IDw8IG5vZGUuYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5l
d0xpc3QpCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgbmV3TGlzdCA8PCBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJz
ZShuZXdMaXN0KQorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5l
d0xpc3QgPDwgbm9kZQorICAgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdAorZW5kCisKKyMK
KyMgTG93ZXJpbmcgb2YgbWlzcGxhY2VkIGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGU6CisjCisjIGFk
ZGkgZm9vLCBbYmFyXQorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbG9hZGkgW2Jhcl0sIHRtcAor
IyBhZGRpIGZvbywgdG1wCisjIHN0b3JlaSB0bXAsIFtiYXJdCisjCisjIEFub3RoZXIgZXhhbXBs
ZToKKyMKKyMgYWRkaSBbZm9vXSwgYmFyCisjCisjIHdpbGwgYmVjb21lOgorIworIyBsb2FkaSBb
Zm9vXSwgdG1wCisjIGFkZGkgdG1wLCBiYXIKKyMKKworZGVmIGFybVY3QXNSZWdpc3RlcihwcmVM
aXN0LCBwb3N0TGlzdCwgb3BlcmFuZCwgc3VmZml4LCBuZWVkU3RvcmUpCisgICAgcmV0dXJuIG9w
ZXJhbmQgdW5sZXNzIG9wZXJhbmQuYWRkcmVzcz8KKyAgICAKKyAgICB0bXAgPSBUbXAubmV3KG9w
ZXJhbmQuY29kZU9yaWdpbiwgaWYgc3VmZml4ID09ICJkIiB0aGVuIDpmcHIgZWxzZSA6Z3ByIGVu
ZCkKKyAgICBwcmVMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJs
b2FkIiArIHN1ZmZpeCwgW29wZXJhbmQsIHRtcF0pCisgICAgaWYgbmVlZFN0b3JlCisgICAgICAg
IHBvc3RMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJzdG9yZSIg
KyBzdWZmaXgsIFt0bXAsIG9wZXJhbmRdKQorICAgIGVuZAorICAgIHRtcAorZW5kCisKK2RlZiBh
cm1WN0FzUmVnaXN0ZXJzKHByZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kcywgc3VmZml4KQorICAg
IG5ld09wZXJhbmRzID0gW10KKyAgICBvcGVyYW5kcy5lYWNoX3dpdGhfaW5kZXggeworICAgICAg
ICB8IG9wZXJhbmQsIGluZGV4IHwKKyAgICAgICAgbmV3T3BlcmFuZHMgPDwgYXJtVjdBc1JlZ2lz
dGVyKHByZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kLCBzdWZmaXgsIGluZGV4ID09IG9wZXJhbmRz
LnNpemUgLSAxKQorICAgIH0KKyAgICBuZXdPcGVyYW5kcworZW5kCisKK2RlZiBhcm1WN0xvd2Vy
TWlzcGxhY2VkQWRkcmVzc2VzKGxpc3QpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlzdC5lYWNo
IHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgor
ICAgICAgICAgICAgcG9zdEluc3RydWN0aW9ucyA9IFtdCisgICAgICAgICAgICBjYXNlIG5vZGUu
b3Bjb2RlCisgICAgICAgICAgICB3aGVuICJhZGRpIiwgImFkZHAiLCAiYWRkaXMiLCAiYW5kaSIs
ICJhbmRwIiwgImxzaGlmdGkiLCAibXVsaSIsICJuZWdpIiwgIm5vdGkiLCAib3JpIiwgIm9yaXMi
LAorICAgICAgICAgICAgICAgICJvcnAiLCAicnNoaWZ0aSIsICJ1cnNoaWZ0aSIsICJzdWJpIiwg
InN1YnAiLCAic3ViaXMiLCAieG9yaSIsICJ4b3JwIiwgL15iaS8sIC9eYnAvLCAvXmJ0aS8sCisg
ICAgICAgICAgICAgICAgL15idHAvLCAvXmNpLywgL15jcC8sIC9edGkvCisgICAgICAgICAgICAg
ICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlz
dCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImkiKSkKKyAgICAgICAgICAgIHdo
ZW4gImJiZXEiLCAiYmJuZXEiLCAiYmJhIiwgImJiYWVxIiwgImJiYiIsICJiYmJlcSIsICJidGJv
IiwgImJ0YnoiLCAiYnRibnoiLCAidGJ6IiwgInRibnoiLAorICAgICAgICAgICAgICAgICJ0Ym8i
CisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3Jp
Z2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bj
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNS
ZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImIiKSkK
KyAgICAgICAgICAgIHdoZW4gImJiZ3QiLCAiYmJndGVxIiwgImJibHQiLCAiYmJsdGVxIiwgImJ0
YnMiLCAidGJzIgorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5v
ZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhcm1WN0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFu
ZHMsICJicyIpKQorICAgICAgICAgICAgd2hlbiAiYWRkZCIsICJkaXZkIiwgInN1YmQiLCAibXVs
ZCIsICJzcXJ0ZCIsIC9eYmQvCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9k
ZS5vcGVyYW5kcywgImQiKSkKKyAgICAgICAgICAgIHdoZW4gImptcCIsICJjYWxsIgorICAgICAg
ICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJtVjdBc1JlZ2lzdGVy
KG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHNbMF0sICJwIiwgZmFsc2Up
XSkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAg
ICAgICAgICAgIGVuZAorICAgICAgICAgICAgbmV3TGlzdCArPSBwb3N0SW5zdHJ1Y3Rpb25zCisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICBlbmQKKyAg
ICB9CisgICAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgcmVnaXN0ZXIgcmV1c2Ug
aW4gY29tcGFyZSBpbnN0cnVjdGlvbnMuIEZvciBleGFtcGxlOgorIworIyBjaWVxIHQwLCB0MSwg
dDAKKyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdiB0bXAsIHQwCisjIGNpZXEgdG1wLCB0MSwg
dDAKKyMKKworZGVmIGFybVY3TG93ZXJSZWdpc3RlclJldXNlKGxpc3QpCisgICAgbmV3TGlzdCA9
IFtdCisgICAgbGlzdC5lYWNoIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5p
c19hPyBJbnN0cnVjdGlvbgorICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgICAg
ICAgd2hlbiAiY2llcSIsICJjaW5lcSIsICJjaWEiLCAiY2lhZXEiLCAiY2liIiwgImNpYmVxIiwg
ImNpZ3QiLCAiY2lndGVxIiwgImNpbHQiLCAiY2lsdGVxIiwKKyAgICAgICAgICAgICAgICAiY3Bl
cSIsICJjcG5lcSIsICJjcGEiLCAiY3BhZXEiLCAiY3BiIiwgImNwYmVxIiwgImNwZ3QiLCAiY3Bn
dGVxIiwgImNwbHQiLCAiY3BsdGVxIiwKKyAgICAgICAgICAgICAgICAidGlvIiwgInRpcyIsICJ0
aXoiLCAidGlueiIsICJ0Ym8iLCAidGJzIiwgInRieiIsICJ0Ym56IgorICAgICAgICAgICAgICAg
IGlmIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgICAgICAgICAgICAgIGlmIG5vZGUu
b3BlcmFuZHNbMF0gPT0gbm9kZS5vcGVyYW5kc1sxXQorICAgICAgICAgICAgICAgICAgICAgICAg
dG1wID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICAgICAgICAg
ICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwg
W25vZGUub3BlcmFuZHNbMF0sIHRtcF0pCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0
IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbdG1wLCBu
b2RlLm9wZXJhbmRzWzFdXSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgIldyb25nIG51bWJl
ciBvZiBhcmd1bWVudHMgYXQgI3tub2RlLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgbm9kZS5v
cGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgICAgICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1sw
XSA9PSBub2RlLm9wZXJhbmRzWzJdCisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBUbXAu
bmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVy
YW5kc1swXSwgdG1wXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFt0bXAsIG5vZGUub3BlcmFu
ZHNbMV0sIG5vZGUub3BlcmFuZHNbMl1dKQorICAgICAgICAgICAgICAgICAgICBlbHNpZiBub2Rl
Lm9wZXJhbmRzWzFdID09IG5vZGUub3BlcmFuZHNbMl0KKyAgICAgICAgICAgICAgICAgICAgICAg
IHRtcCA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgICAgICAg
ICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIs
IFtub2RlLm9wZXJhbmRzWzFdLCB0bXBdKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgW25vZGUu
b3BlcmFuZHNbMF0sIHRtcCwgbm9kZS5vcGVyYW5kc1syXV0pCisgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICAgIGVuZAorICAgICAgICBl
bHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgZW5kCisgICAgfQorICAg
IG5ld0xpc3QKK2VuZAorCisjCisjIExlYSBzdXBwb3J0LgorIworCitjbGFzcyBBZGRyZXNzCisg
ICAgZGVmIGFybVY3RW1pdExlYShkZXN0aW5hdGlvbikKKyAgICAgICAgaWYgZGVzdGluYXRpb24g
PT0gYmFzZQorICAgICAgICAgICAgJGFzbS5wdXRzICJhZGRzICN7ZGVzdGluYXRpb24uYXJtVjdP
cGVyYW5kfSwgXCMje29mZnNldC52YWx1ZX0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICRh
c20ucHV0cyAiYWRkcyAje2Rlc3RpbmF0aW9uLmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09w
ZXJhbmR9LCBcIyN7b2Zmc2V0LnZhbHVlfSIKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKwor
Y2xhc3MgQmFzZUluZGV4CisgICAgZGVmIGFybVY3RW1pdExlYShkZXN0aW5hdGlvbikKKyAgICAg
ICAgcmFpc2UgIk1hbGZvcm1lZCBCYXNlSW5kZXgsIG9mZnNldCBzaG91bGQgYmUgemVybyBhdCAj
e2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb2Zmc2V0LnZhbHVlID09IDAKKyAgICAgICAgJGFz
bS5wdXRzICJhZGQudyAje2Rlc3RpbmF0aW9uLmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09w
ZXJhbmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGVTaGlmdH0iCisgICAg
ZW5kCitlbmQKKworIyBGSVhNRTogd2UgY291bGQgc3VwcG9ydCBBYnNvbHV0ZUFkZHJlc3MgZm9y
IGxlYSwgYnV0IHdlIGRvbid0LgorCisjCisjIEFjdHVhbCBsb3dlcmluZyBjb2RlIGZvbGxvd3Mu
CisjCisKK2NsYXNzIFNlcXVlbmNlCisgICAgZGVmIGxvd2VyQVJNdjcKKyAgICAgICAgbXlMaXN0
ID0gQGxpc3QKKyAgICAgICAgCisgICAgICAgICMgVmVyaWZ5IHRoYXQgd2Ugd2lsbCBvbmx5IHNl
ZSBpbnN0cnVjdGlvbnMgYW5kIGxhYmVscy4KKyAgICAgICAgbXlMaXN0LmVhY2ggeworICAgICAg
ICAgICAgfCBub2RlIHwKKyAgICAgICAgICAgIHVubGVzcyBub2RlLmlzX2E/IEluc3RydWN0aW9u
IG9yCisgICAgICAgICAgICAgICAgICAgIG5vZGUuaXNfYT8gTGFiZWwgb3IKKyAgICAgICAgICAg
ICAgICAgICAgbm9kZS5pc19hPyBMb2NhbExhYmVsIG9yCisgICAgICAgICAgICAgICAgICAgIG5v
ZGUuaXNfYT8gU2tpcAorICAgICAgICAgICAgICAgIHJhaXNlICJVbmV4cGVjdGVkICN7bm9kZS5p
bnNwZWN0fSBhdCAje25vZGUuY29kZU9yaWdpbn0iIAorICAgICAgICAgICAgZW5kCisgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIG15TGlzdCA9IGFybVY3TG93ZXJCcmFuY2hPcHMobXlMaXN0
KQorICAgICAgICBteUxpc3QgPSBhcm1WN0xvd2VyU2hpZnRPcHMobXlMaXN0KQorICAgICAgICBt
eUxpc3QgPSBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzKG15TGlzdCkKKyAgICAgICAgbXlM
aXN0ID0gYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc0RvdWJsZShteUxpc3QpCisgICAgICAg
IG15TGlzdCA9IGFybVY3TG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKG15TGlzdCkKKyAgICAgICAg
bXlMaXN0ID0gYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXMobXlMaXN0KQorICAgICAgICBt
eUxpc3QgPSBhcm1WN0xvd2VyTWlzcGxhY2VkQWRkcmVzc2VzKG15TGlzdCkKKyAgICAgICAgbXlM
aXN0ID0gYXJtVjdMb3dlclJlZ2lzdGVyUmV1c2UobXlMaXN0KQorICAgICAgICBteUxpc3QgPSBh
c3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFyaWVzKG15TGlzdCwgOmdwciwgQVJNdjdfRVhUUkFfR1BS
UykKKyAgICAgICAgbXlMaXN0ID0gYXNzaWduUmVnaXN0ZXJzVG9UZW1wb3JhcmllcyhteUxpc3Qs
IDpmcHIsIEFSTXY3X0VYVFJBX0ZQUlMpCisgICAgICAgIG15TGlzdC5lYWNoIHsKKyAgICAgICAg
ICAgIHwgbm9kZSB8CisgICAgICAgICAgICBub2RlLmxvd2VyKCJBUk12NyIpCisgICAgICAgIH0K
KyAgICBlbmQKK2VuZAorCitkZWYgYXJtVjdPcGVyYW5kcyhvcGVyYW5kcykKKyAgICBvcGVyYW5k
cy5tYXB7fHZ8IHYuYXJtVjdPcGVyYW5kfS5qb2luKCIsICIpCitlbmQKKworZGVmIGFybVY3Rmxp
cHBlZE9wZXJhbmRzKG9wZXJhbmRzKQorICAgIGFybVY3T3BlcmFuZHMoW29wZXJhbmRzWy0xXV0g
KyBvcGVyYW5kc1swLi4tMl0pCitlbmQKKworZGVmIGVtaXRBcm1WN0NvbXBhY3Qob3Bjb2RlMiwg
b3Bjb2RlMywgb3BlcmFuZHMpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgICAgICRh
c20ucHV0cyAiI3tvcGNvZGUzfSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisg
ICAgZWxzZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAg
IHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIGlmIG9w
ZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgJGFzbS5wdXRzICIje29wY29k
ZTN9ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJh
bmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICRhc20ucHV0cyAiI3tvcGNvZGUyfSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRz
KX0iCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2RlZiBlbWl0QXJtVjcob3Bjb2RlLCBv
cGVyYW5kcykKKyAgICBpZiBvcGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgJGFzbS5wdXRzICIj
e29wY29kZX0gI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIGVsc2UKKyAg
ICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzLnNpemUgPT0gMgorICAgICAgICAkYXNtLnB1dHMg
IiN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJt
VjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorZW5kCisK
K2RlZiBlbWl0QXJtVjdEb3VibGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBvcGVyYW5kcykKKyAgICAk
YXNtLnB1dHMgInZjbXBlLmY2NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAg
ICAkYXNtLnB1dHMgInZtcnMgYXBzcl9uemN2LCBmcHNjciIKKyAgICAkYXNtLnB1dHMgIiN7YnJh
bmNoT3Bjb2RlfSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKK2VuZAorCitkZWYgZW1pdEFybVY3
VGVzdChvcGVyYW5kcykKKyAgICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgICAgY2FzZSBvcGVyYW5k
cy5zaXplCisgICAgd2hlbiAyCisgICAgICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmln
aW4sIC0xKQorICAgIHdoZW4gMworICAgICAgICBtYXNrID0gb3BlcmFuZHNbMV0KKyAgICBlbHNl
CisgICAgICAgIHJhaXNlICJFeHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMgYnV0IGdvdCAje29wZXJh
bmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAgaWYg
bWFzay5pc19hPyBJbW1lZGlhdGUgYW5kIG1hc2sudmFsdWUgPT0gLTEKKyAgICAgICAgJGFzbS5w
dXRzICJ0c3QgI3t2YWx1ZS5hcm1WN09wZXJhbmR9LCAje3ZhbHVlLmFybVY3T3BlcmFuZH0iCisg
ICAgZWxzaWYgbWFzay5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgJGFzbS5wdXRzICJ0c3QudyAj
e3ZhbHVlLmFybVY3T3BlcmFuZH0sICN7bWFzay5hcm1WN09wZXJhbmR9IgorICAgIGVsc2UKKyAg
ICAgICAgJGFzbS5wdXRzICJ0c3QgI3t2YWx1ZS5hcm1WN09wZXJhbmR9LCAje21hc2suYXJtVjdP
cGVyYW5kfSIKKyAgICBlbmQKK2VuZAorCitkZWYgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywg
Y29kZSkKKyAgICAkYXNtLnB1dHMgIm1vdnMgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCBc
IzAiCisgICAgJGFzbS5wdXRzICJjbXAgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29w
ZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgJGFzbS5wdXRzICJpdCAje2NvZGV9IgorICAg
ICRhc20ucHV0cyAibW92I3tjb2RlfSAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sIFwjMSIK
K2VuZAorCitkZWYgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywgY29kZSkKKyAgICAkYXNtLnB1
dHMgIm1vdnMgI3tvcGVyYW5kc1stMV0uYXJtVjdPcGVyYW5kfSwgXCMwIgorICAgIGVtaXRBcm1W
N1Rlc3Qob3BlcmFuZHMpCisgICAgJGFzbS5wdXRzICJpdCAje2NvZGV9IgorICAgICRhc20ucHV0
cyAibW92I3tjb2RlfSAje29wZXJhbmRzWy0xXS5hcm1WN09wZXJhbmR9LCBcIzEiCitlbmQKKwor
Y2xhc3MgSW5zdHJ1Y3Rpb24KKyAgICBkZWYgbG93ZXJBUk12NworICAgICAgICAkYXNtLmNvbW1l
bnQgY29kZU9yaWdpblN0cmluZworICAgICAgICBjYXNlIG9wY29kZQorICAgICAgICB3aGVuICJh
ZGRpIiwgImFkZHAiLCAiYWRkaXMiCisgICAgICAgICAgICBpZiBvcGNvZGUgPT0gImFkZGlzIgor
ICAgICAgICAgICAgICAgIHN1ZmZpeCA9ICJzIgorICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHN1ZmZpeCA9ICIiCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGlmIG9wZXJh
bmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICAg
ICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAg
ICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAg
ICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAgYW5kIHN1ZmZpeC5lbXB0eT8KKyAg
ICAgICAgICAgICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAg
ICAgICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdiAje29wZXJhbmRzWzJdLmFybVY3T3Bl
cmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAkYXNtLnB1dHMg
ImFkZHMgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3Bl
cmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICAgICAgICBlbmQK
KyAgICAgICAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNf
YT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5p
c19hPyBSZWdpc3RlcklECisgICAgICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJd
LmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZHMgI3thcm1W
N0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgICAgICAg
ICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAg
ICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZHMgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVy
YW5kcyl9IgorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYWRkI3tzdWZmaXh9ICN7YXJtVjdGbGlwcGVk
T3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21w
YWN0KCJhbmRzIiwgImFuZCIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJvcmkiLCAib3JwIgor
ICAgICAgICAgICAgZW1pdEFybVY3Q29tcGFjdCgib3JycyIsICJvcnIiLCBvcGVyYW5kcykKKyAg
ICAgICAgd2hlbiAib3JpcyIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhY3QoIm9ycnMiLCAi
b3JycyIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICAgICAg
ICBlbWl0QXJtVjdDb21wYWN0KCJlb3JzIiwgImVvciIsIG9wZXJhbmRzKQorICAgICAgICB3aGVu
ICJsc2hpZnRpIgorICAgICAgICAgICAgZW1pdEFybVY3Q29tcGFjdCgibHNscyIsICJsc2xzIiwg
b3BlcmFuZHMpCisgICAgICAgIHdoZW4gInJzaGlmdGkiCisgICAgICAgICAgICBlbWl0QXJtVjdD
b21wYWN0KCJhc3JzIiwgImFzcnMiLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAidXJzaGlmdGki
CisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYWN0KCJsc3JzIiwgImxzcnMiLCBvcGVyYW5kcykK
KyAgICAgICAgd2hlbiAibXVsaSIKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMiBv
ciBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXSBvciBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1sy
XQorICAgICAgICAgICAgICAgIGVtaXRBcm1WNygibXVscyIsIG9wZXJhbmRzKQorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAibW92ICN7b3BlcmFuZHNbMl0uYXJt
VjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgICAg
ICRhc20ucHV0cyAibXVscyAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNb
Ml0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAg
ICAgZW5kCisgICAgICAgIHdoZW4gInN1YmkiLCAic3VicCIsICJzdWJpcyIKKyAgICAgICAgICAg
IGVtaXRBcm1WN0NvbXBhY3QoInN1YnMiLCAic3VicyIsIG9wZXJhbmRzKQorICAgICAgICB3aGVu
ICJuZWdpIgorICAgICAgICAgICAgJGFzbS5wdXRzICJyc2JzICN7b3BlcmFuZHNbMF0uYXJtVjdP
cGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCBcIzAiCisgICAgICAgIHdoZW4g
Im5vdGkiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm12bnMgI3tvcGVyYW5kc1swXS5hcm1WN09w
ZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAgIHdoZW4gImxvYWRp
IiwgImxvYWRwIgorICAgICAgICAgICAgJGFzbS5wdXRzICJsZHIgI3thcm1WN0ZsaXBwZWRPcGVy
YW5kcyhvcGVyYW5kcyl9IgorICAgICAgICB3aGVuICJzdG9yZWkiLCAic3RvcmVwIgorICAgICAg
ICAgICAgJGFzbS5wdXRzICJzdHIgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAg
IHdoZW4gImxvYWRiIgorICAgICAgICAgICAgJGFzbS5wdXRzICJsZHJiICN7YXJtVjdGbGlwcGVk
T3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAgd2hlbiAibG9hZGJzIgorICAgICAgICAgICAg
JGFzbS5wdXRzICJsZHJzYi53ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAg
ICAgICAgd2hlbiAic3RvcmViIgorICAgICAgICAgICAgJGFzbS5wdXRzICJzdHJiICN7YXJtVjdP
cGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICB3aGVuICJsb2FkaCIKKyAgICAgICAgICAgICRh
c20ucHV0cyAibGRyaCAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAg
IHdoZW4gImxvYWRocyIKKyAgICAgICAgICAgICRhc20ucHV0cyAibGRyc2gudyAje2FybVY3Rmxp
cHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIHdoZW4gInN0b3JlaCIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAic3RyaCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAg
d2hlbiAibG9hZGQiCisgICAgICAgICAgICAkYXNtLnB1dHMgInZsZHIuNjQgI3thcm1WN0ZsaXBw
ZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICB3aGVuICJzdG9yZWQiCisgICAgICAgICAg
ICAkYXNtLnB1dHMgInZzdHIuNjQgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAg
IHdoZW4gImFkZGQiCisgICAgICAgICAgICBlbWl0QXJtVjcoInZhZGQuZjY0Iiwgb3BlcmFuZHMp
CisgICAgICAgIHdoZW4gImRpdmQiCisgICAgICAgICAgICBlbWl0QXJtVjcoInZkaXYuZjY0Iiwg
b3BlcmFuZHMpCisgICAgICAgIHdoZW4gInN1YmQiCisgICAgICAgICAgICBlbWl0QXJtVjcoInZz
dWIuZjY0Iiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gIm11bGQiCisgICAgICAgICAgICBlbWl0
QXJtVjcoInZtdWwuZjY0Iiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gInNxcnRkIgorICAgICAg
ICAgICAgJGFzbS5wdXRzICJ2c3FydC5mNjQgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5k
cyl9IgorICAgICAgICB3aGVuICJjaTJkIgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2bW92ICN7
b3BlcmFuZHNbMV0uYXJtVjdTaW5nbGV9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisg
ICAgICAgICAgICAkYXNtLnB1dHMgInZjdnQuZjY0LnMzMiAje29wZXJhbmRzWzFdLmFybVY3T3Bl
cmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdTaW5nbGV9IgorICAgICAgICB3aGVuICJiZGVxIgor
ICAgICAgICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJiZXEiLCBvcGVyYW5kcykKKyAgICAg
ICAgd2hlbiAiYmRuZXEiCisgICAgICAgICAgICAkYXNtLnB1dHMgInZjbXBlLmY2NCAje2FybVY3
T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAidm1ycyBh
cHNyX256Y3YsIGZwc2NyIgorICAgICAgICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVu
aXF1ZSgiYmRuZXEiKQorICAgICAgICAgICAgJGFzbS5wdXRzICJidnMgI3tMYWJlbFJlZmVyZW5j
ZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICAgICAgICRh
c20ucHV0cyAiYm5lICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICAgICAgaXNVbm9y
ZGVyZWQubG93ZXIoIkFSTXY3IikKKyAgICAgICAgd2hlbiAiYmRndCIKKyAgICAgICAgICAgIGVt
aXRBcm1WN0RvdWJsZUJyYW5jaCgiYmd0Iiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gImJkZ3Rl
cSIKKyAgICAgICAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmdlIiwgb3BlcmFuZHMpCisg
ICAgICAgIHdoZW4gImJkbHQiCisgICAgICAgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJt
aSIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJiZGx0ZXEiCisgICAgICAgICAgICBlbWl0QXJt
VjdEb3VibGVCcmFuY2goImJscyIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJiZGVxdW4iCisg
ICAgICAgICAgICAkYXNtLnB1dHMgInZjbXBlLmY2NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNb
MC4uMV0pfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2NyIgor
ICAgICAgICAgICAgJGFzbS5wdXRzICJidnMgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAg
ICAgICAgICAkYXNtLnB1dHMgImJlcSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAg
d2hlbiAiYmRuZXF1biIKKyAgICAgICAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYm5lIiwg
b3BlcmFuZHMpCisgICAgICAgIHdoZW4gImJkZ3R1biIKKyAgICAgICAgICAgIGVtaXRBcm1WN0Rv
dWJsZUJyYW5jaCgiYmhpIiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gImJkZ3RlcXVuIgorICAg
ICAgICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJicGwiLCBvcGVyYW5kcykKKyAgICAgICAg
d2hlbiAiYmRsdHVuIgorICAgICAgICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJibHQiLCBv
cGVyYW5kcykKKyAgICAgICAgd2hlbiAiYmRsdGVxdW4iCisgICAgICAgICAgICBlbWl0QXJtVjdE
b3VibGVCcmFuY2goImJsZSIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJidGQyaSIKKyAgICAg
ICAgICAgICMgRklYTUU6IG1heSBiZSBhIGdvb2QgaWRlYSB0byBqdXN0IGdldCByaWQgb2YgdGhp
cyBpbnN0cnVjdGlvbiwgc2luY2UgdGhlIGludGVycHJldGVyCisgICAgICAgICAgICAjIGN1cnJl
bnRseSBkb2VzIG5vdCB1c2UgaXQuCisgICAgICAgICAgICByYWlzZSAiQVJNdjcgZG9lcyBub3Qg
c3VwcG9ydCB0aGlzIG9wY29kZSB5ZXQsICN7Y29kZU9yaWdpbn0iCisgICAgICAgIHdoZW4gInRk
MmkiCisgICAgICAgICAgICAkYXNtLnB1dHMgInZjdnQuczMyLmY2NCAje0FSTXY3X1NDUkFUQ0hf
RlBSLmFybVY3U2luZ2xlfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAg
ICAgJGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tBUk12N19T
Q1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0iCisgICAgICAgIHdoZW4gImJjZDJpIgorICAgICAgICAg
ICAgJGFzbS5wdXRzICJ2Y3Z0LnMzMi5mNjQgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1Npbmds
ZX0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAi
dm1vdiAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJt
VjdTaW5nbGV9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2Y3Z0LmY2NC5zMzIgI3tBUk12N19T
Q1JBVENIX0ZQUi5hcm1WN09wZXJhbmR9LCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xl
fSIKKyAgICAgICAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYm5lIiwgW0FSTXY3X1NDUkFU
Q0hfRlBSLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMl1dKQorICAgICAgICAgICAgJGFzbS5wdXRz
ICJ0c3QgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3Bl
cmFuZH0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImJlcSAje29wZXJhbmRzWzJdLmFzbUxhYmVs
fSIKKyAgICAgICAgd2hlbiAibW92ZHoiCisgICAgICAgICAgICAjIEZJWE1FOiBlaXRoZXIgc3Vw
cG9ydCB0aGlzIG9yIHJlbW92ZSBpdC4KKyAgICAgICAgICAgIHJhaXNlICJBUk12NyBkb2VzIG5v
dCBzdXBwb3J0IHRoaXMgb3Bjb2RlIHlldCwgI3tjb2RlT3JpZ2lufSIKKyAgICAgICAgd2hlbiAi
cG9wIgorICAgICAgICAgICAgJGFzbS5wdXRzICJwb3AgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJh
bmR9IgorICAgICAgICB3aGVuICJwdXNoIgorICAgICAgICAgICAgJGFzbS5wdXRzICJwdXNoICN7
b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgd2hlbiAibW92ZSIsICJzeGkycCIs
ICJ6eGkycCIKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAg
ICAgICAgICAgICAgIGFybVY3TW92ZUltbWVkaWF0ZShvcGVyYW5kc1swXS52YWx1ZSwgb3BlcmFu
ZHNbMV0pCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJtb3Yg
I3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICAgICAgZW5kCisgICAg
ICAgIHdoZW4gIm5vcCIKKyAgICAgICAgICAgICRhc20ucHV0cyAibm9wIgorICAgICAgICB3aGVu
ICJiaWVxIiwgImJwZXEiLCAiYmJlcSIKKyAgICAgICAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmls
LCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAidHN0ICN7b3Bl
cmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAg
ICAgICAgICAgZWxzaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzFdCisgICAg
ICAgICAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAj
e29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICRhc20ucHV0cyAiYmVxICN7b3BlcmFuZHNbMl0u
YXNtTGFiZWx9IgorICAgICAgICB3aGVuICJiaW5lcSIsICJicG5lcSIsICJiYm5lcSIKKyAgICAg
ICAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAg
ICAgICAgICRhc20ucHV0cyAidHN0ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVy
YW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgZWxzaWYgSW1tZWRpYXRlLm5ldyhu
aWwsIDApID09IG9wZXJhbmRzWzFdCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tv
cGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09w
ZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICRh
c20ucHV0cyAiYm5lICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJiaWEi
LCAiYnBhIiwgImJiYSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5k
cyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJiaGkgI3tvcGVyYW5k
c1syXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImJpYWVxIiwgImJwYWVxIiwgImJiYWVxIgor
ICAgICAgICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFd
KX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImJocyAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIK
KyAgICAgICAgd2hlbiAiYmliIiwgImJwYiIsICJiYmIiCisgICAgICAgICAgICAkYXNtLnB1dHMg
ImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAgICRhc20u
cHV0cyAiYmxvICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJiaWJlcSIs
ICJicGJlcSIsICJiYmJlcSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVy
YW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJibHMgI3tvcGVy
YW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImJpZ3QiLCAiYnBndCIsICJiYmd0Igor
ICAgICAgICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFd
KX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImJndCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIK
KyAgICAgICAgd2hlbiAiYmlndGVxIiwgImJwZ3RlcSIsICJiYmd0ZXEiCisgICAgICAgICAgICAk
YXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAiYmdlICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3aGVu
ICJiaWx0IiwgImJwbHQiLCAiYmJsdCIKKyAgICAgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJt
VjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJibHQg
I3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImJpbHRlcSIsICJicGx0ZXEi
LCAiYmJsdGVxIgorICAgICAgICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9w
ZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImJsZSAje29wZXJhbmRzWzJd
LmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYnRpeiIsICJidHB6IiwgImJ0YnoiCisgICAgICAg
ICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICAgICAgICAgICAgJGFzbS5wdXRzICJiZXEg
I3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJidGlueiIsICJidHBueiIs
ICJidGJueiIKKyAgICAgICAgICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgICAgICAgICAg
ICAkYXNtLnB1dHMgImJuZSAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4g
ImJ0aW8iLCAiYnRwbyIsICJidGJvIgorICAgICAgICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5k
cykKKyAgICAgICAgICAgICRhc20ucHV0cyAiYnZzICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIK
KyAgICAgICAgd2hlbiAiYnRpcyIsICJidHBzIiwgImJ0YnMiCisgICAgICAgICAgICBlbWl0QXJt
VjdUZXN0KG9wZXJhbmRzKQorICAgICAgICAgICAgJGFzbS5wdXRzICJibWkgI3tvcGVyYW5kc1st
MV0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJqbXAiCisgICAgICAgICAgICBpZiBvcGVyYW5k
c1swXS5sYWJlbD8KKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImIgI3tvcGVyYW5kc1swXS5h
c21MYWJlbH0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJt
b3YgcGMsICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICAgIGVuZAorICAg
ICAgICB3aGVuICJjYWxsIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAg
ICAgICAgICAgICAgJGFzbS5wdXRzICJibHggI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJibHggI3tvcGVyYW5kc1sw
XS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gImJyZWFrIgor
ICAgICAgICAgICAgJGFzbS5wdXRzICJia3B0IgorICAgICAgICB3aGVuICJyZXQiCisgICAgICAg
ICAgICAkYXNtLnB1dHMgImJ4IGxyIgorICAgICAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAg
ICAgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiZXEiKQorICAgICAgICB3aGVuICJj
aW5lcSIsICJjcG5lcSIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJu
ZSIpCisgICAgICAgIHdoZW4gImNpYSIsICJjcGEiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21w
YXJlKG9wZXJhbmRzLCAiaGkiKQorICAgICAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAgICAg
ICAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJocyIpCisgICAgICAgIHdoZW4gImNp
YiIsICJjcGIiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibG8iKQor
ICAgICAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBh
cmUob3BlcmFuZHMsICJscyIpCisgICAgICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgICAg
ICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJndCIpCisgICAgICAgIHdoZW4gImNpZ3Rl
cSIsICJjcGd0ZXEiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiZ2Ui
KQorICAgICAgICB3aGVuICJjaWx0IiwgImNwbHQiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21w
YXJlKG9wZXJhbmRzLCAibHQiKQorICAgICAgICB3aGVuICJjaWx0ZXEiLCAiY3BsdGVxIgorICAg
ICAgICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImxlIikKKyAgICAgICAgd2hlbiAi
dGlvIiwgInRibyIKKyAgICAgICAgICAgIGVtaXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMsICJ2cyIp
CisgICAgICAgIHdoZW4gInRpcyIsICJ0YnMiCisgICAgICAgICAgICBlbWl0QXJtVjdUZXN0U2V0
KG9wZXJhbmRzLCAibWkiKQorICAgICAgICB3aGVuICJ0aXoiLCAidGJ6IgorICAgICAgICAgICAg
ZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywgImVxIikKKyAgICAgICAgd2hlbiAidGlueiIsICJ0
Ym56IgorICAgICAgICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywgIm5lIikKKyAgICAg
ICAgd2hlbiAicGVlayIKKyAgICAgICAgICAgICRhc20ucHV0cyAibGRyICN7b3BlcmFuZHNbMV0u
YXJtVjdPcGVyYW5kfSwgW3NwLCBcIyN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fV0iCisgICAgICAg
IHdoZW4gInBva2UiCisgICAgICAgICAgICAkYXNtLnB1dHMgInN0ciAje29wZXJhbmRzWzFdLmFy
bVY3T3BlcmFuZH0sIFtzcCwgXCMje29wZXJhbmRzWzBdLnZhbHVlICogNH1dIgorICAgICAgICB3
aGVuICJmaWkyZCIKKyAgICAgICAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzJdLmFy
bVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5h
cm1WN09wZXJhbmR9IgorICAgICAgICB3aGVuICJmZDJpaSIKKyAgICAgICAgICAgICRhc20ucHV0
cyAidm1vdiAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMl0uYXJtVjdP
cGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICB3aGVuICJibyIK
KyAgICAgICAgICAgICRhc20ucHV0cyAiYnZzICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAg
ICAgICB3aGVuICJicyIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYm1pICN7b3BlcmFuZHNbMF0u
YXNtTGFiZWx9IgorICAgICAgICB3aGVuICJieiIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYmVx
ICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJibnoiCisgICAgICAgICAg
ICAkYXNtLnB1dHMgImJuZSAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAi
bGVhaSIsICJsZWFwIgorICAgICAgICAgICAgb3BlcmFuZHNbMF0uYXJtVjdFbWl0TGVhKG9wZXJh
bmRzWzFdKQorICAgICAgICB3aGVuICJzbXVsbGkiCisgICAgICAgICAgICByYWlzZSAiV3Jvbmcg
bnVtYmVyIG9mIGFyZ3VtZW50cyB0byBzbXVsbCBpbiAje3NlbGYuaW5zcGVjdH0gYXQgI3tjb2Rl
T3JpZ2luU3RyaW5nfSIgdW5sZXNzIG9wZXJhbmRzLmxlbmd0aCA9PSA0CisgICAgICAgICAgICAk
YXNtLnB1dHMgInNtdWxsICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sz
XS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNb
MV0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIlVuaGFu
ZGxlZCBvcGNvZGUgI3tvcGNvZGV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAgIGVu
ZAorICAgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L2FzbS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
c20ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
c20ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcyIEBACisjIS91c3IvYmluL2VudiBydWJ5
CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGly
bmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hh
MSIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZWxmX2hh
c2giCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworY2xhc3MgQXNz
ZW1ibGVyCisgICAgZGVmIGluaXRpYWxpemUob3V0cCkKKyAgICAgICAgQG91dHAgPSBvdXRwCisg
ICAgICAgIEBzdGF0ZSA9IDpjcHAKKyAgICAgICAgQGNvbW1lbnRTdGF0ZSA9IDpub25lCisgICAg
ICAgIEBjb21tZW50ID0gbmlsCisgICAgZW5kCisgICAgCisgICAgZGVmIGVudGVyQXNtCisgICAg
ICAgIEBvdXRwLnB1dHMgImFzbSAoIgorICAgICAgICBAc3RhdGUgPSA6YXNtCisgICAgZW5kCisg
ICAgCisgICAgZGVmIGxlYXZlQXNtCisgICAgICAgIHB1dHNMYXN0Q29tbWVudAorICAgICAgICBA
b3V0cC5wdXRzICIpOyIKKyAgICAgICAgQHN0YXRlID0gOmNwcAorICAgIGVuZAorICAgIAorICAg
IGRlZiBpbkFzbQorICAgICAgICBlbnRlckFzbQorICAgICAgICB5aWVsZAorICAgICAgICBsZWF2
ZUFzbQorICAgIGVuZAorICAgIAorICAgIGRlZiBsYXN0Q29tbWVudAorICAgICAgICBpZiBAY29t
bWVudAorICAgICAgICAgICAgcmVzdWx0ID0gIi8vICN7QGNvbW1lbnR9IgorICAgICAgICBlbHNl
CisgICAgICAgICAgICByZXN1bHQgPSAiIgorICAgICAgICBlbmQKKyAgICAgICAgQGNvbW1lbnRT
dGF0ZSA9IDpub25lCisgICAgICAgIEBjb21tZW50ID0gbmlsCisgICAgICAgIHJlc3VsdAorICAg
IGVuZAorICAgIAorICAgIGRlZiBwdXRzTGFzdENvbW1lbnQKKyAgICAgICAgY29tbWVudCA9IGxh
c3RDb21tZW50CisgICAgICAgIHVubGVzcyBjb21tZW50LmVtcHR5PworICAgICAgICAgICAgQG91
dHAucHV0cyBjb21tZW50CisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBwdXRz
KCpsaW5lKQorICAgICAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICAgICAgQG91
dHAucHV0cygiXCJcXHQiICsgbGluZS5qb2luKCcnKSArICJcXG5cIiAje2xhc3RDb21tZW50fSIp
CisgICAgZW5kCisgICAgCisgICAgZGVmIHByaW50KGxpbmUpCisgICAgICAgIHJhaXNlIHVubGVz
cyBAc3RhdGUgPT0gOmFzbQorICAgICAgICBAb3V0cC5wcmludCgiXCIiICsgbGluZSArICJcIiIp
CisgICAgZW5kCisgICAgCisgICAgZGVmIHB1dHNMYWJlbChsYWJlbE5hbWUpCisgICAgICAgIHJh
aXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgICAgICBAb3V0cC5wdXRzKCJPRkZMSU5FX0FT
TV9HTE9CQUxfTEFCRUwoI3tsYWJlbE5hbWV9KSAje2xhc3RDb21tZW50fSIpCisgICAgZW5kCisg
ICAgCisgICAgZGVmIHB1dHNMb2NhbExhYmVsKGxhYmVsTmFtZSkKKyAgICAgICAgcmFpc2UgdW5s
ZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAgICAgIEBvdXRwLnB1dHMoIkxPQ0FMX0xBQkVMX1NUUklO
Rygje2xhYmVsTmFtZX0pIFwiOlxcblwiICN7bGFzdENvbW1lbnR9IikKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgc2VsZi5sYWJlbFJlZmVyZW5jZShsYWJlbE5hbWUpCisgICAgICAgICJcIiBTWU1C
T0xfU1RSSU5HKCN7bGFiZWxOYW1lfSkgXCIiCisgICAgZW5kCisgICAgCisgICAgZGVmIHNlbGYu
bG9jYWxMYWJlbFJlZmVyZW5jZShsYWJlbE5hbWUpCisgICAgICAgICJcIiBMT0NBTF9MQUJFTF9T
VFJJTkcoI3tsYWJlbE5hbWV9KSBcIiIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY29tbWVudCh0
ZXh0KQorICAgICAgICBjYXNlIEBjb21tZW50U3RhdGUKKyAgICAgICAgd2hlbiA6bm9uZQorICAg
ICAgICAgICAgQGNvbW1lbnQgPSB0ZXh0CisgICAgICAgICAgICBAY29tbWVudFN0YXRlID0gOm9u
ZQorICAgICAgICB3aGVuIDpvbmUKKyAgICAgICAgICAgIEBvdXRwLnB1dHMgIi8vICN7QGNvbW1l
bnR9IgorICAgICAgICAgICAgQG91dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgICAgICAgICAgIEBj
b21tZW50ID0gbmlsCisgICAgICAgICAgICBAY29tbWVudFN0YXRlID0gOm1hbnkKKyAgICAgICAg
d2hlbiA6bWFueQorICAgICAgICAgICAgQG91dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworYXNt
RmlsZSA9IEFSR1Yuc2hpZnQKK29mZnNldHNGaWxlID0gQVJHVi5zaGlmdAorb3V0cHV0RmxubSA9
IEFSR1Yuc2hpZnQKKworJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBQYXJzaW5nICN7YXNtRmls
ZX0gYW5kICN7b2Zmc2V0c0ZpbGV9IGFuZCBjcmVhdGluZyBhc3NlbWJseSBmaWxlICN7b3V0cHV0
RmxubX0uIgorCitvZmZzZXRzTGlzdCwgY29uZmlnSW5kZXggPSBvZmZzZXRzQW5kQ29uZmlndXJh
dGlvbkluZGV4KG9mZnNldHNGaWxlKQoraW5wdXREYXRhID0gSU86OnJlYWQoYXNtRmlsZSkKKwor
aW5wdXRIYXNoID0KKyAgICAiLy8gb2ZmbGluZWFzbSBpbnB1dCBoYXNoOiAiICsgRGlnZXN0OjpT
SEExLmhleGRpZ2VzdChpbnB1dERhdGEpICsKKyAgICAiICIgKyBEaWdlc3Q6OlNIQTEuaGV4ZGln
ZXN0KChvZmZzZXRzTGlzdCArIFtjb25maWdJbmRleF0pLmpvaW4oJyAnKSkgKworICAgICIgIiAr
IHNlbGZIYXNoCisKK2lmIEZpbGVUZXN0LmV4aXN0PyBvdXRwdXRGbG5tCisgICAgRmlsZS5vcGVu
KG91dHB1dEZsbm0sICJyIikgeworICAgICAgICB8IGlucCB8CisgICAgICAgIGZpcnN0TGluZSA9
IGlucC5nZXRzCisgICAgICAgIGlmIGZpcnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09IGlu
cHV0SGFzaAorICAgICAgICAgICAgJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBOb3RoaW5nIGNo
YW5nZWQuIgorICAgICAgICAgICAgZXhpdCAwCisgICAgICAgIGVuZAorICAgIH0KK2VuZAorCitG
aWxlLm9wZW4ob3V0cHV0RmxubSwgInciKSB7CisgICAgfCBvdXRwIHwKKyAgICAkb3V0cHV0ID0g
b3V0cAorICAgICRvdXRwdXQucHV0cyBpbnB1dEhhc2gKKyAgICAKKyAgICAkYXNtID0gQXNzZW1i
bGVyLm5ldygkb3V0cHV0KQorICAgIAorICAgIGFzdCA9IHBhcnNlKGxleChpbnB1dERhdGEpKQor
ICAgIAorICAgIGZvclNldHRpbmdzKGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpW2Nv
bmZpZ0luZGV4XSwgYXN0KSB7CisgICAgICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxB
U1QsIGJhY2tlbmQgfAorICAgICAgICBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGlu
Z3MpCisgICAgICAgIGxvd0xldmVsQVNUID0gbG93TGV2ZWxBU1QucmVzb2x2ZSgqYnVpbGRPZmZz
ZXRzTWFwKGxvd0xldmVsQVNULCBvZmZzZXRzTGlzdCkpCisgICAgICAgIGVtaXRDb2RlSW5Db25m
aWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kKSB7CisgICAg
ICAgICAgICAkYXNtLmluQXNtIHsKKyAgICAgICAgICAgICAgICBsb3dMZXZlbEFTVC5sb3dlcihi
YWNrZW5kKQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCiskc3RkZXJyLnB1
dHMgIm9mZmxpbmVhc206IEFzc2VtYmx5IGZpbGUgI3tvdXRwdXRGbG5tfSBzdWNjZXNzZnVsbHkg
Z2VuZXJhdGVkLiIKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5y
YgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5y
YgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDM5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCisjCisjIEJhc2UgdXRpbGl0eSB0eXBlcyBmb3IgdGhlIEFTVC4KKyMK
KworIyBWYWxpZCBtZXRob2RzIGZvciBOb2RlOgorIworIyBub2RlLmNoaWxkcmVuIC0+IFJldHVy
bnMgYW4gYXJyYXkgb2YgaW1tZWRpYXRlIGNoaWxkcmVuLgorIworIyBub2RlLmRlc2NlbmRlbnRz
IC0+IFJldHVybnMgYW4gYXJyYXkgb2YgYWxsIHN0cmljdCBkZXNjZW5kYW50cyAoY2hpbGRyZW4K
KyMgICAgIGFuZCBjaGlsZHJlbiBvZiBjaGlsZHJlbiwgdHJhbnNpdGl2ZWx5KS4KKyMKKyMgbm9k
ZS5mbGF0dGVuIC0+IFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgc3RyaWN0IGRlc2Nl
bmRhbnRzIGFuZAorIyAgICAgdGhlIG5vZGUgaXRzZWxmLgorIworIyBub2RlLmZpbHRlcih0eXBl
KSAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhvc2UgZWxlbWVudHMgaW4KKyMgICAg
IG5vZGUuZmxhdHRlbiB0aGF0IGFyZSBvZiB0aGUgZ2l2ZW4gdHlwZSAoaXNfYT8gdHlwZSByZXR1
cm5zIHRydWUpLgorIworIyBub2RlLm1hcENoaWxkcmVue3x2fCAuLi59IC0+IFJldHVybnMgYSBu
ZXcgbm9kZSB3aXRoIGFsbCBjaGlsZHJlbgorIyAgICAgcmVwbGFjZWQgYWNjb3JkaW5nIHRvIHRo
ZSBnaXZlbiBibG9jay4KKyMKKyMgRXhhbXBsZXM6CisjCisjIG5vZGUuZmlsdGVyKFNldHRpbmcp
LnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHNldHRpbmdzIHRoYXQgdGhlIEFTVCdzCisjICAg
ICBJZlRoZW5FbHNlIGJsb2NrcyBkZXBlbmQgb24uCisjCisjIG5vZGUuZmlsdGVyKFN0cnVjdE9m
ZnNldCkudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0aGUgc3RydWN0dXJlIG9mZnNldHMKKyMgICAg
IHRoYXQgdGhlIEFTVCBkZXBlbmRzIG9uLgorCitjbGFzcyBOb2RlCisgICAgYXR0cl9yZWFkZXIg
OmNvZGVPcmlnaW4KKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgICAg
ICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY29kZU9y
aWdpblN0cmluZworICAgICAgICAibGluZSBudW1iZXIgI3tAY29kZU9yaWdpbn0iCisgICAgZW5k
CisgICAgCisgICAgZGVmIGRlc2NlbmRhbnRzCisgICAgICAgIGNoaWxkcmVuLmNvbGxlY3R7fHZ8
IHYuZmxhdHRlbn0uZmxhdHRlbgorICAgIGVuZAorICAgIAorICAgIGRlZiBmbGF0dGVuCisgICAg
ICAgIFtzZWxmXSArIGRlc2NlbmRhbnRzCisgICAgZW5kCisgICAgCisgICAgZGVmIGZpbHRlcih0
eXBlKQorICAgICAgICBmbGF0dGVuLnNlbGVjdHt8dnwgdi5pc19hPyB0eXBlfQorICAgIGVuZAor
ZW5kCisKK2NsYXNzIE5vQ2hpbGRyZW4gPCBOb2RlCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbikKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
Y2hpbGRyZW4KKyAgICAgICAgW10KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICAgICAgc2VsZgorICAgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldEtleQorICAg
IGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpmaWVsZAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKHN0
cnVjdCwgZmllbGQpCisgICAgICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICAgICAgQGZpZWxkID0g
ZmllbGQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaGFzaAorICAgICAgICBAc3RydWN0Lmhhc2gg
KyBAZmllbGQuaGFzaCAqIDMKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZXFsPyhvdGhlcikKKyAg
ICAgICAgQHN0cnVjdCA9PSBvdGhlci5zdHJ1Y3QgYW5kIEBmaWVsZCA9PSBvdGhlci5maWVsZAor
ICAgIGVuZAorZW5kCisKKyMKKyMgQVNUIG5vZGVzLgorIworCitjbGFzcyBTdHJ1Y3RPZmZzZXQg
PCBOb0NoaWxkcmVuCisgICAgYXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgICAgCisgICAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICAgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICAgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgICAgICBAZmllbGQgPSBm
aWVsZAorICAgIGVuZAorICAgIAorICAgIEBAbWFwcGluZyA9IHt9CisgICAgCisgICAgZGVmIHNl
bGYuZm9yRmllbGQoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICAgICAga2V5ID0gU3Ry
dWN0T2Zmc2V0S2V5Lm5ldyhzdHJ1Y3QsIGZpZWxkKQorICAgICAgICAKKyAgICAgICAgdW5sZXNz
IEBAbWFwcGluZ1trZXldCisgICAgICAgICAgICBAQG1hcHBpbmdba2V5XSA9IFN0cnVjdE9mZnNl
dC5uZXcoY29kZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICAgICAgZW5kCisgICAgICAgIEBA
bWFwcGluZ1trZXldCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIiN7c3Ry
dWN0fTo6I3tmaWVsZH0iCisgICAgZW5kCisgICAgCisgICAgZGVmIDw9PihvdGhlcikKKyAgICAg
ICAgaWYgQHN0cnVjdCAhPSBvdGhlci5zdHJ1Y3QKKyAgICAgICAgICAgIHJldHVybiBAc3RydWN0
IDw9PiBvdGhlci5zdHJ1Y3QKKyAgICAgICAgZW5kCisgICAgICAgIEBmaWVsZCA8PT4gb3RoZXIu
ZmllbGQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAg
CisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRl
ZiByZWdpc3Rlcj8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2Yg
PCBOb0NoaWxkcmVuCisgICAgYXR0cl9yZWFkZXIgOnN0cnVjdAorICAgIAorICAgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICAgICAgQHN0cnVjdCA9IHN0cnVjdAorICAgIGVuZAorICAgIAorICAgIEBAbWFwcGluZyA9IHt9
CisgICAgCisgICAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgICAg
IHVubGVzcyBAQG1hcHBpbmdbc3RydWN0XQorICAgICAgICAgICAgQEBtYXBwaW5nW3N0cnVjdF0g
PSBTaXplb2YubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICAgICAgZW5kCisgICAgICAgIEBA
bWFwcGluZ1tzdHJ1Y3RdCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgInNp
emVvZiAje0BzdHJ1Y3R9IgorICAgIGVuZAorICAgIAorICAgIGRlZiA8PT4ob3RoZXIpCisgICAg
ICAgIEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICAgIGVuZAorICAgIAorICAgIGRlZiBhZGRy
ZXNzPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBsYWJlbD8KKyAgICAg
ICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaW1tZWRpYXRlPworICAgICAgICB0cnVl
CisgICAgZW5kCisgICAgCisgICAgZGVmIHJlZ2lzdGVyPworICAgICAgICBmYWxzZQorICAgIGVu
ZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZSA8IE5vQ2hpbGRyZW4KKyAgICBhdHRyX3JlYWRlciA6
dmFsdWUKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkKKyAgICAg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQHZhbHVlID0gdmFsdWUKKyAgICAgICAgcmFp
c2UgIkJhZCBpbW1lZGlhdGUgdmFsdWUgI3t2YWx1ZS5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5T
dHJpbmd9IiB1bmxlc3MgdmFsdWUuaXNfYT8gSW50ZWdlcgorICAgIGVuZAorICAgIAorICAgIGRl
ZiBkdW1wCisgICAgICAgICIje3ZhbHVlfSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgPT0ob3Ro
ZXIpCisgICAgICAgIG90aGVyLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUgPT0gQHZh
bHVlCisgICAgZW5kCisgICAgCisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAg
ZW5kCisgICAgCisgICAgZGVmIGxhYmVsPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAor
ICAgIGRlZiBpbW1lZGlhdGU/CisgICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
cmVnaXN0ZXI/CisgICAgICAgIGZhbHNlCisgICAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRp
YXRlcyA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgICAgCisgICAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisgICAgICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgICAgIEBsZWZ0ID0gbGVmdAorICAgICAgICBAcmlnaHQgPSByaWdodAorICAg
IGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBbQGxlZnQsIEByaWdodF0KKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hpbGRyZW4KKyAgICAgICAgQWRkSW1tZWRpYXRlcy5u
ZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgICAgZW5kCisg
ICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9
KSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisg
ICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiBy
ZWdpc3Rlcj8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlh
dGVzIDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgICAKKyAgICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICAgICAgc3VwZXIoY29kZU9y
aWdpbikKKyAgICAgICAgQGxlZnQgPSBsZWZ0CisgICAgICAgIEByaWdodCA9IHJpZ2h0CisgICAg
ZW5kCisgICAgCisgICAgZGVmIGNoaWxkcmVuCisgICAgICAgIFtAbGVmdCwgQHJpZ2h0XQorICAg
IGVuZAorICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbgorICAgICAgICBTdWJJbW1lZGlhdGVzLm5l
dyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgZHVtcAorICAgICAgICAiKCN7bGVmdC5kdW1wfSAtICN7cmlnaHQuZHVtcH0p
IgorICAgIGVuZAorICAgIAorICAgIGRlZiBhZGRyZXNzPworICAgICAgICBmYWxzZQorICAgIGVu
ZAorICAgIAorICAgIGRlZiBsYWJlbD8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgaW1tZWRpYXRlPworICAgICAgICB0cnVlCisgICAgZW5kCisgICAgCisgICAgZGVmIHJl
Z2lzdGVyPworICAgICAgICBmYWxzZQorICAgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0
ZXMgPCBOb2RlCisgICAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAgIAorICAgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgICAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgICAgICBAbGVmdCA9IGxlZnQKKyAgICAgICAgQHJpZ2h0ID0gcmlnaHQKKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgY2hpbGRyZW4KKyAgICAgICAgW0BsZWZ0LCBAcmlnaHRdCisgICAg
ZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxkcmVuCisgICAgICAgIE11bEltbWVkaWF0ZXMubmV3
KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICAgIGVuZAorICAg
IAorICAgIGRlZiBkdW1wCisgICAgICAgICIoI3tsZWZ0LmR1bXB9ICogI3tyaWdodC5kdW1wfSki
CisgICAgZW5kCisgICAgCisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAgZW5k
CisgICAgCisgICAgZGVmIGxhYmVsPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAg
IGRlZiBpbW1lZGlhdGU/CisgICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVn
aXN0ZXI/CisgICAgICAgIGZhbHNlCisgICAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRl
IDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAgIAorICAgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIGNoaWxkKQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBA
Y2hpbGQgPSBjaGlsZAorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBb
QGNoaWxkXQorICAgIGVuZAorICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbgorICAgICAgICBOZWdJ
bW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICAgIGVuZAorICAgIAor
ICAgIGRlZiBkdW1wCisgICAgICAgICIoLSN7QGNoaWxkLmR1bXB9KSIKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
bGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8K
KyAgICAgICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAgICAgICAg
ZmFsc2UKKyAgICBlbmQKK2VuZAorCitjbGFzcyBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICAg
IGF0dHJfcmVhZGVyIDpuYW1lCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQG5hbWUgPSBuYW1lCisg
ICAgZW5kCisgICAgCisgICAgQEBtYXBwaW5nID0ge30KKyAgICAKKyAgICBkZWYgc2VsZi5mb3JO
YW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAg
ICAgICAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5h
bWUpCisgICAgICAgIGVuZAorICAgICAgICBAQG1hcHBpbmdbbmFtZV0KKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgZHVtcAorICAgICAgICBuYW1lCisgICAgZW5kCisgICAgCisgICAgZGVmIGFkZHJl
c3M/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGxhYmVsPworICAgICAg
ICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBpbW1lZGlhdGU/CisgICAgICAgIGZhbHNl
CisgICAgZW5kCisgICAgCisgICAgZGVmIHJlZ2lzdGVyPworICAgICAgICB0cnVlCisgICAgZW5k
CitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICAgIGF0dHJfcmVhZGVy
IDpuYW1lCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQG5hbWUgPSBuYW1lCisgICAgZW5kCisgICAg
CisgICAgQEBtYXBwaW5nID0ge30KKyAgICAKKyAgICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmln
aW4sIG5hbWUpCisgICAgICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgICAgICAgIEBA
bWFwcGluZ1tuYW1lXSA9IEZQUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAg
ICAgZW5kCisgICAgICAgIEBAbWFwcGluZ1tuYW1lXQorICAgIGVuZAorICAgIAorICAgIGRlZiBk
dW1wCisgICAgICAgIG5hbWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAg
ICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisg
ICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/CisgICAgICAgIHRydWUKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBWYXJpYWJsZSA8IE5vQ2hpbGRyZW4KKyAgICBhdHRyX3JlYWRlciA6bmFtZQorICAgIAor
ICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgICAgIEBuYW1lID0gbmFtZQorICAgIGVuZAorICAgIAorICAgIEBAbWFwcGlu
ZyA9IHt9CisgICAgCisgICAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAg
ICAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICAgICAgICBAQG1hcHBpbmdbbmFtZV0g
PSBWYXJpYWJsZS5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBA
bWFwcGluZ1tuYW1lXQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgIG5hbWUK
KyAgICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzIDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpi
YXNlLCA6b2Zmc2V0CisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwg
b2Zmc2V0KQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAYmFzZSA9IGJhc2UK
KyAgICAgICAgQG9mZnNldCA9IG9mZnNldAorICAgICAgICByYWlzZSAiQmFkIGJhc2UgZm9yIGFk
ZHJlc3MgI3tiYXNlLmluc3BlY3R9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBiYXNl
LmlzX2E/IFZhcmlhYmxlIG9yIGJhc2UucmVnaXN0ZXI/CisgICAgICAgIHJhaXNlICJCYWQgb2Zm
c2V0IGZvciBhZGRyZXNzICN7b2Zmc2V0Lmluc3BlY3R9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30i
IHVubGVzcyBvZmZzZXQuaXNfYT8gVmFyaWFibGUgb3Igb2Zmc2V0LmltbWVkaWF0ZT8KKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgY2hpbGRyZW4KKyAgICAgICAgW0BiYXNlLCBAb2Zmc2V0XQorICAg
IGVuZAorICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbgorICAgICAgICBBZGRyZXNzLm5ldyhjb2Rl
T3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQG9mZnNldCkpCisgICAgZW5kCisgICAgCisg
ICAgZGVmIGR1bXAKKyAgICAgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfV0iCisgICAg
ZW5kCisgICAgCisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGlt
bWVkaWF0ZT8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/
CisgICAgICAgIGZhbHNlCisgICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9kZQor
ICAgIGF0dHJfcmVhZGVyIDpiYXNlLCA6aW5kZXgsIDpzY2FsZSwgOm9mZnNldAorICAgIAorICAg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KQor
ICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAYmFzZSA9IGJhc2UKKyAgICAgICAg
QGluZGV4ID0gaW5kZXgKKyAgICAgICAgQHNjYWxlID0gc2NhbGUKKyAgICAgICAgcmFpc2UgdW5s
ZXNzIFsxLCAyLCA0LCA4XS5tZW1iZXI/IEBzY2FsZQorICAgICAgICBAb2Zmc2V0ID0gb2Zmc2V0
CisgICAgZW5kCisgICAgCisgICAgZGVmIHNjYWxlU2hpZnQKKyAgICAgICAgY2FzZSBzY2FsZQor
ICAgICAgICB3aGVuIDEKKyAgICAgICAgICAgIDAKKyAgICAgICAgd2hlbiAyCisgICAgICAgICAg
ICAxCisgICAgICAgIHdoZW4gNAorICAgICAgICAgICAgMgorICAgICAgICB3aGVuIDgKKyAgICAg
ICAgICAgIDMKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkJhZCBzY2FsZSBhdCAj
e2NvZGVPcmlnaW5TdHJpbmd9IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
Y2hpbGRyZW4KKyAgICAgICAgW0BiYXNlLCBAaW5kZXgsIEBvZmZzZXRdCisgICAgZW5kCisgICAg
CisgICAgZGVmIG1hcENoaWxkcmVuCisgICAgICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwg
KHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBpbmRleCksIEBzY2FsZSwgKHlpZWxkIEBvZmZzZXQpKQor
ICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICIje29mZnNldC5kdW1wfVsje2Jh
c2UuZHVtcH0sICN7aW5kZXguZHVtcH0sICN7c2NhbGV9XSIKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgYWRkcmVzcz8KKyAgICAgICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiBsYWJlbD8K
KyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaW1tZWRpYXRlPworICAgICAg
ICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAgICAgICAgZmFsc2UK
KyAgICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MgPCBOb0NoaWxkcmVuCisgICAg
YXR0cl9yZWFkZXIgOmFkZHJlc3MKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBhZGRyZXNzKQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAYWRkcmVzcyA9
IGFkZHJlc3MKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICAiI3thZGRyZXNz
LmR1bXB9W10iCisgICAgZW5kCisgICAgCisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIHRydWUK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisg
ICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgcmVnaXN0ZXI/CisgICAgICAgIGZhbHNlCisgICAgZW5kCitlbmQKKworY2xhc3MgSW5z
dHJ1Y3Rpb24gPCBOb2RlCisgICAgYXR0cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisgICAg
CisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgb3Bjb2RlLCBvcGVyYW5kcykKKyAgICAg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQG9wY29kZSA9IG9wY29kZQorICAgICAgICBA
b3BlcmFuZHMgPSBvcGVyYW5kcworICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAg
ICAgICBvcGVyYW5kcworICAgIGVuZAorICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykK
KyAgICAgICAgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5t
YXAoJnByb2MpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICJcdCIgKyBv
cGNvZGUudG9fcyArICIgIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAi
KQorICAgIGVuZAorZW5kCisKK2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgorICAgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4pCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgZW5kCisg
ICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIlx0ZXJyb3IiCisgICAgZW5kCitlbmQKKworY2xh
c3MgQ29uc3REZWNsIDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDp2YXJpYWJsZSwgOnZhbHVlCisg
ICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAg
ICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAdmFyaWFibGUgPSB2YXJpYWJsZQorICAg
ICAgICBAdmFsdWUgPSB2YWx1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAg
ICAgICBbQHZhcmlhYmxlLCBAdmFsdWVdCisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxk
cmVuCisgICAgICAgIENvbnN0RGVjbC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEB2YXJpYWJsZSks
ICh5aWVsZCBAdmFsdWUpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICJj
b25zdCAje0B2YXJpYWJsZS5kdW1wfSA9ICN7QHZhbHVlLmR1bXB9IgorICAgIGVuZAorZW5kCisK
KyRsYWJlbE1hcHBpbmcgPSB7fQorCitjbGFzcyBMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgICBhdHRy
X3JlYWRlciA6bmFtZQorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBuYW1lID0gbmFtZQorICAgIGVu
ZAorICAgIAorICAgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAg
aWYgJGxhYmVsTWFwcGluZ1tuYW1lXQorICAgICAgICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29s
bGlzaW9uOiAje25hbWV9IiB1bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMYWJlbAor
ICAgICAgICBlbHNlCisgICAgICAgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFiZWwubmV3
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVuZAorICAgICAgICAkbGFiZWxNYXBwaW5nW25h
bWVdCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIiN7bmFtZX06IgorICAg
IGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwgPCBOb0NoaWxkcmVuCisgICAgYXR0cl9yZWFk
ZXIgOm5hbWUKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAg
ICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAbmFtZSA9IG5hbWUKKyAgICBlbmQKKwor
ICAgIEBAdW5pcXVlTmFtZUNvdW50ZXIgPSAwCisgICAgCisgICAgZGVmIHNlbGYuZm9yTmFtZShj
b2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICAg
ICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxN
YXBwaW5nW25hbWVdLmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
JGxhYmVsTWFwcGluZ1tuYW1lXSA9IExvY2FsTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisg
ICAgICAgIGVuZAorICAgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgZW5kCisgICAgCisg
ICAgZGVmIHNlbGYudW5pcXVlKGNvbW1lbnQpCisgICAgICAgIG5ld05hbWUgPSAiXyN7Y29tbWVu
dH0iCisgICAgICAgIGlmICRsYWJlbE1hcHBpbmdbbmV3TmFtZV0KKyAgICAgICAgICAgIHdoaWxl
ICRsYWJlbE1hcHBpbmdbbmV3TmFtZSA9ICJfI3tAQHVuaXF1ZU5hbWVDb3VudGVyfV8je2NvbW1l
bnR9Il0KKyAgICAgICAgICAgICAgICBAQHVuaXF1ZU5hbWVDb3VudGVyICs9IDEKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgICAgZm9yTmFtZShuaWwsIG5ld05hbWUpCisgICAg
ZW5kCisgICAgCisgICAgZGVmIGNsZWFuTmFtZQorICAgICAgICBpZiBuYW1lID1+IC9eXC4vCisg
ICAgICAgICAgICAiXyIgKyBuYW1lWzEuLi0xXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBu
YW1lCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICIj
e25hbWV9OiIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZSA8IE5vZGUKKyAg
ICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBsYWJlbCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQGxhYmVsID0gbGFi
ZWwKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRyZW4KKyAgICAgICAgW0BsYWJlbF0KKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hpbGRyZW4KKyAgICAgICAgTGFiZWxSZWZlcmVuY2Uu
bmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBu
YW1lCisgICAgICAgIGxhYmVsLm5hbWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAg
ICAgICBsYWJlbC5uYW1lCisgICAgZW5kCisgICAgCisgICAgZGVmIGFkZHJlc3M/CisgICAgICAg
IGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGxhYmVsPworICAgICAgICB0cnVlCisgICAg
ZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5jZSA8IE5vQ2hpbGRyZW4KKyAgICBh
dHRyX3JlYWRlciA6bGFiZWwKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBs
YWJlbCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQGxhYmVsID0gbGFiZWwK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRyZW4KKyAgICAgICAgW0BsYWJlbF0KKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgbWFwQ2hpbGRyZW4KKyAgICAgICAgTG9jYWxMYWJlbFJlZmVyZW5j
ZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsYWJlbCkpCisgICAgZW5kCisgICAgCisgICAgZGVm
IG5hbWUKKyAgICAgICAgbGFiZWwubmFtZQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisg
ICAgICAgIGxhYmVsLm5hbWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAg
ICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIHRydWUKKyAg
ICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZSA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6bGlz
dAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxpc3QpCisgICAgICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBsaXN0ID0gbGlzdAorICAgIGVuZAorICAgIAorICAg
IGRlZiBjaGlsZHJlbgorICAgICAgICBsaXN0CisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENo
aWxkcmVuKCZwcm9jKQorICAgICAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgQGxpc3QubWFw
KCZwcm9jKSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICBsaXN0LmNvbGxl
Y3R7fHZ8IHYuZHVtcH0uam9pbigiXG4iKQorICAgIGVuZAorZW5kCisKK2NsYXNzIFRydWUgPCBO
b0NoaWxkcmVuCisgICAgZGVmIGluaXRpYWxpemUKKyAgICAgICAgc3VwZXIobmlsKQorICAgIGVu
ZAorICAgIAorICAgIEBAaW5zdGFuY2UgPSBUcnVlLm5ldworICAgIAorICAgIGRlZiBzZWxmLmlu
c3RhbmNlCisgICAgICAgIEBAaW5zdGFuY2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgdmFsdWUK
KyAgICAgICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICJ0cnVl
IgorICAgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNlIDwgTm9DaGlsZHJlbgorICAgIGRlZiBpbml0
aWFsaXplCisgICAgICAgIHN1cGVyKG5pbCkKKyAgICBlbmQKKyAgICAKKyAgICBAQGluc3RhbmNl
ID0gRmFsc2UubmV3CisgICAgCisgICAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICAgICAgQEBpbnN0
YW5jZQorICAgIGVuZAorICAgIAorICAgIGRlZiB2YWx1ZQorICAgICAgICBmYWxzZQorICAgIGVu
ZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICJmYWxzZSIKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBUcnVlQ2xhc3MKKyAgICBkZWYgYXNOb2RlCisgICAgICAgIFRydWUuaW5zdGFuY2UKKyAg
ICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZUNsYXNzCisgICAgZGVmIGFzTm9kZQorICAgICAgICBG
YWxzZS5pbnN0YW5jZQorICAgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcgPCBOb0NoaWxkcmVu
CisgICAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBuYW1lKQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAbmFtZSA9IG5h
bWUKKyAgICBlbmQKKyAgICAKKyAgICBAQG1hcHBpbmcgPSB7fQorICAgIAorICAgIGRlZiBzZWxm
LmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1l
XQorICAgICAgICAgICAgQEBtYXBwaW5nW25hbWVdID0gU2V0dGluZy5uZXcoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBAbWFwcGluZ1tuYW1lXQorICAgIGVuZAorICAg
IAorICAgIGRlZiBkdW1wCisgICAgICAgIG5hbWUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBBbmQg
PCBOb2RlCisgICAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAgIAorICAgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgICAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgICAgICBAbGVmdCA9IGxlZnQKKyAgICAgICAgQHJpZ2h0ID0gcmlnaHQKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgY2hpbGRyZW4KKyAgICAgICAgW0BsZWZ0LCBAcmlnaHRdCisgICAgZW5k
CisgICAgCisgICAgZGVmIG1hcENoaWxkcmVuCisgICAgICAgIEFuZC5uZXcoY29kZU9yaWdpbiwg
KHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1
bXAKKyAgICAgICAgIigje2xlZnQuZHVtcH0gYW5kICN7cmlnaHQuZHVtcH0pIgorICAgIGVuZAor
ZW5kCisKK2NsYXNzIE9yIDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAg
ICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICAgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQGxlZnQgPSBsZWZ0CisgICAgICAgIEByaWdodCA9
IHJpZ2h0CisgICAgZW5kCisgICAgCisgICAgZGVmIGNoaWxkcmVuCisgICAgICAgIFtAbGVmdCwg
QHJpZ2h0XQorICAgIGVuZAorICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbgorICAgICAgICBPci5u
ZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgICAgZW5kCisg
ICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIigje2xlZnQuZHVtcH0gb3IgI3tyaWdodC5kdW1w
fSkiCisgICAgZW5kCitlbmQKKworY2xhc3MgTm90IDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpj
aGlsZAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgICAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAY2hpbGQgPSBjaGlsZAorICAgIGVuZAorICAg
IAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBbQGxlZnQsIEByaWdodF0KKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgbWFwQ2hpbGRyZW4KKyAgICAgICAgTm90Lm5ldyhjb2RlT3JpZ2luLCAoeWll
bGQgQGNoaWxkKSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICAiKG5vdCAj
e2NoaWxkLmR1bXB9KSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBTa2lwIDwgTm9DaGlsZHJlbgor
ICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIlx0c2tpcCIKKyAgICBlbmQK
K2VuZAorCitjbGFzcyBJZlRoZW5FbHNlIDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpwcmVkaWNh
dGUsIDp0aGVuQ2FzZQorICAgIGF0dHJfYWNjZXNzb3IgOmVsc2VDYXNlCisgICAgCisgICAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZSkKKyAgICAgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICAgICAgQHByZWRpY2F0ZSA9IHByZWRpY2F0ZQorICAgICAgICBA
dGhlbkNhc2UgPSB0aGVuQ2FzZQorICAgICAgICBAZWxzZUNhc2UgPSBTa2lwLm5ldyhjb2RlT3Jp
Z2luKQorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBpZiBAZWxzZUNh
c2UKKyAgICAgICAgICAgIFtAcHJlZGljYXRlLCBAdGhlbkNhc2UsIEBlbHNlQ2FzZV0KKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZV0KKyAgICAgICAgZW5k
CisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxkcmVuCisgICAgICAgIElmVGhlbkVsc2Uu
bmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAcHJlZGljYXRlKSwgKHlpZWxkIEB0aGVuQ2FzZSksICh5
aWVsZCBAZWxzZUNhc2UpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICJp
ZiAje3ByZWRpY2F0ZS5kdW1wfVxuIiArIHRoZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsgZWxz
ZUNhc2UuZHVtcCArICJcbmVuZCIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBNYWNybyA8IE5vZGUK
KyAgICBhdHRyX3JlYWRlciA6bmFtZSwgOnZhcmlhYmxlcywgOmJvZHkKKyAgICAKKyAgICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBuYW1lID0gbmFtZQorICAgICAgICBAdmFyaWFibGVz
ID0gdmFyaWFibGVzCisgICAgICAgIEBib2R5ID0gYm9keQorICAgIGVuZAorICAgIAorICAgIGRl
ZiBjaGlsZHJlbgorICAgICAgICBAdmFyaWFibGVzICsgW0Bib2R5XQorICAgIGVuZAorICAgIAor
ICAgIGRlZiBtYXBDaGlsZHJlbgorICAgICAgICBNYWNyby5uZXcoY29kZU9yaWdpbiwgQG5hbWUs
IEB2YXJpYWJsZXMubWFwe3x2fCB5aWVsZCB2fSwgKHlpZWxkIEBib2R5KSkKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgZHVtcAorICAgICAgICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFibGVzLmNv
bGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSArICIpXG4iICsgYm9keS5kdW1wICsgIlxuZW5k
IgorICAgIGVuZAorZW5kCisKK2NsYXNzIE1hY3JvQ2FsbCA8IE5vZGUKKyAgICBhdHRyX3JlYWRl
ciA6bmFtZSwgOm9wZXJhbmRzCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bmFtZSwgb3BlcmFuZHMpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBuYW1l
ID0gbmFtZQorICAgICAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcworICAgICAgICByYWlzZSB1bmxl
c3MgQG9wZXJhbmRzCisgICAgICAgIEBvcGVyYW5kcy5lYWNoe3x2fCByYWlzZSB1bmxlc3Mgdn0K
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRyZW4KKyAgICAgICAgQG9wZXJhbmRzCisgICAg
ZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgICAgICBNYWNyb0NhbGwu
bmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgZHVtcAorICAgICAgICAiXHQje25hbWV9KCIgKyBvcGVyYW5kcy5jb2xsZWN0
e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKSIKKyAgICBlbmQKK2VuZAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDk2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCityZXF1aXJlICJhcm12NyIKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIng4NiIKKworQkFD
S0VORFMgPQorICAgIFsKKyAgICAgIlg4NiIsCisgICAgICJBUk12NyIKKyAgICBdCisKKyMgS2Vl
cCB0aGUgc2V0IG9mIHdvcmtpbmcgYmFja2VuZHMgc2VwYXJhdGUgZnJvbSB0aGUgc2V0IG9mIGJh
Y2tlbmRzIHRoYXQgbWlnaHQgYmUKKyMgc3VwcG9ydGVkLiBUaGlzIGlzIGdyZWF0IGJlY2F1c2Ug
dGhlIEJBQ0tFTkRTIGxpc3QgaXMgYWxtb3N0IGxpa2UgYSByZXNlcnZlZAorIyB3b3JkcyBsaXN0
LCBpbiB0aGF0IGl0IGNhdXNlcyBzZXR0aW5ncyByZXNvbHV0aW9uIHRvIHRyZWF0IHRob3NlIHdv
cmRzIHNwZWNpYWxseS4KKyMgSGVuY2UgdGhpcyBsZXRzIHVzIHNldCBhc2lkZSB0aGUgbmFtZSBv
ZiBhIGJhY2tlbmQgd2UgbWlnaHQgd2FudCB0byBzdXBwb3J0IGluCisjIHRoZSBmdXR1cmUgd2hp
bGUgbm90IGFjdHVhbGx5IHN1cHBvcnRpbmcgdGhlIGJhY2tlbmQgeWV0LgorV09SS0lOR19CQUNL
RU5EUyA9CisgICAgWworICAgICAiWDg2IiwKKyAgICAgIkFSTXY3IgorICAgIF0KKworQkFDS0VO
RF9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCcgKyBCQUNLRU5EUy5qb2luKCcpfCgnKSArICcp
XFxaJykKKworY2xhc3MgTm9kZQorICAgIGRlZiBsb3dlcihuYW1lKQorICAgICAgICBzZW5kKCJs
b3dlciIgKyBuYW1lKQorICAgIGVuZAorZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBsb3dlcigpIGZv
ciB0aG9zZSBub2RlcyB0aGF0IGFyZSBiYWNrZW5kLWFnbm9zdGljCisKK2NsYXNzIExhYmVsCisg
ICAgZGVmIGxvd2VyKG5hbWUpCisgICAgICAgICRhc20ucHV0c0xhYmVsKHNlbGYubmFtZVsxLi4t
MV0pCisgICAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbAorICAgIGRlZiBsb3dlcihuYW1l
KQorICAgICAgICAkYXNtLnB1dHNMb2NhbExhYmVsICJfb2ZmbGluZWFzbV8je3NlbGYubmFtZVsx
Li4tMV19IgorICAgIGVuZAorZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgICAgZGVmIGFz
bUxhYmVsCisgICAgICAgIEFzc2VtYmxlci5sYWJlbFJlZmVyZW5jZShuYW1lWzEuLi0xXSkKKyAg
ICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCisgICAgZGVmIGFzbUxhYmVs
CisgICAgICAgIEFzc2VtYmxlci5sb2NhbExhYmVsUmVmZXJlbmNlKCJfb2ZmbGluZWFzbV8iK25h
bWVbMS4uLTFdKQorICAgIGVuZAorZW5kCisKK2NsYXNzIFNraXAKKyAgICBkZWYgbG93ZXIobmFt
ZSkKKyAgICBlbmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICAgIGRlZiBsb3dlcihuYW1lKQor
ICAgICAgICBpZiByZXNwb25kX3RvPyAibG93ZXIje25hbWV9IgorICAgICAgICAgICAgc2VuZCgi
bG93ZXIje25hbWV9IikKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQGxpc3QuZWFjaCB7Cisg
ICAgICAgICAgICAgICAgfCBub2RlIHwKKyAgICAgICAgICAgICAgICBub2RlLmxvd2VyKG5hbWUp
CisgICAgICAgICAgICB9CisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVf
b2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTM2IEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVx
dWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNldHMi
CityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZWxmX2hhc2giCityZXF1aXJlICJzZXR0aW5n
cyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworaW5wdXRGbG5tID0gQVJHVi5zaGlmdAorb3V0cHV0
RmxubSA9IEFSR1Yuc2hpZnQKKworJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBQYXJzaW5nICN7
aW5wdXRGbG5tfSBhbmQgY3JlYXRpbmcgb2Zmc2V0IGV4dHJhY3RvciAje291dHB1dEZsbm19LiIK
KworZGVmIGVtaXRNYWdpY051bWJlcgorICAgIE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVhY2ggewor
ICAgICAgICB8IG51bWJlciB8CisgICAgICAgICRvdXRwdXQucHV0cyAiI3tudW1iZXJ9LCIKKyAg
ICB9CitlbmQKKworaW5wdXREYXRhID0gSU86OnJlYWQoaW5wdXRGbG5tKQoraW5wdXRIYXNoID0g
Ii8vIG9mZmxpbmVhc20gaW5wdXQgaGFzaDogI3tEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0
RGF0YSl9ICN7c2VsZkhhc2h9IgorCitpZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0RmxubQorICAg
IEZpbGUub3BlbihvdXRwdXRGbG5tLCAiciIpIHsKKyAgICAgICAgfCBpbnAgfAorICAgICAgICBm
aXJzdExpbmUgPSBpbnAuZ2V0cworICAgICAgICBpZiBmaXJzdExpbmUgYW5kIGZpcnN0TGluZS5j
aG9tcCA9PSBpbnB1dEhhc2gKKyAgICAgICAgICAgICRzdGRlcnIucHV0cyAib2ZmbGluZWFzbTog
Tm90aGluZyBjaGFuZ2VkLiIKKyAgICAgICAgICAgIGV4aXQgMAorICAgICAgICBlbmQKKyAgICB9
CitlbmQKKworb3JpZ2luYWxBU1QgPSBwYXJzZShsZXgoaW5wdXREYXRhKSkKKworIworIyBPcHRp
bWl6ZSB0aGUgQVNUIHRvIG1ha2UgY29uZmlndXJhdGlvbiBleHRyYWN0aW9uIGZhc3Rlci4gVGhp
cyByZWR1Y2VzIHRoZSBBU1QgdG8gYSBmb3JtCisjIHRoYXQgb25seSBjb250YWlucyB0aGUgdGhp
bmdzIHRoYXQgbWF0dGVyIGZvciBvdXIgcHVycG9zZXM6IG9mZnNldHMsIHNpemVzLCBhbmQgaWYK
KyMgc3RhdGVtZW50cy4KKyMKKworY2xhc3MgTm9kZQorICAgIGRlZiBvZmZzZXRzUHJ1bmVUbyhz
ZXF1ZW5jZSkKKyAgICAgICAgY2hpbGRyZW4uZWFjaCB7CisgICAgICAgICAgICB8IGNoaWxkIHwK
KyAgICAgICAgICAgIGNoaWxkLm9mZnNldHNQcnVuZVRvKHNlcXVlbmNlKQorICAgICAgICB9Cisg
ICAgZW5kCisgICAgCisgICAgZGVmIG9mZnNldHNQcnVuZQorICAgICAgICByZXN1bHQgPSBTZXF1
ZW5jZS5uZXcoY29kZU9yaWdpbiwgW10pCisgICAgICAgIG9mZnNldHNQcnVuZVRvKHJlc3VsdCkK
KyAgICAgICAgcmVzdWx0CisgICAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZQorICAgIGRl
ZiBvZmZzZXRzUHJ1bmVUbyhzZXF1ZW5jZSkKKyAgICAgICAgaWZUaGVuRWxzZSA9IElmVGhlbkVs
c2UubmV3KGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgdGhlbkNhc2Uub2Zmc2V0c1BydW5lKQorICAg
ICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNhc2Uub2Zmc2V0c1BydW5lCisgICAgICAg
IHNlcXVlbmNlLmxpc3QgPDwgaWZUaGVuRWxzZQorICAgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVj
dE9mZnNldAorICAgIGRlZiBvZmZzZXRzUHJ1bmVUbyhzZXF1ZW5jZSkKKyAgICAgICAgc2VxdWVu
Y2UubGlzdCA8PCBzZWxmCisgICAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mCisgICAgZGVmIG9m
ZnNldHNQcnVuZVRvKHNlcXVlbmNlKQorICAgICAgICBzZXF1ZW5jZS5saXN0IDw8IHNlbGYKKyAg
ICBlbmQKK2VuZAorCitwcnVuZWRBU1QgPSBvcmlnaW5hbEFTVC5vZmZzZXRzUHJ1bmUKKworRmls
ZS5vcGVuKG91dHB1dEZsbm0sICJ3IikgeworICAgIHwgb3V0cCB8CisgICAgJG91dHB1dCA9IG91
dHAKKyAgICBvdXRwLnB1dHMgaW5wdXRIYXNoCisgICAgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRp
b25zKHBydW5lZEFTVCkgeworICAgICAgICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4
IHwKKyAgICAgICAgb2Zmc2V0c0xpc3QgPSBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5z
b3J0CisgICAgICAgIHNpemVzTGlzdCA9IGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKKyAg
ICAgICAgCisgICAgICAgIGxlbmd0aCA9IChPRkZTRVRfTUFHSUNfTlVNQkVSUy5zaXplICsgMSkg
KiAoMSArIG9mZnNldHNMaXN0LnNpemUgKyBzaXplc0xpc3Quc2l6ZSkKKyAgICAgICAgCisgICAg
ICAgIG91dHAucHV0cyAic3RhdGljIGNvbnN0IHVuc2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVu
Z3RofV0gPSB7IgorICAgICAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICAgICAgb3V0cC5wdXRzICIj
e2luZGV4fSwiCisgICAgICAgIG9mZnNldHNMaXN0LmVhY2ggeworICAgICAgICAgICAgfCBvZmZz
ZXQgfAorICAgICAgICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICAgICAgICBvdXRwLnB1dHMg
Ik9GRkxJTkVfQVNNX09GRlNFVE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSks
IgorICAgICAgICB9CisgICAgICAgIHNpemVzTGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgb2Zm
c2V0IHwKKyAgICAgICAgICAgIGVtaXRNYWdpY051bWJlcgorICAgICAgICAgICAgb3V0cC5wdXRz
ICJzaXplb2YoI3tvZmZzZXQuc3RydWN0fSksIgorICAgICAgICB9CisgICAgICAgIG91dHAucHV0
cyAifTsiCisgICAgfQorfQorCiskc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IG9mZnNldCBleHRy
YWN0b3IgI3tvdXRwdXRGbG5tfSBzdWNjZXNzZnVsbHkgZ2VuZXJhdGVkLiIKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9u
cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMTcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyMgSW50ZXJlc3RpbmcgaW52YXJpYW50LCB3aGljaCB3ZSB0YWtl
IGFkdmFudGFnZSBvZjogYnJhbmNoaW5nIGluc3RydWN0aW9ucworIyBhbHdheXMgYmVnaW4gd2l0
aCAiYiIsIGFuZCBubyBub24tYnJhbmNoaW5nIGluc3RydWN0aW9ucyBiZWdpbiB3aXRoICJiIi4K
KyMgVGVybWluYWwgaW5zdHJ1Y3Rpb25zIGFyZSAiam1wIiBhbmQgInJldCIuCisKK01BQ1JPX0lO
U1RSVUNUSU9OUyA9CisgICAgWworICAgICAiYWRkaSIsCisgICAgICJhbmRpIiwKKyAgICAgImxz
aGlmdGkiLAorICAgICAibXVsaSIsCisgICAgICJuZWdpIiwKKyAgICAgIm5vdGkiLAorICAgICAi
b3JpIiwKKyAgICAgInJzaGlmdGkiLAorICAgICAidXJzaGlmdGkiLAorICAgICAic3ViaSIsCisg
ICAgICJ4b3JpIiwKKyAgICAgImxvYWRpIiwKKyAgICAgImxvYWRiIiwKKyAgICAgImxvYWRicyIs
CisgICAgICJsb2FkaCIsCisgICAgICJsb2FkaHMiLAorICAgICAic3RvcmVpIiwKKyAgICAgInN0
b3JlYiIsCisgICAgICJsb2FkZCIsCisgICAgICJtb3ZlZCIsCisgICAgICJzdG9yZWQiLAorICAg
ICAiYWRkZCIsCisgICAgICJkaXZkIiwKKyAgICAgInN1YmQiLAorICAgICAibXVsZCIsCisgICAg
ICJzcXJ0ZCIsCisgICAgICJjaTJkIiwKKyAgICAgImZpaTJkIiwgIyB1c2FnZTogZmlpMmQgPGdw
ciB3aXRoIGxlYXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2Fu
dCBiaXRzPiwgPGZwcj4KKyAgICAgImZkMmlpIiwgIyB1c2FnZTogZmQyaWkgPGZwcj4sIDxncHIg
d2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQg
Yml0cz4KKyAgICAgImJkZXEiLAorICAgICAiYmRuZXEiLAorICAgICAiYmRndCIsCisgICAgICJi
ZGd0ZXEiLAorICAgICAiYmRsdCIsCisgICAgICJiZGx0ZXEiLAorICAgICAiYmRlcXVuIiwKKyAg
ICAgImJkbmVxdW4iLAorICAgICAiYmRndHVuIiwKKyAgICAgImJkZ3RlcXVuIiwKKyAgICAgImJk
bHR1biIsCisgICAgICJiZGx0ZXF1biIsCisgICAgICJidGQyaSIsCisgICAgICJ0ZDJpIiwKKyAg
ICAgImJjZDJpIiwKKyAgICAgIm1vdmR6IiwKKyAgICAgInBvcCIsCisgICAgICJwdXNoIiwKKyAg
ICAgIm1vdmUiLAorICAgICAic3hpMnAiLAorICAgICAienhpMnAiLAorICAgICAibm9wIiwKKyAg
ICAgImJpZXEiLAorICAgICAiYmluZXEiLAorICAgICAiYmlhIiwKKyAgICAgImJpYWVxIiwKKyAg
ICAgImJpYiIsCisgICAgICJiaWJlcSIsCisgICAgICJiaWd0IiwKKyAgICAgImJpZ3RlcSIsCisg
ICAgICJiaWx0IiwKKyAgICAgImJpbHRlcSIsCisgICAgICJiYmVxIiwKKyAgICAgImJibmVxIiwK
KyAgICAgImJiYSIsCisgICAgICJiYmFlcSIsCisgICAgICJiYmIiLAorICAgICAiYmJiZXEiLAor
ICAgICAiYmJndCIsCisgICAgICJiYmd0ZXEiLAorICAgICAiYmJsdCIsCisgICAgICJiYmx0ZXEi
LAorICAgICAiYnRpbyIsCisgICAgICJidGlzIiwKKyAgICAgImJ0aXoiLAorICAgICAiYnRpbnoi
LAorICAgICAiYnRibyIsCisgICAgICJidGJzIiwKKyAgICAgImJ0YnoiLAorICAgICAiYnRibnoi
LAorICAgICAiam1wIiwKKyAgICAgImJhZGRpbyIsCisgICAgICJiYWRkaXMiLAorICAgICAiYmFk
ZGl6IiwKKyAgICAgImJhZGRpbnoiLAorICAgICAiYnN1YmlvIiwKKyAgICAgImJzdWJpcyIsCisg
ICAgICJic3ViaXoiLAorICAgICAiYnN1YmlueiIsCisgICAgICJibXVsaW8iLAorICAgICAiYm11
bGlzIiwKKyAgICAgImJtdWxpeiIsCisgICAgICJibXVsaW56IiwKKyAgICAgImJvcmlvIiwKKyAg
ICAgImJvcmlzIiwKKyAgICAgImJvcml6IiwKKyAgICAgImJvcmlueiIsCisgICAgICJicmVhayIs
CisgICAgICJjYWxsIiwKKyAgICAgInJldCIsCisgICAgICJjaWVxIiwKKyAgICAgImNpbmVxIiwK
KyAgICAgImNpYSIsCisgICAgICJjaWFlcSIsCisgICAgICJjaWIiLAorICAgICAiY2liZXEiLAor
ICAgICAiY2lndCIsCisgICAgICJjaWd0ZXEiLAorICAgICAiY2lsdCIsCisgICAgICJjaWx0ZXEi
LAorICAgICAidGlvIiwKKyAgICAgInRpcyIsCisgICAgICJ0aXoiLAorICAgICAidGlueiIsCisg
ICAgICJ0Ym8iLAorICAgICAidGJzIiwKKyAgICAgInRieiIsCisgICAgICJ0Ym56IiwKKyAgICAg
InBlZWsiLAorICAgICAicG9rZSIsCisgICAgICJicGVxIiwKKyAgICAgImJwbmVxIiwKKyAgICAg
ImJwYSIsCisgICAgICJicGFlcSIsCisgICAgICJicGIiLAorICAgICAiYnBiZXEiLAorICAgICAi
YnBndCIsCisgICAgICJicGd0ZXEiLAorICAgICAiYnBsdCIsCisgICAgICJicGx0ZXEiLAorICAg
ICAiYWRkcCIsCisgICAgICJhbmRwIiwKKyAgICAgIm9ycCIsCisgICAgICJzdWJwIiwKKyAgICAg
InhvcnAiLAorICAgICAibG9hZHAiLAorICAgICAiY3BlcSIsCisgICAgICJjcG5lcSIsCisgICAg
ICJjcGEiLAorICAgICAiY3BhZXEiLAorICAgICAiY3BiIiwKKyAgICAgImNwYmVxIiwKKyAgICAg
ImNwZ3QiLAorICAgICAiY3BndGVxIiwKKyAgICAgImNwbHQiLAorICAgICAiY3BsdGVxIiwKKyAg
ICAgInN0b3JlcCIsCisgICAgICJidHBvIiwKKyAgICAgImJ0cHMiLAorICAgICAiYnRweiIsCisg
ICAgICJidHBueiIsCisgICAgICJiYWRkcG8iLAorICAgICAiYmFkZHBzIiwKKyAgICAgImJhZGRw
eiIsCisgICAgICJiYWRkcG56IiwKKyAgICAgImJvIiwKKyAgICAgImJzIiwKKyAgICAgImJ6IiwK
KyAgICAgImJueiIsCisgICAgICJsZWFpIiwKKyAgICAgImxlYXAiLAorICAgIF0KKworWDg2X0lO
U1RSVUNUSU9OUyA9CisgICAgWworICAgICAiY2RxaSIsCisgICAgICJpZGl2aSIKKyAgICBdCisK
K0FSTXY3X0lOU1RSVUNUSU9OUyA9CisgICAgWworICAgICAic211bGxpIiwKKyAgICAgImFkZGlz
IiwKKyAgICAgInN1YmlzIiwKKyAgICAgIm9yaXMiCisgICAgXQorCitJTlNUUlVDVElPTlMgPSBN
QUNST19JTlNUUlVDVElPTlMgKyBYODZfSU5TVFJVQ1RJT05TICsgQVJNdjdfSU5TVFJVQ1RJT05T
CisKK0lOU1RSVUNUSU9OX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElP
TlMuam9pbignKXwoJykgKyAnKSlcXFonKQorCitkZWYgaXNCcmFuY2goaW5zdHJ1Y3Rpb24pCisg
ICAgaW5zdHJ1Y3Rpb24gPX4gL15iLworZW5kCisKK2RlZiBoYXNGYWxsVGhyb3VnaChpbnN0cnVj
dGlvbikKKyAgICBpbnN0cnVjdGlvbiAhPSAicmV0IiBhbmQgaW5zdHJ1Y3Rpb24gIT0gImptcCIK
K2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0
cmFjdG9yX2NvbnN0YW50cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3Rh
bnRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCitNQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVl
NzU1IF0KKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRz
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNl
dHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9v
ZmZzZXRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1MCBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4
dHJhY3Rvcl9jb25zdGFudHMiCisKK09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3
LCAweDBmZjVlNzU1IF0KKworIworIyBvZmZzZXRzTGlzdChhc3QpCisjIHNpemVzTGlzdChhc3Qp
CisjCisjIFJldHVybnMgYSBsaXN0IG9mIG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhlIEFT
VC4KKyMKKworZGVmIG9mZnNldHNMaXN0KGFzdCkKKyAgICBhc3QuZmlsdGVyKFN0cnVjdE9mZnNl
dCkudW5pcS5zb3J0CitlbmQKKworZGVmIHNpemVzTGlzdChhc3QpCisgICAgYXN0LmZpbHRlcihT
aXplb2YpLnVuaXEuc29ydAorZW5kCisKKyMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRl
eChhc3QsIGZpbGUpIC0+CisjICAgICBbb2Zmc2V0cywgaW5kZXhdCisjCisjIFBhcnNlcyB0aGUg
b2Zmc2V0cyBmcm9tIGEgZmlsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgdGhl
CisjIGluZGV4IG9mIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgaXMgdmFsaWQgaW4gdGhpcyBidWls
ZCB0YXJnZXQuCisjCisKK2RlZiBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUpCisg
ICAgaW5kZXggPSBuaWwKKyAgICBvZmZzZXRzID0gW10KKyAgICBlbmRpYW5uZXNzTWFya2VyQnl0
ZXMgPSBuaWwKKyAgICAKKyAgICBkZWYgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAg
IGJ5dGVzID0gW10KKyAgICAgICAgNC50aW1lcyB7CisgICAgICAgICAgICBieXRlcyA8PCBpbnAu
Z2V0Ynl0ZQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiBlbmRpYW5uZXNzID09IDps
aXR0bGUKKyAgICAgICAgICAgICMgTGl0dGxlIGVuZGlhbgorICAgICAgICAgICAgKGJ5dGVzWzBd
IDw8IDAgfAorICAgICAgICAgICAgIGJ5dGVzWzFdIDw8IDggfAorICAgICAgICAgICAgIGJ5dGVz
WzJdIDw8IDE2IHwKKyAgICAgICAgICAgICBieXRlc1szXSA8PCAyNCkKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgIyBCaWcgZW5kaWFuCisgICAgICAgICAgICAoYnl0ZXNbMF0gPDwgMjQgfAor
ICAgICAgICAgICAgIGJ5dGVzWzFdIDw8IDE2IHwKKyAgICAgICAgICAgICBieXRlc1syXSA8PCA4
IHwKKyAgICAgICAgICAgICBieXRlc1szXSA8PCAwKQorICAgICAgICBlbmQKKyAgICBlbmQKKyAg
ICAKKyAgICBbOmxpdHRsZSwgOmJpZ10uZWFjaCB7CisgICAgICAgIHwgZW5kaWFubmVzcyB8Cisg
ICAgICAgIG1hZ2ljQnl0ZXMgPSBbXQorICAgICAgICBNQUdJQ19OVU1CRVJTLmVhY2ggeworICAg
ICAgICAgICAgfCBudW1iZXIgfAorICAgICAgICAgICAgY3VycmVudEJ5dGVzID0gW10KKyAgICAg
ICAgICAgIDQudGltZXMgeworICAgICAgICAgICAgICAgIGN1cnJlbnRCeXRlcyA8PCAobnVtYmVy
ICYgMHhmZikKKyAgICAgICAgICAgICAgICBudW1iZXIgPj49IDgKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIGVuZGlhbm5lc3MgPT0gOmJpZworICAgICAgICAgICAgICAgIGN1cnJlbnRC
eXRlcy5yZXZlcnNlIQorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBtYWdpY0J5dGVzICs9
IGN1cnJlbnRCeXRlcworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBGaWxlLm9wZW4oZmls
ZSwgInIiKSB7CisgICAgICAgICAgICB8IGlucCB8CisgICAgICAgICAgICB3aGVyZUluTWFya2Vy
ID0gMAorICAgICAgICAgICAgbG9vcCB7CisgICAgICAgICAgICAgICAgYnl0ZSA9IGlucC5nZXRi
eXRlCisgICAgICAgICAgICAgICAgYnJlYWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgICAgICAgICBp
ZiBieXRlID09IG1hZ2ljQnl0ZXNbd2hlcmVJbk1hcmtlcl0KKyAgICAgICAgICAgICAgICAgICAg
d2hlcmVJbk1hcmtlciArPSAxCisgICAgICAgICAgICAgICAgICAgIGlmIHdoZXJlSW5NYXJrZXIg
PT0gbWFnaWNCeXRlcy5zaXplCisgICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGhhdmUgYSBt
YXRjaCEgSWYgd2UgaGF2ZSBub3QgeWV0IHJlYWQgdGhlIGVuZGlhbm5lc3MgbWFya2VyIGFuZCBp
bmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlbiByZWFkIHRob3NlIG5vdzsgb3Ro
ZXJ3aXNlIHJlYWQgYW4gb2Zmc2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiBub3QgaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmRleCA9IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldHMgPDwgcmVhZEludChl
bmRpYW5uZXNzLCBpbnApCisgICAgICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAg
ICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAK
KyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICAgICAgICAgIGVuZAorICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBicmVhayBpZiBpbmRleAorICAg
IH0KKyAgICAKKyAgICByYWlzZSB1bmxlc3MgaW5kZXgKKyAgICAKKyAgICBbb2Zmc2V0cywgaW5k
ZXhdCitlbmQKKworIworIyBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkgLT4gW29m
ZnNldHMsIHNpemVzXQorIworIyBCdWlsZHMgYSBtYXBwaW5nIGJldHdlZW4gU3RydWN0T2Zmc2V0
IG5vZGVzIGFuZCB0aGVpciB2YWx1ZXMuCisjCisKK2RlZiBidWlsZE9mZnNldHNNYXAoYXN0LCBv
ZmZzZXRzTGlzdCkKKyAgICBvZmZzZXRzTWFwID0ge30KKyAgICBzaXplc01hcCA9IHt9CisgICAg
YXN0T2Zmc2V0c0xpc3QgPSBvZmZzZXRzTGlzdChhc3QpCisgICAgYXN0U2l6ZXNMaXN0ID0gc2l6
ZXNMaXN0KGFzdCkKKyAgICByYWlzZSB1bmxlc3MgYXN0T2Zmc2V0c0xpc3Quc2l6ZSArIGFzdFNp
emVzTGlzdC5zaXplID09IG9mZnNldHNMaXN0LnNpemUKKyAgICBvZmZzZXRzTGlzdChhc3QpLmVh
Y2hfd2l0aF9pbmRleCB7CisgICAgICAgIHwgc3RydWN0T2Zmc2V0LCBpbmRleCB8CisgICAgICAg
IG9mZnNldHNNYXBbc3RydWN0T2Zmc2V0XSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgICAgfQorICAg
IHNpemVzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7CisgICAgICAgIHwgc2l6ZW9mLCBpbmRl
eCB8CisgICAgICAgIHNpemVzTWFwW3NpemVvZl0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICAgIH0K
KyAgICBbb2Zmc2V0c01hcCwgc2l6ZXNNYXBdCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vb3B0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL29wdC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL29wdC5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzQgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKKworIwor
IyAiT3B0aW1pemF0aW9uIiBwYXNzZXMuIFRoZXNlIGFyZSB1c2VkIHRvIGxvd2VyIHRoZSByZXBy
ZXNlbnRhdGlvbiBmb3IKKyMgYmFja2VuZHMgdGhhdCBjYW5ub3QgaGFuZGxlIHNvbWUgb2Ygb3Vy
IGhpZ2hlci1sZXZlbCBpbnN0cnVjdGlvbnMuCisjCisKKyMKKyMgQSB0ZW1wb3JhcnkgLSBhIHZh
cmlhYmxlIHRoYXQgd2lsbCBiZSBhbGxvY2F0ZWQgdG8gYSByZWdpc3RlciBhZnRlciB3ZSdyZQor
IyBkb25lLgorIworCitjbGFzcyBOb2RlCisgICAgZGVmIHJlcGxhY2VUZW1wb3Jhcmllc1dpdGhS
ZWdpc3RlcnMoa2luZCkKKyAgICAgICAgbWFwQ2hpbGRyZW4geworICAgICAgICAgICAgfCBub2Rl
IHwKKyAgICAgICAgICAgIG5vZGUucmVwbGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lzdGVycyhraW5k
KQorICAgICAgICB9CisgICAgZW5kCitlbmQKKworY2xhc3MgVG1wIDwgTm9DaGlsZHJlbgorICAg
IGF0dHJfcmVhZGVyIDpmaXJzdE1lbnRpb24sIDpsYXN0TWVudGlvbgorICAgIGF0dHJfcmVhZGVy
IDpraW5kCisgICAgYXR0cl9hY2Nlc3NvciA6cmVnaXN0ZXIKKworICAgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIGtpbmQpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBr
aW5kID0ga2luZAorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICIkdG1wI3tv
YmplY3RfaWR9IgorICAgIGVuZAorICAgIAorICAgIGRlZiBtZW50aW9uIShwb3NpdGlvbikKKyAg
ICAgICAgaWYgbm90IEBmaXJzdE1lbnRpb24gb3IgcG9zaXRpb24gPCBAZmlyc3RNZW50aW9uCisg
ICAgICAgICAgICBAZmlyc3RNZW50aW9uID0gcG9zaXRpb24KKyAgICAgICAgZW5kCisgICAgICAg
IGlmIG5vdCBAbGFzdE1lbnRpb24gb3IgcG9zaXRpb24gPiBAbGFzdE1lbnRpb24KKyAgICAgICAg
ICAgIEBsYXN0TWVudGlvbiA9IHBvc2l0aW9uCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAor
ICAgIGRlZiByZXBsYWNlVGVtcG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgICAgIGlm
IEBraW5kID09IGtpbmQKKyAgICAgICAgICAgIHJhaXNlICJEaWQgbm90IGFsbG9jYXRlIHJlZ2lz
dGVyIHRvIHRlbXBvcmFyeSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgQHJlZ2lzdGVy
CisgICAgICAgICAgICBAcmVnaXN0ZXIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VsZgor
ICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFs
c2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5k
CisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgcmVnaXN0ZXI/CisgICAgICAgIHRydWUKKyAgICBlbmQKK2VuZAorCisjIEFzc2ln
biByZWdpc3RlcnMgdG8gdGVtcG9yYXJpZXMsIGJ5IGZpbmRpbmcgd2hpY2ggdGVtcG9yYXJpZXMg
aW50ZXJmZXJlCisjIHdpdGggZWFjaCBvdGhlci4gTm90ZSB0aGF0IHRoaXMgcmVsaWVzIG9uIHRl
bXBvcmFyeSBsaXZlIHJhbmdlcyBub3QgY3Jvc3NpbmcKKyMgYmFzaWMgYmxvY2sgYm91bmRhcmll
cy4KKworZGVmIGFzc2lnblJlZ2lzdGVyc1RvVGVtcG9yYXJpZXMobGlzdCwga2luZCwgcmVnaXN0
ZXJzKQorICAgIGxpc3QuZWFjaF93aXRoX2luZGV4IHsKKyAgICAgICAgfCBub2RlLCBpbmRleCB8
CisgICAgICAgIG5vZGUuZmlsdGVyKFRtcCkudW5pcS5lYWNoIHsKKyAgICAgICAgICAgIHwgdG1w
IHwKKyAgICAgICAgICAgIGlmIHRtcC5raW5kID09IGtpbmQKKyAgICAgICAgICAgICAgICB0bXAu
bWVudGlvbiEgaW5kZXgKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgfQorICAgIAor
ICAgIGZyZWVSZWdpc3RlcnMgPSByZWdpc3RlcnMuZHVwCisgICAgbGlzdC5lYWNoX3dpdGhfaW5k
ZXggeworICAgICAgICB8IG5vZGUsIGluZGV4IHwKKyAgICAgICAgdG1wTGlzdCA9IG5vZGUuZmls
dGVyKFRtcCkudW5pcQorICAgICAgICB0bXBMaXN0LmVhY2ggeworICAgICAgICAgICAgfCB0bXAg
fAorICAgICAgICAgICAgaWYgdG1wLmtpbmQgPT0ga2luZCBhbmQgdG1wLmZpcnN0TWVudGlvbiA9
PSBpbmRleAorICAgICAgICAgICAgICAgIHJhaXNlICJDb3VsZCBub3QgYWxsb2NhdGUgcmVnaXN0
ZXIgdG8gdGVtcG9yYXJ5IGF0ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIgaWYgZnJlZVJlZ2lz
dGVycy5lbXB0eT8KKyAgICAgICAgICAgICAgICB0bXAucmVnaXN0ZXIgPSBmcmVlUmVnaXN0ZXJz
LnBvcAorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgdG1wTGlzdC5lYWNoIHsK
KyAgICAgICAgICAgIHwgdG1wIHwKKyAgICAgICAgICAgIGlmIHRtcC5raW5kID09IGtpbmQgYW5k
IHRtcC5sYXN0TWVudGlvbiA9PSBpbmRleAorICAgICAgICAgICAgICAgIGZyZWVSZWdpc3RlcnMu
cHVzaCB0bXAucmVnaXN0ZXIKKyAgICAgICAgICAgICAgICByYWlzZSAiUmVnaXN0ZXIgYWxsb2Nh
dGlvbiBpbmNvbnNpc3RlbmN5IGF0ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIgaWYgZnJlZVJl
Z2lzdGVycy5zaXplID4gcmVnaXN0ZXJzLnNpemUKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9
CisgICAgfQorICAgIAorICAgIGxpc3QubWFwIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAg
bm9kZS5yZXBsYWNlVGVtcG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgfQorZW5kCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTg1IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJpbnN0cnVjdGlvbnMiCityZXF1aXJl
ICJyZWdpc3RlcnMiCisKK2NsYXNzIFRva2VuCisgICAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4s
IDpzdHJpbmcKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJpbmcpCisg
ICAgICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdpbgorICAgICAgICBAc3RyaW5nID0gc3RyaW5n
CisgICAgZW5kCisgICAgCisgICAgZGVmID09KG90aGVyKQorICAgICAgICBpZiBvdGhlci5pc19h
PyBUb2tlbgorICAgICAgICAgICAgQHN0cmluZyA9PSBvdGhlci5zdHJpbmcKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgQHN0cmluZyA9PSBvdGhlcgorICAgICAgICBlbmQKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgPX4ob3RoZXIpCisgICAgICAgIEBzdHJpbmcgPX4gb3RoZXIKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgdG9fcworICAgICAgICAiI3tAc3RyaW5nLmluc3BlY3R9IGF0IGxpbmUg
I3tjb2RlT3JpZ2lufSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VFcnJvcigqY29tbWVu
dCkKKyAgICAgICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgICAgICAgIHJhaXNlICJQYXJzZSBl
cnJvcjogI3t0b19zfSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIlBhcnNlIGVy
cm9yOiAje3RvX3N9OiAje2NvbW1lbnRbMF19IgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAor
CisjCisjIFRoZSBsZXhlci4gVGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYW4gYXJyYXkgb2Yg
dG9rZW5zLgorIworCitkZWYgbGV4KHN0cikKKyAgICByZXN1bHQgPSBbXQorICAgIGxpbmVOdW1i
ZXIgPSAxCisgICAgd2hpbGUgbm90IHN0ci5lbXB0eT8KKyAgICAgICAgY2FzZSBzdHIKKyAgICAg
ICAgd2hlbiAvXEFcIyhbXlxuXSopLworICAgICAgICAgICAgIyBjb21tZW50LCBpZ25vcmUKKyAg
ICAgICAgd2hlbiAvXEFcbi8KKyAgICAgICAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51
bWJlciwgJCYpCisgICAgICAgICAgICBsaW5lTnVtYmVyICs9IDEKKyAgICAgICAgd2hlbiAvXEFb
YS16QS1aXShbYS16QS1aMC05X10qKS8KKyAgICAgICAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXco
bGluZU51bWJlciwgJCYpCisgICAgICAgIHdoZW4gL1xBXC4oW2EtekEtWjAtOV9dKikvCisgICAg
ICAgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAgICB3aGVu
IC9cQV8oW2EtekEtWjAtOV9dKikvCisgICAgICAgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxp
bmVOdW1iZXIsICQmKQorICAgICAgICB3aGVuIC9cQShbIFx0XSspLworICAgICAgICAgICAgIyB3
aGl0ZXNwYWNlLCBpZ25vcmUKKyAgICAgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSspLworICAg
ICAgICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAg
ICAgICAgd2hlbiAvXEEwKFswLTddKykvCisgICAgICAgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3
KGxpbmVOdW1iZXIsICQmLm9jdC50b19zKQorICAgICAgICB3aGVuIC9cQShbMC05XSspLworICAg
ICAgICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICAgICAgd2hl
biAvXEE6Oi8KKyAgICAgICAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYp
CisgICAgICAgIHdoZW4gL1xBWzosXChcKVxbXF09XCtcLSpdLworICAgICAgICAgICAgcmVzdWx0
IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cmFpc2UgIkxleGVyIGVycm9yIGF0IGxpbmUgbnVtYmVyICN7bGluZU51bWJlcn0sIHVuZXhwZWN0
ZWQgc2VxdWVuY2UgI3tzdHJbMC4uMjBdLmluc3BlY3R9IgorICAgICAgICBlbmQKKyAgICAgICAg
c3RyID0gJH4ucG9zdF9tYXRjaAorICAgIGVuZAorICAgIHJlc3VsdAorZW5kCisKKyMKKyMgVG9r
ZW4gaWRlbnRpZmljYXRpb24uCisjCisKK2RlZiBpc1JlZ2lzdGVyKHRva2VuKQorICAgIHRva2Vu
ID1+IFJFR0lTVEVSX1BBVFRFUk4KK2VuZAorCitkZWYgaXNJbnN0cnVjdGlvbih0b2tlbikKKyAg
ICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzS2V5d29yZCh0b2tl
bikKKyAgICB0b2tlbiA9fiAvXEEoKHRydWUpfChmYWxzZSl8KGlmKXwodGhlbil8KGVsc2UpfChl
bHNpZil8KGVuZCl8KGFuZCl8KG9yKXwobm90KXwobWFjcm8pfChjb25zdCl8KHNpemVvZil8KGVy
cm9yKSlcWi8gb3IKKyAgICAgICAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTiBvcgorICAgICAg
ICB0b2tlbiA9fiBJTlNUUlVDVElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzSWRlbnRpZmllcih0
b2tlbikKKyAgICB0b2tlbiA9fiAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKVxaLyBhbmQgbm90
IGlzS2V5d29yZCh0b2tlbikKK2VuZAorCitkZWYgaXNMYWJlbCh0b2tlbikKKyAgICB0b2tlbiA9
fiAvXEFfKFthLXpBLVowLTlfXSopXFovCitlbmQKKworZGVmIGlzTG9jYWxMYWJlbCh0b2tlbikK
KyAgICB0b2tlbiA9fiAvXEFcLihbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc1Zhcmlh
YmxlKHRva2VuKQorICAgIGlzSWRlbnRpZmllcih0b2tlbikgb3IgaXNSZWdpc3Rlcih0b2tlbikK
K2VuZAorCitkZWYgaXNJbnRlZ2VyKHRva2VuKQorICAgIHRva2VuID1+IC9cQVswLTldLworZW5k
CisKKyMKKyMgVGhlIHBhcnNlci4gVGFrZXMgYW4gYXJyYXkgb2YgdG9rZW5zIGFuZCByZXR1cm5z
IGFuIEFTVC4gTWV0aG9kcworIyBvdGhlciB0aGFuIHBhcnNlKHRva2VucykgYXJlIG5vdCBmb3Ig
cHVibGljIGNvbnN1bXB0aW9uLgorIworCitjbGFzcyBQYXJzZXIKKyAgICBkZWYgaW5pdGlhbGl6
ZSh0b2tlbnMpCisgICAgICAgIEB0b2tlbnMgPSB0b2tlbnMKKyAgICAgICAgQGlkeCA9IDAKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICAgICAgaWYgQHRv
a2Vuc1tAaWR4XQorICAgICAgICAgICAgQHRva2Vuc1tAaWR4XS5wYXJzZUVycm9yKCpjb21tZW50
KQorICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgICAg
ICAgICAgIHJhaXNlICJQYXJzZSBlcnJvciBhdCBlbmQgb2YgZmlsZSIKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZpbGU6ICN7
Y29tbWVudFswXX0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAg
CisgICAgZGVmIGNvbnN1bWUocmVnZXhwKQorICAgICAgICBpZiByZWdleHAKKyAgICAgICAgICAg
IHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPX4gcmVnZXhwCisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEBpZHggPT0gQHRva2Vucy5sZW5ndGgKKyAg
ICAgICAgZW5kCisgICAgICAgIEBpZHggKz0gMQorICAgIGVuZAorICAgIAorICAgIGRlZiBza2lw
TmV3TGluZQorICAgICAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VQcmVk
aWNhdGVBdG9tCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm5vdCIKKyAgICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgICAgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgICAgIGVsc2lm
IEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAg
IHNraXBOZXdMaW5lCisgICAgICAgICAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZQorICAgICAg
ICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgICAgcmVzdWx0CisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gInRydWUiCisgICAgICAgICAgICByZXN1bHQgPSBUcnVlLmluc3RhbmNlCisgICAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNpZiBAdG9rZW5z
W0BpZHhdID09ICJmYWxzZSIKKyAgICAgICAgICAgIHJlc3VsdCA9IEZhbHNlLmluc3RhbmNlCisg
ICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNpZiBp
c0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgICAgICAgcmVzdWx0ID0gU2V0dGluZy5m
b3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisg
ICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNlCisg
ICAgICAgICAgICBwYXJzZUVycm9yCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRl
ZiBwYXJzZVByZWRpY2F0ZUFuZAorICAgICAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUF0b20K
KyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiYW5kIgorICAgICAgICAgICAgY29kZU9y
aWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0
ZUF0b20KKyAgICAgICAgICAgIHJlc3VsdCA9IEFuZC5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCBy
aWdodCkKKyAgICAgICAgZW5kCisgICAgICAgIHJlc3VsdAorICAgIGVuZAorICAgIAorICAgIGRl
ZiBwYXJzZVByZWRpY2F0ZQorICAgICAgICAjIHNvbWUgZXhhbXBsZXMgb2YgcHJlY2VkZW5jZToK
KyAgICAgICAgIyBub3QgYSBhbmQgYiAtPiAobm90IGEpIGFuZCBiCisgICAgICAgICMgYSBhbmQg
YiBvciBjIC0+IChhIGFuZCBiKSBvciBjCisgICAgICAgICMgYSBvciBiIGFuZCBjIC0+IGEgb3Ig
KGIgYW5kIGMpCisgICAgICAgIAorICAgICAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUFuZAor
ICAgICAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICJvciIKKyAgICAgICAgICAgIGNvZGVPcmln
aW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVB
bmQKKyAgICAgICAgICAgIHJlc3VsdCA9IE9yLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0
KQorICAgICAgICBlbmQKKyAgICAgICAgcmVzdWx0CisgICAgZW5kCisgICAgCisgICAgZGVmIHBh
cnNlVmFyaWFibGUKKyAgICAgICAgaWYgaXNSZWdpc3RlcihAdG9rZW5zW0BpZHhdKQorICAgICAg
ICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9fiBGUFJfUEFUVEVSTgorICAgICAgICAgICAgICAgIHJl
c3VsdCA9IEZQUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRv
a2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVz
dWx0ID0gUmVnaXN0ZXJJRC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vu
c1tAaWR4XS5zdHJpbmcpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZWxzaWYgaXNJZGVudGlm
aWVyKEB0b2tlbnNbQGlkeF0pCisgICAgICAgICAgICByZXN1bHQgPSBWYXJpYWJsZS5mb3JOYW1l
KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHBhcnNlRXJyb3IKKyAgICAgICAgZW5kCisgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICByZXN1bHQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VBZGRyZXNz
KG9mZnNldCkKKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiWyIK
KyAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAK
KyAgICAgICAgIyBUaHJlZSBwb3NzaWJpbGl0aWVzOgorICAgICAgICAjIFtdICAgICAgIC0+IEFi
c29sdXRlQWRkcmVzcworICAgICAgICAjIFthXSAgICAgIC0+IEFkZHJlc3MKKyAgICAgICAgIyBb
YSxiXSAgICAtPiBCYXNlSW5kZXggd2l0aCBzY2FsZSA9IDEKKyAgICAgICAgIyBbYSxiLGNdICAt
PiBCYXNlSW5kZXgKKyAgICAgICAgCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBpZiBAdG9r
ZW5zW0BpZHhdID09ICJdIgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICByZXR1
cm4gQWJzb2x1dGVBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCBvZmZzZXQpCisgICAgICAgIGVuZAor
ICAgICAgICBhID0gcGFyc2VWYXJpYWJsZQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJd
IgorICAgICAgICAgICAgcmVzdWx0ID0gQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgYSwgb2Zmc2V0
KQorICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0Bp
ZHhdID09ICIsIgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBiID0gcGFyc2VW
YXJpYWJsZQorICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIDEsIG9mZnNldCkK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9r
ZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAg
ICAgIHBhcnNlRXJyb3IgdW5sZXNzIFsiMSIsICIyIiwgIjQiLCAiOCJdLm1lbWJlcj8gQHRva2Vu
c1tAaWR4XS5zdHJpbmcKKyAgICAgICAgICAgICAgICBjID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcu
dG9faQorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHBhcnNlRXJy
b3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAgICAgICAgICAgcmVzdWx0ID0g
QmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCBjLCBvZmZzZXQpCisgICAgICAgICAgICBl
bmQKKyAgICAgICAgZW5kCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQKKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgcGFyc2VDb2xvbkNvbG9uCisgICAgICAgIHNraXBOZXdMaW5lCisg
ICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgbmFtZXMg
PSBbQHRva2Vuc1tAaWR4XS5zdHJpbmddCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB3aGls
ZSBAdG9rZW5zW0BpZHhdID09ICI6OiIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
ICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAg
ICAgIG5hbWVzIDw8IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgZW5kCisgICAgICAgIHJhaXNlIGlmIG5hbWVzLmVtcHR5PworICAgICAgICBbY29k
ZU9yaWdpbiwgbmFtZXNdCisgICAgZW5kCisgICAgCisgICAgZGVmIHBhcnNlRXhwcmVzc2lvbkF0
b20KKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIK
KyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgTmVnSW1tZWRpYXRlLm5ldyhAdG9r
ZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAgICBl
bHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
ICAgIHJlc3VsdAorICAgICAgICBlbHNpZiBpc0ludGVnZXIgQHRva2Vuc1tAaWR4XQorICAgICAg
ICAgICAgcmVzdWx0ID0gSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0
b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kpCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
ICAgIHJlc3VsdAorICAgICAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAg
ICAgICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgICAgICAg
IGlmIG5hbWVzLnNpemUgPiAxCisgICAgICAgICAgICAgICAgU3RydWN0T2Zmc2V0LmZvckZpZWxk
KGNvZGVPcmlnaW4sIG5hbWVzWzAuLi0yXS5qb2luKCc6OicpLCBuYW1lc1stMV0pCisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgVmFyaWFibGUuZm9yTmFtZShjb2RlT3JpZ2luLCBu
YW1lc1swXSkKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNpZiBpc1JlZ2lzdGVyIEB0b2tl
bnNbQGlkeF0KKyAgICAgICAgICAgIHBhcnNlVmFyaWFibGUKKyAgICAgICAgZWxzaWYgQHRva2Vu
c1tAaWR4XSA9PSAic2l6ZW9mIgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBj
b2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNlQ29sb25Db2xvbgorICAgICAgICAgICAgU2l6ZW9mLmZv
ck5hbWUoY29kZU9yaWdpbiwgbmFtZXMuam9pbignOjonKSkKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcGFyc2VFcnJvcgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFy
c2VFeHByZXNzaW9uTXVsCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIHJlc3VsdCA9IHBh
cnNlRXhwcmVzc2lvbkF0b20KKyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAg
ICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIioiCisgICAgICAgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gTXVsSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tA
aWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBlbmQKKyAgICAg
ICAgZW5kCisgICAgICAgIHJlc3VsdAorICAgIGVuZAorICAgIAorICAgIGRlZiBjb3VsZEJlRXhw
cmVzc2lvbgorICAgICAgICBAdG9rZW5zW0BpZHhdID09ICItIiBvciBAdG9rZW5zW0BpZHhdID09
ICJzaXplb2YiIG9yIGlzSW50ZWdlcihAdG9rZW5zW0BpZHhdKSBvciBpc1ZhcmlhYmxlKEB0b2tl
bnNbQGlkeF0pIG9yIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAgZW5kCisgICAgCisgICAgZGVm
IHBhcnNlRXhwcmVzc2lvbgorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICByZXN1bHQgPSBw
YXJzZUV4cHJlc3Npb25NdWwKKyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKyIgb3Ig
QHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIisi
CisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gQWRk
SW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJz
ZUV4cHJlc3Npb25NdWwpCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICItIgor
ICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IFN1Yklt
bWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VF
eHByZXNzaW9uTXVsKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJhaXNlCisg
ICAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAgICAgIHJlc3VsdAorICAgIGVuZAorICAg
IAorICAgIGRlZiBwYXJzZU9wZXJhbmQoY29tbWVudCkKKyAgICAgICAgaWYgY291bGRCZUV4cHJl
c3Npb24KKyAgICAgICAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgICAgICAgIGlm
IEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgICAgICAgICAgcGFyc2VBZGRyZXNzKGV4cHIp
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZXhwcgorICAgICAgICAgICAgZW5k
CisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgICAgICBwYXJzZUFk
ZHJlc3MoSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIDApKQorICAgICAg
ICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAgIHJlc3VsdCA9IExhYmVs
UmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExhYmVsLmZvck5hbWUoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNpZiBpc0xvY2FsTGFi
ZWwgQHRva2Vuc1tAaWR4XQorICAgICAgICAgICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJlZmVyZW5j
ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMb2NhbExhYmVsLmZvck5hbWUoQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNlCisgICAgICAgICAgICBw
YXJzZUVycm9yKGNvbW1lbnQpCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBw
YXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGNvbnN1bWUo
L1xBXChcWi8pCisgICAgICAgIHZhcmlhYmxlcyA9IFtdCisgICAgICAgIGxvb3AgeworICAgICAg
ICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisg
ICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAg
ICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICAgICAgICAgIHZh
cmlhYmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRv
a2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAg
ICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIp
IgorICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAg
ICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHBhcnNlRXJyb3IKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBwYXJzZUVycm9yCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQor
ICAgICAgICB2YXJpYWJsZXMKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VTZXF1ZW5jZShm
aW5hbCwgY29tbWVudCkKKyAgICAgICAgZmlyc3RDb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luCisgICAgICAgIGxpc3QgPSBbXQorICAgICAgICBsb29wIHsKKyAgICAgICAgICAg
IGlmIChAaWR4ID09IEB0b2tlbnMubGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQg
QHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAg
ICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgICAgICAgIyBpZ25vcmUK
KyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gImNvbnN0IgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAg
IHBhcnNlRXJyb3IgdW5sZXNzIGlzVmFyaWFibGUgQHRva2Vuc1tAaWR4XQorICAgICAgICAgICAg
ICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4s
IEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIj0iCisgICAgICAg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJzZU9wZXJhbmQo
IndoaWxlIGluc2lkZSBvZiBjb25zdCAje3ZhcmlhYmxlLm5hbWV9IikKKyAgICAgICAgICAgICAg
ICBsaXN0IDw8IENvbnN0RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCB2YXJpYWJs
ZSwgdmFsdWUpCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJlcnJvciIKKyAg
ICAgICAgICAgICAgICBsaXN0IDw8IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4p
CisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0Bp
ZHhdID09ICJpZiIKKyAgICAgICAgICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgc2tp
cE5ld0xpbmUKKyAgICAgICAgICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAg
ICAgICAgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgICAgICAg
ICBza2lwTmV3TGluZQorICAgICAgICAgICAgICAgIGlmVGhlbkVsc2UgPSBJZlRoZW5FbHNlLm5l
dyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwo
ZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkK
KyAgICAgICAgICAgICAgICBsaXN0IDw8IGlmVGhlbkVsc2UKKyAgICAgICAgICAgICAgICB3aGls
ZSBAdG9rZW5zW0BpZHhdID09ICJlbHNpZiIKKyAgICAgICAgICAgICAgICAgICAgY29kZU9yaWdp
biA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgICAgICAg
cHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgICAgICAgICAgICAgY29uc3VtZSgv
XEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAg
ICAgICAgICAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHBy
ZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hp
bGUgaW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICAgICAgICAg
ICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNhc2UKKyAgICAgICAgICAgICAgICAgICAg
aWZUaGVuRWxzZSA9IGVsc2VDYXNlCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiZWxzZSIKKyAgICAgICAgICAgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgICAgICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBwYXJzZVNlcXVl
bmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBlbHNlIGNhc2UgZm9yIFwiaWYgI3twcmVk
aWNhdGUuZHVtcH1cIiIpCisgICAgICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vu
c1tAaWR4XSA9PSAiZW5kIgorICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
ICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgor
ICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAg
ICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAg
ICAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhd
KQorICAgICAgICAgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICAg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9W
YXJpYWJsZXMKKyAgICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8s
ICJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gI3tuYW1lfSIpCisgICAgICAgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgICAgICAgbGlzdCA8PCBNYWNyby5uZXcoY29kZU9yaWdpbiwgbmFtZSwg
dmFyaWFibGVzLCBib2R5KQorICAgICAgICAgICAgZWxzaWYgaXNJbnN0cnVjdGlvbiBAdG9rZW5z
W0BpZHhdCisgICAgICAgICAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbgorICAgICAgICAgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAg
ICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGlmIChub3QgZmluYWwgYW5kIEBp
ZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwp
CisgICAgICAgICAgICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLCBhbmQgaXQn
cyB0aGUgbGFzdCBvbmUuCisgICAgICAgICAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAg
ICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICAgICAg
ICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgbGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgICAg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgIyBJdCdzIGRlZmluaXRlbHkgYW4gaW5zdHJ1Y3Rpb24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qg
b25lIG9wZXJhbmQuCisgICAgICAgICAgICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAg
ICAgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9IGZhbHNlCisgICAgICAgICAgICAgICAgICAgIGxv
b3AgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3
aGlsZSBpbnNpZGUgb2YgaW5zdHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFu
ZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg
VGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24gYW5kIG9mIHRoZSBzZXF1ZW5jZS4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gdHJ1ZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5z
W0BpZHhdID09ICIsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSGFzIGFub3RoZXIg
b3BlcmFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFs
fSBhZnRlciAje29wZXJhbmRzLmxhc3QuZHVtcH0iKQorICAgICAgICAgICAgICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbGlzdCA8PCBJ
bnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgICAgICAg
ICAgICAgIGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAg
ZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAgICAgICBjb2RlT3Jp
Z2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgICAgICAgbmFtZSA9IEB0
b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAg
ICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgICAgICAgICAgICAgICAgIyBNYWNy
byBpbnZvY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAg
ICAgICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgICAgICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAg
ICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBO
ZXdMaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
bWFjcm8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSXQncyBhIG1hY3JvIGxh
bWJkYSEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZU9yaWdpbklubmVyID0g
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBw
YXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkg
PSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBhbm9ueW1vdXMgbWFj
cm8gcGFzc2VkIGFzIGFyZ3VtZW50IHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bl
cmFuZHMgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJpYWJsZXMsIGJvZHkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBtYWNy
byBjYWxsIHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJz
ZUVycm9yICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5zcGVjdH0gd2hpbGUg
cGFyc2luZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBsaXN0IDw8IE1hY3JvQ2FsbC5uZXcoY29kZU9y
aWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9IgorICAgICAg
ICAgICAgICAgIGVuZAorICAgICAgICAgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9y
IGlzTG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICAgICAgICAgICAgY29kZU9yaWdpbiA9
IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgIG5hbWUgPSBAdG9rZW5z
W0BpZHhdLnN0cmluZworICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAg
IHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIjoiCisgICAgICAgICAgICAgICAg
IyBJdCdzIGEgbGFiZWwuCisgICAgICAgICAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAg
ICAgICAgICAgICAgIGxpc3QgPDwgTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbGlzdCA8PCBMb2NhbExhYmVs
LmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJz
ZUVycm9yICJFeHBlY3RpbmcgdGVybWluYWwgI3tmaW5hbH0gI3tjb21tZW50fSIKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICB9CisgICAgICAgIFNlcXVlbmNlLm5ldyhmaXJzdENvZGVPcmlnaW4s
IGxpc3QpCisgICAgZW5kCitlbmQKKworZGVmIHBhcnNlKHRva2VucykKKyAgICBwYXJzZXIgPSBQ
YXJzZXIubmV3KHRva2VucykKKyAgICBwYXJzZXIucGFyc2VTZXF1ZW5jZShuaWwsICIiKQorZW5k
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMu
cmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdp
c3RlcnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK0dQUlMgPQorICAgIFsKKyAgICAgInQwIiwKKyAgICAgInQx
IiwKKyAgICAgInQyIiwKKyAgICAgInQzIiwKKyAgICAgInQ0IiwKKyAgICAgImNmciIsCisgICAg
ICJhMCIsCisgICAgICJhMSIsCisgICAgICJyMCIsCisgICAgICJyMSIsCisgICAgICJzcCIsCisg
ICAgICJsciIKKyAgICBdCisKK0ZQUlMgPQorICAgIFsKKyAgICAgImZ0MCIsCisgICAgICJmdDEi
LAorICAgICAiZnQyIiwKKyAgICAgImZ0MyIsCisgICAgICJmdDQiLAorICAgICAiZnQ1IiwKKyAg
ICAgImZhMCIsCisgICAgICJmYTEiLAorICAgICAiZmEyIiwKKyAgICAgImZhMyIsCisgICAgICJm
ciIKKyAgICBdCisKK1JFR0lTVEVSUyA9IEdQUlMgKyBGUFJTCisKK0dQUl9QQVRURVJOID0gUmVn
ZXhwLm5ldygnXFxBKCgnICsgR1BSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCitGUFJfUEFUVEVS
TiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQorCitS
RUdJU1RFUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgUkVHSVNURVJTLmpvaW4oJyl8
KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Nl
bGZfaGFzaC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9zZWxmX2hhc2gucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9zZWxmX2hhc2gucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImRpZ2VzdC9zaGExIgor
cmVxdWlyZSAicGF0aG5hbWUiCisKKyMKKyMgc2VsZkhhc2ggLT4gU0hBMSBoZXhkaWdlc3QKKyMK
KyMgUmV0dXJucyBhIGhhc2ggb2YgdGhlIG9mZmxpbmVhc20gc291cmNlIGNvZGUuIFRoaXMgYWxs
b3dzIGRlcGVuZGVuY3kKKyMgdHJhY2tpbmcgZm9yIG5vdCBqdXN0IGNoYW5nZXMgaW4gaW5wdXQs
IGJ1dCBhbHNvIGNoYW5nZXMgaW4gdGhlIGFzc2VtYmxlcgorIyBpdHNlbGYuCisjCisKK2RlZiBz
ZWxmSGFzaAorICAgIGNvbnRlbnRzID0gIiIKKyAgICBteVBhdGggPSBQYXRobmFtZS5uZXcoX19G
SUxFX18pLmRpcm5hbWUKKyAgICBEaXIuZm9yZWFjaChteVBhdGgpIHsKKyAgICAgICAgfCBlbnRy
eSB8CisgICAgICAgIGlmIGVudHJ5ID1+IC9cLnJiJC8KKyAgICAgICAgICAgIGNvbnRlbnRzICs9
IElPOjpyZWFkKG15UGF0aCArIGVudHJ5KQorICAgICAgICBlbmQKKyAgICB9CisgICAgcmV0dXJu
IERpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoY29udGVudHMpCitlbmQKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyMDUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVx
dWlyZSAidHJhbnNmb3JtIgorCisjCisjIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3Qp
IC0+IHNldHRpbmdzQ29tYmlhdGlvbnMKKyMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkgb2Ygc2V0dGlu
Z3MgbWFwcywgd2hlcmUgYSBzZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMKKyMgYSBjb25maWd1cmF0
aW9uIGZvciB0aGUgYXNzZW1ibHkgY29kZSBiZWluZyBnZW5lcmF0ZWQuIFRoZSBtYXAKKyMgY29u
dGFpbnMga2V5IHZhbHVlIHBhaXJzIHdoZXJlIGtleXMgYXJlIHNldHRpbmdzIG5hbWVzIChzdHJp
bmdzKSBhbmQKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVhbnMgKHRydWUgZm9yIGVuYWJsZWQsIGZh
bHNlIGZvciBkaXNhYmxlZCkuCisjCisKK2RlZiBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMo
YXN0KQorICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gW10KKyAgICAKKyAgICBkZWYgc2V0dGlu
Z3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBtYXBTb0ZhciwgcmVtYWluaW5nKQor
ICAgICAgICBpZiByZW1haW5pbmcuZW1wdHk/CisgICAgICAgICAgICBzZXR0aW5nc0NvbWJpbmF0
aW9ucyA8PCBtYXBTb0ZhcgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVuZAorICAgICAg
ICAKKyAgICAgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgICAgIG5ld01hcFtyZW1haW5p
bmdbMF1dID0gdHJ1ZQorICAgICAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5h
dGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgICAgICAgCisgICAgICAgIG5ld01h
cCA9IG1hcFNvRmFyLmR1cAorICAgICAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IGZhbHNlCisg
ICAgICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCBy
ZW1haW5pbmdbMS4uLTFdKQorICAgIGVuZAorICAgIAorICAgIHNldHRpbmdzQ29tYmluYXRvcihz
ZXR0aW5nc0NvbWJpbmF0aW9ucywge30sIChhc3QuZmlsdGVyKFNldHRpbmcpLnVuaXEuY29sbGVj
dHt8dnwgdi5uYW1lfSArIFsiWDg2IiwgIkFSTXY3Il0pLnVuaXEpCisgICAgCisgICAgc2V0dGlu
Z3NDb21iaW5hdGlvbnMKK2VuZAorCisjCisjIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3Ms
IGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8
IC4uLiB9CisjCisjIERldGVybWluZXMgaWYgdGhlIHNldHRpbmdzIGNvbWJpbmF0aW9uIGlzIHZh
bGlkLCBhbmQgaWYgc28sIGNhbGxzCisjIHRoZSBibG9jayB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5
b3UgbmVlZCB0byBnZW5lcmF0ZSBjb2RlLgorIworCitkZWYgZm9yU2V0dGluZ3MoY29uY3JldGVT
ZXR0aW5ncywgYXN0KQorICAgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0aGlzIGNvbWJp
bmF0b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgICAgbnVtQ2xhaW1lZEJhY2tlbmRzID0gMAorICAg
IHNlbGVjdGVkQmFja2VuZCA9IG5pbAorICAgIEJBQ0tFTkRTLmVhY2ggeworICAgICAgICB8IGJh
Y2tlbmQgfAorICAgICAgICBpc1N1cHBvcnRlZCA9IGNvbmNyZXRlU2V0dGluZ3NbYmFja2VuZF0K
KyAgICAgICAgcmFpc2UgdW5sZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgICAgICBudW1DbGFp
bWVkQmFja2VuZHMgKz0gaWYgaXNTdXBwb3J0ZWQgdGhlbiAxIGVsc2UgMCBlbmQKKyAgICAgICAg
aWYgaXNTdXBwb3J0ZWQKKyAgICAgICAgICAgIHNlbGVjdGVkQmFja2VuZCA9IGJhY2tlbmQKKyAg
ICAgICAgZW5kCisgICAgfQorICAgIAorICAgIHJldHVybiBpZiBudW1DbGFpbWVkQmFja2VuZHMg
PiAxCisgICAgCisgICAgIyBSZXNvbHZlIHRoZSBBU1QgZG93biB0byBhIGxvdy1sZXZlbCBmb3Jt
IChubyBtYWNyb3Mgb3IgY29uZGl0aW9uYWxzKS4KKyAgICBsb3dMZXZlbEFTVCA9IGFzdC5yZXNv
bHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAgICAKKyAgICB5aWVsZCBjb25jcmV0ZVNl
dHRpbmdzLCBsb3dMZXZlbEFTVCwgc2VsZWN0ZWRCYWNrZW5kCitlbmQKKworIworIyBmb3JFYWNo
VmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdz
LCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0KKyMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3ND
b21iaW5hdGlvbihhc3QsIHNldHRpbmdzQ29tYmluYXRpb25zKSB7CisjICAgICB8IGNvbmNyZXRl
U2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBFeGVjdXRlcyB0aGUg
Z2l2ZW4gYmxvY2sgZm9yIGVhY2ggdmFsaWQgc2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlCisj
IHNldHRpbmdzIG1hcC4gVGhlIGFzdCBwYXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQK
KyMgKGFzdC5yZXNvbHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4KKyMKKyMgVGhlIGZpcnN0IGZv
cm0gd2lsbCBjYWxsIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIGZvciB5b3UuCisj
CisKK2RlZiBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgKm9wdGlvbmFsU2V0
dGluZ3NDb21iaW5hdGlvbnMpCisgICAgcmFpc2UgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0
aW9ucy5zaXplID4gMQorICAgIAorICAgIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMu
ZW1wdHk/CisgICAgICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gY29tcHV0ZVNldHRpbmdzQ29t
YmluYXRpb25zKGFzdCkKKyAgICBlbHNlCisgICAgICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0g
b3B0aW9uYWxTZXR0aW5nc0NvbWJpYXRpb25zWzBdCisgICAgZW5kCisgICAgCisgICAgc2V0dGlu
Z3NDb21iaW5hdGlvbnMuZWFjaF93aXRoX2luZGV4IHsKKyAgICAgICAgfCBjb25jcmV0ZVNldHRp
bmdzLCBpbmRleCB8CisgICAgICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkg
eworICAgICAgICAgICAgfCBjb25jcmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJhY2tlbmQg
fAorICAgICAgICAgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tl
bmQsIGluZGV4CisgICAgICAgIH0KKyAgICB9CitlbmQKKworIworIyBjcHBTZXR0aW5nc1Rlc3Qo
Y29uY3JldGVTZXR0aW5ncykKKyMKKyMgUmV0dXJucyB0aGUgQysrIGNvZGUgdXNlZCB0byB0ZXN0
IGlmIHdlIGFyZSBpbiBhIGNvbmZpZ3VyYXRpb24gdGhhdAorIyBjb3JyZXNwb25kcyB0byB0aGUg
Z2l2ZW4gY29uY3JldGUgc2V0dGluZ3MuCisjCisKK2RlZiBjcHBTZXR0aW5nc1Rlc3QoY29uY3Jl
dGVTZXR0aW5ncykKKyAgICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdzLnRvX2EuY29sbGVjdHsK
KyAgICAgICAgfCBwYWlyIHwKKyAgICAgICAgKGlmIHBhaXJbMV0KKyAgICAgICAgICAgICAiIgor
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICIhIgorICAgICAgICAgZW5kKSArICJPRkZMSU5F
X0FTTV8iICsgcGFpclswXQorICAgIH0uam9pbigiICYmICIpCitlbmQKKworIworIyBpc0FTVEVy
cm9uZW91cyhhc3QpCisjCisjIFRlc3RzIHRvIHNlZSBpZiB0aGUgQVNUIGNsYWltcyB0aGF0IHRo
ZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUKKyMgdXNlcidzIGNvZGUsIGFmdGVyIHNldHRp
bmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4KKyMKKworZGVmIGlzQVNURXJyb25lb3Vz
KGFzdCkKKyAgICBub3QgYXN0LmZpbHRlcihFcnJvcikuZW1wdHk/CitlbmQKKworIworIyBhc3Nl
cnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisjCisjIEVtaXRzIGEgY2hlY2sgdGhh
dCBhc3NlcnRzIHRoYXQgd2UncmUgdXNpbmcgdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24uCisjCisK
K2RlZiBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgICAgJG91dHB1dC5w
dXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAgICRvdXRwdXQucHV0cyAi
I2Vsc2UiCisgICAgJG91dHB1dC5wdXRzICIjZXJyb3IgXCJDb25maWd1cmF0aW9uIG1pc21hdGNo
LlwiIgorICAgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMKKyMgZW1pdENvZGVJbkNv
bmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKSB7CisjICAgICB8IGNv
bmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCB8IC4uLiB9CisjCisjIEVtaXRzIGFsbCByZWxl
dmFudCBndWFyZHMgdG8gc2VlIGlmIHRoZSBjb25maWd1cmF0aW9uIGhvbGRzIGFuZAorIyBjYWxs
cyB0aGUgYmxvY2sgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGVycm9uZW91cy4KKyMKKwor
ZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2Vu
ZCkKKyAgICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisg
ICAgCisgICAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAgICAgICAkb3V0cHV0LnB1dHMgIiNl
cnJvciBcIkludmFsaWQgY29uZmlndXJhdGlvbi5cIiIKKyAgICBlbHNpZiBub3QgV09SS0lOR19C
QUNLRU5EUy5pbmNsdWRlPyBiYWNrZW5kCisgICAgICAgICRvdXRwdXQucHV0cyAiI2Vycm9yIFwi
VGhpcyBiYWNrZW5kIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LlwiIgorICAgIGVsc2UKKyAgICAgICAg
eWllbGQgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kCisgICAgZW5kCisgICAgCisgICAg
JG91dHB1dC5wdXRzICIjZW5kaWYiCitlbmQKKworIworIyBlbWl0Q29kZUluQWxsQ29uZmlndXJh
dGlvbnMoYXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5k
ZXggfCAuLi4gfQorIworIyBFbWl0cyBndWFyZCBjb2RlcyBmb3IgYWxsIHZhbGlkIGNvbmZpZ3Vy
YXRpb25zLCBhbmQgY2FsbHMgdGhlIGJsb2NrCisjIGZvciB0aG9zZSBjb25maWd1cmF0aW9ucyB0
aGF0IGFyZSB2YWxpZCBhbmQgbm90IGVycm9uZW91cy4KKyMKKworZGVmIGVtaXRDb2RlSW5BbGxD
b25maWd1cmF0aW9ucyhhc3QpCisgICAgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihh
c3QpIHsKKyAgICAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwg
aW5kZXggfAorICAgICAgICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0
dGluZ3MpCisgICAgICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNr
ZW5kLCBpbmRleAorICAgICAgICAkb3V0cHV0LnB1dHMgIiNlbmRpZiIKKyAgICB9CitlbmQKKwor
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0u
cmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFu
c2Zvcm0ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQyIEBACisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCisKKyMKKyMgbm9kZS5yZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpCisjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBkb2VzIG5v
dCBoYXZlIGFueSBJZlRoZW5FbHNlIG5vZGVzIGJ5CisjIHN1YnN0aXR1dGluZyBjb25jcmV0ZSBi
b29sZWFuIHZhbHVlcyBmb3IgZWFjaCBTZXR0aW5nLgorIworCitjbGFzcyBOb2RlCisgICAgZGVm
IHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgbWFwQ2hpbGRyZW4geworICAgICAg
ICAgICAgfCBjaGlsZCB8CisgICAgICAgICAgICBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitjbGFzcyBUcnVlCisgICAgZGVmIHJlc29s
dmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgc2VsZgorICAgIGVuZAorZW5kCisKK2NsYXNz
IEZhbHNlCisgICAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgc2VsZgor
ICAgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcKKyAgICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNl
dHRpbmdzKQorICAgICAgICBzZXR0aW5nc1tAbmFtZV0uYXNOb2RlCisgICAgZW5kCitlbmQKKwor
Y2xhc3MgQW5kCisgICAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgKEBs
ZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgYW5kIEByaWdodC5yZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBPcgor
ICAgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICAgIChAbGVmdC5yZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIG9yIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpLnZhbHVlKS5hc05vZGUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBOb3QKKyAgICBkZWYgcmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgICAobm90IEBjaGlsZC5yZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJZlRoZW5F
bHNlCisgICAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgaWYgQHByZWRp
Y2F0ZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlCisgICAgICAgICAgICBAdGhlbkNh
c2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBA
ZWxzZUNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgICBlbmQKKyAgICBlbmQK
K2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICAgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
CisgICAgICAgIG5ld0xpc3QgPSBbXQorICAgICAgICBAbGlzdC5lYWNoIHsKKyAgICAgICAgICAg
IHwgaXRlbSB8CisgICAgICAgICAgICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgICAgICAgICBpZiBpdGVtLmlzX2E/IFNlcXVlbmNlCisgICAgICAgICAgICAgICAg
bmV3TGlzdCArPSBpdGVtLmxpc3QKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBu
ZXdMaXN0IDw8IGl0ZW0KKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIFNlcXVl
bmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICAgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5k
ZW1hY3JvaWZ5KG1hY3JvcykKKyMgbm9kZS5zdWJzdGl0dXRlKG1hcHBpbmcpCisjCisjIGRlbWFj
cm9pZnkoKSBjb25zdHJ1Y3RzIGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IE1hY3Jv
CisjIG5vZGVzLCB3aGlsZSBzdWJzdGl0dXRlKCkgcmVwbGFjZXMgVmFyaWFibGUgbm9kZXMgd2l0
aCB0aGUgZ2l2ZW4KKyMgbm9kZXMgaW4gdGhlIG1hcHBpbmcuCisjCisKK2NsYXNzIE5vZGUKKyAg
ICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgICAgIG1hcENoaWxkcmVuIHsKKyAgICAgICAg
ICAgIHwgY2hpbGQgfAorICAgICAgICAgICAgY2hpbGQuZGVtYWNyb2lmeShtYWNyb3MpCisgICAg
ICAgIH0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgICAg
ICBtYXBDaGlsZHJlbiB7CisgICAgICAgICAgICB8IGNoaWxkIHwKKyAgICAgICAgICAgIGNoaWxk
LnN1YnN0aXR1dGUobWFwcGluZykKKyAgICAgICAgfQorICAgIGVuZAorICAgIAorICAgIGRlZiBz
dWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgICAgIG1hcENoaWxkcmVuIHsKKyAgICAgICAg
ICAgIHwgY2hpbGQgfAorICAgICAgICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5n
KQorICAgICAgICB9CisgICAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8KKyAgICBkZWYgc3Vic3Rp
dHV0ZShtYXBwaW5nKQorICAgICAgICBteU1hcHBpbmcgPSB7fQorICAgICAgICBtYXBwaW5nLmVh
Y2hfcGFpciB7CisgICAgICAgICAgICB8IGtleSwgdmFsdWUgfAorICAgICAgICAgICAgdW5sZXNz
IEB2YXJpYWJsZXMuaW5jbHVkZT8ga2V5CisgICAgICAgICAgICAgICAgbXlNYXBwaW5nW2tleV0g
PSB2YWx1ZQorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbWFwQ2hpbGRyZW4g
eworICAgICAgICAgICAgfCBjaGlsZCB8CisgICAgICAgICAgICBjaGlsZC5zdWJzdGl0dXRlKG15
TWFwcGluZykKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlCisgICAg
ZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICAgICAgaWYgbWFwcGluZ1tzZWxmXQorICAgICAg
ICAgICAgbWFwcGluZ1tzZWxmXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmCisgICAg
ICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgICBkZWYgc3Vic3Rp
dHV0ZUxhYmVscyhtYXBwaW5nKQorICAgICAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICAgICAg
ICBtYXBwaW5nW3NlbGZdCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlbGYKKyAgICAgICAg
ZW5kCisgICAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgICBkZWYgc3Vic3RpdHV0ZShj
b25zdGFudHMpCisgICAgICAgIG5ld0xpc3QgPSBbXQorICAgICAgICBteUNvbnN0YW50cyA9IGNv
bnN0YW50cy5kdXAKKyAgICAgICAgQGxpc3QuZWFjaCB7CisgICAgICAgICAgICB8IGl0ZW0gfAor
ICAgICAgICAgICAgaWYgaXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAgICAgICAgICAgICBteUNv
bnN0YW50c1tpdGVtLnZhcmlhYmxlXSA9IGl0ZW0udmFsdWUuc3Vic3RpdHV0ZShteUNvbnN0YW50
cykKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uc3Vi
c3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAg
IFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICAgIGVuZAorICAgIAorICAgIGRl
ZiByZW5hbWVMYWJlbHMoY29tbWVudCkKKyAgICAgICAgbWFwcGluZyA9IHt9CisgICAgICAgIAor
ICAgICAgICBAbGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgaXRlbSB8CisgICAgICAgICAgICBp
ZiBpdGVtLmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAgICAgICAgICBtYXBwaW5nW2l0ZW1dID0g
TG9jYWxMYWJlbC51bmlxdWUoaWYgY29tbWVudCB0aGVuIGNvbW1lbnQgKyAiXyIgZWxzZSAiIiBl
bmQgKyBpdGVtLmNsZWFuTmFtZSkKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgZW5kCisgICAgCisgICAg
ZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAgICAgICBteU1hY3JvcyA9IG1hY3Jvcy5kdXAKKyAg
ICAgICAgQGxpc3QuZWFjaCB7CisgICAgICAgICAgICB8IGl0ZW0gfAorICAgICAgICAgICAgaWYg
aXRlbS5pc19hPyBNYWNybworICAgICAgICAgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBp
dGVtCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBuZXdMaXN0ID0gW10KKyAg
ICAgICAgQGxpc3QuZWFjaCB7CisgICAgICAgICAgICB8IGl0ZW0gfAorICAgICAgICAgICAgaWYg
aXRlbS5pc19hPyBNYWNybworICAgICAgICAgICAgICAgICMgSWdub3JlLgorICAgICAgICAgICAg
ZWxzaWYgaXRlbS5pc19hPyBNYWNyb0NhbGwKKyAgICAgICAgICAgICAgICBtYXBwaW5nID0ge30K
KyAgICAgICAgICAgICAgICBteU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisgICAgICAgICAgICAg
ICAgcmFpc2UgIkNvdWxkIG5vdCBmaW5kIG1hY3JvICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29k
ZU9yaWdpblN0cmluZ30iIHVubGVzcyBteU1hY3Jvc1tpdGVtLm5hbWVdCisgICAgICAgICAgICAg
ICAgcmFpc2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxsIHRvICN7aXRlbS5uYW1l
fSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVtLm9wZXJhbmRzLnNpemUg
PT0gbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQorICAgICAgICAgICAgICAgIGl0
ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgICAgICAgICAgIHwgaWR4IHwKKyAg
ICAgICAgICAgICAgICAgICAgaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IFZhcmlhYmxlIGFu
ZCBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9
IG15TWFjcm9zW2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgICAgICAgICAg
ICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmls
CisgICAgICAgICAgICAgICAgICAgIGVsc2lmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBNYWNy
bworICAgICAgICAgICAgICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVd
LnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgICAg
ICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFt
ZV0gPSBuaWwKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9IG5pbAor
ICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlh
Ymxlc1tpZHhdXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgICAgICAgICBlbmQK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbmV3TGlzdCArPSBteU1hY3Jvc1tp
dGVtLm5hbWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNyb3Mp
LnJlbmFtZUxhYmVscyhpdGVtLm5hbWUpLmxpc3QKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uZGVtYWNyb2lmeShteU1hY3JvcykKKyAgICAgICAgICAg
IGVuZAorICAgICAgICB9CisgICAgICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0
KS5zdWJzdGl0dXRlKHt9KQorICAgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5yZXNvbHZlT2Zmc2V0
cyhvZmZzZXRzLCBzaXplcykKKyMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGhhcyBvZmZz
ZXQgdmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMKKyMgb2Zmc2V0cy4KKyMKKworY2xhc3MgTm9k
ZQorICAgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICAgICAgbWFwQ2hp
bGRyZW4geworICAgICAgICAgICAgfCBjaGlsZCB8CisgICAgICAgICAgICBjaGlsZC5yZXNvbHZl
T2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNz
IFN0cnVjdE9mZnNldAorICAgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAg
ICAgICAgaWYgb2Zmc2V0c1tzZWxmXQorICAgICAgICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3Jp
Z2luLCBvZmZzZXRzW3NlbGZdKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmCisgICAg
ICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZgorICAgIGRlZiByZXNvbHZlT2Zm
c2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICAgICAgaWYgc2l6ZXNbc2VsZl0KKyAgICAgICAgICAg
IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgc2l6ZXNbc2VsZl0pCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHB1dHMgIkNvdWxkIG5vdCBmaW5kICN7c2VsZi5pbnNwZWN0fSBpbiAje3NpemVz
LmtleXMuaW5zcGVjdH0iCisgICAgICAgICAgICBwdXRzICJzaXplcyA9ICN7c2l6ZXMuaW5zcGVj
dH0iCisgICAgICAgICAgICBzZWxmCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKKyMKKyMg
bm9kZS5mb2xkCisjCisjIFJlc29sdmUgY29uc3RhbnQgcmVmZXJlbmNlcyBhbmQgY29tcHV0ZSBh
cml0aG1ldGljIGV4cHJlc3Npb25zLgorIworCitjbGFzcyBOb2RlCisgICAgZGVmIGZvbGQKKyAg
ICAgICAgbWFwQ2hpbGRyZW4geworICAgICAgICAgICAgfCBjaGlsZCB8CisgICAgICAgICAgICBj
aGlsZC5mb2xkCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVz
CisgICAgZGVmIGZvbGQKKyAgICAgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgICAgIEByaWdo
dCA9IEByaWdodC5mb2xkCisgICAgICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJ
bW1lZGlhdGUKKyAgICAgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlh
dGUKKyAgICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSArIEByaWdo
dC52YWx1ZSkKKyAgICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzCisgICAgZGVmIGZv
bGQKKyAgICAgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgICAgIEByaWdodCA9IEByaWdodC5m
b2xkCisgICAgICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAg
ICAgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAg
SW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAtIEByaWdodC52YWx1ZSkKKyAg
ICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzCisgICAgZGVmIGZvbGQKKyAgICAgICAg
QGxlZnQgPSBAbGVmdC5mb2xkCisgICAgICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgICAg
IHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgcmV0dXJu
IHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgSW1tZWRpYXRlLm5l
dyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAqIEByaWdodC52YWx1ZSkKKyAgICBlbmQKK2VuZAor
CitjbGFzcyBOZWdJbW1lZGlhdGUKKyAgICBkZWYgZm9sZAorICAgICAgICBAY2hpbGQgPSBAY2hp
bGQuZm9sZAorICAgICAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGNoaWxkLmlzX2E/IEltbWVkaWF0
ZQorICAgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC1AY2hpbGQudmFsdWUpCisgICAg
ZW5kCitlbmQKKworIworIyBub2RlLnJlc29sdmVBZnRlclNldHRpbmdzKG9mZnNldHMsIHNpemVz
KQorIworIyBDb21waWxlIGFzc2VtYmx5IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4KKyMKKwor
Y2xhc3MgTm9kZQorICAgIGRlZiByZXNvbHZlKG9mZnNldHMsIHNpemVzKQorICAgICAgICBkZW1h
Y3JvaWZ5KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykuZm9sZAorICAgIGVuZAor
ZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjgxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitjbGFzcyBSZWdpc3RlcklECisgICAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAg
ICAgIGNhc2UgbmFtZQorICAgICAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0MSIsICJhMSIs
ICJyMSIsICJ0MiIsICJ0MyIKKyAgICAgICAgICAgIHRydWUKKyAgICAgICAgd2hlbiAidDQiLCAi
Y2ZyIgorICAgICAgICAgICAgZmFsc2UKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UK
KyAgICAgICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAg
ICAgICAgY2FzZSBuYW1lCisgICAgICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgICAg
ICAgY2FzZSBraW5kCisgICAgICAgICAgICB3aGVuIDpieXRlCisgICAgICAgICAgICAgICAgIiVh
bCIKKyAgICAgICAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgICAgICAgICAiJWF4IgorICAgICAg
ICAgICAgd2hlbiA6aW50CisgICAgICAgICAgICAgICAgIiVlYXgiCisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJ0
MSIsICJhMSIsICJyMSIKKyAgICAgICAgICAgIGNhc2Uga2luZAorICAgICAgICAgICAgd2hlbiA6
Ynl0ZQorICAgICAgICAgICAgICAgICIlZGwiCisgICAgICAgICAgICB3aGVuIDpoYWxmCisgICAg
ICAgICAgICAgICAgIiVkeCIKKyAgICAgICAgICAgIHdoZW4gOmludAorICAgICAgICAgICAgICAg
ICIlZWR4IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAg
ICAgICBlbmQKKyAgICAgICAgd2hlbiAidDIiCisgICAgICAgICAgICBjYXNlIGtpbmQKKyAgICAg
ICAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgICAgICAgICAiJWNsIgorICAgICAgICAgICAgd2hl
biA6aGFsZgorICAgICAgICAgICAgICAgICIlY3giCisgICAgICAgICAgICB3aGVuIDppbnQKKyAg
ICAgICAgICAgICAgICAiJWVjeCIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBy
YWlzZQorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gInQzIgorICAgICAgICAgICAgY2Fz
ZSBraW5kCisgICAgICAgICAgICB3aGVuIDpieXRlCisgICAgICAgICAgICAgICAgIiVibCIKKyAg
ICAgICAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgICAgICAgICAiJWJ4IgorICAgICAgICAgICAg
d2hlbiA6aW50CisgICAgICAgICAgICAgICAgIiVlYngiCisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJ0NCIKKyAg
ICAgICAgICAgIGNhc2Uga2luZAorICAgICAgICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAgICAg
ICAgICIlc2lsIgorICAgICAgICAgICAgd2hlbiA6aGFsZgorICAgICAgICAgICAgICAgICIlc2ki
CisgICAgICAgICAgICB3aGVuIDppbnQKKyAgICAgICAgICAgICAgICAiJWVzaSIKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZW5kCisgICAgICAg
IHdoZW4gImNmciIKKyAgICAgICAgICAgIGNhc2Uga2luZAorICAgICAgICAgICAgd2hlbiA6Ynl0
ZQorICAgICAgICAgICAgICAgICIlZGlsIgorICAgICAgICAgICAgd2hlbiA6aGFsZgorICAgICAg
ICAgICAgICAgICIlZGkiCisgICAgICAgICAgICB3aGVuIDppbnQKKyAgICAgICAgICAgICAgICAi
JWVkaSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAg
ICAgZW5kCisgICAgICAgIHdoZW4gInNwIgorICAgICAgICAgICAgY2FzZSBraW5kCisgICAgICAg
ICAgICB3aGVuIDpieXRlCisgICAgICAgICAgICAgICAgIiVzcGwiCisgICAgICAgICAgICB3aGVu
IDpoYWxmCisgICAgICAgICAgICAgICAgIiVzcCIKKyAgICAgICAgICAgIHdoZW4gOmludAorICAg
ICAgICAgICAgICAgICIlZXNwIgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJh
aXNlCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkJh
ZCByZWdpc3RlciAje25hbWV9IGZvciBYODYgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAg
ICAgZW5kCisgICAgZW5kCisgICAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgICAgICIq
I3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQK
KyAgICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICAgICByYWlzZSB1bmxlc3Mga2luZCA9PSA6
ZG91YmxlCisgICAgICAgIGNhc2UgbmFtZQorICAgICAgICB3aGVuICJmdDAiLCAiZmEwIiwgImZy
IgorICAgICAgICAgICAgIiV4bW0wIgorICAgICAgICB3aGVuICJmdDEiLCAiZmExIgorICAgICAg
ICAgICAgIiV4bW0xIgorICAgICAgICB3aGVuICJmdDIiLCAiZmEyIgorICAgICAgICAgICAgIiV4
bW0yIgorICAgICAgICB3aGVuICJmdDMiLCAiZmEzIgorICAgICAgICAgICAgIiV4bW0zIgorICAg
ICAgICB3aGVuICJmdDQiCisgICAgICAgICAgICAiJXhtbTQiCisgICAgICAgIHdoZW4gImZ0NSIK
KyAgICAgICAgICAgICIleG1tNSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkJh
ZCByZWdpc3RlciAje25hbWV9IGZvciBYODYgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAg
ICAgZW5kCisgICAgZW5kCisgICAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgICAgICIq
I3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAg
ICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICAgICAiJCN7dmFsdWV9IgorICAgIGVuZAorICAg
IGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICAgICAiI3t2YWx1ZX0iCisgICAgZW5kCitl
bmQKKworY2xhc3MgQWRkcmVzcworICAgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgICAgICB0
cnVlCisgICAgZW5kCisgICAgCisgICAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAgICAgIiN7
b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0pIgorICAgIGVuZAorICAgIGRl
ZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisg
ICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgICAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2
CisgICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgeDg2T3BlcmFuZChraW5kKQor
ICAgICAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSwgI3tpbmRl
eC54ODZPcGVyYW5kKDppbnQpfSwgI3tzY2FsZX0pIgorICAgIGVuZAorCisgICAgZGVmIHg4NkNh
bGxPcGVyYW5kKGtpbmQpCisgICAgICAgICIqI3t4ODZvcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQK
K2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgICBkZWYgc3VwcG9ydHM4Qml0T25YODYK
KyAgICAgICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisg
ICAgICAgICIje2FkZHJlc3MudmFsdWV9IgorICAgIGVuZAorCisgICAgZGVmIHg4NkNhbGxPcGVy
YW5kKGtpbmQpCisgICAgICAgICIqI3thZGRyZXNzLnZhbHVlfSIKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBMYWJlbFJlZmVyZW5jZQorICAgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICAg
ICBhc21MYWJlbAorICAgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UKKyAg
ICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAgICAgYXNtTGFiZWwKKyAgICBlbmQKK2Vu
ZAorCitjbGFzcyBJbnN0cnVjdGlvbgorICAgIGRlZiB4ODZPcGVyYW5kcygqa2luZHMpCisgICAg
ICAgIHJhaXNlIHVubGVzcyBraW5kcy5zaXplID09IG9wZXJhbmRzLnNpemUKKyAgICAgICAgcmVz
dWx0ID0gW10KKyAgICAgICAga2luZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgICB8IGlkeCB8
CisgICAgICAgICAgICByZXN1bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZPcGVyYW5kKGtpbmRzW2lk
eF0pCisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LmpvaW4oIiwgIikKKyAgICBlbmQKKworICAg
IGRlZiB4ODZTdWZmaXgoa2luZCkKKyAgICAgICAgY2FzZSBraW5kCisgICAgICAgIHdoZW4gOmJ5
dGUKKyAgICAgICAgICAgICJiIgorICAgICAgICB3aGVuIDpoYWxmCisgICAgICAgICAgICAidyIK
KyAgICAgICAgd2hlbiA6aW50CisgICAgICAgICAgICAibCIKKyAgICAgICAgd2hlbiA6ZG91Ymxl
CisgICAgICAgICAgICAic2QiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlCisgICAg
ICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5k
cyhvcGNvZGUsIGtpbmQsIG51bU9wZXJhbmRzKQorICAgICAgICBpZiBudW1PcGVyYW5kcyA9PSAz
CisgICAgICAgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAg
ICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0s
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBlbHNpZiBvcGVy
YW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiI3tvcGNv
ZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3Bl
cmFuZChraW5kKX0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRz
ICJtb3Yje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwg
I3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgICAgICAkYXNtLnB1
dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRz
WzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChr
aW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgIGVuZAorICAg
IGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZPcChvcGNvZGUsIGtpbmQpCisgICAgICAgIGhh
bmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSkKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgaGFuZGxlWDg2U2hpZnQob3Bjb2RlLCBraW5kKQorICAgICAg
ICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0
ZXJJRC5mb3JOYW1lKG5pbCwgInQyIikKKyAgICAgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoa2luZCl9IgorICAgICAgICBlbHNlCisgICAgICAgICAgICAkYXNtLnB1dHMgInhjaGdsICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAgICAgICAgICAkYXNtLnB1
dHMgIiN7b3Bjb2RlfSAlY2wsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAg
ICAgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0s
ICVlY3giCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZEb3Vi
bGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAgICAgICBjYXNlIG1vZGUKKyAgICAgICAg
d2hlbiA6bm9ybWFsCisgICAgICAgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUp
fSIKKyAgICAgICAgd2hlbiA6cmV2ZXJzZQorICAgICAgICAgICAgJGFzbS5wdXRzICJ1Y29taXNk
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlIG1vZGUuaW5z
cGVjdAorICAgICAgICBlbmQKKyAgICAgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tv
cGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgZW5kCisgICAgCisgICAgZGVmIGhhbmRsZVg4Nklu
dENvbXBhcmUob3Bjb2RlU3VmZml4LCBraW5kKQorICAgICAgICBpZiBvcGVyYW5kc1swXS5pc19h
PyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDAgYW5kIG9wZXJhbmRzWzFdLmlz
X2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9
PSAibmUiKQorICAgICAgICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgIGVsc2lmIG9wZXJhbmRzWzFd
LmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNb
MF0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3Vm
Zml4ID09ICJuZSIpCisgICAgICAgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChraW5k
KX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgJGFzbS5wdXRzICJjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAg
ZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIGhhbmRsZVg4NkludEJyYW5jaChicmFuY2hPcGNv
ZGUsIGtpbmQpCisgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmUoYnJhbmNoT3Bjb2RlWzEuLi0x
XSwga2luZCkKKyAgICAgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1sy
XS5hc21MYWJlbH0iCisgICAgZW5kCisgICAgCisgICAgZGVmIGhhbmRsZVg4NlNldChzZXRPcGNv
ZGUsIG9wZXJhbmQpCisgICAgICAgIGlmIG9wZXJhbmQuc3VwcG9ydHM4Qml0T25YODYKKyAgICAg
ICAgICAgICRhc20ucHV0cyAiI3tzZXRPcGNvZGV9ICN7b3BlcmFuZC54ODZPcGVyYW5kKDpieXRl
KX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdnpibCAje29wZXJhbmQueDg2T3BlcmFuZCg6
Ynl0ZSl9LCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4
IgorICAgICAgICAgICAgJGFzbS5wdXRzICIje3NldE9wY29kZX0gJWFsIgorICAgICAgICAgICAg
JGFzbS5wdXRzICJtb3Z6YmwgJWFsLCAlZWF4IgorICAgICAgICAgICAgJGFzbS5wdXRzICJ4Y2hn
bCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgICAgIGVuZAorICAgIGVu
ZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlU2V0KHNldE9wY29kZSwga2luZCkK
KyAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZShzZXRPcGNvZGVbMy4uLTFdLCBraW5kKQorICAg
ICAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kc1syXSkKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgaGFuZGxlWDg2VGVzdChraW5kKQorICAgICAgICB2YWx1ZSA9IG9wZXJhbmRzWzBd
CisgICAgICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgICAgICB3aGVuIDIKKyAgICAgICAgICAg
IG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAgICAgICB3aGVuIDMKKyAg
ICAgICAgICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBy
YWlzZSAiRXhwZWN0ZWQgMiBvciAzIG9wZXJhbmRzLCBidXQgZ290ICN7b3BlcmFuZHMuc2l6ZX0g
YXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5kCisgICAgICAgIAorICAgICAgICBp
ZiBtYXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQorICAgICAgICAgICAg
aWYgdmFsdWUuaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgICRhc20ucHV0cyAidGVz
dCN7eDg2U3VmZml4KGtpbmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4
Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICRhc20u
cHV0cyAiY21wI3t4ODZTdWZmaXgoa2luZCl9ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICRhc20ucHV0cyAi
dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje21hc2sueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUu
eDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBo
YW5kbGVYODZCcmFuY2hUZXN0KGJyYW5jaE9wY29kZSwga2luZCkKKyAgICAgICAgaGFuZGxlWDg2
VGVzdChraW5kKQorICAgICAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRz
Lmxhc3QuYXNtTGFiZWx9IgorICAgIGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZTZXRUZXN0
KHNldE9wY29kZSwga2luZCkKKyAgICAgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgICAgICBo
YW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kcy5sYXN0KQorICAgIGVuZAorICAgIAorICAg
IGRlZiBoYW5kbGVYODZPcEJyYW5jaChvcGNvZGUsIGJyYW5jaE9wY29kZSwga2luZCkKKyAgICAg
ICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXpl
IC0gMSkKKyAgICAgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgICAgIHdoZW4gNAorICAgICAg
ICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgICAgIHdoZW4gMworICAgICAgICAg
ICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJh
aXNlIHNlbGYuaW5zcGVjdAorICAgICAgICBlbmQKKyAgICAgICAgJGFzbS5wdXRzICIje2JyYW5j
aE9wY29kZX0gI3tqdW1wVGFyZ2V0LmFzbUxhYmVsfSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
aGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAgICAgICAgaWYgb3BlcmFu
ZHMuc2l6ZSA9PSA0IGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAg
JGFzbS5wdXRzICJuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAg
ICAgICAkYXNtLnB1dHMgImFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
aGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMoInN1YiN7eDg2U3VmZml4KGtpbmQpfSIsIGtpbmQs
IG9wZXJhbmRzLnNpemUgLSAxKQorICAgICAgICBlbmQKKyAgICAgICAgY2FzZSBvcGVyYW5kcy5z
aXplCisgICAgICAgIHdoZW4gNAorICAgICAgICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNd
CisgICAgICAgIHdoZW4gMworICAgICAgICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgICAgICBlbmQK
KyAgICAgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0LmFzbUxhYmVs
fSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbG93ZXJYODYKKyAgICAgICAgJGFzbS5jb21tZW50
IGNvZGVPcmlnaW5TdHJpbmcKKyAgICAgICAgY2FzZSBvcGNvZGUKKyAgICAgICAgd2hlbiAiYWRk
aSIsICJhZGRwIgorICAgICAgICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5k
c1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFu
ZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVy
YW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0u
dmFsdWUgPT0gMAorICAgICAgICAgICAgICAgICAgICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0gb3Bl
cmFuZHNbMl0KKyAgICAgICAgICAgICAgICAgICAgICAgICRhc20ucHV0cyAibW92bCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICRhc20ucHV0cyAibGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQp
fSIKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUg
PT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgIHJh
aXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICAgICAgICAg
cmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgICAgICAg
ICAkYXNtLnB1dHMgImxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUu
bmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAgICAgICAgICAgJGFzbS5wdXRz
ICJhZGRsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgICAgICAgICAgIGVuZAor
ICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgICAgICAg
IGhhbmRsZVg4Nk9wKCJhbmRsIiwgOmludCkKKyAgICAgICAgd2hlbiAibHNoaWZ0aSIKKyAgICAg
ICAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYWxsIiwgOmludCkKKyAgICAgICAgd2hlbiAibXVsaSIK
KyAgICAgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8g
SW1tZWRpYXRlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJpbXVsbCAje3g4Nk9wZXJhbmRz
KDppbnQsIDppbnQsIDppbnQpfSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAj
IEZJWE1FOiBjb3VsZCBkbyBzb21lIHBlZXBob2xlIGluIGNhc2UgdGhlIGxlZnQgb3BlcmFuZCBp
cyBpbW1lZGlhdGUgYW5kIGl0J3MKKyAgICAgICAgICAgICAgICAjIGEgcG93ZXIgb2YgdHdvLgor
ICAgICAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJpbXVsbCIsIDppbnQpCisgICAgICAgICAgICBl
bmQKKyAgICAgICAgd2hlbiAibmVnaSIKKyAgICAgICAgICAgICRhc20ucHV0cyAibmVnbCAje3g4
Nk9wZXJhbmRzKDppbnQpfSIKKyAgICAgICAgd2hlbiAibm90aSIKKyAgICAgICAgICAgICRhc20u
cHV0cyAibm90bCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICAgICAgd2hlbiAib3JpIiwgIm9y
cCIKKyAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJvcmwiLCA6aW50KQorICAgICAgICB3aGVuICJy
c2hpZnRpIgorICAgICAgICAgICAgaGFuZGxlWDg2U2hpZnQoInNhcmwiLCA6aW50KQorICAgICAg
ICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgICAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzaHJsIiwgOmlu
dCkKKyAgICAgICAgd2hlbiAic3ViaSIsICJzdWJwIgorICAgICAgICAgICAgaWYgb3BlcmFuZHMu
c2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAg
ICRhc20ucHV0cyAibmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
ICAgICAgICAgICRhc20ucHV0cyAiYWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9
LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJzdWJsIiwgOmludCkKKyAgICAgICAgICAgIGVuZAor
ICAgICAgICB3aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICAgICAgICBoYW5kbGVYODZPcCgieG9y
bCIsIDppbnQpCisgICAgICAgIHdoZW4gImxvYWRpIiwgInN0b3JlaSIsICJsb2FkcCIsICJzdG9y
ZXAiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50
KX0iCisgICAgICAgIHdoZW4gImxvYWRiIgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3Z6Ymwg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgICAgIHdoZW4gImxvYWRicyIKKyAgICAgICAgICAgICRhc20ucHV0cyAi
bW92c2JsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgICAgICB3aGVuICJsb2FkaCIKKyAgICAgICAgICAgICRhc20u
cHV0cyAibW92endsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICB3aGVuICJsb2FkaHMiCisgICAgICAgICAg
ICAkYXNtLnB1dHMgIm1vdnN3bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgd2hlbiAic3RvcmViIgorICAg
ICAgICAgICAgJGFzbS5wdXRzICJtb3ZiICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0iCisg
ICAgICAgIHdoZW4gImxvYWRkIiwgIm1vdmVkIiwgInN0b3JlZCIKKyAgICAgICAgICAgICRhc20u
cHV0cyAibW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgICAgIHdo
ZW4gImFkZGQiCisgICAgICAgICAgICAkYXNtLnB1dHMgImFkZHNkICN7eDg2T3BlcmFuZHMoOmRv
dWJsZSwgOmRvdWJsZSl9IgorICAgICAgICB3aGVuICJkaXZkIgorICAgICAgICAgICAgJGFzbS5w
dXRzICJkaXZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICAgICAgd2hl
biAic3ViZCIKKyAgICAgICAgICAgICRhc20ucHV0cyAic3Vic2QgI3t4ODZPcGVyYW5kcyg6ZG91
YmxlLCA6ZG91YmxlKX0iCisgICAgICAgIHdoZW4gIm11bGQiCisgICAgICAgICAgICAkYXNtLnB1
dHMgIm11bHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgICAgICB3aGVu
ICJzcXJ0ZCIKKyAgICAgICAgICAgICRhc20ucHV0cyAic3FydHNkICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisg
ICAgICAgIHdoZW4gImNpMmQiCisgICAgICAgICAgICAkYXNtLnB1dHMgImN2dHNpMnNkICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91
YmxlKX0iCisgICAgICAgIHdoZW4gImJkZXEiCisgICAgICAgICAgICBpc1Vub3JkZXJlZCA9IExv
Y2FsTGFiZWwudW5pcXVlKCJiZGVxIikKKyAgICAgICAgICAgICRhc20ucHV0cyAidWNvbWlzZCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmRvdWJsZSl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJqcCAje0xhYmVsUmVmZXJlbmNl
Lm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkuYXNtTGFiZWx9IgorICAgICAgICAgICAgJGFz
bS5wdXRzICJqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBvcGVyYW5kc1syXSku
YXNtTGFiZWx9IgorICAgICAgICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAgICAg
IHdoZW4gImJkbmVxIgorICAgICAgICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqbmUiLCA6
bm9ybWFsKQorICAgICAgICB3aGVuICJiZGd0IgorICAgICAgICAgICAgaGFuZGxlWDg2RG91Ymxl
QnJhbmNoKCJqYSIsIDpub3JtYWwpCisgICAgICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgICAgICAg
IGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOm5vcm1hbCkKKyAgICAgICAgd2hlbiAiYmRs
dCIKKyAgICAgICAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6cmV2ZXJzZSkKKyAg
ICAgICAgd2hlbiAiYmRsdGVxIgorICAgICAgICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJq
YWUiLCA6cmV2ZXJzZSkKKyAgICAgICAgd2hlbiAiYmRlcXVuIgorICAgICAgICAgICAgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwpCisgICAgICAgIHdoZW4gImJkbmVxdW4iCisg
ICAgICAgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAg
ICAgICAgICAgIGlzRXF1YWwgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICAg
ICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUp
fSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICAgICAgICRhc20u
cHV0cyAianAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLmFz
bUxhYmVsfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiamUgI3tMYWJlbFJlZmVyZW5jZS5uZXco
Y29kZU9yaWdpbiwgaXNFcXVhbCkuYXNtTGFiZWx9IgorICAgICAgICAgICAgaXNVbm9yZGVyZWQu
bG93ZXIoIlg4NiIpCisgICAgICAgICAgICAkYXNtLnB1dHMgImptcCAje29wZXJhbmRzWzJdLmFz
bUxhYmVsfSIKKyAgICAgICAgICAgIGlzRXF1YWwubG93ZXIoIlg4NiIpCisgICAgICAgIHdoZW4g
ImJkZ3R1biIKKyAgICAgICAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6cmV2ZXJz
ZSkKKyAgICAgICAgd2hlbiAiYmRndGVxdW4iCisgICAgICAgICAgICBoYW5kbGVYODZEb3VibGVC
cmFuY2goImpiZSIsIDpyZXZlcnNlKQorICAgICAgICB3aGVuICJiZGx0dW4iCisgICAgICAgICAg
ICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOm5vcm1hbCkKKyAgICAgICAgd2hlbiAiYmRs
dGVxdW4iCisgICAgICAgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3JtYWwp
CisgICAgICAgIHdoZW4gImJ0ZDJpIgorICAgICAgICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiY21wbCAkMHg4MDAwMDAwMCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJqZSAj
e29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAidGQyaSIKKyAgICAgICAgICAg
ICRhc20ucHV0cyAiY3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0s
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIHdoZW4gImJjZDJpIgor
ICAgICAgICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAg
ICRhc20ucHV0cyAidGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiamUgI3tv
cGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImN2dHNpMnNkICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgICAgICAgJGFzbS5w
dXRzICJ1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03Igor
ICAgICAgICAgICAgJGFzbS5wdXRzICJqcCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAg
ICAgICAgICRhc20ucHV0cyAiam5lICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3
aGVuICJtb3ZkeiIKKyAgICAgICAgICAgICRhc20ucHV0cyAieG9ycGQgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIK
KyAgICAgICAgd2hlbiAicG9wIgorICAgICAgICAgICAgJGFzbS5wdXRzICJwb3AgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgd2hlbiAicHVzaCIKKyAgICAgICAgICAg
ICRhc20ucHV0cyAicHVzaCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
ICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgICAgICAgaWYgSW1tZWRpYXRl
Lm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3Rl
cklECisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJ4b3JsICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAg
ICBlbHNpZiBvcGVyYW5kc1swXSAhPSBvcGVyYW5kc1sxXQorICAgICAgICAgICAgICAgICRhc20u
cHV0cyAibW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgICAgICAgIGVuZAor
ICAgICAgICB3aGVuICJub3AiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm5vcCIKKyAgICAgICAg
d2hlbiAiYmllcSIsICJicGVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIs
IDppbnQpCisgICAgICAgIHdoZW4gImJpbmVxIiwgImJwbmVxIgorICAgICAgICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqbmUiLCA6aW50KQorICAgICAgICB3aGVuICJiaWEiLCAiYnBhIgorICAg
ICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDppbnQpCisgICAgICAgIHdoZW4gImJp
YWVxIiwgImJwYWVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6aW50
KQorICAgICAgICB3aGVuICJiaWIiLCAiYnBiIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqYiIsIDppbnQpCisgICAgICAgIHdoZW4gImJpYmVxIiwgImJwYmVxIgorICAgICAgICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6aW50KQorICAgICAgICB3aGVuICJiaWd0Iiwg
ImJwZ3QiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmludCkKKyAgICAg
ICAgd2hlbiAiYmlndGVxIiwgImJwZ3RlcSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamdlIiwgOmludCkKKyAgICAgICAgd2hlbiAiYmlsdCIsICJicGx0IgorICAgICAgICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDppbnQpCisgICAgICAgIHdoZW4gImJpbHRlcSIsICJi
cGx0ZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsZSIsIDppbnQpCisgICAg
ICAgIHdoZW4gImJiZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmJ5
dGUpCisgICAgICAgIHdoZW4gImJibmVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqbmUiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAiYmJhIgorICAgICAgICAgICAgaGFuZGxlWDg2
SW50QnJhbmNoKCJqYSIsIDpieXRlKQorICAgICAgICB3aGVuICJiYmFlcSIKKyAgICAgICAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmJ5dGUpCisgICAgICAgIHdoZW4gImJiYiIKKyAg
ICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAi
YmJiZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRlKQorICAg
ICAgICB3aGVuICJiYmd0IgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDpi
eXRlKQorICAgICAgICB3aGVuICJiYmd0ZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImpnZSIsIDpieXRlKQorICAgICAgICB3aGVuICJiYmx0IgorICAgICAgICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqbCIsIDpieXRlKQorICAgICAgICB3aGVuICJiYmx0ZXEiCisgICAgICAg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsdGVxIiwgOmJ5dGUpCisgICAgICAgIHdoZW4gImJ0
aW8iLCAiYnRwbyIKKyAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmludCkK
KyAgICAgICAgd2hlbiAiYnRpcyIsICJidHBzIgorICAgICAgICAgICAgaGFuZGxlWDg2QnJhbmNo
VGVzdCgianMiLCA6aW50KQorICAgICAgICB3aGVuICJidGl6IiwgImJ0cHoiCisgICAgICAgICAg
ICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDppbnQpCisgICAgICAgIHdoZW4gImJ0aW56Iiwg
ImJ0cG56IgorICAgICAgICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmludCkKKyAg
ICAgICAgd2hlbiAiYnRibyIKKyAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwg
OmJ5dGUpCisgICAgICAgIHdoZW4gImJ0YnMiCisgICAgICAgICAgICBoYW5kbGVYODZCcmFuY2hU
ZXN0KCJqcyIsIDpieXRlKQorICAgICAgICB3aGVuICJidGJ6IgorICAgICAgICAgICAgaGFuZGxl
WDg2QnJhbmNoVGVzdCgianoiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAiYnRibnoiCisgICAgICAg
ICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAiam1w
IgorICAgICAgICAgICAgJGFzbS5wdXRzICJqbXAgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFu
ZCg6aW50KX0iCisgICAgICAgIHdoZW4gImJhZGRpbyIsICJiYWRkcG8iCisgICAgICAgICAgICBo
YW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbyIsIDppbnQpCisgICAgICAgIHdoZW4gImJhZGRp
cyIsICJiYWRkcHMiCisgICAgICAgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqcyIs
IDppbnQpCisgICAgICAgIHdoZW4gImJhZGRpeiIsICJiYWRkcHoiCisgICAgICAgICAgICBoYW5k
bGVYODZPcEJyYW5jaCgiYWRkbCIsICJqeiIsIDppbnQpCisgICAgICAgIHdoZW4gImJhZGRpbnoi
LCAiYmFkZHBueiIKKyAgICAgICAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpueiIs
IDppbnQpCisgICAgICAgIHdoZW4gImJzdWJpbyIKKyAgICAgICAgICAgIGhhbmRsZVg4NlN1YkJy
YW5jaCgiam8iLCA6aW50KQorICAgICAgICB3aGVuICJic3ViaXMiCisgICAgICAgICAgICBoYW5k
bGVYODZTdWJCcmFuY2goImpzIiwgOmludCkKKyAgICAgICAgd2hlbiAiYnN1Yml6IgorICAgICAg
ICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqeiIsIDppbnQpCisgICAgICAgIHdoZW4gImJzdWJp
bnoiCisgICAgICAgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpueiIsIDppbnQpCisgICAgICAg
IHdoZW4gImJtdWxpbyIKKyAgICAgICAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJq
byIsIDppbnQpCisgICAgICAgIHdoZW4gImJtdWxpcyIKKyAgICAgICAgICAgIGhhbmRsZVg4Nk9w
QnJhbmNoKCJpbXVsbCIsICJqcyIsIDppbnQpCisgICAgICAgIHdoZW4gImJtdWxpeiIKKyAgICAg
ICAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqeiIsIDppbnQpCisgICAgICAgIHdo
ZW4gImJtdWxpbnoiCisgICAgICAgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAiam56
IiwgOmludCkKKyAgICAgICAgd2hlbiAiYm9yaW8iCisgICAgICAgICAgICBoYW5kbGVYODZPcEJy
YW5jaCgib3JsIiwgImpvIiwgOmludCkKKyAgICAgICAgd2hlbiAiYm9yaXMiCisgICAgICAgICAg
ICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpzIiwgOmludCkKKyAgICAgICAgd2hlbiAiYm9y
aXoiCisgICAgICAgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImp6IiwgOmludCkKKyAg
ICAgICAgd2hlbiAiYm9yaW56IgorICAgICAgICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIs
ICJqbnoiLCA6aW50KQorICAgICAgICB3aGVuICJicmVhayIKKyAgICAgICAgICAgICRhc20ucHV0
cyAiaW50ICQzIgorICAgICAgICB3aGVuICJjYWxsIgorICAgICAgICAgICAgJGFzbS5wdXRzICJj
YWxsICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgICAgICB3aGVuICJy
ZXQiCisgICAgICAgICAgICAkYXNtLnB1dHMgInJldCIKKyAgICAgICAgd2hlbiAiY2llcSIsICJj
cGVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQpCisg
ICAgICAgIHdoZW4gImNpbmVxIiwgImNwbmVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29t
cGFyZVNldCgic2V0bmUiLCA6aW50KQorICAgICAgICB3aGVuICJjaWEiLCAiY3BhIgorICAgICAg
ICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YSIsIDppbnQpCisgICAgICAgIHdoZW4g
ImNpYWVxIiwgImNwYWVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
YWUiLCA6aW50KQorICAgICAgICB3aGVuICJjaWIiLCAiY3BiIgorICAgICAgICAgICAgaGFuZGxl
WDg2SW50Q29tcGFyZVNldCgic2V0YiIsIDppbnQpCisgICAgICAgIHdoZW4gImNpYmVxIiwgImNw
YmVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YmUiLCA6aW50KQor
ICAgICAgICB3aGVuICJjaWd0IiwgImNwZ3QiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRDb21w
YXJlU2V0KCJzZXRnIiwgOmludCkKKyAgICAgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIKKyAg
ICAgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGdlIiwgOmludCkKKyAgICAgICAg
d2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgi
c2V0bCIsIDppbnQpCisgICAgICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiCisgICAgICAgICAg
ICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisgICAgICAgIHdoZW4gInRp
byIKKyAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6aW50KQorICAgICAgICB3
aGVuICJ0aXMiCisgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmludCkKKyAg
ICAgICAgd2hlbiAidGl6IgorICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDpp
bnQpCisgICAgICAgIHdoZW4gInRpbnoiCisgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJz
ZXRueiIsIDppbnQpCisgICAgICAgIHdoZW4gInRibyIKKyAgICAgICAgICAgIGhhbmRsZVg4NlNl
dFRlc3QoInNldG8iLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAidGJzIgorICAgICAgICAgICAgaGFu
ZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAgICAgICB3aGVuICJ0YnoiCisgICAgICAg
ICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmJ5dGUpCisgICAgICAgIHdoZW4gInRibnoi
CisgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDpieXRlKQorICAgICAgICB3
aGVuICJwZWVrIgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZsICN7b3BlcmFuZHNbMF0udmFs
dWUgKiA0fSglZXNwKSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAg
d2hlbiAicG9rZSIKKyAgICAgICAgICAgICRhc20ucHV0cyAibW92bCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLnZhbHVlICogNH0oJWVzcCkiCisgICAgICAg
IHdoZW4gImNkcWkiCisgICAgICAgICAgICAkYXNtLnB1dHMgImNkcSIKKyAgICAgICAgd2hlbiAi
aWRpdmkiCisgICAgICAgICAgICAkYXNtLnB1dHMgImlkaXZsICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICAgIHdoZW4gImZpaTJkIgorICAgICAgICAgICAgJGFzbS5wdXRz
ICJtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAgICAgICAkYXNtLnB1dHMgInBz
bGxxICQzMiwgJXhtbTciCisgICAgICAgICAgICAkYXNtLnB1dHMgInBvciAleG1tNywgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICAgd2hlbiAiZmQyaWkiCisgICAg
ICAgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUp
fSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAgICRhc20ucHV0
cyAibW92c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAg
ICAgICAgICAkYXNtLnB1dHMgInBzcmxxICQzMiwgJXhtbTciCisgICAgICAgICAgICAkYXNtLnB1
dHMgIm1vdnNkICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
ICB3aGVuICJibyIKKyAgICAgICAgICAgICRhc20ucHV0cyAiam8gI3tvcGVyYW5kc1swXS5hc21M
YWJlbH0iCisgICAgICAgIHdoZW4gImJzIgorICAgICAgICAgICAgJGFzbS5wdXRzICJqcyAje29w
ZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYnoiCisgICAgICAgICAgICAkYXNt
LnB1dHMgImp6ICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJibnoiCisg
ICAgICAgICAgICAkYXNtLnB1dHMgImpueiAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAg
ICAgd2hlbiAibGVhaSIsICJsZWFwIgorICAgICAgICAgICAgJGFzbS5wdXRzICJsZWFsICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJCYWQgb3Bjb2RlOiAje29wY29k
ZX0iCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRp
b25LaW5kLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kX2gKKyNkZWZpbmUgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisKK25hbWVzcGFjZSBKU0Mg
eworCitlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNv
bnN0cnVjdCB9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENvZGVTcGVjaWFs
aXphdGlvbktpbmRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAkocmV2aXNpb24gMTA2ODgxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYg
KzI3LDcgQEAKICNkZWZpbmUgQ29tbW9uU2xvd1BhdGhzX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogCkBAIC00MSw2ICs0MiwzOCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIENvbW1vblNsb3dQYXRocyB7CiAKK0FMV0FZ
U19JTkxJTkUgRXhlY1N0YXRlKiBhcml0eUNoZWNrRm9yKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0
ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAg
ICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBB
U1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7CisgICAgQ29kZUJsb2NrKiBuZXdDb2Rl
QmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2lu
ZCk7CisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gZXhlYy0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKTsKKworICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2Ug
Zm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0
aGUgY2FsbGVyLgorICAgIGlmICghcmVnaXN0ZXJGaWxlLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygp
ICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBU1NFUlQoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CisKKyAg
ICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywg
dGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgorICAgIHNpemVf
dCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXM7CisgICAgUmVnaXN0ZXIqIHNyYyA9IGV4ZWMtPnJlZ2lzdGVycygpOworICAg
IFJlZ2lzdGVyKiBkc3QgPSBleGVjLT5yZWdpc3RlcnMoKSArIGRlbHRhOworCisgICAgaW50IGk7
CisgICAgaW50IGVuZCA9IC1FeGVjU3RhdGU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyk7CisgICAgZm9yIChpID0gLTE7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtp
XSA9IHNyY1tpXTsKKworICAgIGVuZCAtPSBkZWx0YTsKKyAgICBmb3IgKCA7IGkgPj0gZW5kOyAt
LWkpCisgICAgICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7CisKKyAgICBFeGVjU3RhdGUqIG5l
d0V4ZWMgPSBFeGVjU3RhdGU6OmNyZWF0ZShkc3QpOworICAgIEFTU0VSVCgodm9pZCopbmV3RXhl
YyA8PSByZWdpc3RlckZpbGUtPmVuZCgpKTsKKyAgICByZXR1cm4gbmV3RXhlYzsKK30KKwogQUxX
QVlTX0lOTElORSBib29sIG9wSW5zdGFuY2VPZlNsb3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHZhbHVlLCBKU1ZhbHVlIGJhc2VWYWwsIEpTVmFsdWUgcHJvdG8pCiB7CiAgICAgQVNTRVJUKCF2
YWx1ZS5pc0NlbGwoKSB8fCAhYmFzZVZhbC5pc0NlbGwoKSB8fCAhcHJvdG8uaXNDZWxsKCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZp
c2lvbiAxMDY4ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2Rl
R2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVy
LmgiCisjaW5jbHVkZSAiRXhlY3V0aW9uSGFybmVzcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2lu
Y2x1ZGUgIkpJVERyaXZlci5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgpAQCAtODQsNyArODUsNyBA
QCBJbnRyaW5zaWMgTmF0aXZlRXhlY3V0YWJsZTo6aW50cmluc2ljKCkgCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogc3RhdGljIHZvaWQgamV0dGlzb25Db2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBPd25QdHI8VD4mIGNvZGVCbG9jaykKIHsKLSAgICBBU1NFUlQoY29kZUJsb2NrLT5n
ZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2Rl
Ojppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQo
Y29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKICAgICBPd25QdHI8VD4gY29kZUJsb2NrVG9KZXR0
aXNvbiA9IGNvZGVCbG9jay5yZWxlYXNlKCk7CiAgICAgY29kZUJsb2NrID0gc3RhdGljX3BvaW50
ZXJfY2FzdDxUPihjb2RlQmxvY2tUb0pldHRpc29uLT5yZWxlYXNlQWx0ZXJuYXRpdmUoKSk7CkBA
IC0xNjksOSArMTcwLDMwIEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGlt
aXoKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OmppdENvbXBp
bGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29t
cGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVG
b3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQpOworfQorCitpbmxpbmUgY29uc3QgY2hhciogc2FtcGxpbmdEZXNjcmlwdGlv
bihKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisgICAgc3dpdGNoIChqaXRUeXBlKSB7Cisg
ICAgY2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rOgorICAgICAgICByZXR1cm4gIkludGVy
cHJldGVyIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6QmFzZWxpbmVK
SVQ6CisgICAgICAgIHJldHVybiAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAg
Y2FzZSBKSVRDb2RlOjpERkdKSVQ6CisgICAgICAgIHJldHVybiAiREZHIENvbXBpbGF0aW9uIChU
T1RBTCkiOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29t
cGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5O
b2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBD
b21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNh
bXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkp
OwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAg
LTIxMiw3ICsyMzQsNyBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5h
CiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJp
YXRlKCpnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5
cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xvYmFsRGF0YSwgbV9ldmFsQ29k
ZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAj
ZW5kaWYKIApAQCAtMjk3LDkgKzMxOSwxNSBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6
OmNvbXBpbGVPcHRpCiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIFByb2dyYW1FeGVjdXRh
YmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJl
c3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVC
bG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwogSlNPYmplY3QqIFByb2dyYW1FeGVj
dXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSog
c2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGlu
Z1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8g
IkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwp
Iik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlv
bihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGpp
dFR5cGUpOwpAQCAtMzM4LDcgKzM2Niw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6
Y29tcGlsZUludGUKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGls
ZUlmQXBwcm9wcmlhdGUoKmdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2Rl
Rm9yQ2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKCpnbG9iYWxE
YXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAg
ICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC00MTQsNyArNDQyLDcgQEAgRnVuY3Rpb25Db2Rl
QmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6YgogICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0
aXZlKCkpCiAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4o
cmVzdWx0LT5hbHRlcm5hdGl2ZSgpKTsKICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICBBU1NFUlQo
cmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VS
VChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKQEAgLTQ0MCw2ICs0NjgsMTggQEAgSlNPYmplY3QqIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y29tcGlsZU9wdAogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBGdW5j
dGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDYWxsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUo
Z2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENv
ZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRp
ZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQg
RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBw
cm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZv
ckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9s
VGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCk7Cit9CisKIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6
OmNvZGVCbG9ja1dpdGhCeXRlY29kZUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7
CiAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9y
KGtpbmQpOwpAQCAtNDg0LDcgKzUyNCw3IEBAIFBhc3NPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+
IEZ1bmN0aW9uRXgKIAogSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNh
bGxJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9k
ZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29t
cGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1w
bGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsK
ICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC01MDYs
NyArNTQ2LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAg
IG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNhbGwtPnNoYXJlZFN5bWJvbFRhYmxlKCk7
CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3By
aWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9y
Q2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRU
eXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9y
Q2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9yQ2FsbCkp
CiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTUyNiw3ICs1NjYsNyBAQCBKU09iamVj
dCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNj
b3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQog
ewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBp
bGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1w
bGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBV
TlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC01NDgsNyArNTg4LDcgQEAgSlNPYmplY3QqIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9j
a0ZvckNvbnN0cnVjdC0+c2hhcmVkU3ltYm9sVGFibGUoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0g
ICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRD
b2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUpKQor
ICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwg
bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2Rl
Rm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENvZGVG
b3JDb25zdHJ1Y3QpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxMDY4ODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRXhlY3V0YWJsZV9oCiAKICNpbmNsdWRlICJD
YWxsRGF0YS5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJOb2Rl
cy5oIgpAQCAtMzksMTIgKzQwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIERlYnVn
Z2VyOwogICAgIGNsYXNzIEV2YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgRnVuY3Rpb25Db2RlQmxv
Y2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1D
b2RlQmxvY2s7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKICAgICBzdHJ1Y3QgRXhjZXB0
aW9uSW5mbzsKICAgICAKLSAgICBlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9y
Q2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogICAgIGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmly
c3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CiAKICAgICBpbmxpbmUgYm9v
bCBpc0NhbGwoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMzE5LDYgKzMyMCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1
YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJs
ZSBCYXNlOwogCkBAIC0zMzgsNiArMzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAog
I2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xv
YmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJik7CiAjZW5k
aWYKIAogICAgICAgICBFdmFsQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC0zODQs
NiArMzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIFByb2dyYW1F
eGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBT
Y3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTQxMSw2ICs0MTUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGlt
aXplZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShKU0dsb2Jh
bERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIFByb2dyYW1Db2RlQmxvY2smIGdlbmVyYXRlZEJ5
dGVjb2RlKCkKQEAgLTQ1Myw2ICs0NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNl
OwogCkBAIC01MDgsNiArNTE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVO
QUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ2FsbChKU0ds
b2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEm
KTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDYWxsKCkgY29uc3QKQEAg
LTUzNSw2ICs1NDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoSlNHbG9i
YWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERh
dGEmKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3QoKSBj
b25zdApAQCAtNTgyLDYgKzU5MCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAg
ICBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvcihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAg
ICAgICAgICBqaXRDb21waWxlRm9yQ2FsbChnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9y
Q29uc3RydWN0KTsKKyAgICAgICAgICAgIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0
YSk7CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRl
ZEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgRXhlY3V0aW9uSGFybmVzc19oCisjZGVmaW5lIEV4ZWN1dGlv
bkhhcm5lc3NfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoSklU
KQorCisjaW5jbHVkZSAiSklURHJpdmVyLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4K
K2lubGluZSBib29sIHByZXBhcmVGb3JFeGVjdXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklU
Q29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklU
Q29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGlu
IHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRFbnRyeXBvaW50
KGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CisgICAgICAgIGNvZGVCbG9j
ay0+c2V0SklUQ29kZShqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJu
IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIGNvZGVCbG9jaywgaml0Q29kZSwg
aml0VHlwZSk7Cit9CisKK2lubGluZSBib29sIHByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVC
bG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0
aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJ
VFR5cGUgaml0VHlwZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworI2lmIEVOQUJM
RShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAg
ICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAg
IExMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwga2luZCwgaml0Q29kZSwg
aml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGpp
dENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGtpbmQpOworI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRh
LCBjb2RlQmxvY2ssIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjaywgc3ltYm9sVGFibGUs
IGppdFR5cGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShK
SVQpCisKKyNlbmRpZiAvLyBFeGVjdXRpb25IYXJuZXNzX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDEwNjg4MSkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjQsNyArMTI0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgT3duQXJy
YXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSA9IGFkb3B0QXJyYXlQ
dHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPltyZWdpc3RlckFycmF5U2l6ZV0pOwogICAgICAg
ICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVycyA9IHJlZ2lzdGVyQXJyYXkuZ2V0KCkg
KyByZWdpc3Rlck9mZnNldDsKLQorICAgICAgICAKICAgICAgICAgLy8gQ29weSBhbGwgYXJndW1l
bnRzIHRoYXQgY2FuIGJlIGNhcHR1cmVkIGJ5IG5hbWUgb3IgYnkgdGhlIGFyZ3VtZW50cyBvYmpl
Y3QuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9udW1DYXB0dXJlZEFyZ3M7ICsraSkg
ewogICAgICAgICAgICAgaW50IGluZGV4ID0gQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEw
Njg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBK
U0FycmF5OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHN0cnVjdCBT
cGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmllcjxVbmtub3duPiB7CiAgICAgICAg
IHR5cGVkZWYgV3JpdGVCYXJyaWVyPFVua25vd24+IEJhc2U7CkBAIC0xMjIsNiArMTIzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTA2ODgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDkgKzM2LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTR2xvYmFs
T2JqZWN0OwotICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5
TmFtZUFycmF5OworICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGVudW0gRW51bWVyYXRpb25N
b2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywKQEAgLTE2Miw2ICsxNjMs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyog
bV9jbGFzc0luZm87CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJl
OwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oCShyZXZpc2lvbiAxMDY4ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgSlNBY3RpdmF0aW9u
OwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7
CiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0xNDIsNiArMTQzLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1
bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1l
bnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2
aXNpb24gMTA2ODgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkRlYnVn
Z2VyQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNs
dWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgpAQCAtMTQxLDYgKzE0Miw4IEBAIEpTR2xvYmFsRGF0
YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICAsIGtleXdvcmRzKGFkb3B0UHRyKG5l
dyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRlcnByZXRlcigwKQogICAgICwgaGVhcCh0aGlz
LCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFzc0luZm8oJkpTQXJyYXk6OnNfaW5mbykKKyAg
ICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKICNpZiBF
TkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxhc3RTY3JhdGNoQnVmZmVyKDApCiAjZW5kaWYK
QEAgLTIxNiw3ICsyMTksOSBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRh
VHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1bmtzKHRoaXMpKTsKICNlbmRp
ZgogCi0gICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUodGhpcy0+Y2FuVXNlSklUKCkpOworICAg
IGludGVycHJldGVyLT5pbml0aWFsaXplKCZsbGludERhdGEsIHRoaXMtPmNhblVzZUpJVCgpKTsK
KyAgICAKKyAgICBpbml0aWFsaXplSG9zdENhbGxSZXR1cm5WYWx1ZSgpOyAvLyBUaGlzIGlzIG5l
ZWRlZCB0byBjb252aW5jZSB0aGUgbGlua2VyIG5vdCB0byBkcm9wIGhvc3QgY2FsbCByZXR1cm4g
c3VwcG9ydC4KIAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xsZWN0KCk7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24g
MTA2ODgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNiBAQAogI2RlZmluZSBKU0dsb2JhbERhdGFf
aAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oIgotI2luY2x1ZGUg
IkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5jbHVkZSAi
RXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJTdHJv
bmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJOdW1l
cmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlN0cm9u
Zy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJUaW1lb3V0Q2hlY2tlci5o
IgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYgKzY2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAg
Y2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNs
YXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmE7CiAgICAgY2xhc3Mg
UmVnRXhwQ2FjaGU7CkBAIC0yNDEsNiArMjQzLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247CisKKyAgICAgICAgY29u
c3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOworICAgICAgICBjb25zdCBDbGFz
c0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CisKKyAgICAgICAgTExJbnQ6OkRh
dGEgbGxpbnREYXRhOworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0
ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBob3N0Q2FsbFJldHVyblZhbHVl
OwpAQCAtMzQ2LDYgKzM1NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogI3VuZGVmIHJlZ2lzdGVyVHlw
ZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2Jh
bERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKICAgICAgICAgc3RhdGljIEpT
R2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAgdm9pZCBjcmVh
dGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDY4ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAg
IGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CisgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0
b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBSZWdFeHBDb25zdHJ1
Y3RvcjsKQEAgLTMzNiw2ICszMzcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyosIGlu
dCBjb3VudCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVzZXQgaW50
byBpbml0LgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluaXQoSlNPYmplY3QqIHRo
aXNWYWx1ZSk7CiAgICAgICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMDY4ODEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEdldHRlclNl
dHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQmxvY2s7
CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFy
cmF5OwpAQCAtMjY0LDYgKzI2NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU09iamVj
dChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFn
ZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gTm9ib2R5IHNob3VsZCBldmVyIGFzayBhbnkg
b2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0aGluZyBhbHJlYWR5IGtub3duIHRvIGJlIGEgSlNP
YmplY3QuCiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXI7CiAgICAgICAg
IHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7CkBAIC0zNzcsNiArMzgwLDggQEAgQ09NUElM
RV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0IEpTRmluYWxP
YmplY3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAg
ICAgICAgICAgIDogSlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3Jh
Z2UpCiAgICAgICAgIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJv
cGVydHlOYW1lSXRlcmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwNjg4MSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IElkZW50aWZpZXI7CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOwogCiAgICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciA6IHB1YmxpYyBK
U0NlbGwgewogICAgICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtOTYsNiArOTcsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTUHJvcGVydHlO
YW1lSXRlcmF0b3IoRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5h
bWVBcnJheURhdGEsIHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKIAogICAgICAgICBXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiBtX2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTA2ODgxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1N0cmluZzsKKyAgICBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhK
U0dsb2JhbERhdGEqKTsKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsK
QEAgLTI0MCw2ICsyNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7
CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIqKSBjb25zdDsKICAgICAg
ICAgdm9pZCByZXNvbHZlUm9wZVNsb3dDYXNlKFVDaGFyKikgY29uc3Q7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAxMDY4ODEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCA9IDE7IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
IHRvIG1ha2UgZG9jdW1lbnQuYWxsIHVuZGV0ZWN0YWJsZS4KICAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMSA8PCAxOwogICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBPdmVycmlkZXNIYXNJbnN0YW5jZSA9IDEgPDwgMjsKQEAgLTg3LDYgKzg5LDggQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGlz
U2V0T25GbGFnczEodW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA8PSAoMSA8PCA3
KSk7IHJldHVybiBtX2ZsYWdzICYgZmxhZzsgfQogICAgICAgICBib29sIGlzU2V0T25GbGFnczIo
dW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8PCA4KSk7IHJldHVybiBt
X2ZsYWdzMiAmIChmbGFnID4+IDgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFsdWUuY3BwCShyZXZpc2lvbiAxMDY4ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3
IEBAIEpTT2JqZWN0KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEUKIAogY2hhciogSlNW
YWx1ZTo6ZGVzY3JpcHRpb24oKQogewotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZSA9IDY0
OworICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZSA9IDEyODsKICAgICBzdGF0aWMgY2hhciBk
ZXNjcmlwdGlvbltzaXplXTsKIAogICAgIGlmICghKnRoaXMpCkBAIC0xMjcsMTQgKzEyNywxNCBA
QCBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiAgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0
aW9uLCBzaXplLCAiSW50MzI6ICVkIiwgYXNJbnQzMigpKTsKICAgICBlbHNlIGlmIChpc0RvdWJs
ZSgpKSB7CiAjaWYgVVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24s
IHNpemUsICJEb3VibGU6ICVsZiwgJWx4IiwgYXNEb3VibGUoKSwgcmVpbnRlcnByZXREb3VibGVU
b0ludHB0cihhc0RvdWJsZSgpKSk7CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXpl
LCAiRG91YmxlOiAlbHgsICVsZiIsIHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIoYXNEb3VibGUo
KSksIGFzRG91YmxlKCkpOwogI2Vsc2UKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgZG91
YmxlIGFzRG91YmxlOwogICAgICAgICAgICAgdWludDMyX3QgYXNUd29JbnQzMnNbMl07CiAgICAg
ICAgIH0gdTsKICAgICAgICAgdS5hc0RvdWJsZSA9IGFzRG91YmxlKCk7Ci0gICAgICAgIHNucHJp
bnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICUwOHg6JTA4eCIsIGFzRG91Ymxl
KCksIHUuYXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0pOworICAgICAgICBzbnByaW50
ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJTA4eDolMDh4LCAlbGYiLCB1LmFzVHdvSW50
MzJzWzFdLCB1LmFzVHdvSW50MzJzWzBdLCBhc0RvdWJsZSgpKTsKICNlbmRpZgogICAgIH0gZWxz
ZSBpZiAoaXNDZWxsKCkpCiAgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiQ2Vs
bDogJXAiLCBhc0NlbGwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhcmlhYmxlT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCShyZXZpc2lvbiAxMDY4ODEpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM4LDEwICszOCwxMiBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBSZWdpc3RlcjsKIAogICAgIGNsYXNzIEpTVmFyaWFi
bGVPYmplY3QgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAg
ICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgSlNOb25GaW5hbE9iamVjdCBCYXNlOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHJldmlzaW9uIDEwNjg4
MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Miw2ICs1MiwxMCBAQCB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25z
dHJ1Y3RJbmxpCiAKIHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOwogCitpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvckpJVFNvb247CisKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVBZnRlcldhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1p
emVBZnRlckxvbmdXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRP
cHRpbWl6ZUFueXRpbWVTb29uOwpAQCAtMTM3LDYgKzE0MSwxMCBAQCB2b2lkIGluaXRpYWxpemVP
cHRpb25zKCkKICAgICAKICAgICBTRVQobWF4aW11bUlubGluaW5nRGVwdGgsIDUpOwogCisgICAg
U0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwLCAgICAgLTEwMCk7Cisg
ICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbiwgc3RkOjpu
dW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOworICAgIFNFVChleGVjdXRpb25Db3VudGVy
VmFsdWVGb3JKSVRTb29uLCAgICAgICAgICAgIC0xMDApOworCiAgICAgU0VUKGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXAsICAgICAtMTAwMCk7CiAgICAgU0VUKGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwLCAtNTAwMCk7CiAg
ICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uLCBz
dGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4oKSk7CkBAIC0xODUsNiArMTkzLDggQEAg
dm9pZCBpbml0aWFsaXplT3B0aW9ucygpCiAgICAgaWYgKGNwdXNUb1VzZSA8IDEpCiAgICAgICAg
IGNwdXNUb1VzZSA9IDE7CiAgICAgCisgICAgY3B1c1RvVXNlID0gMTsKKyAgICAKICAgICBTRVQo
bnVtYmVyT2ZHQ01hcmtlcnMsIGNwdXNUb1VzZSk7CiAKICAgICBBU1NFUlQoZXhlY3V0aW9uQ291
bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24gPD0gZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXApOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL09wdGlvbnMuaAkocmV2aXNpb24gMTA2ODgxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNywxMCBA
QCBleHRlcm4gdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RyCiAKIGV4dGVybiB1bnNp
Z25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsgLy8gRGVwdGggb2YgaW5saW5lIHN0YWNrLCBzbyAx
ID0gbm8gaW5saW5pbmcsIDIgPSBvbmUgbGV2ZWwsIGV0Yy4KIAorZXh0ZXJuIGludDMyX3QgZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitleHRlcm4gaW50MzJfdCBleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CitleHRlcm4gaW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBleHRlcm4gaW50MzJfdCBleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogZXh0ZXJuIGludDMyX3QgZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA7CiBleHRlcm4gaW50
MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJKHJldmlzaW9u
IDEwNjg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAko
d29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFz
cyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNP
YmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFNjb3Bl
Q2hhaW5JdGVyYXRvcjsKICAgICBjbGFzcyBTbG90VmlzaXRvcjsKICAgICAKQEAgLTkxLDYgKzky
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0
IENsYXNzSW5mbyBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gT3ZlcnJpZGVzVmlzaXRDaGlsZHJlbjsKICAgICB9Owog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAJKHJl
dmlzaW9uIDEwNjg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVy
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMiw3ICszMjIsNyBAQCBTdHJ1Y3R1cmUqIFN0cnVj
dHVyZTo6YWRkUHJvcGVydHlUcmFuc2l0CiAgICAgICAgICAgICB0cmFuc2l0aW9uLT5ncm93UHJv
cGVydHlTdG9yYWdlQ2FwYWNpdHkoKTsKICAgICAgICAgcmV0dXJuIHRyYW5zaXRpb247CiAgICAg
fQotCisgICAgCiAgICAgU3RydWN0dXJlKiB0cmFuc2l0aW9uID0gY3JlYXRlKGdsb2JhbERhdGEs
IHN0cnVjdHVyZSk7CiAKICAgICB0cmFuc2l0aW9uLT5tX2NhY2hlZFByb3RvdHlwZUNoYWluLnNl
dE1heUJlTnVsbChnbG9iYWxEYXRhLCB0cmFuc2l0aW9uLCBzdHJ1Y3R1cmUtPm1fY2FjaGVkUHJv
dG90eXBlQ2hhaW4uZ2V0KCkpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmgJKHJldmlzaW9uIDEwNjg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNs
YXNzIFByb3BlcnR5TmFtZUFycmF5OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5RGF0YTsK
ICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKQEAgLTE5Niw2ICsxOTcsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5m
bzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBTdHJ1Y3R1cmUoSlNH
bG9iYWxEYXRhJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIHByb3RvdHlwZSwgY29uc3QgVHlw
ZUluZm8mLCBjb25zdCBDbGFzc0luZm8qKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0
YSYpOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJiwgY29uc3QgU3RydWN0dXJlKik7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFpbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWlu
LmgJKHJldmlzaW9uIDEwNjg4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZUNoYWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNw
YWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
U3RydWN0dXJlOwogCiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW4gOiBwdWJsaWMgSlNDZWxsIHsK
QEAgLTc0LDYgKzc1LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgIHByaXZh
dGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAg
IAogICAgICAgICBTdHJ1Y3R1cmVDaGFpbihKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqKTsKICAg
ICAgICAgc3RhdGljIHZvaWQgZGVzdHJveShKU0NlbGwqKTsKICAgICAgICAgT3duQXJyYXlQdHI8
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gPiBtX3ZlY3RvcjsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvSW5saW5lQVNNLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3d0Zi9JbmxpbmVBU00uaAkocmV2aXNpb24gMTA2ODgxKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3d0Zi9JbmxpbmVBU00uaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNCArNzAsMTEgQEAK
ICNkZWZpbmUgSElERV9TWU1CT0wobmFtZSkKICNlbmRpZgogCisvLyBGSVhNRTogZmlndXJlIG91
dCBob3cgdGhpcyB3b3JrcyBvbiBhbGwgdGhlIHBsYXRmb3Jtcy4gSSBrbm93IHRoYXQKKy8vIG9u
IExpbnV4LCB0aGUgcHJlZmVycmVkIGZvcm0gaXMgIi5Mc3R1ZmYiIGFzIG9wcG9zZWQgdG8gIkxz
dHVmZiIuCisvLyBEb24ndCBrbm93IGFib3V0IGFueSBvZiB0aGUgb3RoZXJzLgorI2lmIFBMQVRG
T1JNKE1BQykKKyNkZWZpbmUgTE9DQUxfTEFCRUxfU1RSSU5HKG5hbWUpICJMIiAjbmFtZQorI2Vu
ZGlmCisKICNlbmRpZiAvLyBJbmxpbmVBU01faApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAkocmV2aXNpb24gMTA2ODgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC05MjMsNiArOTIzLDE4IEBACiAjZGVmaW5l
IEVOQUJMRV9KSVQgMQogI2VuZGlmCiAKKy8qIE9uIHNvbWUgb2YgdGhlIHBsYXRmb3JtcyB3aGVy
ZSB3ZSBoYXZlIGEgSklULCB3ZSB3YW50IHRvIGFsc28gaGF2ZSB0aGUgCisgICBsb3ctbGV2ZWwg
aW50ZXJwcmV0ZXIuICovCisjaWYgIWRlZmluZWQoRU5BQkxFX0xMSU5UKSAmJiBFTkFCTEUoSklU
KSAmJiBPUyhEQVJXSU4pICYmIChDUFUoWDg2KSB8fCBDUFUoQVJNX1RIVU1CMikpICYmIFVTRShK
U1ZBTFVFMzJfNjQpCisjZGVmaW5lIEVOQUJMRV9MTElOVCAxCisjZW5kaWYKKworLyogSWYgd2Ug
aGF2ZSBMTEludCBlbmFibGVkIGFuZCB0aGUgSklUIGVuYWJsZWQsIHdlIGFsc28gZW5hYmxlIE9T
UmluZyBmcm9tCisgICBMTEludCB0byB0aGUgSklULiAqLworI2lmICFkZWZpbmVkKEVOQUJMRV9M
TElOVF9PU1JfVE9fSklUKSAmJiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoTExJTlQpCisjZGVmaW5l
IEVOQUJMRV9MTElOVF9PU1JfVE9fSklUIDEKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxF
X0RGR19KSVQpICYmIEVOQUJMRShKSVQpCiAvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gWDg2IGFu
ZCBYODZfNjQuICBPbmx5IHRlc3RlZCBvbiBNYWMgYW5kIEdOVS9MaW51eC4gKi8KICNpZiAoQ1BV
KFg4NikgfHwgQ1BVKFg4Nl82NCkpICYmIChQTEFURk9STShNQUMpIHx8IE9TKExJTlVYKSkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAko
cmV2aXNpb24gMTA2ODgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExp
bmtlZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsOCBAQCBwdWJsaWM6CiAKICAg
ICBpdGVyYXRvciBiZWdpbigpOwogICAgIGl0ZXJhdG9yIGVuZCgpOworICAgIAorICAgIGJvb2wg
aXNFbXB0eSgpIHsgcmV0dXJuIGJlZ2luKCkgPT0gZW5kKCk7IH0KIAogcHJpdmF0ZToKICAgICBS
YXdOb2RlIG1faGVhZFNlbnRpbmVsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90
ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAxMDY4ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3
IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZTdHJpbmcgKiBDRlN0cmkKIC8vIExhbmRpbmcg
dGhlIGZpbGUgbW92ZXMgaW4gb25lIHBhdGNoLCB3aWxsIGZvbGxvdyBvbiB3aXRoIHBhdGNoZXMg
dG8gY2hhbmdlIHRoZSBuYW1lc3BhY2VzLgogbmFtZXNwYWNlIEpTQyB7CiBzdHJ1Y3QgSWRlbnRp
ZmllckNTdHJpbmdUcmFuc2xhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogdGVt
cGxhdGUgPHR5cGVuYW1lIFQ+IHN0cnVjdCBJZGVudGlmaWVyQ2hhckJ1ZmZlclRyYW5zbGF0b3I7
CiBzdHJ1Y3QgSWRlbnRpZmllckxDaGFyRnJvbVVDaGFyVHJhbnNsYXRvcjsKIH0KQEAgLTcyLDcg
KzczLDggQEAgY2xhc3MgU3RyaW5nSW1wbCB7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6OlN1YnN0
cmluZ1RyYW5zbGF0b3I7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6OlVDaGFyQnVmZmVyVHJhbnNs
YXRvcjsKICAgICBmcmllbmQgY2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKLQorICAgIGZyaWVuZCBj
bGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKIHByaXZhdGU6CiAgICAgZW51
bSBCdWZmZXJPd25lcnNoaXAgewogICAgICAgICBCdWZmZXJJbnRlcm5hbCwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDEwNjg4MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAxLTI2ICBGaWxpcCBQaXpsbyAgPGZwaXps
b0BhcHBsZS5jb20+CisKKyAgICAgICAgSlNDIHNob3VsZCBiZSBhIHRyaXBsZS10aWVyIFZNCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgxMgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMTAwNzk2OTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCBFRkwncyBidWlsZCBzeXN0ZW0gdG8gaW5j
bHVkZSBhIG5ldyBkaXJlY3RvcnkgaW4gSmF2YVNjcmlwdENvcmUuCisgICAgICAgIAorICAgICAg
ICBObyBuZXcgdGVzdHMgYmVjYXVzZSBubyBiZWhhdmlvciBjaGFuZ2VkLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisKIDIwMTItMDItMDYgIEdyZWdnIFRhdmFyZXMgIDxnbWFuQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgQWRkIHdlYkdMRXJyb3JzVG9Db25zb2xlRW5hYmxlZCBTZXR0aW5n
cyBmbGFnCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA2ODgxKQorKysgU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcg
QEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9pbnRlcnByZXRlciIK
ICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcGFyc2VyIgogICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9y
dW50aW1lIgpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNjg4MSkKKysrIFNvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMjYgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mgc2hvdWxkIGJlIGEg
dHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3OTY5ND4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1
aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4K
KyAgICAgICAgCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMTItMDItMDYgIFJvYmlu
IENhbyAgPHJvYmluLmNhb0B0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0JsYWNrQmVy
cnldIFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgaW4gQmFja2luZ1N0b3JlCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDEwNjg4MSkKKysrIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgU0VUKFdlYktpdF9JTkNMVURFX0RJ
UkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vaml0IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9wYXJzZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxl
ciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUiCkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDY4ODEpCisr
KyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0w
MS0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91
bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoYW5nZWQg
RUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3Jp
cHRDb3JlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0Ogor
CiAyMDEyLTAyLTAyICBIYWppbWUgTW9ycml0YSAgPG1vcnJpdGFAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtQZXJmb3JtYW5jZVRlc3RzXSBFYWNoIERyb21hZW8gdGVzdCBuZWVkcyBpdHMgbGFu
ZGluZyBodG1sLgpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAko
cmV2aXNpb24gMTA2ODgxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC02OCwxMCArNjgsMTIgQEAgU0VUKER1bXBSZW5kZXJUcmVl
X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0KICAgICAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vQVBJCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2Fzc2VtYmxl
cgorICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZQogICAgICR7SkFWQVNDUklQVENP
UkVfRElSfS9kZmcKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaGVhcAogICAgICR7SkFWQVND
UklQVENPUkVfRElSfS9pbnRlcnByZXRlcgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQK
KyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vcnVudGltZQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9Gb3J3YXJkaW5nSGVhZGVycwog
ICAgICR7SkFWQVNDUklQVENPUkVfRElSfS93dGYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127001</attachid>
            <date>2012-02-14 11:19:01 -0800</date>
            <delta_ts>2012-02-18 11:10:37 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_93.diff</filename>
            <type>text/plain</type>
            <size>502186</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA3NzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM3MiBA
QAorMjAxMi0wMi0wMiAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQncyBj
YWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVkIExM
SW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAgICAg
d2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRpZXIg
dXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhvdC4K
KyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3JtIG9m
IG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkgaXMg
Y29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hpY2gK
KyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBhIFR1
cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRpcmVj
dCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJhc2lj
YWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4KKyAg
ICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhlIHJl
c3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5nIGlu
IHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFuZAor
ICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVxdWly
ZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAgICAK
KyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9sZCBp
bnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRoIHRy
aXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisgICAg
ICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBpbXBy
b3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2UgcmVk
dWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05VbWFr
ZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcmk6CisgICAgICAgICog
SmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmVDb21tb24udnNwcm9wczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ov
SmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQ6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAg
ICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNz
ZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKToKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJl
c3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDogQWRkZWQuCisg
ICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpDYWxs
TGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAgICAo
SlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvQ2Fs
bExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToKKyAg
ICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAgIChDYWxsTGlu
a1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxvY2sp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29kZUJs
b2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6dW5saW5rQ2FsbHMpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0luY29t
aW5nQ2FsbHMpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpieXRl
Y29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29uKToK
KyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpG
dW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29kZUJs
b2NrOjpqaXRDb21waWxlSW1wbCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6OmppdENv
bXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJ
bXBsKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYW5kbGVCeXRlY29kZURpc2NhcmRpbmdP
cHBvcnR1bml0eSk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmg6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpiYXNl
bGluZVZlcnNpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmxpbmtJbmNvbWluZ0NhbGwp
OgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpoYXNP
cHRpbWl6ZWRSZXBsYWNlbWVudCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkUHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRMTEludENh
bGxMaW5rSW5mbyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6YWRkR2xvYmFsUmVzb2x2ZUlu
Zm8pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Om51bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZv
cyk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5
dGVjb2RlT2Zmc2V0KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VTbG93
Q2FzZSk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6Y291bGRUYWtlU2xvd0Nhc2UpOgorICAg
ICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZVNwZWNpYWxGYXN0Q2FzZSk6CisgICAg
ICAgIChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlRGVlcGVzdFNsb3dDYXNlKToKKyAgICAg
ICAgKEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VBbnlTbG93Q2FzZSk6CisgICAgICAgIChK
U0M6OkNvZGVCbG9jazo6YWRkRnJlcXVlbnRFeGl0U2l0ZSk6CisgICAgICAgIChKU0M6OkNvZGVC
bG9jazo6ZG9udEpJVEFueXRpbWVTb29uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRB
ZnRlcldhcm1VcCk6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6aml0U29vbik6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGxpbnRFeGVjdXRlQ291bnRlcik6CisgICAgICAgIChQcm9ncmFt
Q29kZUJsb2NrKToKKyAgICAgICAgKEV2YWxDb2RlQmxvY2spOgorICAgICAgICAoRnVuY3Rpb25D
b2RlQmxvY2spOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgorICAgICAg
ICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KToKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5
dGVjb2RlL0dldEJ5SWRTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6R2V0
QnlJZFN0YXR1cyk6CisgICAgICAgIChKU0M6OkdldEJ5SWRTdGF0dXM6Ondhc1NlZW5JbkpJVCk6
CisgICAgICAgIChHZXRCeUlkU3RhdHVzKToKKyAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlv
bi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SW5zdHJ1Y3Rpb246Okluc3RydWN0
aW9uKToKKyAgICAgICAgKEluc3RydWN0aW9uKToKKyAgICAgICAgKiBieXRlY29kZS9MTEludENh
bGxMaW5rSW5mby5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OkxMSW50
Q2FsbExpbmtJbmZvOjpMTEludENhbGxMaW5rSW5mbyk6CisgICAgICAgIChMTEludENhbGxMaW5r
SW5mbyk6CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjp+TExJbnRDYWxsTGlua0lu
Zm8pOgorICAgICAgICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6aXNMaW5rZWQpOgorICAgICAg
ICAoSlNDOjpMTEludENhbGxMaW5rSW5mbzo6dW5saW5rKToKKyAgICAgICAgKiBieXRlY29kZS9N
ZXRob2RDYWxsTGlua1N0YXR1cy5jcHA6CisgICAgICAgIChKU0M6Ok1ldGhvZENhbGxMaW5rU3Rh
dHVzOjpjb21wdXRlRm9yKToKKyAgICAgICAgKiBieXRlY29kZS9PcGNvZGUuaDoKKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OnBhZE9wY29kZU5hbWUpOgorICAgICAgICAqIGJ5dGVjb2Rl
L1B1dEJ5SWRTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpQdXRCeUlkU3RhdHVzOjpjb21wdXRl
RnJvbUxMSW50KToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6
OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaDoKKyAgICAg
ICAgKFB1dEJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVy
YXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZSk6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2x2ZVdpdGhCYXNlKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRHZXRCeUlkKToKKyAgICAgICAg
KEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmVtaXRDYWxsKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6
OmVtaXRDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENh
dGNoKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlND
OjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpnZXRQcmVkaWN0aW9uV2l0aG91dE9TUkV4aXQpOgorICAg
ICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2spOgorICAgICAgICAqIGRmZy9E
RkdDYXBhYmlsaXRpZXMuaDoKKyAgICAgICAgKEpTQzo6REZHOjpjYW5Db21waWxlT3Bjb2RlKToK
KyAgICAgICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
T3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogaGVhcC9IZWFwLmNwcDoKKyAgICAgICAgKEpTQzo6
SGVhcDo6Y29sbGVjdCk6CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSGVhcCk6CisgICAgICAgICogaGVhcC9NYXJrU3RhY2suY3BwOgorICAgICAgICAo
SlNDOjp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAqIGludGVycHJldGVy
L0NhbGxGcmFtZS5oOgorICAgICAgICAoRXhlY1N0YXRlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0
YXRlOjpjdXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmluaXRpYWxpemUpOgorICAgICAgICAoSlND
OjpJbnRlcnByZXRlcjo6aXNPcGNvZGUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6dW53
aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnByaXZhdGVFeGVjdXRl
KToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcik6CisgICAg
ICAgICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChJbnRlcnByZXRlcik6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpnZXRPcGNvZGUpOgor
ICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlSUQpOgorICAgICAgICAoSlNDOjpJ
bnRlcnByZXRlcjo6ZW5hYmxlZCk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxl
Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoUmVnaXN0ZXJGaWxlKToKKyAgICAgICAgKiBq
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpOgorICAgICAgICAq
IGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKEpTQzo6aW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJuVmFsdWUpOgorICAgICAgICAqIGppdC9K
SVQuY3BwOgorICAgICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAg
ICAgICAoSlNDOjpKSVQ6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6
SklUOjpwcml2YXRlQ29tcGlsZSk6CisgICAgICAgICogaml0L0pJVENvZGUuaDoKKyAgICAgICAg
KEpTQzo6SklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKToKKyAgICAgICAgKEpJVENvZGUpOgorICAg
ICAgICAoSlNDOjpKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZSk6CisgICAgICAgIChKU0M6OkpJVENv
ZGU6OkpJVENvZGUpOgorICAgICAgICAqIGppdC9KSVREcml2ZXIuaDoKKyAgICAgICAgKEpTQzo6
aml0Q29tcGlsZUlmQXBwcm9wcmlhdGUpOgorICAgICAgICAoSlNDOjpqaXRDb21waWxlRnVuY3Rp
b25JZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKiBqaXQvSklURXhjZXB0aW9ucy5jcHA6CisgICAg
ICAgIChKU0M6OmppdFRocm93KToKKyAgICAgICAgKiBqaXQvSklUU3R1YnMuY3BwOgorICAgICAg
ICAoSlNDOjpERUZJTkVfU1RVQl9GVU5DVElPTik6CisgICAgICAgIChKU0MpOgorICAgICAgICAq
IGppdC9KU0ludGVyZmFjZUpJVC5oOgorICAgICAgICAqIGxsaW50OiBBZGRlZC4KKyAgICAgICAg
KiBsbGludC9MTEludENvbW1vbi5oOiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9MTEludERhdGEu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6
OkRhdGEpOgorICAgICAgICAoSlNDOjpMTEludDo6RGF0YTo6fkRhdGEpOgorICAgICAgICAqIGxs
aW50L0xMSW50RGF0YS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6
CisgICAgICAgIChEYXRhKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6OmV4Y2VwdGlvbklu
c3RydWN0aW9ucyk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjpvcGNvZGVNYXApOgorICAg
ICAgICAqIGxsaW50L0xMSW50RW50cnlwb2ludHMuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEZ1bmN0aW9uRW50cnlwb2ludCk6CisgICAgICAg
IChKU0M6OkxMSW50OjpnZXRFdmFsRW50cnlwb2ludCk6CisgICAgICAgIChKU0M6OkxMSW50Ojpn
ZXRQcm9ncmFtRW50cnlwb2ludCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgIChKU0M6
OkxMSW50OjpnZXRFbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9MTEludEV4Y2VwdGlvbnMu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmludGVy
cHJldGVyVGhyb3dJbkNhbGxlcik6CisgICAgICAgIChKU0M6OkxMSW50OjpyZXR1cm5Ub1Rocm93
Rm9yVGhyb3duRXhjZXB0aW9uKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnJldHVyblRvVGhyb3cp
OgorICAgICAgICAoSlNDOjpMTEludDo6Y2FsbFRvVGhyb3cpOgorICAgICAgICAqIGxsaW50L0xM
SW50RXhjZXB0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6
CisgICAgICAgICogbGxpbnQvTExJbnRIZWxwZXJzLmNwcDogQWRkZWQuCisgICAgICAgIChMTElu
dCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV9vcGVyYW5kKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX3ZhbHVlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkxM
SU5UX0hFTFBFUl9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnRyYWNlRnVuY3Rpb25Qcm9s
b2d1ZSk6CisgICAgICAgIChKU0M6OkxMSW50OjpzaG91bGRKSVQpOgorICAgICAgICAoSlNDOjpM
TEludDo6ZW50cnlPU1IpOgorICAgICAgICAoSlNDOjpMTEludDo6cmVzb2x2ZUdsb2JhbCk6Cisg
ICAgICAgIChKU0M6OkxMSW50OjpnZXRCeVZhbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpoYW5k
bGVIb3N0Q2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpzZXRVcENhbGwpOgorICAgICAgICAo
SlNDOjpMTEludDo6Z2VuZXJpY0NhbGwpOgorICAgICAgICAqIGxsaW50L0xMSW50SGVscGVycy5o
OiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAgIChMTEludCk6CisgICAgICAgICogbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExM
SW50T2Zmc2V0c0V4dHJhY3Rvcik6CisgICAgICAgIChKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rv
cjo6ZHVtbXkpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3Mu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVy
YXRlVGh1bmtXaXRoSnVtcFRvKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2Fs
bEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAoSlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JD
b25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0
aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50
OjpmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcik6CisgICAgICAg
IChKU0M6OkxMSW50OjpldmFsRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxM
SW50Ojpwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgICogbGxpbnQvTExJbnRU
aHVua3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoTExJbnQpOgorICAgICAg
ICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtOiBBZGRlZC4KKyAgICAgICAgKiBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDogQWRkZWQuCisgICAgICAgICogbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5oOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtOiBBZGRlZC4KKyAg
ICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L2FzbS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9hc3QucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVh
c20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGlu
ZWFzbS9pbnN0cnVjdGlvbnMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb2Zmc2V0
X2V4dHJhY3Rvcl9jb25zdGFudHMucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vb2Zm
c2V0cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9vcHQucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9zZWxmX2hhc2gucmI6
IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2V0dGluZ3MucmI6IEFkZGVkLgorICAgICAg
ICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNt
L3g4Ni5yYjogQWRkZWQuCisgICAgICAgICogcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5k
Lmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0NvbW1vblNsb3dQ
YXRocy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgor
ICAgICAgICAoQ29tbW9uU2xvd1BhdGhzKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUu
Y3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OkV2
YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6
OnNhbXBsaW5nRGVzY3JpcHRpb24pOgorICAgICAgICAoSlNDOjpFdmFsRXhlY3V0YWJsZTo6Y29t
cGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6UHJvZ3JhbUV4ZWN1dGFibGU6OmppdENvbXBp
bGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToK
KyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6
CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGlsZUZvckNhbGwpOgor
ICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDb25zdHJ1Y3Qp
OgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJu
YWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1
Y3RJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmg6CisgICAgICAgIChK
U0MpOgorICAgICAgICAoRXZhbEV4ZWN1dGFibGUpOgorICAgICAgICAoUHJvZ3JhbUV4ZWN1dGFi
bGUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxlKToKKyAgICAgICAgKEpTQzo6RnVuY3Rp
b25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGlv
bkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpwcmVwYXJl
Rm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9u
KToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlvbi5oOgorICAgICAgICAoSlNDOjpKU0Fj
dGl2YXRpb246OnRlYXJPZmYpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheS5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKEpTQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDZWxsKToKKyAgICAgICAgKiBydW50aW1lL0pT
RnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0Z1bmN0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsRGF0
YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsRGF0YSk6CisgICAgICAgICogcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsT2JqZWN0
KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNPYmplY3QpOgorICAgICAgICAoSlNGaW5hbE9iamVjdCk6CisgICAgICAgICogcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgICogcnVudGltZS9KU1N0cmluZy5oOgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKEpTU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlw
ZUluZm8uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChUeXBlSW5mbyk6CisgICAgICAgICog
cnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNWYWx1ZTo6ZGVzY3JpcHRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTVmFyaWFibGVPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5j
cHA6CisgICAgICAgIChPcHRpb25zKToKKyAgICAgICAgKEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6
ZU9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgorICAgICAgICAoT3B0aW9u
cyk6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAg
ICAgICAoU2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoK
KyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXRpb24pOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3RydWN0
dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6CisgICAgICAgIChKU0Mp
OgorICAgICAgICAoU3RydWN0dXJlQ2hhaW4pOgorICAgICAgICAqIHd0Zi9JbmxpbmVBU00uaDoK
KyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAgICAgKiB3dGYvU2VudGluZWxMaW5rZWRM
aXN0Lmg6CisgICAgICAgIChTZW50aW5lbExpbmtlZExpc3QpOgorICAgICAgICAoV1RGOjpTZW50
aW5lbExpbmtlZExpc3Q6OmlzRW1wdHkpOgorICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwu
aDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChTdHJpbmdJbXBsKToKKwogMjAxMi0wMi0xNCAg
RXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVXBzdHJlYW0gQW5kcm9p
ZCdzIGFkZGl0aW9ucyB0byBQbGF0Zm9ybS5oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAxMDc3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAgU0VUKEphdmFTY3Jp
cHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2Rl
YnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9sbGlu
dCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3BhcnNlciIKICAgICAiJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcnVudGltZSIK
QEAgLTk3LDYgKzk4LDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBpbnRlcnBy
ZXRlci9SZWdpc3RlckZpbGUuY3BwCiAKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAK
KyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKICAgICBqaXQvSklUQXJpdGhtZXRpYzMy
XzY0LmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljLmNwcAogICAgIGppdC9KSVRDYWxsMzJfNjQu
Y3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAxMDc3
MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29w
eSkKQEAgLTU3LDYgKzU3LDcgQEAgamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1JJChz
cmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlciBcCiAJLUkkKHNyY2Rpcikv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdCBcCisJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50IFwK
IAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyIFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIgXAogCS1JJChzcmNkaXIpL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDc3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBAQCBq
YXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9T
SDRBc3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZBc3Nl
bWJsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVu
dGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5mby5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBcCkBAIC0x
MDIsNiArMTAzLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENh
bGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGluZUluZm8u
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5mby5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua0luZm8u
aCBcCkBAIC0yODUsNiArMjg3LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Db21wYWN0SklUQ29kZU1hcC5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRB
cml0aG1ldGljLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQu
Y3BwIFwKQEAgLTMwOCw2ICszMTIsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnREYXRhLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4zMi9zdGRi
b29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4zMi9zdGRpbnQuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggXApAQCAtMzU4LDYgKzM2Myw3
IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2Fs
bERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmggXAor
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3BwIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBcCkBAIC0zODYs
NiArMzkyLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRp
b25IYXJuZXNzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29u
c3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNv
bnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJv
dG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
cHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5w
cmkJKHJldmlzaW9uIDEwNzcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAgSU5DTFVERVBBVEggKz0g
XAogICAgICQkU09VUkNFX0RJUi9kZWJ1Z2dlciBcCiAgICAgJCRTT1VSQ0VfRElSL2ludGVycHJl
dGVyIFwKICAgICAkJFNPVVJDRV9ESVIvaml0IFwKKyAgICAkJFNPVVJDRV9ESVIvbGxpbnQgXAog
ICAgICQkU09VUkNFX0RJUi9wYXJzZXIgXAogICAgICQkU09VUkNFX0RJUi9wcm9maWxlciBcCiAg
ICAgJCRTT1VSQ0VfRElSL3J1bnRpbWUgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Rh
cmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJ
KHJldmlzaW9uIDEwNzcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAgU09VUkNFUyArPSBcCiAgICAgaW50ZXJw
cmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhl
ZFZNUG9vbC5jcHAgXAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBcCisgICAgaml0
L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKICAgICBqaXQvSklUQXJpdGhtZXRpYy5jcHAgXAog
ICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwKICAgICBqaXQvSklUQ2FsbC5jcHAgXApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwNzcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xNzYyLDYgKzE3NjIsMTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+
CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caml0XEhvc3RDYWxsUmV0dXJuVmFs
dWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxqaXRcSklULmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0xODQ3LDYgKzE4NTEsMTQg
QEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKKwkJCU5hbWU9ImxsaW50Igor
CQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGxsaW50XExMSW50RGF0YS5o
IgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKIAkJCU5hbWU9Imlu
dGVycHJldGVyIgogCQkJPgogCQkJPEZpbGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24u
dnNwcm9wcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMJKHJl
dmlzaW9uIDEwNzcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52
Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwkod29ya2lu
ZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJPFRvb2wKIAkJTmFtZT0iVkNDTENvbXBpbGVy
VG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0
aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7Li4v
Li4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL2Rm
Zy87Li4vLi4vaml0LzsuLi8uLi9ydW50aW1lLzsuLi8uLi90b29scy87Li4vLi4vYnl0ZWNvZGUv
Oy4uLy4uL2ludGVycHJldGVyLzsuLi8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fzc2Vt
Ymxlci87Li4vLi4vZGVidWdnZXIvOy4uLy4uL2hlYXAvOyZxdW90OyQoV2ViS2l0TGlicmFyaWVz
RGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHBy
aXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7
JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVv
dDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90Ozsm
cXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OyIKKwkJQWRk
aXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQ
SS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL2RmZy87Li4vLi4vaml0
LzsuLi8uLi9sbGludC87Li4vLi4vcnVudGltZS87Li4vLi4vdG9vbHMvOy4uLy4uL2J5dGVjb2Rl
LzsuLi8uLi9pbnRlcnByZXRlci87Li4vLi4vd3RmLzsuLi8uLi9wcm9maWxlcjsuLi8uLi9hc3Nl
bWJsZXIvOy4uLy4uL2RlYnVnZ2VyLzsuLi8uLi9oZWFwLzsmcXVvdDskKFdlYktpdExpYnJhcmll
c0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxw
cml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlJnF1b3Q7
OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1
b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7
JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDsiCiAJCVBy
ZXByb2Nlc3NvckRlZmluaXRpb25zPSJfX1NURF9DIgogCQlGb3JjZWRJbmNsdWRlRmlsZXM9IklD
VVZlcnNpb24uaCIKIAkvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZpbGVzLmNtZAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3Jl
L2NvcHktZmlsZXMuY21kCShyZXZpc2lvbiAxMDc3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL2NvcHktZmlsZXMuY21kCSh3
b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIGZvciAlJWQgaW4gKAogICAgIGRlYnVnZ2Vy
CiAgICAgaW50ZXJwcmV0ZXIKICAgICBqaXQKKyAgICBsbGludAogICAgIHBhcnNlcgogICAgIHBy
b2ZpbGVyCiAgICAgcnVudGltZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJl
dmlzaW9uIDEwNzcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsMTUgQEAK
IAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAqLwor
CQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLyA9IHsKKwkJCWlz
YSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2
ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhB
Z2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJ
CQkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAq
LywKKwkJCSk7CisJCQluYW1lID0gIkxMSW50IE9mZnNldHMiOworCQkJcHJvZHVjdE5hbWUgPSAi
RGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKIAkJNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCIC8qIERl
cml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKIAkJCWJ1
aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2NUZCM0Y3NzA5RDExRUJEMDBGNDlERUIgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkRlcml2ZWQgU291cmNl
cyIgKi87CkBAIC0xNCw2ICsyMyw5IEBACiAJCQkJNjVGQjNGNjUwOUQxMUU5MTAwRjQ5REVCIC8q
IEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk1RDM1REVFMTBDN0MxNDBCMDA4NjQ4
QjIgLyogR2VuZXJhdGUgRFRyYWNlIGhlYWRlciAqLywKIAkJCSk7CisJCQlkZXBlbmRlbmNpZXMg
PSAoCisJCQkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kg
Ki8sCisJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcHJvZHVjdE5hbWUg
PSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJfTsKQEAgLTQ4LDYgKzYwLDEwIEBACiAJCTBCQUM5NEEw
MTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0MDBD
RjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCQ0Q4MzU3MTQ4NTg0NTIwMEVBMjAwMyAv
KiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYyOEEy
OTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6
ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLzsg
fTsKKwkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk2MTRCQ0Y0
NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExM
SW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi87IH07CisJ
CTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRG
IC8qIExMSW50VGh1bmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBNTE0QkNGNTA0
MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlckluZm8u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E4
MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBF
eHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5m
by5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC01
OCw5ICs3NCwxMyBAQAogCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExp
bmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjcxNEJDRjhF
MTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFs
UmVzb2x2ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0
ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29k
ZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwRkM0NTgxNEJEMTVG
MTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENv
bW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTZENzI2MTQy
QzM5QzAwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rv
ci5jcHAgKi87IH07CiAJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjY2MTRC
RTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhlY3V0
aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RDE0QkU3
MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8q
IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVD
b252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjI0MkRBNzEz
RjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAwN0FERDRD
IC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU2RjE0NzM4RjMxMDAxMjFFNEYgLyogREZHQ29k
ZUJsb2Nrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU3MDE0NzM4RjM1MDAx
MjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nr
cy5jcHAgKi87IH07CkBAIC03MSw2ICs5MSwxOSBAQAogCQkwRjQzMTczODE0NkJBQzY5MDA3RTM4
OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0
NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwN0Yx
NEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBBMzE0
QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJ
bnRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RjE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLzsgc2V0dGluZ3MgPSB7Q09NUElMRVJf
RkxBR1MgPSAiLVduby11bnVzZWQtcGFyYW1ldGVyIjsgfTsgfTsKKwkJMEY0NjgwQTUxNEJBN0Y4
RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVscGVy
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBG
NDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTExNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi87IH07CisJCTBGNDY4MEE4
MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8q
IExMSW50RXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAv
KiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0IxNEJCQjE3
MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExM
SW50T2ZmbGluZUFzbUNvbmZpZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVy
cHJldGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAqLzsg
fTsKKwkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM4MTRC
QkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcy
IC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLzsgfTsK
KwkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcy
IC8qIExMSW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVl
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4
MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLzsgfTsKKwkJ
MEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEQxMTRCQkM1Rjgw
MEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1NUYwRjQxNEQxMDYzOTAwQUM3NjQ5IC8qIEFi
c3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovOyB9OwogCQkw
RjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8q
IEFic3RyYWN0UEMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXpl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1RjA4
Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDA4LDcgKzQ0MSw3IEBA
CiAJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUUxMTE3RTU3ODEwMERG
NUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlC
RTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87IH07CiAJCTg2QkIwOUMxMTM4
RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRj
aC5oICovOyB9OwotCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5
MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyB9OworCQk4NkMzNkVFQTBF
RTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNy
b0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERDEx
QTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9OwogCQk4NkM1NjhF
MTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3RjAg
LyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3RjdG
MCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5oICov
OyB9OwpAQCAtNzc4LDYgKzgxMSwyMCBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTBGNDY4MEIx
MTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlpc2Eg
PSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5MEZF
ODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAxOwor
CQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzI7CisJCQly
ZW1vdGVJbmZvID0gIkxMSW50IE9mZnNldHMiOworCQl9OworCQkwRjQ2ODBCMzE0QkE4MjE0MDBC
RkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29udGFp
bmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFB
QzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90ZUds
b2JhbElEU3RyaW5nID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyOworCQkJcmVtb3RlSW5mbyA9
IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJMTQxMjE0QkUwQTQ5MTkwRTAwNDgw
MjU1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRhaW5l
ckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMw
NyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTgyMyw2ICs4NzAsMTUgQEAKIC8qIEVuZCBQQlhD
b250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5RmlsZXNCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxl
cyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEvOwor
CQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKIAkJNURCQjE1MTExMzFEMEIx
MzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb3B5
RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7CkBAIC04NjMsNiArOTE5
LDEwIEBACiAJCTBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZl
cmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFJlc3RyaWN0
aW9uVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJDRDgzNTQxNDg1
ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBUZW1wb3JhcnlDaGFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9p
bnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RW50cnlw
b2ludHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5
cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RW50cnlwb2lu
dHMuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50VGh1bmtzLmNwcDsgcGF0
aCA9IGxsaW50L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50VGh1bmtzLmg7IHBhdGggPSBsbGludC9MTEludFRodW5r
cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBNTE0QkNGNTA0MDA4ODVC
NEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29kZVR5
cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTgxNEJDRjU1RTAwODg1
QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhh
bmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0FBMTRCQ0Y1
QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTg3Myw5ICs5MzMsMTMgQEAKIAkJMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8q
IE1ldGhvZENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZXRob2RDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgz
QjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbFJlc29sdmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0
VG9CeXRlY29kZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWxs
UmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRDYWxsTGlua0luZm8uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1v
blNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25TbG93
UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNkQ3MjQxNDJDMzlBMjAw
Q0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIxQzI2
NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpJVERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIx
QzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVj
dXRpb25IYXJuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1dGlv
bkhhcm5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0UxNEJFQUE4
MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQnl0ZWNvZGVDb252ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrUmVmZXJlbmNlSGFydmVz
dGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZEMTQ3MzhGMkUwMDEy
MUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC04ODYsNiArOTUwLDIwIEBACiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5MCAv
KiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTGlz
dGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDdGMTRC
QTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRFeGNlcHRpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9m
ZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxl
VHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsg
cGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RV
Q1RTX0RJUjsgfTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEV4Y2VwdGlv
bnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMuaDsg
cGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50SGVscGVycy5jcHA7IHBhdGggPSBs
bGludC9MTEludEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgbmFtZSA9IExMSW50SGVscGVycy5oOyBwYXRoID0gbGxpbnQvTExJbnRIZWxwZXJz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50
T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4
MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IG5hbWUgPSBMTEludENvbW1vbi5oOyBwYXRoID0gbGxpbnQvTExJbnRDb21tb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8q
IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBMTEludE9mZmxpbmVBc21Db25maWcuaDsgcGF0aCA9IGxsaW50L0xMSW50T2ZmbGluZUFzbUNv
bmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNzE0QkJCMTY5MDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmNwcDsgcGF0aCA9IGxsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBD
ODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmg7IHBhdGggPSBsbGludC9M
b3dMZXZlbEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4
MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTExJbnREYXRhLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3
MiAvKiBMTEludERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRE
YXRhLmg7IHBhdGggPSBsbGludC9MTEludERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQxMTRCQkM1RjgwMEJG
RTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RQQy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0UEMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5dGVD
b2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNvZGVD
YWNoZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVDb2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE2MzIsNiArMTcxMCwxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ug
c2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICov
CisJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNh
ID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFtZXdv
cmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTY5MCw2ICsxNzc1LDcgQEAKIAkJCQkxNDEyMTEy
MDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBC
QUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVz
dFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZz
ZXRzRXh0cmFjdG9yICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzE1LDYgKzE4MDEsNyBAQAogCQkJCUY1QzI5MEU2MDI4NEY5
OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4MDZB
NDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBG
NyAvKiBjb25maWcuaCAqLywKKwkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQg
Ki8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0Ix
MjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUw
MEYxRjY4MSAvKiBieXRlY29kZSAqLywKQEAgLTE3NTQsNiArMTg0MSwyOCBAQAogCQkJdGFiV2lk
dGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUy
NzIgLyogbGxpbnQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAor
CQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLywK
KwkJCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovLAor
CQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8sCisJCQkJ
MEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8sCisJCQkJMEY0Njgw
Q0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0YxNEJC
QjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovLAorCQkJCTBGNDY4MEM1MTRCQkIxNjkwMEJG
RTI3MiAvKiBMTEludENvbW1vbi5oICovLAorCQkJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAv
KiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLywKKwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUy
NzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8sCisJCQkJMEY0NjgwQzgxNEJCQjE2OTAw
QkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3Rjgy
MDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8sCisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50SGVscGVycy5oICovLAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAv
KiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGludDsK
KwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3MjYwMDQ4
MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAo
CkBAIC0xNzg4LDYgKzE4OTcsOCBAQAogCQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkgLyogaml0
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2ODBE
MDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJMEY0
NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJCQkw
RjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJMEY0
NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4MkUz
NzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTIyNjAsNiAr
MjM3MSw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3OTE0QkU3Mjcz
MDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovLAorCQkJCTBGMjFDMjdBMTRC
RTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8sCiAJCQkJMEYxNUYxNUQxNEI3
QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovLAogCQkJCUJDRjYwNTExMEUyMDNF
RjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2
NEQgLyogQXJnTGlzdC5oICovLApAQCAtMjYzNCw2ICsyNzQ3LDggQEAKIAkJOTY5QTA3OEYwRUQx
RDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252
ZW50aW9ucy5oICovLAorCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxM
aW5rSW5mby5oICovLAogCQkJCTBGOUZDOEJGMTRFMUI1RkIwMEQ1MkFFMCAvKiBQb2x5bW9ycGhp
Y1B1dEJ5SWRMaXN0LmNwcCAqLywKIAkJCQkwRjlGQzhDMDE0RTFCNUZCMDBENTJBRTAgLyogUG9s
eW1vcnBoaWNQdXRCeUlkTGlzdC5oICovLAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAv
KiBQdXRLaW5kLmggKi8sCkBAIC0zMTk4LDcgKzMzMTMsMTYgQEAKIAkJCQk4NjcwNEI4QTEyREJB
MzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQz
MTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVs
cGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJ
VEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3
MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0IxNEJCQjE3MjAw
QkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0
NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZh
bHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJ
bnRFbnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1
QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBNzE0QkNGNTA3
MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E5MTRCQ0Y1
NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQUIx
NEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovLApA
QCAtMzIwNyw3ICszMzMxLDExIEBACiAJCQkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1l
dGhvZENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjcxNEJDRjhFMTAw
ODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNC
OTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxM
aW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8q
IEpJVERyaXZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRC
IC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdEMTRCRTcy
N0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJ
CQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMEY3QjI5NEExNEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVy
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0Nh
cGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEMxNEMzQ0Q0MzAwN0MzREIx
IC8qIERGR0J5dGVDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzIzMiw2ICszMzYwLDI0
IEBACiAvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQ
QlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyog
SlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0
OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAv
KiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MDhCMTRC
QTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovLAorCQkJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3
MiAvKiBGcmFtZXdvcmtzICovLAorCQkJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5
RmlsZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNp
ZXMgPSAoCisJCQkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8sCisJCQkpOworCQkJbmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXBy
b2R1Y3ROYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdFJlZmVyZW5j
ZSA9IDBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3Ig
Ki87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9
OwogCQkxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLyA9IHsKIAkJCWlzYSA9
IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDEyMTEzOTBB
NDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVU
YXJnZXQgIm1pbmlkb20iICovOwpAQCAtMzM1OCwxMSArMzUwNCwyOSBAQAogCQkJCTE0QkQ1OUJF
MEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTkzMkY1QkRBMDgyMkExQzcwMDcz
Njk3NSAvKiBqc2MgKi8sCiAJCQkJNjUxMTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdF
eHAgKi8sCisJCQkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4
dHJhY3RvciAqLywKKwkJCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0
cyAqLywKIAkJCSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAKIC8qIEJl
Z2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MEFBMTRCQTdG
RDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQ
QlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3
OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09U
KS9sbGludC9Mb3dMZXZlbEFzc2VtYmxlci5hc20iLAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJh
dGUgRGVyaXZlZCBTb3VyY2VzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BS
T0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaCIsCisJCQkpOwor
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGgg
PSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RT
X0RJUn0vTExJbnRPZmZzZXRzL1wiXG5cbi91c3IvYmluL2VudiBydWJ5IFwiJHtTUkNST09UfS9v
ZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmJcIiBcIiR7U1JDUk9PVH0vbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc21cIiBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTElu
dE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oXCJcbiI7CisJCX07CiAJCTM3MTNGMDE0MTQy
OTA1MjQwMDM2Mzg3RiAvKiBDaGVjayBGb3IgSW5hcHByb3ByaWF0ZSBPYmplY3RpdmUtQyBDbGFz
cyBOYW1lcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1
aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zNDY4LDcgKzM2MzIsNyBAQAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQkJc2hlbGxQYXRo
ID0gL2Jpbi9zaDsKLQkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNU
U19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL2RvY3NcIlxuY2QgXCIke0JVSUxU
X1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmVcIlxuXG4vYmluL2xu
IC1zZmggXCIke1NSQ1JPT1R9XCIgSmF2YVNjcmlwdENvcmVcbmV4cG9ydCBKYXZhU2NyaXB0Q29y
ZT1cIkphdmFTY3JpcHRDb3JlXCJcbmV4cG9ydCBCVUlMVF9QUk9EVUNUU19ESVI9XCIuLi8uLlwi
XG5cbm1ha2UgLS1uby1idWlsdGluLXJ1bGVzIC1mIFwiSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZVwiIC1qIGAvdXNyL3NiaW4vc3lzY3RsIC1uIGh3Lm5jcHVgXG4iOworCQkJc2hl
bGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJp
dmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7U1JDUk9PVH1c
IiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2YVNjcmlwdENvcmVc
IlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJcblxubWFrZSAtLW5vLWJ1aWx0
aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlXCIgLWogYC91
c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNwdWBcblxuL3Vzci9iaW4vZW52IHJ1YnkgSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9hc20ucmIgSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5hc20gJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0pTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rv
ciBMTEludEFzc2VtYmx5LmhcbiI7CiAJCX07CiAJCTkzMTk1ODZCMDlEOUY5MUEwMEE1NkZENCAv
KiBDaGVjayBGb3IgR2xvYmFsIEluaXRpYWxpemVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxs
U2NyaXB0QnVpbGRQaGFzZTsKQEAgLTM1MDMsNiArMzY2NywxNCBAQAogLyogRW5kIFBCWFNoZWxs
U2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBo
YXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8g
PSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9
IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIg
LyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRDBB
NDg3OTNDMDA0ODAyNTUgLyogU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWls
ZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTM3NjQsNyArMzkz
NiwxNCBAQAogCQkJCTg2NzA0Qjg2MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg2NzA0Qjg5MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5
bnRheENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZF
MjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBODE0QkE3
RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBG
NDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTEludERh
dGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhv
c3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUExNEJDRjQ1
RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYw
QjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMEYwQjgzQjQxNEJDRjg2MDAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5m
by5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNjlFODZDMzE0QzZFNTUxMDAyQzJDNjIgLyogTnVt
YmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM3OTIsNiArMzk3MSwxNiBAQAogLyog
RW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVGFyZ2V0
RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhU
YXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJ
CXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovOwor
CQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFpbmVy
SXRlbVByb3h5ICovOworCQl9OworCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJYVGFy
Z2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0
YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFj
dG9yICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQkxNDEyMTRCRjBBNDkxOTBFMDA0ODAyNTUg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CiAJCQl0YXJnZXQgPSAxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLzsK
QEAgLTM4MjUsNiArNDAxNCwxNTAgQEAKIC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkwRjQ2
ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VS
X1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJ
CQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBn
bnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5BQkxFX09CSkNf
RVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJCQlH
Q0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJCSIk
KGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4gPSBO
TzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7
CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FS
Tl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVU
VVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJ
CSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJ
CQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVS
X1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0g
MTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gTk87CisJCQkJUFJPRFVDVF9OQU1FID0gIiQo
VEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NF
QVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQo
SEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJ
MEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJD
SF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQp
IjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZP
Uk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0g
Z251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZF
UlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJO
XzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lO
R19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVT
OworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJD
SF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7
CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9B
UkNIID0gTk87CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtS
T09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOwor
CQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUy
NzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POwor
CQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9T
VFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1k
c3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFC
TEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNv
bXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVS
U0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsK
KwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVT
RURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAo
CisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9m
ZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNP
U1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBOTzsK
KwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNv
c3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJ
bmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFBy
b2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxk
U2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJD
SFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0g
WUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOwor
CQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpD
X0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJz
Lmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0g
Tk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdD
Q19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJ
QUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJ
LiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIs
CisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBM
T1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUp
IjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9
ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJD
SF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBB
RDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmln
dXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2
ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4
MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJE
ZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07CisJ
CTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9O
QU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5n
OworCQl9OworCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsK
KwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJ
CQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUg
PSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEzQTBBNDg3OTg0MDA0ODAyNTUgLyogRGVidWcg
Ki8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3Mg
PSB7CkBAIC00MDY2LDYgKzQzOTksMjggQEAKIC8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlvbiBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLworCQkw
RjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIgKi8gPSB7CisJCQlpc2Eg
PSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJCQkw
RjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwOTcxNEJBN0U1
RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8q
IFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlv
biAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlk
ZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBBQzE0
QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdh
dGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9u
TGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwQUQxNEJBN0ZEOTAw
QkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxl
YXNlICovLAorCQkJCTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJ
CQkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJ
ZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRp
b25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1IC8q
IEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9tIiAq
LyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3VyYXRp
b25zID0gKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmgJKHJldmlzaW9uIDEwNzcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTGlua0J1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjZGVmaW5l
IEdMT0JBTF9USFVOS19JRCByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxpbnRw
dHJfdD4oLTEpKQogI2RlZmluZSBSRUdFWFBfQ09ERV9JRCByZWludGVycHJldF9jYXN0PHZvaWQq
PihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLTIpKQogCi0jaW5jbHVkZSA8TWFjcm9Bc3NlbWJsZXIu
aD4KKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9nLmg+
CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAkocmV2
aXNpb24gMTA3NzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMjczLDYgKzI3MywxNCBAQCBwdWJs
aWM6CiAgICAgewogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUpOwog
ICAgIH0KKyAgICAKKyAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNyZWF0ZUZyb21F
eGVjdXRhYmxlQWRkcmVzcyh2b2lkKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9WQUxJ
RF9DT0RFX1BPSU5URVIodmFsdWUpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgcmVz
dWx0OworICAgICAgICByZXN1bHQubV92YWx1ZSA9IHZhbHVlOworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KIAogICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihSZXR1cm5B
ZGRyZXNzUHRyIHJhKQogICAgICAgICA6IG1fdmFsdWUocmEudmFsdWUoKSkKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMu
aAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29k
ZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCeXRlY29kZUNvbnZl
bnRpb25zX2gKKyNkZWZpbmUgQnl0ZWNvZGVDb252ZW50aW9uc19oCisKKy8vIFJlZ2lzdGVyIG51
bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcg
YWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKKy8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZG
ICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVz
IGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCisvLyAgICAgIDB4MDAwMDAw
MDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRl
ciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxs
ZnJhbWUuCisvLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBm
cm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRo
ZSBDb2RlQmxvY2suCitzdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4
ID0gMHg0MDAwMDAwMDsKKworI2VuZGlmIC8vIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5j
cHAJKHJldmlzaW9uIDEwNzcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
YWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE3ICsyNyw0MCBAQAogI2lu
Y2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNs
dWRlICJMTEludENhbGxMaW5rSW5mby5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorQ2FsbExpbmtT
dGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShwcm9m
aWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisjaWYgRU5BQkxF
KExMSU5UKQorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmlu
c3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworICAgIExMSW50Q2FsbExpbmtJ
bmZvKiBjYWxsTGlua0luZm8gPSBpbnN0cnVjdGlvbls0XS51LmNhbGxMaW5rSW5mbzsKKyAgICAK
KyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5n
ZXQoKSwgZmFsc2UpOworI2Vsc2UKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFsc2Up
OworI2VuZGlmCit9CisKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9y
KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIHsKICAg
ICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2Rl
SW5kZXgpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAgICBy
ZXR1cm4gQ2FsbExpbmtTdGF0dXMoCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5r
SW5mbyhieXRlY29kZUluZGV4KS5sYXN0U2VlbkNhbGxlZS5nZXQoKSwKLSAgICAgICAgcHJvZmls
ZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpOworICAgIGlmICghcHJv
ZmlsZWRCbG9jay0+bnVtYmVyT2ZDYWxsTGlua0luZm9zKCkpCisgICAgICAgIHJldHVybiBjb21w
dXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIGlm
IChwcm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKKyAgICAg
ICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIHRydWUpOworICAgIAorICAgIEpTRnVuY3Rpb24q
IHRhcmdldCA9IHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KS5s
YXN0U2VlbkNhbGxlZS5nZXQoKTsKKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgcmV0dXJuIGNv
bXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAg
cmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldCwgZmFsc2UpOwogI2Vsc2UKICAgICByZXR1cm4g
Q2FsbExpbmtTdGF0dXMoMCwgZmFsc2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24gMTA3NzEzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ3LDE1ICs0NywxNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIENh
bGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCk7CiAgICAgCi0gICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0
OyB9CisgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0IHx8IG1f
Y291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsg
cmV0dXJuICFtX2NhbGxUYXJnZXQ7IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0
dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBKU0Z1bmN0aW9uKiBj
YWxsVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgCiBwcml2YXRl
OgorICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayos
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgIAogICAgIEpTRnVuY3Rpb24qIG1fY2FsbFRh
cmdldDsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7CiB9OwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEwNzcxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1
ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVk
ZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNp
bmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMzU2
LDEwICszNTcsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjKSBjbwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBpICs9IG9w
Y29kZUxlbmd0aHNbZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25z
KClbaV0udS5vcGNvZGUpXSkKICAgICAgICAgKytpbnN0cnVjdGlvbkNvdW50OwogCi0gICAgZGF0
YUxvZygiJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihz
KTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpXG5cbiIsCisgICAgZGF0YUxvZygiJWx1IG1faW5zdHJ1
Y3Rpb25zOyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lz
dGVyKHMpOyAlZCB2YXJpYWJsZShzKVxuXG4iLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBsb25nPihpbnN0cnVjdGlvbkNvdW50KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQg
bG9uZz4oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSksCi0gICAg
ICAgIHRoaXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgICAg
ICB0aGlzLCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX251bVZhcnMp
OwogCiAgICAgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4gPSBpbnN0
cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IGluc3RydWN0aW9ucygpLmVuZCgpOwpAQCAtODk2LDYgKzg5NywxNCBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1
dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbl9kaXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0
aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWw6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1
dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJp
bnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAg
ICAgICAgICAgIGJyZWFrOwpAQCAtMTQ1Myw2ICsxNDYyLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxv
Y2soQ29weVBhcnNlZEJsb2NrVGFnLAogewogICAgIHNldE51bVBhcmFtZXRlcnMob3RoZXIubnVt
UGFyYW1ldGVycygpKTsKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJX
YXJtVXAoKTsKICAgICAKICAgICBpZiAob3RoZXIubV9yYXJlRGF0YSkgewogICAgICAgICBjcmVh
dGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0xNTAxLDYgKzE1MTEsNyBAQCBDb2RlQmxvY2s6
OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgQVNTRVJUKG1fc291cmNlKTsKICAg
ICAKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsKIAog
I2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNTCiAgICAgbGl2ZUNvZGVCbG9ja1NldC5hZGQo
dGhpcyk7CkBAIC0xNTE4LDcgKzE1MjksMTEgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKICNp
ZiBFTkFCTEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxFKQogICAgIGR1bXBWYWx1ZVByb2ZpbGVzKCk7
CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShMTElOVCkgICAgCisgICAgd2hpbGUgKG1faW5j
b21pbmdMTEludENhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisg
ICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCktPnJlbW92ZSgpOworI2VuZGlmIC8v
IEVOQUJMRShMTElOVCkKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFdlIG1heSBiZSBkZXN0cm95
ZWQgYmVmb3JlIGFueSBDb2RlQmxvY2tzIHRoYXQgcmVmZXIgdG8gdXMgYXJlIGRlc3Ryb3llZC4K
ICAgICAvLyBDb25zaWRlciB0aGF0IHR3byBDb2RlQmxvY2tzIGJlY29tZSB1bnJlYWNoYWJsZSBh
dCB0aGUgc2FtZSB0aW1lLiBUaGVyZQpAQCAtMTczMCw4ICsxNzQ1LDY5IEBAIHZvaWQgQ29kZUJs
b2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICNlbHNlCiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgdmVyYm9zZVVubGlua2luZyA9IGZhbHNlOwogI2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvLyBF
TkFCTEUoSklUKQogICAgIAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnRlcnByZXRlciogaW50
ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJldGVyOworICAgIC8vIGludGVycHJldGVy
LT5lbmFibGVkKCkgcmV0dXJucyB0cnVlIGlmIHRoZSBvbGQgQysrIGludGVycHJldGVyIGlzIGVu
YWJsZWQuIElmIHRoYXQncyBlbmFibGVkCisgICAgLy8gdGhlbiB3ZSdyZSBub3QgdXNpbmcgTExJ
bnQuCisgICAgaWYgKCFpbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAgICAgIGZvciAoc2l6
ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9
ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKKyAgICAg
ICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBd
LnUub3Bjb2RlKSkgeworICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0aW9u
WzRdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3Ry
dWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNs
ZWFyaW5nIExMSW50IHByb3BlcnR5IGFjY2VzcyB3aXRoIHN0cnVjdHVyZSAlcC5cbiIsIGN1cklu
c3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0
cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3Ry
dWN0aW9uWzVdLnUub3BlcmFuZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAgICAgIGlmIChI
ZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1
Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1cklu
c3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykgeworICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBMTEludCBwdXQgdHJhbnNpdGlvbiB3aXRo
IHN0cnVjdHVyZXMgJXAgLT4gJXAsIGNoYWluICVwLlxuIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNo
YWluLmdldCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1
Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVj
dGlvbls2XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3RydWN0
aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0
cnVjdGlvblswXS51Lm9wY29kZSA9IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5X2lk
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5z
aXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiog
Y3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rp
b25zW2ldXTsKKyAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3Vy
SW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsCisgICAgICAgICAg
ICAgICAgICAgfHwgaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBdLnUu
b3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKKyAgICAgICAgICAgIGlmICgh
Y3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1
Y3Rpb25bM10udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgZGF0YUxv
ZygiQ2xlYXJpbmcgTExJbnQgZ2xvYmFsIHJlc29sdmUgY2FjaGUgd2l0aCBzdHJ1Y3R1cmUgJXAu
XG4iLCBjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgICAgICBj
dXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgY3VySW5z
dHJ1Y3Rpb25bNF0udS5vcGVyYW5kID0gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAg
ICAgICAgIGlmIChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpICYmICFIZWFwOjpp
c01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5jYWxsZWUuZ2V0KCkpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAgIGRhdGFM
b2coIkNsZWFyaW5nIExMSW50IGNhbGwgZnJvbSAlcC5cbiIsIHRoaXMpOworICAgICAgICAgICAg
ICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgaWYgKCEhbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUgJiYg
IUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlLmdl
dCgpKSkKKyAgICAgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNh
bGxlZS5jbGVhcigpOworICAgICAgICB9CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkK
KwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8vIENoZWNrIGlmIHdlJ3JlIG5vdCBsaXZlLiBJ
ZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAgICAgaWYgKCEoc2hvdWxkSW1tZWRpYXRlbHlBc3N1
bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBtX2RmZ0RhdGEtPmxpdmVuZXNzSGFzQmVlblByb3Zl
ZCkpIHsKQEAgLTE3NTQsNyArMTgzMCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVuY29u
ZGl0aW9uYWxseSgKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mQ2Fs
bExpbmtJbmZvcygpOyArK2kpIHsKICAgICAgICAgICAgIGlmIChjYWxsTGlua0luZm8oaSkuaXNM
aW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQoY2FsbExpbmtJbmZvKGkpLmNhbGxlZS5nZXQoKSkp
IHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKLSAgICAgICAgICAgICAg
ICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgY2FsbCBmcm9tICVwLlxuIiwgdGhpcyk7CisgICAgICAg
ICAgICAgICAgICAgIGRhdGFMb2coIkNsZWFyaW5nIGNhbGwgZnJvbSAlcCB0byAlcC5cbiIsIHRo
aXMsIGNhbGxMaW5rSW5mbyhpKS5jYWxsZWUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGNhbGxM
aW5rSW5mbyhpKS51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAoISFjYWxsTGlua0luZm8oaSkubGFzdFNlZW5DYWxsZWUK
QEAgLTE4NTIsMTAgKzE5MjgsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRTdHJv
bmdSZWZlcgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlvbkRlY2xzLnNpemUo
KTsgKytpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9mdW5jdGlvbkRlY2xzW2ldKTsKICNp
ZiBFTkFCTEUoSU5URVJQUkVURVIpCi0gICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlB
Y2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAg
dmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb25zW2ldXSk7Ci0gICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2
ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICB2aXNp
dFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3Ry
dWN0aW9uc1tpXV0pOworICAgIGlmIChtX2dsb2JhbERhdGEtPmludGVycHJldGVyLT5lbmFibGVk
KCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAgICAgICAgIHZpc2l0U3Ry
dWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0
aW9uc1tpXV0pOworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5z
dHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAgICB2aXNp
dFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3Ry
dWN0aW9uc1tpXV0pOworICAgIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKERGR19KSVQpCkBAIC0x
ODYzLDggKzE5NDEsOSBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVy
CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGV4ZWN1dGFibGVzIHRoYXQgd2UgaGF2ZSBpbmxp
bmVkIGRvbid0IGRpZS4KICAgICAgICAgLy8gRklYTUU6IElmIHRoZXkgd291bGQgaGF2ZSBvdGhl
cndpc2UgZGllZCwgd2Ugc2hvdWxkIHByb2JhYmx5IHRyaWdnZXIgcmVjb21waWxhdGlvbi4KICAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmxpbmVDYWxsRnJhbWVzKCkuc2l6ZSgpOyAr
K2kpIHsKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpbmxpbmVDYWxsRnJhbWVzKClbaV0u
ZXhlY3V0YWJsZSk7Ci0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZyYW1l
cygpW2ldLmNhbGxlZSk7CisgICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUmIGlubGluZUNhbGxG
cmFtZSA9IGlubGluZUNhbGxGcmFtZXMoKVtpXTsKKyAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZpbmxpbmVDYWxsRnJhbWUuZXhlY3V0YWJsZSk7CisgICAgICAgICAgICB2aXNpdG9yLmFwcGVu
ZCgmaW5saW5lQ2FsbEZyYW1lLmNhbGxlZSk7CiAgICAgICAgIH0KICAgICB9CiAjZW5kaWYKQEAg
LTIwNzQsNiArMjE1MywxMiBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogewogICAg
IGlmICghIW1fYWx0ZXJuYXRpdmUpCiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPnVubGlua0NhbGxz
KCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9sbGlu
dENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlu
a0luZm9zW2ldLmlzTGlua2VkKCkpCisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tp
XS51bmxpbmsoKTsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoIShtX2NhbGxMaW5rSW5mb3Muc2l6
ZSgpIHx8IG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCkpKQogICAgICAgICByZXR1cm47CiAg
ICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQpAQCAtMjA4OCwxMCArMjE3MywzOSBA
QCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogCiB2b2lkIENvZGVCbG9jazo6dW5saW5r
SW5jb21pbmdDYWxscygpCiB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIHdoaWxlIChtX2luY29t
aW5nTExJbnRDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQorICAg
ICAgICBtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpLT51bmxpbmsoKTsKKyNlbmRpZgorICAg
IGlmIChtX2luY29taW5nQ2FsbHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAgICAgUmVw
YXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRoaXMpOwogICAgIHdoaWxlIChtX2luY29taW5nQ2Fs
bHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2FsbHMuZW5kKCkpCiAgICAgICAgIG1faW5jb21pbmdD
YWxscy5iZWdpbigpLT51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CiB9CisK
K3Vuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBSZXR1
cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGlm
IChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfYmVn
aW4pCisgICAgICAgICYmIHJldHVybkFkZHJlc3MudmFsdWUoKSA8PSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF9lbmQpKSB7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSk7Cisg
ICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSA9PSB0aGlzKTsKKyAgICAgICAgQVNTRVJU
KEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOworICAgICAgICBJbnN0cnVj
dGlvbiogaW5zdHJ1Y3Rpb24gPSBleGVjLT5jdXJyZW50VlBDKCk7CisgICAgICAgIEFTU0VSVChp
bnN0cnVjdGlvbik7CisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldChpbnN0cnVjdGlvbik7
CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisjZW5kaWYKKyAgICBpZiAo
IW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiAxOworICAgIFZlY3RvcjxDYWxsUmV0dXJuT2Zm
c2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0gbV9yYXJlRGF0YS0+bV9jYWxsUmV0
dXJuSW5kZXhWZWN0b3I7CisgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCisgICAgICAgIHJl
dHVybiAxOworICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNv
ZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdp
bigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRy
ZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7Cit9CiAjZW5kaWYKIAogdm9pZCBDb2RlQmxv
Y2s6OmNsZWFyRXZhbENhY2hlKCkKQEAgLTIxODcsMjQgKzIzMDEsNDUgQEAgYm9vbCBGdW5jdGlv
bkNvZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERgogCiB2b2lkIFByb2dyYW1Db2RlQmxvY2s6Ompl
dHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5l
SklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkp
OwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PFBy
b2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENv
ZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRXZhbENvZGVCbG9jazo6amV0dGlzb24oKQog
ewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAg
IEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNT
RVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFi
bGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xvYmFsRGF0
YSgpKTsKIH0KIAogdm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFT
U0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChK
SVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMg
PT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4o
b3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGVGb3IoKmdsb2JhbERhdGEo
KSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKIH0K
Kwordm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGds
b2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnBy
ZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpp
dENvbXBpbGUoZ2xvYmFsRGF0YSk7Cit9CisKK3ZvaWQgRXZhbENvZGVCbG9jazo6aml0Q29tcGls
ZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBl
KCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVw
bGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3du
ZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEZ1bmN0
aW9uQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7
CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsK
KyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlRm9y
KGdsb2JhbERhdGEsIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9y
Q2FsbCk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEwNzcx
MykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBDb2RlQmxvY2tfaAogI2RlZmluZSBD
b2RlQmxvY2tfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUg
IkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zm
c2V0LmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgpAQCAtNTAsNiArNTEsNyBAQAogI2luY2x1
ZGUgIkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKICNpbmNs
dWRlICJMaW5lSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUHJlZGljdGlv
blRyYWNrZXIuaCIKQEAgLTY1LDE2ICs2NywxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCi0vLyBSZWdpc3RlciBudW1iZXJzIHVz
ZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGlu
ZyB0byB0aGVpciByYW5nZXM6Ci0vLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRp
dmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUg
Y2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgotLy8gICAgICAweDAwMDAwMDAwLTB4M0ZG
RkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxv
Y2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgot
Ly8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQw
MDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJs
b2NrLgotc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAw
MDAwMDA7Ci0KIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNs
YXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGlubGluZSBpbnQgdW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKGludCBhcmd1bWVudHNSZWdpc3RlcikgeyByZXR1cm4gYXJndW1lbnRzUmVnaXN0ZXIg
LSAxOyB9CiAKQEAgLTgzLDYgKzgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29k
ZUJsb2NrIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIsIHB1YmxpYyBXZWFrUmVmZXJl
bmNlSGFydmVzdGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENvcHlQYXJzZWRCbG9ja1RhZyB7IENv
cHlQYXJzZWRCbG9jayB9OwogICAgIHByb3RlY3RlZDoKQEAgLTEyMyw3ICsxMjEsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAg
ICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5hbHRlcm5hdGl2ZSgpOwogICAgICAgICAg
ICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBl
KCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6
OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgICAgICB9CiAjZW5kaWYKQEAgLTE5MiwxNSArMTkwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9kQ2FsbExp
bmtJbmZvLCB1bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4obV9t
ZXRob2RDYWxsTGlua0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCks
IGJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2Rl
T2Zmc2V0KFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLSAgICAgICAgewotICAgICAg
ICAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAg
ICAgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGlj
ZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKLSAgICAgICAgICAgIGlm
ICghY2FsbEluZGljZXMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAg
ICAgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNl
dCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNh
bGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFs
dWUoKSkpLT5ieXRlY29kZU9mZnNldDsKLSAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldChFeGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAgICAgICB1bnNp
Z25lZCBieXRlY29kZU9mZnNldEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgICAg
ICB7CkBAIC0yMjEsMTEgKzIxMSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAg
ICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwogICAgICAgICB9CisjaWYg
RU5BQkxFKExMSU5UKQorICAgICAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoTExJbnRDYWxsTGlu
a0luZm8qIGluY29taW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2luY29taW5nTExJbnRD
YWxscy5wdXNoKGluY29taW5nKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkK
ICAgICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5rSW5jb21pbmdDYWxscygpOwotI2VuZGlmCisj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShE
RkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIHZvaWQgc2V0SklUQ29kZU1hcChQYXNz
T3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBqaXRDb2RlTWFwKQogICAgICAgICB7CiAgICAgICAg
ICAgICBtX2ppdENvZGVNYXAgPSBqaXRDb2RlTWFwOwpAQCAtMjM0LDcgKzIzMCw5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9qaXRDb2RlTWFwLmdl
dCgpOwogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgCisjaWYgRU5BQkxFKERGR19KSVQpCiAg
ICAgICAgIHZvaWQgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAgICAg
ICAgICAgaWYgKCEhbV9kZmdEYXRhKQpAQCAtMzMzLDEyICszMzEsMTEgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgICAg
ICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChJbnN0cnVjdGlvbiogcmV0dXJuQWRkcmVzcykKICAg
ICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJldHVybkFkZHJlc3MgPj0gaW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSAmJiByZXR1cm5BZGRyZXNzIDwgaW5zdHJ1Y3Rpb25zKCkuZW5kKCkpOwogICAg
ICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3RydWN0aW9uKj4ocmV0dXJuQWRkcmVzcykg
LSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgICAgICB9Ci0jZW5kaWYKIAogICAgICAgICB2
b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5j
dGlvbikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbiA9IGlzTnVtZXJpY0NvbXBhcmVGdW5j
dGlvbjsgfQogICAgICAgICBib29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbigpIHsgcmV0dXJu
IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CkBAIC0zNzYsNiArMzczLDE1IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBFeGVjdXRhYmxlTWVtb3J5SGFuZGxlKiBleGVjdXRhYmxlTWVt
b3J5KCkgeyByZXR1cm4gZ2V0SklUQ29kZSgpLmdldEV4ZWN1dGFibGVNZW1vcnkoKTsgfQogICAg
ICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3Bl
Q2hhaW5Ob2RlKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKSA9IDA7Cisg
ICAgICAgIGJvb2wgaml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCisgICAgICAg
IHsKKyAgICAgICAgICAgIGlmIChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJU
aHVuaykgeworICAgICAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGppdENvbXBpbGVJbXBsKGdsb2JhbERhdGEpOworICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxh
Y2VtZW50KCkgPSAwOwogCiAgICAgICAgIGVudW0gQ29tcGlsZVdpdGhERkdTdGF0ZSB7CkBAIC0z
OTUsMTMgKzQwMSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGhhc09wdGlt
aXplZFJlcGxhY2VtZW50KCkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5
cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29k
ZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICBib29sIHJlc3Vs
dCA9IHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA+IGdldEpJVFR5cGUoKTsKICNpZiAhQVNT
RVJUX0RJU0FCTEVECiAgICAgICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAgICAgICAgIEFT
U0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6REZHSklUKTsKICAg
ICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5n
ZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgICAgIEFT
U0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkp
KTsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKSA9PSB0aGlzKTsKICAgICAg
ICAgICAgIH0KICNlbmRpZgpAQCAtNDYwLDE4ICs0NjYsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgdm9pZCBjbGVhckV2YWxDYWNoZSgpOwogCi0jaWYgRU5BQkxFKElOVEVSUFJFVEVS
KQogICAgICAgICB2b2lkIGFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24odW5zaWduZWQgcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2ds
b2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJ
bnN0cnVjdGlvbnMuYXBwZW5kKHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOworICAgICAgICAg
ICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb24odW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAg
bV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rp
b24pOworICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9uQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNl
dCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBMTEludENhbGxMaW5rSW5mbyogYWRkTExJ
bnRDYWxsTGlua0luZm8oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJ
bmZvcy5hcHBlbmQoTExJbnRDYWxsTGlua0luZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gJm1f
bGxpbnRDYWxsTGlua0luZm9zLmxhc3QoKTsKKyAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgdm9pZCBzZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcyhzaXplX3Qg
c2l6ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZvcy5ncm93KHNpemUpOyB9CkBAIC00ODAsOCArNDg5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5m
byh1bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIGlmIChtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xv
YmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5z
dHJ1Y3Rpb24pKTsKKyAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9i
YWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKICAgICAgICAgfQogICAg
ICAgICBHbG9iYWxSZXNvbHZlSW5mbyYgZ2xvYmFsUmVzb2x2ZUluZm8oaW50IGluZGV4KSB7IHJl
dHVybiBtX2dsb2JhbFJlc29sdmVJbmZvc1tpbmRleF07IH0KICAgICAgICAgYm9vbCBoYXNHbG9i
YWxSZXNvbHZlSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpA
QCAtNDkyLDYgKzUwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkTWV0
aG9kQ2FsbExpbmtJbmZvcyh1bnNpZ25lZCBuKSB7IEFTU0VSVChtX2dsb2JhbERhdGEtPmNhblVz
ZUpJVCgpKTsgbV9tZXRob2RDYWxsTGlua0luZm9zLmdyb3cobik7IH0KICAgICAgICAgTWV0aG9k
Q2FsbExpbmtJbmZvJiBtZXRob2RDYWxsTGlua0luZm8oaW50IGluZGV4KSB7IHJldHVybiBtX21l
dGhvZENhbGxMaW5rSW5mb3NbaW5kZXhdOyB9CisgICAgICAgIHNpemVfdCBudW1iZXJPZk1ldGhv
ZENhbGxMaW5rSW5mb3MoKSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpOyB9
CiAjZW5kaWYKICAgICAgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtNTMzLDYg
KzU0MiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKSkgLSAxXS51LnByb2ZpbGUgPT0gcmVzdWx0
KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KKyAgICAgICAgUHJlZGlj
dGVkVHlwZSB2YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVj
b2RlT2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24o
KTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdW5zaWduZWQgdG90YWxOdW1iZXJPZlZh
bHVlUHJvZmlsZXMoKQogICAgICAgICB7CkBAIC01NTksMTIgKzU3MiwxNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlU2xvd0Nhc2UoaW50IGJ5
dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNh
c2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
IHVuc2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9u
czo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91Ymxl
Pih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtl
U2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgY291
bGRUYWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAg
ICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICBy
ZXR1cm4gdmFsdWUgPj0gT3B0aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYg
c3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0
aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KQEAgLTU4MywxMiAr
NjAwLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlU
b1Rha2VTcGVjaWFsRmFzdENhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAg
ICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50
ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0
KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgcmV0dXJuIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID49
IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0
PGRvdWJsZT4oc3BlY2lhbEZhc3RDYXNlQ291bnQpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49
IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAg
ICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZShpbnQgYnl0ZWNv
ZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVBy
b2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5z
aWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZh
c3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0
ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNs
b3dDYXNlQ291bnQgLSBzcGVjaWFsRmFzdENhc2VDb3VudDsKQEAgLTU5Nyw2ICs2MTgsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlQW55U2xv
d0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51
bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIHVuc2lnbmVkIHNsb3dDYXNlQ291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JC
eXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVu
c2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5z
aWduZWQgdmFsdWUgPSBzbG93Q2FzZUNvdW50ICsgc3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBAIC02
OTQsNyArNzE3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGFk
ZEZyZXF1ZW50RXhpdFNpdGUoY29uc3QgREZHOjpGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAg
ICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2Vs
aW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRK
SVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBtX2V4aXRQcm9maWxlLmFkZChzaXRlKTsK
ICAgICAgICAgfQogCkBAIC04MDIsNiArODI1LDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbShDb2RlQmxvY2sqIGFsdGVybmF0aXZlKTsKICAg
ICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgICAgICAK
KyAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIEpJVHRpbmcga2lja3Mg
aW4sIGluIGEgbWl4ZWQgbW9kZQorICAgICAgICAvLyBleGVjdXRpb24gd29ybGQuCisgICAgICAg
IAorICAgICAgICB2b2lkIGRvbnRKSVRBbnl0aW1lU29vbigpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9p
ZCBqaXRBZnRlcldhcm1VcCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRl
Q291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVw
OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdFNvb24oKQorICAgICAgICB7
CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JKSVRTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQz
Ml90IGxsaW50RXhlY3V0ZUNvdW50ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICB9CisgICAgICAgIAogICAgICAg
ICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gdGllcmVkIGNvbXBpbGF0aW9uIGtp
Y2tzIGluLiBUaGlzCiAgICAgICAgIC8vIGNvbnRyb2xzIGJvdGggd2hlbiB0aGUgb3B0aW1pemlu
ZyBjb21waWxlciBpcyBpbnZva2VkIGFuZCB3aGVuIE9TUgogICAgICAgICAvLyBlbnRyeSBoYXBw
ZW5zLiBUd28gdHJpZ2dlcnMgZXhpc3Q6IHRoZSBsb29wIHRyaWdnZXIgYW5kIHRoZSByZXR1cm4K
QEAgLTk5NCw2ICsxMDQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zaG91
bGREaXNjYXJkQnl0ZWNvZGU7CiAKICAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwogICAgICAgICAKQEAgLTEwNzUsOSArMTEyMiwx
MSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBtX3Nv
dXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7CiAKLSNpZiBFTkFCTEUoSU5U
RVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1bnNpZ25lZD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVuc2lnbmVkPiBtX2dsb2JhbFJlc29sdmVJbnN0cnVj
dGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBTZWdtZW50ZWRWZWN0b3I8TExJbnRD
YWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxsTGlua0luZm9zOworICAgICAgICBTZW50aW5lbExp
bmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2Fs
bExpbmtJbmZvPiA+IG1faW5jb21pbmdMTEludENhbGxzOwogI2VuZGlmCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZVN0dWJJbmZvPiBtX3N0cnVjdHVyZVN0dWJJbmZv
czsKQEAgLTEwODgsOSArMTEzNywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9B
c3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhBcml0eUNoZWNrOwogICAgICAgICBTZW50aW5l
bExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0lu
Zm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2VuZGlmCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYg
RU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgT3duUHRyPENvbXBhY3RK
SVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAgICAgIAorI2VuZGlmCisjaWYgRU5BQkxFKERG
R19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbiB7CiAgICAgICAg
ICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigpIHsgfQogICAgICAgICAgICAgCkBAIC0xMTUz
LDEyICsxMjAzLDE0IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIE93blB0cjxDb2RlQmxv
Y2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAgIAorICAgICAgICBpbnQzMl90IG1fbGxpbnRFeGVj
dXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAgICAgIGludDMyX3QgbV9qaXRFeGVjdXRlQ291bnRl
cjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxhdGl2ZVN1Y2Nlc3NDb3VudGVyOwogICAgICAg
ICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFpbENvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9v
cHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9yZW9wdGltaXphdGlv
blJldHJ5Q291bnRlcjsKLQorICAgICAgICAKICAgICAgICAgc3RydWN0IFJhcmVEYXRhIHsKICAg
ICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIHB1YmxpYzoKQEAgLTEy
MzQsNiArMTI4Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAg
dmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWlu
Tm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVh
bCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENv
ZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVX
aXRoREZHSW50ZXJuYWwoKTsKICNlbmRpZgpAQCAtMTI2OCw2ICsxMzIxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxl
T3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNH
bG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwog
ICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkdJbnRlcm5hbCgpOwogI2VuZGlm
CkBAIC0xMzA1LDYgKzEzNTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2Nv
cGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmly
dHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5D
b21waWxlV2l0aERGR0ludGVybmFsKCk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEwNzcxMykK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsMjAgKzI3LDQ5IEBACiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5o
IgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRl
ci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpj
b21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNv
ZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVk
QmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyAgICBVTlVTRURfUEFS
QU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rp
b24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRl
eDsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfbWV0
aG9kX2NoZWNrKQorICAgICAgICBpbnN0cnVjdGlvbisrOworCisgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0cnVj
dHVyZSkKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0
dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisgICAgCisgICAgc2l6ZV90IG9mZnNldCA9IHN0
cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBp
ZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0lu
Zm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAgICBy
ZXR1cm4gR2V0QnlJZFN0YXR1cyhTaW1wbGVEaXJlY3QsIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUp
LCBvZmZzZXQsIGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZv
cm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisjZW5kaWYKK30KKwog
R2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmls
ZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAg
ICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29k
ZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVO
QUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mU3Ry
dWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2Zp
bGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICAvLyBGaXJzdCBjaGVj
ayBpZiBpdCBtYWtlcyBlaXRoZXIgY2FsbHMsIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBiZSBz
dXBlciBjYXJlZnVsLCBvcgogICAgIC8vIGlmIGl0J3Mgbm90IHNldCBhdCBhbGwsIGluIHdoaWNo
IGNhc2Ugd2UgcHVudC4KICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxl
ZEJsb2NrLT5nZXRTdHViSW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNl
ZW4pCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVy
ZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2Zp
bGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAKICAgICBQb2x5bW9ycGhpY0Fj
Y2Vzc1N0cnVjdHVyZUxpc3QqIGxpc3Q7CiAgICAgaW50IGxpc3RTaXplOwpAQCAtNjAsMTggKzg5
LDE5IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICB9CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0U2l6ZTsgKytpKSB7CiAgICAgICAgIGlmICghbGlz
dC0+bGlzdFtpXS5pc0RpcmVjdCkKLSAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1h
a2VzQ2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgICAgICByZXR1cm4g
R2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIHRydWUp
OwogICAgIH0KICAgICAKICAgICAvLyBOZXh0IGNoZWNrIGlmIGl0IHRha2VzIHNsb3cgY2FzZSwg
aW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIGtpbmQgb2YgY2FyZWZ1bC4KICAgICBpZiAocHJv
ZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCi0gICAgICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBub3RG
b3VuZCk7CisgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVj
dHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7CiAgICAgCiAgICAgLy8gRmluYWxseSBmaWd1cmUg
b3V0IGlmIHdlIGNhbiBkZXJpdmUgYW4gYWNjZXNzIHN0cmF0ZWd5LgogICAgIEdldEJ5SWRTdGF0
dXMgcmVzdWx0OworICAgIHJlc3VsdC5tX3dhc1NlZW5JbkpJVCA9IHRydWU7CiAgICAgc3dpdGNo
IChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RG
b3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5
dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lk
X3NlbGY6IHsKICAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBzdHViSW5mby51LmdldEJ5
SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0KCk7CkBAIC0xMzAsNyArMTYwLDcgQEAgR2V0
QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKAogICAgIAogICAgIHJldHVybiBy
ZXN1bHQ7CiAjZWxzZSAvLyBFTkFCTEUoSklUKQotICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5v
SW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgcmV0dXJuIEdldEJ5
SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7
CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCShyZXZpc2lvbiAxMDc3MTMpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00OSwxMCArNDksMTEgQEAgcHVibGljOgogICAgIHsKICAgICB9CiAgICAgCi0gICAgR2V0
QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQs
IHNpemVfdCBvZmZzZXQpCisgICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3Ry
dWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQsIGJvb2wgd2FzU2VlbkluSklU
KQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVTZXQoc3Ry
dWN0dXJlU2V0KQogICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBtX3dhc1Nl
ZW5JbkpJVCh3YXNTZWVuSW5KSVQpCiAgICAgewogICAgICAgICBBU1NFUlQoKHN0YXRlID09IFNp
bXBsZURpcmVjdCkgPT0gKG9mZnNldCAhPSBub3RGb3VuZCkpOwogICAgIH0KQEAgLTcwLDEwICs3
MSwxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBj
b25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsgfQogICAgIHNpemVfdCBvZmZzZXQoKSBjb25z
dCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAorICAgIGJvb2wgd2FzU2VlbkluSklUKCkgY29u
c3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0KKyAgICAKIHByaXZhdGU6CisgICAgc3RhdGlj
IEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRl
Y29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBT
dHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CiAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIGJv
b2wgbV93YXNTZWVuSW5KSVQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMDc3
MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBK
U0NlbGw7CiAgICAgY2xhc3MgU3RydWN0dXJlOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOwor
ICAgIHN0cnVjdCBMTEludENhbGxMaW5rSW5mbzsKICAgICBzdHJ1Y3QgVmFsdWVQcm9maWxlOwog
CiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE0Niw2ICsxNDcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAj
ZW5kaWYKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlvbiB7CisgICAgICAgIEluc3RydWN0aW9uKCkK
KyAgICAgICAgeworICAgICAgICAgICAgdS5qc0NlbGwuY2xlYXIoKTsKKyAgICAgICAgfQorICAg
ICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogI2lm
ICFFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikKQEAgLTE4Miw2ICsxODgsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYyBnZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7IH0KICAgICAg
ICAgCisgICAgICAgIEluc3RydWN0aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8p
IHsgdS5jYWxsTGlua0luZm8gPSBjYWxsTGlua0luZm87IH0KKyAgICAgICAgCiAgICAgICAgIElu
c3RydWN0aW9uKFZhbHVlUHJvZmlsZSogcHJvZmlsZSkgeyB1LnByb2ZpbGUgPSBwcm9maWxlOyB9
CiAKICAgICAgICAgdW5pb24gewpAQCAtMTkxLDcgKzE5OSw5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3RydWN0dXJlQ2hh
aW47CiAgICAgICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxsOwogICAgICAg
ICAgICAgUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKKyAgICAgICAgICAg
IExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm87CiAgICAgICAgICAgICBWYWx1ZVByb2Zp
bGUqIHByb2ZpbGU7CisgICAgICAgICAgICB2b2lkKiBwb2ludGVyOwogICAgICAgICB9IHU7CiAg
ICAgICAgIAogICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTExJbnRDYWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgTExJbnRDYWxsTGlua0luZm9faAorI2RlZmluZSBMTEludENhbGxMaW5r
SW5mb19oCisKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworc3RydWN0IEluc3RydWN0aW9uOworCitzdHJ1Y3QgTExJbnRDYWxsTGlu
a0luZm8gOiBwdWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+IHsK
KyAgICBMTEludENhbGxMaW5rSW5mbygpCisgICAgeworICAgIH0KKyAgICAKKyAgICB+TExJbnRD
YWxsTGlua0luZm8oKQorICAgIHsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAg
ICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIGNh
bGxlZTsgfQorICAgIAorICAgIHZvaWQgdW5saW5rKCkKKyAgICB7CisgICAgICAgIGNhbGxlZS5j
bGVhcigpOworICAgICAgICBtYWNoaW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0
cigpOworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAg
IH0KKyAgICAKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOworICAgIFdyaXRl
QmFycmllcjxKU0Z1bmN0aW9uPiBsYXN0U2VlbkNhbGxlZTsKKyAgICBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIgbWFjaGluZUNvZGVUYXJnZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2Vu
ZGlmIC8vIExMSW50Q2FsbExpbmtJbmZvX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lv
biAxMDc3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExp
bmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwxMSBAQCBNZXRob2RDYWxs
TGlua1N0YXR1cyBNZXRob2RDYWxsTGlua1N0YXR1CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVk
QmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklU
KSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgLy8gTk9URTogVGhpcyBkb2VzIG5vdCBo
YXZlIGFuIExMSW50IGZhbGwtYmFjayBiZWNhdXNlIExMSW50IGRvZXMgbm90IGRvIGFueSBtZXRo
b2QKKyAgICAvLyBjYWxsIGxpbmsgY2FjaGluZy4KKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51
bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZvcygpKQorICAgICAgICByZXR1cm4gTWV0aG9kQ2FsbExp
bmtTdGF0dXMoKTsKKyAgICAKICAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGwgPSBw
cm9maWxlZEJsb2NrLT5nZXRNZXRob2RDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCk7CiAgICAg
CiAgICAgaWYgKCFtZXRob2RDYWxsLnNlZW4gfHwgIW1ldGhvZENhbGwuY2FjaGVkU3RydWN0dXJl
KQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24g
MTA3NzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1h
Y3JvKG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9i
eV9pZCwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAor
ICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAg
ICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCiAgICAgICAgIG1h
Y3JvKG9wX3B1dF9ieV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9p
ZF9nZW5lcmljLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApAQCAtMjAx
LDYgKzIwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIGVudW0geyBGT1Jf
RUFDSF9PUENPREVfSUQoT1BDT0RFX0lEX0VOVU0pIH0gT3Bjb2RlSUQ7CiAgICAgI3VuZGVmIE9Q
Q09ERV9JRF9FTlVNCiAKKyAgICBjb25zdCBpbnQgbWF4T3Bjb2RlTGVuZ3RoID0gOTsKICAgICBj
b25zdCBpbnQgbnVtT3Bjb2RlSURzID0gb3BfZW5kICsgMTsKIAogICAgICNkZWZpbmUgT1BDT0RF
X0lEX0xFTkdUSFMoaWQsIGxlbmd0aCkgY29uc3QgaW50IGlkIyNfbGVuZ3RoID0gbGVuZ3RoOwpA
QCAtMjE3LDcgKzIyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGT1JfRUFDSF9PUENP
REVfSUQoVkVSSUZZX09QQ09ERV9JRCk7CiAgICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQKIAot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRF
RF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAjaWYgQ09NUElMRVIoUlZDVCkg
fHwgQ09NUElMRVIoSU5URUwpCiAgICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNw
cAkocmV2aXNpb24gMTA3NzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1
dEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyNyArMjcsNjkgQEAKICNpbmNs
dWRlICJQdXRCeUlkU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRl
ICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVk
ZSAiU3RydWN0dXJlQ2hhaW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK1B1dEJ5SWRTdGF0dXMg
UHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ss
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQoreworICAgIFVOVVNF
RF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7
CisgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4o
KSArIGJ5dGVjb2RlSW5kZXg7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0
aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpOworICAgIGlmICghc3RydWN0dXJlKQorICAgICAgICBy
ZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7Cisg
ICAgCisgICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9p
ZCkgeworICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxv
Y2stPmdsb2JhbERhdGEoKSwgaWRlbnQpOworICAgICAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5k
KQorICAgICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwg
MCwgbm90Rm91bmQpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2lt
cGxlUmVwbGFjZSwgc3RydWN0dXJlLCAwLCAwLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICBB
U1NFUlQoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb25fZGlyZWN0CisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxs
aW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgCisgICAgU3RydWN0dXJl
KiBuZXdTdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBT
dHJ1Y3R1cmVDaGFpbiogY2hhaW4gPSBpbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdl
dCgpOworICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUpOworICAgIEFTU0VSVChjaGFpbik7CisgICAg
CisgICAgc2l6ZV90IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5n
bG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAg
ICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7
CisgICAgCisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3RydWN0
dXJlLCBuZXdTdHJ1Y3R1cmUsIGNoYWluLCBvZmZzZXQpOworI2Vsc2UKKyAgICByZXR1cm4gUHV0
QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisjZW5kaWYKK30K
KwogUHV0QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRl
Y29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYm
IEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9m
U3RydWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHBy
b2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICBpZiAocHJvZmls
ZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCiAgICAgICAgIHJl
dHVybiBQdXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKICAg
ICAKICAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRT
dHViSW5mbyhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAg
IHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsK
KyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJ
bmRleCwgaWRlbnQpOwogICAgIAogICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewog
ICAgIGNhc2UgYWNjZXNzX3Vuc2V0OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0lu
Zm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJv
bUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAg
ICAgY2FzZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6IHsKICAgICAgICAgc2l6ZV90IG9mZnNl
dCA9IHN0dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0KApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5o
CShyZXZpc2lvbiAxMDc3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKICAg
ICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKIHByaXZh
dGU6CisgICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sq
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUg
bV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOwogICAgIFN0cnVjdHVyZSog
bV9uZXdTdHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTA3NzEzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJKU0FjdGl2YXRp
b24uaCIKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIK
KyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVDaGFpbi5o
IgogI2luY2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCkBAIC0x
Mjc4LDkgKzEyNzksNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29s
CiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJ
bmZvKGluc3RydWN0aW9ucygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoSU5URVJQUkVU
RVIpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgICAgICBib29sIGR5bmFtaWMgPSByZXNv
bHZlUmVzdWx0LmlzRHluYW1pYygpICYmIHJlc29sdmVSZXN1bHQuZGVwdGgoKTsKICAgICAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKGR5bmFtaWMgPyBvcF9y
ZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKQEAgLTEzODQsOSArMTM4Myw2IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICAgICAgICAgcmV0dXJuIGJh
c2VEc3Q7CiAgICAgfQogCi0KLQotCiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFBy
b2ZpbGVkT3Bjb2RlKG9wX3Jlc29sdmVfd2l0aF9iYXNlKTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoYmFzZURzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BE
c3QtPmluZGV4KCkpOwpAQCAtMTQ5NCw5ICsxNDkwLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdE1ldGhvZENoZWNrKAogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eSkKIHsKLSNpZiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxv
Y2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsK
LSNlbmRpZgogCiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2Rl
KG9wX2dldF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7
CkBAIC0xNTIyLDkgKzE1MTYsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdldEFyCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnlJZChSZWdp
c3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFs
dWUpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9w
ZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKIAog
ICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
YmFzZS0+aW5kZXgoKSk7CkBAIC0xNTQwLDkgKzE1MzIsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5CiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0RGlyZWN0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9w
ZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0jaWYgRU5BQkxFKElOVEVSUFJFVEVSKQogICAg
IG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygp
LnNpemUoKSk7Ci0jZW5kaWYKICAgICAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTgyMyw3ICsxODEz
LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCgKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsg
Ly8gYXJnQ291bnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdp
c3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygp
KTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworI2VuZGlmCiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7
CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9j
YWxsX3B1dF9yZXN1bHQpOwpAQCAtMTkyNyw3ICsxOTIxLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Q29uc3QKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+
aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50
cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0
ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1f
Y29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKDApOworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwog
ICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSog
cHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMjE4
OCw3ICsyMTg2LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gK
IHsKICAgICBtX3VzZXNFeGNlcHRpb25zID0gdHJ1ZTsKICNpZiBFTkFCTEUoSklUKQorI2lmIEVO
QUJMRShMTElOVCkKKyAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwg
ZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVw
dGggKyBtX2Jhc2VTY29wZURlcHRoLCBDb2RlTG9jYXRpb25MYWJlbChNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI6OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVzcyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF9vcF9jYXRjaCkpKSB9OworI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFy
dC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1f
ZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoLCBDb2RlTG9jYXRpb25MYWJlbCgp
IH07CisjZW5kaWYKICNlbHNlCiAgICAgSGFuZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQo
MCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNT
Y29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCB9OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTA3
NzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU4NSw5ICs1ODUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAg
ICAgVU5VU0VEX1BBUkFNKG5vZGVJbmRleCk7CiAgICAgICAgIAotICAgICAgICBWYWx1ZVByb2Zp
bGUqIHByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJv
ZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5kZXgpOwotICAgICAgICBBU1NFUlQocHJv
ZmlsZSk7Ci0gICAgICAgIFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUtPmNvbXB1
dGVVcGRhdGVkUHJlZGljdGlvbigpOworICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24g
PSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZVByZWRpY3Rp
b25Gb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4KTsKICNpZiBERkdfRU5BQkxFKERFQlVH
X1ZFUkJPU0UpCiAgICAgICAgIGRhdGFMb2coIkR5bmFtaWMgW0AldSwgYmMjJXVdIHByZWRpY3Rp
b246ICVzXG4iLCBub2RlSW5kZXgsIGJ5dGVjb2RlSW5kZXgsIHByZWRpY3Rpb25Ub1N0cmluZyhw
cmVkaWN0aW9uKSk7CiAjZW5kaWYKQEAgLTEwMjIsNiArMTAyMCw5IEBAIGJvb2wgQnl0ZUNvZGVQ
YXJzZXI6OmhhbmRsZUlubGluaW5nKGJvb2wKICAgICAKICAgICAvLyBJZiB3ZSBnZXQgaGVyZSB0
aGVuIGl0IGxvb2tzIGxpa2Ugd2Ugc2hvdWxkIGRlZmluaXRlbHkgaW5saW5lIHRoaXMgY29kZS4g
UHJvY2VlZAogICAgIC8vIHdpdGggcGFyc2luZyB0aGUgY29kZSB0byBnZXQgYnl0ZWNvZGUsIHNv
IHRoYXQgd2UgY2FuIHRoZW4gcGFyc2UgdGhlIGJ5dGVjb2RlLgorICAgIC8vIE5vdGUgdGhhdCBp
ZiBMTEludCBpcyBlbmFibGVkLCB0aGUgYnl0ZWNvZGUgd2lsbCBhbHdheXMgYmUgYXZhaWxhYmxl
LiBBbHNvIG5vdGUKKyAgICAvLyB0aGF0IGlmIExMSW50IGlzIGVuYWJsZWQsIHdlIG1heSBpbmxp
bmUgYSBjb2RlIGJsb2NrIHRoYXQgaGFzIG5ldmVyIGJlZW4gSklUdGVkCisgICAgLy8gYmVmb3Jl
IQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9jb2RlQmxvY2tDYWNoZS5nZXQoQ29kZUJs
b2NrS2V5KGV4ZWN1dGFibGUsIGtpbmQpLCBleHBlY3RlZEZ1bmN0aW9uLT5zY29wZSgpKTsKICAg
ICBpZiAoIWNvZGVCbG9jaykKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTcyMiw3ICsxNzIz
LDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9jdXJyZW50SW5kZXgp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobWV0aG9kQ2FsbFN0YXR1cy5pc1NldCgp
Ci0gICAgICAgICAgICAgICAgJiYgIWdldEJ5SWRTdGF0dXMuaXNTZXQoKQorICAgICAgICAgICAg
ICAgICYmICFnZXRCeUlkU3RhdHVzLndhc1NlZW5JbkpJVCgpCiAgICAgICAgICAgICAgICAgJiYg
IW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5k
ZXgsIEJhZENhY2hlKSkgewogICAgICAgICAgICAgICAgIC8vIEl0J3MgbW9ub21vcnBoaWMgYXMg
ZmFyIGFzIHdlIGNhbiB0ZWxsLCBzaW5jZSB0aGUgbWV0aG9kX2NoZWNrIHdhcyBsaW5rZWQKICAg
ICAgICAgICAgICAgICAvLyBidXQgdGhlIHNsb3cgcGF0aCAoaS5lLiB0aGUgbm9ybWFsIGdldF9i
eV9pZCkgbmV2ZXIgZmlyZWQuCkBAIC0xNzkxLDcgKzE3OTIsOSBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dl
dF9ieV9pZCk7CiAgICAgICAgIH0KLSAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6IHsKKyAgICAg
ICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDog
ewogICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsz
XS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudElu
c3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVy
TnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3Ry
dWN0aW9uWzJdLnUub3BlcmFuZF07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDEwNzcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw2ICsxMTEs
OCBAQCBpbmxpbmUgYm9vbCBjYW5Db21waWxlT3Bjb2RlKE9wY29kZUlEIG9wCiAgICAgY2FzZSBv
cF9wdXRfc2NvcGVkX3ZhcjoKICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICBjYXNlIG9wX3B1
dF9ieV9pZDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNlIG9wX2dldF9nbG9i
YWxfdmFyOgogICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92YXI6CiAgICAgY2FzZSBvcF9qbXA6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIu
Y3BwCShyZXZpc2lvbiAxMDc3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDIxIEBAIHZvaWQg
Y29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQogICAgIHVpbnQzMl90IGV4aXRJbmRleCA9
IGdsb2JhbERhdGEtPm9zckV4aXRJbmRleDsKICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2Nr
LT5vc3JFeGl0KGV4aXRJbmRleCk7CiAgICAgCisgICAgLy8gTWFrZSBzdXJlIGFsbCBjb2RlIG9u
IG91ciBpbmxpbmUgc3RhY2sgaXMgSklUIGNvbXBpbGVkLiBUaGlzIGlzIG5lY2Vzc2FyeSBzaW5j
ZQorICAgIC8vIHdlIG1heSBvcHQgdG8gaW5saW5lIGEgY29kZSBibG9jayBldmVuIGJlZm9yZSBp
dCBoYWQgZXZlciBiZWVuIGNvbXBpbGVkIGJ5IHRoZQorICAgIC8vIEpJVCwgYnV0IG91ciBPU1Ig
ZXhpdCBpbmZyYXN0cnVjdHVyZSBjdXJyZW50bHkgb25seSB3b3JrcyBpZiB0aGUgdGFyZ2V0IG9m
IHRoZQorICAgIC8vIE9TUiBleGl0IGlzIEpJVCBjb2RlLiBUaGlzIGNvdWxkIGJlIGNoYW5nZWQg
c2luY2UgdGhlcmUgaXMgbm90aGluZyBwYXJ0aWN1bGFybHkKKyAgICAvLyBoYXJkIGFib3V0IGRv
aW5nIGFuIE9TUiBleGl0IGludG8gdGhlIGludGVycHJldGVyLCBidXQgZm9yIG5vdyB0aGlzIHNl
ZW1zIHRvIG1ha2UKKyAgICAvLyBzZW5zZSBpbiB0aGF0IGlmIHdlJ3JlIE9TUiBleGl0aW5nIGZy
b20gaW5saW5lZCBjb2RlIG9mIGEgREZHIGNvZGUgYmxvY2ssIHRoZW4KKyAgICAvLyBwcm9iYWJs
eSBpdCdzIGEgZ29vZCBzaWduIHRoYXQgdGhlIHRoaW5nIHdlJ3JlIGV4aXRpbmcgaW50byBpcyBo
b3QuIEV2ZW4gbW9yZQorICAgIC8vIGludGVyZXN0aW5nbHksIHNpbmNlIHRoZSBjb2RlIHdhcyBp
bmxpbmVkLCBpdCBtYXkgbmV2ZXIgb3RoZXJ3aXNlIGdldCBKSVQKKyAgICAvLyBjb21waWxlZCBz
aW5jZSB0aGUgYWN0IG9mIGlubGluaW5nIGl0IG1heSBlbnN1cmUgdGhhdCBpdCBvdGhlcndpc2Ug
bmV2ZXIgcnVucy4KKyAgICBmb3IgKENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2Rl
T3JpZ2luOyBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsgY29kZU9yaWdpbiA9IGNvZGVPcmln
aW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rp
b25FeGVjdXRhYmxlKj4oY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0
KCkpCisgICAgICAgICAgICAtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lLT5pc0NhbGwgPyBDb2RlRm9yQ2FsbCA6IENvZGVGb3JDb25zdHJ1Y3QpCisgICAg
ICAgICAgICAtPmppdENvbXBpbGUoKmdsb2JhbERhdGEpOworICAgIH0KKyAgICAKICAgICBTcGVj
dWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeSA9IDA7CiAgICAgaWYgKGV4aXQubV9yZWNvdmVyeUlu
ZGV4KQogICAgICAgICByZWNvdmVyeSA9ICZjb2RlQmxvY2stPnNwZWN1bGF0aW9uUmVjb3Zlcnko
ZXhpdC5tX3JlY292ZXJ5SW5kZXggLSAxKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24gMTA3NzEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsNyBAQAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIK
ICNpbmNsdWRlICJERkdSZXBhdGNoLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5o
IgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgogI2luY2x1ZGUgIklubGluZUFTTS5oIgogI2lu
Y2x1ZGUgIkludGVycHJldGVyLmgiCkBAIC03MzcsNTAgKzczOCw2IEBAIHNpemVfdCBERkdfT1BF
UkFUSU9OIG9wZXJhdGlvbkNvbXBhcmVTdHIKICAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1
YWwoZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5j
b2RlZE9wMikpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUoKTsKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7Ci0KLSNpZiBDUFUoWDg2XzY0KQot
YXNtICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJc
biIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJ
TkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglcjEzKSwg
JXIxM1xuIgotICAgICJtb3YgJXIxMywgJXJkaVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RSSU5H
X1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7
Ci0jZWxpZiBDUFUoWDg2KQotYXNtICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAg
ICAibW92IC00MCglZWRpKSwgJWVkaVxuIgotICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgotICAg
ICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdp
dGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikKLWFzbSAoCi0iLnRl
eHQiICJcbiIKLSIuYWxpZ24gMiIgIlxuIgotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIlxuIgotIi50aHVtYiIgIlxuIgotIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgotICAgICJj
cHkgcjAsIHI1IiAiXG4iCi0gICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZW5kaWYKLQotRW5jb2Rl
ZEpTVmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0
ZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4
ZWMtPmdsb2JhbERhdGEoKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2Jh
bERhdGEsIGV4ZWMpOwotICAgIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xv
YmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQotCiBzdGF0aWMgdm9pZCogaGFuZGxl
SG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUt
PmNhbGxlckZyYW1lKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2
aXNpb24gMTA3NzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTgzNyw3ICs4MzcsNyBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBU
b2dnbGUgc3dlZXBUb2dnCiAgICAgICAgIHNldEhpZ2hXYXRlck1hcmsobWF4KHByb3BvcnRpb25h
bEJ5dGVzLCBtX21pbkJ5dGVzUGVyQ3ljbGUpKTsKICAgICB9CiAgICAgSkFWQVNDUklQVENPUkVf
R0NfRU5EKCk7Ci0KKyAgICAKICAgICAoKm1fYWN0aXZpdHlDYWxsYmFjaykoKTsKIH0KIApJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTA3NzEzKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBK
U1ZhbHVlOwogICAgIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXI7CiAgICAgY2xh
c3MgUmVnaXN0ZXJGaWxlOwogICAgIGNsYXNzIFVTdHJpbmc7CkBAIC0xMzYsMTIgKzEzNywxMyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJv
b3RzKEhhc2hTZXQ8SlNDZWxsKj4mIHJvb3RzKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZy
aWVuZCBjbGFzcyBDb2RlQmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRTcGFjZTsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIE1hcmtlZEFsbG9jYXRvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJs
b2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgQnVtcFNwYWNlOwogICAgICAgICBmcmllbmQgY2xh
c3MgU2xvdFZpc2l0b3I7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYpOwog
CiAgICAgICAgIHZvaWQqIGFsbG9jYXRlV2l0aERlc3RydWN0b3Ioc2l6ZV90KTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkocmV2aXNpb24gMTA3NzEzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzA0LDcgKzMwNCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGls
ZHJlbigKICNlbmRpZgogCiAgICAgQVNTRVJUKEhlYXA6OmlzTWFya2VkKGNlbGwpKTsKLQorICAg
IAogICAgIGlmIChpc0pTU3RyaW5nKGNlbGwpKSB7CiAgICAgICAgIEpTU3RyaW5nOjp2aXNpdENo
aWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4oY2VsbCksIHZpc2l0b3IpOwogICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3Iu
aAkocmV2aXNpb24gMTA3NzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTgsNiArOCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiBjbGFzcyBIZWFwOwogY2xhc3MgTWFya2VkU3BhY2U7CitjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAKIG5hbWVzcGFjZSBERkcgewogY2xhc3MgU3BlY3VsYXRpdmVKSVQ7CkBAIC0z
Myw2ICszNCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGluaXQoSGVhcCosIE1hcmtlZFNwYWNlKiwg
c2l6ZV90IGNlbGxTaXplLCBib29sIGNlbGxzTmVlZERlc3RydWN0aW9uKTsKICAgICAKIHByaXZh
dGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICBK
U19FWFBPUlRfUFJJVkFURSB2b2lkKiBhbGxvY2F0ZVNsb3dDYXNlKCk7CiAgICAgdm9pZCogdHJ5
QWxsb2NhdGUoKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZUhlbHBlcigpOwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCShyZXZpc2lvbiAxMDc3MTMpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2Vs
bDsKIGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsKIGNsYXNzIFNsb3RWaXNpdG9yOwogCkBAIC03OSw2ICs4
MCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpZENvbnN1bWVGcmVlTGlzdChNYXJrZWRCbG9jayop
OwogCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgCiAgICAgLy8gWyAzMi4uLiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lz
ZVN0ZXAgPSBNYXJrZWRCbG9jazo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBw
cmVjaXNlQ3V0b2ZmID0gMjU2OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuaAkocmV2aXNpb24gMTA3NzEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNiAr
MTI0LDkgQEAgbmFtZXNwYWNlIEpTQyAgewogI2lmIEVOQUJMRShJTlRFUlBSRVRFUikKICAgICAg
ICAgSW5zdHJ1Y3Rpb24qIHJldHVyblZQQygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJG
aWxlOjpSZXR1cm5QQ10udlBDKCk7IH0KICNlbmRpZgorI2lmIEVOQUJMRShMTElOVCkKKyAgICAg
ICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdCB7IHJldHVybiBiaXR3aXNlX2Nhc3Q8
SW5zdHJ1Y3Rpb24qPih0aGlzW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0udGFnKCkpOyB9
CisjZW5kaWYKIAogICAgICAgICB2b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogY2FsbGVy
RnJhbWUpIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OkNhbGxl
ckZyYW1lXSA9IGNhbGxlckZyYW1lOyB9CiAgICAgICAgIHZvaWQgc2V0U2NvcGVDaGFpbihTY29w
ZUNoYWluTm9kZSogc2NvcGVDaGFpbikgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1Jl
Z2lzdGVyRmlsZTo6U2NvcGVDaGFpbl0gPSBzY29wZUNoYWluOyB9CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9u
IDEwNzcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRlICJKSVQuaCIK
ICNlbmRpZgogCi0jZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAo
RU5BQkxFKENPTVBVVEVEX0dPVE9fSU5URVJQUkVURVIpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkK
KyNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EICgoRU5BQkxFKENP
TVBVVEVEX0dPVE9fSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkpICYmICFkZWZpbmVkKF9f
bGx2bV9fKSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNTQ3LDE3ICs1NDcsNDMgQEAg
SW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKIHsKIH0KIAotdm9pZCBJbnRlcnByZXRlcjo6aW5p
dGlhbGl6ZShib29sIGNhblVzZUpJVCkKK0ludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIoKQogewot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkK
KyAgICBpZiAobV9lbmFibGVkKQorICAgICAgICBkZWxldGVbXSBtX29wY29kZVRhYmxlOworI2Vu
ZGlmCit9CisKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJbnQ6OkRhdGEqIGxsaW50
RGF0YSwgYm9vbCBjYW5Vc2VKSVQpCit7CisgICAgVU5VU0VEX1BBUkFNKGxsaW50RGF0YSk7Cisg
ICAgVU5VU0VEX1BBUkFNKGNhblVzZUpJVCk7CisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxFKENPTVBVVEVEX0dPVE9fSU5U
RVJQUkVURVIpCisgICAgLy8gSGF2aW5nIExMSW50IGVuYWJsZWQsIGJ1dCBub3QgYmVpbmcgYWJs
ZSB0byB1c2UgdGhlIEpJVCwgYW5kIG5vdCBoYXZpbmcKKyAgICAvLyBhIGNvbXB1dGVkIGdvdG8g
aW50ZXJwcmV0ZXIsIGlzIG5vdCBzdXBwb3J0ZWQuIE5vdCBiZWNhdXNlIHdlIGNhbm5vdAorICAg
IC8vIHN1cHBvcnQgaXQsIGJ1dCBiZWNhdXNlIEkgZGVjaWRlZCB0byBkcmF3IHRoZSBsaW5lIGF0
IHRoZSBudW1iZXIgb2YKKyAgICAvLyBwZXJtdXRhdGlvbnMgb2YgZXhlY3V0aW9uIGVuZ2luZXMg
dGhhdCBJIHdhbnRlZCB0aGlzIGNvZGUgdG8gZ3Jvay4KKyAgICBBU1NFUlQoY2FuVXNlSklUKTsK
KyNlbmRpZgogICAgIGlmIChjYW5Vc2VKSVQpIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAg
IG1fb3Bjb2RlVGFibGUgPSBsbGludERhdGEtPm9wY29kZU1hcCgpOworICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQorICAgICAgICAgICAgbV9vcGNvZGVJRFRh
YmxlLmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworI2Vs
c2UKICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0
aW5hdGlvbnMgZm9yIG9wY29kZXMuCiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsg
aSA8IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlID0gYml0
d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpKTsKICAgICAgICAgICAg
IG1fb3Bjb2RlVGFibGVbaV0gPSBvcGNvZGU7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0gZWxz
ZSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbmV3IE9wY29k
ZVtudW1PcGNvZGVJRHNdOworI2VuZGlmCiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRpYWxp
emVBbmRSZXR1cm4sIDAsIDApOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkg
PCBudW1PcGNvZGVJRHM7ICsraSkKQEAgLTU2Niw3ICs1OTIsNiBAQCB2b2lkIEludGVycHJldGVy
Ojppbml0aWFsaXplKGJvb2wgY2FuVXNlCiAgICAgICAgIG1fZW5hYmxlZCA9IHRydWU7CiAgICAg
fQogI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oY2FuVXNlSklUKTsKICNpZiBFTkFCTEUoSU5URVJQ
UkVURVIpCiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKICNlbHNlCkBAIC02NjcsOSArNjkyLDExIEBA
IHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW0KIAogYm9vbCBJbnRlcnBy
ZXRlcjo6aXNPcGNvZGUoT3Bjb2RlIG9wY29kZSkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09U
T19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikgfHwg
RU5BQkxFKExMSU5UKQorI2lmICFFTkFCTEUoTExJTlQpCiAgICAgaWYgKCFtX2VuYWJsZWQpCiAg
ICAgICAgIHJldHVybiBvcGNvZGUgPj0gMCAmJiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lz
ZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSkgPD0gb3BfZW5kOworI2VuZGlmCiAgICAgcmV0dXJu
IG9wY29kZSAhPSBIYXNoVHJhaXRzPE9wY29kZT46OmVtcHR5VmFsdWUoKQogICAgICAgICAmJiAh
SGFzaFRyYWl0czxPcGNvZGU+Ojppc0RlbGV0ZWRWYWx1ZShvcGNvZGUpCiAgICAgICAgICYmIG1f
b3Bjb2RlSURUYWJsZS5jb250YWlucyhvcGNvZGUpOwpAQCAtNzI2LDExICs3NTMsMTEgQEAgTkVW
RVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVud2luZENhbAogICAgIC8vIGhhdmUgdG8gc3Vi
dHJhY3QgMS4KICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoSU5URVJQUkVURVIpCiAgICAgaWYg
KGNhbGxlckZyYW1lLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklUKCkpCi0gICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBDKCkp
OworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2Fs
bGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAgICAgZWxzZQogICAgICAgICBieXRl
Y29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5W
UEMoKSkgLSAxOwogI2VsaWYgRU5BQkxFKEpJVCkKLSAgICBieXRlY29kZU9mZnNldCA9IGNvZGVC
bG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICBieXRlY29k
ZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFt
ZS0+cmV0dXJuUEMoKSk7CiAjZWxzZQogICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5i
eXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZW5kaWYKQEAgLTMz
MjcsNiArMzM1NCw4IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAjaWYgVVNFKEdDQ19DT01QVVRF
RF9HT1RPX1dPUktBUk9VTkQpCiAgICAgICBza2lwX3B1dF9ieV9pZDoKICNlbmRpZgorICAgIERF
RklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KQorICAgIERFRklORV9P
UENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKQogICAgIERFRklORV9PUENPREUo
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pIHsKICAgICAgICAgLyogb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb24gYmFzZShyKSBwcm9wZXJ0eShpZCkgdmFsdWUocikgb2xkU3RydWN0dXJlKHNJRCkgbmV3
U3RydWN0dXJlKHNJRCkgc3RydWN0dXJlQ2hhaW4oY2hhaW4pIG9mZnNldChuKSBkaXJlY3QoYikK
ICAgICAgICAgIApAQCAtNTE2MCwxMCArNTE4OSwxMCBAQCB2b2lkIEludGVycHJldGVyOjpyZXRy
aWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJs
b2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKTsKICNpZiBFTkFCTEUo
SklUKQogICAgIGVsc2UKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2Fs
bEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogI2Vsc2UKLSAgICBieXRlY29kZU9mZnNldCA9
IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsK
KyAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2Fs
bGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYKICAgICBsaW5lTnVtYmVy
ID0gY2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQgLSAxKTsKICAgICBzb3VyY2VJRCA9IGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCktPnNvdXJjZUlEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTA3NzEzKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDYgKzMzLDcgQEAKICNpbmNsdWRlICJKU0NlbGwuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJP
cGNvZGUuaCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKIApAQCAtNDUsNiArNDYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFibGU7CiAgICAgY2xhc3Mg
SlNGdW5jdGlvbjsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgY2xhc3Mg
UmVnaXN0ZXI7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CkBAIC0xMDAsMTkgKzEwMiwyMSBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAg
IGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIHB1YmxpYzoKICAg
ICAgICAgSW50ZXJwcmV0ZXIoKTsKKyAgICAgICAgfkludGVycHJldGVyKCk7CiAgICAgICAgIAot
ICAgICAgICB2b2lkIGluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQpOworICAgICAgICB2b2lkIGlu
aXRpYWxpemUoTExJbnQ6OkRhdGEqLCBib29sIGNhblVzZUpJVCk7CiAKICAgICAgICAgUmVnaXN0
ZXJGaWxlJiByZWdpc3RlckZpbGUoKSB7IHJldHVybiBtX3JlZ2lzdGVyRmlsZTsgfQogICAgICAg
ICAKICAgICAgICAgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCBpZCkKICAgICAgICAgewogICAg
ICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RP
X0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0lOVEVSUFJFVEVSKSB8fCBF
TkFCTEUoTExJTlQpCiAgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVUYWJsZVtpZF07CiAjZWxz
ZQogICAgICAgICAgICAgcmV0dXJuIGlkOwpAQCAtMTIyLDcgKzEyNiwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2RlSUQoT3Bjb2RlIG9wY29kZSkKICAgICAg
ICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwotI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgICAgIEFT
U0VSVChpc09wY29kZShvcGNvZGUpKTsKKyAgICAgICAgICAgIHJldHVybiBtX29wY29kZUlEVGFi
bGUuZ2V0KG9wY29kZSk7CisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19JTlRFUlBSRVRFUikK
ICAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKICAgICAgICAgICAgIGlmICgh
bV9lbmFibGVkKQogICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxPcGNvZGVJRD4o
Yml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSk7CkBAIC0xMzIsNiArMTM5LDExIEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIG9wY29kZTsKICNlbmRpZgogICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBib29sIGVuYWJsZWQoKQorICAgICAgICB7CisgICAgICAg
ICAgICByZXR1cm4gbV9lbmFibGVkOworICAgICAgICB9CiAKICAgICAgICAgYm9vbCBpc09wY29k
ZShPcGNvZGUpOwogCkBAIC0xOTksNyArMjExLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIFJlZ2lzdGVyRmlsZSBtX3JlZ2lzdGVyRmlsZTsKICAgICAgICAgCi0jaWYgRU5BQkxFKENP
TVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBPcGNv
ZGUqIG1fb3Bjb2RlVGFibGU7IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bjb2RlIGZvciBjb21waWxp
bmcKKyAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29wY29kZUlEVGFibGU7IC8v
IE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZworI2VsaWYgRU5BQkxFKENP
TVBVVEVEX0dPVE9fSU5URVJQUkVURVIpCiAgICAgICAgIE9wY29kZSBtX29wY29kZVRhYmxlW251
bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bjb2RlIGZvciBjb21waWxpbmcKICAg
ICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMg
T3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZwogI2VuZGlmCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oCShyZXZpc2lv
biAxMDc3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJG
aWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAgICBjbGFzcyBERkdDb2RlQmxvY2tzOwor
ICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIFJlZ2lzdGVyRmls
ZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlZ2lzdGVyRmlsZSk7CkBAIC04MSw2
ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2YXRlOgorICAg
ICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAg
ICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIqKTsKICAgICAgICAgdm9pZCByZWxlYXNlRXhj
ZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9pZCBhZGRUb0NvbW1pdHRlZEJ5dGVDb3VudChsb25n
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVy
blZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9z
dENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKworI2luY2x1ZGUgIkNhbGxG
cmFtZS5oIgorI2luY2x1ZGUgIklubGluZUFTTS5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisj
aW5jbHVkZSAiSlNWYWx1ZUlubGluZU1ldGhvZHMuaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCisjaWYgQ09NUElMRVIoR0NDKQorCisjaWYgQ1BVKFg4Nl82
NCkKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVl
KSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xf
U1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJXIx
MyksICVyMTNcbiIKKyAgICAibW92ICVyMTMsICVyZGlcbiIKKyAgICAiam1wICIgU1lNQk9MX1NU
UklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4i
CispOworI2VsaWYgQ1BVKFg4NikKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4i
CisgICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKKyAgICAibW92ICVlZGksIDQoJWVzcClcbiIK
KyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKEFSTV9USFVNQjIpCithc20gKAor
Ii50ZXh0IiAiXG4iCisiLmFsaWduIDIiICJcbiIKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpICJcbiIKKyIudGh1bWIiICJcbiIKKyIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFS
QU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJsZHIgcjUsIFtyNSwgIy00MF0iICJcbiIKKyAg
ICAiY3B5IHIwLCByNSIgIlxuIgorICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VuZGlmCisKK2V4
dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IGlmICghZXhlYykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0
dXJuVmFsdWUpOworfQorCisjZW5kaWYgLy8gQ09NUElMRVIoR0NDKQorCit9IC8vIG5hbWVzcGFj
ZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZh
bHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJl
dHVyblZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hv
c3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEhvc3RDYWxs
UmV0dXJuVmFsdWVfaAorI2RlZmluZSBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKworI2luY2x1ZGUg
IkpTVmFsdWUuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KKworLy8gVW5mb3J0dW5hdGVseSB0aGlzIG9ubHkgd29ya3Mgb24g
R0NDLWxpa2UgY29tcGlsZXJzLiBBbmQgaXQncyBjdXJyZW50bHkgb25seSB1c2VkCisvLyBieSBM
TEludCBhbmQgREZHLCB3aGljaCBhbHNvIGFyZSByZXN0cmljdGVkIHRvIEdDQy1saWtlIGNvbXBp
bGVycy4gV2Ugc2hvdWxkCisvLyBwcm9iYWJseSBmaXggdGhhdCBhdCBzb21lIHBvaW50LgorI2lm
IENPTVBJTEVSKEdDQykKKworI2lmIENBTExJTkdfQ09OVkVOVElPTl9JU19TVERDQUxMCisjZGVm
aW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIENERUNMCisjZWxzZQorI2RlZmluZSBI
T1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTgorI2VuZGlmCisKK25hbWVzcGFjZSBKU0Mgewor
CitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9O
IGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKKworLy8gVGhpcyBpcyBhIHB1YmxpYyBkZWNsYXJh
dGlvbiBvbmx5IHRvIGNvbnZpbmNlIENMQU5HIG5vdCB0byBlbGlkZSBpdC4KK2V4dGVybiAiQyIg
RW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxS
ZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7CisKK2lubGluZSB2b2lkIGluaXRp
YWxpemVIb3N0Q2FsbFJldHVyblZhbHVlKCkKK3sKKyAgICBnZXRIb3N0Q2FsbFJldHVyblZhbHVl
V2l0aEV4ZWNTdGF0ZSgwKTsKK30KKworfQorCisjZWxzZSAvLyBDT01QSUxFUihHQ0MpCisKK25h
bWVzcGFjZSBKU0MgeworaW5saW5lIHZvaWQgaW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJuVmFsdWUo
KSB7IH0KK30KKworI2VuZGlmIC8vIENPTVBJTEVSKEdDQykKKworI2VuZGlmIC8vIEhvc3RDYWxs
UmV0dXJuVmFsdWVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCShyZXZpc2lv
biAxMDc3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyNSw2ICszMjUsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVNYWluUGFz
cygpCiAgICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dpbGxfY2FsbCkKICAgICAgICAgREVG
SU5FX09QKG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9zY29w
ZSkKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfT1Ao
b3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2luZGV4KQogICAgICAg
ICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKQEAgLTQ4Niw2ICs0ODgsOCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3Bf
cG9zdF9pbmMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVfZGVjKQogICAgICAg
ICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2luYykKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fbm9ybWFsOgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X2lkKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsKQpAQCAtNTI1LDYgKzUyOSwxMCBAQCB2b2lkIEpJ
VDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBp
bGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2spCiB7CisjaWYgRU5BQkxFKEpJVF9W
RVJCT1NFX09TUikKKyAgICBwcmludGYoIkNvbXBpbGluZyBKSVQgY29kZSFcbiIpOworI2VuZGlm
CisgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogICAgIG1fY2FuQmVPcHRpbWl6ZWQg
PSBtX2NvZGVCbG9jay0+Y2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAtNjkzLDggKzcw
MSwxMiBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuCiAgICAgICAg
IGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gbV9jb2RlQmxvY2stPnN0cnVjdHVyZVN0dWJJbmZv
KG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mb1tpXS5wcm9wZXJ0eUFjY2Vzc0luZGV4KS5jYWxs
UmV0dXJuTG9jYXRpb247CiAgICAgfQogCi0jaWYgRU5BQkxFKERGR19KSVQpCi0gICAgaWYgKG1f
Y2FuQmVPcHRpbWl6ZWQpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQor
ICAgIGlmIChtX2NhbkJlT3B0aW1pemVkCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICB8fCB0
cnVlCisjZW5kaWYKKyAgICAgICAgKSB7CiAgICAgICAgIENvbXBhY3RKSVRDb2RlTWFwOjpFbmNv
ZGVyIGppdENvZGVNYXBFbmNvZGVyOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBtX2xhYmVscy5zaXplKCk7ICsrYnl0ZWNvZGVPZmZz
ZXQpIHsKICAgICAgICAgICAgIGlmIChtX2xhYmVsc1tieXRlY29kZU9mZnNldF0uaXNTZXQoKSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCShyZXZpc2lvbiAxMDc3MTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSklUQ29kZSgpIHsgfQogI2Vu
ZGlmCiAgICAgcHVibGljOgotICAgICAgICBlbnVtIEpJVFR5cGUgeyBIb3N0Q2FsbFRodW5rLCBC
YXNlbGluZUpJVCwgREZHSklUIH07CisgICAgICAgIGVudW0gSklUVHlwZSB7IE5vbmUsIEhvc3RD
YWxsVGh1bmssIEludGVycHJldGVyVGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsKICAgICAg
ICAgCiAgICAgICAgIHN0YXRpYyBKSVRUeXBlIGJvdHRvbVRpZXJKSVQoKQogICAgICAgICB7CkBA
IC02Niw4ICs2NiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBERkdK
SVQ7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBib29sIGlzT3B0aW1pemlu
Z0pJVChKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBqaXRU
eXBlID09IERGR0pJVDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3RhdGljIGJvb2wg
aXNCYXNlbGluZUNvZGUoSklUVHlwZSBqaXRUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICBy
ZXR1cm4gaml0VHlwZSA9PSBJbnRlcnByZXRlclRodW5rIHx8IGppdFR5cGUgPT0gQmFzZWxpbmVK
SVQ7CisgICAgICAgIH0KKyAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgSklUQ29k
ZSgpCisgICAgICAgICAgICA6IG1faml0VHlwZShOb25lKQogICAgICAgICB7CiAgICAgICAgIH0K
IApAQCAtNzUsNiArODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIDogbV9yZWYo
cmVmKQogICAgICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKICAgICAgICAgeworICAgICAg
ICAgICAgQVNTRVJUKGppdFR5cGUgIT0gTm9uZSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAg
ICAgIGJvb2wgb3BlcmF0b3IgISgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVERyaXZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklURHJpdmVyLmgJKHJldmlzaW9uIDEwNzcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklURHJpdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE1ICszMywyMSBAQAogI2luY2x1
ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgiCiAjaW5jbHVk
ZSAiSklULmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgogCiBuYW1lc3BhY2UgSlND
IHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KIGlubGluZSBib29sIGppdENv
bXBpbGVJZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPENvZGVC
bG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENvZGU6OkpJVFR5cGUg
aml0VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJ
VCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVubGlua0lu
Y29taW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAg
aWYgKGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAgICAgICBkZmdDb21waWxlZCA9IERG
Rzo6dHJ5Q29tcGlsZShnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGppdENvZGUpOwpAQCAt
NjIsOSArNjgsMTQgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbAog
CiBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29kZUJsb2NrLCBKSVRD
b2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGppdENvZGVXaXRoQXJpdHlDaGVj
aywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6SklUVHlwZSBqaXRU
eXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21p
bmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAo
aml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0
cnlDb21waWxlRnVuY3Rpb24oZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlLCBq
aXRDb2RlV2l0aEFyaXR5Q2hlY2spOwpAQCAtNzksNyArOTAsNiBAQCBpbmxpbmUgYm9vbCBqaXRD
b21waWxlRnVuY3Rpb25JZkFwcHJvcHJpCiAgICAgICAgIH0KICAgICAgICAgaml0Q29kZSA9IEpJ
VDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCAmaml0Q29kZVdpdGhBcml0
eUNoZWNrKTsKICAgICB9Ci0gICAgCiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENvZGUs
IGppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJldmlzaW9uIDEw
NzcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxlciBnZW5lcmljVGhy
b3coSlNHbG9iYWxEYQogCiBFeGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpTR2xvYmFsRGF0YSog
Z2xvYmFsRGF0YSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUs
IFJldHVybkFkZHJlc3NQdHIgZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1cm4gZ2VuZXJpY1Ro
cm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAgICByZXR1cm4gZ2Vu
ZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1bHRMb2NhdGlvbikp
OwogfQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2
aXNpb24gMTA3NzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0NDYsNiArMTQ0Niw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9O
KHZvaWQsIG9wX3B1dF9ieV9pZF8KICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJhbWUt
PmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBz
dGFja0ZyYW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmpl
Y3QoKSk7CisgICAgCiAgICAgYXNPYmplY3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGNhbGxGcmFt
ZS0+Z2xvYmFsRGF0YSgpLCBpZGVudCwgc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwgc2xv
dCk7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGFja0ZyYW1lLmNhbGxGcmFt
ZS0+Y29kZUJsb2NrKCk7CkBAIC0xOTMxLDcgKzE5MzIsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElP
Tih2b2lkLCBvcHRpbWl6ZV9mcm9tCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNr
RnJhbWUuYXJnc1swXS5pbnQzMigpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAg
ICBkYXRhTG9nKCJFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVy
ID0gJWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5
Q291bnRlciA9ICV1XG4iLCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCksIGNvZGVCbG9j
ay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25E
ZWxheUNvdW50ZXIoKSk7CisgICAgZGF0YUxvZygiJXA6IEVudGVyZWQgb3B0aW1pemVfZnJvbV9s
b29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIg
PSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jaywgY29kZUJs
b2NrLT5qaXRFeGVjdXRlQ291bnRlcigpLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyKCksIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOwogI2VuZGlm
CiAKICAgICBpZiAoY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpKSB7CkBAIC0y
MTg2LDQ1ICsyMTg3LDEzIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1
Y3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1pbmxpbmUgQ2FsbEZyYW1lKiBhcml0eUNoZWNr
Rm9yKENhbGxGcmFtZSogY2FsbEZyYW1lLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgQ29k
ZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQotewotICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFz
RnVuY3Rpb24oY2FsbEZyYW1lLT5jYWxsZWUoKSk7Ci0gICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9z
dEZ1bmN0aW9uKCkpOwotICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+anNF
eGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOwotICAgIGludCBhcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcyA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoKTsKLQotICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBj
YXNlIHNjZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgotICAg
IGlmICghcmVnaXN0ZXJGaWxlLT5ncm93KGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBuZXdDb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3Rl
cnMpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKLQotICAgIC8vIFRvbyBm
ZXcgYXJndW1lbnRzIC0tIGNvcHkgY2FsbCBmcmFtZSBhbmQgYXJndW1lbnRzLCB0aGVuIGZpbGwg
aW4gbWlzc2luZyBhcmd1bWVudHMgd2l0aCB1bmRlZmluZWQuCi0gICAgc2l6ZV90IGRlbHRhID0g
bmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
czsKLSAgICBSZWdpc3Rlciogc3JjID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKTsKLSAgICBSZWdp
c3RlciogZHN0ID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIGRlbHRhOwotCi0gICAgaW50IGk7
Ci0gICAgaW50IGVuZCA9IC1DYWxsRnJhbWU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyk7Ci0gICAgZm9yIChpID0gLTE7IGkgPj0gZW5kOyAtLWkpCi0gICAgICAgIGRzdFtp
XSA9IHNyY1tpXTsKLQotICAgIGVuZCAtPSBkZWx0YTsKLSAgICBmb3IgKCA7IGkgPj0gZW5kOyAt
LWkpCi0gICAgICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBDYWxsRnJhbWUqIG5l
d0NhbGxGcmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGRzdCk7Ci0gICAgQVNTRVJUKCh2b2lkKilu
ZXdDYWxsRnJhbWUgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7Ci0gICAgcmV0dXJuIG5ld0NhbGxG
cmFtZTsKLX0KLQogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxfYXJpdHlDaGVj
aykKIHsKICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAKICAgICBDYWxs
RnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogCi0gICAgQ2FsbEZyYW1l
KiBuZXdDYWxsRnJhbWUgPSBhcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdp
c3RlckZpbGUsIENvZGVGb3JDYWxsKTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENv
bW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0
ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7CiAgICAgaWYgKCFuZXdDYWxsRnJhbWUpCiAgICAgICAgIHJl
dHVybiB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0YWNrRnJhbWUsIGNhbGxGcmFt
ZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFt
ZS0+Y2FsbGVyRnJhbWUoKSkpOwogCkBAIC0yMjM3LDcgKzIyMDYsNyBAQCBERUZJTkVfU1RVQl9G
VU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9
IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBh
cml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JD
b25zdHJ1Y3QpOworICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1BhdGhz
Ojphcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVG
b3JDb25zdHJ1Y3QpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJf
UkVUVVJOX0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxl
ckZyYW1lKCkpKTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFj
ZUpJVC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZh
Y2VKSVQuaAkocmV2aXNpb24gMTA3NzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
U0ludGVyZmFjZUpJVC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw4ICsyNiwxMCBAQAogI2lmbmRl
ZiBKU0ludGVyZmFjZUpJVF9oCiAjZGVmaW5lIEpTSW50ZXJmYWNlSklUX2gKIAorI2luY2x1ZGUg
IkJ5dGVjb2RlQ29udmVudGlvbnMuaCIKICNpbmNsdWRlICJKSVRDb2RlLmgiCiAjaW5jbHVkZSAi
SklUU3R1YnMuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIK
ICNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50Q29tbW9uX2gKKyNkZWZpbmUgTExJbnRDb21tb25f
aAorCisjZGVmaW5lIExMSU5UX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNkZWZpbmUgTExJTlRfSEVM
UEVSX1RSQUNJTkcgMAorI2RlZmluZSBMTElOVF9BTFdBWVNfQUxMT0NBVEVfU0xPVyAwCisKKyNl
bmRpZiAvLyBMTEludENvbW1vbl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVk
ZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisjaW5j
bHVkZSAiT3Bjb2RlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitE
YXRhOjpEYXRhKCkKKyAgICA6IG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKG5ldyBJbnN0cnVjdGlv
blttYXhPcGNvZGVMZW5ndGggKyAxXSkKKyAgICAsIG1fb3Bjb2RlTWFwKG5ldyBPcGNvZGVbbnVt
T3Bjb2RlSURzXSkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heE9wY29kZUxlbmd0aCAr
IDE7ICsraSkKKyAgICAgICAgbV9leGNlcHRpb25JbnN0cnVjdGlvbnNbaV0udS5wb2ludGVyID0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGluZSk7
CisjZGVmaW5lIE9QQ09ERV9FTlRSWShvcGNvZGUsIGxlbmd0aCkgbV9vcGNvZGVNYXBbb3Bjb2Rl
XSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50XyMjb3Bjb2RlKTsKKyAgICBGT1JfRUFDSF9P
UENPREVfSUQoT1BDT0RFX0VOVFJZKTsKKyN1bmRlZiBPUENPREVfRU5UUlkKK30KKworRGF0YTo6
fkRhdGEoKQoreworICAgIGRlbGV0ZVtdIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIGRl
bGV0ZVtdIG1fb3Bjb2RlTWFwOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKwor
I2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnREYXRhLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnREYXRhLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludERhdGFfaAorI2Rl
ZmluZSBMTEludERhdGFfaAorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25h
bWVzcGFjZSBMTEludCB7CisKKyNpZiBFTkFCTEUoTExJTlQpCitjbGFzcyBEYXRhIHsKK3B1Ymxp
YzoKKyAgICBEYXRhKCk7CisgICAgfkRhdGEoKTsKKyAgICAKKyAgICBJbnN0cnVjdGlvbiogZXhj
ZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2V4Y2VwdGlvbklu
c3RydWN0aW9uczsKKyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1fb3Bjb2RlTWFwOworICAgIH0KK3ByaXZhdGU6CisgICAgSW5zdHJ1
Y3Rpb24qIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIE9wY29kZSogbV9vcGNvZGVNYXA7
Cit9OworI2Vsc2UgLy8gRU5BQkxFKExMSU5UKQorCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9y
ZWQgIi1XbWlzc2luZy1ub3JldHVybiIKKyNlbmRpZgorCitjbGFzcyBEYXRhIHsKK3B1YmxpYzoK
KyAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKyAgICB7CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisg
ICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK307CisKKyNpZiBDT01QSUxFUihDTEFORykK
KyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorCisjZW5kaWYgLy8gRU5BQkxF
KExMSU5UKQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50
RGF0YV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9p
bnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
bnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKworI2lmIEVOQUJMRShMTElO
VCkKKworI2luY2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNp
bmNsdWRlICJMTEludFRodW5rcy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIK
KworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25F
bnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hl
Y2spCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGlmIChr
aW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9z
dEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVm
KE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlv
bl9mb3JfY2FsbF9wcm9sb2d1ZSkpKSk7CisgICAgICAgICAgICBhcml0eUNoZWNrID0gTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX2FyaXR5X2NoZWNrKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgaml0Q29kZSA9
IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZN
YW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkpKSk7CisgICAgICAgIGFyaXR5
Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaykpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIGppdENv
ZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxFbnRyeVRo
dW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgICAgIGFyaXR5
Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1Ro
dW5rR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NF
UlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9i
YWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9y
KSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgYXJpdHlDaGVjayA9IGdsb2JhbERh
dGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRv
cikuY29kZSgpOworfQorCit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNl
SklUKCkpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fz
c2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNv
ZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZXZhbF9wcm9sb2d1ZSkpKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0
YS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0
ZXJUaHVuayk7Cit9CisKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5V
c2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVy
Q29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSkpKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9i
YWxEYXRhLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJ
bnRlcnByZXRlclRodW5rKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNl
bmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRFbnRyeXBvaW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgTExJbnRFbnRyeXBvaW50c19oCisjZGVmaW5lIExMSW50RW50cnlwb2ludHNfaAorCisjaW5j
bHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFdmFs
Q29kZUJsb2NrOworY2xhc3MgSklUQ29kZTsKK2NsYXNzIEpTR2xvYmFsRGF0YTsKK2NsYXNzIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0cjsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKK2NsYXNz
IFByb2dyYW1Db2RlQmxvY2s7CisKK25hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rp
b25FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIEpJVENv
ZGUmLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2spOwordm9pZCBnZXRFdmFsRW50
cnlwb2ludChKU0dsb2JhbERhdGEmLCBKSVRDb2RlJik7Cit2b2lkIGdldFByb2dyYW1FbnRyeXBv
aW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKKworaW5saW5lIHZvaWQgZ2V0RW50cnlwb2lu
dChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEV2YWxDb2RlQmxvY2sqLCBKSVRDb2RlJiBqaXRD
b2RlKQoreworICAgIGdldEV2YWxFbnRyeXBvaW50KGdsb2JhbERhdGEsIGppdENvZGUpOworfQor
CitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJv
Z3JhbUNvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0UHJvZ3JhbUVudHJ5
cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpM
TEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRFbnRyeXBv
aW50c19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25z
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNl
cHRpb25zLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKwor
I2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUg
Ikluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxM
SW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBpbnRlcnByZXRlclRocm93SW5DYWxs
ZXIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZl
eGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBkYXRhTG9n
KCJUaHJvd2luZyBleGNlcHRpb24gJXMuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3Jp
cHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coCisgICAgICAgIGdsb2JhbERhdGEs
IGV4ZWMtPmNhbGxlckZyYW1lKCksIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwKKyAgICAgICAgZXhl
Yy0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGV4ZWMtPmNhbGxl
ckZyYW1lKCksIGV4ZWMtPnJldHVyblBDKCkpKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRv
VGhyb3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVybiBl
eGVjLT5nbG9iYWxEYXRhKCkubGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworfQor
CitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9u
KiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0
YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgZGF0YUxvZygiVGhyb3dpbmcgZXhj
ZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNj
cmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVjLCBn
bG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9u
cygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBnbG9iYWxEYXRhLT5sbGludERhdGEuZXhj
ZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSog
ZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9
ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBkYXRh
TG9nKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKGNhbGxUb1Rocm93KS5cbiIsIGdsb2JhbERhdGEt
PmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9i
YWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2Nr
KCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KCZsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKTsKK30KKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRFeGNlcHRpb25zX2gKKyNkZWZpbmUg
TExJbnRFeGNlcHRpb25zX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNl
IExMSW50IHsKKworLy8gVGhyb3cgdGhlIGN1cnJlbnRseSBhY3RpdmUgZXhjZXB0aW9uIGluIHRo
ZSBjb250ZXh0IG9mIHRoZSBjYWxsZXIncyBjYWxsIGZyYW1lLgordm9pZCBpbnRlcnByZXRlclRo
cm93SW5DYWxsZXIoRXhlY1N0YXRlKik7CisKKy8vIFRlbGxzIHlvdSB3aGVyZSB0byBqdW1wIHRv
IGlmIHlvdSB3YW50IHRvIHJldHVybi10by10aHJvdywgYWZ0ZXIgeW91J3ZlIGFscmVhZHkKKy8v
IHNldCB1cCBhbGwgaW5mb3JtYXRpb24gbmVlZGVkIHRvIHRocm93IHRoZSBleGNlcHRpb24uCitJ
bnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihFeGVjU3RhdGUqKTsK
KworLy8gU2F2ZXMgdGhlIGN1cnJlbnQgUEMgaW4gdGhlIGdsb2JhbCBkYXRhIGZvciBzYWZlLWtl
ZXBpbmcsIGFuZCBnaXZlcyB5b3UgYSBQQworLy8gdGhhdCB5b3UgY2FuIHRlbGwgdGhlIGludGVy
cHJldGVyIHRvIGdvIHRvLCB3aGljaCB3aGVuIGFkdmFuY2VkIGJldHdlZW4gMQorLy8gYW5kIDkg
c2xvdHMgd2lsbCBnaXZlIHlvdSBhbiAiaW5zdHJ1Y3Rpb24iIHRoYXQgdGhyZWFkcyB0byB0aGUg
aW50ZXJwcmV0ZXIncworLy8gZXhjZXB0aW9uIGhhbmRsZXIuIE5vdGUgdGhhdCBpZiB5b3UgZ2l2
ZSBpdCB0aGUgUEMgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZywKKy8vIGl0J3Mgc21hcnQgZW5vdWdo
IHRvIGp1c3QgcmV0dXJuIHRoYXQgUEMgd2l0aG91dCBkb2luZyBhbnl0aGluZyBlbHNlOyB0aGlz
CisvLyBsZXRzIHlvdSB0aHJlYWQgZXhjZXB0aW9uIGhhbmRsaW5nIHRocm91Z2ggY29tbW9uIGhl
bHBlciBmdW5jdGlvbnMgdXNlZCBieQorLy8gb3RoZXIgaGVscGVycy4KK0luc3RydWN0aW9uKiBy
ZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisKKy8vIFVzZSB0aGlzIHdo
ZW4geW91J3JlIHRocm93aW5nIHRvIGEgY2FsbCB0aHVuay4KK3ZvaWQqIGNhbGxUb1Rocm93KEV4
ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAor
CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRFeGNlcHRpb25zX2gK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiTExJbnRIZWxwZXJzLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJB
cmd1bWVudHMuaCIKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25TbG93
UGF0aHMuaCIKKyNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJl
dHVyblZhbHVlLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKSVQuaCIK
KyNpbmNsdWRlICJKSVREcml2ZXIuaCIKKyNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKKyNpbmNs
dWRlICJKU0J5dGVBcnJheS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgi
CisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RhdGlj
U2NvcGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTVmFsdWUu
aCIKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5o
IgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25z
LmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCisjZGVmaW5lIExMSU5U
X0JFR0lOKCkgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcigmZXhlYy0+Z2xvYmFsRGF0YSgp
LCBleGVjKQorCisjZGVmaW5lIExMSU5UX09QKGluZGV4KSAoZXhlYy0+dW5jaGVja2VkUihwY1tp
bmRleF0udS5vcGVyYW5kKSkKKyNkZWZpbmUgTExJTlRfT1BfQyhpbmRleCkgKGV4ZWMtPnIocGNb
aW5kZXhdLnUub3BlcmFuZCkpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOX1RXTyhmaXJzdCwgc2Vj
b25kKSBkbyB7ICAgICAgIFwKKyAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB2b2lkKiBhOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgICAgICAgICB2b2lkKiBiOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIH0gcGFpcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgIGludDY0X3QgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgfSBfX3J0X3U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgX19ydF91LnBhaXIuYSA9IGZpcnN0OyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgX19ydF91LnBhaXIuYiA9IHNlY29uZDsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
cmV0dXJuIF9fcnRfdS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxl
IChmYWxzZSkKKworI2RlZmluZSBMTElOVF9FTkRfSU1QTCgpIExMSU5UX1JFVFVSTl9UV08ocGMs
IGV4ZWMpCisKKyNkZWZpbmUgTExJTlRfVEhST1coZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBfX3RfZ2xvYmFsRGF0
YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsgICAgICAgIFwKKyAgICAgICAgX190X2dsb2JhbERhdGEu
ZXhjZXB0aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgIFwKKyAgICAgICAgcGMg
PSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DSEVDS19F
WENFUFRJT04oKSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VM
WShleGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uKSkgeyAgIFwKKyAgICAgICAgICAgIHBjID0g
cmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTExJ
TlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxl
IChmYWxzZSkKKworI2RlZmluZSBMTElOVF9FTkQoKSBkbyB7ICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAor
ICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0g
d2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0JSQU5DSChvcGNvZGUsIGNvbmRpdGlvbikg
ZG8geyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGJvb2wgX19iX2NvbmRpdGlvbiA9
IChjb25kaXRpb24pOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIGlmIChfX2JfY29uZGl0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgICAgICBwYyArPSBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51
Lm9wZXJhbmQ7ICAgICAgICBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwYyArPSBPUENPREVf
TEVOR1RIKG9wY29kZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5U
X0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOKHZhbHVlKSBkbyB7ICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgSlNWYWx1ZSBfX3JfcmV0dXJuVmFsdWUgPSAodmFsdWUp
OyAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgTExJTlRfT1AoMSkgPSBfX3JfcmV0dXJuVmFsdWU7ICAgICAgICAgIFwKKyAg
ICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdo
aWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fUFJPRklMRUQob3Bjb2RlLCB2YWx1
ZSkgZG8geyAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNWYWx1ZSBfX3JwX3JldHVyblZhbHVl
ID0gKHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VY
Q0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElO
VF9PUCgxKSA9IF9fcnBfcmV0dXJuVmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5wcm9maWxlLT5tX2J1Y2tldHNb
MF0gPSBcCisgICAgICAgICAgICBKU1ZhbHVlOjplbmNvZGUoX19ycF9yZXR1cm5WYWx1ZSk7ICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmlu
ZSBMTElOVF9DQUxMX0VORF9JTVBMKGV4ZWMsIGNhbGxUYXJnZXQpIExMSU5UX1JFVFVSTl9UV08o
KGNhbGxUYXJnZXQpLCAoZXhlYykpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBw
YywgZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0
YXRlKiBfX2N0X2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3RfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBfX2N0X2dsb2JhbERh
dGEgPSAoX19jdF9leGVjKS0+Z2xvYmFsRGF0YSgpOyAgICAgIFwKKyAgICAgICAgX19jdF9nbG9i
YWxEYXRhLmV4Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2N0X2V4ZWMsIGNhbGxUb1Rocm93KF9fY3Rf
ZXhlYywgX19jdF9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRf
Q0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2NjZV9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY2NlX3BjID0gKHBj
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElL
RUxZKF9fY2NlX2V4ZWMtPmdsb2JhbERhdGEoKS5leGNlcHRpb24pKSAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jY2VfZXhlYywgY2FsbFRvVGhyb3co
X19jY2VfZXhlYywgX19jY2VfcGMpKTsgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5l
IExMSU5UX0NBTExfUkVUVVJOKGV4ZWMsIHBjLCBjYWxsVGFyZ2V0KSBkbyB7ICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0ZSogX19jcl9leGVjID0gKGV4ZWMpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEluc3RydWN0aW9uKiBfX2NyX3Bj
ID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHZv
aWQqIF9fY3JfY2FsbFRhcmdldCA9IChjYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9OKF9fY3JfZXhlYy0+Y2Fs
bGVyRnJhbWUoKSwgX19jcl9wYyk7ICBcCisgICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19j
cl9leGVjLCBfX2NyX2NhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAo
ZmFsc2UpCisKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5k
KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3Bl
cmFuZCkKK3sKKyAgICBkYXRhTG9nKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTog
VHJhY2UoJWQpOiAlZDogJWRcbiIsCisgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAg
ICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBl
eGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAgICBl
eGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2Rl
KSwKKyAgICAgICAgICAgIGZyb21XaGVyZSwKKyAgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAg
ICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQpOworICAgIExMSU5UX0VORCgpOworfQorCitleHRl
cm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVj
LCBJbnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIEpT
VmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKG9wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICB1bmlvbiB7
CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICB1aW50MzJfdCB0YWc7CisgICAgICAgICAg
ICB1aW50MzJfdCBwYXlsb2FkOworICAgICAgICB9IGJpdHM7CisgICAgICAgIEVuY29kZWRKU1Zh
bHVlIGFzVmFsdWU7CisgICAgfSB1OworICAgIHUuYXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2
YWx1ZSk7CisgICAgZGF0YUxvZygiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRy
YWNlKCVkKTogJWQ6ICVkOiAlMDh4OiUwOHg6ICVzXG4iLAorICAgICAgICAgICAgZXhlYy0+Y29k
ZUJsb2NrKCksCisgICAgICAgICAgICBleGVjLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50
cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAor
ICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChw
Y1swXS51Lm9wY29kZSksCisgICAgICAgICAgICBmcm9tV2hlcmUsCisgICAgICAgICAgICBvcGVy
YW5kLAorICAgICAgICAgICAgcGNbb3BlcmFuZF0udS5vcGVyYW5kLAorICAgICAgICAgICAgdS5i
aXRzLnRhZywKKyAgICAgICAgICAgIHUuYml0cy5wYXlsb2FkLAorICAgICAgICAgICAgdmFsdWUu
ZGVzY3JpcHRpb24oKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KHRyYWNlX3Byb2xvZ3VlKQoreworICAgIGRhdGFMb2coIiVwIC8gJXA6IGluIHByb2xvZ3VlLlxu
IiwgZXhlYy0+Y29kZUJsb2NrKCksIGV4ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitzdGF0
aWMgdm9pZCB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFy
KiBjb21tZW50LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5jdGlv
biogY2FsbGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBleGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsKKyAgICBDb2RlQmxv
Y2sqIGNvZGVCbG9jayA9ICZleGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsK
KyAgICBkYXRhTG9nKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAl
cDsgbnVtVmFycyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZVJlZ2lzdGVycyA9
ICV1LlxuIiwKKyAgICAgICAgICAgIGNvZGVCbG9jaywgZXhlYywgY29tbWVudCwgY2FsbGVlLCBl
eGVjdXRhYmxlLAorICAgICAgICAgICAgY29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCit7Cisg
ICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIHByb2xvZ3VlIiwgQ29kZUZvckNh
bGwpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9s
b2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQoreworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1
ZShleGVjLCAiY29uc3RydWN0IHByb2xvZ3VlIiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2Nh
bGwpCit7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIGFyaXR5IGNoZWNr
IiwgQ29kZUZvckNhbGwpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVD
TCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgdHJhY2VGdW5jdGlvblBy
b2xvZ3VlKGV4ZWMsICJjb25zdHJ1Y3QgYXJpdHkgY2hlY2siLCBDb2RlRm9yQ29uc3RydWN0KTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2UpCit7CisgICAg
ZGF0YUxvZygiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgJXMsIHNjb3BlICVwXG4iLAorICAg
ICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgICBleGVjLAorICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0
aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICAgb3Bjb2RlTmFtZXNbZXhlYy0+Z2xvYmFsRGF0
YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSldLAorICAgICAgICAg
ICAgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woc3BlY2lhbF90cmFjZSkKK3sKKyAgICBkYXRhTG9nKCIlcCAvICVwOiBleGVjdXRp
bmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICAg
ICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAg
IHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRl
ci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICAgZXhlYy0+cmV0dXJu
UEMoKS52YWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworaW5saW5lIGJvb2wgc2hvdWxk
SklUKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBZb3UgY2FuIG1vZGlmeSB0aGlzIHRvIHR1
cm4gb2ZmIEpJVHRpbmcgd2l0aG91dCByZWJ1aWxkaW5nIHRoZSB3b3JsZC4KKyAgICByZXR1cm4g
ZXhlYy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpOworfQorCitlbnVtIEVudHJ5S2luZCB7IFBy
b2xvZ3VlLCBBcml0eUNoZWNrIH07CitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBlbnRyeU9TUihF
eGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIGNv
bnN0IGNoYXIgKm5hbWUsIEVudHJ5S2luZCBraW5kKQoreworI2lmIEVOQUJMRShKSVRfVkVSQk9T
RV9PU1IpCisgICAgZGF0YUxvZygiJXA6IEVudGVyZWQgJXMgd2l0aCBleGVjdXRlQ291bnRlciA9
ICVkXG4iLCBjb2RlQmxvY2ssIG5hbWUsIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigp
KTsKKyNlbmRpZgorICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGNv
ZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08o
MCwgZXhlYyk7CisgICAgfQorICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmds
b2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICBkYXRh
TG9nKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlmCisgICAgfQor
ICAgIGNvZGVCbG9jay0+aml0U29vbigpOworICAgIGlmIChraW5kID09IFByb2xvZ3VlKQorICAg
ICAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVCbG9jay0+Z2V0SklUQ29kZSgpLmV4ZWN1dGFibGVB
ZGRyZXNzQXRPZmZzZXQoMCksIGV4ZWMpOworICAgIEFTU0VSVChraW5kID09IEFyaXR5Q2hlY2sp
OworICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRDb2RlV2l0aEFyaXR5Q2hl
Y2soKS5leGVjdXRhYmxlQWRkcmVzcygpLCBleGVjKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
ZW50cnlfb3NyKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgZXhlYy0+Y29kZUJs
b2NrKCksICJlbnRyeV9vc3IiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVu
dHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCkKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywg
cGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRl
ZEJ5dGVjb2RlRm9yKENvZGVGb3JDYWxsKSwgImVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCIs
IFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zv
cl9jb25zdHJ1Y3QpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlv
bihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihD
b2RlRm9yQ29uc3RydWN0KSwgImVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0IiwgUHJv
bG9ndWUpOworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2Nh
bGxfYXJpdHlDaGVjaykKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0
aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9y
KENvZGVGb3JDYWxsKSwgImVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrIiwg
QXJpdHlDaGVjayk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X2FyaXR5Q2hlY2spCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBj
LCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRC
eXRlY29kZUZvcihDb2RlRm9yQ29uc3RydWN0KSwgImVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29u
c3RydWN0X2FyaXR5Q2hlY2siLCBBcml0eUNoZWNrKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
bG9vcF9vc3IpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2so
KTsKKyAgICAKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIGRhdGFMb2coIiVwOiBF
bnRlcmVkIGxvb3Bfb3NyIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBj
b2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAo
IXNob3VsZEpJVChleGVjKSkgeworICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29v
bigpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAgICAKKyAg
ICBpZiAoIWNvZGVCbG9jay0+aml0Q29tcGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYg
RU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICAgICAgZGF0YUxvZygiICAgIENvZGUgd2FzIGFs
cmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxvY2stPmppdFNv
b24oKTsKKyAgICAKKyAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOworICAgIAorICAgIFZlY3RvcjxCeXRlY29kZUFuZE1hY2hpbmVPZmZz
ZXQ+IG1hcDsKKyAgICBjb2RlQmxvY2stPmppdENvZGVNYXAoKS0+ZGVjb2RlKG1hcCk7CisgICAg
Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0KiBtYXBwaW5nID0gYmluYXJ5U2VhcmNoPEJ5dGVjb2Rl
QW5kTWFjaGluZU9mZnNldCwgdW5zaWduZWQsIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldDo6Z2V0
Qnl0ZWNvZGVJbmRleD4obWFwLmJlZ2luKCksIG1hcC5zaXplKCksIHBjIC0gY29kZUJsb2NrLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICBBU1NFUlQobWFwcGluZyk7CisgICAgQVNTRVJU
KG1hcHBpbmctPm1fYnl0ZWNvZGVJbmRleCA9PSBzdGF0aWNfY2FzdDx1bnNpZ25lZD4ocGMgLSBj
b2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpKTsKKyAgICAKKyAgICB2b2lkKiBqdW1w
VGFyZ2V0ID0gY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNl
dChtYXBwaW5nLT5tX21hY2hpbmVDb2RlT2Zmc2V0KTsKKyAgICBBU1NFUlQoanVtcFRhcmdldCk7
CisgICAgCisgICAgTExJTlRfUkVUVVJOX1RXTyhqdW1wVGFyZ2V0LCBleGVjKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0wocmVwbGFjZSkKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAg
ZGF0YUxvZygiJXA6IEVudGVyZWQgcmVwbGFjZSB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIs
IGNvZGVCbG9jaywgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisg
ICAgCisgICAgaWYgKHNob3VsZEpJVChleGVjKSkgeworICAgICAgICBpZiAoIWNvZGVCbG9jay0+
aml0Q29tcGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NF
X09TUikKKyAgICAgICAgICAgIGRhdGFMb2coIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVk
LlxuIik7CisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICBjb2RlQmxvY2stPmppdFNvb24oKTsK
KyAgICB9IGVsc2UKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVj
aykKK3sKKyAgICBMTElOVF9CRUdJTigpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAg
ZGF0YUxvZygiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0IHdpdGggZXhlYyA9ICVwLlxuIiwgZXhlYyk7
CisgICAgZGF0YUxvZygiQ29kZUJsb2NrID0gJXAuXG4iLCBleGVjLT5jb2RlQmxvY2soKSk7Cisg
ICAgZGF0YUxvZygiTnVtIGNhbGxlZSByZWdpc3RlcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9j
aygpLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgZGF0YUxvZygiTnVtIHZhcnMgPSAldS5c
biIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bVZhcnMpOworICAgIGRhdGFMb2coIkN1cnJlbnQg
ZW5kIGlzIGF0ICVwLlxuIiwgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3Rl
ckZpbGUoKS5lbmQoKSk7CisjZW5kaWYKKyAgICBBU1NFUlQoJmV4ZWMtPnJlZ2lzdGVycygpW2V4
ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVyc10gPiBleGVjLT5nbG9iYWxEYXRh
KCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKKyAgICBpZiAoVU5MSUtFTFko
IWV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZ3JvdygmZXhl
Yy0+cmVnaXN0ZXJzKClbZXhlYy0+Y29kZUJsb2NrKCktPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzXSkp
KSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBleGVjLT5n
bG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOwor
ICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIHBjID0gcmV0
dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihleGVjKTsKKyAgICB9CisgICAgTExJTlRfRU5E
X0lNUEwoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfYXJpdHlDaGVjaykK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNs
b3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJl
dGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNhbGwpOworICAgIGlmICghbmV3RXhlYykgewor
ICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFs
RGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAg
ICAgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMpOworICAgICAgICBMTElOVF9SRVRVUk5f
VFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSksIGV4ZWMp
OworICAgIH0KKyAgICBMTElOVF9SRVRVUk5fVFdPKDAsIG5ld0V4ZWMpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hl
Y2tGb3IoZXhlYywgJmV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxl
KCksIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBleGVj
ID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2Vw
dGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0
ZXJUaHJvd0luQ2FsbGVyKGV4ZWMpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSksIGV4ZWMpOworICAgIH0KKyAg
ICBMTElOVF9SRVRVUk5fVFdPKDAsIG5ld0V4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyNpZiBMTElO
VF9IRUxQRVJfVFJBQ0lORworICAgIGRhdGFMb2coIkNyZWF0aW5nIGFuIGFjdGl2YXRpb24sIGV4
ZWMgPSAlcCFcbiIsIGV4ZWMpOworI2VuZGlmCisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9u
ID0gSlNBY3RpdmF0aW9uOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLCBzdGF0aWNf
Y2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRh
YmxlKCkpKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVz
aChhY3RpdmF0aW9uKSk7CisgICAgTExJTlRfUkVUVVJOKEpTVmFsdWUoYWN0aXZhdGlvbikpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgYXJndW1lbnRzID0gSlNWYWx1ZShBcmd1bWVudHM6
OmNyZWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFuZCkgPSBhcmd1bWVu
dHM7CisgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNb
MV0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcykKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7
CisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIENvbnN0cnVjdERhdGEgY29uc3RydWN0
RGF0YTsKKyAgICBBU1NFUlQoY29uc3RydWN0b3ItPm1ldGhvZFRhYmxlKCktPmdldENvbnN0cnVj
dERhdGEoY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEpID09IENvbnN0cnVjdFR5cGVKUyk7Cisj
ZW5kaWYKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsKKyAgICBKU1ZhbHVlIHByb3Rv
ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmIChwcm90by5pc09iamVjdCgpKQorICAg
ICAgICBzdHJ1Y3R1cmUgPSBhc09iamVjdChwcm90byktPmluaGVyaXRvcklEKGV4ZWMtPmdsb2Jh
bERhdGEoKSk7CisgICAgZWxzZQorICAgICAgICBzdHJ1Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c2Nv
cGUoKS0+Z2xvYmFsT2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVyZSgpOworICAgIAorICAgIExM
SU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBzdHJ1Y3R1cmUpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcykKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIEpTVmFsdWUgdjEgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJU
KHYxLmlzUHJpbWl0aXZlKCkpOworICAgIExMSU5UX1JFVFVSTih2MS50b1RoaXNPYmplY3QoZXhl
YykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVjdCkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVj
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgYml0d2lz
ZV9jYXN0PEpTVmFsdWUqPigmTExJTlRfT1AoMikpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheV9idWZmZXIpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgZXhlYy0+Y29k
ZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKHBjWzJdLnUub3BlcmFuZCksIHBjWzNdLnUub3BlcmFu
ZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X3JlZ2V4cCkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29kZUJsb2NrKCktPnJl
Z2V4cChwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCisgICAg
ICAgIExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIGZsYWcgc3Vw
cGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9SRVRVUk4oUmVnRXhw
T2JqZWN0OjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCksIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhwU3RydWN0dXJlKCksIHJl
Z0V4cCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbm90KQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9Cb29sZWFuKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9l
cSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNW
YWx1ZTo6ZXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVxKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6ZXF1
YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
KSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpTVmFsdWU6OnN0cmljdEVx
dWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJpY3RlcSkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFsdWU6OnN0cmlj
dEVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczx0cnVlPihleGVj
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzZXEpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfcHJlX2luYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JF
VFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgKyAxKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QKDEpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKSAtIDEpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3Rf
aW5jKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09Q
KDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVy
KHJlc3VsdCArIDEpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfZGVjKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgZG91YmxlIHJlc3VsdCA9IExMSU5UX09QKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVj
KTsKKyAgICBMTElOVF9PUCgyKSA9IGpzTnVtYmVyKHJlc3VsdCAtIDEpOworICAgIExMSU5UX1JF
VFVSTihqc051bWJlcihyZXN1bHQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rv
X2pzbnVtYmVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVt
YmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9uZWdhdGUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoLUxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4
ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9hZGQpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAg
SlNWYWx1ZSB2MiA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIAorI2lmIExMSU5UX0hF
TFBFUl9UUkFDSU5HCisgICAgZGF0YUxvZygiVHJ5aW5nIHRvIGFkZCAlcyIsIHYxLmRlc2NyaXB0
aW9uKCkpOworICAgIGRhdGFMb2coIiB0byAlcy5cbiIsIHYyLmRlc2NyaXB0aW9uKCkpOworI2Vu
ZGlmCisgICAgCisgICAgaWYgKHYxLmlzU3RyaW5nKCkgJiYgIXYyLmlzT2JqZWN0KCkpCisgICAg
ICAgIExMSU5UX1JFVFVSTihqc1N0cmluZyhleGVjLCBhc1N0cmluZyh2MSksIHYyLnRvU3RyaW5n
KGV4ZWMpKSk7CisgICAgCisgICAgaWYgKHYxLmlzTnVtYmVyKCkgJiYgdjIuaXNOdW1iZXIoKSkK
KyAgICAgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHYxLmFzTnVtYmVyKCkgKyB2Mi5hc051bWJl
cigpKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpzQWRkU2xvd0Nhc2UoZXhlYywgdjEsIHYy
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
dG9OdW1iZXIoZXhlYykgKiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3ViKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRv
TnVtYmVyKGV4ZWMpIC0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RpdikKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051
bWJlcihleGVjKSAvIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tb2QpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoZm1vZChMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
dG9JbnQzMihleGVjKSA8PCAoTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykg
JiAzMSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3JzaGlmdCkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKS50b0ludDMyKGV4ZWMpID4+IChMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQz
MihleGVjKSAmIDMxKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdXJzaGlmdCkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSA+PiAoTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkudG9VSW50MzIoZXhlYykgJiAzMSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2JpdGFuZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJl
cihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpICYgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Yml0b3IpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIo
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSB8IExMSU5UX09QX0MoMykuanNW
YWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Jp
dHhvcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIF4gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0
bm90KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKH5M
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9jaGVja19oYXNfaW5zdGFuY2UpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBKU1ZhbHVlIGJhc2VWYWwgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyNpZm5kZWYg
TkRFQlVHCisgICAgVHlwZUluZm8gdHlwZUluZm8oVW5zcGVjaWZpZWRUeXBlKTsKKyAgICBBU1NF
UlQoIWJhc2VWYWwuaXNPYmplY3QoKQorICAgICAgICAgICB8fCAhKHR5cGVJbmZvID0gYXNPYmpl
Y3QoYmFzZVZhbCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpKS5pbXBsZW1lbnRzSGFzSW5zdGFu
Y2UoKSk7CisjZW5kaWYKKyAgICBMTElOVF9USFJPVyhjcmVhdGVJbnZhbGlkUGFyYW1FcnJvcihl
eGVjLCAiaW5zdGFuY2VvZiIsIGJhc2VWYWwpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2luc3RhbmNlb2YpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4o
anNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbnN0YW5jZU9mU2xvdyhleGVjLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoNCku
anNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzVHlwZVN0cmluZ0ZvclZhbHVl
KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9pc191bmRlZmluZWQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVl
IHYgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFu
KHYuaXNDZWxsKCkgPyB2LmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKS5tYXNxdWVy
YWRlc0FzVW5kZWZpbmVkKCkgOiB2LmlzVW5kZWZpbmVkKCkpKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2lzX2Jvb2xlYW4pCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElO
VF9SRVRVUk4oanNCb29sZWFuKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLmlzQm9vbGVhbigpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19udW1iZXIpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLmlzTnVtYmVyKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX3N0cmlu
ZykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oaXNK
U1N0cmluZyhMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2lzX29iamVjdCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JF
VFVSTihqc0Jvb2xlYW4oanNJc09iamVjdFR5cGUoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19mdW5jdGlvbikKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNJc0Z1bmN0aW9uVHlwZShM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2luKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihD
b21tb25TbG93UGF0aHM6Om9wSW4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVz
b2x2ZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChv
cF9yZXNvbHZlLCBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZShleGVjLCBleGVjLT5jb2RlQmxv
Y2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9yZXNvbHZlX3NraXApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElO
VF9SRVRVUk5fUFJPRklMRUQoCisgICAgICAgIG9wX3Jlc29sdmVfc2tpcCwKKyAgICAgICAgQ29t
bW9uU2xvd1BhdGhzOjpvcFJlc29sdmVTa2lwKAorICAgICAgICAgICAgZXhlYywKKyAgICAgICAg
ICAgIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCksCisgICAg
ICAgICAgICBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworc3RhdGljIEpTVmFsdWUgcmVzb2x2ZUds
b2JhbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSBjb2RlQmxvY2stPmdsb2JhbE9iamVjdCgpOworICAgIEFTU0VSVChnbG9iYWxP
YmplY3QtPmlzR2xvYmFsT2JqZWN0KCkpOworICAgIGludCBwcm9wZXJ0eSA9IHBjWzJdLnUub3Bl
cmFuZDsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IHBjWzNdLnUuc3RydWN0dXJlLmdldCgp
OworICAgIAorICAgIEFTU0VSVF9VTlVTRUQoc3RydWN0dXJlLCBzdHJ1Y3R1cmUgIT0gZ2xvYmFs
T2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgCisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2Rl
QmxvY2stPmlkZW50aWZpZXIocHJvcGVydHkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2Jh
bE9iamVjdCk7CisgICAgCisgICAgaWYgKGdsb2JhbE9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4
ZWMsIGlkZW50LCBzbG90KSkgeworICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IHNsb3QuZ2V0VmFs
dWUoZXhlYywgaWRlbnQpOworICAgICAgICBpZiAoc2xvdC5pc0NhY2hlYWJsZVZhbHVlKCkgJiYg
IWdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCktPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAg
ICAgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBnbG9iYWxPYmplY3QpIHsKKyAgICAgICAg
ICAgIHBjWzNdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICBleGVjLT5nbG9iYWxE
YXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGdsb2JhbE9iamVjdC0+c3RydWN0
dXJlKCkpOworICAgICAgICAgICAgcGNbNF0gPSBzbG90LmNhY2hlZE9mZnNldCgpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBl
eGVjLT5nbG9iYWxEYXRhKCkuZXhjZXB0aW9uID0gY3JlYXRlVW5kZWZpbmVkVmFyaWFibGVFcnJv
cihleGVjLCBpZGVudCk7CisgICAgcmV0dXJuIEpTVmFsdWUoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
TExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFsLCByZXNvbHZlR2xvYmFsKGV4
ZWMsIHBjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbF9k
eW5hbWljKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVE
KG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIHJlc29sdmVHbG9iYWwoZXhlYywgcGMpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5
bmFtaWMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQo
b3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYywgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhl
YywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9iYXNlKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRp
ZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIGlmIChwY1szXS51Lm9wZXJhbmQpIHsKKyAgICAg
ICAgSlNWYWx1ZSBiYXNlID0gSlNDOjpyZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2Nv
cGVDaGFpbigpLCB0cnVlKTsKKyAgICAgICAgaWYgKCFiYXNlKQorICAgICAgICAgICAgTExJTlRf
VEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51
c3RyaW5nKCkpKTsKKyAgICAgICAgTExJTlRfUkVUVVJOKGJhc2UpOworICAgIH0KKyAgICAKKyAg
ICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9iYXNlLCBKU0M6OnJlc29sdmVCYXNl
KGV4ZWMsIGlkZW50LCBleGVjLT5zY29wZUNoYWluKCksIGZhbHNlKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KExMSU5UX09QKDEpLmpzVmFs
dWUoKSk7CisgICAgUHJvcGVydHlTbG90IHNsb3Qob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyJiBp
ZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7Cisg
ICAgaWYgKCFvYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkpCisgICAg
ICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhl
YywgaWRlbnQudXN0cmluZygpKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmVXaXRoQmFzZShl
eGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpLCBMTElO
VF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1AoMikg
PSByZXN1bHQ7CisgICAgLy8gRklYTUU6IHRlY2huaWNhbGx5IHNob3VsZCBoYXZlIHByb2ZpbGlu
ZywgYnV0IHdlIGRvbid0IGRvIGl0IGJlY2F1c2UgdGhlIERGRyB3b24ndCB1c2UgaXQuCisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhf
dGhpcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gQ29tbW9u
U2xvd1BhdGhzOjpvcFJlc29sdmVXaXRoVGhpcyhleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRl
bnRpZmllcihwY1szXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgxKSk7CisgICAgTExJTlRfQ0hFQ0tf
RVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1AoMikgPSByZXN1bHQ7CisgICAgLy8gRklYTUU6IHRl
Y2huaWNhbGx5IHNob3VsZCBoYXZlIHByb2ZpbGluZywgYnV0IHdlIGRvbid0IGRvIGl0IGJlY2F1
c2UgdGhlIERGRyB3b24ndCB1c2UgaXQuCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfaWQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXIm
IGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgSlNW
YWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNs
b3Qgc2xvdChiYXNlVmFsdWUpOworCisgICAgSlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuZ2V0
KGV4ZWMsIGlkZW50LCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBM
TElOVF9PUCgxKSA9IHJlc3VsdDsKKworICAgIGlmIChiYXNlVmFsdWUuaXNDZWxsKCkKKyAgICAg
ICAgJiYgc2xvdC5pc0NhY2hlYWJsZSgpCisgICAgICAgICYmIHNsb3Quc2xvdEJhc2UoKSA9PSBi
YXNlVmFsdWUKKyAgICAgICAgJiYgc2xvdC5jYWNoZWRQcm9wZXJ0eVR5cGUoKSA9PSBQcm9wZXJ0
eVNsb3Q6OlZhbHVlKSB7CisgICAgICAgIAorICAgICAgICBKU0NlbGwqIGJhc2VDZWxsID0gYmFz
ZVZhbHVlLmFzQ2VsbCgpOworICAgICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGJhc2VDZWxs
LT5zdHJ1Y3R1cmUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICghc3RydWN0dXJlLT5pc1VuY2Fj
aGVhYmxlRGljdGlvbmFyeSgpCisgICAgICAgICAgICAmJiAhc3RydWN0dXJlLT50eXBlSW5mbygp
LnByb2hpYml0c1Byb3BlcnR5Q2FjaGluZygpKSB7CisgICAgICAgICAgICBwY1s0XS51LnN0cnVj
dHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgcGNbNV0udS5vcGVy
YW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgfQor
ICAgIH0KKyAgICAKKyAgICBwY1tPUENPREVfTEVOR1RIKG9wX2dldF9ieV9pZCkgLSAxXS51LnBy
b2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOworICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5n
dGgpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4
ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVu
dGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9P
UCgyKS5qc1ZhbHVlKCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKKyAgICBM
TElOVF9SRVRVUk4oYmFzZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlm
aWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAg
IAorICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAgaWYg
KHBjWzhdLnUub3BlcmFuZCkKKyAgICAgICAgYXNPYmplY3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0
KGV4ZWMtPmdsb2JhbERhdGEoKSwgaWRlbnQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90
KTsKKyAgICBlbHNlCisgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaWRlbnQsIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAg
ICAKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFi
bGUoKSkgeworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5h
c0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0
dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURp
Y3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJp
dHNQcm9wZXJ0eUNhY2hpbmcoKQorICAgICAgICAgICAgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNl
KCkpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFBy
b3BlcnR5U2xvdDo6TmV3UHJvcGVydHkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVy
ZS0+aXNEaWN0aW9uYXJ5KCkgJiYgc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPnByb3BlcnR5U3Rv
cmFnZUNhcGFjaXR5KCkgPT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSB7
CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBvZiB0
aGUgbWV0aG9kcyB3ZSBjYWxsCisgICAgICAgICAgICAgICAgICAgIC8vIGJlbG93IG1heSBHQy4K
KyAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+
KCZsbGludF9vcF9wdXRfYnlfaWQpOworCisgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZVBy
b3RvdHlwZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+aXNPYmplY3Qo
KSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2NrLT5vd25lckV4ZWN1
dGFibGUoKSwgc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpOworICAgICAgICAgICAgICAgICAgICBw
Y1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOwor
ICAgICAgICAgICAgICAgICAgICBwY1s2XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAg
ICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxl
KCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVyZUNoYWluKiBjaGFp
biA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChjaGFpbik7CisgICAgICAgICAgICAgICAgICAgIHBjWzddLnUuc3RydWN0dXJlQ2hh
aW4uc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLCBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjaGFpbik7CisgICAgICAgICAgICAgICAgICAgIAor
ICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lk
Kj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29k
ZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZCk7CisgICAgICAgICAg
ICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICBleGVjLT5n
bG9iYWxEYXRhKCksIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7Cisg
ICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNp
emVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV9pZCkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+
Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIGJhc2VPYmplY3QgPSBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKS50b09iamVjdChleGVjKTsKKyAgICBib29sIGNvdWxkRGVsZXRlID0gYmFzZU9iamVj
dC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgY29kZUJs
b2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOworICAgIGlmICghY291bGREZWxldGUgJiYgY29kZUJsb2NrLT5pc1N0cmljdE1vZGUo
KSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8g
ZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVs
ZXRlKSk7Cit9CisKK2lubGluZSBKU1ZhbHVlIGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNW
YWx1ZSBiYXNlVmFsdWUsIEpTVmFsdWUgc3Vic2NyaXB0KQoreworICAgIGlmIChMSUtFTFkoYmFz
ZVZhbHVlLmlzQ2VsbCgpICYmIHN1YnNjcmlwdC5pc1N0cmluZygpKSkgeworICAgICAgICBpZiAo
SlNWYWx1ZSByZXN1bHQgPSBiYXNlVmFsdWUuYXNDZWxsKCktPmZhc3RHZXRPd25Qcm9wZXJ0eShl
eGVjLCBhc1N0cmluZyhzdWJzY3JpcHQpLT52YWx1ZShleGVjKSkpCisgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICBpZiAoc3Vic2NyaXB0LmlzVUludDMyKCkpIHsK
KyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAo
aXNKU1N0cmluZyhiYXNlVmFsdWUpICYmIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmNhbkdldEluZGV4
KGkpKQorICAgICAgICAgICAgcmV0dXJuIGFzU3RyaW5nKGJhc2VWYWx1ZSktPmdldEluZGV4KGV4
ZWMsIGkpOworICAgICAgICAKKyAgICAgICAgaWYgKGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKSAm
JiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkKKyAgICAgICAgICAg
IHJldHVybiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAg
ICAgCisgICAgICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIGkpOworICAgIH0KKyAgICAK
KyAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYykpOworICAgIHJldHVybiBiYXNlVmFsdWUuZ2V0KGV4ZWMsIHByb3BlcnR5KTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV92YWwpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfZ2V0X2J5X3ZhbCwgZ2V0QnlW
YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMgPSBMTElOVF9PUCgy
KS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhcmd1bWVudHMpIHsKKyAgICAgICAgYXJndW1lbnRzID0g
QXJndW1lbnRzOjpjcmVhdGUoZXhlYy0+Z2xvYmFsRGF0YSgpLCBleGVjKTsKKyAgICAgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIExMSU5UX09QKDIpID0gYXJndW1lbnRzOwor
ICAgICAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sy
XS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJO
KGdldEJ5VmFsKGV4ZWMsIGFyZ3VtZW50cywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSkKK3sKKyAgICBMTElOVF9C
RUdJTigpOworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBMTElOVF9PUCgyKS5qc1Zh
bHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfcHV0X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBKU1ZhbHVlIGJh
c2VWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgc3Vic2NyaXB0
ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpOworICAgIAorICAgIGlmIChMSUtFTFkoc3Vic2NyaXB0LmlzVUludDMy
KCkpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIoKTsKKyAgICAg
ICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUpKSB7CisgICAgICAgICAgICBKU0FycmF5KiBqc0Fy
cmF5ID0gYXNBcnJheShiYXNlVmFsdWUpOworICAgICAgICAgICAgaWYgKGpzQXJyYXktPmNhblNl
dEluZGV4KGkpKQorICAgICAgICAgICAgICAgIGpzQXJyYXktPnNldEluZGV4KGdsb2JhbERhdGEs
IGksIHZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBKU0FycmF5Ojpw
dXRCeUluZGV4KGpzQXJyYXksIGV4ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgICAgIExMSU5UX0VO
RCgpOworICAgICAgICB9CisgICAgICAgIGlmIChpc0pTQnl0ZUFycmF5KGJhc2VWYWx1ZSkKKyAg
ICAgICAgICAgICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKSB7
CisgICAgICAgICAgICBKU0J5dGVBcnJheSoganNCeXRlQXJyYXkgPSBhc0J5dGVBcnJheShiYXNl
VmFsdWUpOworICAgICAgICAgICAgaWYgKHZhbHVlLmlzSW50MzIoKSkgeworICAgICAgICAgICAg
ICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5hc0ludDMyKCkpOworICAgICAgICAg
ICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHZhbHVl
LmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwg
dmFsdWUuYXNOdW1iZXIoKSk7CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYmFzZVZhbHVlLnB1dChleGVjLCBpLCB2YWx1ZSk7
CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAKKyAgICBJZGVudGlmaWVyIHByb3Bl
cnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIFB1dFByb3BlcnR5U2xvdCBzbG90KGV4ZWMtPmNv
ZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CisgICAgYmFzZVZhbHVlLnB1dChleGVjLCBwcm9w
ZXJ0eSwgdmFsdWUsIHNsb3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZGVsX2J5X3ZhbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFs
dWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIGJh
c2VPYmplY3QgPSBiYXNlVmFsdWUudG9PYmplY3QoZXhlYyk7CisgICAgCisgICAgSlNWYWx1ZSBz
dWJzY3JpcHQgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBib29sIGNvdWxk
RGVsZXRlOworICAgIAorICAgIHVpbnQzMl90IGk7CisgICAgaWYgKHN1YnNjcmlwdC5nZXRVSW50
MzIoaSkpCisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9iamVjdC0+bWV0aG9kVGFibGUoKS0+
ZGVsZXRlUHJvcGVydHlCeUluZGV4KGJhc2VPYmplY3QsIGV4ZWMsIGkpOworICAgIGVsc2Ugewor
ICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgSWRlbnRpZmllciBwcm9w
ZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICAg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIGNvdWxkRGVsZXRlID0gYmFzZU9i
amVjdC0+bWV0aG9kVGFibGUoKS0+ZGVsZXRlUHJvcGVydHkoYmFzZU9iamVjdCwgZXhlYywgcHJv
cGVydHkpOworICAgIH0KKyAgICAKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGV4ZWMtPmNvZGVC
bG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5LiIpKTsKKyAgICAKKyAgICBMTElO
VF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVsZXRlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wdXRfYnlfaW5kZXgpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9P
UF9DKDEpLmpzVmFsdWUoKS5wdXQoZXhlYywgcGNbMl0udS5vcGVyYW5kLCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wdXRfZ2V0dGVyX3NldHRlcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEFTU0VS
VChMTElOVF9PUCgxKS5qc1ZhbHVlKCkuaXNPYmplY3QoKSk7CisgICAgSlNPYmplY3QqIGJhc2VP
YmogPSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIAorICAgIEdldHRlclNl
dHRlciogYWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZShleGVjKTsKKyAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBKU1ZhbHVlIGdldHRlciA9IExMSU5UX09QKDMp
LmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHNldHRlciA9IExMSU5UX09QKDQpLmpzVmFsdWUoKTsK
KyAgICBBU1NFUlQoZ2V0dGVyLmlzT2JqZWN0KCkgfHwgZ2V0dGVyLmlzVW5kZWZpbmVkKCkpOwor
ICAgIEFTU0VSVChzZXR0ZXIuaXNPYmplY3QoKSB8fCBzZXR0ZXIuaXNVbmRlZmluZWQoKSk7Cisg
ICAgQVNTRVJUKGdldHRlci5pc09iamVjdCgpIHx8IHNldHRlci5pc09iamVjdCgpKTsKKyAgICAK
KyAgICBpZiAoIWdldHRlci5pc1VuZGVmaW5lZCgpKQorICAgICAgICBhY2Nlc3Nvci0+c2V0R2V0
dGVyKGV4ZWMtPmdsb2JhbERhdGEoKSwgYXNPYmplY3QoZ2V0dGVyKSk7CisgICAgaWYgKCFzZXR0
ZXIuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgYWNjZXNzb3ItPnNldFNldHRlcihleGVjLT5nbG9i
YWxEYXRhKCksIGFzT2JqZWN0KHNldHRlcikpOworICAgIGJhc2VPYmotPnB1dERpcmVjdEFjY2Vz
c29yKAorICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCksCisgICAgICAgIGV4ZWMtPmNvZGVCbG9j
aygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCksCisgICAgICAgIGFjY2Vzc29yLCBBY2Nl
c3Nvcik7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bXBfc2NvcGVzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgdW5zaWduZWQgY291bnQgPSBw
Y1sxXS51Lm9wZXJhbmQ7CisgICAgU2NvcGVDaGFpbk5vZGUqIHRtcCA9IGV4ZWMtPnNjb3BlQ2hh
aW4oKTsKKyAgICB3aGlsZSAoY291bnQtLSkKKyAgICAgICAgdG1wID0gdG1wLT5wb3AoKTsKKyAg
ICBleGVjLT5zZXRTY29wZUNoYWluKHRtcCk7CisgICAgcGMgKz0gcGNbMl0udS5vcGVyYW5kOwor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3BfanRydWUsIExMSU5UX09Q
X0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9qZmFsc2UpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0go
b3BfamZhbHNlLCAhTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4ZWMpKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzLCBqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1Bf
QygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElO
VF9CUkFOQ0gob3Bfam5sZXNzLCAhanNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfamdyZWF0ZXIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFO
Q0gob3BfamdyZWF0ZXIsIGpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9qbmdyZWF0ZXIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0go
b3Bfam5ncmVhdGVyLCAhanNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2psZXNzZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bf
amxlc3NlcSwganNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bmxlc3NlcSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX0JSQU5DSChvcF9qbmxl
c3NlcSwgIWpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamdy
ZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX0JSQU5DSChvcF9qZ3Jl
YXRlcmVxLCBqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9q
bmdyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX0JSQU5DSChvcF9q
bmdyZWF0ZXJlcSwgIWpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3N3aXRjaF9pbW0pCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHNjcnV0
aW5lZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIEFTU0VSVChzY3J1dGluZWUuaXNE
b3VibGUoKSk7CisgICAgZG91YmxlIHZhbHVlID0gc2NydXRpbmVlLmFzRG91YmxlKCk7CisgICAg
aW50MzJfdCBpbnRWYWx1ZSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHZhbHVlKTsKKyAgICBpbnQg
ZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAodmFsdWUgPT0gaW50VmFs
dWUpIHsKKyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsK
KyAgICAgICAgcGMgKz0gY29kZUJsb2NrLT5pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGUocGNbMV0u
dS5vcGVyYW5kKS5vZmZzZXRGb3JWYWx1ZShpbnRWYWx1ZSwgZGVmYXVsdE9mZnNldCk7CisgICAg
fSBlbHNlCisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0Y2hfc3RyaW5nKQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUo
KTsKKyAgICBpbnQgZGVmYXVsdE9mZnNldCA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpZiAoIXNj
cnV0aW5lZS5pc1N0cmluZygpKQorICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIGVs
c2UgeworICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOwor
ICAgICAgICBwYyArPSBjb2RlQmxvY2stPnN0cmluZ1N3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9w
ZXJhbmQpLm9mZnNldEZvclZhbHVlKGFzU3RyaW5nKHNjcnV0aW5lZSktPnZhbHVlKGV4ZWMpLmlt
cGwoKSwgZGVmYXVsdE9mZnNldCk7CisgICAgfQorICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEFTU0VSVChj
b2RlQmxvY2stPmNvZGVUeXBlKCkgIT0gRnVuY3Rpb25Db2RlCisgICAgICAgICAgIHx8ICFjb2Rl
QmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKQorICAgICAgICAgICB8fCBleGVjLT51bmNoZWNr
ZWRSKGNvZGVCbG9jay0+YWN0aXZhdGlvblJlZ2lzdGVyKCkpLmpzVmFsdWUoKSk7CisjaWYgTExJ
TlRfSEVMUEVSX1RSQUNJTkcKKyAgICBkYXRhTG9nKCJDcmVhdGluZyBmdW5jdGlvbiFcbiIpOwor
I2VuZGlmCisgICAgTExJTlRfUkVUVVJOKGNvZGVCbG9jay0+ZnVuY3Rpb25EZWNsKHBjWzJdLnUu
b3BlcmFuZCktPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19leHApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSogZnVuY3Rpb24gPSBjb2RlQmxvY2stPmZ1bmN0aW9uRXhwcihwY1syXS51Lm9w
ZXJhbmQpOworICAgIEpTRnVuY3Rpb24qIGZ1bmMgPSBmdW5jdGlvbi0+bWFrZShleGVjLCBleGVj
LT5zY29wZUNoYWluKCkpOworICAgIAorICAgIGlmICghZnVuY3Rpb24tPm5hbWUoKS5pc051bGwo
KSkgeworICAgICAgICBKU1N0YXRpY1Njb3BlT2JqZWN0KiBmdW5jdGlvblNjb3BlT2JqZWN0ID0g
SlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGZ1bmN0aW9uLT5uYW1lKCksIGZ1bmMs
IFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisgICAgICAgIGZ1bmMtPnNldFNjb3BlKGV4ZWMtPmds
b2JhbERhdGEoKSwgZnVuYy0+c2NvcGUoKS0+cHVzaChmdW5jdGlvblNjb3BlT2JqZWN0KSk7Cisg
ICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTihmdW5jKTsKK30KKworc3RhdGljIEhlbHBlclJl
dHVyblR5cGUgaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlv
biogcGMsIEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7Cisg
ICAgRXhlY1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICBKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworCisgICAgZXhlY0Nh
bGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUt
PnNldENvZGVCbG9jaygwKTsKKworICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAg
ICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENh
bGxEYXRhKGNhbGxlZSwgY2FsbERhdGEpOworICAgIAorICAgICAgICBBU1NFUlQoY2FsbFR5cGUg
IT0gQ2FsbFR5cGVKUyk7CisgICAgCisgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUhv
c3QpIHsKKyAgICAgICAgICAgIGdsb2JhbERhdGEtPmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1Zh
bHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICAgICAg
fQorICAgICAgICAKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgICAgICBkYXRhTG9nKCJD
YWxsIGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNjcmlwdGlvbigp
KTsKKyNlbmRpZgorCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpOwor
ICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBRnVuY3Rpb25FcnJv
cihleGVjLCBjYWxsZWUpKTsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29u
c3RydWN0KTsKKyAgICAKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7CisgICAgQ29u
c3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShjYWxsZWUsIGNvbnN0
cnVjdERhdGEpOworICAgIAorICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENvbnN0cnVjdFR5
cGVKUyk7CisgICAgCisgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZUhvc3Qp
IHsKKyAgICAgICAgZ2xvYmFsRGF0YS0+aG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRl
Y29kZShjb25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisKKyAgICAg
ICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9p
ZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgCisjaWYgTExJTlRfSEVM
UEVSX1RSQUNJTkcKKyAgICBkYXRhTG9nKCJDb25zdHJ1Y3RvciBjYWxsZWUgaXMgbm90IGEgZnVu
Y3Rpb246ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgIEFTU0VS
VChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVOb25lKTsKKyAgICBMTElOVF9DQUxMX1RI
Uk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsK
K30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0Nh
bGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFs
dWUgY2FsbGVlQXNWYWx1ZSwgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCit7
CisgICAgSlNDZWxsKiBjYWxsZWVBc0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVl
QXNWYWx1ZSk7CisgICAgaWYgKCFjYWxsZWVBc0Z1bmN0aW9uQ2VsbCkKKyAgICAgICAgcmV0dXJu
IGhhbmRsZUhvc3RDYWxsKGV4ZWNDYWxsZWUsIHBjLCBjYWxsZWVBc1ZhbHVlLCBraW5kKTsKKyAg
ICAKKyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxlZUFzRnVuY3Rpb25D
ZWxsKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGNhbGxlZS0+c2NvcGVVbmNoZWNr
ZWQoKSk7CisgICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFi
bGUoKTsKKyAgICAKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IDA7CisgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9u
KCkpCisgICAgICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtp
bmQpLmFkZHJlc3NGb3JDYWxsKCk7CisgICAgZWxzZSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0
YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4oZXhlY3V0YWJsZSk7CisgICAgICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0
YWJsZS0+Y29tcGlsZUZvcihleGVjQ2FsbGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOworICAg
ICAgICBpZiAoZXJyb3IpCisgICAgICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUt
PmNhbGxlckZyYW1lKCksIHBjLCBlcnJvcik7CisgICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlv
bkV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgICAgICBBU1NFUlQo
Y29kZUJsb2NrKTsKKyAgICAgICAgaWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRp
bmdUaGlzKCkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygp
KSkKKyAgICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJ
VENvZGVXaXRoQXJpdHlDaGVja0ZvcihraW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Y29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5h
ZGRyZXNzRm9yQ2FsbCgpOworICAgIH0KKyAgICAKKyAgICBpZiAoY2FsbExpbmtJbmZvKSB7Cisg
ICAgICAgIGlmIChjYWxsTGlua0luZm8tPmlzT25MaXN0KCkpCisgICAgICAgICAgICBjYWxsTGlu
a0luZm8tPnJlbW92ZSgpOworICAgICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZXIgPSBleGVjQ2Fs
bGVlLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQoZXhl
Y0NhbGxlci0+Z2xvYmFsRGF0YSgpLCBleGVjQ2FsbGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVj
dXRhYmxlKCksIGNhbGxlZSk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUu
c2V0KGV4ZWNDYWxsZXItPmdsb2JhbERhdGEoKSwgZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm93
bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVD
b2RlVGFyZ2V0ID0gY29kZVB0cjsKKyAgICAgICAgaWYgKGNvZGVCbG9jaykKKyAgICAgICAgICAg
IGNvZGVCbG9jay0+bGlua0luY29taW5nQ2FsbChjYWxsTGlua0luZm8pOworICAgIH0KKyAgICAK
KyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxl
QWRkcmVzcygpKTsKK30KKworaW5saW5lIEhlbHBlclJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhl
Y1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2lu
ZCkKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFt
ZS4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5l
Y2Vzc2FyeS4KKyAgICAvLyAtIElmIHBvc3NpYmxlLCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNh
Y2hlLgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8g
Y2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNW
YWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhl
Y0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+
c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVj
Q2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7
CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgCisgICAgQVNTRVJU
KHBjWzRdLnUuY2FsbExpbmtJbmZvKTsKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUs
IHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCBwY1s0XS51LmNhbGxMaW5rSW5mbyk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
cmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBy
ZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdzKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUgd2hp
bGUgcmVzcGVjdGluZyB0aGUgdmFyaWFibGUgYXJndW1lbnRzLgorICAgIC8vIC0gRmlndXJlIG91
dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gUmV0
dXJuIGEgdHVwbGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBj
YWxsIGZyYW1lLgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0Mo
MSkuanNWYWx1ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRWYXJh
cmdzKAorICAgICAgICBleGVjLCAmZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdp
c3RlckZpbGUoKSwKKyAgICAgICAgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpLCBwY1s0XS51Lm9wZXJhbmQpOworICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhD
RVBUSU9OKGV4ZWMsIHBjKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lz
dGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2Fs
bGVyRnJhbWUoZXhlYyk7CisgICAgZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3Vt
ZW50Q291bnQpLnRhZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdU
SChvcF9jYWxsX3ZhcmFyZ3MpKTsKKyAgICAKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxs
ZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9jYWxsX2V2YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVl
IGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0
YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICBKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7CisgICAgCisgICAgZXhlY0NhbGxl
ZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNbMl0udS5vcGVyYW5kKTsKKyAgICBl
eGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNr
ZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxl
ZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkpOworICAgIGV4ZWNDYWxsZWUtPnNl
dFJldHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KCZsbGludF9nZW5lcmljX3JldHVy
bl9wb2ludCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKyAgICBleGVjLT51
bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nh
c3Q8aW50MzJfdD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfZXZhbCkpOworICAgIAorICAg
IGlmICghaXNIb3N0RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwgZ2xvYmFsRnVuY0V2YWwpKQorICAg
ICAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVl
QXNWYWx1ZSk7CisgICAgCisgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0gZXZh
bChleGVjQ2FsbGVlKTsKKyAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbikKK3sKKyAgICBMTElOVF9C
RUdJTigpOworICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFp
bigpKTsKKyAgICBKU1ZhbHVlIGFjdGl2YXRpb25WYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUo
KTsKKyAgICBpZiAoIWFjdGl2YXRpb25WYWx1ZSkgeworICAgICAgICBpZiAoSlNWYWx1ZSB2ID0g
ZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVy
YW5kKSkuanNWYWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5p
c1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAgICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihl
eGVjKTsKKyAgICAgICAgfQorICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgSlNBY3Rp
dmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0aW9uKGFjdGl2YXRpb25WYWx1ZSk7CisgICAg
YWN0aXZhdGlvbi0+dGVhck9mZihleGVjLT5nbG9iYWxEYXRhKCkpOworICAgIGlmIChKU1ZhbHVl
IHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51
Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpCisgICAgICAgIGFzQXJndW1lbnRzKHYpLT5kaWRUZWFyT2Zm
QWN0aXZhdGlvbihleGVjLT5nbG9iYWxEYXRhKCksIGFjdGl2YXRpb24pOworICAgIExMSU5UX0VO
RCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2Vz
QXJndW1lbnRzKCkgJiYgIWV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkp
OworICAgIGFzQXJndW1lbnRzKGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSktPnRlYXJPZmYoZXhlYyk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdHJjYXQpCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNTdHJpbmcoZXhlYywgJkxMSU5U
X09QKDIpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3RvX3ByaW1pdGl2ZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1ByaW1pdGl2ZShleGVjKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9nZXRfcG5hbWVzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
SlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICh2LmlzVW5kZWZpbmVk
T3JOdWxsKCkpIHsKKyAgICAgICAgcGMgKz0gcGNbNV0udS5vcGVyYW5kOworICAgICAgICBMTElO
VF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMp
OworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gby0+c3RydWN0dXJlKCk7CisgICAgSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IHN0cnVjdHVyZS0+ZW51
bWVyYXRpb25DYWNoZSgpOworICAgIGlmICghanNQcm9wZXJ0eU5hbWVJdGVyYXRvciB8fCBqc1By
b3BlcnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQcm90b3R5cGVDaGFpbigpICE9IHN0cnVjdHVyZS0+
cHJvdG90eXBlQ2hhaW4oZXhlYykpCisgICAgICAgIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywgbyk7CisgICAgCisgICAgTExJTlRf
T1AoMSkgPSBKU1ZhbHVlKGpzUHJvcGVydHlOYW1lSXRlcmF0b3IpOworICAgIExMSU5UX09QKDIp
ID0gSlNWYWx1ZShvKTsKKyAgICBMTElOVF9PUCgzKSA9IFJlZ2lzdGVyOjp3aXRoSW50KDApOwor
ICAgIExMSU5UX09QKDQpID0gUmVnaXN0ZXI6OndpdGhJbnQoanNQcm9wZXJ0eU5hbWVJdGVyYXRv
ci0+c2l6ZSgpKTsKKyAgICAKKyAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wX2dldF9wbmFtZXMp
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV4dF9w
bmFtZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTT2JqZWN0KiBiYXNlID0gYXNPYmpl
Y3QoTExJTlRfT1AoMikuanNWYWx1ZSgpKTsKKyAgICBKU1N0cmluZyogcHJvcGVydHkgPSBhc1N0
cmluZyhMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIGlmIChiYXNlLT5oYXNQcm9wZXJ0eShl
eGVjLCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5LT52YWx1ZShleGVjKSkpKSB7CisgICAgICAg
IC8vIEdvIHRvIHRhcmdldC4KKyAgICAgICAgcGMgKz0gcGNbNl0udS5vcGVyYW5kOworICAgIH0g
Ly8gRWxzZSwgZG9uJ3QgY2hhbmdlIHRoZSBQQywgc28gdGhlIGludGVycHJldGVyIHdpbGwgcmVs
b29wLgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVz
aF9zY29wZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgdiA9IExMSU5UX09Q
KDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogbyA9IHYudG9PYmplY3QoZXhlYyk7CisgICAg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBvOworICAg
IGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKG8pKTsKKyAgICAK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3BvcF9zY29w
ZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+
c2NvcGVDaGFpbigpLT5wb3AoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9wdXNoX25ld19zY29wZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3Qq
IHNjb3BlID0gSlNTdGF0aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGNvZGVCbG9jay0+aWRl
bnRpZmllcihwY1syXS51Lm9wZXJhbmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIERvbnREZWxl
dGUpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKHNj
b3BlKSk7CisgICAgTExJTlRfUkVUVVJOKHNjb3BlKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Rocm93KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfVEhST1coTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhy
b3dfcmVmZXJlbmNlX2Vycm9yKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfVEhS
T1coY3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9kZWJ1ZykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGludCBkZWJ1Z0hvb2tJRCA9IHBj
WzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOworICAg
IGludCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjLT5nbG9iYWxE
YXRhKCkuaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERlYnVnSG9va0lEPihk
ZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIAorICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV93aWxsX2NhbGwpCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVu
Y2UoKSktPndpbGxFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxs
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVy
UmVmZXJlbmNlKCkpLT5kaWRFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpzVmFsdWUoKSk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5k
aWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50SGVscGVycy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEhlbHBlcnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEhlbHBl
cnNfaAorI2RlZmluZSBMTEludEhlbHBlcnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCitu
YW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOwor
CituYW1lc3BhY2UgTExJbnQgeworCit0eXBlZGVmIGludDY0X3QgSGVscGVyUmV0dXJuVHlwZTsK
KworZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0
YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7CitleHRlcm4g
IkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiwgSW5zdHJ1
Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7CisKKyNkZWZpbmUgTExJTlRfSEVM
UEVSX0RFQ0wobmFtZSkgXAorICAgIGV4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF8j
I25hbWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCisKK0xMSU5UX0hFTFBFUl9E
RUNMKHRyYWNlX3Byb2xvZ3VlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1
bmN0aW9uX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19m
b3JfY2FsbCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1
Y3QpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2UpOworTExJTlRfSEVMUEVSX0RFQ0woc3BlY2lh
bF90cmFjZSk7CitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3IpOworTExJTlRfSEVMUEVSX0RF
Q0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5
X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29z
cl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5
X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RF
Q0wobG9vcF9vc3IpOworTExJTlRfSEVMUEVSX0RFQ0wocmVwbGFjZSk7CitMTElOVF9IRUxQRVJf
REVDTChyZWdpc3Rlcl9maWxlX2NoZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxs
X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNo
ZWNrKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYWN0aXZhdGlvbik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfY3JlYXRlX3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnZlcnRf
dGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X29iamVjdCk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfbmV3X2FycmF5KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdf
YXJyYXlfYnVmZmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfcmVnZXhwKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ub3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vx
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3N0cmljdGVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2xlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xl
c3NlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ3JlYXRlcik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfaW5j
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcmVfZGVjKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9wb3N0X2luYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9zdF9kZWMpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX2pzbnVtYmVyKTsKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9uZWdhdGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2FkZCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfbXVsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zdWIpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Rpdik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
bW9kKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sc2hpZnQpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3JzaGlmdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdXJzaGlmdCk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0YW5kKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9iaXRvcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYml0eG9yKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9iaXRub3QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NoZWNrX2hh
c19pbnN0YW5jZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaW5zdGFuY2VvZik7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfdHlwZW9mKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9p
c191bmRlZmluZWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Jvb2xlYW4pOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX251bWJlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfaXNfc3RyaW5nKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3QpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX2Z1bmN0aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9pbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZSk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9y
ZXNvbHZlX2dsb2JhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9nbG9iYWxf
ZHluYW1pYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9n
bG9iYWxfZHluYW1pYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9iYXNlKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfYmFzZSk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dl
dF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2FyZ3VtZW50c19sZW5ndGgp
OworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pZCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZGVsX2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfdmFs
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRfYnlfdmFsKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlfcG5hbWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3B1dF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1dF9ieV9pbmRleCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfcHV0X2dldHRlcl9zZXR0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pt
cF9zY29wZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9qZmFsc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX2pncmVhdGVyKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXIpOworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX2psZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2pubGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qZ3JlYXRlcmVxKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qbmdyZWF0ZXJlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfc3dpdGNoX2ltbSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX2NoYXIpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N3aXRjaF9zdHJpbmcpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX25ld19mdW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfZnVuY19l
eHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbF92YXJhcmdz
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jYWxsX2V2YWwpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3RlYXJfb2ZmX2FyZ3VtZW50cyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3RyY2F0KTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2dldF9wbmFtZXMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25leHRfcG5h
bWUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX3BvcF9zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9u
ZXdfc2NvcGUpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93KTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl90aHJvd19yZWZlcmVuY2VfZXJyb3IpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2RlYnVnKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxfY2Fs
bCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJvZmlsZV9kaWRfY2FsbCk7CisKK30gfSAv
LyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5k
aWYgLy8gTExJbnRIZWxwZXJzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisjZGVmaW5lIExMSW50
T2ZmbGluZUFzbUNvbmZpZ19oCisKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0lubGluZUFzbS5oPgorI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4NikKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2
IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisjZW5kaWYKKworI2lmIENQVShB
Uk1fVEhVTUIyKQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAxCisjZWxzZQorI2RlZmluZSBP
RkZMSU5FX0FTTV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NFUlRfRElTQUJMRUQKKyNkZWZp
bmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9B
U01fQVNTRVJUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUoQklHX0VORElBTikKKyNkZWZp
bmUgT0ZGTElORV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9C
SUdfRU5ESUFOIDAKKyNlbmRpZgorCisjaWYgRU5BQkxFKExMSU5UX09TUl9UT19KSVQpCisjZGVm
aW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNN
X0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcKKyNk
ZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQorI2Vsc2UKKyNkZWZpbmUgT0ZG
TElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisKKyNpZiBMTElOVF9BTFdBWVNf
QUxMT0NBVEVfU0xPVworI2RlZmluZSBPRkZMSU5FX0FTTV9BTFdBWVNfQUxMT0NBVEVfU0xPVyAx
CisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BTFdBWVNfQUxMT0NBVEVfU0xPVyAwCisjZW5k
aWYKKworI2lmIENQVShBUk1fVEhVTUIyKQorI2RlZmluZSBPRkZMSU5FX0FTTV9HTE9CQUxfTEFC
RUwobGFiZWwpICAgICAgICAgIFwKKyAgICAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsYWJlbCkg
IlxuIiAgICAgICAgICBcCisgICAgSElERV9TWU1CT0wobmFtZSkgIlxuIiAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICIudGh1bWJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGxhYmVsKSAiXG4iICBc
CisgICAgU1lNQk9MX1NUUklORyhsYWJlbCkgIjpcbiIKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVf
QVNNX0dMT0JBTF9MQUJFTChsYWJlbCkgICAgICAgICBcCisgICAgIi5nbG9ibCAiIFNZTUJPTF9T
VFJJTkcobGFiZWwpICJcbiIgICAgICAgICBcCisgICAgSElERV9TWU1CT0wobmFtZSkgIlxuIiAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgU1lNQk9MX1NUUklORyhsYWJlbCkgIjpcbiIKKyNl
bmRpZgorCisjZW5kaWYgLy8gTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0
c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2luY2x1
ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVFN0dWJz
LmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNUeXBl
SW5mby5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKdW1wVGFi
bGUuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRlICJNYXJr
ZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgorI2luY2x1ZGUgIlNjb3BlQ2hh
aW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFpbi5o
IgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0lt
cGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgT0ZGTElORV9BU01fT0ZGU0VUT0Yo
Y2xhenosIGZpZWxkKSBPQkpFQ1RfT0ZGU0VUT0YoY2xhenosIGZpZWxkKQorCitjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCog
ZHVtbXkoKTsKK307CisKK2NvbnN0IHVuc2lnbmVkKiBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1
bW15KCkKK3sKKy8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtL2dlbmVy
YXRlX29mZnNldHNfZXh0cmFjdG9yLnJiLCBhbmQgY29udGFpbnMgY29kZQorLy8gdG8gY3JlYXRl
IGEgdGFibGUgb2Ygb2Zmc2V0cywgc2l6ZXMsIGFuZCBhIGhlYWRlciBpZGVudGlmeWluZyB3aGF0
IGNvbWJpbmF0aW9uIG9mCisvLyBQbGF0Zm9ybS5oIG1hY3JvcyB3ZSBoYXZlIHNldC4gV2UgaW5j
bHVkZSBpdCBpbnNpZGUgb2YgYSBtZXRob2Qgb24gTExJbnRPZmZzZXRzRXh0cmFjdG9yCisvLyBi
ZWNhdXNlIHRoZSBmaWVsZHMgd2hvc2Ugb2Zmc2V0cyB3ZSdyZSBleHRyYWN0aW5nIGFyZSBtb3N0
bHkgcHJpdmF0ZS4gU28gd2UgbWFrZSB0aGVpcgorLy8gY2xhc3NlcyBmcmllbmRzIHdpdGggTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLCBhbmQgaW5jbHVkZSB0aGUgaGVhZGVyIGhlcmUsIHRvIGdldCB0
aGUgQysrCisvLyBjb21waWxlciB0byBraW5kbHkgc3RlcCBhc2lkZSBhbmQgeWllbGQgdG8gb3Vy
IGJlc3QgaW50ZW50aW9ucy4KKyNpbmNsdWRlICJMTEludERlc2lyZWRPZmZzZXRzLmgiCisgICAg
cmV0dXJuIGV4dHJhY3RvclRhYmxlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworaW50IG1h
aW4oaW50LCBjaGFyKiopCit7CisgICAgLy8gT3V0IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0aW9u
LCBtYWtlIHN1cmUgdGhhdCBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkgaXMgbGl2ZSwK
KyAgICAvLyBhbmQgdGhlIGV4dHJhY3RvclRhYmxlIGlzIGxpdmUsIHRvby4KKyAgICBwcmludGYo
IiVwXG4iLCBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSk7CisgICAgcmV0dXJu
IDA7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5j
cHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVu
a3MuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJMTEludFRodW5rcy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSlNJbnRl
cmZhY2VKSVQuaCIKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJ
bnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworc3Rh
dGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhKU0dsb2Jh
bERhdGEqIGdsb2JhbERhdGEsIHZvaWQgKCp0YXJnZXQpKCkpCit7CisgICAgSlNJbnRlcmZhY2VK
SVQgaml0OworICAgIAorICAgIC8vIEZJWE1FOiB0aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdh
eSB0byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20gbm90IHN1cmUgSSBjYXJlLgorICAgIGppdC5tb3Zl
KEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0
KSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6
OnJlZ1QwKTsKKyAgICAKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAm
aml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNv
ZGUoKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1
bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5l
cmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9w
cm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVj
dEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJl
dHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9m
b3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0
aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERh
dGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1w
VG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7
Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVt
cFRvKGdsb2JhbERhdGEsIGxsaW50X2V2YWxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBs
bGludF9wcm9ncmFtX3Byb2xvZ3VlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50
CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRU
aHVua3NfaAorI2RlZmluZSBMTEludFRodW5rc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0u
aD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJl
Zi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRhOworCituYW1lc3Bh
Y2UgTExJbnQgeworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlU
aHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5j
dGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNy
b0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9y
KEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3Ry
dWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSop
OworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKKworI2VuZGlmIC8vIExMSW50VGh1bmtzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMjM4MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKworCisjIENyYXNoIGNvdXJzZSBvbiB0aGUgbGFuZ3VhZ2UgdGhhdCB0
aGlzIGlzIHdyaXR0ZW4gaW4gKHdoaWNoIEkganVzdCBjYWxsCisjICJhc3NlbWJseSIgZXZlbiB0
aG91Z2ggaXQncyBtb3JlIHRoYW4gdGhhdCk6CisjCisjIC0gTW9zdGx5IGdhcy1zdHlsZSBvcGVy
YW5kIG9yZGVyaW5nLiBUaGUgbGFzdCBvcGVyYW5kIHRlbmRzIHRvIGJlIHRoZQorIyAgIGRlc3Rp
bmF0aW9uLiBTbyAiYSA6PSBiIiBpcyB3cml0dGVuIGFzICJtb3YgYiwgYSIuIEJ1dCB1bmxpa2Ug
Z2FzLAorIyAgIGNvbXBhcmlzb25zIGFyZSBpbi1vcmRlciwgc28gImlmIChhIDwgYikiIGlzIHdy
aXR0ZW4gYXMKKyMgICAiYmlsdCBhLCBiLCAuLi4iLgorIworIyAtICJiIiA9IGJ5dGUsICJoIiA9
IDE2LWJpdCB3b3JkLCAiaSIgPSAzMi1iaXQgd29yZCwgInAiID0gcG9pbnRlci4KKyMgICBDdXJy
ZW50bHkgdGhpcyBpcyBqdXN0IDMyLWJpdCBzbyAiaSIgYW5kICJwIiBhcmUgaW50ZXJjaGFuZ2Vh
YmxlCisjICAgZXhjZXB0IHdoZW4gYW4gb3Agc3VwcG9ydHMgb25lIGJ1dCBub3QgdGhlIG90aGVy
LgorIworIyAtIEluIGdlbmVyYWwsIHZhbGlkIG9wZXJhbmRzIGZvciBtYWNybyBpbnZvY2F0aW9u
cyBhbmQgaW5zdHJ1Y3Rpb25zIGFyZQorIyAgIHJlZ2lzdGVycyAoZWcgInQwIiksIGFkZHJlc3Nl
cyAoZWcgIjRbdDBdIiksIGJhc2UtaW5kZXggYWRkcmVzc2VzCisjICAgKGVnICI3W3QwLCB0MSwg
Ml0iKSwgYWJzb2x1dGUgYWRkcmVzc2VzIChlZyAiMHhhMDAwMDAwMFtdIiksIG9yIGxhYmVscwor
IyAgIChlZyAiX2ZvbyIgb3IgIi5mb28iKS4gTWFjcm8gaW52b2NhdGlvbnMgY2FuIGFsc28gdGFr
ZSBhbm9ueW1vdXMKKyMgICBtYWNyb3MgYXMgb3BlcmFuZHMuIEluc3RydWN0aW9ucyBjYW5ub3Qg
dGFrZSBhbm9ueW1vdXMgbWFjcm9zLgorIworIyAtIExhYmVscyBtdXN0IGhhdmUgbmFtZXMgdGhh
dCBiZWdpbiB3aXRoIGVpdGhlciAiXyIgb3IgIi4iLiAgQSAiLiIgbGFiZWwKKyMgICBpcyBsb2Nh
bCBhbmQgZ2V0cyByZW5hbWVkIGJlZm9yZSBjb2RlIGdlbiB0byBtaW5pbWl6ZSBuYW1lc3BhY2UK
KyMgICBwb2xsdXRpb24uIEEgIl8iIGxhYmVsIGlzIGFuIGV4dGVybiBzeW1ib2wgKGkuZS4gIi5n
bG9ibCIpLiBUaGUgIl8iCisjICAgbWF5IG9yIG1heSBub3QgYmUgcmVtb3ZlZCBkdXJpbmcgY29k
ZSBnZW4gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGFzbQorIyAgIGNvbnZlbnRpb25zIGZvciBD
IG5hbWUgbWFuZ2xpbmcgb24gdGhlIHRhcmdldCBwbGF0Zm9ybSBtYW5kYXRlIGEgIl8iCisjICAg
cHJlZml4LgorIworIyAtIEEgIm1hY3JvIiBpcyBhIGxhbWJkYSBleHByZXNzaW9uLCB3aGljaCBt
YXkgYmUgZWl0aGVyIGFub255bW91cyBvcgorIyAgIG5hbWVkLiBCdXQgdGhpcyBoYXMgY2F2ZWF0
cy4gIm1hY3JvIiBjYW4gdGFrZSB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLAorIyAgIHdoaWNoIG1h
eSBiZSBtYWNyb3Mgb3IgYW55IHZhbGlkIG9wZXJhbmRzLCBidXQgaXQgY2FuIG9ubHkgcmV0dXJu
CisjICAgY29kZS4gQnV0IHlvdSBjYW4gZG8gVHVyaW5nLWNvbXBsZXRlIHRoaW5ncyB2aWEgY29u
dGludWF0aW9uIHBhc3NpbmcKKyMgICBzdHlsZTogIm1hY3JvIGZvbyAoYSwgYikgYihhKSBlbmQg
Zm9vKGZvbywgZm9vKSIuIEFjdHVhbGx5LCBkb24ndCBkbworIyAgIHRoYXQsIHNpbmNlIHlvdSds
bCBqdXN0IGNyYXNoIHRoZSBhc3NlbWJsZXIuCisjCisjIC0gQW4gImlmIiBpcyBhIGNvbmRpdGlv
bmFsIG9uIHNldHRpbmdzLiBBbnkgaWRlbnRpZmllciBzdXBwbGllZCBpbiB0aGUKKyMgICBwcmVk
aWNhdGUgb2YgYW4gImlmIiBpcyBhc3N1bWVkIHRvIGJlIGEgI2RlZmluZSB0aGF0IGlzIGF2YWls
YWJsZQorIyAgIGR1cmluZyBjb2RlIGdlbi4gU28geW91IGNhbid0IHVzZSAiaWYiIGZvciBjb21w
dXRhdGlvbiBpbiBhIG1hY3JvLCBidXQKKyMgICB5b3UgY2FuIHVzZSBpdCB0byBzZWxlY3QgZGlm
ZmVyZW50IHBpZWNlcyBvZiBjb2RlIGZvciBkaWZmZXJlbnQKKyMgICBwbGF0Zm9ybXMuCisjCisj
IC0gQXJndW1lbnRzIHRvIG1hY3JvcyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIHJhdGhlciB0aGFu
IGR5bmFtaWMgc2NvcGluZy4KKyMgICBDb25zdCdzIGFsc28gZm9sbG93IGxleGljYWwgc2NvcGlu
ZyBhbmQgbWF5IG92ZXJyaWRlIChoaWRlKSBhcmd1bWVudHMKKyMgICBvciBvdGhlciBjb25zdHMu
IEFsbCB2YXJpYWJsZXMgKGFyZ3VtZW50cyBhbmQgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMg
ICB0byBvcGVyYW5kcy4gQWRkaXRpb25hbGx5LCBhcmd1bWVudHMgKGJ1dCBub3QgY29uc3RhbnRz
KSBjYW4gYmUgYm91bmQKKyMgICB0byBtYWNyb3MuCisKKworIyBUaGVzZSBkZWNsYXJhdGlvbnMg
bXVzdCBtYXRjaCBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaC4KK2NvbnN0IENhbGxGcmFtZUhl
YWRlclNpemUgPSA0OAorY29uc3QgQXJndW1lbnRDb3VudCA9IC00OAorY29uc3QgQ2FsbGVyRnJh
bWUgPSAtNDAKK2NvbnN0IENhbGxlZSA9IC0zMgorY29uc3QgU2NvcGVDaGFpbiA9IC0yNAorY29u
c3QgUmV0dXJuUEMgPSAtMTYKK2NvbnN0IENvZGVCbG9jayA9IC04CisKK2NvbnN0IFRoaXNBcmd1
bWVudE9mZnNldCA9IC1DYWxsRnJhbWVIZWFkZXJTaXplIC0gOAorCisjIERlY2xhcmUgc29tZSBh
bGlhc2VzIGZvciB0aGUgcmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAorCisj
IE9mZnNldHMgbmVlZGVkIGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRpb24u
CitpZiBCSUdfRU5ESUFOCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBheWxv
YWRPZmZzZXQgPSA0CitlbHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0IFBh
eWxvYWRPZmZzZXQgPSAwCitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMu
Citjb25zdCBJbnQzMlRhZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51bGxU
YWcgPSAtMworY29uc3QgVW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQorY29u
c3QgRW1wdHlWYWx1ZVRhZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29uc3Qg
TG93ZXN0VGFnID0gRGVsZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25zdCBT
dHJpbmdUeXBlID0gNQorY29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFncyBjb25z
dGFudHMuCitjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVtZW50
c0hhc0luc3RhbmNlID0gMgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDgK
KworIyBIZWFwIGFsbG9jYXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNpemVD
bGFzc0luZGV4ID0gMworCisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3QgRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNvbnN0
YW50cy4KK2NvbnN0IEdsb2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0IEZ1
bmN0aW9uQ29kZSA9IDIKKworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBv
ZiB0aGUgYXJndW1lbnQgY291bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3Vu
dCArIFRhZ09mZnNldAorCisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25zdCBW
ZWN0b3JTaXplT2Zmc2V0ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisjIFN0
cmluZyBmbGFncy4KK2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxpdGll
cworbWFjcm8gY3Jhc2goKQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3ZlIDAs
IHQwCisgICAgY2FsbCB0MAorZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAgaWYg
QVNTRVJUX0VOQUJMRUQKKyAgICAgICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAgY3Jhc2goKQor
ICAgIC5vazoKKyAgICBlbmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRl
ckNhbGwoZGVzdGluYXRpb25SZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGxy
LCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBvcCBkZXN0aW5h
dGlvblJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21h
Y3JvIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQorICAg
IGlmIEFSTXY3CisgICAgICAgIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAgZWxzaWYgWDg2
CisgICAgICAgIHB1c2ggc291cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisg
ICAgZW5kCitlbmQKKworbWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRwIGFkdmFuY2Ug
KiA0LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRoT2Zm
c2V0KHBjT2Zmc2V0KQorICAgIGxzaGlmdGkgMiwgcGNPZmZzZXQKKyAgICBhZGRwIHBjT2Zmc2V0
LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZzZXQp
CisgICAgbG9hZGkgcGNPZmZzZXQsIHQwCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQw
KQorZW5kCisKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBBcmd1bWVudENv
dW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBjQ2Fs
bDIoZnVuY3Rpb24sIGFyZzEsIGFyZzIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcx
LCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2Ug
YXJnMSwgMAorICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisg
ICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5kCisKKyMgVGhpcyBiYXJlbHkgd29ya3MuIGFy
ZzMgYW5kIGFyZzQgc2hvdWxkIHByb2JhYmx5IGJlIGltbWVkaWF0ZXMuCittYWNybyBjQ2FsbDQo
ZnVuY3Rpb24sIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpCisgICAgaWYgQVJNdjcKKyAgICAgICAg
bW92ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgICAgIG1vdmUgYXJnMywg
dDIKKyAgICAgICAgbW92ZSBhcmc0LCB0MworICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFy
ZzEsIDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisgICAgICAgIHBva2UgYXJnMywgMgorICAgICAg
ICBwb2tlIGFyZzQsIDMKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2Fs
bCBmdW5jdGlvbgorZW5kCisKK21hY3JvIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGNDYWxsMiho
ZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAor
CisjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVyYW5k
IGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uIGZyb21XaGVyZQorIyBzaG91bGQgYmUgYW4gaW1t
ZWRpYXRlIGludGVnZXIgLSBhbnkgaW50ZWdlciB5b3UgbGlrZTsgdXNlIGl0IHRvIGlkZW50aWZ5
IHRoZSBwbGFjZSB5b3UncmUKKyMgZGVidWdnaW5nIGZyb20uIG9wZXJhbmQgc2hvdWxkIGxpa2V3
aXNlIGJlIGFuIGltbWVkaWF0ZSwgYW5kIHNob3VsZCBpZGVudGlmeSB0aGUgb3BlcmFuZAorIyBp
biB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtIHlvdSdkIGxpa2UgdG8gcHJpbnQgb3V0LgorbWFjcm8g
dHJhY2VPcGVyYW5kKGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNl
X29wZXJhbmQsIGNmciwgUEMsIGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQwor
ICAgIG1vdmUgdDEsIGNmcgorZW5kCisKKyMgRGVidWdnaW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBs
aWtlIHRvIHByaW50IHRoZSB2YWx1ZSBvZiBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbgor
IyBzdHJlYW0uIFNhbWUgYXMgdHJhY2VPcGVyYW5kKCksIGJ1dCBhc3N1bWVzIHRoYXQgdGhlIG9w
ZXJhbmQgaXMgYSByZWdpc3RlciwgYW5kIHByaW50cyBpdHMKKyMgdmFsdWUuCittYWNybyB0cmFj
ZVZhbHVlKGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX3ZhbHVl
LCBjZnIsIFBDLCBmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3Zl
IHQxLCBjZnIKK2VuZAorCittYWNybyB0cmFjZUV4ZWN1dGlvbigpCisgICAgaWYgRVhFQ1VUSU9O
X1RSQUNJTkcKKyAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfdHJhY2UpCisgICAgZW5kCitlbmQK
KworIyBDYWxsIGEgaGVscGVyIGZvciBjYWxsIG9wY29kZXMuCittYWNybyBjYWxsQ2FsbEhlbHBl
cihhZHZhbmNlLCBoZWxwZXIsIGFjdGlvbikKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQywgdDAK
KyAgICBzdG9yZXAgdDAsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIGNDYWxs
MihoZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYWN0aW9uKHQwKQorZW5k
CisKK21hY3JvIHNsb3dQYXRoRm9yQ2FsbChhZHZhbmNlLCBoZWxwZXIpCisgICAgY2FsbENhbGxI
ZWxwZXIoCisgICAgICAgIGFkdmFuY2UsCisgICAgICAgIGhlbHBlciwKKyAgICAgICAgbWFjcm8g
KGNhbGxlZSkKKyAgICAgICAgICAgIGNhbGwgY2FsbGVlCisgICAgICAgICAgICBkaXNwYXRjaEFm
dGVyQ2FsbCgpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklUKGlu
Y3JlbWVudCwgYWN0aW9uKQorICAgIGlmIEpJVF9FTkFCTEVECisgICAgICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCB0MAorICAgICAgICBiYWRkaXMgaW5jcmVtZW50LCBDb2RlQmxvY2s6Om1fbGxp
bnRFeGVjdXRlQ291bnRlclt0MF0sIC5jb250aW51ZQorICAgICAgICBhY3Rpb24oKQorICAgIC5j
b250aW51ZToKKyAgICBlbmQKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgp
CisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMSwKKyAgICAgICAgbWFjcm8gKCkKKyAg
ICAgICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAg
ICAgICAgICBjQ2FsbDIoX2xsaW50X2xvb3Bfb3NyLCBjZnIsIFBDKQorICAgICAgICAgICAgbW92
ZSB0MSwgY2ZyCisgICAgICAgICAgICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAgICAgICAgam1w
IHQwCisgICAgICAgIC5yZWNvdmVyOgorICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudCAr
IFRhZ09mZnNldFtjZnJdLCBQQworICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0
Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxMCwK
KyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlcGxhY2Up
CisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBhc3NlcnROb3RDb25zdGFudChpbmRleCkKKyAg
ICBhc3NlcnQobWFjcm8gKG9rKSBiaWx0IGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCwgb2sgZW5kKQorZW5kCisKKyMgSW5kZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZm
ZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QKKyMgY2hhbmdlZC4KK21hY3JvIGxvYWRDb25z
dGFudE9yVmFyaWFibGUoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZp
cnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRb
Y2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwg
OF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVy
cyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMg
YSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJz
dENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVx
dWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxv
YWRwIFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRwIFBheWxvYWRP
ZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4
IGFuZCBwYXlsb2FkIG1heSBiZSB0aGUgc2FtZSByZWdpc3Rlci4gSW5kZXggbWF5IGJlIGNsb2Ji
ZXJlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxv
YWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0
YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29u
c3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhZworICAgIGxvYWRwIENvZGVCbG9j
azo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFt0YWddLCB0YWcKKyAg
ICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEg
dmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8
IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkg
PDwgMy4KKyAgICBsc2hpZnRpIDMsIGluZGV4CisgICAgYWRkcCBpbmRleCwgdGFnCisgICAgbG9h
ZHAgUGF5bG9hZE9mZnNldFt0YWddLCBwYXlsb2FkCisgICAgbG9hZHAgVGFnT2Zmc2V0W3RhZ10s
IHRhZworLmRvbmU6CitlbmQKKworbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRU
YWdDdXN0b20oaW5kZXgsIHRhZ0NoZWNrLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIHRhZ0NoZWNrKFRhZ09mZnNl
dFtjZnIsIGluZGV4LCA4XSkKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhd
LCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMg
KyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEg
Yml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVh
bCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICB0YWdD
aGVjayhUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdKQorICAgIGxvYWRwIFBheWxvYWRPZmZz
ZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4IGFu
ZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90IG11dGF0
ZWQuIFVzZQorIyB0aGlzIGlmIHlvdSBrbm93IHdoYXQgdGhlIHRhZyBvZiB0aGUgdmFyaWFibGUg
c2hvdWxkIGJlLiBEb2luZyB0aGUgdGFnCisjIHRlc3QgYXMgcGFydCBvZiBsb2FkaW5nIHRoZSB2
YXJpYWJsZSByZWR1Y2VzIHJlZ2lzdGVyIHVzZSwgYnV0IG1heSBub3QKKyMgYmUgZmFzdGVyIHRo
YW4gZG9pbmcgbG9hZENvbnN0YW50T3JWYXJpYWJsZSBmb2xsb3dlZCBieSBhIGJyYW5jaCBvbiB0
aGUKKyMgdGFnLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4
cGVjdGVkVGFnLCBwYXlsb2FkLCBzbG93KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkVGFnQ3VzdG9tKAorICAgICAgICBpbmRleCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykg
YmluZXEgYWN0dWFsVGFnLCBleHBlY3RlZFRhZywgc2xvdyBlbmQsCisgICAgICAgIHBheWxvYWQp
CitlbmQKKworbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQoaW5k
ZXgsIHBheWxvYWQpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20o
CisgICAgICAgIGluZGV4LAorICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBlbmQsCisgICAgICAg
IHBheWxvYWQpCitlbmQKKworbWFjcm8gd3JpdGVCYXJyaWVyKHRhZywgcGF5bG9hZCkKKyAgICAj
IE5vdGhpbmcgdG8gZG8sIHNpbmNlIHdlIGRvbid0IGhhdmUgYSBnZW5lcmF0aW9uYWwgb3IgaW5j
cmVtZW50YWwgY29sbGVjdG9yLgorZW5kCisKK21hY3JvIHZhbHVlUHJvZmlsZSh0YWcsIHBheWxv
YWQsIHByb2ZpbGUpCisgICAgc3RvcmVpIHRhZywgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBU
YWdPZmZzZXRbcHJvZmlsZV0KKyAgICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1
Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3Byb2ZpbGVdCitlbmQKKworCisjIEluZGljYXRlIHRoZSBi
ZWdpbm5pbmcgb2YgTExJbnQuCitfbGxpbnRfYmVnaW46CisgICAgY3Jhc2goKQorCisKKyMgRW50
cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIKKworbWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29k
ZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJn
ZXRSZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdp
c3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2Nv
ZGVCbG9ja0ZvckNhbGxbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21h
Y3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQor
ICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rp
b246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9h
ZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRSZWdp
c3Rlcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tH
ZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhcmdldFJl
Z2lzdGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0
ZXIpCisgICAgc3RvcmVwIHNvdXJjZVJlZ2lzdGVyLCBDb2RlQmxvY2tbY2ZyXQorZW5kCisKK21h
Y3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgICMgTm90
aGluZyB0byBkbyEKK2VuZAorCisjIERvIHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8gZXhl
Y3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENvZGVCbG9jayoKKyMgaW4gdDEu
IE1heSBhbHNvIHRyaWdnZXIgcHJvbG9ndWUgZW50cnkgT1NSLgorbWFjcm8gcHJvbG9ndWUoY29k
ZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zckhlbHBlciwgdHJhY2VIZWxwZXIpCisg
ICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIAorICAgICMgU2V0IHVw
IHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgorICAgIHN0b3JlcCB0
MiwgUmV0dXJuUENbY2ZyXQorICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAgICAgIGNhbGxI
ZWxwZXIodHJhY2VIZWxwZXIpCisgICAgZW5kCisgICAgY29kZUJsb2NrR2V0dGVyKHQxKQorICAg
IGlmIEpJVF9FTkFCTEVECisgICAgICAgIGJhZGRpcyA1LCBDb2RlQmxvY2s6Om1fbGxpbnRFeGVj
dXRlQ291bnRlclt0MV0sIC5jb250aW51ZQorICAgICAgICBjQ2FsbDIob3NySGVscGVyLCBjZnIs
IFBDKQorICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgYnRweiB0MCwgLnJlY292ZXIKKyAg
ICAgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICAgICAgcmVzdG9yZVJldHVybkFkZHJl
c3NCZWZvcmVSZXR1cm4odDIpCisgICAgICAgIGptcCB0MAorICAgIC5yZWNvdmVyOgorICAgICAg
ICBjb2RlQmxvY2tHZXR0ZXIodDEpCisgICAgLmNvbnRpbnVlOgorICAgIGVuZAorICAgIGNvZGVC
bG9ja1NldHRlcih0MSkKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgUEMuCisgICAgbG9hZHAgQ29k
ZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpJbnN0
cnVjdGlvbnM6Om1faW5zdHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMKK2Vu
ZAorCisjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQgcHJv
bG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgorIyBNdXN0IGNhbGwgZGlzcGF0Y2goMCkgYWZ0ZXIgY2Fs
bGluZyB0aGlzLgorbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbihwcm9maWxlQXJnU2tpcCkK
KyAgICAjIFByb2ZpbGUgdGhlIGFyZ3VtZW50cy4gVW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBubyBj
aG9pY2UgYnV0IHRvIGRvIHRoaXMuIFRoaXMKKyAgICAjIGNvZGUgaXMgcHJldHR5IGhvcnJlbmRv
dXMgYmVjYXVzZSBvZiB0aGUgZGlmZmVyZW5jZSBpbiBvcmRlcmluZyBiZXR3ZWVuCisgICAgIyBh
cmd1bWVudHMgYW5kIHZhbHVlIHByb2ZpbGVzLCB0aGUgZGVzaXJlIHRvIGhhdmUgYSBzaW1wbGUg
bG9vcC1kb3duLXRvLXplcm8KKyAgICAjIGxvb3AsIGFuZCB0aGUgZGVzaXJlIHRvIHVzZSBvbmx5
IHRocmVlIHJlZ2lzdGVycyBzbyBhcyB0byBwcmVzZXJ2ZSB0aGUgUEMgYW5kCisgICAgIyB0aGUg
Y29kZSBibG9jay4gSXQgaXMgbGlrZWx5IHRoYXQgdGhpcyBjb2RlIHNob3VsZCBiZSByZXdyaXR0
ZW4gaW4gYSBtb3JlCisgICAgIyBvcHRpbWFsIHdheSBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGhh
dmUgbW9yZSB0aGFuIGZpdmUgcmVnaXN0ZXJzIGF2YWlsYWJsZQorICAgICMgZm9yIGFyYml0cmFy
eSB1c2UgaW4gdGhlIGludGVycHJldGVyLgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1QYXJh
bWV0ZXJzW3QxXSwgdDAKKyAgICBhZGRpIC1wcm9maWxlQXJnU2tpcCwgdDAgIyBVc2UgYWRkaSBi
ZWNhdXNlIHRoYXQncyB3aGF0IGhhcyB0aGUgcGVlcGhvbGUKKyAgICBhc3NlcnQobWFjcm8gKG9r
KSBiaWd0ZXEgdDAsIDAsIG9rIGVuZCkKKyAgICBidGl6IHQwLCAuYXJndW1lbnRQcm9maWxlRG9u
ZQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMgKyBWZWN0b3JC
dWZmZXJPZmZzZXRbdDFdLCB0MworICAgIG11bGkgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDAsIHQy
ICMgQWFhYWFoaGhoISBOZWVkIHN0cmVuZ3RoIHJlZHVjdGlvbiEKKyAgICBuZWdpIHQwCisgICAg
bHNoaWZ0aSAzLCB0MAorICAgIGFkZHAgdDIsIHQzCisuYXJndW1lbnRQcm9maWxlTG9vcDoKKyAg
ICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXQgKyA4IC0gcHJvZmlsZUFyZ1Nr
aXAgKiA4W2NmciwgdDBdLCB0MgorICAgIHN1YnAgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDMKKyAg
ICBzdG9yZWkgdDIsIHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVl
UHJvZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIFRoaXNBcmd1bWVu
dE9mZnNldCArIFBheWxvYWRPZmZzZXQgKyA4IC0gcHJvZmlsZUFyZ1NraXAgKiA4W2NmciwgdDBd
LCB0MgorICAgIHN0b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBzaXplb2YgVmFsdWVQcm9maWxl
ICsgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGJhZGRp
bnogOCwgdDAsIC5hcmd1bWVudFByb2ZpbGVMb29wCisuYXJndW1lbnRQcm9maWxlRG9uZToKKyAg
ICAKKyAgICAjIENoZWNrIHN0YWNrIGhlaWdodC4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVt
Q2FsbGVlUmVnaXN0ZXJzW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0
YVt0MV0sIHQyCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjppbnRlcnByZXRlclt0Ml0sIHQyICAg
IyBGSVhNRTogQ2FuIGdldCB0byB0aGUgUmVnaXN0ZXJGaWxlIGZyb20gdGhlIEpJVFN0YWNrRnJh
bWUKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MCwgY2ZyLCB0MAorICAgIGJwYWVxIElu
dGVycHJldGVyOjptX3JlZ2lzdGVyRmlsZSArIFJlZ2lzdGVyRmlsZTo6bV9lbmRbdDJdLCB0MCwg
LnN0YWNrSGVpZ2h0T0sKKworICAgICMgU3RhY2sgaGVpZ2h0IGNoZWNrIGZhaWxlZCAtIG5lZWQg
dG8gY2FsbCBhIGhlbHBlci4KKyAgICBjYWxsSGVscGVyKF9sbGludF9yZWdpc3Rlcl9maWxlX2No
ZWNrKQorLnN0YWNrSGVpZ2h0T0s6CitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlz
IGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KK21hY3JvIGZ1
bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIGhlbHBlcikKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGJpYWVxIHQwLCBDb2RlQmxvY2s6Om1f
bnVtUGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJlbAorICAgIGNDYWxsMihoZWxwZXIsIGNmciwgUEMp
ICAgIyBUaGlzIGhlbHBlciBoYXMgYSBzaW1wbGUgcHJvdG9jb2w6IHQwID0gMCA9PiBubyBlcnJv
ciwgdDAgIT0gMCA9PiBlcnJvcgorICAgIG1vdmUgdDEsIGNmcgorICAgIGJ0aXogdDAsIC5jb250
aW51ZQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxv
YWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0ds
b2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorLmNvbnRpbnVlOgorICAgICMg
UmVsb2FkIENvZGVCbG9jayBhbmQgUEMsIHNpbmNlIHRoZSBoZWxwZXIgY2xvYmJlcmVkIGl0Lgor
ICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0
cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2lu
c3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCisgICAgam1wIGRvbmVMYWJl
bAorZW5kCisKK19sbGludF9wcm9ncmFtX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0
aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2Vu
dHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xs
aW50X2V2YWxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0
ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRf
dHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfZnVuY3Rpb25fZm9y
X2NhbGxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0
dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9m
b3JfY2FsbCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQorLmZ1bmN0
aW9uRm9yQ2FsbEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKKyAgICBkaXNw
YXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToK
KyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rp
b25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCisuZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCisgICAg
ZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNr
OgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25D
b2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlD
aGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCisgICAgZnVuY3Rpb25Bcml0
eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X2hlbHBlcl9jYWxsX2FyaXR5Q2hl
Y2spCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2s6CisgICAg
cHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKKyAgICBmdW5j
dGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9sbGludF9oZWxwZXJf
Y29uc3RydWN0X2FyaXR5Q2hlY2spCisKKyMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25zCisK
K19sbGludF9vcF9lbnRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHQyCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVZhcnNbdDJdLCB0MgorICAg
IGJ0aXogdDIsIC5vcEVudGVyRG9uZQorICAgIG1vdmUgVW5kZWZpbmVkVGFnLCB0MAorICAgIG1v
dmUgMCwgdDEKKy5vcEVudGVyTG9vcDoKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIHQwLCBU
YWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MiwgOF0KKyAgICBidGlueiB0MiwgLm9wRW50ZXJMb29wCisub3BFbnRlckRvbmU6CisgICAgZGlz
cGF0Y2goMSkKKworCitfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pCisub3BDcmVhdGVBY3RpdmF0aW9u
RG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbml0X2xhenlfcmVnOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgRW1wdHlW
YWx1ZVRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jcmVhdGVfYXJn
dW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFyZ3Vt
ZW50c0RvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FyZ3VtZW50cykK
Ky5vcENyZWF0ZUFyZ3VtZW50c0RvbmU6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBhbGxv
Y2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kZXgsIGNsYXNzSW5mb09mZnNldCwgc3RydWN0
dXJlLCByZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2xvd0Nhc2UpCisgICAgaWYgQUxXQVlT
X0FMTE9DQVRFX1NMT1cKKyAgICAgICAgam1wIHNsb3dDYXNlCisgICAgZWxzZQorICAgICAgICBj
b25zdCBvZmZzZXRPZk15U2l6ZUNsYXNzID0KKyAgICAgICAgICAgIEpTR2xvYmFsRGF0YTo6aGVh
cCArCisgICAgICAgICAgICBIZWFwOjptX29iamVjdFNwYWNlICsKKyAgICAgICAgICAgIE1hcmtl
ZFNwYWNlOjptX25vcm1hbFNwYWNlICsKKyAgICAgICAgICAgIE1hcmtlZFNwYWNlOjpTdWJzcGFj
ZTo6cHJlY2lzZUFsbG9jYXRvcnMgKworICAgICAgICAgICAgc2l6ZUNsYXNzSW5kZXggKiBzaXpl
b2YgTWFya2VkQWxsb2NhdG9yCisgICAgICAgIAorICAgICAgICAjIEZJWE1FOiB3ZSBjYW4gZ2V0
IHRoZSBnbG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRoZSBzdGFjay4KKyAgICAgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gxCisgICAgICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAgICAgCisgICAgICAgICMgR2V0IHRo
ZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LiAgICAKKyAgICAgICAgbG9hZHAgb2Zmc2V0T2ZN
eVNpemVDbGFzcyArIE1hcmtlZEFsbG9jYXRvcjo6bV9maXJzdEZyZWVDZWxsW3NjcmF0Y2gxXSwg
cmVzdWx0CisgICAgICAgIGJ0cHogcmVzdWx0LCBzbG93Q2FzZQorICAgICAgICAKKyAgICAgICAg
IyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCisgICAgICAgIGxvYWRwIFty
ZXN1bHRdLCBzY3JhdGNoMgorICAgICAgICBzdG9yZXAgc2NyYXRjaDIsIG9mZnNldE9mTXlTaXpl
Q2xhc3MgKyBNYXJrZWRBbGxvY2F0b3I6Om1fZmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0KKyAgICAK
KyAgICAgICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgICAgIGxvYWRwIGNsYXNzSW5m
b09mZnNldFtzY3JhdGNoMV0sIHNjcmF0Y2gyCisgICAgICAgIHN0b3JlcCBzY3JhdGNoMiwgW3Jl
c3VsdF0KKyAgICAgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVtyZXN1
bHRdCisgICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRdCisg
ICAgICAgIGFkZHAgc2l6ZW9mIEpTT2JqZWN0LCByZXN1bHQsIHNjcmF0Y2gxCisgICAgICAgIHN0
b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KKyAgICBl
bmQKK2VuZAorCitfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJpbmVx
IFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5m
bzo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2FkcCBK
U09iamVjdDo6bV9pbmhlcml0b3JJRFt0MF0sIHQyCisgICAgYnRweiB0MiwgLm9wQ3JlYXRlVGhp
c1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0lu
ZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIHQyLCB0MCwgdDEsIHQz
LCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2Vs
bFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wQ3JlYXRlVGhpc1Nsb3c6CisgICAg
Y2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV90aGlzKQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRPZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEKKyAg
ICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3Bf
Y29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRUaGlz
U2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAg
SlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Nsb3cK
KyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9v
cF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAg
ICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQxCisg
ICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNH
bG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MSwgdDAsIHQyLCB0MywgLm9wTmV3
T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFn
T2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3T2JqZWN0U2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9v
cF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2Fy
cmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX25ld19hcnJheV9idWZmZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
bmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX25ld19yZWdleHApCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbW92Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgc3RvcmVp
IHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9ub3Q6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBiaW5lcSB0MiwgQm9v
bGVhblRhZywgLm9wTm90U2xvdworICAgIHhvcmkgMSwgdDMKKyAgICBzdG9yZWkgdDIsIFRhZ09m
ZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4
XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9lcToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93Cisg
ICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5v
cEVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpZXEgdDAsIHQxLCB0MAorICAgIHN0
b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BFcVNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2VxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX2VxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0
MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxv
YWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BFcU51bGxJbW1lZGlhdGUK
KyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0Ym56IFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCwgdDEKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlCisub3BFcU51bGxJbW1lZGlh
dGU6CisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaWVxIHQxLCBVbmRlZmluZWRUYWcs
IHQxCisgICAgb3JpIHQyLCB0MQorLm9wRXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBC
b29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZXE6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcE5l
cVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFTbG93CisgICAgYmliIHQyLCBMb3dl
c3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaW5lcSB0MCwgdDEs
IHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5v
cE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lcSkKKyAgICBkaXNwYXRj
aCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENv
bnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
b3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQx
CisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwg
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wTmVxTnVsbE5vdEltbWVkaWF0
ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBjaW5lcSB0MSwgTnVsbFRhZywgdDIKKyAgICBj
aW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIGFuZGkgdDIsIHQxCisub3BOZXFOdWxsTm90
SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0K
KyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgz
KQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBoZWxwZXIpCisgICAgbG9h
ZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIs
IHQwKQorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLnNs
b3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmluZworICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFdLCB0
MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJd
LCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cKKy5ub3RTdHJpbmc6Cisg
ICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkKKyAg
ICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6Cisg
ICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRfb3Bf
c3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0
LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfaGVs
cGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0
LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9uc3RyaWN0ZXEpCisKKworX2xsaW50
X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xlc3NlcToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3NlcSkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcikKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitf
bGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlSW5j
U2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYmFkZGlv
IDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5jU2xvdzoKKyAgICBjYWxsSGVscGVy
KF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9w
cmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVEZWNTbG93CisgICAg
bG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBic3ViaW8gMSwgdDEsIC5v
cFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAg
ICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Bvc3RfaW5jOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0
SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBiYWRkaW8gMSwg
dDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9y
ZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNEb25lOgorICAgIGRp
c3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBl
cl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9wb3N0X2RlYzoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10s
IHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdERl
Y1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYnN1YmlvIDEsIHQz
LCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEs
IDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVp
IHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0RGVjRG9uZToKKyAgICBkaXNw
YXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
cG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdG9fanNudW1iZXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENd
LCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBiaWVxIHQy
LCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklzSW50CisgICAgYmlhZXEgdDIsIEVtcHR5VmFsdWVU
YWcsIC5vcFRvSnNudW1iZXJTbG93Cisub3BUb0pzbnVtYmVySXNJbnQ6CisgICAgc3RvcmVpIHQy
LCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb0pzbnVtYmVyU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfdG9fanNudW1iZXIpCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0
MSwgdDIpCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BOZWdhdGVTcmNOb3RJbnQKKyAgICBi
dGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CisgICAgbmVnaSB0MgorICAgIHN0b3Jl
aSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKy5vcE5lZ2F0ZVNyY05vdEludDoK
KyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xvdworICAgIHhvcmkgMHg4MDAwMDAw
MCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0
MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5lZ2F0
ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lZ2F0ZSkKKyAgICBkaXNwYXRj
aCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0
b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIs
IEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDMsIEludDMyVGFnLCAub3AyTm90SW50
CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHQzLCB0
MSwgdDAsIC5zbG93LCB0MikKKyAgICBkaXNwYXRjaCg1KQorCisub3AxTm90SW50OgorICAgICMg
Rmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFu
ZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBi
aWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQzLCBJbnQz
MlRhZywgLnNsb3cKKyAgICBjaTJkIHQxLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisu
b3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQxLCB0MywgZnQxCisub3AxTm90SW50UmVh
ZHk6CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgZmlpMmQgdDAsIHQyLCBmdDAKKyAgICBkb3Vi
bGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDEsIDhdCisgICAg
ZGlzcGF0Y2goNSkKKworLm9wMk5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5p
dGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNsb3cKKyAgICBjaTJkIHQw
LCBmdDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0
MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisuc2xv
dzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCg1KQorZW5kCisKK21hY3Jv
IGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQorICAg
IGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmln
aHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgaW50ZWdlck9wZXJhdGlvbihsZWZ0LCByaWdo
dCwgc2xvdykKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5k
ZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKK2Vu
ZAorCitfbGxpbnRfb3BfYWRkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcCgK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQsIHNs
b3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2FkZCkKKworCitfbGxpbnRfb3BfbXVsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAo
aW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGNvbnN0IHNj
cmF0Y2ggPSBpbnQzMlRhZyAgICMgV2Uga25vdyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgaW50MzJU
YWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEgY29uc3RhbnQuCisgICAgICAgICAgICBtb3ZlIHJp
Z2h0LCBzY3JhdGNoCisgICAgICAgICAgICBibXVsaW8gbGVmdCwgc2NyYXRjaCwgc2xvdworICAg
ICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRvbmUKKyAgICAgICAgICAgIGJpbHQgbGVmdCwgMCwg
c2xvdworICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdworICAgICAgICAuZG9uZToKKyAg
ICAgICAgICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAg
ICAgICAgICBzdG9yZWkgc2NyYXRjaCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQorICAg
ICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdodCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbXVsKQorCisKK19sbGludF9vcF9zdWI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
c3ViKQorCisKK19sbGludF9vcF9kaXY6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFy
eU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNs
b3csIGluZGV4KQorICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNpMmQg
cmlnaHQsIGZ0MQorICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNkMmkg
ZnQxLCByaWdodCwgLm5vdEludAorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZz
ZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNl
dFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJbnQ6
CisgICAgICAgICAgICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRvbmU6
CisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQsIHJp
Z2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9kaXYpCisKKworX2xsaW50X29wX21vZDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX21vZCkK
KyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGJpdE9wKG9wZXJhdGlvbiwgaGVscGVyLCBhZHZh
bmNlKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgYmlu
ZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIG9wZXJhdGlv
bih0MSwgdDAsIC5zbG93KQorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisg
ICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goYWR2
YW5jZSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goYWR2
YW5jZSkKK2VuZAorCitfbGxpbnRfb3BfbHNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBsc2hpZnRpIGxlZnQs
IHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9sc2hpZnQsCisgICAgICAgIDQpCisK
KworX2xsaW50X29wX3JzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgcnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfcnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9v
cF91cnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQK
KyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX3Vyc2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX2JpdGFuZDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgc2xvdykgYW5kaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJf
Yml0YW5kLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXR4b3I6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhv
cmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdHhvciwKKyAgICAg
ICAgNSkKKworCitfbGxpbnRfb3BfYml0b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJp
dE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIG9yaSBsZWZ0LCByaWdodCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0b3IsCisgICAgICAgIDUpCisKKworX2xsaW50
X29wX2JpdG5vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQz
KQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wQml0bm90U2xvdworICAgIG5vdGkgdDMKKyAg
ICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2JpdG5vdCkKKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBD
ZWxsVGFnLCB0MCwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJbnN0
YW5jZVNsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDaGVja0hhc0luc3RhbmNlU2xvdzoKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQorICAgIGRpc3Bh
dGNoKDIpCisKKworX2xsaW50X29wX2luc3RhbmNlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFu
Y2UgYmVoYXZpb3IuCisgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVwcmVjYXRlZC4KKyAg
ICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNo
ZWNrZWQodDEsIHQwKQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAg
IGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBs
ZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIAorICAgICMg
QWN0dWFsbHkgZG8gdGhlIHdvcmsuCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGxvYWRpIDRb
UENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0
MSwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0s
IHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJd
LCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFu
Y2VvZlNsb3cpCisgICAgCisgICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQy
ID0gdmFsdWUKKyAgICBtb3ZlIDEsIHQwCisub3BJbnN0YW5jZW9mTG9vcDoKKyAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90
eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNl
b2ZEb25lCisgICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQw
Cisub3BJbnN0YW5jZW9mRG9uZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
ZGlzcGF0Y2goNSkKKworLm9wSW5zdGFuY2VvZlNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX2luc3RhbmNlb2YpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfdHlwZW9m
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdHlw
ZW9mKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3VuZGVmaW5l
ZCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfYm9vbGVhbikKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19udW1iZXI6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19udW1iZXIpCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfaXNfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisK
KworX2xsaW50X29wX2lzX29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhl
bHBlcihfbGxpbnRfaGVscGVyX2lzX29iamVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGlu
dF9vcF9pc19mdW5jdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX2lzX2Z1bmN0aW9uKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X2luOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
aW4pCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9za2lwKQorICAgIGRpc3Bh
dGNoKDUpCisKKworbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQorICAgICMgT3BlcmFu
ZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9h
ZC4KKyAgICAjIDhbUENdICAgUHJvcGVydHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29kZSBi
bG9jay4KKyAgICAjIDEyW1BDXSAgU3RydWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRvIDAg
YnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFsIG9i
amVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0
MF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYnBuZXEg
dDEsIDEyW1BDXSwgc2xvdworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09iamVj
dDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEs
IDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBsb2Fk
aSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0
b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGxvYWRpIChzaXplIC0gMSkg
KiA0W1BDXSwgdDAKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQzLCB0MCkKK2VuZAorCitfbGxpbnRf
b3BfcmVzb2x2ZV9nbG9iYWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHJlc29sdmVHbG9i
YWwoNiwgLm9wUmVzb2x2ZUdsb2JhbFNsb3cpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVzb2x2
ZUdsb2JhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xvYmFs
KQorICAgIGRpc3BhdGNoKDYpCisKKworIyBHaXZlcyB5b3UgdGhlIHNjb3BlIGluIHQwLCB3aGls
ZSBhbGxvd2luZyB5b3UgdG8gb3B0aW9uYWxseSBwZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9u
IHRoZQorIyBzY29wZXMgYXMgdGhleSBhcmUgdHJhdmVyc2VkLiBzY29wZUNoZWNrKCkgaXMgY2Fs
bGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHJlZ2lzdGVyCisjIGhvbGRpbmcgdGhlIHNjb3Bl
LCBhbmQgYSByZWdpc3RlciB0aGF0IGNhbiBiZSB1c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRoYXQg
dGhpcyBkb2VzIG5vdAorIyB1c2UgdDMsIHNvIHlvdSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBpZiBu
ZWVkIGJlLgorbWFjcm8gZ2V0U2NvcGUoZGVCcnVpamluSW5kZXhPcGVyYW5kLCBzY29wZUNoZWNr
KQorICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9h
ZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisg
ICAgCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgYmluZXEgQ29kZUJsb2NrOjpt
X2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAubG9vcAorICAgIGJ0YnogQ29kZUJsb2NrOjpt
X25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9vcAorICAgIAorICAgIGxvYWRpIENvZGVCbG9j
azo6bV9hY3RpdmF0aW9uUmVnaXN0ZXJbdDFdLCB0MQorCisgICAgIyBOZWVkIHRvIGNvbmRpdGlv
bmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4
XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlvbgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQor
ICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKy5ub0FjdGl2YXRpb246Cisg
ICAgc3ViaSAxLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisubG9vcDoKKyAgICBzY29w
ZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisg
ICAgc3ViaSAxLCB0MgorICAgIGJ0aW56IHQyLCAubG9vcAorCisuZG9uZToKK2VuZAorCitfbGxp
bnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZHAgSlNHbG9i
YWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJlW3QzXSwgdDMKKyAgICBnZXRTY29wZSgKKyAgICAg
ICAgMjBbUENdLAorICAgICAgICBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpCisgICAgICAgICAgICBs
b2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3Njb3BlXSwgc2NyYXRjaAorICAgICAgICAgICAg
YnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVtzY3JhdGNoXSwgdDMsIC5vcFJlc29sdmVHbG9iYWxE
eW5hbWljU3VwZXJTbG93CisgICAgICAgIGVuZCkKKyAgICByZXNvbHZlR2xvYmFsKDcsIC5vcFJl
c29sdmVHbG9iYWxEeW5hbWljU2xvdykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xv
YmFsRHluYW1pY1N1cGVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2
ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNv
bHZlR2xvYmFsRHluYW1pY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29s
dmVfZ2xvYmFsX2R5bmFtaWMpCisgICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfZ2V0X3Nj
b3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgT3BlcmFuZHMgYXJlIGFzIGZv
bGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAjIDhb
UENdICAgSW5kZXggb2YgcmVnaXN0ZXIgaW4gdGhlIHNjb3BlLgorICAgICMgMTJbUENdICBEZSBC
cnVpamluIGluZGV4LgorICAgIGdldFNjb3BlKDEyW1BDXSwgbWFjcm8gKHNjb3BlLCBzY3JhdGNo
KSBlbmQpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9h
ZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9i
amVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDIsIDhd
LCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XSwgdDAKKyAgICBzdG9yZWkg
dDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQxLCA4XQorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICB2YWx1ZVByb2ZpbGUodDMsIHQw
LCB0MSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZ2V0U2NvcGUoOFtQQ10sIG1hY3JvIChzY29wZSwgc2Ny
YXRjaCkgZW5kKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQxLCB0MywgdDIpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQz
LCB0MikKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBsb2Fk
cCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgc3RvcmVpIHQzLCBU
YWdPZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MCwgdDEs
IDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0
MworICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVy
c1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9hZGkg
UGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
bG9hZGkgMTJbUENdLCB0MworICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQzKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0ds
b2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDEsIHQyLCB0MykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICB3cml0ZUJhcnJpZXIodDIs
IHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMs
IFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X3Jlc29sdmVfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3Jlc29sdmVfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9l
bnN1cmVfcHJvcGVydHlfZXhpc3RzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQorICAgIGRp
c3BhdGNoKDUpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX3RoaXMp
CisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcg
Zm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisgICAgIyBvcGNvZGUuIFdlIGRvLCBo
b3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBz
aW5jZQorICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFu
ZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKKyAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9u
IHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0
CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5
bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwg
dDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAgIGJw
bmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2Fk
aSAzMltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MiwgdDEpCisgICAgZGlzcGF0Y2go
OSkKKworLm9wR2V0QnlJZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dldF9i
eV9pZCkKKyAgICBkaXNwYXRjaCg5KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0
aDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkg
NFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFn
LCAub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93CisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBh
eWxvYWRPZmZzZXRbY2ZyXSwgdDIKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIEludDMyVGFn
LCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93Ogor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKKyAgICBk
aXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93KQor
ICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3Jh
Z2VbdDBdLCB0MworICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0
QnlJZFNsb3cKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDIsIHQwLCB0MikKKyAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQorICAgIHN0b3JlaSB0
MCwgVGFnT2Zmc2V0W3QzLCB0MV0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMsIHQx
XQorICAgIGRpc3BhdGNoKDkpCisKKy5vcFB1dEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9wdXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOSkKKworCittYWNybyBwdXRCeUlk
VHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2Fk
aSAxMltQQ10sIHQyCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQ
dXRCeUlkU2xvdworICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykK
KyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9y
YWdlW3QwXSwgdDMKKyAgICBhZGRwIHQxLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUy
UmVnKHQyLCB0MSwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKKyAgICBzdG9yZWkgdDEs
IFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSAyNFtQQ10sIHQxCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAg
ICBkaXNwYXRjaCg5KQorZW5kCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3Q6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwg
c2xvdykgZW5kKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6Cisg
ICAgcHV0QnlJZFRyYW5zaXRpb24oCisgICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0
Y2gsIHNsb3cpCisgICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAj
IFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAgICAg
IAorICAgICAgICAgICAgbG9hZHAgMjhbUENdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQo
bWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBsb2FkcCBTdHJ1
Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGFzc2Vy
dChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICAgICAgICAgIGJpZXEgU3Ry
dWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAu
ZG9uZQorICAgICAgICAubG9vcDoKKyAgICAgICAgICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90
b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAgICAgICAg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAg
ICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCBzbG93CisgICAgICAgICAg
ICBhZGRwIDQsIHNjcmF0Y2gKKyAgICAgICAgICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5
cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKKyAgICAgICAgLmRv
bmU6CisgICAgICAgIGVuZCkKKworCitfbGxpbnRfb3BfZGVsX2J5X2lkOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X2lkKQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAg
IGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0s
IHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAu
b3BHZXRCeVZhbFNsb3cpCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZv
W3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgSW50MzJUYWcs
IHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAgYnBuZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFsU2xv
dworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MF0sIHQzCisgICAgYmlhZXEgdDEsIEpT
QXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0Mywg
dDEsIDhdLCB0MgorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zm
c2V0W3QzLCB0MSwgOF0sIHQxCisgICAgYmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlW
YWxTbG93CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkg
dDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAg
dmFsdWVQcm9maWxlKHQyLCB0MSwgdDApCisgICAgZGlzcGF0Y2goNSkKKworLm9wR2V0QnlWYWxT
bG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfdmFsKQorICAgIGRpc3Bh
dGNoKDUpCisKKworX2xsaW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50
QnlWYWxTbG93CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEludDMyVGFn
LCB0MiwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cpCisgICAgYWRkaSAxLCB0MgorICAgIGxvYWRp
IEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisgICAgYmlhZXEgdDIsIHQx
LCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIG5lZ2kgdDIKKyAgICBsb2FkaSA0W1BDXSwg
dDMKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0s
IHQwCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIsIHQy
LCA4XSwgdDEKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3Jl
aSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5vcEdl
dEFyZ3VtZW50QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJn
dW1lbnRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2dldF9ieV9wbmFt
ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wR2V0QnlQbmFtZVNs
b3cpCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGJwbmVxIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFt
ZVNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAg
YnBuZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwg
Lm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSAyNFtQQ10sIHQwCisgICAgbG9hZGkgW2Nmciwg
dDAsIDhdLCB0MAorICAgIHN1YmkgMSwgdDAKKyAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcjo6bV9udW1DYWNoZWFibGVTbG90c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAg
bG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbdDIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0s
IHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNw
YXRjaCg3KQorCisub3BHZXRCeVBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfZ2V0X2J5X3BuYW1lKQorICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX3B1dF9ieV92
YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxTbG93
KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQwLCBJbnQzMlRhZywgdDIsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkcCBDb2RlQmxvY2tb
Y2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MF0sIHQwCisgICAg
bG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QwXSwgdDAKKyAgICBicG5lcSBb
dDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93CisgICAgYmlhZXEgdDIsIEpTQXJyYXk6Om1fdmVjdG9y
TGVuZ3RoW3QxXSwgLm9wUHV0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdl
W3QxXSwgdDAKKyAgICBiaWVxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRbdDAs
IHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wUHV0QnlWYWxFbXB0eQorLm9wUHV0QnlWYWxTdG9y
ZVJlc3VsdDoKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDMsIHQxLCB0MykKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQzKQorICAgIHN0b3JlaSB0
MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdCisgICAgc3Rv
cmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhd
CisgICAgZGlzcGF0Y2goNCkKKworLm9wUHV0QnlWYWxFbXB0eToKKyAgICBhZGRpIDEsIEFycmF5
U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KKyAgICBiaWIgdDIsIEFycmF5U3RvcmFn
ZTo6bV9sZW5ndGhbdDBdLCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0Miwg
dDEKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdCisgICAgam1wIC5v
cFB1dEJ5VmFsU3RvcmVSZXN1bHQKKworLm9wUHV0QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9wdXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X2RlbF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9kZWxfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9i
eV9pbmRleDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3B1dF9ieV9pbmRleCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2V0
dGVyX3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3B1dF9nZXR0ZXJfc2V0dGVyKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29w
X2xvb3A6CisgICAgbm9wCitfbGxpbnRfb3Bfam1wOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBkaXNwYXRjaEJyYW5jaCg0W1BDXSkKKworCitfbGxpbnRfb3Bfam1wX3Njb3BlczoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2ptcF9zY29wZXMp
CisgICAgZGlzcGF0Y2goMCkKKworCittYWNybyBqdW1wVHJ1ZU9yRmFsc2UoY29uZGl0aW9uT3As
IHNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBh
eWxvYWQodDEsIEJvb2xlYW5UYWcsIHQwLCAuc2xvdykKKyAgICBjb25kaXRpb25PcCh0MCwgLnRh
cmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhb
UENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKHNsb3cpCisgICAgZGlzcGF0Y2goMCkKK2Vu
ZAorCitfbGxpbnRfb3BfbG9vcF9pZl90cnVlOgorICAgIG5vcAorX2xsaW50X29wX2p0cnVlOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3Jv
ICh2YWx1ZSwgdGFyZ2V0KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50
X2hlbHBlcl9qdHJ1ZSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKKyAgICBub3AKK19s
bGludF9vcF9qZmFsc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxz
ZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIHRhcmdldCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfamZhbHNlKQorCisKK21hY3JvIGVxdWFsTnVsbChjZWxs
SGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2Fk
aSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQorICAgIGxvYWRw
IEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxIYW5kbGVyKFN0cnVjdHVyZTo6
bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKKyAgICBkaXNwYXRj
aCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuaW1tZWRpYXRl
OgorICAgIG9yaSAxLCB0MQorICAgIGltbWVkaWF0ZUhhbmRsZXIodDEsIC50YXJnZXQpCisgICAg
ZGlzcGF0Y2goMykKK2VuZAorCitfbGxpbnRfb3BfamVxX251bGw6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0Ym56
IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNy
byAodmFsdWUsIHRhcmdldCkgYmllcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKyAgICAK
KworX2xsaW50X29wX2puZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxO
dWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRieiB2YWx1ZSwgTWFzcXVlcmFk
ZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQp
IGJpbmVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorCisKK19sbGludF9vcF9qbmVxX3B0
cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkg
OFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BK
bmVxUHRyQnJhbmNoCisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwgLm9w
Sm5lcVB0ckZhbGxUaHJvdWdoCisub3BKbmVxUHRyQnJhbmNoOgorICAgIGRpc3BhdGNoQnJhbmNo
KDEyW1BDXSkKKy5vcEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaCg0KQorCisKK21h
Y3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUsIGhlbHBlcikKKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQyLCB0MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQy
LCB0MykKKyAgICBiaW5lcSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0Miwg
SW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5qdW1wVGFy
Z2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgYmlhIHQwLCBMb3dlc3RU
YWcsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAg
ICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MywgZnQxCisgICAgam1wIC5v
cDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MywgdDIsIGZ0
MQorLm9wMU5vdEludFJlYWR5OgorICAgIGZpaTJkIHQxLCB0MCwgZnQwCisgICAgZG91YmxlQ29t
cGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMk5vdElu
dDoKKyAgICBjaTJkIHQxLCBmdDAKKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBm
aWkyZCB0MywgdDIsIGZ0MQorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0
KQorICAgIGRpc3BhdGNoKDQpCisKKy5qdW1wVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDEy
W1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goMCkK
K2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzOgorICAgIG5vcAorX2xsaW50X29wX2psZXNz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQs
CisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3MpCisKKworX2xsaW50X29wX2pubGVzczoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5k
LAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzcykKKworCitfbGxpbnRfb3BfbG9vcF9pZl9n
cmVhdGVyOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmln
dCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0
YXJnZXQpIGJkZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfamdyZWF0ZXIpCisKKworX2xsaW50X29wX2puZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJp
bHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJkbHRlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxp
bnRfaGVscGVyX2puZ3JlYXRlcikKKworCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzZXE6CisgICAg
bm9wCitfbGxpbnRfb3Bfamxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFy
ZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCByaWdo
dCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHRl
cSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVzc2Vx
KQorCisKK19sbGludF9vcF9qbmxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29t
cGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0
dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5sZXNz
ZXEpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcmVxOgorICAgIG5vcAorX2xsaW50X29w
X2pncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXEgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXJlcSkKKworCitf
bGxpbnRfb3Bfam5ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUo
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdHVuIGxl
ZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRlcmVx
KQorCisKK19sbGludF9vcF9sb29wX2hpbnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNo
ZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9z
d2l0Y2hfaW1tOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisg
ICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQw
KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9y
YXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MyAgICMg
RklYTUU6IHdvdWxkIGJlIG5pY2UgdG8gcGVlcGhvbGUgdGhpcyEKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6OlJhcmVEYXRhOjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZmZXJP
ZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAu
b3BTd2l0Y2hJbW1Ob3RJbnQKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAK
KyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6
ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxlSnVt
cFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDMKKyAgICBs
b2FkaSBbdDMsIHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3Vn
aAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoSW1tTm90SW50
OgorICAgIGJpYiB0MSwgTG93ZXN0VGFnLCAub3BTd2l0Y2hJbW1TbG93ICAjIEdvIHRvIHNsb3cg
cGF0aCBpZiBpdCdzIGEgZG91YmxlLgorLm9wU3dpdGNoSW1tRmFsbFRocm91Z2g6CisgICAgZGlz
cGF0Y2hCcmFuY2goOFtQQ10pCisKKy5vcFN3aXRjaEltbVNsb3c6CisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3N3aXRjaF9pbW0pCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3Bf
c3dpdGNoX2NoYXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIK
KyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwg
dDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQzCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVz
ICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVx
IHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBU
eXBlSW5mbzo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdo
CisgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0MAorICAgIGJpbmVxIFN0cmluZ0lt
cGw6Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAg
U3RyaW5nSW1wbDo6bV9kYXRhOFt0MF0sIHQxCisgICAgYnRpbnogU3RyaW5nSW1wbDo6bV9oYXNo
QW5kRmxhZ3NbdDBdLCBIYXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0Y2hDaGFyOEJpdAorICAg
IGxvYWRoIFt0MV0sIHQwCisgICAgam1wIC5vcFN3aXRjaENoYXJSZWFkeQorLm9wU3dpdGNoQ2hh
cjhCaXQ6CisgICAgbG9hZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENoYXJSZWFkeToKKyAgICBzdWJp
IFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRh
YmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENoYXJG
YWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZl
Y3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCisgICAg
YnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhP
ZmZzZXQodDEpCisKKy5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5j
aCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9zdHJpbmcpCisgICAgZGlz
cGF0Y2goMCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGJ0aXogMTJbUENdLCAub3BOZXdGdW5jVW5jaGVja2VkCisgICAgbG9hZGkgNFtQQ10sIHQx
CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BOZXdG
dW5jRG9uZQorLm9wTmV3RnVuY1VuY2hlY2tlZDoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfbmV3X2Z1bmMpCisub3BOZXdGdW5jRG9uZToKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGlu
dF9vcF9uZXdfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9uZXdfZnVuY19leHApCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBk
b0NhbGwoaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEK
KyAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93KQorICAg
IGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgYWRk
cCAyNCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNvbnRh
aW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNo
YWluW3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNdCisg
ICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBsb2FkaSA4
IC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtj
ZnJdCisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNdCisgICAgc3RvcmVpIHQyLCBBcmd1
bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVl
ICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFnT2Zm
c2V0W3QzXQorICAgIG1vdmUgdDMsIGNmcgorICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86Om1h
Y2hpbmVDb2RlVGFyZ2V0W3QxXQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworLm9wQ2FsbFNs
b3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3BfY2Fs
bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY2FsbCkK
KworCitfbGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0Nh
bGwoX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3QpCisKKworX2xsaW50X29wX2NhbGxfdmFyYXJnczoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIF9sbGludF9oZWxw
ZXJfY2FsbF92YXJhcmdzKQorCisKK19sbGludF9vcF9jYWxsX2V2YWw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIAorICAgICMgRXZhbCBpcyBleGVjdXRlZCBpbiBvbmUgb2YgdHdvIG1vZGVz
OgorICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSByZWFsbHkgaW52b2tpbmcgZXZh
bCgpIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBleGVjdXRpb24gaXMgcGVyZm9tZWQgZW50
aXJlbHkgaW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBpdAorICAgICMgICAgcmV0dXJucyB0aGUgUEMg
b2YgYSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0aGUgcmV0dXJuIHZhbHVlCisgICAgIyAg
ICB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgICMKKyAgICAjIDIpIFdlIGZpbmQgdGhhdCB3
ZSdyZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwoKSB0aGF0IGlzIG5vdAorICAgICMg
ICAgdGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVscGVyIHJldHVybnMgdGhlIFBDIG9mIHRoZSB0
aGluZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQuCisgICAgIworICAgICMgVGhp
cyBhbGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywgd2hpY2ggd291bGQgcmVxdWlyZSBhIHRv
dGFsIG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0ZSB0aGF0IGNhbm5vdCBiZSBl
YXNpbHkgcGFja2VkIGludG8gdHdvCisgICAgIyByZWdpc3RlcnMgKEMgZnVuY3Rpb25zIGNhbiBy
ZXR1cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5KToKKyAgICAjCisgICAgIyAtIFRoZSBj
YWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBtb2RpZmll
ZAorICAgICMgICBieSB0aGUgaGVscGVyLCBidXQgdGhlIGNvbnZlbnRpb24gaXMgdGhhdCBpdCBy
ZXR1cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0b3RhbGx5IGNsZWFyIGlmIHRoYXQncyBuZWNl
c3NhcnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUuCisgICAgIyAgIEJ1dCB0aGF0J3Mg
b3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRlciBzbyB3ZSBzdGljayB3aXRoIGl0Lgor
ICAgICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBoZWxwZXIgc3VjY2Vzc2Z1bGx5IGV4
ZWN1dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAjICAgdGhlIHJldHVybiB2YWx1ZSwgb3IgZGlk
IG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3IgdXMKKyAgICAjICAgdG8gY2Fs
bC4KKyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAgICAjICAgLSBUaGUgSlMgcmV0dXJuIHZhbHVl
ICh0d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisgICAgIyAgIC0gVGhlIFBDIHRvIGNhbGwuCisg
ICAgIworICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2llciB0byBqdXN0IGFsd2F5cyBoYXZl
IHRoaXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBhIFBDIHRvIGNhbGwsIGFuZCB0aGF0IFBD
IG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAorICAgICMgcmV0dXJucyB0aGUgSlMgdmFs
dWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAKKyAgICBzbG93UGF0aEZvckNhbGwoNCwg
X2xsaW50X2hlbHBlcl9jYWxsX2V2YWwpCisKKworX2xsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50
OgorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYWN0aXZh
dGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9h
ZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVl
VGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIs
IHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkCisu
b3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVy
X3RlYXJfb2ZmX2FjdGl2YXRpb24pCisub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQ6Cisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYXJndW1lbnRzOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdWJpIDEsIHQwICAgIyBH
ZXQgdGhlIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcgorICAgIGJpZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZAor
ICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCisub3BUZWFy
T2ZmQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGRvUmV0
dXJuKCkKKyAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgIGxvYWRwIENhbGxlckZyYW1l
W2Nmcl0sIGNmcgorICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQorICAg
IHJldAorZW5kCisKK19sbGludF9vcF9yZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNo
ZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxp
bnRfb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhb
UENdLCB0MworICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdmFsdWVQcm9maWxlKHQxLCB0MCwg
dDMpCisgICAgdHJhY2VFeGVjdXRpb24oKSAjIE5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSBpdCB3
b3VsZCBjbG9iYmVyIHQxLCB0MAorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3JldF9v
YmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJ
VEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFJldE9iamVjdE9y
VGhpc05vdE9iamVjdAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAg
IGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2JqZWN0
VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgZG9SZXR1cm4oKQorCisub3BS
ZXRPYmplY3RPclRoaXNOb3RPYmplY3Q6CisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRf
b3BfbWV0aG9kX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIGlnbm9yZSBt
ZXRob2QgY2hlY2tzIGFuZCB1c2Ugbm9ybWFsIGdldF9ieV9pZCBvcHRpbWl6YXRpb25zLgorICAg
IGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N0cmNhdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N0cmNhdCkKKyAgICBkaXNwYXRjaCg0KQor
CisKK19sbGludF9vcF90b19wcmltaXRpdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9QcmltaXRpdmVJ
c0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJibmVxIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAu
b3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisub3BUb1ByaW1pdGl2ZUlzSW1tOgorICAgIHN0b3JlaSB0
MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9QcmltaXRpdmVTbG93Q2FzZToKKyAg
ICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fcHJpbWl0aXZlKQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX2dldF9wbmFtZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNh
bGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfcG5hbWVzKQorICAgIGRpc3BhdGNoKDApICMgVGhl
IGhlbHBlciBlaXRoZXIgYWR2YW5jZXMgdGhlIFBDIG9yIGp1bXBzIHVzIHRvIHNvbWV3aGVyZSBl
bHNlLgorCisKK19sbGludF9vcF9uZXh0X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZGkgMTZbUENdLCB0MgorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQwCisgICAgYmllcSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XSwgLm9wTmV4dFBuYW1lRW5kCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJ
dGVyYXRvcjo6bV9qc1N0cmluZ3NbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDhdLCB0Mwor
ICAgIGFkZGkgMSwgdDAKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9h
ZGkgOFtQQ10sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAgICBicG5lcSB0MSwgSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVTbG93
CisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVDaGFp
blt0Ml0sIHQwCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAKKyAg
ICBidHB6IFt0MF0sIC5vcE5leHRQbmFtZVRhcmdldAorLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5
cGVMb29wOgorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFt0MV0s
IE51bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJvdG90
eXBlICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0Ml0sIHQxCisgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBhZGRw
IDQsIHQwCisgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29wCisu
b3BOZXh0UG5hbWVUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMjRbUENdKQorCisub3BOZXh0
UG5hbWVFbmQ6CisgICAgZGlzcGF0Y2goNykKKworLm9wTmV4dFBuYW1lU2xvdzoKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfbmV4dF9wbmFtZSkgIyBUaGlzIGVpdGhlciBrZWVwcyB0aGUg
UEMgd2hlcmUgaXQgd2FzIChjYXVzaW5nIHVzIHRvIGxvb3ApIG9yIHNldHMgaXQgdG8gdGFyZ2V0
LgorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3B1c2hfc2NvcGU6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX3Njb3BlKQorICAg
IGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3BvcF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3BvcF9zY29wZSkKKyAgICBkaXNwYXRj
aCgxKQorCisKK19sbGludF9vcF9wdXNoX25ld19zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfbmV3X3Njb3BlKQorICAgIGRpc3Bh
dGNoKDQpCisKKworX2xsaW50X29wX2NhdGNoOgorICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQg
dXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKKyAgICAjIG1h
Y2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gp
LCBhbmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2Vl
IF9sbGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRoZSBKSVQgdGhyb3dpbmcgcHJvdG9j
b2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0aHJvd2luZworICAgICMgY29k
ZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93aW5nIHRvIHRoZSBpbnRlcnByZXRl
ciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENG
b3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9i
YWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVy
UENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQ
YXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiAr
IFRhZ09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9u
ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxE
YXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAgICAgIAorICAgIGxvYWRpIDRbUENdLCB0
MgorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0
MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdHJhY2VFeGVjdXRpb24oKSAgIyBUaGlzIG5l
ZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIgdDAsIHQxLCB0
MiwgdDMgYWJvdmUuCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3c6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvdykKKyAg
ICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3I6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvd19yZWZl
cmVuY2VfZXJyb3IpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfanNyOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBhZGRpIDMgKiA0LCBQQywg
dDEKKyAgICBzdG9yZWkgdDEsIFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENd
KQorCisKK19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkcCBbY2ZyLCB0MCwgOF0sIFBDCisgICAgZGlzcGF0Y2goMCkKKwor
CitfbGxpbnRfb3BfZGVidWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9kZWJ1ZykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcm9m
aWxlX3dpbGxfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tG
cmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5v
cFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJvZmls
ZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisK
KworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIHQwCisg
ICAgYnRweiBbdDBdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERvbmU6CisgICAg
ZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhyb3dfZnJvbV9o
ZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJwcmV0
ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMpLCBzbworICAgICMgdGhlIHRocm93
IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0byBo
ZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcg
cHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisg
ICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1w
IEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworX2xsaW50X3Ro
cm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0
ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQor
ICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGpt
cCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKKyMgTGFzdGx5
LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0
IGFsbCBvcGNvZGVzLgorIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVuIHVz
aW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAorIyBhcyBtdWNoLgorCittYWNybyBu
b3RTdXBwb3J0ZWQoKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGNyYXNoKCkKKyAg
ICBlbHNlCisgICAgICAgICMgV2Ugc2hvdWxkIHVzZSB3aGF0ZXZlciB0aGUgc21hbGxlc3QgcG9z
c2libGUgaW5zdHJ1Y3Rpb24gaXMsIGp1c3QgdG8KKyAgICAgICAgIyBlbnN1cmUgdGhhdCB0aGVy
ZSBpcyBhIGdhcCBiZXR3ZWVuIGluc3RydWN0aW9uIGxhYmVscy4gSWYgbXVsdGlwbGUKKyAgICAg
ICAgIyBzbWFsbGVzdCBpbnN0cnVjdGlvbnMgZXhpc3QsIHdlIHNob3VsZCBwaWNrIHRoZSBvbmUg
dGhhdCBpcyBtb3N0CisgICAgICAgICMgbGlrZWx5IHJlc3VsdCBpbiBleGVjdXRpb24gYmVpbmcg
aGFsdGVkLiBDdXJyZW50bHkgdGhhdCBpcyB0aGUgYnJlYWsKKyAgICAgICAgIyBpbnN0cnVjdGlv
biBvbiBhbGwgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBpbnRlcmVzdGVkIGluLiAoQnJlYWsgaXMgaW50
MworICAgICAgICAjIG9uIEludGVsLCB3aGljaCBpcyAxIGJ5dGUsIGFuZCBia3B0IG9uIEFSTXY3
LCB3aGljaCBpcyAyIGJ5dGVzLikKKyAgICAgICAgYnJlYWsKKyAgICBlbmQKK2VuZAorCitfbGxp
bnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3Bf
Z2V0X2J5X2lkX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfY3VzdG9tX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfY3VzdG9tX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlf
aWRfY3VzdG9tX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9p
ZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0
dGVyX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0
dGVyX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0
dGVyX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9wcm90
bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3NlbGY6CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9zdHJpbmdfbGVuZ3RoOgorICAgIG5vdFN1
cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0
ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3JlcGxhY2U6CisgICAgbm90U3VwcG9ydGVkKCkK
KworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uOgorICAgIG5vdFN1cHBvcnRlZCgpCisK
KworIyBJbmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50LgorX2xsaW50X2VuZDoKKyAgICBjcmFzaCgp
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworI2lmIEVOQUJM
RShMTElOVCkKKworI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUg
PHd0Zi9JbmxpbmVBU00uaD4KKworLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxp
bmVhc20sIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUgYXNzZW1ibHkgY29kZQorLy8gZm9yIHRo
ZSBpbnRlcnByZXRlciwgYXMgY29tcGlsZWQgZnJvbSBMb3dMZXZlbEludGVycHJldGVyLmFzbS4K
KyNpbmNsdWRlICJMTEludEFzc2VtYmx5LmgiCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTG93TGV2ZWxJbnRl
cnByZXRlcl9oCisjZGVmaW5lIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJPcGNvZGUuaCIK
KworI2RlZmluZSBMTElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29kZSwgbGVuZ3RoKSBleHRlcm4g
IkMiIHZvaWQgbGxpbnRfIyNvcGNvZGUoKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoTExJTlRf
SU5TVFJVQ1RJT05fREVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJVQ1RJT05fREVDTAorCitleHRl
cm4gIkMiIHZvaWQgbGxpbnRfYmVnaW4oKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9lbmQoKTsK
K2V4dGVybiAiQyIgdm9pZCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZv
aWQgbGxpbnRfZXZhbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9y
X2NvbnN0cnVjdF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2dlbmVyaWNf
cmV0dXJuX3BvaW50KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJf
dHJhbXBvbGluZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3Ry
YW1wb2xpbmUoKTsKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExvd0xl
dmVsSW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXJtdjcucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
YXJtdjcucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9hcm12Ny5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDMyIEBACisjIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJvcHQiCisK
K2NsYXNzIE5vZGUKKyAgICBkZWYgYXJtVjdTaW5nbGUKKyAgICAgICAgZG91YmxlT3BlcmFuZCA9
IGFybVY3T3BlcmFuZAorICAgICAgICByYWlzZSAiQm9ndXMgcmVnaXN0ZXIgbmFtZSAje2RvdWJs
ZU9wZXJhbmR9IiB1bmxlc3MgZG91YmxlT3BlcmFuZCA9fiAvXmQvCisgICAgICAgICJzIiArICgk
fi5wb3N0X21hdGNoLnRvX2kgKiAyKS50b19zCisgICAgZW5kCitlbmQKKworY2xhc3MgU3BlY2lh
bFJlZ2lzdGVyIDwgTm9DaGlsZHJlbgorICAgIGRlZiBpbml0aWFsaXplKG5hbWUpCisgICAgICAg
IEBuYW1lID0gbmFtZQorICAgIGVuZAorICAgIAorICAgIGRlZiBhcm1WN09wZXJhbmQKKyAgICAg
ICAgQG5hbWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisg
ICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgcmVnaXN0ZXI/CisgICAgICAgIHRydWUKKyAgICBlbmQKK2VuZAorCitBUk12N19FWFRS
QV9HUFJTID0gW1NwZWNpYWxSZWdpc3Rlci5uZXcoInI5IiksIFNwZWNpYWxSZWdpc3Rlci5uZXco
InI4IiksIFNwZWNpYWxSZWdpc3Rlci5uZXcoInIzIildCitBUk12N19FWFRSQV9GUFJTID0gW1Nw
ZWNpYWxSZWdpc3Rlci5uZXcoImQ3IildCitBUk12N19TQ1JBVENIX0ZQUiA9IFNwZWNpYWxSZWdp
c3Rlci5uZXcoImQ4IikKKworZGVmIGFybVY3TW92ZUltbWVkaWF0ZSh2YWx1ZSwgcmVnaXN0ZXIp
CisgICAgIyBDdXJyZW50bHkgd2Ugb25seSBoYW5kbGUgdGhlIHNpbXBsZSBjYXNlcywgYW5kIGZh
bGwgYmFjayB0byBtb3YvbW92dCBmb3IgdGhlIGNvbXBsZXggb25lcy4KKyAgICBpZiB2YWx1ZSA+
PSAwICYmIHZhbHVlIDwgMjU2CisgICAgICAgICRhc20ucHV0cyAibW92dyAje3JlZ2lzdGVyLmFy
bVY3T3BlcmFuZH0sIFwjI3t2YWx1ZX0iCisgICAgZWxzaWYgKH52YWx1ZSkgPj0gMCAmJiAofnZh
bHVlKSA8IDI1NgorICAgICAgICAkYXNtLnB1dHMgIm12biAje3JlZ2lzdGVyLmFybVY3T3BlcmFu
ZH0sIFwjI3t+dmFsdWV9IgorICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJtb3Z3ICN7cmVn
aXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje3ZhbHVlICYgMHhmZmZmfSIKKyAgICAgICAgaWYgKHZh
bHVlICYgMHhmZmZmMDAwMCkgIT0gMAorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3Z0ICN7cmVn
aXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje3ZhbHVlID4+IDE2fSIKKyAgICAgICAgZW5kCisgICAg
ZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRAorICAgIGRlZiBhcm1WN09wZXJhbmQKKyAgICAg
ICAgY2FzZSBuYW1lCisgICAgICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgICAgICAg
InIwIgorICAgICAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgICAgICAgICJyMSIKKyAg
ICAgICAgd2hlbiAidDIiLCAiYTIiCisgICAgICAgICAgICAicjIiCisgICAgICAgIHdoZW4gImEz
IgorICAgICAgICAgICAgInIzIgorICAgICAgICB3aGVuICJ0MyIKKyAgICAgICAgICAgICJyNCIK
KyAgICAgICAgd2hlbiAidDQiCisgICAgICAgICAgICAicjciCisgICAgICAgIHdoZW4gImNmciIK
KyAgICAgICAgICAgICJyNSIKKyAgICAgICAgd2hlbiAibHIiCisgICAgICAgICAgICAibHIiCisg
ICAgICAgIHdoZW4gInNwIgorICAgICAgICAgICAgInNwIgorICAgICAgICBlbHNlCisgICAgICAg
ICAgICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIEFSTXY3IGF0ICN7Y29kZU9yaWdp
blN0cmluZ30iCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJ
RAorICAgIGRlZiBhcm1WN09wZXJhbmQKKyAgICAgICAgY2FzZSBuYW1lCisgICAgICAgIHdoZW4g
ImZ0MCIsICJmciIKKyAgICAgICAgICAgICJkMCIKKyAgICAgICAgd2hlbiAiZnQxIgorICAgICAg
ICAgICAgImQxIgorICAgICAgICB3aGVuICJmdDIiCisgICAgICAgICAgICAiZDIiCisgICAgICAg
IHdoZW4gImZ0MyIKKyAgICAgICAgICAgICJkMyIKKyAgICAgICAgd2hlbiAiZnQ0IgorICAgICAg
ICAgICAgImQ0IgorICAgICAgICB3aGVuICJmdDUiCisgICAgICAgICAgICAiZDUiCisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJCYWQgcmVnaXN0ZXIgI3tuYW1lfSBmb3IgQVJNdjcg
YXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworY2xh
c3MgSW1tZWRpYXRlCisgICAgZGVmIGFybVY3T3BlcmFuZAorICAgICAgICByYWlzZSAiSW52YWxp
ZCBpbW1lZGlhdGUgI3t2YWx1ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgaWYgdmFsdWUgPCAw
IG9yIHZhbHVlID4gMjU1CisgICAgICAgICJcIyN7dmFsdWV9IgorICAgIGVuZAorZW5kCisKK2Ns
YXNzIEFkZHJlc3MKKyAgICBkZWYgYXJtVjdPcGVyYW5kCisgICAgICAgIHJhaXNlICJCYWQgb2Zm
c2V0IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIG9yIG9m
ZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sIFwjI3tv
ZmZzZXQudmFsdWV9XSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgICBkZWYg
YXJtVjdPcGVyYW5kCisgICAgICAgIHJhaXNlICJCYWQgb2Zmc2V0IGF0ICN7Y29kZU9yaWdpblN0
cmluZ30iIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFu
ZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZVNoaWZ0fV0iCisgICAgZW5k
CitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgICAgZGVmIGFybVY3T3BlcmFuZAorICAg
ICAgICByYWlzZSAiVW5jb252ZXJ0ZWQgYWJzb2x1dGUgYWRkcmVzcyBhdCAje2NvZGVPcmlnaW5T
dHJpbmd9IgorICAgIGVuZAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgYnJhbmNoIG9wcy4gRm9y
IGV4YW1wbGU6CisjCisjIGJhZGRpeiBmb28sIGJhciwgYmF6CisjCisjIHdpbGwgYmVjb21lOgor
IworIyBhZGRpIGZvbywgYmFyCisjIGJ6IGJhegorIworCitkZWYgYXJtVjdMb3dlckJyYW5jaE9w
cyhsaXN0KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3QuZWFjaCB7CisgICAgICAgIHwgbm9k
ZSB8CisgICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgICAgICAgIGNhc2Ug
bm9kZS5vcGNvZGUKKyAgICAgICAgICAgIHdoZW4gL15iKGFkZGl8c3ViaXxvcml8YWRkcCkvCisg
ICAgICAgICAgICAgICAgb3AgPSAkMQorICAgICAgICAgICAgICAgIGJyYW5jaCA9ICJiIiArICR+
LnBvc3RfbWF0Y2gKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIG9wCisg
ICAgICAgICAgICAgICAgd2hlbiAiYWRkaSIsICJhZGRwIgorICAgICAgICAgICAgICAgICAgICBv
cCA9ICJhZGRpcyIKKyAgICAgICAgICAgICAgICB3aGVuICJzdWJpIgorICAgICAgICAgICAgICAg
ICAgICBvcCA9ICJzdWJpcyIKKyAgICAgICAgICAgICAgICB3aGVuICJvcmkiCisgICAgICAgICAg
ICAgICAgICAgIG9wID0gIm9yaXMiCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAg
ICAgCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2Rl
T3JpZ2luLCBvcCwgbm9kZS5vcGVyYW5kc1swLi4tMl0pCisgICAgICAgICAgICAgICAgbmV3TGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBicmFuY2gsIFtub2RlLm9wZXJh
bmRzWy0xXV0pCisgICAgICAgICAgICB3aGVuICJibXVsaW8iCisgICAgICAgICAgICAgICAgdG1w
MSA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgICAgIHRtcDIg
PSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgICAgICBuZXdMaXN0
IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJzbXVsbGkiLCBbbm9kZS5vcGVy
YW5kc1swXSwgbm9kZS5vcGVyYW5kc1sxXSwgbm9kZS5vcGVyYW5kc1sxXSwgdG1wMV0pCisgICAg
ICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAi
cnNoaWZ0aSIsIFtub2RlLm9wZXJhbmRzWy0yXSwgSW1tZWRpYXRlLm5ldyhub2RlLmNvZGVPcmln
aW4sIDMxKSwgdG1wMl0pCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcobm9kZS5jb2RlT3JpZ2luLCAiYmluZXEiLCBbdG1wMSwgdG1wMiwgbm9kZS5vcGVyYW5kc1st
MV1dKQorICAgICAgICAgICAgd2hlbiAvXmJtdWxpLworICAgICAgICAgICAgICAgIGNvbmRpdGlv
biA9ICR+LnBvc3RfbWF0Y2gKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhub2RlLmNvZGVPcmlnaW4sICJtdWxpIiwgbm9kZS5vcGVyYW5kc1swLi4tMl0pCisgICAg
ICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAi
YnRpIiArIGNvbmRpdGlvbiwgW25vZGUub3BlcmFuZHNbLTJdLCBub2RlLm9wZXJhbmRzWy0xXV0p
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAg
ICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisg
ICAgICAgIGVuZAorICAgIH0KKyAgICBuZXdMaXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBz
aGlmdCBvcHMuIEZvciBleGFtcGxlOgorIworIyBsc2hpZnRpIGZvbywgYmFyCisjCisjIHdpbGwg
YmVjb21lOgorIworIyBhbmRpIGZvbywgMzEsIHRtcAorIyBsc2hpZnRpIHRtcCwgYmFyCisjCisK
K2RlZiBhcm1WN1Nhbml0aXplU2hpZnQob3BlcmFuZCwgbGlzdCkKKyAgICByZXR1cm4gb3BlcmFu
ZCBpZiBvcGVyYW5kLmltbWVkaWF0ZT8KKyAgICAKKyAgICB0bXAgPSBUbXAubmV3KG9wZXJhbmQu
Y29kZU9yaWdpbiwgOmdwcikKKyAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNv
ZGVPcmlnaW4sICJhbmRpIiwgW29wZXJhbmQsIEltbWVkaWF0ZS5uZXcob3BlcmFuZC5jb2RlT3Jp
Z2luLCAzMSksIHRtcF0pCisgICAgdG1wCitlbmQKKworZGVmIGFybVY3TG93ZXJTaGlmdE9wcyhs
aXN0KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3QuZWFjaCB7CisgICAgICAgIHwgbm9kZSB8
CisgICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgICAgICAgIGNhc2Ugbm9k
ZS5vcGNvZGUKKyAgICAgICAgICAgIHdoZW4gImxzaGlmdGkiLCAicnNoaWZ0aSIsICJ1cnNoaWZ0
aSIKKyAgICAgICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRzLnNpemUgPT0gMgorICAgICAgICAg
ICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5v
ZGUub3Bjb2RlLCBbYXJtVjdTYW5pdGl6ZVNoaWZ0KG5vZGUub3BlcmFuZHNbMF0sIG5ld0xpc3Qp
LCBub2RlLm9wZXJhbmRzWzFdXSkKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5v
cGNvZGUsIFtub2RlLm9wZXJhbmRzWzBdLCBhcm1WN1Nhbml0aXplU2hpZnQobm9kZS5vcGVyYW5k
c1sxXSwgbmV3TGlzdCksIG5vZGUub3BlcmFuZHNbMl1dKQorICAgICAgICAgICAgICAgICAgICBy
YWlzZSAiV3JvbmcgbnVtYmVyIG9mIG9wZXJhbmRzIGZvciBzaGlmdCBhdCAje25vZGUuY29kZU9y
aWdpblN0cmluZ30iIHVubGVzcyBub2RlLm9wZXJhbmRzLnNpemUgPT0gMworICAgICAgICAgICAg
ICAgIGVuZAorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9k
ZQorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwg
bm9kZQorICAgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJp
bmcgb2YgbWFsZm9ybWVkIGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGU6CisjCisjIGxvYWRwIDEwMDAw
W2Zvb10sIGJhcgorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbW92ZSAxMDAwMCwgdG1wCisjIGFk
ZHAgZm9vLCB0bXAKKyMgbG9hZHAgMFt0bXBdLCBiYXIKKyMKKworY2xhc3MgTm9kZQorICAgIGRl
ZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgICAgICBtYXBD
aGlsZHJlbiB7CisgICAgICAgICAgICB8IG5vZGUgfAorICAgICAgICAgICAgbm9kZS5hcm1WN0xv
d2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgICAgICB9CisgICAgZW5kCitl
bmQKKworY2xhc3MgQWRkcmVzcworICAgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2Vz
UmVjdXJzZShsaXN0KQorICAgICAgICBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiBvciBvZmZzZXQu
dmFsdWUgPiAweGZmZgorICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3By
KQorICAgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUi
LCBbb2Zmc2V0LCB0bXBdKQorICAgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29k
ZU9yaWdpbiwgImFkZHAiLCBbYmFzZSwgdG1wXSkKKyAgICAgICAgICAgIEFkZHJlc3MubmV3KGNv
ZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgc2VsZgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitjbGFzcyBC
YXNlSW5kZXgKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlz
dCkKKyAgICAgICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAgICAgICAgIHRtcCA9IFRtcC5u
ZXcoY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KGNvZGVPcmlnaW4sICJtb3ZlIiwgW29mZnNldCwgdG1wXSkKKyAgICAgICAgICAgIGxpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJhZGRwIiwgW2Jhc2UsIHRtcF0pCisgICAgICAg
ICAgICBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIHRtcCwgaW5kZXgsIHNjYWxlLCBJbW1lZGlh
dGUubmV3KGNvZGVPcmlnaW4sIDApKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmCisg
ICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICAgIGRl
ZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgICAgICB0bXAg
PSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW2FkZHJlc3MsIHRtcF0pCisgICAgICAgIEFkZHJlc3Mu
bmV3KGNvZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkKKyAgICBl
bmQKK2VuZAorCitkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3NlcyhsaXN0KQorICAgIG5l
d0xpc3QgPSBbXQorICAgIGxpc3QuZWFjaCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIG5l
d0xpc3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShuZXdMaXN0
KQorICAgIH0KKyAgICBuZXdMaXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBtYWxmb3JtZWQg
YWRkcmVzc2VzIGluIGRvdWJsZSBsb2FkcyBhbmQgc3RvcmVzLiBGb3IgZXhhbXBsZToKKyMKKyMg
bG9hZGQgW2ZvbywgYmFyLCA4XSwgYmF6CisjCisjIGJlY29tZXM6CisjCisjIGxlYXAgW2Zvbywg
YmFyLCA4XSwgdG1wCisjIGxvYWRkIFt0bXBdLCBiYXoKKyMKKworY2xhc3MgTm9kZQorICAgIGRl
ZiBhcm1WN0RvdWJsZUFkZHJlc3MobGlzdCkKKyAgICAgICAgc2VsZgorICAgIGVuZAorZW5kCisK
K2NsYXNzIEJhc2VJbmRleAorICAgIGRlZiBhcm1WN0RvdWJsZUFkZHJlc3MobGlzdCkKKyAgICAg
ICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICBsaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibGVhcCIsIFtzZWxmLCB0bXBdKQorICAgICAgICBBZGRy
ZXNzLm5ldyhjb2RlT3JpZ2luLCB0bXAsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCisg
ICAgZW5kCitlbmQKKworZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNEb3VibGUobGlz
dCkKKyAgICBuZXdMaXN0ID0gW10KKyAgICBsaXN0LmVhY2ggeworICAgICAgICB8IG5vZGUgfAor
ICAgICAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICAgICAgICBjYXNlIG5vZGUu
b3Bjb2RlCisgICAgICAgICAgICB3aGVuICJsb2FkZCIKKyAgICAgICAgICAgICAgICBuZXdMaXN0
IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJsb2FkZCIsIFtub2RlLm9wZXJh
bmRzWzBdLmFybVY3RG91YmxlQWRkcmVzcyhuZXdMaXN0KSwgbm9kZS5vcGVyYW5kc1sxXV0pCisg
ICAgICAgICAgICB3aGVuICJzdG9yZWQiCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAic3RvcmVkIiwgW25vZGUub3BlcmFuZHNbMF0s
IG5vZGUub3BlcmFuZHNbMV0uYXJtVjdEb3VibGVBZGRyZXNzKG5ld0xpc3QpXSkKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgZW5k
CisgICAgfQorICAgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1pc3BsYWNlZCBp
bW1lZGlhdGVzLiBGb3IgZXhhbXBsZToKKyMKKyMgc3RvcmVpIDAsIFtmb29dCisjCisjIHdpbGwg
YmVjb21lOgorIworIyBtb3ZlIDAsIHRtcAorIyBzdG9yZWkgdG1wLCBbZm9vXQorIworCitkZWYg
YXJtVjdMb3dlck1pc3BsYWNlZEltbWVkaWF0ZXMobGlzdCkKKyAgICBuZXdMaXN0ID0gW10KKyAg
ICBsaXN0LmVhY2ggeworICAgICAgICB8IG5vZGUgfAorICAgICAgICBpZiBub2RlLmlzX2E/IElu
c3RydWN0aW9uCisgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICAgICAgICB3aGVu
ICJzdG9yZWkiLCAic3RvcmVwIgorICAgICAgICAgICAgICAgIG9wZXJhbmRzID0gbm9kZS5vcGVy
YW5kcworICAgICAgICAgICAgICAgIG5ld09wZXJhbmRzID0gW10KKyAgICAgICAgICAgICAgICBv
cGVyYW5kcy5lYWNoIHsKKyAgICAgICAgICAgICAgICAgICAgfCBvcGVyYW5kIHwKKyAgICAgICAg
ICAgICAgICAgICAgaWYgb3BlcmFuZC5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHRtcCA9IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5jb2RlT3Jp
Z2luLCAibW92ZSIsIFtvcGVyYW5kLCB0bXBdKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3
T3BlcmFuZHMgPDwgdG1wCisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG5ld09wZXJhbmRzIDw8IG9wZXJhbmQKKyAgICAgICAgICAgICAgICAgICAgZW5k
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIG5ld09wZXJhbmRzKQorICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAgICAg
ZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICBl
bmQKKyAgICB9CisgICAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWFsZm9ybWVk
IGltbWVkaWF0ZXMgZXhjZXB0IHdoZW4gdXNlZCBpbiBhICJtb3ZlIiBpbnN0cnVjdGlvbi4KKyMg
Rm9yIGV4YW1wbGU6CisjCisjIGFkZHAgNjQyNjQxLCBmb28KKyMKKyMgd2lsbCBiZWNvbWU6Cisj
CisjIG1vdmUgNjQyNjQxLCB0bXAKKyMgYWRkcCB0bXAsIGZvbworIworCitjbGFzcyBOb2RlCisg
ICAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgICAg
ICBtYXBDaGlsZHJlbiB7CisgICAgICAgICAgICB8IG5vZGUgfAorICAgICAgICAgICAgbm9kZS5h
cm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkKKyAgICAgICAgfQorICAg
IGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZElt
bWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitjbGFz
cyBCYXNlSW5kZXgKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNl
KGxpc3QpCisgICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJl
c3MKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisg
ICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgICBkZWYgYXJt
VjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgICAgIGlmIHZhbHVl
IDwgMCBvciB2YWx1ZSA+IDI1NQorICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2lu
LCA6Z3ByKQorICAgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwg
Im1vdmUiLCBbc2VsZiwgdG1wXSkKKyAgICAgICAgICAgIHRtcAorICAgICAgICBlbHNlCisgICAg
ICAgICAgICBzZWxmCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2RlZiBhcm1WN0xvd2Vy
TWFsZm9ybWVkSW1tZWRpYXRlcyhsaXN0KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3QuZWFj
aCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24K
KyAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgICAgICAgIHdoZW4gIm1vdmUiCisg
ICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgICAgICB3aGVuICJhZGRpIiwg
ImFkZHAiLCAiYWRkaXMiLCAic3ViaSIsICJzdWJwIiwgInN1YmlzIgorICAgICAgICAgICAgICAg
IGlmIG5vZGUub3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZAorICAgICAgICAgICAgICAg
ICAgICAgICAgbm9kZS5vcGVyYW5kc1swXS52YWx1ZSA8IDAgYW5kCisgICAgICAgICAgICAgICAg
ICAgICAgICBub2RlLm9wZXJhbmRzWzBdLnZhbHVlID49IDI1NSBhbmQKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgICAgICAgICAgICAgIGlm
IG5vZGUub3Bjb2RlID1+IC9hZGQvCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdPcGNvZGUg
PSAic3ViIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3Bjb2RlID0gImFkZCIgKyBub2RlLm9wY29kZVst
MS4uLTFdCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBuZXdM
aXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5ld09wY29kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ltbWVkaWF0ZS5uZXco
LW5vZGUub3BlcmFuZHNbMF0udmFsdWUpXSArIG5vZGUub3BlcmFuZHNbMS4uLTFdKQorICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLmFybVY3
TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0KQorICAgICAgICAgICAgICAg
IGVuZAorICAgICAgICAgICAgd2hlbiAibXVsaSIKKyAgICAgICAgICAgICAgICBpZiBub2RlLm9w
ZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgICAgICAgICB0bXAgPSBUbXAu
bmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1swXSwg
dG1wXSkKKyAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9k
ZS5jb2RlT3JpZ2luLCAibXVsaSIsIFt0bXBdICsgbm9kZS5vcGVyYW5kc1sxLi4tMV0pCisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUuYXJt
VjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QpCisgICAgICAgICAgICAg
ICAgZW5kCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2Rl
LmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0KQorICAgICAgICAg
ICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAg
ICBlbmQKKyAgICB9CisgICAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWlzcGxh
Y2VkIGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGU6CisjCisjIGFkZGkgZm9vLCBbYmFyXQorIworIyB3
aWxsIGJlY29tZToKKyMKKyMgbG9hZGkgW2Jhcl0sIHRtcAorIyBhZGRpIGZvbywgdG1wCisjIHN0
b3JlaSB0bXAsIFtiYXJdCisjCisjIEFub3RoZXIgZXhhbXBsZToKKyMKKyMgYWRkaSBbZm9vXSwg
YmFyCisjCisjIHdpbGwgYmVjb21lOgorIworIyBsb2FkaSBbZm9vXSwgdG1wCisjIGFkZGkgdG1w
LCBiYXIKKyMKKworZGVmIGFybVY3QXNSZWdpc3RlcihwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFu
ZCwgc3VmZml4LCBuZWVkU3RvcmUpCisgICAgcmV0dXJuIG9wZXJhbmQgdW5sZXNzIG9wZXJhbmQu
YWRkcmVzcz8KKyAgICAKKyAgICB0bXAgPSBUbXAubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgaWYg
c3VmZml4ID09ICJkIiB0aGVuIDpmcHIgZWxzZSA6Z3ByIGVuZCkKKyAgICBwcmVMaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJsb2FkIiArIHN1ZmZpeCwgW29wZXJh
bmQsIHRtcF0pCisgICAgaWYgbmVlZFN0b3JlCisgICAgICAgIHBvc3RMaXN0IDw8IEluc3RydWN0
aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJzdG9yZSIgKyBzdWZmaXgsIFt0bXAsIG9wZXJh
bmRdKQorICAgIGVuZAorICAgIHRtcAorZW5kCisKK2RlZiBhcm1WN0FzUmVnaXN0ZXJzKHByZUxp
c3QsIHBvc3RMaXN0LCBvcGVyYW5kcywgc3VmZml4KQorICAgIG5ld09wZXJhbmRzID0gW10KKyAg
ICBvcGVyYW5kcy5lYWNoX3dpdGhfaW5kZXggeworICAgICAgICB8IG9wZXJhbmQsIGluZGV4IHwK
KyAgICAgICAgbmV3T3BlcmFuZHMgPDwgYXJtVjdBc1JlZ2lzdGVyKHByZUxpc3QsIHBvc3RMaXN0
LCBvcGVyYW5kLCBzdWZmaXgsIGluZGV4ID09IG9wZXJhbmRzLnNpemUgLSAxKQorICAgIH0KKyAg
ICBuZXdPcGVyYW5kcworZW5kCisKK2RlZiBhcm1WN0xvd2VyTWlzcGxhY2VkQWRkcmVzc2VzKGxp
c3QpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlzdC5lYWNoIHsKKyAgICAgICAgfCBub2RlIHwK
KyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgICAgICAgcG9zdEluc3Ry
dWN0aW9ucyA9IFtdCisgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICAgICAgICB3
aGVuICJhZGRpIiwgImFkZHAiLCAiYWRkaXMiLCAiYW5kaSIsICJhbmRwIiwgImxzaGlmdGkiLCAi
bXVsaSIsICJuZWdpIiwgIm5vdGkiLCAib3JpIiwgIm9yaXMiLAorICAgICAgICAgICAgICAgICJv
cnAiLCAicnNoaWZ0aSIsICJ1cnNoaWZ0aSIsICJzdWJpIiwgInN1YnAiLCAic3ViaXMiLCAieG9y
aSIsICJ4b3JwIiwgL15iaS8sIC9eYnAvLCAvXmJ0aS8sCisgICAgICAgICAgICAgICAgL15idHAv
LCAvXmNpLywgL15jcC8sIC9edGkvCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywg
bm9kZS5vcGVyYW5kcywgImkiKSkKKyAgICAgICAgICAgIHdoZW4gImJiZXEiLCAiYmJuZXEiLCAi
YmJhIiwgImJiYWVxIiwgImJiYiIsICJiYmJlcSIsICJidGJvIiwgImJ0YnoiLCAiYnRibnoiLCAi
dGJ6IiwgInRibnoiLAorICAgICAgICAgICAgICAgICJ0Ym8iCisgICAgICAgICAgICAgICAgbmV3
TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwgcG9z
dEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImIiKSkKKyAgICAgICAgICAgIHdoZW4gImJi
Z3QiLCAiYmJndGVxIiwgImJibHQiLCAiYmJsdGVxIiwgImJ0YnMiLCAidGJzIgorICAgICAgICAg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcm1WN0FzUmVnaXN0ZXJzKG5l
d0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJicyIpKQorICAgICAgICAg
ICAgd2hlbiAiYWRkZCIsICJkaXZkIiwgInN1YmQiLCAibXVsZCIsICJzcXJ0ZCIsIC9eYmQvCisg
ICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2lu
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdp
c3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImQiKSkKKyAg
ICAgICAgICAgIHdoZW4gImptcCIsICJjYWxsIgorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbYXJtVjdBc1JlZ2lzdGVyKG5ld0xpc3QsIHBvc3RJbnN0cnVj
dGlvbnMsIG5vZGUub3BlcmFuZHNbMF0sICJwIiwgZmFsc2UpXSkKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICAgIGVuZAorICAgICAg
ICAgICAgbmV3TGlzdCArPSBwb3N0SW5zdHJ1Y3Rpb25zCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdAorZW5k
CisKKyMKKyMgTG93ZXJpbmcgb2YgcmVnaXN0ZXIgcmV1c2UgaW4gY29tcGFyZSBpbnN0cnVjdGlv
bnMuIEZvciBleGFtcGxlOgorIworIyBjaWVxIHQwLCB0MSwgdDAKKyMKKyMgd2lsbCBiZWNvbWU6
CisjCisjIG1vdiB0bXAsIHQwCisjIGNpZXEgdG1wLCB0MSwgdDAKKyMKKworZGVmIGFybVY3TG93
ZXJSZWdpc3RlclJldXNlKGxpc3QpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlzdC5lYWNoIHsK
KyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAg
ICAgICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgICAgICAgd2hlbiAiY2llcSIsICJjaW5l
cSIsICJjaWEiLCAiY2lhZXEiLCAiY2liIiwgImNpYmVxIiwgImNpZ3QiLCAiY2lndGVxIiwgImNp
bHQiLCAiY2lsdGVxIiwKKyAgICAgICAgICAgICAgICAiY3BlcSIsICJjcG5lcSIsICJjcGEiLCAi
Y3BhZXEiLCAiY3BiIiwgImNwYmVxIiwgImNwZ3QiLCAiY3BndGVxIiwgImNwbHQiLCAiY3BsdGVx
IiwKKyAgICAgICAgICAgICAgICAidGlvIiwgInRpcyIsICJ0aXoiLCAidGlueiIsICJ0Ym8iLCAi
dGJzIiwgInRieiIsICJ0Ym56IgorICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHMuc2l6
ZSA9PSAyCisgICAgICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0gPT0gbm9kZS5v
cGVyYW5kc1sxXQorICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhub2RlLmNv
ZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMF0sIHRt
cF0pCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhu
b2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbdG1wLCBub2RlLm9wZXJhbmRzWzFdXSkKKyAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8
PCBub2RlCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgcmFpc2UgIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgYXQgI3tu
b2RlLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgbm9kZS5vcGVyYW5kcy5zaXplID09IDMKKyAg
ICAgICAgICAgICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1swXSA9PSBub2RlLm9wZXJhbmRzWzJd
CisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwg
OmdwcikKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9y
aWdpbiwgbm9kZS5vcGNvZGUsIFt0bXAsIG5vZGUub3BlcmFuZHNbMV0sIG5vZGUub3BlcmFuZHNb
Ml1dKQorICAgICAgICAgICAgICAgICAgICBlbHNpZiBub2RlLm9wZXJhbmRzWzFdID09IG5vZGUu
b3BlcmFuZHNbMl0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcobm9kZS5j
b2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzFdLCB0
bXBdKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
bm9kZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgW25vZGUub3BlcmFuZHNbMF0sIHRtcCwgbm9k
ZS5vcGVyYW5kc1syXV0pCisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0
IDw8IG5vZGUKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdM
aXN0IDw8IG5vZGUKKyAgICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3QKK2VuZAorCisjCisj
IExlYSBzdXBwb3J0LgorIworCitjbGFzcyBBZGRyZXNzCisgICAgZGVmIGFybVY3RW1pdExlYShk
ZXN0aW5hdGlvbikKKyAgICAgICAgaWYgZGVzdGluYXRpb24gPT0gYmFzZQorICAgICAgICAgICAg
JGFzbS5wdXRzICJhZGRzICN7ZGVzdGluYXRpb24uYXJtVjdPcGVyYW5kfSwgXCMje29mZnNldC52
YWx1ZX0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICRhc20ucHV0cyAiYWRkcyAje2Rlc3Rp
bmF0aW9uLmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09wZXJhbmR9LCBcIyN7b2Zmc2V0LnZh
bHVlfSIKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgICAg
ZGVmIGFybVY3RW1pdExlYShkZXN0aW5hdGlvbikKKyAgICAgICAgcmFpc2UgIk1hbGZvcm1lZCBC
YXNlSW5kZXgsIG9mZnNldCBzaG91bGQgYmUgemVybyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1
bmxlc3Mgb2Zmc2V0LnZhbHVlID09IDAKKyAgICAgICAgJGFzbS5wdXRzICJhZGQudyAje2Rlc3Rp
bmF0aW9uLmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3
T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGVTaGlmdH0iCisgICAgZW5kCitlbmQKKworIyBGSVhNRTog
d2UgY291bGQgc3VwcG9ydCBBYnNvbHV0ZUFkZHJlc3MgZm9yIGxlYSwgYnV0IHdlIGRvbid0Lgor
CisjCisjIEFjdHVhbCBsb3dlcmluZyBjb2RlIGZvbGxvd3MuCisjCisKK2NsYXNzIFNlcXVlbmNl
CisgICAgZGVmIGxvd2VyQVJNdjcKKyAgICAgICAgbXlMaXN0ID0gQGxpc3QKKyAgICAgICAgCisg
ICAgICAgICMgVmVyaWZ5IHRoYXQgd2Ugd2lsbCBvbmx5IHNlZSBpbnN0cnVjdGlvbnMgYW5kIGxh
YmVscy4KKyAgICAgICAgbXlMaXN0LmVhY2ggeworICAgICAgICAgICAgfCBub2RlIHwKKyAgICAg
ICAgICAgIHVubGVzcyBub2RlLmlzX2E/IEluc3RydWN0aW9uIG9yCisgICAgICAgICAgICAgICAg
ICAgIG5vZGUuaXNfYT8gTGFiZWwgb3IKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5pc19hPyBM
b2NhbExhYmVsIG9yCisgICAgICAgICAgICAgICAgICAgIG5vZGUuaXNfYT8gU2tpcAorICAgICAg
ICAgICAgICAgIHJhaXNlICJVbmV4cGVjdGVkICN7bm9kZS5pbnNwZWN0fSBhdCAje25vZGUuY29k
ZU9yaWdpbn0iIAorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IG15TGlzdCA9IGFybVY3TG93ZXJCcmFuY2hPcHMobXlMaXN0KQorICAgICAgICBteUxpc3QgPSBh
cm1WN0xvd2VyU2hpZnRPcHMobXlMaXN0KQorICAgICAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWFs
Zm9ybWVkQWRkcmVzc2VzKG15TGlzdCkKKyAgICAgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1hbGZv
cm1lZEFkZHJlc3Nlc0RvdWJsZShteUxpc3QpCisgICAgICAgIG15TGlzdCA9IGFybVY3TG93ZXJN
aXNwbGFjZWRJbW1lZGlhdGVzKG15TGlzdCkKKyAgICAgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1h
bGZvcm1lZEltbWVkaWF0ZXMobXlMaXN0KQorICAgICAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWlz
cGxhY2VkQWRkcmVzc2VzKG15TGlzdCkKKyAgICAgICAgbXlMaXN0ID0gYXJtVjdMb3dlclJlZ2lz
dGVyUmV1c2UobXlMaXN0KQorICAgICAgICBteUxpc3QgPSBhc3NpZ25SZWdpc3RlcnNUb1RlbXBv
cmFyaWVzKG15TGlzdCwgOmdwciwgQVJNdjdfRVhUUkFfR1BSUykKKyAgICAgICAgbXlMaXN0ID0g
YXNzaWduUmVnaXN0ZXJzVG9UZW1wb3JhcmllcyhteUxpc3QsIDpmcHIsIEFSTXY3X0VYVFJBX0ZQ
UlMpCisgICAgICAgIG15TGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgbm9kZSB8CisgICAgICAg
ICAgICBub2RlLmxvd2VyKCJBUk12NyIpCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitkZWYg
YXJtVjdPcGVyYW5kcyhvcGVyYW5kcykKKyAgICBvcGVyYW5kcy5tYXB7fHZ8IHYuYXJtVjdPcGVy
YW5kfS5qb2luKCIsICIpCitlbmQKKworZGVmIGFybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRz
KQorICAgIGFybVY3T3BlcmFuZHMoW29wZXJhbmRzWy0xXV0gKyBvcGVyYW5kc1swLi4tMl0pCitl
bmQKKworZGVmIGVtaXRBcm1WN0NvbXBhY3Qob3Bjb2RlMiwgb3Bjb2RlMywgb3BlcmFuZHMpCisg
ICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGUzfSAj
e2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgZWxzZQorICAgICAgICByYWlz
ZSB1bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5k
c1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVk
aWF0ZQorICAgICAgICAgICAgJGFzbS5wdXRzICIje29wY29kZTN9ICN7b3BlcmFuZHNbMV0uYXJt
VjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFy
bVY3T3BlcmFuZH0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICRhc20ucHV0cyAiI3tvcGNv
ZGUyfSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIGVuZAorICAg
IGVuZAorZW5kCisKK2RlZiBlbWl0QXJtVjcob3Bjb2RlLCBvcGVyYW5kcykKKyAgICBpZiBvcGVy
YW5kcy5zaXplID09IDMKKyAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3thcm1WN0ZsaXBw
ZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9w
ZXJhbmRzLnNpemUgPT0gMgorICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRz
WzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1swXS5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorZW5kCisKK2RlZiBlbWl0QXJtVjdEb3VibGVC
cmFuY2goYnJhbmNoT3Bjb2RlLCBvcGVyYW5kcykKKyAgICAkYXNtLnB1dHMgInZjbXBlLmY2NCAj
e2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAkYXNtLnB1dHMgInZtcnMgYXBz
cl9uemN2LCBmcHNjciIKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRz
WzJdLmFzbUxhYmVsfSIKK2VuZAorCitkZWYgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgICB2
YWx1ZSA9IG9wZXJhbmRzWzBdCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiAyCisg
ICAgICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAgIHdoZW4gMwor
ICAgICAgICBtYXNrID0gb3BlcmFuZHNbMV0KKyAgICBlbHNlCisgICAgICAgIHJhaXNlICJFeHBl
Y3RlZCAyIG9yIDMgb3BlcmFuZHMgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9y
aWdpblN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAgaWYgbWFzay5pc19hPyBJbW1lZGlhdGUg
YW5kIG1hc2sudmFsdWUgPT0gLTEKKyAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3t2YWx1ZS5hcm1W
N09wZXJhbmR9LCAje3ZhbHVlLmFybVY3T3BlcmFuZH0iCisgICAgZWxzaWYgbWFzay5pc19hPyBJ
bW1lZGlhdGUKKyAgICAgICAgJGFzbS5wdXRzICJ0c3QudyAje3ZhbHVlLmFybVY3T3BlcmFuZH0s
ICN7bWFzay5hcm1WN09wZXJhbmR9IgorICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJ0c3Qg
I3t2YWx1ZS5hcm1WN09wZXJhbmR9LCAje21hc2suYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKK2Vu
ZAorCitkZWYgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgY29kZSkKKyAgICAkYXNtLnB1dHMg
Im1vdnMgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCBcIzAiCisgICAgJGFzbS5wdXRzICJj
bXAgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFu
ZH0iCisgICAgJGFzbS5wdXRzICJpdCAje2NvZGV9IgorICAgICRhc20ucHV0cyAibW92I3tjb2Rl
fSAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sIFwjMSIKK2VuZAorCitkZWYgZW1pdEFybVY3
VGVzdFNldChvcGVyYW5kcywgY29kZSkKKyAgICAkYXNtLnB1dHMgIm1vdnMgI3tvcGVyYW5kc1st
MV0uYXJtVjdPcGVyYW5kfSwgXCMwIgorICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgICAg
JGFzbS5wdXRzICJpdCAje2NvZGV9IgorICAgICRhc20ucHV0cyAibW92I3tjb2RlfSAje29wZXJh
bmRzWy0xXS5hcm1WN09wZXJhbmR9LCBcIzEiCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24KKyAg
ICBkZWYgbG93ZXJBUk12NworICAgICAgICAkYXNtLmNvbW1lbnQgY29kZU9yaWdpblN0cmluZwor
ICAgICAgICBjYXNlIG9wY29kZQorICAgICAgICB3aGVuICJhZGRpIiwgImFkZHAiLCAiYWRkaXMi
CisgICAgICAgICAgICBpZiBvcGNvZGUgPT0gImFkZGlzIgorICAgICAgICAgICAgICAgIHN1ZmZp
eCA9ICJzIgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN1ZmZpeCA9ICIiCisg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3Bl
cmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9w
ZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgICAgICAgICByYWlzZSB1bmxlc3Mg
b3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgIGlmIG9wZXJhbmRz
WzBdLnZhbHVlID09IDAgYW5kIHN1ZmZpeC5lbXB0eT8KKyAgICAgICAgICAgICAgICAgICAgdW5s
ZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAgICAgICAgICAgICAk
YXNtLnB1dHMgIm1vdiAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0u
YXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZHMgI3tvcGVyYW5kc1syXS5h
cm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0u
YXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2lmIG9w
ZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAg
ICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAg
ICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAg
ICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZHMgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVy
YW5kcyl9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBd
LmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5l
dyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAkYXNtLnB1
dHMgImFkZHMgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICAgICAg
ICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICRh
c20ucHV0cyAiYWRkI3tzdWZmaXh9ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIK
KyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJhbmRp
IiwgImFuZHAiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYWN0KCJhbmRzIiwgImFuZCIsIG9w
ZXJhbmRzKQorICAgICAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgICAgICAgZW1pdEFybVY3
Q29tcGFjdCgib3JycyIsICJvcnIiLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAib3JpcyIKKyAg
ICAgICAgICAgIGVtaXRBcm1WN0NvbXBhY3QoIm9ycnMiLCAib3JycyIsIG9wZXJhbmRzKQorICAg
ICAgICB3aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYWN0KCJl
b3JzIiwgImVvciIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJsc2hpZnRpIgorICAgICAgICAg
ICAgZW1pdEFybVY3Q29tcGFjdCgibHNscyIsICJsc2xzIiwgb3BlcmFuZHMpCisgICAgICAgIHdo
ZW4gInJzaGlmdGkiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYWN0KCJhc3JzIiwgImFzcnMi
LCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICAgICAgICBlbWl0QXJt
VjdDb21wYWN0KCJsc3JzIiwgImxzcnMiLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAibXVsaSIK
KyAgICAgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMiBvciBvcGVyYW5kc1swXSA9PSBvcGVy
YW5kc1syXSBvciBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAgIGVt
aXRBcm1WNygibXVscyIsIG9wZXJhbmRzKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICRhc20ucHV0cyAibW92ICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgICAgICRhc20ucHV0cyAibXVscyAje29w
ZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tv
cGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4g
InN1YmkiLCAic3VicCIsICJzdWJpcyIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhY3QoInN1
YnMiLCAic3VicyIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJuZWdpIgorICAgICAgICAgICAg
JGFzbS5wdXRzICJyc2JzICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sw
XS5hcm1WN09wZXJhbmR9LCBcIzAiCisgICAgICAgIHdoZW4gIm5vdGkiCisgICAgICAgICAgICAk
YXNtLnB1dHMgIm12bnMgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBd
LmFybVY3T3BlcmFuZH0iCisgICAgICAgIHdoZW4gImxvYWRpIiwgImxvYWRwIgorICAgICAgICAg
ICAgJGFzbS5wdXRzICJsZHIgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAg
ICAgICB3aGVuICJzdG9yZWkiLCAic3RvcmVwIgorICAgICAgICAgICAgJGFzbS5wdXRzICJzdHIg
I3thcm1WN09wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIHdoZW4gImxvYWRiIgorICAgICAg
ICAgICAgJGFzbS5wdXRzICJsZHJiICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIK
KyAgICAgICAgd2hlbiAibG9hZGJzIgorICAgICAgICAgICAgJGFzbS5wdXRzICJsZHJzYi53ICN7
YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAgd2hlbiAic3RvcmViIgor
ICAgICAgICAgICAgJGFzbS5wdXRzICJzdHJiICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kcyl9Igor
ICAgICAgICB3aGVuICJsb2FkaCIKKyAgICAgICAgICAgICRhc20ucHV0cyAibGRyaCAje2FybVY3
RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIHdoZW4gImxvYWRocyIKKyAgICAg
ICAgICAgICRhc20ucHV0cyAibGRyc2gudyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRz
KX0iCisgICAgICAgIHdoZW4gInN0b3JlaCIKKyAgICAgICAgICAgICRhc20ucHV0cyAic3RyaCAj
e2FybVY3T3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAgd2hlbiAibG9hZGQiCisgICAgICAg
ICAgICAkYXNtLnB1dHMgInZsZHIuNjQgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9
IgorICAgICAgICB3aGVuICJzdG9yZWQiCisgICAgICAgICAgICAkYXNtLnB1dHMgInZzdHIuNjQg
I3thcm1WN09wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIHdoZW4gImFkZGQiCisgICAgICAg
ICAgICBlbWl0QXJtVjcoInZhZGQuZjY0Iiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gImRpdmQi
CisgICAgICAgICAgICBlbWl0QXJtVjcoInZkaXYuZjY0Iiwgb3BlcmFuZHMpCisgICAgICAgIHdo
ZW4gInN1YmQiCisgICAgICAgICAgICBlbWl0QXJtVjcoInZzdWIuZjY0Iiwgb3BlcmFuZHMpCisg
ICAgICAgIHdoZW4gIm11bGQiCisgICAgICAgICAgICBlbWl0QXJtVjcoInZtdWwuZjY0Iiwgb3Bl
cmFuZHMpCisgICAgICAgIHdoZW4gInNxcnRkIgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2c3Fy
dC5mNjQgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICB3aGVuICJj
aTJkIgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMV0uYXJtVjdTaW5n
bGV9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAgICAgICAkYXNtLnB1dHMg
InZjdnQuZjY0LnMzMiAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0u
YXJtVjdTaW5nbGV9IgorICAgICAgICB3aGVuICJiZGVxIgorICAgICAgICAgICAgZW1pdEFybVY3
RG91YmxlQnJhbmNoKCJiZXEiLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAiYmRuZXEiCisgICAg
ICAgICAgICAkYXNtLnB1dHMgInZjbXBlLmY2NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4u
MV0pfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2NyIgorICAg
ICAgICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXEiKQorICAgICAg
ICAgICAgJGFzbS5wdXRzICJidnMgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNV
bm9yZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFu
ZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIkFSTXY3IikK
KyAgICAgICAgd2hlbiAiYmRndCIKKyAgICAgICAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgi
Ymd0Iiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgICAgICAgIGVtaXRB
cm1WN0RvdWJsZUJyYW5jaCgiYmdlIiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gImJkbHQiCisg
ICAgICAgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJtaSIsIG9wZXJhbmRzKQorICAgICAg
ICB3aGVuICJiZGx0ZXEiCisgICAgICAgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJscyIs
IG9wZXJhbmRzKQorICAgICAgICB3aGVuICJiZGVxdW4iCisgICAgICAgICAgICAkYXNtLnB1dHMg
InZjbXBlLmY2NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAg
ICRhc20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2NyIgorICAgICAgICAgICAgJGFzbS5wdXRz
ICJidnMgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImJl
cSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYmRuZXF1biIKKyAgICAg
ICAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYm5lIiwgb3BlcmFuZHMpCisgICAgICAgIHdo
ZW4gImJkZ3R1biIKKyAgICAgICAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmhpIiwgb3Bl
cmFuZHMpCisgICAgICAgIHdoZW4gImJkZ3RlcXVuIgorICAgICAgICAgICAgZW1pdEFybVY3RG91
YmxlQnJhbmNoKCJicGwiLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAiYmRsdHVuIgorICAgICAg
ICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJibHQiLCBvcGVyYW5kcykKKyAgICAgICAgd2hl
biAiYmRsdGVxdW4iCisgICAgICAgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJsZSIsIG9w
ZXJhbmRzKQorICAgICAgICB3aGVuICJidGQyaSIKKyAgICAgICAgICAgICMgRklYTUU6IG1heSBi
ZSBhIGdvb2QgaWRlYSB0byBqdXN0IGdldCByaWQgb2YgdGhpcyBpbnN0cnVjdGlvbiwgc2luY2Ug
dGhlIGludGVycHJldGVyCisgICAgICAgICAgICAjIGN1cnJlbnRseSBkb2VzIG5vdCB1c2UgaXQu
CisgICAgICAgICAgICByYWlzZSAiQVJNdjcgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wY29kZSB5
ZXQsICN7Y29kZU9yaWdpbn0iCisgICAgICAgIHdoZW4gInRkMmkiCisgICAgICAgICAgICAkYXNt
LnB1dHMgInZjdnQuczMyLmY2NCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSwgI3tv
cGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2bW92ICN7
b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1Npbmds
ZX0iCisgICAgICAgIHdoZW4gImJjZDJpIgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2Y3Z0LnMz
Mi5mNjQgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0sICN7b3BlcmFuZHNbMF0uYXJt
VjdPcGVyYW5kfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzFdLmFy
bVY3T3BlcmFuZH0sICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJtVjdTaW5nbGV9IgorICAgICAgICAg
ICAgJGFzbS5wdXRzICJ2Y3Z0LmY2NC5zMzIgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN09wZXJh
bmR9LCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSIKKyAgICAgICAgICAgIGVtaXRB
cm1WN0RvdWJsZUJyYW5jaCgiYm5lIiwgW0FSTXY3X1NDUkFUQ0hfRlBSLCBvcGVyYW5kc1swXSwg
b3BlcmFuZHNbMl1dKQorICAgICAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5kc1sxXS5h
cm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgICAgICAgICAk
YXNtLnB1dHMgImJlcSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAibW92
ZHoiCisgICAgICAgICAgICAjIEZJWE1FOiBlaXRoZXIgc3VwcG9ydCB0aGlzIG9yIHJlbW92ZSBp
dC4KKyAgICAgICAgICAgIHJhaXNlICJBUk12NyBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3Bjb2Rl
IHlldCwgI3tjb2RlT3JpZ2lufSIKKyAgICAgICAgd2hlbiAicG9wIgorICAgICAgICAgICAgJGFz
bS5wdXRzICJwb3AgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICB3aGVuICJw
dXNoIgorICAgICAgICAgICAgJGFzbS5wdXRzICJwdXNoICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVy
YW5kfSIKKyAgICAgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6eGkycCIKKyAgICAgICAgICAg
IGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgICAgIGFybVY3TW92
ZUltbWVkaWF0ZShvcGVyYW5kc1swXS52YWx1ZSwgb3BlcmFuZHNbMV0pCisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJtb3YgI3thcm1WN0ZsaXBwZWRPcGVyYW5k
cyhvcGVyYW5kcyl9IgorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gIm5vcCIKKyAgICAg
ICAgICAgICRhc20ucHV0cyAibm9wIgorICAgICAgICB3aGVuICJiaWVxIiwgImJwZXEiLCAiYmJl
cSIKKyAgICAgICAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQor
ICAgICAgICAgICAgICAgICRhc20ucHV0cyAidHN0ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5k
fSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgZWxzaWYgSW1tZWRp
YXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzFdCisgICAgICAgICAgICAgICAgJGFzbS5wdXRz
ICJ0c3QgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3Bl
cmFuZH0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJjbXAg
I3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICAgICBlbmQKKyAgICAg
ICAgICAgICRhc20ucHV0cyAiYmVxICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3
aGVuICJiaW5lcSIsICJicG5lcSIsICJiYm5lcSIKKyAgICAgICAgICAgIGlmIEltbWVkaWF0ZS5u
ZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAidHN0
ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9
IgorICAgICAgICAgICAgZWxzaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzFd
CisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJh
bmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFd
KX0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFu
ZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJiaWEiLCAiYnBhIiwgImJiYSIKKyAgICAg
ICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9Igor
ICAgICAgICAgICAgJGFzbS5wdXRzICJiaGkgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAg
ICAgIHdoZW4gImJpYWVxIiwgImJwYWVxIiwgImJiYWVxIgorICAgICAgICAgICAgJGFzbS5wdXRz
ICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICAgICAkYXNt
LnB1dHMgImJocyAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYmliIiwg
ImJwYiIsICJiYmIiCisgICAgICAgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMo
b3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYmxvICN7b3BlcmFuZHNb
Ml0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJiaWJlcSIsICJicGJlcSIsICJiYmJlcSIKKyAg
ICAgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9
IgorICAgICAgICAgICAgJGFzbS5wdXRzICJibHMgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisg
ICAgICAgIHdoZW4gImJpZ3QiLCAiYnBndCIsICJiYmd0IgorICAgICAgICAgICAgJGFzbS5wdXRz
ICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICAgICAkYXNt
LnB1dHMgImJndCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYmlndGVx
IiwgImJwZ3RlcSIsICJiYmd0ZXEiCisgICAgICAgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3
T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYmdlICN7
b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJiaWx0IiwgImJwbHQiLCAiYmJs
dCIKKyAgICAgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1sw
Li4xXSl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJibHQgI3tvcGVyYW5kc1syXS5hc21MYWJl
bH0iCisgICAgICAgIHdoZW4gImJpbHRlcSIsICJicGx0ZXEiLCAiYmJsdGVxIgorICAgICAgICAg
ICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAg
ICAgICAgICAkYXNtLnB1dHMgImJsZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAg
d2hlbiAiYnRpeiIsICJidHB6IiwgImJ0YnoiCisgICAgICAgICAgICBlbWl0QXJtVjdUZXN0KG9w
ZXJhbmRzKQorICAgICAgICAgICAgJGFzbS5wdXRzICJiZXEgI3tvcGVyYW5kc1stMV0uYXNtTGFi
ZWx9IgorICAgICAgICB3aGVuICJidGlueiIsICJidHBueiIsICJidGJueiIKKyAgICAgICAgICAg
IGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgICAgICAgICAgICAkYXNtLnB1dHMgImJuZSAje29w
ZXJhbmRzWy0xXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImJ0aW8iLCAiYnRwbyIsICJidGJv
IgorICAgICAgICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgICAgICAgICAgICRhc20u
cHV0cyAiYnZzICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYnRpcyIs
ICJidHBzIiwgImJ0YnMiCisgICAgICAgICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICAg
ICAgICAgICAgJGFzbS5wdXRzICJibWkgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgorICAgICAg
ICB3aGVuICJqbXAiCisgICAgICAgICAgICBpZiBvcGVyYW5kc1swXS5sYWJlbD8KKyAgICAgICAg
ICAgICAgICAkYXNtLnB1dHMgImIgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJtb3YgcGMsICN7b3BlcmFuZHNbMF0u
YXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJjYWxsIgorICAg
ICAgICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAgICAgICAgICAgJGFzbS5wdXRz
ICJibHggI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgJGFzbS5wdXRzICJibHggI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAg
ICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gImJyZWFrIgorICAgICAgICAgICAgJGFzbS5wdXRz
ICJia3B0IgorICAgICAgICB3aGVuICJyZXQiCisgICAgICAgICAgICAkYXNtLnB1dHMgImJ4IGxy
IgorICAgICAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21w
YXJlKG9wZXJhbmRzLCAiZXEiKQorICAgICAgICB3aGVuICJjaW5lcSIsICJjcG5lcSIKKyAgICAg
ICAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJuZSIpCisgICAgICAgIHdoZW4gImNp
YSIsICJjcGEiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiaGkiKQor
ICAgICAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBh
cmUob3BlcmFuZHMsICJocyIpCisgICAgICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAgICAgICAg
ICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibG8iKQorICAgICAgICB3aGVuICJjaWJlcSIs
ICJjcGJlcSIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJscyIpCisg
ICAgICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhcmUo
b3BlcmFuZHMsICJndCIpCisgICAgICAgIHdoZW4gImNpZ3RlcSIsICJjcGd0ZXEiCisgICAgICAg
ICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiZ2UiKQorICAgICAgICB3aGVuICJjaWx0
IiwgImNwbHQiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibHQiKQor
ICAgICAgICB3aGVuICJjaWx0ZXEiLCAiY3BsdGVxIgorICAgICAgICAgICAgZW1pdEFybVY3Q29t
cGFyZShvcGVyYW5kcywgImxlIikKKyAgICAgICAgd2hlbiAidGlvIiwgInRibyIKKyAgICAgICAg
ICAgIGVtaXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMsICJ2cyIpCisgICAgICAgIHdoZW4gInRpcyIs
ICJ0YnMiCisgICAgICAgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAibWkiKQorICAg
ICAgICB3aGVuICJ0aXoiLCAidGJ6IgorICAgICAgICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVy
YW5kcywgImVxIikKKyAgICAgICAgd2hlbiAidGlueiIsICJ0Ym56IgorICAgICAgICAgICAgZW1p
dEFybVY3VGVzdFNldChvcGVyYW5kcywgIm5lIikKKyAgICAgICAgd2hlbiAicGVlayIKKyAgICAg
ICAgICAgICRhc20ucHV0cyAibGRyICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgW3NwLCBc
IyN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fV0iCisgICAgICAgIHdoZW4gInBva2UiCisgICAgICAg
ICAgICAkYXNtLnB1dHMgInN0ciAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sIFtzcCwgXCMj
e29wZXJhbmRzWzBdLnZhbHVlICogNH1dIgorICAgICAgICB3aGVuICJmaWkyZCIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFu
ZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAg
ICB3aGVuICJmZDJpaSIKKyAgICAgICAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzFd
LmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sw
XS5hcm1WN09wZXJhbmR9IgorICAgICAgICB3aGVuICJibyIKKyAgICAgICAgICAgICRhc20ucHV0
cyAiYnZzICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJicyIKKyAgICAg
ICAgICAgICRhc20ucHV0cyAiYm1pICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgICB3
aGVuICJieiIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYmVxICN7b3BlcmFuZHNbMF0uYXNtTGFi
ZWx9IgorICAgICAgICB3aGVuICJibnoiCisgICAgICAgICAgICAkYXNtLnB1dHMgImJuZSAje29w
ZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAibGVhaSIsICJsZWFwIgorICAgICAg
ICAgICAgb3BlcmFuZHNbMF0uYXJtVjdFbWl0TGVhKG9wZXJhbmRzWzFdKQorICAgICAgICB3aGVu
ICJzbXVsbGkiCisgICAgICAgICAgICByYWlzZSAiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyB0
byBzbXVsbCBpbiAje3NlbGYuaW5zcGVjdH0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNz
IG9wZXJhbmRzLmxlbmd0aCA9PSA0CisgICAgICAgICAgICAkYXNtLnB1dHMgInNtdWxsICN7b3Bl
cmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1szXS5hcm1WN09wZXJhbmR9LCAje29w
ZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIlVuaGFuZGxlZCBvcGNvZGUgI3tvcGNvZGV9
IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTcyIEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVx
dWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNldHMi
CityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZWxmX2hhc2giCityZXF1aXJlICJzZXR0aW5n
cyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworY2xhc3MgQXNzZW1ibGVyCisgICAgZGVmIGluaXRp
YWxpemUob3V0cCkKKyAgICAgICAgQG91dHAgPSBvdXRwCisgICAgICAgIEBzdGF0ZSA9IDpjcHAK
KyAgICAgICAgQGNvbW1lbnRTdGF0ZSA9IDpub25lCisgICAgICAgIEBjb21tZW50ID0gbmlsCisg
ICAgZW5kCisgICAgCisgICAgZGVmIGVudGVyQXNtCisgICAgICAgIEBvdXRwLnB1dHMgImFzbSAo
IgorICAgICAgICBAc3RhdGUgPSA6YXNtCisgICAgZW5kCisgICAgCisgICAgZGVmIGxlYXZlQXNt
CisgICAgICAgIHB1dHNMYXN0Q29tbWVudAorICAgICAgICBAb3V0cC5wdXRzICIpOyIKKyAgICAg
ICAgQHN0YXRlID0gOmNwcAorICAgIGVuZAorICAgIAorICAgIGRlZiBpbkFzbQorICAgICAgICBl
bnRlckFzbQorICAgICAgICB5aWVsZAorICAgICAgICBsZWF2ZUFzbQorICAgIGVuZAorICAgIAor
ICAgIGRlZiBsYXN0Q29tbWVudAorICAgICAgICBpZiBAY29tbWVudAorICAgICAgICAgICAgcmVz
dWx0ID0gIi8vICN7QGNvbW1lbnR9IgorICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQg
PSAiIgorICAgICAgICBlbmQKKyAgICAgICAgQGNvbW1lbnRTdGF0ZSA9IDpub25lCisgICAgICAg
IEBjb21tZW50ID0gbmlsCisgICAgICAgIHJlc3VsdAorICAgIGVuZAorICAgIAorICAgIGRlZiBw
dXRzTGFzdENvbW1lbnQKKyAgICAgICAgY29tbWVudCA9IGxhc3RDb21tZW50CisgICAgICAgIHVu
bGVzcyBjb21tZW50LmVtcHR5PworICAgICAgICAgICAgQG91dHAucHV0cyBjb21tZW50CisgICAg
ICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBwdXRzKCpsaW5lKQorICAgICAgICByYWlz
ZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICAgICAgQG91dHAucHV0cygiXCJcXHQiICsgbGlu
ZS5qb2luKCcnKSArICJcXG5cIiAje2xhc3RDb21tZW50fSIpCisgICAgZW5kCisgICAgCisgICAg
ZGVmIHByaW50KGxpbmUpCisgICAgICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAg
ICAgICBAb3V0cC5wcmludCgiXCIiICsgbGluZSArICJcIiIpCisgICAgZW5kCisgICAgCisgICAg
ZGVmIHB1dHNMYWJlbChsYWJlbE5hbWUpCisgICAgICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0g
OmFzbQorICAgICAgICBAb3V0cC5wdXRzKCJPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwoI3tsYWJl
bE5hbWV9KSAje2xhc3RDb21tZW50fSIpCisgICAgZW5kCisgICAgCisgICAgZGVmIHB1dHNMb2Nh
bExhYmVsKGxhYmVsTmFtZSkKKyAgICAgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisg
ICAgICAgIEBvdXRwLnB1dHMoIkxPQ0FMX0xBQkVMX1NUUklORygje2xhYmVsTmFtZX0pIFwiOlxc
blwiICN7bGFzdENvbW1lbnR9IikKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc2VsZi5sYWJlbFJl
ZmVyZW5jZShsYWJlbE5hbWUpCisgICAgICAgICJcIiBTWU1CT0xfU1RSSU5HKCN7bGFiZWxOYW1l
fSkgXCIiCisgICAgZW5kCisgICAgCisgICAgZGVmIHNlbGYubG9jYWxMYWJlbFJlZmVyZW5jZShs
YWJlbE5hbWUpCisgICAgICAgICJcIiBMT0NBTF9MQUJFTF9TVFJJTkcoI3tsYWJlbE5hbWV9KSBc
IiIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY29tbWVudCh0ZXh0KQorICAgICAgICBjYXNlIEBj
b21tZW50U3RhdGUKKyAgICAgICAgd2hlbiA6bm9uZQorICAgICAgICAgICAgQGNvbW1lbnQgPSB0
ZXh0CisgICAgICAgICAgICBAY29tbWVudFN0YXRlID0gOm9uZQorICAgICAgICB3aGVuIDpvbmUK
KyAgICAgICAgICAgIEBvdXRwLnB1dHMgIi8vICN7QGNvbW1lbnR9IgorICAgICAgICAgICAgQG91
dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgICAgICAgICAgIEBjb21tZW50ID0gbmlsCisgICAgICAg
ICAgICBAY29tbWVudFN0YXRlID0gOm1hbnkKKyAgICAgICAgd2hlbiA6bWFueQorICAgICAgICAg
ICAgQG91dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFp
c2UKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworYXNtRmlsZSA9IEFSR1Yuc2hpZnQKK29m
ZnNldHNGaWxlID0gQVJHVi5zaGlmdAorb3V0cHV0RmxubSA9IEFSR1Yuc2hpZnQKKworJHN0ZGVy
ci5wdXRzICJvZmZsaW5lYXNtOiBQYXJzaW5nICN7YXNtRmlsZX0gYW5kICN7b2Zmc2V0c0ZpbGV9
IGFuZCBjcmVhdGluZyBhc3NlbWJseSBmaWxlICN7b3V0cHV0RmxubX0uIgorCitvZmZzZXRzTGlz
dCwgY29uZmlnSW5kZXggPSBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KG9mZnNldHNGaWxl
KQoraW5wdXREYXRhID0gSU86OnJlYWQoYXNtRmlsZSkKKworaW5wdXRIYXNoID0KKyAgICAiLy8g
b2ZmbGluZWFzbSBpbnB1dCBoYXNoOiAiICsgRGlnZXN0OjpTSEExLmhleGRpZ2VzdChpbnB1dERh
dGEpICsKKyAgICAiICIgKyBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KChvZmZzZXRzTGlzdCArIFtj
b25maWdJbmRleF0pLmpvaW4oJyAnKSkgKworICAgICIgIiArIHNlbGZIYXNoCisKK2lmIEZpbGVU
ZXN0LmV4aXN0PyBvdXRwdXRGbG5tCisgICAgRmlsZS5vcGVuKG91dHB1dEZsbm0sICJyIikgewor
ICAgICAgICB8IGlucCB8CisgICAgICAgIGZpcnN0TGluZSA9IGlucC5nZXRzCisgICAgICAgIGlm
IGZpcnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09IGlucHV0SGFzaAorICAgICAgICAgICAg
JHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBOb3RoaW5nIGNoYW5nZWQuIgorICAgICAgICAgICAg
ZXhpdCAwCisgICAgICAgIGVuZAorICAgIH0KK2VuZAorCitGaWxlLm9wZW4ob3V0cHV0RmxubSwg
InciKSB7CisgICAgfCBvdXRwIHwKKyAgICAkb3V0cHV0ID0gb3V0cAorICAgICRvdXRwdXQucHV0
cyBpbnB1dEhhc2gKKyAgICAKKyAgICAkYXNtID0gQXNzZW1ibGVyLm5ldygkb3V0cHV0KQorICAg
IAorICAgIGFzdCA9IHBhcnNlKGxleChpbnB1dERhdGEpKQorICAgIAorICAgIGZvclNldHRpbmdz
KGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpW2NvbmZpZ0luZGV4XSwgYXN0KSB7Cisg
ICAgICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgICAg
ICBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgICAgICAgIGxvd0xldmVs
QVNUID0gbG93TGV2ZWxBU1QucmVzb2x2ZSgqYnVpbGRPZmZzZXRzTWFwKGxvd0xldmVsQVNULCBv
ZmZzZXRzTGlzdCkpCisgICAgICAgIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0
dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kKSB7CisgICAgICAgICAgICAkYXNtLmluQXNtIHsK
KyAgICAgICAgICAgICAgICBsb3dMZXZlbEFTVC5sb3dlcihiYWNrZW5kKQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgfQorfQorCiskc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IEFzc2Vt
Ymx5IGZpbGUgI3tvdXRwdXRGbG5tfSBzdWNjZXNzZnVsbHkgZ2VuZXJhdGVkLiIKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMDM5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjCisj
IEJhc2UgdXRpbGl0eSB0eXBlcyBmb3IgdGhlIEFTVC4KKyMKKworIyBWYWxpZCBtZXRob2RzIGZv
ciBOb2RlOgorIworIyBub2RlLmNoaWxkcmVuIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgaW1tZWRp
YXRlIGNoaWxkcmVuLgorIworIyBub2RlLmRlc2NlbmRlbnRzIC0+IFJldHVybnMgYW4gYXJyYXkg
b2YgYWxsIHN0cmljdCBkZXNjZW5kYW50cyAoY2hpbGRyZW4KKyMgICAgIGFuZCBjaGlsZHJlbiBv
ZiBjaGlsZHJlbiwgdHJhbnNpdGl2ZWx5KS4KKyMKKyMgbm9kZS5mbGF0dGVuIC0+IFJldHVybnMg
YW4gYXJyYXkgY29udGFpbmluZyB0aGUgc3RyaWN0IGRlc2NlbmRhbnRzIGFuZAorIyAgICAgdGhl
IG5vZGUgaXRzZWxmLgorIworIyBub2RlLmZpbHRlcih0eXBlKSAtPiBSZXR1cm5zIGFuIGFycmF5
IGNvbnRhaW5pbmcgdGhvc2UgZWxlbWVudHMgaW4KKyMgICAgIG5vZGUuZmxhdHRlbiB0aGF0IGFy
ZSBvZiB0aGUgZ2l2ZW4gdHlwZSAoaXNfYT8gdHlwZSByZXR1cm5zIHRydWUpLgorIworIyBub2Rl
Lm1hcENoaWxkcmVue3x2fCAuLi59IC0+IFJldHVybnMgYSBuZXcgbm9kZSB3aXRoIGFsbCBjaGls
ZHJlbgorIyAgICAgcmVwbGFjZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBibG9jay4KKyMKKyMg
RXhhbXBsZXM6CisjCisjIG5vZGUuZmlsdGVyKFNldHRpbmcpLnVuaXEgLT4gUmV0dXJucyBhbGwg
b2YgdGhlIHNldHRpbmdzIHRoYXQgdGhlIEFTVCdzCisjICAgICBJZlRoZW5FbHNlIGJsb2NrcyBk
ZXBlbmQgb24uCisjCisjIG5vZGUuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcSAtPiBSZXR1cm5z
IGFsbCBvZiB0aGUgc3RydWN0dXJlIG9mZnNldHMKKyMgICAgIHRoYXQgdGhlIEFTVCBkZXBlbmRz
IG9uLgorCitjbGFzcyBOb2RlCisgICAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAgICAKKyAg
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgICAgICBAY29kZU9yaWdpbiA9IGNvZGVP
cmlnaW4KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY29kZU9yaWdpblN0cmluZworICAgICAgICAi
bGluZSBudW1iZXIgI3tAY29kZU9yaWdpbn0iCisgICAgZW5kCisgICAgCisgICAgZGVmIGRlc2Nl
bmRhbnRzCisgICAgICAgIGNoaWxkcmVuLmNvbGxlY3R7fHZ8IHYuZmxhdHRlbn0uZmxhdHRlbgor
ICAgIGVuZAorICAgIAorICAgIGRlZiBmbGF0dGVuCisgICAgICAgIFtzZWxmXSArIGRlc2NlbmRh
bnRzCisgICAgZW5kCisgICAgCisgICAgZGVmIGZpbHRlcih0eXBlKQorICAgICAgICBmbGF0dGVu
LnNlbGVjdHt8dnwgdi5pc19hPyB0eXBlfQorICAgIGVuZAorZW5kCisKK2NsYXNzIE5vQ2hpbGRy
ZW4gPCBOb2RlCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICAgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRyZW4KKyAgICAgICAgW10K
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hpbGRyZW4KKyAgICAgICAgc2VsZgorICAgIGVu
ZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldEtleQorICAgIGF0dHJfcmVhZGVyIDpzdHJ1Y3Qs
IDpmaWVsZAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKHN0cnVjdCwgZmllbGQpCisgICAgICAg
IEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICAgICAgQGZpZWxkID0gZmllbGQKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgaGFzaAorICAgICAgICBAc3RydWN0Lmhhc2ggKyBAZmllbGQuaGFzaCAqIDMKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgZXFsPyhvdGhlcikKKyAgICAgICAgQHN0cnVjdCA9PSBvdGhl
ci5zdHJ1Y3QgYW5kIEBmaWVsZCA9PSBvdGhlci5maWVsZAorICAgIGVuZAorZW5kCisKKyMKKyMg
QVNUIG5vZGVzLgorIworCitjbGFzcyBTdHJ1Y3RPZmZzZXQgPCBOb0NoaWxkcmVuCisgICAgYXR0
cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAg
QHN0cnVjdCA9IHN0cnVjdAorICAgICAgICBAZmllbGQgPSBmaWVsZAorICAgIGVuZAorICAgIAor
ICAgIEBAbWFwcGluZyA9IHt9CisgICAgCisgICAgZGVmIHNlbGYuZm9yRmllbGQoY29kZU9yaWdp
biwgc3RydWN0LCBmaWVsZCkKKyAgICAgICAga2V5ID0gU3RydWN0T2Zmc2V0S2V5Lm5ldyhzdHJ1
Y3QsIGZpZWxkKQorICAgICAgICAKKyAgICAgICAgdW5sZXNzIEBAbWFwcGluZ1trZXldCisgICAg
ICAgICAgICBAQG1hcHBpbmdba2V5XSA9IFN0cnVjdE9mZnNldC5uZXcoY29kZU9yaWdpbiwgc3Ry
dWN0LCBmaWVsZCkKKyAgICAgICAgZW5kCisgICAgICAgIEBAbWFwcGluZ1trZXldCisgICAgZW5k
CisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIiN7c3RydWN0fTo6I3tmaWVsZH0iCisgICAg
ZW5kCisgICAgCisgICAgZGVmIDw9PihvdGhlcikKKyAgICAgICAgaWYgQHN0cnVjdCAhPSBvdGhl
ci5zdHJ1Y3QKKyAgICAgICAgICAgIHJldHVybiBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAg
ICAgICAgZW5kCisgICAgICAgIEBmaWVsZCA8PT4gb3RoZXIuZmllbGQKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
bGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8K
KyAgICAgICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAgICAgICAg
ZmFsc2UKKyAgICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YgPCBOb0NoaWxkcmVuCisgICAgYXR0
cl9yZWFkZXIgOnN0cnVjdAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0
cnVjdCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQHN0cnVjdCA9IHN0cnVj
dAorICAgIGVuZAorICAgIAorICAgIEBAbWFwcGluZyA9IHt9CisgICAgCisgICAgZGVmIHNlbGYu
Zm9yTmFtZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgICAgIHVubGVzcyBAQG1hcHBpbmdbc3Ry
dWN0XQorICAgICAgICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBTaXplb2YubmV3KGNvZGVPcmln
aW4sIHN0cnVjdCkKKyAgICAgICAgZW5kCisgICAgICAgIEBAbWFwcGluZ1tzdHJ1Y3RdCisgICAg
ZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgInNpemVvZiAje0BzdHJ1Y3R9IgorICAg
IGVuZAorICAgIAorICAgIGRlZiA8PT4ob3RoZXIpCisgICAgICAgIEBzdHJ1Y3QgPD0+IG90aGVy
LnN0cnVjdAorICAgIGVuZAorICAgIAorICAgIGRlZiBhZGRyZXNzPworICAgICAgICBmYWxzZQor
ICAgIGVuZAorICAgIAorICAgIGRlZiBsYWJlbD8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgaW1tZWRpYXRlPworICAgICAgICB0cnVlCisgICAgZW5kCisgICAgCisgICAg
ZGVmIHJlZ2lzdGVyPworICAgICAgICBmYWxzZQorICAgIGVuZAorZW5kCisKK2NsYXNzIEltbWVk
aWF0ZSA8IE5vQ2hpbGRyZW4KKyAgICBhdHRyX3JlYWRlciA6dmFsdWUKKyAgICAKKyAgICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICAgICAgQHZhbHVlID0gdmFsdWUKKyAgICAgICAgcmFpc2UgIkJhZCBpbW1lZGlhdGUgdmFs
dWUgI3t2YWx1ZS5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgdmFsdWUu
aXNfYT8gSW50ZWdlcgorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICIje3Zh
bHVlfSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgPT0ob3RoZXIpCisgICAgICAgIG90aGVyLmlz
X2E/IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUgPT0gQHZhbHVlCisgICAgZW5kCisgICAgCisg
ICAgZGVmIGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGxh
YmVsPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBpbW1lZGlhdGU/Cisg
ICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/CisgICAgICAgIGZh
bHNlCisgICAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAgICBhdHRy
X3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgbGVmdCwgcmlnaHQpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBsZWZ0
ID0gbGVmdAorICAgICAgICBAcmlnaHQgPSByaWdodAorICAgIGVuZAorICAgIAorICAgIGRlZiBj
aGlsZHJlbgorICAgICAgICBbQGxlZnQsIEByaWdodF0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICAgICAgQWRkSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxk
IEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAg
ICAgICAgIigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFi
ZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAg
ICAgICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAgICAgICAgZmFs
c2UKKyAgICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzIDwgTm9kZQorICAgIGF0dHJf
cmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBsZWZ0LCByaWdodCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQGxlZnQg
PSBsZWZ0CisgICAgICAgIEByaWdodCA9IHJpZ2h0CisgICAgZW5kCisgICAgCisgICAgZGVmIGNo
aWxkcmVuCisgICAgICAgIFtAbGVmdCwgQHJpZ2h0XQorICAgIGVuZAorICAgIAorICAgIGRlZiBt
YXBDaGlsZHJlbgorICAgICAgICBTdWJJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQg
QGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAg
ICAgICAiKCN7bGVmdC5kdW1wfSAtICN7cmlnaHQuZHVtcH0pIgorICAgIGVuZAorICAgIAorICAg
IGRlZiBhZGRyZXNzPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBsYWJl
bD8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaW1tZWRpYXRlPworICAg
ICAgICB0cnVlCisgICAgZW5kCisgICAgCisgICAgZGVmIHJlZ2lzdGVyPworICAgICAgICBmYWxz
ZQorICAgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMgPCBOb2RlCisgICAgYXR0cl9y
ZWFkZXIgOmxlZnQsIDpyaWdodAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGxlZnQsIHJpZ2h0KQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAbGVmdCA9
IGxlZnQKKyAgICAgICAgQHJpZ2h0ID0gcmlnaHQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hp
bGRyZW4KKyAgICAgICAgW0BsZWZ0LCBAcmlnaHRdCisgICAgZW5kCisgICAgCisgICAgZGVmIG1h
cENoaWxkcmVuCisgICAgICAgIE11bEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBA
bGVmdCksICh5aWVsZCBAcmlnaHQpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAg
ICAgICIoI3tsZWZ0LmR1bXB9ICogI3tyaWdodC5kdW1wfSkiCisgICAgZW5kCisgICAgCisgICAg
ZGVmIGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGxhYmVs
PworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBpbW1lZGlhdGU/CisgICAg
ICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/CisgICAgICAgIGZhbHNl
CisgICAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlIDwgTm9kZQorICAgIGF0dHJfcmVh
ZGVyIDpjaGlsZAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQor
ICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAY2hpbGQgPSBjaGlsZAorICAgIGVu
ZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBbQGNoaWxkXQorICAgIGVuZAorICAg
IAorICAgIGRlZiBtYXBDaGlsZHJlbgorICAgICAgICBOZWdJbW1lZGlhdGUubmV3KGNvZGVPcmln
aW4sICh5aWVsZCBAY2hpbGQpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAg
ICIoLSN7QGNoaWxkLmR1bXB9KSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAg
ICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNl
CisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAgdHJ1ZQorICAgIGVu
ZAorICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKK2VuZAor
CitjbGFzcyBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICAgIGF0dHJfcmVhZGVyIDpuYW1lCisg
ICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICAgICAgQG5hbWUgPSBuYW1lCisgICAgZW5kCisgICAgCisgICAgQEBt
YXBwaW5nID0ge30KKyAgICAKKyAgICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgICAgICAgIEBAbWFwcGluZ1tu
YW1lXSA9IFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVuZAorICAg
ICAgICBAQG1hcHBpbmdbbmFtZV0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAg
ICBuYW1lCisgICAgZW5kCisgICAgCisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisg
ICAgZW5kCisgICAgCisgICAgZGVmIGxhYmVsPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAg
IAorICAgIGRlZiBpbW1lZGlhdGU/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAg
ZGVmIHJlZ2lzdGVyPworICAgICAgICB0cnVlCisgICAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdp
c3RlcklEIDwgTm9DaGlsZHJlbgorICAgIGF0dHJfcmVhZGVyIDpuYW1lCisgICAgCisgICAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICAgICAgQG5hbWUgPSBuYW1lCisgICAgZW5kCisgICAgCisgICAgQEBtYXBwaW5nID0ge30K
KyAgICAKKyAgICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIHVu
bGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgICAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IEZQUmVn
aXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBAbWFw
cGluZ1tuYW1lXQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgIG5hbWUKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVm
IGltbWVkaWF0ZT8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0
ZXI/CisgICAgICAgIHRydWUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZSA8IE5vQ2hp
bGRyZW4KKyAgICBhdHRyX3JlYWRlciA6bmFtZQorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBuYW1l
ID0gbmFtZQorICAgIGVuZAorICAgIAorICAgIEBAbWFwcGluZyA9IHt9CisgICAgCisgICAgZGVm
IHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICB1bmxlc3MgQEBtYXBwaW5n
W25hbWVdCisgICAgICAgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBWYXJpYWJsZS5uZXcoY29kZU9y
aWdpbiwgbmFtZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBAbWFwcGluZ1tuYW1lXQorICAgIGVu
ZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgIG5hbWUKKyAgICBlbmQKK2VuZAorCitjbGFz
cyBBZGRyZXNzIDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpiYXNlLCA6b2Zmc2V0CisgICAgCisg
ICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwgb2Zmc2V0KQorICAgICAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgICAgICBAYmFzZSA9IGJhc2UKKyAgICAgICAgQG9mZnNldCA9IG9m
ZnNldAorICAgICAgICByYWlzZSAiQmFkIGJhc2UgZm9yIGFkZHJlc3MgI3tiYXNlLmluc3BlY3R9
IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBiYXNlLmlzX2E/IFZhcmlhYmxlIG9yIGJh
c2UucmVnaXN0ZXI/CisgICAgICAgIHJhaXNlICJCYWQgb2Zmc2V0IGZvciBhZGRyZXNzICN7b2Zm
c2V0Lmluc3BlY3R9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBvZmZzZXQuaXNfYT8g
VmFyaWFibGUgb3Igb2Zmc2V0LmltbWVkaWF0ZT8KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hp
bGRyZW4KKyAgICAgICAgW0BiYXNlLCBAb2Zmc2V0XQorICAgIGVuZAorICAgIAorICAgIGRlZiBt
YXBDaGlsZHJlbgorICAgICAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2Up
LCAoeWllbGQgQG9mZnNldCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAg
IiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfV0iCisgICAgZW5kCisgICAgCisgICAgZGVmIGFk
ZHJlc3M/CisgICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAg
ICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAgZmFs
c2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/CisgICAgICAgIGZhbHNlCisgICAg
ZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpiYXNl
LCA6aW5kZXgsIDpzY2FsZSwgOm9mZnNldAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAgICAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgICAgICBAYmFzZSA9IGJhc2UKKyAgICAgICAgQGluZGV4ID0gaW5kZXgKKyAgICAg
ICAgQHNjYWxlID0gc2NhbGUKKyAgICAgICAgcmFpc2UgdW5sZXNzIFsxLCAyLCA0LCA4XS5tZW1i
ZXI/IEBzY2FsZQorICAgICAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgICAgZW5kCisgICAgCisgICAg
ZGVmIHNjYWxlU2hpZnQKKyAgICAgICAgY2FzZSBzY2FsZQorICAgICAgICB3aGVuIDEKKyAgICAg
ICAgICAgIDAKKyAgICAgICAgd2hlbiAyCisgICAgICAgICAgICAxCisgICAgICAgIHdoZW4gNAor
ICAgICAgICAgICAgMgorICAgICAgICB3aGVuIDgKKyAgICAgICAgICAgIDMKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmFpc2UgIkJhZCBzY2FsZSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9Igor
ICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRyZW4KKyAgICAgICAgW0Bi
YXNlLCBAaW5kZXgsIEBvZmZzZXRdCisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxkcmVu
CisgICAgICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxk
IEBpbmRleCksIEBzY2FsZSwgKHlpZWxkIEBvZmZzZXQpKQorICAgIGVuZAorICAgIAorICAgIGRl
ZiBkdW1wCisgICAgICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH0sICN7aW5kZXguZHVt
cH0sICN7c2NhbGV9XSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAg
dHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiBsYWJlbD8KKyAgICAgICAgZmFsc2UKKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgaW1tZWRpYXRlPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAg
IAorICAgIGRlZiByZWdpc3Rlcj8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKK2VuZAorCitjbGFz
cyBBYnNvbHV0ZUFkZHJlc3MgPCBOb0NoaWxkcmVuCisgICAgYXR0cl9yZWFkZXIgOmFkZHJlc3MK
KyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBhZGRyZXNzKQorICAgICAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgZHVtcAorICAgICAgICAiI3thZGRyZXNzLmR1bXB9W10iCisgICAgZW5kCisg
ICAgCisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0
ZT8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/CisgICAg
ICAgIGZhbHNlCisgICAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24gPCBOb2RlCisgICAg
YXR0cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisgICAgCisgICAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgb3Bjb2RlLCBvcGVyYW5kcykKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICAgICAgQG9wY29kZSA9IG9wY29kZQorICAgICAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcwor
ICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBvcGVyYW5kcworICAgIGVu
ZAorICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICAgICAgSW5zdHJ1Y3Rpb24u
bmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICAgIGVuZAor
ICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICJcdCIgKyBvcGNvZGUudG9fcyArICIgIiArIG9w
ZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKQorICAgIGVuZAorZW5kCisKK2Ns
YXNzIEVycm9yIDwgTm9DaGlsZHJlbgorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisg
ICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAg
ICAgICAgIlx0ZXJyb3IiCisgICAgZW5kCitlbmQKKworY2xhc3MgQ29uc3REZWNsIDwgTm9kZQor
ICAgIGF0dHJfcmVhZGVyIDp2YXJpYWJsZSwgOnZhbHVlCisgICAgCisgICAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgICAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgICAgICBAdmFyaWFibGUgPSB2YXJpYWJsZQorICAgICAgICBAdmFsdWUgPSB2YWx1ZQor
ICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBbQHZhcmlhYmxlLCBAdmFs
dWVdCisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxkcmVuCisgICAgICAgIENvbnN0RGVj
bC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEB2YXJpYWJsZSksICh5aWVsZCBAdmFsdWUpKQorICAg
IGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICJjb25zdCAje0B2YXJpYWJsZS5kdW1w
fSA9ICN7QHZhbHVlLmR1bXB9IgorICAgIGVuZAorZW5kCisKKyRsYWJlbE1hcHBpbmcgPSB7fQor
CitjbGFzcyBMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgICBhdHRyX3JlYWRlciA6bmFtZQorICAgIAor
ICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIHN1cGVyKGNvZGVP
cmlnaW4pCisgICAgICAgIEBuYW1lID0gbmFtZQorICAgIGVuZAorICAgIAorICAgIGRlZiBzZWxm
LmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgaWYgJGxhYmVsTWFwcGluZ1tuYW1l
XQorICAgICAgICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9IiB1bmxl
c3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMYWJlbAorICAgICAgICBlbHNlCisgICAgICAg
ICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisg
ICAgICAgIGVuZAorICAgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgZW5kCisgICAgCisg
ICAgZGVmIGR1bXAKKyAgICAgICAgIiN7bmFtZX06IgorICAgIGVuZAorZW5kCisKK2NsYXNzIExv
Y2FsTGFiZWwgPCBOb0NoaWxkcmVuCisgICAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgICAKKyAgICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgICAgICBAbmFtZSA9IG5hbWUKKyAgICBlbmQKKworICAgIEBAdW5pcXVlTmFtZUNvdW50
ZXIgPSAwCisgICAgCisgICAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAg
ICAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICAgICAgICByYWlzZSAiTGFiZWwgbmFt
ZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExv
Y2FsTGFiZWwKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9
IExvY2FsTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVuZAorICAgICAgICAk
bGFiZWxNYXBwaW5nW25hbWVdCisgICAgZW5kCisgICAgCisgICAgZGVmIHNlbGYudW5pcXVlKGNv
bW1lbnQpCisgICAgICAgIG5ld05hbWUgPSAiXyN7Y29tbWVudH0iCisgICAgICAgIGlmICRsYWJl
bE1hcHBpbmdbbmV3TmFtZV0KKyAgICAgICAgICAgIHdoaWxlICRsYWJlbE1hcHBpbmdbbmV3TmFt
ZSA9ICJfI3tAQHVuaXF1ZU5hbWVDb3VudGVyfV8je2NvbW1lbnR9Il0KKyAgICAgICAgICAgICAg
ICBAQHVuaXF1ZU5hbWVDb3VudGVyICs9IDEKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbmQK
KyAgICAgICAgZm9yTmFtZShuaWwsIG5ld05hbWUpCisgICAgZW5kCisgICAgCisgICAgZGVmIGNs
ZWFuTmFtZQorICAgICAgICBpZiBuYW1lID1+IC9eXC4vCisgICAgICAgICAgICAiXyIgKyBuYW1l
WzEuLi0xXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBuYW1lCisgICAgICAgIGVuZAorICAg
IGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICIje25hbWV9OiIKKyAgICBlbmQKK2Vu
ZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZSA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6bGFiZWwK
KyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICAgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICAgICAgQGxhYmVsID0gbGFiZWwKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgY2hpbGRyZW4KKyAgICAgICAgW0BsYWJlbF0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICAgICAgTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVs
ZCBAbGFiZWwpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBuYW1lCisgICAgICAgIGxhYmVsLm5h
bWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICBsYWJlbC5uYW1lCisgICAg
ZW5kCisgICAgCisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAg
CisgICAgZGVmIGxhYmVsPworICAgICAgICB0cnVlCisgICAgZW5kCitlbmQKKworY2xhc3MgTG9j
YWxMYWJlbFJlZmVyZW5jZSA8IE5vQ2hpbGRyZW4KKyAgICBhdHRyX3JlYWRlciA6bGFiZWwKKyAg
ICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICAgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICAgICAgQGxhYmVsID0gbGFiZWwKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgY2hpbGRyZW4KKyAgICAgICAgW0BsYWJlbF0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFw
Q2hpbGRyZW4KKyAgICAgICAgTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEBsYWJlbCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIG5hbWUKKyAgICAgICAgbGFiZWwu
bmFtZQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgIGxhYmVsLm5hbWUKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIHRydWUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBT
ZXF1ZW5jZSA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6bGlzdAorICAgIAorICAgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGxpc3QpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
ICAgIEBsaXN0ID0gbGlzdAorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAg
ICBsaXN0CisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgICAg
ICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgQGxpc3QubWFwKCZwcm9jKSkKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgZHVtcAorICAgICAgICBsaXN0LmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigi
XG4iKQorICAgIGVuZAorZW5kCisKK2NsYXNzIFRydWUgPCBOb0NoaWxkcmVuCisgICAgZGVmIGlu
aXRpYWxpemUKKyAgICAgICAgc3VwZXIobmlsKQorICAgIGVuZAorICAgIAorICAgIEBAaW5zdGFu
Y2UgPSBUcnVlLm5ldworICAgIAorICAgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgICAgIEBAaW5z
dGFuY2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgdmFsdWUKKyAgICAgICAgdHJ1ZQorICAgIGVu
ZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICJ0cnVlIgorICAgIGVuZAorZW5kCisKK2Ns
YXNzIEZhbHNlIDwgTm9DaGlsZHJlbgorICAgIGRlZiBpbml0aWFsaXplCisgICAgICAgIHN1cGVy
KG5pbCkKKyAgICBlbmQKKyAgICAKKyAgICBAQGluc3RhbmNlID0gRmFsc2UubmV3CisgICAgCisg
ICAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICAgICAgQEBpbnN0YW5jZQorICAgIGVuZAorICAgIAor
ICAgIGRlZiB2YWx1ZQorICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1w
CisgICAgICAgICJmYWxzZSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBUcnVlQ2xhc3MKKyAgICBk
ZWYgYXNOb2RlCisgICAgICAgIFRydWUuaW5zdGFuY2UKKyAgICBlbmQKK2VuZAorCitjbGFzcyBG
YWxzZUNsYXNzCisgICAgZGVmIGFzTm9kZQorICAgICAgICBGYWxzZS5pbnN0YW5jZQorICAgIGVu
ZAorZW5kCisKK2NsYXNzIFNldHRpbmcgPCBOb0NoaWxkcmVuCisgICAgYXR0cl9yZWFkZXIgOm5h
bWUKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAbmFtZSA9IG5hbWUKKyAgICBlbmQKKyAgICAKKyAg
ICBAQG1hcHBpbmcgPSB7fQorICAgIAorICAgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwg
bmFtZSkKKyAgICAgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgICAgICAgQEBtYXBw
aW5nW25hbWVdID0gU2V0dGluZy5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZW5kCisg
ICAgICAgIEBAbWFwcGluZ1tuYW1lXQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAg
ICAgIG5hbWUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBBbmQgPCBOb2RlCisgICAgYXR0cl9yZWFk
ZXIgOmxlZnQsIDpyaWdodAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxl
ZnQsIHJpZ2h0KQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAbGVmdCA9IGxl
ZnQKKyAgICAgICAgQHJpZ2h0ID0gcmlnaHQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRy
ZW4KKyAgICAgICAgW0BsZWZ0LCBAcmlnaHRdCisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENo
aWxkcmVuCisgICAgICAgIEFuZC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxk
IEByaWdodCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIigje2xlZnQu
ZHVtcH0gYW5kICN7cmlnaHQuZHVtcH0pIgorICAgIGVuZAorZW5kCisKK2NsYXNzIE9yIDwgTm9k
ZQorICAgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICAgICAgQGxlZnQgPSBsZWZ0CisgICAgICAgIEByaWdodCA9IHJpZ2h0CisgICAgZW5kCisgICAg
CisgICAgZGVmIGNoaWxkcmVuCisgICAgICAgIFtAbGVmdCwgQHJpZ2h0XQorICAgIGVuZAorICAg
IAorICAgIGRlZiBtYXBDaGlsZHJlbgorICAgICAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlpZWxk
IEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAg
ICAgICAgIigje2xlZnQuZHVtcH0gb3IgI3tyaWdodC5kdW1wfSkiCisgICAgZW5kCitlbmQKKwor
Y2xhc3MgTm90IDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAgIAorICAgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgICAgICBAY2hpbGQgPSBjaGlsZAorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgor
ICAgICAgICBbQGxlZnQsIEByaWdodF0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hpbGRy
ZW4KKyAgICAgICAgTm90Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICAiKG5vdCAje2NoaWxkLmR1bXB9KSIKKyAgICBl
bmQKK2VuZAorCitjbGFzcyBTa2lwIDwgTm9DaGlsZHJlbgorICAgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4pCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgZW5kCisgICAgCisgICAg
ZGVmIGR1bXAKKyAgICAgICAgIlx0c2tpcCIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJZlRoZW5F
bHNlIDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpwcmVkaWNhdGUsIDp0aGVuQ2FzZQorICAgIGF0
dHJfYWNjZXNzb3IgOmVsc2VDYXNlCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgcHJlZGljYXRlLCB0aGVuQ2FzZSkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAg
ICAgQHByZWRpY2F0ZSA9IHByZWRpY2F0ZQorICAgICAgICBAdGhlbkNhc2UgPSB0aGVuQ2FzZQor
ICAgICAgICBAZWxzZUNhc2UgPSBTa2lwLm5ldyhjb2RlT3JpZ2luKQorICAgIGVuZAorICAgIAor
ICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBpZiBAZWxzZUNhc2UKKyAgICAgICAgICAgIFtAcHJl
ZGljYXRlLCBAdGhlbkNhc2UsIEBlbHNlQ2FzZV0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
W0BwcmVkaWNhdGUsIEB0aGVuQ2FzZV0KKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgCisgICAg
ZGVmIG1hcENoaWxkcmVuCisgICAgICAgIElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sICh5aWVs
ZCBAcHJlZGljYXRlKSwgKHlpZWxkIEB0aGVuQ2FzZSksICh5aWVsZCBAZWxzZUNhc2UpKQorICAg
IGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICJpZiAje3ByZWRpY2F0ZS5kdW1wfVxu
IiArIHRoZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsgZWxzZUNhc2UuZHVtcCArICJcbmVuZCIK
KyAgICBlbmQKK2VuZAorCitjbGFzcyBNYWNybyA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6bmFt
ZSwgOnZhcmlhYmxlcywgOmJvZHkKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
ICAgIEBuYW1lID0gbmFtZQorICAgICAgICBAdmFyaWFibGVzID0gdmFyaWFibGVzCisgICAgICAg
IEBib2R5ID0gYm9keQorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBA
dmFyaWFibGVzICsgW0Bib2R5XQorICAgIGVuZAorICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbgor
ICAgICAgICBNYWNyby5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEB2YXJpYWJsZXMubWFwe3x2fCB5
aWVsZCB2fSwgKHlpZWxkIEBib2R5KSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAg
ICAgICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFibGVzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9p
bigiLCAiKSArICIpXG4iICsgYm9keS5kdW1wICsgIlxuZW5kIgorICAgIGVuZAorZW5kCisKK2Ns
YXNzIE1hY3JvQ2FsbCA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6bmFtZSwgOm9wZXJhbmRzCisg
ICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAg
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBuYW1lID0gbmFtZQorICAgICAgICBAb3Bl
cmFuZHMgPSBvcGVyYW5kcworICAgICAgICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAgICAg
IEBvcGVyYW5kcy5lYWNoe3x2fCByYWlzZSB1bmxlc3Mgdn0KKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgY2hpbGRyZW4KKyAgICAgICAgQG9wZXJhbmRzCisgICAgZW5kCisgICAgCisgICAgZGVmIG1h
cENoaWxkcmVuKCZwcm9jKQorICAgICAgICBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIEBuYW1l
LCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAg
ICAgICAiXHQje25hbWV9KCIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwg
IikgKyAiKSIKKyAgICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk2IEBA
CisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhcm12NyIK
K3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIng4NiIKKworQkFDS0VORFMgPQorICAgIFsKKyAgICAg
Ilg4NiIsCisgICAgICJBUk12NyIKKyAgICBdCisKKyMgS2VlcCB0aGUgc2V0IG9mIHdvcmtpbmcg
YmFja2VuZHMgc2VwYXJhdGUgZnJvbSB0aGUgc2V0IG9mIGJhY2tlbmRzIHRoYXQgbWlnaHQgYmUK
KyMgc3VwcG9ydGVkLiBUaGlzIGlzIGdyZWF0IGJlY2F1c2UgdGhlIEJBQ0tFTkRTIGxpc3QgaXMg
YWxtb3N0IGxpa2UgYSByZXNlcnZlZAorIyB3b3JkcyBsaXN0LCBpbiB0aGF0IGl0IGNhdXNlcyBz
ZXR0aW5ncyByZXNvbHV0aW9uIHRvIHRyZWF0IHRob3NlIHdvcmRzIHNwZWNpYWxseS4KKyMgSGVu
Y2UgdGhpcyBsZXRzIHVzIHNldCBhc2lkZSB0aGUgbmFtZSBvZiBhIGJhY2tlbmQgd2UgbWlnaHQg
d2FudCB0byBzdXBwb3J0IGluCisjIHRoZSBmdXR1cmUgd2hpbGUgbm90IGFjdHVhbGx5IHN1cHBv
cnRpbmcgdGhlIGJhY2tlbmQgeWV0LgorV09SS0lOR19CQUNLRU5EUyA9CisgICAgWworICAgICAi
WDg2IiwKKyAgICAgIkFSTXY3IgorICAgIF0KKworQkFDS0VORF9QQVRURVJOID0gUmVnZXhwLm5l
dygnXFxBKCcgKyBCQUNLRU5EUy5qb2luKCcpfCgnKSArICcpXFxaJykKKworY2xhc3MgTm9kZQor
ICAgIGRlZiBsb3dlcihuYW1lKQorICAgICAgICBzZW5kKCJsb3dlciIgKyBuYW1lKQorICAgIGVu
ZAorZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBsb3dlcigpIGZvciB0aG9zZSBub2RlcyB0aGF0IGFy
ZSBiYWNrZW5kLWFnbm9zdGljCisKK2NsYXNzIExhYmVsCisgICAgZGVmIGxvd2VyKG5hbWUpCisg
ICAgICAgICRhc20ucHV0c0xhYmVsKHNlbGYubmFtZVsxLi4tMV0pCisgICAgZW5kCitlbmQKKwor
Y2xhc3MgTG9jYWxMYWJlbAorICAgIGRlZiBsb3dlcihuYW1lKQorICAgICAgICAkYXNtLnB1dHNM
b2NhbExhYmVsICJfb2ZmbGluZWFzbV8je3NlbGYubmFtZVsxLi4tMV19IgorICAgIGVuZAorZW5k
CisKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgICAgZGVmIGFzbUxhYmVsCisgICAgICAgIEFzc2Vt
Ymxlci5sYWJlbFJlZmVyZW5jZShuYW1lWzEuLi0xXSkKKyAgICBlbmQKK2VuZAorCitjbGFzcyBM
b2NhbExhYmVsUmVmZXJlbmNlCisgICAgZGVmIGFzbUxhYmVsCisgICAgICAgIEFzc2VtYmxlci5s
b2NhbExhYmVsUmVmZXJlbmNlKCJfb2ZmbGluZWFzbV8iK25hbWVbMS4uLTFdKQorICAgIGVuZAor
ZW5kCisKK2NsYXNzIFNraXAKKyAgICBkZWYgbG93ZXIobmFtZSkKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBTZXF1ZW5jZQorICAgIGRlZiBsb3dlcihuYW1lKQorICAgICAgICBpZiByZXNwb25kX3Rv
PyAibG93ZXIje25hbWV9IgorICAgICAgICAgICAgc2VuZCgibG93ZXIje25hbWV9IikKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgQGxpc3QuZWFjaCB7CisgICAgICAgICAgICAgICAgfCBub2Rl
IHwKKyAgICAgICAgICAgICAgICBub2RlLmxvd2VyKG5hbWUpCisgICAgICAgICAgICB9CisgICAg
ICAgIGVuZAorICAgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRl
X29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTM2IEBACisjIS91
c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1
aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCity
ZXF1aXJlICJzZWxmX2hhc2giCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9y
bSIKKworaW5wdXRGbG5tID0gQVJHVi5zaGlmdAorb3V0cHV0RmxubSA9IEFSR1Yuc2hpZnQKKwor
JHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBQYXJzaW5nICN7aW5wdXRGbG5tfSBhbmQgY3JlYXRp
bmcgb2Zmc2V0IGV4dHJhY3RvciAje291dHB1dEZsbm19LiIKKworZGVmIGVtaXRNYWdpY051bWJl
cgorICAgIE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVhY2ggeworICAgICAgICB8IG51bWJlciB8Cisg
ICAgICAgICRvdXRwdXQucHV0cyAiI3tudW1iZXJ9LCIKKyAgICB9CitlbmQKKworaW5wdXREYXRh
ID0gSU86OnJlYWQoaW5wdXRGbG5tKQoraW5wdXRIYXNoID0gIi8vIG9mZmxpbmVhc20gaW5wdXQg
aGFzaDogI3tEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0YSl9ICN7c2VsZkhhc2h9Igor
CitpZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0RmxubQorICAgIEZpbGUub3BlbihvdXRwdXRGbG5t
LCAiciIpIHsKKyAgICAgICAgfCBpbnAgfAorICAgICAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cwor
ICAgICAgICBpZiBmaXJzdExpbmUgYW5kIGZpcnN0TGluZS5jaG9tcCA9PSBpbnB1dEhhc2gKKyAg
ICAgICAgICAgICRzdGRlcnIucHV0cyAib2ZmbGluZWFzbTogTm90aGluZyBjaGFuZ2VkLiIKKyAg
ICAgICAgICAgIGV4aXQgMAorICAgICAgICBlbmQKKyAgICB9CitlbmQKKworb3JpZ2luYWxBU1Qg
PSBwYXJzZShsZXgoaW5wdXREYXRhKSkKKworIworIyBPcHRpbWl6ZSB0aGUgQVNUIHRvIG1ha2Ug
Y29uZmlndXJhdGlvbiBleHRyYWN0aW9uIGZhc3Rlci4gVGhpcyByZWR1Y2VzIHRoZSBBU1QgdG8g
YSBmb3JtCisjIHRoYXQgb25seSBjb250YWlucyB0aGUgdGhpbmdzIHRoYXQgbWF0dGVyIGZvciBv
dXIgcHVycG9zZXM6IG9mZnNldHMsIHNpemVzLCBhbmQgaWYKKyMgc3RhdGVtZW50cy4KKyMKKwor
Y2xhc3MgTm9kZQorICAgIGRlZiBvZmZzZXRzUHJ1bmVUbyhzZXF1ZW5jZSkKKyAgICAgICAgY2hp
bGRyZW4uZWFjaCB7CisgICAgICAgICAgICB8IGNoaWxkIHwKKyAgICAgICAgICAgIGNoaWxkLm9m
ZnNldHNQcnVuZVRvKHNlcXVlbmNlKQorICAgICAgICB9CisgICAgZW5kCisgICAgCisgICAgZGVm
IG9mZnNldHNQcnVuZQorICAgICAgICByZXN1bHQgPSBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwg
W10pCisgICAgICAgIG9mZnNldHNQcnVuZVRvKHJlc3VsdCkKKyAgICAgICAgcmVzdWx0CisgICAg
ZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZQorICAgIGRlZiBvZmZzZXRzUHJ1bmVUbyhzZXF1
ZW5jZSkKKyAgICAgICAgaWZUaGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHBy
ZWRpY2F0ZSwgdGhlbkNhc2Uub2Zmc2V0c1BydW5lKQorICAgICAgICBpZlRoZW5FbHNlLmVsc2VD
YXNlID0gZWxzZUNhc2Uub2Zmc2V0c1BydW5lCisgICAgICAgIHNlcXVlbmNlLmxpc3QgPDwgaWZU
aGVuRWxzZQorICAgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldAorICAgIGRlZiBvZmZz
ZXRzUHJ1bmVUbyhzZXF1ZW5jZSkKKyAgICAgICAgc2VxdWVuY2UubGlzdCA8PCBzZWxmCisgICAg
ZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mCisgICAgZGVmIG9mZnNldHNQcnVuZVRvKHNlcXVlbmNl
KQorICAgICAgICBzZXF1ZW5jZS5saXN0IDw8IHNlbGYKKyAgICBlbmQKK2VuZAorCitwcnVuZWRB
U1QgPSBvcmlnaW5hbEFTVC5vZmZzZXRzUHJ1bmUKKworRmlsZS5vcGVuKG91dHB1dEZsbm0sICJ3
IikgeworICAgIHwgb3V0cCB8CisgICAgJG91dHB1dCA9IG91dHAKKyAgICBvdXRwLnB1dHMgaW5w
dXRIYXNoCisgICAgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKHBydW5lZEFTVCkgeworICAg
ICAgICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICAgICAgb2Zmc2V0c0xp
c3QgPSBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CisgICAgICAgIHNpemVzTGlz
dCA9IGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKKyAgICAgICAgCisgICAgICAgIGxlbmd0
aCA9IChPRkZTRVRfTUFHSUNfTlVNQkVSUy5zaXplICsgMSkgKiAoMSArIG9mZnNldHNMaXN0LnNp
emUgKyBzaXplc0xpc3Quc2l6ZSkKKyAgICAgICAgCisgICAgICAgIG91dHAucHV0cyAic3RhdGlj
IGNvbnN0IHVuc2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICAgICAgICBl
bWl0TWFnaWNOdW1iZXIKKyAgICAgICAgb3V0cC5wdXRzICIje2luZGV4fSwiCisgICAgICAgIG9m
ZnNldHNMaXN0LmVhY2ggeworICAgICAgICAgICAgfCBvZmZzZXQgfAorICAgICAgICAgICAgZW1p
dE1hZ2ljTnVtYmVyCisgICAgICAgICAgICBvdXRwLnB1dHMgIk9GRkxJTkVfQVNNX09GRlNFVE9G
KCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSksIgorICAgICAgICB9CisgICAgICAg
IHNpemVzTGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgb2Zmc2V0IHwKKyAgICAgICAgICAgIGVt
aXRNYWdpY051bWJlcgorICAgICAgICAgICAgb3V0cC5wdXRzICJzaXplb2YoI3tvZmZzZXQuc3Ry
dWN0fSksIgorICAgICAgICB9CisgICAgICAgIG91dHAucHV0cyAifTsiCisgICAgfQorfQorCisk
c3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IG9mZnNldCBleHRyYWN0b3IgI3tvdXRwdXRGbG5tfSBz
dWNjZXNzZnVsbHkgZ2VuZXJhdGVkLiIKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyMTcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMg
SW50ZXJlc3RpbmcgaW52YXJpYW50LCB3aGljaCB3ZSB0YWtlIGFkdmFudGFnZSBvZjogYnJhbmNo
aW5nIGluc3RydWN0aW9ucworIyBhbHdheXMgYmVnaW4gd2l0aCAiYiIsIGFuZCBubyBub24tYnJh
bmNoaW5nIGluc3RydWN0aW9ucyBiZWdpbiB3aXRoICJiIi4KKyMgVGVybWluYWwgaW5zdHJ1Y3Rp
b25zIGFyZSAiam1wIiBhbmQgInJldCIuCisKK01BQ1JPX0lOU1RSVUNUSU9OUyA9CisgICAgWwor
ICAgICAiYWRkaSIsCisgICAgICJhbmRpIiwKKyAgICAgImxzaGlmdGkiLAorICAgICAibXVsaSIs
CisgICAgICJuZWdpIiwKKyAgICAgIm5vdGkiLAorICAgICAib3JpIiwKKyAgICAgInJzaGlmdGki
LAorICAgICAidXJzaGlmdGkiLAorICAgICAic3ViaSIsCisgICAgICJ4b3JpIiwKKyAgICAgImxv
YWRpIiwKKyAgICAgImxvYWRiIiwKKyAgICAgImxvYWRicyIsCisgICAgICJsb2FkaCIsCisgICAg
ICJsb2FkaHMiLAorICAgICAic3RvcmVpIiwKKyAgICAgInN0b3JlYiIsCisgICAgICJsb2FkZCIs
CisgICAgICJtb3ZlZCIsCisgICAgICJzdG9yZWQiLAorICAgICAiYWRkZCIsCisgICAgICJkaXZk
IiwKKyAgICAgInN1YmQiLAorICAgICAibXVsZCIsCisgICAgICJzcXJ0ZCIsCisgICAgICJjaTJk
IiwKKyAgICAgImZpaTJkIiwgIyB1c2FnZTogZmlpMmQgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmlj
YW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPiwgPGZwcj4KKyAgICAg
ImZkMmlpIiwgIyB1c2FnZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2Fu
dCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4KKyAgICAgImJkZXEiLAor
ICAgICAiYmRuZXEiLAorICAgICAiYmRndCIsCisgICAgICJiZGd0ZXEiLAorICAgICAiYmRsdCIs
CisgICAgICJiZGx0ZXEiLAorICAgICAiYmRlcXVuIiwKKyAgICAgImJkbmVxdW4iLAorICAgICAi
YmRndHVuIiwKKyAgICAgImJkZ3RlcXVuIiwKKyAgICAgImJkbHR1biIsCisgICAgICJiZGx0ZXF1
biIsCisgICAgICJidGQyaSIsCisgICAgICJ0ZDJpIiwKKyAgICAgImJjZDJpIiwKKyAgICAgIm1v
dmR6IiwKKyAgICAgInBvcCIsCisgICAgICJwdXNoIiwKKyAgICAgIm1vdmUiLAorICAgICAic3hp
MnAiLAorICAgICAienhpMnAiLAorICAgICAibm9wIiwKKyAgICAgImJpZXEiLAorICAgICAiYmlu
ZXEiLAorICAgICAiYmlhIiwKKyAgICAgImJpYWVxIiwKKyAgICAgImJpYiIsCisgICAgICJiaWJl
cSIsCisgICAgICJiaWd0IiwKKyAgICAgImJpZ3RlcSIsCisgICAgICJiaWx0IiwKKyAgICAgImJp
bHRlcSIsCisgICAgICJiYmVxIiwKKyAgICAgImJibmVxIiwKKyAgICAgImJiYSIsCisgICAgICJi
YmFlcSIsCisgICAgICJiYmIiLAorICAgICAiYmJiZXEiLAorICAgICAiYmJndCIsCisgICAgICJi
Ymd0ZXEiLAorICAgICAiYmJsdCIsCisgICAgICJiYmx0ZXEiLAorICAgICAiYnRpbyIsCisgICAg
ICJidGlzIiwKKyAgICAgImJ0aXoiLAorICAgICAiYnRpbnoiLAorICAgICAiYnRibyIsCisgICAg
ICJidGJzIiwKKyAgICAgImJ0YnoiLAorICAgICAiYnRibnoiLAorICAgICAiam1wIiwKKyAgICAg
ImJhZGRpbyIsCisgICAgICJiYWRkaXMiLAorICAgICAiYmFkZGl6IiwKKyAgICAgImJhZGRpbnoi
LAorICAgICAiYnN1YmlvIiwKKyAgICAgImJzdWJpcyIsCisgICAgICJic3ViaXoiLAorICAgICAi
YnN1YmlueiIsCisgICAgICJibXVsaW8iLAorICAgICAiYm11bGlzIiwKKyAgICAgImJtdWxpeiIs
CisgICAgICJibXVsaW56IiwKKyAgICAgImJvcmlvIiwKKyAgICAgImJvcmlzIiwKKyAgICAgImJv
cml6IiwKKyAgICAgImJvcmlueiIsCisgICAgICJicmVhayIsCisgICAgICJjYWxsIiwKKyAgICAg
InJldCIsCisgICAgICJjaWVxIiwKKyAgICAgImNpbmVxIiwKKyAgICAgImNpYSIsCisgICAgICJj
aWFlcSIsCisgICAgICJjaWIiLAorICAgICAiY2liZXEiLAorICAgICAiY2lndCIsCisgICAgICJj
aWd0ZXEiLAorICAgICAiY2lsdCIsCisgICAgICJjaWx0ZXEiLAorICAgICAidGlvIiwKKyAgICAg
InRpcyIsCisgICAgICJ0aXoiLAorICAgICAidGlueiIsCisgICAgICJ0Ym8iLAorICAgICAidGJz
IiwKKyAgICAgInRieiIsCisgICAgICJ0Ym56IiwKKyAgICAgInBlZWsiLAorICAgICAicG9rZSIs
CisgICAgICJicGVxIiwKKyAgICAgImJwbmVxIiwKKyAgICAgImJwYSIsCisgICAgICJicGFlcSIs
CisgICAgICJicGIiLAorICAgICAiYnBiZXEiLAorICAgICAiYnBndCIsCisgICAgICJicGd0ZXEi
LAorICAgICAiYnBsdCIsCisgICAgICJicGx0ZXEiLAorICAgICAiYWRkcCIsCisgICAgICJhbmRw
IiwKKyAgICAgIm9ycCIsCisgICAgICJzdWJwIiwKKyAgICAgInhvcnAiLAorICAgICAibG9hZHAi
LAorICAgICAiY3BlcSIsCisgICAgICJjcG5lcSIsCisgICAgICJjcGEiLAorICAgICAiY3BhZXEi
LAorICAgICAiY3BiIiwKKyAgICAgImNwYmVxIiwKKyAgICAgImNwZ3QiLAorICAgICAiY3BndGVx
IiwKKyAgICAgImNwbHQiLAorICAgICAiY3BsdGVxIiwKKyAgICAgInN0b3JlcCIsCisgICAgICJi
dHBvIiwKKyAgICAgImJ0cHMiLAorICAgICAiYnRweiIsCisgICAgICJidHBueiIsCisgICAgICJi
YWRkcG8iLAorICAgICAiYmFkZHBzIiwKKyAgICAgImJhZGRweiIsCisgICAgICJiYWRkcG56IiwK
KyAgICAgImJvIiwKKyAgICAgImJzIiwKKyAgICAgImJ6IiwKKyAgICAgImJueiIsCisgICAgICJs
ZWFpIiwKKyAgICAgImxlYXAiLAorICAgIF0KKworWDg2X0lOU1RSVUNUSU9OUyA9CisgICAgWwor
ICAgICAiY2RxaSIsCisgICAgICJpZGl2aSIKKyAgICBdCisKK0FSTXY3X0lOU1RSVUNUSU9OUyA9
CisgICAgWworICAgICAic211bGxpIiwKKyAgICAgImFkZGlzIiwKKyAgICAgInN1YmlzIiwKKyAg
ICAgIm9yaXMiCisgICAgXQorCitJTlNUUlVDVElPTlMgPSBNQUNST19JTlNUUlVDVElPTlMgKyBY
ODZfSU5TVFJVQ1RJT05TICsgQVJNdjdfSU5TVFJVQ1RJT05TCisKK0lOU1RSVUNUSU9OX1BBVFRF
Uk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbignKXwoJykgKyAnKSlc
XFonKQorCitkZWYgaXNCcmFuY2goaW5zdHJ1Y3Rpb24pCisgICAgaW5zdHJ1Y3Rpb24gPX4gL15i
LworZW5kCisKK2RlZiBoYXNGYWxsVGhyb3VnaChpbnN0cnVjdGlvbikKKyAgICBpbnN0cnVjdGlv
biAhPSAicmV0IiBhbmQgaW5zdHJ1Y3Rpb24gIT0gImptcCIKK2VuZAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0
cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitN
QUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE1MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6
CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
IyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMiCisK
K09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworIwor
IyBvZmZzZXRzTGlzdChhc3QpCisjIHNpemVzTGlzdChhc3QpCisjCisjIFJldHVybnMgYSBsaXN0
IG9mIG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhlIEFTVC4KKyMKKworZGVmIG9mZnNldHNM
aXN0KGFzdCkKKyAgICBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CitlbmQKKwor
ZGVmIHNpemVzTGlzdChhc3QpCisgICAgYXN0LmZpbHRlcihTaXplb2YpLnVuaXEuc29ydAorZW5k
CisKKyMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChhc3QsIGZpbGUpIC0+CisjICAg
ICBbb2Zmc2V0cywgaW5kZXhdCisjCisjIFBhcnNlcyB0aGUgb2Zmc2V0cyBmcm9tIGEgZmlsZSBh
bmQgcmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgdGhlCisjIGluZGV4IG9mIHRoZSBjb25m
aWd1cmF0aW9uIHRoYXQgaXMgdmFsaWQgaW4gdGhpcyBidWlsZCB0YXJnZXQuCisjCisKK2RlZiBv
ZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUpCisgICAgaW5kZXggPSBuaWwKKyAgICBv
ZmZzZXRzID0gW10KKyAgICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBuaWwKKyAgICAKKyAgICBk
ZWYgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgIGJ5dGVzID0gW10KKyAgICAgICAg
NC50aW1lcyB7CisgICAgICAgICAgICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQorICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBpZiBlbmRpYW5uZXNzID09IDpsaXR0bGUKKyAgICAgICAgICAgICMg
TGl0dGxlIGVuZGlhbgorICAgICAgICAgICAgKGJ5dGVzWzBdIDw8IDAgfAorICAgICAgICAgICAg
IGJ5dGVzWzFdIDw8IDggfAorICAgICAgICAgICAgIGJ5dGVzWzJdIDw8IDE2IHwKKyAgICAgICAg
ICAgICBieXRlc1szXSA8PCAyNCkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgIyBCaWcgZW5k
aWFuCisgICAgICAgICAgICAoYnl0ZXNbMF0gPDwgMjQgfAorICAgICAgICAgICAgIGJ5dGVzWzFd
IDw8IDE2IHwKKyAgICAgICAgICAgICBieXRlc1syXSA8PCA4IHwKKyAgICAgICAgICAgICBieXRl
c1szXSA8PCAwKQorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBbOmxpdHRsZSwgOmJp
Z10uZWFjaCB7CisgICAgICAgIHwgZW5kaWFubmVzcyB8CisgICAgICAgIG1hZ2ljQnl0ZXMgPSBb
XQorICAgICAgICBNQUdJQ19OVU1CRVJTLmVhY2ggeworICAgICAgICAgICAgfCBudW1iZXIgfAor
ICAgICAgICAgICAgY3VycmVudEJ5dGVzID0gW10KKyAgICAgICAgICAgIDQudGltZXMgeworICAg
ICAgICAgICAgICAgIGN1cnJlbnRCeXRlcyA8PCAobnVtYmVyICYgMHhmZikKKyAgICAgICAgICAg
ICAgICBudW1iZXIgPj49IDgKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIGVuZGlhbm5l
c3MgPT0gOmJpZworICAgICAgICAgICAgICAgIGN1cnJlbnRCeXRlcy5yZXZlcnNlIQorICAgICAg
ICAgICAgZW5kCisgICAgICAgICAgICBtYWdpY0J5dGVzICs9IGN1cnJlbnRCeXRlcworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBGaWxlLm9wZW4oZmlsZSwgInIiKSB7CisgICAgICAgICAg
ICB8IGlucCB8CisgICAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICAgICAgbG9v
cCB7CisgICAgICAgICAgICAgICAgYnl0ZSA9IGlucC5nZXRieXRlCisgICAgICAgICAgICAgICAg
YnJlYWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgICAgICAgICBpZiBieXRlID09IG1hZ2ljQnl0ZXNb
d2hlcmVJbk1hcmtlcl0KKyAgICAgICAgICAgICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisg
ICAgICAgICAgICAgICAgICAgIGlmIHdoZXJlSW5NYXJrZXIgPT0gbWFnaWNCeXRlcy5zaXplCisg
ICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGhhdmUgYSBtYXRjaCEgSWYgd2UgaGF2ZSBub3Qg
eWV0IHJlYWQgdGhlIGVuZGlhbm5lc3MgbWFya2VyIGFuZCBpbmRleCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICMgdGhlbiByZWFkIHRob3NlIG5vdzsgb3RoZXJ3aXNlIHJlYWQgYW4gb2Zmc2V0
LgorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBu
b3QgaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHJlYWRJbnQoZW5k
aWFubmVzcywgaW5wKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9mZnNldHMgPDwgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAg
ICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB3aGVyZUluTWFy
a2VyID0gMAorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIAorICAgICAgICBicmVhayBpZiBpbmRleAorICAgIH0KKyAgICAKKyAgICByYWlzZSB1
bmxlc3MgaW5kZXgKKyAgICAKKyAgICBbb2Zmc2V0cywgaW5kZXhdCitlbmQKKworIworIyBidWls
ZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkgLT4gW29mZnNldHMsIHNpemVzXQorIworIyBC
dWlsZHMgYSBtYXBwaW5nIGJldHdlZW4gU3RydWN0T2Zmc2V0IG5vZGVzIGFuZCB0aGVpciB2YWx1
ZXMuCisjCisKK2RlZiBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkKKyAgICBvZmZz
ZXRzTWFwID0ge30KKyAgICBzaXplc01hcCA9IHt9CisgICAgYXN0T2Zmc2V0c0xpc3QgPSBvZmZz
ZXRzTGlzdChhc3QpCisgICAgYXN0U2l6ZXNMaXN0ID0gc2l6ZXNMaXN0KGFzdCkKKyAgICByYWlz
ZSB1bmxlc3MgYXN0T2Zmc2V0c0xpc3Quc2l6ZSArIGFzdFNpemVzTGlzdC5zaXplID09IG9mZnNl
dHNMaXN0LnNpemUKKyAgICBvZmZzZXRzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7CisgICAg
ICAgIHwgc3RydWN0T2Zmc2V0LCBpbmRleCB8CisgICAgICAgIG9mZnNldHNNYXBbc3RydWN0T2Zm
c2V0XSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgICAgfQorICAgIHNpemVzTGlzdChhc3QpLmVhY2hf
d2l0aF9pbmRleCB7CisgICAgICAgIHwgc2l6ZW9mLCBpbmRleCB8CisgICAgICAgIHNpemVzTWFw
W3NpemVvZl0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICAgIH0KKyAgICBbb2Zmc2V0c01hcCwgc2l6
ZXNNYXBdCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb3B0
LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29wdC5y
YgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29wdC5y
YgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKKworIworIyAiT3B0aW1pemF0aW9uIiBwYXNz
ZXMuIFRoZXNlIGFyZSB1c2VkIHRvIGxvd2VyIHRoZSByZXByZXNlbnRhdGlvbiBmb3IKKyMgYmFj
a2VuZHMgdGhhdCBjYW5ub3QgaGFuZGxlIHNvbWUgb2Ygb3VyIGhpZ2hlci1sZXZlbCBpbnN0cnVj
dGlvbnMuCisjCisKKyMKKyMgQSB0ZW1wb3JhcnkgLSBhIHZhcmlhYmxlIHRoYXQgd2lsbCBiZSBh
bGxvY2F0ZWQgdG8gYSByZWdpc3RlciBhZnRlciB3ZSdyZQorIyBkb25lLgorIworCitjbGFzcyBO
b2RlCisgICAgZGVmIHJlcGxhY2VUZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkKKyAgICAg
ICAgbWFwQ2hpbGRyZW4geworICAgICAgICAgICAgfCBub2RlIHwKKyAgICAgICAgICAgIG5vZGUu
cmVwbGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lzdGVycyhraW5kKQorICAgICAgICB9CisgICAgZW5k
CitlbmQKKworY2xhc3MgVG1wIDwgTm9DaGlsZHJlbgorICAgIGF0dHJfcmVhZGVyIDpmaXJzdE1l
bnRpb24sIDpsYXN0TWVudGlvbgorICAgIGF0dHJfcmVhZGVyIDpraW5kCisgICAgYXR0cl9hY2Nl
c3NvciA6cmVnaXN0ZXIKKworICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGtpbmQpCisg
ICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBraW5kID0ga2luZAorICAgIGVuZAor
ICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICIkdG1wI3tvYmplY3RfaWR9IgorICAgIGVuZAor
ICAgIAorICAgIGRlZiBtZW50aW9uIShwb3NpdGlvbikKKyAgICAgICAgaWYgbm90IEBmaXJzdE1l
bnRpb24gb3IgcG9zaXRpb24gPCBAZmlyc3RNZW50aW9uCisgICAgICAgICAgICBAZmlyc3RNZW50
aW9uID0gcG9zaXRpb24KKyAgICAgICAgZW5kCisgICAgICAgIGlmIG5vdCBAbGFzdE1lbnRpb24g
b3IgcG9zaXRpb24gPiBAbGFzdE1lbnRpb24KKyAgICAgICAgICAgIEBsYXN0TWVudGlvbiA9IHBv
c2l0aW9uCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiByZXBsYWNlVGVtcG9y
YXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgICAgIGlmIEBraW5kID09IGtpbmQKKyAgICAg
ICAgICAgIHJhaXNlICJEaWQgbm90IGFsbG9jYXRlIHJlZ2lzdGVyIHRvIHRlbXBvcmFyeSBhdCAj
e2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgQHJlZ2lzdGVyCisgICAgICAgICAgICBAcmVnaXN0
ZXIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VsZgorICAgICAgICBlbmQKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVk
aWF0ZT8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/Cisg
ICAgICAgIHRydWUKKyAgICBlbmQKK2VuZAorCisjIEFzc2lnbiByZWdpc3RlcnMgdG8gdGVtcG9y
YXJpZXMsIGJ5IGZpbmRpbmcgd2hpY2ggdGVtcG9yYXJpZXMgaW50ZXJmZXJlCisjIHdpdGggZWFj
aCBvdGhlci4gTm90ZSB0aGF0IHRoaXMgcmVsaWVzIG9uIHRlbXBvcmFyeSBsaXZlIHJhbmdlcyBu
b3QgY3Jvc3NpbmcKKyMgYmFzaWMgYmxvY2sgYm91bmRhcmllcy4KKworZGVmIGFzc2lnblJlZ2lz
dGVyc1RvVGVtcG9yYXJpZXMobGlzdCwga2luZCwgcmVnaXN0ZXJzKQorICAgIGxpc3QuZWFjaF93
aXRoX2luZGV4IHsKKyAgICAgICAgfCBub2RlLCBpbmRleCB8CisgICAgICAgIG5vZGUuZmlsdGVy
KFRtcCkudW5pcS5lYWNoIHsKKyAgICAgICAgICAgIHwgdG1wIHwKKyAgICAgICAgICAgIGlmIHRt
cC5raW5kID09IGtpbmQKKyAgICAgICAgICAgICAgICB0bXAubWVudGlvbiEgaW5kZXgKKyAgICAg
ICAgICAgIGVuZAorICAgICAgICB9CisgICAgfQorICAgIAorICAgIGZyZWVSZWdpc3RlcnMgPSBy
ZWdpc3RlcnMuZHVwCisgICAgbGlzdC5lYWNoX3dpdGhfaW5kZXggeworICAgICAgICB8IG5vZGUs
IGluZGV4IHwKKyAgICAgICAgdG1wTGlzdCA9IG5vZGUuZmlsdGVyKFRtcCkudW5pcQorICAgICAg
ICB0bXBMaXN0LmVhY2ggeworICAgICAgICAgICAgfCB0bXAgfAorICAgICAgICAgICAgaWYgdG1w
LmtpbmQgPT0ga2luZCBhbmQgdG1wLmZpcnN0TWVudGlvbiA9PSBpbmRleAorICAgICAgICAgICAg
ICAgIHJhaXNlICJDb3VsZCBub3QgYWxsb2NhdGUgcmVnaXN0ZXIgdG8gdGVtcG9yYXJ5IGF0ICN7
bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIgaWYgZnJlZVJlZ2lzdGVycy5lbXB0eT8KKyAgICAgICAg
ICAgICAgICB0bXAucmVnaXN0ZXIgPSBmcmVlUmVnaXN0ZXJzLnBvcAorICAgICAgICAgICAgZW5k
CisgICAgICAgIH0KKyAgICAgICAgdG1wTGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgdG1wIHwK
KyAgICAgICAgICAgIGlmIHRtcC5raW5kID09IGtpbmQgYW5kIHRtcC5sYXN0TWVudGlvbiA9PSBp
bmRleAorICAgICAgICAgICAgICAgIGZyZWVSZWdpc3RlcnMucHVzaCB0bXAucmVnaXN0ZXIKKyAg
ICAgICAgICAgICAgICByYWlzZSAiUmVnaXN0ZXIgYWxsb2NhdGlvbiBpbmNvbnNpc3RlbmN5IGF0
ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIgaWYgZnJlZVJlZ2lzdGVycy5zaXplID4gcmVnaXN0
ZXJzLnNpemUKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgfQorICAgIAorICAgIGxp
c3QubWFwIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgbm9kZS5yZXBsYWNlVGVtcG9yYXJp
ZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgfQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTg2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJh
c3QiCityZXF1aXJlICJpbnN0cnVjdGlvbnMiCityZXF1aXJlICJyZWdpc3RlcnMiCisKK2NsYXNz
IFRva2VuCisgICAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4sIDpzdHJpbmcKKyAgICAKKyAgICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJpbmcpCisgICAgICAgIEBjb2RlT3JpZ2luID0g
Y29kZU9yaWdpbgorICAgICAgICBAc3RyaW5nID0gc3RyaW5nCisgICAgZW5kCisgICAgCisgICAg
ZGVmID09KG90aGVyKQorICAgICAgICBpZiBvdGhlci5pc19hPyBUb2tlbgorICAgICAgICAgICAg
QHN0cmluZyA9PSBvdGhlci5zdHJpbmcKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQHN0cmlu
ZyA9PSBvdGhlcgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgPX4ob3RoZXIp
CisgICAgICAgIEBzdHJpbmcgPX4gb3RoZXIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgdG9fcwor
ICAgICAgICAiI3tAc3RyaW5nLmluc3BlY3R9IGF0IGxpbmUgI3tjb2RlT3JpZ2lufSIKKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICAgICAgaWYgY29tbWVu
dC5lbXB0eT8KKyAgICAgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfSIKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9OiAje2NvbW1l
bnRbMF19IgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCisjCisjIFRoZSBsZXhlci4gVGFr
ZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdG9rZW5zLgorIworCitkZWYgbGV4
KHN0cikKKyAgICByZXN1bHQgPSBbXQorICAgIGxpbmVOdW1iZXIgPSAxCisgICAgd2hpbGUgbm90
IHN0ci5lbXB0eT8KKyAgICAgICAgY2FzZSBzdHIKKyAgICAgICAgd2hlbiAvXEFcIyhbXlxuXSop
LworICAgICAgICAgICAgIyBjb21tZW50LCBpZ25vcmUKKyAgICAgICAgd2hlbiAvXEFcbi8KKyAg
ICAgICAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICAgICAg
ICBsaW5lTnVtYmVyICs9IDEKKyAgICAgICAgd2hlbiAvXEFbYS16QS1aXShbYS16QS1aMC05X10q
KS8KKyAgICAgICAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAg
ICAgIHdoZW4gL1xBXC4oW2EtekEtWjAtOV9dKikvCisgICAgICAgICAgICByZXN1bHQgPDwgVG9r
ZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAgICB3aGVuIC9cQV8oW2EtekEtWjAtOV9dKikv
CisgICAgICAgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAg
ICB3aGVuIC9cQShbIFx0XSspLworICAgICAgICAgICAgIyB3aGl0ZXNwYWNlLCBpZ25vcmUKKyAg
ICAgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSspLworICAgICAgICAgICAgcmVzdWx0IDw8IFRv
a2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAgICAgICAgd2hlbiAvXEEwKFswLTdd
KykvCisgICAgICAgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLm9jdC50
b19zKQorICAgICAgICB3aGVuIC9cQShbMC05XSspLworICAgICAgICAgICAgcmVzdWx0IDw8IFRv
a2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICAgICAgd2hlbiAvXEE6Oi8KKyAgICAgICAgICAg
IHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICAgIHdoZW4gL1xBWzos
XChcKVxbXF09XCtcLSpdLworICAgICAgICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVt
YmVyLCAkJikKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkxleGVyIGVycm9yIGF0
IGxpbmUgbnVtYmVyICN7bGluZU51bWJlcn0sIHVuZXhwZWN0ZWQgc2VxdWVuY2UgI3tzdHJbMC4u
MjBdLmluc3BlY3R9IgorICAgICAgICBlbmQKKyAgICAgICAgc3RyID0gJH4ucG9zdF9tYXRjaAor
ICAgIGVuZAorICAgIHJlc3VsdAorZW5kCisKKyMKKyMgVG9rZW4gaWRlbnRpZmljYXRpb24uCisj
CisKK2RlZiBpc1JlZ2lzdGVyKHRva2VuKQorICAgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4K
K2VuZAorCitkZWYgaXNJbnN0cnVjdGlvbih0b2tlbikKKyAgICB0b2tlbiA9fiBJTlNUUlVDVElP
Tl9QQVRURVJOCitlbmQKKworZGVmIGlzS2V5d29yZCh0b2tlbikKKyAgICB0b2tlbiA9fiAvXEEo
KHRydWUpfChmYWxzZSl8KGlmKXwodGhlbil8KGVsc2UpfChlbHNpZil8KGVuZCl8KGFuZCl8KG9y
KXwobm90KXwobWFjcm8pfChjb25zdCl8KHNpemVvZil8KGVycm9yKSlcWi8gb3IKKyAgICAgICAg
dG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTiBvcgorICAgICAgICB0b2tlbiA9fiBJTlNUUlVDVElP
Tl9QQVRURVJOCitlbmQKKworZGVmIGlzSWRlbnRpZmllcih0b2tlbikKKyAgICB0b2tlbiA9fiAv
XEFbYS16QS1aXShbYS16QS1aMC05X10qKVxaLyBhbmQgbm90IGlzS2V5d29yZCh0b2tlbikKK2Vu
ZAorCitkZWYgaXNMYWJlbCh0b2tlbikKKyAgICB0b2tlbiA9fiAvXEFfKFthLXpBLVowLTlfXSop
XFovCitlbmQKKworZGVmIGlzTG9jYWxMYWJlbCh0b2tlbikKKyAgICB0b2tlbiA9fiAvXEFcLihb
YS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc1ZhcmlhYmxlKHRva2VuKQorICAgIGlzSWRl
bnRpZmllcih0b2tlbikgb3IgaXNSZWdpc3Rlcih0b2tlbikKK2VuZAorCitkZWYgaXNJbnRlZ2Vy
KHRva2VuKQorICAgIHRva2VuID1+IC9cQVswLTldLworZW5kCisKKyMKKyMgVGhlIHBhcnNlci4g
VGFrZXMgYW4gYXJyYXkgb2YgdG9rZW5zIGFuZCByZXR1cm5zIGFuIEFTVC4gTWV0aG9kcworIyBv
dGhlciB0aGFuIHBhcnNlKHRva2VucykgYXJlIG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9uLgor
IworCitjbGFzcyBQYXJzZXIKKyAgICBkZWYgaW5pdGlhbGl6ZSh0b2tlbnMpCisgICAgICAgIEB0
b2tlbnMgPSB0b2tlbnMKKyAgICAgICAgQGlkeCA9IDAKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
cGFyc2VFcnJvcigqY29tbWVudCkKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XQorICAgICAgICAg
ICAgQHRva2Vuc1tAaWR4XS5wYXJzZUVycm9yKCpjb21tZW50KQorICAgICAgICBlbHNlCisgICAg
ICAgICAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgICAgICAgICAgIHJhaXNlICJQYXJzZSBl
cnJvciBhdCBlbmQgb2YgZmlsZSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBy
YWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZpbGU6ICN7Y29tbWVudFswXX0iCisgICAgICAg
ICAgICBlbmQKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIGNvbnN1bWUocmVn
ZXhwKQorICAgICAgICBpZiByZWdleHAKKyAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0
b2tlbnNbQGlkeF0gPX4gcmVnZXhwCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNlRXJy
b3IgdW5sZXNzIEBpZHggPT0gQHRva2Vucy5sZW5ndGgKKyAgICAgICAgZW5kCisgICAgICAgIEBp
ZHggKz0gMQorICAgIGVuZAorICAgIAorICAgIGRlZiBza2lwTmV3TGluZQorICAgICAgICB3aGls
ZSBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBl
bmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgICAgIGlm
IEB0b2tlbnNbQGlkeF0gPT0gIm5vdCIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
ICAgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigi
CisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAg
ICAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgICAgICAgcGFyc2VFcnJvciB1bmxl
c3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
ICAgcmVzdWx0CisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInRydWUiCisgICAgICAg
ICAgICByZXN1bHQgPSBUcnVlLmluc3RhbmNlCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgICAgIHJlc3VsdAorICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJmYWxzZSIKKyAg
ICAgICAgICAgIHJlc3VsdCA9IEZhbHNlLmluc3RhbmNlCisgICAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tA
aWR4XQorICAgICAgICAgICAgcmVzdWx0ID0gU2V0dGluZy5mb3JOYW1lKEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXJzZUVycm9y
CisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBwYXJzZVByZWRpY2F0ZUFuZAor
ICAgICAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgICAgd2hpbGUgQHRva2Vu
c1tAaWR4XSA9PSAiYW5kIgorICAgICAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0u
Y29kZU9yaWdpbgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBza2lwTmV3TGlu
ZQorICAgICAgICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgICAgICAgIHJl
c3VsdCA9IEFuZC5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICAgICAgZW5kCisg
ICAgICAgIHJlc3VsdAorICAgIGVuZAorICAgIAorICAgIGRlZiBwYXJzZVByZWRpY2F0ZQorICAg
ICAgICAjIHNvbWUgZXhhbXBsZXMgb2YgcHJlY2VkZW5jZToKKyAgICAgICAgIyBub3QgYSBhbmQg
YiAtPiAobm90IGEpIGFuZCBiCisgICAgICAgICMgYSBhbmQgYiBvciBjIC0+IChhIGFuZCBiKSBv
ciBjCisgICAgICAgICMgYSBvciBiIGFuZCBjIC0+IGEgb3IgKGIgYW5kIGMpCisgICAgICAgIAor
ICAgICAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAgICAgICB3aGlsZSBAdG9rZW5z
W0BpZHhdID09ICJvciIKKyAgICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4KKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgc2tpcE5ld0xpbmUK
KyAgICAgICAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICAgICAgICAgIHJlc3Vs
dCA9IE9yLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgICAgICBlbmQKKyAgICAg
ICAgcmVzdWx0CisgICAgZW5kCisgICAgCisgICAgZGVmIHBhcnNlVmFyaWFibGUKKyAgICAgICAg
aWYgaXNSZWdpc3RlcihAdG9rZW5zW0BpZHhdKQorICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4
XSA9fiBGUFJfUEFUVEVSTgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZQUmVnaXN0ZXJJRC5m
b3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gUmVnaXN0ZXJJRC5mb3JO
YW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAg
ICAgICAgICBlbmQKKyAgICAgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisg
ICAgICAgICAgICByZXN1bHQgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBh
cnNlRXJyb3IKKyAgICAgICAgZW5kCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VBZGRyZXNzKG9mZnNldCkKKyAgICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgICAgY29kZU9yaWdpbiA9
IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAKKyAgICAgICAgIyBUaHJlZSBwb3Nz
aWJpbGl0aWVzOgorICAgICAgICAjIFtdICAgICAgIC0+IEFic29sdXRlQWRkcmVzcworICAgICAg
ICAjIFthXSAgICAgIC0+IEFkZHJlc3MKKyAgICAgICAgIyBbYSxiXSAgICAtPiBCYXNlSW5kZXgg
d2l0aCBzY2FsZSA9IDEKKyAgICAgICAgIyBbYSxiLGNdICAtPiBCYXNlSW5kZXgKKyAgICAgICAg
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICByZXR1cm4gQWJzb2x1dGVBZGRyZXNzLm5l
dyhjb2RlT3JpZ2luLCBvZmZzZXQpCisgICAgICAgIGVuZAorICAgICAgICBhID0gcGFyc2VWYXJp
YWJsZQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICAgICAgcmVzdWx0
ID0gQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgYSwgb2Zmc2V0KQorICAgICAgICBlbHNlCisgICAg
ICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgICAgICBiID0gcGFyc2VWYXJpYWJsZQorICAgICAgICAgICAg
aWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBCYXNlSW5k
ZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIDEsIG9mZnNldCkKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAg
ICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNz
IFsiMSIsICIyIiwgIjQiLCAiOCJdLm1lbWJlcj8gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAg
ICAgICAgICAgICBjID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faQorICAgICAgICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlk
eF0gPT0gIl0iCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3Jp
Z2luLCBhLCBiLCBjLCBvZmZzZXQpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFy
c2VDb2xvbkNvbG9uCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGNvZGVPcmlnaW4gPSBA
dG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVu
dGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgbmFtZXMgPSBbQHRva2Vuc1tAaWR4XS5zdHJp
bmddCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICI6
OiIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgcGFyc2VFcnJvciB1bmxlc3Mg
aXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAgIG5hbWVzIDw8IEB0b2tlbnNb
QGlkeF0uc3RyaW5nCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZW5kCisgICAgICAg
IHJhaXNlIGlmIG5hbWVzLmVtcHR5PworICAgICAgICBbY29kZU9yaWdpbiwgbmFtZXNdCisgICAg
ZW5kCisgICAgCisgICAgZGVmIHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICAgICAgc2tpcE5ld0xp
bmUKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICAgICAgTmVnSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3Jp
Z2luLCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICIoIgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICByZXN1bHQgPSBwYXJzZUV4
cHJlc3Npb24KKyAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0g
IikiCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBl
bHNpZiBpc0ludGVnZXIgQHRva2Vuc1tAaWR4XQorICAgICAgICAgICAgcmVzdWx0ID0gSW1tZWRp
YXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRv
X2kpCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBl
bHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgICAgICAgY29kZU9yaWdpbiwg
bmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgICAgICAgIGlmIG5hbWVzLnNpemUgPiAxCisg
ICAgICAgICAgICAgICAgU3RydWN0T2Zmc2V0LmZvckZpZWxkKGNvZGVPcmlnaW4sIG5hbWVzWzAu
Li0yXS5qb2luKCc6OicpLCBuYW1lc1stMV0pCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgVmFyaWFibGUuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lc1swXSkKKyAgICAgICAgICAg
IGVuZAorICAgICAgICBlbHNpZiBpc1JlZ2lzdGVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAg
IHBhcnNlVmFyaWFibGUKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIgor
ICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBh
cnNlQ29sb25Db2xvbgorICAgICAgICAgICAgU2l6ZW9mLmZvck5hbWUoY29kZU9yaWdpbiwgbmFt
ZXMuam9pbignOjonKSkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VFcnJvcgorICAg
ICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VFeHByZXNzaW9uTXVsCisgICAg
ICAgIHNraXBOZXdMaW5lCisgICAgICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbkF0b20KKyAg
ICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgICAgICAgIGlmIEB0b2tlbnNb
QGlkeF0gPT0gIioiCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAg
cmVzdWx0ID0gTXVsSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwg
cmVzdWx0LCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIHJhaXNlCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAgICAgIHJlc3Vs
dAorICAgIGVuZAorICAgIAorICAgIGRlZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgICAgICBAdG9r
ZW5zW0BpZHhdID09ICItIiBvciBAdG9rZW5zW0BpZHhdID09ICJzaXplb2YiIG9yIGlzSW50ZWdl
cihAdG9rZW5zW0BpZHhdKSBvciBpc1ZhcmlhYmxlKEB0b2tlbnNbQGlkeF0pIG9yIEB0b2tlbnNb
QGlkeF0gPT0gIigiCisgICAgZW5kCisgICAgCisgICAgZGVmIHBhcnNlRXhwcmVzc2lvbgorICAg
ICAgICBza2lwTmV3TGluZQorICAgICAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25NdWwKKyAg
ICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKyIgb3IgQHRva2Vuc1tAaWR4XSA9PSAiLSIK
KyAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIisiCisgICAgICAgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vu
c1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAg
ICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICItIgorICAgICAgICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IFN1YkltbWVkaWF0ZXMubmV3KEB0b2tlbnNb
QGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBlbmQKKyAgICAg
ICAgZW5kCisgICAgICAgIHJlc3VsdAorICAgIGVuZAorICAgIAorICAgIGRlZiBwYXJzZU9wZXJh
bmQoY29tbWVudCkKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWYgY291bGRCZUV4cHJl
c3Npb24KKyAgICAgICAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgICAgICAgIGlm
IEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgICAgICAgICAgcGFyc2VBZGRyZXNzKGV4cHIp
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZXhwcgorICAgICAgICAgICAgZW5k
CisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgICAgICBwYXJzZUFk
ZHJlc3MoSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIDApKQorICAgICAg
ICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAgIHJlc3VsdCA9IExhYmVs
UmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExhYmVsLmZvck5hbWUoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNpZiBpc0xvY2FsTGFi
ZWwgQHRva2Vuc1tAaWR4XQorICAgICAgICAgICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJlZmVyZW5j
ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMb2NhbExhYmVsLmZvck5hbWUoQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNlCisgICAgICAgICAgICBw
YXJzZUVycm9yKGNvbW1lbnQpCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBw
YXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGNvbnN1bWUo
L1xBXChcWi8pCisgICAgICAgIHZhcmlhYmxlcyA9IFtdCisgICAgICAgIGxvb3AgeworICAgICAg
ICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisg
ICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAg
ICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICAgICAgICAgIHZh
cmlhYmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRv
a2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAg
ICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIp
IgorICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAg
ICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHBhcnNlRXJyb3IKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBwYXJzZUVycm9yCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQor
ICAgICAgICB2YXJpYWJsZXMKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VTZXF1ZW5jZShm
aW5hbCwgY29tbWVudCkKKyAgICAgICAgZmlyc3RDb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luCisgICAgICAgIGxpc3QgPSBbXQorICAgICAgICBsb29wIHsKKyAgICAgICAgICAg
IGlmIChAaWR4ID09IEB0b2tlbnMubGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQg
QHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAg
ICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgICAgICAgIyBpZ25vcmUK
KyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlk
eF0gPT0gImNvbnN0IgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAg
IHBhcnNlRXJyb3IgdW5sZXNzIGlzVmFyaWFibGUgQHRva2Vuc1tAaWR4XQorICAgICAgICAgICAg
ICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4s
IEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIj0iCisgICAgICAg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJzZU9wZXJhbmQo
IndoaWxlIGluc2lkZSBvZiBjb25zdCAje3ZhcmlhYmxlLm5hbWV9IikKKyAgICAgICAgICAgICAg
ICBsaXN0IDw8IENvbnN0RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCB2YXJpYWJs
ZSwgdmFsdWUpCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJlcnJvciIKKyAg
ICAgICAgICAgICAgICBsaXN0IDw8IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4p
CisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0Bp
ZHhdID09ICJpZiIKKyAgICAgICAgICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgc2tp
cE5ld0xpbmUKKyAgICAgICAgICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAg
ICAgICAgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgICAgICAg
ICBza2lwTmV3TGluZQorICAgICAgICAgICAgICAgIGlmVGhlbkVsc2UgPSBJZlRoZW5FbHNlLm5l
dyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwo
ZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkK
KyAgICAgICAgICAgICAgICBsaXN0IDw8IGlmVGhlbkVsc2UKKyAgICAgICAgICAgICAgICB3aGls
ZSBAdG9rZW5zW0BpZHhdID09ICJlbHNpZiIKKyAgICAgICAgICAgICAgICAgICAgY29kZU9yaWdp
biA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgICAgICAg
cHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgICAgICAgICAgICAgY29uc3VtZSgv
XEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAg
ICAgICAgICAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHBy
ZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hp
bGUgaW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICAgICAgICAg
ICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNhc2UKKyAgICAgICAgICAgICAgICAgICAg
aWZUaGVuRWxzZSA9IGVsc2VDYXNlCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiZWxzZSIKKyAgICAgICAgICAgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgICAgICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBwYXJzZVNlcXVl
bmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBlbHNlIGNhc2UgZm9yIFwiaWYgI3twcmVk
aWNhdGUuZHVtcH1cIiIpCisgICAgICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vu
c1tAaWR4XSA9PSAiZW5kIgorICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
ICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgor
ICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAg
ICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAg
ICAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhd
KQorICAgICAgICAgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICAg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9W
YXJpYWJsZXMKKyAgICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8s
ICJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gI3tuYW1lfSIpCisgICAgICAgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgICAgICAgbGlzdCA8PCBNYWNyby5uZXcoY29kZU9yaWdpbiwgbmFtZSwg
dmFyaWFibGVzLCBib2R5KQorICAgICAgICAgICAgZWxzaWYgaXNJbnN0cnVjdGlvbiBAdG9rZW5z
W0BpZHhdCisgICAgICAgICAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbgorICAgICAgICAgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAg
ICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGlmIChub3QgZmluYWwgYW5kIEBp
ZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwp
CisgICAgICAgICAgICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLCBhbmQgaXQn
cyB0aGUgbGFzdCBvbmUuCisgICAgICAgICAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAg
ICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICAgICAg
ICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgbGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgICAg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgIyBJdCdzIGRlZmluaXRlbHkgYW4gaW5zdHJ1Y3Rpb24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qg
b25lIG9wZXJhbmQuCisgICAgICAgICAgICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAg
ICAgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9IGZhbHNlCisgICAgICAgICAgICAgICAgICAgIGxv
b3AgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3
aGlsZSBpbnNpZGUgb2YgaW5zdHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFu
ZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg
VGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24gYW5kIG9mIHRoZSBzZXF1ZW5jZS4KKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gdHJ1ZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5z
W0BpZHhdID09ICIsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSGFzIGFub3RoZXIg
b3BlcmFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFs
fSBhZnRlciAje29wZXJhbmRzLmxhc3QuZHVtcH0iKQorICAgICAgICAgICAgICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbGlzdCA8PCBJ
bnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgICAgICAg
ICAgICAgIGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAg
ZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAgICAgICBjb2RlT3Jp
Z2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgICAgICAgbmFtZSA9IEB0
b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAg
ICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgICAgICAgICAgICAgICAgIyBNYWNy
byBpbnZvY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAg
ICAgICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgICAgICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAg
ICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBO
ZXdMaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
bWFjcm8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSXQncyBhIG1hY3JvIGxh
bWJkYSEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZU9yaWdpbklubmVyID0g
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBw
YXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkg
PSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBhbm9ueW1vdXMgbWFj
cm8gcGFzc2VkIGFzIGFyZ3VtZW50IHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bl
cmFuZHMgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJpYWJsZXMsIGJvZHkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBtYWNy
byBjYWxsIHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJz
ZUVycm9yICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5zcGVjdH0gd2hpbGUg
cGFyc2luZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
ICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBsaXN0IDw8IE1hY3JvQ2FsbC5uZXcoY29kZU9y
aWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9IgorICAgICAg
ICAgICAgICAgIGVuZAorICAgICAgICAgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9y
IGlzTG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICAgICAgICAgICAgY29kZU9yaWdpbiA9
IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgIG5hbWUgPSBAdG9rZW5z
W0BpZHhdLnN0cmluZworICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAg
IHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIjoiCisgICAgICAgICAgICAgICAg
IyBJdCdzIGEgbGFiZWwuCisgICAgICAgICAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAg
ICAgICAgICAgICAgIGxpc3QgPDwgTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbGlzdCA8PCBMb2NhbExhYmVs
LmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJz
ZUVycm9yICJFeHBlY3RpbmcgdGVybWluYWwgI3tmaW5hbH0gI3tjb21tZW50fSIKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICB9CisgICAgICAgIFNlcXVlbmNlLm5ldyhmaXJzdENvZGVPcmlnaW4s
IGxpc3QpCisgICAgZW5kCitlbmQKKworZGVmIHBhcnNlKHRva2VucykKKyAgICBwYXJzZXIgPSBQ
YXJzZXIubmV3KHRva2VucykKKyAgICBwYXJzZXIucGFyc2VTZXF1ZW5jZShuaWwsICIiKQorZW5k
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMu
cmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdp
c3RlcnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
IyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKK0dQUlMgPQorICAgIFsKKyAgICAgInQwIiwKKyAgICAgInQx
IiwKKyAgICAgInQyIiwKKyAgICAgInQzIiwKKyAgICAgInQ0IiwKKyAgICAgImNmciIsCisgICAg
ICJhMCIsCisgICAgICJhMSIsCisgICAgICJyMCIsCisgICAgICJyMSIsCisgICAgICJzcCIsCisg
ICAgICJsciIKKyAgICBdCisKK0ZQUlMgPQorICAgIFsKKyAgICAgImZ0MCIsCisgICAgICJmdDEi
LAorICAgICAiZnQyIiwKKyAgICAgImZ0MyIsCisgICAgICJmdDQiLAorICAgICAiZnQ1IiwKKyAg
ICAgImZhMCIsCisgICAgICJmYTEiLAorICAgICAiZmEyIiwKKyAgICAgImZhMyIsCisgICAgICJm
ciIKKyAgICBdCisKK1JFR0lTVEVSUyA9IEdQUlMgKyBGUFJTCisKK0dQUl9QQVRURVJOID0gUmVn
ZXhwLm5ldygnXFxBKCgnICsgR1BSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCitGUFJfUEFUVEVS
TiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQorCitS
RUdJU1RFUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgUkVHSVNURVJTLmpvaW4oJyl8
KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3Nl
bGZfaGFzaC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9zZWxmX2hhc2gucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9zZWxmX2hhc2gucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKyMgQ29w
eXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisj
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImRpZ2VzdC9zaGExIgor
cmVxdWlyZSAicGF0aG5hbWUiCisKKyMKKyMgc2VsZkhhc2ggLT4gU0hBMSBoZXhkaWdlc3QKKyMK
KyMgUmV0dXJucyBhIGhhc2ggb2YgdGhlIG9mZmxpbmVhc20gc291cmNlIGNvZGUuIFRoaXMgYWxs
b3dzIGRlcGVuZGVuY3kKKyMgdHJhY2tpbmcgZm9yIG5vdCBqdXN0IGNoYW5nZXMgaW4gaW5wdXQs
IGJ1dCBhbHNvIGNoYW5nZXMgaW4gdGhlIGFzc2VtYmxlcgorIyBpdHNlbGYuCisjCisKK2RlZiBz
ZWxmSGFzaAorICAgIGNvbnRlbnRzID0gIiIKKyAgICBteVBhdGggPSBQYXRobmFtZS5uZXcoX19G
SUxFX18pLmRpcm5hbWUKKyAgICBEaXIuZm9yZWFjaChteVBhdGgpIHsKKyAgICAgICAgfCBlbnRy
eSB8CisgICAgICAgIGlmIGVudHJ5ID1+IC9cLnJiJC8KKyAgICAgICAgICAgIGNvbnRlbnRzICs9
IElPOjpyZWFkKG15UGF0aCArIGVudHJ5KQorICAgICAgICBlbmQKKyAgICB9CisgICAgcmV0dXJu
IERpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoY29udGVudHMpCitlbmQKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyMDUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
K3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVx
dWlyZSAidHJhbnNmb3JtIgorCisjCisjIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3Qp
IC0+IHNldHRpbmdzQ29tYmlhdGlvbnMKKyMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkgb2Ygc2V0dGlu
Z3MgbWFwcywgd2hlcmUgYSBzZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMKKyMgYSBjb25maWd1cmF0
aW9uIGZvciB0aGUgYXNzZW1ibHkgY29kZSBiZWluZyBnZW5lcmF0ZWQuIFRoZSBtYXAKKyMgY29u
dGFpbnMga2V5IHZhbHVlIHBhaXJzIHdoZXJlIGtleXMgYXJlIHNldHRpbmdzIG5hbWVzIChzdHJp
bmdzKSBhbmQKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVhbnMgKHRydWUgZm9yIGVuYWJsZWQsIGZh
bHNlIGZvciBkaXNhYmxlZCkuCisjCisKK2RlZiBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMo
YXN0KQorICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gW10KKyAgICAKKyAgICBkZWYgc2V0dGlu
Z3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBtYXBTb0ZhciwgcmVtYWluaW5nKQor
ICAgICAgICBpZiByZW1haW5pbmcuZW1wdHk/CisgICAgICAgICAgICBzZXR0aW5nc0NvbWJpbmF0
aW9ucyA8PCBtYXBTb0ZhcgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVuZAorICAgICAg
ICAKKyAgICAgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgICAgIG5ld01hcFtyZW1haW5p
bmdbMF1dID0gdHJ1ZQorICAgICAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5h
dGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgICAgICAgCisgICAgICAgIG5ld01h
cCA9IG1hcFNvRmFyLmR1cAorICAgICAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IGZhbHNlCisg
ICAgICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCBy
ZW1haW5pbmdbMS4uLTFdKQorICAgIGVuZAorICAgIAorICAgIHNldHRpbmdzQ29tYmluYXRvcihz
ZXR0aW5nc0NvbWJpbmF0aW9ucywge30sIChhc3QuZmlsdGVyKFNldHRpbmcpLnVuaXEuY29sbGVj
dHt8dnwgdi5uYW1lfSArIFsiWDg2IiwgIkFSTXY3Il0pLnVuaXEpCisgICAgCisgICAgc2V0dGlu
Z3NDb21iaW5hdGlvbnMKK2VuZAorCisjCisjIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3Ms
IGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8
IC4uLiB9CisjCisjIERldGVybWluZXMgaWYgdGhlIHNldHRpbmdzIGNvbWJpbmF0aW9uIGlzIHZh
bGlkLCBhbmQgaWYgc28sIGNhbGxzCisjIHRoZSBibG9jayB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5
b3UgbmVlZCB0byBnZW5lcmF0ZSBjb2RlLgorIworCitkZWYgZm9yU2V0dGluZ3MoY29uY3JldGVT
ZXR0aW5ncywgYXN0KQorICAgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0aGlzIGNvbWJp
bmF0b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgICAgbnVtQ2xhaW1lZEJhY2tlbmRzID0gMAorICAg
IHNlbGVjdGVkQmFja2VuZCA9IG5pbAorICAgIEJBQ0tFTkRTLmVhY2ggeworICAgICAgICB8IGJh
Y2tlbmQgfAorICAgICAgICBpc1N1cHBvcnRlZCA9IGNvbmNyZXRlU2V0dGluZ3NbYmFja2VuZF0K
KyAgICAgICAgcmFpc2UgdW5sZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgICAgICBudW1DbGFp
bWVkQmFja2VuZHMgKz0gaWYgaXNTdXBwb3J0ZWQgdGhlbiAxIGVsc2UgMCBlbmQKKyAgICAgICAg
aWYgaXNTdXBwb3J0ZWQKKyAgICAgICAgICAgIHNlbGVjdGVkQmFja2VuZCA9IGJhY2tlbmQKKyAg
ICAgICAgZW5kCisgICAgfQorICAgIAorICAgIHJldHVybiBpZiBudW1DbGFpbWVkQmFja2VuZHMg
PiAxCisgICAgCisgICAgIyBSZXNvbHZlIHRoZSBBU1QgZG93biB0byBhIGxvdy1sZXZlbCBmb3Jt
IChubyBtYWNyb3Mgb3IgY29uZGl0aW9uYWxzKS4KKyAgICBsb3dMZXZlbEFTVCA9IGFzdC5yZXNv
bHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAgICAKKyAgICB5aWVsZCBjb25jcmV0ZVNl
dHRpbmdzLCBsb3dMZXZlbEFTVCwgc2VsZWN0ZWRCYWNrZW5kCitlbmQKKworIworIyBmb3JFYWNo
VmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdz
LCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0KKyMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3ND
b21iaW5hdGlvbihhc3QsIHNldHRpbmdzQ29tYmluYXRpb25zKSB7CisjICAgICB8IGNvbmNyZXRl
U2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBFeGVjdXRlcyB0aGUg
Z2l2ZW4gYmxvY2sgZm9yIGVhY2ggdmFsaWQgc2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlCisj
IHNldHRpbmdzIG1hcC4gVGhlIGFzdCBwYXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQK
KyMgKGFzdC5yZXNvbHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4KKyMKKyMgVGhlIGZpcnN0IGZv
cm0gd2lsbCBjYWxsIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIGZvciB5b3UuCisj
CisKK2RlZiBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgKm9wdGlvbmFsU2V0
dGluZ3NDb21iaW5hdGlvbnMpCisgICAgcmFpc2UgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0
aW9ucy5zaXplID4gMQorICAgIAorICAgIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMu
ZW1wdHk/CisgICAgICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gY29tcHV0ZVNldHRpbmdzQ29t
YmluYXRpb25zKGFzdCkKKyAgICBlbHNlCisgICAgICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0g
b3B0aW9uYWxTZXR0aW5nc0NvbWJpYXRpb25zWzBdCisgICAgZW5kCisgICAgCisgICAgc2V0dGlu
Z3NDb21iaW5hdGlvbnMuZWFjaF93aXRoX2luZGV4IHsKKyAgICAgICAgfCBjb25jcmV0ZVNldHRp
bmdzLCBpbmRleCB8CisgICAgICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkg
eworICAgICAgICAgICAgfCBjb25jcmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJhY2tlbmQg
fAorICAgICAgICAgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tl
bmQsIGluZGV4CisgICAgICAgIH0KKyAgICB9CitlbmQKKworIworIyBjcHBTZXR0aW5nc1Rlc3Qo
Y29uY3JldGVTZXR0aW5ncykKKyMKKyMgUmV0dXJucyB0aGUgQysrIGNvZGUgdXNlZCB0byB0ZXN0
IGlmIHdlIGFyZSBpbiBhIGNvbmZpZ3VyYXRpb24gdGhhdAorIyBjb3JyZXNwb25kcyB0byB0aGUg
Z2l2ZW4gY29uY3JldGUgc2V0dGluZ3MuCisjCisKK2RlZiBjcHBTZXR0aW5nc1Rlc3QoY29uY3Jl
dGVTZXR0aW5ncykKKyAgICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdzLnRvX2EuY29sbGVjdHsK
KyAgICAgICAgfCBwYWlyIHwKKyAgICAgICAgKGlmIHBhaXJbMV0KKyAgICAgICAgICAgICAiIgor
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICIhIgorICAgICAgICAgZW5kKSArICJPRkZMSU5F
X0FTTV8iICsgcGFpclswXQorICAgIH0uam9pbigiICYmICIpCitlbmQKKworIworIyBpc0FTVEVy
cm9uZW91cyhhc3QpCisjCisjIFRlc3RzIHRvIHNlZSBpZiB0aGUgQVNUIGNsYWltcyB0aGF0IHRo
ZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUKKyMgdXNlcidzIGNvZGUsIGFmdGVyIHNldHRp
bmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4KKyMKKworZGVmIGlzQVNURXJyb25lb3Vz
KGFzdCkKKyAgICBub3QgYXN0LmZpbHRlcihFcnJvcikuZW1wdHk/CitlbmQKKworIworIyBhc3Nl
cnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisjCisjIEVtaXRzIGEgY2hlY2sgdGhh
dCBhc3NlcnRzIHRoYXQgd2UncmUgdXNpbmcgdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24uCisjCisK
K2RlZiBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgICAgJG91dHB1dC5w
dXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAgICRvdXRwdXQucHV0cyAi
I2Vsc2UiCisgICAgJG91dHB1dC5wdXRzICIjZXJyb3IgXCJDb25maWd1cmF0aW9uIG1pc21hdGNo
LlwiIgorICAgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMKKyMgZW1pdENvZGVJbkNv
bmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKSB7CisjICAgICB8IGNv
bmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCB8IC4uLiB9CisjCisjIEVtaXRzIGFsbCByZWxl
dmFudCBndWFyZHMgdG8gc2VlIGlmIHRoZSBjb25maWd1cmF0aW9uIGhvbGRzIGFuZAorIyBjYWxs
cyB0aGUgYmxvY2sgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGVycm9uZW91cy4KKyMKKwor
ZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2Vu
ZCkKKyAgICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisg
ICAgCisgICAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAgICAgICAkb3V0cHV0LnB1dHMgIiNl
cnJvciBcIkludmFsaWQgY29uZmlndXJhdGlvbi5cIiIKKyAgICBlbHNpZiBub3QgV09SS0lOR19C
QUNLRU5EUy5pbmNsdWRlPyBiYWNrZW5kCisgICAgICAgICRvdXRwdXQucHV0cyAiI2Vycm9yIFwi
VGhpcyBiYWNrZW5kIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LlwiIgorICAgIGVsc2UKKyAgICAgICAg
eWllbGQgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kCisgICAgZW5kCisgICAgCisgICAg
JG91dHB1dC5wdXRzICIjZW5kaWYiCitlbmQKKworIworIyBlbWl0Q29kZUluQWxsQ29uZmlndXJh
dGlvbnMoYXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5k
ZXggfCAuLi4gfQorIworIyBFbWl0cyBndWFyZCBjb2RlcyBmb3IgYWxsIHZhbGlkIGNvbmZpZ3Vy
YXRpb25zLCBhbmQgY2FsbHMgdGhlIGJsb2NrCisjIGZvciB0aG9zZSBjb25maWd1cmF0aW9ucyB0
aGF0IGFyZSB2YWxpZCBhbmQgbm90IGVycm9uZW91cy4KKyMKKworZGVmIGVtaXRDb2RlSW5BbGxD
b25maWd1cmF0aW9ucyhhc3QpCisgICAgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihh
c3QpIHsKKyAgICAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwg
aW5kZXggfAorICAgICAgICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0
dGluZ3MpCisgICAgICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNr
ZW5kLCBpbmRleAorICAgICAgICAkb3V0cHV0LnB1dHMgIiNlbmRpZiIKKyAgICB9CitlbmQKKwor
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0u
cmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFu
c2Zvcm0ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQyIEBACisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCisKKyMKKyMgbm9kZS5yZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpCisjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBkb2VzIG5v
dCBoYXZlIGFueSBJZlRoZW5FbHNlIG5vZGVzIGJ5CisjIHN1YnN0aXR1dGluZyBjb25jcmV0ZSBi
b29sZWFuIHZhbHVlcyBmb3IgZWFjaCBTZXR0aW5nLgorIworCitjbGFzcyBOb2RlCisgICAgZGVm
IHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgbWFwQ2hpbGRyZW4geworICAgICAg
ICAgICAgfCBjaGlsZCB8CisgICAgICAgICAgICBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitjbGFzcyBUcnVlCisgICAgZGVmIHJlc29s
dmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgc2VsZgorICAgIGVuZAorZW5kCisKK2NsYXNz
IEZhbHNlCisgICAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgc2VsZgor
ICAgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcKKyAgICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNl
dHRpbmdzKQorICAgICAgICBzZXR0aW5nc1tAbmFtZV0uYXNOb2RlCisgICAgZW5kCitlbmQKKwor
Y2xhc3MgQW5kCisgICAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgKEBs
ZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgYW5kIEByaWdodC5yZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBPcgor
ICAgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICAgIChAbGVmdC5yZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIG9yIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpLnZhbHVlKS5hc05vZGUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBOb3QKKyAgICBkZWYgcmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgICAobm90IEBjaGlsZC5yZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJZlRoZW5F
bHNlCisgICAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgaWYgQHByZWRp
Y2F0ZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlCisgICAgICAgICAgICBAdGhlbkNh
c2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBA
ZWxzZUNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgICBlbmQKKyAgICBlbmQK
K2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICAgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
CisgICAgICAgIG5ld0xpc3QgPSBbXQorICAgICAgICBAbGlzdC5lYWNoIHsKKyAgICAgICAgICAg
IHwgaXRlbSB8CisgICAgICAgICAgICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgICAgICAgICBpZiBpdGVtLmlzX2E/IFNlcXVlbmNlCisgICAgICAgICAgICAgICAg
bmV3TGlzdCArPSBpdGVtLmxpc3QKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBu
ZXdMaXN0IDw8IGl0ZW0KKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIFNlcXVl
bmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICAgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5k
ZW1hY3JvaWZ5KG1hY3JvcykKKyMgbm9kZS5zdWJzdGl0dXRlKG1hcHBpbmcpCisjCisjIGRlbWFj
cm9pZnkoKSBjb25zdHJ1Y3RzIGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IE1hY3Jv
CisjIG5vZGVzLCB3aGlsZSBzdWJzdGl0dXRlKCkgcmVwbGFjZXMgVmFyaWFibGUgbm9kZXMgd2l0
aCB0aGUgZ2l2ZW4KKyMgbm9kZXMgaW4gdGhlIG1hcHBpbmcuCisjCisKK2NsYXNzIE5vZGUKKyAg
ICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgICAgIG1hcENoaWxkcmVuIHsKKyAgICAgICAg
ICAgIHwgY2hpbGQgfAorICAgICAgICAgICAgY2hpbGQuZGVtYWNyb2lmeShtYWNyb3MpCisgICAg
ICAgIH0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgICAg
ICBtYXBDaGlsZHJlbiB7CisgICAgICAgICAgICB8IGNoaWxkIHwKKyAgICAgICAgICAgIGNoaWxk
LnN1YnN0aXR1dGUobWFwcGluZykKKyAgICAgICAgfQorICAgIGVuZAorICAgIAorICAgIGRlZiBz
dWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgICAgIG1hcENoaWxkcmVuIHsKKyAgICAgICAg
ICAgIHwgY2hpbGQgfAorICAgICAgICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5n
KQorICAgICAgICB9CisgICAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8KKyAgICBkZWYgc3Vic3Rp
dHV0ZShtYXBwaW5nKQorICAgICAgICBteU1hcHBpbmcgPSB7fQorICAgICAgICBtYXBwaW5nLmVh
Y2hfcGFpciB7CisgICAgICAgICAgICB8IGtleSwgdmFsdWUgfAorICAgICAgICAgICAgdW5sZXNz
IEB2YXJpYWJsZXMuaW5jbHVkZT8ga2V5CisgICAgICAgICAgICAgICAgbXlNYXBwaW5nW2tleV0g
PSB2YWx1ZQorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbWFwQ2hpbGRyZW4g
eworICAgICAgICAgICAgfCBjaGlsZCB8CisgICAgICAgICAgICBjaGlsZC5zdWJzdGl0dXRlKG15
TWFwcGluZykKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlCisgICAg
ZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICAgICAgaWYgbWFwcGluZ1tzZWxmXQorICAgICAg
ICAgICAgbWFwcGluZ1tzZWxmXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmCisgICAg
ICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgICBkZWYgc3Vic3Rp
dHV0ZUxhYmVscyhtYXBwaW5nKQorICAgICAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICAgICAg
ICBtYXBwaW5nW3NlbGZdCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlbGYKKyAgICAgICAg
ZW5kCisgICAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgICBkZWYgc3Vic3RpdHV0ZShj
b25zdGFudHMpCisgICAgICAgIG5ld0xpc3QgPSBbXQorICAgICAgICBteUNvbnN0YW50cyA9IGNv
bnN0YW50cy5kdXAKKyAgICAgICAgQGxpc3QuZWFjaCB7CisgICAgICAgICAgICB8IGl0ZW0gfAor
ICAgICAgICAgICAgaWYgaXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAgICAgICAgICAgICBteUNv
bnN0YW50c1tpdGVtLnZhcmlhYmxlXSA9IGl0ZW0udmFsdWUuc3Vic3RpdHV0ZShteUNvbnN0YW50
cykKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uc3Vi
c3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAg
IFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICAgIGVuZAorICAgIAorICAgIGRl
ZiByZW5hbWVMYWJlbHMoY29tbWVudCkKKyAgICAgICAgbWFwcGluZyA9IHt9CisgICAgICAgIAor
ICAgICAgICBAbGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgaXRlbSB8CisgICAgICAgICAgICBp
ZiBpdGVtLmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAgICAgICAgICBtYXBwaW5nW2l0ZW1dID0g
TG9jYWxMYWJlbC51bmlxdWUoaWYgY29tbWVudCB0aGVuIGNvbW1lbnQgKyAiXyIgZWxzZSAiIiBl
bmQgKyBpdGVtLmNsZWFuTmFtZSkKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgZW5kCisgICAgCisgICAg
ZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAgICAgICBteU1hY3JvcyA9IG1hY3Jvcy5kdXAKKyAg
ICAgICAgQGxpc3QuZWFjaCB7CisgICAgICAgICAgICB8IGl0ZW0gfAorICAgICAgICAgICAgaWYg
aXRlbS5pc19hPyBNYWNybworICAgICAgICAgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBp
dGVtCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBuZXdMaXN0ID0gW10KKyAg
ICAgICAgQGxpc3QuZWFjaCB7CisgICAgICAgICAgICB8IGl0ZW0gfAorICAgICAgICAgICAgaWYg
aXRlbS5pc19hPyBNYWNybworICAgICAgICAgICAgICAgICMgSWdub3JlLgorICAgICAgICAgICAg
ZWxzaWYgaXRlbS5pc19hPyBNYWNyb0NhbGwKKyAgICAgICAgICAgICAgICBtYXBwaW5nID0ge30K
KyAgICAgICAgICAgICAgICBteU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisgICAgICAgICAgICAg
ICAgcmFpc2UgIkNvdWxkIG5vdCBmaW5kIG1hY3JvICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29k
ZU9yaWdpblN0cmluZ30iIHVubGVzcyBteU1hY3Jvc1tpdGVtLm5hbWVdCisgICAgICAgICAgICAg
ICAgcmFpc2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxsIHRvICN7aXRlbS5uYW1l
fSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVtLm9wZXJhbmRzLnNpemUg
PT0gbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQorICAgICAgICAgICAgICAgIGl0
ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgICAgICAgICAgIHwgaWR4IHwKKyAg
ICAgICAgICAgICAgICAgICAgaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IFZhcmlhYmxlIGFu
ZCBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9
IG15TWFjcm9zW2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgICAgICAgICAg
ICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmls
CisgICAgICAgICAgICAgICAgICAgIGVsc2lmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBNYWNy
bworICAgICAgICAgICAgICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVd
LnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgICAg
ICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFt
ZV0gPSBuaWwKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAg
ICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9IG5pbAor
ICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlh
Ymxlc1tpZHhdXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgICAgICAgICBlbmQK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbmV3TGlzdCArPSBteU1hY3Jvc1tp
dGVtLm5hbWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNyb3Mp
LnJlbmFtZUxhYmVscyhpdGVtLm5hbWUpLmxpc3QKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uZGVtYWNyb2lmeShteU1hY3JvcykKKyAgICAgICAgICAg
IGVuZAorICAgICAgICB9CisgICAgICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0
KS5zdWJzdGl0dXRlKHt9KQorICAgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5yZXNvbHZlT2Zmc2V0
cyhvZmZzZXRzLCBzaXplcykKKyMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGhhcyBvZmZz
ZXQgdmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMKKyMgb2Zmc2V0cy4KKyMKKworY2xhc3MgTm9k
ZQorICAgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICAgICAgbWFwQ2hp
bGRyZW4geworICAgICAgICAgICAgfCBjaGlsZCB8CisgICAgICAgICAgICBjaGlsZC5yZXNvbHZl
T2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNz
IFN0cnVjdE9mZnNldAorICAgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAg
ICAgICAgaWYgb2Zmc2V0c1tzZWxmXQorICAgICAgICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3Jp
Z2luLCBvZmZzZXRzW3NlbGZdKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmCisgICAg
ICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZgorICAgIGRlZiByZXNvbHZlT2Zm
c2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICAgICAgaWYgc2l6ZXNbc2VsZl0KKyAgICAgICAgICAg
IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgc2l6ZXNbc2VsZl0pCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHB1dHMgIkNvdWxkIG5vdCBmaW5kICN7c2VsZi5pbnNwZWN0fSBpbiAje3NpemVz
LmtleXMuaW5zcGVjdH0iCisgICAgICAgICAgICBwdXRzICJzaXplcyA9ICN7c2l6ZXMuaW5zcGVj
dH0iCisgICAgICAgICAgICBzZWxmCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKKyMKKyMg
bm9kZS5mb2xkCisjCisjIFJlc29sdmUgY29uc3RhbnQgcmVmZXJlbmNlcyBhbmQgY29tcHV0ZSBh
cml0aG1ldGljIGV4cHJlc3Npb25zLgorIworCitjbGFzcyBOb2RlCisgICAgZGVmIGZvbGQKKyAg
ICAgICAgbWFwQ2hpbGRyZW4geworICAgICAgICAgICAgfCBjaGlsZCB8CisgICAgICAgICAgICBj
aGlsZC5mb2xkCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVz
CisgICAgZGVmIGZvbGQKKyAgICAgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgICAgIEByaWdo
dCA9IEByaWdodC5mb2xkCisgICAgICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJ
bW1lZGlhdGUKKyAgICAgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlh
dGUKKyAgICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSArIEByaWdo
dC52YWx1ZSkKKyAgICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzCisgICAgZGVmIGZv
bGQKKyAgICAgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgICAgIEByaWdodCA9IEByaWdodC5m
b2xkCisgICAgICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAg
ICAgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAg
SW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAtIEByaWdodC52YWx1ZSkKKyAg
ICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzCisgICAgZGVmIGZvbGQKKyAgICAgICAg
QGxlZnQgPSBAbGVmdC5mb2xkCisgICAgICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgICAg
IHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgcmV0dXJu
IHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgSW1tZWRpYXRlLm5l
dyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAqIEByaWdodC52YWx1ZSkKKyAgICBlbmQKK2VuZAor
CitjbGFzcyBOZWdJbW1lZGlhdGUKKyAgICBkZWYgZm9sZAorICAgICAgICBAY2hpbGQgPSBAY2hp
bGQuZm9sZAorICAgICAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGNoaWxkLmlzX2E/IEltbWVkaWF0
ZQorICAgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC1AY2hpbGQudmFsdWUpCisgICAg
ZW5kCitlbmQKKworIworIyBub2RlLnJlc29sdmVBZnRlclNldHRpbmdzKG9mZnNldHMsIHNpemVz
KQorIworIyBDb21waWxlIGFzc2VtYmx5IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4KKyMKKwor
Y2xhc3MgTm9kZQorICAgIGRlZiByZXNvbHZlKG9mZnNldHMsIHNpemVzKQorICAgICAgICBkZW1h
Y3JvaWZ5KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykuZm9sZAorICAgIGVuZAor
ZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNjgxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMg
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCitjbGFzcyBSZWdpc3RlcklECisgICAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAg
ICAgIGNhc2UgbmFtZQorICAgICAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0MSIsICJhMSIs
ICJyMSIsICJ0MiIsICJ0MyIKKyAgICAgICAgICAgIHRydWUKKyAgICAgICAgd2hlbiAidDQiLCAi
Y2ZyIgorICAgICAgICAgICAgZmFsc2UKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UK
KyAgICAgICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAg
ICAgICAgY2FzZSBuYW1lCisgICAgICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgICAg
ICAgY2FzZSBraW5kCisgICAgICAgICAgICB3aGVuIDpieXRlCisgICAgICAgICAgICAgICAgIiVh
bCIKKyAgICAgICAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgICAgICAgICAiJWF4IgorICAgICAg
ICAgICAgd2hlbiA6aW50CisgICAgICAgICAgICAgICAgIiVlYXgiCisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJ0
MSIsICJhMSIsICJyMSIKKyAgICAgICAgICAgIGNhc2Uga2luZAorICAgICAgICAgICAgd2hlbiA6
Ynl0ZQorICAgICAgICAgICAgICAgICIlZGwiCisgICAgICAgICAgICB3aGVuIDpoYWxmCisgICAg
ICAgICAgICAgICAgIiVkeCIKKyAgICAgICAgICAgIHdoZW4gOmludAorICAgICAgICAgICAgICAg
ICIlZWR4IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAg
ICAgICBlbmQKKyAgICAgICAgd2hlbiAidDIiCisgICAgICAgICAgICBjYXNlIGtpbmQKKyAgICAg
ICAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgICAgICAgICAiJWNsIgorICAgICAgICAgICAgd2hl
biA6aGFsZgorICAgICAgICAgICAgICAgICIlY3giCisgICAgICAgICAgICB3aGVuIDppbnQKKyAg
ICAgICAgICAgICAgICAiJWVjeCIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBy
YWlzZQorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gInQzIgorICAgICAgICAgICAgY2Fz
ZSBraW5kCisgICAgICAgICAgICB3aGVuIDpieXRlCisgICAgICAgICAgICAgICAgIiVibCIKKyAg
ICAgICAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgICAgICAgICAiJWJ4IgorICAgICAgICAgICAg
d2hlbiA6aW50CisgICAgICAgICAgICAgICAgIiVlYngiCisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJ0NCIKKyAg
ICAgICAgICAgIGNhc2Uga2luZAorICAgICAgICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAgICAg
ICAgICIlc2lsIgorICAgICAgICAgICAgd2hlbiA6aGFsZgorICAgICAgICAgICAgICAgICIlc2ki
CisgICAgICAgICAgICB3aGVuIDppbnQKKyAgICAgICAgICAgICAgICAiJWVzaSIKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZW5kCisgICAgICAg
IHdoZW4gImNmciIKKyAgICAgICAgICAgIGNhc2Uga2luZAorICAgICAgICAgICAgd2hlbiA6Ynl0
ZQorICAgICAgICAgICAgICAgICIlZGlsIgorICAgICAgICAgICAgd2hlbiA6aGFsZgorICAgICAg
ICAgICAgICAgICIlZGkiCisgICAgICAgICAgICB3aGVuIDppbnQKKyAgICAgICAgICAgICAgICAi
JWVkaSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAg
ICAgZW5kCisgICAgICAgIHdoZW4gInNwIgorICAgICAgICAgICAgY2FzZSBraW5kCisgICAgICAg
ICAgICB3aGVuIDpieXRlCisgICAgICAgICAgICAgICAgIiVzcGwiCisgICAgICAgICAgICB3aGVu
IDpoYWxmCisgICAgICAgICAgICAgICAgIiVzcCIKKyAgICAgICAgICAgIHdoZW4gOmludAorICAg
ICAgICAgICAgICAgICIlZXNwIgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJh
aXNlCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkJh
ZCByZWdpc3RlciAje25hbWV9IGZvciBYODYgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAg
ICAgZW5kCisgICAgZW5kCisgICAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgICAgICIq
I3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQK
KyAgICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICAgICByYWlzZSB1bmxlc3Mga2luZCA9PSA6
ZG91YmxlCisgICAgICAgIGNhc2UgbmFtZQorICAgICAgICB3aGVuICJmdDAiLCAiZmEwIiwgImZy
IgorICAgICAgICAgICAgIiV4bW0wIgorICAgICAgICB3aGVuICJmdDEiLCAiZmExIgorICAgICAg
ICAgICAgIiV4bW0xIgorICAgICAgICB3aGVuICJmdDIiLCAiZmEyIgorICAgICAgICAgICAgIiV4
bW0yIgorICAgICAgICB3aGVuICJmdDMiLCAiZmEzIgorICAgICAgICAgICAgIiV4bW0zIgorICAg
ICAgICB3aGVuICJmdDQiCisgICAgICAgICAgICAiJXhtbTQiCisgICAgICAgIHdoZW4gImZ0NSIK
KyAgICAgICAgICAgICIleG1tNSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkJh
ZCByZWdpc3RlciAje25hbWV9IGZvciBYODYgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAg
ICAgZW5kCisgICAgZW5kCisgICAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgICAgICIq
I3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAg
ICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICAgICAiJCN7dmFsdWV9IgorICAgIGVuZAorICAg
IGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICAgICAiI3t2YWx1ZX0iCisgICAgZW5kCitl
bmQKKworY2xhc3MgQWRkcmVzcworICAgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgICAgICB0
cnVlCisgICAgZW5kCisgICAgCisgICAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAgICAgIiN7
b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0pIgorICAgIGVuZAorICAgIGRl
ZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisg
ICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgICAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2
CisgICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgeDg2T3BlcmFuZChraW5kKQor
ICAgICAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSwgI3tpbmRl
eC54ODZPcGVyYW5kKDppbnQpfSwgI3tzY2FsZX0pIgorICAgIGVuZAorCisgICAgZGVmIHg4NkNh
bGxPcGVyYW5kKGtpbmQpCisgICAgICAgICIqI3t4ODZvcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQK
K2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgICBkZWYgc3VwcG9ydHM4Qml0T25YODYK
KyAgICAgICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisg
ICAgICAgICIje2FkZHJlc3MudmFsdWV9IgorICAgIGVuZAorCisgICAgZGVmIHg4NkNhbGxPcGVy
YW5kKGtpbmQpCisgICAgICAgICIqI3thZGRyZXNzLnZhbHVlfSIKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBMYWJlbFJlZmVyZW5jZQorICAgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICAg
ICBhc21MYWJlbAorICAgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UKKyAg
ICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAgICAgYXNtTGFiZWwKKyAgICBlbmQKK2Vu
ZAorCitjbGFzcyBJbnN0cnVjdGlvbgorICAgIGRlZiB4ODZPcGVyYW5kcygqa2luZHMpCisgICAg
ICAgIHJhaXNlIHVubGVzcyBraW5kcy5zaXplID09IG9wZXJhbmRzLnNpemUKKyAgICAgICAgcmVz
dWx0ID0gW10KKyAgICAgICAga2luZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgICB8IGlkeCB8
CisgICAgICAgICAgICByZXN1bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZPcGVyYW5kKGtpbmRzW2lk
eF0pCisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LmpvaW4oIiwgIikKKyAgICBlbmQKKworICAg
IGRlZiB4ODZTdWZmaXgoa2luZCkKKyAgICAgICAgY2FzZSBraW5kCisgICAgICAgIHdoZW4gOmJ5
dGUKKyAgICAgICAgICAgICJiIgorICAgICAgICB3aGVuIDpoYWxmCisgICAgICAgICAgICAidyIK
KyAgICAgICAgd2hlbiA6aW50CisgICAgICAgICAgICAibCIKKyAgICAgICAgd2hlbiA6ZG91Ymxl
CisgICAgICAgICAgICAic2QiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlCisgICAg
ICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5k
cyhvcGNvZGUsIGtpbmQsIG51bU9wZXJhbmRzKQorICAgICAgICBpZiBudW1PcGVyYW5kcyA9PSAz
CisgICAgICAgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAg
ICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0s
ICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBlbHNpZiBvcGVy
YW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiI3tvcGNv
ZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3Bl
cmFuZChraW5kKX0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRz
ICJtb3Yje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwg
I3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgICAgICAkYXNtLnB1
dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRz
WzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChr
aW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgIGVuZAorICAg
IGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZPcChvcGNvZGUsIGtpbmQpCisgICAgICAgIGhh
bmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSkKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgaGFuZGxlWDg2U2hpZnQob3Bjb2RlLCBraW5kKQorICAgICAg
ICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0
ZXJJRC5mb3JOYW1lKG5pbCwgInQyIikKKyAgICAgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoa2luZCl9IgorICAgICAgICBlbHNlCisgICAgICAgICAgICAkYXNtLnB1dHMgInhjaGdsICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAgICAgICAgICAkYXNtLnB1
dHMgIiN7b3Bjb2RlfSAlY2wsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAg
ICAgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0s
ICVlY3giCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZEb3Vi
bGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAgICAgICBjYXNlIG1vZGUKKyAgICAgICAg
d2hlbiA6bm9ybWFsCisgICAgICAgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUp
fSIKKyAgICAgICAgd2hlbiA6cmV2ZXJzZQorICAgICAgICAgICAgJGFzbS5wdXRzICJ1Y29taXNk
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlIG1vZGUuaW5z
cGVjdAorICAgICAgICBlbmQKKyAgICAgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tv
cGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgZW5kCisgICAgCisgICAgZGVmIGhhbmRsZVg4Nklu
dENvbXBhcmUob3Bjb2RlU3VmZml4LCBraW5kKQorICAgICAgICBpZiBvcGVyYW5kc1swXS5pc19h
PyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDAgYW5kIG9wZXJhbmRzWzFdLmlz
X2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9
PSAibmUiKQorICAgICAgICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgIGVsc2lmIG9wZXJhbmRzWzFd
LmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNb
MF0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3Vm
Zml4ID09ICJuZSIpCisgICAgICAgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChraW5k
KX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgJGFzbS5wdXRzICJjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAg
ZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIGhhbmRsZVg4NkludEJyYW5jaChicmFuY2hPcGNv
ZGUsIGtpbmQpCisgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmUoYnJhbmNoT3Bjb2RlWzEuLi0x
XSwga2luZCkKKyAgICAgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1sy
XS5hc21MYWJlbH0iCisgICAgZW5kCisgICAgCisgICAgZGVmIGhhbmRsZVg4NlNldChzZXRPcGNv
ZGUsIG9wZXJhbmQpCisgICAgICAgIGlmIG9wZXJhbmQuc3VwcG9ydHM4Qml0T25YODYKKyAgICAg
ICAgICAgICRhc20ucHV0cyAiI3tzZXRPcGNvZGV9ICN7b3BlcmFuZC54ODZPcGVyYW5kKDpieXRl
KX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdnpibCAje29wZXJhbmQueDg2T3BlcmFuZCg6
Ynl0ZSl9LCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4
IgorICAgICAgICAgICAgJGFzbS5wdXRzICIje3NldE9wY29kZX0gJWFsIgorICAgICAgICAgICAg
JGFzbS5wdXRzICJtb3Z6YmwgJWFsLCAlZWF4IgorICAgICAgICAgICAgJGFzbS5wdXRzICJ4Y2hn
bCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgICAgIGVuZAorICAgIGVu
ZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlU2V0KHNldE9wY29kZSwga2luZCkK
KyAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZShzZXRPcGNvZGVbMy4uLTFdLCBraW5kKQorICAg
ICAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kc1syXSkKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgaGFuZGxlWDg2VGVzdChraW5kKQorICAgICAgICB2YWx1ZSA9IG9wZXJhbmRzWzBd
CisgICAgICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgICAgICB3aGVuIDIKKyAgICAgICAgICAg
IG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAgICAgICB3aGVuIDMKKyAg
ICAgICAgICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBy
YWlzZSAiRXhwZWN0ZWQgMiBvciAzIG9wZXJhbmRzLCBidXQgZ290ICN7b3BlcmFuZHMuc2l6ZX0g
YXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5kCisgICAgICAgIAorICAgICAgICBp
ZiBtYXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQorICAgICAgICAgICAg
aWYgdmFsdWUuaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgICRhc20ucHV0cyAidGVz
dCN7eDg2U3VmZml4KGtpbmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4
Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICRhc20u
cHV0cyAiY21wI3t4ODZTdWZmaXgoa2luZCl9ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICRhc20ucHV0cyAi
dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje21hc2sueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUu
eDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBo
YW5kbGVYODZCcmFuY2hUZXN0KGJyYW5jaE9wY29kZSwga2luZCkKKyAgICAgICAgaGFuZGxlWDg2
VGVzdChraW5kKQorICAgICAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRz
Lmxhc3QuYXNtTGFiZWx9IgorICAgIGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZTZXRUZXN0
KHNldE9wY29kZSwga2luZCkKKyAgICAgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgICAgICBo
YW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kcy5sYXN0KQorICAgIGVuZAorICAgIAorICAg
IGRlZiBoYW5kbGVYODZPcEJyYW5jaChvcGNvZGUsIGJyYW5jaE9wY29kZSwga2luZCkKKyAgICAg
ICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXpl
IC0gMSkKKyAgICAgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgICAgIHdoZW4gNAorICAgICAg
ICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgICAgIHdoZW4gMworICAgICAgICAg
ICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJh
aXNlIHNlbGYuaW5zcGVjdAorICAgICAgICBlbmQKKyAgICAgICAgJGFzbS5wdXRzICIje2JyYW5j
aE9wY29kZX0gI3tqdW1wVGFyZ2V0LmFzbUxhYmVsfSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
aGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAgICAgICAgaWYgb3BlcmFu
ZHMuc2l6ZSA9PSA0IGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAg
JGFzbS5wdXRzICJuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAg
ICAgICAkYXNtLnB1dHMgImFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
aGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMoInN1YiN7eDg2U3VmZml4KGtpbmQpfSIsIGtpbmQs
IG9wZXJhbmRzLnNpemUgLSAxKQorICAgICAgICBlbmQKKyAgICAgICAgY2FzZSBvcGVyYW5kcy5z
aXplCisgICAgICAgIHdoZW4gNAorICAgICAgICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNd
CisgICAgICAgIHdoZW4gMworICAgICAgICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgICAgICBlbmQK
KyAgICAgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0LmFzbUxhYmVs
fSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbG93ZXJYODYKKyAgICAgICAgJGFzbS5jb21tZW50
IGNvZGVPcmlnaW5TdHJpbmcKKyAgICAgICAgY2FzZSBvcGNvZGUKKyAgICAgICAgd2hlbiAiYWRk
aSIsICJhZGRwIgorICAgICAgICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5k
c1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFu
ZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVy
YW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0u
dmFsdWUgPT0gMAorICAgICAgICAgICAgICAgICAgICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0gb3Bl
cmFuZHNbMl0KKyAgICAgICAgICAgICAgICAgICAgICAgICRhc20ucHV0cyAibW92bCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICRhc20ucHV0cyAibGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQp
fSIKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUg
PT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgIHJh
aXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICAgICAgICAg
cmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgICAgICAg
ICAkYXNtLnB1dHMgImxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUu
bmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAgICAgICAgICAgJGFzbS5wdXRz
ICJhZGRsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgICAgICAgICAgIGVuZAor
ICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgICAgICAg
IGhhbmRsZVg4Nk9wKCJhbmRsIiwgOmludCkKKyAgICAgICAgd2hlbiAibHNoaWZ0aSIKKyAgICAg
ICAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYWxsIiwgOmludCkKKyAgICAgICAgd2hlbiAibXVsaSIK
KyAgICAgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8g
SW1tZWRpYXRlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJpbXVsbCAje3g4Nk9wZXJhbmRz
KDppbnQsIDppbnQsIDppbnQpfSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAj
IEZJWE1FOiBjb3VsZCBkbyBzb21lIHBlZXBob2xlIGluIGNhc2UgdGhlIGxlZnQgb3BlcmFuZCBp
cyBpbW1lZGlhdGUgYW5kIGl0J3MKKyAgICAgICAgICAgICAgICAjIGEgcG93ZXIgb2YgdHdvLgor
ICAgICAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJpbXVsbCIsIDppbnQpCisgICAgICAgICAgICBl
bmQKKyAgICAgICAgd2hlbiAibmVnaSIKKyAgICAgICAgICAgICRhc20ucHV0cyAibmVnbCAje3g4
Nk9wZXJhbmRzKDppbnQpfSIKKyAgICAgICAgd2hlbiAibm90aSIKKyAgICAgICAgICAgICRhc20u
cHV0cyAibm90bCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICAgICAgd2hlbiAib3JpIiwgIm9y
cCIKKyAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJvcmwiLCA6aW50KQorICAgICAgICB3aGVuICJy
c2hpZnRpIgorICAgICAgICAgICAgaGFuZGxlWDg2U2hpZnQoInNhcmwiLCA6aW50KQorICAgICAg
ICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgICAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzaHJsIiwgOmlu
dCkKKyAgICAgICAgd2hlbiAic3ViaSIsICJzdWJwIgorICAgICAgICAgICAgaWYgb3BlcmFuZHMu
c2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAg
ICRhc20ucHV0cyAibmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
ICAgICAgICAgICRhc20ucHV0cyAiYWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9
LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJzdWJsIiwgOmludCkKKyAgICAgICAgICAgIGVuZAor
ICAgICAgICB3aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICAgICAgICBoYW5kbGVYODZPcCgieG9y
bCIsIDppbnQpCisgICAgICAgIHdoZW4gImxvYWRpIiwgInN0b3JlaSIsICJsb2FkcCIsICJzdG9y
ZXAiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50
KX0iCisgICAgICAgIHdoZW4gImxvYWRiIgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3Z6Ymwg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgICAgIHdoZW4gImxvYWRicyIKKyAgICAgICAgICAgICRhc20ucHV0cyAi
bW92c2JsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgICAgICB3aGVuICJsb2FkaCIKKyAgICAgICAgICAgICRhc20u
cHV0cyAibW92endsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICB3aGVuICJsb2FkaHMiCisgICAgICAgICAg
ICAkYXNtLnB1dHMgIm1vdnN3bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgd2hlbiAic3RvcmViIgorICAg
ICAgICAgICAgJGFzbS5wdXRzICJtb3ZiICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0iCisg
ICAgICAgIHdoZW4gImxvYWRkIiwgIm1vdmVkIiwgInN0b3JlZCIKKyAgICAgICAgICAgICRhc20u
cHV0cyAibW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgICAgIHdo
ZW4gImFkZGQiCisgICAgICAgICAgICAkYXNtLnB1dHMgImFkZHNkICN7eDg2T3BlcmFuZHMoOmRv
dWJsZSwgOmRvdWJsZSl9IgorICAgICAgICB3aGVuICJkaXZkIgorICAgICAgICAgICAgJGFzbS5w
dXRzICJkaXZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICAgICAgd2hl
biAic3ViZCIKKyAgICAgICAgICAgICRhc20ucHV0cyAic3Vic2QgI3t4ODZPcGVyYW5kcyg6ZG91
YmxlLCA6ZG91YmxlKX0iCisgICAgICAgIHdoZW4gIm11bGQiCisgICAgICAgICAgICAkYXNtLnB1
dHMgIm11bHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgICAgICB3aGVu
ICJzcXJ0ZCIKKyAgICAgICAgICAgICRhc20ucHV0cyAic3FydHNkICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisg
ICAgICAgIHdoZW4gImNpMmQiCisgICAgICAgICAgICAkYXNtLnB1dHMgImN2dHNpMnNkICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91
YmxlKX0iCisgICAgICAgIHdoZW4gImJkZXEiCisgICAgICAgICAgICBpc1Vub3JkZXJlZCA9IExv
Y2FsTGFiZWwudW5pcXVlKCJiZGVxIikKKyAgICAgICAgICAgICRhc20ucHV0cyAidWNvbWlzZCAj
e29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmRvdWJsZSl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJqcCAje0xhYmVsUmVmZXJlbmNl
Lm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkuYXNtTGFiZWx9IgorICAgICAgICAgICAgJGFz
bS5wdXRzICJqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBvcGVyYW5kc1syXSku
YXNtTGFiZWx9IgorICAgICAgICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAgICAg
IHdoZW4gImJkbmVxIgorICAgICAgICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqbmUiLCA6
bm9ybWFsKQorICAgICAgICB3aGVuICJiZGd0IgorICAgICAgICAgICAgaGFuZGxlWDg2RG91Ymxl
QnJhbmNoKCJqYSIsIDpub3JtYWwpCisgICAgICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgICAgICAg
IGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOm5vcm1hbCkKKyAgICAgICAgd2hlbiAiYmRs
dCIKKyAgICAgICAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6cmV2ZXJzZSkKKyAg
ICAgICAgd2hlbiAiYmRsdGVxIgorICAgICAgICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJq
YWUiLCA6cmV2ZXJzZSkKKyAgICAgICAgd2hlbiAiYmRlcXVuIgorICAgICAgICAgICAgaGFuZGxl
WDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwpCisgICAgICAgIHdoZW4gImJkbmVxdW4iCisg
ICAgICAgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAg
ICAgICAgICAgIGlzRXF1YWwgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICAg
ICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUp
fSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICAgICAgICRhc20u
cHV0cyAianAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLmFz
bUxhYmVsfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiamUgI3tMYWJlbFJlZmVyZW5jZS5uZXco
Y29kZU9yaWdpbiwgaXNFcXVhbCkuYXNtTGFiZWx9IgorICAgICAgICAgICAgaXNVbm9yZGVyZWQu
bG93ZXIoIlg4NiIpCisgICAgICAgICAgICAkYXNtLnB1dHMgImptcCAje29wZXJhbmRzWzJdLmFz
bUxhYmVsfSIKKyAgICAgICAgICAgIGlzRXF1YWwubG93ZXIoIlg4NiIpCisgICAgICAgIHdoZW4g
ImJkZ3R1biIKKyAgICAgICAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6cmV2ZXJz
ZSkKKyAgICAgICAgd2hlbiAiYmRndGVxdW4iCisgICAgICAgICAgICBoYW5kbGVYODZEb3VibGVC
cmFuY2goImpiZSIsIDpyZXZlcnNlKQorICAgICAgICB3aGVuICJiZGx0dW4iCisgICAgICAgICAg
ICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOm5vcm1hbCkKKyAgICAgICAgd2hlbiAiYmRs
dGVxdW4iCisgICAgICAgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3JtYWwp
CisgICAgICAgIHdoZW4gImJ0ZDJpIgorICAgICAgICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiY21wbCAkMHg4MDAwMDAwMCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJqZSAj
e29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAidGQyaSIKKyAgICAgICAgICAg
ICRhc20ucHV0cyAiY3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0s
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIHdoZW4gImJjZDJpIgor
ICAgICAgICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5k
KDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAg
ICRhc20ucHV0cyAidGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiamUgI3tv
cGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImN2dHNpMnNkICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgICAgICAgJGFzbS5w
dXRzICJ1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03Igor
ICAgICAgICAgICAgJGFzbS5wdXRzICJqcCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAg
ICAgICAgICRhc20ucHV0cyAiam5lICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3
aGVuICJtb3ZkeiIKKyAgICAgICAgICAgICRhc20ucHV0cyAieG9ycGQgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIK
KyAgICAgICAgd2hlbiAicG9wIgorICAgICAgICAgICAgJGFzbS5wdXRzICJwb3AgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgd2hlbiAicHVzaCIKKyAgICAgICAgICAg
ICRhc20ucHV0cyAicHVzaCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
ICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgICAgICAgaWYgSW1tZWRpYXRl
Lm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3Rl
cklECisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJ4b3JsICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAg
ICBlbHNpZiBvcGVyYW5kc1swXSAhPSBvcGVyYW5kc1sxXQorICAgICAgICAgICAgICAgICRhc20u
cHV0cyAibW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgICAgICAgIGVuZAor
ICAgICAgICB3aGVuICJub3AiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm5vcCIKKyAgICAgICAg
d2hlbiAiYmllcSIsICJicGVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIs
IDppbnQpCisgICAgICAgIHdoZW4gImJpbmVxIiwgImJwbmVxIgorICAgICAgICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqbmUiLCA6aW50KQorICAgICAgICB3aGVuICJiaWEiLCAiYnBhIgorICAg
ICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDppbnQpCisgICAgICAgIHdoZW4gImJp
YWVxIiwgImJwYWVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6aW50
KQorICAgICAgICB3aGVuICJiaWIiLCAiYnBiIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqYiIsIDppbnQpCisgICAgICAgIHdoZW4gImJpYmVxIiwgImJwYmVxIgorICAgICAgICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6aW50KQorICAgICAgICB3aGVuICJiaWd0Iiwg
ImJwZ3QiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmludCkKKyAgICAg
ICAgd2hlbiAiYmlndGVxIiwgImJwZ3RlcSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamdlIiwgOmludCkKKyAgICAgICAgd2hlbiAiYmlsdCIsICJicGx0IgorICAgICAgICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDppbnQpCisgICAgICAgIHdoZW4gImJpbHRlcSIsICJi
cGx0ZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsZSIsIDppbnQpCisgICAg
ICAgIHdoZW4gImJiZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmJ5
dGUpCisgICAgICAgIHdoZW4gImJibmVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqbmUiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAiYmJhIgorICAgICAgICAgICAgaGFuZGxlWDg2
SW50QnJhbmNoKCJqYSIsIDpieXRlKQorICAgICAgICB3aGVuICJiYmFlcSIKKyAgICAgICAgICAg
IGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmJ5dGUpCisgICAgICAgIHdoZW4gImJiYiIKKyAg
ICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAi
YmJiZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRlKQorICAg
ICAgICB3aGVuICJiYmd0IgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDpi
eXRlKQorICAgICAgICB3aGVuICJiYmd0ZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImpnZSIsIDpieXRlKQorICAgICAgICB3aGVuICJiYmx0IgorICAgICAgICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqbCIsIDpieXRlKQorICAgICAgICB3aGVuICJiYmx0ZXEiCisgICAgICAg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsdGVxIiwgOmJ5dGUpCisgICAgICAgIHdoZW4gImJ0
aW8iLCAiYnRwbyIKKyAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmludCkK
KyAgICAgICAgd2hlbiAiYnRpcyIsICJidHBzIgorICAgICAgICAgICAgaGFuZGxlWDg2QnJhbmNo
VGVzdCgianMiLCA6aW50KQorICAgICAgICB3aGVuICJidGl6IiwgImJ0cHoiCisgICAgICAgICAg
ICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDppbnQpCisgICAgICAgIHdoZW4gImJ0aW56Iiwg
ImJ0cG56IgorICAgICAgICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmludCkKKyAg
ICAgICAgd2hlbiAiYnRibyIKKyAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwg
OmJ5dGUpCisgICAgICAgIHdoZW4gImJ0YnMiCisgICAgICAgICAgICBoYW5kbGVYODZCcmFuY2hU
ZXN0KCJqcyIsIDpieXRlKQorICAgICAgICB3aGVuICJidGJ6IgorICAgICAgICAgICAgaGFuZGxl
WDg2QnJhbmNoVGVzdCgianoiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAiYnRibnoiCisgICAgICAg
ICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAiam1w
IgorICAgICAgICAgICAgJGFzbS5wdXRzICJqbXAgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFu
ZCg6aW50KX0iCisgICAgICAgIHdoZW4gImJhZGRpbyIsICJiYWRkcG8iCisgICAgICAgICAgICBo
YW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbyIsIDppbnQpCisgICAgICAgIHdoZW4gImJhZGRp
cyIsICJiYWRkcHMiCisgICAgICAgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqcyIs
IDppbnQpCisgICAgICAgIHdoZW4gImJhZGRpeiIsICJiYWRkcHoiCisgICAgICAgICAgICBoYW5k
bGVYODZPcEJyYW5jaCgiYWRkbCIsICJqeiIsIDppbnQpCisgICAgICAgIHdoZW4gImJhZGRpbnoi
LCAiYmFkZHBueiIKKyAgICAgICAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpueiIs
IDppbnQpCisgICAgICAgIHdoZW4gImJzdWJpbyIKKyAgICAgICAgICAgIGhhbmRsZVg4NlN1YkJy
YW5jaCgiam8iLCA6aW50KQorICAgICAgICB3aGVuICJic3ViaXMiCisgICAgICAgICAgICBoYW5k
bGVYODZTdWJCcmFuY2goImpzIiwgOmludCkKKyAgICAgICAgd2hlbiAiYnN1Yml6IgorICAgICAg
ICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqeiIsIDppbnQpCisgICAgICAgIHdoZW4gImJzdWJp
bnoiCisgICAgICAgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpueiIsIDppbnQpCisgICAgICAg
IHdoZW4gImJtdWxpbyIKKyAgICAgICAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJq
byIsIDppbnQpCisgICAgICAgIHdoZW4gImJtdWxpcyIKKyAgICAgICAgICAgIGhhbmRsZVg4Nk9w
QnJhbmNoKCJpbXVsbCIsICJqcyIsIDppbnQpCisgICAgICAgIHdoZW4gImJtdWxpeiIKKyAgICAg
ICAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqeiIsIDppbnQpCisgICAgICAgIHdo
ZW4gImJtdWxpbnoiCisgICAgICAgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAiam56
IiwgOmludCkKKyAgICAgICAgd2hlbiAiYm9yaW8iCisgICAgICAgICAgICBoYW5kbGVYODZPcEJy
YW5jaCgib3JsIiwgImpvIiwgOmludCkKKyAgICAgICAgd2hlbiAiYm9yaXMiCisgICAgICAgICAg
ICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpzIiwgOmludCkKKyAgICAgICAgd2hlbiAiYm9y
aXoiCisgICAgICAgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImp6IiwgOmludCkKKyAg
ICAgICAgd2hlbiAiYm9yaW56IgorICAgICAgICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIs
ICJqbnoiLCA6aW50KQorICAgICAgICB3aGVuICJicmVhayIKKyAgICAgICAgICAgICRhc20ucHV0
cyAiaW50ICQzIgorICAgICAgICB3aGVuICJjYWxsIgorICAgICAgICAgICAgJGFzbS5wdXRzICJj
YWxsICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgICAgICB3aGVuICJy
ZXQiCisgICAgICAgICAgICAkYXNtLnB1dHMgInJldCIKKyAgICAgICAgd2hlbiAiY2llcSIsICJj
cGVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQpCisg
ICAgICAgIHdoZW4gImNpbmVxIiwgImNwbmVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29t
cGFyZVNldCgic2V0bmUiLCA6aW50KQorICAgICAgICB3aGVuICJjaWEiLCAiY3BhIgorICAgICAg
ICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YSIsIDppbnQpCisgICAgICAgIHdoZW4g
ImNpYWVxIiwgImNwYWVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
YWUiLCA6aW50KQorICAgICAgICB3aGVuICJjaWIiLCAiY3BiIgorICAgICAgICAgICAgaGFuZGxl
WDg2SW50Q29tcGFyZVNldCgic2V0YiIsIDppbnQpCisgICAgICAgIHdoZW4gImNpYmVxIiwgImNw
YmVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YmUiLCA6aW50KQor
ICAgICAgICB3aGVuICJjaWd0IiwgImNwZ3QiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRDb21w
YXJlU2V0KCJzZXRnIiwgOmludCkKKyAgICAgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIKKyAg
ICAgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGdlIiwgOmludCkKKyAgICAgICAg
d2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgi
c2V0bCIsIDppbnQpCisgICAgICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiCisgICAgICAgICAg
ICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisgICAgICAgIHdoZW4gInRp
byIKKyAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6aW50KQorICAgICAgICB3
aGVuICJ0aXMiCisgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmludCkKKyAg
ICAgICAgd2hlbiAidGl6IgorICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDpp
bnQpCisgICAgICAgIHdoZW4gInRpbnoiCisgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJz
ZXRueiIsIDppbnQpCisgICAgICAgIHdoZW4gInRibyIKKyAgICAgICAgICAgIGhhbmRsZVg4NlNl
dFRlc3QoInNldG8iLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAidGJzIgorICAgICAgICAgICAgaGFu
ZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAgICAgICB3aGVuICJ0YnoiCisgICAgICAg
ICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmJ5dGUpCisgICAgICAgIHdoZW4gInRibnoi
CisgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDpieXRlKQorICAgICAgICB3
aGVuICJwZWVrIgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZsICN7b3BlcmFuZHNbMF0udmFs
dWUgKiA0fSglZXNwKSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAg
d2hlbiAicG9rZSIKKyAgICAgICAgICAgICRhc20ucHV0cyAibW92bCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLnZhbHVlICogNH0oJWVzcCkiCisgICAgICAg
IHdoZW4gImNkcWkiCisgICAgICAgICAgICAkYXNtLnB1dHMgImNkcSIKKyAgICAgICAgd2hlbiAi
aWRpdmkiCisgICAgICAgICAgICAkYXNtLnB1dHMgImlkaXZsICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICAgIHdoZW4gImZpaTJkIgorICAgICAgICAgICAgJGFzbS5wdXRz
ICJtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAgICAgICAkYXNtLnB1dHMgInBz
bGxxICQzMiwgJXhtbTciCisgICAgICAgICAgICAkYXNtLnB1dHMgInBvciAleG1tNywgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICAgd2hlbiAiZmQyaWkiCisgICAg
ICAgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUp
fSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAgICRhc20ucHV0
cyAibW92c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAg
ICAgICAgICAkYXNtLnB1dHMgInBzcmxxICQzMiwgJXhtbTciCisgICAgICAgICAgICAkYXNtLnB1
dHMgIm1vdnNkICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
ICB3aGVuICJibyIKKyAgICAgICAgICAgICRhc20ucHV0cyAiam8gI3tvcGVyYW5kc1swXS5hc21M
YWJlbH0iCisgICAgICAgIHdoZW4gImJzIgorICAgICAgICAgICAgJGFzbS5wdXRzICJqcyAje29w
ZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYnoiCisgICAgICAgICAgICAkYXNt
LnB1dHMgImp6ICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJibnoiCisg
ICAgICAgICAgICAkYXNtLnB1dHMgImpueiAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAg
ICAgd2hlbiAibGVhaSIsICJsZWFwIgorICAgICAgICAgICAgJGFzbS5wdXRzICJsZWFsICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50
KX0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJCYWQgb3Bjb2RlOiAje29wY29k
ZX0iCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRp
b25LaW5kLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kX2gKKyNkZWZpbmUgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisKK25hbWVzcGFjZSBKU0Mg
eworCitlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNv
bnN0cnVjdCB9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENvZGVTcGVjaWFs
aXphdGlvbktpbmRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuaAkocmV2aXNpb24gMTA3NzEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYg
KzI3LDcgQEAKICNkZWZpbmUgQ29tbW9uU2xvd1BhdGhzX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9j
ay5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogCkBAIC00MSw2ICs0MiwzOCBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIENvbW1vblNsb3dQYXRocyB7CiAKK0FMV0FZ
U19JTkxJTkUgRXhlY1N0YXRlKiBhcml0eUNoZWNrRm9yKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0
ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAg
ICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBB
U1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7CisgICAgQ29kZUJsb2NrKiBuZXdDb2Rl
QmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2lu
ZCk7CisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gZXhlYy0+YXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMoKTsKKworICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2Ug
Zm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0
aGUgY2FsbGVyLgorICAgIGlmICghcmVnaXN0ZXJGaWxlLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygp
ICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2Fs
bGVlUmVnaXN0ZXJzKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBU1NFUlQoYXJndW1lbnRD
b3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CisKKyAg
ICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywg
dGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgorICAgIHNpemVf
dCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudElu
Y2x1ZGluZ1RoaXM7CisgICAgUmVnaXN0ZXIqIHNyYyA9IGV4ZWMtPnJlZ2lzdGVycygpOworICAg
IFJlZ2lzdGVyKiBkc3QgPSBleGVjLT5yZWdpc3RlcnMoKSArIGRlbHRhOworCisgICAgaW50IGk7
CisgICAgaW50IGVuZCA9IC1FeGVjU3RhdGU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpcyk7CisgICAgZm9yIChpID0gLTE7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtp
XSA9IHNyY1tpXTsKKworICAgIGVuZCAtPSBkZWx0YTsKKyAgICBmb3IgKCA7IGkgPj0gZW5kOyAt
LWkpCisgICAgICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7CisKKyAgICBFeGVjU3RhdGUqIG5l
d0V4ZWMgPSBFeGVjU3RhdGU6OmNyZWF0ZShkc3QpOworICAgIEFTU0VSVCgodm9pZCopbmV3RXhl
YyA8PSByZWdpc3RlckZpbGUtPmVuZCgpKTsKKyAgICByZXR1cm4gbmV3RXhlYzsKK30KKwogQUxX
QVlTX0lOTElORSBib29sIG9wSW5zdGFuY2VPZlNsb3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
IHZhbHVlLCBKU1ZhbHVlIGJhc2VWYWwsIEpTVmFsdWUgcHJvdG8pCiB7CiAgICAgQVNTRVJUKCF2
YWx1ZS5pc0NlbGwoKSB8fCAhYmFzZVZhbC5pc0NlbGwoKSB8fCAhcHJvdG8uaXNDZWxsKCkKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZp
c2lvbiAxMDc3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2Rl
R2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVy
LmgiCisjaW5jbHVkZSAiRXhlY3V0aW9uSGFybmVzcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2lu
Y2x1ZGUgIkpJVERyaXZlci5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgpAQCAtODQsNyArODUsNyBA
QCBJbnRyaW5zaWMgTmF0aXZlRXhlY3V0YWJsZTo6aW50cmluc2ljKCkgCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgogc3RhdGljIHZvaWQgamV0dGlzb25Db2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBPd25QdHI8VD4mIGNvZGVCbG9jaykKIHsKLSAgICBBU1NFUlQoY29kZUJsb2NrLT5n
ZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2Rl
Ojppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQo
Y29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKICAgICBPd25QdHI8VD4gY29kZUJsb2NrVG9KZXR0
aXNvbiA9IGNvZGVCbG9jay5yZWxlYXNlKCk7CiAgICAgY29kZUJsb2NrID0gc3RhdGljX3BvaW50
ZXJfY2FzdDxUPihjb2RlQmxvY2tUb0pldHRpc29uLT5yZWxlYXNlQWx0ZXJuYXRpdmUoKSk7CkBA
IC0xNjksOSArMTcwLDMwIEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGlt
aXoKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OmppdENvbXBp
bGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29t
cGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVG
b3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVz
dWx0LCByZXN1bHQpOworfQorCitpbmxpbmUgY29uc3QgY2hhciogc2FtcGxpbmdEZXNjcmlwdGlv
bihKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisgICAgc3dpdGNoIChqaXRUeXBlKSB7Cisg
ICAgY2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rOgorICAgICAgICByZXR1cm4gIkludGVy
cHJldGVyIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6QmFzZWxpbmVK
SVQ6CisgICAgICAgIHJldHVybiAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAg
Y2FzZSBKSVRDb2RlOjpERkdKSVQ6CisgICAgICAgIHJldHVybiAiREZHIENvbXBpbGF0aW9uIChU
T1RBTCkiOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29t
cGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5O
b2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2Ft
cGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBD
b21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNh
bXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkp
OwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAg
LTIxMiw3ICsyMzQsNyBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5h
CiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJp
YXRlKCpnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5
cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xvYmFsRGF0YSwgbV9ldmFsQ29k
ZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAj
ZW5kaWYKIApAQCAtMjk3LDkgKzMxOSwxNSBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6
OmNvbXBpbGVPcHRpCiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIFByb2dyYW1FeGVjdXRh
YmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJl
c3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVC
bG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBB
U1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwogSlNPYmplY3QqIFByb2dyYW1FeGVj
dXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSog
c2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGlu
Z1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8g
IkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwp
Iik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlv
bihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGpp
dFR5cGUpOwpAQCAtMzM4LDcgKzM2Niw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6
Y29tcGlsZUludGUKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGls
ZUlmQXBwcm9wcmlhdGUoKmdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2Rl
Rm9yQ2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKCpnbG9iYWxE
YXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAg
ICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC00MTQsNyArNDQyLDcgQEAgRnVuY3Rpb25Db2Rl
QmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6YgogICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0
aXZlKCkpCiAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4o
cmVzdWx0LT5hbHRlcm5hdGl2ZSgpKTsKICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICBBU1NFUlQo
cmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VS
VChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKQEAgLTQ0MCw2ICs0NjgsMTggQEAgSlNPYmplY3QqIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y29tcGlsZU9wdAogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBGdW5j
dGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDYWxsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUo
Z2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENv
ZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRp
ZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQg
RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBw
cm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZv
ckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9s
VGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCk7Cit9CisKIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6
OmNvZGVCbG9ja1dpdGhCeXRlY29kZUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7
CiAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9y
KGtpbmQpOwpAQCAtNDg0LDcgKzUyNCw3IEBAIFBhc3NPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+
IEZ1bmN0aW9uRXgKIAogSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNh
bGxJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9k
ZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBs
aW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29t
cGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1w
bGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsK
ICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC01MDYs
NyArNTQ2LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAg
IG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNhbGwtPnNoYXJlZFN5bWJvbFRhYmxlKCk7
CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3By
aWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9y
Q2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRU
eXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxE
YXRhKCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9y
Q2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9yQ2FsbCkp
CiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTUyNiw3ICs1NjYsNyBAQCBKU09iamVj
dCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNj
b3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQog
ewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBp
bGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1w
bGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBV
TlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC01NDgsNyArNTg4LDcgQEAgSlNPYmplY3QqIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9j
a0ZvckNvbnN0cnVjdC0+c2hhcmVkU3ltYm9sVGFibGUoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0g
ICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMtPmdsb2JhbERhdGEo
KSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRD
b2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUpKQor
ICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwg
bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2Rl
Rm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENvZGVG
b3JDb25zdHJ1Y3QpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxMDc3MTMpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRXhlY3V0YWJsZV9oCiAKICNpbmNsdWRlICJD
YWxsRGF0YS5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRl
ICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJOb2Rl
cy5oIgpAQCAtMzksMTIgKzQwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIERlYnVn
Z2VyOwogICAgIGNsYXNzIEV2YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgRnVuY3Rpb25Db2RlQmxv
Y2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1D
b2RlQmxvY2s7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKICAgICBzdHJ1Y3QgRXhjZXB0
aW9uSW5mbzsKICAgICAKLSAgICBlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9y
Q2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogICAgIGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmly
c3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CiAKICAgICBpbmxpbmUgYm9v
bCBpc0NhbGwoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMzE5LDYgKzMyMCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1
YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJs
ZSBCYXNlOwogCkBAIC0zMzgsNiArMzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAog
I2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xv
YmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJik7CiAjZW5k
aWYKIAogICAgICAgICBFdmFsQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC0zODQs
NiArMzg3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIFByb2dyYW1F
eGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBT
Y3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTQxMSw2ICs0MTUsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGlt
aXplZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShKU0dsb2Jh
bERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIFByb2dyYW1Db2RlQmxvY2smIGdlbmVyYXRlZEJ5
dGVjb2RlKCkKQEAgLTQ1Myw2ICs0NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNz
IEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNl
OwogCkBAIC01MDgsNiArNTE0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVO
QUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ2FsbChKU0ds
b2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEm
KTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDYWxsKCkgY29uc3QKQEAg
LTUzNSw2ICs1NDIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoSlNHbG9i
YWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERh
dGEmKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3QoKSBj
b25zdApAQCAtNTgyLDYgKzU5MCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAg
ICBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvcihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAg
ICAgICAgICBqaXRDb21waWxlRm9yQ2FsbChnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9y
Q29uc3RydWN0KTsKKyAgICAgICAgICAgIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0
YSk7CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRl
ZEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgRXhlY3V0aW9uSGFybmVzc19oCisjZGVmaW5lIEV4ZWN1dGlv
bkhhcm5lc3NfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoSklU
KQorCisjaW5jbHVkZSAiSklURHJpdmVyLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5o
IgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4K
K2lubGluZSBib29sIHByZXBhcmVGb3JFeGVjdXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklU
Q29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklU
Q29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGlu
IHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRFbnRyeXBvaW50
KGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CisgICAgICAgIGNvZGVCbG9j
ay0+c2V0SklUQ29kZShqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJu
IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIGNvZGVCbG9jaywgaml0Q29kZSwg
aml0VHlwZSk7Cit9CisKK2lubGluZSBib29sIHByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVC
bG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0
aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJ
VFR5cGUgaml0VHlwZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworI2lmIEVOQUJM
RShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAg
ICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAg
IExMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwga2luZCwgaml0Q29kZSwg
aml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGpp
dENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGtpbmQpOworI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRh
LCBjb2RlQmxvY2ssIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjaywgc3ltYm9sVGFibGUs
IGppdFR5cGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShK
SVQpCisKKyNlbmRpZiAvLyBFeGVjdXRpb25IYXJuZXNzX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDEwNzcxMykKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgT3duQXJy
YXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSA9IGFkb3B0QXJyYXlQ
dHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPltyZWdpc3RlckFycmF5U2l6ZV0pOwogICAgICAg
ICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVycyA9IHJlZ2lzdGVyQXJyYXkuZ2V0KCkg
KyByZWdpc3Rlck9mZnNldDsKLQorICAgICAgICAKICAgICAgICAgLy8gQ29weSBhbGwgYXJndW1l
bnRzIHRoYXQgY2FuIGJlIGNhcHR1cmVkIGJ5IG5hbWUgb3IgYnkgdGhlIGFyZ3VtZW50cyBvYmpl
Y3QuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9udW1DYXB0dXJlZEFyZ3M7ICsraSkg
ewogICAgICAgICAgICAgaW50IGluZGV4ID0gQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChpKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9uIDEw
NzcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBK
U0FycmF5OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHN0cnVjdCBT
cGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmllcjxVbmtub3duPiB7CiAgICAgICAg
IHR5cGVkZWYgV3JpdGVCYXJyaWVyPFVua25vd24+IEJhc2U7CkBAIC0xMjIsNiArMTIzLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwcm90ZWN0ZWQ6CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTA3NzEzKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM2LDkgKzM2LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTR2xvYmFs
T2JqZWN0OwotICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5
TmFtZUFycmF5OworICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGVudW0gRW51bWVyYXRpb25N
b2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywKQEAgLTE2Myw2ICsxNjQs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFByb3Bl
cnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IENsYXNzSW5mbyog
bV9jbGFzc0luZm87CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0dXJl
OwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9u
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bi5oCShyZXZpc2lvbiAxMDc3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgSlNBY3RpdmF0aW9u
OwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZUNvZGU7
CiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0xNDAsNiArMTQxLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0b3Im
KTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9zdEZ1
bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJndW1l
bnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkocmV2
aXNpb24gMTA3NzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkRlYnVn
Z2VyQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNs
dWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAj
aW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNpbmNs
dWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgpAQCAtMTQxLDYgKzE0Miw4IEBAIEpTR2xvYmFsRGF0
YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICAsIGtleXdvcmRzKGFkb3B0UHRyKG5l
dyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRlcnByZXRlcigwKQogICAgICwgaGVhcCh0aGlz
LCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFzc0luZm8oJkpTQXJyYXk6OnNfaW5mbykKKyAg
ICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKICNpZiBF
TkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxhc3RTY3JhdGNoQnVmZmVyKDApCiAjZW5kaWYK
QEAgLTIxNiw3ICsyMTksOSBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRh
VHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1bmtzKHRoaXMpKTsKICNlbmRp
ZgogCi0gICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUodGhpcy0+Y2FuVXNlSklUKCkpOworICAg
IGludGVycHJldGVyLT5pbml0aWFsaXplKCZsbGludERhdGEsIHRoaXMtPmNhblVzZUpJVCgpKTsK
KyAgICAKKyAgICBpbml0aWFsaXplSG9zdENhbGxSZXR1cm5WYWx1ZSgpOyAvLyBUaGlzIGlzIG5l
ZWRlZCB0byBjb252aW5jZSB0aGUgbGlua2VyIG5vdCB0byBkcm9wIGhvc3QgY2FsbCByZXR1cm4g
c3VwcG9ydC4KIAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xsZWN0KCk7CiB9CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNpb24g
MTA3NzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNiBAQAogI2RlZmluZSBKU0dsb2JhbERhdGFf
aAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oIgotI2luY2x1ZGUg
IkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5jbHVkZSAi
RXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJTdHJv
bmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgogI2lu
Y2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJOdW1l
cmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlN0cm9u
Zy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJUaW1lb3V0Q2hlY2tlci5o
IgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYgKzY2LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAgICAg
Y2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNs
YXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmE7CiAgICAgY2xhc3Mg
UmVnRXhwQ2FjaGU7CkBAIC0yNDEsNiArMjQzLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247CisKKyAgICAgICAgY29u
c3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOworICAgICAgICBjb25zdCBDbGFz
c0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CisKKyAgICAgICAgTExJbnQ6OkRh
dGEgbGxpbnREYXRhOworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0
ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBob3N0Q2FsbFJldHVyblZhbHVl
OwpAQCAtMzQ2LDYgKzM1NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogI3VuZGVmIHJlZ2lzdGVyVHlw
ZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNHbG9iYWxEYXRhKEdsb2Jh
bERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKICAgICAgICAgc3RhdGljIEpT
R2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAgdm9pZCBjcmVh
dGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDc3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0
NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwogICAg
IGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CisgICAgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3RydWN0
b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBSZWdFeHBDb25zdHJ1
Y3RvcjsKQEAgLTMzNiw2ICszMzcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyosIGlu
dCBjb3VudCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVzZXQgaW50
byBpbml0LgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluaXQoSlNPYmplY3QqIHRo
aXNWYWx1ZSk7CiAgICAgICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMDc3MTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEdldHRlclNl
dHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlvbjsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQmxvY2s7
CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFy
cmF5OwpAQCAtMjYyLDYgKzI2Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU09iamVj
dChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3RvcmFn
ZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gTm9ib2R5IHNob3VsZCBldmVyIGFzayBhbnkg
b2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0aGluZyBhbHJlYWR5IGtub3duIHRvIGJlIGEgSlNP
YmplY3QuCiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXI7CiAgICAgICAg
IHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7CkBAIC0zNjcsNiArMzcwLDggQEAgQ09NUElM
RV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICB9CiAKICAgICBwcml2
YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAg
ICAKICAgICAgICAgZXhwbGljaXQgSlNGaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICAgICAgOiBKU09iamVjdChnbG9iYWxE
YXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5lU3RvcmFnZSkKICAgICAgICAgewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0
b3IuaAkocmV2aXNpb24gMTA3NzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBKU09i
amVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBKU1By
b3BlcnR5TmFtZUl0ZXJhdG9yIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBjbGFz
cyBKSVQ7CkBAIC05Niw2ICs5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAg
ICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgICAgICAKICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqLCBQcm9w
ZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNhY2hl
YWJsZVNsb3QpOwogCiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FjaGVkU3Ry
dWN0dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5oCShy
ZXZpc2lvbiAxMDc3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmlu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgIGNsYXNzIEpTU3RyaW5nOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAog
ICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSopOwogICAgIEpTU3RyaW5n
KiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSopOwpAQCAtMjQwLDYgKzI0MSw4IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNsb3RW
aXNpdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBy
ZXNvbHZlUm9wZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9wZVNs
b3dDYXNlOChMQ2hhciopIGNvbnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nhc2Uo
VUNoYXIqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlw
ZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5
cGVJbmZvLmgJKHJldmlzaW9uIDEwNzcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1l
c3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwogICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMTsgLy8gV2ViQ29y
ZSB1c2VzIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgdG8gbWFrZSBkb2N1bWVudC5hbGwgdW5kZXRl
Y3RhYmxlLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbXBsZW1lbnRzSGFzSW5zdGFuY2Ug
PSAxIDw8IDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE92ZXJyaWRlc0hhc0luc3RhbmNl
ID0gMSA8PCAyOwpAQCAtODcsNiArODksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBmbGFnKSBj
b25zdCB7IEFTU0VSVChmbGFnIDw9ICgxIDw8IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBmbGFnOyB9
CiAgICAgICAgIGJvb2wgaXNTZXRPbkZsYWdzMih1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFTU0VS
VChmbGFnID49ICgxIDw8IDgpKTsgcmV0dXJuIG1fZmxhZ3MyICYgKGZsYWcgPj4gOCk7IH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlzaW9u
IDEwNzcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5bnRo
ZXNpemVQcm90b3R5cGUoRQogCiBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiB7Ci0gICAg
c3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0gNjQ7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBz
aXplID0gMTI4OwogICAgIHN0YXRpYyBjaGFyIGRlc2NyaXB0aW9uW3NpemVdOwogCiAgICAgaWYg
KCEqdGhpcykKQEAgLTEyNywxNCArMTI3LDE0IEBAIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9u
KCkKICAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJJbnQzMjogJWQiLCBhc0lu
dDMyKCkpOwogICAgIGVsc2UgaWYgKGlzRG91YmxlKCkpIHsKICNpZiBVU0UoSlNWQUxVRTY0KQot
ICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlbHgiLCBh
c0RvdWJsZSgpLCByZWludGVycHJldERvdWJsZVRvSW50cHRyKGFzRG91YmxlKCkpKTsKKyAgICAg
ICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVseCwgJWxmIiwgcmVpbnRl
cnByZXREb3VibGVUb0ludHB0cihhc0RvdWJsZSgpKSwgYXNEb3VibGUoKSk7CiAjZWxzZQogICAg
ICAgICB1bmlvbiB7CiAgICAgICAgICAgICBkb3VibGUgYXNEb3VibGU7CiAgICAgICAgICAgICB1
aW50MzJfdCBhc1R3b0ludDMyc1syXTsKICAgICAgICAgfSB1OwogICAgICAgICB1LmFzRG91Ymxl
ID0gYXNEb3VibGUoKTsKLSAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3Vi
bGU6ICVsZiwgJTA4eDolMDh4IiwgYXNEb3VibGUoKSwgdS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3
b0ludDMyc1swXSk7CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91Ymxl
OiAlMDh4OiUwOHgsICVsZiIsIHUuYXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0sIGFz
RG91YmxlKCkpOwogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChpc0NlbGwoKSkKICAgICAgICAgc25w
cmludGYoZGVzY3JpcHRpb24sIHNpemUsICJDZWxsOiAlcCIsIGFzQ2VsbCgpKTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJKHJl
dmlzaW9uIDEwNzcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFi
bGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEyIEBACiAKIG5hbWVzcGFj
ZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFJl
Z2lzdGVyOwogCiAgICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZpbmFs
T2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBK
U05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTA3NzEzKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDEwIEBAIHVu
c2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGkKIAogdW5zaWduZWQgbWF4aW11
bUlubGluaW5nRGVwdGg7CiAKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0
ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1l
U29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogaW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkBAIC0xMzcs
NiArMTQxLDEwIEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIAogICAgIFNFVChtYXhp
bXVtSW5saW5pbmdEZXB0aCwgNSk7CiAKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9y
SklUQWZ0ZXJXYXJtVXAsICAgICAtMTAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yRG9udEpJVEFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+OjptaW4o
KSk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb24sICAgICAgICAgICAg
LTEwMCk7CisKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldh
cm1VcCwgICAgIC0xMDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1p
emVBZnRlckxvbmdXYXJtVXAsIC01MDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9yRG9udE9wdGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46
Om1pbigpKTsKQEAgLTE4NSw2ICsxOTMsOCBAQCB2b2lkIGluaXRpYWxpemVPcHRpb25zKCkKICAg
ICBpZiAoY3B1c1RvVXNlIDwgMSkKICAgICAgICAgY3B1c1RvVXNlID0gMTsKICAgICAKKyAgICBj
cHVzVG9Vc2UgPSAxOworICAgIAogICAgIFNFVChudW1iZXJPZkdDTWFya2VycywgY3B1c1RvVXNl
KTsKIAogICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0
aW1lU29vbiA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1V
cCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lv
biAxMDc3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEwIEBAIGV4dGVybiB1bnNpZ25lZCBtYXhpbXVtRnVu
Y3Rpb25Gb3JDb25zdHIKIAogZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRoOyAv
LyBEZXB0aCBvZiBpbmxpbmUgc3RhY2ssIHNvIDEgPSBubyBpbmxpbmluZywgMiA9IG9uZSBsZXZl
bCwgZXRjLgogCitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRl
cldhcm1VcDsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRB
bnl0aW1lU29vbjsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNv
b247CisKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0
ZXJXYXJtVXA7CiBleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6
ZUFmdGVyTG9uZ1dhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gMTA3NzEzKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBK
U0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9yOwogICAgIGNsYXNzIFNs
b3RWaXNpdG9yOwogICAgIApAQCAtOTEsNiArOTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAgIHBy
aXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
ICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVy
cmlkZXNWaXNpdENoaWxkcmVuOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24gMTA3NzEzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIy
LDcgKzMyMiw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQKICAg
ICAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwogICAg
ICAgICByZXR1cm4gdHJhbnNpdGlvbjsKICAgICB9Ci0KKyAgICAKICAgICBTdHJ1Y3R1cmUqIHRy
YW5zaXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAogICAgIHRyYW5zaXRp
b24tPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uc2V0TWF5QmVOdWxsKGdsb2JhbERhdGEsIHRyYW5z
aXRpb24sIHN0cnVjdHVyZS0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKSk7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTA3NzEz
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CiAgICAg
Y2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOwpA
QCAtMTk2LDYgKzE5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQ
T1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpT
X0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyopOwog
ICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIFN0cnVjdHVyZShKU0ds
b2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMTA3NzEzKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2luZyBjb3B5
KQpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBjbGFzcyBTdHJ1
Y3R1cmVDaGFpbiA6IHB1YmxpYyBKU0NlbGwgewpAQCAtNzQsNiArNzUsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZUNoYWluKEpT
R2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpT
Q2VsbCopOwogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiA+IG1f
dmVjdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9JbmxpbmVBU00uaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0lubGluZUFTTS5oCShyZXZpc2lv
biAxMDc3MTMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0lubGluZUFTTS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MCw0ICs3MCwxMSBAQAogI2RlZmluZSBISURFX1NZTUJPTChuYW1lKQog
I2VuZGlmCiAKKy8vIEZJWE1FOiBmaWd1cmUgb3V0IGhvdyB0aGlzIHdvcmtzIG9uIGFsbCB0aGUg
cGxhdGZvcm1zLiBJIGtub3cgdGhhdAorLy8gb24gTGludXgsIHRoZSBwcmVmZXJyZWQgZm9ybSBp
cyAiLkxzdHVmZiIgYXMgb3Bwb3NlZCB0byAiTHN0dWZmIi4KKy8vIERvbid0IGtub3cgYWJvdXQg
YW55IG9mIHRoZSBvdGhlcnMuCisjaWYgUExBVEZPUk0oTUFDKQorI2RlZmluZSBMT0NBTF9MQUJF
TF9TVFJJTkcobmFtZSkgIkwiICNuYW1lCisjZW5kaWYKKwogI2VuZGlmIC8vIElubGluZUFTTV9o
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAxMDc3MTMp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkK
QEAgLTkyMiw2ICs5MjIsMTggQEAKICNkZWZpbmUgRU5BQkxFX0pJVCAxCiAjZW5kaWYKIAorLyog
T24gc29tZSBvZiB0aGUgcGxhdGZvcm1zIHdoZXJlIHdlIGhhdmUgYSBKSVQsIHdlIHdhbnQgdG8g
YWxzbyBoYXZlIHRoZSAKKyAgIGxvdy1sZXZlbCBpbnRlcnByZXRlci4gKi8KKyNpZiAhZGVmaW5l
ZChFTkFCTEVfTExJTlQpICYmIEVOQUJMRShKSVQpICYmIE9TKERBUldJTikgJiYgKENQVShYODYp
IHx8IENQVShBUk1fVEhVTUIyKSkgJiYgVVNFKEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgRU5BQkxF
X0xMSU5UIDEKKyNlbmRpZgorCisvKiBJZiB3ZSBoYXZlIExMSW50IGVuYWJsZWQgYW5kIHRoZSBK
SVQgZW5hYmxlZCwgd2UgYWxzbyBlbmFibGUgT1NSaW5nIGZyb20KKyAgIExMSW50IHRvIHRoZSBK
SVQuICovCisjaWYgIWRlZmluZWQoRU5BQkxFX0xMSU5UX09TUl9UT19KSVQpICYmIEVOQUJMRShK
SVQpICYmIEVOQUJMRShMTElOVCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UX09TUl9UT19KSVQgMQor
I2VuZGlmCisKICNpZiAhZGVmaW5lZChFTkFCTEVfREZHX0pJVCkgJiYgRU5BQkxFKEpJVCkKIC8q
IEVuYWJsZSB0aGUgREZHIEpJVCBvbiBYODYgYW5kIFg4Nl82NC4gIE9ubHkgdGVzdGVkIG9uIE1h
YyBhbmQgR05VL0xpbnV4LiAqLwogI2lmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSkgJiYgKFBM
QVRGT1JNKE1BQykgfHwgT1MoTElOVVgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi9TZW50aW5lbExpbmtlZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCShyZXZpc2lvbiAxMDc3MTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Niw2ICs4Niw4IEBAIHB1YmxpYzoKIAogICAgIGl0ZXJhdG9yIGJlZ2luKCk7CiAgICAgaXRl
cmF0b3IgZW5kKCk7CisgICAgCisgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gYmVnaW4oKSA9
PSBlbmQoKTsgfQogCiBwcml2YXRlOgogICAgIFJhd05vZGUgbV9oZWFkU2VudGluZWw7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9u
IDEwNzcxMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQzLDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19D
RlN0cmluZyAqIENGU3RyaQogLy8gTGFuZGluZyB0aGUgZmlsZSBtb3ZlcyBpbiBvbmUgcGF0Y2gs
IHdpbGwgZm9sbG93IG9uIHdpdGggcGF0Y2hlcyB0byBjaGFuZ2UgdGhlIG5hbWVzcGFjZXMuCiBu
YW1lc3BhY2UgSlNDIHsKIHN0cnVjdCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5zbGF0b3I7CitjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gc3RydWN0IElk
ZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjsKIHN0cnVjdCBJZGVudGlmaWVyTENoYXJGcm9t
VUNoYXJUcmFuc2xhdG9yOwogfQpAQCAtNzIsNyArNzMsOCBAQCBjbGFzcyBTdHJpbmdJbXBsIHsK
ICAgICBmcmllbmQgc3RydWN0IFdURjo6U3Vic3RyaW5nVHJhbnNsYXRvcjsKICAgICBmcmllbmQg
c3RydWN0IFdURjo6VUNoYXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZyaWVuZCBjbGFzcyBBdG9t
aWNTdHJpbmdJbXBsOwotCisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFj
dG9yOworICAgIAogcHJpdmF0ZToKICAgICBlbnVtIEJ1ZmZlck93bmVyc2hpcCB7CiAgICAgICAg
IEJ1ZmZlckludGVybmFsLApJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNzcx
MykKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03
NCw2ICs3NCw3IEBAIFNFVChXZWJDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50
ZXJwcmV0ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3BhcnNlciIK
ICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRD
T1JFX0RJUn0vcnVudGltZSIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDc3MTMpCisrKyBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEy
LTAxLTI2ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgSlNDIHNo
b3VsZCBiZSBhIHRyaXBsZS10aWVyIFZNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD03NTgxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAwNzk2OTQ+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdl
ZCBFRkwncyBidWlsZCBzeXN0ZW0gdG8gaW5jbHVkZSBhIG5ldyBkaXJlY3RvcnkgaW4gSmF2YVNj
cmlwdENvcmUuCisgICAgICAgIAorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAy
LTEzICBOaW1hIEdoYW5hdmF0aWFuICA8bmdoYW5hdmF0aWFuQHJpbS5jb20+CiAKICAgICAgICAg
SW5pdGlhbCB1cHN0cmVhbWluZyBvZiBzZWxlY3Rpb24gaGFuZGxpbmcgY29kZSBmb3IgQmxhY2tC
ZXJyeSBwb3J0CkluZGV4OiBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNzcxMykKKysrIFNv
dXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcg
QEAgU0VUKFdlYktpdF9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyIgog
ICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAgICAgIiR7SkFW
QVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1
bnRpbWUiCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxMDc3MTMpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUu
Y29tPgorCisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIENoYW5nZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUgYSBu
ZXcgZGlyZWN0b3J5IGluIEphdmFTY3JpcHRDb3JlLgorCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvZWZsL0NNYWtlTGlzdHMudHh0OgorCiAyMDEyLTAyLTE0ICBKb2NoZW4gRWlzaW5nZXIgIDxq
b2NoZW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gY2hlY2sgdGhhdCB3ZSdy
ZSBub3QgcnVubmluZyBtdWx0aXBsZSBtb2RhbCBkaWFsb2dzIGF0IHRoZSBzYW1lIHRpbWUKSW5k
ZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDEwNzcx
MykKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNzAsMTAgKzcwLDEyIEBAIFNFVChEdW1wUmVuZGVyVHJlZV9JTkNMVURFX0RJUkVD
VE9SSUVTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L0FQSQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9hc3NlbWJsZXIKKyAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGZnCiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2hlYXAKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
aW50ZXJwcmV0ZXIKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0CisgICAgJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L2xsaW50CiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUKICAg
ICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRlcnMKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vd3RmCg==
</data>
<flag name="review"
          id="128998"
          type_id="1"
          status="+"
          setter="barraclough"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127706</attachid>
            <date>2012-02-18 11:10:37 -0800</date>
            <delta_ts>2012-02-18 12:07:18 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_102.diff</filename>
            <type>text/plain</type>
            <size>507448</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4MTYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4NSBA
QAorMjAxMi0wMi0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgorICAgICAg
ICAKKyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQn
cyBjYWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVk
IExMSW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAg
ICAgd2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRp
ZXIgdXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhv
dC4KKyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3Jt
IG9mIG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkg
aXMgY29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hp
Y2gKKyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBh
IFR1cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRp
cmVjdCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJh
c2ljYWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4K
KyAgICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhl
IHJlc3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5n
IGluIHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFu
ZAorICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVx
dWlyZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAg
ICAKKyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9s
ZCBpbnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRo
IHRyaXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisg
ICAgICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBp
bXByb3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2Ug
cmVkdWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcmk6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmVDb21tb24udnNwcm9wczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQ6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAg
ICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFk
ZHJlc3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDogQWRkZWQu
CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToK
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAgIChDYWxs
TGlua1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxv
Y2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpi
eXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29u
KToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlND
OjpGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29k
ZUJsb2NrOjpqaXRDb21waWxlSW1wbCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6Ompp
dENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBp
bGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5l
VmVyc2lvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlua0luY29taW5nQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omhhc09wdGlt
aXplZFJlcGxhY2VtZW50KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRQcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRHbG9iYWxSZXNv
bHZlSW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZExMSW50Q2FsbExp
bmtJbmZvKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRHbG9iYWxSZXNvbHZlSW5mbyk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZVNsb3dDYXNl
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb3VsZFRha2VTbG93Q2FzZSk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU3BlY2lhbEZhc3RDYXNlKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZUFueVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjphZGRGcmVxdWVudEV4aXRTaXRlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojpkb250SklUQW55dGltZVNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmppdEFmdGVy
V2FybVVwKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRTb29uKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpsbGludEV4ZWN1dGVDb3VudGVyKToKKyAgICAgICAgKFByb2dyYW1Db2Rl
QmxvY2spOgorICAgICAgICAoRXZhbENvZGVCbG9jayk6CisgICAgICAgIChGdW5jdGlvbkNvZGVC
bG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChK
U0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5oOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpHZXRCeUlk
U3RhdHVzKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6d2FzU2VlbkluSklUKToKKyAg
ICAgICAgKEdldEJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb24p
OgorICAgICAgICAoSW5zdHJ1Y3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExp
bmtJbmZvLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxs
TGlua0luZm86OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKExMSW50Q2FsbExpbmtJbmZv
KToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6
CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChK
U0M6OkxMSW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhv
ZENhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6cGFkT3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9t
TExJbnQpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAo
UHV0QnlJZFN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gp
OgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Nh
cGFiaWxpdGllcy5oOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAg
ICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFw
Ojpjb2xsZWN0KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChIZWFwKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoTWFya2VkQWxsb2NhdG9yKToKKyAgICAgICAgKiBoZWFwL01h
cmtlZFNwYWNlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAg
ICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpDYWxsRnJhbWU6OmJ5dGVjb2RlT2Zmc2V0Rm9yTm9uREZHQ29kZSk6CisgICAgICAg
IChKU0M6OkNhbGxGcmFtZTo6c2V0Qnl0ZWNvZGVPZmZzZXRGb3JOb25ERkdDb2RlKToKKyAgICAg
ICAgKEpTQzo6Q2FsbEZyYW1lOjpjdXJyZW50VlBDKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1l
OjpzZXRDdXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAg
ICAgICAgKEV4ZWNTdGF0ZSk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Ynl0ZWNvZGVPZmZz
ZXRGb3JOb25ERkdDb2RlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJyZW50VlBDKToK
KyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRDdXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp+SW50
ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Omlu
aXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6aXNPcGNvZGUpOgorICAgICAg
ICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6Z2V0
Q2FsbGVySW5mbyk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIpOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAo
SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5o
OgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmlsZSk6CisgICAgICAgICogaml0
L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKiBq
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0M6OmluaXRpYWxpemVIb3N0Q2FsbFJldHVyblZhbHVlKToKKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChK
U0M6OkpJVENvZGU6OmlzT3B0aW1pemluZ0pJVCk6CisgICAgICAgIChKSVRDb2RlKToKKyAgICAg
ICAgKEpTQzo6SklUQ29kZTo6aXNCYXNlbGluZUNvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2Rl
OjpKSVRDb2RlKToKKyAgICAgICAgKiBqaXQvSklURHJpdmVyLmg6CisgICAgICAgIChKU0M6Ompp
dENvbXBpbGVJZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUZ1bmN0aW9u
SWZBcHByb3ByaWF0ZSk6CisgICAgICAgICogaml0L0pJVEV4Y2VwdGlvbnMuY3BwOgorICAgICAg
ICAoSlNDOjpqaXRUaHJvdyk6CisgICAgICAgICogaml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAg
ICAgICAgKEpTQzo6SklUOjp1cGRhdGVUb3BDYWxsRnJhbWUpOgorICAgICAgICAqIGppdC9KSVRT
dHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgICogbGxpbnQ6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50Q29tbW9uLmg6IEFkZGVkLgorICAgICAgICAq
IGxsaW50L0xMSW50RGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoTExJbnQpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6RGF0YSk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjp+RGF0
YSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKExMSW50KToKKyAgICAgICAgKERhdGEpOgorICAgICAgICAoSlNDOjpMTEludDo6
RGF0YTo6ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6
Om9wY29kZU1hcCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA6IEFkZGVk
LgorICAgICAgICAoTExJbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0RnVuY3Rpb25FbnRy
eXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEV2YWxFbnRyeXBvaW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmdldFByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9M
TEludEVudHJ5cG9pbnRzLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEVudHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50
L0xMSW50RXhjZXB0aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoTExJbnQpOgorICAgICAgICAo
SlNDOjpMTEludDo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OnJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24pOgorICAgICAgICAoSlNDOjpMTElu
dDo6cmV0dXJuVG9UaHJvdyk6CisgICAgICAgIChKU0M6OkxMSW50OjpjYWxsVG9UaHJvdyk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9MTEludEhlbHBlcnMuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKExMSW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmxsaW50X3RyYWNlX29w
ZXJhbmQpOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfdHJhY2VfdmFsdWUpOgorICAgICAg
ICAoSlNDOjpMTEludDo6TExJTlRfSEVMUEVSX0RFQ0wpOgorICAgICAgICAoSlNDOjpMTEludDo6
dHJhY2VGdW5jdGlvblByb2xvZ3VlKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNob3VsZEpJVCk6
CisgICAgICAgIChKU0M6OkxMSW50OjplbnRyeU9TUik6CisgICAgICAgIChKU0M6OkxMSW50Ojpy
ZXNvbHZlR2xvYmFsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEJ5VmFsKToKKyAgICAgICAg
KEpTQzo6TExJbnQ6OmhhbmRsZUhvc3RDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OnNldFVw
Q2FsbCk6CisgICAgICAgIChKU0M6OkxMSW50OjpnZW5lcmljQ2FsbCk6CisgICAgICAgICogbGxp
bnQvTExJbnRIZWxwZXJzLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50
KToKKyAgICAgICAgKiBsbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaDogQWRkZWQuCisgICAg
ICAgICogbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChK
U0MpOgorICAgICAgICAoTExJbnRPZmZzZXRzRXh0cmFjdG9yKToKKyAgICAgICAgKEpTQzo6TExJ
bnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSk6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBs
bGludC9MTEludFRodW5rcy5jcHA6IEFkZGVkLgorICAgICAgICAoTExJbnQpOgorICAgICAgICAo
SlNDOjpMTEludDo6Z2VuZXJhdGVUaHVua1dpdGhKdW1wVG8pOgorICAgICAgICAoSlNDOjpMTElu
dDo6ZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxM
SW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2Vu
ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKToK
KyAgICAgICAgKEpTQzo6TExJbnQ6OnByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKToKKyAgICAg
ICAgKiBsbGludC9MTEludFRodW5rcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChMTEludCk6CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc206IEFkZGVk
LgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmg6IEFkZGVkLgorICAgICAgICAqIG9mZmxp
bmVhc206IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYXJtdjcucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vYXNtLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2Fz
dC5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9iYWNrZW5kcy5yYjogQWRkZWQuCisg
ICAgICAgICogb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiOiBBZGRlZC4K
KyAgICAgICAgKiBvZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYjogQWRkZWQuCisgICAgICAgICog
b2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYjogQWRkZWQuCisgICAgICAg
ICogb2ZmbGluZWFzbS9vZmZzZXRzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL29w
dC5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9wYXJzZXIucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vcmVnaXN0ZXJzLnJiOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5l
YXNtL3NlbGZfaGFzaC5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9zZXR0aW5ncy5y
YjogQWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBBZGRlZC4KKyAgICAgICAgKiBydW50aW1lL0NvZGVT
cGVjaWFsaXphdGlvbktpbmQuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAqIHJ1
bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6CisgICAgICAgIChKU0M6OkNvbW1vblNsb3dQYXRoczo6
YXJpdHlDaGVja0Zvcik6CisgICAgICAgIChDb21tb25TbG93UGF0aHMpOgorICAgICAgICAqIHJ1
bnRpbWUvRXhlY3V0YWJsZS5jcHA6CisgICAgICAgIChKU0M6OmpldHRpc29uQ29kZUJsb2NrKToK
KyAgICAgICAgKEpTQzo6RXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6c2FtcGxpbmdEZXNjcmlwdGlvbik6CisgICAgICAgIChKU0M6OkV2
YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhl
Y3V0YWJsZTo6aml0Q29tcGlsZSk6CisgICAgICAgIChKU0M6OlByb2dyYW1FeGVjdXRhYmxlOjpj
b21waWxlSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJhc2Vs
aW5lQ29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRD
b21waWxlRm9yQ2FsbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29t
cGlsZUZvckNvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29t
cGlsZUZvckNhbGxJbnRlcm5hbCk6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJsZTo6
Y29tcGlsZUZvckNvbnN0cnVjdEludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFi
bGUuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChFdmFsRXhlY3V0YWJsZSk6CisgICAgICAg
IChQcm9ncmFtRXhlY3V0YWJsZSk6CisgICAgICAgIChGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAg
ICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3IpOgorICAgICAgICAq
IHJ1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChKU0M6OnByZXBhcmVGb3JFeGVjdXRpb24pOgorICAgICAgICAoSlNDOjpwcmVwYXJlRnVu
Y3Rpb25Gb3JFeGVjdXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNBY3RpdmF0aW9uLmg6Cisg
ICAgICAgIChKU0M6OkpTQWN0aXZhdGlvbjo6dGVhck9mZik6CisgICAgICAgICogcnVudGltZS9K
U0FycmF5Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNBcnJheSk6CisgICAgICAgICog
cnVudGltZS9KU0NlbGwuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0NlbGwpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpT
RnVuY3Rpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEpOgorICAgICAgICAqIHJ1bnRpbWUvSlNH
bG9iYWxEYXRhLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNHbG9iYWxEYXRhKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNHbG9iYWxPYmplY3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU09iamVjdCk6CisgICAgICAgIChKU0ZpbmFsT2JqZWN0KToK
KyAgICAgICAgKiBydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaDoKKyAgICAgICAgKEpT
Qyk6CisgICAgICAgIChKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKToKKyAgICAgICAgKiBydW50aW1l
L0pTU3RyaW5nLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNTdHJpbmcpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFR5cGVJ
bmZvKToKKyAgICAgICAgKiBydW50aW1lL0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1Zh
bHVlOjpkZXNjcmlwdGlvbik6CisgICAgICAgICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNWYXJpYWJsZU9iamVjdCk6CisgICAgICAgICog
cnVudGltZS9PcHRpb25zLmNwcDoKKyAgICAgICAgKE9wdGlvbnMpOgorICAgICAgICAoSlNDOjpP
cHRpb25zOjppbml0aWFsaXplT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9PcHRpb25zLmg6
CisgICAgICAgIChPcHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL1Njb3BlQ2hhaW4uaDoKKyAg
ICAgICAgKEpTQyk6CisgICAgICAgIChTY29wZUNoYWluTm9kZSk6CisgICAgICAgICogcnVudGlt
ZS9TdHJ1Y3R1cmUuY3BwOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJh
bnNpdGlvbik6CisgICAgICAgICogcnVudGltZS9TdHJ1Y3R1cmUuaDoKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlQ2hhaW4u
aDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChTdHJ1Y3R1cmVDaGFpbik6CisgICAgICAgICog
d3RmL0lubGluZUFTTS5oOgorICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorICAgICAgICAqIHd0
Zi9TZW50aW5lbExpbmtlZExpc3QuaDoKKyAgICAgICAgKFNlbnRpbmVsTGlua2VkTGlzdCk6Cisg
ICAgICAgIChXVEY6OlNlbnRpbmVsTGlua2VkTGlzdDo6aXNFbXB0eSk6CisgICAgICAgICogd3Rm
L3RleHQvU3RyaW5nSW1wbC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFN0cmluZ0ltcGwp
OgorCiAyMDEyLTAyLTE3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAg
ICAgREZHOjpHcmFwaCBzaG91bGQgaGF2ZSByZWZlcmVuY2VzIHRvIEpTR2xvYmFsRGF0YSwgdGhl
IENvZGVCbG9jayBiZWluZyBjb21waWxlZCwgYW5kCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDYgKzExLDcgQEAgU0VUKEphdmFT
Y3JpcHRDb3JlX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIiCiAgICAg
IiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9s
bGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3BhcnNlciIKICAgICAiJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcnVudGlt
ZSIKQEAgLTk3LDYgKzk4LDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAgICBpbnRl
cnByZXRlci9SZWdpc3RlckZpbGUuY3BwCiAKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5j
cHAKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKICAgICBqaXQvSklUQXJpdGhtZXRp
YzMyXzY0LmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljLmNwcAogICAgIGppdC9KSVRDYWxsMzJf
NjQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAx
MDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcg
Y29weSkKQEAgLTU3LDYgKzU3LDcgQEAgamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0gXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlciBcCiAJLUkkKHNyY2Rp
cikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdCBcCisJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyIFwKIAktSSQoc3Jj
ZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIgXAogCS1JJChzcmNkaXIpL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtODEsNiArODEsNyBA
QCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9TSDRBc3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9YODZB
c3NlbWJsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29u
dmVudGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rSW5m
by5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0luZm8uaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcCBcCkBA
IC0xMDIsNiArMTAzLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTElu
dENhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGluZUlu
Zm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rSW5m
by5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua0lu
Zm8uaCBcCkBAIC0yODUsNiArMjg3LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Db21wYWN0SklUQ29kZU1hcC5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCBcCisJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCisJU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRBcml0aG1ldGljLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDYWxsMzJf
NjQuY3BwIFwKQEAgLTMwOCw2ICszMTIsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnREYXRhLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4zMi9z
dGRib29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4zMi9zdGRpbnQuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggXApAQCAtMzU4LDYgKzM2
Myw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q2FsbERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgg
XAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oIFwK
IAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBcCkBAIC0z
ODYsNiArMzkyLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRpb25IYXJuZXNzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9u
UHJvdG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS5wcmkJKHJldmlzaW9uIDEwODE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAgSU5DTFVERVBBVEgg
Kz0gXAogICAgICQkU09VUkNFX0RJUi9kZWJ1Z2dlciBcCiAgICAgJCRTT1VSQ0VfRElSL2ludGVy
cHJldGVyIFwKICAgICAkJFNPVVJDRV9ESVIvaml0IFwKKyAgICAkJFNPVVJDRV9ESVIvbGxpbnQg
XAogICAgICQkU09VUkNFX0RJUi9wYXJzZXIgXAogICAgICQkU09VUkNFX0RJUi9wcm9maWxlciBc
CiAgICAgJCRTT1VSQ0VfRElSL3J1bnRpbWUgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5w
cmkJKHJldmlzaW9uIDEwODE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJp
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDcgQEAgU09VUkNFUyArPSBcCiAgICAgaW50
ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCiAgICAgaml0L0V4ZWN1dGFibGVBbGxvY2F0b3JG
aXhlZFZNUG9vbC5jcHAgXAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBcCisgICAg
aml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKICAgICBqaXQvSklUQXJpdGhtZXRpYy5jcHAg
XAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwKICAgICBqaXQvSklUQ2FsbC5jcHAg
XApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwODE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYyLDYgKzE3NjIsMTAgQEAKIAkJCQk+CiAJCQk8L0Zp
bGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caml0XEhvc3RDYWxsUmV0dXJu
VmFsdWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRpdmVQYXRo
PSIuLlwuLlxqaXRcSklULmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0xODQ3LDYgKzE4NTEs
MTQgQEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKKwkJCU5hbWU9ImxsaW50
IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGxsaW50XExMSW50RGF0
YS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKIAkJCU5hbWU9
ImludGVycHJldGVyIgogCQkJPgogCQkJPEZpbGUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVDb21t
b24udnNwcm9wcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlw
dENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlQ29tbW9uLnZzcHJvcHMJ
KHJldmlzaW9uIDEwODE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwkod29y
a2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJPFRvb2wKIAkJTmFtZT0iVkNDTENvbXBp
bGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1
cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7
Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29tcGlsZXIvOy4uLy4u
L2RmZy87Li4vLi4vaml0LzsuLi8uLi9ydW50aW1lLzsuLi8uLi90b29scy87Li4vLi4vYnl0ZWNv
ZGUvOy4uLy4uL2ludGVycHJldGVyLzsuLi8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4uLy4uL2Fz
c2VtYmxlci87Li4vLi4vZGVidWdnZXIvOy4uLy4uL2hlYXAvOyZxdW90OyQoV2ViS2l0TGlicmFy
aWVzRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRl
XHByaXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGUmcXVv
dDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlwdENvcmUm
cXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0ZSZxdW90
OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90OyIKKwkJ
QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGRE
aXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4u
L0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL2RmZy87Li4vLi4v
aml0LzsuLi8uLi9sbGludC87Li4vLi4vcnVudGltZS87Li4vLi4vdG9vbHMvOy4uLy4uL2J5dGVj
b2RlLzsuLi8uLi9pbnRlcnByZXRlci87Li4vLi4vd3RmLzsuLi8uLi9wcm9maWxlcjsuLi8uLi9h
c3NlbWJsZXIvOy4uLy4uL2RlYnVnZ2VyLzsuLi8uLi9oZWFwLzsmcXVvdDskKFdlYktpdExpYnJh
cmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVk
ZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlJnF1
b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3JpcHRDb3Jl
JnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVv
dDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVvdDsiCiAJ
CVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfX1NURF9DIgogCQlGb3JjZWRJbmNsdWRlRmlsZXM9
IklDVVZlcnNpb24uaCIKIAkvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZpbGVzLmNtZAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRD
b3JlL2NvcHktZmlsZXMuY21kCShyZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL2NvcHktZmlsZXMuY21k
CSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIGZvciAlJWQgaW4gKAogICAgIGRlYnVn
Z2VyCiAgICAgaW50ZXJwcmV0ZXIKICAgICBqaXQKKyAgICBsbGludAogICAgIHBhcnNlcgogICAg
IHByb2ZpbGVyCiAgICAgcnVudGltZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDEwODE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03LDYgKzcsMTUg
QEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2VjdGlvbiAq
LworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAw
RjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQ
QlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovOworCQkJYnVpbGRQaGFzZXMgPSAo
CisJCQkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNl
cyAqLywKKwkJCSk7CisJCQluYW1lID0gIkxMSW50IE9mZnNldHMiOworCQkJcHJvZHVjdE5hbWUg
PSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKIAkJNjVGQjNGNjYwOUQxMUU5MTAwRjQ5REVCIC8q
IERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKIAkJ
CWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2NUZCM0Y3NzA5RDExRUJEMDBGNDlERUIgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkRlcml2ZWQgU291
cmNlcyIgKi87CkBAIC0xNCw2ICsyMyw5IEBACiAJCQkJNjVGQjNGNjUwOUQxMUU5MTAwRjQ5REVC
IC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk1RDM1REVFMTBDN0MxNDBCMDA4
NjQ4QjIgLyogR2VuZXJhdGUgRFRyYWNlIGhlYWRlciAqLywKIAkJCSk7CisJCQlkZXBlbmRlbmNp
ZXMgPSAoCisJCQkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8sCisJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcHJvZHVjdE5h
bWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJfTsKQEAgLTQ4LDYgKzYwLDEwIEBACiAJCTBCQUM5
NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0
MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCQ0Q4MzU3MTQ4NTg0NTIwMEVBMjAw
MyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkYy
OEEyOTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyog
U2l6ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTElu
dEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAq
LzsgfTsKKwkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk2MTRC
Q0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8q
IExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi87IH07
CisJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTgxNEJDRjQ1QTAwODg1
QjRGIC8qIExMSW50VGh1bmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBlLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBNTE0QkNG
NTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFuZGxlcklu
Zm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4
M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4NUI0RiAv
KiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdl
SW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC01OCw5ICs3NCwxMyBAQAogCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2Fs
bExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjcxNEJD
RjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xv
YmFsUmVzb2x2ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRv
Qnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwRkM0NTgxNEJE
MTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8q
IENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTZENzI2
MTQyQzM5QzAwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZl
Y3Rvci5jcHAgKi87IH07CiAJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVREcml2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjY2
MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhl
Y3V0aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RDE0
QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRC
IC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNv
ZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjI0MkRB
NzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFCQjAwN0FE
RDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU2RjE0NzM4RjMxMDAxMjFFNEYgLyogREZH
Q29kZUJsb2Nrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU3MDE0NzM4RjM1
MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJs
b2Nrcy5jcHAgKi87IH07CkBAIC03MSw2ICs5MSwxOSBAQAogCQkwRjQzMTczODE0NkJBQzY5MDA3
RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFibGVIYW5k
bGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3
MiAvKiBKSVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Njgw
N0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkwRjQ2ODBB
MzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyog
TExJbnRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RjE0
QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLzsgc2V0dGluZ3MgPSB7Q09NUElM
RVJfRkxBR1MgPSAiLVduby11bnVzZWQtcGFyYW1ldGVyIjsgfTsgfTsKKwkJMEY0NjgwQTUxNEJB
N0Y4RDAwQkZFMjcyIC8qIExMSW50SGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50SGVs
cGVycy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTExNEJB
N0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgKi87IH07CisJCTBGNDY4
MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3
MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0IxNEJC
QjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8q
IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbElu
dGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCAq
LzsgfTsKKwkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM4
MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDIxNEJCRDE2NTAwQkZF
MjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCAqLzsg
fTsKKwkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQ0YxNEJCQjNEMTAwQkZF
MjcyIC8qIExMSW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZh
bHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcCAqLzsgfTsK
KwkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEQxMTRCQkM1
RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1NUYwRjQxNEQxMDYzOTAwQUM3NjQ5IC8q
IEFic3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovOyB9Owog
CQkwRjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5
IC8qIEFic3RyYWN0UEMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFs
aXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1
RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDA5LDcgKzQ0Miw3
IEBACiAJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2Qjk5QUUxMTE3RTU3ODEw
MERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRj
aC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJC
MDlCRTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87IH07CiAJCTg2QkIwOUMx
MTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVw
YXRjaC5oICovOyB9OwotCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJs
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2
RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyB9OworCQk4NkMzNkVF
QTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBN
YWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhE
RDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3BwICovOyB9OwogCQk4NkM1
NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERTExQTIxM0VFMDAwN0Y3
RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07CiAJCTg2QzU2OEUyMTFBMjEzRUUwMDA3
RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyogTUlQU0Fzc2VtYmxlci5o
ICovOyB9OwpAQCAtNzc5LDYgKzgxMiwyMCBAQAogLyogRW5kIFBCWEJ1aWxkRmlsZSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCisJCTBGNDY4
MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJCQlp
c2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5
MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUgPSAx
OworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzI7CisJ
CQlyZW1vdGVJbmZvID0gIkxMSW50IE9mZnNldHMiOworCQl9OworCQkwRjQ2ODBCMzE0QkE4MjE0
MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0geworCQkJaXNhID0gUEJYQ29u
dGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMw
MkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBlID0gMTsKKwkJCXJlbW90
ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyOworCQkJcmVtb3RlSW5m
byA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJMTQxMjE0QkUwQTQ5MTkwRTAw
NDgwMjU1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJCWlzYSA9IFBCWENvbnRh
aW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJB
QUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTgyNCw2ICs4NzEsMTUgQEAKIC8qIEVuZCBQ
QlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb3B5RmlsZXNC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlG
aWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CisJCQlidWlsZEFj
dGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEv
OworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsKIAkJNURCQjE1MTExMzFE
MEIxMzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7CiAJCQlpc2EgPSBQQlhD
b3B5RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMTI7CkBAIC04NjQsNiAr
OTIwLDEwIEBACiAJCTBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlv
blZlcmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRocmVhZFJlc3Ry
aWN0aW9uVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJDRDgzNTQx
NDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBUZW1wb3JhcnlDaGFuZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5
cG9pbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RW50
cnlwb2ludHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50RW50cnlw
b2ludHMuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50VGh1bmtzLmNwcDsg
cGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50VGh1bmtzLmg7IHBhdGggPSBsbGludC9MTEludFRo
dW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNBNTE0QkNGNTA0MDA4
ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29k
ZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQTgxNEJDRjU1RTAw
ODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0FBMTRC
Q0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTg3NCw5ICs5MzQsMTMgQEAKIAkJMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRG
IC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBNZXRob2RDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYw
QjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbFJlc29sdmVJbmZvLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zm
c2V0VG9CeXRlY29kZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
YWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRDYWxsTGlua0luZm8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENv
bW1vblNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21tb25T
bG93UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNkQ3MjQxNDJDMzlB
MjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIx
QzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpJVERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBF
eGVjdXRpb25IYXJuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4ZWN1
dGlvbkhhcm5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0UxNEJF
QUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVDb252ZW50aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZl
c3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWFrUmVmZXJlbmNlSGFy
dmVzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZEMTQ3MzhGMkUw
MDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQkwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC04ODcsNiArOTUxLDIwIEBACiAJCTBGNDMxNzM2MTQ2QkFDNjUwMDdFMzg5
MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDdG
MTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRFeGNlcHRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTElu
dE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRG
aWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0g
MDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNlVHJlZSA9IEJVSUxUX1BS
T0RVQ1RTX0RJUjsgfTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0
aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludEV4Y2Vw
dGlvbnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEV4Y2VwdGlvbnMu
aDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50SGVscGVycy5jcHA7IHBhdGgg
PSBsbGludC9MTEludEhlbHBlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkw
RjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRIZWxwZXJzLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50SGVscGVycy5oOyBwYXRoID0gbGxpbnQvTExJbnRIZWxw
ZXJzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEExMTRCQTdGODIwMEJG
RTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgcGF0aCA9IGxsaW50L0xM
SW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBMTEludENvbW1vbi5oOyBwYXRoID0gbGxpbnQvTExJbnRDb21tb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcy
IC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBMTEludE9mZmxpbmVBc21Db25maWcuaDsgcGF0aCA9IGxsaW50L0xMSW50T2ZmbGluZUFz
bUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDNzE0QkJCMTY5
MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmNwcDsgcGF0aCA9IGxsaW50L0xv
d0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2
ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBMb3dMZXZlbEludGVycHJldGVyLmg7IHBhdGggPSBsbGlu
dC9Mb3dMZXZlbEludGVycHJldGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBG
NDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnREYXRhLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RGF0
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENGMTRCQkIzRDEwMEJG
RTI3MiAvKiBMTEludERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJ
bnREYXRhLmg7IHBhdGggPSBsbGludC9MTEludERhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSG9zdENhbGxSZXR1cm5W
YWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEQxMTRCQkM1Rjgw
MEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWJzdHJhY3RQQy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNTVGMEYyMTREMTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBD
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFic3RyYWN0UEMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5
dGVDb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNv
ZGVDYWNoZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVDb2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTE2MzQsNiArMTcxMiwxMyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVu
Y2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9u
ICovCisJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJ
aXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3
NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFt
ZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMTY5Miw2ICsxNzc3LDcgQEAKIAkJCQkxNDEy
MTEyMDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLywKIAkJCQkxNEJENTlCRjBBM0U4Rjkw
MDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk2NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyog
dGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RjE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yICovLAogCQkJKTsKIAkJCW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzE3LDYgKzE4MDMsNyBAQAogCQkJCUY1QzI5MEU2MDI4
NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29yZVByZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4
MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICovLAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZG
NjBGNyAvKiBjb25maWcuaCAqLywKKwkJCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxp
bnQgKi8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAwNzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4
Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1ibGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQz
QUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKQEAgLTE3NTYsNiArMTg0MywyOCBAQAogCQkJdGFi
V2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwogCQl9OworCQkwRjQ2ODA5QzE0QkE3RjREMDBC
RkUyNzIgLyogbGxpbnQgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0g
KAorCQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAq
LywKKwkJCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICov
LAorCQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgKi8sCisJ
CQkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi8sCisJCQkJMEY0
NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0Yx
NEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovLAorCQkJCTBGNDY4MEM1MTRCQkIxNjkw
MEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovLAorCQkJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3
MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAqLywKKwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgKi8sCisJCQkJMEY0NjgwQzgxNEJCQjE2
OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3
RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4
MjAwQkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgKi8sCisJCQkJMEY0NjgwQTAxNEJBN0Y4MjAw
QkZFMjcyIC8qIExMSW50SGVscGVycy5oICovLAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3IuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGlu
dDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3MjYw
MDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0xNzkwLDYgKzE4OTksOCBAQAogCQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkgLyog
aml0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2
ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJ
MEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJ
CQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJ
MEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4
MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTIyNjMs
NiArMjM3NCw4IEBACiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0g
ewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3OTE0QkU3
MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovLAorCQkJCTBGMjFDMjdB
MTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8sCiAJCQkJMEYxNUYxNUQx
NEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovLAogCQkJCUJDRjYwNTExMEUy
MDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBC
OUE2NEQgLyogQXJnTGlzdC5oICovLApAQCAtMjYzNyw2ICsyNzUwLDggQEAKIAkJOTY5QTA3OEYw
RUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVD
b252ZW50aW9ucy5oICovLAorCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENh
bGxMaW5rSW5mby5oICovLAogCQkJCTBGOUZDOEJGMTRFMUI1RkIwMEQ1MkFFMCAvKiBQb2x5bW9y
cGhpY1B1dEJ5SWRMaXN0LmNwcCAqLywKIAkJCQkwRjlGQzhDMDE0RTFCNUZCMDBENTJBRTAgLyog
UG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oICovLAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFF
MCAvKiBQdXRLaW5kLmggKi8sCkBAIC0zMjAxLDcgKzMzMTYsMTYgQEAKIAkJCQk4NjcwNEI4QTEy
REJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0
QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEYxNUYxNUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50
SGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8q
IEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MENBMTRCQkIxNkMwMEJG
RTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0IxNEJCQjE3
MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
MEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGNDY4MEQzMTRCQkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGNDY4MEQ1MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVy
blZhbHVlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyog
TExJbnRFbnRyeXBvaW50cy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYwQjgzOUQxNEJDRjQ2NjAw
ODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBNzE0QkNG
NTA3MDA4ODVCNEYgLyogQ29kZVR5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E5MTRC
Q0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgz
QUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICov
LApAQCAtMzIxMCw3ICszMzM0LDExIEBACiAJCQkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8q
IE1ldGhvZENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjcxNEJDRjhF
MTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBC
ODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENh
bGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRC
IC8qIEpJVERyaXZlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0MxNEJFNzI3NjAwQURD
NjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdEMTRC
RTcyN0EwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEExNEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVs
cGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERG
R0NhcGFiaWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5NEMxNEMzQ0Q0MzAwN0Mz
REIxIC8qIERGR0J5dGVDb2RlQ2FjaGUuaCBpbiBIZWFkZXJzICovLApAQCAtMzIzNiw2ICszMzY0
LDI0IEBACiAvKiBFbmQgUEJYSGVhZGVyc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBQQlhOYXRpdmVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIg
LyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFy
Z2V0OworCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3
MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJ
bnRPZmZzZXRzRXh0cmFjdG9yIiAqLzsKKwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MDhC
MTRCQTdFNUUwMEJGRTI3MiAvKiBTb3VyY2VzICovLAorCQkJCTBGNDY4MDhDMTRCQTdFNUUwMEJG
RTI3MiAvKiBGcmFtZXdvcmtzICovLAorCQkJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBD
b3B5RmlsZXMgKi8sCisJCQkpOworCQkJYnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRl
bmNpZXMgPSAoCisJCQkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVu
ZGVuY3kgKi8sCisJCQkpOworCQkJbmFtZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJ
CXByb2R1Y3ROYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdFJlZmVy
ZW5jZSA9IDBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0
b3IgKi87CisJCQlwcm9kdWN0VHlwZSA9ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOwor
CQl9OwogCQkxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAqLyA9IHsKIAkJCWlz
YSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDEyMTEz
OTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRp
dmVUYXJnZXQgIm1pbmlkb20iICovOwpAQCAtMzM2MiwxMSArMzUwOCwyOSBAQAogCQkJCTE0QkQ1
OUJFMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTkzMkY1QkRBMDgyMkExQzcw
MDczNjk3NSAvKiBqc2MgKi8sCiAJCQkJNjUxMTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RS
ZWdFeHAgKi8sCisJCQkJMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0
c0V4dHJhY3RvciAqLywKKwkJCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zm
c2V0cyAqLywKIAkJCSk7CiAJCX07CiAvKiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MEFBMTRC
QTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2Eg
PSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgz
NjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNS
T09UKS9sbGludC9Mb3dMZXZlbEFzc2VtYmxlci5hc20iLAorCQkJKTsKKwkJCW5hbWUgPSAiR2Vu
ZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxU
X1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaCIsCisJCQkp
OworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBh
dGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RV
Q1RTX0RJUn0vTExJbnRPZmZzZXRzL1wiXG5cbi91c3IvYmluL2VudiBydWJ5IFwiJHtTUkNST09U
fS9vZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmJcIiBcIiR7U1JDUk9PVH0v
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc21cIiBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9M
TEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oXCJcbiI7CisJCX07CiAJCTM3MTNGMDE0
MTQyOTA1MjQwMDM2Mzg3RiAvKiBDaGVjayBGb3IgSW5hcHByb3ByaWF0ZSBPYmplY3RpdmUtQyBD
bGFzcyBOYW1lcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0zNDcyLDcgKzM2MzYsNyBAQAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQkJc2hlbGxQ
YXRoID0gL2Jpbi9zaDsKLQkJCXNoZWxsU2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9E
VUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL2RvY3NcIlxuY2QgXCIke0JV
SUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmVcIlxuXG4vYmlu
L2xuIC1zZmggXCIke1NSQ1JPT1R9XCIgSmF2YVNjcmlwdENvcmVcbmV4cG9ydCBKYXZhU2NyaXB0
Q29yZT1cIkphdmFTY3JpcHRDb3JlXCJcbmV4cG9ydCBCVUlMVF9QUk9EVUNUU19ESVI9XCIuLi8u
LlwiXG5cbm1ha2UgLS1uby1idWlsdGluLXJ1bGVzIC1mIFwiSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNyL3NiaW4vc3lzY3RsIC1uIGh3Lm5jcHVgXG4iOworCQkJ
c2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9E
ZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7U1JDUk9P
VH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2YVNjcmlwdENv
cmVcIlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJcblxubWFrZSAtLW5vLWJ1
aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlXCIgLWog
YC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNwdWBcblxuL3Vzci9iaW4vZW52IHJ1YnkgSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIgSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20gJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0pTQ0xMSW50T2Zmc2V0c0V4dHJh
Y3RvciBMTEludEFzc2VtYmx5LmhcbiI7CiAJCX07CiAJCTkzMTk1ODZCMDlEOUY5MUEwMEE1NkZE
NCAvKiBDaGVjayBGb3IgR2xvYmFsIEluaXRpYWxpemVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZTsKQEAgLTM1MDcsNiArMzY3MSwxNCBAQAogLyogRW5kIFBCWFNo
ZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMg
Ki8gPSB7CisJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFz
ayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUy
NzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTEx
RDBBNDg3OTNDMDA0ODAyNTUgLyogU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNC
dWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTM3NjgsNyAr
Mzk0MCwxNCBAQAogCQkJCTg2NzA0Qjg2MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTg2NzA0Qjg5MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVy
bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFy
clN5bnRheENoZWNrZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTQxNEJBN0Y4RDAw
QkZFMjcyIC8qIExMSW50SGVscGVycy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBODE0
QkE3RkFCMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVy
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQyMTRCQkQxNjUwMEJGRTI3MiAvKiBMTElu
dERhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8q
IEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEYwQjgzOUExNEJD
RjQ1RDAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
MEYwQjgzOUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMEI4M0IwMTRCQ0Y3MTYwMDg4NUI0RiAvKiBDYWxsTGlua0luZm8uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJMEYwQjgzQjQxNEJDRjg2MDAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5r
SW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNjlFODZDMzE0QzZFNTUxMDAyQzJDNjIgLyog
TnVtYmVyT2ZDb3Jlcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTM3OTYsNiArMzk3NSwxNiBAQAog
LyogRW5kIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYVGFy
Z2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCisJCTBGNDY4MEIyMTRCQTgxMTUwMEJGRTI3MiAvKiBQ
QlhUYXJnZXREZXBlbmRlbmN5ICovID0geworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsK
KwkJCXRhcmdldCA9IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICov
OworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMTE0QkE4MTE1MDBCRkUyNzIgLyogUEJYQ29udGFp
bmVySXRlbVByb3h5ICovOworCQl9OworCQkwRjQ2ODBCNDE0QkE4MjE0MDBCRkUyNzIgLyogUEJY
VGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJ
CQl0YXJnZXQgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0
cmFjdG9yICovOworCQkJdGFyZ2V0UHJveHkgPSAwRjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyog
UEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQkxNDEyMTRCRjBBNDkxOTBFMDA0ODAy
NTUgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVu
ZGVuY3k7CiAJCQl0YXJnZXQgPSAxNDEyMTExRjBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRvbSAq
LzsKQEAgLTM4MjksNiArNDAxOCwxNTAgQEAKIC8qIEVuZCBQQlhUYXJnZXREZXBlbmRlbmN5IHNl
Y3Rpb24gKi8KIAogLyogQmVnaW4gWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLworCQkw
RjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxk
Q29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9V
U0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsK
KwkJCQlDT1BZX1BIQVNFX1NUUklQID0gTk87CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQg
PSBnbnU5OTsKKwkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKKwkJCQlHQ0NfRU5BQkxFX09C
SkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfT1BUSU1JWkFUSU9OX0xFVkVMID0gMDsKKwkJ
CQlHQ0NfUFJFUFJPQ0VTU09SX0RFRklOSVRJT05TID0gKAorCQkJCQkiREVCVUc9MSIsCisJCQkJ
CSIkKGluaGVyaXRlZCkiLAorCQkJCSk7CisJCQkJR0NDX1NZTUJPTFNfUFJJVkFURV9FWFRFUk4g
PSBOTzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4x
XzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0Nf
V0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRf
UkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOwor
CQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3Us
CisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVB
REVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VU
ID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gTk87CisJCQkJUFJPRFVDVF9OQU1FID0g
IiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVS
X1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRz
ICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsK
KwkJMEY0NjgwOTcxNEJBN0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NF
QVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9C
SVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9O
X0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJE
ID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0ND
X1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19X
QVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlT
U0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0g
WUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NF
QVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlM
VF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJ
CSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElW
RV9BUkNIID0gTk87CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlT
REtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUyki
OworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODA5ODE0QkE3RTVFMDBC
RkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5P
OworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFT
RV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0
aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19F
TkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxl
LmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09O
VkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlF
UzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9V
TlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIg
PSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTElu
dE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlN
QUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBO
TzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBt
YWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9Owor
CQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8q
IFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJ
QVJDSFMgPSAiJChBUkNIU19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQ
ID0gWUVTOworCQkJCURFQlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0i
OworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9P
QkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGls
ZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9O
ID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJ
CUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9W
QVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJ
CQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0
cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9E
RVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJUFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05B
TUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRI
UyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NF
QVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRjQ2
ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRl
cml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBG
NDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9
ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFJlbGVhc2U7CisJCX07
CisJCTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8gPSB7CisJCQlpc2Eg
PSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVD
VF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZmls
aW5nOworCQl9OworCQkwRjQ2ODBCMDE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9
IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5h
bWUgPSBQcm9kdWN0aW9uOworCQl9OwogCQkxNDEyMTEzQTBBNDg3OTg0MDA0ODAyNTUgLyogRGVi
dWcgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGlu
Z3MgPSB7CkBAIC00MDcwLDYgKzQ0MDMsMjggQEAKIC8qIEVuZCBYQ0J1aWxkQ29uZmlndXJhdGlv
biBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwor
CQkwRjQ2ODA5QTE0QkE3RTVGMDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZv
ciBQQlhOYXRpdmVUYXJnZXQgIkpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciIgKi8gPSB7CisJCQlp
c2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKKwkJ
CQkwRjQ2ODA5NjE0QkE3RTVFMDBCRkUyNzIgLyogRGVidWcgKi8sCisJCQkJMEY0NjgwOTcxNEJB
N0U1RTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcy
IC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVj
dGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJ
CQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9uOworCQl9OworCQkwRjQ2ODBB
QzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dy
ZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0
aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwQUQxNEJBN0ZE
OTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MEFFMTRCQTdGRDkwMEJGRTI3MiAvKiBS
ZWxlYXNlICovLAorCQkJCTBGNDY4MEFGMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8s
CisJCQkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOwor
CQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3Vy
YXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjExMzkwQTQ4Nzk4NDAwNDgwMjU1
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJtaW5pZG9t
IiAqLyA9IHsKIAkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CiAJCQlidWlsZENvbmZpZ3Vy
YXRpb25zID0gKApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVm
ZmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5r
QnVmZmVyLmgJKHJldmlzaW9uIDEwODE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTGlua0J1ZmZlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw3IEBACiAjZGVm
aW5lIEdMT0JBTF9USFVOS19JRCByZWludGVycHJldF9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDxp
bnRwdHJfdD4oLTEpKQogI2RlZmluZSBSRUdFWFBfQ09ERV9JRCByZWludGVycHJldF9jYXN0PHZv
aWQqPihzdGF0aWNfY2FzdDxpbnRwdHJfdD4oLTIpKQogCi0jaW5jbHVkZSA8TWFjcm9Bc3NlbWJs
ZXIuaD4KKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlci5oIgogI2luY2x1ZGUgPHd0Zi9EYXRhTG9n
Lmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckNvZGVSZWYuaAko
cmV2aXNpb24gMTA4MTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckNvZGVSZWYuaAkod29ya2luZyBjb3B5KQpAQCAtMjczLDYgKzI3MywxNCBAQCBw
dWJsaWM6CiAgICAgewogICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lOVEVSKG1fdmFsdWUp
OwogICAgIH0KKyAgICAKKyAgICBzdGF0aWMgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNyZWF0ZUZy
b21FeGVjdXRhYmxlQWRkcmVzcyh2b2lkKiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVF9W
QUxJRF9DT0RFX1BPSU5URVIodmFsdWUpOworICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIg
cmVzdWx0OworICAgICAgICByZXN1bHQubV92YWx1ZSA9IHZhbHVlOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KIAogICAgIGV4cGxpY2l0IE1hY3JvQXNzZW1ibGVyQ29kZVB0cihSZXR1
cm5BZGRyZXNzUHRyIHJhKQogICAgICAgICA6IG1fdmFsdWUocmEudmFsdWUoKSkKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlv
bnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUNvbnZlbnRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCeXRlY29kZUNv
bnZlbnRpb25zX2gKKyNkZWZpbmUgQnl0ZWNvZGVDb252ZW50aW9uc19oCisKKy8vIFJlZ2lzdGVy
IG51bWJlcnMgdXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5p
bmcgYWNjb3JkaW5nIHRvIHRoZWlyIHJhbmdlczoKKy8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZG
RkZGICBOZWdhdGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRy
aWVzIGluIHRoZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCisvLyAgICAgIDB4MDAw
MDAwMDAtMHgzRkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9p
bnRlciBhcmUgbG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBj
YWxsZnJhbWUuCisvLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNl
cyBmcm9tIDB4NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9u
IHRoZSBDb2RlQmxvY2suCitzdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3Rlcklu
ZGV4ID0gMHg0MDAwMDAwMDsKKworI2VuZGlmIC8vIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1
cy5jcHAJKHJldmlzaW9uIDEwODE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE3ICsyNyw0MCBAQAog
I2luY2x1ZGUgIkNhbGxMaW5rU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNp
bmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorQ2FsbExp
bmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9m
aWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShw
cm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisjaWYgRU5B
QkxFKExMSU5UKQorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2st
Pmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworICAgIExMSW50Q2FsbExp
bmtJbmZvKiBjYWxsTGlua0luZm8gPSBpbnN0cnVjdGlvbls0XS51LmNhbGxMaW5rSW5mbzsKKyAg
ICAKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxl
ZS5nZXQoKSwgZmFsc2UpOworI2Vsc2UKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFs
c2UpOworI2VuZGlmCit9CisKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRl
Rm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIHsK
ICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVj
b2RlSW5kZXgpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAg
ICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmdldENhbGxM
aW5rSW5mbyhieXRlY29kZUluZGV4KS5sYXN0U2VlbkNhbGxlZS5nZXQoKSwKLSAgICAgICAgcHJv
ZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpOworICAgIGlmICgh
cHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZDYWxsTGlua0luZm9zKCkpCisgICAgICAgIHJldHVybiBj
b21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAg
IGlmIChwcm9maWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKKyAg
ICAgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIHRydWUpOworICAgIAorICAgIEpTRnVuY3Rp
b24qIHRhcmdldCA9IHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4
KS5sYXN0U2VlbkNhbGxlZS5nZXQoKTsKKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgcmV0dXJu
IGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisgICAgCisg
ICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKHRhcmdldCwgZmFsc2UpOwogI2Vsc2UKICAgICByZXR1
cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFsc2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24gMTA4MTYy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDE1ICs0NywxNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGlj
IENhbGxMaW5rU3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCk7CiAgICAgCi0gICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFy
Z2V0OyB9CisgICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0IHx8
IG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0
IHsgcmV0dXJuICFtX2NhbGxUYXJnZXQ7IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsg
cmV0dXJuICFpc1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBKU0Z1bmN0aW9u
KiBjYWxsVGFyZ2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgCiBwcml2
YXRlOgorICAgIHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9j
ayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOworICAgIAogICAgIEpTRnVuY3Rpb24qIG1fY2Fs
bFRhcmdldDsKICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7CiB9OwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEwODE2
MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2lu
Y2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5j
bHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIK
ICNpbmNsdWRlICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAt
MzU2LDEwICszNTcsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjKSBj
bwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBpICs9
IG9wY29kZUxlbmd0aHNbZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rp
b25zKClbaV0udS5vcGNvZGUpXSkKICAgICAgICAgKytpbnN0cnVjdGlvbkNvdW50OwogCi0gICAg
ZGF0YUxvZygiJWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRl
cihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMpXG5cbiIsCisgICAgZGF0YUxvZygiJWx1IG1faW5z
dHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJl
Z2lzdGVyKHMpOyAlZCB2YXJpYWJsZShzKVxuXG4iLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBsb25nPihpbnN0cnVjdGlvbkNvdW50KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQgbG9uZz4oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSksCi0g
ICAgICAgIHRoaXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAg
ICAgICB0aGlzLCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX251bVZh
cnMpOwogCiAgICAgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4gPSBp
bnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0
ZXJhdG9yIGVuZCA9IGluc3RydWN0aW9ucygpLmVuZCgpOwpAQCAtODk2LDYgKzg5NywxNCBAQCB2
b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmlu
dFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxv
Y2F0aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWw6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwg
InB1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIH0KICAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAg
cHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsK
ICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTQ1Myw2ICsxNDYyLDcgQEAgQ29kZUJsb2NrOjpDb2Rl
QmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLAogewogICAgIHNldE51bVBhcmFtZXRlcnMob3RoZXIu
bnVtUGFyYW1ldGVycygpKTsKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgaml0QWZ0
ZXJXYXJtVXAoKTsKICAgICAKICAgICBpZiAob3RoZXIubV9yYXJlRGF0YSkgewogICAgICAgICBj
cmVhdGVSYXJlRGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0xNTAxLDYgKzE1MTEsNyBAQCBDb2RlQmxv
Y2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgQVNTRVJUKG1fc291cmNlKTsK
ICAgICAKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsK
IAogI2lmIERVTVBfQ09ERV9CTE9DS19TVEFUSVNUSUNTCiAgICAgbGl2ZUNvZGVCbG9ja1NldC5h
ZGQodGhpcyk7CkBAIC0xNTE4LDcgKzE1MjksMTEgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkK
ICNpZiBFTkFCTEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxFKQogICAgIGR1bXBWYWx1ZVByb2ZpbGVz
KCk7CiAjZW5kaWYKLSAgICAKKworI2lmIEVOQUJMRShMTElOVCkgICAgCisgICAgd2hpbGUgKG1f
aW5jb21pbmdMTEludENhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkp
CisgICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCktPnJlbW92ZSgpOworI2VuZGlm
IC8vIEVOQUJMRShMTElOVCkKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFdlIG1heSBiZSBkZXN0
cm95ZWQgYmVmb3JlIGFueSBDb2RlQmxvY2tzIHRoYXQgcmVmZXIgdG8gdXMgYXJlIGRlc3Ryb3ll
ZC4KICAgICAvLyBDb25zaWRlciB0aGF0IHR3byBDb2RlQmxvY2tzIGJlY29tZSB1bnJlYWNoYWJs
ZSBhdCB0aGUgc2FtZSB0aW1lLiBUaGVyZQpAQCAtMTczMCw4ICsxNzQ1LDY5IEBAIHZvaWQgQ29k
ZUJsb2NrOjpmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICNlbHNlCiAgICAgc3RhdGljIGNvbnN0
IGJvb2wgdmVyYm9zZVVubGlua2luZyA9IGZhbHNlOwogI2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAv
LyBFTkFCTEUoSklUKQogICAgIAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnRlcnByZXRlciog
aW50ZXJwcmV0ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJldGVyOworICAgIC8vIGludGVycHJl
dGVyLT5lbmFibGVkKCkgcmV0dXJucyB0cnVlIGlmIHRoZSBvbGQgQysrIGludGVycHJldGVyIGlz
IGVuYWJsZWQuIElmIHRoYXQncyBlbmFibGVkCisgICAgLy8gdGhlbiB3ZSdyZSBub3QgdXNpbmcg
TExJbnQuCisgICAgaWYgKCFpbnRlcnByZXRlci0+ZW5hYmxlZCgpKSB7CisgICAgICAgIGZvciAo
c2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7
IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0cnVjdGlv
biA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXTsKKyAg
ICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9u
WzBdLnUub3Bjb2RlKSkgeworICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6CisgICAgICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgICAgICAgICBpZiAoIWN1ckluc3RydWN0
aW9uWzRdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUu
c3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2co
IkNsZWFyaW5nIExMSW50IHByb3BlcnR5IGFjY2VzcyB3aXRoIHN0cnVjdHVyZSAlcC5cbiIsIGN1
ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBjdXJJ
bnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1cklu
c3RydWN0aW9uWzVdLnUub3BlcmFuZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgICAg
IGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAgICAgIGlm
IChIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNl0udS5z
dHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1
ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykgeworICAg
ICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBMTEludCBwdXQgdHJhbnNpdGlvbiB3
aXRoIHN0cnVjdHVyZXMgJXAgLT4gJXAsIGNoYWluICVwLlxuIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0cnVjdHVy
ZUNoYWluLmdldCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY3VySW5z
dHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0
cnVjdGlvbls2XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1ckluc3Ry
dWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJ
bnN0cnVjdGlvblswXS51Lm9wY29kZSA9IGludGVycHJldGVyLT5nZXRPcGNvZGUob3BfcHV0X2J5
X2lkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
cy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlv
biogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQo
Y3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsCisgICAgICAg
ICAgICAgICAgICAgfHwgaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0aW9uWzBd
LnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKKyAgICAgICAgICAgIGlm
ICghY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5z
dHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgZGF0
YUxvZygiQ2xlYXJpbmcgTExJbnQgZ2xvYmFsIHJlc29sdmUgY2FjaGUgd2l0aCBzdHJ1Y3R1cmUg
JXAuXG4iLCBjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgICAg
ICBjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgY3Vy
SW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kID0gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgICAgIGlmIChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpICYmICFIZWFw
Ojppc01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5jYWxsZWUuZ2V0KCkpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coIkNsZWFyaW5nIExMSW50IGNhbGwgZnJvbSAlcC5cbiIsIHRoaXMpOworICAgICAgICAg
ICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKCEhbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUg
JiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVl
LmdldCgpKSkKKyAgICAgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2Vl
bkNhbGxlZS5jbGVhcigpOworICAgICAgICB9CisgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKKwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8vIENoZWNrIGlmIHdlJ3JlIG5vdCBsaXZl
LiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAgICAgaWYgKCEoc2hvdWxkSW1tZWRpYXRlbHlB
c3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBtX2RmZ0RhdGEtPmxpdmVuZXNzSGFzQmVlblBy
b3ZlZCkpIHsKQEAgLTE3NTQsNyArMTgzMCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5hbGl6ZVVu
Y29uZGl0aW9uYWxseSgKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9m
Q2FsbExpbmtJbmZvcygpOyArK2kpIHsKICAgICAgICAgICAgIGlmIChjYWxsTGlua0luZm8oaSku
aXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQoY2FsbExpbmtJbmZvKGkpLmNhbGxlZS5nZXQo
KSkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKLSAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgY2FsbCBmcm9tICVwLlxuIiwgdGhpcyk7CisgICAg
ICAgICAgICAgICAgICAgIGRhdGFMb2coIkNsZWFyaW5nIGNhbGwgZnJvbSAlcCB0byAlcC5cbiIs
IHRoaXMsIGNhbGxMaW5rSW5mbyhpKS5jYWxsZWUuZ2V0KCkpOwogICAgICAgICAgICAgICAgIGNh
bGxMaW5rSW5mbyhpKS51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CiAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICBpZiAoISFjYWxsTGlua0luZm8oaSkubGFzdFNlZW5DYWxs
ZWUKQEAgLTE4NTIsMTAgKzE5MjgsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRT
dHJvbmdSZWZlcgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlvbkRlY2xzLnNp
emUoKTsgKytpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9mdW5jdGlvbkRlY2xzW2ldKTsK
ICNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKLSAgICBmb3IgKHNpemVfdCBzaXplID0g
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQotICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJv
cGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKLSAgICBmb3IgKHNpemVfdCBzaXplID0gbV9n
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0g
ICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+aW50ZXJwcmV0
ZXItPmVuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9wcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICAg
ICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICAg
ICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoREZH
X0pJVCkKQEAgLTE4NjMsOCArMTk0MSw5IEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0
U3Ryb25nUmVmZXIKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgZXhlY3V0YWJsZXMgdGhhdCB3
ZSBoYXZlIGlubGluZWQgZG9uJ3QgZGllLgogICAgICAgICAvLyBGSVhNRTogSWYgdGhleSB3b3Vs
ZCBoYXZlIG90aGVyd2lzZSBkaWVkLCB3ZSBzaG91bGQgcHJvYmFibHkgdHJpZ2dlciByZWNvbXBp
bGF0aW9uLgogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlubGluZUNhbGxGcmFtZXMo
KS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxG
cmFtZXMoKVtpXS5leGVjdXRhYmxlKTsKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpbmxp
bmVDYWxsRnJhbWVzKClbaV0uY2FsbGVlKTsKKyAgICAgICAgICAgIElubGluZUNhbGxGcmFtZSYg
aW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lcygpW2ldOworICAgICAgICAgICAgdmlz
aXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZS5leGVjdXRhYmxlKTsKKyAgICAgICAgICAgIHZp
c2l0b3IuYXBwZW5kKCZpbmxpbmVDYWxsRnJhbWUuY2FsbGVlKTsKICAgICAgICAgfQogICAgIH0K
ICNlbmRpZgpAQCAtMjA2OCwxMiArMjE0NywxOCBAQCB1bnNpZ25lZCBDb2RlQmxvY2s6OmFkZE9y
RmluZENvbnN0YW50KEpTCiAgICAgfQogICAgIHJldHVybiBhZGRDb25zdGFudCh2KTsKIH0KLSAg
ICAKKwogI2lmIEVOQUJMRShKSVQpCiB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogewog
ICAgIGlmICghIW1fYWx0ZXJuYXRpdmUpCiAgICAgICAgIG1fYWx0ZXJuYXRpdmUtPnVubGlua0Nh
bGxzKCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9s
bGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG1fbGxpbnRDYWxs
TGlua0luZm9zW2ldLmlzTGlua2VkKCkpCisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZv
c1tpXS51bmxpbmsoKTsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoIShtX2NhbGxMaW5rSW5mb3Mu
c2l6ZSgpIHx8IG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCkpKQogICAgICAgICByZXR1cm47
CiAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQpAQCAtMjA4OCwxMCArMjE3Mywz
OSBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogCiB2b2lkIENvZGVCbG9jazo6dW5s
aW5rSW5jb21pbmdDYWxscygpCiB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIHdoaWxlIChtX2lu
Y29taW5nTExJbnRDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQor
ICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpLT51bmxpbmsoKTsKKyNlbmRpZgor
ICAgIGlmIChtX2luY29taW5nQ2FsbHMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CiAgICAg
UmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRoaXMpOwogICAgIHdoaWxlIChtX2luY29taW5n
Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2FsbHMuZW5kKCkpCiAgICAgICAgIG1faW5jb21p
bmdDYWxscy5iZWdpbigpLT51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7CiB9
CisKK3Vuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiBleGVjLCBS
ZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit7CisjaWYgRU5BQkxFKExMSU5UKQorICAg
IGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
YmVnaW4pCisgICAgICAgICYmIHJldHVybkFkZHJlc3MudmFsdWUoKSA8PSBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KCZsbGludF9lbmQpKSB7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSk7
CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSA9PSB0aGlzKTsKKyAgICAgICAgQVNT
RVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOworICAgICAgICBJbnN0
cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBleGVjLT5jdXJyZW50VlBDKCk7CisgICAgICAgIEFTU0VS
VChpbnN0cnVjdGlvbik7CisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldChpbnN0cnVjdGlv
bik7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisjZW5kaWYKKyAgICBp
ZiAoIW1fcmFyZURhdGEpCisgICAgICAgIHJldHVybiAxOworICAgIFZlY3RvcjxDYWxsUmV0dXJu
T2Zmc2V0VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0gbV9yYXJlRGF0YS0+bV9jYWxs
UmV0dXJuSW5kZXhWZWN0b3I7CisgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCisgICAgICAg
IHJldHVybiAxOworICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0
ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5i
ZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5B
ZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7Cit9CiAjZW5kaWYKIAogdm9pZCBDb2Rl
QmxvY2s6OmNsZWFyRXZhbENhY2hlKCkKQEAgLTIxODcsMjQgKzIzMDEsNDUgQEAgYm9vbCBGdW5j
dGlvbkNvZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERgogCiB2b2lkIFByb2dyYW1Db2RlQmxvY2s6
OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2Vs
aW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUo
KSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0
PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXpl
ZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRXZhbENvZGVCbG9jazo6amV0dGlzb24o
KQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOwor
ICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAg
QVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1
dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xvYmFs
RGF0YSgpKTsKIH0KIAogdm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24oKQogewotICAg
IEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VS
VChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRo
aXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGVGb3IoKmdsb2JhbERh
dGEoKSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsK
IH0KKwordm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEm
IGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSkt
PmppdENvbXBpbGUoZ2xvYmFsRGF0YSk7Cit9CisKK3ZvaWQgRXZhbENvZGVCbG9jazo6aml0Q29t
cGlsZUltcGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRU
eXBlKCkgPT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0g
cmVwbGFjZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4o
b3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEZ1
bmN0aW9uQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEp
Cit7CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KTsKKyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxl
Rm9yKGdsb2JhbERhdGEsIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2Rl
Rm9yQ2FsbCk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEw
ODE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBDb2RlQmxvY2tfaAogI2RlZmlu
ZSBDb2RlQmxvY2tfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1
ZGUgIkNhbGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2Rl
T2Zmc2V0LmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgpAQCAtNTAsNiArNTEsNyBAQAogI2lu
Y2x1ZGUgIkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAj
aW5jbHVkZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKICNp
bmNsdWRlICJMaW5lSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUHJlZGlj
dGlvblRyYWNrZXIuaCIKQEAgLTY1LDE2ICs2NywxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCi0vLyBSZWdpc3RlciBudW1iZXJz
IHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29y
ZGluZyB0byB0aGVpciByYW5nZXM6Ci0vLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVn
YXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0
aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgotLy8gICAgICAweDAwMDAwMDAwLTB4
M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJl
IGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1l
LgotLy8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAw
eDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29k
ZUJsb2NrLgotc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4
NDAwMDAwMDA7Ci0KIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgRXhlY1N0YXRlOwogICAg
IGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGlubGluZSBpbnQgdW5tb2RpZmllZEFyZ3VtZW50
c1JlZ2lzdGVyKGludCBhcmd1bWVudHNSZWdpc3RlcikgeyByZXR1cm4gYXJndW1lbnRzUmVnaXN0
ZXIgLSAxOyB9CiAKQEAgLTgzLDYgKzgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
Q29kZUJsb2NrIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIsIHB1YmxpYyBXZWFrUmVm
ZXJlbmNlSGFydmVzdGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENvcHlQYXJzZWRCbG9ja1RhZyB7
IENvcHlQYXJzZWRCbG9jayB9OwogICAgIHByb3RlY3RlZDoKQEAgLTEyMyw3ICsxMjEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkp
CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5hbHRlcm5hdGl2ZSgpOwogICAgICAg
ICAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRU
eXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENv
ZGU6OmlzQmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAjZW5kaWYKQEAgLTE5MiwxNSArMTkwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9kQ2Fs
bExpbmtJbmZvLCB1bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4o
bV9tZXRob2RDYWxsTGlua0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXpl
KCksIGJ5dGVjb2RlSW5kZXgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVj
b2RlT2Zmc2V0KFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLSAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAg
ICAgICAgICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbElu
ZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKLSAgICAgICAgICAg
IGlmICghY2FsbEluZGljZXMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAg
ICAgICAgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9m
ZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCks
IGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3Mu
dmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKLSAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBi
eXRlY29kZU9mZnNldChFeGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAgICAgICB1
bnNpZ25lZCBieXRlY29kZU9mZnNldEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAg
ICAgICB7CkBAIC0yMjEsMTEgKzIxMSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewog
ICAgICAgICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwogICAgICAgICB9Cisj
aWYgRU5BQkxFKExMSU5UKQorICAgICAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoTExJbnRDYWxs
TGlua0luZm8qIGluY29taW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2luY29taW5nTExJ
bnRDYWxscy5wdXNoKGluY29taW5nKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElO
VCkKICAgICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5rSW5jb21pbmdDYWxscygpOwotI2VuZGlm
CisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJM
RShERkdfSklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIHZvaWQgc2V0SklUQ29kZU1hcChQ
YXNzT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBqaXRDb2RlTWFwKQogICAgICAgICB7CiAgICAg
ICAgICAgICBtX2ppdENvZGVNYXAgPSBqaXRDb2RlTWFwOwpAQCAtMjM0LDcgKzIzMCw5IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9qaXRDb2RlTWFw
LmdldCgpOwogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgCisjaWYgRU5BQkxFKERGR19KSVQp
CiAgICAgICAgIHZvaWQgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKCEhbV9kZmdEYXRhKQpAQCAtMzMzLDEyICszMzEsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVU
RVIpCiAgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uKiByZXR1cm5B
ZGRyZXNzKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocmV0dXJuQWRkcmVzcyA+PSBp
bnN0cnVjdGlvbnMoKS5iZWdpbigpICYmIHJldHVybkFkZHJlc3MgPCBpbnN0cnVjdGlvbnMoKS5l
bmQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1
cm5BZGRyZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgICAgIH0KLSNlbmRpZgog
CiAgICAgICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmlj
Q29tcGFyZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmlj
Q29tcGFyZUZ1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9u
KCkgeyByZXR1cm4gbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KQEAgLTM3Niw2ICszNzMs
MTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGV4
ZWN1dGFibGVNZW1vcnkoKSB7IHJldHVybiBnZXRKSVRDb2RlKCkuZ2V0RXhlY3V0YWJsZU1lbW9y
eSgpOyB9CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0
YXRlKiwgU2NvcGVDaGFpbk5vZGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNv
bigpID0gMDsKKyAgICAgICAgYm9vbCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpJ
bnRlcnByZXRlclRodW5rKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9
PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgaml0Q29tcGlsZUltcGwoZ2xvYmFsRGF0YSk7Cisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgICAgICB2aXJ0dWFsIENvZGVC
bG9jayogcmVwbGFjZW1lbnQoKSA9IDA7CiAKICAgICAgICAgZW51bSBDb21waWxlV2l0aERGR1N0
YXRlIHsKQEAgLTM5NSwxMyArNDAxLDEzIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJv
b2wgaGFzT3B0aW1pemVkUmVwbGFjZW1lbnQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NF
UlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFT
U0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAg
IGJvb2wgcmVzdWx0ID0gcmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID4gZ2V0SklUVHlwZSgp
OwogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAg
ICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpE
RkdKSVQpOwogICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxh
Y2VtZW50KCktPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAg
ICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKHJlcGxhY2VtZW50KCktPmdl
dEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpID09IHRo
aXMpOwogICAgICAgICAgICAgfQogI2VuZGlmCkBAIC00NjAsMTggKzQ2NiwyMSBAQCBuYW1lc3Bh
Y2UgSlNDIHsKIAogICAgICAgICB2b2lkIGNsZWFyRXZhbENhY2hlKCk7CiAKLSNpZiBFTkFCTEUo
Q0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICAgICAgdm9pZCBhZGRQcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uKHVuc2lnbmVkIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAg
ICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0luc3Ry
dWN0aW9uKTsKKyAgICAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBwZW5k
KHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAgICAgIHZvaWQgYWRk
R2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKHVuc2lnbmVkIGdsb2JhbFJlc29sdmVJbnN0cnVjdGlv
bikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgp
KQotICAgICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9ucy5hcHBlbmQoZ2xv
YmFsUmVzb2x2ZUluc3RydWN0aW9uKTsKKyAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluc3Ry
dWN0aW9ucy5hcHBlbmQoZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKTsKICAgICAgICAgfQogICAg
ICAgICBib29sIGhhc0dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbkF0Qnl0ZWNvZGVPZmZzZXQodW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXQpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgTExJbnRD
YWxsTGlua0luZm8qIGFkZExMSW50Q2FsbExpbmtJbmZvKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgbV9sbGludENhbGxMaW5rSW5mb3MuYXBwZW5kKExMSW50Q2FsbExpbmtJbmZvKCkpOworICAg
ICAgICAgICAgcmV0dXJuICZtX2xsaW50Q2FsbExpbmtJbmZvcy5sYXN0KCk7CisgICAgICAgIH0K
ICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgc2V0TnVtYmVyT2ZTdHJ1Y3R1
cmVTdHViSW5mb3Moc2l6ZV90IHNpemUpIHsgbV9zdHJ1Y3R1cmVTdHViSW5mb3MuZ3JvdyhzaXpl
KTsgfQpAQCAtNDgwLDggKzQ4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQg
YWRkR2xvYmFsUmVzb2x2ZUluZm8odW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKLSAg
ICAgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbmZvcy5hcHBlbmQoR2xvYmFsUmVzb2x2ZUlu
Zm8oZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKSk7CisgICAgICAgICAgICBtX2dsb2JhbFJlc29s
dmVJbmZvcy5hcHBlbmQoR2xvYmFsUmVzb2x2ZUluZm8oZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
KSk7CiAgICAgICAgIH0KICAgICAgICAgR2xvYmFsUmVzb2x2ZUluZm8mIGdsb2JhbFJlc29sdmVJ
bmZvKGludCBpbmRleCkgeyByZXR1cm4gbV9nbG9iYWxSZXNvbHZlSW5mb3NbaW5kZXhdOyB9CiAg
ICAgICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluZm9BdEJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KTsKQEAgLTQ5Miw2ICs1MDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICB2b2lkIGFkZE1ldGhvZENhbGxMaW5rSW5mb3ModW5zaWduZWQgbikgeyBBU1NFUlQo
bV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSk7IG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5ncm93KG4p
OyB9CiAgICAgICAgIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9kQ2FsbExpbmtJbmZvKGludCBp
bmRleCkgeyByZXR1cm4gbV9tZXRob2RDYWxsTGlua0luZm9zW2luZGV4XTsgfQorICAgICAgICBz
aXplX3QgbnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKCkgeyByZXR1cm4gbV9tZXRob2RDYWxs
TGlua0luZm9zLnNpemUoKTsgfQogI2VuZGlmCiAgICAgICAgIAogI2lmIEVOQUJMRShWQUxVRV9Q
Uk9GSUxFUikKQEAgLTUzMyw2ICs1NDIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0XS51Lm9wY29kZSkpIC0gMV0u
dS5wcm9maWxlID09IHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAg
ICB9CisgICAgICAgIFByZWRpY3RlZFR5cGUgdmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVj
b2RlT2Zmc2V0KGludCBieXRlY29kZU9mZnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0
dXJuIHZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+Y29tcHV0
ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHVuc2ln
bmVkIHRvdGFsTnVtYmVyT2ZWYWx1ZVByb2ZpbGVzKCkKICAgICAgICAgewpAQCAtNTU5LDEyICs1
NzIsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRv
VGFrZVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAgICAgICAgICAg
aWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgcmV0
dXJuIHZhbHVlID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYm
IHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9w
dGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBib29sIGNvdWxkVGFrZVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAg
ICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9
IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3Vu
dGVyOwogICAgICAgICAgICAgcmV0dXJuIHZhbHVlID49IE9wdGlvbnM6OmNvdWxkVGFrZVNsb3dD
YXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpIC8gbV9leGVjdXRp
b25FbnRyeUNvdW50ID49IE9wdGlvbnM6OmNvdWxkVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAg
ICAgICB9CkBAIC01ODMsMTIgKzYwMCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAg
ICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlU3BlY2lhbEZhc3RDYXNlKGludCBieXRlY29kZU9mZnNl
dCkKICAgICAgICAgeworICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCBz
cGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9m
ZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiBzcGVj
aWFsRmFzdENhc2VDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1pbmltdW1D
b3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHNwZWNpYWxGYXN0Q2FzZUNvdW50KSAvIG1fZXhl
Y3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9s
ZDsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VEZWVwZXN0
U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAo
IW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHNsb3dDYXNlQ291bnQgPSByYXJlQ2FzZVByb2ZpbGVG
b3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAg
IHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAg
dW5zaWduZWQgdmFsdWUgPSBzbG93Q2FzZUNvdW50IC0gc3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBA
IC01OTcsNiArNjE4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29s
IGxpa2VseVRvVGFrZUFueVNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgewor
ICAgICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCBzbG93Q2FzZUNvdW50ID0g
cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50
ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxG
YXN0Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRl
cjsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gc2xvd0Nhc2VDb3VudCArIHNwZWNpYWxG
YXN0Q2FzZUNvdW50OwpAQCAtNjk0LDcgKzcxNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAKICAgICAgICAgYm9vbCBhZGRGcmVxdWVudEV4aXRTaXRlKGNvbnN0IERGRzo6RnJlcXVlbnRF
eGl0U2l0ZSYgc2l0ZSkKICAgICAgICAgewotICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUo
KSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6
aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4gbV9leGl0
UHJvZmlsZS5hZGQoc2l0ZSk7CiAgICAgICAgIH0KIApAQCAtODAyLDYgKzgyNSwyOSBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZyb20oQ29kZUJsb2Nr
KiBhbHRlcm5hdGl2ZSk7CiAgICAgICAgIHZvaWQgY29weVBvc3RQYXJzZURhdGFGcm9tQWx0ZXJu
YXRpdmUoKTsKICAgICAgICAgCisgICAgICAgIC8vIEZ1bmN0aW9ucyBmb3IgY29udHJvbGxpbmcg
d2hlbiBKSVR0aW5nIGtpY2tzIGluLCBpbiBhIG1peGVkIG1vZGUKKyAgICAgICAgLy8gZXhlY3V0
aW9uIHdvcmxkLgorICAgICAgICAKKyAgICAgICAgdm9pZCBkb250SklUQW55dGltZVNvb24oKQor
ICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb247CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIHZvaWQgaml0QWZ0ZXJXYXJtVXAoKQorICAgICAgICB7CisgICAgICAg
ICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JKSVRBZnRlcldhcm1VcDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBq
aXRTb29uKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0g
T3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgaW50MzJfdCBsbGludEV4ZWN1dGVDb3VudGVyKCkgY29uc3QKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAg
fQorICAgICAgICAKICAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIHRp
ZXJlZCBjb21waWxhdGlvbiBraWNrcyBpbi4gVGhpcwogICAgICAgICAvLyBjb250cm9scyBib3Ro
IHdoZW4gdGhlIG9wdGltaXppbmcgY29tcGlsZXIgaXMgaW52b2tlZCBhbmQgd2hlbiBPU1IKICAg
ICAgICAgLy8gZW50cnkgaGFwcGVucy4gVHdvIHRyaWdnZXJzIGV4aXN0OiB0aGUgbG9vcCB0cmln
Z2VyIGFuZCB0aGUgcmV0dXJuCkBAIC05OTQsNiArMTA0MCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBib29sIG1fc2hvdWxkRGlzY2FyZEJ5dGVjb2RlOwogCiAgICAgcHJvdGVjdGVkOgor
ICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJikgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYpOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKICAgICAgICAg
CkBAIC0xMDc1LDkgKzExMjIsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0cjxT
b3VyY2VQcm92aWRlcj4gbV9zb3VyY2U7CiAgICAgICAgIHVuc2lnbmVkIG1fc291cmNlT2Zmc2V0
OwogCi0jaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1bnNp
Z25lZD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVuc2ln
bmVkPiBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQorICAg
ICAgICBTZWdtZW50ZWRWZWN0b3I8TExJbnRDYWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxsTGlu
a0luZm9zOworICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8sIEJh
c2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdMTEludENh
bGxzOwogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVyZVN0
dWJJbmZvPiBtX3N0cnVjdHVyZVN0dWJJbmZvczsKQEAgLTEwODgsOSArMTEzNywxMCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdpdGhB
cml0eUNoZWNrOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBCYXNp
Y1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2VuZGlm
Ci0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElO
VCkKICAgICAgICAgT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0gICAg
ICAgIAorI2VuZGlmCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFrUmVm
ZXJlbmNlVHJhbnNpdGlvbiB7CiAgICAgICAgICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlvbigp
IHsgfQogICAgICAgICAgICAgCkBAIC0xMTUzLDEyICsxMjAzLDE0IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIE93blB0cjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAgIAor
ICAgICAgICBpbnQzMl90IG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAgICAg
IGludDMyX3QgbV9qaXRFeGVjdXRlQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVjdWxh
dGl2ZVN1Y2Nlc3NDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFpbENv
dW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAgICAg
ICAgIHVpbnQ4X3QgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKLQorICAgICAgICAKICAg
ICAgICAgc3RydWN0IFJhcmVEYXRhIHsKICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiAgICAgICAgIHB1YmxpYzoKQEAgLTEyMzQsNiArMTI4Niw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGlt
aXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
amV0dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFs
RGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAg
ICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHSW50ZXJuYWwoKTsKICNlbmRpZgpAQCAt
MTI2OCw2ICsxMzIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAg
ICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hh
aW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0
dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwg
Q29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGls
ZVdpdGhERkdJbnRlcm5hbCgpOwogI2VuZGlmCkBAIC0xMzA1LDYgKzEzNTksNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBp
bGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChK
U0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGR0ludGVybmFsKCk7CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0
YXR1cy5jcHAJKHJldmlzaW9uIDEwODE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjAgKzI3LDQ5IEBA
CiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorR2V0
QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJv
ZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7
CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRl
Y29kZUluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkK
KyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rpb25b
MF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfbWV0aG9kX2NoZWNrKQorICAgICAgICBpbnN0cnVjdGlv
bisrOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0cnVj
dHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRT
dGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7Cisg
ICAgCisgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5n
bG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAg
ICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90
Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhTaW1wbGVEaXJl
Y3QsIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQsIGZhbHNlKTsKKyNlbHNlCisgICAg
cmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZv
dW5kLCBmYWxzZSk7CisjZW5kaWYKK30KKwogR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRl
eCwgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2sp
OwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRl
bnQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAo
IXByb2ZpbGVkQmxvY2stPm51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJl
dHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50
KTsKKyAgICAKICAgICAvLyBGaXJzdCBjaGVjayBpZiBpdCBtYWtlcyBlaXRoZXIgY2FsbHMsIGlu
IHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBiZSBzdXBlciBjYXJlZnVsLCBvcgogICAgIC8vIGlmIGl0
J3Mgbm90IHNldCBhdCBhbGwsIGluIHdoaWNoIGNhc2Ugd2UgcHVudC4KICAgICBTdHJ1Y3R1cmVT
dHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mbyhieXRlY29kZUlu
ZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3Rh
dHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJl
dHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50
KTsKICAgICAKICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIGxpc3Q7CiAgICAg
aW50IGxpc3RTaXplOwpAQCAtNjAsMTggKzg5LDE5IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJZFN0
YXR1czo6Y29tcHV0ZUZvcigKICAgICB9CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0U2l6
ZTsgKytpKSB7CiAgICAgICAgIGlmICghbGlzdC0+bGlzdFtpXS5pc0RpcmVjdCkKLSAgICAgICAg
ICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNldCgpLCBub3RG
b3VuZCk7CisgICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBTdHJ1
Y3R1cmVTZXQoKSwgbm90Rm91bmQsIHRydWUpOwogICAgIH0KICAgICAKICAgICAvLyBOZXh0IGNo
ZWNrIGlmIGl0IHRha2VzIHNsb3cgY2FzZSwgaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIGtp
bmQgb2YgY2FyZWZ1bC4KICAgICBpZiAocHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xvd0Nh
c2UoYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2VzU2xv
d1BhdGgsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBHZXRCeUlk
U3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7CiAg
ICAgCiAgICAgLy8gRmluYWxseSBmaWd1cmUgb3V0IGlmIHdlIGNhbiBkZXJpdmUgYW4gYWNjZXNz
IHN0cmF0ZWd5LgogICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OworICAgIHJlc3VsdC5tX3dhc1Nl
ZW5JbkpJVCA9IHRydWU7CiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAg
Y2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3Jt
YXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRl
RnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAg
CiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6IHsKICAgICAgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBzdHViSW5mby51LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUuZ2V0
KCk7CkBAIC0xMzAsNyArMTYwLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21w
dXRlRm9yKAogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZSAvLyBFTkFCTEUoSklUKQot
ICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBu
b3RGb3VuZCk7CisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0
dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5o
CShyZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMCArNDksMTEgQEAgcHVibGljOgog
ICAgIHsKICAgICB9CiAgICAgCi0gICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3Qg
U3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQpCisgICAgR2V0QnlJZFN0
YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNpemVf
dCBvZmZzZXQsIGJvb2wgd2FzU2VlbkluSklUKQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUpCiAg
ICAgICAgICwgbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQogICAgICAgICAsIG1fb2Zmc2V0
KG9mZnNldCkKKyAgICAgICAgLCBtX3dhc1NlZW5JbkpJVCh3YXNTZWVuSW5KSVQpCiAgICAgewog
ICAgICAgICBBU1NFUlQoKHN0YXRlID09IFNpbXBsZURpcmVjdCkgPT0gKG9mZnNldCAhPSBub3RG
b3VuZCkpOwogICAgIH0KQEAgLTcwLDEwICs3MSwxNSBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3Ry
dWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNldDsg
fQogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAor
ICAgIGJvb2wgd2FzU2VlbkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7IH0K
KyAgICAKIHByaXZhdGU6CisgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTElu
dChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAg
CiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7CiAg
ICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIGJvb2wgbV93YXNTZWVuSW5KSVQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0
cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xhc3MgU3RydWN0dXJlOwog
ICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOworICAgIHN0cnVjdCBMTEludENhbGxMaW5rSW5mbzsK
ICAgICBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE0Niw2ICsx
NDcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHN0cnVjdCBJbnN0cnVjdGlv
biB7CisgICAgICAgIEluc3RydWN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgdS5qc0Nl
bGwuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oT3Bj
b2RlIG9wY29kZSkKICAgICAgICAgewogI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lD
X0lOVEVSUFJFVEVSKQpAQCAtMTgyLDYgKzE4OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIEluc3RydWN0aW9uKFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1bmMpIHsg
dS5nZXR0ZXJGdW5jID0gZ2V0dGVyRnVuYzsgfQogICAgICAgICAKKyAgICAgICAgSW5zdHJ1Y3Rp
b24oTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykgeyB1LmNhbGxMaW5rSW5mbyA9IGNh
bGxMaW5rSW5mbzsgfQorICAgICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oVmFsdWVQcm9maWxl
KiBwcm9maWxlKSB7IHUucHJvZmlsZSA9IHByb2ZpbGU7IH0KIAogICAgICAgICB1bmlvbiB7CkBA
IC0xOTEsNyArMTk5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBXcml0ZUJhcnJp
ZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBzdHJ1Y3R1cmVDaGFpbjsKICAgICAgICAgICAgIFdyaXRl
QmFycmllckJhc2U8SlNDZWxsPiBqc0NlbGw7CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYyBnZXR0ZXJGdW5jOworICAgICAgICAgICAgTExJbnRDYWxsTGlua0luZm8qIGNh
bGxMaW5rSW5mbzsKICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZTsKKyAgICAgICAg
ICAgIHZvaWQqIHBvaW50ZXI7CiAgICAgICAgIH0gdTsKICAgICAgICAgCiAgICAgcHJpdmF0ZToK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxM
aW5rSW5mby5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xMSW50Q2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludENh
bGxMaW5rSW5mb19oCisjZGVmaW5lIExMSW50Q2FsbExpbmtJbmZvX2gKKworI2luY2x1ZGUgIkpT
RnVuY3Rpb24uaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNsdWRl
IDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3Qg
SW5zdHJ1Y3Rpb247CisKK3N0cnVjdCBMTEludENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNpY1Jh
d1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4geworICAgIExMSW50Q2FsbExpbmtJbmZv
KCkKKyAgICB7CisgICAgfQorICAgIAorICAgIH5MTEludENhbGxMaW5rSW5mbygpCisgICAgewor
ICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAg
ICAKKyAgICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4gY2FsbGVlOyB9CisgICAgCisgICAgdm9p
ZCB1bmxpbmsoKQorICAgIHsKKyAgICAgICAgY2FsbGVlLmNsZWFyKCk7CisgICAgICAgIG1hY2hp
bmVDb2RlVGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CisgICAgICAgIGlmIChpc09u
TGlzdCgpKQorICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgfQorICAgIAorICAgIFdyaXRlQmFy
cmllcjxKU0Z1bmN0aW9uPiBjYWxsZWU7CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IGxh
c3RTZWVuQ2FsbGVlOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWNoaW5lQ29kZVRhcmdl
dDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gTExJbnRDYWxsTGlua0lu
Zm9faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExp
bmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDEwODE2MikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1LDYgKzM1LDExIEBAIE1ldGhvZENhbGxMaW5rU3RhdHVzIE1ldGhvZENhbGxM
aW5rU3RhdHUKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BB
UkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9G
SUxFUikKKyAgICAvLyBOT1RFOiBUaGlzIGRvZXMgbm90IGhhdmUgYW4gTExJbnQgZmFsbC1iYWNr
IGJlY2F1c2UgTExJbnQgZG9lcyBub3QgZG8gYW55IG1ldGhvZAorICAgIC8vIGNhbGwgbGluayBj
YWNoaW5nLgorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZNZXRob2RDYWxsTGlua0lu
Zm9zKCkpCisgICAgICAgIHJldHVybiBNZXRob2RDYWxsTGlua1N0YXR1cygpOworICAgIAogICAg
IE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9kQ2FsbCA9IHByb2ZpbGVkQmxvY2stPmdldE1ldGhv
ZENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KTsKICAgICAKICAgICBpZiAoIW1ldGhvZENhbGwu
c2VlbiB8fCAhbWV0aG9kQ2FsbC5jYWNoZWRTdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCShyZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsx
MjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgbWFjcm8ob3BfZ2V0X2FyZ3VtZW50c19s
ZW5ndGgsIDQpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkLCA5KSBcCiAgICAgICAgIG1h
Y3JvKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uLCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX2RpcmVjdCwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9ub3JtYWwsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3JlcGxh
Y2UsIDkpIFwKICAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX2dlbmVyaWMsIDkpIFwKICAgICAg
ICAgbWFjcm8ob3BfZGVsX2J5X2lkLCA0KSBcCkBAIC0yMDEsNiArMjAzLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHR5cGVkZWYgZW51bSB7IEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVf
SURfRU5VTSkgfSBPcGNvZGVJRDsKICAgICAjdW5kZWYgT1BDT0RFX0lEX0VOVU0KIAorICAgIGNv
bnN0IGludCBtYXhPcGNvZGVMZW5ndGggPSA5OwogICAgIGNvbnN0IGludCBudW1PcGNvZGVJRHMg
PSBvcF9lbmQgKyAxOwogCiAgICAgI2RlZmluZSBPUENPREVfSURfTEVOR1RIUyhpZCwgbGVuZ3Ro
KSBjb25zdCBpbnQgaWQjI19sZW5ndGggPSBsZW5ndGg7CkBAIC0yMTcsNyArMjIwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEZPUl9FQUNIX09QQ09ERV9JRChWRVJJRllfT1BDT0RFX0lE
KTsKICAgICAjdW5kZWYgVkVSSUZZX09QQ09ERV9JRAogCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dP
VE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lD
X0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAjaWYgQ09NUElMRVIoUlZDVCkgfHwgQ09N
UElMRVIoSU5URUwpCiAgICAgdHlwZWRlZiB2b2lkKiBPcGNvZGU7CiAjZWxzZQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAkocmV2
aXNpb24gMTA4MTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyNyArMjcsNjkgQEAKICNpbmNsdWRlICJQ
dXRCeUlkU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJMb3dM
ZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiU3RydWN0dXJlLmgiCiAjaW5jbHVkZSAiU3Ry
dWN0dXJlQ2hhaW4uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK1B1dEJ5SWRTdGF0dXMgUHV0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQoreworICAgIFVOVVNFRF9QQVJB
TShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisgICAg
VU5VU0VEX1BBUkFNKGlkZW50KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5
dGVjb2RlSW5kZXg7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzRd
LnUuc3RydWN0dXJlLmdldCgpOworICAgIGlmICghc3RydWN0dXJlKQorICAgICAgICByZXR1cm4g
UHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgCisg
ICAgaWYgKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZCkgewor
ICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmds
b2JhbERhdGEoKSwgaWRlbnQpOworICAgICAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAg
ICAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90
Rm91bmQpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlUmVw
bGFjZSwgc3RydWN0dXJlLCAwLCAwLCBvZmZzZXQpOworICAgIH0KKyAgICAKKyAgICBBU1NFUlQo
aW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0CisgICAgICAgICAgIHx8IGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbCk7CisgICAgCisgICAgU3RydWN0dXJlKiBuZXdT
dHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBTdHJ1Y3R1
cmVDaGFpbiogY2hhaW4gPSBpbnN0cnVjdGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpOwor
ICAgIEFTU0VSVChuZXdTdHJ1Y3R1cmUpOworICAgIEFTU0VSVChjaGFpbik7CisgICAgCisgICAg
c2l6ZV90IG9mZnNldCA9IG5ld1N0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9iYWxE
YXRhKCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1
cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAg
CisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoU2ltcGxlVHJhbnNpdGlvbiwgc3RydWN0dXJlLCBu
ZXdTdHJ1Y3R1cmUsIGNoYWluLCBvZmZzZXQpOworI2Vsc2UKKyAgICByZXR1cm4gUHV0QnlJZFN0
YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisjZW5kaWYKK30KKwogUHV0
QnlJZFN0YXR1cyBQdXRCeUlkU3RhdHVzOjpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRC
bG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAg
VU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUlu
ZGV4KTsKICAgICBVTlVTRURfUEFSQU0oaWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJM
RShWQUxVRV9QUk9GSUxFUikKKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mU3RydWN0
dXJlU3R1YkluZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVk
QmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKKyAgICAKICAgICBpZiAocHJvZmlsZWRCbG9j
ay0+bGlrZWx5VG9UYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCiAgICAgICAgIHJldHVybiBQ
dXRCeUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIDAsIDAsIDAsIG5vdEZvdW5kKTsKICAgICAKICAg
ICBTdHJ1Y3R1cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRTdHViSW5m
byhieXRlY29kZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAg
ICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwg
aWRlbnQpOwogICAgIAogICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNzVHlwZSkgewogICAgIGNh
c2UgYWNjZXNzX3Vuc2V0OgotICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0
aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50
KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAgICAgCiAgICAgY2Fz
ZSBhY2Nlc3NfcHV0X2J5X2lkX3JlcGxhY2U6IHsKICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0
dWJJbmZvLnUucHV0QnlJZFJlcGxhY2UuYmFzZU9iamVjdFN0cnVjdHVyZS0+Z2V0KApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCShyZXZp
c2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC05Myw2ICs5Myw4IEBAIHB1YmxpYzoKICAgICBzaXpl
X3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZzZXQ7IH0KICAgICAKIHByaXZhdGU6Cisg
ICAgc3RhdGljIFB1dEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7CisgICAgCiAgICAgU3RhdGUgbV9zdGF0
ZTsKICAgICBTdHJ1Y3R1cmUqIG1fb2xkU3RydWN0dXJlOwogICAgIFN0cnVjdHVyZSogbV9uZXdT
dHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkocmV2aXNpb24gMTA4MTYyKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIK
ICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNs
dWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgogI2lu
Y2x1ZGUgIlN0cm9uZ0lubGluZXMuaCIKICNpbmNsdWRlICJVU3RyaW5nLmgiCkBAIC0xMjc4LDkg
KzEyNzksNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAjaWYg
RU5BQkxFKEpJVCkKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbmZvKGlu
c3RydWN0aW9ucygpLnNpemUoKSk7CiAjZW5kaWYKLSNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBS
RVRFUikKICAgICAgICAgbV9jb2RlQmxvY2stPmFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbihp
bnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgICAgIGJvb2wgZHluYW1pYyA9IHJl
c29sdmVSZXN1bHQuaXNEeW5hbWljKCkgJiYgcmVzb2x2ZVJlc3VsdC5kZXB0aCgpOwogICAgICAg
ICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUoZHluYW1pYyA/IG9w
X3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMgOiBvcF9yZXNvbHZlX2dsb2JhbCk7CiAgICAgICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChkc3QtPmluZGV4KCkpOwpAQCAtMTM4NCw5ICsxMzgzLDYgQEAg
UmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogICAgICAgICByZXR1cm4g
YmFzZURzdDsKICAgICB9CiAKLQotCi0KICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0
UHJvZmlsZWRPcGNvZGUob3BfcmVzb2x2ZV93aXRoX2Jhc2UpOwogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChiYXNlRHN0LT5pbmRleCgpKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJv
cERzdC0+aW5kZXgoKSk7CkBAIC0xNDk0LDkgKzE0OTAsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0TWV0aG9kQ2hlY2soCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpl
bWl0R2V0QnlJZChSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50
aWZpZXImIHByb3BlcnR5KQogewotI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAg
IG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygp
LnNpemUoKSk7Ci0jZW5kaWYKIAogICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9m
aWxlZE9wY29kZShvcF9nZXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChkc3Qt
PmluZGV4KCkpOwpAQCAtMTUyMiw5ICsxNTE2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRHZXRBcgogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1
dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lz
dGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgIG1f
Y29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNp
emUoKSk7Ci0jZW5kaWYKIAogICAgIGVtaXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+aW5kZXgoKSk7CkBAIC0xNTQwLDkgKzE1MzIsNyBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5CiAKIFJlZ2lzdGVySUQqIEJ5
dGVjb2RlR2VuZXJhdG9yOjplbWl0RGlyZWN0UHV0QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25z
dCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0ZXJJRCogdmFsdWUpCiB7Ci0jaWYgRU5BQkxF
KENMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgbV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNz
SW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgIAogICAgIGVt
aXRPcGNvZGUob3BfcHV0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZS0+
aW5kZXgoKSk7CkBAIC0xODIzLDcgKzE4MTMsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRDYWxsKAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgp
KTsgLy8gZnVuYwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3Vt
ZW50Q291bnRJbmNsdWRpbmdUaGlzKCkpOyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygp
LmFwcGVuZChjYWxsQXJndW1lbnRzLnJlZ2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNl
dAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxv
Y2stPmFkZExMSW50Q2FsbExpbmtJbmZvKCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoMCk7CisjZW5kaWYKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYg
KGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpIHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxl
ID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0xOTI3LDcgKzE5
MjEsMTEgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRDb25zdAogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZChmdW5jLT5pbmRleCgpKTsgLy8gZnVuYwogICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkp
OyAvLyBhcmdDb3VudAogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChjYWxsQXJndW1lbnRzLnJl
Z2lzdGVyT2Zmc2V0KCkpOyAvLyByZWdpc3Rlck9mZnNldAorI2lmIEVOQUJMRShMTElOVCkKKyAg
ICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV9jb2RlQmxvY2stPmFkZExMSW50Q2FsbExpbmtJbmZv
KCkpOworI2Vsc2UKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CisjZW5kaWYKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoMCk7CiAgICAgaWYgKGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkp
IHsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9w
X2NhbGxfcHV0X3Jlc3VsdCk7CkBAIC0yMTg4LDcgKzIxODYsMTEgQEAgUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXRDYXRjaAogewogICAgIG1fdXNlc0V4Y2VwdGlvbnMgPSB0cnVl
OwogI2lmIEVOQUJMRShKSVQpCisjaWYgRU5BQkxFKExMSU5UKQorICAgIEhhbmRsZXJJbmZvIGlu
Zm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0aW9ucygp
LnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGgsIENvZGVMb2Nh
dGlvbkxhYmVsKE1hY3JvQXNzZW1ibGVyQ29kZVB0cjo6Y3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRy
ZXNzKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX2NhdGNoKSkpIH07CisjZWxzZQogICAg
IEhhbmRsZXJJbmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCks
IGluc3RydWN0aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3Bl
RGVwdGgsIENvZGVMb2NhdGlvbkxhYmVsKCkgfTsKKyNlbmRpZgogI2Vsc2UKICAgICBIYW5kbGVy
SW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVj
dGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoIH07
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJz
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCShyZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTg1LDkgKzU4NSw3
IEBAIHByaXZhdGU6CiAgICAgewogICAgICAgICBVTlVTRURfUEFSQU0obm9kZUluZGV4KTsKICAg
ICAgICAgCi0gICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+dmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJ
bmRleCk7Ci0gICAgICAgIEFTU0VSVChwcm9maWxlKTsKLSAgICAgICAgUHJlZGljdGVkVHlwZSBw
cmVkaWN0aW9uID0gcHJvZmlsZS0+Y29tcHV0ZVVwZGF0ZWRQcmVkaWN0aW9uKCk7CisgICAgICAg
IFByZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmlsZWRC
bG9jay0+dmFsdWVQcm9maWxlUHJlZGljdGlvbkZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5k
ZXgpOwogI2lmIERGR19FTkFCTEUoREVCVUdfVkVSQk9TRSkKICAgICAgICAgZGF0YUxvZygiRHlu
YW1pYyBbQCV1LCBiYyMldV0gcHJlZGljdGlvbjogJXNcbiIsIG5vZGVJbmRleCwgYnl0ZWNvZGVJ
bmRleCwgcHJlZGljdGlvblRvU3RyaW5nKHByZWRpY3Rpb24pKTsKICNlbmRpZgpAQCAtMTAyMiw2
ICsxMDIwLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlSW5saW5pbmcoYm9vbAogICAg
IAogICAgIC8vIElmIHdlIGdldCBoZXJlIHRoZW4gaXQgbG9va3MgbGlrZSB3ZSBzaG91bGQgZGVm
aW5pdGVseSBpbmxpbmUgdGhpcyBjb2RlLiBQcm9jZWVkCiAgICAgLy8gd2l0aCBwYXJzaW5nIHRo
ZSBjb2RlIHRvIGdldCBieXRlY29kZSwgc28gdGhhdCB3ZSBjYW4gdGhlbiBwYXJzZSB0aGUgYnl0
ZWNvZGUuCisgICAgLy8gTm90ZSB0aGF0IGlmIExMSW50IGlzIGVuYWJsZWQsIHRoZSBieXRlY29k
ZSB3aWxsIGFsd2F5cyBiZSBhdmFpbGFibGUuIEFsc28gbm90ZQorICAgIC8vIHRoYXQgaWYgTExJ
bnQgaXMgZW5hYmxlZCwgd2UgbWF5IGlubGluZSBhIGNvZGUgYmxvY2sgdGhhdCBoYXMgbmV2ZXIg
YmVlbiBKSVR0ZWQKKyAgICAvLyBiZWZvcmUhCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBt
X2NvZGVCbG9ja0NhY2hlLmdldChDb2RlQmxvY2tLZXkoZXhlY3V0YWJsZSwga2luZCksIGV4cGVj
dGVkRnVuY3Rpb24tPnNjb3BlKCkpOwogICAgIGlmICghY29kZUJsb2NrKQogICAgICAgICByZXR1
cm4gZmFsc2U7CkBAIC0xNzIyLDcgKzE3MjMsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJz
ZUJsb2NrKHVuc2lnbmVkCiAgICAgICAgICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9m
aWxlZEJsb2NrLCBtX2N1cnJlbnRJbmRleCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGlm
IChtZXRob2RDYWxsU3RhdHVzLmlzU2V0KCkKLSAgICAgICAgICAgICAgICAmJiAhZ2V0QnlJZFN0
YXR1cy5pc1NldCgpCisgICAgICAgICAgICAgICAgJiYgIWdldEJ5SWRTdGF0dXMud2FzU2Vlbklu
SklUKCkKICAgICAgICAgICAgICAgICAmJiAhbV9pbmxpbmVTdGFja1RvcC0+bV9leGl0UHJvZmls
ZS5oYXNFeGl0U2l0ZShtX2N1cnJlbnRJbmRleCwgQmFkQ2FjaGUpKSB7CiAgICAgICAgICAgICAg
ICAgLy8gSXQncyBtb25vbW9ycGhpYyBhcyBmYXIgYXMgd2UgY2FuIHRlbGwsIHNpbmNlIHRoZSBt
ZXRob2RfY2hlY2sgd2FzIGxpbmtlZAogICAgICAgICAgICAgICAgIC8vIGJ1dCB0aGUgc2xvdyBw
YXRoIChpLmUuIHRoZSBub3JtYWwgZ2V0X2J5X2lkKSBuZXZlciBmaXJlZC4KQEAgLTE3OTEsNyAr
MTc5Miw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQKIAogICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfZ2V0X2J5X2lkKTsKICAgICAgICAgfQotICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZDogeworICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7CiAgICAgICAgICAgICBOb2RlSW5kZXggdmFsdWUg
PSBnZXQoY3VycmVudEluc3RydWN0aW9uWzNdLnUub3BlcmFuZCk7CiAgICAgICAgICAgICBOb2Rl
SW5kZXggYmFzZSA9IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bMV0udS5vcGVyYW5kKTsKICAgICAg
ICAgICAgIHVuc2lnbmVkIGlkZW50aWZpZXJOdW1iZXIgPSBtX2lubGluZVN0YWNrVG9wLT5tX2lk
ZW50aWZpZXJSZW1hcFtjdXJyZW50SW5zdHJ1Y3Rpb25bMl0udS5vcGVyYW5kXTsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkocmV2aXNpb24gMTA4
MTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtMTExLDYgKzExMSw4IEBAIGlubGluZSBib29sIGNhbkNvbXBpbGVPcGNv
ZGUoT3Bjb2RlSUQgb3AKICAgICBjYXNlIG9wX3B1dF9zY29wZWRfdmFyOgogICAgIGNhc2Ugb3Bf
Z2V0X2J5X2lkOgogICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0OgorICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9y
bWFsOgogICAgIGNhc2Ugb3BfZ2V0X2dsb2JhbF92YXI6CiAgICAgY2FzZSBvcF9wdXRfZ2xvYmFs
X3ZhcjoKICAgICBjYXNlIG9wX2ptcDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdENvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHJldmlzaW9uIDEwODE2MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDgsNiArNDgsMjEgQEAgdm9pZCBjb21waWxlT1NSRXhpdChFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgdWludDMyX3QgZXhpdEluZGV4ID0gZ2xvYmFsRGF0YS0+b3NyRXhpdEluZGV4OwogICAg
IE9TUkV4aXQmIGV4aXQgPSBjb2RlQmxvY2stPm9zckV4aXQoZXhpdEluZGV4KTsKICAgICAKKyAg
ICAvLyBNYWtlIHN1cmUgYWxsIGNvZGUgb24gb3VyIGlubGluZSBzdGFjayBpcyBKSVQgY29tcGls
ZWQuIFRoaXMgaXMgbmVjZXNzYXJ5IHNpbmNlCisgICAgLy8gd2UgbWF5IG9wdCB0byBpbmxpbmUg
YSBjb2RlIGJsb2NrIGV2ZW4gYmVmb3JlIGl0IGhhZCBldmVyIGJlZW4gY29tcGlsZWQgYnkgdGhl
CisgICAgLy8gSklULCBidXQgb3VyIE9TUiBleGl0IGluZnJhc3RydWN0dXJlIGN1cnJlbnRseSBv
bmx5IHdvcmtzIGlmIHRoZSB0YXJnZXQgb2YgdGhlCisgICAgLy8gT1NSIGV4aXQgaXMgSklUIGNv
ZGUuIFRoaXMgY291bGQgYmUgY2hhbmdlZCBzaW5jZSB0aGVyZSBpcyBub3RoaW5nIHBhcnRpY3Vs
YXJseQorICAgIC8vIGhhcmQgYWJvdXQgZG9pbmcgYW4gT1NSIGV4aXQgaW50byB0aGUgaW50ZXJw
cmV0ZXIsIGJ1dCBmb3Igbm93IHRoaXMgc2VlbXMgdG8gbWFrZQorICAgIC8vIHNlbnNlIGluIHRo
YXQgaWYgd2UncmUgT1NSIGV4aXRpbmcgZnJvbSBpbmxpbmVkIGNvZGUgb2YgYSBERkcgY29kZSBi
bG9jaywgdGhlbgorICAgIC8vIHByb2JhYmx5IGl0J3MgYSBnb29kIHNpZ24gdGhhdCB0aGUgdGhp
bmcgd2UncmUgZXhpdGluZyBpbnRvIGlzIGhvdC4gRXZlbiBtb3JlCisgICAgLy8gaW50ZXJlc3Rp
bmdseSwgc2luY2UgdGhlIGNvZGUgd2FzIGlubGluZWQsIGl0IG1heSBuZXZlciBvdGhlcndpc2Ug
Z2V0IEpJVAorICAgIC8vIGNvbXBpbGVkIHNpbmNlIHRoZSBhY3Qgb2YgaW5saW5pbmcgaXQgbWF5
IGVuc3VyZSB0aGF0IGl0IG90aGVyd2lzZSBuZXZlciBydW5zLgorICAgIGZvciAoQ29kZU9yaWdp
biBjb2RlT3JpZ2luID0gZXhpdC5tX2NvZGVPcmlnaW47IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZy
YW1lOyBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlcikgewor
ICAgICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjb2RlT3JpZ2luLmlubGlu
ZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSkKKyAgICAgICAgICAgIC0+YmFzZWxpbmVDb2Rl
QmxvY2tGb3IoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmlzQ2FsbCA/IENvZGVGb3JDYWxs
IDogQ29kZUZvckNvbnN0cnVjdCkKKyAgICAgICAgICAgIC0+aml0Q29tcGlsZSgqZ2xvYmFsRGF0
YSk7CisgICAgfQorICAgIAogICAgIFNwZWN1bGF0aW9uUmVjb3ZlcnkqIHJlY292ZXJ5ID0gMDsK
ICAgICBpZiAoZXhpdC5tX3JlY292ZXJ5SW5kZXgpCiAgICAgICAgIHJlY292ZXJ5ID0gJmNvZGVC
bG9jay0+c3BlY3VsYXRpb25SZWNvdmVyeShleGl0Lm1fcmVjb3ZlcnlJbmRleCAtIDEpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lv
biAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiREZHT1NSRXhpdC5oIgogI2luY2x1ZGUgIkRGR1JlcGF0Y2guaCIKKyNpbmNs
dWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgiCiAj
aW5jbHVkZSAiSW5saW5lQVNNLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKQEAgLTczNyw1
MCArNzM4LDYgQEAgc2l6ZV90IERGR19PUEVSQVRJT04gb3BlcmF0aW9uQ29tcGFyZVN0cgogICAg
IHJldHVybiBKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMSksIEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AyKSk7CiB9CiAKLUVuY29kZWRKU1ZhbHVl
IERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOwotRW5jb2RlZEpTVmFsdWUg
REZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3Rh
dGUqKTsKLQotI2lmIENQVShYODZfNjQpCi1hc20gKAotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkco
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIg
IlxuIgotICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCi0gICAgIm1vdiAlcjEzLCAlcmRpXG4i
Ci0gICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZh
bHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQVShYODYpCi1hc20gKAotIi5nbG9i
bCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1C
T0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lNQk9MX1NUUklORyhnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4iCi0gICAg
Im1vdiAlZWRpLCA0KCVlc3ApXG4iCi0gICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElP
TihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgotKTsKLSNlbGlmIENQ
VShBUk1fVEhVTUIyKQotYXNtICgKLSIudGV4dCIgIlxuIgotIi5hbGlnbiAyIiAiXG4iCi0iLmds
b2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1ISURFX1NZ
TUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi0iLnRodW1iIiAiXG4iCi0iLnRodW1i
X2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibGRyIHI1
LCBbcjUsICMtNDBdIiAiXG4iCi0gICAgImNweSByMCwgcjUiICJcbiIKLSAgICAiYiAiIFNZTUJP
TF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkg
IlxuIgotKTsKLSNlbmRpZgotCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0ZSogZXhlYykKLXsKLSAgICBKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOwotICAgIE5hdGl2ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIoZ2xvYmFsRGF0YSwgZXhlYyk7Ci0gICAgCi0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7
Ci19Ci0KIHN0YXRpYyB2b2lkKiBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUs
IEpTVmFsdWUgY2FsbGVlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAgICAgRXhl
Y1N0YXRlKiBleGVjID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODM2LDcgKzgzNiw3IEBA
IHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKICAgICAgICAgc2V0SGln
aFdhdGVyTWFyayhtYXgocHJvcG9ydGlvbmFsQnl0ZXMsIG1fbWluQnl0ZXNQZXJDeWNsZSkpOwog
ICAgIH0KICAgICBKQVZBU0NSSVBUQ09SRV9HQ19FTkQoKTsKLQorICAgIAogICAgICgqbV9hY3Rp
dml0eUNhbGxiYWNrKSgpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShy
ZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdv
cmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3Mg
SlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTVmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0
ZXJhdG9yOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJr
ZWRBcmd1bWVudEJ1ZmZlcjsKICAgICBjbGFzcyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0
cmluZzsKQEAgLTEzNiwxMiArMTM3LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lk
IGdldENvbnNlcnZhdGl2ZVJlZ2lzdGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNz
IE1hcmtlZFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQWxsb2NhdG9yOwogICAg
ICAgICBmcmllbmQgY2xhc3MgTWFya2VkQmxvY2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDb3Bp
ZWRTcGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwotICAgICAgICBmcmll
bmQgY2xhc3MgQ29kZUJsb2NrOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQg
dm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmKTsKIAogICAgICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhE
ZXN0cnVjdG9yKHNpemVfdCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJr
U3RhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtT
dGFjay5jcHAJKHJldmlzaW9uIDEwODE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L01hcmtTdGFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMyw3ICszMDMsNyBAQCBBTFdBWVNf
SU5MSU5FIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oCiAjZW5kaWYKIAogICAgIEFTU0VSVChI
ZWFwOjppc01hcmtlZChjZWxsKSk7Ci0KKyAgICAKICAgICBpZiAoaXNKU1N0cmluZyhjZWxsKSkg
ewogICAgICAgICBKU1N0cmluZzo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNl
bGwpLCB2aXNpdG9yKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHJldmlzaW9uIDEwODE2MikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC04LDYgKzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSGVhcDsKIGNsYXNzIE1hcmtl
ZFNwYWNlOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiBuYW1lc3BhY2UgREZHIHsK
IGNsYXNzIFNwZWN1bGF0aXZlSklUOwpAQCAtMzMsNiArMzQsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBpbml0KEhlYXAqLCBNYXJrZWRTcGFjZSosIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBjZWxsc05l
ZWREZXN0cnVjdGlvbik7CiAgICAgCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWxsb2Nh
dGVTbG93Q2FzZSgpOwogICAgIHZvaWQqIHRyeUFsbG9jYXRlKCk7CiAgICAgdm9pZCogdHJ5QWxs
b2NhdGVIZWxwZXIoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuaAkocmV2aXNpb24gMTA4MTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgSlND
IHsKIGNsYXNzIEhlYXA7CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7
CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBXZWFrR0NIYW5kbGU7CiBjbGFz
cyBTbG90VmlzaXRvcjsKIApAQCAtNzksNiArODAsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRD
b25zdW1lRnJlZUxpc3QoTWFya2VkQmxvY2sqKTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAgIC8vIFsgMzIuLi4gMjU2IF0KICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VTdGVwID0gTWFya2VkQmxvY2s6OmF0b21TaXpl
OwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZUN1dG9mZiA9IDI1NjsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCShyZXZp
c2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsMjkgQEAgUmVnaXN0ZXJGaWxlKiBD
YWxsRnJhbWU6OnJlZ2lzdGVyRmlsZSgpCiAKICNlbmRpZgogCisjaWYgVVNFKEpTVkFMVUUzMl82
NCkKK3Vuc2lnbmVkIENhbGxGcmFtZTo6Ynl0ZWNvZGVPZmZzZXRGb3JOb25ERkdDb2RlKCkgY29u
c3QKK3sKKyAgICBBU1NFUlQoY29kZUJsb2NrKCkpOworICAgIHJldHVybiBjdXJyZW50VlBDKCkg
LSBjb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKK30KKwordm9pZCBDYWxsRnJh
bWU6OnNldEJ5dGVjb2RlT2Zmc2V0Rm9yTm9uREZHQ29kZSh1bnNpZ25lZCBvZmZzZXQpCit7Cisg
ICAgQVNTRVJUKGNvZGVCbG9jaygpKTsKKyAgICBzZXRDdXJyZW50VlBDKGNvZGVCbG9jaygpLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpICsgb2Zmc2V0KTsKK30KKyNlbHNlCitJbnN0cnVjdGlvbiog
Q2FsbEZyYW1lOjpjdXJyZW50VlBDKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29kZUJsb2NrKCkt
Pmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZU9mZnNldEZvck5vbkRGR0NvZGUoKTsK
K30KK3ZvaWQgQ2FsbEZyYW1lOjpzZXRDdXJyZW50VlBDKEluc3RydWN0aW9uKiB2cGMpCit7Cisg
ICAgc2V0Qnl0ZWNvZGVPZmZzZXRGb3JOb25ERkdDb2RlKHZwYyAtIGNvZGVCbG9jaygpLT5pbnN0
cnVjdGlvbnMoKS5iZWdpbigpKTsKK30KKyNlbmRpZgorICAgIAogI2lmIEVOQUJMRShERkdfSklU
KQogYm9vbCBDYWxsRnJhbWU6OmlzSW5saW5lQ2FsbEZyYW1lU2xvdygpCiB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAx
MDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNiw3ICsxMDYsMTEgQEAgbmFtZXNwYWNlIEpTQyAgewogICAg
ICAgICBSZXR1cm5BZGRyZXNzUHRyIHJldHVyblBDKCkgY29uc3QgeyByZXR1cm4gUmV0dXJuQWRk
cmVzc1B0cih0aGlzW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdLnZQQygpKTsgfQogI2VuZGlmCiAg
ICAgICAgIEFic3RyYWN0UEMgYWJzdHJhY3RSZXR1cm5QQyhKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEpIHsgcmV0dXJuIEFic3RyYWN0UEMoZ2xvYmFsRGF0YSwgdGhpcyk7IH0KLSAgICAgICAgdW5z
aWduZWQgYnl0ZWNvZGVPZmZzZXRGb3JOb25ERkdDb2RlKCkKKyNpZiBVU0UoSlNWQUxVRTMyXzY0
KQorICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldEZvck5vbkRGR0NvZGUoKSBjb25zdDsK
KyAgICAgICAgdm9pZCBzZXRCeXRlY29kZU9mZnNldEZvck5vbkRGR0NvZGUodW5zaWduZWQgb2Zm
c2V0KTsKKyNlbHNlCisgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Rm9yTm9uREZHQ29k
ZSgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChjb2RlQmxvY2soKSk7CiAg
ICAgICAgICAgICByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnRdLnRhZygp
OwpAQCAtMTE3LDYgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgICAgIEFTU0VS
VChjb2RlQmxvY2soKSk7CiAgICAgICAgICAgICB0aGlzW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRD
b3VudF0udGFnKCkgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihvZmZzZXQpOwogICAgICAgICB9Cisj
ZW5kaWYKIAogI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlu
bGluZUNhbGxGcmFtZSgpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5Q
Q10uYXNJbmxpbmVDYWxsRnJhbWUoKTsgfQpAQCAtMTM0LDYgKzEzOSwxOSBAQCBuYW1lc3BhY2Ug
SlNDICB7CiAjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAgIEluc3RydWN0
aW9uKiByZXR1cm5WUEMoKSBjb25zdCB7IHJldHVybiB0aGlzW1JlZ2lzdGVyRmlsZTo6UmV0dXJu
UENdLnZQQygpOyB9CiAjZW5kaWYKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBJbnN0
cnVjdGlvbiogY3VycmVudFZQQygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVy
biBiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPih0aGlzW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRD
b3VudF0udGFnKCkpOworICAgICAgICB9CisgICAgICAgIHZvaWQgc2V0Q3VycmVudFZQQyhJbnN0
cnVjdGlvbiogdnBjKQorICAgICAgICB7CisgICAgICAgICAgICB0aGlzW1JlZ2lzdGVyRmlsZTo6
QXJndW1lbnRDb3VudF0udGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4odnBjKTsKKyAgICAg
ICAgfQorI2Vsc2UKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdDsKKyAg
ICAgICAgdm9pZCBzZXRDdXJyZW50VlBDKEluc3RydWN0aW9uKiB2cGMpOworI2VuZGlmCiAKICAg
ICAgICAgdm9pZCBzZXRDYWxsZXJGcmFtZShDYWxsRnJhbWUqIGNhbGxlckZyYW1lKSB7IHN0YXRp
Y19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVnaXN0ZXJGaWxlOjpDYWxsZXJGcmFtZV0gPSBjYWxs
ZXJGcmFtZTsgfQogICAgICAgICB2b2lkIHNldFNjb3BlQ2hhaW4oU2NvcGVDaGFpbk5vZGUqIHNj
b3BlQ2hhaW4pIHsgc3RhdGljX2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OlNj
b3BlQ2hhaW5dID0gc2NvcGVDaGFpbjsgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
dGVycHJldGVyL0ludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCShyZXZpc2lvbiAxMDgxNjIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC02OSw3ICs2OSw3IEBACiAjaW5jbHVkZSAiSklULmgiCiAjZW5kaWYKIAotI2Rl
ZmluZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQgKEVOQUJMRShDT01QVVRF
RF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKKyNkZWZp
bmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EICgoRU5BQkxFKENPTVBVVEVE
X0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKSkgJiYgIWRlZmluZWQo
X19sbHZtX18pKQogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCkBAIC01NDcsMTcgKzU0Nyw0MyBA
QCBJbnRlcnByZXRlcjo6SW50ZXJwcmV0ZXIoKQogewogfQogCi12b2lkIEludGVycHJldGVyOjpp
bml0aWFsaXplKGJvb2wgY2FuVXNlSklUKQorSW50ZXJwcmV0ZXI6On5JbnRlcnByZXRlcigpCiB7
Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgaWYgKG1fZW5hYmxlZCkKKyAgICAgICAgZGVsZXRlW10gbV9vcGNvZGVU
YWJsZTsKKyNlbmRpZgorfQorCit2b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKExMSW50OjpE
YXRhKiBsbGludERhdGEsIGJvb2wgY2FuVXNlSklUKQoreworICAgIFVOVVNFRF9QQVJBTShsbGlu
dERhdGEpOworICAgIFVOVVNFRF9QQVJBTShjYW5Vc2VKSVQpOworI2lmIEVOQUJMRShDT01QVVRF
RF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5BQkxF
KENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKKyAgICAvLyBIYXZpbmcgTExJbnQg
ZW5hYmxlZCwgYnV0IG5vdCBiZWluZyBhYmxlIHRvIHVzZSB0aGUgSklULCBhbmQgbm90IGhhdmlu
ZworICAgIC8vIGEgY29tcHV0ZWQgZ290byBpbnRlcnByZXRlciwgaXMgbm90IHN1cHBvcnRlZC4g
Tm90IGJlY2F1c2Ugd2UgY2Fubm90CisgICAgLy8gc3VwcG9ydCBpdCwgYnV0IGJlY2F1c2UgSSBk
ZWNpZGVkIHRvIGRyYXcgdGhlIGxpbmUgYXQgdGhlIG51bWJlciBvZgorICAgIC8vIHBlcm11dGF0
aW9ucyBvZiBleGVjdXRpb24gZW5naW5lcyB0aGF0IEkgd2FudGVkIHRoaXMgY29kZSB0byBncm9r
LgorICAgIEFTU0VSVChjYW5Vc2VKSVQpOworI2VuZGlmCiAgICAgaWYgKGNhblVzZUpJVCkgewor
I2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgbV9vcGNvZGVUYWJsZSA9IGxsaW50RGF0YS0+b3Bj
b2RlTWFwKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kp
CisgICAgICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1fb3Bjb2RlVGFibGVbaV0sIHN0YXRp
Y19jYXN0PE9wY29kZUlEPihpKSk7CisjZWxzZQogICAgICAgICAvLyBJZiB0aGUgSklUIGlzIHBy
ZXNlbnQsIGRvbid0IHVzZSBqdW1wIGRlc3RpbmF0aW9ucyBmb3Igb3Bjb2Rlcy4KICAgICAgICAg
CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpIHsKICAgICAg
ICAgICAgIE9wY29kZSBvcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVp
bnRwdHJfdD4oaSkpOwogICAgICAgICAgICAgbV9vcGNvZGVUYWJsZVtpXSA9IG9wY29kZTsKICAg
ICAgICAgfQorI2VuZGlmCiAgICAgfSBlbHNlIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAg
IG1fb3Bjb2RlVGFibGUgPSBuZXcgT3Bjb2RlW251bU9wY29kZUlEc107CisjZW5kaWYKICAgICAg
ICAgcHJpdmF0ZUV4ZWN1dGUoSW5pdGlhbGl6ZUFuZFJldHVybiwgMCwgMCk7CiAgICAgICAgIAog
ICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQpAQCAtNTY2LDcg
KzU5Miw2IEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoYm9vbCBjYW5Vc2UKICAgICAg
ICAgbV9lbmFibGVkID0gdHJ1ZTsKICAgICB9CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShjYW5V
c2VKSVQpOwogI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgIG1fZW5hYmxlZCA9
IHRydWU7CiAjZWxzZQpAQCAtNjY3LDkgKzY5MiwxMSBAQCB2b2lkIEludGVycHJldGVyOjpkdW1w
UmVnaXN0ZXJzKENhbGxGcmFtCiAKIGJvb2wgSW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKE9wY29kZSBv
cGNvZGUpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikK
KyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUo
TExJTlQpCisjaWYgIUVOQUJMRShMTElOVCkKICAgICBpZiAoIW1fZW5hYmxlZCkKICAgICAgICAg
cmV0dXJuIG9wY29kZSA+PSAwICYmIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8
dWludHB0cl90PihvcGNvZGUpKSA8PSBvcF9lbmQ7CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2Rl
ICE9IEhhc2hUcmFpdHM8T3Bjb2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJh
aXRzPE9wY29kZT46OmlzRGVsZXRlZFZhbHVlKG9wY29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJ
RFRhYmxlLmNvbnRhaW5zKG9wY29kZSk7CkBAIC03MjYsMTEgKzc1MywxMSBAQCBORVZFUl9JTkxJ
TkUgYm9vbCBJbnRlcnByZXRlcjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAx
LgogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgIGlm
IChjYWxsZXJGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQotICAgICAgICBieXRlY29k
ZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygp
KTsKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNh
bGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogICAgIGVsc2UKICAgICAgICAgYnl0
ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJu
VlBDKCkpIC0gMTsKICNlbGlmIEVOQUJMRShKSVQpCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2Rl
QmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNv
ZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJh
bWUtPnJldHVyblBDKCkpOwogI2Vsc2UKICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+
Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAxOwogI2VuZGlmCkBAIC04
NTcsNyArODg0LDcgQEAgc3RhdGljIENhbGxGcmFtZSogZ2V0Q2FsbGVySW5mbyhKU0dsb2JhbAog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAjZW5kaWYKLSAgICAgICAgICAgIGJ5
dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUt
PnJldHVyblBDKCkpOworICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwog
I2VuZGlmCiAgICAgfQogCkBAIC0zNDY2LDYgKzM0OTMsOCBAQCBza2lwX2lkX2N1c3RvbV9zZWxm
OgogI2lmIFVTRShHQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EKQogICAgICAgc2tpcF9wdXRf
YnlfaWQ6CiAjZW5kaWYKKyAgICBERUZJTkVfT1BDT0RFKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9u
X2RpcmVjdCkKKyAgICBERUZJTkVfT1BDT0RFKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bCkKICAgICBERUZJTkVfT1BDT0RFKG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uKSB7CiAgICAgICAg
IC8qIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uIGJhc2UocikgcHJvcGVydHkoaWQpIHZhbHVlKHIp
IG9sZFN0cnVjdHVyZShzSUQpIG5ld1N0cnVjdHVyZShzSUQpIHN0cnVjdHVyZUNoYWluKGNoYWlu
KSBvZmZzZXQobikgZGlyZWN0KGIpCiAgICAgICAgICAKQEAgLTUyOTksMTAgKzUzMjgsMTAgQEAg
dm9pZCBJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVyKENhbAogICAgICAgICBieXRlY29k
ZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1
cm5WUEMoKSk7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBlbHNlCi0gICAgICAgIGJ5dGVjb2RlT2Zm
c2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBD
KCkpOworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVP
ZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYKICNlbHNl
Ci0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNh
bGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwog
I2VuZGlmCiAgICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVCbG9jay0+bGluZU51bWJlckZvckJ5
dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAgICAgc291cmNlSUQgPSBjYWxsZXJD
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJRCgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHJldmlzaW9uIDEw
ODE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5o
IgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUg
IkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgogI2luY2x1ZGUgIlJlZ2lzdGVyRmls
ZS5oIgogCkBAIC00Niw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEV4ZWN1
dGFibGVCYXNlOwogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0YWJsZTsKICAgICBjbGFzcyBKU0ds
b2JhbE9iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3Mg
UHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAgICAgY2xhc3MgU2NvcGVD
aGFpbk5vZGU7CkBAIC0xNTgsMTkgKzE2MCwyMSBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIEludGVycHJldGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci0gICAg
ICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDYWNoZWRDYWxsOwor
ICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICBmcmll
bmQgY2xhc3MgSklUOwogICAgIHB1YmxpYzoKICAgICAgICAgSW50ZXJwcmV0ZXIoKTsKKyAgICAg
ICAgfkludGVycHJldGVyKCk7CiAgICAgICAgIAotICAgICAgICB2b2lkIGluaXRpYWxpemUoYm9v
bCBjYW5Vc2VKSVQpOworICAgICAgICB2b2lkIGluaXRpYWxpemUoTExJbnQ6OkRhdGEqLCBib29s
IGNhblVzZUpJVCk7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUoKSB7IHJl
dHVybiBtX3JlZ2lzdGVyRmlsZTsgfQogICAgICAgICAKICAgICAgICAgT3Bjb2RlIGdldE9wY29k
ZShPcGNvZGVJRCBpZCkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlhbGl6
ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCisjaWYg
RU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5U
KQogICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlVGFibGVbaWRdOwogI2Vsc2UKICAgICAgICAg
ICAgIHJldHVybiBpZDsKQEAgLTE4MCw3ICsxODQsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIE9wY29kZUlEIGdldE9wY29kZUlEKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19D
TEFTU0lDX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgICAgIEFTU0VS
VChpc09wY29kZShvcGNvZGUpKTsKKyAgICAgICAgICAgIHJldHVybiBtX29wY29kZUlEVGFibGUu
Z2V0KG9wY29kZSk7CisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJF
VEVSKQogICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOwogICAgICAgICAgICAg
aWYgKCFtX2VuYWJsZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29k
ZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKTsKQEAgLTE5MCw2ICsxOTcsMTEg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgZW5hYmxlZCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBtX2VuYWJsZWQ7CisgICAgICAgIH0KIAogICAgICAgICBib29sIGlz
T3Bjb2RlKE9wY29kZSk7CiAKQEAgLTI1OSw3ICsyNzEsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAK
ICAgICAgICAgUmVnaXN0ZXJGaWxlIG1fcmVnaXN0ZXJGaWxlOwogICAgICAgICAKLSNpZiBFTkFC
TEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElOVCkK
KyAgICAgICAgT3Bjb2RlKiBtX29wY29kZVRhYmxlOyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29k
ZSBmb3IgY29tcGlsaW5nCisgICAgICAgIEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNv
ZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21waWxpbmcKKyNl
bGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAgIE9w
Y29kZSBtX29wY29kZVRhYmxlW251bU9wY29kZUlEc107IC8vIE1hcHMgT3Bjb2RlSUQgPT4gT3Bj
b2RlIGZvciBjb21waWxpbmcKICAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlEPiBtX29w
Y29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBpbGluZwog
I2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJG
aWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1Jl
Z2lzdGVyRmlsZS5oCShyZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAgICBj
bGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAog
ICAgIGNsYXNzIFJlZ2lzdGVyRmlsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJl
Z2lzdGVyRmlsZSk7CkBAIC04MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9
CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIqKTsKICAg
ICAgICAgdm9pZCByZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9pZCBhZGRUb0Nv
bW1pdHRlZEJ5dGVDb3VudChsb25nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUu
aCIKKworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIklubGluZUFTTS5oIgorI2lu
Y2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNWYWx1ZUlubGluZU1ldGhvZHMuaCIKKyNp
bmNsdWRlICJTY29wZUNoYWluLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisjaWYgQ09NUElMRVIo
R0NDKQorCisjaWYgQ1BVKFg4Nl82NCkKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAi
XG4iCisgICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKKyAgICAibW92ICVyMTMsICVyZGlcbiIK
KyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKFg4NikKK2FzbSAoCisiLmdsb2Js
ICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJP
TChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKKyAgICAi
bW92ICVlZGksIDQoJWVzcClcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9O
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BV
KEFSTV9USFVNQjIpCithc20gKAorIi50ZXh0IiAiXG4iCisiLmFsaWduIDIiICJcbiIKKyIuZ2xv
YmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lN
Qk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKKyIudGh1bWIiICJcbiIKKyIudGh1bWJf
ZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lN
Qk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJsZHIgcjUs
IFtyNSwgIy00MF0iICJcbiIKKyAgICAiY3B5IHIwLCByNSIgIlxuIgorICAgICJiICIgU1lNQk9M
X1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAi
XG4iCispOworI2VuZGlmCisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JF
VFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhl
Y1N0YXRlKiBleGVjKQoreworICAgIGlmICghZXhlYykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xv
YmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOworfQorCisjZW5kaWYgLy8gQ09NUElMRVIo
R0NDKQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaWZuZGVmIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorI2RlZmluZSBIb3N0Q2FsbFJldHVy
blZhbHVlX2gKKworI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworLy8gVW5mb3J0dW5hdGVs
eSB0aGlzIG9ubHkgd29ya3Mgb24gR0NDLWxpa2UgY29tcGlsZXJzLiBBbmQgaXQncyBjdXJyZW50
bHkgb25seSB1c2VkCisvLyBieSBMTEludCBhbmQgREZHLCB3aGljaCBhbHNvIGFyZSByZXN0cmlj
dGVkIHRvIEdDQy1saWtlIGNvbXBpbGVycy4gV2Ugc2hvdWxkCisvLyBwcm9iYWJseSBmaXggdGhh
dCBhdCBzb21lIHBvaW50LgorI2lmIENPTVBJTEVSKEdDQykKKworI2lmIENBTExJTkdfQ09OVkVO
VElPTl9JU19TVERDQUxMCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIENE
RUNMCisjZWxzZQorI2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTgorI2VuZGlm
CisKK25hbWVzcGFjZSBKU0MgeworCitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FM
TF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKKworLy8gVGhp
cyBpcyBhIHB1YmxpYyBkZWNsYXJhdGlvbiBvbmx5IHRvIGNvbnZpbmNlIENMQU5HIG5vdCB0byBl
bGlkZSBpdC4KK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxV
RV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7
CisKK2lubGluZSB2b2lkIGluaXRpYWxpemVIb3N0Q2FsbFJldHVyblZhbHVlKCkKK3sKKyAgICBn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSgwKTsKK30KKworfQorCisjZWxzZSAv
LyBDT01QSUxFUihHQ0MpCisKK25hbWVzcGFjZSBKU0MgeworaW5saW5lIHZvaWQgaW5pdGlhbGl6
ZUhvc3RDYWxsUmV0dXJuVmFsdWUoKSB7IH0KK30KKworI2VuZGlmIC8vIENPTVBJTEVSKEdDQykK
KworI2VuZGlmIC8vIEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVQuY3BwCShyZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsOCBAQCB2b2lkIEpJVDo6
cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dp
bGxfY2FsbCkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcHVzaF9zY29wZSkKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFs
OgogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3Bf
cHV0X2J5X2luZGV4KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKQEAgLTQ4Niw2
ICs0ODgsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBE
RUZJTkVfU0xPV0NBU0VfT1Aob3BfcG9zdF9pbmMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9P
UChvcF9wcmVfZGVjKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2luYykKKyAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfU0xPV0NBU0Vf
T1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3Zh
bCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsKQpAQCAtNTI1
LDYgKzUyOSwxMCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiBKSVRD
b2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2sp
CiB7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIkNvbXBpbGluZyBK
SVQgY29kZSFcbiIpOworI2VuZGlmCisgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQog
ICAgIG1fY2FuQmVPcHRpbWl6ZWQgPSBtX2NvZGVCbG9jay0+Y2FuQ29tcGlsZVdpdGhERkcoKTsK
ICNlbmRpZgpAQCAtNjkzLDggKzcwMSwxMiBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUo
Q29kZVB0ciogZnVuCiAgICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gbV9jb2RlQmxv
Y2stPnN0cnVjdHVyZVN0dWJJbmZvKG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mb1tpXS5wcm9w
ZXJ0eUFjY2Vzc0luZGV4KS5jYWxsUmV0dXJuTG9jYXRpb247CiAgICAgfQogCi0jaWYgRU5BQkxF
KERGR19KSVQpCi0gICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQpIHsKKyNpZiBFTkFCTEUoREZHX0pJ
VCkgfHwgRU5BQkxFKExMSU5UKQorICAgIGlmIChtX2NhbkJlT3B0aW1pemVkCisjaWYgRU5BQkxF
KExMSU5UKQorICAgICAgICB8fCB0cnVlCisjZW5kaWYKKyAgICAgICAgKSB7CiAgICAgICAgIENv
bXBhY3RKSVRDb2RlTWFwOjpFbmNvZGVyIGppdENvZGVNYXBFbmNvZGVyOwogICAgICAgICBmb3Ig
KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBtX2xhYmVscy5z
aXplKCk7ICsrYnl0ZWNvZGVPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChtX2xhYmVsc1tieXRl
Y29kZU9mZnNldF0uaXNTZXQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5o
CShyZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUu
aAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSklUQ29kZSgpIHsgfQogI2VuZGlmCiAgICAgcHVibGljOgotICAgICAgICBlbnVtIEpJVFR5
cGUgeyBIb3N0Q2FsbFRodW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CisgICAgICAgIGVudW0g
SklUVHlwZSB7IE5vbmUsIEhvc3RDYWxsVGh1bmssIEludGVycHJldGVyVGh1bmssIEJhc2VsaW5l
SklULCBERkdKSVQgfTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKSVRUeXBlIGJvdHRvbVRp
ZXJKSVQoKQogICAgICAgICB7CkBAIC02Niw4ICs2NiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgICAgIHJldHVybiBERkdKSVQ7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0
YXRpYyBib29sIGlzT3B0aW1pemluZ0pJVChKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IERGR0pJVDsKKyAgICAgICAgfQorICAgICAgICAK
KyAgICAgICAgc3RhdGljIGJvb2wgaXNCYXNlbGluZUNvZGUoSklUVHlwZSBqaXRUeXBlKQorICAg
ICAgICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBJbnRlcnByZXRlclRodW5rIHx8
IGppdFR5cGUgPT0gQmFzZWxpbmVKSVQ7CisgICAgICAgIH0KKyAgICAgICAgCiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgSklUQ29kZSgpCisgICAgICAgICAgICA6IG1faml0VHlwZShOb25lKQog
ICAgICAgICB7CiAgICAgICAgIH0KIApAQCAtNzUsNiArODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIDogbV9yZWYocmVmKQogICAgICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlw
ZSkKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKGppdFR5cGUgIT0gTm9uZSk7CiAgICAg
ICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3IgISgpIGNvbnN0CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHJldmlzaW9uIDEwODE2MikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMz
LDE1ICszMywyMSBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
REZHRHJpdmVyLmgiCiAjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50
cy5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlw
ZT4KIGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSwgT3duUHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENv
ZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2Rl
QmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYg
KCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAg
ICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29sIGRmZ0Nv
bXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAg
ICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZShnbG9iYWxEYXRhLCBjb2RlQmxvY2su
Z2V0KCksIGppdENvZGUpOwpAQCAtNjIsOSArNjgsMTQgQEAgaW5saW5lIGJvb2wgaml0Q29tcGls
ZUlmQXBwcm9wcmlhdGUoSlNHbAogCiBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFw
cHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJs
b2NrPiYgY29kZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIm
IGppdENvZGVXaXRoQXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwg
SklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9j
ay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWds
b2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNv
ZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGls
ZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAg
IGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlRnVuY3Rpb24oZ2xvYmFsRGF0YSwgY29kZUJs
b2NrLmdldCgpLCBqaXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwpAQCAtNzksNyArOTAs
NiBAQCBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpCiAgICAgICAgIH0K
ICAgICAgICAgaml0Q29kZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdl
dCgpLCAmaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKICAgICB9Ci0gICAgCiAgICAgY29kZUJsb2Nr
LT5zZXRKSVRDb2RlKGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgCiAgICAg
cmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlv
bnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0
aW9ucy5jcHAJKHJldmlzaW9uIDEwODE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklURXhjZXB0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgRXhjZXB0
aW9uSGFuZGxlciBnZW5lcmljVGhyb3coSlNHbG9iYWxEYQogCiBFeGNlcHRpb25IYW5kbGVyIGpp
dFRocm93KEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpT
VmFsdWUgZXhjZXB0aW9uVmFsdWUsIFJldHVybkFkZHJlc3NQdHIgZmF1bHRMb2NhdGlvbikKIHsK
LSAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9u
VmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGZhdWx0TG9jYXRp
b24pKTsKKyAgICByZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhj
ZXB0aW9uVmFsdWUsIGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGNhbGxG
cmFtZSwgZmF1bHRMb2NhdGlvbikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVElubGluZU1ldGhvZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAkocmV2aXNpb24gMTA4MTYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTI2NSw4ICsyNjUsMTMgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6cmVzdG9yZUFyZ3VtZW50
UgogQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKCkKIHsKICAgICBB
U1NFUlQoc3RhdGljX2Nhc3Q8aW50PihtX2J5dGVjb2RlT2Zmc2V0KSA+PSAwKTsKLSAgICBpZiAo
bV9ieXRlY29kZU9mZnNldCkKKyAgICBpZiAobV9ieXRlY29kZU9mZnNldCkgeworI2lmIFVTRShK
U1ZBTFVFMzJfNjQpCisgICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2st
Pmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBtX2J5dGVjb2RlT2Zmc2V0ICsgMSksIGludFRhZ0Zv
cihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpKTsKKyNlbHNlCiAgICAgICAgIHN0b3JlMzIo
SW1tMzIobV9ieXRlY29kZU9mZnNldCArIDEpLCBpbnRUYWdGb3IoUmVnaXN0ZXJGaWxlOjpBcmd1
bWVudENvdW50KSk7CisjZW5kaWYKKyAgICB9CiAgICAgc3RvcmVQdHIoY2FsbEZyYW1lUmVnaXN0
ZXIsICZtX2dsb2JhbERhdGEtPnRvcENhbGxGcmFtZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0Niw2ICsx
NDQ2LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5X2lkXwogICAgIFB1
dFByb3BlcnR5U2xvdCBzbG90KGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgp
KTsKICAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7
CiAgICAgQVNTRVJUKGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKKyAgICAKICAgICBhc09iamVjdChi
YXNlVmFsdWUpLT5wdXREaXJlY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGlkZW50LCBzdGFj
a0ZyYW1lLmFyZ3NbMl0uanNWYWx1ZSgpLCBzbG90KTsKICAgICAKICAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKQEAgLTE5MzEsNyAr
MTkzMiw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20KICAgICB1
bnNpZ25lZCBieXRlY29kZUluZGV4ID0gc3RhY2tGcmFtZS5hcmdzWzBdLmludDMyKCk7CiAKICNp
ZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQotICAgIGRhdGFMb2coIkVudGVyZWQgb3B0aW1pemVf
ZnJvbV9sb29wIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNv
dW50ZXIgPSAldSwgb3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jay0+
aml0RXhlY3V0ZUNvdW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRl
cigpLCBjb2RlQmxvY2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBkYXRhTG9n
KCIlcDogRW50ZXJlZCBvcHRpbWl6ZV9mcm9tX2xvb3Agd2l0aCBleGVjdXRlQ291bnRlciA9ICVk
LCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50
ZXIgPSAldVxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCksIGNv
ZGVCbG9jay0+cmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29kZUJsb2NrLT5vcHRpbWl6
YXRpb25EZWxheUNvdW50ZXIoKSk7CiAjZW5kaWYKIAogICAgIGlmIChjb2RlQmxvY2stPmhhc09w
dGltaXplZFJlcGxhY2VtZW50KCkpIHsKQEAgLTIxODYsNDUgKzIxODcsMTMgQEAgREVGSU5FX1NU
VUJfRlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVjdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LWlubGluZSBDYWxsRnJhbWUqIGFyaXR5Q2hlY2tGb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJl
Z2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCi17
Ci0gICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgp
KTsKLSAgICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgQ29kZUJsb2Nr
KiBuZXdDb2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNv
ZGVGb3Ioa2luZCk7Ci0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZy
YW1lLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpOwotCi0gICAgLy8gVGhpcyBlbnN1cmVz
IGVub3VnaCBzcGFjZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1bWVu
dHMgcGFzc2VkIGJ5IHRoZSBjYWxsZXIuCi0gICAgaWYgKCFyZWdpc3RlckZpbGUtPmdyb3coY2Fs
bEZyYW1lLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3
Q29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgQVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCkpOwotCi0gICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZy
YW1lIGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVu
ZGVmaW5lZC4KLSAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMo
KSAtIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOwotICAgIFJlZ2lzdGVyKiBzcmMgPSBjYWxs
RnJhbWUtPnJlZ2lzdGVycygpOwotICAgIFJlZ2lzdGVyKiBkc3QgPSBjYWxsRnJhbWUtPnJlZ2lz
dGVycygpICsgZGVsdGE7Ci0KLSAgICBpbnQgaTsKLSAgICBpbnQgZW5kID0gLUNhbGxGcmFtZTo6
b2Zmc2V0Rm9yKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKLSAgICBmb3IgKGkgPSAtMTsg
aSA+PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0gc3JjW2ldOwotCi0gICAgZW5kIC09IGRl
bHRhOwotICAgIGZvciAoIDsgaSA+PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0ganNVbmRl
ZmluZWQoKTsKLQotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVh
dGUoZHN0KTsKLSAgICBBU1NFUlQoKHZvaWQqKW5ld0NhbGxGcmFtZSA8PSByZWdpc3RlckZpbGUt
PmVuZCgpKTsKLSAgICByZXR1cm4gbmV3Q2FsbEZyYW1lOwotfQotCiBERUZJTkVfU1RVQl9GVU5D
VElPTih2b2lkKiwgb3BfY2FsbF9hcml0eUNoZWNrKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19G
UkFNRShzdGFja0ZyYW1lKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFt
ZS5jYWxsRnJhbWU7CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tG
b3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOworICAg
IENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9y
KGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDYWxsKTsKICAgICBp
ZiAoIW5ld0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2Fs
bDx2b2lkKj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVh
dGVTdGFja092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKQEAgLTIy
MzcsNyArMjIwNiw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QK
IAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAg
ICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFj
a0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgQ2FsbEZyYW1lKiBu
ZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBz
dGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7CiAgICAgaWYgKCFuZXdD
YWxsRnJhbWUpCiAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+
KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tP
dmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOwogCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxMDgxNjIpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2LDggKzI2LDEwIEBACiAjaWZuZGVmIEpTSW50ZXJmYWNlSklUX2gKICNkZWZpbmUg
SlNJbnRlcmZhY2VKSVRfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2lu
Y2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTU3Ry
aW5nLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgi
CiAjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRDb21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRDb21tb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRD
b21tb25faAorI2RlZmluZSBMTEludENvbW1vbl9oCisKKy8vIFByaW50IGV2ZXJ5IGluc3RydWN0
aW9uIGV4ZWN1dGVkLgorI2RlZmluZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lORyAwCisKKy8vIFBy
aW50IHNvbWUgaW5mb3JtYXRpb24gZm9yIHNvbWUgb2YgdGhlIG1vcmUgc3VidGxlIHNsb3cgcGF0
aHMuCisjZGVmaW5lIExMSU5UX0hFTFBFUl9UUkFDSU5HIDAKKworLy8gRGlzYWJsZSBpbmxpbmUg
YWxsb2NhdGlvbiBpbiB0aGUgaW50ZXJwcmV0ZXIuIFRoaXMgaXMgZ3JlYXQgaWYgeW91J3JlIGNo
YW5naW5nCisvLyBob3cgdGhlIEdDIGFsbG9jYXRlcy4KKyNkZWZpbmUgTExJTlRfQUxXQVlTX0FM
TE9DQVRFX1NMT1cgMAorCisvLyBFbmFibGUgT1NSIGludG8gdGhlIEpJVC4gRGlzYWJsaW5nIHRo
aXMgd2hpbGUgdGhlIExMSW50IGlzIGVuYWJsZWQgZWZmZWN0aXZlbHkKKy8vIHR1cm5zIG9mZiBh
bGwgSklUJ2luZywgc2luY2UgaW4gTExJbnQncyBwYXJsYW5jZSwgT1NSIHN1YnN1bWVzIGFueSBm
b3JtIG9mIEpJVAorLy8gaW52b2NhdGlvbi4KKyNkZWZpbmUgTExJTlRfT1NSX1RPX0pJVCAxCisK
KyNlbmRpZiAvLyBMTEludENvbW1vbl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5j
bHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisj
aW5jbHVkZSAiT3Bjb2RlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewor
CitEYXRhOjpEYXRhKCkKKyAgICA6IG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKG5ldyBJbnN0cnVj
dGlvblttYXhPcGNvZGVMZW5ndGggKyAxXSkKKyAgICAsIG1fb3Bjb2RlTWFwKG5ldyBPcGNvZGVb
bnVtT3Bjb2RlSURzXSkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heE9wY29kZUxlbmd0
aCArIDE7ICsraSkKKyAgICAgICAgbV9leGNlcHRpb25JbnN0cnVjdGlvbnNbaV0udS5wb2ludGVy
ID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZnJvbV9oZWxwZXJfdHJhbXBvbGlu
ZSk7CisjZGVmaW5lIE9QQ09ERV9FTlRSWShvcGNvZGUsIGxlbmd0aCkgbV9vcGNvZGVNYXBbb3Bj
b2RlXSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50XyMjb3Bjb2RlKTsKKyAgICBGT1JfRUFD
SF9PUENPREVfSUQoT1BDT0RFX0VOVFJZKTsKKyN1bmRlZiBPUENPREVfRU5UUlkKK30KKworRGF0
YTo6fkRhdGEoKQoreworICAgIGRlbGV0ZVtdIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAg
IGRlbGV0ZVtdIG1fb3Bjb2RlTWFwOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQK
KworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludERhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnREYXRhLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludERhdGFfaAor
I2RlZmluZSBMTEludERhdGFfaAorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisK
K25hbWVzcGFjZSBMTEludCB7CisKKyNpZiBFTkFCTEUoTExJTlQpCitjbGFzcyBEYXRhIHsKK3B1
YmxpYzoKKyAgICBEYXRhKCk7CisgICAgfkRhdGEoKTsKKyAgICAKKyAgICBJbnN0cnVjdGlvbiog
ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2V4Y2VwdGlv
bkluc3RydWN0aW9uczsKKyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIG1fb3Bjb2RlTWFwOworICAgIH0KK3ByaXZhdGU6CisgICAgSW5z
dHJ1Y3Rpb24qIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIE9wY29kZSogbV9vcGNvZGVN
YXA7Cit9OworI2Vsc2UgLy8gRU5BQkxFKExMSU5UKQorCisjaWYgQ09NUElMRVIoQ0xBTkcpCisj
cHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGln
bm9yZWQgIi1XbWlzc2luZy1ub3JldHVybiIKKyNlbmRpZgorCitjbGFzcyBEYXRhIHsKK3B1Ymxp
YzoKKyAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAg
CisgICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KK307CisKKyNpZiBDT01QSUxFUihDTEFO
RykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorCisjZW5kaWYgLy8gRU5B
QkxFKExMSU5UKQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExM
SW50RGF0YV9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5
cG9pbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKworI2lmIEVOQUJMRShM
TElOVCkKKworI2luY2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIK
KyNpbmNsdWRlICJMTEludFRodW5rcy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIu
aCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rp
b25FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5
Q2hlY2spCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGlm
IChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6
SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2Rl
UmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5j
dGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSkpKSk7CisgICAgICAgICAgICBhcml0eUNoZWNrID0gTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5X2NoZWNrKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgaml0Q29k
ZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNl
bGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQq
PigmbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkpKSk7CisgICAgICAgIGFy
aXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaykpOworICAgICAgICByZXR1cm47
CisgICAgfQorICAgIAorICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIGpp
dENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxFbnRy
eVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgICAgIGFy
aXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVj
a1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBB
U1NFUlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBqaXRDb2RlID0gSklUQ29kZShn
bG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJh
dG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgYXJpdHlDaGVjayA9IGdsb2Jh
bERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVy
YXRvcikuY29kZSgpOworfQorCit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2Fu
VXNlSklUKCkpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNy
b0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZXZhbF9wcm9sb2d1ZSkpKSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFs
RGF0YS5nZXRDVElTdHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJw
cmV0ZXJUaHVuayk7Cit9CisKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5j
YW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1h
Y3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1i
bGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSkp
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShn
bG9iYWxEYXRhLmdldENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2Rl
OjpJbnRlcnByZXRlclRodW5rKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisK
KyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFbnRyeXBvaW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgTExJbnRFbnRyeXBvaW50c19oCisjZGVmaW5lIExMSW50RW50cnlwb2ludHNfaAorCisj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRl
ICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBF
dmFsQ29kZUJsb2NrOworY2xhc3MgSklUQ29kZTsKK2NsYXNzIEpTR2xvYmFsRGF0YTsKK2NsYXNz
IE1hY3JvQXNzZW1ibGVyQ29kZVB0cjsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKK2Ns
YXNzIFByb2dyYW1Db2RlQmxvY2s7CisKK25hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVu
Y3Rpb25FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIEpJ
VENvZGUmLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2spOwordm9pZCBnZXRFdmFs
RW50cnlwb2ludChKU0dsb2JhbERhdGEmLCBKSVRDb2RlJik7Cit2b2lkIGdldFByb2dyYW1FbnRy
eXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENvZGUmKTsKKworaW5saW5lIHZvaWQgZ2V0RW50cnlw
b2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEV2YWxDb2RlQmxvY2sqLCBKSVRDb2RlJiBq
aXRDb2RlKQoreworICAgIGdldEV2YWxFbnRyeXBvaW50KGdsb2JhbERhdGEsIGppdENvZGUpOwor
fQorCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
UHJvZ3JhbUNvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0UHJvZ3JhbUVu
dHJ5cG9pbnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlND
OjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRFbnRy
eXBvaW50c19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
eGNlcHRpb25zLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKworI2lmIEVOQUJMRShMTElOVCkK
KworI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1
ZGUgIkluc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUg
IkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBpbnRlcnByZXRlclRocm93SW5D
YWxsZXIoRXhlY1N0YXRlKiBleGVjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9
ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBkYXRh
TG9nKCJUaHJvd2luZyBleGNlcHRpb24gJXMuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVz
Y3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coCisgICAgICAgIGdsb2JhbERh
dGEsIGV4ZWMtPmNhbGxlckZyYW1lKCksIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwKKyAgICAgICAg
ZXhlYy0+Y2FsbGVyRnJhbWUoKS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGV4ZWMtPmNh
bGxlckZyYW1lKCksIGV4ZWMtPnJldHVyblBDKCkpKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVy
blRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0YXRlKiBleGVjKQoreworICAgIHJldHVy
biBleGVjLT5nbG9iYWxEYXRhKCkubGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOwor
fQorCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0
aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFs
RGF0YSgpOworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgZGF0YUxvZygiVGhyb3dpbmcg
ZXhjZXB0aW9uICVzIChyZXR1cm5Ub1Rocm93KS5cbiIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5k
ZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRhLCBleGVj
LCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0
aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBnbG9iYWxEYXRhLT5sbGludERhdGEu
ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0
ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICBk
YXRhTG9nKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKGNhbGxUb1Rocm93KS5cbiIsIGdsb2JhbERh
dGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdlbmVyaWNUaHJvdyhn
bG9iYWxEYXRhLCBleGVjLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sIHBjIC0gZXhlYy0+Y29kZUJs
b2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIAorICAgIHJldHVybiBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKTsKK30KKwor
fSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9u
cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRFeGNlcHRpb25zX2gKKyNkZWZp
bmUgTExJbnRFeGNlcHRpb25zX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1
ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNw
YWNlIExMSW50IHsKKworLy8gVGhyb3cgdGhlIGN1cnJlbnRseSBhY3RpdmUgZXhjZXB0aW9uIGlu
IHRoZSBjb250ZXh0IG9mIHRoZSBjYWxsZXIncyBjYWxsIGZyYW1lLgordm9pZCBpbnRlcnByZXRl
clRocm93SW5DYWxsZXIoRXhlY1N0YXRlKik7CisKKy8vIFRlbGxzIHlvdSB3aGVyZSB0byBqdW1w
IHRvIGlmIHlvdSB3YW50IHRvIHJldHVybi10by10aHJvdywgYWZ0ZXIgeW91J3ZlIGFscmVhZHkK
Ky8vIHNldCB1cCBhbGwgaW5mb3JtYXRpb24gbmVlZGVkIHRvIHRocm93IHRoZSBleGNlcHRpb24u
CitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihFeGVjU3RhdGUq
KTsKKworLy8gU2F2ZXMgdGhlIGN1cnJlbnQgUEMgaW4gdGhlIGdsb2JhbCBkYXRhIGZvciBzYWZl
LWtlZXBpbmcsIGFuZCBnaXZlcyB5b3UgYSBQQworLy8gdGhhdCB5b3UgY2FuIHRlbGwgdGhlIGlu
dGVycHJldGVyIHRvIGdvIHRvLCB3aGljaCB3aGVuIGFkdmFuY2VkIGJldHdlZW4gMQorLy8gYW5k
IDkgc2xvdHMgd2lsbCBnaXZlIHlvdSBhbiAiaW5zdHJ1Y3Rpb24iIHRoYXQgdGhyZWFkcyB0byB0
aGUgaW50ZXJwcmV0ZXIncworLy8gZXhjZXB0aW9uIGhhbmRsZXIuIE5vdGUgdGhhdCBpZiB5b3Ug
Z2l2ZSBpdCB0aGUgUEMgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZywKKy8vIGl0J3Mgc21hcnQgZW5v
dWdoIHRvIGp1c3QgcmV0dXJuIHRoYXQgUEMgd2l0aG91dCBkb2luZyBhbnl0aGluZyBlbHNlOyB0
aGlzCisvLyBsZXRzIHlvdSB0aHJlYWQgZXhjZXB0aW9uIGhhbmRsaW5nIHRocm91Z2ggY29tbW9u
IGhlbHBlciBmdW5jdGlvbnMgdXNlZCBieQorLy8gb3RoZXIgaGVscGVycy4KK0luc3RydWN0aW9u
KiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisKKy8vIFVzZSB0aGlz
IHdoZW4geW91J3JlIHRocm93aW5nIHRvIGEgY2FsbCB0aHVuay4KK3ZvaWQqIGNhbGxUb1Rocm93
KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTElu
dAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRFeGNlcHRpb25z
X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEhlbHBlcnMuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50SGVscGVy
cy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU1MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiTExJbnRIZWxwZXJzLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRl
ICJBcmd1bWVudHMuaCIKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25T
bG93UGF0aHMuaCIKKyNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2Fs
bFJldHVyblZhbHVlLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKSVQu
aCIKKyNpbmNsdWRlICJKSVREcml2ZXIuaCIKKyNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKKyNp
bmNsdWRlICJKU0J5dGVBcnJheS5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25z
LmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3Rh
dGljU2NvcGVPYmplY3QuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTVmFs
dWUuaCIKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9u
cy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGVyYXRp
b25zLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCisjZGVmaW5lIExM
SU5UX0JFR0lOX05PX1NFVF9QQygpIFwKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBl
eGVjLT5nbG9iYWxEYXRhKCk7ICAgICAgXAorICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFj
ZXIoJmdsb2JhbERhdGEsIGV4ZWMpCisKKyNkZWZpbmUgTExJTlRfU0VUX1BDX0ZPUl9TVFVCUygp
IFwKKyAgICBleGVjLT5zZXRDdXJyZW50VlBDKHBjICsgMSkKKworI2RlZmluZSBMTElOVF9CRUdJ
TigpICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIExMSU5UX0JFR0lOX05PX1NFVF9Q
QygpOyAgICAgICAgICAgICAgICAgICAgXAorICAgIExMSU5UX1NFVF9QQ19GT1JfU1RVQlMoKQor
CisjZGVmaW5lIExMSU5UX09QKGluZGV4KSAoZXhlYy0+dW5jaGVja2VkUihwY1tpbmRleF0udS5v
cGVyYW5kKSkKKyNkZWZpbmUgTExJTlRfT1BfQyhpbmRleCkgKGV4ZWMtPnIocGNbaW5kZXhdLnUu
b3BlcmFuZCkpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOX1RXTyhmaXJzdCwgc2Vjb25kKSBkbyB7
ICAgICAgIFwKKyAgICAgICAgdW5pb24geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgIHN0cnVjdCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgICAgICAgICB2b2lkKiBhOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgICAgICAgICB2b2lkKiBiOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIH0gcGFpcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIGludDY0X3QgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
fSBfX3J0X3U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX19y
dF91LnBhaXIuYSA9IGZpcnN0OyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX19ydF91
LnBhaXIuYiA9IHNlY29uZDsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9f
cnRfdS5pOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkK
KworI2RlZmluZSBMTElOVF9FTkRfSU1QTCgpIExMSU5UX1JFVFVSTl9UV08ocGMsIGV4ZWMpCisK
KyNkZWZpbmUgTExJTlRfVEhST1coZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9U
aHJvdyk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMs
IHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lN
UEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdo
aWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DSEVDS19FWENFUFRJT04oKSBkbyB7ICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VMWShnbG9iYWxEYXRhLmV4Y2VwdGlv
bikpIHsgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBw
Yyk7ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBM
TElOVF9FTkQoKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9D
SEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1Q
TCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVm
aW5lIExMSU5UX0JSQU5DSChvcGNvZGUsIGNvbmRpdGlvbikgZG8geyAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIGJvb2wgX19iX2NvbmRpdGlvbiA9IChjb25kaXRpb24pOyAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChfX2JfY29uZGl0aW9u
KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBw
YyArPSBwY1tPUENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51Lm9wZXJhbmQ7ICAgICAgICBcCisg
ICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgICAgICBwYyArPSBPUENPREVfTEVOR1RIKG9wY29kZSk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisK
KyNkZWZpbmUgTExJTlRfUkVUVVJOKHZhbHVlKSBkbyB7ICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgSlNWYWx1ZSBfX3JfcmV0dXJuVmFsdWUgPSAodmFsdWUpOyAgICAgIFwKKyAgICAgICAgTExJ
TlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfT1Ao
MSkgPSBfX3JfcmV0dXJuVmFsdWU7ICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwo
KTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmlu
ZSBMTElOVF9SRVRVUk5fUFJPRklMRUQob3Bjb2RlLCB2YWx1ZSkgZG8geyAgICAgICAgICAgICAg
IFwKKyAgICAgICAgSlNWYWx1ZSBfX3JwX3JldHVyblZhbHVlID0gKHZhbHVlKTsgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9PUCgxKSA9IF9fcnBfcmV0dXJu
VmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcGNbT1BDT0RFX0xFTkdU
SChvcGNvZGUpIC0gMV0udS5wcm9maWxlLT5tX2J1Y2tldHNbMF0gPSBcCisgICAgICAgICAgICBK
U1ZhbHVlOjplbmNvZGUoX19ycF9yZXR1cm5WYWx1ZSk7ICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0VORF9JTVBM
KGV4ZWMsIGNhbGxUYXJnZXQpIExMSU5UX1JFVFVSTl9UV08oKGNhbGxUYXJnZXQpLCAoZXhlYykp
CisKKyNkZWZpbmUgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgZXhjZXB0aW9uVG9UaHJvdykg
ZG8geyAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2N0X2V4ZWMgPSAoZXhl
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rp
b24qIF9fY3RfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgZ2xvYmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2N0X2V4ZWMs
IGNhbGxUb1Rocm93KF9fY3RfZXhlYywgX19jdF9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2Up
CisKKyNkZWZpbmUgTExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpIGRvIHsgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRXhlY1N0YXRlKiBfX2NjZV9leGVjID0gKGV4
ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rp
b24qIF9fY2NlX3BjID0gKHBjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgaWYgKFVOTElLRUxZKGdsb2JhbERhdGEuZXhjZXB0aW9uKSkgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY2Nl
X2V4ZWMsIGNhbGxUb1Rocm93KF9fY2NlX2V4ZWMsIF9fY2NlX3BjKSk7IFwKKyAgICB9IHdoaWxl
IChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX1JFVFVSTihleGVjLCBwYywgY2FsbFRhcmdl
dCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3JfZXhl
YyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJ
bnN0cnVjdGlvbiogX19jcl9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICB2b2lkKiBfX2NyX2NhbGxUYXJnZXQgPSAoY2FsbFRhcmdldCk7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQ
VElPTihfX2NyX2V4ZWMtPmNhbGxlckZyYW1lKCksIF9fY3JfcGMpOyAgXAorICAgICAgICBMTElO
VF9DQUxMX0VORF9JTVBMKF9fY3JfZXhlYywgX19jcl9jYWxsVGFyZ2V0KTsgICAgICAgICAgICAg
ICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUg
bGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50
IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBkYXRh
TG9nKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWRc
biIsCisgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgIGV4ZWMsCisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCku
aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgIGZy
b21XaGVyZSwKKyAgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgICBwY1tvcGVyYW5kXS51
Lm9wZXJhbmQpOworICAgIExMSU5UX0VORCgpOworfQorCitleHRlcm4gIkMiIEhlbHBlclJldHVy
blR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMs
IGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
SlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0Mob3BlcmFuZCkuanNWYWx1ZSgpOworICAgIHVuaW9u
IHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQzMl90IHRhZzsKKyAgICAgICAg
ICAgIHVpbnQzMl90IHBheWxvYWQ7CisgICAgICAgIH0gYml0czsKKyAgICAgICAgRW5jb2RlZEpT
VmFsdWUgYXNWYWx1ZTsKKyAgICB9IHU7CisgICAgdS5hc1ZhbHVlID0gSlNWYWx1ZTo6ZW5jb2Rl
KHZhbHVlKTsKKyAgICBkYXRhTG9nKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMldTog
VHJhY2UoJWQpOiAlZDogJWQ6ICUwOHg6JTA4eDogJXNcbiIsCisgICAgICAgICAgICBleGVjLT5j
b2RlQmxvY2soKSwKKyAgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxp
bnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSks
CisgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlE
KHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgIGZyb21XaGVyZSwKKyAgICAgICAgICAgIG9w
ZXJhbmQsCisgICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQsCisgICAgICAgICAgICB1
LmJpdHMudGFnLAorICAgICAgICAgICAgdS5iaXRzLnBheWxvYWQsCisgICAgICAgICAgICB2YWx1
ZS5kZXNjcmlwdGlvbigpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0wodHJhY2VfcHJvbG9ndWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBkYXRhTG9nKCIl
cCAvICVwOiBpbiBwcm9sb2d1ZS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLCBleGVjKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworc3RhdGljIHZvaWQgdHJhY2VGdW5jdGlvblByb2xvZ3VlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVl
KCkpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+anNFeGVj
dXRhYmxlKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAmZXhlY3V0YWJsZS0+Z2VuZXJh
dGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgZGF0YUxvZygiJXAgLyAlcDogaW4gJXMgb2YgZnVu
Y3Rpb24gJXAsIGV4ZWN1dGFibGUgJXA7IG51bVZhcnMgPSAldSwgbnVtUGFyYW1ldGVycyA9ICV1
LCBudW1DYWxsZWVSZWdpc3RlcnMgPSAldS5cbiIsCisgICAgICAgICAgICBjb2RlQmxvY2ssIGV4
ZWMsIGNvbW1lbnQsIGNhbGxlZSwgZXhlY3V0YWJsZSwKKyAgICAgICAgICAgIGNvZGVCbG9jay0+
bV9udW1WYXJzLCBjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSwgY29kZUJsb2NrLT5tX251bUNh
bGxlZVJlZ2lzdGVycyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1
bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgdHJhY2VGdW5jdGlv
blByb2xvZ3VlKGV4ZWMsICJjYWxsIHByb2xvZ3VlIiwgQ29kZUZvckNhbGwpOworICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9m
b3JfY29uc3RydWN0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgdHJhY2VGdW5jdGlvblBy
b2xvZ3VlKGV4ZWMsICJjb25zdHJ1Y3QgcHJvbG9ndWUiLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19m
b3JfY2FsbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1
ZShleGVjLCAiY2FsbCBhcml0eSBjaGVjayIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMs
ICJjb25zdHJ1Y3QgYXJpdHkgY2hlY2siLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBMTElOVF9F
TkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2UpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBkYXRhTG9nKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCAlcywgc2NvcGUgJXBc
biIsCisgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgIGV4ZWMsCisg
ICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAgICBvcGNvZGVOYW1lc1tleGVjLT5n
bG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKV0sCisg
ICAgICAgICAgICBleGVjLT5zY29wZUNoYWluKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChzcGVjaWFsX3RyYWNlKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgZGF0YUxvZygiJXAgLyAlcDogZXhlY3V0aW5nIHNwZWNpYWwgY2FzZSBiYyMlenUsIG9wIyV1
LCByZXR1cm4gUEMgaXMgJXBcbiIsCisgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAg
ICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBl
eGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAgICBl
eGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2Rl
KSwKKyAgICAgICAgICAgIGV4ZWMtPnJldHVyblBDKCkudmFsdWUoKSk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK2lubGluZSBib29sIHNob3VsZEpJVChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
Ly8gWW91IGNhbiBtb2RpZnkgdGhpcyB0byB0dXJuIG9mZiBKSVR0aW5nIHdpdGhvdXQgcmVidWls
ZGluZyB0aGUgd29ybGQuCisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5jYW5Vc2VKSVQo
KTsKK30KKworZW51bSBFbnRyeUtpbmQgeyBQcm9sb2d1ZSwgQXJpdHlDaGVjayB9Oworc3RhdGlj
IEhlbHBlclJldHVyblR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiog
cGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBjaGFyICpuYW1lLCBFbnRyeUtpbmQga2lu
ZCkKK3sKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIGRhdGFMb2coIiVwOiBFbnRl
cmVkICVzIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBuYW1lLCBjb2Rl
QmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoIXNo
b3VsZEpJVChleGVjKSkgeworICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigp
OworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAgICBpZiAoIWNv
ZGVCbG9jay0+aml0Q29tcGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5BQkxFKEpJ
VF9WRVJCT1NFX09TUikKKyAgICAgICAgZGF0YUxvZygiICAgIENvZGUgd2FzIGFscmVhZHkgY29t
cGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxvY2stPmppdFNvb24oKTsKKyAg
ICBpZiAoa2luZCA9PSBQcm9sb2d1ZSkKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxv
Y2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KDApLCBleGVjKTsKKyAg
ICBBU1NFUlQoa2luZCA9PSBBcml0eUNoZWNrKTsKKyAgICBMTElOVF9SRVRVUk5fVFdPKGNvZGVC
bG9jay0+Z2V0SklUQ29kZVdpdGhBcml0eUNoZWNrKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwgZXhl
Yyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcikKK3sKKyAgICByZXR1cm4gZW50
cnlPU1IoZXhlYywgcGMsIGV4ZWMtPmNvZGVCbG9jaygpLCAiZW50cnlfb3NyIiwgUHJvbG9ndWUp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwpCit7
CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUo
KSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ2FsbCksICJl
bnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQoreworICAgIHJldHVybiBl
bnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFi
bGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNvbnN0cnVjdCksICJlbnRyeV9vc3Jf
ZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2spCit7CisgICAgcmV0dXJu
IGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmpzRXhlY3V0
YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ2FsbCksICJlbnRyeV9vc3JfZnVu
Y3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOworfQorCitMTElOVF9IRUxQ
RVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrKQorewor
ICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkp
LT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNvbnN0cnVjdCks
ICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrIiwgQXJpdHlDaGVj
ayk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGxvb3Bfb3NyKQoreworICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgCisjaWYgRU5BQkxFKEpJVF9WRVJC
T1NFX09TUikKKyAgICBkYXRhTG9nKCIlcDogRW50ZXJlZCBsb29wX29zciB3aXRoIGV4ZWN1dGVD
b3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVy
KCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAg
Y29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RX
TygwLCBleGVjKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUo
ZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAg
ICAgIGRhdGFMb2coIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYK
KyAgICB9CisgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgCisgICAgQVNTRVJUKGNvZGVC
bG9jay0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAKKyAgICBW
ZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiBtYXA7CisgICAgY29kZUJsb2NrLT5qaXRD
b2RlTWFwKCktPmRlY29kZShtYXApOworICAgIEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldCogbWFw
cGluZyA9IGJpbmFyeVNlYXJjaDxCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQsIHVuc2lnbmVkLCBC
eXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ6OmdldEJ5dGVjb2RlSW5kZXg+KG1hcC5iZWdpbigpLCBt
YXAuc2l6ZSgpLCBwYyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAg
QVNTRVJUKG1hcHBpbmcpOworICAgIEFTU0VSVChtYXBwaW5nLT5tX2J5dGVjb2RlSW5kZXggPT0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBjIC0gY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpKSk7CisgICAgCisgICAgdm9pZCoganVtcFRhcmdldCA9IGNvZGVCbG9jay0+Z2V0SklUQ29k
ZSgpLmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQobWFwcGluZy0+bV9tYWNoaW5lQ29kZU9mZnNl
dCk7CisgICAgQVNTRVJUKGp1bXBUYXJnZXQpOworICAgIAorICAgIExMSU5UX1JFVFVSTl9UV08o
anVtcFRhcmdldCwgZXhlYyk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKHJlcGxhY2UpCit7Cisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAKKyNpZiBF
TkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIGRhdGFMb2coIiVwOiBFbnRlcmVkIHJlcGxhY2Ug
d2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+bGxpbnRF
eGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmIChzaG91bGRKSVQoZXhlYykp
IHsKKyAgICAgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgp
KSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgICAgICBkYXRhTG9nKCIg
ICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlmCisgICAgICAgIH0KKyAg
ICAgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgfSBlbHNlCisgICAgICAgIGNvZGVCbG9j
ay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgTExJTlRfRU5EX0lNUEwoKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjaykKK3sKKyAgICBMTElOVF9CRUdJTigp
OworI2lmIExMSU5UX0hFTFBFUl9UUkFDSU5HCisgICAgZGF0YUxvZygiQ2hlY2tpbmcgc3RhY2sg
aGVpZ2h0IHdpdGggZXhlYyA9ICVwLlxuIiwgZXhlYyk7CisgICAgZGF0YUxvZygiQ29kZUJsb2Nr
ID0gJXAuXG4iLCBleGVjLT5jb2RlQmxvY2soKSk7CisgICAgZGF0YUxvZygiTnVtIGNhbGxlZSBy
ZWdpc3RlcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVy
cyk7CisgICAgZGF0YUxvZygiTnVtIHZhcnMgPSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5t
X251bVZhcnMpOworICAgIGRhdGFMb2coIkN1cnJlbnQgZW5kIGlzIGF0ICVwLlxuIiwgZXhlYy0+
Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5lbmQoKSk7CisjZW5kaWYK
KyAgICBBU1NFUlQoJmV4ZWMtPnJlZ2lzdGVycygpW2V4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNh
bGxlZVJlZ2lzdGVyc10gPiBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVy
RmlsZSgpLmVuZCgpKTsKKyAgICBpZiAoVU5MSUtFTFkoIWdsb2JhbERhdGEuaW50ZXJwcmV0ZXIt
PnJlZ2lzdGVyRmlsZSgpLmdyb3coJmV4ZWMtPnJlZ2lzdGVycygpW2V4ZWMtPmNvZGVCbG9jaygp
LT5tX251bUNhbGxlZVJlZ2lzdGVyc10pKSkgeworICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVy
RnJhbWUoKTsKKyAgICAgICAgZ2xvYmFsRGF0YS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJm
bG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsK
KyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKGV4ZWMpOworICAg
IH0KKyAgICBMTElOVF9FTkRfSU1QTCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
Y2FsbF9hcml0eUNoZWNrKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgRXhlY1N0YXRlKiBu
ZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZnbG9iYWxEYXRh
LmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNhbGwpOworICAgIGlmICghbmV3
RXhlYykgeworICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZ2xv
YmFsRGF0YS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAg
ICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJO
X1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVj
KTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNo
ZWNrRm9yKGV4ZWMsICZnbG9iYWxEYXRhLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29k
ZUZvckNvbnN0cnVjdCk7CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVj
LT5jYWxsZXJGcmFtZSgpOworICAgICAgICBnbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0
YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVy
KGV4ZWMpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3Rh
dGljX2Nhc3Q8dWludHB0cl90PigxKSksIGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9SRVRVUk5f
VFdPKDAsIG5ld0V4ZWMpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY3JlYXRlX2Fj
dGl2YXRpb24pCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyNpZiBMTElOVF9IRUxQRVJfVFJBQ0lO
RworICAgIGRhdGFMb2coIkNyZWF0aW5nIGFuIGFjdGl2YXRpb24sIGV4ZWMgPSAlcCFcbiIsIGV4
ZWMpOworI2VuZGlmCisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gSlNBY3RpdmF0aW9u
OjpjcmVhdGUoZ2xvYmFsRGF0YSwgZXhlYywgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxl
Kj4oZXhlYy0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSk7CisgICAgZXhlYy0+c2V0
U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goYWN0aXZhdGlvbikpOworICAgIExM
SU5UX1JFVFVSTihKU1ZhbHVlKGFjdGl2YXRpb24pKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NyZWF0ZV9hcmd1bWVudHMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1Zh
bHVlIGFyZ3VtZW50cyA9IEpTVmFsdWUoQXJndW1lbnRzOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZXhl
YykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIo
cGNbMV0udS5vcGVyYW5kKSA9IGFyZ3VtZW50czsKKyAgICBleGVjLT51bmNoZWNrZWRSKHVubW9k
aWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV90aGlz
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNGdW5jdGlvbiogY29uc3RydWN0b3IgPSBh
c0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICAKKyNpZiAhQVNTRVJUX0RJU0FCTEVECisg
ICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIEFTU0VSVChjb25zdHJ1Y3Rvci0+
bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0YShjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0
YSkgPT0gQ29uc3RydWN0VHlwZUpTKTsKKyNlbmRpZgorICAgIAorICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlOworICAgIEpTVmFsdWUgcHJvdG8gPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAg
aWYgKHByb3RvLmlzT2JqZWN0KCkpCisgICAgICAgIHN0cnVjdHVyZSA9IGFzT2JqZWN0KHByb3Rv
KS0+aW5oZXJpdG9ySUQoZ2xvYmFsRGF0YSk7CisgICAgZWxzZQorICAgICAgICBzdHJ1Y3R1cmUg
PSBjb25zdHJ1Y3Rvci0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5lbXB0eU9iamVjdFN0cnVjdHVy
ZSgpOworICAgIAorICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBz
dHJ1Y3R1cmUpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NvbnZlcnRfdGhpcykK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgdjEgPSBMTElOVF9PUCgxKS5qc1Zh
bHVlKCk7CisgICAgQVNTRVJUKHYxLmlzUHJpbWl0aXZlKCkpOworICAgIExMSU5UX1JFVFVSTih2
MS50b1RoaXNPYmplY3QoZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3
X29iamVjdCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihjb25zdHJ1
Y3RFbXB0eU9iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdf
YXJyYXkpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0
QXJyYXkoZXhlYywgYml0d2lzZV9jYXN0PEpTVmFsdWUqPigmTExJTlRfT1AoMikpLCBwY1szXS51
Lm9wZXJhbmQpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19hcnJheV9idWZm
ZXIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJy
YXkoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmNvbnN0YW50QnVmZmVyKHBjWzJdLnUub3BlcmFu
ZCksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmV3
X3JlZ2V4cCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhl
Yy0+Y29kZUJsb2NrKCktPnJlZ2V4cChwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhw
LT5pc1ZhbGlkKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMs
ICJJbnZhbGlkIGZsYWcgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBM
TElOVF9SRVRVUk4oUmVnRXhwT2JqZWN0OjpjcmVhdGUoZ2xvYmFsRGF0YSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVj
dHVyZSgpLCByZWdFeHApKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUxMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKEpTVmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25l
cSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpT
VmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N0cmljdGVxKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVl
OjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uc3RyaWN0ZXEp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1Zh
bHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9sZXNzKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8
dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzc2VxKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3NFcTx0cnVlPihl
eGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7
Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExM
SU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJ
TlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9pbmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4
ZWMpICsgMSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHJlX2RlYykKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSAxKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wb3N0X2luYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGRvdWJsZSByZXN1bHQg
PSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikg
PSBqc051bWJlcihyZXN1bHQgKyAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0
KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wb3N0X2RlYykKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9O
dW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQgLSAxKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl90b19qc251bWJlcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JF
VFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOwor
fQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbmVnYXRlKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKC1MTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50
b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRkKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2MSA9IExMSU5UX09QX0MoMikuanNWYWx1
ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyNp
ZiBMTElOVF9IRUxQRVJfVFJBQ0lORworICAgIGRhdGFMb2coIlRyeWluZyB0byBhZGQgJXMiLCB2
MS5kZXNjcmlwdGlvbigpKTsKKyAgICBkYXRhTG9nKCIgdG8gJXMuXG4iLCB2Mi5kZXNjcmlwdGlv
bigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICh2MS5pc1N0cmluZygpICYmICF2Mi5pc09iamVj
dCgpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNTdHJpbmcoZXhlYywgYXNTdHJpbmcodjEpLCB2
Mi50b1N0cmluZyhleGVjKSkpOworICAgIAorICAgIGlmICh2MS5pc051bWJlcigpICYmIHYyLmlz
TnVtYmVyKCkpCisgICAgICAgIExMSU5UX1JFVFVSTihqc051bWJlcih2MS5hc051bWJlcigpICsg
djIuYXNOdW1iZXIoKSkpOworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0FkZFNsb3dDYXNlKGV4
ZWMsIHYxLCB2MikpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbXVsKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICogTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1i
ZXIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3N1YikKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKS50b051bWJlcihleGVjKSAtIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVy
KGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9kaXYpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9OdW1iZXIoZXhlYykgLyBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihl
eGVjKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbW9kKQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9OdW1iZXIoZXhlYyksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVy
KGV4ZWMpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbHNoaWZ0KQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPDwgKExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUlu
dDMyKGV4ZWMpICYgMzEpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yc2hpZnQp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA+PiAoTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkudG9VSW50MzIoZXhlYykgJiAzMSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X3Vyc2hpZnQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykgPj4gKExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpICYgMzEpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9iaXRhbmQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRV
Uk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSAmIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2JpdG9yKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJO
KGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgfCBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9iaXR4b3IpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4o
anNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSBeIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2JpdG5vdCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihq
c051bWJlcih+TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7
CisjaWZuZGVmIE5ERUJVRworICAgIFR5cGVJbmZvIHR5cGVJbmZvKFVuc3BlY2lmaWVkVHlwZSk7
CisgICAgQVNTRVJUKCFiYXNlVmFsLmlzT2JqZWN0KCkKKyAgICAgICAgICAgfHwgISh0eXBlSW5m
byA9IGFzT2JqZWN0KGJhc2VWYWwpLT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKSkuaW1wbGVtZW50
c0hhc0luc3RhbmNlKCkpOworI2VuZGlmCisgICAgTExJTlRfVEhST1coY3JlYXRlSW52YWxpZFBh
cmFtRXJyb3IoZXhlYywgImluc3RhbmNlb2YiLCBiYXNlVmFsKSk7Cit9CisKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9pbnN0YW5jZW9mKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJ
TlRfUkVUVVJOKGpzQm9vbGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3coZXhl
YywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDQpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3R5
cGVvZikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc1R5cGVTdHJp
bmdGb3JWYWx1ZShleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfaXNfdW5kZWZpbmVkKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgSlNWYWx1ZSB2ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbih2LmlzQ2VsbCgpID8gdi5hc0NlbGwoKS0+c3RydWN0dXJlKCktPnR5cGVJbmZv
KCkubWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpIDogdi5pc1VuZGVmaW5lZCgpKSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pc19ib29sZWFuKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS5pc0Jv
b2xlYW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKS5pc051bWJlcigpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9pc19zdHJpbmcpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNC
b29sZWFuKGlzSlNTdHJpbmcoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9pc19vYmplY3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNPYmplY3RUeXBlKExMSU5UX09QX0MoMikuanNW
YWx1ZSgpKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5j
dGlvblR5cGUoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9pbikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihq
c0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhzOjpvcEluKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX3Jlc29sdmUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk5f
UFJPRklMRUQob3BfcmVzb2x2ZSwgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhl
Yy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV9za2lwKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKAorICAgICAgICBvcF9yZXNvbHZlX3NraXAsCisg
ICAgICAgIENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlU2tpcCgKKyAgICAgICAgICAgIGV4ZWMs
CisgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJh
bmQpLAorICAgICAgICAgICAgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVl
IHJlc29sdmVHbG9iYWwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAg
Q29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBBU1NF
UlQoZ2xvYmFsT2JqZWN0LT5pc0dsb2JhbE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkgPSBw
Y1syXS51Lm9wZXJhbmQ7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVj
dHVyZS5nZXQoKTsKKyAgICAKKyAgICBBU1NFUlRfVU5VU0VEKHN0cnVjdHVyZSwgc3RydWN0dXJl
ICE9IGdsb2JhbE9iamVjdC0+c3RydWN0dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXImIGlk
ZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNsb3Qg
c2xvdChnbG9iYWxPYmplY3QpOworICAgIAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3Bl
cnR5U2xvdChleGVjLCBpZGVudCwgc2xvdCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBz
bG90LmdldFZhbHVlKGV4ZWMsIGlkZW50KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVW
YWx1ZSgpICYmICFnbG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlv
bmFyeSgpCisgICAgICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7
CisgICAgICAgICAgICBwY1szXS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhl
Yy0+Z2xvYmFsRGF0YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmpl
Y3QtPnN0cnVjdHVyZSgpKTsKKyAgICAgICAgICAgIHBjWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQo
KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cisg
ICAgCisgICAgZXhlYy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVVuZGVmaW5lZFZh
cmlhYmxlRXJyb3IoZXhlYywgaWRlbnQpOworICAgIHJldHVybiBKU1ZhbHVlKCk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2dsb2JhbCkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbCwgcmVzb2x2
ZUdsb2JhbChleGVjLCBwYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2
ZV9nbG9iYWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVS
Tl9QUk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljLCByZXNvbHZlR2xvYmFsKGV4ZWMs
IHBjKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Zvcl9yZXNvbHZl
X2dsb2JhbF9keW5hbWljKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJO
X1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIENvbW1vblNsb3dQYXRoczo6b3BS
ZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFu
ZCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfYmFzZSkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2Nr
KCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAocGNbM10udS5vcGVyYW5k
KSB7CisgICAgICAgIEpTVmFsdWUgYmFzZSA9IEpTQzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQs
IGV4ZWMtPnNjb3BlQ2hhaW4oKSwgdHJ1ZSk7CisgICAgICAgIGlmICghYmFzZSkKKyAgICAgICAg
ICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoZXhl
YywgaWRlbnQudXN0cmluZygpKSk7CisgICAgICAgIExMSU5UX1JFVFVSTihiYXNlKTsKKyAgICB9
CisgICAgCisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfYmFzZSwgSlNDOjpy
ZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBmYWxzZSkpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChMTElOVF9P
UCgxKS5qc1ZhbHVlKCkpOworICAgIFByb3BlcnR5U2xvdCBzbG90KG9iamVjdCk7CisgICAgSWRl
bnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9w
ZXJhbmQpOworICAgIGlmICghb2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNs
b3QpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3Np
Z25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVzb2x2ZV93aXRoX2Jhc2UpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZl
V2l0aEJhc2UoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVy
YW5kKSwgTExJTlRfT1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExM
SU5UX09QKDIpID0gcmVzdWx0OworICAgIC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQgaGF2
ZSBwcm9maWxpbmcsIGJ1dCB3ZSBkb24ndCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3QgdXNl
IGl0LgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcmVz
b2x2ZV93aXRoX3RoaXMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aFRoaXMoZXhlYywgZXhlYy0+Y29kZUJs
b2NrKCktPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0OworICAgIC8v
IEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcsIGJ1dCB3ZSBkb24ndCBk
byBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExMSU5UX0VORCgpOworfQor
CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X2lkKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJ
ZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQp
OworICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAg
UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFz
ZVZhbHVlLmdldChleGVjLCBpZGVudCwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9O
KCk7CisgICAgTExJTlRfT1AoMSkgPSByZXN1bHQ7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2Vs
bCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKQorICAgICAgICAmJiBzbG90LnNsb3RC
YXNlKCkgPT0gYmFzZVZhbHVlCisgICAgICAgICYmIHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkg
PT0gUHJvcGVydHlTbG90OjpWYWx1ZSkgeworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNl
Q2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUg
PSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVjdHVy
ZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+
dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hpbmcoKSkgeworICAgICAgICAgICAgcGNb
NF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICBwY1s1XS51Lm9w
ZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICB9
CisgICAgfQorICAgIAorICAgIHBjW09QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X2lkKSAtIDFdLnUu
cHJvZmlsZS0+bV9idWNrZXRzWzBdID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1lbnRzX2xl
bmd0aCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0g
ZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlk
ZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5U
X09QKDIpLmpzVmFsdWUoKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworICAg
IExMSU5UX1JFVFVSTihiYXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KSk7Cit9CisKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfaWQpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50
aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7Cisg
ICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAg
ICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBp
ZiAocGNbOF0udS5vcGVyYW5kKQorICAgICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5wdXREaXJl
Y3QoZ2xvYmFsRGF0YSwgaWRlbnQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAg
ICBlbHNlCisgICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaWRlbnQsIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpLCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAg
ICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKSkg
eworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwo
KTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7
CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25h
cnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9w
ZXJ0eUNhY2hpbmcoKQorICAgICAgICAgICAgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5
U2xvdDo6TmV3UHJvcGVydHkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNE
aWN0aW9uYXJ5KCkgJiYgc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPnByb3BlcnR5U3RvcmFnZUNh
cGFjaXR5KCkgPT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSB7CisgICAg
ICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBvZiB0aGUgbWV0
aG9kcyB3ZSBjYWxsCisgICAgICAgICAgICAgICAgICAgIC8vIGJlbG93IG1heSBHQy4KKyAgICAg
ICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGlu
dF9vcF9wdXRfYnlfaWQpOworCisgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZVByb3RvdHlw
ZUNoYWluKGV4ZWMsIGJhc2VDZWxsKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgICAgIEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVj
dHVyZS0+cHJldmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5k
ID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGNbNl0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZ2xv
YmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAg
ICAgICAgICAgICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5
cGVDaGFpbihleGVjKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsKKyAgICAg
ICAgICAgICAgICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAgICAgICAg
ICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjaGFp
bik7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0u
dS5vcGVyYW5kKQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51
Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0
aW9uX25vcm1hbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50
X29wX3B1dF9ieV9pZCk7CisgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAor
ICAgICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLCBzdHJ1Y3R1cmUpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3Qu
Y2FjaGVkT2Zmc2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICB9CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNM
KGhlbHBlcl9kZWxfYnlfaWQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0
ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7CisgICAgYm9vbCBjb3Vs
ZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VP
YmplY3QsIGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpKTsKKyAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVC
bG9jay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJv
cihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKK3sK
KyAgICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmco
KSkpIHsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5m
YXN0R2V0T3duUHJvcGVydHkoZXhlYywgYXNTdHJpbmcoc3Vic2NyaXB0KS0+dmFsdWUoZXhlYykp
KQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgaWYgKHN1YnNj
cmlwdC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50
MzIoKTsKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNl
VmFsdWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc1N0cmluZyhiYXNl
VmFsdWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0pTQnl0
ZUFycmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5k
ZXgoaSkpCisgICAgICAgICAgICByZXR1cm4gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5k
ZXgoZXhlYywgaSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVj
LCBpKTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3Jp
cHQudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZhbHVlLmdl
dChleGVjLCBwcm9wZXJ0eSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYnlf
dmFsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9w
X2dldF9ieV92YWwsIGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0
X2FyZ3VtZW50X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgYXJn
dW1lbnRzID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICghYXJndW1lbnRzKSB7Cisg
ICAgICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKGdsb2JhbERhdGEsIGV4ZWMpOwor
ICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgTExJTlRfT1AoMikgPSBh
cmd1bWVudHM7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOworICAgIH0KKyAgICAKKyAgICBM
TElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgYXJndW1lbnRzLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X2J5X3BuYW1lKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIExMSU5U
X09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hF
TFBFUl9ERUNMKGhlbHBlcl9wdXRfYnlfdmFsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBK
U1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUg
dmFsdWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBpZiAoTElLRUxZKHN1
YnNjcmlwdC5pc1VJbnQzMigpKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFz
VUludDMyKCk7CisgICAgICAgIGlmIChpc0pTQXJyYXkoYmFzZVZhbHVlKSkgeworICAgICAgICAg
ICAgSlNBcnJheSoganNBcnJheSA9IGFzQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlm
IChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkKKyAgICAgICAgICAgICAgICBqc0FycmF5LT5zZXRJ
bmRleChnbG9iYWxEYXRhLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgSlNBcnJheTo6cHV0QnlJbmRleChqc0FycmF5LCBleGVjLCBpLCB2YWx1ZSk7CisgICAg
ICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNKU0J5dGVBcnJh
eShiYXNlVmFsdWUpCisgICAgICAgICAgICAmJiBhc0J5dGVBcnJheShiYXNlVmFsdWUpLT5jYW5B
Y2Nlc3NJbmRleChpKSkgeworICAgICAgICAgICAgSlNCeXRlQXJyYXkqIGpzQnl0ZUFycmF5ID0g
YXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc0ludDMyKCkp
IHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0SW5kZXgoaSwgdmFsdWUuYXNJbnQz
MigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJy
YXktPnNldEluZGV4KGksIHZhbHVlLmFzTnVtYmVyKCkpOworICAgICAgICAgICAgICAgIExMSU5U
X0VORCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJhc2VWYWx1ZS5wdXQo
ZXhlYywgaSwgdmFsdWUpOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAg
SWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQudG9TdHJpbmcoZXhlYyktPnZhbHVl
KGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBQdXRQcm9wZXJ0eVNs
b3Qgc2xvdChleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpOworICAgIGJhc2VWYWx1
ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2RlbF9ieV92YWwpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOwor
ICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFzZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAg
IAorICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAg
CisgICAgYm9vbCBjb3VsZERlbGV0ZTsKKyAgICAKKyAgICB1aW50MzJfdCBpOworICAgIGlmIChz
dWJzY3JpcHQuZ2V0VUludDMyKGkpKQorICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3Qt
Pm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5QnlJbmRleChiYXNlT2JqZWN0LCBleGVjLCBp
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAg
IElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1
ZShleGVjKSk7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgICAgICBjb3Vs
ZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VP
YmplY3QsIGV4ZWMsIHByb3BlcnR5KTsKKyAgICB9CisgICAgCisgICAgaWYgKCFjb3VsZERlbGV0
ZSAmJiBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RI
Uk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7
CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkucHV0KGV4ZWMsIHBjWzJdLnUub3BlcmFu
ZCwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2dldHRlcl9zZXR0ZXIpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBBU1NFUlQoTExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAg
IEpTT2JqZWN0KiBiYXNlT2JqID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAg
ICAKKyAgICBHZXR0ZXJTZXR0ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhl
Yyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgSlNWYWx1ZSBnZXR0
ZXIgPSBMTElOVF9PUCgzKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzZXR0ZXIgPSBMTElOVF9P
UCg0KS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKGdldHRlci5pc09iamVjdCgpIHx8IGdldHRlci5p
c1VuZGVmaW5lZCgpKTsKKyAgICBBU1NFUlQoc2V0dGVyLmlzT2JqZWN0KCkgfHwgc2V0dGVyLmlz
VW5kZWZpbmVkKCkpOworICAgIEFTU0VSVChnZXR0ZXIuaXNPYmplY3QoKSB8fCBzZXR0ZXIuaXNP
YmplY3QoKSk7CisgICAgCisgICAgaWYgKCFnZXR0ZXIuaXNVbmRlZmluZWQoKSkKKyAgICAgICAg
YWNjZXNzb3ItPnNldEdldHRlcihnbG9iYWxEYXRhLCBhc09iamVjdChnZXR0ZXIpKTsKKyAgICBp
ZiAoIXNldHRlci5pc1VuZGVmaW5lZCgpKQorICAgICAgICBhY2Nlc3Nvci0+c2V0U2V0dGVyKGds
b2JhbERhdGEsIGFzT2JqZWN0KHNldHRlcikpOworICAgIGJhc2VPYmotPnB1dERpcmVjdEFjY2Vz
c29yKAorICAgICAgICBnbG9iYWxEYXRhLAorICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+aWRl
bnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAgICAgICBhY2Nlc3NvciwgQWNjZXNzb3IpOwor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam1wX3Njb3Bl
cykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIHVuc2lnbmVkIGNvdW50ID0gcGNbMV0udS5v
cGVyYW5kOworICAgIFNjb3BlQ2hhaW5Ob2RlKiB0bXAgPSBleGVjLT5zY29wZUNoYWluKCk7Cisg
ICAgd2hpbGUgKGNvdW50LS0pCisgICAgICAgIHRtcCA9IHRtcC0+cG9wKCk7CisgICAgZXhlYy0+
c2V0U2NvcGVDaGFpbih0bXApOworICAgIHBjICs9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2p0cnVlKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2p0cnVlLCBMTElOVF9PUF9DKDEpLmpz
VmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJf
amZhbHNlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2pmYWxz
ZSwgIUxMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVzcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExM
SU5UX0JSQU5DSChvcF9qbGVzcywganNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNW
YWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfam5sZXNzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNI
KG9wX2pubGVzcywgIWpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2pncmVhdGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2pn
cmVhdGVyLCBqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5n
cmVhdGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3Jl
YXRlciwgIWpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9qbGVz
c2VxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEs
IGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5sZXNzZXEp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzZXEsICFq
c0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVyZXEp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXJlcSwg
anNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfam5ncmVhdGVy
ZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVy
ZXEsICFqc0xlc3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0
Y2hfaW1tKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoc2NydXRpbmVlLmlzRG91YmxlKCkp
OworICAgIGRvdWJsZSB2YWx1ZSA9IHNjcnV0aW5lZS5hc0RvdWJsZSgpOworICAgIGludDMyX3Qg
aW50VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSk7CisgICAgaW50IGRlZmF1bHRP
ZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKHZhbHVlID09IGludFZhbHVlKSB7Cisg
ICAgICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAg
IHBjICs9IGNvZGVCbG9jay0+aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFu
ZCkub2Zmc2V0Rm9yVmFsdWUoaW50VmFsdWUsIGRlZmF1bHRPZmZzZXQpOworICAgIH0gZWxzZQor
ICAgICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0cmluZykKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAg
aW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKCFzY3J1dGluZWUu
aXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBlbHNlIHsKKyAg
ICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAgICAg
cGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5kKS5v
ZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGluZWUpLT52YWx1ZShleGVjKS5pbXBsKCksIGRl
ZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25ld19mdW5jKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NFUlQoY29kZUJsb2Nr
LT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZQorICAgICAgICAgICB8fCAhY29kZUJsb2NrLT5u
ZWVkc0Z1bGxTY29wZUNoYWluKCkKKyAgICAgICAgICAgfHwgZXhlYy0+dW5jaGVja2VkUihjb2Rl
QmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpOworI2lmIExMSU5UX0hFTFBF
Ul9UUkFDSU5HCisgICAgZGF0YUxvZygiQ3JlYXRpbmcgZnVuY3Rpb24hXG4iKTsKKyNlbmRpZgor
ICAgIExMSU5UX1JFVFVSTihjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1syXS51Lm9wZXJhbmQp
LT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSkpOworfQorCitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbmV3X2Z1bmNfZXhwKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJs
b2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIocGNbMl0udS5vcGVyYW5kKTsK
KyAgICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVuY3Rpb24tPm1ha2UoZXhlYywgZXhlYy0+c2NvcGVD
aGFpbigpKTsKKyAgICAKKyAgICBpZiAoIWZ1bmN0aW9uLT5uYW1lKCkuaXNOdWxsKCkpIHsKKyAg
ICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25TY29wZU9iamVjdCA9IEpTU3RhdGlj
U2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBmdW5jdGlvbi0+bmFtZSgpLCBmdW5jLCBSZWFkT25s
eSB8IERvbnREZWxldGUpOworICAgICAgICBmdW5jLT5zZXRTY29wZShnbG9iYWxEYXRhLCBmdW5j
LT5zY29wZSgpLT5wdXNoKGZ1bmN0aW9uU2NvcGVPYmplY3QpKTsKKyAgICB9CisgICAgCisgICAg
TExJTlRfUkVUVVJOKGZ1bmMpOworfQorCitzdGF0aWMgSGVscGVyUmV0dXJuVHlwZSBoYW5kbGVI
b3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNWYWx1ZSBj
YWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBFeGVjU3RhdGUqIGV4
ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29w
ZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29kZUJsb2Nr
KDApOworCisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgQ2FsbERhdGEg
Y2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoY2FsbGVl
LCBjYWxsRGF0YSk7CisgICAgCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxsVHlwZUpT
KTsKKyAgICAKKyAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSG9zdCkgeworICAgICAg
ICAgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVjb2RlKGNh
bGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgICAgICAKKyAgICAg
ICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0
PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgICAgIH0KKyAgICAgICAgCisj
aWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAgICAgICAgZGF0YUxvZygiQ2FsbCBjYWxsZWUgaXMg
bm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKwor
ICAgICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKTsKKyAgICAgICAgTExJTlRf
Q0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhlYywgY2FsbGVl
KSk7CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAg
CisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIENvbnN0cnVjdFR5cGUgY29u
c3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEoY2FsbGVlLCBjb25zdHJ1Y3REYXRhKTsKKyAg
ICAKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlSlMpOworICAgIAor
ICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVIb3N0KSB7CisgICAgICAgIGds
b2JhbERhdGEuaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjb25zdHJ1Y3RE
YXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisKKyAgICAgICAgTExJTlRfQ0FMTF9S
RVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgCisjaWYgTExJTlRfSEVMUEVSX1RSQUNJTkcKKyAg
ICBkYXRhTG9nKCJDb25zdHJ1Y3RvciBjYWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBj
YWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBl
ID09IENvbnN0cnVjdFR5cGVOb25lKTsKKyAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBj
cmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKK30KKworaW5saW5lIEhl
bHBlclJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rp
b24qIHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUgY2FsbGVlQXNWYWx1
ZSwgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCit7CisjaWYgTExJTlRfSEVM
UEVSX1RSQUNJTkcKKyAgICBkYXRhTG9nKCJQZXJmb3JtaW5nIGNhbGwgd2l0aCByZWNvcmRlZCBQ
QyA9ICVwXG4iLCBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpLT5jdXJyZW50VlBDKCkpOworI2Vu
ZGlmCisKKyAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihj
YWxsZWVBc1ZhbHVlKTsKKyAgICBpZiAoIWNhbGxlZUFzRnVuY3Rpb25DZWxsKQorICAgICAgICBy
ZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgcGMsIGNhbGxlZUFzVmFsdWUsIGtpbmQp
OworICAgIAorICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oY2FsbGVlQXNGdW5j
dGlvbkNlbGwpOworICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZSA9IGNhbGxlZS0+c2NvcGVVbmNo
ZWNrZWQoKTsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSAqc2NvcGUtPmdsb2JhbERh
dGE7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihzY29wZSk7CisgICAgRXhlY3V0YWJs
ZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAgICAKKyAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7
CisgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGNvZGVQdHIg
PSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7
CisgICAgZWxzZSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAg
ICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVj
Q2FsbGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOworICAgICAgICBpZiAoZXJyb3IpCisgICAg
ICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCksIHBjLCBl
cnJvcik7CisgICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRl
ZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICAgICAg
aWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIGNvZGVQ
dHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0Zv
cihraW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhl
Y3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAg
IH0KKyAgICAKKyAgICBpZiAoY2FsbExpbmtJbmZvKSB7CisgICAgICAgIGlmIChjYWxsTGlua0lu
Zm8tPmlzT25MaXN0KCkpCisgICAgICAgICAgICBjYWxsTGlua0luZm8tPnJlbW92ZSgpOworICAg
ICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZXIgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwor
ICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQoZ2xvYmFsRGF0YSwgZXhlY0NhbGxlci0+
Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlu
a0luZm8tPmxhc3RTZWVuQ2FsbGVlLnNldChnbG9iYWxEYXRhLCBleGVjQ2FsbGVyLT5jb2RlQmxv
Y2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+
bWFjaGluZUNvZGVUYXJnZXQgPSBjb2RlUHRyOworICAgICAgICBpZiAoY29kZUJsb2NrKQorICAg
ICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKGNhbGxMaW5rSW5mbyk7CisgICAg
fQorICAgIAorICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCBjb2RlUHRyLmV4
ZWN1dGFibGVBZGRyZXNzKCkpOworfQorCitpbmxpbmUgSGVscGVyUmV0dXJuVHlwZSBnZW5lcmlj
Q2FsbChFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBraW5kKQoreworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAgYSBj
YWxsIGZyYW1lLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUg
aXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gSWYgcG9zc2libGUsIGxpbmsgdGhlIGNhbGwncyBp
bmxpbmUgY2FjaGUuCisgICAgLy8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRk
cmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3IGNhbGwgZnJhbWUuCisgICAgCisgICAgSlNWYWx1ZSBj
YWxsZWVBc1ZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0
YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVj
Q2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOwor
ICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVl
QXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICAKKyAg
ICBBU1NFUlQocGNbNF0udS5jYWxsTGlua0luZm8pOworICAgIHJldHVybiBzZXRVcENhbGwoZXhl
Y0NhbGxlZSwgcGMsIGtpbmQsIGNhbGxlZUFzVmFsdWUsIHBjWzRdLnUuY2FsbExpbmtJbmZvKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGwpCit7CisgICAgTExJTlRfQkVHSU5f
Tk9fU0VUX1BDKCk7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2Fs
bCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jb25zdHJ1Y3QpCit7CisgICAgTExJ
TlRfQkVHSU5fTk9fU0VUX1BDKCk7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBD
b2RlRm9yQ29uc3RydWN0KTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfdmFy
YXJncykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAg
Ly8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFy
Z3VtZW50cy4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0
IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBh
ZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVl
IGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUgPSBsb2FkVmFyYXJncygKKyAgICAgICAgZXhlYywgJmdsb2JhbERh
dGEuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLAorICAgICAgICBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHBjWzRdLnUub3BlcmFuZCk7CisgICAg
TExJTlRfQ0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpOworICAgIAorICAgIGV4ZWNDYWxs
ZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAg
ICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjLT51bmNoZWNrZWRS
KFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJf
dD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykpOworICAgIAorICAgIHJldHVy
biBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsK
K30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCkKK3sKKyAgICBMTElOVF9C
RUdJTl9OT19TRVRfUEMoKTsKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgx
KS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBj
WzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZy
YW1lKGV4ZWMpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxs
ZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMt
PnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMoYml0d2lzZV9jYXN0
PEluc3RydWN0aW9uKj4oJmxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgZXhlY0Nh
bGxlZS0+c2V0Q29kZUJsb2NrKDApOworICAgIGV4ZWMtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxl
OjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90PihwYyArIE9QQ09E
RV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7CisgICAgCisgICAgaWYgKCFpc0hvc3RGdW5jdGlvbihj
YWxsZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpCisgICAgICAgIHJldHVybiBzZXRVcENhbGwo
ZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKKyAgICAKKyAgICBn
bG9iYWxEYXRhLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBldmFsKGV4ZWNDYWxsZWUpOworICAgIExM
SU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90
ZWFyX29mZl9hY3RpdmF0aW9uKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQVNTRVJUKGV4
ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIEpTVmFsdWUgYWN0
aXZhdGlvblZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIGlmICghYWN0aXZhdGlv
blZhbHVlKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9k
aWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpIHsKKyAg
ICAgICAgICAgIGlmICghZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAgICAg
ICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT50ZWFyT2ZmKGV4ZWMpOworICAgICAgICB9CisgICAg
ICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRpb24gPSBh
c0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVlKTsKKyAgICBhY3RpdmF0aW9uLT50ZWFyT2ZmKGds
b2JhbERhdGEpOworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZp
ZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpCisgICAgICAg
IGFzQXJndW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihnbG9iYWxEYXRhLCBhY3RpdmF0
aW9uKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rl
YXJfb2ZmX2FyZ3VtZW50cykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEFTU0VSVChleGVj
LT5jb2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygpICYmICFleGVjLT5jb2RlQmxvY2soKS0+bmVl
ZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBhc0FyZ3VtZW50cyhleGVjLT51bmNoZWNrZWRSKHVu
bW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpLT50
ZWFyT2ZmKGV4ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9IRUxQRVJfREVDTCho
ZWxwZXJfc3RyY2F0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpz
U3RyaW5nKGV4ZWMsICZMTElOVF9PUCgyKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl90b19wcmltaXRpdmUpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBMTElOVF9SRVRVUk4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9QcmltaXRpdmUoZXhl
YykpOworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X3BuYW1lcykKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAg
ICBpZiAodi5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIHBjICs9IHBjWzVdLnUub3Bl
cmFuZDsKKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBv
ID0gdi50b09iamVjdChleGVjKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVj
dHVyZSgpOworICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0
b3IgPSBzdHJ1Y3R1cmUtPmVudW1lcmF0aW9uQ2FjaGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlO
YW1lSXRlcmF0b3IgfHwganNQcm9wZXJ0eU5hbWVJdGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hh
aW4oKSAhPSBzdHJ1Y3R1cmUtPnByb3RvdHlwZUNoYWluKGV4ZWMpKQorICAgICAgICBqc1Byb3Bl
cnR5TmFtZUl0ZXJhdG9yID0gSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8p
OworICAgIAorICAgIExMSU5UX09QKDEpID0gSlNWYWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9y
KTsKKyAgICBMTElOVF9PUCgyKSA9IEpTVmFsdWUobyk7CisgICAgTExJTlRfT1AoMykgPSBSZWdp
c3Rlcjo6d2l0aEludCgwKTsKKyAgICBMTElOVF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpz
UHJvcGVydHlOYW1lSXRlcmF0b3ItPnNpemUoKSk7CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xF
TkdUSChvcF9nZXRfcG5hbWVzKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX25leHRfcG5hbWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU09i
amVjdCogYmFzZSA9IGFzT2JqZWN0KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CisgICAgSlNTdHJp
bmcqIHByb3BlcnR5ID0gYXNTdHJpbmcoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBpZiAo
YmFzZS0+aGFzUHJvcGVydHkoZXhlYywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eS0+dmFsdWUo
ZXhlYykpKSkgeworICAgICAgICAvLyBHbyB0byB0YXJnZXQuCisgICAgICAgIHBjICs9IHBjWzZd
LnUub3BlcmFuZDsKKyAgICB9IC8vIEVsc2UsIGRvbid0IGNoYW5nZSB0aGUgUEMsIHNvIHRoZSBp
bnRlcnByZXRlciB3aWxsIHJlbG9vcC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3B1c2hfc2NvcGUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBK
U1ZhbHVlIHYgPSBMTElOVF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIG8gPSB2LnRv
T2JqZWN0KGV4ZWMpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIExM
SU5UX09QKDEpID0gbzsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4o
KS0+cHVzaChvKSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9wb3Bfc2NvcGUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBleGVjLT5z
ZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cG9wKCkpOworICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9uZXdfc2NvcGUpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9j
aygpOworICAgIEpTT2JqZWN0KiBzY29wZSA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShl
eGVjLCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwgTExJTlRfT1AoMyku
anNWYWx1ZSgpLCBEb250RGVsZXRlKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNj
b3BlQ2hhaW4oKS0+cHVzaChzY29wZSkpOworICAgIExMSU5UX1JFVFVSTihzY29wZSk7Cit9CisK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90aHJvdykKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIExMSU5UX1RIUk9XKExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKTsKK30KKworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIExMSU5UX1RIUk9XKGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIExMSU5UX09Q
X0MoMSkuanNWYWx1ZSgpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOworfQorCitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZGVidWcpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBp
bnQgZGVidWdIb29rSUQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgaW50IGZpcnN0TGluZSA9IHBj
WzJdLnUub3BlcmFuZDsKKyAgICBpbnQgbGFzdExpbmUgPSBwY1szXS51Lm9wZXJhbmQ7CisgICAg
CisgICAgZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+ZGVidWcoZXhlYywgc3RhdGljX2Nhc3Q8RGVi
dWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGluZSk7CisgICAgCisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX3dpbGxf
Y2FsbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQcm9m
aWxlclJlZmVyZW5jZSgpKS0+d2lsbEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1ZSgp
KTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2Zp
bGVfZGlkX2NhbGwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICAoKlByb2ZpbGVyOjplbmFi
bGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPmRpZEV4ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNW
YWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxM
SW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRIZWxwZXJzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50SGVscGVycy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IExMSW50SGVscGVyc19oCisjZGVmaW5lIExMSW50SGVscGVyc19oCisKKyNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBFTkFCTEUo
TExJTlQpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5z
dHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKK3R5cGVkZWYgaW50NjRfdCBIZWxwZXJS
ZXR1cm5UeXBlOworCitleHRlcm4gIkMiIEhlbHBlclJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3Bl
cmFuZChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5k
KTsKK2V4dGVybiAiQyIgSGVscGVyUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1ZShFeGVjU3Rh
dGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKKworI2RlZmlu
ZSBMTElOVF9IRUxQRVJfREVDTChuYW1lKSBcCisgICAgZXh0ZXJuICJDIiBIZWxwZXJSZXR1cm5U
eXBlIGxsaW50XyMjbmFtZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKKworTExJ
TlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJvbG9ndWUpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2Vf
cHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVSX0RFQ0wodHJhY2VfcHJv
bG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZV9h
cml0eUNoZWNrX2Zvcl9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tf
Zm9yX2NvbnN0cnVjdCk7CitMTElOVF9IRUxQRVJfREVDTCh0cmFjZSk7CitMTElOVF9IRUxQRVJf
REVDTChzcGVjaWFsX3RyYWNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGVudHJ5X29zcik7CitMTElO
VF9IRUxQRVJfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfSEVMUEVS
X0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfSEVMUEVSX0RF
Q0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVS
X0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElO
VF9IRUxQRVJfREVDTChsb29wX29zcik7CitMTElOVF9IRUxQRVJfREVDTChyZXBsYWNlKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY29uc3Ry
dWN0X2FyaXR5Q2hlY2spOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NyZWF0ZV9hY3RpdmF0
aW9uKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfYXJndW1lbnRzKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9jcmVhdGVfdGhpcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY29udmVydF90aGlzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfb2JqZWN0KTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9uZXdfYXJyYXkpOworTExJTlRfSEVMUEVSX0RFQ0wo
aGVscGVyX25ld19hcnJheV9idWZmZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25ld19y
ZWdleHApOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25vdCk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25lcSk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfc3RyaWN0ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX25zdHJp
Y3RlcSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfbGVzcyk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfbGVzc2VxKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyKTsKK0xM
SU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9ncmVhdGVyZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3ByZV9pbmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3ByZV9kZWMpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX3Bvc3RfaW5jKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9w
b3N0X2RlYyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdG9fanNudW1iZXIpOworTExJTlRf
SEVMUEVSX0RFQ0woaGVscGVyX25lZ2F0ZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfYWRk
KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9tdWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVs
cGVyX3N1Yik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGl2KTsKK0xMSU5UX0hFTFBFUl9E
RUNMKGhlbHBlcl9tb2QpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2xzaGlmdCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfcnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl91
cnNoaWZ0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXRhbmQpOworTExJTlRfSEVMUEVS
X0RFQ0woaGVscGVyX2JpdG9yKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9iaXR4b3IpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2JpdG5vdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfY2hlY2tfaGFzX2luc3RhbmNlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9pbnN0YW5j
ZW9mKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl90eXBlb2YpOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX2lzX3VuZGVmaW5lZCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfYm9v
bGVhbik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfbnVtYmVyKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9pc19zdHJpbmcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2lzX29i
amVjdCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfaXNfZnVuY3Rpb24pOworTExJTlRfSEVM
UEVSX0RFQ0woaGVscGVyX2luKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlKTsK
K0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3NraXApOworTExJTlRfSEVMUEVSX0RF
Q0woaGVscGVyX3Jlc29sdmVfZ2xvYmFsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNv
bHZlX2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX2Zv
cl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNv
bHZlX2Jhc2UpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2Vuc3VyZV9wcm9wZXJ0eV9leGlz
dHMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9yZXNvbHZlX3dpdGhfdGhpcyk7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfZ2V0X2J5X2lkKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9nZXRfYXJndW1l
bnRzX2xlbmd0aCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2lkKTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9kZWxfYnlfaWQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X2dldF9ieV92YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9hcmd1bWVudF9ieV92
YWwpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2dldF9ieV9wbmFtZSk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfcHV0X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfZGVs
X2J5X3ZhbCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHV0X2J5X2luZGV4KTsKK0xMSU5U
X0hFTFBFUl9ERUNMKGhlbHBlcl9wdXRfZ2V0dGVyX3NldHRlcik7CitMTElOVF9IRUxQRVJfREVD
TChoZWxwZXJfam1wX3Njb3Blcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfanRydWUpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pmYWxzZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfamxlc3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pubGVzcyk7CitMTElOVF9IRUxQ
RVJfREVDTChoZWxwZXJfamdyZWF0ZXIpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3Jl
YXRlcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfamxlc3NlcSk7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfam5sZXNzZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2pncmVhdGVy
ZXEpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2puZ3JlYXRlcmVxKTsKK0xMSU5UX0hFTFBF
Ul9ERUNMKGhlbHBlcl9zd2l0Y2hfaW1tKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9zd2l0
Y2hfY2hhcik7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfc3dpdGNoX3N0cmluZyk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfbmV3X2Z1bmMpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVy
X25ld19mdW5jX2V4cCk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfY2FsbCk7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfY29uc3RydWN0KTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9j
YWxsX3ZhcmFyZ3MpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX2NhbGxfZXZhbCk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfdGVhcl9vZmZfYWN0aXZhdGlvbik7CitMTElOVF9IRUxQRVJf
REVDTChoZWxwZXJfdGVhcl9vZmZfYXJndW1lbnRzKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBl
cl9zdHJjYXQpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3RvX3ByaW1pdGl2ZSk7CitMTElO
VF9IRUxQRVJfREVDTChoZWxwZXJfZ2V0X3BuYW1lcyk7CitMTElOVF9IRUxQRVJfREVDTChoZWxw
ZXJfbmV4dF9wbmFtZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfcHVzaF9zY29wZSk7CitM
TElOVF9IRUxQRVJfREVDTChoZWxwZXJfcG9wX3Njb3BlKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhl
bHBlcl9wdXNoX25ld19zY29wZSk7CitMTElOVF9IRUxQRVJfREVDTChoZWxwZXJfdGhyb3cpOwor
TExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Rocm93X3JlZmVyZW5jZV9lcnJvcik7CitMTElOVF9I
RUxQRVJfREVDTChoZWxwZXJfZGVidWcpOworTExJTlRfSEVMUEVSX0RFQ0woaGVscGVyX3Byb2Zp
bGVfd2lsbF9jYWxsKTsKK0xMSU5UX0hFTFBFUl9ERUNMKGhlbHBlcl9wcm9maWxlX2RpZF9jYWxs
KTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJ
TlQpCisKKyNlbmRpZiAvLyBMTEludEhlbHBlcnNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKKyNk
ZWZpbmUgTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKKworI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgi
CisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRlIDx3dGYvSW5saW5lQXNtLmg+
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBDUFUoWDg2KQorI2RlZmluZSBPRkZM
SU5FX0FTTV9YODYgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fWDg2IDAKKyNlbmRpZgor
CisjaWYgQ1BVKEFSTV9USFVNQjIpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDEKKyNlbHNl
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDAKKyNlbmRpZgorCisjaWYgIUFTU0VSVF9ESVNB
QkxFRAorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAxCisjZWxzZQorI2RlZmlu
ZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIENQVShCSUdfRU5E
SUFOKQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDEKKyNlbHNlCisjZGVmaW5lIE9G
RkxJTkVfQVNNX0JJR19FTkRJQU4gMAorI2VuZGlmCisKKyNpZiBMTElOVF9PU1JfVE9fSklUCisj
ZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVf
QVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRfRVhFQ1VUSU9OX1RSQUNJTkcK
KyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMQorI2Vsc2UKKyNkZWZpbmUg
T0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlmCisKKyNpZiBMTElOVF9BTFdB
WVNfQUxMT0NBVEVfU0xPVworI2RlZmluZSBPRkZMSU5FX0FTTV9BTFdBWVNfQUxMT0NBVEVfU0xP
VyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BTFdBWVNfQUxMT0NBVEVfU0xPVyAwCisj
ZW5kaWYKKworI2lmIENQVShBUk1fVEhVTUIyKQorI2RlZmluZSBPRkZMSU5FX0FTTV9HTE9CQUxf
TEFCRUwobGFiZWwpICAgICAgICAgIFwKKyAgICAiLmdsb2JsICIgU1lNQk9MX1NUUklORyhsYWJl
bCkgIlxuIiAgICAgICAgICBcCisgICAgSElERV9TWU1CT0wobmFtZSkgIlxuIiAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICIudGh1bWJcbiIgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5DX1BBUkFNKGxhYmVsKSAiXG4i
ICBcCisgICAgU1lNQk9MX1NUUklORyhsYWJlbCkgIjpcbiIKKyNlbHNlCisjZGVmaW5lIE9GRkxJ
TkVfQVNNX0dMT0JBTF9MQUJFTChsYWJlbCkgICAgICAgICBcCisgICAgIi5nbG9ibCAiIFNZTUJP
TF9TVFJJTkcobGFiZWwpICJcbiIgICAgICAgICBcCisgICAgSElERV9TWU1CT0wobmFtZSkgIlxu
IiAgICAgICAgICAgICAgICAgICAgICBcCisgICAgU1lNQk9MX1NUUklORyhsYWJlbCkgIjpcbiIK
KyNlbmRpZgorCisjZW5kaWYgLy8gTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiRXhlY3V0YWJsZS5oIgorI2lu
Y2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIkpJVFN0
dWJzLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUgIkpTQ2VsbC5oIgorI2luY2x1
ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJK
U0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNQcm9w
ZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5jbHVkZSAiSlNU
eXBlSW5mby5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3QuaCIKKyNpbmNsdWRlICJKdW1w
VGFibGUuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRlICJN
YXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgorI2luY2x1ZGUgIlNjb3Bl
Q2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmVDaGFp
bi5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0ltcGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUgT0ZGTElORV9BU01fT0ZGU0VU
T0YoY2xhenosIGZpZWxkKSBPQkpFQ1RfT0ZGU0VUT0YoY2xhenosIGZpZWxkKQorCitjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3IgeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCB1bnNpZ25l
ZCogZHVtbXkoKTsKK307CisKK2NvbnN0IHVuc2lnbmVkKiBMTEludE9mZnNldHNFeHRyYWN0b3I6
OmR1bW15KCkKK3sKKy8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtL2dl
bmVyYXRlX29mZnNldHNfZXh0cmFjdG9yLnJiLCBhbmQgY29udGFpbnMgY29kZQorLy8gdG8gY3Jl
YXRlIGEgdGFibGUgb2Ygb2Zmc2V0cywgc2l6ZXMsIGFuZCBhIGhlYWRlciBpZGVudGlmeWluZyB3
aGF0IGNvbWJpbmF0aW9uIG9mCisvLyBQbGF0Zm9ybS5oIG1hY3JvcyB3ZSBoYXZlIHNldC4gV2Ug
aW5jbHVkZSBpdCBpbnNpZGUgb2YgYSBtZXRob2Qgb24gTExJbnRPZmZzZXRzRXh0cmFjdG9yCisv
LyBiZWNhdXNlIHRoZSBmaWVsZHMgd2hvc2Ugb2Zmc2V0cyB3ZSdyZSBleHRyYWN0aW5nIGFyZSBt
b3N0bHkgcHJpdmF0ZS4gU28gd2UgbWFrZSB0aGVpcgorLy8gY2xhc3NlcyBmcmllbmRzIHdpdGgg
TExJbnRPZmZzZXRzRXh0cmFjdG9yLCBhbmQgaW5jbHVkZSB0aGUgaGVhZGVyIGhlcmUsIHRvIGdl
dCB0aGUgQysrCisvLyBjb21waWxlciB0byBraW5kbHkgc3RlcCBhc2lkZSBhbmQgeWllbGQgdG8g
b3VyIGJlc3QgaW50ZW50aW9ucy4KKyNpbmNsdWRlICJMTEludERlc2lyZWRPZmZzZXRzLmgiCisg
ICAgcmV0dXJuIGV4dHJhY3RvclRhYmxlOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworaW50
IG1haW4oaW50LCBjaGFyKiopCit7CisgICAgLy8gT3V0IG9mIGFuIGFidW5kYW5jZSBvZiBjYXV0
aW9uLCBtYWtlIHN1cmUgdGhhdCBMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkgaXMgbGl2
ZSwKKyAgICAvLyBhbmQgdGhlIGV4dHJhY3RvclRhYmxlIGlzIGxpdmUsIHRvby4KKyAgICBwcmlu
dGYoIiVwXG4iLCBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSk7CisgICAgcmV0
dXJuIDA7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5r
cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRU
aHVua3MuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJMTEludFRodW5rcy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSlNJ
bnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCisjaW5jbHVkZSAiTG93TGV2
ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKwor
c3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEsIHZvaWQgKCp0YXJnZXQpKCkpCit7CisgICAgSlNJbnRlcmZh
Y2VKSVQgaml0OworICAgIAorICAgIC8vIEZJWE1FOiB0aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVy
IHdheSB0byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20gbm90IHN1cmUgSSBjYXJlLgorICAgIGppdC5t
b3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1tUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFy
Z2V0KSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VK
SVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBMaW5rQnVmZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRh
LCAmaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAgIHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6
ZUNvZGUoKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5
VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0
cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAg
IHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlv
bl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1
bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEs
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhK
dW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVj
ayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRo
SnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2V2YWxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2Vt
YmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRh
LCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxM
SW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRUaHVua3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJ
bnRUaHVua3NfaAorI2RlZmluZSBMTEludFRodW5rc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZv
cm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29k
ZVJlZi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRhOworCituYW1l
c3BhY2UgTExJbnQgeworCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50
cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBm
dW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJh
dG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0
YSopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShM
TElOVCkKKworI2VuZGlmIC8vIExMSW50VGh1bmtzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20J
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjM4MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisj
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworCisjIENyYXNoIGNvdXJzZSBvbiB0aGUgbGFuZ3VhZ2UgdGhh
dCB0aGlzIGlzIHdyaXR0ZW4gaW4gKHdoaWNoIEkganVzdCBjYWxsCisjICJhc3NlbWJseSIgZXZl
biB0aG91Z2ggaXQncyBtb3JlIHRoYW4gdGhhdCk6CisjCisjIC0gTW9zdGx5IGdhcy1zdHlsZSBv
cGVyYW5kIG9yZGVyaW5nLiBUaGUgbGFzdCBvcGVyYW5kIHRlbmRzIHRvIGJlIHRoZQorIyAgIGRl
c3RpbmF0aW9uLiBTbyAiYSA6PSBiIiBpcyB3cml0dGVuIGFzICJtb3YgYiwgYSIuIEJ1dCB1bmxp
a2UgZ2FzLAorIyAgIGNvbXBhcmlzb25zIGFyZSBpbi1vcmRlciwgc28gImlmIChhIDwgYikiIGlz
IHdyaXR0ZW4gYXMKKyMgICAiYmlsdCBhLCBiLCAuLi4iLgorIworIyAtICJiIiA9IGJ5dGUsICJo
IiA9IDE2LWJpdCB3b3JkLCAiaSIgPSAzMi1iaXQgd29yZCwgInAiID0gcG9pbnRlci4KKyMgICBD
dXJyZW50bHkgdGhpcyBpcyBqdXN0IDMyLWJpdCBzbyAiaSIgYW5kICJwIiBhcmUgaW50ZXJjaGFu
Z2VhYmxlCisjICAgZXhjZXB0IHdoZW4gYW4gb3Agc3VwcG9ydHMgb25lIGJ1dCBub3QgdGhlIG90
aGVyLgorIworIyAtIEluIGdlbmVyYWwsIHZhbGlkIG9wZXJhbmRzIGZvciBtYWNybyBpbnZvY2F0
aW9ucyBhbmQgaW5zdHJ1Y3Rpb25zIGFyZQorIyAgIHJlZ2lzdGVycyAoZWcgInQwIiksIGFkZHJl
c3NlcyAoZWcgIjRbdDBdIiksIGJhc2UtaW5kZXggYWRkcmVzc2VzCisjICAgKGVnICI3W3QwLCB0
MSwgMl0iKSwgYWJzb2x1dGUgYWRkcmVzc2VzIChlZyAiMHhhMDAwMDAwMFtdIiksIG9yIGxhYmVs
cworIyAgIChlZyAiX2ZvbyIgb3IgIi5mb28iKS4gTWFjcm8gaW52b2NhdGlvbnMgY2FuIGFsc28g
dGFrZSBhbm9ueW1vdXMKKyMgICBtYWNyb3MgYXMgb3BlcmFuZHMuIEluc3RydWN0aW9ucyBjYW5u
b3QgdGFrZSBhbm9ueW1vdXMgbWFjcm9zLgorIworIyAtIExhYmVscyBtdXN0IGhhdmUgbmFtZXMg
dGhhdCBiZWdpbiB3aXRoIGVpdGhlciAiXyIgb3IgIi4iLiAgQSAiLiIgbGFiZWwKKyMgICBpcyBs
b2NhbCBhbmQgZ2V0cyByZW5hbWVkIGJlZm9yZSBjb2RlIGdlbiB0byBtaW5pbWl6ZSBuYW1lc3Bh
Y2UKKyMgICBwb2xsdXRpb24uIEEgIl8iIGxhYmVsIGlzIGFuIGV4dGVybiBzeW1ib2wgKGkuZS4g
Ii5nbG9ibCIpLiBUaGUgIl8iCisjICAgbWF5IG9yIG1heSBub3QgYmUgcmVtb3ZlZCBkdXJpbmcg
Y29kZSBnZW4gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGFzbQorIyAgIGNvbnZlbnRpb25zIGZv
ciBDIG5hbWUgbWFuZ2xpbmcgb24gdGhlIHRhcmdldCBwbGF0Zm9ybSBtYW5kYXRlIGEgIl8iCisj
ICAgcHJlZml4LgorIworIyAtIEEgIm1hY3JvIiBpcyBhIGxhbWJkYSBleHByZXNzaW9uLCB3aGlj
aCBtYXkgYmUgZWl0aGVyIGFub255bW91cyBvcgorIyAgIG5hbWVkLiBCdXQgdGhpcyBoYXMgY2F2
ZWF0cy4gIm1hY3JvIiBjYW4gdGFrZSB6ZXJvIG9yIG1vcmUgYXJndW1lbnRzLAorIyAgIHdoaWNo
IG1heSBiZSBtYWNyb3Mgb3IgYW55IHZhbGlkIG9wZXJhbmRzLCBidXQgaXQgY2FuIG9ubHkgcmV0
dXJuCisjICAgY29kZS4gQnV0IHlvdSBjYW4gZG8gVHVyaW5nLWNvbXBsZXRlIHRoaW5ncyB2aWEg
Y29udGludWF0aW9uIHBhc3NpbmcKKyMgICBzdHlsZTogIm1hY3JvIGZvbyAoYSwgYikgYihhKSBl
bmQgZm9vKGZvbywgZm9vKSIuIEFjdHVhbGx5LCBkb24ndCBkbworIyAgIHRoYXQsIHNpbmNlIHlv
dSdsbCBqdXN0IGNyYXNoIHRoZSBhc3NlbWJsZXIuCisjCisjIC0gQW4gImlmIiBpcyBhIGNvbmRp
dGlvbmFsIG9uIHNldHRpbmdzLiBBbnkgaWRlbnRpZmllciBzdXBwbGllZCBpbiB0aGUKKyMgICBw
cmVkaWNhdGUgb2YgYW4gImlmIiBpcyBhc3N1bWVkIHRvIGJlIGEgI2RlZmluZSB0aGF0IGlzIGF2
YWlsYWJsZQorIyAgIGR1cmluZyBjb2RlIGdlbi4gU28geW91IGNhbid0IHVzZSAiaWYiIGZvciBj
b21wdXRhdGlvbiBpbiBhIG1hY3JvLCBidXQKKyMgICB5b3UgY2FuIHVzZSBpdCB0byBzZWxlY3Qg
ZGlmZmVyZW50IHBpZWNlcyBvZiBjb2RlIGZvciBkaWZmZXJlbnQKKyMgICBwbGF0Zm9ybXMuCisj
CisjIC0gQXJndW1lbnRzIHRvIG1hY3JvcyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIHJhdGhlciB0
aGFuIGR5bmFtaWMgc2NvcGluZy4KKyMgICBDb25zdCdzIGFsc28gZm9sbG93IGxleGljYWwgc2Nv
cGluZyBhbmQgbWF5IG92ZXJyaWRlIChoaWRlKSBhcmd1bWVudHMKKyMgICBvciBvdGhlciBjb25z
dHMuIEFsbCB2YXJpYWJsZXMgKGFyZ3VtZW50cyBhbmQgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQK
KyMgICB0byBvcGVyYW5kcy4gQWRkaXRpb25hbGx5LCBhcmd1bWVudHMgKGJ1dCBub3QgY29uc3Rh
bnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBtYWNyb3MuCisKKworIyBUaGVzZSBkZWNsYXJhdGlv
bnMgbXVzdCBtYXRjaCBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaC4KK2NvbnN0IENhbGxGcmFt
ZUhlYWRlclNpemUgPSA0OAorY29uc3QgQXJndW1lbnRDb3VudCA9IC00OAorY29uc3QgQ2FsbGVy
RnJhbWUgPSAtNDAKK2NvbnN0IENhbGxlZSA9IC0zMgorY29uc3QgU2NvcGVDaGFpbiA9IC0yNAor
Y29uc3QgUmV0dXJuUEMgPSAtMTYKK2NvbnN0IENvZGVCbG9jayA9IC04CisKK2NvbnN0IFRoaXNB
cmd1bWVudE9mZnNldCA9IC1DYWxsRnJhbWVIZWFkZXJTaXplIC0gOAorCisjIERlY2xhcmUgc29t
ZSBhbGlhc2VzIGZvciB0aGUgcmVnaXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAor
CisjIE9mZnNldHMgbmVlZGVkIGZvciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRp
b24uCitpZiBCSUdfRU5ESUFOCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBh
eWxvYWRPZmZzZXQgPSA0CitlbHNlCisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0
IFBheWxvYWRPZmZzZXQgPSAwCitlbmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFu
dHMuCitjb25zdCBJbnQzMlRhZyA9IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51
bGxUYWcgPSAtMworY29uc3QgVW5kZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQor
Y29uc3QgRW1wdHlWYWx1ZVRhZyA9IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29u
c3QgTG93ZXN0VGFnID0gRGVsZXRlZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25z
dCBTdHJpbmdUeXBlID0gNQorY29uc3QgT2JqZWN0VHlwZSA9IDEwCisKKyMgVHlwZSBmbGFncyBj
b25zdGFudHMuCitjb25zdCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVt
ZW50c0hhc0luc3RhbmNlID0gMgorY29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9
IDgKKworIyBIZWFwIGFsbG9jYXRpb24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNp
emVDbGFzc0luZGV4ID0gMworCisjIEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3Qg
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNv
bnN0YW50cy4KK2NvbnN0IEdsb2JhbENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0
IEZ1bmN0aW9uQ29kZSA9IDIKKworIyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29y
ZCBvZiB0aGUgYXJndW1lbnQgY291bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRD
b3VudCArIFRhZ09mZnNldAorCisjIFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25z
dCBWZWN0b3JTaXplT2Zmc2V0ID0gMAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisj
IFN0cmluZyBmbGFncy4KK2NvbnN0IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxp
dGllcworbWFjcm8gY3Jhc2goKQorICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3Zl
IDAsIHQwCisgICAgY2FsbCB0MAorZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAg
aWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAgY3Jhc2go
KQorICAgIC5vazoKKyAgICBlbmQKK2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NB
ZnRlckNhbGwoZGVzdGluYXRpb25SZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3Zl
IGxyLCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBvcCBkZXN0
aW5hdGlvblJlZ2lzdGVyCisgICAgZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisK
K21hY3JvIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQor
ICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAgZWxzaWYg
WDg2CisgICAgICAgIHB1c2ggc291cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9y
CisgICAgZW5kCitlbmQKKworbWFjcm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRwIGFkdmFu
Y2UgKiA0LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRo
T2Zmc2V0KHBjT2Zmc2V0KQorICAgIGxzaGlmdGkgMiwgcGNPZmZzZXQKKyAgICBhZGRwIHBjT2Zm
c2V0LCBQQworICAgIGptcCBbUENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZz
ZXQpCisgICAgbG9hZGkgcGNPZmZzZXQsIHQwCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0
KHQwKQorZW5kCisKK21hY3JvIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBBcmd1bWVu
dENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBj
Q2FsbDIoZnVuY3Rpb24sIGFyZzEsIGFyZzIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBh
cmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBv
a2UgYXJnMSwgMAorICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICBlbHNlCisgICAgICAgIGVycm9y
CisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5kCisKKyMgVGhpcyBiYXJlbHkgd29ya3Mu
IGFyZzMgYW5kIGFyZzQgc2hvdWxkIHByb2JhYmx5IGJlIGltbWVkaWF0ZXMuCittYWNybyBjQ2Fs
bDQoZnVuY3Rpb24sIGFyZzEsIGFyZzIsIGFyZzMsIGFyZzQpCisgICAgaWYgQVJNdjcKKyAgICAg
ICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBtb3ZlIGFyZzIsIHQxCisgICAgICAgIG1vdmUgYXJn
MywgdDIKKyAgICAgICAgbW92ZSBhcmc0LCB0MworICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tl
IGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisgICAgICAgIHBva2UgYXJnMywgMgorICAg
ICAgICBwb2tlIGFyZzQsIDMKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAg
Y2FsbCBmdW5jdGlvbgorZW5kCisKK21hY3JvIGNhbGxIZWxwZXIoaGVscGVyKQorICAgIGNDYWxs
MihoZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2Vu
ZAorCisjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVy
YW5kIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0uIGZyb21XaGVyZQorIyBzaG91bGQgYmUgYW4g
aW1tZWRpYXRlIGludGVnZXIgLSBhbnkgaW50ZWdlciB5b3UgbGlrZTsgdXNlIGl0IHRvIGlkZW50
aWZ5IHRoZSBwbGFjZSB5b3UncmUKKyMgZGVidWdnaW5nIGZyb20uIG9wZXJhbmQgc2hvdWxkIGxp
a2V3aXNlIGJlIGFuIGltbWVkaWF0ZSwgYW5kIHNob3VsZCBpZGVudGlmeSB0aGUgb3BlcmFuZAor
IyBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtIHlvdSdkIGxpa2UgdG8gcHJpbnQgb3V0LgorbWFj
cm8gdHJhY2VPcGVyYW5kKGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3Ry
YWNlX29wZXJhbmQsIGNmciwgUEMsIGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQ
QworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKKyMgRGVidWdnaW5nIG9wZXJhdGlvbiBpZiB5b3Un
ZCBsaWtlIHRvIHByaW50IHRoZSB2YWx1ZSBvZiBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlv
bgorIyBzdHJlYW0uIFNhbWUgYXMgdHJhY2VPcGVyYW5kKCksIGJ1dCBhc3N1bWVzIHRoYXQgdGhl
IG9wZXJhbmQgaXMgYSByZWdpc3RlciwgYW5kIHByaW50cyBpdHMKKyMgdmFsdWUuCittYWNybyB0
cmFjZVZhbHVlKGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX3Zh
bHVlLCBjZnIsIFBDLCBmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBt
b3ZlIHQxLCBjZnIKK2VuZAorCittYWNybyB0cmFjZUV4ZWN1dGlvbigpCisgICAgaWYgRVhFQ1VU
SU9OX1RSQUNJTkcKKyAgICAgICAgY2FsbEhlbHBlcihfbGxpbnRfdHJhY2UpCisgICAgZW5kCitl
bmQKKworIyBDYWxsIGEgaGVscGVyIGZvciBjYWxsIG9wY29kZXMuCittYWNybyBjYWxsQ2FsbEhl
bHBlcihhZHZhbmNlLCBoZWxwZXIsIGFjdGlvbikKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQywg
dDAKKyAgICBzdG9yZXAgdDAsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIGND
YWxsMihoZWxwZXIsIGNmciwgUEMpCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYWN0aW9uKHQwKQor
ZW5kCisKK21hY3JvIHNsb3dQYXRoRm9yQ2FsbChhZHZhbmNlLCBoZWxwZXIpCisgICAgY2FsbENh
bGxIZWxwZXIoCisgICAgICAgIGFkdmFuY2UsCisgICAgICAgIGhlbHBlciwKKyAgICAgICAgbWFj
cm8gKGNhbGxlZSkKKyAgICAgICAgICAgIGNhbGwgY2FsbGVlCisgICAgICAgICAgICBkaXNwYXRj
aEFmdGVyQ2FsbCgpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklU
KGluY3JlbWVudCwgYWN0aW9uKQorICAgIGlmIEpJVF9FTkFCTEVECisgICAgICAgIGxvYWRwIENv
ZGVCbG9ja1tjZnJdLCB0MAorICAgICAgICBiYWRkaXMgaW5jcmVtZW50LCBDb2RlQmxvY2s6Om1f
bGxpbnRFeGVjdXRlQ291bnRlclt0MF0sIC5jb250aW51ZQorICAgICAgICBhY3Rpb24oKQorICAg
IC5jb250aW51ZToKKyAgICBlbmQKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9v
cCgpCisgICAgY2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMSwKKyAgICAgICAgbWFjcm8gKCkK
KyAgICAgICAgICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisg
ICAgICAgICAgICBjQ2FsbDIoX2xsaW50X2xvb3Bfb3NyLCBjZnIsIFBDKQorICAgICAgICAgICAg
bW92ZSB0MSwgY2ZyCisgICAgICAgICAgICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAgICAgICAg
am1wIHQwCisgICAgICAgIC5yZWNvdmVyOgorICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3Vu
dCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tT
d2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAx
MCwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAgICAgIGNhbGxIZWxwZXIoX2xsaW50X3JlcGxh
Y2UpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBhc3NlcnROb3RDb25zdGFudChpbmRleCkK
KyAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWx0IGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJ
bmRleCwgb2sgZW5kKQorZW5kCisKKyMgSW5kZXgsIHRhZywgYW5kIHBheWxvYWQgbXVzdCBiZSBk
aWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QKKyMgY2hhbmdlZC4KK21hY3JvIGxvYWRD
b25zdGFudE9yVmFyaWFibGUoaW5kZXgsIHRhZywgcGF5bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgs
IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICBsb2FkaSBUYWdPZmZz
ZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2Rl
QmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lz
dGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUg
aXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJl
IGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAg
IGxvYWRwIFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRwIFBheWxv
YWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAorCisjIElu
ZGV4IGFuZCBwYXlsb2FkIG1heSBiZSB0aGUgc2FtZSByZWdpc3Rlci4gSW5kZXggbWF5IGJlIGNs
b2JiZXJlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKGluZGV4LCB0YWcsIHBh
eWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNv
bnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisu
Y29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhZworICAgIGxvYWRwIENvZGVC
bG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFt0YWddLCB0YWcK
KyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5z
IGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVl
IDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRl
eCkgPDwgMy4KKyAgICBsc2hpZnRpIDMsIGluZGV4CisgICAgYWRkcCBpbmRleCwgdGFnCisgICAg
bG9hZHAgUGF5bG9hZE9mZnNldFt0YWddLCBwYXlsb2FkCisgICAgbG9hZHAgVGFnT2Zmc2V0W3Rh
Z10sIHRhZworLmRvbmU6CitlbmQKKworbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWRUYWdDdXN0b20oaW5kZXgsIHRhZ0NoZWNrLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwg
Rmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIHRhZ0NoZWNrKFRhZ09m
ZnNldFtjZnIsIGluZGV4LCA4XSkKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgs
IDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJs
b2NrW2Nmcl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3Rl
cnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAgICAjIFRoZXJlIGlz
IGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmly
c3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBl
cXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICB0
YWdDaGVjayhUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdKQorICAgIGxvYWRwIFBheWxvYWRP
ZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4
IGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90IG11
dGF0ZWQuIFVzZQorIyB0aGlzIGlmIHlvdSBrbm93IHdoYXQgdGhlIHRhZyBvZiB0aGUgdmFyaWFi
bGUgc2hvdWxkIGJlLiBEb2luZyB0aGUgdGFnCisjIHRlc3QgYXMgcGFydCBvZiBsb2FkaW5nIHRo
ZSB2YXJpYWJsZSByZWR1Y2VzIHJlZ2lzdGVyIHVzZSwgYnV0IG1heSBub3QKKyMgYmUgZmFzdGVy
IHRoYW4gZG9pbmcgbG9hZENvbnN0YW50T3JWYXJpYWJsZSBmb2xsb3dlZCBieSBhIGJyYW5jaCBv
biB0aGUKKyMgdGFnLgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgs
IGV4cGVjdGVkVGFnLCBwYXlsb2FkLCBzbG93KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkVGFnQ3VzdG9tKAorICAgICAgICBpbmRleCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRh
ZykgYmluZXEgYWN0dWFsVGFnLCBleHBlY3RlZFRhZywgc2xvdyBlbmQsCisgICAgICAgIHBheWxv
YWQpCitlbmQKKworbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQo
aW5kZXgsIHBheWxvYWQpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0
b20oCisgICAgICAgIGluZGV4LAorICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBlbmQsCisgICAg
ICAgIHBheWxvYWQpCitlbmQKKworbWFjcm8gd3JpdGVCYXJyaWVyKHRhZywgcGF5bG9hZCkKKyAg
ICAjIE5vdGhpbmcgdG8gZG8sIHNpbmNlIHdlIGRvbid0IGhhdmUgYSBnZW5lcmF0aW9uYWwgb3Ig
aW5jcmVtZW50YWwgY29sbGVjdG9yLgorZW5kCisKK21hY3JvIHZhbHVlUHJvZmlsZSh0YWcsIHBh
eWxvYWQsIHByb2ZpbGUpCisgICAgc3RvcmVpIHRhZywgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMg
KyBUYWdPZmZzZXRbcHJvZmlsZV0KKyAgICBzdG9yZWkgcGF5bG9hZCwgVmFsdWVQcm9maWxlOjpt
X2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3Byb2ZpbGVdCitlbmQKKworCisjIEluZGljYXRlIHRo
ZSBiZWdpbm5pbmcgb2YgTExJbnQuCitfbGxpbnRfYmVnaW46CisgICAgY3Jhc2goKQorCisKKyMg
RW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIKKworbWFjcm8gZnVuY3Rpb25Gb3JDYWxs
Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0
YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRS
ZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjpt
X2NvZGVCbG9ja0ZvckNhbGxbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisK
K21hY3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVy
KQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEpTRnVu
Y3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisgICAg
bG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRS
ZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxv
Y2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhcmdl
dFJlZ2lzdGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVn
aXN0ZXIpCisgICAgc3RvcmVwIHNvdXJjZVJlZ2lzdGVyLCBDb2RlQmxvY2tbY2ZyXQorZW5kCisK
K21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgICMg
Tm90aGluZyB0byBkbyEKK2VuZAorCisjIERvIHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8g
ZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVhdmUgdGhlIENvZGVCbG9jayoKKyMgaW4g
dDEuIE1heSBhbHNvIHRyaWdnZXIgcHJvbG9ndWUgZW50cnkgT1NSLgorbWFjcm8gcHJvbG9ndWUo
Y29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIsIG9zckhlbHBlciwgdHJhY2VIZWxwZXIp
CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIAorICAgICMgU2V0
IHVwIHRoZSBjYWxsIGZyYW1lIGFuZCBjaGVjayBpZiB3ZSBzaG91bGQgT1NSLgorICAgIHN0b3Jl
cCB0MiwgUmV0dXJuUENbY2ZyXQorICAgIGlmIEVYRUNVVElPTl9UUkFDSU5HCisgICAgICAgIGNh
bGxIZWxwZXIodHJhY2VIZWxwZXIpCisgICAgZW5kCisgICAgY29kZUJsb2NrR2V0dGVyKHQxKQor
ICAgIGlmIEpJVF9FTkFCTEVECisgICAgICAgIGJhZGRpcyA1LCBDb2RlQmxvY2s6Om1fbGxpbnRF
eGVjdXRlQ291bnRlclt0MV0sIC5jb250aW51ZQorICAgICAgICBjQ2FsbDIob3NySGVscGVyLCBj
ZnIsIFBDKQorICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgYnRweiB0MCwgLnJlY292ZXIK
KyAgICAgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICAgICAgcmVzdG9yZVJldHVybkFk
ZHJlc3NCZWZvcmVSZXR1cm4odDIpCisgICAgICAgIGptcCB0MAorICAgIC5yZWNvdmVyOgorICAg
ICAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCisgICAgLmNvbnRpbnVlOgorICAgIGVuZAorICAgIGNv
ZGVCbG9ja1NldHRlcih0MSkKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgUEMuCisgICAgbG9hZHAg
Q29kZUJsb2NrOjptX2luc3RydWN0aW9uc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjpJ
bnN0cnVjdGlvbnM6Om1faW5zdHJ1Y3Rpb25zICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QwXSwgUEMK
K2VuZAorCisjIEV4cGVjdHMgdGhhdCBDb2RlQmxvY2sgaXMgaW4gdDEsIHdoaWNoIGlzIHdoYXQg
cHJvbG9ndWUoKSBsZWF2ZXMgYmVoaW5kLgorIyBNdXN0IGNhbGwgZGlzcGF0Y2goMCkgYWZ0ZXIg
Y2FsbGluZyB0aGlzLgorbWFjcm8gZnVuY3Rpb25Jbml0aWFsaXphdGlvbihwcm9maWxlQXJnU2tp
cCkKKyAgICAjIFByb2ZpbGUgdGhlIGFyZ3VtZW50cy4gVW5mb3J0dW5hdGVseSwgd2UgaGF2ZSBu
byBjaG9pY2UgYnV0IHRvIGRvIHRoaXMuIFRoaXMKKyAgICAjIGNvZGUgaXMgcHJldHR5IGhvcnJl
bmRvdXMgYmVjYXVzZSBvZiB0aGUgZGlmZmVyZW5jZSBpbiBvcmRlcmluZyBiZXR3ZWVuCisgICAg
IyBhcmd1bWVudHMgYW5kIHZhbHVlIHByb2ZpbGVzLCB0aGUgZGVzaXJlIHRvIGhhdmUgYSBzaW1w
bGUgbG9vcC1kb3duLXRvLXplcm8KKyAgICAjIGxvb3AsIGFuZCB0aGUgZGVzaXJlIHRvIHVzZSBv
bmx5IHRocmVlIHJlZ2lzdGVycyBzbyBhcyB0byBwcmVzZXJ2ZSB0aGUgUEMgYW5kCisgICAgIyB0
aGUgY29kZSBibG9jay4gSXQgaXMgbGlrZWx5IHRoYXQgdGhpcyBjb2RlIHNob3VsZCBiZSByZXdy
aXR0ZW4gaW4gYSBtb3JlCisgICAgIyBvcHRpbWFsIHdheSBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0
IGhhdmUgbW9yZSB0aGFuIGZpdmUgcmVnaXN0ZXJzIGF2YWlsYWJsZQorICAgICMgZm9yIGFyYml0
cmFyeSB1c2UgaW4gdGhlIGludGVycHJldGVyLgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1Q
YXJhbWV0ZXJzW3QxXSwgdDAKKyAgICBhZGRpIC1wcm9maWxlQXJnU2tpcCwgdDAgIyBVc2UgYWRk
aSBiZWNhdXNlIHRoYXQncyB3aGF0IGhhcyB0aGUgcGVlcGhvbGUKKyAgICBhc3NlcnQobWFjcm8g
KG9rKSBiaWd0ZXEgdDAsIDAsIG9rIGVuZCkKKyAgICBidGl6IHQwLCAuYXJndW1lbnRQcm9maWxl
RG9uZQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMgKyBWZWN0
b3JCdWZmZXJPZmZzZXRbdDFdLCB0MworICAgIG11bGkgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDAs
IHQyICMgQWFhYWFoaGhoISBOZWVkIHN0cmVuZ3RoIHJlZHVjdGlvbiEKKyAgICBuZWdpIHQwCisg
ICAgbHNoaWZ0aSAzLCB0MAorICAgIGFkZHAgdDIsIHQzCisuYXJndW1lbnRQcm9maWxlTG9vcDoK
KyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXQgKyA4IC0gcHJvZmlsZUFy
Z1NraXAgKiA4W2NmciwgdDBdLCB0MgorICAgIHN1YnAgc2l6ZW9mIFZhbHVlUHJvZmlsZSwgdDMK
KyAgICBzdG9yZWkgdDIsIHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZh
bHVlUHJvZmlsZTo6bV9idWNrZXRzICsgVGFnT2Zmc2V0W3QzXQorICAgIGxvYWRpIFRoaXNBcmd1
bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXQgKyA4IC0gcHJvZmlsZUFyZ1NraXAgKiA4W2Nmciwg
dDBdLCB0MgorICAgIHN0b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBzaXplb2YgVmFsdWVQcm9m
aWxlICsgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIGJh
ZGRpbnogOCwgdDAsIC5hcmd1bWVudFByb2ZpbGVMb29wCisuYXJndW1lbnRQcm9maWxlRG9uZToK
KyAgICAKKyAgICAjIENoZWNrIHN0YWNrIGhlaWdodC4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1f
bnVtQ2FsbGVlUmVnaXN0ZXJzW3QxXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFs
RGF0YVt0MV0sIHQyCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjppbnRlcnByZXRlclt0Ml0sIHQy
ICAgIyBGSVhNRTogQ2FuIGdldCB0byB0aGUgUmVnaXN0ZXJGaWxlIGZyb20gdGhlIEpJVFN0YWNr
RnJhbWUKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MCwgY2ZyLCB0MAorICAgIGJwYWVx
IEludGVycHJldGVyOjptX3JlZ2lzdGVyRmlsZSArIFJlZ2lzdGVyRmlsZTo6bV9lbmRbdDJdLCB0
MCwgLnN0YWNrSGVpZ2h0T0sKKworICAgICMgU3RhY2sgaGVpZ2h0IGNoZWNrIGZhaWxlZCAtIG5l
ZWQgdG8gY2FsbCBhIGhlbHBlci4KKyAgICBjYWxsSGVscGVyKF9sbGludF9yZWdpc3Rlcl9maWxl
X2NoZWNrKQorLnN0YWNrSGVpZ2h0T0s6CitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2Nr
IGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KK21hY3Jv
IGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIGhlbHBlcikKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGJpYWVxIHQwLCBDb2RlQmxvY2s6
Om1fbnVtUGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJlbAorICAgIGNDYWxsMihoZWxwZXIsIGNmciwg
UEMpICAgIyBUaGlzIGhlbHBlciBoYXMgYSBzaW1wbGUgcHJvdG9jb2w6IHQwID0gMCA9PiBubyBl
cnJvciwgdDAgIT0gMCA9PiBlcnJvcgorICAgIG1vdmUgdDEsIGNmcgorICAgIGJ0aXogdDAsIC5j
b250aW51ZQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAg
IGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBK
U0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorLmNvbnRpbnVlOgorICAg
ICMgUmVsb2FkIENvZGVCbG9jayBhbmQgUEMsIHNpbmNlIHRoZSBoZWxwZXIgY2xvYmJlcmVkIGl0
LgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9p
bnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjpt
X2luc3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCisgICAgam1wIGRvbmVM
YWJlbAorZW5kCisKK19sbGludF9wcm9ncmFtX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1
bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50
X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKwor
X2xsaW50X2V2YWxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tH
ZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxp
bnRfdHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2Nr
R2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlv
bl9mb3JfY2FsbCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQorLmZ1
bmN0aW9uRm9yQ2FsbEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKKyAgICBk
aXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1
ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVu
Y3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCisuZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCisg
ICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2No
ZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rp
b25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJp
dHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCisgICAgZnVuY3Rpb25B
cml0eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X2hlbHBlcl9jYWxsX2FyaXR5
Q2hlY2spCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2s6Cisg
ICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9u
Q29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKKyAgICBm
dW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9sbGludF9oZWxw
ZXJfY29uc3RydWN0X2FyaXR5Q2hlY2spCisKKyMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25z
CisKK19sbGludF9vcF9lbnRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVZhcnNbdDJdLCB0Mgor
ICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZQorICAgIG1vdmUgVW5kZWZpbmVkVGFnLCB0MAorICAg
IG1vdmUgMCwgdDEKKy5vcEVudGVyTG9vcDoKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIHQw
LCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MiwgOF0KKyAgICBidGlueiB0MiwgLm9wRW50ZXJMb29wCisub3BFbnRlckRvbmU6CisgICAg
ZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FjdGl2YXRpb24pCisub3BDcmVhdGVBY3RpdmF0
aW9uRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbml0X2xhenlfcmVnOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgRW1w
dHlWYWx1ZVRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jcmVhdGVf
YXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFy
Z3VtZW50c0RvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY3JlYXRlX2FyZ3VtZW50
cykKKy5vcENyZWF0ZUFyZ3VtZW50c0RvbmU6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBh
bGxvY2F0ZUJhc2ljSlNPYmplY3Qoc2l6ZUNsYXNzSW5kZXgsIGNsYXNzSW5mb09mZnNldCwgc3Ry
dWN0dXJlLCByZXN1bHQsIHNjcmF0Y2gxLCBzY3JhdGNoMiwgc2xvd0Nhc2UpCisgICAgaWYgQUxX
QVlTX0FMTE9DQVRFX1NMT1cKKyAgICAgICAgam1wIHNsb3dDYXNlCisgICAgZWxzZQorICAgICAg
ICBjb25zdCBvZmZzZXRPZk15U2l6ZUNsYXNzID0KKyAgICAgICAgICAgIEpTR2xvYmFsRGF0YTo6
aGVhcCArCisgICAgICAgICAgICBIZWFwOjptX29iamVjdFNwYWNlICsKKyAgICAgICAgICAgIE1h
cmtlZFNwYWNlOjptX25vcm1hbFNwYWNlICsKKyAgICAgICAgICAgIE1hcmtlZFNwYWNlOjpTdWJz
cGFjZTo6cHJlY2lzZUFsbG9jYXRvcnMgKworICAgICAgICAgICAgc2l6ZUNsYXNzSW5kZXggKiBz
aXplb2YgTWFya2VkQWxsb2NhdG9yCisgICAgICAgIAorICAgICAgICAjIEZJWE1FOiB3ZSBjYW4g
Z2V0IHRoZSBnbG9iYWwgZGF0YSBpbiBvbmUgbG9hZCBmcm9tIHRoZSBzdGFjay4KKyAgICAgICAg
bG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHNjcmF0Y2gxCisgICAgICAgIGxvYWRwIENvZGVCbG9jazo6
bV9nbG9iYWxEYXRhW3NjcmF0Y2gxXSwgc2NyYXRjaDEKKyAgICAgICAgCisgICAgICAgICMgR2V0
IHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LiAgICAKKyAgICAgICAgbG9hZHAgb2Zmc2V0
T2ZNeVNpemVDbGFzcyArIE1hcmtlZEFsbG9jYXRvcjo6bV9maXJzdEZyZWVDZWxsW3NjcmF0Y2gx
XSwgcmVzdWx0CisgICAgICAgIGJ0cHogcmVzdWx0LCBzbG93Q2FzZQorICAgICAgICAKKyAgICAg
ICAgIyBSZW1vdmUgdGhlIG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuCisgICAgICAgIGxvYWRw
IFtyZXN1bHRdLCBzY3JhdGNoMgorICAgICAgICBzdG9yZXAgc2NyYXRjaDIsIG9mZnNldE9mTXlT
aXplQ2xhc3MgKyBNYXJrZWRBbGxvY2F0b3I6Om1fZmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0KKyAg
ICAKKyAgICAgICAgIyBJbml0aWFsaXplIHRoZSBvYmplY3QuCisgICAgICAgIGxvYWRwIGNsYXNz
SW5mb09mZnNldFtzY3JhdGNoMV0sIHNjcmF0Y2gyCisgICAgICAgIHN0b3JlcCBzY3JhdGNoMiwg
W3Jlc3VsdF0KKyAgICAgICAgc3RvcmVwIHN0cnVjdHVyZSwgSlNDZWxsOjptX3N0cnVjdHVyZVty
ZXN1bHRdCisgICAgICAgIHN0b3JlcCAwLCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFtyZXN1bHRd
CisgICAgICAgIGFkZHAgc2l6ZW9mIEpTT2JqZWN0LCByZXN1bHQsIHNjcmF0Y2gxCisgICAgICAg
IHN0b3JlcCBzY3JhdGNoMSwgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3Jlc3VsdF0KKyAg
ICBlbmQKK2VuZAorCitfbGxpbnRfb3BfY3JlYXRlX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGJp
bmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgQ2VsbFRhZywgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV90eXBlW3QxXSwgT2JqZWN0VHlwZSwgLm9wQ3JlYXRlVGhpc1Nsb3cKKyAgICBsb2Fk
cCBKU09iamVjdDo6bV9pbmhlcml0b3JJRFt0MF0sIHQyCisgICAgYnRweiB0MiwgLm9wQ3JlYXRl
VGhpc1Nsb3cKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFz
c0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8sIHQyLCB0MCwgdDEs
IHQzLCAub3BDcmVhdGVUaGlzU2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkg
Q2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zm
c2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wQ3JlYXRlVGhpc1Nsb3c6Cisg
ICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2NyZWF0ZV90aGlzKQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRPZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEK
KyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRf
b3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRU
aGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBl
SW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Ns
b3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0VGhpc1Nsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2NvbnZlcnRfdGhpcykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAK
KyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVjdHVyZVt0MF0sIHQx
CisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwg
SlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MSwgdDAsIHQyLCB0MywgLm9w
TmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywg
VGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3T2JqZWN0U2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfbmV3X29iamVjdCkKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9uZXdfYXJyYXk6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9uZXdfYXJyYXkpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3
X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX25ld19hcnJheV9idWZmZXIpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX25ld19yZWdleHApCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbW92
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0
W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgc3Rv
cmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9ub3Q6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0
MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBiaW5lcSB0Miwg
Qm9vbGVhblRhZywgLm9wTm90U2xvdworICAgIHhvcmkgMSwgdDMKKyAgICBzdG9yZWkgdDIsIFRh
Z09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQx
LCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5vdFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX25vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9lcToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0
MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93
CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcs
IC5vcEVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpZXEgdDAsIHQxLCB0MAorICAg
IHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BFcVNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2VxKQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX2VxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENd
LCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BFcU51bGxJbW1lZGlh
dGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0Ym56IFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wRXFOdWxsTm90SW1tZWRpYXRlCisub3BFcU51bGxJbW1l
ZGlhdGU6CisgICAgY2llcSB0MSwgTnVsbFRhZywgdDIKKyAgICBjaWVxIHQxLCBVbmRlZmluZWRU
YWcsIHQxCisgICAgb3JpIHQyLCB0MQorLm9wRXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3Jl
aSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZXE6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5v
cE5lcVNsb3cKKyAgICBiaWVxIHQyLCBDZWxsVGFnLCAub3BOZXFTbG93CisgICAgYmliIHQyLCBM
b3dlc3RUYWcsIC5vcE5lcVNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaW5lcSB0MCwg
dDEsIHQwCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAg
IHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisK
Ky5vcE5lcVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lcSkKKyAgICBkaXNw
YXRjaCg0KQorICAgIAorCitfbGxpbnRfb3BfbmVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGFzc2VydE5v
dENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBs
b2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFn
LCAub3BOZXFOdWxsSW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQxCisgICAgdGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3Qx
XSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAgLm9wTmVxTnVsbE5vdEltbWVk
aWF0ZQorLm9wTmVxTnVsbEltbWVkaWF0ZToKKyAgICBjaW5lcSB0MSwgTnVsbFRhZywgdDIKKyAg
ICBjaW5lcSB0MSwgVW5kZWZpbmVkVGFnLCB0MQorICAgIGFuZGkgdDIsIHQxCisub3BOZXFOdWxs
Tm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0Mywg
OF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRj
aCgzKQorCisKK21hY3JvIHN0cmljdEVxKGVxdWFsaXR5T3BlcmF0aW9uLCBoZWxwZXIpCisgICAg
bG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwg
dDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywg
LnNsb3cKKyAgICBiaW5lcSB0MiwgQ2VsbFRhZywgLm5vdFN0cmluZworICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDFd
LCB0MworICAgIGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDJdLCBTdHJpbmdUeXBlLCAubm90U3RyaW5nCisgICAgYmJlcSBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV90eXBlW3QzXSwgU3RyaW5nVHlwZSwgLnNsb3cKKy5ub3RTdHJpbmc6
CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgZXF1YWxpdHlPcGVyYXRpb24odDAsIHQxLCB0MCkK
KyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLnNsb3c6
CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRf
b3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChs
ZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRf
aGVscGVyX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBs
ZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X2hlbHBlcl9uc3RyaWN0ZXEpCisKKworX2xs
aW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xlc3NlcToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2xlc3NlcSkK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZ3JlYXRlcikKKyAgICBkaXNwYXRj
aCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9ncmVhdGVyZXEpCisgICAgZGlzcGF0Y2goNCkKKwor
CitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJl
SW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYmFk
ZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5jU2xvdzoKKyAgICBjYWxsSGVs
cGVyKF9sbGludF9oZWxwZXJfcHJlX2luYykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9v
cF9wcmVfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVEZWNTbG93Cisg
ICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBic3ViaW8gMSwgdDEs
IC5vcFByZURlY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0K
KyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVEZWNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50
X2hlbHBlcl9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Bvc3RfaW5j
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0
W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQ
b3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBiYWRkaW8g
MSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBz
dG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNEb25lOgorICAg
IGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hl
bHBlcl9wb3N0X2luYykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9wb3N0X2RlYzoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQ
Q10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9z
dERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwgLm9wUG9zdERlY0RvbmUKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MgorICAgIG1vdmUgdDIsIHQzCisgICAgYnN1YmlvIDEs
IHQzLCAub3BQb3N0RGVjU2xvdworICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3Rv
cmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisub3BQb3N0RGVjRG9uZToKKyAgICBk
aXNwYXRjaCgzKQorCisub3BQb3N0RGVjU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfcG9zdF9kZWMpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdG9fanNudW1iZXI6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRb
UENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDAsIHQyLCB0MykKKyAgICBiaWVx
IHQyLCBJbnQzMlRhZywgLm9wVG9Kc251bWJlcklzSW50CisgICAgYmlhZXEgdDIsIEVtcHR5VmFs
dWVUYWcsIC5vcFRvSnNudW1iZXJTbG93Cisub3BUb0pzbnVtYmVySXNJbnQ6CisgICAgc3RvcmVp
IHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BUb0pzbnVtYmVyU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fanNudW1iZXIpCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQw
LCB0MSwgdDIpCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BOZWdhdGVTcmNOb3RJbnQKKyAg
ICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CisgICAgbmVnaSB0MgorICAgIHN0
b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKy5vcE5lZ2F0ZVNyY05vdElu
dDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xvdworICAgIHhvcmkgMHg4MDAw
MDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5l
Z2F0ZVNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX25lZ2F0ZSkKKyAgICBkaXNw
YXRjaCgzKQorCisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFu
ZFN0b3JlLCBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikKKyAgICBsb2FkaSAxMltQQ10sIHQyCisg
ICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQx
KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEg
dDIsIEludDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDMsIEludDMyVGFnLCAub3AyTm90
SW50CisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHQz
LCB0MSwgdDAsIC5zbG93LCB0MikKKyAgICBkaXNwYXRjaCg1KQorCisub3AxTm90SW50OgorICAg
ICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRoZSBzZWNvbmQgb3Bl
cmFuZCBjb3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAg
ICBiaWIgdDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQzLCBJ
bnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQxLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5
Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQxLCB0MywgZnQxCisub3AxTm90SW50
UmVhZHk6CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgZmlpMmQgdDAsIHQyLCBmdDAKKyAgICBk
b3VibGVPcGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDEsIDhdCisg
ICAgZGlzcGF0Y2goNSkKKworLm9wMk5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVm
aW5pdGVseSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KKyAg
ICBsb2FkaSA0W1BDXSwgdDIKKyAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNsb3cKKyAgICBjaTJk
IHQwLCBmdDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEs
IGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisu
c2xvdzoKKyAgICBjYWxsSGVscGVyKGhlbHBlcikKKyAgICBkaXNwYXRjaCg1KQorZW5kCisKK21h
Y3JvIGJpbmFyeU9wKGludGVnZXJPcGVyYXRpb24sIGRvdWJsZU9wZXJhdGlvbiwgaGVscGVyKQor
ICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwg
cmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAgICAgaW50ZWdlck9wZXJhdGlvbihsZWZ0LCBy
aWdodCwgc2xvdykKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBp
bmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBkb3VibGVPcGVyYXRpb24sIGhlbHBlcikK
K2VuZAorCitfbGxpbnRfb3BfYWRkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlP
cCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBiYWRkaW8gbGVmdCwgcmlnaHQs
IHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIGFkZGQgbGVmdCwgcmlnaHQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2FkZCkKKworCitfbGxpbnRfb3BfbXVsOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNy
byAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGNvbnN0
IHNjcmF0Y2ggPSBpbnQzMlRhZyAgICMgV2Uga25vdyB0aGF0IHdlIGNhbiByZXVzZSB0aGUgaW50
MzJUYWcgcmVnaXN0ZXIgc2luY2UgaXQgaGFzIGEgY29uc3RhbnQuCisgICAgICAgICAgICBtb3Zl
IHJpZ2h0LCBzY3JhdGNoCisgICAgICAgICAgICBibXVsaW8gbGVmdCwgc2NyYXRjaCwgc2xvdwor
ICAgICAgICAgICAgYnRpbnogc2NyYXRjaCwgLmRvbmUKKyAgICAgICAgICAgIGJpbHQgbGVmdCwg
MCwgc2xvdworICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdworICAgICAgICAuZG9uZToK
KyAgICAgICAgICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisg
ICAgICAgICAgICBzdG9yZWkgc2NyYXRjaCwgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XQor
ICAgICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgbXVsZCBsZWZ0LCByaWdo
dCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfbXVsKQorCisKK19sbGludF9vcF9zdWI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHNsb3cpIGJzdWJpbyBsZWZ0LCByaWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCkgc3ViZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfc3ViKQorCisKK19sbGludF9vcF9kaXY6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJp
bmFyeU9wQ3VzdG9tU3RvcmUoCisgICAgICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQs
IHNsb3csIGluZGV4KQorICAgICAgICAgICAgY2kyZCBsZWZ0LCBmdDAKKyAgICAgICAgICAgIGNp
MmQgcmlnaHQsIGZ0MQorICAgICAgICAgICAgZGl2ZCBmdDAsIGZ0MQorICAgICAgICAgICAgYmNk
MmkgZnQxLCByaWdodCwgLm5vdEludAorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdP
ZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9m
ZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgam1wIC5kb25lCisgICAgICAgIC5ub3RJ
bnQ6CisgICAgICAgICAgICBzdG9yZWQgZnQxLCBbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgLmRv
bmU6CisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBkaXZkIGxlZnQs
IHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9kaXYpCisKKworX2xsaW50X29wX21v
ZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX21v
ZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGJpdE9wKG9wZXJhdGlvbiwgaGVscGVyLCBh
ZHZhbmNlKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAg
YmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIG9wZXJh
dGlvbih0MSwgdDAsIC5zbG93KQorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2go
YWR2YW5jZSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2go
YWR2YW5jZSkKK2VuZAorCitfbGxpbnRfb3BfbHNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBsc2hpZnRpIGxl
ZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9sc2hpZnQsCisgICAgICAgIDQp
CisKKworX2xsaW50X29wX3JzaGlmdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3Ao
CisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgcnNoaWZ0aSBsZWZ0LCByaWdodCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfcnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGlu
dF9vcF91cnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmln
aHQKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgZW5kLAorICAgICAg
ICBfbGxpbnRfaGVscGVyX3Vyc2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX2JpdGFu
ZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgc2xvdykgYW5kaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9oZWxw
ZXJfYml0YW5kLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXR4b3I6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cp
IHhvcmkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2JpdHhvciwKKyAg
ICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIG9yaSBsZWZ0LCByaWdo
dCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfYml0b3IsCisgICAgICAgIDUpCisKKworX2xs
aW50X29wX2JpdG5vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQx
CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIs
IHQzKQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wQml0bm90U2xvdworICAgIG5vdGkgdDMK
KyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6
CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2JpdG5vdCkKKyAgICBkaXNwYXRjaCgzKQor
CisKK19sbGludF9vcF9jaGVja19oYXNfaW5zdGFuY2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQx
LCBDZWxsVGFnLCB0MCwgLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3cpCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYnRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBU
eXBlSW5mbzo6bV9mbGFnc1t0MF0sIEltcGxlbWVudHNIYXNJbnN0YW5jZSwgLm9wQ2hlY2tIYXNJ
bnN0YW5jZVNsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDaGVja0hhc0luc3RhbmNlU2xvdzoK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfY2hlY2tfaGFzX2luc3RhbmNlKQorICAgIGRp
c3BhdGNoKDIpCisKKworX2xsaW50X29wX2luc3RhbmNlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5z
dGFuY2UgYmVoYXZpb3IuCisgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVwcmVjYXRlZC4K
KyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRV
bmNoZWNrZWQodDEsIHQwKQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAor
ICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJ
bXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIAorICAg
ICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGxvYWRp
IDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFn
LCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0
MV0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVb
dDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5z
dGFuY2VvZlNsb3cpCisgICAgCisgICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUs
IHQyID0gdmFsdWUKKyAgICBtb3ZlIDEsIHQwCisub3BJbnN0YW5jZW9mTG9vcDoKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJv
dG90eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcEluc3Rh
bmNlb2ZEb25lCisgICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3ZlIDAs
IHQwCisub3BJbnN0YW5jZW9mRG9uZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0
W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisg
ICAgZGlzcGF0Y2goNSkKKworLm9wSW5zdGFuY2VvZlNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX2luc3RhbmNlb2YpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfdHlw
ZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJf
dHlwZW9mKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3VuZGVmaW5lZDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX3VuZGVm
aW5lZCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfYm9vbGVhbikK
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19udW1iZXI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9pc19udW1iZXIpCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfc3RyaW5nOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX2lzX29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bEhlbHBlcihfbGxpbnRfaGVscGVyX2lzX29iamVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9pc19mdW5jdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX2lzX2Z1bmN0aW9uKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX2luOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxw
ZXJfaW4pCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmUpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV9za2lwKQorICAgIGRp
c3BhdGNoKDUpCisKKworbWFjcm8gcmVzb2x2ZUdsb2JhbChzaXplLCBzbG93KQorICAgICMgT3Bl
cmFuZHMgYXJlIGFzIGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUg
bG9hZC4KKyAgICAjIDhbUENdICAgUHJvcGVydHkgaWRlbnRpZmllciBpbmRleCBpbiB0aGUgY29k
ZSBibG9jay4KKyAgICAjIDEyW1BDXSAgU3RydWN0dXJlIHBvaW50ZXIsIGluaXRpYWxpemVkIHRv
IDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgICMgMTZbUENdICBPZmZzZXQgaW4gZ2xvYmFs
IG9iamVjdCwgaW5pdGlhbGl6ZWQgdG8gMCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVj
dFt0MF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYnBu
ZXEgdDEsIDEyW1BDXSwgc2xvdworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBKU09i
amVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwg
dDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwgdDMKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAg
IHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGxvYWRpIChzaXplIC0g
MSkgKiA0W1BDXSwgdDAKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQzLCB0MCkKK2VuZAorCitfbGxp
bnRfb3BfcmVzb2x2ZV9nbG9iYWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHJlc29sdmVH
bG9iYWwoNiwgLm9wUmVzb2x2ZUdsb2JhbFNsb3cpCisgICAgZGlzcGF0Y2goNikKKworLm9wUmVz
b2x2ZUdsb2JhbFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfZ2xv
YmFsKQorICAgIGRpc3BhdGNoKDYpCisKKworIyBHaXZlcyB5b3UgdGhlIHNjb3BlIGluIHQwLCB3
aGlsZSBhbGxvd2luZyB5b3UgdG8gb3B0aW9uYWxseSBwZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tz
IG9uIHRoZQorIyBzY29wZXMgYXMgdGhleSBhcmUgdHJhdmVyc2VkLiBzY29wZUNoZWNrKCkgaXMg
Y2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHJlZ2lzdGVyCisjIGhvbGRpbmcgdGhlIHNj
b3BlLCBhbmQgYSByZWdpc3RlciB0aGF0IGNhbiBiZSB1c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRo
YXQgdGhpcyBkb2VzIG5vdAorIyB1c2UgdDMsIHNvIHlvdSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBp
ZiBuZWVkIGJlLgorbWFjcm8gZ2V0U2NvcGUoZGVCcnVpamluSW5kZXhPcGVyYW5kLCBzY29wZUNo
ZWNrKQorICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAg
bG9hZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25l
CisgICAgCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgYmluZXEgQ29kZUJsb2Nr
OjptX2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAubG9vcAorICAgIGJ0YnogQ29kZUJsb2Nr
OjptX25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9vcAorICAgIAorICAgIGxvYWRpIENvZGVC
bG9jazo6bV9hY3RpdmF0aW9uUmVnaXN0ZXJbdDFdLCB0MQorCisgICAgIyBOZWVkIHRvIGNvbmRp
dGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQx
LCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlvbgorICAgIHNjb3BlQ2hlY2sodDAsIHQx
KQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKy5ub0FjdGl2YXRpb246
CisgICAgc3ViaSAxLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisubG9vcDoKKyAgICBz
Y29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQw
CisgICAgc3ViaSAxLCB0MgorICAgIGJ0aW56IHQyLCAubG9vcAorCisuZG9uZToKK2VuZAorCitf
bGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZHAgSlNH
bG9iYWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJlW3QzXSwgdDMKKyAgICBnZXRTY29wZSgKKyAg
ICAgICAgMjBbUENdLAorICAgICAgICBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpCisgICAgICAgICAg
ICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3Njb3BlXSwgc2NyYXRjaAorICAgICAgICAg
ICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVtzY3JhdGNoXSwgdDMsIC5vcFJlc29sdmVHbG9i
YWxEeW5hbWljU3VwZXJTbG93CisgICAgICAgIGVuZCkKKyAgICByZXNvbHZlR2xvYmFsKDcsIC5v
cFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZl
R2xvYmFsRHluYW1pY1N1cGVyU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVz
b2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKKyAgICBkaXNwYXRjaCg3KQorCisub3BS
ZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jl
c29sdmVfZ2xvYmFsX2R5bmFtaWMpCisgICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfZ2V0
X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgT3BlcmFuZHMgYXJlIGFz
IGZvbGxvd3M6CisgICAgIyA0W1BDXSAgIERlc3RpbmF0aW9uIGZvciB0aGUgbG9hZC4KKyAgICAj
IDhbUENdICAgSW5kZXggb2YgcmVnaXN0ZXIgaW4gdGhlIHNjb3BlLgorICAgICMgMTJbUENdICBE
ZSBCcnVpamluIGluZGV4LgorICAgIGdldFNjb3BlKDEyW1BDXSwgbWFjcm8gKHNjb3BlLCBzY3Jh
dGNoKSBlbmQpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAg
bG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJs
ZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDIs
IDhdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQyLCA4XSwgdDAKKyAgICBzdG9y
ZWkgdDMsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICB2YWx1ZVByb2ZpbGUodDMs
IHQwLCB0MSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9wdXRfc2NvcGVkX3ZhcjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZ2V0U2NvcGUoOFtQQ10sIG1hY3JvIChzY29wZSwg
c2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZh
cmlhYmxlKHQxLCB0MywgdDIpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVy
KHQzLCB0MikKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBs
b2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgc3RvcmVpIHQz
LCBUYWdPZmZzZXRbdDAsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MCwg
dDEsIDhdCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2dsb2JhbF92YXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENd
LCB0MworICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6
bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lz
dGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0MSwgOF0sIHQyCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0
W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisg
ICAgbG9hZGkgMTJbUENdLCB0MworICAgIHZhbHVlUHJvZmlsZSh0MiwgdDEsIHQzKQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBK
U0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDEsIHQyLCB0MykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICB3cml0ZUJhcnJpZXIo
dDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkg
dDMsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX3Jlc29sdmVfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Jlc29sdmVfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9v
cF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxs
SGVscGVyKF9sbGludF9oZWxwZXJfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cykKKyAgICBkaXNwYXRj
aCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfYmFzZToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3Jlc29sdmVfd2l0aF9iYXNlKQorICAg
IGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF90aGlzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcmVzb2x2ZV93aXRoX3Ro
aXMpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hp
bmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisgICAgIyBvcGNvZGUuIFdlIGRv
LCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxz
LCBzaW5jZQorICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5
IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKKyAgICAjIHRvIHRha2UgZmFzdCBwYXRo
IG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3
aGF0CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgorICAgIGxvYWRpIDhb
UENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BD
XSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAg
IGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBs
b2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBs
b2FkaSAzMltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MiwgdDEpCisgICAgZGlzcGF0
Y2goOSkKKworLm9wR2V0QnlJZFNsb3c6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2dl
dF9ieV9pZCkKKyAgICBkaXNwYXRjaCg5KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRzX2xl
bmd0aDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9h
ZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVl
VGFnLCAub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93CisgICAgbG9hZGkgQXJndW1lbnRDb3VudCAr
IFBheWxvYWRPZmZzZXRbY2ZyXSwgdDIKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIEludDMy
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93
OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYXJndW1lbnRzX2xlbmd0aCkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaWQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgQ2VsbFRhZywgdDAsIC5vcFB1dEJ5SWRTbG93
KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0
b3JhZ2VbdDBdLCB0MworICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9w
UHV0QnlJZFNsb3cKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWcodDIsIHQwLCB0MikKKyAgICB3cml0ZUJhcnJpZXIodDAsIHQyKQorICAgIHN0b3Jl
aSB0MCwgVGFnT2Zmc2V0W3QzLCB0MV0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDMs
IHQxXQorICAgIGRpc3BhdGNoKDkpCisKKy5vcFB1dEJ5SWRTbG93OgorICAgIGNhbGxIZWxwZXIo
X2xsaW50X2hlbHBlcl9wdXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOSkKKworCittYWNybyBwdXRC
eUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBs
b2FkaSAxMltQQ10sIHQyCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAu
b3BQdXRCeUlkU2xvdworICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xv
dykKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlT
dG9yYWdlW3QwXSwgdDMKKyAgICBhZGRwIHQxLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUyUmVnKHQyLCB0MSwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKKyAgICBzdG9yZWkg
dDEsIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSAyNFtQQ10sIHQxCisgICAgc3RvcmVpIHQyLCBQ
YXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0K
KyAgICBkaXNwYXRjaCg5KQorZW5kCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3Q6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRj
aCwgc2xvdykgZW5kKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6
CisgICAgcHV0QnlJZFRyYW5zaXRpb24oCisgICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNj
cmF0Y2gsIHNsb3cpCisgICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUg
ICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAg
ICAgIAorICAgICAgICAgICAgbG9hZHAgMjhbUENdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3Nl
cnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBsb2FkcCBT
dHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGFz
c2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICAgICAgICAgIGJpZXEg
U3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFn
LCAuZG9uZQorICAgICAgICAubG9vcDoKKyAgICAgICAgICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9w
cm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAorICAgICAg
ICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUK
KyAgICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCBzbG93CisgICAgICAg
ICAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICAgICAgICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90
b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKKyAgICAgICAg
LmRvbmU6CisgICAgICAgIGVuZCkKKworCitfbGxpbnRfb3BfZGVsX2J5X2lkOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfZGVsX2J5X2lkKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0Mgor
ICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0
MV0sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcsIHQw
LCAub3BHZXRCeVZhbFNsb3cpCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJ
bmZvW3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgSW50MzJU
YWcsIHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAgYnBuZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFs
U2xvdworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MF0sIHQzCisgICAgYmlhZXEgdDEs
IEpTQXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0
MywgdDEsIDhdLCB0MgorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2Fk
T2Zmc2V0W3QzLCB0MSwgOF0sIHQxCisgICAgYmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0
QnlWYWxTbG93CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9y
ZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAxNltQQ10sIHQwCisg
ICAgdmFsdWVQcm9maWxlKHQyLCB0MSwgdDApCisgICAgZGlzcGF0Y2goNSkKKworLm9wR2V0QnlW
YWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfYnlfdmFsKQorICAgIGRp
c3BhdGNoKDUpCisKKworX2xsaW50X29wX2dldF9hcmd1bWVudF9ieV92YWw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDEyW1BDXSwgdDEKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3Vt
ZW50QnlWYWxTbG93CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEludDMy
VGFnLCB0MiwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cpCisgICAgYWRkaSAxLCB0MgorICAgIGxv
YWRpIEFyZ3VtZW50Q291bnQgKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQxCisgICAgYmlhZXEgdDIs
IHQxLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIG5lZ2kgdDIKKyAgICBsb2FkaSA0W1BD
XSwgdDMKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZzZXRbY2ZyLCB0Miwg
OF0sIHQwCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XSwgdDEKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0
b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5v
cEdldEFyZ3VtZW50QnlWYWxTbG93OgorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRf
YXJndW1lbnRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2dldF9ieV9w
bmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wR2V0QnlQbmFt
ZVNsb3cpCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGJwbmVxIHQxLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCAub3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQ
bmFtZVNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQwCisg
ICAgYnBuZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3Qz
XSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSAyNFtQQ10sIHQwCisgICAgbG9hZGkgW2Nm
ciwgdDAsIDhdLCB0MAorICAgIHN1YmkgMSwgdDAKKyAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6bV9udW1DYWNoZWFibGVTbG90c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93Cisg
ICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QyXSwgdDIKKyAgICBsb2FkaSBU
YWdPZmZzZXRbdDIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwg
OF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBk
aXNwYXRjaCg3KQorCisub3BHZXRCeVBuYW1lU2xvdzoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfZ2V0X2J5X3BuYW1lKQorICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX3B1dF9i
eV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wUHV0QnlWYWxT
bG93KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQwLCBJbnQzMlRhZywgdDIsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MF0sIHQwCisg
ICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QwXSwgdDAKKyAgICBicG5l
cSBbdDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93CisgICAgYmlhZXEgdDIsIEpTQXJyYXk6Om1fdmVj
dG9yTGVuZ3RoW3QxXSwgLm9wUHV0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9y
YWdlW3QxXSwgdDAKKyAgICBiaWVxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBUYWdPZmZzZXRb
dDAsIHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wUHV0QnlWYWxFbXB0eQorLm9wUHV0QnlWYWxT
dG9yZVJlc3VsdDoKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZTJSZWcodDMsIHQxLCB0MykKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQzKQorICAgIHN0b3Jl
aSB0MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdCisgICAg
c3RvcmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9mZnNldFt0MCwgdDIs
IDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wUHV0QnlWYWxFbXB0eToKKyAgICBhZGRpIDEsIEFy
cmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KKyAgICBiaWIgdDIsIEFycmF5U3Rv
cmFnZTo6bV9sZW5ndGhbdDBdLCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0CisgICAgYWRkaSAxLCB0
MiwgdDEKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdCisgICAgam1w
IC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQKKworLm9wUHV0QnlWYWxTbG93OgorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9wdXRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50
X29wX2RlbF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xs
aW50X2hlbHBlcl9kZWxfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1
dF9ieV9pbmRleDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRf
aGVscGVyX3B1dF9ieV9pbmRleCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRf
Z2V0dGVyX3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxp
bnRfaGVscGVyX3B1dF9nZXR0ZXJfc2V0dGVyKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50
X29wX2xvb3A6CisgICAgbm9wCitfbGxpbnRfb3Bfam1wOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBkaXNwYXRjaEJyYW5jaCg0W1BDXSkKKworCitfbGxpbnRfb3Bfam1wX3Njb3BlczoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX2ptcF9zY29w
ZXMpCisgICAgZGlzcGF0Y2goMCkKKworCittYWNybyBqdW1wVHJ1ZU9yRmFsc2UoY29uZGl0aW9u
T3AsIHNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZVBheWxvYWQodDEsIEJvb2xlYW5UYWcsIHQwLCAuc2xvdykKKyAgICBjb25kaXRpb25PcCh0MCwg
LnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNo
KDhbUENdKQorCisuc2xvdzoKKyAgICBjYWxsSGVscGVyKHNsb3cpCisgICAgZGlzcGF0Y2goMCkK
K2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl90cnVlOgorICAgIG5vcAorX2xsaW50X29wX2p0cnVl
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1h
Y3JvICh2YWx1ZSwgdGFyZ2V0KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xs
aW50X2hlbHBlcl9qdHJ1ZSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKKyAgICBub3AK
K19sbGludF9vcF9qZmFsc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JG
YWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIHRhcmdldCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamZhbHNlKQorCisKK21hY3JvIGVxdWFsTnVsbChj
ZWxsSGFuZGxlciwgaW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBs
b2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxIYW5kbGVyKFN0cnVjdHVy
ZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKKyAgICBkaXNw
YXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuaW1tZWRp
YXRlOgorICAgIG9yaSAxLCB0MQorICAgIGltbWVkaWF0ZUhhbmRsZXIodDEsIC50YXJnZXQpCisg
ICAgZGlzcGF0Y2goMykKK2VuZAorCitfbGxpbnRfb3BfamVxX251bGw6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0
Ym56IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBt
YWNybyAodmFsdWUsIHRhcmdldCkgYmllcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKyAg
ICAKKworX2xsaW50X29wX2puZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1
YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRieiB2YWx1ZSwgTWFzcXVl
cmFkZXNBc1VuZGVmaW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJn
ZXQpIGJpbmVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorCisKK19sbGludF9vcF9qbmVx
X3B0cjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9h
ZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAu
b3BKbmVxUHRyQnJhbmNoCisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwg
Lm9wSm5lcVB0ckZhbGxUaHJvdWdoCisub3BKbmVxUHRyQnJhbmNoOgorICAgIGRpc3BhdGNoQnJh
bmNoKDEyW1BDXSkKKy5vcEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaCg0KQorCisK
K21hY3JvIGNvbXBhcmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUsIGhlbHBlcikKKyAg
ICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMs
IHQyLCB0MykKKyAgICBiaW5lcSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0
MiwgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5qdW1w
VGFyZ2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgYmlhIHQwLCBMb3dl
c3RUYWcsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUK
KyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MywgZnQxCisgICAgam1w
IC5vcDFOb3RJbnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MywgdDIs
IGZ0MQorLm9wMU5vdEludFJlYWR5OgorICAgIGZpaTJkIHQxLCB0MCwgZnQwCisgICAgZG91Ymxl
Q29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMk5v
dEludDoKKyAgICBjaTJkIHQxLCBmdDAKKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAg
ICBmaWkyZCB0MywgdDIsIGZ0MQorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFy
Z2V0KQorICAgIGRpc3BhdGNoKDQpCisKKy5qdW1wVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNo
KDEyW1BDXSkKKworLnNsb3c6CisgICAgY2FsbEhlbHBlcihoZWxwZXIpCisgICAgZGlzcGF0Y2go
MCkKK2VuZAorCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzOgorICAgIG5vcAorX2xsaW50X29wX2ps
ZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamxlc3MpCisKKworX2xsaW50X29wX2pubGVzczoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkZ3RlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQg
ZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2pubGVzcykKKworCitfbGxpbnRfb3BfbG9vcF9p
Zl9ncmVhdGVyOgorICAgIG5vcAorX2xsaW50X29wX2pncmVhdGVyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkg
YmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJkZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9o
ZWxwZXJfamdyZWF0ZXIpCisKKworX2xsaW50X29wX2puZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJpbHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCB0YXJnZXQpIGJkbHRlcXVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBf
bGxpbnRfaGVscGVyX2puZ3JlYXRlcikKKworCitfbGxpbnRfb3BfbG9vcF9pZl9sZXNzZXE6Cisg
ICAgbm9wCitfbGxpbnRfb3Bfamxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29t
cGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHRlcSBsZWZ0LCBy
aWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJk
bHRlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X2hlbHBlcl9qbGVz
c2VxKQorCisKK19sbGludF9vcF9qbmxlc3NlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBi
ZGd0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfam5s
ZXNzZXEpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcmVxOgorICAgIG5vcAorX2xsaW50
X29wX2pncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdl
dCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXEgbGVmdCwg
cmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9oZWxwZXJfamdyZWF0ZXJlcSkKKwor
CitfbGxpbnRfb3Bfam5ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBh
cmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdHVu
IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfaGVscGVyX2puZ3JlYXRl
cmVxKQorCisKK19sbGludF9vcF9sb29wX2hpbnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNoZWNrU3dpdGNoVG9KSVRGb3JMb29wKCkKKyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9v
cF9zd2l0Y2hfaW1tOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQy
CisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEs
IHQwKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6
bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBzaXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MyAg
ICMgRklYTUU6IHdvdWxkIGJlIG5pY2UgdG8gcGVlcGhvbGUgdGhpcyEKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6OlJhcmVEYXRhOjptX2ltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZXMgKyBWZWN0b3JCdWZm
ZXJPZmZzZXRbdDJdLCB0MgorICAgIGFkZHAgdDMsIHQyCisgICAgYmluZXEgdDEsIEludDMyVGFn
LCAub3BTd2l0Y2hJbW1Ob3RJbnQKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwg
dDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9y
U2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgbG9hZHAgU2ltcGxl
SnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDMKKyAg
ICBsb2FkaSBbdDMsIHQwLCA0XSwgdDEKKyAgICBidGl6IHQxLCAub3BTd2l0Y2hJbW1GYWxsVGhy
b3VnaAorICAgIGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldCh0MSkKKworLm9wU3dpdGNoSW1tTm90
SW50OgorICAgIGJpYiB0MSwgTG93ZXN0VGFnLCAub3BTd2l0Y2hJbW1TbG93ICAjIEdvIHRvIHNs
b3cgcGF0aCBpZiBpdCdzIGEgZG91YmxlLgorLm9wU3dpdGNoSW1tRmFsbFRocm91Z2g6CisgICAg
ZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5vcFN3aXRjaEltbVNsb3c6CisgICAgY2FsbEhlbHBl
cihfbGxpbnRfaGVscGVyX3N3aXRjaF9pbW0pCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRf
b3Bfc3dpdGNoX2NoYXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwg
dDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0
MSwgdDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2Nr
OjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQz
CisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFi
bGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJp
bmVxIHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8g
KyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJv
dWdoCisgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0MAorICAgIGJpbmVxIFN0cmlu
Z0ltcGw6Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9h
ZHAgU3RyaW5nSW1wbDo6bV9kYXRhOFt0MF0sIHQxCisgICAgYnRpbnogU3RyaW5nSW1wbDo6bV9o
YXNoQW5kRmxhZ3NbdDBdLCBIYXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0Y2hDaGFyOEJpdAor
ICAgIGxvYWRoIFt0MV0sIHQwCisgICAgam1wIC5vcFN3aXRjaENoYXJSZWFkeQorLm9wU3dpdGNo
Q2hhcjhCaXQ6CisgICAgbG9hZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENoYXJSZWFkeToKKyAgICBz
dWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVt
cFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENo
YXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyAr
IFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCisg
ICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdp
dGhPZmZzZXQodDEpCisKKy5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJy
YW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N3aXRjaF9zdHJpbmcpCisgICAg
ZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGJ0aXogMTJbUENdLCAub3BOZXdGdW5jVW5jaGVja2VkCisgICAgbG9hZGkgNFtQQ10s
IHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BO
ZXdGdW5jRG9uZQorLm9wTmV3RnVuY1VuY2hlY2tlZDoKKyAgICBjYWxsSGVscGVyKF9sbGludF9o
ZWxwZXJfbmV3X2Z1bmMpCisub3BOZXdGdW5jRG9uZToKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9uZXdfZnVuY19leHA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9uZXdfZnVuY19leHApCisgICAgZGlzcGF0Y2goMykKKworCittYWNy
byBkb0NhbGwoaGVscGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwg
dDEKKyAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93KQor
ICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAg
YWRkcCAyNCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNv
bnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29w
ZUNoYWluW3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNd
CisgICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBsb2Fk
aSA4IC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNl
dFtjZnJdCisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNdCisgICAgc3RvcmVpIHQyLCBB
cmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2Fs
bGVlICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFn
T2Zmc2V0W3QzXQorICAgIG1vdmUgdDMsIGNmcgorICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86
Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworLm9wQ2Fs
bFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIGhlbHBlcikKK2VuZAorCitfbGxpbnRfb3Bf
Y2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9oZWxwZXJfY2Fs
bCkKKworCitfbGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBk
b0NhbGwoX2xsaW50X2hlbHBlcl9jb25zdHJ1Y3QpCisKKworX2xsaW50X29wX2NhbGxfdmFyYXJn
czoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIF9sbGludF9o
ZWxwZXJfY2FsbF92YXJhcmdzKQorCisKK19sbGludF9vcF9jYWxsX2V2YWw6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIAorICAgICMgRXZhbCBpcyBleGVjdXRlZCBpbiBvbmUgb2YgdHdvIG1v
ZGVzOgorICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSByZWFsbHkgaW52b2tpbmcg
ZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBleGVjdXRpb24gaXMgcGVyZm9tZWQg
ZW50aXJlbHkgaW5zaWRlIHRoZSBoZWxwZXIsIGFuZCBpdAorICAgICMgICAgcmV0dXJucyB0aGUg
UEMgb2YgYSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0aGUgcmV0dXJuIHZhbHVlCisgICAg
IyAgICB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgICMKKyAgICAjIDIpIFdlIGZpbmQgdGhh
dCB3ZSdyZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwoKSB0aGF0IGlzIG5vdAorICAg
ICMgICAgdGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgaGVscGVyIHJldHVybnMgdGhlIFBDIG9mIHRo
ZSB0aGluZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQuCisgICAgIworICAgICMg
VGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywgd2hpY2ggd291bGQgcmVxdWlyZSBh
IHRvdGFsIG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0ZSB0aGF0IGNhbm5vdCBi
ZSBlYXNpbHkgcGFja2VkIGludG8gdHdvCisgICAgIyByZWdpc3RlcnMgKEMgZnVuY3Rpb25zIGNh
biByZXR1cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5KToKKyAgICAjCisgICAgIyAtIFRo
ZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBtb2Rp
ZmllZAorICAgICMgICBieSB0aGUgaGVscGVyLCBidXQgdGhlIGNvbnZlbnRpb24gaXMgdGhhdCBp
dCByZXR1cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0b3RhbGx5IGNsZWFyIGlmIHRoYXQncyBu
ZWNlc3NhcnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUuCisgICAgIyAgIEJ1dCB0aGF0
J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRlciBzbyB3ZSBzdGljayB3aXRoIGl0
LgorICAgICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBoZWxwZXIgc3VjY2Vzc2Z1bGx5
IGV4ZWN1dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAjICAgdGhlIHJldHVybiB2YWx1ZSwgb3Ig
ZGlkIG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3IgdXMKKyAgICAjICAgdG8g
Y2FsbC4KKyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAgICAjICAgLSBUaGUgSlMgcmV0dXJuIHZh
bHVlICh0d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisgICAgIyAgIC0gVGhlIFBDIHRvIGNhbGwu
CisgICAgIworICAgICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2llciB0byBqdXN0IGFsd2F5cyBo
YXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBhIFBDIHRvIGNhbGwsIGFuZCB0aGF0
IFBDIG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVzdAorICAgICMgcmV0dXJucyB0aGUgSlMg
dmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAKKyAgICBzbG93UGF0aEZvckNhbGwo
NCwgX2xsaW50X2hlbHBlcl9jYWxsX2V2YWwpCisKKworX2xsaW50X2dlbmVyaWNfcmV0dXJuX3Bv
aW50OgorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYWN0
aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAg
bG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZh
bHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQKKyAgICBiaWVxIFRhZ09mZnNldFtj
ZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVk
Cisub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6CisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVs
cGVyX3RlYXJfb2ZmX2FjdGl2YXRpb24pCisub3BUZWFyT2ZmQWN0aXZhdGlvbk5vdENyZWF0ZWQ6
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYXJndW1lbnRzOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdWJpIDEsIHQwICAg
IyBHZXQgdGhlIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcgorICAgIGJpZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRl
ZAorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90ZWFyX29mZl9hcmd1bWVudHMpCisub3BU
ZWFyT2ZmQXJndW1lbnRzTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGRv
UmV0dXJuKCkKKyAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAgIGxvYWRwIENhbGxlckZy
YW1lW2Nmcl0sIGNmcgorICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQor
ICAgIHJldAorZW5kCisKK19sbGludF9vcF9yZXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitf
bGxpbnRfb3BfY2FsbF9wdXRfcmVzdWx0OgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRp
IDhbUENdLCB0MworICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdmFsdWVQcm9maWxlKHQxLCB0
MCwgdDMpCisgICAgdHJhY2VFeGVjdXRpb24oKSAjIE5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSBp
dCB3b3VsZCBjbG9iYmVyIHQxLCB0MAorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Jl
dF9vYmplY3Rfb3JfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hU
b0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcFJldE9iamVj
dE9yVGhpc05vdE9iamVjdAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0Mgor
ICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgT2Jq
ZWN0VHlwZSwgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgZG9SZXR1cm4oKQorCisu
b3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3Q6CisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGRvUmV0dXJuKCkKKworCitfbGxp
bnRfb3BfbWV0aG9kX2NoZWNrOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIGlnbm9y
ZSBtZXRob2QgY2hlY2tzIGFuZCB1c2Ugbm9ybWFsIGdldF9ieV9pZCBvcHRpbWl6YXRpb25zLgor
ICAgIGRpc3BhdGNoKDEpCisKKworX2xsaW50X29wX3N0cmNhdDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3N0cmNhdCkKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF90b19wcmltaXRpdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9QcmltaXRp
dmVJc0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJibmVx
IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBl
LCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisub3BUb1ByaW1pdGl2ZUlzSW1tOgorICAgIHN0b3Jl
aSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9QcmltaXRpdmVTbG93Q2FzZToK
KyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfdG9fcHJpbWl0aXZlKQorICAgIGRpc3BhdGNo
KDMpCisKKworX2xsaW50X29wX2dldF9wbmFtZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9nZXRfcG5hbWVzKQorICAgIGRpc3BhdGNoKDApICMg
VGhlIGhlbHBlciBlaXRoZXIgYWR2YW5jZXMgdGhlIFBDIG9yIGp1bXBzIHVzIHRvIHNvbWV3aGVy
ZSBlbHNlLgorCisKK19sbGludF9vcF9uZXh0X3BuYW1lOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZGkgMTZbUENdLCB0MgorICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0sIHQwCisgICAgYmllcSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQyLCA4XSwgLm9wTmV4dFBuYW1lRW5kCisgICAgbG9hZGkgMjBbUENdLCB0MgorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQyCisgICAgbG9hZHAgSlNQcm9wZXJ0eU5h
bWVJdGVyYXRvcjo6bV9qc1N0cmluZ3NbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDhdLCB0
MworICAgIGFkZGkgMSwgdDAKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAg
bG9hZGkgOFtQQ10sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XSwgdDMK
KyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QzXSwgdDEKKyAgICBicG5lcSB0MSwgSlNQ
cm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRTdHJ1Y3R1cmVbdDJdLCAub3BOZXh0UG5hbWVT
bG93CisgICAgbG9hZHAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9jYWNoZWRQcm90b3R5cGVD
aGFpblt0Ml0sIHQwCisgICAgbG9hZHAgU3RydWN0dXJlQ2hhaW46Om1fdmVjdG9yW3QwXSwgdDAK
KyAgICBidHB6IFt0MF0sIC5vcE5leHRQbmFtZVRhcmdldAorLm9wTmV4dFBuYW1lQ2hlY2tQcm90
b3R5cGVMb29wOgorICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFt0
MV0sIE51bGxUYWcsIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBTdHJ1Y3R1cmU6Om1fcHJv
dG90eXBlICsgUGF5bG9hZE9mZnNldFt0MV0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVj
dHVyZVt0Ml0sIHQxCisgICAgYnBuZXEgdDEsIFt0MF0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBh
ZGRwIDQsIHQwCisgICAgYnRwbnogW3QwXSwgLm9wTmV4dFBuYW1lQ2hlY2tQcm90b3R5cGVMb29w
Cisub3BOZXh0UG5hbWVUYXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMjRbUENdKQorCisub3BO
ZXh0UG5hbWVFbmQ6CisgICAgZGlzcGF0Y2goNykKKworLm9wTmV4dFBuYW1lU2xvdzoKKyAgICBj
YWxsSGVscGVyKF9sbGludF9oZWxwZXJfbmV4dF9wbmFtZSkgIyBUaGlzIGVpdGhlciBrZWVwcyB0
aGUgUEMgd2hlcmUgaXQgd2FzIChjYXVzaW5nIHVzIHRvIGxvb3ApIG9yIHNldHMgaXQgdG8gdGFy
Z2V0LgorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3B1c2hfc2NvcGU6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl9wdXNoX3Njb3BlKQor
ICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3BvcF9zY29wZToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3BvcF9zY29wZSkKKyAgICBkaXNw
YXRjaCgxKQorCisKK19sbGludF9vcF9wdXNoX25ld19zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbEhlbHBlcihfbGxpbnRfaGVscGVyX3B1c2hfbmV3X3Njb3BlKQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX2NhdGNoOgorICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBl
bmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKKyAgICAj
IG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0
Y2gpLCBhbmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAo
c2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRoZSBKSVQgdGhyb3dpbmcgcHJv
dG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0aHJvd2luZworICAgICMg
Y29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93aW5nIHRvIHRoZSBpbnRlcnBy
ZXRlciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVy
UENGb3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpn
bG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJl
dGVyUENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24g
KyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlv
biArIFRhZ09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0
aW9uICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9i
YWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAgICAgIAorICAgIGxvYWRpIDRbUENd
LCB0MgorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3Jl
aSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdHJhY2VFeGVjdXRpb24oKSAgIyBUaGlz
IG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIgdDAsIHQx
LCB0MiwgdDMgYWJvdmUuCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3c6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvdykK
KyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvd19yZWZlcmVuY2VfZXJyb3I6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxwZXIoX2xsaW50X2hlbHBlcl90aHJvd19y
ZWZlcmVuY2VfZXJyb3IpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfanNyOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBhZGRpIDMgKiA0LCBQ
QywgdDEKKyAgICBzdG9yZWkgdDEsIFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoQnJhbmNoKDhb
UENdKQorCisKK19sbGludF9vcF9zcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA0W1BDXSwgdDAKKyAgICBsb2FkcCBbY2ZyLCB0MCwgOF0sIFBDCisgICAgZGlzcGF0Y2goMCkK
KworCitfbGxpbnRfb3BfZGVidWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxIZWxw
ZXIoX2xsaW50X2hlbHBlcl9kZWJ1ZykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9w
cm9maWxlX3dpbGxfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3Rh
Y2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgdDAKKyAgICBidHB6IFt0MF0s
IC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsSGVscGVyKF9sbGludF9oZWxwZXJfcHJv
ZmlsZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0sIHQw
CisgICAgYnRweiBbdDBdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisgICAgY2FsbEhlbHBlcihf
bGxpbnRfaGVscGVyX3Byb2ZpbGVfZGlkX2NhbGwpCisub3BQcm9maWxlRGlkQ2FsbERvbmU6Cisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfZW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MAor
ICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGRvUmV0dXJuKCkKKworCitfbGxpbnRfdGhyb3dfZnJv
bV9oZWxwZXJfdHJhbXBvbGluZToKKyAgICAjIFdoZW4gdGhyb3dpbmcgZnJvbSB0aGUgaW50ZXJw
cmV0ZXIgKGkuZS4gdGhyb3dpbmcgZnJvbSBMTEludEhlbHBlcnMpLCBzbworICAgICMgdGhlIHRo
cm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0
byBoZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dp
bmcgcHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQx
CisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAg
am1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworX2xsaW50
X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNz
QWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0
MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAg
IGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKKyMgTGFz
dGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBw
b3J0IGFsbCBvcGNvZGVzLgorIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVu
IHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAorIyBhcyBtdWNoLgorCittYWNy
byBub3RTdXBwb3J0ZWQoKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGNyYXNoKCkK
KyAgICBlbHNlCisgICAgICAgICMgV2Ugc2hvdWxkIHVzZSB3aGF0ZXZlciB0aGUgc21hbGxlc3Qg
cG9zc2libGUgaW5zdHJ1Y3Rpb24gaXMsIGp1c3QgdG8KKyAgICAgICAgIyBlbnN1cmUgdGhhdCB0
aGVyZSBpcyBhIGdhcCBiZXR3ZWVuIGluc3RydWN0aW9uIGxhYmVscy4gSWYgbXVsdGlwbGUKKyAg
ICAgICAgIyBzbWFsbGVzdCBpbnN0cnVjdGlvbnMgZXhpc3QsIHdlIHNob3VsZCBwaWNrIHRoZSBv
bmUgdGhhdCBpcyBtb3N0CisgICAgICAgICMgbGlrZWx5IHJlc3VsdCBpbiBleGVjdXRpb24gYmVp
bmcgaGFsdGVkLiBDdXJyZW50bHkgdGhhdCBpcyB0aGUgYnJlYWsKKyAgICAgICAgIyBpbnN0cnVj
dGlvbiBvbiBhbGwgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBpbnRlcmVzdGVkIGluLiAoQnJlYWsgaXMg
aW50MworICAgICAgICAjIG9uIEludGVsLCB3aGljaCBpcyAxIGJ5dGUsIGFuZCBia3B0IG9uIEFS
TXY3LCB3aGljaCBpcyAyIGJ5dGVzLikKKyAgICAgICAgYnJlYWsKKyAgICBlbmQKK2VuZAorCitf
bGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRf
b3BfZ2V0X2J5X2lkX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfY3VzdG9tX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfY3VzdG9tX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRf
YnlfaWRfY3VzdG9tX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9i
eV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRf
Z2V0dGVyX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRf
Z2V0dGVyX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRf
Z2V0dGVyX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9w
cm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3NlbGY6Cisg
ICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9zdHJpbmdfbGVuZ3RoOgorICAgIG5v
dFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBw
b3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3JlcGxhY2U6CisgICAgbm90U3VwcG9ydGVk
KCkKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uOgorICAgIG5vdFN1cHBvcnRlZCgp
CisKKworIyBJbmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50LgorX2xsaW50X2VuZDoKKyAgICBjcmFz
aCgpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2
ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworI2lmIEVO
QUJMRShMTElOVCkKKworI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1
ZGUgPHd0Zi9JbmxpbmVBU00uaD4KKworLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9m
ZmxpbmVhc20sIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUgYXNzZW1ibHkgY29kZQorLy8gZm9y
IHRoZSBpbnRlcnByZXRlciwgYXMgY29tcGlsZWQgZnJvbSBMb3dMZXZlbEludGVycHJldGVyLmFz
bS4KKyNpbmNsdWRlICJMTEludEFzc2VtYmx5LmgiCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVy
cHJldGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTG93TGV2ZWxJ
bnRlcnByZXRlcl9oCisjZGVmaW5lIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorCisjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJPcGNvZGUu
aCIKKworI2RlZmluZSBMTElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29kZSwgbGVuZ3RoKSBleHRl
cm4gIkMiIHZvaWQgbGxpbnRfIyNvcGNvZGUoKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoTExJ
TlRfSU5TVFJVQ1RJT05fREVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJVQ1RJT05fREVDTAorCitl
eHRlcm4gIkMiIHZvaWQgbGxpbnRfYmVnaW4oKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9lbmQo
KTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMi
IHZvaWQgbGxpbnRfZXZhbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0
aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9u
X2Zvcl9jYWxsX2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2dlbmVy
aWNfcmV0dXJuX3BvaW50KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZnJvbV9oZWxw
ZXJfdHJhbXBvbGluZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2R1cmluZ19jYWxs
X3RyYW1wb2xpbmUoKTsKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExv
d0xldmVsSW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vYXJtdjcucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vYXJtdjcucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDMyIEBACisjIENvcHlyaWdo
dCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJvcHQi
CisKK2NsYXNzIE5vZGUKKyAgICBkZWYgYXJtVjdTaW5nbGUKKyAgICAgICAgZG91YmxlT3BlcmFu
ZCA9IGFybVY3T3BlcmFuZAorICAgICAgICByYWlzZSAiQm9ndXMgcmVnaXN0ZXIgbmFtZSAje2Rv
dWJsZU9wZXJhbmR9IiB1bmxlc3MgZG91YmxlT3BlcmFuZCA9fiAvXmQvCisgICAgICAgICJzIiAr
ICgkfi5wb3N0X21hdGNoLnRvX2kgKiAyKS50b19zCisgICAgZW5kCitlbmQKKworY2xhc3MgU3Bl
Y2lhbFJlZ2lzdGVyIDwgTm9DaGlsZHJlbgorICAgIGRlZiBpbml0aWFsaXplKG5hbWUpCisgICAg
ICAgIEBuYW1lID0gbmFtZQorICAgIGVuZAorICAgIAorICAgIGRlZiBhcm1WN09wZXJhbmQKKyAg
ICAgICAgQG5hbWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFs
c2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5k
CisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgcmVnaXN0ZXI/CisgICAgICAgIHRydWUKKyAgICBlbmQKK2VuZAorCitBUk12N19F
WFRSQV9HUFJTID0gW1NwZWNpYWxSZWdpc3Rlci5uZXcoInI5IiksIFNwZWNpYWxSZWdpc3Rlci5u
ZXcoInI4IiksIFNwZWNpYWxSZWdpc3Rlci5uZXcoInIzIildCitBUk12N19FWFRSQV9GUFJTID0g
W1NwZWNpYWxSZWdpc3Rlci5uZXcoImQ3IildCitBUk12N19TQ1JBVENIX0ZQUiA9IFNwZWNpYWxS
ZWdpc3Rlci5uZXcoImQ4IikKKworZGVmIGFybVY3TW92ZUltbWVkaWF0ZSh2YWx1ZSwgcmVnaXN0
ZXIpCisgICAgIyBDdXJyZW50bHkgd2Ugb25seSBoYW5kbGUgdGhlIHNpbXBsZSBjYXNlcywgYW5k
IGZhbGwgYmFjayB0byBtb3YvbW92dCBmb3IgdGhlIGNvbXBsZXggb25lcy4KKyAgICBpZiB2YWx1
ZSA+PSAwICYmIHZhbHVlIDwgMjU2CisgICAgICAgICRhc20ucHV0cyAibW92dyAje3JlZ2lzdGVy
LmFybVY3T3BlcmFuZH0sIFwjI3t2YWx1ZX0iCisgICAgZWxzaWYgKH52YWx1ZSkgPj0gMCAmJiAo
fnZhbHVlKSA8IDI1NgorICAgICAgICAkYXNtLnB1dHMgIm12biAje3JlZ2lzdGVyLmFybVY3T3Bl
cmFuZH0sIFwjI3t+dmFsdWV9IgorICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJtb3Z3ICN7
cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje3ZhbHVlICYgMHhmZmZmfSIKKyAgICAgICAgaWYg
KHZhbHVlICYgMHhmZmZmMDAwMCkgIT0gMAorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3Z0ICN7
cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje3ZhbHVlID4+IDE2fSIKKyAgICAgICAgZW5kCisg
ICAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRAorICAgIGRlZiBhcm1WN09wZXJhbmQKKyAg
ICAgICAgY2FzZSBuYW1lCisgICAgICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgICAg
ICAgInIwIgorICAgICAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgICAgICAgICJyMSIK
KyAgICAgICAgd2hlbiAidDIiLCAiYTIiCisgICAgICAgICAgICAicjIiCisgICAgICAgIHdoZW4g
ImEzIgorICAgICAgICAgICAgInIzIgorICAgICAgICB3aGVuICJ0MyIKKyAgICAgICAgICAgICJy
NCIKKyAgICAgICAgd2hlbiAidDQiCisgICAgICAgICAgICAicjciCisgICAgICAgIHdoZW4gImNm
ciIKKyAgICAgICAgICAgICJyNSIKKyAgICAgICAgd2hlbiAibHIiCisgICAgICAgICAgICAibHIi
CisgICAgICAgIHdoZW4gInNwIgorICAgICAgICAgICAgInNwIgorICAgICAgICBlbHNlCisgICAg
ICAgICAgICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIEFSTXY3IGF0ICN7Y29kZU9y
aWdpblN0cmluZ30iCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0
ZXJJRAorICAgIGRlZiBhcm1WN09wZXJhbmQKKyAgICAgICAgY2FzZSBuYW1lCisgICAgICAgIHdo
ZW4gImZ0MCIsICJmciIKKyAgICAgICAgICAgICJkMCIKKyAgICAgICAgd2hlbiAiZnQxIgorICAg
ICAgICAgICAgImQxIgorICAgICAgICB3aGVuICJmdDIiCisgICAgICAgICAgICAiZDIiCisgICAg
ICAgIHdoZW4gImZ0MyIKKyAgICAgICAgICAgICJkMyIKKyAgICAgICAgd2hlbiAiZnQ0IgorICAg
ICAgICAgICAgImQ0IgorICAgICAgICB3aGVuICJmdDUiCisgICAgICAgICAgICAiZDUiCisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJCYWQgcmVnaXN0ZXIgI3tuYW1lfSBmb3IgQVJN
djcgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKwor
Y2xhc3MgSW1tZWRpYXRlCisgICAgZGVmIGFybVY3T3BlcmFuZAorICAgICAgICByYWlzZSAiSW52
YWxpZCBpbW1lZGlhdGUgI3t2YWx1ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgaWYgdmFsdWUg
PCAwIG9yIHZhbHVlID4gMjU1CisgICAgICAgICJcIyN7dmFsdWV9IgorICAgIGVuZAorZW5kCisK
K2NsYXNzIEFkZHJlc3MKKyAgICBkZWYgYXJtVjdPcGVyYW5kCisgICAgICAgIHJhaXNlICJCYWQg
b2Zmc2V0IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIG9y
IG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sIFwj
I3tvZmZzZXQudmFsdWV9XSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgICBk
ZWYgYXJtVjdPcGVyYW5kCisgICAgICAgIHJhaXNlICJCYWQgb2Zmc2V0IGF0ICN7Y29kZU9yaWdp
blN0cmluZ30iIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICAgICJbI3tiYXNlLmFybVY3T3Bl
cmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZVNoaWZ0fV0iCisgICAg
ZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgICAgZGVmIGFybVY3T3BlcmFuZAor
ICAgICAgICByYWlzZSAiVW5jb252ZXJ0ZWQgYWJzb2x1dGUgYWRkcmVzcyBhdCAje2NvZGVPcmln
aW5TdHJpbmd9IgorICAgIGVuZAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgYnJhbmNoIG9wcy4g
Rm9yIGV4YW1wbGU6CisjCisjIGJhZGRpeiBmb28sIGJhciwgYmF6CisjCisjIHdpbGwgYmVjb21l
OgorIworIyBhZGRpIGZvbywgYmFyCisjIGJ6IGJhegorIworCitkZWYgYXJtVjdMb3dlckJyYW5j
aE9wcyhsaXN0KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3QuZWFjaCB7CisgICAgICAgIHwg
bm9kZSB8CisgICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgICAgICAgIGNh
c2Ugbm9kZS5vcGNvZGUKKyAgICAgICAgICAgIHdoZW4gL15iKGFkZGl8c3ViaXxvcml8YWRkcCkv
CisgICAgICAgICAgICAgICAgb3AgPSAkMQorICAgICAgICAgICAgICAgIGJyYW5jaCA9ICJiIiAr
ICR+LnBvc3RfbWF0Y2gKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIG9w
CisgICAgICAgICAgICAgICAgd2hlbiAiYWRkaSIsICJhZGRwIgorICAgICAgICAgICAgICAgICAg
ICBvcCA9ICJhZGRpcyIKKyAgICAgICAgICAgICAgICB3aGVuICJzdWJpIgorICAgICAgICAgICAg
ICAgICAgICBvcCA9ICJzdWJpcyIKKyAgICAgICAgICAgICAgICB3aGVuICJvcmkiCisgICAgICAg
ICAgICAgICAgICAgIG9wID0gIm9yaXMiCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAg
ICAgICAgCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5j
b2RlT3JpZ2luLCBvcCwgbm9kZS5vcGVyYW5kc1swLi4tMl0pCisgICAgICAgICAgICAgICAgbmV3
TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBicmFuY2gsIFtub2RlLm9w
ZXJhbmRzWy0xXV0pCisgICAgICAgICAgICB3aGVuICJibXVsaW8iCisgICAgICAgICAgICAgICAg
dG1wMSA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgICAgIHRt
cDIgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgICAgICBuZXdM
aXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJzbXVsbGkiLCBbbm9kZS5v
cGVyYW5kc1swXSwgbm9kZS5vcGVyYW5kc1sxXSwgbm9kZS5vcGVyYW5kc1sxXSwgdG1wMV0pCisg
ICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2lu
LCAicnNoaWZ0aSIsIFtub2RlLm9wZXJhbmRzWy0yXSwgSW1tZWRpYXRlLm5ldyhub2RlLmNvZGVP
cmlnaW4sIDMxKSwgdG1wMl0pCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcobm9kZS5jb2RlT3JpZ2luLCAiYmluZXEiLCBbdG1wMSwgdG1wMiwgbm9kZS5vcGVyYW5k
c1stMV1dKQorICAgICAgICAgICAgd2hlbiAvXmJtdWxpLworICAgICAgICAgICAgICAgIGNvbmRp
dGlvbiA9ICR+LnBvc3RfbWF0Y2gKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0
aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtdWxpIiwgbm9kZS5vcGVyYW5kc1swLi4tMl0pCisg
ICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2lu
LCAiYnRpIiArIGNvbmRpdGlvbiwgW25vZGUub3BlcmFuZHNbLTJdLCBub2RlLm9wZXJhbmRzWy0x
XV0pCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisg
ICAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3TGlzdCA8PCBub2Rl
CisgICAgICAgIGVuZAorICAgIH0KKyAgICBuZXdMaXN0CitlbmQKKworIworIyBMb3dlcmluZyBv
ZiBzaGlmdCBvcHMuIEZvciBleGFtcGxlOgorIworIyBsc2hpZnRpIGZvbywgYmFyCisjCisjIHdp
bGwgYmVjb21lOgorIworIyBhbmRpIGZvbywgMzEsIHRtcAorIyBsc2hpZnRpIHRtcCwgYmFyCisj
CisKK2RlZiBhcm1WN1Nhbml0aXplU2hpZnQob3BlcmFuZCwgbGlzdCkKKyAgICByZXR1cm4gb3Bl
cmFuZCBpZiBvcGVyYW5kLmltbWVkaWF0ZT8KKyAgICAKKyAgICB0bXAgPSBUbXAubmV3KG9wZXJh
bmQuY29kZU9yaWdpbiwgOmdwcikKKyAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5k
LmNvZGVPcmlnaW4sICJhbmRpIiwgW29wZXJhbmQsIEltbWVkaWF0ZS5uZXcob3BlcmFuZC5jb2Rl
T3JpZ2luLCAzMSksIHRtcF0pCisgICAgdG1wCitlbmQKKworZGVmIGFybVY3TG93ZXJTaGlmdE9w
cyhsaXN0KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3QuZWFjaCB7CisgICAgICAgIHwgbm9k
ZSB8CisgICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgICAgICAgIGNhc2Ug
bm9kZS5vcGNvZGUKKyAgICAgICAgICAgIHdoZW4gImxzaGlmdGkiLCAicnNoaWZ0aSIsICJ1cnNo
aWZ0aSIKKyAgICAgICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRzLnNpemUgPT0gMgorICAgICAg
ICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4s
IG5vZGUub3Bjb2RlLCBbYXJtVjdTYW5pdGl6ZVNoaWZ0KG5vZGUub3BlcmFuZHNbMF0sIG5ld0xp
c3QpLCBub2RlLm9wZXJhbmRzWzFdXSkKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9k
ZS5vcGNvZGUsIFtub2RlLm9wZXJhbmRzWzBdLCBhcm1WN1Nhbml0aXplU2hpZnQobm9kZS5vcGVy
YW5kc1sxXSwgbmV3TGlzdCksIG5vZGUub3BlcmFuZHNbMl1dKQorICAgICAgICAgICAgICAgICAg
ICByYWlzZSAiV3JvbmcgbnVtYmVyIG9mIG9wZXJhbmRzIGZvciBzaGlmdCBhdCAje25vZGUuY29k
ZU9yaWdpblN0cmluZ30iIHVubGVzcyBub2RlLm9wZXJhbmRzLnNpemUgPT0gMworICAgICAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwg
bm9kZQorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3Qg
PDwgbm9kZQorICAgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93
ZXJpbmcgb2YgbWFsZm9ybWVkIGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGU6CisjCisjIGxvYWRwIDEw
MDAwW2Zvb10sIGJhcgorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbW92ZSAxMDAwMCwgdG1wCisj
IGFkZHAgZm9vLCB0bXAKKyMgbG9hZHAgMFt0bXBdLCBiYXIKKyMKKworY2xhc3MgTm9kZQorICAg
IGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgICAgICBt
YXBDaGlsZHJlbiB7CisgICAgICAgICAgICB8IG5vZGUgfAorICAgICAgICAgICAgbm9kZS5hcm1W
N0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgICAgICB9CisgICAgZW5k
CitlbmQKKworY2xhc3MgQWRkcmVzcworICAgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVz
c2VzUmVjdXJzZShsaXN0KQorICAgICAgICBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiBvciBvZmZz
ZXQudmFsdWUgPiAweGZmZgorICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6
Z3ByKQorICAgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1v
dmUiLCBbb2Zmc2V0LCB0bXBdKQorICAgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
Y29kZU9yaWdpbiwgImFkZHAiLCBbYmFzZSwgdG1wXSkKKyAgICAgICAgICAgIEFkZHJlc3MubmV3
KGNvZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgc2VsZgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitjbGFz
cyBCYXNlSW5kZXgKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2Uo
bGlzdCkKKyAgICAgICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAgICAgICAgIHRtcCA9IFRt
cC5uZXcoY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW29mZnNldCwgdG1wXSkKKyAgICAgICAgICAgIGxpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJhZGRwIiwgW2Jhc2UsIHRtcF0pCisgICAg
ICAgICAgICBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIHRtcCwgaW5kZXgsIHNjYWxlLCBJbW1l
ZGlhdGUubmV3KGNvZGVPcmlnaW4sIDApKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxm
CisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICAg
IGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgICAgICB0
bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW2FkZHJlc3MsIHRtcF0pCisgICAgICAgIEFkZHJl
c3MubmV3KGNvZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkKKyAg
ICBlbmQKK2VuZAorCitkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3NlcyhsaXN0KQorICAg
IG5ld0xpc3QgPSBbXQorICAgIGxpc3QuZWFjaCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAg
IG5ld0xpc3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShuZXdM
aXN0KQorICAgIH0KKyAgICBuZXdMaXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBtYWxmb3Jt
ZWQgYWRkcmVzc2VzIGluIGRvdWJsZSBsb2FkcyBhbmQgc3RvcmVzLiBGb3IgZXhhbXBsZToKKyMK
KyMgbG9hZGQgW2ZvbywgYmFyLCA4XSwgYmF6CisjCisjIGJlY29tZXM6CisjCisjIGxlYXAgW2Zv
bywgYmFyLCA4XSwgdG1wCisjIGxvYWRkIFt0bXBdLCBiYXoKKyMKKworY2xhc3MgTm9kZQorICAg
IGRlZiBhcm1WN0RvdWJsZUFkZHJlc3MobGlzdCkKKyAgICAgICAgc2VsZgorICAgIGVuZAorZW5k
CisKK2NsYXNzIEJhc2VJbmRleAorICAgIGRlZiBhcm1WN0RvdWJsZUFkZHJlc3MobGlzdCkKKyAg
ICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICBsaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibGVhcCIsIFtzZWxmLCB0bXBdKQorICAgICAgICBB
ZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCB0bXAsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkp
CisgICAgZW5kCitlbmQKKworZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNEb3VibGUo
bGlzdCkKKyAgICBuZXdMaXN0ID0gW10KKyAgICBsaXN0LmVhY2ggeworICAgICAgICB8IG5vZGUg
fAorICAgICAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICAgICAgICBjYXNlIG5v
ZGUub3Bjb2RlCisgICAgICAgICAgICB3aGVuICJsb2FkZCIKKyAgICAgICAgICAgICAgICBuZXdM
aXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJsb2FkZCIsIFtub2RlLm9w
ZXJhbmRzWzBdLmFybVY3RG91YmxlQWRkcmVzcyhuZXdMaXN0KSwgbm9kZS5vcGVyYW5kc1sxXV0p
CisgICAgICAgICAgICB3aGVuICJzdG9yZWQiCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJ
bnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAic3RvcmVkIiwgW25vZGUub3BlcmFuZHNb
MF0sIG5vZGUub3BlcmFuZHNbMV0uYXJtVjdEb3VibGVBZGRyZXNzKG5ld0xpc3QpXSkKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICAg
IGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAg
ZW5kCisgICAgfQorICAgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1pc3BsYWNl
ZCBpbW1lZGlhdGVzLiBGb3IgZXhhbXBsZToKKyMKKyMgc3RvcmVpIDAsIFtmb29dCisjCisjIHdp
bGwgYmVjb21lOgorIworIyBtb3ZlIDAsIHRtcAorIyBzdG9yZWkgdG1wLCBbZm9vXQorIworCitk
ZWYgYXJtVjdMb3dlck1pc3BsYWNlZEltbWVkaWF0ZXMobGlzdCkKKyAgICBuZXdMaXN0ID0gW10K
KyAgICBsaXN0LmVhY2ggeworICAgICAgICB8IG5vZGUgfAorICAgICAgICBpZiBub2RlLmlzX2E/
IEluc3RydWN0aW9uCisgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICAgICAgICB3
aGVuICJzdG9yZWkiLCAic3RvcmVwIgorICAgICAgICAgICAgICAgIG9wZXJhbmRzID0gbm9kZS5v
cGVyYW5kcworICAgICAgICAgICAgICAgIG5ld09wZXJhbmRzID0gW10KKyAgICAgICAgICAgICAg
ICBvcGVyYW5kcy5lYWNoIHsKKyAgICAgICAgICAgICAgICAgICAgfCBvcGVyYW5kIHwKKyAgICAg
ICAgICAgICAgICAgICAgaWYgb3BlcmFuZC5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHRtcCA9IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAg
ICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5jb2Rl
T3JpZ2luLCAibW92ZSIsIFtvcGVyYW5kLCB0bXBdKQorICAgICAgICAgICAgICAgICAgICAgICAg
bmV3T3BlcmFuZHMgPDwgdG1wCisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG5ld09wZXJhbmRzIDw8IG9wZXJhbmQKKyAgICAgICAgICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIG5ld09wZXJhbmRzKQorICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAg
ICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAg
ICBlbmQKKyAgICB9CisgICAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWFsZm9y
bWVkIGltbWVkaWF0ZXMgZXhjZXB0IHdoZW4gdXNlZCBpbiBhICJtb3ZlIiBpbnN0cnVjdGlvbi4K
KyMgRm9yIGV4YW1wbGU6CisjCisjIGFkZHAgNjQyNjQxLCBmb28KKyMKKyMgd2lsbCBiZWNvbWU6
CisjCisjIG1vdmUgNjQyNjQxLCB0bXAKKyMgYWRkcCB0bXAsIGZvbworIworCitjbGFzcyBOb2Rl
CisgICAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAg
ICAgICBtYXBDaGlsZHJlbiB7CisgICAgICAgICAgICB8IG5vZGUgfAorICAgICAgICAgICAgbm9k
ZS5hcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkKKyAgICAgICAgfQor
ICAgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1l
ZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBCYXNlSW5kZXgKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1
cnNlKGxpc3QpCisgICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFk
ZHJlc3MKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3Qp
CisgICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgICBkZWYg
YXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgICAgIGlmIHZh
bHVlIDwgMCBvciB2YWx1ZSA+IDI1NQorICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3Jp
Z2luLCA6Z3ByKQorICAgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdp
biwgIm1vdmUiLCBbc2VsZiwgdG1wXSkKKyAgICAgICAgICAgIHRtcAorICAgICAgICBlbHNlCisg
ICAgICAgICAgICBzZWxmCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2RlZiBhcm1WN0xv
d2VyTWFsZm9ybWVkSW1tZWRpYXRlcyhsaXN0KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3Qu
ZWFjaCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rp
b24KKyAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgICAgICAgIHdoZW4gIm1vdmUi
CisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgICAgICB3aGVuICJhZGRp
IiwgImFkZHAiLCAiYWRkaXMiLCAic3ViaSIsICJzdWJwIiwgInN1YmlzIgorICAgICAgICAgICAg
ICAgIGlmIG5vZGUub3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZAorICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS5vcGVyYW5kc1swXS52YWx1ZSA8IDAgYW5kCisgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLm9wZXJhbmRzWzBdLnZhbHVlID49IDI1NSBhbmQKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgICAgICAgICAgICAg
IGlmIG5vZGUub3Bjb2RlID1+IC9hZGQvCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdPcGNv
ZGUgPSAic3ViIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KKyAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3Bjb2RlID0gImFkZCIgKyBub2RlLm9wY29k
ZVstMS4uLTFdCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBu
ZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5ld09wY29kZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ltbWVkaWF0ZS5u
ZXcoLW5vZGUub3BlcmFuZHNbMF0udmFsdWUpXSArIG5vZGUub3BlcmFuZHNbMS4uLTFdKQorICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLmFy
bVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0KQorICAgICAgICAgICAg
ICAgIGVuZAorICAgICAgICAgICAgd2hlbiAibXVsaSIKKyAgICAgICAgICAgICAgICBpZiBub2Rl
Lm9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgICAgICAgICB0bXAgPSBU
bXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwg
SW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1sw
XSwgdG1wXSkKKyAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
bm9kZS5jb2RlT3JpZ2luLCAibXVsaSIsIFt0bXBdICsgbm9kZS5vcGVyYW5kc1sxLi4tMV0pCisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUu
YXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QpCisgICAgICAgICAg
ICAgICAgZW5kCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBu
b2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0KQorICAgICAg
ICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAg
ICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWlz
cGxhY2VkIGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGU6CisjCisjIGFkZGkgZm9vLCBbYmFyXQorIwor
IyB3aWxsIGJlY29tZToKKyMKKyMgbG9hZGkgW2Jhcl0sIHRtcAorIyBhZGRpIGZvbywgdG1wCisj
IHN0b3JlaSB0bXAsIFtiYXJdCisjCisjIEFub3RoZXIgZXhhbXBsZToKKyMKKyMgYWRkaSBbZm9v
XSwgYmFyCisjCisjIHdpbGwgYmVjb21lOgorIworIyBsb2FkaSBbZm9vXSwgdG1wCisjIGFkZGkg
dG1wLCBiYXIKKyMKKworZGVmIGFybVY3QXNSZWdpc3RlcihwcmVMaXN0LCBwb3N0TGlzdCwgb3Bl
cmFuZCwgc3VmZml4LCBuZWVkU3RvcmUpCisgICAgcmV0dXJuIG9wZXJhbmQgdW5sZXNzIG9wZXJh
bmQuYWRkcmVzcz8KKyAgICAKKyAgICB0bXAgPSBUbXAubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwg
aWYgc3VmZml4ID09ICJkIiB0aGVuIDpmcHIgZWxzZSA6Z3ByIGVuZCkKKyAgICBwcmVMaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJsb2FkIiArIHN1ZmZpeCwgW29w
ZXJhbmQsIHRtcF0pCisgICAgaWYgbmVlZFN0b3JlCisgICAgICAgIHBvc3RMaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJzdG9yZSIgKyBzdWZmaXgsIFt0bXAsIG9w
ZXJhbmRdKQorICAgIGVuZAorICAgIHRtcAorZW5kCisKK2RlZiBhcm1WN0FzUmVnaXN0ZXJzKHBy
ZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kcywgc3VmZml4KQorICAgIG5ld09wZXJhbmRzID0gW10K
KyAgICBvcGVyYW5kcy5lYWNoX3dpdGhfaW5kZXggeworICAgICAgICB8IG9wZXJhbmQsIGluZGV4
IHwKKyAgICAgICAgbmV3T3BlcmFuZHMgPDwgYXJtVjdBc1JlZ2lzdGVyKHByZUxpc3QsIHBvc3RM
aXN0LCBvcGVyYW5kLCBzdWZmaXgsIGluZGV4ID09IG9wZXJhbmRzLnNpemUgLSAxKQorICAgIH0K
KyAgICBuZXdPcGVyYW5kcworZW5kCisKK2RlZiBhcm1WN0xvd2VyTWlzcGxhY2VkQWRkcmVzc2Vz
KGxpc3QpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlzdC5lYWNoIHsKKyAgICAgICAgfCBub2Rl
IHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgICAgICAgcG9zdElu
c3RydWN0aW9ucyA9IFtdCisgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICAgICAg
ICB3aGVuICJhZGRpIiwgImFkZHAiLCAiYWRkaXMiLCAiYW5kaSIsICJhbmRwIiwgImxzaGlmdGki
LCAibXVsaSIsICJuZWdpIiwgIm5vdGkiLCAib3JpIiwgIm9yaXMiLAorICAgICAgICAgICAgICAg
ICJvcnAiLCAicnNoaWZ0aSIsICJ1cnNoaWZ0aSIsICJzdWJpIiwgInN1YnAiLCAic3ViaXMiLCAi
eG9yaSIsICJ4b3JwIiwgL15iaS8sIC9eYnAvLCAvXmJ0aS8sCisgICAgICAgICAgICAgICAgL15i
dHAvLCAvXmNpLywgL15jcC8sIC9edGkvCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9u
cywgbm9kZS5vcGVyYW5kcywgImkiKSkKKyAgICAgICAgICAgIHdoZW4gImJiZXEiLCAiYmJuZXEi
LCAiYmJhIiwgImJiYWVxIiwgImJiYiIsICJiYmJlcSIsICJidGJvIiwgImJ0YnoiLCAiYnRibnoi
LCAidGJ6IiwgInRibnoiLAorICAgICAgICAgICAgICAgICJ0Ym8iCisgICAgICAgICAgICAgICAg
bmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwg
cG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImIiKSkKKyAgICAgICAgICAgIHdoZW4g
ImJiZ3QiLCAiYmJndGVxIiwgImJibHQiLCAiYmJsdGVxIiwgImJ0YnMiLCAidGJzIgorICAgICAg
ICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcm1WN0FzUmVnaXN0ZXJz
KG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJicyIpKQorICAgICAg
ICAgICAgd2hlbiAiYWRkZCIsICJkaXZkIiwgInN1YmQiLCAibXVsZCIsICJzcXJ0ZCIsIC9eYmQv
CisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3Jp
Z2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bj
b2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNS
ZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImQiKSkK
KyAgICAgICAgICAgIHdoZW4gImptcCIsICJjYWxsIgorICAgICAgICAgICAgICAgIG5ld0xpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbYXJtVjdBc1JlZ2lzdGVyKG5ld0xpc3QsIHBvc3RJbnN0
cnVjdGlvbnMsIG5vZGUub3BlcmFuZHNbMF0sICJwIiwgZmFsc2UpXSkKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgbmV3TGlzdCArPSBwb3N0SW5zdHJ1Y3Rpb25zCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdAor
ZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgcmVnaXN0ZXIgcmV1c2UgaW4gY29tcGFyZSBpbnN0cnVj
dGlvbnMuIEZvciBleGFtcGxlOgorIworIyBjaWVxIHQwLCB0MSwgdDAKKyMKKyMgd2lsbCBiZWNv
bWU6CisjCisjIG1vdiB0bXAsIHQwCisjIGNpZXEgdG1wLCB0MSwgdDAKKyMKKworZGVmIGFybVY3
TG93ZXJSZWdpc3RlclJldXNlKGxpc3QpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlzdC5lYWNo
IHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgor
ICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgICAgICAgd2hlbiAiY2llcSIsICJj
aW5lcSIsICJjaWEiLCAiY2lhZXEiLCAiY2liIiwgImNpYmVxIiwgImNpZ3QiLCAiY2lndGVxIiwg
ImNpbHQiLCAiY2lsdGVxIiwKKyAgICAgICAgICAgICAgICAiY3BlcSIsICJjcG5lcSIsICJjcGEi
LCAiY3BhZXEiLCAiY3BiIiwgImNwYmVxIiwgImNwZ3QiLCAiY3BndGVxIiwgImNwbHQiLCAiY3Bs
dGVxIiwKKyAgICAgICAgICAgICAgICAidGlvIiwgInRpcyIsICJ0aXoiLCAidGlueiIsICJ0Ym8i
LCAidGJzIiwgInRieiIsICJ0Ym56IgorICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHMu
c2l6ZSA9PSAyCisgICAgICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0gPT0gbm9k
ZS5vcGVyYW5kc1sxXQorICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhub2Rl
LmNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IElu
c3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMF0s
IHRtcF0pCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbdG1wLCBub2RlLm9wZXJhbmRzWzFdXSkK
KyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlz
dCA8PCBub2RlCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgcmFpc2UgIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgYXQg
I3tub2RlLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgbm9kZS5vcGVyYW5kcy5zaXplID09IDMK
KyAgICAgICAgICAgICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1swXSA9PSBub2RlLm9wZXJhbmRz
WzJdCisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdp
biwgOmdwcikKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29k
ZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFt0bXAsIG5vZGUub3BlcmFuZHNbMV0sIG5vZGUub3BlcmFu
ZHNbMl1dKQorICAgICAgICAgICAgICAgICAgICBlbHNpZiBub2RlLm9wZXJhbmRzWzFdID09IG5v
ZGUub3BlcmFuZHNbMl0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcobm9k
ZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJ
bnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzFd
LCB0bXBdKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcobm9kZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgW25vZGUub3BlcmFuZHNbMF0sIHRtcCwg
bm9kZS5vcGVyYW5kc1syXV0pCisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAgICAgICAgICAgICBlbmQKKyAg
ICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdM
aXN0IDw8IG5vZGUKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgICBu
ZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3QKK2VuZAorCisj
CisjIExlYSBzdXBwb3J0LgorIworCitjbGFzcyBBZGRyZXNzCisgICAgZGVmIGFybVY3RW1pdExl
YShkZXN0aW5hdGlvbikKKyAgICAgICAgaWYgZGVzdGluYXRpb24gPT0gYmFzZQorICAgICAgICAg
ICAgJGFzbS5wdXRzICJhZGRzICN7ZGVzdGluYXRpb24uYXJtVjdPcGVyYW5kfSwgXCMje29mZnNl
dC52YWx1ZX0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICRhc20ucHV0cyAiYWRkcyAje2Rl
c3RpbmF0aW9uLmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09wZXJhbmR9LCBcIyN7b2Zmc2V0
LnZhbHVlfSIKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4Cisg
ICAgZGVmIGFybVY3RW1pdExlYShkZXN0aW5hdGlvbikKKyAgICAgICAgcmFpc2UgIk1hbGZvcm1l
ZCBCYXNlSW5kZXgsIG9mZnNldCBzaG91bGQgYmUgemVybyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9
IiB1bmxlc3Mgb2Zmc2V0LnZhbHVlID09IDAKKyAgICAgICAgJGFzbS5wdXRzICJhZGQudyAje2Rl
c3RpbmF0aW9uLmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFy
bVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGVTaGlmdH0iCisgICAgZW5kCitlbmQKKworIyBGSVhN
RTogd2UgY291bGQgc3VwcG9ydCBBYnNvbHV0ZUFkZHJlc3MgZm9yIGxlYSwgYnV0IHdlIGRvbid0
LgorCisjCisjIEFjdHVhbCBsb3dlcmluZyBjb2RlIGZvbGxvd3MuCisjCisKK2NsYXNzIFNlcXVl
bmNlCisgICAgZGVmIGxvd2VyQVJNdjcKKyAgICAgICAgbXlMaXN0ID0gQGxpc3QKKyAgICAgICAg
CisgICAgICAgICMgVmVyaWZ5IHRoYXQgd2Ugd2lsbCBvbmx5IHNlZSBpbnN0cnVjdGlvbnMgYW5k
IGxhYmVscy4KKyAgICAgICAgbXlMaXN0LmVhY2ggeworICAgICAgICAgICAgfCBub2RlIHwKKyAg
ICAgICAgICAgIHVubGVzcyBub2RlLmlzX2E/IEluc3RydWN0aW9uIG9yCisgICAgICAgICAgICAg
ICAgICAgIG5vZGUuaXNfYT8gTGFiZWwgb3IKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5pc19h
PyBMb2NhbExhYmVsIG9yCisgICAgICAgICAgICAgICAgICAgIG5vZGUuaXNfYT8gU2tpcAorICAg
ICAgICAgICAgICAgIHJhaXNlICJVbmV4cGVjdGVkICN7bm9kZS5pbnNwZWN0fSBhdCAje25vZGUu
Y29kZU9yaWdpbn0iIAorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIG15TGlzdCA9IGFybVY3TG93ZXJCcmFuY2hPcHMobXlMaXN0KQorICAgICAgICBteUxpc3Qg
PSBhcm1WN0xvd2VyU2hpZnRPcHMobXlMaXN0KQorICAgICAgICBteUxpc3QgPSBhcm1WN0xvd2Vy
TWFsZm9ybWVkQWRkcmVzc2VzKG15TGlzdCkKKyAgICAgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1h
bGZvcm1lZEFkZHJlc3Nlc0RvdWJsZShteUxpc3QpCisgICAgICAgIG15TGlzdCA9IGFybVY3TG93
ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKG15TGlzdCkKKyAgICAgICAgbXlMaXN0ID0gYXJtVjdMb3dl
ck1hbGZvcm1lZEltbWVkaWF0ZXMobXlMaXN0KQorICAgICAgICBteUxpc3QgPSBhcm1WN0xvd2Vy
TWlzcGxhY2VkQWRkcmVzc2VzKG15TGlzdCkKKyAgICAgICAgbXlMaXN0ID0gYXJtVjdMb3dlclJl
Z2lzdGVyUmV1c2UobXlMaXN0KQorICAgICAgICBteUxpc3QgPSBhc3NpZ25SZWdpc3RlcnNUb1Rl
bXBvcmFyaWVzKG15TGlzdCwgOmdwciwgQVJNdjdfRVhUUkFfR1BSUykKKyAgICAgICAgbXlMaXN0
ID0gYXNzaWduUmVnaXN0ZXJzVG9UZW1wb3JhcmllcyhteUxpc3QsIDpmcHIsIEFSTXY3X0VYVFJB
X0ZQUlMpCisgICAgICAgIG15TGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgbm9kZSB8CisgICAg
ICAgICAgICBub2RlLmxvd2VyKCJBUk12NyIpCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitk
ZWYgYXJtVjdPcGVyYW5kcyhvcGVyYW5kcykKKyAgICBvcGVyYW5kcy5tYXB7fHZ8IHYuYXJtVjdP
cGVyYW5kfS5qb2luKCIsICIpCitlbmQKKworZGVmIGFybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJh
bmRzKQorICAgIGFybVY3T3BlcmFuZHMoW29wZXJhbmRzWy0xXV0gKyBvcGVyYW5kc1swLi4tMl0p
CitlbmQKKworZGVmIGVtaXRBcm1WN0NvbXBhY3Qob3Bjb2RlMiwgb3Bjb2RlMywgb3BlcmFuZHMp
CisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGUz
fSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgZWxzZQorICAgICAgICBy
YWlzZSB1bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVy
YW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IElt
bWVkaWF0ZQorICAgICAgICAgICAgJGFzbS5wdXRzICIje29wY29kZTN9ICN7b3BlcmFuZHNbMV0u
YXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBd
LmFybVY3T3BlcmFuZH0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICRhc20ucHV0cyAiI3tv
cGNvZGUyfSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIGVuZAor
ICAgIGVuZAorZW5kCisKK2RlZiBlbWl0QXJtVjcob3Bjb2RlLCBvcGVyYW5kcykKKyAgICBpZiBv
cGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3thcm1WN0Zs
aXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgdW5sZXNz
IG9wZXJhbmRzLnNpemUgPT0gMgorICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJh
bmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVy
YW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorZW5kCisKK2RlZiBlbWl0QXJtVjdEb3Vi
bGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBvcGVyYW5kcykKKyAgICAkYXNtLnB1dHMgInZjbXBlLmY2
NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAkYXNtLnB1dHMgInZtcnMg
YXBzcl9uemN2LCBmcHNjciIKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJh
bmRzWzJdLmFzbUxhYmVsfSIKK2VuZAorCitkZWYgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAg
ICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiAy
CisgICAgICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAgIHdoZW4g
MworICAgICAgICBtYXNrID0gb3BlcmFuZHNbMV0KKyAgICBlbHNlCisgICAgICAgIHJhaXNlICJF
eHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29k
ZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAgaWYgbWFzay5pc19hPyBJbW1lZGlh
dGUgYW5kIG1hc2sudmFsdWUgPT0gLTEKKyAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3t2YWx1ZS5h
cm1WN09wZXJhbmR9LCAje3ZhbHVlLmFybVY3T3BlcmFuZH0iCisgICAgZWxzaWYgbWFzay5pc19h
PyBJbW1lZGlhdGUKKyAgICAgICAgJGFzbS5wdXRzICJ0c3QudyAje3ZhbHVlLmFybVY3T3BlcmFu
ZH0sICN7bWFzay5hcm1WN09wZXJhbmR9IgorICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJ0
c3QgI3t2YWx1ZS5hcm1WN09wZXJhbmR9LCAje21hc2suYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQK
K2VuZAorCitkZWYgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgY29kZSkKKyAgICAkYXNtLnB1
dHMgIm1vdnMgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCBcIzAiCisgICAgJGFzbS5wdXRz
ICJjbXAgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3Bl
cmFuZH0iCisgICAgJGFzbS5wdXRzICJpdCAje2NvZGV9IgorICAgICRhc20ucHV0cyAibW92I3tj
b2RlfSAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sIFwjMSIKK2VuZAorCitkZWYgZW1pdEFy
bVY3VGVzdFNldChvcGVyYW5kcywgY29kZSkKKyAgICAkYXNtLnB1dHMgIm1vdnMgI3tvcGVyYW5k
c1stMV0uYXJtVjdPcGVyYW5kfSwgXCMwIgorICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisg
ICAgJGFzbS5wdXRzICJpdCAje2NvZGV9IgorICAgICRhc20ucHV0cyAibW92I3tjb2RlfSAje29w
ZXJhbmRzWy0xXS5hcm1WN09wZXJhbmR9LCBcIzEiCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24K
KyAgICBkZWYgbG93ZXJBUk12NworICAgICAgICAkYXNtLmNvbW1lbnQgY29kZU9yaWdpblN0cmlu
ZworICAgICAgICBjYXNlIG9wY29kZQorICAgICAgICB3aGVuICJhZGRpIiwgImFkZHAiLCAiYWRk
aXMiCisgICAgICAgICAgICBpZiBvcGNvZGUgPT0gImFkZGlzIgorICAgICAgICAgICAgICAgIHN1
ZmZpeCA9ICJzIgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN1ZmZpeCA9ICIi
CisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQg
b3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICAgICAgICAgcmFpc2UgdW5sZXNz
IG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgICAgICAgICByYWlzZSB1bmxl
c3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgIGlmIG9wZXJh
bmRzWzBdLnZhbHVlID09IDAgYW5kIHN1ZmZpeC5lbXB0eT8KKyAgICAgICAgICAgICAgICAgICAg
dW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAgICAgICAgICAg
ICAkYXNtLnB1dHMgIm1vdiAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNb
MV0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZHMgI3tvcGVyYW5kc1sy
XS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNb
MF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2lm
IG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRAorICAg
ICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisg
ICAgICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQK
KyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZHMgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhv
cGVyYW5kcyl9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlmIG9wZXJhbmRz
WzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgICAgICAgICB1bmxlc3MgSW1tZWRpYXRl
Lm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAkYXNt
LnB1dHMgImFkZHMgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICAg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
ICRhc20ucHV0cyAiYWRkI3tzdWZmaXh9ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMp
fSIKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJh
bmRpIiwgImFuZHAiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYWN0KCJhbmRzIiwgImFuZCIs
IG9wZXJhbmRzKQorICAgICAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgICAgICAgZW1pdEFy
bVY3Q29tcGFjdCgib3JycyIsICJvcnIiLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAib3JpcyIK
KyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhY3QoIm9ycnMiLCAib3JycyIsIG9wZXJhbmRzKQor
ICAgICAgICB3aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYWN0
KCJlb3JzIiwgImVvciIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJsc2hpZnRpIgorICAgICAg
ICAgICAgZW1pdEFybVY3Q29tcGFjdCgibHNscyIsICJsc2xzIiwgb3BlcmFuZHMpCisgICAgICAg
IHdoZW4gInJzaGlmdGkiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYWN0KCJhc3JzIiwgImFz
cnMiLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICAgICAgICBlbWl0
QXJtVjdDb21wYWN0KCJsc3JzIiwgImxzcnMiLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAibXVs
aSIKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMiBvciBvcGVyYW5kc1swXSA9PSBv
cGVyYW5kc1syXSBvciBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAg
IGVtaXRBcm1WNygibXVscyIsIG9wZXJhbmRzKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICRhc20ucHV0cyAibW92ICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVy
YW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgICAgICRhc20ucHV0cyAibXVscyAj
e29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwg
I3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgZW5kCisgICAgICAgIHdo
ZW4gInN1YmkiLCAic3VicCIsICJzdWJpcyIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhY3Qo
InN1YnMiLCAic3VicyIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJuZWdpIgorICAgICAgICAg
ICAgJGFzbS5wdXRzICJyc2JzICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1swXS5hcm1WN09wZXJhbmR9LCBcIzAiCisgICAgICAgIHdoZW4gIm5vdGkiCisgICAgICAgICAg
ICAkYXNtLnB1dHMgIm12bnMgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRz
WzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAgIHdoZW4gImxvYWRpIiwgImxvYWRwIgorICAgICAg
ICAgICAgJGFzbS5wdXRzICJsZHIgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9Igor
ICAgICAgICB3aGVuICJzdG9yZWkiLCAic3RvcmVwIgorICAgICAgICAgICAgJGFzbS5wdXRzICJz
dHIgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIHdoZW4gImxvYWRiIgorICAg
ICAgICAgICAgJGFzbS5wdXRzICJsZHJiICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMp
fSIKKyAgICAgICAgd2hlbiAibG9hZGJzIgorICAgICAgICAgICAgJGFzbS5wdXRzICJsZHJzYi53
ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAgd2hlbiAic3RvcmVi
IgorICAgICAgICAgICAgJGFzbS5wdXRzICJzdHJiICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kcyl9
IgorICAgICAgICB3aGVuICJsb2FkaCIKKyAgICAgICAgICAgICRhc20ucHV0cyAibGRyaCAje2Fy
bVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIHdoZW4gImxvYWRocyIKKyAg
ICAgICAgICAgICRhc20ucHV0cyAibGRyc2gudyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJh
bmRzKX0iCisgICAgICAgIHdoZW4gInN0b3JlaCIKKyAgICAgICAgICAgICRhc20ucHV0cyAic3Ry
aCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAgd2hlbiAibG9hZGQiCisgICAg
ICAgICAgICAkYXNtLnB1dHMgInZsZHIuNjQgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5k
cyl9IgorICAgICAgICB3aGVuICJzdG9yZWQiCisgICAgICAgICAgICAkYXNtLnB1dHMgInZzdHIu
NjQgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIHdoZW4gImFkZGQiCisgICAg
ICAgICAgICBlbWl0QXJtVjcoInZhZGQuZjY0Iiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gImRp
dmQiCisgICAgICAgICAgICBlbWl0QXJtVjcoInZkaXYuZjY0Iiwgb3BlcmFuZHMpCisgICAgICAg
IHdoZW4gInN1YmQiCisgICAgICAgICAgICBlbWl0QXJtVjcoInZzdWIuZjY0Iiwgb3BlcmFuZHMp
CisgICAgICAgIHdoZW4gIm11bGQiCisgICAgICAgICAgICBlbWl0QXJtVjcoInZtdWwuZjY0Iiwg
b3BlcmFuZHMpCisgICAgICAgIHdoZW4gInNxcnRkIgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2
c3FydC5mNjQgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICB3aGVu
ICJjaTJkIgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMV0uYXJtVjdT
aW5nbGV9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAgICAgICAkYXNtLnB1
dHMgInZjdnQuZjY0LnMzMiAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNb
MV0uYXJtVjdTaW5nbGV9IgorICAgICAgICB3aGVuICJiZGVxIgorICAgICAgICAgICAgZW1pdEFy
bVY3RG91YmxlQnJhbmNoKCJiZXEiLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAiYmRuZXEiCisg
ICAgICAgICAgICAkYXNtLnB1dHMgInZjbXBlLmY2NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNb
MC4uMV0pfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2NyIgor
ICAgICAgICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXEiKQorICAg
ICAgICAgICAgJGFzbS5wdXRzICJidnMgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwg
aXNVbm9yZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYm5lICN7b3Bl
cmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIkFSTXY3
IikKKyAgICAgICAgd2hlbiAiYmRndCIKKyAgICAgICAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5j
aCgiYmd0Iiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgICAgICAgIGVt
aXRBcm1WN0RvdWJsZUJyYW5jaCgiYmdlIiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gImJkbHQi
CisgICAgICAgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJtaSIsIG9wZXJhbmRzKQorICAg
ICAgICB3aGVuICJiZGx0ZXEiCisgICAgICAgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJs
cyIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJiZGVxdW4iCisgICAgICAgICAgICAkYXNtLnB1
dHMgInZjbXBlLmY2NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2NyIgorICAgICAgICAgICAgJGFzbS5w
dXRzICJidnMgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICAkYXNtLnB1dHMg
ImJlcSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYmRuZXF1biIKKyAg
ICAgICAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYm5lIiwgb3BlcmFuZHMpCisgICAgICAg
IHdoZW4gImJkZ3R1biIKKyAgICAgICAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmhpIiwg
b3BlcmFuZHMpCisgICAgICAgIHdoZW4gImJkZ3RlcXVuIgorICAgICAgICAgICAgZW1pdEFybVY3
RG91YmxlQnJhbmNoKCJicGwiLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAiYmRsdHVuIgorICAg
ICAgICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJibHQiLCBvcGVyYW5kcykKKyAgICAgICAg
d2hlbiAiYmRsdGVxdW4iCisgICAgICAgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJsZSIs
IG9wZXJhbmRzKQorICAgICAgICB3aGVuICJidGQyaSIKKyAgICAgICAgICAgICMgRklYTUU6IG1h
eSBiZSBhIGdvb2QgaWRlYSB0byBqdXN0IGdldCByaWQgb2YgdGhpcyBpbnN0cnVjdGlvbiwgc2lu
Y2UgdGhlIGludGVycHJldGVyCisgICAgICAgICAgICAjIGN1cnJlbnRseSBkb2VzIG5vdCB1c2Ug
aXQuCisgICAgICAgICAgICByYWlzZSAiQVJNdjcgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wY29k
ZSB5ZXQsICN7Y29kZU9yaWdpbn0iCisgICAgICAgIHdoZW4gInRkMmkiCisgICAgICAgICAgICAk
YXNtLnB1dHMgInZjdnQuczMyLmY2NCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSwg
I3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2bW92
ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1Np
bmdsZX0iCisgICAgICAgIHdoZW4gImJjZDJpIgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2Y3Z0
LnMzMi5mNjQgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0sICN7b3BlcmFuZHNbMF0u
YXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzFd
LmFybVY3T3BlcmFuZH0sICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJtVjdTaW5nbGV9IgorICAgICAg
ICAgICAgJGFzbS5wdXRzICJ2Y3Z0LmY2NC5zMzIgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN09w
ZXJhbmR9LCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSIKKyAgICAgICAgICAgIGVt
aXRBcm1WN0RvdWJsZUJyYW5jaCgiYm5lIiwgW0FSTXY3X1NDUkFUQ0hfRlBSLCBvcGVyYW5kc1sw
XSwgb3BlcmFuZHNbMl1dKQorICAgICAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5kc1sx
XS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgICAgICAg
ICAkYXNtLnB1dHMgImJlcSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAi
bW92ZHoiCisgICAgICAgICAgICAjIEZJWE1FOiBlaXRoZXIgc3VwcG9ydCB0aGlzIG9yIHJlbW92
ZSBpdC4KKyAgICAgICAgICAgIHJhaXNlICJBUk12NyBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3Bj
b2RlIHlldCwgI3tjb2RlT3JpZ2lufSIKKyAgICAgICAgd2hlbiAicG9wIgorICAgICAgICAgICAg
JGFzbS5wdXRzICJwb3AgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICB3aGVu
ICJwdXNoIgorICAgICAgICAgICAgJGFzbS5wdXRzICJwdXNoICN7b3BlcmFuZHNbMF0uYXJtVjdP
cGVyYW5kfSIKKyAgICAgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6eGkycCIKKyAgICAgICAg
ICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgICAgIGFybVY3
TW92ZUltbWVkaWF0ZShvcGVyYW5kc1swXS52YWx1ZSwgb3BlcmFuZHNbMV0pCisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJtb3YgI3thcm1WN0ZsaXBwZWRPcGVy
YW5kcyhvcGVyYW5kcyl9IgorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gIm5vcCIKKyAg
ICAgICAgICAgICRhc20ucHV0cyAibm9wIgorICAgICAgICB3aGVuICJiaWVxIiwgImJwZXEiLCAi
YmJlcSIKKyAgICAgICAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1sw
XQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAidHN0ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVy
YW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgZWxzaWYgSW1t
ZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzFdCisgICAgICAgICAgICAgICAgJGFzbS5w
dXRzICJ0c3QgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3
T3BlcmFuZH0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJj
bXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICAgICBlbmQKKyAg
ICAgICAgICAgICRhc20ucHV0cyAiYmVxICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAg
ICB3aGVuICJiaW5lcSIsICJicG5lcSIsICJiYm5lcSIKKyAgICAgICAgICAgIGlmIEltbWVkaWF0
ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAi
dHN0ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJh
bmR9IgorICAgICAgICAgICAgZWxzaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRz
WzFdCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5kc1swXS5hcm1WN09w
ZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAu
LjFdKX0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICRhc20ucHV0cyAiYm5lICN7b3Bl
cmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJiaWEiLCAiYnBhIiwgImJiYSIKKyAg
ICAgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9
IgorICAgICAgICAgICAgJGFzbS5wdXRzICJiaGkgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisg
ICAgICAgIHdoZW4gImJpYWVxIiwgImJwYWVxIiwgImJiYWVxIgorICAgICAgICAgICAgJGFzbS5w
dXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICAgICAk
YXNtLnB1dHMgImJocyAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYmli
IiwgImJwYiIsICJiYmIiCisgICAgICAgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFu
ZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYmxvICN7b3BlcmFu
ZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJiaWJlcSIsICJicGJlcSIsICJiYmJlcSIK
KyAgICAgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4x
XSl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJibHMgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0i
CisgICAgICAgIHdoZW4gImJpZ3QiLCAiYnBndCIsICJiYmd0IgorICAgICAgICAgICAgJGFzbS5w
dXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICAgICAk
YXNtLnB1dHMgImJndCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYmln
dGVxIiwgImJwZ3RlcSIsICJiYmd0ZXEiCisgICAgICAgICAgICAkYXNtLnB1dHMgImNtcCAje2Fy
bVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYmdl
ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJiaWx0IiwgImJwbHQiLCAi
YmJsdCIKKyAgICAgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5k
c1swLi4xXSl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJibHQgI3tvcGVyYW5kc1syXS5hc21M
YWJlbH0iCisgICAgICAgIHdoZW4gImJpbHRlcSIsICJicGx0ZXEiLCAiYmJsdGVxIgorICAgICAg
ICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisg
ICAgICAgICAgICAkYXNtLnB1dHMgImJsZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAg
ICAgd2hlbiAiYnRpeiIsICJidHB6IiwgImJ0YnoiCisgICAgICAgICAgICBlbWl0QXJtVjdUZXN0
KG9wZXJhbmRzKQorICAgICAgICAgICAgJGFzbS5wdXRzICJiZXEgI3tvcGVyYW5kc1stMV0uYXNt
TGFiZWx9IgorICAgICAgICB3aGVuICJidGlueiIsICJidHBueiIsICJidGJueiIKKyAgICAgICAg
ICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgICAgICAgICAgICAkYXNtLnB1dHMgImJuZSAj
e29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImJ0aW8iLCAiYnRwbyIsICJi
dGJvIgorICAgICAgICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgICAgICAgICAgICRh
c20ucHV0cyAiYnZzICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYnRp
cyIsICJidHBzIiwgImJ0YnMiCisgICAgICAgICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQor
ICAgICAgICAgICAgJGFzbS5wdXRzICJibWkgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgorICAg
ICAgICB3aGVuICJqbXAiCisgICAgICAgICAgICBpZiBvcGVyYW5kc1swXS5sYWJlbD8KKyAgICAg
ICAgICAgICAgICAkYXNtLnB1dHMgImIgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJtb3YgcGMsICN7b3BlcmFuZHNb
MF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJjYWxsIgor
ICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAgICAgICAgICAgJGFzbS5w
dXRzICJibHggI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgJGFzbS5wdXRzICJibHggI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9Igor
ICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gImJyZWFrIgorICAgICAgICAgICAgJGFzbS5w
dXRzICJia3B0IgorICAgICAgICB3aGVuICJyZXQiCisgICAgICAgICAgICAkYXNtLnB1dHMgImJ4
IGxyIgorICAgICAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICAgICAgICBlbWl0QXJtVjdD
b21wYXJlKG9wZXJhbmRzLCAiZXEiKQorICAgICAgICB3aGVuICJjaW5lcSIsICJjcG5lcSIKKyAg
ICAgICAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJuZSIpCisgICAgICAgIHdoZW4g
ImNpYSIsICJjcGEiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiaGki
KQorICAgICAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAgICAgICAgICAgIGVtaXRBcm1WN0Nv
bXBhcmUob3BlcmFuZHMsICJocyIpCisgICAgICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAgICAg
ICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibG8iKQorICAgICAgICB3aGVuICJjaWJl
cSIsICJjcGJlcSIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJscyIp
CisgICAgICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBh
cmUob3BlcmFuZHMsICJndCIpCisgICAgICAgIHdoZW4gImNpZ3RlcSIsICJjcGd0ZXEiCisgICAg
ICAgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiZ2UiKQorICAgICAgICB3aGVuICJj
aWx0IiwgImNwbHQiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibHQi
KQorICAgICAgICB3aGVuICJjaWx0ZXEiLCAiY3BsdGVxIgorICAgICAgICAgICAgZW1pdEFybVY3
Q29tcGFyZShvcGVyYW5kcywgImxlIikKKyAgICAgICAgd2hlbiAidGlvIiwgInRibyIKKyAgICAg
ICAgICAgIGVtaXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMsICJ2cyIpCisgICAgICAgIHdoZW4gInRp
cyIsICJ0YnMiCisgICAgICAgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAibWkiKQor
ICAgICAgICB3aGVuICJ0aXoiLCAidGJ6IgorICAgICAgICAgICAgZW1pdEFybVY3VGVzdFNldChv
cGVyYW5kcywgImVxIikKKyAgICAgICAgd2hlbiAidGlueiIsICJ0Ym56IgorICAgICAgICAgICAg
ZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywgIm5lIikKKyAgICAgICAgd2hlbiAicGVlayIKKyAg
ICAgICAgICAgICRhc20ucHV0cyAibGRyICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgW3Nw
LCBcIyN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fV0iCisgICAgICAgIHdoZW4gInBva2UiCisgICAg
ICAgICAgICAkYXNtLnB1dHMgInN0ciAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sIFtzcCwg
XCMje29wZXJhbmRzWzBdLnZhbHVlICogNH1dIgorICAgICAgICB3aGVuICJmaWkyZCIKKyAgICAg
ICAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3Bl
cmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAg
ICAgICB3aGVuICJmZDJpaSIKKyAgICAgICAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRz
WzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICB3aGVuICJibyIKKyAgICAgICAgICAgICRhc20u
cHV0cyAiYnZzICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJicyIKKyAg
ICAgICAgICAgICRhc20ucHV0cyAiYm1pICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAg
ICB3aGVuICJieiIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYmVxICN7b3BlcmFuZHNbMF0uYXNt
TGFiZWx9IgorICAgICAgICB3aGVuICJibnoiCisgICAgICAgICAgICAkYXNtLnB1dHMgImJuZSAj
e29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAibGVhaSIsICJsZWFwIgorICAg
ICAgICAgICAgb3BlcmFuZHNbMF0uYXJtVjdFbWl0TGVhKG9wZXJhbmRzWzFdKQorICAgICAgICB3
aGVuICJzbXVsbGkiCisgICAgICAgICAgICByYWlzZSAiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50
cyB0byBzbXVsbCBpbiAje3NlbGYuaW5zcGVjdH0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5s
ZXNzIG9wZXJhbmRzLmxlbmd0aCA9PSA0CisgICAgICAgICAgICAkYXNtLnB1dHMgInNtdWxsICN7
b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1szXS5hcm1WN09wZXJhbmR9LCAj
e29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIlVuaGFuZGxlZCBvcGNvZGUgI3tvcGNv
ZGV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTcyIEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKwor
cmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNl
dHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZWxmX2hhc2giCityZXF1aXJlICJzZXR0
aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworY2xhc3MgQXNzZW1ibGVyCisgICAgZGVmIGlu
aXRpYWxpemUob3V0cCkKKyAgICAgICAgQG91dHAgPSBvdXRwCisgICAgICAgIEBzdGF0ZSA9IDpj
cHAKKyAgICAgICAgQGNvbW1lbnRTdGF0ZSA9IDpub25lCisgICAgICAgIEBjb21tZW50ID0gbmls
CisgICAgZW5kCisgICAgCisgICAgZGVmIGVudGVyQXNtCisgICAgICAgIEBvdXRwLnB1dHMgImFz
bSAoIgorICAgICAgICBAc3RhdGUgPSA6YXNtCisgICAgZW5kCisgICAgCisgICAgZGVmIGxlYXZl
QXNtCisgICAgICAgIHB1dHNMYXN0Q29tbWVudAorICAgICAgICBAb3V0cC5wdXRzICIpOyIKKyAg
ICAgICAgQHN0YXRlID0gOmNwcAorICAgIGVuZAorICAgIAorICAgIGRlZiBpbkFzbQorICAgICAg
ICBlbnRlckFzbQorICAgICAgICB5aWVsZAorICAgICAgICBsZWF2ZUFzbQorICAgIGVuZAorICAg
IAorICAgIGRlZiBsYXN0Q29tbWVudAorICAgICAgICBpZiBAY29tbWVudAorICAgICAgICAgICAg
cmVzdWx0ID0gIi8vICN7QGNvbW1lbnR9IgorICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1
bHQgPSAiIgorICAgICAgICBlbmQKKyAgICAgICAgQGNvbW1lbnRTdGF0ZSA9IDpub25lCisgICAg
ICAgIEBjb21tZW50ID0gbmlsCisgICAgICAgIHJlc3VsdAorICAgIGVuZAorICAgIAorICAgIGRl
ZiBwdXRzTGFzdENvbW1lbnQKKyAgICAgICAgY29tbWVudCA9IGxhc3RDb21tZW50CisgICAgICAg
IHVubGVzcyBjb21tZW50LmVtcHR5PworICAgICAgICAgICAgQG91dHAucHV0cyBjb21tZW50Cisg
ICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBwdXRzKCpsaW5lKQorICAgICAgICBy
YWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICAgICAgQG91dHAucHV0cygiXCJcXHQiICsg
bGluZS5qb2luKCcnKSArICJcXG5cIiAje2xhc3RDb21tZW50fSIpCisgICAgZW5kCisgICAgCisg
ICAgZGVmIHByaW50KGxpbmUpCisgICAgICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQor
ICAgICAgICBAb3V0cC5wcmludCgiXCIiICsgbGluZSArICJcIiIpCisgICAgZW5kCisgICAgCisg
ICAgZGVmIHB1dHNMYWJlbChsYWJlbE5hbWUpCisgICAgICAgIHJhaXNlIHVubGVzcyBAc3RhdGUg
PT0gOmFzbQorICAgICAgICBAb3V0cC5wdXRzKCJPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwoI3ts
YWJlbE5hbWV9KSAje2xhc3RDb21tZW50fSIpCisgICAgZW5kCisgICAgCisgICAgZGVmIHB1dHNM
b2NhbExhYmVsKGxhYmVsTmFtZSkKKyAgICAgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNt
CisgICAgICAgIEBvdXRwLnB1dHMoIkxPQ0FMX0xBQkVMX1NUUklORygje2xhYmVsTmFtZX0pIFwi
OlxcblwiICN7bGFzdENvbW1lbnR9IikKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc2VsZi5sYWJl
bFJlZmVyZW5jZShsYWJlbE5hbWUpCisgICAgICAgICJcIiBTWU1CT0xfU1RSSU5HKCN7bGFiZWxO
YW1lfSkgXCIiCisgICAgZW5kCisgICAgCisgICAgZGVmIHNlbGYubG9jYWxMYWJlbFJlZmVyZW5j
ZShsYWJlbE5hbWUpCisgICAgICAgICJcIiBMT0NBTF9MQUJFTF9TVFJJTkcoI3tsYWJlbE5hbWV9
KSBcIiIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY29tbWVudCh0ZXh0KQorICAgICAgICBjYXNl
IEBjb21tZW50U3RhdGUKKyAgICAgICAgd2hlbiA6bm9uZQorICAgICAgICAgICAgQGNvbW1lbnQg
PSB0ZXh0CisgICAgICAgICAgICBAY29tbWVudFN0YXRlID0gOm9uZQorICAgICAgICB3aGVuIDpv
bmUKKyAgICAgICAgICAgIEBvdXRwLnB1dHMgIi8vICN7QGNvbW1lbnR9IgorICAgICAgICAgICAg
QG91dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgICAgICAgICAgIEBjb21tZW50ID0gbmlsCisgICAg
ICAgICAgICBAY29tbWVudFN0YXRlID0gOm1hbnkKKyAgICAgICAgd2hlbiA6bWFueQorICAgICAg
ICAgICAgQG91dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
cmFpc2UKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworYXNtRmlsZSA9IEFSR1Yuc2hpZnQK
K29mZnNldHNGaWxlID0gQVJHVi5zaGlmdAorb3V0cHV0RmxubSA9IEFSR1Yuc2hpZnQKKworJHN0
ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBQYXJzaW5nICN7YXNtRmlsZX0gYW5kICN7b2Zmc2V0c0Zp
bGV9IGFuZCBjcmVhdGluZyBhc3NlbWJseSBmaWxlICN7b3V0cHV0RmxubX0uIgorCitvZmZzZXRz
TGlzdCwgY29uZmlnSW5kZXggPSBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KG9mZnNldHNG
aWxlKQoraW5wdXREYXRhID0gSU86OnJlYWQoYXNtRmlsZSkKKworaW5wdXRIYXNoID0KKyAgICAi
Ly8gb2ZmbGluZWFzbSBpbnB1dCBoYXNoOiAiICsgRGlnZXN0OjpTSEExLmhleGRpZ2VzdChpbnB1
dERhdGEpICsKKyAgICAiICIgKyBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KChvZmZzZXRzTGlzdCAr
IFtjb25maWdJbmRleF0pLmpvaW4oJyAnKSkgKworICAgICIgIiArIHNlbGZIYXNoCisKK2lmIEZp
bGVUZXN0LmV4aXN0PyBvdXRwdXRGbG5tCisgICAgRmlsZS5vcGVuKG91dHB1dEZsbm0sICJyIikg
eworICAgICAgICB8IGlucCB8CisgICAgICAgIGZpcnN0TGluZSA9IGlucC5nZXRzCisgICAgICAg
IGlmIGZpcnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09IGlucHV0SGFzaAorICAgICAgICAg
ICAgJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBOb3RoaW5nIGNoYW5nZWQuIgorICAgICAgICAg
ICAgZXhpdCAwCisgICAgICAgIGVuZAorICAgIH0KK2VuZAorCitGaWxlLm9wZW4ob3V0cHV0Rmxu
bSwgInciKSB7CisgICAgfCBvdXRwIHwKKyAgICAkb3V0cHV0ID0gb3V0cAorICAgICRvdXRwdXQu
cHV0cyBpbnB1dEhhc2gKKyAgICAKKyAgICAkYXNtID0gQXNzZW1ibGVyLm5ldygkb3V0cHV0KQor
ICAgIAorICAgIGFzdCA9IHBhcnNlKGxleChpbnB1dERhdGEpKQorICAgIAorICAgIGZvclNldHRp
bmdzKGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpW2NvbmZpZ0luZGV4XSwgYXN0KSB7
CisgICAgICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAg
ICAgICBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgICAgICAgIGxvd0xl
dmVsQVNUID0gbG93TGV2ZWxBU1QucmVzb2x2ZSgqYnVpbGRPZmZzZXRzTWFwKGxvd0xldmVsQVNU
LCBvZmZzZXRzTGlzdCkpCisgICAgICAgIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRl
U2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kKSB7CisgICAgICAgICAgICAkYXNtLmluQXNt
IHsKKyAgICAgICAgICAgICAgICBsb3dMZXZlbEFTVC5sb3dlcihiYWNrZW5kKQorICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorfQorCiskc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IEFz
c2VtYmx5IGZpbGUgI3tvdXRwdXRGbG5tfSBzdWNjZXNzZnVsbHkgZ2VuZXJhdGVkLiIKKwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMDM5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisj
CisjIEJhc2UgdXRpbGl0eSB0eXBlcyBmb3IgdGhlIEFTVC4KKyMKKworIyBWYWxpZCBtZXRob2Rz
IGZvciBOb2RlOgorIworIyBub2RlLmNoaWxkcmVuIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgaW1t
ZWRpYXRlIGNoaWxkcmVuLgorIworIyBub2RlLmRlc2NlbmRlbnRzIC0+IFJldHVybnMgYW4gYXJy
YXkgb2YgYWxsIHN0cmljdCBkZXNjZW5kYW50cyAoY2hpbGRyZW4KKyMgICAgIGFuZCBjaGlsZHJl
biBvZiBjaGlsZHJlbiwgdHJhbnNpdGl2ZWx5KS4KKyMKKyMgbm9kZS5mbGF0dGVuIC0+IFJldHVy
bnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgc3RyaWN0IGRlc2NlbmRhbnRzIGFuZAorIyAgICAg
dGhlIG5vZGUgaXRzZWxmLgorIworIyBub2RlLmZpbHRlcih0eXBlKSAtPiBSZXR1cm5zIGFuIGFy
cmF5IGNvbnRhaW5pbmcgdGhvc2UgZWxlbWVudHMgaW4KKyMgICAgIG5vZGUuZmxhdHRlbiB0aGF0
IGFyZSBvZiB0aGUgZ2l2ZW4gdHlwZSAoaXNfYT8gdHlwZSByZXR1cm5zIHRydWUpLgorIworIyBu
b2RlLm1hcENoaWxkcmVue3x2fCAuLi59IC0+IFJldHVybnMgYSBuZXcgbm9kZSB3aXRoIGFsbCBj
aGlsZHJlbgorIyAgICAgcmVwbGFjZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBibG9jay4KKyMK
KyMgRXhhbXBsZXM6CisjCisjIG5vZGUuZmlsdGVyKFNldHRpbmcpLnVuaXEgLT4gUmV0dXJucyBh
bGwgb2YgdGhlIHNldHRpbmdzIHRoYXQgdGhlIEFTVCdzCisjICAgICBJZlRoZW5FbHNlIGJsb2Nr
cyBkZXBlbmQgb24uCisjCisjIG5vZGUuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcSAtPiBSZXR1
cm5zIGFsbCBvZiB0aGUgc3RydWN0dXJlIG9mZnNldHMKKyMgICAgIHRoYXQgdGhlIEFTVCBkZXBl
bmRzIG9uLgorCitjbGFzcyBOb2RlCisgICAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAgICAK
KyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgICAgICBAY29kZU9yaWdpbiA9IGNv
ZGVPcmlnaW4KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY29kZU9yaWdpblN0cmluZworICAgICAg
ICAibGluZSBudW1iZXIgI3tAY29kZU9yaWdpbn0iCisgICAgZW5kCisgICAgCisgICAgZGVmIGRl
c2NlbmRhbnRzCisgICAgICAgIGNoaWxkcmVuLmNvbGxlY3R7fHZ8IHYuZmxhdHRlbn0uZmxhdHRl
bgorICAgIGVuZAorICAgIAorICAgIGRlZiBmbGF0dGVuCisgICAgICAgIFtzZWxmXSArIGRlc2Nl
bmRhbnRzCisgICAgZW5kCisgICAgCisgICAgZGVmIGZpbHRlcih0eXBlKQorICAgICAgICBmbGF0
dGVuLnNlbGVjdHt8dnwgdi5pc19hPyB0eXBlfQorICAgIGVuZAorZW5kCisKK2NsYXNzIE5vQ2hp
bGRyZW4gPCBOb2RlCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICAgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRyZW4KKyAgICAgICAg
W10KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hpbGRyZW4KKyAgICAgICAgc2VsZgorICAg
IGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldEtleQorICAgIGF0dHJfcmVhZGVyIDpzdHJ1
Y3QsIDpmaWVsZAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKHN0cnVjdCwgZmllbGQpCisgICAg
ICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICAgICAgQGZpZWxkID0gZmllbGQKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgaGFzaAorICAgICAgICBAc3RydWN0Lmhhc2ggKyBAZmllbGQuaGFzaCAqIDMK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgZXFsPyhvdGhlcikKKyAgICAgICAgQHN0cnVjdCA9PSBv
dGhlci5zdHJ1Y3QgYW5kIEBmaWVsZCA9PSBvdGhlci5maWVsZAorICAgIGVuZAorZW5kCisKKyMK
KyMgQVNUIG5vZGVzLgorIworCitjbGFzcyBTdHJ1Y3RPZmZzZXQgPCBOb0NoaWxkcmVuCisgICAg
YXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAg
ICAgQHN0cnVjdCA9IHN0cnVjdAorICAgICAgICBAZmllbGQgPSBmaWVsZAorICAgIGVuZAorICAg
IAorICAgIEBAbWFwcGluZyA9IHt9CisgICAgCisgICAgZGVmIHNlbGYuZm9yRmllbGQoY29kZU9y
aWdpbiwgc3RydWN0LCBmaWVsZCkKKyAgICAgICAga2V5ID0gU3RydWN0T2Zmc2V0S2V5Lm5ldyhz
dHJ1Y3QsIGZpZWxkKQorICAgICAgICAKKyAgICAgICAgdW5sZXNzIEBAbWFwcGluZ1trZXldCisg
ICAgICAgICAgICBAQG1hcHBpbmdba2V5XSA9IFN0cnVjdE9mZnNldC5uZXcoY29kZU9yaWdpbiwg
c3RydWN0LCBmaWVsZCkKKyAgICAgICAgZW5kCisgICAgICAgIEBAbWFwcGluZ1trZXldCisgICAg
ZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIiN7c3RydWN0fTo6I3tmaWVsZH0iCisg
ICAgZW5kCisgICAgCisgICAgZGVmIDw9PihvdGhlcikKKyAgICAgICAgaWYgQHN0cnVjdCAhPSBv
dGhlci5zdHJ1Y3QKKyAgICAgICAgICAgIHJldHVybiBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QK
KyAgICAgICAgZW5kCisgICAgICAgIEBmaWVsZCA8PT4gb3RoZXIuZmllbGQKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0
ZT8KKyAgICAgICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAgICAg
ICAgZmFsc2UKKyAgICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YgPCBOb0NoaWxkcmVuCisgICAg
YXR0cl9yZWFkZXIgOnN0cnVjdAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IHN0cnVjdCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQHN0cnVjdCA9IHN0
cnVjdAorICAgIGVuZAorICAgIAorICAgIEBAbWFwcGluZyA9IHt9CisgICAgCisgICAgZGVmIHNl
bGYuZm9yTmFtZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgICAgIHVubGVzcyBAQG1hcHBpbmdb
c3RydWN0XQorICAgICAgICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBTaXplb2YubmV3KGNvZGVP
cmlnaW4sIHN0cnVjdCkKKyAgICAgICAgZW5kCisgICAgICAgIEBAbWFwcGluZ1tzdHJ1Y3RdCisg
ICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgInNpemVvZiAje0BzdHJ1Y3R9Igor
ICAgIGVuZAorICAgIAorICAgIGRlZiA8PT4ob3RoZXIpCisgICAgICAgIEBzdHJ1Y3QgPD0+IG90
aGVyLnN0cnVjdAorICAgIGVuZAorICAgIAorICAgIGRlZiBhZGRyZXNzPworICAgICAgICBmYWxz
ZQorICAgIGVuZAorICAgIAorICAgIGRlZiBsYWJlbD8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgaW1tZWRpYXRlPworICAgICAgICB0cnVlCisgICAgZW5kCisgICAgCisg
ICAgZGVmIHJlZ2lzdGVyPworICAgICAgICBmYWxzZQorICAgIGVuZAorZW5kCisKK2NsYXNzIElt
bWVkaWF0ZSA8IE5vQ2hpbGRyZW4KKyAgICBhdHRyX3JlYWRlciA6dmFsdWUKKyAgICAKKyAgICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICAgICAgQHZhbHVlID0gdmFsdWUKKyAgICAgICAgcmFpc2UgIkJhZCBpbW1lZGlhdGUg
dmFsdWUgI3t2YWx1ZS5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgdmFs
dWUuaXNfYT8gSW50ZWdlcgorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICIj
e3ZhbHVlfSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgPT0ob3RoZXIpCisgICAgICAgIG90aGVy
LmlzX2E/IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUgPT0gQHZhbHVlCisgICAgZW5kCisgICAg
CisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVm
IGxhYmVsPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBpbW1lZGlhdGU/
CisgICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/CisgICAgICAg
IGZhbHNlCisgICAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAgICBh
dHRyX3JlYWRlciA6bGVmdCwgOnJpZ2h0CisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgbGVmdCwgcmlnaHQpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBs
ZWZ0ID0gbGVmdAorICAgICAgICBAcmlnaHQgPSByaWdodAorICAgIGVuZAorICAgIAorICAgIGRl
ZiBjaGlsZHJlbgorICAgICAgICBbQGxlZnQsIEByaWdodF0KKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgbWFwQ2hpbGRyZW4KKyAgICAgICAgQWRkSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAK
KyAgICAgICAgIigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
bGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8K
KyAgICAgICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAgICAgICAg
ZmFsc2UKKyAgICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzIDwgTm9kZQorICAgIGF0
dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBsZWZ0LCByaWdodCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQGxl
ZnQgPSBsZWZ0CisgICAgICAgIEByaWdodCA9IHJpZ2h0CisgICAgZW5kCisgICAgCisgICAgZGVm
IGNoaWxkcmVuCisgICAgICAgIFtAbGVmdCwgQHJpZ2h0XQorICAgIGVuZAorICAgIAorICAgIGRl
ZiBtYXBDaGlsZHJlbgorICAgICAgICBTdWJJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWll
bGQgQGxlZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAor
ICAgICAgICAiKCN7bGVmdC5kdW1wfSAtICN7cmlnaHQuZHVtcH0pIgorICAgIGVuZAorICAgIAor
ICAgIGRlZiBhZGRyZXNzPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBs
YWJlbD8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaW1tZWRpYXRlPwor
ICAgICAgICB0cnVlCisgICAgZW5kCisgICAgCisgICAgZGVmIHJlZ2lzdGVyPworICAgICAgICBm
YWxzZQorICAgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMgPCBOb2RlCisgICAgYXR0
cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIGxlZnQsIHJpZ2h0KQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAbGVm
dCA9IGxlZnQKKyAgICAgICAgQHJpZ2h0ID0gcmlnaHQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
Y2hpbGRyZW4KKyAgICAgICAgW0BsZWZ0LCBAcmlnaHRdCisgICAgZW5kCisgICAgCisgICAgZGVm
IG1hcENoaWxkcmVuCisgICAgICAgIE11bEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVs
ZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisg
ICAgICAgICIoI3tsZWZ0LmR1bXB9ICogI3tyaWdodC5kdW1wfSkiCisgICAgZW5kCisgICAgCisg
ICAgZGVmIGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGxh
YmVsPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBpbW1lZGlhdGU/Cisg
ICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/CisgICAgICAgIGZh
bHNlCisgICAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlIDwgTm9kZQorICAgIGF0dHJf
cmVhZGVyIDpjaGlsZAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxk
KQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAY2hpbGQgPSBjaGlsZAorICAg
IGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBbQGNoaWxkXQorICAgIGVuZAor
ICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbgorICAgICAgICBOZWdJbW1lZGlhdGUubmV3KGNvZGVP
cmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAg
ICAgICIoLSN7QGNoaWxkLmR1bXB9KSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8K
KyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZh
bHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAgdHJ1ZQorICAg
IGVuZAorICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKK2Vu
ZAorCitjbGFzcyBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICAgIGF0dHJfcmVhZGVyIDpuYW1l
CisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICAgICAgQG5hbWUgPSBuYW1lCisgICAgZW5kCisgICAgCisgICAg
QEBtYXBwaW5nID0ge30KKyAgICAKKyAgICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5h
bWUpCisgICAgICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgICAgICAgIEBAbWFwcGlu
Z1tuYW1lXSA9IFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVuZAor
ICAgICAgICBAQG1hcHBpbmdbbmFtZV0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAg
ICAgICBuYW1lCisgICAgZW5kCisgICAgCisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIGZhbHNl
CisgICAgZW5kCisgICAgCisgICAgZGVmIGxhYmVsPworICAgICAgICBmYWxzZQorICAgIGVuZAor
ICAgIAorICAgIGRlZiBpbW1lZGlhdGU/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisg
ICAgZGVmIHJlZ2lzdGVyPworICAgICAgICB0cnVlCisgICAgZW5kCitlbmQKKworY2xhc3MgRlBS
ZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICAgIGF0dHJfcmVhZGVyIDpuYW1lCisgICAgCisgICAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICAgICAgQG5hbWUgPSBuYW1lCisgICAgZW5kCisgICAgCisgICAgQEBtYXBwaW5nID0g
e30KKyAgICAKKyAgICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAg
IHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgICAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IEZQ
UmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBA
bWFwcGluZ1tuYW1lXQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgIG5hbWUK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAg
ZGVmIGltbWVkaWF0ZT8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVn
aXN0ZXI/CisgICAgICAgIHRydWUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZSA8IE5v
Q2hpbGRyZW4KKyAgICBhdHRyX3JlYWRlciA6bmFtZQorICAgIAorICAgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBu
YW1lID0gbmFtZQorICAgIGVuZAorICAgIAorICAgIEBAbWFwcGluZyA9IHt9CisgICAgCisgICAg
ZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICB1bmxlc3MgQEBtYXBw
aW5nW25hbWVdCisgICAgICAgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBWYXJpYWJsZS5uZXcoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBAbWFwcGluZ1tuYW1lXQorICAg
IGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgIG5hbWUKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBBZGRyZXNzIDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpiYXNlLCA6b2Zmc2V0CisgICAg
CisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwgb2Zmc2V0KQorICAgICAgICBz
dXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAYmFzZSA9IGJhc2UKKyAgICAgICAgQG9mZnNldCA9
IG9mZnNldAorICAgICAgICByYWlzZSAiQmFkIGJhc2UgZm9yIGFkZHJlc3MgI3tiYXNlLmluc3Bl
Y3R9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBiYXNlLmlzX2E/IFZhcmlhYmxlIG9y
IGJhc2UucmVnaXN0ZXI/CisgICAgICAgIHJhaXNlICJCYWQgb2Zmc2V0IGZvciBhZGRyZXNzICN7
b2Zmc2V0Lmluc3BlY3R9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBvZmZzZXQuaXNf
YT8gVmFyaWFibGUgb3Igb2Zmc2V0LmltbWVkaWF0ZT8KKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
Y2hpbGRyZW4KKyAgICAgICAgW0BiYXNlLCBAb2Zmc2V0XQorICAgIGVuZAorICAgIAorICAgIGRl
ZiBtYXBDaGlsZHJlbgorICAgICAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJh
c2UpLCAoeWllbGQgQG9mZnNldCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAg
ICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfV0iCisgICAgZW5kCisgICAgCisgICAgZGVm
IGFkZHJlc3M/CisgICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/Cisg
ICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAg
ZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/CisgICAgICAgIGZhbHNlCisg
ICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpi
YXNlLCA6aW5kZXgsIDpzY2FsZSwgOm9mZnNldAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAgICAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgICAgICBAYmFzZSA9IGJhc2UKKyAgICAgICAgQGluZGV4ID0gaW5kZXgKKyAg
ICAgICAgQHNjYWxlID0gc2NhbGUKKyAgICAgICAgcmFpc2UgdW5sZXNzIFsxLCAyLCA0LCA4XS5t
ZW1iZXI/IEBzY2FsZQorICAgICAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgICAgZW5kCisgICAgCisg
ICAgZGVmIHNjYWxlU2hpZnQKKyAgICAgICAgY2FzZSBzY2FsZQorICAgICAgICB3aGVuIDEKKyAg
ICAgICAgICAgIDAKKyAgICAgICAgd2hlbiAyCisgICAgICAgICAgICAxCisgICAgICAgIHdoZW4g
NAorICAgICAgICAgICAgMgorICAgICAgICB3aGVuIDgKKyAgICAgICAgICAgIDMKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmFpc2UgIkJhZCBzY2FsZSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9
IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRyZW4KKyAgICAgICAg
W0BiYXNlLCBAaW5kZXgsIEBvZmZzZXRdCisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxk
cmVuCisgICAgICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlp
ZWxkIEBpbmRleCksIEBzY2FsZSwgKHlpZWxkIEBvZmZzZXQpKQorICAgIGVuZAorICAgIAorICAg
IGRlZiBkdW1wCisgICAgICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH0sICN7aW5kZXgu
ZHVtcH0sICN7c2NhbGV9XSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAg
ICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiBsYWJlbD8KKyAgICAgICAgZmFsc2UKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgaW1tZWRpYXRlPworICAgICAgICBmYWxzZQorICAgIGVuZAor
ICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBBYnNvbHV0ZUFkZHJlc3MgPCBOb0NoaWxkcmVuCisgICAgYXR0cl9yZWFkZXIgOmFkZHJl
c3MKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBhZGRyZXNzKQorICAgICAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICAiI3thZGRyZXNzLmR1bXB9W10iCisgICAgZW5k
CisgICAgCisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVk
aWF0ZT8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/Cisg
ICAgICAgIGZhbHNlCisgICAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24gPCBOb2RlCisg
ICAgYXR0cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisgICAgCisgICAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgb3Bjb2RlLCBvcGVyYW5kcykKKyAgICAgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICAgICAgQG9wY29kZSA9IG9wY29kZQorICAgICAgICBAb3BlcmFuZHMgPSBvcGVyYW5k
cworICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBvcGVyYW5kcworICAg
IGVuZAorICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICAgICAgSW5zdHJ1Y3Rp
b24ubmV3KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICAgIGVu
ZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICJcdCIgKyBvcGNvZGUudG9fcyArICIgIiAr
IG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKQorICAgIGVuZAorZW5kCisK
K2NsYXNzIEVycm9yIDwgTm9DaGlsZHJlbgorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4p
CisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAK
KyAgICAgICAgIlx0ZXJyb3IiCisgICAgZW5kCitlbmQKKworY2xhc3MgQ29uc3REZWNsIDwgTm9k
ZQorICAgIGF0dHJfcmVhZGVyIDp2YXJpYWJsZSwgOnZhbHVlCisgICAgCisgICAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgICAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgICAgICBAdmFyaWFibGUgPSB2YXJpYWJsZQorICAgICAgICBAdmFsdWUgPSB2YWx1
ZQorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBbQHZhcmlhYmxlLCBA
dmFsdWVdCisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxkcmVuCisgICAgICAgIENvbnN0
RGVjbC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEB2YXJpYWJsZSksICh5aWVsZCBAdmFsdWUpKQor
ICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICJjb25zdCAje0B2YXJpYWJsZS5k
dW1wfSA9ICN7QHZhbHVlLmR1bXB9IgorICAgIGVuZAorZW5kCisKKyRsYWJlbE1hcHBpbmcgPSB7
fQorCitjbGFzcyBMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgICBhdHRyX3JlYWRlciA6bmFtZQorICAg
IAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgICAgIEBuYW1lID0gbmFtZQorICAgIGVuZAorICAgIAorICAgIGRlZiBz
ZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgaWYgJGxhYmVsTWFwcGluZ1tu
YW1lXQorICAgICAgICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9IiB1
bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMYWJlbAorICAgICAgICBlbHNlCisgICAg
ICAgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUp
CisgICAgICAgIGVuZAorICAgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgZW5kCisgICAg
CisgICAgZGVmIGR1bXAKKyAgICAgICAgIiN7bmFtZX06IgorICAgIGVuZAorZW5kCisKK2NsYXNz
IExvY2FsTGFiZWwgPCBOb0NoaWxkcmVuCisgICAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgICAKKyAg
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgICAgICBAbmFtZSA9IG5hbWUKKyAgICBlbmQKKworICAgIEBAdW5pcXVlTmFtZUNv
dW50ZXIgPSAwCisgICAgCisgICAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgICAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICAgICAgICByYWlzZSAiTGFiZWwg
bmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/
IExvY2FsTGFiZWwKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgJGxhYmVsTWFwcGluZ1tuYW1l
XSA9IExvY2FsTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVuZAorICAgICAg
ICAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgZW5kCisgICAgCisgICAgZGVmIHNlbGYudW5pcXVl
KGNvbW1lbnQpCisgICAgICAgIG5ld05hbWUgPSAiXyN7Y29tbWVudH0iCisgICAgICAgIGlmICRs
YWJlbE1hcHBpbmdbbmV3TmFtZV0KKyAgICAgICAgICAgIHdoaWxlICRsYWJlbE1hcHBpbmdbbmV3
TmFtZSA9ICJfI3tAQHVuaXF1ZU5hbWVDb3VudGVyfV8je2NvbW1lbnR9Il0KKyAgICAgICAgICAg
ICAgICBAQHVuaXF1ZU5hbWVDb3VudGVyICs9IDEKKyAgICAgICAgICAgIGVuZAorICAgICAgICBl
bmQKKyAgICAgICAgZm9yTmFtZShuaWwsIG5ld05hbWUpCisgICAgZW5kCisgICAgCisgICAgZGVm
IGNsZWFuTmFtZQorICAgICAgICBpZiBuYW1lID1+IC9eXC4vCisgICAgICAgICAgICAiXyIgKyBu
YW1lWzEuLi0xXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBuYW1lCisgICAgICAgIGVuZAor
ICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICIje25hbWV9OiIKKyAgICBlbmQK
K2VuZAorCitjbGFzcyBMYWJlbFJlZmVyZW5jZSA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6bGFi
ZWwKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICAgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQGxhYmVsID0gbGFiZWwKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgY2hpbGRyZW4KKyAgICAgICAgW0BsYWJlbF0KKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgbWFwQ2hpbGRyZW4KKyAgICAgICAgTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5
aWVsZCBAbGFiZWwpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBuYW1lCisgICAgICAgIGxhYmVs
Lm5hbWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICBsYWJlbC5uYW1lCisg
ICAgZW5kCisgICAgCisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisg
ICAgCisgICAgZGVmIGxhYmVsPworICAgICAgICB0cnVlCisgICAgZW5kCitlbmQKKworY2xhc3Mg
TG9jYWxMYWJlbFJlZmVyZW5jZSA8IE5vQ2hpbGRyZW4KKyAgICBhdHRyX3JlYWRlciA6bGFiZWwK
KyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICAgICAgc3Vw
ZXIoY29kZU9yaWdpbikKKyAgICAgICAgQGxhYmVsID0gbGFiZWwKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgY2hpbGRyZW4KKyAgICAgICAgW0BsYWJlbF0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICAgICAgTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwg
KHlpZWxkIEBsYWJlbCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIG5hbWUKKyAgICAgICAgbGFi
ZWwubmFtZQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgIGxhYmVsLm5hbWUK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIHRydWUKKyAgICBlbmQKK2VuZAorCitjbGFz
cyBTZXF1ZW5jZSA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6bGlzdAorICAgIAorICAgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIGxpc3QpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgICAgIEBsaXN0ID0gbGlzdAorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAg
ICAgICBsaXN0CisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAg
ICAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgQGxpc3QubWFwKCZwcm9jKSkKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICBsaXN0LmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9p
bigiXG4iKQorICAgIGVuZAorZW5kCisKK2NsYXNzIFRydWUgPCBOb0NoaWxkcmVuCisgICAgZGVm
IGluaXRpYWxpemUKKyAgICAgICAgc3VwZXIobmlsKQorICAgIGVuZAorICAgIAorICAgIEBAaW5z
dGFuY2UgPSBUcnVlLm5ldworICAgIAorICAgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgICAgIEBA
aW5zdGFuY2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgdmFsdWUKKyAgICAgICAgdHJ1ZQorICAg
IGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICJ0cnVlIgorICAgIGVuZAorZW5kCisK
K2NsYXNzIEZhbHNlIDwgTm9DaGlsZHJlbgorICAgIGRlZiBpbml0aWFsaXplCisgICAgICAgIHN1
cGVyKG5pbCkKKyAgICBlbmQKKyAgICAKKyAgICBAQGluc3RhbmNlID0gRmFsc2UubmV3CisgICAg
CisgICAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICAgICAgQEBpbnN0YW5jZQorICAgIGVuZAorICAg
IAorICAgIGRlZiB2YWx1ZQorICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBk
dW1wCisgICAgICAgICJmYWxzZSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBUcnVlQ2xhc3MKKyAg
ICBkZWYgYXNOb2RlCisgICAgICAgIFRydWUuaW5zdGFuY2UKKyAgICBlbmQKK2VuZAorCitjbGFz
cyBGYWxzZUNsYXNzCisgICAgZGVmIGFzTm9kZQorICAgICAgICBGYWxzZS5pbnN0YW5jZQorICAg
IGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcgPCBOb0NoaWxkcmVuCisgICAgYXR0cl9yZWFkZXIg
Om5hbWUKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAbmFtZSA9IG5hbWUKKyAgICBlbmQKKyAgICAK
KyAgICBAQG1hcHBpbmcgPSB7fQorICAgIAorICAgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdp
biwgbmFtZSkKKyAgICAgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgICAgICAgQEBt
YXBwaW5nW25hbWVdID0gU2V0dGluZy5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZW5k
CisgICAgICAgIEBAbWFwcGluZ1tuYW1lXQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisg
ICAgICAgIG5hbWUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBBbmQgPCBOb2RlCisgICAgYXR0cl9y
ZWFkZXIgOmxlZnQsIDpyaWdodAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4s
IGxlZnQsIHJpZ2h0KQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAbGVmdCA9
IGxlZnQKKyAgICAgICAgQHJpZ2h0ID0gcmlnaHQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hp
bGRyZW4KKyAgICAgICAgW0BsZWZ0LCBAcmlnaHRdCisgICAgZW5kCisgICAgCisgICAgZGVmIG1h
cENoaWxkcmVuCisgICAgICAgIEFuZC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlp
ZWxkIEByaWdodCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIigje2xl
ZnQuZHVtcH0gYW5kICN7cmlnaHQuZHVtcH0pIgorICAgIGVuZAorZW5kCisKK2NsYXNzIE9yIDwg
Tm9kZQorICAgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgICAKKyAgICBkZWYgaW5pdGlh
bGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICAgICAgQGxlZnQgPSBsZWZ0CisgICAgICAgIEByaWdodCA9IHJpZ2h0CisgICAgZW5kCisg
ICAgCisgICAgZGVmIGNoaWxkcmVuCisgICAgICAgIFtAbGVmdCwgQHJpZ2h0XQorICAgIGVuZAor
ICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbgorICAgICAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlp
ZWxkIEBsZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAK
KyAgICAgICAgIigje2xlZnQuZHVtcH0gb3IgI3tyaWdodC5kdW1wfSkiCisgICAgZW5kCitlbmQK
KworY2xhc3MgTm90IDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAgIAorICAgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgICAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgICAgICBAY2hpbGQgPSBjaGlsZAorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJl
bgorICAgICAgICBbQGxlZnQsIEByaWdodF0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hp
bGRyZW4KKyAgICAgICAgTm90Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICAiKG5vdCAje2NoaWxkLmR1bXB9KSIKKyAg
ICBlbmQKK2VuZAorCitjbGFzcyBTa2lwIDwgTm9DaGlsZHJlbgorICAgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4pCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgZW5kCisgICAgCisg
ICAgZGVmIGR1bXAKKyAgICAgICAgIlx0c2tpcCIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJZlRo
ZW5FbHNlIDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpwcmVkaWNhdGUsIDp0aGVuQ2FzZQorICAg
IGF0dHJfYWNjZXNzb3IgOmVsc2VDYXNlCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgcHJlZGljYXRlLCB0aGVuQ2FzZSkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICAgICAgQHByZWRpY2F0ZSA9IHByZWRpY2F0ZQorICAgICAgICBAdGhlbkNhc2UgPSB0aGVuQ2Fz
ZQorICAgICAgICBAZWxzZUNhc2UgPSBTa2lwLm5ldyhjb2RlT3JpZ2luKQorICAgIGVuZAorICAg
IAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBpZiBAZWxzZUNhc2UKKyAgICAgICAgICAgIFtA
cHJlZGljYXRlLCBAdGhlbkNhc2UsIEBlbHNlQ2FzZV0KKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgW0BwcmVkaWNhdGUsIEB0aGVuQ2FzZV0KKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgCisg
ICAgZGVmIG1hcENoaWxkcmVuCisgICAgICAgIElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sICh5
aWVsZCBAcHJlZGljYXRlKSwgKHlpZWxkIEB0aGVuQ2FzZSksICh5aWVsZCBAZWxzZUNhc2UpKQor
ICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICJpZiAje3ByZWRpY2F0ZS5kdW1w
fVxuIiArIHRoZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsgZWxzZUNhc2UuZHVtcCArICJcbmVu
ZCIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBNYWNybyA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6
bmFtZSwgOnZhcmlhYmxlcywgOmJvZHkKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBuYW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgICAgIEBuYW1lID0gbmFtZQorICAgICAgICBAdmFyaWFibGVzID0gdmFyaWFibGVzCisgICAg
ICAgIEBib2R5ID0gYm9keQorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAg
ICBAdmFyaWFibGVzICsgW0Bib2R5XQorICAgIGVuZAorICAgIAorICAgIGRlZiBtYXBDaGlsZHJl
bgorICAgICAgICBNYWNyby5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEB2YXJpYWJsZXMubWFwe3x2
fCB5aWVsZCB2fSwgKHlpZWxkIEBib2R5KSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAor
ICAgICAgICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFibGVzLmNvbGxlY3R7fHZ8IHYuZHVtcH0u
am9pbigiLCAiKSArICIpXG4iICsgYm9keS5kdW1wICsgIlxuZW5kIgorICAgIGVuZAorZW5kCisK
K2NsYXNzIE1hY3JvQ2FsbCA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6bmFtZSwgOm9wZXJhbmRz
CisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisg
ICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBuYW1lID0gbmFtZQorICAgICAgICBA
b3BlcmFuZHMgPSBvcGVyYW5kcworICAgICAgICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAg
ICAgIEBvcGVyYW5kcy5lYWNoe3x2fCByYWlzZSB1bmxlc3Mgdn0KKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgY2hpbGRyZW4KKyAgICAgICAgQG9wZXJhbmRzCisgICAgZW5kCisgICAgCisgICAgZGVm
IG1hcENoaWxkcmVuKCZwcm9jKQorICAgICAgICBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIEBu
YW1lLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAor
ICAgICAgICAiXHQje25hbWV9KCIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4o
IiwgIikgKyAiKSIKKyAgICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk2
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhcm12
NyIKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgIng4NiIKKworQkFDS0VORFMgPQorICAgIFsKKyAg
ICAgIlg4NiIsCisgICAgICJBUk12NyIKKyAgICBdCisKKyMgS2VlcCB0aGUgc2V0IG9mIHdvcmtp
bmcgYmFja2VuZHMgc2VwYXJhdGUgZnJvbSB0aGUgc2V0IG9mIGJhY2tlbmRzIHRoYXQgbWlnaHQg
YmUKKyMgc3VwcG9ydGVkLiBUaGlzIGlzIGdyZWF0IGJlY2F1c2UgdGhlIEJBQ0tFTkRTIGxpc3Qg
aXMgYWxtb3N0IGxpa2UgYSByZXNlcnZlZAorIyB3b3JkcyBsaXN0LCBpbiB0aGF0IGl0IGNhdXNl
cyBzZXR0aW5ncyByZXNvbHV0aW9uIHRvIHRyZWF0IHRob3NlIHdvcmRzIHNwZWNpYWxseS4KKyMg
SGVuY2UgdGhpcyBsZXRzIHVzIHNldCBhc2lkZSB0aGUgbmFtZSBvZiBhIGJhY2tlbmQgd2UgbWln
aHQgd2FudCB0byBzdXBwb3J0IGluCisjIHRoZSBmdXR1cmUgd2hpbGUgbm90IGFjdHVhbGx5IHN1
cHBvcnRpbmcgdGhlIGJhY2tlbmQgeWV0LgorV09SS0lOR19CQUNLRU5EUyA9CisgICAgWworICAg
ICAiWDg2IiwKKyAgICAgIkFSTXY3IgorICAgIF0KKworQkFDS0VORF9QQVRURVJOID0gUmVnZXhw
Lm5ldygnXFxBKCcgKyBCQUNLRU5EUy5qb2luKCcpfCgnKSArICcpXFxaJykKKworY2xhc3MgTm9k
ZQorICAgIGRlZiBsb3dlcihuYW1lKQorICAgICAgICBzZW5kKCJsb3dlciIgKyBuYW1lKQorICAg
IGVuZAorZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBsb3dlcigpIGZvciB0aG9zZSBub2RlcyB0aGF0
IGFyZSBiYWNrZW5kLWFnbm9zdGljCisKK2NsYXNzIExhYmVsCisgICAgZGVmIGxvd2VyKG5hbWUp
CisgICAgICAgICRhc20ucHV0c0xhYmVsKHNlbGYubmFtZVsxLi4tMV0pCisgICAgZW5kCitlbmQK
KworY2xhc3MgTG9jYWxMYWJlbAorICAgIGRlZiBsb3dlcihuYW1lKQorICAgICAgICAkYXNtLnB1
dHNMb2NhbExhYmVsICJfb2ZmbGluZWFzbV8je3NlbGYubmFtZVsxLi4tMV19IgorICAgIGVuZAor
ZW5kCisKK2NsYXNzIExhYmVsUmVmZXJlbmNlCisgICAgZGVmIGFzbUxhYmVsCisgICAgICAgIEFz
c2VtYmxlci5sYWJlbFJlZmVyZW5jZShuYW1lWzEuLi0xXSkKKyAgICBlbmQKK2VuZAorCitjbGFz
cyBMb2NhbExhYmVsUmVmZXJlbmNlCisgICAgZGVmIGFzbUxhYmVsCisgICAgICAgIEFzc2VtYmxl
ci5sb2NhbExhYmVsUmVmZXJlbmNlKCJfb2ZmbGluZWFzbV8iK25hbWVbMS4uLTFdKQorICAgIGVu
ZAorZW5kCisKK2NsYXNzIFNraXAKKyAgICBkZWYgbG93ZXIobmFtZSkKKyAgICBlbmQKK2VuZAor
CitjbGFzcyBTZXF1ZW5jZQorICAgIGRlZiBsb3dlcihuYW1lKQorICAgICAgICBpZiByZXNwb25k
X3RvPyAibG93ZXIje25hbWV9IgorICAgICAgICAgICAgc2VuZCgibG93ZXIje25hbWV9IikKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgQGxpc3QuZWFjaCB7CisgICAgICAgICAgICAgICAgfCBu
b2RlIHwKKyAgICAgICAgICAgICAgICBub2RlLmxvd2VyKG5hbWUpCisgICAgICAgICAgICB9Cisg
ICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5y
YgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVy
YXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTM2IEBACisj
IS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCity
ZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIi
CityZXF1aXJlICJzZWxmX2hhc2giCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5z
Zm9ybSIKKworaW5wdXRGbG5tID0gQVJHVi5zaGlmdAorb3V0cHV0RmxubSA9IEFSR1Yuc2hpZnQK
KworJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBQYXJzaW5nICN7aW5wdXRGbG5tfSBhbmQgY3Jl
YXRpbmcgb2Zmc2V0IGV4dHJhY3RvciAje291dHB1dEZsbm19LiIKKworZGVmIGVtaXRNYWdpY051
bWJlcgorICAgIE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVhY2ggeworICAgICAgICB8IG51bWJlciB8
CisgICAgICAgICRvdXRwdXQucHV0cyAiI3tudW1iZXJ9LCIKKyAgICB9CitlbmQKKworaW5wdXRE
YXRhID0gSU86OnJlYWQoaW5wdXRGbG5tKQoraW5wdXRIYXNoID0gIi8vIG9mZmxpbmVhc20gaW5w
dXQgaGFzaDogI3tEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0YSl9ICN7c2VsZkhhc2h9
IgorCitpZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0RmxubQorICAgIEZpbGUub3BlbihvdXRwdXRG
bG5tLCAiciIpIHsKKyAgICAgICAgfCBpbnAgfAorICAgICAgICBmaXJzdExpbmUgPSBpbnAuZ2V0
cworICAgICAgICBpZiBmaXJzdExpbmUgYW5kIGZpcnN0TGluZS5jaG9tcCA9PSBpbnB1dEhhc2gK
KyAgICAgICAgICAgICRzdGRlcnIucHV0cyAib2ZmbGluZWFzbTogTm90aGluZyBjaGFuZ2VkLiIK
KyAgICAgICAgICAgIGV4aXQgMAorICAgICAgICBlbmQKKyAgICB9CitlbmQKKworb3JpZ2luYWxB
U1QgPSBwYXJzZShsZXgoaW5wdXREYXRhKSkKKworIworIyBPcHRpbWl6ZSB0aGUgQVNUIHRvIG1h
a2UgY29uZmlndXJhdGlvbiBleHRyYWN0aW9uIGZhc3Rlci4gVGhpcyByZWR1Y2VzIHRoZSBBU1Qg
dG8gYSBmb3JtCisjIHRoYXQgb25seSBjb250YWlucyB0aGUgdGhpbmdzIHRoYXQgbWF0dGVyIGZv
ciBvdXIgcHVycG9zZXM6IG9mZnNldHMsIHNpemVzLCBhbmQgaWYKKyMgc3RhdGVtZW50cy4KKyMK
KworY2xhc3MgTm9kZQorICAgIGRlZiBvZmZzZXRzUHJ1bmVUbyhzZXF1ZW5jZSkKKyAgICAgICAg
Y2hpbGRyZW4uZWFjaCB7CisgICAgICAgICAgICB8IGNoaWxkIHwKKyAgICAgICAgICAgIGNoaWxk
Lm9mZnNldHNQcnVuZVRvKHNlcXVlbmNlKQorICAgICAgICB9CisgICAgZW5kCisgICAgCisgICAg
ZGVmIG9mZnNldHNQcnVuZQorICAgICAgICByZXN1bHQgPSBTZXF1ZW5jZS5uZXcoY29kZU9yaWdp
biwgW10pCisgICAgICAgIG9mZnNldHNQcnVuZVRvKHJlc3VsdCkKKyAgICAgICAgcmVzdWx0Cisg
ICAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZQorICAgIGRlZiBvZmZzZXRzUHJ1bmVUbyhz
ZXF1ZW5jZSkKKyAgICAgICAgaWZUaGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4s
IHByZWRpY2F0ZSwgdGhlbkNhc2Uub2Zmc2V0c1BydW5lKQorICAgICAgICBpZlRoZW5FbHNlLmVs
c2VDYXNlID0gZWxzZUNhc2Uub2Zmc2V0c1BydW5lCisgICAgICAgIHNlcXVlbmNlLmxpc3QgPDwg
aWZUaGVuRWxzZQorICAgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldAorICAgIGRlZiBv
ZmZzZXRzUHJ1bmVUbyhzZXF1ZW5jZSkKKyAgICAgICAgc2VxdWVuY2UubGlzdCA8PCBzZWxmCisg
ICAgZW5kCitlbmQKKworY2xhc3MgU2l6ZW9mCisgICAgZGVmIG9mZnNldHNQcnVuZVRvKHNlcXVl
bmNlKQorICAgICAgICBzZXF1ZW5jZS5saXN0IDw8IHNlbGYKKyAgICBlbmQKK2VuZAorCitwcnVu
ZWRBU1QgPSBvcmlnaW5hbEFTVC5vZmZzZXRzUHJ1bmUKKworRmlsZS5vcGVuKG91dHB1dEZsbm0s
ICJ3IikgeworICAgIHwgb3V0cCB8CisgICAgJG91dHB1dCA9IG91dHAKKyAgICBvdXRwLnB1dHMg
aW5wdXRIYXNoCisgICAgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKHBydW5lZEFTVCkgewor
ICAgICAgICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICAgICAgb2Zmc2V0
c0xpc3QgPSBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CisgICAgICAgIHNpemVz
TGlzdCA9IGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKKyAgICAgICAgCisgICAgICAgIGxl
bmd0aCA9IChPRkZTRVRfTUFHSUNfTlVNQkVSUy5zaXplICsgMSkgKiAoMSArIG9mZnNldHNMaXN0
LnNpemUgKyBzaXplc0xpc3Quc2l6ZSkKKyAgICAgICAgCisgICAgICAgIG91dHAucHV0cyAic3Rh
dGljIGNvbnN0IHVuc2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICAgICAg
ICBlbWl0TWFnaWNOdW1iZXIKKyAgICAgICAgb3V0cC5wdXRzICIje2luZGV4fSwiCisgICAgICAg
IG9mZnNldHNMaXN0LmVhY2ggeworICAgICAgICAgICAgfCBvZmZzZXQgfAorICAgICAgICAgICAg
ZW1pdE1hZ2ljTnVtYmVyCisgICAgICAgICAgICBvdXRwLnB1dHMgIk9GRkxJTkVfQVNNX09GRlNF
VE9GKCN7b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSksIgorICAgICAgICB9CisgICAg
ICAgIHNpemVzTGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgb2Zmc2V0IHwKKyAgICAgICAgICAg
IGVtaXRNYWdpY051bWJlcgorICAgICAgICAgICAgb3V0cC5wdXRzICJzaXplb2YoI3tvZmZzZXQu
c3RydWN0fSksIgorICAgICAgICB9CisgICAgICAgIG91dHAucHV0cyAifTsiCisgICAgfQorfQor
Ciskc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IG9mZnNldCBleHRyYWN0b3IgI3tvdXRwdXRGbG5t
fSBzdWNjZXNzZnVsbHkgZ2VuZXJhdGVkLiIKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyMTcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0Ogor
IyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KyMgSW50ZXJlc3RpbmcgaW52YXJpYW50LCB3aGljaCB3ZSB0YWtlIGFkdmFudGFnZSBvZjogYnJh
bmNoaW5nIGluc3RydWN0aW9ucworIyBhbHdheXMgYmVnaW4gd2l0aCAiYiIsIGFuZCBubyBub24t
YnJhbmNoaW5nIGluc3RydWN0aW9ucyBiZWdpbiB3aXRoICJiIi4KKyMgVGVybWluYWwgaW5zdHJ1
Y3Rpb25zIGFyZSAiam1wIiBhbmQgInJldCIuCisKK01BQ1JPX0lOU1RSVUNUSU9OUyA9CisgICAg
WworICAgICAiYWRkaSIsCisgICAgICJhbmRpIiwKKyAgICAgImxzaGlmdGkiLAorICAgICAibXVs
aSIsCisgICAgICJuZWdpIiwKKyAgICAgIm5vdGkiLAorICAgICAib3JpIiwKKyAgICAgInJzaGlm
dGkiLAorICAgICAidXJzaGlmdGkiLAorICAgICAic3ViaSIsCisgICAgICJ4b3JpIiwKKyAgICAg
ImxvYWRpIiwKKyAgICAgImxvYWRiIiwKKyAgICAgImxvYWRicyIsCisgICAgICJsb2FkaCIsCisg
ICAgICJsb2FkaHMiLAorICAgICAic3RvcmVpIiwKKyAgICAgInN0b3JlYiIsCisgICAgICJsb2Fk
ZCIsCisgICAgICJtb3ZlZCIsCisgICAgICJzdG9yZWQiLAorICAgICAiYWRkZCIsCisgICAgICJk
aXZkIiwKKyAgICAgInN1YmQiLAorICAgICAibXVsZCIsCisgICAgICJzcXJ0ZCIsCisgICAgICJj
aTJkIiwKKyAgICAgImZpaTJkIiwgIyB1c2FnZTogZmlpMmQgPGdwciB3aXRoIGxlYXN0IHNpZ25p
ZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPiwgPGZwcj4KKyAg
ICAgImZkMmlpIiwgIyB1c2FnZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0aCBsZWFzdCBzaWduaWZp
Y2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4KKyAgICAgImJkZXEi
LAorICAgICAiYmRuZXEiLAorICAgICAiYmRndCIsCisgICAgICJiZGd0ZXEiLAorICAgICAiYmRs
dCIsCisgICAgICJiZGx0ZXEiLAorICAgICAiYmRlcXVuIiwKKyAgICAgImJkbmVxdW4iLAorICAg
ICAiYmRndHVuIiwKKyAgICAgImJkZ3RlcXVuIiwKKyAgICAgImJkbHR1biIsCisgICAgICJiZGx0
ZXF1biIsCisgICAgICJidGQyaSIsCisgICAgICJ0ZDJpIiwKKyAgICAgImJjZDJpIiwKKyAgICAg
Im1vdmR6IiwKKyAgICAgInBvcCIsCisgICAgICJwdXNoIiwKKyAgICAgIm1vdmUiLAorICAgICAi
c3hpMnAiLAorICAgICAienhpMnAiLAorICAgICAibm9wIiwKKyAgICAgImJpZXEiLAorICAgICAi
YmluZXEiLAorICAgICAiYmlhIiwKKyAgICAgImJpYWVxIiwKKyAgICAgImJpYiIsCisgICAgICJi
aWJlcSIsCisgICAgICJiaWd0IiwKKyAgICAgImJpZ3RlcSIsCisgICAgICJiaWx0IiwKKyAgICAg
ImJpbHRlcSIsCisgICAgICJiYmVxIiwKKyAgICAgImJibmVxIiwKKyAgICAgImJiYSIsCisgICAg
ICJiYmFlcSIsCisgICAgICJiYmIiLAorICAgICAiYmJiZXEiLAorICAgICAiYmJndCIsCisgICAg
ICJiYmd0ZXEiLAorICAgICAiYmJsdCIsCisgICAgICJiYmx0ZXEiLAorICAgICAiYnRpbyIsCisg
ICAgICJidGlzIiwKKyAgICAgImJ0aXoiLAorICAgICAiYnRpbnoiLAorICAgICAiYnRibyIsCisg
ICAgICJidGJzIiwKKyAgICAgImJ0YnoiLAorICAgICAiYnRibnoiLAorICAgICAiam1wIiwKKyAg
ICAgImJhZGRpbyIsCisgICAgICJiYWRkaXMiLAorICAgICAiYmFkZGl6IiwKKyAgICAgImJhZGRp
bnoiLAorICAgICAiYnN1YmlvIiwKKyAgICAgImJzdWJpcyIsCisgICAgICJic3ViaXoiLAorICAg
ICAiYnN1YmlueiIsCisgICAgICJibXVsaW8iLAorICAgICAiYm11bGlzIiwKKyAgICAgImJtdWxp
eiIsCisgICAgICJibXVsaW56IiwKKyAgICAgImJvcmlvIiwKKyAgICAgImJvcmlzIiwKKyAgICAg
ImJvcml6IiwKKyAgICAgImJvcmlueiIsCisgICAgICJicmVhayIsCisgICAgICJjYWxsIiwKKyAg
ICAgInJldCIsCisgICAgICJjaWVxIiwKKyAgICAgImNpbmVxIiwKKyAgICAgImNpYSIsCisgICAg
ICJjaWFlcSIsCisgICAgICJjaWIiLAorICAgICAiY2liZXEiLAorICAgICAiY2lndCIsCisgICAg
ICJjaWd0ZXEiLAorICAgICAiY2lsdCIsCisgICAgICJjaWx0ZXEiLAorICAgICAidGlvIiwKKyAg
ICAgInRpcyIsCisgICAgICJ0aXoiLAorICAgICAidGlueiIsCisgICAgICJ0Ym8iLAorICAgICAi
dGJzIiwKKyAgICAgInRieiIsCisgICAgICJ0Ym56IiwKKyAgICAgInBlZWsiLAorICAgICAicG9r
ZSIsCisgICAgICJicGVxIiwKKyAgICAgImJwbmVxIiwKKyAgICAgImJwYSIsCisgICAgICJicGFl
cSIsCisgICAgICJicGIiLAorICAgICAiYnBiZXEiLAorICAgICAiYnBndCIsCisgICAgICJicGd0
ZXEiLAorICAgICAiYnBsdCIsCisgICAgICJicGx0ZXEiLAorICAgICAiYWRkcCIsCisgICAgICJh
bmRwIiwKKyAgICAgIm9ycCIsCisgICAgICJzdWJwIiwKKyAgICAgInhvcnAiLAorICAgICAibG9h
ZHAiLAorICAgICAiY3BlcSIsCisgICAgICJjcG5lcSIsCisgICAgICJjcGEiLAorICAgICAiY3Bh
ZXEiLAorICAgICAiY3BiIiwKKyAgICAgImNwYmVxIiwKKyAgICAgImNwZ3QiLAorICAgICAiY3Bn
dGVxIiwKKyAgICAgImNwbHQiLAorICAgICAiY3BsdGVxIiwKKyAgICAgInN0b3JlcCIsCisgICAg
ICJidHBvIiwKKyAgICAgImJ0cHMiLAorICAgICAiYnRweiIsCisgICAgICJidHBueiIsCisgICAg
ICJiYWRkcG8iLAorICAgICAiYmFkZHBzIiwKKyAgICAgImJhZGRweiIsCisgICAgICJiYWRkcG56
IiwKKyAgICAgImJvIiwKKyAgICAgImJzIiwKKyAgICAgImJ6IiwKKyAgICAgImJueiIsCisgICAg
ICJsZWFpIiwKKyAgICAgImxlYXAiLAorICAgIF0KKworWDg2X0lOU1RSVUNUSU9OUyA9CisgICAg
WworICAgICAiY2RxaSIsCisgICAgICJpZGl2aSIKKyAgICBdCisKK0FSTXY3X0lOU1RSVUNUSU9O
UyA9CisgICAgWworICAgICAic211bGxpIiwKKyAgICAgImFkZGlzIiwKKyAgICAgInN1YmlzIiwK
KyAgICAgIm9yaXMiCisgICAgXQorCitJTlNUUlVDVElPTlMgPSBNQUNST19JTlNUUlVDVElPTlMg
KyBYODZfSU5TVFJVQ1RJT05TICsgQVJNdjdfSU5TVFJVQ1RJT05TCisKK0lOU1RSVUNUSU9OX1BB
VFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbignKXwoJykgKyAn
KSlcXFonKQorCitkZWYgaXNCcmFuY2goaW5zdHJ1Y3Rpb24pCisgICAgaW5zdHJ1Y3Rpb24gPX4g
L15iLworZW5kCisKK2RlZiBoYXNGYWxsVGhyb3VnaChpbnN0cnVjdGlvbikKKyAgICBpbnN0cnVj
dGlvbiAhPSAicmV0IiBhbmQgaW5zdHJ1Y3Rpb24gIT0gImptcCIKK2VuZAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRf
ZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoK
KyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisj
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CitNQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDAp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE1MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMi
CisKK09GRlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKwor
IworIyBvZmZzZXRzTGlzdChhc3QpCisjIHNpemVzTGlzdChhc3QpCisjCisjIFJldHVybnMgYSBs
aXN0IG9mIG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhlIEFTVC4KKyMKKworZGVmIG9mZnNl
dHNMaXN0KGFzdCkKKyAgICBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CitlbmQK
KworZGVmIHNpemVzTGlzdChhc3QpCisgICAgYXN0LmZpbHRlcihTaXplb2YpLnVuaXEuc29ydAor
ZW5kCisKKyMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChhc3QsIGZpbGUpIC0+Cisj
ICAgICBbb2Zmc2V0cywgaW5kZXhdCisjCisjIFBhcnNlcyB0aGUgb2Zmc2V0cyBmcm9tIGEgZmls
ZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgdGhlCisjIGluZGV4IG9mIHRoZSBj
b25maWd1cmF0aW9uIHRoYXQgaXMgdmFsaWQgaW4gdGhpcyBidWlsZCB0YXJnZXQuCisjCisKK2Rl
ZiBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUpCisgICAgaW5kZXggPSBuaWwKKyAg
ICBvZmZzZXRzID0gW10KKyAgICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBuaWwKKyAgICAKKyAg
ICBkZWYgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgIGJ5dGVzID0gW10KKyAgICAg
ICAgNC50aW1lcyB7CisgICAgICAgICAgICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQorICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBpZiBlbmRpYW5uZXNzID09IDpsaXR0bGUKKyAgICAgICAgICAg
ICMgTGl0dGxlIGVuZGlhbgorICAgICAgICAgICAgKGJ5dGVzWzBdIDw8IDAgfAorICAgICAgICAg
ICAgIGJ5dGVzWzFdIDw8IDggfAorICAgICAgICAgICAgIGJ5dGVzWzJdIDw8IDE2IHwKKyAgICAg
ICAgICAgICBieXRlc1szXSA8PCAyNCkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgIyBCaWcg
ZW5kaWFuCisgICAgICAgICAgICAoYnl0ZXNbMF0gPDwgMjQgfAorICAgICAgICAgICAgIGJ5dGVz
WzFdIDw8IDE2IHwKKyAgICAgICAgICAgICBieXRlc1syXSA8PCA4IHwKKyAgICAgICAgICAgICBi
eXRlc1szXSA8PCAwKQorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBbOmxpdHRsZSwg
OmJpZ10uZWFjaCB7CisgICAgICAgIHwgZW5kaWFubmVzcyB8CisgICAgICAgIG1hZ2ljQnl0ZXMg
PSBbXQorICAgICAgICBNQUdJQ19OVU1CRVJTLmVhY2ggeworICAgICAgICAgICAgfCBudW1iZXIg
fAorICAgICAgICAgICAgY3VycmVudEJ5dGVzID0gW10KKyAgICAgICAgICAgIDQudGltZXMgewor
ICAgICAgICAgICAgICAgIGN1cnJlbnRCeXRlcyA8PCAobnVtYmVyICYgMHhmZikKKyAgICAgICAg
ICAgICAgICBudW1iZXIgPj49IDgKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIGVuZGlh
bm5lc3MgPT0gOmJpZworICAgICAgICAgICAgICAgIGN1cnJlbnRCeXRlcy5yZXZlcnNlIQorICAg
ICAgICAgICAgZW5kCisgICAgICAgICAgICBtYWdpY0J5dGVzICs9IGN1cnJlbnRCeXRlcworICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBGaWxlLm9wZW4oZmlsZSwgInIiKSB7CisgICAgICAg
ICAgICB8IGlucCB8CisgICAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICAgICAg
bG9vcCB7CisgICAgICAgICAgICAgICAgYnl0ZSA9IGlucC5nZXRieXRlCisgICAgICAgICAgICAg
ICAgYnJlYWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgICAgICAgICBpZiBieXRlID09IG1hZ2ljQnl0
ZXNbd2hlcmVJbk1hcmtlcl0KKyAgICAgICAgICAgICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAx
CisgICAgICAgICAgICAgICAgICAgIGlmIHdoZXJlSW5NYXJrZXIgPT0gbWFnaWNCeXRlcy5zaXpl
CisgICAgICAgICAgICAgICAgICAgICAgICAjIFdlIGhhdmUgYSBtYXRjaCEgSWYgd2UgaGF2ZSBu
b3QgeWV0IHJlYWQgdGhlIGVuZGlhbm5lc3MgbWFya2VyIGFuZCBpbmRleCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICMgdGhlbiByZWFkIHRob3NlIG5vdzsgb3RoZXJ3aXNlIHJlYWQgYW4gb2Zm
c2V0LgorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiBub3QgaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHJlYWRJbnQo
ZW5kaWFubmVzcywgaW5wKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9mZnNldHMgPDwgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisg
ICAgICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAg
ICAgICAgICAgICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgICAgICAgICAg
ICAgZW5kCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB3aGVyZUlu
TWFya2VyID0gMAorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBicmVhayBpZiBpbmRleAorICAgIH0KKyAgICAKKyAgICByYWlz
ZSB1bmxlc3MgaW5kZXgKKyAgICAKKyAgICBbb2Zmc2V0cywgaW5kZXhdCitlbmQKKworIworIyBi
dWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkgLT4gW29mZnNldHMsIHNpemVzXQorIwor
IyBCdWlsZHMgYSBtYXBwaW5nIGJldHdlZW4gU3RydWN0T2Zmc2V0IG5vZGVzIGFuZCB0aGVpciB2
YWx1ZXMuCisjCisKK2RlZiBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkKKyAgICBv
ZmZzZXRzTWFwID0ge30KKyAgICBzaXplc01hcCA9IHt9CisgICAgYXN0T2Zmc2V0c0xpc3QgPSBv
ZmZzZXRzTGlzdChhc3QpCisgICAgYXN0U2l6ZXNMaXN0ID0gc2l6ZXNMaXN0KGFzdCkKKyAgICBy
YWlzZSB1bmxlc3MgYXN0T2Zmc2V0c0xpc3Quc2l6ZSArIGFzdFNpemVzTGlzdC5zaXplID09IG9m
ZnNldHNMaXN0LnNpemUKKyAgICBvZmZzZXRzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7Cisg
ICAgICAgIHwgc3RydWN0T2Zmc2V0LCBpbmRleCB8CisgICAgICAgIG9mZnNldHNNYXBbc3RydWN0
T2Zmc2V0XSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgICAgfQorICAgIHNpemVzTGlzdChhc3QpLmVh
Y2hfd2l0aF9pbmRleCB7CisgICAgICAgIHwgc2l6ZW9mLCBpbmRleCB8CisgICAgICAgIHNpemVz
TWFwW3NpemVvZl0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICAgIH0KKyAgICBbb2Zmc2V0c01hcCwg
c2l6ZXNNYXBdCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20v
b3B0LnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29w
dC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29w
dC5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKKworIworIyAiT3B0aW1pemF0aW9uIiBw
YXNzZXMuIFRoZXNlIGFyZSB1c2VkIHRvIGxvd2VyIHRoZSByZXByZXNlbnRhdGlvbiBmb3IKKyMg
YmFja2VuZHMgdGhhdCBjYW5ub3QgaGFuZGxlIHNvbWUgb2Ygb3VyIGhpZ2hlci1sZXZlbCBpbnN0
cnVjdGlvbnMuCisjCisKKyMKKyMgQSB0ZW1wb3JhcnkgLSBhIHZhcmlhYmxlIHRoYXQgd2lsbCBi
ZSBhbGxvY2F0ZWQgdG8gYSByZWdpc3RlciBhZnRlciB3ZSdyZQorIyBkb25lLgorIworCitjbGFz
cyBOb2RlCisgICAgZGVmIHJlcGxhY2VUZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkKKyAg
ICAgICAgbWFwQ2hpbGRyZW4geworICAgICAgICAgICAgfCBub2RlIHwKKyAgICAgICAgICAgIG5v
ZGUucmVwbGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lzdGVycyhraW5kKQorICAgICAgICB9CisgICAg
ZW5kCitlbmQKKworY2xhc3MgVG1wIDwgTm9DaGlsZHJlbgorICAgIGF0dHJfcmVhZGVyIDpmaXJz
dE1lbnRpb24sIDpsYXN0TWVudGlvbgorICAgIGF0dHJfcmVhZGVyIDpraW5kCisgICAgYXR0cl9h
Y2Nlc3NvciA6cmVnaXN0ZXIKKworICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGtpbmQp
CisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBraW5kID0ga2luZAorICAgIGVu
ZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICIkdG1wI3tvYmplY3RfaWR9IgorICAgIGVu
ZAorICAgIAorICAgIGRlZiBtZW50aW9uIShwb3NpdGlvbikKKyAgICAgICAgaWYgbm90IEBmaXJz
dE1lbnRpb24gb3IgcG9zaXRpb24gPCBAZmlyc3RNZW50aW9uCisgICAgICAgICAgICBAZmlyc3RN
ZW50aW9uID0gcG9zaXRpb24KKyAgICAgICAgZW5kCisgICAgICAgIGlmIG5vdCBAbGFzdE1lbnRp
b24gb3IgcG9zaXRpb24gPiBAbGFzdE1lbnRpb24KKyAgICAgICAgICAgIEBsYXN0TWVudGlvbiA9
IHBvc2l0aW9uCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiByZXBsYWNlVGVt
cG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgICAgIGlmIEBraW5kID09IGtpbmQKKyAg
ICAgICAgICAgIHJhaXNlICJEaWQgbm90IGFsbG9jYXRlIHJlZ2lzdGVyIHRvIHRlbXBvcmFyeSBh
dCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgQHJlZ2lzdGVyCisgICAgICAgICAgICBAcmVn
aXN0ZXIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VsZgorICAgICAgICBlbmQKKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGlt
bWVkaWF0ZT8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/
CisgICAgICAgIHRydWUKKyAgICBlbmQKK2VuZAorCisjIEFzc2lnbiByZWdpc3RlcnMgdG8gdGVt
cG9yYXJpZXMsIGJ5IGZpbmRpbmcgd2hpY2ggdGVtcG9yYXJpZXMgaW50ZXJmZXJlCisjIHdpdGgg
ZWFjaCBvdGhlci4gTm90ZSB0aGF0IHRoaXMgcmVsaWVzIG9uIHRlbXBvcmFyeSBsaXZlIHJhbmdl
cyBub3QgY3Jvc3NpbmcKKyMgYmFzaWMgYmxvY2sgYm91bmRhcmllcy4KKworZGVmIGFzc2lnblJl
Z2lzdGVyc1RvVGVtcG9yYXJpZXMobGlzdCwga2luZCwgcmVnaXN0ZXJzKQorICAgIGxpc3QuZWFj
aF93aXRoX2luZGV4IHsKKyAgICAgICAgfCBub2RlLCBpbmRleCB8CisgICAgICAgIG5vZGUuZmls
dGVyKFRtcCkudW5pcS5lYWNoIHsKKyAgICAgICAgICAgIHwgdG1wIHwKKyAgICAgICAgICAgIGlm
IHRtcC5raW5kID09IGtpbmQKKyAgICAgICAgICAgICAgICB0bXAubWVudGlvbiEgaW5kZXgKKyAg
ICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgfQorICAgIAorICAgIGZyZWVSZWdpc3RlcnMg
PSByZWdpc3RlcnMuZHVwCisgICAgbGlzdC5lYWNoX3dpdGhfaW5kZXggeworICAgICAgICB8IG5v
ZGUsIGluZGV4IHwKKyAgICAgICAgdG1wTGlzdCA9IG5vZGUuZmlsdGVyKFRtcCkudW5pcQorICAg
ICAgICB0bXBMaXN0LmVhY2ggeworICAgICAgICAgICAgfCB0bXAgfAorICAgICAgICAgICAgaWYg
dG1wLmtpbmQgPT0ga2luZCBhbmQgdG1wLmZpcnN0TWVudGlvbiA9PSBpbmRleAorICAgICAgICAg
ICAgICAgIHJhaXNlICJDb3VsZCBub3QgYWxsb2NhdGUgcmVnaXN0ZXIgdG8gdGVtcG9yYXJ5IGF0
ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIgaWYgZnJlZVJlZ2lzdGVycy5lbXB0eT8KKyAgICAg
ICAgICAgICAgICB0bXAucmVnaXN0ZXIgPSBmcmVlUmVnaXN0ZXJzLnBvcAorICAgICAgICAgICAg
ZW5kCisgICAgICAgIH0KKyAgICAgICAgdG1wTGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgdG1w
IHwKKyAgICAgICAgICAgIGlmIHRtcC5raW5kID09IGtpbmQgYW5kIHRtcC5sYXN0TWVudGlvbiA9
PSBpbmRleAorICAgICAgICAgICAgICAgIGZyZWVSZWdpc3RlcnMucHVzaCB0bXAucmVnaXN0ZXIK
KyAgICAgICAgICAgICAgICByYWlzZSAiUmVnaXN0ZXIgYWxsb2NhdGlvbiBpbmNvbnNpc3RlbmN5
IGF0ICN7bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIgaWYgZnJlZVJlZ2lzdGVycy5zaXplID4gcmVn
aXN0ZXJzLnNpemUKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgfQorICAgIAorICAg
IGxpc3QubWFwIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgbm9kZS5yZXBsYWNlVGVtcG9y
YXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgfQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNTg2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJl
ICJhc3QiCityZXF1aXJlICJpbnN0cnVjdGlvbnMiCityZXF1aXJlICJyZWdpc3RlcnMiCisKK2Ns
YXNzIFRva2VuCisgICAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4sIDpzdHJpbmcKKyAgICAKKyAg
ICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJpbmcpCisgICAgICAgIEBjb2RlT3JpZ2lu
ID0gY29kZU9yaWdpbgorICAgICAgICBAc3RyaW5nID0gc3RyaW5nCisgICAgZW5kCisgICAgCisg
ICAgZGVmID09KG90aGVyKQorICAgICAgICBpZiBvdGhlci5pc19hPyBUb2tlbgorICAgICAgICAg
ICAgQHN0cmluZyA9PSBvdGhlci5zdHJpbmcKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQHN0
cmluZyA9PSBvdGhlcgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgPX4ob3Ro
ZXIpCisgICAgICAgIEBzdHJpbmcgPX4gb3RoZXIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgdG9f
cworICAgICAgICAiI3tAc3RyaW5nLmluc3BlY3R9IGF0IGxpbmUgI3tjb2RlT3JpZ2lufSIKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICAgICAgaWYgY29t
bWVudC5lbXB0eT8KKyAgICAgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfSIKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9OiAje2Nv
bW1lbnRbMF19IgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCisjCisjIFRoZSBsZXhlci4g
VGFrZXMgYSBzdHJpbmcgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdG9rZW5zLgorIworCitkZWYg
bGV4KHN0cikKKyAgICByZXN1bHQgPSBbXQorICAgIGxpbmVOdW1iZXIgPSAxCisgICAgd2hpbGUg
bm90IHN0ci5lbXB0eT8KKyAgICAgICAgY2FzZSBzdHIKKyAgICAgICAgd2hlbiAvXEFcIyhbXlxu
XSopLworICAgICAgICAgICAgIyBjb21tZW50LCBpZ25vcmUKKyAgICAgICAgd2hlbiAvXEFcbi8K
KyAgICAgICAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICAg
ICAgICBsaW5lTnVtYmVyICs9IDEKKyAgICAgICAgd2hlbiAvXEFbYS16QS1aXShbYS16QS1aMC05
X10qKS8KKyAgICAgICAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisg
ICAgICAgIHdoZW4gL1xBXC4oW2EtekEtWjAtOV9dKikvCisgICAgICAgICAgICByZXN1bHQgPDwg
VG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAgICB3aGVuIC9cQV8oW2EtekEtWjAtOV9d
KikvCisgICAgICAgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAg
ICAgICB3aGVuIC9cQShbIFx0XSspLworICAgICAgICAgICAgIyB3aGl0ZXNwYWNlLCBpZ25vcmUK
KyAgICAgICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSspLworICAgICAgICAgICAgcmVzdWx0IDw8
IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAgICAgICAgd2hlbiAvXEEwKFsw
LTddKykvCisgICAgICAgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLm9j
dC50b19zKQorICAgICAgICB3aGVuIC9cQShbMC05XSspLworICAgICAgICAgICAgcmVzdWx0IDw8
IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICAgICAgd2hlbiAvXEE6Oi8KKyAgICAgICAg
ICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICAgIHdoZW4gL1xB
WzosXChcKVxbXF09XCtcLSpdLworICAgICAgICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5l
TnVtYmVyLCAkJikKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkxleGVyIGVycm9y
IGF0IGxpbmUgbnVtYmVyICN7bGluZU51bWJlcn0sIHVuZXhwZWN0ZWQgc2VxdWVuY2UgI3tzdHJb
MC4uMjBdLmluc3BlY3R9IgorICAgICAgICBlbmQKKyAgICAgICAgc3RyID0gJH4ucG9zdF9tYXRj
aAorICAgIGVuZAorICAgIHJlc3VsdAorZW5kCisKKyMKKyMgVG9rZW4gaWRlbnRpZmljYXRpb24u
CisjCisKK2RlZiBpc1JlZ2lzdGVyKHRva2VuKQorICAgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRF
Uk4KK2VuZAorCitkZWYgaXNJbnN0cnVjdGlvbih0b2tlbikKKyAgICB0b2tlbiA9fiBJTlNUUlVD
VElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzS2V5d29yZCh0b2tlbikKKyAgICB0b2tlbiA9fiAv
XEEoKHRydWUpfChmYWxzZSl8KGlmKXwodGhlbil8KGVsc2UpfChlbHNpZil8KGVuZCl8KGFuZCl8
KG9yKXwobm90KXwobWFjcm8pfChjb25zdCl8KHNpemVvZil8KGVycm9yKSlcWi8gb3IKKyAgICAg
ICAgdG9rZW4gPX4gUkVHSVNURVJfUEFUVEVSTiBvcgorICAgICAgICB0b2tlbiA9fiBJTlNUUlVD
VElPTl9QQVRURVJOCitlbmQKKworZGVmIGlzSWRlbnRpZmllcih0b2tlbikKKyAgICB0b2tlbiA9
fiAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKVxaLyBhbmQgbm90IGlzS2V5d29yZCh0b2tlbikK
K2VuZAorCitkZWYgaXNMYWJlbCh0b2tlbikKKyAgICB0b2tlbiA9fiAvXEFfKFthLXpBLVowLTlf
XSopXFovCitlbmQKKworZGVmIGlzTG9jYWxMYWJlbCh0b2tlbikKKyAgICB0b2tlbiA9fiAvXEFc
LihbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc1ZhcmlhYmxlKHRva2VuKQorICAgIGlz
SWRlbnRpZmllcih0b2tlbikgb3IgaXNSZWdpc3Rlcih0b2tlbikKK2VuZAorCitkZWYgaXNJbnRl
Z2VyKHRva2VuKQorICAgIHRva2VuID1+IC9cQVswLTldLworZW5kCisKKyMKKyMgVGhlIHBhcnNl
ci4gVGFrZXMgYW4gYXJyYXkgb2YgdG9rZW5zIGFuZCByZXR1cm5zIGFuIEFTVC4gTWV0aG9kcwor
IyBvdGhlciB0aGFuIHBhcnNlKHRva2VucykgYXJlIG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9u
LgorIworCitjbGFzcyBQYXJzZXIKKyAgICBkZWYgaW5pdGlhbGl6ZSh0b2tlbnMpCisgICAgICAg
IEB0b2tlbnMgPSB0b2tlbnMKKyAgICAgICAgQGlkeCA9IDAKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XQorICAgICAg
ICAgICAgQHRva2Vuc1tAaWR4XS5wYXJzZUVycm9yKCpjb21tZW50KQorICAgICAgICBlbHNlCisg
ICAgICAgICAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgICAgICAgICAgIHJhaXNlICJQYXJz
ZSBlcnJvciBhdCBlbmQgb2YgZmlsZSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZpbGU6ICN7Y29tbWVudFswXX0iCisgICAg
ICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIGNvbnN1bWUo
cmVnZXhwKQorICAgICAgICBpZiByZWdleHAKKyAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNz
IEB0b2tlbnNbQGlkeF0gPX4gcmVnZXhwCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNl
RXJyb3IgdW5sZXNzIEBpZHggPT0gQHRva2Vucy5sZW5ndGgKKyAgICAgICAgZW5kCisgICAgICAg
IEBpZHggKz0gMQorICAgIGVuZAorICAgIAorICAgIGRlZiBza2lwTmV3TGluZQorICAgICAgICB3
aGlsZSBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIm5vdCIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0g
IigiCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAg
ICAgICAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgICAgICAgcGFyc2VFcnJvciB1
bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgcmVzdWx0CisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInRydWUiCisgICAg
ICAgICAgICByZXN1bHQgPSBUcnVlLmluc3RhbmNlCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJmYWxzZSIK
KyAgICAgICAgICAgIHJlc3VsdCA9IEZhbHNlLmluc3RhbmNlCisgICAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vu
c1tAaWR4XQorICAgICAgICAgICAgcmVzdWx0ID0gU2V0dGluZy5mb3JOYW1lKEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXJzZUVy
cm9yCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBwYXJzZVByZWRpY2F0ZUFu
ZAorICAgICAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgICAgd2hpbGUgQHRv
a2Vuc1tAaWR4XSA9PSAiYW5kIgorICAgICAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBza2lwTmV3
TGluZQorICAgICAgICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgICAgICAg
IHJlc3VsdCA9IEFuZC5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICAgICAgZW5k
CisgICAgICAgIHJlc3VsdAorICAgIGVuZAorICAgIAorICAgIGRlZiBwYXJzZVByZWRpY2F0ZQor
ICAgICAgICAjIHNvbWUgZXhhbXBsZXMgb2YgcHJlY2VkZW5jZToKKyAgICAgICAgIyBub3QgYSBh
bmQgYiAtPiAobm90IGEpIGFuZCBiCisgICAgICAgICMgYSBhbmQgYiBvciBjIC0+IChhIGFuZCBi
KSBvciBjCisgICAgICAgICMgYSBvciBiIGFuZCBjIC0+IGEgb3IgKGIgYW5kIGMpCisgICAgICAg
IAorICAgICAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAgICAgICB3aGlsZSBAdG9r
ZW5zW0BpZHhdID09ICJvciIKKyAgICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4KKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgc2tpcE5ld0xp
bmUKKyAgICAgICAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICAgICAgICAgIHJl
c3VsdCA9IE9yLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgICAgICBlbmQKKyAg
ICAgICAgcmVzdWx0CisgICAgZW5kCisgICAgCisgICAgZGVmIHBhcnNlVmFyaWFibGUKKyAgICAg
ICAgaWYgaXNSZWdpc3RlcihAdG9rZW5zW0BpZHhdKQorICAgICAgICAgICAgaWYgQHRva2Vuc1tA
aWR4XSA9fiBGUFJfUEFUVEVSTgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZQUmVnaXN0ZXJJ
RC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcp
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gUmVnaXN0ZXJJRC5m
b3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisg
ICAgICAgICAgICBlbmQKKyAgICAgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0p
CisgICAgICAgICAgICByZXN1bHQgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHBhcnNlRXJyb3IKKyAgICAgICAgZW5kCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1
bHQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VBZGRyZXNzKG9mZnNldCkKKyAgICAgICAg
cGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgICAgY29kZU9yaWdp
biA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAKKyAgICAgICAgIyBUaHJlZSBw
b3NzaWJpbGl0aWVzOgorICAgICAgICAjIFtdICAgICAgIC0+IEFic29sdXRlQWRkcmVzcworICAg
ICAgICAjIFthXSAgICAgIC0+IEFkZHJlc3MKKyAgICAgICAgIyBbYSxiXSAgICAtPiBCYXNlSW5k
ZXggd2l0aCBzY2FsZSA9IDEKKyAgICAgICAgIyBbYSxiLGNdICAtPiBCYXNlSW5kZXgKKyAgICAg
ICAgCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgor
ICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICByZXR1cm4gQWJzb2x1dGVBZGRyZXNz
Lm5ldyhjb2RlT3JpZ2luLCBvZmZzZXQpCisgICAgICAgIGVuZAorICAgICAgICBhID0gcGFyc2VW
YXJpYWJsZQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICAgICAgcmVz
dWx0ID0gQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgYSwgb2Zmc2V0KQorICAgICAgICBlbHNlCisg
ICAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBiID0gcGFyc2VWYXJpYWJsZQorICAgICAgICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBCYXNl
SW5kZXgubmV3KGNvZGVPcmlnaW4sIGEsIGIsIDEsIG9mZnNldCkKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgor
ICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5s
ZXNzIFsiMSIsICIyIiwgIjQiLCAiOCJdLm1lbWJlcj8gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAg
ICAgICAgICAgICAgICBjID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faQorICAgICAgICAgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNb
QGlkeF0gPT0gIl0iCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2Rl
T3JpZ2luLCBhLCBiLCBjLCBvZmZzZXQpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
cGFyc2VDb2xvbkNvbG9uCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGNvZGVPcmlnaW4g
PSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJ
ZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgbmFtZXMgPSBbQHRva2Vuc1tAaWR4XS5z
dHJpbmddCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09
ICI6OiIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgcGFyc2VFcnJvciB1bmxl
c3MgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAgIG5hbWVzIDw8IEB0b2tl
bnNbQGlkeF0uc3RyaW5nCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZW5kCisgICAg
ICAgIHJhaXNlIGlmIG5hbWVzLmVtcHR5PworICAgICAgICBbY29kZU9yaWdpbiwgbmFtZXNdCisg
ICAgZW5kCisgICAgCisgICAgZGVmIHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICAgICAgc2tpcE5l
d0xpbmUKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICAgICAgTmVnSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2Rl
T3JpZ2luLCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICIoIgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICByZXN1bHQgPSBwYXJz
ZUV4cHJlc3Npb24KKyAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0g
PT0gIikiCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAg
ICBlbHNpZiBpc0ludGVnZXIgQHRva2Vuc1tAaWR4XQorICAgICAgICAgICAgcmVzdWx0ID0gSW1t
ZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5n
LnRvX2kpCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAg
ICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgICAgICAgY29kZU9yaWdp
biwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgICAgICAgIGlmIG5hbWVzLnNpemUgPiAx
CisgICAgICAgICAgICAgICAgU3RydWN0T2Zmc2V0LmZvckZpZWxkKGNvZGVPcmlnaW4sIG5hbWVz
WzAuLi0yXS5qb2luKCc6OicpLCBuYW1lc1stMV0pCisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgVmFyaWFibGUuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lc1swXSkKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICBlbHNpZiBpc1JlZ2lzdGVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAg
ICAgIHBhcnNlVmFyaWFibGUKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9m
IgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9
IHBhcnNlQ29sb25Db2xvbgorICAgICAgICAgICAgU2l6ZW9mLmZvck5hbWUoY29kZU9yaWdpbiwg
bmFtZXMuam9pbignOjonKSkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VFcnJvcgor
ICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VFeHByZXNzaW9uTXVsCisg
ICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbkF0b20K
KyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgICAgICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gIioiCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAg
ICAgcmVzdWx0ID0gTXVsSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdp
biwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAgICAgIHJl
c3VsdAorICAgIGVuZAorICAgIAorICAgIGRlZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgICAgICBA
dG9rZW5zW0BpZHhdID09ICItIiBvciBAdG9rZW5zW0BpZHhdID09ICJzaXplb2YiIG9yIGlzSW50
ZWdlcihAdG9rZW5zW0BpZHhdKSBvciBpc1ZhcmlhYmxlKEB0b2tlbnNbQGlkeF0pIG9yIEB0b2tl
bnNbQGlkeF0gPT0gIigiCisgICAgZW5kCisgICAgCisgICAgZGVmIHBhcnNlRXhwcmVzc2lvbgor
ICAgICAgICBza2lwTmV3TGluZQorICAgICAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25NdWwK
KyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKyIgb3IgQHRva2Vuc1tAaWR4XSA9PSAi
LSIKKyAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIisiCisgICAgICAgICAgICAgICAg
QGlkeCArPSAxCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRv
a2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisg
ICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICItIgorICAgICAgICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IFN1YkltbWVkaWF0ZXMubmV3KEB0b2tl
bnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBlbmQKKyAg
ICAgICAgZW5kCisgICAgICAgIHJlc3VsdAorICAgIGVuZAorICAgIAorICAgIGRlZiBwYXJzZU9w
ZXJhbmQoY29tbWVudCkKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWYgY291bGRCZUV4
cHJlc3Npb24KKyAgICAgICAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgICAgICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgICAgICAgICAgcGFyc2VBZGRyZXNzKGV4
cHIpCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZXhwcgorICAgICAgICAgICAg
ZW5kCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgICAgICBwYXJz
ZUFkZHJlc3MoSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIDApKQorICAg
ICAgICBlbHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAgIHJlc3VsdCA9IExh
YmVsUmVmZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExhYmVsLmZvck5hbWUo
QHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNpZiBpc0xvY2Fs
TGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAgICAgICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJlZmVy
ZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMb2NhbExhYmVsLmZvck5hbWUoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNlCisgICAgICAgICAg
ICBwYXJzZUVycm9yKGNvbW1lbnQpCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRl
ZiBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGNvbnN1
bWUoL1xBXChcWi8pCisgICAgICAgIHZhcmlhYmxlcyA9IFtdCisgICAgICAgIGxvb3AgeworICAg
ICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIiki
CisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAg
ICAgICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICAgICAgICAg
IHZhcmlhYmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwg
QHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICIpIgorICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWsKKyAgICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAg
ICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIHBhcnNlRXJyb3IKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9yCisgICAgICAgICAgICBlbmQKKyAgICAgICAg
fQorICAgICAgICB2YXJpYWJsZXMKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VTZXF1ZW5j
ZShmaW5hbCwgY29tbWVudCkKKyAgICAgICAgZmlyc3RDb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luCisgICAgICAgIGxpc3QgPSBbXQorICAgICAgICBsb29wIHsKKyAgICAgICAg
ICAgIGlmIChAaWR4ID09IEB0b2tlbnMubGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBh
bmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAg
ICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgICAgICAgIyBpZ25v
cmUKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gImNvbnN0IgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAg
ICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzVmFyaWFibGUgQHRva2Vuc1tAaWR4XQorICAgICAgICAg
ICAgICAgIHZhcmlhYmxlID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIj0iCisgICAg
ICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJzZU9wZXJh
bmQoIndoaWxlIGluc2lkZSBvZiBjb25zdCAje3ZhcmlhYmxlLm5hbWV9IikKKyAgICAgICAgICAg
ICAgICBsaXN0IDw8IENvbnN0RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCB2YXJp
YWJsZSwgdmFsdWUpCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJlcnJvciIK
KyAgICAgICAgICAgICAgICBsaXN0IDw8IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmln
aW4pCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5z
W0BpZHhdID09ICJpZiIKKyAgICAgICAgICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4
XS5jb2RlT3JpZ2luCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAg
c2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQor
ICAgICAgICAgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgICAg
ICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICAgIGlmVGhlbkVsc2UgPSBJZlRoZW5FbHNl
Lm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5k
KXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIi
KSkKKyAgICAgICAgICAgICAgICBsaXN0IDw8IGlmVGhlbkVsc2UKKyAgICAgICAgICAgICAgICB3
aGlsZSBAdG9rZW5zW0BpZHhdID09ICJlbHNpZiIKKyAgICAgICAgICAgICAgICAgICAgY29kZU9y
aWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgICAg
ICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgICAgICAgICAgICAgY29uc3Vt
ZSgvXEEoKHRoZW4pfChcbikpXFovKQorICAgICAgICAgICAgICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICAgICAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4s
IHByZWRpY2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAi
d2hpbGUgaW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICAgICAg
ICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNhc2UKKyAgICAgICAgICAgICAgICAg
ICAgaWZUaGVuRWxzZSA9IGVsc2VDYXNlCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAg
ICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiZWxzZSIKKyAgICAgICAgICAgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgICAgICAgICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBwYXJzZVNl
cXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBlbHNlIGNhc2UgZm9yIFwiaWYgI3tw
cmVkaWNhdGUuZHVtcH1cIiIpCisgICAgICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRv
a2Vuc1tAaWR4XSA9PSAiZW5kIgorICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3Jv
IgorICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4K
KyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllcihAdG9rZW5zW0Bp
ZHhdKQorICAgICAgICAgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAg
ICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFj
cm9WYXJpYWJsZXMKKyAgICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRc
Wi8sICJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gI3tuYW1lfSIpCisgICAgICAgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgICAgICAgICAgbGlzdCA8PCBNYWNyby5uZXcoY29kZU9yaWdpbiwgbmFt
ZSwgdmFyaWFibGVzLCBib2R5KQorICAgICAgICAgICAgZWxzaWYgaXNJbnN0cnVjdGlvbiBAdG9r
ZW5zW0BpZHhdCisgICAgICAgICAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbgorICAgICAgICAgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAg
ICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGlmIChub3QgZmluYWwgYW5k
IEBpZHggPT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmlu
YWwpCisgICAgICAgICAgICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLCBhbmQg
aXQncyB0aGUgbGFzdCBvbmUuCisgICAgICAgICAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgICAgICAgICAgICBicmVhawor
ICAgICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICAg
ICAgICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAg
bGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAg
ICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgIyBJdCdzIGRlZmluaXRlbHkgYW4gaW5zdHJ1Y3Rpb24sIGFuZCBpdCBoYXMgYXQgbGVh
c3Qgb25lIG9wZXJhbmQuCisgICAgICAgICAgICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAg
ICAgICAgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9IGZhbHNlCisgICAgICAgICAgICAgICAgICAg
IGxvb3AgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5k
KCJ3aGlsZSBpbnNpZGUgb2YgaW5zdHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFs
IGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24gYW5kIG9mIHRoZSBzZXF1ZW5jZS4KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gdHJ1ZQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiBAdG9r
ZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSGFzIGFub3Ro
ZXIgb3BlcmFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2Zp
bmFsfSBhZnRlciAje29wZXJhbmRzLmxhc3QuZHVtcH0iKQorICAgICAgICAgICAgICAgICAgICAg
ICAgZW5kCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbGlzdCA8
PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgICAg
ICAgICAgICAgIGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
CisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAgICAgICBjb2Rl
T3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgICAgICAgbmFtZSA9
IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgICAgICAgICAgICAgICAgIyBN
YWNybyBpbnZvY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
ICAgICAgICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgICAgICAgICAgICBza2lwTmV3TGlu
ZQorICAgICAgICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAg
ICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNr
aXBOZXdMaW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9
PSAibWFjcm8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSXQncyBhIG1hY3Jv
IGxhbWJkYSEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZU9yaWdpbklubmVy
ID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMg
PSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJv
ZHkgPSBwYXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBhbm9ueW1vdXMg
bWFjcm8gcGFzc2VkIGFzIGFyZ3VtZW50IHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3BlcmFuZHMgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJpYWJsZXMsIGJv
ZHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBt
YWNybyBjYWxsIHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAi
LCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
YXJzZUVycm9yICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5zcGVjdH0gd2hp
bGUgcGFyc2luZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBsaXN0IDw8IE1hY3JvQ2FsbC5uZXcoY29k
ZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9IgorICAg
ICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhd
IG9yIGlzTG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICAgICAgICAgICAgY29kZU9yaWdp
biA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgIG5hbWUgPSBAdG9r
ZW5zW0BpZHhdLnN0cmluZworICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAg
ICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIjoiCisgICAgICAgICAgICAg
ICAgIyBJdCdzIGEgbGFiZWwuCisgICAgICAgICAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAg
ICAgICAgICAgICAgICAgIGxpc3QgPDwgTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbGlzdCA8PCBMb2NhbExh
YmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAg
ICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBw
YXJzZUVycm9yICJFeHBlY3RpbmcgdGVybWluYWwgI3tmaW5hbH0gI3tjb21tZW50fSIKKyAgICAg
ICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIFNlcXVlbmNlLm5ldyhmaXJzdENvZGVPcmln
aW4sIGxpc3QpCisgICAgZW5kCitlbmQKKworZGVmIHBhcnNlKHRva2VucykKKyAgICBwYXJzZXIg
PSBQYXJzZXIubmV3KHRva2VucykKKyAgICBwYXJzZXIucGFyc2VTZXF1ZW5jZShuaWwsICIiKQor
ZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3Rl
cnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9y
ZWdpc3RlcnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK0dQUlMgPQorICAgIFsKKyAgICAgInQwIiwKKyAgICAg
InQxIiwKKyAgICAgInQyIiwKKyAgICAgInQzIiwKKyAgICAgInQ0IiwKKyAgICAgImNmciIsCisg
ICAgICJhMCIsCisgICAgICJhMSIsCisgICAgICJyMCIsCisgICAgICJyMSIsCisgICAgICJzcCIs
CisgICAgICJsciIKKyAgICBdCisKK0ZQUlMgPQorICAgIFsKKyAgICAgImZ0MCIsCisgICAgICJm
dDEiLAorICAgICAiZnQyIiwKKyAgICAgImZ0MyIsCisgICAgICJmdDQiLAorICAgICAiZnQ1IiwK
KyAgICAgImZhMCIsCisgICAgICJmYTEiLAorICAgICAiZmEyIiwKKyAgICAgImZhMyIsCisgICAg
ICJmciIKKyAgICBdCisKK1JFR0lTVEVSUyA9IEdQUlMgKyBGUFJTCisKK0dQUl9QQVRURVJOID0g
UmVnZXhwLm5ldygnXFxBKCgnICsgR1BSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCitGUFJfUEFU
VEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQor
CitSRUdJU1RFUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgUkVHSVNURVJTLmpvaW4o
Jyl8KCcpICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNt
L3NlbGZfaGFzaC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9zZWxmX2hhc2gucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS9zZWxmX2hhc2gucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImRpZ2VzdC9zaGEx
IgorcmVxdWlyZSAicGF0aG5hbWUiCisKKyMKKyMgc2VsZkhhc2ggLT4gU0hBMSBoZXhkaWdlc3QK
KyMKKyMgUmV0dXJucyBhIGhhc2ggb2YgdGhlIG9mZmxpbmVhc20gc291cmNlIGNvZGUuIFRoaXMg
YWxsb3dzIGRlcGVuZGVuY3kKKyMgdHJhY2tpbmcgZm9yIG5vdCBqdXN0IGNoYW5nZXMgaW4gaW5w
dXQsIGJ1dCBhbHNvIGNoYW5nZXMgaW4gdGhlIGFzc2VtYmxlcgorIyBpdHNlbGYuCisjCisKK2Rl
ZiBzZWxmSGFzaAorICAgIGNvbnRlbnRzID0gIiIKKyAgICBteVBhdGggPSBQYXRobmFtZS5uZXco
X19GSUxFX18pLmRpcm5hbWUKKyAgICBEaXIuZm9yZWFjaChteVBhdGgpIHsKKyAgICAgICAgfCBl
bnRyeSB8CisgICAgICAgIGlmIGVudHJ5ID1+IC9cLnJiJC8KKyAgICAgICAgICAgIGNvbnRlbnRz
ICs9IElPOjpyZWFkKG15UGF0aCArIGVudHJ5KQorICAgICAgICBlbmQKKyAgICB9CisgICAgcmV0
dXJuIERpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoY29udGVudHMpCitlbmQKKwpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyMDUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0
OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMg
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisKK3JlcXVpcmUgImFzdCIKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFyc2VyIgor
cmVxdWlyZSAidHJhbnNmb3JtIgorCisjCisjIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhh
c3QpIC0+IHNldHRpbmdzQ29tYmlhdGlvbnMKKyMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkgb2Ygc2V0
dGluZ3MgbWFwcywgd2hlcmUgYSBzZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMKKyMgYSBjb25maWd1
cmF0aW9uIGZvciB0aGUgYXNzZW1ibHkgY29kZSBiZWluZyBnZW5lcmF0ZWQuIFRoZSBtYXAKKyMg
Y29udGFpbnMga2V5IHZhbHVlIHBhaXJzIHdoZXJlIGtleXMgYXJlIHNldHRpbmdzIG5hbWVzIChz
dHJpbmdzKSBhbmQKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVhbnMgKHRydWUgZm9yIGVuYWJsZWQs
IGZhbHNlIGZvciBkaXNhYmxlZCkuCisjCisKK2RlZiBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlv
bnMoYXN0KQorICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gW10KKyAgICAKKyAgICBkZWYgc2V0
dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBtYXBTb0ZhciwgcmVtYWluaW5n
KQorICAgICAgICBpZiByZW1haW5pbmcuZW1wdHk/CisgICAgICAgICAgICBzZXR0aW5nc0NvbWJp
bmF0aW9ucyA8PCBtYXBTb0ZhcgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVuZAorICAg
ICAgICAKKyAgICAgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgICAgIG5ld01hcFtyZW1h
aW5pbmdbMF1dID0gdHJ1ZQorICAgICAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21i
aW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgICAgICAgCisgICAgICAgIG5l
d01hcCA9IG1hcFNvRmFyLmR1cAorICAgICAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IGZhbHNl
CisgICAgICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFw
LCByZW1haW5pbmdbMS4uLTFdKQorICAgIGVuZAorICAgIAorICAgIHNldHRpbmdzQ29tYmluYXRv
cihzZXR0aW5nc0NvbWJpbmF0aW9ucywge30sIChhc3QuZmlsdGVyKFNldHRpbmcpLnVuaXEuY29s
bGVjdHt8dnwgdi5uYW1lfSArIFsiWDg2IiwgIkFSTXY3Il0pLnVuaXEpCisgICAgCisgICAgc2V0
dGluZ3NDb21iaW5hdGlvbnMKK2VuZAorCisjCisjIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGlu
Z3MsIGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2Vu
ZCB8IC4uLiB9CisjCisjIERldGVybWluZXMgaWYgdGhlIHNldHRpbmdzIGNvbWJpbmF0aW9uIGlz
IHZhbGlkLCBhbmQgaWYgc28sIGNhbGxzCisjIHRoZSBibG9jayB3aXRoIHRoZSBpbmZvcm1hdGlv
biB5b3UgbmVlZCB0byBnZW5lcmF0ZSBjb2RlLgorIworCitkZWYgZm9yU2V0dGluZ3MoY29uY3Jl
dGVTZXR0aW5ncywgYXN0KQorICAgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0aGlzIGNv
bWJpbmF0b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgICAgbnVtQ2xhaW1lZEJhY2tlbmRzID0gMAor
ICAgIHNlbGVjdGVkQmFja2VuZCA9IG5pbAorICAgIEJBQ0tFTkRTLmVhY2ggeworICAgICAgICB8
IGJhY2tlbmQgfAorICAgICAgICBpc1N1cHBvcnRlZCA9IGNvbmNyZXRlU2V0dGluZ3NbYmFja2Vu
ZF0KKyAgICAgICAgcmFpc2UgdW5sZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgICAgICBudW1D
bGFpbWVkQmFja2VuZHMgKz0gaWYgaXNTdXBwb3J0ZWQgdGhlbiAxIGVsc2UgMCBlbmQKKyAgICAg
ICAgaWYgaXNTdXBwb3J0ZWQKKyAgICAgICAgICAgIHNlbGVjdGVkQmFja2VuZCA9IGJhY2tlbmQK
KyAgICAgICAgZW5kCisgICAgfQorICAgIAorICAgIHJldHVybiBpZiBudW1DbGFpbWVkQmFja2Vu
ZHMgPiAxCisgICAgCisgICAgIyBSZXNvbHZlIHRoZSBBU1QgZG93biB0byBhIGxvdy1sZXZlbCBm
b3JtIChubyBtYWNyb3Mgb3IgY29uZGl0aW9uYWxzKS4KKyAgICBsb3dMZXZlbEFTVCA9IGFzdC5y
ZXNvbHZlU2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAgICAKKyAgICB5aWVsZCBjb25jcmV0
ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgc2VsZWN0ZWRCYWNrZW5kCitlbmQKKworIworIyBmb3JF
YWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRp
bmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0KKyMKKyMgZm9yRWFjaFZhbGlkU2V0dGlu
Z3NDb21iaW5hdGlvbihhc3QsIHNldHRpbmdzQ29tYmluYXRpb25zKSB7CisjICAgICB8IGNvbmNy
ZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBFeGVjdXRlcyB0
aGUgZ2l2ZW4gYmxvY2sgZm9yIGVhY2ggdmFsaWQgc2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhl
CisjIHNldHRpbmdzIG1hcC4gVGhlIGFzdCBwYXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2
ZWQKKyMgKGFzdC5yZXNvbHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4KKyMKKyMgVGhlIGZpcnN0
IGZvcm0gd2lsbCBjYWxsIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIGZvciB5b3Uu
CisjCisKK2RlZiBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgKm9wdGlvbmFs
U2V0dGluZ3NDb21iaW5hdGlvbnMpCisgICAgcmFpc2UgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJp
bmF0aW9ucy5zaXplID4gMQorICAgIAorICAgIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlv
bnMuZW1wdHk/CisgICAgICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gY29tcHV0ZVNldHRpbmdz
Q29tYmluYXRpb25zKGFzdCkKKyAgICBlbHNlCisgICAgICAgIHNldHRpbmdzQ29tYmluYXRpb25z
ID0gb3B0aW9uYWxTZXR0aW5nc0NvbWJpYXRpb25zWzBdCisgICAgZW5kCisgICAgCisgICAgc2V0
dGluZ3NDb21iaW5hdGlvbnMuZWFjaF93aXRoX2luZGV4IHsKKyAgICAgICAgfCBjb25jcmV0ZVNl
dHRpbmdzLCBpbmRleCB8CisgICAgICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFz
dCkgeworICAgICAgICAgICAgfCBjb25jcmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJhY2tl
bmQgfAorICAgICAgICAgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJh
Y2tlbmQsIGluZGV4CisgICAgICAgIH0KKyAgICB9CitlbmQKKworIworIyBjcHBTZXR0aW5nc1Rl
c3QoY29uY3JldGVTZXR0aW5ncykKKyMKKyMgUmV0dXJucyB0aGUgQysrIGNvZGUgdXNlZCB0byB0
ZXN0IGlmIHdlIGFyZSBpbiBhIGNvbmZpZ3VyYXRpb24gdGhhdAorIyBjb3JyZXNwb25kcyB0byB0
aGUgZ2l2ZW4gY29uY3JldGUgc2V0dGluZ3MuCisjCisKK2RlZiBjcHBTZXR0aW5nc1Rlc3QoY29u
Y3JldGVTZXR0aW5ncykKKyAgICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdzLnRvX2EuY29sbGVj
dHsKKyAgICAgICAgfCBwYWlyIHwKKyAgICAgICAgKGlmIHBhaXJbMV0KKyAgICAgICAgICAgICAi
IgorICAgICAgICAgZWxzZQorICAgICAgICAgICAgICIhIgorICAgICAgICAgZW5kKSArICJPRkZM
SU5FX0FTTV8iICsgcGFpclswXQorICAgIH0uam9pbigiICYmICIpCitlbmQKKworIworIyBpc0FT
VEVycm9uZW91cyhhc3QpCisjCisjIFRlc3RzIHRvIHNlZSBpZiB0aGUgQVNUIGNsYWltcyB0aGF0
IHRoZXJlIGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUKKyMgdXNlcidzIGNvZGUsIGFmdGVyIHNl
dHRpbmdzIHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4KKyMKKworZGVmIGlzQVNURXJyb25l
b3VzKGFzdCkKKyAgICBub3QgYXN0LmZpbHRlcihFcnJvcikuZW1wdHk/CitlbmQKKworIworIyBh
c3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisjCisjIEVtaXRzIGEgY2hlY2sg
dGhhdCBhc3NlcnRzIHRoYXQgd2UncmUgdXNpbmcgdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24uCisj
CisKK2RlZiBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgICAgJG91dHB1
dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAgICRvdXRwdXQucHV0
cyAiI2Vsc2UiCisgICAgJG91dHB1dC5wdXRzICIjZXJyb3IgXCJDb25maWd1cmF0aW9uIG1pc21h
dGNoLlwiIgorICAgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMKKyMgZW1pdENvZGVJ
bkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKSB7CisjICAgICB8
IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCB8IC4uLiB9CisjCisjIEVtaXRzIGFsbCBy
ZWxldmFudCBndWFyZHMgdG8gc2VlIGlmIHRoZSBjb25maWd1cmF0aW9uIGhvbGRzIGFuZAorIyBj
YWxscyB0aGUgYmxvY2sgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGVycm9uZW91cy4KKyMK
KworZGVmIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFj
a2VuZCkKKyAgICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3Mp
CisgICAgCisgICAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAgICAgICAkb3V0cHV0LnB1dHMg
IiNlcnJvciBcIkludmFsaWQgY29uZmlndXJhdGlvbi5cIiIKKyAgICBlbHNpZiBub3QgV09SS0lO
R19CQUNLRU5EUy5pbmNsdWRlPyBiYWNrZW5kCisgICAgICAgICRvdXRwdXQucHV0cyAiI2Vycm9y
IFwiVGhpcyBiYWNrZW5kIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LlwiIgorICAgIGVsc2UKKyAgICAg
ICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kCisgICAgZW5kCisgICAgCisg
ICAgJG91dHB1dC5wdXRzICIjZW5kaWYiCitlbmQKKworIworIyBlbWl0Q29kZUluQWxsQ29uZmln
dXJhdGlvbnMoYXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwg
aW5kZXggfCAuLi4gfQorIworIyBFbWl0cyBndWFyZCBjb2RlcyBmb3IgYWxsIHZhbGlkIGNvbmZp
Z3VyYXRpb25zLCBhbmQgY2FsbHMgdGhlIGJsb2NrCisjIGZvciB0aG9zZSBjb25maWd1cmF0aW9u
cyB0aGF0IGFyZSB2YWxpZCBhbmQgbm90IGVycm9uZW91cy4KKyMKKworZGVmIGVtaXRDb2RlSW5B
bGxDb25maWd1cmF0aW9ucyhhc3QpCisgICAgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlv
bihhc3QpIHsKKyAgICAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2Vu
ZCwgaW5kZXggfAorICAgICAgICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRl
U2V0dGluZ3MpCisgICAgICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBi
YWNrZW5kLCBpbmRleAorICAgICAgICAkb3V0cHV0LnB1dHMgIiNlbmRpZiIKKyAgICB9CitlbmQK
KworCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5y
Ygo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zv
cm0ucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90
cmFuc2Zvcm0ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQyIEBACisjIENvcHlyaWdodCAo
QykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
IyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisj
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCisKKyMKKyMgbm9kZS5yZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpCisjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBkb2Vz
IG5vdCBoYXZlIGFueSBJZlRoZW5FbHNlIG5vZGVzIGJ5CisjIHN1YnN0aXR1dGluZyBjb25jcmV0
ZSBib29sZWFuIHZhbHVlcyBmb3IgZWFjaCBTZXR0aW5nLgorIworCitjbGFzcyBOb2RlCisgICAg
ZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgbWFwQ2hpbGRyZW4geworICAg
ICAgICAgICAgfCBjaGlsZCB8CisgICAgICAgICAgICBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitjbGFzcyBUcnVlCisgICAgZGVmIHJl
c29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgc2VsZgorICAgIGVuZAorZW5kCisKK2Ns
YXNzIEZhbHNlCisgICAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgc2Vs
ZgorICAgIGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcKKyAgICBkZWYgcmVzb2x2ZVNldHRpbmdz
KHNldHRpbmdzKQorICAgICAgICBzZXR0aW5nc1tAbmFtZV0uYXNOb2RlCisgICAgZW5kCitlbmQK
KworY2xhc3MgQW5kCisgICAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAg
KEBsZWZ0LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgYW5kIEByaWdodC5yZXNvbHZl
U2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBP
cgorICAgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICAgIChAbGVmdC5yZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlIG9yIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBOb3QKKyAgICBkZWYg
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgICAobm90IEBjaGlsZC5yZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJZlRo
ZW5FbHNlCisgICAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgaWYgQHBy
ZWRpY2F0ZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlCisgICAgICAgICAgICBAdGhl
bkNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgICBlbHNlCisgICAgICAgICAg
ICBAZWxzZUNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgICBlbmQKKyAgICBl
bmQKK2VuZAorCitjbGFzcyBTZXF1ZW5jZQorICAgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgICAgIG5ld0xpc3QgPSBbXQorICAgICAgICBAbGlzdC5lYWNoIHsKKyAgICAgICAg
ICAgIHwgaXRlbSB8CisgICAgICAgICAgICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpCisgICAgICAgICAgICBpZiBpdGVtLmlzX2E/IFNlcXVlbmNlCisgICAgICAgICAgICAg
ICAgbmV3TGlzdCArPSBpdGVtLmxpc3QKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBuZXdMaXN0IDw8IGl0ZW0KKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIFNl
cXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICAgIGVuZAorZW5kCisKKyMKKyMgbm9k
ZS5kZW1hY3JvaWZ5KG1hY3JvcykKKyMgbm9kZS5zdWJzdGl0dXRlKG1hcHBpbmcpCisjCisjIGRl
bWFjcm9pZnkoKSBjb25zdHJ1Y3RzIGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IE1h
Y3JvCisjIG5vZGVzLCB3aGlsZSBzdWJzdGl0dXRlKCkgcmVwbGFjZXMgVmFyaWFibGUgbm9kZXMg
d2l0aCB0aGUgZ2l2ZW4KKyMgbm9kZXMgaW4gdGhlIG1hcHBpbmcuCisjCisKK2NsYXNzIE5vZGUK
KyAgICBkZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgICAgIG1hcENoaWxkcmVuIHsKKyAgICAg
ICAgICAgIHwgY2hpbGQgfAorICAgICAgICAgICAgY2hpbGQuZGVtYWNyb2lmeShtYWNyb3MpCisg
ICAgICAgIH0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAg
ICAgICBtYXBDaGlsZHJlbiB7CisgICAgICAgICAgICB8IGNoaWxkIHwKKyAgICAgICAgICAgIGNo
aWxkLnN1YnN0aXR1dGUobWFwcGluZykKKyAgICAgICAgfQorICAgIGVuZAorICAgIAorICAgIGRl
ZiBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgICAgIG1hcENoaWxkcmVuIHsKKyAgICAg
ICAgICAgIHwgY2hpbGQgfAorICAgICAgICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxhYmVscyhtYXBw
aW5nKQorICAgICAgICB9CisgICAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8KKyAgICBkZWYgc3Vi
c3RpdHV0ZShtYXBwaW5nKQorICAgICAgICBteU1hcHBpbmcgPSB7fQorICAgICAgICBtYXBwaW5n
LmVhY2hfcGFpciB7CisgICAgICAgICAgICB8IGtleSwgdmFsdWUgfAorICAgICAgICAgICAgdW5s
ZXNzIEB2YXJpYWJsZXMuaW5jbHVkZT8ga2V5CisgICAgICAgICAgICAgICAgbXlNYXBwaW5nW2tl
eV0gPSB2YWx1ZQorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbWFwQ2hpbGRy
ZW4geworICAgICAgICAgICAgfCBjaGlsZCB8CisgICAgICAgICAgICBjaGlsZC5zdWJzdGl0dXRl
KG15TWFwcGluZykKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlCisg
ICAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICAgICAgaWYgbWFwcGluZ1tzZWxmXQorICAg
ICAgICAgICAgbWFwcGluZ1tzZWxmXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmCisg
ICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgICBkZWYgc3Vi
c3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgICAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICAg
ICAgICBtYXBwaW5nW3NlbGZdCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlbGYKKyAgICAg
ICAgZW5kCisgICAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgICBkZWYgc3Vic3RpdHV0
ZShjb25zdGFudHMpCisgICAgICAgIG5ld0xpc3QgPSBbXQorICAgICAgICBteUNvbnN0YW50cyA9
IGNvbnN0YW50cy5kdXAKKyAgICAgICAgQGxpc3QuZWFjaCB7CisgICAgICAgICAgICB8IGl0ZW0g
fAorICAgICAgICAgICAgaWYgaXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAgICAgICAgICAgICBt
eUNvbnN0YW50c1tpdGVtLnZhcmlhYmxlXSA9IGl0ZW0udmFsdWUuc3Vic3RpdHV0ZShteUNvbnN0
YW50cykKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IGl0ZW0u
c3Vic3RpdHV0ZShteUNvbnN0YW50cykKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAg
ICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICAgIGVuZAorICAgIAorICAg
IGRlZiByZW5hbWVMYWJlbHMoY29tbWVudCkKKyAgICAgICAgbWFwcGluZyA9IHt9CisgICAgICAg
IAorICAgICAgICBAbGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgaXRlbSB8CisgICAgICAgICAg
ICBpZiBpdGVtLmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAgICAgICAgICBtYXBwaW5nW2l0ZW1d
ID0gTG9jYWxMYWJlbC51bmlxdWUoaWYgY29tbWVudCB0aGVuIGNvbW1lbnQgKyAiXyIgZWxzZSAi
IiBlbmQgKyBpdGVtLmNsZWFuTmFtZSkKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgZW5kCisgICAgCisg
ICAgZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAgICAgICBteU1hY3JvcyA9IG1hY3Jvcy5kdXAK
KyAgICAgICAgQGxpc3QuZWFjaCB7CisgICAgICAgICAgICB8IGl0ZW0gfAorICAgICAgICAgICAg
aWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICAgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0g
PSBpdGVtCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBuZXdMaXN0ID0gW10K
KyAgICAgICAgQGxpc3QuZWFjaCB7CisgICAgICAgICAgICB8IGl0ZW0gfAorICAgICAgICAgICAg
aWYgaXRlbS5pc19hPyBNYWNybworICAgICAgICAgICAgICAgICMgSWdub3JlLgorICAgICAgICAg
ICAgZWxzaWYgaXRlbS5pc19hPyBNYWNyb0NhbGwKKyAgICAgICAgICAgICAgICBtYXBwaW5nID0g
e30KKyAgICAgICAgICAgICAgICBteU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisgICAgICAgICAg
ICAgICAgcmFpc2UgIkNvdWxkIG5vdCBmaW5kIG1hY3JvICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0u
Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBteU1hY3Jvc1tpdGVtLm5hbWVdCisgICAgICAgICAg
ICAgICAgcmFpc2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxsIHRvICN7aXRlbS5u
YW1lfSBhdCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVtLm9wZXJhbmRzLnNp
emUgPT0gbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQorICAgICAgICAgICAgICAg
IGl0ZW0ub3BlcmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgICAgICAgICAgIHwgaWR4IHwK
KyAgICAgICAgICAgICAgICAgICAgaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IFZhcmlhYmxl
IGFuZCBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1l
XSA9IG15TWFjcm9zW2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgICAgICAg
ICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0g
bmlsCisgICAgICAgICAgICAgICAgICAgIGVsc2lmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBN
YWNybworICAgICAgICAgICAgICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5h
bWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAg
ICAgICAgICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0u
bmFtZV0gPSBuaWwKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9IG5p
bAorICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZh
cmlhYmxlc1tpZHhdXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgICAgICAgICBl
bmQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbmV3TGlzdCArPSBteU1hY3Jv
c1tpdGVtLm5hbWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNy
b3MpLnJlbmFtZUxhYmVscyhpdGVtLm5hbWUpLmxpc3QKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uZGVtYWNyb2lmeShteU1hY3JvcykKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICB9CisgICAgICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdM
aXN0KS5zdWJzdGl0dXRlKHt9KQorICAgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5yZXNvbHZlT2Zm
c2V0cyhvZmZzZXRzLCBzaXplcykKKyMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGhhcyBv
ZmZzZXQgdmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMKKyMgb2Zmc2V0cy4KKyMKKworY2xhc3Mg
Tm9kZQorICAgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICAgICAgbWFw
Q2hpbGRyZW4geworICAgICAgICAgICAgfCBjaGlsZCB8CisgICAgICAgICAgICBjaGlsZC5yZXNv
bHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2Ns
YXNzIFN0cnVjdE9mZnNldAorICAgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykK
KyAgICAgICAgaWYgb2Zmc2V0c1tzZWxmXQorICAgICAgICAgICAgSW1tZWRpYXRlLm5ldyhjb2Rl
T3JpZ2luLCBvZmZzZXRzW3NlbGZdKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmCisg
ICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZgorICAgIGRlZiByZXNvbHZl
T2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICAgICAgaWYgc2l6ZXNbc2VsZl0KKyAgICAgICAg
ICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgc2l6ZXNbc2VsZl0pCisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHB1dHMgIkNvdWxkIG5vdCBmaW5kICN7c2VsZi5pbnNwZWN0fSBpbiAje3Np
emVzLmtleXMuaW5zcGVjdH0iCisgICAgICAgICAgICBwdXRzICJzaXplcyA9ICN7c2l6ZXMuaW5z
cGVjdH0iCisgICAgICAgICAgICBzZWxmCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKKyMK
KyMgbm9kZS5mb2xkCisjCisjIFJlc29sdmUgY29uc3RhbnQgcmVmZXJlbmNlcyBhbmQgY29tcHV0
ZSBhcml0aG1ldGljIGV4cHJlc3Npb25zLgorIworCitjbGFzcyBOb2RlCisgICAgZGVmIGZvbGQK
KyAgICAgICAgbWFwQ2hpbGRyZW4geworICAgICAgICAgICAgfCBjaGlsZCB8CisgICAgICAgICAg
ICBjaGlsZC5mb2xkCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlh
dGVzCisgICAgZGVmIGZvbGQKKyAgICAgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgICAgIEBy
aWdodCA9IEByaWdodC5mb2xkCisgICAgICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19h
PyBJbW1lZGlhdGUKKyAgICAgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1l
ZGlhdGUKKyAgICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSArIEBy
aWdodC52YWx1ZSkKKyAgICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzCisgICAgZGVm
IGZvbGQKKyAgICAgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgICAgIEByaWdodCA9IEByaWdo
dC5mb2xkCisgICAgICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUK
KyAgICAgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICAg
ICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAtIEByaWdodC52YWx1ZSkK
KyAgICBlbmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzCisgICAgZGVmIGZvbGQKKyAgICAg
ICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAg
ICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgcmV0
dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgSW1tZWRpYXRl
Lm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAqIEByaWdodC52YWx1ZSkKKyAgICBlbmQKK2Vu
ZAorCitjbGFzcyBOZWdJbW1lZGlhdGUKKyAgICBkZWYgZm9sZAorICAgICAgICBAY2hpbGQgPSBA
Y2hpbGQuZm9sZAorICAgICAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGNoaWxkLmlzX2E/IEltbWVk
aWF0ZQorICAgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC1AY2hpbGQudmFsdWUpCisg
ICAgZW5kCitlbmQKKworIworIyBub2RlLnJlc29sdmVBZnRlclNldHRpbmdzKG9mZnNldHMsIHNp
emVzKQorIworIyBDb21waWxlIGFzc2VtYmx5IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4KKyMK
KworY2xhc3MgTm9kZQorICAgIGRlZiByZXNvbHZlKG9mZnNldHMsIHNpemVzKQorICAgICAgICBk
ZW1hY3JvaWZ5KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykuZm9sZAorICAgIGVu
ZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjgxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMg
YXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCitjbGFzcyBSZWdpc3RlcklECisgICAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2Cisg
ICAgICAgIGNhc2UgbmFtZQorICAgICAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0MSIsICJh
MSIsICJyMSIsICJ0MiIsICJ0MyIKKyAgICAgICAgICAgIHRydWUKKyAgICAgICAgd2hlbiAidDQi
LCAiY2ZyIgorICAgICAgICAgICAgZmFsc2UKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFp
c2UKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIHg4Nk9wZXJhbmQoa2luZCkK
KyAgICAgICAgY2FzZSBuYW1lCisgICAgICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAg
ICAgICAgY2FzZSBraW5kCisgICAgICAgICAgICB3aGVuIDpieXRlCisgICAgICAgICAgICAgICAg
IiVhbCIKKyAgICAgICAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgICAgICAgICAiJWF4IgorICAg
ICAgICAgICAgd2hlbiA6aW50CisgICAgICAgICAgICAgICAgIiVlYXgiCisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVu
ICJ0MSIsICJhMSIsICJyMSIKKyAgICAgICAgICAgIGNhc2Uga2luZAorICAgICAgICAgICAgd2hl
biA6Ynl0ZQorICAgICAgICAgICAgICAgICIlZGwiCisgICAgICAgICAgICB3aGVuIDpoYWxmCisg
ICAgICAgICAgICAgICAgIiVkeCIKKyAgICAgICAgICAgIHdoZW4gOmludAorICAgICAgICAgICAg
ICAgICIlZWR4IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAg
ICAgICAgICBlbmQKKyAgICAgICAgd2hlbiAidDIiCisgICAgICAgICAgICBjYXNlIGtpbmQKKyAg
ICAgICAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgICAgICAgICAiJWNsIgorICAgICAgICAgICAg
d2hlbiA6aGFsZgorICAgICAgICAgICAgICAgICIlY3giCisgICAgICAgICAgICB3aGVuIDppbnQK
KyAgICAgICAgICAgICAgICAiJWVjeCIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICByYWlzZQorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gInQzIgorICAgICAgICAgICAg
Y2FzZSBraW5kCisgICAgICAgICAgICB3aGVuIDpieXRlCisgICAgICAgICAgICAgICAgIiVibCIK
KyAgICAgICAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgICAgICAgICAiJWJ4IgorICAgICAgICAg
ICAgd2hlbiA6aW50CisgICAgICAgICAgICAgICAgIiVlYngiCisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJ0NCIK
KyAgICAgICAgICAgIGNhc2Uga2luZAorICAgICAgICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAg
ICAgICAgICIlc2lsIgorICAgICAgICAgICAgd2hlbiA6aGFsZgorICAgICAgICAgICAgICAgICIl
c2kiCisgICAgICAgICAgICB3aGVuIDppbnQKKyAgICAgICAgICAgICAgICAiJWVzaSIKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZW5kCisgICAg
ICAgIHdoZW4gImNmciIKKyAgICAgICAgICAgIGNhc2Uga2luZAorICAgICAgICAgICAgd2hlbiA6
Ynl0ZQorICAgICAgICAgICAgICAgICIlZGlsIgorICAgICAgICAgICAgd2hlbiA6aGFsZgorICAg
ICAgICAgICAgICAgICIlZGkiCisgICAgICAgICAgICB3aGVuIDppbnQKKyAgICAgICAgICAgICAg
ICAiJWVkaSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAg
ICAgICAgZW5kCisgICAgICAgIHdoZW4gInNwIgorICAgICAgICAgICAgY2FzZSBraW5kCisgICAg
ICAgICAgICB3aGVuIDpieXRlCisgICAgICAgICAgICAgICAgIiVzcGwiCisgICAgICAgICAgICB3
aGVuIDpoYWxmCisgICAgICAgICAgICAgICAgIiVzcCIKKyAgICAgICAgICAgIHdoZW4gOmludAor
ICAgICAgICAgICAgICAgICIlZXNwIgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHJhaXNlCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2Ug
IkJhZCByZWdpc3RlciAje25hbWV9IGZvciBYODYgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAg
ICAgICAgZW5kCisgICAgZW5kCisgICAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgICAg
ICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVy
SUQKKyAgICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICAgICByYWlzZSB1bmxlc3Mga2luZCA9
PSA6ZG91YmxlCisgICAgICAgIGNhc2UgbmFtZQorICAgICAgICB3aGVuICJmdDAiLCAiZmEwIiwg
ImZyIgorICAgICAgICAgICAgIiV4bW0wIgorICAgICAgICB3aGVuICJmdDEiLCAiZmExIgorICAg
ICAgICAgICAgIiV4bW0xIgorICAgICAgICB3aGVuICJmdDIiLCAiZmEyIgorICAgICAgICAgICAg
IiV4bW0yIgorICAgICAgICB3aGVuICJmdDMiLCAiZmEzIgorICAgICAgICAgICAgIiV4bW0zIgor
ICAgICAgICB3aGVuICJmdDQiCisgICAgICAgICAgICAiJXhtbTQiCisgICAgICAgIHdoZW4gImZ0
NSIKKyAgICAgICAgICAgICIleG1tNSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2Ug
IkJhZCByZWdpc3RlciAje25hbWV9IGZvciBYODYgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAg
ICAgICAgZW5kCisgICAgZW5kCisgICAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgICAg
ICIqI3t4ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUK
KyAgICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICAgICAiJCN7dmFsdWV9IgorICAgIGVuZAor
ICAgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICAgICAiI3t2YWx1ZX0iCisgICAgZW5k
CitlbmQKKworY2xhc3MgQWRkcmVzcworICAgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgICAg
ICB0cnVlCisgICAgZW5kCisgICAgCisgICAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAgICAg
IiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0pIgorICAgIGVuZAorICAg
IGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0i
CisgICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgICAgZGVmIHN1cHBvcnRzOEJpdE9u
WDg2CisgICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgeDg2T3BlcmFuZChraW5k
KQorICAgICAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSwgI3tp
bmRleC54ODZPcGVyYW5kKDppbnQpfSwgI3tzY2FsZX0pIgorICAgIGVuZAorCisgICAgZGVmIHg4
NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgICAgICIqI3t4ODZvcGVyYW5kKGtpbmQpfSIKKyAgICBl
bmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgICBkZWYgc3VwcG9ydHM4Qml0T25Y
ODYKKyAgICAgICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiB4ODZPcGVyYW5kKGtpbmQp
CisgICAgICAgICIje2FkZHJlc3MudmFsdWV9IgorICAgIGVuZAorCisgICAgZGVmIHg4NkNhbGxP
cGVyYW5kKGtpbmQpCisgICAgICAgICIqI3thZGRyZXNzLnZhbHVlfSIKKyAgICBlbmQKK2VuZAor
CitjbGFzcyBMYWJlbFJlZmVyZW5jZQorICAgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAg
ICAgICBhc21MYWJlbAorICAgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UK
KyAgICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAgICAgYXNtTGFiZWwKKyAgICBlbmQK
K2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbgorICAgIGRlZiB4ODZPcGVyYW5kcygqa2luZHMpCisg
ICAgICAgIHJhaXNlIHVubGVzcyBraW5kcy5zaXplID09IG9wZXJhbmRzLnNpemUKKyAgICAgICAg
cmVzdWx0ID0gW10KKyAgICAgICAga2luZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgICB8IGlk
eCB8CisgICAgICAgICAgICByZXN1bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZPcGVyYW5kKGtpbmRz
W2lkeF0pCisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LmpvaW4oIiwgIikKKyAgICBlbmQKKwor
ICAgIGRlZiB4ODZTdWZmaXgoa2luZCkKKyAgICAgICAgY2FzZSBraW5kCisgICAgICAgIHdoZW4g
OmJ5dGUKKyAgICAgICAgICAgICJiIgorICAgICAgICB3aGVuIDpoYWxmCisgICAgICAgICAgICAi
dyIKKyAgICAgICAgd2hlbiA6aW50CisgICAgICAgICAgICAibCIKKyAgICAgICAgd2hlbiA6ZG91
YmxlCisgICAgICAgICAgICAic2QiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlCisg
ICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZPcFdpdGhOdW1PcGVy
YW5kcyhvcGNvZGUsIGtpbmQsIG51bU9wZXJhbmRzKQorICAgICAgICBpZiBudW1PcGVyYW5kcyA9
PSAzCisgICAgICAgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAg
ICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5k
KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBlbHNpZiBv
cGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiI3tv
cGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5w
dXRzICJtb3Yje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQp
fSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgICAgICAkYXNt
LnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJh
bmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZChraW5kKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgIGVuZAor
ICAgIGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZPcChvcGNvZGUsIGtpbmQpCisgICAgICAg
IGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSkK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgaGFuZGxlWDg2U2hpZnQob3Bjb2RlLCBraW5kKQorICAg
ICAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVn
aXN0ZXJJRC5mb3JOYW1lKG5pbCwgInQyIikKKyAgICAgICAgICAgICRhc20ucHV0cyAiI3tvcGNv
ZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoa2luZCl9IgorICAgICAgICBlbHNlCisgICAgICAgICAgICAkYXNtLnB1dHMgInhjaGds
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAgICAgICAgICAkYXNt
LnB1dHMgIiN7b3Bjb2RlfSAlY2wsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisg
ICAgICAgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50
KX0sICVlY3giCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZE
b3VibGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAgICAgICBjYXNlIG1vZGUKKyAgICAg
ICAgd2hlbiA6bm9ybWFsCisgICAgICAgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSIKKyAgICAgICAgd2hlbiA6cmV2ZXJzZQorICAgICAgICAgICAgJGFzbS5wdXRzICJ1Y29t
aXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlIG1vZGUu
aW5zcGVjdAorICAgICAgICBlbmQKKyAgICAgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0g
I3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgZW5kCisgICAgCisgICAgZGVmIGhhbmRsZVg4
NkludENvbXBhcmUob3Bjb2RlU3VmZml4LCBraW5kKQorICAgICAgICBpZiBvcGVyYW5kc1swXS5p
c19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDAgYW5kIG9wZXJhbmRzWzFd
LmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9yIG9wY29kZVN1ZmZp
eCA9PSAibmUiKQorICAgICAgICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgIGVsc2lmIG9wZXJhbmRz
WzFdLmlzX2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMCBhbmQgb3BlcmFu
ZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2Rl
U3VmZml4ID09ICJuZSIpCisgICAgICAgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChr
aW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgJGFzbS5wdXRzICJjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAg
ICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIGhhbmRsZVg4NkludEJyYW5jaChicmFuY2hP
cGNvZGUsIGtpbmQpCisgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmUoYnJhbmNoT3Bjb2RlWzEu
Li0xXSwga2luZCkKKyAgICAgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5k
c1syXS5hc21MYWJlbH0iCisgICAgZW5kCisgICAgCisgICAgZGVmIGhhbmRsZVg4NlNldChzZXRP
cGNvZGUsIG9wZXJhbmQpCisgICAgICAgIGlmIG9wZXJhbmQuc3VwcG9ydHM4Qml0T25YODYKKyAg
ICAgICAgICAgICRhc20ucHV0cyAiI3tzZXRPcGNvZGV9ICN7b3BlcmFuZC54ODZPcGVyYW5kKDpi
eXRlKX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdnpibCAje29wZXJhbmQueDg2T3BlcmFu
ZCg6Ynl0ZSl9LCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAl
ZWF4IgorICAgICAgICAgICAgJGFzbS5wdXRzICIje3NldE9wY29kZX0gJWFsIgorICAgICAgICAg
ICAgJGFzbS5wdXRzICJtb3Z6YmwgJWFsLCAlZWF4IgorICAgICAgICAgICAgJGFzbS5wdXRzICJ4
Y2hnbCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgICAgIGVuZAorICAg
IGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlU2V0KHNldE9wY29kZSwga2lu
ZCkKKyAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZShzZXRPcGNvZGVbMy4uLTFdLCBraW5kKQor
ICAgICAgICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kc1syXSkKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgaGFuZGxlWDg2VGVzdChraW5kKQorICAgICAgICB2YWx1ZSA9IG9wZXJhbmRz
WzBdCisgICAgICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgICAgICB3aGVuIDIKKyAgICAgICAg
ICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAgICAgICB3aGVuIDMK
KyAgICAgICAgICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICAgICAgICBlbHNlCisgICAgICAgICAg
ICByYWlzZSAiRXhwZWN0ZWQgMiBvciAzIG9wZXJhbmRzLCBidXQgZ290ICN7b3BlcmFuZHMuc2l6
ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5kCisgICAgICAgIAorICAgICAg
ICBpZiBtYXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQorICAgICAgICAg
ICAgaWYgdmFsdWUuaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgICRhc20ucHV0cyAi
dGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVl
Lng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICRh
c20ucHV0cyAiY21wI3t4ODZTdWZmaXgoa2luZCl9ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQoa2lu
ZCl9IgorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICRhc20ucHV0
cyAidGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje21hc2sueDg2T3BlcmFuZChraW5kKX0sICN7dmFs
dWUueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRl
ZiBoYW5kbGVYODZCcmFuY2hUZXN0KGJyYW5jaE9wY29kZSwga2luZCkKKyAgICAgICAgaGFuZGxl
WDg2VGVzdChraW5kKQorICAgICAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJh
bmRzLmxhc3QuYXNtTGFiZWx9IgorICAgIGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZTZXRU
ZXN0KHNldE9wY29kZSwga2luZCkKKyAgICAgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgICAg
ICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kcy5sYXN0KQorICAgIGVuZAorICAgIAor
ICAgIGRlZiBoYW5kbGVYODZPcEJyYW5jaChvcGNvZGUsIGJyYW5jaE9wY29kZSwga2luZCkKKyAg
ICAgICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5z
aXplIC0gMSkKKyAgICAgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgICAgIHdoZW4gNAorICAg
ICAgICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgICAgIHdoZW4gMworICAgICAg
ICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHJhaXNlIHNlbGYuaW5zcGVjdAorICAgICAgICBlbmQKKyAgICAgICAgJGFzbS5wdXRzICIje2Jy
YW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0LmFzbUxhYmVsfSIKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgaGFuZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAgICAgICAgaWYgb3Bl
cmFuZHMuc2l6ZSA9PSA0IGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAg
ICAgJGFzbS5wdXRzICJuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAgICAgICAkYXNtLnB1dHMgImFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwg
I3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMoInN1YiN7eDg2U3VmZml4KGtpbmQpfSIsIGtp
bmQsIG9wZXJhbmRzLnNpemUgLSAxKQorICAgICAgICBlbmQKKyAgICAgICAgY2FzZSBvcGVyYW5k
cy5zaXplCisgICAgICAgIHdoZW4gNAorICAgICAgICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRz
WzNdCisgICAgICAgIHdoZW4gMworICAgICAgICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJd
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgICAgICBl
bmQKKyAgICAgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0LmFzbUxh
YmVsfSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbG93ZXJYODYKKyAgICAgICAgJGFzbS5jb21t
ZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICAgICAgY2FzZSBvcGNvZGUKKyAgICAgICAgd2hlbiAi
YWRkaSIsICJhZGRwIgorICAgICAgICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVy
YW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3Bl
cmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBv
cGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICAgICAgICAgaWYgb3BlcmFuZHNb
MF0udmFsdWUgPT0gMAorICAgICAgICAgICAgICAgICAgICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0g
b3BlcmFuZHNbMl0KKyAgICAgICAgICAgICAgICAgICAgICAgICRhc20ucHV0cyAibW92bCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmlu
dCl9IgorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICRhc20ucHV0cyAibGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2lmIG9wZXJhbmRzLnNp
emUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAg
IHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICAgICAg
ICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgICAg
ICAgICAkYXNtLnB1dHMgImxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQo
OmludCl9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHVubGVzcyBJbW1lZGlh
dGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAgICAgICAgICAgJGFzbS5w
dXRzICJhZGRsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgICAgICAgICAgIGVu
ZAorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgICAg
ICAgIGhhbmRsZVg4Nk9wKCJhbmRsIiwgOmludCkKKyAgICAgICAgd2hlbiAibHNoaWZ0aSIKKyAg
ICAgICAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzYWxsIiwgOmludCkKKyAgICAgICAgd2hlbiAibXVs
aSIKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNf
YT8gSW1tZWRpYXRlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJpbXVsbCAje3g4Nk9wZXJh
bmRzKDppbnQsIDppbnQsIDppbnQpfSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAjIEZJWE1FOiBjb3VsZCBkbyBzb21lIHBlZXBob2xlIGluIGNhc2UgdGhlIGxlZnQgb3BlcmFu
ZCBpcyBpbW1lZGlhdGUgYW5kIGl0J3MKKyAgICAgICAgICAgICAgICAjIGEgcG93ZXIgb2YgdHdv
LgorICAgICAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJpbXVsbCIsIDppbnQpCisgICAgICAgICAg
ICBlbmQKKyAgICAgICAgd2hlbiAibmVnaSIKKyAgICAgICAgICAgICRhc20ucHV0cyAibmVnbCAj
e3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICAgICAgd2hlbiAibm90aSIKKyAgICAgICAgICAgICRh
c20ucHV0cyAibm90bCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICAgICAgd2hlbiAib3JpIiwg
Im9ycCIKKyAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJvcmwiLCA6aW50KQorICAgICAgICB3aGVu
ICJyc2hpZnRpIgorICAgICAgICAgICAgaGFuZGxlWDg2U2hpZnQoInNhcmwiLCA6aW50KQorICAg
ICAgICB3aGVuICJ1cnNoaWZ0aSIKKyAgICAgICAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzaHJsIiwg
OmludCkKKyAgICAgICAgd2hlbiAic3ViaSIsICJzdWJwIgorICAgICAgICAgICAgaWYgb3BlcmFu
ZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAg
ICAgICRhc20ucHV0cyAibmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAg
ICAgICAgICAgICAgICRhc20ucHV0cyAiYWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmlu
dCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJzdWJsIiwgOmludCkKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICB3aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICAgICAgICBoYW5kbGVYODZPcCgi
eG9ybCIsIDppbnQpCisgICAgICAgIHdoZW4gImxvYWRpIiwgInN0b3JlaSIsICJsb2FkcCIsICJz
dG9yZXAiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6
aW50KX0iCisgICAgICAgIHdoZW4gImxvYWRiIgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3Z6
YmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICAgIHdoZW4gImxvYWRicyIKKyAgICAgICAgICAgICRhc20ucHV0
cyAibW92c2JsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICB3aGVuICJsb2FkaCIKKyAgICAgICAgICAgICRh
c20ucHV0cyAibW92endsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICB3aGVuICJsb2FkaHMiCisgICAgICAg
ICAgICAkYXNtLnB1dHMgIm1vdnN3bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgd2hlbiAic3RvcmViIgor
ICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZiICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0i
CisgICAgICAgIHdoZW4gImxvYWRkIiwgIm1vdmVkIiwgInN0b3JlZCIKKyAgICAgICAgICAgICRh
c20ucHV0cyAibW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgICAg
IHdoZW4gImFkZGQiCisgICAgICAgICAgICAkYXNtLnB1dHMgImFkZHNkICN7eDg2T3BlcmFuZHMo
OmRvdWJsZSwgOmRvdWJsZSl9IgorICAgICAgICB3aGVuICJkaXZkIgorICAgICAgICAgICAgJGFz
bS5wdXRzICJkaXZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICAgICAg
d2hlbiAic3ViZCIKKyAgICAgICAgICAgICRhc20ucHV0cyAic3Vic2QgI3t4ODZPcGVyYW5kcyg6
ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgICAgIHdoZW4gIm11bGQiCisgICAgICAgICAgICAkYXNt
LnB1dHMgIm11bHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgICAgICB3
aGVuICJzcXJ0ZCIKKyAgICAgICAgICAgICRhc20ucHV0cyAic3FydHNkICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0i
CisgICAgICAgIHdoZW4gImNpMmQiCisgICAgICAgICAgICAkYXNtLnB1dHMgImN2dHNpMnNkICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0iCisgICAgICAgIHdoZW4gImJkZXEiCisgICAgICAgICAgICBpc1Vub3JkZXJlZCA9
IExvY2FsTGFiZWwudW5pcXVlKCJiZGVxIikKKyAgICAgICAgICAgICRhc20ucHV0cyAidWNvbWlz
ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmRvdWJsZSl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJqcCAje0xhYmVsUmVmZXJl
bmNlLm5ldyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkuYXNtTGFiZWx9IgorICAgICAgICAgICAg
JGFzbS5wdXRzICJqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBvcGVyYW5kc1sy
XSkuYXNtTGFiZWx9IgorICAgICAgICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAg
ICAgIHdoZW4gImJkbmVxIgorICAgICAgICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqbmUi
LCA6bm9ybWFsKQorICAgICAgICB3aGVuICJiZGd0IgorICAgICAgICAgICAgaGFuZGxlWDg2RG91
YmxlQnJhbmNoKCJqYSIsIDpub3JtYWwpCisgICAgICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgICAg
ICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOm5vcm1hbCkKKyAgICAgICAgd2hlbiAi
YmRsdCIKKyAgICAgICAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6cmV2ZXJzZSkK
KyAgICAgICAgd2hlbiAiYmRsdGVxIgorICAgICAgICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNo
KCJqYWUiLCA6cmV2ZXJzZSkKKyAgICAgICAgd2hlbiAiYmRlcXVuIgorICAgICAgICAgICAgaGFu
ZGxlWDg2RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwpCisgICAgICAgIHdoZW4gImJkbmVxdW4i
CisgICAgICAgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikK
KyAgICAgICAgICAgIGlzRXF1YWwgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAg
ICAgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICAgICAgICRh
c20ucHV0cyAianAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQp
LmFzbUxhYmVsfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiamUgI3tMYWJlbFJlZmVyZW5jZS5u
ZXcoY29kZU9yaWdpbiwgaXNFcXVhbCkuYXNtTGFiZWx9IgorICAgICAgICAgICAgaXNVbm9yZGVy
ZWQubG93ZXIoIlg4NiIpCisgICAgICAgICAgICAkYXNtLnB1dHMgImptcCAje29wZXJhbmRzWzJd
LmFzbUxhYmVsfSIKKyAgICAgICAgICAgIGlzRXF1YWwubG93ZXIoIlg4NiIpCisgICAgICAgIHdo
ZW4gImJkZ3R1biIKKyAgICAgICAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6cmV2
ZXJzZSkKKyAgICAgICAgd2hlbiAiYmRndGVxdW4iCisgICAgICAgICAgICBoYW5kbGVYODZEb3Vi
bGVCcmFuY2goImpiZSIsIDpyZXZlcnNlKQorICAgICAgICB3aGVuICJiZGx0dW4iCisgICAgICAg
ICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOm5vcm1hbCkKKyAgICAgICAgd2hlbiAi
YmRsdGVxdW4iCisgICAgICAgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3Jt
YWwpCisgICAgICAgIHdoZW4gImJ0ZDJpIgorICAgICAgICAgICAgJGFzbS5wdXRzICJjdnR0c2Qy
c2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiY21wbCAkMHg4MDAwMDAwMCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJq
ZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAidGQyaSIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAiY3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIHdoZW4gImJjZDJp
IgorICAgICAgICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVy
YW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAidGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiamUg
I3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImN2dHNpMnNk
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgICAgICAgJGFz
bS5wdXRzICJ1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03
IgorICAgICAgICAgICAgJGFzbS5wdXRzICJqcCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAg
ICAgICAgICAgICRhc20ucHV0cyAiam5lICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAg
ICB3aGVuICJtb3ZkeiIKKyAgICAgICAgICAgICRhc20ucHV0cyAieG9ycGQgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUp
fSIKKyAgICAgICAgd2hlbiAicG9wIgorICAgICAgICAgICAgJGFzbS5wdXRzICJwb3AgI3tvcGVy
YW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgd2hlbiAicHVzaCIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAicHVzaCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAg
ICAgICB3aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgICAgICAgaWYgSW1tZWRp
YXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdp
c3RlcklECisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJ4b3JsICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAg
ICAgICBlbHNpZiBvcGVyYW5kc1swXSAhPSBvcGVyYW5kc1sxXQorICAgICAgICAgICAgICAgICRh
c20ucHV0cyAibW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICB3aGVuICJub3AiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm5vcCIKKyAgICAg
ICAgd2hlbiAiYmllcSIsICJicGVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJq
ZSIsIDppbnQpCisgICAgICAgIHdoZW4gImJpbmVxIiwgImJwbmVxIgorICAgICAgICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqbmUiLCA6aW50KQorICAgICAgICB3aGVuICJiaWEiLCAiYnBhIgor
ICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDppbnQpCisgICAgICAgIHdoZW4g
ImJpYWVxIiwgImJwYWVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6
aW50KQorICAgICAgICB3aGVuICJiaWIiLCAiYnBiIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50
QnJhbmNoKCJqYiIsIDppbnQpCisgICAgICAgIHdoZW4gImJpYmVxIiwgImJwYmVxIgorICAgICAg
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6aW50KQorICAgICAgICB3aGVuICJiaWd0
IiwgImJwZ3QiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmludCkKKyAg
ICAgICAgd2hlbiAiYmlndGVxIiwgImJwZ3RlcSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamdlIiwgOmludCkKKyAgICAgICAgd2hlbiAiYmlsdCIsICJicGx0IgorICAgICAgICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbCIsIDppbnQpCisgICAgICAgIHdoZW4gImJpbHRlcSIs
ICJicGx0ZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsZSIsIDppbnQpCisg
ICAgICAgIHdoZW4gImJiZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwg
OmJ5dGUpCisgICAgICAgIHdoZW4gImJibmVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqbmUiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAiYmJhIgorICAgICAgICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqYSIsIDpieXRlKQorICAgICAgICB3aGVuICJiYmFlcSIKKyAgICAgICAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmJ5dGUpCisgICAgICAgIHdoZW4gImJiYiIK
KyAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6Ynl0ZSkKKyAgICAgICAgd2hl
biAiYmJiZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRlKQor
ICAgICAgICB3aGVuICJiYmd0IgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIs
IDpieXRlKQorICAgICAgICB3aGVuICJiYmd0ZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRC
cmFuY2goImpnZSIsIDpieXRlKQorICAgICAgICB3aGVuICJiYmx0IgorICAgICAgICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqbCIsIDpieXRlKQorICAgICAgICB3aGVuICJiYmx0ZXEiCisgICAg
ICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsdGVxIiwgOmJ5dGUpCisgICAgICAgIHdoZW4g
ImJ0aW8iLCAiYnRwbyIKKyAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmlu
dCkKKyAgICAgICAgd2hlbiAiYnRpcyIsICJidHBzIgorICAgICAgICAgICAgaGFuZGxlWDg2QnJh
bmNoVGVzdCgianMiLCA6aW50KQorICAgICAgICB3aGVuICJidGl6IiwgImJ0cHoiCisgICAgICAg
ICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDppbnQpCisgICAgICAgIHdoZW4gImJ0aW56
IiwgImJ0cG56IgorICAgICAgICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmludCkK
KyAgICAgICAgd2hlbiAiYnRibyIKKyAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpv
IiwgOmJ5dGUpCisgICAgICAgIHdoZW4gImJ0YnMiCisgICAgICAgICAgICBoYW5kbGVYODZCcmFu
Y2hUZXN0KCJqcyIsIDpieXRlKQorICAgICAgICB3aGVuICJidGJ6IgorICAgICAgICAgICAgaGFu
ZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAiYnRibnoiCisgICAg
ICAgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAi
am1wIgorICAgICAgICAgICAgJGFzbS5wdXRzICJqbXAgI3tvcGVyYW5kc1swXS54ODZDYWxsT3Bl
cmFuZCg6aW50KX0iCisgICAgICAgIHdoZW4gImJhZGRpbyIsICJiYWRkcG8iCisgICAgICAgICAg
ICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbyIsIDppbnQpCisgICAgICAgIHdoZW4gImJh
ZGRpcyIsICJiYWRkcHMiCisgICAgICAgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJq
cyIsIDppbnQpCisgICAgICAgIHdoZW4gImJhZGRpeiIsICJiYWRkcHoiCisgICAgICAgICAgICBo
YW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqeiIsIDppbnQpCisgICAgICAgIHdoZW4gImJhZGRp
bnoiLCAiYmFkZHBueiIKKyAgICAgICAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpu
eiIsIDppbnQpCisgICAgICAgIHdoZW4gImJzdWJpbyIKKyAgICAgICAgICAgIGhhbmRsZVg4NlN1
YkJyYW5jaCgiam8iLCA6aW50KQorICAgICAgICB3aGVuICJic3ViaXMiCisgICAgICAgICAgICBo
YW5kbGVYODZTdWJCcmFuY2goImpzIiwgOmludCkKKyAgICAgICAgd2hlbiAiYnN1Yml6IgorICAg
ICAgICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqeiIsIDppbnQpCisgICAgICAgIHdoZW4gImJz
dWJpbnoiCisgICAgICAgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpueiIsIDppbnQpCisgICAg
ICAgIHdoZW4gImJtdWxpbyIKKyAgICAgICAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIs
ICJqbyIsIDppbnQpCisgICAgICAgIHdoZW4gImJtdWxpcyIKKyAgICAgICAgICAgIGhhbmRsZVg4
Nk9wQnJhbmNoKCJpbXVsbCIsICJqcyIsIDppbnQpCisgICAgICAgIHdoZW4gImJtdWxpeiIKKyAg
ICAgICAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqeiIsIDppbnQpCisgICAgICAg
IHdoZW4gImJtdWxpbnoiCisgICAgICAgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAi
am56IiwgOmludCkKKyAgICAgICAgd2hlbiAiYm9yaW8iCisgICAgICAgICAgICBoYW5kbGVYODZP
cEJyYW5jaCgib3JsIiwgImpvIiwgOmludCkKKyAgICAgICAgd2hlbiAiYm9yaXMiCisgICAgICAg
ICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpzIiwgOmludCkKKyAgICAgICAgd2hlbiAi
Ym9yaXoiCisgICAgICAgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImp6IiwgOmludCkK
KyAgICAgICAgd2hlbiAiYm9yaW56IgorICAgICAgICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9y
bCIsICJqbnoiLCA6aW50KQorICAgICAgICB3aGVuICJicmVhayIKKyAgICAgICAgICAgICRhc20u
cHV0cyAiaW50ICQzIgorICAgICAgICB3aGVuICJjYWxsIgorICAgICAgICAgICAgJGFzbS5wdXRz
ICJjYWxsICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgICAgICB3aGVu
ICJyZXQiCisgICAgICAgICAgICAkYXNtLnB1dHMgInJldCIKKyAgICAgICAgd2hlbiAiY2llcSIs
ICJjcGVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQp
CisgICAgICAgIHdoZW4gImNpbmVxIiwgImNwbmVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50
Q29tcGFyZVNldCgic2V0bmUiLCA6aW50KQorICAgICAgICB3aGVuICJjaWEiLCAiY3BhIgorICAg
ICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YSIsIDppbnQpCisgICAgICAgIHdo
ZW4gImNpYWVxIiwgImNwYWVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgi
c2V0YWUiLCA6aW50KQorICAgICAgICB3aGVuICJjaWIiLCAiY3BiIgorICAgICAgICAgICAgaGFu
ZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YiIsIDppbnQpCisgICAgICAgIHdoZW4gImNpYmVxIiwg
ImNwYmVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YmUiLCA6aW50
KQorICAgICAgICB3aGVuICJjaWd0IiwgImNwZ3QiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRD
b21wYXJlU2V0KCJzZXRnIiwgOmludCkKKyAgICAgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIK
KyAgICAgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGdlIiwgOmludCkKKyAgICAg
ICAgd2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNl
dCgic2V0bCIsIDppbnQpCisgICAgICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiCisgICAgICAg
ICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisgICAgICAgIHdoZW4g
InRpbyIKKyAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6aW50KQorICAgICAg
ICB3aGVuICJ0aXMiCisgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmludCkK
KyAgICAgICAgd2hlbiAidGl6IgorICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIs
IDppbnQpCisgICAgICAgIHdoZW4gInRpbnoiCisgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0
KCJzZXRueiIsIDppbnQpCisgICAgICAgIHdoZW4gInRibyIKKyAgICAgICAgICAgIGhhbmRsZVg4
NlNldFRlc3QoInNldG8iLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAidGJzIgorICAgICAgICAgICAg
aGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAgICAgICB3aGVuICJ0YnoiCisgICAg
ICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmJ5dGUpCisgICAgICAgIHdoZW4gInRi
bnoiCisgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDpieXRlKQorICAgICAg
ICB3aGVuICJwZWVrIgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZsICN7b3BlcmFuZHNbMF0u
dmFsdWUgKiA0fSglZXNwKSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
ICAgd2hlbiAicG9rZSIKKyAgICAgICAgICAgICRhc20ucHV0cyAibW92bCAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLnZhbHVlICogNH0oJWVzcCkiCisgICAg
ICAgIHdoZW4gImNkcWkiCisgICAgICAgICAgICAkYXNtLnB1dHMgImNkcSIKKyAgICAgICAgd2hl
biAiaWRpdmkiCisgICAgICAgICAgICAkYXNtLnB1dHMgImlkaXZsICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6aW50KX0iCisgICAgICAgIHdoZW4gImZpaTJkIgorICAgICAgICAgICAgJGFzbS5w
dXRzICJtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAgICAgICAkYXNtLnB1dHMg
InBzbGxxICQzMiwgJXhtbTciCisgICAgICAgICAgICAkYXNtLnB1dHMgInBvciAleG1tNywgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICAgd2hlbiAiZmQyaWkiCisg
ICAgICAgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3Vi
bGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAgICRhc20u
cHV0cyAibW92c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisg
ICAgICAgICAgICAkYXNtLnB1dHMgInBzcmxxICQzMiwgJXhtbTciCisgICAgICAgICAgICAkYXNt
LnB1dHMgIm1vdnNkICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAg
ICAgICB3aGVuICJibyIKKyAgICAgICAgICAgICRhc20ucHV0cyAiam8gI3tvcGVyYW5kc1swXS5h
c21MYWJlbH0iCisgICAgICAgIHdoZW4gImJzIgorICAgICAgICAgICAgJGFzbS5wdXRzICJqcyAj
e29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYnoiCisgICAgICAgICAgICAk
YXNtLnB1dHMgImp6ICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJibnoi
CisgICAgICAgICAgICAkYXNtLnB1dHMgImpueiAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAg
ICAgICAgd2hlbiAibGVhaSIsICJsZWFwIgorICAgICAgICAgICAgJGFzbS5wdXRzICJsZWFsICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJCYWQgb3Bjb2RlOiAje29w
Y29kZX0iCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6
YXRpb25LaW5kLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kX2gKKyNkZWZpbmUgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisKK25hbWVzcGFjZSBK
U0MgeworCitlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZv
ckNvbnN0cnVjdCB9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENvZGVTcGVj
aWFsaXphdGlvbktpbmRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuaAkocmV2aXNpb24gMTA4MTYyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDYgKzI3LDcgQEAKICNkZWZpbmUgQ29tbW9uU2xvd1BhdGhzX2gKIAogI2luY2x1ZGUgIkNvZGVC
bG9jay5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJF
eGNlcHRpb25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogCkBAIC00MSw2ICs0Miwz
OCBAQCBuYW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIENvbW1vblNsb3dQYXRocyB7CiAKK0FM
V0FZU19JTkxJTkUgRXhlY1N0YXRlKiBhcml0eUNoZWNrRm9yKEV4ZWNTdGF0ZSogZXhlYywgUmVn
aXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sK
KyAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAg
ICBBU1NFUlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7CisgICAgQ29kZUJsb2NrKiBuZXdD
b2RlQmxvY2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Io
a2luZCk7CisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gZXhlYy0+YXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoKTsKKworICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3Bh
Y2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBi
eSB0aGUgY2FsbGVyLgorICAgIGlmICghcmVnaXN0ZXJGaWxlLT5ncm93KGV4ZWMtPnJlZ2lzdGVy
cygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVt
Q2FsbGVlUmVnaXN0ZXJzKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBU1NFUlQoYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CisK
KyAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50
cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgorICAgIHNp
emVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXM7CisgICAgUmVnaXN0ZXIqIHNyYyA9IGV4ZWMtPnJlZ2lzdGVycygpOwor
ICAgIFJlZ2lzdGVyKiBkc3QgPSBleGVjLT5yZWdpc3RlcnMoKSArIGRlbHRhOworCisgICAgaW50
IGk7CisgICAgaW50IGVuZCA9IC1FeGVjU3RhdGU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyk7CisgICAgZm9yIChpID0gLTE7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRz
dFtpXSA9IHNyY1tpXTsKKworICAgIGVuZCAtPSBkZWx0YTsKKyAgICBmb3IgKCA7IGkgPj0gZW5k
OyAtLWkpCisgICAgICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7CisKKyAgICBFeGVjU3RhdGUq
IG5ld0V4ZWMgPSBFeGVjU3RhdGU6OmNyZWF0ZShkc3QpOworICAgIEFTU0VSVCgodm9pZCopbmV3
RXhlYyA8PSByZWdpc3RlckZpbGUtPmVuZCgpKTsKKyAgICByZXR1cm4gbmV3RXhlYzsKK30KKwog
QUxXQVlTX0lOTElORSBib29sIG9wSW5zdGFuY2VPZlNsb3coRXhlY1N0YXRlKiBleGVjLCBKU1Zh
bHVlIHZhbHVlLCBKU1ZhbHVlIGJhc2VWYWwsIEpTVmFsdWUgcHJvdG8pCiB7CiAgICAgQVNTRVJU
KCF2YWx1ZS5pc0NlbGwoKSB8fCAhYmFzZVZhbC5pc0NlbGwoKSB8fCAhcHJvdG8uaXNDZWxsKCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShy
ZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ5dGVj
b2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHRHJp
dmVyLmgiCisjaW5jbHVkZSAiRXhlY3V0aW9uSGFybmVzcy5oIgogI2luY2x1ZGUgIkpJVC5oIgog
I2luY2x1ZGUgIkpJVERyaXZlci5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgpAQCAtODgsNyArODks
NyBAQCBJbnRyaW5zaWMgTmF0aXZlRXhlY3V0YWJsZTo6aW50cmluc2ljKCkgCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogc3RhdGljIHZvaWQgamV0dGlzb25Db2RlQmxvY2soSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBPd25QdHI8VD4mIGNvZGVCbG9jaykKIHsKLSAgICBBU1NFUlQoY29kZUJsb2Nr
LT5nZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRD
b2RlOjppc09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpKTsKICAgICBBU1NF
UlQoY29kZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKICAgICBPd25QdHI8VD4gY29kZUJsb2NrVG9K
ZXR0aXNvbiA9IGNvZGVCbG9jay5yZWxlYXNlKCk7CiAgICAgY29kZUJsb2NrID0gc3RhdGljX3Bv
aW50ZXJfY2FzdDxUPihjb2RlQmxvY2tUb0pldHRpc29uLT5yZWxlYXNlQWx0ZXJuYXRpdmUoKSk7
CkBAIC0xNzUsOSArMTc2LDMwIEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZU9w
dGltaXoKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OmppdENv
bXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0
Q29tcGlsZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENv
ZGVGb3JDYWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQo
cmVzdWx0LCByZXN1bHQpOworfQorCitpbmxpbmUgY29uc3QgY2hhciogc2FtcGxpbmdEZXNjcmlw
dGlvbihKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisgICAgc3dpdGNoIChqaXRUeXBlKSB7
CisgICAgY2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rOgorICAgICAgICByZXR1cm4gIklu
dGVycHJldGVyIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6QmFzZWxp
bmVKSVQ6CisgICAgICAgIHJldHVybiAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSI7Cisg
ICAgY2FzZSBKSVRDb2RlOjpERkdKSVQ6CisgICAgICAgIHJldHVybiAiREZHIENvbXBpbGF0aW9u
IChUT1RBTCkiOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwor
ICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6
Y29tcGlsZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hh
aW5Ob2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24g
c2FtcGxpbmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGlu
ZSBDb21waWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAg
IFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlw
ZSkpOwogICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsK
QEAgLTIxOCw3ICsyNDAsNyBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRl
cm5hCiAgICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJv
cHJpYXRlKCpnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGpp
dFR5cGUpKQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xvYmFsRGF0YSwgbV9ldmFs
Q29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7
CiAjZW5kaWYKIApAQCAtMzAzLDkgKzMyNSwxNSBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFi
bGU6OmNvbXBpbGVPcHRpCiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIFByb2dyYW1FeGVj
dXRhYmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29s
IHJlc3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fcHJvZ3JhbUNv
ZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAg
ICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwogSlNPYmplY3QqIFByb2dyYW1F
eGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9k
ZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1w
bGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklU
ID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9U
QUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlw
dGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFN
KGppdFR5cGUpOwpAQCAtMzQ0LDcgKzM3Miw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJs
ZTo6Y29tcGlsZUludGUKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29t
cGlsZUlmQXBwcm9wcmlhdGUoKmdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRD
b2RlRm9yQ2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKCpnbG9i
YWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQog
ICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC00MjAsNyArNDQ4LDcgQEAgRnVuY3Rpb25D
b2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6YgogICAgIHdoaWxlIChyZXN1bHQtPmFsdGVy
bmF0aXZlKCkpCiAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2Nr
Kj4ocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKTsKICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICBBU1NF
UlQocmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFT
U0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQ0Niw2ICs0NzQsMTggQEAgSlNPYmplY3QqIEZ1bmN0
aW9uRXhlY3V0YWJsZTo6Y29tcGlsZU9wdAogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBG
dW5jdGlvbkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDYWxsKEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlh
dGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2pp
dENvZGVGb3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRv
bVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3Zv
aWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklm
QXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29k
ZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3lt
Ym9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7Cit9CisKIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNvZGVCbG9ja1dpdGhCeXRlY29kZUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
CiB7CiAgICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKGtpbmQpOwpAQCAtNDkwLDcgKzUzMCw3IEBAIFBhc3NPd25QdHI8RnVuY3Rpb25Db2RlQmxv
Y2s+IEZ1bmN0aW9uRXgKIAogSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZv
ckNhbGxJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWlu
Tm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNh
bXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUg
Q29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBT
YW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUp
KTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC01
MTIsNyArNTUyLDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgog
ICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNhbGwtPnNoYXJlZFN5bWJvbFRhYmxl
KCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHBy
b3ByaWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2Rl
Rm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBq
aXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5nbG9i
YWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2Rl
Rm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9yQ2Fs
bCkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTUzMiw3ICs1NzIsNyBAQCBKU09i
amVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAKIEpTT2JqZWN0KiBGdW5jdGlv
bkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMs
IFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBl
KQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENv
bXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihz
YW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAg
ICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC01NTQsNyArNTk0LDcgQEAgSlNPYmplY3QqIEZ1
bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVC
bG9ja0ZvckNvbnN0cnVjdC0+c2hhcmVkU3ltYm9sVGFibGUoKTsKIAogI2lmIEVOQUJMRShKSVQp
Ci0gICAgaWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMtPmdsb2JhbERh
dGEoKSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9q
aXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUp
KQorICAgIGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMtPmdsb2JhbERhdGEo
KSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRD
b2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENv
ZGVGb3JDb25zdHJ1Y3QpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxMDgxNjIp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRXhlY3V0YWJsZV9oCiAKICNpbmNsdWRl
ICJDYWxsRGF0YS5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNs
dWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJO
b2Rlcy5oIgpAQCAtMzksMTIgKzQwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIERl
YnVnZ2VyOwogICAgIGNsYXNzIEV2YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgRnVuY3Rpb25Db2Rl
QmxvY2s7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dy
YW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKICAgICBzdHJ1Y3QgRXhj
ZXB0aW9uSW5mbzsKICAgICAKLSAgICBlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2Rl
Rm9yQ2FsbCwgQ29kZUZvckNvbnN0cnVjdCB9OwogICAgIGVudW0gQ29tcGlsYXRpb25LaW5kIHsg
Rmlyc3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CiAKICAgICBpbmxpbmUg
Ym9vbCBpc0NhbGwoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMzI1LDYgKzMyNiw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6
IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0
YWJsZSBCYXNlOwogCkBAIC0zNDQsNiArMzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpT
R2xvYmFsRGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJik7CiAj
ZW5kaWYKIAogICAgICAgICBFdmFsQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC0z
OTAsNiArMzkzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIFByb2dy
YW1FeGVjdXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRl
ZiBTY3JpcHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTQxNyw2ICs0MjEsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9w
dGltaXplZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShKU0ds
b2JhbERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIFByb2dyYW1Db2RlQmxvY2smIGdlbmVyYXRl
ZEJ5dGVjb2RlKCkKQEAgLTQ1OSw2ICs0NjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNs
YXNzIEZ1bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBC
YXNlOwogCkBAIC01MTQsNiArNTIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lm
IEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ2FsbChK
U0dsb2JhbERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERh
dGEmKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDYWxsKCkgY29uc3QK
QEAgLTU0MSw2ICs1NDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxF
KEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoSlNH
bG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2Jh
bERhdGEmKTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3Qo
KSBjb25zdApAQCAtNTg4LDYgKzU5NiwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
ICAgICBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZv
cihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
KyAgICAgICAgeworICAgICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAg
ICAgICAgICAgICBqaXRDb21waWxlRm9yQ2FsbChnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2Rl
Rm9yQ29uc3RydWN0KTsKKyAgICAgICAgICAgIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoZ2xvYmFs
RGF0YSk7CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICAKICAgICAgICAgYm9vbCBpc0dlbmVy
YXRlZEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgRXhlY3V0aW9uSGFybmVzc19oCisjZGVmaW5lIEV4ZWN1
dGlvbkhhcm5lc3NfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUo
SklUKQorCisjaW5jbHVkZSAiSklURHJpdmVyLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50
cy5oIgorCituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlw
ZT4KK2lubGluZSBib29sIHByZXBhcmVGb3JFeGVjdXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwg
SklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAo
SklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2Zm
IGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRFbnRyeXBv
aW50KGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CisgICAgICAgIGNvZGVC
bG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0
dXJuIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIGNvZGVCbG9jaywgaml0Q29k
ZSwgaml0VHlwZSk7Cit9CisKK2lubGluZSBib29sIHByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlv
bihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNv
ZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2Rl
V2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6
OkpJVFR5cGUgaml0VHlwZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworI2lmIEVO
QUJMRShMTElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsK
KyAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAg
ICAgIExMSW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwga2luZCwgaml0Q29k
ZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2Rl
KGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGtpbmQpOworI2VuZGlmIC8vIEVOQUJMRShM
TElOVCkKKyAgICByZXR1cm4gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxE
YXRhLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjaywgc3ltYm9sVGFi
bGUsIGppdFR5cGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJM
RShKSVQpCisKKyNlbmRpZiAvLyBFeGVjdXRpb25IYXJuZXNzX2gKKwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBY3RpdmF0aW9uLmgJKHJldmlzaW9uIDEwODE2MikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQWN0aXZhdGlvbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgT3du
QXJyYXlQdHI8V3JpdGVCYXJyaWVyPFVua25vd24+ID4gcmVnaXN0ZXJBcnJheSA9IGFkb3B0QXJy
YXlQdHIobmV3IFdyaXRlQmFycmllcjxVbmtub3duPltyZWdpc3RlckFycmF5U2l6ZV0pOwogICAg
ICAgICBXcml0ZUJhcnJpZXI8VW5rbm93bj4qIHJlZ2lzdGVycyA9IHJlZ2lzdGVyQXJyYXkuZ2V0
KCkgKyByZWdpc3Rlck9mZnNldDsKLQorICAgICAgICAKICAgICAgICAgLy8gQ29weSBhbGwgYXJn
dW1lbnRzIHRoYXQgY2FuIGJlIGNhcHR1cmVkIGJ5IG5hbWUgb3IgYnkgdGhlIGFyZ3VtZW50cyBv
YmplY3QuCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9udW1DYXB0dXJlZEFyZ3M7ICsr
aSkgewogICAgICAgICAgICAgaW50IGluZGV4ID0gQ2FsbEZyYW1lOjphcmd1bWVudE9mZnNldChp
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmgJKHJldmlzaW9u
IDEwODE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFz
cyBKU0FycmF5OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHN0cnVj
dCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmllcjxVbmtub3duPiB7CiAgICAg
ICAgIHR5cGVkZWYgV3JpdGVCYXJyaWVyPFVua25vd24+IEJhc2U7CkBAIC0xMjIsNiArMTIzLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIEpTQXJyYXkgOiBwdWJsaWMg
SlNOb25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAKICAgICBwcm90ZWN0ZWQ6Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuaAkocmV2aXNpb24gMTA4MTYy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM2LDkgKzM2LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTR2xv
YmFsT2JqZWN0OwotICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3Bl
cnR5TmFtZUFycmF5OworICAgIGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGVudW0gRW51bWVyYXRp
b25Nb2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVydGllcywKQEAgLTE2Myw2ICsx
NjQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIGJvb2wgZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIFBy
b3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGNvbnN0IENsYXNzSW5m
byogbV9jbGFzc0luZm87CiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fc3RydWN0
dXJlOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5j
dGlvbi5oCShyZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAgICAgY2xhc3MgSlNBY3RpdmF0
aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFNvdXJjZUNv
ZGU7CiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0xNDAsNiArMTQxLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xvdFZpc2l0
b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSBib29sIGlzSG9z
dEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAgc3RhdGljIEpTVmFsdWUgYXJn
dW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXImKTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAko
cmV2aXNpb24gMTA4MTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkRl
YnVnZ2VyQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkZ1bmN0aW9uQ29uc3RydWN0b3IuaCIKICNp
bmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgi
CiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKICNp
bmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgpAQCAtMTQxLDYgKzE0Miw4IEBAIEpTR2xvYmFs
RGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICAsIGtleXdvcmRzKGFkb3B0UHRy
KG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRlcnByZXRlcigwKQogICAgICwgaGVhcCh0
aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFzc0luZm8oJkpTQXJyYXk6OnNfaW5mbykK
KyAgICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpTRmluYWxPYmplY3Q6OnNfaW5mbykKICNp
ZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxhc3RTY3JhdGNoQnVmZmVyKDApCiAjZW5k
aWYKQEAgLTIxNiw3ICsyMTksOSBAQCBKU0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxE
YXRhVHlwCiAgICAgaml0U3R1YnMgPSBhZG9wdFB0cihuZXcgSklUVGh1bmtzKHRoaXMpKTsKICNl
bmRpZgogCi0gICAgaW50ZXJwcmV0ZXItPmluaXRpYWxpemUodGhpcy0+Y2FuVXNlSklUKCkpOwor
ICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKCZsbGludERhdGEsIHRoaXMtPmNhblVzZUpJVCgp
KTsKKyAgICAKKyAgICBpbml0aWFsaXplSG9zdENhbGxSZXR1cm5WYWx1ZSgpOyAvLyBUaGlzIGlz
IG5lZWRlZCB0byBjb252aW5jZSB0aGUgbGlua2VyIG5vdCB0byBkcm9wIGhvc3QgY2FsbCByZXR1
cm4gc3VwcG9ydC4KIAogICAgIGhlYXAubm90aWZ5SXNTYWZlVG9Db2xsZWN0KCk7CiB9CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuaAkocmV2aXNp
b24gMTA4MTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDE1ICszMCwxNiBAQAogI2RlZmluZSBKU0dsb2JhbERh
dGFfaAogCiAjaW5jbHVkZSAiQ2FjaGVkVHJhbnNjZW5kZW50YWxGdW5jdGlvbi5oIgotI2luY2x1
ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkRhdGVJbnN0YW5jZUNhY2hlLmgiCiAjaW5jbHVk
ZSAiRXhlY3V0YWJsZUFsbG9jYXRvci5oIgogI2luY2x1ZGUgIkhlYXAuaCIKLSNpbmNsdWRlICJT
dHJvbmcuaCIKKyNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgog
I2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludERhdGEuaCIKICNpbmNsdWRlICJO
dW1lcmljU3RyaW5ncy5oIgogI2luY2x1ZGUgIlNtYWxsU3RyaW5ncy5oIgorI2luY2x1ZGUgIlN0
cm9uZy5oIgogI2luY2x1ZGUgIlRlcm1pbmF0b3IuaCIKICNpbmNsdWRlICJUaW1lb3V0Q2hlY2tl
ci5oIgogI2luY2x1ZGUgIldlYWtSYW5kb20uaCIKQEAgLTY1LDYgKzY2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiAgICAgY2xhc3MgSlNPYmplY3Q7CiAg
ICAgY2xhc3MgS2V5d29yZHM7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAg
IGNsYXNzIE5hdGl2ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUGFyc2VyQXJlbmE7CiAgICAgY2xh
c3MgUmVnRXhwQ2FjaGU7CkBAIC0yNDEsNiArMjQzLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBIZWFwIGhlYXA7CiAKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb247CisKKyAgICAgICAg
Y29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0FycmF5Q2xhc3NJbmZvOworICAgICAgICBjb25zdCBD
bGFzc0luZm8qIGNvbnN0IGpzRmluYWxPYmplY3RDbGFzc0luZm87CisKKyAgICAgICAgTExJbnQ6
OkRhdGEgbGxpbnREYXRhOworCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgUmV0dXJuQWRkcmVz
c1B0ciBleGNlcHRpb25Mb2NhdGlvbjsKICAgICAgICAgSlNWYWx1ZSBob3N0Q2FsbFJldHVyblZh
bHVlOwpAQCAtMzQ2LDYgKzM1NCw4IEBAIG5hbWVzcGFjZSBKU0MgewogI3VuZGVmIHJlZ2lzdGVy
VHlwZWRBcnJheUZ1bmN0aW9uCiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNHbG9iYWxEYXRhKEds
b2JhbERhdGFUeXBlLCBUaHJlYWRTdGFja1R5cGUsIEhlYXBTaXplKTsKICAgICAgICAgc3RhdGlj
IEpTR2xvYmFsRGF0YSomIHNoYXJlZEluc3RhbmNlSW50ZXJuYWwoKTsKICAgICAgICAgdm9pZCBj
cmVhdGVOYXRpdmVUaHVuaygpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCShyZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2
ICs0NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEZ1bmN0aW9uUHJvdG90eXBlOwog
ICAgIGNsYXNzIEdldHRlclNldHRlcjsKICAgICBjbGFzcyBHbG9iYWxDb2RlQmxvY2s7CisgICAg
Y2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2ZUVycm9yQ29uc3Ry
dWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKICAgICBjbGFzcyBSZWdFeHBDb25z
dHJ1Y3RvcjsKQEAgLTMzNiw2ICszMzcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNf
RVhQT1JUX1BSSVZBVEUgdm9pZCBhZGRTdGF0aWNHbG9iYWxzKEdsb2JhbFByb3BlcnR5SW5mbyos
IGludCBjb3VudCk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gRklYTUU6IEZvbGQgcmVzZXQg
aW50byBpbml0LgogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGluaXQoSlNPYmplY3Qq
IHRoaXNWYWx1ZSk7CiAgICAgICAgIHZvaWQgcmVzZXQoSlNWYWx1ZSBwcm90b3R5cGUpOwpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxMDgx
NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEdldHRl
clNldHRlcjsKICAgICBjbGFzcyBIYXNoRW50cnk7CiAgICAgY2xhc3MgSW50ZXJuYWxGdW5jdGlv
bjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTWFya2VkQmxv
Y2s7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9yOwogICAgIGNsYXNzIFByb3BlcnR5TmFt
ZUFycmF5OwpAQCAtMjYyLDYgKzI2Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU09i
amVjdChKU0dsb2JhbERhdGEmLCBTdHJ1Y3R1cmUqLCBQcm9wZXJ0eVN0b3JhZ2UgaW5saW5lU3Rv
cmFnZSk7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRz
RXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgLy8gTm9ib2R5IHNob3VsZCBldmVyIGFzayBh
bnkgb2YgdGhlc2UgcXVlc3Rpb25zIG9uIHNvbWV0aGluZyBhbHJlYWR5IGtub3duIHRvIGJlIGEg
SlNPYmplY3QuCiAgICAgICAgIHVzaW5nIEpTQ2VsbDo6aXNBUElWYWx1ZVdyYXBwZXI7CiAgICAg
ICAgIHVzaW5nIEpTQ2VsbDo6aXNHZXR0ZXJTZXR0ZXI7CkBAIC0zNjcsNiArMzcwLDggQEAgQ09N
UElMRV9BU1NFUlQoKEpTRmluYWxPYmplY3RfaW5saW5lU3RvcgogICAgICAgICB9CiAKICAgICBw
cml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAg
ICAgICAKICAgICAgICAgZXhwbGljaXQgSlNGaW5hbE9iamVjdChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEsIFN0cnVjdHVyZSogc3RydWN0dXJlKQogICAgICAgICAgICAgOiBKU09iamVjdChnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUsIG1faW5saW5lU3RvcmFnZSkKICAgICAgICAgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaAkocmV2aXNpb24gMTA4MTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSWRlbnRpZmllcjsKICAgICBjbGFzcyBK
U09iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBjbGFzcyBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yIDogcHVibGljIEpTQ2VsbCB7CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBKSVQ7CkBAIC05Niw2ICs5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAK
ICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworICAgICAgICAKICAgICAgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcihFeGVjU3RhdGUqLCBQ
cm9wZXJ0eU5hbWVBcnJheURhdGEqIHByb3BlcnR5TmFtZUFycmF5RGF0YSwgc2l6ZV90IG51bUNh
Y2hlYWJsZVNsb3QpOwogCiAgICAgICAgIFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+IG1fY2FjaGVk
U3RydWN0dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTdHJpbmcu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
CShyZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0
cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEpTU3RyaW5nOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
IAogICAgIEpTU3RyaW5nKiBqc0VtcHR5U3RyaW5nKEpTR2xvYmFsRGF0YSopOwogICAgIEpTU3Ry
aW5nKiBqc0VtcHR5U3RyaW5nKEV4ZWNTdGF0ZSopOwpAQCAtMjQwLDYgKzI0MSw4IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKEpTQ2VsbCosIFNs
b3RWaXNpdG9yJik7CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9p
ZCByZXNvbHZlUm9wZShFeGVjU3RhdGUqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9w
ZVNsb3dDYXNlOChMQ2hhciopIGNvbnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3BlU2xvd0Nh
c2UoVUNoYXIqKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZUluZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGVJbmZvLmgJKHJldmlzaW9uIDEwODE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVHlwZUluZm8uaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsOCBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwogICAg
IHN0YXRpYyBjb25zdCB1bnNpZ25lZCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID0gMTsgLy8gV2Vi
Q29yZSB1c2VzIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgdG8gbWFrZSBkb2N1bWVudC5hbGwgdW5k
ZXRlY3RhYmxlLgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBJbXBsZW1lbnRzSGFzSW5zdGFu
Y2UgPSAxIDw8IDE7CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIE92ZXJyaWRlc0hhc0luc3Rh
bmNlID0gMSA8PCAyOwpAQCAtODcsNiArODksOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
fQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKKyAgICAgICAgCiAgICAgICAgIGJvb2wgaXNTZXRPbkZsYWdzMSh1bnNpZ25lZCBmbGFn
KSBjb25zdCB7IEFTU0VSVChmbGFnIDw9ICgxIDw8IDcpKTsgcmV0dXJuIG1fZmxhZ3MgJiBmbGFn
OyB9CiAgICAgICAgIGJvb2wgaXNTZXRPbkZsYWdzMih1bnNpZ25lZCBmbGFnKSBjb25zdCB7IEFT
U0VSVChmbGFnID49ICgxIDw8IDgpKTsgcmV0dXJuIG1fZmxhZ3MyICYgKGZsYWcgPj4gOCk7IH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJKHJldmlz
aW9uIDEwODE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTgsNyArMTE4LDcgQEAgSlNPYmplY3QqIEpTVmFsdWU6OnN5
bnRoZXNpemVQcm90b3R5cGUoRQogCiBjaGFyKiBKU1ZhbHVlOjpkZXNjcmlwdGlvbigpCiB7Ci0g
ICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaXplID0gNjQ7CisgICAgc3RhdGljIGNvbnN0IHNpemVf
dCBzaXplID0gMTI4OwogICAgIHN0YXRpYyBjaGFyIGRlc2NyaXB0aW9uW3NpemVdOwogCiAgICAg
aWYgKCEqdGhpcykKQEAgLTEyNywxNCArMTI3LDE0IEBAIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0
aW9uKCkKICAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJJbnQzMjogJWQiLCBh
c0ludDMyKCkpOwogICAgIGVsc2UgaWYgKGlzRG91YmxlKCkpIHsKICNpZiBVU0UoSlNWQUxVRTY0
KQotICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWxmLCAlbHgi
LCBhc0RvdWJsZSgpLCByZWludGVycHJldERvdWJsZVRvSW50cHRyKGFzRG91YmxlKCkpKTsKKyAg
ICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVseCwgJWxmIiwgcmVp
bnRlcnByZXREb3VibGVUb0ludHB0cihhc0RvdWJsZSgpKSwgYXNEb3VibGUoKSk7CiAjZWxzZQog
ICAgICAgICB1bmlvbiB7CiAgICAgICAgICAgICBkb3VibGUgYXNEb3VibGU7CiAgICAgICAgICAg
ICB1aW50MzJfdCBhc1R3b0ludDMyc1syXTsKICAgICAgICAgfSB1OwogICAgICAgICB1LmFzRG91
YmxlID0gYXNEb3VibGUoKTsKLSAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJE
b3VibGU6ICVsZiwgJTA4eDolMDh4IiwgYXNEb3VibGUoKSwgdS5hc1R3b0ludDMyc1sxXSwgdS5h
c1R3b0ludDMyc1swXSk7CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91
YmxlOiAlMDh4OiUwOHgsICVsZiIsIHUuYXNUd29JbnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0s
IGFzRG91YmxlKCkpOwogI2VuZGlmCiAgICAgfSBlbHNlIGlmIChpc0NlbGwoKSkKICAgICAgICAg
c25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJDZWxsOiAlcCIsIGFzQ2VsbCgpKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0LmgJ
KHJldmlzaW9uIDEwODE2MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFy
aWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAgKzM4LDEyIEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IFJlZ2lzdGVyOwogCiAgICAgY2xhc3MgSlNWYXJpYWJsZU9iamVjdCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRl
ZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTA4MTYyKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDYgKzUyLDEwIEBA
IHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElubGkKIAogdW5zaWduZWQgbWF4
aW11bUlubGluaW5nRGVwdGg7CiAKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklU
QWZ0ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0
aW1lU29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogaW50
MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwOwogaW50MzJf
dCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247CkBAIC0x
MzcsNiArMTQxLDEwIEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIAogICAgIFNFVCht
YXhpbXVtSW5saW5pbmdEZXB0aCwgNSk7CiAKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9ySklUQWZ0ZXJXYXJtVXAsICAgICAtMTAwKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yRG9udEpJVEFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNfbGltaXRzPGludDMyX3Q+Ojpt
aW4oKSk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb24sICAgICAgICAg
ICAgLTEwMCk7CisKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRl
cldhcm1VcCwgICAgIC0xMDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0
aW1pemVBZnRlckxvbmdXYXJtVXAsIC01MDAwKTsKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJf
dD46Om1pbigpKTsKQEAgLTE4NSw2ICsxOTMsOCBAQCB2b2lkIGluaXRpYWxpemVPcHRpb25zKCkK
ICAgICBpZiAoY3B1c1RvVXNlIDwgMSkKICAgICAgICAgY3B1c1RvVXNlID0gMTsKICAgICAKKyAg
ICBjcHVzVG9Vc2UgPSAxOworICAgIAogICAgIFNFVChudW1iZXJPZkdDTWFya2VycywgY3B1c1Rv
VXNlKTsKIAogICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVB
bnl0aW1lU29vbiA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dh
cm1VcCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZp
c2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEwIEBAIGV4dGVybiB1bnNpZ25lZCBtYXhpbXVt
RnVuY3Rpb25Gb3JDb25zdHIKIAogZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1JbmxpbmluZ0RlcHRo
OyAvLyBEZXB0aCBvZiBpbmxpbmUgc3RhY2ssIHNvIDEgPSBubyBpbmxpbmluZywgMiA9IG9uZSBs
ZXZlbCwgZXRjLgogCitleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRB
ZnRlcldhcm1VcDsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRK
SVRBbnl0aW1lU29vbjsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJ
VFNvb247CisKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXpl
QWZ0ZXJXYXJtVXA7CiBleHRlcm4gaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRp
bWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gMTA4MTYyKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICsz
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFz
cyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU2NvcGVDaGFpbkl0ZXJhdG9yOwogICAgIGNsYXNz
IFNsb3RWaXNpdG9yOwogICAgIApAQCAtOTEsNiArOTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJbmZvIHNfaW5mbzsKIAogICAg
IHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7Cisg
ICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBP
dmVycmlkZXNWaXNpdENoaWxkcmVuOwogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24gMTA4MTYyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzIyLDcgKzMyMiw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9wZXJ0eVRyYW5zaXQK
ICAgICAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dQcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpOwog
ICAgICAgICByZXR1cm4gdHJhbnNpdGlvbjsKICAgICB9Ci0KKyAgICAKICAgICBTdHJ1Y3R1cmUq
IHRyYW5zaXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwgc3RydWN0dXJlKTsKIAogICAgIHRyYW5z
aXRpb24tPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uc2V0TWF5QmVOdWxsKGdsb2JhbERhdGEsIHRy
YW5zaXRpb24sIHN0cnVjdHVyZS0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5nZXQoKSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkocmV2aXNpb24gMTA4
MTYyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CiAg
ICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhOwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWlu
OwpAQCAtMTk2LDYgKzE5Nyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNf
RVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYsIGNvbnN0IENsYXNzSW5mbyop
OwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIFN0cnVjdHVyZShK
U0dsb2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2aXNpb24gMTA4MTYyKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkod29ya2luZyBj
b3B5KQpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAKICAgICBjbGFzcyBT
dHJ1Y3R1cmVDaGFpbiA6IHB1YmxpYyBKU0NlbGwgewpAQCAtNzQsNiArNzUsOCBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIFN0cnVjdHVyZUNoYWlu
KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBzdGF0aWMgdm9pZCBkZXN0cm95
KEpTQ2VsbCopOwogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiA+
IG1fdmVjdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9JbmxpbmVBU00uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0lubGluZUFTTS5oCShyZXZp
c2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL0lubGluZUFTTS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03MCw0ICs3MCwxMSBAQAogI2RlZmluZSBISURFX1NZTUJPTChuYW1l
KQogI2VuZGlmCiAKKy8vIEZJWE1FOiBmaWd1cmUgb3V0IGhvdyB0aGlzIHdvcmtzIG9uIGFsbCB0
aGUgcGxhdGZvcm1zLiBJIGtub3cgdGhhdAorLy8gb24gTGludXgsIHRoZSBwcmVmZXJyZWQgZm9y
bSBpcyAiLkxzdHVmZiIgYXMgb3Bwb3NlZCB0byAiTHN0dWZmIi4KKy8vIERvbid0IGtub3cgYWJv
dXQgYW55IG9mIHRoZSBvdGhlcnMuCisjaWYgUExBVEZPUk0oTUFDKQorI2RlZmluZSBMT0NBTF9M
QUJFTF9TVFJJTkcobmFtZSkgIkwiICNuYW1lCisjZW5kaWYKKwogI2VuZGlmIC8vIElubGluZUFT
TV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAxMDgx
NjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTkyMiw2ICs5MjIsMTIgQEAKICNkZWZpbmUgRU5BQkxFX0pJVCAxCiAjZW5kaWYKIAor
LyogT24gc29tZSBvZiB0aGUgcGxhdGZvcm1zIHdoZXJlIHdlIGhhdmUgYSBKSVQsIHdlIHdhbnQg
dG8gYWxzbyBoYXZlIHRoZSAKKyAgIGxvdy1sZXZlbCBpbnRlcnByZXRlci4gKi8KKyNpZiAhZGVm
aW5lZChFTkFCTEVfTExJTlQpICYmIEVOQUJMRShKSVQpICYmIE9TKERBUldJTikgJiYgKENQVShY
ODYpIHx8IENQVShBUk1fVEhVTUIyKSkgJiYgVVNFKEpTVkFMVUUzMl82NCkKKyNkZWZpbmUgRU5B
QkxFX0xMSU5UIDEKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5BQkxFX0RGR19KSVQpICYmIEVO
QUJMRShKSVQpCiAvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gWDg2IGFuZCBYODZfNjQuICBPbmx5
IHRlc3RlZCBvbiBNYWMgYW5kIEdOVS9MaW51eC4gKi8KICNpZiAoQ1BVKFg4NikgfHwgQ1BVKFg4
Nl82NCkpICYmIChQTEFURk9STShNQUMpIHx8IE9TKExJTlVYKSkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAkocmV2aXNpb24gMTA4MTYy
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtODYsNiArODYsOCBAQCBwdWJsaWM6CiAKICAgICBpdGVyYXRvciBiZWdp
bigpOwogICAgIGl0ZXJhdG9yIGVuZCgpOworICAgIAorICAgIGJvb2wgaXNFbXB0eSgpIHsgcmV0
dXJuIGJlZ2luKCkgPT0gZW5kKCk7IH0KIAogcHJpdmF0ZToKICAgICBSYXdOb2RlIG1faGVhZFNl
bnRpbmVsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi90ZXh0L1N0cmluZ0ltcGwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1w
bC5oCShyZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL3RleHQv
U3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIHR5cGVkZWYgY29u
c3Qgc3RydWN0IF9fQ0ZTdHJpbmcgKiBDRlN0cmkKIC8vIExhbmRpbmcgdGhlIGZpbGUgbW92ZXMg
aW4gb25lIHBhdGNoLCB3aWxsIGZvbGxvdyBvbiB3aXRoIHBhdGNoZXMgdG8gY2hhbmdlIHRoZSBu
YW1lc3BhY2VzLgogbmFtZXNwYWNlIEpTQyB7CiBzdHJ1Y3QgSWRlbnRpZmllckNTdHJpbmdUcmFu
c2xhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogdGVtcGxhdGUgPHR5cGVuYW1l
IFQ+IHN0cnVjdCBJZGVudGlmaWVyQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiBzdHJ1Y3QgSWRlbnRp
ZmllckxDaGFyRnJvbVVDaGFyVHJhbnNsYXRvcjsKIH0KQEAgLTcyLDcgKzczLDggQEAgY2xhc3Mg
U3RyaW5nSW1wbCB7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6OlN1YnN0cmluZ1RyYW5zbGF0b3I7
CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6OlVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKICAgICBmcmll
bmQgY2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKLQorICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKIHByaXZhdGU6CiAgICAgZW51bSBCdWZmZXJPd25lcnNo
aXAgewogICAgICAgICBCdWZmZXJJbnRlcm5hbCwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEw
ODE2MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDEyLTAyLTE4ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisK
KyAgICAgICAgSlNDIHNob3VsZCBiZSBhIHRyaXBsZS10aWVyIFZNCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgxMgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMTAwNzk2OTQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2gu
CisgICAgICAgIAorICAgICAgICBObyBuZXcgdGVzdHMsIGJlY2F1c2UgdGhlcmUgaXMgbm8gY2hh
bmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMTItMDIt
MTggIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIEZp
eCB0aGUgVGV4dHVyZU1hcHBlciBidWlsZCBmb3Igbm9uLVF0IHBvcnRzLiBRdCBkZWJ1ZyBidWls
ZHMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDgxNjIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsNyBAQCBT
RVQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElS
fS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyIgogICAg
ICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
bGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRp
bWUiCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMTA4MTYyKQorKysgU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0yNiAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0cmlw
bGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgorCisgICAgICAgIENoYW5nZWQgRUZMJ3MgYnVp
bGQgc3lzdGVtIHRvIGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3JpcHRDb3JlLgor
ICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxMi0wMi0xNiAgTGVvIFlh
bmcgIDxsZW8ueWFuZ0B0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0JsYWNrQmVycnld
IEFkYXB0IHRvIHRoZSByZW1vdmFsIG9mIFdlYlN0cmluZ0ltbC5oCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQJKHJldmlzaW9uIDEwODE2MikKKysrIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgU0VUKFdlYktpdF9JTkNMVURFX0RJUkVD
VE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
aml0IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQ
VENPUkVfRElSfS9wYXJzZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlciIK
ICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUiCkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDgxNjIpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0y
NyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQg
YmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgorCisgICAgICAgIENoYW5nZWQg
RUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3Jp
cHRDb3JlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0Ogor
CiAyMDEyLTAyLTE4ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29tPgog
CiAgICAgICAgIFt3eF0gVW5yZXZpZXdlZCBidWlsZCBmaXguIERvbid0IGVycm9yIG91dCBvciBo
YW5nIGlmIHdlIGhhdmUKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0cy50
eHQJKHJldmlzaW9uIDEwODE2MikKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxp
c3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTAgKzcwLDEyIEBAIFNFVChEdW1wUmVuZGVy
VHJlZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9CiAgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0FQSQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9hc3Nl
bWJsZXIKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUKICAgICAke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vZGZnCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2hlYXAKICAgICAke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
aml0CisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50CiAgICAgJHtKQVZBU0NSSVBUQ09S
RV9ESVJ9L3J1bnRpbWUKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hlYWRl
cnMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vd3RmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127707</attachid>
            <date>2012-02-18 12:07:18 -0800</date>
            <delta_ts>2012-02-20 09:15:29 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_103.diff</filename>
            <type>text/plain</type>
            <size>513778</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4MTY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4NSBA
QAorMjAxMi0wMi0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgorICAgICAg
ICAKKyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQn
cyBjYWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVk
IExMSW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAg
ICAgd2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRp
ZXIgdXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhv
dC4KKyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3Jt
IG9mIG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkg
aXMgY29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hp
Y2gKKyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBh
IFR1cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRp
cmVjdCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJh
c2ljYWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4K
KyAgICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhl
IHJlc3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5n
IGluIHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFu
ZAorICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVx
dWlyZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAg
ICAKKyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9s
ZCBpbnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRo
IHRyaXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisg
ICAgICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBp
bXByb3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2Ug
cmVkdWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcmk6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmVDb21tb24udnNwcm9wczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQ6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAg
ICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFk
ZHJlc3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDogQWRkZWQu
CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToK
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAgIChDYWxs
TGlua1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxv
Y2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpi
eXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29u
KToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlND
OjpGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29k
ZUJsb2NrOjpqaXRDb21waWxlSW1wbCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6Ompp
dENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBp
bGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5l
VmVyc2lvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlua0luY29taW5nQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omhhc09wdGlt
aXplZFJlcGxhY2VtZW50KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRQcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRHbG9iYWxSZXNv
bHZlSW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZExMSW50Q2FsbExp
bmtJbmZvKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRHbG9iYWxSZXNvbHZlSW5mbyk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZVNsb3dDYXNl
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb3VsZFRha2VTbG93Q2FzZSk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU3BlY2lhbEZhc3RDYXNlKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZUFueVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjphZGRGcmVxdWVudEV4aXRTaXRlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojpkb250SklUQW55dGltZVNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmppdEFmdGVy
V2FybVVwKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRTb29uKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpsbGludEV4ZWN1dGVDb3VudGVyKToKKyAgICAgICAgKFByb2dyYW1Db2Rl
QmxvY2spOgorICAgICAgICAoRXZhbENvZGVCbG9jayk6CisgICAgICAgIChGdW5jdGlvbkNvZGVC
bG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChK
U0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5oOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpHZXRCeUlk
U3RhdHVzKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6d2FzU2VlbkluSklUKToKKyAg
ICAgICAgKEdldEJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb24p
OgorICAgICAgICAoSW5zdHJ1Y3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExp
bmtJbmZvLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxs
TGlua0luZm86OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKExMSW50Q2FsbExpbmtJbmZv
KToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6
CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChK
U0M6OkxMSW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhv
ZENhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6cGFkT3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9t
TExJbnQpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAo
UHV0QnlJZFN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gp
OgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Nh
cGFiaWxpdGllcy5oOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAg
ICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFw
Ojpjb2xsZWN0KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChIZWFwKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoTWFya2VkQWxsb2NhdG9yKToKKyAgICAgICAgKiBoZWFwL01h
cmtlZFNwYWNlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAg
ICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpDYWxsRnJhbWU6OmJ5dGVjb2RlT2Zmc2V0Rm9yTm9uREZHQ29kZSk6CisgICAgICAg
IChKU0M6OkNhbGxGcmFtZTo6c2V0Qnl0ZWNvZGVPZmZzZXRGb3JOb25ERkdDb2RlKToKKyAgICAg
ICAgKEpTQzo6Q2FsbEZyYW1lOjpjdXJyZW50VlBDKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1l
OjpzZXRDdXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAg
ICAgICAgKEV4ZWNTdGF0ZSk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Ynl0ZWNvZGVPZmZz
ZXRGb3JOb25ERkdDb2RlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJyZW50VlBDKToK
KyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRDdXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp+SW50
ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Omlu
aXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6aXNPcGNvZGUpOgorICAgICAg
ICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6Z2V0
Q2FsbGVySW5mbyk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIpOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAo
SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5o
OgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmlsZSk6CisgICAgICAgICogaml0
L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKiBq
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0M6OmluaXRpYWxpemVIb3N0Q2FsbFJldHVyblZhbHVlKToKKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChK
U0M6OkpJVENvZGU6OmlzT3B0aW1pemluZ0pJVCk6CisgICAgICAgIChKSVRDb2RlKToKKyAgICAg
ICAgKEpTQzo6SklUQ29kZTo6aXNCYXNlbGluZUNvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2Rl
OjpKSVRDb2RlKToKKyAgICAgICAgKiBqaXQvSklURHJpdmVyLmg6CisgICAgICAgIChKU0M6Ompp
dENvbXBpbGVJZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUZ1bmN0aW9u
SWZBcHByb3ByaWF0ZSk6CisgICAgICAgICogaml0L0pJVEV4Y2VwdGlvbnMuY3BwOgorICAgICAg
ICAoSlNDOjpqaXRUaHJvdyk6CisgICAgICAgICogaml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAg
ICAgICAgKEpTQzo6SklUOjp1cGRhdGVUb3BDYWxsRnJhbWUpOgorICAgICAgICAqIGppdC9KSVRT
dHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgICogbGxpbnQ6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50Q29tbW9uLmg6IEFkZGVkLgorICAgICAgICAq
IGxsaW50L0xMSW50RGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoTExJbnQpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6RGF0YSk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjp+RGF0
YSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKExMSW50KToKKyAgICAgICAgKERhdGEpOgorICAgICAgICAoSlNDOjpMTEludDo6
RGF0YTo6ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6
Om9wY29kZU1hcCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA6IEFkZGVk
LgorICAgICAgICAoTExJbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0RnVuY3Rpb25FbnRy
eXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEV2YWxFbnRyeXBvaW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmdldFByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9M
TEludEVudHJ5cG9pbnRzLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEVudHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50
L0xMSW50RXhjZXB0aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoTExJbnQpOgorICAgICAgICAo
SlNDOjpMTEludDo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OnJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24pOgorICAgICAgICAoSlNDOjpMTElu
dDo6cmV0dXJuVG9UaHJvdyk6CisgICAgICAgIChKU0M6OkxMSW50OjpjYWxsVG9UaHJvdyk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6IEFk
ZGVkLgorICAgICAgICAoTExJbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfdHJhY2Vf
b3BlcmFuZCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV92YWx1ZSk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6OkxM
SW50Ojp0cmFjZUZ1bmN0aW9uUHJvbG9ndWUpOgorICAgICAgICAoSlNDOjpMTEludDo6c2hvdWxk
SklUKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmVudHJ5T1NSKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OnJlc29sdmVHbG9iYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAg
ICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9zdENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6
c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6IEFkZGVk
LgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKExMSW50T2Zmc2V0c0V4dHJhY3Rvcik6CisgICAgICAgIChK
U0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAgICAobWFpbik6CisgICAg
ICAgICogbGxpbnQvTExJbnRUaHVua3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tU
aHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpldmFsRW50cnlUaHVua0dlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkxMSW50Ojpwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcik6
CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgor
ICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDogQWRkZWQu
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2FzbS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGlu
ZWFzbS9hc3QucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6IEFk
ZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYjog
QWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmI6IEFkZGVkLgor
ICAgICAgICAqIG9mZmxpbmVhc20vb2Zmc2V0cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGlu
ZWFzbS9vcHQucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICog
b2ZmbGluZWFzbS9zZWxmX2hhc2gucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2V0
dGluZ3MucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3g4Ni5yYjogQWRkZWQuCisgICAgICAgICogcnVudGlt
ZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93
UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAoQ29tbW9uU2xvd1BhdGhzKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVC
bG9jayk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OnNhbXBsaW5nRGVzY3JpcHRpb24pOgorICAgICAgICAo
SlNDOjpFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6UHJv
Z3JhbUV4ZWN1dGFibGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0
YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
OjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJs
ZTo6aml0Q29tcGlsZUZvckNhbGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6
OmppdENvbXBpbGVGb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1
dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9F
eGVjdXRhYmxlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoRXZhbEV4ZWN1dGFibGUpOgor
ICAgICAgICAoUHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAg
ICAgICAgKiBydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0Mp
OgorICAgICAgICAoSlNDOjpwcmVwYXJlRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJl
cGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlv
bi5oOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnRlYXJPZmYpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQXJyYXkpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDZWxs
KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChKU0Z1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsRGF0
YSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNPYmplY3QpOgorICAgICAgICAoSlNGaW5hbE9i
amVjdCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgICog
cnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTU3RyaW5nKToK
KyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChUeXBlSW5mbyk6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6ZGVzY3JpcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9i
amVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTVmFyaWFibGVPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChPcHRpb25zKToKKyAgICAgICAg
KEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0
aW9ucy5oOgorICAgICAgICAoT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWlu
Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAg
IChKU0MpOgorICAgICAgICAoU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3RydWN0dXJlQ2hhaW4pOgorICAg
ICAgICAqIHd0Zi9JbmxpbmVBU00uaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAg
ICAgKiB3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg6CisgICAgICAgIChTZW50aW5lbExpbmtlZExp
c3QpOgorICAgICAgICAoV1RGOjpTZW50aW5lbExpbmtlZExpc3Q6OmlzRW1wdHkpOgorICAgICAg
ICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChTdHJp
bmdJbXBsKToKKwogMjAxMi0wMi0xNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgog
CiAgICAgICAgIERGRzo6R3JhcGggc2hvdWxkIGhhdmUgcmVmZXJlbmNlcyB0byBKU0dsb2JhbERh
dGEsIHRoZSBDb2RlQmxvY2sgYmVpbmcgY29tcGlsZWQsIGFuZApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA4MTY0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw2ICsxMSw3IEBAIFNF
VChKYXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENP
UkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVy
IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJUFRDT1JF
X0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L3J1bnRpbWUiCkBAIC05Nyw2ICs5OCw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAg
ICAgaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcAogCiAgICAgaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3IuY3BwCisgICAgaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCiAgICAgaml0L0pJVEFy
aXRobWV0aWMzMl82NC5jcHAKICAgICBqaXQvSklUQXJpdGhtZXRpYy5jcHAKICAgICBqaXQvSklU
Q2FsbDMyXzY0LmNwcApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFt
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5hbQkocmV2
aXNpb24gMTA4MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBAIGphdmFzY3JpcHRjb3JlX2NwcGZsYWdzICs9
IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIgXAogCS1J
JChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQgXAogCS1JJChzcmNkaXIpL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQgXAorCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludCBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlciBcCiAJ
LUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyIFwKIAktSSQoc3JjZGly
KS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTA4MTY0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTgxLDYg
KzgxLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9SZXBhdGNoQnVmZmVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvU0g0QXNzZW1ibGVyLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvWDg2QXNzZW1ibGVyLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRl
Y29kZUNvbnZlbnRpb25zLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua0luZm8uY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtJ
bmZvLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5j
cHAgXApAQCAtMTAyLDYgKzEwMyw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbnN0cnVjdGlvbi5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb2RlL0p1bXBUYWJsZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTExJbnRDYWxsTGlua0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L0xpbmVJbmZvLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxs
TGlua0luZm8uY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2Fs
bExpbmtJbmZvLmggXApAQCAtMjg1LDYgKzI4Nyw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMg
Kz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ29tcGFjdEpJVENvZGVNYXAuaCBcCiAJ
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmggXAorCVNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgXAorCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVEFyaXRobWV0aWMzMl82NC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklUQXJpdGhtZXRpYy5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklU
Q2FsbDMyXzY0LmNwcCBcCkBAIC0zMDgsNiArMzEyLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9TcGVjaWFsaXplZFRodW5rSklULmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuaCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvb3Mt
d2luMzIvc3RkYm9vbC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvb3Mtd2luMzIvc3RkaW50
LmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRlci5oIFwKQEAgLTM1
OCw2ICszNjMsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9DYWxsRGF0YS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0NhbGxEYXRhLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNz
SW5mby5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRp
b25LaW5kLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZp
ZXJzLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgg
XApAQCAtMzg2LDYgKzM5Miw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0aW9uSGFybmVzcy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Db25zdHJ1Y3Rvci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvblByb3RvdHlwZS5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnByaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUucHJpCShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0yMCw2ICsyMCw3IEBAIElOQ0xV
REVQQVRIICs9IFwKICAgICAkJFNPVVJDRV9ESVIvZGVidWdnZXIgXAogICAgICQkU09VUkNFX0RJ
Ui9pbnRlcnByZXRlciBcCiAgICAgJCRTT1VSQ0VfRElSL2ppdCBcCisgICAgJCRTT1VSQ0VfRElS
L2xsaW50IFwKICAgICAkJFNPVVJDRV9ESVIvcGFyc2VyIFwKICAgICAkJFNPVVJDRV9ESVIvcHJv
ZmlsZXIgXAogICAgICQkU09VUkNFX0RJUi9ydW50aW1lIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9UYXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9U
YXJnZXQucHJpCShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFy
Z2V0LnByaQkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYgKzEwOCw3IEBAIFNPVVJDRVMgKz0gXAog
ICAgIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5jcHAgXAogICAgIGppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yRml4ZWRWTVBvb2wuY3BwIFwKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAg
XAorICAgIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCiAgICAgaml0L0pJVEFyaXRobWV0
aWMuY3BwIFwKICAgICBqaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAgICAgaml0L0pJVENh
bGwuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMTc2Miw2ICsxNzYyLDEwIEBACiAJCQkJPgog
CQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGppdFxIb3N0Q2Fs
bFJldHVyblZhbHVlLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0
aXZlUGF0aD0iLi5cLi5caml0XEpJVC5jcHAiCiAJCQkJPgogCQkJPC9GaWxlPgpAQCAtMTg0Nyw2
ICsxODUxLDE0IEBACiAJCQk8L0ZpbGU+CiAJCTwvRmlsdGVyPgogCQk8RmlsdGVyCisJCQlOYW1l
PSJsbGludCIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxsbGludFxM
TEludERhdGEuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCiAJ
CQlOYW1lPSJpbnRlcnByZXRlciIKIAkJCT4KIAkJCTxGaWxlCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlQ29tbW9uLnZzcHJvcHMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZUNvbW1vbi52
c3Byb3BzCShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlQ29tbW9uLnZzcHJv
cHMJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBACiAJPgogCTxUb29sCiAJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQo
Q29uZmlndXJhdGlvbkJ1aWxkRGlyKVxvYmpcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNvdXJjZXNc
JnF1b3Q7Oy4uLy4uLzsuLi8uLi9BUEkvOy4uLy4uL3BhcnNlci87Li4vLi4vYnl0ZWNvbXBpbGVy
LzsuLi8uLi9kZmcvOy4uLy4uL2ppdC87Li4vLi4vcnVudGltZS87Li4vLi4vdG9vbHMvOy4uLy4u
L2J5dGVjb2RlLzsuLi8uLi9pbnRlcnByZXRlci87Li4vLi4vd3RmLzsuLi8uLi9wcm9maWxlcjsu
Li8uLi9hc3NlbWJsZXIvOy4uLy4uL2RlYnVnZ2VyLzsuLi8uLi9oZWFwLzsmcXVvdDskKFdlYktp
dExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0Rpcilc
aW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3Jp
cHRDb3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZh
dGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVv
dDsiCisJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxvYmpcSmF2YVNjcmlwdENvcmVcRGVyaXZlZFNvdXJjZXNcJnF1b3Q7Oy4uLy4u
LzsuLi8uLi9BUEkvOy4uLy4uL3BhcnNlci87Li4vLi4vYnl0ZWNvbXBpbGVyLzsuLi8uLi9kZmcv
Oy4uLy4uL2ppdC87Li4vLi4vbGxpbnQvOy4uLy4uL3J1bnRpbWUvOy4uLy4uL3Rvb2xzLzsuLi8u
Li9ieXRlY29kZS87Li4vLi4vaW50ZXJwcmV0ZXIvOy4uLy4uL3d0Zi87Li4vLi4vcHJvZmlsZXI7
Li4vLi4vYXNzZW1ibGVyLzsuLi8uLi9kZWJ1Z2dlci87Li4vLi4vaGVhcC87JnF1b3Q7JChXZWJL
aXRMaWJyYXJpZXNEaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIp
XGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5j
bHVkZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxKYXZhU2Ny
aXB0Q29yZSZxdW90OzsmcXVvdDskKENvbmZpZ3VyYXRpb25CdWlsZERpcilcaW5jbHVkZVxwcml2
YXRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlXHB0aHJlYWRzJnF1
b3Q7IgogCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX19TVERfQyIKIAkJRm9yY2VkSW5jbHVk
ZUZpbGVzPSJJQ1VWZXJzaW9uLmgiCiAJLz4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZh
U2NyaXB0Q29yZS9jb3B5LWZpbGVzLmNtZAkocmV2aXNpb24gMTA4MTY0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZp
bGVzLmNtZAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQCBmb3IgJSVkIGluICgKICAg
ICBkZWJ1Z2dlcgogICAgIGludGVycHJldGVyCiAgICAgaml0CisgICAgbGxpbnQKICAgICBwYXJz
ZXIKICAgICBwcm9maWxlcgogICAgIHJ1bnRpbWUKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNyw2
ICs3LDE1IEBACiAJb2JqZWN0cyA9IHsKIAogLyogQmVnaW4gUEJYQWdncmVnYXRlVGFyZ2V0IHNl
Y3Rpb24gKi8KKwkJMEY0NjgwQTkxNEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi8g
PSB7CisJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRpb25M
aXN0ID0gMEY0NjgwQUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlz
dCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJMTEludCBPZmZzZXRzIiAqLzsKKwkJCWJ1aWxkUGhh
c2VzID0gKAorCQkJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0ZSBEZXJpdmVk
IFNvdXJjZXMgKi8sCisJCQkpOworCQkJbmFtZSA9ICJMTEludCBPZmZzZXRzIjsKKwkJCXByb2R1
Y3ROYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CisJCX07CiAJCTY1RkIzRjY2MDlEMTFFOTEwMEY0
OURFQiAvKiBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhBZ2dyZWdhdGVUYXJn
ZXQ7CiAJCQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gNjVGQjNGNzcwOUQxMUVCRDAwRjQ5REVC
IC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJEZXJp
dmVkIFNvdXJjZXMiICovOwpAQCAtMTQsNiArMjMsOSBAQAogCQkJCTY1RkIzRjY1MDlEMTFFOTEw
MEY0OURFQiAvKiBHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMgKi8sCiAJCQkJNUQzNURFRTEwQzdD
MTQwQjAwODY0OEIyIC8qIEdlbmVyYXRlIERUcmFjZSBoZWFkZXIgKi8sCiAJCQkpOworCQkJZGVw
ZW5kZW5jaWVzID0gKAorCQkJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXRE
ZXBlbmRlbmN5ICovLAorCQkJKTsKIAkJCW5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJCXBy
b2R1Y3ROYW1lID0gIkRlcml2ZWQgU291cmNlcyI7CiAJCX07CkBAIC00OCw2ICs2MCwxMCBAQAog
CQkwQkFDOTRBMDEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJBQzk0OUUx
MzM4NzI4NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwQkNEODM1NzE0ODU4NDUy
MDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5
Q2hhbmdlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEJGMjhBMjkxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1pdHMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEJGMjhBMjgxMUEzM0RDMzAwNjM4
Rjg0IC8qIFNpemVMaW1pdHMuY3BwICovOyB9OworCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYg
LyogTExJbnRFbnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjBCODM5NTE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50
cy5jcHAgKi87IH07CisJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9p
bnRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBC
ODM5NjE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4
NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3Bw
ICovOyB9OworCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk4MTRCQ0Y0
NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlw
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgz
QTUxNEJDRjUwNDAwODg1QjRGIC8qIENvZGVUeXBlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhh
bmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBQjE0QkNGNUJCMDA4
ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Np
b25SYW5nZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwpAQCAtNTgsOSArNzQsMTMgQEAKIAkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1l
dGhvZENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYwQjgzQjMxNEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4
M0I3MTRCQ0Y4RTEwMDg4NUI0RiAvKiBHbG9iYWxSZXNvbHZlSW5mby5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzQjYxNEJDRjhERjAwODg1QjRG
IC8qIEdsb2JhbFJlc29sdmVJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQjkxNEJDRjk1RjAwODg1QjRGIC8qIENhbGxSZXR1cm5P
ZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwRjBCODNCODE0QkNGOTVCMDA4ODVCNEYgLyogQ2FsbFJldHVybk9mZnNl
dFRvQnl0ZWNvZGVPZmZzZXQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwRjBGQzQ1QTE0QkQxNUY1MDBCODExNTQgLyogTExJbnRDYWxsTGlua0lu
Zm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEZD
NDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMTVGMTVGMTRCN0E3M0UwMDVE
RTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25TbG93UGF0
aHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjE2RDcyNjE0MkMzOUMwMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTZENzI0MTQyQzM5QTIwMENGNzg0QSAv
KiBCaXRWZWN0b3IuY3BwICovOyB9OwogCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklU
RHJpdmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRC
IC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNz
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYy
MUMyN0QxNEJFNzI3QTAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjFDMjc5MTRCRTcyNzMw
MEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYyMUMyN0YxNEJFQUE4MjAwQURDNjRCIC8q
IEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMjFDMjdFMTRCRUFBODAwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRp
b25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
MEYyNDJEQTcxM0YzQjFFODAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjQyREE1MTNGM0Ix
QkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NkYxNDczOEYzMTAwMTIxRTRG
IC8qIERGR0NvZGVCbG9ja3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQzU1NzAx
NDczOEYzNTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERG
R0NvZGVCbG9ja3MuY3BwICovOyB9OwpAQCAtNzEsNiArOTEsMTkgQEAKIAkJMEY0MzE3MzgxNDZC
QUM2OTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3Rh
YmxlSGFuZGxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGNDY4MDgyMTRCQTU3MkQwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA4MDE0QkE1NzI3
MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTBGNDY4MDgzMTRCQTU3MzEwMEJGRTI3MiAvKiBKSVRFeGNl
cHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJ
MEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUUxNEJBN0Y4MjAwQkZF
MjcyIC8qIExMSW50RXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCTBGNDY4MEE0MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludFNsb3dQ
YXRocy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAw
RjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRTbG93UGF0aHMuY3BwICovOyBzZXR0aW5n
cyA9IHtDT01QSUxFUl9GTEFHUyA9ICItV25vLXVudXNlZC1wYXJhbWV0ZXIiOyB9OyB9OworCQkw
RjQ2ODBBNTE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRTbG93UGF0aHMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEEwMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludFNsb3dQYXRocy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CisJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNF
eHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAg
Ki87IH07CisJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwOUQx
NEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi87IH07CisJCTBGNDY4MENB
MTRCQkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50
Q29tbW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzYxNEJC
QjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MENDMTRCQkIxN0EwMEJGRTI3
MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbElu
dGVycHJldGVyLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcyIC8qIExvd0xl
dmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0Njgw
RDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJ
bnREYXRhLmNwcCAqLzsgfTsKKwkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0Njgw
Q0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBI
b3N0Q2FsbFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDY4MEQwMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZh
bHVlLmNwcCAqLzsgfTsKKwkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0
dXJuVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1NUYwRjQxNEQx
MDYzOTAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0
UEMuY3BwICovOyB9OwogCQkwRjU1RjBGNTE0RDEwNjNDMDBBQzc2NDkgLyogQWJzdHJhY3RQQy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1NUYwRjIx
NEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVGMDhDRjE0NkM3NjMzMDAwNDcyQTkgLyogVW5j
b25kaXRpb25hbEZpbmFsaXplci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5h
bGl6ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpA
QCAtNDA5LDcgKzQ0Miw3IEBACiAJCTg2Qjk5QUUzMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdC
dWZmZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2
Qjk5QUUxMTE3RTU3ODEwMERGNUE5MCAvKiBTdHJpbmdCdWZmZXIuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk4NkJCMDlDMDEzOEUzODFCMDA1Njcw
MkYgLyogREZHUmVwYXRjaC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA4NkJCMDlCRTEzOEUzODFCMDA1NjcwMkYgLyogREZHUmVwYXRjaC5jcHAgKi87
IH07CiAJCTg2QkIwOUMxMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkJCMDlCRjEzOEUzODFCMDA1
NjcwMkYgLyogREZHUmVwYXRjaC5oICovOyB9OwotCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkg
LyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICov
OyB9OworCQk4NkMzNkVFQTBFRTEyODlEMDBCM0RGNTkgLyogTWFjcm9Bc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzM2RUU5MEVFMTI4
OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QzU2OEUwMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNy
b0Fzc2VtYmxlckFSTS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NkM1NjhERDExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJBUk0uY3Bw
ICovOyB9OwogCQk4NkM1NjhFMTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBT
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhE
RTExQTIxM0VFMDAwN0Y3RjAgLyogTWFjcm9Bc3NlbWJsZXJNSVBTLmggKi87IH07CiAJCTg2QzU2
OEUyMTFBMjEzRUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4NkM1NjhERjExQTIxM0VFMDAwN0Y3RjAgLyog
TUlQU0Fzc2VtYmxlci5oICovOyB9OwpAQCAtNzc5LDYgKzgxMiwyMCBAQAogLyogRW5kIFBCWEJ1
aWxkRmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0
aW9uICovCisJCTBGNDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJv
eHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQ
b3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJ
CQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODBBOTE0QkE3
RkQ5MDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gIkxMSW50IE9mZnNldHMiOworCQl9OworCQkw
RjQ2ODBCMzE0QkE4MjE0MDBCRkUyNzIgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewor
CQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OworCQkJY29udGFpbmVyUG9ydGFsID0gMDg2
N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOworCQkJcHJveHlUeXBl
ID0gMTsKKwkJCXJlbW90ZUdsb2JhbElEU3RyaW5nID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcy
OworCQkJcmVtb3RlSW5mbyA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJfTsKIAkJMTQx
MjE0QkUwQTQ5MTkwRTAwNDgwMjU1IC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKIAkJ
CWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKIAkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdE
NjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKQEAgLTgyNCw2ICs4NzEs
MTUgQEAKIC8qIEVuZCBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEQxNEJBN0U1RTAw
QkZFMjcyIC8qIENvcHlGaWxlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZHN0UGF0aCA9IC91c3Iv
c2hhcmUvbWFuL21hbjEvOworCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDA7CisJCQlmaWxlcyA9ICgK
KwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJfTsK
IAkJNURCQjE1MTExMzFEMEIxMzAwNTZBRDM2IC8qIENvcHkgU3VwcG9ydCBTY3JpcHQgKi8gPSB7
CiAJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0g
MTI7CkBAIC04NjQsNiArOTIwLDEwIEBACiAJCTBCQUM5NDlFMTMzODcyODQwMENGMTM1QiAvKiBU
aHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEJDRDgzNTQxNDg1ODQxMjAwRUEyMDAzIC8qIFRlbXBvcmFyeUNoYW5nZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZW1wb3JhcnlDaGFuZ2UuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEJGMjhBMjgxMUEzM0RDMzAwNjM4Rjg0IC8qIFNpemVMaW1p
dHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2l6ZUxpbWl0cy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0
RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IExMSW50RW50cnlwb2ludHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4
NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IExMSW50RW50cnlwb2ludHMuaDsgcGF0aCA9IGxsaW50L0xMSW50RW50cnlwb2ludHMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRGIC8q
IExMSW50VGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExM
SW50VGh1bmtzLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50VGh1bmtzLmg7IHBhdGgg
PSBsbGludC9MTEludFRodW5rcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBC
ODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ29kZVR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYw
QjgzQTgxNEJDRjU1RTAwODg1QjRGIC8qIEhhbmRsZXJJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEhhbmRsZXJJbmZvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGMEI4M0FBMTRCQ0Y1QjkwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4cHJlc3Npb25SYW5nZUluZm8uaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg3NCw5ICs5MzQsMTMgQEAKIAkJMEYwQjgzQjMx
NEJDRjg1RTAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBNZXRob2RDYWxsTGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYwQjgzQjYxNEJDRjhERjAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZv
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdsb2JhbFJlc29sdmVJbmZvLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAv
KiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjBGQzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRD
YWxsTGlua0luZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTExJbnRDYWxs
TGlua0luZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYxNUYxNUQxNEI3QTcz
QTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBDb21tb25TbG93UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
MEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCaXRWZWN0b3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjIxQzI2NjE0QkU1RjVFMDBBREM2NEIgLyogSklURHJpdmVyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVERyaXZlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjdBMTRCRTcy
NzMwMEFEQzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEV4ZWN1dGlvbkhhcm5lc3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQnl0ZWNvZGVDb252ZW50aW9ucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjI0MkRBNTEzRjNCMUJCMDA3QURENEMgLyogV2Vh
a1JlZmVyZW5jZUhhcnZlc3Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWFrUmVmZXJlbmNlSGFydmVzdGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBG
MkM1NTZEMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjJDNTU2RTE0NzM4RjJFMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nr
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBERkdDb2RlQmxvY2tzLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC04ODcsNiArOTUxLDIwIEBACiAJCTBGNDMxNzM2
MTQ2QkFDNjUwMDdFMzg5MCAvKiBMaXN0YWJsZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTGlzdGFibGVIYW5kbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNDY4MDdGMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpJVEV4Y2VwdGlvbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjQ2ODA4MDE0QkE1NzI3MDBCRkUyNzIgLyogSklU
RXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRFeGNlcHRp
b25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDhGMTRCQTdFNUUwMEJG
RTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGlu
Y2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3Rvcjsgc291cmNl
VHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJMEY0NjgwOUQxNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50RXhjZXB0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBMTEludEV4Y2VwdGlvbnMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOUUxNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50RXhjZXB0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBM
TEludEV4Y2VwdGlvbnMuaDsgcGF0aCA9IGxsaW50L0xMSW50RXhjZXB0aW9ucy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRT
bG93UGF0aHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRT
bG93UGF0aHMuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRTbG93
UGF0aHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRTbG93UGF0aHMu
aDsgcGF0aCA9IGxsaW50L0xMSW50U2xvd1BhdGhzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRPZmZzZXRzRXh0
cmFjdG9yLmNwcDsgcGF0aCA9IGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTElu
dENvbW1vbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludENvbW1vbi5o
OyBwYXRoID0gbGxpbnQvTExJbnRDb21tb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludE9mZmxpbmVBc21Db25maWcuaDsg
cGF0aCA9IGxsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMb3dMZXZlbEludGVy
cHJldGVyLmNwcDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2
ZWxJbnRlcnByZXRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMb3dMZXZl
bEludGVycHJldGVyLmg7IHBhdGggPSBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTElu
dERhdGEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnREYXRh
LmNwcDsgcGF0aCA9IGxsaW50L0xMSW50RGF0YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTBGNDY4MENGMTRCQkIzRDEwMEJGRTI3MiAvKiBMTEludERhdGEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnREYXRhLmg7IHBhdGggPSBsbGludC9MTEludERh
dGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwRDAxNEJCQzVGODAwQkZF
MjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEhvc3RDYWxsUmV0dXJuVmFsdWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NUYwRjExNEQxMDYzNjAwQUM3NjQ5
IC8qIEFic3RyYWN0UEMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
QWJzdHJhY3RQQy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNTVGMEYyMTRE
MTA2MzYwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEFic3RyYWN0UEMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4
Q0MxNDZCRTYwMjAwMDQ3MkE5IC8qIERGR0J5dGVDb2RlQ2FjaGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gREZHQnl0ZUNvZGVDYWNoZS5oOyBwYXRoID0gZGZnL0RGR0J5dGVD
b2RlQ2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MzQsNiArMTcxMiwx
MyBAQAogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhG
cmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3
MiAvKiBGcmFtZXdvcmtzICovID0geworCQkJaXNhID0gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2U7
CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkpOwor
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIx
MTFFMEE0ODc5M0MwMDQ4MDI1NSAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYRnJh
bWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAt
MTY5Miw2ICsxNzc3LDcgQEAKIAkJCQkxNDEyMTEyMDBBNDg3OTNDMDA0ODAyNTUgLyogbWluaWRv
bSAqLywKIAkJCQkxNEJENTlCRjBBM0U4RjkwMDBCQUY1OUMgLyogdGVzdGFwaSAqLywKIAkJCQk2
NTExMjMwNTE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RjE0
QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAogCQkJKTsKIAkJ
CW5hbWUgPSBQcm9kdWN0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzE3LDYg
KzE4MDMsNyBAQAogCQkJCUY1QzI5MEU2MDI4NEY5OEUwMTg2MzVDQSAvKiBKYXZhU2NyaXB0Q29y
ZVByZWZpeC5oICovLAogCQkJCTQ1RTEyRDg4MDZBNDlCMEYwMEU5REY4NCAvKiBqc2MuY3BwICov
LAogCQkJCUY2OEVCQjhDMDI1NUQ0QzYwMUZGNjBGNyAvKiBjb25maWcuaCAqLywKKwkJCQkwRjQ2
ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8sCiAJCQkJMTQzMkVCRDcwQTM0Q0FENDAw
NzE3QjlGIC8qIEFQSSAqLywKIAkJCQk5Njg4Q0IxMjBFRDEyQjRFMDAxRDY0OUYgLyogYXNzZW1i
bGVyICovLAogCQkJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29kZSAqLywKQEAg
LTE3NTYsNiArMTg0MywyOCBAQAogCQkJdGFiV2lkdGggPSA0OwogCQkJdXNlc1RhYnMgPSAwOwog
CQl9OworCQkwRjQ2ODA5QzE0QkE3RjREMDBCRkUyNzIgLyogbGxpbnQgKi8gPSB7CisJCQlpc2Eg
PSBQQlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCTBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0
RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCAqLywKKwkJCQkwRjBCODM5NjE0QkNGNDVBMDA4ODVC
NEYgLyogTExJbnRFbnRyeXBvaW50cy5oICovLAorCQkJCTBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0
RiAvKiBMTEludFRodW5rcy5jcHAgKi8sCisJCQkJMEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8q
IExMSW50VGh1bmtzLmggKi8sCisJCQkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50
RGF0YS5jcHAgKi8sCisJCQkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5o
ICovLAorCQkJCTBGNDY4MEM1MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oICovLAor
CQkJCTBGNDY4MEM2MTRCQkIxNjkwMEJGRTI3MiAvKiBMTEludE9mZmxpbmVBc21Db25maWcuaCAq
LywKKwkJCQkwRjQ2ODBDNzE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5j
cHAgKi8sCisJCQkJMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0
ZXIuaCAqLywKKwkJCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25z
LmNwcCAqLywKKwkJCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25z
LmggKi8sCisJCQkJMEY0NjgwOUYxNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhzLmNw
cCAqLywKKwkJCQkwRjQ2ODBBMDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRTbG93UGF0aHMuaCAq
LywKKwkJCQkwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9y
LmNwcCAqLywKKwkJCSk7CisJCQluYW1lID0gbGxpbnQ7CisJCQlzb3VyY2VUcmVlID0gIjxncm91
cD4iOworCQl9OwogCQkxNDEyMTEwMDBBNDg3NzI2MDA0ODAyNTUgLyogdGVzdHMgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMTc5MCw2ICsxODk5LDggQEAK
IAkJMTQyOUQ5MkMwRUQyMkQ3MDAwQjg5NjE5IC8qIGppdCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdy
b3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhv
c3RDYWxsUmV0dXJuVmFsdWUuY3BwICovLAorCQkJCTBGNDY4MEQxMTRCQkM1RjgwMEJGRTI3MiAv
KiBIb3N0Q2FsbFJldHVyblZhbHVlLmggKi8sCiAJCQkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcy
IC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovLAogCQkJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAv
KiBKSVRFeGNlcHRpb25zLmggKi8sCiAJCQkJMEZEODJFMzcxNDFBQjE0MjAwMTc5Qzk0IC8qIENv
bXBhY3RKSVRDb2RlTWFwLmggKi8sCkBAIC0yMjYzLDYgKzIzNzQsOCBAQAogCQk3RUY2RTBCQjBF
QjdBMUVDMDA3OUFGQUYgLyogcnVudGltZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJMEYyMUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFs
aXphdGlvbktpbmQuaCAqLywKKwkJCQkwRjIxQzI3QTE0QkU3MjczMDBBREM2NEIgLyogRXhlY3V0
aW9uSGFybmVzcy5oICovLAogCQkJCTBGMTVGMTVEMTRCN0E3M0EwMDVERTM3RCAvKiBDb21tb25T
bG93UGF0aHMuaCAqLywKIAkJCQlCQ0Y2MDUxMTBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5j
cHAgKi8sCiAJCQkJQkNGNjA1MTIwRTIwM0VGODAwQjlBNjREIC8qIEFyZ0xpc3QuaCAqLywKQEAg
LTI2MzcsNiArMjc1MCw4IEBACiAJCTk2OUEwNzhGMEVEMUQzQUUwMEYxRjY4MSAvKiBieXRlY29k
ZSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYyMUMy
N0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCAqLywKKwkJCQkwRjBG
QzQ1ODE0QkQxNUYxMDBCODExNTQgLyogTExJbnRDYWxsTGlua0luZm8uaCAqLywKIAkJCQkwRjlG
QzhCRjE0RTFCNUZCMDBENTJBRTAgLyogUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5jcHAgKi8sCiAJ
CQkJMEY5RkM4QzAxNEUxQjVGQjAwRDUyQUUwIC8qIFBvbHltb3JwaGljUHV0QnlJZExpc3QuaCAq
LywKIAkJCQkwRjlGQzhDMTE0RTFCNUZCMDBENTJBRTAgLyogUHV0S2luZC5oICovLApAQCAtMzIw
MSw3ICszMzE2LDE2IEBACiAJCQkJODY3MDRCOEExMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0
ZXJuLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NjcwNEI0MzEyREI4QTgxMDBBOUZFN0IgLyogWWFy
clN5bnRheENoZWNrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTVGMTVGMTRCN0E3M0UwMDVE
RTM3RCAvKiBDb21tb25TbG93UGF0aHMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEEzMTRC
QTdGOEQwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
NDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludFNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTBGNDY4MENBMTRCQkIxNkMwMEJGRTI3MiAvKiBMTEludENvbW1vbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0IxNEJCQjE3MjAwQkZFMjcyIC8qIExMSW50T2ZmbGlu
ZUFzbUNvbmZpZy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0QxNEJCQjE3RDAwQkZFMjcy
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEQzMTRC
QkQxNjcwMEJGRTI3MiAvKiBMTEludERhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGNDY4MEQ1
MTRCQkQyNEIwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmggaW4gSGVhZGVycyAqLywK
KwkJCQkwRjBCODM5QjE0QkNGNDYwMDA4ODVCNEYgLyogTExJbnRFbnRyeXBvaW50cy5oIGluIEhl
YWRlcnMgKi8sCisJCQkJMEYwQjgzOUQxNEJDRjQ2NjAwODg1QjRGIC8qIExMSW50VGh1bmtzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBNzE0QkNGNTA3MDA4ODVCNEYgLyogQ29kZVR5cGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E5MTRCQ0Y1NjIwMDg4NUI0RiAvKiBIYW5kbGVy
SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQUIxNEJDRjVCQjAwODg1QjRGIC8qIEV4
cHJlc3Npb25SYW5nZUluZm8uaCBpbiBIZWFkZXJzICovLApAQCAtMzIxMCw3ICszMzM0LDExIEBA
CiAJCQkJMEYwQjgzQjUxNEJDRjg2MjAwODg1QjRGIC8qIE1ldGhvZENhbGxMaW5rSW5mby5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29s
dmVJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyog
Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBG
MEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYyMUMyNjgxNEJFNUY2ODAwQURDNjRCIC8qIEpJVERyaXZlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYyMUMyN0MxNEJFNzI3NjAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3Mu
aCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdEMTRCRTcyN0EwMEFEQzY0QiAvKiBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3RjE0QkVBQTgyMDBB
REM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEY3QjI5
NEExNEMzQ0QyOTAwN0MzREIxIC8qIERGR0NDYWxsSGVscGVycy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY3QjI5NEIxNEMzQ0QyRjAwN0MzREIxIC8qIERGR0NhcGFiaWxpdGllcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMEY3QjI5NEMxNEMzQ0Q0MzAwN0MzREIxIC8qIERGR0J5dGVDb2RlQ2FjaGUu
aCBpbiBIZWFkZXJzICovLApAQCAtMzIzNiw2ICszMzY0LDI0IEBACiAvKiBFbmQgUEJYSGVhZGVy
c0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhOYXRpdmVUYXJnZXQgc2VjdGlv
biAqLworCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFj
dG9yICovID0geworCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OworCQkJYnVpbGRDb25maWd1cmF0
aW9uTGlzdCA9IDBGNDY4MDlBMTRCQTdFNUYwMEJGRTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLzsK
KwkJCWJ1aWxkUGhhc2VzID0gKAorCQkJCTBGNDY4MDhCMTRCQTdFNUUwMEJGRTI3MiAvKiBTb3Vy
Y2VzICovLAorCQkJCTBGNDY4MDhDMTRCQTdFNUUwMEJGRTI3MiAvKiBGcmFtZXdvcmtzICovLAor
CQkJCTBGNDY4MDhEMTRCQTdFNUUwMEJGRTI3MiAvKiBDb3B5RmlsZXMgKi8sCisJCQkpOworCQkJ
YnVpbGRSdWxlcyA9ICgKKwkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjIx
NEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOworCQkJbmFt
ZSA9IEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKwkJCXByb2R1Y3ROYW1lID0gSlNDTExJbnRP
ZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdFJlZmVyZW5jZSA9IDBGNDY4MDhGMTRCQTdFNUUw
MEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQlwcm9kdWN0VHlwZSA9
ICJjb20uYXBwbGUucHJvZHVjdC10eXBlLnRvb2wiOworCQl9OwogCQkxNDEyMTExRjBBNDg3OTND
MDA0ODAyNTUgLyogbWluaWRvbSAqLyA9IHsKIAkJCWlzYSA9IFBCWE5hdGl2ZVRhcmdldDsKIAkJ
CWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVp
bGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovOwpA
QCAtMzM2MiwxMSArMzUwOCwyOSBAQAogCQkJCTE0QkQ1OUJFMEEzRThGOTAwMEJBRjU5QyAvKiB0
ZXN0YXBpICovLAogCQkJCTkzMkY1QkRBMDgyMkExQzcwMDczNjk3NSAvKiBqc2MgKi8sCiAJCQkJ
NjUxMTIyRjcxNDA0NkE0QzAwMkIxMDFEIC8qIHRlc3RSZWdFeHAgKi8sCisJCQkJMEY0NjgwOEUx
NEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLywKKwkJCQkwRjQ2
ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLywKIAkJCSk7CiAJCX07CiAv
KiBFbmQgUEJYUHJvamVjdCBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFNoZWxsU2NyaXB0QnVp
bGRQaGFzZSBzZWN0aW9uICovCisJCTBGNDY4MEFBMTRCQTdGRDkwMEJGRTI3MiAvKiBHZW5lcmF0
ZSBEZXJpdmVkIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkp
OworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQkiJChTUkNST09UKS9sbGludC9Mb3dMZXZlbEFzc2Vt
Ymxlci5hc20iLAorCQkJKTsKKwkJCW5hbWUgPSAiR2VuZXJhdGUgRGVyaXZlZCBTb3VyY2VzIjsK
KwkJCW91dHB1dFBhdGhzID0gKAorCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZz
ZXRzL0xMSW50RGVzaXJlZE9mZnNldHMuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxT
Y3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vTExJbnRPZmZzZXRzL1wi
XG5cbi91c3IvYmluL2VudiBydWJ5IFwiJHtTUkNST09UfS9vZmZsaW5lYXNtL2dlbmVyYXRlX29m
ZnNldF9leHRyYWN0b3IucmJcIiBcIiR7U1JDUk9PVH0vbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5hc21cIiBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvTExJbnREZXNpcmVk
T2Zmc2V0cy5oXCJcbiI7CisJCX07CiAJCTM3MTNGMDE0MTQyOTA1MjQwMDM2Mzg3RiAvKiBDaGVj
ayBGb3IgSW5hcHByb3ByaWF0ZSBPYmplY3RpdmUtQyBDbGFzcyBOYW1lcyAqLyA9IHsKIAkJCWlz
YSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0
ODM2NDc7CkBAIC0zNDcyLDcgKzM2MzYsNyBAQAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKLQkJCXNoZWxs
U2NyaXB0ID0gIm1rZGlyIC1wIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2Vz
L0phdmFTY3JpcHRDb3JlL2RvY3NcIlxuY2QgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmVcIlxuXG4vYmluL2xuIC1zZmggXCIke1NSQ1JPT1R9XCIg
SmF2YVNjcmlwdENvcmVcbmV4cG9ydCBKYXZhU2NyaXB0Q29yZT1cIkphdmFTY3JpcHRDb3JlXCJc
bmV4cG9ydCBCVUlMVF9QUk9EVUNUU19ESVI9XCIuLi8uLlwiXG5cbm1ha2UgLS1uby1idWlsdGlu
LXJ1bGVzIC1mIFwiSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZVwiIC1qIGAvdXNy
L3NiaW4vc3lzY3RsIC1uIGh3Lm5jcHVgXG4iOworCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAg
XCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9j
c1wiXG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0
Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7U1JDUk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhw
b3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2YVNjcmlwdENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RV
Q1RTX0RJUj1cIi4uLy4uXCJcblxubWFrZSAtLW5vLWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlXCIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcu
bmNwdWBcblxuL3Vzci9iaW4vZW52IHJ1YnkgSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20u
cmIgSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20gJHtCVUlMVF9Q
Uk9EVUNUU19ESVJ9L0pTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciBMTEludEFzc2VtYmx5LmhcbiI7
CiAJCX07CiAJCTkzMTk1ODZCMDlEOUY5MUEwMEE1NkZENCAvKiBDaGVjayBGb3IgR2xvYmFsIElu
aXRpYWxpemVycyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKQEAg
LTM1MDcsNiArMzY3MSwxNCBAQAogLyogRW5kIFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWFNvdXJjZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0
NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJjZXMgKi8gPSB7CisJCQlpc2EgPSBQQlhTb3Vy
Y2VzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxl
cyA9ICgKKwkJCQkwRjQ2ODBBNzE0QkE3RkExMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOworCQl9OwogCQkxNDEyMTExRDBBNDg3OTNDMDA0ODAyNTUgLyogU291
cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTM3NjgsNyArMzk0MCwxNCBAQAogCQkJCTg2NzA0Qjg2
MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJySklULmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2NzA0
Qjg5MTJEQkEzMzcwMEE5RkU3QiAvKiBZYXJyUGF0dGVybi5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk4NjcwNEI0MjEyREI4QTgxMDBBOUZFN0IgLyogWWFyclN5bnRheENoZWNrZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhz
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEE4MTRCQTdGQUIwMEJGRTI3MiAvKiBMTElu
dEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY0NjgwODMxNEJBNTczMTAwQkZF
MjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQ0MxNEJC
QjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJMEY0NjgwRDIxNEJCRDE2NTAwQkZFMjcyIC8qIExMSW50RGF0YS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQkwRjQ2ODBENDE0QkJEMjQ5MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QTE0QkNGNDVEMDA4ODVCNEYgLyogTExJbnRF
bnRyeXBvaW50cy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjBCODM5QzE0QkNGNDYzMDA4ODVC
NEYgLyogTExJbnRUaHVua3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYwQjgzQjAxNEJDRjcx
NjAwODg1QjRGIC8qIENhbGxMaW5rSW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBCODNC
NDE0QkNGODYwMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUY2OUU4NkMzMTRDNkU1NTEwMDJDMkM2MiAvKiBOdW1iZXJPZkNvcmVzLmNwcCBpbiBT
b3VyY2VzICovLApAQCAtMzc5Niw2ICszOTc1LDE2IEBACiAvKiBFbmQgUEJYU291cmNlc0J1aWxk
UGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhUYXJnZXREZXBlbmRlbmN5IHNlY3Rpb24g
Ki8KKwkJMEY0NjgwQjIxNEJBODExNTAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8g
PSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMEY0NjgwQTkx
NEJBN0ZEOTAwQkZFMjcyIC8qIExMSW50IE9mZnNldHMgKi87CisJCQl0YXJnZXRQcm94eSA9IDBG
NDY4MEIxMTRCQTgxMTUwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi87CisJCX07
CisJCTBGNDY4MEI0MTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhUYXJnZXREZXBlbmRlbmN5ICovID0g
eworCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKKwkJCXRhcmdldCA9IDBGNDY4MDhFMTRC
QTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi87CisJCQl0YXJnZXRQ
cm94eSA9IDBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkg
Ki87CisJCX07CiAJCTE0MTIxNEJGMEE0OTE5MEUwMDQ4MDI1NSAvKiBQQlhUYXJnZXREZXBlbmRl
bmN5ICovID0gewogCQkJaXNhID0gUEJYVGFyZ2V0RGVwZW5kZW5jeTsKIAkJCXRhcmdldCA9IDE0
MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovOwpAQCAtMzgyOSw2ICs0MDE4LDE1
MCBAQAogLyogRW5kIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBY
Q0J1aWxkQ29uZmlndXJhdGlvbiBzZWN0aW9uICovCisJCTBGNDY4MDk2MTRCQTdFNUUwMEJGRTI3
MiAvKiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlB
UkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAg
PSBOTzsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19EWU5B
TUlDX05PX1BJQyA9IE5POworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOwor
CQkJCUdDQ19PUFRJTUlaQVRJT05fTEVWRUwgPSAwOworCQkJCUdDQ19QUkVQUk9DRVNTT1JfREVG
SU5JVElPTlMgPSAoCisJCQkJCSJERUJVRz0xIiwKKwkJCQkJIiQoaW5oZXJpdGVkKSIsCisJCQkJ
KTsKKwkJCQlHQ0NfU1lNQk9MU19QUklWQVRFX0VYVEVSTiA9IE5POworCQkJCUdDQ19WRVJTSU9O
ID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9U
T18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJP
VE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFU
SFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVD
VFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJ
CQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43OworCQkJCU9OTFlfQUNU
SVZFX0FSQ0ggPSBOTzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJ
CVNES1JPT1QgPSBtYWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhT
KSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODA5NzE0QkE3RTVFMDBC
RkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwor
CQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsK
KwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0Vf
U1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgt
ZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5B
QkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5j
b21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZF
UlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7
CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5V
U0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0g
KAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRP
ZmZzZXRzJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9Z
TUVOVF9UQVJHRVQgPSAxMC43OworCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBOTzsKKwkJCQlQUk9E
VUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBtYWNvc3g7CisJCQkJ
VVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9M
TEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9OworCQkJbmFtZSA9IFJl
bGVhc2U7CisJCX07CisJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8g
PSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7
CisJCQkJQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CisJCQkJQVJDSFMgPSAiJChBUkNI
U19TVEFOREFSRF82NF9CSVQpIjsKKwkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOworCQkJCURF
QlVHX0lORk9STUFUSU9OX0ZPUk1BVCA9ICJkd2FyZi13aXRoLWRzeW0iOworCQkJCUdDQ19DX0xB
TkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMg
PSBZRVM7CisJCQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcu
MV8wOworCQkJCUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0ND
X1dBUk5fQUJPVVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VU
X1JFVFVSTl9UWVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsK
KwkJCQkiSEVBREVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1
LAorCQkJCQkiJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhF
QURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdF
VCA9IDEwLjc7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IE5POworCQkJCVBST0RVQ1RfTkFNRSA9
ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURF
Ul9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0
cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZmlsaW5nOwor
CQl9OworCQkwRjQ2ODA5OTE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLyA9IHsKKwkJ
CWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlB
TFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hTX1NUQU5E
QVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVCVUdfSU5G
T1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFOR1VBR0Vf
U1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9IFlFUzsK
KwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4xXzA7CisJ
CQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0NfV0FSTl9B
Qk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJO
X1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCSJI
RUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3UsCisJCQkJ
CSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVBREVSX1NF
QVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAu
NzsKKwkJCQlQUk9EVUNUX05BTUUgPSAiJChUQVJHRVRfTkFNRSkiOworCQkJCVNES1JPT1QgPSBt
YWNvc3g7CisJCQkJVVNFUl9IRUFERVJfU0VBUkNIX1BBVEhTID0gIi4gaWN1ICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9MTEludE9mZnNldHMgJChIRUFERVJfU0VBUkNIX1BBVEhTKSI7CisJCQl9Owor
CQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAv
KiBEZWJ1ZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRT
ZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHkiOwor
CQkJfTsKKwkJCW5hbWUgPSBEZWJ1ZzsKKwkJfTsKKwkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcy
IC8qIFJlbGVhc2UgKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1
aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5
IjsKKwkJCX07CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwQUYxNEJBN0ZEOTAw
QkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3Vy
Y2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MEIw
MTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJE
ZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2R1Y3Rpb247CisJCX07
CiAJCTE0MTIxMTNBMEE0ODc5ODQwMDQ4MDI1NSAvKiBEZWJ1ZyAqLyA9IHsKIAkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKQEAgLTQwNzAsNiArNDQw
MywyOCBAQAogLyogRW5kIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCisJCTBGNDY4MDlBMTRCQTdFNUYwMEJG
RTI3MiAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiSlND
TExJbnRPZmZzZXRzRXh0cmFjdG9yIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxp
c3Q7CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MDk2MTRCQTdFNUUwMEJG
RTI3MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODA5NzE0QkE3RTVFMDBCRkUyNzIgLyogUmVsZWFz
ZSAqLywKKwkJCQkwRjQ2ODA5ODE0QkE3RTVFMDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJ
CTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRl
ZmF1bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9u
TmFtZSA9IFByb2R1Y3Rpb247CisJCX07CisJCTBGNDY4MEFDMTRCQTdGRDkwMEJGRTI3MiAvKiBC
dWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWEFnZ3JlZ2F0ZVRhcmdldCAiTExJbnQgT2Zm
c2V0cyIgKi8gPSB7CisJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OworCQkJYnVpbGRDb25m
aWd1cmF0aW9ucyA9ICgKKwkJCQkwRjQ2ODBBRDE0QkE3RkQ5MDBCRkUyNzIgLyogRGVidWcgKi8s
CisJCQkJMEY0NjgwQUUxNEJBN0ZEOTAwQkZFMjcyIC8qIFJlbGVhc2UgKi8sCisJCQkJMEY0Njgw
QUYxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLywKKwkJCQkwRjQ2ODBCMDE0QkE3RkQ5
MDBCRkUyNzIgLyogUHJvZHVjdGlvbiAqLywKKwkJCSk7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlv
bklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUgPSBQcm9kdWN0aW9u
OworCQl9OwogCQkxNDEyMTEzOTBBNDg3OTg0MDA0ODAyNTUgLyogQnVpbGQgY29uZmlndXJhdGlv
biBsaXN0IGZvciBQQlhOYXRpdmVUYXJnZXQgIm1pbmlkb20iICovID0gewogCQkJaXNhID0gWEND
b25maWd1cmF0aW9uTGlzdDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkocmV2aXNpb24gMTA4
MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAKICNkZWZpbmUgR0xPQkFMX1RIVU5LX0lEIHJl
aW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0cl90PigtMSkpCiAjZGVmaW5l
IFJFR0VYUF9DT0RFX0lEIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PGludHB0
cl90PigtMikpCiAKLSNpbmNsdWRlIDxNYWNyb0Fzc2VtYmxlci5oPgorI2luY2x1ZGUgIk1hY3Jv
QXNzZW1ibGVyLmgiCiAjaW5jbHVkZSA8d3RmL0RhdGFMb2cuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNy
b0Fzc2VtYmxlckNvZGVSZWYuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCShyZXZpc2lvbiAxMDgxNjQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzMsNiArMjczLDE0IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAg
IEFTU0VSVF9WQUxJRF9DT0RFX1BPSU5URVIobV92YWx1ZSk7CiAgICAgfQorICAgIAorICAgIHN0
YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgY3JlYXRlRnJvbUV4ZWN1dGFibGVBZGRyZXNzKHZv
aWQqIHZhbHVlKQorICAgIHsKKyAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUih2YWx1
ZSk7CisgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciByZXN1bHQ7CisgICAgICAgIHJlc3Vs
dC5tX3ZhbHVlID0gdmFsdWU7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogCiAgICAg
ZXhwbGljaXQgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKFJldHVybkFkZHJlc3NQdHIgcmEpCiAgICAg
ICAgIDogbV92YWx1ZShyYS52YWx1ZSgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorI2RlZmluZSBC
eXRlY29kZUNvbnZlbnRpb25zX2gKKworLy8gUmVnaXN0ZXIgbnVtYmVycyB1c2VkIGluIGJ5dGVj
b2RlIG9wZXJhdGlvbnMgaGF2ZSBkaWZmZXJlbnQgbWVhbmluZyBhY2NvcmRpbmcgdG8gdGhlaXIg
cmFuZ2VzOgorLy8gICAgICAweDgwMDAwMDAwLTB4RkZGRkZGRkYgIE5lZ2F0aXZlIGluZGljZXMg
ZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGVudHJpZXMgaW4gdGhlIGNhbGwgZnJhbWUs
IHNlZSBSZWdpc3RlckZpbGUuaC4KKy8vICAgICAgMHgwMDAwMDAwMC0weDNGRkZGRkZGICBGb3J3
YXJkcyBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBsb2NhbCB2YXJzIGFu
ZCB0ZW1wb3JhcmllcyB3aXRoIHRoZSBmdW5jdGlvbidzIGNhbGxmcmFtZS4KKy8vICAgICAgMHg0
MDAwMDAwMC0weDdGRkZGRkZGICBQb3NpdGl2ZSBpbmRpY2VzIGZyb20gMHg0MDAwMDAwMCBzcGVj
aWZ5IGVudHJpZXMgaW4gdGhlIGNvbnN0YW50IHBvb2wgb24gdGhlIENvZGVCbG9jay4KK3N0YXRp
YyBjb25zdCBpbnQgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPSAweDQwMDAwMDAwOworCisj
ZW5kaWYgLy8gQnl0ZWNvZGVDb252ZW50aW9uc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTA4MTY0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjcsMTcgKzI3LDQwIEBACiAjaW5jbHVkZSAiQ2FsbExpbmtTdGF0
dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkxMSW50Q2FsbExpbmtJ
bmZvLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1
czo6Y29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5
dGVjb2RlSW5kZXgpCit7CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVO
VVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW5zdHJ1
Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4o
KSArIGJ5dGVjb2RlSW5kZXg7CisgICAgTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9
IGluc3RydWN0aW9uWzRdLnUuY2FsbExpbmtJbmZvOworICAgIAorICAgIHJldHVybiBDYWxsTGlu
a1N0YXR1cyhjYWxsTGlua0luZm8tPmxhc3RTZWVuQ2FsbGVlLmdldCgpLCBmYWxzZSk7CisjZWxz
ZQorICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygwLCBmYWxzZSk7CisjZW5kaWYKK30KKwogQ2Fs
bExpbmtTdGF0dXMgQ2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQogewogICAgIFVOVVNFRF9QQVJBTShwcm9m
aWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAjaWYgRU5BQkxF
KEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQotICAgIHJldHVybiBDYWxsTGlua1N0YXR1
cygKLSAgICAgICAgcHJvZmlsZWRCbG9jay0+Z2V0Q2FsbExpbmtJbmZvKGJ5dGVjb2RlSW5kZXgp
Lmxhc3RTZWVuQ2FsbGVlLmdldCgpLAotICAgICAgICBwcm9maWxlZEJsb2NrLT5jb3VsZFRha2VT
bG93Q2FzZShieXRlY29kZUluZGV4KSk7CisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1iZXJP
ZkNhbGxMaW5rSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmls
ZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgaWYgKHByb2ZpbGVkQmxvY2stPmNv
dWxkVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQorICAgICAgICByZXR1cm4gQ2FsbExpbmtT
dGF0dXMoMCwgdHJ1ZSk7CisgICAgCisgICAgSlNGdW5jdGlvbiogdGFyZ2V0ID0gcHJvZmlsZWRC
bG9jay0+Z2V0Q2FsbExpbmtJbmZvKGJ5dGVjb2RlSW5kZXgpLmxhc3RTZWVuQ2FsbGVlLmdldCgp
OworICAgIGlmICghdGFyZ2V0KQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9m
aWxlZEJsb2NrLCBieXRlY29kZUluZGV4KTsKKyAgICAKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0
dXModGFyZ2V0LCBmYWxzZSk7CiAjZWxzZQogICAgIHJldHVybiBDYWxsTGlua1N0YXR1cygwLCBm
YWxzZSk7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TGlua1N0YXR1cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTGlua1N0YXR1cy5oCShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTUg
KzQ3LDE3IEBAIHB1YmxpYzoKICAgICAKICAgICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0
ZUZvcihDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4KTsKICAgICAKLSAgICBib29s
IGlzU2V0KCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxUYXJnZXQ7IH0KKyAgICBib29sIGlzU2V0
KCkgY29uc3QgeyByZXR1cm4gISFtX2NhbGxUYXJnZXQgfHwgbV9jb3VsZFRha2VTbG93UGF0aDsg
fQogICAgIAotICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIW1fY2FsbFRhcmdl
dDsgfQorICAgIGJvb2wgb3BlcmF0b3IhKCkgY29uc3QgeyByZXR1cm4gIWlzU2V0KCk7IH0KICAg
ICAKICAgICBib29sIGNvdWxkVGFrZVNsb3dQYXRoKCkgY29uc3QgeyByZXR1cm4gbV9jb3VsZFRh
a2VTbG93UGF0aDsgfQogICAgIAogICAgIEpTRnVuY3Rpb24qIGNhbGxUYXJnZXQoKSBjb25zdCB7
IHJldHVybiBtX2NhbGxUYXJnZXQ7IH0KICAgICAKIHByaXZhdGU6CisgICAgc3RhdGljIENhbGxM
aW5rU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCk7CisgICAgCiAgICAgSlNGdW5jdGlvbiogbV9jYWxsVGFyZ2V0OwogICAgIGJvb2wgbV9j
b3VsZFRha2VTbG93UGF0aDsKIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTA4MTY0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQy
LDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNTdGF0aWNTY29wZU9i
amVjdC5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJl
dGVyLmgiCiAjaW5jbHVkZSAiUmVwYXRjaEJ1ZmZlci5oIgogI2luY2x1ZGUgIlVTdHJpbmdDb25j
YXRlbmF0ZS5oIgogI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0zNTYsMTAgKzM1NywxMCBAQCB2b2lk
IENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBpbnN0cnVjdGlvbnMoKS5zaXplKCk7IGkgKz0gb3Bjb2RlTGVuZ3Roc1tleGVjLT5p
bnRlcnByZXRlcigpLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbnMoKVtpXS51Lm9wY29kZSldKQog
ICAgICAgICArK2luc3RydWN0aW9uQ291bnQ7CiAKLSAgICBkYXRhTG9nKCIlbHUgbV9pbnN0cnVj
dGlvbnM7ICVsdSBieXRlcyBhdCAlcDsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0
ZXIocylcblxuIiwKKyAgICBkYXRhTG9nKCIlbHUgbV9pbnN0cnVjdGlvbnM7ICVsdSBieXRlcyBh
dCAlcDsgJWQgcGFyYW1ldGVyKHMpOyAlZCBjYWxsZWUgcmVnaXN0ZXIocyk7ICVkIHZhcmlhYmxl
KHMpXG5cbiIsCiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KGluc3RydWN0aW9u
Q291bnQpLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihpbnN0cnVjdGlvbnMo
KS5zaXplKCkgKiBzaXplb2YoSW5zdHJ1Y3Rpb24pKSwKLSAgICAgICAgdGhpcywgbV9udW1QYXJh
bWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgICAgIHRoaXMsIG1fbnVtUGFyYW1l
dGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMsIG1fbnVtVmFycyk7CiAKICAgICBWZWN0b3I8SW5z
dHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciBiZWdpbiA9IGluc3RydWN0aW9ucygpLmJlZ2luKCk7
CiAgICAgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW5zdHJ1Y3Rp
b25zKCkuZW5kKCk7CkBAIC04OTYsNiArODk3LDE0IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4
ZWNTdGF0ZSogZXhlYywgY28KICAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0
aW9uLCBpdCwgInB1dF9ieV9pZF90cmFuc2l0aW9uIik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDogewor
ICAgICAgICAgICAgcHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lk
X3RyYW5zaXRpb25fZGlyZWN0Iik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogeworICAgICAgICAgICAg
cHJpbnRQdXRCeUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb25f
bm9ybWFsIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF9nZW5lcmljOiB7CiAgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBs
b2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfZ2VuZXJpYyIpOwogICAgICAgICAgICAgYnJlYWs7CkBA
IC0xNDUzLDYgKzE0NjIsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhDb3B5UGFyc2VkQmxvY2tU
YWcsCiB7CiAgICAgc2V0TnVtUGFyYW1ldGVycyhvdGhlci5udW1QYXJhbWV0ZXJzKCkpOwogICAg
IG9wdGltaXplQWZ0ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogICAgIAogICAg
IGlmIChvdGhlci5tX3JhcmVEYXRhKSB7CiAgICAgICAgIGNyZWF0ZVJhcmVEYXRhSWZOZWNlc3Nh
cnkoKTsKQEAgLTE1MDEsNiArMTUxMSw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4
ZWN1dGFibGUqIG8KICAgICBBU1NFUlQobV9zb3VyY2UpOwogICAgIAogICAgIG9wdGltaXplQWZ0
ZXJXYXJtVXAoKTsKKyAgICBqaXRBZnRlcldhcm1VcCgpOwogCiAjaWYgRFVNUF9DT0RFX0JMT0NL
X1NUQVRJU1RJQ1MKICAgICBsaXZlQ29kZUJsb2NrU2V0LmFkZCh0aGlzKTsKQEAgLTE1MTgsNyAr
MTUyOSwxMSBAQCBDb2RlQmxvY2s6On5Db2RlQmxvY2soKQogI2lmIEVOQUJMRShWRVJCT1NFX1ZB
TFVFX1BST0ZJTEUpCiAgICAgZHVtcFZhbHVlUHJvZmlsZXMoKTsKICNlbmRpZgotICAgIAorCisj
aWYgRU5BQkxFKExMSU5UKSAgICAKKyAgICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVn
aW4oKSAhPSBtX2luY29taW5nTExJbnRDYWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xM
SW50Q2FsbHMuYmVnaW4oKS0+cmVtb3ZlKCk7CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQogI2lm
IEVOQUJMRShKSVQpCiAgICAgLy8gV2UgbWF5IGJlIGRlc3Ryb3llZCBiZWZvcmUgYW55IENvZGVC
bG9ja3MgdGhhdCByZWZlciB0byB1cyBhcmUgZGVzdHJveWVkLgogICAgIC8vIENvbnNpZGVyIHRo
YXQgdHdvIENvZGVCbG9ja3MgYmVjb21lIHVucmVhY2hhYmxlIGF0IHRoZSBzYW1lIHRpbWUuIFRo
ZXJlCkBAIC0xNzMwLDggKzE3NDUsNjkgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25k
aXRpb25hbGx5KAogI2Vsc2UKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlVW5saW5raW5n
ID0gZmFsc2U7CiAjZW5kaWYKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgCisj
aWYgRU5BQkxFKExMSU5UKQorICAgIEludGVycHJldGVyKiBpbnRlcnByZXRlciA9IG1fZ2xvYmFs
RGF0YS0+aW50ZXJwcmV0ZXI7CisgICAgLy8gaW50ZXJwcmV0ZXItPmNsYXNzaWNFbmFibGVkKCkg
cmV0dXJucyB0cnVlIGlmIHRoZSBvbGQgQysrIGludGVycHJldGVyIGlzIGVuYWJsZWQuIElmIHRo
YXQncyBlbmFibGVkCisgICAgLy8gdGhlbiB3ZSdyZSBub3QgdXNpbmcgTExJbnQuCisgICAgaWYg
KCFpbnRlcnByZXRlci0+Y2xhc3NpY0VuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBz
aXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6
ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5z
dHJ1Y3Rpb25zKClbbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV07CisgICAgICAgICAg
ICBzd2l0Y2ggKGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9w
Y29kZSkpIHsKKyAgICAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X2lkOgorICAgICAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgICAgICAgICAgaWYgKCFjdXJJbnN0cnVjdGlvbls0XS51
LnN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVy
ZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlVW5saW5raW5nKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmlu
ZyBMTEludCBwcm9wZXJ0eSBhY2Nlc3Mgd2l0aCBzdHJ1Y3R1cmUgJXAuXG4iLCBjdXJJbnN0cnVj
dGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rp
b25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlv
bls1XS51Lm9wZXJhbmQgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgICAgICBjYXNlIG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKKyAgICAgICAgICAgICAgICBpZiAoSGVhcDo6
aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAg
ICAgICAgICAgICYmIEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJl
LmdldCgpKQorICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVj
dGlvbls3XS51LnN0cnVjdHVyZUNoYWluLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgTExJbnQgcHV0IHRyYW5zaXRpb24gd2l0aCBzdHJ1
Y3R1cmVzICVwIC0+ICVwLCBjaGFpbiAlcC5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5n
ZXQoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9u
WzRdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rpb25b
Nl0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3
XS51LnN0cnVjdHVyZUNoYWluLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3VySW5zdHJ1Y3Rp
b25bMF0udS5vcGNvZGUgPSBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgp
LCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cklu
c3RydWN0aW9uID0gJmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tp
XV07CisgICAgICAgICAgICBBU1NFUlQoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3Ry
dWN0aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbAorICAgICAgICAgICAgICAg
ICAgIHx8IGludGVycHJldGVyLT5nZXRPcGNvZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29k
ZSkgPT0gb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYyk7CisgICAgICAgICAgICBpZiAoIWN1cklu
c3RydWN0aW9uWzNdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9u
WzNdLnUuc3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQorICAgICAgICAgICAgICAgIGRhdGFMb2coIkNs
ZWFyaW5nIExMSW50IGdsb2JhbCByZXNvbHZlIGNhY2hlIHdpdGggc3RydWN0dXJlICVwLlxuIiwg
Y3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICAgICAgY3VySW5z
dHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgIGN1ckluc3RydWN0
aW9uWzRdLnUub3BlcmFuZCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAgICAg
ICBpZiAobV9sbGludENhbGxMaW5rSW5mb3NbaV0uaXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJr
ZWQobV9sbGludENhbGxMaW5rSW5mb3NbaV0uY2FsbGVlLmdldCgpKSkgeworICAgICAgICAgICAg
ICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQorICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJD
bGVhcmluZyBMTEludCBjYWxsIGZyb20gJXAuXG4iLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBt
X2xsaW50Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmICghIW1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVuQ2FsbGVlICYmICFIZWFw
Ojppc01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNhbGxlZS5nZXQoKSkp
CisgICAgICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5DYWxsZWUu
Y2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKICNp
ZiBFTkFCTEUoREZHX0pJVCkKICAgICAvLyBDaGVjayBpZiB3ZSdyZSBub3QgbGl2ZS4gSWYgd2Ug
YXJlLCB0aGVuIGpldHRpc29uLgogICAgIGlmICghKHNob3VsZEltbWVkaWF0ZWx5QXNzdW1lTGl2
ZW5lc3NEdXJpbmdTY2FuKCkgfHwgbV9kZmdEYXRhLT5saXZlbmVzc0hhc0JlZW5Qcm92ZWQpKSB7
CkBAIC0xNzU0LDcgKzE4MzAsNyBAQCB2b2lkIENvZGVCbG9jazo6ZmluYWxpemVVbmNvbmRpdGlv
bmFsbHkoCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1iZXJPZkNhbGxMaW5r
SW5mb3MoKTsgKytpKSB7CiAgICAgICAgICAgICBpZiAoY2FsbExpbmtJbmZvKGkpLmlzTGlua2Vk
KCkgJiYgIUhlYXA6OmlzTWFya2VkKGNhbGxMaW5rSW5mbyhpKS5jYWxsZWUuZ2V0KCkpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCi0gICAgICAgICAgICAgICAgICAg
IGRhdGFMb2coIkNsZWFyaW5nIGNhbGwgZnJvbSAlcC5cbiIsIHRoaXMpOworICAgICAgICAgICAg
ICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBjYWxsIGZyb20gJXAgdG8gJXAuXG4iLCB0aGlzLCBj
YWxsTGlua0luZm8oaSkuY2FsbGVlLmdldCgpKTsKICAgICAgICAgICAgICAgICBjYWxsTGlua0lu
Zm8oaSkudW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0Y2hCdWZmZXIpOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgaWYgKCEhY2FsbExpbmtJbmZvKGkpLmxhc3RTZWVuQ2FsbGVlCkBAIC0x
ODUyLDEwICsxOTI4LDEyIEBAIHZvaWQgQ29kZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVm
ZXIKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZnVuY3Rpb25EZWNscy5zaXplKCk7ICsr
aSkKICAgICAgICAgdmlzaXRvci5hcHBlbmQoJm1fZnVuY3Rpb25EZWNsc1tpXSk7CiAjaWYgRU5B
QkxFKENMQVNTSUNfSU5URVJQUkVURVIpCi0gICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsraSkKLSAgICAg
ICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7Ci0gICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVz
b2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQotICAgICAgICB2
aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fZ2xvYmFsUmVzb2x2ZUlu
c3RydWN0aW9uc1tpXV0pOworICAgIGlmIChtX2dsb2JhbERhdGEtPmludGVycHJldGVyLT5jbGFz
c2ljRW5hYmxlZCgpKSB7CisgICAgICAgIGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNj
ZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpCisgICAgICAgICAg
ICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nl
c3NJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFs
UmVzb2x2ZUluc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAg
ICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJl
c29sdmVJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShERkdf
SklUKQpAQCAtMTg2Myw4ICsxOTQxLDkgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5VmlzaXRT
dHJvbmdSZWZlcgogICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBleGVjdXRhYmxlcyB0aGF0IHdl
IGhhdmUgaW5saW5lZCBkb24ndCBkaWUuCiAgICAgICAgIC8vIEZJWE1FOiBJZiB0aGV5IHdvdWxk
IGhhdmUgb3RoZXJ3aXNlIGRpZWQsIHdlIHNob3VsZCBwcm9iYWJseSB0cmlnZ2VyIHJlY29tcGls
YXRpb24uCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5saW5lQ2FsbEZyYW1lcygp
LnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZy
YW1lcygpW2ldLmV4ZWN1dGFibGUpOwotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGlu
ZUNhbGxGcmFtZXMoKVtpXS5jYWxsZWUpOworICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lJiBp
bmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJhbWVzKClbaV07CisgICAgICAgICAgICB2aXNp
dG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZyYW1lLmV4ZWN1dGFibGUpOworICAgICAgICAgICAgdmlz
aXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZS5jYWxsZWUpOwogICAgICAgICB9CiAgICAgfQog
I2VuZGlmCkBAIC0yMDY4LDEyICsyMTQ3LDE4IEBAIHVuc2lnbmVkIENvZGVCbG9jazo6YWRkT3JG
aW5kQ29uc3RhbnQoSlMKICAgICB9CiAgICAgcmV0dXJuIGFkZENvbnN0YW50KHYpOwogfQotICAg
IAorCiAjaWYgRU5BQkxFKEpJVCkKIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiB7CiAg
ICAgaWYgKCEhbV9hbHRlcm5hdGl2ZSkKICAgICAgICAgbV9hbHRlcm5hdGl2ZS0+dW5saW5rQ2Fs
bHMoKTsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2xs
aW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAobV9sbGludENhbGxM
aW5rSW5mb3NbaV0uaXNMaW5rZWQoKSkKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9z
W2ldLnVubGluaygpOworICAgIH0KKyNlbmRpZgogICAgIGlmICghKG1fY2FsbExpbmtJbmZvcy5z
aXplKCkgfHwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUoKSkpCiAgICAgICAgIHJldHVybjsK
ICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCkBAIC0yMDg4LDEwICsyMTczLDM5
IEBAIHZvaWQgQ29kZUJsb2NrOjp1bmxpbmtDYWxscygpCiAKIHZvaWQgQ29kZUJsb2NrOjp1bmxp
bmtJbmNvbWluZ0NhbGxzKCkKIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgd2hpbGUgKG1faW5j
b21pbmdMTEludENhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisg
ICAgICAgIG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCktPnVubGluaygpOworI2VuZGlmCisg
ICAgaWYgKG1faW5jb21pbmdDYWxscy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKICAgICBS
ZXBhdGNoQnVmZmVyIHJlcGF0Y2hCdWZmZXIodGhpcyk7CiAgICAgd2hpbGUgKG1faW5jb21pbmdD
YWxscy5iZWdpbigpICE9IG1faW5jb21pbmdDYWxscy5lbmQoKSkKICAgICAgICAgbV9pbmNvbWlu
Z0NhbGxzLmJlZ2luKCktPnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsKIH0K
KwordW5zaWduZWQgQ29kZUJsb2NrOjpieXRlY29kZU9mZnNldChFeGVjU3RhdGUqIGV4ZWMsIFJl
dHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAg
aWYgKHJldHVybkFkZHJlc3MudmFsdWUoKSA+PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9i
ZWdpbikKKyAgICAgICAgJiYgcmV0dXJuQWRkcmVzcy52YWx1ZSgpIDw9IGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X2VuZCkpIHsKKyAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpKTsK
KyAgICAgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpID09IHRoaXMpOworICAgICAgICBBU1NF
UlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7CisgICAgICAgIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiA9IGV4ZWMtPmN1cnJlbnRWUEMoKTsKKyAgICAgICAgQVNTRVJU
KGluc3RydWN0aW9uKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVjb2RlT2Zmc2V0KGluc3RydWN0aW9u
KTsKKyAgICB9CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyNlbmRpZgorICAgIGlm
ICghbV9yYXJlRGF0YSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgVmVjdG9yPENhbGxSZXR1cm5P
ZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMgPSBtX3JhcmVEYXRhLT5tX2NhbGxS
ZXR1cm5JbmRleFZlY3RvcjsKKyAgICBpZiAoIWNhbGxJbmRpY2VzLnNpemUoKSkKKyAgICAgICAg
cmV0dXJuIDE7CisgICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRl
Y29kZU9mZnNldCwgdW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJl
Z2luKCksIGNhbGxJbmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFk
ZHJlc3MudmFsdWUoKSkpLT5ieXRlY29kZU9mZnNldDsKK30KICNlbmRpZgogCiB2b2lkIENvZGVC
bG9jazo6Y2xlYXJFdmFsQ2FjaGUoKQpAQCAtMjE4NywyNCArMjMwMSw0NSBAQCBib29sIEZ1bmN0
aW9uQ29kZUJsb2NrOjpjYW5Db21waWxlV2l0aERGCiAKIHZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6
amV0dGlzb24oKQogewotICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxp
bmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgp
KSk7CiAgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8
UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVk
Q29kZSgqZ2xvYmFsRGF0YSgpKTsKIH0KIAogdm9pZCBFdmFsQ29kZUJsb2NrOjpqZXR0aXNvbigp
CiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Cisg
ICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBB
U1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxFdmFsRXhlY3V0
YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxE
YXRhKCkpOwogfQogCiB2b2lkIEZ1bmN0aW9uQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAg
QVNTRVJUKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJU
KEpJVENvZGU6OmlzT3B0aW1pemluZ0pJVChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhp
cyA9PSByZXBsYWNlbWVudCgpKTsKICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUq
Pihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZUZvcigqZ2xvYmFsRGF0
YSgpLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29uc3RydWN0IDogQ29kZUZvckNhbGwpOwog
fQorCit2b2lkIFByb2dyYW1Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkKK3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVy
cHJldGVyVGh1bmspOworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+
aml0Q29tcGlsZShnbG9iYWxEYXRhKTsKK30KKwordm9pZCBFdmFsQ29kZUJsb2NrOjpqaXRDb21w
aWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgQVNTRVJUKGdldEpJVFR5
cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAgICBBU1NFUlQodGhpcyA9PSBy
ZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUqPihv
d25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGUoZ2xvYmFsRGF0YSk7Cit9CisKK3ZvaWQgRnVu
Y3Rpb25Db2RlQmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
K3sKKyAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmsp
OworICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENvbXBpbGVG
b3IoZ2xvYmFsRGF0YSwgbV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVG
b3JDYWxsKTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTA4
MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaWZuZGVmIENvZGVCbG9ja19oCiAjZGVmaW5l
IENvZGVCbG9ja19oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAjaW5jbHVk
ZSAiQ2FsbExpbmtJbmZvLmgiCiAjaW5jbHVkZSAiQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQuaCIKICNpbmNsdWRlICJDb2RlT3JpZ2luLmgiCkBAIC01MCw2ICs1MSw3IEBACiAjaW5j
bHVkZSAiSklUV3JpdGVCYXJyaWVyLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3QuaCIKICNp
bmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludENhbGxMaW5rSW5mby5oIgogI2lu
Y2x1ZGUgIkxpbmVJbmZvLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKICNpbmNsdWRlICJQcmVkaWN0
aW9uVHJhY2tlci5oIgpAQCAtNjUsMTYgKzY3LDExIEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogI2luY2x1ZGUgIlN0cnVjdHVyZVN0dWJJbmZvLmgiCiAKLS8vIFJlZ2lzdGVyIG51bWJlcnMg
dXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3Jk
aW5nIHRvIHRoZWlyIHJhbmdlczoKLS8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdh
dGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRo
ZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCi0vLyAgICAgIDB4MDAwMDAwMDAtMHgz
RkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUg
bG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUu
Ci0vLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4
NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2Rl
QmxvY2suCi1zdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0
MDAwMDAwMDsKLQogbmFtZXNwYWNlIEpTQyB7CiAKLSAgICBjbGFzcyBFeGVjU3RhdGU7CiAgICAg
Y2xhc3MgREZHQ29kZUJsb2NrczsKKyAgICBjbGFzcyBFeGVjU3RhdGU7CisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgaW5saW5lIGludCB1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXIoaW50IGFyZ3VtZW50c1JlZ2lzdGVyKSB7IHJldHVybiBhcmd1bWVudHNSZWdpc3Rl
ciAtIDE7IH0KIApAQCAtODMsNiArODAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBD
b2RlQmxvY2sgOiBwdWJsaWMgVW5jb25kaXRpb25hbEZpbmFsaXplciwgcHVibGljIFdlYWtSZWZl
cmVuY2VIYXJ2ZXN0ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIGVudW0gQ29weVBhcnNlZEJsb2NrVGFnIHsg
Q29weVBhcnNlZEJsb2NrIH07CiAgICAgcHJvdGVjdGVkOgpAQCAtMTIzLDcgKzEyMSw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICAgICAgd2hpbGUgKHJlc3VsdC0+YWx0ZXJuYXRpdmUoKSkK
ICAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQtPmFsdGVybmF0aXZlKCk7CiAgICAgICAg
ICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICAgICAgICAgIEFTU0VSVChyZXN1bHQtPmdldEpJVFR5
cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICBBU1NFUlQoSklUQ29k
ZTo6aXNCYXNlbGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CiAgICAgICAgIH0KICNlbmRpZgpAQCAtMTkyLDE1ICsxOTAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiAqKGJpbmFyeVNlYXJjaDxNZXRob2RDYWxs
TGlua0luZm8sIHVuc2lnbmVkLCBnZXRNZXRob2RDYWxsTGlua0luZm9CeXRlY29kZUluZGV4Piht
X21ldGhvZENhbGxMaW5rSW5mb3MuYmVnaW4oKSwgbV9tZXRob2RDYWxsTGlua0luZm9zLnNpemUo
KSwgYnl0ZWNvZGVJbmRleCkpOwogICAgICAgICB9CiAKLSAgICAgICAgdW5zaWduZWQgYnl0ZWNv
ZGVPZmZzZXQoUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQotICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAg
ICAgICAgICBWZWN0b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5k
aWNlcyA9IG1fcmFyZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOwotICAgICAgICAgICAg
aWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAg
ICAgICAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zm
c2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4oY2FsbEluZGljZXMuYmVnaW4oKSwg
Y2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zmc2V0T2YocmV0dXJuQWRkcmVzcy52
YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OwotICAgICAgICB9CisgICAgICAgIHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0KEV4ZWNTdGF0ZSosIFJldHVybkFkZHJlc3NQdHIpOwogCiAgICAgICAgIHVu
c2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Rm9yQ2FsbEF0SW5kZXgodW5zaWduZWQgaW5kZXgpCiAgICAg
ICAgIHsKQEAgLTIyMSwxMSArMjExLDE3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAg
ICAgICAgICAgICBtX2luY29taW5nQ2FsbHMucHVzaChpbmNvbWluZyk7CiAgICAgICAgIH0KKyNp
ZiBFTkFCTEUoTExJTlQpCisgICAgICAgIHZvaWQgbGlua0luY29taW5nQ2FsbChMTEludENhbGxM
aW5rSW5mbyogaW5jb21pbmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1faW5jb21pbmdMTElu
dENhbGxzLnB1c2goaW5jb21pbmcpOworICAgICAgICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5U
KQogICAgICAgICAKICAgICAgICAgdm9pZCB1bmxpbmtJbmNvbWluZ0NhbGxzKCk7Ci0jZW5kaWYK
KyNlbmRpZiAvLyBFTkFCTEUoSklUKQogCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxF
KERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKICAgICAgICAgdm9pZCBzZXRKSVRDb2RlTWFwKFBh
c3NPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IGppdENvZGVNYXApCiAgICAgICAgIHsKICAgICAg
ICAgICAgIG1faml0Q29kZU1hcCA9IGppdENvZGVNYXA7CkBAIC0yMzQsNyArMjMwLDkgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHsKICAgICAgICAgICAgIHJldHVybiBtX2ppdENvZGVNYXAu
Z2V0KCk7CiAgICAgICAgIH0KKyNlbmRpZgogICAgICAgICAKKyNpZiBFTkFCTEUoREZHX0pJVCkK
ICAgICAgICAgdm9pZCBjcmVhdGVERkdEYXRhSWZOZWNlc3NhcnkoKQogICAgICAgICB7CiAgICAg
ICAgICAgICBpZiAoISFtX2RmZ0RhdGEpCkBAIC0zMzMsMTIgKzMzMSwxMSBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgfQogI2VuZGlmCiAKLSNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRF
UikKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoSW5zdHJ1Y3Rpb24qIHJldHVybkFk
ZHJlc3MpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChyZXR1cm5BZGRyZXNzID49IGlu
c3RydWN0aW9ucygpLmJlZ2luKCkgJiYgcmV0dXJuQWRkcmVzcyA8IGluc3RydWN0aW9ucygpLmVu
ZCgpKTsKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnN0cnVjdGlvbio+KHJldHVy
bkFkZHJlc3MpIC0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKTsKICAgICAgICAgfQotI2VuZGlmCiAK
ICAgICAgICAgdm9pZCBzZXRJc051bWVyaWNDb21wYXJlRnVuY3Rpb24oYm9vbCBpc051bWVyaWND
b21wYXJlRnVuY3Rpb24pIHsgbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb24gPSBpc051bWVyaWND
b21wYXJlRnVuY3Rpb247IH0KICAgICAgICAgYm9vbCBpc051bWVyaWNDb21wYXJlRnVuY3Rpb24o
KSB7IHJldHVybiBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQpAQCAtMzc2LDYgKzM3Mywx
NSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhlY3V0YWJsZU1lbW9yeUhhbmRsZSogZXhl
Y3V0YWJsZU1lbW9yeSgpIHsgcmV0dXJuIGdldEpJVENvZGUoKS5nZXRFeGVjdXRhYmxlTWVtb3J5
KCk7IH0KICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3Rh
dGUqLCBTY29wZUNoYWluTm9kZSopID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29u
KCkgPSAwOworICAgICAgICBib29sIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09
IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBqaXRDb21waWxlSW1wbChnbG9iYWxEYXRhKTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgQ29kZUJs
b2NrKiByZXBsYWNlbWVudCgpID0gMDsKIAogICAgICAgICBlbnVtIENvbXBpbGVXaXRoREZHU3Rh
dGUgewpAQCAtMzk1LDEzICs0MDEsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9v
bCBoYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VS
VChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNT
RVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAg
Ym9vbCByZXN1bHQgPSByZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPiBnZXRKSVRUeXBlKCk7
CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAg
ICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkRG
R0pJVCk7CiAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFj
ZW1lbnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAg
ICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUocmVwbGFjZW1lbnQoKS0+Z2V0
SklUVHlwZSgpKSk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCkgPT0gdGhp
cyk7CiAgICAgICAgICAgICB9CiAjZW5kaWYKQEAgLTQ2MCwxOCArNDY2LDIxIEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgICAgIHZvaWQgY2xlYXJFdmFsQ2FjaGUoKTsKIAotI2lmIEVOQUJMRShD
TEFTU0lDX0lOVEVSUFJFVEVSKQogICAgICAgICB2b2lkIGFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb24odW5zaWduZWQgcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbikKICAgICAgICAgewotICAg
ICAgICAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAg
IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuYXBwZW5kKHByb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb24pOworICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5hcHBlbmQo
cHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbik7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCBhZGRH
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24odW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9u
KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkp
Ci0gICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9i
YWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAg
ICAgIGJvb2wgaGFzR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uQXRCeXRlY29kZU9mZnNldCh1bnNp
Z25lZCBieXRlY29kZU9mZnNldCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBMTEludENh
bGxMaW5rSW5mbyogYWRkTExJbnRDYWxsTGlua0luZm8oKQorICAgICAgICB7CisgICAgICAgICAg
ICBtX2xsaW50Q2FsbExpbmtJbmZvcy5hcHBlbmQoTExJbnRDYWxsTGlua0luZm8oKSk7CisgICAg
ICAgICAgICByZXR1cm4gJm1fbGxpbnRDYWxsTGlua0luZm9zLmxhc3QoKTsKKyAgICAgICAgfQog
I2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBzZXROdW1iZXJPZlN0cnVjdHVy
ZVN0dWJJbmZvcyhzaXplX3Qgc2l6ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZvcy5ncm93KHNpemUp
OyB9CkBAIC00ODAsOCArNDg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBh
ZGRHbG9iYWxSZXNvbHZlSW5mbyh1bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAg
ICAgICAgIHsKLSAgICAgICAgICAgIGlmIChtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAg
ICAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9iYWxSZXNvbHZlSW5m
byhnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKKyAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2
ZUluZm9zLmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24p
KTsKICAgICAgICAgfQogICAgICAgICBHbG9iYWxSZXNvbHZlSW5mbyYgZ2xvYmFsUmVzb2x2ZUlu
Zm8oaW50IGluZGV4KSB7IHJldHVybiBtX2dsb2JhbFJlc29sdmVJbmZvc1tpbmRleF07IH0KICAg
ICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQg
Ynl0ZWNvZGVPZmZzZXQpOwpAQCAtNDkyLDYgKzUwMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIHZvaWQgYWRkTWV0aG9kQ2FsbExpbmtJbmZvcyh1bnNpZ25lZCBuKSB7IEFTU0VSVCht
X2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKTsgbV9tZXRob2RDYWxsTGlua0luZm9zLmdyb3cobik7
IH0KICAgICAgICAgTWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RDYWxsTGlua0luZm8oaW50IGlu
ZGV4KSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5mb3NbaW5kZXhdOyB9CisgICAgICAgIHNp
emVfdCBudW1iZXJPZk1ldGhvZENhbGxMaW5rSW5mb3MoKSB7IHJldHVybiBtX21ldGhvZENhbGxM
aW5rSW5mb3Muc2l6ZSgpOyB9CiAjZW5kaWYKICAgICAgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BS
T0ZJTEVSKQpAQCAtNTMzLDYgKzU0MiwxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKSkgLSAxXS51
LnByb2ZpbGUgPT0gcmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAg
IH0KKyAgICAgICAgUHJlZGljdGVkVHlwZSB2YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNv
ZGVPZmZzZXQoaW50IGJ5dGVjb2RlT2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gdmFsdWVQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5jb21wdXRl
VXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdW5zaWdu
ZWQgdG90YWxOdW1iZXJPZlZhbHVlUHJvZmlsZXMoKQogICAgICAgICB7CkBAIC01NTksMTIgKzU3
MiwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9U
YWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1
cm4gdmFsdWUgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYg
c3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0
aW9uczo6bGlrZWx5VG9UYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAgICAg
CiAgICAgICAgIGJvb2wgY291bGRUYWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0g
cmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50
ZXI7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9uczo6Y291bGRUYWtlU2xvd0Nh
c2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlv
bkVudHJ5Q291bnQgPj0gT3B0aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAg
ICAgIH0KQEAgLTU4MywxMiArNjAwLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAg
ICAgICAgYm9vbCBsaWtlbHlUb1Rha2VTcGVjaWFsRmFzdENhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0
KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygp
KQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHNw
ZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgcmV0dXJuIHNwZWNp
YWxGYXN0Q2FzZUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNv
dW50ICYmIHN0YXRpY19jYXN0PGRvdWJsZT4oc3BlY2lhbEZhc3RDYXNlQ291bnQpIC8gbV9leGVj
dXRpb25FbnRyeUNvdW50ID49IE9wdGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xk
OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZURlZXBlc3RT
bG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICgh
bnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgdW5zaWduZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZv
ckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAg
dW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9y
Qnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1
bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291bnQgLSBzcGVjaWFsRmFzdENhc2VDb3VudDsKQEAg
LTU5Nyw2ICs2MTgsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wg
bGlrZWx5VG9UYWtlQW55U2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7Cisg
ICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHNsb3dDYXNlQ291bnQgPSBy
YXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRl
cjsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZh
c3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVy
OwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSBzbG93Q2FzZUNvdW50ICsgc3BlY2lhbEZh
c3RDYXNlQ291bnQ7CkBAIC02OTQsNyArNzE3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IAogICAgICAgICBib29sIGFkZEZyZXF1ZW50RXhpdFNpdGUoY29uc3QgREZHOjpGcmVxdWVudEV4
aXRTaXRlJiBzaXRlKQogICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgp
ID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjpp
c0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBtX2V4aXRQ
cm9maWxlLmFkZChzaXRlKTsKICAgICAgICAgfQogCkBAIC04MDIsNiArODI1LDI5IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbShDb2RlQmxvY2sq
IGFsdGVybmF0aXZlKTsKICAgICAgICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5h
dGl2ZSgpOwogICAgICAgICAKKyAgICAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3
aGVuIEpJVHRpbmcga2lja3MgaW4sIGluIGEgbWl4ZWQgbW9kZQorICAgICAgICAvLyBleGVjdXRp
b24gd29ybGQuCisgICAgICAgIAorICAgICAgICB2b2lkIGRvbnRKSVRBbnl0aW1lU29vbigpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgdm9pZCBqaXRBZnRlcldhcm1VcCgpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvckpJVEFmdGVyV2FybVVwOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGpp
dFNvb24oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBP
cHRpb25zOjpleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBpbnQzMl90IGxsaW50RXhlY3V0ZUNvdW50ZXIoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICB9
CisgICAgICAgIAogICAgICAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gdGll
cmVkIGNvbXBpbGF0aW9uIGtpY2tzIGluLiBUaGlzCiAgICAgICAgIC8vIGNvbnRyb2xzIGJvdGgg
d2hlbiB0aGUgb3B0aW1pemluZyBjb21waWxlciBpcyBpbnZva2VkIGFuZCB3aGVuIE9TUgogICAg
ICAgICAvLyBlbnRyeSBoYXBwZW5zLiBUd28gdHJpZ2dlcnMgZXhpc3Q6IHRoZSBsb29wIHRyaWdn
ZXIgYW5kIHRoZSByZXR1cm4KQEAgLTk5NCw2ICsxMDQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGJvb2wgbV9zaG91bGREaXNjYXJkQnl0ZWNvZGU7CiAKICAgICBwcm90ZWN0ZWQ6Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKSA9IDA7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCB2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBmaW5hbGl6ZVVuY29uZGl0aW9uYWxseSgpOwogICAgICAgICAK
QEAgLTEwNzUsOSArMTEyMiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVmUHRyPFNv
dXJjZVByb3ZpZGVyPiBtX3NvdXJjZTsKICAgICAgICAgdW5zaWduZWQgbV9zb3VyY2VPZmZzZXQ7
CiAKLSNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICAgICAgVmVjdG9yPHVuc2ln
bmVkPiBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zOwogICAgICAgICBWZWN0b3I8dW5zaWdu
ZWQ+IG1fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uczsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAg
ICAgIFNlZ21lbnRlZFZlY3RvcjxMTEludENhbGxMaW5rSW5mbywgOD4gbV9sbGludENhbGxMaW5r
SW5mb3M7CisgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxMTEludENhbGxMaW5rSW5mbywgQmFz
aWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0xMSW50Q2Fs
bHM7CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBWZWN0b3I8U3RydWN0dXJlU3R1
YkluZm8+IG1fc3RydWN0dXJlU3R1YkluZm9zOwpAQCAtMTA4OCw5ICsxMTM3LDEwIEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbV9qaXRDb2RlV2l0aEFy
aXR5Q2hlY2s7CiAgICAgICAgIFNlbnRpbmVsTGlua2VkTGlzdDxDYWxsTGlua0luZm8sIEJhc2lj
UmF3U2VudGluZWxOb2RlPENhbGxMaW5rSW5mbz4gPiBtX2luY29taW5nQ2FsbHM7CiAjZW5kaWYK
LSNpZiBFTkFCTEUoREZHX0pJVCkKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5U
KQogICAgICAgICBPd25QdHI8Q29tcGFjdEpJVENvZGVNYXA+IG1faml0Q29kZU1hcDsKLSAgICAg
ICAgCisjZW5kaWYKKyNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgc3RydWN0IFdlYWtSZWZl
cmVuY2VUcmFuc2l0aW9uIHsKICAgICAgICAgICAgIFdlYWtSZWZlcmVuY2VUcmFuc2l0aW9uKCkg
eyB9CiAgICAgICAgICAgICAKQEAgLTExNTMsMTIgKzEyMDMsMTQgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgT3duUHRyPENvZGVCbG9jaz4gbV9hbHRlcm5hdGl2ZTsKICAgICAgICAgCisg
ICAgICAgIGludDMyX3QgbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICAKICAgICAgICAg
aW50MzJfdCBtX2ppdEV4ZWN1dGVDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0
aXZlU3VjY2Vzc0NvdW50ZXI7CiAgICAgICAgIHVpbnQzMl90IG1fc3BlY3VsYXRpdmVGYWlsQ291
bnRlcjsKICAgICAgICAgdWludDhfdCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcjsKICAgICAg
ICAgdWludDhfdCBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyOwotCisgICAgICAgIAogICAg
ICAgICBzdHJ1Y3QgUmFyZURhdGEgewogICAgICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKICAgICAgICAgcHVibGljOgpAQCAtMTIzNCw2ICsxMjg2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1p
emVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBq
ZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxE
YXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkdJbnRlcm5hbCgpOwogI2VuZGlmCkBAIC0x
MjY4LDYgKzEzMjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAg
IHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFp
bk5vZGUqKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVhbCBD
b2RlQmxvY2sqIHJlcGxhY2VtZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxl
V2l0aERGR0ludGVybmFsKCk7CiAjZW5kaWYKQEAgLTEzMDUsNiArMTM1OSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGls
ZU9wdGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpT
R2xvYmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsK
ICAgICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHSW50ZXJuYWwoKTsKICNlbmRp
ZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3Rh
dHVzLmNwcAkocmV2aXNpb24gMTA4MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldEJ5SWRTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywyMCArMjcsNDkgQEAK
ICNpbmNsdWRlICJHZXRCeUlkU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNp
bmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitHZXRC
eUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9m
aWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKK3sK
KyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVj
b2RlSW5kZXgpOworICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CisjaWYgRU5BQkxFKExMSU5UKQor
ICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworICAgIAorICAgIGlmIChpbnN0cnVjdGlvblsw
XS51Lm9wY29kZSA9PSBsbGludF9vcF9tZXRob2RfY2hlY2spCisgICAgICAgIGluc3RydWN0aW9u
Kys7CisKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IGluc3RydWN0aW9uWzRdLnUuc3RydWN0
dXJlLmdldCgpOworICAgIGlmICghc3RydWN0dXJlKQorICAgICAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKKyAg
ICAKKyAgICBzaXplX3Qgb2Zmc2V0ID0gc3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmds
b2JhbERhdGEoKSwgaWRlbnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAg
IHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RG
b3VuZCwgZmFsc2UpOworICAgIAorICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFNpbXBsZURpcmVj
dCwgU3RydWN0dXJlU2V0KHN0cnVjdHVyZSksIG9mZnNldCwgZmFsc2UpOworI2Vsc2UKKyAgICBy
ZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91
bmQsIGZhbHNlKTsKKyNlbmRpZgorfQorCiBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNv
bXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4
LCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7
CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVu
dCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICgh
cHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZTdHJ1Y3R1cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0
dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQp
OworICAgIAogICAgIC8vIEZpcnN0IGNoZWNrIGlmIGl0IG1ha2VzIGVpdGhlciBjYWxscywgaW4g
d2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJlIHN1cGVyIGNhcmVmdWwsIG9yCiAgICAgLy8gaWYgaXQn
cyBub3Qgc2V0IGF0IGFsbCwgaW4gd2hpY2ggY2FzZSB3ZSBwdW50LgogICAgIFN0cnVjdHVyZVN0
dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJbmZvKGJ5dGVjb2RlSW5k
ZXgpOwogICAgIGlmICghc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0
dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0
dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQp
OwogICAgIAogICAgIFBvbHltb3JwaGljQWNjZXNzU3RydWN0dXJlTGlzdCogbGlzdDsKICAgICBp
bnQgbGlzdFNpemU7CkBAIC02MCwxOCArODksMTkgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3Rh
dHVzOjpjb21wdXRlRm9yKAogICAgIH0KICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpc3RTaXpl
OyArK2kpIHsKICAgICAgICAgaWYgKCFsaXN0LT5saXN0W2ldLmlzRGlyZWN0KQotICAgICAgICAg
ICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTWFrZXNDYWxscywgU3RydWN0dXJlU2V0KCksIG5vdEZv
dW5kKTsKKyAgICAgICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVj
dHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7CiAgICAgfQogICAgIAogICAgIC8vIE5leHQgY2hl
Y2sgaWYgaXQgdGFrZXMgc2xvdyBjYXNlLCBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUga2lu
ZCBvZiBjYXJlZnVsLgogICAgIGlmIChwcm9maWxlZEJsb2NrLT5saWtlbHlUb1Rha2VTbG93Q2Fz
ZShieXRlY29kZUluZGV4KSkKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoVGFrZXNTbG93
UGF0aCwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRT
dGF0dXMoVGFrZXNTbG93UGF0aCwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsKICAg
ICAKICAgICAvLyBGaW5hbGx5IGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGRlcml2ZSBhbiBhY2Nlc3Mg
c3RyYXRlZ3kuCiAgICAgR2V0QnlJZFN0YXR1cyByZXN1bHQ7CisgICAgcmVzdWx0Lm1fd2FzU2Vl
bkluSklUID0gdHJ1ZTsKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICBj
YXNlIGFjY2Vzc191bnNldDoKLSAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1h
dGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVG
cm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAK
ICAgICBjYXNlIGFjY2Vzc19nZXRfYnlfaWRfc2VsZjogewogICAgICAgICBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSA9IHN0dWJJbmZvLnUuZ2V0QnlJZFNlbGYuYmFzZU9iamVjdFN0cnVjdHVyZS5nZXQo
KTsKQEAgLTEzMCw3ICsxNjAsNyBAQCBHZXRCeUlkU3RhdHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1
dGVGb3IoCiAgICAgCiAgICAgcmV0dXJuIHJlc3VsdDsKICNlbHNlIC8vIEVOQUJMRShKSVQpCi0g
ICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5v
dEZvdW5kKTsKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1
cmVTZXQoKSwgbm90Rm91bmQsIGZhbHNlKTsKICNlbmRpZiAvLyBFTkFCTEUoSklUKQogfQogCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVzLmgJ
KHJldmlzaW9uIDEwODE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRC
eUlkU3RhdHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDEwICs0OSwxMSBAQCBwdWJsaWM6CiAg
ICAgewogICAgIH0KICAgICAKLSAgICBHZXRCeUlkU3RhdHVzKFN0YXRlIHN0YXRlLCBjb25zdCBT
dHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6ZV90IG9mZnNldCkKKyAgICBHZXRCeUlkU3Rh
dHVzKFN0YXRlIHN0YXRlLCBjb25zdCBTdHJ1Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCwgc2l6ZV90
IG9mZnNldCwgYm9vbCB3YXNTZWVuSW5KSVQpCiAgICAgICAgIDogbV9zdGF0ZShzdGF0ZSkKICAg
ICAgICAgLCBtX3N0cnVjdHVyZVNldChzdHJ1Y3R1cmVTZXQpCiAgICAgICAgICwgbV9vZmZzZXQo
b2Zmc2V0KQorICAgICAgICAsIG1fd2FzU2VlbkluSklUKHdhc1NlZW5JbkpJVCkKICAgICB7CiAg
ICAgICAgIEFTU0VSVCgoc3RhdGUgPT0gU2ltcGxlRGlyZWN0KSA9PSAob2Zmc2V0ICE9IG5vdEZv
dW5kKSk7CiAgICAgfQpAQCAtNzAsMTAgKzcxLDE1IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJ1
Y3R1cmVTZXQmIHN0cnVjdHVyZVNldCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RydWN0dXJlU2V0OyB9
CiAgICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCisg
ICAgYm9vbCB3YXNTZWVuSW5KSVQoKSBjb25zdCB7IHJldHVybiBtX3dhc1NlZW5JbkpJVDsgfQor
ICAgIAogcHJpdmF0ZToKKyAgICBzdGF0aWMgR2V0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50
KENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAK
ICAgICBTdGF0ZSBtX3N0YXRlOwogICAgIFN0cnVjdHVyZVNldCBtX3N0cnVjdHVyZVNldDsKICAg
ICBzaXplX3QgbV9vZmZzZXQ7CisgICAgYm9vbCBtX3dhc1NlZW5JbkpJVDsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3Ry
dWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0lu
c3RydWN0aW9uLmgJKHJldmlzaW9uIDEwODE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9JbnN0cnVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTQ2VsbDsKICAgICBjbGFzcyBTdHJ1Y3R1cmU7CiAg
ICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CisgICAgc3RydWN0IExMSW50Q2FsbExpbmtJbmZvOwog
ICAgIHN0cnVjdCBWYWx1ZVByb2ZpbGU7CiAKICNpZiBFTkFCTEUoSklUKQpAQCAtMTQ2LDYgKzE0
NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICNlbmRpZgogCiAgICAgc3RydWN0IEluc3RydWN0aW9u
IHsKKyAgICAgICAgSW5zdHJ1Y3Rpb24oKQorICAgICAgICB7CisgICAgICAgICAgICB1LmpzQ2Vs
bC5jbGVhcigpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihPcGNv
ZGUgb3Bjb2RlKQogICAgICAgICB7CiAjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNf
SU5URVJQUkVURVIpCkBAIC0xODIsNiArMTg4LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAg
ICAgSW5zdHJ1Y3Rpb24oUHJvcGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYykgeyB1
LmdldHRlckZ1bmMgPSBnZXR0ZXJGdW5jOyB9CiAgICAgICAgIAorICAgICAgICBJbnN0cnVjdGlv
bihMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvKSB7IHUuY2FsbExpbmtJbmZvID0gY2Fs
bExpbmtJbmZvOyB9CisgICAgICAgIAogICAgICAgICBJbnN0cnVjdGlvbihWYWx1ZVByb2ZpbGUq
IHByb2ZpbGUpIHsgdS5wcm9maWxlID0gcHJvZmlsZTsgfQogCiAgICAgICAgIHVuaW9uIHsKQEAg
LTE5MSw3ICsxOTksOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIFdyaXRlQmFycmll
ckJhc2U8U3RydWN0dXJlQ2hhaW4+IHN0cnVjdHVyZUNoYWluOwogICAgICAgICAgICAgV3JpdGVC
YXJyaWVyQmFzZTxKU0NlbGw+IGpzQ2VsbDsKICAgICAgICAgICAgIFByb3BlcnR5U2xvdDo6R2V0
VmFsdWVGdW5jIGdldHRlckZ1bmM7CisgICAgICAgICAgICBMTEludENhbGxMaW5rSW5mbyogY2Fs
bExpbmtJbmZvOwogICAgICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlOworICAgICAgICAg
ICAgdm9pZCogcG9pbnRlcjsKICAgICAgICAgfSB1OwogICAgICAgICAKICAgICBwcml2YXRlOgpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xMSW50Q2FsbExp
bmtJbmZvLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50Q2Fs
bExpbmtJbmZvX2gKKyNkZWZpbmUgTExJbnRDYWxsTGlua0luZm9faAorCisjaW5jbHVkZSAiSlNG
dW5jdGlvbi5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorI2luY2x1ZGUg
PHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK3N0cnVjdCBJ
bnN0cnVjdGlvbjsKKworc3RydWN0IExMSW50Q2FsbExpbmtJbmZvIDogcHVibGljIEJhc2ljUmF3
U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiB7CisgICAgTExJbnRDYWxsTGlua0luZm8o
KQorICAgIHsKKyAgICB9CisgICAgCisgICAgfkxMSW50Q2FsbExpbmtJbmZvKCkKKyAgICB7Cisg
ICAgICAgIGlmIChpc09uTGlzdCgpKQorICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgfQorICAg
IAorICAgIGJvb2wgaXNMaW5rZWQoKSB7IHJldHVybiBjYWxsZWU7IH0KKyAgICAKKyAgICB2b2lk
IHVubGluaygpCisgICAgeworICAgICAgICBjYWxsZWUuY2xlYXIoKTsKKyAgICAgICAgbWFjaGlu
ZUNvZGVUYXJnZXQgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKTsKKyAgICAgICAgaWYgKGlzT25M
aXN0KCkpCisgICAgICAgICAgICByZW1vdmUoKTsKKyAgICB9CisgICAgCisgICAgV3JpdGVCYXJy
aWVyPEpTRnVuY3Rpb24+IGNhbGxlZTsKKyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbGFz
dFNlZW5DYWxsZWU7CisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1hY2hpbmVDb2RlVGFyZ2V0
OworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBMTEludENhbGxMaW5rSW5m
b19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlu
a1N0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAkocmV2aXNpb24gMTA4MTY0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzUsNiArMzUsMTEgQEAgTWV0aG9kQ2FsbExpbmtTdGF0dXMgTWV0aG9kQ2FsbExp
bmtTdGF0dQogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFS
QU0oYnl0ZWNvZGVJbmRleCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxFKFZBTFVFX1BST0ZJ
TEVSKQorICAgIC8vIE5PVEU6IFRoaXMgZG9lcyBub3QgaGF2ZSBhbiBMTEludCBmYWxsLWJhY2sg
YmVjYXVzZSBMTEludCBkb2VzIG5vdCBkbyBhbnkgbWV0aG9kCisgICAgLy8gY2FsbCBsaW5rIGNh
Y2hpbmcuCisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1iZXJPZk1ldGhvZENhbGxMaW5rSW5m
b3MoKSkKKyAgICAgICAgcmV0dXJuIE1ldGhvZENhbGxMaW5rU3RhdHVzKCk7CisgICAgCiAgICAg
TWV0aG9kQ2FsbExpbmtJbmZvJiBtZXRob2RDYWxsID0gcHJvZmlsZWRCbG9jay0+Z2V0TWV0aG9k
Q2FsbExpbmtJbmZvKGJ5dGVjb2RlSW5kZXgpOwogICAgIAogICAgIGlmICghbWV0aG9kQ2FsbC5z
ZWVuIHx8ICFtZXRob2RDYWxsLmNhY2hlZFN0cnVjdHVyZSkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmgJKHJldmlzaW9uIDEwODE2NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEy
Myw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBtYWNybyhvcF9nZXRfYXJndW1lbnRzX2xl
bmd0aCwgNCkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWQsIDkpIFwKICAgICAgICAgbWFj
cm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24sIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5
X2lkX3RyYW5zaXRpb25fZGlyZWN0LCA5KSBcCisgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbCwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfcmVwbGFj
ZSwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfZ2VuZXJpYywgOSkgXAogICAgICAg
ICBtYWNybyhvcF9kZWxfYnlfaWQsIDQpIFwKQEAgLTIwMSw2ICsyMDMsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdHlwZWRlZiBlbnVtIHsgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9J
RF9FTlVNKSB9IE9wY29kZUlEOwogICAgICN1bmRlZiBPUENPREVfSURfRU5VTQogCisgICAgY29u
c3QgaW50IG1heE9wY29kZUxlbmd0aCA9IDk7CiAgICAgY29uc3QgaW50IG51bU9wY29kZUlEcyA9
IG9wX2VuZCArIDE7CiAKICAgICAjZGVmaW5lIE9QQ09ERV9JRF9MRU5HVEhTKGlkLCBsZW5ndGgp
IGNvbnN0IGludCBpZCMjX2xlbmd0aCA9IGxlbmd0aDsKQEAgLTIxNyw3ICsyMjAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKFZFUklGWV9PUENPREVfSUQp
OwogICAgICN1bmRlZiBWRVJJRllfT1BDT0RFX0lECiAKLSNpZiBFTkFCTEUoQ09NUFVURURfR09U
T19DTEFTU0lDX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNf
SU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKICNpZiBDT01QSUxFUihSVkNUKSB8fCBDT01Q
SUxFUihJTlRFTCkKICAgICB0eXBlZGVmIHZvaWQqIE9wY29kZTsKICNlbHNlCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuY3BwCShyZXZp
c2lvbiAxMDgxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDI3ICsyNyw2OSBAQAogI2luY2x1ZGUgIlB1
dEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkxvd0xl
dmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKICNpbmNsdWRlICJTdHJ1
Y3R1cmVDaGFpbi5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorUHV0QnlJZFN0YXR1cyBQdXRCeUlk
U3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgVU5VU0VEX1BBUkFN
KHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKKyAgICBV
TlVTRURfUEFSQU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0
ZWNvZGVJbmRleDsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25bNF0u
dS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUpCisgICAgICAgIHJldHVybiBQ
dXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAKKyAg
ICBpZiAoaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfcHV0X2J5X2lkKSB7Cisg
ICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xv
YmFsRGF0YSgpLCBpZGVudCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAg
ICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RG
b3VuZCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVSZXBs
YWNlLCBzdHJ1Y3R1cmUsIDAsIDAsIG9mZnNldCk7CisgICAgfQorICAgIAorICAgIEFTU0VSVChp
bnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9k
aXJlY3QKKyAgICAgICAgICAgfHwgaW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3Bf
cHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKTsKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIG5ld1N0
cnVjdHVyZSA9IGluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdldCgpOworICAgIFN0cnVjdHVy
ZUNoYWluKiBjaGFpbiA9IGluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCk7Cisg
ICAgQVNTRVJUKG5ld1N0cnVjdHVyZSk7CisgICAgQVNTRVJUKGNoYWluKTsKKyAgICAKKyAgICBz
aXplX3Qgb2Zmc2V0ID0gbmV3U3RydWN0dXJlLT5nZXQoKnByb2ZpbGVkQmxvY2stPmdsb2JhbERh
dGEoKSwgaWRlbnQpOworICAgIGlmIChvZmZzZXQgPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVy
biBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAK
KyAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhTaW1wbGVUcmFuc2l0aW9uLCBzdHJ1Y3R1cmUsIG5l
d1N0cnVjdHVyZSwgY2hhaW4sIG9mZnNldCk7CisjZWxzZQorICAgIHJldHVybiBQdXRCeUlkU3Rh
dHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyNlbmRpZgorfQorCiBQdXRC
eUlkU3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoQ29kZUJsb2NrKiBwcm9maWxlZEJs
b2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKIHsKICAgICBV
TlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5k
ZXgpOwogICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CiAjaWYgRU5BQkxFKEpJVCkgJiYgRU5BQkxF
KFZBTFVFX1BST0ZJTEVSKQorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZTdHJ1Y3R1
cmVTdHViSW5mb3MoKSkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQocHJvZmlsZWRC
bG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOworICAgIAogICAgIGlmIChwcm9maWxlZEJsb2Nr
LT5saWtlbHlUb1Rha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKICAgICAgICAgcmV0dXJuIFB1
dEJ5SWRTdGF0dXMoVGFrZXNTbG93UGF0aCwgMCwgMCwgMCwgbm90Rm91bmQpOwogICAgIAogICAg
IFN0cnVjdHVyZVN0dWJJbmZvJiBzdHViSW5mbyA9IHByb2ZpbGVkQmxvY2stPmdldFN0dWJJbmZv
KGJ5dGVjb2RlSW5kZXgpOwogICAgIGlmICghc3R1YkluZm8uc2VlbikKLSAgICAgICAgcmV0dXJu
IFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAg
ICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBp
ZGVudCk7CiAgICAgCiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAgICAgY2Fz
ZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRp
b24sIDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVGcm9tTExJbnQo
cHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCwgaWRlbnQpOwogICAgICAgICAKICAgICBjYXNl
IGFjY2Vzc19wdXRfYnlfaWRfcmVwbGFjZTogewogICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gc3R1
YkluZm8udS5wdXRCeUlkUmVwbGFjZS5iYXNlT2JqZWN0U3RydWN0dXJlLT5nZXQoCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgJKHJldmlz
aW9uIDEwODE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDYgKzkzLDggQEAgcHVibGljOgogICAgIHNpemVf
dCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAgIAogcHJpdmF0ZToKKyAg
ICBzdGF0aWMgUHV0QnlJZFN0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImKTsKKyAgICAKICAgICBTdGF0ZSBtX3N0YXRl
OwogICAgIFN0cnVjdHVyZSogbV9vbGRTdHJ1Y3R1cmU7CiAgICAgU3RydWN0dXJlKiBtX25ld1N0
cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgog
I2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2luY2x1
ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJTY29wZUNoYWluLmgiCiAjaW5j
bHVkZSAiU3Ryb25nSW5saW5lcy5oIgogI2luY2x1ZGUgIlVTdHJpbmcuaCIKQEAgLTEyNzgsOSAr
MTI3OSw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICNpZiBF
TkFCTEUoSklUKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluZm8oaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKICNlbmRpZgotI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJF
VEVSKQogICAgICAgICBtX2NvZGVCbG9jay0+YWRkR2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKGlu
c3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICAgICAgYm9vbCBkeW5hbWljID0gcmVz
b2x2ZVJlc3VsdC5pc0R5bmFtaWMoKSAmJiByZXNvbHZlUmVzdWx0LmRlcHRoKCk7CiAgICAgICAg
IFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShkeW5hbWljID8gb3Bf
cmVzb2x2ZV9nbG9iYWxfZHluYW1pYyA6IG9wX3Jlc29sdmVfZ2xvYmFsKTsKICAgICAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+aW5kZXgoKSk7CkBAIC0xMzg0LDkgKzEzODMsNiBAQCBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFJlc29sCiAgICAgICAgIHJldHVybiBi
YXNlRHN0OwogICAgIH0KIAotCi0KLQogICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQ
cm9maWxlZE9wY29kZShvcF9yZXNvbHZlX3dpdGhfYmFzZSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGJhc2VEc3QtPmluZGV4KCkpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChwcm9w
RHN0LT5pbmRleCgpKTsKQEAgLTE0OTQsOSArMTQ5MCw3IEBAIHZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmVtaXRNZXRob2RDaGVjaygKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRHZXRCeUlkKFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgY29uc3QgSWRlbnRp
ZmllciYgcHJvcGVydHkpCiB7Ci0jaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiAgICAg
bV9jb2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpKTsKLSNlbmRpZgogCiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2Zp
bGVkT3Bjb2RlKG9wX2dldF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGRzdC0+
aW5kZXgoKSk7CkBAIC0xNTIyLDkgKzE1MTYsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdEdldEFyCiAKIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0
QnlJZChSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSwgUmVnaXN0
ZXJJRCogdmFsdWUpCiB7Ci0jaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgbV9j
b2RlQmxvY2stPmFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6
ZSgpKTsKLSNlbmRpZgogCiAgICAgZW1pdE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3Ry
dWN0aW9ucygpLmFwcGVuZChiYXNlLT5pbmRleCgpKTsKQEAgLTE1NDAsOSArMTUzMiw3IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UHV0QnkKIAogUmVnaXN0ZXJJRCogQnl0
ZWNvZGVHZW5lcmF0b3I6OmVtaXREaXJlY3RQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUo
Q0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJ
bnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAgICAgCiAgICAgZW1p
dE9wY29kZShvcF9wdXRfYnlfaWQpOwogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChiYXNlLT5p
bmRleCgpKTsKQEAgLTE4MjMsNyArMTgxMywxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVy
YXRvcjo6ZW1pdENhbGwoCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkp
OyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGNhbGxBcmd1bWVudHMucmVnaXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0
CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9j
ay0+YWRkTExJbnRDYWxsTGlua0luZm8oKSk7CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZCgwKTsKKyNlbmRpZgogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAo
ZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkgewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUg
PSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfY2FsbF9wdXRfcmVzdWx0KTsKQEAgLTE5MjcsNyArMTky
MSwxMSBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdENvbnN0CiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKGZ1bmMtPmluZGV4KCkpOyAvLyBmdW5jCiAgICAgaW5zdHJ1Y3Rp
b25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMuYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSk7
IC8vIGFyZ0NvdW50CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGNhbGxBcmd1bWVudHMucmVn
aXN0ZXJPZmZzZXQoKSk7IC8vIHJlZ2lzdGVyT2Zmc2V0CisjaWYgRU5BQkxFKExMSU5UKQorICAg
IGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NvZGVCbG9jay0+YWRkTExJbnRDYWxsTGlua0luZm8o
KSk7CisjZWxzZQogICAgIGluc3RydWN0aW9ucygpLmFwcGVuZCgwKTsKKyNlbmRpZgogICAgIGlu
c3RydWN0aW9ucygpLmFwcGVuZCgwKTsKICAgICBpZiAoZHN0ICE9IGlnbm9yZWRSZXN1bHQoKSkg
ewogICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3Bf
Y2FsbF9wdXRfcmVzdWx0KTsKQEAgLTIxODgsNyArMjE4NiwxMSBAQCBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdENhdGNoCiB7CiAgICAgbV91c2VzRXhjZXB0aW9ucyA9IHRydWU7
CiAjaWYgRU5BQkxFKEpJVCkKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSGFuZGxlckluZm8gaW5m
byA9IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rpb25zKCku
c2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCwgQ29kZUxvY2F0
aW9uTGFiZWwoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFkZHJl
c3MoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfY2F0Y2gpKSkgfTsKKyNlbHNlCiAgICAg
SGFuZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwg
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVE
ZXB0aCwgQ29kZUxvY2F0aW9uTGFiZWwoKSB9OworI2VuZGlmCiAjZWxzZQogICAgIEhhbmRsZXJJ
bmZvIGluZm8gPSB7IHN0YXJ0LT5iaW5kKDAsIDApLCBlbmQtPmJpbmQoMCwgMCksIGluc3RydWN0
aW9ucygpLnNpemUoKSwgbV9keW5hbWljU2NvcGVEZXB0aCArIG1fYmFzZVNjb3BlRGVwdGggfTsK
ICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNl
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29k
ZVBhcnNlci5jcHAJKHJldmlzaW9uIDEwODE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01ODUsOSArNTg1LDcg
QEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIFVOVVNFRF9QQVJBTShub2RlSW5kZXgpOwogICAg
ICAgICAKLSAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gbV9pbmxpbmVTdGFja1RvcC0+
bV9wcm9maWxlZEJsb2NrLT52YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZUlu
ZGV4KTsKLSAgICAgICAgQVNTRVJUKHByb2ZpbGUpOwotICAgICAgICBQcmVkaWN0ZWRUeXBlIHBy
ZWRpY3Rpb24gPSBwcm9maWxlLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsKKyAgICAgICAg
UHJlZGljdGVkVHlwZSBwcmVkaWN0aW9uID0gbV9pbmxpbmVTdGFja1RvcC0+bV9wcm9maWxlZEJs
b2NrLT52YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVJbmRl
eCk7CiAjaWYgREZHX0VOQUJMRShERUJVR19WRVJCT1NFKQogICAgICAgICBkYXRhTG9nKCJEeW5h
bWljIFtAJXUsIGJjIyV1XSBwcmVkaWN0aW9uOiAlc1xuIiwgbm9kZUluZGV4LCBieXRlY29kZUlu
ZGV4LCBwcmVkaWN0aW9uVG9TdHJpbmcocHJlZGljdGlvbikpOwogI2VuZGlmCkBAIC0xMDIyLDYg
KzEwMjAsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVJbmxpbmluZyhib29sCiAgICAg
CiAgICAgLy8gSWYgd2UgZ2V0IGhlcmUgdGhlbiBpdCBsb29rcyBsaWtlIHdlIHNob3VsZCBkZWZp
bml0ZWx5IGlubGluZSB0aGlzIGNvZGUuIFByb2NlZWQKICAgICAvLyB3aXRoIHBhcnNpbmcgdGhl
IGNvZGUgdG8gZ2V0IGJ5dGVjb2RlLCBzbyB0aGF0IHdlIGNhbiB0aGVuIHBhcnNlIHRoZSBieXRl
Y29kZS4KKyAgICAvLyBOb3RlIHRoYXQgaWYgTExJbnQgaXMgZW5hYmxlZCwgdGhlIGJ5dGVjb2Rl
IHdpbGwgYWx3YXlzIGJlIGF2YWlsYWJsZS4gQWxzbyBub3RlCisgICAgLy8gdGhhdCBpZiBMTElu
dCBpcyBlbmFibGVkLCB3ZSBtYXkgaW5saW5lIGEgY29kZSBibG9jayB0aGF0IGhhcyBuZXZlciBi
ZWVuIEpJVHRlZAorICAgIC8vIGJlZm9yZSEKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IG1f
Y29kZUJsb2NrQ2FjaGUuZ2V0KENvZGVCbG9ja0tleShleGVjdXRhYmxlLCBraW5kKSwgZXhwZWN0
ZWRGdW5jdGlvbi0+c2NvcGUoKSk7CiAgICAgaWYgKCFjb2RlQmxvY2spCiAgICAgICAgIHJldHVy
biBmYWxzZTsKQEAgLTE3MjIsNyArMTcyMyw3IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OnBhcnNl
QmxvY2sodW5zaWduZWQKICAgICAgICAgICAgICAgICBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2ssIG1fY3VycmVudEluZGV4KTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYg
KG1ldGhvZENhbGxTdGF0dXMuaXNTZXQoKQotICAgICAgICAgICAgICAgICYmICFnZXRCeUlkU3Rh
dHVzLmlzU2V0KCkKKyAgICAgICAgICAgICAgICAmJiAhZ2V0QnlJZFN0YXR1cy53YXNTZWVuSW5K
SVQoKQogICAgICAgICAgICAgICAgICYmICFtX2lubGluZVN0YWNrVG9wLT5tX2V4aXRQcm9maWxl
Lmhhc0V4aXRTaXRlKG1fY3VycmVudEluZGV4LCBCYWRDYWNoZSkpIHsKICAgICAgICAgICAgICAg
ICAvLyBJdCdzIG1vbm9tb3JwaGljIGFzIGZhciBhcyB3ZSBjYW4gdGVsbCwgc2luY2UgdGhlIG1l
dGhvZF9jaGVjayB3YXMgbGlua2VkCiAgICAgICAgICAgICAgICAgLy8gYnV0IHRoZSBzbG93IHBh
dGggKGkuZS4gdGhlIG5vcm1hbCBnZXRfYnlfaWQpIG5ldmVyIGZpcmVkLgpAQCAtMTc5MSw3ICsx
NzkyLDkgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogCiAgICAg
ICAgICAgICBORVhUX09QQ09ERShvcF9nZXRfYnlfaWQpOwogICAgICAgICB9Ci0gICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkOiB7CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICBj
YXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRf
YnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsKICAgICAgICAgICAgIE5vZGVJbmRleCB2YWx1ZSA9
IGdldChjdXJyZW50SW5zdHJ1Y3Rpb25bM10udS5vcGVyYW5kKTsKICAgICAgICAgICAgIE5vZGVJ
bmRleCBiYXNlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblsxXS51Lm9wZXJhbmQpOwogICAgICAg
ICAgICAgdW5zaWduZWQgaWRlbnRpZmllck51bWJlciA9IG1faW5saW5lU3RhY2tUb3AtPm1faWRl
bnRpZmllclJlbWFwW2N1cnJlbnRJbnN0cnVjdGlvblsyXS51Lm9wZXJhbmRdOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCShyZXZpc2lvbiAxMDgx
NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTEsNiArMTExLDggQEAgaW5saW5lIGJvb2wgY2FuQ29tcGlsZU9wY29k
ZShPcGNvZGVJRCBvcAogICAgIGNhc2Ugb3BfcHV0X3Njb3BlZF92YXI6CiAgICAgY2FzZSBvcF9n
ZXRfYnlfaWQ6CiAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRf
dHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWw6CiAgICAgY2FzZSBvcF9nZXRfZ2xvYmFsX3ZhcjoKICAgICBjYXNlIG9wX3B1dF9nbG9iYWxf
dmFyOgogICAgIGNhc2Ugb3Bfam1wOgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFeGl0Q29tcGlsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyLmNwcAkocmV2aXNpb24gMTA4MTY0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00OCw2ICs0OCwyMSBAQCB2b2lkIGNvbXBpbGVPU1JFeGl0KEV4ZWNTdGF0ZSogZXhlYykK
ICAgICB1aW50MzJfdCBleGl0SW5kZXggPSBnbG9iYWxEYXRhLT5vc3JFeGl0SW5kZXg7CiAgICAg
T1NSRXhpdCYgZXhpdCA9IGNvZGVCbG9jay0+b3NyRXhpdChleGl0SW5kZXgpOwogICAgIAorICAg
IC8vIE1ha2Ugc3VyZSBhbGwgY29kZSBvbiBvdXIgaW5saW5lIHN0YWNrIGlzIEpJVCBjb21waWxl
ZC4gVGhpcyBpcyBuZWNlc3Nhcnkgc2luY2UKKyAgICAvLyB3ZSBtYXkgb3B0IHRvIGlubGluZSBh
IGNvZGUgYmxvY2sgZXZlbiBiZWZvcmUgaXQgaGFkIGV2ZXIgYmVlbiBjb21waWxlZCBieSB0aGUK
KyAgICAvLyBKSVQsIGJ1dCBvdXIgT1NSIGV4aXQgaW5mcmFzdHJ1Y3R1cmUgY3VycmVudGx5IG9u
bHkgd29ya3MgaWYgdGhlIHRhcmdldCBvZiB0aGUKKyAgICAvLyBPU1IgZXhpdCBpcyBKSVQgY29k
ZS4gVGhpcyBjb3VsZCBiZSBjaGFuZ2VkIHNpbmNlIHRoZXJlIGlzIG5vdGhpbmcgcGFydGljdWxh
cmx5CisgICAgLy8gaGFyZCBhYm91dCBkb2luZyBhbiBPU1IgZXhpdCBpbnRvIHRoZSBpbnRlcnBy
ZXRlciwgYnV0IGZvciBub3cgdGhpcyBzZWVtcyB0byBtYWtlCisgICAgLy8gc2Vuc2UgaW4gdGhh
dCBpZiB3ZSdyZSBPU1IgZXhpdGluZyBmcm9tIGlubGluZWQgY29kZSBvZiBhIERGRyBjb2RlIGJs
b2NrLCB0aGVuCisgICAgLy8gcHJvYmFibHkgaXQncyBhIGdvb2Qgc2lnbiB0aGF0IHRoZSB0aGlu
ZyB3ZSdyZSBleGl0aW5nIGludG8gaXMgaG90LiBFdmVuIG1vcmUKKyAgICAvLyBpbnRlcmVzdGlu
Z2x5LCBzaW5jZSB0aGUgY29kZSB3YXMgaW5saW5lZCwgaXQgbWF5IG5ldmVyIG90aGVyd2lzZSBn
ZXQgSklUCisgICAgLy8gY29tcGlsZWQgc2luY2UgdGhlIGFjdCBvZiBpbmxpbmluZyBpdCBtYXkg
ZW5zdXJlIHRoYXQgaXQgb3RoZXJ3aXNlIG5ldmVyIHJ1bnMuCisgICAgZm9yIChDb2RlT3JpZ2lu
IGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJh
bWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVyKSB7Cisg
ICAgICAgIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGNvZGVPcmlnaW4uaW5saW5l
Q2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKQorICAgICAgICAgICAgLT5iYXNlbGluZUNvZGVC
bG9ja0Zvcihjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+aXNDYWxsID8gQ29kZUZvckNhbGwg
OiBDb2RlRm9yQ29uc3RydWN0KQorICAgICAgICAgICAgLT5qaXRDb21waWxlKCpnbG9iYWxEYXRh
KTsKKyAgICB9CisgICAgCiAgICAgU3BlY3VsYXRpb25SZWNvdmVyeSogcmVjb3ZlcnkgPSAwOwog
ICAgIGlmIChleGl0Lm1fcmVjb3ZlcnlJbmRleCkKICAgICAgICAgcmVjb3ZlcnkgPSAmY29kZUJs
b2NrLT5zcGVjdWxhdGlvblJlY292ZXJ5KGV4aXQubV9yZWNvdmVyeUluZGV4IC0gMSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9u
IDEwODE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIK
ICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiREZHUmVwYXRjaC5oIgorI2luY2x1
ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKICNp
bmNsdWRlICJJbmxpbmVBU00uaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgpAQCAtNzM3LDUw
ICs3MzgsNiBAQCBzaXplX3QgREZHX09QRVJBVElPTiBvcGVyYXRpb25Db21wYXJlU3RyCiAgICAg
cmV0dXJuIEpTVmFsdWU6OnN0cmljdEVxdWFsKGV4ZWMsIEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
T3AxKSwgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDIpKTsKIH0KIAotRW5jb2RlZEpTVmFsdWUg
REZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlKCk7Ci1FbmNvZGVkSlNWYWx1ZSBE
RkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0
ZSopOwotCi0jaWYgQ1BVKFg4Nl82NCkKLWFzbSAoCi0iLmdsb2JsICIgU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1ISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAi
XG4iCi0gICAgIm1vdiAtNDAoJXIxMyksICVyMTNcbiIKLSAgICAibW92ICVyMTMsICVyZGlcbiIK
LSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BVKFg4NikKLWFzbSAoCi0iLmdsb2Js
ICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1ISURFX1NZTUJP
TChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKLSAgICAi
bW92ICVlZGksIDQoJWVzcClcbiIKLSAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9O
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCi0pOwotI2VsaWYgQ1BV
KEFSTV9USFVNQjIpCi1hc20gKAotIi50ZXh0IiAiXG4iCi0iLmFsaWduIDIiICJcbiIKLSIuZ2xv
YmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lN
Qk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLSIudGh1bWIiICJcbiIKLSIudGh1bWJf
ZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotU1lN
Qk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgotICAgICJsZHIgcjUs
IFtyNSwgIy00MF0iICJcbiIKLSAgICAiY3B5IHIwLCByNSIgIlxuIgotICAgICJiICIgU1lNQk9M
X1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAi
XG4iCi0pOwotI2VuZGlmCi0KLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVjKQotewotICAgIEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7Ci0gICAgTmF0aXZlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcihnbG9iYWxEYXRhLCBleGVjKTsKLSAgICAKLSAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERhdGEoKS5ob3N0Q2FsbFJldHVyblZhbHVlKTsK
LX0KLQogc3RhdGljIHZvaWQqIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwg
SlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKIHsKICAgICBFeGVj
U3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTA4MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBjbGFzcyBKU1ZhbHVlOwogICAg
IGNsYXNzIExpdmVPYmplY3RJdGVyYXRvcjsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgY2xhc3MgTWFya2VkQXJndW1lbnRCdWZmZXI7CiAgICAgY2xhc3MgUmVnaXN0ZXJG
aWxlOwogICAgIGNsYXNzIFVTdHJpbmc7CkBAIC05NSw2ICs5Niw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAvLyB0cnVlIGlmIGFuIGFsbG9jYXRpb24gb3IgY29sbGVjdGlvbiBpcyBpbiBw
cm9ncmVzcwogICAgICAgICBpbmxpbmUgYm9vbCBpc0J1c3koKTsKICAgICAgICAgCisgICAgICAg
IE1hcmtlZEFsbG9jYXRvciYgZmlyc3RBbGxvY2F0b3JXaXRob3V0RGVzdHJ1Y3RvcnMoKSB7IHJl
dHVybiBtX29iamVjdFNwYWNlLmZpcnN0QWxsb2NhdG9yKCk7IH0KICAgICAgICAgTWFya2VkQWxs
b2NhdG9yJiBhbGxvY2F0b3JGb3JPYmplY3RXaXRob3V0RGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMp
IHsgcmV0dXJuIG1fb2JqZWN0U3BhY2UuYWxsb2NhdG9yRm9yKGJ5dGVzKTsgfQogICAgICAgICBN
YXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvckZvck9iamVjdFdpdGhEZXN0cnVjdG9yKHNpemVfdCBi
eXRlcykgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5kZXN0cnVjdG9yQWxsb2NhdG9yRm9yKGJ5dGVz
KTsgfQogICAgICAgICBDaGVja2VkQm9vbGVhbiB0cnlBbGxvY2F0ZVN0b3JhZ2Uoc2l6ZV90LCB2
b2lkKiopOwpAQCAtMTM2LDEyICsxMzgsMTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZv
aWQgZ2V0Q29uc2VydmF0aXZlUmVnaXN0ZXJSb290cyhIYXNoU2V0PEpTQ2VsbCo+JiByb290cyk7
CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOworICAgICAg
ICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgICAgICBmcmllbmQgY2xh
c3MgTWFya2VkU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRBbGxvY2F0b3I7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNzIENv
cGllZFNwYWNlOwogICAgICAgICBmcmllbmQgY2xhc3MgU2xvdFZpc2l0b3I7Ci0gICAgICAgIGZy
aWVuZCBjbGFzcyBDb2RlQmxvY2s7CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZyaWVu
ZCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYpOwogCiAgICAgICAgIHZvaWQqIGFsbG9jYXRlV2l0
aERlc3RydWN0b3Ioc2l6ZV90KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01h
cmtTdGFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a1N0YWNrLmNwcAkocmV2aXNpb24gMTA4MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvTWFya1N0YWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAzLDcgKzMwMyw3IEBAIEFMV0FZ
U19JTkxJTkUgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbigKICNlbmRpZgogCiAgICAgQVNTRVJU
KEhlYXA6OmlzTWFya2VkKGNlbGwpKTsKLQorICAgIAogICAgIGlmIChpc0pTU3RyaW5nKGNlbGwp
KSB7CiAgICAgICAgIEpTU3RyaW5nOjp2aXNpdENoaWxkcmVuKGNvbnN0X2Nhc3Q8SlNDZWxsKj4o
Y2VsbCksIHZpc2l0b3IpOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAkocmV2aXNpb24gMTA4MTY0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkK
QEAgLTgsNiArOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBIZWFwOwogY2xhc3MgTWFy
a2VkU3BhY2U7CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKIG5hbWVzcGFjZSBERkcg
ewogY2xhc3MgU3BlY3VsYXRpdmVKSVQ7CkBAIC0zMyw2ICszNCw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIGluaXQoSGVhcCosIE1hcmtlZFNwYWNlKiwgc2l6ZV90IGNlbGxTaXplLCBib29sIGNlbGxz
TmVlZERlc3RydWN0aW9uKTsKICAgICAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkKiBhbGxv
Y2F0ZVNsb3dDYXNlKCk7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGUoKTsKICAgICB2b2lkKiB0cnlB
bGxvY2F0ZUhlbHBlcigpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
U3BhY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRT
cGFjZS5oCShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRTcGFjZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogY2xhc3MgSGVhcDsKIGNsYXNzIEpTQ2VsbDsKIGNsYXNzIExpdmVPYmplY3RJdGVyYXRv
cjsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIGNsYXNzIFdlYWtHQ0hhbmRsZTsKIGNs
YXNzIFNsb3RWaXNpdG9yOwogCkBAIC01MSw2ICs1Miw3IEBAIHB1YmxpYzoKIAogICAgIE1hcmtl
ZFNwYWNlKEhlYXAqKTsKIAorICAgIE1hcmtlZEFsbG9jYXRvciYgZmlyc3RBbGxvY2F0b3IoKTsK
ICAgICBNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvckZvcihzaXplX3QpOwogICAgIE1hcmtlZEFs
bG9jYXRvciYgYWxsb2NhdG9yRm9yKE1hcmtlZEJsb2NrKik7CiAgICAgTWFya2VkQWxsb2NhdG9y
JiBkZXN0cnVjdG9yQWxsb2NhdG9yRm9yKHNpemVfdCk7CkBAIC03OSw2ICs4MSw4IEBAIHB1Ymxp
YzoKICAgICB2b2lkIGRpZENvbnN1bWVGcmVlTGlzdChNYXJrZWRCbG9jayopOwogCiBwcml2YXRl
OgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgCiAgICAgLy8g
WyAzMi4uLiAyNTYgXQogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZVN0ZXAgPSBNYXJr
ZWRCbG9jazo6YXRvbVNpemU7CiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVjaXNlQ3V0b2Zm
ID0gMjU2OwpAQCAtMTI5LDYgKzEzMywxMSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBGdW5jdG9yPiBp
bmxpbmUgdHlwZW5hCiAgICAgcmV0dXJuIGZvckVhY2hDZWxsKGZ1bmN0b3IpOwogfQogCitpbmxp
bmUgTWFya2VkQWxsb2NhdG9yJiBNYXJrZWRTcGFjZTo6Zmlyc3RBbGxvY2F0b3IoKQoreworICAg
IHJldHVybiBtX25vcm1hbFNwYWNlLnByZWNpc2VBbGxvY2F0b3JzWzBdOworfQorCiBpbmxpbmUg
TWFya2VkQWxsb2NhdG9yJiBNYXJrZWRTcGFjZTo6YWxsb2NhdG9yRm9yKHNpemVfdCBieXRlcykK
IHsKICAgICBBU1NFUlQoYnl0ZXMgJiYgYnl0ZXMgPD0gbWF4Q2VsbFNpemUpOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAJKHJldmlz
aW9uIDEwODE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJh
bWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCwyOSBAQCBSZWdpc3RlckZpbGUqIENh
bGxGcmFtZTo6cmVnaXN0ZXJGaWxlKCkKIAogI2VuZGlmCiAKKyNpZiBVU0UoSlNWQUxVRTMyXzY0
KQordW5zaWduZWQgQ2FsbEZyYW1lOjpieXRlY29kZU9mZnNldEZvck5vbkRGR0NvZGUoKSBjb25z
dAoreworICAgIEFTU0VSVChjb2RlQmxvY2soKSk7CisgICAgcmV0dXJuIGN1cnJlbnRWUEMoKSAt
IGNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpOworfQorCit2b2lkIENhbGxGcmFt
ZTo6c2V0Qnl0ZWNvZGVPZmZzZXRGb3JOb25ERkdDb2RlKHVuc2lnbmVkIG9mZnNldCkKK3sKKyAg
ICBBU1NFUlQoY29kZUJsb2NrKCkpOworICAgIHNldEN1cnJlbnRWUEMoY29kZUJsb2NrKCktPmlu
c3RydWN0aW9ucygpLmJlZ2luKCkgKyBvZmZzZXQpOworfQorI2Vsc2UKK0luc3RydWN0aW9uKiBD
YWxsRnJhbWU6OmN1cnJlbnRWUEMoKSBjb25zdAoreworICAgIHJldHVybiBjb2RlQmxvY2soKS0+
aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlT2Zmc2V0Rm9yTm9uREZHQ29kZSgpOwor
fQordm9pZCBDYWxsRnJhbWU6OnNldEN1cnJlbnRWUEMoSW5zdHJ1Y3Rpb24qIHZwYykKK3sKKyAg
ICBzZXRCeXRlY29kZU9mZnNldEZvck5vbkRGR0NvZGUodnBjIC0gY29kZUJsb2NrKCktPmluc3Ry
dWN0aW9ucygpLmJlZ2luKCkpOworfQorI2VuZGlmCisgICAgCiAjaWYgRU5BQkxFKERGR19KSVQp
CiBib29sIENhbGxGcmFtZTo6aXNJbmxpbmVDYWxsRnJhbWVTbG93KCkKIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHJldmlzaW9uIDEw
ODE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaAko
d29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEwNiwxMSBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAg
ICAgIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuUEMoKSBjb25zdCB7IHJldHVybiBSZXR1cm5BZGRy
ZXNzUHRyKHRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10udlBDKCkpOyB9CiAjZW5kaWYKICAg
ICAgICAgQWJzdHJhY3RQQyBhYnN0cmFjdFJldHVyblBDKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSkgeyByZXR1cm4gQWJzdHJhY3RQQyhnbG9iYWxEYXRhLCB0aGlzKTsgfQotICAgICAgICB1bnNp
Z25lZCBieXRlY29kZU9mZnNldEZvck5vbkRGR0NvZGUoKQorI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CisgICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Rm9yTm9uREZHQ29kZSgpIGNvbnN0Owor
ICAgICAgICB2b2lkIHNldEJ5dGVjb2RlT2Zmc2V0Rm9yTm9uREZHQ29kZSh1bnNpZ25lZCBvZmZz
ZXQpOworI2Vsc2UKKyAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXRGb3JOb25ERkdDb2Rl
KCkgY29uc3QKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGNvZGVCbG9jaygpKTsKICAg
ICAgICAgICAgIHJldHVybiB0aGlzW1JlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudF0udGFnKCk7
CkBAIC0xMTcsNiArMTIxLDcgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICAgICAgQVNTRVJU
KGNvZGVCbG9jaygpKTsKICAgICAgICAgICAgIHRoaXNbUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENv
dW50XS50YWcoKSA9IHN0YXRpY19jYXN0PGludDMyX3Q+KG9mZnNldCk7CiAgICAgICAgIH0KKyNl
bmRpZgogCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lKCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBD
XS5hc0lubGluZUNhbGxGcmFtZSgpOyB9CkBAIC0xMzQsNiArMTM5LDE5IEBAIG5hbWVzcGFjZSBK
U0MgIHsKICNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICAgICAgSW5zdHJ1Y3Rp
b24qIHJldHVyblZQQygpIGNvbnN0IHsgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5Q
Q10udlBDKCk7IH0KICNlbmRpZgorI2lmIFVTRShKU1ZBTFVFMzJfNjQpCisgICAgICAgIEluc3Ry
dWN0aW9uKiBjdXJyZW50VlBDKCkgY29uc3QKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJu
IGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+KHRoaXNbUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENv
dW50XS50YWcoKSk7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBzZXRDdXJyZW50VlBDKEluc3Ry
dWN0aW9uKiB2cGMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHRoaXNbUmVnaXN0ZXJGaWxlOjpB
cmd1bWVudENvdW50XS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90Pih2cGMpOworICAgICAg
ICB9CisjZWxzZQorICAgICAgICBJbnN0cnVjdGlvbiogY3VycmVudFZQQygpIGNvbnN0OworICAg
ICAgICB2b2lkIHNldEN1cnJlbnRWUEMoSW5zdHJ1Y3Rpb24qIHZwYyk7CisjZW5kaWYKIAogICAg
ICAgICB2b2lkIHNldENhbGxlckZyYW1lKENhbGxGcmFtZSogY2FsbGVyRnJhbWUpIHsgc3RhdGlj
X2Nhc3Q8UmVnaXN0ZXIqPih0aGlzKVtSZWdpc3RlckZpbGU6OkNhbGxlckZyYW1lXSA9IGNhbGxl
ckZyYW1lOyB9CiAgICAgICAgIHZvaWQgc2V0U2NvcGVDaGFpbihTY29wZUNoYWluTm9kZSogc2Nv
cGVDaGFpbikgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6U2Nv
cGVDaGFpbl0gPSBzY29wZUNoYWluOyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDEwODE2NCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY5LDcgKzY5LDcgQEAKICNpbmNsdWRlICJKSVQuaCIKICNlbmRpZgogCi0jZGVm
aW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAoRU5BQkxFKENPTVBVVEVE
X0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikgJiYgIWRlZmluZWQoX19sbHZtX18pKQorI2RlZmlu
ZSBXVEZfVVNFX0dDQ19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQgKChFTkFCTEUoQ09NUFVURURf
R09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpKSAmJiAhZGVmaW5lZChf
X2xsdm1fXykpCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTU0MywzNCArNTQzLDU5IEBA
IEludGVycHJldGVyOjpJbnRlcnByZXRlcigpCiAjaWYgIUFTU0VSVF9ESVNBQkxFRAogICAgICwg
bV9pbml0aWFsaXplZChmYWxzZSkKICNlbmRpZgotICAgICwgbV9lbmFibGVkKGZhbHNlKQorICAg
ICwgbV9jbGFzc2ljRW5hYmxlZChmYWxzZSkKIHsKIH0KIAotdm9pZCBJbnRlcnByZXRlcjo6aW5p
dGlhbGl6ZShib29sIGNhblVzZUpJVCkKK0ludGVycHJldGVyOjp+SW50ZXJwcmV0ZXIoKQogewot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCisjaWYgRU5BQkxF
KExMSU5UKQorICAgIGlmIChtX2NsYXNzaWNFbmFibGVkKQorICAgICAgICBkZWxldGVbXSBtX29w
Y29kZVRhYmxlOworI2VuZGlmCit9CisKK3ZvaWQgSW50ZXJwcmV0ZXI6OmluaXRpYWxpemUoTExJ
bnQ6OkRhdGEqIGxsaW50RGF0YSwgYm9vbCBjYW5Vc2VKSVQpCit7CisgICAgVU5VU0VEX1BBUkFN
KGxsaW50RGF0YSk7CisgICAgVU5VU0VEX1BBUkFNKGNhblVzZUpJVCk7CisjaWYgRU5BQkxFKENP
TVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQorI2lmICFF
TkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKQorICAgIC8vIEhhdmluZyBM
TEludCBlbmFibGVkLCBidXQgbm90IGJlaW5nIGFibGUgdG8gdXNlIHRoZSBKSVQsIGFuZCBub3Qg
aGF2aW5nCisgICAgLy8gYSBjb21wdXRlZCBnb3RvIGludGVycHJldGVyLCBpcyBub3Qgc3VwcG9y
dGVkLiBOb3QgYmVjYXVzZSB3ZSBjYW5ub3QKKyAgICAvLyBzdXBwb3J0IGl0LCBidXQgYmVjYXVz
ZSBJIGRlY2lkZWQgdG8gZHJhdyB0aGUgbGluZSBhdCB0aGUgbnVtYmVyIG9mCisgICAgLy8gcGVy
bXV0YXRpb25zIG9mIGV4ZWN1dGlvbiBlbmdpbmVzIHRoYXQgSSB3YW50ZWQgdGhpcyBjb2RlIHRv
IGdyb2suCisgICAgQVNTRVJUKGNhblVzZUpJVCk7CisjZW5kaWYKICAgICBpZiAoY2FuVXNlSklU
KSB7CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbGxpbnREYXRh
LT5vcGNvZGVNYXAoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7
ICsraSkKKyAgICAgICAgICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNvZGVUYWJsZVtpXSwg
c3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsKKyNlbHNlCiAgICAgICAgIC8vIElmIHRoZSBKSVQg
aXMgcHJlc2VudCwgZG9uJ3QgdXNlIGp1bXAgZGVzdGluYXRpb25zIGZvciBvcGNvZGVzLgogICAg
ICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJRHM7ICsraSkgewog
ICAgICAgICAgICAgT3Bjb2RlIG9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nh
c3Q8dWludHB0cl90PihpKSk7CiAgICAgICAgICAgICBtX29wY29kZVRhYmxlW2ldID0gb3Bjb2Rl
OwogICAgICAgICB9CisjZW5kaWYKICAgICB9IGVsc2UgeworI2lmIEVOQUJMRShMTElOVCkKKyAg
ICAgICAgbV9vcGNvZGVUYWJsZSA9IG5ldyBPcGNvZGVbbnVtT3Bjb2RlSURzXTsKKyNlbmRpZgog
ICAgICAgICBwcml2YXRlRXhlY3V0ZShJbml0aWFsaXplQW5kUmV0dXJuLCAwLCAwKTsKICAgICAg
ICAgCiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtT3Bjb2RlSURzOyArK2kpCiAgICAg
ICAgICAgICBtX29wY29kZUlEVGFibGUuYWRkKG1fb3Bjb2RlVGFibGVbaV0sIHN0YXRpY19jYXN0
PE9wY29kZUlEPihpKSk7CiAgICAgICAgIAotICAgICAgICBtX2VuYWJsZWQgPSB0cnVlOworICAg
ICAgICBtX2NsYXNzaWNFbmFibGVkID0gdHJ1ZTsKICAgICB9CiAjZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShjYW5Vc2VKSVQpOwogI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQotICAgIG1f
ZW5hYmxlZCA9IHRydWU7CisgICAgbV9jbGFzc2ljRW5hYmxlZCA9IHRydWU7CiAjZWxzZQotICAg
IG1fZW5hYmxlZCA9IGZhbHNlOworICAgIG1fY2xhc3NpY0VuYWJsZWQgPSBmYWxzZTsKICNlbmRp
ZgogI2VuZGlmIC8vIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCiAj
aWYgIUFTU0VSVF9ESVNBQkxFRApAQCAtNjY3LDkgKzY5MiwxMSBAQCB2b2lkIEludGVycHJldGVy
OjpkdW1wUmVnaXN0ZXJzKENhbGxGcmFtCiAKIGJvb2wgSW50ZXJwcmV0ZXI6OmlzT3Bjb2RlKE9w
Y29kZSBvcGNvZGUpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBS
RVRFUikKLSAgICBpZiAoIW1fZW5hYmxlZCkKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFT
U0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJMRShMTElOVCkKKyAg
ICBpZiAoIW1fY2xhc3NpY0VuYWJsZWQpCiAgICAgICAgIHJldHVybiBvcGNvZGUgPj0gMCAmJiBz
dGF0aWNfY2FzdDxPcGNvZGVJRD4oYml0d2lzZV9jYXN0PHVpbnRwdHJfdD4ob3Bjb2RlKSkgPD0g
b3BfZW5kOworI2VuZGlmCiAgICAgcmV0dXJuIG9wY29kZSAhPSBIYXNoVHJhaXRzPE9wY29kZT46
OmVtcHR5VmFsdWUoKQogICAgICAgICAmJiAhSGFzaFRyYWl0czxPcGNvZGU+Ojppc0RlbGV0ZWRW
YWx1ZShvcGNvZGUpCiAgICAgICAgICYmIG1fb3Bjb2RlSURUYWJsZS5jb250YWlucyhvcGNvZGUp
OwpAQCAtNzI2LDExICs3NTMsMTEgQEAgTkVWRVJfSU5MSU5FIGJvb2wgSW50ZXJwcmV0ZXI6OnVu
d2luZENhbAogICAgIC8vIGhhdmUgdG8gc3VidHJhY3QgMS4KICNpZiBFTkFCTEUoSklUKSAmJiBF
TkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICBpZiAoY2FsbGVyRnJhbWUtPmdsb2JhbERh
dGEoKS5jYW5Vc2VKSVQoKSkKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5
dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2RlT2Zm
c2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5y
ZXR1cm5QQygpKTsKICAgICBlbHNlCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2Nr
LT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKSAtIDE7CiAjZWxpZiBFTkFC
TEUoSklUKQotICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChj
YWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY29kZUJsb2NrLT5i
eXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbHNl
CiAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFt
ZS0+cmV0dXJuVlBDKCkpIC0gMTsKICNlbmRpZgpAQCAtODU3LDcgKzg4NCw3IEBAIHN0YXRpYyBD
YWxsRnJhbWUqIGdldENhbGxlckluZm8oSlNHbG9iYWwKICAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlCiAgICAgI2VuZGlmCi0gICAgICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNv
ZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICAgICAg
ICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxs
ZXJGcmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogICAgIH0KIApAQCAtMTgx
NSw3ICsxODQyLDcgQEAgSlNWYWx1ZSBJbnRlcnByZXRlcjo6cHJpdmF0ZUV4ZWN1dGUoRXhlYwog
ICAgIH0KICAgICAKICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7Ci0gICAgQVNTRVJUKG1fZW5h
YmxlZCk7CisgICAgQVNTRVJUKG1fY2xhc3NpY0VuYWJsZWQpOwogICAgIAogI2lmIEVOQUJMRShK
SVQpCiAjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCkBAIC0zNDY2LDYgKzM0OTMsOCBA
QCBza2lwX2lkX2N1c3RvbV9zZWxmOgogI2lmIFVTRShHQ0NfQ09NUFVURURfR09UT19XT1JLQVJP
VU5EKQogICAgICAgc2tpcF9wdXRfYnlfaWQ6CiAjZW5kaWYKKyAgICBERUZJTkVfT1BDT0RFKG9w
X3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCkKKyAgICBERUZJTkVfT1BDT0RFKG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbCkKICAgICBERUZJTkVfT1BDT0RFKG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uKSB7CiAgICAgICAgIC8qIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uIGJhc2Uocikg
cHJvcGVydHkoaWQpIHZhbHVlKHIpIG9sZFN0cnVjdHVyZShzSUQpIG5ld1N0cnVjdHVyZShzSUQp
IHN0cnVjdHVyZUNoYWluKGNoYWluKSBvZmZzZXQobikgZGlyZWN0KGIpCiAgICAgICAgICAKQEAg
LTUyOTksMTAgKzUzMjgsMTAgQEAgdm9pZCBJbnRlcnByZXRlcjo6cmV0cmlldmVMYXN0Q2FsbGVy
KENhbAogICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVP
ZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSk7CiAjaWYgRU5BQkxFKEpJVCkKICAgICBlbHNl
Ci0gICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNl
dChjYWxsRnJhbWUtPnJldHVyblBDKCkpOworICAgICAgICBieXRlY29kZU9mZnNldCA9IGNhbGxl
ckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJu
UEMoKSk7CiAjZW5kaWYKICNlbHNlCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVP
ZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxs
RnJhbWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAgICAgbGluZU51bWJlciA9IGNhbGxlckNvZGVC
bG9jay0+bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0IC0gMSk7CiAg
ICAgc291cmNlSUQgPSBjYWxsZXJDb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VJ
RCgpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVy
cHJldGVyLmgJKHJldmlzaW9uIDEwODE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpTVmFsdWUuaCIKICNpbmNsdWRlICJK
U09iamVjdC5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk9wY29kZS5oIgog
I2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5oIgogCkBAIC00Niw2ICs0Nyw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIGNsYXNzIEV4ZWN1dGFibGVCYXNlOwogICAgIGNsYXNzIEZ1bmN0aW9uRXhlY3V0
YWJsZTsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKKyAgICBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvZ3JhbUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgUmVnaXN0
ZXI7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CkBAIC0xNTgsMTkgKzE2MCwyMSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEludGVycHJldGVyIHsKICAgICAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7Ci0gICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgICAgIGZyaWVu
ZCBjbGFzcyBDYWNoZWRDYWxsOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgICAgICBmcmllbmQgY2xhc3MgSklUOwogICAgIHB1YmxpYzoKICAgICAgICAg
SW50ZXJwcmV0ZXIoKTsKKyAgICAgICAgfkludGVycHJldGVyKCk7CiAgICAgICAgIAotICAgICAg
ICB2b2lkIGluaXRpYWxpemUoYm9vbCBjYW5Vc2VKSVQpOworICAgICAgICB2b2lkIGluaXRpYWxp
emUoTExJbnQ6OkRhdGEqLCBib29sIGNhblVzZUpJVCk7CiAKICAgICAgICAgUmVnaXN0ZXJGaWxl
JiByZWdpc3RlckZpbGUoKSB7IHJldHVybiBtX3JlZ2lzdGVyRmlsZTsgfQogICAgICAgICAKICAg
ICAgICAgT3Bjb2RlIGdldE9wY29kZShPcGNvZGVJRCBpZCkKICAgICAgICAgewogICAgICAgICAg
ICAgQVNTRVJUKG1faW5pdGlhbGl6ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNT
SUNfSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBS
RVRFUikgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlVGFibGVb
aWRdOwogI2Vsc2UKICAgICAgICAgICAgIHJldHVybiBpZDsKQEAgLTE4MCw5ICsxODQsMTIgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9wY29kZUlEIGdldE9wY29kZUlEKE9wY29kZSBvcGNv
ZGUpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSNpZiBF
TkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKQorI2lmIEVOQUJMRShMTElO
VCkKKyAgICAgICAgICAgIEFTU0VSVChpc09wY29kZShvcGNvZGUpKTsKKyAgICAgICAgICAgIHJl
dHVybiBtX29wY29kZUlEVGFibGUuZ2V0KG9wY29kZSk7CisjZWxpZiBFTkFCTEUoQ09NUFVURURf
R09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9w
Y29kZSkpOwotICAgICAgICAgICAgaWYgKCFtX2VuYWJsZWQpCisgICAgICAgICAgICBpZiAoIW1f
Y2xhc3NpY0VuYWJsZWQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE9wY29k
ZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90PihvcGNvZGUpKTsKIAogICAgICAgICAgICAgcmV0
dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKQEAgLTE5MCw2ICsxOTcsMTEgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gb3Bjb2RlOwogI2VuZGlmCiAgICAgICAg
IH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgY2xhc3NpY0VuYWJsZWQoKQorICAgICAgICB7Cisg
ICAgICAgICAgICByZXR1cm4gbV9jbGFzc2ljRW5hYmxlZDsKKyAgICAgICAgfQogCiAgICAgICAg
IGJvb2wgaXNPcGNvZGUoT3Bjb2RlKTsKIApAQCAtMjU5LDcgKzI3MSwxMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBSZWdpc3RlckZpbGUgbV9yZWdpc3RlckZpbGU7CiAgICAgICAgIAot
I2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCisjaWYgRU5BQkxF
KExMSU5UKQorICAgICAgICBPcGNvZGUqIG1fb3Bjb2RlVGFibGU7IC8vIE1hcHMgT3Bjb2RlSUQg
PT4gT3Bjb2RlIGZvciBjb21waWxpbmcKKyAgICAgICAgSGFzaE1hcDxPcGNvZGUsIE9wY29kZUlE
PiBtX29wY29kZUlEVGFibGU7IC8vIE1hcHMgT3Bjb2RlID0+IE9wY29kZUlEIGZvciBkZWNvbXBp
bGluZworI2VsaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAg
ICAgICAgT3Bjb2RlIG1fb3Bjb2RlVGFibGVbbnVtT3Bjb2RlSURzXTsgLy8gTWFwcyBPcGNvZGVJ
RCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZwogICAgICAgICBIYXNoTWFwPE9wY29kZSwgT3Bjb2Rl
SUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2RlSUQgZm9yIGRlY29t
cGlsaW5nCiAjZW5kaWYKQEAgLTI2Nyw3ICsyODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICNpZiAh
QVNTRVJUX0RJU0FCTEVECiAgICAgICAgIGJvb2wgbV9pbml0aWFsaXplZDsKICNlbmRpZgotICAg
ICAgICBib29sIG1fZW5hYmxlZDsKKyAgICAgICAgYm9vbCBtX2NsYXNzaWNFbmFibGVkOwogICAg
IH07CiAKICAgICAvLyBUaGlzIHZhbHVlIG11c3Qgbm90IGJlIGFuIG9iamVjdCB0aGF0IHdvdWxk
IHJlcXVpcmUgdGhpcyBjb252ZXJzaW9uIChXZWJDb3JlJ3MgZ2xvYmFsIG9iamVjdCkuCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5o
CShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
UmVnaXN0ZXJGaWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBDb25zZXJ2YXRpdmVSb290czsKICAgICBjbGFzcyBERkdDb2Rl
QmxvY2tzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIFJl
Z2lzdGVyRmlsZSB7CiAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFJlZ2lzdGVyRmlsZSk7
CkBAIC04MSw2ICs4Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2
YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAg
ICAKICAgICAgICAgYm9vbCBncm93U2xvd0Nhc2UoUmVnaXN0ZXIqKTsKICAgICAgICAgdm9pZCBy
ZWxlYXNlRXhjZXNzQ2FwYWNpdHkoKTsKICAgICAgICAgdm9pZCBhZGRUb0NvbW1pdHRlZEJ5dGVD
b3VudChsb25nKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1
cm5WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0
Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKworI2luY2x1
ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIklubGluZUFTTS5oIgorI2luY2x1ZGUgIkpTT2Jq
ZWN0LmgiCisjaW5jbHVkZSAiSlNWYWx1ZUlubGluZU1ldGhvZHMuaCIKKyNpbmNsdWRlICJTY29w
ZUNoYWluLmgiCisKK25hbWVzcGFjZSBKU0MgeworCisjaWYgQ09NUElMRVIoR0NDKQorCisjaWYg
Q1BVKFg4Nl82NCkKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4i
CitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgIm1v
diAtNDAoJXIxMyksICVyMTNcbiIKKyAgICAibW92ICVyMTMsICVyZGlcbiIKKyAgICAiam1wICIg
U1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0
YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKFg4NikKK2FzbSAoCisiLmdsb2JsICIgU1lNQk9MX1NU
UklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChnZXRIb3N0Q2Fs
bFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICI6IiAiXG4iCisgICAgIm1vdiAtNDAoJWVkaSksICVlZGlcbiIKKyAgICAibW92ICVlZGksIDQo
JWVzcClcbiIKKyAgICAiam1wICIgU1lNQk9MX1NUUklOR19SRUxPQ0FUSU9OKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2VsaWYgQ1BVKEFSTV9USFVNQjIp
Cithc20gKAorIi50ZXh0IiAiXG4iCisiLmFsaWduIDIiICJcbiIKKyIuZ2xvYmwgIiBTWU1CT0xf
U1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lNQk9MKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKKyIudGh1bWIiICJcbiIKKyIudGh1bWJfZnVuYyAiIFRIVU1C
X0ZVTkNfUEFSQU0oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgorICAgICJsZHIgcjUsIFtyNSwgIy00MF0i
ICJcbiIKKyAgICAiY3B5IHIwLCByNSIgIlxuIgorICAgICJiICIgU1lNQk9MX1NUUklOR19SRUxP
Q0FUSU9OKGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKSAiXG4iCispOworI2Vu
ZGlmCisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9P
UFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKiBleGVj
KQoreworICAgIGlmICghZXhlYykKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Zh
bHVlKCkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhv
c3RDYWxsUmV0dXJuVmFsdWUpOworfQorCisjZW5kaWYgLy8gQ09NUElMRVIoR0NDKQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2Fs
bFJldHVyblZhbHVlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9I
b3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorI2RlZmluZSBIb3N0Q2FsbFJldHVyblZhbHVlX2gKKwor
I2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIK
KyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworLy8gVW5mb3J0dW5hdGVseSB0aGlzIG9ubHkg
d29ya3Mgb24gR0NDLWxpa2UgY29tcGlsZXJzLiBBbmQgaXQncyBjdXJyZW50bHkgb25seSB1c2Vk
CisvLyBieSBMTEludCBhbmQgREZHLCB3aGljaCBhbHNvIGFyZSByZXN0cmljdGVkIHRvIEdDQy1s
aWtlIGNvbXBpbGVycy4gV2Ugc2hvdWxkCisvLyBwcm9iYWJseSBmaXggdGhhdCBhdCBzb21lIHBv
aW50LgorI2lmIENPTVBJTEVSKEdDQykKKworI2lmIENBTExJTkdfQ09OVkVOVElPTl9JU19TVERD
QUxMCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIENERUNMCisjZWxzZQor
I2RlZmluZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTgorI2VuZGlmCisKK25hbWVzcGFj
ZSBKU0MgeworCitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5fVkFM
VUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKKworLy8gVGhpcyBpcyBhIHB1Ymxp
YyBkZWNsYXJhdGlvbiBvbmx5IHRvIGNvbnZpbmNlIENMQU5HIG5vdCB0byBlbGlkZSBpdC4KK2V4
dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7CisKK2lubGluZSB2
b2lkIGluaXRpYWxpemVIb3N0Q2FsbFJldHVyblZhbHVlKCkKK3sKKyAgICBnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSgwKTsKK30KKworfQorCisjZWxzZSAvLyBDT01QSUxFUihH
Q0MpCisKK25hbWVzcGFjZSBKU0MgeworaW5saW5lIHZvaWQgaW5pdGlhbGl6ZUhvc3RDYWxsUmV0
dXJuVmFsdWUoKSB7IH0KK30KKworI2VuZGlmIC8vIENPTVBJTEVSKEdDQykKKworI2VuZGlmIC8v
IEhvc3RDYWxsUmV0dXJuVmFsdWVfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3Bw
CShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsOCBAQCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBp
bGVNYWluUGFzcygpCiAgICAgICAgIERFRklORV9PUChvcF9wcm9maWxlX3dpbGxfY2FsbCkKICAg
ICAgICAgREVGSU5FX09QKG9wX3B1c2hfbmV3X3Njb3BlKQogICAgICAgICBERUZJTkVfT1Aob3Bf
cHVzaF9zY29wZSkKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6
CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBE
RUZJTkVfT1Aob3BfcHV0X2J5X2lkKQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X2luZGV4
KQogICAgICAgICBERUZJTkVfT1Aob3BfcHV0X2J5X3ZhbCkKQEAgLTQ4Niw2ICs0ODgsOCBAQCB2
b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogICAgICAgICBERUZJTkVfU0xPV0NB
U0VfT1Aob3BfcG9zdF9pbmMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVfZGVj
KQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2luYykKKyAgICAgICAgY2FzZSBv
cF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lk
X3RyYW5zaXRpb25fbm9ybWFsOgogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5
X2lkKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHV0X2J5X3ZhbCkKICAgICAgICAg
REVGSU5FX1NMT1dDQVNFX09QKG9wX3Jlc29sdmVfZ2xvYmFsKQpAQCAtNTI1LDYgKzUyOSwxMCBA
QCB2b2lkIEpJVDo6cHJpdmF0ZUNvbXBpbGVTbG93Q2FzZXMoKQogCiBKSVRDb2RlIEpJVDo6cHJp
dmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVuY3Rpb25FbnRyeUFyaXR5Q2hlY2spCiB7CisjaWYgRU5B
QkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBwcmludGYoIkNvbXBpbGluZyBKSVQgY29kZSFcbiIp
OworI2VuZGlmCisgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQogICAgIG1fY2FuQmVP
cHRpbWl6ZWQgPSBtX2NvZGVCbG9jay0+Y2FuQ29tcGlsZVdpdGhERkcoKTsKICNlbmRpZgpAQCAt
NjkzLDggKzcwMSwxMiBAQCBKSVRDb2RlIEpJVDo6cHJpdmF0ZUNvbXBpbGUoQ29kZVB0ciogZnVu
CiAgICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0gbV9jb2RlQmxvY2stPnN0cnVjdHVy
ZVN0dWJJbmZvKG1fbWV0aG9kQ2FsbENvbXBpbGF0aW9uSW5mb1tpXS5wcm9wZXJ0eUFjY2Vzc0lu
ZGV4KS5jYWxsUmV0dXJuTG9jYXRpb247CiAgICAgfQogCi0jaWYgRU5BQkxFKERGR19KSVQpCi0g
ICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQpIHsKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxF
KExMSU5UKQorICAgIGlmIChtX2NhbkJlT3B0aW1pemVkCisjaWYgRU5BQkxFKExMSU5UKQorICAg
ICAgICB8fCB0cnVlCisjZW5kaWYKKyAgICAgICAgKSB7CiAgICAgICAgIENvbXBhY3RKSVRDb2Rl
TWFwOjpFbmNvZGVyIGppdENvZGVNYXBFbmNvZGVyOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGJ5
dGVjb2RlT2Zmc2V0ID0gMDsgYnl0ZWNvZGVPZmZzZXQgPCBtX2xhYmVscy5zaXplKCk7ICsrYnl0
ZWNvZGVPZmZzZXQpIHsKICAgICAgICAgICAgIGlmIChtX2xhYmVsc1tieXRlY29kZU9mZnNldF0u
aXNTZXQoKSkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5oCShyZXZpc2lvbiAx
MDgxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAkod29ya2luZyBj
b3B5KQpAQCAtNDgsNyArNDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSklUQ29kZSgp
IHsgfQogI2VuZGlmCiAgICAgcHVibGljOgotICAgICAgICBlbnVtIEpJVFR5cGUgeyBIb3N0Q2Fs
bFRodW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CisgICAgICAgIGVudW0gSklUVHlwZSB7IE5v
bmUsIEhvc3RDYWxsVGh1bmssIEludGVycHJldGVyVGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQg
fTsKICAgICAgICAgCiAgICAgICAgIHN0YXRpYyBKSVRUeXBlIGJvdHRvbVRpZXJKSVQoKQogICAg
ICAgICB7CkBAIC02Niw4ICs2NiwxOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJl
dHVybiBERkdKSVQ7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIHN0YXRpYyBib29sIGlz
T3B0aW1pemluZ0pJVChKSVRUeXBlIGppdFR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJl
dHVybiBqaXRUeXBlID09IERGR0pJVDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3Rh
dGljIGJvb2wgaXNCYXNlbGluZUNvZGUoSklUVHlwZSBqaXRUeXBlKQorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBJbnRlcnByZXRlclRodW5rIHx8IGppdFR5cGUgPT0g
QmFzZWxpbmVKSVQ7CisgICAgICAgIH0KKyAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAg
ICAgSklUQ29kZSgpCisgICAgICAgICAgICA6IG1faml0VHlwZShOb25lKQogICAgICAgICB7CiAg
ICAgICAgIH0KIApAQCAtNzUsNiArODYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAg
IDogbV9yZWYocmVmKQogICAgICAgICAgICAgLCBtX2ppdFR5cGUoaml0VHlwZSkKICAgICAgICAg
eworICAgICAgICAgICAgQVNTRVJUKGppdFR5cGUgIT0gTm9uZSk7CiAgICAgICAgIH0KICAgICAg
ICAgCiAgICAgICAgIGJvb2wgb3BlcmF0b3IgISgpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVERyaXZlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklURHJpdmVyLmgJKHJldmlzaW9uIDEwODE2NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklURHJpdmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDE1ICszMywyMSBA
QAogI2luY2x1ZGUgIkJ5dGVjb2RlR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgi
CiAjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgogCiBuYW1l
c3BhY2UgSlNDIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KIGlubGluZSBi
b29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3du
UHRyPENvZGVCbG9ja1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENvZGU6
OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAgICBpZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJ
VFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgCiAgICAgaWYgKCFnbG9iYWxEYXRh
LmNhblVzZUpJVCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2st
PnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAgICAKICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFs
c2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklUQ29kZTo6REZHSklUKQogICAgICAgICBkZmdDb21w
aWxlZCA9IERGRzo6dHJ5Q29tcGlsZShnbG9iYWxEYXRhLCBjb2RlQmxvY2suZ2V0KCksIGppdENv
ZGUpOwpAQCAtNjIsOSArNjgsMTQgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlh
dGUoSlNHbAogCiBpbmxpbmUgYm9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiYgY29kZUJs
b2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGppdENvZGVXaXRo
QXJpdHlDaGVjaywgU2hhcmVkU3ltYm9sVGFibGUqJiBzeW1ib2xUYWJsZSwgSklUQ29kZTo6SklU
VHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNvZGVCbG9jay0+Z2V0SklUVHlw
ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBpZiAoIWdsb2JhbERhdGEuY2Fu
VXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAorICAgIGNvZGVCbG9jay0+dW5s
aW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZnQ29tcGlsZWQgPSBmYWxzZTsK
ICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAgICAgICAgIGRmZ0NvbXBpbGVk
ID0gREZHOjp0cnlDb21waWxlRnVuY3Rpb24oZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBq
aXRDb2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwpAQCAtNzksNyArOTAsNiBAQCBpbmxpbmUg
Ym9vbCBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpCiAgICAgICAgIH0KICAgICAgICAgaml0
Q29kZSA9IEpJVDo6Y29tcGlsZSgmZ2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCAmaml0Q29k
ZVdpdGhBcml0eUNoZWNrKTsKICAgICB9Ci0gICAgCiAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2Rl
KGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9ucy5jcHAJKHJl
dmlzaW9uIDEwODE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgRXhjZXB0aW9uSGFuZGxlciBn
ZW5lcmljVGhyb3coSlNHbG9iYWxEYQogCiBFeGNlcHRpb25IYW5kbGVyIGppdFRocm93KEpTR2xv
YmFsRGF0YSogZ2xvYmFsRGF0YSwgRXhlY1N0YXRlKiBjYWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0
aW9uVmFsdWUsIFJldHVybkFkZHJlc3NQdHIgZmF1bHRMb2NhdGlvbikKIHsKLSAgICByZXR1cm4g
Z2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUsIGNhbGxG
cmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGZhdWx0TG9jYXRpb24pKTsKKyAgICBy
ZXR1cm4gZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGNhbGxGcmFtZSwgZXhjZXB0aW9uVmFsdWUs
IGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZSwgZmF1bHRM
b2NhdGlvbikpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElu
bGluZU1ldGhvZHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJ
VElubGluZU1ldGhvZHMuaAkocmV2aXNpb24gMTA4MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2NSw4ICsyNjUs
MTMgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpJVDo6cmVzdG9yZUFyZ3VtZW50UgogQUxXQVlTX0lO
TElORSB2b2lkIEpJVDo6dXBkYXRlVG9wQ2FsbEZyYW1lKCkKIHsKICAgICBBU1NFUlQoc3RhdGlj
X2Nhc3Q8aW50PihtX2J5dGVjb2RlT2Zmc2V0KSA+PSAwKTsKLSAgICBpZiAobV9ieXRlY29kZU9m
ZnNldCkKKyAgICBpZiAobV9ieXRlY29kZU9mZnNldCkgeworI2lmIFVTRShKU1ZBTFVFMzJfNjQp
CisgICAgICAgIHN0b3JlUHRyKFRydXN0ZWRJbW1QdHIobV9jb2RlQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCkgKyBtX2J5dGVjb2RlT2Zmc2V0ICsgMSksIGludFRhZ0ZvcihSZWdpc3RlckZp
bGU6OkFyZ3VtZW50Q291bnQpKTsKKyNlbHNlCiAgICAgICAgIHN0b3JlMzIoSW1tMzIobV9ieXRl
Y29kZU9mZnNldCArIDEpLCBpbnRUYWdGb3IoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KSk7
CisjZW5kaWYKKyAgICB9CiAgICAgc3RvcmVQdHIoY2FsbEZyYW1lUmVnaXN0ZXIsICZtX2dsb2Jh
bERhdGEtPnRvcENhbGxGcmFtZSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvSklUU3R1YnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUU3R1YnMuY3BwCShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVFN0dWJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0Niw2ICsxNDQ2LDcgQEAgREVG
SU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3BfcHV0X2J5X2lkXwogICAgIFB1dFByb3BlcnR5U2xv
dCBzbG90KGNhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKICAgICBKU1Zh
bHVlIGJhc2VWYWx1ZSA9IHN0YWNrRnJhbWUuYXJnc1swXS5qc1ZhbHVlKCk7CiAgICAgQVNTRVJU
KGJhc2VWYWx1ZS5pc09iamVjdCgpKTsKKyAgICAKICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5w
dXREaXJlY3QoY2FsbEZyYW1lLT5nbG9iYWxEYXRhKCksIGlkZW50LCBzdGFja0ZyYW1lLmFyZ3Nb
Ml0uanNWYWx1ZSgpLCBzbG90KTsKICAgICAKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IHN0
YWNrRnJhbWUuY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKQEAgLTE5MzEsNyArMTkzMiw3IEBAIERF
RklORV9TVFVCX0ZVTkNUSU9OKHZvaWQsIG9wdGltaXplX2Zyb20KICAgICB1bnNpZ25lZCBieXRl
Y29kZUluZGV4ID0gc3RhY2tGcmFtZS5hcmdzWzBdLmludDMyKCk7CiAKICNpZiBFTkFCTEUoSklU
X1ZFUkJPU0VfT1NSKQotICAgIGRhdGFMb2coIkVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdp
dGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwg
b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNv
dW50ZXIoKSwgY29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxv
Y2stPm9wdGltaXphdGlvbkRlbGF5Q291bnRlcigpKTsKKyAgICBkYXRhTG9nKCIlcDogRW50ZXJl
ZCBvcHRpbWl6ZV9mcm9tX2xvb3Agd2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCByZW9wdGltaXph
dGlvblJldHJ5Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAldVxuIiwg
Y29kZUJsb2NrLCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCksIGNvZGVCbG9jay0+cmVv
cHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNv
dW50ZXIoKSk7CiAjZW5kaWYKIAogICAgIGlmIChjb2RlQmxvY2stPmhhc09wdGltaXplZFJlcGxh
Y2VtZW50KCkpIHsKQEAgLTIxODYsNDUgKzIxODcsMTMgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04o
dm9pZCosIG9wX2NvbnN0cnVjdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSBDYWxs
RnJhbWUqIGFyaXR5Q2hlY2tGb3IoQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIFJlZ2lzdGVyRmlsZSog
cmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCi17Ci0gICAgSlNGdW5j
dGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihjYWxsRnJhbWUtPmNhbGxlZSgpKTsKLSAgICBBU1NF
UlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxv
Y2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7
Ci0gICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gY2FsbEZyYW1lLT5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcygpOwotCi0gICAgLy8gVGhpcyBlbnN1cmVzIGVub3VnaCBzcGFj
ZSBmb3IgdGhlIHdvcnN0IGNhc2Ugc2NlbmFyaW8gb2YgemVybyBhcmd1bWVudHMgcGFzc2VkIGJ5
IHRoZSBjYWxsZXIuCi0gICAgaWYgKCFyZWdpc3RlckZpbGUtPmdyb3coY2FsbEZyYW1lLT5yZWdp
c3RlcnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2NrLT5t
X251bUNhbGxlZVJlZ2lzdGVycykpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgQVNTRVJUKGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkp
OwotCi0gICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxsIGZyYW1lIGFuZCBhcmd1
bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5lZC4KLSAg
ICBzaXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzOwotICAgIFJlZ2lzdGVyKiBzcmMgPSBjYWxsRnJhbWUtPnJlZ2lz
dGVycygpOwotICAgIFJlZ2lzdGVyKiBkc3QgPSBjYWxsRnJhbWUtPnJlZ2lzdGVycygpICsgZGVs
dGE7Ci0KLSAgICBpbnQgaTsKLSAgICBpbnQgZW5kID0gLUNhbGxGcmFtZTo6b2Zmc2V0Rm9yKGFy
Z3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKTsKLSAgICBmb3IgKGkgPSAtMTsgaSA+PSBlbmQ7IC0t
aSkKLSAgICAgICAgZHN0W2ldID0gc3JjW2ldOwotCi0gICAgZW5kIC09IGRlbHRhOwotICAgIGZv
ciAoIDsgaSA+PSBlbmQ7IC0taSkKLSAgICAgICAgZHN0W2ldID0ganNVbmRlZmluZWQoKTsKLQot
ICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ2FsbEZyYW1lOjpjcmVhdGUoZHN0KTsKLSAg
ICBBU1NFUlQoKHZvaWQqKW5ld0NhbGxGcmFtZSA8PSByZWdpc3RlckZpbGUtPmVuZCgpKTsKLSAg
ICByZXR1cm4gbmV3Q2FsbEZyYW1lOwotfQotCiBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkKiwg
b3BfY2FsbF9hcml0eUNoZWNrKQogewogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0Zy
YW1lKTsKIAogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7
CiAKLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1l
LCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOworICAgIENhbGxGcmFtZSog
bmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwg
c3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDYWxsKTsKICAgICBpZiAoIW5ld0NhbGxG
cmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lkKj4oc3Rh
Y2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVTdGFja092ZXJm
bG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKQEAgLTIyMzcsNyArMjIwNiw3
IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKIAogICAgIENhbGxG
cmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CiAKLSAgICBDYWxsRnJhbWUq
IG5ld0NhbGxGcmFtZSA9IGFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lz
dGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUg
PSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJl
Z2lzdGVyRmlsZSwgQ29kZUZvckNvbnN0cnVjdCk7CiAgICAgaWYgKCFuZXdDYWxsRnJhbWUpCiAg
ICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0YWNrRnJhbWUs
IGNhbGxGcmFtZSwgU1RVQl9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9y
KGNhbGxGcmFtZS0+Y2FsbGVyRnJhbWUoKSkpOwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pTSW50ZXJmYWNlSklULmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9KU0ludGVyZmFjZUpJVC5oCShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDgg
KzI2LDEwIEBACiAjaWZuZGVmIEpTSW50ZXJmYWNlSklUX2gKICNkZWZpbmUgSlNJbnRlcmZhY2VK
SVRfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkpJVENv
ZGUuaCIKICNpbmNsdWRlICJKSVRTdHVicy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5j
bHVkZSAiSlNWYWx1ZS5oIgogI2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAi
UmVnaXN0ZXJGaWxlLmgiCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRD
b21tb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRD
b21tb24uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dENvbW1vbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRDb21tb25faAorI2Rl
ZmluZSBMTEludENvbW1vbl9oCisKKy8vIFByaW50IGV2ZXJ5IGluc3RydWN0aW9uIGV4ZWN1dGVk
LgorI2RlZmluZSBMTElOVF9FWEVDVVRJT05fVFJBQ0lORyAwCisKKy8vIFByaW50IHNvbWUgaW5m
b3JtYXRpb24gZm9yIHNvbWUgb2YgdGhlIG1vcmUgc3VidGxlIHNsb3cgcGF0aHMuCisjZGVmaW5l
IExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HIDAKKworLy8gRGlzYWJsZSBpbmxpbmUgYWxsb2NhdGlv
biBpbiB0aGUgaW50ZXJwcmV0ZXIuIFRoaXMgaXMgZ3JlYXQgaWYgeW91J3JlIGNoYW5naW5nCisv
LyBob3cgdGhlIEdDIGFsbG9jYXRlcy4KKyNkZWZpbmUgTExJTlRfQUxXQVlTX0FMTE9DQVRFX1NM
T1cgMAorCisvLyBFbmFibGUgT1NSIGludG8gdGhlIEpJVC4gRGlzYWJsaW5nIHRoaXMgd2hpbGUg
dGhlIExMSW50IGlzIGVuYWJsZWQgZWZmZWN0aXZlbHkKKy8vIHR1cm5zIG9mZiBhbGwgSklUJ2lu
Zywgc2luY2UgaW4gTExJbnQncyBwYXJsYW5jZSwgT1NSIHN1YnN1bWVzIGFueSBmb3JtIG9mIEpJ
VAorLy8gaW52b2NhdGlvbi4KKyNkZWZpbmUgTExJTlRfT1NSX1RPX0pJVCAxCisKKyNlbmRpZiAv
LyBMTEludENvbW1vbl9oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dERhdGEuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RGF0YS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJMTEludERhdGEuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkJ5
dGVjb2RlQ29udmVudGlvbnMuaCIKKyNpbmNsdWRlICJDb2RlVHlwZS5oIgorI2luY2x1ZGUgIklu
c3RydWN0aW9uLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUg
Ik9wY29kZS5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworRGF0YTo6
RGF0YSgpCisgICAgOiBtX2V4Y2VwdGlvbkluc3RydWN0aW9ucyhuZXcgSW5zdHJ1Y3Rpb25bbWF4
T3Bjb2RlTGVuZ3RoICsgMV0pCisgICAgLCBtX29wY29kZU1hcChuZXcgT3Bjb2RlW251bU9wY29k
ZUlEc10pCit7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyAr
K2kpCisgICAgICAgIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9IGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUpOwor
I2RlZmluZSBPUENPREVfRU5UUlkob3Bjb2RlLCBsZW5ndGgpIG1fb3Bjb2RlTWFwW29wY29kZV0g
PSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF8jI29wY29kZSk7CisgICAgRk9SX0VBQ0hfT1BD
T0RFX0lEKE9QQ09ERV9FTlRSWSk7CisjdW5kZWYgT1BDT0RFX0VOVFJZCit9CisKKyNpZiBDT01Q
SUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgaWdub3JlZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlmCit2b2lkIERh
dGE6OnBlcmZvcm1Bc3NlcnRpb25zKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICAv
LyBBc3NlcnRpb25zIHRvIG1hdGNoIExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtLiAgSWYgeW91IGNo
YW5nZSBhbnkgb2YgdGhpcyBjb2RlLCBiZQorICAgIC8vIHByZXBhcmVkIHRvIGNoYW5nZSBMb3dM
ZXZlbEludGVycHJldGVyLmFzbSBhcyB3ZWxsISEKKyAgICBBU1NFUlQoUmVnaXN0ZXJGaWxlOjpD
YWxsRnJhbWVIZWFkZXJTaXplICogOCA9PSA0OCk7CisgICAgQVNTRVJUKFJlZ2lzdGVyRmlsZTo6
QXJndW1lbnRDb3VudCAqIDggPT0gLTQ4KTsKKyAgICBBU1NFUlQoUmVnaXN0ZXJGaWxlOjpDYWxs
ZXJGcmFtZSAqIDggPT0gLTQwKTsKKyAgICBBU1NFUlQoUmVnaXN0ZXJGaWxlOjpDYWxsZWUgKiA4
ID09IC0zMik7CisgICAgQVNTRVJUKFJlZ2lzdGVyRmlsZTo6U2NvcGVDaGFpbiAqIDggPT0gLTI0
KTsKKyAgICBBU1NFUlQoUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQyAqIDggPT0gLTE2KTsKKyAgICBB
U1NFUlQoUmVnaXN0ZXJGaWxlOjpDb2RlQmxvY2sgKiA4ID09IC04KTsKKyAgICBBU1NFUlQoQ2Fs
bEZyYW1lOjphcmd1bWVudE9mZnNldEluY2x1ZGluZ1RoaXMoMCkgPT0gLVJlZ2lzdGVyRmlsZTo6
Q2FsbEZyYW1lSGVhZGVyU2l6ZSAtIDEpOworI2lmIENQVShCSUdfRU5ESUFOKQorICAgIEFTU0VS
VChPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykgPT0g
MCk7CisgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMucGF5bG9hZCkgPT0gNCk7CisjZWxzZQorICAgIEFTU0VSVChPQkpFQ1RfT0ZGU0VUT0Yo
RW5jb2RlZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnRhZykgPT0gNCk7CisgICAgQVNTRVJUKE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMucGF5bG9hZCkgPT0g
MCk7CisjZW5kaWYKKyAgICBBU1NFUlQoSlNWYWx1ZTo6SW50MzJUYWcgPT0gLTEpOworICAgIEFT
U0VSVChKU1ZhbHVlOjpCb29sZWFuVGFnID09IC0yKTsKKyAgICBBU1NFUlQoSlNWYWx1ZTo6TnVs
bFRhZyA9PSAtMyk7CisgICAgQVNTRVJUKEpTVmFsdWU6OlVuZGVmaW5lZFRhZyA9PSAtNCk7Cisg
ICAgQVNTRVJUKEpTVmFsdWU6OkNlbGxUYWcgPT0gLTUpOworICAgIEFTU0VSVChKU1ZhbHVlOjpF
bXB0eVZhbHVlVGFnID09IC02KTsKKyAgICBBU1NFUlQoSlNWYWx1ZTo6RGVsZXRlZFZhbHVlVGFn
ID09IC03KTsKKyAgICBBU1NFUlQoSlNWYWx1ZTo6TG93ZXN0VGFnID09IC03KTsKKyAgICBBU1NF
UlQoU3RyaW5nVHlwZSA9PSA1KTsKKyAgICBBU1NFUlQoT2JqZWN0VHlwZSA9PSAxMyk7CisgICAg
QVNTRVJUKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPT0gMSk7CisgICAgQVNTRVJUKEltcGxlbWVu
dHNIYXNJbnN0YW5jZSA9PSAyKTsKKyAgICBBU1NFUlQoSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0
YW5jZSA9PSA4KTsKKyAgICBBU1NFUlQoJmdsb2JhbERhdGEuaGVhcC5hbGxvY2F0b3JGb3JPYmpl
Y3RXaXRob3V0RGVzdHJ1Y3RvcihzaXplb2YoSlNGaW5hbE9iamVjdCkpIC0gJmdsb2JhbERhdGEu
aGVhcC5maXJzdEFsbG9jYXRvcldpdGhvdXREZXN0cnVjdG9ycygpID09IDMpOworICAgIEFTU0VS
VChGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9PSAweDQwMDAwMDAwKTsKKyAgICBBU1NFUlQo
R2xvYmFsQ29kZSA9PSAwKTsKKyAgICBBU1NFUlQoRXZhbENvZGUgPT0gMSk7CisgICAgQVNTRVJU
KEZ1bmN0aW9uQ29kZSA9PSAyKTsKKyAgICAKKyAgICAvLyBGSVhNRTogbWFrZSB0aGVzZSBhc3Nl
cnRpb25zIGxlc3MgaG9ycmlibGUuCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIFZlY3Rvcjxp
bnQ+IHRlc3RWZWN0b3I7CisgICAgdGVzdFZlY3Rvci5yZXNpemUoNDIpOworICAgIEFTU0VSVChi
aXR3aXNlX2Nhc3Q8c2l6ZV90Kj4oJnRlc3RWZWN0b3IpWzBdID09IDQyKTsKKyAgICBBU1NFUlQo
Yml0d2lzZV9jYXN0PGludCoqPigmdGVzdFZlY3RvcilbMV0gPT0gdGVzdFZlY3Rvci5iZWdpbigp
KTsKKyNlbmRpZgorCisgICAgQVNTRVJUKFN0cmluZ0ltcGw6OnNfaGFzaEZsYWc4Qml0QnVmZmVy
ID09IDY0KTsKK30KKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3Rp
YyBwb3AKKyNlbmRpZgorCitEYXRhOjp+RGF0YSgpCit7CisgICAgZGVsZXRlW10gbV9leGNlcHRp
b25JbnN0cnVjdGlvbnM7CisgICAgZGVsZXRlW10gbV9vcGNvZGVNYXA7Cit9CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIExMSW50RGF0YV9oCisjZGVmaW5lIExMSW50RGF0YV9oCisKKyNpbmNsdWRlICJPcGNv
ZGUuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2Ns
YXNzIEpTR2xvYmFsRGF0YTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50
IHsKKworI2lmIEVOQUJMRShMTElOVCkKK2NsYXNzIERhdGEgeworcHVibGljOgorICAgIERhdGEo
KTsKKyAgICB+RGF0YSgpOworICAgIAorICAgIHZvaWQgcGVyZm9ybUFzc2VydGlvbnMoSlNHbG9i
YWxEYXRhJik7CisgICAgCisgICAgSW5zdHJ1Y3Rpb24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygp
CisgICAgeworICAgICAgICByZXR1cm4gbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgfQor
ICAgIAorICAgIE9wY29kZSogb3Bjb2RlTWFwKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX29w
Y29kZU1hcDsKKyAgICB9Citwcml2YXRlOgorICAgIEluc3RydWN0aW9uKiBtX2V4Y2VwdGlvbklu
c3RydWN0aW9uczsKKyAgICBPcGNvZGUqIG1fb3Bjb2RlTWFwOworfTsKKyNlbHNlIC8vIEVOQUJM
RShMTElOVCkKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHB1c2gKKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Npbmctbm9yZXR1
cm4iCisjZW5kaWYKKworY2xhc3MgRGF0YSB7CitwdWJsaWM6CisgICAgdm9pZCBwZXJmb3JtQXNz
ZXJ0aW9ucyhKU0dsb2JhbERhdGEmKSB7IH0KKworICAgIEluc3RydWN0aW9uKiBleGNlcHRpb25J
bnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAg
eworICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAg
fQorfTsKKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBv
cAorI2VuZGlmCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisKK30gfSAvLyBuYW1lc3BhY2Ug
SlNDOjpMTEludAorCisjZW5kaWYgLy8gTExJbnREYXRhX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTExJbnRFbnRy
eXBvaW50cy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiSklUQ29kZS5oIgor
I2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtzLmgiCisjaW5j
bHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNl
IExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpJVENvZGUmIGppdENvZGUsIE1h
Y3JvQXNzZW1ibGVyQ29kZVB0ciYgYXJpdHlDaGVjaykKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEu
Y2FuVXNlSklUKCkpIHsKKyAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAg
ICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2Rl
UmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdp
c2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKSkpKTsKKyAg
ICAgICAgICAgIGFyaXR5Q2hlY2sgPSBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0
PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlfY2hlY2spKTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChraW5kID09IENvZGVGb3JD
b25zdHJ1Y3QpOworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3Jv
QXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVy
Q29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0
X3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0
cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5
X2NoZWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKGtpbmQgPT0g
Q29kZUZvckNhbGwpIHsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRD
VElTdHViKGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRl
cnByZXRlclRodW5rKTsKKyAgICAgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJU3R1
YihmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3Qp
OworICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZv
ckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5r
KTsKKyAgICBhcml0eUNoZWNrID0gZ2xvYmFsRGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ29u
c3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKS5jb2RlKCk7Cit9CisKK3ZvaWQgZ2V0RXZh
bEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBKSVRDb2RlJiBqaXRDb2RlKQor
eworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBqaXRDb2RlID0g
SklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1h
bmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZs
bGludF9ldmFsX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdldENUSVN0dWIoZXZhbEVudHJ5VGh1bmtH
ZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKK30KKwordm9pZCBnZXRQcm9n
cmFtRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENvZGUmIGppdENvZGUp
Cit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGppdENvZGUg
PSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxm
TWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4o
JmxsaW50X3Byb2dyYW1fcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihwcm9ncmFtRW50
cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQorCit9IH0g
Ly8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRz
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludEVudHJ5cG9pbnRzX2gKKyNkZWZp
bmUgTExJbnRFbnRyeXBvaW50c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lm
IEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEV2YWxDb2RlQmxvY2s7CitjbGFzcyBKSVRDb2RlOwor
Y2xhc3MgSlNHbG9iYWxEYXRhOworY2xhc3MgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyOworY2xhc3Mg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmOworY2xhc3MgUHJvZ3JhbUNvZGVCbG9jazsKKworbmFtZXNw
YWNlIExMSW50IHsKKwordm9pZCBnZXRGdW5jdGlvbkVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwg
Q29kZVNwZWNpYWxpemF0aW9uS2luZCwgSklUQ29kZSYsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYg
YXJpdHlDaGVjayk7Cit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYsIEpJVENv
ZGUmKTsKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiwgSklUQ29kZSYp
OworCitpbmxpbmUgdm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
RXZhbENvZGVCbG9jayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0RXZhbEVudHJ5cG9p
bnQoZ2xvYmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBQcm9ncmFtQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0
Q29kZSkKK3sKKyAgICBnZXRQcm9ncmFtRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsK
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJ
TlQpCisKKyNlbmRpZiAvLyBMTEludEVudHJ5cG9pbnRzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAwKQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9u
cy5oIgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5j
bHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJK
SVRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNsdWRlICJMb3dM
ZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgewor
Cit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElO
VF9TTE9XX1BBVEhfVFJBQ0lORworICAgIGRhdGFMb2coIlRocm93aW5nIGV4Y2VwdGlvbiAlcy5c
biIsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIGdl
bmVyaWNUaHJvdygKKyAgICAgICAgZ2xvYmFsRGF0YSwgZXhlYy0+Y2FsbGVyRnJhbWUoKSwgZ2xv
YmFsRGF0YS0+ZXhjZXB0aW9uLAorICAgICAgICBleGVjLT5jYWxsZXJGcmFtZSgpLT5jb2RlQmxv
Y2soKS0+Ynl0ZWNvZGVPZmZzZXQoZXhlYy0+Y2FsbGVyRnJhbWUoKSwgZXhlYy0+cmV0dXJuUEMo
KSkpOworfQorCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2VwdGlvbihF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgcmV0dXJuIGV4ZWMtPmdsb2JhbERhdGEoKS5sbGludERh
dGEuZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Ro
cm93KEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfU0xPV19QQVRI
X1RSQUNJTkcKKyAgICBkYXRhTG9nKCJUaHJvd2luZyBleGNlcHRpb24gJXMgKHJldHVyblRvVGhy
b3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisg
ICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwg
cGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7CisgICAgCisg
ICAgcmV0dXJuIGdsb2JhbERhdGEtPmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsK
K30KKwordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMp
Cit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsK
KyNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORworICAgIGRhdGFMb2coIlRocm93aW5nIGV4Y2Vw
dGlvbiAlcyAoY2FsbFRvVGhyb3cpLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0
aW9uKCkpOworI2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KGdsb2JhbERhdGEsIGV4ZWMsIGdsb2Jh
bERhdGEtPmV4Y2VwdGlvbiwgcGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCku
YmVnaW4oKSk7CisgICAgCisgICAgcmV0dXJuIGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X3Ro
cm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBMTEludEV4Y2VwdGlvbnNfaAorI2RlZmluZSBMTEludEV4Y2VwdGlvbnNfaAor
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgorCisjaWYgRU5BQkxFKExMSU5UKQorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXhlY1N0
YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3BhY2UgTExJbnQgeworCisvLyBUaHJv
dyB0aGUgY3VycmVudGx5IGFjdGl2ZSBleGNlcHRpb24gaW4gdGhlIGNvbnRleHQgb2YgdGhlIGNh
bGxlcidzIGNhbGwgZnJhbWUuCit2b2lkIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihFeGVjU3Rh
dGUqKTsKKworLy8gVGVsbHMgeW91IHdoZXJlIHRvIGp1bXAgdG8gaWYgeW91IHdhbnQgdG8gcmV0
dXJuLXRvLXRocm93LCBhZnRlciB5b3UndmUgYWxyZWFkeQorLy8gc2V0IHVwIGFsbCBpbmZvcm1h
dGlvbiBuZWVkZWQgdG8gdGhyb3cgdGhlIGV4Y2VwdGlvbi4KK0luc3RydWN0aW9uKiByZXR1cm5U
b1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSopOworCisvLyBTYXZlcyB0aGUgY3Vy
cmVudCBQQyBpbiB0aGUgZ2xvYmFsIGRhdGEgZm9yIHNhZmUta2VlcGluZywgYW5kIGdpdmVzIHlv
dSBhIFBDCisvLyB0aGF0IHlvdSBjYW4gdGVsbCB0aGUgaW50ZXJwcmV0ZXIgdG8gZ28gdG8sIHdo
aWNoIHdoZW4gYWR2YW5jZWQgYmV0d2VlbiAxCisvLyBhbmQgOSBzbG90cyB3aWxsIGdpdmUgeW91
IGFuICJpbnN0cnVjdGlvbiIgdGhhdCB0aHJlYWRzIHRvIHRoZSBpbnRlcnByZXRlcidzCisvLyBl
eGNlcHRpb24gaGFuZGxlci4gTm90ZSB0aGF0IGlmIHlvdSBnaXZlIGl0IHRoZSBQQyBmb3IgZXhj
ZXB0aW9uIGhhbmRsaW5nLAorLy8gaXQncyBzbWFydCBlbm91Z2ggdG8ganVzdCByZXR1cm4gdGhh
dCBQQyB3aXRob3V0IGRvaW5nIGFueXRoaW5nIGVsc2U7IHRoaXMKKy8vIGxldHMgeW91IHRocmVh
ZCBleGNlcHRpb24gaGFuZGxpbmcgdGhyb3VnaCBjb21tb24gaGVscGVyIGZ1bmN0aW9ucyB1c2Vk
IGJ5CisvLyBvdGhlciBoZWxwZXJzLgorSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0
YXRlKiwgSW5zdHJ1Y3Rpb24qKTsKKworLy8gVXNlIHRoaXMgd2hlbiB5b3UncmUgdGhyb3dpbmcg
dG8gYSBjYWxsIHRodW5rLgordm9pZCogY2FsbFRvVGhyb3coRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rp
b24qKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUo
TExJTlQpCisKKyNlbmRpZiAvLyBMTEludEV4Y2VwdGlvbnNfaApJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNvbmZpZy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZmxpbmVBc21Db25m
aWcuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50T2ZmbGluZUFzbUNvbmZpZ19o
CisjZGVmaW5lIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCisKKyNpbmNsdWRlICJMTEludENvbW1v
bi5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5jbHVkZSA8d3RmL0lubGluZUFz
bS5oPgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgQ1BVKFg4NikKKyNkZWZpbmUg
T0ZGTElORV9BU01fWDg2IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX1g4NiAwCisjZW5k
aWYKKworI2lmIENQVShBUk1fVEhVTUIyKQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAxCisj
ZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BUk12NyAwCisjZW5kaWYKKworI2lmICFBU1NFUlRf
RElTQUJMRUQKKyNkZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMQorI2Vsc2UKKyNk
ZWZpbmUgT0ZGTElORV9BU01fQVNTRVJUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBDUFUoQklH
X0VORElBTikKKyNkZWZpbmUgT0ZGTElORV9BU01fQklHX0VORElBTiAxCisjZWxzZQorI2RlZmlu
ZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDAKKyNlbmRpZgorCisjaWYgTExJTlRfT1NSX1RPX0pJ
VAorI2RlZmluZSBPRkZMSU5FX0FTTV9KSVRfRU5BQkxFRCAxCisjZWxzZQorI2RlZmluZSBPRkZM
SU5FX0FTTV9KSVRfRU5BQkxFRCAwCisjZW5kaWYKKworI2lmIExMSU5UX0VYRUNVVElPTl9UUkFD
SU5HCisjZGVmaW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDEKKyNlbHNlCisjZGVm
aW5lIE9GRkxJTkVfQVNNX0VYRUNVVElPTl9UUkFDSU5HIDAKKyNlbmRpZgorCisjaWYgTExJTlRf
QUxXQVlTX0FMTE9DQVRFX1NMT1cKKyNkZWZpbmUgT0ZGTElORV9BU01fQUxXQVlTX0FMTE9DQVRF
X1NMT1cgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fQUxXQVlTX0FMTE9DQVRFX1NMT1cg
MAorI2VuZGlmCisKKyNpZiBDUFUoQVJNX1RIVU1CMikKKyNkZWZpbmUgT0ZGTElORV9BU01fR0xP
QkFMX0xBQkVMKGxhYmVsKSAgICAgICAgICBcCisgICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkco
bGFiZWwpICJcbiIgICAgICAgICAgXAorICAgIEhJREVfU1lNQk9MKG5hbWUpICJcbiIgICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAiLnRodW1iXG4iICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShsYWJlbCkg
IlxuIiAgXAorICAgIFNZTUJPTF9TVFJJTkcobGFiZWwpICI6XG4iCisjZWxzZQorI2RlZmluZSBP
RkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGFiZWwpICAgICAgICAgXAorICAgICIuZ2xvYmwgIiBT
WU1CT0xfU1RSSU5HKGxhYmVsKSAiXG4iICAgICAgICAgXAorICAgIEhJREVfU1lNQk9MKG5hbWUp
ICJcbiIgICAgICAgICAgICAgICAgICAgICAgXAorICAgIFNZTUJPTF9TVFJJTkcobGFiZWwpICI6
XG4iCisjZW5kaWYKKworI2VuZGlmIC8vIExMSW50T2ZmbGluZUFzbUNvbmZpZ19oCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgyIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIK
KyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJK
SVRTdHVicy5oIgorI2luY2x1ZGUgIkpTQXJyYXkuaCIKKyNpbmNsdWRlICJKU0NlbGwuaCIKKyNp
bmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpT
UHJvcGVydHlOYW1lSXRlcmF0b3IuaCIKKyNpbmNsdWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUg
IkpTVHlwZUluZm8uaCIKKyNpbmNsdWRlICJKU1ZhcmlhYmxlT2JqZWN0LmgiCisjaW5jbHVkZSAi
SnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgiCisjaW5jbHVk
ZSAiTWFya2VkU3BhY2UuaCIKKyNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKKyNpbmNsdWRlICJT
Y29wZUNoYWluLmgiCisjaW5jbHVkZSAiU3RydWN0dXJlLmgiCisjaW5jbHVkZSAiU3RydWN0dXJl
Q2hhaW4uaCIKKyNpbmNsdWRlICJWYWx1ZVByb2ZpbGUuaCIKKyNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdJbXBsLmg+CisKK25hbWVzcGFjZSBKU0MgeworCisjZGVmaW5lIE9GRkxJTkVfQVNNX09G
RlNFVE9GKGNsYXp6LCBmaWVsZCkgT0JKRUNUX09GRlNFVE9GKGNsYXp6LCBmaWVsZCkKKworY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgY29uc3QgdW5z
aWduZWQqIGR1bW15KCk7Cit9OworCitjb25zdCB1bnNpZ25lZCogTExJbnRPZmZzZXRzRXh0cmFj
dG9yOjpkdW1teSgpCit7CisvLyBUaGlzIGlzIGEgZmlsZSBnZW5lcmF0ZWQgYnkgb2ZmbGluZWFz
bS9nZW5lcmF0ZV9vZmZzZXRzX2V4dHJhY3Rvci5yYiwgYW5kIGNvbnRhaW5zIGNvZGUKKy8vIHRv
IGNyZWF0ZSBhIHRhYmxlIG9mIG9mZnNldHMsIHNpemVzLCBhbmQgYSBoZWFkZXIgaWRlbnRpZnlp
bmcgd2hhdCBjb21iaW5hdGlvbiBvZgorLy8gUGxhdGZvcm0uaCBtYWNyb3Mgd2UgaGF2ZSBzZXQu
IFdlIGluY2x1ZGUgaXQgaW5zaWRlIG9mIGEgbWV0aG9kIG9uIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cgorLy8gYmVjYXVzZSB0aGUgZmllbGRzIHdob3NlIG9mZnNldHMgd2UncmUgZXh0cmFjdGluZyBh
cmUgbW9zdGx5IHByaXZhdGUuIFNvIHdlIG1ha2UgdGhlaXIKKy8vIGNsYXNzZXMgZnJpZW5kcyB3
aXRoIExMSW50T2Zmc2V0c0V4dHJhY3RvciwgYW5kIGluY2x1ZGUgdGhlIGhlYWRlciBoZXJlLCB0
byBnZXQgdGhlIEMrKworLy8gY29tcGlsZXIgdG8ga2luZGx5IHN0ZXAgYXNpZGUgYW5kIHlpZWxk
IHRvIG91ciBiZXN0IGludGVudGlvbnMuCisjaW5jbHVkZSAiTExJbnREZXNpcmVkT2Zmc2V0cy5o
IgorICAgIHJldHVybiBleHRyYWN0b3JUYWJsZTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
K2ludCBtYWluKGludCwgY2hhcioqKQoreworICAgIC8vIE91dCBvZiBhbiBhYnVuZGFuY2Ugb2Yg
Y2F1dGlvbiwgbWFrZSBzdXJlIHRoYXQgTExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpIGlz
IGxpdmUsCisgICAgLy8gYW5kIHRoZSBleHRyYWN0b3JUYWJsZSBpcyBsaXZlLCB0b28uCisgICAg
cHJpbnRmKCIlcFxuIiwgSlNDOjpMTEludE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkpOworICAg
IHJldHVybiAwOworfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xv
d1BhdGhzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJ
bnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50U2xvd1BhdGhzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTUzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludFNsb3dQYXRocy5oIgorCisjaWYgRU5BQkxF
KExMSU5UKQorCisjaW5jbHVkZSAiQXJndW1lbnRzLmgiCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgi
CisjaW5jbHVkZSAiQ29tbW9uU2xvd1BhdGhzLmgiCisjaW5jbHVkZSAiR2V0dGVyU2V0dGVyLmgi
CisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgorI2luY2x1ZGUgIkludGVycHJldGVy
LmgiCisjaW5jbHVkZSAiSklULmgiCisjaW5jbHVkZSAiSklURHJpdmVyLmgiCisjaW5jbHVkZSAi
SlNBY3RpdmF0aW9uLmgiCisjaW5jbHVkZSAiSlNCeXRlQXJyYXkuaCIKKyNpbmNsdWRlICJKU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5oIgorI2luY2x1ZGUgIkpTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aCIKKyNpbmNsdWRlICJKU1N0YXRpY1Njb3BlT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJpbmcu
aCIKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNpbmNs
dWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgi
CisjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgorCituYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIExM
SW50IHsKKworI2RlZmluZSBMTElOVF9CRUdJTl9OT19TRVRfUEMoKSBcCisgICAgSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOyAgICAgIFwKKyAgICBOYXRpdmVD
YWxsRnJhbWVUcmFjZXIgdHJhY2VyKCZnbG9iYWxEYXRhLCBleGVjKQorCisjZGVmaW5lIExMSU5U
X1NFVF9QQ19GT1JfU1RVQlMoKSBcCisgICAgZXhlYy0+c2V0Q3VycmVudFZQQyhwYyArIDEpCisK
KyNkZWZpbmUgTExJTlRfQkVHSU4oKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBM
TElOVF9CRUdJTl9OT19TRVRfUEMoKTsgICAgICAgICAgICAgICAgICAgIFwKKyAgICBMTElOVF9T
RVRfUENfRk9SX1NUVUJTKCkKKworI2RlZmluZSBMTElOVF9PUChpbmRleCkgKGV4ZWMtPnVuY2hl
Y2tlZFIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisjZGVmaW5lIExMSU5UX09QX0MoaW5kZXgpIChl
eGVjLT5yKHBjW2luZGV4XS51Lm9wZXJhbmQpKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9UV08o
Zmlyc3QsIHNlY29uZCkgZG8geyAgICAgICBcCisgICAgICAgIHVuaW9uIHsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBzdHJ1Y3QgeyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdm9pZCogYTsgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgdm9pZCogYjsgICAgICAgICAgICAg
ICAgICAgICAgICAgICBcCisgICAgICAgICAgICB9IHBhaXI7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCisgICAgICAgICAgICBpbnQ2NF90IGk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgICAgIH0gX19ydF91OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmEgPSBmaXJzdDsgICAgICAgICAgICAgICAgICAg
ICBcCisgICAgICAgIF9fcnRfdS5wYWlyLmIgPSBzZWNvbmQ7ICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIHJldHVybiBfX3J0X3UuaTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfRU5EX0lNUEwoKSBMTElOVF9SRVRV
Uk5fVFdPKHBjLCBleGVjKQorCisjZGVmaW5lIExMSU5UX1RIUk9XKGV4Y2VwdGlvblRvVGhyb3cp
IGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGdsb2JhbERhdGEuZXhjZXB0
aW9uID0gKGV4Y2VwdGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIHBjID0g
cmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCkgZG8geyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFko
Z2xvYmFsRGF0YS5leGNlcHRpb24pKSB7ICAgICAgICAgICBcCisgICAgICAgICAgICBwYyA9IHJl
dHVyblRvVGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5U
X0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAo
ZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfRU5EKCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdo
aWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9CUkFOQ0gob3Bjb2RlLCBjb25kaXRpb24pIGRv
IHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBib29sIF9fYl9jb25kaXRpb24gPSAo
Y29uZGl0aW9uKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBpZiAoX19iX2NvbmRpdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgcGMgKz0gcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5v
cGVyYW5kOyAgICAgICAgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgKz0gT1BDT0RFX0xF
TkdUSChvcGNvZGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9F
TkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAg
IH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX1JFVFVSTih2YWx1ZSkgZG8geyAgICAg
ICAgICAgICAgICBcCisgICAgICAgIEpTVmFsdWUgX19yX3JldHVyblZhbHVlID0gKHZhbHVlKTsg
ICAgICBcCisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBc
CisgICAgICAgIExMSU5UX09QKDEpID0gX19yX3JldHVyblZhbHVlOyAgICAgICAgICBcCisgICAg
ICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGls
ZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wY29kZSwgdmFsdWUp
IGRvIHsgICAgICAgICAgICAgICBcCisgICAgICAgIEpTVmFsdWUgX19ycF9yZXR1cm5WYWx1ZSA9
ICh2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRf
T1AoMSkgPSBfX3JwX3JldHVyblZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBd
ID0gXAorICAgICAgICAgICAgSlNWYWx1ZTo6ZW5jb2RlKF9fcnBfcmV0dXJuVmFsdWUpOyAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUg
TExJTlRfQ0FMTF9FTkRfSU1QTChleGVjLCBjYWxsVGFyZ2V0KSBMTElOVF9SRVRVUk5fVFdPKChj
YWxsVGFyZ2V0KSwgKGV4ZWMpKQorCisjZGVmaW5lIExMSU5UX0NBTExfVEhST1coZXhlYywgcGMs
IGV4Y2VwdGlvblRvVGhyb3cpIGRvIHsgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0
ZSogX19jdF9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIEluc3RydWN0aW9uKiBfX2N0X3BjID0gKHBjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIGdsb2JhbERhdGEuZXhjZXB0aW9uID0gKGV4Y2Vw
dGlvblRvVGhyb3cpOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NBTExf
RU5EX0lNUEwoX19jdF9leGVjLCBjYWxsVG9UaHJvdyhfX2N0X2V4ZWMsIF9fY3RfcGMpKTsgXAor
ICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfQ0hFQ0tfRVhDRVBUSU9O
KGV4ZWMsIHBjKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0
ZSogX19jY2VfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIEluc3RydWN0aW9uKiBfX2NjZV9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChVTkxJS0VMWShnbG9iYWxEYXRhLmV4Y2Vw
dGlvbikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgTExJTlRf
Q0FMTF9FTkRfSU1QTChfX2NjZV9leGVjLCBjYWxsVG9UaHJvdyhfX2NjZV9leGVjLCBfX2NjZV9w
YykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9SRVRVUk4o
ZXhlYywgcGMsIGNhbGxUYXJnZXQpIGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAg
RXhlY1N0YXRlKiBfX2NyX2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3JfcGMgPSAocGMpOyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdm9pZCogX19jcl9jYWxsVGFyZ2V0
ID0gKGNhbGxUYXJnZXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJ
TlRfQ0FMTF9DSEVDS19FWENFUFRJT04oX19jcl9leGVjLT5jYWxsZXJGcmFtZSgpLCBfX2NyX3Bj
KTsgIFwKKyAgICAgICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2NyX2V4ZWMsIF9fY3JfY2FsbFRh
cmdldCk7ICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworZXh0ZXJuICJD
IiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqIGV4ZWMs
IEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBkYXRhTG9nKCIlcCAvICVwOiBleGVjdXRpbmcgYmMjJXp1LCBvcCMl
dTogVHJhY2UoJWQpOiAlZDogJWRcbiIsCisgICAgICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwK
KyAgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMg
LSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSksCisgICAgICAgICAg
ICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bj
b2RlKSwKKyAgICAgICAgICAgIGZyb21XaGVyZSwKKyAgICAgICAgICAgIG9wZXJhbmQsCisgICAg
ICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQpOworICAgIExMSU5UX0VORCgpOworfQorCitl
eHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV92YWx1ZShFeGVjU3RhdGUq
IGV4ZWMsIEluc3RydWN0aW9uKiBwYywgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQyhvcGVyYW5k
KS5qc1ZhbHVlKCk7CisgICAgdW5pb24geworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAg
dWludDMyX3QgdGFnOworICAgICAgICAgICAgdWludDMyX3QgcGF5bG9hZDsKKyAgICAgICAgfSBi
aXRzOworICAgICAgICBFbmNvZGVkSlNWYWx1ZSBhc1ZhbHVlOworICAgIH0gdTsKKyAgICB1LmFz
VmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOworICAgIGRhdGFMb2coIiVwIC8gJXA6IGV4
ZWN1dGluZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZDogJTA4eDolMDh4OiAlc1xu
IiwKKyAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICAgZXhlYywKKyAg
ICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5p
bnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICAgZnJv
bVdoZXJlLAorICAgICAgICAgICAgb3BlcmFuZCwKKyAgICAgICAgICAgIHBjW29wZXJhbmRdLnUu
b3BlcmFuZCwKKyAgICAgICAgICAgIHUuYml0cy50YWcsCisgICAgICAgICAgICB1LmJpdHMucGF5
bG9hZCwKKyAgICAgICAgICAgIHZhbHVlLmRlc2NyaXB0aW9uKCkpOworICAgIExMSU5UX0VORCgp
OworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZV9wcm9sb2d1ZSkKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIGRhdGFMb2coIiVwIC8gJXA6IGluIHByb2xvZ3VlLlxuIiwgZXhlYy0+
Y29kZUJsb2NrKCksIGV4ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitzdGF0aWMgdm9pZCB0
cmFjZUZ1bmN0aW9uUHJvbG9ndWUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBjaGFyKiBjb21tZW50
LCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5jdGlvbiogY2FsbGVl
ID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gY2FsbGVlLT5qc0V4ZWN1dGFibGUoKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVC
bG9jayA9ICZleGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICBkYXRh
TG9nKCIlcCAvICVwOiBpbiAlcyBvZiBmdW5jdGlvbiAlcCwgZXhlY3V0YWJsZSAlcDsgbnVtVmFy
cyA9ICV1LCBudW1QYXJhbWV0ZXJzID0gJXUsIG51bUNhbGxlZVJlZ2lzdGVycyA9ICV1LlxuIiwK
KyAgICAgICAgICAgIGNvZGVCbG9jaywgZXhlYywgY29tbWVudCwgY2FsbGVlLCBleGVjdXRhYmxl
LAorICAgICAgICAgICAgY29kZUJsb2NrLT5tX251bVZhcnMsIGNvZGVCbG9jay0+bnVtUGFyYW1l
dGVycygpLCBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKK30KKworTExJTlRfU0xP
V19QQVRIX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNhbGwgcHJvbG9n
dWUiLCBDb2RlRm9yQ2FsbCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFU
SF9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBw
cm9sb2d1ZSIsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9TTE9XX1BBVEhfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgdHJhY2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIGFyaXR5IGNo
ZWNrIiwgQ29kZUZvckNhbGwpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BB
VEhfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBhcml0eSBj
aGVjayIsIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9T
TE9XX1BBVEhfREVDTCh0cmFjZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGRhdGFMb2co
IiVwIC8gJXA6IGV4ZWN1dGluZyBiYyMlenUsICVzLCBzY29wZSAlcFxuIiwKKyAgICAgICAgICAg
IGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgIHN0YXRp
Y19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5i
ZWdpbigpKSwKKyAgICAgICAgICAgIG9wY29kZU5hbWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRl
cnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpXSwKKyAgICAgICAgICAgIGV4ZWMt
PnNjb3BlQ2hhaW4oKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNwZWNpYWxfdHJhY2UpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBkYXRhTG9nKCIl
cCAvICVwOiBleGVjdXRpbmcgc3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJldHVybiBQQyBp
cyAlcFxuIiwKKyAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICAgZXhl
YywKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9j
aygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERh
dGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAg
ICAgZXhlYy0+cmV0dXJuUEMoKS52YWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworaW5s
aW5lIGJvb2wgc2hvdWxkSklUKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBZb3UgY2FuIG1v
ZGlmeSB0aGlzIHRvIHR1cm4gb2ZmIEpJVHRpbmcgd2l0aG91dCByZWJ1aWxkaW5nIHRoZSB3b3Js
ZC4KKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpOworfQorCitlbnVt
IEVudHJ5S2luZCB7IFByb2xvZ3VlLCBBcml0eUNoZWNrIH07CitzdGF0aWMgU2xvd1BhdGhSZXR1
cm5UeXBlIGVudHJ5T1NSKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgY29uc3QgY2hhciAqbmFtZSwgRW50cnlLaW5kIGtpbmQpCit7CisjaWYg
RU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBkYXRhTG9nKCIlcDogRW50ZXJlZCAlcyB3aXRo
IGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywgbmFtZSwgY29kZUJsb2NrLT5sbGlu
dEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhl
YykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAg
TExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgaWYgKCFjb2RlQmxvY2stPmpp
dENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9P
U1IpCisgICAgICAgIGRhdGFMb2coIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7
CisjZW5kaWYKKyAgICB9CisgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgaWYgKGtpbmQg
PT0gUHJvbG9ndWUpCisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRD
b2RlKCkuZXhlY3V0YWJsZUFkZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7CisgICAgQVNTRVJUKGtp
bmQgPT0gQXJpdHlDaGVjayk7CisgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJ
VENvZGVXaXRoQXJpdHlDaGVjaygpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGV4ZWMpOworfQorCitM
TElOVF9TTE9XX1BBVEhfREVDTChlbnRyeV9vc3IpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4
ZWMsIHBjLCBleGVjLT5jb2RlQmxvY2soKSwgImVudHJ5X29zciIsIFByb2xvZ3VlKTsKK30KKwor
TExJTlRfU0xPV19QQVRIX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAg
IHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5q
c0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlf
b3NyX2Z1bmN0aW9uX2Zvcl9jYWxsIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9TTE9XX1BBVEhf
REVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZW50
cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxl
KCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3QiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKQoreworICAgIHJldHVy
biBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1
dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1
bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2siLCBBcml0eUNoZWNrKTsKK30KKworTExJTlRfU0xP
V19QQVRIX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykK
K3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxl
ZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1
Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayIsIEFyaXR5
Q2hlY2spOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChsb29wX29zcikKK3sKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShK
SVRfVkVSQk9TRV9PU1IpCisgICAgZGF0YUxvZygiJXA6IEVudGVyZWQgbG9vcF9vc3Igd2l0aCBl
eGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRl
Q291bnRlcigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7Cisg
ICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JF
VFVSTl9UV08oMCwgZXhlYyk7CisgICAgfQorICAgIAorICAgIGlmICghY29kZUJsb2NrLT5qaXRD
b21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NS
KQorICAgICAgICBkYXRhTG9nKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOwor
I2VuZGlmCisgICAgfQorICAgIGNvZGVCbG9jay0+aml0U29vbigpOworICAgIAorICAgIEFTU0VS
VChjb2RlQmxvY2stPmdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAg
CisgICAgVmVjdG9yPEJ5dGVjb2RlQW5kTWFjaGluZU9mZnNldD4gbWFwOworICAgIGNvZGVCbG9j
ay0+aml0Q29kZU1hcCgpLT5kZWNvZGUobWFwKTsKKyAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZz
ZXQqIG1hcHBpbmcgPSBiaW5hcnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNp
Z25lZCwgQnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29kZUluZGV4PihtYXAuYmVn
aW4oKSwgbWFwLnNpemUoKSwgcGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkp
OworICAgIEFTU0VSVChtYXBwaW5nKTsKKyAgICBBU1NFUlQobWFwcGluZy0+bV9ieXRlY29kZUlu
ZGV4ID09IHN0YXRpY19jYXN0PHVuc2lnbmVkPihwYyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25z
KCkuYmVnaW4oKSkpOworICAgIAorICAgIHZvaWQqIGp1bXBUYXJnZXQgPSBjb2RlQmxvY2stPmdl
dEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KG1hcHBpbmctPm1fbWFjaGluZUNv
ZGVPZmZzZXQpOworICAgIEFTU0VSVChqdW1wVGFyZ2V0KTsKKyAgICAKKyAgICBMTElOVF9SRVRV
Uk5fVFdPKGp1bXBUYXJnZXQsIGV4ZWMpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChyZXBs
YWNlKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7Cisg
ICAgCisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBkYXRhTG9nKCIlcDogRW50ZXJl
ZCByZXBsYWNlIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxv
Y2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoc2hvdWxk
SklUKGV4ZWMpKSB7CisgICAgICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmds
b2JhbERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICAgICAg
ZGF0YUxvZygiICAgIENvZGUgd2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAg
ICAgICB9CisgICAgICAgIGNvZGVCbG9jay0+aml0U29vbigpOworICAgIH0gZWxzZQorICAgICAg
ICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29vbigpOworICAgIExMSU5UX0VORF9JTVBMKCk7
Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORworICAgIGRhdGFMb2co
IkNoZWNraW5nIHN0YWNrIGhlaWdodCB3aXRoIGV4ZWMgPSAlcC5cbiIsIGV4ZWMpOworICAgIGRh
dGFMb2coIkNvZGVCbG9jayA9ICVwLlxuIiwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAgIGRhdGFM
b2coIk51bSBjYWxsZWUgcmVnaXN0ZXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9u
dW1DYWxsZWVSZWdpc3RlcnMpOworICAgIGRhdGFMb2coIk51bSB2YXJzID0gJXUuXG4iLCBleGVj
LT5jb2RlQmxvY2soKS0+bV9udW1WYXJzKTsKKyAgICBkYXRhTG9nKCJDdXJyZW50IGVuZCBpcyBh
dCAlcC5cbiIsIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCku
ZW5kKCkpOworI2VuZGlmCisgICAgQVNTRVJUKCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2Rl
QmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnNdID4gZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVy
cHJldGVyLT5yZWdpc3RlckZpbGUoKS5lbmQoKSk7CisgICAgaWYgKFVOTElLRUxZKCFnbG9iYWxE
YXRhLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVtl
eGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnNdKSkpIHsKKyAgICAgICAgZXhl
YyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7CisgICAgICAgIGdsb2JhbERhdGEuZXhjZXB0aW9uID0g
Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93
SW5DYWxsZXIoZXhlYyk7CisgICAgICAgIHBjID0gcmV0dXJuVG9UaHJvd0ZvclRocm93bkV4Y2Vw
dGlvbihleGVjKTsKKyAgICB9CisgICAgTExJTlRfRU5EX0lNUEwoKTsKK30KKworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfYXJpdHlDaGVjaykKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIEV4ZWNTdGF0ZSogbmV3RXhlYyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVj
a0ZvcihleGVjLCAmZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVG
b3JDYWxsKTsKKyAgICBpZiAoIW5ld0V4ZWMpIHsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxl
ckZyYW1lKCk7CisgICAgICAgIGdsb2JhbERhdGEuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVy
Zmxvd0Vycm9yKGV4ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYyk7
CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNfY2Fz
dDx1aW50cHRyX3Q+KDEpKSwgZXhlYyk7CisgICAgfQorICAgIExMSU5UX1JFVFVSTl9UV08oMCwg
bmV3RXhlYyk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3Rf
YXJpdHlDaGVjaykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEV4ZWNTdGF0ZSogbmV3RXhl
YyA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihleGVjLCAmZ2xvYmFsRGF0YS5pbnRl
cnByZXRlci0+cmVnaXN0ZXJGaWxlKCksIENvZGVGb3JDb25zdHJ1Y3QpOworICAgIGlmICghbmV3
RXhlYykgeworICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZ2xv
YmFsRGF0YS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAg
ICAgIGludGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJO
X1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVj
KTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hY3RpdmF0aW9uKQoreworICAgIExMSU5U
X0JFR0lOKCk7CisjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKKyAgICBkYXRhTG9nKCJDcmVh
dGluZyBhbiBhY3RpdmF0aW9uLCBleGVjID0gJXAhXG4iLCBleGVjKTsKKyNlbmRpZgorICAgIEpT
QWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRlKGdsb2JhbERhdGEs
IGV4ZWMsIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWMtPmNvZGVCbG9jaygp
LT5vd25lckV4ZWN1dGFibGUoKSkpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2Nv
cGVDaGFpbigpLT5wdXNoKGFjdGl2YXRpb24pKTsKKyAgICBMTElOVF9SRVRVUk4oSlNWYWx1ZShh
Y3RpdmF0aW9uKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVf
YXJndW1lbnRzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSBhcmd1bWVudHMg
PSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKGdsb2JhbERhdGEsIGV4ZWMpKTsKKyAgICBMTElO
VF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUub3BlcmFu
ZCkgPSBhcmd1bWVudHM7CisgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1lbnRz
UmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcykKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0gYXNGdW5jdGlv
bihleGVjLT5jYWxsZWUoKSk7CisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIENvbnN0
cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBBU1NFUlQoY29uc3RydWN0b3ItPm1ldGhvZFRh
YmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEpID09IENv
bnN0cnVjdFR5cGVKUyk7CisjZW5kaWYKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZTsK
KyAgICBKU1ZhbHVlIHByb3RvID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmIChwcm90
by5pc09iamVjdCgpKQorICAgICAgICBzdHJ1Y3R1cmUgPSBhc09iamVjdChwcm90byktPmluaGVy
aXRvcklEKGdsb2JhbERhdGEpOworICAgIGVsc2UKKyAgICAgICAgc3RydWN0dXJlID0gY29uc3Ry
dWN0b3ItPnNjb3BlKCktPmdsb2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUoKTsKKyAg
ICAKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3RydWN0dXJl
KSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb252ZXJ0X3RoaXMpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSkuanNWYWx1
ZSgpOworICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBMTElOVF9SRVRVUk4odjEu
dG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X25ld19vYmplY3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oY29u
c3RydWN0RW1wdHlPYmplY3QoZXhlYykpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfbmV3X2FycmF5KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJO
KGNvbnN0cnVjdEFycmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4oJkxMSU5UX09QKDIp
KSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9uZXdfYXJyYXlfYnVmZmVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVU
VVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFudEJ1ZmZl
cihwY1syXS51Lm9wZXJhbmQpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX25ld19yZWdleHApCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBSZWdFeHAqIHJlZ0V4cCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZWdleHAocGNbMl0udS5vcGVy
YW5kKTsKKyAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQorICAgICAgICBMTElOVF9USFJPVyhj
cmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBmbGFnIHN1cHBsaWVkIHRvIFJlZ0V4cCBj
b25zdHJ1Y3Rvci4iKSk7CisgICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6Y3JlYXRlKGds
b2JhbERhdGEsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwKSk7Cit9CisKK0xMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9ub3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElO
VF9SRVRVUk4oanNCb29sZWFuKCFMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhl
YykpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2VxKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjplcXVhbChl
eGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7
Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXEpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjplcXVhbChleGVj
LCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9
CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdHJpY3RlcSkKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6c3RyaWN0RXF1
YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
KSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbnN0cmljdGVxKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNWYWx1ZTo6
c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbGVzcykK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNz
PHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xlc3NlcSkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzRXE8
dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1
ZSgpKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ3JlYXRlcikKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNMZXNzPGZh
bHNlPihleGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9ncmVhdGVyZXEpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzTGVzc0Vx
PGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wcmVfaW5jKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09Q
KDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSArIDEpKTsKK30KKworTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3ByZV9kZWMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElO
VF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC0g
MSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcG9zdF9pbmMpCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1
ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0ganNOdW1iZXIocmVzdWx0ICsg
MSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOworfQorCitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfcG9zdF9kZWMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBkb3VibGUgcmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOwor
ICAgIExMSU5UX09QKDIpID0ganNOdW1iZXIocmVzdWx0IC0gMSk7CisgICAgTExJTlRfUkVUVVJO
KGpzTnVtYmVyKHJlc3VsdCkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
dG9fanNudW1iZXIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIExMSU5UX1JFVFVSTihqc051bWJlcigtTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9O
dW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2FkZCkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgdjEgPSBMTElOVF9PUF9DKDIpLmpz
VmFsdWUoKTsKKyAgICBKU1ZhbHVlIHYyID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAg
CisjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKKyAgICBkYXRhTG9nKCJUcnlpbmcgdG8gYWRk
ICVzIiwgdjEuZGVzY3JpcHRpb24oKSk7CisgICAgZGF0YUxvZygiIHRvICVzLlxuIiwgdjIuZGVz
Y3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNTdHJpbmcoKSAmJiAhdjIu
aXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5n
KHYxKSwgdjIudG9TdHJpbmcoZXhlYykpKTsKKyAgICAKKyAgICBpZiAodjEuaXNOdW1iZXIoKSAm
JiB2Mi5pc051bWJlcigpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIodjEuYXNOdW1i
ZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNBZGRTbG93
Q2FzZShleGVjLCB2MSwgdjIpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X211bCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAqIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9zdWIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1i
ZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZGl2KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpz
TnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX21vZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVS
Tihqc051bWJlcihmbW9kKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpLCBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpKTsKK30KKworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2xzaGlmdCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4
ZWMpIDw8IChMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSAmIDMxKSkpOwor
fQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcnNoaWZ0KQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLnRvSW50MzIoZXhlYykgPj4gKExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4
ZWMpICYgMzEpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF91cnNoaWZ0
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5U
X09QX0MoMikuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpID4+IChMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKS50b1VJbnQzMihleGVjKSAmIDMxKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfYml0YW5kKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJO
KGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgJiBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9iaXRvcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JF
VFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpIHwgTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfYml0eG9yKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJ
TlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykg
XiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRub3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIofkxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIo
ZXhlYykpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NoZWNrX2hhc19p
bnN0YW5jZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgYmFzZVZhbCA9IExM
SU5UX09QX0MoMSkuanNWYWx1ZSgpOworI2lmbmRlZiBOREVCVUcKKyAgICBUeXBlSW5mbyB0eXBl
SW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VSVCghYmFzZVZhbC5pc09iamVjdCgpCisg
ICAgICAgICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVjdChiYXNlVmFsKS0+c3RydWN0dXJlKCkt
PnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKTsKKyNlbmRpZgorICAgIExMSU5U
X1RIUk9XKGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4ZWMsICJpbnN0YW5jZW9mIiwgYmFzZVZh
bCkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5zdGFuY2VvZikKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xv
d1BhdGhzOjpvcEluc3RhbmNlT2ZTbG93KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCkpKSk7Cit9CisK
K0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90eXBlb2YpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2lzX3VuZGVmaW5lZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgdiA9IExM
SU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4odi5pc0Nl
bGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJhZGVzQXNV
bmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5U
X1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkuaXNCb29sZWFuKCkpKTsK
K30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lzX251bWJlcikKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfaXNfc3RyaW5nKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihpc0pTU3RyaW5nKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNfb2JqZWN0KQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzT2JqZWN0VHlwZShMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lz
X2Z1bmN0aW9uKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihqc0lzRnVuY3Rpb25UeXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW4pCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihleGVjLCBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisK
K0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmUsIENvbW1vblNsb3dQ
YXRoczo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJd
LnUub3BlcmFuZCkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29s
dmVfc2tpcCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxF
RCgKKyAgICAgICAgb3BfcmVzb2x2ZV9za2lwLAorICAgICAgICBDb21tb25TbG93UGF0aHM6Om9w
UmVzb2x2ZVNraXAoCisgICAgICAgICAgICBleGVjLAorICAgICAgICAgICAgZXhlYy0+Y29kZUJs
b2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwKKyAgICAgICAgICAgIHBjWzNdLnUu
b3BlcmFuZCkpOworfQorCitzdGF0aWMgSlNWYWx1ZSByZXNvbHZlR2xvYmFsKEV4ZWNTdGF0ZSog
ZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGNvZGVC
bG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNHbG9iYWxP
YmplY3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0udS5vcGVyYW5kOworICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgCisgICAgQVNT
RVJUX1VOVVNFRChzdHJ1Y3R1cmUsIHN0cnVjdHVyZSAhPSBnbG9iYWxPYmplY3QtPnN0cnVjdHVy
ZSgpKTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRlbnRpZmll
cihwcm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsKKyAgICAK
KyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQsIHNsb3Qp
KSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBpZGVudCk7
CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2JqZWN0LT5z
dHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAgJiYgc2xv
dC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgcGNbM10udS5zdHJ1
Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29kZUJsb2Nr
LT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7CisgICAgICAg
ICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIGV4ZWMtPmdsb2JhbERhdGEo
KS5leGNlcHRpb24gPSBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlkZW50KTsK
KyAgICByZXR1cm4gSlNWYWx1ZSgpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcmVzb2x2ZV9nbG9iYWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRV
Uk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWwsIHJlc29sdmVHbG9iYWwoZXhlYywgcGMpKTsK
K30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfZ2xvYmFsX2R5bmFt
aWMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3Bf
cmVzb2x2ZV9nbG9iYWxfZHluYW1pYywgcmVzb2x2ZUdsb2JhbChleGVjLCBwYykpOworfQorCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxf
ZHluYW1pYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxF
RChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljLCBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZShl
eGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpKSk7Cit9
CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX2Jhc2UpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVCbG9jaygp
LT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKHBjWzNdLnUub3BlcmFuZCkg
eworICAgICAgICBKU1ZhbHVlIGJhc2UgPSBKU0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlkZW50LCBl
eGVjLT5zY29wZUNoYWluKCksIHRydWUpOworICAgICAgICBpZiAoIWJhc2UpCisgICAgICAgICAg
ICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMs
IGlkZW50LnVzdHJpbmcoKSkpOworICAgICAgICBMTElOVF9SRVRVUk4oYmFzZSk7CisgICAgfQor
ICAgIAorICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2Jhc2UsIEpTQzo6cmVz
b2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgZmFsc2UpKTsKK30KKwor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Vuc3VyZV9wcm9wZXJ0eV9leGlzdHMpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QoTExJ
TlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3QpOworICAg
IElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0u
dS5vcGVyYW5kKTsKKyAgICBpZiAoIW9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMsIGlkZW50
LCBzbG90KSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlkR2xvYmFs
QXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfd2l0aF9iYXNlKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6
Om9wUmVzb2x2ZVdpdGhCYXNlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBj
WzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkg
c2hvdWxkIGhhdmUgcHJvZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZH
IHdvbid0IHVzZSBpdC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3Jlc29sdmVfd2l0aF90aGlzKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhUaGlzKGV4
ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5U
X09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9
IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5n
LCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4KKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9p
ZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhl
Yy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50
aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7CisKKyAg
ICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3QpOworICAg
IExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDEpID0gcmVzdWx0OworCisg
ICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkK
KyAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAmJiBzbG90
LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAgICAgICAg
CisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAK
KyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAg
ICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5n
KCkpIHsKKyAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAg
ICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUpOwor
ICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAqIHNpemVv
ZihKU1ZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwY1tPUENPREVfTEVOR1RI
KG9wX2dldF9ieV9pZCkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFsdWU6OmVu
Y29kZShyZXN1bHQpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50
aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCk7Cisg
ICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAgUHJvcGVy
dHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKKyAgICBMTElOVF9SRVRVUk4oYmFzZVZhbHVlLmdldChl
eGVjLCBpZGVudCwgc2xvdCkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cHV0X2J5X2lkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxv
Y2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9j
ay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIAorICAgIEpTVmFsdWUgYmFzZVZh
bHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qo
Y29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAg
ICAgICAgYXNPYmplY3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGdsb2JhbERhdGEsIGlkZW50LCBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgZWxzZQorICAgICAgICBiYXNlVmFs
dWUucHV0KGV4ZWMsIGlkZW50LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAg
TExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwo
KQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsKKyAgICAgICAgCisgICAgICAgIEpT
Q2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAgICAgaWYg
KCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAgICYmICFz
dHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkKKyAgICAgICAg
ICAgICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIHN0cnVjdHVy
ZS0+cHJldmlvdXNJRCgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IHN0cnVjdHVyZS0+
cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGlz
IGlzIG5lZWRlZCBiZWNhdXNlIHNvbWUgb2YgdGhlIG1ldGhvZHMgd2UgY2FsbAorICAgICAgICAg
ICAgICAgICAgICAvLyBiZWxvdyBtYXkgR0MuCisgICAgICAgICAgICAgICAgICAgIHBjWzBdLnUu
b3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsKKworICAg
ICAgICAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNlQ2VsbCk7
CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RydWN0
dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOworICAgICAgICAgICAgICAgICAgICBwY1s0
XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxEYXRhLCBj
b2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zmc2V0KCkg
KiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3RydWN0dXJl
LnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgICAgIFN0cnVjdHVy
ZUNoYWluKiBjaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7CisgICAgICAg
ICAgICAgICAgICAgIEFTU0VSVChjaGFpbik7CisgICAgICAgICAgICAgICAgICAgIHBjWzddLnUu
c3RydWN0dXJlQ2hhaW4uc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwg
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOworICAgICAgICAgICAgICAgICAg
ICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRf
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNbMF0udS5v
cGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOworICAgICAg
ICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgZ2xv
YmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAg
ICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICogc2l6ZW9m
KEpTVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X2lk
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVj
LT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvT2JqZWN0KGV4ZWMpOworICAgIGJvb2wgY291bGREZWxldGUgPSBiYXNlT2Jq
ZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBjb2Rl
QmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3RyaWN0TW9k
ZSgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0
byBkZWxldGUgcHJvcGVydHkuIikpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGRE
ZWxldGUpKTsKK30KKworaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCit7CisgICAgaWYgKExJS0VMWShi
YXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7CisgICAgICAgIGlm
IChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blByb3BlcnR5
KGV4ZWMsIGFzU3RyaW5nKHN1YnNjcmlwdCktPnZhbHVlKGV4ZWMpKSkKKyAgICAgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIGlmIChzdWJzY3JpcHQuaXNVSW50MzIoKSkg
eworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlm
IChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2FuR2V0SW5k
ZXgoaSkpCisgICAgICAgICAgICByZXR1cm4gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0SW5kZXgo
ZXhlYywgaSk7CisgICAgICAgIAorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUp
ICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKQorICAgICAgICAg
ICAgcmV0dXJuIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkpOworICAg
ICAgICAKKyAgICAgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgaSk7CisgICAgfQorICAg
IAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSk7CisgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJvcGVydHkp
OworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbCkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9nZXRfYnlfdmFs
LCBnZXRCeVZhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5q
c1ZhbHVlKCkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9hcmd1
bWVudF9ieV92YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGFyZ3VtZW50
cyA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykgeworICAgICAg
ICBhcmd1bWVudHMgPSBBcmd1bWVudHM6OmNyZWF0ZShnbG9iYWxEYXRhLCBleGVjKTsKKyAgICAg
ICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIExMSU5UX09QKDIpID0gYXJndW1l
bnRzOworICAgICAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rl
cihwY1syXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAgICB9CisgICAgCisgICAgTExJTlRf
UkVUVVJOKGdldEJ5VmFsKGV4ZWMsIGFyZ3VtZW50cywgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkp
KTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9wbmFtZSkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVjLCBMTElO
VF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIAorICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7
CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsKKyAgICBK
U1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisgICAgaWYgKExJ
S0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9IHN1YnNj
cmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1ZSkpIHsKKyAg
ICAgICAgICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1ZSk7CisgICAgICAg
ICAgICBpZiAoanNBcnJheS0+Y2FuU2V0SW5kZXgoaSkpCisgICAgICAgICAgICAgICAganNBcnJh
eS0+c2V0SW5kZXgoZ2xvYmFsRGF0YSwgaSwgdmFsdWUpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5kZXgoanNBcnJheSwgZXhlYywgaSwgdmFsdWUp
OworICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGlzSlNC
eXRlQXJyYXkoYmFzZVZhbHVlKQorICAgICAgICAgICAgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVl
KS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAgICAgICAgICAgIEpTQnl0ZUFycmF5KiBqc0J5dGVB
cnJheSA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAodmFsdWUuaXNJ
bnQzMigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVl
LmFzSW50MzIoKSk7CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAgICAgIGpz
Qnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5hc051bWJlcigpKTsKKyAgICAgICAgICAgICAg
ICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBiYXNlVmFs
dWUucHV0KGV4ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQorICAg
IAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5nKGV4ZWMp
LT52YWx1ZShleGVjKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgUHV0UHJv
cGVydHlTbG90IHNsb3QoZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBi
YXNlVmFsdWUucHV0KGV4ZWMsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFsKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDIp
LmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50b09iamVj
dChleGVjKTsKKyAgICAKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMykuanNW
YWx1ZSgpOworICAgIAorICAgIGJvb2wgY291bGREZWxldGU7CisgICAgCisgICAgdWludDMyX3Qg
aTsKKyAgICBpZiAoc3Vic2NyaXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAgY291bGREZWxldGUg
PSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgoYmFzZU9i
amVjdCwgZXhlYywgaSk7CisgICAgZWxzZSB7CisgICAgICAgIExMSU5UX0NIRUNLX0VYQ0VQVElP
TigpOworICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50b1N0cmlu
ZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsK
KyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQ
cm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBwcm9wZXJ0eSk7CisgICAgfQorICAgIAorICAgIGlm
ICghY291bGREZWxldGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQorICAg
ICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBkZWxldGUg
cHJvcGVydHkuIikpOworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291bGREZWxl
dGUpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pbmRleCkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnB1dChl
eGVjLCBwY1syXS51Lm9wZXJhbmQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKTsKKyAgICBMTElO
VF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9nZXR0ZXJf
c2V0dGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQVNTRVJUKExMSU5UX09QKDEpLmpz
VmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2JqZWN0KExM
SU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgCisgICAgR2V0dGVyU2V0dGVyKiBhY2Nlc3NvciA9
IEdldHRlclNldHRlcjo6Y3JlYXRlKGV4ZWMpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
OworICAgIAorICAgIEpTVmFsdWUgZ2V0dGVyID0gTExJTlRfT1AoMykuanNWYWx1ZSgpOworICAg
IEpTVmFsdWUgc2V0dGVyID0gTExJTlRfT1AoNCkuanNWYWx1ZSgpOworICAgIEFTU0VSVChnZXR0
ZXIuaXNPYmplY3QoKSB8fCBnZXR0ZXIuaXNVbmRlZmluZWQoKSk7CisgICAgQVNTRVJUKHNldHRl
ci5pc09iamVjdCgpIHx8IHNldHRlci5pc1VuZGVmaW5lZCgpKTsKKyAgICBBU1NFUlQoZ2V0dGVy
LmlzT2JqZWN0KCkgfHwgc2V0dGVyLmlzT2JqZWN0KCkpOworICAgIAorICAgIGlmICghZ2V0dGVy
LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIGFjY2Vzc29yLT5zZXRHZXR0ZXIoZ2xvYmFsRGF0YSwg
YXNPYmplY3QoZ2V0dGVyKSk7CisgICAgaWYgKCFzZXR0ZXIuaXNVbmRlZmluZWQoKSkKKyAgICAg
ICAgYWNjZXNzb3ItPnNldFNldHRlcihnbG9iYWxEYXRhLCBhc09iamVjdChzZXR0ZXIpKTsKKyAg
ICBiYXNlT2JqLT5wdXREaXJlY3RBY2Nlc3NvcigKKyAgICAgICAgZ2xvYmFsRGF0YSwKKyAgICAg
ICAgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwKKyAgICAg
ICAgYWNjZXNzb3IsIEFjY2Vzc29yKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2ptcF9zY29wZXMpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICB1bnNpZ25lZCBjb3VudCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBTY29wZUNoYWluTm9k
ZSogdG1wID0gZXhlYy0+c2NvcGVDaGFpbigpOworICAgIHdoaWxlIChjb3VudC0tKQorICAgICAg
ICB0bXAgPSB0bXAtPnBvcCgpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4odG1wKTsKKyAgICBw
YyArPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9qdHJ1ZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExM
SU5UX0JSQU5DSChvcF9qdHJ1ZSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9Cb29sZWFuKGV4
ZWMpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2pmYWxzZSkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX0JSQU5DSChvcF9qZmFsc2UsICFMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfamxlc3MpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFO
Q0gob3Bfamxlc3MsIGpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2pubGVzcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX0JSQU5DSChv
cF9qbmxlc3MsICFqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCksIExM
SU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9qZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX0JSQU5DSChv
cF9qZ3JlYXRlciwganNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2puZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX0JSQU5D
SChvcF9qbmdyZWF0ZXIsICFqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfamxlc3NlcSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX0JS
QU5DSChvcF9qbGVzc2VxLCBqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFs
dWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2pubGVzc2VxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
QlJBTkNIKG9wX2pubGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5q
c1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9qZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
TExJTlRfQlJBTkNIKG9wX2pncmVhdGVyZXEsIGpzTGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2puZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlcmVxLCAhanNMZXNzRXE8ZmFsc2U+KGV4
ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOwor
fQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3dpdGNoX2ltbSkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCk7CisgICAgQVNTRVJUKHNjcnV0aW5lZS5pc0RvdWJsZSgpKTsKKyAgICBkb3VibGUgdmFs
dWUgPSBzY3J1dGluZWUuYXNEb3VibGUoKTsKKyAgICBpbnQzMl90IGludFZhbHVlID0gc3RhdGlj
X2Nhc3Q8aW50MzJfdD4odmFsdWUpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5v
cGVyYW5kOworICAgIGlmICh2YWx1ZSA9PSBpbnRWYWx1ZSkgeworICAgICAgICBDb2RlQmxvY2sq
IGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2RlQmxvY2st
PmltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZvclZhbHVl
KGludFZhbHVlLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGMgKz0gZGVm
YXVsdE9mZnNldDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3N3aXRjaF9zdHJpbmcpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1Zh
bHVlIHNjcnV0aW5lZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIGludCBkZWZhdWx0
T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlmICghc2NydXRpbmVlLmlzU3RyaW5nKCkp
CisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7CisgICAgZWxzZSB7CisgICAgICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9IGNvZGVC
bG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0Rm9yVmFs
dWUoYXNTdHJpbmcoc2NydXRpbmVlKS0+dmFsdWUoZXhlYykuaW1wbCgpLCBkZWZhdWx0T2Zmc2V0
KTsKKyAgICB9CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9uZXdfZnVuYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9jay0+Y29k
ZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUKKyAgICAgICAgICAgfHwgIWNvZGVCbG9jay0+bmVlZHNG
dWxsU2NvcGVDaGFpbigpCisgICAgICAgICAgIHx8IGV4ZWMtPnVuY2hlY2tlZFIoY29kZUJsb2Nr
LT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKKyNpZiBMTElOVF9TTE9XX1BBVEhf
VFJBQ0lORworICAgIGRhdGFMb2coIkNyZWF0aW5nIGZ1bmN0aW9uIVxuIik7CisjZW5kaWYKKyAg
ICBMTElOVF9SRVRVUk4oY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbMl0udS5vcGVyYW5kKS0+
bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX25ld19mdW5jX2V4cCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgRnVuY3Rpb25FeGVj
dXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzJdLnUub3BlcmFu
ZCk7CisgICAgSlNGdW5jdGlvbiogZnVuYyA9IGZ1bmN0aW9uLT5tYWtlKGV4ZWMsIGV4ZWMtPnNj
b3BlQ2hhaW4oKSk7CisgICAgCisgICAgaWYgKCFmdW5jdGlvbi0+bmFtZSgpLmlzTnVsbCgpKSB7
CisgICAgICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIGZ1bmN0aW9uU2NvcGVPYmplY3QgPSBKU1N0
YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgZnVuY3Rpb24tPm5hbWUoKSwgZnVuYywgUmVh
ZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgZnVuYy0+c2V0U2NvcGUoZ2xvYmFsRGF0YSwg
ZnVuYy0+c2NvcGUoKS0+cHVzaChmdW5jdGlvblNjb3BlT2JqZWN0KSk7CisgICAgfQorICAgIAor
ICAgIExMSU5UX1JFVFVSTihmdW5jKTsKK30KKworc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBo
YW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgSlNW
YWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgIEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5z
ZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0Q29k
ZUJsb2NrKDApOworCisgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7CisgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEo
Y2FsbGVlLCBjYWxsRGF0YSk7CisgICAgCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSAhPSBDYWxs
VHlwZUpTKTsKKyAgICAKKyAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlSG9zdCkgewor
ICAgICAgICAgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNWYWx1ZTo6ZGVj
b2RlKGNhbGxEYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJl
dF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7CisgICAgICAgIH0KKyAgICAg
ICAgCisjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKKyAgICAgICAgZGF0YUxvZygiQ2FsbCBj
YWxsZWUgaXMgbm90IGEgZnVuY3Rpb246ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7Cisj
ZW5kaWYKKworICAgICAgICBBU1NFUlQoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKTsKKyAgICAg
ICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoZXhl
YywgY2FsbGVlKSk7CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVj
dCk7CisgICAgCisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIENvbnN0cnVj
dFR5cGUgY29uc3RydWN0VHlwZSA9IGdldENvbnN0cnVjdERhdGEoY2FsbGVlLCBjb25zdHJ1Y3RE
YXRhKTsKKyAgICAKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSAhPSBDb25zdHJ1Y3RUeXBlSlMp
OworICAgIAorICAgIGlmIChjb25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVIb3N0KSB7Cisg
ICAgICAgIGdsb2JhbERhdGEuaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShj
b25zdHJ1Y3REYXRhLm5hdGl2ZS5mdW5jdGlvbihleGVjQ2FsbGVlKSk7CisKKyAgICAgICAgTExJ
TlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAgICB9CisgICAgCisjaWYgTExJTlRfU0xPV19QQVRI
X1RSQUNJTkcKKyAgICBkYXRhTG9nKCJDb25zdHJ1Y3RvciBjYWxsZWUgaXMgbm90IGEgZnVuY3Rp
b246ICVzXG4iLCBjYWxsZWUuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChj
b25zdHJ1Y3RUeXBlID09IENvbnN0cnVjdFR5cGVOb25lKTsKKyAgICBMTElOVF9DQUxMX1RIUk9X
KGV4ZWMsIHBjLCBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBjYWxsZWUpKTsKK30K
KworaW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2Fs
bGVlLCBJbnN0cnVjdGlvbiogcGMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSlNWYWx1
ZSBjYWxsZWVBc1ZhbHVlLCBMTEludENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZvID0gMCkKK3sK
KyNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORworICAgIGRhdGFMb2coIlBlcmZvcm1pbmcgY2Fs
bCB3aXRoIHJlY29yZGVkIFBDID0gJXBcbiIsIGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCktPmN1
cnJlbnRWUEMoKSk7CisjZW5kaWYKKworICAgIEpTQ2VsbCogY2FsbGVlQXNGdW5jdGlvbkNlbGwg
PSBnZXRKU0Z1bmN0aW9uKGNhbGxlZUFzVmFsdWUpOworICAgIGlmICghY2FsbGVlQXNGdW5jdGlv
bkNlbGwpCisgICAgICAgIHJldHVybiBoYW5kbGVIb3N0Q2FsbChleGVjQ2FsbGVlLCBwYywgY2Fs
bGVlQXNWYWx1ZSwga2luZCk7CisgICAgCisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5j
dGlvbihjYWxsZWVBc0Z1bmN0aW9uQ2VsbCk7CisgICAgU2NvcGVDaGFpbk5vZGUqIHNjb3BlID0g
Y2FsbGVlLT5zY29wZVVuY2hlY2tlZCgpOworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9
ICpzY29wZS0+Z2xvYmFsRGF0YTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKHNjb3Bl
KTsKKyAgICBFeGVjdXRhYmxlQmFzZSogZXhlY3V0YWJsZSA9IGNhbGxlZS0+ZXhlY3V0YWJsZSgp
OworICAgIAorICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjb2RlUHRyOworICAgIENvZGVCbG9j
ayogY29kZUJsb2NrID0gMDsKKyAgICBpZiAoZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKSkK
KyAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVGb3Ioa2luZCku
YWRkcmVzc0ZvckNhbGwoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxl
KiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihl
eGVjdXRhYmxlKTsKKyAgICAgICAgSlNPYmplY3QqIGVycm9yID0gZnVuY3Rpb25FeGVjdXRhYmxl
LT5jb21waWxlRm9yKGV4ZWNDYWxsZWUsIGNhbGxlZS0+c2NvcGUoKSwga2luZCk7CisgICAgICAg
IGlmIChlcnJvcikKKyAgICAgICAgICAgIExMSU5UX0NBTExfVEhST1coZXhlY0NhbGxlZS0+Y2Fs
bGVyRnJhbWUoKSwgcGMsIGVycm9yKTsKKyAgICAgICAgY29kZUJsb2NrID0gJmZ1bmN0aW9uRXhl
Y3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgICAgIEFTU0VSVChjb2Rl
QmxvY2spOworICAgICAgICBpZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQor
ICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29k
ZVdpdGhBcml0eUNoZWNrRm9yKGtpbmQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb2Rl
UHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJl
c3NGb3JDYWxsKCk7CisgICAgfQorICAgIAorICAgIGlmIChjYWxsTGlua0luZm8pIHsKKyAgICAg
ICAgaWYgKGNhbGxMaW5rSW5mby0+aXNPbkxpc3QoKSkKKyAgICAgICAgICAgIGNhbGxMaW5rSW5m
by0+cmVtb3ZlKCk7CisgICAgICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlciA9IGV4ZWNDYWxsZWUt
PmNhbGxlckZyYW1lKCk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+Y2FsbGVlLnNldChnbG9iYWxE
YXRhLCBleGVjQ2FsbGVyLT5jb2RlQmxvY2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7
CisgICAgICAgIGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuc2V0KGdsb2JhbERhdGEsIGV4
ZWNDYWxsZXItPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSwgY2FsbGVlKTsKKyAgICAg
ICAgY2FsbExpbmtJbmZvLT5tYWNoaW5lQ29kZVRhcmdldCA9IGNvZGVQdHI7CisgICAgICAgIGlm
IChjb2RlQmxvY2spCisgICAgICAgICAgICBjb2RlQmxvY2stPmxpbmtJbmNvbWluZ0NhbGwoY2Fs
bExpbmtJbmZvKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxl
ZSwgcGMsIGNvZGVQdHIuZXhlY3V0YWJsZUFkZHJlc3MoKSk7Cit9CisKK2lubGluZSBTbG93UGF0
aFJldHVyblR5cGUgZ2VuZXJpY0NhbGwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMs
IENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgor
ICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBmcmFtZS4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0
byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5lY2Vzc2FyeS4KKyAgICAvLyAtIElmIHBvc3NpYmxl
LCBsaW5rIHRoZSBjYWxsJ3MgaW5saW5lIGNhY2hlLgorICAgIC8vIC0gUmV0dXJuIGEgdHVwbGUg
b2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1lLgor
ICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
OworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJh
bmQ7CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMo
cGNbMl0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmls
ZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJh
bWUoZXhlYyk7CisgICAgCisgICAgQVNTRVJUKHBjWzRdLnUuY2FsbExpbmtJbmZvKTsKKyAgICBy
ZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBjLCBraW5kLCBjYWxsZWVBc1ZhbHVlLCBwY1s0
XS51LmNhbGxMaW5rSW5mbyk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9j
YWxsKQoreworICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOworICAgIHJldHVybiBnZW5lcmlj
Q2FsbChleGVjLCBwYywgQ29kZUZvckNhbGwpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY29uc3RydWN0KQoreworICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOworICAg
IHJldHVybiBnZW5lcmljQ2FsbChleGVjLCBwYywgQ29kZUZvckNvbnN0cnVjdCk7Cit9CisKK0xM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX3ZhcmFyZ3MpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICAvLyBUaGlzIG5lZWRzIHRvOgorICAgIC8vIC0gU2V0IHVwIGEgY2FsbCBm
cmFtZSB3aGlsZSByZXNwZWN0aW5nIHRoZSB2YXJpYWJsZSBhcmd1bWVudHMuCisgICAgLy8gLSBG
aWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGlsZSBpdCBpZiBuZWNlc3NhcnkuCisgICAg
Ly8gLSBSZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0
aGUgbmV3IGNhbGwgZnJhbWUuCisgICAgCisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJ
TlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0g
bG9hZFZhcmFyZ3MoCisgICAgICAgIGV4ZWMsICZnbG9iYWxEYXRhLmludGVycHJldGVyLT5yZWdp
c3RlckZpbGUoKSwKKyAgICAgICAgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpLCBwY1s0XS51Lm9wZXJhbmQpOworICAgIExMSU5UX0NBTExfQ0hFQ0tfRVhD
RVBUSU9OKGV4ZWMsIHBjKTsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lz
dGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFzVmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0Q2Fs
bGVyRnJhbWUoZXhlYyk7CisgICAgZXhlYy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3Vt
ZW50Q291bnQpLnRhZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdU
SChvcF9jYWxsX3ZhcmFyZ3MpKTsKKyAgICAKKyAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxs
ZWUsIHBjLCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7Cit9CisKK0xMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9jYWxsX2V2YWwpCit7CisgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BD
KCk7CisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOwor
ICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGV4ZWMgKyBwY1szXS51Lm9wZXJhbmQ7
CisgICAgCisgICAgZXhlY0NhbGxlZS0+c2V0QXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMocGNb
Ml0udS5vcGVyYW5kKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAg
ICBleGVjQ2FsbGVlLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKSA9IGNhbGxlZUFz
VmFsdWU7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCkp
OworICAgIGV4ZWNDYWxsZWUtPnNldFJldHVyblBDKGJpdHdpc2VfY2FzdDxJbnN0cnVjdGlvbio+
KCZsbGludF9nZW5lcmljX3JldHVybl9wb2ludCkpOworICAgIGV4ZWNDYWxsZWUtPnNldENvZGVC
bG9jaygwKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3Vu
dCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4ocGMgKyBPUENPREVfTEVOR1RIKG9wX2Nh
bGxfZXZhbCkpOworICAgIAorICAgIGlmICghaXNIb3N0RnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSwg
Z2xvYmFsRnVuY0V2YWwpKQorICAgICAgICByZXR1cm4gc2V0VXBDYWxsKGV4ZWNDYWxsZWUsIHBj
LCBDb2RlRm9yQ2FsbCwgY2FsbGVlQXNWYWx1ZSk7CisgICAgCisgICAgZ2xvYmFsRGF0YS5ob3N0
Q2FsbFJldHVyblZhbHVlID0gZXZhbChleGVjQ2FsbGVlKTsKKyAgICBMTElOVF9DQUxMX1JFVFVS
TihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdGVhcl9vZmZf
YWN0aXZhdGlvbikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEFTU0VSVChleGVjLT5jb2Rl
QmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBKU1ZhbHVlIGFjdGl2YXRpb25W
YWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFjdGl2YXRpb25WYWx1ZSkg
eworICAgICAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKSB7CisgICAgICAgICAg
ICBpZiAoIWV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKKyAgICAgICAgICAgICAg
ICBhc0FyZ3VtZW50cyh2KS0+dGVhck9mZihleGVjKTsKKyAgICAgICAgfQorICAgICAgICBMTElO
VF9FTkQoKTsKKyAgICB9CisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gYXNBY3RpdmF0
aW9uKGFjdGl2YXRpb25WYWx1ZSk7CisgICAgYWN0aXZhdGlvbi0+dGVhck9mZihnbG9iYWxEYXRh
KTsKKyAgICBpZiAoSlNWYWx1ZSB2ID0gZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJndW1l
bnRzUmVnaXN0ZXIocGNbMl0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKQorICAgICAgICBhc0FyZ3Vt
ZW50cyh2KS0+ZGlkVGVhck9mZkFjdGl2YXRpb24oZ2xvYmFsRGF0YSwgYWN0aXZhdGlvbik7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90ZWFy
X29mZl9hcmd1bWVudHMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBBU1NFUlQoZXhlYy0+
Y29kZUJsb2NrKCktPnVzZXNBcmd1bWVudHMoKSAmJiAhZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRz
RnVsbFNjb3BlQ2hhaW4oKSk7CisgICAgYXNBcmd1bWVudHMoZXhlYy0+dW5jaGVja2VkUih1bm1v
ZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkuanNWYWx1ZSgpKS0+dGVh
ck9mZihleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3N0cmNhdCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVS
Tihqc1N0cmluZyhleGVjLCAmTExJTlRfT1AoMiksIHBjWzNdLnUub3BlcmFuZCkpOworfQorCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fcHJpbWl0aXZlKQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvUHJp
bWl0aXZlKGV4ZWMpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9w
bmFtZXMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHYgPSBMTElOVF9PUCgy
KS5qc1ZhbHVlKCk7CisgICAgaWYgKHYuaXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBw
YyArPSBwY1s1XS51Lm9wZXJhbmQ7CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICAK
KyAgICBKU09iamVjdCogbyA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBvLT5zdHJ1Y3R1cmUoKTsKKyAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKiBqc1By
b3BlcnR5TmFtZUl0ZXJhdG9yID0gc3RydWN0dXJlLT5lbnVtZXJhdGlvbkNhY2hlKCk7CisgICAg
aWYgKCFqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yIHx8IGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPmNh
Y2hlZFByb3RvdHlwZUNoYWluKCkgIT0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihleGVjKSkK
KyAgICAgICAganNQcm9wZXJ0eU5hbWVJdGVyYXRvciA9IEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
OmNyZWF0ZShleGVjLCBvKTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9IEpTVmFsdWUoanNQcm9w
ZXJ0eU5hbWVJdGVyYXRvcik7CisgICAgTExJTlRfT1AoMikgPSBKU1ZhbHVlKG8pOworICAgIExM
SU5UX09QKDMpID0gUmVnaXN0ZXI6OndpdGhJbnQoMCk7CisgICAgTExJTlRfT1AoNCkgPSBSZWdp
c3Rlcjo6d2l0aEludChqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5zaXplKCkpOworICAgIAorICAg
IHBjICs9IE9QQ09ERV9MRU5HVEgob3BfZ2V0X3BuYW1lcyk7CisgICAgTExJTlRfRU5EKCk7Cit9
CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXh0X3BuYW1lKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgSlNPYmplY3QqIGJhc2UgPSBhc09iamVjdChMTElOVF9PUCgyKS5q
c1ZhbHVlKCkpOworICAgIEpTU3RyaW5nKiBwcm9wZXJ0eSA9IGFzU3RyaW5nKExMSU5UX09QKDEp
LmpzVmFsdWUoKSk7CisgICAgaWYgKGJhc2UtPmhhc1Byb3BlcnR5KGV4ZWMsIElkZW50aWZpZXIo
ZXhlYywgcHJvcGVydHktPnZhbHVlKGV4ZWMpKSkpIHsKKyAgICAgICAgLy8gR28gdG8gdGFyZ2V0
LgorICAgICAgICBwYyArPSBwY1s2XS51Lm9wZXJhbmQ7CisgICAgfSAvLyBFbHNlLCBkb24ndCBj
aGFuZ2UgdGhlIFBDLCBzbyB0aGUgaW50ZXJwcmV0ZXIgd2lsbCByZWxvb3AuCisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXNoX3Njb3BlKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMSkuanNWYWx1
ZSgpOworICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKKyAgICBMTElOVF9DSEVD
S19FWENFUFRJT04oKTsKKyAgICAKKyAgICBMTElOVF9PUCgxKSA9IG87CisgICAgZXhlYy0+c2V0
U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2gobykpOworICAgIAorICAgIExMSU5U
X0VORCgpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcG9wX3Njb3BlKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29w
ZUNoYWluKCktPnBvcCgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1c2hfbmV3X3Njb3BlKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVj
dCogc2NvcGUgPSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgY29kZUJsb2NrLT5p
ZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSwgRG9udERl
bGV0ZSk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2go
c2NvcGUpKTsKKyAgICBMTElOVF9SRVRVUk4oc2NvcGUpOworfQorCitMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfdGhyb3cpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9U
SFJPVyhMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF90aHJvd19yZWZlcmVuY2VfZXJyb3IpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBMTElOVF9USFJPVyhjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCBMTElOVF9PUF9DKDEp
LmpzVmFsdWUoKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpKTsKK30KKworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2RlYnVnKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
aW50IGRlYnVnSG9va0lEID0gcGNbMV0udS5vcGVyYW5kOworICAgIGludCBmaXJzdExpbmUgPSBw
Y1syXS51Lm9wZXJhbmQ7CisgICAgaW50IGxhc3RMaW5lID0gcGNbM10udS5vcGVyYW5kOworICAg
IAorICAgIGdsb2JhbERhdGEuaW50ZXJwcmV0ZXItPmRlYnVnKGV4ZWMsIHN0YXRpY19jYXN0PERl
YnVnSG9va0lEPihkZWJ1Z0hvb2tJRCksIGZpcnN0TGluZSwgbGFzdExpbmUpOworICAgIAorICAg
IExMSU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHJvZmls
ZV93aWxsX2NhbGwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICAoKlByb2ZpbGVyOjplbmFi
bGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPndpbGxFeGVjdXRlKGV4ZWMsIExMSU5UX09QKDEpLmpz
VmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wcm9maWxlX2RpZF9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgKCpQ
cm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlKCkpLT5kaWRFeGVjdXRlKGV4ZWMsIExM
SU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK30gfSAvLyBuYW1l
c3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBMTEludFNsb3dQYXRoc19oCisjZGVmaW5lIExMSW50U2xvd1Bh
dGhzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9TdGRMaWJF
eHRyYXMuaD4KKworI2lmIEVOQUJMRShMTElOVCkKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNlIExMSW50IHsKKwor
dHlwZWRlZiBpbnQ2NF90IFNsb3dQYXRoUmV0dXJuVHlwZTsKKworZXh0ZXJuICJDIiBTbG93UGF0
aFJldHVyblR5cGUgbGxpbnRfdHJhY2Vfb3BlcmFuZChFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbios
IGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKTsKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5U
eXBlIGxsaW50X3RyYWNlX3ZhbHVlKEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKiwgaW50IGZyb21X
aGVyZSwgaW50IG9wZXJhbmQpOworCisjZGVmaW5lIExMSU5UX1NMT1dfUEFUSF9ERUNMKG5hbWUp
IFwKKyAgICBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF8jI25hbWUoRXhlY1N0
YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNl
X3Byb2xvZ3VlKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9u
X2Zvcl9jYWxsKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3QpOworTExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2VfYXJpdHlDaGVja19m
b3JfY2FsbCk7CitMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25z
dHJ1Y3QpOworTExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2UpOworTExJTlRfU0xPV19QQVRIX0RF
Q0woc3BlY2lhbF90cmFjZSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChlbnRyeV9vc3IpOworTExJ
TlRfU0xPV19QQVRIX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKTsKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KTsKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKTsKK0xM
SU5UX1NMT1dfUEFUSF9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5
Q2hlY2spOworTExJTlRfU0xPV19QQVRIX0RFQ0wobG9vcF9vc3IpOworTExJTlRfU0xPV19QQVRI
X0RFQ0wocmVwbGFjZSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChyZWdpc3Rlcl9maWxlX2NoZWNr
KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spOworTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYWN0aXZhdGlvbik7CitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2FyZ3VtZW50cyk7CitMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfY3JlYXRlX3RoaXMpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2NvbnZlcnRfdGhpcyk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X29i
amVjdCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2FycmF5KTsKK0xMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXlfYnVmZmVyKTsKK0xMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfcmVnZXhwKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9ub3QpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2VxKTsKK0xMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXEpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3N0cmljdGVxKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uc3RyaWN0
ZXEpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xlc3MpOworTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2xlc3NlcSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfZ3JlYXRlcik7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ3JlYXRlcmVxKTsK
K0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wcmVfaW5jKTsKK0xMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9wcmVfZGVjKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9wb3N0X2luYyk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcG9zdF9kZWMpOwor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX2pzbnVtYmVyKTsKK0xMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9uZWdhdGUpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2FkZCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbXVsKTsKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdWIpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2Rpdik7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbW9kKTsKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9sc2hpZnQpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3JzaGlmdCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdXJzaGlmdCk7
CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0YW5kKTsKK0xMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9iaXRvcik7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Yml0eG9yKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRub3QpOworTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NoZWNrX2hhc19pbnN0YW5jZSk7CitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfaW5zdGFuY2VvZik7CitMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfdHlwZW9mKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc191bmRl
ZmluZWQpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lzX2Jvb2xlYW4pOworTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lzX251bWJlcik7CitMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfaXNfc3RyaW5nKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9pc19vYmplY3QpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lzX2Z1bmN0aW9u
KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbik7CitMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcmVzb2x2ZSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cmVzb2x2ZV9za2lwKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX2ds
b2JhbCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV9nbG9iYWxfZHlu
YW1pYyk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV9mb3JfcmVzb2x2
ZV9nbG9iYWxfZHluYW1pYyk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2
ZV9iYXNlKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9lbnN1cmVfcHJvcGVydHlf
ZXhpc3RzKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX3dpdGhfYmFz
ZSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV93aXRoX3RoaXMpOwor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9pZCk7CitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfZ2V0X2FyZ3VtZW50c19sZW5ndGgpOworTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1dF9ieV9pZCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfZGVsX2J5X2lkKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfdmFs
KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYXJndW1lbnRfYnlfdmFsKTsK
K0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYnlfcG5hbWUpOworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV92YWwpOworTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX2RlbF9ieV92YWwpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1
dF9ieV9pbmRleCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2dldHRlcl9z
ZXR0ZXIpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2ptcF9zY29wZXMpOworTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2p0cnVlKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9qZmFsc2UpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2psZXNz
KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9qbmxlc3MpOworTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2pncmVhdGVyKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9qbmdyZWF0ZXIpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2psZXNzZXEp
OworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2pubGVzc2VxKTsKK0xMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9qZ3JlYXRlcmVxKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9qbmdyZWF0ZXJlcSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3dp
dGNoX2ltbSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3dpdGNoX2NoYXIpOwor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9zdHJpbmcpOworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9uZXdfZnVuY19leHApOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Nh
bGwpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdCk7CitMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF92YXJhcmdzKTsKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9jYWxsX2V2YWwpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3RlYXJfb2ZmX2FjdGl2YXRpb24pOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Rl
YXJfb2ZmX2FyZ3VtZW50cyk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3RyY2F0
KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b19wcmltaXRpdmUpOworTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9wbmFtZXMpOworTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX25leHRfcG5hbWUpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3B1c2hfc2NvcGUpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3BvcF9zY29wZSk7
CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHVzaF9uZXdfc2NvcGUpOworTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Rocm93KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF90aHJvd19yZWZlcmVuY2VfZXJyb3IpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2RlYnVnKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wcm9maWxlX3dp
bGxfY2FsbCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHJvZmlsZV9kaWRfY2Fs
bCk7CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExM
SU5UKQorCisjZW5kaWYgLy8gTExJbnRTbG93UGF0aHNfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludFRodW5rcy5oIgorCisjaWYgRU5B
QkxFKExMSU5UKQorCisjaW5jbHVkZSAiSlNJbnRlcmZhY2VKSVQuaCIKKyNpbmNsdWRlICJMaW5r
QnVmZmVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVJlZiBn
ZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIHZvaWQgKCp0
YXJnZXQpKCkpCit7CisgICAgSlNJbnRlcmZhY2VKSVQgaml0OworICAgIAorICAgIC8vIEZJWE1F
OiB0aGVyZSdzIHByb2JhYmx5IGEgYmV0dGVyIHdheSB0byBkbyBpdCBvbiBYODYsIGJ1dCBJJ20g
bm90IHN1cmUgSSBjYXJlLgorICAgIGppdC5tb3ZlKEpTSW50ZXJmYWNlSklUOjpUcnVzdGVkSW1t
UHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4odGFyZ2V0KSksIEpTSW50ZXJmYWNlSklUOjpyZWdUMCk7
CisgICAgaml0Lmp1bXAoSlNJbnRlcmZhY2VKSVQ6OnJlZ1QwKTsKKyAgICAKKyAgICBMaW5rQnVm
ZmVyIHBhdGNoQnVmZmVyKCpnbG9iYWxEYXRhLCAmaml0LCBHTE9CQUxfVEhVTktfSUQpOworICAg
IHJldHVybiBwYXRjaEJ1ZmZlci5maW5hbGl6ZUNvZGUoKTsKK30KKworTWFjcm9Bc3NlbWJsZXJD
b2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxE
YXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1i
bGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9i
YWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBU
byhnbG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X3Byb2xvZ3VlKTsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dl
bmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
X2NoZWNrKTsKK30KKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0
QXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAg
ICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rp
b25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjayk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJl
ZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7Cisg
ICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2V2YWxf
cHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgcHJvZ3JhbUVudHJ5VGh1bmtH
ZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0
ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKTsKK30K
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNp
b24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRUaHVua3NfaAorI2RlZmluZSBMTEludFRodW5r
c19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIEVOQUJMRShMTElOVCkKKwor
I2luY2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgSlNHbG9iYWxEYXRhOworCituYW1lc3BhY2UgTExJbnQgeworCitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEq
KTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEVudHJ5VGh1bmtH
ZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25G
b3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0QXJpdHlDaGVja1RodW5rR2VuZXJhdG9y
KEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2Vu
ZXJhdG9yKEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRy
eVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6
TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50VGh1bmtz
X2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20JKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjM4NiBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisjIENyYXNo
IGNvdXJzZSBvbiB0aGUgbGFuZ3VhZ2UgdGhhdCB0aGlzIGlzIHdyaXR0ZW4gaW4gKHdoaWNoIEkg
anVzdCBjYWxsCisjICJhc3NlbWJseSIgZXZlbiB0aG91Z2ggaXQncyBtb3JlIHRoYW4gdGhhdCk6
CisjCisjIC0gTW9zdGx5IGdhcy1zdHlsZSBvcGVyYW5kIG9yZGVyaW5nLiBUaGUgbGFzdCBvcGVy
YW5kIHRlbmRzIHRvIGJlIHRoZQorIyAgIGRlc3RpbmF0aW9uLiBTbyAiYSA6PSBiIiBpcyB3cml0
dGVuIGFzICJtb3YgYiwgYSIuIEJ1dCB1bmxpa2UgZ2FzLAorIyAgIGNvbXBhcmlzb25zIGFyZSBp
bi1vcmRlciwgc28gImlmIChhIDwgYikiIGlzIHdyaXR0ZW4gYXMKKyMgICAiYmlsdCBhLCBiLCAu
Li4iLgorIworIyAtICJiIiA9IGJ5dGUsICJoIiA9IDE2LWJpdCB3b3JkLCAiaSIgPSAzMi1iaXQg
d29yZCwgInAiID0gcG9pbnRlci4KKyMgICBDdXJyZW50bHkgdGhpcyBpcyBqdXN0IDMyLWJpdCBz
byAiaSIgYW5kICJwIiBhcmUgaW50ZXJjaGFuZ2VhYmxlCisjICAgZXhjZXB0IHdoZW4gYW4gb3Ag
c3VwcG9ydHMgb25lIGJ1dCBub3QgdGhlIG90aGVyLgorIworIyAtIEluIGdlbmVyYWwsIHZhbGlk
IG9wZXJhbmRzIGZvciBtYWNybyBpbnZvY2F0aW9ucyBhbmQgaW5zdHJ1Y3Rpb25zIGFyZQorIyAg
IHJlZ2lzdGVycyAoZWcgInQwIiksIGFkZHJlc3NlcyAoZWcgIjRbdDBdIiksIGJhc2UtaW5kZXgg
YWRkcmVzc2VzCisjICAgKGVnICI3W3QwLCB0MSwgMl0iKSwgYWJzb2x1dGUgYWRkcmVzc2VzIChl
ZyAiMHhhMDAwMDAwMFtdIiksIG9yIGxhYmVscworIyAgIChlZyAiX2ZvbyIgb3IgIi5mb28iKS4g
TWFjcm8gaW52b2NhdGlvbnMgY2FuIGFsc28gdGFrZSBhbm9ueW1vdXMKKyMgICBtYWNyb3MgYXMg
b3BlcmFuZHMuIEluc3RydWN0aW9ucyBjYW5ub3QgdGFrZSBhbm9ueW1vdXMgbWFjcm9zLgorIwor
IyAtIExhYmVscyBtdXN0IGhhdmUgbmFtZXMgdGhhdCBiZWdpbiB3aXRoIGVpdGhlciAiXyIgb3Ig
Ii4iLiAgQSAiLiIgbGFiZWwKKyMgICBpcyBsb2NhbCBhbmQgZ2V0cyByZW5hbWVkIGJlZm9yZSBj
b2RlIGdlbiB0byBtaW5pbWl6ZSBuYW1lc3BhY2UKKyMgICBwb2xsdXRpb24uIEEgIl8iIGxhYmVs
IGlzIGFuIGV4dGVybiBzeW1ib2wgKGkuZS4gIi5nbG9ibCIpLiBUaGUgIl8iCisjICAgbWF5IG9y
IG1heSBub3QgYmUgcmVtb3ZlZCBkdXJpbmcgY29kZSBnZW4gZGVwZW5kaW5nIG9uIHdoZXRoZXIg
dGhlIGFzbQorIyAgIGNvbnZlbnRpb25zIGZvciBDIG5hbWUgbWFuZ2xpbmcgb24gdGhlIHRhcmdl
dCBwbGF0Zm9ybSBtYW5kYXRlIGEgIl8iCisjICAgcHJlZml4LgorIworIyAtIEEgIm1hY3JvIiBp
cyBhIGxhbWJkYSBleHByZXNzaW9uLCB3aGljaCBtYXkgYmUgZWl0aGVyIGFub255bW91cyBvcgor
IyAgIG5hbWVkLiBCdXQgdGhpcyBoYXMgY2F2ZWF0cy4gIm1hY3JvIiBjYW4gdGFrZSB6ZXJvIG9y
IG1vcmUgYXJndW1lbnRzLAorIyAgIHdoaWNoIG1heSBiZSBtYWNyb3Mgb3IgYW55IHZhbGlkIG9w
ZXJhbmRzLCBidXQgaXQgY2FuIG9ubHkgcmV0dXJuCisjICAgY29kZS4gQnV0IHlvdSBjYW4gZG8g
VHVyaW5nLWNvbXBsZXRlIHRoaW5ncyB2aWEgY29udGludWF0aW9uIHBhc3NpbmcKKyMgICBzdHls
ZTogIm1hY3JvIGZvbyAoYSwgYikgYihhKSBlbmQgZm9vKGZvbywgZm9vKSIuIEFjdHVhbGx5LCBk
b24ndCBkbworIyAgIHRoYXQsIHNpbmNlIHlvdSdsbCBqdXN0IGNyYXNoIHRoZSBhc3NlbWJsZXIu
CisjCisjIC0gQW4gImlmIiBpcyBhIGNvbmRpdGlvbmFsIG9uIHNldHRpbmdzLiBBbnkgaWRlbnRp
ZmllciBzdXBwbGllZCBpbiB0aGUKKyMgICBwcmVkaWNhdGUgb2YgYW4gImlmIiBpcyBhc3N1bWVk
IHRvIGJlIGEgI2RlZmluZSB0aGF0IGlzIGF2YWlsYWJsZQorIyAgIGR1cmluZyBjb2RlIGdlbi4g
U28geW91IGNhbid0IHVzZSAiaWYiIGZvciBjb21wdXRhdGlvbiBpbiBhIG1hY3JvLCBidXQKKyMg
ICB5b3UgY2FuIHVzZSBpdCB0byBzZWxlY3QgZGlmZmVyZW50IHBpZWNlcyBvZiBjb2RlIGZvciBk
aWZmZXJlbnQKKyMgICBwbGF0Zm9ybXMuCisjCisjIC0gQXJndW1lbnRzIHRvIG1hY3JvcyBmb2xs
b3cgbGV4aWNhbCBzY29waW5nIHJhdGhlciB0aGFuIGR5bmFtaWMgc2NvcGluZy4KKyMgICBDb25z
dCdzIGFsc28gZm9sbG93IGxleGljYWwgc2NvcGluZyBhbmQgbWF5IG92ZXJyaWRlIChoaWRlKSBh
cmd1bWVudHMKKyMgICBvciBvdGhlciBjb25zdHMuIEFsbCB2YXJpYWJsZXMgKGFyZ3VtZW50cyBh
bmQgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBvcGVyYW5kcy4gQWRkaXRpb25hbGx5
LCBhcmd1bWVudHMgKGJ1dCBub3QgY29uc3RhbnRzKSBjYW4gYmUgYm91bmQKKyMgICB0byBtYWNy
b3MuCisKKworIyBCZWxvdyB3ZSBoYXZlIGEgYnVuY2ggb2YgY29uc3RhbnQgZGVjbGFyYXRpb25z
LiBFYWNoIGNvbnN0YW50IG11c3QgaGF2ZQorIyBhIGNvcnJlc3BvbmRpbmcgQVNTRVJUKCkgaW4g
TExJbnREYXRhLmNwcC4KKworIyBUaGVzZSBkZWNsYXJhdGlvbnMgbXVzdCBtYXRjaCBpbnRlcnBy
ZXRlci9SZWdpc3RlckZpbGUuaC4KK2NvbnN0IENhbGxGcmFtZUhlYWRlclNpemUgPSA0OAorY29u
c3QgQXJndW1lbnRDb3VudCA9IC00OAorY29uc3QgQ2FsbGVyRnJhbWUgPSAtNDAKK2NvbnN0IENh
bGxlZSA9IC0zMgorY29uc3QgU2NvcGVDaGFpbiA9IC0yNAorY29uc3QgUmV0dXJuUEMgPSAtMTYK
K2NvbnN0IENvZGVCbG9jayA9IC04CisKK2NvbnN0IFRoaXNBcmd1bWVudE9mZnNldCA9IC1DYWxs
RnJhbWVIZWFkZXJTaXplIC0gOAorCisjIERlY2xhcmUgc29tZSBhbGlhc2VzIGZvciB0aGUgcmVn
aXN0ZXJzIHdlIHdpbGwgdXNlLgorY29uc3QgUEMgPSB0NAorCisjIE9mZnNldHMgbmVlZGVkIGZv
ciByZWFzb25pbmcgYWJvdXQgdmFsdWUgcmVwcmVzZW50YXRpb24uCitpZiBCSUdfRU5ESUFOCisg
ICAgY29uc3QgVGFnT2Zmc2V0ID0gMAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSA0CitlbHNl
CisgICAgY29uc3QgVGFnT2Zmc2V0ID0gNAorICAgIGNvbnN0IFBheWxvYWRPZmZzZXQgPSAwCitl
bmQKKworIyBWYWx1ZSByZXByZXNlbnRhdGlvbiBjb25zdGFudHMuCitjb25zdCBJbnQzMlRhZyA9
IC0xCitjb25zdCBCb29sZWFuVGFnID0gLTIKK2NvbnN0IE51bGxUYWcgPSAtMworY29uc3QgVW5k
ZWZpbmVkVGFnID0gLTQKK2NvbnN0IENlbGxUYWcgPSAtNQorY29uc3QgRW1wdHlWYWx1ZVRhZyA9
IC02Citjb25zdCBEZWxldGVkVmFsdWVUYWcgPSAtNworY29uc3QgTG93ZXN0VGFnID0gRGVsZXRl
ZFZhbHVlVGFnCisKKyMgVHlwZSBjb25zdGFudHMuCitjb25zdCBTdHJpbmdUeXBlID0gNQorY29u
c3QgT2JqZWN0VHlwZSA9IDEzCisKKyMgVHlwZSBmbGFncyBjb25zdGFudHMuCitjb25zdCBNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkID0gMQorY29uc3QgSW1wbGVtZW50c0hhc0luc3RhbmNlID0gMgor
Y29uc3QgSW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSA9IDgKKworIyBIZWFwIGFsbG9jYXRp
b24gY29uc3RhbnRzLgorY29uc3QgSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4ID0gMworCisj
IEJ5dGVjb2RlIG9wZXJhbmQgY29uc3RhbnRzLgorY29uc3QgRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXggPSAweDQwMDAwMDAwCisKKyMgQ29kZSB0eXBlIGNvbnN0YW50cy4KK2NvbnN0IEdsb2Jh
bENvZGUgPSAwCitjb25zdCBFdmFsQ29kZSA9IDEKK2NvbnN0IEZ1bmN0aW9uQ29kZSA9IDIKKwor
IyBUaGUgaW50ZXJwcmV0ZXIgc3RlYWxzIHRoZSB0YWcgd29yZCBvZiB0aGUgYXJndW1lbnQgY291
bnQuCitjb25zdCBMTEludFJldHVyblBDID0gQXJndW1lbnRDb3VudCArIFRhZ09mZnNldAorCisj
IFRoaXMgbXVzdCBtYXRjaCB3dGYvVmVjdG9yLmguCitjb25zdCBWZWN0b3JTaXplT2Zmc2V0ID0g
MAorY29uc3QgVmVjdG9yQnVmZmVyT2Zmc2V0ID0gNAorCisjIFN0cmluZyBmbGFncy4KK2NvbnN0
IEhhc2hGbGFnczhCaXRCdWZmZXIgPSA2NAorCisjIFV0aWxpdGllcworbWFjcm8gY3Jhc2goKQor
ICAgIHN0b3JlaSAwLCAweGJiYWRiZWVmW10KKyAgICBtb3ZlIDAsIHQwCisgICAgY2FsbCB0MAor
ZW5kCisKK21hY3JvIGFzc2VydChhc3NlcnRpb24pCisgICAgaWYgQVNTRVJUX0VOQUJMRUQKKyAg
ICAgICAgYXNzZXJ0aW9uKC5vaykKKyAgICAgICAgY3Jhc2goKQorICAgIC5vazoKKyAgICBlbmQK
K2VuZAorCittYWNybyBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwoZGVzdGluYXRpb25S
ZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGxyLCBkZXN0aW5hdGlvblJlZ2lz
dGVyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBvcCBkZXN0aW5hdGlvblJlZ2lzdGVyCisgICAg
ZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIHJlc3RvcmVSZXR1cm5B
ZGRyZXNzQmVmb3JlUmV0dXJuKHNvdXJjZVJlZ2lzdGVyKQorICAgIGlmIEFSTXY3CisgICAgICAg
IG1vdmUgc291cmNlUmVnaXN0ZXIsIGxyCisgICAgZWxzaWYgWDg2CisgICAgICAgIHB1c2ggc291
cmNlUmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKworbWFj
cm8gZGlzcGF0Y2goYWR2YW5jZSkKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQworICAgIGptcCBb
UENdCitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHBjT2Zmc2V0KQorICAg
IGxzaGlmdGkgMiwgcGNPZmZzZXQKKyAgICBhZGRwIHBjT2Zmc2V0LCBQQworICAgIGptcCBbUENd
CitlbmQKKworbWFjcm8gZGlzcGF0Y2hCcmFuY2gocGNPZmZzZXQpCisgICAgbG9hZGkgcGNPZmZz
ZXQsIHQwCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQwKQorZW5kCisKK21hY3JvIGRp
c3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nm
cl0sIFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBjQ2FsbDIoZnVuY3Rpb24sIGFyZzEs
IGFyZzIpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAgICAgICBtb3Zl
IGFyZzIsIHQxCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwgMAorICAgICAgICBw
b2tlIGFyZzIsIDEKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBm
dW5jdGlvbgorZW5kCisKKyMgVGhpcyBiYXJlbHkgd29ya3MuIGFyZzMgYW5kIGFyZzQgc2hvdWxk
IHByb2JhYmx5IGJlIGltbWVkaWF0ZXMuCittYWNybyBjQ2FsbDQoZnVuY3Rpb24sIGFyZzEsIGFy
ZzIsIGFyZzMsIGFyZzQpCisgICAgaWYgQVJNdjcKKyAgICAgICAgbW92ZSBhcmcxLCB0MAorICAg
ICAgICBtb3ZlIGFyZzIsIHQxCisgICAgICAgIG1vdmUgYXJnMywgdDIKKyAgICAgICAgbW92ZSBh
cmc0LCB0MworICAgIGVsc2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9r
ZSBhcmcyLCAxCisgICAgICAgIHBva2UgYXJnMywgMgorICAgICAgICBwb2tlIGFyZzQsIDMKKyAg
ICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCisgICAgY2FsbCBmdW5jdGlvbgorZW5kCisK
K21hY3JvIGNhbGxTbG93UGF0aChzbG93X3BhdGgpCisgICAgY0NhbGwyKHNsb3dfcGF0aCwgY2Zy
LCBQQykKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKKyMgRGVidWdn
aW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBsaWtlIHRvIHByaW50IGFuIG9wZXJhbmQgaW4gdGhlIGlu
c3RydWN0aW9uIHN0cmVhbS4gZnJvbVdoZXJlCisjIHNob3VsZCBiZSBhbiBpbW1lZGlhdGUgaW50
ZWdlciAtIGFueSBpbnRlZ2VyIHlvdSBsaWtlOyB1c2UgaXQgdG8gaWRlbnRpZnkgdGhlIHBsYWNl
IHlvdSdyZQorIyBkZWJ1Z2dpbmcgZnJvbS4gb3BlcmFuZCBzaG91bGQgbGlrZXdpc2UgYmUgYW4g
aW1tZWRpYXRlLCBhbmQgc2hvdWxkIGlkZW50aWZ5IHRoZSBvcGVyYW5kCisjIGluIHRoZSBpbnN0
cnVjdGlvbiBzdHJlYW0geW91J2QgbGlrZSB0byBwcmludCBvdXQuCittYWNybyB0cmFjZU9wZXJh
bmQoZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2Vfb3BlcmFuZCwg
Y2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0
MSwgY2ZyCitlbmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJp
bnQgdGhlIHZhbHVlIG9mIGFuIG9wZXJhbmQgaW4gdGhlIGluc3RydWN0aW9uCisjIHN0cmVhbS4g
U2FtZSBhcyB0cmFjZU9wZXJhbmQoKSwgYnV0IGFzc3VtZXMgdGhhdCB0aGUgb3BlcmFuZCBpcyBh
IHJlZ2lzdGVyLCBhbmQgcHJpbnRzIGl0cworIyB2YWx1ZS4KK21hY3JvIHRyYWNlVmFsdWUoZnJv
bVdoZXJlLCBvcGVyYW5kKQorICAgIGNDYWxsNChfbGxpbnRfdHJhY2VfdmFsdWUsIGNmciwgUEMs
IGZyb21XaGVyZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgor
ZW5kCisKK21hY3JvIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBpZiBFWEVDVVRJT05fVFJBQ0lORwor
ICAgICAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3RyYWNlKQorICAgIGVuZAorZW5kCisKKyMgQ2Fs
bCBhIHNsb3dfcGF0aCBmb3IgY2FsbCBvcGNvZGVzLgorbWFjcm8gY2FsbENhbGxTbG93UGF0aChh
ZHZhbmNlLCBzbG93X3BhdGgsIGFjdGlvbikKKyAgICBhZGRwIGFkdmFuY2UgKiA0LCBQQywgdDAK
KyAgICBzdG9yZXAgdDAsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIGNDYWxs
MihzbG93X3BhdGgsIGNmciwgUEMpCisgICAgbW92ZSB0MSwgY2ZyCisgICAgYWN0aW9uKHQwKQor
ZW5kCisKK21hY3JvIHNsb3dQYXRoRm9yQ2FsbChhZHZhbmNlLCBzbG93X3BhdGgpCisgICAgY2Fs
bENhbGxTbG93UGF0aCgKKyAgICAgICAgYWR2YW5jZSwKKyAgICAgICAgc2xvd19wYXRoLAorICAg
ICAgICBtYWNybyAoY2FsbGVlKQorICAgICAgICAgICAgY2FsbCBjYWxsZWUKKyAgICAgICAgICAg
IGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKyAgICAgICAgZW5kKQorZW5kCisKK21hY3JvIGNoZWNrU3dp
dGNoVG9KSVQoaW5jcmVtZW50LCBhY3Rpb24pCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAgICAg
bG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgICAgIGJhZGRpcyBpbmNyZW1lbnQsIENvZGVC
bG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3QwXSwgLmNvbnRpbnVlCisgICAgICAgIGFjdGlv
bigpCisgICAgLmNvbnRpbnVlOgorICAgIGVuZAorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9K
SVRGb3JMb29wKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxLAorICAgICAgICBt
YWNybyAoKQorICAgICAgICAgICAgc3RvcmVpIFBDLCBBcmd1bWVudENvdW50ICsgVGFnT2Zmc2V0
W2Nmcl0KKyAgICAgICAgICAgIGNDYWxsMihfbGxpbnRfbG9vcF9vc3IsIGNmciwgUEMpCisgICAg
ICAgICAgICBtb3ZlIHQxLCBjZnIKKyAgICAgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAg
ICAgICAgICBqbXAgdDAKKyAgICAgICAgLnJlY292ZXI6CisgICAgICAgICAgICBsb2FkaSBBcmd1
bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0sIFBDCisgICAgICAgIGVuZCkKK2VuZAorCittYWNy
byBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisg
ICAgICAgIDEwLAorICAgICAgICBtYWNybyAoKQorICAgICAgICAgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9yZXBsYWNlKQorICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gYXNzZXJ0Tm90Q29uc3Rh
bnQoaW5kZXgpCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlsdCBpbmRleCwgRmlyc3RDb25zdGFu
dFJlZ2lzdGVySW5kZXgsIG9rIGVuZCkKK2VuZAorCisjIEluZGV4LCB0YWcsIGFuZCBwYXlsb2Fk
IG11c3QgYmUgZGlmZmVyZW50IHJlZ2lzdGVycy4gSW5kZXggaXMgbm90CisjIGNoYW5nZWQuCitt
YWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmln
dGVxIGluZGV4LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9h
ZGkgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAg
bG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fY29u
c3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0sIHBheWxvYWQKKyAg
ICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEg
dmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8
IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkg
PDwgMy4KKyAgICBsb2FkcCBUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCB0YWcKKyAgICBs
b2FkcCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6Citl
bmQKKworIyBJbmRleCBhbmQgcGF5bG9hZCBtYXkgYmUgdGhlIHNhbWUgcmVnaXN0ZXIuIEluZGV4
IG1heSBiZSBjbG9iYmVyZWQuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyhpbmRl
eCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSwgdGFn
CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGpt
cCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0YWcKKyAgICBs
b2FkcCBDb2RlQmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRb
dGFnXSwgdGFnCisgICAgIyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRl
eCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMg
dGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJl
Z2lzdGVySW5kZXgpIDw8IDMuCisgICAgbHNoaWZ0aSAzLCBpbmRleAorICAgIGFkZHAgaW5kZXgs
IHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbdGFnXSwgcGF5bG9hZAorICAgIGxvYWRwIFRh
Z09mZnNldFt0YWddLCB0YWcKKy5kb25lOgorZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkVGFnQ3VzdG9tKGluZGV4LCB0YWdDaGVjaywgcGF5bG9hZCkKKyAgICBiaWd0
ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQKKyAgICB0YWdD
aGVjayhUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0pCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtj
ZnIsIGluZGV4LCA4XSwgcGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxv
YWRwIENvZGVCbG9ja1tjZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0
YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAg
IyBUaGVyZSBpcyBhIGJpdCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZh
bHVlID49IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAz
IHdpbGwgYmUgZXF1YWwgdG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8
IDMuCisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSkKKyAgICBsb2Fk
cCBQYXlsb2FkT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgcGF5bG9hZAorLmRvbmU6CitlbmQK
KworIyBJbmRleCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVudCByZWdpc3RlcnMuIEluZGV4
IGlzIG5vdCBtdXRhdGVkLiBVc2UKKyMgdGhpcyBpZiB5b3Uga25vdyB3aGF0IHRoZSB0YWcgb2Yg
dGhlIHZhcmlhYmxlIHNob3VsZCBiZS4gRG9pbmcgdGhlIHRhZworIyB0ZXN0IGFzIHBhcnQgb2Yg
bG9hZGluZyB0aGUgdmFyaWFibGUgcmVkdWNlcyByZWdpc3RlciB1c2UsIGJ1dCBtYXkgbm90Cisj
IGJlIGZhc3RlciB0aGFuIGRvaW5nIGxvYWRDb25zdGFudE9yVmFyaWFibGUgZm9sbG93ZWQgYnkg
YSBicmFuY2ggb24gdGhlCisjIHRhZy4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKGluZGV4LCBleHBlY3RlZFRhZywgcGF5bG9hZCwgc2xvdykKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgKKyAgICAgICAgaW5kZXgsCisgICAgICAgIG1hY3Jv
IChhY3R1YWxUYWcpIGJpbmVxIGFjdHVhbFRhZywgZXhwZWN0ZWRUYWcsIHNsb3cgZW5kLAorICAg
ICAgICBwYXlsb2FkKQorZW5kCisKK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
VW5jaGVja2VkKGluZGV4LCBwYXlsb2FkKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkVGFnQ3VzdG9tKAorICAgICAgICBpbmRleCwKKyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykg
ZW5kLAorICAgICAgICBwYXlsb2FkKQorZW5kCisKK21hY3JvIHdyaXRlQmFycmllcih0YWcsIHBh
eWxvYWQpCisgICAgIyBOb3RoaW5nIHRvIGRvLCBzaW5jZSB3ZSBkb24ndCBoYXZlIGEgZ2VuZXJh
dGlvbmFsIG9yIGluY3JlbWVudGFsIGNvbGxlY3Rvci4KK2VuZAorCittYWNybyB2YWx1ZVByb2Zp
bGUodGFnLCBwYXlsb2FkLCBwcm9maWxlKQorICAgIHN0b3JlaSB0YWcsIFZhbHVlUHJvZmlsZTo6
bV9idWNrZXRzICsgVGFnT2Zmc2V0W3Byb2ZpbGVdCisgICAgc3RvcmVpIHBheWxvYWQsIFZhbHVl
UHJvZmlsZTo6bV9idWNrZXRzICsgUGF5bG9hZE9mZnNldFtwcm9maWxlXQorZW5kCisKKworIyBJ
bmRpY2F0ZSB0aGUgYmVnaW5uaW5nIG9mIExMSW50LgorX2xsaW50X2JlZ2luOgorICAgIGNyYXNo
KCkKKworCisjIEVudHJ5cG9pbnRzIGludG8gdGhlIGludGVycHJldGVyCisKK21hY3JvIGZ1bmN0
aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlcih0YXJnZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxs
ZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBsb2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFi
bGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDYWxsW3RhcmdldFJlZ2lzdGVyXSwgdGFyZ2V0UmVnaXN0
ZXIKK2VuZAorCittYWNybyBmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlcih0YXJn
ZXRSZWdpc3RlcikKKyAgICBsb2FkcCBDYWxsZWVbY2ZyXSwgdGFyZ2V0UmVnaXN0ZXIKKyAgICBs
b2FkcCBKU0Z1bmN0aW9uOjptX2V4ZWN1dGFibGVbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdp
c3RlcgorICAgIGxvYWRwIEZ1bmN0aW9uRXhlY3V0YWJsZTo6bV9jb2RlQmxvY2tGb3JDb25zdHJ1
Y3RbdGFyZ2V0UmVnaXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIG5vdEZ1bmN0
aW9uQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVy
KHNvdXJjZVJlZ2lzdGVyKQorICAgIHN0b3JlcCBzb3VyY2VSZWdpc3RlciwgQ29kZUJsb2NrW2Nm
cl0KK2VuZAorCittYWNybyBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlcihzb3VyY2VSZWdpc3Rl
cikKKyAgICAjIE5vdGhpbmcgdG8gZG8hCitlbmQKKworIyBEbyB0aGUgYmFyZSBtaW5pbXVtIHJl
cXVpcmVkIHRvIGV4ZWN1dGUgY29kZS4gU2V0cyB1cCB0aGUgUEMsIGxlYXZlIHRoZSBDb2RlQmxv
Y2sqCisjIGluIHQxLiBNYXkgYWxzbyB0cmlnZ2VyIHByb2xvZ3VlIGVudHJ5IE9TUi4KK21hY3Jv
IHByb2xvZ3VlKGNvZGVCbG9ja0dldHRlciwgY29kZUJsb2NrU2V0dGVyLCBvc3JTbG93UGF0aCwg
dHJhY2VTbG93UGF0aCkKKyAgICBwcmVzZXJ2ZVJldHVybkFkZHJlc3NBZnRlckNhbGwodDIpCisg
ICAgCisgICAgIyBTZXQgdXAgdGhlIGNhbGwgZnJhbWUgYW5kIGNoZWNrIGlmIHdlIHNob3VsZCBP
U1IuCisgICAgc3RvcmVwIHQyLCBSZXR1cm5QQ1tjZnJdCisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJ
TkcKKyAgICAgICAgY2FsbFNsb3dQYXRoKHRyYWNlU2xvd1BhdGgpCisgICAgZW5kCisgICAgY29k
ZUJsb2NrR2V0dGVyKHQxKQorICAgIGlmIEpJVF9FTkFCTEVECisgICAgICAgIGJhZGRpcyA1LCBD
b2RlQmxvY2s6Om1fbGxpbnRFeGVjdXRlQ291bnRlclt0MV0sIC5jb250aW51ZQorICAgICAgICBj
Q2FsbDIob3NyU2xvd1BhdGgsIGNmciwgUEMpCisgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAg
ICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAgICBsb2FkcCBSZXR1cm5QQ1tjZnJdLCB0MgorICAg
ICAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICAgICAgam1wIHQw
CisgICAgLnJlY292ZXI6CisgICAgICAgIGNvZGVCbG9ja0dldHRlcih0MSkKKyAgICAuY29udGlu
dWU6CisgICAgZW5kCisgICAgY29kZUJsb2NrU2V0dGVyKHQxKQorICAgIAorICAgICMgU2V0IHVw
IHRoZSBQQy4KKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAKKyAg
ICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0b3JC
dWZmZXJPZmZzZXRbdDBdLCBQQworZW5kCisKKyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBp
biB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1ZSgpIGxlYXZlcyBiZWhpbmQuCisjIE11c3QgY2Fs
bCBkaXNwYXRjaCgwKSBhZnRlciBjYWxsaW5nIHRoaXMuCittYWNybyBmdW5jdGlvbkluaXRpYWxp
emF0aW9uKHByb2ZpbGVBcmdTa2lwKQorICAgICMgUHJvZmlsZSB0aGUgYXJndW1lbnRzLiBVbmZv
cnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIGNob2ljZSBidXQgdG8gZG8gdGhpcy4gVGhpcworICAgICMg
Y29kZSBpcyBwcmV0dHkgaG9ycmVuZG91cyBiZWNhdXNlIG9mIHRoZSBkaWZmZXJlbmNlIGluIG9y
ZGVyaW5nIGJldHdlZW4KKyAgICAjIGFyZ3VtZW50cyBhbmQgdmFsdWUgcHJvZmlsZXMsIHRoZSBk
ZXNpcmUgdG8gaGF2ZSBhIHNpbXBsZSBsb29wLWRvd24tdG8temVybworICAgICMgbG9vcCwgYW5k
IHRoZSBkZXNpcmUgdG8gdXNlIG9ubHkgdGhyZWUgcmVnaXN0ZXJzIHNvIGFzIHRvIHByZXNlcnZl
IHRoZSBQQyBhbmQKKyAgICAjIHRoZSBjb2RlIGJsb2NrLiBJdCBpcyBsaWtlbHkgdGhhdCB0aGlz
IGNvZGUgc2hvdWxkIGJlIHJld3JpdHRlbiBpbiBhIG1vcmUKKyAgICAjIG9wdGltYWwgd2F5IGZv
ciBhcmNoaXRlY3R1cmVzIHRoYXQgaGF2ZSBtb3JlIHRoYW4gZml2ZSByZWdpc3RlcnMgYXZhaWxh
YmxlCisgICAgIyBmb3IgYXJiaXRyYXJ5IHVzZSBpbiB0aGUgaW50ZXJwcmV0ZXIuCisgICAgbG9h
ZGkgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCB0MAorICAgIGFkZGkgLXByb2ZpbGVB
cmdTa2lwLCB0MCAjIFVzZSBhZGRpIGJlY2F1c2UgdGhhdCdzIHdoYXQgaGFzIHRoZSBwZWVwaG9s
ZQorICAgIGFzc2VydChtYWNybyAob2spIGJpZ3RlcSB0MCwgMCwgb2sgZW5kKQorICAgIGJ0aXog
dDAsIC5hcmd1bWVudFByb2ZpbGVEb25lCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2FyZ3VtZW50
VmFsdWVQcm9maWxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MV0sIHQzCisgICAgbXVsaSBzaXpl
b2YgVmFsdWVQcm9maWxlLCB0MCwgdDIgIyBBYWFhYWhoaGghIE5lZWQgc3RyZW5ndGggcmVkdWN0
aW9uIQorICAgIG5lZ2kgdDAKKyAgICBsc2hpZnRpIDMsIHQwCisgICAgYWRkcCB0MiwgdDMKKy5h
cmd1bWVudFByb2ZpbGVMb29wOgorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09m
ZnNldCArIDggLSBwcm9maWxlQXJnU2tpcCAqIDhbY2ZyLCB0MF0sIHQyCisgICAgc3VicCBzaXpl
b2YgVmFsdWVQcm9maWxlLCB0MworICAgIHN0b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAgKiBzaXpl
b2YgVmFsdWVQcm9maWxlICsgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbdDNd
CisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgUGF5bG9hZE9mZnNldCArIDggLSBwcm9m
aWxlQXJnU2tpcCAqIDhbY2ZyLCB0MF0sIHQyCisgICAgc3RvcmVpIHQyLCBwcm9maWxlQXJnU2tp
cCAqIHNpemVvZiBWYWx1ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyArIFBheWxv
YWRPZmZzZXRbdDNdCisgICAgYmFkZGlueiA4LCB0MCwgLmFyZ3VtZW50UHJvZmlsZUxvb3AKKy5h
cmd1bWVudFByb2ZpbGVEb25lOgorICAgIAorICAgICMgQ2hlY2sgc3RhY2sgaGVpZ2h0LgorICAg
IGxvYWRpIENvZGVCbG9jazo6bV9udW1DYWxsZWVSZWdpc3RlcnNbdDFdLCB0MAorICAgIGxvYWRw
IENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDIKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6
OmludGVycHJldGVyW3QyXSwgdDIgICAjIEZJWE1FOiBDYW4gZ2V0IHRvIHRoZSBSZWdpc3RlckZp
bGUgZnJvbSB0aGUgSklUU3RhY2tGcmFtZQorICAgIGxzaGlmdGkgMywgdDAKKyAgICBhZGRwIHQw
LCBjZnIsIHQwCisgICAgYnBhZXEgSW50ZXJwcmV0ZXI6Om1fcmVnaXN0ZXJGaWxlICsgUmVnaXN0
ZXJGaWxlOjptX2VuZFt0Ml0sIHQwLCAuc3RhY2tIZWlnaHRPSworCisgICAgIyBTdGFjayBoZWln
aHQgY2hlY2sgZmFpbGVkIC0gbmVlZCB0byBjYWxsIGEgc2xvd19wYXRoLgorICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfcmVnaXN0ZXJfZmlsZV9jaGVjaykKKy5zdGFja0hlaWdodE9LOgorZW5kCisK
KyMgRXhwZWN0cyB0aGF0IENvZGVCbG9jayBpcyBpbiB0MSwgd2hpY2ggaXMgd2hhdCBwcm9sb2d1
ZSgpIGxlYXZlcyBiZWhpbmQuCittYWNybyBmdW5jdGlvbkFyaXR5Q2hlY2soZG9uZUxhYmVsLCBz
bG93X3BhdGgpCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldCArIEFyZ3VtZW50Q291bnRbY2ZyXSwg
dDAKKyAgICBiaWFlcSB0MCwgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCBkb25lTGFi
ZWwKKyAgICBjQ2FsbDIoc2xvd19wYXRoLCBjZnIsIFBDKSAgICMgVGhpcyBzbG93X3BhdGggaGFz
IGEgc2ltcGxlIHByb3RvY29sOiB0MCA9IDAgPT4gbm8gZXJyb3IsIHQwICE9IDAgPT4gZXJyb3IK
KyAgICBtb3ZlIHQxLCBjZnIKKyAgICBidGl6IHQwLCAuY29udGludWUKKyAgICBsb2FkcCBKSVRT
dGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmNh
bGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJnZXRNYWNo
aW5lUENGb3JUaHJvd1t0MV0KKy5jb250aW51ZToKKyAgICAjIFJlbG9hZCBDb2RlQmxvY2sgYW5k
IFBDLCBzaW5jZSB0aGUgc2xvd19wYXRoIGNsb2JiZXJlZCBpdC4KKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDEKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1faW5zdHJ1Y3Rpb25zW3QxXSwgdDAK
KyAgICBsb2FkcCBDb2RlQmxvY2s6Okluc3RydWN0aW9uczo6bV9pbnN0cnVjdGlvbnMgKyBWZWN0
b3JCdWZmZXJPZmZzZXRbdDBdLCBQQworICAgIGptcCBkb25lTGFiZWwKK2VuZAorCitfbGxpbnRf
cHJvZ3JhbV9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShub3RGdW5jdGlvbkNvZGVCbG9ja0dldHRl
ciwgbm90RnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3IsIF9sbGludF90
cmFjZV9wcm9sb2d1ZSkKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9ldmFsX3Byb2xvZ3Vl
OgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNv
ZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQor
ICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlOgor
ICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2Rl
QmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwsIF9sbGludF90
cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCkKKy5mdW5jdGlvbkZvckNhbGxCZWdpbjoK
KyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDApCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKwor
X2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoZnVu
Y3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVy
LCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QsIF9sbGludF90cmFjZV9w
cm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQorLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVn
aW46CisgICAgZnVuY3Rpb25Jbml0aWFsaXphdGlvbigxKQorICAgIGRpc3BhdGNoKDApCisgICAg
CisKK19sbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjazoKKyAgICBwcm9sb2d1ZShm
dW5jdGlvbkZvckNhbGxDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBf
bGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2ssIF9sbGludF90cmFj
ZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQorICAgIGZ1bmN0aW9uQXJpdHlDaGVjayguZnVuY3Rpb25G
b3JDYWxsQmVnaW4sIF9sbGludF9zbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKQorCisKK19sbGlu
dF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0
aW9uRm9yQ29uc3RydWN0Q29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwg
X2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5Q2hlY2ssIF9sbGlu
dF90cmFjZV9hcml0eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCisgICAgZnVuY3Rpb25Bcml0eUNoZWNr
KC5mdW5jdGlvbkZvckNvbnN0cnVjdEJlZ2luLCBfbGxpbnRfc2xvd19wYXRoX2NvbnN0cnVjdF9h
cml0eUNoZWNrKQorCisjIEluc3RydWN0aW9uIGltcGxlbWVudGF0aW9ucworCitfbGxpbnRfb3Bf
ZW50ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MgorICAgIGxvYWRpIENvZGVCbG9jazo6bV9udW1WYXJzW3QyXSwgdDIKKyAgICBidGl6IHQyLCAu
b3BFbnRlckRvbmUKKyAgICBtb3ZlIFVuZGVmaW5lZFRhZywgdDAKKyAgICBtb3ZlIDAsIHQxCisu
b3BFbnRlckxvb3A6CisgICAgc3ViaSAxLCB0MgorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAg
YnRpbnogdDIsIC5vcEVudGVyTG9vcAorLm9wRW50ZXJEb25lOgorICAgIGRpc3BhdGNoKDEpCisK
KworX2xsaW50X29wX2NyZWF0ZV9hY3RpdmF0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5
VmFsdWVUYWcsIC5vcENyZWF0ZUFjdGl2YXRpb25Eb25lCisgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfY3JlYXRlX2FjdGl2YXRpb24pCisub3BDcmVhdGVBY3RpdmF0aW9uRG9uZToK
KyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbml0X2xhenlfcmVnOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRh
ZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF9jcmVhdGVfYXJndW1lbnRz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBU
YWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcENyZWF0ZUFyZ3VtZW50c0Rv
bmUKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKQor
Lm9wQ3JlYXRlQXJndW1lbnRzRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK21hY3JvIGFsbG9j
YXRlQmFzaWNKU09iamVjdChzaXplQ2xhc3NJbmRleCwgY2xhc3NJbmZvT2Zmc2V0LCBzdHJ1Y3R1
cmUsIHJlc3VsdCwgc2NyYXRjaDEsIHNjcmF0Y2gyLCBzbG93Q2FzZSkKKyAgICBpZiBBTFdBWVNf
QUxMT0NBVEVfU0xPVworICAgICAgICBqbXAgc2xvd0Nhc2UKKyAgICBlbHNlCisgICAgICAgIGNv
bnN0IG9mZnNldE9mTXlTaXplQ2xhc3MgPQorICAgICAgICAgICAgSlNHbG9iYWxEYXRhOjpoZWFw
ICsKKyAgICAgICAgICAgIEhlYXA6Om1fb2JqZWN0U3BhY2UgKworICAgICAgICAgICAgTWFya2Vk
U3BhY2U6Om1fbm9ybWFsU3BhY2UgKworICAgICAgICAgICAgTWFya2VkU3BhY2U6OlN1YnNwYWNl
OjpwcmVjaXNlQWxsb2NhdG9ycyArCisgICAgICAgICAgICBzaXplQ2xhc3NJbmRleCAqIHNpemVv
ZiBNYXJrZWRBbGxvY2F0b3IKKyAgICAgICAgCisgICAgICAgICMgRklYTUU6IHdlIGNhbiBnZXQg
dGhlIGdsb2JhbCBkYXRhIGluIG9uZSBsb2FkIGZyb20gdGhlIHN0YWNrLgorICAgICAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgc2NyYXRjaDEKKyAgICAgICAgbG9hZHAgQ29kZUJsb2NrOjptX2ds
b2JhbERhdGFbc2NyYXRjaDFdLCBzY3JhdGNoMQorICAgICAgICAKKyAgICAgICAgIyBHZXQgdGhl
IG9iamVjdCBmcm9tIHRoZSBmcmVlIGxpc3QuICAgIAorICAgICAgICBsb2FkcCBvZmZzZXRPZk15
U2l6ZUNsYXNzICsgTWFya2VkQWxsb2NhdG9yOjptX2ZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdLCBy
ZXN1bHQKKyAgICAgICAgYnRweiByZXN1bHQsIHNsb3dDYXNlCisgICAgICAgIAorICAgICAgICAj
IFJlbW92ZSB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4KKyAgICAgICAgbG9hZHAgW3Jl
c3VsdF0sIHNjcmF0Y2gyCisgICAgICAgIHN0b3JlcCBzY3JhdGNoMiwgb2Zmc2V0T2ZNeVNpemVD
bGFzcyArIE1hcmtlZEFsbG9jYXRvcjo6bV9maXJzdEZyZWVDZWxsW3NjcmF0Y2gxXQorICAgIAor
ICAgICAgICAjIEluaXRpYWxpemUgdGhlIG9iamVjdC4KKyAgICAgICAgbG9hZHAgY2xhc3NJbmZv
T2Zmc2V0W3NjcmF0Y2gxXSwgc2NyYXRjaDIKKyAgICAgICAgc3RvcmVwIHNjcmF0Y2gyLCBbcmVz
dWx0XQorICAgICAgICBzdG9yZXAgc3RydWN0dXJlLCBKU0NlbGw6Om1fc3RydWN0dXJlW3Jlc3Vs
dF0KKyAgICAgICAgc3RvcmVwIDAsIEpTT2JqZWN0OjptX2luaGVyaXRvcklEW3Jlc3VsdF0KKyAg
ICAgICAgYWRkcCBzaXplb2YgSlNPYmplY3QsIHJlc3VsdCwgc2NyYXRjaDEKKyAgICAgICAgc3Rv
cmVwIHNjcmF0Y2gxLCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbcmVzdWx0XQorICAgIGVu
ZAorZW5kCisKK19sbGludF9vcF9jcmVhdGVfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgOFtQQ10sIHQwCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgYmluZXEg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0
cnVjdHVyZVt0MF0sIHQxCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX3R5cGVbdDFdLCBPYmplY3RUeXBlLCAub3BDcmVhdGVUaGlzU2xvdworICAgIGxvYWRwIEpT
T2JqZWN0OjptX2luaGVyaXRvcklEW3QwXSwgdDIKKyAgICBidHB6IHQyLCAub3BDcmVhdGVUaGlz
U2xvdworICAgIGFsbG9jYXRlQmFzaWNKU09iamVjdChKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNzSW5k
ZXgsIEpTR2xvYmFsRGF0YTo6anNGaW5hbE9iamVjdENsYXNzSW5mbywgdDIsIHQwLCB0MSwgdDMs
IC5vcENyZWF0ZVRoaXNTbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxs
VGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BDcmVhdGVUaGlzU2xvdzoKKyAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfdGhpcykKKyAgICBkaXNwYXRjaCgz
KQorCisKK19sbGludF9vcF9nZXRfY2FsbGVlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkcCBQYXlsb2FkT2Zmc2V0ICsgQ2FsbGVlW2Nmcl0sIHQx
CisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0
MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50
X29wX2NvbnZlcnRfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BDb252ZXJ0
VGhpc1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlw
ZUluZm8gKyBUeXBlSW5mbzo6bV90eXBlW3QwXSwgT2JqZWN0VHlwZSwgLm9wQ29udmVydFRoaXNT
bG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ29udmVydFRoaXNTbG93OgorICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX2NvbnZlcnRfdGhpcykKKyAgICBkaXNwYXRjaCgyKQorCisK
K19sbGludF9vcF9uZXdfb2JqZWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkcCBD
b2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3Qw
XSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9lbXB0eU9iamVjdFN0cnVjdHVyZVt0
MF0sIHQxCisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJ
bmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0MSwgdDAsIHQyLCB0
MywgLm9wTmV3T2JqZWN0U2xvdykKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBzdG9yZWkgQ2Vs
bFRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wTmV3T2JqZWN0U2xvdzoKKyAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfb2JqZWN0KQorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX25ld19hcnJheToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2FycmF5KQorICAgIGRpc3BhdGNoKDQpCisK
KworX2xsaW50X29wX25ld19hcnJheV9idWZmZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19hcnJheV9idWZmZXIpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X3JlZ2V4cDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X3JlZ2V4cCkKKyAgICBkaXNw
YXRjaCgzKQorCisKK19sbGludF9vcF9tb3Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDhbUENdLCB0MQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUodDEsIHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQor
ICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMp
CisKKworX2xsaW50X29wX25vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MCwgdDIsIHQzKQorICAgIGJpbmVxIHQyLCBCb29sZWFuVGFnLCAub3BOb3RTbG93CisgICAgeG9y
aSAxLCB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVp
IHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wTm90
U2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9ub3QpCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0
MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcEVxU2xvdworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5v
cEVxU2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAub3BFcVNsb3cKKyAgICBsb2FkaSA0W1BD
XSwgdDIKKyAgICBjaWVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zm
c2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhd
CisgICAgZGlzcGF0Y2goNCkKKworLm9wRXFTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX2VxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2VxX251bGw6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDRbUENd
LCB0MworICAgIGFzc2VydE5vdENvbnN0YW50KHQwKQorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAg
IGJpbmVxIHQxLCBDZWxsVGFnLCAub3BFcU51bGxJbW1lZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6
Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0Ym56IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX2ZsYWdzW3QxXSwgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCwgdDEKKyAgICBqbXAg
Lm9wRXFOdWxsTm90SW1tZWRpYXRlCisub3BFcU51bGxJbW1lZGlhdGU6CisgICAgY2llcSB0MSwg
TnVsbFRhZywgdDIKKyAgICBjaWVxIHQxLCBVbmRlZmluZWRUYWcsIHQxCisgICAgb3JpIHQyLCB0
MQorLm9wRXFOdWxsTm90SW1tZWRpYXRlOgorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0K
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9uZXE6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29u
c3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJS
ZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5vcE5lcVNsb3cKKyAgICBiaWVxIHQy
LCBDZWxsVGFnLCAub3BOZXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcE5lcVNsb3cK
KyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBjaW5lcSB0MCwgdDEsIHQwCisgICAgc3RvcmVpIEJv
b2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9m
ZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcE5lcVNsb3c6CisgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmVxKQorICAgIGRpc3BhdGNoKDQpCisgICAgCisK
K19sbGludF9vcF9uZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQ
Q10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisg
ICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcE5lcU51bGxJbW1l
ZGlhdGUKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICB0YnogU3Ry
dWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0Fz
VW5kZWZpbmVkLCB0MQorICAgIGptcCAub3BOZXFOdWxsTm90SW1tZWRpYXRlCisub3BOZXFOdWxs
SW1tZWRpYXRlOgorICAgIGNpbmVxIHQxLCBOdWxsVGFnLCB0MgorICAgIGNpbmVxIHQxLCBVbmRl
ZmluZWRUYWcsIHQxCisgICAgYW5kaSB0MiwgdDEKKy5vcE5lcU51bGxOb3RJbW1lZGlhdGU6Cisg
ICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0
MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8g
c3RyaWN0RXEoZXF1YWxpdHlPcGVyYXRpb24sIHNsb3dfcGF0aCkKKyAgICBsb2FkaSAxMltQQ10s
IHQyCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0Miwg
dDMsIHQxKQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAg
YmluZXEgdDIsIHQzLCAuc2xvdworICAgIGJpYiB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJp
bmVxIHQyLCBDZWxsVGFnLCAubm90U3RyaW5nCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQyCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQzCisgICAgYmJu
ZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIFN0cmluZ1R5
cGUsIC5ub3RTdHJpbmcKKyAgICBiYmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZv
OjptX3R5cGVbdDNdLCBTdHJpbmdUeXBlLCAuc2xvdworLm5vdFN0cmluZzoKKyAgICBsb2FkaSA0
W1BDXSwgdDIKKyAgICBlcXVhbGl0eU9wZXJhdGlvbih0MCwgdDEsIHQwKQorICAgIHN0b3JlaSBC
b29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisuc2xvdzoKKyAgICBjYWxsU2xv
d1BhdGgoc2xvd19wYXRoKQorICAgIGRpc3BhdGNoKDQpCitlbmQKKworX2xsaW50X29wX3N0cmlj
dGVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmln
aHQsIHJlc3VsdCkgY2llcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X3Nsb3dfcGF0
aF9zdHJpY3RlcSkKKworCitfbGxpbnRfb3BfbnN0cmljdGVxOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBzdHJpY3RFcShtYWNybyAobGVmdCwgcmlnaHQsIHJlc3VsdCkgY2luZXEgbGVmdCwg
cmlnaHQsIHJlc3VsdCBlbmQsIF9sbGludF9zbG93X3BhdGhfbnN0cmljdGVxKQorCisKK19sbGlu
dF9vcF9sZXNzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9sZXNzKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2xlc3NlcToK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
bGVzc2VxKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dyZWF0ZXI6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dyZWF0ZXIp
CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9ncmVhdGVyZXEpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHJlX2luYzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
LCBJbnQzMlRhZywgLm9wUHJlSW5jU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQxCisgICAgYmFkZGlvIDEsIHQxLCAub3BQcmVJbmNTbG93CisgICAgc3RvcmVpIHQx
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlSW5j
U2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcmVfaW5jKQorICAgIGRp
c3BhdGNoKDIpCisKKworX2xsaW50X29wX3ByZV9kZWM6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgSW50
MzJUYWcsIC5vcFByZURlY1Nsb3cKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
LCB0MQorICAgIGJzdWJpbyAxLCB0MSwgLm9wUHJlRGVjU2xvdworICAgIHN0b3JlaSB0MSwgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKy5vcFByZURlY1Nsb3c6
CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHJlX2RlYykKKyAgICBkaXNwYXRj
aCgyKQorCisKK19sbGludF9vcF9wb3N0X2luYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdEluY1Nsb3cKKyAgICBiaWVxIHQwLCB0MSwg
Lm9wUG9zdEluY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0Mgor
ICAgIG1vdmUgdDIsIHQzCisgICAgYmFkZGlvIDEsIHQzLCAub3BQb3N0SW5jU2xvdworICAgIHN0
b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCisub3BQb3N0SW5jRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0SW5jU2xv
dzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wb3N0X2luYykKKyAgICBkaXNw
YXRjaCgzKQorCisKK19sbGludF9vcF9wb3N0X2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUG9zdERlY1Nsb3cKKyAgICBiaWVxIHQwLCB0
MSwgLm9wUG9zdERlY0RvbmUKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0
MgorICAgIG1vdmUgdDIsIHQzCisgICAgYnN1YmlvIDEsIHQzLCAub3BQb3N0RGVjU2xvdworICAg
IHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDAsIDhdCisub3BQb3N0RGVjRG9uZToKKyAgICBkaXNwYXRjaCgzKQorCisub3BQb3N0RGVj
U2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wb3N0X2RlYykKKyAgICBk
aXNwYXRjaCgzKQorCisKK19sbGludF9vcF90b19qc251bWJlcjoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZSh0MCwgdDIsIHQzKQorICAgIGJpZXEgdDIsIEludDMyVGFnLCAub3BU
b0pzbnVtYmVySXNJbnQKKyAgICBiaWFlcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wVG9Kc251bWJl
clNsb3cKKy5vcFRvSnNudW1iZXJJc0ludDoKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIs
IHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRp
c3BhdGNoKDMpCisKKy5vcFRvSnNudW1iZXJTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX3RvX2pzbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25l
Z2F0ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9h
ZGkgNFtQQ10sIHQzCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MCwgdDEsIHQyKQorICAg
IGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wTmVnYXRlU3JjTm90SW50CisgICAgYnRpeiB0MiwgMHg3
ZmZmZmZmZiwgLm9wTmVnYXRlU2xvdworICAgIG5lZ2kgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcs
IFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIs
IHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisub3BOZWdhdGVTcmNOb3RJbnQ6CisgICAgYmlhIHQx
LCBMb3dlc3RUYWcsIC5vcE5lZ2F0ZVNsb3cKKyAgICB4b3JpIDB4ODAwMDAwMDAsIHQxCisgICAg
c3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOZWdhdGVTbG93OgorICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25lZ2F0ZSkKKyAgICBkaXNwYXRjaCgzKQor
CisKK21hY3JvIGJpbmFyeU9wQ3VzdG9tU3RvcmUoaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlLCBk
b3VibGVPcGVyYXRpb24sIHNsb3dfcGF0aCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9h
ZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQxKQorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEgdDIsIElu
dDMyVGFnLCAub3AxTm90SW50CisgICAgYmluZXEgdDMsIEludDMyVGFnLCAub3AyTm90SW50Cisg
ICAgbG9hZGkgNFtQQ10sIHQyCisgICAgaW50ZWdlck9wZXJhdGlvbkFuZFN0b3JlKHQzLCB0MSwg
dDAsIC5zbG93LCB0MikKKyAgICBkaXNwYXRjaCg1KQorCisub3AxTm90SW50OgorICAgICMgRmly
c3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdCBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBj
b3VsZCBiZSBhbnl0aGluZy4KKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIg
dDMsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQzLCBJbnQzMlRh
ZywgLnNsb3cKKyAgICBjaTJkIHQxLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3Ax
Tm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQxLCB0MywgZnQxCisub3AxTm90SW50UmVhZHk6
CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgZmlpMmQgdDAsIHQyLCBmdDAKKyAgICBkb3VibGVP
cGVyYXRpb24oZnQxLCBmdDApCisgICAgc3RvcmVkIGZ0MCwgW2NmciwgdDEsIDhdCisgICAgZGlz
cGF0Y2goNSkKKworLm9wMk5vdEludDoKKyAgICAjIEZpcnN0IG9wZXJhbmQgaXMgZGVmaW5pdGVs
eSBhbiBpbnQsIHRoZSBzZWNvbmQgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IG5vdC4KKyAgICBsb2Fk
aSA0W1BDXSwgdDIKKyAgICBiaWEgdDMsIExvd2VzdFRhZywgLnNsb3cKKyAgICBjaTJkIHQwLCBm
dDAKKyAgICBmaWkyZCB0MSwgdDMsIGZ0MQorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkK
KyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisuc2xvdzoK
KyAgICBjYWxsU2xvd1BhdGgoc2xvd19wYXRoKQorICAgIGRpc3BhdGNoKDUpCitlbmQKKworbWFj
cm8gYmluYXJ5T3AoaW50ZWdlck9wZXJhdGlvbiwgZG91YmxlT3BlcmF0aW9uLCBzbG93X3BhdGgp
CisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0
LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBpbnRlZ2VyT3BlcmF0aW9uKGxlZnQs
IHJpZ2h0LCBzbG93KQorICAgICAgICAgICAgc3RvcmVpIGludDMyVGFnLCBUYWdPZmZzZXRbY2Zy
LCBpbmRleCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSByaWdodCwgUGF5bG9hZE9mZnNldFtjZnIs
IGluZGV4LCA4XQorICAgICAgICBlbmQsCisgICAgICAgIGRvdWJsZU9wZXJhdGlvbiwgc2xvd19w
YXRoKQorZW5kCisKK19sbGludF9vcF9hZGQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJp
bmFyeU9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGJhZGRpbyBsZWZ0LCBy
aWdodCwgc2xvdyBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgYWRkZCBsZWZ0LCBy
aWdodCBlbmQsCisgICAgICAgIF9sbGludF9zbG93X3BhdGhfYWRkKQorCisKK19sbGludF9vcF9t
dWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpbmFyeU9wQ3VzdG9tU3RvcmUoCisgICAg
ICAgIG1hY3JvIChpbnQzMlRhZywgbGVmdCwgcmlnaHQsIHNsb3csIGluZGV4KQorICAgICAgICAg
ICAgY29uc3Qgc2NyYXRjaCA9IGludDMyVGFnICAgIyBXZSBrbm93IHRoYXQgd2UgY2FuIHJldXNl
IHRoZSBpbnQzMlRhZyByZWdpc3RlciBzaW5jZSBpdCBoYXMgYSBjb25zdGFudC4KKyAgICAgICAg
ICAgIG1vdmUgcmlnaHQsIHNjcmF0Y2gKKyAgICAgICAgICAgIGJtdWxpbyBsZWZ0LCBzY3JhdGNo
LCBzbG93CisgICAgICAgICAgICBidGlueiBzY3JhdGNoLCAuZG9uZQorICAgICAgICAgICAgYmls
dCBsZWZ0LCAwLCBzbG93CisgICAgICAgICAgICBiaWx0IHJpZ2h0LCAwLCBzbG93CisgICAgICAg
IC5kb25lOgorICAgICAgICAgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCBpbmRl
eCwgOF0KKyAgICAgICAgICAgIHN0b3JlaSBzY3JhdGNoLCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5k
ZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBtdWxkIGxl
ZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9tdWwpCisKKworX2xsaW50
X29wX3N1YjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgc2xvdykgYnN1YmlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBzdWJkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAg
X2xsaW50X3Nsb3dfcGF0aF9zdWIpCisKKworX2xsaW50X29wX2RpdjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFn
LCBsZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjaTJkIGxlZnQsIGZ0MAor
ICAgICAgICAgICAgY2kyZCByaWdodCwgZnQxCisgICAgICAgICAgICBkaXZkIGZ0MCwgZnQxCisg
ICAgICAgICAgICBiY2QyaSBmdDEsIHJpZ2h0LCAubm90SW50CisgICAgICAgICAgICBzdG9yZWkg
aW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHJp
Z2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgICAgICBqbXAgLmRvbmUK
KyAgICAgICAgLm5vdEludDoKKyAgICAgICAgICAgIHN0b3JlZCBmdDEsIFtjZnIsIGluZGV4LCA4
XQorICAgICAgICAuZG9uZToKKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQpIGRpdmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2RpdikK
KworCitfbGxpbnRfb3BfbW9kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9tb2QpCisgICAgZGlzcGF0Y2goNCkKKworCittYWNybyBiaXRP
cChvcGVyYXRpb24sIHNsb3dfcGF0aCwgYWR2YW5jZSkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisg
ICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDMsIHQx
KQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQwLCB0MiwgdDApCisgICAgYmluZXEg
dDMsIEludDMyVGFnLCAuc2xvdworICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBs
b2FkaSA0W1BDXSwgdDIKKyAgICBvcGVyYXRpb24odDEsIHQwLCAuc2xvdykKKyAgICBzdG9yZWkg
dDMsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtj
ZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKGFkdmFuY2UpCisKKy5zbG93OgorICAgIGNhbGxTbG93
UGF0aChzbG93X3BhdGgpCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKK2VuZAorCitfbGxpbnRfb3Bf
bHNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8g
KGxlZnQsIHJpZ2h0LCBzbG93KSBsc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xs
aW50X3Nsb3dfcGF0aF9sc2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX3JzaGlmdDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgc2xvdykgcnNoaWZ0aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9zbG93
X3BhdGhfcnNoaWZ0LAorICAgICAgICA0KQorCisKK19sbGludF9vcF91cnNoaWZ0OgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBz
bG93KQorICAgICAgICAgICAgdXJzaGlmdGkgbGVmdCwgcmlnaHQKKyAgICAgICAgICAgIGJpbHQg
cmlnaHQsIDAsIHNsb3cKKyAgICAgICAgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3Vy
c2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX2JpdGFuZDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgYW5k
aSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9zbG93X3BhdGhfYml0YW5kLAorICAg
ICAgICA1KQorCisKK19sbGludF9vcF9iaXR4b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIHhvcmkgbGVmdCwgcmln
aHQgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2JpdHhvciwKKyAgICAgICAgNSkKKwor
CitfbGxpbnRfb3BfYml0b3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAg
ICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAg
ICAgIF9sbGludF9zbG93X3BhdGhfYml0b3IsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2Jp
dG5vdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9h
ZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAg
IGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wQml0bm90U2xvdworICAgIG5vdGkgdDMKKyAgICBzdG9y
ZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcEJpdG5vdFNsb3c6CisgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfYml0bm90KQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX2NoZWNrX2hhc19pbnN0YW5jZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
bG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIENl
bGxUYWcsIHQwLCAub3BDaGVja0hhc0luc3RhbmNlU2xvdykKKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDAKKyAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJ
bmZvOjptX2ZsYWdzW3QwXSwgSW1wbGVtZW50c0hhc0luc3RhbmNlLCAub3BDaGVja0hhc0luc3Rh
bmNlU2xvdworICAgIGRpc3BhdGNoKDIpCisKKy5vcENoZWNrSGFzSW5zdGFuY2VTbG93OgorICAg
IGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NoZWNrX2hhc19pbnN0YW5jZSkKKyAgICBk
aXNwYXRjaCgyKQorCisKK19sbGludF9vcF9pbnN0YW5jZW9mOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICAjIENoZWNrIHRoYXQgYmFzZVZhbCBpbXBsZW1lbnRzIHRoZSBkZWZhdWx0IEhhc0lu
c3RhbmNlIGJlaGF2aW9yLgorICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIGJlIGRlcHJlY2F0ZWQu
CisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
VW5jaGVja2VkKHQxLCB0MCkKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDAK
KyAgICBidGJ6IFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX2ZsYWdzW3QwXSwg
SW1wbGVtZW50c0RlZmF1bHRIYXNJbnN0YW5jZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICAKKyAg
ICAjIEFjdHVhbGx5IGRvIHRoZSB3b3JrLgorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICBsb2Fk
aSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRh
ZywgdDEsIC5vcEluc3RhbmNlb2ZTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVb
dDFdLCB0MgorICAgIGJiYiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QyXSwgT2JqZWN0VHlwZSwgLm9wSW5zdGFuY2VvZlNsb3cKKyAgICBsb2FkaSA4W1BDXSwgdDAK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5vcElu
c3RhbmNlb2ZTbG93KQorICAgIAorICAgICMgUmVnaXN0ZXIgc3RhdGU6IHQxID0gcHJvdG90eXBl
LCB0MiA9IHZhbHVlCisgICAgbW92ZSAxLCB0MAorLm9wSW5zdGFuY2VvZkxvb3A6CisgICAgbG9h
ZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQyCisgICAgbG9hZGkgU3RydWN0dXJlOjptX3By
b3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDJdLCB0MgorICAgIGJwZXEgdDIsIHQxLCAub3BJbnN0
YW5jZW9mRG9uZQorICAgIGJ0aW56IHQyLCAub3BJbnN0YW5jZW9mTG9vcAorCisgICAgbW92ZSAw
LCB0MAorLm9wSW5zdGFuY2VvZkRvbmU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNl
dFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQor
ICAgIGRpc3BhdGNoKDUpCisKKy5vcEluc3RhbmNlb2ZTbG93OgorICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX2luc3RhbmNlb2YpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRf
b3BfdHlwZW9mOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF90eXBlb2YpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNfdW5k
ZWZpbmVkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Ns
b3dfcGF0aF9pc191bmRlZmluZWQpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaXNf
Ym9vbGVhbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfaXNfYm9vbGVhbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19u
dW1iZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX2lzX251bWJlcikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19zdHJp
bmc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19w
YXRoX2lzX3N0cmluZykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19vYmplY3Q6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X2lzX29iamVjdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19mdW5jdGlvbjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
aXNfZnVuY3Rpb24pCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfaW46CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2luKQorICAg
IGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3Jlc29sdmU6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Jlc29sdmUpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9za2lwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX3NraXApCisgICAgZGlz
cGF0Y2goNSkKKworCittYWNybyByZXNvbHZlR2xvYmFsKHNpemUsIHNsb3cpCisgICAgIyBPcGVy
YW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRoZSBs
b2FkLgorICAgICMgOFtQQ10gICBQcm9wZXJ0eSBpZGVudGlmaWVyIGluZGV4IGluIHRoZSBjb2Rl
IGJsb2NrLgorICAgICMgMTJbUENdICBTdHJ1Y3R1cmUgcG9pbnRlciwgaW5pdGlhbGl6ZWQgdG8g
MCBieSBieXRlY29kZSBnZW5lcmF0b3IuCisgICAgIyAxNltQQ10gIE9mZnNldCBpbiBnbG9iYWwg
b2JqZWN0LCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAgICBsb2Fk
cCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0
W3QwXSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBicG5l
cSB0MSwgMTJbUENdLCBzbG93CisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRwIEpTT2Jq
ZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W3QwLCB0
MSwgOF0sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdLCB0MworICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAg
c3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgbG9hZGkgKHNpemUgLSAx
KSAqIDRbUENdLCB0MAorICAgIHZhbHVlUHJvZmlsZSh0MiwgdDMsIHQwKQorZW5kCisKK19sbGlu
dF9vcF9yZXNvbHZlX2dsb2JhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgcmVzb2x2ZUds
b2JhbCg2LCAub3BSZXNvbHZlR2xvYmFsU2xvdykKKyAgICBkaXNwYXRjaCg2KQorCisub3BSZXNv
bHZlR2xvYmFsU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9yZXNvbHZl
X2dsb2JhbCkKKyAgICBkaXNwYXRjaCg2KQorCisKKyMgR2l2ZXMgeW91IHRoZSBzY29wZSBpbiB0
MCwgd2hpbGUgYWxsb3dpbmcgeW91IHRvIG9wdGlvbmFsbHkgcGVyZm9ybSBhZGRpdGlvbmFsIGNo
ZWNrcyBvbiB0aGUKKyMgc2NvcGVzIGFzIHRoZXkgYXJlIHRyYXZlcnNlZC4gc2NvcGVDaGVjaygp
IGlzIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IHRoZSByZWdpc3RlcgorIyBob2xkaW5nIHRo
ZSBzY29wZSwgYW5kIGEgcmVnaXN0ZXIgdGhhdCBjYW4gYmUgdXNlZCBmb3Igc2NyYXRjaC4gTm90
ZSB0aGF0IHRoaXMgZG9lcyBub3QKKyMgdXNlIHQzLCBzbyB5b3UgY2FuIGhvbGQgc3R1ZmYgaW4g
dDMgaWYgbmVlZCBiZS4KK21hY3JvIGdldFNjb3BlKGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgc2Nv
cGVDaGVjaykKKyAgICBsb2FkcCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MAor
ICAgIGxvYWRpIGRlQnJ1aWppbkluZGV4T3BlcmFuZCwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAu
ZG9uZQorICAgIAorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGJpbmVxIENvZGVC
bG9jazo6bV9jb2RlVHlwZVt0MV0sIEZ1bmN0aW9uQ29kZSwgLmxvb3AKKyAgICBidGJ6IENvZGVC
bG9jazo6bV9uZWVkc0Z1bGxTY29wZUNoYWluW3QxXSwgLmxvb3AKKyAgICAKKyAgICBsb2FkaSBD
b2RlQmxvY2s6Om1fYWN0aXZhdGlvblJlZ2lzdGVyW3QxXSwgdDEKKworICAgICMgTmVlZCB0byBj
b25kaXRpb25hbGx5IHNraXAgb3ZlciBvbmUgc2NvcGUuCisgICAgYmllcSBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5ub0FjdGl2YXRpb24KKyAgICBzY29wZUNoZWNrKHQw
LCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisubm9BY3RpdmF0
aW9uOgorICAgIHN1YmkgMSwgdDIKKyAgICAKKyAgICBidGl6IHQyLCAuZG9uZQorLmxvb3A6Cisg
ICAgc2NvcGVDaGVjayh0MCwgdDEpCisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om5leHRbdDBd
LCB0MAorICAgIHN1YmkgMSwgdDIKKyAgICBidGlueiB0MiwgLmxvb3AKKworLmRvbmU6CitlbmQK
KworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MworICAgIGxvYWRw
IEpTR2xvYmFsRGF0YTo6YWN0aXZhdGlvblN0cnVjdHVyZVt0M10sIHQzCisgICAgZ2V0U2NvcGUo
CisgICAgICAgIDIwW1BDXSwKKyAgICAgICAgbWFjcm8gKHNjb3BlLCBzY3JhdGNoKQorICAgICAg
ICAgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFtzY29wZV0sIHNjcmF0Y2gKKyAgICAg
ICAgICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbc2NyYXRjaF0sIHQzLCAub3BSZXNvbHZl
R2xvYmFsRHluYW1pY1N1cGVyU2xvdworICAgICAgICBlbmQpCisgICAgcmVzb2x2ZUdsb2JhbCg3
LCAub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3cpCisgICAgZGlzcGF0Y2goNykKKworLm9wUmVz
b2x2ZUdsb2JhbER5bmFtaWNTdXBlclNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKKyAgICBkaXNwYXRjaCg3
KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1Nsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYykKKyAgICBkaXNwYXRjaCg3KQorCisK
K19sbGludF9vcF9nZXRfc2NvcGVkX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBP
cGVyYW5kcyBhcmUgYXMgZm9sbG93czoKKyAgICAjIDRbUENdICAgRGVzdGluYXRpb24gZm9yIHRo
ZSBsb2FkLgorICAgICMgOFtQQ10gICBJbmRleCBvZiByZWdpc3RlciBpbiB0aGUgc2NvcGUuCisg
ICAgIyAxMltQQ10gIERlIEJydWlqaW4gaW5kZXguCisgICAgZ2V0U2NvcGUoMTJbUENdLCBtYWNy
byAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSA4
W1BDXSwgdDIKKyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3QwXSwgdDAKKyAgICBs
b2FkcCBKU1ZhcmlhYmxlT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9hZGkgVGFn
T2Zmc2V0W3QwLCB0MiwgOF0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDIsIDhd
LCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQw
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIHZh
bHVlUHJvZmlsZSh0MywgdDAsIHQxKQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX3B1
dF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBnZXRTY29wZSg4W1BDXSwg
bWFjcm8gKHNjb3BlLCBzY3JhdGNoKSBlbmQpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDEsIHQzLCB0MikKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICB3cml0ZUJhcnJpZXIodDMsIHQyKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3Rb
dDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAK
KyAgICBzdG9yZWkgdDMsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9nZXRf
Z2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisg
ICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxP
YmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4
XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQxCisgICAgc3RvcmVp
IHQyLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MywgOF0KKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgdmFsdWVQcm9maWxlKHQyLCB0
MSwgdDMpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2dsb2JhbF92YXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGxvYWRwIENvZGVC
bG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0
MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX3JlZ2lzdGVyc1t0MF0sIHQwCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAg
IHdyaXRlQmFycmllcih0MiwgdDMpCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbdDAsIHQxLCA4
XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFt0MCwgdDEsIDhdCisgICAgZGlzcGF0Y2go
MykKKworCitfbGxpbnRfb3BfcmVzb2x2ZV9iYXNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX2Jhc2UpCisgICAgZGlzcGF0
Y2goNSkKKworCitfbGxpbnRfb3BfZW5zdXJlX3Byb3BlcnR5X2V4aXN0czoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZW5zdXJlX3Byb3Bl
cnR5X2V4aXN0cykKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhf
YmFzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfcmVzb2x2ZV93aXRoX2Jhc2UpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3Bf
cmVzb2x2ZV93aXRoX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVfd2l0aF90aGlzKQorICAgIGRpc3BhdGNoKDUpCisK
KworX2xsaW50X29wX2dldF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBv
bmx5IGRvIG1vbm9tb3JwaGljIGdldF9ieV9pZCBjYWNoaW5nIGZvciBub3csIGFuZCB3ZSBkbyBu
b3QgbW9kaWZ5IHRoZQorICAgICMgb3Bjb2RlLiBXZSBkbywgaG93ZXZlciwgYWxsb3cgZm9yIHRo
ZSBjYWNoZSB0byBjaGFuZ2UgYW55dGltZSBpZiBmYWlscywgc2luY2UKKyAgICAjIHBpbmctcG9u
Z2luZyBpcyBmcmVlLiBBdCBiZXN0IHdlIGdldCBsdWNreSBhbmQgdGhlIGdldF9ieV9pZCB3aWxs
IGNvbnRpbnVlCisgICAgIyB0byB0YWtlIGZhc3QgcGF0aCBvbiB0aGUgbmV3IGNhY2hlLiBBdCB3
b3JzdCB3ZSB0YWtlIHNsb3cgcGF0aCwgd2hpY2ggaXMgd2hhdAorICAgICMgd2Ugd291bGQgaGF2
ZSBiZWVuIGRvaW5nIGFueXdheS4KKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQ
Q10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQz
LCAub3BHZXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZHAgSlNPYmpl
Y3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QzXSwgdDAKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0
dXJlW3QzXSwgdDEsIC5vcEdldEJ5SWRTbG93CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9h
ZGkgVGFnT2Zmc2V0W3QwLCB0Ml0sIHQzCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0MCwgdDJd
LCB0MgorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQy
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgMzJbUENdLCB0MQorICAgIHZh
bHVlUHJvZmlsZSh0MywgdDIsIHQxKQorICAgIGRpc3BhdGNoKDkpCisKKy5vcEdldEJ5SWRTbG93
OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV9pZCkKKyAgICBkaXNw
YXRjaCg5KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRzX2xlbmd0aDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAg
YmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVu
dHNMZW5ndGhTbG93CisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2Zy
XSwgdDIKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBk
aXNwYXRjaCg0KQorCisub3BHZXRBcmd1bWVudHNMZW5ndGhTbG93OgorICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX2dldF9hcmd1bWVudHNfbGVuZ3RoKQorICAgIGRpc3BhdGNoKDQp
CisKKworX2xsaW50X29wX3B1dF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkg
MTJbUENdLCB0MgorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0MF0sIHQz
CisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdwor
ICAgIGxvYWRpIDIwW1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0Miwg
dDAsIHQyKQorICAgIHdyaXRlQmFycmllcih0MCwgdDIpCisgICAgc3RvcmVpIHQwLCBUYWdPZmZz
ZXRbdDMsIHQxXQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFt0MywgdDFdCisgICAgZGlz
cGF0Y2goOSkKKworLm9wUHV0QnlJZFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfcHV0X2J5X2lkKQorICAgIGRpc3BhdGNoKDkpCisKKworbWFjcm8gcHV0QnlJZFRyYW5z
aXRpb24oYWRkaXRpb25hbENoZWNrcykKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
NFtQQ10sIHQzCisgICAgbG9hZGkgMTZbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGVQYXlsb2FkKHQzLCBDZWxsVGFnLCB0MCwgLm9wUHV0QnlJZFNsb3cpCisgICAgbG9hZGkgMTJb
UENdLCB0MgorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MSwgLm9wUHV0QnlJ
ZFNsb3cKKyAgICBhZGRpdGlvbmFsQ2hlY2tzKHQxLCB0MywgLm9wUHV0QnlJZFNsb3cpCisgICAg
bG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0
MF0sIHQzCisgICAgYWRkcCB0MSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0
MiwgdDEsIHQyKQorICAgIHdyaXRlQmFycmllcih0MSwgdDIpCisgICAgc3RvcmVpIHQxLCBUYWdP
ZmZzZXRbdDNdCisgICAgbG9hZGkgMjRbUENdLCB0MQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9m
ZnNldFt0M10KKyAgICBzdG9yZXAgdDEsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdCisgICAgZGlz
cGF0Y2goOSkKK2VuZAorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0Ogor
ICAgIHB1dEJ5SWRUcmFuc2l0aW9uKG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cp
IGVuZCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgIHB1
dEJ5SWRUcmFuc2l0aW9uKAorICAgICAgICBtYWNybyAob2xkU3RydWN0dXJlLCBzY3JhdGNoLCBz
bG93KQorICAgICAgICAgICAgY29uc3QgcHJvdG9DZWxsID0gb2xkU3RydWN0dXJlICAgIyBSZXVz
aW5nIHRoZSBvbGRTdHJ1Y3R1cmUgcmVnaXN0ZXIgZm9yIHRoZSBwcm90bworICAgICAgICAKKyAg
ICAgICAgICAgIGxvYWRwIDI4W1BDXSwgc2NyYXRjaAorICAgICAgICAgICAgYXNzZXJ0KG1hY3Jv
IChvaykgYnRwbnogc2NyYXRjaCwgb2sgZW5kKQorICAgICAgICAgICAgbG9hZHAgU3RydWN0dXJl
Q2hhaW46Om1fdmVjdG9yW3NjcmF0Y2hdLCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFj
cm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBiaWVxIFN0cnVjdHVy
ZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmRvbmUK
KyAgICAgICAgLmxvb3A6CisgICAgICAgICAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBl
ICsgUGF5bG9hZE9mZnNldFtvbGRTdHJ1Y3R1cmVdLCBwcm90b0NlbGwKKyAgICAgICAgICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcHJvdG9DZWxsXSwgb2xkU3RydWN0dXJlCisgICAgICAg
ICAgICBicG5lcSBvbGRTdHJ1Y3R1cmUsIFtzY3JhdGNoXSwgc2xvdworICAgICAgICAgICAgYWRk
cCA0LCBzY3JhdGNoCisgICAgICAgICAgICBiaW5lcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsg
VGFnT2Zmc2V0W29sZFN0cnVjdHVyZV0sIE51bGxUYWcsIC5sb29wCisgICAgICAgIC5kb25lOgor
ICAgICAgICBlbmQpCisKKworX2xsaW50X29wX2RlbF9ieV9pZDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZGVsX2J5X2lkKQorICAgIGRp
c3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAg
IGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVt0MV0s
IHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDIsIENlbGxUYWcsIHQwLCAu
b3BHZXRCeVZhbFNsb3cpCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZv
W3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MywgSW50MzJUYWcs
IHQxLCAub3BHZXRCeVZhbFNsb3cpCisgICAgYnBuZXEgW3QwXSwgdDIsIC5vcEdldEJ5VmFsU2xv
dworICAgIGxvYWRwIEpTQXJyYXk6Om1fc3RvcmFnZVt0MF0sIHQzCisgICAgYmlhZXEgdDEsIEpT
QXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QwXSwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZGkgNFtQ
Q10sIHQwCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0Mywg
dDEsIDhdLCB0MgorICAgIGxvYWRpIEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zm
c2V0W3QzLCB0MSwgOF0sIHQxCisgICAgYmllcSB0MiwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QnlW
YWxTbG93CisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkg
dDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAxNltQQ10sIHQwCisgICAg
dmFsdWVQcm9maWxlKHQyLCB0MSwgdDApCisgICAgZGlzcGF0Y2goNSkKKworLm9wR2V0QnlWYWxT
bG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2dldF9ieV92YWwpCisgICAg
ZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZ2V0X2FyZ3VtZW50X2J5X3ZhbDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgMTJbUENdLCB0MQor
ICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wR2V0QXJn
dW1lbnRCeVZhbFNsb3cKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgSW50
MzJUYWcsIHQyLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdykKKyAgICBhZGRpIDEsIHQyCisgICAg
bG9hZGkgQXJndW1lbnRDb3VudCArIFBheWxvYWRPZmZzZXRbY2ZyXSwgdDEKKyAgICBiaWFlcSB0
MiwgdDEsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93CisgICAgbmVnaSB0MgorICAgIGxvYWRpIDRb
UENdLCB0MworICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFRhZ09mZnNldFtjZnIsIHQy
LCA4XSwgdDAKKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zmc2V0W2Nm
ciwgdDIsIDhdLCB0MQorICAgIHN0b3JlaSB0MCwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKwor
Lm9wR2V0QXJndW1lbnRCeVZhbFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3Bh
dGhfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9n
ZXRfYnlfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDAK
KyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDEsIC5vcEdl
dEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICBicG5lcSB0MSwgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDIsIC5v
cEdldEJ5UG5hbWVTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDAKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdLCB0MworICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJd
LCB0MAorICAgIGJwbmVxIHQwLCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFN0cnVj
dHVyZVt0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZGkgMjRbUENdLCB0MAorICAgIGxv
YWRpIFtjZnIsIHQwLCA4XSwgdDAKKyAgICBzdWJpIDEsIHQwCisgICAgYmlhZXEgdDAsIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3I6Om1fbnVtQ2FjaGVhYmxlU2xvdHNbdDNdLCAub3BHZXRCeVBuYW1l
U2xvdworICAgIGxvYWRwIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVt0Ml0sIHQyCisgICAg
bG9hZGkgVGFnT2Zmc2V0W3QyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFt0
MiwgdDAsIDhdLCB0MworICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3JlaSB0MSwgVGFnT2Zm
c2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgZGlzcGF0Y2goNykKKworLm9wR2V0QnlQbmFtZVNsb3c6CisgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3BuYW1lKQorICAgIGRpc3BhdGNoKDcpCisKKworX2xs
aW50X29wX3B1dF9ieV92YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENd
LCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwg
Lm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQwLCBJbnQzMlRhZywgdDIsIC5vcFB1dEJ5VmFsU2xvdykKKyAgICBs
b2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0
YVt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpqc0FycmF5Q2xhc3NJbmZvW3QwXSwg
dDAKKyAgICBicG5lcSBbdDFdLCB0MCwgLm9wUHV0QnlWYWxTbG93CisgICAgYmlhZXEgdDIsIEpT
QXJyYXk6Om1fdmVjdG9yTGVuZ3RoW3QxXSwgLm9wUHV0QnlWYWxTbG93CisgICAgbG9hZHAgSlNB
cnJheTo6bV9zdG9yYWdlW3QxXSwgdDAKKyAgICBiaWVxIEFycmF5U3RvcmFnZTo6bV92ZWN0b3Ig
KyBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wUHV0QnlWYWxFbXB0eQor
Lm9wUHV0QnlWYWxTdG9yZVJlc3VsdDoKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQxLCB0MykKKyAgICB3cml0ZUJhcnJpZXIodDEsIHQz
KQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwg
dDIsIDhdCisgICAgc3RvcmVpIHQzLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsgUGF5bG9hZE9m
ZnNldFt0MCwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wUHV0QnlWYWxFbXB0eToKKyAg
ICBhZGRpIDEsIEFycmF5U3RvcmFnZTo6bV9udW1WYWx1ZXNJblZlY3Rvclt0MF0KKyAgICBiaWIg
dDIsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhbdDBdLCAub3BQdXRCeVZhbFN0b3JlUmVzdWx0Cisg
ICAgYWRkaSAxLCB0MiwgdDEKKyAgICBzdG9yZWkgdDEsIEFycmF5U3RvcmFnZTo6bV9sZW5ndGhb
dDBdCisgICAgam1wIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQKKworLm9wUHV0QnlWYWxTbG93Ogor
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV92YWwpCisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfZGVsX2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZGVsX2J5X3ZhbCkKKyAgICBkaXNwYXRj
aCg0KQorCisKK19sbGludF9vcF9wdXRfYnlfaW5kZXg6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1dF9ieV9pbmRleCkKKyAgICBkaXNw
YXRjaCg0KQorCisKK19sbGludF9vcF9wdXRfZ2V0dGVyX3NldHRlcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X2dldHRlcl9zZXR0
ZXIpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfbG9vcDoKKyAgICBub3AKK19sbGlu
dF9vcF9qbXA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGRpc3BhdGNoQnJhbmNoKDRbUENd
KQorCisKK19sbGludF9vcF9qbXBfc2NvcGVzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9qbXBfc2NvcGVzKQorICAgIGRpc3BhdGNoKDAp
CisKKworbWFjcm8ganVtcFRydWVPckZhbHNlKGNvbmRpdGlvbk9wLCBzbG93KQorICAgIGxvYWRp
IDRbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBCb29sZWFu
VGFnLCB0MCwgLnNsb3cpCisgICAgY29uZGl0aW9uT3AodDAsIC50YXJnZXQpCisgICAgZGlzcGF0
Y2goMykKKworLnRhcmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLnNsb3c6Cisg
ICAgY2FsbFNsb3dQYXRoKHNsb3cpCisgICAgZGlzcGF0Y2goMCkKK2VuZAorCitfbGxpbnRfb3Bf
bG9vcF9pZl90cnVlOgorICAgIG5vcAorX2xsaW50X29wX2p0cnVlOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBqdW1wVHJ1ZU9yRmFsc2UoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0
KSBidGlueiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9qdHJ1
ZSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9mYWxzZToKKyAgICBub3AKK19sbGludF9vcF9qZmFs
c2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAg
bWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aXogdmFsdWUsIHRhcmdldCBlbmQsCisgICAgICAgIF9s
bGludF9zbG93X3BhdGhfamZhbHNlKQorCisKK21hY3JvIGVxdWFsTnVsbChjZWxsSGFuZGxlciwg
aW1tZWRpYXRlSGFuZGxlcikKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwg
dDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLmltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6
bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGNlbGxIYW5kbGVyKFN0cnVjdHVyZTo6bV90eXBlSW5m
byArIFR5cGVJbmZvOjptX2ZsYWdzW3QyXSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisu
dGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuaW1tZWRpYXRlOgorICAgIG9y
aSAxLCB0MQorICAgIGltbWVkaWF0ZUhhbmRsZXIodDEsIC50YXJnZXQpCisgICAgZGlzcGF0Y2go
MykKK2VuZAorCitfbGxpbnRfb3BfamVxX251bGw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAg
IGVxdWFsTnVsbCgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0Ym56IHZhbHVlLCBN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUs
IHRhcmdldCkgYmllcSB2YWx1ZSwgTnVsbFRhZywgdGFyZ2V0IGVuZCkKKyAgICAKKworX2xsaW50
X29wX2puZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAg
ICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRieiB2YWx1ZSwgTWFzcXVlcmFkZXNBc1VuZGVm
aW5lZCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJpbmVxIHZh
bHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQorCisKK19sbGludF9vcF9qbmVxX3B0cjoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQx
CisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBDZWxsVGFnLCAub3BKbmVxUHRyQnJh
bmNoCisgICAgYnBlcSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MSwgLm9wSm5lcVB0ckZh
bGxUaHJvdWdoCisub3BKbmVxUHRyQnJhbmNoOgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkK
Ky5vcEpuZXFQdHJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGNvbXBh
cmUoaW50ZWdlckNvbXBhcmUsIGRvdWJsZUNvbXBhcmUsIHNsb3dfcGF0aCkKKyAgICBsb2FkaSA0
W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
KHQyLCB0MCwgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDMsIHQyLCB0MykK
KyAgICBiaW5lcSB0MCwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MiwgSW50MzJU
YWcsIC5vcDJOb3RJbnQKKyAgICBpbnRlZ2VyQ29tcGFyZSh0MSwgdDMsIC5qdW1wVGFyZ2V0KQor
ICAgIGRpc3BhdGNoKDQpCisKKy5vcDFOb3RJbnQ6CisgICAgYmlhIHQwLCBMb3dlc3RUYWcsIC5z
bG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcDFOb3RJbnRPcDJEb3VibGUKKyAgICBiaW5l
cSB0MiwgSW50MzJUYWcsIC5zbG93CisgICAgY2kyZCB0MywgZnQxCisgICAgam1wIC5vcDFOb3RJ
bnRSZWFkeQorLm9wMU5vdEludE9wMkRvdWJsZToKKyAgICBmaWkyZCB0MywgdDIsIGZ0MQorLm9w
MU5vdEludFJlYWR5OgorICAgIGZpaTJkIHQxLCB0MCwgZnQwCisgICAgZG91YmxlQ29tcGFyZShm
dDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMk5vdEludDoKKyAg
ICBjaTJkIHQxLCBmdDAKKyAgICBiaWEgdDIsIExvd2VzdFRhZywgLnNsb3cKKyAgICBmaWkyZCB0
MywgdDIsIGZ0MQorICAgIGRvdWJsZUNvbXBhcmUoZnQwLCBmdDEsIC5qdW1wVGFyZ2V0KQorICAg
IGRpc3BhdGNoKDQpCisKKy5qdW1wVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDEyW1BDXSkK
KworLnNsb3c6CisgICAgY2FsbFNsb3dQYXRoKHNsb3dfcGF0aCkKKyAgICBkaXNwYXRjaCgwKQor
ZW5kCisKK19sbGludF9vcF9sb29wX2lmX2xlc3M6CisgICAgbm9wCitfbGxpbnRfb3Bfamxlc3M6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0
LCByaWdodCwgdGFyZ2V0KSBiaWx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9qbGVzcykKKworCitfbGxpbnRfb3Bfam5sZXNzOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBt
YWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIF9sbGludF9zbG93X3BhdGhfam5sZXNzKQorCisKK19sbGludF9vcF9sb29w
X2lmX2dyZWF0ZXI6CisgICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXI6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0
KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQsIHRhcmdldCkgYmRndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50
X3Nsb3dfcGF0aF9qZ3JlYXRlcikKKworCitfbGxpbnRfb3Bfam5ncmVhdGVyOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRh
cmdldCkgYmlsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVm
dCwgcmlnaHQsIHRhcmdldCkgYmRsdGVxdW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAg
ICAgIF9sbGludF9zbG93X3BhdGhfam5ncmVhdGVyKQorCisKK19sbGludF9vcF9sb29wX2lmX2xl
c3NlcToKKyAgICBub3AKK19sbGludF9vcF9qbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdGVx
IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRh
cmdldCkgYmRsdGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfc2xv
d19wYXRoX2psZXNzZXEpCisKKworX2xsaW50X29wX2pubGVzc2VxOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkg
YmlndCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
LCB0YXJnZXQpIGJkZ3R1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50
X3Nsb3dfcGF0aF9qbmxlc3NlcSkKKworCitfbGxpbnRfb3BfbG9vcF9pZl9ncmVhdGVyZXE6Cisg
ICAgbm9wCitfbGxpbnRfb3BfamdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
Y29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3RlcSBsZWZ0
LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJkZ3RlcSBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0
aF9qZ3JlYXRlcmVxKQorCisKK19sbGludF9vcF9qbmdyZWF0ZXJlcToKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQp
IGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgdGFyZ2V0KSBiZGx0dW4gbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGlu
dF9zbG93X3BhdGhfam5ncmVhdGVyZXEpCisKKworX2xsaW50X29wX2xvb3BfaGludDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGRpc3Bh
dGNoKDEpCisKKworX2xsaW50X29wX3N3aXRjaF9pbW06CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisg
ICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBT
aW1wbGVKdW1wVGFibGUsIHQzICAgIyBGSVhNRTogd291bGQgYmUgbmljZSB0byBwZWVwaG9sZSB0
aGlzIQorICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6Om1faW1tZWRpYXRlU3dpdGNoSnVt
cFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgYWRkcCB0MywgdDIKKyAg
ICBiaW5lcSB0MSwgSW50MzJUYWcsIC5vcFN3aXRjaEltbU5vdEludAorICAgIHN1YmkgU2ltcGxl
SnVtcFRhYmxlOjptaW5bdDJdLCB0MAorICAgIGJpYWVxIHQwLCBTaW1wbGVKdW1wVGFibGU6OmJy
YW5jaE9mZnNldHMgKyBWZWN0b3JTaXplT2Zmc2V0W3QyXSwgLm9wU3dpdGNoSW1tRmFsbFRocm91
Z2gKKyAgICBsb2FkcCBTaW1wbGVKdW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZm
ZXJPZmZzZXRbdDJdLCB0MworICAgIGxvYWRpIFt0MywgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEs
IC5vcFN3aXRjaEltbUZhbGxUaHJvdWdoCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQx
KQorCisub3BTd2l0Y2hJbW1Ob3RJbnQ6CisgICAgYmliIHQxLCBMb3dlc3RUYWcsIC5vcFN3aXRj
aEltbVNsb3cgICMgR28gdG8gc2xvdyBwYXRoIGlmIGl0J3MgYSBkb3VibGUuCisub3BTd2l0Y2hJ
bW1GYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworLm9wU3dpdGNoSW1t
U2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9zd2l0Y2hfaW1tKQorICAg
IGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3N3aXRjaF9jaGFyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJd
LCB0MgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9yYXJlRGF0YVt0Ml0sIHQyCisgICAgbXVsaSBz
aXplb2YgU2ltcGxlSnVtcFRhYmxlLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6UmFyZURhdGE6
Om1fY2hhcmFjdGVyU3dpdGNoSnVtcFRhYmxlcyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQy
CisgICAgYWRkcCB0MywgdDIKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wU3dpdGNoQ2hhckZh
bGxUaHJvdWdoCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxCisgICAgYmJu
ZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIFN0cmluZ1R5
cGUsIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIEpTU3RyaW5nOjptX3ZhbHVl
W3QwXSwgdDAKKyAgICBiaW5lcSBTdHJpbmdJbXBsOjptX2xlbmd0aFt0MF0sIDEsIC5vcFN3aXRj
aENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFN0cmluZ0ltcGw6Om1fZGF0YThbdDBdLCB0MQor
ICAgIGJ0aW56IFN0cmluZ0ltcGw6Om1faGFzaEFuZEZsYWdzW3QwXSwgSGFzaEZsYWdzOEJpdEJ1
ZmZlciwgLm9wU3dpdGNoQ2hhcjhCaXQKKyAgICBsb2FkaCBbdDFdLCB0MAorICAgIGptcCAub3BT
d2l0Y2hDaGFyUmVhZHkKKy5vcFN3aXRjaENoYXI4Qml0OgorICAgIGxvYWRiIFt0MV0sIHQwCisu
b3BTd2l0Y2hDaGFyUmVhZHk6CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQw
CisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNp
emVPZmZzZXRbdDJdLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBTaW1wbGVK
dW1wVGFibGU6OmJyYW5jaE9mZnNldHMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbdDJdLCB0MgorICAg
IGxvYWRpIFt0MiwgdDAsIDRdLCB0MQorICAgIGJ0aXogdDEsIC5vcFN3aXRjaEltbUZhbGxUaHJv
dWdoCisgICAgZGlzcGF0Y2hCcmFuY2hXaXRoT2Zmc2V0KHQxKQorCisub3BTd2l0Y2hDaGFyRmFs
bFRocm91Z2g6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKworX2xsaW50X29wX3N3aXRj
aF9zdHJpbmc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX3N3aXRjaF9zdHJpbmcpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3Bf
bmV3X2Z1bmM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJ0aXogMTJbUENdLCAub3BOZXdG
dW5jVW5jaGVja2VkCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDEsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BOZXdGdW5jRG9uZQorLm9wTmV3RnVuY1VuY2hl
Y2tlZDoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZnVuYykKKy5vcE5l
d0Z1bmNEb25lOgorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX25ld19mdW5jX2V4cDoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
bmV3X2Z1bmNfZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gZG9DYWxsKHNsb3dfcGF0
aCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAg
TExJbnRDYWxsTGlua0luZm86OmNhbGxlZVt0MV0sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJp
YWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQzLCAub3BDYWxsU2xvdykKKyAgICBiaW5lcSB0Mywg
dDIsIC5vcENhbGxTbG93CisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGFkZHAgMjQsIFBDCisg
ICAgbHNoaWZ0aSAzLCB0MworICAgIGFkZHAgY2ZyLCB0MyAgIyB0MyBjb250YWlucyB0aGUgbmV3
IHZhbHVlIG9mIGNmcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fc2NvcGVDaGFpblt0Ml0sIHQw
CisgICAgc3RvcmVpIHQyLCBDYWxsZWUgKyBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlaSB0
MCwgU2NvcGVDaGFpbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgbG9hZGkgOCAtIDI0W1BDXSwg
dDIKKyAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgIHN0
b3JlcCBjZnIsIENhbGxlckZyYW1lW3QzXQorICAgIHN0b3JlaSB0MiwgQXJndW1lbnRDb3VudCAr
IFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIENlbGxUYWcsIENhbGxlZSArIFRhZ09mZnNl
dFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgU2NvcGVDaGFpbiArIFRhZ09mZnNldFt0M10KKyAg
ICBtb3ZlIHQzLCBjZnIKKyAgICBjYWxsIExMSW50Q2FsbExpbmtJbmZvOjptYWNoaW5lQ29kZVRh
cmdldFt0MV0KKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKy5vcENhbGxTbG93OgorICAgIHNs
b3dQYXRoRm9yQ2FsbCg2LCBzbG93X3BhdGgpCitlbmQKKworX2xsaW50X29wX2NhbGw6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGRvQ2FsbChfbGxpbnRfc2xvd19wYXRoX2NhbGwpCisKKwor
X2xsaW50X29wX2NvbnN0cnVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9s
bGludF9zbG93X3BhdGhfY29uc3RydWN0KQorCisKK19sbGludF9vcF9jYWxsX3ZhcmFyZ3M6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHNsb3dQYXRoRm9yQ2FsbCg2LCBfbGxpbnRfc2xvd19w
YXRoX2NhbGxfdmFyYXJncykKKworCitfbGxpbnRfb3BfY2FsbF9ldmFsOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICAKKyAgICAjIEV2YWwgaXMgZXhlY3V0ZWQgaW4gb25lIG9mIHR3byBtb2Rl
czoKKyAgICAjCisgICAgIyAxKSBXZSBmaW5kIHRoYXQgd2UncmUgcmVhbGx5IGludm9raW5nIGV2
YWwoKSBpbiB3aGljaCBjYXNlIHRoZQorICAgICMgICAgZXhlY3V0aW9uIGlzIHBlcmZvbWVkIGVu
dGlyZWx5IGluc2lkZSB0aGUgc2xvd19wYXRoLCBhbmQgaXQKKyAgICAjICAgIHJldHVybnMgdGhl
IFBDIG9mIGEgZnVuY3Rpb24gdGhhdCBqdXN0IHJldHVybnMgdGhlIHJldHVybiB2YWx1ZQorICAg
ICMgICAgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAgICAjCisgICAgIyAyKSBXZSBmaW5kIHRo
YXQgd2UncmUgaW52b2tpbmcgc29tZXRoaW5nIGNhbGxlZCBldmFsKCkgdGhhdCBpcyBub3QKKyAg
ICAjICAgIHRoZSByZWFsIGV2YWwuIFRoZW4gdGhlIHNsb3dfcGF0aCByZXR1cm5zIHRoZSBQQyBv
ZiB0aGUgdGhpbmcgdG8KKyAgICAjICAgIGNhbGwsIGFuZCB3ZSBjYWxsIGl0LgorICAgICMKKyAg
ICAjIFRoaXMgYWxsb3dzIHVzIHRvIGhhbmRsZSB0d28gY2FzZXMsIHdoaWNoIHdvdWxkIHJlcXVp
cmUgYSB0b3RhbCBvZgorICAgICMgdXAgdG8gZm91ciBwaWVjZXMgb2Ygc3RhdGUgdGhhdCBjYW5u
b3QgYmUgZWFzaWx5IHBhY2tlZCBpbnRvIHR3bworICAgICMgcmVnaXN0ZXJzIChDIGZ1bmN0aW9u
cyBjYW4gcmV0dXJuIHVwIHRvIHR3byByZWdpc3RlcnMsIGVhc2lseSk6CisgICAgIworICAgICMg
LSBUaGUgY2FsbCBmcmFtZSByZWdpc3Rlci4gVGhpcyBtYXkgb3IgbWF5IG5vdCBoYXZlIGJlZW4g
bW9kaWZpZWQKKyAgICAjICAgYnkgdGhlIHNsb3dfcGF0aCwgYnV0IHRoZSBjb252ZW50aW9uIGlz
IHRoYXQgaXQgcmV0dXJucyBpdC4gSXQncyBub3QKKyAgICAjICAgdG90YWxseSBjbGVhciBpZiB0
aGF0J3MgbmVjZXNzYXJ5LCBzaW5jZSB0aGUgY2ZyIGlzIGNhbGxlZSBzYXZlLgorICAgICMgICBC
dXQgdGhhdCdzIG91ciBzdHlsZSBpbiB0aGlzIGhlcmUgaW50ZXJwcmV0ZXIgc28gd2Ugc3RpY2sg
d2l0aCBpdC4KKyAgICAjCisgICAgIyAtIEEgYml0IHRvIHNheSBpZiB0aGUgc2xvd19wYXRoIHN1
Y2Nlc3NmdWxseSBleGVjdXRlZCB0aGUgZXZhbCBhbmQgaGFzCisgICAgIyAgIHRoZSByZXR1cm4g
dmFsdWUsIG9yIGRpZCBub3QgZXhlY3V0ZSB0aGUgZXZhbCBidXQgaGFzIGEgUEMgZm9yIHVzCisg
ICAgIyAgIHRvIGNhbGwuCisgICAgIworICAgICMgLSBFaXRoZXI6CisgICAgIyAgIC0gVGhlIEpT
IHJldHVybiB2YWx1ZSAodHdvIHJlZ2lzdGVycyksIG9yCisgICAgIworICAgICMgICAtIFRoZSBQ
QyB0byBjYWxsLgorICAgICMKKyAgICAjIEl0IHR1cm5zIG91dCB0byBiZSBlYXNpZXIgdG8ganVz
dCBhbHdheXMgaGF2ZSB0aGlzIHJldHVybiB0aGUgY2ZyCisgICAgIyBhbmQgYSBQQyB0byBjYWxs
LCBhbmQgdGhhdCBQQyBtYXkgYmUgYSBkdW1teSB0aHVuayB0aGF0IGp1c3QKKyAgICAjIHJldHVy
bnMgdGhlIEpTIHZhbHVlIHRoYXQgdGhlIGV2YWwgcmV0dXJuZWQuCisgICAgCisgICAgc2xvd1Bh
dGhGb3JDYWxsKDQsIF9sbGludF9zbG93X3BhdGhfY2FsbF9ldmFsKQorCisKK19sbGludF9nZW5l
cmljX3JldHVybl9wb2ludDoKKyAgICBkaXNwYXRjaEFmdGVyQ2FsbCgpCisKKworX2xsaW50X29w
X3RlYXJfb2ZmX2FjdGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRb
UENdLCB0MAorICAgIGxvYWRpIDhbUENdLCB0MQorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQw
LCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkCisgICAgYmll
cSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBY3RpdmF0
aW9uTm90Q3JlYXRlZAorLm9wVGVhck9mZkFjdGl2YXRpb25DcmVhdGVkOgorICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX3RlYXJfb2ZmX2FjdGl2YXRpb24pCisub3BUZWFyT2ZmQWN0
aXZhdGlvbk5vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfdGVhcl9v
ZmZfYXJndW1lbnRzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAK
KyAgICBzdWJpIDEsIHQwICAgIyBHZXQgdGhlIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcgor
ICAgIGJpZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2Zm
QXJndW1lbnRzTm90Q3JlYXRlZAorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Rl
YXJfb2ZmX2FyZ3VtZW50cykKKy5vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkOgorICAgIGRp
c3BhdGNoKDIpCisKKworbWFjcm8gZG9SZXR1cm4oKQorICAgIGxvYWRwIFJldHVyblBDW2Nmcl0s
IHQyCisgICAgbG9hZHAgQ2FsbGVyRnJhbWVbY2ZyXSwgY2ZyCisgICAgcmVzdG9yZVJldHVybkFk
ZHJlc3NCZWZvcmVSZXR1cm4odDIpCisgICAgcmV0CitlbmQKKworX2xsaW50X29wX3JldDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDAp
CisgICAgZG9SZXR1cm4oKQorCisKK19sbGludF9vcF9jYWxsX3B1dF9yZXN1bHQ6CisgICAgbG9h
ZGkgNFtQQ10sIHQyCisgICAgbG9hZGkgOFtQQ10sIHQzCisgICAgc3RvcmVpIHQxLCBUYWdPZmZz
ZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0K
KyAgICB2YWx1ZVByb2ZpbGUodDEsIHQwLCB0MykKKyAgICB0cmFjZUV4ZWN1dGlvbigpICMgTmVl
ZHMgdG8gYmUgaGVyZSBiZWNhdXNlIGl0IHdvdWxkIGNsb2JiZXIgdDEsIHQwCisgICAgZGlzcGF0
Y2goMykKKworCitfbGxpbnRfb3BfcmV0X29iamVjdF9vcl90aGlzOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENd
LCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0
MSwgQ2VsbFRhZywgLm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0CisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmpl
Y3QKKyAgICBkb1JldHVybigpCisKKy5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdDoKKyAgICBs
b2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisg
ICAgZG9SZXR1cm4oKQorCisKK19sbGludF9vcF9tZXRob2RfY2hlY2s6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgICMgV2UgaWdub3JlIG1ldGhvZCBjaGVja3MgYW5kIHVzZSBub3JtYWwgZ2V0
X2J5X2lkIG9wdGltaXphdGlvbnMuCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3Ry
Y2F0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9zdHJjYXQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfdG9fcHJpbWl0aXZl
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDIKKyAgICBsb2FkaSA0
W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgYmlu
ZXEgdDEsIENlbGxUYWcsIC5vcFRvUHJpbWl0aXZlSXNJbW0KKyAgICBsb2FkcCBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBl
SW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm9wVG9QcmltaXRpdmVTbG93Q2FzZQorLm9w
VG9QcmltaXRpdmVJc0ltbToKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQor
ICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMp
CisKKy5vcFRvUHJpbWl0aXZlU2xvd0Nhc2U6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfdG9fcHJpbWl0aXZlKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9w
bmFtZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX2dldF9wbmFtZXMpCisgICAgZGlzcGF0Y2goMCkgIyBUaGUgc2xvd19wYXRoIGVpdGhl
ciBhZHZhbmNlcyB0aGUgUEMgb3IganVtcHMgdXMgdG8gc29tZXdoZXJlIGVsc2UuCisKKworX2xs
aW50X29wX25leHRfcG5hbWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BD
XSwgdDEKKyAgICBsb2FkaSAxNltQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQxLCA4XSwgdDAKKyAgICBiaWVxIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCAub3BO
ZXh0UG5hbWVFbmQKKyAgICBsb2FkaSAyMFtQQ10sIHQyCisgICAgbG9hZGkgUGF5bG9hZE9mZnNl
dFtjZnIsIHQyLCA4XSwgdDIKKyAgICBsb2FkcCBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2pz
U3RyaW5nc1t0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgOF0sIHQzCisgICAgYWRkaSAxLCB0
MAorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDRb
UENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBz
dG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSA4W1BDXSwgdDMK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdLCB0MworICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MQorICAgIGJwbmVxIHQxLCBKU1Byb3BlcnR5TmFtZUl0ZXJh
dG9yOjptX2NhY2hlZFN0cnVjdHVyZVt0Ml0sIC5vcE5leHRQbmFtZVNsb3cKKyAgICBsb2FkcCBK
U1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjptX2NhY2hlZFByb3RvdHlwZUNoYWluW3QyXSwgdDAKKyAg
ICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3JbdDBdLCB0MAorICAgIGJ0cHogW3QwXSwg
Lm9wTmV4dFBuYW1lVGFyZ2V0Cisub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3A6CisgICAg
YmllcSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgVGFnT2Zmc2V0W3QxXSwgTnVsbFRhZywgLm9w
TmV4dFBuYW1lU2xvdworICAgIGxvYWRwIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2Fk
T2Zmc2V0W3QxXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDEKKyAg
ICBicG5lcSB0MSwgW3QwXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGFkZHAgNCwgdDAKKyAgICBi
dHBueiBbdDBdLCAub3BOZXh0UG5hbWVDaGVja1Byb3RvdHlwZUxvb3AKKy5vcE5leHRQbmFtZVRh
cmdldDoKKyAgICBkaXNwYXRjaEJyYW5jaCgyNFtQQ10pCisKKy5vcE5leHRQbmFtZUVuZDoKKyAg
ICBkaXNwYXRjaCg3KQorCisub3BOZXh0UG5hbWVTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX25leHRfcG5hbWUpICMgVGhpcyBlaXRoZXIga2VlcHMgdGhlIFBDIHdoZXJl
IGl0IHdhcyAoY2F1c2luZyB1cyB0byBsb29wKSBvciBzZXRzIGl0IHRvIHRhcmdldC4KKyAgICBk
aXNwYXRjaCgwKQorCisKK19sbGludF9vcF9wdXNoX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXNoX3Njb3BlKQorICAgIGRp
c3BhdGNoKDIpCisKKworX2xsaW50X29wX3BvcF9zY29wZToKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcG9wX3Njb3BlKQorICAgIGRpc3Bh
dGNoKDEpCisKKworX2xsaW50X29wX3B1c2hfbmV3X3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXNoX25ld19zY29wZSkKKyAg
ICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9jYXRjaDoKKyAgICAjIFRoaXMgaXMgd2hlcmUg
d2UgZW5kIHVwIGZyb20gdGhlIEpJVCdzIHRocm93IHRyYW1wb2xpbmUgKGJlY2F1c2UgdGhlCisg
ICAgIyBtYWNoaW5lIGNvZGUgcmV0dXJuIGFkZHJlc3Mgd2lsbCBiZSBzZXQgdG8gX2xsaW50X29w
X2NhdGNoKSwgYW5kIGZyb20KKyAgICAjIHRoZSBpbnRlcnByZXRlcidzIHRocm93IHRyYW1wb2xp
bmUgKHNlZSBfbGxpbnRfdGhyb3dfdHJhbXBvbGluZSkuCisgICAgIyBUaGUgSklUIHRocm93aW5n
IHByb3RvY29sIGNhbGxzIGZvciB0aGUgY2ZyIHRvIGJlIGluIHQwLiBUaGUgdGhyb3dpbmcKKyAg
ICAjIGNvZGUgbXVzdCBoYXZlIGtub3duIHRoYXQgd2Ugd2VyZSB0aHJvd2luZyB0byB0aGUgaW50
ZXJwcmV0ZXIsIGFuZCBoYXZlCisgICAgIyBzZXQgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRlcnBy
ZXRlclBDRm9yVGhyb3cuCisgICAgbW92ZSB0MCwgY2ZyCisgICAgbG9hZHAgSklUU3RhY2tGcmFt
ZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjp0YXJnZXRJbnRl
cnByZXRlclBDRm9yVGhyb3dbdDNdLCBQQworICAgIGxvYWRpIEpTR2xvYmFsRGF0YTo6ZXhjZXB0
aW9uICsgUGF5bG9hZE9mZnNldFt0M10sIHQwCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNl
cHRpb24gKyBUYWdPZmZzZXRbdDNdLCB0MQorICAgIHN0b3JlaSAwLCBKU0dsb2JhbERhdGE6OmV4
Y2VwdGlvbiArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIEVtcHR5VmFsdWVUYWcsIEpT
R2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgVGFnT2Zmc2V0W3QzXSAgICAgICAKKyAgICBsb2FkaSA0
W1BDXSwgdDIKKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBz
dG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHRyYWNlRXhlY3V0aW9uKCkgICMg
VGhpcyBuZWVkcyB0byBiZSBoZXJlIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0byBjbG9iYmVyIHQw
LCB0MSwgdDIsIHQzIGFib3ZlLgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Rocm93
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF90aHJvdykKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9vcF90aHJvd19yZWZlcmVuY2Vf
ZXJyb3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGlu
dF9vcF9qc3I6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGFkZGkgMyAqIDQsIFBDLCB0MQorICAgIHN0b3JlaSB0MSwgW2NmciwgdDAsIDhdCisgICAgZGlz
cGF0Y2hCcmFuY2goOFtQQ10pCisKKworX2xsaW50X29wX3NyZXQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFtjZnIsIHQwLCA4XSwgUEMKKyAg
ICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9kZWJ1ZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZGVidWcpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfcHJvZmlsZV93aWxsX2NhbGw6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZVtzcF0s
IHQwCisgICAgYnRweiBbdDBdLCAub3BQcm9maWxlV2lsbENhbGxEb25lCisgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfcHJvZmlsZV93aWxsX2NhbGwpCisub3BQcm9maWxlV2lsbENh
bGxEb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Byb2ZpbGVfZGlkX2NhbGw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6OmVuYWJsZWRQ
cm9maWxlclJlZmVyZW5jZVtzcF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BQcm9maWxlV2lsbENh
bGxEb25lCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHJvZmlsZV9kaWRfY2Fs
bCkKKy5vcFByb2ZpbGVEaWRDYWxsRG9uZToKKyAgICBkaXNwYXRjaCgyKQorCisKK19sbGludF9v
cF9lbmQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGls
b2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAs
IDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgZG9S
ZXR1cm4oKQorCisKK19sbGludF90aHJvd19mcm9tX3Nsb3dfcGF0aF90cmFtcG9saW5lOgorICAg
ICMgV2hlbiB0aHJvd2luZyBmcm9tIHRoZSBpbnRlcnByZXRlciAoaS5lLiB0aHJvd2luZyBmcm9t
IExMSW50U2xvd1BhdGhzKSwgc28KKyAgICAjIHRoZSB0aHJvdyB0YXJnZXQgaXMgbm90IG5lY2Vz
c2FyaWx5IGludGVycHJldGVkIGNvZGUsIHdlIGNvbWUgdG8gaGVyZS4KKyAgICAjIFRoaXMgZXNz
ZW50aWFsbHkgZW11bGF0ZXMgdGhlIEpJVCdzIHRocm93aW5nIHByb3RvY29sLgorICAgIGxvYWRw
IEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0
YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdl
dE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKK19sbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFt
cG9saW5lOgorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2FsbCh0MikKKyAgICBsb2Fk
cCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDEKKyAgICBsb2FkcCBKU0dsb2JhbERh
dGE6OmNhbGxGcmFtZUZvclRocm93W3QxXSwgdDAKKyAgICBqbXAgSlNHbG9iYWxEYXRhOjp0YXJn
ZXRNYWNoaW5lUENGb3JUaHJvd1t0MV0KKworCisjIExhc3RseSwgbWFrZSBzdXJlIHRoYXQgd2Ug
Y2FuIGxpbmsgZXZlbiB0aG91Z2ggd2UgZG9uJ3Qgc3VwcG9ydCBhbGwgb3Bjb2Rlcy4KKyMgVGhl
c2Ugb3Bjb2RlcyBzaG91bGQgbmV2ZXIgYXJpc2Ugd2hlbiB1c2luZyBMTEludCBvciBlaXRoZXIg
SklULiBXZSBhc3NlcnQKKyMgYXMgbXVjaC4KKworbWFjcm8gbm90U3VwcG9ydGVkKCkKKyAgICBp
ZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBjcmFzaCgpCisgICAgZWxzZQorICAgICAgICAjIFdl
IHNob3VsZCB1c2Ugd2hhdGV2ZXIgdGhlIHNtYWxsZXN0IHBvc3NpYmxlIGluc3RydWN0aW9uIGlz
LCBqdXN0IHRvCisgICAgICAgICMgZW5zdXJlIHRoYXQgdGhlcmUgaXMgYSBnYXAgYmV0d2VlbiBp
bnN0cnVjdGlvbiBsYWJlbHMuIElmIG11bHRpcGxlCisgICAgICAgICMgc21hbGxlc3QgaW5zdHJ1
Y3Rpb25zIGV4aXN0LCB3ZSBzaG91bGQgcGljayB0aGUgb25lIHRoYXQgaXMgbW9zdAorICAgICAg
ICAjIGxpa2VseSByZXN1bHQgaW4gZXhlY3V0aW9uIGJlaW5nIGhhbHRlZC4gQ3VycmVudGx5IHRo
YXQgaXMgdGhlIGJyZWFrCisgICAgICAgICMgaW5zdHJ1Y3Rpb24gb24gYWxsIGFyY2hpdGVjdHVy
ZXMgd2UncmUgaW50ZXJlc3RlZCBpbi4gKEJyZWFrIGlzIGludDMKKyAgICAgICAgIyBvbiBJbnRl
bCwgd2hpY2ggaXMgMSBieXRlLCBhbmQgYmtwdCBvbiBBUk12Nywgd2hpY2ggaXMgMiBieXRlcy4p
CisgICAgICAgIGJyZWFrCisgICAgZW5kCitlbmQKKworX2xsaW50X29wX2dldF9hcnJheV9sZW5n
dGg6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9jaGFpbjoKKyAg
ICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9jaGFpbjoKKyAg
ICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9wcm90bzoKKyAg
ICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2N1c3RvbV9zZWxmOgorICAg
IG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RT
dXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9jaGFpbjoKKyAgICBub3RT
dXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9wcm90bzoKKyAgICBub3RT
dXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2dldHRlcl9zZWxmOgorICAgIG5vdFN1
cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfcHJvdG86CisgICAgbm90U3VwcG9ydGVk
KCkKKworX2xsaW50X29wX2dldF9ieV9pZF9zZWxmOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19s
bGludF9vcF9nZXRfc3RyaW5nX2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRf
b3BfcHV0X2J5X2lkX2dlbmVyaWM6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1
dF9ieV9pZF9yZXBsYWNlOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlf
aWRfdHJhbnNpdGlvbjoKKyAgICBub3RTdXBwb3J0ZWQoKQorCisKKyMgSW5kaWNhdGUgdGhlIGVu
ZCBvZiBMTEludC4KK19sbGludF9lbmQ6CisgICAgY3Jhc2goKQorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0
ZXIuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRl
ICJMTEludE9mZmxpbmVBc21Db25maWcuaCIKKyNpbmNsdWRlIDx3dGYvSW5saW5lQVNNLmg+CisK
Ky8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRlZCBieSBvZmZsaW5lYXNtLCB3aGljaCBjb250YWlu
cyBhbGwgb2YgdGhlIGFzc2VtYmx5IGNvZGUKKy8vIGZvciB0aGUgaW50ZXJwcmV0ZXIsIGFzIGNv
bXBpbGVkIGZyb20gTG93TGV2ZWxJbnRlcnByZXRlci5hc20uCisjaW5jbHVkZSAiTExJbnRBc3Nl
bWJseS5oIgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorI2RlZmluZSBM
b3dMZXZlbEludGVycHJldGVyX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYg
RU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKKyNkZWZpbmUgTExJTlRfSU5T
VFJVQ1RJT05fREVDTChvcGNvZGUsIGxlbmd0aCkgZXh0ZXJuICJDIiB2b2lkIGxsaW50XyMjb3Bj
b2RlKCk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wpOwor
I3VuZGVmIExMSU5UX0lOU1RSVUNUSU9OX0RFQ0wKKworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Jl
Z2luKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZW5kKCk7CitleHRlcm4gIkMiIHZvaWQgbGxp
bnRfcHJvZ3JhbV9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2V2YWxfcHJvbG9n
dWUoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9wcm9sb2d1ZSgp
OworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUo
KTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjaygp
OworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hl
Y2soKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9nZW5lcmljX3JldHVybl9wb2ludCgpOworZXh0
ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUoKTsKK2V4
dGVybiAiQyIgdm9pZCBsbGludF90aHJvd19kdXJpbmdfY2FsbF90cmFtcG9saW5lKCk7CisKKyNl
bmRpZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMb3dMZXZlbEludGVycHJldGVyX2gK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FybXY3LnJiCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTAzMiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFy
ZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisj
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib3B0IgorCitjbGFzcyBOb2RlCisgICAg
ZGVmIGFybVY3U2luZ2xlCisgICAgICAgIGRvdWJsZU9wZXJhbmQgPSBhcm1WN09wZXJhbmQKKyAg
ICAgICAgcmFpc2UgIkJvZ3VzIHJlZ2lzdGVyIG5hbWUgI3tkb3VibGVPcGVyYW5kfSIgdW5sZXNz
IGRvdWJsZU9wZXJhbmQgPX4gL15kLworICAgICAgICAicyIgKyAoJH4ucG9zdF9tYXRjaC50b19p
ICogMikudG9fcworICAgIGVuZAorZW5kCisKK2NsYXNzIFNwZWNpYWxSZWdpc3RlciA8IE5vQ2hp
bGRyZW4KKyAgICBkZWYgaW5pdGlhbGl6ZShuYW1lKQorICAgICAgICBAbmFtZSA9IG5hbWUKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgYXJtVjdPcGVyYW5kCisgICAgICAgIEBuYW1lCisgICAgZW5k
CisgICAgCisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisg
ICAgZGVmIGxhYmVsPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBpbW1l
ZGlhdGU/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIHJlZ2lzdGVyPwor
ICAgICAgICB0cnVlCisgICAgZW5kCitlbmQKKworQVJNdjdfRVhUUkFfR1BSUyA9IFtTcGVjaWFs
UmVnaXN0ZXIubmV3KCJyOSIpLCBTcGVjaWFsUmVnaXN0ZXIubmV3KCJyOCIpLCBTcGVjaWFsUmVn
aXN0ZXIubmV3KCJyMyIpXQorQVJNdjdfRVhUUkFfRlBSUyA9IFtTcGVjaWFsUmVnaXN0ZXIubmV3
KCJkNyIpXQorQVJNdjdfU0NSQVRDSF9GUFIgPSBTcGVjaWFsUmVnaXN0ZXIubmV3KCJkOCIpCisK
K2RlZiBhcm1WN01vdmVJbW1lZGlhdGUodmFsdWUsIHJlZ2lzdGVyKQorICAgICMgQ3VycmVudGx5
IHdlIG9ubHkgaGFuZGxlIHRoZSBzaW1wbGUgY2FzZXMsIGFuZCBmYWxsIGJhY2sgdG8gbW92L21v
dnQgZm9yIHRoZSBjb21wbGV4IG9uZXMuCisgICAgaWYgdmFsdWUgPj0gMCAmJiB2YWx1ZSA8IDI1
NgorICAgICAgICAkYXNtLnB1dHMgIm1vdncgI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9LCBcIyN7
dmFsdWV9IgorICAgIGVsc2lmICh+dmFsdWUpID49IDAgJiYgKH52YWx1ZSkgPCAyNTYKKyAgICAg
ICAgJGFzbS5wdXRzICJtdm4gI3tyZWdpc3Rlci5hcm1WN09wZXJhbmR9LCBcIyN7fnZhbHVlfSIK
KyAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAibW92dyAje3JlZ2lzdGVyLmFybVY3T3BlcmFu
ZH0sIFwjI3t2YWx1ZSAmIDB4ZmZmZn0iCisgICAgICAgIGlmICh2YWx1ZSAmIDB4ZmZmZjAwMDAp
ICE9IDAKKyAgICAgICAgICAgICRhc20ucHV0cyAibW92dCAje3JlZ2lzdGVyLmFybVY3T3BlcmFu
ZH0sIFwjI3t2YWx1ZSA+PiAxNn0iCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNz
IFJlZ2lzdGVySUQKKyAgICBkZWYgYXJtVjdPcGVyYW5kCisgICAgICAgIGNhc2UgbmFtZQorICAg
ICAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICAgICAgICJyMCIKKyAgICAgICAgd2hl
biAidDEiLCAiYTEiLCAicjEiCisgICAgICAgICAgICAicjEiCisgICAgICAgIHdoZW4gInQyIiwg
ImEyIgorICAgICAgICAgICAgInIyIgorICAgICAgICB3aGVuICJhMyIKKyAgICAgICAgICAgICJy
MyIKKyAgICAgICAgd2hlbiAidDMiCisgICAgICAgICAgICAicjQiCisgICAgICAgIHdoZW4gInQ0
IgorICAgICAgICAgICAgInI3IgorICAgICAgICB3aGVuICJjZnIiCisgICAgICAgICAgICAicjUi
CisgICAgICAgIHdoZW4gImxyIgorICAgICAgICAgICAgImxyIgorICAgICAgICB3aGVuICJzcCIK
KyAgICAgICAgICAgICJzcCIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkJhZCBy
ZWdpc3RlciAje25hbWV9IGZvciBBUk12NyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgICAg
ICBlbmQKKyAgICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQKKyAgICBkZWYgYXJtVjdP
cGVyYW5kCisgICAgICAgIGNhc2UgbmFtZQorICAgICAgICB3aGVuICJmdDAiLCAiZnIiCisgICAg
ICAgICAgICAiZDAiCisgICAgICAgIHdoZW4gImZ0MSIKKyAgICAgICAgICAgICJkMSIKKyAgICAg
ICAgd2hlbiAiZnQyIgorICAgICAgICAgICAgImQyIgorICAgICAgICB3aGVuICJmdDMiCisgICAg
ICAgICAgICAiZDMiCisgICAgICAgIHdoZW4gImZ0NCIKKyAgICAgICAgICAgICJkNCIKKyAgICAg
ICAgd2hlbiAiZnQ1IgorICAgICAgICAgICAgImQ1IgorICAgICAgICBlbHNlCisgICAgICAgICAg
ICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIEFSTXY3IGF0ICN7Y29kZU9yaWdpblN0
cmluZ30iCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0ZQorICAg
IGRlZiBhcm1WN09wZXJhbmQKKyAgICAgICAgcmFpc2UgIkludmFsaWQgaW1tZWRpYXRlICN7dmFs
dWV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIGlmIHZhbHVlIDwgMCBvciB2YWx1ZSA+IDI1NQor
ICAgICAgICAiXCMje3ZhbHVlfSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBBZGRyZXNzCisgICAg
ZGVmIGFybVY3T3BlcmFuZAorICAgICAgICByYWlzZSAiQmFkIG9mZnNldCBhdCAje2NvZGVPcmln
aW5TdHJpbmd9IiBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiBvciBvZmZzZXQudmFsdWUgPiAweGZm
ZgorICAgICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCBcIyN7b2Zmc2V0LnZhbHVlfV0iCisg
ICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgICAgZGVmIGFybVY3T3BlcmFuZAorICAg
ICAgICByYWlzZSAiQmFkIG9mZnNldCBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiBpZiBvZmZzZXQu
dmFsdWUgIT0gMAorICAgICAgICAiWyN7YmFzZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3
T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGVTaGlmdH1dIgorICAgIGVuZAorZW5kCisKK2NsYXNzIEFi
c29sdXRlQWRkcmVzcworICAgIGRlZiBhcm1WN09wZXJhbmQKKyAgICAgICAgcmFpc2UgIlVuY29u
dmVydGVkIGFic29sdXRlIGFkZHJlc3MgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICBlbmQK
K2VuZAorCisjCisjIExvd2VyaW5nIG9mIGJyYW5jaCBvcHMuIEZvciBleGFtcGxlOgorIworIyBi
YWRkaXogZm9vLCBiYXIsIGJhegorIworIyB3aWxsIGJlY29tZToKKyMKKyMgYWRkaSBmb28sIGJh
cgorIyBieiBiYXoKKyMKKworZGVmIGFybVY3TG93ZXJCcmFuY2hPcHMobGlzdCkKKyAgICBuZXdM
aXN0ID0gW10KKyAgICBsaXN0LmVhY2ggeworICAgICAgICB8IG5vZGUgfAorICAgICAgICBpZiBu
b2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAg
ICAgICAgICB3aGVuIC9eYihhZGRpfHN1Yml8b3JpfGFkZHApLworICAgICAgICAgICAgICAgIG9w
ID0gJDEKKyAgICAgICAgICAgICAgICBicmFuY2ggPSAiYiIgKyAkfi5wb3N0X21hdGNoCisgICAg
ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FzZSBvcAorICAgICAgICAgICAgICAgIHdo
ZW4gImFkZGkiLCAiYWRkcCIKKyAgICAgICAgICAgICAgICAgICAgb3AgPSAiYWRkaXMiCisgICAg
ICAgICAgICAgICAgd2hlbiAic3ViaSIKKyAgICAgICAgICAgICAgICAgICAgb3AgPSAic3ViaXMi
CisgICAgICAgICAgICAgICAgd2hlbiAib3JpIgorICAgICAgICAgICAgICAgICAgICBvcCA9ICJv
cmlzIgorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgb3AsIG5vZGUu
b3BlcmFuZHNbMC4uLTJdKQorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KG5vZGUuY29kZU9yaWdpbiwgYnJhbmNoLCBbbm9kZS5vcGVyYW5kc1stMV1dKQorICAgICAg
ICAgICAgd2hlbiAiYm11bGlvIgorICAgICAgICAgICAgICAgIHRtcDEgPSBUbXAubmV3KG5vZGUu
Y29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgICAgICB0bXAyID0gVG1wLm5ldyhub2RlLmNv
ZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcobm9kZS5jb2RlT3JpZ2luLCAic211bGxpIiwgW25vZGUub3BlcmFuZHNbMF0sIG5vZGUub3Bl
cmFuZHNbMV0sIG5vZGUub3BlcmFuZHNbMV0sIHRtcDFdKQorICAgICAgICAgICAgICAgIG5ld0xp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgInJzaGlmdGkiLCBbbm9kZS5v
cGVyYW5kc1stMl0sIEltbWVkaWF0ZS5uZXcobm9kZS5jb2RlT3JpZ2luLCAzMSksIHRtcDJdKQor
ICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdp
biwgImJpbmVxIiwgW3RtcDEsIHRtcDIsIG5vZGUub3BlcmFuZHNbLTFdXSkKKyAgICAgICAgICAg
IHdoZW4gL15ibXVsaS8KKyAgICAgICAgICAgICAgICBjb25kaXRpb24gPSAkfi5wb3N0X21hdGNo
CisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3Jp
Z2luLCAibXVsaSIsIG5vZGUub3BlcmFuZHNbMC4uLTJdKQorICAgICAgICAgICAgICAgIG5ld0xp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgImJ0aSIgKyBjb25kaXRpb24s
IFtub2RlLm9wZXJhbmRzWy0yXSwgbm9kZS5vcGVyYW5kc1stMV1dKQorICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAgICAgZW5kCisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICBlbmQKKyAgICB9
CisgICAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2Ygc2hpZnQgb3BzLiBGb3IgZXhh
bXBsZToKKyMKKyMgbHNoaWZ0aSBmb28sIGJhcgorIworIyB3aWxsIGJlY29tZToKKyMKKyMgYW5k
aSBmb28sIDMxLCB0bXAKKyMgbHNoaWZ0aSB0bXAsIGJhcgorIworCitkZWYgYXJtVjdTYW5pdGl6
ZVNoaWZ0KG9wZXJhbmQsIGxpc3QpCisgICAgcmV0dXJuIG9wZXJhbmQgaWYgb3BlcmFuZC5pbW1l
ZGlhdGU/CisgICAgCisgICAgdG1wID0gVG1wLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sIDpncHIp
CisgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAiYW5kaSIs
IFtvcGVyYW5kLCBJbW1lZGlhdGUubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgMzEpLCB0bXBdKQor
ICAgIHRtcAorZW5kCisKK2RlZiBhcm1WN0xvd2VyU2hpZnRPcHMobGlzdCkKKyAgICBuZXdMaXN0
ID0gW10KKyAgICBsaXN0LmVhY2ggeworICAgICAgICB8IG5vZGUgfAorICAgICAgICBpZiBub2Rl
LmlzX2E/IEluc3RydWN0aW9uCisgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICAg
ICAgICB3aGVuICJsc2hpZnRpIiwgInJzaGlmdGkiLCAidXJzaGlmdGkiCisgICAgICAgICAgICAg
ICAgaWYgbm9kZS5vcGVyYW5kcy5zaXplID09IDIKKyAgICAgICAgICAgICAgICAgICAgbmV3TGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgW2FybVY3
U2FuaXRpemVTaGlmdChub2RlLm9wZXJhbmRzWzBdLCBuZXdMaXN0KSwgbm9kZS5vcGVyYW5kc1sx
XV0pCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbbm9kZS5vcGVy
YW5kc1swXSwgYXJtVjdTYW5pdGl6ZVNoaWZ0KG5vZGUub3BlcmFuZHNbMV0sIG5ld0xpc3QpLCBu
b2RlLm9wZXJhbmRzWzJdXSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgIldyb25nIG51bWJl
ciBvZiBvcGVyYW5kcyBmb3Igc2hpZnQgYXQgI3tub2RlLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxl
c3Mgbm9kZS5vcGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgZW5k
CisgICAgfQorICAgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1hbGZvcm1lZCBh
ZGRyZXNzZXMuIEZvciBleGFtcGxlOgorIworIyBsb2FkcCAxMDAwMFtmb29dLCBiYXIKKyMKKyMg
d2lsbCBiZWNvbWU6CisjCisjIG1vdmUgMTAwMDAsIHRtcAorIyBhZGRwIGZvbywgdG1wCisjIGxv
YWRwIDBbdG1wXSwgYmFyCisjCisKK2NsYXNzIE5vZGUKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZv
cm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICAgICAgbWFwQ2hpbGRyZW4geworICAgICAg
ICAgICAgfCBub2RlIHwKKyAgICAgICAgICAgIG5vZGUuYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJl
c3Nlc1JlY3Vyc2UobGlzdCkKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJl
c3MKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAg
ICAgICAgaWYgb2Zmc2V0LnZhbHVlIDwgLTB4ZmYgb3Igb2Zmc2V0LnZhbHVlID4gMHhmZmYKKyAg
ICAgICAgICAgIHRtcCA9IFRtcC5uZXcoY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIGxp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW29mZnNldCwgdG1wXSkK
KyAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJhZGRwIiwg
W2Jhc2UsIHRtcF0pCisgICAgICAgICAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCB0bXAsIElt
bWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNl
bGYKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgICAgZGVm
IGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNSZWN1cnNlKGxpc3QpCisgICAgICAgIGlmIG9m
ZnNldC52YWx1ZSAhPSAwCisgICAgICAgICAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpn
cHIpCisgICAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibW92
ZSIsIFtvZmZzZXQsIHRtcF0pCisgICAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhj
b2RlT3JpZ2luLCAiYWRkcCIsIFtiYXNlLCB0bXBdKQorICAgICAgICAgICAgQmFzZUluZGV4Lm5l
dyhjb2RlT3JpZ2luLCB0bXAsIGluZGV4LCBzY2FsZSwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2lu
LCAwKSkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VsZgorICAgICAgICBlbmQKKyAgICBl
bmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZv
cm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3Jp
Z2luLCA6Z3ByKQorICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAi
bW92ZSIsIFthZGRyZXNzLCB0bXBdKQorICAgICAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCB0
bXAsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCisgICAgZW5kCitlbmQKKworZGVmIGFy
bVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXMobGlzdCkKKyAgICBuZXdMaXN0ID0gW10KKyAgICBs
aXN0LmVhY2ggeworICAgICAgICB8IG5vZGUgfAorICAgICAgICBuZXdMaXN0IDw8IG5vZGUuYXJt
VjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobmV3TGlzdCkKKyAgICB9CisgICAgbmV3
TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWFsZm9ybWVkIGFkZHJlc3NlcyBpbiBkb3Vi
bGUgbG9hZHMgYW5kIHN0b3Jlcy4gRm9yIGV4YW1wbGU6CisjCisjIGxvYWRkIFtmb28sIGJhciwg
OF0sIGJhegorIworIyBiZWNvbWVzOgorIworIyBsZWFwIFtmb28sIGJhciwgOF0sIHRtcAorIyBs
b2FkZCBbdG1wXSwgYmF6CisjCisKK2NsYXNzIE5vZGUKKyAgICBkZWYgYXJtVjdEb3VibGVBZGRy
ZXNzKGxpc3QpCisgICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgK
KyAgICBkZWYgYXJtVjdEb3VibGVBZGRyZXNzKGxpc3QpCisgICAgICAgIHRtcCA9IFRtcC5uZXco
Y29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9y
aWdpbiwgImxlYXAiLCBbc2VsZiwgdG1wXSkKKyAgICAgICAgQWRkcmVzcy5uZXcoY29kZU9yaWdp
biwgdG1wLCBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIDApKQorICAgIGVuZAorZW5kCisKK2Rl
ZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzRG91YmxlKGxpc3QpCisgICAgbmV3TGlzdCA9
IFtdCisgICAgbGlzdC5lYWNoIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5p
c19hPyBJbnN0cnVjdGlvbgorICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgICAg
ICAgd2hlbiAibG9hZGQiCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcobm9kZS5jb2RlT3JpZ2luLCAibG9hZGQiLCBbbm9kZS5vcGVyYW5kc1swXS5hcm1WN0RvdWJs
ZUFkZHJlc3MobmV3TGlzdCksIG5vZGUub3BlcmFuZHNbMV1dKQorICAgICAgICAgICAgd2hlbiAi
c3RvcmVkIgorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUu
Y29kZU9yaWdpbiwgInN0b3JlZCIsIFtub2RlLm9wZXJhbmRzWzBdLCBub2RlLm9wZXJhbmRzWzFd
LmFybVY3RG91YmxlQWRkcmVzcyhuZXdMaXN0KV0pCisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgIGVuZAorICAgIH0KKyAgICBuZXdM
aXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBtaXNwbGFjZWQgaW1tZWRpYXRlcy4gRm9yIGV4
YW1wbGU6CisjCisjIHN0b3JlaSAwLCBbZm9vXQorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbW92
ZSAwLCB0bXAKKyMgc3RvcmVpIHRtcCwgW2Zvb10KKyMKKworZGVmIGFybVY3TG93ZXJNaXNwbGFj
ZWRJbW1lZGlhdGVzKGxpc3QpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlzdC5lYWNoIHsKKyAg
ICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAg
ICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgICAgICAgd2hlbiAic3RvcmVpIiwgInN0b3Jl
cCIKKyAgICAgICAgICAgICAgICBvcGVyYW5kcyA9IG5vZGUub3BlcmFuZHMKKyAgICAgICAgICAg
ICAgICBuZXdPcGVyYW5kcyA9IFtdCisgICAgICAgICAgICAgICAgb3BlcmFuZHMuZWFjaCB7Cisg
ICAgICAgICAgICAgICAgICAgIHwgb3BlcmFuZCB8CisgICAgICAgICAgICAgICAgICAgIGlmIG9w
ZXJhbmQuaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBUbXAu
bmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgICAgICAgICAgICAgIG5l
d0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgIm1vdmUiLCBbb3Bl
cmFuZCwgdG1wXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld09wZXJhbmRzIDw8IHRtcAor
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdPcGVy
YW5kcyA8PCBvcGVyYW5kCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVP
cmlnaW4sIG5vZGUub3Bjb2RlLCBuZXdPcGVyYW5kcykKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNl
CisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgZW5kCisgICAgfQorICAgIG5l
d0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1hbGZvcm1lZCBpbW1lZGlhdGVzIGV4Y2Vw
dCB3aGVuIHVzZWQgaW4gYSAibW92ZSIgaW5zdHJ1Y3Rpb24uCisjIEZvciBleGFtcGxlOgorIwor
IyBhZGRwIDY0MjY0MSwgZm9vCisjCisjIHdpbGwgYmVjb21lOgorIworIyBtb3ZlIDY0MjY0MSwg
dG1wCisjIGFkZHAgdG1wLCBmb28KKyMKKworY2xhc3MgTm9kZQorICAgIGRlZiBhcm1WN0xvd2Vy
TWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkKKyAgICAgICAgbWFwQ2hpbGRyZW4gewor
ICAgICAgICAgICAgfCBub2RlIHwKKyAgICAgICAgICAgIG5vZGUuYXJtVjdMb3dlck1hbGZvcm1l
ZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitjbGFz
cyBBZGRyZXNzCisgICAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShs
aXN0KQorICAgICAgICBzZWxmCisgICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgICAg
ZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgICAgICBz
ZWxmCisgICAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgICAgZGVmIGFybVY3
TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgICAgICBzZWxmCisgICAg
ZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgICAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJ
bW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgICAgICBpZiB2YWx1ZSA8IDAgb3IgdmFsdWUgPiAy
NTUKKyAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcoY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAg
ICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW3NlbGYsIHRt
cF0pCisgICAgICAgICAgICB0bXAKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VsZgorICAg
ICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0
ZXMobGlzdCkKKyAgICBuZXdMaXN0ID0gW10KKyAgICBsaXN0LmVhY2ggeworICAgICAgICB8IG5v
ZGUgfAorICAgICAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICAgICAgICBjYXNl
IG5vZGUub3Bjb2RlCisgICAgICAgICAgICB3aGVuICJtb3ZlIgorICAgICAgICAgICAgICAgIG5l
d0xpc3QgPDwgbm9kZQorICAgICAgICAgICAgd2hlbiAiYWRkaSIsICJhZGRwIiwgImFkZGlzIiwg
InN1YmkiLCAic3VicCIsICJzdWJpcyIKKyAgICAgICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRz
WzBdLmlzX2E/IEltbWVkaWF0ZSBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bl
cmFuZHNbMF0udmFsdWUgPCAwIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGVy
YW5kc1swXS52YWx1ZSA+PSAyNTUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9w
ZXJhbmRzLnNpemUgPT0gMgorICAgICAgICAgICAgICAgICAgICBpZiBub2RlLm9wY29kZSA9fiAv
YWRkLworICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3Bjb2RlID0gInN1YiIgKyBub2RlLm9w
Y29kZVstMS4uLTFdCisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5ld09wY29kZSA9ICJhZGQiICsgbm9kZS5vcGNvZGVbLTEuLi0xXQorICAgICAgICAg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcobm9kZS5jb2RlT3JpZ2luLCBuZXdPcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFtJbW1lZGlhdGUubmV3KC1ub2RlLm9wZXJhbmRzWzBd
LnZhbHVlKV0gKyBub2RlLm9wZXJhbmRzWzEuLi0xXSkKKyAgICAgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkSW1t
ZWRpYXRlc1JlY3Vyc2UobmV3TGlzdCkKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAg
IHdoZW4gIm11bGkiCisgICAgICAgICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1swXS5pc19hPyBJ
bW1lZGlhdGUKKyAgICAgICAgICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6
Z3ByKQorICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2Rl
LmNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMF0sIHRtcF0pCisgICAgICAgICAg
ICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm11
bGkiLCBbdG1wXSArIG5vZGUub3BlcmFuZHNbMS4uLTFdKQorICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJ
bW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0KQorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9y
bWVkSW1tZWRpYXRlc1JlY3Vyc2UobmV3TGlzdCkKKyAgICAgICAgICAgIGVuZAorICAgICAgICBl
bHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgZW5kCisgICAgfQorICAg
IG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1pc3BsYWNlZCBhZGRyZXNzZXMuIEZv
ciBleGFtcGxlOgorIworIyBhZGRpIGZvbywgW2Jhcl0KKyMKKyMgd2lsbCBiZWNvbWU6CisjCisj
IGxvYWRpIFtiYXJdLCB0bXAKKyMgYWRkaSBmb28sIHRtcAorIyBzdG9yZWkgdG1wLCBbYmFyXQor
IworIyBBbm90aGVyIGV4YW1wbGU6CisjCisjIGFkZGkgW2Zvb10sIGJhcgorIworIyB3aWxsIGJl
Y29tZToKKyMKKyMgbG9hZGkgW2Zvb10sIHRtcAorIyBhZGRpIHRtcCwgYmFyCisjCisKK2RlZiBh
cm1WN0FzUmVnaXN0ZXIocHJlTGlzdCwgcG9zdExpc3QsIG9wZXJhbmQsIHN1ZmZpeCwgbmVlZFN0
b3JlKQorICAgIHJldHVybiBvcGVyYW5kIHVubGVzcyBvcGVyYW5kLmFkZHJlc3M/CisgICAgCisg
ICAgdG1wID0gVG1wLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sIGlmIHN1ZmZpeCA9PSAiZCIgdGhl
biA6ZnByIGVsc2UgOmdwciBlbmQpCisgICAgcHJlTGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3Bl
cmFuZC5jb2RlT3JpZ2luLCAibG9hZCIgKyBzdWZmaXgsIFtvcGVyYW5kLCB0bXBdKQorICAgIGlm
IG5lZWRTdG9yZQorICAgICAgICBwb3N0TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5j
b2RlT3JpZ2luLCAic3RvcmUiICsgc3VmZml4LCBbdG1wLCBvcGVyYW5kXSkKKyAgICBlbmQKKyAg
ICB0bXAKK2VuZAorCitkZWYgYXJtVjdBc1JlZ2lzdGVycyhwcmVMaXN0LCBwb3N0TGlzdCwgb3Bl
cmFuZHMsIHN1ZmZpeCkKKyAgICBuZXdPcGVyYW5kcyA9IFtdCisgICAgb3BlcmFuZHMuZWFjaF93
aXRoX2luZGV4IHsKKyAgICAgICAgfCBvcGVyYW5kLCBpbmRleCB8CisgICAgICAgIG5ld09wZXJh
bmRzIDw8IGFybVY3QXNSZWdpc3RlcihwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFuZCwgc3VmZml4
LCBpbmRleCA9PSBvcGVyYW5kcy5zaXplIC0gMSkKKyAgICB9CisgICAgbmV3T3BlcmFuZHMKK2Vu
ZAorCitkZWYgYXJtVjdMb3dlck1pc3BsYWNlZEFkZHJlc3NlcyhsaXN0KQorICAgIG5ld0xpc3Qg
PSBbXQorICAgIGxpc3QuZWFjaCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIGlmIG5vZGUu
aXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgICAgICAgIHBvc3RJbnN0cnVjdGlvbnMgPSBbXQorICAg
ICAgICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgICAgICAgd2hlbiAiYWRkaSIsICJhZGRw
IiwgImFkZGlzIiwgImFuZGkiLCAiYW5kcCIsICJsc2hpZnRpIiwgIm11bGkiLCAibmVnaSIsICJu
b3RpIiwgIm9yaSIsICJvcmlzIiwKKyAgICAgICAgICAgICAgICAib3JwIiwgInJzaGlmdGkiLCAi
dXJzaGlmdGkiLCAic3ViaSIsICJzdWJwIiwgInN1YmlzIiwgInhvcmkiLCAieG9ycCIsIC9eYmkv
LCAvXmJwLywgL15idGkvLAorICAgICAgICAgICAgICAgIC9eYnRwLywgL15jaS8sIC9eY3AvLCAv
XnRpLworICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29k
ZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2Rl
Lm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcm1W
N0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJp
IikpCisgICAgICAgICAgICB3aGVuICJiYmVxIiwgImJibmVxIiwgImJiYSIsICJiYmFlcSIsICJi
YmIiLCAiYmJiZXEiLCAiYnRibyIsICJidGJ6IiwgImJ0Ym56IiwgInRieiIsICJ0Ym56IiwKKyAg
ICAgICAgICAgICAgICAidGJvIgorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhcm1WN0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5v
ZGUub3BlcmFuZHMsICJiIikpCisgICAgICAgICAgICB3aGVuICJiYmd0IiwgImJiZ3RlcSIsICJi
Ymx0IiwgImJibHRlcSIsICJidGJzIiwgInRicyIKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXJtVjdBc1JlZ2lzdGVycyhuZXdMaXN0LCBwb3N0SW5zdHJ1
Y3Rpb25zLCBub2RlLm9wZXJhbmRzLCAiYnMiKSkKKyAgICAgICAgICAgIHdoZW4gImFkZGQiLCAi
ZGl2ZCIsICJzdWJkIiwgIm11bGQiLCAic3FydGQiLCAvXmJkLworICAgICAgICAgICAgICAgIG5l
d0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcm1WN0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBv
c3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJkIikpCisgICAgICAgICAgICB3aGVuICJq
bXAiLCAiY2FsbCIKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhu
b2RlLmNvZGVPcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbm9kZS5vcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW2FybVY3QXNSZWdpc3RlcihuZXdMaXN0LCBwb3N0SW5zdHJ1Y3Rpb25zLCBub2RlLm9wZXJh
bmRzWzBdLCAicCIsIGZhbHNlKV0pCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
bmV3TGlzdCA8PCBub2RlCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIG5ld0xpc3QgKz0g
cG9zdEluc3RydWN0aW9ucworICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5v
ZGUKKyAgICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5n
IG9mIHJlZ2lzdGVyIHJldXNlIGluIGNvbXBhcmUgaW5zdHJ1Y3Rpb25zLiBGb3IgZXhhbXBsZToK
KyMKKyMgY2llcSB0MCwgdDEsIHQwCisjCisjIHdpbGwgYmVjb21lOgorIworIyBtb3YgdG1wLCB0
MAorIyBjaWVxIHRtcCwgdDEsIHQwCisjCisKK2RlZiBhcm1WN0xvd2VyUmVnaXN0ZXJSZXVzZShs
aXN0KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3QuZWFjaCB7CisgICAgICAgIHwgbm9kZSB8
CisgICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgICAgICAgIGNhc2Ugbm9k
ZS5vcGNvZGUKKyAgICAgICAgICAgIHdoZW4gImNpZXEiLCAiY2luZXEiLCAiY2lhIiwgImNpYWVx
IiwgImNpYiIsICJjaWJlcSIsICJjaWd0IiwgImNpZ3RlcSIsICJjaWx0IiwgImNpbHRlcSIsCisg
ICAgICAgICAgICAgICAgImNwZXEiLCAiY3BuZXEiLCAiY3BhIiwgImNwYWVxIiwgImNwYiIsICJj
cGJlcSIsICJjcGd0IiwgImNwZ3RlcSIsICJjcGx0IiwgImNwbHRlcSIsCisgICAgICAgICAgICAg
ICAgInRpbyIsICJ0aXMiLCAidGl6IiwgInRpbnoiLCAidGJvIiwgInRicyIsICJ0YnoiLCAidGJu
eiIKKyAgICAgICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRzLnNpemUgPT0gMgorICAgICAgICAg
ICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRzWzBdID09IG5vZGUub3BlcmFuZHNbMV0KKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQor
ICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5j
b2RlT3JpZ2luLCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzBdLCB0bXBdKQorICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBu
b2RlLm9wY29kZSwgW3RtcCwgbm9kZS5vcGVyYW5kc1sxXV0pCisgICAgICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAg
ICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAg
IHJhaXNlICJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGF0ICN7bm9kZS5jb2RlT3JpZ2luU3Ry
aW5nfSIgdW5sZXNzIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgICAgICAgICAgICAgICAg
IGlmIG5vZGUub3BlcmFuZHNbMF0gPT0gbm9kZS5vcGVyYW5kc1syXQorICAgICAgICAgICAgICAg
ICAgICAgICAgdG1wID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAg
ICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4s
ICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMF0sIHRtcF0pCisgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2Rl
LCBbdG1wLCBub2RlLm9wZXJhbmRzWzFdLCBub2RlLm9wZXJhbmRzWzJdXSkKKyAgICAgICAgICAg
ICAgICAgICAgZWxzaWYgbm9kZS5vcGVyYW5kc1sxXSA9PSBub2RlLm9wZXJhbmRzWzJdCisgICAg
ICAgICAgICAgICAgICAgICAgICB0bXAgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikK
KyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUu
Y29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1sxXSwgdG1wXSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwg
bm9kZS5vcGNvZGUsIFtub2RlLm9wZXJhbmRzWzBdLCB0bXAsIG5vZGUub3BlcmFuZHNbMl1dKQor
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0
IDw8IG5vZGUKKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgZW5kCisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAg
ICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAg
ICAgIGVuZAorICAgIH0KKyAgICBuZXdMaXN0CitlbmQKKworIworIyBMZWEgc3VwcG9ydC4KKyMK
KworY2xhc3MgQWRkcmVzcworICAgIGRlZiBhcm1WN0VtaXRMZWEoZGVzdGluYXRpb24pCisgICAg
ICAgIGlmIGRlc3RpbmF0aW9uID09IGJhc2UKKyAgICAgICAgICAgICRhc20ucHV0cyAiYWRkcyAj
e2Rlc3RpbmF0aW9uLmFybVY3T3BlcmFuZH0sIFwjI3tvZmZzZXQudmFsdWV9IgorICAgICAgICBl
bHNlCisgICAgICAgICAgICAkYXNtLnB1dHMgImFkZHMgI3tkZXN0aW5hdGlvbi5hcm1WN09wZXJh
bmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSwgXCMje29mZnNldC52YWx1ZX0iCisgICAgICAgIGVu
ZAorICAgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICAgIGRlZiBhcm1WN0VtaXRMZWEo
ZGVzdGluYXRpb24pCisgICAgICAgIHJhaXNlICJNYWxmb3JtZWQgQmFzZUluZGV4LCBvZmZzZXQg
c2hvdWxkIGJlIHplcm8gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG9mZnNldC52YWx1
ZSA9PSAwCisgICAgICAgICRhc20ucHV0cyAiYWRkLncgI3tkZXN0aW5hdGlvbi5hcm1WN09wZXJh
bmR9LCAje2Jhc2UuYXJtVjdPcGVyYW5kfSwgI3tpbmRleC5hcm1WN09wZXJhbmR9LCBsc2wgXCMj
e3NjYWxlU2hpZnR9IgorICAgIGVuZAorZW5kCisKKyMgRklYTUU6IHdlIGNvdWxkIHN1cHBvcnQg
QWJzb2x1dGVBZGRyZXNzIGZvciBsZWEsIGJ1dCB3ZSBkb24ndC4KKworIworIyBBY3R1YWwgbG93
ZXJpbmcgY29kZSBmb2xsb3dzLgorIworCitjbGFzcyBTZXF1ZW5jZQorICAgIGRlZiBsb3dlckFS
TXY3CisgICAgICAgIG15TGlzdCA9IEBsaXN0CisgICAgICAgIAorICAgICAgICAjIFZlcmlmeSB0
aGF0IHdlIHdpbGwgb25seSBzZWUgaW5zdHJ1Y3Rpb25zIGFuZCBsYWJlbHMuCisgICAgICAgIG15
TGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgbm9kZSB8CisgICAgICAgICAgICB1bmxlc3Mgbm9k
ZS5pc19hPyBJbnN0cnVjdGlvbiBvcgorICAgICAgICAgICAgICAgICAgICBub2RlLmlzX2E/IExh
YmVsIG9yCisgICAgICAgICAgICAgICAgICAgIG5vZGUuaXNfYT8gTG9jYWxMYWJlbCBvcgorICAg
ICAgICAgICAgICAgICAgICBub2RlLmlzX2E/IFNraXAKKyAgICAgICAgICAgICAgICByYWlzZSAi
VW5leHBlY3RlZCAje25vZGUuaW5zcGVjdH0gYXQgI3tub2RlLmNvZGVPcmlnaW59IiAKKyAgICAg
ICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBteUxpc3QgPSBhcm1WN0xv
d2VyQnJhbmNoT3BzKG15TGlzdCkKKyAgICAgICAgbXlMaXN0ID0gYXJtVjdMb3dlclNoaWZ0T3Bz
KG15TGlzdCkKKyAgICAgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlcyht
eUxpc3QpCisgICAgICAgIG15TGlzdCA9IGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNEb3Vi
bGUobXlMaXN0KQorICAgICAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWlzcGxhY2VkSW1tZWRpYXRl
cyhteUxpc3QpCisgICAgICAgIG15TGlzdCA9IGFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVz
KG15TGlzdCkKKyAgICAgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1pc3BsYWNlZEFkZHJlc3Nlcyht
eUxpc3QpCisgICAgICAgIG15TGlzdCA9IGFybVY3TG93ZXJSZWdpc3RlclJldXNlKG15TGlzdCkK
KyAgICAgICAgbXlMaXN0ID0gYXNzaWduUmVnaXN0ZXJzVG9UZW1wb3JhcmllcyhteUxpc3QsIDpn
cHIsIEFSTXY3X0VYVFJBX0dQUlMpCisgICAgICAgIG15TGlzdCA9IGFzc2lnblJlZ2lzdGVyc1Rv
VGVtcG9yYXJpZXMobXlMaXN0LCA6ZnByLCBBUk12N19FWFRSQV9GUFJTKQorICAgICAgICBteUxp
c3QuZWFjaCB7CisgICAgICAgICAgICB8IG5vZGUgfAorICAgICAgICAgICAgbm9kZS5sb3dlcigi
QVJNdjciKQorICAgICAgICB9CisgICAgZW5kCitlbmQKKworZGVmIGFybVY3T3BlcmFuZHMob3Bl
cmFuZHMpCisgICAgb3BlcmFuZHMubWFwe3x2fCB2LmFybVY3T3BlcmFuZH0uam9pbigiLCAiKQor
ZW5kCisKK2RlZiBhcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcykKKyAgICBhcm1WN09wZXJh
bmRzKFtvcGVyYW5kc1stMV1dICsgb3BlcmFuZHNbMC4uLTJdKQorZW5kCisKK2RlZiBlbWl0QXJt
VjdDb21wYWN0KG9wY29kZTIsIG9wY29kZTMsIG9wZXJhbmRzKQorICAgIGlmIG9wZXJhbmRzLnNp
emUgPT0gMworICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlM30gI3thcm1WN0ZsaXBwZWRPcGVy
YW5kcyhvcGVyYW5kcyl9IgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRz
LnNpemUgPT0gMgorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0
ZXJJRAorICAgICAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgICAg
ICRhc20ucHV0cyAiI3tvcGNvZGUzfSAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3Bl
cmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAg
ICAgICBlbHNlCisgICAgICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlMn0gI3thcm1WN0ZsaXBw
ZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitkZWYg
ZW1pdEFybVY3KG9wY29kZSwgb3BlcmFuZHMpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisg
ICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFu
ZHMpfSIKKyAgICBlbHNlCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kcy5zaXplID09IDIK
KyAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9
LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5k
fSIKKyAgICBlbmQKK2VuZAorCitkZWYgZW1pdEFybVY3RG91YmxlQnJhbmNoKGJyYW5jaE9wY29k
ZSwgb3BlcmFuZHMpCisgICAgJGFzbS5wdXRzICJ2Y21wZS5mNjQgI3thcm1WN09wZXJhbmRzKG9w
ZXJhbmRzWzAuLjFdKX0iCisgICAgJGFzbS5wdXRzICJ2bXJzIGFwc3JfbnpjdiwgZnBzY3IiCisg
ICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCitl
bmQKKworZGVmIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgICAgdmFsdWUgPSBvcGVyYW5kc1sw
XQorICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgIHdoZW4gMgorICAgICAgICBtYXNrID0gSW1t
ZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAtMSkKKyAgICB3aGVuIDMKKyAgICAgICAgbWFzayA9IG9w
ZXJhbmRzWzFdCisgICAgZWxzZQorICAgICAgICByYWlzZSAiRXhwZWN0ZWQgMiBvciAzIG9wZXJh
bmRzIGJ1dCBnb3QgI3tvcGVyYW5kcy5zaXplfSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAg
IGVuZAorICAgIAorICAgIGlmIG1hc2suaXNfYT8gSW1tZWRpYXRlIGFuZCBtYXNrLnZhbHVlID09
IC0xCisgICAgICAgICRhc20ucHV0cyAidHN0ICN7dmFsdWUuYXJtVjdPcGVyYW5kfSwgI3t2YWx1
ZS5hcm1WN09wZXJhbmR9IgorICAgIGVsc2lmIG1hc2suaXNfYT8gSW1tZWRpYXRlCisgICAgICAg
ICRhc20ucHV0cyAidHN0LncgI3t2YWx1ZS5hcm1WN09wZXJhbmR9LCAje21hc2suYXJtVjdPcGVy
YW5kfSIKKyAgICBlbHNlCisgICAgICAgICRhc20ucHV0cyAidHN0ICN7dmFsdWUuYXJtVjdPcGVy
YW5kfSwgI3ttYXNrLmFybVY3T3BlcmFuZH0iCisgICAgZW5kCitlbmQKKworZGVmIGVtaXRBcm1W
N0NvbXBhcmUob3BlcmFuZHMsIGNvZGUpCisgICAgJGFzbS5wdXRzICJtb3ZzICN7b3BlcmFuZHNb
Ml0uYXJtVjdPcGVyYW5kfSwgXCMwIgorICAgICRhc20ucHV0cyAiY21wICN7b3BlcmFuZHNbMF0u
YXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICRhc20ucHV0
cyAiaXQgI3tjb2RlfSIKKyAgICAkYXNtLnB1dHMgIm1vdiN7Y29kZX0gI3tvcGVyYW5kc1syXS5h
cm1WN09wZXJhbmR9LCBcIzEiCitlbmQKKworZGVmIGVtaXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMs
IGNvZGUpCisgICAgJGFzbS5wdXRzICJtb3ZzICN7b3BlcmFuZHNbLTFdLmFybVY3T3BlcmFuZH0s
IFwjMCIKKyAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICAgICRhc20ucHV0cyAiaXQgI3tj
b2RlfSIKKyAgICAkYXNtLnB1dHMgIm1vdiN7Y29kZX0gI3tvcGVyYW5kc1stMV0uYXJtVjdPcGVy
YW5kfSwgXCMxIgorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uCisgICAgZGVmIGxvd2VyQVJNdjcK
KyAgICAgICAgJGFzbS5jb21tZW50IGNvZGVPcmlnaW5TdHJpbmcKKyAgICAgICAgY2FzZSBvcGNv
ZGUKKyAgICAgICAgd2hlbiAiYWRkaSIsICJhZGRwIiwgImFkZGlzIgorICAgICAgICAgICAgaWYg
b3Bjb2RlID09ICJhZGRpcyIKKyAgICAgICAgICAgICAgICBzdWZmaXggPSAicyIKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdWZmaXggPSAiIgorICAgICAgICAgICAgZW5kCisg
ICAgICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IElt
bWVkaWF0ZQorICAgICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBS
ZWdpc3RlcklECisgICAgICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/
IFJlZ2lzdGVySUQKKyAgICAgICAgICAgICAgICBpZiBvcGVyYW5kc1swXS52YWx1ZSA9PSAwIGFu
ZCBzdWZmaXguZW1wdHk/CisgICAgICAgICAgICAgICAgICAgIHVubGVzcyBvcGVyYW5kc1sxXSA9
PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJtb3YgI3tv
cGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisg
ICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgJGFzbS5wdXRzICJhZGRzICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tv
cGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisg
ICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMg
YW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgICAgICAgICByYWlzZSB1
bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgIHJhaXNl
IHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICAgICAgICAgJGFz
bS5wdXRzICJhZGRzICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUK
KyAgICAgICAgICAgICAgICAgICAgdW5sZXNzIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVy
YW5kc1swXQorICAgICAgICAgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJhZGRzICN7YXJtVjdG
bGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZCN7c3Vm
Zml4fSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICBlbmQKKyAgICAgICAgd2hlbiAiYW5kaSIsICJhbmRwIgorICAgICAg
ICAgICAgZW1pdEFybVY3Q29tcGFjdCgiYW5kcyIsICJhbmQiLCBvcGVyYW5kcykKKyAgICAgICAg
d2hlbiAib3JpIiwgIm9ycCIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhY3QoIm9ycnMiLCAi
b3JyIiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gIm9yaXMiCisgICAgICAgICAgICBlbWl0QXJt
VjdDb21wYWN0KCJvcnJzIiwgIm9ycnMiLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAieG9yaSIs
ICJ4b3JwIgorICAgICAgICAgICAgZW1pdEFybVY3Q29tcGFjdCgiZW9ycyIsICJlb3IiLCBvcGVy
YW5kcykKKyAgICAgICAgd2hlbiAibHNoaWZ0aSIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBh
Y3QoImxzbHMiLCAibHNscyIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJyc2hpZnRpIgorICAg
ICAgICAgICAgZW1pdEFybVY3Q29tcGFjdCgiYXNycyIsICJhc3JzIiwgb3BlcmFuZHMpCisgICAg
ICAgIHdoZW4gInVyc2hpZnRpIgorICAgICAgICAgICAgZW1pdEFybVY3Q29tcGFjdCgibHNycyIs
ICJsc3JzIiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gIm11bGkiCisgICAgICAgICAgICBpZiBv
cGVyYW5kcy5zaXplID09IDIgb3Igb3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0gb3Igb3BlcmFu
ZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICAgICBlbWl0QXJtVjcoIm11bHMiLCBv
cGVyYW5kcykKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIm1v
diAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5k
fSIKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIm11bHMgI3tvcGVyYW5kc1syXS5hcm1WN09w
ZXJhbmR9LCAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdP
cGVyYW5kfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJzdWJpIiwgInN1YnAiLCAi
c3ViaXMiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYWN0KCJzdWJzIiwgInN1YnMiLCBvcGVy
YW5kcykKKyAgICAgICAgd2hlbiAibmVnaSIKKyAgICAgICAgICAgICRhc20ucHV0cyAicnNicyAj
e29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwg
XCMwIgorICAgICAgICB3aGVuICJub3RpIgorICAgICAgICAgICAgJGFzbS5wdXRzICJtdm5zICN7
b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9Igor
ICAgICAgICB3aGVuICJsb2FkaSIsICJsb2FkcCIKKyAgICAgICAgICAgICRhc20ucHV0cyAibGRy
ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAgd2hlbiAic3RvcmVp
IiwgInN0b3JlcCIKKyAgICAgICAgICAgICRhc20ucHV0cyAic3RyICN7YXJtVjdPcGVyYW5kcyhv
cGVyYW5kcyl9IgorICAgICAgICB3aGVuICJsb2FkYiIKKyAgICAgICAgICAgICRhc20ucHV0cyAi
bGRyYiAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIHdoZW4gImxv
YWRicyIKKyAgICAgICAgICAgICRhc20ucHV0cyAibGRyc2IudyAje2FybVY3RmxpcHBlZE9wZXJh
bmRzKG9wZXJhbmRzKX0iCisgICAgICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICAgICAgICRhc20u
cHV0cyAic3RyYiAje2FybVY3T3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAgd2hlbiAibG9h
ZGgiCisgICAgICAgICAgICAkYXNtLnB1dHMgImxkcmggI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhv
cGVyYW5kcyl9IgorICAgICAgICB3aGVuICJsb2FkaHMiCisgICAgICAgICAgICAkYXNtLnB1dHMg
ImxkcnNoLncgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICB3aGVu
ICJzdG9yZWgiCisgICAgICAgICAgICAkYXNtLnB1dHMgInN0cmggI3thcm1WN09wZXJhbmRzKG9w
ZXJhbmRzKX0iCisgICAgICAgIHdoZW4gImxvYWRkIgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2
bGRyLjY0ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAgd2hlbiAi
c3RvcmVkIgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2c3RyLjY0ICN7YXJtVjdPcGVyYW5kcyhv
cGVyYW5kcyl9IgorICAgICAgICB3aGVuICJhZGRkIgorICAgICAgICAgICAgZW1pdEFybVY3KCJ2
YWRkLmY2NCIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJkaXZkIgorICAgICAgICAgICAgZW1p
dEFybVY3KCJ2ZGl2LmY2NCIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJzdWJkIgorICAgICAg
ICAgICAgZW1pdEFybVY3KCJ2c3ViLmY2NCIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJtdWxk
IgorICAgICAgICAgICAgZW1pdEFybVY3KCJ2bXVsLmY2NCIsIG9wZXJhbmRzKQorICAgICAgICB3
aGVuICJzcXJ0ZCIKKyAgICAgICAgICAgICRhc20ucHV0cyAidnNxcnQuZjY0ICN7YXJtVjdGbGlw
cGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAgd2hlbiAiY2kyZCIKKyAgICAgICAgICAg
ICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzFdLmFybVY3U2luZ2xlfSwgI3tvcGVyYW5kc1sw
XS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2Y3Z0LmY2NC5zMzIgI3tv
cGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3U2luZ2xlfSIKKyAg
ICAgICAgd2hlbiAiYmRlcSIKKyAgICAgICAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmVx
Iiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gImJkbmVxIgorICAgICAgICAgICAgJGFzbS5wdXRz
ICJ2Y21wZS5mNjQgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICAg
ICAkYXNtLnB1dHMgInZtcnMgYXBzcl9uemN2LCBmcHNjciIKKyAgICAgICAgICAgIGlzVW5vcmRl
cmVkID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxIikKKyAgICAgICAgICAgICRhc20ucHV0cyAi
YnZzICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS5hc21MYWJl
bH0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImJuZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIK
KyAgICAgICAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJBUk12NyIpCisgICAgICAgIHdoZW4gImJk
Z3QiCisgICAgICAgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJndCIsIG9wZXJhbmRzKQor
ICAgICAgICB3aGVuICJiZGd0ZXEiCisgICAgICAgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2go
ImJnZSIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJiZGx0IgorICAgICAgICAgICAgZW1pdEFy
bVY3RG91YmxlQnJhbmNoKCJibWkiLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAiYmRsdGVxIgor
ICAgICAgICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJibHMiLCBvcGVyYW5kcykKKyAgICAg
ICAgd2hlbiAiYmRlcXVuIgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2Y21wZS5mNjQgI3thcm1W
N09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgInZtcnMg
YXBzcl9uemN2LCBmcHNjciIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYnZzICN7b3BlcmFuZHNb
Ml0uYXNtTGFiZWx9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJiZXEgI3tvcGVyYW5kc1syXS5h
c21MYWJlbH0iCisgICAgICAgIHdoZW4gImJkbmVxdW4iCisgICAgICAgICAgICBlbWl0QXJtVjdE
b3VibGVCcmFuY2goImJuZSIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJiZGd0dW4iCisgICAg
ICAgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJoaSIsIG9wZXJhbmRzKQorICAgICAgICB3
aGVuICJiZGd0ZXF1biIKKyAgICAgICAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYnBsIiwg
b3BlcmFuZHMpCisgICAgICAgIHdoZW4gImJkbHR1biIKKyAgICAgICAgICAgIGVtaXRBcm1WN0Rv
dWJsZUJyYW5jaCgiYmx0Iiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gImJkbHRlcXVuIgorICAg
ICAgICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJibGUiLCBvcGVyYW5kcykKKyAgICAgICAg
d2hlbiAiYnRkMmkiCisgICAgICAgICAgICAjIEZJWE1FOiBtYXkgYmUgYSBnb29kIGlkZWEgdG8g
anVzdCBnZXQgcmlkIG9mIHRoaXMgaW5zdHJ1Y3Rpb24sIHNpbmNlIHRoZSBpbnRlcnByZXRlcgor
ICAgICAgICAgICAgIyBjdXJyZW50bHkgZG9lcyBub3QgdXNlIGl0LgorICAgICAgICAgICAgcmFp
c2UgIkFSTXY3IGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcGNvZGUgeWV0LCAje2NvZGVPcmlnaW59
IgorICAgICAgICB3aGVuICJ0ZDJpIgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2Y3Z0LnMzMi5m
NjQgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0sICN7b3BlcmFuZHNbMF0uYXJtVjdP
cGVyYW5kfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzFdLmFybVY3
T3BlcmFuZH0sICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJtVjdTaW5nbGV9IgorICAgICAgICB3aGVu
ICJiY2QyaSIKKyAgICAgICAgICAgICRhc20ucHV0cyAidmN2dC5zMzIuZjY0ICN7QVJNdjdfU0NS
QVRDSF9GUFIuYXJtVjdTaW5nbGV9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAg
ICAgICAgICAkYXNtLnB1dHMgInZtb3YgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje0FS
TXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAidmN2
dC5mNjQuczMyICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJtVjdPcGVyYW5kfSwgI3tBUk12N19TQ1JB
VENIX0ZQUi5hcm1WN1NpbmdsZX0iCisgICAgICAgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2go
ImJuZSIsIFtBUk12N19TQ1JBVENIX0ZQUiwgb3BlcmFuZHNbMF0sIG9wZXJhbmRzWzJdXSkKKyAg
ICAgICAgICAgICRhc20ucHV0cyAidHN0ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tv
cGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJiZXEgI3tv
cGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gIm1vdmR6IgorICAgICAgICAgICAg
IyBGSVhNRTogZWl0aGVyIHN1cHBvcnQgdGhpcyBvciByZW1vdmUgaXQuCisgICAgICAgICAgICBy
YWlzZSAiQVJNdjcgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wY29kZSB5ZXQsICN7Y29kZU9yaWdp
bn0iCisgICAgICAgIHdoZW4gInBvcCIKKyAgICAgICAgICAgICRhc20ucHV0cyAicG9wICN7b3Bl
cmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgd2hlbiAicHVzaCIKKyAgICAgICAgICAg
ICRhc20ucHV0cyAicHVzaCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAgIHdo
ZW4gIm1vdmUiLCAic3hpMnAiLCAienhpMnAiCisgICAgICAgICAgICBpZiBvcGVyYW5kc1swXS5p
c19hPyBJbW1lZGlhdGUKKyAgICAgICAgICAgICAgICBhcm1WN01vdmVJbW1lZGlhdGUob3BlcmFu
ZHNbMF0udmFsdWUsIG9wZXJhbmRzWzFdKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICRhc20ucHV0cyAibW92ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAg
ICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJub3AiCisgICAgICAgICAgICAkYXNtLnB1dHMg
Im5vcCIKKyAgICAgICAgd2hlbiAiYmllcSIsICJicGVxIiwgImJiZXEiCisgICAgICAgICAgICBp
ZiBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAgICAgICAk
YXNtLnB1dHMgInRzdCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0u
YXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICAgIGVsc2lmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9
PSBvcGVyYW5kc1sxXQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAidHN0ICN7b3BlcmFuZHNb
MF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhv
cGVyYW5kc1swLi4xXSl9IgorICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAkYXNtLnB1dHMg
ImJlcSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYmluZXEiLCAiYnBu
ZXEiLCAiYmJuZXEiCisgICAgICAgICAgICBpZiBJbW1lZGlhdGUubmV3KG5pbCwgMCkgPT0gb3Bl
cmFuZHNbMF0KKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgInRzdCAje29wZXJhbmRzWzFdLmFy
bVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICAgIGVs
c2lmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1sxXQorICAgICAgICAgICAgICAg
ICRhc20ucHV0cyAidHN0ICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sw
XS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICRhc20u
cHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICAkYXNtLnB1dHMgImJuZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIK
KyAgICAgICAgd2hlbiAiYmlhIiwgImJwYSIsICJiYmEiCisgICAgICAgICAgICAkYXNtLnB1dHMg
ImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAgICRhc20u
cHV0cyAiYmhpICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJiaWFlcSIs
ICJicGFlcSIsICJiYmFlcSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVy
YW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJiaHMgI3tvcGVy
YW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImJpYiIsICJicGIiLCAiYmJiIgorICAg
ICAgICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0i
CisgICAgICAgICAgICAkYXNtLnB1dHMgImJsbyAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAg
ICAgICAgd2hlbiAiYmliZXEiLCAiYnBiZXEiLCAiYmJiZXEiCisgICAgICAgICAgICAkYXNtLnB1
dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAgICRh
c20ucHV0cyAiYmxzICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJiaWd0
IiwgImJwZ3QiLCAiYmJndCIKKyAgICAgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVy
YW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJiZ3QgI3tvcGVy
YW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImJpZ3RlcSIsICJicGd0ZXEiLCAiYmJn
dGVxIgorICAgICAgICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRz
WzAuLjFdKX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImJnZSAje29wZXJhbmRzWzJdLmFzbUxh
YmVsfSIKKyAgICAgICAgd2hlbiAiYmlsdCIsICJicGx0IiwgImJibHQiCisgICAgICAgICAgICAk
YXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAiYmx0ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3aGVu
ICJiaWx0ZXEiLCAiYnBsdGVxIiwgImJibHRlcSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiY21w
ICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgICAgICAgJGFzbS5wdXRz
ICJibGUgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImJ0aXoiLCAiYnRw
eiIsICJidGJ6IgorICAgICAgICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgICAgICAg
ICAgICRhc20ucHV0cyAiYmVxICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hl
biAiYnRpbnoiLCAiYnRwbnoiLCAiYnRibnoiCisgICAgICAgICAgICBlbWl0QXJtVjdUZXN0KG9w
ZXJhbmRzKQorICAgICAgICAgICAgJGFzbS5wdXRzICJibmUgI3tvcGVyYW5kc1stMV0uYXNtTGFi
ZWx9IgorICAgICAgICB3aGVuICJidGlvIiwgImJ0cG8iLCAiYnRibyIKKyAgICAgICAgICAgIGVt
aXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgICAgICAgICAgICAkYXNtLnB1dHMgImJ2cyAje29wZXJh
bmRzWy0xXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImJ0aXMiLCAiYnRwcyIsICJidGJzIgor
ICAgICAgICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgICAgICAgICAgICRhc20ucHV0
cyAiYm1pICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiam1wIgorICAg
ICAgICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAgICAgICAgICAgJGFzbS5wdXRz
ICJiICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICRhc20ucHV0cyAibW92IHBjLCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisg
ICAgICAgICAgICBlbmQKKyAgICAgICAgd2hlbiAiY2FsbCIKKyAgICAgICAgICAgIGlmIG9wZXJh
bmRzWzBdLmxhYmVsPworICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYmx4ICN7b3BlcmFuZHNb
MF0uYXNtTGFiZWx9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICRhc20ucHV0
cyAiYmx4ICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICAgIGVuZAorICAg
ICAgICB3aGVuICJicmVhayIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYmtwdCIKKyAgICAgICAg
d2hlbiAicmV0IgorICAgICAgICAgICAgJGFzbS5wdXRzICJieCBsciIKKyAgICAgICAgd2hlbiAi
Y2llcSIsICJjcGVxIgorICAgICAgICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImVx
IikKKyAgICAgICAgd2hlbiAiY2luZXEiLCAiY3BuZXEiCisgICAgICAgICAgICBlbWl0QXJtVjdD
b21wYXJlKG9wZXJhbmRzLCAibmUiKQorICAgICAgICB3aGVuICJjaWEiLCAiY3BhIgorICAgICAg
ICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImhpIikKKyAgICAgICAgd2hlbiAiY2lh
ZXEiLCAiY3BhZXEiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiaHMi
KQorICAgICAgICB3aGVuICJjaWIiLCAiY3BiIgorICAgICAgICAgICAgZW1pdEFybVY3Q29tcGFy
ZShvcGVyYW5kcywgImxvIikKKyAgICAgICAgd2hlbiAiY2liZXEiLCAiY3BiZXEiCisgICAgICAg
ICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibHMiKQorICAgICAgICB3aGVuICJjaWd0
IiwgImNwZ3QiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiZ3QiKQor
ICAgICAgICB3aGVuICJjaWd0ZXEiLCAiY3BndGVxIgorICAgICAgICAgICAgZW1pdEFybVY3Q29t
cGFyZShvcGVyYW5kcywgImdlIikKKyAgICAgICAgd2hlbiAiY2lsdCIsICJjcGx0IgorICAgICAg
ICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImx0IikKKyAgICAgICAgd2hlbiAiY2ls
dGVxIiwgImNwbHRlcSIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJs
ZSIpCisgICAgICAgIHdoZW4gInRpbyIsICJ0Ym8iCisgICAgICAgICAgICBlbWl0QXJtVjdUZXN0
U2V0KG9wZXJhbmRzLCAidnMiKQorICAgICAgICB3aGVuICJ0aXMiLCAidGJzIgorICAgICAgICAg
ICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywgIm1pIikKKyAgICAgICAgd2hlbiAidGl6Iiwg
InRieiIKKyAgICAgICAgICAgIGVtaXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMsICJlcSIpCisgICAg
ICAgIHdoZW4gInRpbnoiLCAidGJueiIKKyAgICAgICAgICAgIGVtaXRBcm1WN1Rlc3RTZXQob3Bl
cmFuZHMsICJuZSIpCisgICAgICAgIHdoZW4gInBlZWsiCisgICAgICAgICAgICAkYXNtLnB1dHMg
ImxkciAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sIFtzcCwgXCMje29wZXJhbmRzWzBdLnZh
bHVlICogNH1dIgorICAgICAgICB3aGVuICJwb2tlIgorICAgICAgICAgICAgJGFzbS5wdXRzICJz
dHIgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCBbc3AsIFwjI3tvcGVyYW5kc1swXS52YWx1
ZSAqIDR9XSIKKyAgICAgICAgd2hlbiAiZmlpMmQiCisgICAgICAgICAgICAkYXNtLnB1dHMgInZt
b3YgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFu
ZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgd2hlbiAiZmQyaWkiCisg
ICAgICAgICAgICAkYXNtLnB1dHMgInZtb3YgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAj
e29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIK
KyAgICAgICAgd2hlbiAiYm8iCisgICAgICAgICAgICAkYXNtLnB1dHMgImJ2cyAje29wZXJhbmRz
WzBdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYnMiCisgICAgICAgICAgICAkYXNtLnB1dHMg
ImJtaSAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYnoiCisgICAgICAg
ICAgICAkYXNtLnB1dHMgImJlcSAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hl
biAiYm56IgorICAgICAgICAgICAgJGFzbS5wdXRzICJibmUgI3tvcGVyYW5kc1swXS5hc21MYWJl
bH0iCisgICAgICAgIHdoZW4gImxlYWkiLCAibGVhcCIKKyAgICAgICAgICAgIG9wZXJhbmRzWzBd
LmFybVY3RW1pdExlYShvcGVyYW5kc1sxXSkKKyAgICAgICAgd2hlbiAic211bGxpIgorICAgICAg
ICAgICAgcmFpc2UgIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgdG8gc211bGwgaW4gI3tzZWxm
Lmluc3BlY3R9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBvcGVyYW5kcy5sZW5ndGgg
PT0gNAorICAgICAgICAgICAgJGFzbS5wdXRzICJzbXVsbCAje29wZXJhbmRzWzJdLmFybVY3T3Bl
cmFuZH0sICN7b3BlcmFuZHNbM10uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09w
ZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHJhaXNlICJVbmhhbmRsZWQgb3Bjb2RlICN7b3Bjb2RlfSBhdCAje2NvZGVPcmlnaW5T
dHJpbmd9IgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXNtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3MiBAQAor
IyEvdXNyL2Jpbi9lbnYgcnVieQorCisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCiskOiA8PCBGaWxlLmRpcm5hbWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgor
cmVxdWlyZSAiZGlnZXN0L3NoYTEiCityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2Vy
IgorcmVxdWlyZSAic2VsZl9oYXNoIgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFu
c2Zvcm0iCisKK2NsYXNzIEFzc2VtYmxlcgorICAgIGRlZiBpbml0aWFsaXplKG91dHApCisgICAg
ICAgIEBvdXRwID0gb3V0cAorICAgICAgICBAc3RhdGUgPSA6Y3BwCisgICAgICAgIEBjb21tZW50
U3RhdGUgPSA6bm9uZQorICAgICAgICBAY29tbWVudCA9IG5pbAorICAgIGVuZAorICAgIAorICAg
IGRlZiBlbnRlckFzbQorICAgICAgICBAb3V0cC5wdXRzICJhc20gKCIKKyAgICAgICAgQHN0YXRl
ID0gOmFzbQorICAgIGVuZAorICAgIAorICAgIGRlZiBsZWF2ZUFzbQorICAgICAgICBwdXRzTGFz
dENvbW1lbnQKKyAgICAgICAgQG91dHAucHV0cyAiKTsiCisgICAgICAgIEBzdGF0ZSA9IDpjcHAK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgaW5Bc20KKyAgICAgICAgZW50ZXJBc20KKyAgICAgICAg
eWllbGQKKyAgICAgICAgbGVhdmVBc20KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFzdENvbW1l
bnQKKyAgICAgICAgaWYgQGNvbW1lbnQKKyAgICAgICAgICAgIHJlc3VsdCA9ICIvLyAje0Bjb21t
ZW50fSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gIiIKKyAgICAgICAgZW5k
CisgICAgICAgIEBjb21tZW50U3RhdGUgPSA6bm9uZQorICAgICAgICBAY29tbWVudCA9IG5pbAor
ICAgICAgICByZXN1bHQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcHV0c0xhc3RDb21tZW50Cisg
ICAgICAgIGNvbW1lbnQgPSBsYXN0Q29tbWVudAorICAgICAgICB1bmxlc3MgY29tbWVudC5lbXB0
eT8KKyAgICAgICAgICAgIEBvdXRwLnB1dHMgY29tbWVudAorICAgICAgICBlbmQKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgcHV0cygqbGluZSkKKyAgICAgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9
PSA6YXNtCisgICAgICAgIEBvdXRwLnB1dHMoIlwiXFx0IiArIGxpbmUuam9pbignJykgKyAiXFxu
XCIgI3tsYXN0Q29tbWVudH0iKQorICAgIGVuZAorICAgIAorICAgIGRlZiBwcmludChsaW5lKQor
ICAgICAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICAgICAgQG91dHAucHJpbnQo
IlwiIiArIGxpbmUgKyAiXCIiKQorICAgIGVuZAorICAgIAorICAgIGRlZiBwdXRzTGFiZWwobGFi
ZWxOYW1lKQorICAgICAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICAgICAgQG91
dHAucHV0cygiT0ZGTElORV9BU01fR0xPQkFMX0xBQkVMKCN7bGFiZWxOYW1lfSkgI3tsYXN0Q29t
bWVudH0iKQorICAgIGVuZAorICAgIAorICAgIGRlZiBwdXRzTG9jYWxMYWJlbChsYWJlbE5hbWUp
CisgICAgICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgICAgICBAb3V0cC5wdXRz
KCJMT0NBTF9MQUJFTF9TVFJJTkcoI3tsYWJlbE5hbWV9KSBcIjpcXG5cIiAje2xhc3RDb21tZW50
fSIpCisgICAgZW5kCisgICAgCisgICAgZGVmIHNlbGYubGFiZWxSZWZlcmVuY2UobGFiZWxOYW1l
KQorICAgICAgICAiXCIgU1lNQk9MX1NUUklORygje2xhYmVsTmFtZX0pIFwiIgorICAgIGVuZAor
ICAgIAorICAgIGRlZiBzZWxmLmxvY2FsTGFiZWxSZWZlcmVuY2UobGFiZWxOYW1lKQorICAgICAg
ICAiXCIgTE9DQUxfTEFCRUxfU1RSSU5HKCN7bGFiZWxOYW1lfSkgXCIiCisgICAgZW5kCisgICAg
CisgICAgZGVmIGNvbW1lbnQodGV4dCkKKyAgICAgICAgY2FzZSBAY29tbWVudFN0YXRlCisgICAg
ICAgIHdoZW4gOm5vbmUKKyAgICAgICAgICAgIEBjb21tZW50ID0gdGV4dAorICAgICAgICAgICAg
QGNvbW1lbnRTdGF0ZSA9IDpvbmUKKyAgICAgICAgd2hlbiA6b25lCisgICAgICAgICAgICBAb3V0
cC5wdXRzICIvLyAje0Bjb21tZW50fSIKKyAgICAgICAgICAgIEBvdXRwLnB1dHMgIi8vICN7dGV4
dH0iCisgICAgICAgICAgICBAY29tbWVudCA9IG5pbAorICAgICAgICAgICAgQGNvbW1lbnRTdGF0
ZSA9IDptYW55CisgICAgICAgIHdoZW4gOm1hbnkKKyAgICAgICAgICAgIEBvdXRwLnB1dHMgIi8v
ICN7dGV4dH0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGVuZAor
ICAgIGVuZAorZW5kCisKK2FzbUZpbGUgPSBBUkdWLnNoaWZ0CitvZmZzZXRzRmlsZSA9IEFSR1Yu
c2hpZnQKK291dHB1dEZsbm0gPSBBUkdWLnNoaWZ0CisKKyRzdGRlcnIucHV0cyAib2ZmbGluZWFz
bTogUGFyc2luZyAje2FzbUZpbGV9IGFuZCAje29mZnNldHNGaWxlfSBhbmQgY3JlYXRpbmcgYXNz
ZW1ibHkgZmlsZSAje291dHB1dEZsbm19LiIKKworb2Zmc2V0c0xpc3QsIGNvbmZpZ0luZGV4ID0g
b2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChvZmZzZXRzRmlsZSkKK2lucHV0RGF0YSA9IElP
OjpyZWFkKGFzbUZpbGUpCisKK2lucHV0SGFzaCA9CisgICAgIi8vIG9mZmxpbmVhc20gaW5wdXQg
aGFzaDogIiArIERpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoaW5wdXREYXRhKSArCisgICAgIiAiICsg
RGlnZXN0OjpTSEExLmhleGRpZ2VzdCgob2Zmc2V0c0xpc3QgKyBbY29uZmlnSW5kZXhdKS5qb2lu
KCcgJykpICsKKyAgICAiICIgKyBzZWxmSGFzaAorCitpZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0
RmxubQorICAgIEZpbGUub3BlbihvdXRwdXRGbG5tLCAiciIpIHsKKyAgICAgICAgfCBpbnAgfAor
ICAgICAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAgICAgICBpZiBmaXJzdExpbmUgYW5kIGZp
cnN0TGluZS5jaG9tcCA9PSBpbnB1dEhhc2gKKyAgICAgICAgICAgICRzdGRlcnIucHV0cyAib2Zm
bGluZWFzbTogTm90aGluZyBjaGFuZ2VkLiIKKyAgICAgICAgICAgIGV4aXQgMAorICAgICAgICBl
bmQKKyAgICB9CitlbmQKKworRmlsZS5vcGVuKG91dHB1dEZsbm0sICJ3IikgeworICAgIHwgb3V0
cCB8CisgICAgJG91dHB1dCA9IG91dHAKKyAgICAkb3V0cHV0LnB1dHMgaW5wdXRIYXNoCisgICAg
CisgICAgJGFzbSA9IEFzc2VtYmxlci5uZXcoJG91dHB1dCkKKyAgICAKKyAgICBhc3QgPSBwYXJz
ZShsZXgoaW5wdXREYXRhKSkKKyAgICAKKyAgICBmb3JTZXR0aW5ncyhjb21wdXRlU2V0dGluZ3ND
b21iaW5hdGlvbnMoYXN0KVtjb25maWdJbmRleF0sIGFzdCkgeworICAgICAgICB8IGNvbmNyZXRl
U2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICAgICAgYXNzZXJ0Q29uZmlndXJh
dGlvbihjb25jcmV0ZVNldHRpbmdzKQorICAgICAgICBsb3dMZXZlbEFTVCA9IGxvd0xldmVsQVNU
LnJlc29sdmUoKmJ1aWxkT2Zmc2V0c01hcChsb3dMZXZlbEFTVCwgb2Zmc2V0c0xpc3QpKQorICAg
ICAgICBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFT
VCwgYmFja2VuZCkgeworICAgICAgICAgICAgJGFzbS5pbkFzbSB7CisgICAgICAgICAgICAgICAg
bG93TGV2ZWxBU1QubG93ZXIoYmFja2VuZCkKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0KK30KKworJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBBc3NlbWJseSBmaWxlICN7b3V0cHV0
RmxubX0gc3VjY2Vzc2Z1bGx5IGdlbmVyYXRlZC4iCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9hc3QucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAzOSBAQAorIyBD
b3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisj
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworIworIyBCYXNlIHV0aWxpdHkgdHlw
ZXMgZm9yIHRoZSBBU1QuCisjCisKKyMgVmFsaWQgbWV0aG9kcyBmb3IgTm9kZToKKyMKKyMgbm9k
ZS5jaGlsZHJlbiAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGltbWVkaWF0ZSBjaGlsZHJlbi4KKyMK
KyMgbm9kZS5kZXNjZW5kZW50cyAtPiBSZXR1cm5zIGFuIGFycmF5IG9mIGFsbCBzdHJpY3QgZGVz
Y2VuZGFudHMgKGNoaWxkcmVuCisjICAgICBhbmQgY2hpbGRyZW4gb2YgY2hpbGRyZW4sIHRyYW5z
aXRpdmVseSkuCisjCisjIG5vZGUuZmxhdHRlbiAtPiBSZXR1cm5zIGFuIGFycmF5IGNvbnRhaW5p
bmcgdGhlIHN0cmljdCBkZXNjZW5kYW50cyBhbmQKKyMgICAgIHRoZSBub2RlIGl0c2VsZi4KKyMK
KyMgbm9kZS5maWx0ZXIodHlwZSkgLT4gUmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRob3Nl
IGVsZW1lbnRzIGluCisjICAgICBub2RlLmZsYXR0ZW4gdGhhdCBhcmUgb2YgdGhlIGdpdmVuIHR5
cGUgKGlzX2E/IHR5cGUgcmV0dXJucyB0cnVlKS4KKyMKKyMgbm9kZS5tYXBDaGlsZHJlbnt8dnwg
Li4ufSAtPiBSZXR1cm5zIGEgbmV3IG5vZGUgd2l0aCBhbGwgY2hpbGRyZW4KKyMgICAgIHJlcGxh
Y2VkIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gYmxvY2suCisjCisjIEV4YW1wbGVzOgorIworIyBu
b2RlLmZpbHRlcihTZXR0aW5nKS51bmlxIC0+IFJldHVybnMgYWxsIG9mIHRoZSBzZXR0aW5ncyB0
aGF0IHRoZSBBU1QncworIyAgICAgSWZUaGVuRWxzZSBibG9ja3MgZGVwZW5kIG9uLgorIworIyBu
b2RlLmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2YgdGhlIHN0cnVj
dHVyZSBvZmZzZXRzCisjICAgICB0aGF0IHRoZSBBU1QgZGVwZW5kcyBvbi4KKworY2xhc3MgTm9k
ZQorICAgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2luCisgICAgCisgICAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbikKKyAgICAgICAgQGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luCisgICAgZW5kCisg
ICAgCisgICAgZGVmIGNvZGVPcmlnaW5TdHJpbmcKKyAgICAgICAgImxpbmUgbnVtYmVyICN7QGNv
ZGVPcmlnaW59IgorICAgIGVuZAorICAgIAorICAgIGRlZiBkZXNjZW5kYW50cworICAgICAgICBj
aGlsZHJlbi5jb2xsZWN0e3x2fCB2LmZsYXR0ZW59LmZsYXR0ZW4KKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgZmxhdHRlbgorICAgICAgICBbc2VsZl0gKyBkZXNjZW5kYW50cworICAgIGVuZAorICAg
IAorICAgIGRlZiBmaWx0ZXIodHlwZSkKKyAgICAgICAgZmxhdHRlbi5zZWxlY3R7fHZ8IHYuaXNf
YT8gdHlwZX0KKyAgICBlbmQKK2VuZAorCitjbGFzcyBOb0NoaWxkcmVuIDwgTm9kZQorICAgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
ZW5kCisgICAgCisgICAgZGVmIGNoaWxkcmVuCisgICAgICAgIFtdCisgICAgZW5kCisgICAgCisg
ICAgZGVmIG1hcENoaWxkcmVuCisgICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitjbGFzcyBT
dHJ1Y3RPZmZzZXRLZXkKKyAgICBhdHRyX3JlYWRlciA6c3RydWN0LCA6ZmllbGQKKyAgICAKKyAg
ICBkZWYgaW5pdGlhbGl6ZShzdHJ1Y3QsIGZpZWxkKQorICAgICAgICBAc3RydWN0ID0gc3RydWN0
CisgICAgICAgIEBmaWVsZCA9IGZpZWxkCisgICAgZW5kCisgICAgCisgICAgZGVmIGhhc2gKKyAg
ICAgICAgQHN0cnVjdC5oYXNoICsgQGZpZWxkLmhhc2ggKiAzCisgICAgZW5kCisgICAgCisgICAg
ZGVmIGVxbD8ob3RoZXIpCisgICAgICAgIEBzdHJ1Y3QgPT0gb3RoZXIuc3RydWN0IGFuZCBAZmll
bGQgPT0gb3RoZXIuZmllbGQKKyAgICBlbmQKK2VuZAorCisjCisjIEFTVCBub2Rlcy4KKyMKKwor
Y2xhc3MgU3RydWN0T2Zmc2V0IDwgTm9DaGlsZHJlbgorICAgIGF0dHJfcmVhZGVyIDpzdHJ1Y3Qs
IDpmaWVsZAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmll
bGQpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QK
KyAgICAgICAgQGZpZWxkID0gZmllbGQKKyAgICBlbmQKKyAgICAKKyAgICBAQG1hcHBpbmcgPSB7
fQorICAgIAorICAgIGRlZiBzZWxmLmZvckZpZWxkKGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQp
CisgICAgICAgIGtleSA9IFN0cnVjdE9mZnNldEtleS5uZXcoc3RydWN0LCBmaWVsZCkKKyAgICAg
ICAgCisgICAgICAgIHVubGVzcyBAQG1hcHBpbmdba2V5XQorICAgICAgICAgICAgQEBtYXBwaW5n
W2tleV0gPSBTdHJ1Y3RPZmZzZXQubmV3KGNvZGVPcmlnaW4sIHN0cnVjdCwgZmllbGQpCisgICAg
ICAgIGVuZAorICAgICAgICBAQG1hcHBpbmdba2V5XQorICAgIGVuZAorICAgIAorICAgIGRlZiBk
dW1wCisgICAgICAgICIje3N0cnVjdH06OiN7ZmllbGR9IgorICAgIGVuZAorICAgIAorICAgIGRl
ZiA8PT4ob3RoZXIpCisgICAgICAgIGlmIEBzdHJ1Y3QgIT0gb3RoZXIuc3RydWN0CisgICAgICAg
ICAgICByZXR1cm4gQHN0cnVjdCA8PT4gb3RoZXIuc3RydWN0CisgICAgICAgIGVuZAorICAgICAg
ICBAZmllbGQgPD0+IG90aGVyLmZpZWxkCisgICAgZW5kCisgICAgCisgICAgZGVmIGFkZHJlc3M/
CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGxhYmVsPworICAgICAgICBm
YWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBpbW1lZGlhdGU/CisgICAgICAgIHRydWUKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/CisgICAgICAgIGZhbHNlCisgICAgZW5kCitl
bmQKKworY2xhc3MgU2l6ZW9mIDwgTm9DaGlsZHJlbgorICAgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QK
KyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgICAgIHN1
cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBzdHJ1Y3QgPSBzdHJ1Y3QKKyAgICBlbmQKKyAgICAK
KyAgICBAQG1hcHBpbmcgPSB7fQorICAgIAorICAgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdp
biwgc3RydWN0KQorICAgICAgICB1bmxlc3MgQEBtYXBwaW5nW3N0cnVjdF0KKyAgICAgICAgICAg
IEBAbWFwcGluZ1tzdHJ1Y3RdID0gU2l6ZW9mLm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAg
ICAgIGVuZAorICAgICAgICBAQG1hcHBpbmdbc3RydWN0XQorICAgIGVuZAorICAgIAorICAgIGRl
ZiBkdW1wCisgICAgICAgICJzaXplb2YgI3tAc3RydWN0fSIKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgPD0+KG90aGVyKQorICAgICAgICBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVk
aWF0ZT8KKyAgICAgICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAg
ICAgICAgZmFsc2UKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUgPCBOb0NoaWxkcmVu
CisgICAgYXR0cl9yZWFkZXIgOnZhbHVlCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgdmFsdWUpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEB2YWx1ZSA9
IHZhbHVlCisgICAgICAgIHJhaXNlICJCYWQgaW1tZWRpYXRlIHZhbHVlICN7dmFsdWUuaW5zcGVj
dH0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIHZhbHVlLmlzX2E/IEludGVnZXIKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICAiI3t2YWx1ZX0iCisgICAgZW5kCisg
ICAgCisgICAgZGVmID09KG90aGVyKQorICAgICAgICBvdGhlci5pc19hPyBJbW1lZGlhdGUgYW5k
IG90aGVyLnZhbHVlID09IEB2YWx1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiBhZGRyZXNzPwor
ICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBsYWJlbD8KKyAgICAgICAgZmFs
c2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaW1tZWRpYXRlPworICAgICAgICB0cnVlCisgICAg
ZW5kCisgICAgCisgICAgZGVmIHJlZ2lzdGVyPworICAgICAgICBmYWxzZQorICAgIGVuZAorZW5k
CisKK2NsYXNzIEFkZEltbWVkaWF0ZXMgPCBOb2RlCisgICAgYXR0cl9yZWFkZXIgOmxlZnQsIDpy
aWdodAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQor
ICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAbGVmdCA9IGxlZnQKKyAgICAgICAg
QHJpZ2h0ID0gcmlnaHQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRyZW4KKyAgICAgICAg
W0BsZWZ0LCBAcmlnaHRdCisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxkcmVuCisgICAg
ICAgIEFkZEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBA
cmlnaHQpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICIoI3tsZWZ0LmR1
bXB9ICsgI3tyaWdodC5kdW1wfSkiCisgICAgZW5kCisgICAgCisgICAgZGVmIGFkZHJlc3M/Cisg
ICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGxhYmVsPworICAgICAgICBmYWxz
ZQorICAgIGVuZAorICAgIAorICAgIGRlZiBpbW1lZGlhdGU/CisgICAgICAgIHRydWUKKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/CisgICAgICAgIGZhbHNlCisgICAgZW5kCitlbmQK
KworY2xhc3MgU3ViSW1tZWRpYXRlcyA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6bGVmdCwgOnJp
Z2h0CisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwgcmlnaHQpCisg
ICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBsZWZ0ID0gbGVmdAorICAgICAgICBA
cmlnaHQgPSByaWdodAorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBb
QGxlZnQsIEByaWdodF0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hpbGRyZW4KKyAgICAg
ICAgU3ViSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEBy
aWdodCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIigje2xlZnQuZHVt
cH0gLSAje3JpZ2h0LmR1bXB9KSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAg
ICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNl
CisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAgdHJ1ZQorICAgIGVu
ZAorICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKK2VuZAor
CitjbGFzcyBNdWxJbW1lZGlhdGVzIDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmln
aHQKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAg
ICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQGxlZnQgPSBsZWZ0CisgICAgICAgIEBy
aWdodCA9IHJpZ2h0CisgICAgZW5kCisgICAgCisgICAgZGVmIGNoaWxkcmVuCisgICAgICAgIFtA
bGVmdCwgQHJpZ2h0XQorICAgIGVuZAorICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbgorICAgICAg
ICBNdWxJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJp
Z2h0KSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICAiKCN7bGVmdC5kdW1w
fSAqICN7cmlnaHQuZHVtcH0pIgorICAgIGVuZAorICAgIAorICAgIGRlZiBhZGRyZXNzPworICAg
ICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBsYWJlbD8KKyAgICAgICAgZmFsc2UK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgaW1tZWRpYXRlPworICAgICAgICB0cnVlCisgICAgZW5k
CisgICAgCisgICAgZGVmIHJlZ2lzdGVyPworICAgICAgICBmYWxzZQorICAgIGVuZAorZW5kCisK
K2NsYXNzIE5lZ0ltbWVkaWF0ZSA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgICAK
KyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBjaGlsZCkKKyAgICAgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICAgICAgQGNoaWxkID0gY2hpbGQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
Y2hpbGRyZW4KKyAgICAgICAgW0BjaGlsZF0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hp
bGRyZW4KKyAgICAgICAgTmVnSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxk
KSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICAiKC0je0BjaGlsZC5kdW1w
fSkiCisgICAgZW5kCisgICAgCisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAg
ZW5kCisgICAgCisgICAgZGVmIGxhYmVsPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAor
ICAgIGRlZiBpbW1lZGlhdGU/CisgICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
cmVnaXN0ZXI/CisgICAgICAgIGZhbHNlCisgICAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJ
RCA8IE5vQ2hpbGRyZW4KKyAgICBhdHRyX3JlYWRlciA6bmFtZQorICAgIAorICAgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
ICAgIEBuYW1lID0gbmFtZQorICAgIGVuZAorICAgIAorICAgIEBAbWFwcGluZyA9IHt9CisgICAg
CisgICAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICB1bmxlc3Mg
QEBtYXBwaW5nW25hbWVdCisgICAgICAgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBSZWdpc3RlcklE
Lm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbmQKKyAgICAgICAgQEBtYXBwaW5nW25h
bWVdCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgbmFtZQorICAgIGVuZAor
ICAgIAorICAgIGRlZiBhZGRyZXNzPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAg
IGRlZiBsYWJlbD8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaW1tZWRp
YXRlPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAg
ICAgICAgdHJ1ZQorICAgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRCA8IE5vQ2hpbGRy
ZW4KKyAgICBhdHRyX3JlYWRlciA6bmFtZQorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBuYW1lID0g
bmFtZQorICAgIGVuZAorICAgIAorICAgIEBAbWFwcGluZyA9IHt9CisgICAgCisgICAgZGVmIHNl
bGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICB1bmxlc3MgQEBtYXBwaW5nW25h
bWVdCisgICAgICAgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBGUFJlZ2lzdGVySUQubmV3KGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgICAgIGVuZAorICAgICAgICBAQG1hcHBpbmdbbmFtZV0KKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICBuYW1lCisgICAgZW5kCisgICAgCisgICAg
ZGVmIGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGxhYmVs
PworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBpbW1lZGlhdGU/CisgICAg
ICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIHJlZ2lzdGVyPworICAgICAgICB0cnVl
CisgICAgZW5kCitlbmQKKworY2xhc3MgVmFyaWFibGUgPCBOb0NoaWxkcmVuCisgICAgYXR0cl9y
ZWFkZXIgOm5hbWUKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQor
ICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAbmFtZSA9IG5hbWUKKyAgICBlbmQK
KyAgICAKKyAgICBAQG1hcHBpbmcgPSB7fQorICAgIAorICAgIGRlZiBzZWxmLmZvck5hbWUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgICAg
ICAgQEBtYXBwaW5nW25hbWVdID0gVmFyaWFibGUubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
ICAgIGVuZAorICAgICAgICBAQG1hcHBpbmdbbmFtZV0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
ZHVtcAorICAgICAgICBuYW1lCisgICAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcyA8IE5vZGUK
KyAgICBhdHRyX3JlYWRlciA6YmFzZSwgOm9mZnNldAorICAgIAorICAgIGRlZiBpbml0aWFsaXpl
KGNvZGVPcmlnaW4sIGJhc2UsIG9mZnNldCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICAgICAgQGJhc2UgPSBiYXNlCisgICAgICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAgICAgICAgcmFp
c2UgIkJhZCBiYXNlIGZvciBhZGRyZXNzICN7YmFzZS5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5T
dHJpbmd9IiB1bmxlc3MgYmFzZS5pc19hPyBWYXJpYWJsZSBvciBiYXNlLnJlZ2lzdGVyPworICAg
ICAgICByYWlzZSAiQmFkIG9mZnNldCBmb3IgYWRkcmVzcyAje29mZnNldC5pbnNwZWN0fSBhdCAj
e2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb2Zmc2V0LmlzX2E/IFZhcmlhYmxlIG9yIG9mZnNl
dC5pbW1lZGlhdGU/CisgICAgZW5kCisgICAgCisgICAgZGVmIGNoaWxkcmVuCisgICAgICAgIFtA
YmFzZSwgQG9mZnNldF0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hpbGRyZW4KKyAgICAg
ICAgQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBvZmZzZXQp
KQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICIje29mZnNldC5kdW1wfVsj
e2Jhc2UuZHVtcH1dIgorICAgIGVuZAorICAgIAorICAgIGRlZiBhZGRyZXNzPworICAgICAgICB0
cnVlCisgICAgZW5kCisgICAgCisgICAgZGVmIGxhYmVsPworICAgICAgICBmYWxzZQorICAgIGVu
ZAorICAgIAorICAgIGRlZiBpbW1lZGlhdGU/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAg
CisgICAgZGVmIHJlZ2lzdGVyPworICAgICAgICBmYWxzZQorICAgIGVuZAorZW5kCisKK2NsYXNz
IEJhc2VJbmRleCA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6YmFzZSwgOmluZGV4LCA6c2NhbGUs
IDpvZmZzZXQKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBpbmRl
eCwgc2NhbGUsIG9mZnNldCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQGJh
c2UgPSBiYXNlCisgICAgICAgIEBpbmRleCA9IGluZGV4CisgICAgICAgIEBzY2FsZSA9IHNjYWxl
CisgICAgICAgIHJhaXNlIHVubGVzcyBbMSwgMiwgNCwgOF0ubWVtYmVyPyBAc2NhbGUKKyAgICAg
ICAgQG9mZnNldCA9IG9mZnNldAorICAgIGVuZAorICAgIAorICAgIGRlZiBzY2FsZVNoaWZ0Cisg
ICAgICAgIGNhc2Ugc2NhbGUKKyAgICAgICAgd2hlbiAxCisgICAgICAgICAgICAwCisgICAgICAg
IHdoZW4gMgorICAgICAgICAgICAgMQorICAgICAgICB3aGVuIDQKKyAgICAgICAgICAgIDIKKyAg
ICAgICAgd2hlbiA4CisgICAgICAgICAgICAzCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJh
aXNlICJCYWQgc2NhbGUgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5kCisgICAg
ZW5kCisgICAgCisgICAgZGVmIGNoaWxkcmVuCisgICAgICAgIFtAYmFzZSwgQGluZGV4LCBAb2Zm
c2V0XQorICAgIGVuZAorICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbgorICAgICAgICBCYXNlSW5k
ZXgubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5aWVsZCBAaW5kZXgpLCBAc2NhbGUs
ICh5aWVsZCBAb2Zmc2V0KSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICAi
I3tvZmZzZXQuZHVtcH1bI3tiYXNlLmR1bXB9LCAje2luZGV4LmR1bXB9LCAje3NjYWxlfV0iCisg
ICAgZW5kCisgICAgCisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIHRydWUKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVm
IGltbWVkaWF0ZT8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0
ZXI/CisgICAgICAgIGZhbHNlCisgICAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNz
IDwgTm9DaGlsZHJlbgorICAgIGF0dHJfcmVhZGVyIDphZGRyZXNzCisgICAgCisgICAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgYWRkcmVzcykKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICAgICAgQGFkZHJlc3MgPSBhZGRyZXNzCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAK
KyAgICAgICAgIiN7YWRkcmVzcy5kdW1wfVtdIgorICAgIGVuZAorICAgIAorICAgIGRlZiBhZGRy
ZXNzPworICAgICAgICB0cnVlCisgICAgZW5kCisgICAgCisgICAgZGVmIGxhYmVsPworICAgICAg
ICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBpbW1lZGlhdGU/CisgICAgICAgIGZhbHNl
CisgICAgZW5kCisgICAgCisgICAgZGVmIHJlZ2lzdGVyPworICAgICAgICBmYWxzZQorICAgIGVu
ZAorZW5kCisKK2NsYXNzIEluc3RydWN0aW9uIDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpvcGNv
ZGUsIDpvcGVyYW5kcworICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG9wY29k
ZSwgb3BlcmFuZHMpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBvcGNvZGUg
PSBvcGNvZGUKKyAgICAgICAgQG9wZXJhbmRzID0gb3BlcmFuZHMKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgY2hpbGRyZW4KKyAgICAgICAgb3BlcmFuZHMKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
bWFwQ2hpbGRyZW4oJnByb2MpCisgICAgICAgIEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBA
b3Bjb2RlLCBAb3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVt
cAorICAgICAgICAiXHQiICsgb3Bjb2RlLnRvX3MgKyAiICIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2
fCB2LmR1bXB9LmpvaW4oIiwgIikKKyAgICBlbmQKK2VuZAorCitjbGFzcyBFcnJvciA8IE5vQ2hp
bGRyZW4KKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgICAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICJcdGVycm9yIgor
ICAgIGVuZAorZW5kCisKK2NsYXNzIENvbnN0RGVjbCA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6
dmFyaWFibGUsIDp2YWx1ZQorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHZh
cmlhYmxlLCB2YWx1ZSkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQHZhcmlh
YmxlID0gdmFyaWFibGUKKyAgICAgICAgQHZhbHVlID0gdmFsdWUKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgY2hpbGRyZW4KKyAgICAgICAgW0B2YXJpYWJsZSwgQHZhbHVlXQorICAgIGVuZAorICAg
IAorICAgIGRlZiBtYXBDaGlsZHJlbgorICAgICAgICBDb25zdERlY2wubmV3KGNvZGVPcmlnaW4s
ICh5aWVsZCBAdmFyaWFibGUpLCAoeWllbGQgQHZhbHVlKSkKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgZHVtcAorICAgICAgICAiY29uc3QgI3tAdmFyaWFibGUuZHVtcH0gPSAje0B2YWx1ZS5kdW1w
fSIKKyAgICBlbmQKK2VuZAorCiskbGFiZWxNYXBwaW5nID0ge30KKworY2xhc3MgTGFiZWwgPCBO
b0NoaWxkcmVuCisgICAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBA
bmFtZSA9IG5hbWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmln
aW4sIG5hbWUpCisgICAgICAgIGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgICAgICAgIHJh
aXNlICJMYWJlbCBuYW1lIGNvbGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdb
bmFtZV0uaXNfYT8gTGFiZWwKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgJGxhYmVsTWFwcGlu
Z1tuYW1lXSA9IExhYmVsLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbmQKKyAgICAg
ICAgJGxhYmVsTWFwcGluZ1tuYW1lXQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAg
ICAgICIje25hbWV9OiIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsIDwgTm9DaGls
ZHJlbgorICAgIGF0dHJfcmVhZGVyIDpuYW1lCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQG5hbWUg
PSBuYW1lCisgICAgZW5kCisKKyAgICBAQHVuaXF1ZU5hbWVDb3VudGVyID0gMAorICAgIAorICAg
IGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgaWYgJGxhYmVsTWFw
cGluZ1tuYW1lXQorICAgICAgICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAje25h
bWV9IiB1bmxlc3MgJGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMb2NhbExhYmVsCisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBMb2NhbExhYmVsLm5ldyhj
b2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbmQKKyAgICAgICAgJGxhYmVsTWFwcGluZ1tuYW1l
XQorICAgIGVuZAorICAgIAorICAgIGRlZiBzZWxmLnVuaXF1ZShjb21tZW50KQorICAgICAgICBu
ZXdOYW1lID0gIl8je2NvbW1lbnR9IgorICAgICAgICBpZiAkbGFiZWxNYXBwaW5nW25ld05hbWVd
CisgICAgICAgICAgICB3aGlsZSAkbGFiZWxNYXBwaW5nW25ld05hbWUgPSAiXyN7QEB1bmlxdWVO
YW1lQ291bnRlcn1fI3tjb21tZW50fSJdCisgICAgICAgICAgICAgICAgQEB1bmlxdWVOYW1lQ291
bnRlciArPSAxCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAgICAgIGZvck5hbWUo
bmlsLCBuZXdOYW1lKQorICAgIGVuZAorICAgIAorICAgIGRlZiBjbGVhbk5hbWUKKyAgICAgICAg
aWYgbmFtZSA9fiAvXlwuLworICAgICAgICAgICAgIl8iICsgbmFtZVsxLi4tMV0KKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbmFtZQorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgZHVtcAorICAgICAgICAiI3tuYW1lfToiCisgICAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxS
ZWZlcmVuY2UgPCBOb2RlCisgICAgYXR0cl9yZWFkZXIgOmxhYmVsCisgICAgCisgICAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgICAgIEBsYWJlbCA9IGxhYmVsCisgICAgZW5kCisgICAgCisgICAgZGVmIGNoaWxkcmVuCisg
ICAgICAgIFtAbGFiZWxdCisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxkcmVuCisgICAg
ICAgIExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxhYmVsKSkKKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgbmFtZQorICAgICAgICBsYWJlbC5uYW1lCisgICAgZW5kCisgICAg
CisgICAgZGVmIGR1bXAKKyAgICAgICAgbGFiZWwubmFtZQorICAgIGVuZAorICAgIAorICAgIGRl
ZiBhZGRyZXNzPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBsYWJlbD8K
KyAgICAgICAgdHJ1ZQorICAgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2Ug
PCBOb0NoaWxkcmVuCisgICAgYXR0cl9yZWFkZXIgOmxhYmVsCisgICAgCisgICAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgbGFiZWwpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
ICAgIEBsYWJlbCA9IGxhYmVsCisgICAgZW5kCisgICAgCisgICAgZGVmIGNoaWxkcmVuCisgICAg
ICAgIFtAbGFiZWxdCisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxkcmVuCisgICAgICAg
IExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGFiZWwpKQorICAg
IGVuZAorICAgIAorICAgIGRlZiBuYW1lCisgICAgICAgIGxhYmVsLm5hbWUKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgZHVtcAorICAgICAgICBsYWJlbC5uYW1lCisgICAgZW5kCisgICAgCisgICAg
ZGVmIGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGxhYmVs
PworICAgICAgICB0cnVlCisgICAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UgPCBOb2RlCisg
ICAgYXR0cl9yZWFkZXIgOmxpc3QKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBsaXN0KQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAbGlzdCA9IGxpc3QK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRyZW4KKyAgICAgICAgbGlzdAorICAgIGVuZAor
ICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICAgICAgU2VxdWVuY2UubmV3KGNv
ZGVPcmlnaW4sIEBsaXN0Lm1hcCgmcHJvYykpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAK
KyAgICAgICAgbGlzdC5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIlxuIikKKyAgICBlbmQKK2Vu
ZAorCitjbGFzcyBUcnVlIDwgTm9DaGlsZHJlbgorICAgIGRlZiBpbml0aWFsaXplCisgICAgICAg
IHN1cGVyKG5pbCkKKyAgICBlbmQKKyAgICAKKyAgICBAQGluc3RhbmNlID0gVHJ1ZS5uZXcKKyAg
ICAKKyAgICBkZWYgc2VsZi5pbnN0YW5jZQorICAgICAgICBAQGluc3RhbmNlCisgICAgZW5kCisg
ICAgCisgICAgZGVmIHZhbHVlCisgICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
ZHVtcAorICAgICAgICAidHJ1ZSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZSA8IE5vQ2hp
bGRyZW4KKyAgICBkZWYgaW5pdGlhbGl6ZQorICAgICAgICBzdXBlcihuaWwpCisgICAgZW5kCisg
ICAgCisgICAgQEBpbnN0YW5jZSA9IEZhbHNlLm5ldworICAgIAorICAgIGRlZiBzZWxmLmluc3Rh
bmNlCisgICAgICAgIEBAaW5zdGFuY2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgdmFsdWUKKyAg
ICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICAiZmFsc2Ui
CisgICAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZUNsYXNzCisgICAgZGVmIGFzTm9kZQorICAgICAg
ICBUcnVlLmluc3RhbmNlCisgICAgZW5kCitlbmQKKworY2xhc3MgRmFsc2VDbGFzcworICAgIGRl
ZiBhc05vZGUKKyAgICAgICAgRmFsc2UuaW5zdGFuY2UKKyAgICBlbmQKK2VuZAorCitjbGFzcyBT
ZXR0aW5nIDwgTm9DaGlsZHJlbgorICAgIGF0dHJfcmVhZGVyIDpuYW1lCisgICAgCisgICAgZGVm
IGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikK
KyAgICAgICAgQG5hbWUgPSBuYW1lCisgICAgZW5kCisgICAgCisgICAgQEBtYXBwaW5nID0ge30K
KyAgICAKKyAgICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIHVu
bGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgICAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFNldHRp
bmcubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVuZAorICAgICAgICBAQG1hcHBpbmdb
bmFtZV0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICBuYW1lCisgICAgZW5k
CitlbmQKKworY2xhc3MgQW5kIDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQK
KyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICAg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQGxlZnQgPSBsZWZ0CisgICAgICAgIEByaWdo
dCA9IHJpZ2h0CisgICAgZW5kCisgICAgCisgICAgZGVmIGNoaWxkcmVuCisgICAgICAgIFtAbGVm
dCwgQHJpZ2h0XQorICAgIGVuZAorICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbgorICAgICAgICBB
bmQubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBAcmlnaHQpKQorICAgIGVu
ZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICIoI3tsZWZ0LmR1bXB9IGFuZCAje3JpZ2h0
LmR1bXB9KSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBPciA8IE5vZGUKKyAgICBhdHRyX3JlYWRl
ciA6bGVmdCwgOnJpZ2h0CisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVm
dCwgcmlnaHQpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBsZWZ0ID0gbGVm
dAorICAgICAgICBAcmlnaHQgPSByaWdodAorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJl
bgorICAgICAgICBbQGxlZnQsIEByaWdodF0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hp
bGRyZW4KKyAgICAgICAgT3IubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVmdCksICh5aWVsZCBA
cmlnaHQpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICIoI3tsZWZ0LmR1
bXB9IG9yICN7cmlnaHQuZHVtcH0pIgorICAgIGVuZAorZW5kCisKK2NsYXNzIE5vdCA8IE5vZGUK
KyAgICBhdHRyX3JlYWRlciA6Y2hpbGQKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3Jp
Z2luLCBjaGlsZCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQGNoaWxkID0g
Y2hpbGQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRyZW4KKyAgICAgICAgW0BsZWZ0LCBA
cmlnaHRdCisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxkcmVuCisgICAgICAgIE5vdC5u
ZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBjaGlsZCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1
bXAKKyAgICAgICAgIihub3QgI3tjaGlsZC5kdW1wfSkiCisgICAgZW5kCitlbmQKKworY2xhc3Mg
U2tpcCA8IE5vQ2hpbGRyZW4KKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgICAg
ICBzdXBlcihjb2RlT3JpZ2luKQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAg
ICJcdHNraXAiCisgICAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZSA8IE5vZGUKKyAgICBh
dHRyX3JlYWRlciA6cHJlZGljYXRlLCA6dGhlbkNhc2UKKyAgICBhdHRyX2FjY2Vzc29yIDplbHNl
Q2FzZQorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHByZWRpY2F0ZSwgdGhl
bkNhc2UpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBwcmVkaWNhdGUgPSBw
cmVkaWNhdGUKKyAgICAgICAgQHRoZW5DYXNlID0gdGhlbkNhc2UKKyAgICAgICAgQGVsc2VDYXNl
ID0gU2tpcC5uZXcoY29kZU9yaWdpbikKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRyZW4K
KyAgICAgICAgaWYgQGVsc2VDYXNlCisgICAgICAgICAgICBbQHByZWRpY2F0ZSwgQHRoZW5DYXNl
LCBAZWxzZUNhc2VdCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFtAcHJlZGljYXRlLCBAdGhl
bkNhc2VdCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbgor
ICAgICAgICBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQHByZWRpY2F0ZSksICh5
aWVsZCBAdGhlbkNhc2UpLCAoeWllbGQgQGVsc2VDYXNlKSkKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgZHVtcAorICAgICAgICAiaWYgI3twcmVkaWNhdGUuZHVtcH1cbiIgKyB0aGVuQ2FzZS5kdW1w
ICsgIlxuZWxzZVxuIiArIGVsc2VDYXNlLmR1bXAgKyAiXG5lbmQiCisgICAgZW5kCitlbmQKKwor
Y2xhc3MgTWFjcm8gPCBOb2RlCisgICAgYXR0cl9yZWFkZXIgOm5hbWUsIDp2YXJpYWJsZXMsIDpi
b2R5CisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgdmFyaWFibGVz
LCBib2R5KQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAbmFtZSA9IG5hbWUK
KyAgICAgICAgQHZhcmlhYmxlcyA9IHZhcmlhYmxlcworICAgICAgICBAYm9keSA9IGJvZHkKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRyZW4KKyAgICAgICAgQHZhcmlhYmxlcyArIFtAYm9k
eV0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hpbGRyZW4KKyAgICAgICAgTWFjcm8ubmV3
KGNvZGVPcmlnaW4sIEBuYW1lLCBAdmFyaWFibGVzLm1hcHt8dnwgeWllbGQgdn0sICh5aWVsZCBA
Ym9keSkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIm1hY3JvICN7bmFt
ZX0oIiArIHZhcmlhYmxlcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikgKyAiKVxuIiAr
IGJvZHkuZHVtcCArICJcbmVuZCIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBNYWNyb0NhbGwgPCBO
b2RlCisgICAgYXR0cl9yZWFkZXIgOm5hbWUsIDpvcGVyYW5kcworICAgIAorICAgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAgICBzdXBlcihjb2RlT3Jp
Z2luKQorICAgICAgICBAbmFtZSA9IG5hbWUKKyAgICAgICAgQG9wZXJhbmRzID0gb3BlcmFuZHMK
KyAgICAgICAgcmFpc2UgdW5sZXNzIEBvcGVyYW5kcworICAgICAgICBAb3BlcmFuZHMuZWFjaHt8
dnwgcmFpc2UgdW5sZXNzIHZ9CisgICAgZW5kCisgICAgCisgICAgZGVmIGNoaWxkcmVuCisgICAg
ICAgIEBvcGVyYW5kcworICAgIGVuZAorICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykK
KyAgICAgICAgTWFjcm9DYWxsLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQG9wZXJhbmRzLm1hcCgm
cHJvYykpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIlx0I3tuYW1lfSgi
ICsgb3BlcmFuZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpICsgIikiCisgICAgZW5k
CitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2VuZHMu
cmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYmFja2Vu
ZHMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9i
YWNrZW5kcy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NiBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXJtdjciCityZXF1aXJlICJhc3QiCity
ZXF1aXJlICJ4ODYiCisKK0JBQ0tFTkRTID0KKyAgICBbCisgICAgICJYODYiLAorICAgICAiQVJN
djciCisgICAgXQorCisjIEtlZXAgdGhlIHNldCBvZiB3b3JraW5nIGJhY2tlbmRzIHNlcGFyYXRl
IGZyb20gdGhlIHNldCBvZiBiYWNrZW5kcyB0aGF0IG1pZ2h0IGJlCisjIHN1cHBvcnRlZC4gVGhp
cyBpcyBncmVhdCBiZWNhdXNlIHRoZSBCQUNLRU5EUyBsaXN0IGlzIGFsbW9zdCBsaWtlIGEgcmVz
ZXJ2ZWQKKyMgd29yZHMgbGlzdCwgaW4gdGhhdCBpdCBjYXVzZXMgc2V0dGluZ3MgcmVzb2x1dGlv
biB0byB0cmVhdCB0aG9zZSB3b3JkcyBzcGVjaWFsbHkuCisjIEhlbmNlIHRoaXMgbGV0cyB1cyBz
ZXQgYXNpZGUgdGhlIG5hbWUgb2YgYSBiYWNrZW5kIHdlIG1pZ2h0IHdhbnQgdG8gc3VwcG9ydCBp
bgorIyB0aGUgZnV0dXJlIHdoaWxlIG5vdCBhY3R1YWxseSBzdXBwb3J0aW5nIHRoZSBiYWNrZW5k
IHlldC4KK1dPUktJTkdfQkFDS0VORFMgPQorICAgIFsKKyAgICAgIlg4NiIsCisgICAgICJBUk12
NyIKKyAgICBdCisKK0JBQ0tFTkRfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgnICsgQkFDS0VO
RFMuam9pbignKXwoJykgKyAnKVxcWicpCisKK2NsYXNzIE5vZGUKKyAgICBkZWYgbG93ZXIobmFt
ZSkKKyAgICAgICAgc2VuZCgibG93ZXIiICsgbmFtZSkKKyAgICBlbmQKK2VuZAorCisjIE92ZXJy
aWRlcyBmb3IgbG93ZXIoKSBmb3IgdGhvc2Ugbm9kZXMgdGhhdCBhcmUgYmFja2VuZC1hZ25vc3Rp
YworCitjbGFzcyBMYWJlbAorICAgIGRlZiBsb3dlcihuYW1lKQorICAgICAgICAkYXNtLnB1dHNM
YWJlbChzZWxmLm5hbWVbMS4uLTFdKQorICAgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwK
KyAgICBkZWYgbG93ZXIobmFtZSkKKyAgICAgICAgJGFzbS5wdXRzTG9jYWxMYWJlbCAiX29mZmxp
bmVhc21fI3tzZWxmLm5hbWVbMS4uLTFdfSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBMYWJlbFJl
ZmVyZW5jZQorICAgIGRlZiBhc21MYWJlbAorICAgICAgICBBc3NlbWJsZXIubGFiZWxSZWZlcmVu
Y2UobmFtZVsxLi4tMV0pCisgICAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxMYWJlbFJlZmVyZW5j
ZQorICAgIGRlZiBhc21MYWJlbAorICAgICAgICBBc3NlbWJsZXIubG9jYWxMYWJlbFJlZmVyZW5j
ZSgiX29mZmxpbmVhc21fIituYW1lWzEuLi0xXSkKKyAgICBlbmQKK2VuZAorCitjbGFzcyBTa2lw
CisgICAgZGVmIGxvd2VyKG5hbWUpCisgICAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAg
ICBkZWYgbG93ZXIobmFtZSkKKyAgICAgICAgaWYgcmVzcG9uZF90bz8gImxvd2VyI3tuYW1lfSIK
KyAgICAgICAgICAgIHNlbmQoImxvd2VyI3tuYW1lfSIpCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIEBsaXN0LmVhY2ggeworICAgICAgICAgICAgICAgIHwgbm9kZSB8CisgICAgICAgICAgICAg
ICAgbm9kZS5sb3dlcihuYW1lKQorICAgICAgICAgICAgfQorICAgICAgICBlbmQKKyAgICBlbmQK
K2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9v
ZmZzZXRfZXh0cmFjdG9yLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9y
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzNiBAQAorIyEvdXNyL2Jpbi9lbnYgcnVieQor
CisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCiskOiA8PCBGaWxlLmRpcm5h
bWUoX19GSUxFX18pCisKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAiZGlnZXN0L3NoYTEi
CityZXF1aXJlICJvZmZzZXRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWlyZSAic2VsZl9oYXNo
IgorcmVxdWlyZSAic2V0dGluZ3MiCityZXF1aXJlICJ0cmFuc2Zvcm0iCisKK2lucHV0RmxubSA9
IEFSR1Yuc2hpZnQKK291dHB1dEZsbm0gPSBBUkdWLnNoaWZ0CisKKyRzdGRlcnIucHV0cyAib2Zm
bGluZWFzbTogUGFyc2luZyAje2lucHV0RmxubX0gYW5kIGNyZWF0aW5nIG9mZnNldCBleHRyYWN0
b3IgI3tvdXRwdXRGbG5tfS4iCisKK2RlZiBlbWl0TWFnaWNOdW1iZXIKKyAgICBPRkZTRVRfTUFH
SUNfTlVNQkVSUy5lYWNoIHsKKyAgICAgICAgfCBudW1iZXIgfAorICAgICAgICAkb3V0cHV0LnB1
dHMgIiN7bnVtYmVyfSwiCisgICAgfQorZW5kCisKK2lucHV0RGF0YSA9IElPOjpyZWFkKGlucHV0
RmxubSkKK2lucHV0SGFzaCA9ICIvLyBvZmZsaW5lYXNtIGlucHV0IGhhc2g6ICN7RGlnZXN0OjpT
SEExLmhleGRpZ2VzdChpbnB1dERhdGEpfSAje3NlbGZIYXNofSIKKworaWYgRmlsZVRlc3QuZXhp
c3Q/IG91dHB1dEZsbm0KKyAgICBGaWxlLm9wZW4ob3V0cHV0RmxubSwgInIiKSB7CisgICAgICAg
IHwgaW5wIHwKKyAgICAgICAgZmlyc3RMaW5lID0gaW5wLmdldHMKKyAgICAgICAgaWYgZmlyc3RM
aW5lIGFuZCBmaXJzdExpbmUuY2hvbXAgPT0gaW5wdXRIYXNoCisgICAgICAgICAgICAkc3RkZXJy
LnB1dHMgIm9mZmxpbmVhc206IE5vdGhpbmcgY2hhbmdlZC4iCisgICAgICAgICAgICBleGl0IDAK
KyAgICAgICAgZW5kCisgICAgfQorZW5kCisKK29yaWdpbmFsQVNUID0gcGFyc2UobGV4KGlucHV0
RGF0YSkpCisKKyMKKyMgT3B0aW1pemUgdGhlIEFTVCB0byBtYWtlIGNvbmZpZ3VyYXRpb24gZXh0
cmFjdGlvbiBmYXN0ZXIuIFRoaXMgcmVkdWNlcyB0aGUgQVNUIHRvIGEgZm9ybQorIyB0aGF0IG9u
bHkgY29udGFpbnMgdGhlIHRoaW5ncyB0aGF0IG1hdHRlciBmb3Igb3VyIHB1cnBvc2VzOiBvZmZz
ZXRzLCBzaXplcywgYW5kIGlmCisjIHN0YXRlbWVudHMuCisjCisKK2NsYXNzIE5vZGUKKyAgICBk
ZWYgb2Zmc2V0c1BydW5lVG8oc2VxdWVuY2UpCisgICAgICAgIGNoaWxkcmVuLmVhY2ggeworICAg
ICAgICAgICAgfCBjaGlsZCB8CisgICAgICAgICAgICBjaGlsZC5vZmZzZXRzUHJ1bmVUbyhzZXF1
ZW5jZSkKKyAgICAgICAgfQorICAgIGVuZAorICAgIAorICAgIGRlZiBvZmZzZXRzUHJ1bmUKKyAg
ICAgICAgcmVzdWx0ID0gU2VxdWVuY2UubmV3KGNvZGVPcmlnaW4sIFtdKQorICAgICAgICBvZmZz
ZXRzUHJ1bmVUbyhyZXN1bHQpCisgICAgICAgIHJlc3VsdAorICAgIGVuZAorZW5kCisKK2NsYXNz
IElmVGhlbkVsc2UKKyAgICBkZWYgb2Zmc2V0c1BydW5lVG8oc2VxdWVuY2UpCisgICAgICAgIGlm
VGhlbkVsc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHRoZW5DYXNl
Lm9mZnNldHNQcnVuZSkKKyAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IGVsc2VDYXNlLm9m
ZnNldHNQcnVuZQorICAgICAgICBzZXF1ZW5jZS5saXN0IDw8IGlmVGhlbkVsc2UKKyAgICBlbmQK
K2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXQKKyAgICBkZWYgb2Zmc2V0c1BydW5lVG8oc2VxdWVu
Y2UpCisgICAgICAgIHNlcXVlbmNlLmxpc3QgPDwgc2VsZgorICAgIGVuZAorZW5kCisKK2NsYXNz
IFNpemVvZgorICAgIGRlZiBvZmZzZXRzUHJ1bmVUbyhzZXF1ZW5jZSkKKyAgICAgICAgc2VxdWVu
Y2UubGlzdCA8PCBzZWxmCisgICAgZW5kCitlbmQKKworcHJ1bmVkQVNUID0gb3JpZ2luYWxBU1Qu
b2Zmc2V0c1BydW5lCisKK0ZpbGUub3BlbihvdXRwdXRGbG5tLCAidyIpIHsKKyAgICB8IG91dHAg
fAorICAgICRvdXRwdXQgPSBvdXRwCisgICAgb3V0cC5wdXRzIGlucHV0SGFzaAorICAgIGVtaXRD
b2RlSW5BbGxDb25maWd1cmF0aW9ucyhwcnVuZWRBU1QpIHsKKyAgICAgICAgfCBzZXR0aW5ncywg
YXN0LCBiYWNrZW5kLCBpbmRleCB8CisgICAgICAgIG9mZnNldHNMaXN0ID0gYXN0LmZpbHRlcihT
dHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorICAgICAgICBzaXplc0xpc3QgPSBhc3QuZmlsdGVyKFNp
emVvZikudW5pcS5zb3J0CisgICAgICAgIAorICAgICAgICBsZW5ndGggPSAoT0ZGU0VUX01BR0lD
X05VTUJFUlMuc2l6ZSArIDEpICogKDEgKyBvZmZzZXRzTGlzdC5zaXplICsgc2l6ZXNMaXN0LnNp
emUpCisgICAgICAgIAorICAgICAgICBvdXRwLnB1dHMgInN0YXRpYyBjb25zdCB1bnNpZ25lZCBl
eHRyYWN0b3JUYWJsZVsje2xlbmd0aH1dID0geyIKKyAgICAgICAgZW1pdE1hZ2ljTnVtYmVyCisg
ICAgICAgIG91dHAucHV0cyAiI3tpbmRleH0sIgorICAgICAgICBvZmZzZXRzTGlzdC5lYWNoIHsK
KyAgICAgICAgICAgIHwgb2Zmc2V0IHwKKyAgICAgICAgICAgIGVtaXRNYWdpY051bWJlcgorICAg
ICAgICAgICAgb3V0cC5wdXRzICJPRkZMSU5FX0FTTV9PRkZTRVRPRigje29mZnNldC5zdHJ1Y3R9
LCAje29mZnNldC5maWVsZH0pLCIKKyAgICAgICAgfQorICAgICAgICBzaXplc0xpc3QuZWFjaCB7
CisgICAgICAgICAgICB8IG9mZnNldCB8CisgICAgICAgICAgICBlbWl0TWFnaWNOdW1iZXIKKyAg
ICAgICAgICAgIG91dHAucHV0cyAic2l6ZW9mKCN7b2Zmc2V0LnN0cnVjdH0pLCIKKyAgICAgICAg
fQorICAgICAgICBvdXRwLnB1dHMgIn07IgorICAgIH0KK30KKworJHN0ZGVyci5wdXRzICJvZmZs
aW5lYXNtOiBvZmZzZXQgZXh0cmFjdG9yICN7b3V0cHV0RmxubX0gc3VjY2Vzc2Z1bGx5IGdlbmVy
YXRlZC4iCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0
aW9ucy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9p
bnN0cnVjdGlvbnMucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9pbnN0cnVjdGlvbnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjE3IEBACisj
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjIEludGVyZXN0aW5nIGludmFy
aWFudCwgd2hpY2ggd2UgdGFrZSBhZHZhbnRhZ2Ugb2Y6IGJyYW5jaGluZyBpbnN0cnVjdGlvbnMK
KyMgYWx3YXlzIGJlZ2luIHdpdGggImIiLCBhbmQgbm8gbm9uLWJyYW5jaGluZyBpbnN0cnVjdGlv
bnMgYmVnaW4gd2l0aCAiYiIuCisjIFRlcm1pbmFsIGluc3RydWN0aW9ucyBhcmUgImptcCIgYW5k
ICJyZXQiLgorCitNQUNST19JTlNUUlVDVElPTlMgPQorICAgIFsKKyAgICAgImFkZGkiLAorICAg
ICAiYW5kaSIsCisgICAgICJsc2hpZnRpIiwKKyAgICAgIm11bGkiLAorICAgICAibmVnaSIsCisg
ICAgICJub3RpIiwKKyAgICAgIm9yaSIsCisgICAgICJyc2hpZnRpIiwKKyAgICAgInVyc2hpZnRp
IiwKKyAgICAgInN1YmkiLAorICAgICAieG9yaSIsCisgICAgICJsb2FkaSIsCisgICAgICJsb2Fk
YiIsCisgICAgICJsb2FkYnMiLAorICAgICAibG9hZGgiLAorICAgICAibG9hZGhzIiwKKyAgICAg
InN0b3JlaSIsCisgICAgICJzdG9yZWIiLAorICAgICAibG9hZGQiLAorICAgICAibW92ZWQiLAor
ICAgICAic3RvcmVkIiwKKyAgICAgImFkZGQiLAorICAgICAiZGl2ZCIsCisgICAgICJzdWJkIiwK
KyAgICAgIm11bGQiLAorICAgICAic3FydGQiLAorICAgICAiY2kyZCIsCisgICAgICJmaWkyZCIs
ICMgdXNhZ2U6IGZpaTJkIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBiaXRzPiwgPGdwciB3
aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxmcHI+CisgICAgICJmZDJpaSIsICMgdXNhZ2U6
IGZkMmlpIDxmcHI+LCA8Z3ByIHdpdGggbGVhc3Qgc2lnbmlmaWNhbnQgYml0cz4sIDxncHIgd2l0
aCBtb3N0IHNpZ25pZmljYW50IGJpdHM+CisgICAgICJiZGVxIiwKKyAgICAgImJkbmVxIiwKKyAg
ICAgImJkZ3QiLAorICAgICAiYmRndGVxIiwKKyAgICAgImJkbHQiLAorICAgICAiYmRsdGVxIiwK
KyAgICAgImJkZXF1biIsCisgICAgICJiZG5lcXVuIiwKKyAgICAgImJkZ3R1biIsCisgICAgICJi
ZGd0ZXF1biIsCisgICAgICJiZGx0dW4iLAorICAgICAiYmRsdGVxdW4iLAorICAgICAiYnRkMmki
LAorICAgICAidGQyaSIsCisgICAgICJiY2QyaSIsCisgICAgICJtb3ZkeiIsCisgICAgICJwb3Ai
LAorICAgICAicHVzaCIsCisgICAgICJtb3ZlIiwKKyAgICAgInN4aTJwIiwKKyAgICAgInp4aTJw
IiwKKyAgICAgIm5vcCIsCisgICAgICJiaWVxIiwKKyAgICAgImJpbmVxIiwKKyAgICAgImJpYSIs
CisgICAgICJiaWFlcSIsCisgICAgICJiaWIiLAorICAgICAiYmliZXEiLAorICAgICAiYmlndCIs
CisgICAgICJiaWd0ZXEiLAorICAgICAiYmlsdCIsCisgICAgICJiaWx0ZXEiLAorICAgICAiYmJl
cSIsCisgICAgICJiYm5lcSIsCisgICAgICJiYmEiLAorICAgICAiYmJhZXEiLAorICAgICAiYmJi
IiwKKyAgICAgImJiYmVxIiwKKyAgICAgImJiZ3QiLAorICAgICAiYmJndGVxIiwKKyAgICAgImJi
bHQiLAorICAgICAiYmJsdGVxIiwKKyAgICAgImJ0aW8iLAorICAgICAiYnRpcyIsCisgICAgICJi
dGl6IiwKKyAgICAgImJ0aW56IiwKKyAgICAgImJ0Ym8iLAorICAgICAiYnRicyIsCisgICAgICJi
dGJ6IiwKKyAgICAgImJ0Ym56IiwKKyAgICAgImptcCIsCisgICAgICJiYWRkaW8iLAorICAgICAi
YmFkZGlzIiwKKyAgICAgImJhZGRpeiIsCisgICAgICJiYWRkaW56IiwKKyAgICAgImJzdWJpbyIs
CisgICAgICJic3ViaXMiLAorICAgICAiYnN1Yml6IiwKKyAgICAgImJzdWJpbnoiLAorICAgICAi
Ym11bGlvIiwKKyAgICAgImJtdWxpcyIsCisgICAgICJibXVsaXoiLAorICAgICAiYm11bGlueiIs
CisgICAgICJib3JpbyIsCisgICAgICJib3JpcyIsCisgICAgICJib3JpeiIsCisgICAgICJib3Jp
bnoiLAorICAgICAiYnJlYWsiLAorICAgICAiY2FsbCIsCisgICAgICJyZXQiLAorICAgICAiY2ll
cSIsCisgICAgICJjaW5lcSIsCisgICAgICJjaWEiLAorICAgICAiY2lhZXEiLAorICAgICAiY2li
IiwKKyAgICAgImNpYmVxIiwKKyAgICAgImNpZ3QiLAorICAgICAiY2lndGVxIiwKKyAgICAgImNp
bHQiLAorICAgICAiY2lsdGVxIiwKKyAgICAgInRpbyIsCisgICAgICJ0aXMiLAorICAgICAidGl6
IiwKKyAgICAgInRpbnoiLAorICAgICAidGJvIiwKKyAgICAgInRicyIsCisgICAgICJ0YnoiLAor
ICAgICAidGJueiIsCisgICAgICJwZWVrIiwKKyAgICAgInBva2UiLAorICAgICAiYnBlcSIsCisg
ICAgICJicG5lcSIsCisgICAgICJicGEiLAorICAgICAiYnBhZXEiLAorICAgICAiYnBiIiwKKyAg
ICAgImJwYmVxIiwKKyAgICAgImJwZ3QiLAorICAgICAiYnBndGVxIiwKKyAgICAgImJwbHQiLAor
ICAgICAiYnBsdGVxIiwKKyAgICAgImFkZHAiLAorICAgICAiYW5kcCIsCisgICAgICJvcnAiLAor
ICAgICAic3VicCIsCisgICAgICJ4b3JwIiwKKyAgICAgImxvYWRwIiwKKyAgICAgImNwZXEiLAor
ICAgICAiY3BuZXEiLAorICAgICAiY3BhIiwKKyAgICAgImNwYWVxIiwKKyAgICAgImNwYiIsCisg
ICAgICJjcGJlcSIsCisgICAgICJjcGd0IiwKKyAgICAgImNwZ3RlcSIsCisgICAgICJjcGx0IiwK
KyAgICAgImNwbHRlcSIsCisgICAgICJzdG9yZXAiLAorICAgICAiYnRwbyIsCisgICAgICJidHBz
IiwKKyAgICAgImJ0cHoiLAorICAgICAiYnRwbnoiLAorICAgICAiYmFkZHBvIiwKKyAgICAgImJh
ZGRwcyIsCisgICAgICJiYWRkcHoiLAorICAgICAiYmFkZHBueiIsCisgICAgICJibyIsCisgICAg
ICJicyIsCisgICAgICJieiIsCisgICAgICJibnoiLAorICAgICAibGVhaSIsCisgICAgICJsZWFw
IiwKKyAgICBdCisKK1g4Nl9JTlNUUlVDVElPTlMgPQorICAgIFsKKyAgICAgImNkcWkiLAorICAg
ICAiaWRpdmkiCisgICAgXQorCitBUk12N19JTlNUUlVDVElPTlMgPQorICAgIFsKKyAgICAgInNt
dWxsaSIsCisgICAgICJhZGRpcyIsCisgICAgICJzdWJpcyIsCisgICAgICJvcmlzIgorICAgIF0K
KworSU5TVFJVQ1RJT05TID0gTUFDUk9fSU5TVFJVQ1RJT05TICsgWDg2X0lOU1RSVUNUSU9OUyAr
IEFSTXY3X0lOU1RSVUNUSU9OUworCitJTlNUUlVDVElPTl9QQVRURVJOID0gUmVnZXhwLm5ldygn
XFxBKCgnICsgSU5TVFJVQ1RJT05TLmpvaW4oJyl8KCcpICsgJykpXFxaJykKKworZGVmIGlzQnJh
bmNoKGluc3RydWN0aW9uKQorICAgIGluc3RydWN0aW9uID1+IC9eYi8KK2VuZAorCitkZWYgaGFz
RmFsbFRocm91Z2goaW5zdHJ1Y3Rpb24pCisgICAgaW5zdHJ1Y3Rpb24gIT0gInJldCIgYW5kIGlu
c3RydWN0aW9uICE9ICJqbXAiCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMu
cmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZz
ZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAor
IyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIwor
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIwor
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworTUFHSUNfTlVNQkVSUyA9IFsg
MHhlYzU3N2FjNywgMHgwZmY1ZTc1NSBdCisKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vb2Zmc2V0cy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vb2Zmc2V0cy5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNTAg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIK
K3JlcXVpcmUgIm9mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzIgorCitPRkZTRVRfTUFHSUNfTlVN
QkVSUyA9IFsgMHhlYzU3N2FjNywgMHgwZmY1ZTc1NSBdCisKKyMKKyMgb2Zmc2V0c0xpc3QoYXN0
KQorIyBzaXplc0xpc3QoYXN0KQorIworIyBSZXR1cm5zIGEgbGlzdCBvZiBvZmZzZXRzIGFuZCBz
aXplcyB1c2VkIGJ5IHRoZSBBU1QuCisjCisKK2RlZiBvZmZzZXRzTGlzdChhc3QpCisgICAgYXN0
LmZpbHRlcihTdHJ1Y3RPZmZzZXQpLnVuaXEuc29ydAorZW5kCisKK2RlZiBzaXplc0xpc3QoYXN0
KQorICAgIGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKK2VuZAorCisjCisjIG9mZnNldHNB
bmRDb25maWd1cmF0aW9uSW5kZXgoYXN0LCBmaWxlKSAtPgorIyAgICAgW29mZnNldHMsIGluZGV4
XQorIworIyBQYXJzZXMgdGhlIG9mZnNldHMgZnJvbSBhIGZpbGUgYW5kIHJldHVybnMgYSBsaXN0
IG9mIG9mZnNldHMgYW5kIHRoZQorIyBpbmRleCBvZiB0aGUgY29uZmlndXJhdGlvbiB0aGF0IGlz
IHZhbGlkIGluIHRoaXMgYnVpbGQgdGFyZ2V0LgorIworCitkZWYgb2Zmc2V0c0FuZENvbmZpZ3Vy
YXRpb25JbmRleChmaWxlKQorICAgIGluZGV4ID0gbmlsCisgICAgb2Zmc2V0cyA9IFtdCisgICAg
ZW5kaWFubmVzc01hcmtlckJ5dGVzID0gbmlsCisgICAgCisgICAgZGVmIHJlYWRJbnQoZW5kaWFu
bmVzcywgaW5wKQorICAgICAgICBieXRlcyA9IFtdCisgICAgICAgIDQudGltZXMgeworICAgICAg
ICAgICAgYnl0ZXMgPDwgaW5wLmdldGJ5dGUKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
aWYgZW5kaWFubmVzcyA9PSA6bGl0dGxlCisgICAgICAgICAgICAjIExpdHRsZSBlbmRpYW4KKyAg
ICAgICAgICAgIChieXRlc1swXSA8PCAwIHwKKyAgICAgICAgICAgICBieXRlc1sxXSA8PCA4IHwK
KyAgICAgICAgICAgICBieXRlc1syXSA8PCAxNiB8CisgICAgICAgICAgICAgYnl0ZXNbM10gPDwg
MjQpCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICMgQmlnIGVuZGlhbgorICAgICAgICAgICAg
KGJ5dGVzWzBdIDw8IDI0IHwKKyAgICAgICAgICAgICBieXRlc1sxXSA8PCAxNiB8CisgICAgICAg
ICAgICAgYnl0ZXNbMl0gPDwgOCB8CisgICAgICAgICAgICAgYnl0ZXNbM10gPDwgMCkKKyAgICAg
ICAgZW5kCisgICAgZW5kCisgICAgCisgICAgWzpsaXR0bGUsIDpiaWddLmVhY2ggeworICAgICAg
ICB8IGVuZGlhbm5lc3MgfAorICAgICAgICBtYWdpY0J5dGVzID0gW10KKyAgICAgICAgTUFHSUNf
TlVNQkVSUy5lYWNoIHsKKyAgICAgICAgICAgIHwgbnVtYmVyIHwKKyAgICAgICAgICAgIGN1cnJl
bnRCeXRlcyA9IFtdCisgICAgICAgICAgICA0LnRpbWVzIHsKKyAgICAgICAgICAgICAgICBjdXJy
ZW50Qnl0ZXMgPDwgKG51bWJlciAmIDB4ZmYpCisgICAgICAgICAgICAgICAgbnVtYmVyID4+PSA4
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiBlbmRpYW5uZXNzID09IDpiaWcKKyAgICAg
ICAgICAgICAgICBjdXJyZW50Qnl0ZXMucmV2ZXJzZSEKKyAgICAgICAgICAgIGVuZAorICAgICAg
ICAgICAgbWFnaWNCeXRlcyArPSBjdXJyZW50Qnl0ZXMKKyAgICAgICAgfQorICAgICAgICAKKyAg
ICAgICAgRmlsZS5vcGVuKGZpbGUsICJyIikgeworICAgICAgICAgICAgfCBpbnAgfAorICAgICAg
ICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAg
ICAgIGJ5dGUgPSBpbnAuZ2V0Ynl0ZQorICAgICAgICAgICAgICAgIGJyZWFrIHVubGVzcyBieXRl
CisgICAgICAgICAgICAgICAgaWYgYnl0ZSA9PSBtYWdpY0J5dGVzW3doZXJlSW5NYXJrZXJdCisg
ICAgICAgICAgICAgICAgICAgIHdoZXJlSW5NYXJrZXIgKz0gMQorICAgICAgICAgICAgICAgICAg
ICBpZiB3aGVyZUluTWFya2VyID09IG1hZ2ljQnl0ZXMuc2l6ZQorICAgICAgICAgICAgICAgICAg
ICAgICAgIyBXZSBoYXZlIGEgbWF0Y2ghIElmIHdlIGhhdmUgbm90IHlldCByZWFkIHRoZSBlbmRp
YW5uZXNzIG1hcmtlciBhbmQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZW4g
cmVhZCB0aG9zZSBub3c7IG90aGVyd2lzZSByZWFkIGFuIG9mZnNldC4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGluZGV4CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSByZWFkSW50KGVuZGlhbm5lc3MsIGlucCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBv
ZmZzZXRzIDw8IHJlYWRJbnQoZW5kaWFubmVzcywgaW5wKQorICAgICAgICAgICAgICAgICAgICAg
ICAgZW5kCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAg
IHdoZXJlSW5NYXJrZXIgPSAwCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAg
ICAgICAgICBlbmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
YnJlYWsgaWYgaW5kZXgKKyAgICB9CisgICAgCisgICAgcmFpc2UgdW5sZXNzIGluZGV4CisgICAg
CisgICAgW29mZnNldHMsIGluZGV4XQorZW5kCisKKyMKKyMgYnVpbGRPZmZzZXRzTWFwKGFzdCwg
b2Zmc2V0c0xpc3QpIC0+IFtvZmZzZXRzLCBzaXplc10KKyMKKyMgQnVpbGRzIGEgbWFwcGluZyBi
ZXR3ZWVuIFN0cnVjdE9mZnNldCBub2RlcyBhbmQgdGhlaXIgdmFsdWVzLgorIworCitkZWYgYnVp
bGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpCisgICAgb2Zmc2V0c01hcCA9IHt9CisgICAg
c2l6ZXNNYXAgPSB7fQorICAgIGFzdE9mZnNldHNMaXN0ID0gb2Zmc2V0c0xpc3QoYXN0KQorICAg
IGFzdFNpemVzTGlzdCA9IHNpemVzTGlzdChhc3QpCisgICAgcmFpc2UgdW5sZXNzIGFzdE9mZnNl
dHNMaXN0LnNpemUgKyBhc3RTaXplc0xpc3Quc2l6ZSA9PSBvZmZzZXRzTGlzdC5zaXplCisgICAg
b2Zmc2V0c0xpc3QoYXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAgICAgICB8IHN0cnVjdE9mZnNl
dCwgaW5kZXggfAorICAgICAgICBvZmZzZXRzTWFwW3N0cnVjdE9mZnNldF0gPSBvZmZzZXRzTGlz
dC5zaGlmdAorICAgIH0KKyAgICBzaXplc0xpc3QoYXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAg
ICAgICB8IHNpemVvZiwgaW5kZXggfAorICAgICAgICBzaXplc01hcFtzaXplb2ZdID0gb2Zmc2V0
c0xpc3Quc2hpZnQKKyAgICB9CisgICAgW29mZnNldHNNYXAsIHNpemVzTWFwXQorZW5kCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29wdC5yYgo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vcHQucmIJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vcHQucmIJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTM0IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCity
ZXF1aXJlICJhc3QiCisKKyMKKyMgIk9wdGltaXphdGlvbiIgcGFzc2VzLiBUaGVzZSBhcmUgdXNl
ZCB0byBsb3dlciB0aGUgcmVwcmVzZW50YXRpb24gZm9yCisjIGJhY2tlbmRzIHRoYXQgY2Fubm90
IGhhbmRsZSBzb21lIG9mIG91ciBoaWdoZXItbGV2ZWwgaW5zdHJ1Y3Rpb25zLgorIworCisjCisj
IEEgdGVtcG9yYXJ5IC0gYSB2YXJpYWJsZSB0aGF0IHdpbGwgYmUgYWxsb2NhdGVkIHRvIGEgcmVn
aXN0ZXIgYWZ0ZXIgd2UncmUKKyMgZG9uZS4KKyMKKworY2xhc3MgTm9kZQorICAgIGRlZiByZXBs
YWNlVGVtcG9yYXJpZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgICAgIG1hcENoaWxkcmVuIHsK
KyAgICAgICAgICAgIHwgbm9kZSB8CisgICAgICAgICAgICBub2RlLnJlcGxhY2VUZW1wb3Jhcmll
c1dpdGhSZWdpc3RlcnMoa2luZCkKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNzIFRt
cCA8IE5vQ2hpbGRyZW4KKyAgICBhdHRyX3JlYWRlciA6Zmlyc3RNZW50aW9uLCA6bGFzdE1lbnRp
b24KKyAgICBhdHRyX3JlYWRlciA6a2luZAorICAgIGF0dHJfYWNjZXNzb3IgOnJlZ2lzdGVyCisK
KyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBraW5kKQorICAgICAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgICAgICBAa2luZCA9IGtpbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVt
cAorICAgICAgICAiJHRtcCN7b2JqZWN0X2lkfSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWVu
dGlvbiEocG9zaXRpb24pCisgICAgICAgIGlmIG5vdCBAZmlyc3RNZW50aW9uIG9yIHBvc2l0aW9u
IDwgQGZpcnN0TWVudGlvbgorICAgICAgICAgICAgQGZpcnN0TWVudGlvbiA9IHBvc2l0aW9uCisg
ICAgICAgIGVuZAorICAgICAgICBpZiBub3QgQGxhc3RNZW50aW9uIG9yIHBvc2l0aW9uID4gQGxh
c3RNZW50aW9uCisgICAgICAgICAgICBAbGFzdE1lbnRpb24gPSBwb3NpdGlvbgorICAgICAgICBl
bmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVwbGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lzdGVy
cyhraW5kKQorICAgICAgICBpZiBAa2luZCA9PSBraW5kCisgICAgICAgICAgICByYWlzZSAiRGlk
IG5vdCBhbGxvY2F0ZSByZWdpc3RlciB0byB0ZW1wb3JhcnkgYXQgI3tjb2RlT3JpZ2luU3RyaW5n
fSIgdW5sZXNzIEByZWdpc3RlcgorICAgICAgICAgICAgQHJlZ2lzdGVyCisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHNlbGYKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIGFk
ZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGxhYmVsPworICAg
ICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBpbW1lZGlhdGU/CisgICAgICAgIGZh
bHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIHJlZ2lzdGVyPworICAgICAgICB0cnVlCisgICAg
ZW5kCitlbmQKKworIyBBc3NpZ24gcmVnaXN0ZXJzIHRvIHRlbXBvcmFyaWVzLCBieSBmaW5kaW5n
IHdoaWNoIHRlbXBvcmFyaWVzIGludGVyZmVyZQorIyB3aXRoIGVhY2ggb3RoZXIuIE5vdGUgdGhh
dCB0aGlzIHJlbGllcyBvbiB0ZW1wb3JhcnkgbGl2ZSByYW5nZXMgbm90IGNyb3NzaW5nCisjIGJh
c2ljIGJsb2NrIGJvdW5kYXJpZXMuCisKK2RlZiBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFyaWVz
KGxpc3QsIGtpbmQsIHJlZ2lzdGVycykKKyAgICBsaXN0LmVhY2hfd2l0aF9pbmRleCB7CisgICAg
ICAgIHwgbm9kZSwgaW5kZXggfAorICAgICAgICBub2RlLmZpbHRlcihUbXApLnVuaXEuZWFjaCB7
CisgICAgICAgICAgICB8IHRtcCB8CisgICAgICAgICAgICBpZiB0bXAua2luZCA9PSBraW5kCisg
ICAgICAgICAgICAgICAgdG1wLm1lbnRpb24hIGluZGV4CisgICAgICAgICAgICBlbmQKKyAgICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICBmcmVlUmVnaXN0ZXJzID0gcmVnaXN0ZXJzLmR1cAorICAg
IGxpc3QuZWFjaF93aXRoX2luZGV4IHsKKyAgICAgICAgfCBub2RlLCBpbmRleCB8CisgICAgICAg
IHRtcExpc3QgPSBub2RlLmZpbHRlcihUbXApLnVuaXEKKyAgICAgICAgdG1wTGlzdC5lYWNoIHsK
KyAgICAgICAgICAgIHwgdG1wIHwKKyAgICAgICAgICAgIGlmIHRtcC5raW5kID09IGtpbmQgYW5k
IHRtcC5maXJzdE1lbnRpb24gPT0gaW5kZXgKKyAgICAgICAgICAgICAgICByYWlzZSAiQ291bGQg
bm90IGFsbG9jYXRlIHJlZ2lzdGVyIHRvIHRlbXBvcmFyeSBhdCAje25vZGUuY29kZU9yaWdpblN0
cmluZ30iIGlmIGZyZWVSZWdpc3RlcnMuZW1wdHk/CisgICAgICAgICAgICAgICAgdG1wLnJlZ2lz
dGVyID0gZnJlZVJlZ2lzdGVycy5wb3AKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAg
ICAgIHRtcExpc3QuZWFjaCB7CisgICAgICAgICAgICB8IHRtcCB8CisgICAgICAgICAgICBpZiB0
bXAua2luZCA9PSBraW5kIGFuZCB0bXAubGFzdE1lbnRpb24gPT0gaW5kZXgKKyAgICAgICAgICAg
ICAgICBmcmVlUmVnaXN0ZXJzLnB1c2ggdG1wLnJlZ2lzdGVyCisgICAgICAgICAgICAgICAgcmFp
c2UgIlJlZ2lzdGVyIGFsbG9jYXRpb24gaW5jb25zaXN0ZW5jeSBhdCAje25vZGUuY29kZU9yaWdp
blN0cmluZ30iIGlmIGZyZWVSZWdpc3RlcnMuc2l6ZSA+IHJlZ2lzdGVycy5zaXplCisgICAgICAg
ICAgICBlbmQKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBsaXN0Lm1hcCB7CisgICAgICAg
IHwgbm9kZSB8CisgICAgICAgIG5vZGUucmVwbGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lzdGVycyhr
aW5kKQorICAgIH0KK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFz
bS9wYXJzZXIucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vcGFyc2VyLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vcGFyc2VyLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4NiBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiaW5z
dHJ1Y3Rpb25zIgorcmVxdWlyZSAicmVnaXN0ZXJzIgorCitjbGFzcyBUb2tlbgorICAgIGF0dHJf
cmVhZGVyIDpjb2RlT3JpZ2luLCA6c3RyaW5nCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgc3RyaW5nKQorICAgICAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgICAg
ICAgQHN0cmluZyA9IHN0cmluZworICAgIGVuZAorICAgIAorICAgIGRlZiA9PShvdGhlcikKKyAg
ICAgICAgaWYgb3RoZXIuaXNfYT8gVG9rZW4KKyAgICAgICAgICAgIEBzdHJpbmcgPT0gb3RoZXIu
c3RyaW5nCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEBzdHJpbmcgPT0gb3RoZXIKKyAgICAg
ICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmID1+KG90aGVyKQorICAgICAgICBAc3RyaW5n
ID1+IG90aGVyCisgICAgZW5kCisgICAgCisgICAgZGVmIHRvX3MKKyAgICAgICAgIiN7QHN0cmlu
Zy5pbnNwZWN0fSBhdCBsaW5lICN7Y29kZU9yaWdpbn0iCisgICAgZW5kCisgICAgCisgICAgZGVm
IHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICAg
ICAgICByYWlzZSAiUGFyc2UgZXJyb3I6ICN7dG9fc30iCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfTogI3tjb21tZW50WzBdfSIKKyAgICAgICAg
ZW5kCisgICAgZW5kCitlbmQKKworIworIyBUaGUgbGV4ZXIuIFRha2VzIGEgc3RyaW5nIGFuZCBy
ZXR1cm5zIGFuIGFycmF5IG9mIHRva2Vucy4KKyMKKworZGVmIGxleChzdHIpCisgICAgcmVzdWx0
ID0gW10KKyAgICBsaW5lTnVtYmVyID0gMQorICAgIHdoaWxlIG5vdCBzdHIuZW1wdHk/CisgICAg
ICAgIGNhc2Ugc3RyCisgICAgICAgIHdoZW4gL1xBXCMoW15cbl0qKS8KKyAgICAgICAgICAgICMg
Y29tbWVudCwgaWdub3JlCisgICAgICAgIHdoZW4gL1xBXG4vCisgICAgICAgICAgICByZXN1bHQg
PDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAgICAgICAgbGluZU51bWJlciArPSAx
CisgICAgICAgIHdoZW4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKikvCisgICAgICAgICAgICBy
ZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAgICB3aGVuIC9cQVwuKFth
LXpBLVowLTlfXSopLworICAgICAgICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVy
LCAkJikKKyAgICAgICAgd2hlbiAvXEFfKFthLXpBLVowLTlfXSopLworICAgICAgICAgICAgcmVz
dWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICAgICAgd2hlbiAvXEEoWyBcdF0r
KS8KKyAgICAgICAgICAgICMgd2hpdGVzcGFjZSwgaWdub3JlCisgICAgICAgIHdoZW4gL1xBMHgo
WzAtOWEtZkEtRl0rKS8KKyAgICAgICAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJl
ciwgJCYuaGV4LnRvX3MpCisgICAgICAgIHdoZW4gL1xBMChbMC03XSspLworICAgICAgICAgICAg
cmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJi5vY3QudG9fcykKKyAgICAgICAgd2hl
biAvXEEoWzAtOV0rKS8KKyAgICAgICAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJl
ciwgJCYpCisgICAgICAgIHdoZW4gL1xBOjovCisgICAgICAgICAgICByZXN1bHQgPDwgVG9rZW4u
bmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAgICB3aGVuIC9cQVs6LFwoXClcW1xdPVwrXC0qXS8K
KyAgICAgICAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJMZXhlciBlcnJvciBhdCBsaW5lIG51bWJlciAje2xp
bmVOdW1iZXJ9LCB1bmV4cGVjdGVkIHNlcXVlbmNlICN7c3RyWzAuLjIwXS5pbnNwZWN0fSIKKyAg
ICAgICAgZW5kCisgICAgICAgIHN0ciA9ICR+LnBvc3RfbWF0Y2gKKyAgICBlbmQKKyAgICByZXN1
bHQKK2VuZAorCisjCisjIFRva2VuIGlkZW50aWZpY2F0aW9uLgorIworCitkZWYgaXNSZWdpc3Rl
cih0b2tlbikKKyAgICB0b2tlbiA9fiBSRUdJU1RFUl9QQVRURVJOCitlbmQKKworZGVmIGlzSW5z
dHJ1Y3Rpb24odG9rZW4pCisgICAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisK
K2RlZiBpc0tleXdvcmQodG9rZW4pCisgICAgdG9rZW4gPX4gL1xBKCh0cnVlKXwoZmFsc2UpfChp
Zil8KHRoZW4pfChlbHNlKXwoZWxzaWYpfChlbmQpfChhbmQpfChvcil8KG5vdCl8KG1hY3JvKXwo
Y29uc3QpfChzaXplb2YpfChlcnJvcikpXFovIG9yCisgICAgICAgIHRva2VuID1+IFJFR0lTVEVS
X1BBVFRFUk4gb3IKKyAgICAgICAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisK
K2RlZiBpc0lkZW50aWZpZXIodG9rZW4pCisgICAgdG9rZW4gPX4gL1xBW2EtekEtWl0oW2EtekEt
WjAtOV9dKilcWi8gYW5kIG5vdCBpc0tleXdvcmQodG9rZW4pCitlbmQKKworZGVmIGlzTGFiZWwo
dG9rZW4pCisgICAgdG9rZW4gPX4gL1xBXyhbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBp
c0xvY2FsTGFiZWwodG9rZW4pCisgICAgdG9rZW4gPX4gL1xBXC4oW2EtekEtWjAtOV9dKilcWi8K
K2VuZAorCitkZWYgaXNWYXJpYWJsZSh0b2tlbikKKyAgICBpc0lkZW50aWZpZXIodG9rZW4pIG9y
IGlzUmVnaXN0ZXIodG9rZW4pCitlbmQKKworZGVmIGlzSW50ZWdlcih0b2tlbikKKyAgICB0b2tl
biA9fiAvXEFbMC05XS8KK2VuZAorCisjCisjIFRoZSBwYXJzZXIuIFRha2VzIGFuIGFycmF5IG9m
IHRva2VucyBhbmQgcmV0dXJucyBhbiBBU1QuIE1ldGhvZHMKKyMgb3RoZXIgdGhhbiBwYXJzZSh0
b2tlbnMpIGFyZSBub3QgZm9yIHB1YmxpYyBjb25zdW1wdGlvbi4KKyMKKworY2xhc3MgUGFyc2Vy
CisgICAgZGVmIGluaXRpYWxpemUodG9rZW5zKQorICAgICAgICBAdG9rZW5zID0gdG9rZW5zCisg
ICAgICAgIEBpZHggPSAwCisgICAgZW5kCisgICAgCisgICAgZGVmIHBhcnNlRXJyb3IoKmNvbW1l
bnQpCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAgIEB0b2tlbnNbQGlkeF0u
cGFyc2VFcnJvcigqY29tbWVudCkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgY29tbWVu
dC5lbXB0eT8KKyAgICAgICAgICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZp
bGUiCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9y
IGF0IGVuZCBvZiBmaWxlOiAje2NvbW1lbnRbMF19IgorICAgICAgICAgICAgZW5kCisgICAgICAg
IGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBjb25zdW1lKHJlZ2V4cCkKKyAgICAgICAgaWYg
cmVnZXhwCisgICAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID1+IHJl
Z2V4cAorICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAaWR4ID09
IEB0b2tlbnMubGVuZ3RoCisgICAgICAgIGVuZAorICAgICAgICBAaWR4ICs9IDEKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgc2tpcE5ld0xpbmUKKyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9
PSAiXG4iCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAg
CisgICAgZGVmIHBhcnNlUHJlZGljYXRlQXRvbQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICJub3QiCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHBhcnNlUHJlZGljYXRl
QXRvbQorICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgcmVzdWx0ID0gcGFy
c2VQcmVkaWNhdGUKKyAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0g
PT0gIikiCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAg
ICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJ0cnVlIgorICAgICAgICAgICAgcmVzdWx0ID0gVHJ1
ZS5pbnN0YW5jZQorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICByZXN1bHQKKyAg
ICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZmFsc2UiCisgICAgICAgICAgICByZXN1bHQg
PSBGYWxzZS5pbnN0YW5jZQorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICByZXN1
bHQKKyAgICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAg
IHJlc3VsdCA9IFNldHRpbmcuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tl
bnNbQGlkeF0uc3RyaW5nKQorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICByZXN1
bHQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VFcnJvcgorICAgICAgICBlbmQKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VQcmVkaWNhdGVBbmQKKyAgICAgICAgcmVzdWx0ID0g
cGFyc2VQcmVkaWNhdGVBdG9tCisgICAgICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImFuZCIK
KyAgICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgIHJp
Z2h0ID0gcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgICAgICAgICByZXN1bHQgPSBBbmQubmV3KGNv
ZGVPcmlnaW4sIHJlc3VsdCwgcmlnaHQpCisgICAgICAgIGVuZAorICAgICAgICByZXN1bHQKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgIyBzb21lIGV4YW1w
bGVzIG9mIHByZWNlZGVuY2U6CisgICAgICAgICMgbm90IGEgYW5kIGIgLT4gKG5vdCBhKSBhbmQg
YgorICAgICAgICAjIGEgYW5kIGIgb3IgYyAtPiAoYSBhbmQgYikgb3IgYworICAgICAgICAjIGEg
b3IgYiBhbmQgYyAtPiBhIG9yIChiIGFuZCBjKQorICAgICAgICAKKyAgICAgICAgcmVzdWx0ID0g
cGFyc2VQcmVkaWNhdGVBbmQKKyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAib3IiCisg
ICAgICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICByaWdo
dCA9IHBhcnNlUHJlZGljYXRlQW5kCisgICAgICAgICAgICByZXN1bHQgPSBPci5uZXcoY29kZU9y
aWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICAgICAgZW5kCisgICAgICAgIHJlc3VsdAorICAgIGVu
ZAorICAgIAorICAgIGRlZiBwYXJzZVZhcmlhYmxlCisgICAgICAgIGlmIGlzUmVnaXN0ZXIoQHRv
a2Vuc1tAaWR4XSkKKyAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPX4gRlBSX1BBVFRFUk4K
KyAgICAgICAgICAgICAgICByZXN1bHQgPSBGUFJlZ2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0Bp
ZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IFJlZ2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICAgICAgZW5kCisgICAg
ICAgIGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICAgICAgcmVzdWx0
ID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlk
eF0uc3RyaW5nKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXJzZUVycm9yCisgICAgICAg
IGVuZAorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0CisgICAgZW5kCisgICAgCisg
ICAgZGVmIHBhcnNlQWRkcmVzcyhvZmZzZXQpCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0
b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4KKyAgICAgICAgCisgICAgICAgICMgVGhyZWUgcG9zc2liaWxpdGllczoKKyAgICAg
ICAgIyBbXSAgICAgICAtPiBBYnNvbHV0ZUFkZHJlc3MKKyAgICAgICAgIyBbYV0gICAgICAtPiBB
ZGRyZXNzCisgICAgICAgICMgW2EsYl0gICAgLT4gQmFzZUluZGV4IHdpdGggc2NhbGUgPSAxCisg
ICAgICAgICMgW2EsYixjXSAgLT4gQmFzZUluZGV4CisgICAgICAgIAorICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICAgICAgcmV0dXJuIEFic29sdXRlQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgb2Zm
c2V0KQorICAgICAgICBlbmQKKyAgICAgICAgYSA9IHBhcnNlVmFyaWFibGUKKyAgICAgICAgaWYg
QHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgICAgIHJlc3VsdCA9IEFkZHJlc3MubmV3KGNv
ZGVPcmlnaW4sIGEsIG9mZnNldCkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VFcnJv
ciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAg
ICAgICAgICAgYiA9IHBhcnNlVmFyaWFibGUKKyAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0g
PT0gIl0iCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2lu
LCBhLCBiLCAxLCBvZmZzZXQpCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGFy
c2VFcnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBbIjEiLCAiMiIsICI0Iiwg
IjgiXS5tZW1iZXI/IEB0b2tlbnNbQGlkeF0uc3RyaW5nCisgICAgICAgICAgICAgICAgYyA9IEB0
b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAg
ICAgICAgICAgIHJlc3VsdCA9IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgYywgb2Zm
c2V0KQorICAgICAgICAgICAgZW5kCisgICAgICAgIGVuZAorICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgcmVzdWx0CisgICAgZW5kCisgICAgCisgICAgZGVmIHBhcnNlQ29sb25Db2xvbgorICAg
ICAgICBza2lwTmV3TGluZQorICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0Bp
ZHhdCisgICAgICAgIG5hbWVzID0gW0B0b2tlbnNbQGlkeF0uc3RyaW5nXQorICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiOjoiCisgICAgICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9r
ZW5zW0BpZHhdCisgICAgICAgICAgICBuYW1lcyA8PCBAdG9rZW5zW0BpZHhdLnN0cmluZworICAg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgIGVuZAorICAgICAgICByYWlzZSBpZiBuYW1lcy5l
bXB0eT8KKyAgICAgICAgW2NvZGVPcmlnaW4sIG5hbWVzXQorICAgIGVuZAorICAgIAorICAgIGRl
ZiBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmIEB0
b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIE5l
Z0ltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcGFyc2VFeHByZXNz
aW9uQXRvbSkKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uCisgICAgICAg
ICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAg
QGlkeCArPSAxCisgICAgICAgICAgICByZXN1bHQKKyAgICAgICAgZWxzaWYgaXNJbnRlZ2VyIEB0
b2tlbnNbQGlkeF0KKyAgICAgICAgICAgIHJlc3VsdCA9IEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZy50b19pKQorICAgICAgICAgICAg
QGlkeCArPSAxCisgICAgICAgICAgICByZXN1bHQKKyAgICAgICAgZWxzaWYgaXNJZGVudGlmaWVy
IEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xv
bkNvbG9uCisgICAgICAgICAgICBpZiBuYW1lcy5zaXplID4gMQorICAgICAgICAgICAgICAgIFN0
cnVjdE9mZnNldC5mb3JGaWVsZChjb2RlT3JpZ2luLCBuYW1lc1swLi4tMl0uam9pbignOjonKSwg
bmFtZXNbLTFdKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFZhcmlhYmxlLmZv
ck5hbWUoY29kZU9yaWdpbiwgbmFtZXNbMF0pCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZWxz
aWYgaXNSZWdpc3RlciBAdG9rZW5zW0BpZHhdCisgICAgICAgICAgICBwYXJzZVZhcmlhYmxlCisg
ICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInNpemVvZiIKKyAgICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICAgICAgY29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAg
ICAgICAgICAgIFNpemVvZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzLmpvaW4oJzo6JykpCisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNlRXJyb3IKKyAgICAgICAgZW5kCisgICAgZW5k
CisgICAgCisgICAgZGVmIHBhcnNlRXhwcmVzc2lvbk11bAorICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25BdG9tCisgICAgICAgIHdoaWxlIEB0b2tl
bnNbQGlkeF0gPT0gIioiCisgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIqIgorICAg
ICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IE11bEltbWVk
aWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHBy
ZXNzaW9uQXRvbSkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByYWlzZQorICAg
ICAgICAgICAgZW5kCisgICAgICAgIGVuZAorICAgICAgICByZXN1bHQKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgY291bGRCZUV4cHJlc3Npb24KKyAgICAgICAgQHRva2Vuc1tAaWR4XSA9PSAiLSIg
b3IgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIiBvciBpc0ludGVnZXIoQHRva2Vuc1tAaWR4XSkg
b3IgaXNWYXJpYWJsZShAdG9rZW5zW0BpZHhdKSBvciBAdG9rZW5zW0BpZHhdID09ICIoIgorICAg
IGVuZAorICAgIAorICAgIGRlZiBwYXJzZUV4cHJlc3Npb24KKyAgICAgICAgc2tpcE5ld0xpbmUK
KyAgICAgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uTXVsCisgICAgICAgIHdoaWxlIEB0b2tl
bnNbQGlkeF0gPT0gIisiIG9yIEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICAgICAgICBpZiBA
dG9rZW5zW0BpZHhdID09ICIrIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
ICAgICAgIHJlc3VsdCA9IEFkZEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVP
cmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgICAgICAgZWxzaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAg
ICAgICByZXN1bHQgPSBTdWJJbW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3Jp
Z2luLCByZXN1bHQsIHBhcnNlRXhwcmVzc2lvbk11bCkKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZW5kCisgICAgICAgIGVuZAorICAgICAgICBy
ZXN1bHQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1lbnQpCisgICAg
ICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgICAgICAg
ICBleHByID0gcGFyc2VFeHByZXNzaW9uCisgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09
ICJbIgorICAgICAgICAgICAgICAgIHBhcnNlQWRkcmVzcyhleHByKQorICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIGV4cHIKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNpZiBA
dG9rZW5zW0BpZHhdID09ICJbIgorICAgICAgICAgICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5u
ZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCAwKSkKKyAgICAgICAgZWxzaWYgaXNMYWJlbCBA
dG9rZW5zW0BpZHhdCisgICAgICAgICAgICByZXN1bHQgPSBMYWJlbFJlZmVyZW5jZS5uZXcoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9y
aWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQorICAgICAgICAgICAgQGlkeCArPSAxCisgICAg
ICAgICAgICByZXN1bHQKKyAgICAgICAgZWxzaWYgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlkeF0K
KyAgICAgICAgICAgIHJlc3VsdCA9IExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgTG9jYWxMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdp
biwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpKQorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgICByZXN1bHQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VFcnJvcihjb21tZW50
KQorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VNYWNyb1ZhcmlhYmxl
cworICAgICAgICBza2lwTmV3TGluZQorICAgICAgICBjb25zdW1lKC9cQVwoXFovKQorICAgICAg
ICB2YXJpYWJsZXMgPSBbXQorICAgICAgICBsb29wIHsKKyAgICAgICAgICAgIHNraXBOZXdMaW5l
CisgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNpZiBpc0lkZW50
aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPDwgVmFyaWFi
bGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5n
KQorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHNraXBOZXdMaW5l
CisgICAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAg
ICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBwYXJzZUVycm9y
CisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
cGFyc2VFcnJvcgorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgdmFyaWFibGVz
CisgICAgZW5kCisgICAgCisgICAgZGVmIHBhcnNlU2VxdWVuY2UoZmluYWwsIGNvbW1lbnQpCisg
ICAgICAgIGZpcnN0Q29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAg
ICBsaXN0ID0gW10KKyAgICAgICAgbG9vcCB7CisgICAgICAgICAgICBpZiAoQGlkeCA9PSBAdG9r
ZW5zLmxlbmd0aCBhbmQgbm90IGZpbmFsKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4g
ZmluYWwpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNb
QGlkeF0gPT0gIlxuIgorICAgICAgICAgICAgICAgICMgaWdub3JlCisgICAgICAgICAgICAgICAg
QGlkeCArPSAxCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJjb25zdCIKKyAg
ICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9yIHVubGVz
cyBpc1ZhcmlhYmxlIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSA9IFZh
cmlhYmxlLmZvck5hbWUoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0
cmluZykKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBwYXJzZUVy
cm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICI9IgorICAgICAgICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2Yg
Y29uc3QgI3t2YXJpYWJsZS5uYW1lfSIpCisgICAgICAgICAgICAgICAgbGlzdCA8PCBDb25zdERl
Y2wubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgICAg
ICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiZXJyb3IiCisgICAgICAgICAgICAgICAgbGlz
dCA8PCBFcnJvci5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luKQorICAgICAgICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAg
ICAgICAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAg
ICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAg
ICAgICAgICAgcHJlZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgICAgICAgICBjb25z
dW1lKC9cQSgodGhlbil8KFxuKSlcWi8pCisgICAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAg
ICAgICAgICAgICAgICBpZlRoZW5FbHNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJl
ZGljYXRlLCBwYXJzZVNlcXVlbmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGls
ZSBpbnNpZGUgb2YgXCJpZiAje3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAgICAgICAgICAg
bGlzdCA8PCBpZlRoZW5FbHNlCisgICAgICAgICAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9
PSAiZWxzaWYiCisgICAgICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhd
LmNvZGVPcmlnaW4KKyAgICAgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAg
ICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNl
UHJlZGljYXRlCisgICAgICAgICAgICAgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxa
LykKKyAgICAgICAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgICAgICAg
ZWxzZUNhc2UgPSBJZlRoZW5FbHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2Vx
dWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlm
ICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAgICAgICAgICAgICAgICAgICAgaWZUaGVuRWxzZS5l
bHNlQ2FzZSA9IGVsc2VDYXNlCisgICAgICAgICAgICAgICAgICAgIGlmVGhlbkVsc2UgPSBlbHNl
Q2FzZQorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlk
eF0gPT0gImVsc2UiCisgICAgICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAg
ICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3
aGlsZSBpbnNpZGUgb2YgZWxzZSBjYXNlIGZvciBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKQor
ICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gImVuZCIK
KyAgICAgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgZW5kCisgICAg
ICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAgICAgICAgICBj
b2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgICAgICAgQGlk
eCArPSAxCisgICAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgICBwYXJz
ZUVycm9yIHVubGVzcyBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgICAgICAg
ICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAg
ICAgICAgICAgYm9keSA9IHBhcnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9m
IG1hY3JvICN7bmFtZX0iKQorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAg
ICAgIGxpc3QgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkK
KyAgICAgICAgICAgIGVsc2lmIGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAgICAgICAg
ICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICAg
ICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgICAgICAgICBAaWR4ICs9
IDEKKyAgICAgICAgICAgICAgICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6
ZSkgb3IgKGZpbmFsIGFuZCBAdG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICAgICAgICAg
ICAgICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbiwgYW5kIGl0J3MgdGhlIGxhc3Qgb25lLgor
ICAgICAgICAgICAgICAgICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBu
YW1lLCBbXSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgIyBaZXJvIG9wZXJh
bmQgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICMgSXQncyBkZWZpbml0
ZWx5IGFuIGluc3RydWN0aW9uLCBhbmQgaXQgaGFzIGF0IGxlYXN0IG9uZSBvcGVyYW5kLgorICAg
ICAgICAgICAgICAgICAgICBvcGVyYW5kcyA9IFtdCisgICAgICAgICAgICAgICAgICAgIGVuZE9m
U2VxdWVuY2UgPSBmYWxzZQorICAgICAgICAgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG9wZXJhbmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGlu
c3RydWN0aW9uICN7bmFtZX0iKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vdCBmaW5h
bCBhbmQgQGlkeCA9PSBAdG9rZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9
fiBmaW5hbCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGlu
c3RydWN0aW9uIGFuZCBvZiB0aGUgc2VxdWVuY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZW5kT2ZTZXF1ZW5jZSA9IHRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVh
aworICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICBl
bHNpZiBAdG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAj
IFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VFcnJv
cigiRXhwZWN0ZWQgYSBjb21tYSwgbmV3bGluZSwgb3IgI3tmaW5hbH0gYWZ0ZXIgI3tvcGVyYW5k
cy5sYXN0LmR1bXB9IikKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNv
ZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAgICAgICAgICAgICAgICBpZiBlbmRPZlNl
cXVlbmNlCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAg
ICBlbmQKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2lmIGlzSWRlbnRpZmll
ciBAdG9rZW5zW0BpZHhdCisgICAgICAgICAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmlu
ZworICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGlmIEB0b2tlbnNb
QGlkeF0gPT0gIigiCisgICAgICAgICAgICAgICAgICAgICMgTWFjcm8gaW52b2NhdGlvbi4KKyAg
ICAgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgICAgIG9wZXJhbmRz
ID0gW10KKyAgICAgICAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBs
b29wIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjIEl0J3MgYSBtYWNybyBsYW1iZGEhCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvZGVPcmlnaW5Jbm5lciA9IEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxl
cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgv
XEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1
bWVudCB0byAje25hbWV9IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IE1hY3JvLm5l
dyhjb2RlT3JpZ2luSW5uZXIsIG5pbCwgdmFyaWFibGVzLCBib2R5KQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmFu
ZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gY2FsbCB0byAje25hbWV9
IikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIEB0b2tl
bnNbQGlkeF0gPT0gIikiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VFcnJvciAiVW5leHBlY3Rl
ZCAje0B0b2tlbnNbQGlkeF0uc3RyaW5nLmluc3BlY3R9IHdoaWxlIHBhcnNpbmcgaW52b2NhdGlv
biBvZiBtYWNybyAje25hbWV9IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAg
ICAgICAgICAgICAgbGlzdCA8PCBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJh
bmRzKQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VFcnJv
ciAiRXhwZWN0ZWQgXCIoXCIgYWZ0ZXIgI3tuYW1lfSIKKyAgICAgICAgICAgICAgICBlbmQKKyAg
ICAgICAgICAgIGVsc2lmIGlzTGFiZWwgQHRva2Vuc1tAaWR4XSBvciBpc0xvY2FsTGFiZWwgQHRv
a2Vuc1tAaWR4XQorICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNv
ZGVPcmlnaW4KKyAgICAgICAgICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAg
ICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9yIHVubGVz
cyBAdG9rZW5zW0BpZHhdID09ICI6IgorICAgICAgICAgICAgICAgICMgSXQncyBhIGxhYmVsLgor
ICAgICAgICAgICAgICAgIGlmIGlzTGFiZWwgbmFtZQorICAgICAgICAgICAgICAgICAgICBsaXN0
IDw8IExhYmVsLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIGxpc3QgPDwgTG9jYWxMYWJlbC5mb3JOYW1lKGNvZGVPcmln
aW4sIG5hbWUpCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgQGlkeCArPSAx
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0aW5n
IHRlcm1pbmFsICN7ZmluYWx9ICN7Y29tbWVudH0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAg
fQorICAgICAgICBTZXF1ZW5jZS5uZXcoZmlyc3RDb2RlT3JpZ2luLCBsaXN0KQorICAgIGVuZAor
ZW5kCisKK2RlZiBwYXJzZSh0b2tlbnMpCisgICAgcGFyc2VyID0gUGFyc2VyLm5ldyh0b2tlbnMp
CisgICAgcGFyc2VyLnBhcnNlU2VxdWVuY2UobmlsLCAiIikKK2VuZAorCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDYwIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitHUFJTID0KKyAgICBbCisgICAgICJ0MCIsCisgICAgICJ0MSIsCisgICAgICJ0MiIsCisg
ICAgICJ0MyIsCisgICAgICJ0NCIsCisgICAgICJjZnIiLAorICAgICAiYTAiLAorICAgICAiYTEi
LAorICAgICAicjAiLAorICAgICAicjEiLAorICAgICAic3AiLAorICAgICAibHIiCisgICAgXQor
CitGUFJTID0KKyAgICBbCisgICAgICJmdDAiLAorICAgICAiZnQxIiwKKyAgICAgImZ0MiIsCisg
ICAgICJmdDMiLAorICAgICAiZnQ0IiwKKyAgICAgImZ0NSIsCisgICAgICJmYTAiLAorICAgICAi
ZmExIiwKKyAgICAgImZhMiIsCisgICAgICJmYTMiLAorICAgICAiZnIiCisgICAgXQorCitSRUdJ
U1RFUlMgPSBHUFJTICsgRlBSUworCitHUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyAr
IEdQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQorRlBSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdc
XEEoKCcgKyBGUFJTLmpvaW4oJyl8KCcpICsgJykpXFxaJykKKworUkVHSVNURVJfUEFUVEVSTiA9
IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIFJFR0lTVEVSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZWxmX2hhc2gucmIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2VsZl9oYXNoLnJiCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2VsZl9oYXNo
LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgInBhdGhuYW1l
IgorCisjCisjIHNlbGZIYXNoIC0+IFNIQTEgaGV4ZGlnZXN0CisjCisjIFJldHVybnMgYSBoYXNo
IG9mIHRoZSBvZmZsaW5lYXNtIHNvdXJjZSBjb2RlLiBUaGlzIGFsbG93cyBkZXBlbmRlbmN5Cisj
IHRyYWNraW5nIGZvciBub3QganVzdCBjaGFuZ2VzIGluIGlucHV0LCBidXQgYWxzbyBjaGFuZ2Vz
IGluIHRoZSBhc3NlbWJsZXIKKyMgaXRzZWxmLgorIworCitkZWYgc2VsZkhhc2gKKyAgICBjb250
ZW50cyA9ICIiCisgICAgbXlQYXRoID0gUGF0aG5hbWUubmV3KF9fRklMRV9fKS5kaXJuYW1lCisg
ICAgRGlyLmZvcmVhY2gobXlQYXRoKSB7CisgICAgICAgIHwgZW50cnkgfAorICAgICAgICBpZiBl
bnRyeSA9fiAvXC5yYiQvCisgICAgICAgICAgICBjb250ZW50cyArPSBJTzo6cmVhZChteVBhdGgg
KyBlbnRyeSkKKyAgICAgICAgZW5kCisgICAgfQorICAgIHJldHVybiBEaWdlc3Q6OlNIQTEuaGV4
ZGlnZXN0KGNvbnRlbnRzKQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL3NldHRpbmdzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL3NldHRpbmdzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjA1IEBA
CisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
CisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCity
ZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInRyYW5zZm9ybSIK
KworIworIyBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJp
YXRpb25zCisjCisjIENvbXB1dGVzIGFuIGFycmF5IG9mIHNldHRpbmdzIG1hcHMsIHdoZXJlIGEg
c2V0dGluZ3MgbWFwIGNvbnN0aXR1dGVzCisjIGEgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFzc2Vt
Ymx5IGNvZGUgYmVpbmcgZ2VuZXJhdGVkLiBUaGUgbWFwCisjIGNvbnRhaW5zIGtleSB2YWx1ZSBw
YWlycyB3aGVyZSBrZXlzIGFyZSBzZXR0aW5ncyBuYW1lcyAoc3RyaW5ncykgYW5kCisjIHRoZSB2
YWx1ZXMgYXJlIGJvb2xlYW5zICh0cnVlIGZvciBlbmFibGVkLCBmYWxzZSBmb3IgZGlzYWJsZWQp
LgorIworCitkZWYgY29tcHV0ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgICBzZXR0aW5n
c0NvbWJpbmF0aW9ucyA9IFtdCisgICAgCisgICAgZGVmIHNldHRpbmdzQ29tYmluYXRvcihzZXR0
aW5nc0NvbWJpbmF0aW9ucywgbWFwU29GYXIsIHJlbWFpbmluZykKKyAgICAgICAgaWYgcmVtYWlu
aW5nLmVtcHR5PworICAgICAgICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFwU29GYXIK
KyAgICAgICAgICAgIHJldHVybgorICAgICAgICBlbmQKKyAgICAgICAgCisgICAgICAgIG5ld01h
cCA9IG1hcFNvRmFyLmR1cAorICAgICAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IHRydWUKKyAg
ICAgICAgc2V0dGluZ3NDb21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJl
bWFpbmluZ1sxLi4tMV0pCisgICAgICAgIAorICAgICAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAK
KyAgICAgICAgbmV3TWFwW3JlbWFpbmluZ1swXV0gPSBmYWxzZQorICAgICAgICBzZXR0aW5nc0Nv
bWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkK
KyAgICBlbmQKKyAgICAKKyAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlv
bnMsIHt9LCAoYXN0LmZpbHRlcihTZXR0aW5nKS51bmlxLmNvbGxlY3R7fHZ8IHYubmFtZX0gKyBb
Ilg4NiIsICJBUk12NyJdKS51bmlxKQorICAgIAorICAgIHNldHRpbmdzQ29tYmluYXRpb25zCitl
bmQKKworIworIyBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpIHsKKyMgICAgIHwg
Y29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfCAuLi4gfQorIworIyBEZXRl
cm1pbmVzIGlmIHRoZSBzZXR0aW5ncyBjb21iaW5hdGlvbiBpcyB2YWxpZCwgYW5kIGlmIHNvLCBj
YWxscworIyB0aGUgYmxvY2sgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91IG5lZWQgdG8gZ2VuZXJh
dGUgY29kZS4KKyMKKworZGVmIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkKKyAg
ICAjIENoZWNrIHdoaWNoIGFyY2hpdGVjdHVyZXMgdGhpcyBjb21iaW5hdG9yIGNsYWltcyB0byBz
dXBwb3J0LgorICAgIG51bUNsYWltZWRCYWNrZW5kcyA9IDAKKyAgICBzZWxlY3RlZEJhY2tlbmQg
PSBuaWwKKyAgICBCQUNLRU5EUy5lYWNoIHsKKyAgICAgICAgfCBiYWNrZW5kIHwKKyAgICAgICAg
aXNTdXBwb3J0ZWQgPSBjb25jcmV0ZVNldHRpbmdzW2JhY2tlbmRdCisgICAgICAgIHJhaXNlIHVu
bGVzcyBpc1N1cHBvcnRlZCAhPSBuaWwKKyAgICAgICAgbnVtQ2xhaW1lZEJhY2tlbmRzICs9IGlm
IGlzU3VwcG9ydGVkIHRoZW4gMSBlbHNlIDAgZW5kCisgICAgICAgIGlmIGlzU3VwcG9ydGVkCisg
ICAgICAgICAgICBzZWxlY3RlZEJhY2tlbmQgPSBiYWNrZW5kCisgICAgICAgIGVuZAorICAgIH0K
KyAgICAKKyAgICByZXR1cm4gaWYgbnVtQ2xhaW1lZEJhY2tlbmRzID4gMQorICAgIAorICAgICMg
UmVzb2x2ZSB0aGUgQVNUIGRvd24gdG8gYSBsb3ctbGV2ZWwgZm9ybSAobm8gbWFjcm9zIG9yIGNv
bmRpdGlvbmFscykuCisgICAgbG93TGV2ZWxBU1QgPSBhc3QucmVzb2x2ZVNldHRpbmdzKGNvbmNy
ZXRlU2V0dGluZ3MpCisgICAgCisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxB
U1QsIHNlbGVjdGVkQmFja2VuZAorZW5kCisKKyMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21i
aW5hdGlvbihhc3QpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBp
bmRleCB8IC4uLiB9CisjCisjIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCBz
ZXR0aW5nc0NvbWJpbmF0aW9ucykgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJh
Y2tlbmQsIGluZGV4IHwgLi4uIH0KKyMKKyMgRXhlY3V0ZXMgdGhlIGdpdmVuIGJsb2NrIGZvciBl
YWNoIHZhbGlkIHNldHRpbmdzIGNvbWJpbmF0aW9uIGluIHRoZQorIyBzZXR0aW5ncyBtYXAuIFRo
ZSBhc3QgcGFzc2VkIGludG8gdGhlIGJsb2NrIGlzIHJlc29sdmVkCisjIChhc3QucmVzb2x2ZSkg
YWdhaW5zdCB0aGUgc2V0dGluZ3MuCisjCisjIFRoZSBmaXJzdCBmb3JtIHdpbGwgY2FsbCBjb21w
dXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KSBmb3IgeW91LgorIworCitkZWYgZm9yRWFjaFZh
bGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QsICpvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25z
KQorICAgIHJhaXNlIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEKKyAg
ICAKKyAgICBpZiBvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zLmVtcHR5PworICAgICAgICBz
ZXR0aW5nc0NvbWJpbmF0aW9ucyA9IGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisg
ICAgZWxzZQorICAgICAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IG9wdGlvbmFsU2V0dGluZ3ND
b21iaWF0aW9uc1swXQorICAgIGVuZAorICAgIAorICAgIHNldHRpbmdzQ29tYmluYXRpb25zLmVh
Y2hfd2l0aF9pbmRleCB7CisgICAgICAgIHwgY29uY3JldGVTZXR0aW5ncywgaW5kZXggfAorICAg
ICAgICBmb3JTZXR0aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpIHsKKyAgICAgICAgICAgIHwg
Y29uY3JldGVTZXR0aW5nc18sIGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICAgICAgICAgIHlp
ZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgICAg
ICB9CisgICAgfQorZW5kCisKKyMKKyMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3Mp
CisjCisjIFJldHVybnMgdGhlIEMrKyBjb2RlIHVzZWQgdG8gdGVzdCBpZiB3ZSBhcmUgaW4gYSBj
b25maWd1cmF0aW9uIHRoYXQKKyMgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIGNvbmNyZXRlIHNl
dHRpbmdzLgorIworCitkZWYgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICAg
IiNpZiAiICsgY29uY3JldGVTZXR0aW5ncy50b19hLmNvbGxlY3R7CisgICAgICAgIHwgcGFpciB8
CisgICAgICAgIChpZiBwYWlyWzFdCisgICAgICAgICAgICAgIiIKKyAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAiISIKKyAgICAgICAgIGVuZCkgKyAiT0ZGTElORV9BU01fIiArIHBhaXJbMF0K
KyAgICB9LmpvaW4oIiAmJiAiKQorZW5kCisKKyMKKyMgaXNBU1RFcnJvbmVvdXMoYXN0KQorIwor
IyBUZXN0cyB0byBzZWUgaWYgdGhlIEFTVCBjbGFpbXMgdGhhdCB0aGVyZSBpcyBhbiBlcnJvciAt
IGkuZS4gaWYgdGhlCisjIHVzZXIncyBjb2RlLCBhZnRlciBzZXR0aW5ncyByZXNvbHV0aW9uLCBo
YXMgRXJyb3Igbm9kZXMuCisjCisKK2RlZiBpc0FTVEVycm9uZW91cyhhc3QpCisgICAgbm90IGFz
dC5maWx0ZXIoRXJyb3IpLmVtcHR5PworZW5kCisKKyMKKyMgYXNzZXJ0Q29uZmlndXJhdGlvbihj
b25jcmV0ZVNldHRpbmdzKQorIworIyBFbWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdl
J3JlIHVzaW5nIHRoZSBnaXZlbiBjb25maWd1cmF0aW9uLgorIworCitkZWYgYXNzZXJ0Q29uZmln
dXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQorICAgICRvdXRwdXQucHV0cyBjcHBTZXR0aW5nc1Rl
c3QoY29uY3JldGVTZXR0aW5ncykKKyAgICAkb3V0cHV0LnB1dHMgIiNlbHNlIgorICAgICRvdXRw
dXQucHV0cyAiI2Vycm9yIFwiQ29uZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAgICAkb3V0cHV0
LnB1dHMgIiNlbmRpZiIKK2VuZAorCisjCisjIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNy
ZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBh
c3QsIGJhY2tlbmQgfCAuLi4gfQorIworIyBFbWl0cyBhbGwgcmVsZXZhbnQgZ3VhcmRzIHRvIHNl
ZSBpZiB0aGUgY29uZmlndXJhdGlvbiBob2xkcyBhbmQKKyMgY2FsbHMgdGhlIGJsb2NrIGlmIHRo
ZSBjb25maWd1cmF0aW9uIGlzIG5vdCBlcnJvbmVvdXMuCisjCisKK2RlZiBlbWl0Q29kZUluQ29u
ZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpCisgICAgJG91dHB1dC5w
dXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAgIAorICAgIGlmIGlzQVNU
RXJyb25lb3VzKGFzdCkKKyAgICAgICAgJG91dHB1dC5wdXRzICIjZXJyb3IgXCJJbnZhbGlkIGNv
bmZpZ3VyYXRpb24uXCIiCisgICAgZWxzaWYgbm90IFdPUktJTkdfQkFDS0VORFMuaW5jbHVkZT8g
YmFja2VuZAorICAgICAgICAkb3V0cHV0LnB1dHMgIiNlcnJvciBcIlRoaXMgYmFja2VuZCBpcyBu
b3Qgc3VwcG9ydGVkIHlldC5cIiIKKyAgICBlbHNlCisgICAgICAgIHlpZWxkIGNvbmNyZXRlU2V0
dGluZ3MsIGFzdCwgYmFja2VuZAorICAgIGVuZAorICAgIAorICAgICRvdXRwdXQucHV0cyAiI2Vu
ZGlmIgorZW5kCisKKyMKKyMgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkgeworIyAg
ICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0KKyMKKyMg
RW1pdHMgZ3VhcmQgY29kZXMgZm9yIGFsbCB2YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxz
IHRoZSBibG9jaworIyBmb3IgdGhvc2UgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5k
IG5vdCBlcnJvbmVvdXMuCisjCisKK2RlZiBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0
KQorICAgIGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7CisgICAgICAgIHwg
Y29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICAgICAg
JG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAgICAgICB5
aWVsZCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICAg
ICAgJG91dHB1dC5wdXRzICIjZW5kaWYiCisgICAgfQorZW5kCisKKworCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCShyZXZpc2lvbiAwKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM0MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBt
ZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
IyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworcmVxdWlyZSAiYXN0IgorCisjCisjIG5vZGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdz
KQorIworIyBDb25zdHJ1Y3QgYSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgSWZUaGVu
RWxzZSBub2RlcyBieQorIyBzdWJzdGl0dXRpbmcgY29uY3JldGUgYm9vbGVhbiB2YWx1ZXMgZm9y
IGVhY2ggU2V0dGluZy4KKyMKKworY2xhc3MgTm9kZQorICAgIGRlZiByZXNvbHZlU2V0dGluZ3Mo
c2V0dGluZ3MpCisgICAgICAgIG1hcENoaWxkcmVuIHsKKyAgICAgICAgICAgIHwgY2hpbGQgfAor
ICAgICAgICAgICAgY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgICB9Cisg
ICAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZQorICAgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZQorICAgIGRlZiBy
ZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBTZXR0aW5nCisgICAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAg
c2V0dGluZ3NbQG5hbWVdLmFzTm9kZQorICAgIGVuZAorZW5kCisKK2NsYXNzIEFuZAorICAgIGRl
ZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICAgIChAbGVmdC5yZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpLnZhbHVlIGFuZCBAcmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52
YWx1ZSkuYXNOb2RlCisgICAgZW5kCitlbmQKKworY2xhc3MgT3IKKyAgICBkZWYgcmVzb2x2ZVNl
dHRpbmdzKHNldHRpbmdzKQorICAgICAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdz
KS52YWx1ZSBvciBAcmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2Rl
CisgICAgZW5kCitlbmQKKworY2xhc3MgTm90CisgICAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0
aW5ncykKKyAgICAgICAgKG5vdCBAY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1
ZSkuYXNOb2RlCisgICAgZW5kCitlbmQKKworY2xhc3MgSWZUaGVuRWxzZQorICAgIGRlZiByZXNv
bHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICAgIGlmIEBwcmVkaWNhdGUucmVzb2x2ZVNldHRp
bmdzKHNldHRpbmdzKS52YWx1ZQorICAgICAgICAgICAgQHRoZW5DYXNlLnJlc29sdmVTZXR0aW5n
cyhzZXR0aW5ncykKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQGVsc2VDYXNlLnJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworY2xhc3MgU2Vx
dWVuY2UKKyAgICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgICBuZXdMaXN0
ID0gW10KKyAgICAgICAgQGxpc3QuZWFjaCB7CisgICAgICAgICAgICB8IGl0ZW0gfAorICAgICAg
ICAgICAgaXRlbSA9IGl0ZW0ucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgICAgICAg
aWYgaXRlbS5pc19hPyBTZXF1ZW5jZQorICAgICAgICAgICAgICAgIG5ld0xpc3QgKz0gaXRlbS5s
aXN0CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBpdGVtCisg
ICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdp
biwgbmV3TGlzdCkKKyAgICBlbmQKK2VuZAorCisjCisjIG5vZGUuZGVtYWNyb2lmeShtYWNyb3Mp
CisjIG5vZGUuc3Vic3RpdHV0ZShtYXBwaW5nKQorIworIyBkZW1hY3JvaWZ5KCkgY29uc3RydWN0
cyBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBoYXZlIGFueSBNYWNybworIyBub2Rlcywgd2hpbGUg
c3Vic3RpdHV0ZSgpIHJlcGxhY2VzIFZhcmlhYmxlIG5vZGVzIHdpdGggdGhlIGdpdmVuCisjIG5v
ZGVzIGluIHRoZSBtYXBwaW5nLgorIworCitjbGFzcyBOb2RlCisgICAgZGVmIGRlbWFjcm9pZnko
bWFjcm9zKQorICAgICAgICBtYXBDaGlsZHJlbiB7CisgICAgICAgICAgICB8IGNoaWxkIHwKKyAg
ICAgICAgICAgIGNoaWxkLmRlbWFjcm9pZnkobWFjcm9zKQorICAgICAgICB9CisgICAgZW5kCisg
ICAgCisgICAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICAgICAgbWFwQ2hpbGRyZW4gewor
ICAgICAgICAgICAgfCBjaGlsZCB8CisgICAgICAgICAgICBjaGlsZC5zdWJzdGl0dXRlKG1hcHBp
bmcpCisgICAgICAgIH0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc3Vic3RpdHV0ZUxhYmVscyht
YXBwaW5nKQorICAgICAgICBtYXBDaGlsZHJlbiB7CisgICAgICAgICAgICB8IGNoaWxkIHwKKyAg
ICAgICAgICAgIGNoaWxkLnN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICAgICAgfQorICAg
IGVuZAorZW5kCisKK2NsYXNzIE1hY3JvCisgICAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAg
ICAgICAgbXlNYXBwaW5nID0ge30KKyAgICAgICAgbWFwcGluZy5lYWNoX3BhaXIgeworICAgICAg
ICAgICAgfCBrZXksIHZhbHVlIHwKKyAgICAgICAgICAgIHVubGVzcyBAdmFyaWFibGVzLmluY2x1
ZGU/IGtleQorICAgICAgICAgICAgICAgIG15TWFwcGluZ1trZXldID0gdmFsdWUKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICB9CisgICAgICAgIG1hcENoaWxkcmVuIHsKKyAgICAgICAgICAgIHwg
Y2hpbGQgfAorICAgICAgICAgICAgY2hpbGQuc3Vic3RpdHV0ZShteU1hcHBpbmcpCisgICAgICAg
IH0KKyAgICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZQorICAgIGRlZiBzdWJzdGl0dXRlKG1h
cHBpbmcpCisgICAgICAgIGlmIG1hcHBpbmdbc2VsZl0KKyAgICAgICAgICAgIG1hcHBpbmdbc2Vs
Zl0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VsZgorICAgICAgICBlbmQKKyAgICBlbmQK
K2VuZAorCitjbGFzcyBMb2NhbExhYmVsCisgICAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGlu
ZykKKyAgICAgICAgaWYgbWFwcGluZ1tzZWxmXQorICAgICAgICAgICAgbWFwcGluZ1tzZWxmXQor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmCisgICAgICAgIGVuZAorICAgIGVuZAorZW5k
CisKK2NsYXNzIFNlcXVlbmNlCisgICAgZGVmIHN1YnN0aXR1dGUoY29uc3RhbnRzKQorICAgICAg
ICBuZXdMaXN0ID0gW10KKyAgICAgICAgbXlDb25zdGFudHMgPSBjb25zdGFudHMuZHVwCisgICAg
ICAgIEBsaXN0LmVhY2ggeworICAgICAgICAgICAgfCBpdGVtIHwKKyAgICAgICAgICAgIGlmIGl0
ZW0uaXNfYT8gQ29uc3REZWNsCisgICAgICAgICAgICAgICAgbXlDb25zdGFudHNbaXRlbS52YXJp
YWJsZV0gPSBpdGVtLnZhbHVlLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBpdGVtLnN1YnN0aXR1dGUobXlDb25zdGFu
dHMpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBTZXF1ZW5jZS5uZXcoY29k
ZU9yaWdpbiwgbmV3TGlzdCkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVuYW1lTGFiZWxzKGNv
bW1lbnQpCisgICAgICAgIG1hcHBpbmcgPSB7fQorICAgICAgICAKKyAgICAgICAgQGxpc3QuZWFj
aCB7CisgICAgICAgICAgICB8IGl0ZW0gfAorICAgICAgICAgICAgaWYgaXRlbS5pc19hPyBMb2Nh
bExhYmVsCisgICAgICAgICAgICAgICAgbWFwcGluZ1tpdGVtXSA9IExvY2FsTGFiZWwudW5pcXVl
KGlmIGNvbW1lbnQgdGhlbiBjb21tZW50ICsgIl8iIGVsc2UgIiIgZW5kICsgaXRlbS5jbGVhbk5h
bWUpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3Vic3Rp
dHV0ZUxhYmVscyhtYXBwaW5nKQorICAgIGVuZAorICAgIAorICAgIGRlZiBkZW1hY3JvaWZ5KG1h
Y3JvcykKKyAgICAgICAgbXlNYWNyb3MgPSBtYWNyb3MuZHVwCisgICAgICAgIEBsaXN0LmVhY2gg
eworICAgICAgICAgICAgfCBpdGVtIHwKKyAgICAgICAgICAgIGlmIGl0ZW0uaXNfYT8gTWFjcm8K
KyAgICAgICAgICAgICAgICBteU1hY3Jvc1tpdGVtLm5hbWVdID0gaXRlbQorICAgICAgICAgICAg
ZW5kCisgICAgICAgIH0KKyAgICAgICAgbmV3TGlzdCA9IFtdCisgICAgICAgIEBsaXN0LmVhY2gg
eworICAgICAgICAgICAgfCBpdGVtIHwKKyAgICAgICAgICAgIGlmIGl0ZW0uaXNfYT8gTWFjcm8K
KyAgICAgICAgICAgICAgICAjIElnbm9yZS4KKyAgICAgICAgICAgIGVsc2lmIGl0ZW0uaXNfYT8g
TWFjcm9DYWxsCisgICAgICAgICAgICAgICAgbWFwcGluZyA9IHt9CisgICAgICAgICAgICAgICAg
bXlNeU1hY3JvcyA9IG15TWFjcm9zLmR1cAorICAgICAgICAgICAgICAgIHJhaXNlICJDb3VsZCBu
b3QgZmluZCBtYWNybyAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1
bmxlc3MgbXlNYWNyb3NbaXRlbS5uYW1lXQorICAgICAgICAgICAgICAgIHJhaXNlICJBcmd1bWVu
dCBjb3VudCBtaXNtYXRjaCBmb3IgY2FsbCB0byAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVP
cmlnaW5TdHJpbmd9IiB1bmxlc3MgaXRlbS5vcGVyYW5kcy5zaXplID09IG15TWFjcm9zW2l0ZW0u
bmFtZV0udmFyaWFibGVzLnNpemUKKyAgICAgICAgICAgICAgICBpdGVtLm9wZXJhbmRzLnNpemUu
dGltZXMgeworICAgICAgICAgICAgICAgICAgICB8IGlkeCB8CisgICAgICAgICAgICAgICAgICAg
IGlmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBWYXJpYWJsZSBhbmQgbXlNYWNyb3NbaXRlbS5v
cGVyYW5kc1tpZHhdLm5hbWVdCisgICAgICAgICAgICAgICAgICAgICAgICBteU15TWFjcm9zW215
TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jvc1tpdGVtLm9w
ZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNy
b3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgICAgICAg
ICAgICBlbHNpZiBpdGVtLm9wZXJhbmRzW2lkeF0uaXNfYT8gTWFjcm8KKyAgICAgICAgICAgICAg
ICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5u
YW1lXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGlu
Z1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAg
ICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG15TXlNYWNyb3NbbXlN
YWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBuaWwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBpdGVt
Lm9wZXJhbmRzW2lkeF0KKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIG5ld0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5LnN1
YnN0aXR1dGUobWFwcGluZykuZGVtYWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMoaXRl
bS5uYW1lKS5saXN0CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8
PCBpdGVtLmRlbWFjcm9pZnkobXlNYWNyb3MpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQor
ICAgICAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkuc3Vic3RpdHV0ZSh7fSkK
KyAgICBlbmQKK2VuZAorCisjCisjIG5vZGUucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMp
CisjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBoYXMgb2Zmc2V0IHZhbHVlcyBpbnN0ZWFk
IG9mIHN5bWJvbGljCisjIG9mZnNldHMuCisjCisKK2NsYXNzIE5vZGUKKyAgICBkZWYgcmVzb2x2
ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgICAgIG1hcENoaWxkcmVuIHsKKyAgICAgICAg
ICAgIHwgY2hpbGQgfAorICAgICAgICAgICAgY2hpbGQucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywg
c2l6ZXMpCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXQKKyAg
ICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgICAgIGlmIG9mZnNldHNb
c2VsZl0KKyAgICAgICAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0c1tzZWxm
XSkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VsZgorICAgICAgICBlbmQKKyAgICBlbmQK
K2VuZAorCitjbGFzcyBTaXplb2YKKyAgICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6
ZXMpCisgICAgICAgIGlmIHNpemVzW3NlbGZdCisgICAgICAgICAgICBJbW1lZGlhdGUubmV3KGNv
ZGVPcmlnaW4sIHNpemVzW3NlbGZdKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBwdXRzICJD
b3VsZCBub3QgZmluZCAje3NlbGYuaW5zcGVjdH0gaW4gI3tzaXplcy5rZXlzLmluc3BlY3R9Igor
ICAgICAgICAgICAgcHV0cyAic2l6ZXMgPSAje3NpemVzLmluc3BlY3R9IgorICAgICAgICAgICAg
c2VsZgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCisjCisjIG5vZGUuZm9sZAorIworIyBS
ZXNvbHZlIGNvbnN0YW50IHJlZmVyZW5jZXMgYW5kIGNvbXB1dGUgYXJpdGhtZXRpYyBleHByZXNz
aW9ucy4KKyMKKworY2xhc3MgTm9kZQorICAgIGRlZiBmb2xkCisgICAgICAgIG1hcENoaWxkcmVu
IHsKKyAgICAgICAgICAgIHwgY2hpbGQgfAorICAgICAgICAgICAgY2hpbGQuZm9sZAorICAgICAg
ICB9CisgICAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcworICAgIGRlZiBmb2xkCisg
ICAgICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgICAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAor
ICAgICAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgICAg
IHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIEltbWVk
aWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgKyBAcmlnaHQudmFsdWUpCisgICAgZW5k
CitlbmQKKworY2xhc3MgU3ViSW1tZWRpYXRlcworICAgIGRlZiBmb2xkCisgICAgICAgIEBsZWZ0
ID0gQGxlZnQuZm9sZAorICAgICAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgICAgICByZXR1
cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJldHVybiBzZWxm
IHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIEltbWVkaWF0ZS5uZXcoY29k
ZU9yaWdpbiwgQGxlZnQudmFsdWUgLSBAcmlnaHQudmFsdWUpCisgICAgZW5kCitlbmQKKworY2xh
c3MgTXVsSW1tZWRpYXRlcworICAgIGRlZiBmb2xkCisgICAgICAgIEBsZWZ0ID0gQGxlZnQuZm9s
ZAorICAgICAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgICAgICByZXR1cm4gc2VsZiB1bmxl
c3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmln
aHQuaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxl
ZnQudmFsdWUgKiBAcmlnaHQudmFsdWUpCisgICAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRp
YXRlCisgICAgZGVmIGZvbGQKKyAgICAgICAgQGNoaWxkID0gQGNoaWxkLmZvbGQKKyAgICAgICAg
cmV0dXJuIHNlbGYgdW5sZXNzIEBjaGlsZC5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgSW1tZWRp
YXRlLm5ldyhjb2RlT3JpZ2luLCAtQGNoaWxkLnZhbHVlKQorICAgIGVuZAorZW5kCisKKyMKKyMg
bm9kZS5yZXNvbHZlQWZ0ZXJTZXR0aW5ncyhvZmZzZXRzLCBzaXplcykKKyMKKyMgQ29tcGlsZSBh
c3NlbWJseSBhZ2FpbnN0IGEgc2V0IG9mIG9mZnNldHMuCisjCisKK2NsYXNzIE5vZGUKKyAgICBk
ZWYgcmVzb2x2ZShvZmZzZXRzLCBzaXplcykKKyAgICAgICAgZGVtYWNyb2lmeSh7fSkucmVzb2x2
ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpLmZvbGQKKyAgICBlbmQKK2VuZAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY4MSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgUmVn
aXN0ZXJJRAorICAgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgICAgICBjYXNlIG5hbWUKKyAg
ICAgICAgd2hlbiAidDAiLCAiYTAiLCAicjAiLCAidDEiLCAiYTEiLCAicjEiLCAidDIiLCAidDMi
CisgICAgICAgICAgICB0cnVlCisgICAgICAgIHdoZW4gInQ0IiwgImNmciIKKyAgICAgICAgICAg
IGZhbHNlCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGVuZAorICAg
IGVuZAorICAgIAorICAgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgICAgIGNhc2UgbmFtZQor
ICAgICAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIKKyAgICAgICAgICAgIGNhc2Uga2luZAorICAg
ICAgICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAgICAgICAgICIlYWwiCisgICAgICAgICAgICB3
aGVuIDpoYWxmCisgICAgICAgICAgICAgICAgIiVheCIKKyAgICAgICAgICAgIHdoZW4gOmludAor
ICAgICAgICAgICAgICAgICIlZWF4IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHJhaXNlCisgICAgICAgICAgICBlbmQKKyAgICAgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisg
ICAgICAgICAgICBjYXNlIGtpbmQKKyAgICAgICAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgICAg
ICAgICAiJWRsIgorICAgICAgICAgICAgd2hlbiA6aGFsZgorICAgICAgICAgICAgICAgICIlZHgi
CisgICAgICAgICAgICB3aGVuIDppbnQKKyAgICAgICAgICAgICAgICAiJWVkeCIKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZW5kCisgICAgICAg
IHdoZW4gInQyIgorICAgICAgICAgICAgY2FzZSBraW5kCisgICAgICAgICAgICB3aGVuIDpieXRl
CisgICAgICAgICAgICAgICAgIiVjbCIKKyAgICAgICAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAg
ICAgICAgICAiJWN4IgorICAgICAgICAgICAgd2hlbiA6aW50CisgICAgICAgICAgICAgICAgIiVl
Y3giCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAg
IGVuZAorICAgICAgICB3aGVuICJ0MyIKKyAgICAgICAgICAgIGNhc2Uga2luZAorICAgICAgICAg
ICAgd2hlbiA6Ynl0ZQorICAgICAgICAgICAgICAgICIlYmwiCisgICAgICAgICAgICB3aGVuIDpo
YWxmCisgICAgICAgICAgICAgICAgIiVieCIKKyAgICAgICAgICAgIHdoZW4gOmludAorICAgICAg
ICAgICAgICAgICIlZWJ4IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJhaXNl
CisgICAgICAgICAgICBlbmQKKyAgICAgICAgd2hlbiAidDQiCisgICAgICAgICAgICBjYXNlIGtp
bmQKKyAgICAgICAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgICAgICAgICAiJXNpbCIKKyAgICAg
ICAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgICAgICAgICAiJXNpIgorICAgICAgICAgICAgd2hl
biA6aW50CisgICAgICAgICAgICAgICAgIiVlc2kiCisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJjZnIiCisgICAg
ICAgICAgICBjYXNlIGtpbmQKKyAgICAgICAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgICAgICAg
ICAiJWRpbCIKKyAgICAgICAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgICAgICAgICAiJWRpIgor
ICAgICAgICAgICAgd2hlbiA6aW50CisgICAgICAgICAgICAgICAgIiVlZGkiCisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3
aGVuICJzcCIKKyAgICAgICAgICAgIGNhc2Uga2luZAorICAgICAgICAgICAgd2hlbiA6Ynl0ZQor
ICAgICAgICAgICAgICAgICIlc3BsIgorICAgICAgICAgICAgd2hlbiA6aGFsZgorICAgICAgICAg
ICAgICAgICIlc3AiCisgICAgICAgICAgICB3aGVuIDppbnQKKyAgICAgICAgICAgICAgICAiJWVz
cCIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAg
ZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJCYWQgcmVnaXN0ZXIgI3tuYW1l
fSBmb3IgWDg2IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAgIGVuZAorICAgIGVuZAor
ICAgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICAgICAiKiN7eDg2T3BlcmFuZChraW5k
KX0iCisgICAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3RlcklECisgICAgZGVmIHg4Nk9wZXJh
bmQoa2luZCkKKyAgICAgICAgcmFpc2UgdW5sZXNzIGtpbmQgPT0gOmRvdWJsZQorICAgICAgICBj
YXNlIG5hbWUKKyAgICAgICAgd2hlbiAiZnQwIiwgImZhMCIsICJmciIKKyAgICAgICAgICAgICIl
eG1tMCIKKyAgICAgICAgd2hlbiAiZnQxIiwgImZhMSIKKyAgICAgICAgICAgICIleG1tMSIKKyAg
ICAgICAgd2hlbiAiZnQyIiwgImZhMiIKKyAgICAgICAgICAgICIleG1tMiIKKyAgICAgICAgd2hl
biAiZnQzIiwgImZhMyIKKyAgICAgICAgICAgICIleG1tMyIKKyAgICAgICAgd2hlbiAiZnQ0Igor
ICAgICAgICAgICAgIiV4bW00IgorICAgICAgICB3aGVuICJmdDUiCisgICAgICAgICAgICAiJXht
bTUiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJCYWQgcmVnaXN0ZXIgI3tuYW1l
fSBmb3IgWDg2IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAgIGVuZAorICAgIGVuZAor
ICAgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICAgICAiKiN7eDg2T3BlcmFuZChraW5k
KX0iCisgICAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgICAgZGVmIHg4Nk9wZXJhbmQo
a2luZCkKKyAgICAgICAgIiQje3ZhbHVlfSIKKyAgICBlbmQKKyAgICBkZWYgeDg2Q2FsbE9wZXJh
bmQoa2luZCkKKyAgICAgICAgIiN7dmFsdWV9IgorICAgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJl
c3MKKyAgICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAgICAgICAgdHJ1ZQorICAgIGVuZAorICAg
IAorICAgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgICAgICIje29mZnNldC52YWx1ZX0oI3ti
YXNlLng4Nk9wZXJhbmQoOmludCl9KSIKKyAgICBlbmQKKyAgICBkZWYgeDg2Q2FsbE9wZXJhbmQo
a2luZCkKKyAgICAgICAgIioje3g4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorZW5kCisKK2Ns
YXNzIEJhc2VJbmRleAorICAgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgICAgICB0cnVlCisg
ICAgZW5kCisgICAgCisgICAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAgICAgIiN7b2Zmc2V0
LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0sICN7aW5kZXgueDg2T3BlcmFuZCg6aW50
KX0sICN7c2NhbGV9KSIKKyAgICBlbmQKKworICAgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQor
ICAgICAgICAiKiN7eDg2b3BlcmFuZChraW5kKX0iCisgICAgZW5kCitlbmQKKworY2xhc3MgQWJz
b2x1dGVBZGRyZXNzCisgICAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgICAgIHRydWUKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICAgICAiI3thZGRyZXNz
LnZhbHVlfSIKKyAgICBlbmQKKworICAgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICAg
ICAiKiN7YWRkcmVzcy52YWx1ZX0iCisgICAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVu
Y2UKKyAgICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAgICAgYXNtTGFiZWwKKyAgICBl
bmQKK2VuZAorCitjbGFzcyBMb2NhbExhYmVsUmVmZXJlbmNlCisgICAgZGVmIHg4NkNhbGxPcGVy
YW5kKGtpbmQpCisgICAgICAgIGFzbUxhYmVsCisgICAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1
Y3Rpb24KKyAgICBkZWYgeDg2T3BlcmFuZHMoKmtpbmRzKQorICAgICAgICByYWlzZSB1bmxlc3Mg
a2luZHMuc2l6ZSA9PSBvcGVyYW5kcy5zaXplCisgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAg
IGtpbmRzLnNpemUudGltZXMgeworICAgICAgICAgICAgfCBpZHggfAorICAgICAgICAgICAgcmVz
dWx0IDw8IG9wZXJhbmRzW2lkeF0ueDg2T3BlcmFuZChraW5kc1tpZHhdKQorICAgICAgICB9Cisg
ICAgICAgIHJlc3VsdC5qb2luKCIsICIpCisgICAgZW5kCisKKyAgICBkZWYgeDg2U3VmZml4KGtp
bmQpCisgICAgICAgIGNhc2Uga2luZAorICAgICAgICB3aGVuIDpieXRlCisgICAgICAgICAgICAi
YiIKKyAgICAgICAgd2hlbiA6aGFsZgorICAgICAgICAgICAgInciCisgICAgICAgIHdoZW4gOmlu
dAorICAgICAgICAgICAgImwiCisgICAgICAgIHdoZW4gOmRvdWJsZQorICAgICAgICAgICAgInNk
IgorICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZQorICAgICAgICBlbmQKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgaGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBu
dW1PcGVyYW5kcykKKyAgICAgICAgaWYgbnVtT3BlcmFuZHMgPT0gMworICAgICAgICAgICAgaWYg
b3BlcmFuZHNbMF0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIiN7
b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4
Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZWxzaWYgb3BlcmFuZHNbMV0gPT0gb3BlcmFu
ZHNbMl0KKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAibW92I3t4ODZTdWZmaXgo
a2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2
T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tv
cGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtp
bmQpfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgICAkYXNtLnB1
dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgaGFuZGxlWDg2T3Aob3Bjb2RlLCBraW5kKQorICAgICAgICBoYW5kbGVYODZPcFdpdGhOdW1P
cGVyYW5kcyhvcGNvZGUsIGtpbmQsIG9wZXJhbmRzLnNpemUpCisgICAgZW5kCisgICAgCisgICAg
ZGVmIGhhbmRsZVg4NlNoaWZ0KG9wY29kZSwga2luZCkKKyAgICAgICAgaWYgb3BlcmFuZHNbMF0u
aXNfYT8gSW1tZWRpYXRlIG9yIG9wZXJhbmRzWzBdID09IFJlZ2lzdGVySUQuZm9yTmFtZShuaWws
ICJ0MiIpCisgICAgICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgJGFzbS5wdXRzICJ4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmludCl9LCAlZWN4IgorICAgICAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gJWNs
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgJGFzbS5wdXRz
ICJ4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgICAgICBl
bmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaGFuZGxlWDg2RG91YmxlQnJhbmNoKGJyYW5jaE9w
Y29kZSwgbW9kZSkKKyAgICAgICAgY2FzZSBtb2RlCisgICAgICAgIHdoZW4gOm5vcm1hbAorICAg
ICAgICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91
YmxlKX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAgIHdoZW4g
OnJldmVyc2UKKyAgICAgICAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9Igor
ICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZSBtb2RlLmluc3BlY3QKKyAgICAgICAgZW5k
CisgICAgICAgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0uYXNtTGFi
ZWx9IgorICAgIGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlKG9wY29kZVN1
ZmZpeCwga2luZCkKKyAgICAgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZCBv
cGVyYW5kc1swXS52YWx1ZSA9PSAwIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklEIGFu
ZCAob3Bjb2RlU3VmZml4ID09ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikKKyAgICAgICAg
ICAgICRhc20ucHV0cyAidGVzdCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoa2luZCl9IgorICAgICAgICBlbHNpZiBvcGVyYW5kc1sxXS5pc19hPyBJbW1lZGlhdGUg
YW5kIG9wZXJhbmRzWzFdLnZhbHVlID09IDAgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVy
SUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAg
ICAgICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICRhc20ucHV0cyAi
Y21wI3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgIGVuZAorICAgIGVuZAorICAg
IAorICAgIGRlZiBoYW5kbGVYODZJbnRCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgICAg
ICBoYW5kbGVYODZJbnRDb21wYXJlKGJyYW5jaE9wY29kZVsxLi4tMV0sIGtpbmQpCisgICAgICAg
ICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAg
IGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kKQorICAg
ICAgICBpZiBvcGVyYW5kLnN1cHBvcnRzOEJpdE9uWDg2CisgICAgICAgICAgICAkYXNtLnB1dHMg
IiN7c2V0T3Bjb2RlfSAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9IgorICAgICAgICAgICAg
JGFzbS5wdXRzICJtb3Z6YmwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5k
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICBlbHNlCisgICAgICAgICAgICAkYXNtLnB1dHMg
InhjaGdsICN7b3BlcmFuZC54ODZPcGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICAgICAgICAgICRh
c20ucHV0cyAiI3tzZXRPcGNvZGV9ICVhbCIKKyAgICAgICAgICAgICRhc20ucHV0cyAibW92emJs
ICVhbCwgJWVheCIKKyAgICAgICAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVyYW5kLng4Nk9w
ZXJhbmQoOmludCl9LCAlZWF4IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
aGFuZGxlWDg2SW50Q29tcGFyZVNldChzZXRPcGNvZGUsIGtpbmQpCisgICAgICAgIGhhbmRsZVg4
NkludENvbXBhcmUoc2V0T3Bjb2RlWzMuLi0xXSwga2luZCkKKyAgICAgICAgaGFuZGxlWDg2U2V0
KHNldE9wY29kZSwgb3BlcmFuZHNbMl0pCisgICAgZW5kCisgICAgCisgICAgZGVmIGhhbmRsZVg4
NlRlc3Qoa2luZCkKKyAgICAgICAgdmFsdWUgPSBvcGVyYW5kc1swXQorICAgICAgICBjYXNlIG9w
ZXJhbmRzLnNpemUKKyAgICAgICAgd2hlbiAyCisgICAgICAgICAgICBtYXNrID0gSW1tZWRpYXRl
Lm5ldyhjb2RlT3JpZ2luLCAtMSkKKyAgICAgICAgd2hlbiAzCisgICAgICAgICAgICBtYXNrID0g
b3BlcmFuZHNbMV0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkV4cGVjdGVkIDIg
b3IgMyBvcGVyYW5kcywgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0
cmluZ30iCisgICAgICAgIGVuZAorICAgICAgICAKKyAgICAgICAgaWYgbWFzay5pc19hPyBJbW1l
ZGlhdGUgYW5kIG1hc2sudmFsdWUgPT0gLTEKKyAgICAgICAgICAgIGlmIHZhbHVlLmlzX2E/IFJl
Z2lzdGVySUQKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChraW5k
KX0gI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImNtcCN7eDg2U3Vm
Zml4KGtpbmQpfSAkMCwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICBlbHNlCisgICAgICAgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChr
aW5kKX0gI3ttYXNrLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9
IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaGFuZGxlWDg2QnJhbmNoVGVz
dChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICAg
ICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kcy5sYXN0LmFzbUxhYmVsfSIK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgaGFuZGxlWDg2U2V0VGVzdChzZXRPcGNvZGUsIGtpbmQp
CisgICAgICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICAgICAgaGFuZGxlWDg2U2V0KHNldE9w
Y29kZSwgb3BlcmFuZHMubGFzdCkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaGFuZGxlWDg2T3BC
cmFuY2gob3Bjb2RlLCBicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgICAgIGhhbmRsZVg4Nk9wV2l0
aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgICAgIGNh
c2Ugb3BlcmFuZHMuc2l6ZQorICAgICAgICB3aGVuIDQKKyAgICAgICAgICAgIGp1bXBUYXJnZXQg
PSBvcGVyYW5kc1szXQorICAgICAgICB3aGVuIDMKKyAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBv
cGVyYW5kc1syXQorICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZSBzZWxmLmluc3BlY3QK
KyAgICAgICAgZW5kCisgICAgICAgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7anVtcFRh
cmdldC5hc21MYWJlbH0iCisgICAgZW5kCisgICAgCisgICAgZGVmIGhhbmRsZVg4NlN1YkJyYW5j
aChicmFuY2hPcGNvZGUsIGtpbmQpCisgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gNCBhbmQg
b3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICRhc20ucHV0cyAibmVnbCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJh
ZGRsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGhhbmRsZVg4Nk9wV2l0aE51
bU9wZXJhbmRzKCJzdWIje3g4NlN1ZmZpeChraW5kKX0iLCBraW5kLCBvcGVyYW5kcy5zaXplIC0g
MSkKKyAgICAgICAgZW5kCisgICAgICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgICAgICB3aGVu
IDQKKyAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgICAgICB3aGVuIDMK
KyAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgICAgICBlbHNlCisgICAg
ICAgICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICAgICAgZW5kCisgICAgICAgICRhc20ucHV0
cyAiI3ticmFuY2hPcGNvZGV9ICN7anVtcFRhcmdldC5hc21MYWJlbH0iCisgICAgZW5kCisgICAg
CisgICAgZGVmIGxvd2VyWDg2CisgICAgICAgICRhc20uY29tbWVudCBjb2RlT3JpZ2luU3RyaW5n
CisgICAgICAgIGNhc2Ugb3Bjb2RlCisgICAgICAgIHdoZW4gImFkZGkiLCAiYWRkcCIKKyAgICAg
ICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRp
YXRlCisgICAgICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lz
dGVySUQKKyAgICAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVn
aXN0ZXJJRAorICAgICAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAg
ICAgICAgICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAg
ICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdmwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAgICAg
ICAgICAgZW5kCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAkYXNt
LnB1dHMgImxlYWwgI3tvcGVyYW5kc1swXS52YWx1ZX0oI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDppbnQpfSksICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAgICAg
ICAgZW5kCisgICAgICAgICAgICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRz
WzBdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFu
ZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVy
YW5kc1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJsZWFs
ICgje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9w
ZXJhbmRzWzBdCisgICAgICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYWRkbCAje3g4Nk9wZXJh
bmRzKDppbnQsIDppbnQpfSIKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVuZAor
ICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiCisgICAgICAgICAgICBoYW5kbGVYODZPcCgiYW5k
bCIsIDppbnQpCisgICAgICAgIHdoZW4gImxzaGlmdGkiCisgICAgICAgICAgICBoYW5kbGVYODZT
aGlmdCgic2FsbCIsIDppbnQpCisgICAgICAgIHdoZW4gIm11bGkiCisgICAgICAgICAgICBpZiBv
cGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAg
ICAgICAgICAgICRhc20ucHV0cyAiaW11bGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50LCA6aW50
KX0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgIyBGSVhNRTogY291bGQgZG8g
c29tZSBwZWVwaG9sZSBpbiBjYXNlIHRoZSBsZWZ0IG9wZXJhbmQgaXMgaW1tZWRpYXRlIGFuZCBp
dCdzCisgICAgICAgICAgICAgICAgIyBhIHBvd2VyIG9mIHR3by4KKyAgICAgICAgICAgICAgICBo
YW5kbGVYODZPcCgiaW11bGwiLCA6aW50KQorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4g
Im5lZ2kiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm5lZ2wgI3t4ODZPcGVyYW5kcyg6aW50KX0i
CisgICAgICAgIHdoZW4gIm5vdGkiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm5vdGwgI3t4ODZP
cGVyYW5kcyg6aW50KX0iCisgICAgICAgIHdoZW4gIm9yaSIsICJvcnAiCisgICAgICAgICAgICBo
YW5kbGVYODZPcCgib3JsIiwgOmludCkKKyAgICAgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgICAg
ICAgIGhhbmRsZVg4NlNoaWZ0KCJzYXJsIiwgOmludCkKKyAgICAgICAgd2hlbiAidXJzaGlmdGki
CisgICAgICAgICAgICBoYW5kbGVYODZTaGlmdCgic2hybCIsIDppbnQpCisgICAgICAgIHdoZW4g
InN1YmkiLCAic3VicCIKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3Bl
cmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIm5lZ2wg
I3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAgICAgICAkYXNtLnB1
dHMgImFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54
ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBoYW5k
bGVYODZPcCgic3VibCIsIDppbnQpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgd2hlbiAieG9y
aSIsICJ4b3JwIgorICAgICAgICAgICAgaGFuZGxlWDg2T3AoInhvcmwiLCA6aW50KQorICAgICAg
ICB3aGVuICJsb2FkaSIsICJzdG9yZWkiLCAibG9hZHAiLCAic3RvcmVwIgorICAgICAgICAgICAg
JGFzbS5wdXRzICJtb3ZsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgICB3aGVu
ICJsb2FkYiIKKyAgICAgICAgICAgICRhc20ucHV0cyAibW92emJsICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAg
ICB3aGVuICJsb2FkYnMiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdnNibCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICAgICAgd2hlbiAibG9hZGgiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdnp3bCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpp
bnQpfSIKKyAgICAgICAgd2hlbiAibG9hZGhzIgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3Zz
d2wgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpoYWxmKX0sICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICAgICAgICRhc20ucHV0
cyAibW92YiAje3g4Nk9wZXJhbmRzKDpieXRlLCA6Ynl0ZSl9IgorICAgICAgICB3aGVuICJsb2Fk
ZCIsICJtb3ZlZCIsICJzdG9yZWQiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdnNkICN7eDg2
T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgICAgICB3aGVuICJhZGRkIgorICAgICAg
ICAgICAgJGFzbS5wdXRzICJhZGRzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIK
KyAgICAgICAgd2hlbiAiZGl2ZCIKKyAgICAgICAgICAgICRhc20ucHV0cyAiZGl2c2QgI3t4ODZP
cGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgICAgIHdoZW4gInN1YmQiCisgICAgICAg
ICAgICAkYXNtLnB1dHMgInN1YnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9Igor
ICAgICAgICB3aGVuICJtdWxkIgorICAgICAgICAgICAgJGFzbS5wdXRzICJtdWxzZCAje3g4Nk9w
ZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICAgICAgd2hlbiAic3FydGQiCisgICAgICAg
ICAgICAkYXNtLnB1dHMgInNxcnRzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgICB3aGVuICJjaTJk
IgorICAgICAgICAgICAgJGFzbS5wdXRzICJjdnRzaTJzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgICB3
aGVuICJiZGVxIgorICAgICAgICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgi
YmRlcSIpCisgICAgICAgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAg
ICAgICAgICAgICRhc20ucHV0cyAianAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwg
aXNVbm9yZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiamUgI3tMYWJl
bFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgb3BlcmFuZHNbMl0pLmFzbUxhYmVsfSIKKyAgICAg
ICAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgICAgICB3aGVuICJiZG5lcSIKKyAg
ICAgICAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiam5lIiwgOm5vcm1hbCkKKyAgICAgICAg
d2hlbiAiYmRndCIKKyAgICAgICAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6bm9y
bWFsKQorICAgICAgICB3aGVuICJiZGd0ZXEiCisgICAgICAgICAgICBoYW5kbGVYODZEb3VibGVC
cmFuY2goImphZSIsIDpub3JtYWwpCisgICAgICAgIHdoZW4gImJkbHQiCisgICAgICAgICAgICBo
YW5kbGVYODZEb3VibGVCcmFuY2goImphIiwgOnJldmVyc2UpCisgICAgICAgIHdoZW4gImJkbHRl
cSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOnJldmVyc2UpCisg
ICAgICAgIHdoZW4gImJkZXF1biIKKyAgICAgICAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgi
amUiLCA6bm9ybWFsKQorICAgICAgICB3aGVuICJiZG5lcXVuIgorICAgICAgICAgICAgaXNVbm9y
ZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICAgICAgICBpc0VxdWFs
ID0gTG9jYWxMYWJlbC51bmlxdWUoImJkbmVxdW4iKQorICAgICAgICAgICAgJGFzbS5wdXRzICJ1
Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImpwICN7TGFiZWxS
ZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzVW5vcmRlcmVkKS5hc21MYWJlbH0iCisgICAgICAg
ICAgICAkYXNtLnB1dHMgImplICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzRXF1
YWwpLmFzbUxhYmVsfSIKKyAgICAgICAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAg
ICAgICAgICAgJGFzbS5wdXRzICJqbXAgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAg
ICAgICBpc0VxdWFsLmxvd2VyKCJYODYiKQorICAgICAgICB3aGVuICJiZGd0dW4iCisgICAgICAg
ICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOnJldmVyc2UpCisgICAgICAgIHdoZW4g
ImJkZ3RlcXVuIgorICAgICAgICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6cmV2
ZXJzZSkKKyAgICAgICAgd2hlbiAiYmRsdHVuIgorICAgICAgICAgICAgaGFuZGxlWDg2RG91Ymxl
QnJhbmNoKCJqYiIsIDpub3JtYWwpCisgICAgICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgICAg
ICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6bm9ybWFsKQorICAgICAgICB3aGVuICJi
dGQyaSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiY3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2
T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAgICAgICAkYXNtLnB1dHMgImNtcGwgJDB4ODAwMDAwMDAgI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKDppbnQpfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiamUgI3tvcGVyYW5kc1syXS5hc21M
YWJlbH0iCisgICAgICAgIHdoZW4gInRkMmkiCisgICAgICAgICAgICAkYXNtLnB1dHMgImN2dHRz
ZDJzaSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmludCl9IgorICAgICAgICB3aGVuICJiY2QyaSIKKyAgICAgICAgICAgICRhc20u
cHV0cyAiY3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgInRlc3Rs
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImplICN7b3BlcmFuZHNbMl0uYXNtTGFi
ZWx9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJjdnRzaTJzZCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9LCAleG1tNyIKKyAgICAgICAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICAgICAgICRhc20u
cHV0cyAianAgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICAkYXNtLnB1dHMg
ImpuZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAibW92ZHoiCisgICAg
ICAgICAgICAkYXNtLnB1dHMgInhvcnBkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0sICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAgIHdoZW4gInBv
cCIKKyAgICAgICAgICAgICRhc20ucHV0cyAicG9wICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgICAgIHdoZW4gInB1c2giCisgICAgICAgICAgICAkYXNtLnB1dHMgInB1c2gg
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgd2hlbiAibW92ZSIsICJz
eGkycCIsICJ6eGkycCIKKyAgICAgICAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBv
cGVyYW5kc1swXSBhbmQgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAg
ICAgICRhc20ucHV0cyAieG9ybCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29w
ZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgICAgZWxzaWYgb3BlcmFuZHNb
MF0gIT0gb3BlcmFuZHNbMV0KKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdmwgI3t4ODZP
cGVyYW5kcyg6aW50LCA6aW50KX0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgd2hlbiAibm9w
IgorICAgICAgICAgICAgJGFzbS5wdXRzICJub3AiCisgICAgICAgIHdoZW4gImJpZXEiLCAiYnBl
cSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamUiLCA6aW50KQorICAgICAgICB3
aGVuICJiaW5lcSIsICJicG5lcSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5l
IiwgOmludCkKKyAgICAgICAgd2hlbiAiYmlhIiwgImJwYSIKKyAgICAgICAgICAgIGhhbmRsZVg4
NkludEJyYW5jaCgiamEiLCA6aW50KQorICAgICAgICB3aGVuICJiaWFlcSIsICJicGFlcSIKKyAg
ICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmludCkKKyAgICAgICAgd2hlbiAi
YmliIiwgImJwYiIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6aW50KQor
ICAgICAgICB3aGVuICJiaWJlcSIsICJicGJlcSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludEJy
YW5jaCgiamJlIiwgOmludCkKKyAgICAgICAgd2hlbiAiYmlndCIsICJicGd0IgorICAgICAgICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDppbnQpCisgICAgICAgIHdoZW4gImJpZ3RlcSIs
ICJicGd0ZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnZSIsIDppbnQpCisg
ICAgICAgIHdoZW4gImJpbHQiLCAiYnBsdCIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5j
aCgiamwiLCA6aW50KQorICAgICAgICB3aGVuICJiaWx0ZXEiLCAiYnBsdGVxIgorICAgICAgICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbGUiLCA6aW50KQorICAgICAgICB3aGVuICJiYmVxIgor
ICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDpieXRlKQorICAgICAgICB3aGVu
ICJiYm5lcSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmJ5dGUpCisg
ICAgICAgIHdoZW4gImJiYSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6
Ynl0ZSkKKyAgICAgICAgd2hlbiAiYmJhZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFu
Y2goImphZSIsIDpieXRlKQorICAgICAgICB3aGVuICJiYmIiCisgICAgICAgICAgICBoYW5kbGVY
ODZJbnRCcmFuY2goImpiIiwgOmJ5dGUpCisgICAgICAgIHdoZW4gImJiYmVxIgorICAgICAgICAg
ICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAiYmJndCIK
KyAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamciLCA6Ynl0ZSkKKyAgICAgICAgd2hl
biAiYmJndGVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6Ynl0ZSkK
KyAgICAgICAgd2hlbiAiYmJsdCIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwi
LCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAiYmJsdGVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50
QnJhbmNoKCJqbHRlcSIsIDpieXRlKQorICAgICAgICB3aGVuICJidGlvIiwgImJ0cG8iCisgICAg
ICAgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDppbnQpCisgICAgICAgIHdoZW4gImJ0
aXMiLCAiYnRwcyIKKyAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmludCkK
KyAgICAgICAgd2hlbiAiYnRpeiIsICJidHB6IgorICAgICAgICAgICAgaGFuZGxlWDg2QnJhbmNo
VGVzdCgianoiLCA6aW50KQorICAgICAgICB3aGVuICJidGlueiIsICJidHBueiIKKyAgICAgICAg
ICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpueiIsIDppbnQpCisgICAgICAgIHdoZW4gImJ0Ym8i
CisgICAgICAgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbyIsIDpieXRlKQorICAgICAgICB3
aGVuICJidGJzIgorICAgICAgICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6Ynl0ZSkK
KyAgICAgICAgd2hlbiAiYnRieiIKKyAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6
IiwgOmJ5dGUpCisgICAgICAgIHdoZW4gImJ0Ym56IgorICAgICAgICAgICAgaGFuZGxlWDg2QnJh
bmNoVGVzdCgiam56IiwgOmJ5dGUpCisgICAgICAgIHdoZW4gImptcCIKKyAgICAgICAgICAgICRh
c20ucHV0cyAiam1wICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgICAg
ICB3aGVuICJiYWRkaW8iLCAiYmFkZHBvIgorICAgICAgICAgICAgaGFuZGxlWDg2T3BCcmFuY2go
ImFkZGwiLCAiam8iLCA6aW50KQorICAgICAgICB3aGVuICJiYWRkaXMiLCAiYmFkZHBzIgorICAg
ICAgICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianMiLCA6aW50KQorICAgICAgICB3
aGVuICJiYWRkaXoiLCAiYmFkZHB6IgorICAgICAgICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFk
ZGwiLCAianoiLCA6aW50KQorICAgICAgICB3aGVuICJiYWRkaW56IiwgImJhZGRwbnoiCisgICAg
ICAgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbnoiLCA6aW50KQorICAgICAgICB3
aGVuICJic3ViaW8iCisgICAgICAgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpvIiwgOmludCkK
KyAgICAgICAgd2hlbiAiYnN1YmlzIgorICAgICAgICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJq
cyIsIDppbnQpCisgICAgICAgIHdoZW4gImJzdWJpeiIKKyAgICAgICAgICAgIGhhbmRsZVg4NlN1
YkJyYW5jaCgianoiLCA6aW50KQorICAgICAgICB3aGVuICJic3ViaW56IgorICAgICAgICAgICAg
aGFuZGxlWDg2U3ViQnJhbmNoKCJqbnoiLCA6aW50KQorICAgICAgICB3aGVuICJibXVsaW8iCisg
ICAgICAgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAiam8iLCA6aW50KQorICAgICAg
ICB3aGVuICJibXVsaXMiCisgICAgICAgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAi
anMiLCA6aW50KQorICAgICAgICB3aGVuICJibXVsaXoiCisgICAgICAgICAgICBoYW5kbGVYODZP
cEJyYW5jaCgiaW11bGwiLCAianoiLCA6aW50KQorICAgICAgICB3aGVuICJibXVsaW56IgorICAg
ICAgICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImltdWxsIiwgImpueiIsIDppbnQpCisgICAgICAg
IHdoZW4gImJvcmlvIgorICAgICAgICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqbyIs
IDppbnQpCisgICAgICAgIHdoZW4gImJvcmlzIgorICAgICAgICAgICAgaGFuZGxlWDg2T3BCcmFu
Y2goIm9ybCIsICJqcyIsIDppbnQpCisgICAgICAgIHdoZW4gImJvcml6IgorICAgICAgICAgICAg
aGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqeiIsIDppbnQpCisgICAgICAgIHdoZW4gImJvcmlu
eiIKKyAgICAgICAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAiam56IiwgOmludCkKKyAg
ICAgICAgd2hlbiAiYnJlYWsiCisgICAgICAgICAgICAkYXNtLnB1dHMgImludCAkMyIKKyAgICAg
ICAgd2hlbiAiY2FsbCIKKyAgICAgICAgICAgICRhc20ucHV0cyAiY2FsbCAje29wZXJhbmRzWzBd
Lng4NkNhbGxPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgd2hlbiAicmV0IgorICAgICAgICAgICAg
JGFzbS5wdXRzICJyZXQiCisgICAgICAgIHdoZW4gImNpZXEiLCAiY3BlcSIKKyAgICAgICAgICAg
IGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGUiLCA6aW50KQorICAgICAgICB3aGVuICJjaW5l
cSIsICJjcG5lcSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldG5lIiwg
OmludCkKKyAgICAgICAgd2hlbiAiY2lhIiwgImNwYSIKKyAgICAgICAgICAgIGhhbmRsZVg4Nklu
dENvbXBhcmVTZXQoInNldGEiLCA6aW50KQorICAgICAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIK
KyAgICAgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGFlIiwgOmludCkKKyAgICAg
ICAgd2hlbiAiY2liIiwgImNwYiIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQo
InNldGIiLCA6aW50KQorICAgICAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAgICAgICAg
IGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGJlIiwgOmludCkKKyAgICAgICAgd2hlbiAiY2ln
dCIsICJjcGd0IgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZyIsIDpp
bnQpCisgICAgICAgIHdoZW4gImNpZ3RlcSIsICJjcGd0ZXEiCisgICAgICAgICAgICBoYW5kbGVY
ODZJbnRDb21wYXJlU2V0KCJzZXRnZSIsIDppbnQpCisgICAgICAgIHdoZW4gImNpbHQiLCAiY3Bs
dCIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGwiLCA6aW50KQorICAg
ICAgICB3aGVuICJjaWx0ZXEiLCAiY3BsdGVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29t
cGFyZVNldCgic2V0bGUiLCA6aW50KQorICAgICAgICB3aGVuICJ0aW8iCisgICAgICAgICAgICBo
YW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmludCkKKyAgICAgICAgd2hlbiAidGlzIgorICAgICAg
ICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0cyIsIDppbnQpCisgICAgICAgIHdoZW4gInRpeiIK
KyAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHoiLCA6aW50KQorICAgICAgICB3aGVu
ICJ0aW56IgorICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6aW50KQorICAg
ICAgICB3aGVuICJ0Ym8iCisgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmJ5
dGUpCisgICAgICAgIHdoZW4gInRicyIKKyAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNl
dHMiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAidGJ6IgorICAgICAgICAgICAgaGFuZGxlWDg2U2V0
VGVzdCgic2V0eiIsIDpieXRlKQorICAgICAgICB3aGVuICJ0Ym56IgorICAgICAgICAgICAgaGFu
ZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAicGVlayIKKyAgICAg
ICAgICAgICRhc20ucHV0cyAibW92bCAje29wZXJhbmRzWzBdLnZhbHVlICogNH0oJWVzcCksICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIHdoZW4gInBva2UiCisgICAg
ICAgICAgICAkYXNtLnB1dHMgIm1vdmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwg
I3tvcGVyYW5kc1sxXS52YWx1ZSAqIDR9KCVlc3ApIgorICAgICAgICB3aGVuICJjZHFpIgorICAg
ICAgICAgICAgJGFzbS5wdXRzICJjZHEiCisgICAgICAgIHdoZW4gImlkaXZpIgorICAgICAgICAg
ICAgJGFzbS5wdXRzICJpZGl2bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAg
ICAgICB3aGVuICJmaWkyZCIKKyAgICAgICAgICAgICRhc20ucHV0cyAibW92ZCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
IgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0sICV4bW03IgorICAgICAgICAgICAgJGFzbS5wdXRzICJwc2xscSAkMzIsICV4bW03Igor
ICAgICAgICAgICAgJGFzbS5wdXRzICJwb3IgJXhtbTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0iCisgICAgICAgIHdoZW4gImZkMmlpIgorICAgICAgICAgICAgJGFzbS5wdXRz
ICJtb3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0u
eDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdnNkICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAgICAgICAgICAgJGFzbS5wdXRz
ICJwc3JscSAkMzIsICV4bW03IgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZzZCAleG1tNywg
I3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgd2hlbiAiYm8iCisgICAg
ICAgICAgICAkYXNtLnB1dHMgImpvICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgICB3
aGVuICJicyIKKyAgICAgICAgICAgICRhc20ucHV0cyAianMgI3tvcGVyYW5kc1swXS5hc21MYWJl
bH0iCisgICAgICAgIHdoZW4gImJ6IgorICAgICAgICAgICAgJGFzbS5wdXRzICJqeiAje29wZXJh
bmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYm56IgorICAgICAgICAgICAgJGFzbS5w
dXRzICJqbnogI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImxlYWkiLCAi
bGVhcCIKKyAgICAgICAgICAgICRhc20ucHV0cyAibGVhbCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICBlbHNl
CisgICAgICAgICAgICByYWlzZSAiQmFkIG9wY29kZTogI3tvcGNvZGV9IgorICAgICAgICBlbmQK
KyAgICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2Rl
U3BlY2lhbGl6YXRpb25LaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisjZGVmaW5lIENv
ZGVTcGVjaWFsaXphdGlvbktpbmRfaAorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBDb2RlU3Bl
Y2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmgJKHJldmlzaW9uIDEwODE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vblNsb3dQYXRocy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5l
IENvbW1vblNsb3dQYXRoc19oCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgog
I2luY2x1ZGUgIkpTQXJyYXkuaCIKIApAQCAtNDEsNiArNDIsMzggQEAgbmFtZXNwYWNlIEpTQyB7
CiAKIG5hbWVzcGFjZSBDb21tb25TbG93UGF0aHMgewogCitBTFdBWVNfSU5MSU5FIEV4ZWNTdGF0
ZSogYXJpdHlDaGVja0ZvcihFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJG
aWxlLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5jdGlvbiogY2Fs
bGVlID0gYXNGdW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgQVNTRVJUKCFjYWxsZWUtPmlz
SG9zdEZ1bmN0aW9uKCkpOworICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+
anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgIGludCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcyA9IGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
KCk7CisKKyAgICAvLyBUaGlzIGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2Fz
ZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KKyAgICBp
ZiAoIXJlZ2lzdGVyRmlsZS0+Z3JvdyhleGVjLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+
bnVtUGFyYW1ldGVycygpICsgbmV3Q29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgQVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlz
IDwgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpOworCisgICAgLy8gVG9vIGZldyBhcmd1
bWVudHMgLS0gY29weSBjYWxsIGZyYW1lIGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNz
aW5nIGFyZ3VtZW50cyB3aXRoIHVuZGVmaW5lZC4KKyAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2Rl
QmxvY2stPm51bVBhcmFtZXRlcnMoKSAtIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOworICAg
IFJlZ2lzdGVyKiBzcmMgPSBleGVjLT5yZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlciogZHN0ID0g
ZXhlYy0+cmVnaXN0ZXJzKCkgKyBkZWx0YTsKKworICAgIGludCBpOworICAgIGludCBlbmQgPSAt
RXhlY1N0YXRlOjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgIGZv
ciAoaSA9IC0xOyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBzcmNbaV07CisKKyAg
ICBlbmQgLT0gZGVsdGE7CisgICAgZm9yICggOyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3Rb
aV0gPSBqc1VuZGVmaW5lZCgpOworCisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gRXhlY1N0YXRl
OjpjcmVhdGUoZHN0KTsKKyAgICBBU1NFUlQoKHZvaWQqKW5ld0V4ZWMgPD0gcmVnaXN0ZXJGaWxl
LT5lbmQoKSk7CisgICAgcmV0dXJuIG5ld0V4ZWM7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBv
cEluc3RhbmNlT2ZTbG93KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBi
YXNlVmFsLCBKU1ZhbHVlIHByb3RvKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNDZWxsKCkgfHwg
IWJhc2VWYWwuaXNDZWxsKCkgfHwgIXByb3RvLmlzQ2VsbCgpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMTA4MTY0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2lu
Y2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgorI2luY2x1ZGUgIkV4
ZWN1dGlvbkhhcm5lc3MuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVREcml2ZXIu
aCIKICNpbmNsdWRlICJQYXJzZXIuaCIKQEAgLTg4LDcgKzg5LDcgQEAgSW50cmluc2ljIE5hdGl2
ZUV4ZWN1dGFibGU6OmludHJpbnNpYygpIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRpYyB2
b2lkIGpldHRpc29uQ29kZUJsb2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPFQ+
JiBjb2RlQmxvY2spCiB7Ci0gICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpICE9IEpJ
VENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklU
KGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+YWx0ZXJu
YXRpdmUoKSk7CiAgICAgT3duUHRyPFQ+IGNvZGVCbG9ja1RvSmV0dGlzb24gPSBjb2RlQmxvY2su
cmVsZWFzZSgpOwogICAgIGNvZGVCbG9jayA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8VD4oY29kZUJs
b2NrVG9KZXR0aXNvbi0+cmVsZWFzZUFsdGVybmF0aXZlKCkpOwpAQCAtMTc1LDkgKzE3NiwzMCBA
QCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVPcHRpbWl6CiAgICAgcmV0dXJuIGVy
cm9yOwogfQogCit2b2lkIEV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYg
Z2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRl
KGdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6
Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30K
KworaW5saW5lIGNvbnN0IGNoYXIqIHNhbXBsaW5nRGVzY3JpcHRpb24oSklUQ29kZTo6SklUVHlw
ZSBqaXRUeXBlKQoreworICAgIHN3aXRjaCAoaml0VHlwZSkgeworICAgIGNhc2UgSklUQ29kZTo6
SW50ZXJwcmV0ZXJUaHVuazoKKyAgICAgICAgcmV0dXJuICJJbnRlcnByZXRlciBDb21waWxhdGlv
biAoVE9UQUwpIjsKKyAgICBjYXNlIEpJVENvZGU6OkJhc2VsaW5lSklUOgorICAgICAgICByZXR1
cm4gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6REZH
SklUOgorICAgICAgICByZXR1cm4gIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBkZWZh
dWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQorfQorCiBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hbChFeGVj
U3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklU
VHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5
cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFM
KSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1w
bGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5B
QkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oaml0VHlwZSk7CkBAIC0yMTgsNyArMjQwLDcgQEAg
SlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYQogICAgIH0KIAogI2lmIEVO
QUJMRShKSVQpCi0gICAgaWYgKCFqaXRDb21waWxlSWZBcHByb3ByaWF0ZSgqZ2xvYmFsRGF0YSwg
bV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKKyAgICBpZiAoIXBy
ZXBhcmVGb3JFeGVjdXRpb24oKmdsb2JhbERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2Rl
Rm9yQ2FsbCwgaml0VHlwZSkpCiAgICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTMwMyw5
ICszMjUsMTUgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlT3B0aQogICAg
IHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBQcm9ncmFtRXhlY3V0YWJsZTo6aml0Q29tcGlsZShK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxl
SWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZv
ckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1
bHQsIHJlc3VsdCk7Cit9CisKIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZUlu
dGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2RlLCBK
SVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdS
ZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21waWxh
dGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBsaW5n
UmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwogICAg
IAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTM0NCw3
ICszNzIsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlCiAgICAg
fQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJpYXRlKCpn
bG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUp
KQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xvYmFsRGF0YSwgbV9wcm9ncmFtQ29k
ZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAj
ZW5kaWYKIApAQCAtNDIwLDcgKzQ0OCw3IEBAIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4
ZWN1dGFibGU6OmIKICAgICB3aGlsZSAocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKQogICAgICAgICBy
ZXN1bHQgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KHJlc3VsdC0+YWx0ZXJuYXRp
dmUoKSk7CiAgICAgQVNTRVJUKHJlc3VsdCk7Ci0gICAgQVNTRVJUKHJlc3VsdC0+Z2V0SklUVHlw
ZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNl
bGluZUNvZGUocmVzdWx0LT5nZXRKSVRUeXBlKCkpKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CkBAIC00NDYsNiArNDc0LDE4IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBp
bGVPcHQKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRnVuY3Rpb25FeGVjdXRhYmxlOjpq
aXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAgYm9vbCBy
ZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fY29k
ZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0
eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFT
U0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJs
ZTo6aml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7Cisg
ICAgYm9vbCByZXN1bHQgPSBqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGdsb2JhbERh
dGEsIG1fY29kZUJsb2NrRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0
Q29kZUZvckNvbnN0cnVjdFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBKSVRDb2RlOjpi
b3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQor
CiBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tXaXRoQnl0
ZWNvZGVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEZ1bmN0aW9uQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcihraW5kKTsKQEAgLTQ5MCw3
ICs1MzAsNyBAQCBQYXNzT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBGdW5jdGlvbkV4CiAKIEpT
T2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0
YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5
cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBl
ID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCki
IDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxp
bmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJM
RShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNTEyLDcgKzU1Miw3IEBAIEpTT2Jq
ZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0g
bV9jb2RlQmxvY2tGb3JDYWxsLT5zaGFyZWRTeW1ib2xUYWJsZSgpOwogCiAjaWYgRU5BQkxFKEpJ
VCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZv
ckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFw
cmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9j
a0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVj
aywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSwgQ29kZUZvckNhbGwpKQogICAgICAgICByZXR1cm4g
MDsKICNlbmRpZgogCkBAIC01MzIsNyArNTcyLDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y29tcGlsZUZvcgogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxl
Rm9yQ29uc3RydWN0SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2Nv
cGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1Jl
Z2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJh
c2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7
CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihq
aXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5
cGUpOwpAQCAtNTU0LDcgKzU5NCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNv
bXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnNo
YXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGls
ZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9y
Q29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdp
dGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVG
dW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ29u
c3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhB
cml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9yQ29uc3RydWN0KSkKICAg
ICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTA4MTY0KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAjZGVmaW5lIEV4ZWN1dGFibGVfaAogCiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIKKyNpbmNs
dWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTM5LDEyICs0
MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1Z2dlcjsKICAgICBjbGFzcyBF
dmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNs
YXNzIFNjb3BlQ2hhaW5Ob2RlOwogCiAgICAgc3RydWN0IEV4Y2VwdGlvbkluZm87CiAgICAgCi0g
ICAgZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25z
dHJ1Y3QgfTsKICAgICBlbnVtIENvbXBpbGF0aW9uS2luZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9w
dGltaXppbmdDb21waWxhdGlvbiB9OwogCiAgICAgaW5saW5lIGJvb2wgaXNDYWxsKENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKQEAgLTMyNSw2ICszMjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICB9OwogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
YWJsZSB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAg
cHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtMzQ0
LDYgKzM0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQog
ICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAg
ICAgdm9pZCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgRXZh
bENvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAtMzkwLDYgKzM5Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBC
YXNlOwogCkBAIC00MTcsNiArNDIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lm
IEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFs
RGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYK
IAogICAgICAgICBQcm9ncmFtQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC00NTks
NiArNDY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFi
bGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGlj
OgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNTE0LDYgKzUy
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAg
ICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7CisgICAg
ICAgIHZvaWQgaml0Q29tcGlsZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAg
ICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ2FsbCgpIGNvbnN0CkBAIC01NDEsNiArNTQ4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQg
amV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYpOworICAgICAg
ICB2b2lkIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAog
ICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ29uc3RydWN0KCkgY29uc3QKQEAgLTU4OCw2ICs1
OTYsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgamV0dGlzb25PcHRpbWl6
ZWRDb2RlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB2b2lkIGppdENvbXBpbGVGb3IoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAgICAgICAgaml0Q29tcGls
ZUZvckNhbGwoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAg
ICAgICAgICBqaXRDb21waWxlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOworICAgICAgICB9CiAj
ZW5kaWYKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3IoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0aW9uSGFybmVzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIEV4ZWN1dGlvbkhhcm5lc3NfaAorI2RlZmluZSBFeGVjdXRpb25IYXJuZXNzX2gKKworI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkpJ
VERyaXZlci5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+CitpbmxpbmUgYm9vbCBwcmVw
YXJlRm9yRXhlY3V0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPENvZGVCbG9j
a1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0
VHlwZSkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVD
b2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGlu
dGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RW50cnlwb2ludChnbG9iYWxEYXRhLCBjb2Rl
QmxvY2suZ2V0KCksIGppdENvZGUpOworICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0
Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorICAgIHJldHVybiBqaXRDb21waWxlSWZBcHBy
b3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdFR5cGUpOworfQorCitp
bmxpbmUgYm9vbCBwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGpp
dENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFy
ZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYg
KEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9m
ZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RnVuY3Rp
b25FbnRyeXBvaW50KGdsb2JhbERhdGEsIGtpbmQsIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlD
aGVjayk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0
aEFyaXR5Q2hlY2spOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShraW5kKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGpp
dENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLCBqaXRD
b2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIHN5bWJvbFRhYmxlLCBqaXRUeXBlKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8g
RXhlY3V0aW9uSGFybmVzc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmgJKHJldmlzaW9uIDEwODE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIAogICAgIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmll
cjxVbmtub3duPiB7CiAgICAgICAgIHR5cGVkZWYgV3JpdGVCYXJyaWVyPFVua25vd24+IEJhc2U7
CkBAIC0xMjIsNiArMTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNz
IEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAK
ICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAkocmV2aXNpb24gMTA4MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9y
OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OworICAgIGNsYXNzIFN0cnVjdHVyZTsKIAog
ICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllcywKQEAgLTE2Myw2ICsxNjQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAgICAgICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYg
KzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAg
ICAgY2xhc3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwog
ICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0xNDAsNiArMTQx
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAg
c3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0
IElkZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMTA4MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkZ1bmN0aW9u
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0
Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJK
U0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgpAQCAtMTQxLDYg
KzE0Miw4IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICAs
IGtleXdvcmRzKGFkb3B0UHRyKG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRlcnByZXRl
cigwKQogICAgICwgaGVhcCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFzc0luZm8o
JkpTQXJyYXk6OnNfaW5mbykKKyAgICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpTRmluYWxP
YmplY3Q6OnNfaW5mbykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxhc3RTY3Jh
dGNoQnVmZmVyKDApCiAjZW5kaWYKQEAgLTIxNiw5ICsyMTksMTMgQEAgSlNHbG9iYWxEYXRhOjpK
U0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgIGppdFN0dWJzID0gYWRvcHRQdHIobmV3IEpJ
VFRodW5rcyh0aGlzKSk7CiAjZW5kaWYKIAotICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKHRo
aXMtPmNhblVzZUpJVCgpKTsKKyAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSgmbGxpbnREYXRh
LCB0aGlzLT5jYW5Vc2VKSVQoKSk7CisgICAgCisgICAgaW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJu
VmFsdWUoKTsgLy8gVGhpcyBpcyBuZWVkZWQgdG8gY29udmluY2UgdGhlIGxpbmtlciBub3QgdG8g
ZHJvcCBob3N0IGNhbGwgcmV0dXJuIHN1cHBvcnQuCiAKICAgICBoZWFwLm5vdGlmeUlzU2FmZVRv
Q29sbGVjdCgpOworICAgIAorICAgIGxsaW50RGF0YS5wZXJmb3JtQXNzZXJ0aW9ucygqdGhpcyk7
CiB9CiAKIHZvaWQgSlNHbG9iYWxEYXRhOjpjbGVhckJ1aWx0aW5TdHJ1Y3R1cmVzKCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lv
biAxMDgxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTUgKzMwLDE2IEBACiAjZGVmaW5lIEpTR2xvYmFsRGF0
YV9oCiAKICNpbmNsdWRlICJDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgiCi0jaW5jbHVk
ZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRl
ICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIlN0
cm9uZy5oIgorI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAj
aW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk51
bWVyaWNTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU3Ry
b25nLmgiCiAjaW5jbHVkZSAiVGVybWluYXRvci5oIgogI2luY2x1ZGUgIlRpbWVvdXRDaGVja2Vy
LmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgpAQCAtNjUsNiArNjYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKICAg
ICBjbGFzcyBLZXl3b3JkczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAg
Y2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAgICBjbGFz
cyBSZWdFeHBDYWNoZTsKQEAgLTI0MSw2ICsyNDMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEhlYXAgaGVhcDsKIAogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKKworICAgICAgICBj
b25zdCBDbGFzc0luZm8qIGNvbnN0IGpzQXJyYXlDbGFzc0luZm87CisgICAgICAgIGNvbnN0IENs
YXNzSW5mbyogY29uc3QganNGaW5hbE9iamVjdENsYXNzSW5mbzsKKworICAgICAgICBMTEludDo6
RGF0YSBsbGludERhdGE7CisKICNpZiBFTkFCTEUoSklUKQogICAgICAgICBSZXR1cm5BZGRyZXNz
UHRyIGV4Y2VwdGlvbkxvY2F0aW9uOwogICAgICAgICBKU1ZhbHVlIGhvc3RDYWxsUmV0dXJuVmFs
dWU7CkBAIC0zNDYsNiArMzU0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAjdW5kZWYgcmVnaXN0ZXJU
eXBlZEFycmF5RnVuY3Rpb24KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU0dsb2JhbERhdGEoR2xv
YmFsRGF0YVR5cGUsIFRocmVhZFN0YWNrVHlwZSwgSGVhcFNpemUpOwogICAgICAgICBzdGF0aWMg
SlNHbG9iYWxEYXRhKiYgc2hhcmVkSW5zdGFuY2VJbnRlcm5hbCgpOwogICAgICAgICB2b2lkIGNy
ZWF0ZU5hdGl2ZVRodW5rKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHJldmlzaW9uIDEwODE2NCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYg
KzQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAg
ICAgY2xhc3MgR2V0dGVyU2V0dGVyOwogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgTmF0aXZlRXJyb3JDb25zdHJ1
Y3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNsYXNzIFJlZ0V4cENvbnN0
cnVjdG9yOwpAQCAtMzM2LDYgKzMzNyw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGFkZFN0YXRpY0dsb2JhbHMoR2xvYmFsUHJvcGVydHlJbmZvKiwg
aW50IGNvdW50KTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogRm9sZCByZXNldCBp
bnRvIGluaXQuCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgaW5pdChKU09iamVjdCog
dGhpc1ZhbHVlKTsKICAgICAgICAgdm9pZCByZXNldChKU1ZhbHVlIHByb3RvdHlwZSk7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHJldmlzaW9uIDEwODE2
NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgR2V0dGVy
U2V0dGVyOwogICAgIGNsYXNzIEhhc2hFbnRyeTsKICAgICBjbGFzcyBJbnRlcm5hbEZ1bmN0aW9u
OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRCbG9j
azsKICAgICBjbGFzcyBQcm9wZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1l
QXJyYXk7CkBAIC0yNjIsNiArMjYzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTT2Jq
ZWN0KEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSosIFByb3BlcnR5U3RvcmFnZSBpbmxpbmVTdG9y
YWdlKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNF
eHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICAvLyBOb2JvZHkgc2hvdWxkIGV2ZXIgYXNrIGFu
eSBvZiB0aGVzZSBxdWVzdGlvbnMgb24gc29tZXRoaW5nIGFscmVhZHkga25vd24gdG8gYmUgYSBK
U09iamVjdC4KICAgICAgICAgdXNpbmcgSlNDZWxsOjppc0FQSVZhbHVlV3JhcHBlcjsKICAgICAg
ICAgdXNpbmcgSlNDZWxsOjppc0dldHRlclNldHRlcjsKQEAgLTM2Nyw2ICszNzAsOCBAQCBDT01Q
SUxFX0FTU0VSVCgoSlNGaW5hbE9iamVjdF9pbmxpbmVTdG9yCiAgICAgICAgIH0KIAogICAgIHBy
aXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAg
ICAgIAogICAgICAgICBleHBsaWNpdCBKU0ZpbmFsT2JqZWN0KEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgICAgICA6IEpTT2JqZWN0KGdsb2Jh
bERhdGEsIHN0cnVjdHVyZSwgbV9pbmxpbmVTdG9yYWdlKQogICAgICAgICB7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9wZXJ0eU5hbWVJdGVy
YXRvci5oCShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBJZGVudGlmaWVyOwogICAgIGNsYXNzIEpT
T2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIGNsYXNzIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3IgOiBwdWJsaWMgSlNDZWxsIHsKICAgICAgICAgZnJpZW5kIGNs
YXNzIEpJVDsKQEAgLTk2LDYgKzk3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAog
ICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CisgICAgICAgIAogICAgICAgICBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yKEV4ZWNTdGF0ZSosIFBy
b3BlcnR5TmFtZUFycmF5RGF0YSogcHJvcGVydHlOYW1lQXJyYXlEYXRhLCBzaXplX3QgbnVtQ2Fj
aGVhYmxlU2xvdCk7CiAKICAgICAgICAgV3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9jYWNoZWRT
dHJ1Y3R1cmU7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1N0cmluZy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3RyaW5nLmgJ
KHJldmlzaW9uIDEwODE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU3Ry
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKIG5hbWVzcGFjZSBKU0Mgewog
CiAgICAgY2xhc3MgSlNTdHJpbmc7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
CiAgICAgSlNTdHJpbmcqIGpzRW1wdHlTdHJpbmcoSlNHbG9iYWxEYXRhKik7CiAgICAgSlNTdHJp
bmcqIGpzRW1wdHlTdHJpbmcoRXhlY1N0YXRlKik7CkBAIC0yNDAsNiArMjQxLDggQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHJlc29sdmVSb3BlKEV4ZWNTdGF0ZSopIGNvbnN0OwogICAgICAgICB2b2lkIHJlc29sdmVSb3Bl
U2xvd0Nhc2U4KExDaGFyKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVzb2x2ZVJvcGVTbG93Q2Fz
ZShVQ2hhciopIGNvbnN0OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNU
eXBlSW5mby5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
VHlwZUluZm8uaAkocmV2aXNpb24gMTA4MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlSW5mby5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBACiAKIG5h
bWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCiAgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxOyAvLyBXZWJD
b3JlIHVzZXMgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCB0byBtYWtlIGRvY3VtZW50LmFsbCB1bmRl
dGVjdGFibGUuCiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIEltcGxlbWVudHNIYXNJbnN0YW5j
ZSA9IDEgPDwgMTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgT3ZlcnJpZGVzSGFzSW5zdGFu
Y2UgPSAxIDw8IDI7CkBAIC04Nyw2ICs4OSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9
CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFj
dG9yOworICAgICAgICAKICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MxKHVuc2lnbmVkIGZsYWcp
IGNvbnN0IHsgQVNTRVJUKGZsYWcgPD0gKDEgPDwgNykpOyByZXR1cm4gbV9mbGFncyAmIGZsYWc7
IH0KICAgICAgICAgYm9vbCBpc1NldE9uRmxhZ3MyKHVuc2lnbmVkIGZsYWcpIGNvbnN0IHsgQVNT
RVJUKGZsYWcgPj0gKDEgPDwgOCkpOyByZXR1cm4gbV9mbGFnczIgJiAoZmxhZyA+PiA4KTsgfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmNwcAkocmV2aXNp
b24gMTA4MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExOCw3ICsxMTgsNyBAQCBKU09iamVjdCogSlNWYWx1ZTo6c3lu
dGhlc2l6ZVByb3RvdHlwZShFCiAKIGNoYXIqIEpTVmFsdWU6OmRlc2NyaXB0aW9uKCkKIHsKLSAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNpemUgPSA2NDsKKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IHNpemUgPSAxMjg7CiAgICAgc3RhdGljIGNoYXIgZGVzY3JpcHRpb25bc2l6ZV07CiAKICAgICBp
ZiAoISp0aGlzKQpAQCAtMTI3LDE0ICsxMjcsMTQgQEAgY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRp
b24oKQogICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkludDMyOiAlZCIsIGFz
SW50MzIoKSk7CiAgICAgZWxzZSBpZiAoaXNEb3VibGUoKSkgewogI2lmIFVTRShKU1ZBTFVFNjQp
Ci0gICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICVseCIs
IGFzRG91YmxlKCksIHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIoYXNEb3VibGUoKSkpOworICAg
ICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRvdWJsZTogJWx4LCAlbGYiLCByZWlu
dGVycHJldERvdWJsZVRvSW50cHRyKGFzRG91YmxlKCkpLCBhc0RvdWJsZSgpKTsKICNlbHNlCiAg
ICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgIGRvdWJsZSBhc0RvdWJsZTsKICAgICAgICAgICAg
IHVpbnQzMl90IGFzVHdvSW50MzJzWzJdOwogICAgICAgICB9IHU7CiAgICAgICAgIHUuYXNEb3Vi
bGUgPSBhc0RvdWJsZSgpOwotICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkRv
dWJsZTogJWxmLCAlMDh4OiUwOHgiLCBhc0RvdWJsZSgpLCB1LmFzVHdvSW50MzJzWzFdLCB1LmFz
VHdvSW50MzJzWzBdKTsKKyAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3Vi
bGU6ICUwOHg6JTA4eCwgJWxmIiwgdS5hc1R3b0ludDMyc1sxXSwgdS5hc1R3b0ludDMyc1swXSwg
YXNEb3VibGUoKSk7CiAjZW5kaWYKICAgICB9IGVsc2UgaWYgKGlzQ2VsbCgpKQogICAgICAgICBz
bnByaW50ZihkZXNjcmlwdGlvbiwgc2l6ZSwgIkNlbGw6ICVwIiwgYXNDZWxsKCkpOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuaAkocmV2aXNpb24gMTA4MTY0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01NSw2ICs1NSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjbGFzcyBTcGVjdWxh
dGl2ZUpJVDsKICAgICB9CiAjZW5kaWYKKyAgICBuYW1lc3BhY2UgTExJbnQgeworICAgICAgICBj
bGFzcyBEYXRhOworICAgIH0KIAogICAgIHN0cnVjdCBDbGFzc0luZm87CiAgICAgc3RydWN0IElu
c3RydWN0aW9uOwpAQCAtMTE4LDYgKzEyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBm
cmllbmQgY2xhc3MgREZHOjpPU1JFeGl0Q29tcGlsZXI7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBE
Rkc6OlNwZWN1bGF0aXZlSklUOwogI2VuZGlmCisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludDo6
RGF0YTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZShKU1ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFyaWFi
bGVPYmplY3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1ZhcmlhYmxlT2JqZWN0LmgJKHJldmlzaW9uIDEwODE2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTAg
KzM4LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogICAgIGNsYXNzIFJlZ2lzdGVyOwogCiAgICAgY2xhc3MgSlNWYXJpYWJsZU9iamVj
dCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsK
KyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAogICAgIHB1Ymxp
YzoKICAgICAgICAgdHlwZWRlZiBKU05vbkZpbmFsT2JqZWN0IEJhc2U7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkocmV2aXNpb24gMTA4MTY0KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDYgKzUyLDEwIEBAIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cnVjdElu
bGkKIAogdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7CiAKK2ludDMyX3QgZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CitpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2ludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVl
Rm9ySklUU29vbjsKKwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFm
dGVyV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVy
TG9uZ1dhcm1VcDsKIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXpl
QW55dGltZVNvb247CkBAIC0xMzcsNiArMTQxLDEwIEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMo
KQogICAgIAogICAgIFNFVChtYXhpbXVtSW5saW5pbmdEZXB0aCwgNSk7CiAKKyAgICBTRVQoZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXAsICAgICAtMTAwKTsKKyAgICBTRVQo
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uLCBzdGQ6Om51bWVyaWNf
bGltaXRzPGludDMyX3Q+OjptaW4oKSk7CisgICAgU0VUKGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckpJVFNvb24sICAgICAgICAgICAgLTEwMCk7CisKICAgICBTRVQoZXhlY3V0aW9uQ291bnRlclZh
bHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcCwgICAgIC0xMDAwKTsKICAgICBTRVQoZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXAsIC01MDAwKTsKICAgICBTRVQo
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb24sIHN0ZDo6bnVt
ZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKQEAgLTE4NSw2ICsxOTMsOCBAQCB2b2lkIGlu
aXRpYWxpemVPcHRpb25zKCkKICAgICBpZiAoY3B1c1RvVXNlIDwgMSkKICAgICAgICAgY3B1c1Rv
VXNlID0gMTsKICAgICAKKyAgICBjcHVzVG9Vc2UgPSAxOworICAgIAogICAgIFNFVChudW1iZXJP
ZkdDTWFya2VycywgY3B1c1RvVXNlKTsKIAogICAgIEFTU0VSVChleGVjdXRpb25Db3VudGVyVmFs
dWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiA8PSBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JP
cHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDEwIEBAIGV4dGVy
biB1bnNpZ25lZCBtYXhpbXVtRnVuY3Rpb25Gb3JDb25zdHIKIAogZXh0ZXJuIHVuc2lnbmVkIG1h
eGltdW1JbmxpbmluZ0RlcHRoOyAvLyBEZXB0aCBvZiBpbmxpbmUgc3RhY2ssIHNvIDEgPSBubyBp
bmxpbmluZywgMiA9IG9uZSBsZXZlbCwgZXRjLgogCitleHRlcm4gaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvckRvbnRKSVRBbnl0aW1lU29vbjsKK2V4dGVybiBpbnQzMl90IGV4ZWN1dGlv
bkNvdW50ZXJWYWx1ZUZvckpJVFNvb247CisKIGV4dGVybiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50
ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBleHRlcm4gaW50MzJfdCBleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uOwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Njb3BlQ2hhaW4uaAkocmV2aXNpb24gMTA4MTY0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xv
YmFsRGF0YTsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgU2NvcGVDaGFpbkl0
ZXJhdG9yOwogICAgIGNsYXNzIFNsb3RWaXNpdG9yOwogICAgIApAQCAtOTEsNiArOTIsOCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIEpTX0VYUE9SVERBVEEgY29uc3QgQ2xhc3NJ
bmZvIHNfaW5mbzsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
U3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNWaXNpdENoaWxkcmVuOwogICAgIH07CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAkocmV2aXNpb24g
MTA4MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzIyLDcgKzMyMiw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjph
ZGRQcm9wZXJ0eVRyYW5zaXQKICAgICAgICAgICAgIHRyYW5zaXRpb24tPmdyb3dQcm9wZXJ0eVN0
b3JhZ2VDYXBhY2l0eSgpOwogICAgICAgICByZXR1cm4gdHJhbnNpdGlvbjsKICAgICB9Ci0KKyAg
ICAKICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBjcmVhdGUoZ2xvYmFsRGF0YSwgc3RydWN0
dXJlKTsKIAogICAgIHRyYW5zaXRpb24tPm1fY2FjaGVkUHJvdG90eXBlQ2hhaW4uc2V0TWF5QmVO
dWxsKGdsb2JhbERhdGEsIHRyYW5zaXRpb24sIHN0cnVjdHVyZS0+bV9jYWNoZWRQcm90b3R5cGVD
aGFpbi5nZXQoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuaAkocmV2aXNpb24gMTA4MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RydWN0dXJlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAKIAogbmFtZXNwYWNl
IEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJv
cGVydHlOYW1lQXJyYXk7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXlEYXRhOwogICAgIGNs
YXNzIFN0cnVjdHVyZUNoYWluOwpAQCAtMTk2LDYgKzE5Nyw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAg
ICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIFN0cnVjdHVyZShKU0dsb2JhbERh
dGEmLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgcHJvdG90eXBlLCBjb25zdCBUeXBlSW5mbyYs
IGNvbnN0IENsYXNzSW5mbyopOwogICAgICAgICBTdHJ1Y3R1cmUoSlNHbG9iYWxEYXRhJik7CiAg
ICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERhdGEmLCBjb25zdCBTdHJ1Y3R1cmUqKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZUNoYWluLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAkocmV2
aXNpb24gMTA4MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
Q2hhaW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTdHJ1Y3R1
cmU7CiAKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbiA6IHB1YmxpYyBKU0NlbGwgewpAQCAtNzQs
NiArNzUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIFN0cnVjdHVyZUNoYWluKEpTR2xvYmFsRGF0YSYsIFN0cnVjdHVyZSopOwogICAgICAgICBz
dGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCopOwogICAgICAgICBPd25BcnJheVB0cjxXcml0ZUJh
cnJpZXI8U3RydWN0dXJlPiA+IG1fdmVjdG9yOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3d0Zi9JbmxpbmVBU00uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L0lubGluZUFTTS5oCShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL0lubGluZUFTTS5oCSh3b3JraW5nIGNvcHkpCkBAIC03MCw0ICs3MCwxMSBAQAogI2RlZmlu
ZSBISURFX1NZTUJPTChuYW1lKQogI2VuZGlmCiAKKy8vIEZJWE1FOiBmaWd1cmUgb3V0IGhvdyB0
aGlzIHdvcmtzIG9uIGFsbCB0aGUgcGxhdGZvcm1zLiBJIGtub3cgdGhhdAorLy8gb24gTGludXgs
IHRoZSBwcmVmZXJyZWQgZm9ybSBpcyAiLkxzdHVmZiIgYXMgb3Bwb3NlZCB0byAiTHN0dWZmIi4K
Ky8vIERvbid0IGtub3cgYWJvdXQgYW55IG9mIHRoZSBvdGhlcnMuCisjaWYgUExBVEZPUk0oTUFD
KQorI2RlZmluZSBMT0NBTF9MQUJFTF9TVFJJTkcobmFtZSkgIkwiICNuYW1lCisjZW5kaWYKKwog
I2VuZGlmIC8vIElubGluZUFTTV9oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1Bs
YXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9y
bS5oCShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTkyMiw2ICs5MjIsMTIgQEAKICNkZWZpbmUgRU5BQkxF
X0pJVCAxCiAjZW5kaWYKIAorLyogT24gc29tZSBvZiB0aGUgcGxhdGZvcm1zIHdoZXJlIHdlIGhh
dmUgYSBKSVQsIHdlIHdhbnQgdG8gYWxzbyBoYXZlIHRoZSAKKyAgIGxvdy1sZXZlbCBpbnRlcnBy
ZXRlci4gKi8KKyNpZiAhZGVmaW5lZChFTkFCTEVfTExJTlQpICYmIEVOQUJMRShKSVQpICYmIE9T
KERBUldJTikgJiYgKENQVShYODYpIHx8IENQVShBUk1fVEhVTUIyKSkgJiYgVVNFKEpTVkFMVUUz
Ml82NCkKKyNkZWZpbmUgRU5BQkxFX0xMSU5UIDEKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoRU5B
QkxFX0RGR19KSVQpICYmIEVOQUJMRShKSVQpCiAvKiBFbmFibGUgdGhlIERGRyBKSVQgb24gWDg2
IGFuZCBYODZfNjQuICBPbmx5IHRlc3RlZCBvbiBNYWMgYW5kIEdOVS9MaW51eC4gKi8KICNpZiAo
Q1BVKFg4NikgfHwgQ1BVKFg4Nl82NCkpICYmIChQTEFURk9STShNQUMpIHx8IE9TKExJTlVYKSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvU2VudGluZWxMaW5rZWRMaXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExpc3Qu
aAkocmV2aXNpb24gMTA4MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5l
bExpbmtlZExpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtODYsNiArODYsOCBAQCBwdWJsaWM6CiAK
ICAgICBpdGVyYXRvciBiZWdpbigpOwogICAgIGl0ZXJhdG9yIGVuZCgpOworICAgIAorICAgIGJv
b2wgaXNFbXB0eSgpIHsgcmV0dXJuIGJlZ2luKCkgPT0gZW5kKCk7IH0KIAogcHJpdmF0ZToKICAg
ICBSYXdOb2RlIG1faGVhZFNlbnRpbmVsOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0
Zi90ZXh0L1N0cmluZ0ltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
d3RmL3RleHQvU3RyaW5nSW1wbC5oCShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0
Myw4IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IF9fQ0ZTdHJpbmcgKiBDRlN0cmkKIC8vIExhbmRp
bmcgdGhlIGZpbGUgbW92ZXMgaW4gb25lIHBhdGNoLCB3aWxsIGZvbGxvdyBvbiB3aXRoIHBhdGNo
ZXMgdG8gY2hhbmdlIHRoZSBuYW1lc3BhY2VzLgogbmFtZXNwYWNlIEpTQyB7CiBzdHJ1Y3QgSWRl
bnRpZmllckNTdHJpbmdUcmFuc2xhdG9yOworbmFtZXNwYWNlIExMSW50IHsgY2xhc3MgRGF0YTsg
fQorY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHN0
cnVjdCBJZGVudGlmaWVyQ2hhckJ1ZmZlclRyYW5zbGF0b3I7CiBzdHJ1Y3QgSWRlbnRpZmllckxD
aGFyRnJvbVVDaGFyVHJhbnNsYXRvcjsKIH0KQEAgLTcyLDcgKzc0LDkgQEAgY2xhc3MgU3RyaW5n
SW1wbCB7CiAgICAgZnJpZW5kIHN0cnVjdCBXVEY6OlN1YnN0cmluZ1RyYW5zbGF0b3I7CiAgICAg
ZnJpZW5kIHN0cnVjdCBXVEY6OlVDaGFyQnVmZmVyVHJhbnNsYXRvcjsKICAgICBmcmllbmQgY2xh
c3MgQXRvbWljU3RyaW5nSW1wbDsKLQorICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50OjpEYXRh
OworICAgIGZyaWVuZCBjbGFzcyBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAKIHBy
aXZhdGU6CiAgICAgZW51bSBCdWZmZXJPd25lcnNoaXAgewogICAgICAgICBCdWZmZXJJbnRlcm5h
bCwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODE2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAyLTE4ICBGaWxp
cCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAgSlNDIHNob3VsZCBiZSBhIHRy
aXBsZS10aWVyIFZNCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03NTgxMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMTAwNzk2OTQ+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgR2F2aW4gQmFycmFjbG91Z2guCisgICAgICAgIAorICAgICAgICBObyBuZXcg
dGVzdHMsIGJlY2F1c2UgdGhlcmUgaXMgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAg
ICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMTItMDItMTggIEFuZHJlYXMgS2xpbmcgIDxhd2Vzb21l
a2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBFbGVtZW50OjpjcmVhdGVBdHRyaWJ1
dGUoKS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDgxNjQpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsNyBA
QCBTRVQoV2ViQ29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyIgog
ICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAgICAgIiR7SkFW
QVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1
bnRpbWUiCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNpb24gMTA4MTY0KQorKysgU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0wMS0yNiAgRmls
aXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91bGQgYmUgYSB0
cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0PgorCisgICAgICAg
IFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgorCisgICAgICAgIENoYW5nZWQgRUZMJ3Mg
YnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFTY3JpcHRDb3Jl
LgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxMi0wMi0xNiAgTGVv
IFlhbmcgIDxsZW8ueWFuZ0B0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0JsYWNrQmVy
cnldIEFkYXB0IHRvIHRoZSByZW1vdmFsIG9mIFdlYlN0cmluZ0ltbC5oCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ01ha2VM
aXN0cy50eHQJKHJldmlzaW9uIDEwODE2NCkKKysrIFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDYgKzQ1LDcgQEAgU0VUKFdlYktpdF9JTkNMVURFX0RJ
UkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtK
QVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vaml0IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVND
UklQVENPUkVfRElSfS9wYXJzZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxl
ciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUiCkluZGV4OiBUb29scy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMDgxNjQpCisr
KyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMi0w
MS0yNyAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIEpTQyBzaG91
bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0Pgor
CisgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgorCisgICAgICAgIENoYW5n
ZWQgRUZMJ3MgYnVpbGQgc3lzdGVtIHRvIGluY2x1ZGUgYSBuZXcgZGlyZWN0b3J5IGluIEphdmFT
Y3JpcHRDb3JlLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0
OgorCiAyMDEyLTAyLTE4ICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0aGVvbGxpdmllcnMuY29t
PgogCiAgICAgICAgIFt3eF0gVW5yZXZpZXdlZCBidWlsZCBmaXguIERvbid0IGVycm9yIG91dCBv
ciBoYW5nIGlmIHdlIGhhdmUKSW5kZXg6IFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxp
c3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VMaXN0
cy50eHQJKHJldmlzaW9uIDEwODE2NCkKKysrIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFr
ZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzAsMTAgKzcwLDEyIEBAIFNFVChEdW1wUmVu
ZGVyVHJlZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9CiAg
ICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0FQSQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9h
c3NlbWJsZXIKKyAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vYnl0ZWNvZGUKICAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vZGZnCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2hlYXAKICAgICAk
e0pBVkFTQ1JJUFRDT1JFX0RJUn0vaW50ZXJwcmV0ZXIKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vaml0CisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50CiAgICAgJHtKQVZBU0NSSVBU
Q09SRV9ESVJ9L3J1bnRpbWUKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vRm9yd2FyZGluZ0hl
YWRlcnMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vd3RmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127825</attachid>
            <date>2012-02-20 09:15:29 -0800</date>
            <delta_ts>2012-02-21 12:15:59 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_104.diff</filename>
            <type>text/plain</type>
            <size>513768</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4MjQ2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4NSBA
QAorMjAxMi0wMi0xOCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzEw
MDc5Njk0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEdhdmluIEJhcnJhY2xvdWdoLgorICAgICAg
ICAKKyAgICAgICAgSW1wbGVtZW50ZWQgYW4gaW50ZXJwcmV0ZXIgdGhhdCB1c2VzIHRoZSBKSVQn
cyBjYWxsaW5nIGNvbnZlbnRpb24uIFRoaXMKKyAgICAgICAgaW50ZXJwcmV0ZXIgaXMgY2FsbGVk
IExMSW50LCBvciB0aGUgTG93IExldmVsIEludGVycHJldGVyLiBKU0Mgd2lsbCBub3cKKyAgICAg
ICAgd2lsbCBzdGFydCBieSBleGVjdXRpbmcgY29kZSBpbiBMTEludCBhbmQgd2lsbCBvbmx5IHRp
ZXIgdXAgdG8gdGhlIG9sZAorICAgICAgICBKSVQgYWZ0ZXIgdGhlIGNvZGUgaXMgcHJvdmVuIGhv
dC4KKyAgICAgICAgCisgICAgICAgIExMSW50IGlzIHdyaXR0ZW4gaW4gYSBtb2RpZmllZCBmb3Jt
IG9mIG91ciBtYWNybyBhc3NlbWJseS4gVGhpcyBuZXcgbWFjcm8KKyAgICAgICAgYXNzZW1ibHkg
aXMgY29tcGlsZWQgYnkgYW4gb2ZmbGluZSBhc3NlbWJsZXIgKHNlZSBvZmZsaW5lYXNtKSwgd2hp
Y2gKKyAgICAgICAgaW1wbGVtZW50cyBtYW55IG1vZGVybiBjb252ZW5pZW5jZXMgc3VjaCBhcyBh
IFR1cmluZy1jb21wbGV0ZSBDUFMtYmFzZWQKKyAgICAgICAgbWFjcm8gbGFuZ3VhZ2UgYW5kIGRp
cmVjdCBhY2Nlc3MgdG8gcmVsZXZhbnQgQysrIHR5cGUgaW5mb3JtYXRpb24KKyAgICAgICAgKGJh
c2ljYWxseSBvZmZzZXRzIG9mIGZpZWxkcyBhbmQgc2l6ZXMgb2Ygc3RydWN0cy9jbGFzc2VzKS4K
KyAgICAgICAgCisgICAgICAgIENvZGUgZXhlY3V0aW5nIGluIExMSW50IGFwcGVhcnMgdG8gdGhl
IHJlc3Qgb2YgdGhlIEpTQyB3b3JsZCAiYXMgaWYiIGl0CisgICAgICAgIHdlcmUgZXhlY3V0aW5n
IGluIHRoZSBvbGQgSklULiBIZW5jZSwgdGhpbmdzIGxpa2UgZXhjZXB0aW9uIGhhbmRsaW5nIGFu
ZAorICAgICAgICBjcm9zcy1leGVjdXRpb24tZW5naW5lIGNhbGxzIGp1c3Qgd29yayBhbmQgcmVx
dWlyZSBwcmV0dHkgbXVjaCBubworICAgICAgICBhZGRpdGlvbmFsIG92ZXJoZWFkLgorICAgICAg
ICAKKyAgICAgICAgVGhpcyBpbnRlcnByZXRlciBpcyAyLTIuNXggZmFzdGVyIHRoYW4gb3VyIG9s
ZCBpbnRlcnByZXRlciBvbiBTdW5TcGlkZXIsCisgICAgICAgIFY4LCBhbmQgS3Jha2VuLiBXaXRo
IHRyaXBsZS10aWVyaW5nIHR1cm5lZCBvbiwgd2UncmUgbmV1dHJhbCBvbiBTdW5TcGlkZXIsCisg
ICAgICAgIFY4LCBhbmQgS3Jha2VuLCBidXQgYXBwZWFyIHRvIGdldCBhIGRvdWJsZS1kaWdpdCBp
bXByb3ZlbWVudCBvbiByZWFsLXdvcmxkCisgICAgICAgIHdlYnNpdGVzIGR1ZSB0byBhIGh1Z2Ug
cmVkdWN0aW9uIGluIHRoZSBhbW91bnQgb2YgSklUJ2luZy4KKyAgICAgICAgCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogR05V
bWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcmk6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZj
cHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmVDb21tb24udnNwcm9wczoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3By
b2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQ6CisgICAgICAgICogSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAg
ICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6CisgICAgICAgICogYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQ29kZVJlZi5oOgorICAgICAgICAoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKToKKyAg
ICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJDb2RlUHRyOjpjcmVhdGVGcm9tRXhlY3V0YWJsZUFk
ZHJlc3MpOgorICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaDogQWRkZWQu
CisgICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwOgorICAgICAgICAoSlNDOjpD
YWxsTGlua1N0YXR1czo6Y29tcHV0ZUZyb21MTEludCk6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUv
Q2FsbExpbmtTdGF0dXMuaDoKKyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6OmlzU2V0KToK
KyAgICAgICAgKEpTQzo6Q2FsbExpbmtTdGF0dXM6Om9wZXJhdG9yISk6CisgICAgICAgIChDYWxs
TGlua1N0YXR1cyk6CisgICAgICAgICogYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcDoKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpkdW1wKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpDb2RlQmxv
Y2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjpzdHJvbmdseVZpc2l0U3Ryb25nUmVmZXJlbmNlcyk6CisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OnVubGlua0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29k
ZUJsb2NrOjp1bmxpbmtJbmNvbWluZ0NhbGxzKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpi
eXRlY29kZU9mZnNldCk6CisgICAgICAgIChKU0M6OlByb2dyYW1Db2RlQmxvY2s6OmpldHRpc29u
KToKKyAgICAgICAgKEpTQzo6RXZhbENvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlND
OjpGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24pOgorICAgICAgICAoSlNDOjpQcm9ncmFtQ29k
ZUJsb2NrOjpqaXRDb21waWxlSW1wbCk6CisgICAgICAgIChKU0M6OkV2YWxDb2RlQmxvY2s6Ompp
dENvbXBpbGVJbXBsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25Db2RlQmxvY2s6OmppdENvbXBp
bGVJbXBsKToKKyAgICAgICAgKiBieXRlY29kZS9Db2RlQmxvY2suaDoKKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChDb2RlQmxvY2spOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmJhc2VsaW5l
VmVyc2lvbik6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bGlua0luY29taW5nQ2FsbCk6Cisg
ICAgICAgIChKU0M6OkNvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpD
b2RlQmxvY2s6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omhhc09wdGlt
aXplZFJlcGxhY2VtZW50KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRQcm9wZXJ0eUFj
Y2Vzc0luc3RydWN0aW9uKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRHbG9iYWxSZXNv
bHZlSW5zdHJ1Y3Rpb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmFkZExMSW50Q2FsbExp
bmtJbmZvKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjphZGRHbG9iYWxSZXNvbHZlSW5mbyk6
CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZNZXRob2RDYWxsTGlua0luZm9zKToK
KyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjp2YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNv
ZGVPZmZzZXQpOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZVNsb3dDYXNl
KToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpjb3VsZFRha2VTbG93Q2FzZSk6CisgICAgICAg
IChKU0M6OkNvZGVCbG9jazo6bGlrZWx5VG9UYWtlU3BlY2lhbEZhc3RDYXNlKToKKyAgICAgICAg
KEpTQzo6Q29kZUJsb2NrOjpsaWtlbHlUb1Rha2VEZWVwZXN0U2xvd0Nhc2UpOgorICAgICAgICAo
SlNDOjpDb2RlQmxvY2s6Omxpa2VseVRvVGFrZUFueVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6
Q29kZUJsb2NrOjphZGRGcmVxdWVudEV4aXRTaXRlKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2Nr
Ojpkb250SklUQW55dGltZVNvb24pOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmppdEFmdGVy
V2FybVVwKToKKyAgICAgICAgKEpTQzo6Q29kZUJsb2NrOjpqaXRTb29uKToKKyAgICAgICAgKEpT
Qzo6Q29kZUJsb2NrOjpsbGludEV4ZWN1dGVDb3VudGVyKToKKyAgICAgICAgKFByb2dyYW1Db2Rl
QmxvY2spOgorICAgICAgICAoRXZhbENvZGVCbG9jayk6CisgICAgICAgIChGdW5jdGlvbkNvZGVC
bG9jayk6CisgICAgICAgICogYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChK
U0M6OkdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQpOgorICAgICAgICAoSlNDKToKKyAg
ICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNv
ZGUvR2V0QnlJZFN0YXR1cy5oOgorICAgICAgICAoSlNDOjpHZXRCeUlkU3RhdHVzOjpHZXRCeUlk
U3RhdHVzKToKKyAgICAgICAgKEpTQzo6R2V0QnlJZFN0YXR1czo6d2FzU2VlbkluSklUKToKKyAg
ICAgICAgKEdldEJ5SWRTdGF0dXMpOgorICAgICAgICAqIGJ5dGVjb2RlL0luc3RydWN0aW9uLmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpJbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb24p
OgorICAgICAgICAoSW5zdHJ1Y3Rpb24pOgorICAgICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExp
bmtJbmZvLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxs
TGlua0luZm86OkxMSW50Q2FsbExpbmtJbmZvKToKKyAgICAgICAgKExMSW50Q2FsbExpbmtJbmZv
KToKKyAgICAgICAgKEpTQzo6TExJbnRDYWxsTGlua0luZm86On5MTEludENhbGxMaW5rSW5mbyk6
CisgICAgICAgIChKU0M6OkxMSW50Q2FsbExpbmtJbmZvOjppc0xpbmtlZCk6CisgICAgICAgIChK
U0M6OkxMSW50Q2FsbExpbmtJbmZvOjp1bmxpbmspOgorICAgICAgICAqIGJ5dGVjb2RlL01ldGhv
ZENhbGxMaW5rU3RhdHVzLmNwcDoKKyAgICAgICAgKEpTQzo6TWV0aG9kQ2FsbExpbmtTdGF0dXM6
OmNvbXB1dGVGb3IpOgorICAgICAgICAqIGJ5dGVjb2RlL09wY29kZS5oOgorICAgICAgICAoSlND
KToKKyAgICAgICAgKEpTQzo6cGFkT3Bjb2RlTmFtZSk6CisgICAgICAgICogYnl0ZWNvZGUvUHV0
QnlJZFN0YXR1cy5jcHA6CisgICAgICAgIChKU0M6OlB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9t
TExJbnQpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6UHV0QnlJZFN0YXR1czo6Y29t
cHV0ZUZvcik6CisgICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5oOgorICAgICAgICAo
UHV0QnlJZFN0YXR1cyk6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlKToKKyAg
ICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbHZlV2l0aEJhc2UpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQpOgorICAgICAgICAoSlND
OjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdl
bmVyYXRvcjo6ZW1pdENhbGwpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dENvbnN0cnVjdCk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gp
OgorICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmdldFByZWRpY3Rpb25XaXRob3V0T1NSRXhpdCk6CisgICAgICAg
IChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKToKKyAgICAgICAgKEpT
Qzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RGR0Nh
cGFiaWxpdGllcy5oOgorICAgICAgICAoSlNDOjpERkc6OmNhbkNvbXBpbGVPcGNvZGUpOgorICAg
ICAgICAqIGRmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwOgorICAgICAgICAqIGRmZy9ERkdPcGVy
YXRpb25zLmNwcDoKKyAgICAgICAgKiBoZWFwL0hlYXAuY3BwOgorICAgICAgICAoSlNDOjpIZWFw
Ojpjb2xsZWN0KToKKyAgICAgICAgKiBoZWFwL0hlYXAuaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChIZWFwKToKKyAgICAgICAgKiBoZWFwL01hcmtTdGFjay5jcHA6CisgICAgICAgIChKU0M6
OnZpc2l0Q2hpbGRyZW4pOgorICAgICAgICAqIGhlYXAvTWFya2VkQWxsb2NhdG9yLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoTWFya2VkQWxsb2NhdG9yKToKKyAgICAgICAgKiBoZWFwL01h
cmtlZFNwYWNlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAg
ICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAg
ICAoSlNDOjpDYWxsRnJhbWU6OmJ5dGVjb2RlT2Zmc2V0Rm9yTm9uREZHQ29kZSk6CisgICAgICAg
IChKU0M6OkNhbGxGcmFtZTo6c2V0Qnl0ZWNvZGVPZmZzZXRGb3JOb25ERkdDb2RlKToKKyAgICAg
ICAgKEpTQzo6Q2FsbEZyYW1lOjpjdXJyZW50VlBDKToKKyAgICAgICAgKEpTQzo6Q2FsbEZyYW1l
OjpzZXRDdXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAg
ICAgICAgKEV4ZWNTdGF0ZSk6CisgICAgICAgIChKU0M6OkV4ZWNTdGF0ZTo6Ynl0ZWNvZGVPZmZz
ZXRGb3JOb25ERkdDb2RlKToKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpjdXJyZW50VlBDKToK
KyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjpzZXRDdXJyZW50VlBDKToKKyAgICAgICAgKiBpbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjp+SW50
ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6Omlu
aXRpYWxpemUpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6aXNPcGNvZGUpOgorICAgICAg
ICAoSlNDOjpJbnRlcnByZXRlcjo6dW53aW5kQ2FsbEZyYW1lKToKKyAgICAgICAgKEpTQzo6Z2V0
Q2FsbGVySW5mbyk6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpwcml2YXRlRXhlY3V0ZSk6
CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIpOgorICAgICAg
ICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAo
SW50ZXJwcmV0ZXIpOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6Z2V0T3Bjb2RlKToKKyAg
ICAgICAgKEpTQzo6SW50ZXJwcmV0ZXI6OmdldE9wY29kZUlEKToKKyAgICAgICAgKEpTQzo6SW50
ZXJwcmV0ZXI6OmVuYWJsZWQpOgorICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5o
OgorICAgICAgICAoSlNDKToKKyAgICAgICAgKFJlZ2lzdGVyRmlsZSk6CisgICAgICAgICogaml0
L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0M6OmdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKiBq
aXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChKU0M6OmluaXRpYWxpemVIb3N0Q2FsbFJldHVyblZhbHVlKToKKyAgICAgICAgKiBqaXQvSklU
LmNwcDoKKyAgICAgICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKToKKyAgICAg
ICAgKEpTQzo6SklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcyk6CisgICAgICAgIChKU0M6OkpJ
VDo6cHJpdmF0ZUNvbXBpbGUpOgorICAgICAgICAqIGppdC9KSVRDb2RlLmg6CisgICAgICAgIChK
U0M6OkpJVENvZGU6OmlzT3B0aW1pemluZ0pJVCk6CisgICAgICAgIChKSVRDb2RlKToKKyAgICAg
ICAgKEpTQzo6SklUQ29kZTo6aXNCYXNlbGluZUNvZGUpOgorICAgICAgICAoSlNDOjpKSVRDb2Rl
OjpKSVRDb2RlKToKKyAgICAgICAgKiBqaXQvSklURHJpdmVyLmg6CisgICAgICAgIChKU0M6Ompp
dENvbXBpbGVJZkFwcHJvcHJpYXRlKToKKyAgICAgICAgKEpTQzo6aml0Q29tcGlsZUZ1bmN0aW9u
SWZBcHByb3ByaWF0ZSk6CisgICAgICAgICogaml0L0pJVEV4Y2VwdGlvbnMuY3BwOgorICAgICAg
ICAoSlNDOjpqaXRUaHJvdyk6CisgICAgICAgICogaml0L0pJVElubGluZU1ldGhvZHMuaDoKKyAg
ICAgICAgKEpTQzo6SklUOjp1cGRhdGVUb3BDYWxsRnJhbWUpOgorICAgICAgICAqIGppdC9KSVRT
dHVicy5jcHA6CisgICAgICAgIChKU0M6OkRFRklORV9TVFVCX0ZVTkNUSU9OKToKKyAgICAgICAg
KEpTQyk6CisgICAgICAgICogaml0L0pTSW50ZXJmYWNlSklULmg6CisgICAgICAgICogbGxpbnQ6
IEFkZGVkLgorICAgICAgICAqIGxsaW50L0xMSW50Q29tbW9uLmg6IEFkZGVkLgorICAgICAgICAq
IGxsaW50L0xMSW50RGF0YS5jcHA6IEFkZGVkLgorICAgICAgICAoTExJbnQpOgorICAgICAgICAo
SlNDOjpMTEludDo6RGF0YTo6RGF0YSk6CisgICAgICAgIChKU0M6OkxMSW50OjpEYXRhOjp+RGF0
YSk6CisgICAgICAgICogbGxpbnQvTExJbnREYXRhLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKExMSW50KToKKyAgICAgICAgKERhdGEpOgorICAgICAgICAoSlNDOjpMTEludDo6
RGF0YTo6ZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OkRhdGE6
Om9wY29kZU1hcCk6CisgICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHA6IEFkZGVk
LgorICAgICAgICAoTExJbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0RnVuY3Rpb25FbnRy
eXBvaW50KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEV2YWxFbnRyeXBvaW50KToKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OmdldFByb2dyYW1FbnRyeXBvaW50KToKKyAgICAgICAgKiBsbGludC9M
TEludEVudHJ5cG9pbnRzLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKExMSW50
KToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdldEVudHJ5cG9pbnQpOgorICAgICAgICAqIGxsaW50
L0xMSW50RXhjZXB0aW9ucy5jcHA6IEFkZGVkLgorICAgICAgICAoTExJbnQpOgorICAgICAgICAo
SlNDOjpMTEludDo6aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OnJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24pOgorICAgICAgICAoSlNDOjpMTElu
dDo6cmV0dXJuVG9UaHJvdyk6CisgICAgICAgIChKU0M6OkxMSW50OjpjYWxsVG9UaHJvdyk6Cisg
ICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKExMSW50KToKKyAgICAgICAgKiBsbGludC9MTEludFNsb3dQYXRocy5jcHA6IEFk
ZGVkLgorICAgICAgICAoTExJbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6bGxpbnRfdHJhY2Vf
b3BlcmFuZCk6CisgICAgICAgIChKU0M6OkxMSW50OjpsbGludF90cmFjZV92YWx1ZSk6CisgICAg
ICAgIChKU0M6OkxMSW50OjpMTElOVF9TTE9XX1BBVEhfREVDTCk6CisgICAgICAgIChKU0M6OkxM
SW50Ojp0cmFjZUZ1bmN0aW9uUHJvbG9ndWUpOgorICAgICAgICAoSlNDOjpMTEludDo6c2hvdWxk
SklUKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmVudHJ5T1NSKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OnJlc29sdmVHbG9iYWwpOgorICAgICAgICAoSlNDOjpMTEludDo6Z2V0QnlWYWwpOgorICAg
ICAgICAoSlNDOjpMTEludDo6aGFuZGxlSG9zdENhbGwpOgorICAgICAgICAoSlNDOjpMTEludDo6
c2V0VXBDYWxsKToKKyAgICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyaWNDYWxsKToKKyAgICAgICAg
KiBsbGludC9MTEludFNsb3dQYXRocy5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChMTEludCk6CisgICAgICAgICogbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6IEFkZGVk
LgorICAgICAgICAqIGxsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHA6IEFkZGVkLgorICAg
ICAgICAoSlNDKToKKyAgICAgICAgKExMSW50T2Zmc2V0c0V4dHJhY3Rvcik6CisgICAgICAgIChK
U0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkpOgorICAgICAgICAobWFpbik6CisgICAg
ICAgICogbGxpbnQvTExJbnRUaHVua3MuY3BwOiBBZGRlZC4KKyAgICAgICAgKExMSW50KToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKToKKyAgICAgICAgKEpT
Qzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IpOgorICAgICAgICAo
SlNDOjpMTEludDo6ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKToKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OmZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRv
cik6CisgICAgICAgIChKU0M6OkxMSW50OjpmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tU
aHVua0dlbmVyYXRvcik6CisgICAgICAgIChKU0M6OkxMSW50OjpldmFsRW50cnlUaHVua0dlbmVy
YXRvcik6CisgICAgICAgIChKU0M6OkxMSW50Ojpwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcik6
CisgICAgICAgICogbGxpbnQvTExJbnRUaHVua3MuaDogQWRkZWQuCisgICAgICAgIChKU0MpOgor
ICAgICAgICAoTExJbnQpOgorICAgICAgICAqIGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNt
OiBBZGRlZC4KKyAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcDogQWRkZWQu
CisgICAgICAgICogbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oOiBBZGRlZC4KKyAgICAgICAg
KiBvZmZsaW5lYXNtOiBBZGRlZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2FybXY3LnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL2FzbS5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGlu
ZWFzbS9hc3QucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vYmFja2VuZHMucmI6IEFk
ZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYjog
QWRkZWQuCisgICAgICAgICogb2ZmbGluZWFzbS9pbnN0cnVjdGlvbnMucmI6IEFkZGVkLgorICAg
ICAgICAqIG9mZmxpbmVhc20vb2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMucmI6IEFkZGVkLgor
ICAgICAgICAqIG9mZmxpbmVhc20vb2Zmc2V0cy5yYjogQWRkZWQuCisgICAgICAgICogb2ZmbGlu
ZWFzbS9vcHQucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vcGFyc2VyLnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogQWRkZWQuCisgICAgICAgICog
b2ZmbGluZWFzbS9zZWxmX2hhc2gucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vc2V0
dGluZ3MucmI6IEFkZGVkLgorICAgICAgICAqIG9mZmxpbmVhc20vdHJhbnNmb3JtLnJiOiBBZGRl
ZC4KKyAgICAgICAgKiBvZmZsaW5lYXNtL3g4Ni5yYjogQWRkZWQuCisgICAgICAgICogcnVudGlt
ZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAg
ICAgKiBydW50aW1lL0NvbW1vblNsb3dQYXRocy5oOgorICAgICAgICAoSlNDOjpDb21tb25TbG93
UGF0aHM6OmFyaXR5Q2hlY2tGb3IpOgorICAgICAgICAoQ29tbW9uU2xvd1BhdGhzKToKKyAgICAg
ICAgKiBydW50aW1lL0V4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpqZXR0aXNvbkNvZGVC
bG9jayk6CisgICAgICAgIChKU0M6OkV2YWxFeGVjdXRhYmxlOjpqaXRDb21waWxlKToKKyAgICAg
ICAgKEpTQyk6CisgICAgICAgIChKU0M6OnNhbXBsaW5nRGVzY3JpcHRpb24pOgorICAgICAgICAo
SlNDOjpFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6UHJv
Z3JhbUV4ZWN1dGFibGU6OmppdENvbXBpbGUpOgorICAgICAgICAoSlNDOjpQcm9ncmFtRXhlY3V0
YWJsZTo6Y29tcGlsZUludGVybmFsKToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxl
OjpiYXNlbGluZUNvZGVCbG9ja0Zvcik6CisgICAgICAgIChKU0M6OkZ1bmN0aW9uRXhlY3V0YWJs
ZTo6aml0Q29tcGlsZUZvckNhbGwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6
OmppdENvbXBpbGVGb3JDb25zdHJ1Y3QpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFi
bGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1
dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbCk6CisgICAgICAgICogcnVudGltZS9F
eGVjdXRhYmxlLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoRXZhbEV4ZWN1dGFibGUpOgor
ICAgICAgICAoUHJvZ3JhbUV4ZWN1dGFibGUpOgorICAgICAgICAoRnVuY3Rpb25FeGVjdXRhYmxl
KToKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yKToKKyAg
ICAgICAgKiBydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDogQWRkZWQuCisgICAgICAgIChKU0Mp
OgorICAgICAgICAoSlNDOjpwcmVwYXJlRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKEpTQzo6cHJl
cGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTQWN0aXZhdGlv
bi5oOgorICAgICAgICAoSlNDOjpKU0FjdGl2YXRpb246OnRlYXJPZmYpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQXJyYXkpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDZWxs
KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQyk6CisgICAg
ICAgIChKU0Z1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKToKKyAgICAgICAgKiBydW50
aW1lL0pTR2xvYmFsRGF0YS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTR2xvYmFsRGF0
YSk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5oOgorICAgICAgICAoSlNDKToK
KyAgICAgICAgKEpTR2xvYmFsT2JqZWN0KToKKyAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6
CisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNPYmplY3QpOgorICAgICAgICAoSlNGaW5hbE9i
amVjdCk6CisgICAgICAgICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6CisgICAg
ICAgIChKU0MpOgorICAgICAgICAoSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcik6CisgICAgICAgICog
cnVudGltZS9KU1N0cmluZy5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTU3RyaW5nKToK
KyAgICAgICAgKiBydW50aW1lL0pTVHlwZUluZm8uaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAg
IChUeXBlSW5mbyk6CisgICAgICAgICogcnVudGltZS9KU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNWYWx1ZTo6ZGVzY3JpcHRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSlNWYXJpYWJsZU9i
amVjdC5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTVmFyaWFibGVPYmplY3QpOgorICAg
ICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5jcHA6CisgICAgICAgIChPcHRpb25zKToKKyAgICAgICAg
KEpTQzo6T3B0aW9uczo6aW5pdGlhbGl6ZU9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0
aW9ucy5oOgorICAgICAgICAoT3B0aW9ucyk6CisgICAgICAgICogcnVudGltZS9TY29wZUNoYWlu
Lmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU2NvcGVDaGFpbk5vZGUpOgorICAgICAgICAq
IHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKEpTQzo6U3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVRyYW5zaXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmg6CisgICAgICAg
IChKU0MpOgorICAgICAgICAoU3RydWN0dXJlKToKKyAgICAgICAgKiBydW50aW1lL1N0cnVjdHVy
ZUNoYWluLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoU3RydWN0dXJlQ2hhaW4pOgorICAg
ICAgICAqIHd0Zi9JbmxpbmVBU00uaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDoKKyAgICAg
ICAgKiB3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg6CisgICAgICAgIChTZW50aW5lbExpbmtlZExp
c3QpOgorICAgICAgICAoV1RGOjpTZW50aW5lbExpbmtlZExpc3Q6OmlzRW1wdHkpOgorICAgICAg
ICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChTdHJp
bmdJbXBsKToKKwogMjAxMi0wMi0yMCAgQW5keSBXaW5nbyAgPHdpbmdvQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIHVudXNlZCBmZWF0dXJlcyBmcm9tIENvZGVGZWF0dXJlcwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA4MjQ2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw2
ICsxMSw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2ludGVycHJldGVyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pB
VkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJz
ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NS
SVBUQ09SRV9ESVJ9L3J1bnRpbWUiCkBAIC0xMDIsNiArMTAzLDcgQEAgU0VUKEphdmFTY3JpcHRD
b3JlX1NPVVJDRVMKICAgICBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwCiAKICAgICBqaXQv
RXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAK
ICAgICBqaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljLmNw
cAogICAgIGppdC9KSVRDYWxsMzJfNjQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
R05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1h
a2VmaWxlLmFtCShyZXZpc2lvbiAxMDgyNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgamF2YXNjcmlwdGNv
cmVfY3BwZmxhZ3MgKz0gXAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlciBcCiAJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJLUkk
KHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCisJLUkkKHNyY2RpcikvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyIFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIg
XAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDgyNDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBj
b3B5KQpAQCAtODEsNiArODEsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9TSDRBc3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9YODZBc3NlbWJsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9DYWxsTGlua0luZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0Nh
bGxMaW5rU3RhdHVzLmNwcCBcCkBAIC0xMDIsNiArMTAzLDcgQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgg
XAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTGluZUluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL01ldGhvZENhbGxMaW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9NZXRob2RDYWxsTGlua0luZm8uaCBcCkBAIC0yOTYsNiArMjk4LDggQEAgamF2YXNjcmlw
dGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Db21wYWN0SklU
Q29kZU1hcC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0
b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3Iu
aCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBc
CisJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAJU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRDYWxsMzJfNjQuY3BwIFwKQEAgLTMxOSw2ICszMjMsNyBAQCBqYXZhc2Ny
aXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxp
emVkVGh1bmtKSVQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRv
cnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIFwK
KwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vcy13aW4zMi9zdGRib29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
cy13aW4zMi9zdGRpbnQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWls
ZGVyLmggXApAQCAtMzY5LDYgKzM3NCw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2FsbERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ2xhc3NJbmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
ZGVTcGVjaWFsaXphdGlvbktpbmQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25JZGVudGlmaWVycy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21t
b25TbG93UGF0aHMuaCBcCkBAIC0zOTcsNiArNDAzLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNl
cyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5o
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHJldmlzaW9uIDEwODI0NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYg
KzIwLDcgQEAgSU5DTFVERVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9kZWJ1Z2dlciBcCiAg
ICAgJCRTT1VSQ0VfRElSL2ludGVycHJldGVyIFwKICAgICAkJFNPVVJDRV9ESVIvaml0IFwKKyAg
ICAkJFNPVVJDRV9ESVIvbGxpbnQgXAogICAgICQkU09VUkNFX0RJUi9wYXJzZXIgXAogICAgICQk
U09VUkNFX0RJUi9wcm9maWxlciBcCiAgICAgJCRTT1VSQ0VfRElSL3J1bnRpbWUgXApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDEwODI0NikKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDcgQEAg
U09VUkNFUyArPSBcCiAgICAgaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCiAgICAgaml0
L0V4ZWN1dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC5jcHAgXAogICAgIGppdC9FeGVjdXRhYmxl
QWxsb2NhdG9yLmNwcCBcCisgICAgaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKICAgICBq
aXQvSklUQXJpdGhtZXRpYy5jcHAgXAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwK
ICAgICBqaXQvSklUQ2FsbC5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwODI0NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYyLDYgKzE3NjIs
MTAgQEAKIAkJCQk+CiAJCQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
Li5caml0XEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxqaXRcSklULmNwcCIKIAkJCQk+CiAJCQk8L0Zp
bGU+CkBAIC0xODQ3LDYgKzE4NTEsMTQgQEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxG
aWx0ZXIKKwkJCU5hbWU9ImxsaW50IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXC4uXGxsaW50XExMSW50RGF0YS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+
CisJCTxGaWx0ZXIKIAkJCU5hbWU9ImludGVycHJldGVyIgogCQkJPgogCQkJPEZpbGUKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlQ29tbW9uLnZzcHJvcHMJKHJldmlzaW9uIDEwODI0NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmVDb21tb24udnNwcm9wcwkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJPFRv
b2wKIAkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rv
cmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxE
ZXJpdmVkU291cmNlc1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8u
Li9ieXRlY29tcGlsZXIvOy4uLy4uL2RmZy87Li4vLi4vaml0LzsuLi8uLi9ydW50aW1lLzsuLi8u
Li90b29scy87Li4vLi4vYnl0ZWNvZGUvOy4uLy4uL2ludGVycHJldGVyLzsuLi8uLi93dGYvOy4u
Ly4uL3Byb2ZpbGVyOy4uLy4uL2Fzc2VtYmxlci87Li4vLi4vZGVidWdnZXIvOy4uLy4uL2hlYXAv
OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0
TGlicmFyaWVzRGlyKVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXGluY2x1ZGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGlu
Y2x1ZGVcSmF2YVNjcmlwdENvcmUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIp
XGluY2x1ZGVccHJpdmF0ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVk
ZVxwdGhyZWFkcyZxdW90OyIKKwkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7
JChDb25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNl
c1wmcXVvdDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29tcGls
ZXIvOy4uLy4uL2RmZy87Li4vLi4vaml0LzsuLi8uLi9sbGludC87Li4vLi4vcnVudGltZS87Li4v
Li4vdG9vbHMvOy4uLy4uL2J5dGVjb2RlLzsuLi8uLi9pbnRlcnByZXRlci87Li4vLi4vd3RmLzsu
Li8uLi9wcm9maWxlcjsuLi8uLi9hc3NlbWJsZXIvOy4uLy4uL2RlYnVnZ2VyLzsuLi8uLi9oZWFw
LzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktp
dExpYnJhcmllc0RpcilcaW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlv
bkJ1aWxkRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxp
bmNsdWRlXEphdmFTY3JpcHRDb3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGly
KVxpbmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1
ZGVccHRocmVhZHMmcXVvdDsiCiAJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfX1NURF9DIgog
CQlGb3JjZWRJbmNsdWRlRmlsZXM9IklDVVZlcnNpb24uaCIKIAkvPgpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZp
bGVzLmNtZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL2NvcHktZmlsZXMuY21kCShyZXZpc2lvbiAxMDgyNDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3Jp
cHRDb3JlL2NvcHktZmlsZXMuY21kCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIGZv
ciAlJWQgaW4gKAogICAgIGRlYnVnZ2VyCiAgICAgaW50ZXJwcmV0ZXIKICAgICBqaXQKKyAgICBs
bGludAogICAgIHBhcnNlcgogICAgIHByb2ZpbGVyCiAgICAgcnVudGltZQpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDEwODI0NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC03LDYgKzcsMTUgQEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dy
ZWdhdGVUYXJnZXQgc2VjdGlvbiAqLworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJ
bnQgT2Zmc2V0cyAqLyA9IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxk
Q29uZmlndXJhdGlvbkxpc3QgPSAwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29u
ZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICov
OworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdl
bmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKKwkJCSk7CisJCQluYW1lID0gIkxMSW50IE9mZnNl
dHMiOworCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKIAkJNjVGQjNG
NjYwOUQxMUU5MTAwRjQ5REVCIC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBC
WEFnZ3JlZ2F0ZVRhcmdldDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2NUZCM0Y3NzA5
RDExRUJEMDBGNDlERUIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdh
dGVUYXJnZXQgIkRlcml2ZWQgU291cmNlcyIgKi87CkBAIC0xNCw2ICsyMyw5IEBACiAJCQkJNjVG
QjNGNjUwOUQxMUU5MTAwRjQ5REVCIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKIAkJ
CQk1RDM1REVFMTBDN0MxNDBCMDA4NjQ4QjIgLyogR2VuZXJhdGUgRFRyYWNlIGhlYWRlciAqLywK
IAkJCSk7CisJCQlkZXBlbmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcy
IC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8sCisJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNv
dXJjZXMiOwogCQkJcHJvZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJfTsKQEAgLTQ4
LDYgKzYwLDEwIEBACiAJCTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmlj
dGlvblZlcmlmaWVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwQkFDOTQ5RTEzMzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmll
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBC
Q0Q4MzU3MTQ4NTg0NTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAw
MyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwQkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEy
ODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4MzlBMTRC
Q0Y0NUQwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBM
TEludEVudHJ5cG9pbnRzLmNwcCAqLzsgfTsKKwkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8q
IExMSW50RW50cnlwb2ludHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgz
OUMxNEJDRjQ2MzAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBM
TEludFRodW5rcy5jcHAgKi87IH07CisJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTElu
dFRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYwQjgzOTgxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTcxNEJDRjUwNzAwODg1
QjRGIC8qIENvZGVUeXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjBCODNBNTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBOTE0QkNGNTYy
MDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4
M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBQTE0QkNGNUI5MDA4ODVC
NEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC01OCw5ICs3NCwxMyBAQAogCQkwRjBCODNCNTE0QkNGODYy
MDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9k
Q2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJMEYwQjgzQjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCNjE0
QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYg
LyogQ2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBD
YWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBM
TEludENhbGxMaW5rSW5mby5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYwRkM0NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNUYx
NUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8q
IENvbW1vblNsb3dQYXRocy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTBGMTZENzI2MTQyQzM5QzAwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNkQ3MjQxNDJD
MzlBMjAwQ0Y3ODRBIC8qIEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCTBGMjFDMjY4MTRCRTVGNjgw
MEFEQzY0QiAvKiBKSVREcml2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3QzE0
QkU3Mjc2MDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4
ZWN1dGlvbkhhcm5lc3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQkwRjIxQzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9u
S2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYy
MUMyNzkxNEJFNzI3MzAwQURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RjE0QkVB
QTgyMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5
dGVjb2RlQ29udmVudGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkwRjI0MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhh
cnZlc3Rlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEYyNDJEQTUxM0YzQjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU2RjE0
NzM4RjMxMDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0Nv
ZGVCbG9ja3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQkwRjJDNTU3MDE0NzM4RjM1MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJF
MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgKi87IH07CkBAIC03MSw2ICs5MSwxOSBAQAog
CQkwRjQzMTczODE0NkJBQzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQzMTczNjE0NkJBQzY1MDA3
RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2Vw
dGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODMxNEJBNTczMTAwQkZF
MjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMu
Y3BwICovOyB9OworCQkwRjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5
RTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcy
IC8qIExMSW50U2xvd1BhdGhzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludFNsb3dQYXRocy5j
cHAgKi87IHNldHRpbmdzID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tdW51c2VkLXBhcmFtZXRl
ciI7IH07IH07CisJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludFNsb3dQYXRocy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTAx
NEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhzLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8q
IExMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcCAqLzsgfTsKKwkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50
RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLzsg
fTsKKwkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNTE0QkJCMTY5MDBC
RkUyNzIgLyogTExJbnRDb21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0Mx
NEJCQjE3QTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcy
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwICovOyB9OworCQkwRjQ2ODBDRDE0QkJCMTdEMDBC
RkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVs
SW50ZXJwcmV0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENFMTRCQkIzRDEw
MEJGRTI3MiAvKiBMTEludERhdGEuY3BwICovOyB9OworCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUy
NzIgLyogTExJbnREYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDQxNEJCRDI0
OTAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhv
c3RDYWxsUmV0dXJuVmFsdWUuY3BwICovOyB9OworCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIg
LyogSG9zdENhbGxSZXR1cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJu
VmFsdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwRjU1RjBGNDE0RDEwNjM5MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1RjBGMTE0RDEwNjM2MDBBQzc2
NDkgLyogQWJzdHJhY3RQQy5jcHAgKi87IH07CiAJCTBGNTVGMEY1MTREMTA2M0MwMEFDNzY0OSAv
KiBBYnN0cmFjdFBDLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjU1RjBGMjE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUYwOENGMTQ2Qzc2MzMw
MDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5j
b25kaXRpb25hbEZpbmFsaXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC00MTksNyArNDUyLDcgQEAKIAkJODZCOTlBRTMxMTdFNTc4MTAwREY1
QTkwIC8qIFN0cmluZ0J1ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gODZCOTlBRTExMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QkIwOUMw
MTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJFMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdS
ZXBhdGNoLmNwcCAqLzsgfTsKIAkJODZCQjA5QzExMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0
Y2guaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIw
OUJGMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmggKi87IH07Ci0JCTg2QzM2RUVBMEVF
MTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3Jv
QXNzZW1ibGVyLmggKi87IH07CisJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fz
c2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
ODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTAxMUEyMTNFRTAw
MDdGN0YwIC8qIE1hY3JvQXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OEREMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fz
c2VtYmxlckFSTS5jcHAgKi87IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNy
b0Fzc2VtYmxlck1JUFMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2QzU2OERFMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAq
LzsgfTsKIAkJODZDNTY4RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERGMTFBMjEz
RUUwMDA3RjdGMCAvKiBNSVBTQXNzZW1ibGVyLmggKi87IH07CkBAIC03ODksNiArODIyLDIwIEBA
CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVy
SXRlbVByb3h5IHNlY3Rpb24gKi8KKwkJMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENv
bnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsK
KwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0
IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9
IDBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSAiTExJbnQgT2Zmc2V0
cyI7CisJCX07CisJCTBGNDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVt
UHJveHkgKi8gPSB7CisJCQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWlu
ZXJQb3J0YWwgPSAwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87
CisJCQlwcm94eVR5cGUgPSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODA4RTE0
QkE3RTVFMDBCRkUyNzI7CisJCQlyZW1vdGVJbmZvID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9y
OworCQl9OwogCQkxNDEyMTRCRTBBNDkxOTBFMDA0ODAyNTUgLyogUEJYQ29udGFpbmVySXRlbVBy
b3h5ICovID0gewogCQkJaXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVy
UG9ydGFsID0gMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpA
QCAtODM0LDYgKzg4MSwxNSBAQAogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9u
ICovCiAKIC8qIEJlZ2luIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2
ODA4RDE0QkE3RTVFMDBCRkUyNzIgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJYQ29w
eUZpbGVzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlk
c3RQYXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMDsK
KwkJCWZpbGVzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAxOworCQl9OwogCQk1REJCMTUxMTEzMUQwQjEzMDA1NkFEMzYgLyogQ29weSBTdXBwb3J0
IFNjcmlwdCAqLyA9IHsKIAkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSAxMjsKQEAgLTg3NCw2ICs5MzAsMTAgQEAKIAkJMEJBQzk0OUUxMzM4NzI4
NDAwQ0YxMzVCIC8qIFRocmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5
Q2hhbmdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFyeUNoYW5n
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwQkYyOEEyODExQTMzREMzMDA2MzhG
ODQgLyogU2l6ZUxpbWl0cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBTaXplTGltaXRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTUx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5jcHA7IHBhdGggPSBsbGludC9M
TEludEVudHJ5cG9pbnRzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgz
OTYxNEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBuYW1lID0gTExJbnRFbnRyeXBvaW50cy5oOyBwYXRoID0gbGxpbnQvTExJbnRF
bnRyeXBvaW50cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NzE0QkNG
NDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gTExJbnRUaHVua3MuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3MuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYg
LyogTExJbnRUaHVua3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRU
aHVua3MuaDsgcGF0aCA9IGxsaW50L0xMSW50VGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMEI4M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb2RlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjBCODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGFuZGxlckluZm8uaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25S
YW5nZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwcmVzc2lvblJh
bmdlSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODg0LDkgKzk0NCwxMyBA
QAogCQkwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1ldGhvZENhbGxMaW5rSW5mby5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xv
YmFsUmVzb2x2ZUluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2xvYmFs
UmVzb2x2ZUluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjgxNEJD
Rjk1QjAwODg1QjRGIC8qIENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zm
c2V0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEZDNDU4MTRCRDE1RjEwMEI4
MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBMTEludENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjE1RjE1RDE0QjdBNzNBMDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbW1vblNsb3dQYXRocy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQkwRjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdFZlY3Rvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVRE
cml2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURHJpdmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBD
b2RlU3BlY2lhbGl6YXRpb25LaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvZGVTcGVjaWFsaXphdGlvbktpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhlY3V0aW9uSGFybmVzcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252
ZW50aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUNvbnZl
bnRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjQyREE1MTNGM0IxQkIw
MDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMEYyQzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAv
KiBERkdDb2RlQmxvY2tzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGR0Nv
ZGVCbG9ja3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg5Nyw2ICs5NjEsMjAg
QEAKIAkJMEY0MzE3MzYxNDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMaXN0YWJsZUhhbmRsZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2Vw
dGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklURXhjZXB0
aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDgwMTRCQTU3Mjcw
MEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpJVEV4Y2VwdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0Njgw
OEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5l
eGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0gSlNDTExJbnRPZmZzZXRzRXh0
cmFjdG9yOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkwRjQ2ODA5RDE0
QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5jcHA7IHBhdGggPSBsbGludC9MTElu
dEV4Y2VwdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RTE0
QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IExMSW50RXhjZXB0aW9ucy5oOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRp
b25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlGMTRCQTdGODIwMEJG
RTI3MiAvKiBMTEludFNsb3dQYXRocy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBMTEludFNsb3dQYXRocy5jcHA7IHBhdGggPSBsbGludC9MTEludFNsb3dQYXRocy5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3
MiAvKiBMTEludFNsb3dQYXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBM
TEludFNsb3dQYXRocy5oOyBwYXRoID0gbGxpbnQvTExJbnRTbG93UGF0aHMuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zm
c2V0c0V4dHJhY3Rvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBM
TEludE9mZnNldHNFeHRyYWN0b3IuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFj
dG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzUxNEJCQjE2OTAw
QkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IExMSW50Q29tbW9uLmg7IHBhdGggPSBsbGludC9MTEludENvbW1vbi5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50T2ZmbGlu
ZUFzbUNvbmZpZy5oOyBwYXRoID0gbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dM
ZXZlbEludGVycHJldGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM4MTRCQkIxNjkwMEJG
RTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IExvd0xldmVsSW50ZXJwcmV0ZXIuaDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0UxNEJCQjNEMTAw
QkZFMjcyIC8qIExMSW50RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBMTEludERhdGEuY3BwOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0
YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludERhdGEuaDsgcGF0aCA9
IGxsaW50L0xMSW50RGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBE
MDE0QkJDNUY4MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RD
YWxsUmV0dXJuVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSG9zdENh
bGxSZXR1cm5WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1RjBGMTE0
RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBYnN0cmFjdFBDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEY1NUYwRjIxNEQxMDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQWJzdHJhY3RQQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQkwRjVGMDhDQzE0NkJFNjAyMDAwNDcyQTkgLyogREZHQnl0ZUNvZGVDYWNoZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdCeXRlQ29kZUNhY2hlLmg7IHBhdGgg
PSBkZmcvREZHQnl0ZUNvZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTY1NCw2ICsxNzMyLDEzIEBACiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAK
IC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEMx
NEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdv
cmtzQnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxl
cyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
KwkJfTsKIAkJMTQxMjExMUUwQTQ4NzkzQzAwNDgwMjU1IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIx
NDc0ODM2NDc7CkBAIC0xNzEyLDYgKzE3OTcsNyBAQAogCQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4
MDI1NSAvKiBtaW5pZG9tICovLAogCQkJCTE0QkQ1OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0
YXBpICovLAogCQkJCTY1MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAor
CQkJCTBGNDY4MDhGMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3Ig
Ki8sCiAJCQkpOwogCQkJbmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsKQEAgLTE3MzcsNiArMTgyMyw3IEBACiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8q
IEphdmFTY3JpcHRDb3JlUHJlZml4LmggKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0
IC8qIGpzYy5jcHAgKi8sCiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5o
ICovLAorCQkJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLywKIAkJCQkxNDMy
RUJENzBBMzRDQUQ0MDA3MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFE
NjQ5RiAvKiBhc3NlbWJsZXIgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5
dGVjb2RlICovLApAQCAtMTc3Niw2ICsxODYzLDI4IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1
c2VzVGFicyA9IDA7CiAJCX07CisJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAq
LyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYwQjgzOTUx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50RW50cnlwb2ludHMuY3BwICovLAorCQkJCTBGMEI4Mzk2
MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8sCisJCQkJMEYwQjgzOTcx
NEJDRjQ1QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmNwcCAqLywKKwkJCQkwRjBCODM5ODE0QkNG
NDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCAqLywKKwkJCQkwRjQ2ODBDRTE0QkJCM0QxMDBC
RkUyNzIgLyogTExJbnREYXRhLmNwcCAqLywKKwkJCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIg
LyogTExJbnREYXRhLmggKi8sCisJCQkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50
Q29tbW9uLmggKi8sCisJCQkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGlu
ZUFzbUNvbmZpZy5oICovLAorCQkJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZl
bEludGVycHJldGVyLmNwcCAqLywKKwkJCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93
TGV2ZWxJbnRlcnByZXRlci5oICovLAorCQkJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBM
TEludEV4Y2VwdGlvbnMuY3BwICovLAorCQkJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBM
TEludEV4Y2VwdGlvbnMuaCAqLywKKwkJCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJ
bnRTbG93UGF0aHMuY3BwICovLAorCQkJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTElu
dFNsb3dQYXRocy5oICovLAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9m
ZnNldHNFeHRyYWN0b3IuY3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGludDsKKwkJCXNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3MjYwMDQ4MDI1NSAvKiB0
ZXN0cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xODEw
LDYgKzE5MTksOCBAQAogCQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkgLyogaml0ICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2ODBEMDE0QkJDNUY4
MDBCRkUyNzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJMEY0NjgwRDExNEJC
QzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJCQkwRjQ2ODA3RjE0
QkE1NzI3MDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJMEY0NjgwODAxNEJB
NTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4MkUzNzE0MUFCMTQy
MDAxNzlDOTQgLyogQ29tcGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTIyODMsNiArMjM5NCw4IEBA
CiAJCTdFRjZFMEJCMEVCN0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIg
LyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oICovLAorCQkJCTBGMjFDMjdBMTRCRTcyNzMwMEFE
QzY0QiAvKiBFeGVjdXRpb25IYXJuZXNzLmggKi8sCiAJCQkJMEYxNUYxNUQxNEI3QTczQTAwNURF
MzdEIC8qIENvbW1vblNsb3dQYXRocy5oICovLAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0
RCAvKiBBcmdMaXN0LmNwcCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJn
TGlzdC5oICovLApAQCAtMjY2Nyw2ICsyNzgwLDggQEAKIAkJOTY5QTA3OEYwRUQxRDNBRTAwRjFG
NjgxIC8qIGJ5dGVjb2RlICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9
ICgKKwkJCQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5o
ICovLAorCQkJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5o
ICovLAogCQkJCTBGOUZDOEJGMTRFMUI1RkIwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRM
aXN0LmNwcCAqLywKIAkJCQkwRjlGQzhDMDE0RTFCNUZCMDBENTJBRTAgLyogUG9seW1vcnBoaWNQ
dXRCeUlkTGlzdC5oICovLAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5k
LmggKi8sCkBAIC0zMjMwLDcgKzMzNDUsMTYgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZF
N0IgLyogWWFyclBhdHRlcm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJEQjhBODEw
MEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYx
NUYxNEI3QTczRTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY0NjgwQTMxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0
aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExM
SW50Q29tbW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIg
LyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDRDE0
QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJMEY0NjgwRDMxNEJCRDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJMEY0NjgwRDUxNEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBp
biBIZWFkZXJzICovLAorCQkJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5
cG9pbnRzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyog
TExJbnRUaHVua3MuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0
RiAvKiBDb2RlVHlwZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTkxNEJDRjU2MjAwODg1
QjRGIC8qIEhhbmRsZXJJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJC
MDA4ODVCNEYgLyogRXhwcmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjM5
LDcgKzMzNjMsMTEgQEAKIAkJCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2Fs
bExpbmtJbmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYg
LyogR2xvYmFsUmVzb2x2ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I5MTRCQ0Y5
NUYwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEYwRkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZv
LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJp
dmVyLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhl
Y3V0aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0QxNEJFNzI3QTAwQURD
NjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFD
MjdGMTRCRUFBODIwMEFEQzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjdCMjk0QTE0QzNDRDI5MDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0
aWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0QzE0QzNDRDQzMDA3QzNEQjEgLyogREZH
Qnl0ZUNvZGVDYWNoZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjcxLDYgKzMzOTksMjQgQEAKIC8q
IEVuZCBQQlhIZWFkZXJzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWE5hdGl2
ZVRhcmdldCBzZWN0aW9uICovCisJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTElu
dE9mZnNldHNFeHRyYWN0b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQli
dWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxk
IGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNF
eHRyYWN0b3IiICovOworCQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwOEIxNEJBN0U1RTAw
QkZFMjcyIC8qIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZy
YW1ld29ya3MgKi8sCisJCQkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAq
LywKKwkJCSk7CisJCQlidWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgK
KwkJCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywK
KwkJCSk7CisJCQluYW1lID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdE5h
bWUgPSBKU0NMTEludE9mZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMEY0
NjgwOEYxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJ
CXByb2R1Y3RUeXBlID0gImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CiAJCTE0
MTIxMTFGMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9tICovID0gewogCQkJaXNhID0gUEJYTmF0
aXZlVGFyZ2V0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MTIxMTM5MEE0ODc5ODQw
MDQ4MDI1NSAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAi
bWluaWRvbSIgKi87CkBAIC0zMzk3LDExICszNTQzLDI5IEBACiAJCQkJMTRCRDU5QkUwQTNFOEY5
MDAwQkFGNTlDIC8qIHRlc3RhcGkgKi8sCiAJCQkJOTMyRjVCREEwODIyQTFDNzAwNzM2OTc1IC8q
IGpzYyAqLywKIAkJCQk2NTExMjJGNzE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywK
KwkJCQkwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9y
ICovLAorCQkJCTBGNDY4MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovLAog
CQkJKTsKIAkJfTsKIC8qIEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJY
U2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwQUExNEJBN0ZEOTAwQkZF
MjcyIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxs
U2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlm
aWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL2xsaW50
L0xvd0xldmVsQXNzZW1ibGVyLmFzbSIsCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBEZXJp
dmVkIFNvdXJjZXMiOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoQlVJTFRfUFJPRFVDVFNf
RElSKS9MTEludE9mZnNldHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oIiwKKwkJCSk7CisJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4v
c2g7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9M
TEludE9mZnNldHMvXCJcblxuL3Vzci9iaW4vZW52IHJ1YnkgXCIke1NSQ1JPT1R9L29mZmxpbmVh
c20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYlwiIFwiJHtTUkNST09UfS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbVwiIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0
cy9MTEludERlc2lyZWRPZmZzZXRzLmhcIlxuIjsKKwkJfTsKIAkJMzcxM0YwMTQxNDI5MDUyNDAw
MzYzODdGIC8qIENoZWNrIEZvciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVz
ICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTM1MDcsNyArMzY3MSw3IEBACiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlzaGVsbFBhdGggPSAvYmlu
L3NoOwotCQkJc2hlbGxTY3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0v
RGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBcIiR7QlVJTFRfUFJPRFVD
VFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBc
IiR7U1JDUk9PVH1cIiBKYXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2
YVNjcmlwdENvcmVcIlxuZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJcblxubWFr
ZSAtLW5vLWJ1aWx0aW4tcnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5t
YWtlXCIgLWogYC91c3Ivc2Jpbi9zeXNjdGwgLW4gaHcubmNwdWBcbiI7CisJCQlzaGVsbFNjcmlw
dCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9kb2NzXCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlXCJcblxuL2Jpbi9sbiAtc2ZoIFwiJHtTUkNST09UfVwiIEphdmFT
Y3JpcHRDb3JlXG5leHBvcnQgSmF2YVNjcmlwdENvcmU9XCJKYXZhU2NyaXB0Q29yZVwiXG5leHBv
cnQgQlVJTFRfUFJPRFVDVFNfRElSPVwiLi4vLi5cIlxuXG5tYWtlIC0tbm8tYnVpbHRpbi1ydWxl
cyAtZiBcIkphdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2VcIiAtaiBgL3Vzci9zYmlu
L3N5c2N0bCAtbiBody5uY3B1YFxuXG4vdXNyL2Jpbi9lbnYgcnVieSBKYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL2FzbS5yYiBKYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbSAke0JVSUxUX1BST0RVQ1RTX0RJUn0vSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIExMSW50
QXNzZW1ibHkuaFxuIjsKIAkJfTsKIAkJOTMxOTU4NkIwOUQ5RjkxQTAwQTU2RkQ0IC8qIENoZWNr
IEZvciBHbG9iYWwgSW5pdGlhbGl6ZXJzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRC
dWlsZFBoYXNlOwpAQCAtMzU0Miw2ICszNzA2LDE0IEBACiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2Vj
dGlvbiAqLworCQkwRjQ2ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLyA9IHsKKwkJ
CWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKKwkJCWZpbGVzID0gKAorCQkJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFEMEE0ODc5M0Mw
MDQ4MDI1NSAvKiBTb3VyY2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7
CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzgwMiw3ICszOTc0LDE0IEBA
CiAJCQkJODY3MDRCODYxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJODY3MDRCODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hl
Y2tlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyog
TExJbnRTbG93UGF0aHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTgxNEJBN0ZBQjAw
QkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODA4
MzE0QkE1NzMxMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRjQ2ODBDQzE0QkJCMTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2Fs
bFJldHVyblZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4
NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlD
MTRCQ0Y0NjMwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkw
RjBCODNCMDE0QkNGNzE2MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCTBGMEI4M0I0MTRCQ0Y4NjAwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRjY5RTg2QzMxNEM2RTU1MTAwMkMyQzYyIC8qIE51bWJlck9m
Q29yZXMuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0zODM2LDYgKzQwMTUsMTYgQEAKIC8qIEVuZCBQ
QlhTb3VyY2VzQnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERlcGVu
ZGVuY3kgc2VjdGlvbiAqLworCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0
RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJn
ZXQgPSAwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLzsKKwkJCXRh
cmdldFByb3h5ID0gMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Q
cm94eSAqLzsKKwkJfTsKKwkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8gPSB7CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0
ID0gMEY0NjgwOEUxNEJBN0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAq
LzsKKwkJCXRhcmdldFByb3h5ID0gMEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRh
aW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsKIAkJMTQxMjE0QkYwQTQ5MTkwRTAwNDgwMjU1IC8qIFBC
WFRhcmdldERlcGVuZGVuY3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5Owog
CQkJdGFyZ2V0ID0gMTQxMjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi87CkBAIC0z
ODY5LDYgKzQwNTgsMTUwIEBACiAvKiBFbmQgUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFhDQnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMEY0NjgwOTYx
NEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3Vy
YXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRI
UyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09Q
WV9QSEFTRV9TVFJJUCA9IE5POworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7
CisJCQkJR0NDX0RZTkFNSUNfTk9fUElDID0gTk87CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQ
VElPTlMgPSBZRVM7CisJCQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BS
RVBST0NFU1NPUl9ERUZJTklUSU9OUyA9ICgKKwkJCQkJIkRFQlVHPTEiLAorCQkJCQkiJChpbmhl
cml0ZWQpIiwKKwkJCQkpOworCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gTk87CisJ
CQkJR0NDX1ZFUlNJT04gPSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJ
CUdDQ19XQVJOXzY0X1RPXzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJP
VVRfTUlTU0lOR19QUk9UT1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9U
WVBFID0gWUVTOworCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVB
REVSX1NFQVJDSF9QQVRIU1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQki
JChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFS
Q0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7
CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IE5POworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdF
VF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hf
UEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURF
Ul9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4
MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENv
bmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNF
Ul9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJ
CQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQg
PSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5
OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9O
ID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9U
T18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJP
VE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJ
CQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFU
SFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVD
VFNfRElSKS9MTEludE9mZnNldHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJ
CU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9
IE5POworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9
IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07
CisJCQluYW1lID0gUmVsZWFzZTsKKwkJfTsKKwkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8q
IFByb2ZpbGluZyAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlB
UkNIUyA9ICIkKEFSQ0hTX1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAg
PSBZRVM7CisJCQkJREVCVUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7
CisJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09C
SkNfRVhDRVBUSU9OUyA9IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxl
cnMubGx2bS5jbGFuZy4xXzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04g
PSBOTzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJ
R0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZB
UklBQkxFID0gWUVTOworCQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJ
CQkuLAorCQkJCQlpY3UsCisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRz
IiwKKwkJCQkJIiQoSEVBREVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RF
UExPWU1FTlRfVEFSR0VUID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gTk87CisJCQkJ
UFJPRFVDVF9OQU1FID0gIiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4Owor
CQkJCVVTRVJfSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJ
UikvTExJbnRPZmZzZXRzICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUg
PSBQcm9maWxpbmc7CisJCX07CisJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0
aW9uICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRp
bmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0g
IiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsK
KwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlH
Q0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENF
UFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZt
LmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POwor
CQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FS
Tl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUg
PSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJ
CQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJ
CQkiJChIRUFERVJfU0VBUkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVO
VF9UQVJHRVQgPSAxMC43OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJ
CQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBp
Y3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFU
SFMpIjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUQxNEJB
N0ZEOTAwQkZFMjcyIC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRp
b247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNv
dXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODBBRTE0
QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1
cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZl
ZCBTb3VyY2VzIGNvcHkiOworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2
ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWls
ZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9
ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJ
fTsKKwkJMEY0NjgwQjAxNEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlp
c2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJP
RFVDVF9OQU1FID0gIkRlcml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJv
ZHVjdGlvbjsKKwkJfTsKIAkJMTQxMjExM0EwQTQ4Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovID0g
ewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewpA
QCAtNDExMCw2ICs0NDQzLDI4IEBACiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlv
biAqLwogCiAvKiBCZWdpbiBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMEY0Njgw
OUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0
aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovID0geworCQkJaXNhID0gWEND
b25maWd1cmF0aW9uTGlzdDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0Njgw
OTYxNEJBN0U1RTAwQkZFMjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MDk3MTRCQTdFNUUwMEJG
RTI3MiAvKiBSZWxlYXNlICovLAorCQkJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9m
aWxpbmcgKi8sCisJCQkJMEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8s
CisJCQkpOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVs
dENvbmZpZ3VyYXRpb25OYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUMxNEJBN0ZE
OTAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFy
Z2V0ICJMTEludCBPZmZzZXRzIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7
CisJCQlidWlsZENvbmZpZ3VyYXRpb25zID0gKAorCQkJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3
MiAvKiBEZWJ1ZyAqLywKKwkJCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAq
LywKKwkJCQkwRjQ2ODBBRjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBG
NDY4MEIwMTRCQTdGRDkwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1
bHRDb25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFt
ZSA9IFByb2R1Y3Rpb247CisJCX07CiAJCTE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi8gPSB7
CiAJCQlpc2EgPSBYQ0NvbmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9
ICgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5o
CShyZXZpc2lvbiAxMDgyNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xp
bmtCdWZmZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2RlZmluZSBHTE9C
QUxfVEhVTktfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+
KC0xKSkKICNkZWZpbmUgUkVHRVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3Rh
dGljX2Nhc3Q8aW50cHRyX3Q+KC0yKSkKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+Cisj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHJldmlzaW9u
IDEwODI0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJs
ZXJDb2RlUmVmLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Myw2ICsyNzMsMTQgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9
CisgICAgCisgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjcmVhdGVGcm9tRXhlY3V0
YWJsZUFkZHJlc3Modm9pZCogdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlRfVkFMSURfQ09E
RV9QT0lOVEVSKHZhbHVlKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdDsK
KyAgICAgICAgcmVzdWx0Lm1fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9CiAKICAgICBleHBsaWNpdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoUmV0dXJuQWRkcmVz
c1B0ciByYSkKICAgICAgICAgOiBtX3ZhbHVlKHJhLnZhbHVlKCkpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252ZW50aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQnl0ZWNvZGVDb252
ZW50aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQnl0ZWNvZGVDb252ZW50aW9u
c19oCisjZGVmaW5lIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCisvLyBSZWdpc3RlciBudW1iZXJz
IHVzZWQgaW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29y
ZGluZyB0byB0aGVpciByYW5nZXM6CisvLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVn
YXRpdmUgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0
aGUgY2FsbCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgorLy8gICAgICAweDAwMDAwMDAwLTB4
M0ZGRkZGRkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJl
IGxvY2FsIHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1l
LgorLy8gICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAw
eDQwMDAwMDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29k
ZUJsb2NrLgorc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4
NDAwMDAwMDA7CisKKyNlbmRpZiAvLyBCeXRlY29kZUNvbnZlbnRpb25zX2gKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCShy
ZXZpc2lvbiAxMDgyNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExp
bmtTdGF0dXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNywxNyArMjcsNDAgQEAKICNpbmNsdWRl
ICJDYWxsTGlua1N0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAi
TExJbnRDYWxsTGlua0luZm8uaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKK0NhbGxMaW5rU3RhdHVz
IENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayogcHJvZmlsZWRCbG9j
aywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKK3sKKyAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRC
bG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworI2lmIEVOQUJMRShMTElO
VCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKyAgICBMTEludENhbGxMaW5rSW5mbyog
Y2FsbExpbmtJbmZvID0gaW5zdHJ1Y3Rpb25bNF0udS5jYWxsTGlua0luZm87CisgICAgCisgICAg
cmV0dXJuIENhbGxMaW5rU3RhdHVzKGNhbGxMaW5rSW5mby0+bGFzdFNlZW5DYWxsZWUuZ2V0KCks
IGZhbHNlKTsKKyNlbHNlCisgICAgcmV0dXJuIENhbGxMaW5rU3RhdHVzKDAsIGZhbHNlKTsKKyNl
bmRpZgorfQorCiBDYWxsTGlua1N0YXR1cyBDYWxsTGlua1N0YXR1czo6Y29tcHV0ZUZvcihDb2Rl
QmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiB7CiAgICAgVU5V
U0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4
KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCi0gICAgcmV0dXJu
IENhbGxMaW5rU3RhdHVzKAotICAgICAgICBwcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8o
Ynl0ZWNvZGVJbmRleCkubGFzdFNlZW5DYWxsZWUuZ2V0KCksCi0gICAgICAgIHByb2ZpbGVkQmxv
Y2stPmNvdWxkVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKTsKKyAgICBpZiAoIXByb2ZpbGVk
QmxvY2stPm51bWJlck9mQ2FsbExpbmtJbmZvcygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZy
b21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4KTsKKyAgICAKKyAgICBpZiAocHJv
ZmlsZWRCbG9jay0+Y291bGRUYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpCisgICAgICAgIHJl
dHVybiBDYWxsTGlua1N0YXR1cygwLCB0cnVlKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiB0YXJn
ZXQgPSBwcm9maWxlZEJsb2NrLT5nZXRDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCkubGFzdFNl
ZW5DYWxsZWUuZ2V0KCk7CisgICAgaWYgKCF0YXJnZXQpCisgICAgICAgIHJldHVybiBjb21wdXRl
RnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIHJldHVy
biBDYWxsTGlua1N0YXR1cyh0YXJnZXQsIGZhbHNlKTsKICNlbHNlCiAgICAgcmV0dXJuIENhbGxM
aW5rU3RhdHVzKDAsIGZhbHNlKTsKICNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHJldmlzaW9uIDEwODI0NikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5oCSh3b3JraW5nIGNv
cHkpCkBAIC00NywxNSArNDcsMTcgQEAgcHVibGljOgogICAgIAogICAgIHN0YXRpYyBDYWxsTGlu
a1N0YXR1cyBjb21wdXRlRm9yKENvZGVCbG9jayosIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpOwog
ICAgIAotICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbFRhcmdldDsgfQor
ICAgIGJvb2wgaXNTZXQoKSBjb25zdCB7IHJldHVybiAhIW1fY2FsbFRhcmdldCB8fCBtX2NvdWxk
VGFrZVNsb3dQYXRoOyB9CiAgICAgCi0gICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVy
biAhbV9jYWxsVGFyZ2V0OyB9CisgICAgYm9vbCBvcGVyYXRvciEoKSBjb25zdCB7IHJldHVybiAh
aXNTZXQoKTsgfQogICAgIAogICAgIGJvb2wgY291bGRUYWtlU2xvd1BhdGgoKSBjb25zdCB7IHJl
dHVybiBtX2NvdWxkVGFrZVNsb3dQYXRoOyB9CiAgICAgCiAgICAgSlNGdW5jdGlvbiogY2FsbFRh
cmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fY2FsbFRhcmdldDsgfQogICAgIAogcHJpdmF0ZToKKyAg
ICBzdGF0aWMgQ2FsbExpbmtTdGF0dXMgY29tcHV0ZUZyb21MTEludChDb2RlQmxvY2sqLCB1bnNp
Z25lZCBieXRlY29kZUluZGV4KTsKKyAgICAKICAgICBKU0Z1bmN0aW9uKiBtX2NhbGxUYXJnZXQ7
CiAgICAgYm9vbCBtX2NvdWxkVGFrZVNsb3dQYXRoOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxMDgyNDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKICNpbmNsdWRlICJK
U1N0YXRpY1Njb3BlT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxv
d0xldmVsSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJSZXBhdGNoQnVmZmVyLmgiCiAjaW5jbHVk
ZSAiVVN0cmluZ0NvbmNhdGVuYXRlLmgiCiAjaW5jbHVkZSA8c3RkaW8uaD4KQEAgLTM1NiwxMCAr
MzU3LDEwIEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYykgY28KICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGluc3RydWN0aW9ucygpLnNpemUoKTsgaSArPSBvcGNvZGVM
ZW5ndGhzW2V4ZWMtPmludGVycHJldGVyKCktPmdldE9wY29kZUlEKGluc3RydWN0aW9ucygpW2ld
LnUub3Bjb2RlKV0pCiAgICAgICAgICsraW5zdHJ1Y3Rpb25Db3VudDsKIAotICAgIGRhdGFMb2co
IiVsdSBtX2luc3RydWN0aW9uczsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVk
IGNhbGxlZSByZWdpc3RlcihzKVxuXG4iLAorICAgIGRhdGFMb2coIiVsdSBtX2luc3RydWN0aW9u
czsgJWx1IGJ5dGVzIGF0ICVwOyAlZCBwYXJhbWV0ZXIocyk7ICVkIGNhbGxlZSByZWdpc3Rlcihz
KTsgJWQgdmFyaWFibGUocylcblxuIiwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9u
Zz4oaW5zdHJ1Y3Rpb25Db3VudCksCiAgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+
KGluc3RydWN0aW9ucygpLnNpemUoKSAqIHNpemVvZihJbnN0cnVjdGlvbikpLAotICAgICAgICB0
aGlzLCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKTsKKyAgICAgICAgdGhp
cywgbV9udW1QYXJhbWV0ZXJzLCBtX251bUNhbGxlZVJlZ2lzdGVycywgbV9udW1WYXJzKTsKIAog
ICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGJlZ2luID0gaW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKTsKICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+Ojpjb25zdF9pdGVyYXRvciBl
bmQgPSBpbnN0cnVjdGlvbnMoKS5lbmQoKTsKQEAgLTg5Niw2ICs4OTcsMTQgQEAgdm9pZCBDb2Rl
QmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjLCBjbwogICAgICAgICAgICAgcHJpbnRQdXRCeUlk
T3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX3RyYW5zaXRpb24iKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRp
b25fZGlyZWN0OiB7CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwg
aXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QiKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOiB7
CisgICAgICAgICAgICBwcmludFB1dEJ5SWRPcChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlf
aWRfdHJhbnNpdGlvbl9ub3JtYWwiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX2dlbmVyaWM6IHsKICAgICAgICAgICAgIHByaW50UHV0
QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9pZF9nZW5lcmljIik7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTE0NTMsNiArMTQ2Miw3IEBAIENvZGVCbG9jazo6Q29kZUJsb2NrKENv
cHlQYXJzZWRCbG9ja1RhZywKIHsKICAgICBzZXROdW1QYXJhbWV0ZXJzKG90aGVyLm51bVBhcmFt
ZXRlcnMoKSk7CiAgICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOworICAgIGppdEFmdGVyV2FybVVw
KCk7CiAgICAgCiAgICAgaWYgKG90aGVyLm1fcmFyZURhdGEpIHsKICAgICAgICAgY3JlYXRlUmFy
ZURhdGFJZk5lY2Vzc2FyeSgpOwpAQCAtMTUwMSw2ICsxNTExLDcgQEAgQ29kZUJsb2NrOjpDb2Rl
QmxvY2soU2NyaXB0RXhlY3V0YWJsZSogbwogICAgIEFTU0VSVChtX3NvdXJjZSk7CiAgICAgCiAg
ICAgb3B0aW1pemVBZnRlcldhcm1VcCgpOworICAgIGppdEFmdGVyV2FybVVwKCk7CiAKICNpZiBE
VU1QX0NPREVfQkxPQ0tfU1RBVElTVElDUwogICAgIGxpdmVDb2RlQmxvY2tTZXQuYWRkKHRoaXMp
OwpAQCAtMTUxOCw3ICsxNTI5LDExIEBAIENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiAjaWYgRU5B
QkxFKFZFUkJPU0VfVkFMVUVfUFJPRklMRSkKICAgICBkdW1wVmFsdWVQcm9maWxlcygpOwogI2Vu
ZGlmCi0gICAgCisKKyNpZiBFTkFCTEUoTExJTlQpICAgIAorICAgIHdoaWxlIChtX2luY29taW5n
TExJbnRDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdMTEludENhbGxzLmVuZCgpKQorICAgICAg
ICBtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpLT5yZW1vdmUoKTsKKyNlbmRpZiAvLyBFTkFC
TEUoTExJTlQpCiAjaWYgRU5BQkxFKEpJVCkKICAgICAvLyBXZSBtYXkgYmUgZGVzdHJveWVkIGJl
Zm9yZSBhbnkgQ29kZUJsb2NrcyB0aGF0IHJlZmVyIHRvIHVzIGFyZSBkZXN0cm95ZWQuCiAgICAg
Ly8gQ29uc2lkZXIgdGhhdCB0d28gQ29kZUJsb2NrcyBiZWNvbWUgdW5yZWFjaGFibGUgYXQgdGhl
IHNhbWUgdGltZS4gVGhlcmUKQEAgLTE3MzAsOCArMTc0NSw2OSBAQCB2b2lkIENvZGVCbG9jazo6
ZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoCiAjZWxzZQogICAgIHN0YXRpYyBjb25zdCBib29sIHZl
cmJvc2VVbmxpbmtpbmcgPSBmYWxzZTsKICNlbmRpZgotI2VuZGlmCisjZW5kaWYgLy8gRU5BQkxF
KEpJVCkKICAgICAKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgSW50ZXJwcmV0ZXIqIGludGVycHJl
dGVyID0gbV9nbG9iYWxEYXRhLT5pbnRlcnByZXRlcjsKKyAgICAvLyBpbnRlcnByZXRlci0+Y2xh
c3NpY0VuYWJsZWQoKSByZXR1cm5zIHRydWUgaWYgdGhlIG9sZCBDKysgaW50ZXJwcmV0ZXIgaXMg
ZW5hYmxlZC4gSWYgdGhhdCdzIGVuYWJsZWQKKyAgICAvLyB0aGVuIHdlJ3JlIG5vdCB1c2luZyBM
TEludC4KKyAgICBpZiAoIWludGVycHJldGVyLT5jbGFzc2ljRW5hYmxlZCgpKSB7CisgICAgICAg
IGZvciAoc2l6ZV90IHNpemUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwg
aSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3RydWN0aW9uKiBjdXJJbnN0
cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ld
XTsKKyAgICAgICAgICAgIHN3aXRjaCAoaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3Ry
dWN0aW9uWzBdLnUub3Bjb2RlKSkgeworICAgICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6Cisg
ICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICAgICAgICAgICAgICBpZiAoIWN1cklu
c3RydWN0aW9uWzRdLnUuc3RydWN0dXJlIHx8IEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9u
WzRdLnUuc3RydWN0dXJlLmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAgICAgIGRh
dGFMb2coIkNsZWFyaW5nIExMSW50IHByb3BlcnR5IGFjY2VzcyB3aXRoIHN0cnVjdHVyZSAlcC5c
biIsIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgICAgICAg
ICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAg
IGN1ckluc3RydWN0aW9uWzVdLnUub3BlcmFuZCA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAg
ICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsOgorICAgICAgICAgICAg
ICAgIGlmIChIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQo
KSkKKyAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25b
Nl0udS5zdHJ1Y3R1cmUuZ2V0KCkpCisgICAgICAgICAgICAgICAgICAgICYmIEhlYXA6OmlzTWFy
a2VkKGN1ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uZ2V0KCkpKQorICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykg
eworICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBMTEludCBwdXQgdHJhbnNp
dGlvbiB3aXRoIHN0cnVjdHVyZXMgJXAgLT4gJXAsIGNoYWluICVwLlxuIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5n
ZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJJbnN0cnVjdGlvbls3XS51LnN0
cnVjdHVyZUNoYWluLmdldCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
Y3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBj
dXJJbnN0cnVjdGlvbls2XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1
ckluc3RydWN0aW9uWzddLnUuc3RydWN0dXJlQ2hhaW4uY2xlYXIoKTsKKyAgICAgICAgICAgICAg
ICBjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSA9IGludGVycHJldGVyLT5nZXRPcGNvZGUob3Bf
cHV0X2J5X2lkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9IG1fZ2xvYmFsUmVzb2x2ZUluc3Ry
dWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICBJbnN0
cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAmaW5zdHJ1Y3Rpb25zKClbbV9nbG9iYWxSZXNvbHZl
SW5zdHJ1Y3Rpb25zW2ldXTsKKyAgICAgICAgICAgIEFTU0VSVChpbnRlcnByZXRlci0+Z2V0T3Bj
b2RlSUQoY3VySW5zdHJ1Y3Rpb25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsCisg
ICAgICAgICAgICAgICAgICAgfHwgaW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGN1ckluc3RydWN0
aW9uWzBdLnUub3Bjb2RlKSA9PSBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKKyAgICAgICAg
ICAgIGlmICghY3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQo
Y3VySW5zdHJ1Y3Rpb25bM10udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAg
ICAgZGF0YUxvZygiQ2xlYXJpbmcgTExJbnQgZ2xvYmFsIHJlc29sdmUgY2FjaGUgd2l0aCBzdHJ1
Y3R1cmUgJXAuXG4iLCBjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQoKSk7CisgICAg
ICAgICAgICBjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAg
ICAgY3VySW5zdHJ1Y3Rpb25bNF0udS5vcGVyYW5kID0gMDsKKyAgICAgICAgfQorICAgICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgICAgIGlmIChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpICYm
ICFIZWFwOjppc01hcmtlZChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5jYWxsZWUuZ2V0KCkpKSB7
CisgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2VVbmxpbmtpbmcpCisgICAgICAgICAgICAgICAg
ICAgIGRhdGFMb2coIkNsZWFyaW5nIExMSW50IGNhbGwgZnJvbSAlcC5cbiIsIHRoaXMpOworICAg
ICAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLnVubGluaygpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgaWYgKCEhbV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5D
YWxsZWUgJiYgIUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxhc3RTZWVu
Q2FsbGVlLmdldCgpKSkKKyAgICAgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5s
YXN0U2VlbkNhbGxlZS5jbGVhcigpOworICAgICAgICB9CisgICAgfQorI2VuZGlmIC8vIEVOQUJM
RShMTElOVCkKKwogI2lmIEVOQUJMRShERkdfSklUKQogICAgIC8vIENoZWNrIGlmIHdlJ3JlIG5v
dCBsaXZlLiBJZiB3ZSBhcmUsIHRoZW4gamV0dGlzb24uCiAgICAgaWYgKCEoc2hvdWxkSW1tZWRp
YXRlbHlBc3N1bWVMaXZlbmVzc0R1cmluZ1NjYW4oKSB8fCBtX2RmZ0RhdGEtPmxpdmVuZXNzSGFz
QmVlblByb3ZlZCkpIHsKQEAgLTE3NTQsNyArMTgzMCw3IEBAIHZvaWQgQ29kZUJsb2NrOjpmaW5h
bGl6ZVVuY29uZGl0aW9uYWxseSgKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51
bWJlck9mQ2FsbExpbmtJbmZvcygpOyArK2kpIHsKICAgICAgICAgICAgIGlmIChjYWxsTGlua0lu
Zm8oaSkuaXNMaW5rZWQoKSAmJiAhSGVhcDo6aXNNYXJrZWQoY2FsbExpbmtJbmZvKGkpLmNhbGxl
ZS5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKLSAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgY2FsbCBmcm9tICVwLlxuIiwgdGhpcyk7
CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNsZWFyaW5nIGNhbGwgZnJvbSAlcCB0byAl
cC5cbiIsIHRoaXMsIGNhbGxMaW5rSW5mbyhpKS5jYWxsZWUuZ2V0KCkpOwogICAgICAgICAgICAg
ICAgIGNhbGxMaW5rSW5mbyhpKS51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVwYXRjaEJ1ZmZlcik7
CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoISFjYWxsTGlua0luZm8oaSkubGFzdFNl
ZW5DYWxsZWUKQEAgLTE4NTIsMTAgKzE5MjgsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OnN0cm9uZ2x5
VmlzaXRTdHJvbmdSZWZlcgogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9mdW5jdGlvbkRl
Y2xzLnNpemUoKTsgKytpKQogICAgICAgICB2aXNpdG9yLmFwcGVuZCgmbV9mdW5jdGlvbkRlY2xz
W2ldKTsKICNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKLSAgICBmb3IgKHNpemVfdCBz
aXplID0gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6
ZTsgKytpKQotICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9ucygp
W21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dKTsKLSAgICBmb3IgKHNpemVfdCBzaXpl
ID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyAr
K2kpCi0gICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClbbV9n
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgaWYgKG1fZ2xvYmFsRGF0YS0+aW50
ZXJwcmV0ZXItPmNsYXNzaWNFbmFibGVkKCkpIHsKKyAgICAgICAgZm9yIChzaXplX3Qgc2l6ZSA9
IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsr
aSkKKyAgICAgICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClb
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOworICAgICAgICBmb3IgKHNpemVfdCBz
aXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCisgICAgICAgICAgICB2aXNpdFN0cnVjdHVyZXModmlzaXRvciwgJmluc3RydWN0aW9u
cygpW21fZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uc1tpXV0pOworICAgIH0KICNlbmRpZgogCiAj
aWYgRU5BQkxFKERGR19KSVQpCkBAIC0xODYzLDggKzE5NDEsOSBAQCB2b2lkIENvZGVCbG9jazo6
c3Ryb25nbHlWaXNpdFN0cm9uZ1JlZmVyCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IGV4ZWN1
dGFibGVzIHRoYXQgd2UgaGF2ZSBpbmxpbmVkIGRvbid0IGRpZS4KICAgICAgICAgLy8gRklYTUU6
IElmIHRoZXkgd291bGQgaGF2ZSBvdGhlcndpc2UgZGllZCwgd2Ugc2hvdWxkIHByb2JhYmx5IHRy
aWdnZXIgcmVjb21waWxhdGlvbi4KICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBpbmxp
bmVDYWxsRnJhbWVzKCkuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIHZpc2l0b3IuYXBwZW5k
KCZpbmxpbmVDYWxsRnJhbWVzKClbaV0uZXhlY3V0YWJsZSk7Ci0gICAgICAgICAgICB2aXNpdG9y
LmFwcGVuZCgmaW5saW5lQ2FsbEZyYW1lcygpW2ldLmNhbGxlZSk7CisgICAgICAgICAgICBJbmxp
bmVDYWxsRnJhbWUmIGlubGluZUNhbGxGcmFtZSA9IGlubGluZUNhbGxGcmFtZXMoKVtpXTsKKyAg
ICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpbmxpbmVDYWxsRnJhbWUuZXhlY3V0YWJsZSk7Cisg
ICAgICAgICAgICB2aXNpdG9yLmFwcGVuZCgmaW5saW5lQ2FsbEZyYW1lLmNhbGxlZSk7CiAgICAg
ICAgIH0KICAgICB9CiAjZW5kaWYKQEAgLTIwNjgsMTIgKzIxNDcsMTggQEAgdW5zaWduZWQgQ29k
ZUJsb2NrOjphZGRPckZpbmRDb25zdGFudChKUwogICAgIH0KICAgICByZXR1cm4gYWRkQ29uc3Rh
bnQodik7CiB9Ci0gICAgCisKICNpZiBFTkFCTEUoSklUKQogdm9pZCBDb2RlQmxvY2s6OnVubGlu
a0NhbGxzKCkKIHsKICAgICBpZiAoISFtX2FsdGVybmF0aXZlKQogICAgICAgICBtX2FsdGVybmF0
aXZlLT51bmxpbmtDYWxscygpOworI2lmIEVOQUJMRShMTElOVCkKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG1fbGxpbnRDYWxsTGlua0luZm9zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlm
IChtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5pc0xpbmtlZCgpKQorICAgICAgICAgICAgbV9sbGlu
dENhbGxMaW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgfQorI2VuZGlmCiAgICAgaWYgKCEobV9j
YWxsTGlua0luZm9zLnNpemUoKSB8fCBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpKSkKICAg
ICAgICAgcmV0dXJuOwogICAgIGlmICghbV9nbG9iYWxEYXRhLT5jYW5Vc2VKSVQoKSkKQEAgLTIw
ODgsMTAgKzIxNzMsMzkgQEAgdm9pZCBDb2RlQmxvY2s6OnVubGlua0NhbGxzKCkKIAogdm9pZCBD
b2RlQmxvY2s6OnVubGlua0luY29taW5nQ2FsbHMoKQogeworI2lmIEVOQUJMRShMTElOVCkKKyAg
ICB3aGlsZSAobV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nTExJbnRD
YWxscy5lbmQoKSkKKyAgICAgICAgbV9pbmNvbWluZ0xMSW50Q2FsbHMuYmVnaW4oKS0+dW5saW5r
KCk7CisjZW5kaWYKKyAgICBpZiAobV9pbmNvbWluZ0NhbGxzLmlzRW1wdHkoKSkKKyAgICAgICAg
cmV0dXJuOwogICAgIFJlcGF0Y2hCdWZmZXIgcmVwYXRjaEJ1ZmZlcih0aGlzKTsKICAgICB3aGls
ZSAobV9pbmNvbWluZ0NhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0NhbGxzLmVuZCgpKQogICAg
ICAgICBtX2luY29taW5nQ2FsbHMuYmVnaW4oKS0+dW5saW5rKCptX2dsb2JhbERhdGEsIHJlcGF0
Y2hCdWZmZXIpOwogfQorCit1bnNpZ25lZCBDb2RlQmxvY2s6OmJ5dGVjb2RlT2Zmc2V0KEV4ZWNT
dGF0ZSogZXhlYywgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5BZGRyZXNzKQoreworI2lmIEVOQUJM
RShMTElOVCkKKyAgICBpZiAocmV0dXJuQWRkcmVzcy52YWx1ZSgpID49IGJpdHdpc2VfY2FzdDx2
b2lkKj4oJmxsaW50X2JlZ2luKQorICAgICAgICAmJiByZXR1cm5BZGRyZXNzLnZhbHVlKCkgPD0g
Yml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZW5kKSkgeworICAgICAgICBBU1NFUlQoZXhlYy0+
Y29kZUJsb2NrKCkpOworICAgICAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCkgPT0gdGhpcyk7
CisgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRUeXBlKCkpKTsK
KyAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gZXhlYy0+Y3VycmVudFZQQygpOwor
ICAgICAgICBBU1NFUlQoaW5zdHJ1Y3Rpb24pOworICAgICAgICByZXR1cm4gYnl0ZWNvZGVPZmZz
ZXQoaW5zdHJ1Y3Rpb24pOworICAgIH0KKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwor
I2VuZGlmCisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICByZXR1cm4gMTsKKyAgICBWZWN0
b3I8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVPZmZzZXQ+JiBjYWxsSW5kaWNlcyA9IG1fcmFy
ZURhdGEtPm1fY2FsbFJldHVybkluZGV4VmVjdG9yOworICAgIGlmICghY2FsbEluZGljZXMuc2l6
ZSgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gYmluYXJ5U2VhcmNoPENhbGxSZXR1
cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LCB1bnNpZ25lZCwgZ2V0Q2FsbFJldHVybk9mZnNldD4o
Y2FsbEluZGljZXMuYmVnaW4oKSwgY2FsbEluZGljZXMuc2l6ZSgpLCBnZXRKSVRDb2RlKCkub2Zm
c2V0T2YocmV0dXJuQWRkcmVzcy52YWx1ZSgpKSktPmJ5dGVjb2RlT2Zmc2V0OworfQogI2VuZGlm
CiAKIHZvaWQgQ29kZUJsb2NrOjpjbGVhckV2YWxDYWNoZSgpCkBAIC0yMTg3LDI0ICsyMzAxLDQ1
IEBAIGJvb2wgRnVuY3Rpb25Db2RlQmxvY2s6OmNhbkNvbXBpbGVXaXRoREYKIAogdm9pZCBQcm9n
cmFtQ29kZUJsb2NrOjpqZXR0aXNvbigpCiB7Ci0gICAgQVNTRVJUKGdldEpJVFR5cGUoKSAhPSBK
SVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgQVNTRVJUKEpJVENvZGU6OmlzT3B0aW1pemluZ0pJ
VChnZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKICAg
ICBzdGF0aWNfY2FzdDxQcm9ncmFtRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0
dGlzb25PcHRpbWl6ZWRDb2RlKCpnbG9iYWxEYXRhKCkpOwogfQogCiB2b2lkIEV2YWxDb2RlQmxv
Y2s6OmpldHRpc29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJh
c2VsaW5lSklUKTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5
cGUoKSkpOwogICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19j
YXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXpl
ZENvZGUoKmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRnVuY3Rpb25Db2RlQmxvY2s6OmpldHRp
c29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklU
KTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwog
ICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PEZ1bmN0
aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+amV0dGlzb25PcHRpbWl6ZWRDb2Rl
Rm9yKCpnbG9iYWxEYXRhKCksIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBD
b2RlRm9yQ2FsbCk7CiB9CisKK3ZvaWQgUHJvZ3JhbUNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0g
SklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1l
bnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4ob3duZXJF
eGVjdXRhYmxlKCkpLT5qaXRDb21waWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEV2YWxDb2Rl
QmxvY2s6OmppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBB
U1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgIEFT
U0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxFdmFs
RXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgpKS0+aml0Q29tcGlsZShnbG9iYWxEYXRhKTsK
K30KKwordm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6aml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6SW50
ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG93bmVyRXhlY3V0YWJsZSgp
KS0+aml0Q29tcGlsZUZvcihnbG9iYWxEYXRhLCBtX2lzQ29uc3RydWN0b3IgPyBDb2RlRm9yQ29u
c3RydWN0IDogQ29kZUZvckNhbGwpOworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoVkFMVUVfUFJP
RklMRVIpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CShyZXZpc2lvbiAxMDgyNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNpZm5kZWYgQ29kZUJs
b2NrX2gKICNkZWZpbmUgQ29kZUJsb2NrX2gKIAorI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlv
bnMuaCIKICNpbmNsdWRlICJDYWxsTGlua0luZm8uaCIKICNpbmNsdWRlICJDYWxsUmV0dXJuT2Zm
c2V0VG9CeXRlY29kZU9mZnNldC5oIgogI2luY2x1ZGUgIkNvZGVPcmlnaW4uaCIKQEAgLTUwLDYg
KzUxLDcgQEAKICNpbmNsdWRlICJKSVRXcml0ZUJhcnJpZXIuaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgogI2luY2x1ZGUgIkp1bXBUYWJsZS5oIgorI2luY2x1ZGUgIkxMSW50Q2FsbExp
bmtJbmZvLmgiCiAjaW5jbHVkZSAiTGluZUluZm8uaCIKICNpbmNsdWRlICJOb2Rlcy5oIgogI2lu
Y2x1ZGUgIlByZWRpY3Rpb25UcmFja2VyLmgiCkBAIC02NSwxNiArNjcsMTEgQEAKICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSAiU3RydWN0dXJlU3R1YkluZm8uaCIKIAotLy8gUmVn
aXN0ZXIgbnVtYmVycyB1c2VkIGluIGJ5dGVjb2RlIG9wZXJhdGlvbnMgaGF2ZSBkaWZmZXJlbnQg
bWVhbmluZyBhY2NvcmRpbmcgdG8gdGhlaXIgcmFuZ2VzOgotLy8gICAgICAweDgwMDAwMDAwLTB4
RkZGRkZGRkYgIE5lZ2F0aXZlIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJl
IGVudHJpZXMgaW4gdGhlIGNhbGwgZnJhbWUsIHNlZSBSZWdpc3RlckZpbGUuaC4KLS8vICAgICAg
MHgwMDAwMDAwMC0weDNGRkZGRkZGICBGb3J3YXJkcyBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFt
ZSBwb2ludGVyIGFyZSBsb2NhbCB2YXJzIGFuZCB0ZW1wb3JhcmllcyB3aXRoIHRoZSBmdW5jdGlv
bidzIGNhbGxmcmFtZS4KLS8vICAgICAgMHg0MDAwMDAwMC0weDdGRkZGRkZGICBQb3NpdGl2ZSBp
bmRpY2VzIGZyb20gMHg0MDAwMDAwMCBzcGVjaWZ5IGVudHJpZXMgaW4gdGhlIGNvbnN0YW50IHBv
b2wgb24gdGhlIENvZGVCbG9jay4KLXN0YXRpYyBjb25zdCBpbnQgRmlyc3RDb25zdGFudFJlZ2lz
dGVySW5kZXggPSAweDQwMDAwMDAwOwotCiBuYW1lc3BhY2UgSlNDIHsKIAotICAgIGNsYXNzIEV4
ZWNTdGF0ZTsKICAgICBjbGFzcyBERkdDb2RlQmxvY2tzOworICAgIGNsYXNzIEV4ZWNTdGF0ZTsK
KyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAKICAgICBpbmxpbmUgaW50IHVubW9k
aWZpZWRBcmd1bWVudHNSZWdpc3RlcihpbnQgYXJndW1lbnRzUmVnaXN0ZXIpIHsgcmV0dXJuIGFy
Z3VtZW50c1JlZ2lzdGVyIC0gMTsgfQogCkBAIC04Myw2ICs4MCw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgIGNsYXNzIENvZGVCbG9jayA6IHB1YmxpYyBVbmNvbmRpdGlvbmFsRmluYWxpemVyLCBw
dWJsaWMgV2Vha1JlZmVyZW5jZUhhcnZlc3RlciB7CiAgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogICAgICAgICBmcmllbmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgZW51bSBDb3B5UGFy
c2VkQmxvY2tUYWcgeyBDb3B5UGFyc2VkQmxvY2sgfTsKICAgICBwcm90ZWN0ZWQ6CkBAIC0xMjMs
NyArMTIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICB3aGlsZSAocmVzdWx0LT5h
bHRlcm5hdGl2ZSgpKQogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC0+YWx0ZXJuYXRp
dmUoKTsKICAgICAgICAgICAgIEFTU0VSVChyZXN1bHQpOwotICAgICAgICAgICAgQVNTRVJUKHJl
c3VsdC0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAg
IEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwog
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogI2VuZGlmCkBAIC0xOTIsMTUg
KzE5MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuICooYmluYXJ5U2Vh
cmNoPE1ldGhvZENhbGxMaW5rSW5mbywgdW5zaWduZWQsIGdldE1ldGhvZENhbGxMaW5rSW5mb0J5
dGVjb2RlSW5kZXg+KG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5iZWdpbigpLCBtX21ldGhvZENhbGxM
aW5rSW5mb3Muc2l6ZSgpLCBieXRlY29kZUluZGV4KSk7CiAgICAgICAgIH0KIAotICAgICAgICB1
bnNpZ25lZCBieXRlY29kZU9mZnNldChSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9yYXJlRGF0YSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gMTsKLSAgICAgICAgICAgIFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9m
ZnNldD4mIGNhbGxJbmRpY2VzID0gbV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJuSW5kZXhWZWN0b3I7
Ci0gICAgICAgICAgICBpZiAoIWNhbGxJbmRpY2VzLnNpemUoKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gMTsKLSAgICAgICAgICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNl
dFRvQnl0ZWNvZGVPZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5k
aWNlcy5iZWdpbigpLCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5vZmZzZXRPZihy
ZXR1cm5BZGRyZXNzLnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7Ci0gICAgICAgIH0KKyAgICAg
ICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQoRXhlY1N0YXRlKiwgUmV0dXJuQWRkcmVzc1B0cik7
CiAKICAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXRGb3JDYWxsQXRJbmRleCh1bnNpZ25l
ZCBpbmRleCkKICAgICAgICAgewpAQCAtMjIxLDExICsyMTEsMTcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIHsKICAgICAgICAgICAgIG1faW5jb21pbmdDYWxscy5wdXNoKGluY29taW5nKTsK
ICAgICAgICAgfQorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgdm9pZCBsaW5rSW5jb21pbmdD
YWxsKExMSW50Q2FsbExpbmtJbmZvKiBpbmNvbWluZykKKyAgICAgICAgeworICAgICAgICAgICAg
bV9pbmNvbWluZ0xMSW50Q2FsbHMucHVzaChpbmNvbWluZyk7CisgICAgICAgIH0KKyNlbmRpZiAv
LyBFTkFCTEUoTExJTlQpCiAgICAgICAgIAogICAgICAgICB2b2lkIHVubGlua0luY29taW5nQ2Fs
bHMoKTsKLSNlbmRpZgorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAKLSNpZiBFTkFCTEUoREZHX0pJ
VCkKKyNpZiBFTkFCTEUoREZHX0pJVCkgfHwgRU5BQkxFKExMSU5UKQogICAgICAgICB2b2lkIHNl
dEpJVENvZGVNYXAoUGFzc093blB0cjxDb21wYWN0SklUQ29kZU1hcD4gaml0Q29kZU1hcCkKICAg
ICAgICAgewogICAgICAgICAgICAgbV9qaXRDb2RlTWFwID0gaml0Q29kZU1hcDsKQEAgLTIzNCw3
ICsyMzAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJu
IG1faml0Q29kZU1hcC5nZXQoKTsKICAgICAgICAgfQorI2VuZGlmCiAgICAgICAgIAorI2lmIEVO
QUJMRShERkdfSklUKQogICAgICAgICB2b2lkIGNyZWF0ZURGR0RhdGFJZk5lY2Vzc2FyeSgpCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmICghIW1fZGZnRGF0YSkKQEAgLTMzMywxMiArMzMxLDEx
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAjZW5kaWYKIAotI2lmIEVOQUJMRShDTEFT
U0lDX0lOVEVSUFJFVEVSKQogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldChJbnN0cnVj
dGlvbiogcmV0dXJuQWRkcmVzcykKICAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKHJldHVy
bkFkZHJlc3MgPj0gaW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSAmJiByZXR1cm5BZGRyZXNzIDwgaW5z
dHJ1Y3Rpb25zKCkuZW5kKCkpOwogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc3Ry
dWN0aW9uKj4ocmV0dXJuQWRkcmVzcykgLSBpbnN0cnVjdGlvbnMoKS5iZWdpbigpOwogICAgICAg
ICB9Ci0jZW5kaWYKIAogICAgICAgICB2b2lkIHNldElzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbihi
b29sIGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbikgeyBtX2lzTnVtZXJpY0NvbXBhcmVGdW5jdGlv
biA9IGlzTnVtZXJpY0NvbXBhcmVGdW5jdGlvbjsgfQogICAgICAgICBib29sIGlzTnVtZXJpY0Nv
bXBhcmVGdW5jdGlvbigpIHsgcmV0dXJuIG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uOyB9CkBA
IC0zNzYsNiArMzczLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeGVjdXRhYmxlTWVt
b3J5SGFuZGxlKiBleGVjdXRhYmxlTWVtb3J5KCkgeyByZXR1cm4gZ2V0SklUQ29kZSgpLmdldEV4
ZWN1dGFibGVNZW1vcnkoKTsgfQogICAgICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0
aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKikgPSAwOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgamV0dGlzb24oKSA9IDA7CisgICAgICAgIGJvb2wgaml0Q29tcGlsZShKU0dsb2JhbERh
dGEmIGdsb2JhbERhdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChnZXRKSVRUeXBlKCkg
IT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuaykgeworICAgICAgICAgICAgICAgIEFTU0VSVChn
ZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGppdENvbXBpbGVJbXBsKGds
b2JhbERhdGEpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICAgICAg
dmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50KCkgPSAwOwogCiAgICAgICAgIGVudW0gQ29t
cGlsZVdpdGhERkdTdGF0ZSB7CkBAIC0zOTUsMTMgKzQwMSwxMyBAQCBuYW1lc3BhY2UgSlNDIHsK
IAogICAgICAgICBib29sIGhhc09wdGltaXplZFJlcGxhY2VtZW50KCkKICAgICAgICAgewotICAg
ICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7Cisg
ICAgICAgICAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoZ2V0SklUVHlwZSgpKSk7
CiAgICAgICAgICAgICBib29sIHJlc3VsdCA9IHJlcGxhY2VtZW50KCktPmdldEpJVFR5cGUoKSA+
IGdldEpJVFR5cGUoKTsKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgICAgICAgICBpZiAocmVz
dWx0KQogICAgICAgICAgICAgICAgIEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkg
PT0gSklUQ29kZTo6REZHSklUKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAg
IEFTU0VSVChyZXBsYWNlbWVudCgpLT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVK
SVQpOworICAgICAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXBs
YWNlbWVudCgpLT5nZXRKSVRUeXBlKCkpKTsKICAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFj
ZW1lbnQoKSA9PSB0aGlzKTsKICAgICAgICAgICAgIH0KICNlbmRpZgpAQCAtNDYwLDE4ICs0NjYs
MjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBjbGVhckV2YWxDYWNoZSgpOwog
Ci0jaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAgIHZvaWQgYWRkUHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbih1bnNpZ25lZCBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0g
ICAgICAgICAgICAgICAgbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5hcHBlbmQocHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1
Y3Rpb25zLmFwcGVuZChwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKTsKICAgICAgICAgfQogICAg
ICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbih1bnNpZ25lZCBnbG9iYWxSZXNv
bHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9nbG9iYWxEYXRh
LT5jYW5Vc2VKSVQoKSkKLSAgICAgICAgICAgICAgICBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlv
bnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik7CisgICAgICAgICAgICBtX2dsb2Jh
bFJlc29sdmVJbnN0cnVjdGlvbnMuYXBwZW5kKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbik7CiAg
ICAgICAgIH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25BdEJ5dGVj
b2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KTsKKyNpZiBFTkFCTEUoTExJTlQpCisg
ICAgICAgIExMSW50Q2FsbExpbmtJbmZvKiBhZGRMTEludENhbGxMaW5rSW5mbygpCisgICAgICAg
IHsKKyAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zLmFwcGVuZChMTEludENhbGxMaW5r
SW5mbygpKTsKKyAgICAgICAgICAgIHJldHVybiAmbV9sbGludENhbGxMaW5rSW5mb3MubGFzdCgp
OworICAgICAgICB9CiAjZW5kaWYKICNpZiBFTkFCTEUoSklUKQogICAgICAgICB2b2lkIHNldE51
bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKHNpemVfdCBzaXplKSB7IG1fc3RydWN0dXJlU3R1Yklu
Zm9zLmdyb3coc2l6ZSk7IH0KQEAgLTQ4MCw4ICs0ODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAog
ICAgICAgICB2b2lkIGFkZEdsb2JhbFJlc29sdmVJbmZvKHVuc2lnbmVkIGdsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKG1fZ2xvYmFsRGF0YS0+Y2Fu
VXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEds
b2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29sdmVJbnN0cnVjdGlvbikpOworICAgICAgICAgICAg
bV9nbG9iYWxSZXNvbHZlSW5mb3MuYXBwZW5kKEdsb2JhbFJlc29sdmVJbmZvKGdsb2JhbFJlc29s
dmVJbnN0cnVjdGlvbikpOwogICAgICAgICB9CiAgICAgICAgIEdsb2JhbFJlc29sdmVJbmZvJiBn
bG9iYWxSZXNvbHZlSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJuIG1fZ2xvYmFsUmVzb2x2ZUluZm9z
W2luZGV4XTsgfQogICAgICAgICBib29sIGhhc0dsb2JhbFJlc29sdmVJbmZvQXRCeXRlY29kZU9m
ZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7CkBAIC00OTIsNiArNTAwLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBhZGRNZXRob2RDYWxsTGlua0luZm9zKHVuc2lnbmVk
IG4pIHsgQVNTRVJUKG1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpOyBtX21ldGhvZENhbGxMaW5r
SW5mb3MuZ3JvdyhuKTsgfQogICAgICAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGxM
aW5rSW5mbyhpbnQgaW5kZXgpIHsgcmV0dXJuIG1fbWV0aG9kQ2FsbExpbmtJbmZvc1tpbmRleF07
IH0KKyAgICAgICAgc2l6ZV90IG51bWJlck9mTWV0aG9kQ2FsbExpbmtJbmZvcygpIHsgcmV0dXJu
IG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCk7IH0KICNlbmRpZgogICAgICAgICAKICNpZiBF
TkFCTEUoVkFMVUVfUFJPRklMRVIpCkBAIC01MzMsNiArNTQyLDEwIEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlY29kZU9mZnNldF0udS5v
cGNvZGUpKSAtIDFdLnUucHJvZmlsZSA9PSByZXN1bHQpOwogICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICAgICAgfQorICAgICAgICBQcmVkaWN0ZWRUeXBlIHZhbHVlUHJvZmlsZVByZWRp
Y3Rpb25Gb3JCeXRlY29kZU9mZnNldChpbnQgYnl0ZWNvZGVPZmZzZXQpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHJldHVybiB2YWx1ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCktPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOworICAgICAgICB9CiAgICAgICAgIAog
ICAgICAgICB1bnNpZ25lZCB0b3RhbE51bWJlck9mVmFsdWVQcm9maWxlcygpCiAgICAgICAgIHsK
QEAgLTU1OSwxMiArNTcyLDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAg
Ym9vbCBsaWtlbHlUb1Rha2VTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsK
KyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgdmFsdWUgPSByYXJlQ2Fz
ZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAg
ICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZU1p
bmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSAvIG1fZXhlY3V0aW9uRW50
cnlDb3VudCA+PSBPcHRpb25zOjpsaWtlbHlUb1Rha2VTbG93Q2FzZVRocmVzaG9sZDsKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBjb3VsZFRha2VTbG93Q2FzZShpbnQgYnl0ZWNv
ZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVBy
b2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5z
aWduZWQgdmFsdWUgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9m
ZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHJldHVybiB2YWx1ZSA+PSBPcHRpb25zOjpj
b3VsZFRha2VTbG93Q2FzZU1pbmltdW1Db3VudCAmJiBzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVl
KSAvIG1fZXhlY3V0aW9uRW50cnlDb3VudCA+PSBPcHRpb25zOjpjb3VsZFRha2VTbG93Q2FzZVRo
cmVzaG9sZDsKICAgICAgICAgfQpAQCAtNTgzLDEyICs2MDAsMTYgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIAogICAgICAgICBib29sIGxpa2VseVRvVGFrZVNwZWNpYWxGYXN0Q2FzZShpbnQg
Ynl0ZWNvZGVPZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJl
Q2FzZVByb2ZpbGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxl
Rm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAg
ICByZXR1cm4gc3BlY2lhbEZhc3RDYXNlQ291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xv
d0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPihzcGVjaWFsRmFzdENhc2VD
b3VudCkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xv
d0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5
VG9UYWtlRGVlcGVzdFNsb3dDYXNlKGludCBieXRlY29kZU9mZnNldCkKICAgICAgICAgeworICAg
ICAgICAgICAgaWYgKCFudW1iZXJPZlJhcmVDYXNlUHJvZmlsZXMoKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB1bnNpZ25lZCBzbG93Q2FzZUNvdW50ID0gcmFy
ZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7
CiAgICAgICAgICAgICB1bnNpZ25lZCBzcGVjaWFsRmFzdENhc2VDb3VudCA9IHNwZWNpYWxGYXN0
Q2FzZVByb2ZpbGVGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsK
ICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gc2xvd0Nhc2VDb3VudCAtIHNwZWNpYWxGYXN0
Q2FzZUNvdW50OwpAQCAtNTk3LDYgKzYxOCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAK
ICAgICAgICAgYm9vbCBsaWtlbHlUb1Rha2VBbnlTbG93Q2FzZShpbnQgYnl0ZWNvZGVPZmZzZXQp
CiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2ZpbGVzKCkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWduZWQgc2xv
d0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zm
c2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RDYXNlQ291
bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZz
ZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dDYXNlQ291
bnQgKyBzcGVjaWFsRmFzdENhc2VDb3VudDsKQEAgLTY5NCw3ICs3MTcsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgYWRkRnJlcXVlbnRFeGl0U2l0ZShjb25zdCBE
Rkc6OkZyZXF1ZW50RXhpdFNpdGUmIHNpdGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VS
VChnZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNT
RVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAg
cmV0dXJuIG1fZXhpdFByb2ZpbGUuYWRkKHNpdGUpOwogICAgICAgICB9CiAKQEAgLTgwMiw2ICs4
MjUsMjkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgY29weVBvc3RQYXJzZURhdGFG
cm9tKENvZGVCbG9jayogYWx0ZXJuYXRpdmUpOwogICAgICAgICB2b2lkIGNvcHlQb3N0UGFyc2VE
YXRhRnJvbUFsdGVybmF0aXZlKCk7CiAgICAgICAgIAorICAgICAgICAvLyBGdW5jdGlvbnMgZm9y
IGNvbnRyb2xsaW5nIHdoZW4gSklUdGluZyBraWNrcyBpbiwgaW4gYSBtaXhlZCBtb2RlCisgICAg
ICAgIC8vIGV4ZWN1dGlvbiB3b3JsZC4KKyAgICAgICAgCisgICAgICAgIHZvaWQgZG9udEpJVEFu
eXRpbWVTb29uKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVy
ID0gT3B0aW9uczo6ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdEFmdGVyV2FybVVwKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgbV9sbGludEV4ZWN1dGVDb3VudGVyID0gT3B0aW9uczo6ZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9ySklUQWZ0ZXJXYXJtVXA7CisgICAgICAgIH0KKyAgICAgICAgCisg
ICAgICAgIHZvaWQgaml0U29vbigpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVj
dXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVFNvb247Cisg
ICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludDMyX3QgbGxpbnRFeGVjdXRlQ291bnRlcigp
IGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2xsaW50RXhlY3V0ZUNvdW50
ZXI7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIC8vIEZ1bmN0aW9ucyBmb3IgY29udHJv
bGxpbmcgd2hlbiB0aWVyZWQgY29tcGlsYXRpb24ga2lja3MgaW4uIFRoaXMKICAgICAgICAgLy8g
Y29udHJvbHMgYm90aCB3aGVuIHRoZSBvcHRpbWl6aW5nIGNvbXBpbGVyIGlzIGludm9rZWQgYW5k
IHdoZW4gT1NSCiAgICAgICAgIC8vIGVudHJ5IGhhcHBlbnMuIFR3byB0cmlnZ2VycyBleGlzdDog
dGhlIGxvb3AgdHJpZ2dlciBhbmQgdGhlIHJldHVybgpAQCAtOTk0LDYgKzEwNDAsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBtX3Nob3VsZERpc2NhcmRCeXRlY29kZTsKIAogICAg
IHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFs
RGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHZpc2l0V2Vha1JlZmVyZW5jZXMoU2xv
dFZpc2l0b3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGZpbmFsaXplVW5jb25kaXRpb25hbGx5
KCk7CiAgICAgICAgIApAQCAtMTA3NSw5ICsxMTIyLDExIEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IG1fc291cmNlOwogICAgICAgICB1bnNpZ25lZCBt
X3NvdXJjZU9mZnNldDsKIAotI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgICAg
ICBWZWN0b3I8dW5zaWduZWQ+IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnM7CiAgICAgICAg
IFZlY3Rvcjx1bnNpZ25lZD4gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zOworI2lmIEVOQUJM
RShMTElOVCkKKyAgICAgICAgU2VnbWVudGVkVmVjdG9yPExMSW50Q2FsbExpbmtJbmZvLCA4PiBt
X2xsaW50Q2FsbExpbmtJbmZvczsKKyAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PExMSW50Q2Fs
bExpbmtJbmZvLCBCYXNpY1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4gPiBtX2lu
Y29taW5nTExJbnRDYWxsczsKICNlbmRpZgogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIFZlY3Rv
cjxTdHJ1Y3R1cmVTdHViSW5mbz4gbV9zdHJ1Y3R1cmVTdHViSW5mb3M7CkBAIC0xMDg4LDkgKzEx
MzcsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBt
X2ppdENvZGVXaXRoQXJpdHlDaGVjazsKICAgICAgICAgU2VudGluZWxMaW5rZWRMaXN0PENhbGxM
aW5rSW5mbywgQmFzaWNSYXdTZW50aW5lbE5vZGU8Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdD
YWxsczsKICNlbmRpZgotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShERkdfSklUKSB8
fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIE93blB0cjxDb21wYWN0SklUQ29kZU1hcD4gbV9qaXRD
b2RlTWFwOwotICAgICAgICAKKyNlbmRpZgorI2lmIEVOQUJMRShERkdfSklUKQogICAgICAgICBz
dHJ1Y3QgV2Vha1JlZmVyZW5jZVRyYW5zaXRpb24gewogICAgICAgICAgICAgV2Vha1JlZmVyZW5j
ZVRyYW5zaXRpb24oKSB7IH0KICAgICAgICAgICAgIApAQCAtMTE1MywxMiArMTIwMywxNCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBPd25QdHI8Q29kZUJsb2NrPiBtX2FsdGVybmF0aXZl
OwogICAgICAgICAKKyAgICAgICAgaW50MzJfdCBtX2xsaW50RXhlY3V0ZUNvdW50ZXI7CisgICAg
ICAgIAogICAgICAgICBpbnQzMl90IG1faml0RXhlY3V0ZUNvdW50ZXI7CiAgICAgICAgIHVpbnQz
Ml90IG1fc3BlY3VsYXRpdmVTdWNjZXNzQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVj
dWxhdGl2ZUZhaWxDb3VudGVyOwogICAgICAgICB1aW50OF90IG1fb3B0aW1pemF0aW9uRGVsYXlD
b3VudGVyOwogICAgICAgICB1aW50OF90IG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXI7Ci0K
KyAgICAgICAgCiAgICAgICAgIHN0cnVjdCBSYXJlRGF0YSB7CiAgICAgICAgICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogICAgICAgICBwdWJsaWM6CkBAIC0xMjM0LDYgKzEyODYsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3Qq
IGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAg
dmlydHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxl
SW1wbChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2Vt
ZW50KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGR0ludGVybmFsKCk7
CiAjZW5kaWYKQEAgLTEyNjgsNiArMTMyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByb3Rl
Y3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9wdGltaXplZChFeGVjU3Rh
dGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgamV0dGlzb24oKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpOwogICAg
ICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAgICAgICAgdmlydHVhbCBi
b29sIGNhbkNvbXBpbGVXaXRoREZHSW50ZXJuYWwoKTsKICNlbmRpZgpAQCAtMTMwNSw2ICsxMzU5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAgICAgICB2aXJ0dWFsIEpT
T2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW5Ob2RlKik7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2aXJ0dWFsIHZvaWQgaml0
Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiBy
ZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29tcGlsZVdpdGhERkdJbnRl
cm5hbCgpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlJZFN0YXR1cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0dldEJ5SWRTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDgyNDYpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3
LDIwICsyNyw0OSBAQAogI2luY2x1ZGUgIkdldEJ5SWRTdGF0dXMuaCIKIAogI2luY2x1ZGUgIkNv
ZGVCbG9jay5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiAKK0dldEJ5SWRTdGF0dXMgR2V0QnlJZFN0YXR1czo6Y29tcHV0ZUZyb21MTEludChD
b2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZp
ZXImIGlkZW50KQoreworICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKKyAgICBVTlVT
RURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKKyNpZiBF
TkFCTEUoTExJTlQpCisgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gcHJvZmlsZWRCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIGJ5dGVjb2RlSW5kZXg7CisgICAgCisgICAgaWYg
KGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX21ldGhvZF9jaGVjaykKKyAgICAg
ICAgaW5zdHJ1Y3Rpb24rKzsKKworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gaW5zdHJ1Y3Rp
b25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgaWYgKCFzdHJ1Y3R1cmUpCisgICAgICAgIHJl
dHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3Vu
ZCwgZmFsc2UpOworICAgIAorICAgIHNpemVfdCBvZmZzZXQgPSBzdHJ1Y3R1cmUtPmdldCgqcHJv
ZmlsZWRCbG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgaWYgKG9mZnNldCA9PSBub3RG
b3VuZCkKKyAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0
dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CisgICAgCisgICAgcmV0dXJuIEdldEJ5SWRTdGF0
dXMoU2ltcGxlRGlyZWN0LCBTdHJ1Y3R1cmVTZXQoc3RydWN0dXJlKSwgb2Zmc2V0LCBmYWxzZSk7
CisjZWxzZQorICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVy
ZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOworI2VuZGlmCit9CisKIEdldEJ5SWRTdGF0dXMgR2V0
QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVk
IGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQogewogICAgIFVOVVNFRF9QQVJBTShw
cm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5V
U0VEX1BBUkFNKGlkZW50KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklM
RVIpCisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcygp
KQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29k
ZUluZGV4LCBpZGVudCk7CisgICAgCiAgICAgLy8gRmlyc3QgY2hlY2sgaWYgaXQgbWFrZXMgZWl0
aGVyIGNhbGxzLCBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gYmUgc3VwZXIgY2FyZWZ1bCwgb3IK
ICAgICAvLyBpZiBpdCdzIG5vdCBzZXQgYXQgYWxsLCBpbiB3aGljaCBjYXNlIHdlIHB1bnQuCiAg
ICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gcHJvZmlsZWRCbG9jay0+Z2V0U3R1Yklu
Zm8oYnl0ZWNvZGVJbmRleCk7CiAgICAgaWYgKCFzdHViSW5mby5zZWVuKQotICAgICAgICByZXR1
cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQp
OworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29k
ZUluZGV4LCBpZGVudCk7CiAgICAgCiAgICAgUG9seW1vcnBoaWNBY2Nlc3NTdHJ1Y3R1cmVMaXN0
KiBsaXN0OwogICAgIGludCBsaXN0U2l6ZTsKQEAgLTYwLDE4ICs4OSwxOSBAQCBHZXRCeUlkU3Rh
dHVzIEdldEJ5SWRTdGF0dXM6OmNvbXB1dGVGb3IoCiAgICAgfQogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgbGlzdFNpemU7ICsraSkgewogICAgICAgICBpZiAoIWxpc3QtPmxpc3RbaV0uaXNEaXJl
Y3QpCi0gICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBTdHJ1Y3R1
cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICAgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTWFr
ZXNDYWxscywgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCB0cnVlKTsKICAgICB9CiAgICAgCiAg
ICAgLy8gTmV4dCBjaGVjayBpZiBpdCB0YWtlcyBzbG93IGNhc2UsIGluIHdoaWNoIGNhc2Ugd2Ug
d2FudCB0byBiZSBraW5kIG9mIGNhcmVmdWwuCiAgICAgaWYgKHByb2ZpbGVkQmxvY2stPmxpa2Vs
eVRvVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQotICAgICAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhUYWtlc1Nsb3dQYXRoLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICBy
ZXR1cm4gR2V0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91
bmQsIHRydWUpOwogICAgIAogICAgIC8vIEZpbmFsbHkgZmlndXJlIG91dCBpZiB3ZSBjYW4gZGVy
aXZlIGFuIGFjY2VzcyBzdHJhdGVneS4KICAgICBHZXRCeUlkU3RhdHVzIHJlc3VsdDsKKyAgICBy
ZXN1bHQubV93YXNTZWVuSW5KSVQgPSB0cnVlOwogICAgIHN3aXRjaCAoc3R1YkluZm8uYWNjZXNz
VHlwZSkgewogICAgIGNhc2UgYWNjZXNzX3Vuc2V0OgotICAgICAgICByZXR1cm4gR2V0QnlJZFN0
YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgICAgICBy
ZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVu
dCk7CiAgICAgICAgIAogICAgIGNhc2UgYWNjZXNzX2dldF9ieV9pZF9zZWxmOiB7CiAgICAgICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gc3R1YkluZm8udS5nZXRCeUlkU2VsZi5iYXNlT2JqZWN0
U3RydWN0dXJlLmdldCgpOwpAQCAtMTMwLDcgKzE2MCw3IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICAKICAgICByZXR1cm4gcmVzdWx0OwogI2Vsc2UgLy8g
RU5BQkxFKEpJVCkKLSAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1
Y3R1cmVTZXQoKSwgbm90Rm91bmQpOworICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3Jt
YXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgZmFsc2UpOwogI2VuZGlmIC8vIEVOQUJM
RShKSVQpCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlk
U3RhdHVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRTdGF0dXMuaAkocmV2aXNpb24gMTA4MjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtNDksMTAgKzQ5LDEx
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgfQogICAgIAotICAgIEdldEJ5SWRTdGF0dXMoU3RhdGUg
c3RhdGUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0LCBzaXplX3Qgb2Zmc2V0KQor
ICAgIEdldEJ5SWRTdGF0dXMoU3RhdGUgc3RhdGUsIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0
dXJlU2V0LCBzaXplX3Qgb2Zmc2V0LCBib29sIHdhc1NlZW5JbkpJVCkKICAgICAgICAgOiBtX3N0
YXRlKHN0YXRlKQogICAgICAgICAsIG1fc3RydWN0dXJlU2V0KHN0cnVjdHVyZVNldCkKICAgICAg
ICAgLCBtX29mZnNldChvZmZzZXQpCisgICAgICAgICwgbV93YXNTZWVuSW5KSVQod2FzU2Vlbklu
SklUKQogICAgIHsKICAgICAgICAgQVNTRVJUKChzdGF0ZSA9PSBTaW1wbGVEaXJlY3QpID09IChv
ZmZzZXQgIT0gbm90Rm91bmQpKTsKICAgICB9CkBAIC03MCwxMCArNzEsMTUgQEAgcHVibGljOgog
ICAgIGNvbnN0IFN0cnVjdHVyZVNldCYgc3RydWN0dXJlU2V0KCkgY29uc3QgeyByZXR1cm4gbV9z
dHJ1Y3R1cmVTZXQ7IH0KICAgICBzaXplX3Qgb2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbV9vZmZz
ZXQ7IH0KICAgICAKKyAgICBib29sIHdhc1NlZW5JbkpJVCgpIGNvbnN0IHsgcmV0dXJuIG1fd2Fz
U2VlbkluSklUOyB9CisgICAgCiBwcml2YXRlOgorICAgIHN0YXRpYyBHZXRCeUlkU3RhdHVzIGNv
bXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRp
ZmllciYpOworICAgIAogICAgIFN0YXRlIG1fc3RhdGU7CiAgICAgU3RydWN0dXJlU2V0IG1fc3Ry
dWN0dXJlU2V0OwogICAgIHNpemVfdCBtX29mZnNldDsKKyAgICBib29sIG1fd2FzU2VlbkluSklU
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkocmV2aXNpb24gMTA4MjQ2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4
LDYgKzQ4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNDZWxsOwogICAgIGNsYXNz
IFN0cnVjdHVyZTsKICAgICBjbGFzcyBTdHJ1Y3R1cmVDaGFpbjsKKyAgICBzdHJ1Y3QgTExJbnRD
YWxsTGlua0luZm87CiAgICAgc3RydWN0IFZhbHVlUHJvZmlsZTsKIAogI2lmIEVOQUJMRShKSVQp
CkBAIC0xNDYsNiArMTQ3LDExIEBAIG5hbWVzcGFjZSBKU0MgewogI2VuZGlmCiAKICAgICBzdHJ1
Y3QgSW5zdHJ1Y3Rpb24geworICAgICAgICBJbnN0cnVjdGlvbigpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIHUuanNDZWxsLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIElu
c3RydWN0aW9uKE9wY29kZSBvcGNvZGUpCiAgICAgICAgIHsKICNpZiAhRU5BQkxFKENPTVBVVEVE
X0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKQEAgLTE4Miw2ICsxODgsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKIAogICAgICAgICBJbnN0cnVjdGlvbihQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYyBn
ZXR0ZXJGdW5jKSB7IHUuZ2V0dGVyRnVuYyA9IGdldHRlckZ1bmM7IH0KICAgICAgICAgCisgICAg
ICAgIEluc3RydWN0aW9uKExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8pIHsgdS5jYWxs
TGlua0luZm8gPSBjYWxsTGlua0luZm87IH0KKyAgICAgICAgCiAgICAgICAgIEluc3RydWN0aW9u
KFZhbHVlUHJvZmlsZSogcHJvZmlsZSkgeyB1LnByb2ZpbGUgPSBwcm9maWxlOyB9CiAKICAgICAg
ICAgdW5pb24gewpAQCAtMTkxLDcgKzE5OSw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAg
ICAgV3JpdGVCYXJyaWVyQmFzZTxTdHJ1Y3R1cmVDaGFpbj4gc3RydWN0dXJlQ2hhaW47CiAgICAg
ICAgICAgICBXcml0ZUJhcnJpZXJCYXNlPEpTQ2VsbD4ganNDZWxsOwogICAgICAgICAgICAgUHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmMgZ2V0dGVyRnVuYzsKKyAgICAgICAgICAgIExMSW50Q2Fs
bExpbmtJbmZvKiBjYWxsTGlua0luZm87CiAgICAgICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2Zp
bGU7CisgICAgICAgICAgICB2b2lkKiBwb2ludGVyOwogICAgICAgICB9IHU7CiAgICAgICAgIAog
ICAgIHByaXZhdGU6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTExJbnRD
YWxsTGlua0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
ZGUvTExJbnRDYWxsTGlua0luZm8uaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgTExJbnRDYWxsTGlua0luZm9faAorI2RlZmluZSBMTEludENhbGxMaW5rSW5mb19oCisK
KyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
LmgiCisjaW5jbHVkZSA8d3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oPgorCituYW1lc3BhY2UgSlND
IHsKKworc3RydWN0IEluc3RydWN0aW9uOworCitzdHJ1Y3QgTExJbnRDYWxsTGlua0luZm8gOiBw
dWJsaWMgQmFzaWNSYXdTZW50aW5lbE5vZGU8TExJbnRDYWxsTGlua0luZm8+IHsKKyAgICBMTElu
dENhbGxMaW5rSW5mbygpCisgICAgeworICAgIH0KKyAgICAKKyAgICB+TExJbnRDYWxsTGlua0lu
Zm8oKQorICAgIHsKKyAgICAgICAgaWYgKGlzT25MaXN0KCkpCisgICAgICAgICAgICByZW1vdmUo
KTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc0xpbmtlZCgpIHsgcmV0dXJuIGNhbGxlZTsgfQor
ICAgIAorICAgIHZvaWQgdW5saW5rKCkKKyAgICB7CisgICAgICAgIGNhbGxlZS5jbGVhcigpOwor
ICAgICAgICBtYWNoaW5lQ29kZVRhcmdldCA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0cigpOworICAg
ICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0KKyAgICAK
KyAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gY2FsbGVlOworICAgIFdyaXRlQmFycmllcjxK
U0Z1bmN0aW9uPiBsYXN0U2VlbkNhbGxlZTsKKyAgICBNYWNyb0Fzc2VtYmxlckNvZGVQdHIgbWFj
aGluZUNvZGVUYXJnZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIExM
SW50Q2FsbExpbmtJbmZvX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L01ldGhvZENhbGxMaW5rU3RhdHVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwCShyZXZpc2lvbiAxMDgyNDYp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSwxMSBAQCBNZXRob2RDYWxsTGlua1N0YXR1
cyBNZXRob2RDYWxsTGlua1N0YXR1CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOwog
ICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFC
TEUoVkFMVUVfUFJPRklMRVIpCisgICAgLy8gTk9URTogVGhpcyBkb2VzIG5vdCBoYXZlIGFuIExM
SW50IGZhbGwtYmFjayBiZWNhdXNlIExMSW50IGRvZXMgbm90IGRvIGFueSBtZXRob2QKKyAgICAv
LyBjYWxsIGxpbmsgY2FjaGluZy4KKyAgICBpZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mTWV0
aG9kQ2FsbExpbmtJbmZvcygpKQorICAgICAgICByZXR1cm4gTWV0aG9kQ2FsbExpbmtTdGF0dXMo
KTsKKyAgICAKICAgICBNZXRob2RDYWxsTGlua0luZm8mIG1ldGhvZENhbGwgPSBwcm9maWxlZEJs
b2NrLT5nZXRNZXRob2RDYWxsTGlua0luZm8oYnl0ZWNvZGVJbmRleCk7CiAgICAgCiAgICAgaWYg
KCFtZXRob2RDYWxsLnNlZW4gfHwgIW1ldGhvZENhbGwuY2FjaGVkU3RydWN0dXJlKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNvZGUuaAkocmV2aXNpb24gMTA4MjQ2KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMjMsNiArMTIzLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIG1hY3JvKG9wX2dl
dF9hcmd1bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkg
XAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbiwgOSkgXAorICAgICAgICBt
YWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QsIDkpIFwKKyAgICAgICAgbWFjcm8o
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1
dF9ieV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9nZW5lcmlj
LCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9pZCwgNCkgXApAQCAtMjAxLDYgKzIwMyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBlZGVmIGVudW0geyBGT1JfRUFDSF9PUENP
REVfSUQoT1BDT0RFX0lEX0VOVU0pIH0gT3Bjb2RlSUQ7CiAgICAgI3VuZGVmIE9QQ09ERV9JRF9F
TlVNCiAKKyAgICBjb25zdCBpbnQgbWF4T3Bjb2RlTGVuZ3RoID0gOTsKICAgICBjb25zdCBpbnQg
bnVtT3Bjb2RlSURzID0gb3BfZW5kICsgMTsKIAogICAgICNkZWZpbmUgT1BDT0RFX0lEX0xFTkdU
SFMoaWQsIGxlbmd0aCkgY29uc3QgaW50IGlkIyNfbGVuZ3RoID0gbGVuZ3RoOwpAQCAtMjE3LDcg
KzIyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGT1JfRUFDSF9PUENPREVfSUQoVkVS
SUZZX09QQ09ERV9JRCk7CiAgICAgI3VuZGVmIFZFUklGWV9PUENPREVfSUQKIAotI2lmIEVOQUJM
RShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCisjaWYgRU5BQkxFKENPTVBVVEVE
X0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5BQkxFKExMSU5UKQogI2lmIENPTVBJTEVS
KFJWQ1QpIHx8IENPTVBJTEVSKElOVEVMKQogICAgIHR5cGVkZWYgdm9pZCogT3Bjb2RlOwogI2Vs
c2UKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0
YXR1cy5jcHAJKHJldmlzaW9uIDEwODI0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjcgKzI3LDY5IEBA
CiAjaW5jbHVkZSAiUHV0QnlJZFN0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisj
aW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgog
I2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitQdXRCeUlk
U3RhdHVzIFB1dEJ5SWRTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxl
ZEJsb2NrLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2Rl
SW5kZXgpOworICAgIFVOVVNFRF9QQVJBTShpZGVudCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAg
IEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygp
LmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBp
bnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAg
ICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91
bmQpOworICAgIAorICAgIGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9w
dXRfYnlfaWQpIHsKKyAgICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9m
aWxlZEJsb2NrLT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBu
b3RGb3VuZCkKKyAgICAgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24s
IDAsIDAsIDAsIG5vdEZvdW5kKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBQdXRCeUlkU3Rh
dHVzKFNpbXBsZVJlcGxhY2UsIHN0cnVjdHVyZSwgMCwgMCwgb2Zmc2V0KTsKKyAgICB9CisgICAg
CisgICAgQVNTRVJUKGluc3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9p
ZF90cmFuc2l0aW9uX2RpcmVjdAorICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29k
ZSA9PSBsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgIAorICAgIFN0
cnVjdHVyZSogbmV3U3RydWN0dXJlID0gaW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCk7
CisgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gaW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVD
aGFpbi5nZXQoKTsKKyAgICBBU1NFUlQobmV3U3RydWN0dXJlKTsKKyAgICBBU1NFUlQoY2hhaW4p
OworICAgIAorICAgIHNpemVfdCBvZmZzZXQgPSBuZXdTdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRC
bG9jay0+Z2xvYmFsRGF0YSgpLCBpZGVudCk7CisgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkK
KyAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90
Rm91bmQpOworICAgIAorICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVRyYW5zaXRpb24s
IHN0cnVjdHVyZSwgbmV3U3RydWN0dXJlLCBjaGFpbiwgb2Zmc2V0KTsKKyNlbHNlCisgICAgcmV0
dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworI2Vu
ZGlmCit9CisKIFB1dEJ5SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxv
Y2sqIHByb2ZpbGVkQmxvY2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlk
ZW50KQogewogICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFS
QU0oYnl0ZWNvZGVJbmRleCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKICNpZiBFTkFCTEUo
SklUKSAmJiBFTkFCTEUoVkFMVUVfUFJPRklMRVIpCisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5u
dW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21M
TEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CisgICAgCiAgICAgaWYg
KHByb2ZpbGVkQmxvY2stPmxpa2VseVRvVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQogICAg
ICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBub3RGb3Vu
ZCk7CiAgICAgCiAgICAgU3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gcHJvZmlsZWRCbG9j
ay0+Z2V0U3R1YkluZm8oYnl0ZWNvZGVJbmRleCk7CiAgICAgaWYgKCFzdHViSW5mby5zZWVuKQot
ICAgICAgICByZXR1cm4gUHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RG
b3VuZCk7CisgICAgICAgIHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5
dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5
cGUpIHsKICAgICBjYXNlIGFjY2Vzc191bnNldDoKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0
dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29t
cHV0ZUZyb21MTEludChwcm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAg
ICAgIAogICAgIGNhc2UgYWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNlOiB7CiAgICAgICAgIHNpemVf
dCBvZmZzZXQgPSBzdHViSW5mby51LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUt
PmdldCgKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRT
dGF0dXMuaAkocmV2aXNpb24gMTA4MjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL1B1dEJ5SWRTdGF0dXMuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsOCBAQCBwdWJs
aWM6CiAgICAgc2l6ZV90IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAg
CiBwcml2YXRlOgorICAgIHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoQ29k
ZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYpOworICAgIAogICAg
IFN0YXRlIG1fc3RhdGU7CiAgICAgU3RydWN0dXJlKiBtX29sZFN0cnVjdHVyZTsKICAgICBTdHJ1
Y3R1cmUqIG1fbmV3U3RydWN0dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDEw
ODI0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5l
cmF0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSlNB
Y3RpdmF0aW9uLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJl
dGVyLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlNjb3Bl
Q2hhaW4uaCIKICNpbmNsdWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVVN0cmluZy5o
IgpAQCAtMTI3OCw5ICsxMjc5LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVt
aXRSZXNvbAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxS
ZXNvbHZlSW5mbyhpbnN0cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKENM
QVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZl
SW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgICAgICBib29s
IGR5bmFtaWMgPSByZXNvbHZlUmVzdWx0LmlzRHluYW1pYygpICYmIHJlc29sdmVSZXN1bHQuZGVw
dGgoKTsKICAgICAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2Rl
KGR5bmFtaWMgPyBvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwp
OwogICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKQEAgLTEzODQs
OSArMTM4Myw2IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICAg
ICAgICAgcmV0dXJuIGJhc2VEc3Q7CiAgICAgfQogCi0KLQotCiAgICAgVmFsdWVQcm9maWxlKiBw
cm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKG9wX3Jlc29sdmVfd2l0aF9iYXNlKTsKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoYmFzZURzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKHByb3BEc3QtPmluZGV4KCkpOwpAQCAtMTQ5NCw5ICsxNDkwLDcgQEAgdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdE1ldGhvZENoZWNrKAogCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNl
LCBjb25zdCBJZGVudGlmaWVyJiBwcm9wZXJ0eSkKIHsKLSNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRF
UlBSRVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihp
bnN0cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBWYWx1ZVByb2ZpbGUqIHByb2Zp
bGUgPSBlbWl0UHJvZmlsZWRPcGNvZGUob3BfZ2V0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMo
KS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKQEAgLTE1MjIsOSArMTUxNiw3IEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0R2V0QXIKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5l
cmF0b3I6OmVtaXRQdXRCeUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHBy
b3BlcnR5LCBSZWdpc3RlcklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBS
RVRFUikKICAgICBtX2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0
cnVjdGlvbnMoKS5zaXplKCkpOwotI2VuZGlmCiAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9p
ZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTU0MCw5
ICsxNTMyLDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogCiBS
ZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJ
RCogYmFzZSwgY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQog
ewotI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQ
cm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYK
ICAgICAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCku
YXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTgyMyw3ICsxODEzLDExIEBAIFJlZ2lzdGVySUQq
IEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2FsbCgKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
ZnVuYy0+aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFy
Z3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAgICBp
bnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsgLy8g
cmVnaXN0ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKG1fY29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5k
KDApOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFZhbHVlUHJv
ZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpA
QCAtMTkyNyw3ICsxOTIxLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0
Q29uc3QKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1bmMK
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2Fs
bEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hZGRMTElu
dENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwor
I2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlmIChkc3QgIT0gaWdu
b3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9m
aWxlZE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMjE4OCw3ICsyMTg2LDExIEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gKIHsKICAgICBtX3VzZXNFeGNl
cHRpb25zID0gdHJ1ZTsKICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICBI
YW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBp
bnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURl
cHRoLCBDb2RlTG9jYXRpb25MYWJlbChNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZyb21F
eGVjdXRhYmxlQWRkcmVzcyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9jYXRjaCkpKSB9
OworI2Vsc2UKICAgICBIYW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5k
LT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGgg
KyBtX2Jhc2VTY29wZURlcHRoLCBDb2RlTG9jYXRpb25MYWJlbCgpIH07CisjZW5kaWYKICNlbHNl
CiAgICAgSGFuZGxlckluZm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgw
LCAwKSwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNl
U2NvcGVEZXB0aCB9OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAkocmV2aXNpb24gMTA4MjQ2KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU4NSw5ICs1ODUsNyBAQCBwcml2YXRlOgogICAgIHsKICAgICAgICAgVU5VU0VEX1BBUkFNKG5v
ZGVJbmRleCk7CiAgICAgICAgIAotICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zm
c2V0KGJ5dGVjb2RlSW5kZXgpOwotICAgICAgICBBU1NFUlQocHJvZmlsZSk7Ci0gICAgICAgIFBy
ZWRpY3RlZFR5cGUgcHJlZGljdGlvbiA9IHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlv
bigpOworICAgICAgICBQcmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBtX2lubGluZVN0YWNrVG9w
LT5tX3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNl
dChieXRlY29kZUluZGV4KTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCiAgICAgICAg
IGRhdGFMb2coIkR5bmFtaWMgW0AldSwgYmMjJXVdIHByZWRpY3Rpb246ICVzXG4iLCBub2RlSW5k
ZXgsIGJ5dGVjb2RlSW5kZXgsIHByZWRpY3Rpb25Ub1N0cmluZyhwcmVkaWN0aW9uKSk7CiAjZW5k
aWYKQEAgLTEwMjIsNiArMTAyMCw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGlu
aW5nKGJvb2wKICAgICAKICAgICAvLyBJZiB3ZSBnZXQgaGVyZSB0aGVuIGl0IGxvb2tzIGxpa2Ug
d2Ugc2hvdWxkIGRlZmluaXRlbHkgaW5saW5lIHRoaXMgY29kZS4gUHJvY2VlZAogICAgIC8vIHdp
dGggcGFyc2luZyB0aGUgY29kZSB0byBnZXQgYnl0ZWNvZGUsIHNvIHRoYXQgd2UgY2FuIHRoZW4g
cGFyc2UgdGhlIGJ5dGVjb2RlLgorICAgIC8vIE5vdGUgdGhhdCBpZiBMTEludCBpcyBlbmFibGVk
LCB0aGUgYnl0ZWNvZGUgd2lsbCBhbHdheXMgYmUgYXZhaWxhYmxlLiBBbHNvIG5vdGUKKyAgICAv
LyB0aGF0IGlmIExMSW50IGlzIGVuYWJsZWQsIHdlIG1heSBpbmxpbmUgYSBjb2RlIGJsb2NrIHRo
YXQgaGFzIG5ldmVyIGJlZW4gSklUdGVkCisgICAgLy8gYmVmb3JlIQogICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gbV9jb2RlQmxvY2tDYWNoZS5nZXQoQ29kZUJsb2NrS2V5KGV4ZWN1dGFibGUs
IGtpbmQpLCBleHBlY3RlZEZ1bmN0aW9uLT5zY29wZSgpKTsKICAgICBpZiAoIWNvZGVCbG9jaykK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTcyMiw3ICsxNzIzLDcgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3Rh
Y2tUb3AtPm1fcHJvZmlsZWRCbG9jaywgbV9jdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgCiAg
ICAgICAgICAgICBpZiAobWV0aG9kQ2FsbFN0YXR1cy5pc1NldCgpCi0gICAgICAgICAgICAgICAg
JiYgIWdldEJ5SWRTdGF0dXMuaXNTZXQoKQorICAgICAgICAgICAgICAgICYmICFnZXRCeUlkU3Rh
dHVzLndhc1NlZW5JbkpJVCgpCiAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3At
Pm1fZXhpdFByb2ZpbGUuaGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSkgewog
ICAgICAgICAgICAgICAgIC8vIEl0J3MgbW9ub21vcnBoaWMgYXMgZmFyIGFzIHdlIGNhbiB0ZWxs
LCBzaW5jZSB0aGUgbWV0aG9kX2NoZWNrIHdhcyBsaW5rZWQKICAgICAgICAgICAgICAgICAvLyBi
dXQgdGhlIHNsb3cgcGF0aCAoaS5lLiB0aGUgbm9ybWFsIGdldF9ieV9pZCkgbmV2ZXIgZmlyZWQu
CkBAIC0xNzkxLDcgKzE3OTIsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVu
c2lnbmVkCiAKICAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9ieV9pZCk7CiAgICAgICAg
IH0KLSAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6IHsKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlf
aWQ6CisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAg
ICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDogewogICAgICAgICAgICAgTm9k
ZUluZGV4IHZhbHVlID0gZ2V0KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAg
ICAgICAgICAgTm9kZUluZGV4IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3Bl
cmFuZCk7CiAgICAgICAgICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVT
dGFja1RvcC0+bV9pZGVudGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFu
ZF07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJ
KHJldmlzaW9uIDEwODI0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJp
bGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMSw2ICsxMTEsOCBAQCBpbmxpbmUgYm9vbCBj
YW5Db21waWxlT3Bjb2RlKE9wY29kZUlEIG9wCiAgICAgY2FzZSBvcF9wdXRfc2NvcGVkX3ZhcjoK
ICAgICBjYXNlIG9wX2dldF9ieV9pZDoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICBjYXNl
IG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX25vcm1hbDoKICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyOgogICAgIGNhc2Ug
b3BfcHV0X2dsb2JhbF92YXI6CiAgICAgY2FzZSBvcF9qbXA6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMDgy
NDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDIxIEBAIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhl
Y1N0YXRlKiBleGVjKQogICAgIHVpbnQzMl90IGV4aXRJbmRleCA9IGdsb2JhbERhdGEtPm9zckV4
aXRJbmRleDsKICAgICBPU1JFeGl0JiBleGl0ID0gY29kZUJsb2NrLT5vc3JFeGl0KGV4aXRJbmRl
eCk7CiAgICAgCisgICAgLy8gTWFrZSBzdXJlIGFsbCBjb2RlIG9uIG91ciBpbmxpbmUgc3RhY2sg
aXMgSklUIGNvbXBpbGVkLiBUaGlzIGlzIG5lY2Vzc2FyeSBzaW5jZQorICAgIC8vIHdlIG1heSBv
cHQgdG8gaW5saW5lIGEgY29kZSBibG9jayBldmVuIGJlZm9yZSBpdCBoYWQgZXZlciBiZWVuIGNv
bXBpbGVkIGJ5IHRoZQorICAgIC8vIEpJVCwgYnV0IG91ciBPU1IgZXhpdCBpbmZyYXN0cnVjdHVy
ZSBjdXJyZW50bHkgb25seSB3b3JrcyBpZiB0aGUgdGFyZ2V0IG9mIHRoZQorICAgIC8vIE9TUiBl
eGl0IGlzIEpJVCBjb2RlLiBUaGlzIGNvdWxkIGJlIGNoYW5nZWQgc2luY2UgdGhlcmUgaXMgbm90
aGluZyBwYXJ0aWN1bGFybHkKKyAgICAvLyBoYXJkIGFib3V0IGRvaW5nIGFuIE9TUiBleGl0IGlu
dG8gdGhlIGludGVycHJldGVyLCBidXQgZm9yIG5vdyB0aGlzIHNlZW1zIHRvIG1ha2UKKyAgICAv
LyBzZW5zZSBpbiB0aGF0IGlmIHdlJ3JlIE9TUiBleGl0aW5nIGZyb20gaW5saW5lZCBjb2RlIG9m
IGEgREZHIGNvZGUgYmxvY2ssIHRoZW4KKyAgICAvLyBwcm9iYWJseSBpdCdzIGEgZ29vZCBzaWdu
IHRoYXQgdGhlIHRoaW5nIHdlJ3JlIGV4aXRpbmcgaW50byBpcyBob3QuIEV2ZW4gbW9yZQorICAg
IC8vIGludGVyZXN0aW5nbHksIHNpbmNlIHRoZSBjb2RlIHdhcyBpbmxpbmVkLCBpdCBtYXkgbmV2
ZXIgb3RoZXJ3aXNlIGdldCBKSVQKKyAgICAvLyBjb21waWxlZCBzaW5jZSB0aGUgYWN0IG9mIGlu
bGluaW5nIGl0IG1heSBlbnN1cmUgdGhhdCBpdCBvdGhlcndpc2UgbmV2ZXIgcnVucy4KKyAgICBm
b3IgKENvZGVPcmlnaW4gY29kZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luOyBjb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZTsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
LT5jYWxsZXIpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY29k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpCisgICAgICAgICAgICAt
PmJhc2VsaW5lQ29kZUJsb2NrRm9yKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5pc0NhbGwg
PyBDb2RlRm9yQ2FsbCA6IENvZGVGb3JDb25zdHJ1Y3QpCisgICAgICAgICAgICAtPmppdENvbXBp
bGUoKmdsb2JhbERhdGEpOworICAgIH0KKyAgICAKICAgICBTcGVjdWxhdGlvblJlY292ZXJ5KiBy
ZWNvdmVyeSA9IDA7CiAgICAgaWYgKGV4aXQubV9yZWNvdmVyeUluZGV4KQogICAgICAgICByZWNv
dmVyeSA9ICZjb2RlQmxvY2stPnNwZWN1bGF0aW9uUmVjb3ZlcnkoZXhpdC5tX3JlY292ZXJ5SW5k
ZXggLSAxKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAkocmV2aXNpb24gMTA4MjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUg
IkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR09TUkV4aXQuaCIKICNpbmNsdWRlICJERkdSZXBh
dGNoLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1ZS5oIgogI2luY2x1ZGUgIkdldHRl
clNldHRlci5oIgogI2luY2x1ZGUgIklubGluZUFTTS5oIgogI2luY2x1ZGUgIkludGVycHJldGVy
LmgiCkBAIC03MzcsNTAgKzczOCw2IEBAIHNpemVfdCBERkdfT1BFUkFUSU9OIG9wZXJhdGlvbkNv
bXBhcmVTdHIKICAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgSlNWYWx1ZTo6
ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZE9wMikpOwogfQogCi1F
bmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKLUVu
Y29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVj
U3RhdGUoRXhlY1N0YXRlKik7Ci0KLSNpZiBDUFUoWDg2XzY0KQotYXNtICgKLSIuZ2xvYmwgIiBT
WU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdl
dEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgotICAgICJtb3Yg
JXIxMywgJXJkaVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoWDg2KQot
YXNtICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJc
biIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJ
TkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglZWRpKSwg
JWVkaVxuIgotICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RS
SU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIK
LSk7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikKLWFzbSAoCi0iLnRleHQiICJcbiIKLSIuYWxpZ24g
MiIgIlxuIgotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkg
IlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotIi50aHVtYiIg
IlxuIgotIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4i
Ci0gICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgotICAgICJjcHkgcjAsIHI1IiAiXG4iCi0g
ICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdp
dGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZW5kaWYKLQotRW5jb2RlZEpTVmFsdWUgREZHX09QRVJB
VElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMp
Ci17Ci0gICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsK
LSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERhdGEsIGV4ZWMpOwotICAg
IAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxs
UmV0dXJuVmFsdWUpOwotfQotCiBzdGF0aWMgdm9pZCogaGFuZGxlSG9zdENhbGwoRXhlY1N0YXRl
KiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5k
KQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAxMDgyNDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUw
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNz
IEpTVmFsdWU7CiAgICAgY2xhc3MgTGl2ZU9iamVjdEl0ZXJhdG9yOworICAgIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBNYXJrZWRBcmd1bWVudEJ1ZmZlcjsKICAgICBj
bGFzcyBSZWdpc3RlckZpbGU7CiAgICAgY2xhc3MgVVN0cmluZzsKQEAgLTk1LDYgKzk2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIC8vIHRydWUgaWYgYW4gYWxsb2NhdGlvbiBvciBjb2xs
ZWN0aW9uIGlzIGluIHByb2dyZXNzCiAgICAgICAgIGlubGluZSBib29sIGlzQnVzeSgpOwogICAg
ICAgICAKKyAgICAgICAgTWFya2VkQWxsb2NhdG9yJiBmaXJzdEFsbG9jYXRvcldpdGhvdXREZXN0
cnVjdG9ycygpIHsgcmV0dXJuIG1fb2JqZWN0U3BhY2UuZmlyc3RBbGxvY2F0b3IoKTsgfQogICAg
ICAgICBNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9y
KHNpemVfdCBieXRlcykgeyByZXR1cm4gbV9vYmplY3RTcGFjZS5hbGxvY2F0b3JGb3IoYnl0ZXMp
OyB9CiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yRm9yT2JqZWN0V2l0aERlc3Ry
dWN0b3Ioc2l6ZV90IGJ5dGVzKSB7IHJldHVybiBtX29iamVjdFNwYWNlLmRlc3RydWN0b3JBbGxv
Y2F0b3JGb3IoYnl0ZXMpOyB9CiAgICAgICAgIENoZWNrZWRCb29sZWFuIHRyeUFsbG9jYXRlU3Rv
cmFnZShzaXplX3QsIHZvaWQqKik7CkBAIC0xMzYsMTIgKzEzOCwxMyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgdm9pZCBnZXRDb25zZXJ2YXRpdmVSZWdpc3RlclJvb3RzKEhhc2hTZXQ8SlND
ZWxsKj4mIHJvb3RzKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBDb2Rl
QmxvY2s7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAg
ICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRTcGFjZTsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtl
ZEFsbG9jYXRvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZEJsb2NrOwogICAgICAgICBm
cmllbmQgY2xhc3MgQ29waWVkU3BhY2U7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTbG90VmlzaXRv
cjsKLSAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKICAgICAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJik7CiAKICAgICAgICAgdm9p
ZCogYWxsb2NhdGVXaXRoRGVzdHJ1Y3RvcihzaXplX3QpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvTWFya1N0YWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCShyZXZpc2lvbiAxMDgyNDYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDMsNyAr
MzAzLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCB2aXNpdENoaWxkcmVuKAogI2VuZGlm
CiAKICAgICBBU1NFUlQoSGVhcDo6aXNNYXJrZWQoY2VsbCkpOwotCisgICAgCiAgICAgaWYgKGlz
SlNTdHJpbmcoY2VsbCkpIHsKICAgICAgICAgSlNTdHJpbmc6OnZpc2l0Q2hpbGRyZW4oY29uc3Rf
Y2FzdDxKU0NlbGwqPihjZWxsKSwgdmlzaXRvcik7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCShyZXZpc2lvbiAx
MDgyNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRBbGxvY2F0b3IuaAko
d29ya2luZyBjb3B5KQpAQCAtOCw2ICs4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEhl
YXA7CiBjbGFzcyBNYXJrZWRTcGFjZTsKK2NsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKIAog
bmFtZXNwYWNlIERGRyB7CiBjbGFzcyBTcGVjdWxhdGl2ZUpJVDsKQEAgLTMzLDYgKzM0LDggQEAg
cHVibGljOgogICAgIHZvaWQgaW5pdChIZWFwKiwgTWFya2VkU3BhY2UqLCBzaXplX3QgY2VsbFNp
emUsIGJvb2wgY2VsbHNOZWVkRGVzdHJ1Y3Rpb24pOwogICAgIAogcHJpdmF0ZToKKyAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQqIGFsbG9jYXRlU2xvd0Nhc2UoKTsKICAgICB2b2lkKiB0cnlBbGxvY2F0ZSgpOwog
ICAgIHZvaWQqIHRyeUFsbG9jYXRlSGVscGVyKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRTcGFjZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZFNwYWNlLmgJKHJldmlzaW9uIDEwODI0NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYgKzQxLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBIZWFwOwogY2xhc3MgSlNDZWxsOwogY2xhc3MgTGl2
ZU9iamVjdEl0ZXJhdG9yOworY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgV2Vh
a0dDSGFuZGxlOwogY2xhc3MgU2xvdFZpc2l0b3I7CiAKQEAgLTUxLDYgKzUyLDcgQEAgcHVibGlj
OgogCiAgICAgTWFya2VkU3BhY2UoSGVhcCopOwogCisgICAgTWFya2VkQWxsb2NhdG9yJiBmaXJz
dEFsbG9jYXRvcigpOwogICAgIE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9yRm9yKHNpemVfdCk7
CiAgICAgTWFya2VkQWxsb2NhdG9yJiBhbGxvY2F0b3JGb3IoTWFya2VkQmxvY2sqKTsKICAgICBN
YXJrZWRBbGxvY2F0b3ImIGRlc3RydWN0b3JBbGxvY2F0b3JGb3Ioc2l6ZV90KTsKQEAgLTc5LDYg
KzgxLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ29uc3VtZUZyZWVMaXN0KE1hcmtlZEJsb2Nr
Kik7CiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
KyAgICAKICAgICAvLyBbIDMyLi4uIDI1NiBdCiAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBwcmVj
aXNlU3RlcCA9IE1hcmtlZEJsb2NrOjphdG9tU2l6ZTsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90
IHByZWNpc2VDdXRvZmYgPSAyNTY7CkBAIC0xMjksNiArMTMzLDExIEBAIHRlbXBsYXRlPHR5cGVu
YW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmEKICAgICByZXR1cm4gZm9yRWFjaENlbGwoZnVuY3Rv
cik7CiB9CiAKK2lubGluZSBNYXJrZWRBbGxvY2F0b3ImIE1hcmtlZFNwYWNlOjpmaXJzdEFsbG9j
YXRvcigpCit7CisgICAgcmV0dXJuIG1fbm9ybWFsU3BhY2UucHJlY2lzZUFsbG9jYXRvcnNbMF07
Cit9CisKIGlubGluZSBNYXJrZWRBbGxvY2F0b3ImIE1hcmtlZFNwYWNlOjphbGxvY2F0b3JGb3Io
c2l6ZV90IGJ5dGVzKQogewogICAgIEFTU0VSVChieXRlcyAmJiBieXRlcyA8PSBtYXhDZWxsU2l6
ZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcAkocmV2aXNpb24gMTA4MjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhbGxGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDI5IEBAIFJl
Z2lzdGVyRmlsZSogQ2FsbEZyYW1lOjpyZWdpc3RlckZpbGUoKQogCiAjZW5kaWYKIAorI2lmIFVT
RShKU1ZBTFVFMzJfNjQpCit1bnNpZ25lZCBDYWxsRnJhbWU6OmJ5dGVjb2RlT2Zmc2V0Rm9yTm9u
REZHQ29kZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGNvZGVCbG9jaygpKTsKKyAgICByZXR1cm4g
Y3VycmVudFZQQygpIC0gY29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCk7Cit9CisK
K3ZvaWQgQ2FsbEZyYW1lOjpzZXRCeXRlY29kZU9mZnNldEZvck5vbkRGR0NvZGUodW5zaWduZWQg
b2Zmc2V0KQoreworICAgIEFTU0VSVChjb2RlQmxvY2soKSk7CisgICAgc2V0Q3VycmVudFZQQyhj
b2RlQmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIG9mZnNldCk7Cit9CisjZWxzZQor
SW5zdHJ1Y3Rpb24qIENhbGxGcmFtZTo6Y3VycmVudFZQQygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVPZmZzZXRGb3JO
b25ERkdDb2RlKCk7Cit9Cit2b2lkIENhbGxGcmFtZTo6c2V0Q3VycmVudFZQQyhJbnN0cnVjdGlv
biogdnBjKQoreworICAgIHNldEJ5dGVjb2RlT2Zmc2V0Rm9yTm9uREZHQ29kZSh2cGMgLSBjb2Rl
QmxvY2soKS0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSk7Cit9CisjZW5kaWYKKyAgICAKICNpZiBF
TkFCTEUoREZHX0pJVCkKIGJvb2wgQ2FsbEZyYW1lOjppc0lubGluZUNhbGxGcmFtZVNsb3coKQog
ewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUu
aAkocmV2aXNpb24gMTA4MjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L0NhbGxGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsNyArMTA2LDExIEBAIG5hbWVzcGFj
ZSBKU0MgIHsKICAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5QQygpIGNvbnN0IHsgcmV0
dXJuIFJldHVybkFkZHJlc3NQdHIodGhpc1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKSk7
IH0KICNlbmRpZgogICAgICAgICBBYnN0cmFjdFBDIGFic3RyYWN0UmV0dXJuUEMoSlNHbG9iYWxE
YXRhJiBnbG9iYWxEYXRhKSB7IHJldHVybiBBYnN0cmFjdFBDKGdsb2JhbERhdGEsIHRoaXMpOyB9
Ci0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Rm9yTm9uREZHQ29kZSgpCisjaWYgVVNF
KEpTVkFMVUUzMl82NCkKKyAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXRGb3JOb25ERkdD
b2RlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0Qnl0ZWNvZGVPZmZzZXRGb3JOb25ERkdDb2Rl
KHVuc2lnbmVkIG9mZnNldCk7CisjZWxzZQorICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNl
dEZvck5vbkRGR0NvZGUoKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoY29k
ZUJsb2NrKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxlOjpBcmd1bWVu
dENvdW50XS50YWcoKTsKQEAgLTExNyw2ICsxMjEsNyBAQCBuYW1lc3BhY2UgSlNDICB7CiAgICAg
ICAgICAgICBBU1NFUlQoY29kZUJsb2NrKCkpOwogICAgICAgICAgICAgdGhpc1tSZWdpc3RlckZp
bGU6OkFyZ3VtZW50Q291bnRdLnRhZygpID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4ob2Zmc2V0KTsK
ICAgICAgICAgfQorI2VuZGlmCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAgICAgSW5saW5l
Q2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUoKSBjb25zdCB7IHJldHVybiB0aGlzW1JlZ2lzdGVy
RmlsZTo6UmV0dXJuUENdLmFzSW5saW5lQ2FsbEZyYW1lKCk7IH0KQEAgLTEzNCw2ICsxMzksMTkg
QEAgbmFtZXNwYWNlIEpTQyAgewogI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAg
ICAgICBJbnN0cnVjdGlvbiogcmV0dXJuVlBDKCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3Rl
ckZpbGU6OlJldHVyblBDXS52UEMoKTsgfQogI2VuZGlmCisjaWYgVVNFKEpTVkFMVUUzMl82NCkK
KyAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdAorICAgICAgICB7CisgICAg
ICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4odGhpc1tSZWdpc3RlckZp
bGU6OkFyZ3VtZW50Q291bnRdLnRhZygpKTsKKyAgICAgICAgfQorICAgICAgICB2b2lkIHNldEN1
cnJlbnRWUEMoSW5zdHJ1Y3Rpb24qIHZwYykKKyAgICAgICAgeworICAgICAgICAgICAgdGhpc1tS
ZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnRdLnRhZygpID0gYml0d2lzZV9jYXN0PGludDMyX3Q+
KHZwYyk7CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIEluc3RydWN0aW9uKiBjdXJyZW50VlBD
KCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0Q3VycmVudFZQQyhJbnN0cnVjdGlvbiogdnBjKTsK
KyNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1lKiBjYWxsZXJG
cmFtZSkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmlsZTo6Q2FsbGVy
RnJhbWVdID0gY2FsbGVyRnJhbWU7IH0KICAgICAgICAgdm9pZCBzZXRTY29wZUNoYWluKFNjb3Bl
Q2hhaW5Ob2RlKiBzY29wZUNoYWluKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4odGhpcylbUmVn
aXN0ZXJGaWxlOjpTY29wZUNoYWluXSA9IHNjb3BlQ2hhaW47IH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAkocmV2aXNpb24g
MTA4MjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVy
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQAogI2luY2x1ZGUgIkpJVC5oIgog
I2VuZGlmCiAKLSNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JLQVJPVU5EIChF
TkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKSAmJiAhZGVmaW5lZChfX2xs
dm1fXykpCisjZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FST1VORCAoKEVO
QUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkp
ICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApAQCAtNTQz
LDM0ICs1NDMsNTkgQEAgSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgLCBtX2luaXRpYWxpemVkKGZhbHNlKQogI2VuZGlmCi0gICAgLCBtX2VuYWJs
ZWQoZmFsc2UpCisgICAgLCBtX2NsYXNzaWNFbmFibGVkKGZhbHNlKQogewogfQogCi12b2lkIElu
dGVycHJldGVyOjppbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKQorSW50ZXJwcmV0ZXI6On5JbnRl
cnByZXRlcigpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRF
UikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fY2xhc3NpY0VuYWJsZWQpCisgICAgICAg
IGRlbGV0ZVtdIG1fb3Bjb2RlVGFibGU7CisjZW5kaWYKK30KKwordm9pZCBJbnRlcnByZXRlcjo6
aW5pdGlhbGl6ZShMTEludDo6RGF0YSogbGxpbnREYXRhLCBib29sIGNhblVzZUpJVCkKK3sKKyAg
ICBVTlVTRURfUEFSQU0obGxpbnREYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oY2FuVXNlSklUKTsK
KyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUo
TExJTlQpCisjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCisg
ICAgLy8gSGF2aW5nIExMSW50IGVuYWJsZWQsIGJ1dCBub3QgYmVpbmcgYWJsZSB0byB1c2UgdGhl
IEpJVCwgYW5kIG5vdCBoYXZpbmcKKyAgICAvLyBhIGNvbXB1dGVkIGdvdG8gaW50ZXJwcmV0ZXIs
IGlzIG5vdCBzdXBwb3J0ZWQuIE5vdCBiZWNhdXNlIHdlIGNhbm5vdAorICAgIC8vIHN1cHBvcnQg
aXQsIGJ1dCBiZWNhdXNlIEkgZGVjaWRlZCB0byBkcmF3IHRoZSBsaW5lIGF0IHRoZSBudW1iZXIg
b2YKKyAgICAvLyBwZXJtdXRhdGlvbnMgb2YgZXhlY3V0aW9uIGVuZ2luZXMgdGhhdCBJIHdhbnRl
ZCB0aGlzIGNvZGUgdG8gZ3Jvay4KKyAgICBBU1NFUlQoY2FuVXNlSklUKTsKKyNlbmRpZgogICAg
IGlmIChjYW5Vc2VKSVQpIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1fb3Bjb2RlVGFi
bGUgPSBsbGludERhdGEtPm9wY29kZU1hcCgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bU9wY29kZUlEczsgKytpKQorICAgICAgICAgICAgbV9vcGNvZGVJRFRhYmxlLmFkZChtX29w
Y29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworI2Vsc2UKICAgICAgICAg
Ly8gSWYgdGhlIEpJVCBpcyBwcmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0aW5hdGlvbnMgZm9y
IG9wY29kZXMuCiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU9wY29k
ZUlEczsgKytpKSB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlID0gYml0d2lzZV9jYXN0PHZv
aWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpKTsKICAgICAgICAgICAgIG1fb3Bjb2RlVGFi
bGVbaV0gPSBvcGNvZGU7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0gZWxzZSB7CisjaWYgRU5B
QkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbmV3IE9wY29kZVtudW1PcGNvZGVJ
RHNdOworI2VuZGlmCiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRpYWxpemVBbmRSZXR1cm4s
IDAsIDApOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1PcGNvZGVJ
RHM7ICsraSkKICAgICAgICAgICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNvZGVUYWJsZVtp
XSwgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsKICAgICAgICAgCi0gICAgICAgIG1fZW5hYmxl
ZCA9IHRydWU7CisgICAgICAgIG1fY2xhc3NpY0VuYWJsZWQgPSB0cnVlOwogICAgIH0KICNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKGNhblVzZUpJVCk7CiAjaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQ
UkVURVIpCi0gICAgbV9lbmFibGVkID0gdHJ1ZTsKKyAgICBtX2NsYXNzaWNFbmFibGVkID0gdHJ1
ZTsKICNlbHNlCi0gICAgbV9lbmFibGVkID0gZmFsc2U7CisgICAgbV9jbGFzc2ljRW5hYmxlZCA9
IGZhbHNlOwogI2VuZGlmCiAjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19J
TlRFUlBSRVRFUikKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC02NjcsOSArNjkyLDExIEBAIHZv
aWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW0KIAogYm9vbCBJbnRlcnByZXRl
cjo6aXNPcGNvZGUoT3Bjb2RlIG9wY29kZSkKIHsKLSNpZiBFTkFCTEUoQ09NUFVURURfR09UT19D
TEFTU0lDX0lOVEVSUFJFVEVSKQotICAgIGlmICghbV9lbmFibGVkKQorI2lmIEVOQUJMRShDT01Q
VVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkKKyNpZiAhRU5B
QkxFKExMSU5UKQorICAgIGlmICghbV9jbGFzc2ljRW5hYmxlZCkKICAgICAgICAgcmV0dXJuIG9w
Y29kZSA+PSAwICYmIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8dWludHB0cl90
PihvcGNvZGUpKSA8PSBvcF9lbmQ7CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2RlICE9IEhhc2hU
cmFpdHM8T3Bjb2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJhaXRzPE9wY29k
ZT46OmlzRGVsZXRlZFZhbHVlKG9wY29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJRFRhYmxlLmNv
bnRhaW5zKG9wY29kZSk7CkBAIC03MjYsMTEgKzc1MywxMSBAQCBORVZFUl9JTkxJTkUgYm9vbCBJ
bnRlcnByZXRlcjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAxLgogI2lmIEVO
QUJMRShKSVQpICYmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgIGlmIChjYWxsZXJG
cmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQotICAgICAgICBieXRlY29kZU9mZnNldCA9
IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKKyAgICAg
ICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1l
LCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogICAgIGVsc2UKICAgICAgICAgYnl0ZWNvZGVPZmZz
ZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuVlBDKCkpIC0g
MTsKICNlbGlmIEVOQUJMRShKSVQpCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5
dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNvZGVPZmZzZXQg
PSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVy
blBDKCkpOwogI2Vsc2UKICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVP
ZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAxOwogI2VuZGlmCkBAIC04NTcsNyArODg0
LDcgQEAgc3RhdGljIENhbGxGcmFtZSogZ2V0Q2FsbGVySW5mbyhKU0dsb2JhbAogICAgICAgICAg
ICAgfQogICAgICAgICB9IGVsc2UKICAgICAjZW5kaWYKLSAgICAgICAgICAgIGJ5dGVjb2RlT2Zm
c2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblBD
KCkpOworICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2stPmJ5dGVj
b2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogI2VuZGlmCiAg
ICAgfQogCkBAIC0xODE1LDcgKzE4NDIsNyBAQCBKU1ZhbHVlIEludGVycHJldGVyOjpwcml2YXRl
RXhlY3V0ZShFeGVjCiAgICAgfQogICAgIAogICAgIEFTU0VSVChtX2luaXRpYWxpemVkKTsKLSAg
ICBBU1NFUlQobV9lbmFibGVkKTsKKyAgICBBU1NFUlQobV9jbGFzc2ljRW5hYmxlZCk7CiAgICAg
CiAjaWYgRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKQEAgLTM0
NjYsNiArMzQ5Myw4IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAjaWYgVVNFKEdDQ19DT01QVVRF
RF9HT1RPX1dPUktBUk9VTkQpCiAgICAgICBza2lwX3B1dF9ieV9pZDoKICNlbmRpZgorICAgIERF
RklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KQorICAgIERFRklORV9P
UENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKQogICAgIERFRklORV9PUENPREUo
b3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pIHsKICAgICAgICAgLyogb3BfcHV0X2J5X2lkX3RyYW5z
aXRpb24gYmFzZShyKSBwcm9wZXJ0eShpZCkgdmFsdWUocikgb2xkU3RydWN0dXJlKHNJRCkgbmV3
U3RydWN0dXJlKHNJRCkgc3RydWN0dXJlQ2hhaW4oY2hhaW4pIG9mZnNldChuKSBkaXJlY3QoYikK
ICAgICAgICAgIApAQCAtNTI5OSwxMCArNTMyOCwxMCBAQCB2b2lkIEludGVycHJldGVyOjpyZXRy
aWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJs
b2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKTsKICNpZiBFTkFCTEUo
SklUKQogICAgIGVsc2UKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxvY2st
PmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAgIGJ5dGVjb2Rl
T2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJGcmFtZSwgY2Fs
bEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogI2Vsc2UKLSAgICBieXRlY29kZU9mZnNldCA9
IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsK
KyAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2Fs
bGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYKICAgICBsaW5lTnVtYmVy
ID0gY2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQgLSAxKTsKICAgICBzb3VyY2VJRCA9IGNhbGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRh
YmxlKCktPnNvdXJjZUlEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTA4MjQ2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5o
IgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgiCiAjaW5jbHVk
ZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCiAKQEAgLTQ2LDYgKzQ3LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAgICAgY2xhc3Mg
RnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZTsKICAg
ICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKQEAgLTE1OCwxOSAr
MTYwLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSW50ZXJwcmV0ZXIgewogICAg
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgZnJpZW5kIGNsYXNzIEpJVDsK
ICAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7CisgICAgICAgIGZyaWVuZCBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiAgICAgcHVi
bGljOgogICAgICAgICBJbnRlcnByZXRlcigpOworICAgICAgICB+SW50ZXJwcmV0ZXIoKTsKICAg
ICAgICAgCi0gICAgICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGNhblVzZUpJVCk7CisgICAgICAg
IHZvaWQgaW5pdGlhbGl6ZShMTEludDo6RGF0YSosIGJvb2wgY2FuVXNlSklUKTsKIAogICAgICAg
ICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSgpIHsgcmV0dXJuIG1fcmVnaXN0ZXJGaWxlOyB9
CiAgICAgICAgIAogICAgICAgICBPcGNvZGUgZ2V0T3Bjb2RlKE9wY29kZUlEIGlkKQogICAgICAg
ICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7Ci0jaWYgRU5BQkxFKENPTVBV
VEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19D
TEFTU0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgICAgICByZXR1cm4g
bV9vcGNvZGVUYWJsZVtpZF07CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIGlkOwpAQCAtMTgw
LDkgKzE4NCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlSUQgZ2V0T3Bjb2Rl
SUQoT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKG1faW5pdGlh
bGl6ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCisj
aWYgRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9wY29kZSkpOwor
ICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsKKyNlbGlmIEVO
QUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAgICAgICBBU1NF
UlQoaXNPcGNvZGUob3Bjb2RlKSk7Ci0gICAgICAgICAgICBpZiAoIW1fZW5hYmxlZCkKKyAgICAg
ICAgICAgIGlmICghbV9jbGFzc2ljRW5hYmxlZCkKICAgICAgICAgICAgICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29kZSkpOwogCiAg
ICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVJRFRhYmxlLmdldChvcGNvZGUpOwpAQCAtMTkwLDYg
KzE5NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBvcGNvZGU7CiAj
ZW5kaWYKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBjbGFzc2ljRW5hYmxlZCgp
CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2NsYXNzaWNFbmFibGVkOworICAgICAg
ICB9CiAKICAgICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCkBAIC0yNTksNyArMjcxLDEw
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSBtX3JlZ2lzdGVyRmls
ZTsKICAgICAgICAgCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRF
UikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIE9wY29kZSogbV9vcGNvZGVUYWJsZTsgLy8g
TWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZworICAgICAgICBIYXNoTWFwPE9w
Y29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUgPT4gT3Bjb2Rl
SUQgZm9yIGRlY29tcGlsaW5nCisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lO
VEVSUFJFVEVSKQogICAgICAgICBPcGNvZGUgbV9vcGNvZGVUYWJsZVtudW1PcGNvZGVJRHNdOyAv
LyBNYXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCiAgICAgICAgIEhhc2hNYXA8
T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29kZSA9PiBPcGNv
ZGVJRCBmb3IgZGVjb21waWxpbmcKICNlbmRpZgpAQCAtMjY3LDcgKzI4Miw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgYm9vbCBtX2luaXRpYWxpemVk
OwogI2VuZGlmCi0gICAgICAgIGJvb2wgbV9lbmFibGVkOworICAgICAgICBib29sIG1fY2xhc3Np
Y0VuYWJsZWQ7CiAgICAgfTsKIAogICAgIC8vIFRoaXMgdmFsdWUgbXVzdCBub3QgYmUgYW4gb2Jq
ZWN0IHRoYXQgd291bGQgcmVxdWlyZSB0aGlzIGNvbnZlcnNpb24gKFdlYkNvcmUncyBnbG9iYWwg
b2JqZWN0KS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3Rl
ckZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
UmVnaXN0ZXJGaWxlLmgJKHJldmlzaW9uIDEwODI0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzks
NyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnNlcnZhdGl2ZVJvb3RzOwogICAg
IGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
CiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
UmVnaXN0ZXJGaWxlKTsKQEAgLTgxLDYgKzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGdyb3dTbG93Q2FzZShSZWdpc3RlciopOwog
ICAgICAgICB2b2lkIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwogICAgICAgICB2b2lkIGFkZFRv
Q29tbWl0dGVkQnl0ZUNvdW50KGxvbmcpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSG9zdENhbGxSZXR1cm5WYWx1
ZS5oIgorCisjaW5jbHVkZSAiQ2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSW5saW5lQVNNLmgiCisj
aW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1ZhbHVlSW5saW5lTWV0aG9kcy5oIgor
I2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBDT01QSUxF
UihHQ0MpCisKKyNpZiBDUFUoWDg2XzY0KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5H
KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoi
ICJcbiIKKyAgICAibW92IC00MCglcjEzKSwgJXIxM1xuIgorICAgICJtb3YgJXIxMywgJXJkaVxu
IgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUoWDg2KQorYXNtICgKKyIuZ2xv
YmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lN
Qk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgorICAg
ICJtb3YgJWVkaSwgNCglZXNwKVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJ
T04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBD
UFUoQVJNX1RIVU1CMikKK2FzbSAoCisiLnRleHQiICJcbiIKKyIuYWxpZ24gMiIgIlxuIgorIi5n
bG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9T
WU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorIi50aHVtYiIgIlxuIgorIi50aHVt
Yl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitT
WU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgImxkciBy
NSwgW3I1LCAjLTQwXSIgIlxuIgorICAgICJjcHkgcjAsIHI1IiAiXG4iCisgICAgImIgIiBTWU1C
T0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUp
ICJcbiIKKyk7CisjZW5kaWYKKworZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExf
UkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShF
eGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKCFleGVjKQorICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5n
bG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Cit9CisKKyNlbmRpZiAvLyBDT01QSUxF
UihHQ0MpCisKK30gLy8gbmFtZXNwYWNlIEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisjZGVmaW5lIEhvc3RDYWxsUmV0
dXJuVmFsdWVfaAorCisjaW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIk1hY3JvQXNzZW1i
bGVyQ29kZVJlZi5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisvLyBVbmZvcnR1bmF0
ZWx5IHRoaXMgb25seSB3b3JrcyBvbiBHQ0MtbGlrZSBjb21waWxlcnMuIEFuZCBpdCdzIGN1cnJl
bnRseSBvbmx5IHVzZWQKKy8vIGJ5IExMSW50IGFuZCBERkcsIHdoaWNoIGFsc28gYXJlIHJlc3Ry
aWN0ZWQgdG8gR0NDLWxpa2UgY29tcGlsZXJzLiBXZSBzaG91bGQKKy8vIHByb2JhYmx5IGZpeCB0
aGF0IGF0IHNvbWUgcG9pbnQuCisjaWYgQ09NUElMRVIoR0NDKQorCisjaWYgQ0FMTElOR19DT05W
RU5USU9OX0lTX1NURENBTEwKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVSTl9WQUxVRV9PUFRJT04g
Q0RFQ0wKKyNlbHNlCisjZGVmaW5lIEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OCisjZW5k
aWYKKworbmFtZXNwYWNlIEpTQyB7CisKK2V4dGVybiAiQyIgRW5jb2RlZEpTVmFsdWUgSE9TVF9D
QUxMX1JFVFVSTl9WQUxVRV9PUFRJT04gZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSgpOworCisvLyBU
aGlzIGlzIGEgcHVibGljIGRlY2xhcmF0aW9uIG9ubHkgdG8gY29udmluY2UgQ0xBTkcgbm90IHRv
IGVsaWRlIGl0LgorZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZB
TFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUq
KTsKKworaW5saW5lIHZvaWQgaW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJuVmFsdWUoKQoreworICAg
IGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKDApOworfQorCit9CisKKyNlbHNl
IC8vIENPTVBJTEVSKEdDQykKKworbmFtZXNwYWNlIEpTQyB7CitpbmxpbmUgdm9pZCBpbml0aWFs
aXplSG9zdENhbGxSZXR1cm5WYWx1ZSgpIHsgfQorfQorCisjZW5kaWYgLy8gQ09NUElMRVIoR0ND
KQorCisjZW5kaWYgLy8gSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L0pJVC5jcHAJKHJldmlzaW9uIDEwODI0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSw4IEBAIHZvaWQgSklU
Ojpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgREVGSU5FX09QKG9wX3Byb2ZpbGVf
d2lsbF9jYWxsKQogICAgICAgICBERUZJTkVfT1Aob3BfcHVzaF9uZXdfc2NvcGUpCiAgICAgICAg
IERFRklORV9PUChvcF9wdXNoX3Njb3BlKQorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFu
c2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3Jt
YWw6CiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9PUChv
cF9wdXRfYnlfaW5kZXgpCiAgICAgICAgIERFRklORV9PUChvcF9wdXRfYnlfdmFsKQpAQCAtNDg2
LDYgKzQ4OCw4IEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAg
IERFRklORV9TTE9XQ0FTRV9PUChvcF9wb3N0X2luYykKICAgICAgICAgREVGSU5FX1NMT1dDQVNF
X09QKG9wX3ByZV9kZWMpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wcmVfaW5jKQor
ICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdDoKKyAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CiAgICAgICAgIERFRklORV9TTE9XQ0FT
RV9PUChvcF9wdXRfYnlfaWQpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9wdXRfYnlf
dmFsKQogICAgICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcmVzb2x2ZV9nbG9iYWwpCkBAIC01
MjUsNiArNTI5LDEwIEBAIHZvaWQgSklUOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAKIEpJ
VENvZGUgSklUOjpwcml2YXRlQ29tcGlsZShDb2RlUHRyKiBmdW5jdGlvbkVudHJ5QXJpdHlDaGVj
aykKIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIHByaW50ZigiQ29tcGlsaW5n
IEpJVCBjb2RlIVxuIik7CisjZW5kaWYKKyAgICAKICNpZiBFTkFCTEUoVkFMVUVfUFJPRklMRVIp
CiAgICAgbV9jYW5CZU9wdGltaXplZCA9IG1fY29kZUJsb2NrLT5jYW5Db21waWxlV2l0aERGRygp
OwogI2VuZGlmCkBAIC02OTMsOCArNzAxLDEyIEBAIEpJVENvZGUgSklUOjpwcml2YXRlQ29tcGls
ZShDb2RlUHRyKiBmdW4KICAgICAgICAgaW5mby5jYWxsUmV0dXJuTG9jYXRpb24gPSBtX2NvZGVC
bG9jay0+c3RydWN0dXJlU3R1YkluZm8obV9tZXRob2RDYWxsQ29tcGlsYXRpb25JbmZvW2ldLnBy
b3BlcnR5QWNjZXNzSW5kZXgpLmNhbGxSZXR1cm5Mb2NhdGlvbjsKICAgICB9CiAKLSNpZiBFTkFC
TEUoREZHX0pJVCkKLSAgICBpZiAobV9jYW5CZU9wdGltaXplZCkgeworI2lmIEVOQUJMRShERkdf
SklUKSB8fCBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fY2FuQmVPcHRpbWl6ZWQKKyNpZiBFTkFC
TEUoTExJTlQpCisgICAgICAgIHx8IHRydWUKKyNlbmRpZgorICAgICAgICApIHsKICAgICAgICAg
Q29tcGFjdEpJVENvZGVNYXA6OkVuY29kZXIgaml0Q29kZU1hcEVuY29kZXI7CiAgICAgICAgIGZv
ciAodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQgPSAwOyBieXRlY29kZU9mZnNldCA8IG1fbGFiZWxz
LnNpemUoKTsgKytieXRlY29kZU9mZnNldCkgewogICAgICAgICAgICAgaWYgKG1fbGFiZWxzW2J5
dGVjb2RlT2Zmc2V0XS5pc1NldCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRDb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2Rl
LmgJKHJldmlzaW9uIDEwODI0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3ICs0OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBKSVRDb2RlKCkgeyB9CiAjZW5kaWYKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gSklU
VHlwZSB7IEhvc3RDYWxsVGh1bmssIEJhc2VsaW5lSklULCBERkdKSVQgfTsKKyAgICAgICAgZW51
bSBKSVRUeXBlIHsgTm9uZSwgSG9zdENhbGxUaHVuaywgSW50ZXJwcmV0ZXJUaHVuaywgQmFzZWxp
bmVKSVQsIERGR0pJVCB9OwogICAgICAgICAKICAgICAgICAgc3RhdGljIEpJVFR5cGUgYm90dG9t
VGllckpJVCgpCiAgICAgICAgIHsKQEAgLTY2LDggKzY2LDE5IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICAgICAgcmV0dXJuIERGR0pJVDsKICAgICAgICAgfQogICAgICAgICAKKyAgICAgICAg
c3RhdGljIGJvb2wgaXNPcHRpbWl6aW5nSklUKEpJVFR5cGUgaml0VHlwZSkKKyAgICAgICAgewor
ICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUgPT0gREZHSklUOworICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBzdGF0aWMgYm9vbCBpc0Jhc2VsaW5lQ29kZShKSVRUeXBlIGppdFR5cGUpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBqaXRUeXBlID09IEludGVycHJldGVyVGh1bmsg
fHwgaml0VHlwZSA9PSBCYXNlbGluZUpJVDsKKyAgICAgICAgfQorICAgICAgICAKICNpZiBFTkFC
TEUoSklUKQogICAgICAgICBKSVRDb2RlKCkKKyAgICAgICAgICAgIDogbV9qaXRUeXBlKE5vbmUp
CiAgICAgICAgIHsKICAgICAgICAgfQogCkBAIC03NSw2ICs4Niw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICAgICAgOiBtX3JlZihyZWYpCiAgICAgICAgICAgICAsIG1faml0VHlwZShqaXRU
eXBlKQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoaml0VHlwZSAhPSBOb25lKTsKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgYm9vbCBvcGVyYXRvciAhKCkgY29uc3QKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURHJpdmVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkocmV2aXNpb24gMTA4MjQ2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIuaAkod29ya2luZyBjb3B5KQpAQCAt
MzMsMTUgKzMzLDIxIEBACiAjaW5jbHVkZSAiQnl0ZWNvZGVHZW5lcmF0b3IuaCIKICNpbmNsdWRl
ICJERkdEcml2ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJMTEludEVudHJ5cG9p
bnRzLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDb2RlQmxvY2tU
eXBlPgogaW5saW5lIGJvb2wgaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhLCBPd25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0
Q29kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogeworICAgIGlmIChqaXRUeXBlID09IGNv
ZGVCbG9jay0+Z2V0SklUVHlwZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAKICAgICBp
ZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAor
ICAgIGNvZGVCbG9jay0+dW5saW5rSW5jb21pbmdDYWxscygpOworICAgIAogICAgIGJvb2wgZGZn
Q29tcGlsZWQgPSBmYWxzZTsKICAgICBpZiAoaml0VHlwZSA9PSBKSVRDb2RlOjpERkdKSVQpCiAg
ICAgICAgIGRmZ0NvbXBpbGVkID0gREZHOjp0cnlDb21waWxlKGdsb2JhbERhdGEsIGNvZGVCbG9j
ay5nZXQoKSwgaml0Q29kZSk7CkBAIC02Miw5ICs2OCwxNCBAQCBpbmxpbmUgYm9vbCBqaXRDb21w
aWxlSWZBcHByb3ByaWF0ZShKU0dsCiAKIGlubGluZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklm
QXBwcm9wcmlhdGUoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2Rl
QmxvY2s+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0
ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFyZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxl
LCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7CisgICAgaWYgKGppdFR5cGUgPT0gY29kZUJs
b2NrLT5nZXRKSVRUeXBlKCkpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAogICAgIGlmICgh
Z2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCisgICAg
Y29kZUJsb2NrLT51bmxpbmtJbmNvbWluZ0NhbGxzKCk7CisgICAgCiAgICAgYm9vbCBkZmdDb21w
aWxlZCA9IGZhbHNlOwogICAgIGlmIChqaXRUeXBlID09IEpJVENvZGU6OkRGR0pJVCkKICAgICAg
ICAgZGZnQ29tcGlsZWQgPSBERkc6OnRyeUNvbXBpbGVGdW5jdGlvbihnbG9iYWxEYXRhLCBjb2Rl
QmxvY2suZ2V0KCksIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CkBAIC03OSw3ICs5
MCw2IEBAIGlubGluZSBib29sIGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmkKICAgICAgICAg
fQogICAgICAgICBqaXRDb2RlID0gSklUOjpjb21waWxlKCZnbG9iYWxEYXRhLCBjb2RlQmxvY2su
Z2V0KCksICZqaXRDb2RlV2l0aEFyaXR5Q2hlY2spOwogICAgIH0KLSAgICAKICAgICBjb2RlQmxv
Y2stPnNldEpJVENvZGUoaml0Q29kZSwgaml0Q29kZVdpdGhBcml0eUNoZWNrKTsKICAgICAKICAg
ICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklURXhjZXB0
aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRFeGNl
cHRpb25zLmNwcAkocmV2aXNpb24gMTA4MjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9KSVRFeGNlcHRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsNyBAQCBFeGNl
cHRpb25IYW5kbGVyIGdlbmVyaWNUaHJvdyhKU0dsb2JhbERhCiAKIEV4Y2VwdGlvbkhhbmRsZXIg
aml0VGhyb3coSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBFeGVjU3RhdGUqIGNhbGxGcmFtZSwg
SlNWYWx1ZSBleGNlcHRpb25WYWx1ZSwgUmV0dXJuQWRkcmVzc1B0ciBmYXVsdExvY2F0aW9uKQog
ewotICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBleGNlcHRp
b25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoZmF1bHRMb2Nh
dGlvbikpOworICAgIHJldHVybiBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgY2FsbEZyYW1lLCBl
eGNlcHRpb25WYWx1ZSwgY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Ynl0ZWNvZGVPZmZzZXQoY2Fs
bEZyYW1lLCBmYXVsdExvY2F0aW9uKSk7CiB9CiAKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9kcy5oCShyZXZpc2lvbiAxMDgyNDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVElubGluZU1ldGhvZHMuaAkod29ya2luZyBjb3B5KQpA
QCAtMjY1LDggKzI2NSwxMyBAQCBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjpyZXN0b3JlQXJndW1l
bnRSCiBBTFdBWVNfSU5MSU5FIHZvaWQgSklUOjp1cGRhdGVUb3BDYWxsRnJhbWUoKQogewogICAg
IEFTU0VSVChzdGF0aWNfY2FzdDxpbnQ+KG1fYnl0ZWNvZGVPZmZzZXQpID49IDApOwotICAgIGlm
IChtX2J5dGVjb2RlT2Zmc2V0KQorICAgIGlmIChtX2J5dGVjb2RlT2Zmc2V0KSB7CisjaWYgVVNF
KEpTVkFMVUUzMl82NCkKKyAgICAgICAgc3RvcmVQdHIoVHJ1c3RlZEltbVB0cihtX2NvZGVCbG9j
ay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSArIG1fYnl0ZWNvZGVPZmZzZXQgKyAxKSwgaW50VGFn
Rm9yKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkpOworI2Vsc2UKICAgICAgICAgc3RvcmUz
MihJbW0zMihtX2J5dGVjb2RlT2Zmc2V0ICsgMSksIGludFRhZ0ZvcihSZWdpc3RlckZpbGU6OkFy
Z3VtZW50Q291bnQpKTsKKyNlbmRpZgorICAgIH0KICAgICBzdG9yZVB0cihjYWxsRnJhbWVSZWdp
c3RlciwgJm1fZ2xvYmFsRGF0YS0+dG9wQ2FsbEZyYW1lKTsKIH0KIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHJldmlzaW9uIDEwODI0NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQ2LDYg
KzE0NDYsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lkLCBvcF9wdXRfYnlfaWRfCiAgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoY2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2Rl
KCkpOwogICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gc3RhY2tGcmFtZS5hcmdzWzBdLmpzVmFsdWUo
KTsKICAgICBBU1NFUlQoYmFzZVZhbHVlLmlzT2JqZWN0KCkpOworICAgIAogICAgIGFzT2JqZWN0
KGJhc2VWYWx1ZSktPnB1dERpcmVjdChjYWxsRnJhbWUtPmdsb2JhbERhdGEoKSwgaWRlbnQsIHN0
YWNrRnJhbWUuYXJnc1syXS5qc1ZhbHVlKCksIHNsb3QpOwogICAgIAogICAgIENvZGVCbG9jayog
Y29kZUJsb2NrID0gc3RhY2tGcmFtZS5jYWxsRnJhbWUtPmNvZGVCbG9jaygpOwpAQCAtMTkzMSw3
ICsxOTMyLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCwgb3B0aW1pemVfZnJvbQogICAg
IHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXggPSBzdGFja0ZyYW1lLmFyZ3NbMF0uaW50MzIoKTsKIAog
I2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCi0gICAgZGF0YUxvZygiRW50ZXJlZCBvcHRpbWl6
ZV9mcm9tX2xvb3Agd2l0aCBleGVjdXRlQ291bnRlciA9ICVkLCByZW9wdGltaXphdGlvblJldHJ5
Q291bnRlciA9ICV1LCBvcHRpbWl6YXRpb25EZWxheUNvdW50ZXIgPSAldVxuIiwgY29kZUJsb2Nr
LT5qaXRFeGVjdXRlQ291bnRlcigpLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3Vu
dGVyKCksIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOworICAgIGRhdGFM
b2coIiVwOiBFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVyID0g
JWQsIHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291
bnRlciA9ICV1XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSwg
Y29kZUJsb2NrLT5yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpLCBjb2RlQmxvY2stPm9wdGlt
aXphdGlvbkRlbGF5Q291bnRlcigpKTsKICNlbmRpZgogCiAgICAgaWYgKGNvZGVCbG9jay0+aGFz
T3B0aW1pemVkUmVwbGFjZW1lbnQoKSkgewpAQCAtMjE4Niw0NSArMjE4NywxMyBAQCBERUZJTkVf
U1RVQl9GVU5DVElPTih2b2lkKiwgb3BfY29uc3RydWN0CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAotaW5saW5lIENhbGxGcmFtZSogYXJpdHlDaGVja0ZvcihDYWxsRnJhbWUqIGNhbGxGcmFtZSwg
UmVnaXN0ZXJGaWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
LXsKLSAgICBKU0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxGcmFtZS0+Y2FsbGVl
KCkpOwotICAgIEFTU0VSVCghY2FsbGVlLT5pc0hvc3RGdW5jdGlvbigpKTsKLSAgICBDb2RlQmxv
Y2sqIG5ld0NvZGVCbG9jayA9ICZjYWxsZWUtPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRl
Y29kZUZvcihraW5kKTsKLSAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7Ci0KLSAgICAvLyBUaGlzIGVuc3Vy
ZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJvIGFyZ3Vt
ZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KLSAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+Z3Jvdyhj
YWxsRnJhbWUtPnJlZ2lzdGVycygpICsgbmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBu
ZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVlUmVnaXN0ZXJzKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICBBU1NFUlQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51
bVBhcmFtZXRlcnMoKSk7Ci0KLSAgICAvLyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwg
ZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhlbiBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGgg
dW5kZWZpbmVkLgotICAgIHNpemVfdCBkZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVy
cygpIC0gYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXM7Ci0gICAgUmVnaXN0ZXIqIHNyYyA9IGNh
bGxGcmFtZS0+cmVnaXN0ZXJzKCk7Ci0gICAgUmVnaXN0ZXIqIGRzdCA9IGNhbGxGcmFtZS0+cmVn
aXN0ZXJzKCkgKyBkZWx0YTsKLQotICAgIGludCBpOwotICAgIGludCBlbmQgPSAtQ2FsbEZyYW1l
OjpvZmZzZXRGb3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOwotICAgIGZvciAoaSA9IC0x
OyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBzcmNbaV07Ci0KLSAgICBlbmQgLT0g
ZGVsdGE7Ci0gICAgZm9yICggOyBpID49IGVuZDsgLS1pKQotICAgICAgICBkc3RbaV0gPSBqc1Vu
ZGVmaW5lZCgpOwotCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDYWxsRnJhbWU6OmNy
ZWF0ZShkc3QpOwotICAgIEFTU0VSVCgodm9pZCopbmV3Q2FsbEZyYW1lIDw9IHJlZ2lzdGVyRmls
ZS0+ZW5kKCkpOwotICAgIHJldHVybiBuZXdDYWxsRnJhbWU7Ci19Ci0KIERFRklORV9TVFVCX0ZV
TkNUSU9OKHZvaWQqLCBvcF9jYWxsX2FyaXR5Q2hlY2spCiB7CiAgICAgU1RVQl9JTklUX1NUQUNL
X0ZSQU1FKHN0YWNrRnJhbWUpOwogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0Zy
YW1lLmNhbGxGcmFtZTsKIAotICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVj
a0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ2FsbCk7Cisg
ICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tG
b3IoY2FsbEZyYW1lLCBzdGFja0ZyYW1lLnJlZ2lzdGVyRmlsZSwgQ29kZUZvckNhbGwpOwogICAg
IGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb25Gcm9tT3BD
YWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJOX0FERFJFU1MsIGNy
ZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1lKCkpKTsKIApAQCAt
MjIzNyw3ICsyMjA2LDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NvbnN0cnVj
dAogCiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZTsKIAot
ICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gYXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0
YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBDYWxsRnJhbWUq
IG5ld0NhbGxGcmFtZSA9IENvbW1vblNsb3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUs
IHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxlLCBDb2RlRm9yQ29uc3RydWN0KTsKICAgICBpZiAoIW5l
d0NhbGxGcmFtZSkKICAgICAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uRnJvbU9wQ2FsbDx2b2lk
Kj4oc3RhY2tGcmFtZSwgY2FsbEZyYW1lLCBTVFVCX1JFVFVSTl9BRERSRVNTLCBjcmVhdGVTdGFj
a092ZXJmbG93RXJyb3IoY2FsbEZyYW1lLT5jYWxsZXJGcmFtZSgpKSk7CiAKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklULmgJKHJldmlzaW9uIDEwODI0NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSlNJbnRlcmZhY2VKSVQuaAkod29ya2luZyBj
b3B5KQpAQCAtMjYsOCArMjYsMTAgQEAKICNpZm5kZWYgSlNJbnRlcmZhY2VKSVRfaAogI2RlZmlu
ZSBKU0ludGVyZmFjZUpJVF9oCiAKKyNpbmNsdWRlICJCeXRlY29kZUNvbnZlbnRpb25zLmgiCiAj
aW5jbHVkZSAiSklUQ29kZS5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNT
dHJpbmcuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXIu
aCIKICNpbmNsdWRlICJSZWdpc3RlckZpbGUuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludENvbW1vbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50Q29tbW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTElu
dENvbW1vbl9oCisjZGVmaW5lIExMSW50Q29tbW9uX2gKKworLy8gUHJpbnQgZXZlcnkgaW5zdHJ1
Y3Rpb24gZXhlY3V0ZWQuCisjZGVmaW5lIExMSU5UX0VYRUNVVElPTl9UUkFDSU5HIDAKKworLy8g
UHJpbnQgc29tZSBpbmZvcm1hdGlvbiBmb3Igc29tZSBvZiB0aGUgbW9yZSBzdWJ0bGUgc2xvdyBw
YXRocy4KKyNkZWZpbmUgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcgMAorCisvLyBEaXNhYmxlIGlu
bGluZSBhbGxvY2F0aW9uIGluIHRoZSBpbnRlcnByZXRlci4gVGhpcyBpcyBncmVhdCBpZiB5b3Un
cmUgY2hhbmdpbmcKKy8vIGhvdyB0aGUgR0MgYWxsb2NhdGVzLgorI2RlZmluZSBMTElOVF9BTFdB
WVNfQUxMT0NBVEVfU0xPVyAwCisKKy8vIEVuYWJsZSBPU1IgaW50byB0aGUgSklULiBEaXNhYmxp
bmcgdGhpcyB3aGlsZSB0aGUgTExJbnQgaXMgZW5hYmxlZCBlZmZlY3RpdmVseQorLy8gdHVybnMg
b2ZmIGFsbCBKSVQnaW5nLCBzaW5jZSBpbiBMTEludCdzIHBhcmxhbmNlLCBPU1Igc3Vic3VtZXMg
YW55IGZvcm0gb2YgSklUCisvLyBpbnZvY2F0aW9uLgorI2RlZmluZSBMTElOVF9PU1JfVE9fSklU
IDEKKworI2VuZGlmIC8vIExMSW50Q29tbW9uX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvbGxpbnQvTExJbnREYXRhLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgorCisjaWYgRU5BQkxFKExMSU5UKQor
CisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgorI2luY2x1ZGUgIkNvZGVUeXBlLmgi
CisjaW5jbHVkZSAiSW5zdHJ1Y3Rpb24uaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVy
LmgiCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJ
bnQgeworCitEYXRhOjpEYXRhKCkKKyAgICA6IG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKG5ldyBJ
bnN0cnVjdGlvblttYXhPcGNvZGVMZW5ndGggKyAxXSkKKyAgICAsIG1fb3Bjb2RlTWFwKG5ldyBP
cGNvZGVbbnVtT3Bjb2RlSURzXSkKK3sKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1heE9wY29k
ZUxlbmd0aCArIDE7ICsraSkKKyAgICAgICAgbV9leGNlcHRpb25JbnN0cnVjdGlvbnNbaV0udS5w
b2ludGVyID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhf
dHJhbXBvbGluZSk7CisjZGVmaW5lIE9QQ09ERV9FTlRSWShvcGNvZGUsIGxlbmd0aCkgbV9vcGNv
ZGVNYXBbb3Bjb2RlXSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50XyMjb3Bjb2RlKTsKKyAg
ICBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0VOVFJZKTsKKyN1bmRlZiBPUENPREVfRU5UUlkK
K30KKworI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gK
KyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV21pc3Npbmctbm9yZXR1cm4iCisj
ZW5kaWYKK3ZvaWQgRGF0YTo6cGVyZm9ybUFzc2VydGlvbnMoSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKQoreworICAgIC8vIEFzc2VydGlvbnMgdG8gbWF0Y2ggTG93TGV2ZWxJbnRlcnByZXRlci5h
c20uICBJZiB5b3UgY2hhbmdlIGFueSBvZiB0aGlzIGNvZGUsIGJlCisgICAgLy8gcHJlcGFyZWQg
dG8gY2hhbmdlIExvd0xldmVsSW50ZXJwcmV0ZXIuYXNtIGFzIHdlbGwhIQorICAgIEFTU0VSVChS
ZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUgKiA4ID09IDQ4KTsKKyAgICBBU1NFUlQo
UmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50ICogOCA9PSAtNDgpOworICAgIEFTU0VSVChSZWdp
c3RlckZpbGU6OkNhbGxlckZyYW1lICogOCA9PSAtNDApOworICAgIEFTU0VSVChSZWdpc3RlckZp
bGU6OkNhbGxlZSAqIDggPT0gLTMyKTsKKyAgICBBU1NFUlQoUmVnaXN0ZXJGaWxlOjpTY29wZUNo
YWluICogOCA9PSAtMjQpOworICAgIEFTU0VSVChSZWdpc3RlckZpbGU6OlJldHVyblBDICogOCA9
PSAtMTYpOworICAgIEFTU0VSVChSZWdpc3RlckZpbGU6OkNvZGVCbG9jayAqIDggPT0gLTgpOwor
ICAgIEFTU0VSVChDYWxsRnJhbWU6OmFyZ3VtZW50T2Zmc2V0SW5jbHVkaW5nVGhpcygwKSA9PSAt
UmVnaXN0ZXJGaWxlOjpDYWxsRnJhbWVIZWFkZXJTaXplIC0gMSk7CisjaWYgQ1BVKEJJR19FTkRJ
QU4pCisgICAgQVNTRVJUKE9CSkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBh
c0JpdHMudGFnKSA9PSAwKTsKKyAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1
ZURlc2NyaXB0b3IsIGFzQml0cy5wYXlsb2FkKSA9PSA0KTsKKyNlbHNlCisgICAgQVNTRVJUKE9C
SkVDVF9PRkZTRVRPRihFbmNvZGVkVmFsdWVEZXNjcmlwdG9yLCBhc0JpdHMudGFnKSA9PSA0KTsK
KyAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0
cy5wYXlsb2FkKSA9PSAwKTsKKyNlbmRpZgorICAgIEFTU0VSVChKU1ZhbHVlOjpJbnQzMlRhZyA9
PSAtMSk7CisgICAgQVNTRVJUKEpTVmFsdWU6OkJvb2xlYW5UYWcgPT0gLTIpOworICAgIEFTU0VS
VChKU1ZhbHVlOjpOdWxsVGFnID09IC0zKTsKKyAgICBBU1NFUlQoSlNWYWx1ZTo6VW5kZWZpbmVk
VGFnID09IC00KTsKKyAgICBBU1NFUlQoSlNWYWx1ZTo6Q2VsbFRhZyA9PSAtNSk7CisgICAgQVNT
RVJUKEpTVmFsdWU6OkVtcHR5VmFsdWVUYWcgPT0gLTYpOworICAgIEFTU0VSVChKU1ZhbHVlOjpE
ZWxldGVkVmFsdWVUYWcgPT0gLTcpOworICAgIEFTU0VSVChKU1ZhbHVlOjpMb3dlc3RUYWcgPT0g
LTcpOworICAgIEFTU0VSVChTdHJpbmdUeXBlID09IDUpOworICAgIEFTU0VSVChPYmplY3RUeXBl
ID09IDEzKTsKKyAgICBBU1NFUlQoTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9PSAxKTsKKyAgICBB
U1NFUlQoSW1wbGVtZW50c0hhc0luc3RhbmNlID09IDIpOworICAgIEFTU0VSVChJbXBsZW1lbnRz
RGVmYXVsdEhhc0luc3RhbmNlID09IDgpOworICAgIEFTU0VSVCgmZ2xvYmFsRGF0YS5oZWFwLmFs
bG9jYXRvckZvck9iamVjdFdpdGhvdXREZXN0cnVjdG9yKHNpemVvZihKU0ZpbmFsT2JqZWN0KSkg
LSAmZ2xvYmFsRGF0YS5oZWFwLmZpcnN0QWxsb2NhdG9yV2l0aG91dERlc3RydWN0b3JzKCkgPT0g
Myk7CisgICAgQVNTRVJUKEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID09IDB4NDAwMDAwMDAp
OworICAgIEFTU0VSVChHbG9iYWxDb2RlID09IDApOworICAgIEFTU0VSVChFdmFsQ29kZSA9PSAx
KTsKKyAgICBBU1NFUlQoRnVuY3Rpb25Db2RlID09IDIpOworICAgIAorICAgIC8vIEZJWE1FOiBt
YWtlIHRoZXNlIGFzc2VydGlvbnMgbGVzcyBob3JyaWJsZS4KKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CisgICAgVmVjdG9yPGludD4gdGVzdFZlY3RvcjsKKyAgICB0ZXN0VmVjdG9yLnJlc2l6ZSg0Mik7
CisgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDxzaXplX3QqPigmdGVzdFZlY3RvcilbMF0gPT0gNDIp
OworICAgIEFTU0VSVChiaXR3aXNlX2Nhc3Q8aW50Kio+KCZ0ZXN0VmVjdG9yKVsxXSA9PSB0ZXN0
VmVjdG9yLmJlZ2luKCkpOworI2VuZGlmCisKKyAgICBBU1NFUlQoU3RyaW5nSW1wbDo6c19oYXNo
RmxhZzhCaXRCdWZmZXIgPT0gNjQpOworfQorI2lmIENPTVBJTEVSKENMQU5HKQorI3ByYWdtYSBj
bGFuZyBkaWFnbm9zdGljIHBvcAorI2VuZGlmCisKK0RhdGE6On5EYXRhKCkKK3sKKyAgICBkZWxl
dGVbXSBtX2V4Y2VwdGlvbkluc3RydWN0aW9uczsKKyAgICBkZWxldGVbXSBtX29wY29kZU1hcDsK
K30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJ
TlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgTExJbnREYXRhX2gKKyNkZWZpbmUgTExJbnREYXRhX2gKKwor
I2luY2x1ZGUgIk9wY29kZS5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKworY2xhc3MgSlNHbG9iYWxEYXRhOworc3RydWN0IEluc3RydWN0aW9uOworCitu
YW1lc3BhY2UgTExJbnQgeworCisjaWYgRU5BQkxFKExMSU5UKQorY2xhc3MgRGF0YSB7CitwdWJs
aWM6CisgICAgRGF0YSgpOworICAgIH5EYXRhKCk7CisgICAgCisgICAgdm9pZCBwZXJmb3JtQXNz
ZXJ0aW9ucyhKU0dsb2JhbERhdGEmKTsKKyAgICAKKyAgICBJbnN0cnVjdGlvbiogZXhjZXB0aW9u
SW5zdHJ1Y3Rpb25zKCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2V4Y2VwdGlvbkluc3RydWN0
aW9uczsKKyAgICB9CisgICAgCisgICAgT3Bjb2RlKiBvcGNvZGVNYXAoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fb3Bjb2RlTWFwOworICAgIH0KK3ByaXZhdGU6CisgICAgSW5zdHJ1Y3Rpb24q
IG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIE9wY29kZSogbV9vcGNvZGVNYXA7Cit9Owor
I2Vsc2UgLy8gRU5BQkxFKExMSU5UKQorCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcHVzaAorI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1X
bWlzc2luZy1ub3JldHVybiIKKyNlbmRpZgorCitjbGFzcyBEYXRhIHsKK3B1YmxpYzoKKyAgICB2
b2lkIHBlcmZvcm1Bc3NlcnRpb25zKEpTR2xvYmFsRGF0YSYpIHsgfQorCisgICAgSW5zdHJ1Y3Rp
b24qIGV4Y2VwdGlvbkluc3RydWN0aW9ucygpCisgICAgeworICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAorICAgIE9wY29kZSogb3Bj
b2RlTWFwKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBy
ZXR1cm4gMDsKKyAgICB9Cit9OworCisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJhZ21hIGNsYW5n
IGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBMTEludERhdGFfaAorCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50cy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2ludHMuY3Bw
CShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlw
b2ludHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJMTEludEVudHJ5cG9pbnRzLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRl
ICJKSVRDb2RlLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCisjaW5jbHVkZSAiTExJbnRU
aHVua3MuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgiCisKK25hbWVzcGFjZSBK
U0MgeyBuYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCwgSklUQ29k
ZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBhcml0eUNoZWNrKQoreworICAgIGlm
ICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkgeworICAgICAgICBpZiAoa2luZCA9PSBDb2RlRm9y
Q2FsbCkgeworICAgICAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNy
b0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxl
ckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJv
bG9ndWUpKSkpOworICAgICAgICAgICAgYXJpdHlDaGVjayA9IE1hY3JvQXNzZW1ibGVyQ29kZVB0
cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVj
aykpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKGtp
bmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAgICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0
RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVmOjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYo
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9u
X2Zvcl9jb25zdHJ1Y3RfcHJvbG9ndWUpKSkpOworICAgICAgICBhcml0eUNoZWNrID0gTWFjcm9B
c3NlbWJsZXJDb2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlfY2hlY2spKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkgeworICAgICAgICBqaXRDb2RlID0gSklUQ29kZShn
bG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvciks
IEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworICAgICAgICBhcml0eUNoZWNrID0gZ2xvYmFs
RGF0YS5nZXRDVElTdHViKGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvciku
Y29kZSgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgQVNTRVJUKGtpbmQgPT0gQ29k
ZUZvckNvbnN0cnVjdCk7CisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElT
dHViKGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6Oklu
dGVycHJldGVyVGh1bmspOworICAgIGFyaXR5Q2hlY2sgPSBnbG9iYWxEYXRhLmdldENUSVN0dWIo
ZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IpLmNvZGUoKTsKK30K
Kwordm9pZCBnZXRFdmFsRW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIEpJVENv
ZGUmIGppdENvZGUpCit7CisgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAg
ICAgIGppdENvZGUgPSBKSVRDb2RlOjpIb3N0RnVuY3Rpb24oTWFjcm9Bc3NlbWJsZXJDb2RlUmVm
OjpjcmVhdGVTZWxmTWFuYWdlZENvZGVSZWYoTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oJmxsaW50X2V2YWxfcHJvbG9ndWUpKSkpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIGppdENvZGUgPSBKSVRDb2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1Yihl
dmFsRW50cnlUaHVua0dlbmVyYXRvciksIEpJVENvZGU6OkludGVycHJldGVyVGh1bmspOworfQor
Cit2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgSklU
Q29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsKKyAg
ICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVS
ZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lz
ZV9jYXN0PHZvaWQqPigmbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSkpKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElT
dHViKHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVu
ayk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxF
KExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RW50cnlwb2lu
dHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRy
eXBvaW50cy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50RW50cnlwb2ludHMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RW50cnlw
b2ludHNfaAorI2RlZmluZSBMTEludEVudHJ5cG9pbnRzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCisjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0
aW9uS2luZC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgRXZhbENvZGVCbG9jazsKK2Ns
YXNzIEpJVENvZGU7CitjbGFzcyBKU0dsb2JhbERhdGE7CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNv
ZGVQdHI7CitjbGFzcyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY7CitjbGFzcyBQcm9ncmFtQ29kZUJs
b2NrOworCituYW1lc3BhY2UgTExJbnQgeworCit2b2lkIGdldEZ1bmN0aW9uRW50cnlwb2ludChK
U0dsb2JhbERhdGEmLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kLCBKSVRDb2RlJiwgTWFjcm9Bc3Nl
bWJsZXJDb2RlUHRyJiBhcml0eUNoZWNrKTsKK3ZvaWQgZ2V0RXZhbEVudHJ5cG9pbnQoSlNHbG9i
YWxEYXRhJiwgSklUQ29kZSYpOwordm9pZCBnZXRQcm9ncmFtRW50cnlwb2ludChKU0dsb2JhbERh
dGEmLCBKSVRDb2RlJik7CisKK2lubGluZSB2b2lkIGdldEVudHJ5cG9pbnQoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBFdmFsQ29kZUJsb2NrKiwgSklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBn
ZXRFdmFsRW50cnlwb2ludChnbG9iYWxEYXRhLCBqaXRDb2RlKTsKK30KKworaW5saW5lIHZvaWQg
Z2V0RW50cnlwb2ludChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIFByb2dyYW1Db2RlQmxvY2sq
LCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGdldFByb2dyYW1FbnRyeXBvaW50KGdsb2JhbERh
dGEsIGppdENvZGUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlm
IC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50RW50cnlwb2ludHNfaApJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5jcHAJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25z
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TExJbnRFeGNlcHRpb25zLmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJDYWxs
RnJhbWUuaCIKKyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJJbnN0cnVjdGlvbi5o
IgorI2luY2x1ZGUgIkpJVEV4Y2VwdGlvbnMuaCIKKyNpbmNsdWRlICJMTEludENvbW1vbi5oIgor
I2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVz
cGFjZSBMTEludCB7CisKK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0
YSgpOworI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCisgICAgZGF0YUxvZygiVGhyb3dpbmcg
ZXhjZXB0aW9uICVzLlxuIiwgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLmRlc2NyaXB0aW9uKCkpOwor
I2VuZGlmCisgICAgZ2VuZXJpY1Rocm93KAorICAgICAgICBnbG9iYWxEYXRhLCBleGVjLT5jYWxs
ZXJGcmFtZSgpLCBnbG9iYWxEYXRhLT5leGNlcHRpb24sCisgICAgICAgIGV4ZWMtPmNhbGxlckZy
YW1lKCktPmNvZGVCbG9jaygpLT5ieXRlY29kZU9mZnNldChleGVjLT5jYWxsZXJGcmFtZSgpLCBl
eGVjLT5yZXR1cm5QQygpKSk7Cit9CisKK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhy
b3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gZXhlYy0+Z2xvYmFs
RGF0YSgpLmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVjdGlvbnMoKTsKK30KKworSW5zdHJ1Y3Rp
b24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7Cisg
ICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBM
TElOVF9TTE9XX1BBVEhfVFJBQ0lORworICAgIGRhdGFMb2coIlRocm93aW5nIGV4Y2VwdGlvbiAl
cyAocmV0dXJuVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24o
KSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0
YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpKTsKKyAgICAKKyAgICByZXR1cm4gZ2xvYmFsRGF0YS0+bGxpbnREYXRhLmV4Y2VwdGlvbklu
c3RydWN0aW9ucygpOworfQorCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3RhdGUqIGV4ZWMsIElu
c3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+
Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCisgICAgZGF0YUxvZygi
VGhyb3dpbmcgZXhjZXB0aW9uICVzIChjYWxsVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRhLT5leGNl
cHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0
YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5p
bnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAKKyAgICByZXR1cm4gYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJhbXBvbGluZSk7Cit9CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhjZXB0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2VwdGlvbnMuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RXhjZXB0aW9uc19oCisjZGVmaW5lIExMSW50
RXhjZXB0aW9uc19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYv
U3RkTGliRXh0cmFzLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTElu
dCB7CisKKy8vIFRocm93IHRoZSBjdXJyZW50bHkgYWN0aXZlIGV4Y2VwdGlvbiBpbiB0aGUgY29u
dGV4dCBvZiB0aGUgY2FsbGVyJ3MgY2FsbCBmcmFtZS4KK3ZvaWQgaW50ZXJwcmV0ZXJUaHJvd0lu
Q2FsbGVyKEV4ZWNTdGF0ZSopOworCisvLyBUZWxscyB5b3Ugd2hlcmUgdG8ganVtcCB0byBpZiB5
b3Ugd2FudCB0byByZXR1cm4tdG8tdGhyb3csIGFmdGVyIHlvdSd2ZSBhbHJlYWR5CisvLyBzZXQg
dXAgYWxsIGluZm9ybWF0aW9uIG5lZWRlZCB0byB0aHJvdyB0aGUgZXhjZXB0aW9uLgorSW5zdHJ1
Y3Rpb24qIHJldHVyblRvVGhyb3dGb3JUaHJvd25FeGNlcHRpb24oRXhlY1N0YXRlKik7CisKKy8v
IFNhdmVzIHRoZSBjdXJyZW50IFBDIGluIHRoZSBnbG9iYWwgZGF0YSBmb3Igc2FmZS1rZWVwaW5n
LCBhbmQgZ2l2ZXMgeW91IGEgUEMKKy8vIHRoYXQgeW91IGNhbiB0ZWxsIHRoZSBpbnRlcnByZXRl
ciB0byBnbyB0bywgd2hpY2ggd2hlbiBhZHZhbmNlZCBiZXR3ZWVuIDEKKy8vIGFuZCA5IHNsb3Rz
IHdpbGwgZ2l2ZSB5b3UgYW4gImluc3RydWN0aW9uIiB0aGF0IHRocmVhZHMgdG8gdGhlIGludGVy
cHJldGVyJ3MKKy8vIGV4Y2VwdGlvbiBoYW5kbGVyLiBOb3RlIHRoYXQgaWYgeW91IGdpdmUgaXQg
dGhlIFBDIGZvciBleGNlcHRpb24gaGFuZGxpbmcsCisvLyBpdCdzIHNtYXJ0IGVub3VnaCB0byBq
dXN0IHJldHVybiB0aGF0IFBDIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcgZWxzZTsgdGhpcworLy8g
bGV0cyB5b3UgdGhyZWFkIGV4Y2VwdGlvbiBoYW5kbGluZyB0aHJvdWdoIGNvbW1vbiBoZWxwZXIg
ZnVuY3Rpb25zIHVzZWQgYnkKKy8vIG90aGVyIGhlbHBlcnMuCitJbnN0cnVjdGlvbiogcmV0dXJu
VG9UaHJvdyhFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiopOworCisvLyBVc2UgdGhpcyB3aGVuIHlv
dSdyZSB0aHJvd2luZyB0byBhIGNhbGwgdGh1bmsuCit2b2lkKiBjYWxsVG9UaHJvdyhFeGVjU3Rh
dGUqLCBJbnN0cnVjdGlvbiopOworCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2Vu
ZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExMSW50RXhjZXB0aW9uc19oCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2ZmbGluZUFzbUNv
bmZpZy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
T2ZmbGluZUFzbUNvbmZpZy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkwIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRPZmZs
aW5lQXNtQ29uZmlnX2gKKyNkZWZpbmUgTExJbnRPZmZsaW5lQXNtQ29uZmlnX2gKKworI2luY2x1
ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KKyNpbmNsdWRl
IDx3dGYvSW5saW5lQXNtLmg+CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBDUFUo
WDg2KQorI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9B
U01fWDg2IDAKKyNlbmRpZgorCisjaWYgQ1BVKEFSTV9USFVNQjIpCisjZGVmaW5lIE9GRkxJTkVf
QVNNX0FSTXY3IDEKKyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FSTXY3IDAKKyNlbmRpZgor
CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxF
RCAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BU1NFUlRfRU5BQkxFRCAwCisjZW5kaWYK
KworI2lmIENQVShCSUdfRU5ESUFOKQorI2RlZmluZSBPRkZMSU5FX0FTTV9CSUdfRU5ESUFOIDEK
KyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMAorI2VuZGlmCisKKyNpZiBM
TElOVF9PU1JfVE9fSklUCisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDEKKyNlbHNl
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0pJVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgTExJTlRf
RVhFQ1VUSU9OX1RSQUNJTkcKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcg
MQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01fRVhFQ1VUSU9OX1RSQUNJTkcgMAorI2VuZGlm
CisKKyNpZiBMTElOVF9BTFdBWVNfQUxMT0NBVEVfU0xPVworI2RlZmluZSBPRkZMSU5FX0FTTV9B
TFdBWVNfQUxMT0NBVEVfU0xPVyAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9BTFdBWVNf
QUxMT0NBVEVfU0xPVyAwCisjZW5kaWYKKworI2lmIENQVShBUk1fVEhVTUIyKQorI2RlZmluZSBP
RkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwobGFiZWwpICAgICAgICAgIFwKKyAgICAiLmdsb2JsICIg
U1lNQk9MX1NUUklORyhsYWJlbCkgIlxuIiAgICAgICAgICBcCisgICAgSElERV9TWU1CT0wobmFt
ZSkgIlxuIiAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICIudGh1bWJcbiIgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiLnRodW1iX2Z1bmMgIiBUSFVNQl9GVU5D
X1BBUkFNKGxhYmVsKSAiXG4iICBcCisgICAgU1lNQk9MX1NUUklORyhsYWJlbCkgIjpcbiIKKyNl
bHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0dMT0JBTF9MQUJFTChsYWJlbCkgICAgICAgICBcCisg
ICAgIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcobGFiZWwpICJcbiIgICAgICAgICBcCisgICAgSElE
RV9TWU1CT0wobmFtZSkgIlxuIiAgICAgICAgICAgICAgICAgICAgICBcCisgICAgU1lNQk9MX1NU
UklORyhsYWJlbCkgIjpcbiIKKyNlbmRpZgorCisjZW5kaWYgLy8gTExJbnRPZmZsaW5lQXNtQ29u
ZmlnX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dE9mZnNldHNFeHRyYWN0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAi
RXhlY3V0YWJsZS5oIgorI2luY2x1ZGUgIkhlYXAuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgorI2luY2x1ZGUgIkpJVFN0dWJzLmgiCisjaW5jbHVkZSAiSlNBcnJheS5oIgorI2luY2x1ZGUg
IkpTQ2VsbC5oIgorI2luY2x1ZGUgIkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJKU0dsb2JhbERh
dGEuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisjaW5jbHVkZSAiSlNQcm9wZXJ0eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RyaW5n
LmgiCisjaW5jbHVkZSAiSlNUeXBlSW5mby5oIgorI2luY2x1ZGUgIkpTVmFyaWFibGVPYmplY3Qu
aCIKKyNpbmNsdWRlICJKdW1wVGFibGUuaCIKKyNpbmNsdWRlICJMTEludE9mZmxpbmVBc21Db25m
aWcuaCIKKyNpbmNsdWRlICJNYXJrZWRTcGFjZS5oIgorI2luY2x1ZGUgIlJlZ2lzdGVyRmlsZS5o
IgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKKyNpbmNsdWRlICJTdHJ1Y3R1cmUuaCIKKyNpbmNs
dWRlICJTdHJ1Y3R1cmVDaGFpbi5oIgorI2luY2x1ZGUgIlZhbHVlUHJvZmlsZS5oIgorI2luY2x1
ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNkZWZpbmUg
T0ZGTElORV9BU01fT0ZGU0VUT0YoY2xhenosIGZpZWxkKSBPQkpFQ1RfT0ZGU0VUT0YoY2xhenos
IGZpZWxkKQorCitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3IgeworcHVibGljOgorICAgIHN0
YXRpYyBjb25zdCB1bnNpZ25lZCogZHVtbXkoKTsKK307CisKK2NvbnN0IHVuc2lnbmVkKiBMTElu
dE9mZnNldHNFeHRyYWN0b3I6OmR1bW15KCkKK3sKKy8vIFRoaXMgaXMgYSBmaWxlIGdlbmVyYXRl
ZCBieSBvZmZsaW5lYXNtL2dlbmVyYXRlX29mZnNldHNfZXh0cmFjdG9yLnJiLCBhbmQgY29udGFp
bnMgY29kZQorLy8gdG8gY3JlYXRlIGEgdGFibGUgb2Ygb2Zmc2V0cywgc2l6ZXMsIGFuZCBhIGhl
YWRlciBpZGVudGlmeWluZyB3aGF0IGNvbWJpbmF0aW9uIG9mCisvLyBQbGF0Zm9ybS5oIG1hY3Jv
cyB3ZSBoYXZlIHNldC4gV2UgaW5jbHVkZSBpdCBpbnNpZGUgb2YgYSBtZXRob2Qgb24gTExJbnRP
ZmZzZXRzRXh0cmFjdG9yCisvLyBiZWNhdXNlIHRoZSBmaWVsZHMgd2hvc2Ugb2Zmc2V0cyB3ZSdy
ZSBleHRyYWN0aW5nIGFyZSBtb3N0bHkgcHJpdmF0ZS4gU28gd2UgbWFrZSB0aGVpcgorLy8gY2xh
c3NlcyBmcmllbmRzIHdpdGggTExJbnRPZmZzZXRzRXh0cmFjdG9yLCBhbmQgaW5jbHVkZSB0aGUg
aGVhZGVyIGhlcmUsIHRvIGdldCB0aGUgQysrCisvLyBjb21waWxlciB0byBraW5kbHkgc3RlcCBh
c2lkZSBhbmQgeWllbGQgdG8gb3VyIGJlc3QgaW50ZW50aW9ucy4KKyNpbmNsdWRlICJMTEludERl
c2lyZWRPZmZzZXRzLmgiCisgICAgcmV0dXJuIGV4dHJhY3RvclRhYmxlOworfQorCit9IC8vIG5h
bWVzcGFjZSBKU0MKKworaW50IG1haW4oaW50LCBjaGFyKiopCit7CisgICAgLy8gT3V0IG9mIGFu
IGFidW5kYW5jZSBvZiBjYXV0aW9uLCBtYWtlIHN1cmUgdGhhdCBMTEludE9mZnNldHNFeHRyYWN0
b3I6OmR1bW15KCkgaXMgbGl2ZSwKKyAgICAvLyBhbmQgdGhlIGV4dHJhY3RvclRhYmxlIGlzIGxp
dmUsIHRvby4KKyAgICBwcmludGYoIiVwXG4iLCBKU0M6OkxMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6
ZHVtbXkoKSk7CisgICAgcmV0dXJuIDA7Cit9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE1NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50U2xvd1BhdGhzLmgi
CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJBcmd1bWVudHMuaCIKKyNpbmNsdWRl
ICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJDb21tb25TbG93UGF0aHMuaCIKKyNpbmNsdWRlICJH
ZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0Q2FsbFJldHVyblZhbHVlLmgiCisjaW5jbHVk
ZSAiSW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJKSVQuaCIKKyNpbmNsdWRlICJKSVREcml2ZXIu
aCIKKyNpbmNsdWRlICJKU0FjdGl2YXRpb24uaCIKKyNpbmNsdWRlICJKU0J5dGVBcnJheS5oIgor
I2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmgiCisjaW5jbHVkZSAiSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvci5oIgorI2luY2x1ZGUgIkpTU3RhdGljU2NvcGVPYmplY3QuaCIKKyNpbmNs
dWRlICJKU1N0cmluZy5oIgorI2luY2x1ZGUgIkpTVmFsdWUuaCIKKyNpbmNsdWRlICJMTEludENv
bW1vbi5oIgorI2luY2x1ZGUgIkxMSW50RXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxvd0xldmVs
SW50ZXJwcmV0ZXIuaCIKKyNpbmNsdWRlICJPcGVyYXRpb25zLmgiCisKK25hbWVzcGFjZSBKU0Mg
eyBuYW1lc3BhY2UgTExJbnQgeworCisjZGVmaW5lIExMSU5UX0JFR0lOX05PX1NFVF9QQygpIFwK
KyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBleGVjLT5nbG9iYWxEYXRhKCk7ICAgICAg
XAorICAgIE5hdGl2ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIoJmdsb2JhbERhdGEsIGV4ZWMpCisK
KyNkZWZpbmUgTExJTlRfU0VUX1BDX0ZPUl9TVFVCUygpIFwKKyAgICBleGVjLT5zZXRDdXJyZW50
VlBDKHBjICsgMSkKKworI2RlZmluZSBMTElOVF9CRUdJTigpICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOyAgICAgICAgICAgICAgICAgICAg
XAorICAgIExMSU5UX1NFVF9QQ19GT1JfU1RVQlMoKQorCisjZGVmaW5lIExMSU5UX09QKGluZGV4
KSAoZXhlYy0+dW5jaGVja2VkUihwY1tpbmRleF0udS5vcGVyYW5kKSkKKyNkZWZpbmUgTExJTlRf
T1BfQyhpbmRleCkgKGV4ZWMtPnIocGNbaW5kZXhdLnUub3BlcmFuZCkpCisKKyNkZWZpbmUgTExJ
TlRfUkVUVVJOX1RXTyhmaXJzdCwgc2Vjb25kKSBkbyB7ICAgICAgIFwKKyAgICAgICAgdW5pb24g
eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHN0cnVj
dCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB2b2lk
KiBhOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICB2b2lkKiBi
OyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIH0gcGFpcjsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGludDY0X3QgaTsgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSBfX3J0X3U7ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX19ydF91LnBhaXIuYSA9IGZpcnN0OyAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX19ydF91LnBhaXIuYiA9IHNlY29uZDsgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIF9fcnRfdS5pOyAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9FTkRfSU1Q
TCgpIExMSU5UX1JFVFVSTl9UV08ocGMsIGV4ZWMpCisKKyNkZWZpbmUgTExJTlRfVEhST1coZXhj
ZXB0aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZ2xv
YmFsRGF0YS5leGNlcHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgICAgIFwK
KyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBM
TElOVF9DSEVDS19FWENFUFRJT04oKSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAg
IGlmIChVTkxJS0VMWShnbG9iYWxEYXRhLmV4Y2VwdGlvbikpIHsgICAgICAgICAgIFwKKyAgICAg
ICAgICAgIHBjID0gcmV0dXJuVG9UaHJvdyhleGVjLCBwYyk7ICAgICAgICAgICAgICAgXAorICAg
ICAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
KyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9FTkQoKSBkbyB7ICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAg
ICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0JSQU5DSChvcGNvZGUs
IGNvbmRpdGlvbikgZG8geyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGJvb2wgX19i
X2NvbmRpdGlvbiA9IChjb25kaXRpb24pOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIGlmIChfX2JfY29uZGl0aW9uKSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBwYyArPSBwY1tPUENPREVfTEVOR1RIKG9w
Y29kZSkgLSAxXS51Lm9wZXJhbmQ7ICAgICAgICBcCisgICAgICAgIGVsc2UgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBw
YyArPSBPUENPREVfTEVOR1RIKG9wY29kZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisg
ICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfUkVUVVJOKHZh
bHVlKSBkbyB7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNWYWx1ZSBfX3JfcmV0dXJuVmFs
dWUgPSAodmFsdWUpOyAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7ICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfT1AoMSkgPSBfX3JfcmV0dXJuVmFsdWU7ICAg
ICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwoKTsgICAgICAgICAgICAgICAgICAgICAg
IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fUFJPRklMRUQo
b3Bjb2RlLCB2YWx1ZSkgZG8geyAgICAgICAgICAgICAgIFwKKyAgICAgICAgSlNWYWx1ZSBfX3Jw
X3JldHVyblZhbHVlID0gKHZhbHVlKTsgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExM
SU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBMTElOVF9PUCgxKSA9IF9fcnBfcmV0dXJuVmFsdWU7ICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKKyAgICAgICAgcGNbT1BDT0RFX0xFTkdUSChvcGNvZGUpIC0gMV0udS5wcm9maWxl
LT5tX2J1Y2tldHNbMF0gPSBcCisgICAgICAgICAgICBKU1ZhbHVlOjplbmNvZGUoX19ycF9yZXR1
cm5WYWx1ZSk7ICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9FTkRfSU1QTCgpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChmYWxz
ZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0VORF9JTVBMKGV4ZWMsIGNhbGxUYXJnZXQpIExMSU5U
X1JFVFVSTl9UV08oKGNhbGxUYXJnZXQpLCAoZXhlYykpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9U
SFJPVyhleGVjLCBwYywgZXhjZXB0aW9uVG9UaHJvdykgZG8geyAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgRXhlY1N0YXRlKiBfX2N0X2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY3RfcGMgPSAocGMpOyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZ2xvYmFsRGF0YS5leGNl
cHRpb24gPSAoZXhjZXB0aW9uVG9UaHJvdyk7ICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAg
ICAgTExJTlRfQ0FMTF9FTkRfSU1QTChfX2N0X2V4ZWMsIGNhbGxUb1Rocm93KF9fY3RfZXhlYywg
X19jdF9wYykpOyBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgTExJTlRfQ0FMTF9D
SEVDS19FWENFUFRJT04oZXhlYywgcGMpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgRXhlY1N0YXRlKiBfX2NjZV9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIF9fY2NlX3BjID0gKHBjKTsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGds
b2JhbERhdGEuZXhjZXB0aW9uKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY2NlX2V4ZWMsIGNhbGxUb1Rocm93KF9fY2Nl
X2V4ZWMsIF9fY2NlX3BjKSk7IFwKKyAgICB9IHdoaWxlIChmYWxzZSkKKworI2RlZmluZSBMTElO
VF9DQUxMX1JFVFVSTihleGVjLCBwYywgY2FsbFRhcmdldCkgZG8geyAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3JfZXhlYyA9IChleGVjKTsgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJbnN0cnVjdGlvbiogX19jcl9wYyA9IChw
Yyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB2b2lkKiBf
X2NyX2NhbGxUYXJnZXQgPSAoY2FsbFRhcmdldCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihfX2NyX2V4ZWMtPmNhbGxlckZy
YW1lKCksIF9fY3JfcGMpOyAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBMKF9fY3JfZXhl
YywgX19jcl9jYWxsVGFyZ2V0KTsgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNl
KQorCitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4
ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFu
ZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGRhdGFMb2coIiVwIC8gJXA6IGV4ZWN1dGlu
ZyBiYyMlenUsIG9wIyV1OiBUcmFjZSglZCk6ICVkOiAlZFxuIiwKKyAgICAgICAgICAgIGV4ZWMt
PmNvZGVCbG9jaygpLAorICAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgIHN0YXRpY19jYXN0
PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
KSwKKyAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICAgZnJvbVdoZXJlLAorICAgICAgICAgICAg
b3BlcmFuZCwKKyAgICAgICAgICAgIHBjW29wZXJhbmRdLnUub3BlcmFuZCk7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX3Zh
bHVlKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBpbnQgZnJvbVdoZXJlLCBpbnQg
b3BlcmFuZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElO
VF9PUF9DKG9wZXJhbmQpLmpzVmFsdWUoKTsKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7
CisgICAgICAgICAgICB1aW50MzJfdCB0YWc7CisgICAgICAgICAgICB1aW50MzJfdCBwYXlsb2Fk
OworICAgICAgICB9IGJpdHM7CisgICAgICAgIEVuY29kZWRKU1ZhbHVlIGFzVmFsdWU7CisgICAg
fSB1OworICAgIHUuYXNWYWx1ZSA9IEpTVmFsdWU6OmVuY29kZSh2YWx1ZSk7CisgICAgZGF0YUxv
ZygiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNlKCVkKTogJWQ6ICVkOiAl
MDh4OiUwOHg6ICVzXG4iLAorICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAg
ICAgICBleGVjLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+
Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICAgZXhlYy0+
Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisg
ICAgICAgICAgICBmcm9tV2hlcmUsCisgICAgICAgICAgICBvcGVyYW5kLAorICAgICAgICAgICAg
cGNbb3BlcmFuZF0udS5vcGVyYW5kLAorICAgICAgICAgICAgdS5iaXRzLnRhZywKKyAgICAgICAg
ICAgIHUuYml0cy5wYXlsb2FkLAorICAgICAgICAgICAgdmFsdWUuZGVzY3JpcHRpb24oKSk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlX3Byb2xvZ3Vl
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgZGF0YUxvZygiJXAgLyAlcDogaW4gcHJvbG9n
dWUuXG4iLCBleGVjLT5jb2RlQmxvY2soKSwgZXhlYyk7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K3N0YXRpYyB2b2lkIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IGNoYXIqIGNvbW1lbnQsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBKU0Z1
bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBGdW5jdGlv
bkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmpzRXhlY3V0YWJsZSgpOworICAgIENv
ZGVCbG9jayogY29kZUJsb2NrID0gJmV4ZWN1dGFibGUtPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtp
bmQpOworICAgIGRhdGFMb2coIiVwIC8gJXA6IGluICVzIG9mIGZ1bmN0aW9uICVwLCBleGVjdXRh
YmxlICVwOyBudW1WYXJzID0gJXUsIG51bVBhcmFtZXRlcnMgPSAldSwgbnVtQ2FsbGVlUmVnaXN0
ZXJzID0gJXUuXG4iLAorICAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBjb21tZW50LCBjYWxs
ZWUsIGV4ZWN1dGFibGUsCisgICAgICAgICAgICBjb2RlQmxvY2stPm1fbnVtVmFycywgY29kZUJs
b2NrLT5udW1QYXJhbWV0ZXJzKCksIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpOwor
fQorCitMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2Fs
bCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVj
LCAiY2FsbCBwcm9sb2d1ZSIsIENvZGVGb3JDYWxsKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2VfcHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVj
LCAiY29uc3RydWN0IHByb2xvZ3VlIiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRfRU5E
KCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICB0cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywg
ImNhbGwgYXJpdHkgY2hlY2siLCBDb2RlRm9yQ2FsbCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisK
K0xMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIHRyYWNlRnVuY3Rpb25Qcm9sb2d1ZShleGVjLCAiY29u
c3RydWN0IGFyaXR5IGNoZWNrIiwgQ29kZUZvckNvbnN0cnVjdCk7CisgICAgTExJTlRfRU5EKCk7
Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgZGF0YUxvZygiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgJXMsIHNjb3BlICVwXG4i
LAorICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAgICAgICBleGVjLAorICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+Y29kZUJsb2NrKCktPmlu
c3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICAgb3Bjb2RlTmFtZXNbZXhlYy0+Z2xv
YmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSldLAorICAg
ICAgICAgICAgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfU0xPV19QQVRIX0RFQ0woc3BlY2lhbF90cmFjZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIGRhdGFMb2coIiVwIC8gJXA6IGV4ZWN1dGluZyBzcGVjaWFsIGNhc2UgYmMjJXp1LCBvcCMl
dSwgcmV0dXJuIFBDIGlzICVwXG4iLAorICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisg
ICAgICAgICAgICBleGVjLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0g
ZXhlYy0+Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICAg
ZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29k
ZSksCisgICAgICAgICAgICBleGVjLT5yZXR1cm5QQygpLnZhbHVlKCkpOworICAgIExMSU5UX0VO
RCgpOworfQorCitpbmxpbmUgYm9vbCBzaG91bGRKSVQoRXhlY1N0YXRlKiBleGVjKQoreworICAg
IC8vIFlvdSBjYW4gbW9kaWZ5IHRoaXMgdG8gdHVybiBvZmYgSklUdGluZyB3aXRob3V0IHJlYnVp
bGRpbmcgdGhlIHdvcmxkLgorICAgIHJldHVybiBleGVjLT5nbG9iYWxEYXRhKCkuY2FuVXNlSklU
KCk7Cit9CisKK2VudW0gRW50cnlLaW5kIHsgUHJvbG9ndWUsIEFyaXR5Q2hlY2sgfTsKK3N0YXRp
YyBTbG93UGF0aFJldHVyblR5cGUgZW50cnlPU1IoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlv
biogcGMsIENvZGVCbG9jayogY29kZUJsb2NrLCBjb25zdCBjaGFyICpuYW1lLCBFbnRyeUtpbmQg
a2luZCkKK3sKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIGRhdGFMb2coIiVwOiBF
bnRlcmVkICVzIHdpdGggZXhlY3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBuYW1lLCBj
b2RlQmxvY2stPmxsaW50RXhlY3V0ZUNvdW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAo
IXNob3VsZEpJVChleGVjKSkgeworICAgICAgICBjb2RlQmxvY2stPmRvbnRKSVRBbnl0aW1lU29v
bigpOworICAgICAgICBMTElOVF9SRVRVUk5fVFdPKDAsIGV4ZWMpOworICAgIH0KKyAgICBpZiAo
IWNvZGVCbG9jay0+aml0Q29tcGlsZShleGVjLT5nbG9iYWxEYXRhKCkpKSB7CisjaWYgRU5BQkxF
KEpJVF9WRVJCT1NFX09TUikKKyAgICAgICAgZGF0YUxvZygiICAgIENvZGUgd2FzIGFscmVhZHkg
Y29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgIH0KKyAgICBjb2RlQmxvY2stPmppdFNvb24oKTsK
KyAgICBpZiAoa2luZCA9PSBQcm9sb2d1ZSkKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhjb2Rl
QmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRhYmxlQWRkcmVzc0F0T2Zmc2V0KDApLCBleGVjKTsK
KyAgICBBU1NFUlQoa2luZCA9PSBBcml0eUNoZWNrKTsKKyAgICBMTElOVF9SRVRVUk5fVFdPKGNv
ZGVCbG9jay0+Z2V0SklUQ29kZVdpdGhBcml0eUNoZWNrKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSwg
ZXhlYyk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKGVudHJ5X29zcikKK3sKKyAgICByZXR1
cm4gZW50cnlPU1IoZXhlYywgcGMsIGV4ZWMtPmNvZGVCbG9jaygpLCAiZW50cnlfb3NyIiwgUHJv
bG9ndWUpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9y
X2NhbGwpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVj
LT5jYWxsZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9y
Q2FsbCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGwiLCBQcm9sb2d1ZSk7Cit9CisKK0xM
SU5UX1NMT1dfUEFUSF9ERUNMKGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY29uc3RydWN0KQorewor
ICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkp
LT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNvbnN0cnVjdCks
ICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCIsIFByb2xvZ3VlKTsKK30KKworTExJ
TlRfU0xPV19QQVRIX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5Q2hlY2sp
Cit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCAmYXNGdW5jdGlvbihleGVjLT5jYWxs
ZWUoKSktPmpzRXhlY3V0YWJsZSgpLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihDb2RlRm9yQ2FsbCks
ICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOwor
fQorCitMTElOVF9TTE9XX1BBVEhfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVj
dF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBwYywgJmFzRnVuY3Rp
b24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Io
Q29kZUZvckNvbnN0cnVjdCksICJlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0
eUNoZWNrIiwgQXJpdHlDaGVjayk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKGxvb3Bfb3Ny
KQoreworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAg
CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKKyAgICBkYXRhTG9nKCIlcDogRW50ZXJlZCBs
b29wX29zciB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWRcbiIsIGNvZGVCbG9jaywgY29kZUJsb2Nr
LT5sbGludEV4ZWN1dGVDb3VudGVyKCkpOworI2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91bGRK
SVQoZXhlYykpIHsKKyAgICAgICAgY29kZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAg
ICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCBleGVjKTsKKyAgICB9CisgICAgCisgICAgaWYgKCFj
b2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShK
SVRfVkVSQk9TRV9PU1IpCisgICAgICAgIGRhdGFMb2coIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNv
bXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICB9CisgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7Cisg
ICAgCisgICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2Vs
aW5lSklUKTsKKyAgICAKKyAgICBWZWN0b3I8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0PiBtYXA7
CisgICAgY29kZUJsb2NrLT5qaXRDb2RlTWFwKCktPmRlY29kZShtYXApOworICAgIEJ5dGVjb2Rl
QW5kTWFjaGluZU9mZnNldCogbWFwcGluZyA9IGJpbmFyeVNlYXJjaDxCeXRlY29kZUFuZE1hY2hp
bmVPZmZzZXQsIHVuc2lnbmVkLCBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQ6OmdldEJ5dGVjb2Rl
SW5kZXg+KG1hcC5iZWdpbigpLCBtYXAuc2l6ZSgpLCBwYyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKSk7CisgICAgQVNTRVJUKG1hcHBpbmcpOworICAgIEFTU0VSVChtYXBwaW5n
LT5tX2J5dGVjb2RlSW5kZXggPT0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHBjIC0gY29kZUJsb2Nr
LT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSk7CisgICAgCisgICAgdm9pZCoganVtcFRhcmdldCA9
IGNvZGVCbG9jay0+Z2V0SklUQ29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzQXRPZmZzZXQobWFwcGlu
Zy0+bV9tYWNoaW5lQ29kZU9mZnNldCk7CisgICAgQVNTRVJUKGp1bXBUYXJnZXQpOworICAgIAor
ICAgIExMSU5UX1JFVFVSTl9UV08oanVtcFRhcmdldCwgZXhlYyk7Cit9CisKK0xMSU5UX1NMT1df
UEFUSF9ERUNMKHJlcGxhY2UpCit7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5j
b2RlQmxvY2soKTsKKyAgICAKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgIGRhdGFM
b2coIiVwOiBFbnRlcmVkIHJlcGxhY2Ugd2l0aCBleGVjdXRlQ291bnRlciA9ICVkXG4iLCBjb2Rl
QmxvY2ssIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRpZgorICAgIAor
ICAgIGlmIChzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgaWYgKCFjb2RlQmxvY2stPmppdENv
bXBpbGUoZXhlYy0+Z2xvYmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1Ip
CisgICAgICAgICAgICBkYXRhTG9nKCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIp
OworI2VuZGlmCisgICAgICAgIH0KKyAgICAgICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAg
fSBlbHNlCisgICAgICAgIGNvZGVCbG9jay0+ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgTExJ
TlRfRU5EX0lNUEwoKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0wocmVnaXN0ZXJfZmlsZV9j
aGVjaykKK3sKKyAgICBMTElOVF9CRUdJTigpOworI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5H
CisgICAgZGF0YUxvZygiQ2hlY2tpbmcgc3RhY2sgaGVpZ2h0IHdpdGggZXhlYyA9ICVwLlxuIiwg
ZXhlYyk7CisgICAgZGF0YUxvZygiQ29kZUJsb2NrID0gJXAuXG4iLCBleGVjLT5jb2RlQmxvY2so
KSk7CisgICAgZGF0YUxvZygiTnVtIGNhbGxlZSByZWdpc3RlcnMgPSAldS5cbiIsIGV4ZWMtPmNv
ZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVycyk7CisgICAgZGF0YUxvZygiTnVtIHZhcnMg
PSAldS5cbiIsIGV4ZWMtPmNvZGVCbG9jaygpLT5tX251bVZhcnMpOworICAgIGRhdGFMb2coIkN1
cnJlbnQgZW5kIGlzIGF0ICVwLlxuIiwgZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5y
ZWdpc3RlckZpbGUoKS5lbmQoKSk7CisjZW5kaWYKKyAgICBBU1NFUlQoJmV4ZWMtPnJlZ2lzdGVy
cygpW2V4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVyc10gPiBleGVjLT5nbG9i
YWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmVuZCgpKTsKKyAgICBpZiAoVU5M
SUtFTFkoIWdsb2JhbERhdGEuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLmdyb3coJmV4ZWMt
PnJlZ2lzdGVycygpW2V4ZWMtPmNvZGVCbG9jaygpLT5tX251bUNhbGxlZVJlZ2lzdGVyc10pKSkg
eworICAgICAgICBleGVjID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZ2xvYmFsRGF0
YS5leGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGlu
dGVycHJldGVyVGhyb3dJbkNhbGxlcihleGVjKTsKKyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93
Rm9yVGhyb3duRXhjZXB0aW9uKGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9FTkRfSU1QTCgpOwor
fQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1Bh
dGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZnbG9iYWxEYXRhLmludGVycHJldGVyLT5yZWdpc3Rl
ckZpbGUoKSwgQ29kZUZvckNhbGwpOworICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBleGVj
ID0gZXhlYy0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgZ2xvYmFsRGF0YS5leGNlcHRpb24gPSBj
cmVhdGVTdGFja092ZXJmbG93RXJyb3IoZXhlYyk7CisgICAgICAgIGludGVycHJldGVyVGhyb3dJ
bkNhbGxlcihleGVjKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkpLCBleGVjKTsKKyAgICB9CisgICAgTExJTlRf
UkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgRXhl
Y1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMsICZn
bG9iYWxEYXRhLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNvbnN0cnVjdCk7
CisgICAgaWYgKCFuZXdFeGVjKSB7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgp
OworICAgICAgICBnbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJv
cihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMpOworICAgICAg
ICBMTElOVF9SRVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0
cl90PigxKSksIGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9SRVRVUk5fVFdPKDAsIG5ld0V4ZWMp
OworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY3JlYXRlX2FjdGl2YXRpb24p
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORworICAg
IGRhdGFMb2coIkNyZWF0aW5nIGFuIGFjdGl2YXRpb24sIGV4ZWMgPSAlcCFcbiIsIGV4ZWMpOwor
I2VuZGlmCisgICAgSlNBY3RpdmF0aW9uKiBhY3RpdmF0aW9uID0gSlNBY3RpdmF0aW9uOjpjcmVh
dGUoZ2xvYmFsRGF0YSwgZXhlYywgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhl
Yy0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpKSk7CisgICAgZXhlYy0+c2V0U2NvcGVD
aGFpbihleGVjLT5zY29wZUNoYWluKCktPnB1c2goYWN0aXZhdGlvbikpOworICAgIExMSU5UX1JF
VFVSTihKU1ZhbHVlKGFjdGl2YXRpb24pKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1Zh
bHVlIGFyZ3VtZW50cyA9IEpTVmFsdWUoQXJndW1lbnRzOjpjcmVhdGUoZ2xvYmFsRGF0YSwgZXhl
YykpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIGV4ZWMtPnVuY2hlY2tlZFIo
cGNbMV0udS5vcGVyYW5kKSA9IGFyZ3VtZW50czsKKyAgICBleGVjLT51bmNoZWNrZWRSKHVubW9k
aWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0
ZV90aGlzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNGdW5jdGlvbiogY29uc3RydWN0
b3IgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICAKKyNpZiAhQVNTRVJUX0RJU0FC
TEVECisgICAgQ29uc3RydWN0RGF0YSBjb25zdHJ1Y3REYXRhOworICAgIEFTU0VSVChjb25zdHJ1
Y3Rvci0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0YShjb25zdHJ1Y3RvciwgY29uc3Ry
dWN0RGF0YSkgPT0gQ29uc3RydWN0VHlwZUpTKTsKKyNlbmRpZgorICAgIAorICAgIFN0cnVjdHVy
ZSogc3RydWN0dXJlOworICAgIEpTVmFsdWUgcHJvdG8gPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7
CisgICAgaWYgKHByb3RvLmlzT2JqZWN0KCkpCisgICAgICAgIHN0cnVjdHVyZSA9IGFzT2JqZWN0
KHByb3RvKS0+aW5oZXJpdG9ySUQoZ2xvYmFsRGF0YSk7CisgICAgZWxzZQorICAgICAgICBzdHJ1
Y3R1cmUgPSBjb25zdHJ1Y3Rvci0+c2NvcGUoKS0+Z2xvYmFsT2JqZWN0LT5lbXB0eU9iamVjdFN0
cnVjdHVyZSgpOworICAgIAorICAgIExMSU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChl
eGVjLCBzdHJ1Y3R1cmUpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Nv
bnZlcnRfdGhpcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgdjEgPSBMTElO
VF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHYxLmlzUHJpbWl0aXZlKCkpOworICAgIExM
SU5UX1JFVFVSTih2MS50b1RoaXNPYmplY3QoZXhlYykpOworfQorCitMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfbmV3X29iamVjdCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExM
SU5UX1JFVFVSTihjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjKSk7Cit9CisKK0xMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdfYXJyYXkpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgYml0d2lzZV9jYXN0PEpTVmFsdWUq
PigmTExJTlRfT1AoMikpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX25ld19hcnJheV9idWZmZXIpCit7CisgICAgTExJTlRfQkVHSU4oKTsK
KyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0QXJyYXkoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCkt
PmNvbnN0YW50QnVmZmVyKHBjWzJdLnUub3BlcmFuZCksIHBjWzNdLnUub3BlcmFuZCkpOworfQor
CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X3JlZ2V4cCkKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIFJlZ0V4cCogcmVnRXhwID0gZXhlYy0+Y29kZUJsb2NrKCktPnJlZ2V4
cChwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghcmVnRXhwLT5pc1ZhbGlkKCkpCisgICAgICAg
IExMSU5UX1RIUk9XKGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJJbnZhbGlkIGZsYWcgc3VwcGxp
ZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiIpKTsKKyAgICBMTElOVF9SRVRVUk4oUmVnRXhwT2Jq
ZWN0OjpjcmVhdGUoZ2xvYmFsRGF0YSwgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLCBleGVj
LT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFN0cnVjdHVyZSgpLCByZWdFeHApKTsKK30K
KworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25vdCkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUxMSU5UX09QX0MoMikuanNWYWx1ZSgp
LnRvQm9vbGVhbihleGVjKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
ZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKEpT
VmFsdWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25lcSkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oIUpTVmFs
dWU6OmVxdWFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKSkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N0cmljdGVx
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1Zh
bHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9u
c3RyaWN0ZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29s
ZWFuKCFKU1ZhbHVlOjpzdHJpY3RFcXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwg
TExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9sZXNzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5U
X09QX0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfbGVzc2VxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRf
T1BfQygzKS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9ncmVhdGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2dyZWF0ZXJlcSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jv
b2xlYW4oanNMZXNzRXE8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3ByZV9pbmMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNO
dW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICsgMSkpOworfQorCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHJlX2RlYykKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUCgxKS5qc1ZhbHVlKCkudG9O
dW1iZXIoZXhlYykgLSAxKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9w
b3N0X2luYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGRvdWJsZSByZXN1bHQgPSBMTElO
VF9PUCgyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051
bWJlcihyZXN1bHQgKyAxKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9
CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wb3N0X2RlYykKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIGRvdWJsZSByZXN1bHQgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCkudG9O
dW1iZXIoZXhlYyk7CisgICAgTExJTlRfT1AoMikgPSBqc051bWJlcihyZXN1bHQgLSAxKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIocmVzdWx0KSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF90b19qc251bWJlcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExM
SU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVj
KSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmVnYXRlKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKC1MTElOVF9PUF9DKDIp
LmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfYWRkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2MSA9IExM
SU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgdjIgPSBMTElOVF9PUF9DKDMpLmpz
VmFsdWUoKTsKKyAgICAKKyNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORworICAgIGRhdGFMb2co
IlRyeWluZyB0byBhZGQgJXMiLCB2MS5kZXNjcmlwdGlvbigpKTsKKyAgICBkYXRhTG9nKCIgdG8g
JXMuXG4iLCB2Mi5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgorICAgIAorICAgIGlmICh2MS5pc1N0
cmluZygpICYmICF2Mi5pc09iamVjdCgpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNTdHJpbmco
ZXhlYywgYXNTdHJpbmcodjEpLCB2Mi50b1N0cmluZyhleGVjKSkpOworICAgIAorICAgIGlmICh2
MS5pc051bWJlcigpICYmIHYyLmlzTnVtYmVyKCkpCisgICAgICAgIExMSU5UX1JFVFVSTihqc051
bWJlcih2MS5hc051bWJlcigpICsgdjIuYXNOdW1iZXIoKSkpOworICAgIAorICAgIExMSU5UX1JF
VFVSTihqc0FkZFNsb3dDYXNlKGV4ZWMsIHYxLCB2MikpOworfQorCitMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfbXVsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpICogTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3N1YikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAt
IExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kaXYpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBM
TElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhl
YykgLyBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbW9kKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKGZtb2QoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9O
dW1iZXIoZXhlYyksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSkpOwor
fQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbHNoaWZ0KQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLnRvSW50MzIoZXhlYykgPDwgKExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4
ZWMpICYgMzEpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSA+PiAoTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkudG9VSW50MzIoZXhlYykgJiAzMSkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX3Vyc2hpZnQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4o
anNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9VSW50MzIoZXhlYykgPj4gKExMSU5U
X09QX0MoMykuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpICYgMzEpKSk7Cit9CisKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRhbmQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9JbnQzMihl
eGVjKSAmIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsKK30KKworTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdG9yKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50
MzIoZXhlYykgfCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisK
K0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXR4b3IpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCku
dG9JbnQzMihleGVjKSBeIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykpKTsK
K30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdG5vdCkKK3sKKyAgICBMTElO
VF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcih+TExJTlRfT1BfQygyKS5qc1Zh
bHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfY2hlY2tfaGFzX2luc3RhbmNlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1
ZSBiYXNlVmFsID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisjaWZuZGVmIE5ERUJVRworICAg
IFR5cGVJbmZvIHR5cGVJbmZvKFVuc3BlY2lmaWVkVHlwZSk7CisgICAgQVNTRVJUKCFiYXNlVmFs
LmlzT2JqZWN0KCkKKyAgICAgICAgICAgfHwgISh0eXBlSW5mbyA9IGFzT2JqZWN0KGJhc2VWYWwp
LT5zdHJ1Y3R1cmUoKS0+dHlwZUluZm8oKSkuaW1wbGVtZW50c0hhc0luc3RhbmNlKCkpOworI2Vu
ZGlmCisgICAgTExJTlRfVEhST1coY3JlYXRlSW52YWxpZFBhcmFtRXJyb3IoZXhlYywgImluc3Rh
bmNlb2YiLCBiYXNlVmFsKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9p
bnN0YW5jZW9mKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihDb21tb25TbG93UGF0aHM6Om9wSW5zdGFuY2VPZlNsb3coZXhlYywgTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDQpLmpzVmFs
dWUoKSkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3R5cGVvZikKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc1R5cGVTdHJpbmdGb3JWYWx1
ZShleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfaXNfdW5kZWZpbmVkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
SlNWYWx1ZSB2ID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbih2LmlzQ2VsbCgpID8gdi5hc0NlbGwoKS0+c3RydWN0dXJlKCktPnR5cGVJbmZvKCku
bWFzcXVlcmFkZXNBc1VuZGVmaW5lZCgpIDogdi5pc1VuZGVmaW5lZCgpKSk7Cit9CisKK0xMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc19ib29sZWFuKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS5p
c0Jvb2xlYW4oKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNfbnVt
YmVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKS5pc051bWJlcigpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9pc19zdHJpbmcpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBM
TElOVF9SRVRVUk4oanNCb29sZWFuKGlzSlNTdHJpbmcoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkp
KSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc19vYmplY3QpCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpzSXNPYmplY3RU
eXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfaXNfZnVuY3Rpb24pCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElO
VF9SRVRVUk4oanNCb29sZWFuKGpzSXNGdW5jdGlvblR5cGUoTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbikKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29tbW9uU2xvd1BhdGhz
OjpvcEluKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFs
dWUoKSkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmUpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2
ZSwgQ29tbW9uU2xvd1BhdGhzOjpvcFJlc29sdmUoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlk
ZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcmVzb2x2ZV9za2lwKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
UkVUVVJOX1BST0ZJTEVEKAorICAgICAgICBvcF9yZXNvbHZlX3NraXAsCisgICAgICAgIENvbW1v
blNsb3dQYXRoczo6b3BSZXNvbHZlU2tpcCgKKyAgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAg
ICBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpLAorICAgICAg
ICAgICAgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK3N0YXRpYyBKU1ZhbHVlIHJlc29sdmVHbG9i
YWwoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gY29kZUJsb2NrLT5nbG9iYWxPYmplY3QoKTsKKyAgICBBU1NFUlQoZ2xvYmFsT2Jq
ZWN0LT5pc0dsb2JhbE9iamVjdCgpKTsKKyAgICBpbnQgcHJvcGVydHkgPSBwY1syXS51Lm9wZXJh
bmQ7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBwY1szXS51LnN0cnVjdHVyZS5nZXQoKTsK
KyAgICAKKyAgICBBU1NFUlRfVU5VU0VEKHN0cnVjdHVyZSwgc3RydWN0dXJlICE9IGdsb2JhbE9i
amVjdC0+c3RydWN0dXJlKCkpOworICAgIAorICAgIElkZW50aWZpZXImIGlkZW50ID0gY29kZUJs
b2NrLT5pZGVudGlmaWVyKHByb3BlcnR5KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxP
YmplY3QpOworICAgIAorICAgIGlmIChnbG9iYWxPYmplY3QtPmdldFByb3BlcnR5U2xvdChleGVj
LCBpZGVudCwgc2xvdCkpIHsKKyAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBzbG90LmdldFZhbHVl
KGV4ZWMsIGlkZW50KTsKKyAgICAgICAgaWYgKHNsb3QuaXNDYWNoZWFibGVWYWx1ZSgpICYmICFn
bG9iYWxPYmplY3QtPnN0cnVjdHVyZSgpLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpCisgICAg
ICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gZ2xvYmFsT2JqZWN0KSB7CisgICAgICAgICAg
ICBwY1szXS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgZXhlYy0+Z2xvYmFsRGF0
YSgpLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBnbG9iYWxPYmplY3QtPnN0cnVjdHVy
ZSgpKTsKKyAgICAgICAgICAgIHBjWzRdID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKKyAgICAgICAg
fQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgZXhl
Yy0+Z2xvYmFsRGF0YSgpLmV4Y2VwdGlvbiA9IGNyZWF0ZVVuZGVmaW5lZFZhcmlhYmxlRXJyb3Io
ZXhlYywgaWRlbnQpOworICAgIHJldHVybiBKU1ZhbHVlKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX2dsb2JhbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbCwgcmVzb2x2ZUdsb2Jh
bChleGVjLCBwYykpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2
ZV9nbG9iYWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVS
Tl9QUk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljLCByZXNvbHZlR2xvYmFsKGV4ZWMs
IHBjKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX2Zvcl9y
ZXNvbHZlX2dsb2JhbF9keW5hbWljKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
UkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMsIENvbW1vblNsb3dQYXRo
czo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUu
b3BlcmFuZCkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVf
YmFzZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhl
Yy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAocGNb
M10udS5vcGVyYW5kKSB7CisgICAgICAgIEpTVmFsdWUgYmFzZSA9IEpTQzo6cmVzb2x2ZUJhc2Uo
ZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgdHJ1ZSk7CisgICAgICAgIGlmICghYmFz
ZSkKKyAgICAgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFz
c2lnbm1lbnQoZXhlYywgaWRlbnQudXN0cmluZygpKSk7CisgICAgICAgIExMSU5UX1JFVFVSTihi
YXNlKTsKKyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmVf
YmFzZSwgSlNDOjpyZXNvbHZlQmFzZShleGVjLCBpZGVudCwgZXhlYy0+c2NvcGVDaGFpbigpLCBm
YWxzZSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZW5zdXJlX3Byb3Bl
cnR5X2V4aXN0cykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTT2JqZWN0KiBvYmplY3Qg
PSBhc09iamVjdChMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIFByb3BlcnR5U2xvdCBzbG90
KG9iamVjdCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBleGVjLT5jb2RlQmxvY2soKS0+aWRl
bnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIGlmICghb2JqZWN0LT5nZXRQcm9wZXJ0eVNs
b3QoZXhlYywgaWRlbnQsIHNsb3QpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZv
ckludmFsaWRHbG9iYWxBc3NpZ25tZW50KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV93
aXRoX2Jhc2UpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IENv
bW1vblNsb3dQYXRoczo6b3BSZXNvbHZlV2l0aEJhc2UoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCkt
PmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDIpID0gcmVzdWx0OworICAgIC8vIEZJWE1F
OiB0ZWNobmljYWxseSBzaG91bGQgaGF2ZSBwcm9maWxpbmcsIGJ1dCB3ZSBkb24ndCBkbyBpdCBi
ZWNhdXNlIHRoZSBERkcgd29uJ3QgdXNlIGl0LgorICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV93aXRoX3RoaXMpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IENvbW1vblNsb3dQYXRoczo6b3BSZXNv
bHZlV2l0aFRoaXMoZXhlYywgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbM10udS5v
cGVyYW5kKSwgTExJTlRfT1AoMSkpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAg
IExMSU5UX09QKDIpID0gcmVzdWx0OworICAgIC8vIEZJWE1FOiB0ZWNobmljYWxseSBzaG91bGQg
aGF2ZSBwcm9maWxpbmcsIGJ1dCB3ZSBkb24ndCBkbyBpdCBiZWNhdXNlIHRoZSBERkcgd29uJ3Qg
dXNlIGl0LgorICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfZ2V0X2J5X2lkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNv
ZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpOworICAgIEpTVmFsdWUgYmFzZVZh
bHVlID0gTExJTlRfT1BfQygyKS5qc1ZhbHVlKCk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoYmFz
ZVZhbHVlKTsKKworICAgIEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmdldChleGVjLCBpZGVu
dCwgc2xvdCk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgTExJTlRfT1AoMSkg
PSByZXN1bHQ7CisKKyAgICBpZiAoYmFzZVZhbHVlLmlzQ2VsbCgpCisgICAgICAgICYmIHNsb3Qu
aXNDYWNoZWFibGUoKQorICAgICAgICAmJiBzbG90LnNsb3RCYXNlKCkgPT0gYmFzZVZhbHVlCisg
ICAgICAgICYmIHNsb3QuY2FjaGVkUHJvcGVydHlUeXBlKCkgPT0gUHJvcGVydHlTbG90OjpWYWx1
ZSkgeworICAgICAgICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0Nl
bGwoKTsKKyAgICAgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJl
KCk7CisgICAgICAgIAorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rp
b25hcnkoKQorICAgICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQ
cm9wZXJ0eUNhY2hpbmcoKSkgeworICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAor
ICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCks
IHN0cnVjdHVyZSk7CisgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9m
ZnNldCgpICogc2l6ZW9mKEpTVmFsdWUpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHBj
W09QQ09ERV9MRU5HVEgob3BfZ2V0X2J5X2lkKSAtIDFdLnUucHJvZmlsZS0+bV9idWNrZXRzWzBd
ID0gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYXJndW1lbnRzX2xlbmd0aCkKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2Nr
KCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10u
dS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExMSU5UX09QKDIpLmpzVmFsdWUo
KTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChiYXNlVmFsdWUpOworICAgIExMSU5UX1JFVFVSTihi
YXNlVmFsdWUuZ2V0KGV4ZWMsIGlkZW50LCBzbG90KSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9wdXRfYnlfaWQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIElkZW50aWZpZXImIGlk
ZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgCisgICAg
SlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICBQdXRQcm9w
ZXJ0eVNsb3Qgc2xvdChjb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKTsKKyAgICBpZiAocGNbOF0u
dS5vcGVyYW5kKQorICAgICAgICBhc09iamVjdChiYXNlVmFsdWUpLT5wdXREaXJlY3QoZ2xvYmFs
RGF0YSwgaWRlbnQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpLCBzbG90KTsKKyAgICBlbHNlCisg
ICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaWRlbnQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgp
LCBzbG90KTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAKKyAgICBpZiAoYmFz
ZVZhbHVlLmlzQ2VsbCgpCisgICAgICAgICYmIHNsb3QuaXNDYWNoZWFibGUoKSkgeworICAgICAg
ICAKKyAgICAgICAgSlNDZWxsKiBiYXNlQ2VsbCA9IGJhc2VWYWx1ZS5hc0NlbGwoKTsKKyAgICAg
ICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBiYXNlQ2VsbC0+c3RydWN0dXJlKCk7CisgICAgICAg
IAorICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAg
ICAgICAgICAgJiYgIXN0cnVjdHVyZS0+dHlwZUluZm8oKS5wcm9oaWJpdHNQcm9wZXJ0eUNhY2hp
bmcoKQorICAgICAgICAgICAgJiYgYmFzZUNlbGwgPT0gc2xvdC5iYXNlKCkpIHsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgaWYgKHNsb3QudHlwZSgpID09IFB1dFByb3BlcnR5U2xvdDo6TmV3
UHJvcGVydHkpIHsKKyAgICAgICAgICAgICAgICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5
KCkgJiYgc3RydWN0dXJlLT5wcmV2aW91c0lEKCktPnByb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCkg
PT0gc3RydWN0dXJlLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpKSB7CisgICAgICAgICAgICAg
ICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugc29tZSBvZiB0aGUgbWV0aG9kcyB3ZSBj
YWxsCisgICAgICAgICAgICAgICAgICAgIC8vIGJlbG93IG1heSBHQy4KKyAgICAgICAgICAgICAg
ICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRf
YnlfaWQpOworCisgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZVByb3RvdHlwZUNoYWluKGV4
ZWMsIGJhc2VDZWxsKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAg
IEFTU0VSVChzdHJ1Y3R1cmUtPnByZXZpb3VzSUQoKS0+aXNPYmplY3QoKSk7CisgICAgICAgICAg
ICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAg
IGdsb2JhbERhdGEsIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZS0+cHJl
dmlvdXNJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5j
YWNoZWRPZmZzZXQoKSAqIHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcGNb
Nl0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsRGF0YSwg
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsKKyAgICAgICAgICAgICAg
ICAgICAgU3RydWN0dXJlQ2hhaW4qIGNoYWluID0gc3RydWN0dXJlLT5wcm90b3R5cGVDaGFpbihl
eGVjKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNoYWluKTsKKyAgICAgICAgICAgICAg
ICAgICAgcGNbN10udS5zdHJ1Y3R1cmVDaGFpbi5zZXQoCisgICAgICAgICAgICAgICAgICAgICAg
ICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBjaGFpbik7CisgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAocGNbOF0udS5vcGVyYW5k
KQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8
dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3QpOworICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBwY1swXS51Lm9wY29kZSA9
IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBwY1swXS51Lm9wY29kZSA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X29wX3B1dF9i
eV9pZCk7CisgICAgICAgICAgICAgICAgcGNbNF0udS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAg
ICAgICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1
Y3R1cmUpOworICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zm
c2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9
CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9kZWxfYnlfaWQpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNv
ZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0g
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9PYmplY3QoZXhlYyk7CisgICAgYm9vbCBjb3VsZERl
bGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmpl
Y3QsIGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1szXS51Lm9wZXJhbmQpKTsKKyAgICBM
TElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBpZiAoIWNvdWxkRGVsZXRlICYmIGNvZGVCbG9j
ay0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCAiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihjb3VsZERlbGV0ZSkpOworfQorCitpbmxpbmUgSlNWYWx1ZSBnZXRCeVZhbChFeGVj
U3RhdGUqIGV4ZWMsIEpTVmFsdWUgYmFzZVZhbHVlLCBKU1ZhbHVlIHN1YnNjcmlwdCkKK3sKKyAg
ICBpZiAoTElLRUxZKGJhc2VWYWx1ZS5pc0NlbGwoKSAmJiBzdWJzY3JpcHQuaXNTdHJpbmcoKSkp
IHsKKyAgICAgICAgaWYgKEpTVmFsdWUgcmVzdWx0ID0gYmFzZVZhbHVlLmFzQ2VsbCgpLT5mYXN0
R2V0T3duUHJvcGVydHkoZXhlYywgYXNTdHJpbmcoc3Vic2NyaXB0KS0+dmFsdWUoZXhlYykpKQor
ICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgaWYgKHN1YnNjcmlw
dC5pc1VJbnQzMigpKSB7CisgICAgICAgIHVpbnQzMl90IGkgPSBzdWJzY3JpcHQuYXNVSW50MzIo
KTsKKyAgICAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBhc1N0cmluZyhiYXNlVmFs
dWUpLT5jYW5HZXRJbmRleChpKSkKKyAgICAgICAgICAgIHJldHVybiBhc1N0cmluZyhiYXNlVmFs
dWUpLT5nZXRJbmRleChleGVjLCBpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpc0pTQnl0ZUFy
cmF5KGJhc2VWYWx1ZSkgJiYgYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgo
aSkpCisgICAgICAgICAgICByZXR1cm4gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKS0+Z2V0SW5kZXgo
ZXhlYywgaSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gYmFzZVZhbHVlLmdldChleGVjLCBp
KTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICByZXR1cm4gYmFzZVZhbHVlLmdldChl
eGVjLCBwcm9wZXJ0eSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRf
YnlfdmFsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVE
KG9wX2dldF9ieV92YWwsIGdldEJ5VmFsKGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfZ2V0X2FyZ3VtZW50X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpT
VmFsdWUgYXJndW1lbnRzID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlmICghYXJndW1l
bnRzKSB7CisgICAgICAgIGFyZ3VtZW50cyA9IEFyZ3VtZW50czo6Y3JlYXRlKGdsb2JhbERhdGEs
IGV4ZWMpOworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICAgICAgTExJTlRf
T1AoMikgPSBhcmd1bWVudHM7CisgICAgICAgIGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFy
Z3VtZW50c1JlZ2lzdGVyKHBjWzJdLnUub3BlcmFuZCkpID0gYXJndW1lbnRzOworICAgIH0KKyAg
ICAKKyAgICBMTElOVF9SRVRVUk4oZ2V0QnlWYWwoZXhlYywgYXJndW1lbnRzLCBMTElOVF9PUF9D
KDMpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0
X2J5X3BuYW1lKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGdldEJ5
VmFsKGV4ZWMsIExMSU5UX09QKDIpLmpzVmFsdWUoKSwgTExJTlRfT1AoMykuanNWYWx1ZSgpKSk7
Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfdmFsKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgCisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUF9D
KDEpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0MoMikuanNW
YWx1ZSgpOworICAgIEpTVmFsdWUgdmFsdWUgPSBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAg
ICAKKyAgICBpZiAoTElLRUxZKHN1YnNjcmlwdC5pc1VJbnQzMigpKSkgeworICAgICAgICB1aW50
MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAgICAgIGlmIChpc0pTQXJyYXkoYmFz
ZVZhbHVlKSkgeworICAgICAgICAgICAgSlNBcnJheSoganNBcnJheSA9IGFzQXJyYXkoYmFzZVZh
bHVlKTsKKyAgICAgICAgICAgIGlmIChqc0FycmF5LT5jYW5TZXRJbmRleChpKSkKKyAgICAgICAg
ICAgICAgICBqc0FycmF5LT5zZXRJbmRleChnbG9iYWxEYXRhLCBpLCB2YWx1ZSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgSlNBcnJheTo6cHV0QnlJbmRleChqc0FycmF5LCBl
eGVjLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNlVmFsdWUpCisgICAgICAgICAgICAmJiBhc0J5dGVB
cnJheShiYXNlVmFsdWUpLT5jYW5BY2Nlc3NJbmRleChpKSkgeworICAgICAgICAgICAgSlNCeXRl
QXJyYXkqIGpzQnl0ZUFycmF5ID0gYXNCeXRlQXJyYXkoYmFzZVZhbHVlKTsKKyAgICAgICAgICAg
IGlmICh2YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICBqc0J5dGVBcnJheS0+c2V0
SW5kZXgoaSwgdmFsdWUuYXNJbnQzMigpKTsKKyAgICAgICAgICAgICAgICBMTElOVF9FTkQoKTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CisgICAg
ICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGksIHZhbHVlLmFzTnVtYmVyKCkpOwor
ICAgICAgICAgICAgICAgIExMSU5UX0VORCgpOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgaSwgdmFsdWUpOworICAgICAgICBMTElOVF9FTkQo
KTsKKyAgICB9CisgICAgCisgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBzdWJzY3JpcHQu
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04o
KTsKKyAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RN
b2RlKCkpOworICAgIGJhc2VWYWx1ZS5wdXQoZXhlYywgcHJvcGVydHksIHZhbHVlLCBzbG90KTsK
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Rl
bF9ieV92YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9
IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIEpTT2JqZWN0KiBiYXNlT2JqZWN0ID0gYmFz
ZVZhbHVlLnRvT2JqZWN0KGV4ZWMpOworICAgIAorICAgIEpTVmFsdWUgc3Vic2NyaXB0ID0gTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisgICAgYm9vbCBjb3VsZERlbGV0ZTsKKyAgICAK
KyAgICB1aW50MzJfdCBpOworICAgIGlmIChzdWJzY3JpcHQuZ2V0VUludDMyKGkpKQorICAgICAg
ICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRhYmxlKCktPmRlbGV0ZVByb3BlcnR5
QnlJbmRleChiYXNlT2JqZWN0LCBleGVjLCBpKTsKKyAgICBlbHNlIHsKKyAgICAgICAgTExJTlRf
Q0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vi
c2NyaXB0LnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgICAgIExMSU5UX0NIRUNL
X0VYQ0VQVElPTigpOworICAgICAgICBjb3VsZERlbGV0ZSA9IGJhc2VPYmplY3QtPm1ldGhvZFRh
YmxlKCktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3QsIGV4ZWMsIHByb3BlcnR5KTsKKyAgICB9
CisgICAgCisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJp
Y3RNb2RlKCkpCisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVW5h
YmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSk7CisgICAgCisgICAgTExJTlRfUkVUVVJOKGpzQm9v
bGVhbihjb3VsZERlbGV0ZSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cHV0X2J5X2luZGV4KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfT1BfQygxKS5q
c1ZhbHVlKCkucHV0KGV4ZWMsIHBjWzJdLnUub3BlcmFuZCwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcHV0X2dldHRlcl9zZXR0ZXIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBBU1NFUlQo
TExJTlRfT1AoMSkuanNWYWx1ZSgpLmlzT2JqZWN0KCkpOworICAgIEpTT2JqZWN0KiBiYXNlT2Jq
ID0gYXNPYmplY3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICAKKyAgICBHZXR0ZXJTZXR0
ZXIqIGFjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUoZXhlYyk7CisgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgSlNWYWx1ZSBnZXR0ZXIgPSBMTElOVF9PUCgzKS5q
c1ZhbHVlKCk7CisgICAgSlNWYWx1ZSBzZXR0ZXIgPSBMTElOVF9PUCg0KS5qc1ZhbHVlKCk7Cisg
ICAgQVNTRVJUKGdldHRlci5pc09iamVjdCgpIHx8IGdldHRlci5pc1VuZGVmaW5lZCgpKTsKKyAg
ICBBU1NFUlQoc2V0dGVyLmlzT2JqZWN0KCkgfHwgc2V0dGVyLmlzVW5kZWZpbmVkKCkpOworICAg
IEFTU0VSVChnZXR0ZXIuaXNPYmplY3QoKSB8fCBzZXR0ZXIuaXNPYmplY3QoKSk7CisgICAgCisg
ICAgaWYgKCFnZXR0ZXIuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgYWNjZXNzb3ItPnNldEdldHRl
cihnbG9iYWxEYXRhLCBhc09iamVjdChnZXR0ZXIpKTsKKyAgICBpZiAoIXNldHRlci5pc1VuZGVm
aW5lZCgpKQorICAgICAgICBhY2Nlc3Nvci0+c2V0U2V0dGVyKGdsb2JhbERhdGEsIGFzT2JqZWN0
KHNldHRlcikpOworICAgIGJhc2VPYmotPnB1dERpcmVjdEFjY2Vzc29yKAorICAgICAgICBnbG9i
YWxEYXRhLAorICAgICAgICBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9w
ZXJhbmQpLAorICAgICAgICBhY2Nlc3NvciwgQWNjZXNzb3IpOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfam1wX3Njb3BlcykKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIHVuc2lnbmVkIGNvdW50ID0gcGNbMV0udS5vcGVyYW5kOworICAg
IFNjb3BlQ2hhaW5Ob2RlKiB0bXAgPSBleGVjLT5zY29wZUNoYWluKCk7CisgICAgd2hpbGUgKGNv
dW50LS0pCisgICAgICAgIHRtcCA9IHRtcC0+cG9wKCk7CisgICAgZXhlYy0+c2V0U2NvcGVDaGFp
bih0bXApOworICAgIHBjICs9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2p0cnVlKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2p0cnVlLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
amZhbHNlKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2pmYWxz
ZSwgIUxMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvQm9vbGVhbihleGVjKSk7Cit9CisKK0xMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9qbGVzcykKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIExMSU5UX0JSQU5DSChvcF9qbGVzcywganNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0Mo
MSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfam5sZXNzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
TExJTlRfQlJBTkNIKG9wX2pubGVzcywgIWpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2pncmVhdGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
TExJTlRfQlJBTkNIKG9wX2pncmVhdGVyLCBqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0Mo
MikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfam5ncmVhdGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlciwgIWpzTGVzczxmYWxzZT4oZXhlYywgTExJTlRf
T1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9qbGVzc2VxKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgTExJTlRfQlJBTkNIKG9wX2psZXNzZXEsIGpzTGVzc0VxPHRydWU+KGV4ZWMsIExMSU5U
X09QX0MoMSkuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSkpOworfQorCitMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfam5sZXNzZXEpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5sZXNzZXEsICFqc0xlc3NFcTx0cnVlPihleGVjLCBM
TElOVF9PUF9DKDEpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKwor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2pncmVhdGVyZXEpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3BfamdyZWF0ZXJlcSwganNMZXNzRXE8ZmFsc2U+
KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkp
OworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfam5ncmVhdGVyZXEpCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9CUkFOQ0gob3Bfam5ncmVhdGVyZXEsICFqc0xl
c3NFcTxmYWxzZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMSku
anNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zd2l0Y2hf
aW1tKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSBzY3J1dGluZWUgPSBMTElO
VF9PUF9DKDMpLmpzVmFsdWUoKTsKKyAgICBBU1NFUlQoc2NydXRpbmVlLmlzRG91YmxlKCkpOwor
ICAgIGRvdWJsZSB2YWx1ZSA9IHNjcnV0aW5lZS5hc0RvdWJsZSgpOworICAgIGludDMyX3QgaW50
VmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pih2YWx1ZSk7CisgICAgaW50IGRlZmF1bHRPZmZz
ZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKHZhbHVlID09IGludFZhbHVlKSB7CisgICAg
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBj
ICs9IGNvZGVCbG9jay0+aW1tZWRpYXRlU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCku
b2Zmc2V0Rm9yVmFsdWUoaW50VmFsdWUsIGRlZmF1bHRPZmZzZXQpOworICAgIH0gZWxzZQorICAg
ICAgICBwYyArPSBkZWZhdWx0T2Zmc2V0OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3dpdGNoX3N0cmluZykKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7Cisg
ICAgaW50IGRlZmF1bHRPZmZzZXQgPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgaWYgKCFzY3J1dGlu
ZWUuaXNTdHJpbmcoKSkKKyAgICAgICAgcGMgKz0gZGVmYXVsdE9mZnNldDsKKyAgICBlbHNlIHsK
KyAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICAg
ICAgcGMgKz0gY29kZUJsb2NrLT5zdHJpbmdTd2l0Y2hKdW1wVGFibGUocGNbMV0udS5vcGVyYW5k
KS5vZmZzZXRGb3JWYWx1ZShhc1N0cmluZyhzY3J1dGluZWUpLT52YWx1ZShleGVjKS5pbXBsKCks
IGRlZmF1bHRPZmZzZXQpOworICAgIH0KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBBU1NFUlQo
Y29kZUJsb2NrLT5jb2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZQorICAgICAgICAgICB8fCAhY29k
ZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkKKyAgICAgICAgICAgfHwgZXhlYy0+dW5jaGVj
a2VkUihjb2RlQmxvY2stPmFjdGl2YXRpb25SZWdpc3RlcigpKS5qc1ZhbHVlKCkpOworI2lmIExM
SU5UX1NMT1dfUEFUSF9UUkFDSU5HCisgICAgZGF0YUxvZygiQ3JlYXRpbmcgZnVuY3Rpb24hXG4i
KTsKKyNlbmRpZgorICAgIExMSU5UX1JFVFVSTihjb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChwY1sy
XS51Lm9wZXJhbmQpLT5tYWtlKGV4ZWMsIGV4ZWMtPnNjb3BlQ2hhaW4oKSkpOworfQorCitMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmNfZXhwKQoreworICAgIExMSU5UX0JF
R0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29kZUJsb2NrLT5mdW5jdGlvbkV4cHIo
cGNbMl0udS5vcGVyYW5kKTsKKyAgICBKU0Z1bmN0aW9uKiBmdW5jID0gZnVuY3Rpb24tPm1ha2Uo
ZXhlYywgZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICAKKyAgICBpZiAoIWZ1bmN0aW9uLT5uYW1l
KCkuaXNOdWxsKCkpIHsKKyAgICAgICAgSlNTdGF0aWNTY29wZU9iamVjdCogZnVuY3Rpb25TY29w
ZU9iamVjdCA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVjLCBmdW5jdGlvbi0+bmFt
ZSgpLCBmdW5jLCBSZWFkT25seSB8IERvbnREZWxldGUpOworICAgICAgICBmdW5jLT5zZXRTY29w
ZShnbG9iYWxEYXRhLCBmdW5jLT5zY29wZSgpLT5wdXNoKGZ1bmN0aW9uU2NvcGVPYmplY3QpKTsK
KyAgICB9CisgICAgCisgICAgTExJTlRfUkVUVVJOKGZ1bmMpOworfQorCitzdGF0aWMgU2xvd1Bh
dGhSZXR1cm5UeXBlIGhhbmRsZUhvc3RDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1
Y3Rpb24qIHBjLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQor
eworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCk7CisgICAg
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZXhlYy0+Z2xvYmFsRGF0YSgpOworICAgIAorICAg
IGV4ZWNDYWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVj
Q2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CisKKyAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkg
eworICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICAgICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBnZXRDYWxsRGF0YShjYWxsZWUsIGNhbGxEYXRhKTsKKyAgICAKKyAgICAgICAgQVNTRVJUKGNh
bGxUeXBlICE9IENhbGxUeXBlSlMpOworICAgIAorICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGVIb3N0KSB7CisgICAgICAgICAgICBnbG9iYWxEYXRhLmhvc3RDYWxsUmV0dXJuVmFsdWUg
PSBKU1ZhbHVlOjpkZWNvZGUoY2FsbERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwg
cGMsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKKyAg
ICAgICAgfQorICAgICAgICAKKyNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORworICAgICAgICBk
YXRhTG9nKCJDYWxsIGNhbGxlZSBpcyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNj
cmlwdGlvbigpKTsKKyNlbmRpZgorCisgICAgICAgIEFTU0VSVChjYWxsVHlwZSA9PSBDYWxsVHlw
ZU5vbmUpOworICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBjcmVhdGVOb3RBRnVu
Y3Rpb25FcnJvcihleGVjLCBjYWxsZWUpKTsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9PSBD
b2RlRm9yQ29uc3RydWN0KTsKKyAgICAKKyAgICBDb25zdHJ1Y3REYXRhIGNvbnN0cnVjdERhdGE7
CisgICAgQ29uc3RydWN0VHlwZSBjb25zdHJ1Y3RUeXBlID0gZ2V0Q29uc3RydWN0RGF0YShjYWxs
ZWUsIGNvbnN0cnVjdERhdGEpOworICAgIAorICAgIEFTU0VSVChjb25zdHJ1Y3RUeXBlICE9IENv
bnN0cnVjdFR5cGVKUyk7CisgICAgCisgICAgaWYgKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0
VHlwZUhvc3QpIHsKKyAgICAgICAgZ2xvYmFsRGF0YS5ob3N0Q2FsbFJldHVyblZhbHVlID0gSlNW
YWx1ZTo6ZGVjb2RlKGNvbnN0cnVjdERhdGEubmF0aXZlLmZ1bmN0aW9uKGV4ZWNDYWxsZWUpKTsK
KworICAgICAgICBMTElOVF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRf
Y2FzdDx2b2lkKj4oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgIH0KKyAgICAKKyNpZiBM
TElOVF9TTE9XX1BBVEhfVFJBQ0lORworICAgIGRhdGFMb2coIkNvbnN0cnVjdG9yIGNhbGxlZSBp
cyBub3QgYSBmdW5jdGlvbjogJXNcbiIsIGNhbGxlZS5kZXNjcmlwdGlvbigpKTsKKyNlbmRpZgor
CisgICAgQVNTRVJUKGNvbnN0cnVjdFR5cGUgPT0gQ29uc3RydWN0VHlwZU5vbmUpOworICAgIExM
SU5UX0NBTExfVEhST1coZXhlYywgcGMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3RvckVycm9yKGV4ZWMs
IGNhbGxlZSkpOworfQorCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIHNldFVwQ2FsbChFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kLCBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUsIExMSW50Q2FsbExpbmtJbmZvKiBjYWxsTGlu
a0luZm8gPSAwKQoreworI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCisgICAgZGF0YUxvZygi
UGVyZm9ybWluZyBjYWxsIHdpdGggcmVjb3JkZWQgUEMgPSAlcFxuIiwgZXhlY0NhbGxlZS0+Y2Fs
bGVyRnJhbWUoKS0+Y3VycmVudFZQQygpKTsKKyNlbmRpZgorCisgICAgSlNDZWxsKiBjYWxsZWVB
c0Z1bmN0aW9uQ2VsbCA9IGdldEpTRnVuY3Rpb24oY2FsbGVlQXNWYWx1ZSk7CisgICAgaWYgKCFj
YWxsZWVBc0Z1bmN0aW9uQ2VsbCkKKyAgICAgICAgcmV0dXJuIGhhbmRsZUhvc3RDYWxsKGV4ZWND
YWxsZWUsIHBjLCBjYWxsZWVBc1ZhbHVlLCBraW5kKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiBj
YWxsZWUgPSBhc0Z1bmN0aW9uKGNhbGxlZUFzRnVuY3Rpb25DZWxsKTsKKyAgICBTY29wZUNoYWlu
Tm9kZSogc2NvcGUgPSBjYWxsZWUtPnNjb3BlVW5jaGVja2VkKCk7CisgICAgSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhID0gKnNjb3BlLT5nbG9iYWxEYXRhOworICAgIGV4ZWNDYWxsZWUtPnNldFNj
b3BlQ2hhaW4oc2NvcGUpOworICAgIEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlID0gY2FsbGVl
LT5leGVjdXRhYmxlKCk7CisgICAgCisgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIGNvZGVQdHI7
CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAwOworICAgIGlmIChleGVjdXRhYmxlLT5pc0hv
c3RGdW5jdGlvbigpKQorICAgICAgICBjb2RlUHRyID0gZXhlY3V0YWJsZS0+Z2VuZXJhdGVkSklU
Q29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAgIGVsc2UgeworICAgICAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOworICAgICAgICBKU09iamVjdCogZXJyb3IgPSBmdW5j
dGlvbkV4ZWN1dGFibGUtPmNvbXBpbGVGb3IoZXhlY0NhbGxlZSwgY2FsbGVlLT5zY29wZSgpLCBr
aW5kKTsKKyAgICAgICAgaWYgKGVycm9yKQorICAgICAgICAgICAgTExJTlRfQ0FMTF9USFJPVyhl
eGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpLCBwYywgZXJyb3IpOworICAgICAgICBjb2RlQmxvY2sg
PSAmZnVuY3Rpb25FeGVjdXRhYmxlLT5nZW5lcmF0ZWRCeXRlY29kZUZvcihraW5kKTsKKyAgICAg
ICAgQVNTRVJUKGNvZGVCbG9jayk7CisgICAgICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENv
dW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGljX2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBh
cmFtZXRlcnMoKSkpCisgICAgICAgICAgICBjb2RlUHRyID0gZnVuY3Rpb25FeGVjdXRhYmxlLT5n
ZW5lcmF0ZWRKSVRDb2RlV2l0aEFyaXR5Q2hlY2tGb3Ioa2luZCk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVG
b3Ioa2luZCkuYWRkcmVzc0ZvckNhbGwoKTsKKyAgICB9CisgICAgCisgICAgaWYgKGNhbGxMaW5r
SW5mbykgeworICAgICAgICBpZiAoY2FsbExpbmtJbmZvLT5pc09uTGlzdCgpKQorICAgICAgICAg
ICAgY2FsbExpbmtJbmZvLT5yZW1vdmUoKTsKKyAgICAgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVy
ID0gZXhlY0NhbGxlZS0+Y2FsbGVyRnJhbWUoKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5jYWxs
ZWUuc2V0KGdsb2JhbERhdGEsIGV4ZWNDYWxsZXItPmNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFi
bGUoKSwgY2FsbGVlKTsKKyAgICAgICAgY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5zZXQo
Z2xvYmFsRGF0YSwgZXhlY0NhbGxlci0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBj
YWxsZWUpOworICAgICAgICBjYWxsTGlua0luZm8tPm1hY2hpbmVDb2RlVGFyZ2V0ID0gY29kZVB0
cjsKKyAgICAgICAgaWYgKGNvZGVCbG9jaykKKyAgICAgICAgICAgIGNvZGVCbG9jay0+bGlua0lu
Y29taW5nQ2FsbChjYWxsTGlua0luZm8pOworICAgIH0KKyAgICAKKyAgICBMTElOVF9DQUxMX1JF
VFVSTihleGVjQ2FsbGVlLCBwYywgY29kZVB0ci5leGVjdXRhYmxlQWRkcmVzcygpKTsKK30KKwor
aW5saW5lIFNsb3dQYXRoUmV0dXJuVHlwZSBnZW5lcmljQ2FsbChFeGVjU3RhdGUqIGV4ZWMsIElu
c3RydWN0aW9uKiBwYywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIC8vIFRo
aXMgbmVlZHMgdG86CisgICAgLy8gLSBTZXQgdXAgYSBjYWxsIGZyYW1lLgorICAgIC8vIC0gRmln
dXJlIG91dCB3aGF0IHRvIGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8v
IC0gSWYgcG9zc2libGUsIGxpbmsgdGhlIGNhbGwncyBpbmxpbmUgY2FjaGUuCisgICAgLy8gLSBS
ZXR1cm4gYSB0dXBsZSBvZiBtYWNoaW5lIGNvZGUgYWRkcmVzcyB0byBjYWxsIGFuZCB0aGUgbmV3
IGNhbGwgZnJhbWUuCisgICAgCisgICAgSlNWYWx1ZSBjYWxsZWVBc1ZhbHVlID0gTExJTlRfT1Bf
QygxKS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyAr
IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tl
ZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVl
LT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICAKKyAgICBBU1NFUlQocGNbNF0udS5jYWxsTGlu
a0luZm8pOworICAgIHJldHVybiBzZXRVcENhbGwoZXhlY0NhbGxlZSwgcGMsIGtpbmQsIGNhbGxl
ZUFzVmFsdWUsIHBjWzRdLnUuY2FsbExpbmtJbmZvKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2NhbGwpCit7CisgICAgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCk7CisgICAg
cmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ2FsbCk7Cit9CisKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpCit7CisgICAgTExJTlRfQkVHSU5fTk9f
U0VUX1BDKCk7CisgICAgcmV0dXJuIGdlbmVyaWNDYWxsKGV4ZWMsIHBjLCBDb2RlRm9yQ29uc3Ry
dWN0KTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfdmFyYXJncykK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIC8vIFRoaXMgbmVlZHMgdG86CisgICAgLy8gLSBT
ZXQgdXAgYSBjYWxsIGZyYW1lIHdoaWxlIHJlc3BlY3RpbmcgdGhlIHZhcmlhYmxlIGFyZ3VtZW50
cy4KKyAgICAvLyAtIEZpZ3VyZSBvdXQgd2hhdCB0byBjYWxsIGFuZCBjb21waWxlIGl0IGlmIG5l
Y2Vzc2FyeS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBhZGRyZXNz
IHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVlIGNhbGxl
ZUFzVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3RhdGUq
IGV4ZWNDYWxsZWUgPSBsb2FkVmFyYXJncygKKyAgICAgICAgZXhlYywgJmdsb2JhbERhdGEuaW50
ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpLAorICAgICAgICBMTElOVF9PUF9DKDIpLmpzVmFsdWUo
KSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCksIHBjWzRdLnUub3BlcmFuZCk7CisgICAgTExJTlRf
Q0FMTF9DSEVDS19FWENFUFRJT04oZXhlYywgcGMpOworICAgIAorICAgIGV4ZWNDYWxsZWUtPnVu
Y2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVj
Q2FsbGVlLT5zZXRDYWxsZXJGcmFtZShleGVjKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKFJlZ2lz
dGVyRmlsZTo6QXJndW1lbnRDb3VudCkudGFnKCkgPSBiaXR3aXNlX2Nhc3Q8aW50MzJfdD4ocGMg
KyBPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncykpOworICAgIAorICAgIHJldHVybiBzZXRV
cENhbGwoZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKK30KKwor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfZXZhbCkKK3sKKyAgICBMTElOVF9C
RUdJTl9OT19TRVRfUEMoKTsKKyAgICBKU1ZhbHVlIGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUCgx
KS5qc1ZhbHVlKCk7CisgICAgCisgICAgRXhlY1N0YXRlKiBleGVjQ2FsbGVlID0gZXhlYyArIHBj
WzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBleGVjQ2FsbGVlLT5zZXRBcmd1bWVudENvdW50SW5j
bHVkaW5nVGhpcyhwY1syXS51Lm9wZXJhbmQpOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZy
YW1lKGV4ZWMpOworICAgIGV4ZWNDYWxsZWUtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpDYWxs
ZWUpID0gY2FsbGVlQXNWYWx1ZTsKKyAgICBleGVjQ2FsbGVlLT5zZXRTY29wZUNoYWluKGV4ZWMt
PnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+c2V0UmV0dXJuUEMoYml0d2lzZV9jYXN0
PEluc3RydWN0aW9uKj4oJmxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KSk7CisgICAgZXhlY0Nh
bGxlZS0+c2V0Q29kZUJsb2NrKDApOworICAgIGV4ZWMtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxl
OjpBcmd1bWVudENvdW50KS50YWcoKSA9IGJpdHdpc2VfY2FzdDxpbnQzMl90PihwYyArIE9QQ09E
RV9MRU5HVEgob3BfY2FsbF9ldmFsKSk7CisgICAgCisgICAgaWYgKCFpc0hvc3RGdW5jdGlvbihj
YWxsZWVBc1ZhbHVlLCBnbG9iYWxGdW5jRXZhbCkpCisgICAgICAgIHJldHVybiBzZXRVcENhbGwo
ZXhlY0NhbGxlZSwgcGMsIENvZGVGb3JDYWxsLCBjYWxsZWVBc1ZhbHVlKTsKKyAgICAKKyAgICBn
bG9iYWxEYXRhLmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBldmFsKGV4ZWNDYWxsZWUpOworICAgIExM
SU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF90ZWFyX29mZl9hY3RpdmF0aW9uKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQVNT
RVJUKGV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpOworICAgIEpTVmFs
dWUgYWN0aXZhdGlvblZhbHVlID0gTExJTlRfT1AoMSkuanNWYWx1ZSgpOworICAgIGlmICghYWN0
aXZhdGlvblZhbHVlKSB7CisgICAgICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRS
KHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkp
IHsKKyAgICAgICAgICAgIGlmICghZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKQor
ICAgICAgICAgICAgICAgIGFzQXJndW1lbnRzKHYpLT50ZWFyT2ZmKGV4ZWMpOworICAgICAgICB9
CisgICAgICAgIExMSU5UX0VORCgpOworICAgIH0KKyAgICBKU0FjdGl2YXRpb24qIGFjdGl2YXRp
b24gPSBhc0FjdGl2YXRpb24oYWN0aXZhdGlvblZhbHVlKTsKKyAgICBhY3RpdmF0aW9uLT50ZWFy
T2ZmKGdsb2JhbERhdGEpOworICAgIGlmIChKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRSKHVu
bW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKS5qc1ZhbHVlKCkpCisg
ICAgICAgIGFzQXJndW1lbnRzKHYpLT5kaWRUZWFyT2ZmQWN0aXZhdGlvbihnbG9iYWxEYXRhLCBh
Y3RpdmF0aW9uKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0wo
c2xvd19wYXRoX3RlYXJfb2ZmX2FyZ3VtZW50cykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IEFTU0VSVChleGVjLT5jb2RlQmxvY2soKS0+dXNlc0FyZ3VtZW50cygpICYmICFleGVjLT5jb2Rl
QmxvY2soKS0+bmVlZHNGdWxsU2NvcGVDaGFpbigpKTsKKyAgICBhc0FyZ3VtZW50cyhleGVjLT51
bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlcihwY1sxXS51Lm9wZXJhbmQpKS5q
c1ZhbHVlKCkpLT50ZWFyT2ZmKGV4ZWMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3RyY2F0KQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsICZMTElOVF9PUCgyKSwgcGNbM10udS5vcGVy
YW5kKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90b19wcmltaXRpdmUp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkudG9QcmltaXRpdmUoZXhlYykpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfZ2V0X3BuYW1lcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUg
diA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAodi5pc1VuZGVmaW5lZE9yTnVsbCgp
KSB7CisgICAgICAgIHBjICs9IHBjWzVdLnUub3BlcmFuZDsKKyAgICAgICAgTExJTlRfRU5EKCk7
CisgICAgfQorICAgIAorICAgIEpTT2JqZWN0KiBvID0gdi50b09iamVjdChleGVjKTsKKyAgICBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IG8tPnN0cnVjdHVyZSgpOworICAgIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IqIGpzUHJvcGVydHlOYW1lSXRlcmF0b3IgPSBzdHJ1Y3R1cmUtPmVudW1lcmF0aW9u
Q2FjaGUoKTsKKyAgICBpZiAoIWpzUHJvcGVydHlOYW1lSXRlcmF0b3IgfHwganNQcm9wZXJ0eU5h
bWVJdGVyYXRvci0+Y2FjaGVkUHJvdG90eXBlQ2hhaW4oKSAhPSBzdHJ1Y3R1cmUtPnByb3RvdHlw
ZUNoYWluKGV4ZWMpKQorICAgICAgICBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yID0gSlNQcm9wZXJ0
eU5hbWVJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIG8pOworICAgIAorICAgIExMSU5UX09QKDEpID0g
SlNWYWx1ZShqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yKTsKKyAgICBMTElOVF9PUCgyKSA9IEpTVmFs
dWUobyk7CisgICAgTExJTlRfT1AoMykgPSBSZWdpc3Rlcjo6d2l0aEludCgwKTsKKyAgICBMTElO
VF9PUCg0KSA9IFJlZ2lzdGVyOjp3aXRoSW50KGpzUHJvcGVydHlOYW1lSXRlcmF0b3ItPnNpemUo
KSk7CisgICAgCisgICAgcGMgKz0gT1BDT0RFX0xFTkdUSChvcF9nZXRfcG5hbWVzKTsKKyAgICBM
TElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25leHRfcG5h
bWUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU09iamVjdCogYmFzZSA9IGFzT2JqZWN0
KExMSU5UX09QKDIpLmpzVmFsdWUoKSk7CisgICAgSlNTdHJpbmcqIHByb3BlcnR5ID0gYXNTdHJp
bmcoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBpZiAoYmFzZS0+aGFzUHJvcGVydHkoZXhl
YywgSWRlbnRpZmllcihleGVjLCBwcm9wZXJ0eS0+dmFsdWUoZXhlYykpKSkgeworICAgICAgICAv
LyBHbyB0byB0YXJnZXQuCisgICAgICAgIHBjICs9IHBjWzZdLnUub3BlcmFuZDsKKyAgICB9IC8v
IEVsc2UsIGRvbid0IGNoYW5nZSB0aGUgUEMsIHNvIHRoZSBpbnRlcnByZXRlciB3aWxsIHJlbG9v
cC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3B1c2hfc2NvcGUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHYgPSBMTElO
VF9PUCgxKS5qc1ZhbHVlKCk7CisgICAgSlNPYmplY3QqIG8gPSB2LnRvT2JqZWN0KGV4ZWMpOwor
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIAorICAgIExMSU5UX09QKDEpID0gbzsK
KyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cHVzaChvKSk7Cisg
ICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9wb3Bfc2NvcGUpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBleGVjLT5zZXRTY29wZUNo
YWluKGV4ZWMtPnNjb3BlQ2hhaW4oKS0+cG9wKCkpOworICAgIExMSU5UX0VORCgpOworfQorCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHVzaF9uZXdfc2NvcGUpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygp
OworICAgIEpTT2JqZWN0KiBzY29wZSA9IEpTU3RhdGljU2NvcGVPYmplY3Q6OmNyZWF0ZShleGVj
LCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwgTExJTlRfT1AoMykuanNW
YWx1ZSgpLCBEb250RGVsZXRlKTsKKyAgICBleGVjLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3Bl
Q2hhaW4oKS0+cHVzaChzY29wZSkpOworICAgIExMSU5UX1JFVFVSTihzY29wZSk7Cit9CisKK0xM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90aHJvdykKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIExMSU5UX1RIUk9XKExMSU5UX09QX0MoMSkuanNWYWx1ZSgpKTsKK30KKworTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Rocm93X3JlZmVyZW5jZV9lcnJvcikKK3sKKyAgICBM
TElOVF9CRUdJTigpOworICAgIExMSU5UX1RIUk9XKGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMs
IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSkpOwor
fQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVidWcpCit7CisgICAgTExJTlRf
QkVHSU4oKTsKKyAgICBpbnQgZGVidWdIb29rSUQgPSBwY1sxXS51Lm9wZXJhbmQ7CisgICAgaW50
IGZpcnN0TGluZSA9IHBjWzJdLnUub3BlcmFuZDsKKyAgICBpbnQgbGFzdExpbmUgPSBwY1szXS51
Lm9wZXJhbmQ7CisgICAgCisgICAgZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+ZGVidWcoZXhlYywg
c3RhdGljX2Nhc3Q8RGVidWdIb29rSUQ+KGRlYnVnSG9va0lEKSwgZmlyc3RMaW5lLCBsYXN0TGlu
ZSk7CisgICAgCisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9wcm9maWxlX3dpbGxfY2FsbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgICgq
UHJvZmlsZXI6OmVuYWJsZWRQcm9maWxlclJlZmVyZW5jZSgpKS0+d2lsbEV4ZWN1dGUoZXhlYywg
TExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfZGlkX2NhbGwpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICAoKlByb2ZpbGVyOjplbmFibGVkUHJvZmlsZXJSZWZlcmVuY2UoKSktPmRpZEV4
ZWN1dGUoZXhlYywgTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30K
KworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQp
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuaAko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRo
cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50U2xvd1BhdGhzX2gKKyNkZWZp
bmUgTExJbnRTbG93UGF0aHNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorCisjaWYgRU5BQkxFKExMSU5UKQorCituYW1lc3BhY2Ug
SlNDIHsKKworY2xhc3MgRXhlY1N0YXRlOworc3RydWN0IEluc3RydWN0aW9uOworCituYW1lc3Bh
Y2UgTExJbnQgeworCit0eXBlZGVmIGludDY0X3QgU2xvd1BhdGhSZXR1cm5UeXBlOworCitleHRl
cm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV9vcGVyYW5kKEV4ZWNTdGF0ZSos
IEluc3RydWN0aW9uKiwgaW50IGZyb21XaGVyZSwgaW50IG9wZXJhbmQpOworZXh0ZXJuICJDIiBT
bG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rp
b24qLCBpbnQgZnJvbVdoZXJlLCBpbnQgb3BlcmFuZCk7CisKKyNkZWZpbmUgTExJTlRfU0xPV19Q
QVRIX0RFQ0wobmFtZSkgXAorICAgIGV4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50
XyMjbmFtZShFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKKworTExJTlRfU0xPV19Q
QVRIX0RFQ0wodHJhY2VfcHJvbG9ndWUpOworTExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2VfcHJv
bG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpOworTExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2VfcHJv
bG9ndWVfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFj
ZV9hcml0eUNoZWNrX2Zvcl9jYWxsKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlX2FyaXR5
Q2hlY2tfZm9yX2NvbnN0cnVjdCk7CitMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZSk7CitMTElO
VF9TTE9XX1BBVEhfREVDTChzcGVjaWFsX3RyYWNlKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKGVu
dHJ5X29zcik7CitMTElOVF9TTE9XX1BBVEhfREVDTChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2Nh
bGwpOworTExJTlRfU0xPV19QQVRIX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3QpOworTExJTlRfU0xPV19QQVRIX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5Q2hlY2spOworTExJTlRfU0xPV19QQVRIX0RFQ0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9TTE9XX1BBVEhfREVDTChsb29wX29zcik7CitM
TElOVF9TTE9XX1BBVEhfREVDTChyZXBsYWNlKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHJlZ2lz
dGVyX2ZpbGVfY2hlY2spOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfYXJp
dHlDaGVjayk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0X2FyaXR5
Q2hlY2spOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hY3RpdmF0aW9u
KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfYXJndW1lbnRzKTsKK0xM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcyk7CitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfY29udmVydF90aGlzKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9uZXdfb2JqZWN0KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXdf
YXJyYXkpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJheV9idWZmZXIp
OworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19yZWdleHApOworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX25vdCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfZXEpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25lcSk7CitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfc3RyaWN0ZXEpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX25zdHJpY3RlcSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbGVzcyk7
CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbGVzc2VxKTsKK0xMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9ncmVhdGVyKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9ncmVhdGVyZXEpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3ByZV9pbmMpOwor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3ByZV9kZWMpOworTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3Bvc3RfaW5jKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9wb3N0X2RlYyk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdG9fanNudW1iZXIp
OworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSk7CitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfYWRkKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9t
dWwpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N1Yik7CitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfZGl2KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9t
b2QpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xzaGlmdCk7CitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfcnNoaWZ0KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF91cnNoaWZ0KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRhbmQpOwor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdG9yKTsKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9iaXR4b3IpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Jp
dG5vdCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2hlY2tfaGFzX2luc3RhbmNl
KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pbnN0YW5jZW9mKTsKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90eXBlb2YpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2lzX3VuZGVmaW5lZCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNf
Ym9vbGVhbik7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNfbnVtYmVyKTsKK0xM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc19zdHJpbmcpOworTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2lzX29iamVjdCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfaXNfZnVuY3Rpb24pOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2luKTsKK0xM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlKTsKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9yZXNvbHZlX3NraXApOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3Jlc29sdmVfZ2xvYmFsKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNv
bHZlX2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNv
bHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9yZXNvbHZlX2Jhc2UpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Vu
c3VyZV9wcm9wZXJ0eV9leGlzdHMpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jl
c29sdmVfd2l0aF9iYXNlKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNvbHZl
X3dpdGhfdGhpcyk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X2lkKTsK
K0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfYXJndW1lbnRzX2xlbmd0aCk7CitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X2lkKTsKK0xMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfaWQpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2dldF9ieV92YWwpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9hcmd1
bWVudF9ieV92YWwpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9wbmFt
ZSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCk7CitMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCk7CitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfcHV0X2J5X2luZGV4KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9wdXRfZ2V0dGVyX3NldHRlcik7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfam1w
X3Njb3Blcyk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfanRydWUpOworTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2pmYWxzZSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfamxlc3MpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2pubGVzcyk7
CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfamdyZWF0ZXIpOworTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2puZ3JlYXRlcik7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfamxlc3NlcSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfam5sZXNzZXEp
OworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2pncmVhdGVyZXEpOworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX2puZ3JlYXRlcmVxKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9zd2l0Y2hfaW1tKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9z
d2l0Y2hfY2hhcik7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3dpdGNoX3N0cmlu
Zyk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmMpOworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCk7CitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfY2FsbCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29uc3Ry
dWN0KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsX3ZhcmFyZ3MpOworTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NhbGxfZXZhbCk7CitMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfdGVhcl9vZmZfYWN0aXZhdGlvbik7CitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfdGVhcl9vZmZfYXJndW1lbnRzKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9zdHJjYXQpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3ByaW1p
dGl2ZSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X3BuYW1lcyk7CitMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV4dF9wbmFtZSk7CitMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcHVzaF9zY29wZSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfcG9wX3Njb3BlKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXNoX25ld19z
Y29wZSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdGhyb3cpOworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3Rocm93X3JlZmVyZW5jZV9lcnJvcik7CitMTElOVF9TTE9X
X1BBVEhfREVDTChzbG93X3BhdGhfZGVidWcpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX3Byb2ZpbGVfd2lsbF9jYWxsKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9w
cm9maWxlX2RpZF9jYWxsKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRp
ZiAvLyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludFNsb3dQYXRoc19oCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRodW5rcy5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxMSW50VGh1bmtz
LmgiCisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJKU0ludGVyZmFjZUpJVC5oIgor
I2luY2x1ZGUgIkxpbmtCdWZmZXIuaCIKKyNpbmNsdWRlICJMb3dMZXZlbEludGVycHJldGVyLmgi
CisKK25hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgTExJbnQgeworCitzdGF0aWMgTWFjcm9Bc3Nl
bWJsZXJDb2RlUmVmIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSwgdm9pZCAoKnRhcmdldCkoKSkKK3sKKyAgICBKU0ludGVyZmFjZUpJVCBqaXQ7CisgICAg
CisgICAgLy8gRklYTUU6IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGRvIGl0IG9u
IFg4NiwgYnV0IEknbSBub3Qgc3VyZSBJIGNhcmUuCisgICAgaml0Lm1vdmUoSlNJbnRlcmZhY2VK
SVQ6OlRydXN0ZWRJbW1QdHIoYml0d2lzZV9jYXN0PHZvaWQqPih0YXJnZXQpKSwgSlNJbnRlcmZh
Y2VKSVQ6OnJlZ1QwKTsKKyAgICBqaXQuanVtcChKU0ludGVyZmFjZUpJVDo6cmVnVDApOworICAg
IAorICAgIExpbmtCdWZmZXIgcGF0Y2hCdWZmZXIoKmdsb2JhbERhdGEsICZqaXQsIEdMT0JBTF9U
SFVOS19JRCk7CisgICAgcmV0dXJuIHBhdGNoQnVmZmVyLmZpbmFsaXplQ29kZSgpOworfQorCitN
YWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsRW50cnlUaHVua0dlbmVyYXRvcihK
U0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRo
SnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKTsKK30K
KworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3RydWN0RW50cnlUaHVua0dl
bmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
cHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDYWxsQXJp
dHlDaGVja1RodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICBy
ZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rpb25f
Zm9yX2NhbGxfYXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRh
LCBsbGludF9mdW5jdGlvbl9mb3JfY29uc3RydWN0X2FyaXR5X2NoZWNrKTsKK30KKworTWFjcm9B
c3NlbWJsZXJDb2RlUmVmIGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0
YSwgbGxpbnRfZXZhbF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9n
cmFtRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAg
cmV0dXJuIGdlbmVyYXRlVGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X3Byb2dyYW1f
cHJvbG9ndWUpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8v
IEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRo
dW5rcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFRo
dW5rcy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
VGh1bmtzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludFRodW5rc19oCisjZGVm
aW5lIExMSW50VGh1bmtzX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5B
QkxFKExMSU5UKQorCisjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBKU0dsb2JhbERhdGE7CisKK25hbWVzcGFjZSBMTEludCB7CisK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJhdG9y
KEpTR2xvYmFsRGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ29uc3Ry
dWN0RW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29k
ZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRh
Kik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RBcml0eUNoZWNr
VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXZh
bEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxlckNvZGVS
ZWYgcHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CisKK30gfSAvLyBu
YW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYg
Ly8gTExJbnRUaHVua3NfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xl
dmVsSW50ZXJwcmV0ZXIuYXNtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbQkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyMzg2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCisKKyMgQ3Jhc2ggY291cnNlIG9uIHRoZSBsYW5ndWFnZSB0aGF0IHRoaXMgaXMgd3JpdHRl
biBpbiAod2hpY2ggSSBqdXN0IGNhbGwKKyMgImFzc2VtYmx5IiBldmVuIHRob3VnaCBpdCdzIG1v
cmUgdGhhbiB0aGF0KToKKyMKKyMgLSBNb3N0bHkgZ2FzLXN0eWxlIG9wZXJhbmQgb3JkZXJpbmcu
IFRoZSBsYXN0IG9wZXJhbmQgdGVuZHMgdG8gYmUgdGhlCisjICAgZGVzdGluYXRpb24uIFNvICJh
IDo9IGIiIGlzIHdyaXR0ZW4gYXMgIm1vdiBiLCBhIi4gQnV0IHVubGlrZSBnYXMsCisjICAgY29t
cGFyaXNvbnMgYXJlIGluLW9yZGVyLCBzbyAiaWYgKGEgPCBiKSIgaXMgd3JpdHRlbiBhcworIyAg
ICJiaWx0IGEsIGIsIC4uLiIuCisjCisjIC0gImIiID0gYnl0ZSwgImgiID0gMTYtYml0IHdvcmQs
ICJpIiA9IDMyLWJpdCB3b3JkLCAicCIgPSBwb2ludGVyLgorIyAgIEN1cnJlbnRseSB0aGlzIGlz
IGp1c3QgMzItYml0IHNvICJpIiBhbmQgInAiIGFyZSBpbnRlcmNoYW5nZWFibGUKKyMgICBleGNl
cHQgd2hlbiBhbiBvcCBzdXBwb3J0cyBvbmUgYnV0IG5vdCB0aGUgb3RoZXIuCisjCisjIC0gSW4g
Z2VuZXJhbCwgdmFsaWQgb3BlcmFuZHMgZm9yIG1hY3JvIGludm9jYXRpb25zIGFuZCBpbnN0cnVj
dGlvbnMgYXJlCisjICAgcmVnaXN0ZXJzIChlZyAidDAiKSwgYWRkcmVzc2VzIChlZyAiNFt0MF0i
KSwgYmFzZS1pbmRleCBhZGRyZXNzZXMKKyMgICAoZWcgIjdbdDAsIHQxLCAyXSIpLCBhYnNvbHV0
ZSBhZGRyZXNzZXMgKGVnICIweGEwMDAwMDAwW10iKSwgb3IgbGFiZWxzCisjICAgKGVnICJfZm9v
IiBvciAiLmZvbyIpLiBNYWNybyBpbnZvY2F0aW9ucyBjYW4gYWxzbyB0YWtlIGFub255bW91cwor
IyAgIG1hY3JvcyBhcyBvcGVyYW5kcy4gSW5zdHJ1Y3Rpb25zIGNhbm5vdCB0YWtlIGFub255bW91
cyBtYWNyb3MuCisjCisjIC0gTGFiZWxzIG11c3QgaGF2ZSBuYW1lcyB0aGF0IGJlZ2luIHdpdGgg
ZWl0aGVyICJfIiBvciAiLiIuICBBICIuIiBsYWJlbAorIyAgIGlzIGxvY2FsIGFuZCBnZXRzIHJl
bmFtZWQgYmVmb3JlIGNvZGUgZ2VuIHRvIG1pbmltaXplIG5hbWVzcGFjZQorIyAgIHBvbGx1dGlv
bi4gQSAiXyIgbGFiZWwgaXMgYW4gZXh0ZXJuIHN5bWJvbCAoaS5lLiAiLmdsb2JsIikuIFRoZSAi
XyIKKyMgICBtYXkgb3IgbWF5IG5vdCBiZSByZW1vdmVkIGR1cmluZyBjb2RlIGdlbiBkZXBlbmRp
bmcgb24gd2hldGhlciB0aGUgYXNtCisjICAgY29udmVudGlvbnMgZm9yIEMgbmFtZSBtYW5nbGlu
ZyBvbiB0aGUgdGFyZ2V0IHBsYXRmb3JtIG1hbmRhdGUgYSAiXyIKKyMgICBwcmVmaXguCisjCisj
IC0gQSAibWFjcm8iIGlzIGEgbGFtYmRhIGV4cHJlc3Npb24sIHdoaWNoIG1heSBiZSBlaXRoZXIg
YW5vbnltb3VzIG9yCisjICAgbmFtZWQuIEJ1dCB0aGlzIGhhcyBjYXZlYXRzLiAibWFjcm8iIGNh
biB0YWtlIHplcm8gb3IgbW9yZSBhcmd1bWVudHMsCisjICAgd2hpY2ggbWF5IGJlIG1hY3JvcyBv
ciBhbnkgdmFsaWQgb3BlcmFuZHMsIGJ1dCBpdCBjYW4gb25seSByZXR1cm4KKyMgICBjb2RlLiBC
dXQgeW91IGNhbiBkbyBUdXJpbmctY29tcGxldGUgdGhpbmdzIHZpYSBjb250aW51YXRpb24gcGFz
c2luZworIyAgIHN0eWxlOiAibWFjcm8gZm9vIChhLCBiKSBiKGEpIGVuZCBmb28oZm9vLCBmb28p
Ii4gQWN0dWFsbHksIGRvbid0IGRvCisjICAgdGhhdCwgc2luY2UgeW91J2xsIGp1c3QgY3Jhc2gg
dGhlIGFzc2VtYmxlci4KKyMKKyMgLSBBbiAiaWYiIGlzIGEgY29uZGl0aW9uYWwgb24gc2V0dGlu
Z3MuIEFueSBpZGVudGlmaWVyIHN1cHBsaWVkIGluIHRoZQorIyAgIHByZWRpY2F0ZSBvZiBhbiAi
aWYiIGlzIGFzc3VtZWQgdG8gYmUgYSAjZGVmaW5lIHRoYXQgaXMgYXZhaWxhYmxlCisjICAgZHVy
aW5nIGNvZGUgZ2VuLiBTbyB5b3UgY2FuJ3QgdXNlICJpZiIgZm9yIGNvbXB1dGF0aW9uIGluIGEg
bWFjcm8sIGJ1dAorIyAgIHlvdSBjYW4gdXNlIGl0IHRvIHNlbGVjdCBkaWZmZXJlbnQgcGllY2Vz
IG9mIGNvZGUgZm9yIGRpZmZlcmVudAorIyAgIHBsYXRmb3Jtcy4KKyMKKyMgLSBBcmd1bWVudHMg
dG8gbWFjcm9zIGZvbGxvdyBsZXhpY2FsIHNjb3BpbmcgcmF0aGVyIHRoYW4gZHluYW1pYyBzY29w
aW5nLgorIyAgIENvbnN0J3MgYWxzbyBmb2xsb3cgbGV4aWNhbCBzY29waW5nIGFuZCBtYXkgb3Zl
cnJpZGUgKGhpZGUpIGFyZ3VtZW50cworIyAgIG9yIG90aGVyIGNvbnN0cy4gQWxsIHZhcmlhYmxl
cyAoYXJndW1lbnRzIGFuZCBjb25zdGFudHMpIGNhbiBiZSBib3VuZAorIyAgIHRvIG9wZXJhbmRz
LiBBZGRpdGlvbmFsbHksIGFyZ3VtZW50cyAoYnV0IG5vdCBjb25zdGFudHMpIGNhbiBiZSBib3Vu
ZAorIyAgIHRvIG1hY3Jvcy4KKworCisjIEJlbG93IHdlIGhhdmUgYSBidW5jaCBvZiBjb25zdGFu
dCBkZWNsYXJhdGlvbnMuIEVhY2ggY29uc3RhbnQgbXVzdCBoYXZlCisjIGEgY29ycmVzcG9uZGlu
ZyBBU1NFUlQoKSBpbiBMTEludERhdGEuY3BwLgorCisjIFRoZXNlIGRlY2xhcmF0aW9ucyBtdXN0
IG1hdGNoIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oLgorY29uc3QgQ2FsbEZyYW1lSGVhZGVy
U2l6ZSA9IDQ4Citjb25zdCBBcmd1bWVudENvdW50ID0gLTQ4Citjb25zdCBDYWxsZXJGcmFtZSA9
IC00MAorY29uc3QgQ2FsbGVlID0gLTMyCitjb25zdCBTY29wZUNoYWluID0gLTI0Citjb25zdCBS
ZXR1cm5QQyA9IC0xNgorY29uc3QgQ29kZUJsb2NrID0gLTgKKworY29uc3QgVGhpc0FyZ3VtZW50
T2Zmc2V0ID0gLUNhbGxGcmFtZUhlYWRlclNpemUgLSA4CisKKyMgRGVjbGFyZSBzb21lIGFsaWFz
ZXMgZm9yIHRoZSByZWdpc3RlcnMgd2Ugd2lsbCB1c2UuCitjb25zdCBQQyA9IHQ0CisKKyMgT2Zm
c2V0cyBuZWVkZWQgZm9yIHJlYXNvbmluZyBhYm91dCB2YWx1ZSByZXByZXNlbnRhdGlvbi4KK2lm
IEJJR19FTkRJQU4KKyAgICBjb25zdCBUYWdPZmZzZXQgPSAwCisgICAgY29uc3QgUGF5bG9hZE9m
ZnNldCA9IDQKK2Vsc2UKKyAgICBjb25zdCBUYWdPZmZzZXQgPSA0CisgICAgY29uc3QgUGF5bG9h
ZE9mZnNldCA9IDAKK2VuZAorCisjIFZhbHVlIHJlcHJlc2VudGF0aW9uIGNvbnN0YW50cy4KK2Nv
bnN0IEludDMyVGFnID0gLTEKK2NvbnN0IEJvb2xlYW5UYWcgPSAtMgorY29uc3QgTnVsbFRhZyA9
IC0zCitjb25zdCBVbmRlZmluZWRUYWcgPSAtNAorY29uc3QgQ2VsbFRhZyA9IC01Citjb25zdCBF
bXB0eVZhbHVlVGFnID0gLTYKK2NvbnN0IERlbGV0ZWRWYWx1ZVRhZyA9IC03Citjb25zdCBMb3dl
c3RUYWcgPSBEZWxldGVkVmFsdWVUYWcKKworIyBUeXBlIGNvbnN0YW50cy4KK2NvbnN0IFN0cmlu
Z1R5cGUgPSA1Citjb25zdCBPYmplY3RUeXBlID0gMTMKKworIyBUeXBlIGZsYWdzIGNvbnN0YW50
cy4KK2NvbnN0IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPSAxCitjb25zdCBJbXBsZW1lbnRzSGFz
SW5zdGFuY2UgPSAyCitjb25zdCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlID0gOAorCisj
IEhlYXAgYWxsb2NhdGlvbiBjb25zdGFudHMuCitjb25zdCBKU0ZpbmFsT2JqZWN0U2l6ZUNsYXNz
SW5kZXggPSAzCisKKyMgQnl0ZWNvZGUgb3BlcmFuZCBjb25zdGFudHMuCitjb25zdCBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAwMDAKKworIyBDb2RlIHR5cGUgY29uc3RhbnRz
LgorY29uc3QgR2xvYmFsQ29kZSA9IDAKK2NvbnN0IEV2YWxDb2RlID0gMQorY29uc3QgRnVuY3Rp
b25Db2RlID0gMgorCisjIFRoZSBpbnRlcnByZXRlciBzdGVhbHMgdGhlIHRhZyB3b3JkIG9mIHRo
ZSBhcmd1bWVudCBjb3VudC4KK2NvbnN0IExMSW50UmV0dXJuUEMgPSBBcmd1bWVudENvdW50ICsg
VGFnT2Zmc2V0CisKKyMgVGhpcyBtdXN0IG1hdGNoIHd0Zi9WZWN0b3IuaC4KK2NvbnN0IFZlY3Rv
clNpemVPZmZzZXQgPSAwCitjb25zdCBWZWN0b3JCdWZmZXJPZmZzZXQgPSA0CisKKyMgU3RyaW5n
IGZsYWdzLgorY29uc3QgSGFzaEZsYWdzOEJpdEJ1ZmZlciA9IDY0CisKKyMgVXRpbGl0aWVzCitt
YWNybyBjcmFzaCgpCisgICAgc3RvcmVpIDAsIDB4YmJhZGJlZWZbXQorICAgIG1vdmUgMCwgdDAK
KyAgICBjYWxsIHQwCitlbmQKKworbWFjcm8gYXNzZXJ0KGFzc2VydGlvbikKKyAgICBpZiBBU1NF
UlRfRU5BQkxFRAorICAgICAgICBhc3NlcnRpb24oLm9rKQorICAgICAgICBjcmFzaCgpCisgICAg
Lm9rOgorICAgIGVuZAorZW5kCisKK21hY3JvIHByZXNlcnZlUmV0dXJuQWRkcmVzc0FmdGVyQ2Fs
bChkZXN0aW5hdGlvblJlZ2lzdGVyKQorICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgbHIsIGRl
c3RpbmF0aW9uUmVnaXN0ZXIKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9wIGRlc3RpbmF0aW9u
UmVnaXN0ZXIKKyAgICBlbHNlCisgICAgICAgIGVycm9yCisgICAgZW5kCitlbmQKKworbWFjcm8g
cmVzdG9yZVJldHVybkFkZHJlc3NCZWZvcmVSZXR1cm4oc291cmNlUmVnaXN0ZXIpCisgICAgaWYg
QVJNdjcKKyAgICAgICAgbW92ZSBzb3VyY2VSZWdpc3RlciwgbHIKKyAgICBlbHNpZiBYODYKKyAg
ICAgICAgcHVzaCBzb3VyY2VSZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBl
bmQKK2VuZAorCittYWNybyBkaXNwYXRjaChhZHZhbmNlKQorICAgIGFkZHAgYWR2YW5jZSAqIDQs
IFBDCisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQo
cGNPZmZzZXQpCisgICAgbHNoaWZ0aSAyLCBwY09mZnNldAorICAgIGFkZHAgcGNPZmZzZXQsIFBD
CisgICAgam1wIFtQQ10KK2VuZAorCittYWNybyBkaXNwYXRjaEJyYW5jaChwY09mZnNldCkKKyAg
ICBsb2FkaSBwY09mZnNldCwgdDAKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDApCitl
bmQKKworbWFjcm8gZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgIGxvYWRpIEFyZ3VtZW50Q291bnQg
KyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGNDYWxsMihm
dW5jdGlvbiwgYXJnMSwgYXJnMikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIGFyZzEsIHQw
CisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICBlbHNpZiBYODYKKyAgICAgICAgcG9rZSBhcmcx
LCAwCisgICAgICAgIHBva2UgYXJnMiwgMQorICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBl
bmQKKyAgICBjYWxsIGZ1bmN0aW9uCitlbmQKKworIyBUaGlzIGJhcmVseSB3b3Jrcy4gYXJnMyBh
bmQgYXJnNCBzaG91bGQgcHJvYmFibHkgYmUgaW1tZWRpYXRlcy4KK21hY3JvIGNDYWxsNChmdW5j
dGlvbiwgYXJnMSwgYXJnMiwgYXJnMywgYXJnNCkKKyAgICBpZiBBUk12NworICAgICAgICBtb3Zl
IGFyZzEsIHQwCisgICAgICAgIG1vdmUgYXJnMiwgdDEKKyAgICAgICAgbW92ZSBhcmczLCB0Mgor
ICAgICAgICBtb3ZlIGFyZzQsIHQzCisgICAgZWxzaWYgWDg2CisgICAgICAgIHBva2UgYXJnMSwg
MAorICAgICAgICBwb2tlIGFyZzIsIDEKKyAgICAgICAgcG9rZSBhcmczLCAyCisgICAgICAgIHBv
a2UgYXJnNCwgMworICAgIGVsc2UKKyAgICAgICAgZXJyb3IKKyAgICBlbmQKKyAgICBjYWxsIGZ1
bmN0aW9uCitlbmQKKworbWFjcm8gY2FsbFNsb3dQYXRoKHNsb3dfcGF0aCkKKyAgICBjQ2FsbDIo
c2xvd19wYXRoLCBjZnIsIFBDKQorICAgIG1vdmUgdDAsIFBDCisgICAgbW92ZSB0MSwgY2ZyCitl
bmQKKworIyBEZWJ1Z2dpbmcgb3BlcmF0aW9uIGlmIHlvdSdkIGxpa2UgdG8gcHJpbnQgYW4gb3Bl
cmFuZCBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtLiBmcm9tV2hlcmUKKyMgc2hvdWxkIGJlIGFu
IGltbWVkaWF0ZSBpbnRlZ2VyIC0gYW55IGludGVnZXIgeW91IGxpa2U7IHVzZSBpdCB0byBpZGVu
dGlmeSB0aGUgcGxhY2UgeW91J3JlCisjIGRlYnVnZ2luZyBmcm9tLiBvcGVyYW5kIHNob3VsZCBs
aWtld2lzZSBiZSBhbiBpbW1lZGlhdGUsIGFuZCBzaG91bGQgaWRlbnRpZnkgdGhlIG9wZXJhbmQK
KyMgaW4gdGhlIGluc3RydWN0aW9uIHN0cmVhbSB5b3UnZCBsaWtlIHRvIHByaW50IG91dC4KK21h
Y3JvIHRyYWNlT3BlcmFuZChmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgY0NhbGw0KF9sbGludF90
cmFjZV9vcGVyYW5kLCBjZnIsIFBDLCBmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgbW92ZSB0MCwg
UEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYgeW91
J2QgbGlrZSB0byBwcmludCB0aGUgdmFsdWUgb2YgYW4gb3BlcmFuZCBpbiB0aGUgaW5zdHJ1Y3Rp
b24KKyMgc3RyZWFtLiBTYW1lIGFzIHRyYWNlT3BlcmFuZCgpLCBidXQgYXNzdW1lcyB0aGF0IHRo
ZSBvcGVyYW5kIGlzIGEgcmVnaXN0ZXIsIGFuZCBwcmludHMgaXRzCisjIHZhbHVlLgorbWFjcm8g
dHJhY2VWYWx1ZShmcm9tV2hlcmUsIG9wZXJhbmQpCisgICAgY0NhbGw0KF9sbGludF90cmFjZV92
YWx1ZSwgY2ZyLCBQQywgZnJvbVdoZXJlLCBvcGVyYW5kKQorICAgIG1vdmUgdDAsIFBDCisgICAg
bW92ZSB0MSwgY2ZyCitlbmQKKworbWFjcm8gdHJhY2VFeGVjdXRpb24oKQorICAgIGlmIEVYRUNV
VElPTl9UUkFDSU5HCisgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfdHJhY2UpCisgICAgZW5k
CitlbmQKKworIyBDYWxsIGEgc2xvd19wYXRoIGZvciBjYWxsIG9wY29kZXMuCittYWNybyBjYWxs
Q2FsbFNsb3dQYXRoKGFkdmFuY2UsIHNsb3dfcGF0aCwgYWN0aW9uKQorICAgIGFkZHAgYWR2YW5j
ZSAqIDQsIFBDLCB0MAorICAgIHN0b3JlcCB0MCwgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtj
ZnJdCisgICAgY0NhbGwyKHNsb3dfcGF0aCwgY2ZyLCBQQykKKyAgICBtb3ZlIHQxLCBjZnIKKyAg
ICBhY3Rpb24odDApCitlbmQKKworbWFjcm8gc2xvd1BhdGhGb3JDYWxsKGFkdmFuY2UsIHNsb3df
cGF0aCkKKyAgICBjYWxsQ2FsbFNsb3dQYXRoKAorICAgICAgICBhZHZhbmNlLAorICAgICAgICBz
bG93X3BhdGgsCisgICAgICAgIG1hY3JvIChjYWxsZWUpCisgICAgICAgICAgICBjYWxsIGNhbGxl
ZQorICAgICAgICAgICAgZGlzcGF0Y2hBZnRlckNhbGwoKQorICAgICAgICBlbmQpCitlbmQKKwor
bWFjcm8gY2hlY2tTd2l0Y2hUb0pJVChpbmNyZW1lbnQsIGFjdGlvbikKKyAgICBpZiBKSVRfRU5B
QkxFRAorICAgICAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICAgICAgYmFkZGlzIGlu
Y3JlbWVudCwgQ29kZUJsb2NrOjptX2xsaW50RXhlY3V0ZUNvdW50ZXJbdDBdLCAuY29udGludWUK
KyAgICAgICAgYWN0aW9uKCkKKyAgICAuY29udGludWU6CisgICAgZW5kCitlbmQKKworbWFjcm8g
Y2hlY2tTd2l0Y2hUb0pJVEZvckxvb3AoKQorICAgIGNoZWNrU3dpdGNoVG9KSVQoCisgICAgICAg
IDEsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBzdG9yZWkgUEMsIEFyZ3VtZW50Q291
bnQgKyBUYWdPZmZzZXRbY2ZyXQorICAgICAgICAgICAgY0NhbGwyKF9sbGludF9sb29wX29zciwg
Y2ZyLCBQQykKKyAgICAgICAgICAgIG1vdmUgdDEsIGNmcgorICAgICAgICAgICAgYnRweiB0MCwg
LnJlY292ZXIKKyAgICAgICAgICAgIGptcCB0MAorICAgICAgICAucmVjb3ZlcjoKKyAgICAgICAg
ICAgIGxvYWRpIEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXRbY2ZyXSwgUEMKKyAgICAgICAgZW5k
KQorZW5kCisKK21hY3JvIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgY2hlY2tT
d2l0Y2hUb0pJVCgKKyAgICAgICAgMTAsCisgICAgICAgIG1hY3JvICgpCisgICAgICAgICAgICBj
YWxsU2xvd1BhdGgoX2xsaW50X3JlcGxhY2UpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBh
c3NlcnROb3RDb25zdGFudChpbmRleCkKKyAgICBhc3NlcnQobWFjcm8gKG9rKSBiaWx0IGluZGV4
LCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwgb2sgZW5kKQorZW5kCisKKyMgSW5kZXgsIHRh
ZywgYW5kIHBheWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QK
KyMgY2hhbmdlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFyaWFibGUoaW5kZXgsIHRhZywgcGF5
bG9hZCkKKyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29u
c3RhbnQKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5j
b25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgcGF5bG9hZAorICAgIGxvYWRwIENv
ZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3RvckJ1ZmZlck9mZnNldFtwYXlsb2Fk
XSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5k
ZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAj
IHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRS
ZWdpc3RlckluZGV4KSA8PCAzLgorICAgIGxvYWRwIFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwg
OF0sIHRhZworICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXls
b2FkCisuZG9uZToKK2VuZAorCisjIEluZGV4IGFuZCBwYXlsb2FkIG1heSBiZSB0aGUgc2FtZSBy
ZWdpc3Rlci4gSW5kZXggbWF5IGJlIGNsb2JiZXJlZC4KK21hY3JvIGxvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnKGluZGV4LCB0YWcsIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgbG9hZGkgVGFnT2Zmc2V0W2Nmciwg
aW5kZXgsIDhdLCB0YWcKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBw
YXlsb2FkCisgICAgam1wIC5kb25lCisuY29uc3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nm
cl0sIHRhZworICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZlY3Rv
ckJ1ZmZlck9mZnNldFt0YWddLCB0YWcKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVy
ZTogaWYgdGhlIGluZGV4IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVy
SW5kZXgsCisgICAgIyB0aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBG
aXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCkgPDwgMy4KKyAgICBsc2hpZnRpIDMsIGluZGV4Cisg
ICAgYWRkcCBpbmRleCwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFt0YWddLCBwYXlsb2Fk
CisgICAgbG9hZHAgVGFnT2Zmc2V0W3RhZ10sIHRhZworLmRvbmU6CitlbmQKKworbWFjcm8gbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oaW5kZXgsIHRhZ0NoZWNrLCBwYXls
b2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25z
dGFudAorICAgIHRhZ0NoZWNrKFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XSkKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdLCBwYXlsb2FkCisgICAgam1wIC5kb25lCisuY29u
c3RhbnQ6CisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHBheWxvYWQKKyAgICBsb2FkcCBDb2Rl
QmxvY2s6Om1fY29uc3RhbnRSZWdpc3RlcnMgKyBWZWN0b3JCdWZmZXJPZmZzZXRbcGF5bG9hZF0s
IHBheWxvYWQKKyAgICAjIFRoZXJlIGlzIGEgYml0IG9mIGV2aWwgaGVyZTogaWYgdGhlIGluZGV4
IGNvbnRhaW5zIGEgdmFsdWUgPj0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgsCisgICAgIyB0
aGVuIHZhbHVlIDw8IDMgd2lsbCBiZSBlcXVhbCB0byAodmFsdWUgLSBGaXJzdENvbnN0YW50UmVn
aXN0ZXJJbmRleCkgPDwgMy4KKyAgICB0YWdDaGVjayhUYWdPZmZzZXRbcGF5bG9hZCwgaW5kZXgs
IDhdKQorICAgIGxvYWRwIFBheWxvYWRPZmZzZXRbcGF5bG9hZCwgaW5kZXgsIDhdLCBwYXlsb2Fk
CisuZG9uZToKK2VuZAorCisjIEluZGV4IGFuZCBwYXlsb2FkIG11c3QgYmUgZGlmZmVyZW50IHJl
Z2lzdGVycy4gSW5kZXggaXMgbm90IG11dGF0ZWQuIFVzZQorIyB0aGlzIGlmIHlvdSBrbm93IHdo
YXQgdGhlIHRhZyBvZiB0aGUgdmFyaWFibGUgc2hvdWxkIGJlLiBEb2luZyB0aGUgdGFnCisjIHRl
c3QgYXMgcGFydCBvZiBsb2FkaW5nIHRoZSB2YXJpYWJsZSByZWR1Y2VzIHJlZ2lzdGVyIHVzZSwg
YnV0IG1heSBub3QKKyMgYmUgZmFzdGVyIHRoYW4gZG9pbmcgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZSBmb2xsb3dlZCBieSBhIGJyYW5jaCBvbiB0aGUKKyMgdGFnLgorbWFjcm8gbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQoaW5kZXgsIGV4cGVjdGVkVGFnLCBwYXlsb2FkLCBzbG93KQorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkVGFnQ3VzdG9tKAorICAgICAgICBpbmRleCwK
KyAgICAgICAgbWFjcm8gKGFjdHVhbFRhZykgYmluZXEgYWN0dWFsVGFnLCBleHBlY3RlZFRhZywg
c2xvdyBlbmQsCisgICAgICAgIHBheWxvYWQpCitlbmQKKworbWFjcm8gbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRVbmNoZWNrZWQoaW5kZXgsIHBheWxvYWQpCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWRUYWdDdXN0b20oCisgICAgICAgIGluZGV4LAorICAgICAgICBtYWNy
byAoYWN0dWFsVGFnKSBlbmQsCisgICAgICAgIHBheWxvYWQpCitlbmQKKworbWFjcm8gd3JpdGVC
YXJyaWVyKHRhZywgcGF5bG9hZCkKKyAgICAjIE5vdGhpbmcgdG8gZG8sIHNpbmNlIHdlIGRvbid0
IGhhdmUgYSBnZW5lcmF0aW9uYWwgb3IgaW5jcmVtZW50YWwgY29sbGVjdG9yLgorZW5kCisKK21h
Y3JvIHZhbHVlUHJvZmlsZSh0YWcsIHBheWxvYWQsIHByb2ZpbGUpCisgICAgc3RvcmVpIHRhZywg
VmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZzZXRbcHJvZmlsZV0KKyAgICBzdG9yZWkg
cGF5bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3Byb2ZpbGVd
CitlbmQKKworCisjIEluZGljYXRlIHRoZSBiZWdpbm5pbmcgb2YgTExJbnQuCitfbGxpbnRfYmVn
aW46CisgICAgY3Jhc2goKQorCisKKyMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJwcmV0ZXIK
KworbWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQor
ICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rp
b246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9h
ZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGxbdGFyZ2V0UmVnaXN0ZXJd
LCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0Q29kZUJs
b2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRS
ZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rl
cl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVC
bG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKwor
bWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisgICAgbG9h
ZHAgQ29kZUJsb2NrW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gZnVuY3Rpb25D
b2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCisgICAgc3RvcmVwIHNvdXJjZVJlZ2lzdGVy
LCBDb2RlQmxvY2tbY2ZyXQorZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVy
KHNvdXJjZVJlZ2lzdGVyKQorICAgICMgTm90aGluZyB0byBkbyEKK2VuZAorCisjIERvIHRoZSBi
YXJlIG1pbmltdW0gcmVxdWlyZWQgdG8gZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQQywgbGVh
dmUgdGhlIENvZGVCbG9jayoKKyMgaW4gdDEuIE1heSBhbHNvIHRyaWdnZXIgcHJvbG9ndWUgZW50
cnkgT1NSLgorbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tTZXR0ZXIs
IG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQorICAgIHByZXNlcnZlUmV0dXJuQWRkcmVzc0Fm
dGVyQ2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQgY2hlY2sg
aWYgd2Ugc2hvdWxkIE9TUi4KKyAgICBzdG9yZXAgdDIsIFJldHVyblBDW2Nmcl0KKyAgICBpZiBF
WEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsU2xvd1BhdGgodHJhY2VTbG93UGF0aCkKKyAg
ICBlbmQKKyAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCisgICAgaWYgSklUX0VOQUJMRUQKKyAgICAg
ICAgYmFkZGlzIDUsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3QxXSwgLmNvbnRp
bnVlCisgICAgICAgIGNDYWxsMihvc3JTbG93UGF0aCwgY2ZyLCBQQykKKyAgICAgICAgbW92ZSB0
MSwgY2ZyCisgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgIGxvYWRwIFJldHVyblBD
W2Nmcl0sIHQyCisgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJuKHQyKQor
ICAgICAgICBqbXAgdDAKKyAgICAucmVjb3ZlcjoKKyAgICAgICAgY29kZUJsb2NrR2V0dGVyKHQx
KQorICAgIC5jb250aW51ZToKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tTZXR0ZXIodDEpCisgICAg
CisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVjdGlv
bnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0
aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCitlbmQKKworIyBFeHBlY3RzIHRoYXQg
Q29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGlu
ZC4KKyMgTXVzdCBjYWxsIGRpc3BhdGNoKDApIGFmdGVyIGNhbGxpbmcgdGhpcy4KK21hY3JvIGZ1
bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1NraXApCisgICAgIyBQcm9maWxlIHRoZSBh
cmd1bWVudHMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gY2hvaWNlIGJ1dCB0byBkbyB0aGlz
LiBUaGlzCisgICAgIyBjb2RlIGlzIHByZXR0eSBob3JyZW5kb3VzIGJlY2F1c2Ugb2YgdGhlIGRp
ZmZlcmVuY2UgaW4gb3JkZXJpbmcgYmV0d2VlbgorICAgICMgYXJndW1lbnRzIGFuZCB2YWx1ZSBw
cm9maWxlcywgdGhlIGRlc2lyZSB0byBoYXZlIGEgc2ltcGxlIGxvb3AtZG93bi10by16ZXJvCisg
ICAgIyBsb29wLCBhbmQgdGhlIGRlc2lyZSB0byB1c2Ugb25seSB0aHJlZSByZWdpc3RlcnMgc28g
YXMgdG8gcHJlc2VydmUgdGhlIFBDIGFuZAorICAgICMgdGhlIGNvZGUgYmxvY2suIEl0IGlzIGxp
a2VseSB0aGF0IHRoaXMgY29kZSBzaG91bGQgYmUgcmV3cml0dGVuIGluIGEgbW9yZQorICAgICMg
b3B0aW1hbCB3YXkgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBoYXZlIG1vcmUgdGhhbiBmaXZlIHJl
Z2lzdGVycyBhdmFpbGFibGUKKyAgICAjIGZvciBhcmJpdHJhcnkgdXNlIGluIHRoZSBpbnRlcnBy
ZXRlci4KKyAgICBsb2FkaSBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIHQwCisgICAg
YWRkaSAtcHJvZmlsZUFyZ1NraXAsIHQwICMgVXNlIGFkZGkgYmVjYXVzZSB0aGF0J3Mgd2hhdCBo
YXMgdGhlIHBlZXBob2xlCisgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHQwLCAwLCBvayBl
bmQpCisgICAgYnRpeiB0MCwgLmFyZ3VtZW50UHJvZmlsZURvbmUKKyAgICBsb2FkcCBDb2RlQmxv
Y2s6Om1fYXJndW1lbnRWYWx1ZVByb2ZpbGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QxXSwgdDMK
KyAgICBtdWxpIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0MiAjIEFhYWFhaGhoaCEgTmVlZCBz
dHJlbmd0aCByZWR1Y3Rpb24hCisgICAgbmVnaSB0MAorICAgIGxzaGlmdGkgMywgdDAKKyAgICBh
ZGRwIHQyLCB0MworLmFyZ3VtZW50UHJvZmlsZUxvb3A6CisgICAgbG9hZGkgVGhpc0FyZ3VtZW50
T2Zmc2V0ICsgVGFnT2Zmc2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIK
KyAgICBzdWJwIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQzCisgICAgc3RvcmVpIHQyLCBwcm9maWxl
QXJnU2tpcCAqIHNpemVvZiBWYWx1ZVByb2ZpbGUgKyBWYWx1ZVByb2ZpbGU6Om1fYnVja2V0cyAr
IFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBQYXlsb2FkT2Zm
c2V0ICsgOCAtIHByb2ZpbGVBcmdTa2lwICogOFtjZnIsIHQwXSwgdDIKKyAgICBzdG9yZWkgdDIs
IHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVlUHJvZmlsZTo6bV9i
dWNrZXRzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBiYWRkaW56IDgsIHQwLCAuYXJndW1lbnRQ
cm9maWxlTG9vcAorLmFyZ3VtZW50UHJvZmlsZURvbmU6CisgICAgCisgICAgIyBDaGVjayBzdGFj
ayBoZWlnaHQuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bUNhbGxlZVJlZ2lzdGVyc1t0MV0s
IHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERhdGFbdDFdLCB0MgorICAgIGxvYWRw
IEpTR2xvYmFsRGF0YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MiAgICMgRklYTUU6IENhbiBnZXQgdG8g
dGhlIFJlZ2lzdGVyRmlsZSBmcm9tIHRoZSBKSVRTdGFja0ZyYW1lCisgICAgbHNoaWZ0aSAzLCB0
MAorICAgIGFkZHAgdDAsIGNmciwgdDAKKyAgICBicGFlcSBJbnRlcnByZXRlcjo6bV9yZWdpc3Rl
ckZpbGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAsIC5zdGFja0hlaWdodE9LCisKKyAg
ICAjIFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVkIHRvIGNhbGwgYSBzbG93X3BhdGgu
CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9yZWdpc3Rlcl9maWxlX2NoZWNrKQorLnN0YWNrSGVp
Z2h0T0s6CitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBp
cyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KK21hY3JvIGZ1bmN0aW9uQXJpdHlDaGVj
ayhkb25lTGFiZWwsIHNsb3dfcGF0aCkKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0ICsgQXJndW1l
bnRDb3VudFtjZnJdLCB0MAorICAgIGJpYWVxIHQwLCBDb2RlQmxvY2s6Om1fbnVtUGFyYW1ldGVy
c1t0MV0sIGRvbmVMYWJlbAorICAgIGNDYWxsMihzbG93X3BhdGgsIGNmciwgUEMpICAgIyBUaGlz
IHNsb3dfcGF0aCBoYXMgYSBzaW1wbGUgcHJvdG9jb2w6IHQwID0gMCA9PiBubyBlcnJvciwgdDAg
IT0gMCA9PiBlcnJvcgorICAgIG1vdmUgdDEsIGNmcgorICAgIGJ0aXogdDAsIC5jb250aW51ZQor
ICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpT
R2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERh
dGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorLmNvbnRpbnVlOgorICAgICMgUmVsb2Fk
IENvZGVCbG9jayBhbmQgUEMsIHNpbmNlIHRoZSBzbG93X3BhdGggY2xvYmJlcmVkIGl0LgorICAg
IGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0cnVj
dGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2luc3Ry
dWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCisgICAgam1wIGRvbmVMYWJlbAor
ZW5kCisKK19sbGludF9wcm9ncmFtX3Byb2xvZ3VlOgorICAgIHByb2xvZ3VlKG5vdEZ1bmN0aW9u
Q29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5
X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50
X2V2YWxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUobm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIs
IG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyLCBfbGxpbnRfdHJh
Y2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfZnVuY3Rpb25fZm9yX2Nh
bGxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVy
LCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2VudHJ5X29zcl9mdW5jdGlvbl9mb3Jf
Y2FsbCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jYWxsKQorLmZ1bmN0aW9u
Rm9yQ2FsbEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24oMCkKKyAgICBkaXNwYXRj
aCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZToKKyAg
ICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25D
b2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCwg
X2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCisuZnVuY3Rpb25G
b3JDb25zdHJ1Y3RCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRpYWxpemF0aW9uKDEpCisgICAgZGlz
cGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrOgor
ICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9ja0dldHRlciwgZnVuY3Rpb25Db2Rl
QmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVj
aywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpCisgICAgZnVuY3Rpb25Bcml0eUNo
ZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X3Nsb3dfcGF0aF9jYWxsX2FyaXR5Q2hl
Y2spCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlfY2hlY2s6CisgICAg
cHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxvY2tHZXR0ZXIsIGZ1bmN0aW9uQ29k
ZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJp
dHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NvbnN0cnVjdCkKKyAgICBmdW5j
dGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29uc3RydWN0QmVnaW4sIF9sbGludF9zbG93X3Bh
dGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCisKKyMgSW5zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb25z
CisKK19sbGludF9vcF9lbnRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29k
ZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVZhcnNbdDJdLCB0Mgor
ICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZQorICAgIG1vdmUgVW5kZWZpbmVkVGFnLCB0MAorICAg
IG1vdmUgMCwgdDEKKy5vcEVudGVyTG9vcDoKKyAgICBzdWJpIDEsIHQyCisgICAgc3RvcmVpIHQw
LCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MiwgOF0KKyAgICBidGlueiB0MiwgLm9wRW50ZXJMb29wCisub3BFbnRlckRvbmU6CisgICAg
ZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfY3JlYXRlX2FjdGl2YXRpb246CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIs
IHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0aXZhdGlvbkRvbmUKKyAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYWN0aXZhdGlvbikKKy5vcENyZWF0ZUFj
dGl2YXRpb25Eb25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luaXRfbGF6eV9y
ZWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN0b3Jl
aSBFbXB0eVZhbHVlVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgMCwgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2Ny
ZWF0ZV9hcmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3Jl
YXRlQXJndW1lbnRzRG9uZQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0
ZV9hcmd1bWVudHMpCisub3BDcmVhdGVBcmd1bWVudHNEb25lOgorICAgIGRpc3BhdGNoKDIpCisK
KworbWFjcm8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNpemVDbGFzc0luZGV4LCBjbGFzc0luZm9P
ZmZzZXQsIHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNsb3dDYXNlKQor
ICAgIGlmIEFMV0FZU19BTExPQ0FURV9TTE9XCisgICAgICAgIGptcCBzbG93Q2FzZQorICAgIGVs
c2UKKyAgICAgICAgY29uc3Qgb2Zmc2V0T2ZNeVNpemVDbGFzcyA9CisgICAgICAgICAgICBKU0ds
b2JhbERhdGE6OmhlYXAgKworICAgICAgICAgICAgSGVhcDo6bV9vYmplY3RTcGFjZSArCisgICAg
ICAgICAgICBNYXJrZWRTcGFjZTo6bV9ub3JtYWxTcGFjZSArCisgICAgICAgICAgICBNYXJrZWRT
cGFjZTo6U3Vic3BhY2U6OnByZWNpc2VBbGxvY2F0b3JzICsKKyAgICAgICAgICAgIHNpemVDbGFz
c0luZGV4ICogc2l6ZW9mIE1hcmtlZEFsbG9jYXRvcgorICAgICAgICAKKyAgICAgICAgIyBGSVhN
RTogd2UgY2FuIGdldCB0aGUgZ2xvYmFsIGRhdGEgaW4gb25lIGxvYWQgZnJvbSB0aGUgc3RhY2su
CisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3JhdGNoMQorICAgICAgICBsb2FkcCBD
b2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVtzY3JhdGNoMV0sIHNjcmF0Y2gxCisgICAgICAgIAorICAg
ICAgICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUgbGlzdC4gICAgCisgICAgICAgIGxv
YWRwIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRBbGxvY2F0b3I6Om1fZmlyc3RGcmVlQ2Vs
bFtzY3JhdGNoMV0sIHJlc3VsdAorICAgICAgICBidHB6IHJlc3VsdCwgc2xvd0Nhc2UKKyAgICAg
ICAgCisgICAgICAgICMgUmVtb3ZlIHRoZSBvYmplY3QgZnJvbSB0aGUgZnJlZSBsaXN0LgorICAg
ICAgICBsb2FkcCBbcmVzdWx0XSwgc2NyYXRjaDIKKyAgICAgICAgc3RvcmVwIHNjcmF0Y2gyLCBv
ZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkQWxsb2NhdG9yOjptX2ZpcnN0RnJlZUNlbGxbc2Ny
YXRjaDFdCisgICAgCisgICAgICAgICMgSW5pdGlhbGl6ZSB0aGUgb2JqZWN0LgorICAgICAgICBs
b2FkcCBjbGFzc0luZm9PZmZzZXRbc2NyYXRjaDFdLCBzY3JhdGNoMgorICAgICAgICBzdG9yZXAg
c2NyYXRjaDIsIFtyZXN1bHRdCisgICAgICAgIHN0b3JlcCBzdHJ1Y3R1cmUsIEpTQ2VsbDo6bV9z
dHJ1Y3R1cmVbcmVzdWx0XQorICAgICAgICBzdG9yZXAgMCwgSlNPYmplY3Q6Om1faW5oZXJpdG9y
SURbcmVzdWx0XQorICAgICAgICBhZGRwIHNpemVvZiBKU09iamVjdCwgcmVzdWx0LCBzY3JhdGNo
MQorICAgICAgICBzdG9yZXAgc2NyYXRjaDEsIEpTT2JqZWN0OjptX3Byb3BlcnR5U3RvcmFnZVty
ZXN1bHRdCisgICAgZW5kCitlbmQKKworX2xsaW50X29wX2NyZWF0ZV90aGlzOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBhc3NlcnROb3RDb25zdGFudCh0
MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENyZWF0ZVRo
aXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBsb2Fk
cCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIE9iamVjdFR5cGUsIC5vcENyZWF0ZVRoaXNTbG93
CisgICAgbG9hZHAgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURbdDBdLCB0MgorICAgIGJ0cHogdDIs
IC5vcENyZWF0ZVRoaXNTbG93CisgICAgYWxsb2NhdGVCYXNpY0pTT2JqZWN0KEpTRmluYWxPYmpl
Y3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvLCB0
MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisg
ICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MCwg
UGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcENyZWF0ZVRo
aXNTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2NyZWF0ZV90aGlzKQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9jYWxsZWU6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRwIFBheWxvYWRPZmZzZXQgKyBD
YWxsZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywgVGFnT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2go
MikKKworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxU
YWcsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwg
OF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQwCisgICAgYmJiIFN0
cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDBdLCBPYmplY3RUeXBlLCAu
b3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQorCisub3BDb252ZXJ0VGhpc1Nsb3c6
CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY29udmVydF90aGlzKQorICAgIGRp
c3BhdGNoKDIpCisKKworX2xsaW50X29wX25ld19vYmplY3Q6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xvYmFsT2JqZWN0OjptX2VtcHR5T2Jq
ZWN0U3RydWN0dXJlW3QwXSwgdDEKKyAgICBhbGxvY2F0ZUJhc2ljSlNPYmplY3QoSlNGaW5hbE9i
amVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6OmpzRmluYWxPYmplY3RDbGFzc0luZm8s
IHQxLCB0MCwgdDIsIHQzLCAub3BOZXdPYmplY3RTbG93KQorICAgIGxvYWRpIDRbUENdLCB0MQor
ICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAs
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BOZXdPYmpl
Y3RTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25ld19vYmplY3QpCisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X2FycmF5OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfYXJyYXkpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2FycmF5X2J1ZmZlcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV3X2FycmF5X2J1
ZmZlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9uZXdfcmVnZXhwOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfcmVn
ZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX21vdjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0
W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bfbm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEJvb2xlYW5UYWcsIC5vcE5v
dFNsb3cKKyAgICB4b3JpIDEsIHQzCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRj
aCgzKQorCisub3BOb3RTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25v
dCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9lcToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
MlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLm9wRXFTbG93CisgICAgYmllcSB0
MiwgQ2VsbFRhZywgLm9wRXFTbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcsIC5vcEVxU2xvdwor
ICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpZXEgdDAsIHQxLCB0MAorICAgIHN0b3JlaSBCb29s
ZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BFcVNsb3c6CisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQwCisg
ICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29uc3RhbnQodDApCisgICAgbG9hZGkg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5vcEVxTnVsbEltbWVkaWF0ZQorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRibnogU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVk
LCB0MQorICAgIGptcCAub3BFcU51bGxOb3RJbW1lZGlhdGUKKy5vcEVxTnVsbEltbWVkaWF0ZToK
KyAgICBjaWVxIHQxLCBOdWxsVGFnLCB0MgorICAgIGNpZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEK
KyAgICBvcmkgdDIsIHQxCisub3BFcU51bGxOb3RJbW1lZGlhdGU6CisgICAgc3RvcmVpIEJvb2xl
YW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX25lcToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0
MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0MywgLm9wTmVxU2xv
dworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcE5lcVNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRh
ZywgLm9wTmVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpbmVxIHQwLCB0MSwgdDAK
KyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVp
IHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goNCkKKworLm9wTmVx
U2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXEpCisgICAgZGlzcGF0
Y2goNCkKKyAgICAKKworX2xsaW50X29wX25lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBhc3NlcnROb3RD
b25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9h
ZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywg
Lm9wTmVxTnVsbEltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0
MQorICAgIHRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV9mbGFnc1t0MV0s
IE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1wIC5vcE5lcU51bGxOb3RJbW1lZGlh
dGUKKy5vcE5lcU51bGxJbW1lZGlhdGU6CisgICAgY2luZXEgdDEsIE51bGxUYWcsIHQyCisgICAg
Y2luZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKKyAgICBhbmRpIHQyLCB0MQorLm9wTmVxTnVsbE5v
dEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhd
CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2go
MykKKworCittYWNybyBzdHJpY3RFcShlcXVhbGl0eU9wZXJhdGlvbiwgc2xvd19wYXRoKQorICAg
IGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAs
IHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5zbG93CisgICAgYmliIHQyLCBMb3dlc3RUYWcs
IC5zbG93CisgICAgYmluZXEgdDIsIENlbGxUYWcsIC5ub3RTdHJpbmcKKyAgICBsb2FkcCBKU0Nl
bGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qx
XSwgdDMKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZworICAgIGJiZXEgU3RydWN0dXJlOjptX3R5cGVJ
bmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0cmluZ1R5cGUsIC5zbG93Cisubm90U3RyaW5n
OgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGVxdWFsaXR5T3BlcmF0aW9uKHQwLCB0MSwgdDAp
CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3Jl
aSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5zbG93
OgorICAgIGNhbGxTbG93UGF0aChzbG93X3BhdGgpCisgICAgZGlzcGF0Y2goNCkKK2VuZAorCitf
bGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1h
Y3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQsIHJpZ2h0LCByZXN1bHQgZW5kLCBf
bGxpbnRfc2xvd19wYXRoX3N0cmljdGVxKQorCisKK19sbGludF9vcF9uc3RyaWN0ZXE6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0
KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xsaW50X3Nsb3dfcGF0aF9uc3RyaWN0
ZXEpCisKKworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2xlc3MpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9sZXNzZXEpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ3Jl
YXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfZ3JlYXRlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9ncmVhdGVyZXE6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRo
X2dyZWF0ZXJlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcmVfaW5jOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVJbmNTbG93CisgICAgbG9hZGkgUGF5bG9h
ZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBiYWRkaW8gMSwgdDEsIC5vcFByZUluY1Nsb3cK
KyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCgy
KQorCisub3BQcmVJbmNTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3By
ZV9pbmMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJlX2RlYzoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdworICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYnN1YmlvIDEsIHQxLCAub3BQcmVEZWNTbG93CisgICAg
c3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMikKKwor
Lm9wUHJlRGVjU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcmVfZGVj
KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Bvc3RfaW5jOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBi
aW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0SW5jU2xvdworICAg
IGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBiYWRkaW8gMSwgdDMsIC5vcFBvc3RJ
bmNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBz
dG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxv
YWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNEb25lOgorICAgIGRpc3BhdGNoKDMpCisK
Ky5vcFBvc3RJbmNTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Bvc3Rf
aW5jKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3Bvc3RfZGVjOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAg
ICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQb3N0RGVjU2xvdwor
ICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0RGVjRG9uZQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRb
Y2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBic3ViaW8gMSwgdDMsIC5vcFBv
c3REZWNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAg
ICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3REZWNEb25lOgorICAgIGRpc3BhdGNoKDMp
CisKKy5vcFBvc3REZWNTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Bv
c3RfZGVjKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX3RvX2pzbnVtYmVyOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwg
dDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmllcSB0Miwg
SW50MzJUYWcsIC5vcFRvSnNudW1iZXJJc0ludAorICAgIGJpYWVxIHQyLCBFbXB0eVZhbHVlVGFn
LCAub3BUb0pzbnVtYmVyU2xvdworLm9wVG9Kc251bWJlcklzSW50OgorICAgIHN0b3JlaSB0Miwg
VGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9Kc251bWJlclNsb3c6CisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfdG9fanNudW1iZXIpCisgICAgZGlzcGF0Y2goMykKKwor
CitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQw
LCB0MSwgdDIpCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAub3BOZWdhdGVTcmNOb3RJbnQKKyAg
ICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93CisgICAgbmVnaSB0MgorICAgIHN0
b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQyLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKy5vcE5lZ2F0ZVNyY05vdElu
dDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRlU2xvdworICAgIHhvcmkgMHg4MDAw
MDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3Jl
aSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKy5vcE5l
Z2F0ZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmVnYXRlKQorICAg
IGRpc3BhdGNoKDMpCisKKworbWFjcm8gYmluYXJ5T3BDdXN0b21TdG9yZShpbnRlZ2VyT3BlcmF0
aW9uQW5kU3RvcmUsIGRvdWJsZU9wZXJhdGlvbiwgc2xvd19wYXRoKQorICAgIGxvYWRpIDEyW1BD
XSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQy
LCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAg
ICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAgICBiaW5lcSB0MywgSW50MzJUYWcs
IC5vcDJOb3RJbnQKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBpbnRlZ2VyT3BlcmF0aW9uQW5k
U3RvcmUodDMsIHQxLCB0MCwgLnNsb3csIHQyKQorICAgIGRpc3BhdGNoKDUpCisKKy5vcDFOb3RJ
bnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRlbHkgbm90IGFuIGludCwgdGhlIHNl
Y29uZCBvcGVyYW5kIGNvdWxkIGJlIGFueXRoaW5nLgorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAu
c2xvdworICAgIGJpYiB0MywgTG93ZXN0VGFnLCAub3AxTm90SW50T3AyRG91YmxlCisgICAgYmlu
ZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDEsIGZ0MQorICAgIGptcCAub3AxTm90
SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAgZmlpMmQgdDEsIHQzLCBmdDEKKy5v
cDFOb3RJbnRSZWFkeToKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBmaWkyZCB0MCwgdDIsIGZ0
MAorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAgICBzdG9yZWQgZnQwLCBbY2ZyLCB0
MSwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3AyTm90SW50OgorICAgICMgRmlyc3Qgb3BlcmFu
ZCBpcyBkZWZpbml0ZWx5IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGlzIGRlZmluaXRlbHkg
bm90LgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGJpYSB0MywgTG93ZXN0VGFnLCAuc2xvdwor
ICAgIGNpMmQgdDAsIGZ0MAorICAgIGZpaTJkIHQxLCB0MywgZnQxCisgICAgZG91YmxlT3BlcmF0
aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIsIHQyLCA4XQorICAgIGRpc3BhdGNo
KDUpCisKKy5zbG93OgorICAgIGNhbGxTbG93UGF0aChzbG93X3BhdGgpCisgICAgZGlzcGF0Y2go
NSkKK2VuZAorCittYWNybyBiaW5hcnlPcChpbnRlZ2VyT3BlcmF0aW9uLCBkb3VibGVPcGVyYXRp
b24sIHNsb3dfcGF0aCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAo
aW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGludGVnZXJP
cGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICBzdG9yZWkgaW50MzJUYWcs
IFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHJpZ2h0LCBQYXls
b2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgIGVuZCwKKyAgICAgICAgZG91YmxlT3Bl
cmF0aW9uLCBzbG93X3BhdGgpCitlbmQKKworX2xsaW50X29wX2FkZDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykg
YmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0
KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9hZGQpCisK
KworX2xsaW50X29wX211bDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3BDdXN0
b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBsZWZ0LCByaWdodCwgc2xvdywgaW5k
ZXgpCisgICAgICAgICAgICBjb25zdCBzY3JhdGNoID0gaW50MzJUYWcgICAjIFdlIGtub3cgdGhh
dCB3ZSBjYW4gcmV1c2UgdGhlIGludDMyVGFnIHJlZ2lzdGVyIHNpbmNlIGl0IGhhcyBhIGNvbnN0
YW50LgorICAgICAgICAgICAgbW92ZSByaWdodCwgc2NyYXRjaAorICAgICAgICAgICAgYm11bGlv
IGxlZnQsIHNjcmF0Y2gsIHNsb3cKKyAgICAgICAgICAgIGJ0aW56IHNjcmF0Y2gsIC5kb25lCisg
ICAgICAgICAgICBiaWx0IGxlZnQsIDAsIHNsb3cKKyAgICAgICAgICAgIGJpbHQgcmlnaHQsIDAs
IHNsb3cKKyAgICAgICAgLmRvbmU6CisgICAgICAgICAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09m
ZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3RvcmVpIHNjcmF0Y2gsIFBheWxvYWRP
ZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQpIG11bGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX211
bCkKKworCitfbGxpbnRfb3Bfc3ViOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlP
cCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBic3ViaW8gbGVmdCwgcmlnaHQs
IHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIHN1YmQgbGVmdCwgcmlnaHQg
ZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3N1YikKKworCitfbGxpbnRfb3BfZGl2Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0b3JlKAorICAgICAgICBt
YWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkKKyAgICAgICAgICAgIGNp
MmQgbGVmdCwgZnQwCisgICAgICAgICAgICBjaTJkIHJpZ2h0LCBmdDEKKyAgICAgICAgICAgIGRp
dmQgZnQwLCBmdDEKKyAgICAgICAgICAgIGJjZDJpIGZ0MSwgcmlnaHQsIC5ub3RJbnQKKyAgICAg
ICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAg
ICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAg
ICAgIGptcCAuZG9uZQorICAgICAgICAubm90SW50OgorICAgICAgICAgICAgc3RvcmVkIGZ0MSwg
W2NmciwgaW5kZXgsIDhdCisgICAgICAgIC5kb25lOgorICAgICAgICBlbmQsCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCkgZGl2ZCBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9z
bG93X3BhdGhfZGl2KQorCisKK19sbGludF9vcF9tb2Q6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX21vZCkKKyAgICBkaXNwYXRjaCg0KQor
CisKK21hY3JvIGJpdE9wKG9wZXJhdGlvbiwgc2xvd19wYXRoLCBhZHZhbmNlKQorICAgIGxvYWRp
IDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlh
YmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0
MCkKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIEludDMyVGFn
LCAuc2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIG9wZXJhdGlvbih0MSwgdDAsIC5zbG93
KQorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQ
YXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0Y2goYWR2YW5jZSkKKworLnNsb3c6
CisgICAgY2FsbFNsb3dQYXRoKHNsb3dfcGF0aCkKKyAgICBkaXNwYXRjaChhZHZhbmNlKQorZW5k
CisKK19sbGludF9vcF9sc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGxzaGlmdGkgbGVmdCwgcmlnaHQgZW5k
LAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2xzaGlmdCwKKyAgICAgICAgNCkKKworCitfbGxp
bnRfb3BfcnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAg
bWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSByc2hpZnRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAg
ICAgX2xsaW50X3Nsb3dfcGF0aF9yc2hpZnQsCisgICAgICAgIDQpCisKKworX2xsaW50X29wX3Vy
c2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAo
bGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICB1cnNoaWZ0aSBsZWZ0LCByaWdodAorICAg
ICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdworICAgICAgICBlbmQsCisgICAgICAgIF9sbGlu
dF9zbG93X3BhdGhfdXJzaGlmdCwKKyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfYml0YW5kOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJp
Z2h0LCBzbG93KSBhbmRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0
aF9iaXRhbmQsCisgICAgICAgIDUpCisKKworX2xsaW50X29wX2JpdHhvcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykg
eG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGludF9zbG93X3BhdGhfYml0eG9yLAor
ICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgc2xvdykgb3JpIGxlZnQsIHJp
Z2h0IGVuZCwKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9iaXRvciwKKyAgICAgICAgNSkKKwor
CitfbGxpbnRfb3BfYml0bm90OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BD
XSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQx
LCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAub3BCaXRub3RTbG93CisgICAgbm90
aSB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQz
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wQml0bm90
U2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9iaXRub3QpCisgICAgZGlz
cGF0Y2goMykKKworCitfbGxpbnRfb3BfY2hlY2tfaGFzX2luc3RhbmNlOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxl
UGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93KQorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5
cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UsIC5v
cENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgZGlzcGF0Y2goMikKKworLm9wQ2hlY2tIYXNJbnN0
YW5jZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfY2hlY2tfaGFzX2lu
c3RhbmNlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2luc3RhbmNlb2Y6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgICMgQ2hlY2sgdGhhdCBiYXNlVmFsIGltcGxlbWVudHMgdGhl
IGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisgICAgIyBGSVhNRTogVGhpcyBzaG91bGQg
YmUgZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDEsIHQwKQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1
Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86
Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0luc3RhbmNlLCAub3BJbnN0YW5jZW9m
U2xvdworICAgIAorICAgICMgQWN0dWFsbHkgZG8gdGhlIHdvcmsuCisgICAgbG9hZGkgMTZbUENd
LCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXls
b2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgbG9hZHAgSlNDZWxs
OjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5
cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIGxv
YWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxs
VGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgCisgICAgIyBSZWdpc3RlciBzdGF0ZTog
dDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3ZlIDEsIHQwCisub3BJbnN0YW5jZW9m
TG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QyXSwgdDIKKyAgICBsb2FkaSBT
dHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNldFt0Ml0sIHQyCisgICAgYnBlcSB0
MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRpbnogdDIsIC5vcEluc3RhbmNlb2ZMb29w
CisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9mRG9uZToKKyAgICBzdG9yZWkgQm9vbGVh
blRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0
W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9wSW5zdGFuY2VvZlNsb3c6CisgICAg
Y2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaW5zdGFuY2VvZikKKyAgICBkaXNwYXRjaCg1
KQorCisKK19sbGludF9vcF90eXBlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxT
bG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3R5cGVvZikKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF9pc191bmRlZmluZWQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX2lzX3VuZGVmaW5lZCkKKyAgICBkaXNwYXRjaCgzKQorCisK
K19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pc19ib29sZWFuKQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX2lzX251bWJlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfaXNfbnVtYmVyKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xs
aW50X29wX2lzX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfaXNfc3RyaW5nKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX2lzX29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfaXNfb2JqZWN0KQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X2lzX2Z1bmN0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9pc19mdW5jdGlvbikKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9v
cF9pbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93
X3BhdGhfaW4pCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcmVzb2x2ZToKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcmVzb2x2
ZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9yZXNvbHZlX3NraXA6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVf
c2tpcCkKKyAgICBkaXNwYXRjaCg1KQorCisKK21hY3JvIHJlc29sdmVHbG9iYWwoc2l6ZSwgc2xv
dykKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0aW5h
dGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIFByb3BlcnR5IGlkZW50aWZpZXIgaW5k
ZXggaW4gdGhlIGNvZGUgYmxvY2suCisgICAgIyAxMltQQ10gIFN0cnVjdHVyZSBwb2ludGVyLCBp
bml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRvci4KKyAgICAjIDE2W1BDXSAgT2Zm
c2V0IGluIGdsb2JhbCBvYmplY3QsIGluaXRpYWxpemVkIHRvIDAgYnkgYnl0ZWNvZGUgZ2VuZXJh
dG9yLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6
bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBd
LCB0MQorICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cKKyAgICBsb2FkaSAxNltQQ10sIHQxCisg
ICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDAKKyAgICBsb2FkaSBU
YWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwg
OF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQyLCBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBs
b2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQwCisgICAgdmFsdWVQcm9maWxlKHQyLCB0MywgdDAp
CitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICByZXNvbHZlR2xvYmFsKDYsIC5vcFJlc29sdmVHbG9iYWxTbG93KQorICAgIGRpc3BhdGNo
KDYpCisKKy5vcFJlc29sdmVHbG9iYWxTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3BhdGNoKDYpCisKKworIyBHaXZlcyB5b3Ug
dGhlIHNjb3BlIGluIHQwLCB3aGlsZSBhbGxvd2luZyB5b3UgdG8gb3B0aW9uYWxseSBwZXJmb3Jt
IGFkZGl0aW9uYWwgY2hlY2tzIG9uIHRoZQorIyBzY29wZXMgYXMgdGhleSBhcmUgdHJhdmVyc2Vk
LiBzY29wZUNoZWNrKCkgaXMgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHJlZ2lzdGVy
CisjIGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdpc3RlciB0aGF0IGNhbiBiZSB1c2VkIGZv
ciBzY3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAorIyB1c2UgdDMsIHNvIHlvdSBjYW4g
aG9sZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJlLgorbWFjcm8gZ2V0U2NvcGUoZGVCcnVpamluSW5k
ZXhPcGVyYW5kLCBzY29wZUNoZWNrKQorICAgIGxvYWRwIFNjb3BlQ2hhaW4gKyBQYXlsb2FkT2Zm
c2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgZGVCcnVpamluSW5kZXhPcGVyYW5kLCB0MgorICAgIAor
ICAgIGJ0aXogdDIsIC5kb25lCisgICAgCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisg
ICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwgRnVuY3Rpb25Db2RlLCAubG9vcAor
ICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNjb3BlQ2hhaW5bdDFdLCAubG9vcAorICAg
IAorICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0aW9uUmVnaXN0ZXJbdDFdLCB0MQorCisg
ICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVyIG9uZSBzY29wZS4KKyAgICBiaWVx
IFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm5vQWN0aXZhdGlvbgorICAg
IHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpuZXh0W3QwXSwg
dDAKKy5ub0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5k
b25lCisubG9vcDoKKyAgICBzY29wZUNoZWNrKHQwLCB0MSkKKyAgICBsb2FkcCBTY29wZUNoYWlu
Tm9kZTo6bmV4dFt0MF0sIHQwCisgICAgc3ViaSAxLCB0MgorICAgIGJ0aW56IHQyLCAubG9vcAor
CisuZG9uZToKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYzoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0s
IHQzCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0aW9uU3RydWN0dXJlW3QzXSwgdDMK
KyAgICBnZXRTY29wZSgKKyAgICAgICAgMjBbUENdLAorICAgICAgICBtYWNybyAoc2NvcGUsIHNj
cmF0Y2gpCisgICAgICAgICAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6b2JqZWN0W3Njb3BlXSwg
c2NyYXRjaAorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVtzY3JhdGNoXSwg
dDMsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93CisgICAgICAgIGVuZCkKKyAgICBy
ZXNvbHZlR2xvYmFsKDcsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdykKKyAgICBkaXNwYXRj
aCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVyU2xvdzoKKyAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX2Zvcl9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQor
ICAgIGRpc3BhdGNoKDcpCisKKy5vcFJlc29sdmVHbG9iYWxEeW5hbWljU2xvdzoKKyAgICBjYWxs
U2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX2dsb2JhbF9keW5hbWljKQorICAgIGRp
c3BhdGNoKDcpCisKKworX2xsaW50X29wX2dldF9zY29wZWRfdmFyOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgorICAgICMgNFtQQ10gICBEZXN0
aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIEluZGV4IG9mIHJlZ2lzdGVyIGlu
IHRoZSBzY29wZS4KKyAgICAjIDEyW1BDXSAgRGUgQnJ1aWppbiBpbmRleC4KKyAgICBnZXRTY29w
ZSgxMltQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5kKQorICAgIGxvYWRpIDRbUENdLCB0
MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRwIFNjb3BlQ2hhaW5Ob2RlOjpvYmplY3Rb
dDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAK
KyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgdDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zm
c2V0W3QwLCB0MiwgOF0sIHQwCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAxNltQ
Q10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MCwgdDEpCisgICAgZGlzcGF0Y2goNSkKKwor
CitfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGdl
dFNjb3BlKDhbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpIGVuZCkKKyAgICBsb2FkaSAxMltQ
Q10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDMsIHQyKQorICAgIGxvYWRp
IDRbUENdLCB0MQorICAgIHdyaXRlQmFycmllcih0MywgdDIpCisgICAgbG9hZHAgU2NvcGVDaGFp
bk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNWYXJpYWJsZU9iamVjdDo6bV9yZWdp
c3RlcnNbdDBdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBz
dG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKwor
X2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsT2JqZWN0W3QwXSwgdDAKKyAgICBs
b2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIGxvYWRpIFRhZ09m
ZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XSwg
dDEKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MSwg
UGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICB2YWx1
ZVByb2ZpbGUodDIsIHQxLCB0MykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wdXRf
Z2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2Jh
bE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxPYmplY3Q6Om1fcmVnaXN0ZXJzW3Qw
XSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgbG9hZGkg
NFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQyLCB0MykKKyAgICBzdG9yZWkgdDIsIFRhZ09m
ZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0K
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNvbHZlX2Jhc2U6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVfYmFz
ZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9lbnN1cmVfcHJvcGVydHlfZXhpc3Rz
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0
aF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X3Jlc29sdmVfd2l0aF9iYXNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX3dpdGhfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQor
CisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfdGhpczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcmVzb2x2ZV93aXRoX3RoaXMpCisgICAg
ZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0X2J5X2lkIGNhY2hpbmcgZm9yIG5v
dywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisgICAgIyBvcGNvZGUuIFdlIGRvLCBob3dldmVy
LCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0aW1lIGlmIGZhaWxzLCBzaW5jZQor
ICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qgd2UgZ2V0IGx1Y2t5IGFuZCB0aGUg
Z2V0X2J5X2lkIHdpbGwgY29udGludWUKKyAgICAjIHRvIHRha2UgZmFzdCBwYXRoIG9uIHRoZSBu
ZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRoLCB3aGljaCBpcyB3aGF0CisgICAg
IyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5LgorICAgIGxvYWRpIDhbUENdLCB0MAor
ICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0
MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAg
ICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2VbdDNdLCB0MAorICAgIGJwbmVxIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJZFNsb3cKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwgdDMKKyAgICBsb2FkaSBQYXlsb2Fk
T2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAgc3RvcmVpIHQzLCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBsb2FkaSAzMltQ
Q10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MiwgdDEpCisgICAgZGlzcGF0Y2goOSkKKwor
Lm9wR2V0QnlJZFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2J5
X2lkKQorICAgIGRpc3BhdGNoKDkpCisKKworX2xsaW50X29wX2dldF9hcmd1bWVudHNfbGVuZ3Ro
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0
W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcs
IC5vcEdldEFyZ3VtZW50c0xlbmd0aFNsb3cKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5
bG9hZE9mZnNldFtjZnJdLCB0MgorICAgIHN1YmkgMSwgdDIKKyAgICBzdG9yZWkgSW50MzJUYWcs
IFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIs
IHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEFyZ3VtZW50c0xlbmd0aFNsb3c6Cisg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCisg
ICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2J5X2lkOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9h
ZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xv
dykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlT
dG9yYWdlW3QwXSwgdDMKKyAgICBicG5lcSBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEsIC5v
cFB1dEJ5SWRTbG93CisgICAgbG9hZGkgMjBbUENdLCB0MQorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGUyUmVnKHQyLCB0MCwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQwLCB0MikKKyAgICBzdG9y
ZWkgdDAsIFRhZ09mZnNldFt0MywgdDFdCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3Qz
LCB0MV0KKyAgICBkaXNwYXRjaCg5KQorCisub3BQdXRCeUlkU2xvdzoKKyAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfYnlfaWQpCisgICAgZGlzcGF0Y2goOSkKKworCittYWNy
byBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tzKQorICAgIHRyYWNlRXhlY3V0aW9u
KCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcsIHQwLCAub3BQdXRCeUlkU2xvdykK
KyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgYnBuZXEgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0s
IHQxLCAub3BQdXRCeUlkU2xvdworICAgIGFkZGl0aW9uYWxDaGVja3ModDEsIHQzLCAub3BQdXRC
eUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJv
cGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBhZGRwIHQxLCB0MworICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCisgICAgd3JpdGVCYXJyaWVyKHQxLCB0MikKKyAgICBz
dG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSAyNFtQQ10sIHQxCisgICAgc3RvcmVp
IHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlcCB0MSwgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0KKyAgICBkaXNwYXRjaCg5KQorZW5kCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNp
dGlvbl9kaXJlY3Q6CisgICAgcHV0QnlJZFRyYW5zaXRpb24obWFjcm8gKG9sZFN0cnVjdHVyZSwg
c2NyYXRjaCwgc2xvdykgZW5kKQorCisKK19sbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9u
b3JtYWw6CisgICAgcHV0QnlJZFRyYW5zaXRpb24oCisgICAgICAgIG1hY3JvIChvbGRTdHJ1Y3R1
cmUsIHNjcmF0Y2gsIHNsb3cpCisgICAgICAgICAgICBjb25zdCBwcm90b0NlbGwgPSBvbGRTdHJ1
Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSByZWdpc3RlciBmb3IgdGhlIHByb3Rv
CisgICAgICAgIAorICAgICAgICAgICAgbG9hZHAgMjhbUENdLCBzY3JhdGNoCisgICAgICAgICAg
ICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBvayBlbmQpCisgICAgICAgICAgICBs
b2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRjaF0sIHNjcmF0Y2gKKyAgICAgICAg
ICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gsIG9rIGVuZCkKKyAgICAgICAgICAg
IGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09mZnNldFtvbGRTdHJ1Y3R1cmVdLCBO
dWxsVGFnLCAuZG9uZQorICAgICAgICAubG9vcDoKKyAgICAgICAgICAgIGxvYWRpIFN0cnVjdHVy
ZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0cnVjdHVyZV0sIHByb3RvQ2VsbAor
ICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVtwcm90b0NlbGxdLCBvbGRTdHJ1
Y3R1cmUKKyAgICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVyZSwgW3NjcmF0Y2hdLCBzbG93Cisg
ICAgICAgICAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICAgICAgICAgIGJpbmVxIFN0cnVjdHVyZTo6
bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJlXSwgTnVsbFRhZywgLmxvb3AKKyAg
ICAgICAgLmRvbmU6CisgICAgICAgIGVuZCkKKworCitfbGxpbnRfb3BfZGVsX2J5X2lkOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9kZWxf
YnlfaWQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfZ2V0X2J5X3ZhbDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQxCisgICAgbG9hZGkg
OFtQQ10sIHQyCisgICAgbG9hZGkgMTJbUENdLCB0MworICAgIGxvYWRwIENvZGVCbG9jazo6bV9n
bG9iYWxEYXRhW3QxXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0Miwg
Q2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6Ompz
QXJyYXlDbGFzc0luZm9bdDFdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2Fk
KHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBicG5lcSBbdDBdLCB0Miwg
Lm9wR2V0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6bV9zdG9yYWdlW3QwXSwgdDMKKyAg
ICBiaWFlcSB0MSwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDBdLCAub3BHZXRCeVZhbFNsb3cK
KyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsg
VGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgbG9hZGkgQXJyYXlTdG9yYWdlOjptX3ZlY3Rv
ciArIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKyAgICBiaWVxIHQyLCBFbXB0eVZhbHVl
VGFnLCAub3BHZXRCeVZhbFNsb3cKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQwLCA4
XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGxvYWRpIDE2
W1BDXSwgdDAKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MCkKKyAgICBkaXNwYXRjaCg1KQor
Cisub3BHZXRCeVZhbFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0
X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9nZXRfYXJndW1lbnRfYnlf
dmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
aSAxMltQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVl
VGFnLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQ
YXlsb2FkKHQxLCBJbnQzMlRhZywgdDIsIC5vcEdldEFyZ3VtZW50QnlWYWxTbG93KQorICAgIGFk
ZGkgMSwgdDIKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0
MQorICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJndW1lbnRCeVZhbFNsb3cKKyAgICBuZWdpIHQy
CisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgVGhpc0FyZ3VtZW50T2Zmc2V0ICsgVGFn
T2Zmc2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2Zy
LCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBk
aXNwYXRjaCg1KQorCisub3BHZXRBcmd1bWVudEJ5VmFsU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9nZXRfYXJndW1lbnRfYnlfdmFsKQorICAgIGRpc3BhdGNoKDUpCisK
KworX2xsaW50X29wX2dldF9ieV9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9h
ZGkgMTJbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxs
VGFnLCB0MSwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGJw
bmVxIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAub3BHZXRCeVBuYW1lU2xvdworICAg
IGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBD
ZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9hZGkgMjBbUENdLCB0MAorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjpt
X3N0cnVjdHVyZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFtZVNsb3cKKyAgICBsb2FkaSAyNFtQ
Q10sIHQwCisgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAorICAgIHN1YmkgMSwgdDAKKyAgICBi
aWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9udW1DYWNoZWFibGVTbG90c1t0M10s
IC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdl
W3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3Rv
cmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg3KQorCisub3BHZXRCeVBuYW1lU2xvdzoKKyAg
ICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYnlfcG5hbWUpCisgICAgZGlzcGF0
Y2goNykKKworCitfbGxpbnRfb3BfcHV0X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAs
IENlbGxUYWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCisgICAgbG9hZGkgOFtQQ10sIHQwCisgICAg
bG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIEludDMyVGFnLCB0MiwgLm9wUHV0QnlW
YWxTbG93KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAgIGxvYWRwIENvZGVCbG9j
azo6bV9nbG9iYWxEYXRhW3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlD
bGFzc0luZm9bdDBdLCB0MAorICAgIGJwbmVxIFt0MV0sIHQwLCAub3BQdXRCeVZhbFNsb3cKKyAg
ICBiaWFlcSB0MiwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhbdDFdLCAub3BQdXRCeVZhbFNsb3cK
KyAgICBsb2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDFdLCB0MAorICAgIGJpZXEgQXJyYXlTdG9y
YWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BQ
dXRCeVZhbEVtcHR5Cisub3BQdXRCeVZhbFN0b3JlUmVzdWx0OgorICAgIGxvYWRpIDEyW1BDXSwg
dDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MywgdDEsIHQzKQorICAgIHdyaXRl
QmFycmllcih0MSwgdDMpCisgICAgc3RvcmVpIHQxLCBBcnJheVN0b3JhZ2U6Om1fdmVjdG9yICsg
VGFnT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBzdG9yZWkgdDMsIEFycmF5U3RvcmFnZTo6bV92ZWN0
b3IgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisub3BQdXRC
eVZhbEVtcHR5OgorICAgIGFkZGkgMSwgQXJyYXlTdG9yYWdlOjptX251bVZhbHVlc0luVmVjdG9y
W3QwXQorICAgIGJpYiB0MiwgQXJyYXlTdG9yYWdlOjptX2xlbmd0aFt0MF0sIC5vcFB1dEJ5VmFs
U3RvcmVSZXN1bHQKKyAgICBhZGRpIDEsIHQyLCB0MQorICAgIHN0b3JlaSB0MSwgQXJyYXlTdG9y
YWdlOjptX2xlbmd0aFt0MF0KKyAgICBqbXAgLm9wUHV0QnlWYWxTdG9yZVJlc3VsdAorCisub3BQ
dXRCeVZhbFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X2J5X3Zh
bCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9kZWxfYnlfdmFsOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9kZWxfYnlfdmFs
KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9ieV9pbmRleDoKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcHV0X2J5X2lu
ZGV4KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1dF9nZXR0ZXJfc2V0dGVyOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9w
dXRfZ2V0dGVyX3NldHRlcikKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9sb29wOgor
ICAgIG5vcAorX2xsaW50X29wX2ptcDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZGlzcGF0
Y2hCcmFuY2goNFtQQ10pCisKKworX2xsaW50X29wX2ptcF9zY29wZXM6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2ptcF9zY29wZXMpCisg
ICAgZGlzcGF0Y2goMCkKKworCittYWNybyBqdW1wVHJ1ZU9yRmFsc2UoY29uZGl0aW9uT3AsIHNs
b3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxv
YWQodDEsIEJvb2xlYW5UYWcsIHQwLCAuc2xvdykKKyAgICBjb25kaXRpb25PcCh0MCwgLnRhcmdl
dCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENd
KQorCisuc2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoc2xvdykKKyAgICBkaXNwYXRjaCgwKQorZW5k
CisKK19sbGludF9vcF9sb29wX2lmX3RydWU6CisgICAgbm9wCitfbGxpbnRfb3BfanRydWU6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JGYWxzZSgKKyAgICAgICAgbWFjcm8g
KHZhbHVlLCB0YXJnZXQpIGJ0aW56IHZhbHVlLCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRf
c2xvd19wYXRoX2p0cnVlKQorCisKK19sbGludF9vcF9sb29wX2lmX2ZhbHNlOgorICAgIG5vcAor
X2xsaW50X29wX2pmYWxzZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAganVtcFRydWVPckZh
bHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYnRpeiB2YWx1ZSwgdGFyZ2V0IGVu
ZCwKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9qZmFsc2UpCisKKworbWFjcm8gZXF1YWxOdWxs
KGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYW5kbGVyKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0
W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAuaW1tZWRpYXRlCisgICAg
bG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisgICAgY2VsbEhhbmRsZXIoU3RydWN0
dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDJdLCAudGFyZ2V0KQorICAgIGRp
c3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goOFtQQ10pCisKKy5pbW1l
ZGlhdGU6CisgICAgb3JpIDEsIHQxCisgICAgaW1tZWRpYXRlSGFuZGxlcih0MSwgLnRhcmdldCkK
KyAgICBkaXNwYXRjaCgzKQorZW5kCisKK19sbGludF9vcF9qZXFfbnVsbDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkg
YnRibnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHRhcmdldCBlbmQsCisgICAgICAg
IG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaWVxIHZhbHVlLCBOdWxsVGFnLCB0YXJnZXQgZW5kKQor
ICAgIAorCitfbGxpbnRfb3Bfam5lcV9udWxsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBl
cXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBidGJ6IHZhbHVlLCBNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAodmFsdWUsIHRh
cmdldCkgYmluZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBlbmQpCisKKworX2xsaW50X29wX2pu
ZXFfcHRyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBs
b2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcs
IC5vcEpuZXFQdHJCcmFuY2gKKyAgICBicGVxIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQx
LCAub3BKbmVxUHRyRmFsbFRocm91Z2gKKy5vcEpuZXFQdHJCcmFuY2g6CisgICAgZGlzcGF0Y2hC
cmFuY2goMTJbUENdKQorLm9wSm5lcVB0ckZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoKDQpCisK
KworbWFjcm8gY29tcGFyZShpbnRlZ2VyQ29tcGFyZSwgZG91YmxlQ29tcGFyZSwgc2xvd19wYXRo
KQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDIsIHQwLCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJl
Zyh0MywgdDIsIHQzKQorICAgIGJpbmVxIHQwLCBJbnQzMlRhZywgLm9wMU5vdEludAorICAgIGJp
bmVxIHQyLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGludGVnZXJDb21wYXJlKHQxLCB0Mywg
Lmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9wMU5vdEludDoKKyAgICBiaWEgdDAs
IExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wMU5vdEludE9wMkRv
dWJsZQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cKKyAgICBjaTJkIHQzLCBmdDEKKyAg
ICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3AyRG91YmxlOgorICAgIGZpaTJkIHQz
LCB0MiwgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgZmlpMmQgdDEsIHQwLCBmdDAKKyAgICBk
b3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkKKyAgICBkaXNwYXRjaCg0KQorCisu
b3AyTm90SW50OgorICAgIGNpMmQgdDEsIGZ0MAorICAgIGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xv
dworICAgIGZpaTJkIHQzLCB0MiwgZnQxCisgICAgZG91YmxlQ29tcGFyZShmdDAsIGZ0MSwgLmp1
bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLmp1bXBUYXJnZXQ6CisgICAgZGlzcGF0Y2hC
cmFuY2goMTJbUENdKQorCisuc2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoc2xvd19wYXRoKQorICAg
IGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3BfaWZfbGVzczoKKyAgICBub3AKK19s
bGludF9vcF9qbGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0IGxlZnQsIHJpZ2h0
LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2psZXNzKQorCisKK19sbGlu
dF9vcF9qbmxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0ZXF1biBsZWZ0LCBy
aWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9qbmxlc3MpCisKKwor
X2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcjoKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQs
IHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1h
Y3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAor
ICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2pncmVhdGVyKQorCisKK19sbGludF9vcF9qbmdyZWF0
ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAg
ICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXF1biBsZWZ0LCByaWdodCwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9qbmdyZWF0ZXIpCisKKworX2xsaW50
X29wX2xvb3BfaWZfbGVzc2VxOgorICAgIG5vcAorX2xsaW50X29wX2psZXNzZXE6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwg
dGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChs
ZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAg
ICAgIF9sbGludF9zbG93X3BhdGhfamxlc3NlcSkKKworCitfbGxpbnRfb3Bfam5sZXNzZXE6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCBy
aWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndHVuIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAor
ICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2pubGVzc2VxKQorCisKK19sbGludF9vcF9sb29wX2lm
X2dyZWF0ZXJlcToKKyAgICBub3AKK19sbGludF9vcF9qZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdl
dCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmRndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBf
bGxpbnRfc2xvd19wYXRoX2pncmVhdGVyZXEpCisKKworX2xsaW50X29wX2puZ3JlYXRlcmVxOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNybyAobGVmdCwg
cmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgbWFj
cm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHR1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwK
KyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9qbmdyZWF0ZXJlcSkKKworCitfbGxpbnRfb3BfbG9v
cF9oaW50OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9yTG9v
cCgpCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2ltbToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0Mwor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBsb2FkcCBDb2RlQmxv
Y2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fcmFyZURhdGFbdDJdLCB0MgorICAg
IG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMgICAjIEZJWE1FOiB3b3VsZCBiZSBuaWNl
IHRvIHBlZXBob2xlIHRoaXMhCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9pbW1l
ZGlhdGVTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBh
ZGRwIHQzLCB0MgorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywgLm9wU3dpdGNoSW1tTm90SW50Cisg
ICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQwCisgICAgYmlhZXEgdDAsIFNpbXBs
ZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNpemVPZmZzZXRbdDJdLCAub3BTd2l0
Y2hJbW1GYWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0
cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQzCisgICAgbG9hZGkgW3QzLCB0MCwgNF0sIHQx
CisgICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5j
aFdpdGhPZmZzZXQodDEpCisKKy5vcFN3aXRjaEltbU5vdEludDoKKyAgICBiaWIgdDEsIExvd2Vz
dFRhZywgLm9wU3dpdGNoSW1tU2xvdyAgIyBHbyB0byBzbG93IHBhdGggaWYgaXQncyBhIGRvdWJs
ZS4KKy5vcFN3aXRjaEltbUZhbGxUaHJvdWdoOgorICAgIGRpc3BhdGNoQnJhbmNoKDhbUENdKQor
Cisub3BTd2l0Y2hJbW1TbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3N3
aXRjaF9pbW0pCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxpbnRfb3Bfc3dpdGNoX2NoYXI6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA0W1BD
XSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MSwgdDApCisgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX3JhcmVEYXRhW3QyXSwg
dDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUsIHQzCisgICAgbG9hZHAgQ29kZUJs
b2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAu
b3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3Qw
XSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBUeXBlSW5mbzo6bV90eXBl
W3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgSlNT
dHJpbmc6Om1fdmFsdWVbdDBdLCB0MAorICAgIGJpbmVxIFN0cmluZ0ltcGw6Om1fbGVuZ3RoW3Qw
XSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAgbG9hZHAgU3RyaW5nSW1wbDo6bV9k
YXRhOFt0MF0sIHQxCisgICAgYnRpbnogU3RyaW5nSW1wbDo6bV9oYXNoQW5kRmxhZ3NbdDBdLCBI
YXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0Y2hDaGFyOEJpdAorICAgIGxvYWRoIFt0MV0sIHQw
CisgICAgam1wIC5vcFN3aXRjaENoYXJSZWFkeQorLm9wU3dpdGNoQ2hhcjhCaXQ6CisgICAgbG9h
ZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENoYXJSZWFkeToKKyAgICBzdWJpIFNpbXBsZUp1bXBUYWJs
ZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxlSnVtcFRhYmxlOjpicmFuY2hPZmZz
ZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaAorICAg
IGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNl
dFt0Ml0sIHQyCisgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQxCisgICAgYnRpeiB0MSwgLm9wU3dp
dGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCisKKy5v
cFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitf
bGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNs
b3dQYXRoKF9sbGludF9zbG93X3BhdGhfc3dpdGNoX3N0cmluZykKKyAgICBkaXNwYXRjaCgwKQor
CisKK19sbGludF9vcF9uZXdfZnVuYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYnRpeiAx
MltQQ10sIC5vcE5ld0Z1bmNVbmNoZWNrZWQKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5l
cSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcE5ld0Z1bmNEb25lCisu
b3BOZXdGdW5jVW5jaGVja2VkOgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX25l
d19mdW5jKQorLm9wTmV3RnVuY0RvbmU6CisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3Bf
bmV3X2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9uZXdfZnVuY19leHApCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBk
b0NhbGwoc2xvd19wYXRoKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwg
dDEKKyAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2FsbGVlW3QxXSwgdDIKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcENhbGxTbG93KQor
ICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBsb2FkaSAxMltQQ10sIHQzCisgICAg
YWRkcCAyNCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAgYWRkcCBjZnIsIHQzICAjIHQzIGNv
bnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9hZHAgSlNGdW5jdGlvbjo6bV9zY29w
ZUNoYWluW3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxlZSArIFBheWxvYWRPZmZzZXRbdDNd
CisgICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBsb2Fk
aSA4IC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNl
dFtjZnJdCisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVbdDNdCisgICAgc3RvcmVpIHQyLCBB
cmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgQ2VsbFRhZywgQ2Fs
bGVlICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxsVGFnLCBTY29wZUNoYWluICsgVGFn
T2Zmc2V0W3QzXQorICAgIG1vdmUgdDMsIGNmcgorICAgIGNhbGwgTExJbnRDYWxsTGlua0luZm86
Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworLm9wQ2Fs
bFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIHNsb3dfcGF0aCkKK2VuZAorCitfbGxpbnRf
b3BfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZG9DYWxsKF9sbGludF9zbG93X3Bh
dGhfY2FsbCkKKworCitfbGxpbnRfb3BfY29uc3RydWN0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBkb0NhbGwoX2xsaW50X3Nsb3dfcGF0aF9jb25zdHJ1Y3QpCisKKworX2xsaW50X29wX2Nh
bGxfdmFyYXJnczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgc2xvd1BhdGhGb3JDYWxsKDYs
IF9sbGludF9zbG93X3BhdGhfY2FsbF92YXJhcmdzKQorCisKK19sbGludF9vcF9jYWxsX2V2YWw6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIAorICAgICMgRXZhbCBpcyBleGVjdXRlZCBpbiBv
bmUgb2YgdHdvIG1vZGVzOgorICAgICMKKyAgICAjIDEpIFdlIGZpbmQgdGhhdCB3ZSdyZSByZWFs
bHkgaW52b2tpbmcgZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhlCisgICAgIyAgICBleGVjdXRpb24g
aXMgcGVyZm9tZWQgZW50aXJlbHkgaW5zaWRlIHRoZSBzbG93X3BhdGgsIGFuZCBpdAorICAgICMg
ICAgcmV0dXJucyB0aGUgUEMgb2YgYSBmdW5jdGlvbiB0aGF0IGp1c3QgcmV0dXJucyB0aGUgcmV0
dXJuIHZhbHVlCisgICAgIyAgICB0aGF0IHRoZSBldmFsIHJldHVybmVkLgorICAgICMKKyAgICAj
IDIpIFdlIGZpbmQgdGhhdCB3ZSdyZSBpbnZva2luZyBzb21ldGhpbmcgY2FsbGVkIGV2YWwoKSB0
aGF0IGlzIG5vdAorICAgICMgICAgdGhlIHJlYWwgZXZhbC4gVGhlbiB0aGUgc2xvd19wYXRoIHJl
dHVybnMgdGhlIFBDIG9mIHRoZSB0aGluZyB0bworICAgICMgICAgY2FsbCwgYW5kIHdlIGNhbGwg
aXQuCisgICAgIworICAgICMgVGhpcyBhbGxvd3MgdXMgdG8gaGFuZGxlIHR3byBjYXNlcywgd2hp
Y2ggd291bGQgcmVxdWlyZSBhIHRvdGFsIG9mCisgICAgIyB1cCB0byBmb3VyIHBpZWNlcyBvZiBz
dGF0ZSB0aGF0IGNhbm5vdCBiZSBlYXNpbHkgcGFja2VkIGludG8gdHdvCisgICAgIyByZWdpc3Rl
cnMgKEMgZnVuY3Rpb25zIGNhbiByZXR1cm4gdXAgdG8gdHdvIHJlZ2lzdGVycywgZWFzaWx5KToK
KyAgICAjCisgICAgIyAtIFRoZSBjYWxsIGZyYW1lIHJlZ2lzdGVyLiBUaGlzIG1heSBvciBtYXkg
bm90IGhhdmUgYmVlbiBtb2RpZmllZAorICAgICMgICBieSB0aGUgc2xvd19wYXRoLCBidXQgdGhl
IGNvbnZlbnRpb24gaXMgdGhhdCBpdCByZXR1cm5zIGl0LiBJdCdzIG5vdAorICAgICMgICB0b3Rh
bGx5IGNsZWFyIGlmIHRoYXQncyBuZWNlc3NhcnksIHNpbmNlIHRoZSBjZnIgaXMgY2FsbGVlIHNh
dmUuCisgICAgIyAgIEJ1dCB0aGF0J3Mgb3VyIHN0eWxlIGluIHRoaXMgaGVyZSBpbnRlcnByZXRl
ciBzbyB3ZSBzdGljayB3aXRoIGl0LgorICAgICMKKyAgICAjIC0gQSBiaXQgdG8gc2F5IGlmIHRo
ZSBzbG93X3BhdGggc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIHRoZSBldmFsIGFuZCBoYXMKKyAgICAj
ICAgdGhlIHJldHVybiB2YWx1ZSwgb3IgZGlkIG5vdCBleGVjdXRlIHRoZSBldmFsIGJ1dCBoYXMg
YSBQQyBmb3IgdXMKKyAgICAjICAgdG8gY2FsbC4KKyAgICAjCisgICAgIyAtIEVpdGhlcjoKKyAg
ICAjICAgLSBUaGUgSlMgcmV0dXJuIHZhbHVlICh0d28gcmVnaXN0ZXJzKSwgb3IKKyAgICAjCisg
ICAgIyAgIC0gVGhlIFBDIHRvIGNhbGwuCisgICAgIworICAgICMgSXQgdHVybnMgb3V0IHRvIGJl
IGVhc2llciB0byBqdXN0IGFsd2F5cyBoYXZlIHRoaXMgcmV0dXJuIHRoZSBjZnIKKyAgICAjIGFu
ZCBhIFBDIHRvIGNhbGwsIGFuZCB0aGF0IFBDIG1heSBiZSBhIGR1bW15IHRodW5rIHRoYXQganVz
dAorICAgICMgcmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0aGUgZXZhbCByZXR1cm5lZC4KKyAg
ICAKKyAgICBzbG93UGF0aEZvckNhbGwoNCwgX2xsaW50X3Nsb3dfcGF0aF9jYWxsX2V2YWwpCisK
KworX2xsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50OgorICAgIGRpc3BhdGNoQWZ0ZXJDYWxsKCkK
KworCitfbGxpbnRfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgYmluZXEgVGFn
T2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BUZWFyT2ZmQWN0aXZhdGlvbkNy
ZWF0ZWQKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9w
VGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkCisub3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6
CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfdGVhcl9vZmZfYWN0aXZhdGlvbikK
Ky5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZDoKKyAgICBkaXNwYXRjaCgzKQorCisKK19s
bGludF9vcF90ZWFyX29mZl9hcmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxv
YWRpIDRbUENdLCB0MAorICAgIHN1YmkgMSwgdDAgICAjIEdldCB0aGUgdW5tb2RpZmllZEFyZ3Vt
ZW50c1JlZ2lzdGVyCisgICAgYmllcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEVtcHR5VmFsdWVU
YWcsIC5vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkCisgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfdGVhcl9vZmZfYXJndW1lbnRzKQorLm9wVGVhck9mZkFyZ3VtZW50c05vdENy
ZWF0ZWQ6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBkb1JldHVybigpCisgICAgbG9hZHAg
UmV0dXJuUENbY2ZyXSwgdDIKKyAgICBsb2FkcCBDYWxsZXJGcmFtZVtjZnJdLCBjZnIKKyAgICBy
ZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikKKyAgICByZXQKK2VuZAorCitfbGxp
bnRfb3BfcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjaGVja1N3aXRjaFRvSklURm9y
RXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFi
bGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX2NhbGxfcHV0X3Jl
c3VsdDoKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDMKKyAgICBzdG9y
ZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNl
dFtjZnIsIHQyLCA4XQorICAgIHZhbHVlUHJvZmlsZSh0MSwgdDAsIHQzKQorICAgIHRyYWNlRXhl
Y3V0aW9uKCkgIyBOZWVkcyB0byBiZSBoZXJlIGJlY2F1c2UgaXQgd291bGQgY2xvYmJlciB0MSwg
dDAKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXRfb2JqZWN0X29yX3RoaXM6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNoVG9KSVRGb3JFcGlsb2d1ZSgpCisg
ICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MiwgdDEsIHQw
KQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BSZXRPYmplY3RPclRoaXNOb3RPYmplY3QKKyAg
ICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBiYmIgU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9iamVjdFR5cGUsIC5vcFJldE9iamVj
dE9yVGhpc05vdE9iamVjdAorICAgIGRvUmV0dXJuKCkKKworLm9wUmV0T2JqZWN0T3JUaGlzTm90
T2JqZWN0OgorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUo
dDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X29wX21ldGhvZF9jaGVjazoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBpZ25vcmUgbWV0aG9kIGNoZWNrcyBhbmQg
dXNlIG5vcm1hbCBnZXRfYnlfaWQgb3B0aW1pemF0aW9ucy4KKyAgICBkaXNwYXRjaCgxKQorCisK
K19sbGludF9vcF9zdHJjYXQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX3N0cmNhdCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF90b19wcmltaXRpdmU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDhbUENdLCB0
MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQx
LCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9QcmltaXRpdmVJc0ltbQorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAgIGJibmVxIFN0cnVjdHVyZTo6bV90
eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJpbmdUeXBlLCAub3BUb1ByaW1pdGl2
ZVNsb3dDYXNlCisub3BUb1ByaW1pdGl2ZUlzSW1tOgorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0
W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisg
ICAgZGlzcGF0Y2goMykKKworLm9wVG9QcmltaXRpdmVTbG93Q2FzZToKKyAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF90b19wcmltaXRpdmUpCisgICAgZGlzcGF0Y2goMykKKworCitf
bGxpbnRfb3BfZ2V0X3BuYW1lczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X3BuYW1lcykKKyAgICBkaXNwYXRjaCgwKSAjIFRoZSBz
bG93X3BhdGggZWl0aGVyIGFkdmFuY2VzIHRoZSBQQyBvciBqdW1wcyB1cyB0byBzb21ld2hlcmUg
ZWxzZS4KKworCitfbGxpbnRfb3BfbmV4dF9wbmFtZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRpIDE2W1BDXSwgdDIKKyAgICBsb2FkaSBQYXls
b2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MAorICAgIGJpZXEgdDAsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MiwgOF0sIC5vcE5leHRQbmFtZUVuZAorICAgIGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2Fk
aSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MgorICAgIGxvYWRwIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3I6Om1fanNTdHJpbmdzW3QyXSwgdDMKKyAgICBsb2FkaSBbdDMsIHQwLCA4XSwgdDMK
KyAgICBhZGRpIDEsIHQwCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhd
CisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIs
IHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGxv
YWRpIDhbUENdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MywgOF0sIHQzCisg
ICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQxCisgICAgYnBuZXEgdDEsIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QyXSwgLm9wTmV4dFBuYW1lU2xv
dworICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkUHJvdG90eXBlQ2hh
aW5bdDJdLCB0MAorICAgIGxvYWRwIFN0cnVjdHVyZUNoYWluOjptX3ZlY3Rvclt0MF0sIHQwCisg
ICAgYnRweiBbdDBdLCAub3BOZXh0UG5hbWVUYXJnZXQKKy5vcE5leHRQbmFtZUNoZWNrUHJvdG90
eXBlTG9vcDoKKyAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbdDFd
LCBOdWxsVGFnLCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9hZHAgU3RydWN0dXJlOjptX3Byb3Rv
dHlwZSArIFBheWxvYWRPZmZzZXRbdDFdLCB0MgorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1
cmVbdDJdLCB0MQorICAgIGJwbmVxIHQxLCBbdDBdLCAub3BOZXh0UG5hbWVTbG93CisgICAgYWRk
cCA0LCB0MAorICAgIGJ0cG56IFt0MF0sIC5vcE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcAor
Lm9wTmV4dFBuYW1lVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJhbmNoKDI0W1BDXSkKKworLm9wTmV4
dFBuYW1lRW5kOgorICAgIGRpc3BhdGNoKDcpCisKKy5vcE5leHRQbmFtZVNsb3c6CisgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV4dF9wbmFtZSkgIyBUaGlzIGVpdGhlciBrZWVw
cyB0aGUgUEMgd2hlcmUgaXQgd2FzIChjYXVzaW5nIHVzIHRvIGxvb3ApIG9yIHNldHMgaXQgdG8g
dGFyZ2V0LgorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX3B1c2hfc2NvcGU6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1c2hf
c2NvcGUpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcG9wX3Njb3BlOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wb3Bfc2Nv
cGUpCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfcHVzaF9uZXdfc2NvcGU6CisgICAg
dHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3B1c2hf
bmV3X3Njb3BlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2NhdGNoOgorICAgICMg
VGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklUJ3MgdGhyb3cgdHJhbXBvbGluZSAo
YmVjYXVzZSB0aGUKKyAgICAjIG1hY2hpbmUgY29kZSByZXR1cm4gYWRkcmVzcyB3aWxsIGJlIHNl
dCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQorICAgICMgdGhlIGludGVycHJldGVyJ3Mg
dGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190cmFtcG9saW5lKS4KKyAgICAjIFRo
ZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRoZSBjZnIgdG8gYmUgaW4gdDAuIFRo
ZSB0aHJvd2luZworICAgICMgY29kZSBtdXN0IGhhdmUga25vd24gdGhhdCB3ZSB3ZXJlIHRocm93
aW5nIHRvIHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKKyAgICAjIHNldCBKU0dsb2JhbERhdGE6
OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdy4KKyAgICBtb3ZlIHQwLCBjZnIKKyAgICBsb2Fk
cCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMKKyAgICBsb2FkaSBKU0dsb2JhbERh
dGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10sIFBDCisgICAgbG9hZGkgSlNHbG9i
YWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3QzXSwgdDAKKyAgICBsb2FkaSBKU0ds
b2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10sIHQxCisgICAgc3RvcmVpIDAsIEpT
R2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICBzdG9yZWkgRW1w
dHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBUYWdPZmZzZXRbdDNdICAgICAg
IAorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIs
IHQyLCA4XQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgdHJhY2VF
eGVjdXRpb24oKSAgIyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUgYmVjYXVzZSB3ZSBkb24ndCB3YW50
IHRvIGNsb2JiZXIgdDAsIHQxLCB0MiwgdDMgYWJvdmUuCisgICAgZGlzcGF0Y2goMikKKworCitf
bGxpbnRfb3BfdGhyb3c6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX3Rocm93KQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Ro
cm93X3JlZmVyZW5jZV9lcnJvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF9zbG93X3BhdGhfdGhyb3dfcmVmZXJlbmNlX2Vycm9yKQorICAgIGRpc3BhdGNo
KDIpCisKKworX2xsaW50X29wX2pzcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkg
NFtQQ10sIHQwCisgICAgYWRkaSAzICogNCwgUEMsIHQxCisgICAgc3RvcmVpIHQxLCBbY2ZyLCB0
MCwgOF0KKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3JldDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZHAgW2Nmciwg
dDAsIDhdLCBQQworICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50X29wX2RlYnVnOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9kZWJ1ZykK
KyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcm9maWxlX3dpbGxfY2FsbDoKKyAgICB0
cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVy
UmVmZXJlbmNlW3NwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUK
KyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wcm9maWxlX3dpbGxfY2FsbCkKKy5v
cFByb2ZpbGVXaWxsQ2FsbERvbmU6CisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfcHJv
ZmlsZV9kaWRfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tG
cmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5v
cFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9w
cm9maWxlX2RpZF9jYWxsKQorLm9wUHJvZmlsZURpZENhbGxEb25lOgorICAgIGRpc3BhdGNoKDIp
CisKKworX2xsaW50X29wX2VuZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2hlY2tTd2l0
Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBUYWdP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4
XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3Ry
YW1wb2xpbmU6CisgICAgIyBXaGVuIHRocm93aW5nIGZyb20gdGhlIGludGVycHJldGVyIChpLmUu
IHRocm93aW5nIGZyb20gTExJbnRTbG93UGF0aHMpLCBzbworICAgICMgdGhlIHRocm93IHRhcmdl
dCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29kZSwgd2UgY29tZSB0byBoZXJlLgor
ICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUgSklUJ3MgdGhyb3dpbmcgcHJvdG9j
b2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQxCisgICAgbG9h
ZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0MV0sIHQwCisgICAgam1wIEpTR2xv
YmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFdCisKKworX2xsaW50X3Rocm93X2R1
cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxs
KHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFbc3BdLCB0MQorICAgIGxv
YWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0MAorICAgIGptcCBKU0ds
b2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorCisKKyMgTGFzdGx5LCBtYWtl
IHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3ZSBkb24ndCBzdXBwb3J0IGFsbCBv
cGNvZGVzLgorIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZlciBhcmlzZSB3aGVuIHVzaW5nIExM
SW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAorIyBhcyBtdWNoLgorCittYWNybyBub3RTdXBw
b3J0ZWQoKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGNyYXNoKCkKKyAgICBlbHNl
CisgICAgICAgICMgV2Ugc2hvdWxkIHVzZSB3aGF0ZXZlciB0aGUgc21hbGxlc3QgcG9zc2libGUg
aW5zdHJ1Y3Rpb24gaXMsIGp1c3QgdG8KKyAgICAgICAgIyBlbnN1cmUgdGhhdCB0aGVyZSBpcyBh
IGdhcCBiZXR3ZWVuIGluc3RydWN0aW9uIGxhYmVscy4gSWYgbXVsdGlwbGUKKyAgICAgICAgIyBz
bWFsbGVzdCBpbnN0cnVjdGlvbnMgZXhpc3QsIHdlIHNob3VsZCBwaWNrIHRoZSBvbmUgdGhhdCBp
cyBtb3N0CisgICAgICAgICMgbGlrZWx5IHJlc3VsdCBpbiBleGVjdXRpb24gYmVpbmcgaGFsdGVk
LiBDdXJyZW50bHkgdGhhdCBpcyB0aGUgYnJlYWsKKyAgICAgICAgIyBpbnN0cnVjdGlvbiBvbiBh
bGwgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBpbnRlcmVzdGVkIGluLiAoQnJlYWsgaXMgaW50MworICAg
ICAgICAjIG9uIEludGVsLCB3aGljaCBpcyAxIGJ5dGUsIGFuZCBia3B0IG9uIEFSTXY3LCB3aGlj
aCBpcyAyIGJ5dGVzLikKKyAgICAgICAgYnJlYWsKKyAgICBlbmQKK2VuZAorCitfbGxpbnRfb3Bf
Z2V0X2FycmF5X2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3Vz
dG9tX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3Vz
dG9tX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfY3Vz
dG9tX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9nZW5l
cmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX2No
YWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3By
b3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9nZXRfYnlfaWRfZ2V0dGVyX3Nl
bGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9ieV9pZF9wcm90bzoKKyAg
ICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX3NlbGY6CisgICAgbm90U3Vw
cG9ydGVkKCkKKworX2xsaW50X29wX2dldF9zdHJpbmdfbGVuZ3RoOgorICAgIG5vdFN1cHBvcnRl
ZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfZ2VuZXJpYzoKKyAgICBub3RTdXBwb3J0ZWQoKQor
CitfbGxpbnRfb3BfcHV0X2J5X2lkX3JlcGxhY2U6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xs
aW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uOgorICAgIG5vdFN1cHBvcnRlZCgpCisKKworIyBJ
bmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50LgorX2xsaW50X2VuZDoKKyAgICBjcmFzaCgpCisKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnBy
ZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93
TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworI2lmIEVOQUJMRShMTElO
VCkKKworI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUgPHd0Zi9J
bmxpbmVBU00uaD4KKworLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20s
IHdoaWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUgYXNzZW1ibHkgY29kZQorLy8gZm9yIHRoZSBpbnRl
cnByZXRlciwgYXMgY29tcGlsZWQgZnJvbSBMb3dMZXZlbEludGVycHJldGVyLmFzbS4KKyNpbmNs
dWRlICJMTEludEFzc2VtYmx5LmgiCisKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRl
cnByZXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTG93TGV2ZWxJbnRlcnByZXRl
cl9oCisjZGVmaW5lIExvd0xldmVsSW50ZXJwcmV0ZXJfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJPcGNvZGUuaCIKKworI2Rl
ZmluZSBMTElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29kZSwgbGVuZ3RoKSBleHRlcm4gIkMiIHZv
aWQgbGxpbnRfIyNvcGNvZGUoKTsKKyAgICBGT1JfRUFDSF9PUENPREVfSUQoTExJTlRfSU5TVFJV
Q1RJT05fREVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJVQ1RJT05fREVDTAorCitleHRlcm4gIkMi
IHZvaWQgbGxpbnRfYmVnaW4oKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9lbmQoKTsKK2V4dGVy
biAiQyIgdm9pZCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxp
bnRfZXZhbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9j
YWxsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxs
X2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZnVuY3Rpb25fZm9yX2NvbnN0
cnVjdF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X2dlbmVyaWNfcmV0dXJu
X3BvaW50KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhyb3dfZnJvbV9zbG93X3BhdGhfdHJh
bXBvbGluZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1w
b2xpbmUoKTsKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8vIExvd0xldmVs
SW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJt
djcucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXJt
djcucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9h
cm12Ny5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDMyIEBACisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJvcHQiCisKK2Ns
YXNzIE5vZGUKKyAgICBkZWYgYXJtVjdTaW5nbGUKKyAgICAgICAgZG91YmxlT3BlcmFuZCA9IGFy
bVY3T3BlcmFuZAorICAgICAgICByYWlzZSAiQm9ndXMgcmVnaXN0ZXIgbmFtZSAje2RvdWJsZU9w
ZXJhbmR9IiB1bmxlc3MgZG91YmxlT3BlcmFuZCA9fiAvXmQvCisgICAgICAgICJzIiArICgkfi5w
b3N0X21hdGNoLnRvX2kgKiAyKS50b19zCisgICAgZW5kCitlbmQKKworY2xhc3MgU3BlY2lhbFJl
Z2lzdGVyIDwgTm9DaGlsZHJlbgorICAgIGRlZiBpbml0aWFsaXplKG5hbWUpCisgICAgICAgIEBu
YW1lID0gbmFtZQorICAgIGVuZAorICAgIAorICAgIGRlZiBhcm1WN09wZXJhbmQKKyAgICAgICAg
QG5hbWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAg
CisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgcmVnaXN0ZXI/CisgICAgICAgIHRydWUKKyAgICBlbmQKK2VuZAorCitBUk12N19FWFRSQV9H
UFJTID0gW1NwZWNpYWxSZWdpc3Rlci5uZXcoInI5IiksIFNwZWNpYWxSZWdpc3Rlci5uZXcoInI4
IiksIFNwZWNpYWxSZWdpc3Rlci5uZXcoInIzIildCitBUk12N19FWFRSQV9GUFJTID0gW1NwZWNp
YWxSZWdpc3Rlci5uZXcoImQ3IildCitBUk12N19TQ1JBVENIX0ZQUiA9IFNwZWNpYWxSZWdpc3Rl
ci5uZXcoImQ4IikKKworZGVmIGFybVY3TW92ZUltbWVkaWF0ZSh2YWx1ZSwgcmVnaXN0ZXIpCisg
ICAgIyBDdXJyZW50bHkgd2Ugb25seSBoYW5kbGUgdGhlIHNpbXBsZSBjYXNlcywgYW5kIGZhbGwg
YmFjayB0byBtb3YvbW92dCBmb3IgdGhlIGNvbXBsZXggb25lcy4KKyAgICBpZiB2YWx1ZSA+PSAw
ICYmIHZhbHVlIDwgMjU2CisgICAgICAgICRhc20ucHV0cyAibW92dyAje3JlZ2lzdGVyLmFybVY3
T3BlcmFuZH0sIFwjI3t2YWx1ZX0iCisgICAgZWxzaWYgKH52YWx1ZSkgPj0gMCAmJiAofnZhbHVl
KSA8IDI1NgorICAgICAgICAkYXNtLnB1dHMgIm12biAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0s
IFwjI3t+dmFsdWV9IgorICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJtb3Z3ICN7cmVnaXN0
ZXIuYXJtVjdPcGVyYW5kfSwgXCMje3ZhbHVlICYgMHhmZmZmfSIKKyAgICAgICAgaWYgKHZhbHVl
ICYgMHhmZmZmMDAwMCkgIT0gMAorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3Z0ICN7cmVnaXN0
ZXIuYXJtVjdPcGVyYW5kfSwgXCMje3ZhbHVlID4+IDE2fSIKKyAgICAgICAgZW5kCisgICAgZW5k
CitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRAorICAgIGRlZiBhcm1WN09wZXJhbmQKKyAgICAgICAg
Y2FzZSBuYW1lCisgICAgICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgICAgICAgInIw
IgorICAgICAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAgICAgICAgICAgICJyMSIKKyAgICAg
ICAgd2hlbiAidDIiLCAiYTIiCisgICAgICAgICAgICAicjIiCisgICAgICAgIHdoZW4gImEzIgor
ICAgICAgICAgICAgInIzIgorICAgICAgICB3aGVuICJ0MyIKKyAgICAgICAgICAgICJyNCIKKyAg
ICAgICAgd2hlbiAidDQiCisgICAgICAgICAgICAicjciCisgICAgICAgIHdoZW4gImNmciIKKyAg
ICAgICAgICAgICJyNSIKKyAgICAgICAgd2hlbiAibHIiCisgICAgICAgICAgICAibHIiCisgICAg
ICAgIHdoZW4gInNwIgorICAgICAgICAgICAgInNwIgorICAgICAgICBlbHNlCisgICAgICAgICAg
ICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIEFSTXY3IGF0ICN7Y29kZU9yaWdpblN0
cmluZ30iCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIEZQUmVnaXN0ZXJJRAor
ICAgIGRlZiBhcm1WN09wZXJhbmQKKyAgICAgICAgY2FzZSBuYW1lCisgICAgICAgIHdoZW4gImZ0
MCIsICJmciIKKyAgICAgICAgICAgICJkMCIKKyAgICAgICAgd2hlbiAiZnQxIgorICAgICAgICAg
ICAgImQxIgorICAgICAgICB3aGVuICJmdDIiCisgICAgICAgICAgICAiZDIiCisgICAgICAgIHdo
ZW4gImZ0MyIKKyAgICAgICAgICAgICJkMyIKKyAgICAgICAgd2hlbiAiZnQ0IgorICAgICAgICAg
ICAgImQ0IgorICAgICAgICB3aGVuICJmdDUiCisgICAgICAgICAgICAiZDUiCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJhaXNlICJCYWQgcmVnaXN0ZXIgI3tuYW1lfSBmb3IgQVJNdjcgYXQg
I3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworY2xhc3Mg
SW1tZWRpYXRlCisgICAgZGVmIGFybVY3T3BlcmFuZAorICAgICAgICByYWlzZSAiSW52YWxpZCBp
bW1lZGlhdGUgI3t2YWx1ZX0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgaWYgdmFsdWUgPCAwIG9y
IHZhbHVlID4gMjU1CisgICAgICAgICJcIyN7dmFsdWV9IgorICAgIGVuZAorZW5kCisKK2NsYXNz
IEFkZHJlc3MKKyAgICBkZWYgYXJtVjdPcGVyYW5kCisgICAgICAgIHJhaXNlICJCYWQgb2Zmc2V0
IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIGlmIG9mZnNldC52YWx1ZSA8IC0weGZmIG9yIG9mZnNl
dC52YWx1ZSA+IDB4ZmZmCisgICAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0sIFwjI3tvZmZz
ZXQudmFsdWV9XSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgICBkZWYgYXJt
VjdPcGVyYW5kCisgICAgICAgIHJhaXNlICJCYWQgb2Zmc2V0IGF0ICN7Y29kZU9yaWdpblN0cmlu
Z30iIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICAgICJbI3tiYXNlLmFybVY3T3BlcmFuZH0s
ICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2FsZVNoaWZ0fV0iCisgICAgZW5kCitl
bmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgICAgZGVmIGFybVY3T3BlcmFuZAorICAgICAg
ICByYWlzZSAiVW5jb252ZXJ0ZWQgYWJzb2x1dGUgYWRkcmVzcyBhdCAje2NvZGVPcmlnaW5TdHJp
bmd9IgorICAgIGVuZAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgYnJhbmNoIG9wcy4gRm9yIGV4
YW1wbGU6CisjCisjIGJhZGRpeiBmb28sIGJhciwgYmF6CisjCisjIHdpbGwgYmVjb21lOgorIwor
IyBhZGRpIGZvbywgYmFyCisjIGJ6IGJhegorIworCitkZWYgYXJtVjdMb3dlckJyYW5jaE9wcyhs
aXN0KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3QuZWFjaCB7CisgICAgICAgIHwgbm9kZSB8
CisgICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgICAgICAgIGNhc2Ugbm9k
ZS5vcGNvZGUKKyAgICAgICAgICAgIHdoZW4gL15iKGFkZGl8c3ViaXxvcml8YWRkcCkvCisgICAg
ICAgICAgICAgICAgb3AgPSAkMQorICAgICAgICAgICAgICAgIGJyYW5jaCA9ICJiIiArICR+LnBv
c3RfbWF0Y2gKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYXNlIG9wCisgICAg
ICAgICAgICAgICAgd2hlbiAiYWRkaSIsICJhZGRwIgorICAgICAgICAgICAgICAgICAgICBvcCA9
ICJhZGRpcyIKKyAgICAgICAgICAgICAgICB3aGVuICJzdWJpIgorICAgICAgICAgICAgICAgICAg
ICBvcCA9ICJzdWJpcyIKKyAgICAgICAgICAgICAgICB3aGVuICJvcmkiCisgICAgICAgICAgICAg
ICAgICAgIG9wID0gIm9yaXMiCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAg
CisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3Jp
Z2luLCBvcCwgbm9kZS5vcGVyYW5kc1swLi4tMl0pCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8
PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBicmFuY2gsIFtub2RlLm9wZXJhbmRz
Wy0xXV0pCisgICAgICAgICAgICB3aGVuICJibXVsaW8iCisgICAgICAgICAgICAgICAgdG1wMSA9
IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgICAgIHRtcDIgPSBU
bXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJzbXVsbGkiLCBbbm9kZS5vcGVyYW5k
c1swXSwgbm9kZS5vcGVyYW5kc1sxXSwgbm9kZS5vcGVyYW5kc1sxXSwgdG1wMV0pCisgICAgICAg
ICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAicnNo
aWZ0aSIsIFtub2RlLm9wZXJhbmRzWy0yXSwgSW1tZWRpYXRlLm5ldyhub2RlLmNvZGVPcmlnaW4s
IDMxKSwgdG1wMl0pCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
bm9kZS5jb2RlT3JpZ2luLCAiYmluZXEiLCBbdG1wMSwgdG1wMiwgbm9kZS5vcGVyYW5kc1stMV1d
KQorICAgICAgICAgICAgd2hlbiAvXmJtdWxpLworICAgICAgICAgICAgICAgIGNvbmRpdGlvbiA9
ICR+LnBvc3RfbWF0Y2gKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5l
dyhub2RlLmNvZGVPcmlnaW4sICJtdWxpIiwgbm9kZS5vcGVyYW5kc1swLi4tMl0pCisgICAgICAg
ICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAiYnRp
IiArIGNvbmRpdGlvbiwgW25vZGUub3BlcmFuZHNbLTJdLCBub2RlLm9wZXJhbmRzWy0xXV0pCisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAg
ICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAg
ICAgIGVuZAorICAgIH0KKyAgICBuZXdMaXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBzaGlm
dCBvcHMuIEZvciBleGFtcGxlOgorIworIyBsc2hpZnRpIGZvbywgYmFyCisjCisjIHdpbGwgYmVj
b21lOgorIworIyBhbmRpIGZvbywgMzEsIHRtcAorIyBsc2hpZnRpIHRtcCwgYmFyCisjCisKK2Rl
ZiBhcm1WN1Nhbml0aXplU2hpZnQob3BlcmFuZCwgbGlzdCkKKyAgICByZXR1cm4gb3BlcmFuZCBp
ZiBvcGVyYW5kLmltbWVkaWF0ZT8KKyAgICAKKyAgICB0bXAgPSBUbXAubmV3KG9wZXJhbmQuY29k
ZU9yaWdpbiwgOmdwcikKKyAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVP
cmlnaW4sICJhbmRpIiwgW29wZXJhbmQsIEltbWVkaWF0ZS5uZXcob3BlcmFuZC5jb2RlT3JpZ2lu
LCAzMSksIHRtcF0pCisgICAgdG1wCitlbmQKKworZGVmIGFybVY3TG93ZXJTaGlmdE9wcyhsaXN0
KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3QuZWFjaCB7CisgICAgICAgIHwgbm9kZSB8Cisg
ICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgICAgICAgIGNhc2Ugbm9kZS5v
cGNvZGUKKyAgICAgICAgICAgIHdoZW4gImxzaGlmdGkiLCAicnNoaWZ0aSIsICJ1cnNoaWZ0aSIK
KyAgICAgICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRzLnNpemUgPT0gMgorICAgICAgICAgICAg
ICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5vZGUu
b3Bjb2RlLCBbYXJtVjdTYW5pdGl6ZVNoaWZ0KG5vZGUub3BlcmFuZHNbMF0sIG5ld0xpc3QpLCBu
b2RlLm9wZXJhbmRzWzFdXSkKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNv
ZGUsIFtub2RlLm9wZXJhbmRzWzBdLCBhcm1WN1Nhbml0aXplU2hpZnQobm9kZS5vcGVyYW5kc1sx
XSwgbmV3TGlzdCksIG5vZGUub3BlcmFuZHNbMl1dKQorICAgICAgICAgICAgICAgICAgICByYWlz
ZSAiV3JvbmcgbnVtYmVyIG9mIG9wZXJhbmRzIGZvciBzaGlmdCBhdCAje25vZGUuY29kZU9yaWdp
blN0cmluZ30iIHVubGVzcyBub2RlLm9wZXJhbmRzLnNpemUgPT0gMworICAgICAgICAgICAgICAg
IGVuZAorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQor
ICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9k
ZQorICAgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcg
b2YgbWFsZm9ybWVkIGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGU6CisjCisjIGxvYWRwIDEwMDAwW2Zv
b10sIGJhcgorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbW92ZSAxMDAwMCwgdG1wCisjIGFkZHAg
Zm9vLCB0bXAKKyMgbG9hZHAgMFt0bXBdLCBiYXIKKyMKKworY2xhc3MgTm9kZQorICAgIGRlZiBh
cm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgICAgICBtYXBDaGls
ZHJlbiB7CisgICAgICAgICAgICB8IG5vZGUgfAorICAgICAgICAgICAgbm9kZS5hcm1WN0xvd2Vy
TWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgICAgICB9CisgICAgZW5kCitlbmQK
KworY2xhc3MgQWRkcmVzcworICAgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVj
dXJzZShsaXN0KQorICAgICAgICBpZiBvZmZzZXQudmFsdWUgPCAtMHhmZiBvciBvZmZzZXQudmFs
dWUgPiAweGZmZgorICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQor
ICAgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBb
b2Zmc2V0LCB0bXBdKQorICAgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9y
aWdpbiwgImFkZHAiLCBbYmFzZSwgdG1wXSkKKyAgICAgICAgICAgIEFkZHJlc3MubmV3KGNvZGVP
cmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgc2VsZgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitjbGFzcyBCYXNl
SW5kZXgKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc1JlY3Vyc2UobGlzdCkK
KyAgICAgICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAgICAgICAgIHRtcCA9IFRtcC5uZXco
Y29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNv
ZGVPcmlnaW4sICJtb3ZlIiwgW29mZnNldCwgdG1wXSkKKyAgICAgICAgICAgIGxpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJhZGRwIiwgW2Jhc2UsIHRtcF0pCisgICAgICAgICAg
ICBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIHRtcCwgaW5kZXgsIHNjYWxlLCBJbW1lZGlhdGUu
bmV3KGNvZGVPcmlnaW4sIDApKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmCisgICAg
ICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIEFic29sdXRlQWRkcmVzcworICAgIGRlZiBh
cm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgICAgICB0bXAgPSBU
bXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KGNvZGVPcmlnaW4sICJtb3ZlIiwgW2FkZHJlc3MsIHRtcF0pCisgICAgICAgIEFkZHJlc3MubmV3
KGNvZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAwKSkKKyAgICBlbmQK
K2VuZAorCitkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3NlcyhsaXN0KQorICAgIG5ld0xp
c3QgPSBbXQorICAgIGxpc3QuZWFjaCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIG5ld0xp
c3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShuZXdMaXN0KQor
ICAgIH0KKyAgICBuZXdMaXN0CitlbmQKKworIworIyBMb3dlcmluZyBvZiBtYWxmb3JtZWQgYWRk
cmVzc2VzIGluIGRvdWJsZSBsb2FkcyBhbmQgc3RvcmVzLiBGb3IgZXhhbXBsZToKKyMKKyMgbG9h
ZGQgW2ZvbywgYmFyLCA4XSwgYmF6CisjCisjIGJlY29tZXM6CisjCisjIGxlYXAgW2ZvbywgYmFy
LCA4XSwgdG1wCisjIGxvYWRkIFt0bXBdLCBiYXoKKyMKKworY2xhc3MgTm9kZQorICAgIGRlZiBh
cm1WN0RvdWJsZUFkZHJlc3MobGlzdCkKKyAgICAgICAgc2VsZgorICAgIGVuZAorZW5kCisKK2Ns
YXNzIEJhc2VJbmRleAorICAgIGRlZiBhcm1WN0RvdWJsZUFkZHJlc3MobGlzdCkKKyAgICAgICAg
dG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICBsaXN0IDw8IEluc3RydWN0
aW9uLm5ldyhjb2RlT3JpZ2luLCAibGVhcCIsIFtzZWxmLCB0bXBdKQorICAgICAgICBBZGRyZXNz
Lm5ldyhjb2RlT3JpZ2luLCB0bXAsIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgMCkpCisgICAg
ZW5kCitlbmQKKworZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRBZGRyZXNzZXNEb3VibGUobGlzdCkK
KyAgICBuZXdMaXN0ID0gW10KKyAgICBsaXN0LmVhY2ggeworICAgICAgICB8IG5vZGUgfAorICAg
ICAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICAgICAgICBjYXNlIG5vZGUub3Bj
b2RlCisgICAgICAgICAgICB3aGVuICJsb2FkZCIKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJsb2FkZCIsIFtub2RlLm9wZXJhbmRz
WzBdLmFybVY3RG91YmxlQWRkcmVzcyhuZXdMaXN0KSwgbm9kZS5vcGVyYW5kc1sxXV0pCisgICAg
ICAgICAgICB3aGVuICJzdG9yZWQiCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAic3RvcmVkIiwgW25vZGUub3BlcmFuZHNbMF0sIG5v
ZGUub3BlcmFuZHNbMV0uYXJtVjdEb3VibGVBZGRyZXNzKG5ld0xpc3QpXSkKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICAgIGVuZAor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgZW5kCisg
ICAgfQorICAgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2VyaW5nIG9mIG1pc3BsYWNlZCBpbW1l
ZGlhdGVzLiBGb3IgZXhhbXBsZToKKyMKKyMgc3RvcmVpIDAsIFtmb29dCisjCisjIHdpbGwgYmVj
b21lOgorIworIyBtb3ZlIDAsIHRtcAorIyBzdG9yZWkgdG1wLCBbZm9vXQorIworCitkZWYgYXJt
VjdMb3dlck1pc3BsYWNlZEltbWVkaWF0ZXMobGlzdCkKKyAgICBuZXdMaXN0ID0gW10KKyAgICBs
aXN0LmVhY2ggeworICAgICAgICB8IG5vZGUgfAorICAgICAgICBpZiBub2RlLmlzX2E/IEluc3Ry
dWN0aW9uCisgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICAgICAgICB3aGVuICJz
dG9yZWkiLCAic3RvcmVwIgorICAgICAgICAgICAgICAgIG9wZXJhbmRzID0gbm9kZS5vcGVyYW5k
cworICAgICAgICAgICAgICAgIG5ld09wZXJhbmRzID0gW10KKyAgICAgICAgICAgICAgICBvcGVy
YW5kcy5lYWNoIHsKKyAgICAgICAgICAgICAgICAgICAgfCBvcGVyYW5kIHwKKyAgICAgICAgICAg
ICAgICAgICAgaWYgb3BlcmFuZC5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRtcCA9IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAg
ICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcob3BlcmFuZC5jb2RlT3JpZ2lu
LCAibW92ZSIsIFtvcGVyYW5kLCB0bXBdKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3Bl
cmFuZHMgPDwgdG1wCisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5ld09wZXJhbmRzIDw8IG9wZXJhbmQKKyAgICAgICAgICAgICAgICAgICAgZW5kCisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24u
bmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIG5ld09wZXJhbmRzKQorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAgICAgZW5k
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICBlbmQK
KyAgICB9CisgICAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWFsZm9ybWVkIGlt
bWVkaWF0ZXMgZXhjZXB0IHdoZW4gdXNlZCBpbiBhICJtb3ZlIiBpbnN0cnVjdGlvbi4KKyMgRm9y
IGV4YW1wbGU6CisjCisjIGFkZHAgNjQyNjQxLCBmb28KKyMKKyMgd2lsbCBiZWNvbWU6CisjCisj
IG1vdmUgNjQyNjQxLCB0bXAKKyMgYWRkcCB0bXAsIGZvbworIworCitjbGFzcyBOb2RlCisgICAg
ZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShsaXN0KQorICAgICAgICBt
YXBDaGlsZHJlbiB7CisgICAgICAgICAgICB8IG5vZGUgfAorICAgICAgICAgICAgbm9kZS5hcm1W
N0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlzdCkKKyAgICAgICAgfQorICAgIGVu
ZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVk
aWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitjbGFzcyBC
YXNlSW5kZXgKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxp
c3QpCisgICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MK
KyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAg
ICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgICBkZWYgYXJtVjdM
b3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgICAgIGlmIHZhbHVlIDwg
MCBvciB2YWx1ZSA+IDI1NQorICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6
Z3ByKQorICAgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgIm1v
dmUiLCBbc2VsZiwgdG1wXSkKKyAgICAgICAgICAgIHRtcAorICAgICAgICBlbHNlCisgICAgICAg
ICAgICBzZWxmCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2RlZiBhcm1WN0xvd2VyTWFs
Zm9ybWVkSW1tZWRpYXRlcyhsaXN0KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3QuZWFjaCB7
CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAg
ICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgICAgICAgIHdoZW4gIm1vdmUiCisgICAg
ICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgICAgICB3aGVuICJhZGRpIiwgImFk
ZHAiLCAiYWRkaXMiLCAic3ViaSIsICJzdWJwIiwgInN1YmlzIgorICAgICAgICAgICAgICAgIGlm
IG5vZGUub3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZAorICAgICAgICAgICAgICAgICAg
ICAgICAgbm9kZS5vcGVyYW5kc1swXS52YWx1ZSA8IDAgYW5kCisgICAgICAgICAgICAgICAgICAg
ICAgICBub2RlLm9wZXJhbmRzWzBdLnZhbHVlID49IDI1NSBhbmQKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgICAgICAgICAgICAgIGlmIG5v
ZGUub3Bjb2RlID1+IC9hZGQvCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdPcGNvZGUgPSAi
c3ViIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgbmV3T3Bjb2RlID0gImFkZCIgKyBub2RlLm9wY29kZVstMS4u
LTFdCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAgICBuZXdMaXN0
IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5ld09wY29kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0ltbWVkaWF0ZS5uZXcoLW5v
ZGUub3BlcmFuZHNbMF0udmFsdWUpXSArIG5vZGUub3BlcmFuZHNbMS4uLTFdKQorICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLmFybVY3TG93
ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0KQorICAgICAgICAgICAgICAgIGVu
ZAorICAgICAgICAgICAgd2hlbiAibXVsaSIKKyAgICAgICAgICAgICAgICBpZiBub2RlLm9wZXJh
bmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgICAgICAgICB0bXAgPSBUbXAubmV3
KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1
Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1w
XSkKKyAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5j
b2RlT3JpZ2luLCAibXVsaSIsIFt0bXBdICsgbm9kZS5vcGVyYW5kc1sxLi4tMV0pCisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUuYXJtVjdM
b3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xpc3QpCisgICAgICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlLmFy
bVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0KQorICAgICAgICAgICAg
ZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICBl
bmQKKyAgICB9CisgICAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWlzcGxhY2Vk
IGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGU6CisjCisjIGFkZGkgZm9vLCBbYmFyXQorIworIyB3aWxs
IGJlY29tZToKKyMKKyMgbG9hZGkgW2Jhcl0sIHRtcAorIyBhZGRpIGZvbywgdG1wCisjIHN0b3Jl
aSB0bXAsIFtiYXJdCisjCisjIEFub3RoZXIgZXhhbXBsZToKKyMKKyMgYWRkaSBbZm9vXSwgYmFy
CisjCisjIHdpbGwgYmVjb21lOgorIworIyBsb2FkaSBbZm9vXSwgdG1wCisjIGFkZGkgdG1wLCBi
YXIKKyMKKworZGVmIGFybVY3QXNSZWdpc3RlcihwcmVMaXN0LCBwb3N0TGlzdCwgb3BlcmFuZCwg
c3VmZml4LCBuZWVkU3RvcmUpCisgICAgcmV0dXJuIG9wZXJhbmQgdW5sZXNzIG9wZXJhbmQuYWRk
cmVzcz8KKyAgICAKKyAgICB0bXAgPSBUbXAubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgaWYgc3Vm
Zml4ID09ICJkIiB0aGVuIDpmcHIgZWxzZSA6Z3ByIGVuZCkKKyAgICBwcmVMaXN0IDw8IEluc3Ry
dWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJsb2FkIiArIHN1ZmZpeCwgW29wZXJhbmQs
IHRtcF0pCisgICAgaWYgbmVlZFN0b3JlCisgICAgICAgIHBvc3RMaXN0IDw8IEluc3RydWN0aW9u
Lm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJzdG9yZSIgKyBzdWZmaXgsIFt0bXAsIG9wZXJhbmRd
KQorICAgIGVuZAorICAgIHRtcAorZW5kCisKK2RlZiBhcm1WN0FzUmVnaXN0ZXJzKHByZUxpc3Qs
IHBvc3RMaXN0LCBvcGVyYW5kcywgc3VmZml4KQorICAgIG5ld09wZXJhbmRzID0gW10KKyAgICBv
cGVyYW5kcy5lYWNoX3dpdGhfaW5kZXggeworICAgICAgICB8IG9wZXJhbmQsIGluZGV4IHwKKyAg
ICAgICAgbmV3T3BlcmFuZHMgPDwgYXJtVjdBc1JlZ2lzdGVyKHByZUxpc3QsIHBvc3RMaXN0LCBv
cGVyYW5kLCBzdWZmaXgsIGluZGV4ID09IG9wZXJhbmRzLnNpemUgLSAxKQorICAgIH0KKyAgICBu
ZXdPcGVyYW5kcworZW5kCisKK2RlZiBhcm1WN0xvd2VyTWlzcGxhY2VkQWRkcmVzc2VzKGxpc3Qp
CisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlzdC5lYWNoIHsKKyAgICAgICAgfCBub2RlIHwKKyAg
ICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAgICAgICAgcG9zdEluc3RydWN0
aW9ucyA9IFtdCisgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICAgICAgICB3aGVu
ICJhZGRpIiwgImFkZHAiLCAiYWRkaXMiLCAiYW5kaSIsICJhbmRwIiwgImxzaGlmdGkiLCAibXVs
aSIsICJuZWdpIiwgIm5vdGkiLCAib3JpIiwgIm9yaXMiLAorICAgICAgICAgICAgICAgICJvcnAi
LCAicnNoaWZ0aSIsICJ1cnNoaWZ0aSIsICJzdWJpIiwgInN1YnAiLCAic3ViaXMiLCAieG9yaSIs
ICJ4b3JwIiwgL15iaS8sIC9eYnAvLCAvXmJ0aS8sCisgICAgICAgICAgICAgICAgL15idHAvLCAv
XmNpLywgL15jcC8sIC9edGkvCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9k
ZS5vcGVyYW5kcywgImkiKSkKKyAgICAgICAgICAgIHdoZW4gImJiZXEiLCAiYmJuZXEiLCAiYmJh
IiwgImJiYWVxIiwgImJiYiIsICJiYmJlcSIsICJidGJvIiwgImJ0YnoiLCAiYnRibnoiLCAidGJ6
IiwgInRibnoiLAorICAgICAgICAgICAgICAgICJ0Ym8iCisgICAgICAgICAgICAgICAgbmV3TGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwgcG9zdElu
c3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImIiKSkKKyAgICAgICAgICAgIHdoZW4gImJiZ3Qi
LCAiYmJndGVxIiwgImJibHQiLCAiYmJsdGVxIiwgImJ0YnMiLCAidGJzIgorICAgICAgICAgICAg
ICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcm1WN0FzUmVnaXN0ZXJzKG5ld0xp
c3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMsICJicyIpKQorICAgICAgICAgICAg
d2hlbiAiYWRkZCIsICJkaXZkIiwgInN1YmQiLCAibXVsZCIsICJzcXJ0ZCIsIC9eYmQvCisgICAg
ICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3Rl
cnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImQiKSkKKyAgICAg
ICAgICAgIHdoZW4gImptcCIsICJjYWxsIgorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5z
dHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbYXJtVjdBc1JlZ2lzdGVyKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlv
bnMsIG5vZGUub3BlcmFuZHNbMF0sICJwIiwgZmFsc2UpXSkKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICAgIGVuZAorICAgICAgICAg
ICAgbmV3TGlzdCArPSBwb3N0SW5zdHJ1Y3Rpb25zCisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IG5ld0xpc3QgPDwgbm9kZQorICAgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdAorZW5kCisK
KyMKKyMgTG93ZXJpbmcgb2YgcmVnaXN0ZXIgcmV1c2UgaW4gY29tcGFyZSBpbnN0cnVjdGlvbnMu
IEZvciBleGFtcGxlOgorIworIyBjaWVxIHQwLCB0MSwgdDAKKyMKKyMgd2lsbCBiZWNvbWU6Cisj
CisjIG1vdiB0bXAsIHQwCisjIGNpZXEgdG1wLCB0MSwgdDAKKyMKKworZGVmIGFybVY3TG93ZXJS
ZWdpc3RlclJldXNlKGxpc3QpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlzdC5lYWNoIHsKKyAg
ICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAgICAg
ICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgICAgICAgd2hlbiAiY2llcSIsICJjaW5lcSIs
ICJjaWEiLCAiY2lhZXEiLCAiY2liIiwgImNpYmVxIiwgImNpZ3QiLCAiY2lndGVxIiwgImNpbHQi
LCAiY2lsdGVxIiwKKyAgICAgICAgICAgICAgICAiY3BlcSIsICJjcG5lcSIsICJjcGEiLCAiY3Bh
ZXEiLCAiY3BiIiwgImNwYmVxIiwgImNwZ3QiLCAiY3BndGVxIiwgImNwbHQiLCAiY3BsdGVxIiwK
KyAgICAgICAgICAgICAgICAidGlvIiwgInRpcyIsICJ0aXoiLCAidGlueiIsICJ0Ym8iLCAidGJz
IiwgInRieiIsICJ0Ym56IgorICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHMuc2l6ZSA9
PSAyCisgICAgICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0gPT0gbm9kZS5vcGVy
YW5kc1sxXQorICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gVG1wLm5ldyhub2RlLmNvZGVP
cmlnaW4sIDpncHIpCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0
aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW25vZGUub3BlcmFuZHNbMF0sIHRtcF0p
CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2Rl
LmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbdG1wLCBub2RlLm9wZXJhbmRzWzFdXSkKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBu
b2RlCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgcmFpc2UgIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgYXQgI3tub2Rl
LmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgbm9kZS5vcGVyYW5kcy5zaXplID09IDMKKyAgICAg
ICAgICAgICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1swXSA9PSBub2RlLm9wZXJhbmRzWzJdCisg
ICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdw
cikKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5v
ZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5kc1swXSwgdG1wXSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdp
biwgbm9kZS5vcGNvZGUsIFt0bXAsIG5vZGUub3BlcmFuZHNbMV0sIG5vZGUub3BlcmFuZHNbMl1d
KQorICAgICAgICAgICAgICAgICAgICBlbHNpZiBub2RlLm9wZXJhbmRzWzFdID09IG5vZGUub3Bl
cmFuZHNbMl0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcobm9kZS5jb2Rl
T3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtub2RlLm9wZXJhbmRzWzFdLCB0bXBd
KQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9k
ZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgW25vZGUub3BlcmFuZHNbMF0sIHRtcCwgbm9kZS5v
cGVyYW5kc1syXV0pCisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAg
ICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8
IG5vZGUKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0
IDw8IG5vZGUKKyAgICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3QKK2VuZAorCisjCisjIExl
YSBzdXBwb3J0LgorIworCitjbGFzcyBBZGRyZXNzCisgICAgZGVmIGFybVY3RW1pdExlYShkZXN0
aW5hdGlvbikKKyAgICAgICAgaWYgZGVzdGluYXRpb24gPT0gYmFzZQorICAgICAgICAgICAgJGFz
bS5wdXRzICJhZGRzICN7ZGVzdGluYXRpb24uYXJtVjdPcGVyYW5kfSwgXCMje29mZnNldC52YWx1
ZX0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICRhc20ucHV0cyAiYWRkcyAje2Rlc3RpbmF0
aW9uLmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09wZXJhbmR9LCBcIyN7b2Zmc2V0LnZhbHVl
fSIKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgICAgZGVm
IGFybVY3RW1pdExlYShkZXN0aW5hdGlvbikKKyAgICAgICAgcmFpc2UgIk1hbGZvcm1lZCBCYXNl
SW5kZXgsIG9mZnNldCBzaG91bGQgYmUgemVybyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxl
c3Mgb2Zmc2V0LnZhbHVlID09IDAKKyAgICAgICAgJGFzbS5wdXRzICJhZGQudyAje2Rlc3RpbmF0
aW9uLmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09wZXJhbmR9LCAje2luZGV4LmFybVY3T3Bl
cmFuZH0sIGxzbCBcIyN7c2NhbGVTaGlmdH0iCisgICAgZW5kCitlbmQKKworIyBGSVhNRTogd2Ug
Y291bGQgc3VwcG9ydCBBYnNvbHV0ZUFkZHJlc3MgZm9yIGxlYSwgYnV0IHdlIGRvbid0LgorCisj
CisjIEFjdHVhbCBsb3dlcmluZyBjb2RlIGZvbGxvd3MuCisjCisKK2NsYXNzIFNlcXVlbmNlCisg
ICAgZGVmIGxvd2VyQVJNdjcKKyAgICAgICAgbXlMaXN0ID0gQGxpc3QKKyAgICAgICAgCisgICAg
ICAgICMgVmVyaWZ5IHRoYXQgd2Ugd2lsbCBvbmx5IHNlZSBpbnN0cnVjdGlvbnMgYW5kIGxhYmVs
cy4KKyAgICAgICAgbXlMaXN0LmVhY2ggeworICAgICAgICAgICAgfCBub2RlIHwKKyAgICAgICAg
ICAgIHVubGVzcyBub2RlLmlzX2E/IEluc3RydWN0aW9uIG9yCisgICAgICAgICAgICAgICAgICAg
IG5vZGUuaXNfYT8gTGFiZWwgb3IKKyAgICAgICAgICAgICAgICAgICAgbm9kZS5pc19hPyBMb2Nh
bExhYmVsIG9yCisgICAgICAgICAgICAgICAgICAgIG5vZGUuaXNfYT8gU2tpcAorICAgICAgICAg
ICAgICAgIHJhaXNlICJVbmV4cGVjdGVkICN7bm9kZS5pbnNwZWN0fSBhdCAje25vZGUuY29kZU9y
aWdpbn0iIAorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG15
TGlzdCA9IGFybVY3TG93ZXJCcmFuY2hPcHMobXlMaXN0KQorICAgICAgICBteUxpc3QgPSBhcm1W
N0xvd2VyU2hpZnRPcHMobXlMaXN0KQorICAgICAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWFsZm9y
bWVkQWRkcmVzc2VzKG15TGlzdCkKKyAgICAgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1hbGZvcm1l
ZEFkZHJlc3Nlc0RvdWJsZShteUxpc3QpCisgICAgICAgIG15TGlzdCA9IGFybVY3TG93ZXJNaXNw
bGFjZWRJbW1lZGlhdGVzKG15TGlzdCkKKyAgICAgICAgbXlMaXN0ID0gYXJtVjdMb3dlck1hbGZv
cm1lZEltbWVkaWF0ZXMobXlMaXN0KQorICAgICAgICBteUxpc3QgPSBhcm1WN0xvd2VyTWlzcGxh
Y2VkQWRkcmVzc2VzKG15TGlzdCkKKyAgICAgICAgbXlMaXN0ID0gYXJtVjdMb3dlclJlZ2lzdGVy
UmV1c2UobXlMaXN0KQorICAgICAgICBteUxpc3QgPSBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFy
aWVzKG15TGlzdCwgOmdwciwgQVJNdjdfRVhUUkFfR1BSUykKKyAgICAgICAgbXlMaXN0ID0gYXNz
aWduUmVnaXN0ZXJzVG9UZW1wb3JhcmllcyhteUxpc3QsIDpmcHIsIEFSTXY3X0VYVFJBX0ZQUlMp
CisgICAgICAgIG15TGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgbm9kZSB8CisgICAgICAgICAg
ICBub2RlLmxvd2VyKCJBUk12NyIpCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitkZWYgYXJt
VjdPcGVyYW5kcyhvcGVyYW5kcykKKyAgICBvcGVyYW5kcy5tYXB7fHZ8IHYuYXJtVjdPcGVyYW5k
fS5qb2luKCIsICIpCitlbmQKKworZGVmIGFybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKQor
ICAgIGFybVY3T3BlcmFuZHMoW29wZXJhbmRzWy0xXV0gKyBvcGVyYW5kc1swLi4tMl0pCitlbmQK
KworZGVmIGVtaXRBcm1WN0NvbXBhY3Qob3Bjb2RlMiwgb3Bjb2RlMywgb3BlcmFuZHMpCisgICAg
aWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGUzfSAje2Fy
bVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgZWxzZQorICAgICAgICByYWlzZSB1
bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sx
XS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0
ZQorICAgICAgICAgICAgJGFzbS5wdXRzICIje29wY29kZTN9ICN7b3BlcmFuZHNbMV0uYXJtVjdP
cGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3
T3BlcmFuZH0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGUy
fSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIGVuZAorICAgIGVu
ZAorZW5kCisKK2RlZiBlbWl0QXJtVjcob3Bjb2RlLCBvcGVyYW5kcykKKyAgICBpZiBvcGVyYW5k
cy5zaXplID09IDMKKyAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3thcm1WN0ZsaXBwZWRP
cGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIGVsc2UKKyAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJh
bmRzLnNpemUgPT0gMgorICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzFd
LmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sw
XS5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorZW5kCisKK2RlZiBlbWl0QXJtVjdEb3VibGVCcmFu
Y2goYnJhbmNoT3Bjb2RlLCBvcGVyYW5kcykKKyAgICAkYXNtLnB1dHMgInZjbXBlLmY2NCAje2Fy
bVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAkYXNtLnB1dHMgInZtcnMgYXBzcl9u
emN2LCBmcHNjciIKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzWzJd
LmFzbUxhYmVsfSIKK2VuZAorCitkZWYgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgICB2YWx1
ZSA9IG9wZXJhbmRzWzBdCisgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgd2hlbiAyCisgICAg
ICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAgIHdoZW4gMworICAg
ICAgICBtYXNrID0gb3BlcmFuZHNbMV0KKyAgICBlbHNlCisgICAgICAgIHJhaXNlICJFeHBlY3Rl
ZCAyIG9yIDMgb3BlcmFuZHMgYnV0IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdp
blN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAgaWYgbWFzay5pc19hPyBJbW1lZGlhdGUgYW5k
IG1hc2sudmFsdWUgPT0gLTEKKyAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3t2YWx1ZS5hcm1WN09w
ZXJhbmR9LCAje3ZhbHVlLmFybVY3T3BlcmFuZH0iCisgICAgZWxzaWYgbWFzay5pc19hPyBJbW1l
ZGlhdGUKKyAgICAgICAgJGFzbS5wdXRzICJ0c3QudyAje3ZhbHVlLmFybVY3T3BlcmFuZH0sICN7
bWFzay5hcm1WN09wZXJhbmR9IgorICAgIGVsc2UKKyAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3t2
YWx1ZS5hcm1WN09wZXJhbmR9LCAje21hc2suYXJtVjdPcGVyYW5kfSIKKyAgICBlbmQKK2VuZAor
CitkZWYgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgY29kZSkKKyAgICAkYXNtLnB1dHMgIm1v
dnMgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCBcIzAiCisgICAgJGFzbS5wdXRzICJjbXAg
I3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0i
CisgICAgJGFzbS5wdXRzICJpdCAje2NvZGV9IgorICAgICRhc20ucHV0cyAibW92I3tjb2RlfSAj
e29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sIFwjMSIKK2VuZAorCitkZWYgZW1pdEFybVY3VGVz
dFNldChvcGVyYW5kcywgY29kZSkKKyAgICAkYXNtLnB1dHMgIm1vdnMgI3tvcGVyYW5kc1stMV0u
YXJtVjdPcGVyYW5kfSwgXCMwIgorICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgICAgJGFz
bS5wdXRzICJpdCAje2NvZGV9IgorICAgICRhc20ucHV0cyAibW92I3tjb2RlfSAje29wZXJhbmRz
Wy0xXS5hcm1WN09wZXJhbmR9LCBcIzEiCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24KKyAgICBk
ZWYgbG93ZXJBUk12NworICAgICAgICAkYXNtLmNvbW1lbnQgY29kZU9yaWdpblN0cmluZworICAg
ICAgICBjYXNlIG9wY29kZQorICAgICAgICB3aGVuICJhZGRpIiwgImFkZHAiLCAiYWRkaXMiCisg
ICAgICAgICAgICBpZiBvcGNvZGUgPT0gImFkZGlzIgorICAgICAgICAgICAgICAgIHN1ZmZpeCA9
ICJzIgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN1ZmZpeCA9ICIiCisgICAg
ICAgICAgICBlbmQKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFu
ZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJh
bmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3Bl
cmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBd
LnZhbHVlID09IDAgYW5kIHN1ZmZpeC5lbXB0eT8KKyAgICAgICAgICAgICAgICAgICAgdW5sZXNz
IG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAgICAgICAgICAgICAkYXNt
LnB1dHMgIm1vdiAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJt
VjdPcGVyYW5kfSIKKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZHMgI3tvcGVyYW5kc1syXS5hcm1W
N09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJt
VjdPcGVyYW5kfSIKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2lmIG9wZXJh
bmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAg
ICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAg
ICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAg
ICAgICAgICAgICAkYXNtLnB1dHMgImFkZHMgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5k
cyl9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLmlz
X2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgICAgICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhu
aWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgICAgICAgICAgICAgICAkYXNtLnB1dHMg
ImFkZHMgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICAgICAgICAg
ICAgICBlbmQKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICRhc20u
cHV0cyAiYWRkI3tzdWZmaXh9ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAg
ICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJhbmRpIiwg
ImFuZHAiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYWN0KCJhbmRzIiwgImFuZCIsIG9wZXJh
bmRzKQorICAgICAgICB3aGVuICJvcmkiLCAib3JwIgorICAgICAgICAgICAgZW1pdEFybVY3Q29t
cGFjdCgib3JycyIsICJvcnIiLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAib3JpcyIKKyAgICAg
ICAgICAgIGVtaXRBcm1WN0NvbXBhY3QoIm9ycnMiLCAib3JycyIsIG9wZXJhbmRzKQorICAgICAg
ICB3aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYWN0KCJlb3Jz
IiwgImVvciIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJsc2hpZnRpIgorICAgICAgICAgICAg
ZW1pdEFybVY3Q29tcGFjdCgibHNscyIsICJsc2xzIiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4g
InJzaGlmdGkiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYWN0KCJhc3JzIiwgImFzcnMiLCBv
cGVyYW5kcykKKyAgICAgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICAgICAgICBlbWl0QXJtVjdD
b21wYWN0KCJsc3JzIiwgImxzcnMiLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAibXVsaSIKKyAg
ICAgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMiBvciBvcGVyYW5kc1swXSA9PSBvcGVyYW5k
c1syXSBvciBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAgIGVtaXRB
cm1WNygibXVscyIsIG9wZXJhbmRzKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICRhc20ucHV0cyAibW92ICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sw
XS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgICAgICRhc20ucHV0cyAibXVscyAje29wZXJh
bmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVy
YW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gInN1
YmkiLCAic3VicCIsICJzdWJpcyIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhY3QoInN1YnMi
LCAic3VicyIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJuZWdpIgorICAgICAgICAgICAgJGFz
bS5wdXRzICJyc2JzICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5h
cm1WN09wZXJhbmR9LCBcIzAiCisgICAgICAgIHdoZW4gIm5vdGkiCisgICAgICAgICAgICAkYXNt
LnB1dHMgIm12bnMgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFy
bVY3T3BlcmFuZH0iCisgICAgICAgIHdoZW4gImxvYWRpIiwgImxvYWRwIgorICAgICAgICAgICAg
JGFzbS5wdXRzICJsZHIgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAg
ICB3aGVuICJzdG9yZWkiLCAic3RvcmVwIgorICAgICAgICAgICAgJGFzbS5wdXRzICJzdHIgI3th
cm1WN09wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIHdoZW4gImxvYWRiIgorICAgICAgICAg
ICAgJGFzbS5wdXRzICJsZHJiICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAg
ICAgICAgd2hlbiAibG9hZGJzIgorICAgICAgICAgICAgJGFzbS5wdXRzICJsZHJzYi53ICN7YXJt
VjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAgd2hlbiAic3RvcmViIgorICAg
ICAgICAgICAgJGFzbS5wdXRzICJzdHJiICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAg
ICAgICB3aGVuICJsb2FkaCIKKyAgICAgICAgICAgICRhc20ucHV0cyAibGRyaCAje2FybVY3Rmxp
cHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIHdoZW4gImxvYWRocyIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAibGRyc2gudyAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0i
CisgICAgICAgIHdoZW4gInN0b3JlaCIKKyAgICAgICAgICAgICRhc20ucHV0cyAic3RyaCAje2Fy
bVY3T3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAgd2hlbiAibG9hZGQiCisgICAgICAgICAg
ICAkYXNtLnB1dHMgInZsZHIuNjQgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9Igor
ICAgICAgICB3aGVuICJzdG9yZWQiCisgICAgICAgICAgICAkYXNtLnB1dHMgInZzdHIuNjQgI3th
cm1WN09wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIHdoZW4gImFkZGQiCisgICAgICAgICAg
ICBlbWl0QXJtVjcoInZhZGQuZjY0Iiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gImRpdmQiCisg
ICAgICAgICAgICBlbWl0QXJtVjcoInZkaXYuZjY0Iiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4g
InN1YmQiCisgICAgICAgICAgICBlbWl0QXJtVjcoInZzdWIuZjY0Iiwgb3BlcmFuZHMpCisgICAg
ICAgIHdoZW4gIm11bGQiCisgICAgICAgICAgICBlbWl0QXJtVjcoInZtdWwuZjY0Iiwgb3BlcmFu
ZHMpCisgICAgICAgIHdoZW4gInNxcnRkIgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2c3FydC5m
NjQgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICB3aGVuICJjaTJk
IgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMV0uYXJtVjdTaW5nbGV9
LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAgICAgICAkYXNtLnB1dHMgInZj
dnQuZjY0LnMzMiAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJt
VjdTaW5nbGV9IgorICAgICAgICB3aGVuICJiZGVxIgorICAgICAgICAgICAgZW1pdEFybVY3RG91
YmxlQnJhbmNoKCJiZXEiLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAiYmRuZXEiCisgICAgICAg
ICAgICAkYXNtLnB1dHMgInZjbXBlLmY2NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0p
fSIKKyAgICAgICAgICAgICRhc20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2NyIgorICAgICAg
ICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXEiKQorICAgICAgICAg
ICAgJGFzbS5wdXRzICJidnMgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9y
ZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFuZHNb
Ml0uYXNtTGFiZWx9IgorICAgICAgICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIkFSTXY3IikKKyAg
ICAgICAgd2hlbiAiYmRndCIKKyAgICAgICAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmd0
Iiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgICAgICAgIGVtaXRBcm1W
N0RvdWJsZUJyYW5jaCgiYmdlIiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gImJkbHQiCisgICAg
ICAgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJtaSIsIG9wZXJhbmRzKQorICAgICAgICB3
aGVuICJiZGx0ZXEiCisgICAgICAgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJscyIsIG9w
ZXJhbmRzKQorICAgICAgICB3aGVuICJiZGVxdW4iCisgICAgICAgICAgICAkYXNtLnB1dHMgInZj
bXBlLmY2NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAgICRh
c20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2NyIgorICAgICAgICAgICAgJGFzbS5wdXRzICJi
dnMgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImJlcSAj
e29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYmRuZXF1biIKKyAgICAgICAg
ICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYm5lIiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4g
ImJkZ3R1biIKKyAgICAgICAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmhpIiwgb3BlcmFu
ZHMpCisgICAgICAgIHdoZW4gImJkZ3RlcXVuIgorICAgICAgICAgICAgZW1pdEFybVY3RG91Ymxl
QnJhbmNoKCJicGwiLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAiYmRsdHVuIgorICAgICAgICAg
ICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJibHQiLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAi
YmRsdGVxdW4iCisgICAgICAgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJsZSIsIG9wZXJh
bmRzKQorICAgICAgICB3aGVuICJidGQyaSIKKyAgICAgICAgICAgICMgRklYTUU6IG1heSBiZSBh
IGdvb2QgaWRlYSB0byBqdXN0IGdldCByaWQgb2YgdGhpcyBpbnN0cnVjdGlvbiwgc2luY2UgdGhl
IGludGVycHJldGVyCisgICAgICAgICAgICAjIGN1cnJlbnRseSBkb2VzIG5vdCB1c2UgaXQuCisg
ICAgICAgICAgICByYWlzZSAiQVJNdjcgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIG9wY29kZSB5ZXQs
ICN7Y29kZU9yaWdpbn0iCisgICAgICAgIHdoZW4gInRkMmkiCisgICAgICAgICAgICAkYXNtLnB1
dHMgInZjdnQuczMyLmY2NCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSwgI3tvcGVy
YW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3Bl
cmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0i
CisgICAgICAgIHdoZW4gImJjZDJpIgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2Y3Z0LnMzMi5m
NjQgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0sICN7b3BlcmFuZHNbMF0uYXJtVjdP
cGVyYW5kfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzFdLmFybVY3
T3BlcmFuZH0sICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJtVjdTaW5nbGV9IgorICAgICAgICAgICAg
JGFzbS5wdXRzICJ2Y3Z0LmY2NC5zMzIgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN09wZXJhbmR9
LCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSIKKyAgICAgICAgICAgIGVtaXRBcm1W
N0RvdWJsZUJyYW5jaCgiYm5lIiwgW0FSTXY3X1NDUkFUQ0hfRlBSLCBvcGVyYW5kc1swXSwgb3Bl
cmFuZHNbMl1dKQorICAgICAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5kc1sxXS5hcm1W
N09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgICAgICAgICAkYXNt
LnB1dHMgImJlcSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAibW92ZHoi
CisgICAgICAgICAgICAjIEZJWE1FOiBlaXRoZXIgc3VwcG9ydCB0aGlzIG9yIHJlbW92ZSBpdC4K
KyAgICAgICAgICAgIHJhaXNlICJBUk12NyBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgb3Bjb2RlIHll
dCwgI3tjb2RlT3JpZ2lufSIKKyAgICAgICAgd2hlbiAicG9wIgorICAgICAgICAgICAgJGFzbS5w
dXRzICJwb3AgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICB3aGVuICJwdXNo
IgorICAgICAgICAgICAgJGFzbS5wdXRzICJwdXNoICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5k
fSIKKyAgICAgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6eGkycCIKKyAgICAgICAgICAgIGlm
IG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgICAgIGFybVY3TW92ZUlt
bWVkaWF0ZShvcGVyYW5kc1swXS52YWx1ZSwgb3BlcmFuZHNbMV0pCisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJtb3YgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhv
cGVyYW5kcyl9IgorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gIm5vcCIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAibm9wIgorICAgICAgICB3aGVuICJiaWVxIiwgImJwZXEiLCAiYmJlcSIK
KyAgICAgICAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAg
ICAgICAgICAgICAgICRhc20ucHV0cyAidHN0ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwg
I3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgZWxzaWYgSW1tZWRpYXRl
Lm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzFdCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJ0
c3QgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFu
ZH0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJjbXAgI3th
cm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAg
ICAgICRhc20ucHV0cyAiYmVxICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3aGVu
ICJiaW5lcSIsICJicG5lcSIsICJiYm5lcSIKKyAgICAgICAgICAgIGlmIEltbWVkaWF0ZS5uZXco
bmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAidHN0ICN7
b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9Igor
ICAgICAgICAgICAgZWxzaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzFdCisg
ICAgICAgICAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9
LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0i
CisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICRhc20ucHV0cyAiYm5lICN7b3BlcmFuZHNb
Ml0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJiaWEiLCAiYnBhIiwgImJiYSIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAg
ICAgICAgICAgJGFzbS5wdXRzICJiaGkgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAg
IHdoZW4gImJpYWVxIiwgImJwYWVxIiwgImJiYWVxIgorICAgICAgICAgICAgJGFzbS5wdXRzICJj
bXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICAgICAkYXNtLnB1
dHMgImJocyAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYmliIiwgImJw
YiIsICJiYmIiCisgICAgICAgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3Bl
cmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYmxvICN7b3BlcmFuZHNbMl0u
YXNtTGFiZWx9IgorICAgICAgICB3aGVuICJiaWJlcSIsICJicGJlcSIsICJiYmJlcSIKKyAgICAg
ICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9Igor
ICAgICAgICAgICAgJGFzbS5wdXRzICJibHMgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAg
ICAgIHdoZW4gImJpZ3QiLCAiYnBndCIsICJiYmd0IgorICAgICAgICAgICAgJGFzbS5wdXRzICJj
bXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICAgICAkYXNtLnB1
dHMgImJndCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYmlndGVxIiwg
ImJwZ3RlcSIsICJiYmd0ZXEiCisgICAgICAgICAgICAkYXNtLnB1dHMgImNtcCAje2FybVY3T3Bl
cmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYmdlICN7b3Bl
cmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJiaWx0IiwgImJwbHQiLCAiYmJsdCIK
KyAgICAgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhvcGVyYW5kc1swLi4x
XSl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJibHQgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0i
CisgICAgICAgIHdoZW4gImJpbHRlcSIsICJicGx0ZXEiLCAiYmJsdGVxIgorICAgICAgICAgICAg
JGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAg
ICAgICAkYXNtLnB1dHMgImJsZSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hl
biAiYnRpeiIsICJidHB6IiwgImJ0YnoiCisgICAgICAgICAgICBlbWl0QXJtVjdUZXN0KG9wZXJh
bmRzKQorICAgICAgICAgICAgJGFzbS5wdXRzICJiZXEgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9
IgorICAgICAgICB3aGVuICJidGlueiIsICJidHBueiIsICJidGJueiIKKyAgICAgICAgICAgIGVt
aXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgICAgICAgICAgICAkYXNtLnB1dHMgImJuZSAje29wZXJh
bmRzWy0xXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImJ0aW8iLCAiYnRwbyIsICJidGJvIgor
ICAgICAgICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykKKyAgICAgICAgICAgICRhc20ucHV0
cyAiYnZzICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYnRpcyIsICJi
dHBzIiwgImJ0YnMiCisgICAgICAgICAgICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICAgICAg
ICAgICAgJGFzbS5wdXRzICJibWkgI3tvcGVyYW5kc1stMV0uYXNtTGFiZWx9IgorICAgICAgICB3
aGVuICJqbXAiCisgICAgICAgICAgICBpZiBvcGVyYW5kc1swXS5sYWJlbD8KKyAgICAgICAgICAg
ICAgICAkYXNtLnB1dHMgImIgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJtb3YgcGMsICN7b3BlcmFuZHNbMF0uYXJt
VjdPcGVyYW5kfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJjYWxsIgorICAgICAg
ICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJi
bHggI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgJGFzbS5wdXRzICJibHggI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAg
ICAgICAgZW5kCisgICAgICAgIHdoZW4gImJyZWFrIgorICAgICAgICAgICAgJGFzbS5wdXRzICJi
a3B0IgorICAgICAgICB3aGVuICJyZXQiCisgICAgICAgICAgICAkYXNtLnB1dHMgImJ4IGxyIgor
ICAgICAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYXJl
KG9wZXJhbmRzLCAiZXEiKQorICAgICAgICB3aGVuICJjaW5lcSIsICJjcG5lcSIKKyAgICAgICAg
ICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJuZSIpCisgICAgICAgIHdoZW4gImNpYSIs
ICJjcGEiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiaGkiKQorICAg
ICAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhcmUo
b3BlcmFuZHMsICJocyIpCisgICAgICAgIHdoZW4gImNpYiIsICJjcGIiCisgICAgICAgICAgICBl
bWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibG8iKQorICAgICAgICB3aGVuICJjaWJlcSIsICJj
cGJlcSIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJscyIpCisgICAg
ICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3Bl
cmFuZHMsICJndCIpCisgICAgICAgIHdoZW4gImNpZ3RlcSIsICJjcGd0ZXEiCisgICAgICAgICAg
ICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiZ2UiKQorICAgICAgICB3aGVuICJjaWx0Iiwg
ImNwbHQiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibHQiKQorICAg
ICAgICB3aGVuICJjaWx0ZXEiLCAiY3BsdGVxIgorICAgICAgICAgICAgZW1pdEFybVY3Q29tcGFy
ZShvcGVyYW5kcywgImxlIikKKyAgICAgICAgd2hlbiAidGlvIiwgInRibyIKKyAgICAgICAgICAg
IGVtaXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMsICJ2cyIpCisgICAgICAgIHdoZW4gInRpcyIsICJ0
YnMiCisgICAgICAgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9wZXJhbmRzLCAibWkiKQorICAgICAg
ICB3aGVuICJ0aXoiLCAidGJ6IgorICAgICAgICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5k
cywgImVxIikKKyAgICAgICAgd2hlbiAidGlueiIsICJ0Ym56IgorICAgICAgICAgICAgZW1pdEFy
bVY3VGVzdFNldChvcGVyYW5kcywgIm5lIikKKyAgICAgICAgd2hlbiAicGVlayIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAibGRyICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgW3NwLCBcIyN7
b3BlcmFuZHNbMF0udmFsdWUgKiA0fV0iCisgICAgICAgIHdoZW4gInBva2UiCisgICAgICAgICAg
ICAkYXNtLnB1dHMgInN0ciAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sIFtzcCwgXCMje29w
ZXJhbmRzWzBdLnZhbHVlICogNH1dIgorICAgICAgICB3aGVuICJmaWkyZCIKKyAgICAgICAgICAg
ICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNb
MF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgICB3
aGVuICJmZDJpaSIKKyAgICAgICAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzFdLmFy
bVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1swXS5h
cm1WN09wZXJhbmR9IgorICAgICAgICB3aGVuICJibyIKKyAgICAgICAgICAgICRhc20ucHV0cyAi
YnZzICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJicyIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAiYm1pICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgICB3aGVu
ICJieiIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYmVxICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9
IgorICAgICAgICB3aGVuICJibnoiCisgICAgICAgICAgICAkYXNtLnB1dHMgImJuZSAje29wZXJh
bmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAibGVhaSIsICJsZWFwIgorICAgICAgICAg
ICAgb3BlcmFuZHNbMF0uYXJtVjdFbWl0TGVhKG9wZXJhbmRzWzFdKQorICAgICAgICB3aGVuICJz
bXVsbGkiCisgICAgICAgICAgICByYWlzZSAiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyB0byBz
bXVsbCBpbiAje3NlbGYuaW5zcGVjdH0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG9w
ZXJhbmRzLmxlbmd0aCA9PSA0CisgICAgICAgICAgICAkYXNtLnB1dHMgInNtdWxsICN7b3BlcmFu
ZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1szXS5hcm1WN09wZXJhbmR9LCAje29wZXJh
bmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIlVuaGFuZGxlZCBvcGNvZGUgI3tvcGNvZGV9IGF0
ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5yYgo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20ucmIJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTcyIEBACisjIS91c3IvYmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWly
ZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNldHMiCity
ZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZWxmX2hhc2giCityZXF1aXJlICJzZXR0aW5ncyIK
K3JlcXVpcmUgInRyYW5zZm9ybSIKKworY2xhc3MgQXNzZW1ibGVyCisgICAgZGVmIGluaXRpYWxp
emUob3V0cCkKKyAgICAgICAgQG91dHAgPSBvdXRwCisgICAgICAgIEBzdGF0ZSA9IDpjcHAKKyAg
ICAgICAgQGNvbW1lbnRTdGF0ZSA9IDpub25lCisgICAgICAgIEBjb21tZW50ID0gbmlsCisgICAg
ZW5kCisgICAgCisgICAgZGVmIGVudGVyQXNtCisgICAgICAgIEBvdXRwLnB1dHMgImFzbSAoIgor
ICAgICAgICBAc3RhdGUgPSA6YXNtCisgICAgZW5kCisgICAgCisgICAgZGVmIGxlYXZlQXNtCisg
ICAgICAgIHB1dHNMYXN0Q29tbWVudAorICAgICAgICBAb3V0cC5wdXRzICIpOyIKKyAgICAgICAg
QHN0YXRlID0gOmNwcAorICAgIGVuZAorICAgIAorICAgIGRlZiBpbkFzbQorICAgICAgICBlbnRl
ckFzbQorICAgICAgICB5aWVsZAorICAgICAgICBsZWF2ZUFzbQorICAgIGVuZAorICAgIAorICAg
IGRlZiBsYXN0Q29tbWVudAorICAgICAgICBpZiBAY29tbWVudAorICAgICAgICAgICAgcmVzdWx0
ID0gIi8vICN7QGNvbW1lbnR9IgorICAgICAgICBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSAi
IgorICAgICAgICBlbmQKKyAgICAgICAgQGNvbW1lbnRTdGF0ZSA9IDpub25lCisgICAgICAgIEBj
b21tZW50ID0gbmlsCisgICAgICAgIHJlc3VsdAorICAgIGVuZAorICAgIAorICAgIGRlZiBwdXRz
TGFzdENvbW1lbnQKKyAgICAgICAgY29tbWVudCA9IGxhc3RDb21tZW50CisgICAgICAgIHVubGVz
cyBjb21tZW50LmVtcHR5PworICAgICAgICAgICAgQG91dHAucHV0cyBjb21tZW50CisgICAgICAg
IGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBwdXRzKCpsaW5lKQorICAgICAgICByYWlzZSB1
bmxlc3MgQHN0YXRlID09IDphc20KKyAgICAgICAgQG91dHAucHV0cygiXCJcXHQiICsgbGluZS5q
b2luKCcnKSArICJcXG5cIiAje2xhc3RDb21tZW50fSIpCisgICAgZW5kCisgICAgCisgICAgZGVm
IHByaW50KGxpbmUpCisgICAgICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgICAg
ICBAb3V0cC5wcmludCgiXCIiICsgbGluZSArICJcIiIpCisgICAgZW5kCisgICAgCisgICAgZGVm
IHB1dHNMYWJlbChsYWJlbE5hbWUpCisgICAgICAgIHJhaXNlIHVubGVzcyBAc3RhdGUgPT0gOmFz
bQorICAgICAgICBAb3V0cC5wdXRzKCJPRkZMSU5FX0FTTV9HTE9CQUxfTEFCRUwoI3tsYWJlbE5h
bWV9KSAje2xhc3RDb21tZW50fSIpCisgICAgZW5kCisgICAgCisgICAgZGVmIHB1dHNMb2NhbExh
YmVsKGxhYmVsTmFtZSkKKyAgICAgICAgcmFpc2UgdW5sZXNzIEBzdGF0ZSA9PSA6YXNtCisgICAg
ICAgIEBvdXRwLnB1dHMoIkxPQ0FMX0xBQkVMX1NUUklORygje2xhYmVsTmFtZX0pIFwiOlxcblwi
ICN7bGFzdENvbW1lbnR9IikKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc2VsZi5sYWJlbFJlZmVy
ZW5jZShsYWJlbE5hbWUpCisgICAgICAgICJcIiBTWU1CT0xfU1RSSU5HKCN7bGFiZWxOYW1lfSkg
XCIiCisgICAgZW5kCisgICAgCisgICAgZGVmIHNlbGYubG9jYWxMYWJlbFJlZmVyZW5jZShsYWJl
bE5hbWUpCisgICAgICAgICJcIiBMT0NBTF9MQUJFTF9TVFJJTkcoI3tsYWJlbE5hbWV9KSBcIiIK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgY29tbWVudCh0ZXh0KQorICAgICAgICBjYXNlIEBjb21t
ZW50U3RhdGUKKyAgICAgICAgd2hlbiA6bm9uZQorICAgICAgICAgICAgQGNvbW1lbnQgPSB0ZXh0
CisgICAgICAgICAgICBAY29tbWVudFN0YXRlID0gOm9uZQorICAgICAgICB3aGVuIDpvbmUKKyAg
ICAgICAgICAgIEBvdXRwLnB1dHMgIi8vICN7QGNvbW1lbnR9IgorICAgICAgICAgICAgQG91dHAu
cHV0cyAiLy8gI3t0ZXh0fSIKKyAgICAgICAgICAgIEBjb21tZW50ID0gbmlsCisgICAgICAgICAg
ICBAY29tbWVudFN0YXRlID0gOm1hbnkKKyAgICAgICAgd2hlbiA6bWFueQorICAgICAgICAgICAg
QG91dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UK
KyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworYXNtRmlsZSA9IEFSR1Yuc2hpZnQKK29mZnNl
dHNGaWxlID0gQVJHVi5zaGlmdAorb3V0cHV0RmxubSA9IEFSR1Yuc2hpZnQKKworJHN0ZGVyci5w
dXRzICJvZmZsaW5lYXNtOiBQYXJzaW5nICN7YXNtRmlsZX0gYW5kICN7b2Zmc2V0c0ZpbGV9IGFu
ZCBjcmVhdGluZyBhc3NlbWJseSBmaWxlICN7b3V0cHV0RmxubX0uIgorCitvZmZzZXRzTGlzdCwg
Y29uZmlnSW5kZXggPSBvZmZzZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KG9mZnNldHNGaWxlKQor
aW5wdXREYXRhID0gSU86OnJlYWQoYXNtRmlsZSkKKworaW5wdXRIYXNoID0KKyAgICAiLy8gb2Zm
bGluZWFzbSBpbnB1dCBoYXNoOiAiICsgRGlnZXN0OjpTSEExLmhleGRpZ2VzdChpbnB1dERhdGEp
ICsKKyAgICAiICIgKyBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KChvZmZzZXRzTGlzdCArIFtjb25m
aWdJbmRleF0pLmpvaW4oJyAnKSkgKworICAgICIgIiArIHNlbGZIYXNoCisKK2lmIEZpbGVUZXN0
LmV4aXN0PyBvdXRwdXRGbG5tCisgICAgRmlsZS5vcGVuKG91dHB1dEZsbm0sICJyIikgeworICAg
ICAgICB8IGlucCB8CisgICAgICAgIGZpcnN0TGluZSA9IGlucC5nZXRzCisgICAgICAgIGlmIGZp
cnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09IGlucHV0SGFzaAorICAgICAgICAgICAgJHN0
ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBOb3RoaW5nIGNoYW5nZWQuIgorICAgICAgICAgICAgZXhp
dCAwCisgICAgICAgIGVuZAorICAgIH0KK2VuZAorCitGaWxlLm9wZW4ob3V0cHV0RmxubSwgInci
KSB7CisgICAgfCBvdXRwIHwKKyAgICAkb3V0cHV0ID0gb3V0cAorICAgICRvdXRwdXQucHV0cyBp
bnB1dEhhc2gKKyAgICAKKyAgICAkYXNtID0gQXNzZW1ibGVyLm5ldygkb3V0cHV0KQorICAgIAor
ICAgIGFzdCA9IHBhcnNlKGxleChpbnB1dERhdGEpKQorICAgIAorICAgIGZvclNldHRpbmdzKGNv
bXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpW2NvbmZpZ0luZGV4XSwgYXN0KSB7CisgICAg
ICAgIHwgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAorICAgICAgICBh
c3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgICAgICAgIGxvd0xldmVsQVNU
ID0gbG93TGV2ZWxBU1QucmVzb2x2ZSgqYnVpbGRPZmZzZXRzTWFwKGxvd0xldmVsQVNULCBvZmZz
ZXRzTGlzdCkpCisgICAgICAgIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGlu
Z3MsIGxvd0xldmVsQVNULCBiYWNrZW5kKSB7CisgICAgICAgICAgICAkYXNtLmluQXNtIHsKKyAg
ICAgICAgICAgICAgICBsb3dMZXZlbEFTVC5sb3dlcihiYWNrZW5kKQorICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorfQorCiskc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IEFzc2VtYmx5
IGZpbGUgI3tvdXRwdXRGbG5tfSBzdWNjZXNzZnVsbHkgZ2VuZXJhdGVkLiIKKwpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzdC5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMDM5IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisjCisjIEJh
c2UgdXRpbGl0eSB0eXBlcyBmb3IgdGhlIEFTVC4KKyMKKworIyBWYWxpZCBtZXRob2RzIGZvciBO
b2RlOgorIworIyBub2RlLmNoaWxkcmVuIC0+IFJldHVybnMgYW4gYXJyYXkgb2YgaW1tZWRpYXRl
IGNoaWxkcmVuLgorIworIyBub2RlLmRlc2NlbmRlbnRzIC0+IFJldHVybnMgYW4gYXJyYXkgb2Yg
YWxsIHN0cmljdCBkZXNjZW5kYW50cyAoY2hpbGRyZW4KKyMgICAgIGFuZCBjaGlsZHJlbiBvZiBj
aGlsZHJlbiwgdHJhbnNpdGl2ZWx5KS4KKyMKKyMgbm9kZS5mbGF0dGVuIC0+IFJldHVybnMgYW4g
YXJyYXkgY29udGFpbmluZyB0aGUgc3RyaWN0IGRlc2NlbmRhbnRzIGFuZAorIyAgICAgdGhlIG5v
ZGUgaXRzZWxmLgorIworIyBub2RlLmZpbHRlcih0eXBlKSAtPiBSZXR1cm5zIGFuIGFycmF5IGNv
bnRhaW5pbmcgdGhvc2UgZWxlbWVudHMgaW4KKyMgICAgIG5vZGUuZmxhdHRlbiB0aGF0IGFyZSBv
ZiB0aGUgZ2l2ZW4gdHlwZSAoaXNfYT8gdHlwZSByZXR1cm5zIHRydWUpLgorIworIyBub2RlLm1h
cENoaWxkcmVue3x2fCAuLi59IC0+IFJldHVybnMgYSBuZXcgbm9kZSB3aXRoIGFsbCBjaGlsZHJl
bgorIyAgICAgcmVwbGFjZWQgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBibG9jay4KKyMKKyMgRXhh
bXBsZXM6CisjCisjIG5vZGUuZmlsdGVyKFNldHRpbmcpLnVuaXEgLT4gUmV0dXJucyBhbGwgb2Yg
dGhlIHNldHRpbmdzIHRoYXQgdGhlIEFTVCdzCisjICAgICBJZlRoZW5FbHNlIGJsb2NrcyBkZXBl
bmQgb24uCisjCisjIG5vZGUuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcSAtPiBSZXR1cm5zIGFs
bCBvZiB0aGUgc3RydWN0dXJlIG9mZnNldHMKKyMgICAgIHRoYXQgdGhlIEFTVCBkZXBlbmRzIG9u
LgorCitjbGFzcyBOb2RlCisgICAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4KKyAgICAKKyAgICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgICAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmln
aW4KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY29kZU9yaWdpblN0cmluZworICAgICAgICAibGlu
ZSBudW1iZXIgI3tAY29kZU9yaWdpbn0iCisgICAgZW5kCisgICAgCisgICAgZGVmIGRlc2NlbmRh
bnRzCisgICAgICAgIGNoaWxkcmVuLmNvbGxlY3R7fHZ8IHYuZmxhdHRlbn0uZmxhdHRlbgorICAg
IGVuZAorICAgIAorICAgIGRlZiBmbGF0dGVuCisgICAgICAgIFtzZWxmXSArIGRlc2NlbmRhbnRz
CisgICAgZW5kCisgICAgCisgICAgZGVmIGZpbHRlcih0eXBlKQorICAgICAgICBmbGF0dGVuLnNl
bGVjdHt8dnwgdi5pc19hPyB0eXBlfQorICAgIGVuZAorZW5kCisKK2NsYXNzIE5vQ2hpbGRyZW4g
PCBOb2RlCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICAgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRyZW4KKyAgICAgICAgW10KKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hpbGRyZW4KKyAgICAgICAgc2VsZgorICAgIGVuZAor
ZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldEtleQorICAgIGF0dHJfcmVhZGVyIDpzdHJ1Y3QsIDpm
aWVsZAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKHN0cnVjdCwgZmllbGQpCisgICAgICAgIEBz
dHJ1Y3QgPSBzdHJ1Y3QKKyAgICAgICAgQGZpZWxkID0gZmllbGQKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgaGFzaAorICAgICAgICBAc3RydWN0Lmhhc2ggKyBAZmllbGQuaGFzaCAqIDMKKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgZXFsPyhvdGhlcikKKyAgICAgICAgQHN0cnVjdCA9PSBvdGhlci5z
dHJ1Y3QgYW5kIEBmaWVsZCA9PSBvdGhlci5maWVsZAorICAgIGVuZAorZW5kCisKKyMKKyMgQVNU
IG5vZGVzLgorIworCitjbGFzcyBTdHJ1Y3RPZmZzZXQgPCBOb0NoaWxkcmVuCisgICAgYXR0cl9y
ZWFkZXIgOnN0cnVjdCwgOmZpZWxkCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgc3RydWN0LCBmaWVsZCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQHN0
cnVjdCA9IHN0cnVjdAorICAgICAgICBAZmllbGQgPSBmaWVsZAorICAgIGVuZAorICAgIAorICAg
IEBAbWFwcGluZyA9IHt9CisgICAgCisgICAgZGVmIHNlbGYuZm9yRmllbGQoY29kZU9yaWdpbiwg
c3RydWN0LCBmaWVsZCkKKyAgICAgICAga2V5ID0gU3RydWN0T2Zmc2V0S2V5Lm5ldyhzdHJ1Y3Qs
IGZpZWxkKQorICAgICAgICAKKyAgICAgICAgdW5sZXNzIEBAbWFwcGluZ1trZXldCisgICAgICAg
ICAgICBAQG1hcHBpbmdba2V5XSA9IFN0cnVjdE9mZnNldC5uZXcoY29kZU9yaWdpbiwgc3RydWN0
LCBmaWVsZCkKKyAgICAgICAgZW5kCisgICAgICAgIEBAbWFwcGluZ1trZXldCisgICAgZW5kCisg
ICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIiN7c3RydWN0fTo6I3tmaWVsZH0iCisgICAgZW5k
CisgICAgCisgICAgZGVmIDw9PihvdGhlcikKKyAgICAgICAgaWYgQHN0cnVjdCAhPSBvdGhlci5z
dHJ1Y3QKKyAgICAgICAgICAgIHJldHVybiBAc3RydWN0IDw9PiBvdGhlci5zdHJ1Y3QKKyAgICAg
ICAgZW5kCisgICAgICAgIEBmaWVsZCA8PT4gb3RoZXIuZmllbGQKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFi
ZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAg
ICAgICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAgICAgICAgZmFs
c2UKKyAgICBlbmQKK2VuZAorCitjbGFzcyBTaXplb2YgPCBOb0NoaWxkcmVuCisgICAgYXR0cl9y
ZWFkZXIgOnN0cnVjdAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIHN0cnVj
dCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQHN0cnVjdCA9IHN0cnVjdAor
ICAgIGVuZAorICAgIAorICAgIEBAbWFwcGluZyA9IHt9CisgICAgCisgICAgZGVmIHNlbGYuZm9y
TmFtZShjb2RlT3JpZ2luLCBzdHJ1Y3QpCisgICAgICAgIHVubGVzcyBAQG1hcHBpbmdbc3RydWN0
XQorICAgICAgICAgICAgQEBtYXBwaW5nW3N0cnVjdF0gPSBTaXplb2YubmV3KGNvZGVPcmlnaW4s
IHN0cnVjdCkKKyAgICAgICAgZW5kCisgICAgICAgIEBAbWFwcGluZ1tzdHJ1Y3RdCisgICAgZW5k
CisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgInNpemVvZiAje0BzdHJ1Y3R9IgorICAgIGVu
ZAorICAgIAorICAgIGRlZiA8PT4ob3RoZXIpCisgICAgICAgIEBzdHJ1Y3QgPD0+IG90aGVyLnN0
cnVjdAorICAgIGVuZAorICAgIAorICAgIGRlZiBhZGRyZXNzPworICAgICAgICBmYWxzZQorICAg
IGVuZAorICAgIAorICAgIGRlZiBsYWJlbD8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgaW1tZWRpYXRlPworICAgICAgICB0cnVlCisgICAgZW5kCisgICAgCisgICAgZGVm
IHJlZ2lzdGVyPworICAgICAgICBmYWxzZQorICAgIGVuZAorZW5kCisKK2NsYXNzIEltbWVkaWF0
ZSA8IE5vQ2hpbGRyZW4KKyAgICBhdHRyX3JlYWRlciA6dmFsdWUKKyAgICAKKyAgICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCB2YWx1ZSkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICAgICAgQHZhbHVlID0gdmFsdWUKKyAgICAgICAgcmFpc2UgIkJhZCBpbW1lZGlhdGUgdmFsdWUg
I3t2YWx1ZS5pbnNwZWN0fSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgdmFsdWUuaXNf
YT8gSW50ZWdlcgorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICIje3ZhbHVl
fSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgPT0ob3RoZXIpCisgICAgICAgIG90aGVyLmlzX2E/
IEltbWVkaWF0ZSBhbmQgb3RoZXIudmFsdWUgPT0gQHZhbHVlCisgICAgZW5kCisgICAgCisgICAg
ZGVmIGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGxhYmVs
PworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBpbW1lZGlhdGU/CisgICAg
ICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/CisgICAgICAgIGZhbHNl
CisgICAgZW5kCitlbmQKKworY2xhc3MgQWRkSW1tZWRpYXRlcyA8IE5vZGUKKyAgICBhdHRyX3Jl
YWRlciA6bGVmdCwgOnJpZ2h0CisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
bGVmdCwgcmlnaHQpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBsZWZ0ID0g
bGVmdAorICAgICAgICBAcmlnaHQgPSByaWdodAorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGls
ZHJlbgorICAgICAgICBbQGxlZnQsIEByaWdodF0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFw
Q2hpbGRyZW4KKyAgICAgICAgQWRkSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBs
ZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAg
ICAgIigje2xlZnQuZHVtcH0gKyAje3JpZ2h0LmR1bXB9KSIKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/
CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAg
ICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAgICAgICAgZmFsc2UK
KyAgICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzIDwgTm9kZQorICAgIGF0dHJfcmVh
ZGVyIDpsZWZ0LCA6cmlnaHQKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBs
ZWZ0LCByaWdodCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQGxlZnQgPSBs
ZWZ0CisgICAgICAgIEByaWdodCA9IHJpZ2h0CisgICAgZW5kCisgICAgCisgICAgZGVmIGNoaWxk
cmVuCisgICAgICAgIFtAbGVmdCwgQHJpZ2h0XQorICAgIGVuZAorICAgIAorICAgIGRlZiBtYXBD
aGlsZHJlbgorICAgICAgICBTdWJJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxl
ZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAg
ICAiKCN7bGVmdC5kdW1wfSAtICN7cmlnaHQuZHVtcH0pIgorICAgIGVuZAorICAgIAorICAgIGRl
ZiBhZGRyZXNzPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBsYWJlbD8K
KyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaW1tZWRpYXRlPworICAgICAg
ICB0cnVlCisgICAgZW5kCisgICAgCisgICAgZGVmIHJlZ2lzdGVyPworICAgICAgICBmYWxzZQor
ICAgIGVuZAorZW5kCisKK2NsYXNzIE11bEltbWVkaWF0ZXMgPCBOb2RlCisgICAgYXR0cl9yZWFk
ZXIgOmxlZnQsIDpyaWdodAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxl
ZnQsIHJpZ2h0KQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAbGVmdCA9IGxl
ZnQKKyAgICAgICAgQHJpZ2h0ID0gcmlnaHQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRy
ZW4KKyAgICAgICAgW0BsZWZ0LCBAcmlnaHRdCisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENo
aWxkcmVuCisgICAgICAgIE11bEltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVm
dCksICh5aWVsZCBAcmlnaHQpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAg
ICIoI3tsZWZ0LmR1bXB9ICogI3tyaWdodC5kdW1wfSkiCisgICAgZW5kCisgICAgCisgICAgZGVm
IGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGxhYmVsPwor
ICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBpbW1lZGlhdGU/CisgICAgICAg
IHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/CisgICAgICAgIGZhbHNlCisg
ICAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlIDwgTm9kZQorICAgIGF0dHJfcmVhZGVy
IDpjaGlsZAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAg
ICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAY2hpbGQgPSBjaGlsZAorICAgIGVuZAor
ICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBbQGNoaWxkXQorICAgIGVuZAorICAgIAor
ICAgIGRlZiBtYXBDaGlsZHJlbgorICAgICAgICBOZWdJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4s
ICh5aWVsZCBAY2hpbGQpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICIo
LSN7QGNoaWxkLmR1bXB9KSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAg
ICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisg
ICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAgdHJ1ZQorICAgIGVuZAor
ICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBSZWdpc3RlcklEIDwgTm9DaGlsZHJlbgorICAgIGF0dHJfcmVhZGVyIDpuYW1lCisgICAg
CisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICAgICAgQG5hbWUgPSBuYW1lCisgICAgZW5kCisgICAgCisgICAgQEBtYXBw
aW5nID0ge30KKyAgICAKKyAgICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisg
ICAgICAgIHVubGVzcyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgICAgICAgIEBAbWFwcGluZ1tuYW1l
XSA9IFJlZ2lzdGVySUQubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVuZAorICAgICAg
ICBAQG1hcHBpbmdbbmFtZV0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICBu
YW1lCisgICAgZW5kCisgICAgCisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAg
ZW5kCisgICAgCisgICAgZGVmIGxhYmVsPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAor
ICAgIGRlZiBpbW1lZGlhdGU/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVm
IHJlZ2lzdGVyPworICAgICAgICB0cnVlCisgICAgZW5kCitlbmQKKworY2xhc3MgRlBSZWdpc3Rl
cklEIDwgTm9DaGlsZHJlbgorICAgIGF0dHJfcmVhZGVyIDpuYW1lCisgICAgCisgICAgZGVmIGlu
aXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICAgICAgQG5hbWUgPSBuYW1lCisgICAgZW5kCisgICAgCisgICAgQEBtYXBwaW5nID0ge30KKyAg
ICAKKyAgICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIHVubGVz
cyBAQG1hcHBpbmdbbmFtZV0KKyAgICAgICAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IEZQUmVnaXN0
ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBAbWFwcGlu
Z1tuYW1lXQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgIG5hbWUKKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGlt
bWVkaWF0ZT8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/
CisgICAgICAgIHRydWUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBWYXJpYWJsZSA8IE5vQ2hpbGRy
ZW4KKyAgICBhdHRyX3JlYWRlciA6bmFtZQorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4sIG5hbWUpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBuYW1lID0g
bmFtZQorICAgIGVuZAorICAgIAorICAgIEBAbWFwcGluZyA9IHt9CisgICAgCisgICAgZGVmIHNl
bGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICB1bmxlc3MgQEBtYXBwaW5nW25h
bWVdCisgICAgICAgICAgICBAQG1hcHBpbmdbbmFtZV0gPSBWYXJpYWJsZS5uZXcoY29kZU9yaWdp
biwgbmFtZSkKKyAgICAgICAgZW5kCisgICAgICAgIEBAbWFwcGluZ1tuYW1lXQorICAgIGVuZAor
ICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgIG5hbWUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBB
ZGRyZXNzIDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpiYXNlLCA6b2Zmc2V0CisgICAgCisgICAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgYmFzZSwgb2Zmc2V0KQorICAgICAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgICAgICBAYmFzZSA9IGJhc2UKKyAgICAgICAgQG9mZnNldCA9IG9mZnNl
dAorICAgICAgICByYWlzZSAiQmFkIGJhc2UgZm9yIGFkZHJlc3MgI3tiYXNlLmluc3BlY3R9IGF0
ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBiYXNlLmlzX2E/IFZhcmlhYmxlIG9yIGJhc2Uu
cmVnaXN0ZXI/CisgICAgICAgIHJhaXNlICJCYWQgb2Zmc2V0IGZvciBhZGRyZXNzICN7b2Zmc2V0
Lmluc3BlY3R9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBvZmZzZXQuaXNfYT8gVmFy
aWFibGUgb3Igb2Zmc2V0LmltbWVkaWF0ZT8KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRy
ZW4KKyAgICAgICAgW0BiYXNlLCBAb2Zmc2V0XQorICAgIGVuZAorICAgIAorICAgIGRlZiBtYXBD
aGlsZHJlbgorICAgICAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAo
eWllbGQgQG9mZnNldCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIiN7
b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfV0iCisgICAgZW5kCisgICAgCisgICAgZGVmIGFkZHJl
c3M/CisgICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAg
IGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAgZmFsc2UK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/CisgICAgICAgIGZhbHNlCisgICAgZW5k
CitlbmQKKworY2xhc3MgQmFzZUluZGV4IDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpiYXNlLCA6
aW5kZXgsIDpzY2FsZSwgOm9mZnNldAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmln
aW4sIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KQorICAgICAgICBzdXBlcihjb2RlT3JpZ2lu
KQorICAgICAgICBAYmFzZSA9IGJhc2UKKyAgICAgICAgQGluZGV4ID0gaW5kZXgKKyAgICAgICAg
QHNjYWxlID0gc2NhbGUKKyAgICAgICAgcmFpc2UgdW5sZXNzIFsxLCAyLCA0LCA4XS5tZW1iZXI/
IEBzY2FsZQorICAgICAgICBAb2Zmc2V0ID0gb2Zmc2V0CisgICAgZW5kCisgICAgCisgICAgZGVm
IHNjYWxlU2hpZnQKKyAgICAgICAgY2FzZSBzY2FsZQorICAgICAgICB3aGVuIDEKKyAgICAgICAg
ICAgIDAKKyAgICAgICAgd2hlbiAyCisgICAgICAgICAgICAxCisgICAgICAgIHdoZW4gNAorICAg
ICAgICAgICAgMgorICAgICAgICB3aGVuIDgKKyAgICAgICAgICAgIDMKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcmFpc2UgIkJhZCBzY2FsZSBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAg
ICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRyZW4KKyAgICAgICAgW0BiYXNl
LCBAaW5kZXgsIEBvZmZzZXRdCisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxkcmVuCisg
ICAgICAgIEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBiYXNlKSwgKHlpZWxkIEBp
bmRleCksIEBzY2FsZSwgKHlpZWxkIEBvZmZzZXQpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBk
dW1wCisgICAgICAgICIje29mZnNldC5kdW1wfVsje2Jhc2UuZHVtcH0sICN7aW5kZXguZHVtcH0s
ICN7c2NhbGV9XSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgdHJ1
ZQorICAgIGVuZAorICAgIAorICAgIGRlZiBsYWJlbD8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgaW1tZWRpYXRlPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAor
ICAgIGRlZiByZWdpc3Rlcj8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKK2VuZAorCitjbGFzcyBB
YnNvbHV0ZUFkZHJlc3MgPCBOb0NoaWxkcmVuCisgICAgYXR0cl9yZWFkZXIgOmFkZHJlc3MKKyAg
ICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBhZGRyZXNzKQorICAgICAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgICAgICBAYWRkcmVzcyA9IGFkZHJlc3MKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgZHVtcAorICAgICAgICAiI3thZGRyZXNzLmR1bXB9W10iCisgICAgZW5kCisgICAg
CisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
bGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8K
KyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/CisgICAgICAg
IGZhbHNlCisgICAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24gPCBOb2RlCisgICAgYXR0
cl9yZWFkZXIgOm9wY29kZSwgOm9wZXJhbmRzCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29k
ZU9yaWdpbiwgb3Bjb2RlLCBvcGVyYW5kcykKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAg
ICAgICAgQG9wY29kZSA9IG9wY29kZQorICAgICAgICBAb3BlcmFuZHMgPSBvcGVyYW5kcworICAg
IGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBvcGVyYW5kcworICAgIGVuZAor
ICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbigmcHJvYykKKyAgICAgICAgSW5zdHJ1Y3Rpb24ubmV3
KGNvZGVPcmlnaW4sIEBvcGNvZGUsIEBvcGVyYW5kcy5tYXAoJnByb2MpKQorICAgIGVuZAorICAg
IAorICAgIGRlZiBkdW1wCisgICAgICAgICJcdCIgKyBvcGNvZGUudG9fcyArICIgIiArIG9wZXJh
bmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKQorICAgIGVuZAorZW5kCisKK2NsYXNz
IEVycm9yIDwgTm9DaGlsZHJlbgorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAg
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAg
ICAgIlx0ZXJyb3IiCisgICAgZW5kCitlbmQKKworY2xhc3MgQ29uc3REZWNsIDwgTm9kZQorICAg
IGF0dHJfcmVhZGVyIDp2YXJpYWJsZSwgOnZhbHVlCisgICAgCisgICAgZGVmIGluaXRpYWxpemUo
Y29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgICAgICBAdmFyaWFibGUgPSB2YXJpYWJsZQorICAgICAgICBAdmFsdWUgPSB2YWx1ZQorICAg
IGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBbQHZhcmlhYmxlLCBAdmFsdWVd
CisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxkcmVuCisgICAgICAgIENvbnN0RGVjbC5u
ZXcoY29kZU9yaWdpbiwgKHlpZWxkIEB2YXJpYWJsZSksICh5aWVsZCBAdmFsdWUpKQorICAgIGVu
ZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICJjb25zdCAje0B2YXJpYWJsZS5kdW1wfSA9
ICN7QHZhbHVlLmR1bXB9IgorICAgIGVuZAorZW5kCisKKyRsYWJlbE1hcHBpbmcgPSB7fQorCitj
bGFzcyBMYWJlbCA8IE5vQ2hpbGRyZW4KKyAgICBhdHRyX3JlYWRlciA6bmFtZQorICAgIAorICAg
IGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIHN1cGVyKGNvZGVPcmln
aW4pCisgICAgICAgIEBuYW1lID0gbmFtZQorICAgIGVuZAorICAgIAorICAgIGRlZiBzZWxmLmZv
ck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgaWYgJGxhYmVsTWFwcGluZ1tuYW1lXQor
ICAgICAgICAgICAgcmFpc2UgIkxhYmVsIG5hbWUgY29sbGlzaW9uOiAje25hbWV9IiB1bmxlc3Mg
JGxhYmVsTWFwcGluZ1tuYW1lXS5pc19hPyBMYWJlbAorICAgICAgICBlbHNlCisgICAgICAgICAg
ICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAg
ICAgIGVuZAorICAgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgZW5kCisgICAgCisgICAg
ZGVmIGR1bXAKKyAgICAgICAgIiN7bmFtZX06IgorICAgIGVuZAorZW5kCisKK2NsYXNzIExvY2Fs
TGFiZWwgPCBOb0NoaWxkcmVuCisgICAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgICAKKyAgICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQor
ICAgICAgICBAbmFtZSA9IG5hbWUKKyAgICBlbmQKKworICAgIEBAdW5pcXVlTmFtZUNvdW50ZXIg
PSAwCisgICAgCisgICAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAg
ICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisgICAgICAgICAgICByYWlzZSAiTGFiZWwgbmFtZSBj
b2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAkbGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExvY2Fs
TGFiZWwKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgJGxhYmVsTWFwcGluZ1tuYW1lXSA9IExv
Y2FsTGFiZWwubmV3KGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIGVuZAorICAgICAgICAkbGFi
ZWxNYXBwaW5nW25hbWVdCisgICAgZW5kCisgICAgCisgICAgZGVmIHNlbGYudW5pcXVlKGNvbW1l
bnQpCisgICAgICAgIG5ld05hbWUgPSAiXyN7Y29tbWVudH0iCisgICAgICAgIGlmICRsYWJlbE1h
cHBpbmdbbmV3TmFtZV0KKyAgICAgICAgICAgIHdoaWxlICRsYWJlbE1hcHBpbmdbbmV3TmFtZSA9
ICJfI3tAQHVuaXF1ZU5hbWVDb3VudGVyfV8je2NvbW1lbnR9Il0KKyAgICAgICAgICAgICAgICBA
QHVuaXF1ZU5hbWVDb3VudGVyICs9IDEKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAg
ICAgICAgZm9yTmFtZShuaWwsIG5ld05hbWUpCisgICAgZW5kCisgICAgCisgICAgZGVmIGNsZWFu
TmFtZQorICAgICAgICBpZiBuYW1lID1+IC9eXC4vCisgICAgICAgICAgICAiXyIgKyBuYW1lWzEu
Li0xXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBuYW1lCisgICAgICAgIGVuZAorICAgIGVu
ZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICIje25hbWV9OiIKKyAgICBlbmQKK2VuZAor
CitjbGFzcyBMYWJlbFJlZmVyZW5jZSA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6bGFiZWwKKyAg
ICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICAgICAgc3VwZXIo
Y29kZU9yaWdpbikKKyAgICAgICAgQGxhYmVsID0gbGFiZWwKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgY2hpbGRyZW4KKyAgICAgICAgW0BsYWJlbF0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFw
Q2hpbGRyZW4KKyAgICAgICAgTGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBA
bGFiZWwpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBuYW1lCisgICAgICAgIGxhYmVsLm5hbWUK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICBsYWJlbC5uYW1lCisgICAgZW5k
CisgICAgCisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisg
ICAgZGVmIGxhYmVsPworICAgICAgICB0cnVlCisgICAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxM
YWJlbFJlZmVyZW5jZSA8IE5vQ2hpbGRyZW4KKyAgICBhdHRyX3JlYWRlciA6bGFiZWwKKyAgICAK
KyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBsYWJlbCkKKyAgICAgICAgc3VwZXIoY29k
ZU9yaWdpbikKKyAgICAgICAgQGxhYmVsID0gbGFiZWwKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
Y2hpbGRyZW4KKyAgICAgICAgW0BsYWJlbF0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hp
bGRyZW4KKyAgICAgICAgTG9jYWxMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxk
IEBsYWJlbCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIG5hbWUKKyAgICAgICAgbGFiZWwubmFt
ZQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgIGxhYmVsLm5hbWUKKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgbGFiZWw/CisgICAgICAgIHRydWUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBTZXF1
ZW5jZSA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6bGlzdAorICAgIAorICAgIGRlZiBpbml0aWFs
aXplKGNvZGVPcmlnaW4sIGxpc3QpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAg
IEBsaXN0ID0gbGlzdAorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBs
aXN0CisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgICAgICBT
ZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgQGxpc3QubWFwKCZwcm9jKSkKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgZHVtcAorICAgICAgICBsaXN0LmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiXG4i
KQorICAgIGVuZAorZW5kCisKK2NsYXNzIFRydWUgPCBOb0NoaWxkcmVuCisgICAgZGVmIGluaXRp
YWxpemUKKyAgICAgICAgc3VwZXIobmlsKQorICAgIGVuZAorICAgIAorICAgIEBAaW5zdGFuY2Ug
PSBUcnVlLm5ldworICAgIAorICAgIGRlZiBzZWxmLmluc3RhbmNlCisgICAgICAgIEBAaW5zdGFu
Y2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgdmFsdWUKKyAgICAgICAgdHJ1ZQorICAgIGVuZAor
ICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICJ0cnVlIgorICAgIGVuZAorZW5kCisKK2NsYXNz
IEZhbHNlIDwgTm9DaGlsZHJlbgorICAgIGRlZiBpbml0aWFsaXplCisgICAgICAgIHN1cGVyKG5p
bCkKKyAgICBlbmQKKyAgICAKKyAgICBAQGluc3RhbmNlID0gRmFsc2UubmV3CisgICAgCisgICAg
ZGVmIHNlbGYuaW5zdGFuY2UKKyAgICAgICAgQEBpbnN0YW5jZQorICAgIGVuZAorICAgIAorICAg
IGRlZiB2YWx1ZQorICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisg
ICAgICAgICJmYWxzZSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBUcnVlQ2xhc3MKKyAgICBkZWYg
YXNOb2RlCisgICAgICAgIFRydWUuaW5zdGFuY2UKKyAgICBlbmQKK2VuZAorCitjbGFzcyBGYWxz
ZUNsYXNzCisgICAgZGVmIGFzTm9kZQorICAgICAgICBGYWxzZS5pbnN0YW5jZQorICAgIGVuZAor
ZW5kCisKK2NsYXNzIFNldHRpbmcgPCBOb0NoaWxkcmVuCisgICAgYXR0cl9yZWFkZXIgOm5hbWUK
KyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBzdXBl
cihjb2RlT3JpZ2luKQorICAgICAgICBAbmFtZSA9IG5hbWUKKyAgICBlbmQKKyAgICAKKyAgICBA
QG1hcHBpbmcgPSB7fQorICAgIAorICAgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFt
ZSkKKyAgICAgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgICAgICAgQEBtYXBwaW5n
W25hbWVdID0gU2V0dGluZy5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZW5kCisgICAg
ICAgIEBAbWFwcGluZ1tuYW1lXQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAg
IG5hbWUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBBbmQgPCBOb2RlCisgICAgYXR0cl9yZWFkZXIg
OmxlZnQsIDpyaWdodAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxlZnQs
IHJpZ2h0KQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAbGVmdCA9IGxlZnQK
KyAgICAgICAgQHJpZ2h0ID0gcmlnaHQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRyZW4K
KyAgICAgICAgW0BsZWZ0LCBAcmlnaHRdCisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxk
cmVuCisgICAgICAgIEFuZC5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0KSwgKHlpZWxkIEBy
aWdodCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIigje2xlZnQuZHVt
cH0gYW5kICN7cmlnaHQuZHVtcH0pIgorICAgIGVuZAorZW5kCisKK2NsYXNzIE9yIDwgTm9kZQor
ICAgIGF0dHJfcmVhZGVyIDpsZWZ0LCA6cmlnaHQKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCBsZWZ0LCByaWdodCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAg
ICAgQGxlZnQgPSBsZWZ0CisgICAgICAgIEByaWdodCA9IHJpZ2h0CisgICAgZW5kCisgICAgCisg
ICAgZGVmIGNoaWxkcmVuCisgICAgICAgIFtAbGVmdCwgQHJpZ2h0XQorICAgIGVuZAorICAgIAor
ICAgIGRlZiBtYXBDaGlsZHJlbgorICAgICAgICBPci5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBs
ZWZ0KSwgKHlpZWxkIEByaWdodCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAg
ICAgIigje2xlZnQuZHVtcH0gb3IgI3tyaWdodC5kdW1wfSkiCisgICAgZW5kCitlbmQKKworY2xh
c3MgTm90IDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpjaGlsZAorICAgIAorICAgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIGNoaWxkKQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
ICAgICBAY2hpbGQgPSBjaGlsZAorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAg
ICAgICBbQGxlZnQsIEByaWdodF0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hpbGRyZW4K
KyAgICAgICAgTm90Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGNoaWxkKSkKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgZHVtcAorICAgICAgICAiKG5vdCAje2NoaWxkLmR1bXB9KSIKKyAgICBlbmQK
K2VuZAorCitjbGFzcyBTa2lwIDwgTm9DaGlsZHJlbgorICAgIGRlZiBpbml0aWFsaXplKGNvZGVP
cmlnaW4pCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgZW5kCisgICAgCisgICAgZGVm
IGR1bXAKKyAgICAgICAgIlx0c2tpcCIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJZlRoZW5FbHNl
IDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpwcmVkaWNhdGUsIDp0aGVuQ2FzZQorICAgIGF0dHJf
YWNjZXNzb3IgOmVsc2VDYXNlCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwg
cHJlZGljYXRlLCB0aGVuQ2FzZSkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAg
QHByZWRpY2F0ZSA9IHByZWRpY2F0ZQorICAgICAgICBAdGhlbkNhc2UgPSB0aGVuQ2FzZQorICAg
ICAgICBAZWxzZUNhc2UgPSBTa2lwLm5ldyhjb2RlT3JpZ2luKQorICAgIGVuZAorICAgIAorICAg
IGRlZiBjaGlsZHJlbgorICAgICAgICBpZiBAZWxzZUNhc2UKKyAgICAgICAgICAgIFtAcHJlZGlj
YXRlLCBAdGhlbkNhc2UsIEBlbHNlQ2FzZV0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgW0Bw
cmVkaWNhdGUsIEB0aGVuQ2FzZV0KKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVm
IG1hcENoaWxkcmVuCisgICAgICAgIElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBA
cHJlZGljYXRlKSwgKHlpZWxkIEB0aGVuQ2FzZSksICh5aWVsZCBAZWxzZUNhc2UpKQorICAgIGVu
ZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgICJpZiAje3ByZWRpY2F0ZS5kdW1wfVxuIiAr
IHRoZW5DYXNlLmR1bXAgKyAiXG5lbHNlXG4iICsgZWxzZUNhc2UuZHVtcCArICJcbmVuZCIKKyAg
ICBlbmQKK2VuZAorCitjbGFzcyBNYWNybyA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6bmFtZSwg
OnZhcmlhYmxlcywgOmJvZHkKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBu
YW1lLCB2YXJpYWJsZXMsIGJvZHkpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAg
IEBuYW1lID0gbmFtZQorICAgICAgICBAdmFyaWFibGVzID0gdmFyaWFibGVzCisgICAgICAgIEBi
b2R5ID0gYm9keQorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBAdmFy
aWFibGVzICsgW0Bib2R5XQorICAgIGVuZAorICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbgorICAg
ICAgICBNYWNyby5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEB2YXJpYWJsZXMubWFwe3x2fCB5aWVs
ZCB2fSwgKHlpZWxkIEBib2R5KSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAg
ICAibWFjcm8gI3tuYW1lfSgiICsgdmFyaWFibGVzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigi
LCAiKSArICIpXG4iICsgYm9keS5kdW1wICsgIlxuZW5kIgorICAgIGVuZAorZW5kCisKK2NsYXNz
IE1hY3JvQ2FsbCA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6bmFtZSwgOm9wZXJhbmRzCisgICAg
CisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAg
IHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBuYW1lID0gbmFtZQorICAgICAgICBAb3BlcmFu
ZHMgPSBvcGVyYW5kcworICAgICAgICByYWlzZSB1bmxlc3MgQG9wZXJhbmRzCisgICAgICAgIEBv
cGVyYW5kcy5lYWNoe3x2fCByYWlzZSB1bmxlc3Mgdn0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
Y2hpbGRyZW4KKyAgICAgICAgQG9wZXJhbmRzCisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENo
aWxkcmVuKCZwcm9jKQorICAgICAgICBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIEBuYW1lLCBA
b3BlcmFuZHMubWFwKCZwcm9jKSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAg
ICAiXHQje25hbWV9KCIgKyBvcGVyYW5kcy5jb2xsZWN0e3x2fCB2LmR1bXB9LmpvaW4oIiwgIikg
KyAiKSIKKyAgICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9iYWNrZW5kcy5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9iYWNrZW5kcy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDk2IEBACisj
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhcm12NyIKK3Jl
cXVpcmUgImFzdCIKK3JlcXVpcmUgIng4NiIKKworQkFDS0VORFMgPQorICAgIFsKKyAgICAgIlg4
NiIsCisgICAgICJBUk12NyIKKyAgICBdCisKKyMgS2VlcCB0aGUgc2V0IG9mIHdvcmtpbmcgYmFj
a2VuZHMgc2VwYXJhdGUgZnJvbSB0aGUgc2V0IG9mIGJhY2tlbmRzIHRoYXQgbWlnaHQgYmUKKyMg
c3VwcG9ydGVkLiBUaGlzIGlzIGdyZWF0IGJlY2F1c2UgdGhlIEJBQ0tFTkRTIGxpc3QgaXMgYWxt
b3N0IGxpa2UgYSByZXNlcnZlZAorIyB3b3JkcyBsaXN0LCBpbiB0aGF0IGl0IGNhdXNlcyBzZXR0
aW5ncyByZXNvbHV0aW9uIHRvIHRyZWF0IHRob3NlIHdvcmRzIHNwZWNpYWxseS4KKyMgSGVuY2Ug
dGhpcyBsZXRzIHVzIHNldCBhc2lkZSB0aGUgbmFtZSBvZiBhIGJhY2tlbmQgd2UgbWlnaHQgd2Fu
dCB0byBzdXBwb3J0IGluCisjIHRoZSBmdXR1cmUgd2hpbGUgbm90IGFjdHVhbGx5IHN1cHBvcnRp
bmcgdGhlIGJhY2tlbmQgeWV0LgorV09SS0lOR19CQUNLRU5EUyA9CisgICAgWworICAgICAiWDg2
IiwKKyAgICAgIkFSTXY3IgorICAgIF0KKworQkFDS0VORF9QQVRURVJOID0gUmVnZXhwLm5ldygn
XFxBKCcgKyBCQUNLRU5EUy5qb2luKCcpfCgnKSArICcpXFxaJykKKworY2xhc3MgTm9kZQorICAg
IGRlZiBsb3dlcihuYW1lKQorICAgICAgICBzZW5kKCJsb3dlciIgKyBuYW1lKQorICAgIGVuZAor
ZW5kCisKKyMgT3ZlcnJpZGVzIGZvciBsb3dlcigpIGZvciB0aG9zZSBub2RlcyB0aGF0IGFyZSBi
YWNrZW5kLWFnbm9zdGljCisKK2NsYXNzIExhYmVsCisgICAgZGVmIGxvd2VyKG5hbWUpCisgICAg
ICAgICRhc20ucHV0c0xhYmVsKHNlbGYubmFtZVsxLi4tMV0pCisgICAgZW5kCitlbmQKKworY2xh
c3MgTG9jYWxMYWJlbAorICAgIGRlZiBsb3dlcihuYW1lKQorICAgICAgICAkYXNtLnB1dHNMb2Nh
bExhYmVsICJfb2ZmbGluZWFzbV8je3NlbGYubmFtZVsxLi4tMV19IgorICAgIGVuZAorZW5kCisK
K2NsYXNzIExhYmVsUmVmZXJlbmNlCisgICAgZGVmIGFzbUxhYmVsCisgICAgICAgIEFzc2VtYmxl
ci5sYWJlbFJlZmVyZW5jZShuYW1lWzEuLi0xXSkKKyAgICBlbmQKK2VuZAorCitjbGFzcyBMb2Nh
bExhYmVsUmVmZXJlbmNlCisgICAgZGVmIGFzbUxhYmVsCisgICAgICAgIEFzc2VtYmxlci5sb2Nh
bExhYmVsUmVmZXJlbmNlKCJfb2ZmbGluZWFzbV8iK25hbWVbMS4uLTFdKQorICAgIGVuZAorZW5k
CisKK2NsYXNzIFNraXAKKyAgICBkZWYgbG93ZXIobmFtZSkKKyAgICBlbmQKK2VuZAorCitjbGFz
cyBTZXF1ZW5jZQorICAgIGRlZiBsb3dlcihuYW1lKQorICAgICAgICBpZiByZXNwb25kX3RvPyAi
bG93ZXIje25hbWV9IgorICAgICAgICAgICAgc2VuZCgibG93ZXIje25hbWV9IikKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgQGxpc3QuZWFjaCB7CisgICAgICAgICAgICAgICAgfCBub2RlIHwK
KyAgICAgICAgICAgICAgICBub2RlLmxvd2VyKG5hbWUpCisgICAgICAgICAgICB9CisgICAgICAg
IGVuZAorICAgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2dlbmVyYXRlX29mZnNldF9leHRyYWN0b3IucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2dlbmVyYXRlX29m
ZnNldF9leHRyYWN0b3IucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTM2IEBACisjIS91c3Iv
YmluL2VudiBydWJ5CisKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6
IDw8IEZpbGUuZGlybmFtZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJl
ICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1
aXJlICJzZWxmX2hhc2giCityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIK
KworaW5wdXRGbG5tID0gQVJHVi5zaGlmdAorb3V0cHV0RmxubSA9IEFSR1Yuc2hpZnQKKworJHN0
ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBQYXJzaW5nICN7aW5wdXRGbG5tfSBhbmQgY3JlYXRpbmcg
b2Zmc2V0IGV4dHJhY3RvciAje291dHB1dEZsbm19LiIKKworZGVmIGVtaXRNYWdpY051bWJlcgor
ICAgIE9GRlNFVF9NQUdJQ19OVU1CRVJTLmVhY2ggeworICAgICAgICB8IG51bWJlciB8CisgICAg
ICAgICRvdXRwdXQucHV0cyAiI3tudW1iZXJ9LCIKKyAgICB9CitlbmQKKworaW5wdXREYXRhID0g
SU86OnJlYWQoaW5wdXRGbG5tKQoraW5wdXRIYXNoID0gIi8vIG9mZmxpbmVhc20gaW5wdXQgaGFz
aDogI3tEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGlucHV0RGF0YSl9ICN7c2VsZkhhc2h9IgorCitp
ZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0RmxubQorICAgIEZpbGUub3BlbihvdXRwdXRGbG5tLCAi
ciIpIHsKKyAgICAgICAgfCBpbnAgfAorICAgICAgICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAg
ICAgICBpZiBmaXJzdExpbmUgYW5kIGZpcnN0TGluZS5jaG9tcCA9PSBpbnB1dEhhc2gKKyAgICAg
ICAgICAgICRzdGRlcnIucHV0cyAib2ZmbGluZWFzbTogTm90aGluZyBjaGFuZ2VkLiIKKyAgICAg
ICAgICAgIGV4aXQgMAorICAgICAgICBlbmQKKyAgICB9CitlbmQKKworb3JpZ2luYWxBU1QgPSBw
YXJzZShsZXgoaW5wdXREYXRhKSkKKworIworIyBPcHRpbWl6ZSB0aGUgQVNUIHRvIG1ha2UgY29u
ZmlndXJhdGlvbiBleHRyYWN0aW9uIGZhc3Rlci4gVGhpcyByZWR1Y2VzIHRoZSBBU1QgdG8gYSBm
b3JtCisjIHRoYXQgb25seSBjb250YWlucyB0aGUgdGhpbmdzIHRoYXQgbWF0dGVyIGZvciBvdXIg
cHVycG9zZXM6IG9mZnNldHMsIHNpemVzLCBhbmQgaWYKKyMgc3RhdGVtZW50cy4KKyMKKworY2xh
c3MgTm9kZQorICAgIGRlZiBvZmZzZXRzUHJ1bmVUbyhzZXF1ZW5jZSkKKyAgICAgICAgY2hpbGRy
ZW4uZWFjaCB7CisgICAgICAgICAgICB8IGNoaWxkIHwKKyAgICAgICAgICAgIGNoaWxkLm9mZnNl
dHNQcnVuZVRvKHNlcXVlbmNlKQorICAgICAgICB9CisgICAgZW5kCisgICAgCisgICAgZGVmIG9m
ZnNldHNQcnVuZQorICAgICAgICByZXN1bHQgPSBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgW10p
CisgICAgICAgIG9mZnNldHNQcnVuZVRvKHJlc3VsdCkKKyAgICAgICAgcmVzdWx0CisgICAgZW5k
CitlbmQKKworY2xhc3MgSWZUaGVuRWxzZQorICAgIGRlZiBvZmZzZXRzUHJ1bmVUbyhzZXF1ZW5j
ZSkKKyAgICAgICAgaWZUaGVuRWxzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRp
Y2F0ZSwgdGhlbkNhc2Uub2Zmc2V0c1BydW5lKQorICAgICAgICBpZlRoZW5FbHNlLmVsc2VDYXNl
ID0gZWxzZUNhc2Uub2Zmc2V0c1BydW5lCisgICAgICAgIHNlcXVlbmNlLmxpc3QgPDwgaWZUaGVu
RWxzZQorICAgIGVuZAorZW5kCisKK2NsYXNzIFN0cnVjdE9mZnNldAorICAgIGRlZiBvZmZzZXRz
UHJ1bmVUbyhzZXF1ZW5jZSkKKyAgICAgICAgc2VxdWVuY2UubGlzdCA8PCBzZWxmCisgICAgZW5k
CitlbmQKKworY2xhc3MgU2l6ZW9mCisgICAgZGVmIG9mZnNldHNQcnVuZVRvKHNlcXVlbmNlKQor
ICAgICAgICBzZXF1ZW5jZS5saXN0IDw8IHNlbGYKKyAgICBlbmQKK2VuZAorCitwcnVuZWRBU1Qg
PSBvcmlnaW5hbEFTVC5vZmZzZXRzUHJ1bmUKKworRmlsZS5vcGVuKG91dHB1dEZsbm0sICJ3Iikg
eworICAgIHwgb3V0cCB8CisgICAgJG91dHB1dCA9IG91dHAKKyAgICBvdXRwLnB1dHMgaW5wdXRI
YXNoCisgICAgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKHBydW5lZEFTVCkgeworICAgICAg
ICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICAgICAgb2Zmc2V0c0xpc3Qg
PSBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CisgICAgICAgIHNpemVzTGlzdCA9
IGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKKyAgICAgICAgCisgICAgICAgIGxlbmd0aCA9
IChPRkZTRVRfTUFHSUNfTlVNQkVSUy5zaXplICsgMSkgKiAoMSArIG9mZnNldHNMaXN0LnNpemUg
KyBzaXplc0xpc3Quc2l6ZSkKKyAgICAgICAgCisgICAgICAgIG91dHAucHV0cyAic3RhdGljIGNv
bnN0IHVuc2lnbmVkIGV4dHJhY3RvclRhYmxlWyN7bGVuZ3RofV0gPSB7IgorICAgICAgICBlbWl0
TWFnaWNOdW1iZXIKKyAgICAgICAgb3V0cC5wdXRzICIje2luZGV4fSwiCisgICAgICAgIG9mZnNl
dHNMaXN0LmVhY2ggeworICAgICAgICAgICAgfCBvZmZzZXQgfAorICAgICAgICAgICAgZW1pdE1h
Z2ljTnVtYmVyCisgICAgICAgICAgICBvdXRwLnB1dHMgIk9GRkxJTkVfQVNNX09GRlNFVE9GKCN7
b2Zmc2V0LnN0cnVjdH0sICN7b2Zmc2V0LmZpZWxkfSksIgorICAgICAgICB9CisgICAgICAgIHNp
emVzTGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgb2Zmc2V0IHwKKyAgICAgICAgICAgIGVtaXRN
YWdpY051bWJlcgorICAgICAgICAgICAgb3V0cC5wdXRzICJzaXplb2YoI3tvZmZzZXQuc3RydWN0
fSksIgorICAgICAgICB9CisgICAgICAgIG91dHAucHV0cyAifTsiCisgICAgfQorfQorCiskc3Rk
ZXJyLnB1dHMgIm9mZmxpbmVhc206IG9mZnNldCBleHRyYWN0b3IgI3tvdXRwdXRGbG5tfSBzdWNj
ZXNzZnVsbHkgZ2VuZXJhdGVkLiIKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxp
bmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyMTcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
IyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMgSW50
ZXJlc3RpbmcgaW52YXJpYW50LCB3aGljaCB3ZSB0YWtlIGFkdmFudGFnZSBvZjogYnJhbmNoaW5n
IGluc3RydWN0aW9ucworIyBhbHdheXMgYmVnaW4gd2l0aCAiYiIsIGFuZCBubyBub24tYnJhbmNo
aW5nIGluc3RydWN0aW9ucyBiZWdpbiB3aXRoICJiIi4KKyMgVGVybWluYWwgaW5zdHJ1Y3Rpb25z
IGFyZSAiam1wIiBhbmQgInJldCIuCisKK01BQ1JPX0lOU1RSVUNUSU9OUyA9CisgICAgWworICAg
ICAiYWRkaSIsCisgICAgICJhbmRpIiwKKyAgICAgImxzaGlmdGkiLAorICAgICAibXVsaSIsCisg
ICAgICJuZWdpIiwKKyAgICAgIm5vdGkiLAorICAgICAib3JpIiwKKyAgICAgInJzaGlmdGkiLAor
ICAgICAidXJzaGlmdGkiLAorICAgICAic3ViaSIsCisgICAgICJ4b3JpIiwKKyAgICAgImxvYWRp
IiwKKyAgICAgImxvYWRiIiwKKyAgICAgImxvYWRicyIsCisgICAgICJsb2FkaCIsCisgICAgICJs
b2FkaHMiLAorICAgICAic3RvcmVpIiwKKyAgICAgInN0b3JlYiIsCisgICAgICJsb2FkZCIsCisg
ICAgICJtb3ZlZCIsCisgICAgICJzdG9yZWQiLAorICAgICAiYWRkZCIsCisgICAgICJkaXZkIiwK
KyAgICAgInN1YmQiLAorICAgICAibXVsZCIsCisgICAgICJzcXJ0ZCIsCisgICAgICJjaTJkIiwK
KyAgICAgImZpaTJkIiwgIyB1c2FnZTogZmlpMmQgPGdwciB3aXRoIGxlYXN0IHNpZ25pZmljYW50
IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPiwgPGZwcj4KKyAgICAgImZk
MmlpIiwgIyB1c2FnZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0aCBsZWFzdCBzaWduaWZpY2FudCBi
aXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4KKyAgICAgImJkZXEiLAorICAg
ICAiYmRuZXEiLAorICAgICAiYmRndCIsCisgICAgICJiZGd0ZXEiLAorICAgICAiYmRsdCIsCisg
ICAgICJiZGx0ZXEiLAorICAgICAiYmRlcXVuIiwKKyAgICAgImJkbmVxdW4iLAorICAgICAiYmRn
dHVuIiwKKyAgICAgImJkZ3RlcXVuIiwKKyAgICAgImJkbHR1biIsCisgICAgICJiZGx0ZXF1biIs
CisgICAgICJidGQyaSIsCisgICAgICJ0ZDJpIiwKKyAgICAgImJjZDJpIiwKKyAgICAgIm1vdmR6
IiwKKyAgICAgInBvcCIsCisgICAgICJwdXNoIiwKKyAgICAgIm1vdmUiLAorICAgICAic3hpMnAi
LAorICAgICAienhpMnAiLAorICAgICAibm9wIiwKKyAgICAgImJpZXEiLAorICAgICAiYmluZXEi
LAorICAgICAiYmlhIiwKKyAgICAgImJpYWVxIiwKKyAgICAgImJpYiIsCisgICAgICJiaWJlcSIs
CisgICAgICJiaWd0IiwKKyAgICAgImJpZ3RlcSIsCisgICAgICJiaWx0IiwKKyAgICAgImJpbHRl
cSIsCisgICAgICJiYmVxIiwKKyAgICAgImJibmVxIiwKKyAgICAgImJiYSIsCisgICAgICJiYmFl
cSIsCisgICAgICJiYmIiLAorICAgICAiYmJiZXEiLAorICAgICAiYmJndCIsCisgICAgICJiYmd0
ZXEiLAorICAgICAiYmJsdCIsCisgICAgICJiYmx0ZXEiLAorICAgICAiYnRpbyIsCisgICAgICJi
dGlzIiwKKyAgICAgImJ0aXoiLAorICAgICAiYnRpbnoiLAorICAgICAiYnRibyIsCisgICAgICJi
dGJzIiwKKyAgICAgImJ0YnoiLAorICAgICAiYnRibnoiLAorICAgICAiam1wIiwKKyAgICAgImJh
ZGRpbyIsCisgICAgICJiYWRkaXMiLAorICAgICAiYmFkZGl6IiwKKyAgICAgImJhZGRpbnoiLAor
ICAgICAiYnN1YmlvIiwKKyAgICAgImJzdWJpcyIsCisgICAgICJic3ViaXoiLAorICAgICAiYnN1
YmlueiIsCisgICAgICJibXVsaW8iLAorICAgICAiYm11bGlzIiwKKyAgICAgImJtdWxpeiIsCisg
ICAgICJibXVsaW56IiwKKyAgICAgImJvcmlvIiwKKyAgICAgImJvcmlzIiwKKyAgICAgImJvcml6
IiwKKyAgICAgImJvcmlueiIsCisgICAgICJicmVhayIsCisgICAgICJjYWxsIiwKKyAgICAgInJl
dCIsCisgICAgICJjaWVxIiwKKyAgICAgImNpbmVxIiwKKyAgICAgImNpYSIsCisgICAgICJjaWFl
cSIsCisgICAgICJjaWIiLAorICAgICAiY2liZXEiLAorICAgICAiY2lndCIsCisgICAgICJjaWd0
ZXEiLAorICAgICAiY2lsdCIsCisgICAgICJjaWx0ZXEiLAorICAgICAidGlvIiwKKyAgICAgInRp
cyIsCisgICAgICJ0aXoiLAorICAgICAidGlueiIsCisgICAgICJ0Ym8iLAorICAgICAidGJzIiwK
KyAgICAgInRieiIsCisgICAgICJ0Ym56IiwKKyAgICAgInBlZWsiLAorICAgICAicG9rZSIsCisg
ICAgICJicGVxIiwKKyAgICAgImJwbmVxIiwKKyAgICAgImJwYSIsCisgICAgICJicGFlcSIsCisg
ICAgICJicGIiLAorICAgICAiYnBiZXEiLAorICAgICAiYnBndCIsCisgICAgICJicGd0ZXEiLAor
ICAgICAiYnBsdCIsCisgICAgICJicGx0ZXEiLAorICAgICAiYWRkcCIsCisgICAgICJhbmRwIiwK
KyAgICAgIm9ycCIsCisgICAgICJzdWJwIiwKKyAgICAgInhvcnAiLAorICAgICAibG9hZHAiLAor
ICAgICAiY3BlcSIsCisgICAgICJjcG5lcSIsCisgICAgICJjcGEiLAorICAgICAiY3BhZXEiLAor
ICAgICAiY3BiIiwKKyAgICAgImNwYmVxIiwKKyAgICAgImNwZ3QiLAorICAgICAiY3BndGVxIiwK
KyAgICAgImNwbHQiLAorICAgICAiY3BsdGVxIiwKKyAgICAgInN0b3JlcCIsCisgICAgICJidHBv
IiwKKyAgICAgImJ0cHMiLAorICAgICAiYnRweiIsCisgICAgICJidHBueiIsCisgICAgICJiYWRk
cG8iLAorICAgICAiYmFkZHBzIiwKKyAgICAgImJhZGRweiIsCisgICAgICJiYWRkcG56IiwKKyAg
ICAgImJvIiwKKyAgICAgImJzIiwKKyAgICAgImJ6IiwKKyAgICAgImJueiIsCisgICAgICJsZWFp
IiwKKyAgICAgImxlYXAiLAorICAgIF0KKworWDg2X0lOU1RSVUNUSU9OUyA9CisgICAgWworICAg
ICAiY2RxaSIsCisgICAgICJpZGl2aSIKKyAgICBdCisKK0FSTXY3X0lOU1RSVUNUSU9OUyA9Cisg
ICAgWworICAgICAic211bGxpIiwKKyAgICAgImFkZGlzIiwKKyAgICAgInN1YmlzIiwKKyAgICAg
Im9yaXMiCisgICAgXQorCitJTlNUUlVDVElPTlMgPSBNQUNST19JTlNUUlVDVElPTlMgKyBYODZf
SU5TVFJVQ1RJT05TICsgQVJNdjdfSU5TVFJVQ1RJT05TCisKK0lOU1RSVUNUSU9OX1BBVFRFUk4g
PSBSZWdleHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbignKXwoJykgKyAnKSlcXFon
KQorCitkZWYgaXNCcmFuY2goaW5zdHJ1Y3Rpb24pCisgICAgaW5zdHJ1Y3Rpb24gPX4gL15iLwor
ZW5kCisKK2RlZiBoYXNGYWxsVGhyb3VnaChpbnN0cnVjdGlvbikKKyAgICBpbnN0cnVjdGlvbiAh
PSAicmV0IiBhbmQgaW5zdHJ1Y3Rpb24gIT0gImptcCIKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFjdG9yX2NvbnN0YW50cy5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRfZXh0cmFj
dG9yX2NvbnN0YW50cy5yYgkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9v
ZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisj
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitNQUdJ
Q19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE1MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6Cisj
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
cmVxdWlyZSAiYXN0IgorcmVxdWlyZSAib2Zmc2V0X2V4dHJhY3Rvcl9jb25zdGFudHMiCisKK09G
RlNFVF9NQUdJQ19OVU1CRVJTID0gWyAweGVjNTc3YWM3LCAweDBmZjVlNzU1IF0KKworIworIyBv
ZmZzZXRzTGlzdChhc3QpCisjIHNpemVzTGlzdChhc3QpCisjCisjIFJldHVybnMgYSBsaXN0IG9m
IG9mZnNldHMgYW5kIHNpemVzIHVzZWQgYnkgdGhlIEFTVC4KKyMKKworZGVmIG9mZnNldHNMaXN0
KGFzdCkKKyAgICBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CitlbmQKKworZGVm
IHNpemVzTGlzdChhc3QpCisgICAgYXN0LmZpbHRlcihTaXplb2YpLnVuaXEuc29ydAorZW5kCisK
KyMKKyMgb2Zmc2V0c0FuZENvbmZpZ3VyYXRpb25JbmRleChhc3QsIGZpbGUpIC0+CisjICAgICBb
b2Zmc2V0cywgaW5kZXhdCisjCisjIFBhcnNlcyB0aGUgb2Zmc2V0cyBmcm9tIGEgZmlsZSBhbmQg
cmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgdGhlCisjIGluZGV4IG9mIHRoZSBjb25maWd1
cmF0aW9uIHRoYXQgaXMgdmFsaWQgaW4gdGhpcyBidWlsZCB0YXJnZXQuCisjCisKK2RlZiBvZmZz
ZXRzQW5kQ29uZmlndXJhdGlvbkluZGV4KGZpbGUpCisgICAgaW5kZXggPSBuaWwKKyAgICBvZmZz
ZXRzID0gW10KKyAgICBlbmRpYW5uZXNzTWFya2VyQnl0ZXMgPSBuaWwKKyAgICAKKyAgICBkZWYg
cmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAgIGJ5dGVzID0gW10KKyAgICAgICAgNC50
aW1lcyB7CisgICAgICAgICAgICBieXRlcyA8PCBpbnAuZ2V0Ynl0ZQorICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBpZiBlbmRpYW5uZXNzID09IDpsaXR0bGUKKyAgICAgICAgICAgICMgTGl0
dGxlIGVuZGlhbgorICAgICAgICAgICAgKGJ5dGVzWzBdIDw8IDAgfAorICAgICAgICAgICAgIGJ5
dGVzWzFdIDw8IDggfAorICAgICAgICAgICAgIGJ5dGVzWzJdIDw8IDE2IHwKKyAgICAgICAgICAg
ICBieXRlc1szXSA8PCAyNCkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgIyBCaWcgZW5kaWFu
CisgICAgICAgICAgICAoYnl0ZXNbMF0gPDwgMjQgfAorICAgICAgICAgICAgIGJ5dGVzWzFdIDw8
IDE2IHwKKyAgICAgICAgICAgICBieXRlc1syXSA8PCA4IHwKKyAgICAgICAgICAgICBieXRlc1sz
XSA8PCAwKQorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBbOmxpdHRsZSwgOmJpZ10u
ZWFjaCB7CisgICAgICAgIHwgZW5kaWFubmVzcyB8CisgICAgICAgIG1hZ2ljQnl0ZXMgPSBbXQor
ICAgICAgICBNQUdJQ19OVU1CRVJTLmVhY2ggeworICAgICAgICAgICAgfCBudW1iZXIgfAorICAg
ICAgICAgICAgY3VycmVudEJ5dGVzID0gW10KKyAgICAgICAgICAgIDQudGltZXMgeworICAgICAg
ICAgICAgICAgIGN1cnJlbnRCeXRlcyA8PCAobnVtYmVyICYgMHhmZikKKyAgICAgICAgICAgICAg
ICBudW1iZXIgPj49IDgKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIGVuZGlhbm5lc3Mg
PT0gOmJpZworICAgICAgICAgICAgICAgIGN1cnJlbnRCeXRlcy5yZXZlcnNlIQorICAgICAgICAg
ICAgZW5kCisgICAgICAgICAgICBtYWdpY0J5dGVzICs9IGN1cnJlbnRCeXRlcworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBGaWxlLm9wZW4oZmlsZSwgInIiKSB7CisgICAgICAgICAgICB8
IGlucCB8CisgICAgICAgICAgICB3aGVyZUluTWFya2VyID0gMAorICAgICAgICAgICAgbG9vcCB7
CisgICAgICAgICAgICAgICAgYnl0ZSA9IGlucC5nZXRieXRlCisgICAgICAgICAgICAgICAgYnJl
YWsgdW5sZXNzIGJ5dGUKKyAgICAgICAgICAgICAgICBpZiBieXRlID09IG1hZ2ljQnl0ZXNbd2hl
cmVJbk1hcmtlcl0KKyAgICAgICAgICAgICAgICAgICAgd2hlcmVJbk1hcmtlciArPSAxCisgICAg
ICAgICAgICAgICAgICAgIGlmIHdoZXJlSW5NYXJrZXIgPT0gbWFnaWNCeXRlcy5zaXplCisgICAg
ICAgICAgICAgICAgICAgICAgICAjIFdlIGhhdmUgYSBtYXRjaCEgSWYgd2UgaGF2ZSBub3QgeWV0
IHJlYWQgdGhlIGVuZGlhbm5lc3MgbWFya2VyIGFuZCBpbmRleCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICMgdGhlbiByZWFkIHRob3NlIG5vdzsgb3RoZXJ3aXNlIHJlYWQgYW4gb2Zmc2V0Lgor
ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3Qg
aW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHJlYWRJbnQoZW5kaWFu
bmVzcywgaW5wKQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9mZnNldHMgPDwgcmVhZEludChlbmRpYW5uZXNzLCBpbnApCisgICAgICAg
ICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICAgICAgd2hlcmVJbk1hcmtlciA9IDAKKyAgICAgICAgICAgICAgICAgICAgZW5k
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB3aGVyZUluTWFya2Vy
ID0gMAorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIAorICAgICAgICBicmVhayBpZiBpbmRleAorICAgIH0KKyAgICAKKyAgICByYWlzZSB1bmxl
c3MgaW5kZXgKKyAgICAKKyAgICBbb2Zmc2V0cywgaW5kZXhdCitlbmQKKworIworIyBidWlsZE9m
ZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkgLT4gW29mZnNldHMsIHNpemVzXQorIworIyBCdWls
ZHMgYSBtYXBwaW5nIGJldHdlZW4gU3RydWN0T2Zmc2V0IG5vZGVzIGFuZCB0aGVpciB2YWx1ZXMu
CisjCisKK2RlZiBidWlsZE9mZnNldHNNYXAoYXN0LCBvZmZzZXRzTGlzdCkKKyAgICBvZmZzZXRz
TWFwID0ge30KKyAgICBzaXplc01hcCA9IHt9CisgICAgYXN0T2Zmc2V0c0xpc3QgPSBvZmZzZXRz
TGlzdChhc3QpCisgICAgYXN0U2l6ZXNMaXN0ID0gc2l6ZXNMaXN0KGFzdCkKKyAgICByYWlzZSB1
bmxlc3MgYXN0T2Zmc2V0c0xpc3Quc2l6ZSArIGFzdFNpemVzTGlzdC5zaXplID09IG9mZnNldHNM
aXN0LnNpemUKKyAgICBvZmZzZXRzTGlzdChhc3QpLmVhY2hfd2l0aF9pbmRleCB7CisgICAgICAg
IHwgc3RydWN0T2Zmc2V0LCBpbmRleCB8CisgICAgICAgIG9mZnNldHNNYXBbc3RydWN0T2Zmc2V0
XSA9IG9mZnNldHNMaXN0LnNoaWZ0CisgICAgfQorICAgIHNpemVzTGlzdChhc3QpLmVhY2hfd2l0
aF9pbmRleCB7CisgICAgICAgIHwgc2l6ZW9mLCBpbmRleCB8CisgICAgICAgIHNpemVzTWFwW3Np
emVvZl0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICAgIH0KKyAgICBbb2Zmc2V0c01hcCwgc2l6ZXNN
YXBdCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vb3B0LnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29wdC5yYgko
cmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29wdC5yYgko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMzQgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
IyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMg
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisKK3JlcXVpcmUgImFzdCIKKworIworIyAiT3B0aW1pemF0aW9uIiBwYXNzZXMu
IFRoZXNlIGFyZSB1c2VkIHRvIGxvd2VyIHRoZSByZXByZXNlbnRhdGlvbiBmb3IKKyMgYmFja2Vu
ZHMgdGhhdCBjYW5ub3QgaGFuZGxlIHNvbWUgb2Ygb3VyIGhpZ2hlci1sZXZlbCBpbnN0cnVjdGlv
bnMuCisjCisKKyMKKyMgQSB0ZW1wb3JhcnkgLSBhIHZhcmlhYmxlIHRoYXQgd2lsbCBiZSBhbGxv
Y2F0ZWQgdG8gYSByZWdpc3RlciBhZnRlciB3ZSdyZQorIyBkb25lLgorIworCitjbGFzcyBOb2Rl
CisgICAgZGVmIHJlcGxhY2VUZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2luZCkKKyAgICAgICAg
bWFwQ2hpbGRyZW4geworICAgICAgICAgICAgfCBub2RlIHwKKyAgICAgICAgICAgIG5vZGUucmVw
bGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lzdGVycyhraW5kKQorICAgICAgICB9CisgICAgZW5kCitl
bmQKKworY2xhc3MgVG1wIDwgTm9DaGlsZHJlbgorICAgIGF0dHJfcmVhZGVyIDpmaXJzdE1lbnRp
b24sIDpsYXN0TWVudGlvbgorICAgIGF0dHJfcmVhZGVyIDpraW5kCisgICAgYXR0cl9hY2Nlc3Nv
ciA6cmVnaXN0ZXIKKworICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGtpbmQpCisgICAg
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBraW5kID0ga2luZAorICAgIGVuZAorICAg
IAorICAgIGRlZiBkdW1wCisgICAgICAgICIkdG1wI3tvYmplY3RfaWR9IgorICAgIGVuZAorICAg
IAorICAgIGRlZiBtZW50aW9uIShwb3NpdGlvbikKKyAgICAgICAgaWYgbm90IEBmaXJzdE1lbnRp
b24gb3IgcG9zaXRpb24gPCBAZmlyc3RNZW50aW9uCisgICAgICAgICAgICBAZmlyc3RNZW50aW9u
ID0gcG9zaXRpb24KKyAgICAgICAgZW5kCisgICAgICAgIGlmIG5vdCBAbGFzdE1lbnRpb24gb3Ig
cG9zaXRpb24gPiBAbGFzdE1lbnRpb24KKyAgICAgICAgICAgIEBsYXN0TWVudGlvbiA9IHBvc2l0
aW9uCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiByZXBsYWNlVGVtcG9yYXJp
ZXNXaXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgICAgIGlmIEBraW5kID09IGtpbmQKKyAgICAgICAg
ICAgIHJhaXNlICJEaWQgbm90IGFsbG9jYXRlIHJlZ2lzdGVyIHRvIHRlbXBvcmFyeSBhdCAje2Nv
ZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgQHJlZ2lzdGVyCisgICAgICAgICAgICBAcmVnaXN0ZXIK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VsZgorICAgICAgICBlbmQKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0
ZT8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/CisgICAg
ICAgIHRydWUKKyAgICBlbmQKK2VuZAorCisjIEFzc2lnbiByZWdpc3RlcnMgdG8gdGVtcG9yYXJp
ZXMsIGJ5IGZpbmRpbmcgd2hpY2ggdGVtcG9yYXJpZXMgaW50ZXJmZXJlCisjIHdpdGggZWFjaCBv
dGhlci4gTm90ZSB0aGF0IHRoaXMgcmVsaWVzIG9uIHRlbXBvcmFyeSBsaXZlIHJhbmdlcyBub3Qg
Y3Jvc3NpbmcKKyMgYmFzaWMgYmxvY2sgYm91bmRhcmllcy4KKworZGVmIGFzc2lnblJlZ2lzdGVy
c1RvVGVtcG9yYXJpZXMobGlzdCwga2luZCwgcmVnaXN0ZXJzKQorICAgIGxpc3QuZWFjaF93aXRo
X2luZGV4IHsKKyAgICAgICAgfCBub2RlLCBpbmRleCB8CisgICAgICAgIG5vZGUuZmlsdGVyKFRt
cCkudW5pcS5lYWNoIHsKKyAgICAgICAgICAgIHwgdG1wIHwKKyAgICAgICAgICAgIGlmIHRtcC5r
aW5kID09IGtpbmQKKyAgICAgICAgICAgICAgICB0bXAubWVudGlvbiEgaW5kZXgKKyAgICAgICAg
ICAgIGVuZAorICAgICAgICB9CisgICAgfQorICAgIAorICAgIGZyZWVSZWdpc3RlcnMgPSByZWdp
c3RlcnMuZHVwCisgICAgbGlzdC5lYWNoX3dpdGhfaW5kZXggeworICAgICAgICB8IG5vZGUsIGlu
ZGV4IHwKKyAgICAgICAgdG1wTGlzdCA9IG5vZGUuZmlsdGVyKFRtcCkudW5pcQorICAgICAgICB0
bXBMaXN0LmVhY2ggeworICAgICAgICAgICAgfCB0bXAgfAorICAgICAgICAgICAgaWYgdG1wLmtp
bmQgPT0ga2luZCBhbmQgdG1wLmZpcnN0TWVudGlvbiA9PSBpbmRleAorICAgICAgICAgICAgICAg
IHJhaXNlICJDb3VsZCBub3QgYWxsb2NhdGUgcmVnaXN0ZXIgdG8gdGVtcG9yYXJ5IGF0ICN7bm9k
ZS5jb2RlT3JpZ2luU3RyaW5nfSIgaWYgZnJlZVJlZ2lzdGVycy5lbXB0eT8KKyAgICAgICAgICAg
ICAgICB0bXAucmVnaXN0ZXIgPSBmcmVlUmVnaXN0ZXJzLnBvcAorICAgICAgICAgICAgZW5kCisg
ICAgICAgIH0KKyAgICAgICAgdG1wTGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgdG1wIHwKKyAg
ICAgICAgICAgIGlmIHRtcC5raW5kID09IGtpbmQgYW5kIHRtcC5sYXN0TWVudGlvbiA9PSBpbmRl
eAorICAgICAgICAgICAgICAgIGZyZWVSZWdpc3RlcnMucHVzaCB0bXAucmVnaXN0ZXIKKyAgICAg
ICAgICAgICAgICByYWlzZSAiUmVnaXN0ZXIgYWxsb2NhdGlvbiBpbmNvbnNpc3RlbmN5IGF0ICN7
bm9kZS5jb2RlT3JpZ2luU3RyaW5nfSIgaWYgZnJlZVJlZ2lzdGVycy5zaXplID4gcmVnaXN0ZXJz
LnNpemUKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgfQorICAgIAorICAgIGxpc3Qu
bWFwIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgbm9kZS5yZXBsYWNlVGVtcG9yYXJpZXNX
aXRoUmVnaXN0ZXJzKGtpbmQpCisgICAgfQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9vZmZsaW5lYXNtL3BhcnNlci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTg2
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3Qi
CityZXF1aXJlICJpbnN0cnVjdGlvbnMiCityZXF1aXJlICJyZWdpc3RlcnMiCisKK2NsYXNzIFRv
a2VuCisgICAgYXR0cl9yZWFkZXIgOmNvZGVPcmlnaW4sIDpzdHJpbmcKKyAgICAKKyAgICBkZWYg
aW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBzdHJpbmcpCisgICAgICAgIEBjb2RlT3JpZ2luID0gY29k
ZU9yaWdpbgorICAgICAgICBAc3RyaW5nID0gc3RyaW5nCisgICAgZW5kCisgICAgCisgICAgZGVm
ID09KG90aGVyKQorICAgICAgICBpZiBvdGhlci5pc19hPyBUb2tlbgorICAgICAgICAgICAgQHN0
cmluZyA9PSBvdGhlci5zdHJpbmcKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQHN0cmluZyA9
PSBvdGhlcgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgPX4ob3RoZXIpCisg
ICAgICAgIEBzdHJpbmcgPX4gb3RoZXIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgdG9fcworICAg
ICAgICAiI3tAc3RyaW5nLmluc3BlY3R9IGF0IGxpbmUgI3tjb2RlT3JpZ2lufSIKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgcGFyc2VFcnJvcigqY29tbWVudCkKKyAgICAgICAgaWYgY29tbWVudC5l
bXB0eT8KKyAgICAgICAgICAgIHJhaXNlICJQYXJzZSBlcnJvcjogI3t0b19zfSIKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yOiAje3RvX3N9OiAje2NvbW1lbnRb
MF19IgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCisjCisjIFRoZSBsZXhlci4gVGFrZXMg
YSBzdHJpbmcgYW5kIHJldHVybnMgYW4gYXJyYXkgb2YgdG9rZW5zLgorIworCitkZWYgbGV4KHN0
cikKKyAgICByZXN1bHQgPSBbXQorICAgIGxpbmVOdW1iZXIgPSAxCisgICAgd2hpbGUgbm90IHN0
ci5lbXB0eT8KKyAgICAgICAgY2FzZSBzdHIKKyAgICAgICAgd2hlbiAvXEFcIyhbXlxuXSopLwor
ICAgICAgICAgICAgIyBjb21tZW50LCBpZ25vcmUKKyAgICAgICAgd2hlbiAvXEFcbi8KKyAgICAg
ICAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICAgICAgICBs
aW5lTnVtYmVyICs9IDEKKyAgICAgICAgd2hlbiAvXEFbYS16QS1aXShbYS16QS1aMC05X10qKS8K
KyAgICAgICAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICAg
IHdoZW4gL1xBXC4oW2EtekEtWjAtOV9dKikvCisgICAgICAgICAgICByZXN1bHQgPDwgVG9rZW4u
bmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAgICB3aGVuIC9cQV8oW2EtekEtWjAtOV9dKikvCisg
ICAgICAgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmKQorICAgICAgICB3
aGVuIC9cQShbIFx0XSspLworICAgICAgICAgICAgIyB3aGl0ZXNwYWNlLCBpZ25vcmUKKyAgICAg
ICAgd2hlbiAvXEEweChbMC05YS1mQS1GXSspLworICAgICAgICAgICAgcmVzdWx0IDw8IFRva2Vu
Lm5ldyhsaW5lTnVtYmVyLCAkJi5oZXgudG9fcykKKyAgICAgICAgd2hlbiAvXEEwKFswLTddKykv
CisgICAgICAgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQmLm9jdC50b19z
KQorICAgICAgICB3aGVuIC9cQShbMC05XSspLworICAgICAgICAgICAgcmVzdWx0IDw8IFRva2Vu
Lm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICAgICAgd2hlbiAvXEE6Oi8KKyAgICAgICAgICAgIHJl
c3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICAgIHdoZW4gL1xBWzosXChc
KVxbXF09XCtcLSpdLworICAgICAgICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVy
LCAkJikKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkxleGVyIGVycm9yIGF0IGxp
bmUgbnVtYmVyICN7bGluZU51bWJlcn0sIHVuZXhwZWN0ZWQgc2VxdWVuY2UgI3tzdHJbMC4uMjBd
Lmluc3BlY3R9IgorICAgICAgICBlbmQKKyAgICAgICAgc3RyID0gJH4ucG9zdF9tYXRjaAorICAg
IGVuZAorICAgIHJlc3VsdAorZW5kCisKKyMKKyMgVG9rZW4gaWRlbnRpZmljYXRpb24uCisjCisK
K2RlZiBpc1JlZ2lzdGVyKHRva2VuKQorICAgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4KK2Vu
ZAorCitkZWYgaXNJbnN0cnVjdGlvbih0b2tlbikKKyAgICB0b2tlbiA9fiBJTlNUUlVDVElPTl9Q
QVRURVJOCitlbmQKKworZGVmIGlzS2V5d29yZCh0b2tlbikKKyAgICB0b2tlbiA9fiAvXEEoKHRy
dWUpfChmYWxzZSl8KGlmKXwodGhlbil8KGVsc2UpfChlbHNpZil8KGVuZCl8KGFuZCl8KG9yKXwo
bm90KXwobWFjcm8pfChjb25zdCl8KHNpemVvZil8KGVycm9yKSlcWi8gb3IKKyAgICAgICAgdG9r
ZW4gPX4gUkVHSVNURVJfUEFUVEVSTiBvcgorICAgICAgICB0b2tlbiA9fiBJTlNUUlVDVElPTl9Q
QVRURVJOCitlbmQKKworZGVmIGlzSWRlbnRpZmllcih0b2tlbikKKyAgICB0b2tlbiA9fiAvXEFb
YS16QS1aXShbYS16QS1aMC05X10qKVxaLyBhbmQgbm90IGlzS2V5d29yZCh0b2tlbikKK2VuZAor
CitkZWYgaXNMYWJlbCh0b2tlbikKKyAgICB0b2tlbiA9fiAvXEFfKFthLXpBLVowLTlfXSopXFov
CitlbmQKKworZGVmIGlzTG9jYWxMYWJlbCh0b2tlbikKKyAgICB0b2tlbiA9fiAvXEFcLihbYS16
QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc1ZhcmlhYmxlKHRva2VuKQorICAgIGlzSWRlbnRp
Zmllcih0b2tlbikgb3IgaXNSZWdpc3Rlcih0b2tlbikKK2VuZAorCitkZWYgaXNJbnRlZ2VyKHRv
a2VuKQorICAgIHRva2VuID1+IC9cQVswLTldLworZW5kCisKKyMKKyMgVGhlIHBhcnNlci4gVGFr
ZXMgYW4gYXJyYXkgb2YgdG9rZW5zIGFuZCByZXR1cm5zIGFuIEFTVC4gTWV0aG9kcworIyBvdGhl
ciB0aGFuIHBhcnNlKHRva2VucykgYXJlIG5vdCBmb3IgcHVibGljIGNvbnN1bXB0aW9uLgorIwor
CitjbGFzcyBQYXJzZXIKKyAgICBkZWYgaW5pdGlhbGl6ZSh0b2tlbnMpCisgICAgICAgIEB0b2tl
bnMgPSB0b2tlbnMKKyAgICAgICAgQGlkeCA9IDAKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFy
c2VFcnJvcigqY29tbWVudCkKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XQorICAgICAgICAgICAg
QHRva2Vuc1tAaWR4XS5wYXJzZUVycm9yKCpjb21tZW50KQorICAgICAgICBlbHNlCisgICAgICAg
ICAgICBpZiBjb21tZW50LmVtcHR5PworICAgICAgICAgICAgICAgIHJhaXNlICJQYXJzZSBlcnJv
ciBhdCBlbmQgb2YgZmlsZSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByYWlz
ZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZpbGU6ICN7Y29tbWVudFswXX0iCisgICAgICAgICAg
ICBlbmQKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIGNvbnN1bWUocmVnZXhw
KQorICAgICAgICBpZiByZWdleHAKKyAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tl
bnNbQGlkeF0gPX4gcmVnZXhwCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNlRXJyb3Ig
dW5sZXNzIEBpZHggPT0gQHRva2Vucy5sZW5ndGgKKyAgICAgICAgZW5kCisgICAgICAgIEBpZHgg
Kz0gMQorICAgIGVuZAorICAgIAorICAgIGRlZiBza2lwTmV3TGluZQorICAgICAgICB3aGlsZSBA
dG9rZW5zW0BpZHhdID09ICJcbiIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICBlbmQK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VQcmVkaWNhdGVBdG9tCisgICAgICAgIGlmIEB0
b2tlbnNbQGlkeF0gPT0gIm5vdCIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAg
cGFyc2VQcmVkaWNhdGVBdG9tCisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisg
ICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAg
ICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZQorICAgICAgICAgICAgcGFyc2VFcnJvciB1bmxlc3Mg
QHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAg
cmVzdWx0CisgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gInRydWUiCisgICAgICAgICAg
ICByZXN1bHQgPSBUcnVlLmluc3RhbmNlCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
ICAgIHJlc3VsdAorICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJmYWxzZSIKKyAgICAg
ICAgICAgIHJlc3VsdCA9IEZhbHNlLmluc3RhbmNlCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNpZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4
XQorICAgICAgICAgICAgcmVzdWx0ID0gU2V0dGluZy5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXJzZUVycm9yCisg
ICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBwYXJzZVByZWRpY2F0ZUFuZAorICAg
ICAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgICAgd2hpbGUgQHRva2Vuc1tA
aWR4XSA9PSAiYW5kIgorICAgICAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29k
ZU9yaWdpbgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICAgICAgcmlnaHQgPSBwYXJzZVByZWRpY2F0ZUF0b20KKyAgICAgICAgICAgIHJlc3Vs
dCA9IEFuZC5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdodCkKKyAgICAgICAgZW5kCisgICAg
ICAgIHJlc3VsdAorICAgIGVuZAorICAgIAorICAgIGRlZiBwYXJzZVByZWRpY2F0ZQorICAgICAg
ICAjIHNvbWUgZXhhbXBsZXMgb2YgcHJlY2VkZW5jZToKKyAgICAgICAgIyBub3QgYSBhbmQgYiAt
PiAobm90IGEpIGFuZCBiCisgICAgICAgICMgYSBhbmQgYiBvciBjIC0+IChhIGFuZCBiKSBvciBj
CisgICAgICAgICMgYSBvciBiIGFuZCBjIC0+IGEgb3IgKGIgYW5kIGMpCisgICAgICAgIAorICAg
ICAgICByZXN1bHQgPSBwYXJzZVByZWRpY2F0ZUFuZAorICAgICAgICB3aGlsZSBAdG9rZW5zW0Bp
ZHhdID09ICJvciIKKyAgICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVP
cmlnaW4KKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAg
ICAgICAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNhdGVBbmQKKyAgICAgICAgICAgIHJlc3VsdCA9
IE9yLm5ldyhjb2RlT3JpZ2luLCByZXN1bHQsIHJpZ2h0KQorICAgICAgICBlbmQKKyAgICAgICAg
cmVzdWx0CisgICAgZW5kCisgICAgCisgICAgZGVmIHBhcnNlVmFyaWFibGUKKyAgICAgICAgaWYg
aXNSZWdpc3RlcihAdG9rZW5zW0BpZHhdKQorICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9
fiBGUFJfUEFUVEVSTgorICAgICAgICAgICAgICAgIHJlc3VsdCA9IEZQUmVnaXN0ZXJJRC5mb3JO
YW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gUmVnaXN0ZXJJRC5mb3JOYW1l
KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAg
ICAgICBlbmQKKyAgICAgICAgZWxzaWYgaXNJZGVudGlmaWVyKEB0b2tlbnNbQGlkeF0pCisgICAg
ICAgICAgICByZXN1bHQgPSBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdp
biwgQHRva2Vuc1tAaWR4XS5zdHJpbmcpCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHBhcnNl
RXJyb3IKKyAgICAgICAgZW5kCisgICAgICAgIEBpZHggKz0gMQorICAgICAgICByZXN1bHQKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VBZGRyZXNzKG9mZnNldCkKKyAgICAgICAgcGFyc2VF
cnJvciB1bmxlc3MgQHRva2Vuc1tAaWR4XSA9PSAiWyIKKyAgICAgICAgY29kZU9yaWdpbiA9IEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAKKyAgICAgICAgIyBUaHJlZSBwb3NzaWJp
bGl0aWVzOgorICAgICAgICAjIFtdICAgICAgIC0+IEFic29sdXRlQWRkcmVzcworICAgICAgICAj
IFthXSAgICAgIC0+IEFkZHJlc3MKKyAgICAgICAgIyBbYSxiXSAgICAtPiBCYXNlSW5kZXggd2l0
aCBzY2FsZSA9IDEKKyAgICAgICAgIyBbYSxiLGNdICAtPiBCYXNlSW5kZXgKKyAgICAgICAgCisg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICByZXR1cm4gQWJzb2x1dGVBZGRyZXNzLm5ldyhj
b2RlT3JpZ2luLCBvZmZzZXQpCisgICAgICAgIGVuZAorICAgICAgICBhID0gcGFyc2VWYXJpYWJs
ZQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICAgICAgcmVzdWx0ID0g
QWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgYSwgb2Zmc2V0KQorICAgICAgICBlbHNlCisgICAgICAg
ICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgICAg
QGlkeCArPSAxCisgICAgICAgICAgICBiID0gcGFyc2VWYXJpYWJsZQorICAgICAgICAgICAgaWYg
QHRva2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBCYXNlSW5kZXgu
bmV3KGNvZGVPcmlnaW4sIGEsIGIsIDEsIG9mZnNldCkKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAg
ICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIFsi
MSIsICIyIiwgIjQiLCAiOCJdLm1lbWJlcj8gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAg
ICAgICAgICBjID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcudG9faQorICAgICAgICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0g
PT0gIl0iCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2lu
LCBhLCBiLCBjLCBvZmZzZXQpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAgICAg
IEBpZHggKz0gMQorICAgICAgICByZXN1bHQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VD
b2xvbkNvbG9uCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9r
ZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJZGVudGlm
aWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgbmFtZXMgPSBbQHRva2Vuc1tAaWR4XS5zdHJpbmdd
CisgICAgICAgIEBpZHggKz0gMQorICAgICAgICB3aGlsZSBAdG9rZW5zW0BpZHhdID09ICI6OiIK
KyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgaXNJ
ZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAgIG5hbWVzIDw8IEB0b2tlbnNbQGlk
eF0uc3RyaW5nCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgZW5kCisgICAgICAgIHJh
aXNlIGlmIG5hbWVzLmVtcHR5PworICAgICAgICBbY29kZU9yaWdpbiwgbmFtZXNdCisgICAgZW5k
CisgICAgCisgICAgZGVmIHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICAgICAgc2tpcE5ld0xpbmUK
KyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAgICAgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICAgICAgTmVnSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2lu
LCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIo
IgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICByZXN1bHQgPSBwYXJzZUV4cHJl
c3Npb24KKyAgICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIiki
CisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNp
ZiBpc0ludGVnZXIgQHRva2Vuc1tAaWR4XQorICAgICAgICAgICAgcmVzdWx0ID0gSW1tZWRpYXRl
Lm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nLnRvX2kp
CisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNp
ZiBpc0lkZW50aWZpZXIgQHRva2Vuc1tAaWR4XQorICAgICAgICAgICAgY29kZU9yaWdpbiwgbmFt
ZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgICAgICAgIGlmIG5hbWVzLnNpemUgPiAxCisgICAg
ICAgICAgICAgICAgU3RydWN0T2Zmc2V0LmZvckZpZWxkKGNvZGVPcmlnaW4sIG5hbWVzWzAuLi0y
XS5qb2luKCc6OicpLCBuYW1lc1stMV0pCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgVmFyaWFibGUuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lc1swXSkKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICBlbHNpZiBpc1JlZ2lzdGVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAgIHBh
cnNlVmFyaWFibGUKKyAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAic2l6ZW9mIgorICAg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBjb2RlT3JpZ2luLCBuYW1lcyA9IHBhcnNl
Q29sb25Db2xvbgorICAgICAgICAgICAgU2l6ZW9mLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZXMu
am9pbignOjonKSkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VFcnJvcgorICAgICAg
ICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VFeHByZXNzaW9uTXVsCisgICAgICAg
IHNraXBOZXdMaW5lCisgICAgICAgIHJlc3VsdCA9IHBhcnNlRXhwcmVzc2lvbkF0b20KKyAgICAg
ICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKiIKKyAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlk
eF0gPT0gIioiCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgcmVz
dWx0ID0gTXVsSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcmVz
dWx0LCBwYXJzZUV4cHJlc3Npb25BdG9tKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHJhaXNlCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAgICAgIHJlc3VsdAor
ICAgIGVuZAorICAgIAorICAgIGRlZiBjb3VsZEJlRXhwcmVzc2lvbgorICAgICAgICBAdG9rZW5z
W0BpZHhdID09ICItIiBvciBAdG9rZW5zW0BpZHhdID09ICJzaXplb2YiIG9yIGlzSW50ZWdlcihA
dG9rZW5zW0BpZHhdKSBvciBpc1ZhcmlhYmxlKEB0b2tlbnNbQGlkeF0pIG9yIEB0b2tlbnNbQGlk
eF0gPT0gIigiCisgICAgZW5kCisgICAgCisgICAgZGVmIHBhcnNlRXhwcmVzc2lvbgorICAgICAg
ICBza2lwTmV3TGluZQorICAgICAgICByZXN1bHQgPSBwYXJzZUV4cHJlc3Npb25NdWwKKyAgICAg
ICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiKyIgb3IgQHRva2Vuc1tAaWR4XSA9PSAiLSIKKyAg
ICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIisiCisgICAgICAgICAgICAgICAgQGlkeCAr
PSAxCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gQWRkSW1tZWRpYXRlcy5uZXcoQHRva2Vuc1tA
aWR4IC0gMV0uY29kZU9yaWdpbiwgcmVzdWx0LCBwYXJzZUV4cHJlc3Npb25NdWwpCisgICAgICAg
ICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICItIgorICAgICAgICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IFN1YkltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlk
eCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uTXVsKQorICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBlbmQKKyAgICAgICAg
ZW5kCisgICAgICAgIHJlc3VsdAorICAgIGVuZAorICAgIAorICAgIGRlZiBwYXJzZU9wZXJhbmQo
Y29tbWVudCkKKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgaWYgY291bGRCZUV4cHJlc3Np
b24KKyAgICAgICAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24KKyAgICAgICAgICAgIGlmIEB0
b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgICAgICAgICAgcGFyc2VBZGRyZXNzKGV4cHIpCisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZXhwcgorICAgICAgICAgICAgZW5kCisg
ICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlsiCisgICAgICAgICAgICBwYXJzZUFkZHJl
c3MoSW1tZWRpYXRlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIDApKQorICAgICAgICBl
bHNpZiBpc0xhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAgIHJlc3VsdCA9IExhYmVsUmVm
ZXJlbmNlLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIExhYmVsLmZvck5hbWUoQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICAgICAgICBA
aWR4ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNpZiBpc0xvY2FsTGFiZWwg
QHRva2Vuc1tAaWR4XQorICAgICAgICAgICAgcmVzdWx0ID0gTG9jYWxMYWJlbFJlZmVyZW5jZS5u
ZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBMb2NhbExhYmVsLmZvck5hbWUoQHRva2Vuc1tA
aWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykpCisgICAgICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNlCisgICAgICAgICAgICBwYXJz
ZUVycm9yKGNvbW1lbnQpCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBwYXJz
ZU1hY3JvVmFyaWFibGVzCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGNvbnN1bWUoL1xB
XChcWi8pCisgICAgICAgIHZhcmlhYmxlcyA9IFtdCisgICAgICAgIGxvb3AgeworICAgICAgICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAg
ICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAg
IGVsc2lmIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICAgICAgICAgIHZhcmlh
YmxlcyA8PCBWYXJpYWJsZS5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vu
c1tAaWR4XS5zdHJpbmcpCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAg
ICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgor
ICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsK
KyAgICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICIsIgorICAgICAgICAgICAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIHBhcnNlRXJyb3IKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBwYXJzZUVycm9yCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAg
ICAgICB2YXJpYWJsZXMKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VTZXF1ZW5jZShmaW5h
bCwgY29tbWVudCkKKyAgICAgICAgZmlyc3RDb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgICAgIGxpc3QgPSBbXQorICAgICAgICBsb29wIHsKKyAgICAgICAgICAgIGlm
IChAaWR4ID09IEB0b2tlbnMubGVuZ3RoIGFuZCBub3QgZmluYWwpIG9yIChmaW5hbCBhbmQgQHRv
a2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAgICAgICAgIyBpZ25vcmUKKyAg
ICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0g
PT0gImNvbnN0IgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHBh
cnNlRXJyb3IgdW5sZXNzIGlzVmFyaWFibGUgQHRva2Vuc1tAaWR4XQorICAgICAgICAgICAgICAg
IHZhcmlhYmxlID0gVmFyaWFibGUuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0
b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
ICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIj0iCisgICAgICAgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJzZU9wZXJhbmQoIndo
aWxlIGluc2lkZSBvZiBjb25zdCAje3ZhcmlhYmxlLm5hbWV9IikKKyAgICAgICAgICAgICAgICBs
aXN0IDw8IENvbnN0RGVjbC5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCB2YXJpYWJsZSwg
dmFsdWUpCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJlcnJvciIKKyAgICAg
ICAgICAgICAgICBsaXN0IDw8IEVycm9yLm5ldyhAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4pCisg
ICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICJpZiIKKyAgICAgICAgICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2Rl
T3JpZ2luCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgc2tpcE5l
d0xpbmUKKyAgICAgICAgICAgICAgICBwcmVkaWNhdGUgPSBwYXJzZVByZWRpY2F0ZQorICAgICAg
ICAgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgICAgICAgICBz
a2lwTmV3TGluZQorICAgICAgICAgICAgICAgIGlmVGhlbkVsc2UgPSBJZlRoZW5FbHNlLm5ldyhj
b2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwoZW5kKXwoZWxz
aWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKSkKKyAg
ICAgICAgICAgICAgICBsaXN0IDw8IGlmVGhlbkVsc2UKKyAgICAgICAgICAgICAgICB3aGlsZSBA
dG9rZW5zW0BpZHhdID09ICJlbHNpZiIKKyAgICAgICAgICAgICAgICAgICAgY29kZU9yaWdpbiA9
IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEK
KyAgICAgICAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgICAgICAgcHJl
ZGljYXRlID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgICAgICAgICAgICAgY29uc3VtZSgvXEEo
KHRoZW4pfChcbikpXFovKQorICAgICAgICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAg
ICAgICAgICAgICAgICBlbHNlQ2FzZSA9IElmVGhlbkVsc2UubmV3KGNvZGVPcmlnaW4sIHByZWRp
Y2F0ZSwgcGFyc2VTZXF1ZW5jZSgvXEEoKGVsc2UpfChlbmQpfChlbHNpZikpXFovLCAid2hpbGUg
aW5zaWRlIG9mIFwiaWYgI3twcmVkaWNhdGUuZHVtcH1cIiIpKQorICAgICAgICAgICAgICAgICAg
ICBpZlRoZW5FbHNlLmVsc2VDYXNlID0gZWxzZUNhc2UKKyAgICAgICAgICAgICAgICAgICAgaWZU
aGVuRWxzZSA9IGVsc2VDYXNlCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAg
aWYgQHRva2Vuc1tAaWR4XSA9PSAiZWxzZSIKKyAgICAgICAgICAgICAgICAgICAgQGlkeCArPSAx
CisgICAgICAgICAgICAgICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2UgPSBwYXJzZVNlcXVlbmNl
KC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBlbHNlIGNhc2UgZm9yIFwiaWYgI3twcmVkaWNh
dGUuZHVtcH1cIiIpCisgICAgICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tA
aWR4XSA9PSAiZW5kIgorICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAg
ICAgICBlbmQKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgorICAg
ICAgICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAg
ICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAg
ICAgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllcihAdG9rZW5zW0BpZHhdKQor
ICAgICAgICAgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICAgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHZhcmlhYmxlcyA9IHBhcnNlTWFjcm9WYXJp
YWJsZXMKKyAgICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3
aGlsZSBpbnNpZGUgb2YgbWFjcm8gI3tuYW1lfSIpCisgICAgICAgICAgICAgICAgQGlkeCArPSAx
CisgICAgICAgICAgICAgICAgbGlzdCA8PCBNYWNyby5uZXcoY29kZU9yaWdpbiwgbmFtZSwgdmFy
aWFibGVzLCBib2R5KQorICAgICAgICAgICAgZWxzaWYgaXNJbnN0cnVjdGlvbiBAdG9rZW5zW0Bp
ZHhdCisgICAgICAgICAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdp
bgorICAgICAgICAgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICAg
ICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGlmIChub3QgZmluYWwgYW5kIEBpZHgg
PT0gQHRva2Vucy5zaXplKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisg
ICAgICAgICAgICAgICAgICAgICMgWmVybyBvcGVyYW5kIGluc3RydWN0aW9uLCBhbmQgaXQncyB0
aGUgbGFzdCBvbmUuCisgICAgICAgICAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3
KGNvZGVPcmlnaW4sIG5hbWUsIFtdKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAg
ICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICAgICAgICAg
ICAjIFplcm8gb3BlcmFuZCBpbnN0cnVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgbGlzdCA8
PCBJbnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgW10pCisgICAgICAgICAgICAgICAg
ICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
IyBJdCdzIGRlZmluaXRlbHkgYW4gaW5zdHJ1Y3Rpb24sIGFuZCBpdCBoYXMgYXQgbGVhc3Qgb25l
IG9wZXJhbmQuCisgICAgICAgICAgICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICAg
ICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9IGZhbHNlCisgICAgICAgICAgICAgICAgICAgIGxvb3Ag
eworICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5kKCJ3aGls
ZSBpbnNpZGUgb2YgaW5zdHJ1Y3Rpb24gI3tuYW1lfSIpCisgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBA
dG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhl
IGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24gYW5kIG9mIHRoZSBzZXF1ZW5jZS4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBlbmRPZlNlcXVlbmNlID0gdHJ1ZQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0Bp
ZHhdID09ICIsIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSGFzIGFub3RoZXIgb3Bl
cmFuZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICMgVGhlIGVuZCBvZiB0aGUgaW5zdHJ1Y3Rpb24uCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwYXJzZUVycm9yKCJFeHBlY3RlZCBhIGNvbW1hLCBuZXdsaW5lLCBvciAje2ZpbmFsfSBh
ZnRlciAje29wZXJhbmRzLmxhc3QuZHVtcH0iKQorICAgICAgICAgICAgICAgICAgICAgICAgZW5k
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbGlzdCA8PCBJbnN0
cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgICAgICAgICAg
ICAgIGlmIGVuZE9mU2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAg
ICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgZWxz
aWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAgICAgICBjb2RlT3JpZ2lu
ID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgICAgICAgbmFtZSA9IEB0b2tl
bnNbQGlkeF0uc3RyaW5nCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAg
ICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgICAgICAgICAgICAgICAgIyBNYWNybyBp
bnZvY2F0aW9uLgorICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAg
ICAgICAgb3BlcmFuZHMgPSBbXQorICAgICAgICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAg
ICAgICAgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAgICAg
ICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGxvb3AgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBOZXdM
aW5lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAibWFj
cm8iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgSXQncyBhIG1hY3JvIGxhbWJk
YSEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZU9yaWdpbklubmVyID0gQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPSBwYXJz
ZU1hY3JvVmFyaWFibGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBw
YXJzZVNlcXVlbmNlKC9cQWVuZFxaLywgIndoaWxlIGluc2lkZSBvZiBhbm9ueW1vdXMgbWFjcm8g
cGFzc2VkIGFzIGFyZ3VtZW50IHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmFu
ZHMgPDwgTWFjcm8ubmV3KGNvZGVPcmlnaW5Jbm5lciwgbmlsLCB2YXJpYWJsZXMsIGJvZHkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcGVyYW5kcyA8PCBwYXJzZU9wZXJhbmQoIndoaWxlIGluc2lkZSBvZiBtYWNybyBj
YWxsIHRvICN7bmFtZX0iKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUVy
cm9yICJVbmV4cGVjdGVkICN7QHRva2Vuc1tAaWR4XS5zdHJpbmcuaW5zcGVjdH0gd2hpbGUgcGFy
c2luZyBpbnZvY2F0aW9uIG9mIG1hY3JvICN7bmFtZX0iCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZW5kCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IGVuZAorICAgICAgICAgICAgICAgICAgICBsaXN0IDw8IE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdp
biwgbmFtZSwgb3BlcmFuZHMpCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICBwYXJzZUVycm9yICJFeHBlY3RlZCBcIihcIiBhZnRlciAje25hbWV9IgorICAgICAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdIG9yIGlz
TG9jYWxMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAgICAgICAgICAgICAgY29kZU9yaWdpbiA9IEB0
b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgIG5hbWUgPSBAdG9rZW5zW0Bp
ZHhdLnN0cmluZworICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHBh
cnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIjoiCisgICAgICAgICAgICAgICAgIyBJ
dCdzIGEgbGFiZWwuCisgICAgICAgICAgICAgICAgaWYgaXNMYWJlbCBuYW1lCisgICAgICAgICAg
ICAgICAgICAgIGxpc3QgPDwgTGFiZWwuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbGlzdCA8PCBMb2NhbExhYmVsLmZv
ck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwYXJzZUVy
cm9yICJFeHBlY3RpbmcgdGVybWluYWwgI3tmaW5hbH0gI3tjb21tZW50fSIKKyAgICAgICAgICAg
IGVuZAorICAgICAgICB9CisgICAgICAgIFNlcXVlbmNlLm5ldyhmaXJzdENvZGVPcmlnaW4sIGxp
c3QpCisgICAgZW5kCitlbmQKKworZGVmIHBhcnNlKHRva2VucykKKyAgICBwYXJzZXIgPSBQYXJz
ZXIubmV3KHRva2VucykKKyAgICBwYXJzZXIucGFyc2VTZXF1ZW5jZShuaWwsICIiKQorZW5kCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3JlZ2lzdGVycy5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3RlcnMucmIJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9yZWdpc3Rl
cnMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKK0dQUlMgPQorICAgIFsKKyAgICAgInQwIiwKKyAgICAgInQxIiwK
KyAgICAgInQyIiwKKyAgICAgInQzIiwKKyAgICAgInQ0IiwKKyAgICAgImNmciIsCisgICAgICJh
MCIsCisgICAgICJhMSIsCisgICAgICJyMCIsCisgICAgICJyMSIsCisgICAgICJzcCIsCisgICAg
ICJsciIKKyAgICBdCisKK0ZQUlMgPQorICAgIFsKKyAgICAgImZ0MCIsCisgICAgICJmdDEiLAor
ICAgICAiZnQyIiwKKyAgICAgImZ0MyIsCisgICAgICJmdDQiLAorICAgICAiZnQ1IiwKKyAgICAg
ImZhMCIsCisgICAgICJmYTEiLAorICAgICAiZmEyIiwKKyAgICAgImZhMyIsCisgICAgICJmciIK
KyAgICBdCisKK1JFR0lTVEVSUyA9IEdQUlMgKyBGUFJTCisKK0dQUl9QQVRURVJOID0gUmVnZXhw
Lm5ldygnXFxBKCgnICsgR1BSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCitGUFJfUEFUVEVSTiA9
IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEZQUlMuam9pbignKXwoJykgKyAnKSlcXFonKQorCitSRUdJ
U1RFUl9QQVRURVJOID0gUmVnZXhwLm5ldygnXFxBKCgnICsgUkVHSVNURVJTLmpvaW4oJyl8KCcp
ICsgJykpXFxaJykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NlbGZf
aGFzaC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9z
ZWxmX2hhc2gucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGlu
ZWFzbS9zZWxmX2hhc2gucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDYgQEAKKyMgQ29weXJp
Z2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImRpZ2VzdC9zaGExIgorcmVx
dWlyZSAicGF0aG5hbWUiCisKKyMKKyMgc2VsZkhhc2ggLT4gU0hBMSBoZXhkaWdlc3QKKyMKKyMg
UmV0dXJucyBhIGhhc2ggb2YgdGhlIG9mZmxpbmVhc20gc291cmNlIGNvZGUuIFRoaXMgYWxsb3dz
IGRlcGVuZGVuY3kKKyMgdHJhY2tpbmcgZm9yIG5vdCBqdXN0IGNoYW5nZXMgaW4gaW5wdXQsIGJ1
dCBhbHNvIGNoYW5nZXMgaW4gdGhlIGFzc2VtYmxlcgorIyBpdHNlbGYuCisjCisKK2RlZiBzZWxm
SGFzaAorICAgIGNvbnRlbnRzID0gIiIKKyAgICBteVBhdGggPSBQYXRobmFtZS5uZXcoX19GSUxF
X18pLmRpcm5hbWUKKyAgICBEaXIuZm9yZWFjaChteVBhdGgpIHsKKyAgICAgICAgfCBlbnRyeSB8
CisgICAgICAgIGlmIGVudHJ5ID1+IC9cLnJiJC8KKyAgICAgICAgICAgIGNvbnRlbnRzICs9IElP
OjpyZWFkKG15UGF0aCArIGVudHJ5KQorICAgICAgICBlbmQKKyAgICB9CisgICAgcmV0dXJuIERp
Z2VzdDo6U0hBMS5oZXhkaWdlc3QoY29udGVudHMpCitlbmQKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0dGluZ3MucmIJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9zZXR0aW5ncy5yYgkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyMDUgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3Jl
cXVpcmUgImFzdCIKK3JlcXVpcmUgImJhY2tlbmRzIgorcmVxdWlyZSAicGFyc2VyIgorcmVxdWly
ZSAidHJhbnNmb3JtIgorCisjCisjIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIC0+
IHNldHRpbmdzQ29tYmlhdGlvbnMKKyMKKyMgQ29tcHV0ZXMgYW4gYXJyYXkgb2Ygc2V0dGluZ3Mg
bWFwcywgd2hlcmUgYSBzZXR0aW5ncyBtYXAgY29uc3RpdHV0ZXMKKyMgYSBjb25maWd1cmF0aW9u
IGZvciB0aGUgYXNzZW1ibHkgY29kZSBiZWluZyBnZW5lcmF0ZWQuIFRoZSBtYXAKKyMgY29udGFp
bnMga2V5IHZhbHVlIHBhaXJzIHdoZXJlIGtleXMgYXJlIHNldHRpbmdzIG5hbWVzIChzdHJpbmdz
KSBhbmQKKyMgdGhlIHZhbHVlcyBhcmUgYm9vbGVhbnMgKHRydWUgZm9yIGVuYWJsZWQsIGZhbHNl
IGZvciBkaXNhYmxlZCkuCisjCisKK2RlZiBjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0
KQorICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gW10KKyAgICAKKyAgICBkZWYgc2V0dGluZ3ND
b21iaW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBtYXBTb0ZhciwgcmVtYWluaW5nKQorICAg
ICAgICBpZiByZW1haW5pbmcuZW1wdHk/CisgICAgICAgICAgICBzZXR0aW5nc0NvbWJpbmF0aW9u
cyA8PCBtYXBTb0ZhcgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGVuZAorICAgICAgICAK
KyAgICAgICAgbmV3TWFwID0gbWFwU29GYXIuZHVwCisgICAgICAgIG5ld01hcFtyZW1haW5pbmdb
MF1dID0gdHJ1ZQorICAgICAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlv
bnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgICAgICAgCisgICAgICAgIG5ld01hcCA9
IG1hcFNvRmFyLmR1cAorICAgICAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IGZhbHNlCisgICAg
ICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywgbmV3TWFwLCByZW1h
aW5pbmdbMS4uLTFdKQorICAgIGVuZAorICAgIAorICAgIHNldHRpbmdzQ29tYmluYXRvcihzZXR0
aW5nc0NvbWJpbmF0aW9ucywge30sIChhc3QuZmlsdGVyKFNldHRpbmcpLnVuaXEuY29sbGVjdHt8
dnwgdi5uYW1lfSArIFsiWDg2IiwgIkFSTXY3Il0pLnVuaXEpCisgICAgCisgICAgc2V0dGluZ3ND
b21iaW5hdGlvbnMKK2VuZAorCisjCisjIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFz
dCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8IC4u
LiB9CisjCisjIERldGVybWluZXMgaWYgdGhlIHNldHRpbmdzIGNvbWJpbmF0aW9uIGlzIHZhbGlk
LCBhbmQgaWYgc28sIGNhbGxzCisjIHRoZSBibG9jayB3aXRoIHRoZSBpbmZvcm1hdGlvbiB5b3Ug
bmVlZCB0byBnZW5lcmF0ZSBjb2RlLgorIworCitkZWYgZm9yU2V0dGluZ3MoY29uY3JldGVTZXR0
aW5ncywgYXN0KQorICAgICMgQ2hlY2sgd2hpY2ggYXJjaGl0ZWN0dXJlcyB0aGlzIGNvbWJpbmF0
b3IgY2xhaW1zIHRvIHN1cHBvcnQuCisgICAgbnVtQ2xhaW1lZEJhY2tlbmRzID0gMAorICAgIHNl
bGVjdGVkQmFja2VuZCA9IG5pbAorICAgIEJBQ0tFTkRTLmVhY2ggeworICAgICAgICB8IGJhY2tl
bmQgfAorICAgICAgICBpc1N1cHBvcnRlZCA9IGNvbmNyZXRlU2V0dGluZ3NbYmFja2VuZF0KKyAg
ICAgICAgcmFpc2UgdW5sZXNzIGlzU3VwcG9ydGVkICE9IG5pbAorICAgICAgICBudW1DbGFpbWVk
QmFja2VuZHMgKz0gaWYgaXNTdXBwb3J0ZWQgdGhlbiAxIGVsc2UgMCBlbmQKKyAgICAgICAgaWYg
aXNTdXBwb3J0ZWQKKyAgICAgICAgICAgIHNlbGVjdGVkQmFja2VuZCA9IGJhY2tlbmQKKyAgICAg
ICAgZW5kCisgICAgfQorICAgIAorICAgIHJldHVybiBpZiBudW1DbGFpbWVkQmFja2VuZHMgPiAx
CisgICAgCisgICAgIyBSZXNvbHZlIHRoZSBBU1QgZG93biB0byBhIGxvdy1sZXZlbCBmb3JtIChu
byBtYWNyb3Mgb3IgY29uZGl0aW9uYWxzKS4KKyAgICBsb3dMZXZlbEFTVCA9IGFzdC5yZXNvbHZl
U2V0dGluZ3MoY29uY3JldGVTZXR0aW5ncykKKyAgICAKKyAgICB5aWVsZCBjb25jcmV0ZVNldHRp
bmdzLCBsb3dMZXZlbEFTVCwgc2VsZWN0ZWRCYWNrZW5kCitlbmQKKworIworIyBmb3JFYWNoVmFs
aWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBh
c3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0KKyMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21i
aW5hdGlvbihhc3QsIHNldHRpbmdzQ29tYmluYXRpb25zKSB7CisjICAgICB8IGNvbmNyZXRlU2V0
dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfCAuLi4gfQorIworIyBFeGVjdXRlcyB0aGUgZ2l2
ZW4gYmxvY2sgZm9yIGVhY2ggdmFsaWQgc2V0dGluZ3MgY29tYmluYXRpb24gaW4gdGhlCisjIHNl
dHRpbmdzIG1hcC4gVGhlIGFzdCBwYXNzZWQgaW50byB0aGUgYmxvY2sgaXMgcmVzb2x2ZWQKKyMg
KGFzdC5yZXNvbHZlKSBhZ2FpbnN0IHRoZSBzZXR0aW5ncy4KKyMKKyMgVGhlIGZpcnN0IGZvcm0g
d2lsbCBjYWxsIGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpIGZvciB5b3UuCisjCisK
K2RlZiBmb3JFYWNoVmFsaWRTZXR0aW5nc0NvbWJpbmF0aW9uKGFzdCwgKm9wdGlvbmFsU2V0dGlu
Z3NDb21iaW5hdGlvbnMpCisgICAgcmFpc2UgaWYgb3B0aW9uYWxTZXR0aW5nc0NvbWJpbmF0aW9u
cy5zaXplID4gMQorICAgIAorICAgIGlmIG9wdGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuZW1w
dHk/CisgICAgICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gY29tcHV0ZVNldHRpbmdzQ29tYmlu
YXRpb25zKGFzdCkKKyAgICBlbHNlCisgICAgICAgIHNldHRpbmdzQ29tYmluYXRpb25zID0gb3B0
aW9uYWxTZXR0aW5nc0NvbWJpYXRpb25zWzBdCisgICAgZW5kCisgICAgCisgICAgc2V0dGluZ3ND
b21iaW5hdGlvbnMuZWFjaF93aXRoX2luZGV4IHsKKyAgICAgICAgfCBjb25jcmV0ZVNldHRpbmdz
LCBpbmRleCB8CisgICAgICAgIGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkgewor
ICAgICAgICAgICAgfCBjb25jcmV0ZVNldHRpbmdzXywgbG93TGV2ZWxBU1QsIGJhY2tlbmQgfAor
ICAgICAgICAgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQs
IGluZGV4CisgICAgICAgIH0KKyAgICB9CitlbmQKKworIworIyBjcHBTZXR0aW5nc1Rlc3QoY29u
Y3JldGVTZXR0aW5ncykKKyMKKyMgUmV0dXJucyB0aGUgQysrIGNvZGUgdXNlZCB0byB0ZXN0IGlm
IHdlIGFyZSBpbiBhIGNvbmZpZ3VyYXRpb24gdGhhdAorIyBjb3JyZXNwb25kcyB0byB0aGUgZ2l2
ZW4gY29uY3JldGUgc2V0dGluZ3MuCisjCisKK2RlZiBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVT
ZXR0aW5ncykKKyAgICAiI2lmICIgKyBjb25jcmV0ZVNldHRpbmdzLnRvX2EuY29sbGVjdHsKKyAg
ICAgICAgfCBwYWlyIHwKKyAgICAgICAgKGlmIHBhaXJbMV0KKyAgICAgICAgICAgICAiIgorICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICIhIgorICAgICAgICAgZW5kKSArICJPRkZMSU5FX0FT
TV8iICsgcGFpclswXQorICAgIH0uam9pbigiICYmICIpCitlbmQKKworIworIyBpc0FTVEVycm9u
ZW91cyhhc3QpCisjCisjIFRlc3RzIHRvIHNlZSBpZiB0aGUgQVNUIGNsYWltcyB0aGF0IHRoZXJl
IGlzIGFuIGVycm9yIC0gaS5lLiBpZiB0aGUKKyMgdXNlcidzIGNvZGUsIGFmdGVyIHNldHRpbmdz
IHJlc29sdXRpb24sIGhhcyBFcnJvciBub2Rlcy4KKyMKKworZGVmIGlzQVNURXJyb25lb3VzKGFz
dCkKKyAgICBub3QgYXN0LmZpbHRlcihFcnJvcikuZW1wdHk/CitlbmQKKworIworIyBhc3NlcnRD
b25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisjCisjIEVtaXRzIGEgY2hlY2sgdGhhdCBh
c3NlcnRzIHRoYXQgd2UncmUgdXNpbmcgdGhlIGdpdmVuIGNvbmZpZ3VyYXRpb24uCisjCisKK2Rl
ZiBhc3NlcnRDb25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MpCisgICAgJG91dHB1dC5wdXRz
IGNwcFNldHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAgICRvdXRwdXQucHV0cyAiI2Vs
c2UiCisgICAgJG91dHB1dC5wdXRzICIjZXJyb3IgXCJDb25maWd1cmF0aW9uIG1pc21hdGNoLlwi
IgorICAgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMKKyMgZW1pdENvZGVJbkNvbmZp
Z3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kKSB7CisjICAgICB8IGNvbmNy
ZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCB8IC4uLiB9CisjCisjIEVtaXRzIGFsbCByZWxldmFu
dCBndWFyZHMgdG8gc2VlIGlmIHRoZSBjb25maWd1cmF0aW9uIGhvbGRzIGFuZAorIyBjYWxscyB0
aGUgYmxvY2sgaWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGVycm9uZW91cy4KKyMKKworZGVm
IGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCkK
KyAgICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICAg
CisgICAgaWYgaXNBU1RFcnJvbmVvdXMoYXN0KQorICAgICAgICAkb3V0cHV0LnB1dHMgIiNlcnJv
ciBcIkludmFsaWQgY29uZmlndXJhdGlvbi5cIiIKKyAgICBlbHNpZiBub3QgV09SS0lOR19CQUNL
RU5EUy5pbmNsdWRlPyBiYWNrZW5kCisgICAgICAgICRvdXRwdXQucHV0cyAiI2Vycm9yIFwiVGhp
cyBiYWNrZW5kIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LlwiIgorICAgIGVsc2UKKyAgICAgICAgeWll
bGQgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kCisgICAgZW5kCisgICAgCisgICAgJG91
dHB1dC5wdXRzICIjZW5kaWYiCitlbmQKKworIworIyBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlv
bnMoYXN0KSB7CisjICAgICB8IGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXgg
fCAuLi4gfQorIworIyBFbWl0cyBndWFyZCBjb2RlcyBmb3IgYWxsIHZhbGlkIGNvbmZpZ3VyYXRp
b25zLCBhbmQgY2FsbHMgdGhlIGJsb2NrCisjIGZvciB0aG9zZSBjb25maWd1cmF0aW9ucyB0aGF0
IGFyZSB2YWxpZCBhbmQgbm90IGVycm9uZW91cy4KKyMKKworZGVmIGVtaXRDb2RlSW5BbGxDb25m
aWd1cmF0aW9ucyhhc3QpCisgICAgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3Qp
IHsKKyAgICAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5k
ZXggfAorICAgICAgICAkb3V0cHV0LnB1dHMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGlu
Z3MpCisgICAgICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGxvd0xldmVsQVNULCBiYWNrZW5k
LCBpbmRleAorICAgICAgICAkb3V0cHV0LnB1dHMgIiNlbmRpZiIKKyAgICB9CitlbmQKKworCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3RyYW5zZm9ybS5yYgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zvcm0ucmIJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS90cmFuc2Zv
cm0ucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQyIEBACisjIENvcHlyaWdodCAoQykgMjAx
MSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCisKKyMKKyMgbm9kZS5yZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpCisjCisjIENvbnN0cnVjdCBhIG5ldyBBU1QgdGhhdCBkb2VzIG5vdCBo
YXZlIGFueSBJZlRoZW5FbHNlIG5vZGVzIGJ5CisjIHN1YnN0aXR1dGluZyBjb25jcmV0ZSBib29s
ZWFuIHZhbHVlcyBmb3IgZWFjaCBTZXR0aW5nLgorIworCitjbGFzcyBOb2RlCisgICAgZGVmIHJl
c29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgbWFwQ2hpbGRyZW4geworICAgICAgICAg
ICAgfCBjaGlsZCB8CisgICAgICAgICAgICBjaGlsZC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
CisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitjbGFzcyBUcnVlCisgICAgZGVmIHJlc29sdmVT
ZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgc2VsZgorICAgIGVuZAorZW5kCisKK2NsYXNzIEZh
bHNlCisgICAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgc2VsZgorICAg
IGVuZAorZW5kCisKK2NsYXNzIFNldHRpbmcKKyAgICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRp
bmdzKQorICAgICAgICBzZXR0aW5nc1tAbmFtZV0uYXNOb2RlCisgICAgZW5kCitlbmQKKworY2xh
c3MgQW5kCisgICAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgKEBsZWZ0
LnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykudmFsdWUgYW5kIEByaWdodC5yZXNvbHZlU2V0dGlu
Z3Moc2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBPcgorICAg
IGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICAgIChAbGVmdC5yZXNvbHZlU2V0
dGluZ3Moc2V0dGluZ3MpLnZhbHVlIG9yIEByaWdodC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
LnZhbHVlKS5hc05vZGUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBOb3QKKyAgICBkZWYgcmVzb2x2
ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgICAobm90IEBjaGlsZC5yZXNvbHZlU2V0dGluZ3Mo
c2V0dGluZ3MpLnZhbHVlKS5hc05vZGUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJZlRoZW5FbHNl
CisgICAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgaWYgQHByZWRpY2F0
ZS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVlCisgICAgICAgICAgICBAdGhlbkNhc2Uu
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBAZWxz
ZUNhc2UucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgICBlbmQKKyAgICBlbmQKK2Vu
ZAorCitjbGFzcyBTZXF1ZW5jZQorICAgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisg
ICAgICAgIG5ld0xpc3QgPSBbXQorICAgICAgICBAbGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwg
aXRlbSB8CisgICAgICAgICAgICBpdGVtID0gaXRlbS5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3Mp
CisgICAgICAgICAgICBpZiBpdGVtLmlzX2E/IFNlcXVlbmNlCisgICAgICAgICAgICAgICAgbmV3
TGlzdCArPSBpdGVtLmxpc3QKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdM
aXN0IDw8IGl0ZW0KKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIFNlcXVlbmNl
Lm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICAgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5kZW1h
Y3JvaWZ5KG1hY3JvcykKKyMgbm9kZS5zdWJzdGl0dXRlKG1hcHBpbmcpCisjCisjIGRlbWFjcm9p
ZnkoKSBjb25zdHJ1Y3RzIGEgbmV3IEFTVCB0aGF0IGRvZXMgbm90IGhhdmUgYW55IE1hY3JvCisj
IG5vZGVzLCB3aGlsZSBzdWJzdGl0dXRlKCkgcmVwbGFjZXMgVmFyaWFibGUgbm9kZXMgd2l0aCB0
aGUgZ2l2ZW4KKyMgbm9kZXMgaW4gdGhlIG1hcHBpbmcuCisjCisKK2NsYXNzIE5vZGUKKyAgICBk
ZWYgZGVtYWNyb2lmeShtYWNyb3MpCisgICAgICAgIG1hcENoaWxkcmVuIHsKKyAgICAgICAgICAg
IHwgY2hpbGQgfAorICAgICAgICAgICAgY2hpbGQuZGVtYWNyb2lmeShtYWNyb3MpCisgICAgICAg
IH0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc3Vic3RpdHV0ZShtYXBwaW5nKQorICAgICAgICBt
YXBDaGlsZHJlbiB7CisgICAgICAgICAgICB8IGNoaWxkIHwKKyAgICAgICAgICAgIGNoaWxkLnN1
YnN0aXR1dGUobWFwcGluZykKKyAgICAgICAgfQorICAgIGVuZAorICAgIAorICAgIGRlZiBzdWJz
dGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgICAgIG1hcENoaWxkcmVuIHsKKyAgICAgICAgICAg
IHwgY2hpbGQgfAorICAgICAgICAgICAgY2hpbGQuc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQor
ICAgICAgICB9CisgICAgZW5kCitlbmQKKworY2xhc3MgTWFjcm8KKyAgICBkZWYgc3Vic3RpdHV0
ZShtYXBwaW5nKQorICAgICAgICBteU1hcHBpbmcgPSB7fQorICAgICAgICBtYXBwaW5nLmVhY2hf
cGFpciB7CisgICAgICAgICAgICB8IGtleSwgdmFsdWUgfAorICAgICAgICAgICAgdW5sZXNzIEB2
YXJpYWJsZXMuaW5jbHVkZT8ga2V5CisgICAgICAgICAgICAgICAgbXlNYXBwaW5nW2tleV0gPSB2
YWx1ZQorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgbWFwQ2hpbGRyZW4gewor
ICAgICAgICAgICAgfCBjaGlsZCB8CisgICAgICAgICAgICBjaGlsZC5zdWJzdGl0dXRlKG15TWFw
cGluZykKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlCisgICAgZGVm
IHN1YnN0aXR1dGUobWFwcGluZykKKyAgICAgICAgaWYgbWFwcGluZ1tzZWxmXQorICAgICAgICAg
ICAgbWFwcGluZ1tzZWxmXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmCisgICAgICAg
IGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWwKKyAgICBkZWYgc3Vic3RpdHV0
ZUxhYmVscyhtYXBwaW5nKQorICAgICAgICBpZiBtYXBwaW5nW3NlbGZdCisgICAgICAgICAgICBt
YXBwaW5nW3NlbGZdCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlbGYKKyAgICAgICAgZW5k
CisgICAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgICBkZWYgc3Vic3RpdHV0ZShjb25z
dGFudHMpCisgICAgICAgIG5ld0xpc3QgPSBbXQorICAgICAgICBteUNvbnN0YW50cyA9IGNvbnN0
YW50cy5kdXAKKyAgICAgICAgQGxpc3QuZWFjaCB7CisgICAgICAgICAgICB8IGl0ZW0gfAorICAg
ICAgICAgICAgaWYgaXRlbS5pc19hPyBDb25zdERlY2wKKyAgICAgICAgICAgICAgICBteUNvbnN0
YW50c1tpdGVtLnZhcmlhYmxlXSA9IGl0ZW0udmFsdWUuc3Vic3RpdHV0ZShteUNvbnN0YW50cykK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IGl0ZW0uc3Vic3Rp
dHV0ZShteUNvbnN0YW50cykKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIFNl
cXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KQorICAgIGVuZAorICAgIAorICAgIGRlZiBy
ZW5hbWVMYWJlbHMoY29tbWVudCkKKyAgICAgICAgbWFwcGluZyA9IHt9CisgICAgICAgIAorICAg
ICAgICBAbGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgaXRlbSB8CisgICAgICAgICAgICBpZiBp
dGVtLmlzX2E/IExvY2FsTGFiZWwKKyAgICAgICAgICAgICAgICBtYXBwaW5nW2l0ZW1dID0gTG9j
YWxMYWJlbC51bmlxdWUoaWYgY29tbWVudCB0aGVuIGNvbW1lbnQgKyAiXyIgZWxzZSAiIiBlbmQg
KyBpdGVtLmNsZWFuTmFtZSkKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBzdWJzdGl0dXRlTGFiZWxzKG1hcHBpbmcpCisgICAgZW5kCisgICAgCisgICAgZGVm
IGRlbWFjcm9pZnkobWFjcm9zKQorICAgICAgICBteU1hY3JvcyA9IG1hY3Jvcy5kdXAKKyAgICAg
ICAgQGxpc3QuZWFjaCB7CisgICAgICAgICAgICB8IGl0ZW0gfAorICAgICAgICAgICAgaWYgaXRl
bS5pc19hPyBNYWNybworICAgICAgICAgICAgICAgIG15TWFjcm9zW2l0ZW0ubmFtZV0gPSBpdGVt
CisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBuZXdMaXN0ID0gW10KKyAgICAg
ICAgQGxpc3QuZWFjaCB7CisgICAgICAgICAgICB8IGl0ZW0gfAorICAgICAgICAgICAgaWYgaXRl
bS5pc19hPyBNYWNybworICAgICAgICAgICAgICAgICMgSWdub3JlLgorICAgICAgICAgICAgZWxz
aWYgaXRlbS5pc19hPyBNYWNyb0NhbGwKKyAgICAgICAgICAgICAgICBtYXBwaW5nID0ge30KKyAg
ICAgICAgICAgICAgICBteU15TWFjcm9zID0gbXlNYWNyb3MuZHVwCisgICAgICAgICAgICAgICAg
cmFpc2UgIkNvdWxkIG5vdCBmaW5kIG1hY3JvICN7aXRlbS5uYW1lfSBhdCAje2l0ZW0uY29kZU9y
aWdpblN0cmluZ30iIHVubGVzcyBteU1hY3Jvc1tpdGVtLm5hbWVdCisgICAgICAgICAgICAgICAg
cmFpc2UgIkFyZ3VtZW50IGNvdW50IG1pc21hdGNoIGZvciBjYWxsIHRvICN7aXRlbS5uYW1lfSBh
dCAje2l0ZW0uY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBpdGVtLm9wZXJhbmRzLnNpemUgPT0g
bXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXMuc2l6ZQorICAgICAgICAgICAgICAgIGl0ZW0u
b3BlcmFuZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgICAgICAgICAgIHwgaWR4IHwKKyAgICAg
ICAgICAgICAgICAgICAgaWYgaXRlbS5vcGVyYW5kc1tpZHhdLmlzX2E/IFZhcmlhYmxlIGFuZCBt
eU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0KKyAgICAgICAgICAgICAgICAgICAgICAg
IG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IG15
TWFjcm9zW2l0ZW0ub3BlcmFuZHNbaWR4XS5uYW1lXQorICAgICAgICAgICAgICAgICAgICAgICAg
bWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisg
ICAgICAgICAgICAgICAgICAgIGVsc2lmIGl0ZW0ub3BlcmFuZHNbaWR4XS5pc19hPyBNYWNybwor
ICAgICAgICAgICAgICAgICAgICAgICAgbXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZh
cmlhYmxlc1tpZHhdLm5hbWVdID0gaXRlbS5vcGVyYW5kc1tpZHhdCisgICAgICAgICAgICAgICAg
ICAgICAgICBtYXBwaW5nW215TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzW2lkeF0ubmFtZV0g
PSBuaWwKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
bXlNeU1hY3Jvc1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxlc1tpZHhdXSA9IG5pbAorICAg
ICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5hbWVdLnZhcmlhYmxl
c1tpZHhdXSA9IGl0ZW0ub3BlcmFuZHNbaWR4XQorICAgICAgICAgICAgICAgICAgICBlbmQKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbmV3TGlzdCArPSBteU1hY3Jvc1tpdGVt
Lm5hbWVdLmJvZHkuc3Vic3RpdHV0ZShtYXBwaW5nKS5kZW1hY3JvaWZ5KG15TXlNYWNyb3MpLnJl
bmFtZUxhYmVscyhpdGVtLm5hbWUpLmxpc3QKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBuZXdMaXN0IDw8IGl0ZW0uZGVtYWNyb2lmeShteU1hY3JvcykKKyAgICAgICAgICAgIGVu
ZAorICAgICAgICB9CisgICAgICAgIFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBuZXdMaXN0KS5z
dWJzdGl0dXRlKHt9KQorICAgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5yZXNvbHZlT2Zmc2V0cyhv
ZmZzZXRzLCBzaXplcykKKyMKKyMgQ29uc3RydWN0IGEgbmV3IEFTVCB0aGF0IGhhcyBvZmZzZXQg
dmFsdWVzIGluc3RlYWQgb2Ygc3ltYm9saWMKKyMgb2Zmc2V0cy4KKyMKKworY2xhc3MgTm9kZQor
ICAgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICAgICAgbWFwQ2hpbGRy
ZW4geworICAgICAgICAgICAgfCBjaGlsZCB8CisgICAgICAgICAgICBjaGlsZC5yZXNvbHZlT2Zm
c2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNzIFN0
cnVjdE9mZnNldAorICAgIGRlZiByZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykKKyAgICAg
ICAgaWYgb2Zmc2V0c1tzZWxmXQorICAgICAgICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2lu
LCBvZmZzZXRzW3NlbGZdKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmCisgICAgICAg
IGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZgorICAgIGRlZiByZXNvbHZlT2Zmc2V0
cyhvZmZzZXRzLCBzaXplcykKKyAgICAgICAgaWYgc2l6ZXNbc2VsZl0KKyAgICAgICAgICAgIElt
bWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgc2l6ZXNbc2VsZl0pCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHB1dHMgIkNvdWxkIG5vdCBmaW5kICN7c2VsZi5pbnNwZWN0fSBpbiAje3NpemVzLmtl
eXMuaW5zcGVjdH0iCisgICAgICAgICAgICBwdXRzICJzaXplcyA9ICN7c2l6ZXMuaW5zcGVjdH0i
CisgICAgICAgICAgICBzZWxmCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKKyMKKyMgbm9k
ZS5mb2xkCisjCisjIFJlc29sdmUgY29uc3RhbnQgcmVmZXJlbmNlcyBhbmQgY29tcHV0ZSBhcml0
aG1ldGljIGV4cHJlc3Npb25zLgorIworCitjbGFzcyBOb2RlCisgICAgZGVmIGZvbGQKKyAgICAg
ICAgbWFwQ2hpbGRyZW4geworICAgICAgICAgICAgfCBjaGlsZCB8CisgICAgICAgICAgICBjaGls
ZC5mb2xkCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVzCisg
ICAgZGVmIGZvbGQKKyAgICAgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgICAgIEByaWdodCA9
IEByaWdodC5mb2xkCisgICAgICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1l
ZGlhdGUKKyAgICAgICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUK
KyAgICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSArIEByaWdodC52
YWx1ZSkKKyAgICBlbmQKK2VuZAorCitjbGFzcyBTdWJJbW1lZGlhdGVzCisgICAgZGVmIGZvbGQK
KyAgICAgICAgQGxlZnQgPSBAbGVmdC5mb2xkCisgICAgICAgIEByaWdodCA9IEByaWdodC5mb2xk
CisgICAgICAgIHJldHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICAg
ICAgcmV0dXJuIHNlbGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgSW1t
ZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAtIEByaWdodC52YWx1ZSkKKyAgICBl
bmQKK2VuZAorCitjbGFzcyBNdWxJbW1lZGlhdGVzCisgICAgZGVmIGZvbGQKKyAgICAgICAgQGxl
ZnQgPSBAbGVmdC5mb2xkCisgICAgICAgIEByaWdodCA9IEByaWdodC5mb2xkCisgICAgICAgIHJl
dHVybiBzZWxmIHVubGVzcyBAbGVmdC5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgcmV0dXJuIHNl
bGYgdW5sZXNzIEByaWdodC5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgSW1tZWRpYXRlLm5ldyhj
b2RlT3JpZ2luLCBAbGVmdC52YWx1ZSAqIEByaWdodC52YWx1ZSkKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBOZWdJbW1lZGlhdGUKKyAgICBkZWYgZm9sZAorICAgICAgICBAY2hpbGQgPSBAY2hpbGQu
Zm9sZAorICAgICAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGNoaWxkLmlzX2E/IEltbWVkaWF0ZQor
ICAgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC1AY2hpbGQudmFsdWUpCisgICAgZW5k
CitlbmQKKworIworIyBub2RlLnJlc29sdmVBZnRlclNldHRpbmdzKG9mZnNldHMsIHNpemVzKQor
IworIyBDb21waWxlIGFzc2VtYmx5IGFnYWluc3QgYSBzZXQgb2Ygb2Zmc2V0cy4KKyMKKworY2xh
c3MgTm9kZQorICAgIGRlZiByZXNvbHZlKG9mZnNldHMsIHNpemVzKQorICAgICAgICBkZW1hY3Jv
aWZ5KHt9KS5yZXNvbHZlT2Zmc2V0cyhvZmZzZXRzLCBzaXplcykuZm9sZAorICAgIGVuZAorZW5k
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3g4Ni5yYgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS94ODYucmIJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNjgxIEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1l
dDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisj
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorCitjbGFzcyBSZWdpc3RlcklECisgICAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgICAg
IGNhc2UgbmFtZQorICAgICAgICB3aGVuICJ0MCIsICJhMCIsICJyMCIsICJ0MSIsICJhMSIsICJy
MSIsICJ0MiIsICJ0MyIKKyAgICAgICAgICAgIHRydWUKKyAgICAgICAgd2hlbiAidDQiLCAiY2Zy
IgorICAgICAgICAgICAgZmFsc2UKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UKKyAg
ICAgICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAg
ICAgY2FzZSBuYW1lCisgICAgICAgIHdoZW4gInQwIiwgImEwIiwgInIwIgorICAgICAgICAgICAg
Y2FzZSBraW5kCisgICAgICAgICAgICB3aGVuIDpieXRlCisgICAgICAgICAgICAgICAgIiVhbCIK
KyAgICAgICAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgICAgICAgICAiJWF4IgorICAgICAgICAg
ICAgd2hlbiA6aW50CisgICAgICAgICAgICAgICAgIiVlYXgiCisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJ0MSIs
ICJhMSIsICJyMSIKKyAgICAgICAgICAgIGNhc2Uga2luZAorICAgICAgICAgICAgd2hlbiA6Ynl0
ZQorICAgICAgICAgICAgICAgICIlZGwiCisgICAgICAgICAgICB3aGVuIDpoYWxmCisgICAgICAg
ICAgICAgICAgIiVkeCIKKyAgICAgICAgICAgIHdoZW4gOmludAorICAgICAgICAgICAgICAgICIl
ZWR4IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAg
ICBlbmQKKyAgICAgICAgd2hlbiAidDIiCisgICAgICAgICAgICBjYXNlIGtpbmQKKyAgICAgICAg
ICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgICAgICAgICAiJWNsIgorICAgICAgICAgICAgd2hlbiA6
aGFsZgorICAgICAgICAgICAgICAgICIlY3giCisgICAgICAgICAgICB3aGVuIDppbnQKKyAgICAg
ICAgICAgICAgICAiJWVjeCIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByYWlz
ZQorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gInQzIgorICAgICAgICAgICAgY2FzZSBr
aW5kCisgICAgICAgICAgICB3aGVuIDpieXRlCisgICAgICAgICAgICAgICAgIiVibCIKKyAgICAg
ICAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgICAgICAgICAiJWJ4IgorICAgICAgICAgICAgd2hl
biA6aW50CisgICAgICAgICAgICAgICAgIiVlYngiCisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJ0NCIKKyAgICAg
ICAgICAgIGNhc2Uga2luZAorICAgICAgICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAgICAgICAg
ICIlc2lsIgorICAgICAgICAgICAgd2hlbiA6aGFsZgorICAgICAgICAgICAgICAgICIlc2kiCisg
ICAgICAgICAgICB3aGVuIDppbnQKKyAgICAgICAgICAgICAgICAiJWVzaSIKKyAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZW5kCisgICAgICAgIHdo
ZW4gImNmciIKKyAgICAgICAgICAgIGNhc2Uga2luZAorICAgICAgICAgICAgd2hlbiA6Ynl0ZQor
ICAgICAgICAgICAgICAgICIlZGlsIgorICAgICAgICAgICAgd2hlbiA6aGFsZgorICAgICAgICAg
ICAgICAgICIlZGkiCisgICAgICAgICAgICB3aGVuIDppbnQKKyAgICAgICAgICAgICAgICAiJWVk
aSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAg
ZW5kCisgICAgICAgIHdoZW4gInNwIgorICAgICAgICAgICAgY2FzZSBraW5kCisgICAgICAgICAg
ICB3aGVuIDpieXRlCisgICAgICAgICAgICAgICAgIiVzcGwiCisgICAgICAgICAgICB3aGVuIDpo
YWxmCisgICAgICAgICAgICAgICAgIiVzcCIKKyAgICAgICAgICAgIHdoZW4gOmludAorICAgICAg
ICAgICAgICAgICIlZXNwIgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJhaXNl
CisgICAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkJhZCBy
ZWdpc3RlciAje25hbWV9IGZvciBYODYgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAg
ZW5kCisgICAgZW5kCisgICAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgICAgICIqI3t4
ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVySUQKKyAg
ICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAgICAgICByYWlzZSB1bmxlc3Mga2luZCA9PSA6ZG91
YmxlCisgICAgICAgIGNhc2UgbmFtZQorICAgICAgICB3aGVuICJmdDAiLCAiZmEwIiwgImZyIgor
ICAgICAgICAgICAgIiV4bW0wIgorICAgICAgICB3aGVuICJmdDEiLCAiZmExIgorICAgICAgICAg
ICAgIiV4bW0xIgorICAgICAgICB3aGVuICJmdDIiLCAiZmEyIgorICAgICAgICAgICAgIiV4bW0y
IgorICAgICAgICB3aGVuICJmdDMiLCAiZmEzIgorICAgICAgICAgICAgIiV4bW0zIgorICAgICAg
ICB3aGVuICJmdDQiCisgICAgICAgICAgICAiJXhtbTQiCisgICAgICAgIHdoZW4gImZ0NSIKKyAg
ICAgICAgICAgICIleG1tNSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkJhZCBy
ZWdpc3RlciAje25hbWV9IGZvciBYODYgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAg
ZW5kCisgICAgZW5kCisgICAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgICAgICIqI3t4
ODZPcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJbW1lZGlhdGUKKyAgICBk
ZWYgeDg2T3BlcmFuZChraW5kKQorICAgICAgICAiJCN7dmFsdWV9IgorICAgIGVuZAorICAgIGRl
ZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICAgICAiI3t2YWx1ZX0iCisgICAgZW5kCitlbmQK
KworY2xhc3MgQWRkcmVzcworICAgIGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgICAgICB0cnVl
CisgICAgZW5kCisgICAgCisgICAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAgICAgIiN7b2Zm
c2V0LnZhbHVlfSgje2Jhc2UueDg2T3BlcmFuZCg6aW50KX0pIgorICAgIGVuZAorICAgIGRlZiB4
ODZDYWxsT3BlcmFuZChraW5kKQorICAgICAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgICAg
ZW5kCitlbmQKKworY2xhc3MgQmFzZUluZGV4CisgICAgZGVmIHN1cHBvcnRzOEJpdE9uWDg2Cisg
ICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgeDg2T3BlcmFuZChraW5kKQorICAg
ICAgICAiI3tvZmZzZXQudmFsdWV9KCN7YmFzZS54ODZPcGVyYW5kKDppbnQpfSwgI3tpbmRleC54
ODZPcGVyYW5kKDppbnQpfSwgI3tzY2FsZX0pIgorICAgIGVuZAorCisgICAgZGVmIHg4NkNhbGxP
cGVyYW5kKGtpbmQpCisgICAgICAgICIqI3t4ODZvcGVyYW5kKGtpbmQpfSIKKyAgICBlbmQKK2Vu
ZAorCitjbGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgICBkZWYgc3VwcG9ydHM4Qml0T25YODYKKyAg
ICAgICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiB4ODZPcGVyYW5kKGtpbmQpCisgICAg
ICAgICIje2FkZHJlc3MudmFsdWV9IgorICAgIGVuZAorCisgICAgZGVmIHg4NkNhbGxPcGVyYW5k
KGtpbmQpCisgICAgICAgICIqI3thZGRyZXNzLnZhbHVlfSIKKyAgICBlbmQKK2VuZAorCitjbGFz
cyBMYWJlbFJlZmVyZW5jZQorICAgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICAgICBh
c21MYWJlbAorICAgIGVuZAorZW5kCisKK2NsYXNzIExvY2FsTGFiZWxSZWZlcmVuY2UKKyAgICBk
ZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAgICAgYXNtTGFiZWwKKyAgICBlbmQKK2VuZAor
CitjbGFzcyBJbnN0cnVjdGlvbgorICAgIGRlZiB4ODZPcGVyYW5kcygqa2luZHMpCisgICAgICAg
IHJhaXNlIHVubGVzcyBraW5kcy5zaXplID09IG9wZXJhbmRzLnNpemUKKyAgICAgICAgcmVzdWx0
ID0gW10KKyAgICAgICAga2luZHMuc2l6ZS50aW1lcyB7CisgICAgICAgICAgICB8IGlkeCB8Cisg
ICAgICAgICAgICByZXN1bHQgPDwgb3BlcmFuZHNbaWR4XS54ODZPcGVyYW5kKGtpbmRzW2lkeF0p
CisgICAgICAgIH0KKyAgICAgICAgcmVzdWx0LmpvaW4oIiwgIikKKyAgICBlbmQKKworICAgIGRl
ZiB4ODZTdWZmaXgoa2luZCkKKyAgICAgICAgY2FzZSBraW5kCisgICAgICAgIHdoZW4gOmJ5dGUK
KyAgICAgICAgICAgICJiIgorICAgICAgICB3aGVuIDpoYWxmCisgICAgICAgICAgICAidyIKKyAg
ICAgICAgd2hlbiA6aW50CisgICAgICAgICAgICAibCIKKyAgICAgICAgd2hlbiA6ZG91YmxlCisg
ICAgICAgICAgICAic2QiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAg
IGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhv
cGNvZGUsIGtpbmQsIG51bU9wZXJhbmRzKQorICAgICAgICBpZiBudW1PcGVyYW5kcyA9PSAzCisg
ICAgICAgICAgICBpZiBvcGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAg
ICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7
b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgICAgICBlbHNpZiBvcGVyYW5k
c1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9
ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFu
ZChraW5kKX0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJt
b3Yje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSwgI3tv
cGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMg
IiN7b3Bjb2RlfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJd
Lng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5k
KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgIGVuZAorICAgIGVu
ZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZPcChvcGNvZGUsIGtpbmQpCisgICAgICAgIGhhbmRs
ZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29kZSwga2luZCwgb3BlcmFuZHMuc2l6ZSkKKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgaGFuZGxlWDg2U2hpZnQob3Bjb2RlLCBraW5kKQorICAgICAgICBp
ZiBvcGVyYW5kc1swXS5pc19hPyBJbW1lZGlhdGUgb3Igb3BlcmFuZHNbMF0gPT0gUmVnaXN0ZXJJ
RC5mb3JOYW1lKG5pbCwgInQyIikKKyAgICAgICAgICAgICRhc20ucHV0cyAiI3tvcGNvZGV9ICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
a2luZCl9IgorICAgICAgICBlbHNlCisgICAgICAgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3Bl
cmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVlY3giCisgICAgICAgICAgICAkYXNtLnB1dHMg
IiN7b3Bjb2RlfSAlY2wsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAg
ICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICVl
Y3giCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZEb3VibGVC
cmFuY2goYnJhbmNoT3Bjb2RlLCBtb2RlKQorICAgICAgICBjYXNlIG1vZGUKKyAgICAgICAgd2hl
biA6bm9ybWFsCisgICAgICAgICAgICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1sxXS54
ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIK
KyAgICAgICAgd2hlbiA6cmV2ZXJzZQorICAgICAgICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6ZG91YmxlKX0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlIG1vZGUuaW5zcGVj
dAorICAgICAgICBlbmQKKyAgICAgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVy
YW5kc1syXS5hc21MYWJlbH0iCisgICAgZW5kCisgICAgCisgICAgZGVmIGhhbmRsZVg4NkludENv
bXBhcmUob3Bjb2RlU3VmZml4LCBraW5kKQorICAgICAgICBpZiBvcGVyYW5kc1swXS5pc19hPyBJ
bW1lZGlhdGUgYW5kIG9wZXJhbmRzWzBdLnZhbHVlID09IDAgYW5kIG9wZXJhbmRzWzFdLmlzX2E/
IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZmaXggPT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAi
bmUiKQorICAgICAgICAgICAgJGFzbS5wdXRzICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0iCisgICAgICAgIGVsc2lmIG9wZXJhbmRzWzFdLmlz
X2E/IEltbWVkaWF0ZSBhbmQgb3BlcmFuZHNbMV0udmFsdWUgPT0gMCBhbmQgb3BlcmFuZHNbMF0u
aXNfYT8gUmVnaXN0ZXJJRCBhbmQgKG9wY29kZVN1ZmZpeCA9PSAiZSIgb3Igb3Bjb2RlU3VmZml4
ID09ICJuZSIpCisgICAgICAgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChraW5kKX0g
I3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgJGFzbS5wdXRzICJjbXAje3g4NlN1ZmZpeChraW5kKX0gI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKGtpbmQpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgZW5k
CisgICAgZW5kCisgICAgCisgICAgZGVmIGhhbmRsZVg4NkludEJyYW5jaChicmFuY2hPcGNvZGUs
IGtpbmQpCisgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmUoYnJhbmNoT3Bjb2RlWzEuLi0xXSwg
a2luZCkKKyAgICAgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tvcGVyYW5kc1syXS5h
c21MYWJlbH0iCisgICAgZW5kCisgICAgCisgICAgZGVmIGhhbmRsZVg4NlNldChzZXRPcGNvZGUs
IG9wZXJhbmQpCisgICAgICAgIGlmIG9wZXJhbmQuc3VwcG9ydHM4Qml0T25YODYKKyAgICAgICAg
ICAgICRhc20ucHV0cyAiI3tzZXRPcGNvZGV9ICN7b3BlcmFuZC54ODZPcGVyYW5kKDpieXRlKX0i
CisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdnpibCAje29wZXJhbmQueDg2T3BlcmFuZCg6Ynl0
ZSl9LCAje29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4Igor
ICAgICAgICAgICAgJGFzbS5wdXRzICIje3NldE9wY29kZX0gJWFsIgorICAgICAgICAgICAgJGFz
bS5wdXRzICJtb3Z6YmwgJWFsLCAlZWF4IgorICAgICAgICAgICAgJGFzbS5wdXRzICJ4Y2hnbCAj
e29wZXJhbmQueDg2T3BlcmFuZCg6aW50KX0sICVlYXgiCisgICAgICAgIGVuZAorICAgIGVuZAor
ICAgIAorICAgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlU2V0KHNldE9wY29kZSwga2luZCkKKyAg
ICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZShzZXRPcGNvZGVbMy4uLTFdLCBraW5kKQorICAgICAg
ICBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kc1syXSkKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgaGFuZGxlWDg2VGVzdChraW5kKQorICAgICAgICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisg
ICAgICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgICAgICB3aGVuIDIKKyAgICAgICAgICAgIG1h
c2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIC0xKQorICAgICAgICB3aGVuIDMKKyAgICAg
ICAgICAgIG1hc2sgPSBvcGVyYW5kc1sxXQorICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlz
ZSAiRXhwZWN0ZWQgMiBvciAzIG9wZXJhbmRzLCBidXQgZ290ICN7b3BlcmFuZHMuc2l6ZX0gYXQg
I3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5kCisgICAgICAgIAorICAgICAgICBpZiBt
YXNrLmlzX2E/IEltbWVkaWF0ZSBhbmQgbWFzay52YWx1ZSA9PSAtMQorICAgICAgICAgICAgaWYg
dmFsdWUuaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgICRhc20ucHV0cyAidGVzdCN7
eDg2U3VmZml4KGtpbmQpfSAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9w
ZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICRhc20ucHV0
cyAiY21wI3t4ODZTdWZmaXgoa2luZCl9ICQwLCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9Igor
ICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICRhc20ucHV0cyAidGVz
dCN7eDg2U3VmZml4KGtpbmQpfSAje21hc2sueDg2T3BlcmFuZChraW5kKX0sICN7dmFsdWUueDg2
T3BlcmFuZChraW5kKX0iCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBoYW5k
bGVYODZCcmFuY2hUZXN0KGJyYW5jaE9wY29kZSwga2luZCkKKyAgICAgICAgaGFuZGxlWDg2VGVz
dChraW5kKQorICAgICAgICAkYXNtLnB1dHMgIiN7YnJhbmNoT3Bjb2RlfSAje29wZXJhbmRzLmxh
c3QuYXNtTGFiZWx9IgorICAgIGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVYODZTZXRUZXN0KHNl
dE9wY29kZSwga2luZCkKKyAgICAgICAgaGFuZGxlWDg2VGVzdChraW5kKQorICAgICAgICBoYW5k
bGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kcy5sYXN0KQorICAgIGVuZAorICAgIAorICAgIGRl
ZiBoYW5kbGVYODZPcEJyYW5jaChvcGNvZGUsIGJyYW5jaE9wY29kZSwga2luZCkKKyAgICAgICAg
aGFuZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBvcGVyYW5kcy5zaXplIC0g
MSkKKyAgICAgICAgY2FzZSBvcGVyYW5kcy5zaXplCisgICAgICAgIHdoZW4gNAorICAgICAgICAg
ICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisgICAgICAgIHdoZW4gMworICAgICAgICAgICAg
anVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNl
IHNlbGYuaW5zcGVjdAorICAgICAgICBlbmQKKyAgICAgICAgJGFzbS5wdXRzICIje2JyYW5jaE9w
Y29kZX0gI3tqdW1wVGFyZ2V0LmFzbUxhYmVsfSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaGFu
ZGxlWDg2U3ViQnJhbmNoKGJyYW5jaE9wY29kZSwga2luZCkKKyAgICAgICAgaWYgb3BlcmFuZHMu
c2l6ZSA9PSA0IGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgJGFz
bS5wdXRzICJuZWdsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAg
ICAkYXNtLnB1dHMgImFkZGwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaGFu
ZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMoInN1YiN7eDg2U3VmZml4KGtpbmQpfSIsIGtpbmQsIG9w
ZXJhbmRzLnNpemUgLSAxKQorICAgICAgICBlbmQKKyAgICAgICAgY2FzZSBvcGVyYW5kcy5zaXpl
CisgICAgICAgIHdoZW4gNAorICAgICAgICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzNdCisg
ICAgICAgIHdoZW4gMworICAgICAgICAgICAganVtcFRhcmdldCA9IG9wZXJhbmRzWzJdCisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlIHNlbGYuaW5zcGVjdAorICAgICAgICBlbmQKKyAg
ICAgICAgJGFzbS5wdXRzICIje2JyYW5jaE9wY29kZX0gI3tqdW1wVGFyZ2V0LmFzbUxhYmVsfSIK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgbG93ZXJYODYKKyAgICAgICAgJGFzbS5jb21tZW50IGNv
ZGVPcmlnaW5TdHJpbmcKKyAgICAgICAgY2FzZSBvcGNvZGUKKyAgICAgICAgd2hlbiAiYWRkaSIs
ICJhZGRwIgorICAgICAgICAgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzIGFuZCBvcGVyYW5kc1sw
XS5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNb
MV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5k
c1syXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0udmFs
dWUgPT0gMAorICAgICAgICAgICAgICAgICAgICB1bmxlc3Mgb3BlcmFuZHNbMV0gPT0gb3BlcmFu
ZHNbMl0KKyAgICAgICAgICAgICAgICAgICAgICAgICRhc20ucHV0cyAibW92bCAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICRhc20ucHV0cyAibGVhbCAje29wZXJhbmRzWzBdLnZhbHVlfSgje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0g
MyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgIHJhaXNl
IHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgICAgICAgICAgcmFp
c2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgICAgICAgICAk
YXNtLnB1dHMgImxlYWwgKCN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFu
ZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0pLCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9
IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHVubGVzcyBJbW1lZGlhdGUubmV3
KG5pbCwgMCkgPT0gb3BlcmFuZHNbMF0KKyAgICAgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJh
ZGRsICN7eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgICAgICAgICAgIGVuZAorICAg
ICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gImFuZGkiLCAiYW5kcCIKKyAgICAgICAgICAgIGhh
bmRsZVg4Nk9wKCJhbmRsIiwgOmludCkKKyAgICAgICAgd2hlbiAibHNoaWZ0aSIKKyAgICAgICAg
ICAgIGhhbmRsZVg4NlNoaWZ0KCJzYWxsIiwgOmludCkKKyAgICAgICAgd2hlbiAibXVsaSIKKyAg
ICAgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1t
ZWRpYXRlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJpbXVsbCAje3g4Nk9wZXJhbmRzKDpp
bnQsIDppbnQsIDppbnQpfSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAjIEZJ
WE1FOiBjb3VsZCBkbyBzb21lIHBlZXBob2xlIGluIGNhc2UgdGhlIGxlZnQgb3BlcmFuZCBpcyBp
bW1lZGlhdGUgYW5kIGl0J3MKKyAgICAgICAgICAgICAgICAjIGEgcG93ZXIgb2YgdHdvLgorICAg
ICAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJpbXVsbCIsIDppbnQpCisgICAgICAgICAgICBlbmQK
KyAgICAgICAgd2hlbiAibmVnaSIKKyAgICAgICAgICAgICRhc20ucHV0cyAibmVnbCAje3g4Nk9w
ZXJhbmRzKDppbnQpfSIKKyAgICAgICAgd2hlbiAibm90aSIKKyAgICAgICAgICAgICRhc20ucHV0
cyAibm90bCAje3g4Nk9wZXJhbmRzKDppbnQpfSIKKyAgICAgICAgd2hlbiAib3JpIiwgIm9ycCIK
KyAgICAgICAgICAgIGhhbmRsZVg4Nk9wKCJvcmwiLCA6aW50KQorICAgICAgICB3aGVuICJyc2hp
ZnRpIgorICAgICAgICAgICAgaGFuZGxlWDg2U2hpZnQoInNhcmwiLCA6aW50KQorICAgICAgICB3
aGVuICJ1cnNoaWZ0aSIKKyAgICAgICAgICAgIGhhbmRsZVg4NlNoaWZ0KCJzaHJsIiwgOmludCkK
KyAgICAgICAgd2hlbiAic3ViaSIsICJzdWJwIgorICAgICAgICAgICAgaWYgb3BlcmFuZHMuc2l6
ZSA9PSAzIGFuZCBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQorICAgICAgICAgICAgICAgICRh
c20ucHV0cyAibmVnbCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAg
ICAgICAgICRhc20ucHV0cyAiYWRkbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAj
e29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIGhhbmRsZVg4Nk9wKCJzdWJsIiwgOmludCkKKyAgICAgICAgICAgIGVuZAorICAg
ICAgICB3aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICAgICAgICBoYW5kbGVYODZPcCgieG9ybCIs
IDppbnQpCisgICAgICAgIHdoZW4gImxvYWRpIiwgInN0b3JlaSIsICJsb2FkcCIsICJzdG9yZXAi
CisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50KX0i
CisgICAgICAgIHdoZW4gImxvYWRiIgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3Z6YmwgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDpieXRlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6
aW50KX0iCisgICAgICAgIHdoZW4gImxvYWRicyIKKyAgICAgICAgICAgICRhc20ucHV0cyAibW92
c2JsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAje29wZXJhbmRzWzFdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgICAgICB3aGVuICJsb2FkaCIKKyAgICAgICAgICAgICRhc20ucHV0
cyAibW92endsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aGFsZil9LCAje29wZXJhbmRzWzFd
Lng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICB3aGVuICJsb2FkaHMiCisgICAgICAgICAgICAk
YXNtLnB1dHMgIm1vdnN3bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmhhbGYpfSwgI3tvcGVy
YW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgd2hlbiAic3RvcmViIgorICAgICAg
ICAgICAgJGFzbS5wdXRzICJtb3ZiICN7eDg2T3BlcmFuZHMoOmJ5dGUsIDpieXRlKX0iCisgICAg
ICAgIHdoZW4gImxvYWRkIiwgIm1vdmVkIiwgInN0b3JlZCIKKyAgICAgICAgICAgICRhc20ucHV0
cyAibW92c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6ZG91YmxlKX0iCisgICAgICAgIHdoZW4g
ImFkZGQiCisgICAgICAgICAgICAkYXNtLnB1dHMgImFkZHNkICN7eDg2T3BlcmFuZHMoOmRvdWJs
ZSwgOmRvdWJsZSl9IgorICAgICAgICB3aGVuICJkaXZkIgorICAgICAgICAgICAgJGFzbS5wdXRz
ICJkaXZzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICAgICAgd2hlbiAi
c3ViZCIKKyAgICAgICAgICAgICRhc20ucHV0cyAic3Vic2QgI3t4ODZPcGVyYW5kcyg6ZG91Ymxl
LCA6ZG91YmxlKX0iCisgICAgICAgIHdoZW4gIm11bGQiCisgICAgICAgICAgICAkYXNtLnB1dHMg
Im11bHNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgICAgICB3aGVuICJz
cXJ0ZCIKKyAgICAgICAgICAgICRhc20ucHV0cyAic3FydHNkICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAg
ICAgIHdoZW4gImNpMmQiCisgICAgICAgICAgICAkYXNtLnB1dHMgImN2dHNpMnNkICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0iCisgICAgICAgIHdoZW4gImJkZXEiCisgICAgICAgICAgICBpc1Vub3JkZXJlZCA9IExvY2Fs
TGFiZWwudW5pcXVlKCJiZGVxIikKKyAgICAgICAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQo
OmRvdWJsZSl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJqcCAje0xhYmVsUmVmZXJlbmNlLm5l
dyhjb2RlT3JpZ2luLCBpc1Vub3JkZXJlZCkuYXNtTGFiZWx9IgorICAgICAgICAgICAgJGFzbS5w
dXRzICJqZSAje0xhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCBvcGVyYW5kc1syXSkuYXNt
TGFiZWx9IgorICAgICAgICAgICAgaXNVbm9yZGVyZWQubG93ZXIoIlg4NiIpCisgICAgICAgIHdo
ZW4gImJkbmVxIgorICAgICAgICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqbmUiLCA6bm9y
bWFsKQorICAgICAgICB3aGVuICJiZGd0IgorICAgICAgICAgICAgaGFuZGxlWDg2RG91YmxlQnJh
bmNoKCJqYSIsIDpub3JtYWwpCisgICAgICAgIHdoZW4gImJkZ3RlcSIKKyAgICAgICAgICAgIGhh
bmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOm5vcm1hbCkKKyAgICAgICAgd2hlbiAiYmRsdCIK
KyAgICAgICAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6cmV2ZXJzZSkKKyAgICAg
ICAgd2hlbiAiYmRsdGVxIgorICAgICAgICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYWUi
LCA6cmV2ZXJzZSkKKyAgICAgICAgd2hlbiAiYmRlcXVuIgorICAgICAgICAgICAgaGFuZGxlWDg2
RG91YmxlQnJhbmNoKCJqZSIsIDpub3JtYWwpCisgICAgICAgIHdoZW4gImJkbmVxdW4iCisgICAg
ICAgICAgICBpc1Vub3JkZXJlZCA9IExvY2FsTGFiZWwudW5pcXVlKCJiZG5lcXVuIikKKyAgICAg
ICAgICAgIGlzRXF1YWwgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICAgICAg
ICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICAgICAgICRhc20ucHV0
cyAianAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLmFzbUxh
YmVsfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiamUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29k
ZU9yaWdpbiwgaXNFcXVhbCkuYXNtTGFiZWx9IgorICAgICAgICAgICAgaXNVbm9yZGVyZWQubG93
ZXIoIlg4NiIpCisgICAgICAgICAgICAkYXNtLnB1dHMgImptcCAje29wZXJhbmRzWzJdLmFzbUxh
YmVsfSIKKyAgICAgICAgICAgIGlzRXF1YWwubG93ZXIoIlg4NiIpCisgICAgICAgIHdoZW4gImJk
Z3R1biIKKyAgICAgICAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamIiLCA6cmV2ZXJzZSkK
KyAgICAgICAgd2hlbiAiYmRndGVxdW4iCisgICAgICAgICAgICBoYW5kbGVYODZEb3VibGVCcmFu
Y2goImpiZSIsIDpyZXZlcnNlKQorICAgICAgICB3aGVuICJiZGx0dW4iCisgICAgICAgICAgICBo
YW5kbGVYODZEb3VibGVCcmFuY2goImpiIiwgOm5vcm1hbCkKKyAgICAgICAgd2hlbiAiYmRsdGVx
dW4iCisgICAgICAgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImpiZSIsIDpub3JtYWwpCisg
ICAgICAgIHdoZW4gImJ0ZDJpIgorICAgICAgICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tv
cGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5k
KDppbnQpfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiY21wbCAkMHg4MDAwMDAwMCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJqZSAje29w
ZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAidGQyaSIKKyAgICAgICAgICAgICRh
c20ucHV0cyAiY3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7
b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIHdoZW4gImJjZDJpIgorICAg
ICAgICAgICAgJGFzbS5wdXRzICJjdnR0c2Qyc2kgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpk
b3VibGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAgICRh
c20ucHV0cyAidGVzdGwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5k
c1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiamUgI3tvcGVy
YW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImN2dHNpMnNkICN7b3Bl
cmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAgICAgICAgICAgJGFzbS5wdXRz
ICJ1Y29taXNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICV4bW03IgorICAg
ICAgICAgICAgJGFzbS5wdXRzICJqcCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAiam5lICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3aGVu
ICJtb3ZkeiIKKyAgICAgICAgICAgICRhc20ucHV0cyAieG9ycGQgI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDpkb3VibGUpfSwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAg
ICAgICAgd2hlbiAicG9wIgorICAgICAgICAgICAgJGFzbS5wdXRzICJwb3AgI3tvcGVyYW5kc1sw
XS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgd2hlbiAicHVzaCIKKyAgICAgICAgICAgICRh
c20ucHV0cyAicHVzaCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICB3
aGVuICJtb3ZlIiwgInN4aTJwIiwgInp4aTJwIgorICAgICAgICAgICAgaWYgSW1tZWRpYXRlLm5l
dyhuaWwsIDApID09IG9wZXJhbmRzWzBdIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklE
CisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJ4b3JsICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAgICBl
bHNpZiBvcGVyYW5kc1swXSAhPSBvcGVyYW5kc1sxXQorICAgICAgICAgICAgICAgICRhc20ucHV0
cyAibW92bCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIKKyAgICAgICAgICAgIGVuZAorICAg
ICAgICB3aGVuICJub3AiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm5vcCIKKyAgICAgICAgd2hl
biAiYmllcSIsICJicGVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZSIsIDpp
bnQpCisgICAgICAgIHdoZW4gImJpbmVxIiwgImJwbmVxIgorICAgICAgICAgICAgaGFuZGxlWDg2
SW50QnJhbmNoKCJqbmUiLCA6aW50KQorICAgICAgICB3aGVuICJiaWEiLCAiYnBhIgorICAgICAg
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYSIsIDppbnQpCisgICAgICAgIHdoZW4gImJpYWVx
IiwgImJwYWVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqYWUiLCA6aW50KQor
ICAgICAgICB3aGVuICJiaWIiLCAiYnBiIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNo
KCJqYiIsIDppbnQpCisgICAgICAgIHdoZW4gImJpYmVxIiwgImJwYmVxIgorICAgICAgICAgICAg
aGFuZGxlWDg2SW50QnJhbmNoKCJqYmUiLCA6aW50KQorICAgICAgICB3aGVuICJiaWd0IiwgImJw
Z3QiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnIiwgOmludCkKKyAgICAgICAg
d2hlbiAiYmlndGVxIiwgImJwZ3RlcSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgi
amdlIiwgOmludCkKKyAgICAgICAgd2hlbiAiYmlsdCIsICJicGx0IgorICAgICAgICAgICAgaGFu
ZGxlWDg2SW50QnJhbmNoKCJqbCIsIDppbnQpCisgICAgICAgIHdoZW4gImJpbHRlcSIsICJicGx0
ZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpsZSIsIDppbnQpCisgICAgICAg
IHdoZW4gImJiZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImplIiwgOmJ5dGUp
CisgICAgICAgIHdoZW4gImJibmVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJq
bmUiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAiYmJhIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50
QnJhbmNoKCJqYSIsIDpieXRlKQorICAgICAgICB3aGVuICJiYmFlcSIKKyAgICAgICAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiamFlIiwgOmJ5dGUpCisgICAgICAgIHdoZW4gImJiYiIKKyAgICAg
ICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAiYmJi
ZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiZSIsIDpieXRlKQorICAgICAg
ICB3aGVuICJiYmd0IgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZyIsIDpieXRl
KQorICAgICAgICB3aGVuICJiYmd0ZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2go
ImpnZSIsIDpieXRlKQorICAgICAgICB3aGVuICJiYmx0IgorICAgICAgICAgICAgaGFuZGxlWDg2
SW50QnJhbmNoKCJqbCIsIDpieXRlKQorICAgICAgICB3aGVuICJiYmx0ZXEiCisgICAgICAgICAg
ICBoYW5kbGVYODZJbnRCcmFuY2goImpsdGVxIiwgOmJ5dGUpCisgICAgICAgIHdoZW4gImJ0aW8i
LCAiYnRwbyIKKyAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmludCkKKyAg
ICAgICAgd2hlbiAiYnRpcyIsICJidHBzIgorICAgICAgICAgICAgaGFuZGxlWDg2QnJhbmNoVGVz
dCgianMiLCA6aW50KQorICAgICAgICB3aGVuICJidGl6IiwgImJ0cHoiCisgICAgICAgICAgICBo
YW5kbGVYODZCcmFuY2hUZXN0KCJqeiIsIDppbnQpCisgICAgICAgIHdoZW4gImJ0aW56IiwgImJ0
cG56IgorICAgICAgICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmludCkKKyAgICAg
ICAgd2hlbiAiYnRibyIKKyAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpvIiwgOmJ5
dGUpCisgICAgICAgIHdoZW4gImJ0YnMiCisgICAgICAgICAgICBoYW5kbGVYODZCcmFuY2hUZXN0
KCJqcyIsIDpieXRlKQorICAgICAgICB3aGVuICJidGJ6IgorICAgICAgICAgICAgaGFuZGxlWDg2
QnJhbmNoVGVzdCgianoiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAiYnRibnoiCisgICAgICAgICAg
ICBoYW5kbGVYODZCcmFuY2hUZXN0KCJqbnoiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAiam1wIgor
ICAgICAgICAgICAgJGFzbS5wdXRzICJqbXAgI3tvcGVyYW5kc1swXS54ODZDYWxsT3BlcmFuZCg6
aW50KX0iCisgICAgICAgIHdoZW4gImJhZGRpbyIsICJiYWRkcG8iCisgICAgICAgICAgICBoYW5k
bGVYODZPcEJyYW5jaCgiYWRkbCIsICJqbyIsIDppbnQpCisgICAgICAgIHdoZW4gImJhZGRpcyIs
ICJiYWRkcHMiCisgICAgICAgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiYWRkbCIsICJqcyIsIDpp
bnQpCisgICAgICAgIHdoZW4gImJhZGRpeiIsICJiYWRkcHoiCisgICAgICAgICAgICBoYW5kbGVY
ODZPcEJyYW5jaCgiYWRkbCIsICJqeiIsIDppbnQpCisgICAgICAgIHdoZW4gImJhZGRpbnoiLCAi
YmFkZHBueiIKKyAgICAgICAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJhZGRsIiwgImpueiIsIDpp
bnQpCisgICAgICAgIHdoZW4gImJzdWJpbyIKKyAgICAgICAgICAgIGhhbmRsZVg4NlN1YkJyYW5j
aCgiam8iLCA6aW50KQorICAgICAgICB3aGVuICJic3ViaXMiCisgICAgICAgICAgICBoYW5kbGVY
ODZTdWJCcmFuY2goImpzIiwgOmludCkKKyAgICAgICAgd2hlbiAiYnN1Yml6IgorICAgICAgICAg
ICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqeiIsIDppbnQpCisgICAgICAgIHdoZW4gImJzdWJpbnoi
CisgICAgICAgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpueiIsIDppbnQpCisgICAgICAgIHdo
ZW4gImJtdWxpbyIKKyAgICAgICAgICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqbyIs
IDppbnQpCisgICAgICAgIHdoZW4gImJtdWxpcyIKKyAgICAgICAgICAgIGhhbmRsZVg4Nk9wQnJh
bmNoKCJpbXVsbCIsICJqcyIsIDppbnQpCisgICAgICAgIHdoZW4gImJtdWxpeiIKKyAgICAgICAg
ICAgIGhhbmRsZVg4Nk9wQnJhbmNoKCJpbXVsbCIsICJqeiIsIDppbnQpCisgICAgICAgIHdoZW4g
ImJtdWxpbnoiCisgICAgICAgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAiam56Iiwg
OmludCkKKyAgICAgICAgd2hlbiAiYm9yaW8iCisgICAgICAgICAgICBoYW5kbGVYODZPcEJyYW5j
aCgib3JsIiwgImpvIiwgOmludCkKKyAgICAgICAgd2hlbiAiYm9yaXMiCisgICAgICAgICAgICBo
YW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImpzIiwgOmludCkKKyAgICAgICAgd2hlbiAiYm9yaXoi
CisgICAgICAgICAgICBoYW5kbGVYODZPcEJyYW5jaCgib3JsIiwgImp6IiwgOmludCkKKyAgICAg
ICAgd2hlbiAiYm9yaW56IgorICAgICAgICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJq
bnoiLCA6aW50KQorICAgICAgICB3aGVuICJicmVhayIKKyAgICAgICAgICAgICRhc20ucHV0cyAi
aW50ICQzIgorICAgICAgICB3aGVuICJjYWxsIgorICAgICAgICAgICAgJGFzbS5wdXRzICJjYWxs
ICN7b3BlcmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgICAgICB3aGVuICJyZXQi
CisgICAgICAgICAgICAkYXNtLnB1dHMgInJldCIKKyAgICAgICAgd2hlbiAiY2llcSIsICJjcGVx
IgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZSIsIDppbnQpCisgICAg
ICAgIHdoZW4gImNpbmVxIiwgImNwbmVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFy
ZVNldCgic2V0bmUiLCA6aW50KQorICAgICAgICB3aGVuICJjaWEiLCAiY3BhIgorICAgICAgICAg
ICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YSIsIDppbnQpCisgICAgICAgIHdoZW4gImNp
YWVxIiwgImNwYWVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YWUi
LCA6aW50KQorICAgICAgICB3aGVuICJjaWIiLCAiY3BiIgorICAgICAgICAgICAgaGFuZGxlWDg2
SW50Q29tcGFyZVNldCgic2V0YiIsIDppbnQpCisgICAgICAgIHdoZW4gImNpYmVxIiwgImNwYmVx
IgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0YmUiLCA6aW50KQorICAg
ICAgICB3aGVuICJjaWd0IiwgImNwZ3QiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRDb21wYXJl
U2V0KCJzZXRnIiwgOmludCkKKyAgICAgICAgd2hlbiAiY2lndGVxIiwgImNwZ3RlcSIKKyAgICAg
ICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGdlIiwgOmludCkKKyAgICAgICAgd2hl
biAiY2lsdCIsICJjcGx0IgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0
bCIsIDppbnQpCisgICAgICAgIHdoZW4gImNpbHRlcSIsICJjcGx0ZXEiCisgICAgICAgICAgICBo
YW5kbGVYODZJbnRDb21wYXJlU2V0KCJzZXRsZSIsIDppbnQpCisgICAgICAgIHdoZW4gInRpbyIK
KyAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldG8iLCA6aW50KQorICAgICAgICB3aGVu
ICJ0aXMiCisgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRzIiwgOmludCkKKyAgICAg
ICAgd2hlbiAidGl6IgorICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDppbnQp
CisgICAgICAgIHdoZW4gInRpbnoiCisgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRu
eiIsIDppbnQpCisgICAgICAgIHdoZW4gInRibyIKKyAgICAgICAgICAgIGhhbmRsZVg4NlNldFRl
c3QoInNldG8iLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAidGJzIgorICAgICAgICAgICAgaGFuZGxl
WDg2U2V0VGVzdCgic2V0cyIsIDpieXRlKQorICAgICAgICB3aGVuICJ0YnoiCisgICAgICAgICAg
ICBoYW5kbGVYODZTZXRUZXN0KCJzZXR6IiwgOmJ5dGUpCisgICAgICAgIHdoZW4gInRibnoiCisg
ICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRueiIsIDpieXRlKQorICAgICAgICB3aGVu
ICJwZWVrIgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZsICN7b3BlcmFuZHNbMF0udmFsdWUg
KiA0fSglZXNwKSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgd2hl
biAicG9rZSIKKyAgICAgICAgICAgICRhc20ucHV0cyAibW92bCAje29wZXJhbmRzWzBdLng4Nk9w
ZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLnZhbHVlICogNH0oJWVzcCkiCisgICAgICAgIHdo
ZW4gImNkcWkiCisgICAgICAgICAgICAkYXNtLnB1dHMgImNkcSIKKyAgICAgICAgd2hlbiAiaWRp
dmkiCisgICAgICAgICAgICAkYXNtLnB1dHMgImlkaXZsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgICAgIHdoZW4gImZpaTJkIgorICAgICAgICAgICAgJGFzbS5wdXRzICJt
b3ZkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3Bl
cmFuZCg6ZG91YmxlKX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5kc1sx
XS54ODZPcGVyYW5kKDppbnQpfSwgJXhtbTciCisgICAgICAgICAgICAkYXNtLnB1dHMgInBzbGxx
ICQzMiwgJXhtbTciCisgICAgICAgICAgICAkYXNtLnB1dHMgInBvciAleG1tNywgI3tvcGVyYW5k
c1syXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICAgd2hlbiAiZmQyaWkiCisgICAgICAg
ICAgICAkYXNtLnB1dHMgIm1vdmQgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAi
bW92c2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwgJXhtbTciCisgICAgICAg
ICAgICAkYXNtLnB1dHMgInBzcmxxICQzMiwgJXhtbTciCisgICAgICAgICAgICAkYXNtLnB1dHMg
Im1vdnNkICV4bW03LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICB3
aGVuICJibyIKKyAgICAgICAgICAgICRhc20ucHV0cyAiam8gI3tvcGVyYW5kc1swXS5hc21MYWJl
bH0iCisgICAgICAgIHdoZW4gImJzIgorICAgICAgICAgICAgJGFzbS5wdXRzICJqcyAje29wZXJh
bmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYnoiCisgICAgICAgICAgICAkYXNtLnB1
dHMgImp6ICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJibnoiCisgICAg
ICAgICAgICAkYXNtLnB1dHMgImpueiAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAg
d2hlbiAibGVhaSIsICJsZWFwIgorICAgICAgICAgICAgJGFzbS5wdXRzICJsZWFsICN7b3BlcmFu
ZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJCYWQgb3Bjb2RlOiAje29wY29kZX0i
CisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlvbktpbmQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5kLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25L
aW5kLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDb2RlU3BlY2lhbGl6YXRpb25LaW5k
X2gKKyNkZWZpbmUgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisKK25hbWVzcGFjZSBKU0Mgewor
CitlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2FsbCwgQ29kZUZvckNvbnN0
cnVjdCB9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIENvZGVTcGVjaWFsaXph
dGlvbktpbmRfaAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25T
bG93UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuaAkocmV2aXNpb24gMTA4MjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3
LDcgQEAKICNkZWZpbmUgQ29tbW9uU2xvd1BhdGhzX2gKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJFeGNlcHRp
b25IZWxwZXJzLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogCkBAIC00MSw2ICs0MiwzOCBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogbmFtZXNwYWNlIENvbW1vblNsb3dQYXRocyB7CiAKK0FMV0FZU19J
TkxJTkUgRXhlY1N0YXRlKiBhcml0eUNoZWNrRm9yKEV4ZWNTdGF0ZSogZXhlYywgUmVnaXN0ZXJG
aWxlKiByZWdpc3RlckZpbGUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBK
U0Z1bmN0aW9uKiBjYWxsZWUgPSBhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKTsKKyAgICBBU1NF
UlQoIWNhbGxlZS0+aXNIb3N0RnVuY3Rpb24oKSk7CisgICAgQ29kZUJsb2NrKiBuZXdDb2RlQmxv
Y2sgPSAmY2FsbGVlLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7
CisgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzID0gZXhlYy0+YXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMoKTsKKworICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9y
IHRoZSB3b3JzdCBjYXNlIHNjZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUg
Y2FsbGVyLgorICAgIGlmICghcmVnaXN0ZXJGaWxlLT5ncm93KGV4ZWMtPnJlZ2lzdGVycygpICsg
bmV3Q29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgKyBuZXdDb2RlQmxvY2stPm1fbnVtQ2FsbGVl
UmVnaXN0ZXJzKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBBU1NFUlQoYXJndW1lbnRDb3Vu
dEluY2x1ZGluZ1RoaXMgPCBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSk7CisKKyAgICAv
LyBUb28gZmV3IGFyZ3VtZW50cyAtLSBjb3B5IGNhbGwgZnJhbWUgYW5kIGFyZ3VtZW50cywgdGhl
biBmaWxsIGluIG1pc3NpbmcgYXJndW1lbnRzIHdpdGggdW5kZWZpbmVkLgorICAgIHNpemVfdCBk
ZWx0YSA9IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpIC0gYXJndW1lbnRDb3VudEluY2x1
ZGluZ1RoaXM7CisgICAgUmVnaXN0ZXIqIHNyYyA9IGV4ZWMtPnJlZ2lzdGVycygpOworICAgIFJl
Z2lzdGVyKiBkc3QgPSBleGVjLT5yZWdpc3RlcnMoKSArIGRlbHRhOworCisgICAgaW50IGk7Cisg
ICAgaW50IGVuZCA9IC1FeGVjU3RhdGU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyk7CisgICAgZm9yIChpID0gLTE7IGkgPj0gZW5kOyAtLWkpCisgICAgICAgIGRzdFtpXSA9
IHNyY1tpXTsKKworICAgIGVuZCAtPSBkZWx0YTsKKyAgICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkp
CisgICAgICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7CisKKyAgICBFeGVjU3RhdGUqIG5ld0V4
ZWMgPSBFeGVjU3RhdGU6OmNyZWF0ZShkc3QpOworICAgIEFTU0VSVCgodm9pZCopbmV3RXhlYyA8
PSByZWdpc3RlckZpbGUtPmVuZCgpKTsKKyAgICByZXR1cm4gbmV3RXhlYzsKK30KKwogQUxXQVlT
X0lOTElORSBib29sIG9wSW5zdGFuY2VPZlNsb3coRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZh
bHVlLCBKU1ZhbHVlIGJhc2VWYWwsIEpTVmFsdWUgcHJvdG8pCiB7CiAgICAgQVNTRVJUKCF2YWx1
ZS5pc0NlbGwoKSB8fCAhYmFzZVZhbC5pc0NlbGwoKSB8fCAhcHJvdG8uaXNDZWxsKCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lv
biAxMDgyNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkJ5dGVjb2RlR2Vu
ZXJhdG9yLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiREZHRHJpdmVyLmgi
CisjaW5jbHVkZSAiRXhlY3V0aW9uSGFybmVzcy5oIgogI2luY2x1ZGUgIkpJVC5oIgogI2luY2x1
ZGUgIkpJVERyaXZlci5oIgogI2luY2x1ZGUgIlBhcnNlci5oIgpAQCAtODgsNyArODksNyBAQCBJ
bnRyaW5zaWMgTmF0aXZlRXhlY3V0YWJsZTo6aW50cmluc2ljKCkgCiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPgogc3RhdGljIHZvaWQgamV0dGlzb25Db2RlQmxvY2soSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhLCBPd25QdHI8VD4mIGNvZGVCbG9jaykKIHsKLSAgICBBU1NFUlQoY29kZUJsb2NrLT5nZXRK
SVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRDb2RlOjpp
c09wdGltaXppbmdKSVQoY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpKTsKICAgICBBU1NFUlQoY29k
ZUJsb2NrLT5hbHRlcm5hdGl2ZSgpKTsKICAgICBPd25QdHI8VD4gY29kZUJsb2NrVG9KZXR0aXNv
biA9IGNvZGVCbG9jay5yZWxlYXNlKCk7CiAgICAgY29kZUJsb2NrID0gc3RhdGljX3BvaW50ZXJf
Y2FzdDxUPihjb2RlQmxvY2tUb0pldHRpc29uLT5yZWxlYXNlQWx0ZXJuYXRpdmUoKSk7CkBAIC0x
NzUsOSArMTc2LDMwIEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZU9wdGltaXoK
ICAgICByZXR1cm4gZXJyb3I7CiB9CiAKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGls
ZUlmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JD
YWxsLCBKSVRDb2RlOjpib3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0
LCByZXN1bHQpOworfQorCitpbmxpbmUgY29uc3QgY2hhciogc2FtcGxpbmdEZXNjcmlwdGlvbihK
SVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCit7CisgICAgc3dpdGNoIChqaXRUeXBlKSB7CisgICAg
Y2FzZSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rOgorICAgICAgICByZXR1cm4gIkludGVycHJl
dGVyIENvbXBpbGF0aW9uIChUT1RBTCkiOworICAgIGNhc2UgSklUQ29kZTo6QmFzZWxpbmVKSVQ6
CisgICAgICAgIHJldHVybiAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSI7CisgICAgY2Fz
ZSBKSVRDb2RlOjpERkdKSVQ6CisgICAgICAgIHJldHVybiAiREZHIENvbXBpbGF0aW9uIChUT1RB
TCkiOworICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gMDsKKyAgICB9Cit9CisKIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGls
ZUludGVybmFsKEV4ZWNTdGF0ZSogZXhlYywgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW5Ob2Rl
LCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Ci0gICAgU2FtcGxpbmdSZWdpb24gc2FtcGxp
bmdSZWdpb24oaml0VHlwZSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCA/ICJCYXNlbGluZSBDb21w
aWxhdGlvbiAoVE9UQUwpIiA6ICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSIpOworICAgIFNhbXBs
aW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKHNhbXBsaW5nRGVzY3JpcHRpb24oaml0VHlwZSkpOwog
ICAgIAogI2lmICFFTkFCTEUoSklUKQogICAgIFVOVVNFRF9QQVJBTShqaXRUeXBlKTsKQEAgLTIx
OCw3ICsyNDAsNyBAQCBKU09iamVjdCogRXZhbEV4ZWN1dGFibGU6OmNvbXBpbGVJbnRlcm5hCiAg
ICAgfQogCiAjaWYgRU5BQkxFKEpJVCkKLSAgICBpZiAoIWppdENvbXBpbGVJZkFwcHJvcHJpYXRl
KCpnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUp
KQorICAgIGlmICghcHJlcGFyZUZvckV4ZWN1dGlvbigqZ2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJs
b2NrLCBtX2ppdENvZGVGb3JDYWxsLCBqaXRUeXBlKSkKICAgICAgICAgcmV0dXJuIDA7CiAjZW5k
aWYKIApAQCAtMzAzLDkgKzMyNSwxNSBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmNv
bXBpbGVPcHRpCiAgICAgcmV0dXJuIGVycm9yOwogfQogCit2b2lkIFByb2dyYW1FeGVjdXRhYmxl
OjpqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3Vs
dCA9IGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9j
aywgbV9qaXRDb2RlRm9yQ2FsbCwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwogSlNPYmplY3QqIFByb2dyYW1FeGVjdXRh
YmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2Nv
cGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1Jl
Z2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJh
c2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7
CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihq
aXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5
cGUpOwpAQCAtMzQ0LDcgKzM3Miw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29t
cGlsZUludGUKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUlm
QXBwcm9wcmlhdGUoKmdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVCbG9jaywgbV9qaXRDb2RlRm9y
Q2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKCpnbG9iYWxEYXRh
LCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAgICAg
ICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC00MjAsNyArNDQ4LDcgQEAgRnVuY3Rpb25Db2RlQmxv
Y2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6YgogICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZl
KCkpCiAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQ29kZUJsb2NrKj4ocmVz
dWx0LT5hbHRlcm5hdGl2ZSgpKTsKICAgICBBU1NFUlQocmVzdWx0KTsKLSAgICBBU1NFUlQocmVz
dWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChK
SVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5cGUoKSkpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTQ0Niw2ICs0NzQsMTggQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6Y29tcGlsZU9wdAogICAgIHJldHVybiBlcnJvcjsKIH0KIAordm9pZCBGdW5jdGlv
bkV4ZWN1dGFibGU6OmppdENvbXBpbGVGb3JDYWxsKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkK
K3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xv
YmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDYWxsLCBtX2ppdENvZGVGb3JDYWxsLCBtX2ppdENvZGVG
b3JDYWxsV2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIEpJVENvZGU6OmJvdHRvbVRpZXJK
SVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisKK3ZvaWQgRnVu
Y3Rpb25FeGVjdXRhYmxlOjpqaXRDb21waWxlRm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSkKK3sKKyAgICBib29sIHJlc3VsdCA9IGppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9w
cmlhdGUoZ2xvYmFsRGF0YSwgbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNv
bnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFi
bGUsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQs
IHJlc3VsdCk7Cit9CisKIEZ1bmN0aW9uQ29kZUJsb2NrKiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNv
ZGVCbG9ja1dpdGhCeXRlY29kZUZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCiB7CiAg
ICAgRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2NrRm9yKGtp
bmQpOwpAQCAtNDkwLDcgKzUzMCw3IEBAIFBhc3NPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+IEZ1
bmN0aW9uRXgKIAogSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvckNhbGxJ
bnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwg
SklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewotICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5n
UmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGls
YXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGlu
Z1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGluZ0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAg
ICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVTRURfUEFSQU0oZXhlYyk7CkBAIC01MTIsNyAr
NTUyLDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIG1f
c3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0ZvckNhbGwtPnNoYXJlZFN5bWJvbFRhYmxlKCk7CiAK
ICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0
ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2Fs
bCwgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBl
KSkKKyAgICBpZiAoIXByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxEYXRh
KCksIG1fY29kZUJsb2NrRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2FsbCwgbV9qaXRDb2RlRm9yQ2Fs
bFdpdGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9yQ2FsbCkpCiAg
ICAgICAgIHJldHVybiAwOwogI2VuZGlmCiAKQEAgLTUzMiw3ICs1NzIsNyBAQCBKU09iamVjdCog
RnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxlRm9yCiAKIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1
dGFibGU6OmNvbXBpbGVGb3JDb25zdHJ1Y3RJbnRlcm5hbChFeGVjU3RhdGUqIGV4ZWMsIFNjb3Bl
Q2hhaW5Ob2RlKiBzY29wZUNoYWluTm9kZSwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogewot
ICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKGppdFR5cGUgPT0gSklUQ29kZTo6QmFz
ZWxpbmVKSVQgPyAiQmFzZWxpbmUgQ29tcGlsYXRpb24gKFRPVEFMKSIgOiAiREZHIENvbXBpbGF0
aW9uIChUT1RBTCkiKTsKKyAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihzYW1wbGlu
Z0Rlc2NyaXB0aW9uKGppdFR5cGUpKTsKICAgICAKICNpZiAhRU5BQkxFKEpJVCkKICAgICBVTlVT
RURfUEFSQU0oaml0VHlwZSk7CkBAIC01NTQsNyArNTk0LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y29tcGlsZUZvcgogICAgIG1fc3ltYm9sVGFibGUgPSBtX2NvZGVCbG9ja0Zv
ckNvbnN0cnVjdC0+c2hhcmVkU3ltYm9sVGFibGUoKTsKIAogI2lmIEVOQUJMRShKSVQpCi0gICAg
aWYgKCFqaXRDb21waWxlRnVuY3Rpb25JZkFwcHJvcHJpYXRlKGV4ZWMtPmdsb2JhbERhdGEoKSwg
bV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2Rl
Rm9yQ29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUpKQorICAg
IGlmICghcHJlcGFyZUZ1bmN0aW9uRm9yRXhlY3V0aW9uKGV4ZWMtPmdsb2JhbERhdGEoKSwgbV9j
b2RlQmxvY2tGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9y
Q29uc3RydWN0V2l0aEFyaXR5Q2hlY2ssIG1fc3ltYm9sVGFibGUsIGppdFR5cGUsIENvZGVGb3JD
b25zdHJ1Y3QpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxMDgyNDYpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDYgKzI3LDcgQEAKICNkZWZpbmUgRXhlY3V0YWJsZV9oCiAKICNpbmNsdWRlICJDYWxs
RGF0YS5oIgorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJK
U0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJOb2Rlcy5o
IgpAQCAtMzksMTIgKzQwLDEyIEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIERlYnVnZ2Vy
OwogICAgIGNsYXNzIEV2YWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7
CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2Rl
QmxvY2s7CiAgICAgY2xhc3MgU2NvcGVDaGFpbk5vZGU7CiAKICAgICBzdHJ1Y3QgRXhjZXB0aW9u
SW5mbzsKICAgICAKLSAgICBlbnVtIENvZGVTcGVjaWFsaXphdGlvbktpbmQgeyBDb2RlRm9yQ2Fs
bCwgQ29kZUZvckNvbnN0cnVjdCB9OwogICAgIGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmlyc3RD
b21waWxhdGlvbiwgT3B0aW1pemluZ0NvbXBpbGF0aW9uIH07CiAKICAgICBpbmxpbmUgYm9vbCBp
c0NhbGwoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQpAQCAtMzI1LDYgKzMyNiw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBFdmFsRXhlY3V0YWJsZSA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBC
YXNlOwogCkBAIC0zNDQsNiArMzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lm
IEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFs
RGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYK
IAogICAgICAgICBFdmFsQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC0zOTAsNiAr
MzkzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNzIFByb2dyYW1FeGVj
dXRhYmxlIDogcHVibGljIFNjcmlwdEV4ZWN1dGFibGUgeworICAgICAgICBmcmllbmQgY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIHB1YmxpYzoKICAgICAgICAgdHlwZWRlZiBTY3Jp
cHRFeGVjdXRhYmxlIEJhc2U7CiAKQEAgLTQxNyw2ICs0MjEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXpl
ZENvZGUoSlNHbG9iYWxEYXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZShKU0dsb2JhbERh
dGEmKTsKICNlbmRpZgogCiAgICAgICAgIFByb2dyYW1Db2RlQmxvY2smIGdlbmVyYXRlZEJ5dGVj
b2RlKCkKQEAgLTQ1OSw2ICs0NjQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEZ1
bmN0aW9uRXhlY3V0YWJsZSA6IHB1YmxpYyBTY3JpcHRFeGVjdXRhYmxlIHsKICAgICAgICAgZnJp
ZW5kIGNsYXNzIEpJVDsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBCYXNlOwog
CkBAIC01MTQsNiArNTIwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJM
RShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ2FsbChKU0dsb2Jh
bERhdGEmKTsKKyAgICAgICAgdm9pZCBqaXRDb21waWxlRm9yQ2FsbChKU0dsb2JhbERhdGEmKTsK
ICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDYWxsKCkgY29uc3QKQEAgLTU0
MSw2ICs1NDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKEpJVCkK
ICAgICAgICAgdm9pZCBqZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxE
YXRhJik7CisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvckNvbnN0cnVjdChKU0dsb2JhbERhdGEm
KTsKICNlbmRpZgogCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3JDb25zdHJ1Y3QoKSBjb25z
dApAQCAtNTg4LDYgKzU5NiwxNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICBq
ZXR0aXNvbk9wdGltaXplZENvZGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZvaWQgaml0Q29tcGlsZUZvcihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKGtpbmQgPT0gQ29kZUZvckNhbGwpIHsKKyAgICAgICAgICAg
ICAgICBqaXRDb21waWxlRm9yQ2FsbChnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBU1NFUlQoa2luZCA9PSBDb2RlRm9yQ29u
c3RydWN0KTsKKyAgICAgICAgICAgIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoZ2xvYmFsRGF0YSk7
CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICAKICAgICAgICAgYm9vbCBpc0dlbmVyYXRlZEZv
cihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRpb25IYXJuZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0aW9uSGFybmVzcy5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgRXhlY3V0aW9uSGFybmVzc19oCisjZGVmaW5lIEV4ZWN1dGlvbkhh
cm5lc3NfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoSklUKQor
CisjaW5jbHVkZSAiSklURHJpdmVyLmgiCisjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50cy5oIgor
CituYW1lc3BhY2UgSlNDIHsKKwordGVtcGxhdGU8dHlwZW5hbWUgQ29kZUJsb2NrVHlwZT4KK2lu
bGluZSBib29sIHByZXBhcmVGb3JFeGVjdXRpb24oSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCBP
d25QdHI8Q29kZUJsb2NrVHlwZT4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwgSklUQ29k
ZTo6SklUVHlwZSBqaXRUeXBlKQoreworI2lmIEVOQUJMRShMTElOVCkKKyAgICBpZiAoSklUQ29k
ZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAgICAgLy8gU3RhcnQgb2ZmIGluIHRo
ZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExMSW50OjpnZXRFbnRyeXBvaW50KGds
b2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSk7CisgICAgICAgIGNvZGVCbG9jay0+
c2V0SklUQ29kZShqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoKSk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGpp
dENvbXBpbGVJZkFwcHJvcHJpYXRlKGdsb2JhbERhdGEsIGNvZGVCbG9jaywgaml0Q29kZSwgaml0
VHlwZSk7Cit9CisKK2lubGluZSBib29sIHByZXBhcmVGdW5jdGlvbkZvckV4ZWN1dGlvbihKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9j
aywgSklUQ29kZSYgaml0Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFy
aXR5Q2hlY2ssIFNoYXJlZFN5bWJvbFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5
cGUgaml0VHlwZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworI2lmIEVOQUJMRShM
TElOVCkKKyAgICBpZiAoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSkpIHsKKyAgICAg
ICAgLy8gU3RhcnQgb2ZmIGluIHRoZSBsb3cgbGV2ZWwgaW50ZXJwcmV0ZXIuCisgICAgICAgIExM
SW50OjpnZXRGdW5jdGlvbkVudHJ5cG9pbnQoZ2xvYmFsRGF0YSwga2luZCwgaml0Q29kZSwgaml0
Q29kZVdpdGhBcml0eUNoZWNrKTsKKyAgICAgICAgY29kZUJsb2NrLT5zZXRKSVRDb2RlKGppdENv
ZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjayk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGtpbmQpOworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkK
KyAgICByZXR1cm4gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBj
b2RlQmxvY2ssIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlDaGVjaywgc3ltYm9sVGFibGUsIGpp
dFR5cGUpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEVOQUJMRShKSVQp
CisKKyNlbmRpZiAvLyBFeGVjdXRpb25IYXJuZXNzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuaAkocmV2aXNpb24gMTA4MjQ2KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3
IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIEpTQXJyYXk7CisgICAgY2xhc3MgTExJ
bnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAgc3RydWN0IFNwYXJzZUFycmF5RW50cnkgOiBwdWJs
aWMgV3JpdGVCYXJyaWVyPFVua25vd24+IHsKICAgICAgICAgdHlwZWRlZiBXcml0ZUJhcnJpZXI8
VW5rbm93bj4gQmFzZTsKQEAgLTEyMiw2ICsxMjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB9
OwogCiAgICAgY2xhc3MgSlNBcnJheSA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKKyAgICAg
ICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNs
YXNzIFdhbGtlcjsKIAogICAgIHByb3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxMDgyNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsOSArMzYsMTAgQEAKIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci0gICAgY2xhc3MgU3Ry
dWN0dXJlOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9w
ZXJ0eURlc2NyaXB0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlOYW1lQXJyYXk7CisgICAgY2xhc3Mg
U3RydWN0dXJlOwogCiAgICAgZW51bSBFbnVtZXJhdGlvbk1vZGUgewogICAgICAgICBFeGNsdWRl
RG9udEVudW1Qcm9wZXJ0aWVzLApAQCAtMTYzLDYgKzE2NCw4IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBzdGF0aWMgYm9vbCBnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoSlNPYmplY3QqLCBF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgUHJvcGVydHlEZXNjcmlwdG9yJik7CiAKICAg
ICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgICAgICAKICAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBtX2NsYXNzSW5mbzsKICAgICAgICAg
V3JpdGVCYXJyaWVyPFN0cnVjdHVyZT4gbV9zdHJ1Y3R1cmU7CiAgICAgfTsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHJldmlzaW9uIDEwODI0NikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAkod29ya2luZyBj
b3B5KQpAQCAtMzMsNiArMzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlv
blByb3RvdHlwZTsKICAgICBjbGFzcyBKU0FjdGl2YXRpb247CiAgICAgY2xhc3MgSlNHbG9iYWxP
YmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE5hdGl2
ZUV4ZWN1dGFibGU7CiAgICAgY2xhc3MgU291cmNlQ29kZTsKICAgICBuYW1lc3BhY2UgREZHIHsK
QEAgLTE0MCw2ICsxNDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSBjb25z
dDsKIAogICAgICAgICBzdGF0aWMgSlNWYWx1ZSBhcmd1bWVudHNHZXR0ZXIoRXhlY1N0YXRlKiwg
SlNWYWx1ZSwgY29uc3QgSWRlbnRpZmllciYpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCShyZXZpc2lvbiAxMDgyNDYpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiRGVidWdnZXJBY3RpdmF0aW9uLmgiCiAjaW5j
bHVkZSAiRnVuY3Rpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgor
I2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5o
IgogI2luY2x1ZGUgIkpTQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkpTQVBJVmFsdWVXcmFwcGVy
LmgiCkBAIC0xNDEsNiArMTQyLDggQEAgSlNHbG9iYWxEYXRhOjpKU0dsb2JhbERhdGEoR2xvYmFs
RGF0YVR5cAogICAgICwga2V5d29yZHMoYWRvcHRQdHIobmV3IEtleXdvcmRzKHRoaXMpKSkKICAg
ICAsIGludGVycHJldGVyKDApCiAgICAgLCBoZWFwKHRoaXMsIGhlYXBTaXplKQorICAgICwganNB
cnJheUNsYXNzSW5mbygmSlNBcnJheTo6c19pbmZvKQorICAgICwganNGaW5hbE9iamVjdENsYXNz
SW5mbygmSlNGaW5hbE9iamVjdDo6c19pbmZvKQogI2lmIEVOQUJMRShERkdfSklUKQogICAgICwg
c2l6ZU9mTGFzdFNjcmF0Y2hCdWZmZXIoMCkKICNlbmRpZgpAQCAtMjE2LDkgKzIxOSwxMyBAQCBK
U0dsb2JhbERhdGE6OkpTR2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwCiAgICAgaml0U3R1YnMgPSBh
ZG9wdFB0cihuZXcgSklUVGh1bmtzKHRoaXMpKTsKICNlbmRpZgogCi0gICAgaW50ZXJwcmV0ZXIt
PmluaXRpYWxpemUodGhpcy0+Y2FuVXNlSklUKCkpOworICAgIGludGVycHJldGVyLT5pbml0aWFs
aXplKCZsbGludERhdGEsIHRoaXMtPmNhblVzZUpJVCgpKTsKKyAgICAKKyAgICBpbml0aWFsaXpl
SG9zdENhbGxSZXR1cm5WYWx1ZSgpOyAvLyBUaGlzIGlzIG5lZWRlZCB0byBjb252aW5jZSB0aGUg
bGlua2VyIG5vdCB0byBkcm9wIGhvc3QgY2FsbCByZXR1cm4gc3VwcG9ydC4KIAogICAgIGhlYXAu
bm90aWZ5SXNTYWZlVG9Db2xsZWN0KCk7CisgICAgCisgICAgbGxpbnREYXRhLnBlcmZvcm1Bc3Nl
cnRpb25zKCp0aGlzKTsKIH0KIAogdm9pZCBKU0dsb2JhbERhdGE6OmNsZWFyQnVpbHRpblN0cnVj
dHVyZXMoKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRh
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxE
YXRhLmgJKHJldmlzaW9uIDEwODI0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMCwxNSArMzAsMTYgQEAKICNkZWZp
bmUgSlNHbG9iYWxEYXRhX2gKIAogI2luY2x1ZGUgIkNhY2hlZFRyYW5zY2VuZGVudGFsRnVuY3Rp
b24uaCIKLSNpbmNsdWRlICJJbnRyaW5zaWMuaCIKICNpbmNsdWRlICJEYXRlSW5zdGFuY2VDYWNo
ZS5oIgogI2luY2x1ZGUgIkV4ZWN1dGFibGVBbGxvY2F0b3IuaCIKICNpbmNsdWRlICJIZWFwLmgi
Ci0jaW5jbHVkZSAiU3Ryb25nLmgiCisjaW5jbHVkZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAi
SklUU3R1YnMuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgi
CiAjaW5jbHVkZSAiTnVtZXJpY1N0cmluZ3MuaCIKICNpbmNsdWRlICJTbWFsbFN0cmluZ3MuaCIK
KyNpbmNsdWRlICJTdHJvbmcuaCIKICNpbmNsdWRlICJUZXJtaW5hdG9yLmgiCiAjaW5jbHVkZSAi
VGltZW91dENoZWNrZXIuaCIKICNpbmNsdWRlICJXZWFrUmFuZG9tLmgiCkBAIC02NSw2ICs2Niw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNz
IEpTT2JqZWN0OwogICAgIGNsYXNzIEtleXdvcmRzOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogICAgIGNsYXNzIFBhcnNlckFy
ZW5hOwogICAgIGNsYXNzIFJlZ0V4cENhY2hlOwpAQCAtMjQxLDYgKzI0MywxMiBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgSGVhcCBoZWFwOwogCiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9u
OworCisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QganNBcnJheUNsYXNzSW5mbzsKKyAg
ICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOworCisg
ICAgICAgIExMSW50OjpEYXRhIGxsaW50RGF0YTsKKwogI2lmIEVOQUJMRShKSVQpCiAgICAgICAg
IFJldHVybkFkZHJlc3NQdHIgZXhjZXB0aW9uTG9jYXRpb247CiAgICAgICAgIEpTVmFsdWUgaG9z
dENhbGxSZXR1cm5WYWx1ZTsKQEAgLTM0Niw2ICszNTQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICN1
bmRlZiByZWdpc3RlclR5cGVkQXJyYXlGdW5jdGlvbgogCiAgICAgcHJpdmF0ZToKKyAgICAgICAg
ZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpT
R2xvYmFsRGF0YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CiAg
ICAgICAgIHN0YXRpYyBKU0dsb2JhbERhdGEqJiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAg
ICAgICAgIHZvaWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTA4MjQ2KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBj
b3B5KQpAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlv
blByb3RvdHlwZTsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgR2xvYmFsQ29k
ZUJsb2NrOworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRp
dmVFcnJvckNvbnN0cnVjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xh
c3MgUmVnRXhwQ29uc3RydWN0b3I7CkBAIC0zMzYsNiArMzM3LDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQ
cm9wZXJ0eUluZm8qLCBpbnQgY291bnQpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1F
OiBGb2xkIHJlc2V0IGludG8gaW5pdC4KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBp
bml0KEpTT2JqZWN0KiB0aGlzVmFsdWUpOwogICAgICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJv
dG90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAko
cmV2aXNpb24gMTA4MjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmpl
Y3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgSGFzaEVudHJ5OwogICAgIGNsYXNzIElu
dGVybmFsRnVuY3Rpb247CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNs
YXNzIE1hcmtlZEJsb2NrOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFz
cyBQcm9wZXJ0eU5hbWVBcnJheTsKQEAgLTI2Miw2ICsyNjMsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgSlNPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9y
YWdlIGlubGluZVN0b3JhZ2UpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIE5vYm9keSBzaG91
bGQgZXZlciBhc2sgYW55IG9mIHRoZXNlIHF1ZXN0aW9ucyBvbiBzb21ldGhpbmcgYWxyZWFkeSBr
bm93biB0byBiZSBhIEpTT2JqZWN0LgogICAgICAgICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVX
cmFwcGVyOwogICAgICAgICB1c2luZyBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyOwpAQCAtMzY3LDYg
KzM3MCw4IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAg
ICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0IEpTRmluYWxPYmplY3QoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgICAgIDog
SlNPYmplY3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAg
IHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRl
cmF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1By
b3BlcnR5TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwODI0NikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpA
QCAtMzgsNiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElkZW50aWZpZXI7
CiAgICAgY2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwog
CiAgICAgY2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciA6IHB1YmxpYyBKU0NlbGwgewogICAg
ICAgICBmcmllbmQgY2xhc3MgSklUOwpAQCAtOTYsNiArOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3Io
RXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEs
IHNpemVfdCBudW1DYWNoZWFibGVTbG90KTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0
dXJlPiBtX2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaAkocmV2aXNpb24gMTA4MjQ2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogbmFt
ZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBKU1N0cmluZzsKKyAgICBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CiAKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEq
KTsKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsKQEAgLTI0MCw2ICsy
NDEsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZv
aWQgcmVzb2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNv
bHZlUm9wZVNsb3dDYXNlKFVDaGFyKikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAxMDgyNDYpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYg
KzM0LDggQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCA9IDE7IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIHRvIG1ha2UgZG9j
dW1lbnQuYWxsIHVuZGV0ZWN0YWJsZS4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW1wbGVt
ZW50c0hhc0luc3RhbmNlID0gMSA8PCAxOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVy
cmlkZXNIYXNJbnN0YW5jZSA9IDEgPDwgMjsKQEAgLTg3LDYgKzg5LDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGlzU2V0T25GbGFnczEo
dW5zaWduZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA8PSAoMSA8PCA3KSk7IHJldHVybiBt
X2ZsYWdzICYgZmxhZzsgfQogICAgICAgICBib29sIGlzU2V0T25GbGFnczIodW5zaWduZWQgZmxh
ZykgY29uc3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8PCA4KSk7IHJldHVybiBtX2ZsYWdzMiAmIChm
bGFnID4+IDgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFs
dWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFs
dWUuY3BwCShyZXZpc2lvbiAxMDgyNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIEpTT2JqZWN0
KiBKU1ZhbHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEUKIAogY2hhciogSlNWYWx1ZTo6ZGVzY3Jp
cHRpb24oKQogewotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZSA9IDY0OworICAgIHN0YXRp
YyBjb25zdCBzaXplX3Qgc2l6ZSA9IDEyODsKICAgICBzdGF0aWMgY2hhciBkZXNjcmlwdGlvbltz
aXplXTsKIAogICAgIGlmICghKnRoaXMpCkBAIC0xMjcsMTQgKzEyNywxNCBAQCBjaGFyKiBKU1Zh
bHVlOjpkZXNjcmlwdGlvbigpCiAgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAi
SW50MzI6ICVkIiwgYXNJbnQzMigpKTsKICAgICBlbHNlIGlmIChpc0RvdWJsZSgpKSB7CiAjaWYg
VVNFKEpTVkFMVUU2NCkKLSAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3Vi
bGU6ICVsZiwgJWx4IiwgYXNEb3VibGUoKSwgcmVpbnRlcnByZXREb3VibGVUb0ludHB0cihhc0Rv
dWJsZSgpKSk7CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAl
bHgsICVsZiIsIHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIoYXNEb3VibGUoKSksIGFzRG91Ymxl
KCkpOwogI2Vsc2UKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgZG91YmxlIGFzRG91Ymxl
OwogICAgICAgICAgICAgdWludDMyX3QgYXNUd29JbnQzMnNbMl07CiAgICAgICAgIH0gdTsKICAg
ICAgICAgdS5hc0RvdWJsZSA9IGFzRG91YmxlKCk7Ci0gICAgICAgIHNucHJpbnRmKGRlc2NyaXB0
aW9uLCBzaXplLCAiRG91YmxlOiAlbGYsICUwOHg6JTA4eCIsIGFzRG91YmxlKCksIHUuYXNUd29J
bnQzMnNbMV0sIHUuYXNUd29JbnQzMnNbMF0pOworICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlv
biwgc2l6ZSwgIkRvdWJsZTogJTA4eDolMDh4LCAlbGYiLCB1LmFzVHdvSW50MzJzWzFdLCB1LmFz
VHdvSW50MzJzWzBdLCBhc0RvdWJsZSgpKTsKICNlbmRpZgogICAgIH0gZWxzZSBpZiAoaXNDZWxs
KCkpCiAgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiQ2VsbDogJXAiLCBhc0Nl
bGwoKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZp
c2lvbiAxMDgyNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IGNsYXNzIFNwZWN1bGF0aXZlSklUOwogICAgIH0KICNlbmRpZgorICAgIG5hbWVzcGFjZSBMTElu
dCB7CisgICAgICAgIGNsYXNzIERhdGE7CisgICAgfQogCiAgICAgc3RydWN0IENsYXNzSW5mbzsK
ICAgICBzdHJ1Y3QgSW5zdHJ1Y3Rpb247CkBAIC0xMTgsNiArMTIxLDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBERkc6Ok9TUkV4aXRDb21waWxlcjsKICAgICAgICAg
ZnJpZW5kIGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CiAjZW5kaWYKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50OjpEYXRhOwogCiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgZW5jb2RlKEpTVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMTA4MjQ2KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zOCwxMCArMzgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBM
TEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAKICAgICBjbGFzcyBK
U1ZhcmlhYmxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBmcmll
bmQgY2xhc3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwogCiAgICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lv
biAxMDgyNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsMTAgQEAgdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9u
Rm9yQ29uc3RydWN0SW5saQogCiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsKIAoraW50
MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2ludDMyX3QgZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworaW50MzJfdCBleGVjdXRp
b25Db3VudGVyVmFsdWVGb3JKSVRTb29uOworCiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1
ZUZvck9wdGltaXplQWZ0ZXJXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVG
b3JEb250T3B0aW1pemVBbnl0aW1lU29vbjsKQEAgLTEzNyw2ICsxNDEsMTAgQEAgdm9pZCBpbml0
aWFsaXplT3B0aW9ucygpCiAgICAgCiAgICAgU0VUKG1heGltdW1JbmxpbmluZ0RlcHRoLCA1KTsK
IAorICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcCwgICAgIC0x
MDApOworICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb24s
IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKKyAgICBTRVQoZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9ySklUU29vbiwgICAgICAgICAgICAtMTAwKTsKKwogICAgIFNFVChleGVj
dXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwLCAgICAgLTEwMDApOwogICAg
IFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCwgLTUw
MDApOwogICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1l
U29vbiwgc3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOwpAQCAtMTg1LDYgKzE5
Myw4IEBAIHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIGlmIChjcHVzVG9Vc2UgPCAxKQog
ICAgICAgICBjcHVzVG9Vc2UgPSAxOwogICAgIAorICAgIGNwdXNUb1VzZSA9IDE7CisgICAgCiAg
ICAgU0VUKG51bWJlck9mR0NNYXJrZXJzLCBjcHVzVG9Vc2UpOwogCiAgICAgQVNTRVJUKGV4ZWN1
dGlvbkNvdW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uIDw9IGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEwODI0NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiAr
MzcsMTAgQEAgZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cgogCiBleHRl
cm4gdW5zaWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERlcHRoIG9mIGlubGluZSBzdGFj
aywgc28gMSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMuCiAKK2V4dGVybiBpbnQz
Ml90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworZXh0ZXJuIGludDMy
X3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworZXh0ZXJuIGlu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogZXh0ZXJuIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGV4dGVybiBpbnQz
Ml90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogZXh0
ZXJuIGludDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNv
b247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShy
ZXZpc2lvbiAxMDgyNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNo
YWluLmgJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgY2xhc3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNs
YXNzIEpTT2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFz
cyBTY29wZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCkBAIC05
MSw2ICs5Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFU
QSBjb25zdCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAg
ICAgfTsKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
Y3BwCShyZXZpc2lvbiAxMDgyNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjIsNyArMzIyLDcgQEAgU3RydWN0dXJl
KiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgICAgICAgICAgdHJhbnNpdGlvbi0+
Z3Jvd1Byb3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgICAgIHJldHVybiB0cmFuc2l0aW9u
OwogICAgIH0KLQorICAgIAogICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNyZWF0ZShnbG9i
YWxEYXRhLCBzdHJ1Y3R1cmUpOwogCiAgICAgdHJhbnNpdGlvbi0+bV9jYWNoZWRQcm90b3R5cGVD
aGFpbi5zZXRNYXlCZU51bGwoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbiwgc3RydWN0dXJlLT5tX2Nh
Y2hlZFByb3RvdHlwZUNoYWluLmdldCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMDgyNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsK
ICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJh
eURhdGE7CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CkBAIC0xOTYsNiArMTk3LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5m
byBzX2luZm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZz
ZXRzRXh0cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0
dXJlKEpTR2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNv
bnN0IFR5cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKik7CiAgICAgICAgIFN0cnVjdHVyZShKU0ds
b2JhbERhdGEmKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVj
dHVyZSopOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hh
aW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmVDaGFpbi5oCShyZXZpc2lvbiAxMDgyNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAg
IGNsYXNzIFN0cnVjdHVyZTsKIAogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluIDogcHVibGljIEpT
Q2VsbCB7CkBAIC03NCw2ICs3NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAg
ICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgICAgICAKICAgICAgICAgU3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJl
Kik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIE93bkFy
cmF5UHRyPFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd3RmL0lubGluZUFTTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS93dGYvSW5saW5lQVNNLmgJKHJldmlzaW9uIDEwODI0NikKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvSW5saW5lQVNNLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDQgKzcw
LDExIEBACiAjZGVmaW5lIEhJREVfU1lNQk9MKG5hbWUpCiAjZW5kaWYKIAorLy8gRklYTUU6IGZp
Z3VyZSBvdXQgaG93IHRoaXMgd29ya3Mgb24gYWxsIHRoZSBwbGF0Zm9ybXMuIEkga25vdyB0aGF0
CisvLyBvbiBMaW51eCwgdGhlIHByZWZlcnJlZCBmb3JtIGlzICIuTHN0dWZmIiBhcyBvcHBvc2Vk
IHRvICJMc3R1ZmYiLgorLy8gRG9uJ3Qga25vdyBhYm91dCBhbnkgb2YgdGhlIG90aGVycy4KKyNp
ZiBQTEFURk9STShNQUMpCisjZGVmaW5lIExPQ0FMX0xBQkVMX1NUUklORyhuYW1lKSAiTCIgI25h
bWUKKyNlbmRpZgorCiAjZW5kaWYgLy8gSW5saW5lQVNNX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDEwODI0NikKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTIyLDYgKzkyMiwxMiBAQAog
I2RlZmluZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCisvKiBPbiBzb21lIG9mIHRoZSBwbGF0Zm9y
bXMgd2hlcmUgd2UgaGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNvIGhhdmUgdGhlIAorICAgbG93
LWxldmVsIGludGVycHJldGVyLiAqLworI2lmICFkZWZpbmVkKEVOQUJMRV9MTElOVCkgJiYgRU5B
QkxFKEpJVCkgJiYgT1MoREFSV0lOKSAmJiAoQ1BVKFg4NikgfHwgQ1BVKEFSTV9USFVNQjIpKSAm
JiBVU0UoSlNWQUxVRTMyXzY0KQorI2RlZmluZSBFTkFCTEVfTExJTlQgMQorI2VuZGlmCisKICNp
ZiAhZGVmaW5lZChFTkFCTEVfREZHX0pJVCkgJiYgRU5BQkxFKEpJVCkKIC8qIEVuYWJsZSB0aGUg
REZHIEpJVCBvbiBYODYgYW5kIFg4Nl82NC4gIE9ubHkgdGVzdGVkIG9uIE1hYyBhbmQgR05VL0xp
bnV4LiAqLwogI2lmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSkgJiYgKFBMQVRGT1JNKE1BQykg
fHwgT1MoTElOVVgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExp
bmtlZExpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRp
bmVsTGlua2VkTGlzdC5oCShyZXZpc2lvbiAxMDgyNDYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvd3RmL1NlbnRpbmVsTGlua2VkTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4
IEBAIHB1YmxpYzoKIAogICAgIGl0ZXJhdG9yIGJlZ2luKCk7CiAgICAgaXRlcmF0b3IgZW5kKCk7
CisgICAgCisgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gYmVnaW4oKSA9PSBlbmQoKTsgfQog
CiBwcml2YXRlOgogICAgIFJhd05vZGUgbV9oZWFkU2VudGluZWw7CkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDEwODI0NikKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDYgKzQzLDggQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlN0cmluZyAqIENG
U3RyaQogLy8gTGFuZGluZyB0aGUgZmlsZSBtb3ZlcyBpbiBvbmUgcGF0Y2gsIHdpbGwgZm9sbG93
IG9uIHdpdGggcGF0Y2hlcyB0byBjaGFuZ2UgdGhlIG5hbWVzcGFjZXMuCiBuYW1lc3BhY2UgSlND
IHsKIHN0cnVjdCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5zbGF0b3I7CituYW1lc3BhY2UgTExJbnQg
eyBjbGFzcyBEYXRhOyB9CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4gc3RydWN0IElkZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjsKIHN0cnVj
dCBJZGVudGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9yOwogfQpAQCAtNzIsNyArNzQsOSBA
QCBjbGFzcyBTdHJpbmdJbXBsIHsKICAgICBmcmllbmQgc3RydWN0IFdURjo6U3Vic3RyaW5nVHJh
bnNsYXRvcjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6VUNoYXJCdWZmZXJUcmFuc2xhdG9yOwog
ICAgIGZyaWVuZCBjbGFzcyBBdG9taWNTdHJpbmdJbXBsOwotCisgICAgZnJpZW5kIGNsYXNzIEpT
Qzo6TExJbnQ6OkRhdGE7CisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFj
dG9yOworICAgIAogcHJpdmF0ZToKICAgICBlbnVtIEJ1ZmZlck93bmVyc2hpcCB7CiAgICAgICAg
IEJ1ZmZlckludGVybmFsLApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4MjQ2KQorKysgU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTItMDItMTggIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mg
c2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3OTY5
ND4KKworICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KKyAgICAgICAgCisg
ICAgICAgIE5vIG5ldyB0ZXN0cywgYmVjYXVzZSB0aGVyZSBpcyBubyBjaGFuZ2UgaW4gYmVoYXZp
b3IuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKwogMjAxMi0wMi0yMCAgUm9iaW4gQ2Fv
ICA8cm9iaW4uY2FvQHRvcmNobW9iaWxlLmNvbS5jbj4KIAogICAgICAgICBbQmxhY2tCZXJyeV0g
VXBzdHJlYW0gdGhlIGZpcnN0IGZldyBmaWxlcyBpbiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2Jl
cnJ5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA4MjQ2KQorKysgU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1LDcgQEAg
U0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vZGVidWdnZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9pbnRlcnByZXRlciIKICAg
ICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ppdCIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2xsaW50IgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcGFyc2VyIgogICAgICIke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50
aW1lIgpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODI0NikKKysrIFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEtMjYgIEZpbGlw
IFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mgc2hvdWxkIGJlIGEgdHJp
cGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3OTY5ND4KKworICAgICAgICBS
ZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KKworICAgICAgICBDaGFuZ2VkIEVGTCdzIGJ1
aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9yeSBpbiBKYXZhU2NyaXB0Q29yZS4K
KyAgICAgICAgCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisKIDIwMTItMDItMTYgIExlbyBZ
YW5nICA8bGVvLnlhbmdAdG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAgICAgIFtCbGFja0JlcnJ5
XSBBZGFwdCB0byB0aGUgcmVtb3ZhbCBvZiBXZWJTdHJpbmdJbWwuaApJbmRleDogU291cmNlL1dl
YktpdC9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAxMDgyNDYpCisrKyBTb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC00NSw2ICs0NSw3IEBAIFNFVChXZWJLaXRfSU5DTFVERV9ESVJF
Q1RPUklFUwogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vZGVidWdnZXIiCiAgICAgIiR7SkFW
QVNDUklQVENPUkVfRElSfS9pbnRlcnByZXRlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9
L2ppdCIKKyAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2xsaW50IgogICAgICIke0pBVkFTQ1JJ
UFRDT1JFX0RJUn0vcGFyc2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vcHJvZmlsZXIi
CiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9ydW50aW1lIgpJbmRleDogVG9vbHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4MjQ2KQorKysg
VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMDEt
MjcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICBKU0Mgc2hvdWxk
IGJlIGEgdHJpcGxlLXRpZXIgVk0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTc1ODEyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xMDA3OTY5ND4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KKworICAgICAgICBDaGFuZ2Vk
IEVGTCdzIGJ1aWxkIHN5c3RlbSB0byBpbmNsdWRlIGEgbmV3IGRpcmVjdG9yeSBpbiBKYXZhU2Ny
aXB0Q29yZS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dDoK
KwogMjAxMi0wMi0yMCAgSsOhbm9zIEJhZGljcyAgPGRpY3NrYUBnbWFpbC5jb20+CiAKICAgICAg
ICAgW1F0XSBydW4tcXR3ZWJraXQtdGVzdHMgZG9lc24ndCBjb25zaWRlciB0aW1lb3V0cyBhcyBm
YWlsdXJlcwpJbmRleDogVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9DTWFrZUxpc3RzLnR4dAkocmV2
aXNpb24gMTA4MjQ2KQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlzdHMudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC03MCwxMCArNzAsMTIgQEAgU0VUKER1bXBSZW5kZXJUcmVlX0lO
Q0xVREVfRElSRUNUT1JJRVMKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0KICAgICAke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vQVBJCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2Fzc2VtYmxlcgor
ICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9ieXRlY29kZQogICAgICR7SkFWQVNDUklQVENPUkVf
RElSfS9kZmcKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaGVhcAogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9pbnRlcnByZXRlcgogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQKKyAg
ICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
cnVudGltZQogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9Gb3J3YXJkaW5nSGVhZGVycwogICAg
ICR7SkFWQVNDUklQVENPUkVfRElSfS93dGYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127932</attachid>
            <date>2012-02-21 01:04:27 -0800</date>
            <delta_ts>2012-02-21 12:15:59 -0800</delta_ts>
            <desc>fix for elf</desc>
            <filename>fixelf_patch_1.diff</filename>
            <type>text/plain</type>
            <size>4544</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4MzIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDEyLTAyLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
QXR0ZW1wdGVkIGJ1aWxkIGZpeCBmb3IgRUxGIHBsYXRmb3Jtcy4KKworICAgICAgICAqIGRmZy9E
RkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQyk6CisgICAgICAgIChKU0M6OmdldEhvc3RD
YWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKToKKyAgICAgICAgKiBqaXQvSG9zdENhbGxSZXR1
cm5WYWx1ZS5jcHA6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJldHVy
blZhbHVlLmg6CisgICAgICAgIChKU0M6OmluaXRpYWxpemVIb3N0Q2FsbFJldHVyblZhbHVlKToK
KwogMjAxMi0wMi0yMCAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAg
IEpTQyBzaG91bGQgYmUgYSB0cmlwbGUtdGllciBWTQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCShyZXZpc2lvbiAxMDgzMDkpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MDQ4LDYgKzEwNDgsNTIgQEAgdm9pZCBERkdfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRT
cAogI2VuZGlmCiAKIH0gLy8gZXh0ZXJuICJDIgotfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwor
fSAvLyBuYW1lc3BhY2UgREZHCisKKyNpZiBDT01QSUxFUihHQ0MpCisKKyNpZiBDUFUoWDg2XzY0
KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICJcbiIKK0hJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9T
VFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibW92IC00MCglcjEz
KSwgJXIxM1xuIgorICAgICJtb3YgJXIxMywgJXJkaVxuIgorICAgICJqbXAgIiBTWU1CT0xfU1RS
SU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIK
Kyk7CisjZWxpZiBDUFUoWDg2KQorYXNtICgKKyIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK0hJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFs
dWUpICJcbiIKK1NZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIK
KyAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgorICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgor
ICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZWxpZiBDUFUoQVJNX1RIVU1CMikKK2FzbSAoCisi
LnRleHQiICJcbiIKKyIuYWxpZ24gMiIgIlxuIgorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIlxuIgorIi50aHVtYiIgIlxuIgorIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJB
TShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICI6IiAiXG4iCisgICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgorICAg
ICJjcHkgcjAsIHI1IiAiXG4iCisgICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKKyk7CisjZW5kaWYKKworZXh0
ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRI
b3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
aWYgKCFleGVjKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRhKCkuaG9zdENhbGxSZXR1
cm5WYWx1ZSk7Cit9CisKKyNlbmRpZiAvLyBDT01QSUxFUihHQ0MpCisKK30gLy8gbmFtZXNwYWNl
IEpTQwogCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxS
ZXR1cm5WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9I
b3N0Q2FsbFJldHVyblZhbHVlLmNwcAkocmV2aXNpb24gMTA4MzA5KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQsNDkgKzM0LDcgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLSNpZiBDT01QSUxFUihHQ0MpCi0K
LSNpZiBDUFUoWDg2XzY0KQotYXNtICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RD
YWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUp
ICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAg
ICAibW92IC00MCglcjEzKSwgJXIxM1xuIgotICAgICJtb3YgJXIxMywgJXJkaVxuIgotICAgICJq
bXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhF
eGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoWDg2KQotYXNtICgKLSIuZ2xvYmwgIiBTWU1C
T0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhv
c3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5W
YWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglZWRpKSwgJWVkaVxuIgotICAgICJtb3YgJWVk
aSwgNCglZXNwKVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoQVJNX1RI
VU1CMikKLWFzbSAoCi0iLnRleHQiICJcbiIKLSIuYWxpZ24gMiIgIlxuIgotIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgotIi50aHVtYiIgIlxuIgotIi50aHVtYl9mdW5jICIg
VEhVTUJfRlVOQ19QQVJBTShnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RS
SU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICI6IiAiXG4iCi0gICAgImxkciByNSwgW3I1LCAj
LTQwXSIgIlxuIgotICAgICJjcHkgcjAsIHI1IiAiXG4iCi0gICAgImIgIiBTWU1CT0xfU1RSSU5H
X1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7
Ci0jZW5kaWYKLQotZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZB
TFVFX09QVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShFeGVjU3RhdGUq
IGV4ZWMpCi17Ci0gICAgaWYgKCFleGVjKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KEpTVmFsdWUoKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT5nbG9iYWxEYXRh
KCkuaG9zdENhbGxSZXR1cm5WYWx1ZSk7Ci19Ci0KLSNlbmRpZiAvLyBDT01QSUxFUihHQ0MpCisv
LyBOb3RoaW5nIHRvIHNlZSBoZXJlLgogCiB9IC8vIG5hbWVzcGFjZSBKU0MKIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHJldmlz
aW9uIDEwODMwOSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5W
YWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCw3IEBAIGV4dGVybiAiQyIgRW5jb2Rl
ZEpTVmFsdWUgSE9TVF9DQUxMX1JFVFUKIAogaW5saW5lIHZvaWQgaW5pdGlhbGl6ZUhvc3RDYWxs
UmV0dXJuVmFsdWUoKQogeworICAgIGdldEhvc3RDYWxsUmV0dXJuVmFsdWUoKTsKICAgICBnZXRI
b3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSgwKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>127938</attachid>
            <date>2012-02-21 01:33:06 -0800</date>
            <delta_ts>2012-02-21 12:15:59 -0800</delta_ts>
            <desc>fix for non-DFG build and DFG crashes</desc>
            <filename>fixelf2_patch_1.diff</filename>
            <type>text/plain</type>
            <size>2239</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4MzI1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBA
CisyMDEyLTAyLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
Rml4IG1hc3NpdmUgY3Jhc2hlcyBpbiBhbGwgdGVzdHMgaW50cm9kdWNlZCBieSBwcmV2aW91cyBi
dWlsZCBmaXgsIGFuZCBmaXggbm9uLURGRyBidWlsZC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODEyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5jcHA6CisgICAgICAg
IChKU0MpOgorICAgICAgICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmg6CisgICAgICAgIChK
U0M6OmluaXRpYWxpemVIb3N0Q2FsbFJldHVyblZhbHVlKToKKwogMjAxMi0wMi0yMSAgRmlsaXAg
UGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIEF0dGVtcHRlZCBidWlsZCBmaXgg
Zm9yIEVMRiBwbGF0Zm9ybXMuCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09w
ZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDEwODMyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDYgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJERkdPcGVyYXRpb25zLmgiCiAKLSNpZiBF
TkFCTEUoREZHX0pJVCkKLQogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRGR09T
UkV4aXQuaCIKICNpbmNsdWRlICJERkdSZXBhdGNoLmgiCkBAIC0zOSw2ICszNyw4IEBACiAjaW5j
bHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiT3BlcmF0aW9ucy5oIgogCisjaWYgRU5B
QkxFKERGR19KSVQpCisKICNpZiBDUFUoWDg2XzY0KQogCiAjZGVmaW5lIEZVTkNUSU9OX1dSQVBQ
RVJfV0lUSF9SRVRVUk5fQUREUkVTUyhmdW5jdGlvbiwgcmVnaXN0ZXIpIFwKQEAgLTEwNDgsMTAg
KzEwNDgsMTQgQEAgdm9pZCBERkdfT1BFUkFUSU9OIGRlYnVnT3BlcmF0aW9uUHJpbnRTcAogI2Vu
ZGlmCiAKIH0gLy8gZXh0ZXJuICJDIgotfSAvLyBuYW1lc3BhY2UgREZHCit9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6REZHCisKKyNlbmRpZgogCiAjaWYgQ09NUElMRVIoR0NDKQogCituYW1lc3BhY2Ug
SlNDIHsKKwogI2lmIENQVShYODZfNjQpCiBhc20gKAogIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkco
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgpAQCAtMTA5Miw4ICsxMDk2LDcgQEAgZXh0ZXJu
ICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVQogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoZXhlYy0+Z2xvYmFsRGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwogfQogCi0jZW5k
aWYgLy8gQ09NUElMRVIoR0NDKQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKIAotI2VuZGlmCisjZW5k
aWYgLy8gQ09NUElMRVIoR0NDKQorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hv
c3RDYWxsUmV0dXJuVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuaAkocmV2aXNpb24gMTA4MzIzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTUwLDcgKzUwLDYgQEAgZXh0ZXJuICJDIiBFbmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVQog
CiBpbmxpbmUgdm9pZCBpbml0aWFsaXplSG9zdENhbGxSZXR1cm5WYWx1ZSgpCiB7Ci0gICAgZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSgpOwogICAgIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhl
Y1N0YXRlKDApOwogfQogCg==
</data>
<flag name="review"
          id="130196"
          type_id="1"
          status="+"
          setter="ossy"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128019</attachid>
            <date>2012-02-21 12:15:59 -0800</date>
            <delta_ts>2012-02-21 12:15:59 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>triple_tier_9001.diff</filename>
            <type>text/plain</type>
            <size>511100</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4MzU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwxMjEgKzEsMyBA
QAotMjAxMi0wMi0yMSAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+Ci0KLSAgICAgICAg
Um9sbCBvdXQgcjEwODMwOSwgcjEwODMyMywgYW5kIHIxMDgzMjYKLQotICAgICAgICBUaGV5IGJy
b2tlIHRoZSAzMi1iaXQgTGlvbiBidWlsZC4KLQotICAgICAgICBPcmlnaW5hbCBidWdzIGlzIDxo
dHRwOi8vd2Via2l0Lm9yZy9iLzc1ODEyPiA8cmRhcjovL3Byb2JsZW0vMTAwNzk2OTQ+LgotCi0g
ICAgICAgICogQ01ha2VMaXN0cy50eHQ6Ci0gICAgICAgICogR05VbWFrZWZpbGUuYW06Ci0gICAg
ICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKLSAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS5wcmk6
Ci0gICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnZjcHJvajoKLSAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9wczoKLSAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvY29weS1maWxlcy5jbWQ6Ci0gICAgICAgICogSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKLSAgICAgICAgKiBUYXJnZXQu
cHJpOgotICAgICAgICAqIGFzc2VtYmxlci9MaW5rQnVmZmVyLmg6Ci0gICAgICAgICogYXNzZW1i
bGVyL01hY3JvQXNzZW1ibGVyQ29kZVJlZi5oOgotICAgICAgICAqIGJ5dGVjb2RlL0J5dGVjb2Rl
Q29udmVudGlvbnMuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBieXRlY29kZS9DYWxsTGlua1N0YXR1
cy5jcHA6Ci0gICAgICAgICogYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaDoKLSAgICAgICAgKiBi
eXRlY29kZS9Db2RlQmxvY2suY3BwOgotICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgot
ICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRTdGF0dXMuY3BwOgotICAgICAgICAqIGJ5dGVjb2Rl
L0dldEJ5SWRTdGF0dXMuaDoKLSAgICAgICAgKiBieXRlY29kZS9JbnN0cnVjdGlvbi5oOgotICAg
ICAgICAqIGJ5dGVjb2RlL0xMSW50Q2FsbExpbmtJbmZvLmg6IFJlbW92ZWQuCi0gICAgICAgICog
Ynl0ZWNvZGUvTWV0aG9kQ2FsbExpbmtTdGF0dXMuY3BwOgotICAgICAgICAqIGJ5dGVjb2RlL09w
Y29kZS5jcHA6Ci0gICAgICAgICogYnl0ZWNvZGUvT3Bjb2RlLmg6Ci0gICAgICAgICogYnl0ZWNv
ZGUvUHV0QnlJZFN0YXR1cy5jcHA6Ci0gICAgICAgICogYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5o
OgotICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6Ci0gICAgICAg
ICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKLSAgICAgICAgKiBkZmcvREZHQ2FwYWJpbGl0
aWVzLmg6Ci0gICAgICAgICogZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHA6Ci0gICAgICAgICog
ZGZnL0RGR09wZXJhdGlvbnMuY3BwOgotICAgICAgICAqIGhlYXAvSGVhcC5oOgotICAgICAgICAq
IGhlYXAvTWFya1N0YWNrLmNwcDoKLSAgICAgICAgKiBoZWFwL01hcmtlZEFsbG9jYXRvci5oOgot
ICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuaDoKLSAgICAgICAgKiBpbnRlcnByZXRlci9DYWxs
RnJhbWUuY3BwOgotICAgICAgICAqIGludGVycHJldGVyL0NhbGxGcmFtZS5oOgotICAgICAgICAq
IGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKLSAgICAgICAgKiBpbnRlcnByZXRlci9JbnRl
cnByZXRlci5oOgotICAgICAgICAqIGludGVycHJldGVyL1JlZ2lzdGVyRmlsZS5oOgotICAgICAg
ICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmg6Ci0gICAgICAgICogaml0L0hvc3RDYWxsUmV0
dXJuVmFsdWUuY3BwOiBSZW1vdmVkLgotICAgICAgICAqIGppdC9Ib3N0Q2FsbFJldHVyblZhbHVl
Lmg6IFJlbW92ZWQuCi0gICAgICAgICogaml0L0pJVC5jcHA6Ci0gICAgICAgICogaml0L0pJVENv
ZGUuaDoKLSAgICAgICAgKiBqaXQvSklURHJpdmVyLmg6Ci0gICAgICAgICogaml0L0pJVEV4Y2Vw
dGlvbnMuY3BwOgotICAgICAgICAqIGppdC9KSVRJbmxpbmVNZXRob2RzLmg6Ci0gICAgICAgICog
aml0L0pJVFN0dWJzLmNwcDoKLSAgICAgICAgKiBqaXQvSklUU3R1YnMuaDoKLSAgICAgICAgKiBq
aXQvSlNJbnRlcmZhY2VKSVQuaDoKLSAgICAgICAgKiBsbGludC9MTEludENvbW1vbi5oOiBSZW1v
dmVkLgotICAgICAgICAqIGxsaW50L0xMSW50RGF0YS5jcHA6IFJlbW92ZWQuCi0gICAgICAgICog
bGxpbnQvTExJbnREYXRhLmg6IFJlbW92ZWQuCi0gICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBv
aW50cy5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOiBS
ZW1vdmVkLgotICAgICAgICAqIGxsaW50L0xMSW50RXhjZXB0aW9ucy5jcHA6IFJlbW92ZWQuCi0g
ICAgICAgICogbGxpbnQvTExJbnRFeGNlcHRpb25zLmg6IFJlbW92ZWQuCi0gICAgICAgICogbGxp
bnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg6IFJlbW92ZWQuCi0gICAgICAgICogbGxpbnQvTExJ
bnRPZmZzZXRzRXh0cmFjdG9yLmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBsbGludC9MTEludFNs
b3dQYXRocy5jcHA6IFJlbW92ZWQuCi0gICAgICAgICogbGxpbnQvTExJbnRTbG93UGF0aHMuaDog
UmVtb3ZlZC4KLSAgICAgICAgKiBsbGludC9MTEludFRodW5rcy5jcHA6IFJlbW92ZWQuCi0gICAg
ICAgICogbGxpbnQvTExJbnRUaHVua3MuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBsbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmFzbTogUmVtb3ZlZC4KLSAgICAgICAgKiBsbGludC9Mb3dMZXZlbElu
dGVycHJldGVyLmNwcDogUmVtb3ZlZC4KLSAgICAgICAgKiBsbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmg6IFJlbW92ZWQuCi0gICAgICAgICogb2ZmbGluZWFzbS9hcm12Ny5yYjogUmVtb3ZlZC4K
LSAgICAgICAgKiBvZmZsaW5lYXNtL2FzbS5yYjogUmVtb3ZlZC4KLSAgICAgICAgKiBvZmZsaW5l
YXNtL2FzdC5yYjogUmVtb3ZlZC4KLSAgICAgICAgKiBvZmZsaW5lYXNtL2JhY2tlbmRzLnJiOiBS
ZW1vdmVkLgotICAgICAgICAqIG9mZmxpbmVhc20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5y
YjogUmVtb3ZlZC4KLSAgICAgICAgKiBvZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYjogUmVtb3Zl
ZC4KLSAgICAgICAgKiBvZmZsaW5lYXNtL29mZnNldF9leHRyYWN0b3JfY29uc3RhbnRzLnJiOiBS
ZW1vdmVkLgotICAgICAgICAqIG9mZmxpbmVhc20vb2Zmc2V0cy5yYjogUmVtb3ZlZC4KLSAgICAg
ICAgKiBvZmZsaW5lYXNtL29wdC5yYjogUmVtb3ZlZC4KLSAgICAgICAgKiBvZmZsaW5lYXNtL3Bh
cnNlci5yYjogUmVtb3ZlZC4KLSAgICAgICAgKiBvZmZsaW5lYXNtL3JlZ2lzdGVycy5yYjogUmVt
b3ZlZC4KLSAgICAgICAgKiBvZmZsaW5lYXNtL3NlbGZfaGFzaC5yYjogUmVtb3ZlZC4KLSAgICAg
ICAgKiBvZmZsaW5lYXNtL3NldHRpbmdzLnJiOiBSZW1vdmVkLgotICAgICAgICAqIG9mZmxpbmVh
c20vdHJhbnNmb3JtLnJiOiBSZW1vdmVkLgotICAgICAgICAqIG9mZmxpbmVhc20veDg2LnJiOiBS
ZW1vdmVkLgotICAgICAgICAqIHJ1bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oOiBSZW1v
dmVkLgotICAgICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmg6Ci0gICAgICAgICogcnVu
dGltZS9FeGVjdXRhYmxlLmNwcDoKLSAgICAgICAgKiBydW50aW1lL0V4ZWN1dGFibGUuaDoKLSAg
ICAgICAgKiBydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaDogUmVtb3ZlZC4KLSAgICAgICAgKiBy
dW50aW1lL0pTQXJyYXkuaDoKLSAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5oOgotICAgICAgICAq
IHJ1bnRpbWUvSlNGdW5jdGlvbi5oOgotICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxEYXRhLmNw
cDoKLSAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsRGF0YS5oOgotICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaDoKLSAgICAgICAgKiBydW50aW1lL0pTT2JqZWN0Lmg6Ci0gICAgICAg
ICogcnVudGltZS9KU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmg6Ci0gICAgICAgICogcnVudGltZS9K
U1N0cmluZy5oOgotICAgICAgICAqIHJ1bnRpbWUvSlNUeXBlSW5mby5oOgotICAgICAgICAqIHJ1
bnRpbWUvSlNWYWx1ZS5jcHA6Ci0gICAgICAgICogcnVudGltZS9KU1ZhbHVlLmg6Ci0gICAgICAg
ICogcnVudGltZS9KU1ZhcmlhYmxlT2JqZWN0Lmg6Ci0gICAgICAgICogcnVudGltZS9PcHRpb25z
LmNwcDoKLSAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoKLSAgICAgICAgKiBydW50aW1lL1Nj
b3BlQ2hhaW4uaDoKLSAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZS5jcHA6Ci0gICAgICAgICog
cnVudGltZS9TdHJ1Y3R1cmUuaDoKLSAgICAgICAgKiBydW50aW1lL1N0cnVjdHVyZUNoYWluLmg6
Ci0gICAgICAgICogd3RmL0lubGluZUFTTS5oOgotICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgot
ICAgICAgICAqIHd0Zi9TZW50aW5lbExpbmtlZExpc3QuaDoKLSAgICAgICAgKiB3dGYvdGV4dC9T
dHJpbmdJbXBsLmg6Ci0KIDIwMTItMDItMjEgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGtvdkBk
ZWJpYW4ub3JnPiBhbmQgQm9iIFRyYWN5ICA8cmN0QGZydXMuY29tPgogCiAgICAgICAgIERvZXMg
bm90IGJ1aWxkIG9uIElBNjQsIFNQQVJDIGFuZCBBbHBoYQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTA4MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMSw2ICsxMSw3IEBAIFNFVChK
YXZhU2NyaXB0Q29yZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9kZWJ1Z2dlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyIgog
ICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vbGxpbnQiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAgICAgIiR7SkFW
QVNDUklQVENPUkVfRElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1
bnRpbWUiCkBAIC0xMDIsNiArMTAzLDcgQEAgU0VUKEphdmFTY3JpcHRDb3JlX1NPVVJDRVMKICAg
ICBpbnRlcnByZXRlci9SZWdpc3RlckZpbGUuY3BwCiAKICAgICBqaXQvRXhlY3V0YWJsZUFsbG9j
YXRvci5jcHAKKyAgICBqaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAKICAgICBqaXQvSklUQXJp
dGhtZXRpYzMyXzY0LmNwcAogICAgIGppdC9KSVRBcml0aG1ldGljLmNwcAogICAgIGppdC9KSVRD
YWxsMzJfNjQuY3BwCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZp
c2lvbiAxMDgzNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUuYW0JKHdv
cmtpbmcgY29weSkKQEAgLTU3LDYgKzU3LDcgQEAgamF2YXNjcmlwdGNvcmVfY3BwZmxhZ3MgKz0g
XAogCS1JJChzcmNkaXIpL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlciBcCiAJLUkk
KHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdCBcCiAJLUkkKHNyY2RpcikvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdCBcCisJLUkkKHNyY2RpcikvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2xsaW50IFwKIAktSSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyIFwKIAkt
SSQoc3JjZGlyKS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIgXAogCS1JJChzcmNkaXIp
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMDgzNTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtODEsNiAr
ODEsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYXNzZW1ibGVyL1JlcGF0Y2hCdWZmZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9TSDRBc3NlbWJsZXIuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9YODZBc3NlbWJsZXIuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVj
b2RlQ29udmVudGlvbnMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxM
aW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua0lu
Zm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmNw
cCBcCkBAIC0xMDIsNiArMTAzLDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0luc3RydWN0aW9uLmggXAogCVNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9KdW1wVGFibGUuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSnVtcFRhYmxlLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9MTEludENhbGxMaW5rSW5mby5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
TGluZUluZm8uaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL01ldGhvZENhbGxM
aW5rSW5mby5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxs
TGlua0luZm8uaCBcCkBAIC0yOTcsNiArMjk5LDggQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyAr
PSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Db21wYWN0SklUQ29kZU1hcC5oIFwKIAlT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaCBcCisJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmNwcCBcCisJU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZhbHVlLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUQXJpdGhtZXRpYzMyXzY0LmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9KSVRBcml0aG1ldGljLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRD
YWxsMzJfNjQuY3BwIFwKQEAgLTMyMCw2ICszMjQsNyBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2Vz
ICs9IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1NwZWNpYWxpemVkVGh1bmtKSVQuaCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3BwIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5oIFwKKwlTb3VyY2UvSmF2YVNj
cmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13
aW4zMi9zdGRib29sLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vcy13aW4zMi9zdGRpbnQu
aCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmggXApAQCAtMzcw
LDYgKzM3NSw3IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NhbGxEYXRhLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ2FsbERhdGEuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xhc3NJ
bmZvLmggXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvZGVTcGVjaWFsaXphdGlv
bktpbmQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmll
cnMuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVy
cy5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuaCBc
CkBAIC0zOTgsNiArNDA0LDcgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5oIFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oIFwKKwlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRpb25IYXJuZXNzLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uQ29uc3RydWN0b3IuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1
bmN0aW9uUHJvdG90eXBlLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS5wcmkJKHJldmlzaW9uIDEwODM1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS5wcmkJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDcgQEAgSU5DTFVE
RVBBVEggKz0gXAogICAgICQkU09VUkNFX0RJUi9kZWJ1Z2dlciBcCiAgICAgJCRTT1VSQ0VfRElS
L2ludGVycHJldGVyIFwKICAgICAkJFNPVVJDRV9ESVIvaml0IFwKKyAgICAkJFNPVVJDRV9ESVIv
bGxpbnQgXAogICAgICQkU09VUkNFX0RJUi9wYXJzZXIgXAogICAgICQkU09VUkNFX0RJUi9wcm9m
aWxlciBcCiAgICAgJCRTT1VSQ0VfRElSL3J1bnRpbWUgXApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Rh
cmdldC5wcmkJKHJldmlzaW9uIDEwODM1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDcgQEAgU09VUkNFUyArPSBcCiAg
ICAgaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmNwcCBcCiAgICAgaml0L0V4ZWN1dGFibGVBbGxv
Y2F0b3JGaXhlZFZNUG9vbC5jcHAgXAogICAgIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcCBc
CisgICAgaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwIFwKICAgICBqaXQvSklUQXJpdGhtZXRp
Yy5jcHAgXAogICAgIGppdC9KSVRBcml0aG1ldGljMzJfNjQuY3BwIFwKICAgICBqaXQvSklUQ2Fs
bC5jcHAgXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJv
ai9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS52Y3Byb2oJKHJldmlzaW9uIDEwODM1OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYyLDYgKzE3NjIsMTAgQEAKIAkJCQk+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caml0XEhvc3RDYWxs
UmV0dXJuVmFsdWUuY3BwIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCiAJCQkJUmVsYXRp
dmVQYXRoPSIuLlwuLlxqaXRcSklULmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkBAIC0xODQ3LDYg
KzE4NTEsMTQgQEAKIAkJCTwvRmlsZT4KIAkJPC9GaWx0ZXI+CiAJCTxGaWx0ZXIKKwkJCU5hbWU9
ImxsaW50IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGxsaW50XExM
SW50RGF0YS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKIAkJ
CU5hbWU9ImludGVycHJldGVyIgogCQkJPgogCQkJPEZpbGUKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmVDb21tb24udnNwcm9wcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlQ29tbW9uLnZz
cHJvcHMJKHJldmlzaW9uIDEwODM1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmVDb21tb24udnNwcm9w
cwkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAKIAk+CiAJPFRvb2wKIAkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCIKLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChD
b25maWd1cmF0aW9uQnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1wm
cXVvdDs7Li4vLi4vOy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29tcGlsZXIv
Oy4uLy4uL2RmZy87Li4vLi4vaml0LzsuLi8uLi9ydW50aW1lLzsuLi8uLi90b29scy87Li4vLi4v
Ynl0ZWNvZGUvOy4uLy4uL2ludGVycHJldGVyLzsuLi8uLi93dGYvOy4uLy4uL3Byb2ZpbGVyOy4u
Ly4uL2Fzc2VtYmxlci87Li4vLi4vZGVidWdnZXIvOy4uLy4uL2hlYXAvOyZxdW90OyQoV2ViS2l0
TGlicmFyaWVzRGlyKVxpbmNsdWRlJnF1b3Q7OyZxdW90OyQoV2ViS2l0TGlicmFyaWVzRGlyKVxp
bmNsdWRlXHByaXZhdGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1
ZGUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVcSmF2YVNjcmlw
dENvcmUmcXVvdDs7JnF1b3Q7JChDb25maWd1cmF0aW9uQnVpbGREaXIpXGluY2x1ZGVccHJpdmF0
ZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0RpcilcaW5jbHVkZVxwdGhyZWFkcyZxdW90
OyIKKwkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChDb25maWd1cmF0aW9u
QnVpbGREaXIpXG9ialxKYXZhU2NyaXB0Q29yZVxEZXJpdmVkU291cmNlc1wmcXVvdDs7Li4vLi4v
Oy4uLy4uL0FQSS87Li4vLi4vcGFyc2VyLzsuLi8uLi9ieXRlY29tcGlsZXIvOy4uLy4uL2RmZy87
Li4vLi4vaml0LzsuLi8uLi9sbGludC87Li4vLi4vcnVudGltZS87Li4vLi4vdG9vbHMvOy4uLy4u
L2J5dGVjb2RlLzsuLi8uLi9pbnRlcnByZXRlci87Li4vLi4vd3RmLzsuLi8uLi9wcm9maWxlcjsu
Li8uLi9hc3NlbWJsZXIvOy4uLy4uL2RlYnVnZ2VyLzsuLi8uLi9oZWFwLzsmcXVvdDskKFdlYktp
dExpYnJhcmllc0RpcilcaW5jbHVkZSZxdW90OzsmcXVvdDskKFdlYktpdExpYnJhcmllc0Rpcilc
aW5jbHVkZVxwcml2YXRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNs
dWRlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXEphdmFTY3Jp
cHRDb3JlJnF1b3Q7OyZxdW90OyQoQ29uZmlndXJhdGlvbkJ1aWxkRGlyKVxpbmNsdWRlXHByaXZh
dGUmcXVvdDs7JnF1b3Q7JChXZWJLaXRMaWJyYXJpZXNEaXIpXGluY2x1ZGVccHRocmVhZHMmcXVv
dDsiCiAJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfX1NURF9DIgogCQlGb3JjZWRJbmNsdWRl
RmlsZXM9IklDVVZlcnNpb24uaCIKIAkvPgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0Q29yZS9jb3B5LWZpbGVzLmNtZAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFT
Y3JpcHRDb3JlL2NvcHktZmlsZXMuY21kCShyZXZpc2lvbiAxMDgzNTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL2NvcHktZmls
ZXMuY21kCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIGZvciAlJWQgaW4gKAogICAg
IGRlYnVnZ2VyCiAgICAgaW50ZXJwcmV0ZXIKICAgICBqaXQKKyAgICBsbGludAogICAgIHBhcnNl
cgogICAgIHByb2ZpbGVyCiAgICAgcnVudGltZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDEwODM1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03LDYg
KzcsMTUgQEAKIAlvYmplY3RzID0gewogCiAvKiBCZWdpbiBQQlhBZ2dyZWdhdGVUYXJnZXQgc2Vj
dGlvbiAqLworCQkwRjQ2ODBBOTE0QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLyA9
IHsKKwkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdldDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbkxp
c3QgPSAwRjQ2ODBBQzE0QkE3RkQ5MDBCRkUyNzIgLyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0
IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkxMSW50IE9mZnNldHMiICovOworCQkJYnVpbGRQaGFz
ZXMgPSAoCisJCQkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRlIERlcml2ZWQg
U291cmNlcyAqLywKKwkJCSk7CisJCQluYW1lID0gIkxMSW50IE9mZnNldHMiOworCQkJcHJvZHVj
dE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKKwkJfTsKIAkJNjVGQjNGNjYwOUQxMUU5MTAwRjQ5
REVCIC8qIERlcml2ZWQgU291cmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEFnZ3JlZ2F0ZVRhcmdl
dDsKIAkJCWJ1aWxkQ29uZmlndXJhdGlvbkxpc3QgPSA2NUZCM0Y3NzA5RDExRUJEMDBGNDlERUIg
LyogQnVpbGQgY29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhBZ2dyZWdhdGVUYXJnZXQgIkRlcml2
ZWQgU291cmNlcyIgKi87CkBAIC0xNCw2ICsyMyw5IEBACiAJCQkJNjVGQjNGNjUwOUQxMUU5MTAw
RjQ5REVCIC8qIEdlbmVyYXRlIERlcml2ZWQgU291cmNlcyAqLywKIAkJCQk1RDM1REVFMTBDN0Mx
NDBCMDA4NjQ4QjIgLyogR2VuZXJhdGUgRFRyYWNlIGhlYWRlciAqLywKIAkJCSk7CisJCQlkZXBl
bmRlbmNpZXMgPSAoCisJCQkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERl
cGVuZGVuY3kgKi8sCisJCQkpOwogCQkJbmFtZSA9ICJEZXJpdmVkIFNvdXJjZXMiOwogCQkJcHJv
ZHVjdE5hbWUgPSAiRGVyaXZlZCBTb3VyY2VzIjsKIAkJfTsKQEAgLTQ4LDYgKzYwLDEwIEBACiAJ
CTBCQUM5NEEwMTMzODcyODQwMENGMTM1QiAvKiBUaHJlYWRSZXN0cmljdGlvblZlcmlmaWVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkFDOTQ5RTEz
Mzg3Mjg0MDBDRjEzNUIgLyogVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBCQ0Q4MzU3MTQ4NTg0NTIw
MEVBMjAwMyAvKiBUZW1wb3JhcnlDaGFuZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBCQ0Q4MzU0MTQ4NTg0MTIwMEVBMjAwMyAvKiBUZW1wb3JhcnlD
aGFuZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQkwQkYyOEEyOTExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0cy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwQkYyOEEyODExQTMzREMzMDA2MzhG
ODQgLyogU2l6ZUxpbWl0cy5jcHAgKi87IH07CisJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAv
KiBMTEludEVudHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMEI4Mzk1MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRz
LmNwcCAqLzsgfTsKKwkJMEYwQjgzOUIxNEJDRjQ2MDAwODg1QjRGIC8qIExMSW50RW50cnlwb2lu
dHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMEI4
Mzk2MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEYwQjgzOUMxNEJDRjQ2MzAwODg1
QjRGIC8qIExMSW50VGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMEI4Mzk3MTRCQ0Y0NUEwMDg4NUI0RiAvKiBMTEludFRodW5rcy5jcHAg
Ki87IH07CisJCTBGMEI4MzlEMTRCQ0Y0NjYwMDg4NUI0RiAvKiBMTEludFRodW5rcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwQjgzOTgxNEJDRjQ1
QTAwODg1QjRGIC8qIExMSW50VGh1bmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgzQTcxNEJDRjUwNzAwODg1QjRGIC8qIENvZGVUeXBl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNB
NTE0QkNGNTA0MDA4ODVCNEYgLyogQ29kZVR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjBCODNBOTE0QkNGNTYyMDA4ODVCNEYgLyogSGFu
ZGxlckluZm8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGMEI4M0E4MTRCQ0Y1NUUwMDg4NUI0RiAvKiBIYW5kbGVySW5mby5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMEI4M0FCMTRCQ0Y1QkIwMDg4
NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNBQTE0QkNGNUI5MDA4ODVCNEYgLyogRXhwcmVzc2lv
blJhbmdlSW5mby5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC01OCw5ICs3NCwxMyBAQAogCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0
aG9kQ2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSAwRjBCODNCMzE0QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYwQjgz
QjcxNEJDRjhFMTAwODg1QjRGIC8qIEdsb2JhbFJlc29sdmVJbmZvLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYg
LyogR2xvYmFsUmVzb2x2ZUluZm8uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkwRjBCODNCOTE0QkNGOTVGMDA4ODVCNEYgLyogQ2FsbFJldHVybk9m
ZnNldFRvQnl0ZWNvZGVPZmZzZXQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMEI4M0I4MTRCQ0Y5NUIwMDg4NUI0RiAvKiBDYWxsUmV0dXJuT2Zmc2V0
VG9CeXRlY29kZU9mZnNldC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CisJCTBGMEZDNDVBMTRCRDE1RjUwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5m
by5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYwRkM0
NTgxNEJEMTVGMTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYxNUYxNUYxNEI3QTczRTAwNURF
MzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNsb3dQYXRo
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
MTZENzI2MTQyQzM5QzAwMENGNzg0QSAvKiBCaXRWZWN0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYxNkQ3MjQxNDJDMzlBMjAwQ0Y3ODRBIC8q
IEJpdFZlY3Rvci5jcHAgKi87IH07CiAJCTBGMjFDMjY4MTRCRTVGNjgwMEFEQzY0QiAvKiBKSVRE
cml2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
MjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIg
LyogRXhlY3V0aW9uSGFybmVzcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyMUMyN0ExNEJFNzI3MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3Mu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIx
QzI3RDE0QkU3MjdBMDBBREM2NEIgLyogQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMUMyNzkxNEJFNzI3MzAw
QURDNjRCIC8qIENvZGVTcGVjaWFsaXphdGlvbktpbmQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIxQzI3RjE0QkVBQTgyMDBBREM2NEIgLyog
Qnl0ZWNvZGVDb252ZW50aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYyMUMyN0UxNEJFQUE4MDAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlv
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkw
RjI0MkRBNzEzRjNCMUU4MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNDJEQTUxM0YzQjFC
QjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU2RjE0NzM4RjMxMDAxMjFFNEYg
LyogREZHQ29kZUJsb2Nrcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMEYyQzU1NkUxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjJDNTU3MDE0
NzM4RjM1MDAxMjFFNEYgLyogREZHQ29kZUJsb2Nrcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJDNTU2RDE0NzM4RjJFMDAxMjFFNEYgLyogREZH
Q29kZUJsb2Nrcy5jcHAgKi87IH07CkBAIC03MSw2ICs5MSwxOSBAQAogCQkwRjQzMTczODE0NkJB
QzY5MDA3RTM4OTAgLyogTGlzdGFibGVIYW5kbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQzMTczNjE0NkJBQzY1MDA3RTM4OTAgLyogTGlzdGFi
bGVIYW5kbGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJMEY0NjgwODIxNEJBNTcyRDAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MDgwMTRCQTU3Mjcw
MEJGRTI3MiAvKiBKSVRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY0NjgwODMxNEJBNTczMTAwQkZFMjcyIC8qIEpJVEV4Y2Vw
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovOyB9OworCQkw
RjQ2ODBBMzE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RTE0QkE3RjgyMDBCRkUy
NzIgLyogTExJbnRFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTQxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50U2xvd1Bh
dGhzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBG
NDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludFNsb3dQYXRocy5jcHAgKi87IHNldHRpbmdz
ID0ge0NPTVBJTEVSX0ZMQUdTID0gIi1Xbm8tdW51c2VkLXBhcmFtZXRlciI7IH07IH07CisJCTBG
NDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAvKiBMTEludFNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQTAxNEJBN0Y4MjAwQkZFMjcy
IC8qIExMSW50U2xvd1BhdGhzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQTcxNEJBN0ZBMTAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4
dHJhY3Rvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjQ2ODBBMTE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcCAq
LzsgfTsKKwkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODA5RDE0
QkE3RjgyMDBCRkUyNzIgLyogTExJbnRFeGNlcHRpb25zLmNwcCAqLzsgfTsKKwkJMEY0NjgwQ0Ex
NEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNTE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRD
b21tb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBDNjE0QkJC
MTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwQ0MxNEJCQjE3QTAwQkZFMjcy
IC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEY0NjgwQzcxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50
ZXJwcmV0ZXIuY3BwICovOyB9OworCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIgLyogTG93TGV2
ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMEY0NjgwQzgxNEJCQjE2OTAwQkZFMjcyIC8qIExvd0xldmVsSW50ZXJwcmV0ZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjQ2ODBE
MjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNDY4MENFMTRCQkIzRDEwMEJGRTI3MiAvKiBMTElu
dERhdGEuY3BwICovOyB9OworCQkwRjQ2ODBEMzE0QkJEMTY3MDBCRkUyNzIgLyogTExJbnREYXRh
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjQ2ODBD
RjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMEY0NjgwRDQxNEJCRDI0OTAwQkZFMjcyIC8qIEhv
c3RDYWxsUmV0dXJuVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY0NjgwRDAxNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFs
dWUuY3BwICovOyB9OworCQkwRjQ2ODBENTE0QkJEMjRCMDBCRkUyNzIgLyogSG9zdENhbGxSZXR1
cm5WYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjU1RjBGNDE0RDEw
NjM5MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1RjBGMTE0RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQ
Qy5jcHAgKi87IH07CiAJCTBGNTVGMEY1MTREMTA2M0MwMEFDNzY0OSAvKiBBYnN0cmFjdFBDLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1RjBGMjE0
RDEwNjM2MDBBQzc2NDkgLyogQWJzdHJhY3RQQy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUYwOENGMTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNv
bmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAwNDcyQTkgLyogVW5jb25kaXRpb25hbEZpbmFs
aXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC00MTksNyArNDUyLDcgQEAKIAkJODZCOTlBRTMxMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1
ZmZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZC
OTlBRTExMTdFNTc4MTAwREY1QTkwIC8qIFN0cmluZ0J1ZmZlci5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg2QkIwOUMwMTM4RTM4MUIwMDU2NzAy
RiAvKiBERkdSZXBhdGNoLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDg2QkIwOUJFMTM4RTM4MUIwMDU2NzAyRiAvKiBERkdSZXBhdGNoLmNwcCAqLzsg
fTsKIAkJODZCQjA5QzExMzhFMzgxQjAwNTY3MDJGIC8qIERGR1JlcGF0Y2guaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QkIwOUJGMTM4RTM4MUIwMDU2
NzAyRiAvKiBERkdSZXBhdGNoLmggKi87IH07Ci0JCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAv
KiBNYWNyb0Fzc2VtYmxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gODZDMzZFRTkwRUUxMjg5RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87
IH07CisJCTg2QzM2RUVBMEVFMTI4OUQwMEIzREY1OSAvKiBNYWNyb0Fzc2VtYmxlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODZDMzZFRTkwRUUxMjg5
RDAwQjNERjU5IC8qIE1hY3JvQXNzZW1ibGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODZDNTY4RTAxMUEyMTNFRTAwMDdGN0YwIC8qIE1hY3Jv
QXNzZW1ibGVyQVJNLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDg2QzU2OEREMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlckFSTS5jcHAg
Ki87IH07CiAJCTg2QzU2OEUxMTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERF
MTFBMjEzRUUwMDA3RjdGMCAvKiBNYWNyb0Fzc2VtYmxlck1JUFMuaCAqLzsgfTsKIAkJODZDNTY4
RTIxMUEyMTNFRTAwMDdGN0YwIC8qIE1JUFNBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2QzU2OERGMTFBMjEzRUUwMDA3RjdGMCAvKiBN
SVBTQXNzZW1ibGVyLmggKi87IH07CkBAIC03OTAsNiArODIzLDIwIEBACiAvKiBFbmQgUEJYQnVp
bGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rp
b24gKi8KKwkJMEY0NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94
eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRhaW5lclBv
cnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAqLzsKKwkJ
CXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDBGNDY4MEE5MTRCQTdG
RDkwMEJGRTI3MjsKKwkJCXJlbW90ZUluZm8gPSAiTExJbnQgT2Zmc2V0cyI7CisJCX07CisJCTBG
NDY4MEIzMTRCQTgyMTQwMEJGRTI3MiAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CisJ
CQlpc2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CisJCQljb250YWluZXJQb3J0YWwgPSAwODY3
RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CisJCQlwcm94eVR5cGUg
PSAxOworCQkJcmVtb3RlR2xvYmFsSURTdHJpbmcgPSAwRjQ2ODA4RTE0QkE3RTVFMDBCRkUyNzI7
CisJCQlyZW1vdGVJbmZvID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQl9OwogCQkxNDEy
MTRCRTBBNDkxOTBFMDA0ODAyNTUgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovID0gewogCQkJ
aXNhID0gUEJYQ29udGFpbmVySXRlbVByb3h5OwogCQkJY29udGFpbmVyUG9ydGFsID0gMDg2N0Q2
OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovOwpAQCAtODM1LDYgKzg4Miwx
NSBAQAogLyogRW5kIFBCWENvbnRhaW5lckl0ZW1Qcm94eSBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2ODA4RDE0QkE3RTVFMDBC
RkUyNzIgLyogQ29weUZpbGVzICovID0geworCQkJaXNhID0gUEJYQ29weUZpbGVzQnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlkc3RQYXRoID0gL3Vzci9z
aGFyZS9tYW4vbWFuMS87CisJCQlkc3RTdWJmb2xkZXJTcGVjID0gMDsKKwkJCWZpbGVzID0gKAor
CQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAxOworCQl9Owog
CQk1REJCMTUxMTEzMUQwQjEzMDA1NkFEMzYgLyogQ29weSBTdXBwb3J0IFNjcmlwdCAqLyA9IHsK
IAkJCWlzYSA9IFBCWENvcHlGaWxlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAx
MjsKQEAgLTg3NSw2ICs5MzEsMTAgQEAKIAkJMEJBQzk0OUUxMzM4NzI4NDAwQ0YxMzVCIC8qIFRo
cmVhZFJlc3RyaWN0aW9uVmVyaWZpZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gVGhyZWFkUmVzdHJpY3Rpb25WZXJpZmllci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwQkNEODM1NDE0ODU4NDEyMDBFQTIwMDMgLyogVGVtcG9yYXJ5Q2hhbmdlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFRlbXBvcmFyeUNoYW5nZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwQkYyOEEyODExQTMzREMzMDA2MzhGODQgLyogU2l6ZUxpbWl0
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaXplTGltaXRzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRG
IC8qIExMSW50RW50cnlwb2ludHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gTExJbnRFbnRyeXBvaW50cy5jcHA7IHBhdGggPSBsbGludC9MTEludEVudHJ5cG9pbnRz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYwQjgzOTYxNEJDRjQ1QTAwODg1
QjRGIC8qIExMSW50RW50cnlwb2ludHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gTExJbnRFbnRyeXBvaW50cy5oOyBwYXRoID0gbGxpbnQvTExJbnRFbnRyeXBvaW50cy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjBCODM5NzE0QkNGNDVBMDA4ODVCNEYgLyog
TExJbnRUaHVua3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gTExJ
bnRUaHVua3MuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRUaHVua3MuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQkwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyogTExJbnRUaHVua3Mu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTExJbnRUaHVua3MuaDsgcGF0aCA9
IGxsaW50L0xMSW50VGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMEI4
M0E1MTRCQ0Y1MDQwMDg4NUI0RiAvKiBDb2RlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBDb2RlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjBC
ODNBODE0QkNGNTVFMDA4ODVCNEYgLyogSGFuZGxlckluZm8uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSGFuZGxlckluZm8uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEYwQjgzQUExNEJDRjVCOTAwODg1QjRGIC8qIEV4cHJlc3Npb25SYW5nZUluZm8uaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRXhwcmVzc2lvblJhbmdlSW5mby5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODg1LDkgKzk0NSwxMyBAQAogCQkwRjBCODNCMzE0
QkNGODVFMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IE1ldGhvZENhbGxMaW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQkwRjBCODNCNjE0QkNGOERGMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2ZUluZm8u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2xvYmFsUmVzb2x2ZUluZm8uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYwQjgzQjgxNEJDRjk1QjAwODg1QjRGIC8q
IENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGMEZDNDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENh
bGxMaW5rSW5mby5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBMTEludENhbGxM
aW5rSW5mby5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjE1RjE1RDE0QjdBNzNB
MDA1REUzN0QgLyogQ29tbW9uU2xvd1BhdGhzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENvbW1vblNsb3dQYXRocy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkw
RjE2RDcyNDE0MkMzOUEyMDBDRjc4NEEgLyogQml0VmVjdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJpdFZlY3Rvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTBGMjFDMjY2MTRCRTVGNUUwMEFEQzY0QiAvKiBKSVREcml2ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSklURHJpdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTBGMjFDMjc5MTRCRTcyNzMwMEFEQzY0QiAvKiBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvZGVTcGVjaWFsaXph
dGlvbktpbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYyMUMyN0ExNEJFNzI3
MzAwQURDNjRCIC8qIEV4ZWN1dGlvbkhhcm5lc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRXhlY3V0aW9uSGFybmVzcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjIxQzI3RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCeXRlY29kZUNvbnZlbnRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFr
UmVmZXJlbmNlSGFydmVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYy
QzU1NkQxNDczOEYyRTAwMTIxRTRGIC8qIERGR0NvZGVCbG9ja3MuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gREZHQ29kZUJsb2Nrcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMkM1NTZFMTQ3MzhGMkUwMDEyMUU0RiAvKiBERkdDb2RlQmxvY2tz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERGR0NvZGVCbG9ja3MuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTg5OCw2ICs5NjIsMjAgQEAKIAkJMEY0MzE3MzYx
NDZCQUM2NTAwN0UzODkwIC8qIExpc3RhYmxlSGFuZGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBMaXN0YWJsZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMEY0NjgwN0YxNEJBNTcyNzAwQkZFMjcyIC8qIEpJVEV4Y2VwdGlvbnMuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklURXhjZXB0aW9ucy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNDY4MDgwMTRCQTU3MjcwMEJGRTI3MiAvKiBKSVRF
eGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpJVEV4Y2VwdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwOEYxNEJBN0U1RTAwQkZF
MjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBleHBsaWNpdEZpbGVUeXBlID0gImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5j
bHVkZUluSW5kZXggPSAwOyBwYXRoID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOyBzb3VyY2VU
cmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQkwRjQ2ODA5RDE0QkE3RjgyMDBCRkUyNzIg
LyogTExJbnRFeGNlcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IExMSW50RXhjZXB0aW9ucy5jcHA7IHBhdGggPSBsbGludC9MTEludEV4Y2VwdGlvbnMuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODA5RTE0QkE3RjgyMDBCRkUyNzIg
LyogTExJbnRFeGNlcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExM
SW50RXhjZXB0aW9ucy5oOyBwYXRoID0gbGxpbnQvTExJbnRFeGNlcHRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MDlGMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludFNs
b3dQYXRocy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludFNs
b3dQYXRocy5jcHA7IHBhdGggPSBsbGludC9MTEludFNsb3dQYXRocy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludFNsb3dQ
YXRocy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludFNsb3dQYXRocy5o
OyBwYXRoID0gbGxpbnQvTExJbnRTbG93UGF0aHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0NjgwQTExNEJBN0Y4MjAwQkZFMjcyIC8qIExMSW50T2Zmc2V0c0V4dHJhY3Rvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludE9mZnNldHNFeHRy
YWN0b3IuY3BwOyBwYXRoID0gbGxpbnQvTExJbnRPZmZzZXRzRXh0cmFjdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50
Q29tbW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50Q29tbW9uLmg7
IHBhdGggPSBsbGludC9MTEludENvbW1vbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQkwRjQ2ODBDNjE0QkJCMTY5MDBCRkUyNzIgLyogTExJbnRPZmZsaW5lQXNtQ29uZmlnLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExMSW50T2ZmbGluZUFzbUNvbmZpZy5oOyBw
YXRoID0gbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IExvd0xldmVsSW50ZXJw
cmV0ZXIuY3BwOyBwYXRoID0gbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGNDY4MEM4MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZl
bEludGVycHJldGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IExvd0xldmVs
SW50ZXJwcmV0ZXIuaDsgcGF0aCA9IGxsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEY0NjgwQ0UxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50
RGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBMTEludERhdGEu
Y3BwOyBwYXRoID0gbGxpbnQvTExJbnREYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJMEY0NjgwQ0YxNEJCQjNEMTAwQkZFMjcyIC8qIExMSW50RGF0YS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludERhdGEuaDsgcGF0aCA9IGxsaW50L0xMSW50RGF0
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUy
NzIgLyogSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBIb3N0Q2FsbFJldHVyblZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSG9zdENhbGxSZXR1cm5WYWx1ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU1RjBGMTE0RDEwNjM2MDBBQzc2NDkg
LyogQWJzdHJhY3RQQy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
YnN0cmFjdFBDLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NUYwRjIxNEQx
MDYzNjAwQUM3NjQ5IC8qIEFic3RyYWN0UEMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQWJzdHJhY3RQQy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVGMDhD
QzE0NkJFNjAyMDAwNDcyQTkgLyogREZHQnl0ZUNvZGVDYWNoZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IG5hbWUgPSBERkdCeXRlQ29kZUNhY2hlLmg7IHBhdGggPSBkZmcvREZHQnl0ZUNv
ZGVDYWNoZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTY1Niw2ICsxNzM0LDEz
IEBACiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZy
YW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcy
IC8qIEZyYW1ld29ya3MgKi8gPSB7CisJCQlpc2EgPSBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZTsK
KwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJfTsKIAkJMTQxMjEx
MUUwQTQ4NzkzQzAwNDgwMjU1IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhGcmFt
ZXdvcmtzQnVpbGRQaGFzZTsKIAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CkBAIC0x
NzE0LDYgKzE3OTksNyBAQAogCQkJCTE0MTIxMTIwMEE0ODc5M0MwMDQ4MDI1NSAvKiBtaW5pZG9t
ICovLAogCQkJCTE0QkQ1OUJGMEEzRThGOTAwMEJBRjU5QyAvKiB0ZXN0YXBpICovLAogCQkJCTY1
MTEyMzA1MTQwNDZBNEMwMDJCMTAxRCAvKiB0ZXN0UmVnRXhwICovLAorCQkJCTBGNDY4MDhGMTRC
QTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0b3IgKi8sCiAJCQkpOwogCQkJ
bmFtZSA9IFByb2R1Y3RzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE3MzksNiAr
MTgyNSw3IEBACiAJCQkJRjVDMjkwRTYwMjg0Rjk4RTAxODYzNUNBIC8qIEphdmFTY3JpcHRDb3Jl
UHJlZml4LmggKi8sCiAJCQkJNDVFMTJEODgwNkE0OUIwRjAwRTlERjg0IC8qIGpzYy5jcHAgKi8s
CiAJCQkJRjY4RUJCOEMwMjU1RDRDNjAxRkY2MEY3IC8qIGNvbmZpZy5oICovLAorCQkJCTBGNDY4
MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLywKIAkJCQkxNDMyRUJENzBBMzRDQUQ0MDA3
MTdCOUYgLyogQVBJICovLAogCQkJCTk2ODhDQjEyMEVEMTJCNEUwMDFENjQ5RiAvKiBhc3NlbWJs
ZXIgKi8sCiAJCQkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2RlICovLApAQCAt
MTc3OCw2ICsxODY1LDI4IEBACiAJCQl0YWJXaWR0aCA9IDQ7CiAJCQl1c2VzVGFicyA9IDA7CiAJ
CX07CisJCTBGNDY4MDlDMTRCQTdGNEQwMEJGRTI3MiAvKiBsbGludCAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJMEYwQjgzOTUxNEJDRjQ1QTAwODg1QjRG
IC8qIExMSW50RW50cnlwb2ludHMuY3BwICovLAorCQkJCTBGMEI4Mzk2MTRCQ0Y0NUEwMDg4NUI0
RiAvKiBMTEludEVudHJ5cG9pbnRzLmggKi8sCisJCQkJMEYwQjgzOTcxNEJDRjQ1QTAwODg1QjRG
IC8qIExMSW50VGh1bmtzLmNwcCAqLywKKwkJCQkwRjBCODM5ODE0QkNGNDVBMDA4ODVCNEYgLyog
TExJbnRUaHVua3MuaCAqLywKKwkJCQkwRjQ2ODBDRTE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnRE
YXRhLmNwcCAqLywKKwkJCQkwRjQ2ODBDRjE0QkJCM0QxMDBCRkUyNzIgLyogTExJbnREYXRhLmgg
Ki8sCisJCQkJMEY0NjgwQzUxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggKi8sCisJ
CQkJMEY0NjgwQzYxNEJCQjE2OTAwQkZFMjcyIC8qIExMSW50T2ZmbGluZUFzbUNvbmZpZy5oICov
LAorCQkJCTBGNDY4MEM3MTRCQkIxNjkwMEJGRTI3MiAvKiBMb3dMZXZlbEludGVycHJldGVyLmNw
cCAqLywKKwkJCQkwRjQ2ODBDODE0QkJCMTY5MDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRl
ci5oICovLAorCQkJCTBGNDY4MDlEMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMu
Y3BwICovLAorCQkJCTBGNDY4MDlFMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludEV4Y2VwdGlvbnMu
aCAqLywKKwkJCQkwRjQ2ODA5RjE0QkE3RjgyMDBCRkUyNzIgLyogTExJbnRTbG93UGF0aHMuY3Bw
ICovLAorCQkJCTBGNDY4MEEwMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludFNsb3dQYXRocy5oICov
LAorCQkJCTBGNDY4MEExMTRCQTdGODIwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0b3Iu
Y3BwICovLAorCQkJKTsKKwkJCW5hbWUgPSBsbGludDsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CisJCX07CiAJCTE0MTIxMTAwMEE0ODc3MjYwMDQ4MDI1NSAvKiB0ZXN0cyAqLyA9IHsKIAkJ
CWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0xODEyLDYgKzE5MjEsOCBAQAog
CQkxNDI5RDkyQzBFRDIyRDcwMDBCODk2MTkgLyogaml0ICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjQ2ODBEMDE0QkJDNUY4MDBCRkUyNzIgLyogSG9z
dENhbGxSZXR1cm5WYWx1ZS5jcHAgKi8sCisJCQkJMEY0NjgwRDExNEJCQzVGODAwQkZFMjcyIC8q
IEhvc3RDYWxsUmV0dXJuVmFsdWUuaCAqLywKIAkJCQkwRjQ2ODA3RjE0QkE1NzI3MDBCRkUyNzIg
LyogSklURXhjZXB0aW9ucy5jcHAgKi8sCiAJCQkJMEY0NjgwODAxNEJBNTcyNzAwQkZFMjcyIC8q
IEpJVEV4Y2VwdGlvbnMuaCAqLywKIAkJCQkwRkQ4MkUzNzE0MUFCMTQyMDAxNzlDOTQgLyogQ29t
cGFjdEpJVENvZGVNYXAuaCAqLywKQEAgLTIyODYsNiArMjM5Nyw4IEBACiAJCTdFRjZFMEJCMEVC
N0ExRUMwMDc5QUZBRiAvKiBydW50aW1lICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3OTE0QkU3MjczMDBBREM2NEIgLyogQ29kZVNwZWNpYWxp
emF0aW9uS2luZC5oICovLAorCQkJCTBGMjFDMjdBMTRCRTcyNzMwMEFEQzY0QiAvKiBFeGVjdXRp
b25IYXJuZXNzLmggKi8sCiAJCQkJMEYxNUYxNUQxNEI3QTczQTAwNURFMzdEIC8qIENvbW1vblNs
b3dQYXRocy5oICovLAogCQkJCUJDRjYwNTExMEUyMDNFRjgwMEI5QTY0RCAvKiBBcmdMaXN0LmNw
cCAqLywKIAkJCQlCQ0Y2MDUxMjBFMjAzRUY4MDBCOUE2NEQgLyogQXJnTGlzdC5oICovLApAQCAt
MjY3MCw2ICsyNzgzLDggQEAKIAkJOTY5QTA3OEYwRUQxRDNBRTAwRjFGNjgxIC8qIGJ5dGVjb2Rl
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQkwRjIxQzI3
RTE0QkVBQTgwMDBBREM2NEIgLyogQnl0ZWNvZGVDb252ZW50aW9ucy5oICovLAorCQkJCTBGMEZD
NDU4MTRCRDE1RjEwMEI4MTE1NCAvKiBMTEludENhbGxMaW5rSW5mby5oICovLAogCQkJCTBGOUZD
OEJGMTRFMUI1RkIwMEQ1MkFFMCAvKiBQb2x5bW9ycGhpY1B1dEJ5SWRMaXN0LmNwcCAqLywKIAkJ
CQkwRjlGQzhDMDE0RTFCNUZCMDBENTJBRTAgLyogUG9seW1vcnBoaWNQdXRCeUlkTGlzdC5oICov
LAogCQkJCTBGOUZDOEMxMTRFMUI1RkIwMEQ1MkFFMCAvKiBQdXRLaW5kLmggKi8sCkBAIC0zMjM0
LDcgKzMzNDksMTYgQEAKIAkJCQk4NjcwNEI4QTEyREJBMzM3MDBBOUZFN0IgLyogWWFyclBhdHRl
cm4uaCBpbiBIZWFkZXJzICovLAogCQkJCTg2NzA0QjQzMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJy
U3ludGF4Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYxNUYxNUYxNEI3QTczRTAwNURF
MzdEIC8qIENvbW1vblNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwQTMxNEJB
N0Y4RDAwQkZFMjcyIC8qIExMSW50RXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0
NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhzLmggaW4gSGVhZGVycyAqLywK
IAkJCQkwRjQ2ODA4MjE0QkE1NzJEMDBCRkUyNzIgLyogSklURXhjZXB0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMEY0NjgwQ0ExNEJCQjE2QzAwQkZFMjcyIC8qIExMSW50Q29tbW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDQjE0QkJCMTcyMDBCRkUyNzIgLyogTExJbnRPZmZsaW5l
QXNtQ29uZmlnLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjQ2ODBDRDE0QkJCMTdEMDBCRkUyNzIg
LyogTG93TGV2ZWxJbnRlcnByZXRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwRDMxNEJC
RDE2NzAwQkZFMjcyIC8qIExMSW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY0NjgwRDUx
NEJCRDI0QjAwQkZFMjcyIC8qIEhvc3RDYWxsUmV0dXJuVmFsdWUuaCBpbiBIZWFkZXJzICovLAor
CQkJCTBGMEI4MzlCMTRCQ0Y0NjAwMDg4NUI0RiAvKiBMTEludEVudHJ5cG9pbnRzLmggaW4gSGVh
ZGVycyAqLywKKwkJCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGMEI4M0E3MTRCQ0Y1MDcwMDg4NUI0RiAvKiBDb2RlVHlwZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzQTkxNEJDRjU2MjAwODg1QjRGIC8qIEhhbmRsZXJJ
bmZvLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjBCODNBQjE0QkNGNUJCMDA4ODVCNEYgLyogRXhw
cmVzc2lvblJhbmdlSW5mby5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMjQzLDcgKzMzNjcsMTEgQEAK
IAkJCQkwRjBCODNCNTE0QkNGODYyMDA4ODVCNEYgLyogTWV0aG9kQ2FsbExpbmtJbmZvLmggaW4g
SGVhZGVycyAqLywKIAkJCQkwRjBCODNCNzE0QkNGOEUxMDA4ODVCNEYgLyogR2xvYmFsUmVzb2x2
ZUluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4M0I5MTRCQ0Y5NUYwMDg4NUI0RiAvKiBD
YWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldC5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEYw
RkM0NUExNEJEMTVGNTAwQjgxMTU0IC8qIExMSW50Q2FsbExpbmtJbmZvLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjIxQzI2ODE0QkU1RjY4MDBBREM2NEIgLyogSklURHJpdmVyLmggaW4gSGVhZGVy
cyAqLywKKwkJCQkwRjIxQzI3QzE0QkU3Mjc2MDBBREM2NEIgLyogRXhlY3V0aW9uSGFybmVzcy5o
IGluIEhlYWRlcnMgKi8sCisJCQkJMEYyMUMyN0QxNEJFNzI3QTAwQURDNjRCIC8qIENvZGVTcGVj
aWFsaXphdGlvbktpbmQuaCBpbiBIZWFkZXJzICovLAorCQkJCTBGMjFDMjdGMTRCRUFBODIwMEFE
QzY0QiAvKiBCeXRlY29kZUNvbnZlbnRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjdCMjk0
QTE0QzNDRDI5MDA3QzNEQjEgLyogREZHQ0NhbGxIZWxwZXJzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwRjdCMjk0QjE0QzNDRDJGMDA3QzNEQjEgLyogREZHQ2FwYWJpbGl0aWVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjdCMjk0QzE0QzNDRDQzMDA3QzNEQjEgLyogREZHQnl0ZUNvZGVDYWNoZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC0zMjc1LDYgKzM0MDMsMjQgQEAKIC8qIEVuZCBQQlhIZWFkZXJz
QnVpbGRQaGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWE5hdGl2ZVRhcmdldCBzZWN0aW9u
ICovCisJCTBGNDY4MDhFMTRCQTdFNUUwMEJGRTI3MiAvKiBKU0NMTEludE9mZnNldHNFeHRyYWN0
b3IgKi8gPSB7CisJCQlpc2EgPSBQQlhOYXRpdmVUYXJnZXQ7CisJCQlidWlsZENvbmZpZ3VyYXRp
b25MaXN0ID0gMEY0NjgwOUExNEJBN0U1RjAwQkZFMjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24g
bGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NMTEludE9mZnNldHNFeHRyYWN0b3IiICovOwor
CQkJYnVpbGRQaGFzZXMgPSAoCisJCQkJMEY0NjgwOEIxNEJBN0U1RTAwQkZFMjcyIC8qIFNvdXJj
ZXMgKi8sCisJCQkJMEY0NjgwOEMxNEJBN0U1RTAwQkZFMjcyIC8qIEZyYW1ld29ya3MgKi8sCisJ
CQkJMEY0NjgwOEQxNEJBN0U1RTAwQkZFMjcyIC8qIENvcHlGaWxlcyAqLywKKwkJCSk7CisJCQli
dWlsZFJ1bGVzID0gKAorCQkJKTsKKwkJCWRlcGVuZGVuY2llcyA9ICgKKwkJCQkwRjQ2ODBCMjE0
QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLywKKwkJCSk7CisJCQluYW1l
ID0gSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yOworCQkJcHJvZHVjdE5hbWUgPSBKU0NMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisJCQlwcm9kdWN0UmVmZXJlbmNlID0gMEY0NjgwOEYxNEJBN0U1RTAw
QkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXByb2R1Y3RUeXBlID0g
ImNvbS5hcHBsZS5wcm9kdWN0LXR5cGUudG9vbCI7CisJCX07CiAJCTE0MTIxMTFGMEE0ODc5M0Mw
MDQ4MDI1NSAvKiBtaW5pZG9tICovID0gewogCQkJaXNhID0gUEJYTmF0aXZlVGFyZ2V0OwogCQkJ
YnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi87CkBA
IC0zNDAxLDExICszNTQ3LDI5IEBACiAJCQkJMTRCRDU5QkUwQTNFOEY5MDAwQkFGNTlDIC8qIHRl
c3RhcGkgKi8sCiAJCQkJOTMyRjVCREEwODIyQTFDNzAwNzM2OTc1IC8qIGpzYyAqLywKIAkJCQk2
NTExMjJGNzE0MDQ2QTRDMDAyQjEwMUQgLyogdGVzdFJlZ0V4cCAqLywKKwkJCQkwRjQ2ODA4RTE0
QkE3RTVFMDBCRkUyNzIgLyogSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yICovLAorCQkJCTBGNDY4
MEE5MTRCQTdGRDkwMEJGRTI3MiAvKiBMTEludCBPZmZzZXRzICovLAogCQkJKTsKIAkJfTsKIC8q
IEVuZCBQQlhQcm9qZWN0IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYU2hlbGxTY3JpcHRCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KKwkJMEY0NjgwQUExNEJBN0ZEOTAwQkZFMjcyIC8qIEdlbmVyYXRl
IERlcml2ZWQgU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJCSk7
CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCSIkKFNSQ1JPT1QpL2xsaW50L0xvd0xldmVsQXNzZW1i
bGVyLmFzbSIsCisJCQkpOworCQkJbmFtZSA9ICJHZW5lcmF0ZSBEZXJpdmVkIFNvdXJjZXMiOwor
CQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNl
dHMvTExJbnREZXNpcmVkT2Zmc2V0cy5oIiwKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNj
cmlwdCA9ICJta2RpciAtcCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9MTEludE9mZnNldHMvXCJc
blxuL3Vzci9iaW4vZW52IHJ1YnkgXCIke1NSQ1JPT1R9L29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zm
c2V0X2V4dHJhY3Rvci5yYlwiIFwiJHtTUkNST09UfS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbVwiIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0xMSW50T2Zmc2V0cy9MTEludERlc2lyZWRP
ZmZzZXRzLmhcIlxuIjsKKwkJfTsKIAkJMzcxM0YwMTQxNDI5MDUyNDAwMzYzODdGIC8qIENoZWNr
IEZvciBJbmFwcHJvcHJpYXRlIE9iamVjdGl2ZS1DIENsYXNzIE5hbWVzICovID0gewogCQkJaXNh
ID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4
MzY0NzsKQEAgLTM1MTEsNyArMzY3NSw3IEBACiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwotCQkJc2hlbGxT
Y3JpcHQgPSAibWtkaXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vRGVyaXZlZFNvdXJjZXMv
SmF2YVNjcmlwdENvcmUvZG9jc1wiXG5jZCBcIiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZVwiXG5cbi9iaW4vbG4gLXNmaCBcIiR7U1JDUk9PVH1cIiBK
YXZhU2NyaXB0Q29yZVxuZXhwb3J0IEphdmFTY3JpcHRDb3JlPVwiSmF2YVNjcmlwdENvcmVcIlxu
ZXhwb3J0IEJVSUxUX1BST0RVQ1RTX0RJUj1cIi4uLy4uXCJcblxubWFrZSAtLW5vLWJ1aWx0aW4t
cnVsZXMgLWYgXCJKYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlXCIgLWogYC91c3Iv
c2Jpbi9zeXNjdGwgLW4gaHcubmNwdWBcbiI7CisJCQlzaGVsbFNjcmlwdCA9ICJta2RpciAtcCBc
IiR7QlVJTFRfUFJPRFVDVFNfRElSfS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9kb2Nz
XCJcbmNkIFwiJHtCVUlMVF9QUk9EVUNUU19ESVJ9L0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRD
b3JlXCJcblxuL2Jpbi9sbiAtc2ZoIFwiJHtTUkNST09UfVwiIEphdmFTY3JpcHRDb3JlXG5leHBv
cnQgSmF2YVNjcmlwdENvcmU9XCJKYXZhU2NyaXB0Q29yZVwiXG5leHBvcnQgQlVJTFRfUFJPRFVD
VFNfRElSPVwiLi4vLi5cIlxuXG5tYWtlIC0tbm8tYnVpbHRpbi1ydWxlcyAtZiBcIkphdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2VcIiAtaiBgL3Vzci9zYmluL3N5c2N0bCAtbiBody5u
Y3B1YFxuXG4vdXNyL2Jpbi9lbnYgcnVieSBKYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2FzbS5y
YiBKYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVyLmFzbSAke0JVSUxUX1BS
T0RVQ1RTX0RJUn0vSlNDTExJbnRPZmZzZXRzRXh0cmFjdG9yIExMSW50QXNzZW1ibHkuaFxuIjsK
IAkJfTsKIAkJOTMxOTU4NkIwOUQ5RjkxQTAwQTU2RkQ0IC8qIENoZWNrIEZvciBHbG9iYWwgSW5p
dGlhbGl6ZXJzICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwpAQCAt
MzU0Niw2ICszNzEwLDE0IEBACiAvKiBFbmQgUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYU291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQkwRjQ2
ODA4QjE0QkE3RTVFMDBCRkUyNzIgLyogU291cmNlcyAqLyA9IHsKKwkJCWlzYSA9IFBCWFNvdXJj
ZXNCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKKwkJCWZpbGVz
ID0gKAorCQkJCTBGNDY4MEE3MTRCQTdGQTEwMEJGRTI3MiAvKiBMTEludE9mZnNldHNFeHRyYWN0
b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CisJCX07CiAJCTE0MTIxMTFEMEE0ODc5M0MwMDQ4MDI1NSAvKiBTb3Vy
Y2VzICovID0gewogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtMzgwNiw3ICszOTc4LDE0IEBACiAJCQkJODY3MDRCODYx
MkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJKSVQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODY3MDRC
ODkxMkRCQTMzNzAwQTlGRTdCIC8qIFlhcnJQYXR0ZXJuLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTg2NzA0QjQyMTJEQjhBODEwMEE5RkU3QiAvKiBZYXJyU3ludGF4Q2hlY2tlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRjQ2ODBBNDE0QkE3RjhEMDBCRkUyNzIgLyogTExJbnRTbG93UGF0aHMu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEY0NjgwQTgxNEJBN0ZBQjAwQkZFMjcyIC8qIExMSW50
RXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjQ2ODA4MzE0QkE1NzMxMDBCRkUy
NzIgLyogSklURXhjZXB0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQkwRjQ2ODBDQzE0QkJC
MTdBMDBCRkUyNzIgLyogTG93TGV2ZWxJbnRlcnByZXRlci5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQkwRjQ2ODBEMjE0QkJEMTY1MDBCRkUyNzIgLyogTExJbnREYXRhLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTBGNDY4MEQ0MTRCQkQyNDkwMEJGRTI3MiAvKiBIb3N0Q2FsbFJldHVyblZhbHVlLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlBMTRCQ0Y0NUQwMDg4NUI0RiAvKiBMTEludEVu
dHJ5cG9pbnRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGMEI4MzlDMTRCQ0Y0NjMwMDg4NUI0
RiAvKiBMTEludFRodW5rcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjBCODNCMDE0QkNGNzE2
MDA4ODVCNEYgLyogQ2FsbExpbmtJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMEI4M0I0
MTRCQ0Y4NjAwMDg4NUI0RiAvKiBNZXRob2RDYWxsTGlua0luZm8uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJRjY5RTg2QzMxNEM2RTU1MTAwMkMyQzYyIC8qIE51bWJlck9mQ29yZXMuY3BwIGluIFNv
dXJjZXMgKi8sCkBAIC0zODQwLDYgKzQwMTksMTYgQEAKIC8qIEVuZCBQQlhTb3VyY2VzQnVpbGRQ
aGFzZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWFRhcmdldERlcGVuZGVuY3kgc2VjdGlvbiAq
LworCQkwRjQ2ODBCMjE0QkE4MTE1MDBCRkUyNzIgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9
IHsKKwkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSAwRjQ2ODBBOTE0
QkE3RkQ5MDBCRkUyNzIgLyogTExJbnQgT2Zmc2V0cyAqLzsKKwkJCXRhcmdldFByb3h5ID0gMEY0
NjgwQjExNEJBODExNTAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAqLzsKKwkJfTsK
KwkJMEY0NjgwQjQxNEJBODIxNDAwQkZFMjcyIC8qIFBCWFRhcmdldERlcGVuZGVuY3kgKi8gPSB7
CisJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OworCQkJdGFyZ2V0ID0gMEY0NjgwOEUxNEJB
N0U1RTAwQkZFMjcyIC8qIEpTQ0xMSW50T2Zmc2V0c0V4dHJhY3RvciAqLzsKKwkJCXRhcmdldFBy
b3h5ID0gMEY0NjgwQjMxNEJBODIxNDAwQkZFMjcyIC8qIFBCWENvbnRhaW5lckl0ZW1Qcm94eSAq
LzsKKwkJfTsKIAkJMTQxMjE0QkYwQTQ5MTkwRTAwNDgwMjU1IC8qIFBCWFRhcmdldERlcGVuZGVu
Y3kgKi8gPSB7CiAJCQlpc2EgPSBQQlhUYXJnZXREZXBlbmRlbmN5OwogCQkJdGFyZ2V0ID0gMTQx
MjExMUYwQTQ4NzkzQzAwNDgwMjU1IC8qIG1pbmlkb20gKi87CkBAIC0zODczLDYgKzQwNjIsMTUw
IEBACiAvKiBFbmQgUEJYVGFyZ2V0RGVwZW5kZW5jeSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFhD
QnVpbGRDb25maWd1cmF0aW9uIHNlY3Rpb24gKi8KKwkJMEY0NjgwOTYxNEJBN0U1RTAwQkZFMjcy
IC8qIERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWls
ZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFS
Q0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9
IE5POworCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CisJCQkJR0NDX0RZTkFN
SUNfTk9fUElDID0gTk87CisJCQkJR0NDX0VOQUJMRV9PQkpDX0VYQ0VQVElPTlMgPSBZRVM7CisJ
CQkJR0NDX09QVElNSVpBVElPTl9MRVZFTCA9IDA7CisJCQkJR0NDX1BSRVBST0NFU1NPUl9ERUZJ
TklUSU9OUyA9ICgKKwkJCQkJIkRFQlVHPTEiLAorCQkJCQkiJChpbmhlcml0ZWQpIiwKKwkJCQkp
OworCQkJCUdDQ19TWU1CT0xTX1BSSVZBVEVfRVhURVJOID0gTk87CisJCQkJR0NDX1ZFUlNJT04g
PSBjb20uYXBwbGUuY29tcGlsZXJzLmxsdm0uY2xhbmcuMV8wOworCQkJCUdDQ19XQVJOXzY0X1RP
XzMyX0JJVF9DT05WRVJTSU9OID0gTk87CisJCQkJR0NDX1dBUk5fQUJPVVRfTUlTU0lOR19QUk9U
T1RZUEVTID0gWUVTOworCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOworCQkJ
CUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQkiSEVBREVSX1NFQVJDSF9QQVRI
U1thcmNoPSpdIiA9ICgKKwkJCQkJLiwKKwkJCQkJaWN1LAorCQkJCQkiJChCVUlMVF9QUk9EVUNU
U19ESVIpL0xMSW50T2Zmc2V0cyIsCisJCQkJCSIkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJ
CQkpOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJT05MWV9BQ1RJ
VkVfQVJDSCA9IE5POworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJ
U0RLUk9PVCA9IG1hY29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3Ug
JChCVUlMVF9QUk9EVUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMp
IjsKKwkJCX07CisJCQluYW1lID0gRGVidWc7CisJCX07CisJCTBGNDY4MDk3MTRCQTdFNUUwMEJG
RTI3MiAvKiBSZWxlYXNlICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJ
CQlidWlsZFNldHRpbmdzID0geworCQkJCUFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POwor
CQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRBUkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9T
VFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZPUk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1k
c3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFC
TEVfT0JKQ19FWENFUFRJT05TID0gWUVTOworCQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNv
bXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJCQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVS
U0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FCT1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsK
KwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVT
RURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhFQURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAo
CisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJIiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9m
ZnNldHMkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIiwKKwkJCQkpOworCQkJCU1BQ09TWF9ERVBMT1lN
RU5UX1RBUkdFVCA9IDEwLjc7CisJCQkJT05MWV9BQ1RJVkVfQVJDSCA9IE5POworCQkJCVBST0RV
Q1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1hY29zeDsKKwkJCQlV
U0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9EVUNUU19ESVIpL0xM
SW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJCQluYW1lID0gUmVs
ZWFzZTsKKwkJfTsKKwkJMEY0NjgwOTgxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2ZpbGluZyAqLyA9
IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVpbGRTZXR0aW5ncyA9IHsK
KwkJCQlBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKKwkJCQlBUkNIUyA9ICIkKEFSQ0hT
X1NUQU5EQVJEXzY0X0JJVCkiOworCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBZRVM7CisJCQkJREVC
VUdfSU5GT1JNQVRJT05fRk9STUFUID0gImR3YXJmLXdpdGgtZHN5bSI7CisJCQkJR0NDX0NfTEFO
R1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKKwkJCQlHQ0NfRU5BQkxFX09CSkNfRVhDRVBUSU9OUyA9
IFlFUzsKKwkJCQlHQ0NfVkVSU0lPTiA9IGNvbS5hcHBsZS5jb21waWxlcnMubGx2bS5jbGFuZy4x
XzA7CisJCQkJR0NDX1dBUk5fNjRfVE9fMzJfQklUX0NPTlZFUlNJT04gPSBOTzsKKwkJCQlHQ0Nf
V0FSTl9BQk9VVF9NSVNTSU5HX1BST1RPVFlQRVMgPSBZRVM7CisJCQkJR0NDX1dBUk5fQUJPVVRf
UkVUVVJOX1RZUEUgPSBZRVM7CisJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOwor
CQkJCSJIRUFERVJfU0VBUkNIX1BBVEhTW2FyY2g9Kl0iID0gKAorCQkJCQkuLAorCQkJCQlpY3Us
CisJCQkJCSIkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRzIiwKKwkJCQkJIiQoSEVB
REVSX1NFQVJDSF9QQVRIUykiLAorCQkJCSk7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VU
ID0gMTAuNzsKKwkJCQlPTkxZX0FDVElWRV9BUkNIID0gTk87CisJCQkJUFJPRFVDVF9OQU1FID0g
IiQoVEFSR0VUX05BTUUpIjsKKwkJCQlTREtST09UID0gbWFjb3N4OworCQkJCVVTRVJfSEVBREVS
X1NFQVJDSF9QQVRIUyA9ICIuIGljdSAkKEJVSUxUX1BST0RVQ1RTX0RJUikvTExJbnRPZmZzZXRz
ICQoSEVBREVSX1NFQVJDSF9QQVRIUykiOworCQkJfTsKKwkJCW5hbWUgPSBQcm9maWxpbmc7CisJ
CX07CisJCTBGNDY4MDk5MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9kdWN0aW9uICovID0geworCQkJ
aXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCUFM
V0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POworCQkJCUFSQ0hTID0gIiQoQVJDSFNfU1RBTkRB
UkRfNjRfQklUKSI7CisJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlERUJVR19JTkZP
Uk1BVElPTl9GT1JNQVQgPSAiZHdhcmYtd2l0aC1kc3ltIjsKKwkJCQlHQ0NfQ19MQU5HVUFHRV9T
VEFOREFSRCA9IGdudTk5OworCQkJCUdDQ19FTkFCTEVfT0JKQ19FWENFUFRJT05TID0gWUVTOwor
CQkJCUdDQ19WRVJTSU9OID0gY29tLmFwcGxlLmNvbXBpbGVycy5sbHZtLmNsYW5nLjFfMDsKKwkJ
CQlHQ0NfV0FSTl82NF9UT18zMl9CSVRfQ09OVkVSU0lPTiA9IE5POworCQkJCUdDQ19XQVJOX0FC
T1VUX01JU1NJTkdfUFJPVE9UWVBFUyA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5f
VFlQRSA9IFlFUzsKKwkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJIkhF
QURFUl9TRUFSQ0hfUEFUSFNbYXJjaD0qXSIgPSAoCisJCQkJCS4sCisJCQkJCWljdSwKKwkJCQkJ
IiQoQlVJTFRfUFJPRFVDVFNfRElSKS9MTEludE9mZnNldHMiLAorCQkJCQkiJChIRUFERVJfU0VB
UkNIX1BBVEhTKSIsCisJCQkJKTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC43
OworCQkJCVBST0RVQ1RfTkFNRSA9ICIkKFRBUkdFVF9OQU1FKSI7CisJCQkJU0RLUk9PVCA9IG1h
Y29zeDsKKwkJCQlVU0VSX0hFQURFUl9TRUFSQ0hfUEFUSFMgPSAiLiBpY3UgJChCVUlMVF9QUk9E
VUNUU19ESVIpL0xMSW50T2Zmc2V0cyAkKEhFQURFUl9TRUFSQ0hfUEFUSFMpIjsKKwkJCX07CisJ
CQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUQxNEJBN0ZEOTAwQkZFMjcyIC8q
IERlYnVnICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CisJCQlidWlsZFNl
dHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJjZXMgY29weSI7CisJ
CQl9OworCQkJbmFtZSA9IERlYnVnOworCQl9OworCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIg
LyogUmVsZWFzZSAqLyA9IHsKKwkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOworCQkJYnVp
bGRTZXR0aW5ncyA9IHsKKwkJCQlQUk9EVUNUX05BTUUgPSAiRGVyaXZlZCBTb3VyY2VzIGNvcHki
OworCQkJfTsKKwkJCW5hbWUgPSBSZWxlYXNlOworCQl9OworCQkwRjQ2ODBBRjE0QkE3RkQ5MDBC
RkUyNzIgLyogUHJvZmlsaW5nICovID0geworCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CisJCQlidWlsZFNldHRpbmdzID0geworCQkJCVBST0RVQ1RfTkFNRSA9ICJEZXJpdmVkIFNvdXJj
ZXMgY29weSI7CisJCQl9OworCQkJbmFtZSA9IFByb2ZpbGluZzsKKwkJfTsKKwkJMEY0NjgwQjAx
NEJBN0ZEOTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8gPSB7CisJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKKwkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJUFJPRFVDVF9OQU1FID0gIkRl
cml2ZWQgU291cmNlcyBjb3B5IjsKKwkJCX07CisJCQluYW1lID0gUHJvZHVjdGlvbjsKKwkJfTsK
IAkJMTQxMjExM0EwQTQ4Nzk4NDAwNDgwMjU1IC8qIERlYnVnICovID0gewogCQkJaXNhID0gWENC
dWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewpAQCAtNDExNCw2ICs0NDQ3
LDI4IEBACiAvKiBFbmQgWENCdWlsZENvbmZpZ3VyYXRpb24gc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KKwkJMEY0NjgwOUExNEJBN0U1RjAwQkZF
MjcyIC8qIEJ1aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYTmF0aXZlVGFyZ2V0ICJKU0NM
TEludE9mZnNldHNFeHRyYWN0b3IiICovID0geworCQkJaXNhID0gWENDb25maWd1cmF0aW9uTGlz
dDsKKwkJCWJ1aWxkQ29uZmlndXJhdGlvbnMgPSAoCisJCQkJMEY0NjgwOTYxNEJBN0U1RTAwQkZF
MjcyIC8qIERlYnVnICovLAorCQkJCTBGNDY4MDk3MTRCQTdFNUUwMEJGRTI3MiAvKiBSZWxlYXNl
ICovLAorCQkJCTBGNDY4MDk4MTRCQTdFNUUwMEJGRTI3MiAvKiBQcm9maWxpbmcgKi8sCisJCQkJ
MEY0NjgwOTkxNEJBN0U1RTAwQkZFMjcyIC8qIFByb2R1Y3Rpb24gKi8sCisJCQkpOworCQkJZGVm
YXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25O
YW1lID0gUHJvZHVjdGlvbjsKKwkJfTsKKwkJMEY0NjgwQUMxNEJBN0ZEOTAwQkZFMjcyIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYQWdncmVnYXRlVGFyZ2V0ICJMTEludCBPZmZz
ZXRzIiAqLyA9IHsKKwkJCWlzYSA9IFhDQ29uZmlndXJhdGlvbkxpc3Q7CisJCQlidWlsZENvbmZp
Z3VyYXRpb25zID0gKAorCQkJCTBGNDY4MEFEMTRCQTdGRDkwMEJGRTI3MiAvKiBEZWJ1ZyAqLywK
KwkJCQkwRjQ2ODBBRTE0QkE3RkQ5MDBCRkUyNzIgLyogUmVsZWFzZSAqLywKKwkJCQkwRjQ2ODBB
RjE0QkE3RkQ5MDBCRkUyNzIgLyogUHJvZmlsaW5nICovLAorCQkJCTBGNDY4MEIwMTRCQTdGRDkw
MEJGRTI3MiAvKiBQcm9kdWN0aW9uICovLAorCQkJKTsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9u
SXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9IFByb2R1Y3Rpb247
CisJCX07CiAJCTE0MTIxMTM5MEE0ODc5ODQwMDQ4MDI1NSAvKiBCdWlsZCBjb25maWd1cmF0aW9u
IGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAibWluaWRvbSIgKi8gPSB7CiAJCQlpc2EgPSBYQ0Nv
bmZpZ3VyYXRpb25MaXN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9ucyA9ICgKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5oCShyZXZpc2lvbiAxMDgz
NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMzQsNyArMzQsNyBAQAogI2RlZmluZSBHTE9CQUxfVEhVTktfSUQgcmVp
bnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KC0xKSkKICNkZWZpbmUg
UkVHRVhQX0NPREVfSUQgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8aW50cHRy
X3Q+KC0yKSkKIAotI2luY2x1ZGUgPE1hY3JvQXNzZW1ibGVyLmg+CisjaW5jbHVkZSAiTWFjcm9B
c3NlbWJsZXIuaCIKICNpbmNsdWRlIDx3dGYvRGF0YUxvZy5oPgogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyQ29kZVJlZi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHJldmlzaW9uIDEwODM1OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDggKzMxLDYgQEAKICNpbmNsdWRlICJSZWZQdHIuaCIKICNpbmNs
dWRlICJVbnVzZWRQYXJhbS5oIgogCi0jaWYgRU5BQkxFKEFTU0VNQkxFUikKLQogLy8gQVNTRVJU
X1ZBTElEX0NPREVfUE9JTlRFUiBjaGVja3MgdGhhdCBwdHIgaXMgYSBub24tbnVsbCBwb2ludGVy
LCBhbmQgdGhhdCBpdCBpcyBhIHZhbGlkCiAvLyBpbnN0cnVjdGlvbiBhZGRyZXNzIG9uIHRoZSBw
bGF0Zm9ybSAoZm9yIGV4YW1wbGUsIGNoZWNrIGFueSBhbGlnbm1lbnQgcmVxdWlyZW1lbnRzKS4K
ICNpZiBDUFUoQVJNX1RIVU1CMikKQEAgLTI3Myw2ICsyNzEsMTQgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgQVNTRVJUX1ZBTElEX0NPREVfUE9JTlRFUihtX3ZhbHVlKTsKICAgICB9CisgICAg
CisgICAgc3RhdGljIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBjcmVhdGVGcm9tRXhlY3V0YWJsZUFk
ZHJlc3Modm9pZCogdmFsdWUpCisgICAgeworICAgICAgICBBU1NFUlRfVkFMSURfQ09ERV9QT0lO
VEVSKHZhbHVlKTsKKyAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIHJlc3VsdDsKKyAgICAg
ICAgcmVzdWx0Lm1fdmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9
CiAKICAgICBleHBsaWNpdCBNYWNyb0Fzc2VtYmxlckNvZGVQdHIoUmV0dXJuQWRkcmVzc1B0ciBy
YSkKICAgICAgICAgOiBtX3ZhbHVlKHJhLnZhbHVlKCkpCkBAIC0zNjAsNiArMzY2LDQgQEAgcHJp
dmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgSlNDCiAKLSNlbmRpZiAvLyBFTkFCTEUoQVNTRU1CTEVS
KQotCiAjZW5kaWYgLy8gTWFjcm9Bc3NlbWJsZXJDb2RlUmVmX2gKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZlbnRpb25zLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0J5dGVjb2RlQ29udmVudGlvbnMuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9CeXRlY29kZUNvbnZl
bnRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBCeXRlY29kZUNvbnZlbnRpb25z
X2gKKyNkZWZpbmUgQnl0ZWNvZGVDb252ZW50aW9uc19oCisKKy8vIFJlZ2lzdGVyIG51bWJlcnMg
dXNlZCBpbiBieXRlY29kZSBvcGVyYXRpb25zIGhhdmUgZGlmZmVyZW50IG1lYW5pbmcgYWNjb3Jk
aW5nIHRvIHRoZWlyIHJhbmdlczoKKy8vICAgICAgMHg4MDAwMDAwMC0weEZGRkZGRkZGICBOZWdh
dGl2ZSBpbmRpY2VzIGZyb20gdGhlIENhbGxGcmFtZSBwb2ludGVyIGFyZSBlbnRyaWVzIGluIHRo
ZSBjYWxsIGZyYW1lLCBzZWUgUmVnaXN0ZXJGaWxlLmguCisvLyAgICAgIDB4MDAwMDAwMDAtMHgz
RkZGRkZGRiAgRm9yd2FyZHMgaW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUg
bG9jYWwgdmFycyBhbmQgdGVtcG9yYXJpZXMgd2l0aCB0aGUgZnVuY3Rpb24ncyBjYWxsZnJhbWUu
CisvLyAgICAgIDB4NDAwMDAwMDAtMHg3RkZGRkZGRiAgUG9zaXRpdmUgaW5kaWNlcyBmcm9tIDB4
NDAwMDAwMDAgc3BlY2lmeSBlbnRyaWVzIGluIHRoZSBjb25zdGFudCBwb29sIG9uIHRoZSBDb2Rl
QmxvY2suCitzdGF0aWMgY29uc3QgaW50IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0
MDAwMDAwMDsKKworI2VuZGlmIC8vIEJ5dGVjb2RlQ29udmVudGlvbnNfaAorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlua1N0YXR1cy5jcHAJKHJl
dmlzaW9uIDEwODM1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTGlu
a1N0YXR1cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE3ICsyNyw0MCBAQAogI2luY2x1ZGUg
IkNhbGxMaW5rU3RhdHVzLmgiCiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJM
TEludENhbGxMaW5rSW5mby5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAorQ2FsbExpbmtTdGF0dXMg
Q2FsbExpbmtTdGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2Nr
LCB1bnNpZ25lZCBieXRlY29kZUluZGV4KQoreworICAgIFVOVVNFRF9QQVJBTShwcm9maWxlZEJs
b2NrKTsKKyAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRleCk7CisjaWYgRU5BQkxFKExMSU5U
KQorICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0
aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworICAgIExMSW50Q2FsbExpbmtJbmZvKiBj
YWxsTGlua0luZm8gPSBpbnN0cnVjdGlvbls0XS51LmNhbGxMaW5rSW5mbzsKKyAgICAKKyAgICBy
ZXR1cm4gQ2FsbExpbmtTdGF0dXMoY2FsbExpbmtJbmZvLT5sYXN0U2VlbkNhbGxlZS5nZXQoKSwg
ZmFsc2UpOworI2Vsc2UKKyAgICByZXR1cm4gQ2FsbExpbmtTdGF0dXMoMCwgZmFsc2UpOworI2Vu
ZGlmCit9CisKIENhbGxMaW5rU3RhdHVzIENhbGxMaW5rU3RhdHVzOjpjb21wdXRlRm9yKENvZGVC
bG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKIHsKICAgICBVTlVT
RURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgp
OwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKLSAgICByZXR1cm4g
Q2FsbExpbmtTdGF0dXMoCi0gICAgICAgIHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mbyhi
eXRlY29kZUluZGV4KS5sYXN0U2VlbkNhbGxlZS5nZXQoKSwKLSAgICAgICAgcHJvZmlsZWRCbG9j
ay0+Y291bGRUYWtlU2xvd0Nhc2UoYnl0ZWNvZGVJbmRleCkpOworICAgIGlmICghcHJvZmlsZWRC
bG9jay0+bnVtYmVyT2ZDYWxsTGlua0luZm9zKCkpCisgICAgICAgIHJldHVybiBjb21wdXRlRnJv
bUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgpOworICAgIAorICAgIGlmIChwcm9m
aWxlZEJsb2NrLT5jb3VsZFRha2VTbG93Q2FzZShieXRlY29kZUluZGV4KSkKKyAgICAgICAgcmV0
dXJuIENhbGxMaW5rU3RhdHVzKDAsIHRydWUpOworICAgIAorICAgIEpTRnVuY3Rpb24qIHRhcmdl
dCA9IHByb2ZpbGVkQmxvY2stPmdldENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KS5sYXN0U2Vl
bkNhbGxlZS5nZXQoKTsKKyAgICBpZiAoIXRhcmdldCkKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVG
cm9tTExJbnQocHJvZmlsZWRCbG9jaywgYnl0ZWNvZGVJbmRleCk7CisgICAgCisgICAgcmV0dXJu
IENhbGxMaW5rU3RhdHVzKHRhcmdldCwgZmFsc2UpOwogI2Vsc2UKICAgICByZXR1cm4gQ2FsbExp
bmtTdGF0dXMoMCwgZmFsc2UpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ2FsbExpbmtTdGF0dXMuaAkocmV2aXNpb24gMTA4MzU4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxMaW5rU3RhdHVzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDE1ICs0NywxNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgc3RhdGljIENhbGxMaW5r
U3RhdHVzIGNvbXB1dGVGb3IoQ29kZUJsb2NrKiwgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCk7CiAg
ICAgCi0gICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0OyB9Cisg
ICAgYm9vbCBpc1NldCgpIGNvbnN0IHsgcmV0dXJuICEhbV9jYWxsVGFyZ2V0IHx8IG1fY291bGRU
YWtlU2xvd1BhdGg7IH0KICAgICAKLSAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJu
ICFtX2NhbGxUYXJnZXQ7IH0KKyAgICBib29sIG9wZXJhdG9yISgpIGNvbnN0IHsgcmV0dXJuICFp
c1NldCgpOyB9CiAgICAgCiAgICAgYm9vbCBjb3VsZFRha2VTbG93UGF0aCgpIGNvbnN0IHsgcmV0
dXJuIG1fY291bGRUYWtlU2xvd1BhdGg7IH0KICAgICAKICAgICBKU0Z1bmN0aW9uKiBjYWxsVGFy
Z2V0KCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVGFyZ2V0OyB9CiAgICAgCiBwcml2YXRlOgorICAg
IHN0YXRpYyBDYWxsTGlua1N0YXR1cyBjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayosIHVuc2ln
bmVkIGJ5dGVjb2RlSW5kZXgpOworICAgIAogICAgIEpTRnVuY3Rpb24qIG1fY2FsbFRhcmdldDsK
ICAgICBib29sIG1fY291bGRUYWtlU2xvd1BhdGg7CiB9OwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDEwODM1OCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkpT
U3RhdGljU2NvcGVPYmplY3QuaCIKICNpbmNsdWRlICJKU1ZhbHVlLmgiCisjaW5jbHVkZSAiTG93
TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlJlcGF0Y2hCdWZmZXIuaCIKICNpbmNsdWRl
ICJVU3RyaW5nQ29uY2F0ZW5hdGUuaCIKICNpbmNsdWRlIDxzdGRpby5oPgpAQCAtMzU2LDEwICsz
NTcsMTAgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXAoRXhlY1N0YXRlKiBleGVjKSBjbwogICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpOyBpICs9IG9wY29kZUxl
bmd0aHNbZXhlYy0+aW50ZXJwcmV0ZXIoKS0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zKClbaV0u
dS5vcGNvZGUpXSkKICAgICAgICAgKytpbnN0cnVjdGlvbkNvdW50OwogCi0gICAgZGF0YUxvZygi
JWx1IG1faW5zdHJ1Y3Rpb25zOyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQg
Y2FsbGVlIHJlZ2lzdGVyKHMpXG5cbiIsCisgICAgZGF0YUxvZygiJWx1IG1faW5zdHJ1Y3Rpb25z
OyAlbHUgYnl0ZXMgYXQgJXA7ICVkIHBhcmFtZXRlcihzKTsgJWQgY2FsbGVlIHJlZ2lzdGVyKHMp
OyAlZCB2YXJpYWJsZShzKVxuXG4iLAogICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25n
PihpbnN0cnVjdGlvbkNvdW50KSwKICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4o
aW5zdHJ1Y3Rpb25zKCkuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSksCi0gICAgICAgIHRo
aXMsIG1fbnVtUGFyYW1ldGVycywgbV9udW1DYWxsZWVSZWdpc3RlcnMpOworICAgICAgICB0aGlz
LCBtX251bVBhcmFtZXRlcnMsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzLCBtX251bVZhcnMpOwogCiAg
ICAgVmVjdG9yPEluc3RydWN0aW9uPjo6Y29uc3RfaXRlcmF0b3IgYmVnaW4gPSBpbnN0cnVjdGlv
bnMoKS5iZWdpbigpOwogICAgIFZlY3RvcjxJbnN0cnVjdGlvbj46OmNvbnN0X2l0ZXJhdG9yIGVu
ZCA9IGluc3RydWN0aW9ucygpLmVuZCgpOwpAQCAtODk2LDYgKzg5NywxNCBAQCB2b2lkIENvZGVC
bG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMsIGNvCiAgICAgICAgICAgICBwcmludFB1dEJ5SWRP
cChleGVjLCBsb2NhdGlvbiwgaXQsICJwdXRfYnlfaWRfdHJhbnNpdGlvbiIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlv
bl9kaXJlY3Q6IHsKKyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBp
dCwgInB1dF9ieV9pZF90cmFuc2l0aW9uX2RpcmVjdCIpOworICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6IHsK
KyAgICAgICAgICAgIHByaW50UHV0QnlJZE9wKGV4ZWMsIGxvY2F0aW9uLCBpdCwgInB1dF9ieV9p
ZF90cmFuc2l0aW9uX25vcm1hbCIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KICAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfZ2VuZXJpYzogewogICAgICAgICAgICAgcHJpbnRQdXRC
eUlkT3AoZXhlYywgbG9jYXRpb24sIGl0LCAicHV0X2J5X2lkX2dlbmVyaWMiKTsKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTQ1Myw2ICsxNDYyLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soQ29w
eVBhcnNlZEJsb2NrVGFnLAogewogICAgIHNldE51bVBhcmFtZXRlcnMob3RoZXIubnVtUGFyYW1l
dGVycygpKTsKICAgICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJXYXJtVXAo
KTsKICAgICAKICAgICBpZiAob3RoZXIubV9yYXJlRGF0YSkgewogICAgICAgICBjcmVhdGVSYXJl
RGF0YUlmTmVjZXNzYXJ5KCk7CkBAIC0xNTAxLDYgKzE1MTEsNyBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgQVNTRVJUKG1fc291cmNlKTsKICAgICAKICAg
ICBvcHRpbWl6ZUFmdGVyV2FybVVwKCk7CisgICAgaml0QWZ0ZXJXYXJtVXAoKTsKIAogI2lmIERV
TVBfQ09ERV9CTE9DS19TVEFUSVNUSUNTCiAgICAgbGl2ZUNvZGVCbG9ja1NldC5hZGQodGhpcyk7
CkBAIC0xNTE4LDcgKzE1MjksMTEgQEAgQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKICNpZiBFTkFC
TEUoVkVSQk9TRV9WQUxVRV9QUk9GSUxFKQogICAgIGR1bXBWYWx1ZVByb2ZpbGVzKCk7CiAjZW5k
aWYKLSAgICAKKworI2lmIEVOQUJMRShMTElOVCkgICAgCisgICAgd2hpbGUgKG1faW5jb21pbmdM
TEludENhbGxzLmJlZ2luKCkgIT0gbV9pbmNvbWluZ0xMSW50Q2FsbHMuZW5kKCkpCisgICAgICAg
IG1faW5jb21pbmdMTEludENhbGxzLmJlZ2luKCktPnJlbW92ZSgpOworI2VuZGlmIC8vIEVOQUJM
RShMTElOVCkKICNpZiBFTkFCTEUoSklUKQogICAgIC8vIFdlIG1heSBiZSBkZXN0cm95ZWQgYmVm
b3JlIGFueSBDb2RlQmxvY2tzIHRoYXQgcmVmZXIgdG8gdXMgYXJlIGRlc3Ryb3llZC4KICAgICAv
LyBDb25zaWRlciB0aGF0IHR3byBDb2RlQmxvY2tzIGJlY29tZSB1bnJlYWNoYWJsZSBhdCB0aGUg
c2FtZSB0aW1lLiBUaGVyZQpAQCAtMTczMCw4ICsxNzQ1LDY5IEBAIHZvaWQgQ29kZUJsb2NrOjpm
aW5hbGl6ZVVuY29uZGl0aW9uYWxseSgKICNlbHNlCiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVy
Ym9zZVVubGlua2luZyA9IGZhbHNlOwogI2VuZGlmCi0jZW5kaWYKKyNlbmRpZiAvLyBFTkFCTEUo
SklUKQogICAgIAorI2lmIEVOQUJMRShMTElOVCkKKyAgICBJbnRlcnByZXRlciogaW50ZXJwcmV0
ZXIgPSBtX2dsb2JhbERhdGEtPmludGVycHJldGVyOworICAgIC8vIGludGVycHJldGVyLT5jbGFz
c2ljRW5hYmxlZCgpIHJldHVybnMgdHJ1ZSBpZiB0aGUgb2xkIEMrKyBpbnRlcnByZXRlciBpcyBl
bmFibGVkLiBJZiB0aGF0J3MgZW5hYmxlZAorICAgIC8vIHRoZW4gd2UncmUgbm90IHVzaW5nIExM
SW50LgorICAgIGlmICghaW50ZXJwcmV0ZXItPmNsYXNzaWNFbmFibGVkKCkpIHsKKyAgICAgICAg
Zm9yIChzaXplX3Qgc2l6ZSA9IG1fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnMuc2l6ZSgpLCBp
ID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1ckluc3Ry
dWN0aW9uID0gJmluc3RydWN0aW9ucygpW21fcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1d
OworICAgICAgICAgICAgc3dpdGNoIChpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1
Y3Rpb25bMF0udS5vcGNvZGUpKSB7CisgICAgICAgICAgICBjYXNlIG9wX2dldF9ieV9pZDoKKyAg
ICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkOgorICAgICAgICAgICAgICAgIGlmICghY3VySW5z
dHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUgfHwgSGVhcDo6aXNNYXJrZWQoY3VySW5zdHJ1Y3Rpb25b
NF0udS5zdHJ1Y3R1cmUuZ2V0KCkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAgICAgZGF0
YUxvZygiQ2xlYXJpbmcgTExJbnQgcHJvcGVydHkgYWNjZXNzIHdpdGggc3RydWN0dXJlICVwLlxu
IiwgY3VySW5zdHJ1Y3Rpb25bNF0udS5zdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICAgICAgICAg
IGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAg
Y3VySW5zdHJ1Y3Rpb25bNV0udS5vcGVyYW5kID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAg
ICAgICAgY2FzZSBvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgICAgICAgICAg
ICAgaWYgKEhlYXA6OmlzTWFya2VkKGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgp
KQorICAgICAgICAgICAgICAgICAgICAmJiBIZWFwOjppc01hcmtlZChjdXJJbnN0cnVjdGlvbls2
XS51LnN0cnVjdHVyZS5nZXQoKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgSGVhcDo6aXNNYXJr
ZWQoY3VySW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKSkpCisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKSB7
CisgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkNsZWFyaW5nIExMSW50IHB1dCB0cmFuc2l0
aW9uIHdpdGggc3RydWN0dXJlcyAlcCAtPiAlcCwgY2hhaW4gJXAuXG4iLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzRdLnUuc3RydWN0dXJlLmdldCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmdl
dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckluc3RydWN0aW9uWzddLnUuc3Ry
dWN0dXJlQ2hhaW4uZ2V0KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj
dXJJbnN0cnVjdGlvbls0XS51LnN0cnVjdHVyZS5jbGVhcigpOworICAgICAgICAgICAgICAgIGN1
ckluc3RydWN0aW9uWzZdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY3Vy
SW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5jbGVhcigpOworICAgICAgICAgICAgICAg
IGN1ckluc3RydWN0aW9uWzBdLnUub3Bjb2RlID0gaW50ZXJwcmV0ZXItPmdldE9wY29kZShvcF9w
dXRfYnlfaWQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBmb3IgKHNpemVfdCBzaXplID0gbV9nbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgICAgIEluc3Ry
dWN0aW9uKiBjdXJJbnN0cnVjdGlvbiA9ICZpbnN0cnVjdGlvbnMoKVttX2dsb2JhbFJlc29sdmVJ
bnN0cnVjdGlvbnNbaV1dOworICAgICAgICAgICAgQVNTRVJUKGludGVycHJldGVyLT5nZXRPcGNv
ZGVJRChjdXJJbnN0cnVjdGlvblswXS51Lm9wY29kZSkgPT0gb3BfcmVzb2x2ZV9nbG9iYWwKKyAg
ICAgICAgICAgICAgICAgICB8fCBpbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoY3VySW5zdHJ1Y3Rp
b25bMF0udS5vcGNvZGUpID09IG9wX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpOworICAgICAgICAg
ICAgaWYgKCFjdXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZSB8fCBIZWFwOjppc01hcmtlZChj
dXJJbnN0cnVjdGlvblszXS51LnN0cnVjdHVyZS5nZXQoKSkpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAg
ICBkYXRhTG9nKCJDbGVhcmluZyBMTEludCBnbG9iYWwgcmVzb2x2ZSBjYWNoZSB3aXRoIHN0cnVj
dHVyZSAlcC5cbiIsIGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmdldCgpKTsKKyAgICAg
ICAgICAgIGN1ckluc3RydWN0aW9uWzNdLnUuc3RydWN0dXJlLmNsZWFyKCk7CisgICAgICAgICAg
ICBjdXJJbnN0cnVjdGlvbls0XS51Lm9wZXJhbmQgPSAwOworICAgICAgICB9CisgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2xsaW50Q2FsbExpbmtJbmZvcy5zaXplKCk7ICsraSkg
eworICAgICAgICAgICAgaWYgKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkgJiYg
IUhlYXA6OmlzTWFya2VkKG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmNhbGxlZS5nZXQoKSkpIHsK
KyAgICAgICAgICAgICAgICBpZiAodmVyYm9zZVVubGlua2luZykKKyAgICAgICAgICAgICAgICAg
ICAgZGF0YUxvZygiQ2xlYXJpbmcgTExJbnQgY2FsbCBmcm9tICVwLlxuIiwgdGhpcyk7CisgICAg
ICAgICAgICAgICAgbV9sbGludENhbGxMaW5rSW5mb3NbaV0udW5saW5rKCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoISFtX2xsaW50Q2FsbExpbmtJbmZvc1tpXS5sYXN0U2VlbkNh
bGxlZSAmJiAhSGVhcDo6aXNNYXJrZWQobV9sbGludENhbGxMaW5rSW5mb3NbaV0ubGFzdFNlZW5D
YWxsZWUuZ2V0KCkpKQorICAgICAgICAgICAgICAgIG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmxh
c3RTZWVuQ2FsbGVlLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYgLy8gRU5BQkxF
KExMSU5UKQorCiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgLy8gQ2hlY2sgaWYgd2UncmUgbm90
IGxpdmUuIElmIHdlIGFyZSwgdGhlbiBqZXR0aXNvbi4KICAgICBpZiAoIShzaG91bGRJbW1lZGlh
dGVseUFzc3VtZUxpdmVuZXNzRHVyaW5nU2NhbigpIHx8IG1fZGZnRGF0YS0+bGl2ZW5lc3NIYXNC
ZWVuUHJvdmVkKSkgewpAQCAtMTc1NCw3ICsxODMwLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmZpbmFs
aXplVW5jb25kaXRpb25hbGx5KAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbnVt
YmVyT2ZDYWxsTGlua0luZm9zKCk7ICsraSkgewogICAgICAgICAgICAgaWYgKGNhbGxMaW5rSW5m
byhpKS5pc0xpbmtlZCgpICYmICFIZWFwOjppc01hcmtlZChjYWxsTGlua0luZm8oaSkuY2FsbGVl
LmdldCgpKSkgewogICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlVW5saW5raW5nKQotICAgICAg
ICAgICAgICAgICAgICBkYXRhTG9nKCJDbGVhcmluZyBjYWxsIGZyb20gJXAuXG4iLCB0aGlzKTsK
KyAgICAgICAgICAgICAgICAgICAgZGF0YUxvZygiQ2xlYXJpbmcgY2FsbCBmcm9tICVwIHRvICVw
LlxuIiwgdGhpcywgY2FsbExpbmtJbmZvKGkpLmNhbGxlZS5nZXQoKSk7CiAgICAgICAgICAgICAg
ICAgY2FsbExpbmtJbmZvKGkpLnVubGluaygqbV9nbG9iYWxEYXRhLCByZXBhdGNoQnVmZmVyKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghIWNhbGxMaW5rSW5mbyhpKS5sYXN0U2Vl
bkNhbGxlZQpAQCAtMTg1MiwxMCArMTkyOCwxMiBAQCB2b2lkIENvZGVCbG9jazo6c3Ryb25nbHlW
aXNpdFN0cm9uZ1JlZmVyCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2Z1bmN0aW9uRGVj
bHMuc2l6ZSgpOyArK2kpCiAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZtX2Z1bmN0aW9uRGVjbHNb
aV0pOwogI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQotICAgIGZvciAoc2l6ZV90IHNp
emUgPSBtX3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zLnNpemUoKSwgaSA9IDA7IGkgPCBzaXpl
OyArK2kpCi0gICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25zKClb
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uc1tpXV0pOwotICAgIGZvciAoc2l6ZV90IHNpemUg
PSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7ICsr
aSkKLSAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVttX2ds
b2JhbFJlc29sdmVJbnN0cnVjdGlvbnNbaV1dKTsKKyAgICBpZiAobV9nbG9iYWxEYXRhLT5pbnRl
cnByZXRlci0+Y2xhc3NpY0VuYWJsZWQoKSkgeworICAgICAgICBmb3IgKHNpemVfdCBzaXplID0g
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwgc2l6ZTsgKytp
KQorICAgICAgICAgICAgdmlzaXRTdHJ1Y3R1cmVzKHZpc2l0b3IsICZpbnN0cnVjdGlvbnMoKVtt
X3Byb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgICAgIGZvciAoc2l6ZV90IHNp
emUgPSBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnMuc2l6ZSgpLCBpID0gMDsgaSA8IHNpemU7
ICsraSkKKyAgICAgICAgICAgIHZpc2l0U3RydWN0dXJlcyh2aXNpdG9yLCAmaW5zdHJ1Y3Rpb25z
KClbbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zW2ldXSk7CisgICAgfQogI2VuZGlmCiAKICNp
ZiBFTkFCTEUoREZHX0pJVCkKQEAgLTE4NjMsOCArMTk0MSw5IEBAIHZvaWQgQ29kZUJsb2NrOjpz
dHJvbmdseVZpc2l0U3Ryb25nUmVmZXIKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgZXhlY3V0
YWJsZXMgdGhhdCB3ZSBoYXZlIGlubGluZWQgZG9uJ3QgZGllLgogICAgICAgICAvLyBGSVhNRTog
SWYgdGhleSB3b3VsZCBoYXZlIG90aGVyd2lzZSBkaWVkLCB3ZSBzaG91bGQgcHJvYmFibHkgdHJp
Z2dlciByZWNvbXBpbGF0aW9uLgogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGlubGlu
ZUNhbGxGcmFtZXMoKS5zaXplKCk7ICsraSkgewotICAgICAgICAgICAgdmlzaXRvci5hcHBlbmQo
JmlubGluZUNhbGxGcmFtZXMoKVtpXS5leGVjdXRhYmxlKTsKLSAgICAgICAgICAgIHZpc2l0b3Iu
YXBwZW5kKCZpbmxpbmVDYWxsRnJhbWVzKClbaV0uY2FsbGVlKTsKKyAgICAgICAgICAgIElubGlu
ZUNhbGxGcmFtZSYgaW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lcygpW2ldOworICAg
ICAgICAgICAgdmlzaXRvci5hcHBlbmQoJmlubGluZUNhbGxGcmFtZS5leGVjdXRhYmxlKTsKKyAg
ICAgICAgICAgIHZpc2l0b3IuYXBwZW5kKCZpbmxpbmVDYWxsRnJhbWUuY2FsbGVlKTsKICAgICAg
ICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjA2OCwxMiArMjE0NywxOCBAQCB1bnNpZ25lZCBDb2Rl
QmxvY2s6OmFkZE9yRmluZENvbnN0YW50KEpTCiAgICAgfQogICAgIHJldHVybiBhZGRDb25zdGFu
dCh2KTsKIH0KLSAgICAKKwogI2lmIEVOQUJMRShKSVQpCiB2b2lkIENvZGVCbG9jazo6dW5saW5r
Q2FsbHMoKQogewogICAgIGlmICghIW1fYWx0ZXJuYXRpdmUpCiAgICAgICAgIG1fYWx0ZXJuYXRp
dmUtPnVubGlua0NhbGxzKCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbV9sbGludENhbGxMaW5rSW5mb3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYg
KG1fbGxpbnRDYWxsTGlua0luZm9zW2ldLmlzTGlua2VkKCkpCisgICAgICAgICAgICBtX2xsaW50
Q2FsbExpbmtJbmZvc1tpXS51bmxpbmsoKTsKKyAgICB9CisjZW5kaWYKICAgICBpZiAoIShtX2Nh
bGxMaW5rSW5mb3Muc2l6ZSgpIHx8IG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCkpKQogICAg
ICAgICByZXR1cm47CiAgICAgaWYgKCFtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQpAQCAtMjA4
OCwxMCArMjE3Myw2MiBAQCB2b2lkIENvZGVCbG9jazo6dW5saW5rQ2FsbHMoKQogCiB2b2lkIENv
ZGVCbG9jazo6dW5saW5rSW5jb21pbmdDYWxscygpCiB7CisjaWYgRU5BQkxFKExMSU5UKQorICAg
IHdoaWxlIChtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpICE9IG1faW5jb21pbmdMTEludENh
bGxzLmVuZCgpKQorICAgICAgICBtX2luY29taW5nTExJbnRDYWxscy5iZWdpbigpLT51bmxpbmso
KTsKKyNlbmRpZgorICAgIGlmIChtX2luY29taW5nQ2FsbHMuaXNFbXB0eSgpKQorICAgICAgICBy
ZXR1cm47CiAgICAgUmVwYXRjaEJ1ZmZlciByZXBhdGNoQnVmZmVyKHRoaXMpOwogICAgIHdoaWxl
IChtX2luY29taW5nQ2FsbHMuYmVnaW4oKSAhPSBtX2luY29taW5nQ2FsbHMuZW5kKCkpCiAgICAg
ICAgIG1faW5jb21pbmdDYWxscy5iZWdpbigpLT51bmxpbmsoKm1fZ2xvYmFsRGF0YSwgcmVwYXRj
aEJ1ZmZlcik7CiB9CisKK3Vuc2lnbmVkIENvZGVCbG9jazo6Ynl0ZWNvZGVPZmZzZXQoRXhlY1N0
YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHJldHVybkFkZHJlc3MpCit7CisjaWYgRU5BQkxF
KExMSU5UKQorICAgIGlmIChyZXR1cm5BZGRyZXNzLnZhbHVlKCkgPj0gYml0d2lzZV9jYXN0PHZv
aWQqPigmbGxpbnRfYmVnaW4pCisgICAgICAgICYmIHJldHVybkFkZHJlc3MudmFsdWUoKSA8PSBi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9lbmQpKSB7CisgICAgICAgIEFTU0VSVChleGVjLT5j
b2RlQmxvY2soKSk7CisgICAgICAgIEFTU0VSVChleGVjLT5jb2RlQmxvY2soKSA9PSB0aGlzKTsK
KyAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGdldEpJVFR5cGUoKSkpOwor
ICAgICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBleGVjLT5jdXJyZW50VlBDKCk7Cisg
ICAgICAgIEFTU0VSVChpbnN0cnVjdGlvbik7CisgICAgICAgIAorICAgICAgICAvLyBUaGUgTExJ
bnQgc3RvcmVzIHRoZSBQQyBhZnRlciB0aGUgY2FsbCBpbnN0cnVjdGlvbiByYXRoZXIgdGhhbiB0
aGUgUEMgb2YKKyAgICAgICAgLy8gdGhlIGNhbGwgaW5zdHJ1Y3Rpb24uIFRoaXMgcmVxdWlyZXMg
c29tZSBjb3JyZWN0aW5nLiBXZSByZWx5IG9uIHRoZSBmYWN0CisgICAgICAgIC8vIHRoYXQgdGhl
IHByZWNlZGluZyBpbnN0cnVjdGlvbiBtdXN0IGJlIG9uZSBvZiB0aGUgY2FsbCBpbnN0cnVjdGlv
bnMsIHNvCisgICAgICAgIC8vIGVpdGhlciBpdCdzIGEgY2FsbF92YXJhcmdzIG9yIGl0J3MgYSBj
YWxsLCBjb25zdHJ1Y3QsIG9yIGV2YWwuCisgICAgICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9w
X2NhbGxfdmFyYXJncykgPD0gT1BDT0RFX0xFTkdUSChvcF9jYWxsKSk7CisgICAgICAgIEFTU0VS
VChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfY29uc3RydWN0KSk7
CisgICAgICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgo
b3BfY2FsbF9ldmFsKSk7CisgICAgICAgIGlmIChpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChv
cF9jYWxsX3ZhcmFyZ3MpXS51LnBvaW50ZXIgPT0gYml0d2lzZV9jYXN0PHZvaWQqPihsbGludF9v
cF9jYWxsX3ZhcmFyZ3MpKSB7CisgICAgICAgICAgICAvLyBXZSBrbm93IHRoYXQgdGhlIHByZWNl
ZGluZyBpbnN0cnVjdGlvbiBtdXN0IGJlIG9wX2NhbGxfdmFyYXJncyBiZWNhdXNlIHRoZXJlIGlz
IG5vIHdheSB0aGF0CisgICAgICAgICAgICAvLyB0aGUgcG9pbnRlciB0byB0aGUgY2FsbF92YXJh
cmdzIGNvdWxkIGJlIGFuIG9wZXJhbmQgdG8gdGhlIGNhbGwuCisgICAgICAgICAgICBpbnN0cnVj
dGlvbiAtPSBPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncyk7CisgICAgICAgICAgICBBU1NF
UlQoaW5zdHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCldLnUucG9pbnRlciAhPSBiaXR3
aXNlX2Nhc3Q8dm9pZCo+KGxsaW50X29wX2NhbGwpCisgICAgICAgICAgICAgICAgICAgJiYgaW5z
dHJ1Y3Rpb25bLU9QQ09ERV9MRU5HVEgob3BfY2FsbCldLnUucG9pbnRlciAhPSBiaXR3aXNlX2Nh
c3Q8dm9pZCo+KGxsaW50X29wX2NvbnN0cnVjdCkKKyAgICAgICAgICAgICAgICAgICAmJiBpbnN0
cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsKV0udS5wb2ludGVyICE9IGJpdHdpc2VfY2Fz
dDx2b2lkKj4obGxpbnRfb3BfY2FsbF9ldmFsKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAvLyBNdXN0IGJlIHRoYXQgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gd2FzIHNvbWUgb3BfY2Fs
bC4KKyAgICAgICAgICAgIEFTU0VSVChpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxs
KV0udS5wb2ludGVyID09IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3BfY2FsbCkKKyAgICAg
ICAgICAgICAgICAgICB8fCBpbnN0cnVjdGlvblstT1BDT0RFX0xFTkdUSChvcF9jYWxsKV0udS5w
b2ludGVyID09IGJpdHdpc2VfY2FzdDx2b2lkKj4obGxpbnRfb3BfY29uc3RydWN0KQorICAgICAg
ICAgICAgICAgICAgIHx8IGluc3RydWN0aW9uWy1PUENPREVfTEVOR1RIKG9wX2NhbGwpXS51LnBv
aW50ZXIgPT0gYml0d2lzZV9jYXN0PHZvaWQqPihsbGludF9vcF9jYWxsX2V2YWwpKTsKKyAgICAg
ICAgICAgIGluc3RydWN0aW9uIC09IE9QQ09ERV9MRU5HVEgob3BfY2FsbCk7CisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIHJldHVybiBieXRlY29kZU9mZnNldChpbnN0cnVjdGlvbik7Cisg
ICAgfQorI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oZXhlYyk7CisjZW5kaWYKKyAgICBpZiAoIW1f
cmFyZURhdGEpCisgICAgICAgIHJldHVybiAxOworICAgIFZlY3RvcjxDYWxsUmV0dXJuT2Zmc2V0
VG9CeXRlY29kZU9mZnNldD4mIGNhbGxJbmRpY2VzID0gbV9yYXJlRGF0YS0+bV9jYWxsUmV0dXJu
SW5kZXhWZWN0b3I7CisgICAgaWYgKCFjYWxsSW5kaWNlcy5zaXplKCkpCisgICAgICAgIHJldHVy
biAxOworICAgIHJldHVybiBiaW5hcnlTZWFyY2g8Q2FsbFJldHVybk9mZnNldFRvQnl0ZWNvZGVP
ZmZzZXQsIHVuc2lnbmVkLCBnZXRDYWxsUmV0dXJuT2Zmc2V0PihjYWxsSW5kaWNlcy5iZWdpbigp
LCBjYWxsSW5kaWNlcy5zaXplKCksIGdldEpJVENvZGUoKS5vZmZzZXRPZihyZXR1cm5BZGRyZXNz
LnZhbHVlKCkpKS0+Ynl0ZWNvZGVPZmZzZXQ7Cit9CiAjZW5kaWYKIAogdm9pZCBDb2RlQmxvY2s6
OmNsZWFyRXZhbENhY2hlKCkKQEAgLTIxODcsMjQgKzIzMjQsNDUgQEAgYm9vbCBGdW5jdGlvbkNv
ZGVCbG9jazo6Y2FuQ29tcGlsZVdpdGhERgogCiB2b2lkIFByb2dyYW1Db2RlQmxvY2s6OmpldHRp
c29uKCkKIHsKLSAgICBBU1NFUlQoZ2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklU
KTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGdldEpJVFR5cGUoKSkpOwog
ICAgIEFTU0VSVCh0aGlzID09IHJlcGxhY2VtZW50KCkpOwogICAgIHN0YXRpY19jYXN0PFByb2dy
YW1FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGUo
Kmdsb2JhbERhdGEoKSk7CiB9CiAKIHZvaWQgRXZhbENvZGVCbG9jazo6amV0dGlzb24oKQogewot
ICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFT
U0VSVChKSVRDb2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJU
KHRoaXMgPT0gcmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RXZhbEV4ZWN1dGFibGUq
Pihvd25lckV4ZWN1dGFibGUoKSktPmpldHRpc29uT3B0aW1pemVkQ29kZSgqZ2xvYmFsRGF0YSgp
KTsKIH0KIAogdm9pZCBGdW5jdGlvbkNvZGVCbG9jazo6amV0dGlzb24oKQogewotICAgIEFTU0VS
VChnZXRKSVRUeXBlKCkgIT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgIEFTU0VSVChKSVRD
b2RlOjppc09wdGltaXppbmdKSVQoZ2V0SklUVHlwZSgpKSk7CiAgICAgQVNTRVJUKHRoaXMgPT0g
cmVwbGFjZW1lbnQoKSk7CiAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3du
ZXJFeGVjdXRhYmxlKCkpLT5qZXR0aXNvbk9wdGltaXplZENvZGVGb3IoKmdsb2JhbERhdGEoKSwg
bV9pc0NvbnN0cnVjdG9yID8gQ29kZUZvckNvbnN0cnVjdCA6IENvZGVGb3JDYWxsKTsKIH0KKwor
dm9pZCBQcm9ncmFtQ29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2Jh
bERhdGEpCit7CisgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rKTsKKyAgICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4g
c3RhdGljX2Nhc3Q8UHJvZ3JhbUV4ZWN1dGFibGUqPihvd25lckV4ZWN1dGFibGUoKSktPmppdENv
bXBpbGUoZ2xvYmFsRGF0YSk7Cit9CisKK3ZvaWQgRXZhbENvZGVCbG9jazo6aml0Q29tcGlsZUlt
cGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIEFTU0VSVChnZXRKSVRUeXBlKCkg
PT0gSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgQVNTRVJUKHRoaXMgPT0gcmVwbGFj
ZW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEV2YWxFeGVjdXRhYmxlKj4ob3duZXJF
eGVjdXRhYmxlKCkpLT5qaXRDb21waWxlKGdsb2JhbERhdGEpOworfQorCit2b2lkIEZ1bmN0aW9u
Q29kZUJsb2NrOjpqaXRDb21waWxlSW1wbChKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7Cisg
ICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRDb2RlOjpJbnRlcnByZXRlclRodW5rKTsKKyAg
ICBBU1NFUlQodGhpcyA9PSByZXBsYWNlbWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpLT5qaXRDb21waWxlRm9yKGds
b2JhbERhdGEsIG1faXNDb25zdHJ1Y3RvciA/IENvZGVGb3JDb25zdHJ1Y3QgOiBDb2RlRm9yQ2Fs
bCk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgJKHJldmlzaW9uIDEwODM1OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkod29ya2luZyBj
b3B5KQpAQCAtMzAsNiArMzAsNyBAQAogI2lmbmRlZiBDb2RlQmxvY2tfaAogI2RlZmluZSBDb2Rl
QmxvY2tfaAogCisjaW5jbHVkZSAiQnl0ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkNh
bGxMaW5rSW5mby5oIgogI2luY2x1ZGUgIkNhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0
LmgiCiAjaW5jbHVkZSAiQ29kZU9yaWdpbi5oIgpAQCAtNTAsNiArNTEsNyBAQAogI2luY2x1ZGUg
IkpJVFdyaXRlQmFycmllci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSnVtcFRhYmxlLmgiCisjaW5jbHVkZSAiTExJbnRDYWxsTGlua0luZm8uaCIKICNpbmNsdWRl
ICJMaW5lSW5mby5oIgogI2luY2x1ZGUgIk5vZGVzLmgiCiAjaW5jbHVkZSAiUHJlZGljdGlvblRy
YWNrZXIuaCIKQEAgLTY1LDE2ICs2NywxMSBAQAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlICJTdHJ1Y3R1cmVTdHViSW5mby5oIgogCi0vLyBSZWdpc3RlciBudW1iZXJzIHVzZWQg
aW4gYnl0ZWNvZGUgb3BlcmF0aW9ucyBoYXZlIGRpZmZlcmVudCBtZWFuaW5nIGFjY29yZGluZyB0
byB0aGVpciByYW5nZXM6Ci0vLyAgICAgIDB4ODAwMDAwMDAtMHhGRkZGRkZGRiAgTmVnYXRpdmUg
aW5kaWNlcyBmcm9tIHRoZSBDYWxsRnJhbWUgcG9pbnRlciBhcmUgZW50cmllcyBpbiB0aGUgY2Fs
bCBmcmFtZSwgc2VlIFJlZ2lzdGVyRmlsZS5oLgotLy8gICAgICAweDAwMDAwMDAwLTB4M0ZGRkZG
RkYgIEZvcndhcmRzIGluZGljZXMgZnJvbSB0aGUgQ2FsbEZyYW1lIHBvaW50ZXIgYXJlIGxvY2Fs
IHZhcnMgYW5kIHRlbXBvcmFyaWVzIHdpdGggdGhlIGZ1bmN0aW9uJ3MgY2FsbGZyYW1lLgotLy8g
ICAgICAweDQwMDAwMDAwLTB4N0ZGRkZGRkYgIFBvc2l0aXZlIGluZGljZXMgZnJvbSAweDQwMDAw
MDAwIHNwZWNpZnkgZW50cmllcyBpbiB0aGUgY29uc3RhbnQgcG9vbCBvbiB0aGUgQ29kZUJsb2Nr
Lgotc3RhdGljIGNvbnN0IGludCBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCA9IDB4NDAwMDAw
MDA7Ci0KIG5hbWVzcGFjZSBKU0MgewogCi0gICAgY2xhc3MgRXhlY1N0YXRlOwogICAgIGNsYXNz
IERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgRXhlY1N0YXRlOworICAgIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIAogICAgIGlubGluZSBpbnQgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lz
dGVyKGludCBhcmd1bWVudHNSZWdpc3RlcikgeyByZXR1cm4gYXJndW1lbnRzUmVnaXN0ZXIgLSAx
OyB9CiAKQEAgLTgzLDYgKzgwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgQ29kZUJs
b2NrIDogcHVibGljIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIsIHB1YmxpYyBXZWFrUmVmZXJlbmNl
SGFydmVzdGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgICAgIGZy
aWVuZCBjbGFzcyBKSVQ7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0
b3I7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIENvcHlQYXJzZWRCbG9ja1RhZyB7IENvcHlQ
YXJzZWRCbG9jayB9OwogICAgIHByb3RlY3RlZDoKQEAgLTEyMyw3ICsxMjEsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgICAgIHdoaWxlIChyZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAg
ICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LT5hbHRlcm5hdGl2ZSgpOwogICAgICAgICAgICAg
QVNTRVJUKHJlc3VsdCk7Ci0gICAgICAgICAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkg
PT0gSklUQ29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6Omlz
QmFzZWxpbmVDb2RlKHJlc3VsdC0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OwogICAgICAgICB9CiAjZW5kaWYKQEAgLTE5MiwxNSArMTkwLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gKihiaW5hcnlTZWFyY2g8TWV0aG9kQ2FsbExpbmtJ
bmZvLCB1bnNpZ25lZCwgZ2V0TWV0aG9kQ2FsbExpbmtJbmZvQnl0ZWNvZGVJbmRleD4obV9tZXRo
b2RDYWxsTGlua0luZm9zLmJlZ2luKCksIG1fbWV0aG9kQ2FsbExpbmtJbmZvcy5zaXplKCksIGJ5
dGVjb2RlSW5kZXgpKTsKICAgICAgICAgfQogCi0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zm
c2V0KFJldHVybkFkZHJlc3NQdHIgcmV0dXJuQWRkcmVzcykKLSAgICAgICAgewotICAgICAgICAg
ICAgaWYgKCFtX3JhcmVEYXRhKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAg
ICAgVmVjdG9yPENhbGxSZXR1cm5PZmZzZXRUb0J5dGVjb2RlT2Zmc2V0PiYgY2FsbEluZGljZXMg
PSBtX3JhcmVEYXRhLT5tX2NhbGxSZXR1cm5JbmRleFZlY3RvcjsKLSAgICAgICAgICAgIGlmICgh
Y2FsbEluZGljZXMuc2l6ZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAg
ICAgcmV0dXJuIGJpbmFyeVNlYXJjaDxDYWxsUmV0dXJuT2Zmc2V0VG9CeXRlY29kZU9mZnNldCwg
dW5zaWduZWQsIGdldENhbGxSZXR1cm5PZmZzZXQ+KGNhbGxJbmRpY2VzLmJlZ2luKCksIGNhbGxJ
bmRpY2VzLnNpemUoKSwgZ2V0SklUQ29kZSgpLm9mZnNldE9mKHJldHVybkFkZHJlc3MudmFsdWUo
KSkpLT5ieXRlY29kZU9mZnNldDsKLSAgICAgICAgfQorICAgICAgICB1bnNpZ25lZCBieXRlY29k
ZU9mZnNldChFeGVjU3RhdGUqLCBSZXR1cm5BZGRyZXNzUHRyKTsKIAogICAgICAgICB1bnNpZ25l
ZCBieXRlY29kZU9mZnNldEZvckNhbGxBdEluZGV4KHVuc2lnbmVkIGluZGV4KQogICAgICAgICB7
CkBAIC0yMjEsMTEgKzIxMSwxNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgewogICAgICAg
ICAgICAgbV9pbmNvbWluZ0NhbGxzLnB1c2goaW5jb21pbmcpOwogICAgICAgICB9CisjaWYgRU5B
QkxFKExMSU5UKQorICAgICAgICB2b2lkIGxpbmtJbmNvbWluZ0NhbGwoTExJbnRDYWxsTGlua0lu
Zm8qIGluY29taW5nKQorICAgICAgICB7CisgICAgICAgICAgICBtX2luY29taW5nTExJbnRDYWxs
cy5wdXNoKGluY29taW5nKTsKKyAgICAgICAgfQorI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKICAg
ICAgICAgCiAgICAgICAgIHZvaWQgdW5saW5rSW5jb21pbmdDYWxscygpOwotI2VuZGlmCisjZW5k
aWYgLy8gRU5BQkxFKEpJVCkKIAotI2lmIEVOQUJMRShERkdfSklUKQorI2lmIEVOQUJMRShERkdf
SklUKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgIHZvaWQgc2V0SklUQ29kZU1hcChQYXNzT3du
UHRyPENvbXBhY3RKSVRDb2RlTWFwPiBqaXRDb2RlTWFwKQogICAgICAgICB7CiAgICAgICAgICAg
ICBtX2ppdENvZGVNYXAgPSBqaXRDb2RlTWFwOwpAQCAtMjM0LDcgKzIzMCw5IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICB7CiAgICAgICAgICAgICByZXR1cm4gbV9qaXRDb2RlTWFwLmdldCgp
OwogICAgICAgICB9CisjZW5kaWYKICAgICAgICAgCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAg
ICAgIHZvaWQgY3JlYXRlREZHRGF0YUlmTmVjZXNzYXJ5KCkKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKCEhbV9kZmdEYXRhKQpAQCAtMzMzLDEyICszMzEsMTEgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIH0KICNlbmRpZgogCi0jaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiAg
ICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KEluc3RydWN0aW9uKiByZXR1cm5BZGRyZXNz
KQogICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQocmV0dXJuQWRkcmVzcyA+PSBpbnN0cnVj
dGlvbnMoKS5iZWdpbigpICYmIHJldHVybkFkZHJlc3MgPCBpbnN0cnVjdGlvbnMoKS5lbmQoKSk7
CiAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5zdHJ1Y3Rpb24qPihyZXR1cm5BZGRy
ZXNzKSAtIGluc3RydWN0aW9ucygpLmJlZ2luKCk7CiAgICAgICAgIH0KLSNlbmRpZgogCiAgICAg
ICAgIHZvaWQgc2V0SXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKGJvb2wgaXNOdW1lcmljQ29tcGFy
ZUZ1bmN0aW9uKSB7IG1faXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uID0gaXNOdW1lcmljQ29tcGFy
ZUZ1bmN0aW9uOyB9CiAgICAgICAgIGJvb2wgaXNOdW1lcmljQ29tcGFyZUZ1bmN0aW9uKCkgeyBy
ZXR1cm4gbV9pc051bWVyaWNDb21wYXJlRnVuY3Rpb247IH0KQEAgLTM3Niw2ICszNzMsMjAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4ZWN1dGFibGVNZW1vcnlIYW5kbGUqIGV4ZWN1dGFi
bGVNZW1vcnkoKSB7IHJldHVybiBnZXRKSVRDb2RlKCkuZ2V0RXhlY3V0YWJsZU1lbW9yeSgpOyB9
CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNvbXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwg
U2NvcGVDaGFpbk5vZGUqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpID0g
MDsKKyAgICAgICAgYm9vbCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKGdldEpJVFR5cGUoKSAhPSBKSVRDb2RlOjpJbnRlcnBy
ZXRlclRodW5rKSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKGdldEpJVFR5cGUoKSA9PSBKSVRD
b2RlOjpCYXNlbGluZUpJVCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgfQorI2lmIEVOQUJMRShKSVQpCisgICAgICAgICAgICBqaXRDb21waWxlSW1wbChnbG9i
YWxEYXRhKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworI2Vsc2UKKyAgICAgICAgICAgIFVO
VVNFRF9QQVJBTShnbG9iYWxEYXRhKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgorICAgICAgICB9CiAgICAgICAgIHZpcnR1YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpID0g
MDsKIAogICAgICAgICBlbnVtIENvbXBpbGVXaXRoREZHU3RhdGUgewpAQCAtMzk1LDEzICs0MDYs
MTMgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgYm9vbCBoYXNPcHRpbWl6ZWRSZXBsYWNl
bWVudCgpCiAgICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChnZXRKSVRUeXBlKCkgPT0gSklU
Q29kZTo6QmFzZWxpbmVKSVQpOworICAgICAgICAgICAgQVNTRVJUKEpJVENvZGU6OmlzQmFzZWxp
bmVDb2RlKGdldEpJVFR5cGUoKSkpOwogICAgICAgICAgICAgYm9vbCByZXN1bHQgPSByZXBsYWNl
bWVudCgpLT5nZXRKSVRUeXBlKCkgPiBnZXRKSVRUeXBlKCk7CiAjaWYgIUFTU0VSVF9ESVNBQkxF
RAogICAgICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFj
ZW1lbnQoKS0+Z2V0SklUVHlwZSgpID09IEpJVENvZGU6OkRGR0pJVCk7CiAgICAgICAgICAgICBl
bHNlIHsKLSAgICAgICAgICAgICAgICBBU1NFUlQocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgp
ID09IEpJVENvZGU6OkJhc2VsaW5lSklUKTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoSklUQ29k
ZTo6aXNCYXNlbGluZUNvZGUocmVwbGFjZW1lbnQoKS0+Z2V0SklUVHlwZSgpKSk7CiAgICAgICAg
ICAgICAgICAgQVNTRVJUKHJlcGxhY2VtZW50KCkgPT0gdGhpcyk7CiAgICAgICAgICAgICB9CiAj
ZW5kaWYKQEAgLTQ2MCwxOCArNDcxLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZv
aWQgY2xlYXJFdmFsQ2FjaGUoKTsKIAotI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQog
ICAgICAgICB2b2lkIGFkZFByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24odW5zaWduZWQgcHJvcGVy
dHlBY2Nlc3NJbnN0cnVjdGlvbikKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFtX2dsb2Jh
bERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fcHJvcGVydHlBY2Nlc3NJbnN0
cnVjdGlvbnMuYXBwZW5kKHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb24pOworICAgICAgICAgICAg
bV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5hcHBlbmQocHJvcGVydHlBY2Nlc3NJbnN0cnVj
dGlvbik7CiAgICAgICAgIH0KICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rp
b24odW5zaWduZWQgZ2xvYmFsUmVzb2x2ZUluc3RydWN0aW9uKQogICAgICAgICB7Ci0gICAgICAg
ICAgICBpZiAoIW1fZ2xvYmFsRGF0YS0+Y2FuVXNlSklUKCkpCi0gICAgICAgICAgICAgICAgbV9n
bG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24p
OworICAgICAgICAgICAgbV9nbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb25zLmFwcGVuZChnbG9iYWxS
ZXNvbHZlSW5zdHJ1Y3Rpb24pOwogICAgICAgICB9CiAgICAgICAgIGJvb2wgaGFzR2xvYmFsUmVz
b2x2ZUluc3RydWN0aW9uQXRCeXRlY29kZU9mZnNldCh1bnNpZ25lZCBieXRlY29kZU9mZnNldCk7
CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBMTEludENhbGxMaW5rSW5mbyogYWRkTExJbnRD
YWxsTGlua0luZm8oKQorICAgICAgICB7CisgICAgICAgICAgICBtX2xsaW50Q2FsbExpbmtJbmZv
cy5hcHBlbmQoTExJbnRDYWxsTGlua0luZm8oKSk7CisgICAgICAgICAgICByZXR1cm4gJm1fbGxp
bnRDYWxsTGlua0luZm9zLmxhc3QoKTsKKyAgICAgICAgfQogI2VuZGlmCiAjaWYgRU5BQkxFKEpJ
VCkKICAgICAgICAgdm9pZCBzZXROdW1iZXJPZlN0cnVjdHVyZVN0dWJJbmZvcyhzaXplX3Qgc2l6
ZSkgeyBtX3N0cnVjdHVyZVN0dWJJbmZvcy5ncm93KHNpemUpOyB9CkBAIC00ODAsOCArNDk0LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgdm9pZCBhZGRHbG9iYWxSZXNvbHZlSW5mbyh1
bnNpZ25lZCBnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGlmIChtX2dsb2JhbERhdGEtPmNhblVzZUpJVCgpKQotICAgICAgICAgICAgICAgIG1fZ2xvYmFs
UmVzb2x2ZUluZm9zLmFwcGVuZChHbG9iYWxSZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5zdHJ1
Y3Rpb24pKTsKKyAgICAgICAgICAgIG1fZ2xvYmFsUmVzb2x2ZUluZm9zLmFwcGVuZChHbG9iYWxS
ZXNvbHZlSW5mbyhnbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24pKTsKICAgICAgICAgfQogICAgICAg
ICBHbG9iYWxSZXNvbHZlSW5mbyYgZ2xvYmFsUmVzb2x2ZUluZm8oaW50IGluZGV4KSB7IHJldHVy
biBtX2dsb2JhbFJlc29sdmVJbmZvc1tpbmRleF07IH0KICAgICAgICAgYm9vbCBoYXNHbG9iYWxS
ZXNvbHZlSW5mb0F0Qnl0ZWNvZGVPZmZzZXQodW5zaWduZWQgYnl0ZWNvZGVPZmZzZXQpOwpAQCAt
NDkyLDYgKzUwNSw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIHZvaWQgYWRkTWV0aG9k
Q2FsbExpbmtJbmZvcyh1bnNpZ25lZCBuKSB7IEFTU0VSVChtX2dsb2JhbERhdGEtPmNhblVzZUpJ
VCgpKTsgbV9tZXRob2RDYWxsTGlua0luZm9zLmdyb3cobik7IH0KICAgICAgICAgTWV0aG9kQ2Fs
bExpbmtJbmZvJiBtZXRob2RDYWxsTGlua0luZm8oaW50IGluZGV4KSB7IHJldHVybiBtX21ldGhv
ZENhbGxMaW5rSW5mb3NbaW5kZXhdOyB9CisgICAgICAgIHNpemVfdCBudW1iZXJPZk1ldGhvZENh
bGxMaW5rSW5mb3MoKSB7IHJldHVybiBtX21ldGhvZENhbGxMaW5rSW5mb3Muc2l6ZSgpOyB9CiAj
ZW5kaWYKICAgICAgICAgCiAjaWYgRU5BQkxFKFZBTFVFX1BST0ZJTEVSKQpAQCAtNTMzLDYgKzU0
NywxMCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnl0ZWNvZGVPZmZzZXRdLnUub3Bjb2RlKSkgLSAxXS51LnByb2ZpbGUgPT0gcmVzdWx0KTsK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KKyAgICAgICAgUHJlZGljdGVk
VHlwZSB2YWx1ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQoaW50IGJ5dGVjb2Rl
T2Zmc2V0KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdmFsdWVQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5jb21wdXRlVXBkYXRlZFByZWRpY3Rpb24oKTsK
KyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdW5zaWduZWQgdG90YWxOdW1iZXJPZlZhbHVl
UHJvZmlsZXMoKQogICAgICAgICB7CkBAIC01NTksMTIgKzU3NywxNiBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlU2xvd0Nhc2UoaW50IGJ5dGVj
b2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQ
cm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIHVu
c2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVP
ZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1cm4gdmFsdWUgPj0gT3B0aW9uczo6
bGlrZWx5VG9UYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3RhdGljX2Nhc3Q8ZG91YmxlPih2
YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9uczo6bGlrZWx5VG9UYWtlU2xv
d0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGJvb2wgY291bGRU
YWtlU2xvd0Nhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBp
ZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHZhbHVlID0gcmFyZUNhc2VQcm9maWxlRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICByZXR1
cm4gdmFsdWUgPj0gT3B0aW9uczo6Y291bGRUYWtlU2xvd0Nhc2VNaW5pbXVtQ291bnQgJiYgc3Rh
dGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSkgLyBtX2V4ZWN1dGlvbkVudHJ5Q291bnQgPj0gT3B0aW9u
czo6Y291bGRUYWtlU2xvd0Nhc2VUaHJlc2hvbGQ7CiAgICAgICAgIH0KQEAgLTU4MywxMiArNjA1
LDE2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgYm9vbCBsaWtlbHlUb1Rh
a2VTcGVjaWFsRmFzdENhc2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAg
ICAgICBpZiAoIW51bWJlck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIHVuc2lnbmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0g
c3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+
bV9jb3VudGVyOwogICAgICAgICAgICAgcmV0dXJuIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID49IE9w
dGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlTWluaW11bUNvdW50ICYmIHN0YXRpY19jYXN0PGRv
dWJsZT4oc3BlY2lhbEZhc3RDYXNlQ291bnQpIC8gbV9leGVjdXRpb25FbnRyeUNvdW50ID49IE9w
dGlvbnM6Omxpa2VseVRvVGFrZVNsb3dDYXNlVGhyZXNob2xkOwogICAgICAgICB9CiAgICAgICAg
IAogICAgICAgICBib29sIGxpa2VseVRvVGFrZURlZXBlc3RTbG93Q2FzZShpbnQgYnl0ZWNvZGVP
ZmZzZXQpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghbnVtYmVyT2ZSYXJlQ2FzZVByb2Zp
bGVzKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgdW5zaWdu
ZWQgc2xvd0Nhc2VDb3VudCA9IHJhcmVDYXNlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVj
b2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWduZWQgc3BlY2lhbEZhc3RD
YXNlQ291bnQgPSBzcGVjaWFsRmFzdENhc2VQcm9maWxlRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNv
ZGVPZmZzZXQpLT5tX2NvdW50ZXI7CiAgICAgICAgICAgICB1bnNpZ25lZCB2YWx1ZSA9IHNsb3dD
YXNlQ291bnQgLSBzcGVjaWFsRmFzdENhc2VDb3VudDsKQEAgLTU5Nyw2ICs2MjMsOCBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgCiAgICAgICAgIGJvb2wgbGlrZWx5VG9UYWtlQW55U2xvd0Nh
c2UoaW50IGJ5dGVjb2RlT2Zmc2V0KQogICAgICAgICB7CisgICAgICAgICAgICBpZiAoIW51bWJl
ck9mUmFyZUNhc2VQcm9maWxlcygpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgICAgIHVuc2lnbmVkIHNsb3dDYXNlQ291bnQgPSByYXJlQ2FzZVByb2ZpbGVGb3JCeXRl
Y29kZU9mZnNldChieXRlY29kZU9mZnNldCktPm1fY291bnRlcjsKICAgICAgICAgICAgIHVuc2ln
bmVkIHNwZWNpYWxGYXN0Q2FzZUNvdW50ID0gc3BlY2lhbEZhc3RDYXNlUHJvZmlsZUZvckJ5dGVj
b2RlT2Zmc2V0KGJ5dGVjb2RlT2Zmc2V0KS0+bV9jb3VudGVyOwogICAgICAgICAgICAgdW5zaWdu
ZWQgdmFsdWUgPSBzbG93Q2FzZUNvdW50ICsgc3BlY2lhbEZhc3RDYXNlQ291bnQ7CkBAIC02OTQs
NyArNzIyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICBib29sIGFkZEZy
ZXF1ZW50RXhpdFNpdGUoY29uc3QgREZHOjpGcmVxdWVudEV4aXRTaXRlJiBzaXRlKQogICAgICAg
ICB7Ci0gICAgICAgICAgICBBU1NFUlQoZ2V0SklUVHlwZSgpID09IEpJVENvZGU6OkJhc2VsaW5l
SklUKTsKKyAgICAgICAgICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShnZXRKSVRU
eXBlKCkpKTsKICAgICAgICAgICAgIHJldHVybiBtX2V4aXRQcm9maWxlLmFkZChzaXRlKTsKICAg
ICAgICAgfQogCkBAIC04MDIsNiArODMwLDI5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2
b2lkIGNvcHlQb3N0UGFyc2VEYXRhRnJvbShDb2RlQmxvY2sqIGFsdGVybmF0aXZlKTsKICAgICAg
ICAgdm9pZCBjb3B5UG9zdFBhcnNlRGF0YUZyb21BbHRlcm5hdGl2ZSgpOwogICAgICAgICAKKyAg
ICAgICAgLy8gRnVuY3Rpb25zIGZvciBjb250cm9sbGluZyB3aGVuIEpJVHRpbmcga2lja3MgaW4s
IGluIGEgbWl4ZWQgbW9kZQorICAgICAgICAvLyBleGVjdXRpb24gd29ybGQuCisgICAgICAgIAor
ICAgICAgICB2b2lkIGRvbnRKSVRBbnl0aW1lU29vbigpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1fbGxpbnRFeGVjdXRlQ291bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZv
ckRvbnRKSVRBbnl0aW1lU29vbjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBq
aXRBZnRlcldhcm1VcCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1fbGxpbnRFeGVjdXRlQ291
bnRlciA9IE9wdGlvbnM6OmV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOwor
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGppdFNvb24oKQorICAgICAgICB7Cisg
ICAgICAgICAgICBtX2xsaW50RXhlY3V0ZUNvdW50ZXIgPSBPcHRpb25zOjpleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JKSVRTb29uOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQzMl90
IGxsaW50RXhlY3V0ZUNvdW50ZXIoKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICByZXR1
cm4gbV9sbGludEV4ZWN1dGVDb3VudGVyOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICAv
LyBGdW5jdGlvbnMgZm9yIGNvbnRyb2xsaW5nIHdoZW4gdGllcmVkIGNvbXBpbGF0aW9uIGtpY2tz
IGluLiBUaGlzCiAgICAgICAgIC8vIGNvbnRyb2xzIGJvdGggd2hlbiB0aGUgb3B0aW1pemluZyBj
b21waWxlciBpcyBpbnZva2VkIGFuZCB3aGVuIE9TUgogICAgICAgICAvLyBlbnRyeSBoYXBwZW5z
LiBUd28gdHJpZ2dlcnMgZXhpc3Q6IHRoZSBsb29wIHRyaWdnZXIgYW5kIHRoZSByZXR1cm4KQEAg
LTk5NCw2ICsxMDQ1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgbV9zaG91bGRE
aXNjYXJkQnl0ZWNvZGU7CiAKICAgICBwcm90ZWN0ZWQ6CisjaWYgRU5BQkxFKEpJVCkKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xvYmFsRGF0YSYpID0gMDsKKyNlbmRp
ZgogICAgICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRXZWFrUmVmZXJlbmNlcyhTbG90VmlzaXRvciYp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluYWxpemVVbmNvbmRpdGlvbmFsbHkoKTsKICAgICAg
ICAgCkBAIC0xMDc1LDkgKzExMjksMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZlB0
cjxTb3VyY2VQcm92aWRlcj4gbV9zb3VyY2U7CiAgICAgICAgIHVuc2lnbmVkIG1fc291cmNlT2Zm
c2V0OwogCi0jaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAgIFZlY3Rvcjx1
bnNpZ25lZD4gbV9wcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9uczsKICAgICAgICAgVmVjdG9yPHVu
c2lnbmVkPiBtX2dsb2JhbFJlc29sdmVJbnN0cnVjdGlvbnM7CisjaWYgRU5BQkxFKExMSU5UKQor
ICAgICAgICBTZWdtZW50ZWRWZWN0b3I8TExJbnRDYWxsTGlua0luZm8sIDg+IG1fbGxpbnRDYWxs
TGlua0luZm9zOworICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8TExJbnRDYWxsTGlua0luZm8s
IEJhc2ljUmF3U2VudGluZWxOb2RlPExMSW50Q2FsbExpbmtJbmZvPiA+IG1faW5jb21pbmdMTElu
dENhbGxzOwogI2VuZGlmCiAjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgVmVjdG9yPFN0cnVjdHVy
ZVN0dWJJbmZvPiBtX3N0cnVjdHVyZVN0dWJJbmZvczsKQEAgLTEwODgsOSArMTE0NCwxMCBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyIG1faml0Q29kZVdp
dGhBcml0eUNoZWNrOwogICAgICAgICBTZW50aW5lbExpbmtlZExpc3Q8Q2FsbExpbmtJbmZvLCBC
YXNpY1Jhd1NlbnRpbmVsTm9kZTxDYWxsTGlua0luZm8+ID4gbV9pbmNvbWluZ0NhbGxzOwogI2Vu
ZGlmCi0jaWYgRU5BQkxFKERGR19KSVQpCisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShM
TElOVCkKICAgICAgICAgT3duUHRyPENvbXBhY3RKSVRDb2RlTWFwPiBtX2ppdENvZGVNYXA7Ci0g
ICAgICAgIAorI2VuZGlmCisjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgICAgIHN0cnVjdCBXZWFr
UmVmZXJlbmNlVHJhbnNpdGlvbiB7CiAgICAgICAgICAgICBXZWFrUmVmZXJlbmNlVHJhbnNpdGlv
bigpIHsgfQogICAgICAgICAgICAgCkBAIC0xMTUzLDEyICsxMjEwLDE0IEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIE93blB0cjxDb2RlQmxvY2s+IG1fYWx0ZXJuYXRpdmU7CiAgICAgICAg
IAorICAgICAgICBpbnQzMl90IG1fbGxpbnRFeGVjdXRlQ291bnRlcjsKKyAgICAgICAgCiAgICAg
ICAgIGludDMyX3QgbV9qaXRFeGVjdXRlQ291bnRlcjsKICAgICAgICAgdWludDMyX3QgbV9zcGVj
dWxhdGl2ZVN1Y2Nlc3NDb3VudGVyOwogICAgICAgICB1aW50MzJfdCBtX3NwZWN1bGF0aXZlRmFp
bENvdW50ZXI7CiAgICAgICAgIHVpbnQ4X3QgbV9vcHRpbWl6YXRpb25EZWxheUNvdW50ZXI7CiAg
ICAgICAgIHVpbnQ4X3QgbV9yZW9wdGltaXphdGlvblJldHJ5Q291bnRlcjsKLQorICAgICAgICAK
ICAgICAgICAgc3RydWN0IFJhcmVEYXRhIHsKICAgICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CiAgICAgICAgIHB1YmxpYzoKQEAgLTEyMzQsNiArMTI5Myw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgIHByb3RlY3RlZDoKICAgICAgICAgdmlydHVhbCBKU09iamVjdCogY29tcGlsZU9w
dGltaXplZChFeGVjU3RhdGUqLCBTY29wZUNoYWluTm9kZSopOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgamV0dGlzb24oKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGppdENvbXBpbGVJbXBsKEpTR2xv
YmFsRGF0YSYpOwogICAgICAgICB2aXJ0dWFsIENvZGVCbG9jayogcmVwbGFjZW1lbnQoKTsKICAg
ICAgICAgdmlydHVhbCBib29sIGNhbkNvbXBpbGVXaXRoREZHSW50ZXJuYWwoKTsKICNlbmRpZgpA
QCAtMTI2OCw2ICsxMzI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgcHJvdGVjdGVkOgogICAg
ICAgICB2aXJ0dWFsIEpTT2JqZWN0KiBjb21waWxlT3B0aW1pemVkKEV4ZWNTdGF0ZSosIFNjb3Bl
Q2hhaW5Ob2RlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBqZXR0aXNvbigpOworICAgICAgICB2
aXJ0dWFsIHZvaWQgaml0Q29tcGlsZUltcGwoSlNHbG9iYWxEYXRhJik7CiAgICAgICAgIHZpcnR1
YWwgQ29kZUJsb2NrKiByZXBsYWNlbWVudCgpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQ29t
cGlsZVdpdGhERkdJbnRlcm5hbCgpOwogI2VuZGlmCkBAIC0xMzA1LDYgKzEzNjYsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZpcnR1YWwgSlNPYmplY3QqIGNv
bXBpbGVPcHRpbWl6ZWQoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbk5vZGUqKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGpldHRpc29uKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBqaXRDb21waWxlSW1w
bChKU0dsb2JhbERhdGEmKTsKICAgICAgICAgdmlydHVhbCBDb2RlQmxvY2sqIHJlcGxhY2VtZW50
KCk7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5Db21waWxlV2l0aERGR0ludGVybmFsKCk7CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkU3RhdHVz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJ
ZFN0YXR1cy5jcHAJKHJldmlzaW9uIDEwODM1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9HZXRCeUlkU3RhdHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjAgKzI3LDQ5
IEBACiAjaW5jbHVkZSAiR2V0QnlJZFN0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIAor
R2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpjb21wdXRlRnJvbUxMSW50KENvZGVCbG9jayog
cHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYgaWRlbnQp
Cit7CisgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxvY2spOworICAgIFVOVVNFRF9QQVJBTShi
eXRlY29kZUluZGV4KTsKKyAgICBVTlVTRURfUEFSQU0oaWRlbnQpOworI2lmIEVOQUJMRShMTElO
VCkKKyAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBwcm9maWxlZEJsb2NrLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpICsgYnl0ZWNvZGVJbmRleDsKKyAgICAKKyAgICBpZiAoaW5zdHJ1Y3Rp
b25bMF0udS5vcGNvZGUgPT0gbGxpbnRfb3BfbWV0aG9kX2NoZWNrKQorICAgICAgICBpbnN0cnVj
dGlvbisrOworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51LnN0
cnVjdHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIEdldEJ5
SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7
CisgICAgCisgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2Nr
LT5nbG9iYWxEYXRhKCksIGlkZW50KTsKKyAgICBpZiAob2Zmc2V0ID09IG5vdEZvdW5kKQorICAg
ICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCBTdHJ1Y3R1cmVTZXQoKSwg
bm90Rm91bmQsIGZhbHNlKTsKKyAgICAKKyAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhTaW1wbGVE
aXJlY3QsIFN0cnVjdHVyZVNldChzdHJ1Y3R1cmUpLCBvZmZzZXQsIGZhbHNlKTsKKyNlbHNlCisg
ICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3RydWN0dXJlU2V0KCksIG5v
dEZvdW5kLCBmYWxzZSk7CisjZW5kaWYKK30KKwogR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVz
Ojpjb21wdXRlRm9yKENvZGVCbG9jayogcHJvZmlsZWRCbG9jaywgdW5zaWduZWQgYnl0ZWNvZGVJ
bmRleCwgSWRlbnRpZmllciYgaWRlbnQpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHByb2ZpbGVkQmxv
Y2spOwogICAgIFVOVVNFRF9QQVJBTShieXRlY29kZUluZGV4KTsKICAgICBVTlVTRURfUEFSQU0o
aWRlbnQpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9QUk9GSUxFUikKKyAgICBp
ZiAoIXByb2ZpbGVkQmxvY2stPm51bWJlck9mU3RydWN0dXJlU3R1YkluZm9zKCkpCisgICAgICAg
IHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlk
ZW50KTsKKyAgICAKICAgICAvLyBGaXJzdCBjaGVjayBpZiBpdCBtYWtlcyBlaXRoZXIgY2FsbHMs
IGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBiZSBzdXBlciBjYXJlZnVsLCBvcgogICAgIC8vIGlm
IGl0J3Mgbm90IHNldCBhdCBhbGwsIGluIHdoaWNoIGNhc2Ugd2UgcHVudC4KICAgICBTdHJ1Y3R1
cmVTdHViSW5mbyYgc3R1YkluZm8gPSBwcm9maWxlZEJsb2NrLT5nZXRTdHViSW5mbyhieXRlY29k
ZUluZGV4KTsKICAgICBpZiAoIXN0dWJJbmZvLnNlZW4pCi0gICAgICAgIHJldHVybiBHZXRCeUlk
U3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAg
IHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlk
ZW50KTsKICAgICAKICAgICBQb2x5bW9ycGhpY0FjY2Vzc1N0cnVjdHVyZUxpc3QqIGxpc3Q7CiAg
ICAgaW50IGxpc3RTaXplOwpAQCAtNjAsMTggKzg5LDE5IEBAIEdldEJ5SWRTdGF0dXMgR2V0QnlJ
ZFN0YXR1czo6Y29tcHV0ZUZvcigKICAgICB9CiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0
U2l6ZTsgKytpKSB7CiAgICAgICAgIGlmICghbGlzdC0+bGlzdFtpXS5pc0RpcmVjdCkKLSAgICAg
ICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE1ha2VzQ2FsbHMsIFN0cnVjdHVyZVNldCgpLCBu
b3RGb3VuZCk7CisgICAgICAgICAgICByZXR1cm4gR2V0QnlJZFN0YXR1cyhNYWtlc0NhbGxzLCBT
dHJ1Y3R1cmVTZXQoKSwgbm90Rm91bmQsIHRydWUpOwogICAgIH0KICAgICAKICAgICAvLyBOZXh0
IGNoZWNrIGlmIGl0IHRha2VzIHNsb3cgY2FzZSwgaW4gd2hpY2ggY2FzZSB3ZSB3YW50IHRvIGJl
IGtpbmQgb2YgY2FyZWZ1bC4KICAgICBpZiAocHJvZmlsZWRCbG9jay0+bGlrZWx5VG9UYWtlU2xv
d0Nhc2UoYnl0ZWNvZGVJbmRleCkpCi0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKFRha2Vz
U2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBHZXRC
eUlkU3RhdHVzKFRha2VzU2xvd1BhdGgsIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCwgdHJ1ZSk7
CiAgICAgCiAgICAgLy8gRmluYWxseSBmaWd1cmUgb3V0IGlmIHdlIGNhbiBkZXJpdmUgYW4gYWNj
ZXNzIHN0cmF0ZWd5LgogICAgIEdldEJ5SWRTdGF0dXMgcmVzdWx0OworICAgIHJlc3VsdC5tX3dh
c1NlZW5JbkpJVCA9IHRydWU7CiAgICAgc3dpdGNoIChzdHViSW5mby5hY2Nlc3NUeXBlKSB7CiAg
ICAgY2FzZSBhY2Nlc3NfdW5zZXQ6Ci0gICAgICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5m
b3JtYXRpb24sIFN0cnVjdHVyZVNldCgpLCBub3RGb3VuZCk7CisgICAgICAgIHJldHVybiBjb21w
dXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlkZW50KTsKICAgICAg
ICAgCiAgICAgY2FzZSBhY2Nlc3NfZ2V0X2J5X2lkX3NlbGY6IHsKICAgICAgICAgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUgPSBzdHViSW5mby51LmdldEJ5SWRTZWxmLmJhc2VPYmplY3RTdHJ1Y3R1cmUu
Z2V0KCk7CkBAIC0xMzAsNyArMTYwLDcgQEAgR2V0QnlJZFN0YXR1cyBHZXRCeUlkU3RhdHVzOjpj
b21wdXRlRm9yKAogICAgIAogICAgIHJldHVybiByZXN1bHQ7CiAjZWxzZSAvLyBFTkFCTEUoSklU
KQotICAgIHJldHVybiBHZXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIFN0cnVjdHVyZVNldCgp
LCBub3RGb3VuZCk7CisgICAgcmV0dXJuIEdldEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgU3Ry
dWN0dXJlU2V0KCksIG5vdEZvdW5kLCBmYWxzZSk7CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIH0K
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRTdGF0dXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJZFN0YXR1
cy5oCShyZXZpc2lvbiAxMDgzNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
R2V0QnlJZFN0YXR1cy5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSwxMCArNDksMTEgQEAgcHVibGlj
OgogICAgIHsKICAgICB9CiAgICAgCi0gICAgR2V0QnlJZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29u
c3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNpemVfdCBvZmZzZXQpCisgICAgR2V0QnlJ
ZFN0YXR1cyhTdGF0ZSBzdGF0ZSwgY29uc3QgU3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQsIHNp
emVfdCBvZmZzZXQsIGJvb2wgd2FzU2VlbkluSklUKQogICAgICAgICA6IG1fc3RhdGUoc3RhdGUp
CiAgICAgICAgICwgbV9zdHJ1Y3R1cmVTZXQoc3RydWN0dXJlU2V0KQogICAgICAgICAsIG1fb2Zm
c2V0KG9mZnNldCkKKyAgICAgICAgLCBtX3dhc1NlZW5JbkpJVCh3YXNTZWVuSW5KSVQpCiAgICAg
ewogICAgICAgICBBU1NFUlQoKHN0YXRlID09IFNpbXBsZURpcmVjdCkgPT0gKG9mZnNldCAhPSBu
b3RGb3VuZCkpOwogICAgIH0KQEAgLTcwLDEwICs3MSwxNSBAQCBwdWJsaWM6CiAgICAgY29uc3Qg
U3RydWN0dXJlU2V0JiBzdHJ1Y3R1cmVTZXQoKSBjb25zdCB7IHJldHVybiBtX3N0cnVjdHVyZVNl
dDsgfQogICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsgfQogICAg
IAorICAgIGJvb2wgd2FzU2VlbkluSklUKCkgY29uc3QgeyByZXR1cm4gbV93YXNTZWVuSW5KSVQ7
IH0KKyAgICAKIHByaXZhdGU6CisgICAgc3RhdGljIEdldEJ5SWRTdGF0dXMgY29tcHV0ZUZyb21M
TEludChDb2RlQmxvY2sqLCB1bnNpZ25lZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJik7Cisg
ICAgCiAgICAgU3RhdGUgbV9zdGF0ZTsKICAgICBTdHJ1Y3R1cmVTZXQgbV9zdHJ1Y3R1cmVTZXQ7
CiAgICAgc2l6ZV90IG1fb2Zmc2V0OworICAgIGJvb2wgbV93YXNTZWVuSW5KSVQ7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9J
bnN0cnVjdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9JbnN0cnVjdGlvbi5oCShyZXZpc2lvbiAxMDgzNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5zdHJ1Y3Rpb24uaAkod29ya2luZyBjb3B5KQpAQCAtNDgsNiArNDgsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xhc3MgU3RydWN0dXJl
OwogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluOworICAgIHN0cnVjdCBMTEludENhbGxMaW5rSW5m
bzsKICAgICBzdHJ1Y3QgVmFsdWVQcm9maWxlOwogCiAjaWYgRU5BQkxFKEpJVCkKQEAgLTE0Niw2
ICsxNDcsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKIAogICAgIHN0cnVjdCBJbnN0cnVj
dGlvbiB7CisgICAgICAgIEluc3RydWN0aW9uKCkKKyAgICAgICAgeworICAgICAgICAgICAgdS5q
c0NlbGwuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24o
T3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogI2lmICFFTkFCTEUoQ09NUFVURURfR09UT19DTEFT
U0lDX0lOVEVSUFJFVEVSKQpAQCAtMTgyLDYgKzE4OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAg
ICAgICAgIEluc3RydWN0aW9uKFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jIGdldHRlckZ1bmMp
IHsgdS5nZXR0ZXJGdW5jID0gZ2V0dGVyRnVuYzsgfQogICAgICAgICAKKyAgICAgICAgSW5zdHJ1
Y3Rpb24oTExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbykgeyB1LmNhbGxMaW5rSW5mbyA9
IGNhbGxMaW5rSW5mbzsgfQorICAgICAgICAKICAgICAgICAgSW5zdHJ1Y3Rpb24oVmFsdWVQcm9m
aWxlKiBwcm9maWxlKSB7IHUucHJvZmlsZSA9IHByb2ZpbGU7IH0KIAogICAgICAgICB1bmlvbiB7
CkBAIC0xOTEsNyArMTk5LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBXcml0ZUJh
cnJpZXJCYXNlPFN0cnVjdHVyZUNoYWluPiBzdHJ1Y3R1cmVDaGFpbjsKICAgICAgICAgICAgIFdy
aXRlQmFycmllckJhc2U8SlNDZWxsPiBqc0NlbGw7CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Q6
OkdldFZhbHVlRnVuYyBnZXR0ZXJGdW5jOworICAgICAgICAgICAgTExJbnRDYWxsTGlua0luZm8q
IGNhbGxMaW5rSW5mbzsKICAgICAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZTsKKyAgICAg
ICAgICAgIHZvaWQqIHBvaW50ZXI7CiAgICAgICAgIH0gdTsKICAgICAgICAgCiAgICAgcHJpdmF0
ZToKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENhbGxMaW5rSW5m
by5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MTEludENh
bGxMaW5rSW5mby5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0xMSW50Q2FsbExpbmtJbmZvLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTElu
dENhbGxMaW5rSW5mb19oCisjZGVmaW5lIExMSW50Q2FsbExpbmtJbmZvX2gKKworI2luY2x1ZGUg
IkpTRnVuY3Rpb24uaCIKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKyNpbmNs
dWRlIDx3dGYvU2VudGluZWxMaW5rZWRMaXN0Lmg+CisKK25hbWVzcGFjZSBKU0MgeworCitzdHJ1
Y3QgSW5zdHJ1Y3Rpb247CisKK3N0cnVjdCBMTEludENhbGxMaW5rSW5mbyA6IHB1YmxpYyBCYXNp
Y1Jhd1NlbnRpbmVsTm9kZTxMTEludENhbGxMaW5rSW5mbz4geworICAgIExMSW50Q2FsbExpbmtJ
bmZvKCkKKyAgICB7CisgICAgfQorICAgIAorICAgIH5MTEludENhbGxMaW5rSW5mbygpCisgICAg
eworICAgICAgICBpZiAoaXNPbkxpc3QoKSkKKyAgICAgICAgICAgIHJlbW92ZSgpOworICAgIH0K
KyAgICAKKyAgICBib29sIGlzTGlua2VkKCkgeyByZXR1cm4gY2FsbGVlOyB9CisgICAgCisgICAg
dm9pZCB1bmxpbmsoKQorICAgIHsKKyAgICAgICAgY2FsbGVlLmNsZWFyKCk7CisgICAgICAgIG1h
Y2hpbmVDb2RlVGFyZ2V0ID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7CisgICAgICAgIGlmIChp
c09uTGlzdCgpKQorICAgICAgICAgICAgcmVtb3ZlKCk7CisgICAgfQorICAgIAorICAgIFdyaXRl
QmFycmllcjxKU0Z1bmN0aW9uPiBjYWxsZWU7CisgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+
IGxhc3RTZWVuQ2FsbGVlOworICAgIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciBtYWNoaW5lQ29kZVRh
cmdldDsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQworCisjZW5kaWYgLy8gTExJbnRDYWxsTGlu
a0luZm9faAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTWV0aG9kQ2Fs
bExpbmtTdGF0dXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAJKHJldmlzaW9uIDEwODM1OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9NZXRob2RDYWxsTGlua1N0YXR1cy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM1LDYgKzM1LDExIEBAIE1ldGhvZENhbGxMaW5rU3RhdHVzIE1ldGhvZENh
bGxMaW5rU3RhdHUKICAgICBVTlVTRURfUEFSQU0ocHJvZmlsZWRCbG9jayk7CiAgICAgVU5VU0VE
X1BBUkFNKGJ5dGVjb2RlSW5kZXgpOwogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShWQUxVRV9Q
Uk9GSUxFUikKKyAgICAvLyBOT1RFOiBUaGlzIGRvZXMgbm90IGhhdmUgYW4gTExJbnQgZmFsbC1i
YWNrIGJlY2F1c2UgTExJbnQgZG9lcyBub3QgZG8gYW55IG1ldGhvZAorICAgIC8vIGNhbGwgbGlu
ayBjYWNoaW5nLgorICAgIGlmICghcHJvZmlsZWRCbG9jay0+bnVtYmVyT2ZNZXRob2RDYWxsTGlu
a0luZm9zKCkpCisgICAgICAgIHJldHVybiBNZXRob2RDYWxsTGlua1N0YXR1cygpOworICAgIAog
ICAgIE1ldGhvZENhbGxMaW5rSW5mbyYgbWV0aG9kQ2FsbCA9IHByb2ZpbGVkQmxvY2stPmdldE1l
dGhvZENhbGxMaW5rSW5mbyhieXRlY29kZUluZGV4KTsKICAgICAKICAgICBpZiAoIW1ldGhvZENh
bGwuc2VlbiB8fCAhbWV0aG9kQ2FsbC5jYWNoZWRTdHJ1Y3R1cmUpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvT3Bjb2RlLmNwcAkocmV2aXNpb24gMTA4MzU4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09wY29kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDE2ICszOSwxMiBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgSlNDIHsK
IAotI2lmICFkZWZpbmVkKE5ERUJVRykgfHwgRU5BQkxFKE9QQ09ERV9TQU1QTElORykgfHwgRU5B
QkxFKENPREVCTE9DS19TQU1QTElORykgfHwgRU5BQkxFKE9QQ09ERV9TVEFUUykKLQogY29uc3Qg
Y2hhciogY29uc3Qgb3Bjb2RlTmFtZXNbXSA9IHsKICNkZWZpbmUgT1BDT0RFX05BTUVfRU5UUlko
b3Bjb2RlLCBzaXplKSAjb3Bjb2RlLAogICAgIEZPUl9FQUNIX09QQ09ERV9JRChPUENPREVfTkFN
RV9FTlRSWSkKICN1bmRlZiBPUENPREVfTkFNRV9FTlRSWQogfTsKIAotI2VuZGlmCi0KICNpZiBF
TkFCTEUoT1BDT0RFX1NUQVRTKQogCiBsb25nIGxvbmcgT3Bjb2RlU3RhdHM6Om9wY29kZUNvdW50
c1tudW1PcGNvZGVJRHNdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL09w
Y29kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9PcGNv
ZGUuaAkocmV2aXNpb24gMTA4MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L09wY29kZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDggQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIG1hY3JvKG9wX2dldF9hcmd1bWVudHNfbGVuZ3RoLCA0KSBcCiAgICAgICAg
IG1hY3JvKG9wX3B1dF9ieV9pZCwgOSkgXAogICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJh
bnNpdGlvbiwgOSkgXAorICAgICAgICBtYWNybyhvcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJl
Y3QsIDkpIFwKKyAgICAgICAgbWFjcm8ob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsLCA5
KSBcCiAgICAgICAgIG1hY3JvKG9wX3B1dF9ieV9pZF9yZXBsYWNlLCA5KSBcCiAgICAgICAgIG1h
Y3JvKG9wX3B1dF9ieV9pZF9nZW5lcmljLCA5KSBcCiAgICAgICAgIG1hY3JvKG9wX2RlbF9ieV9p
ZCwgNCkgXApAQCAtMjAxLDYgKzIwMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB0eXBl
ZGVmIGVudW0geyBGT1JfRUFDSF9PUENPREVfSUQoT1BDT0RFX0lEX0VOVU0pIH0gT3Bjb2RlSUQ7
CiAgICAgI3VuZGVmIE9QQ09ERV9JRF9FTlVNCiAKKyAgICBjb25zdCBpbnQgbWF4T3Bjb2RlTGVu
Z3RoID0gOTsKICAgICBjb25zdCBpbnQgbnVtT3Bjb2RlSURzID0gb3BfZW5kICsgMTsKIAogICAg
ICNkZWZpbmUgT1BDT0RFX0lEX0xFTkdUSFMoaWQsIGxlbmd0aCkgY29uc3QgaW50IGlkIyNfbGVu
Z3RoID0gbGVuZ3RoOwpAQCAtMjE3LDcgKzIyMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBGT1JfRUFDSF9PUENPREVfSUQoVkVSSUZZX09QQ09ERV9JRCk7CiAgICAgI3VuZGVmIFZFUklG
WV9PUENPREVfSUQKIAotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVU
RVIpCisjaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikgfHwgRU5B
QkxFKExMSU5UKQogI2lmIENPTVBJTEVSKFJWQ1QpIHx8IENPTVBJTEVSKElOVEVMKQogICAgIHR5
cGVkZWYgdm9pZCogT3Bjb2RlOwogI2Vsc2UKQEAgLTIyNyw4ICsyMzAsNiBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICB0eXBlZGVmIE9wY29kZUlEIE9wY29kZTsKICNlbmRpZgogCi0jaWYgIWRlZmlu
ZWQoTkRFQlVHKSB8fCBFTkFCTEUoT1BDT0RFX1NBTVBMSU5HKSB8fCBFTkFCTEUoQ09ERUJMT0NL
X1NBTVBMSU5HKSB8fCBFTkFCTEUoT1BDT0RFX1NUQVRTKQotCiAjZGVmaW5lIFBBRERJTkdfU1RS
SU5HICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKICNkZWZpbmUgUEFERElOR19T
VFJJTkdfTEVOR1RIIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdHJsZW4oUEFERElOR19TVFJJTkcp
KQogCkBAIC0yNDQsOCArMjQ1LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAjdW5kZWYgUEFERElOR19T
VFJJTkdfTEVOR1RICiAjdW5kZWYgUEFERElOR19TVFJJTkcKIAotI2VuZGlmCi0KICNpZiBFTkFC
TEUoT1BDT0RFX1NUQVRTKQogCiAgICAgc3RydWN0IE9wY29kZVN0YXRzIHsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0QnlJZFN0YXR1cy5jcHAJKHJldmlz
aW9uIDEwODM1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3Rh
dHVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsMjcgKzI3LDY5IEBACiAjaW5jbHVkZSAiUHV0
QnlJZFN0YXR1cy5oIgogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCisjaW5jbHVkZSAiTG93TGV2
ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgogI2luY2x1ZGUgIlN0cnVj
dHVyZUNoYWluLmgiCiAKIG5hbWVzcGFjZSBKU0MgewogCitQdXRCeUlkU3RhdHVzIFB1dEJ5SWRT
dGF0dXM6OmNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiBwcm9maWxlZEJsb2NrLCB1bnNpZ25l
ZCBieXRlY29kZUluZGV4LCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBVTlVTRURfUEFSQU0o
cHJvZmlsZWRCbG9jayk7CisgICAgVU5VU0VEX1BBUkFNKGJ5dGVjb2RlSW5kZXgpOworICAgIFVO
VVNFRF9QQVJBTShpZGVudCk7CisjaWYgRU5BQkxFKExMSU5UKQorICAgIEluc3RydWN0aW9uKiBp
bnN0cnVjdGlvbiA9IHByb2ZpbGVkQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBieXRl
Y29kZUluZGV4OworCisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBpbnN0cnVjdGlvbls0XS51
LnN0cnVjdHVyZS5nZXQoKTsKKyAgICBpZiAoIXN0cnVjdHVyZSkKKyAgICAgICAgcmV0dXJuIFB1
dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgIAorICAg
IGlmIChpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9wdXRfYnlfaWQpIHsKKyAg
ICAgICAgc2l6ZV90IG9mZnNldCA9IHN0cnVjdHVyZS0+Z2V0KCpwcm9maWxlZEJsb2NrLT5nbG9i
YWxEYXRhKCksIGlkZW50KTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICAg
ICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKE5vSW5mb3JtYXRpb24sIDAsIDAsIDAsIG5vdEZv
dW5kKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVJlcGxh
Y2UsIHN0cnVjdHVyZSwgMCwgMCwgb2Zmc2V0KTsKKyAgICB9CisgICAgCisgICAgQVNTRVJUKGlu
c3RydWN0aW9uWzBdLnUub3Bjb2RlID09IGxsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uX2Rp
cmVjdAorICAgICAgICAgICB8fCBpbnN0cnVjdGlvblswXS51Lm9wY29kZSA9PSBsbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAgIAorICAgIFN0cnVjdHVyZSogbmV3U3Ry
dWN0dXJlID0gaW5zdHJ1Y3Rpb25bNl0udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgU3RydWN0dXJl
Q2hhaW4qIGNoYWluID0gaW5zdHJ1Y3Rpb25bN10udS5zdHJ1Y3R1cmVDaGFpbi5nZXQoKTsKKyAg
ICBBU1NFUlQobmV3U3RydWN0dXJlKTsKKyAgICBBU1NFUlQoY2hhaW4pOworICAgIAorICAgIHNp
emVfdCBvZmZzZXQgPSBuZXdTdHJ1Y3R1cmUtPmdldCgqcHJvZmlsZWRCbG9jay0+Z2xvYmFsRGF0
YSgpLCBpZGVudCk7CisgICAgaWYgKG9mZnNldCA9PSBub3RGb3VuZCkKKyAgICAgICAgcmV0dXJu
IFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgIAor
ICAgIHJldHVybiBQdXRCeUlkU3RhdHVzKFNpbXBsZVRyYW5zaXRpb24sIHN0cnVjdHVyZSwgbmV3
U3RydWN0dXJlLCBjaGFpbiwgb2Zmc2V0KTsKKyNlbHNlCisgICAgcmV0dXJuIFB1dEJ5SWRTdGF0
dXMoTm9JbmZvcm1hdGlvbiwgMCwgMCwgMCwgbm90Rm91bmQpOworI2VuZGlmCit9CisKIFB1dEJ5
SWRTdGF0dXMgUHV0QnlJZFN0YXR1czo6Y29tcHV0ZUZvcihDb2RlQmxvY2sqIHByb2ZpbGVkQmxv
Y2ssIHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgsIElkZW50aWZpZXImIGlkZW50KQogewogICAgIFVO
VVNFRF9QQVJBTShwcm9maWxlZEJsb2NrKTsKICAgICBVTlVTRURfUEFSQU0oYnl0ZWNvZGVJbmRl
eCk7CiAgICAgVU5VU0VEX1BBUkFNKGlkZW50KTsKICNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUo
VkFMVUVfUFJPRklMRVIpCisgICAgaWYgKCFwcm9maWxlZEJsb2NrLT5udW1iZXJPZlN0cnVjdHVy
ZVN0dWJJbmZvcygpKQorICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChwcm9maWxlZEJs
b2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CisgICAgCiAgICAgaWYgKHByb2ZpbGVkQmxvY2st
Pmxpa2VseVRvVGFrZVNsb3dDYXNlKGJ5dGVjb2RlSW5kZXgpKQogICAgICAgICByZXR1cm4gUHV0
QnlJZFN0YXR1cyhUYWtlc1Nsb3dQYXRoLCAwLCAwLCAwLCBub3RGb3VuZCk7CiAgICAgCiAgICAg
U3RydWN0dXJlU3R1YkluZm8mIHN0dWJJbmZvID0gcHJvZmlsZWRCbG9jay0+Z2V0U3R1YkluZm8o
Ynl0ZWNvZGVJbmRleCk7CiAgICAgaWYgKCFzdHViSW5mby5zZWVuKQotICAgICAgICByZXR1cm4g
UHV0QnlJZFN0YXR1cyhOb0luZm9ybWF0aW9uLCAwLCAwLCAwLCBub3RGb3VuZCk7CisgICAgICAg
IHJldHVybiBjb21wdXRlRnJvbUxMSW50KHByb2ZpbGVkQmxvY2ssIGJ5dGVjb2RlSW5kZXgsIGlk
ZW50KTsKICAgICAKICAgICBzd2l0Y2ggKHN0dWJJbmZvLmFjY2Vzc1R5cGUpIHsKICAgICBjYXNl
IGFjY2Vzc191bnNldDoKLSAgICAgICAgcmV0dXJuIFB1dEJ5SWRTdGF0dXMoTm9JbmZvcm1hdGlv
biwgMCwgMCwgMCwgbm90Rm91bmQpOworICAgICAgICByZXR1cm4gY29tcHV0ZUZyb21MTEludChw
cm9maWxlZEJsb2NrLCBieXRlY29kZUluZGV4LCBpZGVudCk7CiAgICAgICAgIAogICAgIGNhc2Ug
YWNjZXNzX3B1dF9ieV9pZF9yZXBsYWNlOiB7CiAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzdHVi
SW5mby51LnB1dEJ5SWRSZXBsYWNlLmJhc2VPYmplY3RTdHJ1Y3R1cmUtPmdldCgKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkU3RhdHVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0dXMuaAkocmV2aXNp
b24gMTA4MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRTdGF0
dXMuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsOCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90
IG9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIG1fb2Zmc2V0OyB9CiAgICAgCiBwcml2YXRlOgorICAg
IHN0YXRpYyBQdXRCeUlkU3RhdHVzIGNvbXB1dGVGcm9tTExJbnQoQ29kZUJsb2NrKiwgdW5zaWdu
ZWQgYnl0ZWNvZGVJbmRleCwgSWRlbnRpZmllciYpOworICAgIAogICAgIFN0YXRlIG1fc3RhdGU7
CiAgICAgU3RydWN0dXJlKiBtX29sZFN0cnVjdHVyZTsKICAgICBTdHJ1Y3R1cmUqIG1fbmV3U3Ry
dWN0dXJlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29k
ZUdlbmVyYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAJKHJldmlzaW9uIDEwODM1OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiSlNBY3RpdmF0aW9uLmgiCiAj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVk
ZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIKICNpbmNs
dWRlICJTdHJvbmdJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVVN0cmluZy5oIgpAQCAtMTI3OCw5ICsx
Mjc5LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRSZXNvbAogI2lmIEVO
QUJMRShKSVQpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5mbyhpbnN0
cnVjdGlvbnMoKS5zaXplKCkpOwogI2VuZGlmCi0jaWYgRU5BQkxFKENMQVNTSUNfSU5URVJQUkVU
RVIpCiAgICAgICAgIG1fY29kZUJsb2NrLT5hZGRHbG9iYWxSZXNvbHZlSW5zdHJ1Y3Rpb24oaW5z
dHJ1Y3Rpb25zKCkuc2l6ZSgpKTsKLSNlbmRpZgogICAgICAgICBib29sIGR5bmFtaWMgPSByZXNv
bHZlUmVzdWx0LmlzRHluYW1pYygpICYmIHJlc29sdmVSZXN1bHQuZGVwdGgoKTsKICAgICAgICAg
VmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFByb2ZpbGVkT3Bjb2RlKGR5bmFtaWMgPyBvcF9y
ZXNvbHZlX2dsb2JhbF9keW5hbWljIDogb3BfcmVzb2x2ZV9nbG9iYWwpOwogICAgICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5pbmRleCgpKTsKQEAgLTEzODQsOSArMTM4Myw2IEBAIFJl
Z2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0UmVzb2wKICAgICAgICAgcmV0dXJuIGJh
c2VEc3Q7CiAgICAgfQogCi0KLQotCiAgICAgVmFsdWVQcm9maWxlKiBwcm9maWxlID0gZW1pdFBy
b2ZpbGVkT3Bjb2RlKG9wX3Jlc29sdmVfd2l0aF9iYXNlKTsKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoYmFzZURzdC0+aW5kZXgoKSk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKHByb3BE
c3QtPmluZGV4KCkpOwpAQCAtMTQ5NCw5ICsxNDkwLDcgQEAgdm9pZCBCeXRlY29kZUdlbmVyYXRv
cjo6ZW1pdE1ldGhvZENoZWNrKAogCiBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1p
dEdldEJ5SWQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eSkKIHsKLSNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICBt
X2NvZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5z
aXplKCkpOwotI2VuZGlmCiAKICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmls
ZWRPcGNvZGUob3BfZ2V0X2J5X2lkKTsKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZHN0LT5p
bmRleCgpKTsKQEAgLTE1MjIsOSArMTUxNiw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0R2V0QXIKIAogUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRC
eUlkKFJlZ2lzdGVySUQqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5LCBSZWdpc3Rl
cklEKiB2YWx1ZSkKIHsKLSNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRFUikKICAgICBtX2Nv
ZGVCbG9jay0+YWRkUHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbihpbnN0cnVjdGlvbnMoKS5zaXpl
KCkpOwotI2VuZGlmCiAKICAgICBlbWl0T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1
Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmluZGV4KCkpOwpAQCAtMTU0MCw5ICsxNTMyLDcgQEAgUmVn
aXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRQdXRCeQogCiBSZWdpc3RlcklEKiBCeXRl
Y29kZUdlbmVyYXRvcjo6ZW1pdERpcmVjdFB1dEJ5SWQoUmVnaXN0ZXJJRCogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHksIFJlZ2lzdGVySUQqIHZhbHVlKQogewotI2lmIEVOQUJMRShD
TEFTU0lDX0lOVEVSUFJFVEVSKQogICAgIG1fY29kZUJsb2NrLT5hZGRQcm9wZXJ0eUFjY2Vzc0lu
c3RydWN0aW9uKGluc3RydWN0aW9ucygpLnNpemUoKSk7Ci0jZW5kaWYKICAgICAKICAgICBlbWl0
T3Bjb2RlKG9wX3B1dF9ieV9pZCk7CiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGJhc2UtPmlu
ZGV4KCkpOwpAQCAtMTgyMyw3ICsxODEzLDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJh
dG9yOjplbWl0Q2FsbCgKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7
IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1bWVu
dENvdW50SW5jbHVkaW5nVGhpcygpKTsgLy8gYXJnQ291bnQKICAgICBpbnN0cnVjdGlvbnMoKS5h
cHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdpc3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0ZXJPZmZzZXQK
KyNpZiBFTkFCTEUoTExJTlQpCisgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2Nr
LT5hZGRMTEludENhbGxMaW5rSW5mbygpKTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBw
ZW5kKDApOworI2VuZGlmCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlmIChk
c3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9
IGVtaXRQcm9maWxlZE9wY29kZShvcF9jYWxsX3B1dF9yZXN1bHQpOwpAQCAtMTkyNyw3ICsxOTIx
LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0Q29uc3QKICAgICBpbnN0
cnVjdGlvbnMoKS5hcHBlbmQoZnVuYy0+aW5kZXgoKSk7IC8vIGZ1bmMKICAgICBpbnN0cnVjdGlv
bnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpKTsg
Ly8gYXJnQ291bnQKICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoY2FsbEFyZ3VtZW50cy5yZWdp
c3Rlck9mZnNldCgpKTsgLy8gcmVnaXN0ZXJPZmZzZXQKKyNpZiBFTkFCTEUoTExJTlQpCisgICAg
aW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fY29kZUJsb2NrLT5hZGRMTEludENhbGxMaW5rSW5mbygp
KTsKKyNlbHNlCiAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKDApOworI2VuZGlmCiAgICAgaW5z
dHJ1Y3Rpb25zKCkuYXBwZW5kKDApOwogICAgIGlmIChkc3QgIT0gaWdub3JlZFJlc3VsdCgpKSB7
CiAgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmlsZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9j
YWxsX3B1dF9yZXN1bHQpOwpAQCAtMjE4OCw3ICsyMTg2LDExIEBAIFJlZ2lzdGVySUQqIEJ5dGVj
b2RlR2VuZXJhdG9yOjplbWl0Q2F0Y2gKIHsKICAgICBtX3VzZXNFeGNlcHRpb25zID0gdHJ1ZTsK
ICNpZiBFTkFCTEUoSklUKQorI2lmIEVOQUJMRShMTElOVCkKKyAgICBIYW5kbGVySW5mbyBpbmZv
ID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBpbnN0cnVjdGlvbnMoKS5z
aXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURlcHRoLCBDb2RlTG9jYXRp
b25MYWJlbChNYWNyb0Fzc2VtYmxlckNvZGVQdHI6OmNyZWF0ZUZyb21FeGVjdXRhYmxlQWRkcmVz
cyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9jYXRjaCkpKSB9OworI2Vsc2UKICAgICBI
YW5kbGVySW5mbyBpbmZvID0geyBzdGFydC0+YmluZCgwLCAwKSwgZW5kLT5iaW5kKDAsIDApLCBp
bnN0cnVjdGlvbnMoKS5zaXplKCksIG1fZHluYW1pY1Njb3BlRGVwdGggKyBtX2Jhc2VTY29wZURl
cHRoLCBDb2RlTG9jYXRpb25MYWJlbCgpIH07CisjZW5kaWYKICNlbHNlCiAgICAgSGFuZGxlcklu
Zm8gaW5mbyA9IHsgc3RhcnQtPmJpbmQoMCwgMCksIGVuZC0+YmluZCgwLCAwKSwgaW5zdHJ1Y3Rp
b25zKCkuc2l6ZSgpLCBtX2R5bmFtaWNTY29wZURlcHRoICsgbV9iYXNlU2NvcGVEZXB0aCB9Owog
I2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2Vy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2Rl
UGFyc2VyLmNwcAkocmV2aXNpb24gMTA4MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4NSw5ICs1ODUsNyBA
QCBwcml2YXRlOgogICAgIHsKICAgICAgICAgVU5VU0VEX1BBUkFNKG5vZGVJbmRleCk7CiAgICAg
ICAgIAotICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZUZvckJ5dGVjb2RlT2Zmc2V0KGJ5dGVjb2RlSW5k
ZXgpOwotICAgICAgICBBU1NFUlQocHJvZmlsZSk7Ci0gICAgICAgIFByZWRpY3RlZFR5cGUgcHJl
ZGljdGlvbiA9IHByb2ZpbGUtPmNvbXB1dGVVcGRhdGVkUHJlZGljdGlvbigpOworICAgICAgICBQ
cmVkaWN0ZWRUeXBlIHByZWRpY3Rpb24gPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxv
Y2stPnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChieXRlY29kZUluZGV4
KTsKICNpZiBERkdfRU5BQkxFKERFQlVHX1ZFUkJPU0UpCiAgICAgICAgIGRhdGFMb2coIkR5bmFt
aWMgW0AldSwgYmMjJXVdIHByZWRpY3Rpb246ICVzXG4iLCBub2RlSW5kZXgsIGJ5dGVjb2RlSW5k
ZXgsIHByZWRpY3Rpb25Ub1N0cmluZyhwcmVkaWN0aW9uKSk7CiAjZW5kaWYKQEAgLTEwMjIsNiAr
MTAyMCw5IEBAIGJvb2wgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUlubGluaW5nKGJvb2wKICAgICAK
ICAgICAvLyBJZiB3ZSBnZXQgaGVyZSB0aGVuIGl0IGxvb2tzIGxpa2Ugd2Ugc2hvdWxkIGRlZmlu
aXRlbHkgaW5saW5lIHRoaXMgY29kZS4gUHJvY2VlZAogICAgIC8vIHdpdGggcGFyc2luZyB0aGUg
Y29kZSB0byBnZXQgYnl0ZWNvZGUsIHNvIHRoYXQgd2UgY2FuIHRoZW4gcGFyc2UgdGhlIGJ5dGVj
b2RlLgorICAgIC8vIE5vdGUgdGhhdCBpZiBMTEludCBpcyBlbmFibGVkLCB0aGUgYnl0ZWNvZGUg
d2lsbCBhbHdheXMgYmUgYXZhaWxhYmxlLiBBbHNvIG5vdGUKKyAgICAvLyB0aGF0IGlmIExMSW50
IGlzIGVuYWJsZWQsIHdlIG1heSBpbmxpbmUgYSBjb2RlIGJsb2NrIHRoYXQgaGFzIG5ldmVyIGJl
ZW4gSklUdGVkCisgICAgLy8gYmVmb3JlIQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gbV9j
b2RlQmxvY2tDYWNoZS5nZXQoQ29kZUJsb2NrS2V5KGV4ZWN1dGFibGUsIGtpbmQpLCBleHBlY3Rl
ZEZ1bmN0aW9uLT5zY29wZSgpKTsKICAgICBpZiAoIWNvZGVCbG9jaykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwpAQCAtMTcyMiw3ICsxNzIzLDcgQEAgYm9vbCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VC
bG9jayh1bnNpZ25lZAogICAgICAgICAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1fcHJvZmls
ZWRCbG9jaywgbV9jdXJyZW50SW5kZXgpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
bWV0aG9kQ2FsbFN0YXR1cy5pc1NldCgpCi0gICAgICAgICAgICAgICAgJiYgIWdldEJ5SWRTdGF0
dXMuaXNTZXQoKQorICAgICAgICAgICAgICAgICYmICFnZXRCeUlkU3RhdHVzLndhc1NlZW5JbkpJ
VCgpCiAgICAgICAgICAgICAgICAgJiYgIW1faW5saW5lU3RhY2tUb3AtPm1fZXhpdFByb2ZpbGUu
aGFzRXhpdFNpdGUobV9jdXJyZW50SW5kZXgsIEJhZENhY2hlKSkgewogICAgICAgICAgICAgICAg
IC8vIEl0J3MgbW9ub21vcnBoaWMgYXMgZmFyIGFzIHdlIGNhbiB0ZWxsLCBzaW5jZSB0aGUgbWV0
aG9kX2NoZWNrIHdhcyBsaW5rZWQKICAgICAgICAgICAgICAgICAvLyBidXQgdGhlIHNsb3cgcGF0
aCAoaS5lLiB0aGUgbm9ybWFsIGdldF9ieV9pZCkgbmV2ZXIgZmlyZWQuCkBAIC0xNzkxLDcgKzE3
OTIsOSBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkCiAKICAgICAg
ICAgICAgIE5FWFRfT1BDT0RFKG9wX2dldF9ieV9pZCk7CiAgICAgICAgIH0KLSAgICAgICAgY2Fz
ZSBvcF9wdXRfYnlfaWQ6IHsKKyAgICAgICAgY2FzZSBvcF9wdXRfYnlfaWQ6CisgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbDogewogICAgICAgICAgICAgTm9kZUluZGV4IHZhbHVlID0g
Z2V0KGN1cnJlbnRJbnN0cnVjdGlvblszXS51Lm9wZXJhbmQpOwogICAgICAgICAgICAgTm9kZUlu
ZGV4IGJhc2UgPSBnZXQoY3VycmVudEluc3RydWN0aW9uWzFdLnUub3BlcmFuZCk7CiAgICAgICAg
ICAgICB1bnNpZ25lZCBpZGVudGlmaWVyTnVtYmVyID0gbV9pbmxpbmVTdGFja1RvcC0+bV9pZGVu
dGlmaWVyUmVtYXBbY3VycmVudEluc3RydWN0aW9uWzJdLnUub3BlcmFuZF07CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHJldmlzaW9uIDEwODM1
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTExMSw2ICsxMTEsOCBAQCBpbmxpbmUgYm9vbCBjYW5Db21waWxlT3Bjb2Rl
KE9wY29kZUlEIG9wCiAgICAgY2FzZSBvcF9wdXRfc2NvcGVkX3ZhcjoKICAgICBjYXNlIG9wX2dl
dF9ieV9pZDoKICAgICBjYXNlIG9wX3B1dF9ieV9pZDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90
cmFuc2l0aW9uX2RpcmVjdDoKKyAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1h
bDoKICAgICBjYXNlIG9wX2dldF9nbG9iYWxfdmFyOgogICAgIGNhc2Ugb3BfcHV0X2dsb2JhbF92
YXI6CiAgICAgY2FzZSBvcF9qbXA6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09TUkV4aXRDb21waWxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFeGl0Q29tcGlsZXIuY3BwCShyZXZpc2lvbiAxMDgzNTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDYgKzQ4LDIxIEBAIHZvaWQgY29tcGlsZU9TUkV4aXQoRXhlY1N0YXRlKiBleGVjKQog
ICAgIHVpbnQzMl90IGV4aXRJbmRleCA9IGdsb2JhbERhdGEtPm9zckV4aXRJbmRleDsKICAgICBP
U1JFeGl0JiBleGl0ID0gY29kZUJsb2NrLT5vc3JFeGl0KGV4aXRJbmRleCk7CiAgICAgCisgICAg
Ly8gTWFrZSBzdXJlIGFsbCBjb2RlIG9uIG91ciBpbmxpbmUgc3RhY2sgaXMgSklUIGNvbXBpbGVk
LiBUaGlzIGlzIG5lY2Vzc2FyeSBzaW5jZQorICAgIC8vIHdlIG1heSBvcHQgdG8gaW5saW5lIGEg
Y29kZSBibG9jayBldmVuIGJlZm9yZSBpdCBoYWQgZXZlciBiZWVuIGNvbXBpbGVkIGJ5IHRoZQor
ICAgIC8vIEpJVCwgYnV0IG91ciBPU1IgZXhpdCBpbmZyYXN0cnVjdHVyZSBjdXJyZW50bHkgb25s
eSB3b3JrcyBpZiB0aGUgdGFyZ2V0IG9mIHRoZQorICAgIC8vIE9TUiBleGl0IGlzIEpJVCBjb2Rl
LiBUaGlzIGNvdWxkIGJlIGNoYW5nZWQgc2luY2UgdGhlcmUgaXMgbm90aGluZyBwYXJ0aWN1bGFy
bHkKKyAgICAvLyBoYXJkIGFib3V0IGRvaW5nIGFuIE9TUiBleGl0IGludG8gdGhlIGludGVycHJl
dGVyLCBidXQgZm9yIG5vdyB0aGlzIHNlZW1zIHRvIG1ha2UKKyAgICAvLyBzZW5zZSBpbiB0aGF0
IGlmIHdlJ3JlIE9TUiBleGl0aW5nIGZyb20gaW5saW5lZCBjb2RlIG9mIGEgREZHIGNvZGUgYmxv
Y2ssIHRoZW4KKyAgICAvLyBwcm9iYWJseSBpdCdzIGEgZ29vZCBzaWduIHRoYXQgdGhlIHRoaW5n
IHdlJ3JlIGV4aXRpbmcgaW50byBpcyBob3QuIEV2ZW4gbW9yZQorICAgIC8vIGludGVyZXN0aW5n
bHksIHNpbmNlIHRoZSBjb2RlIHdhcyBpbmxpbmVkLCBpdCBtYXkgbmV2ZXIgb3RoZXJ3aXNlIGdl
dCBKSVQKKyAgICAvLyBjb21waWxlZCBzaW5jZSB0aGUgYWN0IG9mIGlubGluaW5nIGl0IG1heSBl
bnN1cmUgdGhhdCBpdCBvdGhlcndpc2UgbmV2ZXIgcnVucy4KKyAgICBmb3IgKENvZGVPcmlnaW4g
Y29kZU9yaWdpbiA9IGV4aXQubV9jb2RlT3JpZ2luOyBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFt
ZTsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpIHsKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oY29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkpCisgICAgICAgICAgICAtPmJhc2VsaW5lQ29kZUJs
b2NrRm9yKGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5pc0NhbGwgPyBDb2RlRm9yQ2FsbCA6
IENvZGVGb3JDb25zdHJ1Y3QpCisgICAgICAgICAgICAtPmppdENvbXBpbGUoKmdsb2JhbERhdGEp
OworICAgIH0KKyAgICAKICAgICBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeSA9IDA7CiAg
ICAgaWYgKGV4aXQubV9yZWNvdmVyeUluZGV4KQogICAgICAgICByZWNvdmVyeSA9ICZjb2RlQmxv
Y2stPnNwZWN1bGF0aW9uUmVjb3ZlcnkoZXhpdC5tX3JlY292ZXJ5SW5kZXggLSAxKTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAkocmV2aXNpb24g
MTA4MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjYsMTEgKzI2LDEwIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiREZHT3BlcmF0aW9ucy5oIgogCi0jaWYgRU5BQkxFKERGR19KSVQpCi0KICNpbmNs
dWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJERkdPU1JFeGl0LmgiCiAjaW5jbHVkZSAiREZH
UmVwYXRjaC5oIgorI2luY2x1ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKICNpbmNsdWRlICJH
ZXR0ZXJTZXR0ZXIuaCIKICNpbmNsdWRlICJJbmxpbmVBU00uaCIKICNpbmNsdWRlICJJbnRlcnBy
ZXRlci5oIgpAQCAtMzgsNiArMzcsOCBAQAogI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgogI2lu
Y2x1ZGUgIk9wZXJhdGlvbnMuaCIKIAorI2lmIEVOQUJMRShERkdfSklUKQorCiAjaWYgQ1BVKFg4
Nl82NCkKIAogI2RlZmluZSBGVU5DVElPTl9XUkFQUEVSX1dJVEhfUkVUVVJOX0FERFJFU1MoZnVu
Y3Rpb24sIHJlZ2lzdGVyKSBcCkBAIC03MzcsNTAgKzczOCw2IEBAIHNpemVfdCBERkdfT1BFUkFU
SU9OIG9wZXJhdGlvbkNvbXBhcmVTdHIKICAgICByZXR1cm4gSlNWYWx1ZTo6c3RyaWN0RXF1YWwo
ZXhlYywgSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpLCBKU1ZhbHVlOjpkZWNvZGUoZW5jb2Rl
ZE9wMikpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBERkdfT1BFUkFUSU9OIGdldEhvc3RDYWxsUmV0
dXJuVmFsdWUoKTsKLUVuY29kZWRKU1ZhbHVlIERGR19PUEVSQVRJT04gZ2V0SG9zdENhbGxSZXR1
cm5WYWx1ZVdpdGhFeGVjU3RhdGUoRXhlY1N0YXRlKik7Ci0KLSNpZiBDUFUoWDg2XzY0KQotYXNt
ICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIK
LUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKLVNZTUJPTF9TVFJJTkco
Z2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAibW92IC00MCglcjEzKSwgJXIx
M1xuIgotICAgICJtb3YgJXIxMywgJXJkaVxuIgotICAgICJqbXAgIiBTWU1CT0xfU1RSSU5HX1JF
TE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0j
ZWxpZiBDUFUoWDg2KQotYXNtICgKLSIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxs
UmV0dXJuVmFsdWUpICJcbiIKLUhJREVfU1lNQk9MKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJc
biIKLVNZTUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKLSAgICAi
bW92IC00MCglZWRpKSwgJWVkaVxuIgotICAgICJtb3YgJWVkaSwgNCglZXNwKVxuIgotICAgICJq
bXAgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhF
eGVjU3RhdGUpICJcbiIKLSk7Ci0jZWxpZiBDUFUoQVJNX1RIVU1CMikKLWFzbSAoCi0iLnRleHQi
ICJcbiIKLSIuYWxpZ24gMiIgIlxuIgotIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZSkgIlxuIgotSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkg
IlxuIgotIi50aHVtYiIgIlxuIgotIi50aHVtYl9mdW5jICIgVEhVTUJfRlVOQ19QQVJBTShnZXRI
b3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCi1TWU1CT0xfU1RSSU5HKGdldEhvc3RDYWxsUmV0dXJu
VmFsdWUpICI6IiAiXG4iCi0gICAgImxkciByNSwgW3I1LCAjLTQwXSIgIlxuIgotICAgICJjcHkg
cjAsIHI1IiAiXG4iCi0gICAgImIgIiBTWU1CT0xfU1RSSU5HX1JFTE9DQVRJT04oZ2V0SG9zdENh
bGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUpICJcbiIKLSk7Ci0jZW5kaWYKLQotRW5jb2RlZEpT
VmFsdWUgREZHX09QRVJBVElPTiBnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZShF
eGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4ZWMt
Pmdsb2JhbERhdGEoKTsKLSAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKGdsb2JhbERh
dGEsIGV4ZWMpOwotICAgIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZXhlYy0+Z2xvYmFs
RGF0YSgpLmhvc3RDYWxsUmV0dXJuVmFsdWUpOwotfQotCiBzdGF0aWMgdm9pZCogaGFuZGxlSG9z
dENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBKU1ZhbHVlIGNhbGxlZSwgQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQogewogICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGV4ZWNDYWxsZWUtPmNh
bGxlckZyYW1lKCk7CkBAIC03ODgsNiArNzQ1LDcgQEAgc3RhdGljIHZvaWQqIGhhbmRsZUhvc3RD
YWxsKEV4ZWNTdGF0ZSogZQogCiAgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihleGVjLT5z
Y29wZUNoYWluKCkpOwogICAgIGV4ZWNDYWxsZWUtPnNldENvZGVCbG9jaygwKTsKKyAgICBleGVj
Q2FsbGVlLT5jbGVhclJldHVyblBDKCk7CiAKICAgICBpZiAoa2luZCA9PSBDb2RlRm9yQ2FsbCkg
ewogICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKQEAgLTEwOTMsMyArMTA1MSw1MiBAQCB2b2lk
IERGR19PUEVSQVRJT04gZGVidWdPcGVyYXRpb25QcmludFNwCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCiAKICNlbmRpZgorCisjaWYgQ09NUElMRVIoR0NDKQorCituYW1lc3BhY2UgSlNDIHsK
KworI2lmIENQVShYODZfNjQpCithc20gKAorIi5nbG9ibCAiIFNZTUJPTF9TVFJJTkcoZ2V0SG9z
dENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0SG9zdENhbGxSZXR1cm5WYWx1
ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiOiIgIlxuIgor
ICAgICJtb3YgLTQwKCVyMTMpLCAlcjEzXG4iCisgICAgIm1vdiAlcjEzLCAlcmRpXG4iCisgICAg
ImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0
aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShYODYpCithc20gKAorIi5nbG9ibCAiIFNZ
TUJPTF9TVFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorSElERV9TWU1CT0woZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkgIlxuIgorU1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVy
blZhbHVlKSAiOiIgIlxuIgorICAgICJtb3YgLTQwKCVlZGkpLCAlZWRpXG4iCisgICAgIm1vdiAl
ZWRpLCA0KCVlc3ApXG4iCisgICAgImptcCAiIFNZTUJPTF9TVFJJTkdfUkVMT0NBVElPTihnZXRI
b3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgorKTsKKyNlbGlmIENQVShBUk1f
VEhVTUIyKQorYXNtICgKKyIudGV4dCIgIlxuIgorIi5hbGlnbiAyIiAiXG4iCisiLmdsb2JsICIg
U1lNQk9MX1NUUklORyhnZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCitISURFX1NZTUJPTChn
ZXRIb3N0Q2FsbFJldHVyblZhbHVlKSAiXG4iCisiLnRodW1iIiAiXG4iCisiLnRodW1iX2Z1bmMg
IiBUSFVNQl9GVU5DX1BBUkFNKGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpICJcbiIKK1NZTUJPTF9T
VFJJTkcoZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZSkgIjoiICJcbiIKKyAgICAibGRyIHI1LCBbcjUs
ICMtNDBdIiAiXG4iCisgICAgImNweSByMCwgcjUiICJcbiIKKyAgICAiYiAiIFNZTUJPTF9TVFJJ
TkdfUkVMT0NBVElPTihnZXRIb3N0Q2FsbFJldHVyblZhbHVlV2l0aEV4ZWNTdGF0ZSkgIlxuIgor
KTsKKyNlbmRpZgorCitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVlIEhPU1RfQ0FMTF9SRVRVUk5f
VkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRoRXhlY1N0YXRlKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBpZiAoIWV4ZWMpCisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoSlNWYWx1ZSgpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGV4ZWMtPmdsb2JhbERh
dGEoKS5ob3N0Q2FsbFJldHVyblZhbHVlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNl
bmRpZiAvLyBDT01QSUxFUihHQ0MpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0hlYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJ
KHJldmlzaW9uIDEwODM1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAko
d29ya2luZyBjb3B5KQpAQCAtNTAsNiArNTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFz
cyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNWYWx1ZTsKICAgICBjbGFzcyBMaXZlT2JqZWN0
SXRlcmF0b3I7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE1h
cmtlZEFyZ3VtZW50QnVmZmVyOwogICAgIGNsYXNzIFJlZ2lzdGVyRmlsZTsKICAgICBjbGFzcyBV
U3RyaW5nOwpAQCAtOTUsNiArOTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLy8gdHJ1
ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MKICAgICAgICAg
aW5saW5lIGJvb2wgaXNCdXN5KCk7CiAgICAgICAgIAorICAgICAgICBNYXJrZWRBbGxvY2F0b3Im
IGZpcnN0QWxsb2NhdG9yV2l0aG91dERlc3RydWN0b3JzKCkgeyByZXR1cm4gbV9vYmplY3RTcGFj
ZS5maXJzdEFsbG9jYXRvcigpOyB9CiAgICAgICAgIE1hcmtlZEFsbG9jYXRvciYgYWxsb2NhdG9y
Rm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3Ioc2l6ZV90IGJ5dGVzKSB7IHJldHVybiBtX29iamVj
dFNwYWNlLmFsbG9jYXRvckZvcihieXRlcyk7IH0KICAgICAgICAgTWFya2VkQWxsb2NhdG9yJiBh
bGxvY2F0b3JGb3JPYmplY3RXaXRoRGVzdHJ1Y3RvcihzaXplX3QgYnl0ZXMpIHsgcmV0dXJuIG1f
b2JqZWN0U3BhY2UuZGVzdHJ1Y3RvckFsbG9jYXRvckZvcihieXRlcyk7IH0KICAgICAgICAgQ2hl
Y2tlZEJvb2xlYW4gdHJ5QWxsb2NhdGVTdG9yYWdlKHNpemVfdCwgdm9pZCoqKTsKQEAgLTEzNiwx
MiArMTM4LDEzIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB2b2lkIGdldENvbnNlcnZhdGl2
ZVJlZ2lzdGVyUm9vdHMoSGFzaFNldDxKU0NlbGwqPiYgcm9vdHMpOwogCiAgICAgcHJpdmF0ZToK
KyAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVCbG9jazsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICAgICAgZnJpZW5kIGNsYXNzIE1hcmtlZFNwYWNlOwog
ICAgICAgICBmcmllbmQgY2xhc3MgTWFya2VkQWxsb2NhdG9yOwogICAgICAgICBmcmllbmQgY2xh
c3MgTWFya2VkQmxvY2s7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBDb3BpZWRTcGFjZTsKICAgICAg
ICAgZnJpZW5kIGNsYXNzIFNsb3RWaXNpdG9yOwotICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJs
b2NrOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgdm9pZCogYWxsb2NhdGVD
ZWxsKEhlYXAmKTsKIAogICAgICAgICB2b2lkKiBhbGxvY2F0ZVdpdGhEZXN0cnVjdG9yKHNpemVf
dCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrU3RhY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJKHJldmlz
aW9uIDEwODM1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtTdGFjay5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMwMyw3ICszMDMsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2
b2lkIHZpc2l0Q2hpbGRyZW4oCiAjZW5kaWYKIAogICAgIEFTU0VSVChIZWFwOjppc01hcmtlZChj
ZWxsKSk7Ci0KKyAgICAKICAgICBpZiAoaXNKU1N0cmluZyhjZWxsKSkgewogICAgICAgICBKU1N0
cmluZzo6dmlzaXRDaGlsZHJlbihjb25zdF9jYXN0PEpTQ2VsbCo+KGNlbGwpLCB2aXNpdG9yKTsK
ICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2Vk
QWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFy
a2VkQWxsb2NhdG9yLmgJKHJldmlzaW9uIDEwODM1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL01hcmtlZEFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC04LDYgKzgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSGVhcDsKIGNsYXNzIE1hcmtlZFNwYWNlOworY2xhc3Mg
TExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiBuYW1lc3BhY2UgREZHIHsKIGNsYXNzIFNwZWN1bGF0
aXZlSklUOwpAQCAtMzMsNiArMzQsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbml0KEhlYXAqLCBN
YXJrZWRTcGFjZSosIHNpemVfdCBjZWxsU2l6ZSwgYm9vbCBjZWxsc05lZWREZXN0cnVjdGlvbik7
CiAgICAgCiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CisgICAgCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCogYWxsb2NhdGVTbG93Q2FzZSgpOwog
ICAgIHZvaWQqIHRyeUFsbG9jYXRlKCk7CiAgICAgdm9pZCogdHJ5QWxsb2NhdGVIZWxwZXIoKTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24g
MTA4MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29y
a2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEhlYXA7
CiBjbGFzcyBKU0NlbGw7CiBjbGFzcyBMaXZlT2JqZWN0SXRlcmF0b3I7CitjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiBjbGFzcyBXZWFrR0NIYW5kbGU7CiBjbGFzcyBTbG90VmlzaXRvcjsK
IApAQCAtNTEsNiArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBNYXJrZWRTcGFjZShIZWFwKik7CiAK
KyAgICBNYXJrZWRBbGxvY2F0b3ImIGZpcnN0QWxsb2NhdG9yKCk7CiAgICAgTWFya2VkQWxsb2Nh
dG9yJiBhbGxvY2F0b3JGb3Ioc2l6ZV90KTsKICAgICBNYXJrZWRBbGxvY2F0b3ImIGFsbG9jYXRv
ckZvcihNYXJrZWRCbG9jayopOwogICAgIE1hcmtlZEFsbG9jYXRvciYgZGVzdHJ1Y3RvckFsbG9j
YXRvckZvcihzaXplX3QpOwpAQCAtNzksNiArODEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRD
b25zdW1lRnJlZUxpc3QoTWFya2VkQmxvY2sqKTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xh
c3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgIAogICAgIC8vIFsgMzIuLi4gMjU2IF0KICAg
ICBzdGF0aWMgY29uc3Qgc2l6ZV90IHByZWNpc2VTdGVwID0gTWFya2VkQmxvY2s6OmF0b21TaXpl
OwogICAgIHN0YXRpYyBjb25zdCBzaXplX3QgcHJlY2lzZUN1dG9mZiA9IDI1NjsKQEAgLTEyOSw2
ICsxMzMsMTEgQEAgdGVtcGxhdGU8dHlwZW5hbWUgRnVuY3Rvcj4gaW5saW5lIHR5cGVuYQogICAg
IHJldHVybiBmb3JFYWNoQ2VsbChmdW5jdG9yKTsKIH0KIAoraW5saW5lIE1hcmtlZEFsbG9jYXRv
ciYgTWFya2VkU3BhY2U6OmZpcnN0QWxsb2NhdG9yKCkKK3sKKyAgICByZXR1cm4gbV9ub3JtYWxT
cGFjZS5wcmVjaXNlQWxsb2NhdG9yc1swXTsKK30KKwogaW5saW5lIE1hcmtlZEFsbG9jYXRvciYg
TWFya2VkU3BhY2U6OmFsbG9jYXRvckZvcihzaXplX3QgYnl0ZXMpCiB7CiAgICAgQVNTRVJUKGJ5
dGVzICYmIGJ5dGVzIDw9IG1heENlbGxTaXplKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCShyZXZpc2lvbiAxMDgzNTgpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTAsNiArNTAsMjkgQEAgUmVnaXN0ZXJGaWxlKiBDYWxsRnJhbWU6OnJlZ2lzdGVy
RmlsZSgpCiAKICNlbmRpZgogCisjaWYgVVNFKEpTVkFMVUUzMl82NCkKK3Vuc2lnbmVkIENhbGxG
cmFtZTo6Ynl0ZWNvZGVPZmZzZXRGb3JOb25ERkdDb2RlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
Y29kZUJsb2NrKCkpOworICAgIHJldHVybiBjdXJyZW50VlBDKCkgLSBjb2RlQmxvY2soKS0+aW5z
dHJ1Y3Rpb25zKCkuYmVnaW4oKTsKK30KKwordm9pZCBDYWxsRnJhbWU6OnNldEJ5dGVjb2RlT2Zm
c2V0Rm9yTm9uREZHQ29kZSh1bnNpZ25lZCBvZmZzZXQpCit7CisgICAgQVNTRVJUKGNvZGVCbG9j
aygpKTsKKyAgICBzZXRDdXJyZW50VlBDKGNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdp
bigpICsgb2Zmc2V0KTsKK30KKyNlbHNlCitJbnN0cnVjdGlvbiogQ2FsbEZyYW1lOjpjdXJyZW50
VlBDKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJl
Z2luKCkgKyBieXRlY29kZU9mZnNldEZvck5vbkRGR0NvZGUoKTsKK30KK3ZvaWQgQ2FsbEZyYW1l
OjpzZXRDdXJyZW50VlBDKEluc3RydWN0aW9uKiB2cGMpCit7CisgICAgc2V0Qnl0ZWNvZGVPZmZz
ZXRGb3JOb25ERkdDb2RlKHZwYyAtIGNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigp
KTsKK30KKyNlbmRpZgorICAgIAogI2lmIEVOQUJMRShERkdfSklUKQogYm9vbCBDYWxsRnJhbWU6
OmlzSW5saW5lQ2FsbEZyYW1lU2xvdygpCiB7CkBAIC0xNDIsNyArMTY1LDcgQEAgQ2FsbEZyYW1l
KiBDYWxsRnJhbWU6OnRydWVDYWxsZXJGcmFtZSgpCiAgICAgLy8gICAgbW9yZSBmcmFtZXMgYWJv
dmUgdGhlIHRydWUgY2FsbGVyIGR1ZSB0byBpbmxpbmluZy4KIAogICAgIC8vIEFtIEkgYW4gaW5s
aW5lIGNhbGwgZnJhbWU/IElmIHNvLCB3ZSdyZSBkb25lLgotICAgIGlmIChpc0lubGluZUNhbGxG
cmFtZSgpIHx8ICFoYXNSZXR1cm5QQygpKQorICAgIGlmIChpc0lubGluZUNhbGxGcmFtZSgpKQog
ICAgICAgICByZXR1cm4gY2FsbGVyRnJhbWUoKS0+cmVtb3ZlSG9zdENhbGxGcmFtZUZsYWcoKTsK
ICAgICAKICAgICAvLyBJIGFtIGEgbWFjaGluZSBjYWxsIGZyYW1lLCBzbyB0aGUgcXVlc3Rpb24g
aXM6IGlzIG15IGNhbGxlciBhIG1hY2hpbmUgY2FsbCBmcmFtZQpAQCAtMTUzLDcgKzE3Niw3IEBA
IENhbGxGcmFtZSogQ2FsbEZyYW1lOjp0cnVlQ2FsbGVyRnJhbWUoKQogICAgIEFTU0VSVCghbWFj
aGluZUNhbGxlci0+aXNJbmxpbmVDYWxsRnJhbWUoKSk7CiAgICAgCiAgICAgLy8gRmlndXJlIG91
dCBob3cgd2Ugd2FudCB0byBnZXQgdGhlIGN1cnJlbnQgY29kZSBsb2NhdGlvbi4KLSAgICBpZiAo
aGFzSG9zdENhbGxGcmFtZUZsYWcoKSB8fCByZXR1cm5BZGRyZXNzSXNJbkN0aVRyYW1wb2xpbmUo
cmV0dXJuUEMoKSkpCisgICAgaWYgKCFoYXNSZXR1cm5QQygpIHx8IHJldHVybkFkZHJlc3NJc0lu
Q3RpVHJhbXBvbGluZShyZXR1cm5QQygpKSkKICAgICAgICAgcmV0dXJuIG1hY2hpbmVDYWxsZXIt
PnRydWVDYWxsRnJhbWVGcm9tVk1Db2RlKCktPnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFnKCk7CiAg
ICAgCiAgICAgcmV0dXJuIG1hY2hpbmVDYWxsZXItPnRydWVDYWxsRnJhbWUocmV0dXJuUEMoKSkt
PnJlbW92ZUhvc3RDYWxsRnJhbWVGbGFnKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCShyZXZpc2lvbiAxMDgzNTgpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAg
LTEwMywxMSArMTAzLDE2IEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgICAgICBDYWxsRnJhbWUq
IGNhbGxlckZyYW1lKCkgY29uc3QgeyByZXR1cm4gdGhpc1tSZWdpc3RlckZpbGU6OkNhbGxlckZy
YW1lXS5jYWxsRnJhbWUoKTsgfQogI2lmIEVOQUJMRShKSVQpCi0gICAgICAgIGJvb2wgaGFzUmV0
dXJuUEMoKSBjb25zdCB7IHJldHVybiB0aGlzW1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdLnZQQygp
OyB9CiAgICAgICAgIFJldHVybkFkZHJlc3NQdHIgcmV0dXJuUEMoKSBjb25zdCB7IHJldHVybiBS
ZXR1cm5BZGRyZXNzUHRyKHRoaXNbUmVnaXN0ZXJGaWxlOjpSZXR1cm5QQ10udlBDKCkpOyB9Cisg
ICAgICAgIGJvb2wgaGFzUmV0dXJuUEMoKSBjb25zdCB7IHJldHVybiAhIXRoaXNbUmVnaXN0ZXJG
aWxlOjpSZXR1cm5QQ10udlBDKCk7IH0KKyAgICAgICAgdm9pZCBjbGVhclJldHVyblBDKCkgeyBy
ZWdpc3RlcnMoKVtSZWdpc3RlckZpbGU6OlJldHVyblBDXSA9IHN0YXRpY19jYXN0PEluc3RydWN0
aW9uKj4oMCk7IH0KICNlbmRpZgogICAgICAgICBBYnN0cmFjdFBDIGFic3RyYWN0UmV0dXJuUEMo
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKSB7IHJldHVybiBBYnN0cmFjdFBDKGdsb2JhbERhdGEs
IHRoaXMpOyB9Ci0gICAgICAgIHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0Rm9yTm9uREZHQ29kZSgp
CisjaWYgVVNFKEpTVkFMVUUzMl82NCkKKyAgICAgICAgdW5zaWduZWQgYnl0ZWNvZGVPZmZzZXRG
b3JOb25ERkdDb2RlKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0Qnl0ZWNvZGVPZmZzZXRGb3JO
b25ERkdDb2RlKHVuc2lnbmVkIG9mZnNldCk7CisjZWxzZQorICAgICAgICB1bnNpZ25lZCBieXRl
Y29kZU9mZnNldEZvck5vbkRGR0NvZGUoKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBB
U1NFUlQoY29kZUJsb2NrKCkpOwogICAgICAgICAgICAgcmV0dXJuIHRoaXNbUmVnaXN0ZXJGaWxl
OjpBcmd1bWVudENvdW50XS50YWcoKTsKQEAgLTExOCw2ICsxMjMsNyBAQCBuYW1lc3BhY2UgSlND
ICB7CiAgICAgICAgICAgICBBU1NFUlQoY29kZUJsb2NrKCkpOwogICAgICAgICAgICAgdGhpc1tS
ZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnRdLnRhZygpID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4o
b2Zmc2V0KTsKICAgICAgICAgfQorI2VuZGlmCiAKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAg
ICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUoKSBjb25zdCB7IHJldHVybiB0aGlz
W1JlZ2lzdGVyRmlsZTo6UmV0dXJuUENdLmFzSW5saW5lQ2FsbEZyYW1lKCk7IH0KQEAgLTEzNSw2
ICsxNDEsMTkgQEAgbmFtZXNwYWNlIEpTQyAgewogI2lmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJF
VEVSKQogICAgICAgICBJbnN0cnVjdGlvbiogcmV0dXJuVlBDKCkgY29uc3QgeyByZXR1cm4gdGhp
c1tSZWdpc3RlckZpbGU6OlJldHVyblBDXS52UEMoKTsgfQogI2VuZGlmCisjaWYgVVNFKEpTVkFM
VUUzMl82NCkKKyAgICAgICAgSW5zdHJ1Y3Rpb24qIGN1cnJlbnRWUEMoKSBjb25zdAorICAgICAg
ICB7CisgICAgICAgICAgICByZXR1cm4gYml0d2lzZV9jYXN0PEluc3RydWN0aW9uKj4odGhpc1tS
ZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnRdLnRhZygpKTsKKyAgICAgICAgfQorICAgICAgICB2
b2lkIHNldEN1cnJlbnRWUEMoSW5zdHJ1Y3Rpb24qIHZwYykKKyAgICAgICAgeworICAgICAgICAg
ICAgdGhpc1tSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnRdLnRhZygpID0gYml0d2lzZV9jYXN0
PGludDMyX3Q+KHZwYyk7CisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIEluc3RydWN0aW9uKiBj
dXJyZW50VlBDKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0Q3VycmVudFZQQyhJbnN0cnVjdGlv
biogdnBjKTsKKyNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0Q2FsbGVyRnJhbWUoQ2FsbEZyYW1l
KiBjYWxsZXJGcmFtZSkgeyBzdGF0aWNfY2FzdDxSZWdpc3Rlcio+KHRoaXMpW1JlZ2lzdGVyRmls
ZTo6Q2FsbGVyRnJhbWVdID0gY2FsbGVyRnJhbWU7IH0KICAgICAgICAgdm9pZCBzZXRTY29wZUNo
YWluKFNjb3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluKSB7IHN0YXRpY19jYXN0PFJlZ2lzdGVyKj4o
dGhpcylbUmVnaXN0ZXJGaWxlOjpTY29wZUNoYWluXSA9IHNjb3BlQ2hhaW47IH0KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAko
cmV2aXNpb24gMTA4MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0lu
dGVycHJldGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQAogI2luY2x1ZGUg
IkpJVC5oIgogI2VuZGlmCiAKLSNkZWZpbmUgV1RGX1VTRV9HQ0NfQ09NUFVURURfR09UT19XT1JL
QVJPVU5EIChFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKSAmJiAhZGVm
aW5lZChfX2xsdm1fXykpCisjZGVmaW5lIFdURl9VU0VfR0NDX0NPTVBVVEVEX0dPVE9fV09SS0FS
T1VORCAoKEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJM
RShMTElOVCkpICYmICFkZWZpbmVkKF9fbGx2bV9fKSkKIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IApAQCAtNTQzLDM0ICs1NDMsNTkgQEAgSW50ZXJwcmV0ZXI6OkludGVycHJldGVyKCkKICNpZiAh
QVNTRVJUX0RJU0FCTEVECiAgICAgLCBtX2luaXRpYWxpemVkKGZhbHNlKQogI2VuZGlmCi0gICAg
LCBtX2VuYWJsZWQoZmFsc2UpCisgICAgLCBtX2NsYXNzaWNFbmFibGVkKGZhbHNlKQogewogfQog
Ci12b2lkIEludGVycHJldGVyOjppbml0aWFsaXplKGJvb2wgY2FuVXNlSklUKQorSW50ZXJwcmV0
ZXI6On5JbnRlcnByZXRlcigpCiB7Ci0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19J
TlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKG1fY2xhc3NpY0VuYWJsZWQp
CisgICAgICAgIGRlbGV0ZVtdIG1fb3Bjb2RlVGFibGU7CisjZW5kaWYKK30KKwordm9pZCBJbnRl
cnByZXRlcjo6aW5pdGlhbGl6ZShMTEludDo6RGF0YSogbGxpbnREYXRhLCBib29sIGNhblVzZUpJ
VCkKK3sKKyAgICBVTlVTRURfUEFSQU0obGxpbnREYXRhKTsKKyAgICBVTlVTRURfUEFSQU0oY2Fu
VXNlSklUKTsKKyNpZiBFTkFCTEUoQ09NUFVURURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKSB8
fCBFTkFCTEUoTExJTlQpCisjaWYgIUVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQ
UkVURVIpCisgICAgLy8gSGF2aW5nIExMSW50IGVuYWJsZWQsIGJ1dCBub3QgYmVpbmcgYWJsZSB0
byB1c2UgdGhlIEpJVCwgYW5kIG5vdCBoYXZpbmcKKyAgICAvLyBhIGNvbXB1dGVkIGdvdG8gaW50
ZXJwcmV0ZXIsIGlzIG5vdCBzdXBwb3J0ZWQuIE5vdCBiZWNhdXNlIHdlIGNhbm5vdAorICAgIC8v
IHN1cHBvcnQgaXQsIGJ1dCBiZWNhdXNlIEkgZGVjaWRlZCB0byBkcmF3IHRoZSBsaW5lIGF0IHRo
ZSBudW1iZXIgb2YKKyAgICAvLyBwZXJtdXRhdGlvbnMgb2YgZXhlY3V0aW9uIGVuZ2luZXMgdGhh
dCBJIHdhbnRlZCB0aGlzIGNvZGUgdG8gZ3Jvay4KKyAgICBBU1NFUlQoY2FuVXNlSklUKTsKKyNl
bmRpZgogICAgIGlmIChjYW5Vc2VKSVQpIHsKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIG1f
b3Bjb2RlVGFibGUgPSBsbGludERhdGEtPm9wY29kZU1hcCgpOworICAgICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG51bU9wY29kZUlEczsgKytpKQorICAgICAgICAgICAgbV9vcGNvZGVJRFRhYmxl
LmFkZChtX29wY29kZVRhYmxlW2ldLCBzdGF0aWNfY2FzdDxPcGNvZGVJRD4oaSkpOworI2Vsc2UK
ICAgICAgICAgLy8gSWYgdGhlIEpJVCBpcyBwcmVzZW50LCBkb24ndCB1c2UganVtcCBkZXN0aW5h
dGlvbnMgZm9yIG9wY29kZXMuCiAgICAgICAgIAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bU9wY29kZUlEczsgKytpKSB7CiAgICAgICAgICAgICBPcGNvZGUgb3Bjb2RlID0gYml0d2lz
ZV9jYXN0PHZvaWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGkpKTsKICAgICAgICAgICAgIG1f
b3Bjb2RlVGFibGVbaV0gPSBvcGNvZGU7CiAgICAgICAgIH0KKyNlbmRpZgogICAgIH0gZWxzZSB7
CisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICBtX29wY29kZVRhYmxlID0gbmV3IE9wY29kZVtu
dW1PcGNvZGVJRHNdOworI2VuZGlmCiAgICAgICAgIHByaXZhdGVFeGVjdXRlKEluaXRpYWxpemVB
bmRSZXR1cm4sIDAsIDApOwogICAgICAgICAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBu
dW1PcGNvZGVJRHM7ICsraSkKICAgICAgICAgICAgIG1fb3Bjb2RlSURUYWJsZS5hZGQobV9vcGNv
ZGVUYWJsZVtpXSwgc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGkpKTsKICAgICAgICAgCi0gICAgICAg
IG1fZW5hYmxlZCA9IHRydWU7CisgICAgICAgIG1fY2xhc3NpY0VuYWJsZWQgPSB0cnVlOwogICAg
IH0KICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGNhblVzZUpJVCk7CiAjaWYgRU5BQkxFKENMQVNT
SUNfSU5URVJQUkVURVIpCi0gICAgbV9lbmFibGVkID0gdHJ1ZTsKKyAgICBtX2NsYXNzaWNFbmFi
bGVkID0gdHJ1ZTsKICNlbHNlCi0gICAgbV9lbmFibGVkID0gZmFsc2U7CisgICAgbV9jbGFzc2lj
RW5hYmxlZCA9IGZhbHNlOwogI2VuZGlmCiAjZW5kaWYgLy8gRU5BQkxFKENPTVBVVEVEX0dPVE9f
Q0xBU1NJQ19JTlRFUlBSRVRFUikKICNpZiAhQVNTRVJUX0RJU0FCTEVECkBAIC02NjcsOSArNjky
LDExIEBAIHZvaWQgSW50ZXJwcmV0ZXI6OmR1bXBSZWdpc3RlcnMoQ2FsbEZyYW0KIAogYm9vbCBJ
bnRlcnByZXRlcjo6aXNPcGNvZGUoT3Bjb2RlIG9wY29kZSkKIHsKLSNpZiBFTkFCTEUoQ09NUFVU
RURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKQotICAgIGlmICghbV9lbmFibGVkKQorI2lmIEVO
QUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpIHx8IEVOQUJMRShMTElOVCkK
KyNpZiAhRU5BQkxFKExMSU5UKQorICAgIGlmICghbV9jbGFzc2ljRW5hYmxlZCkKICAgICAgICAg
cmV0dXJuIG9wY29kZSA+PSAwICYmIHN0YXRpY19jYXN0PE9wY29kZUlEPihiaXR3aXNlX2Nhc3Q8
dWludHB0cl90PihvcGNvZGUpKSA8PSBvcF9lbmQ7CisjZW5kaWYKICAgICByZXR1cm4gb3Bjb2Rl
ICE9IEhhc2hUcmFpdHM8T3Bjb2RlPjo6ZW1wdHlWYWx1ZSgpCiAgICAgICAgICYmICFIYXNoVHJh
aXRzPE9wY29kZT46OmlzRGVsZXRlZFZhbHVlKG9wY29kZSkKICAgICAgICAgJiYgbV9vcGNvZGVJ
RFRhYmxlLmNvbnRhaW5zKG9wY29kZSk7CkBAIC03MjYsMTEgKzc1MywxMSBAQCBORVZFUl9JTkxJ
TkUgYm9vbCBJbnRlcnByZXRlcjo6dW53aW5kQ2FsCiAgICAgLy8gaGF2ZSB0byBzdWJ0cmFjdCAx
LgogI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShDTEFTU0lDX0lOVEVSUFJFVEVSKQogICAgIGlm
IChjYWxsZXJGcmFtZS0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpKQotICAgICAgICBieXRlY29k
ZU9mZnNldCA9IGNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5QQygp
KTsKKyAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNh
bGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwogICAgIGVsc2UKICAgICAgICAgYnl0
ZWNvZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJu
VlBDKCkpIC0gMTsKICNlbGlmIEVOQUJMRShKSVQpCi0gICAgYnl0ZWNvZGVPZmZzZXQgPSBjb2Rl
QmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgYnl0ZWNv
ZGVPZmZzZXQgPSBjb2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJh
bWUtPnJldHVyblBDKCkpOwogI2Vsc2UKICAgICBieXRlY29kZU9mZnNldCA9IGNvZGVCbG9jay0+
Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1cm5WUEMoKSkgLSAxOwogI2VuZGlmCkBAIC04
NTcsNyArODg0LDcgQEAgc3RhdGljIENhbGxGcmFtZSogZ2V0Q2FsbGVySW5mbyhKU0dsb2JhbAog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UKICAgICAjZW5kaWYKLSAgICAgICAgICAgIGJ5
dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUt
PnJldHVyblBDKCkpOworICAgICAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJDb2RlQmxv
Y2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxlckZyYW1lLCBjYWxsRnJhbWUtPnJldHVyblBDKCkpOwog
I2VuZGlmCiAgICAgfQogCkBAIC0xODE1LDcgKzE4NDIsNyBAQCBKU1ZhbHVlIEludGVycHJldGVy
Ojpwcml2YXRlRXhlY3V0ZShFeGVjCiAgICAgfQogICAgIAogICAgIEFTU0VSVChtX2luaXRpYWxp
emVkKTsKLSAgICBBU1NFUlQobV9lbmFibGVkKTsKKyAgICBBU1NFUlQobV9jbGFzc2ljRW5hYmxl
ZCk7CiAgICAgCiAjaWYgRU5BQkxFKEpJVCkKICNpZiBFTkFCTEUoQ0xBU1NJQ19JTlRFUlBSRVRF
UikKQEAgLTM0NjYsNiArMzQ5Myw4IEBAIHNraXBfaWRfY3VzdG9tX3NlbGY6CiAjaWYgVVNFKEdD
Q19DT01QVVRFRF9HT1RPX1dPUktBUk9VTkQpCiAgICAgICBza2lwX3B1dF9ieV9pZDoKICNlbmRp
ZgorICAgIERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KQorICAg
IERFRklORV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fbm9ybWFsKQogICAgIERFRklO
RV9PUENPREUob3BfcHV0X2J5X2lkX3RyYW5zaXRpb24pIHsKICAgICAgICAgLyogb3BfcHV0X2J5
X2lkX3RyYW5zaXRpb24gYmFzZShyKSBwcm9wZXJ0eShpZCkgdmFsdWUocikgb2xkU3RydWN0dXJl
KHNJRCkgbmV3U3RydWN0dXJlKHNJRCkgc3RydWN0dXJlQ2hhaW4oY2hhaW4pIG9mZnNldChuKSBk
aXJlY3QoYikKICAgICAgICAgIApAQCAtNTI5OSwxMCArNTMyOCwxMCBAQCB2b2lkIEludGVycHJl
dGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoQ2FsCiAgICAgICAgIGJ5dGVjb2RlT2Zmc2V0ID0gY2Fs
bGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUtPnJldHVyblZQQygpKTsKICNp
ZiBFTkFCTEUoSklUKQogICAgIGVsc2UKLSAgICAgICAgYnl0ZWNvZGVPZmZzZXQgPSBjYWxsZXJD
b2RlQmxvY2stPmJ5dGVjb2RlT2Zmc2V0KGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CisgICAgICAg
IGJ5dGVjb2RlT2Zmc2V0ID0gY2FsbGVyQ29kZUJsb2NrLT5ieXRlY29kZU9mZnNldChjYWxsZXJG
cmFtZSwgY2FsbEZyYW1lLT5yZXR1cm5QQygpKTsKICNlbmRpZgogI2Vsc2UKLSAgICBieXRlY29k
ZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVPZmZzZXQoY2FsbEZyYW1lLT5yZXR1
cm5QQygpKTsKKyAgICBieXRlY29kZU9mZnNldCA9IGNhbGxlckNvZGVCbG9jay0+Ynl0ZWNvZGVP
ZmZzZXQoY2FsbGVyRnJhbWUsIGNhbGxGcmFtZS0+cmV0dXJuUEMoKSk7CiAjZW5kaWYKICAgICBs
aW5lTnVtYmVyID0gY2FsbGVyQ29kZUJsb2NrLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQo
Ynl0ZWNvZGVPZmZzZXQgLSAxKTsKICAgICBzb3VyY2VJRCA9IGNhbGxlckNvZGVCbG9jay0+b3du
ZXJFeGVjdXRhYmxlKCktPnNvdXJjZUlEKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuaAkocmV2aXNpb24gMTA4MzU4KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCiAjaW5jbHVkZSAi
SlNWYWx1ZS5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiTExJbnREYXRhLmgi
CiAjaW5jbHVkZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCiAKQEAgLTQ2
LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRXhlY3V0YWJsZUJhc2U7CiAg
ICAgY2xhc3MgRnVuY3Rpb25FeGVjdXRhYmxlOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0Owor
ICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0
YWJsZTsKICAgICBjbGFzcyBSZWdpc3RlcjsKICAgICBjbGFzcyBTY29wZUNoYWluTm9kZTsKQEAg
LTE1OCwxOSArMTYwLDIxIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3MgSW50ZXJwcmV0
ZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICAgICAgZnJpZW5kIGNs
YXNzIEpJVDsKICAgICAgICAgZnJpZW5kIGNsYXNzIENhY2hlZENhbGw7CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CiAgICAgcHVibGljOgogICAgICAgICBJbnRlcnByZXRlcigpOworICAgICAgICB+SW50ZXJwcmV0
ZXIoKTsKICAgICAgICAgCi0gICAgICAgIHZvaWQgaW5pdGlhbGl6ZShib29sIGNhblVzZUpJVCk7
CisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZShMTEludDo6RGF0YSosIGJvb2wgY2FuVXNlSklUKTsK
IAogICAgICAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSgpIHsgcmV0dXJuIG1fcmVnaXN0
ZXJGaWxlOyB9CiAgICAgICAgIAogICAgICAgICBPcGNvZGUgZ2V0T3Bjb2RlKE9wY29kZUlEIGlk
KQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQobV9pbml0aWFsaXplZCk7Ci0jaWYgRU5B
QkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19JTlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoQ09NUFVU
RURfR09UT19DTEFTU0lDX0lOVEVSUFJFVEVSKSB8fCBFTkFCTEUoTExJTlQpCiAgICAgICAgICAg
ICByZXR1cm4gbV9vcGNvZGVUYWJsZVtpZF07CiAjZWxzZQogICAgICAgICAgICAgcmV0dXJuIGlk
OwpAQCAtMTgwLDkgKzE4NCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3Bjb2RlSUQg
Z2V0T3Bjb2RlSUQoT3Bjb2RlIG9wY29kZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJU
KG1faW5pdGlhbGl6ZWQpOwotI2lmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQ
UkVURVIpCisjaWYgRU5BQkxFKExMSU5UKQorICAgICAgICAgICAgQVNTRVJUKGlzT3Bjb2RlKG9w
Y29kZSkpOworICAgICAgICAgICAgcmV0dXJuIG1fb3Bjb2RlSURUYWJsZS5nZXQob3Bjb2RlKTsK
KyNlbGlmIEVOQUJMRShDT01QVVRFRF9HT1RPX0NMQVNTSUNfSU5URVJQUkVURVIpCiAgICAgICAg
ICAgICBBU1NFUlQoaXNPcGNvZGUob3Bjb2RlKSk7Ci0gICAgICAgICAgICBpZiAoIW1fZW5hYmxl
ZCkKKyAgICAgICAgICAgIGlmICghbV9jbGFzc2ljRW5hYmxlZCkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8T3Bjb2RlSUQ+KGJpdHdpc2VfY2FzdDx1aW50cHRyX3Q+KG9wY29k
ZSkpOwogCiAgICAgICAgICAgICByZXR1cm4gbV9vcGNvZGVJRFRhYmxlLmdldChvcGNvZGUpOwpA
QCAtMTkwLDYgKzE5NywxMSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgICAgIHJldHVybiBv
cGNvZGU7CiAjZW5kaWYKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9vbCBjbGFzc2lj
RW5hYmxlZCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2NsYXNzaWNFbmFibGVk
OworICAgICAgICB9CiAKICAgICAgICAgYm9vbCBpc09wY29kZShPcGNvZGUpOwogCkBAIC0yNTks
NyArMjcxLDEwIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIFJlZ2lzdGVyRmlsZSBtX3Jl
Z2lzdGVyRmlsZTsKICAgICAgICAgCi0jaWYgRU5BQkxFKENPTVBVVEVEX0dPVE9fQ0xBU1NJQ19J
TlRFUlBSRVRFUikKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgICAgIE9wY29kZSogbV9vcGNvZGVU
YWJsZTsgLy8gTWFwcyBPcGNvZGVJRCA9PiBPcGNvZGUgZm9yIGNvbXBpbGluZworICAgICAgICBI
YXNoTWFwPE9wY29kZSwgT3Bjb2RlSUQ+IG1fb3Bjb2RlSURUYWJsZTsgLy8gTWFwcyBPcGNvZGUg
PT4gT3Bjb2RlSUQgZm9yIGRlY29tcGlsaW5nCisjZWxpZiBFTkFCTEUoQ09NUFVURURfR09UT19D
TEFTU0lDX0lOVEVSUFJFVEVSKQogICAgICAgICBPcGNvZGUgbV9vcGNvZGVUYWJsZVtudW1PcGNv
ZGVJRHNdOyAvLyBNYXBzIE9wY29kZUlEID0+IE9wY29kZSBmb3IgY29tcGlsaW5nCiAgICAgICAg
IEhhc2hNYXA8T3Bjb2RlLCBPcGNvZGVJRD4gbV9vcGNvZGVJRFRhYmxlOyAvLyBNYXBzIE9wY29k
ZSA9PiBPcGNvZGVJRCBmb3IgZGVjb21waWxpbmcKICNlbmRpZgpAQCAtMjY3LDcgKzI4Miw3IEBA
IG5hbWVzcGFjZSBKU0MgewogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICAgICAgYm9vbCBtX2lu
aXRpYWxpemVkOwogI2VuZGlmCi0gICAgICAgIGJvb2wgbV9lbmFibGVkOworICAgICAgICBib29s
IG1fY2xhc3NpY0VuYWJsZWQ7CiAgICAgfTsKIAogICAgIC8vIFRoaXMgdmFsdWUgbXVzdCBub3Qg
YmUgYW4gb2JqZWN0IHRoYXQgd291bGQgcmVxdWlyZSB0aGlzIGNvbnZlcnNpb24gKFdlYkNvcmUn
cyBnbG9iYWwgb2JqZWN0KS4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9SZWdpc3RlckZpbGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxlLmgJKHJldmlzaW9uIDEwODM1OCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnRlcnByZXRlci9SZWdpc3RlckZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAt
MzksNiArMzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIENvbnNlcnZhdGl2ZVJv
b3RzOwogICAgIGNsYXNzIERGR0NvZGVCbG9ja3M7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOwogCiAgICAgY2xhc3MgUmVnaXN0ZXJGaWxlIHsKICAgICAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoUmVnaXN0ZXJGaWxlKTsKQEAgLTgxLDYgKzgyLDggQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGdyb3dTbG93Q2FzZShSZWdp
c3RlciopOwogICAgICAgICB2b2lkIHJlbGVhc2VFeGNlc3NDYXBhY2l0eSgpOwogICAgICAgICB2
b2lkIGFkZFRvQ29tbWl0dGVkQnl0ZUNvdW50KGxvbmcpOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgJKHJldmlzaW9uIDEwODM1OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC04OSwxMiArODksMTIgQEAgaW5saW5lIHNpemVfdCByb3VuZFVwQWxsb2Nh
dGlvblNpemUoc2l6ZQogCiB9CiAKLSNpZiBFTkFCTEUoSklUKSAmJiBFTkFCTEUoQVNTRU1CTEVS
KQotCiBuYW1lc3BhY2UgSlNDIHsKIAogdHlwZWRlZiBXVEY6Ok1ldGFBbGxvY2F0b3JIYW5kbGUg
RXhlY3V0YWJsZU1lbW9yeUhhbmRsZTsKIAorI2lmIEVOQUJMRShKSVQpICYmIEVOQUJMRShBU1NF
TUJMRVIpCisKIGNsYXNzIEV4ZWN1dGFibGVBbGxvY2F0b3IgewogICAgIGVudW0gUHJvdGVjdGlv
blNldHRpbmcgeyBXcml0YWJsZSwgRXhlY3V0YWJsZSB9OwogCkBAIC0yMzUsOCArMjM1LDggQEAg
cHJpdmF0ZToKICNlbmRpZgogfTsKIAotfSAvLyBuYW1lc3BhY2UgSlNDCi0KICNlbmRpZiAvLyBF
TkFCTEUoSklUKSAmJiBFTkFCTEUoQVNTRU1CTEVSKQogCit9IC8vIG5hbWVzcGFjZSBKU0MKKwog
I2VuZGlmIC8vICFkZWZpbmVkKEV4ZWN1dGFibGVBbGxvY2F0b3IpCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5jcHAJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0hvc3RDYWxsUmV0dXJuVmFsdWUuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEy
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJIb3N0
Q2FsbFJldHVyblZhbHVlLmgiCisKKyNpbmNsdWRlICJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJJ
bmxpbmVBU00uaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTVmFsdWVJbmxp
bmVNZXRob2RzLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFpbi5oIgorCituYW1lc3BhY2UgSlNDIHsK
KworLy8gTm90aGluZyB0byBzZWUgaGVyZS4KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSG9zdENhbGxSZXR1cm5WYWx1ZS5oCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Ib3N0Q2FsbFJldHVyblZh
bHVlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBIb3N0Q2FsbFJldHVyblZhbHVlX2gK
KyNkZWZpbmUgSG9zdENhbGxSZXR1cm5WYWx1ZV9oCisKKyNpbmNsdWRlICJKU1ZhbHVlLmgiCisj
aW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3Jt
Lmg+CisKKy8vIFVuZm9ydHVuYXRlbHkgdGhpcyBvbmx5IHdvcmtzIG9uIEdDQy1saWtlIGNvbXBp
bGVycy4gQW5kIGl0J3MgY3VycmVudGx5IG9ubHkgdXNlZAorLy8gYnkgTExJbnQgYW5kIERGRywg
d2hpY2ggYWxzbyBhcmUgcmVzdHJpY3RlZCB0byBHQ0MtbGlrZSBjb21waWxlcnMuIFdlIHNob3Vs
ZAorLy8gcHJvYmFibHkgZml4IHRoYXQgYXQgc29tZSBwb2ludC4KKyNpZiBDT01QSUxFUihHQ0Mp
CisKKyNpZiBDQUxMSU5HX0NPTlZFTlRJT05fSVNfU1REQ0FMTAorI2RlZmluZSBIT1NUX0NBTExf
UkVUVVJOX1ZBTFVFX09QVElPTiBDREVDTAorI2Vsc2UKKyNkZWZpbmUgSE9TVF9DQUxMX1JFVFVS
Tl9WQUxVRV9PUFRJT04KKyNlbmRpZgorCituYW1lc3BhY2UgSlNDIHsKKworZXh0ZXJuICJDIiBF
bmNvZGVkSlNWYWx1ZSBIT1NUX0NBTExfUkVUVVJOX1ZBTFVFX09QVElPTiBnZXRIb3N0Q2FsbFJl
dHVyblZhbHVlKCk7CisKKy8vIFRoaXMgaXMgYSBwdWJsaWMgZGVjbGFyYXRpb24gb25seSB0byBj
b252aW5jZSBDTEFORyBub3QgdG8gZWxpZGUgaXQuCitleHRlcm4gIkMiIEVuY29kZWRKU1ZhbHVl
IEhPU1RfQ0FMTF9SRVRVUk5fVkFMVUVfT1BUSU9OIGdldEhvc3RDYWxsUmV0dXJuVmFsdWVXaXRo
RXhlY1N0YXRlKEV4ZWNTdGF0ZSopOworCitpbmxpbmUgdm9pZCBpbml0aWFsaXplSG9zdENhbGxS
ZXR1cm5WYWx1ZSgpCit7CisgICAgZ2V0SG9zdENhbGxSZXR1cm5WYWx1ZVdpdGhFeGVjU3RhdGUo
MCk7Cit9CisKK30KKworI2Vsc2UgLy8gQ09NUElMRVIoR0NDKQorCituYW1lc3BhY2UgSlNDIHsK
K2lubGluZSB2b2lkIGluaXRpYWxpemVIb3N0Q2FsbFJldHVyblZhbHVlKCkgeyB9Cit9CisKKyNl
bmRpZiAvLyBDT01QSUxFUihHQ0MpCisKKyNlbmRpZiAvLyBIb3N0Q2FsbFJldHVyblZhbHVlX2gK
KwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcAkocmV2aXNpb24gMTA4MzU4KQorKysg
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUs
NiArMzI1LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxlTWFpblBhc3MoKQogICAgICAgICBE
RUZJTkVfT1Aob3BfcHJvZmlsZV93aWxsX2NhbGwpCiAgICAgICAgIERFRklORV9PUChvcF9wdXNo
X25ld19zY29wZSkKICAgICAgICAgREVGSU5FX09QKG9wX3B1c2hfc2NvcGUpCisgICAgICAgIGNh
c2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9i
eV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pZCkK
ICAgICAgICAgREVGSU5FX09QKG9wX3B1dF9ieV9pbmRleCkKICAgICAgICAgREVGSU5FX09QKG9w
X3B1dF9ieV92YWwpCkBAIC00ODYsNiArNDg4LDggQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21waWxl
U2xvd0Nhc2VzKCkKICAgICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3Bvc3RfaW5jKQogICAg
ICAgICBERUZJTkVfU0xPV0NBU0VfT1Aob3BfcHJlX2RlYykKICAgICAgICAgREVGSU5FX1NMT1dD
QVNFX09QKG9wX3ByZV9pbmMpCisgICAgICAgIGNhc2Ugb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25f
ZGlyZWN0OgorICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZF90cmFuc2l0aW9uX25vcm1hbDoKICAg
ICAgICAgREVGSU5FX1NMT1dDQVNFX09QKG9wX3B1dF9ieV9pZCkKICAgICAgICAgREVGSU5FX1NM
T1dDQVNFX09QKG9wX3B1dF9ieV92YWwpCiAgICAgICAgIERFRklORV9TTE9XQ0FTRV9PUChvcF9y
ZXNvbHZlX2dsb2JhbCkKQEAgLTUyNSw2ICs1MjksMTAgQEAgdm9pZCBKSVQ6OnByaXZhdGVDb21w
aWxlU2xvd0Nhc2VzKCkKIAogSklUQ29kZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1
bmN0aW9uRW50cnlBcml0eUNoZWNrKQogeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisg
ICAgcHJpbnRmKCJDb21waWxpbmcgSklUIGNvZGUhXG4iKTsKKyNlbmRpZgorICAgIAogI2lmIEVO
QUJMRShWQUxVRV9QUk9GSUxFUikKICAgICBtX2NhbkJlT3B0aW1pemVkID0gbV9jb2RlQmxvY2st
PmNhbkNvbXBpbGVXaXRoREZHKCk7CiAjZW5kaWYKQEAgLTY5Myw4ICs3MDEsMTIgQEAgSklUQ29k
ZSBKSVQ6OnByaXZhdGVDb21waWxlKENvZGVQdHIqIGZ1bgogICAgICAgICBpbmZvLmNhbGxSZXR1
cm5Mb2NhdGlvbiA9IG1fY29kZUJsb2NrLT5zdHJ1Y3R1cmVTdHViSW5mbyhtX21ldGhvZENhbGxD
b21waWxhdGlvbkluZm9baV0ucHJvcGVydHlBY2Nlc3NJbmRleCkuY2FsbFJldHVybkxvY2F0aW9u
OwogICAgIH0KIAotI2lmIEVOQUJMRShERkdfSklUKQotICAgIGlmIChtX2NhbkJlT3B0aW1pemVk
KSB7CisjaWYgRU5BQkxFKERGR19KSVQpIHx8IEVOQUJMRShMTElOVCkKKyAgICBpZiAobV9jYW5C
ZU9wdGltaXplZAorI2lmIEVOQUJMRShMTElOVCkKKyAgICAgICAgfHwgdHJ1ZQorI2VuZGlmCisg
ICAgICAgICkgewogICAgICAgICBDb21wYWN0SklUQ29kZU1hcDo6RW5jb2RlciBqaXRDb2RlTWFw
RW5jb2RlcjsKICAgICAgICAgZm9yICh1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IDA7IGJ5dGVj
b2RlT2Zmc2V0IDwgbV9sYWJlbHMuc2l6ZSgpOyArK2J5dGVjb2RlT2Zmc2V0KSB7CiAgICAgICAg
ICAgICBpZiAobV9sYWJlbHNbYnl0ZWNvZGVPZmZzZXRdLmlzU2V0KCkpCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVENvZGUuaAkocmV2aXNpb24gMTA4MzU4KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9KSVRDb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEpJVENvZGUoKSB7IH0KICNlbmRpZgogICAgIHB1Ymxp
YzoKLSAgICAgICAgZW51bSBKSVRUeXBlIHsgSG9zdENhbGxUaHVuaywgQmFzZWxpbmVKSVQsIERG
R0pJVCB9OworICAgICAgICBlbnVtIEpJVFR5cGUgeyBOb25lLCBIb3N0Q2FsbFRodW5rLCBJbnRl
cnByZXRlclRodW5rLCBCYXNlbGluZUpJVCwgREZHSklUIH07CiAgICAgICAgIAogICAgICAgICBz
dGF0aWMgSklUVHlwZSBib3R0b21UaWVySklUKCkKICAgICAgICAgewpAQCAtNjYsOCArNjYsMTkg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gREZHSklUOwogICAgICAgICB9
CiAgICAgICAgIAorICAgICAgICBzdGF0aWMgYm9vbCBpc09wdGltaXppbmdKSVQoSklUVHlwZSBq
aXRUeXBlKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gaml0VHlwZSA9PSBERkdKSVQ7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN0YXRpYyBib29sIGlzQmFzZWxpbmVDb2Rl
KEpJVFR5cGUgaml0VHlwZSkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGppdFR5cGUg
PT0gSW50ZXJwcmV0ZXJUaHVuayB8fCBqaXRUeXBlID09IEJhc2VsaW5lSklUOworICAgICAgICB9
CisgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIEpJVENvZGUoKQorICAgICAgICAg
ICAgOiBtX2ppdFR5cGUoTm9uZSkKICAgICAgICAgewogICAgICAgICB9CiAKQEAgLTc1LDYgKzg2
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICA6IG1fcmVmKHJlZikKICAgICAgICAg
ICAgICwgbV9qaXRUeXBlKGppdFR5cGUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChq
aXRUeXBlICE9IE5vbmUpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBib29sIG9wZXJh
dG9yICEoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVREcml2ZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5oCShy
ZXZpc2lvbiAxMDgzNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVERyaXZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMywxNSArMzMsMjEgQEAKICNpbmNsdWRlICJCeXRlY29kZUdl
bmVyYXRvci5oIgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgogI2luY2x1ZGUgIkpJVC5oIgorI2lu
Y2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKIAogbmFtZXNwYWNlIEpTQyB7CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+CiBpbmxpbmUgYm9vbCBqaXRDb21waWxlSWZBcHByb3By
aWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIE93blB0cjxDb2RlQmxvY2tUeXBlPiYgY29k
ZUJsb2NrLCBKSVRDb2RlJiBqaXRDb2RlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUpCiB7Cisg
ICAgaWYgKGppdFR5cGUgPT0gY29kZUJsb2NrLT5nZXRKSVRUeXBlKCkpCisgICAgICAgIHJldHVy
biB0cnVlOworICAgIAogICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgCisgICAgY29kZUJsb2NrLT51bmxpbmtJbmNvbWluZ0NhbGxzKCk7
CisgICAgCiAgICAgYm9vbCBkZmdDb21waWxlZCA9IGZhbHNlOwogICAgIGlmIChqaXRUeXBlID09
IEpJVENvZGU6OkRGR0pJVCkKICAgICAgICAgZGZnQ29tcGlsZWQgPSBERkc6OnRyeUNvbXBpbGUo
Z2xvYmFsRGF0YSwgY29kZUJsb2NrLmdldCgpLCBqaXRDb2RlKTsKQEAgLTYyLDkgKzY4LDE0IEBA
IGlubGluZSBib29sIGppdENvbXBpbGVJZkFwcHJvcHJpYXRlKEpTR2wKIAogaW5saW5lIGJvb2wg
aml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEs
IE93blB0cjxGdW5jdGlvbkNvZGVCbG9jaz4mIGNvZGVCbG9jaywgSklUQ29kZSYgaml0Q29kZSwg
TWFjcm9Bc3NlbWJsZXJDb2RlUHRyJiBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIFNoYXJlZFN5bWJv
bFRhYmxlKiYgc3ltYm9sVGFibGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKKyAgICBp
ZiAoaml0VHlwZSA9PSBjb2RlQmxvY2stPmdldEpJVFR5cGUoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgCiAgICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAKKyAgICBjb2RlQmxvY2stPnVubGlua0luY29taW5nQ2FsbHMoKTsKKyAg
ICAKICAgICBib29sIGRmZ0NvbXBpbGVkID0gZmFsc2U7CiAgICAgaWYgKGppdFR5cGUgPT0gSklU
Q29kZTo6REZHSklUKQogICAgICAgICBkZmdDb21waWxlZCA9IERGRzo6dHJ5Q29tcGlsZUZ1bmN0
aW9uKGdsb2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgaml0Q29kZSwgaml0Q29kZVdpdGhBcml0
eUNoZWNrKTsKQEAgLTc5LDcgKzkwLDYgQEAgaW5saW5lIGJvb2wgaml0Q29tcGlsZUZ1bmN0aW9u
SWZBcHByb3ByaQogICAgICAgICB9CiAgICAgICAgIGppdENvZGUgPSBKSVQ6OmNvbXBpbGUoJmds
b2JhbERhdGEsIGNvZGVCbG9jay5nZXQoKSwgJmppdENvZGVXaXRoQXJpdHlDaGVjayk7CiAgICAg
fQotICAgIAogICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0aEFy
aXR5Q2hlY2spOwogICAgIAogICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRFeGNlcHRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCShyZXZpc2lvbiAxMDgzNTgpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVEV4Y2VwdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC02NCw3ICs2NCw3IEBAIEV4Y2VwdGlvbkhhbmRsZXIgZ2VuZXJpY1Rocm93KEpTR2xvYmFsRGEK
IAogRXhjZXB0aW9uSGFuZGxlciBqaXRUaHJvdyhKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEsIEV4
ZWNTdGF0ZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBSZXR1cm5BZGRyZXNz
UHRyIGZhdWx0TG9jYXRpb24pCiB7Ci0gICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9iYWxEYXRh
LCBjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygpLT5ieXRl
Y29kZU9mZnNldChmYXVsdExvY2F0aW9uKSk7CisgICAgcmV0dXJuIGdlbmVyaWNUaHJvdyhnbG9i
YWxEYXRhLCBjYWxsRnJhbWUsIGV4Y2VwdGlvblZhbHVlLCBjYWxsRnJhbWUtPmNvZGVCbG9jaygp
LT5ieXRlY29kZU9mZnNldChjYWxsRnJhbWUsIGZhdWx0TG9jYXRpb24pKTsKIH0KIAogfQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRJbmxpbmVNZXRob2RzLmgJKHJldmlz
aW9uIDEwODM1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUSW5saW5lTWV0aG9k
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNjUsOCArMjY1LDEzIEBAIEFMV0FZU19JTkxJTkUgdm9p
ZCBKSVQ6OnJlc3RvcmVBcmd1bWVudFIKIEFMV0FZU19JTkxJTkUgdm9pZCBKSVQ6OnVwZGF0ZVRv
cENhbGxGcmFtZSgpCiB7CiAgICAgQVNTRVJUKHN0YXRpY19jYXN0PGludD4obV9ieXRlY29kZU9m
ZnNldCkgPj0gMCk7Ci0gICAgaWYgKG1fYnl0ZWNvZGVPZmZzZXQpCisgICAgaWYgKG1fYnl0ZWNv
ZGVPZmZzZXQpIHsKKyNpZiBVU0UoSlNWQUxVRTMyXzY0KQorICAgICAgICBzdG9yZVB0cihUcnVz
dGVkSW1tUHRyKG1fY29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgbV9ieXRlY29k
ZU9mZnNldCArIDEpLCBpbnRUYWdGb3IoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KSk7Cisj
ZWxzZQogICAgICAgICBzdG9yZTMyKEltbTMyKG1fYnl0ZWNvZGVPZmZzZXQgKyAxKSwgaW50VGFn
Rm9yKFJlZ2lzdGVyRmlsZTo6QXJndW1lbnRDb3VudCkpOworI2VuZGlmCisgICAgfQogICAgIHN0
b3JlUHRyKGNhbGxGcmFtZVJlZ2lzdGVyLCAmbV9nbG9iYWxEYXRhLT50b3BDYWxsRnJhbWUpOwog
fQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVFN0dWJzLmNwcAkocmV2aXNpb24g
MTA4MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE0NDYsNiArMTQ0Niw3IEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQs
IG9wX3B1dF9ieV9pZF8KICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdChjYWxsRnJhbWUtPmNvZGVC
bG9jaygpLT5pc1N0cmljdE1vZGUoKSk7CiAgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBzdGFja0Zy
YW1lLmFyZ3NbMF0uanNWYWx1ZSgpOwogICAgIEFTU0VSVChiYXNlVmFsdWUuaXNPYmplY3QoKSk7
CisgICAgCiAgICAgYXNPYmplY3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGNhbGxGcmFtZS0+Z2xv
YmFsRGF0YSgpLCBpZGVudCwgc3RhY2tGcmFtZS5hcmdzWzJdLmpzVmFsdWUoKSwgc2xvdCk7CiAg
ICAgCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBzdGFja0ZyYW1lLmNhbGxGcmFtZS0+Y29k
ZUJsb2NrKCk7CkBAIC0xOTMxLDcgKzE5MzIsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElPTih2b2lk
LCBvcHRpbWl6ZV9mcm9tCiAgICAgdW5zaWduZWQgYnl0ZWNvZGVJbmRleCA9IHN0YWNrRnJhbWUu
YXJnc1swXS5pbnQzMigpOwogCiAjaWYgRU5BQkxFKEpJVF9WRVJCT1NFX09TUikKLSAgICBkYXRh
TG9nKCJFbnRlcmVkIG9wdGltaXplX2Zyb21fbG9vcCB3aXRoIGV4ZWN1dGVDb3VudGVyID0gJWQs
IHJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gJXUsIG9wdGltaXphdGlvbkRlbGF5Q291bnRl
ciA9ICV1XG4iLCBjb2RlQmxvY2stPmppdEV4ZWN1dGVDb3VudGVyKCksIGNvZGVCbG9jay0+cmVv
cHRpbWl6YXRpb25SZXRyeUNvdW50ZXIoKSwgY29kZUJsb2NrLT5vcHRpbWl6YXRpb25EZWxheUNv
dW50ZXIoKSk7CisgICAgZGF0YUxvZygiJXA6IEVudGVyZWQgb3B0aW1pemVfZnJvbV9sb29wIHdp
dGggZXhlY3V0ZUNvdW50ZXIgPSAlZCwgcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXIgPSAldSwg
b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyID0gJXVcbiIsIGNvZGVCbG9jaywgY29kZUJsb2NrLT5q
aXRFeGVjdXRlQ291bnRlcigpLCBjb2RlQmxvY2stPnJlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVy
KCksIGNvZGVCbG9jay0+b3B0aW1pemF0aW9uRGVsYXlDb3VudGVyKCkpOwogI2VuZGlmCiAKICAg
ICBpZiAoY29kZUJsb2NrLT5oYXNPcHRpbWl6ZWRSZXBsYWNlbWVudCgpKSB7CkBAIC0yMTg2LDQ1
ICsyMTg3LDEzIEBAIERFRklORV9TVFVCX0ZVTkNUSU9OKHZvaWQqLCBvcF9jb25zdHJ1Y3QKICAg
ICByZXR1cm4gcmVzdWx0OwogfQogCi1pbmxpbmUgQ2FsbEZyYW1lKiBhcml0eUNoZWNrRm9yKENh
bGxGcmFtZSogY2FsbEZyYW1lLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgQ29kZVNwZWNp
YWxpemF0aW9uS2luZCBraW5kKQotewotICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rp
b24oY2FsbEZyYW1lLT5jYWxsZWUoKSk7Ci0gICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0
aW9uKCkpOwotICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRh
YmxlKCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOwotICAgIGludCBhcmd1bWVudENvdW50
SW5jbHVkaW5nVGhpcyA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKTsK
LQotICAgIC8vIFRoaXMgZW5zdXJlcyBlbm91Z2ggc3BhY2UgZm9yIHRoZSB3b3JzdCBjYXNlIHNj
ZW5hcmlvIG9mIHplcm8gYXJndW1lbnRzIHBhc3NlZCBieSB0aGUgY2FsbGVyLgotICAgIGlmICgh
cmVnaXN0ZXJGaWxlLT5ncm93KGNhbGxGcmFtZS0+cmVnaXN0ZXJzKCkgKyBuZXdDb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSArIG5ld0NvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMpKQot
ICAgICAgICByZXR1cm4gMDsKLQotICAgIEFTU0VSVChhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyA8IG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsKLQotICAgIC8vIFRvbyBmZXcgYXJn
dW1lbnRzIC0tIGNvcHkgY2FsbCBmcmFtZSBhbmQgYXJndW1lbnRzLCB0aGVuIGZpbGwgaW4gbWlz
c2luZyBhcmd1bWVudHMgd2l0aCB1bmRlZmluZWQuCi0gICAgc2l6ZV90IGRlbHRhID0gbmV3Q29k
ZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkgLSBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpczsKLSAg
ICBSZWdpc3Rlciogc3JjID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKTsKLSAgICBSZWdpc3Rlciog
ZHN0ID0gY2FsbEZyYW1lLT5yZWdpc3RlcnMoKSArIGRlbHRhOwotCi0gICAgaW50IGk7Ci0gICAg
aW50IGVuZCA9IC1DYWxsRnJhbWU6Om9mZnNldEZvcihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
cyk7Ci0gICAgZm9yIChpID0gLTE7IGkgPj0gZW5kOyAtLWkpCi0gICAgICAgIGRzdFtpXSA9IHNy
Y1tpXTsKLQotICAgIGVuZCAtPSBkZWx0YTsKLSAgICBmb3IgKCA7IGkgPj0gZW5kOyAtLWkpCi0g
ICAgICAgIGRzdFtpXSA9IGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBDYWxsRnJhbWUqIG5ld0NhbGxG
cmFtZSA9IENhbGxGcmFtZTo6Y3JlYXRlKGRzdCk7Ci0gICAgQVNTRVJUKCh2b2lkKiluZXdDYWxs
RnJhbWUgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7Ci0gICAgcmV0dXJuIG5ld0NhbGxGcmFtZTsK
LX0KLQogREVGSU5FX1NUVUJfRlVOQ1RJT04odm9pZCosIG9wX2NhbGxfYXJpdHlDaGVjaykKIHsK
ICAgICBTVFVCX0lOSVRfU1RBQ0tfRlJBTUUoc3RhY2tGcmFtZSk7CiAKICAgICBDYWxsRnJhbWUq
IGNhbGxGcmFtZSA9IHN0YWNrRnJhbWUuY2FsbEZyYW1lOwogCi0gICAgQ2FsbEZyYW1lKiBuZXdD
YWxsRnJhbWUgPSBhcml0eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZp
bGUsIENvZGVGb3JDYWxsKTsKKyAgICBDYWxsRnJhbWUqIG5ld0NhbGxGcmFtZSA9IENvbW1vblNs
b3dQYXRoczo6YXJpdHlDaGVja0ZvcihjYWxsRnJhbWUsIHN0YWNrRnJhbWUucmVnaXN0ZXJGaWxl
LCBDb2RlRm9yQ2FsbCk7CiAgICAgaWYgKCFuZXdDYWxsRnJhbWUpCiAgICAgICAgIHJldHVybiB0
aHJvd0V4Y2VwdGlvbkZyb21PcENhbGw8dm9pZCo+KHN0YWNrRnJhbWUsIGNhbGxGcmFtZSwgU1RV
Ql9SRVRVUk5fQUREUkVTUywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGNhbGxGcmFtZS0+Y2Fs
bGVyRnJhbWUoKSkpOwogCkBAIC0yMjM3LDcgKzIyMDYsNyBAQCBERUZJTkVfU1RVQl9GVU5DVElP
Tih2b2lkKiwgb3BfY29uc3RydWN0CiAKICAgICBDYWxsRnJhbWUqIGNhbGxGcmFtZSA9IHN0YWNr
RnJhbWUuY2FsbEZyYW1lOwogCi0gICAgQ2FsbEZyYW1lKiBuZXdDYWxsRnJhbWUgPSBhcml0eUNo
ZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDb25zdHJ1
Y3QpOworICAgIENhbGxGcmFtZSogbmV3Q2FsbEZyYW1lID0gQ29tbW9uU2xvd1BhdGhzOjphcml0
eUNoZWNrRm9yKGNhbGxGcmFtZSwgc3RhY2tGcmFtZS5yZWdpc3RlckZpbGUsIENvZGVGb3JDb25z
dHJ1Y3QpOwogICAgIGlmICghbmV3Q2FsbEZyYW1lKQogICAgICAgICByZXR1cm4gdGhyb3dFeGNl
cHRpb25Gcm9tT3BDYWxsPHZvaWQqPihzdGFja0ZyYW1lLCBjYWxsRnJhbWUsIFNUVUJfUkVUVVJO
X0FERFJFU1MsIGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihjYWxsRnJhbWUtPmNhbGxlckZyYW1l
KCkpKTsKIApAQCAtMjMxNCw2ICsyMjgzLDcgQEAgREVGSU5FX1NUVUJfRlVOQ1RJT04oRW5jb2Rl
ZEpTVmFsdWUsIG9wXwogICAgIFNUVUJfSU5JVF9TVEFDS19GUkFNRShzdGFja0ZyYW1lKTsKIAog
ICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gc3RhY2tGcmFtZS5jYWxsRnJhbWU7CisgICAgCiAg
ICAgSlNWYWx1ZSBjYWxsZWUgPSBjYWxsRnJhbWUtPmNhbGxlZUFzVmFsdWUoKTsKIAogICAgIENh
bGxEYXRhIGNhbGxEYXRhOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVi
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUU3R1YnMuaAko
cmV2aXNpb24gMTA4MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRTdHVicy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw2IEBACiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0
b3JzLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAotI2lmIEVOQUJMRShKSVQpCi0KIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgc3RydWN0IFN0cnVjdHVyZVN0dWJJbmZvOwpAQCAtMjYzLDYg
KzI2MSw4IEBAIG5hbWVzcGFjZSBKU0MgewogCiAjZGVmaW5lIEpJVFNUQUNLRlJBTUVfQVJHU19J
TkRFWCAoT0JKRUNUX09GRlNFVE9GKEpJVFN0YWNrRnJhbWUsIGFyZ3MpIC8gc2l6ZW9mKHZvaWQq
KSkKIAorI2lmIEVOQUJMRShKSVQpCisKICNkZWZpbmUgU1RVQl9BUkdTX0RFQ0xBUkFUSU9OIHZv
aWQqKiBhcmdzCiAjZGVmaW5lIFNUVUJfQVJHUyAoYXJncykKIApAQCAtNDU2LDggKzQ1Niw4IEBA
IGV4dGVybiAiQyIgewogICAgIHZvaWQqIEpJVF9TVFVCIGN0aV92bV90aHJvdyhTVFVCX0FSR1Nf
REVDTEFSQVRJT04pOwogfSAvLyBleHRlcm4gIkMiCiAKLX0gLy8gbmFtZXNwYWNlIEpTQwotCiAj
ZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAorfSAvLyBuYW1lc3BhY2UgSlNDCisKICNlbmRpZiAvLyBK
SVRTdHVic19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50ZXJmYWNlSklU
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KU0ludGVyZmFjZUpJ
VC5oCShyZXZpc2lvbiAxMDgzNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pTSW50
ZXJmYWNlSklULmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDggKzI2LDEwIEBACiAjaWZuZGVmIEpT
SW50ZXJmYWNlSklUX2gKICNkZWZpbmUgSlNJbnRlcmZhY2VKSVRfaAogCisjaW5jbHVkZSAiQnl0
ZWNvZGVDb252ZW50aW9ucy5oIgogI2luY2x1ZGUgIkpJVENvZGUuaCIKICNpbmNsdWRlICJKSVRT
dHVicy5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCiAjaW5jbHVkZSAiSlNWYWx1ZS5oIgogI2lu
Y2x1ZGUgIk1hY3JvQXNzZW1ibGVyLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRDb21tb24uaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludENvbW1vbi5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgTExJbnRDb21tb25faAorI2RlZmluZSBMTEludENvbW1vbl9oCisK
Ky8vIFByaW50IGV2ZXJ5IGluc3RydWN0aW9uIGV4ZWN1dGVkLgorI2RlZmluZSBMTElOVF9FWEVD
VVRJT05fVFJBQ0lORyAwCisKKy8vIFByaW50IHNvbWUgaW5mb3JtYXRpb24gZm9yIHNvbWUgb2Yg
dGhlIG1vcmUgc3VidGxlIHNsb3cgcGF0aHMuCisjZGVmaW5lIExMSU5UX1NMT1dfUEFUSF9UUkFD
SU5HIDAKKworLy8gRGlzYWJsZSBpbmxpbmUgYWxsb2NhdGlvbiBpbiB0aGUgaW50ZXJwcmV0ZXIu
IFRoaXMgaXMgZ3JlYXQgaWYgeW91J3JlIGNoYW5naW5nCisvLyBob3cgdGhlIEdDIGFsbG9jYXRl
cy4KKyNkZWZpbmUgTExJTlRfQUxXQVlTX0FMTE9DQVRFX1NMT1cgMAorCisvLyBFbmFibGUgT1NS
IGludG8gdGhlIEpJVC4gRGlzYWJsaW5nIHRoaXMgd2hpbGUgdGhlIExMSW50IGlzIGVuYWJsZWQg
ZWZmZWN0aXZlbHkKKy8vIHR1cm5zIG9mZiBhbGwgSklUJ2luZywgc2luY2UgaW4gTExJbnQncyBw
YXJsYW5jZSwgT1NSIHN1YnN1bWVzIGFueSBmb3JtIG9mIEpJVAorLy8gaW52b2NhdGlvbi4KKyNp
ZiBFTkFCTEUoSklUKQorI2RlZmluZSBMTElOVF9PU1JfVE9fSklUIDEKKyNlbHNlCisjZGVmaW5l
IExMSU5UX09TUl9UT19KSVQgMAorI2VuZGlmCisKKyNlbmRpZiAvLyBMTEludENvbW1vbl9oCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RGF0YS5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTE2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJMTEludERhdGEu
aCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkJ5dGVjb2RlQ29udmVudGlvbnMu
aCIKKyNpbmNsdWRlICJDb2RlVHlwZS5oIgorI2luY2x1ZGUgIkluc3RydWN0aW9uLmgiCisjaW5j
bHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1ZGUgIk9wY29kZS5oIgorCituYW1l
c3BhY2UgSlNDIHsgbmFtZXNwYWNlIExMSW50IHsKKworRGF0YTo6RGF0YSgpCisgICAgOiBtX2V4
Y2VwdGlvbkluc3RydWN0aW9ucyhuZXcgSW5zdHJ1Y3Rpb25bbWF4T3Bjb2RlTGVuZ3RoICsgMV0p
CisgICAgLCBtX29wY29kZU1hcChuZXcgT3Bjb2RlW251bU9wY29kZUlEc10pCit7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgPCBtYXhPcGNvZGVMZW5ndGggKyAxOyArK2kpCisgICAgICAgIG1fZXhj
ZXB0aW9uSW5zdHJ1Y3Rpb25zW2ldLnUucG9pbnRlciA9IGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxs
aW50X3Rocm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmUpOworI2RlZmluZSBPUENPREVfRU5U
Ulkob3Bjb2RlLCBsZW5ndGgpIG1fb3Bjb2RlTWFwW29wY29kZV0gPSBiaXR3aXNlX2Nhc3Q8dm9p
ZCo+KCZsbGludF8jI29wY29kZSk7CisgICAgRk9SX0VBQ0hfT1BDT0RFX0lEKE9QQ09ERV9FTlRS
WSk7CisjdW5kZWYgT1BDT0RFX0VOVFJZCit9CisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlmCit2b2lkIERhdGE6OnBlcmZvcm1Bc3NlcnRp
b25zKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSkKK3sKKyAgICBVTlVTRURfUEFSQU0oZ2xvYmFs
RGF0YSk7CisgICAgCisgICAgLy8gQXNzZXJ0aW9ucyB0byBtYXRjaCBMb3dMZXZlbEludGVycHJl
dGVyLmFzbS4gIElmIHlvdSBjaGFuZ2UgYW55IG9mIHRoaXMgY29kZSwgYmUKKyAgICAvLyBwcmVw
YXJlZCB0byBjaGFuZ2UgTG93TGV2ZWxJbnRlcnByZXRlci5hc20gYXMgd2VsbCEhCisgICAgQVNT
RVJUKFJlZ2lzdGVyRmlsZTo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSAqIDggPT0gNDgpOworICAgIEFT
U0VSVChSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQgKiA4ID09IC00OCk7CisgICAgQVNTRVJU
KFJlZ2lzdGVyRmlsZTo6Q2FsbGVyRnJhbWUgKiA4ID09IC00MCk7CisgICAgQVNTRVJUKFJlZ2lz
dGVyRmlsZTo6Q2FsbGVlICogOCA9PSAtMzIpOworICAgIEFTU0VSVChSZWdpc3RlckZpbGU6OlNj
b3BlQ2hhaW4gKiA4ID09IC0yNCk7CisgICAgQVNTRVJUKFJlZ2lzdGVyRmlsZTo6UmV0dXJuUEMg
KiA4ID09IC0xNik7CisgICAgQVNTRVJUKFJlZ2lzdGVyRmlsZTo6Q29kZUJsb2NrICogOCA9PSAt
OCk7CisgICAgQVNTRVJUKENhbGxGcmFtZTo6YXJndW1lbnRPZmZzZXRJbmNsdWRpbmdUaGlzKDAp
ID09IC1SZWdpc3RlckZpbGU6OkNhbGxGcmFtZUhlYWRlclNpemUgLSAxKTsKKyNpZiBDUFUoQklH
X0VORElBTikKKyAgICBBU1NFUlQoT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0
b3IsIGFzQml0cy50YWcpID09IDApOworICAgIEFTU0VSVChPQkpFQ1RfT0ZGU0VUT0YoRW5jb2Rl
ZFZhbHVlRGVzY3JpcHRvciwgYXNCaXRzLnBheWxvYWQpID09IDQpOworI2Vsc2UKKyAgICBBU1NF
UlQoT0JKRUNUX09GRlNFVE9GKEVuY29kZWRWYWx1ZURlc2NyaXB0b3IsIGFzQml0cy50YWcpID09
IDQpOworICAgIEFTU0VSVChPQkpFQ1RfT0ZGU0VUT0YoRW5jb2RlZFZhbHVlRGVzY3JpcHRvciwg
YXNCaXRzLnBheWxvYWQpID09IDApOworI2VuZGlmCisgICAgQVNTRVJUKEpTVmFsdWU6OkludDMy
VGFnID09IC0xKTsKKyAgICBBU1NFUlQoSlNWYWx1ZTo6Qm9vbGVhblRhZyA9PSAtMik7CisgICAg
QVNTRVJUKEpTVmFsdWU6Ok51bGxUYWcgPT0gLTMpOworICAgIEFTU0VSVChKU1ZhbHVlOjpVbmRl
ZmluZWRUYWcgPT0gLTQpOworICAgIEFTU0VSVChKU1ZhbHVlOjpDZWxsVGFnID09IC01KTsKKyAg
ICBBU1NFUlQoSlNWYWx1ZTo6RW1wdHlWYWx1ZVRhZyA9PSAtNik7CisgICAgQVNTRVJUKEpTVmFs
dWU6OkRlbGV0ZWRWYWx1ZVRhZyA9PSAtNyk7CisgICAgQVNTRVJUKEpTVmFsdWU6Okxvd2VzdFRh
ZyA9PSAtNyk7CisgICAgQVNTRVJUKFN0cmluZ1R5cGUgPT0gNSk7CisgICAgQVNTRVJUKE9iamVj
dFR5cGUgPT0gMTMpOworICAgIEFTU0VSVChNYXNxdWVyYWRlc0FzVW5kZWZpbmVkID09IDEpOwor
ICAgIEFTU0VSVChJbXBsZW1lbnRzSGFzSW5zdGFuY2UgPT0gMik7CisgICAgQVNTRVJUKEltcGxl
bWVudHNEZWZhdWx0SGFzSW5zdGFuY2UgPT0gOCk7CisgICAgQVNTRVJUKCZnbG9iYWxEYXRhLmhl
YXAuYWxsb2NhdG9yRm9yT2JqZWN0V2l0aG91dERlc3RydWN0b3Ioc2l6ZW9mKEpTRmluYWxPYmpl
Y3QpKSAtICZnbG9iYWxEYXRhLmhlYXAuZmlyc3RBbGxvY2F0b3JXaXRob3V0RGVzdHJ1Y3RvcnMo
KSA9PSAzKTsKKyAgICBBU1NFUlQoRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXggPT0gMHg0MDAw
MDAwMCk7CisgICAgQVNTRVJUKEdsb2JhbENvZGUgPT0gMCk7CisgICAgQVNTRVJUKEV2YWxDb2Rl
ID09IDEpOworICAgIEFTU0VSVChGdW5jdGlvbkNvZGUgPT0gMik7CisgICAgCisgICAgLy8gRklY
TUU6IG1ha2UgdGhlc2UgYXNzZXJ0aW9ucyBsZXNzIGhvcnJpYmxlLgorI2lmICFBU1NFUlRfRElT
QUJMRUQKKyAgICBWZWN0b3I8aW50PiB0ZXN0VmVjdG9yOworICAgIHRlc3RWZWN0b3IucmVzaXpl
KDQyKTsKKyAgICBBU1NFUlQoYml0d2lzZV9jYXN0PHNpemVfdCo+KCZ0ZXN0VmVjdG9yKVswXSA9
PSA0Mik7CisgICAgQVNTRVJUKGJpdHdpc2VfY2FzdDxpbnQqKj4oJnRlc3RWZWN0b3IpWzFdID09
IHRlc3RWZWN0b3IuYmVnaW4oKSk7CisjZW5kaWYKKworICAgIEFTU0VSVChTdHJpbmdJbXBsOjpz
X2hhc2hGbGFnOEJpdEJ1ZmZlciA9PSA2NCk7Cit9CisjaWYgQ09NUElMRVIoQ0xBTkcpCisjcHJh
Z21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCisjZW5kaWYKKworRGF0YTo6fkRhdGEoKQoreworICAg
IGRlbGV0ZVtdIG1fZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zOworICAgIGRlbGV0ZVtdIG1fb3Bjb2Rl
TWFwOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJM
RShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRhLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludERhdGFfaAorI2RlZmluZSBMTEludERhdGFf
aAorCisjaW5jbHVkZSAiT3Bjb2RlLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBKU0dsb2JhbERhdGE7CitzdHJ1Y3QgSW5zdHJ1Y3Rpb247
CisKK25hbWVzcGFjZSBMTEludCB7CisKKyNpZiBFTkFCTEUoTExJTlQpCitjbGFzcyBEYXRhIHsK
K3B1YmxpYzoKKyAgICBEYXRhKCk7CisgICAgfkRhdGEoKTsKKyAgICAKKyAgICB2b2lkIHBlcmZv
cm1Bc3NlcnRpb25zKEpTR2xvYmFsRGF0YSYpOworICAgIAorICAgIEluc3RydWN0aW9uKiBleGNl
cHRpb25JbnN0cnVjdGlvbnMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fZXhjZXB0aW9uSW5z
dHJ1Y3Rpb25zOworICAgIH0KKyAgICAKKyAgICBPcGNvZGUqIG9wY29kZU1hcCgpCisgICAgewor
ICAgICAgICByZXR1cm4gbV9vcGNvZGVNYXA7CisgICAgfQorcHJpdmF0ZToKKyAgICBJbnN0cnVj
dGlvbiogbV9leGNlcHRpb25JbnN0cnVjdGlvbnM7CisgICAgT3Bjb2RlKiBtX29wY29kZU1hcDsK
K307CisjZWxzZSAvLyBFTkFCTEUoTExJTlQpCisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFn
bWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3Jl
ZCAiLVdtaXNzaW5nLW5vcmV0dXJuIgorI2VuZGlmCisKK2NsYXNzIERhdGEgeworcHVibGljOgor
ICAgIHZvaWQgcGVyZm9ybUFzc2VydGlvbnMoSlNHbG9iYWxEYXRhJikgeyB9CisKKyAgICBJbnN0
cnVjdGlvbiogZXhjZXB0aW9uSW5zdHJ1Y3Rpb25zKCkKKyAgICB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgT3Bjb2Rl
KiBvcGNvZGVNYXAoKQorICAgIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KK307CisKKyNpZiBDT01QSUxFUihDTEFORykKKyNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQor
Cit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIExMSW50RGF0YV9oCisK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEVudHJ5cG9pbnRzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRyeXBvaW50
cy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRF
bnRyeXBvaW50cy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2lu
Y2x1ZGUgIkpJVENvZGUuaCIKKyNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKKyNpbmNsdWRlICJM
TEludFRodW5rcy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNw
YWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBvaW50
KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kLCBK
SVRDb2RlJiBqaXRDb2RlLCBNYWNyb0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2spCit7Cisg
ICAgaWYgKCFnbG9iYWxEYXRhLmNhblVzZUpJVCgpKSB7CisgICAgICAgIGlmIChraW5kID09IENv
ZGVGb3JDYWxsKSB7CisgICAgICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9u
KE1hY3JvQXNzZW1ibGVyQ29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNz
ZW1ibGVyQ29kZVB0cihiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9mdW5jdGlvbl9mb3JfY2Fs
bF9wcm9sb2d1ZSkpKSk7CisgICAgICAgICAgICBhcml0eUNoZWNrID0gTWFjcm9Bc3NlbWJsZXJD
b2RlUHRyKGJpdHdpc2VfY2FzdDx2b2lkKj4oJmxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5
X2NoZWNrKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBBU1NF
UlQoa2luZCA9PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6
Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNvZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29k
ZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSkpKSk7CisgICAgICAgIGFyaXR5Q2hlY2sgPSBN
YWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZnVuY3Rpb25f
Zm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaykpOworICAgICAgICByZXR1cm47CisgICAgfQorICAg
IAorICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIGppdENvZGUgPSBKSVRD
b2RlKGdsb2JhbERhdGEuZ2V0Q1RJU3R1YihmdW5jdGlvbkZvckNhbGxFbnRyeVRodW5rR2VuZXJh
dG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgICAgIGFyaXR5Q2hlY2sgPSBn
bG9iYWxEYXRhLmdldENUSVN0dWIoZnVuY3Rpb25Gb3JDYWxsQXJpdHlDaGVja1RodW5rR2VuZXJh
dG9yKS5jb2RlKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBBU1NFUlQoa2luZCA9
PSBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdl
dENUSVN0dWIoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29k
ZTo6SW50ZXJwcmV0ZXJUaHVuayk7CisgICAgYXJpdHlDaGVjayA9IGdsb2JhbERhdGEuZ2V0Q1RJ
U3R1YihmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcikuY29kZSgp
OworfQorCit2b2lkIGdldEV2YWxFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwg
SklUQ29kZSYgaml0Q29kZSkKK3sKKyAgICBpZiAoIWdsb2JhbERhdGEuY2FuVXNlSklUKCkpIHsK
KyAgICAgICAgaml0Q29kZSA9IEpJVENvZGU6Okhvc3RGdW5jdGlvbihNYWNyb0Fzc2VtYmxlckNv
ZGVSZWY6OmNyZWF0ZVNlbGZNYW5hZ2VkQ29kZVJlZihNYWNyb0Fzc2VtYmxlckNvZGVQdHIoYml0
d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfZXZhbF9wcm9sb2d1ZSkpKSk7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisgICAgCisgICAgaml0Q29kZSA9IEpJVENvZGUoZ2xvYmFsRGF0YS5nZXRDVElT
dHViKGV2YWxFbnRyeVRodW5rR2VuZXJhdG9yKSwgSklUQ29kZTo6SW50ZXJwcmV0ZXJUaHVuayk7
Cit9CisKK3ZvaWQgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRh
LCBKSVRDb2RlJiBqaXRDb2RlKQoreworICAgIGlmICghZ2xvYmFsRGF0YS5jYW5Vc2VKSVQoKSkg
eworICAgICAgICBqaXRDb2RlID0gSklUQ29kZTo6SG9zdEZ1bmN0aW9uKE1hY3JvQXNzZW1ibGVy
Q29kZVJlZjo6Y3JlYXRlU2VsZk1hbmFnZWRDb2RlUmVmKE1hY3JvQXNzZW1ibGVyQ29kZVB0cihi
aXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9wcm9ncmFtX3Byb2xvZ3VlKSkpKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKyAgICAKKyAgICBqaXRDb2RlID0gSklUQ29kZShnbG9iYWxEYXRhLmdl
dENUSVN0dWIocHJvZ3JhbUVudHJ5VGh1bmtHZW5lcmF0b3IpLCBKSVRDb2RlOjpJbnRlcnByZXRl
clRodW5rKTsKK30KKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAvLyBF
TkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFbnRy
eXBvaW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEVudHJ5cG9pbnRzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxp
bnQvTExJbnRFbnRyeXBvaW50cy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTExJbnRF
bnRyeXBvaW50c19oCisjZGVmaW5lIExMSW50RW50cnlwb2ludHNfaAorCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJDb2RlU3BlY2lh
bGl6YXRpb25LaW5kLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFdmFsQ29kZUJsb2Nr
OworY2xhc3MgSklUQ29kZTsKK2NsYXNzIEpTR2xvYmFsRGF0YTsKK2NsYXNzIE1hY3JvQXNzZW1i
bGVyQ29kZVB0cjsKK2NsYXNzIE1hY3JvQXNzZW1ibGVyQ29kZVJlZjsKK2NsYXNzIFByb2dyYW1D
b2RlQmxvY2s7CisKK25hbWVzcGFjZSBMTEludCB7CisKK3ZvaWQgZ2V0RnVuY3Rpb25FbnRyeXBv
aW50KEpTR2xvYmFsRGF0YSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIEpJVENvZGUmLCBNYWNy
b0Fzc2VtYmxlckNvZGVQdHImIGFyaXR5Q2hlY2spOwordm9pZCBnZXRFdmFsRW50cnlwb2ludChK
U0dsb2JhbERhdGEmLCBKSVRDb2RlJik7Cit2b2lkIGdldFByb2dyYW1FbnRyeXBvaW50KEpTR2xv
YmFsRGF0YSYsIEpJVENvZGUmKTsKKworaW5saW5lIHZvaWQgZ2V0RW50cnlwb2ludChKU0dsb2Jh
bERhdGEmIGdsb2JhbERhdGEsIEV2YWxDb2RlQmxvY2sqLCBKSVRDb2RlJiBqaXRDb2RlKQorewor
ICAgIGdldEV2YWxFbnRyeXBvaW50KGdsb2JhbERhdGEsIGppdENvZGUpOworfQorCitpbmxpbmUg
dm9pZCBnZXRFbnRyeXBvaW50KEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgUHJvZ3JhbUNvZGVC
bG9jayosIEpJVENvZGUmIGppdENvZGUpCit7CisgICAgZ2V0UHJvZ3JhbUVudHJ5cG9pbnQoZ2xv
YmFsRGF0YSwgaml0Q29kZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisj
ZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorCisjZW5kaWYgLy8gTExJbnRFbnRyeXBvaW50c19oCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRFeGNlcHRpb25zLmNw
cAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludEV4Y2Vw
dGlvbnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJMTEludEV4Y2VwdGlvbnMuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUg
IkNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgorI2luY2x1ZGUgIkluc3RydWN0
aW9uLmgiCisjaW5jbHVkZSAiSklURXhjZXB0aW9ucy5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9u
LmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorCituYW1lc3BhY2UgSlNDIHsg
bmFtZXNwYWNlIExMSW50IHsKKwordm9pZCBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoRXhlY1N0
YXRlKiBleGVjLCBSZXR1cm5BZGRyZXNzUHRyIHBjKQoreworICAgIEpTR2xvYmFsRGF0YSogZ2xv
YmFsRGF0YSA9ICZleGVjLT5nbG9iYWxEYXRhKCk7CisjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJ
TkcKKyAgICBkYXRhTG9nKCJUaHJvd2luZyBleGNlcHRpb24gJXMuXG4iLCBnbG9iYWxEYXRhLT5l
eGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coCisgICAg
ICAgIGdsb2JhbERhdGEsIGV4ZWMsIGdsb2JhbERhdGEtPmV4Y2VwdGlvbiwKKyAgICAgICAgZXhl
Yy0+Y29kZUJsb2NrKCktPmJ5dGVjb2RlT2Zmc2V0KGV4ZWMsIHBjKSk7Cit9CisKK0luc3RydWN0
aW9uKiByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKEV4ZWNTdGF0ZSogZXhlYykKK3sK
KyAgICByZXR1cm4gZXhlYy0+Z2xvYmFsRGF0YSgpLmxsaW50RGF0YS5leGNlcHRpb25JbnN0cnVj
dGlvbnMoKTsKK30KKworSW5zdHJ1Y3Rpb24qIHJldHVyblRvVGhyb3coRXhlY1N0YXRlKiBleGVj
LCBJbnN0cnVjdGlvbiogcGMpCit7CisgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gJmV4
ZWMtPmdsb2JhbERhdGEoKTsKKyNpZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORworICAgIGRhdGFM
b2coIlRocm93aW5nIGV4Y2VwdGlvbiAlcyAocmV0dXJuVG9UaHJvdykuXG4iLCBnbG9iYWxEYXRh
LT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICBnZW5lcmljVGhyb3coZ2xv
YmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBwYyAtIGV4ZWMtPmNvZGVCbG9j
aygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAKKyAgICByZXR1cm4gZ2xvYmFsRGF0
YS0+bGxpbnREYXRhLmV4Y2VwdGlvbkluc3RydWN0aW9ucygpOworfQorCit2b2lkKiBjYWxsVG9U
aHJvdyhFeGVjU3RhdGUqIGV4ZWMsIEluc3RydWN0aW9uKiBwYykKK3sKKyAgICBKU0dsb2JhbERh
dGEqIGdsb2JhbERhdGEgPSAmZXhlYy0+Z2xvYmFsRGF0YSgpOworI2lmIExMSU5UX1NMT1dfUEFU
SF9UUkFDSU5HCisgICAgZGF0YUxvZygiVGhyb3dpbmcgZXhjZXB0aW9uICVzIChjYWxsVG9UaHJv
dykuXG4iLCBnbG9iYWxEYXRhLT5leGNlcHRpb24uZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAg
ICBnZW5lcmljVGhyb3coZ2xvYmFsRGF0YSwgZXhlYywgZ2xvYmFsRGF0YS0+ZXhjZXB0aW9uLCBw
YyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKTsKKyAgICAKKyAg
ICByZXR1cm4gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfdGhyb3dfZHVyaW5nX2NhbGxfdHJh
bXBvbGluZSk7Cit9CisKK30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8g
RU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50RXhj
ZXB0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dEV4Y2VwdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGlu
dC9MTEludEV4Y2VwdGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExMSW50RXhj
ZXB0aW9uc19oCisjZGVmaW5lIExMSW50RXhjZXB0aW9uc19oCisKKyNpbmNsdWRlIDx3dGYvUGxh
dGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBFTkFCTEUoTExJ
TlQpCisKKyNpbmNsdWRlICJNYWNyb0Fzc2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK2NsYXNzIEV4ZWNTdGF0ZTsKK3N0cnVjdCBJbnN0cnVjdGlvbjsKKworbmFtZXNwYWNl
IExMSW50IHsKKworLy8gVGhyb3cgdGhlIGN1cnJlbnRseSBhY3RpdmUgZXhjZXB0aW9uIGluIHRo
ZSBjb250ZXh0IG9mIHRoZSBjYWxsZXIncyBjYWxsIGZyYW1lLgordm9pZCBpbnRlcnByZXRlclRo
cm93SW5DYWxsZXIoRXhlY1N0YXRlKiBjYWxsZXJGcmFtZSwgUmV0dXJuQWRkcmVzc1B0cik7CisK
Ky8vIFRlbGxzIHlvdSB3aGVyZSB0byBqdW1wIHRvIGlmIHlvdSB3YW50IHRvIHJldHVybi10by10
aHJvdywgYWZ0ZXIgeW91J3ZlIGFscmVhZHkKKy8vIHNldCB1cCBhbGwgaW5mb3JtYXRpb24gbmVl
ZGVkIHRvIHRocm93IHRoZSBleGNlcHRpb24uCitJbnN0cnVjdGlvbiogcmV0dXJuVG9UaHJvd0Zv
clRocm93bkV4Y2VwdGlvbihFeGVjU3RhdGUqKTsKKworLy8gU2F2ZXMgdGhlIGN1cnJlbnQgUEMg
aW4gdGhlIGdsb2JhbCBkYXRhIGZvciBzYWZlLWtlZXBpbmcsIGFuZCBnaXZlcyB5b3UgYSBQQwor
Ly8gdGhhdCB5b3UgY2FuIHRlbGwgdGhlIGludGVycHJldGVyIHRvIGdvIHRvLCB3aGljaCB3aGVu
IGFkdmFuY2VkIGJldHdlZW4gMQorLy8gYW5kIDkgc2xvdHMgd2lsbCBnaXZlIHlvdSBhbiAiaW5z
dHJ1Y3Rpb24iIHRoYXQgdGhyZWFkcyB0byB0aGUgaW50ZXJwcmV0ZXIncworLy8gZXhjZXB0aW9u
IGhhbmRsZXIuIE5vdGUgdGhhdCBpZiB5b3UgZ2l2ZSBpdCB0aGUgUEMgZm9yIGV4Y2VwdGlvbiBo
YW5kbGluZywKKy8vIGl0J3Mgc21hcnQgZW5vdWdoIHRvIGp1c3QgcmV0dXJuIHRoYXQgUEMgd2l0
aG91dCBkb2luZyBhbnl0aGluZyBlbHNlOyB0aGlzCisvLyBsZXRzIHlvdSB0aHJlYWQgZXhjZXB0
aW9uIGhhbmRsaW5nIHRocm91Z2ggY29tbW9uIGhlbHBlciBmdW5jdGlvbnMgdXNlZCBieQorLy8g
b3RoZXIgaGVscGVycy4KK0luc3RydWN0aW9uKiByZXR1cm5Ub1Rocm93KEV4ZWNTdGF0ZSosIElu
c3RydWN0aW9uKik7CisKKy8vIFVzZSB0aGlzIHdoZW4geW91J3JlIHRocm93aW5nIHRvIGEgY2Fs
bCB0aHVuay4KK3ZvaWQqIGNhbGxUb1Rocm93KEV4ZWNTdGF0ZSosIEluc3RydWN0aW9uKik7CisK
K30gfSAvLyBuYW1lc3BhY2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQor
CisjZW5kaWYgLy8gTExJbnRFeGNlcHRpb25zX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludE9mZmxpbmVBc21Db25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJldmlzaW9uIDApCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZsaW5lQXNtQ29uZmlnLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBMTEludE9mZmxpbmVBc21Db25maWdfaAorI2RlZmlu
ZSBMTEludE9mZmxpbmVBc21Db25maWdfaAorCisjaW5jbHVkZSAiTExJbnRDb21tb24uaCIKKyNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0Zi9JbmxpbmVBc20uaD4KKyNp
bmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKworI2lmIENQVShYODYpCisjZGVmaW5lIE9GRkxJTkVf
QVNNX1g4NiAxCisjZWxzZQorI2RlZmluZSBPRkZMSU5FX0FTTV9YODYgMAorI2VuZGlmCisKKyNp
ZiBDUFUoQVJNX1RIVU1CMikKKyNkZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMQorI2Vsc2UKKyNk
ZWZpbmUgT0ZGTElORV9BU01fQVJNdjcgMAorI2VuZGlmCisKKyNpZiAhQVNTRVJUX0RJU0FCTEVE
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDEKKyNlbHNlCisjZGVmaW5lIE9G
RkxJTkVfQVNNX0FTU0VSVF9FTkFCTEVEIDAKKyNlbmRpZgorCisjaWYgQ1BVKEJJR19FTkRJQU4p
CisjZGVmaW5lIE9GRkxJTkVfQVNNX0JJR19FTkRJQU4gMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElO
RV9BU01fQklHX0VORElBTiAwCisjZW5kaWYKKworI2lmIExMSU5UX09TUl9UT19KSVQKKyNkZWZp
bmUgT0ZGTElORV9BU01fSklUX0VOQUJMRUQgMQorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9BU01f
SklUX0VOQUJMRUQgMAorI2VuZGlmCisKKyNpZiBMTElOVF9FWEVDVVRJT05fVFJBQ0lORworI2Rl
ZmluZSBPRkZMSU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAxCisjZWxzZQorI2RlZmluZSBPRkZM
SU5FX0FTTV9FWEVDVVRJT05fVFJBQ0lORyAwCisjZW5kaWYKKworI2lmIExMSU5UX0FMV0FZU19B
TExPQ0FURV9TTE9XCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FMV0FZU19BTExPQ0FURV9TTE9XIDEK
KyNlbHNlCisjZGVmaW5lIE9GRkxJTkVfQVNNX0FMV0FZU19BTExPQ0FURV9TTE9XIDAKKyNlbmRp
ZgorCisjaWYgQ1BVKEFSTV9USFVNQjIpCisjZGVmaW5lIE9GRkxJTkVfQVNNX0dMT0JBTF9MQUJF
TChsYWJlbCkgICAgICAgICAgXAorICAgICIuZ2xvYmwgIiBTWU1CT0xfU1RSSU5HKGxhYmVsKSAi
XG4iICAgICAgICAgIFwKKyAgICBISURFX1NZTUJPTChuYW1lKSAiXG4iICAgICAgICAgICAgICAg
ICAgICAgICBcCisgICAgIi50aHVtYlxuIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICIudGh1bWJfZnVuYyAiIFRIVU1CX0ZVTkNfUEFSQU0obGFiZWwpICJcbiIgIFwK
KyAgICBTWU1CT0xfU1RSSU5HKGxhYmVsKSAiOlxuIgorI2Vsc2UKKyNkZWZpbmUgT0ZGTElORV9B
U01fR0xPQkFMX0xBQkVMKGxhYmVsKSAgICAgICAgIFwKKyAgICAiLmdsb2JsICIgU1lNQk9MX1NU
UklORyhsYWJlbCkgIlxuIiAgICAgICAgIFwKKyAgICBISURFX1NZTUJPTChuYW1lKSAiXG4iICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICBTWU1CT0xfU1RSSU5HKGxhYmVsKSAiOlxuIgorI2Vu
ZGlmCisKKyNlbmRpZiAvLyBMTEludE9mZmxpbmVBc21Db25maWdfaApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50T2Zmc2V0c0V4dHJhY3Rvci5jcHAJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRPZmZzZXRz
RXh0cmFjdG9yLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisjaW5jbHVk
ZSAiSGVhcC5oIgorI2luY2x1ZGUgIkludGVycHJldGVyLmgiCisjaW5jbHVkZSAiSklUU3R1YnMu
aCIKKyNpbmNsdWRlICJKU0FycmF5LmgiCisjaW5jbHVkZSAiSlNDZWxsLmgiCisjaW5jbHVkZSAi
SlNGdW5jdGlvbi5oIgorI2luY2x1ZGUgIkpTR2xvYmFsRGF0YS5oIgorI2luY2x1ZGUgIkpTR2xv
YmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgiCisjaW5jbHVkZSAiSlNTdHJpbmcuaCIKKyNpbmNsdWRlICJKU1R5cGVJ
bmZvLmgiCisjaW5jbHVkZSAiSlNWYXJpYWJsZU9iamVjdC5oIgorI2luY2x1ZGUgIkp1bXBUYWJs
ZS5oIgorI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZpZy5oIgorI2luY2x1ZGUgIk1hcmtl
ZFNwYWNlLmgiCisjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCisjaW5jbHVkZSAiU2NvcGVDaGFp
bi5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZS5oIgorI2luY2x1ZGUgIlN0cnVjdHVyZUNoYWluLmgi
CisjaW5jbHVkZSAiVmFsdWVQcm9maWxlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1w
bC5oPgorCituYW1lc3BhY2UgSlNDIHsKKworI2RlZmluZSBPRkZMSU5FX0FTTV9PRkZTRVRPRihj
bGF6eiwgZmllbGQpIE9CSkVDVF9PRkZTRVRPRihjbGF6eiwgZmllbGQpCisKK2NsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvciB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkKiBk
dW1teSgpOworfTsKKworY29uc3QgdW5zaWduZWQqIExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVt
bXkoKQoreworLy8gVGhpcyBpcyBhIGZpbGUgZ2VuZXJhdGVkIGJ5IG9mZmxpbmVhc20vZ2VuZXJh
dGVfb2Zmc2V0c19leHRyYWN0b3IucmIsIGFuZCBjb250YWlucyBjb2RlCisvLyB0byBjcmVhdGUg
YSB0YWJsZSBvZiBvZmZzZXRzLCBzaXplcywgYW5kIGEgaGVhZGVyIGlkZW50aWZ5aW5nIHdoYXQg
Y29tYmluYXRpb24gb2YKKy8vIFBsYXRmb3JtLmggbWFjcm9zIHdlIGhhdmUgc2V0LiBXZSBpbmNs
dWRlIGl0IGluc2lkZSBvZiBhIG1ldGhvZCBvbiBMTEludE9mZnNldHNFeHRyYWN0b3IKKy8vIGJl
Y2F1c2UgdGhlIGZpZWxkcyB3aG9zZSBvZmZzZXRzIHdlJ3JlIGV4dHJhY3RpbmcgYXJlIG1vc3Rs
eSBwcml2YXRlLiBTbyB3ZSBtYWtlIHRoZWlyCisvLyBjbGFzc2VzIGZyaWVuZHMgd2l0aCBMTElu
dE9mZnNldHNFeHRyYWN0b3IsIGFuZCBpbmNsdWRlIHRoZSBoZWFkZXIgaGVyZSwgdG8gZ2V0IHRo
ZSBDKysKKy8vIGNvbXBpbGVyIHRvIGtpbmRseSBzdGVwIGFzaWRlIGFuZCB5aWVsZCB0byBvdXIg
YmVzdCBpbnRlbnRpb25zLgorI2luY2x1ZGUgIkxMSW50RGVzaXJlZE9mZnNldHMuaCIKKyAgICBy
ZXR1cm4gZXh0cmFjdG9yVGFibGU7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQworCitpbnQgbWFp
bihpbnQsIGNoYXIqKikKK3sKKyAgICAvLyBPdXQgb2YgYW4gYWJ1bmRhbmNlIG9mIGNhdXRpb24s
IG1ha2Ugc3VyZSB0aGF0IExMSW50T2Zmc2V0c0V4dHJhY3Rvcjo6ZHVtbXkoKSBpcyBsaXZlLAor
ICAgIC8vIGFuZCB0aGUgZXh0cmFjdG9yVGFibGUgaXMgbGl2ZSwgdG9vLgorICAgIHByaW50Zigi
JXBcbiIsIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOjpkdW1teSgpKTsKKyAgICByZXR1cm4g
MDsKK30KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1Bh
dGhzLmNwcAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTElu
dFNsb3dQYXRocy5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTU1OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiTExJbnRTbG93UGF0aHMuaCIKKworI2lmIEVOQUJMRShMTElOVCkK
KworI2luY2x1ZGUgIkFyZ3VtZW50cy5oIgorI2luY2x1ZGUgIkNhbGxGcmFtZS5oIgorI2luY2x1
ZGUgIkNvbW1vblNsb3dQYXRocy5oIgorI2luY2x1ZGUgIkdldHRlclNldHRlci5oIgorI2luY2x1
ZGUgIkhvc3RDYWxsUmV0dXJuVmFsdWUuaCIKKyNpbmNsdWRlICJJbnRlcnByZXRlci5oIgorI2lu
Y2x1ZGUgIkpJVC5oIgorI2luY2x1ZGUgIkpJVERyaXZlci5oIgorI2luY2x1ZGUgIkpTQWN0aXZh
dGlvbi5oIgorI2luY2x1ZGUgIkpTQnl0ZUFycmF5LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmpl
Y3RGdW5jdGlvbnMuaCIKKyNpbmNsdWRlICJKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yLmgiCisjaW5j
bHVkZSAiSlNTdGF0aWNTY29wZU9iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisjaW5j
bHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50Q29tbW9uLmgiCisjaW5jbHVkZSAiTExJ
bnRFeGNlcHRpb25zLmgiCisjaW5jbHVkZSAiTG93TGV2ZWxJbnRlcnByZXRlci5oIgorI2luY2x1
ZGUgIk9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBMTEludCB7CisK
KyNkZWZpbmUgTExJTlRfQkVHSU5fTk9fU0VUX1BDKCkgXAorICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsgICAgICBcCisgICAgTmF0aXZlQ2FsbEZyYW1l
VHJhY2VyIHRyYWNlcigmZ2xvYmFsRGF0YSwgZXhlYykKKworI2RlZmluZSBMTElOVF9TRVRfUENf
Rk9SX1NUVUJTKCkgXAorICAgIGV4ZWMtPnNldEN1cnJlbnRWUEMocGMgKyAxKQorCisjZGVmaW5l
IExMSU5UX0JFR0lOKCkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgTExJTlRfQkVH
SU5fTk9fU0VUX1BDKCk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgTExJTlRfU0VUX1BDX0ZP
Ul9TVFVCUygpCisKKyNkZWZpbmUgTExJTlRfT1AoaW5kZXgpIChleGVjLT51bmNoZWNrZWRSKHBj
W2luZGV4XS51Lm9wZXJhbmQpKQorI2RlZmluZSBMTElOVF9PUF9DKGluZGV4KSAoZXhlYy0+cihw
Y1tpbmRleF0udS5vcGVyYW5kKSkKKworI2RlZmluZSBMTElOVF9SRVRVUk5fVFdPKGZpcnN0LCBz
ZWNvbmQpIGRvIHsgICAgICAgXAorICAgICAgICB1bmlvbiB7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgc3RydWN0IHsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGE7ICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICAgICAgICAgIHZvaWQqIGI7ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAorICAgICAgICAgICAgfSBwYWlyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAorICAgICAgICAgICAgaW50NjRfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgICAgICB9IF9fcnRfdTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAor
ICAgICAgICBfX3J0X3UucGFpci5hID0gZmlyc3Q7ICAgICAgICAgICAgICAgICAgICAgXAorICAg
ICAgICBfX3J0X3UucGFpci5iID0gc2Vjb25kOyAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICByZXR1cm4gX19ydF91Lmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hp
bGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0VORF9JTVBMKCkgTExJTlRfUkVUVVJOX1RXTyhw
YywgZXhlYykKKworI2RlZmluZSBMTElOVF9USFJPVyhleGNlcHRpb25Ub1Rocm93KSBkbyB7ICAg
ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBnbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IChl
eGNlcHRpb25Ub1Rocm93KTsgICAgICAgICAgICAgICAgXAorICAgICAgICBwYyA9IHJldHVyblRv
VGhyb3coZXhlYywgcGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBM
TElOVF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
XAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NIRUNLX0VYQ0VQVElPTigp
IGRvIHsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKFVOTElLRUxZKGdsb2JhbERh
dGEuZXhjZXB0aW9uKSkgeyAgICAgICAgICAgXAorICAgICAgICAgICAgcGMgPSByZXR1cm5Ub1Ro
cm93KGV4ZWMsIHBjKTsgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMTElOVF9FTkRfSU1Q
TCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQor
CisjZGVmaW5lIExMSU5UX0VORCgpIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAg
ICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOyAgICAgICAgICAgICAgICBcCisgICAgICAgIExM
SU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFs
c2UpCisKKyNkZWZpbmUgTExJTlRfQlJBTkNIKG9wY29kZSwgY29uZGl0aW9uKSBkbyB7ICAgICAg
ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgYm9vbCBfX2JfY29uZGl0aW9uID0gKGNvbmRpdGlv
bik7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBU
SU9OKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKF9f
Yl9jb25kaXRpb24pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAg
ICAgICAgICAgIHBjICs9IHBjW09QQ09ERV9MRU5HVEgob3Bjb2RlKSAtIDFdLnUub3BlcmFuZDsg
ICAgICAgIFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHBjICs9IE9QQ09ERV9MRU5HVEgob3Bj
b2RlKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfRU5EX0lNUEwo
KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxl
IChmYWxzZSkKKworI2RlZmluZSBMTElOVF9SRVRVUk4odmFsdWUpIGRvIHsgICAgICAgICAgICAg
ICAgXAorICAgICAgICBKU1ZhbHVlIF9fcl9yZXR1cm5WYWx1ZSA9ICh2YWx1ZSk7ICAgICAgXAor
ICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsgICAgICAgICAgICAgICAgXAorICAgICAg
ICBMTElOVF9PUCgxKSA9IF9fcl9yZXR1cm5WYWx1ZTsgICAgICAgICAgXAorICAgICAgICBMTElO
VF9FTkRfSU1QTCgpOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNl
KQorCisjZGVmaW5lIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcGNvZGUsIHZhbHVlKSBkbyB7ICAg
ICAgICAgICAgICAgXAorICAgICAgICBKU1ZhbHVlIF9fcnBfcmV0dXJuVmFsdWUgPSAodmFsdWUp
OyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX09QKDEpID0g
X19ycF9yZXR1cm5WYWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBwY1tP
UENPREVfTEVOR1RIKG9wY29kZSkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IFwKKyAg
ICAgICAgICAgIEpTVmFsdWU6OmVuY29kZShfX3JwX3JldHVyblZhbHVlKTsgICAgICAgICAgICAg
ICAgICBcCisgICAgICAgIExMSU5UX0VORF9JTVBMKCk7ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NB
TExfRU5EX0lNUEwoZXhlYywgY2FsbFRhcmdldCkgTExJTlRfUkVUVVJOX1RXTygoY2FsbFRhcmdl
dCksIChleGVjKSkKKworI2RlZmluZSBMTElOVF9DQUxMX1RIUk9XKGV4ZWMsIHBjLCBleGNlcHRp
b25Ub1Rocm93KSBkbyB7ICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY3Rf
ZXhlYyA9IChleGVjKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBJbnN0cnVjdGlvbiogX19jdF9wYyA9IChwYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBnbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IChleGNlcHRpb25Ub1Ro
cm93KTsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMTElOVF9DQUxMX0VORF9JTVBM
KF9fY3RfZXhlYywgY2FsbFRvVGhyb3coX19jdF9leGVjLCBfX2N0X3BjKSk7IFwKKyAgICB9IHdo
aWxlIChmYWxzZSkKKworI2RlZmluZSBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBw
YykgZG8geyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFeGVjU3RhdGUqIF9fY2Nl
X2V4ZWMgPSAoZXhlYyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAg
ICBJbnN0cnVjdGlvbiogX19jY2VfcGMgPSAocGMpOyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAorICAgICAgICBpZiAoVU5MSUtFTFkoZ2xvYmFsRGF0YS5leGNlcHRpb24pKSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIExMSU5UX0NBTExfRU5E
X0lNUEwoX19jY2VfZXhlYywgY2FsbFRvVGhyb3coX19jY2VfZXhlYywgX19jY2VfcGMpKTsgXAor
ICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIExMSU5UX0NBTExfUkVUVVJOKGV4ZWMsIHBj
LCBjYWxsVGFyZ2V0KSBkbyB7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEV4ZWNTdGF0
ZSogX19jcl9leGVjID0gKGV4ZWMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc
CisgICAgICAgIEluc3RydWN0aW9uKiBfX2NyX3BjID0gKHBjKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBcCisgICAgICAgIHZvaWQqIF9fY3JfY2FsbFRhcmdldCA9IChjYWxs
VGFyZ2V0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIExMSU5UX0NBTExf
Q0hFQ0tfRVhDRVBUSU9OKF9fY3JfZXhlYy0+Y2FsbGVyRnJhbWUoKSwgX19jcl9wYyk7ICBcCisg
ICAgICAgIExMSU5UX0NBTExfRU5EX0lNUEwoX19jcl9leGVjLCBfX2NyX2NhbGxUYXJnZXQpOyAg
ICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKK2V4dGVybiAiQyIgU2xvd1Bh
dGhSZXR1cm5UeXBlIGxsaW50X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiBleGVjLCBJbnN0cnVj
dGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgZGF0YUxvZygiJXAgLyAlcDogZXhlY3V0aW5nIGJjIyV6dSwgb3AjJXU6IFRyYWNl
KCVkKTogJWQ6ICVkXG4iLAorICAgICAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCksCisgICAgICAg
ICAgICBleGVjLAorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8aW50cHRyX3Q+KHBjIC0gZXhlYy0+
Y29kZUJsb2NrKCktPmluc3RydWN0aW9ucygpLmJlZ2luKCkpLAorICAgICAgICAgICAgZXhlYy0+
Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5nZXRPcGNvZGVJRChwY1swXS51Lm9wY29kZSksCisg
ICAgICAgICAgICBmcm9tV2hlcmUsCisgICAgICAgICAgICBvcGVyYW5kLAorICAgICAgICAgICAg
cGNbb3BlcmFuZF0udS5vcGVyYW5kKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworZXh0ZXJuICJD
IiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfdHJhY2VfdmFsdWUoRXhlY1N0YXRlKiBleGVjLCBJ
bnN0cnVjdGlvbiogcGMsIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5kKQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IExMSU5UX09QX0Mob3BlcmFuZCkuanNWYWx1
ZSgpOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgIHVpbnQzMl90
IHRhZzsKKyAgICAgICAgICAgIHVpbnQzMl90IHBheWxvYWQ7CisgICAgICAgIH0gYml0czsKKyAg
ICAgICAgRW5jb2RlZEpTVmFsdWUgYXNWYWx1ZTsKKyAgICB9IHU7CisgICAgdS5hc1ZhbHVlID0g
SlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKKyAgICBkYXRhTG9nKCIlcCAvICVwOiBleGVjdXRpbmcg
YmMjJXp1LCBvcCMldTogVHJhY2UoJWQpOiAlZDogJWQ6ICUwOHg6JTA4eDogJXNcbiIsCisgICAg
ICAgICAgICBleGVjLT5jb2RlQmxvY2soKSwKKyAgICAgICAgICAgIGV4ZWMsCisgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxpbnRwdHJfdD4ocGMgLSBleGVjLT5jb2RlQmxvY2soKS0+aW5zdHJ1Y3Rp
b25zKCkuYmVnaW4oKSksCisgICAgICAgICAgICBleGVjLT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0
ZXItPmdldE9wY29kZUlEKHBjWzBdLnUub3Bjb2RlKSwKKyAgICAgICAgICAgIGZyb21XaGVyZSwK
KyAgICAgICAgICAgIG9wZXJhbmQsCisgICAgICAgICAgICBwY1tvcGVyYW5kXS51Lm9wZXJhbmQs
CisgICAgICAgICAgICB1LmJpdHMudGFnLAorICAgICAgICAgICAgdS5iaXRzLnBheWxvYWQsCisg
ICAgICAgICAgICB2YWx1ZS5kZXNjcmlwdGlvbigpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKwor
TExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2VfcHJvbG9ndWUpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBkYXRhTG9nKCIlcCAvICVwOiBpbiBwcm9sb2d1ZS5cbiIsIGV4ZWMtPmNvZGVCbG9j
aygpLCBleGVjKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworc3RhdGljIHZvaWQgdHJhY2VGdW5j
dGlvblByb2xvZ3VlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgY2hhciogY29tbWVudCwgQ29kZVNw
ZWNpYWxpemF0aW9uS2luZCBraW5kKQoreworICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVu
Y3Rpb24oZXhlYy0+Y2FsbGVlKCkpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJs
ZSA9IGNhbGxlZS0+anNFeGVjdXRhYmxlKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSAm
ZXhlY3V0YWJsZS0+Z2VuZXJhdGVkQnl0ZWNvZGVGb3Ioa2luZCk7CisgICAgZGF0YUxvZygiJXAg
LyAlcDogaW4gJXMgb2YgZnVuY3Rpb24gJXAsIGV4ZWN1dGFibGUgJXA7IG51bVZhcnMgPSAldSwg
bnVtUGFyYW1ldGVycyA9ICV1LCBudW1DYWxsZWVSZWdpc3RlcnMgPSAldSwgY2FsbGVyID0gJXAu
XG4iLAorICAgICAgICAgICAgY29kZUJsb2NrLCBleGVjLCBjb21tZW50LCBjYWxsZWUsIGV4ZWN1
dGFibGUsCisgICAgICAgICAgICBjb2RlQmxvY2stPm1fbnVtVmFycywgY29kZUJsb2NrLT5udW1Q
YXJhbWV0ZXJzKCksIGNvZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnMsCisgICAgICAgICAg
ICBleGVjLT5jYWxsZXJGcmFtZSgpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0wodHJhY2Vf
cHJvbG9ndWVfZnVuY3Rpb25fZm9yX2NhbGwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICB0
cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNhbGwgcHJvbG9ndWUiLCBDb2RlRm9yQ2FsbCk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlX3Byb2xv
Z3VlX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICB0
cmFjZUZ1bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBwcm9sb2d1ZSIsIENvZGVGb3JD
b25zdHJ1Y3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTCh0
cmFjZV9hcml0eUNoZWNrX2Zvcl9jYWxsKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgdHJh
Y2VGdW5jdGlvblByb2xvZ3VlKGV4ZWMsICJjYWxsIGFyaXR5IGNoZWNrIiwgQ29kZUZvckNhbGwp
OworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZV9hcml0
eUNoZWNrX2Zvcl9jb25zdHJ1Y3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICB0cmFjZUZ1
bmN0aW9uUHJvbG9ndWUoZXhlYywgImNvbnN0cnVjdCBhcml0eSBjaGVjayIsIENvZGVGb3JDb25z
dHJ1Y3QpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFj
ZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGRhdGFMb2coIiVwIC8gJXA6IGV4ZWN1dGlu
ZyBiYyMlenUsICVzLCBzY29wZSAlcFxuIiwKKyAgICAgICAgICAgIGV4ZWMtPmNvZGVCbG9jaygp
LAorICAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PGludHB0cl90Pihw
YyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpKSwKKyAgICAgICAg
ICAgIG9wY29kZU5hbWVzW2V4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+Z2V0T3Bjb2Rl
SUQocGNbMF0udS5vcGNvZGUpXSwKKyAgICAgICAgICAgIGV4ZWMtPnNjb3BlQ2hhaW4oKSk7Cisg
ICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNwZWNpYWxfdHJhY2Up
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBkYXRhTG9nKCIlcCAvICVwOiBleGVjdXRpbmcg
c3BlY2lhbCBjYXNlIGJjIyV6dSwgb3AjJXUsIHJldHVybiBQQyBpcyAlcFxuIiwKKyAgICAgICAg
ICAgIGV4ZWMtPmNvZGVCbG9jaygpLAorICAgICAgICAgICAgZXhlYywKKyAgICAgICAgICAgIHN0
YXRpY19jYXN0PGludHB0cl90PihwYyAtIGV4ZWMtPmNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMo
KS5iZWdpbigpKSwKKyAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+
Z2V0T3Bjb2RlSUQocGNbMF0udS5vcGNvZGUpLAorICAgICAgICAgICAgZXhlYy0+cmV0dXJuUEMo
KS52YWx1ZSgpKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworaW5saW5lIGJvb2wgc2hvdWxkSklU
KEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBZb3UgY2FuIG1vZGlmeSB0aGlzIHRvIHR1cm4g
b2ZmIEpJVHRpbmcgd2l0aG91dCByZWJ1aWxkaW5nIHRoZSB3b3JsZC4KKyAgICByZXR1cm4gZXhl
Yy0+Z2xvYmFsRGF0YSgpLmNhblVzZUpJVCgpOworfQorCitlbnVtIEVudHJ5S2luZCB7IFByb2xv
Z3VlLCBBcml0eUNoZWNrIH07CitzdGF0aWMgU2xvd1BhdGhSZXR1cm5UeXBlIGVudHJ5T1NSKEV4
ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgY29u
c3QgY2hhciAqbmFtZSwgRW50cnlLaW5kIGtpbmQpCit7CisjaWYgRU5BQkxFKEpJVF9WRVJCT1NF
X09TUikKKyAgICBkYXRhTG9nKCIlcDogRW50ZXJlZCAlcyB3aXRoIGV4ZWN1dGVDb3VudGVyID0g
JWRcbiIsIGNvZGVCbG9jaywgbmFtZSwgY29kZUJsb2NrLT5sbGludEV4ZWN1dGVDb3VudGVyKCkp
OworI2VuZGlmCisgICAgCisgICAgaWYgKCFzaG91bGRKSVQoZXhlYykpIHsKKyAgICAgICAgY29k
ZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTygw
LCBleGVjKTsKKyAgICB9CisgICAgaWYgKCFjb2RlQmxvY2stPmppdENvbXBpbGUoZXhlYy0+Z2xv
YmFsRGF0YSgpKSkgeworI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisgICAgICAgIGRhdGFM
b2coIiAgICBDb2RlIHdhcyBhbHJlYWR5IGNvbXBpbGVkLlxuIik7CisjZW5kaWYKKyAgICB9Cisg
ICAgY29kZUJsb2NrLT5qaXRTb29uKCk7CisgICAgaWYgKGtpbmQgPT0gUHJvbG9ndWUpCisgICAg
ICAgIExMSU5UX1JFVFVSTl9UV08oY29kZUJsb2NrLT5nZXRKSVRDb2RlKCkuZXhlY3V0YWJsZUFk
ZHJlc3NBdE9mZnNldCgwKSwgZXhlYyk7CisgICAgQVNTRVJUKGtpbmQgPT0gQXJpdHlDaGVjayk7
CisgICAgTExJTlRfUkVUVVJOX1RXTyhjb2RlQmxvY2stPmdldEpJVENvZGVXaXRoQXJpdHlDaGVj
aygpLmV4ZWN1dGFibGVBZGRyZXNzKCksIGV4ZWMpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVD
TChlbnRyeV9vc3IpCit7CisgICAgcmV0dXJuIGVudHJ5T1NSKGV4ZWMsIHBjLCBleGVjLT5jb2Rl
QmxvY2soKSwgImVudHJ5X29zciIsIFByb2xvZ3VlKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RF
Q0woZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsKQoreworICAgIHJldHVybiBlbnRyeU9TUihl
eGVjLCBwYywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2Vu
ZXJhdGVkQnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9j
YWxsIiwgUHJvbG9ndWUpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChlbnRyeV9vc3JfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdCkKK3sKKyAgICByZXR1cm4gZW50cnlPU1IoZXhlYywgcGMsICZh
c0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxlKCktPmdlbmVyYXRlZEJ5dGVj
b2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3QiLCBQcm9sb2d1ZSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKGVudHJ5X29zcl9mdW5j
dGlvbl9mb3JfY2FsbF9hcml0eUNoZWNrKQoreworICAgIHJldHVybiBlbnRyeU9TUihleGVjLCBw
YywgJmFzRnVuY3Rpb24oZXhlYy0+Y2FsbGVlKCkpLT5qc0V4ZWN1dGFibGUoKS0+Z2VuZXJhdGVk
Qnl0ZWNvZGVGb3IoQ29kZUZvckNhbGwpLCAiZW50cnlfb3NyX2Z1bmN0aW9uX2Zvcl9jYWxsX2Fy
aXR5Q2hlY2siLCBBcml0eUNoZWNrKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woZW50cnlf
b3NyX2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKK3sKKyAgICByZXR1cm4gZW50
cnlPU1IoZXhlYywgcGMsICZhc0Z1bmN0aW9uKGV4ZWMtPmNhbGxlZSgpKS0+anNFeGVjdXRhYmxl
KCktPmdlbmVyYXRlZEJ5dGVjb2RlRm9yKENvZGVGb3JDb25zdHJ1Y3QpLCAiZW50cnlfb3NyX2Z1
bmN0aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjayIsIEFyaXR5Q2hlY2spOworfQorCitMTElO
VF9TTE9XX1BBVEhfREVDTChsb29wX29zcikKK3sKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9
IGV4ZWMtPmNvZGVCbG9jaygpOworICAgIAorI2lmIEVOQUJMRShKSVRfVkVSQk9TRV9PU1IpCisg
ICAgZGF0YUxvZygiJXA6IEVudGVyZWQgbG9vcF9vc3Igd2l0aCBleGVjdXRlQ291bnRlciA9ICVk
XG4iLCBjb2RlQmxvY2ssIGNvZGVCbG9jay0+bGxpbnRFeGVjdXRlQ291bnRlcigpKTsKKyNlbmRp
ZgorICAgIAorICAgIGlmICghc2hvdWxkSklUKGV4ZWMpKSB7CisgICAgICAgIGNvZGVCbG9jay0+
ZG9udEpJVEFueXRpbWVTb29uKCk7CisgICAgICAgIExMSU5UX1JFVFVSTl9UV08oMCwgZXhlYyk7
CisgICAgfQorICAgIAorICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2Jh
bERhdGEoKSkpIHsKKyNpZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICBkYXRhTG9n
KCIgICAgQ29kZSB3YXMgYWxyZWFkeSBjb21waWxlZC5cbiIpOworI2VuZGlmCisgICAgfQorICAg
IGNvZGVCbG9jay0+aml0U29vbigpOworICAgIAorICAgIEFTU0VSVChjb2RlQmxvY2stPmdldEpJ
VFR5cGUoKSA9PSBKSVRDb2RlOjpCYXNlbGluZUpJVCk7CisgICAgCisgICAgVmVjdG9yPEJ5dGVj
b2RlQW5kTWFjaGluZU9mZnNldD4gbWFwOworICAgIGNvZGVCbG9jay0+aml0Q29kZU1hcCgpLT5k
ZWNvZGUobWFwKTsKKyAgICBCeXRlY29kZUFuZE1hY2hpbmVPZmZzZXQqIG1hcHBpbmcgPSBiaW5h
cnlTZWFyY2g8Qnl0ZWNvZGVBbmRNYWNoaW5lT2Zmc2V0LCB1bnNpZ25lZCwgQnl0ZWNvZGVBbmRN
YWNoaW5lT2Zmc2V0OjpnZXRCeXRlY29kZUluZGV4PihtYXAuYmVnaW4oKSwgbWFwLnNpemUoKSwg
cGMgLSBjb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkpOworICAgIEFTU0VSVChtYXBw
aW5nKTsKKyAgICBBU1NFUlQobWFwcGluZy0+bV9ieXRlY29kZUluZGV4ID09IHN0YXRpY19jYXN0
PHVuc2lnbmVkPihwYyAtIGNvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zKCkuYmVnaW4oKSkpOworICAg
IAorICAgIHZvaWQqIGp1bXBUYXJnZXQgPSBjb2RlQmxvY2stPmdldEpJVENvZGUoKS5leGVjdXRh
YmxlQWRkcmVzc0F0T2Zmc2V0KG1hcHBpbmctPm1fbWFjaGluZUNvZGVPZmZzZXQpOworICAgIEFT
U0VSVChqdW1wVGFyZ2V0KTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk5fVFdPKGp1bXBUYXJnZXQs
IGV4ZWMpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChyZXBsYWNlKQoreworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgCisjaWYgRU5BQkxFKEpJ
VF9WRVJCT1NFX09TUikKKyAgICBkYXRhTG9nKCIlcDogRW50ZXJlZCByZXBsYWNlIHdpdGggZXhl
Y3V0ZUNvdW50ZXIgPSAlZFxuIiwgY29kZUJsb2NrLCBjb2RlQmxvY2stPmxsaW50RXhlY3V0ZUNv
dW50ZXIoKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAoc2hvdWxkSklUKGV4ZWMpKSB7CisgICAg
ICAgIGlmICghY29kZUJsb2NrLT5qaXRDb21waWxlKGV4ZWMtPmdsb2JhbERhdGEoKSkpIHsKKyNp
ZiBFTkFCTEUoSklUX1ZFUkJPU0VfT1NSKQorICAgICAgICAgICAgZGF0YUxvZygiICAgIENvZGUg
d2FzIGFscmVhZHkgY29tcGlsZWQuXG4iKTsKKyNlbmRpZgorICAgICAgICB9CisgICAgICAgIGNv
ZGVCbG9jay0+aml0U29vbigpOworICAgIH0gZWxzZQorICAgICAgICBjb2RlQmxvY2stPmRvbnRK
SVRBbnl0aW1lU29vbigpOworICAgIExMSU5UX0VORF9JTVBMKCk7Cit9CisKK0xMSU5UX1NMT1df
UEFUSF9ERUNMKHJlZ2lzdGVyX2ZpbGVfY2hlY2spCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyNp
ZiBMTElOVF9TTE9XX1BBVEhfVFJBQ0lORworICAgIGRhdGFMb2coIkNoZWNraW5nIHN0YWNrIGhl
aWdodCB3aXRoIGV4ZWMgPSAlcC5cbiIsIGV4ZWMpOworICAgIGRhdGFMb2coIkNvZGVCbG9jayA9
ICVwLlxuIiwgZXhlYy0+Y29kZUJsb2NrKCkpOworICAgIGRhdGFMb2coIk51bSBjYWxsZWUgcmVn
aXN0ZXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxsZWVSZWdpc3RlcnMp
OworICAgIGRhdGFMb2coIk51bSB2YXJzID0gJXUuXG4iLCBleGVjLT5jb2RlQmxvY2soKS0+bV9u
dW1WYXJzKTsKKyAgICBkYXRhTG9nKCJDdXJyZW50IGVuZCBpcyBhdCAlcC5cbiIsIGV4ZWMtPmds
b2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCkuZW5kKCkpOworI2VuZGlmCisg
ICAgQVNTRVJUKCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+bV9udW1DYWxs
ZWVSZWdpc3RlcnNdID4gZXhlYy0+Z2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZp
bGUoKS5lbmQoKSk7CisgICAgaWYgKFVOTElLRUxZKCFnbG9iYWxEYXRhLmludGVycHJldGVyLT5y
ZWdpc3RlckZpbGUoKS5ncm93KCZleGVjLT5yZWdpc3RlcnMoKVtleGVjLT5jb2RlQmxvY2soKS0+
bV9udW1DYWxsZWVSZWdpc3RlcnNdKSkpIHsKKyAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciByZXR1
cm5QQyA9IGV4ZWMtPnJldHVyblBDKCk7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFt
ZSgpOworICAgICAgICBnbG9iYWxEYXRhLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dF
cnJvcihleGVjKTsKKyAgICAgICAgaW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIHJldHVy
blBDKTsKKyAgICAgICAgcGMgPSByZXR1cm5Ub1Rocm93Rm9yVGhyb3duRXhjZXB0aW9uKGV4ZWMp
OworICAgIH0KKyAgICBMTElOVF9FTkRfSU1QTCgpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
RXhlY1N0YXRlKiBuZXdFeGVjID0gQ29tbW9uU2xvd1BhdGhzOjphcml0eUNoZWNrRm9yKGV4ZWMs
ICZnbG9iYWxEYXRhLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKSwgQ29kZUZvckNhbGwpOwor
ICAgIGlmICghbmV3RXhlYykgeworICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIHJldHVyblBDID0g
ZXhlYy0+cmV0dXJuUEMoKTsKKyAgICAgICAgZXhlYyA9IGV4ZWMtPmNhbGxlckZyYW1lKCk7Cisg
ICAgICAgIGdsb2JhbERhdGEuZXhjZXB0aW9uID0gY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4
ZWMpOworICAgICAgICBpbnRlcnByZXRlclRocm93SW5DYWxsZXIoZXhlYywgcmV0dXJuUEMpOwor
ICAgICAgICBMTElOVF9SRVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8
dWludHB0cl90PigxKSksIGV4ZWMpOworICAgIH0KKyAgICBMTElOVF9SRVRVUk5fVFdPKDAsIG5l
d0V4ZWMpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY29uc3RydWN0X2Fy
aXR5Q2hlY2spCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBFeGVjU3RhdGUqIG5ld0V4ZWMg
PSBDb21tb25TbG93UGF0aHM6OmFyaXR5Q2hlY2tGb3IoZXhlYywgJmdsb2JhbERhdGEuaW50ZXJw
cmV0ZXItPnJlZ2lzdGVyRmlsZSgpLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICBpZiAoIW5ld0V4
ZWMpIHsKKyAgICAgICAgUmV0dXJuQWRkcmVzc1B0ciByZXR1cm5QQyA9IGV4ZWMtPnJldHVyblBD
KCk7CisgICAgICAgIGV4ZWMgPSBleGVjLT5jYWxsZXJGcmFtZSgpOworICAgICAgICBnbG9iYWxE
YXRhLmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJvcihleGVjKTsKKyAgICAgICAg
aW50ZXJwcmV0ZXJUaHJvd0luQ2FsbGVyKGV4ZWMsIHJldHVyblBDKTsKKyAgICAgICAgTExJTlRf
UkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkp
LCBleGVjKTsKKyAgICB9CisgICAgTExJTlRfUkVUVVJOX1RXTygwLCBuZXdFeGVjKTsKK30KKwor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9hY3RpdmF0aW9uKQoreworICAg
IExMSU5UX0JFR0lOKCk7CisjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKKyAgICBkYXRhTG9n
KCJDcmVhdGluZyBhbiBhY3RpdmF0aW9uLCBleGVjID0gJXAhXG4iLCBleGVjKTsKKyNlbmRpZgor
ICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IEpTQWN0aXZhdGlvbjo6Y3JlYXRlKGdsb2Jh
bERhdGEsIGV4ZWMsIHN0YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWMtPmNvZGVC
bG9jaygpLT5vd25lckV4ZWN1dGFibGUoKSkpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhl
Yy0+c2NvcGVDaGFpbigpLT5wdXNoKGFjdGl2YXRpb24pKTsKKyAgICBMTElOVF9SRVRVUk4oSlNW
YWx1ZShhY3RpdmF0aW9uKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9j
cmVhdGVfYXJndW1lbnRzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSBhcmd1
bWVudHMgPSBKU1ZhbHVlKEFyZ3VtZW50czo6Y3JlYXRlKGdsb2JhbERhdGEsIGV4ZWMpKTsKKyAg
ICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBleGVjLT51bmNoZWNrZWRSKHBjWzFdLnUu
b3BlcmFuZCkgPSBhcmd1bWVudHM7CisgICAgZXhlYy0+dW5jaGVja2VkUih1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIocGNbMV0udS5vcGVyYW5kKSkgPSBhcmd1bWVudHM7CisgICAgTExJTlRf
RU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jcmVhdGVfdGhpcykK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTRnVuY3Rpb24qIGNvbnN0cnVjdG9yID0gYXNG
dW5jdGlvbihleGVjLT5jYWxsZWUoKSk7CisgICAgCisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAg
IENvbnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBBU1NFUlQoY29uc3RydWN0b3ItPm1l
dGhvZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEoY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEp
ID09IENvbnN0cnVjdFR5cGVKUyk7CisjZW5kaWYKKyAgICAKKyAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZTsKKyAgICBKU1ZhbHVlIHByb3RvID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAgIGlm
IChwcm90by5pc09iamVjdCgpKQorICAgICAgICBzdHJ1Y3R1cmUgPSBhc09iamVjdChwcm90bykt
PmluaGVyaXRvcklEKGdsb2JhbERhdGEpOworICAgIGVsc2UKKyAgICAgICAgc3RydWN0dXJlID0g
Y29uc3RydWN0b3ItPnNjb3BlKCktPmdsb2JhbE9iamVjdC0+ZW1wdHlPYmplY3RTdHJ1Y3R1cmUo
KTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgc3Ry
dWN0dXJlKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb252ZXJ0X3Ro
aXMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIHYxID0gTExJTlRfT1AoMSku
anNWYWx1ZSgpOworICAgIEFTU0VSVCh2MS5pc1ByaW1pdGl2ZSgpKTsKKyAgICBMTElOVF9SRVRV
Uk4odjEudG9UaGlzT2JqZWN0KGV4ZWMpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX25ld19vYmplY3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRV
Uk4oY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYykpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfbmV3X2FycmF5KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
UkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGJpdHdpc2VfY2FzdDxKU1ZhbHVlKj4oJkxMSU5U
X09QKDIpKSwgcGNbM10udS5vcGVyYW5kKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9uZXdfYXJyYXlfYnVmZmVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJ
TlRfUkVUVVJOKGNvbnN0cnVjdEFycmF5KGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5jb25zdGFu
dEJ1ZmZlcihwY1syXS51Lm9wZXJhbmQpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19yZWdleHApCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBSZWdFeHAqIHJlZ0V4cCA9IGV4ZWMtPmNvZGVCbG9jaygpLT5yZWdleHAocGNbMl0u
dS5vcGVyYW5kKTsKKyAgICBpZiAoIXJlZ0V4cC0+aXNWYWxpZCgpKQorICAgICAgICBMTElOVF9U
SFJPVyhjcmVhdGVTeW50YXhFcnJvcihleGVjLCAiSW52YWxpZCBmbGFnIHN1cHBsaWVkIHRvIFJl
Z0V4cCBjb25zdHJ1Y3Rvci4iKSk7CisgICAgTExJTlRfUkVUVVJOKFJlZ0V4cE9iamVjdDo6Y3Jl
YXRlKGdsb2JhbERhdGEsIGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSwgZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpLT5yZWdFeHBTdHJ1Y3R1cmUoKSwgcmVnRXhwKSk7Cit9CisKK0xMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9ub3QpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0Jvb2xl
YW4oZXhlYykpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2VxKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihKU1ZhbHVlOjpl
cXVhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVl
KCkpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXEpCit7CisgICAg
TExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKCFKU1ZhbHVlOjplcXVh
bChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkp
KSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdHJpY3RlcSkKK3sKKyAg
ICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oSlNWYWx1ZTo6c3Ry
aWN0RXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMykuanNW
YWx1ZSgpKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbnN0cmljdGVx
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbighSlNW
YWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09Q
X0MoMykuanNWYWx1ZSgpKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
bGVzcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4o
anNMZXNzPHRydWU+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xlc3Nl
cSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNM
ZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMyku
anNWYWx1ZSgpKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ3JlYXRl
cikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oanNM
ZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5q
c1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9ncmVhdGVy
ZXEpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGpz
TGVzc0VxPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygy
KS5qc1ZhbHVlKCkpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wcmVf
aW5jKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExM
SU5UX09QKDEpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSArIDEpKTsKK30KKworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3ByZV9kZWMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBMTElOVF9SRVRVUk4oanNOdW1iZXIoTExJTlRfT1AoMSkuanNWYWx1ZSgpLnRvTnVtYmVyKGV4
ZWMpIC0gMSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcG9zdF9pbmMp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJTlRfT1AoMiku
anNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpOworICAgIExMSU5UX09QKDIpID0ganNOdW1iZXIocmVz
dWx0ICsgMSk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOworfQorCitMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcG9zdF9kZWMpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBkb3VibGUgcmVzdWx0ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4
ZWMpOworICAgIExMSU5UX09QKDIpID0ganNOdW1iZXIocmVzdWx0IC0gMSk7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKHJlc3VsdCkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfdG9fanNudW1iZXIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRV
Uk4oanNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30K
KworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25lZ2F0ZSkKK3sKKyAgICBMTElOVF9C
RUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051bWJlcigtTExJTlRfT1BfQygyKS5qc1ZhbHVl
KCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2FkZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgdjEgPSBMTElOVF9PUF9D
KDIpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVlIHYyID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7
CisgICAgCisjaWYgTExJTlRfU0xPV19QQVRIX1RSQUNJTkcKKyAgICBkYXRhTG9nKCJUcnlpbmcg
dG8gYWRkICVzIiwgdjEuZGVzY3JpcHRpb24oKSk7CisgICAgZGF0YUxvZygiIHRvICVzLlxuIiwg
djIuZGVzY3JpcHRpb24oKSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodjEuaXNTdHJpbmcoKSAm
JiAhdjIuaXNPYmplY3QoKSkKKyAgICAgICAgTExJTlRfUkVUVVJOKGpzU3RyaW5nKGV4ZWMsIGFz
U3RyaW5nKHYxKSwgdjIudG9TdHJpbmcoZXhlYykpKTsKKyAgICAKKyAgICBpZiAodjEuaXNOdW1i
ZXIoKSAmJiB2Mi5pc051bWJlcigpKQorICAgICAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIodjEu
YXNOdW1iZXIoKSArIHYyLmFzTnVtYmVyKCkpKTsKKyAgICAKKyAgICBMTElOVF9SRVRVUk4oanNB
ZGRTbG93Q2FzZShleGVjLCB2MSwgdjIpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX211bCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc051
bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSAqIExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9zdWIpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4o
anNOdW1iZXIoTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykgLSBMTElOVF9P
UF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZGl2KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVU
VVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4ZWMpIC8gTExJ
TlRfT1BfQygzKS5qc1ZhbHVlKCkudG9OdW1iZXIoZXhlYykpKTsKK30KKworTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX21vZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5U
X1JFVFVSTihqc051bWJlcihmbW9kKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvTnVtYmVyKGV4
ZWMpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b051bWJlcihleGVjKSkpKTsKK30KKworTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2xzaGlmdCkKK3sKKyAgICBMTElOVF9CRUdJTigp
OworICAgIExMSU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0lu
dDMyKGV4ZWMpIDw8IChMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSAmIDMx
KSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcnNoaWZ0KQoreworICAg
IExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLnRvSW50MzIoZXhlYykgPj4gKExMSU5UX09QX0MoMykuanNWYWx1ZSgpLnRvVUlu
dDMyKGV4ZWMpICYgMzEpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF91
cnNoaWZ0KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzTnVtYmVy
KExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvVUludDMyKGV4ZWMpID4+IChMTElOVF9PUF9DKDMp
LmpzVmFsdWUoKS50b1VJbnQzMihleGVjKSAmIDMxKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfYml0YW5kKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRf
UkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIoZXhlYykgJiBM
TElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRvcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExM
SU5UX1JFVFVSTihqc051bWJlcihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMp
IHwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkudG9JbnQzMihleGVjKSkpOworfQorCitMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0eG9yKQoreworICAgIExMSU5UX0JFR0lOKCk7Cisg
ICAgTExJTlRfUkVUVVJOKGpzTnVtYmVyKExMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRvSW50MzIo
ZXhlYykgXiBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKS50b0ludDMyKGV4ZWMpKSk7Cit9CisKK0xM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9iaXRub3QpCit7CisgICAgTExJTlRfQkVHSU4o
KTsKKyAgICBMTElOVF9SRVRVUk4oanNOdW1iZXIofkxMSU5UX09QX0MoMikuanNWYWx1ZSgpLnRv
SW50MzIoZXhlYykpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NoZWNr
X2hhc19pbnN0YW5jZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgYmFzZVZh
bCA9IExMSU5UX09QX0MoMSkuanNWYWx1ZSgpOworI2lmbmRlZiBOREVCVUcKKyAgICBUeXBlSW5m
byB0eXBlSW5mbyhVbnNwZWNpZmllZFR5cGUpOworICAgIEFTU0VSVCghYmFzZVZhbC5pc09iamVj
dCgpCisgICAgICAgICAgIHx8ICEodHlwZUluZm8gPSBhc09iamVjdChiYXNlVmFsKS0+c3RydWN0
dXJlKCktPnR5cGVJbmZvKCkpLmltcGxlbWVudHNIYXNJbnN0YW5jZSgpKTsKKyNlbmRpZgorICAg
IExMSU5UX1RIUk9XKGNyZWF0ZUludmFsaWRQYXJhbUVycm9yKGV4ZWMsICJpbnN0YW5jZW9mIiwg
YmFzZVZhbCkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW5zdGFuY2Vv
ZikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oQ29t
bW9uU2xvd1BhdGhzOjpvcEluc3RhbmNlT2ZTbG93KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1
ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgTExJTlRfT1BfQyg0KS5qc1ZhbHVlKCkpKSk7
Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90eXBlb2YpCit7CisgICAgTExJ
TlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNUeXBlU3RyaW5nRm9yVmFsdWUoZXhlYywg
TExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2lzX3VuZGVmaW5lZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUg
diA9IExMSU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4o
di5pc0NlbGwoKSA/IHYuYXNDZWxsKCktPnN0cnVjdHVyZSgpLT50eXBlSW5mbygpLm1hc3F1ZXJh
ZGVzQXNVbmRlZmluZWQoKSA6IHYuaXNVbmRlZmluZWQoKSkpOworfQorCitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfaXNfYm9vbGVhbikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkuaXNCb29sZWFu
KCkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lzX251bWJlcikKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oTExJTlRfT1Bf
QygyKS5qc1ZhbHVlKCkuaXNOdW1iZXIoKSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfaXNfc3RyaW5nKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVU
VVJOKGpzQm9vbGVhbihpc0pTU3RyaW5nKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOworfQor
CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNfb2JqZWN0KQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOKGpzQm9vbGVhbihqc0lzT2JqZWN0VHlwZShMTElO
VF9PUF9DKDIpLmpzVmFsdWUoKSkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2lzX2Z1bmN0aW9uKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJO
KGpzQm9vbGVhbihqc0lzRnVuY3Rpb25UeXBlKExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSkpOwor
fQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaW4pCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKENvbW1vblNsb3dQYXRoczo6b3BJbihl
eGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygzKS5qc1ZhbHVlKCkpKSk7
Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgTExJTlRfUkVUVVJOX1BST0ZJTEVEKG9wX3Jlc29sdmUsIENvbW1v
blNsb3dQYXRoczo6b3BSZXNvbHZlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVy
KHBjWzJdLnUub3BlcmFuZCkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X3Jlc29sdmVfc2tpcCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTl9Q
Uk9GSUxFRCgKKyAgICAgICAgb3BfcmVzb2x2ZV9za2lwLAorICAgICAgICBDb21tb25TbG93UGF0
aHM6Om9wUmVzb2x2ZVNraXAoCisgICAgICAgICAgICBleGVjLAorICAgICAgICAgICAgZXhlYy0+
Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwKKyAgICAgICAgICAgIHBj
WzNdLnUub3BlcmFuZCkpOworfQorCitzdGF0aWMgSlNWYWx1ZSByZXNvbHZlR2xvYmFsKEV4ZWNT
dGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjKQoreworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCk7CisgICAgQVNTRVJUKGdsb2JhbE9iamVjdC0+aXNH
bG9iYWxPYmplY3QoKSk7CisgICAgaW50IHByb3BlcnR5ID0gcGNbMl0udS5vcGVyYW5kOworICAg
IFN0cnVjdHVyZSogc3RydWN0dXJlID0gcGNbM10udS5zdHJ1Y3R1cmUuZ2V0KCk7CisgICAgCisg
ICAgQVNTRVJUX1VOVVNFRChzdHJ1Y3R1cmUsIHN0cnVjdHVyZSAhPSBnbG9iYWxPYmplY3QtPnN0
cnVjdHVyZSgpKTsKKyAgICAKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVCbG9jay0+aWRl
bnRpZmllcihwcm9wZXJ0eSk7CisgICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0KTsK
KyAgICAKKyAgICBpZiAoZ2xvYmFsT2JqZWN0LT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgaWRlbnQs
IHNsb3QpKSB7CisgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gc2xvdC5nZXRWYWx1ZShleGVjLCBp
ZGVudCk7CisgICAgICAgIGlmIChzbG90LmlzQ2FjaGVhYmxlVmFsdWUoKSAmJiAhZ2xvYmFsT2Jq
ZWN0LT5zdHJ1Y3R1cmUoKS0+aXNVbmNhY2hlYWJsZURpY3Rpb25hcnkoKQorICAgICAgICAgICAg
JiYgc2xvdC5zbG90QmFzZSgpID09IGdsb2JhbE9iamVjdCkgeworICAgICAgICAgICAgcGNbM10u
dS5zdHJ1Y3R1cmUuc2V0KAorICAgICAgICAgICAgICAgIGV4ZWMtPmdsb2JhbERhdGEoKSwgY29k
ZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgZ2xvYmFsT2JqZWN0LT5zdHJ1Y3R1cmUoKSk7Cisg
ICAgICAgICAgICBwY1s0XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CisgICAgICAgIH0KKyAgICAg
ICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIGV4ZWMtPmdsb2Jh
bERhdGEoKS5leGNlcHRpb24gPSBjcmVhdGVVbmRlZmluZWRWYXJpYWJsZUVycm9yKGV4ZWMsIGlk
ZW50KTsKKyAgICByZXR1cm4gSlNWYWx1ZSgpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfcmVzb2x2ZV9nbG9iYWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElO
VF9SRVRVUk5fUFJPRklMRUQob3BfcmVzb2x2ZV9nbG9iYWwsIHJlc29sdmVHbG9iYWwoZXhlYywg
cGMpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfZ2xvYmFs
X2R5bmFtaWMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk5fUFJPRklM
RUQob3BfcmVzb2x2ZV9nbG9iYWxfZHluYW1pYywgcmVzb2x2ZUdsb2JhbChleGVjLCBwYykpOwor
fQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV9mb3JfcmVzb2x2ZV9n
bG9iYWxfZHluYW1pYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTl9Q
Uk9GSUxFRChvcF9yZXNvbHZlX2dsb2JhbF9keW5hbWljLCBDb21tb25TbG93UGF0aHM6Om9wUmVz
b2x2ZShleGVjLCBleGVjLT5jb2RlQmxvY2soKS0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQp
KSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yZXNvbHZlX2Jhc2UpCit7
CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGV4ZWMtPmNvZGVC
bG9jaygpLT5pZGVudGlmaWVyKHBjWzJdLnUub3BlcmFuZCk7CisgICAgaWYgKHBjWzNdLnUub3Bl
cmFuZCkgeworICAgICAgICBKU1ZhbHVlIGJhc2UgPSBKU0M6OnJlc29sdmVCYXNlKGV4ZWMsIGlk
ZW50LCBleGVjLT5zY29wZUNoYWluKCksIHRydWUpOworICAgICAgICBpZiAoIWJhc2UpCisgICAg
ICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50
KGV4ZWMsIGlkZW50LnVzdHJpbmcoKSkpOworICAgICAgICBMTElOVF9SRVRVUk4oYmFzZSk7Cisg
ICAgfQorICAgIAorICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9yZXNvbHZlX2Jhc2UsIEpT
Qzo6cmVzb2x2ZUJhc2UoZXhlYywgaWRlbnQsIGV4ZWMtPnNjb3BlQ2hhaW4oKSwgZmFsc2UpKTsK
K30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Vuc3VyZV9wcm9wZXJ0eV9leGlz
dHMpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmpl
Y3QoTExJTlRfT1AoMSkuanNWYWx1ZSgpKTsKKyAgICBQcm9wZXJ0eVNsb3Qgc2xvdChvYmplY3Qp
OworICAgIElkZW50aWZpZXImIGlkZW50ID0gZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIo
cGNbMl0udS5vcGVyYW5kKTsKKyAgICBpZiAoIW9iamVjdC0+Z2V0UHJvcGVydHlTbG90KGV4ZWMs
IGlkZW50LCBzbG90KSkKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlRXJyb3JGb3JJbnZhbGlk
R2xvYmFsQXNzaWdubWVudChleGVjLCBpZGVudC51c3RyaW5nKCkpKTsKKyAgICBMTElOVF9FTkQo
KTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfd2l0aF9iYXNl
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93
UGF0aHM6Om9wUmVzb2x2ZVdpdGhCYXNlKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlm
aWVyKHBjWzNdLnUub3BlcmFuZCksIExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKKyAgICBMTElOVF9PUCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5p
Y2FsbHkgc2hvdWxkIGhhdmUgcHJvZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0
aGUgREZHIHdvbid0IHVzZSBpdC4KKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfd2l0aF90aGlzKQoreworICAgIExMSU5UX0JFR0lO
KCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBDb21tb25TbG93UGF0aHM6Om9wUmVzb2x2ZVdpdGhU
aGlzKGV4ZWMsIGV4ZWMtPmNvZGVCbG9jaygpLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFuZCks
IExMSU5UX09QKDEpKTsKKyAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKKyAgICBMTElOVF9P
UCgyKSA9IHJlc3VsdDsKKyAgICAvLyBGSVhNRTogdGVjaG5pY2FsbHkgc2hvdWxkIGhhdmUgcHJv
ZmlsaW5nLCBidXQgd2UgZG9uJ3QgZG8gaXQgYmVjYXVzZSB0aGUgREZHIHdvbid0IHVzZSBpdC4K
KyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dl
dF9ieV9pZCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSWRlbnRpZmllciYgaWRlbnQgPSBjb2RlQmxvY2st
PmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKTsKKyAgICBKU1ZhbHVlIGJhc2VWYWx1ZSA9IExM
SU5UX09QX0MoMikuanNWYWx1ZSgpOworICAgIFByb3BlcnR5U2xvdCBzbG90KGJhc2VWYWx1ZSk7
CisKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5nZXQoZXhlYywgaWRlbnQsIHNsb3Qp
OworICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOworICAgIExMSU5UX09QKDEpID0gcmVzdWx0
OworCisgICAgaWYgKGJhc2VWYWx1ZS5pc0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVh
YmxlKCkKKyAgICAgICAgJiYgc2xvdC5zbG90QmFzZSgpID09IGJhc2VWYWx1ZQorICAgICAgICAm
JiBzbG90LmNhY2hlZFByb3BlcnR5VHlwZSgpID09IFByb3BlcnR5U2xvdDo6VmFsdWUpIHsKKyAg
ICAgICAgCisgICAgICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7Cisg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAg
ICAgICAKKyAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkK
KyAgICAgICAgICAgICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlD
YWNoaW5nKCkpIHsKKyAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAg
ICAgICAgICBnbG9iYWxEYXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1
cmUpOworICAgICAgICAgICAgcGNbNV0udS5vcGVyYW5kID0gc2xvdC5jYWNoZWRPZmZzZXQoKSAq
IHNpemVvZihKU1ZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwY1tPUENPREVf
TEVOR1RIKG9wX2dldF9ieV9pZCkgLSAxXS51LnByb2ZpbGUtPm1fYnVja2V0c1swXSA9IEpTVmFs
dWU6OmVuY29kZShyZXN1bHQpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfZ2V0X2FyZ3VtZW50c19sZW5ndGgpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAg
IElkZW50aWZpZXImIGlkZW50ID0gY29kZUJsb2NrLT5pZGVudGlmaWVyKHBjWzNdLnUub3BlcmFu
ZCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9PUCgyKS5qc1ZhbHVlKCk7CisgICAg
UHJvcGVydHlTbG90IHNsb3QoYmFzZVZhbHVlKTsKKyAgICBMTElOVF9SRVRVUk4oYmFzZVZhbHVl
LmdldChleGVjLCBpZGVudCwgc2xvdCkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfcHV0X2J5X2lkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBj
b2RlQmxvY2sgPSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBJZGVudGlmaWVyJiBpZGVudCA9IGNv
ZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51Lm9wZXJhbmQpOworICAgIAorICAgIEpTVmFsdWUg
YmFzZVZhbHVlID0gTExJTlRfT1BfQygxKS5qc1ZhbHVlKCk7CisgICAgUHV0UHJvcGVydHlTbG90
IHNsb3QoY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSk7CisgICAgaWYgKHBjWzhdLnUub3BlcmFu
ZCkKKyAgICAgICAgYXNPYmplY3QoYmFzZVZhbHVlKS0+cHV0RGlyZWN0KGdsb2JhbERhdGEsIGlk
ZW50LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7CisgICAgZWxzZQorICAgICAgICBi
YXNlVmFsdWUucHV0KGV4ZWMsIGlkZW50LCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgc2xvdCk7
CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgCisgICAgaWYgKGJhc2VWYWx1ZS5p
c0NlbGwoKQorICAgICAgICAmJiBzbG90LmlzQ2FjaGVhYmxlKCkpIHsKKyAgICAgICAgCisgICAg
ICAgIEpTQ2VsbCogYmFzZUNlbGwgPSBiYXNlVmFsdWUuYXNDZWxsKCk7CisgICAgICAgIFN0cnVj
dHVyZSogc3RydWN0dXJlID0gYmFzZUNlbGwtPnN0cnVjdHVyZSgpOworICAgICAgICAKKyAgICAg
ICAgaWYgKCFzdHJ1Y3R1cmUtPmlzVW5jYWNoZWFibGVEaWN0aW9uYXJ5KCkKKyAgICAgICAgICAg
ICYmICFzdHJ1Y3R1cmUtPnR5cGVJbmZvKCkucHJvaGliaXRzUHJvcGVydHlDYWNoaW5nKCkKKyAg
ICAgICAgICAgICYmIGJhc2VDZWxsID09IHNsb3QuYmFzZSgpKSB7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIGlmIChzbG90LnR5cGUoKSA9PSBQdXRQcm9wZXJ0eVNsb3Q6Ok5ld1Byb3BlcnR5
KSB7CisgICAgICAgICAgICAgICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFyeSgpICYmIHN0
cnVjdHVyZS0+cHJldmlvdXNJRCgpLT5wcm9wZXJ0eVN0b3JhZ2VDYXBhY2l0eSgpID09IHN0cnVj
dHVyZS0+cHJvcGVydHlTdG9yYWdlQ2FwYWNpdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAv
LyBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHNvbWUgb2YgdGhlIG1ldGhvZHMgd2UgY2FsbAorICAg
ICAgICAgICAgICAgICAgICAvLyBiZWxvdyBtYXkgR0MuCisgICAgICAgICAgICAgICAgICAgIHBj
WzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigmbGxpbnRfb3BfcHV0X2J5X2lkKTsK
KworICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVQcm90b3R5cGVDaGFpbihleGVjLCBiYXNl
Q2VsbCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
c3RydWN0dXJlLT5wcmV2aW91c0lEKCktPmlzT2JqZWN0KCkpOworICAgICAgICAgICAgICAgICAg
ICBwY1s0XS51LnN0cnVjdHVyZS5zZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxE
YXRhLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLCBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQo
KSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzVdLnUub3BlcmFuZCA9IHNsb3QuY2FjaGVkT2Zm
c2V0KCkgKiBzaXplb2YoSlNWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHBjWzZdLnUuc3Ry
dWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbERhdGEsIGNvZGVCbG9j
ay0+b3duZXJFeGVjdXRhYmxlKCksIHN0cnVjdHVyZSk7CisgICAgICAgICAgICAgICAgICAgIFN0
cnVjdHVyZUNoYWluKiBjaGFpbiA9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYyk7Cisg
ICAgICAgICAgICAgICAgICAgIEFTU0VSVChjaGFpbik7CisgICAgICAgICAgICAgICAgICAgIHBj
WzddLnUuc3RydWN0dXJlQ2hhaW4uc2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFs
RGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgY2hhaW4pOworICAgICAgICAgICAg
ICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBjWzhdLnUub3BlcmFuZCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHBjWzBdLnUub3Bjb2RlID0gYml0d2lzZV9jYXN0PHZvaWQqPigm
bGxpbnRfb3BfcHV0X2J5X2lkX3RyYW5zaXRpb25fZGlyZWN0KTsKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcGNbMF0udS5vcGNvZGUgPSBiaXR3aXNl
X2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWwpOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGNb
MF0udS5vcGNvZGUgPSBiaXR3aXNlX2Nhc3Q8dm9pZCo+KCZsbGludF9vcF9wdXRfYnlfaWQpOwor
ICAgICAgICAgICAgICAgIHBjWzRdLnUuc3RydWN0dXJlLnNldCgKKyAgICAgICAgICAgICAgICAg
ICAgZ2xvYmFsRGF0YSwgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKSwgc3RydWN0dXJlKTsK
KyAgICAgICAgICAgICAgICBwY1s1XS51Lm9wZXJhbmQgPSBzbG90LmNhY2hlZE9mZnNldCgpICog
c2l6ZW9mKEpTVmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAor
ICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVs
X2J5X2lkKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sg
PSBleGVjLT5jb2RlQmxvY2soKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IExMSU5UX09Q
X0MoMikuanNWYWx1ZSgpLnRvT2JqZWN0KGV4ZWMpOworICAgIGJvb2wgY291bGREZWxldGUgPSBi
YXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVj
LCBjb2RlQmxvY2stPmlkZW50aWZpZXIocGNbM10udS5vcGVyYW5kKSk7CisgICAgTExJTlRfQ0hF
Q0tfRVhDRVBUSU9OKCk7CisgICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBjb2RlQmxvY2stPmlzU3Ry
aWN0TW9kZSgpKQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVu
YWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOworICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4o
Y291bGREZWxldGUpKTsKK30KKworaW5saW5lIEpTVmFsdWUgZ2V0QnlWYWwoRXhlY1N0YXRlKiBl
eGVjLCBKU1ZhbHVlIGJhc2VWYWx1ZSwgSlNWYWx1ZSBzdWJzY3JpcHQpCit7CisgICAgaWYgKExJ
S0VMWShiYXNlVmFsdWUuaXNDZWxsKCkgJiYgc3Vic2NyaXB0LmlzU3RyaW5nKCkpKSB7CisgICAg
ICAgIGlmIChKU1ZhbHVlIHJlc3VsdCA9IGJhc2VWYWx1ZS5hc0NlbGwoKS0+ZmFzdEdldE93blBy
b3BlcnR5KGV4ZWMsIGFzU3RyaW5nKHN1YnNjcmlwdCktPnZhbHVlKGV4ZWMpKSkKKyAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIGlmIChzdWJzY3JpcHQuaXNVSW50
MzIoKSkgeworICAgICAgICB1aW50MzJfdCBpID0gc3Vic2NyaXB0LmFzVUludDMyKCk7CisgICAg
ICAgIGlmIChpc0pTU3RyaW5nKGJhc2VWYWx1ZSkgJiYgYXNTdHJpbmcoYmFzZVZhbHVlKS0+Y2Fu
R2V0SW5kZXgoaSkpCisgICAgICAgICAgICByZXR1cm4gYXNTdHJpbmcoYmFzZVZhbHVlKS0+Z2V0
SW5kZXgoZXhlYywgaSk7CisgICAgICAgIAorICAgICAgICBpZiAoaXNKU0J5dGVBcnJheShiYXNl
VmFsdWUpICYmIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmNhbkFjY2Vzc0luZGV4KGkpKQorICAg
ICAgICAgICAgcmV0dXJuIGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSktPmdldEluZGV4KGV4ZWMsIGkp
OworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgaSk7CisgICAg
fQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgcmV0dXJuIGJhc2VWYWx1ZS5nZXQoZXhlYywgcHJv
cGVydHkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbCkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTl9QUk9GSUxFRChvcF9nZXRf
YnlfdmFsLCBnZXRCeVZhbChleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1Bf
QygzKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dl
dF9hcmd1bWVudF9ieV92YWwpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBKU1ZhbHVlIGFy
Z3VtZW50cyA9IExMSU5UX09QKDIpLmpzVmFsdWUoKTsKKyAgICBpZiAoIWFyZ3VtZW50cykgewor
ICAgICAgICBhcmd1bWVudHMgPSBBcmd1bWVudHM6OmNyZWF0ZShnbG9iYWxEYXRhLCBleGVjKTsK
KyAgICAgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAgICAgIExMSU5UX09QKDIpID0g
YXJndW1lbnRzOworICAgICAgICBleGVjLT51bmNoZWNrZWRSKHVubW9kaWZpZWRBcmd1bWVudHNS
ZWdpc3RlcihwY1syXS51Lm9wZXJhbmQpKSA9IGFyZ3VtZW50czsKKyAgICB9CisgICAgCisgICAg
TExJTlRfUkVUVVJOKGdldEJ5VmFsKGV4ZWMsIGFyZ3VtZW50cywgTExJTlRfT1BfQygzKS5qc1Zh
bHVlKCkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dldF9ieV9wbmFt
ZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX1JFVFVSTihnZXRCeVZhbChleGVj
LCBMTElOVF9PUCgyKS5qc1ZhbHVlKCksIExMSU5UX09QKDMpLmpzVmFsdWUoKSkpOworfQorCitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHV0X2J5X3ZhbCkKK3sKKyAgICBMTElOVF9C
RUdJTigpOworICAgIAorICAgIEpTVmFsdWUgYmFzZVZhbHVlID0gTExJTlRfT1BfQygxKS5qc1Zh
bHVlKCk7CisgICAgSlNWYWx1ZSBzdWJzY3JpcHQgPSBMTElOVF9PUF9DKDIpLmpzVmFsdWUoKTsK
KyAgICBKU1ZhbHVlIHZhbHVlID0gTExJTlRfT1BfQygzKS5qc1ZhbHVlKCk7CisgICAgCisgICAg
aWYgKExJS0VMWShzdWJzY3JpcHQuaXNVSW50MzIoKSkpIHsKKyAgICAgICAgdWludDMyX3QgaSA9
IHN1YnNjcmlwdC5hc1VJbnQzMigpOworICAgICAgICBpZiAoaXNKU0FycmF5KGJhc2VWYWx1ZSkp
IHsKKyAgICAgICAgICAgIEpTQXJyYXkqIGpzQXJyYXkgPSBhc0FycmF5KGJhc2VWYWx1ZSk7Cisg
ICAgICAgICAgICBpZiAoanNBcnJheS0+Y2FuU2V0SW5kZXgoaSkpCisgICAgICAgICAgICAgICAg
anNBcnJheS0+c2V0SW5kZXgoZ2xvYmFsRGF0YSwgaSwgdmFsdWUpOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIEpTQXJyYXk6OnB1dEJ5SW5kZXgoanNBcnJheSwgZXhlYywgaSwg
dmFsdWUpOworICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGlzSlNCeXRlQXJyYXkoYmFzZVZhbHVlKQorICAgICAgICAgICAgJiYgYXNCeXRlQXJyYXkoYmFz
ZVZhbHVlKS0+Y2FuQWNjZXNzSW5kZXgoaSkpIHsKKyAgICAgICAgICAgIEpTQnl0ZUFycmF5KiBq
c0J5dGVBcnJheSA9IGFzQnl0ZUFycmF5KGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAodmFs
dWUuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAgICAganNCeXRlQXJyYXktPnNldEluZGV4KGks
IHZhbHVlLmFzSW50MzIoKSk7CisgICAgICAgICAgICAgICAgTExJTlRfRU5EKCk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAodmFsdWUuaXNOdW1iZXIoKSkgeworICAgICAgICAgICAg
ICAgIGpzQnl0ZUFycmF5LT5zZXRJbmRleChpLCB2YWx1ZS5hc051bWJlcigpKTsKKyAgICAgICAg
ICAgICAgICBMTElOVF9FTkQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBi
YXNlVmFsdWUucHV0KGV4ZWMsIGksIHZhbHVlKTsKKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAg
fQorICAgIAorICAgIElkZW50aWZpZXIgcHJvcGVydHkoZXhlYywgc3Vic2NyaXB0LnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKSk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7CisgICAg
UHV0UHJvcGVydHlTbG90IHNsb3QoZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgpKTsK
KyAgICBiYXNlVmFsdWUucHV0KGV4ZWMsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgTExJ
TlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlfdmFs
KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSBiYXNlVmFsdWUgPSBMTElOVF9P
UF9DKDIpLmpzVmFsdWUoKTsKKyAgICBKU09iamVjdCogYmFzZU9iamVjdCA9IGJhc2VWYWx1ZS50
b09iamVjdChleGVjKTsKKyAgICAKKyAgICBKU1ZhbHVlIHN1YnNjcmlwdCA9IExMSU5UX09QX0Mo
MykuanNWYWx1ZSgpOworICAgIAorICAgIGJvb2wgY291bGREZWxldGU7CisgICAgCisgICAgdWlu
dDMyX3QgaTsKKyAgICBpZiAoc3Vic2NyaXB0LmdldFVJbnQzMihpKSkKKyAgICAgICAgY291bGRE
ZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5kZWxldGVQcm9wZXJ0eUJ5SW5kZXgo
YmFzZU9iamVjdCwgZXhlYywgaSk7CisgICAgZWxzZSB7CisgICAgICAgIExMSU5UX0NIRUNLX0VY
Q0VQVElPTigpOworICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5KGV4ZWMsIHN1YnNjcmlwdC50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICBMTElOVF9DSEVDS19FWENFUFRJ
T04oKTsKKyAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqZWN0LT5tZXRob2RUYWJsZSgpLT5k
ZWxldGVQcm9wZXJ0eShiYXNlT2JqZWN0LCBleGVjLCBwcm9wZXJ0eSk7CisgICAgfQorICAgIAor
ICAgIGlmICghY291bGREZWxldGUgJiYgZXhlYy0+Y29kZUJsb2NrKCktPmlzU3RyaWN0TW9kZSgp
KQorICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlVuYWJsZSB0byBk
ZWxldGUgcHJvcGVydHkuIikpOworICAgIAorICAgIExMSU5UX1JFVFVSTihqc0Jvb2xlYW4oY291
bGREZWxldGUpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9ieV9p
bmRleCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX09QX0MoMSkuanNWYWx1ZSgp
LnB1dChleGVjLCBwY1syXS51Lm9wZXJhbmQsIExMSU5UX09QX0MoMykuanNWYWx1ZSgpKTsKKyAg
ICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9n
ZXR0ZXJfc2V0dGVyKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQVNTRVJUKExMSU5UX09Q
KDEpLmpzVmFsdWUoKS5pc09iamVjdCgpKTsKKyAgICBKU09iamVjdCogYmFzZU9iaiA9IGFzT2Jq
ZWN0KExMSU5UX09QKDEpLmpzVmFsdWUoKSk7CisgICAgCisgICAgR2V0dGVyU2V0dGVyKiBhY2Nl
c3NvciA9IEdldHRlclNldHRlcjo6Y3JlYXRlKGV4ZWMpOworICAgIExMSU5UX0NIRUNLX0VYQ0VQ
VElPTigpOworICAgIAorICAgIEpTVmFsdWUgZ2V0dGVyID0gTExJTlRfT1AoMykuanNWYWx1ZSgp
OworICAgIEpTVmFsdWUgc2V0dGVyID0gTExJTlRfT1AoNCkuanNWYWx1ZSgpOworICAgIEFTU0VS
VChnZXR0ZXIuaXNPYmplY3QoKSB8fCBnZXR0ZXIuaXNVbmRlZmluZWQoKSk7CisgICAgQVNTRVJU
KHNldHRlci5pc09iamVjdCgpIHx8IHNldHRlci5pc1VuZGVmaW5lZCgpKTsKKyAgICBBU1NFUlQo
Z2V0dGVyLmlzT2JqZWN0KCkgfHwgc2V0dGVyLmlzT2JqZWN0KCkpOworICAgIAorICAgIGlmICgh
Z2V0dGVyLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIGFjY2Vzc29yLT5zZXRHZXR0ZXIoZ2xvYmFs
RGF0YSwgYXNPYmplY3QoZ2V0dGVyKSk7CisgICAgaWYgKCFzZXR0ZXIuaXNVbmRlZmluZWQoKSkK
KyAgICAgICAgYWNjZXNzb3ItPnNldFNldHRlcihnbG9iYWxEYXRhLCBhc09iamVjdChzZXR0ZXIp
KTsKKyAgICBiYXNlT2JqLT5wdXREaXJlY3RBY2Nlc3NvcigKKyAgICAgICAgZ2xvYmFsRGF0YSwK
KyAgICAgICAgZXhlYy0+Y29kZUJsb2NrKCktPmlkZW50aWZpZXIocGNbMl0udS5vcGVyYW5kKSwK
KyAgICAgICAgYWNjZXNzb3IsIEFjY2Vzc29yKTsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2ptcF9zY29wZXMpCit7CisgICAgTExJTlRfQkVH
SU4oKTsKKyAgICB1bnNpZ25lZCBjb3VudCA9IHBjWzFdLnUub3BlcmFuZDsKKyAgICBTY29wZUNo
YWluTm9kZSogdG1wID0gZXhlYy0+c2NvcGVDaGFpbigpOworICAgIHdoaWxlIChjb3VudC0tKQor
ICAgICAgICB0bXAgPSB0bXAtPnBvcCgpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4odG1wKTsK
KyAgICBwYyArPSBwY1syXS51Lm9wZXJhbmQ7CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5U
X1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9qdHJ1ZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIExMSU5UX0JSQU5DSChvcF9qdHJ1ZSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9Cb29s
ZWFuKGV4ZWMpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2pmYWxzZSkK
K3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX0JSQU5DSChvcF9qZmFsc2UsICFMTElO
VF9PUF9DKDEpLmpzVmFsdWUoKS50b0Jvb2xlYW4oZXhlYykpOworfQorCitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfamxlc3MpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElO
VF9CUkFOQ0gob3Bfamxlc3MsIGpzTGVzczx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEpLmpzVmFs
dWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2pubGVzcykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX0JS
QU5DSChvcF9qbmxlc3MsICFqc0xlc3M8dHJ1ZT4oZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVl
KCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9qZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5UX0JS
QU5DSChvcF9qZ3JlYXRlciwganNMZXNzPGZhbHNlPihleGVjLCBMTElOVF9PUF9DKDIpLmpzVmFs
dWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX2puZ3JlYXRlcikKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExMSU5U
X0JSQU5DSChvcF9qbmdyZWF0ZXIsICFqc0xlc3M8ZmFsc2U+KGV4ZWMsIExMSU5UX09QX0MoMiku
anNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKSkpOworfQorCitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfamxlc3NlcSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExM
SU5UX0JSQU5DSChvcF9qbGVzc2VxLCBqc0xlc3NFcTx0cnVlPihleGVjLCBMTElOVF9PUF9DKDEp
LmpzVmFsdWUoKSwgTExJTlRfT1BfQygyKS5qc1ZhbHVlKCkpKTsKK30KKworTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX2pubGVzc2VxKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAg
TExJTlRfQlJBTkNIKG9wX2pubGVzc2VxLCAhanNMZXNzRXE8dHJ1ZT4oZXhlYywgTExJTlRfT1Bf
QygxKS5qc1ZhbHVlKCksIExMSU5UX09QX0MoMikuanNWYWx1ZSgpKSk7Cit9CisKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9qZ3JlYXRlcmVxKQoreworICAgIExMSU5UX0JFR0lOKCk7
CisgICAgTExJTlRfQlJBTkNIKG9wX2pncmVhdGVyZXEsIGpzTGVzc0VxPGZhbHNlPihleGVjLCBM
TElOVF9PUF9DKDIpLmpzVmFsdWUoKSwgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkpKTsKK30KKwor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2puZ3JlYXRlcmVxKQoreworICAgIExMSU5U
X0JFR0lOKCk7CisgICAgTExJTlRfQlJBTkNIKG9wX2puZ3JlYXRlcmVxLCAhanNMZXNzRXE8ZmFs
c2U+KGV4ZWMsIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDEpLmpzVmFsdWUo
KSkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfc3dpdGNoX2ltbSkKK3sK
KyAgICBMTElOVF9CRUdJTigpOworICAgIEpTVmFsdWUgc2NydXRpbmVlID0gTExJTlRfT1BfQygz
KS5qc1ZhbHVlKCk7CisgICAgQVNTRVJUKHNjcnV0aW5lZS5pc0RvdWJsZSgpKTsKKyAgICBkb3Vi
bGUgdmFsdWUgPSBzY3J1dGluZWUuYXNEb3VibGUoKTsKKyAgICBpbnQzMl90IGludFZhbHVlID0g
c3RhdGljX2Nhc3Q8aW50MzJfdD4odmFsdWUpOworICAgIGludCBkZWZhdWx0T2Zmc2V0ID0gcGNb
Ml0udS5vcGVyYW5kOworICAgIGlmICh2YWx1ZSA9PSBpbnRWYWx1ZSkgeworICAgICAgICBDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IGV4ZWMtPmNvZGVCbG9jaygpOworICAgICAgICBwYyArPSBjb2Rl
QmxvY2stPmltbWVkaWF0ZVN3aXRjaEp1bXBUYWJsZShwY1sxXS51Lm9wZXJhbmQpLm9mZnNldEZv
clZhbHVlKGludFZhbHVlLCBkZWZhdWx0T2Zmc2V0KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcGMg
Kz0gZGVmYXVsdE9mZnNldDsKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3N3aXRjaF9zdHJpbmcpCit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAg
ICBKU1ZhbHVlIHNjcnV0aW5lZSA9IExMSU5UX09QX0MoMykuanNWYWx1ZSgpOworICAgIGludCBk
ZWZhdWx0T2Zmc2V0ID0gcGNbMl0udS5vcGVyYW5kOworICAgIGlmICghc2NydXRpbmVlLmlzU3Ry
aW5nKCkpCisgICAgICAgIHBjICs9IGRlZmF1bHRPZmZzZXQ7CisgICAgZWxzZSB7CisgICAgICAg
IENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgICAgIHBjICs9
IGNvZGVCbG9jay0+c3RyaW5nU3dpdGNoSnVtcFRhYmxlKHBjWzFdLnUub3BlcmFuZCkub2Zmc2V0
Rm9yVmFsdWUoYXNTdHJpbmcoc2NydXRpbmVlKS0+dmFsdWUoZXhlYykuaW1wbCgpLCBkZWZhdWx0
T2Zmc2V0KTsKKyAgICB9CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9uZXdfZnVuYykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVC
bG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgQVNTRVJUKGNvZGVCbG9j
ay0+Y29kZVR5cGUoKSAhPSBGdW5jdGlvbkNvZGUKKyAgICAgICAgICAgfHwgIWNvZGVCbG9jay0+
bmVlZHNGdWxsU2NvcGVDaGFpbigpCisgICAgICAgICAgIHx8IGV4ZWMtPnVuY2hlY2tlZFIoY29k
ZUJsb2NrLT5hY3RpdmF0aW9uUmVnaXN0ZXIoKSkuanNWYWx1ZSgpKTsKKyNpZiBMTElOVF9TTE9X
X1BBVEhfVFJBQ0lORworICAgIGRhdGFMb2coIkNyZWF0aW5nIGZ1bmN0aW9uIVxuIik7CisjZW5k
aWYKKyAgICBMTElOVF9SRVRVUk4oY29kZUJsb2NrLT5mdW5jdGlvbkRlY2wocGNbMl0udS5vcGVy
YW5kKS0+bWFrZShleGVjLCBleGVjLT5zY29wZUNoYWluKCkpKTsKK30KKworTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX25ld19mdW5jX2V4cCkKK3sKKyAgICBMTElOVF9CRUdJTigpOwor
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBmdW5jdGlvbiA9IGNvZGVCbG9jay0+ZnVuY3Rpb25FeHByKHBjWzJdLnUu
b3BlcmFuZCk7CisgICAgSlNGdW5jdGlvbiogZnVuYyA9IGZ1bmN0aW9uLT5tYWtlKGV4ZWMsIGV4
ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgCisgICAgaWYgKCFmdW5jdGlvbi0+bmFtZSgpLmlzTnVs
bCgpKSB7CisgICAgICAgIEpTU3RhdGljU2NvcGVPYmplY3QqIGZ1bmN0aW9uU2NvcGVPYmplY3Qg
PSBKU1N0YXRpY1Njb3BlT2JqZWN0OjpjcmVhdGUoZXhlYywgZnVuY3Rpb24tPm5hbWUoKSwgZnVu
YywgUmVhZE9ubHkgfCBEb250RGVsZXRlKTsKKyAgICAgICAgZnVuYy0+c2V0U2NvcGUoZ2xvYmFs
RGF0YSwgZnVuYy0+c2NvcGUoKS0+cHVzaChmdW5jdGlvblNjb3BlT2JqZWN0KSk7CisgICAgfQor
ICAgIAorICAgIExMSU5UX1JFVFVSTihmdW5jKTsKK30KKworc3RhdGljIFNsb3dQYXRoUmV0dXJu
VHlwZSBoYW5kbGVIb3N0Q2FsbChFeGVjU3RhdGUqIGV4ZWNDYWxsZWUsIEluc3RydWN0aW9uKiBw
YywgSlNWYWx1ZSBjYWxsZWUsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyAgICBF
eGVjU3RhdGUqIGV4ZWMgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOworICAgIEpTR2xvYmFs
RGF0YSYgZ2xvYmFsRGF0YSA9IGV4ZWMtPmdsb2JhbERhdGEoKTsKKyAgICAKKyAgICBleGVjQ2Fs
bGVlLT5zZXRTY29wZUNoYWluKGV4ZWMtPnNjb3BlQ2hhaW4oKSk7CisgICAgZXhlY0NhbGxlZS0+
c2V0Q29kZUJsb2NrKDApOworICAgIGV4ZWNDYWxsZWUtPmNsZWFyUmV0dXJuUEMoKTsKKworICAg
IGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgIENhbGxEYXRhIGNhbGxEYXRhOwor
ICAgICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKGNhbGxlZSwgY2FsbERhdGEp
OworICAgIAorICAgICAgICBBU1NFUlQoY2FsbFR5cGUgIT0gQ2FsbFR5cGVKUyk7CisgICAgCisg
ICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZUhvc3QpIHsKKyAgICAgICAgICAgIGdsb2Jh
bERhdGEuaG9zdENhbGxSZXR1cm5WYWx1ZSA9IEpTVmFsdWU6OmRlY29kZShjYWxsRGF0YS5uYXRp
dmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBMTElO
VF9DQUxMX1JFVFVSTihleGVjQ2FsbGVlLCBwYywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oZ2V0
SG9zdENhbGxSZXR1cm5WYWx1ZSkpOworICAgICAgICB9CisgICAgICAgIAorI2lmIExMSU5UX1NM
T1dfUEFUSF9UUkFDSU5HCisgICAgICAgIGRhdGFMb2coIkNhbGwgY2FsbGVlIGlzIG5vdCBhIGZ1
bmN0aW9uOiAlc1xuIiwgY2FsbGVlLmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICAgICAg
QVNTRVJUKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSk7CisgICAgICAgIExMSU5UX0NBTExfVEhS
T1coZXhlYywgcGMsIGNyZWF0ZU5vdEFGdW5jdGlvbkVycm9yKGV4ZWMsIGNhbGxlZSkpOworICAg
IH0KKworICAgIEFTU0VSVChraW5kID09IENvZGVGb3JDb25zdHJ1Y3QpOworICAgIAorICAgIENv
bnN0cnVjdERhdGEgY29uc3RydWN0RGF0YTsKKyAgICBDb25zdHJ1Y3RUeXBlIGNvbnN0cnVjdFR5
cGUgPSBnZXRDb25zdHJ1Y3REYXRhKGNhbGxlZSwgY29uc3RydWN0RGF0YSk7CisgICAgCisgICAg
QVNTRVJUKGNvbnN0cnVjdFR5cGUgIT0gQ29uc3RydWN0VHlwZUpTKTsKKyAgICAKKyAgICBpZiAo
Y29uc3RydWN0VHlwZSA9PSBDb25zdHJ1Y3RUeXBlSG9zdCkgeworICAgICAgICBnbG9iYWxEYXRh
Lmhvc3RDYWxsUmV0dXJuVmFsdWUgPSBKU1ZhbHVlOjpkZWNvZGUoY29uc3RydWN0RGF0YS5uYXRp
dmUuZnVuY3Rpb24oZXhlY0NhbGxlZSkpOworCisgICAgICAgIExMSU5UX0NBTExfUkVUVVJOKGV4
ZWNDYWxsZWUsIHBjLCByZWludGVycHJldF9jYXN0PHZvaWQqPihnZXRIb3N0Q2FsbFJldHVyblZh
bHVlKSk7CisgICAgfQorICAgIAorI2lmIExMSU5UX1NMT1dfUEFUSF9UUkFDSU5HCisgICAgZGF0
YUxvZygiQ29uc3RydWN0b3IgY2FsbGVlIGlzIG5vdCBhIGZ1bmN0aW9uOiAlc1xuIiwgY2FsbGVl
LmRlc2NyaXB0aW9uKCkpOworI2VuZGlmCisKKyAgICBBU1NFUlQoY29uc3RydWN0VHlwZSA9PSBD
b25zdHJ1Y3RUeXBlTm9uZSk7CisgICAgTExJTlRfQ0FMTF9USFJPVyhleGVjLCBwYywgY3JlYXRl
Tm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgY2FsbGVlKSk7Cit9CisKK2lubGluZSBTbG93UGF0
aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24q
IHBjLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSwg
TExJbnRDYWxsTGlua0luZm8qIGNhbGxMaW5rSW5mbyA9IDApCit7CisjaWYgTExJTlRfU0xPV19Q
QVRIX1RSQUNJTkcKKyAgICBkYXRhTG9nKCJQZXJmb3JtaW5nIGNhbGwgd2l0aCByZWNvcmRlZCBQ
QyA9ICVwXG4iLCBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpLT5jdXJyZW50VlBDKCkpOworI2Vu
ZGlmCisKKyAgICBKU0NlbGwqIGNhbGxlZUFzRnVuY3Rpb25DZWxsID0gZ2V0SlNGdW5jdGlvbihj
YWxsZWVBc1ZhbHVlKTsKKyAgICBpZiAoIWNhbGxlZUFzRnVuY3Rpb25DZWxsKQorICAgICAgICBy
ZXR1cm4gaGFuZGxlSG9zdENhbGwoZXhlY0NhbGxlZSwgcGMsIGNhbGxlZUFzVmFsdWUsIGtpbmQp
OworICAgIAorICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGFzRnVuY3Rpb24oY2FsbGVlQXNGdW5j
dGlvbkNlbGwpOworICAgIFNjb3BlQ2hhaW5Ob2RlKiBzY29wZSA9IGNhbGxlZS0+c2NvcGVVbmNo
ZWNrZWQoKTsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSAqc2NvcGUtPmdsb2JhbERh
dGE7CisgICAgZXhlY0NhbGxlZS0+c2V0U2NvcGVDaGFpbihzY29wZSk7CisgICAgRXhlY3V0YWJs
ZUJhc2UqIGV4ZWN1dGFibGUgPSBjYWxsZWUtPmV4ZWN1dGFibGUoKTsKKyAgICAKKyAgICBNYWNy
b0Fzc2VtYmxlckNvZGVQdHIgY29kZVB0cjsKKyAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7
CisgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCisgICAgICAgIGNvZGVQdHIg
PSBleGVjdXRhYmxlLT5nZW5lcmF0ZWRKSVRDb2RlRm9yKGtpbmQpLmFkZHJlc3NGb3JDYWxsKCk7
CisgICAgZWxzZSB7CisgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRh
YmxlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CisgICAg
ICAgIEpTT2JqZWN0KiBlcnJvciA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+Y29tcGlsZUZvcihleGVj
Q2FsbGVlLCBjYWxsZWUtPnNjb3BlKCksIGtpbmQpOworICAgICAgICBpZiAoZXJyb3IpCisgICAg
ICAgICAgICBMTElOVF9DQUxMX1RIUk9XKGV4ZWNDYWxsZWUtPmNhbGxlckZyYW1lKCksIHBjLCBl
cnJvcik7CisgICAgICAgIGNvZGVCbG9jayA9ICZmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRl
ZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgICAgICBBU1NFUlQoY29kZUJsb2NrKTsKKyAgICAgICAg
aWYgKGV4ZWNDYWxsZWUtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCkgPCBzdGF0aWNfY2Fz
dDxzaXplX3Q+KGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKSkKKyAgICAgICAgICAgIGNvZGVQ
dHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmdlbmVyYXRlZEpJVENvZGVXaXRoQXJpdHlDaGVja0Zv
cihraW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgY29kZVB0ciA9IGZ1bmN0aW9uRXhl
Y3V0YWJsZS0+Z2VuZXJhdGVkSklUQ29kZUZvcihraW5kKS5hZGRyZXNzRm9yQ2FsbCgpOworICAg
IH0KKyAgICAKKyAgICBpZiAoY2FsbExpbmtJbmZvKSB7CisgICAgICAgIGlmIChjYWxsTGlua0lu
Zm8tPmlzT25MaXN0KCkpCisgICAgICAgICAgICBjYWxsTGlua0luZm8tPnJlbW92ZSgpOworICAg
ICAgICBFeGVjU3RhdGUqIGV4ZWNDYWxsZXIgPSBleGVjQ2FsbGVlLT5jYWxsZXJGcmFtZSgpOwor
ICAgICAgICBjYWxsTGlua0luZm8tPmNhbGxlZS5zZXQoZ2xvYmFsRGF0YSwgZXhlY0NhbGxlci0+
Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpLCBjYWxsZWUpOworICAgICAgICBjYWxsTGlu
a0luZm8tPmxhc3RTZWVuQ2FsbGVlLnNldChnbG9iYWxEYXRhLCBleGVjQ2FsbGVyLT5jb2RlQmxv
Y2soKS0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlZSk7CisgICAgICAgIGNhbGxMaW5rSW5mby0+
bWFjaGluZUNvZGVUYXJnZXQgPSBjb2RlUHRyOworICAgICAgICBpZiAoY29kZUJsb2NrKQorICAg
ICAgICAgICAgY29kZUJsb2NrLT5saW5rSW5jb21pbmdDYWxsKGNhbGxMaW5rSW5mbyk7CisgICAg
fQorICAgIAorICAgIExMSU5UX0NBTExfUkVUVVJOKGV4ZWNDYWxsZWUsIHBjLCBjb2RlUHRyLmV4
ZWN1dGFibGVBZGRyZXNzKCkpOworfQorCitpbmxpbmUgU2xvd1BhdGhSZXR1cm5UeXBlIGdlbmVy
aWNDYWxsKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQpCit7CisgICAgLy8gVGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBh
IGNhbGwgZnJhbWUuCisgICAgLy8gLSBGaWd1cmUgb3V0IHdoYXQgdG8gY2FsbCBhbmQgY29tcGls
ZSBpdCBpZiBuZWNlc3NhcnkuCisgICAgLy8gLSBJZiBwb3NzaWJsZSwgbGluayB0aGUgY2FsbCdz
IGlubGluZSBjYWNoZS4KKyAgICAvLyAtIFJldHVybiBhIHR1cGxlIG9mIG1hY2hpbmUgY29kZSBh
ZGRyZXNzIHRvIGNhbGwgYW5kIHRoZSBuZXcgY2FsbCBmcmFtZS4KKyAgICAKKyAgICBKU1ZhbHVl
IGNhbGxlZUFzVmFsdWUgPSBMTElOVF9PUF9DKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVj
U3RhdGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIAorICAgIGV4
ZWNDYWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFuZCk7
CisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxs
ZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOworICAgIAor
ICAgIEFTU0VSVChwY1s0XS51LmNhbGxMaW5rSW5mbyk7CisgICAgcmV0dXJuIHNldFVwQ2FsbChl
eGVjQ2FsbGVlLCBwYywga2luZCwgY2FsbGVlQXNWYWx1ZSwgcGNbNF0udS5jYWxsTGlua0luZm8p
OworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbCkKK3sKKyAgICBMTElO
VF9CRUdJTl9OT19TRVRfUEMoKTsKKyAgICByZXR1cm4gZ2VuZXJpY0NhbGwoZXhlYywgcGMsIENv
ZGVGb3JDYWxsKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVj
dCkKK3sKKyAgICBMTElOVF9CRUdJTl9OT19TRVRfUEMoKTsKKyAgICByZXR1cm4gZ2VuZXJpY0Nh
bGwoZXhlYywgcGMsIENvZGVGb3JDb25zdHJ1Y3QpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVD
TChzbG93X3BhdGhfY2FsbF92YXJhcmdzKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgLy8g
VGhpcyBuZWVkcyB0bzoKKyAgICAvLyAtIFNldCB1cCBhIGNhbGwgZnJhbWUgd2hpbGUgcmVzcGVj
dGluZyB0aGUgdmFyaWFibGUgYXJndW1lbnRzLgorICAgIC8vIC0gRmlndXJlIG91dCB3aGF0IHRv
IGNhbGwgYW5kIGNvbXBpbGUgaXQgaWYgbmVjZXNzYXJ5LgorICAgIC8vIC0gUmV0dXJuIGEgdHVw
bGUgb2YgbWFjaGluZSBjb2RlIGFkZHJlc3MgdG8gY2FsbCBhbmQgdGhlIG5ldyBjYWxsIGZyYW1l
LgorICAgIAorICAgIEpTVmFsdWUgY2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QX0MoMSkuanNWYWx1
ZSgpOworICAgIAorICAgIEV4ZWNTdGF0ZSogZXhlY0NhbGxlZSA9IGxvYWRWYXJhcmdzKAorICAg
ICAgICBleGVjLCAmZ2xvYmFsRGF0YS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCksCisgICAg
ICAgIExMSU5UX09QX0MoMikuanNWYWx1ZSgpLCBMTElOVF9PUF9DKDMpLmpzVmFsdWUoKSwgcGNb
NF0udS5vcGVyYW5kKTsKKyAgICBMTElOVF9DQUxMX0NIRUNLX0VYQ0VQVElPTihleGVjLCBwYyk7
CisgICAgCisgICAgZXhlY0NhbGxlZS0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkg
PSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWNDYWxsZWUtPnNldENhbGxlckZyYW1lKGV4ZWMpOwor
ICAgIGV4ZWMtPnVuY2hlY2tlZFIoUmVnaXN0ZXJGaWxlOjpBcmd1bWVudENvdW50KS50YWcoKSA9
IGJpdHdpc2VfY2FzdDxpbnQzMl90PihwYyArIE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdz
KSk7CisgICAgCisgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNh
bGwsIGNhbGxlZUFzVmFsdWUpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Y2FsbF9ldmFsKQoreworICAgIExMSU5UX0JFR0lOX05PX1NFVF9QQygpOworICAgIEpTVmFsdWUg
Y2FsbGVlQXNWYWx1ZSA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICAKKyAgICBFeGVjU3Rh
dGUqIGV4ZWNDYWxsZWUgPSBleGVjICsgcGNbM10udS5vcGVyYW5kOworICAgIAorICAgIGV4ZWND
YWxsZWUtPnNldEFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKHBjWzJdLnUub3BlcmFuZCk7Cisg
ICAgZXhlY0NhbGxlZS0+c2V0Q2FsbGVyRnJhbWUoZXhlYyk7CisgICAgZXhlY0NhbGxlZS0+dW5j
aGVja2VkUihSZWdpc3RlckZpbGU6OkNhbGxlZSkgPSBjYWxsZWVBc1ZhbHVlOworICAgIGV4ZWND
YWxsZWUtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpKTsKKyAgICBleGVjQ2FsbGVl
LT5zZXRSZXR1cm5QQyhiaXR3aXNlX2Nhc3Q8SW5zdHJ1Y3Rpb24qPigmbGxpbnRfZ2VuZXJpY19y
ZXR1cm5fcG9pbnQpKTsKKyAgICBleGVjQ2FsbGVlLT5zZXRDb2RlQmxvY2soMCk7CisgICAgZXhl
Yy0+dW5jaGVja2VkUihSZWdpc3RlckZpbGU6OkFyZ3VtZW50Q291bnQpLnRhZygpID0gYml0d2lz
ZV9jYXN0PGludDMyX3Q+KHBjICsgT1BDT0RFX0xFTkdUSChvcF9jYWxsX2V2YWwpKTsKKyAgICAK
KyAgICBpZiAoIWlzSG9zdEZ1bmN0aW9uKGNhbGxlZUFzVmFsdWUsIGdsb2JhbEZ1bmNFdmFsKSkK
KyAgICAgICAgcmV0dXJuIHNldFVwQ2FsbChleGVjQ2FsbGVlLCBwYywgQ29kZUZvckNhbGwsIGNh
bGxlZUFzVmFsdWUpOworICAgIAorICAgIGdsb2JhbERhdGEuaG9zdENhbGxSZXR1cm5WYWx1ZSA9
IGV2YWwoZXhlY0NhbGxlZSk7CisgICAgTExJTlRfQ0FMTF9SRVRVUk4oZXhlY0NhbGxlZSwgcGMs
IHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGdldEhvc3RDYWxsUmV0dXJuVmFsdWUpKTsKK30KKwor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RlYXJfb2ZmX2FjdGl2YXRpb24pCit7Cisg
ICAgTExJTlRfQkVHSU4oKTsKKyAgICBBU1NFUlQoZXhlYy0+Y29kZUJsb2NrKCktPm5lZWRzRnVs
bFNjb3BlQ2hhaW4oKSk7CisgICAgSlNWYWx1ZSBhY3RpdmF0aW9uVmFsdWUgPSBMTElOVF9PUCgx
KS5qc1ZhbHVlKCk7CisgICAgaWYgKCFhY3RpdmF0aW9uVmFsdWUpIHsKKyAgICAgICAgaWYgKEpT
VmFsdWUgdiA9IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBj
WzJdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSkgeworICAgICAgICAgICAgaWYgKCFleGVjLT5jb2Rl
QmxvY2soKS0+aXNTdHJpY3RNb2RlKCkpCisgICAgICAgICAgICAgICAgYXNBcmd1bWVudHModikt
PnRlYXJPZmYoZXhlYyk7CisgICAgICAgIH0KKyAgICAgICAgTExJTlRfRU5EKCk7CisgICAgfQor
ICAgIEpTQWN0aXZhdGlvbiogYWN0aXZhdGlvbiA9IGFzQWN0aXZhdGlvbihhY3RpdmF0aW9uVmFs
dWUpOworICAgIGFjdGl2YXRpb24tPnRlYXJPZmYoZ2xvYmFsRGF0YSk7CisgICAgaWYgKEpTVmFs
dWUgdiA9IGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyKHBjWzJd
LnUub3BlcmFuZCkpLmpzVmFsdWUoKSkKKyAgICAgICAgYXNBcmd1bWVudHModiktPmRpZFRlYXJP
ZmZBY3RpdmF0aW9uKGdsb2JhbERhdGEsIGFjdGl2YXRpb24pOworICAgIExMSU5UX0VORCgpOwor
fQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdGVhcl9vZmZfYXJndW1lbnRzKQor
eworICAgIExMSU5UX0JFR0lOKCk7CisgICAgQVNTRVJUKGV4ZWMtPmNvZGVCbG9jaygpLT51c2Vz
QXJndW1lbnRzKCkgJiYgIWV4ZWMtPmNvZGVCbG9jaygpLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkp
OworICAgIGFzQXJndW1lbnRzKGV4ZWMtPnVuY2hlY2tlZFIodW5tb2RpZmllZEFyZ3VtZW50c1Jl
Z2lzdGVyKHBjWzFdLnUub3BlcmFuZCkpLmpzVmFsdWUoKSktPnRlYXJPZmYoZXhlYyk7CisgICAg
TExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdHJjYXQp
Cit7CisgICAgTExJTlRfQkVHSU4oKTsKKyAgICBMTElOVF9SRVRVUk4oanNTdHJpbmcoZXhlYywg
JkxMSU5UX09QKDIpLCBwY1szXS51Lm9wZXJhbmQpKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RF
Q0woc2xvd19wYXRoX3RvX3ByaW1pdGl2ZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIExM
SU5UX1JFVFVSTihMTElOVF9PUF9DKDIpLmpzVmFsdWUoKS50b1ByaW1pdGl2ZShleGVjKSk7Cit9
CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9nZXRfcG5hbWVzKQoreworICAgIExM
SU5UX0JFR0lOKCk7CisgICAgSlNWYWx1ZSB2ID0gTExJTlRfT1AoMikuanNWYWx1ZSgpOworICAg
IGlmICh2LmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgcGMgKz0gcGNbNV0udS5vcGVy
YW5kOworICAgICAgICBMTElOVF9FTkQoKTsKKyAgICB9CisgICAgCisgICAgSlNPYmplY3QqIG8g
PSB2LnRvT2JqZWN0KGV4ZWMpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gby0+c3RydWN0
dXJlKCk7CisgICAgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcioganNQcm9wZXJ0eU5hbWVJdGVyYXRv
ciA9IHN0cnVjdHVyZS0+ZW51bWVyYXRpb25DYWNoZSgpOworICAgIGlmICghanNQcm9wZXJ0eU5h
bWVJdGVyYXRvciB8fCBqc1Byb3BlcnR5TmFtZUl0ZXJhdG9yLT5jYWNoZWRQcm90b3R5cGVDaGFp
bigpICE9IHN0cnVjdHVyZS0+cHJvdG90eXBlQ2hhaW4oZXhlYykpCisgICAgICAgIGpzUHJvcGVy
dHlOYW1lSXRlcmF0b3IgPSBKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywgbyk7
CisgICAgCisgICAgTExJTlRfT1AoMSkgPSBKU1ZhbHVlKGpzUHJvcGVydHlOYW1lSXRlcmF0b3Ip
OworICAgIExMSU5UX09QKDIpID0gSlNWYWx1ZShvKTsKKyAgICBMTElOVF9PUCgzKSA9IFJlZ2lz
dGVyOjp3aXRoSW50KDApOworICAgIExMSU5UX09QKDQpID0gUmVnaXN0ZXI6OndpdGhJbnQoanNQ
cm9wZXJ0eU5hbWVJdGVyYXRvci0+c2l6ZSgpKTsKKyAgICAKKyAgICBwYyArPSBPUENPREVfTEVO
R1RIKG9wX2dldF9wbmFtZXMpOworICAgIExMSU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfbmV4dF9wbmFtZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAg
IEpTT2JqZWN0KiBiYXNlID0gYXNPYmplY3QoTExJTlRfT1AoMikuanNWYWx1ZSgpKTsKKyAgICBK
U1N0cmluZyogcHJvcGVydHkgPSBhc1N0cmluZyhMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAg
IGlmIChiYXNlLT5oYXNQcm9wZXJ0eShleGVjLCBJZGVudGlmaWVyKGV4ZWMsIHByb3BlcnR5LT52
YWx1ZShleGVjKSkpKSB7CisgICAgICAgIC8vIEdvIHRvIHRhcmdldC4KKyAgICAgICAgcGMgKz0g
cGNbNl0udS5vcGVyYW5kOworICAgIH0gLy8gRWxzZSwgZG9uJ3QgY2hhbmdlIHRoZSBQQywgc28g
dGhlIGludGVycHJldGVyIHdpbGwgcmVsb29wLgorICAgIExMSU5UX0VORCgpOworfQorCitMTElO
VF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHVzaF9zY29wZSkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIEpTVmFsdWUgdiA9IExMSU5UX09QKDEpLmpzVmFsdWUoKTsKKyAgICBKU09iamVj
dCogbyA9IHYudG9PYmplY3QoZXhlYyk7CisgICAgTExJTlRfQ0hFQ0tfRVhDRVBUSU9OKCk7Cisg
ICAgCisgICAgTExJTlRfT1AoMSkgPSBvOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+
c2NvcGVDaGFpbigpLT5wdXNoKG8pKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30KKworTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3BvcF9zY29wZSkKK3sKKyAgICBMTElOVF9CRUdJ
TigpOworICAgIGV4ZWMtPnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wb3AoKSk7
CisgICAgTExJTlRfRU5EKCk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9w
dXNoX25ld19zY29wZSkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gZXhlYy0+Y29kZUJsb2NrKCk7CisgICAgSlNPYmplY3QqIHNjb3BlID0gSlNTdGF0
aWNTY29wZU9iamVjdDo6Y3JlYXRlKGV4ZWMsIGNvZGVCbG9jay0+aWRlbnRpZmllcihwY1syXS51
Lm9wZXJhbmQpLCBMTElOVF9PUCgzKS5qc1ZhbHVlKCksIERvbnREZWxldGUpOworICAgIGV4ZWMt
PnNldFNjb3BlQ2hhaW4oZXhlYy0+c2NvcGVDaGFpbigpLT5wdXNoKHNjb3BlKSk7CisgICAgTExJ
TlRfUkVUVVJOKHNjb3BlKTsKK30KKworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Ro
cm93KQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfVEhST1coTExJTlRfT1BfQygx
KS5qc1ZhbHVlKCkpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdGhyb3df
cmVmZXJlbmNlX2Vycm9yKQoreworICAgIExMSU5UX0JFR0lOKCk7CisgICAgTExJTlRfVEhST1co
Y3JlYXRlUmVmZXJlbmNlRXJyb3IoZXhlYywgTExJTlRfT1BfQygxKS5qc1ZhbHVlKCkudG9TdHJp
bmcoZXhlYyktPnZhbHVlKGV4ZWMpKSk7Cit9CisKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9kZWJ1ZykKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgIGludCBkZWJ1Z0hvb2tJRCA9
IHBjWzFdLnUub3BlcmFuZDsKKyAgICBpbnQgZmlyc3RMaW5lID0gcGNbMl0udS5vcGVyYW5kOwor
ICAgIGludCBsYXN0TGluZSA9IHBjWzNdLnUub3BlcmFuZDsKKyAgICAKKyAgICBnbG9iYWxEYXRh
LmludGVycHJldGVyLT5kZWJ1ZyhleGVjLCBzdGF0aWNfY2FzdDxEZWJ1Z0hvb2tJRD4oZGVidWdI
b29rSUQpLCBmaXJzdExpbmUsIGxhc3RMaW5lKTsKKyAgICAKKyAgICBMTElOVF9FTkQoKTsKK30K
KworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfd2lsbF9jYWxsKQorewor
ICAgIExMSU5UX0JFR0lOKCk7CisgICAgKCpQcm9maWxlcjo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJl
bmNlKCkpLT53aWxsRXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVlKCkpOworICAgIExM
SU5UX0VORCgpOworfQorCitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHJvZmlsZV9k
aWRfY2FsbCkKK3sKKyAgICBMTElOVF9CRUdJTigpOworICAgICgqUHJvZmlsZXI6OmVuYWJsZWRQ
cm9maWxlclJlZmVyZW5jZSgpKS0+ZGlkRXhlY3V0ZShleGVjLCBMTElOVF9PUCgxKS5qc1ZhbHVl
KCkpOworICAgIExMSU5UX0VORCgpOworfQorCit9IH0gLy8gbmFtZXNwYWNlIEpTQzo6TExJbnQK
KworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9s
bGludC9MTEludFNsb3dQYXRocy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcx
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgTExJbnRTbG93UGF0aHNfaAorI2RlZmluZSBMTEludFNsb3dQYXRoc19oCisKKyNpbmNsdWRl
IDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CisKKyNpZiBF
TkFCTEUoTExJTlQpCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBFeGVjU3RhdGU7CitzdHJ1
Y3QgSW5zdHJ1Y3Rpb247CisKK25hbWVzcGFjZSBMTEludCB7CisKK3R5cGVkZWYgaW50NjRfdCBT
bG93UGF0aFJldHVyblR5cGU7CisKK2V4dGVybiAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIGxsaW50
X3RyYWNlX29wZXJhbmQoRXhlY1N0YXRlKiwgSW5zdHJ1Y3Rpb24qLCBpbnQgZnJvbVdoZXJlLCBp
bnQgb3BlcmFuZCk7CitleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBsbGludF90cmFjZV92
YWx1ZShFeGVjU3RhdGUqLCBJbnN0cnVjdGlvbiosIGludCBmcm9tV2hlcmUsIGludCBvcGVyYW5k
KTsKKworI2RlZmluZSBMTElOVF9TTE9XX1BBVEhfREVDTChuYW1lKSBcCisgICAgZXh0ZXJuICJD
IiBTbG93UGF0aFJldHVyblR5cGUgbGxpbnRfIyNuYW1lKEV4ZWNTdGF0ZSogZXhlYywgSW5zdHJ1
Y3Rpb24qIHBjKQorCitMTElOVF9TTE9XX1BBVEhfREVDTCh0cmFjZV9wcm9sb2d1ZSk7CitMTElO
VF9TTE9XX1BBVEhfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY2FsbCk7CitMTElO
VF9TTE9XX1BBVEhfREVDTCh0cmFjZV9wcm9sb2d1ZV9mdW5jdGlvbl9mb3JfY29uc3RydWN0KTsK
K0xMSU5UX1NMT1dfUEFUSF9ERUNMKHRyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwpOworTExJTlRf
U0xPV19QQVRIX0RFQ0wodHJhY2VfYXJpdHlDaGVja19mb3JfY29uc3RydWN0KTsKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKHRyYWNlKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNwZWNpYWxfdHJhY2Up
OworTExJTlRfU0xPV19QQVRIX0RFQ0woZW50cnlfb3NyKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KGVudHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChlbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChlbnRy
eV9vc3JfZnVuY3Rpb25fZm9yX2NhbGxfYXJpdHlDaGVjayk7CitMTElOVF9TTE9XX1BBVEhfREVD
TChlbnRyeV9vc3JfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eUNoZWNrKTsKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKGxvb3Bfb3NyKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHJlcGxhY2UpOwor
TExJTlRfU0xPV19QQVRIX0RFQ0wocmVnaXN0ZXJfZmlsZV9jaGVjayk7CitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjayk7CitMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfY3JlYXRlX2FjdGl2YXRpb24pOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2NyZWF0ZV9hcmd1bWVudHMpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2Ny
ZWF0ZV90aGlzKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb252ZXJ0X3RoaXMp
OworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19vYmplY3QpOworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX25ld19hcnJheSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfbmV3X2FycmF5X2J1ZmZlcik7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfbmV3X3JlZ2V4cCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbm90KTsKK0xM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9lcSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChz
bG93X3BhdGhfbmVxKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9zdHJpY3RlcSk7
CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbnN0cmljdGVxKTsKK0xMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9sZXNzKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9sZXNzZXEpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dyZWF0ZXIpOworTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2dyZWF0ZXJlcSk7CitMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfcHJlX2luYyk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
cHJlX2RlYyk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcG9zdF9pbmMpOworTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Bvc3RfZGVjKTsKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF90b19qc251bWJlcik7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfbmVnYXRlKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9hZGQpOworTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX211bCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfc3ViKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kaXYpOworTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX21vZCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93
X3BhdGhfbHNoaWZ0KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9yc2hpZnQpOwor
TExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Vyc2hpZnQpOworTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX2JpdGFuZCk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhf
Yml0b3IpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2JpdHhvcik7CitMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfYml0bm90KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9jaGVja19oYXNfaW5zdGFuY2UpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19w
YXRoX2luc3RhbmNlb2YpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3R5cGVvZik7
CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNfdW5kZWZpbmVkKTsKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc19ib29sZWFuKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9pc19udW1iZXIpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2lz
X3N0cmluZyk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXNfb2JqZWN0KTsKK0xM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9pc19mdW5jdGlvbik7CitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfaW4pOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jl
c29sdmUpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfc2tpcCk7CitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV9nbG9iYWwpOworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMpOworTExJTlRfU0xP
V19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfZm9yX3Jlc29sdmVfZ2xvYmFsX2R5bmFtaWMp
OworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfYmFzZSk7CitMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZW5zdXJlX3Byb3BlcnR5X2V4aXN0cyk7CitMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfcmVzb2x2ZV93aXRoX2Jhc2UpOworTExJTlRfU0xPV19Q
QVRIX0RFQ0woc2xvd19wYXRoX3Jlc29sdmVfd2l0aF90aGlzKTsKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9nZXRfYnlfaWQpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRo
X2dldF9hcmd1bWVudHNfbGVuZ3RoKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9w
dXRfYnlfaWQpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2RlbF9ieV9pZCk7CitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZ2V0X2J5X3ZhbCk7CitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfZ2V0X2FyZ3VtZW50X2J5X3ZhbCk7CitMTElOVF9TTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfZ2V0X2J5X3BuYW1lKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9wdXRfYnlfdmFsKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWxfYnlf
dmFsKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXRfYnlfaW5kZXgpOworTExJ
TlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3B1dF9nZXR0ZXJfc2V0dGVyKTsKK0xMSU5UX1NM
T1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9qbXBfc2NvcGVzKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9qdHJ1ZSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfamZhbHNl
KTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9qbGVzcyk7CitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfam5sZXNzKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0
aF9qZ3JlYXRlcik7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfam5ncmVhdGVyKTsK
K0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9qbGVzc2VxKTsKK0xMSU5UX1NMT1dfUEFU
SF9ERUNMKHNsb3dfcGF0aF9qbmxlc3NlcSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3Bh
dGhfamdyZWF0ZXJlcSk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfam5ncmVhdGVy
ZXEpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9pbW0pOworTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N3aXRjaF9jaGFyKTsKK0xMSU5UX1NMT1dfUEFUSF9E
RUNMKHNsb3dfcGF0aF9zd2l0Y2hfc3RyaW5nKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9uZXdfZnVuYyk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfbmV3X2Z1bmNf
ZXhwKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jYWxsKTsKK0xMSU5UX1NMT1df
UEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3QpOworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xv
d19wYXRoX2NhbGxfdmFyYXJncyk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2Fs
bF9ldmFsKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90ZWFyX29mZl9hY3RpdmF0
aW9uKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF90ZWFyX29mZl9hcmd1bWVudHMp
OworTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3N0cmNhdCk7CitMTElOVF9TTE9XX1BB
VEhfREVDTChzbG93X3BhdGhfdG9fcHJpbWl0aXZlKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9nZXRfcG5hbWVzKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9uZXh0
X3BuYW1lKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wdXNoX3Njb3BlKTsKK0xM
SU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9wb3Bfc2NvcGUpOworTExJTlRfU0xPV19QQVRI
X0RFQ0woc2xvd19wYXRoX3B1c2hfbmV3X3Njb3BlKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF90aHJvdyk7CitMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfdGhyb3dfcmVm
ZXJlbmNlX2Vycm9yKTsKK0xMSU5UX1NMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9kZWJ1Zyk7CitM
TElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfcHJvZmlsZV93aWxsX2NhbGwpOworTExJTlRf
U0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3Byb2ZpbGVfZGlkX2NhbGwpOworCit9IH0gLy8gbmFt
ZXNwYWNlIEpTQzo6TExJbnQKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkKKworI2VuZGlmIC8v
IExMSW50U2xvd1BhdGhzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50VGh1bmtzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRUaHVua3MuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xs
aW50L0xMSW50VGh1bmtzLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiTExJbnRUaHVua3MuaCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2lu
Y2x1ZGUgIkpTSW50ZXJmYWNlSklULmgiCisjaW5jbHVkZSAiTGlua0J1ZmZlci5oIgorI2luY2x1
ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBM
TEludCB7CisKK3N0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZ2VuZXJhdGVUaHVua1dpdGhK
dW1wVG8oSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCB2b2lkICgqdGFyZ2V0KSgpKQoreworICAg
IEpTSW50ZXJmYWNlSklUIGppdDsKKyAgICAKKyAgICAvLyBGSVhNRTogdGhlcmUncyBwcm9iYWJs
eSBhIGJldHRlciB3YXkgdG8gZG8gaXQgb24gWDg2LCBidXQgSSdtIG5vdCBzdXJlIEkgY2FyZS4K
KyAgICBqaXQubW92ZShKU0ludGVyZmFjZUpJVDo6VHJ1c3RlZEltbVB0cihiaXR3aXNlX2Nhc3Q8
dm9pZCo+KHRhcmdldCkpLCBKU0ludGVyZmFjZUpJVDo6cmVnVDApOworICAgIGppdC5qdW1wKEpT
SW50ZXJmYWNlSklUOjpyZWdUMCk7CisgICAgCisgICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcigq
Z2xvYmFsRGF0YSwgJmppdCwgR0xPQkFMX1RIVU5LX0lEKTsKKyAgICByZXR1cm4gcGF0Y2hCdWZm
ZXIuZmluYWxpemVDb2RlKCk7Cit9CisKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZv
ckNhbGxFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAg
ICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxpbnRfZnVuY3Rp
b25fZm9yX2NhbGxfcHJvbG9ndWUpOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZnVuY3Rp
b25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8oZ2xvYmFsRGF0YSwgbGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSk7Cit9CisKK01hY3JvQXNzZW1ibGVy
Q29kZVJlZiBmdW5jdGlvbkZvckNhbGxBcml0eUNoZWNrVGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxE
YXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0ZVRodW5rV2l0aEp1bXBUbyhn
bG9iYWxEYXRhLCBsbGludF9mdW5jdGlvbl9mb3JfY2FsbF9hcml0eV9jaGVjayk7Cit9CisKK01h
Y3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5jdGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dl
bmVyYXRvcihKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEpCit7CisgICAgcmV0dXJuIGdlbmVyYXRl
VGh1bmtXaXRoSnVtcFRvKGdsb2JhbERhdGEsIGxsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1Y3Rf
YXJpdHlfY2hlY2spOworfQorCitNYWNyb0Fzc2VtYmxlckNvZGVSZWYgZXZhbEVudHJ5VGh1bmtH
ZW5lcmF0b3IoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKQoreworICAgIHJldHVybiBnZW5lcmF0
ZVRodW5rV2l0aEp1bXBUbyhnbG9iYWxEYXRhLCBsbGludF9ldmFsX3Byb2xvZ3VlKTsKK30KKwor
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmIHByb2dyYW1FbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFs
RGF0YSogZ2xvYmFsRGF0YSkKK3sKKyAgICByZXR1cm4gZ2VuZXJhdGVUaHVua1dpdGhKdW1wVG8o
Z2xvYmFsRGF0YSwgbGxpbnRfcHJvZ3JhbV9wcm9sb2d1ZSk7Cit9CisKK30gfSAvLyBuYW1lc3Bh
Y2UgSlNDOjpMTEludAorCisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2xsaW50L0xMSW50VGh1bmtzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRUaHVua3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIExMSW50VGh1bmtzX2gKKyNkZWZpbmUgTExJbnRUaHVua3NfaAorCisjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNsdWRlICJNYWNyb0Fz
c2VtYmxlckNvZGVSZWYuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEpTR2xvYmFsRGF0
YTsKKworbmFtZXNwYWNlIExMSW50IHsKKworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9u
Rm9yQ2FsbEVudHJ5VGh1bmtHZW5lcmF0b3IoSlNHbG9iYWxEYXRhKik7CitNYWNyb0Fzc2VtYmxl
ckNvZGVSZWYgZnVuY3Rpb25Gb3JDb25zdHJ1Y3RFbnRyeVRodW5rR2VuZXJhdG9yKEpTR2xvYmFs
RGF0YSopOworTWFjcm9Bc3NlbWJsZXJDb2RlUmVmIGZ1bmN0aW9uRm9yQ2FsbEFyaXR5Q2hlY2tU
aHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBmdW5j
dGlvbkZvckNvbnN0cnVjdEFyaXR5Q2hlY2tUaHVua0dlbmVyYXRvcihKU0dsb2JhbERhdGEqKTsK
K01hY3JvQXNzZW1ibGVyQ29kZVJlZiBldmFsRW50cnlUaHVua0dlbmVyYXRvcihKU0dsb2JhbERh
dGEqKTsKK01hY3JvQXNzZW1ibGVyQ29kZVJlZiBwcm9ncmFtRW50cnlUaHVua0dlbmVyYXRvcihK
U0dsb2JhbERhdGEqKTsKKworfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkxMSW50CisKKyNlbmRpZiAv
LyBFTkFCTEUoTExJTlQpCisKKyNlbmRpZiAvLyBMTEludFRodW5rc19oCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCShy
ZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJw
cmV0ZXIuYXNtCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzOTAgQEAKKyMgQ29weXJpZ2h0IChD
KSAyMDExLCAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIyBDcmFzaCBjb3Vyc2Ugb24gdGhlIGxh
bmd1YWdlIHRoYXQgdGhpcyBpcyB3cml0dGVuIGluICh3aGljaCBJIGp1c3QgY2FsbAorIyAiYXNz
ZW1ibHkiIGV2ZW4gdGhvdWdoIGl0J3MgbW9yZSB0aGFuIHRoYXQpOgorIworIyAtIE1vc3RseSBn
YXMtc3R5bGUgb3BlcmFuZCBvcmRlcmluZy4gVGhlIGxhc3Qgb3BlcmFuZCB0ZW5kcyB0byBiZSB0
aGUKKyMgICBkZXN0aW5hdGlvbi4gU28gImEgOj0gYiIgaXMgd3JpdHRlbiBhcyAibW92IGIsIGEi
LiBCdXQgdW5saWtlIGdhcywKKyMgICBjb21wYXJpc29ucyBhcmUgaW4tb3JkZXIsIHNvICJpZiAo
YSA8IGIpIiBpcyB3cml0dGVuIGFzCisjICAgImJpbHQgYSwgYiwgLi4uIi4KKyMKKyMgLSAiYiIg
PSBieXRlLCAiaCIgPSAxNi1iaXQgd29yZCwgImkiID0gMzItYml0IHdvcmQsICJwIiA9IHBvaW50
ZXIuCisjICAgQ3VycmVudGx5IHRoaXMgaXMganVzdCAzMi1iaXQgc28gImkiIGFuZCAicCIgYXJl
IGludGVyY2hhbmdlYWJsZQorIyAgIGV4Y2VwdCB3aGVuIGFuIG9wIHN1cHBvcnRzIG9uZSBidXQg
bm90IHRoZSBvdGhlci4KKyMKKyMgLSBJbiBnZW5lcmFsLCB2YWxpZCBvcGVyYW5kcyBmb3IgbWFj
cm8gaW52b2NhdGlvbnMgYW5kIGluc3RydWN0aW9ucyBhcmUKKyMgICByZWdpc3RlcnMgKGVnICJ0
MCIpLCBhZGRyZXNzZXMgKGVnICI0W3QwXSIpLCBiYXNlLWluZGV4IGFkZHJlc3NlcworIyAgIChl
ZyAiN1t0MCwgdDEsIDJdIiksIGFic29sdXRlIGFkZHJlc3NlcyAoZWcgIjB4YTAwMDAwMDBbXSIp
LCBvciBsYWJlbHMKKyMgICAoZWcgIl9mb28iIG9yICIuZm9vIikuIE1hY3JvIGludm9jYXRpb25z
IGNhbiBhbHNvIHRha2UgYW5vbnltb3VzCisjICAgbWFjcm9zIGFzIG9wZXJhbmRzLiBJbnN0cnVj
dGlvbnMgY2Fubm90IHRha2UgYW5vbnltb3VzIG1hY3Jvcy4KKyMKKyMgLSBMYWJlbHMgbXVzdCBo
YXZlIG5hbWVzIHRoYXQgYmVnaW4gd2l0aCBlaXRoZXIgIl8iIG9yICIuIi4gIEEgIi4iIGxhYmVs
CisjICAgaXMgbG9jYWwgYW5kIGdldHMgcmVuYW1lZCBiZWZvcmUgY29kZSBnZW4gdG8gbWluaW1p
emUgbmFtZXNwYWNlCisjICAgcG9sbHV0aW9uLiBBICJfIiBsYWJlbCBpcyBhbiBleHRlcm4gc3lt
Ym9sIChpLmUuICIuZ2xvYmwiKS4gVGhlICJfIgorIyAgIG1heSBvciBtYXkgbm90IGJlIHJlbW92
ZWQgZHVyaW5nIGNvZGUgZ2VuIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBhc20KKyMgICBjb252
ZW50aW9ucyBmb3IgQyBuYW1lIG1hbmdsaW5nIG9uIHRoZSB0YXJnZXQgcGxhdGZvcm0gbWFuZGF0
ZSBhICJfIgorIyAgIHByZWZpeC4KKyMKKyMgLSBBICJtYWNybyIgaXMgYSBsYW1iZGEgZXhwcmVz
c2lvbiwgd2hpY2ggbWF5IGJlIGVpdGhlciBhbm9ueW1vdXMgb3IKKyMgICBuYW1lZC4gQnV0IHRo
aXMgaGFzIGNhdmVhdHMuICJtYWNybyIgY2FuIHRha2UgemVybyBvciBtb3JlIGFyZ3VtZW50cywK
KyMgICB3aGljaCBtYXkgYmUgbWFjcm9zIG9yIGFueSB2YWxpZCBvcGVyYW5kcywgYnV0IGl0IGNh
biBvbmx5IHJldHVybgorIyAgIGNvZGUuIEJ1dCB5b3UgY2FuIGRvIFR1cmluZy1jb21wbGV0ZSB0
aGluZ3MgdmlhIGNvbnRpbnVhdGlvbiBwYXNzaW5nCisjICAgc3R5bGU6ICJtYWNybyBmb28gKGEs
IGIpIGIoYSkgZW5kIGZvbyhmb28sIGZvbykiLiBBY3R1YWxseSwgZG9uJ3QgZG8KKyMgICB0aGF0
LCBzaW5jZSB5b3UnbGwganVzdCBjcmFzaCB0aGUgYXNzZW1ibGVyLgorIworIyAtIEFuICJpZiIg
aXMgYSBjb25kaXRpb25hbCBvbiBzZXR0aW5ncy4gQW55IGlkZW50aWZpZXIgc3VwcGxpZWQgaW4g
dGhlCisjICAgcHJlZGljYXRlIG9mIGFuICJpZiIgaXMgYXNzdW1lZCB0byBiZSBhICNkZWZpbmUg
dGhhdCBpcyBhdmFpbGFibGUKKyMgICBkdXJpbmcgY29kZSBnZW4uIFNvIHlvdSBjYW4ndCB1c2Ug
ImlmIiBmb3IgY29tcHV0YXRpb24gaW4gYSBtYWNybywgYnV0CisjICAgeW91IGNhbiB1c2UgaXQg
dG8gc2VsZWN0IGRpZmZlcmVudCBwaWVjZXMgb2YgY29kZSBmb3IgZGlmZmVyZW50CisjICAgcGxh
dGZvcm1zLgorIworIyAtIEFyZ3VtZW50cyB0byBtYWNyb3MgZm9sbG93IGxleGljYWwgc2NvcGlu
ZyByYXRoZXIgdGhhbiBkeW5hbWljIHNjb3BpbmcuCisjICAgQ29uc3QncyBhbHNvIGZvbGxvdyBs
ZXhpY2FsIHNjb3BpbmcgYW5kIG1heSBvdmVycmlkZSAoaGlkZSkgYXJndW1lbnRzCisjICAgb3Ig
b3RoZXIgY29uc3RzLiBBbGwgdmFyaWFibGVzIChhcmd1bWVudHMgYW5kIGNvbnN0YW50cykgY2Fu
IGJlIGJvdW5kCisjICAgdG8gb3BlcmFuZHMuIEFkZGl0aW9uYWxseSwgYXJndW1lbnRzIChidXQg
bm90IGNvbnN0YW50cykgY2FuIGJlIGJvdW5kCisjICAgdG8gbWFjcm9zLgorCisKKyMgQmVsb3cg
d2UgaGF2ZSBhIGJ1bmNoIG9mIGNvbnN0YW50IGRlY2xhcmF0aW9ucy4gRWFjaCBjb25zdGFudCBt
dXN0IGhhdmUKKyMgYSBjb3JyZXNwb25kaW5nIEFTU0VSVCgpIGluIExMSW50RGF0YS5jcHAuCisK
KyMgVGhlc2UgZGVjbGFyYXRpb25zIG11c3QgbWF0Y2ggaW50ZXJwcmV0ZXIvUmVnaXN0ZXJGaWxl
LmguCitjb25zdCBDYWxsRnJhbWVIZWFkZXJTaXplID0gNDgKK2NvbnN0IEFyZ3VtZW50Q291bnQg
PSAtNDgKK2NvbnN0IENhbGxlckZyYW1lID0gLTQwCitjb25zdCBDYWxsZWUgPSAtMzIKK2NvbnN0
IFNjb3BlQ2hhaW4gPSAtMjQKK2NvbnN0IFJldHVyblBDID0gLTE2Citjb25zdCBDb2RlQmxvY2sg
PSAtOAorCitjb25zdCBUaGlzQXJndW1lbnRPZmZzZXQgPSAtQ2FsbEZyYW1lSGVhZGVyU2l6ZSAt
IDgKKworIyBEZWNsYXJlIHNvbWUgYWxpYXNlcyBmb3IgdGhlIHJlZ2lzdGVycyB3ZSB3aWxsIHVz
ZS4KK2NvbnN0IFBDID0gdDQKKworIyBPZmZzZXRzIG5lZWRlZCBmb3IgcmVhc29uaW5nIGFib3V0
IHZhbHVlIHJlcHJlc2VudGF0aW9uLgoraWYgQklHX0VORElBTgorICAgIGNvbnN0IFRhZ09mZnNl
dCA9IDAKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gNAorZWxzZQorICAgIGNvbnN0IFRhZ09m
ZnNldCA9IDQKKyAgICBjb25zdCBQYXlsb2FkT2Zmc2V0ID0gMAorZW5kCisKKyMgVmFsdWUgcmVw
cmVzZW50YXRpb24gY29uc3RhbnRzLgorY29uc3QgSW50MzJUYWcgPSAtMQorY29uc3QgQm9vbGVh
blRhZyA9IC0yCitjb25zdCBOdWxsVGFnID0gLTMKK2NvbnN0IFVuZGVmaW5lZFRhZyA9IC00Citj
b25zdCBDZWxsVGFnID0gLTUKK2NvbnN0IEVtcHR5VmFsdWVUYWcgPSAtNgorY29uc3QgRGVsZXRl
ZFZhbHVlVGFnID0gLTcKK2NvbnN0IExvd2VzdFRhZyA9IERlbGV0ZWRWYWx1ZVRhZworCisjIFR5
cGUgY29uc3RhbnRzLgorY29uc3QgU3RyaW5nVHlwZSA9IDUKK2NvbnN0IE9iamVjdFR5cGUgPSAx
MworCisjIFR5cGUgZmxhZ3MgY29uc3RhbnRzLgorY29uc3QgTWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCA9IDEKK2NvbnN0IEltcGxlbWVudHNIYXNJbnN0YW5jZSA9IDIKK2NvbnN0IEltcGxlbWVudHNE
ZWZhdWx0SGFzSW5zdGFuY2UgPSA4CisKKyMgSGVhcCBhbGxvY2F0aW9uIGNvbnN0YW50cy4KK2Nv
bnN0IEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCA9IDMKKworIyBCeXRlY29kZSBvcGVyYW5k
IGNvbnN0YW50cy4KK2NvbnN0IEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4ID0gMHg0MDAwMDAw
MAorCisjIENvZGUgdHlwZSBjb25zdGFudHMuCitjb25zdCBHbG9iYWxDb2RlID0gMAorY29uc3Qg
RXZhbENvZGUgPSAxCitjb25zdCBGdW5jdGlvbkNvZGUgPSAyCisKKyMgVGhlIGludGVycHJldGVy
IHN0ZWFscyB0aGUgdGFnIHdvcmQgb2YgdGhlIGFyZ3VtZW50IGNvdW50LgorY29uc3QgTExJbnRS
ZXR1cm5QQyA9IEFyZ3VtZW50Q291bnQgKyBUYWdPZmZzZXQKKworIyBUaGlzIG11c3QgbWF0Y2gg
d3RmL1ZlY3Rvci5oLgorY29uc3QgVmVjdG9yU2l6ZU9mZnNldCA9IDAKK2NvbnN0IFZlY3RvckJ1
ZmZlck9mZnNldCA9IDQKKworIyBTdHJpbmcgZmxhZ3MuCitjb25zdCBIYXNoRmxhZ3M4Qml0QnVm
ZmVyID0gNjQKKworIyBVdGlsaXRpZXMKK21hY3JvIGNyYXNoKCkKKyAgICBzdG9yZWkgMCwgMHhi
YmFkYmVlZltdCisgICAgbW92ZSAwLCB0MAorICAgIGNhbGwgdDAKK2VuZAorCittYWNybyBhc3Nl
cnQoYXNzZXJ0aW9uKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGFzc2VydGlvbigu
b2spCisgICAgICAgIGNyYXNoKCkKKyAgICAub2s6CisgICAgZW5kCitlbmQKKworbWFjcm8gcHJl
c2VydmVSZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKGRlc3RpbmF0aW9uUmVnaXN0ZXIpCisgICAgaWYg
QVJNdjcKKyAgICAgICAgbW92ZSBsciwgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2lmIFg4
NgorICAgICAgICBwb3AgZGVzdGluYXRpb25SZWdpc3RlcgorICAgIGVsc2UKKyAgICAgICAgZXJy
b3IKKyAgICBlbmQKK2VuZAorCittYWNybyByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVy
bihzb3VyY2VSZWdpc3RlcikKKyAgICBpZiBBUk12NworICAgICAgICBtb3ZlIHNvdXJjZVJlZ2lz
dGVyLCBscgorICAgIGVsc2lmIFg4NgorICAgICAgICBwdXNoIHNvdXJjZVJlZ2lzdGVyCisgICAg
ZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorZW5kCisKK21hY3JvIGRpc3BhdGNoKGFkdmFu
Y2UpCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3Jv
IGRpc3BhdGNoQnJhbmNoV2l0aE9mZnNldChwY09mZnNldCkKKyAgICBsc2hpZnRpIDIsIHBjT2Zm
c2V0CisgICAgYWRkcCBwY09mZnNldCwgUEMKKyAgICBqbXAgW1BDXQorZW5kCisKK21hY3JvIGRp
c3BhdGNoQnJhbmNoKHBjT2Zmc2V0KQorICAgIGxvYWRpIHBjT2Zmc2V0LCB0MAorICAgIGRpc3Bh
dGNoQnJhbmNoV2l0aE9mZnNldCh0MCkKK2VuZAorCittYWNybyBkaXNwYXRjaEFmdGVyQ2FsbCgp
CisgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdLCBQQworICAgIGptcCBb
UENdCitlbmQKKworbWFjcm8gY0NhbGwyKGZ1bmN0aW9uLCBhcmcxLCBhcmcyKQorICAgIGlmIEFS
TXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0MQorICAgIGVs
c2lmIFg4NgorICAgICAgICBwb2tlIGFyZzEsIDAKKyAgICAgICAgcG9rZSBhcmcyLCAxCisgICAg
ZWxzZQorICAgICAgICBlcnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCisj
IFRoaXMgYmFyZWx5IHdvcmtzLiBhcmczIGFuZCBhcmc0IHNob3VsZCBwcm9iYWJseSBiZSBpbW1l
ZGlhdGVzLgorbWFjcm8gY0NhbGw0KGZ1bmN0aW9uLCBhcmcxLCBhcmcyLCBhcmczLCBhcmc0KQor
ICAgIGlmIEFSTXY3CisgICAgICAgIG1vdmUgYXJnMSwgdDAKKyAgICAgICAgbW92ZSBhcmcyLCB0
MQorICAgICAgICBtb3ZlIGFyZzMsIHQyCisgICAgICAgIG1vdmUgYXJnNCwgdDMKKyAgICBlbHNp
ZiBYODYKKyAgICAgICAgcG9rZSBhcmcxLCAwCisgICAgICAgIHBva2UgYXJnMiwgMQorICAgICAg
ICBwb2tlIGFyZzMsIDIKKyAgICAgICAgcG9rZSBhcmc0LCAzCisgICAgZWxzZQorICAgICAgICBl
cnJvcgorICAgIGVuZAorICAgIGNhbGwgZnVuY3Rpb24KK2VuZAorCittYWNybyBjYWxsU2xvd1Bh
dGgoc2xvd19wYXRoKQorICAgIGNDYWxsMihzbG93X3BhdGgsIGNmciwgUEMpCisgICAgbW92ZSB0
MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCisjIERlYnVnZ2luZyBvcGVyYXRpb24gaWYg
eW91J2QgbGlrZSB0byBwcmludCBhbiBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbiBzdHJlYW0u
IGZyb21XaGVyZQorIyBzaG91bGQgYmUgYW4gaW1tZWRpYXRlIGludGVnZXIgLSBhbnkgaW50ZWdl
ciB5b3UgbGlrZTsgdXNlIGl0IHRvIGlkZW50aWZ5IHRoZSBwbGFjZSB5b3UncmUKKyMgZGVidWdn
aW5nIGZyb20uIG9wZXJhbmQgc2hvdWxkIGxpa2V3aXNlIGJlIGFuIGltbWVkaWF0ZSwgYW5kIHNo
b3VsZCBpZGVudGlmeSB0aGUgb3BlcmFuZAorIyBpbiB0aGUgaW5zdHJ1Y3Rpb24gc3RyZWFtIHlv
dSdkIGxpa2UgdG8gcHJpbnQgb3V0LgorbWFjcm8gdHJhY2VPcGVyYW5kKGZyb21XaGVyZSwgb3Bl
cmFuZCkKKyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX29wZXJhbmQsIGNmciwgUEMsIGZyb21XaGVy
ZSwgb3BlcmFuZCkKKyAgICBtb3ZlIHQwLCBQQworICAgIG1vdmUgdDEsIGNmcgorZW5kCisKKyMg
RGVidWdnaW5nIG9wZXJhdGlvbiBpZiB5b3UnZCBsaWtlIHRvIHByaW50IHRoZSB2YWx1ZSBvZiBh
biBvcGVyYW5kIGluIHRoZSBpbnN0cnVjdGlvbgorIyBzdHJlYW0uIFNhbWUgYXMgdHJhY2VPcGVy
YW5kKCksIGJ1dCBhc3N1bWVzIHRoYXQgdGhlIG9wZXJhbmQgaXMgYSByZWdpc3RlciwgYW5kIHBy
aW50cyBpdHMKKyMgdmFsdWUuCittYWNybyB0cmFjZVZhbHVlKGZyb21XaGVyZSwgb3BlcmFuZCkK
KyAgICBjQ2FsbDQoX2xsaW50X3RyYWNlX3ZhbHVlLCBjZnIsIFBDLCBmcm9tV2hlcmUsIG9wZXJh
bmQpCisgICAgbW92ZSB0MCwgUEMKKyAgICBtb3ZlIHQxLCBjZnIKK2VuZAorCittYWNybyB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgaWYgRVhFQ1VUSU9OX1RSQUNJTkcKKyAgICAgICAgY2FsbFNsb3dQ
YXRoKF9sbGludF90cmFjZSkKKyAgICBlbmQKK2VuZAorCisjIENhbGwgYSBzbG93X3BhdGggZm9y
IGNhbGwgb3Bjb2Rlcy4KK21hY3JvIGNhbGxDYWxsU2xvd1BhdGgoYWR2YW5jZSwgc2xvd19wYXRo
LCBhY3Rpb24pCisgICAgYWRkcCBhZHZhbmNlICogNCwgUEMsIHQwCisgICAgc3RvcmVwIHQwLCBB
cmd1bWVudENvdW50ICsgVGFnT2Zmc2V0W2Nmcl0KKyAgICBjQ2FsbDIoc2xvd19wYXRoLCBjZnIs
IFBDKQorICAgIG1vdmUgdDEsIGNmcgorICAgIGFjdGlvbih0MCkKK2VuZAorCittYWNybyBzbG93
UGF0aEZvckNhbGwoYWR2YW5jZSwgc2xvd19wYXRoKQorICAgIGNhbGxDYWxsU2xvd1BhdGgoCisg
ICAgICAgIGFkdmFuY2UsCisgICAgICAgIHNsb3dfcGF0aCwKKyAgICAgICAgbWFjcm8gKGNhbGxl
ZSkKKyAgICAgICAgICAgIGNhbGwgY2FsbGVlCisgICAgICAgICAgICBkaXNwYXRjaEFmdGVyQ2Fs
bCgpCisgICAgICAgIGVuZCkKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklUKGluY3JlbWVu
dCwgYWN0aW9uKQorICAgIGlmIEpJVF9FTkFCTEVECisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCB0MAorICAgICAgICBiYWRkaXMgaW5jcmVtZW50LCBDb2RlQmxvY2s6Om1fbGxpbnRFeGVj
dXRlQ291bnRlclt0MF0sIC5jb250aW51ZQorICAgICAgICBhY3Rpb24oKQorICAgIC5jb250aW51
ZToKKyAgICBlbmQKK2VuZAorCittYWNybyBjaGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAg
Y2hlY2tTd2l0Y2hUb0pJVCgKKyAgICAgICAgMSwKKyAgICAgICAgbWFjcm8gKCkKKyAgICAgICAg
ICAgIHN0b3JlaSBQQywgQXJndW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgICAgICAg
ICBjQ2FsbDIoX2xsaW50X2xvb3Bfb3NyLCBjZnIsIFBDKQorICAgICAgICAgICAgbW92ZSB0MSwg
Y2ZyCisgICAgICAgICAgICBidHB6IHQwLCAucmVjb3ZlcgorICAgICAgICAgICAgam1wIHQwCisg
ICAgICAgIC5yZWNvdmVyOgorICAgICAgICAgICAgbG9hZGkgQXJndW1lbnRDb3VudCArIFRhZ09m
ZnNldFtjZnJdLCBQQworICAgICAgICBlbmQpCitlbmQKKworbWFjcm8gY2hlY2tTd2l0Y2hUb0pJ
VEZvckVwaWxvZ3VlKCkKKyAgICBjaGVja1N3aXRjaFRvSklUKAorICAgICAgICAxMCwKKyAgICAg
ICAgbWFjcm8gKCkKKyAgICAgICAgICAgIGNhbGxTbG93UGF0aChfbGxpbnRfcmVwbGFjZSkKKyAg
ICAgICAgZW5kKQorZW5kCisKK21hY3JvIGFzc2VydE5vdENvbnN0YW50KGluZGV4KQorICAgIGFz
c2VydChtYWNybyAob2spIGJpbHQgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCBv
ayBlbmQpCitlbmQKKworIyBJbmRleCwgdGFnLCBhbmQgcGF5bG9hZCBtdXN0IGJlIGRpZmZlcmVu
dCByZWdpc3RlcnMuIEluZGV4IGlzIG5vdAorIyBjaGFuZ2VkLgorbWFjcm8gbG9hZENvbnN0YW50
T3JWYXJpYWJsZShpbmRleCwgdGFnLCBwYXlsb2FkKQorICAgIGJpZ3RlcSBpbmRleCwgRmlyc3RD
b25zdGFudFJlZ2lzdGVySW5kZXgsIC5jb25zdGFudAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIs
IGluZGV4LCA4XSwgdGFnCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIGluZGV4LCA4XSwg
cGF5bG9hZAorICAgIGptcCAuZG9uZQorLmNvbnN0YW50OgorICAgIGxvYWRwIENvZGVCbG9ja1tj
ZnJdLCBwYXlsb2FkCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2NvbnN0YW50UmVnaXN0ZXJzICsg
VmVjdG9yQnVmZmVyT2Zmc2V0W3BheWxvYWRdLCBwYXlsb2FkCisgICAgIyBUaGVyZSBpcyBhIGJp
dCBvZiBldmlsIGhlcmU6IGlmIHRoZSBpbmRleCBjb250YWlucyBhIHZhbHVlID49IEZpcnN0Q29u
c3RhbnRSZWdpc3RlckluZGV4LAorICAgICMgdGhlbiB2YWx1ZSA8PCAzIHdpbGwgYmUgZXF1YWwg
dG8gKHZhbHVlIC0gRmlyc3RDb25zdGFudFJlZ2lzdGVySW5kZXgpIDw8IDMuCisgICAgbG9hZHAg
VGFnT2Zmc2V0W3BheWxvYWQsIGluZGV4LCA4XSwgdGFnCisgICAgbG9hZHAgUGF5bG9hZE9mZnNl
dFtwYXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5k
IHBheWxvYWQgbWF5IGJlIHRoZSBzYW1lIHJlZ2lzdGVyLiBJbmRleCBtYXkgYmUgY2xvYmJlcmVk
LgorbWFjcm8gbG9hZENvbnN0YW50T3JWYXJpYWJsZTJSZWcoaW5kZXgsIHRhZywgcGF5bG9hZCkK
KyAgICBiaWd0ZXEgaW5kZXgsIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4LCAuY29uc3RhbnQK
KyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHRhZworICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBheWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFu
dDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdGFnCisgICAgbG9hZHAgQ29kZUJsb2NrOjpt
X2NvbnN0YW50UmVnaXN0ZXJzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3RhZ10sIHRhZworICAgICMg
VGhlcmUgaXMgYSBiaXQgb2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1
ZSA+PSBGaXJzdENvbnN0YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3
aWxsIGJlIGVxdWFsIHRvICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAz
LgorICAgIGxzaGlmdGkgMywgaW5kZXgKKyAgICBhZGRwIGluZGV4LCB0YWcKKyAgICBsb2FkcCBQ
YXlsb2FkT2Zmc2V0W3RhZ10sIHBheWxvYWQKKyAgICBsb2FkcCBUYWdPZmZzZXRbdGFnXSwgdGFn
CisuZG9uZToKK2VuZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1
c3RvbShpbmRleCwgdGFnQ2hlY2ssIHBheWxvYWQpCisgICAgYmlndGVxIGluZGV4LCBGaXJzdENv
bnN0YW50UmVnaXN0ZXJJbmRleCwgLmNvbnN0YW50CisgICAgdGFnQ2hlY2soVGFnT2Zmc2V0W2Nm
ciwgaW5kZXgsIDhdKQorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0sIHBh
eWxvYWQKKyAgICBqbXAgLmRvbmUKKy5jb25zdGFudDoKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2Zy
XSwgcGF5bG9hZAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9jb25zdGFudFJlZ2lzdGVycyArIFZl
Y3RvckJ1ZmZlck9mZnNldFtwYXlsb2FkXSwgcGF5bG9hZAorICAgICMgVGhlcmUgaXMgYSBiaXQg
b2YgZXZpbCBoZXJlOiBpZiB0aGUgaW5kZXggY29udGFpbnMgYSB2YWx1ZSA+PSBGaXJzdENvbnN0
YW50UmVnaXN0ZXJJbmRleCwKKyAgICAjIHRoZW4gdmFsdWUgPDwgMyB3aWxsIGJlIGVxdWFsIHRv
ICh2YWx1ZSAtIEZpcnN0Q29uc3RhbnRSZWdpc3RlckluZGV4KSA8PCAzLgorICAgIHRhZ0NoZWNr
KFRhZ09mZnNldFtwYXlsb2FkLCBpbmRleCwgOF0pCisgICAgbG9hZHAgUGF5bG9hZE9mZnNldFtw
YXlsb2FkLCBpbmRleCwgOF0sIHBheWxvYWQKKy5kb25lOgorZW5kCisKKyMgSW5kZXggYW5kIHBh
eWxvYWQgbXVzdCBiZSBkaWZmZXJlbnQgcmVnaXN0ZXJzLiBJbmRleCBpcyBub3QgbXV0YXRlZC4g
VXNlCisjIHRoaXMgaWYgeW91IGtub3cgd2hhdCB0aGUgdGFnIG9mIHRoZSB2YXJpYWJsZSBzaG91
bGQgYmUuIERvaW5nIHRoZSB0YWcKKyMgdGVzdCBhcyBwYXJ0IG9mIGxvYWRpbmcgdGhlIHZhcmlh
YmxlIHJlZHVjZXMgcmVnaXN0ZXIgdXNlLCBidXQgbWF5IG5vdAorIyBiZSBmYXN0ZXIgdGhhbiBk
b2luZyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlIGZvbGxvd2VkIGJ5IGEgYnJhbmNoIG9uIHRoZQor
IyB0YWcuCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZChpbmRleCwgZXhwZWN0
ZWRUYWcsIHBheWxvYWQsIHNsb3cpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRU
YWdDdXN0b20oCisgICAgICAgIGluZGV4LAorICAgICAgICBtYWNybyAoYWN0dWFsVGFnKSBiaW5l
cSBhY3R1YWxUYWcsIGV4cGVjdGVkVGFnLCBzbG93IGVuZCwKKyAgICAgICAgcGF5bG9hZCkKK2Vu
ZAorCittYWNybyBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFVuY2hlY2tlZChpbmRleCwg
cGF5bG9hZCkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZFRhZ0N1c3RvbSgKKyAg
ICAgICAgaW5kZXgsCisgICAgICAgIG1hY3JvIChhY3R1YWxUYWcpIGVuZCwKKyAgICAgICAgcGF5
bG9hZCkKK2VuZAorCittYWNybyB3cml0ZUJhcnJpZXIodGFnLCBwYXlsb2FkKQorICAgICMgTm90
aGluZyB0byBkbywgc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIGdlbmVyYXRpb25hbCBvciBpbmNyZW1l
bnRhbCBjb2xsZWN0b3IuCitlbmQKKworbWFjcm8gdmFsdWVQcm9maWxlKHRhZywgcGF5bG9hZCwg
cHJvZmlsZSkKKyAgICBpZiBKSVRfRU5BQkxFRAorICAgICAgICBzdG9yZWkgdGFnLCBWYWx1ZVBy
b2ZpbGU6Om1fYnVja2V0cyArIFRhZ09mZnNldFtwcm9maWxlXQorICAgICAgICBzdG9yZWkgcGF5
bG9hZCwgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBQYXlsb2FkT2Zmc2V0W3Byb2ZpbGVdCisg
ICAgZW5kCitlbmQKKworCisjIEluZGljYXRlIHRoZSBiZWdpbm5pbmcgb2YgTExJbnQuCitfbGxp
bnRfYmVnaW46CisgICAgY3Jhc2goKQorCisKKyMgRW50cnlwb2ludHMgaW50byB0aGUgaW50ZXJw
cmV0ZXIKKworbWFjcm8gZnVuY3Rpb25Gb3JDYWxsQ29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lz
dGVyKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEpT
RnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisg
ICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjptX2NvZGVCbG9ja0ZvckNhbGxbdGFyZ2V0UmVn
aXN0ZXJdLCB0YXJnZXRSZWdpc3RlcgorZW5kCisKK21hY3JvIGZ1bmN0aW9uRm9yQ29uc3RydWN0
Q29kZUJsb2NrR2V0dGVyKHRhcmdldFJlZ2lzdGVyKQorICAgIGxvYWRwIENhbGxlZVtjZnJdLCB0
YXJnZXRSZWdpc3RlcgorICAgIGxvYWRwIEpTRnVuY3Rpb246Om1fZXhlY3V0YWJsZVt0YXJnZXRS
ZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCisgICAgbG9hZHAgRnVuY3Rpb25FeGVjdXRhYmxlOjpt
X2NvZGVCbG9ja0ZvckNvbnN0cnVjdFt0YXJnZXRSZWdpc3Rlcl0sIHRhcmdldFJlZ2lzdGVyCitl
bmQKKworbWFjcm8gbm90RnVuY3Rpb25Db2RlQmxvY2tHZXR0ZXIodGFyZ2V0UmVnaXN0ZXIpCisg
ICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHRhcmdldFJlZ2lzdGVyCitlbmQKKworbWFjcm8gZnVu
Y3Rpb25Db2RlQmxvY2tTZXR0ZXIoc291cmNlUmVnaXN0ZXIpCisgICAgc3RvcmVwIHNvdXJjZVJl
Z2lzdGVyLCBDb2RlQmxvY2tbY2ZyXQorZW5kCisKK21hY3JvIG5vdEZ1bmN0aW9uQ29kZUJsb2Nr
U2V0dGVyKHNvdXJjZVJlZ2lzdGVyKQorICAgICMgTm90aGluZyB0byBkbyEKK2VuZAorCisjIERv
IHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8gZXhlY3V0ZSBjb2RlLiBTZXRzIHVwIHRoZSBQ
QywgbGVhdmUgdGhlIENvZGVCbG9jayoKKyMgaW4gdDEuIE1heSBhbHNvIHRyaWdnZXIgcHJvbG9n
dWUgZW50cnkgT1NSLgorbWFjcm8gcHJvbG9ndWUoY29kZUJsb2NrR2V0dGVyLCBjb2RlQmxvY2tT
ZXR0ZXIsIG9zclNsb3dQYXRoLCB0cmFjZVNsb3dQYXRoKQorICAgIHByZXNlcnZlUmV0dXJuQWRk
cmVzc0FmdGVyQ2FsbCh0MikKKyAgICAKKyAgICAjIFNldCB1cCB0aGUgY2FsbCBmcmFtZSBhbmQg
Y2hlY2sgaWYgd2Ugc2hvdWxkIE9TUi4KKyAgICBzdG9yZXAgdDIsIFJldHVyblBDW2Nmcl0KKyAg
ICBpZiBFWEVDVVRJT05fVFJBQ0lORworICAgICAgICBjYWxsU2xvd1BhdGgodHJhY2VTbG93UGF0
aCkKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tHZXR0ZXIodDEpCisgICAgaWYgSklUX0VOQUJMRUQK
KyAgICAgICAgYmFkZGlzIDUsIENvZGVCbG9jazo6bV9sbGludEV4ZWN1dGVDb3VudGVyW3QxXSwg
LmNvbnRpbnVlCisgICAgICAgIGNDYWxsMihvc3JTbG93UGF0aCwgY2ZyLCBQQykKKyAgICAgICAg
bW92ZSB0MSwgY2ZyCisgICAgICAgIGJ0cHogdDAsIC5yZWNvdmVyCisgICAgICAgIGxvYWRwIFJl
dHVyblBDW2Nmcl0sIHQyCisgICAgICAgIHJlc3RvcmVSZXR1cm5BZGRyZXNzQmVmb3JlUmV0dXJu
KHQyKQorICAgICAgICBqbXAgdDAKKyAgICAucmVjb3ZlcjoKKyAgICAgICAgY29kZUJsb2NrR2V0
dGVyKHQxKQorICAgIC5jb250aW51ZToKKyAgICBlbmQKKyAgICBjb2RlQmxvY2tTZXR0ZXIodDEp
CisgICAgCisgICAgIyBTZXQgdXAgdGhlIFBDLgorICAgIGxvYWRwIENvZGVCbG9jazo6bV9pbnN0
cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6SW5zdHJ1Y3Rpb25zOjptX2lu
c3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBDCitlbmQKKworIyBFeHBlY3Rz
IHRoYXQgQ29kZUJsb2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVz
IGJlaGluZC4KKyMgTXVzdCBjYWxsIGRpc3BhdGNoKDApIGFmdGVyIGNhbGxpbmcgdGhpcy4KK21h
Y3JvIGZ1bmN0aW9uSW5pdGlhbGl6YXRpb24ocHJvZmlsZUFyZ1NraXApCisgICAgaWYgSklUX0VO
QUJMRUQKKyAgICAgICAgIyBQcm9maWxlIHRoZSBhcmd1bWVudHMuIFVuZm9ydHVuYXRlbHksIHdl
IGhhdmUgbm8gY2hvaWNlIGJ1dCB0byBkbyB0aGlzLiBUaGlzCisgICAgICAgICMgY29kZSBpcyBw
cmV0dHkgaG9ycmVuZG91cyBiZWNhdXNlIG9mIHRoZSBkaWZmZXJlbmNlIGluIG9yZGVyaW5nIGJl
dHdlZW4KKyAgICAgICAgIyBhcmd1bWVudHMgYW5kIHZhbHVlIHByb2ZpbGVzLCB0aGUgZGVzaXJl
IHRvIGhhdmUgYSBzaW1wbGUgbG9vcC1kb3duLXRvLXplcm8KKyAgICAgICAgIyBsb29wLCBhbmQg
dGhlIGRlc2lyZSB0byB1c2Ugb25seSB0aHJlZSByZWdpc3RlcnMgc28gYXMgdG8gcHJlc2VydmUg
dGhlIFBDIGFuZAorICAgICAgICAjIHRoZSBjb2RlIGJsb2NrLiBJdCBpcyBsaWtlbHkgdGhhdCB0
aGlzIGNvZGUgc2hvdWxkIGJlIHJld3JpdHRlbiBpbiBhIG1vcmUKKyAgICAgICAgIyBvcHRpbWFs
IHdheSBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IGhhdmUgbW9yZSB0aGFuIGZpdmUgcmVnaXN0ZXJz
IGF2YWlsYWJsZQorICAgICAgICAjIGZvciBhcmJpdHJhcnkgdXNlIGluIHRoZSBpbnRlcnByZXRl
ci4KKyAgICAgICAgbG9hZGkgQ29kZUJsb2NrOjptX251bVBhcmFtZXRlcnNbdDFdLCB0MAorICAg
ICAgICBhZGRpIC1wcm9maWxlQXJnU2tpcCwgdDAgIyBVc2UgYWRkaSBiZWNhdXNlIHRoYXQncyB3
aGF0IGhhcyB0aGUgcGVlcGhvbGUKKyAgICAgICAgYXNzZXJ0KG1hY3JvIChvaykgYmlndGVxIHQw
LCAwLCBvayBlbmQpCisgICAgICAgIGJ0aXogdDAsIC5hcmd1bWVudFByb2ZpbGVEb25lCisgICAg
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9hcmd1bWVudFZhbHVlUHJvZmlsZXMgKyBWZWN0b3JCdWZm
ZXJPZmZzZXRbdDFdLCB0MworICAgICAgICBtdWxpIHNpemVvZiBWYWx1ZVByb2ZpbGUsIHQwLCB0
MiAjIEFhYWFhaGhoaCEgTmVlZCBzdHJlbmd0aCByZWR1Y3Rpb24hCisgICAgICAgIG5lZ2kgdDAK
KyAgICAgICAgbHNoaWZ0aSAzLCB0MAorICAgICAgICBhZGRwIHQyLCB0MworICAgIC5hcmd1bWVu
dFByb2ZpbGVMb29wOgorICAgICAgICBsb2FkaSBUaGlzQXJndW1lbnRPZmZzZXQgKyBUYWdPZmZz
ZXQgKyA4IC0gcHJvZmlsZUFyZ1NraXAgKiA4W2NmciwgdDBdLCB0MgorICAgICAgICBzdWJwIHNp
emVvZiBWYWx1ZVByb2ZpbGUsIHQzCisgICAgICAgIHN0b3JlaSB0MiwgcHJvZmlsZUFyZ1NraXAg
KiBzaXplb2YgVmFsdWVQcm9maWxlICsgVmFsdWVQcm9maWxlOjptX2J1Y2tldHMgKyBUYWdPZmZz
ZXRbdDNdCisgICAgICAgIGxvYWRpIFRoaXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXQg
KyA4IC0gcHJvZmlsZUFyZ1NraXAgKiA4W2NmciwgdDBdLCB0MgorICAgICAgICBzdG9yZWkgdDIs
IHByb2ZpbGVBcmdTa2lwICogc2l6ZW9mIFZhbHVlUHJvZmlsZSArIFZhbHVlUHJvZmlsZTo6bV9i
dWNrZXRzICsgUGF5bG9hZE9mZnNldFt0M10KKyAgICAgICAgYmFkZGlueiA4LCB0MCwgLmFyZ3Vt
ZW50UHJvZmlsZUxvb3AKKyAgICAuYXJndW1lbnRQcm9maWxlRG9uZToKKyAgICBlbmQKKyAgICAg
ICAgCisgICAgIyBDaGVjayBzdGFjayBoZWlnaHQuCisgICAgbG9hZGkgQ29kZUJsb2NrOjptX251
bUNhbGxlZVJlZ2lzdGVyc1t0MV0sIHQwCisgICAgbG9hZHAgQ29kZUJsb2NrOjptX2dsb2JhbERh
dGFbdDFdLCB0MgorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6aW50ZXJwcmV0ZXJbdDJdLCB0MiAg
ICMgRklYTUU6IENhbiBnZXQgdG8gdGhlIFJlZ2lzdGVyRmlsZSBmcm9tIHRoZSBKSVRTdGFja0Zy
YW1lCisgICAgbHNoaWZ0aSAzLCB0MAorICAgIGFkZHAgdDAsIGNmciwgdDAKKyAgICBicGFlcSBJ
bnRlcnByZXRlcjo6bV9yZWdpc3RlckZpbGUgKyBSZWdpc3RlckZpbGU6Om1fZW5kW3QyXSwgdDAs
IC5zdGFja0hlaWdodE9LCisKKyAgICAjIFN0YWNrIGhlaWdodCBjaGVjayBmYWlsZWQgLSBuZWVk
IHRvIGNhbGwgYSBzbG93X3BhdGguCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9yZWdpc3Rlcl9m
aWxlX2NoZWNrKQorLnN0YWNrSGVpZ2h0T0s6CitlbmQKKworIyBFeHBlY3RzIHRoYXQgQ29kZUJs
b2NrIGlzIGluIHQxLCB3aGljaCBpcyB3aGF0IHByb2xvZ3VlKCkgbGVhdmVzIGJlaGluZC4KK21h
Y3JvIGZ1bmN0aW9uQXJpdHlDaGVjayhkb25lTGFiZWwsIHNsb3dfcGF0aCkKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0ICsgQXJndW1lbnRDb3VudFtjZnJdLCB0MAorICAgIGJpYWVxIHQwLCBDb2Rl
QmxvY2s6Om1fbnVtUGFyYW1ldGVyc1t0MV0sIGRvbmVMYWJlbAorICAgIGNDYWxsMihzbG93X3Bh
dGgsIGNmciwgUEMpICAgIyBUaGlzIHNsb3dfcGF0aCBoYXMgYSBzaW1wbGUgcHJvdG9jb2w6IHQw
ID0gMCA9PiBubyBlcnJvciwgdDAgIT0gMCA9PiBlcnJvcgorICAgIG1vdmUgdDEsIGNmcgorICAg
IGJ0aXogdDAsIC5jb250aW51ZQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2JhbERhdGFb
c3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3dbdDFdLCB0
MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3QxXQorLmNv
bnRpbnVlOgorICAgICMgUmVsb2FkIENvZGVCbG9jayBhbmQgUEMsIHNpbmNlIHRoZSBzbG93X3Bh
dGggY2xvYmJlcmVkIGl0LgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MQorICAgIGxvYWRw
IENvZGVCbG9jazo6bV9pbnN0cnVjdGlvbnNbdDFdLCB0MAorICAgIGxvYWRwIENvZGVCbG9jazo6
SW5zdHJ1Y3Rpb25zOjptX2luc3RydWN0aW9ucyArIFZlY3RvckJ1ZmZlck9mZnNldFt0MF0sIFBD
CisgICAgam1wIGRvbmVMYWJlbAorZW5kCisKK19sbGludF9wcm9ncmFtX3Byb2xvZ3VlOgorICAg
IHByb2xvZ3VlKG5vdEZ1bmN0aW9uQ29kZUJsb2NrR2V0dGVyLCBub3RGdW5jdGlvbkNvZGVCbG9j
a1NldHRlciwgX2xsaW50X2VudHJ5X29zciwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlKQorICAgIGRp
c3BhdGNoKDApCisKKworX2xsaW50X2V2YWxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUobm90RnVu
Y3Rpb25Db2RlQmxvY2tHZXR0ZXIsIG5vdEZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRf
ZW50cnlfb3NyLCBfbGxpbnRfdHJhY2VfcHJvbG9ndWUpCisgICAgZGlzcGF0Y2goMCkKKworCitf
bGxpbnRfZnVuY3Rpb25fZm9yX2NhbGxfcHJvbG9ndWU6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25G
b3JDYWxsQ29kZUJsb2NrR2V0dGVyLCBmdW5jdGlvbkNvZGVCbG9ja1NldHRlciwgX2xsaW50X2Vu
dHJ5X29zcl9mdW5jdGlvbl9mb3JfY2FsbCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9u
X2Zvcl9jYWxsKQorLmZ1bmN0aW9uRm9yQ2FsbEJlZ2luOgorICAgIGZ1bmN0aW9uSW5pdGlhbGl6
YXRpb24oMCkKKyAgICBkaXNwYXRjaCgwKQorICAgIAorCitfbGxpbnRfZnVuY3Rpb25fZm9yX2Nv
bnN0cnVjdF9wcm9sb2d1ZToKKyAgICBwcm9sb2d1ZShmdW5jdGlvbkZvckNvbnN0cnVjdENvZGVC
bG9ja0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVu
Y3Rpb25fZm9yX2NvbnN0cnVjdCwgX2xsaW50X3RyYWNlX3Byb2xvZ3VlX2Z1bmN0aW9uX2Zvcl9j
b25zdHJ1Y3QpCisuZnVuY3Rpb25Gb3JDb25zdHJ1Y3RCZWdpbjoKKyAgICBmdW5jdGlvbkluaXRp
YWxpemF0aW9uKDEpCisgICAgZGlzcGF0Y2goMCkKKyAgICAKKworX2xsaW50X2Z1bmN0aW9uX2Zv
cl9jYWxsX2FyaXR5X2NoZWNrOgorICAgIHByb2xvZ3VlKGZ1bmN0aW9uRm9yQ2FsbENvZGVCbG9j
a0dldHRlciwgZnVuY3Rpb25Db2RlQmxvY2tTZXR0ZXIsIF9sbGludF9lbnRyeV9vc3JfZnVuY3Rp
b25fZm9yX2NhbGxfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9yX2NhbGwp
CisgICAgZnVuY3Rpb25Bcml0eUNoZWNrKC5mdW5jdGlvbkZvckNhbGxCZWdpbiwgX2xsaW50X3Ns
b3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spCisKKworX2xsaW50X2Z1bmN0aW9uX2Zvcl9jb25zdHJ1
Y3RfYXJpdHlfY2hlY2s6CisgICAgcHJvbG9ndWUoZnVuY3Rpb25Gb3JDb25zdHJ1Y3RDb2RlQmxv
Y2tHZXR0ZXIsIGZ1bmN0aW9uQ29kZUJsb2NrU2V0dGVyLCBfbGxpbnRfZW50cnlfb3NyX2Z1bmN0
aW9uX2Zvcl9jb25zdHJ1Y3RfYXJpdHlDaGVjaywgX2xsaW50X3RyYWNlX2FyaXR5Q2hlY2tfZm9y
X2NvbnN0cnVjdCkKKyAgICBmdW5jdGlvbkFyaXR5Q2hlY2soLmZ1bmN0aW9uRm9yQ29uc3RydWN0
QmVnaW4sIF9sbGludF9zbG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCisKKyMgSW5zdHJ1
Y3Rpb24gaW1wbGVtZW50YXRpb25zCisKK19sbGludF9vcF9lbnRlcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZGkgQ29kZUJsb2Nr
OjptX251bVZhcnNbdDJdLCB0MgorICAgIGJ0aXogdDIsIC5vcEVudGVyRG9uZQorICAgIG1vdmUg
VW5kZWZpbmVkVGFnLCB0MAorICAgIG1vdmUgMCwgdDEKKy5vcEVudGVyTG9vcDoKKyAgICBzdWJp
IDEsIHQyCisgICAgc3RvcmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBzdG9yZWkg
dDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBidGlueiB0MiwgLm9wRW50ZXJMb29w
Cisub3BFbnRlckRvbmU6CisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3BfY3JlYXRlX2Fj
dGl2YXRpb246CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAg
IGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgRW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQWN0
aXZhdGlvbkRvbmUKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9jcmVhdGVfYWN0
aXZhdGlvbikKKy5vcENyZWF0ZUFjdGl2YXRpb25Eb25lOgorICAgIGRpc3BhdGNoKDIpCisKKwor
X2xsaW50X29wX2luaXRfbGF6eV9yZWc6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRp
IDRbUENdLCB0MAorICAgIHN0b3JlaSBFbXB0eVZhbHVlVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MCwg
OF0KKyAgICBzdG9yZWkgMCwgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XQorICAgIGRpc3BhdGNo
KDIpCisKKworX2xsaW50X29wX2NyZWF0ZV9hcmd1bWVudHM6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGJpbmVxIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwg
RW1wdHlWYWx1ZVRhZywgLm9wQ3JlYXRlQXJndW1lbnRzRG9uZQorICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX2NyZWF0ZV9hcmd1bWVudHMpCisub3BDcmVhdGVBcmd1bWVudHNEb25l
OgorICAgIGRpc3BhdGNoKDIpCisKKworbWFjcm8gYWxsb2NhdGVCYXNpY0pTT2JqZWN0KHNpemVD
bGFzc0luZGV4LCBjbGFzc0luZm9PZmZzZXQsIHN0cnVjdHVyZSwgcmVzdWx0LCBzY3JhdGNoMSwg
c2NyYXRjaDIsIHNsb3dDYXNlKQorICAgIGlmIEFMV0FZU19BTExPQ0FURV9TTE9XCisgICAgICAg
IGptcCBzbG93Q2FzZQorICAgIGVsc2UKKyAgICAgICAgY29uc3Qgb2Zmc2V0T2ZNeVNpemVDbGFz
cyA9CisgICAgICAgICAgICBKU0dsb2JhbERhdGE6OmhlYXAgKworICAgICAgICAgICAgSGVhcDo6
bV9vYmplY3RTcGFjZSArCisgICAgICAgICAgICBNYXJrZWRTcGFjZTo6bV9ub3JtYWxTcGFjZSAr
CisgICAgICAgICAgICBNYXJrZWRTcGFjZTo6U3Vic3BhY2U6OnByZWNpc2VBbGxvY2F0b3JzICsK
KyAgICAgICAgICAgIHNpemVDbGFzc0luZGV4ICogc2l6ZW9mIE1hcmtlZEFsbG9jYXRvcgorICAg
ICAgICAKKyAgICAgICAgIyBGSVhNRTogd2UgY2FuIGdldCB0aGUgZ2xvYmFsIGRhdGEgaW4gb25l
IGxvYWQgZnJvbSB0aGUgc3RhY2suCisgICAgICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCBzY3Jh
dGNoMQorICAgICAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFsRGF0YVtzY3JhdGNoMV0sIHNj
cmF0Y2gxCisgICAgICAgIAorICAgICAgICAjIEdldCB0aGUgb2JqZWN0IGZyb20gdGhlIGZyZWUg
bGlzdC4gICAgCisgICAgICAgIGxvYWRwIG9mZnNldE9mTXlTaXplQ2xhc3MgKyBNYXJrZWRBbGxv
Y2F0b3I6Om1fZmlyc3RGcmVlQ2VsbFtzY3JhdGNoMV0sIHJlc3VsdAorICAgICAgICBidHB6IHJl
c3VsdCwgc2xvd0Nhc2UKKyAgICAgICAgCisgICAgICAgICMgUmVtb3ZlIHRoZSBvYmplY3QgZnJv
bSB0aGUgZnJlZSBsaXN0LgorICAgICAgICBsb2FkcCBbcmVzdWx0XSwgc2NyYXRjaDIKKyAgICAg
ICAgc3RvcmVwIHNjcmF0Y2gyLCBvZmZzZXRPZk15U2l6ZUNsYXNzICsgTWFya2VkQWxsb2NhdG9y
OjptX2ZpcnN0RnJlZUNlbGxbc2NyYXRjaDFdCisgICAgCisgICAgICAgICMgSW5pdGlhbGl6ZSB0
aGUgb2JqZWN0LgorICAgICAgICBsb2FkcCBjbGFzc0luZm9PZmZzZXRbc2NyYXRjaDFdLCBzY3Jh
dGNoMgorICAgICAgICBzdG9yZXAgc2NyYXRjaDIsIFtyZXN1bHRdCisgICAgICAgIHN0b3JlcCBz
dHJ1Y3R1cmUsIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbcmVzdWx0XQorICAgICAgICBzdG9yZXAgMCwg
SlNPYmplY3Q6Om1faW5oZXJpdG9ySURbcmVzdWx0XQorICAgICAgICBhZGRwIHNpemVvZiBKU09i
amVjdCwgcmVzdWx0LCBzY3JhdGNoMQorICAgICAgICBzdG9yZXAgc2NyYXRjaDEsIEpTT2JqZWN0
OjptX3Byb3BlcnR5U3RvcmFnZVtyZXN1bHRdCisgICAgZW5kCitlbmQKKworX2xsaW50X29wX2Ny
ZWF0ZV90aGlzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0s
IENlbGxUYWcsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XSwgdDAKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBi
YmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0MV0sIE9iamVjdFR5
cGUsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgbG9hZHAgSlNPYmplY3Q6Om1faW5oZXJpdG9ySURb
dDBdLCB0MgorICAgIGJ0cHogdDIsIC5vcENyZWF0ZVRoaXNTbG93CisgICAgYWxsb2NhdGVCYXNp
Y0pTT2JqZWN0KEpTRmluYWxPYmplY3RTaXplQ2xhc3NJbmRleCwgSlNHbG9iYWxEYXRhOjpqc0Zp
bmFsT2JqZWN0Q2xhc3NJbmZvLCB0MiwgdDAsIHQxLCB0MywgLm9wQ3JlYXRlVGhpc1Nsb3cpCisg
ICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENlbGxUYWcsIFRhZ09mZnNldFtjZnIsIHQx
LCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3Bh
dGNoKDMpCisKKy5vcENyZWF0ZVRoaXNTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX2NyZWF0ZV90aGlzKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2dldF9j
YWxsZWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIGxv
YWRwIFBheWxvYWRPZmZzZXQgKyBDYWxsZWVbY2ZyXSwgdDEKKyAgICBzdG9yZWkgQ2VsbFRhZywg
VGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDAsIDhdCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfY29udmVydF90aGlzOgorICAg
IHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBiaW5lcSBUYWdPZmZz
ZXRbY2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcENvbnZlcnRUaGlzU2xvdworICAgIGxvYWRpIFBh
eWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVt0MF0sIHQwCisgICAgYmJiIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5
cGVbdDBdLCBPYmplY3RUeXBlLCAub3BDb252ZXJ0VGhpc1Nsb3cKKyAgICBkaXNwYXRjaCgyKQor
Cisub3BDb252ZXJ0VGhpc1Nsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
Y29udmVydF90aGlzKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX25ld19vYmplY3Q6
CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAorICAg
IGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTR2xv
YmFsT2JqZWN0OjptX2VtcHR5T2JqZWN0U3RydWN0dXJlW3QwXSwgdDEKKyAgICBhbGxvY2F0ZUJh
c2ljSlNPYmplY3QoSlNGaW5hbE9iamVjdFNpemVDbGFzc0luZGV4LCBKU0dsb2JhbERhdGE6Ompz
RmluYWxPYmplY3RDbGFzc0luZm8sIHQxLCB0MCwgdDIsIHQzLCAub3BOZXdPYmplY3RTbG93KQor
ICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHN0b3JlaSBDZWxsVGFnLCBUYWdPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBkaXNw
YXRjaCgyKQorCisub3BOZXdPYmplY3RTbG93OgorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX25ld19vYmplY3QpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfbmV3X2Fy
cmF5OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9uZXdfYXJyYXkpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2FycmF5
X2J1ZmZlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfbmV3X2FycmF5X2J1ZmZlcikKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9v
cF9uZXdfcmVnZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9uZXdfcmVnZXhwKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X21vdjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9h
ZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0MSwgdDIsIHQzKQorICAg
IHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3Bfbm90Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BD
XSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MiwgdDMpCisgICAgYmluZXEg
dDIsIEJvb2xlYW5UYWcsIC5vcE5vdFNsb3cKKyAgICB4b3JpIDEsIHQzCisgICAgc3RvcmVpIHQy
LCBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2Zy
LCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisub3BOb3RTbG93OgorICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX25vdCkKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9l
cToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MgorICAgIGxvYWRp
IDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQzLCB0MSkKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJpbmVxIHQyLCB0Mywg
Lm9wRXFTbG93CisgICAgYmllcSB0MiwgQ2VsbFRhZywgLm9wRXFTbG93CisgICAgYmliIHQyLCBM
b3dlc3RUYWcsIC5vcEVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGNpZXEgdDAsIHQx
LCB0MAorICAgIHN0b3JlaSBCb29sZWFuVGFnLCBUYWdPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBz
dG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0KKyAgICBkaXNwYXRjaCg0KQorCisu
b3BFcVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZXEpCisgICAgZGlz
cGF0Y2goNCkKKworCitfbGxpbnRfb3BfZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgYXNzZXJ0Tm90Q29u
c3RhbnQodDApCisgICAgbG9hZGkgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCB0MQorICAgIGxvYWRp
IFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQwCisgICAgYmluZXEgdDEsIENlbGxUYWcsIC5v
cEVxTnVsbEltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQor
ICAgIHRibnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDFdLCBN
YXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0MQorICAgIGptcCAub3BFcU51bGxOb3RJbW1lZGlhdGUK
Ky5vcEVxTnVsbEltbWVkaWF0ZToKKyAgICBjaWVxIHQxLCBOdWxsVGFnLCB0MgorICAgIGNpZXEg
dDEsIFVuZGVmaW5lZFRhZywgdDEKKyAgICBvcmkgdDIsIHQxCisub3BFcU51bGxOb3RJbW1lZGlh
dGU6CisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtjZnIsIHQzLCA4XQorICAgIHN0
b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGRpc3BhdGNoKDMpCisKKwor
X2xsaW50X29wX25lcToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0
MgorICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQz
LCB0MSkKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MCwgdDIsIHQwKQorICAgIGJp
bmVxIHQyLCB0MywgLm9wTmVxU2xvdworICAgIGJpZXEgdDIsIENlbGxUYWcsIC5vcE5lcVNsb3cK
KyAgICBiaWIgdDIsIExvd2VzdFRhZywgLm9wTmVxU2xvdworICAgIGxvYWRpIDRbUENdLCB0Mgor
ICAgIGNpbmVxIHQwLCB0MSwgdDAKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAg
ZGlzcGF0Y2goNCkKKworLm9wTmVxU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9uZXEpCisgICAgZGlzcGF0Y2goNCkKKyAgICAKKworX2xsaW50X29wX25lcV9udWxsOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BD
XSwgdDMKKyAgICBhc3NlcnROb3RDb25zdGFudCh0MCkKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAg
ICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wTmVxTnVsbEltbWVkaWF0ZQorICAgIGxvYWRwIEpTQ2Vs
bDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIHRieiBTdHJ1Y3R1cmU6Om1fdHlwZUluZm8gKyBU
eXBlSW5mbzo6bV9mbGFnc1t0MV0sIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQsIHQxCisgICAgam1w
IC5vcE5lcU51bGxOb3RJbW1lZGlhdGUKKy5vcE5lcU51bGxJbW1lZGlhdGU6CisgICAgY2luZXEg
dDEsIE51bGxUYWcsIHQyCisgICAgY2luZXEgdDEsIFVuZGVmaW5lZFRhZywgdDEKKyAgICBhbmRp
IHQyLCB0MQorLm9wTmVxTnVsbE5vdEltbWVkaWF0ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywg
VGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2Nmciwg
dDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworCittYWNybyBzdHJpY3RFcShlcXVhbGl0eU9wZXJh
dGlvbiwgc2xvd19wYXRoKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0
YW50T3JWYXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgdDMsIC5zbG93Cisg
ICAgYmliIHQyLCBMb3dlc3RUYWcsIC5zbG93CisgICAgYmluZXEgdDIsIENlbGxUYWcsIC5ub3RT
dHJpbmcKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIKKyAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QxXSwgdDMKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV90eXBlW3QyXSwgU3RyaW5nVHlwZSwgLm5vdFN0cmluZworICAgIGJi
ZXEgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0M10sIFN0cmluZ1R5
cGUsIC5zbG93Cisubm90U3RyaW5nOgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGVxdWFsaXR5
T3BlcmF0aW9uKHQwLCB0MSwgdDApCisgICAgc3RvcmVpIEJvb2xlYW5UYWcsIFRhZ09mZnNldFtj
ZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAg
IGRpc3BhdGNoKDQpCisKKy5zbG93OgorICAgIGNhbGxTbG93UGF0aChzbG93X3BhdGgpCisgICAg
ZGlzcGF0Y2goNCkKK2VuZAorCitfbGxpbnRfb3Bfc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIHN0cmljdEVxKG1hY3JvIChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaWVxIGxlZnQs
IHJpZ2h0LCByZXN1bHQgZW5kLCBfbGxpbnRfc2xvd19wYXRoX3N0cmljdGVxKQorCisKK19sbGlu
dF9vcF9uc3RyaWN0ZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIHN0cmljdEVxKG1hY3Jv
IChsZWZ0LCByaWdodCwgcmVzdWx0KSBjaW5lcSBsZWZ0LCByaWdodCwgcmVzdWx0IGVuZCwgX2xs
aW50X3Nsb3dfcGF0aF9uc3RyaWN0ZXEpCisKKworX2xsaW50X29wX2xlc3M6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2xlc3MpCisgICAg
ZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfbGVzc2VxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9sZXNzZXEpCisgICAgZGlzcGF0Y2go
NCkKKworCitfbGxpbnRfb3BfZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ3JlYXRlcikKKyAgICBkaXNwYXRjaCg0KQorCisK
K19sbGludF9vcF9ncmVhdGVyZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93
UGF0aChfbGxpbnRfc2xvd19wYXRoX2dyZWF0ZXJlcSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19s
bGludF9vcF9wcmVfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwg
dDAKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFnLCAub3BQcmVJbmNT
bG93CisgICAgbG9hZGkgUGF5bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAgICBiYWRkaW8g
MSwgdDEsIC5vcFByZUluY1Nsb3cKKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MCwgOF0KKyAgICBkaXNwYXRjaCgyKQorCisub3BQcmVJbmNTbG93OgorICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX3ByZV9pbmMpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRf
b3BfcHJlX2RlYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisg
ICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBJbnQzMlRhZywgLm9wUHJlRGVjU2xvdwor
ICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgYnN1YmlvIDEsIHQx
LCAub3BQcmVEZWNTbG93CisgICAgc3RvcmVpIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhd
CisgICAgZGlzcGF0Y2goMikKKworLm9wUHJlRGVjU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9wcmVfZGVjKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX3Bv
c3RfaW5jOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBs
b2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMyVGFn
LCAub3BQb3N0SW5jU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0SW5jRG9uZQorICAgIGxv
YWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAgICBi
YWRkaW8gMSwgdDMsIC5vcFBvc3RJbmNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdPZmZz
ZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwgOF0K
KyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3RJbmNEb25l
OgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3RJbmNTbG93OgorICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX3Bvc3RfaW5jKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29w
X3Bvc3RfZGVjOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIEludDMy
VGFnLCAub3BQb3N0RGVjU2xvdworICAgIGJpZXEgdDAsIHQxLCAub3BQb3N0RGVjRG9uZQorICAg
IGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQyCisgICAgbW92ZSB0MiwgdDMKKyAg
ICBic3ViaW8gMSwgdDMsIC5vcFBvc3REZWNTbG93CisgICAgc3RvcmVpIEludDMyVGFnLCBUYWdP
ZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MSwg
OF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKy5vcFBvc3REZWNE
b25lOgorICAgIGRpc3BhdGNoKDMpCisKKy5vcFBvc3REZWNTbG93OgorICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX3Bvc3RfZGVjKQorICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50
X29wX3RvX2pzbnVtYmVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwg
dDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQwLCB0
MiwgdDMpCisgICAgYmllcSB0MiwgSW50MzJUYWcsIC5vcFRvSnNudW1iZXJJc0ludAorICAgIGJp
YWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BUb0pzbnVtYmVyU2xvdworLm9wVG9Kc251bWJlcklz
SW50OgorICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgc3RvcmVpIHQz
LCBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9Kc251
bWJlclNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfdG9fanNudW1iZXIp
CisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfbmVnYXRlOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQwLCB0MSwgdDIpCisgICAgYmluZXEgdDEsIEludDMyVGFnLCAu
b3BOZWdhdGVTcmNOb3RJbnQKKyAgICBidGl6IHQyLCAweDdmZmZmZmZmLCAub3BOZWdhdGVTbG93
CisgICAgbmVnaSB0MgorICAgIHN0b3JlaSBJbnQzMlRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhd
CisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2go
MykKKy5vcE5lZ2F0ZVNyY05vdEludDoKKyAgICBiaWEgdDEsIExvd2VzdFRhZywgLm9wTmVnYXRl
U2xvdworICAgIHhvcmkgMHg4MDAwMDAwMCwgdDEKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtj
ZnIsIHQzLCA4XQorICAgIHN0b3JlaSB0MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAg
IGRpc3BhdGNoKDMpCisKKy5vcE5lZ2F0ZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfbmVnYXRlKQorICAgIGRpc3BhdGNoKDMpCisKKworbWFjcm8gYmluYXJ5T3BDdXN0
b21TdG9yZShpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUsIGRvdWJsZU9wZXJhdGlvbiwgc2xvd19w
YXRoKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJs
ZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MiwgSW50MzJUYWcsIC5vcDFOb3RJbnQKKyAg
ICBiaW5lcSB0MywgSW50MzJUYWcsIC5vcDJOb3RJbnQKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAg
ICBpbnRlZ2VyT3BlcmF0aW9uQW5kU3RvcmUodDMsIHQxLCB0MCwgLnNsb3csIHQyKQorICAgIGRp
c3BhdGNoKDUpCisKKy5vcDFOb3RJbnQ6CisgICAgIyBGaXJzdCBvcGVyYW5kIGlzIGRlZmluaXRl
bHkgbm90IGFuIGludCwgdGhlIHNlY29uZCBvcGVyYW5kIGNvdWxkIGJlIGFueXRoaW5nLgorICAg
IGJpYSB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGJpYiB0MywgTG93ZXN0VGFnLCAub3AxTm90
SW50T3AyRG91YmxlCisgICAgYmluZXEgdDMsIEludDMyVGFnLCAuc2xvdworICAgIGNpMmQgdDEs
IGZ0MQorICAgIGptcCAub3AxTm90SW50UmVhZHkKKy5vcDFOb3RJbnRPcDJEb3VibGU6CisgICAg
ZmlpMmQgdDEsIHQzLCBmdDEKKy5vcDFOb3RJbnRSZWFkeToKKyAgICBsb2FkaSA0W1BDXSwgdDEK
KyAgICBmaWkyZCB0MCwgdDIsIGZ0MAorICAgIGRvdWJsZU9wZXJhdGlvbihmdDEsIGZ0MCkKKyAg
ICBzdG9yZWQgZnQwLCBbY2ZyLCB0MSwgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3AyTm90SW50
OgorICAgICMgRmlyc3Qgb3BlcmFuZCBpcyBkZWZpbml0ZWx5IGFuIGludCwgdGhlIHNlY29uZCBv
cGVyYW5kIGlzIGRlZmluaXRlbHkgbm90LgorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGJpYSB0
MywgTG93ZXN0VGFnLCAuc2xvdworICAgIGNpMmQgdDAsIGZ0MAorICAgIGZpaTJkIHQxLCB0Mywg
ZnQxCisgICAgZG91YmxlT3BlcmF0aW9uKGZ0MSwgZnQwKQorICAgIHN0b3JlZCBmdDAsIFtjZnIs
IHQyLCA4XQorICAgIGRpc3BhdGNoKDUpCisKKy5zbG93OgorICAgIGNhbGxTbG93UGF0aChzbG93
X3BhdGgpCisgICAgZGlzcGF0Y2goNSkKK2VuZAorCittYWNybyBiaW5hcnlPcChpbnRlZ2VyT3Bl
cmF0aW9uLCBkb3VibGVPcGVyYXRpb24sIHNsb3dfcGF0aCkKKyAgICBiaW5hcnlPcEN1c3RvbVN0
b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBpbmRleCkK
KyAgICAgICAgICAgIGludGVnZXJPcGVyYXRpb24obGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAg
ICAgICBzdG9yZWkgaW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAg
ICAgc3RvcmVpIHJpZ2h0LCBQYXlsb2FkT2Zmc2V0W2NmciwgaW5kZXgsIDhdCisgICAgICAgIGVu
ZCwKKyAgICAgICAgZG91YmxlT3BlcmF0aW9uLCBzbG93X3BhdGgpCitlbmQKKworX2xsaW50X29w
X2FkZDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYmluYXJ5T3AoCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgc2xvdykgYmFkZGlvIGxlZnQsIHJpZ2h0LCBzbG93IGVuZCwKKyAgICAg
ICAgbWFjcm8gKGxlZnQsIHJpZ2h0KSBhZGRkIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xs
aW50X3Nsb3dfcGF0aF9hZGQpCisKKworX2xsaW50X29wX211bDoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgYmluYXJ5T3BDdXN0b21TdG9yZSgKKyAgICAgICAgbWFjcm8gKGludDMyVGFnLCBs
ZWZ0LCByaWdodCwgc2xvdywgaW5kZXgpCisgICAgICAgICAgICBjb25zdCBzY3JhdGNoID0gaW50
MzJUYWcgICAjIFdlIGtub3cgdGhhdCB3ZSBjYW4gcmV1c2UgdGhlIGludDMyVGFnIHJlZ2lzdGVy
IHNpbmNlIGl0IGhhcyBhIGNvbnN0YW50LgorICAgICAgICAgICAgbW92ZSByaWdodCwgc2NyYXRj
aAorICAgICAgICAgICAgYm11bGlvIGxlZnQsIHNjcmF0Y2gsIHNsb3cKKyAgICAgICAgICAgIGJ0
aW56IHNjcmF0Y2gsIC5kb25lCisgICAgICAgICAgICBiaWx0IGxlZnQsIDAsIHNsb3cKKyAgICAg
ICAgICAgIGJpbHQgcmlnaHQsIDAsIHNsb3cKKyAgICAgICAgLmRvbmU6CisgICAgICAgICAgICBz
dG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIGluZGV4LCA4XQorICAgICAgICAgICAgc3Rv
cmVpIHNjcmF0Y2gsIFBheWxvYWRPZmZzZXRbY2ZyLCBpbmRleCwgOF0KKyAgICAgICAgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQpIG11bGQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAg
ICBfbGxpbnRfc2xvd19wYXRoX211bCkKKworCitfbGxpbnRfb3Bfc3ViOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBiaW5hcnlPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93
KSBic3ViaW8gbGVmdCwgcmlnaHQsIHNsb3cgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmln
aHQpIHN1YmQgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX3N1YikK
KworCitfbGxpbnRfb3BfZGl2OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaW5hcnlPcEN1
c3RvbVN0b3JlKAorICAgICAgICBtYWNybyAoaW50MzJUYWcsIGxlZnQsIHJpZ2h0LCBzbG93LCBp
bmRleCkKKyAgICAgICAgICAgIGNpMmQgbGVmdCwgZnQwCisgICAgICAgICAgICBjaTJkIHJpZ2h0
LCBmdDEKKyAgICAgICAgICAgIGRpdmQgZnQwLCBmdDEKKyAgICAgICAgICAgIGJjZDJpIGZ0MSwg
cmlnaHQsIC5ub3RJbnQKKyAgICAgICAgICAgIHN0b3JlaSBpbnQzMlRhZywgVGFnT2Zmc2V0W2Nm
ciwgaW5kZXgsIDhdCisgICAgICAgICAgICBzdG9yZWkgcmlnaHQsIFBheWxvYWRPZmZzZXRbY2Zy
LCBpbmRleCwgOF0KKyAgICAgICAgICAgIGptcCAuZG9uZQorICAgICAgICAubm90SW50OgorICAg
ICAgICAgICAgc3RvcmVkIGZ0MSwgW2NmciwgaW5kZXgsIDhdCisgICAgICAgIC5kb25lOgorICAg
ICAgICBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCkgZGl2ZCBsZWZ0LCByaWdodCBl
bmQsCisgICAgICAgIF9sbGludF9zbG93X3BhdGhfZGl2KQorCisKK19sbGludF9vcF9tb2Q6Cisg
ICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX21v
ZCkKKyAgICBkaXNwYXRjaCg0KQorCisKK21hY3JvIGJpdE9wKG9wZXJhdGlvbiwgc2xvd19wYXRo
LCBhZHZhbmNlKQorICAgIGxvYWRpIDEyW1BDXSwgdDIKKyAgICBsb2FkaSA4W1BDXSwgdDAKKyAg
ICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQyLCB0MywgdDEpCisgICAgbG9hZENvbnN0YW50T3JW
YXJpYWJsZTJSZWcodDAsIHQyLCB0MCkKKyAgICBiaW5lcSB0MywgSW50MzJUYWcsIC5zbG93Cisg
ICAgYmluZXEgdDIsIEludDMyVGFnLCAuc2xvdworICAgIGxvYWRpIDRbUENdLCB0MgorICAgIG9w
ZXJhdGlvbih0MSwgdDAsIC5zbG93KQorICAgIHN0b3JlaSB0MywgVGFnT2Zmc2V0W2NmciwgdDIs
IDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdCisgICAgZGlzcGF0
Y2goYWR2YW5jZSkKKworLnNsb3c6CisgICAgY2FsbFNsb3dQYXRoKHNsb3dfcGF0aCkKKyAgICBk
aXNwYXRjaChhZHZhbmNlKQorZW5kCisKK19sbGludF9vcF9sc2hpZnQ6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGJpdE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpIGxz
aGlmdGkgbGVmdCwgcmlnaHQgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2xzaGlmdCwK
KyAgICAgICAgNCkKKworCitfbGxpbnRfb3BfcnNoaWZ0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBiaXRPcCgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSByc2hpZnRpIGxl
ZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9yc2hpZnQsCisgICAgICAg
IDQpCisKKworX2xsaW50X29wX3Vyc2hpZnQ6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGJp
dE9wKAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHNsb3cpCisgICAgICAgICAgICB1cnNo
aWZ0aSBsZWZ0LCByaWdodAorICAgICAgICAgICAgYmlsdCByaWdodCwgMCwgc2xvdworICAgICAg
ICBlbmQsCisgICAgICAgIF9sbGludF9zbG93X3BhdGhfdXJzaGlmdCwKKyAgICAgICAgNCkKKwor
CitfbGxpbnRfb3BfYml0YW5kOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBiaXRPcCgKKyAg
ICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCBzbG93KSBhbmRpIGxlZnQsIHJpZ2h0IGVuZCwKKyAg
ICAgICAgX2xsaW50X3Nsb3dfcGF0aF9iaXRhbmQsCisgICAgICAgIDUpCisKKworX2xsaW50X29w
X2JpdHhvcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3Jv
IChsZWZ0LCByaWdodCwgc2xvdykgeG9yaSBsZWZ0LCByaWdodCBlbmQsCisgICAgICAgIF9sbGlu
dF9zbG93X3BhdGhfYml0eG9yLAorICAgICAgICA1KQorCisKK19sbGludF9vcF9iaXRvcjoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgYml0T3AoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdo
dCwgc2xvdykgb3JpIGxlZnQsIHJpZ2h0IGVuZCwKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9i
aXRvciwKKyAgICAgICAgNSkKKworCitfbGxpbnRfb3BfYml0bm90OgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlKHQxLCB0MiwgdDMpCisgICAgYmluZXEgdDIsIEludDMyVGFnLCAu
b3BCaXRub3RTbG93CisgICAgbm90aSB0MworICAgIHN0b3JlaSB0MiwgVGFnT2Zmc2V0W2Nmciwg
dDAsIDhdCisgICAgc3RvcmVpIHQzLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdCisgICAgZGlz
cGF0Y2goMykKKworLm9wQml0bm90U2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3df
cGF0aF9iaXRub3QpCisgICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfY2hlY2tfaGFzX2lu
c3RhbmNlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBs
b2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MSwgQ2VsbFRhZywgdDAsIC5vcENoZWNrSGFz
SW5zdGFuY2VTbG93KQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAg
IGJ0YnogU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBs
ZW1lbnRzSGFzSW5zdGFuY2UsIC5vcENoZWNrSGFzSW5zdGFuY2VTbG93CisgICAgZGlzcGF0Y2go
MikKKworLm9wQ2hlY2tIYXNJbnN0YW5jZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9z
bG93X3BhdGhfY2hlY2tfaGFzX2luc3RhbmNlKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50
X29wX2luc3RhbmNlb2Y6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgICMgQ2hlY2sgdGhhdCBi
YXNlVmFsIGltcGxlbWVudHMgdGhlIGRlZmF1bHQgSGFzSW5zdGFuY2UgYmVoYXZpb3IuCisgICAg
IyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZGVwcmVjYXRlZC4KKyAgICBsb2FkaSAxMltQQ10sIHQx
CisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWRVbmNoZWNrZWQodDEsIHQwKQorICAg
IGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MAorICAgIGJ0YnogU3RydWN0dXJlOjpt
X3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3NbdDBdLCBJbXBsZW1lbnRzRGVmYXVsdEhhc0lu
c3RhbmNlLCAub3BJbnN0YW5jZW9mU2xvdworICAgIAorICAgICMgQWN0dWFsbHkgZG8gdGhlIHdv
cmsuCisgICAgbG9hZGkgMTZbUENdLCB0MAorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRD
b25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wSW5zdGFuY2VvZlNs
b3cpCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MV0sIHQyCisgICAgYmJiIFN0cnVj
dHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBPYmplY3RUeXBlLCAub3BJ
bnN0YW5jZW9mU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wSW5zdGFuY2VvZlNsb3cpCisgICAgCisg
ICAgIyBSZWdpc3RlciBzdGF0ZTogdDEgPSBwcm90b3R5cGUsIHQyID0gdmFsdWUKKyAgICBtb3Zl
IDEsIHQwCisub3BJbnN0YW5jZW9mTG9vcDoKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJl
W3QyXSwgdDIKKyAgICBsb2FkaSBTdHJ1Y3R1cmU6Om1fcHJvdG90eXBlICsgUGF5bG9hZE9mZnNl
dFt0Ml0sIHQyCisgICAgYnBlcSB0MiwgdDEsIC5vcEluc3RhbmNlb2ZEb25lCisgICAgYnRpbnog
dDIsIC5vcEluc3RhbmNlb2ZMb29wCisKKyAgICBtb3ZlIDAsIHQwCisub3BJbnN0YW5jZW9mRG9u
ZToKKyAgICBzdG9yZWkgQm9vbGVhblRhZywgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3Rv
cmVpIHQwLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goNSkKKworLm9w
SW5zdGFuY2VvZlNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaW5zdGFu
Y2VvZikKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF90eXBlb2Y6CisgICAgdHJhY2VF
eGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3R5cGVvZikKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc191bmRlZmluZWQ6CisgICAgdHJhY2VFeGVj
dXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX2lzX3VuZGVmaW5lZCkK
KyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9pc19ib29sZWFuOgorICAgIHRyYWNlRXhl
Y3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pc19ib29sZWFuKQor
ICAgIGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX251bWJlcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXNfbnVtYmVyKQorICAg
IGRpc3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX3N0cmluZzoKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXNfc3RyaW5nKQorICAgIGRp
c3BhdGNoKDMpCisKKworX2xsaW50X29wX2lzX29iamVjdDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaXNfb2JqZWN0KQorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX2lzX2Z1bmN0aW9uOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9pc19mdW5jdGlvbikKKyAgICBkaXNw
YXRjaCgzKQorCisKK19sbGludF9vcF9pbjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2Fs
bFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfaW4pCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxp
bnRfb3BfcmVzb2x2ZToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfcmVzb2x2ZSkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9y
ZXNvbHZlX3NraXA6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxp
bnRfc2xvd19wYXRoX3Jlc29sdmVfc2tpcCkKKyAgICBkaXNwYXRjaCg1KQorCisKK21hY3JvIHJl
c29sdmVHbG9iYWwoc2l6ZSwgc2xvdykKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dzOgor
ICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAgIFBy
b3BlcnR5IGlkZW50aWZpZXIgaW5kZXggaW4gdGhlIGNvZGUgYmxvY2suCisgICAgIyAxMltQQ10g
IFN0cnVjdHVyZSBwb2ludGVyLCBpbml0aWFsaXplZCB0byAwIGJ5IGJ5dGVjb2RlIGdlbmVyYXRv
ci4KKyAgICAjIDE2W1BDXSAgT2Zmc2V0IGluIGdsb2JhbCBvYmplY3QsIGluaXRpYWxpemVkIHRv
IDAgYnkgYnl0ZWNvZGUgZ2VuZXJhdG9yLgorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0MAor
ICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxPYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpT
Q2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MQorICAgIGJwbmVxIHQxLCAxMltQQ10sIHNsb3cKKyAg
ICBsb2FkaSAxNltQQ10sIHQxCisgICAgbG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdl
W3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQxLCA4XSwgdDIKKyAgICBsb2FkaSBQ
YXlsb2FkT2Zmc2V0W3QwLCB0MSwgOF0sIHQzCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgc3Rv
cmVpIHQyLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBzdG9yZWkgdDMsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MCwgOF0KKyAgICBsb2FkaSAoc2l6ZSAtIDEpICogNFtQQ10sIHQwCisgICAgdmFs
dWVQcm9maWxlKHQyLCB0MywgdDApCitlbmQKKworX2xsaW50X29wX3Jlc29sdmVfZ2xvYmFsOgor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICByZXNvbHZlR2xvYmFsKDYsIC5vcFJlc29sdmVHbG9i
YWxTbG93KQorICAgIGRpc3BhdGNoKDYpCisKKy5vcFJlc29sdmVHbG9iYWxTbG93OgorICAgIGNh
bGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Jlc29sdmVfZ2xvYmFsKQorICAgIGRpc3BhdGNo
KDYpCisKKworIyBHaXZlcyB5b3UgdGhlIHNjb3BlIGluIHQwLCB3aGlsZSBhbGxvd2luZyB5b3Ug
dG8gb3B0aW9uYWxseSBwZXJmb3JtIGFkZGl0aW9uYWwgY2hlY2tzIG9uIHRoZQorIyBzY29wZXMg
YXMgdGhleSBhcmUgdHJhdmVyc2VkLiBzY29wZUNoZWNrKCkgaXMgY2FsbGVkIHdpdGggdHdvIGFy
Z3VtZW50czogdGhlIHJlZ2lzdGVyCisjIGhvbGRpbmcgdGhlIHNjb3BlLCBhbmQgYSByZWdpc3Rl
ciB0aGF0IGNhbiBiZSB1c2VkIGZvciBzY3JhdGNoLiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdAor
IyB1c2UgdDMsIHNvIHlvdSBjYW4gaG9sZCBzdHVmZiBpbiB0MyBpZiBuZWVkIGJlLgorbWFjcm8g
Z2V0U2NvcGUoZGVCcnVpamluSW5kZXhPcGVyYW5kLCBzY29wZUNoZWNrKQorICAgIGxvYWRwIFNj
b3BlQ2hhaW4gKyBQYXlsb2FkT2Zmc2V0W2Nmcl0sIHQwCisgICAgbG9hZGkgZGVCcnVpamluSW5k
ZXhPcGVyYW5kLCB0MgorICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisgICAgCisgICAgbG9hZHAg
Q29kZUJsb2NrW2Nmcl0sIHQxCisgICAgYmluZXEgQ29kZUJsb2NrOjptX2NvZGVUeXBlW3QxXSwg
RnVuY3Rpb25Db2RlLCAubG9vcAorICAgIGJ0YnogQ29kZUJsb2NrOjptX25lZWRzRnVsbFNjb3Bl
Q2hhaW5bdDFdLCAubG9vcAorICAgIAorICAgIGxvYWRpIENvZGVCbG9jazo6bV9hY3RpdmF0aW9u
UmVnaXN0ZXJbdDFdLCB0MQorCisgICAgIyBOZWVkIHRvIGNvbmRpdGlvbmFsbHkgc2tpcCBvdmVy
IG9uZSBzY29wZS4KKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4XSwgRW1wdHlWYWx1ZVRh
ZywgLm5vQWN0aXZhdGlvbgorICAgIHNjb3BlQ2hlY2sodDAsIHQxKQorICAgIGxvYWRwIFNjb3Bl
Q2hhaW5Ob2RlOjpuZXh0W3QwXSwgdDAKKy5ub0FjdGl2YXRpb246CisgICAgc3ViaSAxLCB0Mgor
ICAgIAorICAgIGJ0aXogdDIsIC5kb25lCisubG9vcDoKKyAgICBzY29wZUNoZWNrKHQwLCB0MSkK
KyAgICBsb2FkcCBTY29wZUNoYWluTm9kZTo6bmV4dFt0MF0sIHQwCisgICAgc3ViaSAxLCB0Mgor
ICAgIGJ0aW56IHQyLCAubG9vcAorCisuZG9uZToKK2VuZAorCitfbGxpbnRfb3BfcmVzb2x2ZV9n
bG9iYWxfZHluYW1pYzoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tG
cmFtZTo6Z2xvYmFsRGF0YVtzcF0sIHQzCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjphY3RpdmF0
aW9uU3RydWN0dXJlW3QzXSwgdDMKKyAgICBnZXRTY29wZSgKKyAgICAgICAgMjBbUENdLAorICAg
ICAgICBtYWNybyAoc2NvcGUsIHNjcmF0Y2gpCisgICAgICAgICAgICBsb2FkcCBTY29wZUNoYWlu
Tm9kZTo6b2JqZWN0W3Njb3BlXSwgc2NyYXRjaAorICAgICAgICAgICAgYnBuZXEgSlNDZWxsOjpt
X3N0cnVjdHVyZVtzY3JhdGNoXSwgdDMsIC5vcFJlc29sdmVHbG9iYWxEeW5hbWljU3VwZXJTbG93
CisgICAgICAgIGVuZCkKKyAgICByZXNvbHZlR2xvYmFsKDcsIC5vcFJlc29sdmVHbG9iYWxEeW5h
bWljU2xvdykKKyAgICBkaXNwYXRjaCg3KQorCisub3BSZXNvbHZlR2xvYmFsRHluYW1pY1N1cGVy
U2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX2Zvcl9yZXNv
bHZlX2dsb2JhbF9keW5hbWljKQorICAgIGRpc3BhdGNoKDcpCisKKy5vcFJlc29sdmVHbG9iYWxE
eW5hbWljU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX2ds
b2JhbF9keW5hbWljKQorICAgIGRpc3BhdGNoKDcpCisKKworX2xsaW50X29wX2dldF9zY29wZWRf
dmFyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIE9wZXJhbmRzIGFyZSBhcyBmb2xsb3dz
OgorICAgICMgNFtQQ10gICBEZXN0aW5hdGlvbiBmb3IgdGhlIGxvYWQuCisgICAgIyA4W1BDXSAg
IEluZGV4IG9mIHJlZ2lzdGVyIGluIHRoZSBzY29wZS4KKyAgICAjIDEyW1BDXSAgRGUgQnJ1aWpp
biBpbmRleC4KKyAgICBnZXRTY29wZSgxMltQQ10sIG1hY3JvIChzY29wZSwgc2NyYXRjaCkgZW5k
KQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRwIFNj
b3BlQ2hhaW5Ob2RlOjpvYmplY3RbdDBdLCB0MAorICAgIGxvYWRwIEpTVmFyaWFibGVPYmplY3Q6
Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyLCA4XSwgdDMK
KyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0sIHQwCisgICAgc3RvcmVpIHQzLCBU
YWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBsb2FkaSAxNltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MCwgdDEp
CisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfcHV0X3Njb3BlZF92YXI6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGdldFNjb3BlKDhbUENdLCBtYWNybyAoc2NvcGUsIHNjcmF0Y2gp
IGVuZCkKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZSh0
MSwgdDMsIHQyKQorICAgIGxvYWRpIDRbUENdLCB0MQorICAgIHdyaXRlQmFycmllcih0MywgdDIp
CisgICAgbG9hZHAgU2NvcGVDaGFpbk5vZGU6Om9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNW
YXJpYWJsZU9iamVjdDo6bV9yZWdpc3RlcnNbdDBdLCB0MAorICAgIHN0b3JlaSB0MywgVGFnT2Zm
c2V0W3QwLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbdDAsIHQxLCA4XQor
ICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX2dldF9nbG9iYWxfdmFyOgorICAgIHRyYWNl
RXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAg
ICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDAKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1fZ2xvYmFs
T2JqZWN0W3QwXSwgdDAKKyAgICBsb2FkcCBKU0dsb2JhbE9iamVjdDo6bV9yZWdpc3RlcnNbdDBd
LCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFt0MCwgdDEsIDhdLCB0MgorICAgIGxvYWRpIFBheWxv
YWRPZmZzZXRbdDAsIHQxLCA4XSwgdDEKKyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFtjZnIsIHQz
LCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIsIHQzLCA4XQorICAgIGxvYWRp
IDEyW1BDXSwgdDMKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0MykKKyAgICBkaXNwYXRjaCg0
KQorCisKK19sbGludF9vcF9wdXRfZ2xvYmFsX3ZhcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgbG9hZGkgOFtQQ10sIHQxCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQwCisgICAgbG9h
ZHAgQ29kZUJsb2NrOjptX2dsb2JhbE9iamVjdFt0MF0sIHQwCisgICAgbG9hZHAgSlNHbG9iYWxP
YmplY3Q6Om1fcmVnaXN0ZXJzW3QwXSwgdDAKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQx
LCB0MiwgdDMpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgd3JpdGVCYXJyaWVyKHQyLCB0MykK
KyAgICBzdG9yZWkgdDIsIFRhZ09mZnNldFt0MCwgdDEsIDhdCisgICAgc3RvcmVpIHQzLCBQYXls
b2FkT2Zmc2V0W3QwLCB0MSwgOF0KKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9yZXNv
bHZlX2Jhc2U6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRf
c2xvd19wYXRoX3Jlc29sdmVfYmFzZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9l
bnN1cmVfcHJvcGVydHlfZXhpc3RzOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xv
d1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9lbnN1cmVfcHJvcGVydHlfZXhpc3RzKQorICAgIGRpc3Bh
dGNoKDMpCisKKworX2xsaW50X29wX3Jlc29sdmVfd2l0aF9iYXNlOgorICAgIHRyYWNlRXhlY3V0
aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9yZXNvbHZlX3dpdGhfYmFz
ZSkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGludF9vcF9yZXNvbHZlX3dpdGhfdGhpczoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfcmVz
b2x2ZV93aXRoX3RoaXMpCisgICAgZGlzcGF0Y2goNSkKKworCitfbGxpbnRfb3BfZ2V0X2J5X2lk
OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICAjIFdlIG9ubHkgZG8gbW9ub21vcnBoaWMgZ2V0
X2J5X2lkIGNhY2hpbmcgZm9yIG5vdywgYW5kIHdlIGRvIG5vdCBtb2RpZnkgdGhlCisgICAgIyBv
cGNvZGUuIFdlIGRvLCBob3dldmVyLCBhbGxvdyBmb3IgdGhlIGNhY2hlIHRvIGNoYW5nZSBhbnl0
aW1lIGlmIGZhaWxzLCBzaW5jZQorICAgICMgcGluZy1wb25naW5nIGlzIGZyZWUuIEF0IGJlc3Qg
d2UgZ2V0IGx1Y2t5IGFuZCB0aGUgZ2V0X2J5X2lkIHdpbGwgY29udGludWUKKyAgICAjIHRvIHRh
a2UgZmFzdCBwYXRoIG9uIHRoZSBuZXcgY2FjaGUuIEF0IHdvcnN0IHdlIHRha2Ugc2xvdyBwYXRo
LCB3aGljaCBpcyB3aGF0CisgICAgIyB3ZSB3b3VsZCBoYXZlIGJlZW4gZG9pbmcgYW55d2F5Lgor
ICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkQ29uc3Rh
bnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRhZywgdDMsIC5vcEdldEJ5SWRTbG93KQorICAg
IGxvYWRpIDIwW1BDXSwgdDIKKyAgICBsb2FkcCBKU09iamVjdDo6bV9wcm9wZXJ0eVN0b3JhZ2Vb
dDNdLCB0MAorICAgIGJwbmVxIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDNdLCB0MSwgLm9wR2V0QnlJ
ZFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDAsIHQyXSwg
dDMKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QwLCB0Ml0sIHQyCisgICAgc3RvcmVpIHQzLCBU
YWdPZmZzZXRbY2ZyLCB0MSwgOF0KKyAgICBzdG9yZWkgdDIsIFBheWxvYWRPZmZzZXRbY2ZyLCB0
MSwgOF0KKyAgICBsb2FkaSAzMltQQ10sIHQxCisgICAgdmFsdWVQcm9maWxlKHQzLCB0MiwgdDEp
CisgICAgZGlzcGF0Y2goOSkKKworLm9wR2V0QnlJZFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9s
bGludF9zbG93X3BhdGhfZ2V0X2J5X2lkKQorICAgIGRpc3BhdGNoKDkpCisKKworX2xsaW50X29w
X2dldF9hcmd1bWVudHNfbGVuZ3RoOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA4
W1BDXSwgdDAKKyAgICBsb2FkaSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0
MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcEdldEFyZ3VtZW50c0xlbmd0aFNsb3cKKyAgICBsb2Fk
aSBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFtjZnJdLCB0MgorICAgIHN1YmkgMSwgdDIK
KyAgICBzdG9yZWkgSW50MzJUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0
MiwgUGF5bG9hZE9mZnNldFtjZnIsIHQxLCA4XQorICAgIGRpc3BhdGNoKDQpCisKKy5vcEdldEFy
Z3VtZW50c0xlbmd0aFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0
X2FyZ3VtZW50c19sZW5ndGgpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRfb3BfcHV0X2J5
X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2Fk
aSAxNltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxU
YWcsIHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgbG9hZHAg
SlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBicG5lcSBKU0NlbGw6Om1f
c3RydWN0dXJlW3QwXSwgdDEsIC5vcFB1dEJ5SWRTbG93CisgICAgbG9hZGkgMjBbUENdLCB0MQor
ICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MCwgdDIpCisgICAgd3JpdGVCYXJy
aWVyKHQwLCB0MikKKyAgICBzdG9yZWkgdDAsIFRhZ09mZnNldFt0MywgdDFdCisgICAgc3RvcmVp
IHQyLCBQYXlsb2FkT2Zmc2V0W3QzLCB0MV0KKyAgICBkaXNwYXRjaCg5KQorCisub3BQdXRCeUlk
U2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfYnlfaWQpCisgICAg
ZGlzcGF0Y2goOSkKKworCittYWNybyBwdXRCeUlkVHJhbnNpdGlvbihhZGRpdGlvbmFsQ2hlY2tz
KQorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkaSAx
NltQQ10sIHQxCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDMsIENlbGxUYWcs
IHQwLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAxMltQQ10sIHQyCisgICAgYnBuZXEgSlND
ZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQxLCAub3BQdXRCeUlkU2xvdworICAgIGFkZGl0aW9uYWxD
aGVja3ModDEsIHQzLCAub3BQdXRCeUlkU2xvdykKKyAgICBsb2FkaSAyMFtQQ10sIHQxCisgICAg
bG9hZHAgSlNPYmplY3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QwXSwgdDMKKyAgICBhZGRwIHQxLCB0
MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUyUmVnKHQyLCB0MSwgdDIpCisgICAgd3JpdGVC
YXJyaWVyKHQxLCB0MikKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFt0M10KKyAgICBsb2FkaSAy
NFtQQ10sIHQxCisgICAgc3RvcmVpIHQyLCBQYXlsb2FkT2Zmc2V0W3QzXQorICAgIHN0b3JlcCB0
MSwgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0KKyAgICBkaXNwYXRjaCg5KQorZW5kCisKK19sbGlu
dF9vcF9wdXRfYnlfaWRfdHJhbnNpdGlvbl9kaXJlY3Q6CisgICAgcHV0QnlJZFRyYW5zaXRpb24o
bWFjcm8gKG9sZFN0cnVjdHVyZSwgc2NyYXRjaCwgc2xvdykgZW5kKQorCisKK19sbGludF9vcF9w
dXRfYnlfaWRfdHJhbnNpdGlvbl9ub3JtYWw6CisgICAgcHV0QnlJZFRyYW5zaXRpb24oCisgICAg
ICAgIG1hY3JvIChvbGRTdHJ1Y3R1cmUsIHNjcmF0Y2gsIHNsb3cpCisgICAgICAgICAgICBjb25z
dCBwcm90b0NlbGwgPSBvbGRTdHJ1Y3R1cmUgICAjIFJldXNpbmcgdGhlIG9sZFN0cnVjdHVyZSBy
ZWdpc3RlciBmb3IgdGhlIHByb3RvCisgICAgICAgIAorICAgICAgICAgICAgbG9hZHAgMjhbUENd
LCBzY3JhdGNoCisgICAgICAgICAgICBhc3NlcnQobWFjcm8gKG9rKSBidHBueiBzY3JhdGNoLCBv
ayBlbmQpCisgICAgICAgICAgICBsb2FkcCBTdHJ1Y3R1cmVDaGFpbjo6bV92ZWN0b3Jbc2NyYXRj
aF0sIHNjcmF0Y2gKKyAgICAgICAgICAgIGFzc2VydChtYWNybyAob2spIGJ0cG56IHNjcmF0Y2gs
IG9rIGVuZCkKKyAgICAgICAgICAgIGJpZXEgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFRhZ09m
ZnNldFtvbGRTdHJ1Y3R1cmVdLCBOdWxsVGFnLCAuZG9uZQorICAgICAgICAubG9vcDoKKyAgICAg
ICAgICAgIGxvYWRpIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBQYXlsb2FkT2Zmc2V0W29sZFN0
cnVjdHVyZV0sIHByb3RvQ2VsbAorICAgICAgICAgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVy
ZVtwcm90b0NlbGxdLCBvbGRTdHJ1Y3R1cmUKKyAgICAgICAgICAgIGJwbmVxIG9sZFN0cnVjdHVy
ZSwgW3NjcmF0Y2hdLCBzbG93CisgICAgICAgICAgICBhZGRwIDQsIHNjcmF0Y2gKKyAgICAgICAg
ICAgIGJpbmVxIFN0cnVjdHVyZTo6bV9wcm90b3R5cGUgKyBUYWdPZmZzZXRbb2xkU3RydWN0dXJl
XSwgTnVsbFRhZywgLmxvb3AKKyAgICAgICAgLmRvbmU6CisgICAgICAgIGVuZCkKKworCitfbGxp
bnRfb3BfZGVsX2J5X2lkOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgo
X2xsaW50X3Nsb3dfcGF0aF9kZWxfYnlfaWQpCisgICAgZGlzcGF0Y2goNCkKKworCitfbGxpbnRf
b3BfZ2V0X2J5X3ZhbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgQ29kZUJsb2Nr
W2Nmcl0sIHQxCisgICAgbG9hZGkgOFtQQ10sIHQyCisgICAgbG9hZGkgMTJbUENdLCB0MworICAg
IGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QxXSwgdDEKKyAgICBsb2FkQ29uc3RhbnRP
clZhcmlhYmxlUGF5bG9hZCh0MiwgQ2VsbFRhZywgdDAsIC5vcEdldEJ5VmFsU2xvdykKKyAgICBs
b2FkcCBKU0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDFdLCB0MgorICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGVQYXlsb2FkKHQzLCBJbnQzMlRhZywgdDEsIC5vcEdldEJ5VmFsU2xvdykK
KyAgICBicG5lcSBbdDBdLCB0MiwgLm9wR2V0QnlWYWxTbG93CisgICAgbG9hZHAgSlNBcnJheTo6
bV9zdG9yYWdlW3QwXSwgdDMKKyAgICBiaWFlcSB0MSwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhb
dDBdLCAub3BHZXRCeVZhbFNsb3cKKyAgICBsb2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSBBcnJh
eVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QzLCB0MSwgOF0sIHQyCisgICAgbG9hZGkg
QXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFBheWxvYWRPZmZzZXRbdDMsIHQxLCA4XSwgdDEKKyAg
ICBiaWVxIHQyLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRCeVZhbFNsb3cKKyAgICBzdG9yZWkgdDIs
IFRhZ09mZnNldFtjZnIsIHQwLCA4XQorICAgIHN0b3JlaSB0MSwgUGF5bG9hZE9mZnNldFtjZnIs
IHQwLCA4XQorICAgIGxvYWRpIDE2W1BDXSwgdDAKKyAgICB2YWx1ZVByb2ZpbGUodDIsIHQxLCB0
MCkKKyAgICBkaXNwYXRjaCg1KQorCisub3BHZXRCeVZhbFNsb3c6CisgICAgY2FsbFNsb3dQYXRo
KF9sbGludF9zbG93X3BhdGhfZ2V0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg1KQorCisKK19sbGlu
dF9vcF9nZXRfYXJndW1lbnRfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBsb2Fk
aSA4W1BDXSwgdDAKKyAgICBsb2FkaSAxMltQQ10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2Nm
ciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAub3BHZXRBcmd1bWVudEJ5VmFsU2xvdworICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGVQYXlsb2FkKHQxLCBJbnQzMlRhZywgdDIsIC5vcEdldEFyZ3Vt
ZW50QnlWYWxTbG93KQorICAgIGFkZGkgMSwgdDIKKyAgICBsb2FkaSBBcmd1bWVudENvdW50ICsg
UGF5bG9hZE9mZnNldFtjZnJdLCB0MQorICAgIGJpYWVxIHQyLCB0MSwgLm9wR2V0QXJndW1lbnRC
eVZhbFNsb3cKKyAgICBuZWdpIHQyCisgICAgbG9hZGkgNFtQQ10sIHQzCisgICAgbG9hZGkgVGhp
c0FyZ3VtZW50T2Zmc2V0ICsgVGFnT2Zmc2V0W2NmciwgdDIsIDhdLCB0MAorICAgIGxvYWRpIFRo
aXNBcmd1bWVudE9mZnNldCArIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIHQxCisgICAgc3Rv
cmVpIHQwLCBUYWdPZmZzZXRbY2ZyLCB0MywgOF0KKyAgICBzdG9yZWkgdDEsIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MywgOF0KKyAgICBkaXNwYXRjaCg1KQorCisub3BHZXRBcmd1bWVudEJ5VmFsU2xv
dzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRfYXJndW1lbnRfYnlfdmFs
KQorICAgIGRpc3BhdGNoKDUpCisKKworX2xsaW50X29wX2dldF9ieV9wbmFtZToKKyAgICB0cmFj
ZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9yVmFy
aWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MSwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAgbG9h
ZGkgMTZbUENdLCB0MAorICAgIGJwbmVxIHQxLCBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCAu
b3BHZXRCeVBuYW1lU2xvdworICAgIGxvYWRpIDhbUENdLCB0MAorICAgIGxvYWRDb25zdGFudE9y
VmFyaWFibGVQYXlsb2FkKHQwLCBDZWxsVGFnLCB0MiwgLm9wR2V0QnlQbmFtZVNsb3cpCisgICAg
bG9hZGkgMjBbUENdLCB0MAorICAgIGxvYWRpIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0sIHQz
CisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0Ml0sIHQwCisgICAgYnBuZXEgdDAsIEpT
UHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJlW3QzXSwgLm9wR2V0QnlQbmFt
ZVNsb3cKKyAgICBsb2FkaSAyNFtQQ10sIHQwCisgICAgbG9hZGkgW2NmciwgdDAsIDhdLCB0MAor
ICAgIHN1YmkgMSwgdDAKKyAgICBiaWFlcSB0MCwgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvcjo6bV9u
dW1DYWNoZWFibGVTbG90c1t0M10sIC5vcEdldEJ5UG5hbWVTbG93CisgICAgbG9hZHAgSlNPYmpl
Y3Q6Om1fcHJvcGVydHlTdG9yYWdlW3QyXSwgdDIKKyAgICBsb2FkaSBUYWdPZmZzZXRbdDIsIHQw
LCA4XSwgdDEKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W3QyLCB0MCwgOF0sIHQzCisgICAgbG9h
ZGkgNFtQQ10sIHQwCisgICAgc3RvcmVpIHQxLCBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBz
dG9yZWkgdDMsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaCg3KQorCisu
b3BHZXRCeVBuYW1lU2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9nZXRf
YnlfcG5hbWUpCisgICAgZGlzcGF0Y2goNykKKworCitfbGxpbnRfb3BfcHV0X2J5X3ZhbDoKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZVBheWxvYWQodDAsIENlbGxUYWcsIHQxLCAub3BQdXRCeVZhbFNsb3cpCisgICAg
bG9hZGkgOFtQQ10sIHQwCisgICAgbG9hZENvbnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDAsIElu
dDMyVGFnLCB0MiwgLm9wUHV0QnlWYWxTbG93KQorICAgIGxvYWRwIENvZGVCbG9ja1tjZnJdLCB0
MAorICAgIGxvYWRwIENvZGVCbG9jazo6bV9nbG9iYWxEYXRhW3QwXSwgdDAKKyAgICBsb2FkcCBK
U0dsb2JhbERhdGE6OmpzQXJyYXlDbGFzc0luZm9bdDBdLCB0MAorICAgIGJwbmVxIFt0MV0sIHQw
LCAub3BQdXRCeVZhbFNsb3cKKyAgICBiaWFlcSB0MiwgSlNBcnJheTo6bV92ZWN0b3JMZW5ndGhb
dDFdLCAub3BQdXRCeVZhbFNsb3cKKyAgICBsb2FkcCBKU0FycmF5OjptX3N0b3JhZ2VbdDFdLCB0
MAorICAgIGJpZXEgQXJyYXlTdG9yYWdlOjptX3ZlY3RvciArIFRhZ09mZnNldFt0MCwgdDIsIDhd
LCBFbXB0eVZhbHVlVGFnLCAub3BQdXRCeVZhbEVtcHR5Cisub3BQdXRCeVZhbFN0b3JlUmVzdWx0
OgorICAgIGxvYWRpIDEyW1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlMlJlZyh0
MywgdDEsIHQzKQorICAgIHdyaXRlQmFycmllcih0MSwgdDMpCisgICAgc3RvcmVpIHQxLCBBcnJh
eVN0b3JhZ2U6Om1fdmVjdG9yICsgVGFnT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBzdG9yZWkgdDMs
IEFycmF5U3RvcmFnZTo6bV92ZWN0b3IgKyBQYXlsb2FkT2Zmc2V0W3QwLCB0MiwgOF0KKyAgICBk
aXNwYXRjaCg0KQorCisub3BQdXRCeVZhbEVtcHR5OgorICAgIGFkZGkgMSwgQXJyYXlTdG9yYWdl
OjptX251bVZhbHVlc0luVmVjdG9yW3QwXQorICAgIGJpYiB0MiwgQXJyYXlTdG9yYWdlOjptX2xl
bmd0aFt0MF0sIC5vcFB1dEJ5VmFsU3RvcmVSZXN1bHQKKyAgICBhZGRpIDEsIHQyLCB0MQorICAg
IHN0b3JlaSB0MSwgQXJyYXlTdG9yYWdlOjptX2xlbmd0aFt0MF0KKyAgICBqbXAgLm9wUHV0QnlW
YWxTdG9yZVJlc3VsdAorCisub3BQdXRCeVZhbFNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfcHV0X2J5X3ZhbCkKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9k
ZWxfYnlfdmFsOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50
X3Nsb3dfcGF0aF9kZWxfYnlfdmFsKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29wX3B1
dF9ieV9pbmRleDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGlu
dF9zbG93X3BhdGhfcHV0X2J5X2luZGV4KQorICAgIGRpc3BhdGNoKDQpCisKKworX2xsaW50X29w
X3B1dF9nZXR0ZXJfc2V0dGVyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9wdXRfZ2V0dGVyX3NldHRlcikKKyAgICBkaXNwYXRjaCg1KQor
CisKK19sbGludF9vcF9sb29wOgorICAgIG5vcAorX2xsaW50X29wX2ptcDoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgZGlzcGF0Y2hCcmFuY2goNFtQQ10pCisKKworX2xsaW50X29wX2ptcF9z
Y29wZXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xv
d19wYXRoX2ptcF9zY29wZXMpCisgICAgZGlzcGF0Y2goMCkKKworCittYWNybyBqdW1wVHJ1ZU9y
RmFsc2UoY29uZGl0aW9uT3AsIHNsb3cpCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgbG9hZENv
bnN0YW50T3JWYXJpYWJsZVBheWxvYWQodDEsIEJvb2xlYW5UYWcsIHQwLCAuc2xvdykKKyAgICBj
b25kaXRpb25PcCh0MCwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorCisudGFyZ2V0OgorICAg
IGRpc3BhdGNoQnJhbmNoKDhbUENdKQorCisuc2xvdzoKKyAgICBjYWxsU2xvd1BhdGgoc2xvdykK
KyAgICBkaXNwYXRjaCgwKQorZW5kCisKK19sbGludF9vcF9sb29wX2lmX3RydWU6CisgICAgbm9w
CitfbGxpbnRfb3BfanRydWU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGp1bXBUcnVlT3JG
YWxzZSgKKyAgICAgICAgbWFjcm8gKHZhbHVlLCB0YXJnZXQpIGJ0aW56IHZhbHVlLCB0YXJnZXQg
ZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2p0cnVlKQorCisKK19sbGludF9vcF9sb29w
X2lmX2ZhbHNlOgorICAgIG5vcAorX2xsaW50X29wX2pmYWxzZToKKyAgICB0cmFjZUV4ZWN1dGlv
bigpCisgICAganVtcFRydWVPckZhbHNlKAorICAgICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkg
YnRpeiB2YWx1ZSwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9qZmFsc2Up
CisKKworbWFjcm8gZXF1YWxOdWxsKGNlbGxIYW5kbGVyLCBpbW1lZGlhdGVIYW5kbGVyKQorICAg
IGxvYWRpIDRbUENdLCB0MAorICAgIGxvYWRpIFRhZ09mZnNldFtjZnIsIHQwLCA4XSwgdDEKKyAg
ICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDAsIDhdLCB0MAorICAgIGJpbmVxIHQxLCBDZWxs
VGFnLCAuaW1tZWRpYXRlCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0MF0sIHQyCisg
ICAgY2VsbEhhbmRsZXIoU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fZmxhZ3Nb
dDJdLCAudGFyZ2V0KQorICAgIGRpc3BhdGNoKDMpCisKKy50YXJnZXQ6CisgICAgZGlzcGF0Y2hC
cmFuY2goOFtQQ10pCisKKy5pbW1lZGlhdGU6CisgICAgb3JpIDEsIHQxCisgICAgaW1tZWRpYXRl
SGFuZGxlcih0MSwgLnRhcmdldCkKKyAgICBkaXNwYXRjaCgzKQorZW5kCisKK19sbGludF9vcF9q
ZXFfbnVsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgZXF1YWxOdWxsKAorICAgICAgICBt
YWNybyAodmFsdWUsIHRhcmdldCkgYnRibnogdmFsdWUsIE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQs
IHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFyZ2V0KSBiaWVxIHZhbHVlLCBO
dWxsVGFnLCB0YXJnZXQgZW5kKQorICAgIAorCitfbGxpbnRfb3Bfam5lcV9udWxsOgorICAgIHRy
YWNlRXhlY3V0aW9uKCkKKyAgICBlcXVhbE51bGwoCisgICAgICAgIG1hY3JvICh2YWx1ZSwgdGFy
Z2V0KSBidGJ6IHZhbHVlLCBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkLCB0YXJnZXQgZW5kLAorICAg
ICAgICBtYWNybyAodmFsdWUsIHRhcmdldCkgYmluZXEgdmFsdWUsIE51bGxUYWcsIHRhcmdldCBl
bmQpCisKKworX2xsaW50X29wX2puZXFfcHRyOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBs
b2FkaSA0W1BDXSwgdDAKKyAgICBsb2FkaSA4W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRb
Y2ZyLCB0MCwgOF0sIENlbGxUYWcsIC5vcEpuZXFQdHJCcmFuY2gKKyAgICBicGVxIFBheWxvYWRP
ZmZzZXRbY2ZyLCB0MCwgOF0sIHQxLCAub3BKbmVxUHRyRmFsbFRocm91Z2gKKy5vcEpuZXFQdHJC
cmFuY2g6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorLm9wSm5lcVB0ckZhbGxUaHJvdWdo
OgorICAgIGRpc3BhdGNoKDQpCisKKworbWFjcm8gY29tcGFyZShpbnRlZ2VyQ29tcGFyZSwgZG91
YmxlQ29tcGFyZSwgc2xvd19wYXRoKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIGxvYWRpIDhb
UENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQwLCB0MSkKKyAgICBsb2Fk
Q29uc3RhbnRPclZhcmlhYmxlMlJlZyh0MywgdDIsIHQzKQorICAgIGJpbmVxIHQwLCBJbnQzMlRh
ZywgLm9wMU5vdEludAorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLm9wMk5vdEludAorICAgIGlu
dGVnZXJDb21wYXJlKHQxLCB0MywgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLm9w
MU5vdEludDoKKyAgICBiaWEgdDAsIExvd2VzdFRhZywgLnNsb3cKKyAgICBiaWIgdDIsIExvd2Vz
dFRhZywgLm9wMU5vdEludE9wMkRvdWJsZQorICAgIGJpbmVxIHQyLCBJbnQzMlRhZywgLnNsb3cK
KyAgICBjaTJkIHQzLCBmdDEKKyAgICBqbXAgLm9wMU5vdEludFJlYWR5Cisub3AxTm90SW50T3Ay
RG91YmxlOgorICAgIGZpaTJkIHQzLCB0MiwgZnQxCisub3AxTm90SW50UmVhZHk6CisgICAgZmlp
MmQgdDEsIHQwLCBmdDAKKyAgICBkb3VibGVDb21wYXJlKGZ0MCwgZnQxLCAuanVtcFRhcmdldCkK
KyAgICBkaXNwYXRjaCg0KQorCisub3AyTm90SW50OgorICAgIGNpMmQgdDEsIGZ0MAorICAgIGJp
YSB0MiwgTG93ZXN0VGFnLCAuc2xvdworICAgIGZpaTJkIHQzLCB0MiwgZnQxCisgICAgZG91Ymxl
Q29tcGFyZShmdDAsIGZ0MSwgLmp1bXBUYXJnZXQpCisgICAgZGlzcGF0Y2goNCkKKworLmp1bXBU
YXJnZXQ6CisgICAgZGlzcGF0Y2hCcmFuY2goMTJbUENdKQorCisuc2xvdzoKKyAgICBjYWxsU2xv
d1BhdGgoc2xvd19wYXRoKQorICAgIGRpc3BhdGNoKDApCitlbmQKKworX2xsaW50X29wX2xvb3Bf
aWZfbGVzczoKKyAgICBub3AKK19sbGludF9vcF9qbGVzczoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgY29tcGFyZSgKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpbHQg
bGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFy
Z2V0KSBiZGx0IGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19w
YXRoX2psZXNzKQorCisKK19sbGludF9vcF9qbmxlc3M6CisgICAgdHJhY2VFeGVjdXRpb24oKQor
ICAgIGNvbXBhcmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0ZXEg
bGVmdCwgcmlnaHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFy
Z2V0KSBiZGd0ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X3Ns
b3dfcGF0aF9qbmxlc3MpCisKKworX2xsaW50X29wX2xvb3BfaWZfZ3JlYXRlcjoKKyAgICBub3AK
K19sbGludF9vcF9qZ3JlYXRlcjoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgY29tcGFyZSgK
KyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJpZ3QgbGVmdCwgcmlnaHQsIHRh
cmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGd0IGxlZnQs
IHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2pncmVhdGVyKQor
CisKK19sbGludF9vcF9qbmdyZWF0ZXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBh
cmUoCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0
ZXF1biBsZWZ0LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9q
bmdyZWF0ZXIpCisKKworX2xsaW50X29wX2xvb3BfaWZfbGVzc2VxOgorICAgIG5vcAorX2xsaW50
X29wX2psZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisgICAgICAg
IG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWx0ZXEgbGVmdCwgcmlnaHQsIHRhcmdldCBl
bmQsCisgICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiZGx0ZXEgbGVmdCwgcmln
aHQsIHRhcmdldCBlbmQsCisgICAgICAgIF9sbGludF9zbG93X3BhdGhfamxlc3NlcSkKKworCitf
bGxpbnRfb3Bfam5sZXNzZXE6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNvbXBhcmUoCisg
ICAgICAgIG1hY3JvIChsZWZ0LCByaWdodCwgdGFyZ2V0KSBiaWd0IGxlZnQsIHJpZ2h0LCB0YXJn
ZXQgZW5kLAorICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndHVuIGxlZnQs
IHJpZ2h0LCB0YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2pubGVzc2VxKQor
CisKK19sbGludF9vcF9sb29wX2lmX2dyZWF0ZXJlcToKKyAgICBub3AKK19sbGludF9vcF9qZ3Jl
YXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAorICAgICAgICBtYWNy
byAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlndGVxIGxlZnQsIHJpZ2h0LCB0YXJnZXQgZW5kLAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmRndGVxIGxlZnQsIHJpZ2h0LCB0
YXJnZXQgZW5kLAorICAgICAgICBfbGxpbnRfc2xvd19wYXRoX2pncmVhdGVyZXEpCisKKworX2xs
aW50X29wX2puZ3JlYXRlcmVxOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjb21wYXJlKAor
ICAgICAgICBtYWNybyAobGVmdCwgcmlnaHQsIHRhcmdldCkgYmlsdCBsZWZ0LCByaWdodCwgdGFy
Z2V0IGVuZCwKKyAgICAgICAgbWFjcm8gKGxlZnQsIHJpZ2h0LCB0YXJnZXQpIGJkbHR1biBsZWZ0
LCByaWdodCwgdGFyZ2V0IGVuZCwKKyAgICAgICAgX2xsaW50X3Nsb3dfcGF0aF9qbmdyZWF0ZXJl
cSkKKworCitfbGxpbnRfb3BfbG9vcF9oaW50OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBj
aGVja1N3aXRjaFRvSklURm9yTG9vcCgpCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bf
c3dpdGNoX2ltbToKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0Mgor
ICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0
MCkKKyAgICBsb2FkcCBDb2RlQmxvY2tbY2ZyXSwgdDIKKyAgICBsb2FkcCBDb2RlQmxvY2s6Om1f
cmFyZURhdGFbdDJdLCB0MgorICAgIG11bGkgc2l6ZW9mIFNpbXBsZUp1bXBUYWJsZSwgdDMgICAj
IEZJWE1FOiB3b3VsZCBiZSBuaWNlIHRvIHBlZXBob2xlIHRoaXMhCisgICAgbG9hZHAgQ29kZUJs
b2NrOjpSYXJlRGF0YTo6bV9pbW1lZGlhdGVTd2l0Y2hKdW1wVGFibGVzICsgVmVjdG9yQnVmZmVy
T2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAgIGJpbmVxIHQxLCBJbnQzMlRhZywg
Lm9wU3dpdGNoSW1tTm90SW50CisgICAgc3ViaSBTaW1wbGVKdW1wVGFibGU6Om1pblt0Ml0sIHQw
CisgICAgYmlhZXEgdDAsIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvclNp
emVPZmZzZXRbdDJdLCAub3BTd2l0Y2hJbW1GYWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1
bXBUYWJsZTo6YnJhbmNoT2Zmc2V0cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQzCisgICAg
bG9hZGkgW3QzLCB0MCwgNF0sIHQxCisgICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91
Z2gKKyAgICBkaXNwYXRjaEJyYW5jaFdpdGhPZmZzZXQodDEpCisKKy5vcFN3aXRjaEltbU5vdElu
dDoKKyAgICBiaWIgdDEsIExvd2VzdFRhZywgLm9wU3dpdGNoSW1tU2xvdyAgIyBHbyB0byBzbG93
IHBhdGggaWYgaXQncyBhIGRvdWJsZS4KKy5vcFN3aXRjaEltbUZhbGxUaHJvdWdoOgorICAgIGRp
c3BhdGNoQnJhbmNoKDhbUENdKQorCisub3BTd2l0Y2hJbW1TbG93OgorICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX3N3aXRjaF9pbW0pCisgICAgZGlzcGF0Y2goMCkKKworCitfbGxp
bnRfb3Bfc3dpdGNoX2NoYXI6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDEyW1BD
XSwgdDIKKyAgICBsb2FkaSA0W1BDXSwgdDMKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlKHQy
LCB0MSwgdDApCisgICAgbG9hZHAgQ29kZUJsb2NrW2Nmcl0sIHQyCisgICAgbG9hZHAgQ29kZUJs
b2NrOjptX3JhcmVEYXRhW3QyXSwgdDIKKyAgICBtdWxpIHNpemVvZiBTaW1wbGVKdW1wVGFibGUs
IHQzCisgICAgbG9hZHAgQ29kZUJsb2NrOjpSYXJlRGF0YTo6bV9jaGFyYWN0ZXJTd2l0Y2hKdW1w
VGFibGVzICsgVmVjdG9yQnVmZmVyT2Zmc2V0W3QyXSwgdDIKKyAgICBhZGRwIHQzLCB0MgorICAg
IGJpbmVxIHQxLCBDZWxsVGFnLCAub3BTd2l0Y2hDaGFyRmFsbFRocm91Z2gKKyAgICBsb2FkcCBK
U0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDEKKyAgICBiYm5lcSBTdHJ1Y3R1cmU6Om1fdHlwZUlu
Zm8gKyBUeXBlSW5mbzo6bV90eXBlW3QxXSwgU3RyaW5nVHlwZSwgLm9wU3dpdGNoQ2hhckZhbGxU
aHJvdWdoCisgICAgbG9hZHAgSlNTdHJpbmc6Om1fdmFsdWVbdDBdLCB0MAorICAgIGJpbmVxIFN0
cmluZ0ltcGw6Om1fbGVuZ3RoW3QwXSwgMSwgLm9wU3dpdGNoQ2hhckZhbGxUaHJvdWdoCisgICAg
bG9hZHAgU3RyaW5nSW1wbDo6bV9kYXRhOFt0MF0sIHQxCisgICAgYnRpbnogU3RyaW5nSW1wbDo6
bV9oYXNoQW5kRmxhZ3NbdDBdLCBIYXNoRmxhZ3M4Qml0QnVmZmVyLCAub3BTd2l0Y2hDaGFyOEJp
dAorICAgIGxvYWRoIFt0MV0sIHQwCisgICAgam1wIC5vcFN3aXRjaENoYXJSZWFkeQorLm9wU3dp
dGNoQ2hhcjhCaXQ6CisgICAgbG9hZGIgW3QxXSwgdDAKKy5vcFN3aXRjaENoYXJSZWFkeToKKyAg
ICBzdWJpIFNpbXBsZUp1bXBUYWJsZTo6bWluW3QyXSwgdDAKKyAgICBiaWFlcSB0MCwgU2ltcGxl
SnVtcFRhYmxlOjpicmFuY2hPZmZzZXRzICsgVmVjdG9yU2l6ZU9mZnNldFt0Ml0sIC5vcFN3aXRj
aENoYXJGYWxsVGhyb3VnaAorICAgIGxvYWRwIFNpbXBsZUp1bXBUYWJsZTo6YnJhbmNoT2Zmc2V0
cyArIFZlY3RvckJ1ZmZlck9mZnNldFt0Ml0sIHQyCisgICAgbG9hZGkgW3QyLCB0MCwgNF0sIHQx
CisgICAgYnRpeiB0MSwgLm9wU3dpdGNoSW1tRmFsbFRocm91Z2gKKyAgICBkaXNwYXRjaEJyYW5j
aFdpdGhPZmZzZXQodDEpCisKKy5vcFN3aXRjaENoYXJGYWxsVGhyb3VnaDoKKyAgICBkaXNwYXRj
aEJyYW5jaCg4W1BDXSkKKworCitfbGxpbnRfb3Bfc3dpdGNoX3N0cmluZzoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfc3dpdGNoX3N0cmlu
ZykKKyAgICBkaXNwYXRjaCgwKQorCisKK19sbGludF9vcF9uZXdfZnVuYzoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgYnRpeiAxMltQQ10sIC5vcE5ld0Z1bmNVbmNoZWNrZWQKKyAgICBsb2Fk
aSA0W1BDXSwgdDEKKyAgICBiaW5lcSBUYWdPZmZzZXRbY2ZyLCB0MSwgOF0sIEVtcHR5VmFsdWVU
YWcsIC5vcE5ld0Z1bmNEb25lCisub3BOZXdGdW5jVW5jaGVja2VkOgorICAgIGNhbGxTbG93UGF0
aChfbGxpbnRfc2xvd19wYXRoX25ld19mdW5jKQorLm9wTmV3RnVuY0RvbmU6CisgICAgZGlzcGF0
Y2goNCkKKworCitfbGxpbnRfb3BfbmV3X2Z1bmNfZXhwOgorICAgIHRyYWNlRXhlY3V0aW9uKCkK
KyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9uZXdfZnVuY19leHApCisgICAgZGlz
cGF0Y2goMykKKworCittYWNybyBkb0NhbGwoc2xvd19wYXRoKQorICAgIGxvYWRpIDRbUENdLCB0
MAorICAgIGxvYWRpIDE2W1BDXSwgdDEKKyAgICBsb2FkcCBMTEludENhbGxMaW5rSW5mbzo6Y2Fs
bGVlW3QxXSwgdDIKKyAgICBsb2FkQ29uc3RhbnRPclZhcmlhYmxlUGF5bG9hZCh0MCwgQ2VsbFRh
ZywgdDMsIC5vcENhbGxTbG93KQorICAgIGJpbmVxIHQzLCB0MiwgLm9wQ2FsbFNsb3cKKyAgICBs
b2FkaSAxMltQQ10sIHQzCisgICAgYWRkcCAyNCwgUEMKKyAgICBsc2hpZnRpIDMsIHQzCisgICAg
YWRkcCBjZnIsIHQzICAjIHQzIGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2YgY2ZyCisgICAgbG9h
ZHAgSlNGdW5jdGlvbjo6bV9zY29wZUNoYWluW3QyXSwgdDAKKyAgICBzdG9yZWkgdDIsIENhbGxl
ZSArIFBheWxvYWRPZmZzZXRbdDNdCisgICAgc3RvcmVpIHQwLCBTY29wZUNoYWluICsgUGF5bG9h
ZE9mZnNldFt0M10KKyAgICBsb2FkaSA4IC0gMjRbUENdLCB0MgorICAgIHN0b3JlaSBQQywgQXJn
dW1lbnRDb3VudCArIFRhZ09mZnNldFtjZnJdCisgICAgc3RvcmVwIGNmciwgQ2FsbGVyRnJhbWVb
dDNdCisgICAgc3RvcmVpIHQyLCBBcmd1bWVudENvdW50ICsgUGF5bG9hZE9mZnNldFt0M10KKyAg
ICBzdG9yZWkgQ2VsbFRhZywgQ2FsbGVlICsgVGFnT2Zmc2V0W3QzXQorICAgIHN0b3JlaSBDZWxs
VGFnLCBTY29wZUNoYWluICsgVGFnT2Zmc2V0W3QzXQorICAgIG1vdmUgdDMsIGNmcgorICAgIGNh
bGwgTExJbnRDYWxsTGlua0luZm86Om1hY2hpbmVDb2RlVGFyZ2V0W3QxXQorICAgIGRpc3BhdGNo
QWZ0ZXJDYWxsKCkKKworLm9wQ2FsbFNsb3c6CisgICAgc2xvd1BhdGhGb3JDYWxsKDYsIHNsb3df
cGF0aCkKK2VuZAorCitfbGxpbnRfb3BfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAg
ZG9DYWxsKF9sbGludF9zbG93X3BhdGhfY2FsbCkKKworCitfbGxpbnRfb3BfY29uc3RydWN0Ogor
ICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBkb0NhbGwoX2xsaW50X3Nsb3dfcGF0aF9jb25zdHJ1
Y3QpCisKKworX2xsaW50X29wX2NhbGxfdmFyYXJnczoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisg
ICAgc2xvd1BhdGhGb3JDYWxsKDYsIF9sbGludF9zbG93X3BhdGhfY2FsbF92YXJhcmdzKQorCisK
K19sbGludF9vcF9jYWxsX2V2YWw6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIAorICAgICMg
RXZhbCBpcyBleGVjdXRlZCBpbiBvbmUgb2YgdHdvIG1vZGVzOgorICAgICMKKyAgICAjIDEpIFdl
IGZpbmQgdGhhdCB3ZSdyZSByZWFsbHkgaW52b2tpbmcgZXZhbCgpIGluIHdoaWNoIGNhc2UgdGhl
CisgICAgIyAgICBleGVjdXRpb24gaXMgcGVyZm9tZWQgZW50aXJlbHkgaW5zaWRlIHRoZSBzbG93
X3BhdGgsIGFuZCBpdAorICAgICMgICAgcmV0dXJucyB0aGUgUEMgb2YgYSBmdW5jdGlvbiB0aGF0
IGp1c3QgcmV0dXJucyB0aGUgcmV0dXJuIHZhbHVlCisgICAgIyAgICB0aGF0IHRoZSBldmFsIHJl
dHVybmVkLgorICAgICMKKyAgICAjIDIpIFdlIGZpbmQgdGhhdCB3ZSdyZSBpbnZva2luZyBzb21l
dGhpbmcgY2FsbGVkIGV2YWwoKSB0aGF0IGlzIG5vdAorICAgICMgICAgdGhlIHJlYWwgZXZhbC4g
VGhlbiB0aGUgc2xvd19wYXRoIHJldHVybnMgdGhlIFBDIG9mIHRoZSB0aGluZyB0bworICAgICMg
ICAgY2FsbCwgYW5kIHdlIGNhbGwgaXQuCisgICAgIworICAgICMgVGhpcyBhbGxvd3MgdXMgdG8g
aGFuZGxlIHR3byBjYXNlcywgd2hpY2ggd291bGQgcmVxdWlyZSBhIHRvdGFsIG9mCisgICAgIyB1
cCB0byBmb3VyIHBpZWNlcyBvZiBzdGF0ZSB0aGF0IGNhbm5vdCBiZSBlYXNpbHkgcGFja2VkIGlu
dG8gdHdvCisgICAgIyByZWdpc3RlcnMgKEMgZnVuY3Rpb25zIGNhbiByZXR1cm4gdXAgdG8gdHdv
IHJlZ2lzdGVycywgZWFzaWx5KToKKyAgICAjCisgICAgIyAtIFRoZSBjYWxsIGZyYW1lIHJlZ2lz
dGVyLiBUaGlzIG1heSBvciBtYXkgbm90IGhhdmUgYmVlbiBtb2RpZmllZAorICAgICMgICBieSB0
aGUgc2xvd19wYXRoLCBidXQgdGhlIGNvbnZlbnRpb24gaXMgdGhhdCBpdCByZXR1cm5zIGl0LiBJ
dCdzIG5vdAorICAgICMgICB0b3RhbGx5IGNsZWFyIGlmIHRoYXQncyBuZWNlc3NhcnksIHNpbmNl
IHRoZSBjZnIgaXMgY2FsbGVlIHNhdmUuCisgICAgIyAgIEJ1dCB0aGF0J3Mgb3VyIHN0eWxlIGlu
IHRoaXMgaGVyZSBpbnRlcnByZXRlciBzbyB3ZSBzdGljayB3aXRoIGl0LgorICAgICMKKyAgICAj
IC0gQSBiaXQgdG8gc2F5IGlmIHRoZSBzbG93X3BhdGggc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIHRo
ZSBldmFsIGFuZCBoYXMKKyAgICAjICAgdGhlIHJldHVybiB2YWx1ZSwgb3IgZGlkIG5vdCBleGVj
dXRlIHRoZSBldmFsIGJ1dCBoYXMgYSBQQyBmb3IgdXMKKyAgICAjICAgdG8gY2FsbC4KKyAgICAj
CisgICAgIyAtIEVpdGhlcjoKKyAgICAjICAgLSBUaGUgSlMgcmV0dXJuIHZhbHVlICh0d28gcmVn
aXN0ZXJzKSwgb3IKKyAgICAjCisgICAgIyAgIC0gVGhlIFBDIHRvIGNhbGwuCisgICAgIworICAg
ICMgSXQgdHVybnMgb3V0IHRvIGJlIGVhc2llciB0byBqdXN0IGFsd2F5cyBoYXZlIHRoaXMgcmV0
dXJuIHRoZSBjZnIKKyAgICAjIGFuZCBhIFBDIHRvIGNhbGwsIGFuZCB0aGF0IFBDIG1heSBiZSBh
IGR1bW15IHRodW5rIHRoYXQganVzdAorICAgICMgcmV0dXJucyB0aGUgSlMgdmFsdWUgdGhhdCB0
aGUgZXZhbCByZXR1cm5lZC4KKyAgICAKKyAgICBzbG93UGF0aEZvckNhbGwoNCwgX2xsaW50X3Ns
b3dfcGF0aF9jYWxsX2V2YWwpCisKKworX2xsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50OgorICAg
IGRpc3BhdGNoQWZ0ZXJDYWxsKCkKKworCitfbGxpbnRfb3BfdGVhcl9vZmZfYWN0aXZhdGlvbjoK
KyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgbG9hZGkgOFtQ
Q10sIHQxCisgICAgYmluZXEgVGFnT2Zmc2V0W2NmciwgdDAsIDhdLCBFbXB0eVZhbHVlVGFnLCAu
b3BUZWFyT2ZmQWN0aXZhdGlvbkNyZWF0ZWQKKyAgICBiaWVxIFRhZ09mZnNldFtjZnIsIHQxLCA4
XSwgRW1wdHlWYWx1ZVRhZywgLm9wVGVhck9mZkFjdGl2YXRpb25Ob3RDcmVhdGVkCisub3BUZWFy
T2ZmQWN0aXZhdGlvbkNyZWF0ZWQ6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhf
dGVhcl9vZmZfYWN0aXZhdGlvbikKKy5vcFRlYXJPZmZBY3RpdmF0aW9uTm90Q3JlYXRlZDoKKyAg
ICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF90ZWFyX29mZl9hcmd1bWVudHM6CisgICAgdHJh
Y2VFeGVjdXRpb24oKQorICAgIGxvYWRpIDRbUENdLCB0MAorICAgIHN1YmkgMSwgdDAgICAjIEdl
dCB0aGUgdW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyCisgICAgYmllcSBUYWdPZmZzZXRbY2Zy
LCB0MCwgOF0sIEVtcHR5VmFsdWVUYWcsIC5vcFRlYXJPZmZBcmd1bWVudHNOb3RDcmVhdGVkCisg
ICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfdGVhcl9vZmZfYXJndW1lbnRzKQorLm9w
VGVhck9mZkFyZ3VtZW50c05vdENyZWF0ZWQ6CisgICAgZGlzcGF0Y2goMikKKworCittYWNybyBk
b1JldHVybigpCisgICAgbG9hZHAgUmV0dXJuUENbY2ZyXSwgdDIKKyAgICBsb2FkcCBDYWxsZXJG
cmFtZVtjZnJdLCBjZnIKKyAgICByZXN0b3JlUmV0dXJuQWRkcmVzc0JlZm9yZVJldHVybih0MikK
KyAgICByZXQKK2VuZAorCitfbGxpbnRfb3BfcmV0OgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAg
ICBjaGVja1N3aXRjaFRvSklURm9yRXBpbG9ndWUoKQorICAgIGxvYWRpIDRbUENdLCB0MgorICAg
IGxvYWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigpCisKKwor
X2xsaW50X29wX2NhbGxfcHV0X3Jlc3VsdDoKKyAgICBsb2FkaSA0W1BDXSwgdDIKKyAgICBsb2Fk
aSA4W1BDXSwgdDMKKyAgICBzdG9yZWkgdDEsIFRhZ09mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0
b3JlaSB0MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHZhbHVlUHJvZmlsZSh0MSwg
dDAsIHQzKQorICAgIHRyYWNlRXhlY3V0aW9uKCkgIyBOZWVkcyB0byBiZSBoZXJlIGJlY2F1c2Ug
aXQgd291bGQgY2xvYmJlciB0MSwgdDAKKyAgICBkaXNwYXRjaCgzKQorCisKK19sbGludF9vcF9y
ZXRfb2JqZWN0X29yX3RoaXM6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNoZWNrU3dpdGNo
VG9KSVRGb3JFcGlsb2d1ZSgpCisgICAgbG9hZGkgNFtQQ10sIHQyCisgICAgbG9hZENvbnN0YW50
T3JWYXJpYWJsZSh0MiwgdDEsIHQwKQorICAgIGJpbmVxIHQxLCBDZWxsVGFnLCAub3BSZXRPYmpl
Y3RPclRoaXNOb3RPYmplY3QKKyAgICBsb2FkcCBKU0NlbGw6Om1fc3RydWN0dXJlW3QwXSwgdDIK
KyAgICBiYmIgU3RydWN0dXJlOjptX3R5cGVJbmZvICsgVHlwZUluZm86Om1fdHlwZVt0Ml0sIE9i
amVjdFR5cGUsIC5vcFJldE9iamVjdE9yVGhpc05vdE9iamVjdAorICAgIGRvUmV0dXJuKCkKKwor
Lm9wUmV0T2JqZWN0T3JUaGlzTm90T2JqZWN0OgorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxv
YWRDb25zdGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBkb1JldHVybigpCisKKworX2xs
aW50X29wX21ldGhvZF9jaGVjazoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgIyBXZSBpZ25v
cmUgbWV0aG9kIGNoZWNrcyBhbmQgdXNlIG5vcm1hbCBnZXRfYnlfaWQgb3B0aW1pemF0aW9ucy4K
KyAgICBkaXNwYXRjaCgxKQorCisKK19sbGludF9vcF9zdHJjYXQ6CisgICAgdHJhY2VFeGVjdXRp
b24oKQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3N0cmNhdCkKKyAgICBkaXNw
YXRjaCg0KQorCisKK19sbGludF9vcF90b19wcmltaXRpdmU6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGxvYWRpIDhbUENdLCB0MgorICAgIGxvYWRpIDRbUENdLCB0MworICAgIGxvYWRDb25z
dGFudE9yVmFyaWFibGUodDIsIHQxLCB0MCkKKyAgICBiaW5lcSB0MSwgQ2VsbFRhZywgLm9wVG9Q
cmltaXRpdmVJc0ltbQorICAgIGxvYWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDBdLCB0MgorICAg
IGJibmVxIFN0cnVjdHVyZTo6bV90eXBlSW5mbyArIFR5cGVJbmZvOjptX3R5cGVbdDJdLCBTdHJp
bmdUeXBlLCAub3BUb1ByaW1pdGl2ZVNsb3dDYXNlCisub3BUb1ByaW1pdGl2ZUlzSW1tOgorICAg
IHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2NmciwgdDMsIDhdCisgICAgc3RvcmVpIHQwLCBQYXlsb2Fk
T2Zmc2V0W2NmciwgdDMsIDhdCisgICAgZGlzcGF0Y2goMykKKworLm9wVG9QcmltaXRpdmVTbG93
Q2FzZToKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF90b19wcmltaXRpdmUpCisg
ICAgZGlzcGF0Y2goMykKKworCitfbGxpbnRfb3BfZ2V0X3BuYW1lczoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfZ2V0X3BuYW1lcykKKyAg
ICBkaXNwYXRjaCgwKSAjIFRoZSBzbG93X3BhdGggZWl0aGVyIGFkdmFuY2VzIHRoZSBQQyBvciBq
dW1wcyB1cyB0byBzb21ld2hlcmUgZWxzZS4KKworCitfbGxpbnRfb3BfbmV4dF9wbmFtZToKKyAg
ICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgMTJbUENdLCB0MQorICAgIGxvYWRpIDE2W1BD
XSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDEsIDhdLCB0MAorICAgIGJpZXEg
dDAsIFBheWxvYWRPZmZzZXRbY2ZyLCB0MiwgOF0sIC5vcE5leHRQbmFtZUVuZAorICAgIGxvYWRp
IDIwW1BDXSwgdDIKKyAgICBsb2FkaSBQYXlsb2FkT2Zmc2V0W2NmciwgdDIsIDhdLCB0MgorICAg
IGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fanNTdHJpbmdzW3QyXSwgdDMKKyAgICBs
b2FkaSBbdDMsIHQwLCA4XSwgdDMKKyAgICBhZGRpIDEsIHQwCisgICAgc3RvcmVpIHQwLCBQYXls
b2FkT2Zmc2V0W2NmciwgdDEsIDhdCisgICAgbG9hZGkgNFtQQ10sIHQxCisgICAgc3RvcmVpIENl
bGxUYWcsIFRhZ09mZnNldFtjZnIsIHQxLCA4XQorICAgIHN0b3JlaSB0MywgUGF5bG9hZE9mZnNl
dFtjZnIsIHQxLCA4XQorICAgIGxvYWRpIDhbUENdLCB0MworICAgIGxvYWRpIFBheWxvYWRPZmZz
ZXRbY2ZyLCB0MywgOF0sIHQzCisgICAgbG9hZHAgSlNDZWxsOjptX3N0cnVjdHVyZVt0M10sIHQx
CisgICAgYnBuZXEgdDEsIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6Om1fY2FjaGVkU3RydWN0dXJl
W3QyXSwgLm9wTmV4dFBuYW1lU2xvdworICAgIGxvYWRwIEpTUHJvcGVydHlOYW1lSXRlcmF0b3I6
Om1fY2FjaGVkUHJvdG90eXBlQ2hhaW5bdDJdLCB0MAorICAgIGxvYWRwIFN0cnVjdHVyZUNoYWlu
OjptX3ZlY3Rvclt0MF0sIHQwCisgICAgYnRweiBbdDBdLCAub3BOZXh0UG5hbWVUYXJnZXQKKy5v
cE5leHRQbmFtZUNoZWNrUHJvdG90eXBlTG9vcDoKKyAgICBiaWVxIFN0cnVjdHVyZTo6bV9wcm90
b3R5cGUgKyBUYWdPZmZzZXRbdDFdLCBOdWxsVGFnLCAub3BOZXh0UG5hbWVTbG93CisgICAgbG9h
ZHAgU3RydWN0dXJlOjptX3Byb3RvdHlwZSArIFBheWxvYWRPZmZzZXRbdDFdLCB0MgorICAgIGxv
YWRwIEpTQ2VsbDo6bV9zdHJ1Y3R1cmVbdDJdLCB0MQorICAgIGJwbmVxIHQxLCBbdDBdLCAub3BO
ZXh0UG5hbWVTbG93CisgICAgYWRkcCA0LCB0MAorICAgIGJ0cG56IFt0MF0sIC5vcE5leHRQbmFt
ZUNoZWNrUHJvdG90eXBlTG9vcAorLm9wTmV4dFBuYW1lVGFyZ2V0OgorICAgIGRpc3BhdGNoQnJh
bmNoKDI0W1BDXSkKKworLm9wTmV4dFBuYW1lRW5kOgorICAgIGRpc3BhdGNoKDcpCisKKy5vcE5l
eHRQbmFtZVNsb3c6CisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfbmV4dF9wbmFt
ZSkgIyBUaGlzIGVpdGhlciBrZWVwcyB0aGUgUEMgd2hlcmUgaXQgd2FzIChjYXVzaW5nIHVzIHRv
IGxvb3ApIG9yIHNldHMgaXQgdG8gdGFyZ2V0LgorICAgIGRpc3BhdGNoKDApCisKKworX2xsaW50
X29wX3B1c2hfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX3B1c2hfc2NvcGUpCisgICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRf
b3BfcG9wX3Njb3BlOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9wb3Bfc2NvcGUpCisgICAgZGlzcGF0Y2goMSkKKworCitfbGxpbnRfb3Bf
cHVzaF9uZXdfc2NvcGU6CisgICAgdHJhY2VFeGVjdXRpb24oKQorICAgIGNhbGxTbG93UGF0aChf
bGxpbnRfc2xvd19wYXRoX3B1c2hfbmV3X3Njb3BlKQorICAgIGRpc3BhdGNoKDQpCisKKworX2xs
aW50X29wX2NhdGNoOgorICAgICMgVGhpcyBpcyB3aGVyZSB3ZSBlbmQgdXAgZnJvbSB0aGUgSklU
J3MgdGhyb3cgdHJhbXBvbGluZSAoYmVjYXVzZSB0aGUKKyAgICAjIG1hY2hpbmUgY29kZSByZXR1
cm4gYWRkcmVzcyB3aWxsIGJlIHNldCB0byBfbGxpbnRfb3BfY2F0Y2gpLCBhbmQgZnJvbQorICAg
ICMgdGhlIGludGVycHJldGVyJ3MgdGhyb3cgdHJhbXBvbGluZSAoc2VlIF9sbGludF90aHJvd190
cmFtcG9saW5lKS4KKyAgICAjIFRoZSBKSVQgdGhyb3dpbmcgcHJvdG9jb2wgY2FsbHMgZm9yIHRo
ZSBjZnIgdG8gYmUgaW4gdDAuIFRoZSB0aHJvd2luZworICAgICMgY29kZSBtdXN0IGhhdmUga25v
d24gdGhhdCB3ZSB3ZXJlIHRocm93aW5nIHRvIHRoZSBpbnRlcnByZXRlciwgYW5kIGhhdmUKKyAg
ICAjIHNldCBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvdy4KKyAgICBt
b3ZlIHQwLCBjZnIKKyAgICBsb2FkcCBKSVRTdGFja0ZyYW1lOjpnbG9iYWxEYXRhW3NwXSwgdDMK
KyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OnRhcmdldEludGVycHJldGVyUENGb3JUaHJvd1t0M10s
IFBDCisgICAgbG9hZGkgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24gKyBQYXlsb2FkT2Zmc2V0W3Qz
XSwgdDAKKyAgICBsb2FkaSBKU0dsb2JhbERhdGE6OmV4Y2VwdGlvbiArIFRhZ09mZnNldFt0M10s
IHQxCisgICAgc3RvcmVpIDAsIEpTR2xvYmFsRGF0YTo6ZXhjZXB0aW9uICsgUGF5bG9hZE9mZnNl
dFt0M10KKyAgICBzdG9yZWkgRW1wdHlWYWx1ZVRhZywgSlNHbG9iYWxEYXRhOjpleGNlcHRpb24g
KyBUYWdPZmZzZXRbdDNdICAgICAgIAorICAgIGxvYWRpIDRbUENdLCB0MgorICAgIHN0b3JlaSB0
MCwgUGF5bG9hZE9mZnNldFtjZnIsIHQyLCA4XQorICAgIHN0b3JlaSB0MSwgVGFnT2Zmc2V0W2Nm
ciwgdDIsIDhdCisgICAgdHJhY2VFeGVjdXRpb24oKSAgIyBUaGlzIG5lZWRzIHRvIGJlIGhlcmUg
YmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIGNsb2JiZXIgdDAsIHQxLCB0MiwgdDMgYWJvdmUuCisg
ICAgZGlzcGF0Y2goMikKKworCitfbGxpbnRfb3BfdGhyb3c6CisgICAgdHJhY2VFeGVjdXRpb24o
KQorICAgIGNhbGxTbG93UGF0aChfbGxpbnRfc2xvd19wYXRoX3Rocm93KQorICAgIGRpc3BhdGNo
KDIpCisKKworX2xsaW50X29wX3Rocm93X3JlZmVyZW5jZV9lcnJvcjoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2FsbFNsb3dQYXRoKF9sbGludF9zbG93X3BhdGhfdGhyb3dfcmVmZXJlbmNl
X2Vycm9yKQorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2pzcjoKKyAgICB0cmFjZUV4
ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10sIHQwCisgICAgYWRkaSAzICogNCwgUEMsIHQxCisg
ICAgc3RvcmVpIHQxLCBbY2ZyLCB0MCwgOF0KKyAgICBkaXNwYXRjaEJyYW5jaCg4W1BDXSkKKwor
CitfbGxpbnRfb3Bfc3JldDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZGkgNFtQQ10s
IHQwCisgICAgbG9hZHAgW2NmciwgdDAsIDhdLCBQQworICAgIGRpc3BhdGNoKDApCisKKworX2xs
aW50X29wX2RlYnVnOgorICAgIHRyYWNlRXhlY3V0aW9uKCkKKyAgICBjYWxsU2xvd1BhdGgoX2xs
aW50X3Nsb3dfcGF0aF9kZWJ1ZykKKyAgICBkaXNwYXRjaCg0KQorCisKK19sbGludF9vcF9wcm9m
aWxlX3dpbGxfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigpCisgICAgbG9hZHAgSklUU3RhY2tG
cmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwgdDAKKyAgICBidHB6IFt0MF0sIC5v
cFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsU2xvd1BhdGgoX2xsaW50X3Nsb3dfcGF0aF9w
cm9maWxlX3dpbGxfY2FsbCkKKy5vcFByb2ZpbGVXaWxsQ2FsbERvbmU6CisgICAgZGlzcGF0Y2go
MikKKworCitfbGxpbnRfb3BfcHJvZmlsZV9kaWRfY2FsbDoKKyAgICB0cmFjZUV4ZWN1dGlvbigp
CisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6ZW5hYmxlZFByb2ZpbGVyUmVmZXJlbmNlW3NwXSwg
dDAKKyAgICBidHB6IFt0MF0sIC5vcFByb2ZpbGVXaWxsQ2FsbERvbmUKKyAgICBjYWxsU2xvd1Bh
dGgoX2xsaW50X3Nsb3dfcGF0aF9wcm9maWxlX2RpZF9jYWxsKQorLm9wUHJvZmlsZURpZENhbGxE
b25lOgorICAgIGRpc3BhdGNoKDIpCisKKworX2xsaW50X29wX2VuZDoKKyAgICB0cmFjZUV4ZWN1
dGlvbigpCisgICAgY2hlY2tTd2l0Y2hUb0pJVEZvckVwaWxvZ3VlKCkKKyAgICBsb2FkaSA0W1BD
XSwgdDAKKyAgICBsb2FkaSBUYWdPZmZzZXRbY2ZyLCB0MCwgOF0sIHQxCisgICAgbG9hZGkgUGF5
bG9hZE9mZnNldFtjZnIsIHQwLCA4XSwgdDAKKyAgICBkb1JldHVybigpCisKKworX2xsaW50X3Ro
cm93X2Zyb21fc2xvd19wYXRoX3RyYW1wb2xpbmU6CisgICAgIyBXaGVuIHRocm93aW5nIGZyb20g
dGhlIGludGVycHJldGVyIChpLmUuIHRocm93aW5nIGZyb20gTExJbnRTbG93UGF0aHMpLCBzbwor
ICAgICMgdGhlIHRocm93IHRhcmdldCBpcyBub3QgbmVjZXNzYXJpbHkgaW50ZXJwcmV0ZWQgY29k
ZSwgd2UgY29tZSB0byBoZXJlLgorICAgICMgVGhpcyBlc3NlbnRpYWxseSBlbXVsYXRlcyB0aGUg
SklUJ3MgdGhyb3dpbmcgcHJvdG9jb2wuCisgICAgbG9hZHAgSklUU3RhY2tGcmFtZTo6Z2xvYmFs
RGF0YVtzcF0sIHQxCisgICAgbG9hZHAgSlNHbG9iYWxEYXRhOjpjYWxsRnJhbWVGb3JUaHJvd1t0
MV0sIHQwCisgICAgam1wIEpTR2xvYmFsRGF0YTo6dGFyZ2V0TWFjaGluZVBDRm9yVGhyb3dbdDFd
CisKKworX2xsaW50X3Rocm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmU6CisgICAgcHJlc2VydmVS
ZXR1cm5BZGRyZXNzQWZ0ZXJDYWxsKHQyKQorICAgIGxvYWRwIEpJVFN0YWNrRnJhbWU6Omdsb2Jh
bERhdGFbc3BdLCB0MQorICAgIGxvYWRwIEpTR2xvYmFsRGF0YTo6Y2FsbEZyYW1lRm9yVGhyb3db
dDFdLCB0MAorICAgIGptcCBKU0dsb2JhbERhdGE6OnRhcmdldE1hY2hpbmVQQ0ZvclRocm93W3Qx
XQorCisKKyMgTGFzdGx5LCBtYWtlIHN1cmUgdGhhdCB3ZSBjYW4gbGluayBldmVuIHRob3VnaCB3
ZSBkb24ndCBzdXBwb3J0IGFsbCBvcGNvZGVzLgorIyBUaGVzZSBvcGNvZGVzIHNob3VsZCBuZXZl
ciBhcmlzZSB3aGVuIHVzaW5nIExMSW50IG9yIGVpdGhlciBKSVQuIFdlIGFzc2VydAorIyBhcyBt
dWNoLgorCittYWNybyBub3RTdXBwb3J0ZWQoKQorICAgIGlmIEFTU0VSVF9FTkFCTEVECisgICAg
ICAgIGNyYXNoKCkKKyAgICBlbHNlCisgICAgICAgICMgV2Ugc2hvdWxkIHVzZSB3aGF0ZXZlciB0
aGUgc21hbGxlc3QgcG9zc2libGUgaW5zdHJ1Y3Rpb24gaXMsIGp1c3QgdG8KKyAgICAgICAgIyBl
bnN1cmUgdGhhdCB0aGVyZSBpcyBhIGdhcCBiZXR3ZWVuIGluc3RydWN0aW9uIGxhYmVscy4gSWYg
bXVsdGlwbGUKKyAgICAgICAgIyBzbWFsbGVzdCBpbnN0cnVjdGlvbnMgZXhpc3QsIHdlIHNob3Vs
ZCBwaWNrIHRoZSBvbmUgdGhhdCBpcyBtb3N0CisgICAgICAgICMgbGlrZWx5IHJlc3VsdCBpbiBl
eGVjdXRpb24gYmVpbmcgaGFsdGVkLiBDdXJyZW50bHkgdGhhdCBpcyB0aGUgYnJlYWsKKyAgICAg
ICAgIyBpbnN0cnVjdGlvbiBvbiBhbGwgYXJjaGl0ZWN0dXJlcyB3ZSdyZSBpbnRlcmVzdGVkIGlu
LiAoQnJlYWsgaXMgaW50MworICAgICAgICAjIG9uIEludGVsLCB3aGljaCBpcyAxIGJ5dGUsIGFu
ZCBia3B0IG9uIEFSTXY3LCB3aGljaCBpcyAyIGJ5dGVzLikKKyAgICAgICAgYnJlYWsKKyAgICBl
bmQKK2VuZAorCitfbGxpbnRfb3BfZ2V0X2FycmF5X2xlbmd0aDoKKyAgICBub3RTdXBwb3J0ZWQo
KQorCitfbGxpbnRfb3BfZ2V0X2J5X2lkX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19s
bGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19s
bGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19s
bGludF9vcF9nZXRfYnlfaWRfY3VzdG9tX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xs
aW50X29wX2dldF9ieV9pZF9nZW5lcmljOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9v
cF9nZXRfYnlfaWRfZ2V0dGVyX2NoYWluOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9v
cF9nZXRfYnlfaWRfZ2V0dGVyX3Byb3RvOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9v
cF9nZXRfYnlfaWRfZ2V0dGVyX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29w
X2dldF9ieV9pZF9wcm90bzoKKyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfZ2V0X2J5
X2lkX3NlbGY6CisgICAgbm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX2dldF9zdHJpbmdfbGVu
Z3RoOgorICAgIG5vdFN1cHBvcnRlZCgpCisKK19sbGludF9vcF9wdXRfYnlfaWRfZ2VuZXJpYzoK
KyAgICBub3RTdXBwb3J0ZWQoKQorCitfbGxpbnRfb3BfcHV0X2J5X2lkX3JlcGxhY2U6CisgICAg
bm90U3VwcG9ydGVkKCkKKworX2xsaW50X29wX3B1dF9ieV9pZF90cmFuc2l0aW9uOgorICAgIG5v
dFN1cHBvcnRlZCgpCisKKworIyBJbmRpY2F0ZSB0aGUgZW5kIG9mIExMSW50LgorX2xsaW50X2Vu
ZDoKKyAgICBjcmFzaCgpCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dM
ZXZlbEludGVycHJldGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkxvd0xldmVsSW50ZXJwcmV0ZXIu
aCIKKworI2lmIEVOQUJMRShMTElOVCkKKworI2luY2x1ZGUgIkxMSW50T2ZmbGluZUFzbUNvbmZp
Zy5oIgorI2luY2x1ZGUgPHd0Zi9JbmxpbmVBU00uaD4KKworLy8gVGhpcyBpcyBhIGZpbGUgZ2Vu
ZXJhdGVkIGJ5IG9mZmxpbmVhc20sIHdoaWNoIGNvbnRhaW5zIGFsbCBvZiB0aGUgYXNzZW1ibHkg
Y29kZQorLy8gZm9yIHRoZSBpbnRlcnByZXRlciwgYXMgY29tcGlsZWQgZnJvbSBMb3dMZXZlbElu
dGVycHJldGVyLmFzbS4KKyNpbmNsdWRlICJMTEludEFzc2VtYmx5LmgiCisKKyNlbmRpZiAvLyBF
TkFCTEUoTExJTlQpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJ
bnRlcnByZXRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
b3dMZXZlbEludGVycHJldGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUz
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgTG93TGV2ZWxJbnRlcnByZXRlcl9oCisjZGVmaW5lIExvd0xldmVsSW50ZXJwcmV0ZXJfaAor
CisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisKKyNpZiBFTkFCTEUoTExJTlQpCisKKyNpbmNs
dWRlICJPcGNvZGUuaCIKKworI2RlZmluZSBMTElOVF9JTlNUUlVDVElPTl9ERUNMKG9wY29kZSwg
bGVuZ3RoKSBleHRlcm4gIkMiIHZvaWQgbGxpbnRfIyNvcGNvZGUoKTsKKyAgICBGT1JfRUFDSF9P
UENPREVfSUQoTExJTlRfSU5TVFJVQ1RJT05fREVDTCk7CisjdW5kZWYgTExJTlRfSU5TVFJVQ1RJ
T05fREVDTAorCitleHRlcm4gIkMiIHZvaWQgbGxpbnRfYmVnaW4oKTsKK2V4dGVybiAiQyIgdm9p
ZCBsbGludF9lbmQoKTsKK2V4dGVybiAiQyIgdm9pZCBsbGludF9wcm9ncmFtX3Byb2xvZ3VlKCk7
CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfZXZhbF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2Z1bmN0aW9uX2Zvcl9jYWxsX3Byb2xvZ3VlKCk7CitleHRlcm4gIkMiIHZvaWQgbGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9wcm9sb2d1ZSgpOworZXh0ZXJuICJDIiB2b2lkIGxs
aW50X2Z1bmN0aW9uX2Zvcl9jYWxsX2FyaXR5X2NoZWNrKCk7CitleHRlcm4gIkMiIHZvaWQgbGxp
bnRfZnVuY3Rpb25fZm9yX2NvbnN0cnVjdF9hcml0eV9jaGVjaygpOworZXh0ZXJuICJDIiB2b2lk
IGxsaW50X2dlbmVyaWNfcmV0dXJuX3BvaW50KCk7CitleHRlcm4gIkMiIHZvaWQgbGxpbnRfdGhy
b3dfZnJvbV9zbG93X3BhdGhfdHJhbXBvbGluZSgpOworZXh0ZXJuICJDIiB2b2lkIGxsaW50X3Ro
cm93X2R1cmluZ19jYWxsX3RyYW1wb2xpbmUoKTsKKworI2VuZGlmIC8vIEVOQUJMRShMTElOVCkK
KworI2VuZGlmIC8vIExvd0xldmVsSW50ZXJwcmV0ZXJfaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vYXJtdjcucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9hcm12Ny5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDMy
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3Qi
CityZXF1aXJlICJvcHQiCisKK2NsYXNzIE5vZGUKKyAgICBkZWYgYXJtVjdTaW5nbGUKKyAgICAg
ICAgZG91YmxlT3BlcmFuZCA9IGFybVY3T3BlcmFuZAorICAgICAgICByYWlzZSAiQm9ndXMgcmVn
aXN0ZXIgbmFtZSAje2RvdWJsZU9wZXJhbmR9IiB1bmxlc3MgZG91YmxlT3BlcmFuZCA9fiAvXmQv
CisgICAgICAgICJzIiArICgkfi5wb3N0X21hdGNoLnRvX2kgKiAyKS50b19zCisgICAgZW5kCitl
bmQKKworY2xhc3MgU3BlY2lhbFJlZ2lzdGVyIDwgTm9DaGlsZHJlbgorICAgIGRlZiBpbml0aWFs
aXplKG5hbWUpCisgICAgICAgIEBuYW1lID0gbmFtZQorICAgIGVuZAorICAgIAorICAgIGRlZiBh
cm1WN09wZXJhbmQKKyAgICAgICAgQG5hbWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVz
cz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAg
IGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAgZmFsc2UK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/CisgICAgICAgIHRydWUKKyAgICBlbmQK
K2VuZAorCitBUk12N19FWFRSQV9HUFJTID0gW1NwZWNpYWxSZWdpc3Rlci5uZXcoInI5IiksIFNw
ZWNpYWxSZWdpc3Rlci5uZXcoInI4IiksIFNwZWNpYWxSZWdpc3Rlci5uZXcoInIzIildCitBUk12
N19FWFRSQV9GUFJTID0gW1NwZWNpYWxSZWdpc3Rlci5uZXcoImQ3IildCitBUk12N19TQ1JBVENI
X0ZQUiA9IFNwZWNpYWxSZWdpc3Rlci5uZXcoImQ4IikKKworZGVmIGFybVY3TW92ZUltbWVkaWF0
ZSh2YWx1ZSwgcmVnaXN0ZXIpCisgICAgIyBDdXJyZW50bHkgd2Ugb25seSBoYW5kbGUgdGhlIHNp
bXBsZSBjYXNlcywgYW5kIGZhbGwgYmFjayB0byBtb3YvbW92dCBmb3IgdGhlIGNvbXBsZXggb25l
cy4KKyAgICBpZiB2YWx1ZSA+PSAwICYmIHZhbHVlIDwgMjU2CisgICAgICAgICRhc20ucHV0cyAi
bW92dyAje3JlZ2lzdGVyLmFybVY3T3BlcmFuZH0sIFwjI3t2YWx1ZX0iCisgICAgZWxzaWYgKH52
YWx1ZSkgPj0gMCAmJiAofnZhbHVlKSA8IDI1NgorICAgICAgICAkYXNtLnB1dHMgIm12biAje3Jl
Z2lzdGVyLmFybVY3T3BlcmFuZH0sIFwjI3t+dmFsdWV9IgorICAgIGVsc2UKKyAgICAgICAgJGFz
bS5wdXRzICJtb3Z3ICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje3ZhbHVlICYgMHhmZmZm
fSIKKyAgICAgICAgaWYgKHZhbHVlICYgMHhmZmZmMDAwMCkgIT0gMAorICAgICAgICAgICAgJGFz
bS5wdXRzICJtb3Z0ICN7cmVnaXN0ZXIuYXJtVjdPcGVyYW5kfSwgXCMje3ZhbHVlID4+IDE2fSIK
KyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworY2xhc3MgUmVnaXN0ZXJJRAorICAgIGRlZiBh
cm1WN09wZXJhbmQKKyAgICAgICAgY2FzZSBuYW1lCisgICAgICAgIHdoZW4gInQwIiwgImEwIiwg
InIwIgorICAgICAgICAgICAgInIwIgorICAgICAgICB3aGVuICJ0MSIsICJhMSIsICJyMSIKKyAg
ICAgICAgICAgICJyMSIKKyAgICAgICAgd2hlbiAidDIiLCAiYTIiCisgICAgICAgICAgICAicjIi
CisgICAgICAgIHdoZW4gImEzIgorICAgICAgICAgICAgInIzIgorICAgICAgICB3aGVuICJ0MyIK
KyAgICAgICAgICAgICJyNCIKKyAgICAgICAgd2hlbiAidDQiCisgICAgICAgICAgICAicjciCisg
ICAgICAgIHdoZW4gImNmciIKKyAgICAgICAgICAgICJyNSIKKyAgICAgICAgd2hlbiAibHIiCisg
ICAgICAgICAgICAibHIiCisgICAgICAgIHdoZW4gInNwIgorICAgICAgICAgICAgInNwIgorICAg
ICAgICBlbHNlCisgICAgICAgICAgICByYWlzZSAiQmFkIHJlZ2lzdGVyICN7bmFtZX0gZm9yIEFS
TXY3IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisK
K2NsYXNzIEZQUmVnaXN0ZXJJRAorICAgIGRlZiBhcm1WN09wZXJhbmQKKyAgICAgICAgY2FzZSBu
YW1lCisgICAgICAgIHdoZW4gImZ0MCIsICJmciIKKyAgICAgICAgICAgICJkMCIKKyAgICAgICAg
d2hlbiAiZnQxIgorICAgICAgICAgICAgImQxIgorICAgICAgICB3aGVuICJmdDIiCisgICAgICAg
ICAgICAiZDIiCisgICAgICAgIHdoZW4gImZ0MyIKKyAgICAgICAgICAgICJkMyIKKyAgICAgICAg
d2hlbiAiZnQ0IgorICAgICAgICAgICAgImQ0IgorICAgICAgICB3aGVuICJmdDUiCisgICAgICAg
ICAgICAiZDUiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJCYWQgcmVnaXN0ZXIg
I3tuYW1lfSBmb3IgQVJNdjcgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIKKyAgICAgICAgZW5kCisg
ICAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRlCisgICAgZGVmIGFybVY3T3BlcmFuZAorICAg
ICAgICByYWlzZSAiSW52YWxpZCBpbW1lZGlhdGUgI3t2YWx1ZX0gYXQgI3tjb2RlT3JpZ2luU3Ry
aW5nfSIgaWYgdmFsdWUgPCAwIG9yIHZhbHVlID4gMjU1CisgICAgICAgICJcIyN7dmFsdWV9Igor
ICAgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgICBkZWYgYXJtVjdPcGVyYW5kCisgICAg
ICAgIHJhaXNlICJCYWQgb2Zmc2V0IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIGlmIG9mZnNldC52
YWx1ZSA8IC0weGZmIG9yIG9mZnNldC52YWx1ZSA+IDB4ZmZmCisgICAgICAgICJbI3tiYXNlLmFy
bVY3T3BlcmFuZH0sIFwjI3tvZmZzZXQudmFsdWV9XSIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBC
YXNlSW5kZXgKKyAgICBkZWYgYXJtVjdPcGVyYW5kCisgICAgICAgIHJhaXNlICJCYWQgb2Zmc2V0
IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIGlmIG9mZnNldC52YWx1ZSAhPSAwCisgICAgICAgICJb
I3tiYXNlLmFybVY3T3BlcmFuZH0sICN7aW5kZXguYXJtVjdPcGVyYW5kfSwgbHNsIFwjI3tzY2Fs
ZVNoaWZ0fV0iCisgICAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgICAgZGVm
IGFybVY3T3BlcmFuZAorICAgICAgICByYWlzZSAiVW5jb252ZXJ0ZWQgYWJzb2x1dGUgYWRkcmVz
cyBhdCAje2NvZGVPcmlnaW5TdHJpbmd9IgorICAgIGVuZAorZW5kCisKKyMKKyMgTG93ZXJpbmcg
b2YgYnJhbmNoIG9wcy4gRm9yIGV4YW1wbGU6CisjCisjIGJhZGRpeiBmb28sIGJhciwgYmF6Cisj
CisjIHdpbGwgYmVjb21lOgorIworIyBhZGRpIGZvbywgYmFyCisjIGJ6IGJhegorIworCitkZWYg
YXJtVjdMb3dlckJyYW5jaE9wcyhsaXN0KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3QuZWFj
aCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24K
KyAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgICAgICAgIHdoZW4gL15iKGFkZGl8
c3ViaXxvcml8YWRkcCkvCisgICAgICAgICAgICAgICAgb3AgPSAkMQorICAgICAgICAgICAgICAg
IGJyYW5jaCA9ICJiIiArICR+LnBvc3RfbWF0Y2gKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
ICAgICAgICBjYXNlIG9wCisgICAgICAgICAgICAgICAgd2hlbiAiYWRkaSIsICJhZGRwIgorICAg
ICAgICAgICAgICAgICAgICBvcCA9ICJhZGRpcyIKKyAgICAgICAgICAgICAgICB3aGVuICJzdWJp
IgorICAgICAgICAgICAgICAgICAgICBvcCA9ICJzdWJpcyIKKyAgICAgICAgICAgICAgICB3aGVu
ICJvcmkiCisgICAgICAgICAgICAgICAgICAgIG9wID0gIm9yaXMiCisgICAgICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVj
dGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBvcCwgbm9kZS5vcGVyYW5kc1swLi4tMl0pCisgICAg
ICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBi
cmFuY2gsIFtub2RlLm9wZXJhbmRzWy0xXV0pCisgICAgICAgICAgICB3aGVuICJibXVsaW8iCisg
ICAgICAgICAgICAgICAgdG1wMSA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAg
ICAgICAgICAgICAgIHRtcDIgPSBUbXAubmV3KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAg
ICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJz
bXVsbGkiLCBbbm9kZS5vcGVyYW5kc1swXSwgbm9kZS5vcGVyYW5kc1sxXSwgbm9kZS5vcGVyYW5k
c1sxXSwgdG1wMV0pCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
bm9kZS5jb2RlT3JpZ2luLCAicnNoaWZ0aSIsIFtub2RlLm9wZXJhbmRzWy0yXSwgSW1tZWRpYXRl
Lm5ldyhub2RlLmNvZGVPcmlnaW4sIDMxKSwgdG1wMl0pCisgICAgICAgICAgICAgICAgbmV3TGlz
dCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAiYmluZXEiLCBbdG1wMSwgdG1w
Miwgbm9kZS5vcGVyYW5kc1stMV1dKQorICAgICAgICAgICAgd2hlbiAvXmJtdWxpLworICAgICAg
ICAgICAgICAgIGNvbmRpdGlvbiA9ICR+LnBvc3RfbWF0Y2gKKyAgICAgICAgICAgICAgICBuZXdM
aXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtdWxpIiwgbm9kZS5vcGVy
YW5kc1swLi4tMl0pCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
bm9kZS5jb2RlT3JpZ2luLCAiYnRpIiArIGNvbmRpdGlvbiwgW25vZGUub3BlcmFuZHNbLTJdLCBu
b2RlLm9wZXJhbmRzWy0xXV0pCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3
TGlzdCA8PCBub2RlCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
bmV3TGlzdCA8PCBub2RlCisgICAgICAgIGVuZAorICAgIH0KKyAgICBuZXdMaXN0CitlbmQKKwor
IworIyBMb3dlcmluZyBvZiBzaGlmdCBvcHMuIEZvciBleGFtcGxlOgorIworIyBsc2hpZnRpIGZv
bywgYmFyCisjCisjIHdpbGwgYmVjb21lOgorIworIyBhbmRpIGZvbywgMzEsIHRtcAorIyBsc2hp
ZnRpIHRtcCwgYmFyCisjCisKK2RlZiBhcm1WN1Nhbml0aXplU2hpZnQob3BlcmFuZCwgbGlzdCkK
KyAgICByZXR1cm4gb3BlcmFuZCBpZiBvcGVyYW5kLmltbWVkaWF0ZT8KKyAgICAKKyAgICB0bXAg
PSBUbXAubmV3KG9wZXJhbmQuY29kZU9yaWdpbiwgOmdwcikKKyAgICBsaXN0IDw8IEluc3RydWN0
aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJhbmRpIiwgW29wZXJhbmQsIEltbWVkaWF0ZS5u
ZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAzMSksIHRtcF0pCisgICAgdG1wCitlbmQKKworZGVmIGFy
bVY3TG93ZXJTaGlmdE9wcyhsaXN0KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3QuZWFjaCB7
CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIGlmIG5vZGUuaXNfYT8gSW5zdHJ1Y3Rpb24KKyAg
ICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgICAgICAgIHdoZW4gImxzaGlmdGkiLCAi
cnNoaWZ0aSIsICJ1cnNoaWZ0aSIKKyAgICAgICAgICAgICAgICBpZiBub2RlLm9wZXJhbmRzLnNp
emUgPT0gMgorICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhu
b2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbYXJtVjdTYW5pdGl6ZVNoaWZ0KG5vZGUub3Bl
cmFuZHNbMF0sIG5ld0xpc3QpLCBub2RlLm9wZXJhbmRzWzFdXSkKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUu
Y29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFtub2RlLm9wZXJhbmRzWzBdLCBhcm1WN1Nhbml0aXpl
U2hpZnQobm9kZS5vcGVyYW5kc1sxXSwgbmV3TGlzdCksIG5vZGUub3BlcmFuZHNbMl1dKQorICAg
ICAgICAgICAgICAgICAgICByYWlzZSAiV3JvbmcgbnVtYmVyIG9mIG9wZXJhbmRzIGZvciBzaGlm
dCBhdCAje25vZGUuY29kZU9yaWdpblN0cmluZ30iIHVubGVzcyBub2RlLm9wZXJhbmRzLnNpemUg
PT0gMworICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdAor
ZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgbWFsZm9ybWVkIGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGU6
CisjCisjIGxvYWRwIDEwMDAwW2Zvb10sIGJhcgorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbW92
ZSAxMDAwMCwgdG1wCisjIGFkZHAgZm9vLCB0bXAKKyMgbG9hZHAgMFt0bXBdLCBiYXIKKyMKKwor
Y2xhc3MgTm9kZQorICAgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShs
aXN0KQorICAgICAgICBtYXBDaGlsZHJlbiB7CisgICAgICAgICAgICB8IG5vZGUgfAorICAgICAg
ICAgICAgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAg
ICAgICB9CisgICAgZW5kCitlbmQKKworY2xhc3MgQWRkcmVzcworICAgIGRlZiBhcm1WN0xvd2Vy
TWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShsaXN0KQorICAgICAgICBpZiBvZmZzZXQudmFsdWUg
PCAtMHhmZiBvciBvZmZzZXQudmFsdWUgPiAweGZmZgorICAgICAgICAgICAgdG1wID0gVG1wLm5l
dyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlvbi5uZXco
Y29kZU9yaWdpbiwgIm1vdmUiLCBbb2Zmc2V0LCB0bXBdKQorICAgICAgICAgICAgbGlzdCA8PCBJ
bnN0cnVjdGlvbi5uZXcoY29kZU9yaWdpbiwgImFkZHAiLCBbYmFzZSwgdG1wXSkKKyAgICAgICAg
ICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2lu
LCAwKSkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2VsZgorICAgICAgICBlbmQKKyAgICBl
bmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFk
ZHJlc3Nlc1JlY3Vyc2UobGlzdCkKKyAgICAgICAgaWYgb2Zmc2V0LnZhbHVlICE9IDAKKyAgICAg
ICAgICAgIHRtcCA9IFRtcC5uZXcoY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgIGxpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW29mZnNldCwgdG1wXSkKKyAg
ICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJhZGRwIiwgW2Jh
c2UsIHRtcF0pCisgICAgICAgICAgICBCYXNlSW5kZXgubmV3KGNvZGVPcmlnaW4sIHRtcCwgaW5k
ZXgsIHNjYWxlLCBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIDApKQorICAgICAgICBlbHNlCisg
ICAgICAgICAgICBzZWxmCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIEFic29s
dXRlQWRkcmVzcworICAgIGRlZiBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzUmVjdXJzZShs
aXN0KQorICAgICAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgIGxp
c3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sICJtb3ZlIiwgW2FkZHJlc3MsIHRtcF0p
CisgICAgICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIHRtcCwgSW1tZWRpYXRlLm5ldyhjb2Rl
T3JpZ2luLCAwKSkKKyAgICBlbmQKK2VuZAorCitkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJl
c3NlcyhsaXN0KQorICAgIG5ld0xpc3QgPSBbXQorICAgIGxpc3QuZWFjaCB7CisgICAgICAgIHwg
bm9kZSB8CisgICAgICAgIG5ld0xpc3QgPDwgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVz
c2VzUmVjdXJzZShuZXdMaXN0KQorICAgIH0KKyAgICBuZXdMaXN0CitlbmQKKworIworIyBMb3dl
cmluZyBvZiBtYWxmb3JtZWQgYWRkcmVzc2VzIGluIGRvdWJsZSBsb2FkcyBhbmQgc3RvcmVzLiBG
b3IgZXhhbXBsZToKKyMKKyMgbG9hZGQgW2ZvbywgYmFyLCA4XSwgYmF6CisjCisjIGJlY29tZXM6
CisjCisjIGxlYXAgW2ZvbywgYmFyLCA4XSwgdG1wCisjIGxvYWRkIFt0bXBdLCBiYXoKKyMKKwor
Y2xhc3MgTm9kZQorICAgIGRlZiBhcm1WN0RvdWJsZUFkZHJlc3MobGlzdCkKKyAgICAgICAgc2Vs
ZgorICAgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICAgIGRlZiBhcm1WN0RvdWJsZUFk
ZHJlc3MobGlzdCkKKyAgICAgICAgdG1wID0gVG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAg
ICAgICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCAibGVhcCIsIFtzZWxmLCB0
bXBdKQorICAgICAgICBBZGRyZXNzLm5ldyhjb2RlT3JpZ2luLCB0bXAsIEltbWVkaWF0ZS5uZXco
Y29kZU9yaWdpbiwgMCkpCisgICAgZW5kCitlbmQKKworZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRB
ZGRyZXNzZXNEb3VibGUobGlzdCkKKyAgICBuZXdMaXN0ID0gW10KKyAgICBsaXN0LmVhY2ggewor
ICAgICAgICB8IG5vZGUgfAorICAgICAgICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAg
ICAgICAgICBjYXNlIG5vZGUub3Bjb2RlCisgICAgICAgICAgICB3aGVuICJsb2FkZCIKKyAgICAg
ICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJs
b2FkZCIsIFtub2RlLm9wZXJhbmRzWzBdLmFybVY3RG91YmxlQWRkcmVzcyhuZXdMaXN0KSwgbm9k
ZS5vcGVyYW5kc1sxXV0pCisgICAgICAgICAgICB3aGVuICJzdG9yZWQiCisgICAgICAgICAgICAg
ICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAic3RvcmVkIiwg
W25vZGUub3BlcmFuZHNbMF0sIG5vZGUub3BlcmFuZHNbMV0uYXJtVjdEb3VibGVBZGRyZXNzKG5l
d0xpc3QpXSkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5v
ZGUKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXdMaXN0IDw8
IG5vZGUKKyAgICAgICAgZW5kCisgICAgfQorICAgIG5ld0xpc3QKK2VuZAorCisjCisjIExvd2Vy
aW5nIG9mIG1pc3BsYWNlZCBpbW1lZGlhdGVzLiBGb3IgZXhhbXBsZToKKyMKKyMgc3RvcmVpIDAs
IFtmb29dCisjCisjIHdpbGwgYmVjb21lOgorIworIyBtb3ZlIDAsIHRtcAorIyBzdG9yZWkgdG1w
LCBbZm9vXQorIworCitkZWYgYXJtVjdMb3dlck1pc3BsYWNlZEltbWVkaWF0ZXMobGlzdCkKKyAg
ICBuZXdMaXN0ID0gW10KKyAgICBsaXN0LmVhY2ggeworICAgICAgICB8IG5vZGUgfAorICAgICAg
ICBpZiBub2RlLmlzX2E/IEluc3RydWN0aW9uCisgICAgICAgICAgICBjYXNlIG5vZGUub3Bjb2Rl
CisgICAgICAgICAgICB3aGVuICJzdG9yZWkiLCAic3RvcmVwIgorICAgICAgICAgICAgICAgIG9w
ZXJhbmRzID0gbm9kZS5vcGVyYW5kcworICAgICAgICAgICAgICAgIG5ld09wZXJhbmRzID0gW10K
KyAgICAgICAgICAgICAgICBvcGVyYW5kcy5lYWNoIHsKKyAgICAgICAgICAgICAgICAgICAgfCBv
cGVyYW5kIHwKKyAgICAgICAgICAgICAgICAgICAgaWYgb3BlcmFuZC5pc19hPyBJbW1lZGlhdGUK
KyAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IFRtcC5uZXcob3BlcmFuZC5jb2RlT3JpZ2lu
LCA6Z3ByKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcob3BlcmFuZC5jb2RlT3JpZ2luLCAibW92ZSIsIFtvcGVyYW5kLCB0bXBdKQorICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3T3BlcmFuZHMgPDwgdG1wCisgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld09wZXJhbmRzIDw8IG9wZXJhbmQKKyAgICAg
ICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG5l
d0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIG5l
d09wZXJhbmRzKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwg
bm9kZQorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3Qg
PDwgbm9kZQorICAgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93
ZXJpbmcgb2YgbWFsZm9ybWVkIGltbWVkaWF0ZXMgZXhjZXB0IHdoZW4gdXNlZCBpbiBhICJtb3Zl
IiBpbnN0cnVjdGlvbi4KKyMgRm9yIGV4YW1wbGU6CisjCisjIGFkZHAgNjQyNjQxLCBmb28KKyMK
KyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdmUgNjQyNjQxLCB0bXAKKyMgYWRkcCB0bXAsIGZvbwor
IworCitjbGFzcyBOb2RlCisgICAgZGVmIGFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVj
dXJzZShsaXN0KQorICAgICAgICBtYXBDaGlsZHJlbiB7CisgICAgICAgICAgICB8IG5vZGUgfAor
ICAgICAgICAgICAgbm9kZS5hcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlc1JlY3Vyc2UobGlz
dCkKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgICBkZWYgYXJt
VjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgICAgIHNlbGYKKyAg
ICBlbmQKK2VuZAorCitjbGFzcyBCYXNlSW5kZXgKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1l
ZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3QpCisgICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitj
bGFzcyBBYnNvbHV0ZUFkZHJlc3MKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0
ZXNSZWN1cnNlKGxpc3QpCisgICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJbW1l
ZGlhdGUKKyAgICBkZWYgYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKGxpc3Qp
CisgICAgICAgIGlmIHZhbHVlIDwgMCBvciB2YWx1ZSA+IDI1NQorICAgICAgICAgICAgdG1wID0g
VG1wLm5ldyhjb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgbGlzdCA8PCBJbnN0cnVjdGlv
bi5uZXcoY29kZU9yaWdpbiwgIm1vdmUiLCBbc2VsZiwgdG1wXSkKKyAgICAgICAgICAgIHRtcAor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBzZWxmCisgICAgICAgIGVuZAorICAgIGVuZAorZW5k
CisKK2RlZiBhcm1WN0xvd2VyTWFsZm9ybWVkSW1tZWRpYXRlcyhsaXN0KQorICAgIG5ld0xpc3Qg
PSBbXQorICAgIGxpc3QuZWFjaCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAgIGlmIG5vZGUu
aXNfYT8gSW5zdHJ1Y3Rpb24KKyAgICAgICAgICAgIGNhc2Ugbm9kZS5vcGNvZGUKKyAgICAgICAg
ICAgIHdoZW4gIm1vdmUiCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAg
ICAgICB3aGVuICJhZGRpIiwgImFkZHAiLCAiYWRkaXMiLCAic3ViaSIsICJzdWJwIiwgInN1Ymlz
IgorICAgICAgICAgICAgICAgIGlmIG5vZGUub3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFu
ZAorICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS5vcGVyYW5kc1swXS52YWx1ZSA8IDAgYW5k
CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wZXJhbmRzWzBdLnZhbHVlID49IDI1NSBh
bmQKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAyCisgICAg
ICAgICAgICAgICAgICAgIGlmIG5vZGUub3Bjb2RlID1+IC9hZGQvCisgICAgICAgICAgICAgICAg
ICAgICAgICBuZXdPcGNvZGUgPSAic3ViIiArIG5vZGUub3Bjb2RlWy0xLi4tMV0KKyAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3T3Bjb2RlID0gImFk
ZCIgKyBub2RlLm9wY29kZVstMS4uLTFdCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAg
ICAgICAgICAgICAgICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4s
IG5ld09wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW0ltbWVkaWF0ZS5uZXcoLW5vZGUub3BlcmFuZHNbMF0udmFsdWUpXSArIG5vZGUub3BlcmFu
ZHNbMS4uLTFdKQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbmV3
TGlzdCA8PCBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShuZXdMaXN0
KQorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgd2hlbiAibXVsaSIKKyAgICAgICAg
ICAgICAgICBpZiBub2RlLm9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAg
ICAgICAgICB0bXAgPSBUbXAubmV3KGNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICAgICAg
ICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBb
bm9kZS5vcGVyYW5kc1swXSwgdG1wXSkKKyAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJ
bnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibXVsaSIsIFt0bXBdICsgbm9kZS5vcGVy
YW5kc1sxLi4tMV0pCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBu
ZXdMaXN0IDw8IG5vZGUuYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXNSZWN1cnNlKG5ld0xp
c3QpCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgbmV3TGlzdCA8PCBub2RlLmFybVY3TG93ZXJNYWxmb3JtZWRJbW1lZGlhdGVzUmVjdXJzZShu
ZXdMaXN0KQorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xp
c3QgPDwgbm9kZQorICAgICAgICBlbmQKKyAgICB9CisgICAgbmV3TGlzdAorZW5kCisKKyMKKyMg
TG93ZXJpbmcgb2YgbWlzcGxhY2VkIGFkZHJlc3Nlcy4gRm9yIGV4YW1wbGU6CisjCisjIGFkZGkg
Zm9vLCBbYmFyXQorIworIyB3aWxsIGJlY29tZToKKyMKKyMgbG9hZGkgW2Jhcl0sIHRtcAorIyBh
ZGRpIGZvbywgdG1wCisjIHN0b3JlaSB0bXAsIFtiYXJdCisjCisjIEFub3RoZXIgZXhhbXBsZToK
KyMKKyMgYWRkaSBbZm9vXSwgYmFyCisjCisjIHdpbGwgYmVjb21lOgorIworIyBsb2FkaSBbZm9v
XSwgdG1wCisjIGFkZGkgdG1wLCBiYXIKKyMKKworZGVmIGFybVY3QXNSZWdpc3RlcihwcmVMaXN0
LCBwb3N0TGlzdCwgb3BlcmFuZCwgc3VmZml4LCBuZWVkU3RvcmUpCisgICAgcmV0dXJuIG9wZXJh
bmQgdW5sZXNzIG9wZXJhbmQuYWRkcmVzcz8KKyAgICAKKyAgICB0bXAgPSBUbXAubmV3KG9wZXJh
bmQuY29kZU9yaWdpbiwgaWYgc3VmZml4ID09ICJkIiB0aGVuIDpmcHIgZWxzZSA6Z3ByIGVuZCkK
KyAgICBwcmVMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJsb2Fk
IiArIHN1ZmZpeCwgW29wZXJhbmQsIHRtcF0pCisgICAgaWYgbmVlZFN0b3JlCisgICAgICAgIHBv
c3RMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhvcGVyYW5kLmNvZGVPcmlnaW4sICJzdG9yZSIgKyBz
dWZmaXgsIFt0bXAsIG9wZXJhbmRdKQorICAgIGVuZAorICAgIHRtcAorZW5kCisKK2RlZiBhcm1W
N0FzUmVnaXN0ZXJzKHByZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kcywgc3VmZml4KQorICAgIG5l
d09wZXJhbmRzID0gW10KKyAgICBvcGVyYW5kcy5lYWNoX3dpdGhfaW5kZXggeworICAgICAgICB8
IG9wZXJhbmQsIGluZGV4IHwKKyAgICAgICAgbmV3T3BlcmFuZHMgPDwgYXJtVjdBc1JlZ2lzdGVy
KHByZUxpc3QsIHBvc3RMaXN0LCBvcGVyYW5kLCBzdWZmaXgsIGluZGV4ID09IG9wZXJhbmRzLnNp
emUgLSAxKQorICAgIH0KKyAgICBuZXdPcGVyYW5kcworZW5kCisKK2RlZiBhcm1WN0xvd2VyTWlz
cGxhY2VkQWRkcmVzc2VzKGxpc3QpCisgICAgbmV3TGlzdCA9IFtdCisgICAgbGlzdC5lYWNoIHsK
KyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19hPyBJbnN0cnVjdGlvbgorICAg
ICAgICAgICAgcG9zdEluc3RydWN0aW9ucyA9IFtdCisgICAgICAgICAgICBjYXNlIG5vZGUub3Bj
b2RlCisgICAgICAgICAgICB3aGVuICJhZGRpIiwgImFkZHAiLCAiYWRkaXMiLCAiYW5kaSIsICJh
bmRwIiwgImxzaGlmdGkiLCAibXVsaSIsICJuZWdpIiwgIm5vdGkiLCAib3JpIiwgIm9yaXMiLAor
ICAgICAgICAgICAgICAgICJvcnAiLCAicnNoaWZ0aSIsICJ1cnNoaWZ0aSIsICJzdWJpIiwgInN1
YnAiLCAic3ViaXMiLCAieG9yaSIsICJ4b3JwIiwgL15iaS8sIC9eYnAvLCAvXmJ0aS8sCisgICAg
ICAgICAgICAgICAgL15idHAvLCAvXmNpLywgL15jcC8sIC9edGkvCisgICAgICAgICAgICAgICAg
bmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwg
cG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImkiKSkKKyAgICAgICAgICAgIHdoZW4g
ImJiZXEiLCAiYmJuZXEiLCAiYmJhIiwgImJiYWVxIiwgImJiYiIsICJiYmJlcSIsICJidGJvIiwg
ImJ0YnoiLCAiYnRibnoiLCAidGJ6IiwgInRibnoiLAorICAgICAgICAgICAgICAgICJ0Ym8iCisg
ICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2lu
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUub3Bjb2Rl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFybVY3QXNSZWdp
c3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5vcGVyYW5kcywgImIiKSkKKyAg
ICAgICAgICAgIHdoZW4gImJiZ3QiLCAiYmJndGVxIiwgImJibHQiLCAiYmJsdGVxIiwgImJ0YnMi
LCAidGJzIgorICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUu
Y29kZU9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu
b2RlLm9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
cm1WN0FzUmVnaXN0ZXJzKG5ld0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHMs
ICJicyIpKQorICAgICAgICAgICAgd2hlbiAiYWRkZCIsICJkaXZkIiwgInN1YmQiLCAibXVsZCIs
ICJzcXJ0ZCIsIC9eYmQvCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5u
ZXcobm9kZS5jb2RlT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG5vZGUub3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFybVY3QXNSZWdpc3RlcnMobmV3TGlzdCwgcG9zdEluc3RydWN0aW9ucywgbm9kZS5v
cGVyYW5kcywgImQiKSkKKyAgICAgICAgICAgIHdoZW4gImptcCIsICJjYWxsIgorICAgICAgICAg
ICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLm9wY29kZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJtVjdBc1JlZ2lzdGVyKG5l
d0xpc3QsIHBvc3RJbnN0cnVjdGlvbnMsIG5vZGUub3BlcmFuZHNbMF0sICJwIiwgZmFsc2UpXSkK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAg
ICAgICAgIGVuZAorICAgICAgICAgICAgbmV3TGlzdCArPSBwb3N0SW5zdHJ1Y3Rpb25zCisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICBlbmQKKyAgICB9
CisgICAgbmV3TGlzdAorZW5kCisKKyMKKyMgTG93ZXJpbmcgb2YgcmVnaXN0ZXIgcmV1c2UgaW4g
Y29tcGFyZSBpbnN0cnVjdGlvbnMuIEZvciBleGFtcGxlOgorIworIyBjaWVxIHQwLCB0MSwgdDAK
KyMKKyMgd2lsbCBiZWNvbWU6CisjCisjIG1vdiB0bXAsIHQwCisjIGNpZXEgdG1wLCB0MSwgdDAK
KyMKKworZGVmIGFybVY3TG93ZXJSZWdpc3RlclJldXNlKGxpc3QpCisgICAgbmV3TGlzdCA9IFtd
CisgICAgbGlzdC5lYWNoIHsKKyAgICAgICAgfCBub2RlIHwKKyAgICAgICAgaWYgbm9kZS5pc19h
PyBJbnN0cnVjdGlvbgorICAgICAgICAgICAgY2FzZSBub2RlLm9wY29kZQorICAgICAgICAgICAg
d2hlbiAiY2llcSIsICJjaW5lcSIsICJjaWEiLCAiY2lhZXEiLCAiY2liIiwgImNpYmVxIiwgImNp
Z3QiLCAiY2lndGVxIiwgImNpbHQiLCAiY2lsdGVxIiwKKyAgICAgICAgICAgICAgICAiY3BlcSIs
ICJjcG5lcSIsICJjcGEiLCAiY3BhZXEiLCAiY3BiIiwgImNwYmVxIiwgImNwZ3QiLCAiY3BndGVx
IiwgImNwbHQiLCAiY3BsdGVxIiwKKyAgICAgICAgICAgICAgICAidGlvIiwgInRpcyIsICJ0aXoi
LCAidGlueiIsICJ0Ym8iLCAidGJzIiwgInRieiIsICJ0Ym56IgorICAgICAgICAgICAgICAgIGlm
IG5vZGUub3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgICAgICAgICAgICAgIGlmIG5vZGUub3Bl
cmFuZHNbMF0gPT0gbm9kZS5vcGVyYW5kc1sxXQorICAgICAgICAgICAgICAgICAgICAgICAgdG1w
ID0gVG1wLm5ldyhub2RlLmNvZGVPcmlnaW4sIDpncHIpCisgICAgICAgICAgICAgICAgICAgICAg
ICBuZXdMaXN0IDw8IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sICJtb3ZlIiwgW25v
ZGUub3BlcmFuZHNbMF0sIHRtcF0pCisgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0IDw8
IEluc3RydWN0aW9uLm5ldyhub2RlLmNvZGVPcmlnaW4sIG5vZGUub3Bjb2RlLCBbdG1wLCBub2Rl
Lm9wZXJhbmRzWzFdXSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgbmV3TGlzdCA8PCBub2RlCisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgIldyb25nIG51bWJlciBv
ZiBhcmd1bWVudHMgYXQgI3tub2RlLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgbm9kZS5vcGVy
YW5kcy5zaXplID09IDMKKyAgICAgICAgICAgICAgICAgICAgaWYgbm9kZS5vcGVyYW5kc1swXSA9
PSBub2RlLm9wZXJhbmRzWzJdCisgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBUbXAubmV3
KG5vZGUuY29kZU9yaWdpbiwgOmdwcikKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3Qg
PDwgSW5zdHJ1Y3Rpb24ubmV3KG5vZGUuY29kZU9yaWdpbiwgIm1vdmUiLCBbbm9kZS5vcGVyYW5k
c1swXSwgdG1wXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgSW5zdHJ1Y3Rp
b24ubmV3KG5vZGUuY29kZU9yaWdpbiwgbm9kZS5vcGNvZGUsIFt0bXAsIG5vZGUub3BlcmFuZHNb
MV0sIG5vZGUub3BlcmFuZHNbMl1dKQorICAgICAgICAgICAgICAgICAgICBlbHNpZiBub2RlLm9w
ZXJhbmRzWzFdID09IG5vZGUub3BlcmFuZHNbMl0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRt
cCA9IFRtcC5uZXcobm9kZS5jb2RlT3JpZ2luLCA6Z3ByKQorICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3TGlzdCA8PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCAibW92ZSIsIFtu
b2RlLm9wZXJhbmRzWzFdLCB0bXBdKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3TGlzdCA8
PCBJbnN0cnVjdGlvbi5uZXcobm9kZS5jb2RlT3JpZ2luLCBub2RlLm9wY29kZSwgW25vZGUub3Bl
cmFuZHNbMF0sIHRtcCwgbm9kZS5vcGVyYW5kc1syXV0pCisgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0xpc3QgPDwgbm9kZQorICAgICAgICAgICAg
ICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNl
CisgICAgICAgICAgICBuZXdMaXN0IDw8IG5vZGUKKyAgICAgICAgZW5kCisgICAgfQorICAgIG5l
d0xpc3QKK2VuZAorCisjCisjIExlYSBzdXBwb3J0LgorIworCitjbGFzcyBBZGRyZXNzCisgICAg
ZGVmIGFybVY3RW1pdExlYShkZXN0aW5hdGlvbikKKyAgICAgICAgaWYgZGVzdGluYXRpb24gPT0g
YmFzZQorICAgICAgICAgICAgJGFzbS5wdXRzICJhZGRzICN7ZGVzdGluYXRpb24uYXJtVjdPcGVy
YW5kfSwgXCMje29mZnNldC52YWx1ZX0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICRhc20u
cHV0cyAiYWRkcyAje2Rlc3RpbmF0aW9uLmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09wZXJh
bmR9LCBcIyN7b2Zmc2V0LnZhbHVlfSIKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworY2xh
c3MgQmFzZUluZGV4CisgICAgZGVmIGFybVY3RW1pdExlYShkZXN0aW5hdGlvbikKKyAgICAgICAg
cmFpc2UgIk1hbGZvcm1lZCBCYXNlSW5kZXgsIG9mZnNldCBzaG91bGQgYmUgemVybyBhdCAje2Nv
ZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3Mgb2Zmc2V0LnZhbHVlID09IDAKKyAgICAgICAgJGFzbS5w
dXRzICJhZGQudyAje2Rlc3RpbmF0aW9uLmFybVY3T3BlcmFuZH0sICN7YmFzZS5hcm1WN09wZXJh
bmR9LCAje2luZGV4LmFybVY3T3BlcmFuZH0sIGxzbCBcIyN7c2NhbGVTaGlmdH0iCisgICAgZW5k
CitlbmQKKworIyBGSVhNRTogd2UgY291bGQgc3VwcG9ydCBBYnNvbHV0ZUFkZHJlc3MgZm9yIGxl
YSwgYnV0IHdlIGRvbid0LgorCisjCisjIEFjdHVhbCBsb3dlcmluZyBjb2RlIGZvbGxvd3MuCisj
CisKK2NsYXNzIFNlcXVlbmNlCisgICAgZGVmIGxvd2VyQVJNdjcKKyAgICAgICAgbXlMaXN0ID0g
QGxpc3QKKyAgICAgICAgCisgICAgICAgICMgVmVyaWZ5IHRoYXQgd2Ugd2lsbCBvbmx5IHNlZSBp
bnN0cnVjdGlvbnMgYW5kIGxhYmVscy4KKyAgICAgICAgbXlMaXN0LmVhY2ggeworICAgICAgICAg
ICAgfCBub2RlIHwKKyAgICAgICAgICAgIHVubGVzcyBub2RlLmlzX2E/IEluc3RydWN0aW9uIG9y
CisgICAgICAgICAgICAgICAgICAgIG5vZGUuaXNfYT8gTGFiZWwgb3IKKyAgICAgICAgICAgICAg
ICAgICAgbm9kZS5pc19hPyBMb2NhbExhYmVsIG9yCisgICAgICAgICAgICAgICAgICAgIG5vZGUu
aXNfYT8gU2tpcAorICAgICAgICAgICAgICAgIHJhaXNlICJVbmV4cGVjdGVkICN7bm9kZS5pbnNw
ZWN0fSBhdCAje25vZGUuY29kZU9yaWdpbn0iIAorICAgICAgICAgICAgZW5kCisgICAgICAgIH0K
KyAgICAgICAgCisgICAgICAgIG15TGlzdCA9IGFybVY3TG93ZXJCcmFuY2hPcHMobXlMaXN0KQor
ICAgICAgICBteUxpc3QgPSBhcm1WN0xvd2VyU2hpZnRPcHMobXlMaXN0KQorICAgICAgICBteUxp
c3QgPSBhcm1WN0xvd2VyTWFsZm9ybWVkQWRkcmVzc2VzKG15TGlzdCkKKyAgICAgICAgbXlMaXN0
ID0gYXJtVjdMb3dlck1hbGZvcm1lZEFkZHJlc3Nlc0RvdWJsZShteUxpc3QpCisgICAgICAgIG15
TGlzdCA9IGFybVY3TG93ZXJNaXNwbGFjZWRJbW1lZGlhdGVzKG15TGlzdCkKKyAgICAgICAgbXlM
aXN0ID0gYXJtVjdMb3dlck1hbGZvcm1lZEltbWVkaWF0ZXMobXlMaXN0KQorICAgICAgICBteUxp
c3QgPSBhcm1WN0xvd2VyTWlzcGxhY2VkQWRkcmVzc2VzKG15TGlzdCkKKyAgICAgICAgbXlMaXN0
ID0gYXJtVjdMb3dlclJlZ2lzdGVyUmV1c2UobXlMaXN0KQorICAgICAgICBteUxpc3QgPSBhc3Np
Z25SZWdpc3RlcnNUb1RlbXBvcmFyaWVzKG15TGlzdCwgOmdwciwgQVJNdjdfRVhUUkFfR1BSUykK
KyAgICAgICAgbXlMaXN0ID0gYXNzaWduUmVnaXN0ZXJzVG9UZW1wb3JhcmllcyhteUxpc3QsIDpm
cHIsIEFSTXY3X0VYVFJBX0ZQUlMpCisgICAgICAgIG15TGlzdC5lYWNoIHsKKyAgICAgICAgICAg
IHwgbm9kZSB8CisgICAgICAgICAgICBub2RlLmxvd2VyKCJBUk12NyIpCisgICAgICAgIH0KKyAg
ICBlbmQKK2VuZAorCitkZWYgYXJtVjdPcGVyYW5kcyhvcGVyYW5kcykKKyAgICBvcGVyYW5kcy5t
YXB7fHZ8IHYuYXJtVjdPcGVyYW5kfS5qb2luKCIsICIpCitlbmQKKworZGVmIGFybVY3RmxpcHBl
ZE9wZXJhbmRzKG9wZXJhbmRzKQorICAgIGFybVY3T3BlcmFuZHMoW29wZXJhbmRzWy0xXV0gKyBv
cGVyYW5kc1swLi4tMl0pCitlbmQKKworZGVmIGVtaXRBcm1WN0NvbXBhY3Qob3Bjb2RlMiwgb3Bj
b2RlMywgb3BlcmFuZHMpCisgICAgaWYgb3BlcmFuZHMuc2l6ZSA9PSAzCisgICAgICAgICRhc20u
cHV0cyAiI3tvcGNvZGUzfSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAg
ZWxzZQorICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHMuc2l6ZSA9PSAyCisgICAgICAgIHJh
aXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklECisgICAgICAgIGlmIG9wZXJh
bmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgJGFzbS5wdXRzICIje29wY29kZTN9
ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9
LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICRhc20ucHV0cyAiI3tvcGNvZGUyfSAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0i
CisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2RlZiBlbWl0QXJtVjcob3Bjb2RlLCBvcGVy
YW5kcykKKyAgICBpZiBvcGVyYW5kcy5zaXplID09IDMKKyAgICAgICAgJGFzbS5wdXRzICIje29w
Y29kZX0gI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgIGVsc2UKKyAgICAg
ICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzLnNpemUgPT0gMgorICAgICAgICAkYXNtLnB1dHMgIiN7
b3Bjb2RlfSAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdP
cGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgIGVuZAorZW5kCisKK2Rl
ZiBlbWl0QXJtVjdEb3VibGVCcmFuY2goYnJhbmNoT3Bjb2RlLCBvcGVyYW5kcykKKyAgICAkYXNt
LnB1dHMgInZjbXBlLmY2NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAk
YXNtLnB1dHMgInZtcnMgYXBzcl9uemN2LCBmcHNjciIKKyAgICAkYXNtLnB1dHMgIiN7YnJhbmNo
T3Bjb2RlfSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKK2VuZAorCitkZWYgZW1pdEFybVY3VGVz
dChvcGVyYW5kcykKKyAgICB2YWx1ZSA9IG9wZXJhbmRzWzBdCisgICAgY2FzZSBvcGVyYW5kcy5z
aXplCisgICAgd2hlbiAyCisgICAgICAgIG1hc2sgPSBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4s
IC0xKQorICAgIHdoZW4gMworICAgICAgICBtYXNrID0gb3BlcmFuZHNbMV0KKyAgICBlbHNlCisg
ICAgICAgIHJhaXNlICJFeHBlY3RlZCAyIG9yIDMgb3BlcmFuZHMgYnV0IGdvdCAje29wZXJhbmRz
LnNpemV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgZW5kCisgICAgCisgICAgaWYgbWFz
ay5pc19hPyBJbW1lZGlhdGUgYW5kIG1hc2sudmFsdWUgPT0gLTEKKyAgICAgICAgJGFzbS5wdXRz
ICJ0c3QgI3t2YWx1ZS5hcm1WN09wZXJhbmR9LCAje3ZhbHVlLmFybVY3T3BlcmFuZH0iCisgICAg
ZWxzaWYgbWFzay5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgJGFzbS5wdXRzICJ0c3QudyAje3Zh
bHVlLmFybVY3T3BlcmFuZH0sICN7bWFzay5hcm1WN09wZXJhbmR9IgorICAgIGVsc2UKKyAgICAg
ICAgJGFzbS5wdXRzICJ0c3QgI3t2YWx1ZS5hcm1WN09wZXJhbmR9LCAje21hc2suYXJtVjdPcGVy
YW5kfSIKKyAgICBlbmQKK2VuZAorCitkZWYgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgY29k
ZSkKKyAgICAkYXNtLnB1dHMgIm1vdnMgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCBcIzAi
CisgICAgJGFzbS5wdXRzICJjbXAgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJh
bmRzWzFdLmFybVY3T3BlcmFuZH0iCisgICAgJGFzbS5wdXRzICJpdCAje2NvZGV9IgorICAgICRh
c20ucHV0cyAibW92I3tjb2RlfSAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sIFwjMSIKK2Vu
ZAorCitkZWYgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywgY29kZSkKKyAgICAkYXNtLnB1dHMg
Im1vdnMgI3tvcGVyYW5kc1stMV0uYXJtVjdPcGVyYW5kfSwgXCMwIgorICAgIGVtaXRBcm1WN1Rl
c3Qob3BlcmFuZHMpCisgICAgJGFzbS5wdXRzICJpdCAje2NvZGV9IgorICAgICRhc20ucHV0cyAi
bW92I3tjb2RlfSAje29wZXJhbmRzWy0xXS5hcm1WN09wZXJhbmR9LCBcIzEiCitlbmQKKworY2xh
c3MgSW5zdHJ1Y3Rpb24KKyAgICBkZWYgbG93ZXJBUk12NworICAgICAgICAkYXNtLmNvbW1lbnQg
Y29kZU9yaWdpblN0cmluZworICAgICAgICBjYXNlIG9wY29kZQorICAgICAgICB3aGVuICJhZGRp
IiwgImFkZHAiLCAiYWRkaXMiCisgICAgICAgICAgICBpZiBvcGNvZGUgPT0gImFkZGlzIgorICAg
ICAgICAgICAgICAgIHN1ZmZpeCA9ICJzIgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIHN1ZmZpeCA9ICIiCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGlmIG9wZXJhbmRz
LnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICAgICAg
ICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgICAg
ICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAg
ICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAgYW5kIHN1ZmZpeC5lbXB0eT8KKyAgICAg
ICAgICAgICAgICAgICAgdW5sZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAg
ICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdiAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFu
ZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICAgICAgICAgICAgZW5k
CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFk
ZHMgI3tvcGVyYW5kc1syXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFu
ZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICAgICAgICBlbmQKKyAg
ICAgICAgICAgIGVsc2lmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8g
UmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1sxXS5pc19h
PyBSZWdpc3RlcklECisgICAgICAgICAgICAgICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzJdLmlz
X2E/IFJlZ2lzdGVySUQKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZHMgI3thcm1WN0Zs
aXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgICAgICAgICB1
bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAgICAgICAg
ICAgICAgICAgICAkYXNtLnB1dHMgImFkZHMgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5k
cyl9IgorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICRhc20ucHV0cyAiYWRkI3tzdWZmaXh9ICN7YXJtVjdGbGlwcGVkT3Bl
cmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVuZAor
ICAgICAgICB3aGVuICJhbmRpIiwgImFuZHAiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYWN0
KCJhbmRzIiwgImFuZCIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJvcmkiLCAib3JwIgorICAg
ICAgICAgICAgZW1pdEFybVY3Q29tcGFjdCgib3JycyIsICJvcnIiLCBvcGVyYW5kcykKKyAgICAg
ICAgd2hlbiAib3JpcyIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhY3QoIm9ycnMiLCAib3Jy
cyIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJ4b3JpIiwgInhvcnAiCisgICAgICAgICAgICBl
bWl0QXJtVjdDb21wYWN0KCJlb3JzIiwgImVvciIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJs
c2hpZnRpIgorICAgICAgICAgICAgZW1pdEFybVY3Q29tcGFjdCgibHNscyIsICJsc2xzIiwgb3Bl
cmFuZHMpCisgICAgICAgIHdoZW4gInJzaGlmdGkiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21w
YWN0KCJhc3JzIiwgImFzcnMiLCBvcGVyYW5kcykKKyAgICAgICAgd2hlbiAidXJzaGlmdGkiCisg
ICAgICAgICAgICBlbWl0QXJtVjdDb21wYWN0KCJsc3JzIiwgImxzcnMiLCBvcGVyYW5kcykKKyAg
ICAgICAgd2hlbiAibXVsaSIKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMiBvciBv
cGVyYW5kc1swXSA9PSBvcGVyYW5kc1syXSBvciBvcGVyYW5kc1sxXSA9PSBvcGVyYW5kc1syXQor
ICAgICAgICAgICAgICAgIGVtaXRBcm1WNygibXVscyIsIG9wZXJhbmRzKQorICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAibW92ICN7b3BlcmFuZHNbMl0uYXJtVjdP
cGVyYW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgICAgICRh
c20ucHV0cyAibXVscyAje29wZXJhbmRzWzJdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMl0u
YXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAg
ZW5kCisgICAgICAgIHdoZW4gInN1YmkiLCAic3VicCIsICJzdWJpcyIKKyAgICAgICAgICAgIGVt
aXRBcm1WN0NvbXBhY3QoInN1YnMiLCAic3VicyIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJu
ZWdpIgorICAgICAgICAgICAgJGFzbS5wdXRzICJyc2JzICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVy
YW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCBcIzAiCisgICAgICAgIHdoZW4gIm5v
dGkiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm12bnMgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJh
bmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAgIHdoZW4gImxvYWRpIiwg
ImxvYWRwIgorICAgICAgICAgICAgJGFzbS5wdXRzICJsZHIgI3thcm1WN0ZsaXBwZWRPcGVyYW5k
cyhvcGVyYW5kcyl9IgorICAgICAgICB3aGVuICJzdG9yZWkiLCAic3RvcmVwIgorICAgICAgICAg
ICAgJGFzbS5wdXRzICJzdHIgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIHdo
ZW4gImxvYWRiIgorICAgICAgICAgICAgJGFzbS5wdXRzICJsZHJiICN7YXJtVjdGbGlwcGVkT3Bl
cmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAgd2hlbiAibG9hZGJzIgorICAgICAgICAgICAgJGFz
bS5wdXRzICJsZHJzYi53ICN7YXJtVjdGbGlwcGVkT3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAg
ICAgd2hlbiAic3RvcmViIgorICAgICAgICAgICAgJGFzbS5wdXRzICJzdHJiICN7YXJtVjdPcGVy
YW5kcyhvcGVyYW5kcyl9IgorICAgICAgICB3aGVuICJsb2FkaCIKKyAgICAgICAgICAgICRhc20u
cHV0cyAibGRyaCAje2FybVY3RmxpcHBlZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIHdo
ZW4gImxvYWRocyIKKyAgICAgICAgICAgICRhc20ucHV0cyAibGRyc2gudyAje2FybVY3RmxpcHBl
ZE9wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIHdoZW4gInN0b3JlaCIKKyAgICAgICAgICAg
ICRhc20ucHV0cyAic3RyaCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHMpfSIKKyAgICAgICAgd2hl
biAibG9hZGQiCisgICAgICAgICAgICAkYXNtLnB1dHMgInZsZHIuNjQgI3thcm1WN0ZsaXBwZWRP
cGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICB3aGVuICJzdG9yZWQiCisgICAgICAgICAgICAk
YXNtLnB1dHMgInZzdHIuNjQgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzKX0iCisgICAgICAgIHdo
ZW4gImFkZGQiCisgICAgICAgICAgICBlbWl0QXJtVjcoInZhZGQuZjY0Iiwgb3BlcmFuZHMpCisg
ICAgICAgIHdoZW4gImRpdmQiCisgICAgICAgICAgICBlbWl0QXJtVjcoInZkaXYuZjY0Iiwgb3Bl
cmFuZHMpCisgICAgICAgIHdoZW4gInN1YmQiCisgICAgICAgICAgICBlbWl0QXJtVjcoInZzdWIu
ZjY0Iiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gIm11bGQiCisgICAgICAgICAgICBlbWl0QXJt
VjcoInZtdWwuZjY0Iiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gInNxcnRkIgorICAgICAgICAg
ICAgJGFzbS5wdXRzICJ2c3FydC5mNjQgI3thcm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9
IgorICAgICAgICB3aGVuICJjaTJkIgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2bW92ICN7b3Bl
cmFuZHNbMV0uYXJtVjdTaW5nbGV9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAg
ICAgICAgICAkYXNtLnB1dHMgInZjdnQuZjY0LnMzMiAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFu
ZH0sICN7b3BlcmFuZHNbMV0uYXJtVjdTaW5nbGV9IgorICAgICAgICB3aGVuICJiZGVxIgorICAg
ICAgICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJiZXEiLCBvcGVyYW5kcykKKyAgICAgICAg
d2hlbiAiYmRuZXEiCisgICAgICAgICAgICAkYXNtLnB1dHMgInZjbXBlLmY2NCAje2FybVY3T3Bl
cmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAidm1ycyBhcHNy
X256Y3YsIGZwc2NyIgorICAgICAgICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1
ZSgiYmRuZXEiKQorICAgICAgICAgICAgJGFzbS5wdXRzICJidnMgI3tMYWJlbFJlZmVyZW5jZS5u
ZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLmFzbUxhYmVsfSIKKyAgICAgICAgICAgICRhc20u
cHV0cyAiYm5lICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICAgICAgaXNVbm9yZGVy
ZWQubG93ZXIoIkFSTXY3IikKKyAgICAgICAgd2hlbiAiYmRndCIKKyAgICAgICAgICAgIGVtaXRB
cm1WN0RvdWJsZUJyYW5jaCgiYmd0Iiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gImJkZ3RlcSIK
KyAgICAgICAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYmdlIiwgb3BlcmFuZHMpCisgICAg
ICAgIHdoZW4gImJkbHQiCisgICAgICAgICAgICBlbWl0QXJtVjdEb3VibGVCcmFuY2goImJtaSIs
IG9wZXJhbmRzKQorICAgICAgICB3aGVuICJiZGx0ZXEiCisgICAgICAgICAgICBlbWl0QXJtVjdE
b3VibGVCcmFuY2goImJscyIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJiZGVxdW4iCisgICAg
ICAgICAgICAkYXNtLnB1dHMgInZjbXBlLmY2NCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4u
MV0pfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAidm1ycyBhcHNyX256Y3YsIGZwc2NyIgorICAg
ICAgICAgICAgJGFzbS5wdXRzICJidnMgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAg
ICAgICAkYXNtLnB1dHMgImJlcSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hl
biAiYmRuZXF1biIKKyAgICAgICAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYm5lIiwgb3Bl
cmFuZHMpCisgICAgICAgIHdoZW4gImJkZ3R1biIKKyAgICAgICAgICAgIGVtaXRBcm1WN0RvdWJs
ZUJyYW5jaCgiYmhpIiwgb3BlcmFuZHMpCisgICAgICAgIHdoZW4gImJkZ3RlcXVuIgorICAgICAg
ICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJicGwiLCBvcGVyYW5kcykKKyAgICAgICAgd2hl
biAiYmRsdHVuIgorICAgICAgICAgICAgZW1pdEFybVY3RG91YmxlQnJhbmNoKCJibHQiLCBvcGVy
YW5kcykKKyAgICAgICAgd2hlbiAiYmRsdGVxdW4iCisgICAgICAgICAgICBlbWl0QXJtVjdEb3Vi
bGVCcmFuY2goImJsZSIsIG9wZXJhbmRzKQorICAgICAgICB3aGVuICJidGQyaSIKKyAgICAgICAg
ICAgICMgRklYTUU6IG1heSBiZSBhIGdvb2QgaWRlYSB0byBqdXN0IGdldCByaWQgb2YgdGhpcyBp
bnN0cnVjdGlvbiwgc2luY2UgdGhlIGludGVycHJldGVyCisgICAgICAgICAgICAjIGN1cnJlbnRs
eSBkb2VzIG5vdCB1c2UgaXQuCisgICAgICAgICAgICByYWlzZSAiQVJNdjcgZG9lcyBub3Qgc3Vw
cG9ydCB0aGlzIG9wY29kZSB5ZXQsICN7Y29kZU9yaWdpbn0iCisgICAgICAgIHdoZW4gInRkMmki
CisgICAgICAgICAgICAkYXNtLnB1dHMgInZjdnQuczMyLmY2NCAje0FSTXY3X1NDUkFUQ0hfRlBS
LmFybVY3U2luZ2xlfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAg
JGFzbS5wdXRzICJ2bW92ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tBUk12N19TQ1JB
VENIX0ZQUi5hcm1WN1NpbmdsZX0iCisgICAgICAgIHdoZW4gImJjZDJpIgorICAgICAgICAgICAg
JGFzbS5wdXRzICJ2Y3Z0LnMzMi5mNjQgI3tBUk12N19TQ1JBVENIX0ZQUi5hcm1WN1NpbmdsZX0s
ICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAidm1v
diAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7QVJNdjdfU0NSQVRDSF9GUFIuYXJtVjdT
aW5nbGV9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJ2Y3Z0LmY2NC5zMzIgI3tBUk12N19TQ1JB
VENIX0ZQUi5hcm1WN09wZXJhbmR9LCAje0FSTXY3X1NDUkFUQ0hfRlBSLmFybVY3U2luZ2xlfSIK
KyAgICAgICAgICAgIGVtaXRBcm1WN0RvdWJsZUJyYW5jaCgiYm5lIiwgW0FSTXY3X1NDUkFUQ0hf
RlBSLCBvcGVyYW5kc1swXSwgb3BlcmFuZHNbMl1dKQorICAgICAgICAgICAgJGFzbS5wdXRzICJ0
c3QgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFu
ZH0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImJlcSAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIK
KyAgICAgICAgd2hlbiAibW92ZHoiCisgICAgICAgICAgICAjIEZJWE1FOiBlaXRoZXIgc3VwcG9y
dCB0aGlzIG9yIHJlbW92ZSBpdC4KKyAgICAgICAgICAgIHJhaXNlICJBUk12NyBkb2VzIG5vdCBz
dXBwb3J0IHRoaXMgb3Bjb2RlIHlldCwgI3tjb2RlT3JpZ2lufSIKKyAgICAgICAgd2hlbiAicG9w
IgorICAgICAgICAgICAgJGFzbS5wdXRzICJwb3AgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9
IgorICAgICAgICB3aGVuICJwdXNoIgorICAgICAgICAgICAgJGFzbS5wdXRzICJwdXNoICN7b3Bl
cmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6
eGkycCIKKyAgICAgICAgICAgIGlmIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAg
ICAgICAgICAgIGFybVY3TW92ZUltbWVkaWF0ZShvcGVyYW5kc1swXS52YWx1ZSwgb3BlcmFuZHNb
MV0pCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJtb3YgI3th
cm1WN0ZsaXBwZWRPcGVyYW5kcyhvcGVyYW5kcyl9IgorICAgICAgICAgICAgZW5kCisgICAgICAg
IHdoZW4gIm5vcCIKKyAgICAgICAgICAgICRhc20ucHV0cyAibm9wIgorICAgICAgICB3aGVuICJi
aWVxIiwgImJwZXEiLCAiYmJlcSIKKyAgICAgICAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAw
KSA9PSBvcGVyYW5kc1swXQorICAgICAgICAgICAgICAgICRhc20ucHV0cyAidHN0ICN7b3BlcmFu
ZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAg
ICAgICAgZWxzaWYgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzFdCisgICAgICAg
ICAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29w
ZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAg
ICAgICAgICBlbmQKKyAgICAgICAgICAgICRhc20ucHV0cyAiYmVxICN7b3BlcmFuZHNbMl0uYXNt
TGFiZWx9IgorICAgICAgICB3aGVuICJiaW5lcSIsICJicG5lcSIsICJiYm5lcSIKKyAgICAgICAg
ICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXQorICAgICAgICAgICAg
ICAgICRhc20ucHV0cyAidHN0ICN7b3BlcmFuZHNbMV0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5k
c1sxXS5hcm1WN09wZXJhbmR9IgorICAgICAgICAgICAgZWxzaWYgSW1tZWRpYXRlLm5ldyhuaWws
IDApID09IG9wZXJhbmRzWzFdCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJ0c3QgI3tvcGVy
YW5kc1swXS5hcm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0iCisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJh
bmRzKG9wZXJhbmRzWzAuLjFdKX0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICRhc20u
cHV0cyAiYm5lICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJiaWEiLCAi
YnBhIiwgImJiYSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5kcyhv
cGVyYW5kc1swLi4xXSl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJiaGkgI3tvcGVyYW5kc1sy
XS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImJpYWVxIiwgImJwYWVxIiwgImJiYWVxIgorICAg
ICAgICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0i
CisgICAgICAgICAgICAkYXNtLnB1dHMgImJocyAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAg
ICAgICAgd2hlbiAiYmliIiwgImJwYiIsICJiYmIiCisgICAgICAgICAgICAkYXNtLnB1dHMgImNt
cCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAgICRhc20ucHV0
cyAiYmxvICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJiaWJlcSIsICJi
cGJlcSIsICJiYmJlcSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdPcGVyYW5k
cyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJibHMgI3tvcGVyYW5k
c1syXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImJpZ3QiLCAiYnBndCIsICJiYmd0IgorICAg
ICAgICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJhbmRzWzAuLjFdKX0i
CisgICAgICAgICAgICAkYXNtLnB1dHMgImJndCAje29wZXJhbmRzWzJdLmFzbUxhYmVsfSIKKyAg
ICAgICAgd2hlbiAiYmlndGVxIiwgImJwZ3RlcSIsICJiYmd0ZXEiCisgICAgICAgICAgICAkYXNt
LnB1dHMgImNtcCAje2FybVY3T3BlcmFuZHMob3BlcmFuZHNbMC4uMV0pfSIKKyAgICAgICAgICAg
ICRhc20ucHV0cyAiYmdlICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJi
aWx0IiwgImJwbHQiLCAiYmJsdCIKKyAgICAgICAgICAgICRhc20ucHV0cyAiY21wICN7YXJtVjdP
cGVyYW5kcyhvcGVyYW5kc1swLi4xXSl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJibHQgI3tv
cGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImJpbHRlcSIsICJicGx0ZXEiLCAi
YmJsdGVxIgorICAgICAgICAgICAgJGFzbS5wdXRzICJjbXAgI3thcm1WN09wZXJhbmRzKG9wZXJh
bmRzWzAuLjFdKX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImJsZSAje29wZXJhbmRzWzJdLmFz
bUxhYmVsfSIKKyAgICAgICAgd2hlbiAiYnRpeiIsICJidHB6IiwgImJ0YnoiCisgICAgICAgICAg
ICBlbWl0QXJtVjdUZXN0KG9wZXJhbmRzKQorICAgICAgICAgICAgJGFzbS5wdXRzICJiZXEgI3tv
cGVyYW5kc1stMV0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJidGlueiIsICJidHBueiIsICJi
dGJueiIKKyAgICAgICAgICAgIGVtaXRBcm1WN1Rlc3Qob3BlcmFuZHMpCisgICAgICAgICAgICAk
YXNtLnB1dHMgImJuZSAje29wZXJhbmRzWy0xXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImJ0
aW8iLCAiYnRwbyIsICJidGJvIgorICAgICAgICAgICAgZW1pdEFybVY3VGVzdChvcGVyYW5kcykK
KyAgICAgICAgICAgICRhc20ucHV0cyAiYnZzICN7b3BlcmFuZHNbLTFdLmFzbUxhYmVsfSIKKyAg
ICAgICAgd2hlbiAiYnRpcyIsICJidHBzIiwgImJ0YnMiCisgICAgICAgICAgICBlbWl0QXJtVjdU
ZXN0KG9wZXJhbmRzKQorICAgICAgICAgICAgJGFzbS5wdXRzICJibWkgI3tvcGVyYW5kc1stMV0u
YXNtTGFiZWx9IgorICAgICAgICB3aGVuICJqbXAiCisgICAgICAgICAgICBpZiBvcGVyYW5kc1sw
XS5sYWJlbD8KKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImIgI3tvcGVyYW5kc1swXS5hc21M
YWJlbH0iCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJtb3Yg
cGMsICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSIKKyAgICAgICAgICAgIGVuZAorICAgICAg
ICB3aGVuICJjYWxsIgorICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0ubGFiZWw/CisgICAgICAg
ICAgICAgICAgJGFzbS5wdXRzICJibHggI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJibHggI3tvcGVyYW5kc1swXS5h
cm1WN09wZXJhbmR9IgorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gImJyZWFrIgorICAg
ICAgICAgICAgJGFzbS5wdXRzICJia3B0IgorICAgICAgICB3aGVuICJyZXQiCisgICAgICAgICAg
ICAkYXNtLnB1dHMgImJ4IGxyIgorICAgICAgICB3aGVuICJjaWVxIiwgImNwZXEiCisgICAgICAg
ICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiZXEiKQorICAgICAgICB3aGVuICJjaW5l
cSIsICJjcG5lcSIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJuZSIp
CisgICAgICAgIHdoZW4gImNpYSIsICJjcGEiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYXJl
KG9wZXJhbmRzLCAiaGkiKQorICAgICAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAgICAgICAg
ICAgIGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJocyIpCisgICAgICAgIHdoZW4gImNpYiIs
ICJjcGIiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAibG8iKQorICAg
ICAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAgICAgICAgIGVtaXRBcm1WN0NvbXBhcmUo
b3BlcmFuZHMsICJscyIpCisgICAgICAgIHdoZW4gImNpZ3QiLCAiY3BndCIKKyAgICAgICAgICAg
IGVtaXRBcm1WN0NvbXBhcmUob3BlcmFuZHMsICJndCIpCisgICAgICAgIHdoZW4gImNpZ3RlcSIs
ICJjcGd0ZXEiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYXJlKG9wZXJhbmRzLCAiZ2UiKQor
ICAgICAgICB3aGVuICJjaWx0IiwgImNwbHQiCisgICAgICAgICAgICBlbWl0QXJtVjdDb21wYXJl
KG9wZXJhbmRzLCAibHQiKQorICAgICAgICB3aGVuICJjaWx0ZXEiLCAiY3BsdGVxIgorICAgICAg
ICAgICAgZW1pdEFybVY3Q29tcGFyZShvcGVyYW5kcywgImxlIikKKyAgICAgICAgd2hlbiAidGlv
IiwgInRibyIKKyAgICAgICAgICAgIGVtaXRBcm1WN1Rlc3RTZXQob3BlcmFuZHMsICJ2cyIpCisg
ICAgICAgIHdoZW4gInRpcyIsICJ0YnMiCisgICAgICAgICAgICBlbWl0QXJtVjdUZXN0U2V0KG9w
ZXJhbmRzLCAibWkiKQorICAgICAgICB3aGVuICJ0aXoiLCAidGJ6IgorICAgICAgICAgICAgZW1p
dEFybVY3VGVzdFNldChvcGVyYW5kcywgImVxIikKKyAgICAgICAgd2hlbiAidGlueiIsICJ0Ym56
IgorICAgICAgICAgICAgZW1pdEFybVY3VGVzdFNldChvcGVyYW5kcywgIm5lIikKKyAgICAgICAg
d2hlbiAicGVlayIKKyAgICAgICAgICAgICRhc20ucHV0cyAibGRyICN7b3BlcmFuZHNbMV0uYXJt
VjdPcGVyYW5kfSwgW3NwLCBcIyN7b3BlcmFuZHNbMF0udmFsdWUgKiA0fV0iCisgICAgICAgIHdo
ZW4gInBva2UiCisgICAgICAgICAgICAkYXNtLnB1dHMgInN0ciAje29wZXJhbmRzWzFdLmFybVY3
T3BlcmFuZH0sIFtzcCwgXCMje29wZXJhbmRzWzBdLnZhbHVlICogNH1dIgorICAgICAgICB3aGVu
ICJmaWkyZCIKKyAgICAgICAgICAgICRhc20ucHV0cyAidm1vdiAje29wZXJhbmRzWzJdLmFybVY3
T3BlcmFuZH0sICN7b3BlcmFuZHNbMF0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1sxXS5hcm1W
N09wZXJhbmR9IgorICAgICAgICB3aGVuICJmZDJpaSIKKyAgICAgICAgICAgICRhc20ucHV0cyAi
dm1vdiAje29wZXJhbmRzWzFdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVy
YW5kfSwgI3tvcGVyYW5kc1swXS5hcm1WN09wZXJhbmR9IgorICAgICAgICB3aGVuICJibyIKKyAg
ICAgICAgICAgICRhc20ucHV0cyAiYnZzICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAg
ICB3aGVuICJicyIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYm1pICN7b3BlcmFuZHNbMF0uYXNt
TGFiZWx9IgorICAgICAgICB3aGVuICJieiIKKyAgICAgICAgICAgICRhc20ucHV0cyAiYmVxICN7
b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJibnoiCisgICAgICAgICAgICAk
YXNtLnB1dHMgImJuZSAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAibGVh
aSIsICJsZWFwIgorICAgICAgICAgICAgb3BlcmFuZHNbMF0uYXJtVjdFbWl0TGVhKG9wZXJhbmRz
WzFdKQorICAgICAgICB3aGVuICJzbXVsbGkiCisgICAgICAgICAgICByYWlzZSAiV3JvbmcgbnVt
YmVyIG9mIGFyZ3VtZW50cyB0byBzbXVsbCBpbiAje3NlbGYuaW5zcGVjdH0gYXQgI3tjb2RlT3Jp
Z2luU3RyaW5nfSIgdW5sZXNzIG9wZXJhbmRzLmxlbmd0aCA9PSA0CisgICAgICAgICAgICAkYXNt
LnB1dHMgInNtdWxsICN7b3BlcmFuZHNbMl0uYXJtVjdPcGVyYW5kfSwgI3tvcGVyYW5kc1szXS5h
cm1WN09wZXJhbmR9LCAje29wZXJhbmRzWzBdLmFybVY3T3BlcmFuZH0sICN7b3BlcmFuZHNbMV0u
YXJtVjdPcGVyYW5kfSIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIlVuaGFuZGxl
ZCBvcGNvZGUgI3tvcGNvZGV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAgIGVuZAor
ICAgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2Fz
bS5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20u
cmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc20u
cmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTc2IEBACisjIS91c3IvYmluL2VudiBydWJ5CisK
KyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMK
KyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyQ6IDw8IEZpbGUuZGlybmFt
ZShfX0ZJTEVfXykKKworcmVxdWlyZSAiYmFja2VuZHMiCityZXF1aXJlICJkaWdlc3Qvc2hhMSIK
K3JlcXVpcmUgIm9mZnNldHMiCityZXF1aXJlICJwYXJzZXIiCityZXF1aXJlICJzZWxmX2hhc2gi
CityZXF1aXJlICJzZXR0aW5ncyIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworY2xhc3MgQXNzZW1i
bGVyCisgICAgZGVmIGluaXRpYWxpemUob3V0cCkKKyAgICAgICAgQG91dHAgPSBvdXRwCisgICAg
ICAgIEBzdGF0ZSA9IDpjcHAKKyAgICAgICAgQGNvbW1lbnRTdGF0ZSA9IDpub25lCisgICAgICAg
IEBjb21tZW50ID0gbmlsCisgICAgZW5kCisgICAgCisgICAgZGVmIGVudGVyQXNtCisgICAgICAg
IEBvdXRwLnB1dHMgImFzbSAoIgorICAgICAgICBAc3RhdGUgPSA6YXNtCisgICAgZW5kCisgICAg
CisgICAgZGVmIGxlYXZlQXNtCisgICAgICAgIHB1dHNMYXN0Q29tbWVudAorICAgICAgICBAb3V0
cC5wdXRzICIpOyIKKyAgICAgICAgQHN0YXRlID0gOmNwcAorICAgIGVuZAorICAgIAorICAgIGRl
ZiBpbkFzbQorICAgICAgICBlbnRlckFzbQorICAgICAgICB5aWVsZAorICAgICAgICBsZWF2ZUFz
bQorICAgIGVuZAorICAgIAorICAgIGRlZiBsYXN0Q29tbWVudAorICAgICAgICBpZiBAY29tbWVu
dAorICAgICAgICAgICAgcmVzdWx0ID0gIi8vICN7QGNvbW1lbnR9IgorICAgICAgICBlbHNlCisg
ICAgICAgICAgICByZXN1bHQgPSAiIgorICAgICAgICBlbmQKKyAgICAgICAgQGNvbW1lbnRTdGF0
ZSA9IDpub25lCisgICAgICAgIEBjb21tZW50ID0gbmlsCisgICAgICAgIHJlc3VsdAorICAgIGVu
ZAorICAgIAorICAgIGRlZiBwdXRzTGFzdENvbW1lbnQKKyAgICAgICAgY29tbWVudCA9IGxhc3RD
b21tZW50CisgICAgICAgIHVubGVzcyBjb21tZW50LmVtcHR5PworICAgICAgICAgICAgQG91dHAu
cHV0cyBjb21tZW50CisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBwdXRzKCps
aW5lKQorICAgICAgICByYWlzZSB1bmxlc3MgQHN0YXRlID09IDphc20KKyAgICAgICAgQG91dHAu
cHV0cygiXCJcXHQiICsgbGluZS5qb2luKCcnKSArICJcXG5cIiAje2xhc3RDb21tZW50fSIpCisg
ICAgZW5kCisgICAgCisgICAgZGVmIHByaW50KGxpbmUpCisgICAgICAgIHJhaXNlIHVubGVzcyBA
c3RhdGUgPT0gOmFzbQorICAgICAgICBAb3V0cC5wcmludCgiXCIiICsgbGluZSArICJcIiIpCisg
ICAgZW5kCisgICAgCisgICAgZGVmIHB1dHNMYWJlbChsYWJlbE5hbWUpCisgICAgICAgIHJhaXNl
IHVubGVzcyBAc3RhdGUgPT0gOmFzbQorICAgICAgICBAb3V0cC5wdXRzKCJPRkZMSU5FX0FTTV9H
TE9CQUxfTEFCRUwoI3tsYWJlbE5hbWV9KSAje2xhc3RDb21tZW50fSIpCisgICAgZW5kCisgICAg
CisgICAgZGVmIHB1dHNMb2NhbExhYmVsKGxhYmVsTmFtZSkKKyAgICAgICAgcmFpc2UgdW5sZXNz
IEBzdGF0ZSA9PSA6YXNtCisgICAgICAgIEBvdXRwLnB1dHMoIkxPQ0FMX0xBQkVMX1NUUklORygj
e2xhYmVsTmFtZX0pIFwiOlxcblwiICN7bGFzdENvbW1lbnR9IikKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgc2VsZi5sYWJlbFJlZmVyZW5jZShsYWJlbE5hbWUpCisgICAgICAgICJcIiBTWU1CT0xf
U1RSSU5HKCN7bGFiZWxOYW1lfSkgXCIiCisgICAgZW5kCisgICAgCisgICAgZGVmIHNlbGYubG9j
YWxMYWJlbFJlZmVyZW5jZShsYWJlbE5hbWUpCisgICAgICAgICJcIiBMT0NBTF9MQUJFTF9TVFJJ
TkcoI3tsYWJlbE5hbWV9KSBcIiIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY29tbWVudCh0ZXh0
KQorICAgICAgICBjYXNlIEBjb21tZW50U3RhdGUKKyAgICAgICAgd2hlbiA6bm9uZQorICAgICAg
ICAgICAgQGNvbW1lbnQgPSB0ZXh0CisgICAgICAgICAgICBAY29tbWVudFN0YXRlID0gOm9uZQor
ICAgICAgICB3aGVuIDpvbmUKKyAgICAgICAgICAgIEBvdXRwLnB1dHMgIi8vICN7QGNvbW1lbnR9
IgorICAgICAgICAgICAgQG91dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgICAgICAgICAgIEBjb21t
ZW50ID0gbmlsCisgICAgICAgICAgICBAY29tbWVudFN0YXRlID0gOm1hbnkKKyAgICAgICAgd2hl
biA6bWFueQorICAgICAgICAgICAgQG91dHAucHV0cyAiLy8gI3t0ZXh0fSIKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworYXNtRmls
ZSA9IEFSR1Yuc2hpZnQKK29mZnNldHNGaWxlID0gQVJHVi5zaGlmdAorb3V0cHV0RmxubSA9IEFS
R1Yuc2hpZnQKKworJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBQYXJzaW5nICN7YXNtRmlsZX0g
YW5kICN7b2Zmc2V0c0ZpbGV9IGFuZCBjcmVhdGluZyBhc3NlbWJseSBmaWxlICN7b3V0cHV0Rmxu
bX0uIgorCitjb25maWd1cmF0aW9uTGlzdCA9IG9mZnNldHNBbmRDb25maWd1cmF0aW9uSW5kZXgo
b2Zmc2V0c0ZpbGUpCitpbnB1dERhdGEgPSBJTzo6cmVhZChhc21GaWxlKQorCitpbnB1dEhhc2gg
PQorICAgICIvLyBvZmZsaW5lYXNtIGlucHV0IGhhc2g6ICIgKyBEaWdlc3Q6OlNIQTEuaGV4ZGln
ZXN0KGlucHV0RGF0YSkgKworICAgICIgIiArIERpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoY29uZmln
dXJhdGlvbkxpc3QubWFwe3x2fCAodlswXSArIFt2WzFdXSkuam9pbignICcpfS5qb2luKCcgJykp
ICsKKyAgICAiICIgKyBzZWxmSGFzaAorCitpZiBGaWxlVGVzdC5leGlzdD8gb3V0cHV0RmxubQor
ICAgIEZpbGUub3BlbihvdXRwdXRGbG5tLCAiciIpIHsKKyAgICAgICAgfCBpbnAgfAorICAgICAg
ICBmaXJzdExpbmUgPSBpbnAuZ2V0cworICAgICAgICBpZiBmaXJzdExpbmUgYW5kIGZpcnN0TGlu
ZS5jaG9tcCA9PSBpbnB1dEhhc2gKKyAgICAgICAgICAgICRzdGRlcnIucHV0cyAib2ZmbGluZWFz
bTogTm90aGluZyBjaGFuZ2VkLiIKKyAgICAgICAgICAgIGV4aXQgMAorICAgICAgICBlbmQKKyAg
ICB9CitlbmQKKworRmlsZS5vcGVuKG91dHB1dEZsbm0sICJ3IikgeworICAgIHwgb3V0cCB8Cisg
ICAgJG91dHB1dCA9IG91dHAKKyAgICAkb3V0cHV0LnB1dHMgaW5wdXRIYXNoCisgICAgCisgICAg
JGFzbSA9IEFzc2VtYmxlci5uZXcoJG91dHB1dCkKKyAgICAKKyAgICBhc3QgPSBwYXJzZShsZXgo
aW5wdXREYXRhKSkKKyAgICAKKyAgICBjb25maWd1cmF0aW9uTGlzdC5lYWNoIHsKKyAgICAgICAg
fCBjb25maWd1cmF0aW9uIHwKKyAgICAgICAgb2Zmc2V0c0xpc3QgPSBjb25maWd1cmF0aW9uWzBd
CisgICAgICAgIGNvbmZpZ0luZGV4ID0gY29uZmlndXJhdGlvblsxXQorICAgICAgICBmb3JTZXR0
aW5ncyhjb21wdXRlU2V0dGluZ3NDb21iaW5hdGlvbnMoYXN0KVtjb25maWdJbmRleF0sIGFzdCkg
eworICAgICAgICAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCB8
CisgICAgICAgICAgICBsb3dMZXZlbEFTVCA9IGxvd0xldmVsQVNULnJlc29sdmUoKmJ1aWxkT2Zm
c2V0c01hcChsb3dMZXZlbEFTVCwgb2Zmc2V0c0xpc3QpKQorICAgICAgICAgICAgZW1pdENvZGVJ
bkNvbmZpZ3VyYXRpb24oY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIGJhY2tlbmQpIHsK
KyAgICAgICAgICAgICAgICAkYXNtLmluQXNtIHsKKyAgICAgICAgICAgICAgICAgICAgbG93TGV2
ZWxBU1QubG93ZXIoYmFja2VuZCkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9Cit9CisKKyRzdGRlcnIucHV0cyAib2ZmbGluZWFzbTogQXNzZW1ibHkg
ZmlsZSAje291dHB1dEZsbm19IHN1Y2Nlc3NmdWxseSBnZW5lcmF0ZWQuIgorCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9hc3QucmIKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vYXN0LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDEwMzkgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyMKKyMgQmFz
ZSB1dGlsaXR5IHR5cGVzIGZvciB0aGUgQVNULgorIworCisjIFZhbGlkIG1ldGhvZHMgZm9yIE5v
ZGU6CisjCisjIG5vZGUuY2hpbGRyZW4gLT4gUmV0dXJucyBhbiBhcnJheSBvZiBpbW1lZGlhdGUg
Y2hpbGRyZW4uCisjCisjIG5vZGUuZGVzY2VuZGVudHMgLT4gUmV0dXJucyBhbiBhcnJheSBvZiBh
bGwgc3RyaWN0IGRlc2NlbmRhbnRzIChjaGlsZHJlbgorIyAgICAgYW5kIGNoaWxkcmVuIG9mIGNo
aWxkcmVuLCB0cmFuc2l0aXZlbHkpLgorIworIyBub2RlLmZsYXR0ZW4gLT4gUmV0dXJucyBhbiBh
cnJheSBjb250YWluaW5nIHRoZSBzdHJpY3QgZGVzY2VuZGFudHMgYW5kCisjICAgICB0aGUgbm9k
ZSBpdHNlbGYuCisjCisjIG5vZGUuZmlsdGVyKHR5cGUpIC0+IFJldHVybnMgYW4gYXJyYXkgY29u
dGFpbmluZyB0aG9zZSBlbGVtZW50cyBpbgorIyAgICAgbm9kZS5mbGF0dGVuIHRoYXQgYXJlIG9m
IHRoZSBnaXZlbiB0eXBlIChpc19hPyB0eXBlIHJldHVybnMgdHJ1ZSkuCisjCisjIG5vZGUubWFw
Q2hpbGRyZW57fHZ8IC4uLn0gLT4gUmV0dXJucyBhIG5ldyBub2RlIHdpdGggYWxsIGNoaWxkcmVu
CisjICAgICByZXBsYWNlZCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJsb2NrLgorIworIyBFeGFt
cGxlczoKKyMKKyMgbm9kZS5maWx0ZXIoU2V0dGluZykudW5pcSAtPiBSZXR1cm5zIGFsbCBvZiB0
aGUgc2V0dGluZ3MgdGhhdCB0aGUgQVNUJ3MKKyMgICAgIElmVGhlbkVsc2UgYmxvY2tzIGRlcGVu
ZCBvbi4KKyMKKyMgbm9kZS5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxIC0+IFJldHVybnMgYWxs
IG9mIHRoZSBzdHJ1Y3R1cmUgb2Zmc2V0cworIyAgICAgdGhhdCB0aGUgQVNUIGRlcGVuZHMgb24u
CisKK2NsYXNzIE5vZGUKKyAgICBhdHRyX3JlYWRlciA6Y29kZU9yaWdpbgorICAgIAorICAgIGRl
ZiBpbml0aWFsaXplKGNvZGVPcmlnaW4pCisgICAgICAgIEBjb2RlT3JpZ2luID0gY29kZU9yaWdp
bgorICAgIGVuZAorICAgIAorICAgIGRlZiBjb2RlT3JpZ2luU3RyaW5nCisgICAgICAgICJsaW5l
IG51bWJlciAje0Bjb2RlT3JpZ2lufSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZGVzY2VuZGFu
dHMKKyAgICAgICAgY2hpbGRyZW4uY29sbGVjdHt8dnwgdi5mbGF0dGVufS5mbGF0dGVuCisgICAg
ZW5kCisgICAgCisgICAgZGVmIGZsYXR0ZW4KKyAgICAgICAgW3NlbGZdICsgZGVzY2VuZGFudHMK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgZmlsdGVyKHR5cGUpCisgICAgICAgIGZsYXR0ZW4uc2Vs
ZWN0e3x2fCB2LmlzX2E/IHR5cGV9CisgICAgZW5kCitlbmQKKworY2xhc3MgTm9DaGlsZHJlbiA8
IE5vZGUKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luKQorICAgICAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBbXQorICAg
IGVuZAorICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbgorICAgICAgICBzZWxmCisgICAgZW5kCitl
bmQKKworY2xhc3MgU3RydWN0T2Zmc2V0S2V5CisgICAgYXR0cl9yZWFkZXIgOnN0cnVjdCwgOmZp
ZWxkCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoc3RydWN0LCBmaWVsZCkKKyAgICAgICAgQHN0
cnVjdCA9IHN0cnVjdAorICAgICAgICBAZmllbGQgPSBmaWVsZAorICAgIGVuZAorICAgIAorICAg
IGRlZiBoYXNoCisgICAgICAgIEBzdHJ1Y3QuaGFzaCArIEBmaWVsZC5oYXNoICogMworICAgIGVu
ZAorICAgIAorICAgIGRlZiBlcWw/KG90aGVyKQorICAgICAgICBAc3RydWN0ID09IG90aGVyLnN0
cnVjdCBhbmQgQGZpZWxkID09IG90aGVyLmZpZWxkCisgICAgZW5kCitlbmQKKworIworIyBBU1Qg
bm9kZXMuCisjCisKK2NsYXNzIFN0cnVjdE9mZnNldCA8IE5vQ2hpbGRyZW4KKyAgICBhdHRyX3Jl
YWRlciA6c3RydWN0LCA6ZmllbGQKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2lu
LCBzdHJ1Y3QsIGZpZWxkKQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAc3Ry
dWN0ID0gc3RydWN0CisgICAgICAgIEBmaWVsZCA9IGZpZWxkCisgICAgZW5kCisgICAgCisgICAg
QEBtYXBwaW5nID0ge30KKyAgICAKKyAgICBkZWYgc2VsZi5mb3JGaWVsZChjb2RlT3JpZ2luLCBz
dHJ1Y3QsIGZpZWxkKQorICAgICAgICBrZXkgPSBTdHJ1Y3RPZmZzZXRLZXkubmV3KHN0cnVjdCwg
ZmllbGQpCisgICAgICAgIAorICAgICAgICB1bmxlc3MgQEBtYXBwaW5nW2tleV0KKyAgICAgICAg
ICAgIEBAbWFwcGluZ1trZXldID0gU3RydWN0T2Zmc2V0Lm5ldyhjb2RlT3JpZ2luLCBzdHJ1Y3Qs
IGZpZWxkKQorICAgICAgICBlbmQKKyAgICAgICAgQEBtYXBwaW5nW2tleV0KKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgZHVtcAorICAgICAgICAiI3tzdHJ1Y3R9Ojoje2ZpZWxkfSIKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgPD0+KG90aGVyKQorICAgICAgICBpZiBAc3RydWN0ICE9IG90aGVyLnN0
cnVjdAorICAgICAgICAgICAgcmV0dXJuIEBzdHJ1Y3QgPD0+IG90aGVyLnN0cnVjdAorICAgICAg
ICBlbmQKKyAgICAgICAgQGZpZWxkIDw9PiBvdGhlci5maWVsZAorICAgIGVuZAorICAgIAorICAg
IGRlZiBhZGRyZXNzPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBsYWJl
bD8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaW1tZWRpYXRlPworICAg
ICAgICB0cnVlCisgICAgZW5kCisgICAgCisgICAgZGVmIHJlZ2lzdGVyPworICAgICAgICBmYWxz
ZQorICAgIGVuZAorZW5kCisKK2NsYXNzIFNpemVvZiA8IE5vQ2hpbGRyZW4KKyAgICBhdHRyX3Jl
YWRlciA6c3RydWN0CisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RydWN0
KQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAc3RydWN0ID0gc3RydWN0Cisg
ICAgZW5kCisgICAgCisgICAgQEBtYXBwaW5nID0ge30KKyAgICAKKyAgICBkZWYgc2VsZi5mb3JO
YW1lKGNvZGVPcmlnaW4sIHN0cnVjdCkKKyAgICAgICAgdW5sZXNzIEBAbWFwcGluZ1tzdHJ1Y3Rd
CisgICAgICAgICAgICBAQG1hcHBpbmdbc3RydWN0XSA9IFNpemVvZi5uZXcoY29kZU9yaWdpbiwg
c3RydWN0KQorICAgICAgICBlbmQKKyAgICAgICAgQEBtYXBwaW5nW3N0cnVjdF0KKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICAic2l6ZW9mICN7QHN0cnVjdH0iCisgICAgZW5k
CisgICAgCisgICAgZGVmIDw9PihvdGhlcikKKyAgICAgICAgQHN0cnVjdCA8PT4gb3RoZXIuc3Ry
dWN0CisgICAgZW5kCisgICAgCisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAg
ZW5kCisgICAgCisgICAgZGVmIGxhYmVsPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAor
ICAgIGRlZiBpbW1lZGlhdGU/CisgICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
cmVnaXN0ZXI/CisgICAgICAgIGZhbHNlCisgICAgZW5kCitlbmQKKworY2xhc3MgSW1tZWRpYXRl
IDwgTm9DaGlsZHJlbgorICAgIGF0dHJfcmVhZGVyIDp2YWx1ZQorICAgIAorICAgIGRlZiBpbml0
aWFsaXplKGNvZGVPcmlnaW4sIHZhbHVlKQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
ICAgICBAdmFsdWUgPSB2YWx1ZQorICAgICAgICByYWlzZSAiQmFkIGltbWVkaWF0ZSB2YWx1ZSAj
e3ZhbHVlLmluc3BlY3R9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iIHVubGVzcyB2YWx1ZS5pc19h
PyBJbnRlZ2VyCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIiN7dmFsdWV9
IgorICAgIGVuZAorICAgIAorICAgIGRlZiA9PShvdGhlcikKKyAgICAgICAgb3RoZXIuaXNfYT8g
SW1tZWRpYXRlIGFuZCBvdGhlci52YWx1ZSA9PSBAdmFsdWUKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/
CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAg
ICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAgICAgICAgZmFsc2UK
KyAgICBlbmQKK2VuZAorCitjbGFzcyBBZGRJbW1lZGlhdGVzIDwgTm9kZQorICAgIGF0dHJfcmVh
ZGVyIDpsZWZ0LCA6cmlnaHQKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBs
ZWZ0LCByaWdodCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQGxlZnQgPSBs
ZWZ0CisgICAgICAgIEByaWdodCA9IHJpZ2h0CisgICAgZW5kCisgICAgCisgICAgZGVmIGNoaWxk
cmVuCisgICAgICAgIFtAbGVmdCwgQHJpZ2h0XQorICAgIGVuZAorICAgIAorICAgIGRlZiBtYXBD
aGlsZHJlbgorICAgICAgICBBZGRJbW1lZGlhdGVzLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxl
ZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAg
ICAiKCN7bGVmdC5kdW1wfSArICN7cmlnaHQuZHVtcH0pIgorICAgIGVuZAorICAgIAorICAgIGRl
ZiBhZGRyZXNzPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBsYWJlbD8K
KyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaW1tZWRpYXRlPworICAgICAg
ICB0cnVlCisgICAgZW5kCisgICAgCisgICAgZGVmIHJlZ2lzdGVyPworICAgICAgICBmYWxzZQor
ICAgIGVuZAorZW5kCisKK2NsYXNzIFN1YkltbWVkaWF0ZXMgPCBOb2RlCisgICAgYXR0cl9yZWFk
ZXIgOmxlZnQsIDpyaWdodAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxl
ZnQsIHJpZ2h0KQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBAbGVmdCA9IGxl
ZnQKKyAgICAgICAgQHJpZ2h0ID0gcmlnaHQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2hpbGRy
ZW4KKyAgICAgICAgW0BsZWZ0LCBAcmlnaHRdCisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENo
aWxkcmVuCisgICAgICAgIFN1YkltbWVkaWF0ZXMubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAbGVm
dCksICh5aWVsZCBAcmlnaHQpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAg
ICIoI3tsZWZ0LmR1bXB9IC0gI3tyaWdodC5kdW1wfSkiCisgICAgZW5kCisgICAgCisgICAgZGVm
IGFkZHJlc3M/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGxhYmVsPwor
ICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBpbW1lZGlhdGU/CisgICAgICAg
IHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVnaXN0ZXI/CisgICAgICAgIGZhbHNlCisg
ICAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcyA8IE5vZGUKKyAgICBhdHRyX3JlYWRl
ciA6bGVmdCwgOnJpZ2h0CisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVm
dCwgcmlnaHQpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBsZWZ0ID0gbGVm
dAorICAgICAgICBAcmlnaHQgPSByaWdodAorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJl
bgorICAgICAgICBbQGxlZnQsIEByaWdodF0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hp
bGRyZW4KKyAgICAgICAgTXVsSW1tZWRpYXRlcy5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBsZWZ0
KSwgKHlpZWxkIEByaWdodCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAg
Iigje2xlZnQuZHVtcH0gKiAje3JpZ2h0LmR1bXB9KSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
YWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbGFiZWw/Cisg
ICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAg
dHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAgICAgICAgZmFsc2UKKyAg
ICBlbmQKK2VuZAorCitjbGFzcyBOZWdJbW1lZGlhdGUgPCBOb2RlCisgICAgYXR0cl9yZWFkZXIg
OmNoaWxkCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisgICAg
ICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBjaGlsZCA9IGNoaWxkCisgICAgZW5kCisg
ICAgCisgICAgZGVmIGNoaWxkcmVuCisgICAgICAgIFtAY2hpbGRdCisgICAgZW5kCisgICAgCisg
ICAgZGVmIG1hcENoaWxkcmVuCisgICAgICAgIE5lZ0ltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwg
KHlpZWxkIEBjaGlsZCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIigt
I3tAY2hpbGQuZHVtcH0pIgorICAgIGVuZAorICAgIAorICAgIGRlZiBhZGRyZXNzPworICAgICAg
ICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiBsYWJlbD8KKyAgICAgICAgZmFsc2UKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgaW1tZWRpYXRlPworICAgICAgICB0cnVlCisgICAgZW5kCisg
ICAgCisgICAgZGVmIHJlZ2lzdGVyPworICAgICAgICBmYWxzZQorICAgIGVuZAorZW5kCisKK2Ns
YXNzIFJlZ2lzdGVySUQgPCBOb0NoaWxkcmVuCisgICAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgICAK
KyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgICAgICBAbmFtZSA9IG5hbWUKKyAgICBlbmQKKyAgICAKKyAgICBAQG1hcHBp
bmcgPSB7fQorICAgIAorICAgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAg
ICAgICAgdW5sZXNzIEBAbWFwcGluZ1tuYW1lXQorICAgICAgICAgICAgQEBtYXBwaW5nW25hbWVd
ID0gUmVnaXN0ZXJJRC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZW5kCisgICAgICAg
IEBAbWFwcGluZ1tuYW1lXQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgIG5h
bWUKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBl
bmQKKyAgICAKKyAgICBkZWYgbGFiZWw/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisg
ICAgZGVmIGltbWVkaWF0ZT8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
cmVnaXN0ZXI/CisgICAgICAgIHRydWUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBGUFJlZ2lzdGVy
SUQgPCBOb0NoaWxkcmVuCisgICAgYXR0cl9yZWFkZXIgOm5hbWUKKyAgICAKKyAgICBkZWYgaW5p
dGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
ICAgICBAbmFtZSA9IG5hbWUKKyAgICBlbmQKKyAgICAKKyAgICBAQG1hcHBpbmcgPSB7fQorICAg
IAorICAgIGRlZiBzZWxmLmZvck5hbWUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgdW5sZXNz
IEBAbWFwcGluZ1tuYW1lXQorICAgICAgICAgICAgQEBtYXBwaW5nW25hbWVdID0gRlBSZWdpc3Rl
cklELm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbmQKKyAgICAgICAgQEBtYXBwaW5n
W25hbWVdCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgbmFtZQorICAgIGVu
ZAorICAgIAorICAgIGRlZiBhZGRyZXNzPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAor
ICAgIGRlZiBsYWJlbD8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaW1t
ZWRpYXRlPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiByZWdpc3Rlcj8K
KyAgICAgICAgdHJ1ZQorICAgIGVuZAorZW5kCisKK2NsYXNzIFZhcmlhYmxlIDwgTm9DaGlsZHJl
bgorICAgIGF0dHJfcmVhZGVyIDpuYW1lCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbiwgbmFtZSkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQG5hbWUgPSBu
YW1lCisgICAgZW5kCisgICAgCisgICAgQEBtYXBwaW5nID0ge30KKyAgICAKKyAgICBkZWYgc2Vs
Zi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIHVubGVzcyBAQG1hcHBpbmdbbmFt
ZV0KKyAgICAgICAgICAgIEBAbWFwcGluZ1tuYW1lXSA9IFZhcmlhYmxlLm5ldyhjb2RlT3JpZ2lu
LCBuYW1lKQorICAgICAgICBlbmQKKyAgICAgICAgQEBtYXBwaW5nW25hbWVdCisgICAgZW5kCisg
ICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgbmFtZQorICAgIGVuZAorZW5kCisKK2NsYXNzIEFk
ZHJlc3MgPCBOb2RlCisgICAgYXR0cl9yZWFkZXIgOmJhc2UsIDpvZmZzZXQKKyAgICAKKyAgICBk
ZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBiYXNlLCBvZmZzZXQpCisgICAgICAgIHN1cGVyKGNv
ZGVPcmlnaW4pCisgICAgICAgIEBiYXNlID0gYmFzZQorICAgICAgICBAb2Zmc2V0ID0gb2Zmc2V0
CisgICAgICAgIHJhaXNlICJCYWQgYmFzZSBmb3IgYWRkcmVzcyAje2Jhc2UuaW5zcGVjdH0gYXQg
I3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIGJhc2UuaXNfYT8gVmFyaWFibGUgb3IgYmFzZS5y
ZWdpc3Rlcj8KKyAgICAgICAgcmFpc2UgIkJhZCBvZmZzZXQgZm9yIGFkZHJlc3MgI3tvZmZzZXQu
aW5zcGVjdH0gYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIG9mZnNldC5pc19hPyBWYXJp
YWJsZSBvciBvZmZzZXQuaW1tZWRpYXRlPworICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJl
bgorICAgICAgICBbQGJhc2UsIEBvZmZzZXRdCisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENo
aWxkcmVuCisgICAgICAgIEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAYmFzZSksICh5
aWVsZCBAb2Zmc2V0KSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICAiI3tv
ZmZzZXQuZHVtcH1bI3tiYXNlLmR1bXB9XSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgYWRkcmVz
cz8KKyAgICAgICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiBsYWJlbD8KKyAgICAgICAg
ZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaW1tZWRpYXRlPworICAgICAgICBmYWxzZQor
ICAgIGVuZAorICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQK
K2VuZAorCitjbGFzcyBCYXNlSW5kZXggPCBOb2RlCisgICAgYXR0cl9yZWFkZXIgOmJhc2UsIDpp
bmRleCwgOnNjYWxlLCA6b2Zmc2V0CisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdp
biwgYmFzZSwgaW5kZXgsIHNjYWxlLCBvZmZzZXQpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4p
CisgICAgICAgIEBiYXNlID0gYmFzZQorICAgICAgICBAaW5kZXggPSBpbmRleAorICAgICAgICBA
c2NhbGUgPSBzY2FsZQorICAgICAgICByYWlzZSB1bmxlc3MgWzEsIDIsIDQsIDhdLm1lbWJlcj8g
QHNjYWxlCisgICAgICAgIEBvZmZzZXQgPSBvZmZzZXQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
c2NhbGVTaGlmdAorICAgICAgICBjYXNlIHNjYWxlCisgICAgICAgIHdoZW4gMQorICAgICAgICAg
ICAgMAorICAgICAgICB3aGVuIDIKKyAgICAgICAgICAgIDEKKyAgICAgICAgd2hlbiA0CisgICAg
ICAgICAgICAyCisgICAgICAgIHdoZW4gOAorICAgICAgICAgICAgMworICAgICAgICBlbHNlCisg
ICAgICAgICAgICByYWlzZSAiQmFkIHNjYWxlIGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAg
ICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgorICAgICAgICBbQGJhc2Us
IEBpbmRleCwgQG9mZnNldF0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hpbGRyZW4KKyAg
ICAgICAgQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGJhc2UpLCAoeWllbGQgQGlu
ZGV4KSwgQHNjYWxlLCAoeWllbGQgQG9mZnNldCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1
bXAKKyAgICAgICAgIiN7b2Zmc2V0LmR1bXB9WyN7YmFzZS5kdW1wfSwgI3tpbmRleC5kdW1wfSwg
I3tzY2FsZX1dIgorICAgIGVuZAorICAgIAorICAgIGRlZiBhZGRyZXNzPworICAgICAgICB0cnVl
CisgICAgZW5kCisgICAgCisgICAgZGVmIGxhYmVsPworICAgICAgICBmYWxzZQorICAgIGVuZAor
ICAgIAorICAgIGRlZiBpbW1lZGlhdGU/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisg
ICAgZGVmIHJlZ2lzdGVyPworICAgICAgICBmYWxzZQorICAgIGVuZAorZW5kCisKK2NsYXNzIEFi
c29sdXRlQWRkcmVzcyA8IE5vQ2hpbGRyZW4KKyAgICBhdHRyX3JlYWRlciA6YWRkcmVzcworICAg
IAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGFkZHJlc3MpCisgICAgICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgICAgIEBhZGRyZXNzID0gYWRkcmVzcworICAgIGVuZAorICAgIAor
ICAgIGRlZiBkdW1wCisgICAgICAgICIje2FkZHJlc3MuZHVtcH1bXSIKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiBs
YWJlbD8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaW1tZWRpYXRlPwor
ICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAorICAgIGRlZiByZWdpc3Rlcj8KKyAgICAgICAg
ZmFsc2UKKyAgICBlbmQKK2VuZAorCitjbGFzcyBJbnN0cnVjdGlvbiA8IE5vZGUKKyAgICBhdHRy
X3JlYWRlciA6b3Bjb2RlLCA6b3BlcmFuZHMKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2Rl
T3JpZ2luLCBvcGNvZGUsIG9wZXJhbmRzKQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAg
ICAgICBAb3Bjb2RlID0gb3Bjb2RlCisgICAgICAgIEBvcGVyYW5kcyA9IG9wZXJhbmRzCisgICAg
ZW5kCisgICAgCisgICAgZGVmIGNoaWxkcmVuCisgICAgICAgIG9wZXJhbmRzCisgICAgZW5kCisg
ICAgCisgICAgZGVmIG1hcENoaWxkcmVuKCZwcm9jKQorICAgICAgICBJbnN0cnVjdGlvbi5uZXco
Y29kZU9yaWdpbiwgQG9wY29kZSwgQG9wZXJhbmRzLm1hcCgmcHJvYykpCisgICAgZW5kCisgICAg
CisgICAgZGVmIGR1bXAKKyAgICAgICAgIlx0IiArIG9wY29kZS50b19zICsgIiAiICsgb3BlcmFu
ZHMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIsICIpCisgICAgZW5kCitlbmQKKworY2xhc3Mg
RXJyb3IgPCBOb0NoaWxkcmVuCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbikKKyAgICAg
ICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAg
ICAiXHRlcnJvciIKKyAgICBlbmQKK2VuZAorCitjbGFzcyBDb25zdERlY2wgPCBOb2RlCisgICAg
YXR0cl9yZWFkZXIgOnZhcmlhYmxlLCA6dmFsdWUKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShj
b2RlT3JpZ2luLCB2YXJpYWJsZSwgdmFsdWUpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgICAgIEB2YXJpYWJsZSA9IHZhcmlhYmxlCisgICAgICAgIEB2YWx1ZSA9IHZhbHVlCisgICAg
ZW5kCisgICAgCisgICAgZGVmIGNoaWxkcmVuCisgICAgICAgIFtAdmFyaWFibGUsIEB2YWx1ZV0K
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hpbGRyZW4KKyAgICAgICAgQ29uc3REZWNsLm5l
dyhjb2RlT3JpZ2luLCAoeWllbGQgQHZhcmlhYmxlKSwgKHlpZWxkIEB2YWx1ZSkpCisgICAgZW5k
CisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgImNvbnN0ICN7QHZhcmlhYmxlLmR1bXB9ID0g
I3tAdmFsdWUuZHVtcH0iCisgICAgZW5kCitlbmQKKworJGxhYmVsTWFwcGluZyA9IHt9CisKK2Ns
YXNzIExhYmVsIDwgTm9DaGlsZHJlbgorICAgIGF0dHJfcmVhZGVyIDpuYW1lCisgICAgCisgICAg
ZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdp
bikKKyAgICAgICAgQG5hbWUgPSBuYW1lCisgICAgZW5kCisgICAgCisgICAgZGVmIHNlbGYuZm9y
TmFtZShjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBpZiAkbGFiZWxNYXBwaW5nW25hbWVdCisg
ICAgICAgICAgICByYWlzZSAiTGFiZWwgbmFtZSBjb2xsaXNpb246ICN7bmFtZX0iIHVubGVzcyAk
bGFiZWxNYXBwaW5nW25hbWVdLmlzX2E/IExhYmVsCisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICRsYWJlbE1hcHBpbmdbbmFtZV0gPSBMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAg
ICAgZW5kCisgICAgICAgICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgZHVtcAorICAgICAgICAiI3tuYW1lfToiCisgICAgZW5kCitlbmQKKworY2xhc3MgTG9jYWxM
YWJlbCA8IE5vQ2hpbGRyZW4KKyAgICBhdHRyX3JlYWRlciA6bmFtZQorICAgIAorICAgIGRlZiBp
bml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisg
ICAgICAgIEBuYW1lID0gbmFtZQorICAgIGVuZAorCisgICAgQEB1bmlxdWVOYW1lQ291bnRlciA9
IDAKKyAgICAKKyAgICBkZWYgc2VsZi5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAg
IGlmICRsYWJlbE1hcHBpbmdbbmFtZV0KKyAgICAgICAgICAgIHJhaXNlICJMYWJlbCBuYW1lIGNv
bGxpc2lvbjogI3tuYW1lfSIgdW5sZXNzICRsYWJlbE1hcHBpbmdbbmFtZV0uaXNfYT8gTG9jYWxM
YWJlbAorICAgICAgICBlbHNlCisgICAgICAgICAgICAkbGFiZWxNYXBwaW5nW25hbWVdID0gTG9j
YWxMYWJlbC5uZXcoY29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgZW5kCisgICAgICAgICRsYWJl
bE1hcHBpbmdbbmFtZV0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc2VsZi51bmlxdWUoY29tbWVu
dCkKKyAgICAgICAgbmV3TmFtZSA9ICJfI3tjb21tZW50fSIKKyAgICAgICAgaWYgJGxhYmVsTWFw
cGluZ1tuZXdOYW1lXQorICAgICAgICAgICAgd2hpbGUgJGxhYmVsTWFwcGluZ1tuZXdOYW1lID0g
Il8je0BAdW5pcXVlTmFtZUNvdW50ZXJ9XyN7Y29tbWVudH0iXQorICAgICAgICAgICAgICAgIEBA
dW5pcXVlTmFtZUNvdW50ZXIgKz0gMQorICAgICAgICAgICAgZW5kCisgICAgICAgIGVuZAorICAg
ICAgICBmb3JOYW1lKG5pbCwgbmV3TmFtZSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY2xlYW5O
YW1lCisgICAgICAgIGlmIG5hbWUgPX4gL15cLi8KKyAgICAgICAgICAgICJfIiArIG5hbWVbMS4u
LTFdCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5hbWUKKyAgICAgICAgZW5kCisgICAgZW5k
CisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgIiN7bmFtZX06IgorICAgIGVuZAorZW5kCisK
K2NsYXNzIExhYmVsUmVmZXJlbmNlIDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAg
IAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgICAgICBzdXBlcihj
b2RlT3JpZ2luKQorICAgICAgICBAbGFiZWwgPSBsYWJlbAorICAgIGVuZAorICAgIAorICAgIGRl
ZiBjaGlsZHJlbgorICAgICAgICBbQGxhYmVsXQorICAgIGVuZAorICAgIAorICAgIGRlZiBtYXBD
aGlsZHJlbgorICAgICAgICBMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBs
YWJlbCkpCisgICAgZW5kCisgICAgCisgICAgZGVmIG5hbWUKKyAgICAgICAgbGFiZWwubmFtZQor
ICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAgIGxhYmVsLm5hbWUKKyAgICBlbmQK
KyAgICAKKyAgICBkZWYgYWRkcmVzcz8KKyAgICAgICAgZmFsc2UKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgbGFiZWw/CisgICAgICAgIHRydWUKKyAgICBlbmQKK2VuZAorCitjbGFzcyBMb2NhbExh
YmVsUmVmZXJlbmNlIDwgTm9DaGlsZHJlbgorICAgIGF0dHJfcmVhZGVyIDpsYWJlbAorICAgIAor
ICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIGxhYmVsKQorICAgICAgICBzdXBlcihjb2Rl
T3JpZ2luKQorICAgICAgICBAbGFiZWwgPSBsYWJlbAorICAgIGVuZAorICAgIAorICAgIGRlZiBj
aGlsZHJlbgorICAgICAgICBbQGxhYmVsXQorICAgIGVuZAorICAgIAorICAgIGRlZiBtYXBDaGls
ZHJlbgorICAgICAgICBMb2NhbExhYmVsUmVmZXJlbmNlLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQg
QGxhYmVsKSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbmFtZQorICAgICAgICBsYWJlbC5uYW1l
CisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgbGFiZWwubmFtZQorICAgIGVu
ZAorICAgIAorICAgIGRlZiBhZGRyZXNzPworICAgICAgICBmYWxzZQorICAgIGVuZAorICAgIAor
ICAgIGRlZiBsYWJlbD8KKyAgICAgICAgdHJ1ZQorICAgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVl
bmNlIDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpsaXN0CisgICAgCisgICAgZGVmIGluaXRpYWxp
emUoY29kZU9yaWdpbiwgbGlzdCkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAg
QGxpc3QgPSBsaXN0CisgICAgZW5kCisgICAgCisgICAgZGVmIGNoaWxkcmVuCisgICAgICAgIGxp
c3QKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hpbGRyZW4oJnByb2MpCisgICAgICAgIFNl
cXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBAbGlzdC5tYXAoJnByb2MpKQorICAgIGVuZAorICAgIAor
ICAgIGRlZiBkdW1wCisgICAgICAgIGxpc3QuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCJcbiIp
CisgICAgZW5kCitlbmQKKworY2xhc3MgVHJ1ZSA8IE5vQ2hpbGRyZW4KKyAgICBkZWYgaW5pdGlh
bGl6ZQorICAgICAgICBzdXBlcihuaWwpCisgICAgZW5kCisgICAgCisgICAgQEBpbnN0YW5jZSA9
IFRydWUubmV3CisgICAgCisgICAgZGVmIHNlbGYuaW5zdGFuY2UKKyAgICAgICAgQEBpbnN0YW5j
ZQorICAgIGVuZAorICAgIAorICAgIGRlZiB2YWx1ZQorICAgICAgICB0cnVlCisgICAgZW5kCisg
ICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgInRydWUiCisgICAgZW5kCitlbmQKKworY2xhc3Mg
RmFsc2UgPCBOb0NoaWxkcmVuCisgICAgZGVmIGluaXRpYWxpemUKKyAgICAgICAgc3VwZXIobmls
KQorICAgIGVuZAorICAgIAorICAgIEBAaW5zdGFuY2UgPSBGYWxzZS5uZXcKKyAgICAKKyAgICBk
ZWYgc2VsZi5pbnN0YW5jZQorICAgICAgICBAQGluc3RhbmNlCisgICAgZW5kCisgICAgCisgICAg
ZGVmIHZhbHVlCisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAg
ICAgICAgImZhbHNlIgorICAgIGVuZAorZW5kCisKK2NsYXNzIFRydWVDbGFzcworICAgIGRlZiBh
c05vZGUKKyAgICAgICAgVHJ1ZS5pbnN0YW5jZQorICAgIGVuZAorZW5kCisKK2NsYXNzIEZhbHNl
Q2xhc3MKKyAgICBkZWYgYXNOb2RlCisgICAgICAgIEZhbHNlLmluc3RhbmNlCisgICAgZW5kCitl
bmQKKworY2xhc3MgU2V0dGluZyA8IE5vQ2hpbGRyZW4KKyAgICBhdHRyX3JlYWRlciA6bmFtZQor
ICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAgIHN1cGVy
KGNvZGVPcmlnaW4pCisgICAgICAgIEBuYW1lID0gbmFtZQorICAgIGVuZAorICAgIAorICAgIEBA
bWFwcGluZyA9IHt9CisgICAgCisgICAgZGVmIHNlbGYuZm9yTmFtZShjb2RlT3JpZ2luLCBuYW1l
KQorICAgICAgICB1bmxlc3MgQEBtYXBwaW5nW25hbWVdCisgICAgICAgICAgICBAQG1hcHBpbmdb
bmFtZV0gPSBTZXR0aW5nLm5ldyhjb2RlT3JpZ2luLCBuYW1lKQorICAgICAgICBlbmQKKyAgICAg
ICAgQEBtYXBwaW5nW25hbWVdCisgICAgZW5kCisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAg
bmFtZQorICAgIGVuZAorZW5kCisKK2NsYXNzIEFuZCA8IE5vZGUKKyAgICBhdHRyX3JlYWRlciA6
bGVmdCwgOnJpZ2h0CisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgbGVmdCwg
cmlnaHQpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAgICAgIEBsZWZ0ID0gbGVmdAor
ICAgICAgICBAcmlnaHQgPSByaWdodAorICAgIGVuZAorICAgIAorICAgIGRlZiBjaGlsZHJlbgor
ICAgICAgICBbQGxlZnQsIEByaWdodF0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hpbGRy
ZW4KKyAgICAgICAgQW5kLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxlZnQpLCAoeWllbGQgQHJp
Z2h0KSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICAiKCN7bGVmdC5kdW1w
fSBhbmQgI3tyaWdodC5kdW1wfSkiCisgICAgZW5kCitlbmQKKworY2xhc3MgT3IgPCBOb2RlCisg
ICAgYXR0cl9yZWFkZXIgOmxlZnQsIDpyaWdodAorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNv
ZGVPcmlnaW4sIGxlZnQsIHJpZ2h0KQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAg
ICBAbGVmdCA9IGxlZnQKKyAgICAgICAgQHJpZ2h0ID0gcmlnaHQKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgY2hpbGRyZW4KKyAgICAgICAgW0BsZWZ0LCBAcmlnaHRdCisgICAgZW5kCisgICAgCisg
ICAgZGVmIG1hcENoaWxkcmVuCisgICAgICAgIE9yLm5ldyhjb2RlT3JpZ2luLCAoeWllbGQgQGxl
ZnQpLCAoeWllbGQgQHJpZ2h0KSkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAg
ICAiKCN7bGVmdC5kdW1wfSBvciAje3JpZ2h0LmR1bXB9KSIKKyAgICBlbmQKK2VuZAorCitjbGFz
cyBOb3QgPCBOb2RlCisgICAgYXR0cl9yZWFkZXIgOmNoaWxkCisgICAgCisgICAgZGVmIGluaXRp
YWxpemUoY29kZU9yaWdpbiwgY2hpbGQpCisgICAgICAgIHN1cGVyKGNvZGVPcmlnaW4pCisgICAg
ICAgIEBjaGlsZCA9IGNoaWxkCisgICAgZW5kCisgICAgCisgICAgZGVmIGNoaWxkcmVuCisgICAg
ICAgIFtAbGVmdCwgQHJpZ2h0XQorICAgIGVuZAorICAgIAorICAgIGRlZiBtYXBDaGlsZHJlbgor
ICAgICAgICBOb3QubmV3KGNvZGVPcmlnaW4sICh5aWVsZCBAY2hpbGQpKQorICAgIGVuZAorICAg
IAorICAgIGRlZiBkdW1wCisgICAgICAgICIobm90ICN7Y2hpbGQuZHVtcH0pIgorICAgIGVuZAor
ZW5kCisKK2NsYXNzIFNraXAgPCBOb0NoaWxkcmVuCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9y
aWdpbikKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
ZHVtcAorICAgICAgICAiXHRza2lwIgorICAgIGVuZAorZW5kCisKK2NsYXNzIElmVGhlbkVsc2Ug
PCBOb2RlCisgICAgYXR0cl9yZWFkZXIgOnByZWRpY2F0ZSwgOnRoZW5DYXNlCisgICAgYXR0cl9h
Y2Nlc3NvciA6ZWxzZUNhc2UKKyAgICAKKyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBw
cmVkaWNhdGUsIHRoZW5DYXNlKQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBA
cHJlZGljYXRlID0gcHJlZGljYXRlCisgICAgICAgIEB0aGVuQ2FzZSA9IHRoZW5DYXNlCisgICAg
ICAgIEBlbHNlQ2FzZSA9IFNraXAubmV3KGNvZGVPcmlnaW4pCisgICAgZW5kCisgICAgCisgICAg
ZGVmIGNoaWxkcmVuCisgICAgICAgIGlmIEBlbHNlQ2FzZQorICAgICAgICAgICAgW0BwcmVkaWNh
dGUsIEB0aGVuQ2FzZSwgQGVsc2VDYXNlXQorICAgICAgICBlbHNlCisgICAgICAgICAgICBbQHBy
ZWRpY2F0ZSwgQHRoZW5DYXNlXQorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYg
bWFwQ2hpbGRyZW4KKyAgICAgICAgSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgKHlpZWxkIEBw
cmVkaWNhdGUpLCAoeWllbGQgQHRoZW5DYXNlKSwgKHlpZWxkIEBlbHNlQ2FzZSkpCisgICAgZW5k
CisgICAgCisgICAgZGVmIGR1bXAKKyAgICAgICAgImlmICN7cHJlZGljYXRlLmR1bXB9XG4iICsg
dGhlbkNhc2UuZHVtcCArICJcbmVsc2VcbiIgKyBlbHNlQ2FzZS5kdW1wICsgIlxuZW5kIgorICAg
IGVuZAorZW5kCisKK2NsYXNzIE1hY3JvIDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpuYW1lLCA6
dmFyaWFibGVzLCA6Ym9keQorICAgIAorICAgIGRlZiBpbml0aWFsaXplKGNvZGVPcmlnaW4sIG5h
bWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICAgICAgc3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAg
QG5hbWUgPSBuYW1lCisgICAgICAgIEB2YXJpYWJsZXMgPSB2YXJpYWJsZXMKKyAgICAgICAgQGJv
ZHkgPSBib2R5CisgICAgZW5kCisgICAgCisgICAgZGVmIGNoaWxkcmVuCisgICAgICAgIEB2YXJp
YWJsZXMgKyBbQGJvZHldCisgICAgZW5kCisgICAgCisgICAgZGVmIG1hcENoaWxkcmVuCisgICAg
ICAgIE1hY3JvLm5ldyhjb2RlT3JpZ2luLCBAbmFtZSwgQHZhcmlhYmxlcy5tYXB7fHZ8IHlpZWxk
IHZ9LCAoeWllbGQgQGJvZHkpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAg
ICJtYWNybyAje25hbWV9KCIgKyB2YXJpYWJsZXMuY29sbGVjdHt8dnwgdi5kdW1wfS5qb2luKCIs
ICIpICsgIilcbiIgKyBib2R5LmR1bXAgKyAiXG5lbmQiCisgICAgZW5kCitlbmQKKworY2xhc3Mg
TWFjcm9DYWxsIDwgTm9kZQorICAgIGF0dHJfcmVhZGVyIDpuYW1lLCA6b3BlcmFuZHMKKyAgICAK
KyAgICBkZWYgaW5pdGlhbGl6ZShjb2RlT3JpZ2luLCBuYW1lLCBvcGVyYW5kcykKKyAgICAgICAg
c3VwZXIoY29kZU9yaWdpbikKKyAgICAgICAgQG5hbWUgPSBuYW1lCisgICAgICAgIEBvcGVyYW5k
cyA9IG9wZXJhbmRzCisgICAgICAgIHJhaXNlIHVubGVzcyBAb3BlcmFuZHMKKyAgICAgICAgQG9w
ZXJhbmRzLmVhY2h7fHZ8IHJhaXNlIHVubGVzcyB2fQorICAgIGVuZAorICAgIAorICAgIGRlZiBj
aGlsZHJlbgorICAgICAgICBAb3BlcmFuZHMKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWFwQ2hp
bGRyZW4oJnByb2MpCisgICAgICAgIE1hY3JvQ2FsbC5uZXcoY29kZU9yaWdpbiwgQG5hbWUsIEBv
cGVyYW5kcy5tYXAoJnByb2MpKQorICAgIGVuZAorICAgIAorICAgIGRlZiBkdW1wCisgICAgICAg
ICJcdCN7bmFtZX0oIiArIG9wZXJhbmRzLmNvbGxlY3R7fHZ8IHYuZHVtcH0uam9pbigiLCAiKSAr
ICIpIgorICAgIGVuZAorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5l
YXNtL2JhY2tlbmRzLnJiCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZs
aW5lYXNtL2JhY2tlbmRzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vYmFja2VuZHMucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTYgQEAKKyMg
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorIyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
IyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKK3JlcXVpcmUgImFybXY3IgorcmVx
dWlyZSAiYXN0IgorcmVxdWlyZSAieDg2IgorCitCQUNLRU5EUyA9CisgICAgWworICAgICAiWDg2
IiwKKyAgICAgIkFSTXY3IgorICAgIF0KKworIyBLZWVwIHRoZSBzZXQgb2Ygd29ya2luZyBiYWNr
ZW5kcyBzZXBhcmF0ZSBmcm9tIHRoZSBzZXQgb2YgYmFja2VuZHMgdGhhdCBtaWdodCBiZQorIyBz
dXBwb3J0ZWQuIFRoaXMgaXMgZ3JlYXQgYmVjYXVzZSB0aGUgQkFDS0VORFMgbGlzdCBpcyBhbG1v
c3QgbGlrZSBhIHJlc2VydmVkCisjIHdvcmRzIGxpc3QsIGluIHRoYXQgaXQgY2F1c2VzIHNldHRp
bmdzIHJlc29sdXRpb24gdG8gdHJlYXQgdGhvc2Ugd29yZHMgc3BlY2lhbGx5LgorIyBIZW5jZSB0
aGlzIGxldHMgdXMgc2V0IGFzaWRlIHRoZSBuYW1lIG9mIGEgYmFja2VuZCB3ZSBtaWdodCB3YW50
IHRvIHN1cHBvcnQgaW4KKyMgdGhlIGZ1dHVyZSB3aGlsZSBub3QgYWN0dWFsbHkgc3VwcG9ydGlu
ZyB0aGUgYmFja2VuZCB5ZXQuCitXT1JLSU5HX0JBQ0tFTkRTID0KKyAgICBbCisgICAgICJYODYi
LAorICAgICAiQVJNdjciCisgICAgXQorCitCQUNLRU5EX1BBVFRFUk4gPSBSZWdleHAubmV3KCdc
XEEoJyArIEJBQ0tFTkRTLmpvaW4oJyl8KCcpICsgJylcXFonKQorCitjbGFzcyBOb2RlCisgICAg
ZGVmIGxvd2VyKG5hbWUpCisgICAgICAgIHNlbmQoImxvd2VyIiArIG5hbWUpCisgICAgZW5kCitl
bmQKKworIyBPdmVycmlkZXMgZm9yIGxvd2VyKCkgZm9yIHRob3NlIG5vZGVzIHRoYXQgYXJlIGJh
Y2tlbmQtYWdub3N0aWMKKworY2xhc3MgTGFiZWwKKyAgICBkZWYgbG93ZXIobmFtZSkKKyAgICAg
ICAgJGFzbS5wdXRzTGFiZWwoc2VsZi5uYW1lWzEuLi0xXSkKKyAgICBlbmQKK2VuZAorCitjbGFz
cyBMb2NhbExhYmVsCisgICAgZGVmIGxvd2VyKG5hbWUpCisgICAgICAgICRhc20ucHV0c0xvY2Fs
TGFiZWwgIl9vZmZsaW5lYXNtXyN7c2VsZi5uYW1lWzEuLi0xXX0iCisgICAgZW5kCitlbmQKKwor
Y2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAgICBkZWYgYXNtTGFiZWwKKyAgICAgICAgQXNzZW1ibGVy
LmxhYmVsUmVmZXJlbmNlKG5hbWVbMS4uLTFdKQorICAgIGVuZAorZW5kCisKK2NsYXNzIExvY2Fs
TGFiZWxSZWZlcmVuY2UKKyAgICBkZWYgYXNtTGFiZWwKKyAgICAgICAgQXNzZW1ibGVyLmxvY2Fs
TGFiZWxSZWZlcmVuY2UoIl9vZmZsaW5lYXNtXyIrbmFtZVsxLi4tMV0pCisgICAgZW5kCitlbmQK
KworY2xhc3MgU2tpcAorICAgIGRlZiBsb3dlcihuYW1lKQorICAgIGVuZAorZW5kCisKK2NsYXNz
IFNlcXVlbmNlCisgICAgZGVmIGxvd2VyKG5hbWUpCisgICAgICAgIGlmIHJlc3BvbmRfdG8/ICJs
b3dlciN7bmFtZX0iCisgICAgICAgICAgICBzZW5kKCJsb3dlciN7bmFtZX0iKQorICAgICAgICBl
bHNlCisgICAgICAgICAgICBAbGlzdC5lYWNoIHsKKyAgICAgICAgICAgICAgICB8IG5vZGUgfAor
ICAgICAgICAgICAgICAgIG5vZGUubG93ZXIobmFtZSkKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ZW5kCisgICAgZW5kCitlbmQKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVh
c20vZ2VuZXJhdGVfb2Zmc2V0X2V4dHJhY3Rvci5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9nZW5lcmF0ZV9vZmZzZXRfZXh0cmFjdG9yLnJiCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vZ2VuZXJhdGVfb2Zm
c2V0X2V4dHJhY3Rvci5yYgkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNDYgQEAKKyMhL3Vzci9i
aW4vZW52IHJ1YnkKKworIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
IyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworJDog
PDwgRmlsZS5kaXJuYW1lKF9fRklMRV9fKQorCityZXF1aXJlICJiYWNrZW5kcyIKK3JlcXVpcmUg
ImRpZ2VzdC9zaGExIgorcmVxdWlyZSAib2Zmc2V0cyIKK3JlcXVpcmUgInBhcnNlciIKK3JlcXVp
cmUgInNlbGZfaGFzaCIKK3JlcXVpcmUgInNldHRpbmdzIgorcmVxdWlyZSAidHJhbnNmb3JtIgor
CitpbnB1dEZsbm0gPSBBUkdWLnNoaWZ0CitvdXRwdXRGbG5tID0gQVJHVi5zaGlmdAorCiskc3Rk
ZXJyLnB1dHMgIm9mZmxpbmVhc206IFBhcnNpbmcgI3tpbnB1dEZsbm19IGFuZCBjcmVhdGluZyBv
ZmZzZXQgZXh0cmFjdG9yICN7b3V0cHV0RmxubX0uIgorCitkZWYgZW1pdE1hZ2ljTnVtYmVyCisg
ICAgT0ZGU0VUX01BR0lDX05VTUJFUlMuZWFjaCB7CisgICAgICAgIHwgbnVtYmVyIHwKKyAgICAg
ICAgJG91dHB1dC5wdXRzICIje251bWJlcn0sIgorICAgIH0KK2VuZAorCitpbnB1dERhdGEgPSBJ
Tzo6cmVhZChpbnB1dEZsbm0pCitpbnB1dEhhc2ggPSAiLy8gb2ZmbGluZWFzbSBpbnB1dCBoYXNo
OiAje0RpZ2VzdDo6U0hBMS5oZXhkaWdlc3QoaW5wdXREYXRhKX0gI3tzZWxmSGFzaH0iCisKK2lm
IEZpbGVUZXN0LmV4aXN0PyBvdXRwdXRGbG5tCisgICAgRmlsZS5vcGVuKG91dHB1dEZsbm0sICJy
IikgeworICAgICAgICB8IGlucCB8CisgICAgICAgIGZpcnN0TGluZSA9IGlucC5nZXRzCisgICAg
ICAgIGlmIGZpcnN0TGluZSBhbmQgZmlyc3RMaW5lLmNob21wID09IGlucHV0SGFzaAorICAgICAg
ICAgICAgJHN0ZGVyci5wdXRzICJvZmZsaW5lYXNtOiBOb3RoaW5nIGNoYW5nZWQuIgorICAgICAg
ICAgICAgZXhpdCAwCisgICAgICAgIGVuZAorICAgIH0KK2VuZAorCitvcmlnaW5hbEFTVCA9IHBh
cnNlKGxleChpbnB1dERhdGEpKQorCisjCisjIE9wdGltaXplIHRoZSBBU1QgdG8gbWFrZSBjb25m
aWd1cmF0aW9uIGV4dHJhY3Rpb24gZmFzdGVyLiBUaGlzIHJlZHVjZXMgdGhlIEFTVCB0byBhIGZv
cm0KKyMgdGhhdCBvbmx5IGNvbnRhaW5zIHRoZSB0aGluZ3MgdGhhdCBtYXR0ZXIgZm9yIG91ciBw
dXJwb3Nlczogb2Zmc2V0cywgc2l6ZXMsIGFuZCBpZgorIyBzdGF0ZW1lbnRzLgorIworCitjbGFz
cyBOb2RlCisgICAgZGVmIG9mZnNldHNQcnVuZVRvKHNlcXVlbmNlKQorICAgICAgICBjaGlsZHJl
bi5lYWNoIHsKKyAgICAgICAgICAgIHwgY2hpbGQgfAorICAgICAgICAgICAgY2hpbGQub2Zmc2V0
c1BydW5lVG8oc2VxdWVuY2UpCisgICAgICAgIH0KKyAgICBlbmQKKyAgICAKKyAgICBkZWYgb2Zm
c2V0c1BydW5lCisgICAgICAgIHJlc3VsdCA9IFNlcXVlbmNlLm5ldyhjb2RlT3JpZ2luLCBbXSkK
KyAgICAgICAgb2Zmc2V0c1BydW5lVG8ocmVzdWx0KQorICAgICAgICByZXN1bHQKKyAgICBlbmQK
K2VuZAorCitjbGFzcyBJZlRoZW5FbHNlCisgICAgZGVmIG9mZnNldHNQcnVuZVRvKHNlcXVlbmNl
KQorICAgICAgICBpZlRoZW5FbHNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGlj
YXRlLCB0aGVuQ2FzZS5vZmZzZXRzUHJ1bmUpCisgICAgICAgIGlmVGhlbkVsc2UuZWxzZUNhc2Ug
PSBlbHNlQ2FzZS5vZmZzZXRzUHJ1bmUKKyAgICAgICAgc2VxdWVuY2UubGlzdCA8PCBpZlRoZW5F
bHNlCisgICAgZW5kCitlbmQKKworY2xhc3MgU3RydWN0T2Zmc2V0CisgICAgZGVmIG9mZnNldHNQ
cnVuZVRvKHNlcXVlbmNlKQorICAgICAgICBzZXF1ZW5jZS5saXN0IDw8IHNlbGYKKyAgICBlbmQK
K2VuZAorCitjbGFzcyBTaXplb2YKKyAgICBkZWYgb2Zmc2V0c1BydW5lVG8oc2VxdWVuY2UpCisg
ICAgICAgIHNlcXVlbmNlLmxpc3QgPDwgc2VsZgorICAgIGVuZAorZW5kCisKK3BydW5lZEFTVCA9
IG9yaWdpbmFsQVNULm9mZnNldHNQcnVuZQorCitGaWxlLm9wZW4ob3V0cHV0RmxubSwgInciKSB7
CisgICAgfCBvdXRwIHwKKyAgICAkb3V0cHV0ID0gb3V0cAorICAgIG91dHAucHV0cyBpbnB1dEhh
c2gKKyAgICBsZW5ndGggPSAwCisgICAgZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKHBydW5l
ZEFTVCkgeworICAgICAgICB8IHNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICAg
ICAgb2Zmc2V0c0xpc3QgPSBhc3QuZmlsdGVyKFN0cnVjdE9mZnNldCkudW5pcS5zb3J0CisgICAg
ICAgIHNpemVzTGlzdCA9IGFzdC5maWx0ZXIoU2l6ZW9mKS51bmlxLnNvcnQKKyAgICAgICAgbGVu
Z3RoICs9IE9GRlNFVF9IRUFERVJfTUFHSUNfTlVNQkVSUy5zaXplICsgKE9GRlNFVF9NQUdJQ19O
VU1CRVJTLnNpemUgKyAxKSAqICgxICsgb2Zmc2V0c0xpc3Quc2l6ZSArIHNpemVzTGlzdC5zaXpl
KQorICAgIH0KKyAgICBvdXRwLnB1dHMgInN0YXRpYyBjb25zdCB1bnNpZ25lZCBleHRyYWN0b3JU
YWJsZVsje2xlbmd0aH1dID0geyIKKyAgICBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMocHJ1
bmVkQVNUKSB7CisgICAgICAgIHwgc2V0dGluZ3MsIGFzdCwgYmFja2VuZCwgaW5kZXggfAorICAg
ICAgICBPRkZTRVRfSEVBREVSX01BR0lDX05VTUJFUlMuZWFjaCB7CisgICAgICAgICAgICB8IG51
bWJlciB8CisgICAgICAgICAgICAkb3V0cHV0LnB1dHMgIiN7bnVtYmVyfSwiCisgICAgICAgIH0K
KworICAgICAgICBvZmZzZXRzTGlzdCA9IGFzdC5maWx0ZXIoU3RydWN0T2Zmc2V0KS51bmlxLnNv
cnQKKyAgICAgICAgc2l6ZXNMaXN0ID0gYXN0LmZpbHRlcihTaXplb2YpLnVuaXEuc29ydAorICAg
ICAgICAKKyAgICAgICAgZW1pdE1hZ2ljTnVtYmVyCisgICAgICAgIG91dHAucHV0cyAiI3tpbmRl
eH0sIgorICAgICAgICBvZmZzZXRzTGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgb2Zmc2V0IHwK
KyAgICAgICAgICAgIGVtaXRNYWdpY051bWJlcgorICAgICAgICAgICAgb3V0cC5wdXRzICJPRkZM
SU5FX0FTTV9PRkZTRVRPRigje29mZnNldC5zdHJ1Y3R9LCAje29mZnNldC5maWVsZH0pLCIKKyAg
ICAgICAgfQorICAgICAgICBzaXplc0xpc3QuZWFjaCB7CisgICAgICAgICAgICB8IG9mZnNldCB8
CisgICAgICAgICAgICBlbWl0TWFnaWNOdW1iZXIKKyAgICAgICAgICAgIG91dHAucHV0cyAic2l6
ZW9mKCN7b2Zmc2V0LnN0cnVjdH0pLCIKKyAgICAgICAgfQorICAgIH0KKyAgICBvdXRwLnB1dHMg
In07IgorfQorCiskc3RkZXJyLnB1dHMgIm9mZmxpbmVhc206IG9mZnNldCBleHRyYWN0b3IgI3tv
dXRwdXRGbG5tfSBzdWNjZXNzZnVsbHkgZ2VuZXJhdGVkLiIKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL29mZmxpbmVhc20vaW5zdHJ1Y3Rpb25zLnJiCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL2luc3RydWN0aW9ucy5yYgkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyMTcgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDExIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyMgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworIyBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyMgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorIyBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
IyBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorIyBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyMgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyMgQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyMgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorIyBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyMgSW50ZXJlc3RpbmcgaW52YXJpYW50LCB3aGljaCB3ZSB0YWtlIGFkdmFudGFn
ZSBvZjogYnJhbmNoaW5nIGluc3RydWN0aW9ucworIyBhbHdheXMgYmVnaW4gd2l0aCAiYiIsIGFu
ZCBubyBub24tYnJhbmNoaW5nIGluc3RydWN0aW9ucyBiZWdpbiB3aXRoICJiIi4KKyMgVGVybWlu
YWwgaW5zdHJ1Y3Rpb25zIGFyZSAiam1wIiBhbmQgInJldCIuCisKK01BQ1JPX0lOU1RSVUNUSU9O
UyA9CisgICAgWworICAgICAiYWRkaSIsCisgICAgICJhbmRpIiwKKyAgICAgImxzaGlmdGkiLAor
ICAgICAibXVsaSIsCisgICAgICJuZWdpIiwKKyAgICAgIm5vdGkiLAorICAgICAib3JpIiwKKyAg
ICAgInJzaGlmdGkiLAorICAgICAidXJzaGlmdGkiLAorICAgICAic3ViaSIsCisgICAgICJ4b3Jp
IiwKKyAgICAgImxvYWRpIiwKKyAgICAgImxvYWRiIiwKKyAgICAgImxvYWRicyIsCisgICAgICJs
b2FkaCIsCisgICAgICJsb2FkaHMiLAorICAgICAic3RvcmVpIiwKKyAgICAgInN0b3JlYiIsCisg
ICAgICJsb2FkZCIsCisgICAgICJtb3ZlZCIsCisgICAgICJzdG9yZWQiLAorICAgICAiYWRkZCIs
CisgICAgICJkaXZkIiwKKyAgICAgInN1YmQiLAorICAgICAibXVsZCIsCisgICAgICJzcXJ0ZCIs
CisgICAgICJjaTJkIiwKKyAgICAgImZpaTJkIiwgIyB1c2FnZTogZmlpMmQgPGdwciB3aXRoIGxl
YXN0IHNpZ25pZmljYW50IGJpdHM+LCA8Z3ByIHdpdGggbW9zdCBzaWduaWZpY2FudCBiaXRzPiwg
PGZwcj4KKyAgICAgImZkMmlpIiwgIyB1c2FnZTogZmQyaWkgPGZwcj4sIDxncHIgd2l0aCBsZWFz
dCBzaWduaWZpY2FudCBiaXRzPiwgPGdwciB3aXRoIG1vc3Qgc2lnbmlmaWNhbnQgYml0cz4KKyAg
ICAgImJkZXEiLAorICAgICAiYmRuZXEiLAorICAgICAiYmRndCIsCisgICAgICJiZGd0ZXEiLAor
ICAgICAiYmRsdCIsCisgICAgICJiZGx0ZXEiLAorICAgICAiYmRlcXVuIiwKKyAgICAgImJkbmVx
dW4iLAorICAgICAiYmRndHVuIiwKKyAgICAgImJkZ3RlcXVuIiwKKyAgICAgImJkbHR1biIsCisg
ICAgICJiZGx0ZXF1biIsCisgICAgICJidGQyaSIsCisgICAgICJ0ZDJpIiwKKyAgICAgImJjZDJp
IiwKKyAgICAgIm1vdmR6IiwKKyAgICAgInBvcCIsCisgICAgICJwdXNoIiwKKyAgICAgIm1vdmUi
LAorICAgICAic3hpMnAiLAorICAgICAienhpMnAiLAorICAgICAibm9wIiwKKyAgICAgImJpZXEi
LAorICAgICAiYmluZXEiLAorICAgICAiYmlhIiwKKyAgICAgImJpYWVxIiwKKyAgICAgImJpYiIs
CisgICAgICJiaWJlcSIsCisgICAgICJiaWd0IiwKKyAgICAgImJpZ3RlcSIsCisgICAgICJiaWx0
IiwKKyAgICAgImJpbHRlcSIsCisgICAgICJiYmVxIiwKKyAgICAgImJibmVxIiwKKyAgICAgImJi
YSIsCisgICAgICJiYmFlcSIsCisgICAgICJiYmIiLAorICAgICAiYmJiZXEiLAorICAgICAiYmJn
dCIsCisgICAgICJiYmd0ZXEiLAorICAgICAiYmJsdCIsCisgICAgICJiYmx0ZXEiLAorICAgICAi
YnRpbyIsCisgICAgICJidGlzIiwKKyAgICAgImJ0aXoiLAorICAgICAiYnRpbnoiLAorICAgICAi
YnRibyIsCisgICAgICJidGJzIiwKKyAgICAgImJ0YnoiLAorICAgICAiYnRibnoiLAorICAgICAi
am1wIiwKKyAgICAgImJhZGRpbyIsCisgICAgICJiYWRkaXMiLAorICAgICAiYmFkZGl6IiwKKyAg
ICAgImJhZGRpbnoiLAorICAgICAiYnN1YmlvIiwKKyAgICAgImJzdWJpcyIsCisgICAgICJic3Vi
aXoiLAorICAgICAiYnN1YmlueiIsCisgICAgICJibXVsaW8iLAorICAgICAiYm11bGlzIiwKKyAg
ICAgImJtdWxpeiIsCisgICAgICJibXVsaW56IiwKKyAgICAgImJvcmlvIiwKKyAgICAgImJvcmlz
IiwKKyAgICAgImJvcml6IiwKKyAgICAgImJvcmlueiIsCisgICAgICJicmVhayIsCisgICAgICJj
YWxsIiwKKyAgICAgInJldCIsCisgICAgICJjaWVxIiwKKyAgICAgImNpbmVxIiwKKyAgICAgImNp
YSIsCisgICAgICJjaWFlcSIsCisgICAgICJjaWIiLAorICAgICAiY2liZXEiLAorICAgICAiY2ln
dCIsCisgICAgICJjaWd0ZXEiLAorICAgICAiY2lsdCIsCisgICAgICJjaWx0ZXEiLAorICAgICAi
dGlvIiwKKyAgICAgInRpcyIsCisgICAgICJ0aXoiLAorICAgICAidGlueiIsCisgICAgICJ0Ym8i
LAorICAgICAidGJzIiwKKyAgICAgInRieiIsCisgICAgICJ0Ym56IiwKKyAgICAgInBlZWsiLAor
ICAgICAicG9rZSIsCisgICAgICJicGVxIiwKKyAgICAgImJwbmVxIiwKKyAgICAgImJwYSIsCisg
ICAgICJicGFlcSIsCisgICAgICJicGIiLAorICAgICAiYnBiZXEiLAorICAgICAiYnBndCIsCisg
ICAgICJicGd0ZXEiLAorICAgICAiYnBsdCIsCisgICAgICJicGx0ZXEiLAorICAgICAiYWRkcCIs
CisgICAgICJhbmRwIiwKKyAgICAgIm9ycCIsCisgICAgICJzdWJwIiwKKyAgICAgInhvcnAiLAor
ICAgICAibG9hZHAiLAorICAgICAiY3BlcSIsCisgICAgICJjcG5lcSIsCisgICAgICJjcGEiLAor
ICAgICAiY3BhZXEiLAorICAgICAiY3BiIiwKKyAgICAgImNwYmVxIiwKKyAgICAgImNwZ3QiLAor
ICAgICAiY3BndGVxIiwKKyAgICAgImNwbHQiLAorICAgICAiY3BsdGVxIiwKKyAgICAgInN0b3Jl
cCIsCisgICAgICJidHBvIiwKKyAgICAgImJ0cHMiLAorICAgICAiYnRweiIsCisgICAgICJidHBu
eiIsCisgICAgICJiYWRkcG8iLAorICAgICAiYmFkZHBzIiwKKyAgICAgImJhZGRweiIsCisgICAg
ICJiYWRkcG56IiwKKyAgICAgImJvIiwKKyAgICAgImJzIiwKKyAgICAgImJ6IiwKKyAgICAgImJu
eiIsCisgICAgICJsZWFpIiwKKyAgICAgImxlYXAiLAorICAgIF0KKworWDg2X0lOU1RSVUNUSU9O
UyA9CisgICAgWworICAgICAiY2RxaSIsCisgICAgICJpZGl2aSIKKyAgICBdCisKK0FSTXY3X0lO
U1RSVUNUSU9OUyA9CisgICAgWworICAgICAic211bGxpIiwKKyAgICAgImFkZGlzIiwKKyAgICAg
InN1YmlzIiwKKyAgICAgIm9yaXMiCisgICAgXQorCitJTlNUUlVDVElPTlMgPSBNQUNST19JTlNU
UlVDVElPTlMgKyBYODZfSU5TVFJVQ1RJT05TICsgQVJNdjdfSU5TVFJVQ1RJT05TCisKK0lOU1RS
VUNUSU9OX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBJTlNUUlVDVElPTlMuam9pbign
KXwoJykgKyAnKSlcXFonKQorCitkZWYgaXNCcmFuY2goaW5zdHJ1Y3Rpb24pCisgICAgaW5zdHJ1
Y3Rpb24gPX4gL15iLworZW5kCisKK2RlZiBoYXNGYWxsVGhyb3VnaChpbnN0cnVjdGlvbikKKyAg
ICBpbnN0cnVjdGlvbiAhPSAicmV0IiBhbmQgaW5zdHJ1Y3Rpb24gIT0gImptcCIKK2VuZAorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL29mZnNldHMucmIJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9vZmZzZXRzLnJiCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3MyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorCitPRkZTRVRfSEVBREVSX01BR0lDX05VTUJFUlMg
PSBbIDB4OWU0M2ZkNjYsIDB4NDM3OWJmYmEgXQorT0ZGU0VUX01BR0lDX05VTUJFUlMgPSBbIDB4
ZWM1NzdhYzcsIDB4MGZmNWU3NTUgXQorCisjCisjIG9mZnNldHNMaXN0KGFzdCkKKyMgc2l6ZXNM
aXN0KGFzdCkKKyMKKyMgUmV0dXJucyBhIGxpc3Qgb2Ygb2Zmc2V0cyBhbmQgc2l6ZXMgdXNlZCBi
eSB0aGUgQVNULgorIworCitkZWYgb2Zmc2V0c0xpc3QoYXN0KQorICAgIGFzdC5maWx0ZXIoU3Ry
dWN0T2Zmc2V0KS51bmlxLnNvcnQKK2VuZAorCitkZWYgc2l6ZXNMaXN0KGFzdCkKKyAgICBhc3Qu
ZmlsdGVyKFNpemVvZikudW5pcS5zb3J0CitlbmQKKworIworIyBvZmZzZXRzQW5kQ29uZmlndXJh
dGlvbkluZGV4KGFzdCwgZmlsZSkgLT4KKyMgICAgIFtbb2Zmc2V0cywgaW5kZXhdLCAuLi5dCisj
CisjIFBhcnNlcyB0aGUgb2Zmc2V0cyBmcm9tIGEgZmlsZSBhbmQgcmV0dXJucyBhIGxpc3Qgb2Yg
b2Zmc2V0cyBhbmQgdGhlCisjIGluZGV4IG9mIHRoZSBjb25maWd1cmF0aW9uIHRoYXQgaXMgdmFs
aWQgaW4gdGhpcyBidWlsZCB0YXJnZXQuCisjCisKK2RlZiBvZmZzZXRzQW5kQ29uZmlndXJhdGlv
bkluZGV4KGZpbGUpCisgICAgZW5kaWFubmVzc01hcmtlckJ5dGVzID0gbmlsCisgICAgcmVzdWx0
ID0gW10KKyAgICAKKyAgICBkZWYgcmVhZEludChlbmRpYW5uZXNzLCBieXRlcykKKyAgICAgICAg
aWYgZW5kaWFubmVzcyA9PSA6bGl0dGxlCisgICAgICAgICAgICAjIExpdHRsZSBlbmRpYW4KKyAg
ICAgICAgICAgIChieXRlc1swXSA8PCAwIHwKKyAgICAgICAgICAgICBieXRlc1sxXSA8PCA4IHwK
KyAgICAgICAgICAgICBieXRlc1syXSA8PCAxNiB8CisgICAgICAgICAgICAgYnl0ZXNbM10gPDwg
MjQpCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICMgQmlnIGVuZGlhbgorICAgICAgICAgICAg
KGJ5dGVzWzBdIDw8IDI0IHwKKyAgICAgICAgICAgICBieXRlc1sxXSA8PCAxNiB8CisgICAgICAg
ICAgICAgYnl0ZXNbMl0gPDwgOCB8CisgICAgICAgICAgICAgYnl0ZXNbM10gPDwgMCkKKyAgICAg
ICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIHByZXBhcmVNYWdpYyhlbmRpYW5uZXNzLCBu
dW1iZXJzKQorICAgICAgICBtYWdpY0J5dGVzID0gW10KKyAgICAgICAgbnVtYmVycy5lYWNoIHsK
KyAgICAgICAgICAgIHwgbnVtYmVyIHwKKyAgICAgICAgICAgIGN1cnJlbnRCeXRlcyA9IFtdCisg
ICAgICAgICAgICA0LnRpbWVzIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50Qnl0ZXMgPDwgKG51
bWJlciAmIDB4ZmYpCisgICAgICAgICAgICAgICAgbnVtYmVyID4+PSA4CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiBlbmRpYW5uZXNzID09IDpiaWcKKyAgICAgICAgICAgICAgICBjdXJy
ZW50Qnl0ZXMucmV2ZXJzZSEKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgbWFnaWNCeXRl
cyArPSBjdXJyZW50Qnl0ZXMKKyAgICAgICAgfQorICAgICAgICBtYWdpY0J5dGVzCisgICAgZW5k
CisgICAgCisgICAgZmlsZUJ5dGVzID0gW10KKyAgICAKKyAgICBGaWxlLm9wZW4oZmlsZSwgInIi
KSB7CisgICAgICAgIHwgaW5wIHwKKyAgICAgICAgbG9vcCB7CisgICAgICAgICAgICBieXRlID0g
aW5wLmdldGJ5dGUKKyAgICAgICAgICAgIGJyZWFrIHVubGVzcyBieXRlCisgICAgICAgICAgICBm
aWxlQnl0ZXMgPDwgYnl0ZQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIGRlZiBzbGljZUJ5
dGVBcnJheXMoYnl0ZUFycmF5LCBwYXR0ZXJuKQorICAgICAgICByZXN1bHQgPSBbXQorICAgICAg
ICBsYXN0U2xpY2VQb2ludCA9IDAKKyAgICAgICAgKGJ5dGVBcnJheS5sZW5ndGggLSBwYXR0ZXJu
Lmxlbmd0aCArIDEpLnRpbWVzIHsKKyAgICAgICAgICAgIHwgaW5kZXggfAorICAgICAgICAgICAg
Zm91bmRPbmUgPSB0cnVlCisgICAgICAgICAgICBwYXR0ZXJuLmxlbmd0aC50aW1lcyB7CisgICAg
ICAgICAgICAgICAgfCBzdWJJbmRleCB8CisgICAgICAgICAgICAgICAgaWYgYnl0ZUFycmF5W2lu
ZGV4ICsgc3ViSW5kZXhdICE9IHBhdHRlcm5bc3ViSW5kZXhdCisgICAgICAgICAgICAgICAgICAg
IGZvdW5kT25lID0gZmFsc2UKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAg
ICAgICBlbmQKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIGZvdW5kT25lCisgICAgICAg
ICAgICAgICAgcmVzdWx0IDw8IGJ5dGVBcnJheVtsYXN0U2xpY2VQb2ludC4uLmluZGV4XQorICAg
ICAgICAgICAgICAgIGxhc3RTbGljZVBvaW50ID0gaW5kZXggKyBwYXR0ZXJuLmxlbmd0aAorICAg
ICAgICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJlc3VsdCA8PCBieXRl
QXJyYXlbbGFzdFNsaWNlUG9pbnQuLi4oYnl0ZUFycmF5Lmxlbmd0aCldCisgICAgICAgIAorICAg
ICAgICByZXN1bHQKKyAgICBlbmQKKyAgICAKKyAgICBbOmxpdHRsZSwgOmJpZ10uZWFjaCB7Cisg
ICAgICAgIHwgZW5kaWFubmVzcyB8CisgICAgICAgIGhlYWRlck1hZ2ljQnl0ZXMgPSBwcmVwYXJl
TWFnaWMoZW5kaWFubmVzcywgT0ZGU0VUX0hFQURFUl9NQUdJQ19OVU1CRVJTKQorICAgICAgICBt
YWdpY0J5dGVzID0gcHJlcGFyZU1hZ2ljKGVuZGlhbm5lc3MsIE9GRlNFVF9NQUdJQ19OVU1CRVJT
KQorICAgICAgICAKKyAgICAgICAgYmlnQXJyYXkgPSBzbGljZUJ5dGVBcnJheXMoZmlsZUJ5dGVz
LCBoZWFkZXJNYWdpY0J5dGVzKQorICAgICAgICB1bmxlc3MgYmlnQXJyYXkuc2l6ZSA8PSAxCisg
ICAgICAgICAgICBiaWdBcnJheVsxLi4tMV0uZWFjaCB7CisgICAgICAgICAgICAgICAgfCBjb25m
aWdBcnJheSB8CisgICAgICAgICAgICAgICAgYXJyYXkgPSBzbGljZUJ5dGVBcnJheXMoY29uZmln
QXJyYXksIG1hZ2ljQnl0ZXMpCisgICAgICAgICAgICAgICAgaW5kZXggPSByZWFkSW50KGVuZGlh
bm5lc3MsIGFycmF5WzFdKQorICAgICAgICAgICAgICAgIG9mZnNldHMgPSBbXQorICAgICAgICAg
ICAgICAgIGFycmF5WzIuLi0xXS5lYWNoIHsKKyAgICAgICAgICAgICAgICAgICAgfCBkYXRhIHwK
KyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0cyA8PCByZWFkSW50KGVuZGlhbm5lc3MsIGRhdGEp
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlc3VsdCA8PCBbb2Zmc2V0cywg
aW5kZXhdCisgICAgICAgICAgICB9CisgICAgICAgIGVuZAorICAgIH0KKyAgICAKKyAgICByYWlz
ZSB1bmxlc3MgcmVzdWx0Lmxlbmd0aCA+PSAxCisgICAgcmFpc2UgaWYgcmVzdWx0Lm1hcHt8dnwg
dlsxXX0udW5pcS5zaXplIDwgcmVzdWx0Lm1hcHt8dnwgdlsxXX0uc2l6ZQorICAgIAorICAgIHJl
c3VsdAorZW5kCisKKyMKKyMgYnVpbGRPZmZzZXRzTWFwKGFzdCwgb2Zmc2V0c0xpc3QpIC0+IFtv
ZmZzZXRzLCBzaXplc10KKyMKKyMgQnVpbGRzIGEgbWFwcGluZyBiZXR3ZWVuIFN0cnVjdE9mZnNl
dCBub2RlcyBhbmQgdGhlaXIgdmFsdWVzLgorIworCitkZWYgYnVpbGRPZmZzZXRzTWFwKGFzdCwg
b2Zmc2V0c0xpc3QpCisgICAgb2Zmc2V0c01hcCA9IHt9CisgICAgc2l6ZXNNYXAgPSB7fQorICAg
IGFzdE9mZnNldHNMaXN0ID0gb2Zmc2V0c0xpc3QoYXN0KQorICAgIGFzdFNpemVzTGlzdCA9IHNp
emVzTGlzdChhc3QpCisgICAgcmFpc2UgdW5sZXNzIGFzdE9mZnNldHNMaXN0LnNpemUgKyBhc3RT
aXplc0xpc3Quc2l6ZSA9PSBvZmZzZXRzTGlzdC5zaXplCisgICAgb2Zmc2V0c0xpc3QoYXN0KS5l
YWNoX3dpdGhfaW5kZXggeworICAgICAgICB8IHN0cnVjdE9mZnNldCwgaW5kZXggfAorICAgICAg
ICBvZmZzZXRzTWFwW3N0cnVjdE9mZnNldF0gPSBvZmZzZXRzTGlzdC5zaGlmdAorICAgIH0KKyAg
ICBzaXplc0xpc3QoYXN0KS5lYWNoX3dpdGhfaW5kZXggeworICAgICAgICB8IHNpemVvZiwgaW5k
ZXggfAorICAgICAgICBzaXplc01hcFtzaXplb2ZdID0gb2Zmc2V0c0xpc3Quc2hpZnQKKyAgICB9
CisgICAgW29mZnNldHNNYXAsIHNpemVzTWFwXQorZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9vZmZsaW5lYXNtL29wdC5yYgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9vcHQucmIJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvb2ZmbGluZWFzbS9vcHQucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTM0IEBACisj
IENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCisKKyMK
KyMgIk9wdGltaXphdGlvbiIgcGFzc2VzLiBUaGVzZSBhcmUgdXNlZCB0byBsb3dlciB0aGUgcmVw
cmVzZW50YXRpb24gZm9yCisjIGJhY2tlbmRzIHRoYXQgY2Fubm90IGhhbmRsZSBzb21lIG9mIG91
ciBoaWdoZXItbGV2ZWwgaW5zdHJ1Y3Rpb25zLgorIworCisjCisjIEEgdGVtcG9yYXJ5IC0gYSB2
YXJpYWJsZSB0aGF0IHdpbGwgYmUgYWxsb2NhdGVkIHRvIGEgcmVnaXN0ZXIgYWZ0ZXIgd2UncmUK
KyMgZG9uZS4KKyMKKworY2xhc3MgTm9kZQorICAgIGRlZiByZXBsYWNlVGVtcG9yYXJpZXNXaXRo
UmVnaXN0ZXJzKGtpbmQpCisgICAgICAgIG1hcENoaWxkcmVuIHsKKyAgICAgICAgICAgIHwgbm9k
ZSB8CisgICAgICAgICAgICBub2RlLnJlcGxhY2VUZW1wb3Jhcmllc1dpdGhSZWdpc3RlcnMoa2lu
ZCkKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNzIFRtcCA8IE5vQ2hpbGRyZW4KKyAg
ICBhdHRyX3JlYWRlciA6Zmlyc3RNZW50aW9uLCA6bGFzdE1lbnRpb24KKyAgICBhdHRyX3JlYWRl
ciA6a2luZAorICAgIGF0dHJfYWNjZXNzb3IgOnJlZ2lzdGVyCisKKyAgICBkZWYgaW5pdGlhbGl6
ZShjb2RlT3JpZ2luLCBraW5kKQorICAgICAgICBzdXBlcihjb2RlT3JpZ2luKQorICAgICAgICBA
a2luZCA9IGtpbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgZHVtcAorICAgICAgICAiJHRtcCN7
b2JqZWN0X2lkfSIKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgbWVudGlvbiEocG9zaXRpb24pCisg
ICAgICAgIGlmIG5vdCBAZmlyc3RNZW50aW9uIG9yIHBvc2l0aW9uIDwgQGZpcnN0TWVudGlvbgor
ICAgICAgICAgICAgQGZpcnN0TWVudGlvbiA9IHBvc2l0aW9uCisgICAgICAgIGVuZAorICAgICAg
ICBpZiBub3QgQGxhc3RNZW50aW9uIG9yIHBvc2l0aW9uID4gQGxhc3RNZW50aW9uCisgICAgICAg
ICAgICBAbGFzdE1lbnRpb24gPSBwb3NpdGlvbgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgcmVwbGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lzdGVycyhraW5kKQorICAgICAgICBp
ZiBAa2luZCA9PSBraW5kCisgICAgICAgICAgICByYWlzZSAiRGlkIG5vdCBhbGxvY2F0ZSByZWdp
c3RlciB0byB0ZW1wb3JhcnkgYXQgI3tjb2RlT3JpZ2luU3RyaW5nfSIgdW5sZXNzIEByZWdpc3Rl
cgorICAgICAgICAgICAgQHJlZ2lzdGVyCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlbGYK
KyAgICAgICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIGFkZHJlc3M/CisgICAgICAgIGZh
bHNlCisgICAgZW5kCisgICAgCisgICAgZGVmIGxhYmVsPworICAgICAgICBmYWxzZQorICAgIGVu
ZAorICAgIAorICAgIGRlZiBpbW1lZGlhdGU/CisgICAgICAgIGZhbHNlCisgICAgZW5kCisgICAg
CisgICAgZGVmIHJlZ2lzdGVyPworICAgICAgICB0cnVlCisgICAgZW5kCitlbmQKKworIyBBc3Np
Z24gcmVnaXN0ZXJzIHRvIHRlbXBvcmFyaWVzLCBieSBmaW5kaW5nIHdoaWNoIHRlbXBvcmFyaWVz
IGludGVyZmVyZQorIyB3aXRoIGVhY2ggb3RoZXIuIE5vdGUgdGhhdCB0aGlzIHJlbGllcyBvbiB0
ZW1wb3JhcnkgbGl2ZSByYW5nZXMgbm90IGNyb3NzaW5nCisjIGJhc2ljIGJsb2NrIGJvdW5kYXJp
ZXMuCisKK2RlZiBhc3NpZ25SZWdpc3RlcnNUb1RlbXBvcmFyaWVzKGxpc3QsIGtpbmQsIHJlZ2lz
dGVycykKKyAgICBsaXN0LmVhY2hfd2l0aF9pbmRleCB7CisgICAgICAgIHwgbm9kZSwgaW5kZXgg
fAorICAgICAgICBub2RlLmZpbHRlcihUbXApLnVuaXEuZWFjaCB7CisgICAgICAgICAgICB8IHRt
cCB8CisgICAgICAgICAgICBpZiB0bXAua2luZCA9PSBraW5kCisgICAgICAgICAgICAgICAgdG1w
Lm1lbnRpb24hIGluZGV4CisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgIH0KKyAgICAK
KyAgICBmcmVlUmVnaXN0ZXJzID0gcmVnaXN0ZXJzLmR1cAorICAgIGxpc3QuZWFjaF93aXRoX2lu
ZGV4IHsKKyAgICAgICAgfCBub2RlLCBpbmRleCB8CisgICAgICAgIHRtcExpc3QgPSBub2RlLmZp
bHRlcihUbXApLnVuaXEKKyAgICAgICAgdG1wTGlzdC5lYWNoIHsKKyAgICAgICAgICAgIHwgdG1w
IHwKKyAgICAgICAgICAgIGlmIHRtcC5raW5kID09IGtpbmQgYW5kIHRtcC5maXJzdE1lbnRpb24g
PT0gaW5kZXgKKyAgICAgICAgICAgICAgICByYWlzZSAiQ291bGQgbm90IGFsbG9jYXRlIHJlZ2lz
dGVyIHRvIHRlbXBvcmFyeSBhdCAje25vZGUuY29kZU9yaWdpblN0cmluZ30iIGlmIGZyZWVSZWdp
c3RlcnMuZW1wdHk/CisgICAgICAgICAgICAgICAgdG1wLnJlZ2lzdGVyID0gZnJlZVJlZ2lzdGVy
cy5wb3AKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9CisgICAgICAgIHRtcExpc3QuZWFjaCB7
CisgICAgICAgICAgICB8IHRtcCB8CisgICAgICAgICAgICBpZiB0bXAua2luZCA9PSBraW5kIGFu
ZCB0bXAubGFzdE1lbnRpb24gPT0gaW5kZXgKKyAgICAgICAgICAgICAgICBmcmVlUmVnaXN0ZXJz
LnB1c2ggdG1wLnJlZ2lzdGVyCisgICAgICAgICAgICAgICAgcmFpc2UgIlJlZ2lzdGVyIGFsbG9j
YXRpb24gaW5jb25zaXN0ZW5jeSBhdCAje25vZGUuY29kZU9yaWdpblN0cmluZ30iIGlmIGZyZWVS
ZWdpc3RlcnMuc2l6ZSA+IHJlZ2lzdGVycy5zaXplCisgICAgICAgICAgICBlbmQKKyAgICAgICAg
fQorICAgIH0KKyAgICAKKyAgICBsaXN0Lm1hcCB7CisgICAgICAgIHwgbm9kZSB8CisgICAgICAg
IG5vZGUucmVwbGFjZVRlbXBvcmFyaWVzV2l0aFJlZ2lzdGVycyhraW5kKQorICAgIH0KK2VuZAor
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2ZmbGluZWFzbS9wYXJzZXIucmIKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShyZXZp
c2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vcGFyc2VyLnJiCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4NiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisj
IGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworcmVxdWlyZSAiYXN0IgorcmVxdWlyZSAiaW5zdHJ1Y3Rpb25zIgorcmVxdWly
ZSAicmVnaXN0ZXJzIgorCitjbGFzcyBUb2tlbgorICAgIGF0dHJfcmVhZGVyIDpjb2RlT3JpZ2lu
LCA6c3RyaW5nCisgICAgCisgICAgZGVmIGluaXRpYWxpemUoY29kZU9yaWdpbiwgc3RyaW5nKQor
ICAgICAgICBAY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4KKyAgICAgICAgQHN0cmluZyA9IHN0cmlu
ZworICAgIGVuZAorICAgIAorICAgIGRlZiA9PShvdGhlcikKKyAgICAgICAgaWYgb3RoZXIuaXNf
YT8gVG9rZW4KKyAgICAgICAgICAgIEBzdHJpbmcgPT0gb3RoZXIuc3RyaW5nCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIEBzdHJpbmcgPT0gb3RoZXIKKyAgICAgICAgZW5kCisgICAgZW5kCisg
ICAgCisgICAgZGVmID1+KG90aGVyKQorICAgICAgICBAc3RyaW5nID1+IG90aGVyCisgICAgZW5k
CisgICAgCisgICAgZGVmIHRvX3MKKyAgICAgICAgIiN7QHN0cmluZy5pbnNwZWN0fSBhdCBsaW5l
ICN7Y29kZU9yaWdpbn0iCisgICAgZW5kCisgICAgCisgICAgZGVmIHBhcnNlRXJyb3IoKmNvbW1l
bnQpCisgICAgICAgIGlmIGNvbW1lbnQuZW1wdHk/CisgICAgICAgICAgICByYWlzZSAiUGFyc2Ug
ZXJyb3I6ICN7dG9fc30iCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJhaXNlICJQYXJzZSBl
cnJvcjogI3t0b19zfTogI3tjb21tZW50WzBdfSIKKyAgICAgICAgZW5kCisgICAgZW5kCitlbmQK
KworIworIyBUaGUgbGV4ZXIuIFRha2VzIGEgc3RyaW5nIGFuZCByZXR1cm5zIGFuIGFycmF5IG9m
IHRva2Vucy4KKyMKKworZGVmIGxleChzdHIpCisgICAgcmVzdWx0ID0gW10KKyAgICBsaW5lTnVt
YmVyID0gMQorICAgIHdoaWxlIG5vdCBzdHIuZW1wdHk/CisgICAgICAgIGNhc2Ugc3RyCisgICAg
ICAgIHdoZW4gL1xBXCMoW15cbl0qKS8KKyAgICAgICAgICAgICMgY29tbWVudCwgaWdub3JlCisg
ICAgICAgIHdoZW4gL1xBXG4vCisgICAgICAgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVO
dW1iZXIsICQmKQorICAgICAgICAgICAgbGluZU51bWJlciArPSAxCisgICAgICAgIHdoZW4gL1xB
W2EtekEtWl0oW2EtekEtWjAtOV9dKikvCisgICAgICAgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3
KGxpbmVOdW1iZXIsICQmKQorICAgICAgICB3aGVuIC9cQVwuKFthLXpBLVowLTlfXSopLworICAg
ICAgICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhsaW5lTnVtYmVyLCAkJikKKyAgICAgICAgd2hl
biAvXEFfKFthLXpBLVowLTlfXSopLworICAgICAgICAgICAgcmVzdWx0IDw8IFRva2VuLm5ldyhs
aW5lTnVtYmVyLCAkJikKKyAgICAgICAgd2hlbiAvXEEoWyBcdF0rKS8KKyAgICAgICAgICAgICMg
d2hpdGVzcGFjZSwgaWdub3JlCisgICAgICAgIHdoZW4gL1xBMHgoWzAtOWEtZkEtRl0rKS8KKyAg
ICAgICAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYuaGV4LnRvX3MpCisg
ICAgICAgIHdoZW4gL1xBMChbMC03XSspLworICAgICAgICAgICAgcmVzdWx0IDw8IFRva2VuLm5l
dyhsaW5lTnVtYmVyLCAkJi5vY3QudG9fcykKKyAgICAgICAgd2hlbiAvXEEoWzAtOV0rKS8KKyAg
ICAgICAgICAgIHJlc3VsdCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICAgIHdo
ZW4gL1xBOjovCisgICAgICAgICAgICByZXN1bHQgPDwgVG9rZW4ubmV3KGxpbmVOdW1iZXIsICQm
KQorICAgICAgICB3aGVuIC9cQVs6LFwoXClcW1xdPVwrXC0qXS8KKyAgICAgICAgICAgIHJlc3Vs
dCA8PCBUb2tlbi5uZXcobGluZU51bWJlciwgJCYpCisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHJhaXNlICJMZXhlciBlcnJvciBhdCBsaW5lIG51bWJlciAje2xpbmVOdW1iZXJ9LCB1bmV4cGVj
dGVkIHNlcXVlbmNlICN7c3RyWzAuLjIwXS5pbnNwZWN0fSIKKyAgICAgICAgZW5kCisgICAgICAg
IHN0ciA9ICR+LnBvc3RfbWF0Y2gKKyAgICBlbmQKKyAgICByZXN1bHQKK2VuZAorCisjCisjIFRv
a2VuIGlkZW50aWZpY2F0aW9uLgorIworCitkZWYgaXNSZWdpc3Rlcih0b2tlbikKKyAgICB0b2tl
biA9fiBSRUdJU1RFUl9QQVRURVJOCitlbmQKKworZGVmIGlzSW5zdHJ1Y3Rpb24odG9rZW4pCisg
ICAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0tleXdvcmQodG9r
ZW4pCisgICAgdG9rZW4gPX4gL1xBKCh0cnVlKXwoZmFsc2UpfChpZil8KHRoZW4pfChlbHNlKXwo
ZWxzaWYpfChlbmQpfChhbmQpfChvcil8KG5vdCl8KG1hY3JvKXwoY29uc3QpfChzaXplb2YpfChl
cnJvcikpXFovIG9yCisgICAgICAgIHRva2VuID1+IFJFR0lTVEVSX1BBVFRFUk4gb3IKKyAgICAg
ICAgdG9rZW4gPX4gSU5TVFJVQ1RJT05fUEFUVEVSTgorZW5kCisKK2RlZiBpc0lkZW50aWZpZXIo
dG9rZW4pCisgICAgdG9rZW4gPX4gL1xBW2EtekEtWl0oW2EtekEtWjAtOV9dKilcWi8gYW5kIG5v
dCBpc0tleXdvcmQodG9rZW4pCitlbmQKKworZGVmIGlzTGFiZWwodG9rZW4pCisgICAgdG9rZW4g
PX4gL1xBXyhbYS16QS1aMC05X10qKVxaLworZW5kCisKK2RlZiBpc0xvY2FsTGFiZWwodG9rZW4p
CisgICAgdG9rZW4gPX4gL1xBXC4oW2EtekEtWjAtOV9dKilcWi8KK2VuZAorCitkZWYgaXNWYXJp
YWJsZSh0b2tlbikKKyAgICBpc0lkZW50aWZpZXIodG9rZW4pIG9yIGlzUmVnaXN0ZXIodG9rZW4p
CitlbmQKKworZGVmIGlzSW50ZWdlcih0b2tlbikKKyAgICB0b2tlbiA9fiAvXEFbMC05XS8KK2Vu
ZAorCisjCisjIFRoZSBwYXJzZXIuIFRha2VzIGFuIGFycmF5IG9mIHRva2VucyBhbmQgcmV0dXJu
cyBhbiBBU1QuIE1ldGhvZHMKKyMgb3RoZXIgdGhhbiBwYXJzZSh0b2tlbnMpIGFyZSBub3QgZm9y
IHB1YmxpYyBjb25zdW1wdGlvbi4KKyMKKworY2xhc3MgUGFyc2VyCisgICAgZGVmIGluaXRpYWxp
emUodG9rZW5zKQorICAgICAgICBAdG9rZW5zID0gdG9rZW5zCisgICAgICAgIEBpZHggPSAwCisg
ICAgZW5kCisgICAgCisgICAgZGVmIHBhcnNlRXJyb3IoKmNvbW1lbnQpCisgICAgICAgIGlmIEB0
b2tlbnNbQGlkeF0KKyAgICAgICAgICAgIEB0b2tlbnNbQGlkeF0ucGFyc2VFcnJvcigqY29tbWVu
dCkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgY29tbWVudC5lbXB0eT8KKyAgICAgICAg
ICAgICAgICByYWlzZSAiUGFyc2UgZXJyb3IgYXQgZW5kIG9mIGZpbGUiCisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgcmFpc2UgIlBhcnNlIGVycm9yIGF0IGVuZCBvZiBmaWxlOiAj
e2NvbW1lbnRbMF19IgorICAgICAgICAgICAgZW5kCisgICAgICAgIGVuZAorICAgIGVuZAorICAg
IAorICAgIGRlZiBjb25zdW1lKHJlZ2V4cCkKKyAgICAgICAgaWYgcmVnZXhwCisgICAgICAgICAg
ICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID1+IHJlZ2V4cAorICAgICAgICBlbHNl
CisgICAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAaWR4ID09IEB0b2tlbnMubGVuZ3RoCisg
ICAgICAgIGVuZAorICAgICAgICBAaWR4ICs9IDEKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgc2tp
cE5ld0xpbmUKKyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiXG4iCisgICAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIHBhcnNlUHJl
ZGljYXRlQXRvbQorICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJub3QiCisgICAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHBhcnNlUHJlZGljYXRlQXRvbQorICAgICAgICBlbHNp
ZiBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAg
ICBza2lwTmV3TGluZQorICAgICAgICAgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGUKKyAgICAg
ICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIikiCisgICAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgICAgIHJlc3VsdAorICAgICAgICBlbHNpZiBAdG9rZW5zW0Bp
ZHhdID09ICJ0cnVlIgorICAgICAgICAgICAgcmVzdWx0ID0gVHJ1ZS5pbnN0YW5jZQorICAgICAg
ICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICByZXN1bHQKKyAgICAgICAgZWxzaWYgQHRva2Vu
c1tAaWR4XSA9PSAiZmFsc2UiCisgICAgICAgICAgICByZXN1bHQgPSBGYWxzZS5pbnN0YW5jZQor
ICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICByZXN1bHQKKyAgICAgICAgZWxzaWYg
aXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAgIHJlc3VsdCA9IFNldHRpbmcu
Zm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQor
ICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICByZXN1bHQKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcGFyc2VFcnJvcgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgcGFyc2VQcmVkaWNhdGVBbmQKKyAgICAgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBdG9t
CisgICAgICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gImFuZCIKKyAgICAgICAgICAgIGNvZGVP
cmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICAgIEBpZHggKz0gMQor
ICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgIHJpZ2h0ID0gcGFyc2VQcmVkaWNh
dGVBdG9tCisgICAgICAgICAgICByZXN1bHQgPSBBbmQubmV3KGNvZGVPcmlnaW4sIHJlc3VsdCwg
cmlnaHQpCisgICAgICAgIGVuZAorICAgICAgICByZXN1bHQKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgIyBzb21lIGV4YW1wbGVzIG9mIHByZWNlZGVuY2U6
CisgICAgICAgICMgbm90IGEgYW5kIGIgLT4gKG5vdCBhKSBhbmQgYgorICAgICAgICAjIGEgYW5k
IGIgb3IgYyAtPiAoYSBhbmQgYikgb3IgYworICAgICAgICAjIGEgb3IgYiBhbmQgYyAtPiBhIG9y
IChiIGFuZCBjKQorICAgICAgICAKKyAgICAgICAgcmVzdWx0ID0gcGFyc2VQcmVkaWNhdGVBbmQK
KyAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAib3IiCisgICAgICAgICAgICBjb2RlT3Jp
Z2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAg
ICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICByaWdodCA9IHBhcnNlUHJlZGljYXRl
QW5kCisgICAgICAgICAgICByZXN1bHQgPSBPci5uZXcoY29kZU9yaWdpbiwgcmVzdWx0LCByaWdo
dCkKKyAgICAgICAgZW5kCisgICAgICAgIHJlc3VsdAorICAgIGVuZAorICAgIAorICAgIGRlZiBw
YXJzZVZhcmlhYmxlCisgICAgICAgIGlmIGlzUmVnaXN0ZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAg
ICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPX4gRlBSX1BBVFRFUk4KKyAgICAgICAgICAgICAgICBy
ZXN1bHQgPSBGUFJlZ2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0
b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJl
c3VsdCA9IFJlZ2lzdGVySUQuZm9yTmFtZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tl
bnNbQGlkeF0uc3RyaW5nKQorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2lmIGlzSWRlbnRp
ZmllcihAdG9rZW5zW0BpZHhdKQorICAgICAgICAgICAgcmVzdWx0ID0gVmFyaWFibGUuZm9yTmFt
ZShAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAg
ICBlbHNlCisgICAgICAgICAgICBwYXJzZUVycm9yCisgICAgICAgIGVuZAorICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgcmVzdWx0CisgICAgZW5kCisgICAgCisgICAgZGVmIHBhcnNlQWRkcmVz
cyhvZmZzZXQpCisgICAgICAgIHBhcnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gIlsi
CisgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAg
CisgICAgICAgICMgVGhyZWUgcG9zc2liaWxpdGllczoKKyAgICAgICAgIyBbXSAgICAgICAtPiBB
YnNvbHV0ZUFkZHJlc3MKKyAgICAgICAgIyBbYV0gICAgICAtPiBBZGRyZXNzCisgICAgICAgICMg
W2EsYl0gICAgLT4gQmFzZUluZGV4IHdpdGggc2NhbGUgPSAxCisgICAgICAgICMgW2EsYixjXSAg
LT4gQmFzZUluZGV4CisgICAgICAgIAorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgaWYgQHRv
a2Vuc1tAaWR4XSA9PSAiXSIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgcmV0
dXJuIEFic29sdXRlQWRkcmVzcy5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0KQorICAgICAgICBlbmQK
KyAgICAgICAgYSA9IHBhcnNlVmFyaWFibGUKKyAgICAgICAgaWYgQHRva2Vuc1tAaWR4XSA9PSAi
XSIKKyAgICAgICAgICAgIHJlc3VsdCA9IEFkZHJlc3MubmV3KGNvZGVPcmlnaW4sIGEsIG9mZnNl
dCkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRva2Vuc1tA
aWR4XSA9PSAiLCIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgYiA9IHBhcnNl
VmFyaWFibGUKKyAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIl0iCisgICAgICAgICAg
ICAgICAgcmVzdWx0ID0gQmFzZUluZGV4Lm5ldyhjb2RlT3JpZ2luLCBhLCBiLCAxLCBvZmZzZXQp
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGFyc2VFcnJvciB1bmxlc3MgQHRv
a2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAg
ICAgICBwYXJzZUVycm9yIHVubGVzcyBbIjEiLCAiMiIsICI0IiwgIjgiXS5tZW1iZXI/IEB0b2tl
bnNbQGlkeF0uc3RyaW5nCisgICAgICAgICAgICAgICAgYyA9IEB0b2tlbnNbQGlkeF0uc3RyaW5n
LnRvX2kKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBwYXJzZUVy
cm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09ICJdIgorICAgICAgICAgICAgICAgIHJlc3VsdCA9
IEJhc2VJbmRleC5uZXcoY29kZU9yaWdpbiwgYSwgYiwgYywgb2Zmc2V0KQorICAgICAgICAgICAg
ZW5kCisgICAgICAgIGVuZAorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgcmVzdWx0CisgICAg
ZW5kCisgICAgCisgICAgZGVmIHBhcnNlQ29sb25Db2xvbgorICAgICAgICBza2lwTmV3TGluZQor
ICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgIHBh
cnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICAgIG5hbWVz
ID0gW0B0b2tlbnNbQGlkeF0uc3RyaW5nXQorICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgd2hp
bGUgQHRva2Vuc1tAaWR4XSA9PSAiOjoiCisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAg
ICAgIHBhcnNlRXJyb3IgdW5sZXNzIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisgICAgICAg
ICAgICBuYW1lcyA8PCBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICAgICAgQGlkeCArPSAx
CisgICAgICAgIGVuZAorICAgICAgICByYWlzZSBpZiBuYW1lcy5lbXB0eT8KKyAgICAgICAgW2Nv
ZGVPcmlnaW4sIG5hbWVzXQorICAgIGVuZAorICAgIAorICAgIGRlZiBwYXJzZUV4cHJlc3Npb25B
dG9tCisgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIi0i
CisgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgIE5lZ0ltbWVkaWF0ZS5uZXcoQHRv
a2Vuc1tAaWR4IC0gMV0uY29kZU9yaWdpbiwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICAgICAg
ZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiKCIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgcmVzdWx0ID0gcGFyc2VFeHByZXNzaW9uCisgICAgICAgICAgICBwYXJzZUVycm9yIHVu
bGVzcyBAdG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgICByZXN1bHQKKyAgICAgICAgZWxzaWYgaXNJbnRlZ2VyIEB0b2tlbnNbQGlkeF0KKyAgICAg
ICAgICAgIHJlc3VsdCA9IEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBA
dG9rZW5zW0BpZHhdLnN0cmluZy50b19pKQorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgICByZXN1bHQKKyAgICAgICAgZWxzaWYgaXNJZGVudGlmaWVyIEB0b2tlbnNbQGlkeF0KKyAg
ICAgICAgICAgIGNvZGVPcmlnaW4sIG5hbWVzID0gcGFyc2VDb2xvbkNvbG9uCisgICAgICAgICAg
ICBpZiBuYW1lcy5zaXplID4gMQorICAgICAgICAgICAgICAgIFN0cnVjdE9mZnNldC5mb3JGaWVs
ZChjb2RlT3JpZ2luLCBuYW1lc1swLi4tMl0uam9pbignOjonKSwgbmFtZXNbLTFdKQorICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFZhcmlhYmxlLmZvck5hbWUoY29kZU9yaWdpbiwg
bmFtZXNbMF0pCisgICAgICAgICAgICBlbmQKKyAgICAgICAgZWxzaWYgaXNSZWdpc3RlciBAdG9r
ZW5zW0BpZHhdCisgICAgICAgICAgICBwYXJzZVZhcmlhYmxlCisgICAgICAgIGVsc2lmIEB0b2tl
bnNbQGlkeF0gPT0gInNpemVvZiIKKyAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAg
Y29kZU9yaWdpbiwgbmFtZXMgPSBwYXJzZUNvbG9uQ29sb24KKyAgICAgICAgICAgIFNpemVvZi5m
b3JOYW1lKGNvZGVPcmlnaW4sIG5hbWVzLmpvaW4oJzo6JykpCisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHBhcnNlRXJyb3IKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgCisgICAgZGVmIHBh
cnNlRXhwcmVzc2lvbk11bAorICAgICAgICBza2lwTmV3TGluZQorICAgICAgICByZXN1bHQgPSBw
YXJzZUV4cHJlc3Npb25BdG9tCisgICAgICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIioiCisg
ICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIqIgorICAgICAgICAgICAgICAgIEBpZHgg
Kz0gMQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IE11bEltbWVkaWF0ZXMubmV3KEB0b2tlbnNb
QGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFyc2VFeHByZXNzaW9uQXRvbSkKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZW5kCisgICAg
ICAgIGVuZAorICAgICAgICByZXN1bHQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgY291bGRCZUV4
cHJlc3Npb24KKyAgICAgICAgQHRva2Vuc1tAaWR4XSA9PSAiLSIgb3IgQHRva2Vuc1tAaWR4XSA9
PSAic2l6ZW9mIiBvciBpc0ludGVnZXIoQHRva2Vuc1tAaWR4XSkgb3IgaXNWYXJpYWJsZShAdG9r
ZW5zW0BpZHhdKSBvciBAdG9rZW5zW0BpZHhdID09ICIoIgorICAgIGVuZAorICAgIAorICAgIGRl
ZiBwYXJzZUV4cHJlc3Npb24KKyAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgcmVzdWx0ID0g
cGFyc2VFeHByZXNzaW9uTXVsCisgICAgICAgIHdoaWxlIEB0b2tlbnNbQGlkeF0gPT0gIisiIG9y
IEB0b2tlbnNbQGlkeF0gPT0gIi0iCisgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICIr
IgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IEFk
ZEltbWVkaWF0ZXMubmV3KEB0b2tlbnNbQGlkeCAtIDFdLmNvZGVPcmlnaW4sIHJlc3VsdCwgcGFy
c2VFeHByZXNzaW9uTXVsKQorICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLSIK
KyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBTdWJJ
bW1lZGlhdGVzLm5ldyhAdG9rZW5zW0BpZHggLSAxXS5jb2RlT3JpZ2luLCByZXN1bHQsIHBhcnNl
RXhwcmVzc2lvbk11bCkKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByYWlzZQor
ICAgICAgICAgICAgZW5kCisgICAgICAgIGVuZAorICAgICAgICByZXN1bHQKKyAgICBlbmQKKyAg
ICAKKyAgICBkZWYgcGFyc2VPcGVyYW5kKGNvbW1lbnQpCisgICAgICAgIHNraXBOZXdMaW5lCisg
ICAgICAgIGlmIGNvdWxkQmVFeHByZXNzaW9uCisgICAgICAgICAgICBleHByID0gcGFyc2VFeHBy
ZXNzaW9uCisgICAgICAgICAgICBpZiBAdG9rZW5zW0BpZHhdID09ICJbIgorICAgICAgICAgICAg
ICAgIHBhcnNlQWRkcmVzcyhleHByKQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGV4cHIKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJb
IgorICAgICAgICAgICAgcGFyc2VBZGRyZXNzKEltbWVkaWF0ZS5uZXcoQHRva2Vuc1tAaWR4XS5j
b2RlT3JpZ2luLCAwKSkKKyAgICAgICAgZWxzaWYgaXNMYWJlbCBAdG9rZW5zW0BpZHhdCisgICAg
ICAgICAgICByZXN1bHQgPSBMYWJlbFJlZmVyZW5jZS5uZXcoQHRva2Vuc1tAaWR4XS5jb2RlT3Jp
Z2luLCBMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4
XS5zdHJpbmcpKQorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICByZXN1bHQKKyAg
ICAgICAgZWxzaWYgaXNMb2NhbExhYmVsIEB0b2tlbnNbQGlkeF0KKyAgICAgICAgICAgIHJlc3Vs
dCA9IExvY2FsTGFiZWxSZWZlcmVuY2UubmV3KEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgTG9j
YWxMYWJlbC5mb3JOYW1lKEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbiwgQHRva2Vuc1tAaWR4XS5z
dHJpbmcpKQorICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICByZXN1bHQKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcGFyc2VFcnJvcihjb21tZW50KQorICAgICAgICBlbmQKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICBza2lwTmV3
TGluZQorICAgICAgICBjb25zdW1lKC9cQVwoXFovKQorICAgICAgICB2YXJpYWJsZXMgPSBbXQor
ICAgICAgICBsb29wIHsKKyAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICBpZiBA
dG9rZW5zW0BpZHhdID09ICIpIgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAg
ICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNpZiBpc0lkZW50aWZpZXIoQHRva2Vuc1tAaWR4
XSkKKyAgICAgICAgICAgICAgICB2YXJpYWJsZXMgPDwgVmFyaWFibGUuZm9yTmFtZShAdG9rZW5z
W0BpZHhdLmNvZGVPcmlnaW4sIEB0b2tlbnNbQGlkeF0uc3RyaW5nKQorICAgICAgICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgICAg
aWYgQHRva2Vuc1tAaWR4XSA9PSAiKSIKKyAgICAgICAgICAgICAgICAgICAgQGlkeCArPSAxCisg
ICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgZWxzaWYgQHRva2Vuc1tA
aWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBwYXJzZUVycm9yCisgICAgICAgICAgICAgICAg
ZW5kCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGFyc2VFcnJvcgorICAgICAg
ICAgICAgZW5kCisgICAgICAgIH0KKyAgICAgICAgdmFyaWFibGVzCisgICAgZW5kCisgICAgCisg
ICAgZGVmIHBhcnNlU2VxdWVuY2UoZmluYWwsIGNvbW1lbnQpCisgICAgICAgIGZpcnN0Q29kZU9y
aWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICBsaXN0ID0gW10KKyAgICAg
ICAgbG9vcCB7CisgICAgICAgICAgICBpZiAoQGlkeCA9PSBAdG9rZW5zLmxlbmd0aCBhbmQgbm90
IGZpbmFsKSBvciAoZmluYWwgYW5kIEB0b2tlbnNbQGlkeF0gPX4gZmluYWwpCisgICAgICAgICAg
ICAgICAgYnJlYWsKKyAgICAgICAgICAgIGVsc2lmIEB0b2tlbnNbQGlkeF0gPT0gIlxuIgorICAg
ICAgICAgICAgICAgICMgaWdub3JlCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAg
ICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09ICJjb25zdCIKKyAgICAgICAgICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc1ZhcmlhYmxlIEB0b2tl
bnNbQGlkeF0KKyAgICAgICAgICAgICAgICB2YXJpYWJsZSA9IFZhcmlhYmxlLmZvck5hbWUoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luLCBAdG9rZW5zW0BpZHhdLnN0cmluZykKKyAgICAgICAgICAg
ICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5z
W0BpZHhdID09ICI9IgorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAg
IHZhbHVlID0gcGFyc2VPcGVyYW5kKCJ3aGlsZSBpbnNpZGUgb2YgY29uc3QgI3t2YXJpYWJsZS5u
YW1lfSIpCisgICAgICAgICAgICAgICAgbGlzdCA8PCBDb25zdERlY2wubmV3KEB0b2tlbnNbQGlk
eF0uY29kZU9yaWdpbiwgdmFyaWFibGUsIHZhbHVlKQorICAgICAgICAgICAgZWxzaWYgQHRva2Vu
c1tAaWR4XSA9PSAiZXJyb3IiCisgICAgICAgICAgICAgICAgbGlzdCA8PCBFcnJvci5uZXcoQHRv
a2Vuc1tAaWR4XS5jb2RlT3JpZ2luKQorICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiaWYiCisgICAgICAgICAgICAgICAgY29kZU9y
aWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAgICAgICAgIEBpZHggKz0g
MQorICAgICAgICAgICAgICAgIHNraXBOZXdMaW5lCisgICAgICAgICAgICAgICAgcHJlZGljYXRl
ID0gcGFyc2VQcmVkaWNhdGUKKyAgICAgICAgICAgICAgICBjb25zdW1lKC9cQSgodGhlbil8KFxu
KSlcWi8pCisgICAgICAgICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgICBpZlRo
ZW5FbHNlID0gSWZUaGVuRWxzZS5uZXcoY29kZU9yaWdpbiwgcHJlZGljYXRlLCBwYXJzZVNlcXVl
bmNlKC9cQSgoZWxzZSl8KGVuZCl8KGVsc2lmKSlcWi8sICJ3aGlsZSBpbnNpZGUgb2YgXCJpZiAj
e3ByZWRpY2F0ZS5kdW1wfVwiIikpCisgICAgICAgICAgICAgICAgbGlzdCA8PCBpZlRoZW5FbHNl
CisgICAgICAgICAgICAgICAgd2hpbGUgQHRva2Vuc1tAaWR4XSA9PSAiZWxzaWYiCisgICAgICAg
ICAgICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAg
ICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgICAgIHNraXBOZXdMaW5l
CisgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZSA9IHBhcnNlUHJlZGljYXRlCisgICAgICAg
ICAgICAgICAgICAgIGNvbnN1bWUoL1xBKCh0aGVuKXwoXG4pKVxaLykKKyAgICAgICAgICAgICAg
ICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgICAgICAgZWxzZUNhc2UgPSBJZlRoZW5F
bHNlLm5ldyhjb2RlT3JpZ2luLCBwcmVkaWNhdGUsIHBhcnNlU2VxdWVuY2UoL1xBKChlbHNlKXwo
ZW5kKXwoZWxzaWYpKVxaLywgIndoaWxlIGluc2lkZSBvZiBcImlmICN7cHJlZGljYXRlLmR1bXB9
XCIiKSkKKyAgICAgICAgICAgICAgICAgICAgaWZUaGVuRWxzZS5lbHNlQ2FzZSA9IGVsc2VDYXNl
CisgICAgICAgICAgICAgICAgICAgIGlmVGhlbkVsc2UgPSBlbHNlQ2FzZQorICAgICAgICAgICAg
ICAgIGVuZAorICAgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gImVsc2UiCisgICAg
ICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgICAgICBpZlRoZW5FbHNl
LmVsc2VDYXNlID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBpbnNpZGUgb2YgZWxz
ZSBjYXNlIGZvciBcImlmICN7cHJlZGljYXRlLmR1bXB9XCIiKQorICAgICAgICAgICAgICAgICAg
ICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHBh
cnNlRXJyb3IgdW5sZXNzIEB0b2tlbnNbQGlkeF0gPT0gImVuZCIKKyAgICAgICAgICAgICAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBlbHNpZiBAdG9r
ZW5zW0BpZHhdID09ICJtYWNybyIKKyAgICAgICAgICAgICAgICBjb2RlT3JpZ2luID0gQHRva2Vu
c1tAaWR4XS5jb2RlT3JpZ2luCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAg
ICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBpc0lk
ZW50aWZpZXIoQHRva2Vuc1tAaWR4XSkKKyAgICAgICAgICAgICAgICBuYW1lID0gQHRva2Vuc1tA
aWR4XS5zdHJpbmcKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICB2
YXJpYWJsZXMgPSBwYXJzZU1hY3JvVmFyaWFibGVzCisgICAgICAgICAgICAgICAgYm9keSA9IHBh
cnNlU2VxdWVuY2UoL1xBZW5kXFovLCAid2hpbGUgaW5zaWRlIG9mIG1hY3JvICN7bmFtZX0iKQor
ICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGxpc3QgPDwgTWFjcm8u
bmV3KGNvZGVPcmlnaW4sIG5hbWUsIHZhcmlhYmxlcywgYm9keSkKKyAgICAgICAgICAgIGVsc2lm
IGlzSW5zdHJ1Y3Rpb24gQHRva2Vuc1tAaWR4XQorICAgICAgICAgICAgICAgIGNvZGVPcmlnaW4g
PSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAgICAgICAgICBuYW1lID0gQHRva2Vu
c1tAaWR4XS5zdHJpbmcKKyAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAg
ICBpZiAobm90IGZpbmFsIGFuZCBAaWR4ID09IEB0b2tlbnMuc2l6ZSkgb3IgKGZpbmFsIGFuZCBA
dG9rZW5zW0BpZHhdID1+IGZpbmFsKQorICAgICAgICAgICAgICAgICAgICAjIFplcm8gb3BlcmFu
ZCBpbnN0cnVjdGlvbiwgYW5kIGl0J3MgdGhlIGxhc3Qgb25lLgorICAgICAgICAgICAgICAgICAg
ICBsaXN0IDw8IEluc3RydWN0aW9uLm5ldyhjb2RlT3JpZ2luLCBuYW1lLCBbXSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhdID09
ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgIyBaZXJvIG9wZXJhbmQgaW5zdHJ1Y3Rpb24uCisg
ICAgICAgICAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5h
bWUsIFtdKQorICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICMgSXQncyBkZWZpbml0ZWx5IGFuIGluc3RydWN0aW9u
LCBhbmQgaXQgaGFzIGF0IGxlYXN0IG9uZSBvcGVyYW5kLgorICAgICAgICAgICAgICAgICAgICBv
cGVyYW5kcyA9IFtdCisgICAgICAgICAgICAgICAgICAgIGVuZE9mU2VxdWVuY2UgPSBmYWxzZQor
ICAgICAgICAgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJh
bmRzIDw8IHBhcnNlT3BlcmFuZCgid2hpbGUgaW5zaWRlIG9mIGluc3RydWN0aW9uICN7bmFtZX0i
KQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5vdCBmaW5hbCBhbmQgQGlkeCA9PSBAdG9r
ZW5zLnNpemUpIG9yIChmaW5hbCBhbmQgQHRva2Vuc1tAaWR4XSA9fiBmaW5hbCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGluc3RydWN0aW9uIGFuZCBvZiB0
aGUgc2VxdWVuY2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kT2ZTZXF1ZW5jZSA9
IHRydWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzaWYgQHRva2Vuc1tAaWR4XSA9PSAiLCIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAjIEhhcyBhbm90aGVyIG9wZXJhbmQuCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgQGlkeCArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiBAdG9rZW5zW0BpZHhd
ID09ICJcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRoZSBlbmQgb2YgdGhlIGlu
c3RydWN0aW9uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VFcnJvcigiRXhwZWN0ZWQgYSBjb21t
YSwgbmV3bGluZSwgb3IgI3tmaW5hbH0gYWZ0ZXIgI3tvcGVyYW5kcy5sYXN0LmR1bXB9IikKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgICAgIGxpc3QgPDwgSW5zdHJ1Y3Rpb24ubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9w
ZXJhbmRzKQorICAgICAgICAgICAgICAgICAgICBpZiBlbmRPZlNlcXVlbmNlCisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAg
ICAgICBlbmQKKyAgICAgICAgICAgIGVsc2lmIGlzSWRlbnRpZmllciBAdG9rZW5zW0BpZHhdCisg
ICAgICAgICAgICAgICAgY29kZU9yaWdpbiA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAg
ICAgICAgICAgICAgIG5hbWUgPSBAdG9rZW5zW0BpZHhdLnN0cmluZworICAgICAgICAgICAgICAg
IEBpZHggKz0gMQorICAgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIigiCisgICAg
ICAgICAgICAgICAgICAgICMgTWFjcm8gaW52b2NhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAg
QGlkeCArPSAxCisgICAgICAgICAgICAgICAgICAgIG9wZXJhbmRzID0gW10KKyAgICAgICAgICAg
ICAgICAgICAgc2tpcE5ld0xpbmUKKyAgICAgICAgICAgICAgICAgICAgaWYgQHRva2Vuc1tAaWR4
XSA9PSAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBsb29wIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBza2lwTmV3TGluZQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIEB0b2tlbnNbQGlkeF0gPT0gIm1hY3JvIgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAjIEl0J3MgYSBtYWNybyBsYW1iZGEhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvZGVPcmlnaW5Jbm5lciA9IEB0b2tlbnNbQGlkeF0uY29kZU9yaWdpbgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBAaWR4ICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdmFyaWFibGVzID0gcGFyc2VNYWNyb1ZhcmlhYmxlcworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib2R5ID0gcGFyc2VTZXF1ZW5jZSgvXEFlbmRcWi8sICJ3aGlsZSBp
bnNpZGUgb2YgYW5vbnltb3VzIG1hY3JvIHBhc3NlZCBhcyBhcmd1bWVudCB0byAje25hbWV9IikK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wZXJhbmRzIDw8IE1hY3JvLm5ldyhjb2RlT3JpZ2luSW5uZXIs
IG5pbCwgdmFyaWFibGVzLCBib2R5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmFuZHMgPDwgcGFyc2VPcGVyYW5k
KCJ3aGlsZSBpbnNpZGUgb2YgbWFjcm8gY2FsbCB0byAje25hbWV9IikKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwTmV3TGlu
ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIEB0b2tlbnNbQGlkeF0gPT0gIikiCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpZHggKz0gMQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lm
IEB0b2tlbnNbQGlkeF0gPT0gIiwiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBp
ZHggKz0gMQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcGFyc2VFcnJvciAiVW5leHBlY3RlZCAje0B0b2tlbnNbQGlkeF0u
c3RyaW5nLmluc3BlY3R9IHdoaWxlIHBhcnNpbmcgaW52b2NhdGlvbiBvZiBtYWNybyAje25hbWV9
IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAgICAgbGlzdCA8
PCBNYWNyb0NhbGwubmV3KGNvZGVPcmlnaW4sIG5hbWUsIG9wZXJhbmRzKQorICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0ZWQgXCIoXCIg
YWZ0ZXIgI3tuYW1lfSIKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVsc2lmIGlz
TGFiZWwgQHRva2Vuc1tAaWR4XSBvciBpc0xvY2FsTGFiZWwgQHRva2Vuc1tAaWR4XQorICAgICAg
ICAgICAgICAgIGNvZGVPcmlnaW4gPSBAdG9rZW5zW0BpZHhdLmNvZGVPcmlnaW4KKyAgICAgICAg
ICAgICAgICBuYW1lID0gQHRva2Vuc1tAaWR4XS5zdHJpbmcKKyAgICAgICAgICAgICAgICBAaWR4
ICs9IDEKKyAgICAgICAgICAgICAgICBwYXJzZUVycm9yIHVubGVzcyBAdG9rZW5zW0BpZHhdID09
ICI6IgorICAgICAgICAgICAgICAgICMgSXQncyBhIGxhYmVsLgorICAgICAgICAgICAgICAgIGlm
IGlzTGFiZWwgbmFtZQorICAgICAgICAgICAgICAgICAgICBsaXN0IDw8IExhYmVsLmZvck5hbWUo
Y29kZU9yaWdpbiwgbmFtZSkKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ICAgIGxpc3QgPDwgTG9jYWxMYWJlbC5mb3JOYW1lKGNvZGVPcmlnaW4sIG5hbWUpCisgICAgICAg
ICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgQGlkeCArPSAxCisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgcGFyc2VFcnJvciAiRXhwZWN0aW5nIHRlcm1pbmFsICN7ZmluYWx9
ICN7Y29tbWVudH0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBTZXF1ZW5j
ZS5uZXcoZmlyc3RDb2RlT3JpZ2luLCBsaXN0KQorICAgIGVuZAorZW5kCisKK2RlZiBwYXJzZSh0
b2tlbnMpCisgICAgcGFyc2VyID0gUGFyc2VyLm5ldyh0b2tlbnMpCisgICAgcGFyc2VyLnBhcnNl
U2VxdWVuY2UobmlsLCAiIikKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS9yZWdpc3RlcnMucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vcmVnaXN0ZXJzLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYw
IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitHUFJTID0KKyAgICBb
CisgICAgICJ0MCIsCisgICAgICJ0MSIsCisgICAgICJ0MiIsCisgICAgICJ0MyIsCisgICAgICJ0
NCIsCisgICAgICJjZnIiLAorICAgICAiYTAiLAorICAgICAiYTEiLAorICAgICAicjAiLAorICAg
ICAicjEiLAorICAgICAic3AiLAorICAgICAibHIiCisgICAgXQorCitGUFJTID0KKyAgICBbCisg
ICAgICJmdDAiLAorICAgICAiZnQxIiwKKyAgICAgImZ0MiIsCisgICAgICJmdDMiLAorICAgICAi
ZnQ0IiwKKyAgICAgImZ0NSIsCisgICAgICJmYTAiLAorICAgICAiZmExIiwKKyAgICAgImZhMiIs
CisgICAgICJmYTMiLAorICAgICAiZnIiCisgICAgXQorCitSRUdJU1RFUlMgPSBHUFJTICsgRlBS
UworCitHUFJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgoJyArIEdQUlMuam9pbignKXwoJykg
KyAnKSlcXFonKQorRlBSX1BBVFRFUk4gPSBSZWdleHAubmV3KCdcXEEoKCcgKyBGUFJTLmpvaW4o
Jyl8KCcpICsgJykpXFxaJykKKworUkVHSVNURVJfUEFUVEVSTiA9IFJlZ2V4cC5uZXcoJ1xcQSgo
JyArIFJFR0lTVEVSUy5qb2luKCcpfCgnKSArICcpKVxcWicpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvb2ZmbGluZWFzbS9zZWxmX2hhc2gucmIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2VsZl9oYXNoLnJiCShyZXZpc2lvbiAwKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2VsZl9oYXNoLnJiCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQ2IEBACisjIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMg
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyMgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisjIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisjIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCity
ZXF1aXJlICJkaWdlc3Qvc2hhMSIKK3JlcXVpcmUgInBhdGhuYW1lIgorCisjCisjIHNlbGZIYXNo
IC0+IFNIQTEgaGV4ZGlnZXN0CisjCisjIFJldHVybnMgYSBoYXNoIG9mIHRoZSBvZmZsaW5lYXNt
IHNvdXJjZSBjb2RlLiBUaGlzIGFsbG93cyBkZXBlbmRlbmN5CisjIHRyYWNraW5nIGZvciBub3Qg
anVzdCBjaGFuZ2VzIGluIGlucHV0LCBidXQgYWxzbyBjaGFuZ2VzIGluIHRoZSBhc3NlbWJsZXIK
KyMgaXRzZWxmLgorIworCitkZWYgc2VsZkhhc2gKKyAgICBjb250ZW50cyA9ICIiCisgICAgbXlQ
YXRoID0gUGF0aG5hbWUubmV3KF9fRklMRV9fKS5kaXJuYW1lCisgICAgRGlyLmZvcmVhY2gobXlQ
YXRoKSB7CisgICAgICAgIHwgZW50cnkgfAorICAgICAgICBpZiBlbnRyeSA9fiAvXC5yYiQvCisg
ICAgICAgICAgICBjb250ZW50cyArPSBJTzo6cmVhZChteVBhdGggKyBlbnRyeSkKKyAgICAgICAg
ZW5kCisgICAgfQorICAgIHJldHVybiBEaWdlc3Q6OlNIQTEuaGV4ZGlnZXN0KGNvbnRlbnRzKQor
ZW5kCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdzLnJi
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9vZmZsaW5lYXNtL3NldHRpbmdz
LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29mZmxpbmVhc20vc2V0
dGluZ3MucmIJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjA1IEBACisjIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisjICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyMgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisjIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyMgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisjIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyMgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyMgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisjIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisjIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisjIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyMgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorCityZXF1aXJlICJhc3QiCityZXF1aXJlICJiYWNrZW5kcyIK
K3JlcXVpcmUgInBhcnNlciIKK3JlcXVpcmUgInRyYW5zZm9ybSIKKworIworIyBjb21wdXRlU2V0
dGluZ3NDb21iaW5hdGlvbnMoYXN0KSAtPiBzZXR0aW5nc0NvbWJpYXRpb25zCisjCisjIENvbXB1
dGVzIGFuIGFycmF5IG9mIHNldHRpbmdzIG1hcHMsIHdoZXJlIGEgc2V0dGluZ3MgbWFwIGNvbnN0
aXR1dGVzCisjIGEgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFzc2VtYmx5IGNvZGUgYmVpbmcgZ2Vu
ZXJhdGVkLiBUaGUgbWFwCisjIGNvbnRhaW5zIGtleSB2YWx1ZSBwYWlycyB3aGVyZSBrZXlzIGFy
ZSBzZXR0aW5ncyBuYW1lcyAoc3RyaW5ncykgYW5kCisjIHRoZSB2YWx1ZXMgYXJlIGJvb2xlYW5z
ICh0cnVlIGZvciBlbmFibGVkLCBmYWxzZSBmb3IgZGlzYWJsZWQpLgorIworCitkZWYgY29tcHV0
ZVNldHRpbmdzQ29tYmluYXRpb25zKGFzdCkKKyAgICBzZXR0aW5nc0NvbWJpbmF0aW9ucyA9IFtd
CisgICAgCisgICAgZGVmIHNldHRpbmdzQ29tYmluYXRvcihzZXR0aW5nc0NvbWJpbmF0aW9ucywg
bWFwU29GYXIsIHJlbWFpbmluZykKKyAgICAgICAgaWYgcmVtYWluaW5nLmVtcHR5PworICAgICAg
ICAgICAgc2V0dGluZ3NDb21iaW5hdGlvbnMgPDwgbWFwU29GYXIKKyAgICAgICAgICAgIHJldHVy
bgorICAgICAgICBlbmQKKyAgICAgICAgCisgICAgICAgIG5ld01hcCA9IG1hcFNvRmFyLmR1cAor
ICAgICAgICBuZXdNYXBbcmVtYWluaW5nWzBdXSA9IHRydWUKKyAgICAgICAgc2V0dGluZ3NDb21i
aW5hdG9yKHNldHRpbmdzQ29tYmluYXRpb25zLCBuZXdNYXAsIHJlbWFpbmluZ1sxLi4tMV0pCisg
ICAgICAgIAorICAgICAgICBuZXdNYXAgPSBtYXBTb0Zhci5kdXAKKyAgICAgICAgbmV3TWFwW3Jl
bWFpbmluZ1swXV0gPSBmYWxzZQorICAgICAgICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3ND
b21iaW5hdGlvbnMsIG5ld01hcCwgcmVtYWluaW5nWzEuLi0xXSkKKyAgICBlbmQKKyAgICAKKyAg
ICBzZXR0aW5nc0NvbWJpbmF0b3Ioc2V0dGluZ3NDb21iaW5hdGlvbnMsIHt9LCAoYXN0LmZpbHRl
cihTZXR0aW5nKS51bmlxLmNvbGxlY3R7fHZ8IHYubmFtZX0gKyBbIlg4NiIsICJBUk12NyJdKS51
bmlxKQorICAgIAorICAgIHNldHRpbmdzQ29tYmluYXRpb25zCitlbmQKKworIworIyBmb3JTZXR0
aW5ncyhjb25jcmV0ZVNldHRpbmdzLCBhc3QpIHsKKyMgICAgIHwgY29uY3JldGVTZXR0aW5ncywg
bG93TGV2ZWxBU1QsIGJhY2tlbmQgfCAuLi4gfQorIworIyBEZXRlcm1pbmVzIGlmIHRoZSBzZXR0
aW5ncyBjb21iaW5hdGlvbiBpcyB2YWxpZCwgYW5kIGlmIHNvLCBjYWxscworIyB0aGUgYmxvY2sg
d2l0aCB0aGUgaW5mb3JtYXRpb24geW91IG5lZWQgdG8gZ2VuZXJhdGUgY29kZS4KKyMKKworZGVm
IGZvclNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCkKKyAgICAjIENoZWNrIHdoaWNoIGFy
Y2hpdGVjdHVyZXMgdGhpcyBjb21iaW5hdG9yIGNsYWltcyB0byBzdXBwb3J0LgorICAgIG51bUNs
YWltZWRCYWNrZW5kcyA9IDAKKyAgICBzZWxlY3RlZEJhY2tlbmQgPSBuaWwKKyAgICBCQUNLRU5E
Uy5lYWNoIHsKKyAgICAgICAgfCBiYWNrZW5kIHwKKyAgICAgICAgaXNTdXBwb3J0ZWQgPSBjb25j
cmV0ZVNldHRpbmdzW2JhY2tlbmRdCisgICAgICAgIHJhaXNlIHVubGVzcyBpc1N1cHBvcnRlZCAh
PSBuaWwKKyAgICAgICAgbnVtQ2xhaW1lZEJhY2tlbmRzICs9IGlmIGlzU3VwcG9ydGVkIHRoZW4g
MSBlbHNlIDAgZW5kCisgICAgICAgIGlmIGlzU3VwcG9ydGVkCisgICAgICAgICAgICBzZWxlY3Rl
ZEJhY2tlbmQgPSBiYWNrZW5kCisgICAgICAgIGVuZAorICAgIH0KKyAgICAKKyAgICByZXR1cm4g
aWYgbnVtQ2xhaW1lZEJhY2tlbmRzID4gMQorICAgIAorICAgICMgUmVzb2x2ZSB0aGUgQVNUIGRv
d24gdG8gYSBsb3ctbGV2ZWwgZm9ybSAobm8gbWFjcm9zIG9yIGNvbmRpdGlvbmFscykuCisgICAg
bG93TGV2ZWxBU1QgPSBhc3QucmVzb2x2ZVNldHRpbmdzKGNvbmNyZXRlU2V0dGluZ3MpCisgICAg
CisgICAgeWllbGQgY29uY3JldGVTZXR0aW5ncywgbG93TGV2ZWxBU1QsIHNlbGVjdGVkQmFja2Vu
ZAorZW5kCisKKyMKKyMgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5hdGlvbihhc3QpIHsKKyMg
ICAgIHwgY29uY3JldGVTZXR0aW5ncywgYXN0LCBiYWNrZW5kLCBpbmRleCB8IC4uLiB9CisjCisj
IGZvckVhY2hWYWxpZFNldHRpbmdzQ29tYmluYXRpb24oYXN0LCBzZXR0aW5nc0NvbWJpbmF0aW9u
cykgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4u
IH0KKyMKKyMgRXhlY3V0ZXMgdGhlIGdpdmVuIGJsb2NrIGZvciBlYWNoIHZhbGlkIHNldHRpbmdz
IGNvbWJpbmF0aW9uIGluIHRoZQorIyBzZXR0aW5ncyBtYXAuIFRoZSBhc3QgcGFzc2VkIGludG8g
dGhlIGJsb2NrIGlzIHJlc29sdmVkCisjIChhc3QucmVzb2x2ZSkgYWdhaW5zdCB0aGUgc2V0dGlu
Z3MuCisjCisjIFRoZSBmaXJzdCBmb3JtIHdpbGwgY2FsbCBjb21wdXRlU2V0dGluZ3NDb21iaW5h
dGlvbnMoYXN0KSBmb3IgeW91LgorIworCitkZWYgZm9yRWFjaFZhbGlkU2V0dGluZ3NDb21iaW5h
dGlvbihhc3QsICpvcHRpb25hbFNldHRpbmdzQ29tYmluYXRpb25zKQorICAgIHJhaXNlIGlmIG9w
dGlvbmFsU2V0dGluZ3NDb21iaW5hdGlvbnMuc2l6ZSA+IDEKKyAgICAKKyAgICBpZiBvcHRpb25h
bFNldHRpbmdzQ29tYmluYXRpb25zLmVtcHR5PworICAgICAgICBzZXR0aW5nc0NvbWJpbmF0aW9u
cyA9IGNvbXB1dGVTZXR0aW5nc0NvbWJpbmF0aW9ucyhhc3QpCisgICAgZWxzZQorICAgICAgICBz
ZXR0aW5nc0NvbWJpbmF0aW9ucyA9IG9wdGlvbmFsU2V0dGluZ3NDb21iaWF0aW9uc1swXQorICAg
IGVuZAorICAgIAorICAgIHNldHRpbmdzQ29tYmluYXRpb25zLmVhY2hfd2l0aF9pbmRleCB7Cisg
ICAgICAgIHwgY29uY3JldGVTZXR0aW5ncywgaW5kZXggfAorICAgICAgICBmb3JTZXR0aW5ncyhj
b25jcmV0ZVNldHRpbmdzLCBhc3QpIHsKKyAgICAgICAgICAgIHwgY29uY3JldGVTZXR0aW5nc18s
IGxvd0xldmVsQVNULCBiYWNrZW5kIHwKKyAgICAgICAgICAgIHlpZWxkIGNvbmNyZXRlU2V0dGlu
Z3MsIGxvd0xldmVsQVNULCBiYWNrZW5kLCBpbmRleAorICAgICAgICB9CisgICAgfQorZW5kCisK
KyMKKyMgY3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisjCisjIFJldHVybnMgdGhl
IEMrKyBjb2RlIHVzZWQgdG8gdGVzdCBpZiB3ZSBhcmUgaW4gYSBjb25maWd1cmF0aW9uIHRoYXQK
KyMgY29ycmVzcG9uZHMgdG8gdGhlIGdpdmVuIGNvbmNyZXRlIHNldHRpbmdzLgorIworCitkZWYg
Y3BwU2V0dGluZ3NUZXN0KGNvbmNyZXRlU2V0dGluZ3MpCisgICAgIiNpZiAiICsgY29uY3JldGVT
ZXR0aW5ncy50b19hLmNvbGxlY3R7CisgICAgICAgIHwgcGFpciB8CisgICAgICAgIChpZiBwYWly
WzFdCisgICAgICAgICAgICAgIiIKKyAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAiISIKKyAg
ICAgICAgIGVuZCkgKyAiT0ZGTElORV9BU01fIiArIHBhaXJbMF0KKyAgICB9LmpvaW4oIiAmJiAi
KQorZW5kCisKKyMKKyMgaXNBU1RFcnJvbmVvdXMoYXN0KQorIworIyBUZXN0cyB0byBzZWUgaWYg
dGhlIEFTVCBjbGFpbXMgdGhhdCB0aGVyZSBpcyBhbiBlcnJvciAtIGkuZS4gaWYgdGhlCisjIHVz
ZXIncyBjb2RlLCBhZnRlciBzZXR0aW5ncyByZXNvbHV0aW9uLCBoYXMgRXJyb3Igbm9kZXMuCisj
CisKK2RlZiBpc0FTVEVycm9uZW91cyhhc3QpCisgICAgbm90IGFzdC5maWx0ZXIoRXJyb3IpLmVt
cHR5PworZW5kCisKKyMKKyMgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNldHRpbmdzKQor
IworIyBFbWl0cyBhIGNoZWNrIHRoYXQgYXNzZXJ0cyB0aGF0IHdlJ3JlIHVzaW5nIHRoZSBnaXZl
biBjb25maWd1cmF0aW9uLgorIworCitkZWYgYXNzZXJ0Q29uZmlndXJhdGlvbihjb25jcmV0ZVNl
dHRpbmdzKQorICAgICRvdXRwdXQucHV0cyBjcHBTZXR0aW5nc1Rlc3QoY29uY3JldGVTZXR0aW5n
cykKKyAgICAkb3V0cHV0LnB1dHMgIiNlbHNlIgorICAgICRvdXRwdXQucHV0cyAiI2Vycm9yIFwi
Q29uZmlndXJhdGlvbiBtaXNtYXRjaC5cIiIKKyAgICAkb3V0cHV0LnB1dHMgIiNlbmRpZiIKK2Vu
ZAorCisjCisjIGVtaXRDb2RlSW5Db25maWd1cmF0aW9uKGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwg
YmFja2VuZCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQgfCAuLi4g
fQorIworIyBFbWl0cyBhbGwgcmVsZXZhbnQgZ3VhcmRzIHRvIHNlZSBpZiB0aGUgY29uZmlndXJh
dGlvbiBob2xkcyBhbmQKKyMgY2FsbHMgdGhlIGJsb2NrIGlmIHRoZSBjb25maWd1cmF0aW9uIGlz
IG5vdCBlcnJvbmVvdXMuCisjCisKK2RlZiBlbWl0Q29kZUluQ29uZmlndXJhdGlvbihjb25jcmV0
ZVNldHRpbmdzLCBhc3QsIGJhY2tlbmQpCisgICAgJG91dHB1dC5wdXRzIGNwcFNldHRpbmdzVGVz
dChjb25jcmV0ZVNldHRpbmdzKQorICAgIAorICAgIGlmIGlzQVNURXJyb25lb3VzKGFzdCkKKyAg
ICAgICAgJG91dHB1dC5wdXRzICIjZXJyb3IgXCJJbnZhbGlkIGNvbmZpZ3VyYXRpb24uXCIiCisg
ICAgZWxzaWYgbm90IFdPUktJTkdfQkFDS0VORFMuaW5jbHVkZT8gYmFja2VuZAorICAgICAgICAk
b3V0cHV0LnB1dHMgIiNlcnJvciBcIlRoaXMgYmFja2VuZCBpcyBub3Qgc3VwcG9ydGVkIHlldC5c
IiIKKyAgICBlbHNlCisgICAgICAgIHlpZWxkIGNvbmNyZXRlU2V0dGluZ3MsIGFzdCwgYmFja2Vu
ZAorICAgIGVuZAorICAgIAorICAgICRvdXRwdXQucHV0cyAiI2VuZGlmIgorZW5kCisKKyMKKyMg
ZW1pdENvZGVJbkFsbENvbmZpZ3VyYXRpb25zKGFzdCkgeworIyAgICAgfCBjb25jcmV0ZVNldHRp
bmdzLCBhc3QsIGJhY2tlbmQsIGluZGV4IHwgLi4uIH0KKyMKKyMgRW1pdHMgZ3VhcmQgY29kZXMg
Zm9yIGFsbCB2YWxpZCBjb25maWd1cmF0aW9ucywgYW5kIGNhbGxzIHRoZSBibG9jaworIyBmb3Ig
dGhvc2UgY29uZmlndXJhdGlvbnMgdGhhdCBhcmUgdmFsaWQgYW5kIG5vdCBlcnJvbmVvdXMuCisj
CisKK2RlZiBlbWl0Q29kZUluQWxsQ29uZmlndXJhdGlvbnMoYXN0KQorICAgIGZvckVhY2hWYWxp
ZFNldHRpbmdzQ29tYmluYXRpb24oYXN0KSB7CisgICAgICAgIHwgY29uY3JldGVTZXR0aW5ncywg
bG93TGV2ZWxBU1QsIGJhY2tlbmQsIGluZGV4IHwKKyAgICAgICAgJG91dHB1dC5wdXRzIGNwcFNl
dHRpbmdzVGVzdChjb25jcmV0ZVNldHRpbmdzKQorICAgICAgICB5aWVsZCBjb25jcmV0ZVNldHRp
bmdzLCBsb3dMZXZlbEFTVCwgYmFja2VuZCwgaW5kZXgKKyAgICAgICAgJG91dHB1dC5wdXRzICIj
ZW5kaWYiCisgICAgfQorZW5kCisKKworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvb2Zm
bGluZWFzbS90cmFuc2Zvcm0ucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3Jl
L29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL29mZmxpbmVhc20vdHJhbnNmb3JtLnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0
MiBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisj
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisjIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcmVxdWlyZSAiYXN0
IgorCisjCisjIG5vZGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorIworIyBDb25zdHJ1Y3Qg
YSBuZXcgQVNUIHRoYXQgZG9lcyBub3QgaGF2ZSBhbnkgSWZUaGVuRWxzZSBub2RlcyBieQorIyBz
dWJzdGl0dXRpbmcgY29uY3JldGUgYm9vbGVhbiB2YWx1ZXMgZm9yIGVhY2ggU2V0dGluZy4KKyMK
KworY2xhc3MgTm9kZQorICAgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICAg
IG1hcENoaWxkcmVuIHsKKyAgICAgICAgICAgIHwgY2hpbGQgfAorICAgICAgICAgICAgY2hpbGQu
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgICB9CisgICAgZW5kCitlbmQKKworY2xh
c3MgVHJ1ZQorICAgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpCisgICAgICAgIHNlbGYK
KyAgICBlbmQKK2VuZAorCitjbGFzcyBGYWxzZQorICAgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0
dGluZ3MpCisgICAgICAgIHNlbGYKKyAgICBlbmQKK2VuZAorCitjbGFzcyBTZXR0aW5nCisgICAg
ZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgc2V0dGluZ3NbQG5hbWVdLmFz
Tm9kZQorICAgIGVuZAorZW5kCisKK2NsYXNzIEFuZAorICAgIGRlZiByZXNvbHZlU2V0dGluZ3Mo
c2V0dGluZ3MpCisgICAgICAgIChAbGVmdC5yZXNvbHZlU2V0dGluZ3Moc2V0dGluZ3MpLnZhbHVl
IGFuZCBAcmlnaHQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgICAg
ZW5kCitlbmQKKworY2xhc3MgT3IKKyAgICBkZWYgcmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQor
ICAgICAgICAoQGxlZnQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSBvciBAcmlnaHQu
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgICAgZW5kCitlbmQKKwor
Y2xhc3MgTm90CisgICAgZGVmIHJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAgICAgKG5v
dCBAY2hpbGQucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1ZSkuYXNOb2RlCisgICAgZW5k
CitlbmQKKworY2xhc3MgSWZUaGVuRWxzZQorICAgIGRlZiByZXNvbHZlU2V0dGluZ3Moc2V0dGlu
Z3MpCisgICAgICAgIGlmIEBwcmVkaWNhdGUucmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKS52YWx1
ZQorICAgICAgICAgICAgQHRoZW5DYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgQGVsc2VDYXNlLnJlc29sdmVTZXR0aW5ncyhzZXR0aW5ncykK
KyAgICAgICAgZW5kCisgICAgZW5kCitlbmQKKworY2xhc3MgU2VxdWVuY2UKKyAgICBkZWYgcmVz
b2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgICBuZXdMaXN0ID0gW10KKyAgICAgICAgQGxp
c3QuZWFjaCB7CisgICAgICAgICAgICB8IGl0ZW0gfAorICAgICAgICAgICAgaXRlbSA9IGl0ZW0u
cmVzb2x2ZVNldHRpbmdzKHNldHRpbmdzKQorICAgICAgICAgICAgaWYgaXRlbS5pc19hPyBTZXF1
ZW5jZQorICAgICAgICAgICAgICAgIG5ld0xpc3QgKz0gaXRlbS5saXN0CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBpdGVtCisgICAgICAgICAgICBlbmQKKyAg
ICAgICAgfQorICAgICAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkKKyAgICBl
bmQKK2VuZAorCisjCisjIG5vZGUuZGVtYWNyb2lmeShtYWNyb3MpCisjIG5vZGUuc3Vic3RpdHV0
ZShtYXBwaW5nKQorIworIyBkZW1hY3JvaWZ5KCkgY29uc3RydWN0cyBhIG5ldyBBU1QgdGhhdCBk
b2VzIG5vdCBoYXZlIGFueSBNYWNybworIyBub2Rlcywgd2hpbGUgc3Vic3RpdHV0ZSgpIHJlcGxh
Y2VzIFZhcmlhYmxlIG5vZGVzIHdpdGggdGhlIGdpdmVuCisjIG5vZGVzIGluIHRoZSBtYXBwaW5n
LgorIworCitjbGFzcyBOb2RlCisgICAgZGVmIGRlbWFjcm9pZnkobWFjcm9zKQorICAgICAgICBt
YXBDaGlsZHJlbiB7CisgICAgICAgICAgICB8IGNoaWxkIHwKKyAgICAgICAgICAgIGNoaWxkLmRl
bWFjcm9pZnkobWFjcm9zKQorICAgICAgICB9CisgICAgZW5kCisgICAgCisgICAgZGVmIHN1YnN0
aXR1dGUobWFwcGluZykKKyAgICAgICAgbWFwQ2hpbGRyZW4geworICAgICAgICAgICAgfCBjaGls
ZCB8CisgICAgICAgICAgICBjaGlsZC5zdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgICAgIH0KKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5nKQorICAgICAgICBt
YXBDaGlsZHJlbiB7CisgICAgICAgICAgICB8IGNoaWxkIHwKKyAgICAgICAgICAgIGNoaWxkLnN1
YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICAgICAgfQorICAgIGVuZAorZW5kCisKK2NsYXNz
IE1hY3JvCisgICAgZGVmIHN1YnN0aXR1dGUobWFwcGluZykKKyAgICAgICAgbXlNYXBwaW5nID0g
e30KKyAgICAgICAgbWFwcGluZy5lYWNoX3BhaXIgeworICAgICAgICAgICAgfCBrZXksIHZhbHVl
IHwKKyAgICAgICAgICAgIHVubGVzcyBAdmFyaWFibGVzLmluY2x1ZGU/IGtleQorICAgICAgICAg
ICAgICAgIG15TWFwcGluZ1trZXldID0gdmFsdWUKKyAgICAgICAgICAgIGVuZAorICAgICAgICB9
CisgICAgICAgIG1hcENoaWxkcmVuIHsKKyAgICAgICAgICAgIHwgY2hpbGQgfAorICAgICAgICAg
ICAgY2hpbGQuc3Vic3RpdHV0ZShteU1hcHBpbmcpCisgICAgICAgIH0KKyAgICBlbmQKK2VuZAor
CitjbGFzcyBWYXJpYWJsZQorICAgIGRlZiBzdWJzdGl0dXRlKG1hcHBpbmcpCisgICAgICAgIGlm
IG1hcHBpbmdbc2VsZl0KKyAgICAgICAgICAgIG1hcHBpbmdbc2VsZl0KKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgc2VsZgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitjbGFzcyBMb2Nh
bExhYmVsCisgICAgZGVmIHN1YnN0aXR1dGVMYWJlbHMobWFwcGluZykKKyAgICAgICAgaWYgbWFw
cGluZ1tzZWxmXQorICAgICAgICAgICAgbWFwcGluZ1tzZWxmXQorICAgICAgICBlbHNlCisgICAg
ICAgICAgICBzZWxmCisgICAgICAgIGVuZAorICAgIGVuZAorZW5kCisKK2NsYXNzIFNlcXVlbmNl
CisgICAgZGVmIHN1YnN0aXR1dGUoY29uc3RhbnRzKQorICAgICAgICBuZXdMaXN0ID0gW10KKyAg
ICAgICAgbXlDb25zdGFudHMgPSBjb25zdGFudHMuZHVwCisgICAgICAgIEBsaXN0LmVhY2ggewor
ICAgICAgICAgICAgfCBpdGVtIHwKKyAgICAgICAgICAgIGlmIGl0ZW0uaXNfYT8gQ29uc3REZWNs
CisgICAgICAgICAgICAgICAgbXlDb25zdGFudHNbaXRlbS52YXJpYWJsZV0gPSBpdGVtLnZhbHVl
LnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgbmV3TGlzdCA8PCBpdGVtLnN1YnN0aXR1dGUobXlDb25zdGFudHMpCisgICAgICAgICAgICBl
bmQKKyAgICAgICAgfQorICAgICAgICBTZXF1ZW5jZS5uZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkK
KyAgICBlbmQKKyAgICAKKyAgICBkZWYgcmVuYW1lTGFiZWxzKGNvbW1lbnQpCisgICAgICAgIG1h
cHBpbmcgPSB7fQorICAgICAgICAKKyAgICAgICAgQGxpc3QuZWFjaCB7CisgICAgICAgICAgICB8
IGl0ZW0gfAorICAgICAgICAgICAgaWYgaXRlbS5pc19hPyBMb2NhbExhYmVsCisgICAgICAgICAg
ICAgICAgbWFwcGluZ1tpdGVtXSA9IExvY2FsTGFiZWwudW5pcXVlKGlmIGNvbW1lbnQgdGhlbiBj
b21tZW50ICsgIl8iIGVsc2UgIiIgZW5kICsgaXRlbS5jbGVhbk5hbWUpCisgICAgICAgICAgICBl
bmQKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3Vic3RpdHV0ZUxhYmVscyhtYXBwaW5n
KQorICAgIGVuZAorICAgIAorICAgIGRlZiBkZW1hY3JvaWZ5KG1hY3JvcykKKyAgICAgICAgbXlN
YWNyb3MgPSBtYWNyb3MuZHVwCisgICAgICAgIEBsaXN0LmVhY2ggeworICAgICAgICAgICAgfCBp
dGVtIHwKKyAgICAgICAgICAgIGlmIGl0ZW0uaXNfYT8gTWFjcm8KKyAgICAgICAgICAgICAgICBt
eU1hY3Jvc1tpdGVtLm5hbWVdID0gaXRlbQorICAgICAgICAgICAgZW5kCisgICAgICAgIH0KKyAg
ICAgICAgbmV3TGlzdCA9IFtdCisgICAgICAgIEBsaXN0LmVhY2ggeworICAgICAgICAgICAgfCBp
dGVtIHwKKyAgICAgICAgICAgIGlmIGl0ZW0uaXNfYT8gTWFjcm8KKyAgICAgICAgICAgICAgICAj
IElnbm9yZS4KKyAgICAgICAgICAgIGVsc2lmIGl0ZW0uaXNfYT8gTWFjcm9DYWxsCisgICAgICAg
ICAgICAgICAgbWFwcGluZyA9IHt9CisgICAgICAgICAgICAgICAgbXlNeU1hY3JvcyA9IG15TWFj
cm9zLmR1cAorICAgICAgICAgICAgICAgIHJhaXNlICJDb3VsZCBub3QgZmluZCBtYWNybyAje2l0
ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxlc3MgbXlNYWNyb3NbaXRl
bS5uYW1lXQorICAgICAgICAgICAgICAgIHJhaXNlICJBcmd1bWVudCBjb3VudCBtaXNtYXRjaCBm
b3IgY2FsbCB0byAje2l0ZW0ubmFtZX0gYXQgI3tpdGVtLmNvZGVPcmlnaW5TdHJpbmd9IiB1bmxl
c3MgaXRlbS5vcGVyYW5kcy5zaXplID09IG15TWFjcm9zW2l0ZW0ubmFtZV0udmFyaWFibGVzLnNp
emUKKyAgICAgICAgICAgICAgICBpdGVtLm9wZXJhbmRzLnNpemUudGltZXMgeworICAgICAgICAg
ICAgICAgICAgICB8IGlkeCB8CisgICAgICAgICAgICAgICAgICAgIGlmIGl0ZW0ub3BlcmFuZHNb
aWR4XS5pc19hPyBWYXJpYWJsZSBhbmQgbXlNYWNyb3NbaXRlbS5vcGVyYW5kc1tpZHhdLm5hbWVd
CisgICAgICAgICAgICAgICAgICAgICAgICBteU15TWFjcm9zW215TWFjcm9zW2l0ZW0ubmFtZV0u
dmFyaWFibGVzW2lkeF0ubmFtZV0gPSBteU1hY3Jvc1tpdGVtLm9wZXJhbmRzW2lkeF0ubmFtZV0K
KyAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJp
YWJsZXNbaWR4XS5uYW1lXSA9IG5pbAorICAgICAgICAgICAgICAgICAgICBlbHNpZiBpdGVtLm9w
ZXJhbmRzW2lkeF0uaXNfYT8gTWFjcm8KKyAgICAgICAgICAgICAgICAgICAgICAgIG15TXlNYWNy
b3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XS5uYW1lXSA9IGl0ZW0ub3BlcmFu
ZHNbaWR4XQorICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1tteU1hY3Jvc1tpdGVtLm5h
bWVdLnZhcmlhYmxlc1tpZHhdLm5hbWVdID0gbmlsCisgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgIG15TXlNYWNyb3NbbXlNYWNyb3NbaXRlbS5uYW1lXS52
YXJpYWJsZXNbaWR4XV0gPSBuaWwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbbXlN
YWNyb3NbaXRlbS5uYW1lXS52YXJpYWJsZXNbaWR4XV0gPSBpdGVtLm9wZXJhbmRzW2lkeF0KKyAg
ICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IG5ld0xpc3QgKz0gbXlNYWNyb3NbaXRlbS5uYW1lXS5ib2R5LnN1YnN0aXR1dGUobWFwcGluZyku
ZGVtYWNyb2lmeShteU15TWFjcm9zKS5yZW5hbWVMYWJlbHMoaXRlbS5uYW1lKS5saXN0CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV3TGlzdCA8PCBpdGVtLmRlbWFjcm9pZnko
bXlNYWNyb3MpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgfQorICAgICAgICBTZXF1ZW5jZS5u
ZXcoY29kZU9yaWdpbiwgbmV3TGlzdCkuc3Vic3RpdHV0ZSh7fSkKKyAgICBlbmQKK2VuZAorCisj
CisjIG5vZGUucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisjCisjIENvbnN0cnVjdCBh
IG5ldyBBU1QgdGhhdCBoYXMgb2Zmc2V0IHZhbHVlcyBpbnN0ZWFkIG9mIHN5bWJvbGljCisjIG9m
ZnNldHMuCisjCisKK2NsYXNzIE5vZGUKKyAgICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywg
c2l6ZXMpCisgICAgICAgIG1hcENoaWxkcmVuIHsKKyAgICAgICAgICAgIHwgY2hpbGQgfAorICAg
ICAgICAgICAgY2hpbGQucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgICAgIH0K
KyAgICBlbmQKK2VuZAorCitjbGFzcyBTdHJ1Y3RPZmZzZXQKKyAgICBkZWYgcmVzb2x2ZU9mZnNl
dHMob2Zmc2V0cywgc2l6ZXMpCisgICAgICAgIGlmIG9mZnNldHNbc2VsZl0KKyAgICAgICAgICAg
IEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgb2Zmc2V0c1tzZWxmXSkKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgc2VsZgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCitjbGFzcyBTaXpl
b2YKKyAgICBkZWYgcmVzb2x2ZU9mZnNldHMob2Zmc2V0cywgc2l6ZXMpCisgICAgICAgIGlmIHNp
emVzW3NlbGZdCisgICAgICAgICAgICBJbW1lZGlhdGUubmV3KGNvZGVPcmlnaW4sIHNpemVzW3Nl
bGZdKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBwdXRzICJDb3VsZCBub3QgZmluZCAje3Nl
bGYuaW5zcGVjdH0gaW4gI3tzaXplcy5rZXlzLmluc3BlY3R9IgorICAgICAgICAgICAgcHV0cyAi
c2l6ZXMgPSAje3NpemVzLmluc3BlY3R9IgorICAgICAgICAgICAgc2VsZgorICAgICAgICBlbmQK
KyAgICBlbmQKK2VuZAorCisjCisjIG5vZGUuZm9sZAorIworIyBSZXNvbHZlIGNvbnN0YW50IHJl
ZmVyZW5jZXMgYW5kIGNvbXB1dGUgYXJpdGhtZXRpYyBleHByZXNzaW9ucy4KKyMKKworY2xhc3Mg
Tm9kZQorICAgIGRlZiBmb2xkCisgICAgICAgIG1hcENoaWxkcmVuIHsKKyAgICAgICAgICAgIHwg
Y2hpbGQgfAorICAgICAgICAgICAgY2hpbGQuZm9sZAorICAgICAgICB9CisgICAgZW5kCitlbmQK
KworY2xhc3MgQWRkSW1tZWRpYXRlcworICAgIGRlZiBmb2xkCisgICAgICAgIEBsZWZ0ID0gQGxl
ZnQuZm9sZAorICAgICAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgICAgICByZXR1cm4gc2Vs
ZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJldHVybiBzZWxmIHVubGVz
cyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdp
biwgQGxlZnQudmFsdWUgKyBAcmlnaHQudmFsdWUpCisgICAgZW5kCitlbmQKKworY2xhc3MgU3Vi
SW1tZWRpYXRlcworICAgIGRlZiBmb2xkCisgICAgICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAg
ICAgICBAcmlnaHQgPSBAcmlnaHQuZm9sZAorICAgICAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxl
ZnQuaXNfYT8gSW1tZWRpYXRlCisgICAgICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNf
YT8gSW1tZWRpYXRlCisgICAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFs
dWUgLSBAcmlnaHQudmFsdWUpCisgICAgZW5kCitlbmQKKworY2xhc3MgTXVsSW1tZWRpYXRlcwor
ICAgIGRlZiBmb2xkCisgICAgICAgIEBsZWZ0ID0gQGxlZnQuZm9sZAorICAgICAgICBAcmlnaHQg
PSBAcmlnaHQuZm9sZAorICAgICAgICByZXR1cm4gc2VsZiB1bmxlc3MgQGxlZnQuaXNfYT8gSW1t
ZWRpYXRlCisgICAgICAgIHJldHVybiBzZWxmIHVubGVzcyBAcmlnaHQuaXNfYT8gSW1tZWRpYXRl
CisgICAgICAgIEltbWVkaWF0ZS5uZXcoY29kZU9yaWdpbiwgQGxlZnQudmFsdWUgKiBAcmlnaHQu
dmFsdWUpCisgICAgZW5kCitlbmQKKworY2xhc3MgTmVnSW1tZWRpYXRlCisgICAgZGVmIGZvbGQK
KyAgICAgICAgQGNoaWxkID0gQGNoaWxkLmZvbGQKKyAgICAgICAgcmV0dXJuIHNlbGYgdW5sZXNz
IEBjaGlsZC5pc19hPyBJbW1lZGlhdGUKKyAgICAgICAgSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2lu
LCAtQGNoaWxkLnZhbHVlKQorICAgIGVuZAorZW5kCisKKyMKKyMgbm9kZS5yZXNvbHZlQWZ0ZXJT
ZXR0aW5ncyhvZmZzZXRzLCBzaXplcykKKyMKKyMgQ29tcGlsZSBhc3NlbWJseSBhZ2FpbnN0IGEg
c2V0IG9mIG9mZnNldHMuCisjCisKK2NsYXNzIE5vZGUKKyAgICBkZWYgcmVzb2x2ZShvZmZzZXRz
LCBzaXplcykKKyAgICAgICAgZGVtYWNyb2lmeSh7fSkucmVzb2x2ZU9mZnNldHMob2Zmc2V0cywg
c2l6ZXMpLmZvbGQKKyAgICBlbmQKK2VuZAorCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
b2ZmbGluZWFzbS94ODYucmIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL29m
ZmxpbmVhc20veDg2LnJiCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4MSBAQAorIyBDb3B5cmln
aHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyMgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisjIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorIyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisjIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworIyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisjIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisjIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworIyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorIyBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisjIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworY2xhc3MgUmVnaXN0ZXJJRAorICAgIGRlZiBz
dXBwb3J0czhCaXRPblg4NgorICAgICAgICBjYXNlIG5hbWUKKyAgICAgICAgd2hlbiAidDAiLCAi
YTAiLCAicjAiLCAidDEiLCAiYTEiLCAicjEiLCAidDIiLCAidDMiCisgICAgICAgICAgICB0cnVl
CisgICAgICAgIHdoZW4gInQ0IiwgImNmciIKKyAgICAgICAgICAgIGZhbHNlCisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRl
ZiB4ODZPcGVyYW5kKGtpbmQpCisgICAgICAgIGNhc2UgbmFtZQorICAgICAgICB3aGVuICJ0MCIs
ICJhMCIsICJyMCIKKyAgICAgICAgICAgIGNhc2Uga2luZAorICAgICAgICAgICAgd2hlbiA6Ynl0
ZQorICAgICAgICAgICAgICAgICIlYWwiCisgICAgICAgICAgICB3aGVuIDpoYWxmCisgICAgICAg
ICAgICAgICAgIiVheCIKKyAgICAgICAgICAgIHdoZW4gOmludAorICAgICAgICAgICAgICAgICIl
ZWF4IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAg
ICBlbmQKKyAgICAgICAgd2hlbiAidDEiLCAiYTEiLCAicjEiCisgICAgICAgICAgICBjYXNlIGtp
bmQKKyAgICAgICAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgICAgICAgICAiJWRsIgorICAgICAg
ICAgICAgd2hlbiA6aGFsZgorICAgICAgICAgICAgICAgICIlZHgiCisgICAgICAgICAgICB3aGVu
IDppbnQKKyAgICAgICAgICAgICAgICAiJWVkeCIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICByYWlzZQorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gInQyIgorICAgICAg
ICAgICAgY2FzZSBraW5kCisgICAgICAgICAgICB3aGVuIDpieXRlCisgICAgICAgICAgICAgICAg
IiVjbCIKKyAgICAgICAgICAgIHdoZW4gOmhhbGYKKyAgICAgICAgICAgICAgICAiJWN4IgorICAg
ICAgICAgICAgd2hlbiA6aW50CisgICAgICAgICAgICAgICAgIiVlY3giCisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVu
ICJ0MyIKKyAgICAgICAgICAgIGNhc2Uga2luZAorICAgICAgICAgICAgd2hlbiA6Ynl0ZQorICAg
ICAgICAgICAgICAgICIlYmwiCisgICAgICAgICAgICB3aGVuIDpoYWxmCisgICAgICAgICAgICAg
ICAgIiVieCIKKyAgICAgICAgICAgIHdoZW4gOmludAorICAgICAgICAgICAgICAgICIlZWJ4Igor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBlbmQK
KyAgICAgICAgd2hlbiAidDQiCisgICAgICAgICAgICBjYXNlIGtpbmQKKyAgICAgICAgICAgIHdo
ZW4gOmJ5dGUKKyAgICAgICAgICAgICAgICAiJXNpbCIKKyAgICAgICAgICAgIHdoZW4gOmhhbGYK
KyAgICAgICAgICAgICAgICAiJXNpIgorICAgICAgICAgICAgd2hlbiA6aW50CisgICAgICAgICAg
ICAgICAgIiVlc2kiCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmFpc2UKKyAg
ICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJjZnIiCisgICAgICAgICAgICBjYXNlIGtpbmQK
KyAgICAgICAgICAgIHdoZW4gOmJ5dGUKKyAgICAgICAgICAgICAgICAiJWRpbCIKKyAgICAgICAg
ICAgIHdoZW4gOmhhbGYKKyAgICAgICAgICAgICAgICAiJWRpIgorICAgICAgICAgICAgd2hlbiA6
aW50CisgICAgICAgICAgICAgICAgIiVlZGkiCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgcmFpc2UKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJzcCIKKyAgICAgICAg
ICAgIGNhc2Uga2luZAorICAgICAgICAgICAgd2hlbiA6Ynl0ZQorICAgICAgICAgICAgICAgICIl
c3BsIgorICAgICAgICAgICAgd2hlbiA6aGFsZgorICAgICAgICAgICAgICAgICIlc3AiCisgICAg
ICAgICAgICB3aGVuIDppbnQKKyAgICAgICAgICAgICAgICAiJWVzcCIKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZW5kCisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHJhaXNlICJCYWQgcmVnaXN0ZXIgI3tuYW1lfSBmb3IgWDg2IGF0ICN7Y29k
ZU9yaWdpblN0cmluZ30iCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIGRlZiB4ODZDYWxsT3Bl
cmFuZChraW5kKQorICAgICAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCitlbmQK
KworY2xhc3MgRlBSZWdpc3RlcklECisgICAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAgICAg
cmFpc2UgdW5sZXNzIGtpbmQgPT0gOmRvdWJsZQorICAgICAgICBjYXNlIG5hbWUKKyAgICAgICAg
d2hlbiAiZnQwIiwgImZhMCIsICJmciIKKyAgICAgICAgICAgICIleG1tMCIKKyAgICAgICAgd2hl
biAiZnQxIiwgImZhMSIKKyAgICAgICAgICAgICIleG1tMSIKKyAgICAgICAgd2hlbiAiZnQyIiwg
ImZhMiIKKyAgICAgICAgICAgICIleG1tMiIKKyAgICAgICAgd2hlbiAiZnQzIiwgImZhMyIKKyAg
ICAgICAgICAgICIleG1tMyIKKyAgICAgICAgd2hlbiAiZnQ0IgorICAgICAgICAgICAgIiV4bW00
IgorICAgICAgICB3aGVuICJmdDUiCisgICAgICAgICAgICAiJXhtbTUiCisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHJhaXNlICJCYWQgcmVnaXN0ZXIgI3tuYW1lfSBmb3IgWDg2IGF0ICN7Y29k
ZU9yaWdpblN0cmluZ30iCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIGRlZiB4ODZDYWxsT3Bl
cmFuZChraW5kKQorICAgICAgICAiKiN7eDg2T3BlcmFuZChraW5kKX0iCisgICAgZW5kCitlbmQK
KworY2xhc3MgSW1tZWRpYXRlCisgICAgZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAgICAgIiQj
e3ZhbHVlfSIKKyAgICBlbmQKKyAgICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAgICAg
IiN7dmFsdWV9IgorICAgIGVuZAorZW5kCisKK2NsYXNzIEFkZHJlc3MKKyAgICBkZWYgc3VwcG9y
dHM4Qml0T25YODYKKyAgICAgICAgdHJ1ZQorICAgIGVuZAorICAgIAorICAgIGRlZiB4ODZPcGVy
YW5kKGtpbmQpCisgICAgICAgICIje29mZnNldC52YWx1ZX0oI3tiYXNlLng4Nk9wZXJhbmQoOmlu
dCl9KSIKKyAgICBlbmQKKyAgICBkZWYgeDg2Q2FsbE9wZXJhbmQoa2luZCkKKyAgICAgICAgIioj
e3g4Nk9wZXJhbmQoa2luZCl9IgorICAgIGVuZAorZW5kCisKK2NsYXNzIEJhc2VJbmRleAorICAg
IGRlZiBzdXBwb3J0czhCaXRPblg4NgorICAgICAgICB0cnVlCisgICAgZW5kCisgICAgCisgICAg
ZGVmIHg4Nk9wZXJhbmQoa2luZCkKKyAgICAgICAgIiN7b2Zmc2V0LnZhbHVlfSgje2Jhc2UueDg2
T3BlcmFuZCg6aW50KX0sICN7aW5kZXgueDg2T3BlcmFuZCg6aW50KX0sICN7c2NhbGV9KSIKKyAg
ICBlbmQKKworICAgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICAgICAiKiN7eDg2b3Bl
cmFuZChraW5kKX0iCisgICAgZW5kCitlbmQKKworY2xhc3MgQWJzb2x1dGVBZGRyZXNzCisgICAg
ZGVmIHN1cHBvcnRzOEJpdE9uWDg2CisgICAgICAgIHRydWUKKyAgICBlbmQKKyAgICAKKyAgICBk
ZWYgeDg2T3BlcmFuZChraW5kKQorICAgICAgICAiI3thZGRyZXNzLnZhbHVlfSIKKyAgICBlbmQK
KworICAgIGRlZiB4ODZDYWxsT3BlcmFuZChraW5kKQorICAgICAgICAiKiN7YWRkcmVzcy52YWx1
ZX0iCisgICAgZW5kCitlbmQKKworY2xhc3MgTGFiZWxSZWZlcmVuY2UKKyAgICBkZWYgeDg2Q2Fs
bE9wZXJhbmQoa2luZCkKKyAgICAgICAgYXNtTGFiZWwKKyAgICBlbmQKK2VuZAorCitjbGFzcyBM
b2NhbExhYmVsUmVmZXJlbmNlCisgICAgZGVmIHg4NkNhbGxPcGVyYW5kKGtpbmQpCisgICAgICAg
IGFzbUxhYmVsCisgICAgZW5kCitlbmQKKworY2xhc3MgSW5zdHJ1Y3Rpb24KKyAgICBkZWYgeDg2
T3BlcmFuZHMoKmtpbmRzKQorICAgICAgICByYWlzZSB1bmxlc3Mga2luZHMuc2l6ZSA9PSBvcGVy
YW5kcy5zaXplCisgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgIGtpbmRzLnNpemUudGltZXMg
eworICAgICAgICAgICAgfCBpZHggfAorICAgICAgICAgICAgcmVzdWx0IDw8IG9wZXJhbmRzW2lk
eF0ueDg2T3BlcmFuZChraW5kc1tpZHhdKQorICAgICAgICB9CisgICAgICAgIHJlc3VsdC5qb2lu
KCIsICIpCisgICAgZW5kCisKKyAgICBkZWYgeDg2U3VmZml4KGtpbmQpCisgICAgICAgIGNhc2Ug
a2luZAorICAgICAgICB3aGVuIDpieXRlCisgICAgICAgICAgICAiYiIKKyAgICAgICAgd2hlbiA6
aGFsZgorICAgICAgICAgICAgInciCisgICAgICAgIHdoZW4gOmludAorICAgICAgICAgICAgImwi
CisgICAgICAgIHdoZW4gOmRvdWJsZQorICAgICAgICAgICAgInNkIgorICAgICAgICBlbHNlCisg
ICAgICAgICAgICByYWlzZQorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaGFu
ZGxlWDg2T3BXaXRoTnVtT3BlcmFuZHMob3Bjb2RlLCBraW5kLCBudW1PcGVyYW5kcykKKyAgICAg
ICAgaWYgbnVtT3BlcmFuZHMgPT0gMworICAgICAgICAgICAgaWYgb3BlcmFuZHNbMF0gPT0gb3Bl
cmFuZHNbMl0KKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRz
WzFdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9Igor
ICAgICAgICAgICAgZWxzaWYgb3BlcmFuZHNbMV0gPT0gb3BlcmFuZHNbMl0KKyAgICAgICAgICAg
ICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9
LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICRhc20ucHV0cyAibW92I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZChraW5kKX0iCisg
ICAgICAgICAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gI3tvcGVyYW5kc1sxXS54ODZPcGVy
YW5kKGtpbmQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAg
IGVuZAorICAgICAgICBlbHNlCisgICAgICAgICAgICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29w
ZXJhbmRzWzBdLng4Nk9wZXJhbmQoa2luZCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2lu
ZCl9IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaGFuZGxlWDg2T3Aob3Bj
b2RlLCBraW5kKQorICAgICAgICBoYW5kbGVYODZPcFdpdGhOdW1PcGVyYW5kcyhvcGNvZGUsIGtp
bmQsIG9wZXJhbmRzLnNpemUpCisgICAgZW5kCisgICAgCisgICAgZGVmIGhhbmRsZVg4NlNoaWZ0
KG9wY29kZSwga2luZCkKKyAgICAgICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIG9y
IG9wZXJhbmRzWzBdID09IFJlZ2lzdGVySUQuZm9yTmFtZShuaWwsICJ0MiIpCisgICAgICAgICAg
ICAkYXNtLnB1dHMgIiN7b3Bjb2RlfSAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5dGUpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgJGFzbS5wdXRzICJ4Y2hnbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4
IgorICAgICAgICAgICAgJGFzbS5wdXRzICIje29wY29kZX0gJWNsLCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJ4Y2hnbCAje29wZXJhbmRz
WzBdLng4Nk9wZXJhbmQoOmludCl9LCAlZWN4IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAK
KyAgICBkZWYgaGFuZGxlWDg2RG91YmxlQnJhbmNoKGJyYW5jaE9wY29kZSwgbW9kZSkKKyAgICAg
ICAgY2FzZSBtb2RlCisgICAgICAgIHdoZW4gOm5vcm1hbAorICAgICAgICAgICAgJGFzbS5wdXRz
ICJ1Y29taXNkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAgIHdoZW4gOnJldmVyc2UKKyAgICAgICAg
ICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9
LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgICBlbHNlCisgICAg
ICAgICAgICByYWlzZSBtb2RlLmluc3BlY3QKKyAgICAgICAgZW5kCisgICAgICAgICRhc20ucHV0
cyAiI3ticmFuY2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIGVuZAorICAg
IAorICAgIGRlZiBoYW5kbGVYODZJbnRDb21wYXJlKG9wY29kZVN1ZmZpeCwga2luZCkKKyAgICAg
ICAgaWYgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlIGFuZCBvcGVyYW5kc1swXS52YWx1ZSA9
PSAwIGFuZCBvcGVyYW5kc1sxXS5pc19hPyBSZWdpc3RlcklEIGFuZCAob3Bjb2RlU3VmZml4ID09
ICJlIiBvciBvcGNvZGVTdWZmaXggPT0gIm5lIikKKyAgICAgICAgICAgICRhc20ucHV0cyAidGVz
dCN7eDg2U3VmZml4KGtpbmQpfSAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoa2luZCl9IgorICAg
ICAgICBlbHNpZiBvcGVyYW5kc1sxXS5pc19hPyBJbW1lZGlhdGUgYW5kIG9wZXJhbmRzWzFdLnZh
bHVlID09IDAgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVySUQgYW5kIChvcGNvZGVTdWZm
aXggPT0gImUiIG9yIG9wY29kZVN1ZmZpeCA9PSAibmUiKQorICAgICAgICAgICAgJGFzbS5wdXRz
ICJ0ZXN0I3t4ODZTdWZmaXgoa2luZCl9ICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZChraW5kKX0i
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICRhc20ucHV0cyAiY21wI3t4ODZTdWZmaXgoa2lu
ZCl9ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZChraW5kKX0sICN7b3BlcmFuZHNbMF0ueDg2T3Bl
cmFuZChraW5kKX0iCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIAorICAgIGRlZiBoYW5kbGVY
ODZJbnRCcmFuY2goYnJhbmNoT3Bjb2RlLCBraW5kKQorICAgICAgICBoYW5kbGVYODZJbnRDb21w
YXJlKGJyYW5jaE9wY29kZVsxLi4tMV0sIGtpbmQpCisgICAgICAgICRhc20ucHV0cyAiI3ticmFu
Y2hPcGNvZGV9ICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgIGVuZAorICAgIAorICAgIGRl
ZiBoYW5kbGVYODZTZXQoc2V0T3Bjb2RlLCBvcGVyYW5kKQorICAgICAgICBpZiBvcGVyYW5kLnN1
cHBvcnRzOEJpdE9uWDg2CisgICAgICAgICAgICAkYXNtLnB1dHMgIiN7c2V0T3Bjb2RlfSAje29w
ZXJhbmQueDg2T3BlcmFuZCg6Ynl0ZSl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3Z6Ymwg
I3tvcGVyYW5kLng4Nk9wZXJhbmQoOmJ5dGUpfSwgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9
IgorICAgICAgICBlbHNlCisgICAgICAgICAgICAkYXNtLnB1dHMgInhjaGdsICN7b3BlcmFuZC54
ODZPcGVyYW5kKDppbnQpfSwgJWVheCIKKyAgICAgICAgICAgICRhc20ucHV0cyAiI3tzZXRPcGNv
ZGV9ICVhbCIKKyAgICAgICAgICAgICRhc20ucHV0cyAibW92emJsICVhbCwgJWVheCIKKyAgICAg
ICAgICAgICRhc20ucHV0cyAieGNoZ2wgI3tvcGVyYW5kLng4Nk9wZXJhbmQoOmludCl9LCAlZWF4
IgorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaGFuZGxlWDg2SW50Q29tcGFy
ZVNldChzZXRPcGNvZGUsIGtpbmQpCisgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmUoc2V0T3Bj
b2RlWzMuLi0xXSwga2luZCkKKyAgICAgICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFu
ZHNbMl0pCisgICAgZW5kCisgICAgCisgICAgZGVmIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICAg
ICAgdmFsdWUgPSBvcGVyYW5kc1swXQorICAgICAgICBjYXNlIG9wZXJhbmRzLnNpemUKKyAgICAg
ICAgd2hlbiAyCisgICAgICAgICAgICBtYXNrID0gSW1tZWRpYXRlLm5ldyhjb2RlT3JpZ2luLCAt
MSkKKyAgICAgICAgd2hlbiAzCisgICAgICAgICAgICBtYXNrID0gb3BlcmFuZHNbMV0KKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcmFpc2UgIkV4cGVjdGVkIDIgb3IgMyBvcGVyYW5kcywgYnV0
IGdvdCAje29wZXJhbmRzLnNpemV9IGF0ICN7Y29kZU9yaWdpblN0cmluZ30iCisgICAgICAgIGVu
ZAorICAgICAgICAKKyAgICAgICAgaWYgbWFzay5pc19hPyBJbW1lZGlhdGUgYW5kIG1hc2sudmFs
dWUgPT0gLTEKKyAgICAgICAgICAgIGlmIHZhbHVlLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAg
ICAgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3t2YWx1ZS54ODZPcGVy
YW5kKGtpbmQpfSwgI3t2YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImNtcCN7eDg2U3VmZml4KGtpbmQpfSAkMCwgI3t2
YWx1ZS54ODZPcGVyYW5kKGtpbmQpfSIKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbHNlCisg
ICAgICAgICAgICAkYXNtLnB1dHMgInRlc3Qje3g4NlN1ZmZpeChraW5kKX0gI3ttYXNrLng4Nk9w
ZXJhbmQoa2luZCl9LCAje3ZhbHVlLng4Nk9wZXJhbmQoa2luZCl9IgorICAgICAgICBlbmQKKyAg
ICBlbmQKKyAgICAKKyAgICBkZWYgaGFuZGxlWDg2QnJhbmNoVGVzdChicmFuY2hPcGNvZGUsIGtp
bmQpCisgICAgICAgIGhhbmRsZVg4NlRlc3Qoa2luZCkKKyAgICAgICAgJGFzbS5wdXRzICIje2Jy
YW5jaE9wY29kZX0gI3tvcGVyYW5kcy5sYXN0LmFzbUxhYmVsfSIKKyAgICBlbmQKKyAgICAKKyAg
ICBkZWYgaGFuZGxlWDg2U2V0VGVzdChzZXRPcGNvZGUsIGtpbmQpCisgICAgICAgIGhhbmRsZVg4
NlRlc3Qoa2luZCkKKyAgICAgICAgaGFuZGxlWDg2U2V0KHNldE9wY29kZSwgb3BlcmFuZHMubGFz
dCkKKyAgICBlbmQKKyAgICAKKyAgICBkZWYgaGFuZGxlWDg2T3BCcmFuY2gob3Bjb2RlLCBicmFu
Y2hPcGNvZGUsIGtpbmQpCisgICAgICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKG9wY29k
ZSwga2luZCwgb3BlcmFuZHMuc2l6ZSAtIDEpCisgICAgICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQor
ICAgICAgICB3aGVuIDQKKyAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAg
ICAgICB3aGVuIDMKKyAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBvcGVyYW5kc1syXQorICAgICAg
ICBlbHNlCisgICAgICAgICAgICByYWlzZSBzZWxmLmluc3BlY3QKKyAgICAgICAgZW5kCisgICAg
ICAgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9ICN7anVtcFRhcmdldC5hc21MYWJlbH0iCisg
ICAgZW5kCisgICAgCisgICAgZGVmIGhhbmRsZVg4NlN1YkJyYW5jaChicmFuY2hPcGNvZGUsIGtp
bmQpCisgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gNCBhbmQgb3BlcmFuZHNbMV0gPT0gb3Bl
cmFuZHNbMl0KKyAgICAgICAgICAgICRhc20ucHV0cyAibmVnbCAje29wZXJhbmRzWzJdLng4Nk9w
ZXJhbmQoOmludCl9IgorICAgICAgICAgICAgJGFzbS5wdXRzICJhZGRsICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGhhbmRsZVg4Nk9wV2l0aE51bU9wZXJhbmRzKCJzdWIje3g4
NlN1ZmZpeChraW5kKX0iLCBraW5kLCBvcGVyYW5kcy5zaXplIC0gMSkKKyAgICAgICAgZW5kCisg
ICAgICAgIGNhc2Ugb3BlcmFuZHMuc2l6ZQorICAgICAgICB3aGVuIDQKKyAgICAgICAgICAgIGp1
bXBUYXJnZXQgPSBvcGVyYW5kc1szXQorICAgICAgICB3aGVuIDMKKyAgICAgICAgICAgIGp1bXBU
YXJnZXQgPSBvcGVyYW5kc1syXQorICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlzZSBzZWxm
Lmluc3BlY3QKKyAgICAgICAgZW5kCisgICAgICAgICRhc20ucHV0cyAiI3ticmFuY2hPcGNvZGV9
ICN7anVtcFRhcmdldC5hc21MYWJlbH0iCisgICAgZW5kCisgICAgCisgICAgZGVmIGxvd2VyWDg2
CisgICAgICAgICRhc20uY29tbWVudCBjb2RlT3JpZ2luU3RyaW5nCisgICAgICAgIGNhc2Ugb3Bj
b2RlCisgICAgICAgIHdoZW4gImFkZGkiLCAiYWRkcCIKKyAgICAgICAgICAgIGlmIG9wZXJhbmRz
LnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMF0uaXNfYT8gSW1tZWRpYXRlCisgICAgICAgICAgICAg
ICAgcmFpc2UgdW5sZXNzIG9wZXJhbmRzWzFdLmlzX2E/IFJlZ2lzdGVySUQKKyAgICAgICAgICAg
ICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMl0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAg
ICAgICAgIGlmIG9wZXJhbmRzWzBdLnZhbHVlID09IDAKKyAgICAgICAgICAgICAgICAgICAgdW5s
ZXNzIG9wZXJhbmRzWzFdID09IG9wZXJhbmRzWzJdCisgICAgICAgICAgICAgICAgICAgICAgICAk
YXNtLnB1dHMgIm1vdmwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5k
c1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImxlYWwgI3tvcGVy
YW5kc1swXS52YWx1ZX0oI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSksICN7b3BlcmFu
ZHNbMl0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAg
ICBlbHNpZiBvcGVyYW5kcy5zaXplID09IDMgYW5kIG9wZXJhbmRzWzBdLmlzX2E/IFJlZ2lzdGVy
SUQKKyAgICAgICAgICAgICAgICByYWlzZSB1bmxlc3Mgb3BlcmFuZHNbMV0uaXNfYT8gUmVnaXN0
ZXJJRAorICAgICAgICAgICAgICAgIHJhaXNlIHVubGVzcyBvcGVyYW5kc1syXS5pc19hPyBSZWdp
c3RlcklECisgICAgICAgICAgICAgICAgJGFzbS5wdXRzICJsZWFsICgje29wZXJhbmRzWzBdLng4
Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9KSwgI3tvcGVy
YW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICB1bmxlc3MgSW1tZWRpYXRlLm5ldyhuaWwsIDApID09IG9wZXJhbmRzWzBdCisgICAgICAg
ICAgICAgICAgICAgICRhc20ucHV0cyAiYWRkbCAje3g4Nk9wZXJhbmRzKDppbnQsIDppbnQpfSIK
KyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVuZAorICAgICAgICB3aGVuICJhbmRp
IiwgImFuZHAiCisgICAgICAgICAgICBoYW5kbGVYODZPcCgiYW5kbCIsIDppbnQpCisgICAgICAg
IHdoZW4gImxzaGlmdGkiCisgICAgICAgICAgICBoYW5kbGVYODZTaGlmdCgic2FsbCIsIDppbnQp
CisgICAgICAgIHdoZW4gIm11bGkiCisgICAgICAgICAgICBpZiBvcGVyYW5kcy5zaXplID09IDMg
YW5kIG9wZXJhbmRzWzBdLmlzX2E/IEltbWVkaWF0ZQorICAgICAgICAgICAgICAgICRhc20ucHV0
cyAiaW11bGwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50LCA6aW50KX0iCisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgIyBGSVhNRTogY291bGQgZG8gc29tZSBwZWVwaG9sZSBpbiBj
YXNlIHRoZSBsZWZ0IG9wZXJhbmQgaXMgaW1tZWRpYXRlIGFuZCBpdCdzCisgICAgICAgICAgICAg
ICAgIyBhIHBvd2VyIG9mIHR3by4KKyAgICAgICAgICAgICAgICBoYW5kbGVYODZPcCgiaW11bGwi
LCA6aW50KQorICAgICAgICAgICAgZW5kCisgICAgICAgIHdoZW4gIm5lZ2kiCisgICAgICAgICAg
ICAkYXNtLnB1dHMgIm5lZ2wgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisgICAgICAgIHdoZW4gIm5v
dGkiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm5vdGwgI3t4ODZPcGVyYW5kcyg6aW50KX0iCisg
ICAgICAgIHdoZW4gIm9yaSIsICJvcnAiCisgICAgICAgICAgICBoYW5kbGVYODZPcCgib3JsIiwg
OmludCkKKyAgICAgICAgd2hlbiAicnNoaWZ0aSIKKyAgICAgICAgICAgIGhhbmRsZVg4NlNoaWZ0
KCJzYXJsIiwgOmludCkKKyAgICAgICAgd2hlbiAidXJzaGlmdGkiCisgICAgICAgICAgICBoYW5k
bGVYODZTaGlmdCgic2hybCIsIDppbnQpCisgICAgICAgIHdoZW4gInN1YmkiLCAic3VicCIKKyAg
ICAgICAgICAgIGlmIG9wZXJhbmRzLnNpemUgPT0gMyBhbmQgb3BlcmFuZHNbMV0gPT0gb3BlcmFu
ZHNbMl0KKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIm5lZ2wgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgImFkZGwgI3tvcGVyYW5k
c1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1syXS54ODZPcGVyYW5kKDppbnQpfSIK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBoYW5kbGVYODZPcCgic3VibCIsIDpp
bnQpCisgICAgICAgICAgICBlbmQKKyAgICAgICAgd2hlbiAieG9yaSIsICJ4b3JwIgorICAgICAg
ICAgICAgaGFuZGxlWDg2T3AoInhvcmwiLCA6aW50KQorICAgICAgICB3aGVuICJsb2FkaSIsICJz
dG9yZWkiLCAibG9hZHAiLCAic3RvcmVwIgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZsICN7
eDg2T3BlcmFuZHMoOmludCwgOmludCl9IgorICAgICAgICB3aGVuICJsb2FkYiIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAibW92emJsICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6Ynl0ZSl9LCAj
e29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICB3aGVuICJsb2FkYnMiCisg
ICAgICAgICAgICAkYXNtLnB1dHMgIm1vdnNibCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmJ5
dGUpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgd2hlbiAibG9h
ZGgiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdnp3bCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmhhbGYpfSwgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAgICAgd2hl
biAibG9hZGhzIgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3Zzd2wgI3tvcGVyYW5kc1swXS54
ODZPcGVyYW5kKDpoYWxmKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAg
ICAgIHdoZW4gInN0b3JlYiIKKyAgICAgICAgICAgICRhc20ucHV0cyAibW92YiAje3g4Nk9wZXJh
bmRzKDpieXRlLCA6Ynl0ZSl9IgorICAgICAgICB3aGVuICJsb2FkZCIsICJtb3ZlZCIsICJzdG9y
ZWQiCisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwg
OmRvdWJsZSl9IgorICAgICAgICB3aGVuICJhZGRkIgorICAgICAgICAgICAgJGFzbS5wdXRzICJh
ZGRzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpkb3VibGUpfSIKKyAgICAgICAgd2hlbiAiZGl2
ZCIKKyAgICAgICAgICAgICRhc20ucHV0cyAiZGl2c2QgI3t4ODZPcGVyYW5kcyg6ZG91YmxlLCA6
ZG91YmxlKX0iCisgICAgICAgIHdoZW4gInN1YmQiCisgICAgICAgICAgICAkYXNtLnB1dHMgInN1
YnNkICN7eDg2T3BlcmFuZHMoOmRvdWJsZSwgOmRvdWJsZSl9IgorICAgICAgICB3aGVuICJtdWxk
IgorICAgICAgICAgICAgJGFzbS5wdXRzICJtdWxzZCAje3g4Nk9wZXJhbmRzKDpkb3VibGUsIDpk
b3VibGUpfSIKKyAgICAgICAgd2hlbiAic3FydGQiCisgICAgICAgICAgICAkYXNtLnB1dHMgInNx
cnRzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4
Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgICB3aGVuICJjaTJkIgorICAgICAgICAgICAgJGFz
bS5wdXRzICJjdnRzaTJzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgICB3aGVuICJiZGVxIgorICAgICAg
ICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVsLnVuaXF1ZSgiYmRlcSIpCisgICAgICAgICAg
ICAkYXNtLnB1dHMgInVjb21pc2QgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDpkb3VibGUpfSwg
I3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDpkb3VibGUpfSIKKyAgICAgICAgICAgICRhc20ucHV0
cyAianAgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29kZU9yaWdpbiwgaXNVbm9yZGVyZWQpLmFzbUxh
YmVsfSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiamUgI3tMYWJlbFJlZmVyZW5jZS5uZXcoY29k
ZU9yaWdpbiwgb3BlcmFuZHNbMl0pLmFzbUxhYmVsfSIKKyAgICAgICAgICAgIGlzVW5vcmRlcmVk
Lmxvd2VyKCJYODYiKQorICAgICAgICB3aGVuICJiZG5lcSIKKyAgICAgICAgICAgIGhhbmRsZVg4
NkRvdWJsZUJyYW5jaCgiam5lIiwgOm5vcm1hbCkKKyAgICAgICAgd2hlbiAiYmRndCIKKyAgICAg
ICAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamEiLCA6bm9ybWFsKQorICAgICAgICB3aGVu
ICJiZGd0ZXEiCisgICAgICAgICAgICBoYW5kbGVYODZEb3VibGVCcmFuY2goImphZSIsIDpub3Jt
YWwpCisgICAgICAgIHdoZW4gImJkbHQiCisgICAgICAgICAgICBoYW5kbGVYODZEb3VibGVCcmFu
Y2goImphIiwgOnJldmVyc2UpCisgICAgICAgIHdoZW4gImJkbHRlcSIKKyAgICAgICAgICAgIGhh
bmRsZVg4NkRvdWJsZUJyYW5jaCgiamFlIiwgOnJldmVyc2UpCisgICAgICAgIHdoZW4gImJkZXF1
biIKKyAgICAgICAgICAgIGhhbmRsZVg4NkRvdWJsZUJyYW5jaCgiamUiLCA6bm9ybWFsKQorICAg
ICAgICB3aGVuICJiZG5lcXVuIgorICAgICAgICAgICAgaXNVbm9yZGVyZWQgPSBMb2NhbExhYmVs
LnVuaXF1ZSgiYmRuZXF1biIpCisgICAgICAgICAgICBpc0VxdWFsID0gTG9jYWxMYWJlbC51bmlx
dWUoImJkbmVxdW4iKQorICAgICAgICAgICAgJGFzbS5wdXRzICJ1Y29taXNkICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6ZG91Ymxl
KX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImpwICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVP
cmlnaW4sIGlzVW5vcmRlcmVkKS5hc21MYWJlbH0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImpl
ICN7TGFiZWxSZWZlcmVuY2UubmV3KGNvZGVPcmlnaW4sIGlzRXF1YWwpLmFzbUxhYmVsfSIKKyAg
ICAgICAgICAgIGlzVW5vcmRlcmVkLmxvd2VyKCJYODYiKQorICAgICAgICAgICAgJGFzbS5wdXRz
ICJqbXAgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICBpc0VxdWFsLmxvd2Vy
KCJYODYiKQorICAgICAgICB3aGVuICJiZGd0dW4iCisgICAgICAgICAgICBoYW5kbGVYODZEb3Vi
bGVCcmFuY2goImpiIiwgOnJldmVyc2UpCisgICAgICAgIHdoZW4gImJkZ3RlcXVuIgorICAgICAg
ICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYmUiLCA6cmV2ZXJzZSkKKyAgICAgICAgd2hl
biAiYmRsdHVuIgorICAgICAgICAgICAgaGFuZGxlWDg2RG91YmxlQnJhbmNoKCJqYiIsIDpub3Jt
YWwpCisgICAgICAgIHdoZW4gImJkbHRlcXVuIgorICAgICAgICAgICAgaGFuZGxlWDg2RG91Ymxl
QnJhbmNoKCJqYmUiLCA6bm9ybWFsKQorICAgICAgICB3aGVuICJidGQyaSIKKyAgICAgICAgICAg
ICRhc20ucHV0cyAiY3Z0dHNkMnNpICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0s
ICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgICAgICAkYXNtLnB1dHMg
ImNtcGwgJDB4ODAwMDAwMDAgI3tvcGVyYW5kc1sxXS54ODZPcGVyYW5kKDppbnQpfSIKKyAgICAg
ICAgICAgICRhc20ucHV0cyAiamUgI3tvcGVyYW5kc1syXS5hc21MYWJlbH0iCisgICAgICAgIHdo
ZW4gInRkMmkiCisgICAgICAgICAgICAkYXNtLnB1dHMgImN2dHRzZDJzaSAje29wZXJhbmRzWzBd
Lng4Nk9wZXJhbmQoOmRvdWJsZSl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9Igor
ICAgICAgICB3aGVuICJiY2QyaSIKKyAgICAgICAgICAgICRhc20ucHV0cyAiY3Z0dHNkMnNpICN7
b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFu
ZCg6aW50KX0iCisgICAgICAgICAgICAkYXNtLnB1dHMgInRlc3RsICN7b3BlcmFuZHNbMV0ueDg2
T3BlcmFuZCg6aW50KX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAg
ICAgICAkYXNtLnB1dHMgImplICN7b3BlcmFuZHNbMl0uYXNtTGFiZWx9IgorICAgICAgICAgICAg
JGFzbS5wdXRzICJjdnRzaTJzZCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAleG1t
NyIKKyAgICAgICAgICAgICRhc20ucHV0cyAidWNvbWlzZCAje29wZXJhbmRzWzBdLng4Nk9wZXJh
bmQoOmRvdWJsZSl9LCAleG1tNyIKKyAgICAgICAgICAgICRhc20ucHV0cyAianAgI3tvcGVyYW5k
c1syXS5hc21MYWJlbH0iCisgICAgICAgICAgICAkYXNtLnB1dHMgImpuZSAje29wZXJhbmRzWzJd
LmFzbUxhYmVsfSIKKyAgICAgICAgd2hlbiAibW92ZHoiCisgICAgICAgICAgICAkYXNtLnB1dHMg
InhvcnBkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMF0u
eDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAgICAgIHdoZW4gInBvcCIKKyAgICAgICAgICAgICRh
c20ucHV0cyAicG9wICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6aW50KX0iCisgICAgICAgIHdo
ZW4gInB1c2giCisgICAgICAgICAgICAkYXNtLnB1dHMgInB1c2ggI3tvcGVyYW5kc1swXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICAgICAgd2hlbiAibW92ZSIsICJzeGkycCIsICJ6eGkycCIKKyAg
ICAgICAgICAgIGlmIEltbWVkaWF0ZS5uZXcobmlsLCAwKSA9PSBvcGVyYW5kc1swXSBhbmQgb3Bl
cmFuZHNbMV0uaXNfYT8gUmVnaXN0ZXJJRAorICAgICAgICAgICAgICAgICRhc20ucHV0cyAieG9y
bCAje29wZXJhbmRzWzFdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJhbmRzWzFdLng4Nk9wZXJh
bmQoOmludCl9IgorICAgICAgICAgICAgZWxzaWYgb3BlcmFuZHNbMF0gIT0gb3BlcmFuZHNbMV0K
KyAgICAgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdmwgI3t4ODZPcGVyYW5kcyg6aW50LCA6aW50
KX0iCisgICAgICAgICAgICBlbmQKKyAgICAgICAgd2hlbiAibm9wIgorICAgICAgICAgICAgJGFz
bS5wdXRzICJub3AiCisgICAgICAgIHdoZW4gImJpZXEiLCAiYnBlcSIKKyAgICAgICAgICAgIGhh
bmRsZVg4NkludEJyYW5jaCgiamUiLCA6aW50KQorICAgICAgICB3aGVuICJiaW5lcSIsICJicG5l
cSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmludCkKKyAgICAgICAg
d2hlbiAiYmlhIiwgImJwYSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6
aW50KQorICAgICAgICB3aGVuICJiaWFlcSIsICJicGFlcSIKKyAgICAgICAgICAgIGhhbmRsZVg4
NkludEJyYW5jaCgiamFlIiwgOmludCkKKyAgICAgICAgd2hlbiAiYmliIiwgImJwYiIKKyAgICAg
ICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamIiLCA6aW50KQorICAgICAgICB3aGVuICJiaWJl
cSIsICJicGJlcSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamJlIiwgOmludCkK
KyAgICAgICAgd2hlbiAiYmlndCIsICJicGd0IgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqZyIsIDppbnQpCisgICAgICAgIHdoZW4gImJpZ3RlcSIsICJicGd0ZXEiCisgICAgICAg
ICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpnZSIsIDppbnQpCisgICAgICAgIHdoZW4gImJpbHQi
LCAiYnBsdCIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6aW50KQorICAg
ICAgICB3aGVuICJiaWx0ZXEiLCAiYnBsdGVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqbGUiLCA6aW50KQorICAgICAgICB3aGVuICJiYmVxIgorICAgICAgICAgICAgaGFuZGxl
WDg2SW50QnJhbmNoKCJqZSIsIDpieXRlKQorICAgICAgICB3aGVuICJiYm5lcSIKKyAgICAgICAg
ICAgIGhhbmRsZVg4NkludEJyYW5jaCgiam5lIiwgOmJ5dGUpCisgICAgICAgIHdoZW4gImJiYSIK
KyAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamEiLCA6Ynl0ZSkKKyAgICAgICAgd2hl
biAiYmJhZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImphZSIsIDpieXRlKQor
ICAgICAgICB3aGVuICJiYmIiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRCcmFuY2goImpiIiwg
OmJ5dGUpCisgICAgICAgIHdoZW4gImJiYmVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJh
bmNoKCJqYmUiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAiYmJndCIKKyAgICAgICAgICAgIGhhbmRs
ZVg4NkludEJyYW5jaCgiamciLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAiYmJndGVxIgorICAgICAg
ICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqZ2UiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAiYmJs
dCIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludEJyYW5jaCgiamwiLCA6Ynl0ZSkKKyAgICAgICAg
d2hlbiAiYmJsdGVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50QnJhbmNoKCJqbHRlcSIsIDpi
eXRlKQorICAgICAgICB3aGVuICJidGlvIiwgImJ0cG8iCisgICAgICAgICAgICBoYW5kbGVYODZC
cmFuY2hUZXN0KCJqbyIsIDppbnQpCisgICAgICAgIHdoZW4gImJ0aXMiLCAiYnRwcyIKKyAgICAg
ICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImpzIiwgOmludCkKKyAgICAgICAgd2hlbiAiYnRp
eiIsICJidHB6IgorICAgICAgICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianoiLCA6aW50KQor
ICAgICAgICB3aGVuICJidGlueiIsICJidHBueiIKKyAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5j
aFRlc3QoImpueiIsIDppbnQpCisgICAgICAgIHdoZW4gImJ0Ym8iCisgICAgICAgICAgICBoYW5k
bGVYODZCcmFuY2hUZXN0KCJqbyIsIDpieXRlKQorICAgICAgICB3aGVuICJidGJzIgorICAgICAg
ICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgianMiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAiYnRi
eiIKKyAgICAgICAgICAgIGhhbmRsZVg4NkJyYW5jaFRlc3QoImp6IiwgOmJ5dGUpCisgICAgICAg
IHdoZW4gImJ0Ym56IgorICAgICAgICAgICAgaGFuZGxlWDg2QnJhbmNoVGVzdCgiam56IiwgOmJ5
dGUpCisgICAgICAgIHdoZW4gImptcCIKKyAgICAgICAgICAgICRhc20ucHV0cyAiam1wICN7b3Bl
cmFuZHNbMF0ueDg2Q2FsbE9wZXJhbmQoOmludCl9IgorICAgICAgICB3aGVuICJiYWRkaW8iLCAi
YmFkZHBvIgorICAgICAgICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAiam8iLCA6aW50
KQorICAgICAgICB3aGVuICJiYWRkaXMiLCAiYmFkZHBzIgorICAgICAgICAgICAgaGFuZGxlWDg2
T3BCcmFuY2goImFkZGwiLCAianMiLCA6aW50KQorICAgICAgICB3aGVuICJiYWRkaXoiLCAiYmFk
ZHB6IgorICAgICAgICAgICAgaGFuZGxlWDg2T3BCcmFuY2goImFkZGwiLCAianoiLCA6aW50KQor
ICAgICAgICB3aGVuICJiYWRkaW56IiwgImJhZGRwbnoiCisgICAgICAgICAgICBoYW5kbGVYODZP
cEJyYW5jaCgiYWRkbCIsICJqbnoiLCA6aW50KQorICAgICAgICB3aGVuICJic3ViaW8iCisgICAg
ICAgICAgICBoYW5kbGVYODZTdWJCcmFuY2goImpvIiwgOmludCkKKyAgICAgICAgd2hlbiAiYnN1
YmlzIgorICAgICAgICAgICAgaGFuZGxlWDg2U3ViQnJhbmNoKCJqcyIsIDppbnQpCisgICAgICAg
IHdoZW4gImJzdWJpeiIKKyAgICAgICAgICAgIGhhbmRsZVg4NlN1YkJyYW5jaCgianoiLCA6aW50
KQorICAgICAgICB3aGVuICJic3ViaW56IgorICAgICAgICAgICAgaGFuZGxlWDg2U3ViQnJhbmNo
KCJqbnoiLCA6aW50KQorICAgICAgICB3aGVuICJibXVsaW8iCisgICAgICAgICAgICBoYW5kbGVY
ODZPcEJyYW5jaCgiaW11bGwiLCAiam8iLCA6aW50KQorICAgICAgICB3aGVuICJibXVsaXMiCisg
ICAgICAgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAianMiLCA6aW50KQorICAgICAg
ICB3aGVuICJibXVsaXoiCisgICAgICAgICAgICBoYW5kbGVYODZPcEJyYW5jaCgiaW11bGwiLCAi
anoiLCA6aW50KQorICAgICAgICB3aGVuICJibXVsaW56IgorICAgICAgICAgICAgaGFuZGxlWDg2
T3BCcmFuY2goImltdWxsIiwgImpueiIsIDppbnQpCisgICAgICAgIHdoZW4gImJvcmlvIgorICAg
ICAgICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqbyIsIDppbnQpCisgICAgICAgIHdo
ZW4gImJvcmlzIgorICAgICAgICAgICAgaGFuZGxlWDg2T3BCcmFuY2goIm9ybCIsICJqcyIsIDpp
bnQpCisgICAgICAgIHdoZW4gImJvcml6IgorICAgICAgICAgICAgaGFuZGxlWDg2T3BCcmFuY2go
Im9ybCIsICJqeiIsIDppbnQpCisgICAgICAgIHdoZW4gImJvcmlueiIKKyAgICAgICAgICAgIGhh
bmRsZVg4Nk9wQnJhbmNoKCJvcmwiLCAiam56IiwgOmludCkKKyAgICAgICAgd2hlbiAiYnJlYWsi
CisgICAgICAgICAgICAkYXNtLnB1dHMgImludCAkMyIKKyAgICAgICAgd2hlbiAiY2FsbCIKKyAg
ICAgICAgICAgICRhc20ucHV0cyAiY2FsbCAje29wZXJhbmRzWzBdLng4NkNhbGxPcGVyYW5kKDpp
bnQpfSIKKyAgICAgICAgd2hlbiAicmV0IgorICAgICAgICAgICAgJGFzbS5wdXRzICJyZXQiCisg
ICAgICAgIHdoZW4gImNpZXEiLCAiY3BlcSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludENvbXBh
cmVTZXQoInNldGUiLCA6aW50KQorICAgICAgICB3aGVuICJjaW5lcSIsICJjcG5lcSIKKyAgICAg
ICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldG5lIiwgOmludCkKKyAgICAgICAgd2hl
biAiY2lhIiwgImNwYSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGEi
LCA6aW50KQorICAgICAgICB3aGVuICJjaWFlcSIsICJjcGFlcSIKKyAgICAgICAgICAgIGhhbmRs
ZVg4NkludENvbXBhcmVTZXQoInNldGFlIiwgOmludCkKKyAgICAgICAgd2hlbiAiY2liIiwgImNw
YiIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludENvbXBhcmVTZXQoInNldGIiLCA6aW50KQorICAg
ICAgICB3aGVuICJjaWJlcSIsICJjcGJlcSIKKyAgICAgICAgICAgIGhhbmRsZVg4NkludENvbXBh
cmVTZXQoInNldGJlIiwgOmludCkKKyAgICAgICAgd2hlbiAiY2lndCIsICJjcGd0IgorICAgICAg
ICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0ZyIsIDppbnQpCisgICAgICAgIHdoZW4g
ImNpZ3RlcSIsICJjcGd0ZXEiCisgICAgICAgICAgICBoYW5kbGVYODZJbnRDb21wYXJlU2V0KCJz
ZXRnZSIsIDppbnQpCisgICAgICAgIHdoZW4gImNpbHQiLCAiY3BsdCIKKyAgICAgICAgICAgIGhh
bmRsZVg4NkludENvbXBhcmVTZXQoInNldGwiLCA6aW50KQorICAgICAgICB3aGVuICJjaWx0ZXEi
LCAiY3BsdGVxIgorICAgICAgICAgICAgaGFuZGxlWDg2SW50Q29tcGFyZVNldCgic2V0bGUiLCA6
aW50KQorICAgICAgICB3aGVuICJ0aW8iCisgICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJz
ZXRvIiwgOmludCkKKyAgICAgICAgd2hlbiAidGlzIgorICAgICAgICAgICAgaGFuZGxlWDg2U2V0
VGVzdCgic2V0cyIsIDppbnQpCisgICAgICAgIHdoZW4gInRpeiIKKyAgICAgICAgICAgIGhhbmRs
ZVg4NlNldFRlc3QoInNldHoiLCA6aW50KQorICAgICAgICB3aGVuICJ0aW56IgorICAgICAgICAg
ICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0bnoiLCA6aW50KQorICAgICAgICB3aGVuICJ0Ym8iCisg
ICAgICAgICAgICBoYW5kbGVYODZTZXRUZXN0KCJzZXRvIiwgOmJ5dGUpCisgICAgICAgIHdoZW4g
InRicyIKKyAgICAgICAgICAgIGhhbmRsZVg4NlNldFRlc3QoInNldHMiLCA6Ynl0ZSkKKyAgICAg
ICAgd2hlbiAidGJ6IgorICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0eiIsIDpieXRl
KQorICAgICAgICB3aGVuICJ0Ym56IgorICAgICAgICAgICAgaGFuZGxlWDg2U2V0VGVzdCgic2V0
bnoiLCA6Ynl0ZSkKKyAgICAgICAgd2hlbiAicGVlayIKKyAgICAgICAgICAgICRhc20ucHV0cyAi
bW92bCAje29wZXJhbmRzWzBdLnZhbHVlICogNH0oJWVzcCksICN7b3BlcmFuZHNbMV0ueDg2T3Bl
cmFuZCg6aW50KX0iCisgICAgICAgIHdoZW4gInBva2UiCisgICAgICAgICAgICAkYXNtLnB1dHMg
Im1vdmwgI3tvcGVyYW5kc1swXS54ODZPcGVyYW5kKDppbnQpfSwgI3tvcGVyYW5kc1sxXS52YWx1
ZSAqIDR9KCVlc3ApIgorICAgICAgICB3aGVuICJjZHFpIgorICAgICAgICAgICAgJGFzbS5wdXRz
ICJjZHEiCisgICAgICAgIHdoZW4gImlkaXZpIgorICAgICAgICAgICAgJGFzbS5wdXRzICJpZGl2
bCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICB3aGVuICJmaWkyZCIK
KyAgICAgICAgICAgICRhc20ucHV0cyAibW92ZCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmlu
dCl9LCAje29wZXJhbmRzWzJdLng4Nk9wZXJhbmQoOmRvdWJsZSl9IgorICAgICAgICAgICAgJGFz
bS5wdXRzICJtb3ZkICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0sICV4bW03IgorICAg
ICAgICAgICAgJGFzbS5wdXRzICJwc2xscSAkMzIsICV4bW03IgorICAgICAgICAgICAgJGFzbS5w
dXRzICJwb3IgJXhtbTcsICN7b3BlcmFuZHNbMl0ueDg2T3BlcmFuZCg6ZG91YmxlKX0iCisgICAg
ICAgIHdoZW4gImZkMmlpIgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZkICN7b3BlcmFuZHNb
MF0ueDg2T3BlcmFuZCg6ZG91YmxlKX0sICN7b3BlcmFuZHNbMV0ueDg2T3BlcmFuZCg6aW50KX0i
CisgICAgICAgICAgICAkYXNtLnB1dHMgIm1vdnNkICN7b3BlcmFuZHNbMF0ueDg2T3BlcmFuZCg6
ZG91YmxlKX0sICV4bW03IgorICAgICAgICAgICAgJGFzbS5wdXRzICJwc3JscSAkMzIsICV4bW03
IgorICAgICAgICAgICAgJGFzbS5wdXRzICJtb3ZzZCAleG1tNywgI3tvcGVyYW5kc1syXS54ODZP
cGVyYW5kKDppbnQpfSIKKyAgICAgICAgd2hlbiAiYm8iCisgICAgICAgICAgICAkYXNtLnB1dHMg
ImpvICN7b3BlcmFuZHNbMF0uYXNtTGFiZWx9IgorICAgICAgICB3aGVuICJicyIKKyAgICAgICAg
ICAgICRhc20ucHV0cyAianMgI3tvcGVyYW5kc1swXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4g
ImJ6IgorICAgICAgICAgICAgJGFzbS5wdXRzICJqeiAje29wZXJhbmRzWzBdLmFzbUxhYmVsfSIK
KyAgICAgICAgd2hlbiAiYm56IgorICAgICAgICAgICAgJGFzbS5wdXRzICJqbnogI3tvcGVyYW5k
c1swXS5hc21MYWJlbH0iCisgICAgICAgIHdoZW4gImxlYWkiLCAibGVhcCIKKyAgICAgICAgICAg
ICRhc20ucHV0cyAibGVhbCAje29wZXJhbmRzWzBdLng4Nk9wZXJhbmQoOmludCl9LCAje29wZXJh
bmRzWzFdLng4Nk9wZXJhbmQoOmludCl9IgorICAgICAgICBlbHNlCisgICAgICAgICAgICByYWlz
ZSAiQmFkIG9wY29kZTogI3tvcGNvZGV9IgorICAgICAgICBlbmQKKyAgICBlbmQKK2VuZAorCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db2RlU3BlY2lhbGl6YXRpb25LaW5k
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29kZVNwZWNp
YWxpemF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgQ29kZVNwZWNpYWxpemF0aW9uS2luZF9oCisjZGVmaW5lIENvZGVTcGVjaWFsaXphdGlvbktp
bmRfaAorCituYW1lc3BhY2UgSlNDIHsKKworZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsg
Q29kZUZvckNhbGwsIENvZGVGb3JDb25zdHJ1Y3QgfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisK
KyNlbmRpZiAvLyBDb2RlU3BlY2lhbGl6YXRpb25LaW5kX2gKKwpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmgJKHJldmlzaW9uIDEwODM1
OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjZGVmaW5lIENvbW1vblNsb3dQYXRoc19o
CiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25L
aW5kLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkpTQXJyYXku
aCIKIApAQCAtNDEsNiArNDIsMzggQEAgbmFtZXNwYWNlIEpTQyB7CiAKIG5hbWVzcGFjZSBDb21t
b25TbG93UGF0aHMgewogCitBTFdBWVNfSU5MSU5FIEV4ZWNTdGF0ZSogYXJpdHlDaGVja0ZvcihF
eGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIGtpbmQpCit7CisgICAgSlNGdW5jdGlvbiogY2FsbGVlID0gYXNGdW5jdGlvbihl
eGVjLT5jYWxsZWUoKSk7CisgICAgQVNTRVJUKCFjYWxsZWUtPmlzSG9zdEZ1bmN0aW9uKCkpOwor
ICAgIENvZGVCbG9jayogbmV3Q29kZUJsb2NrID0gJmNhbGxlZS0+anNFeGVjdXRhYmxlKCktPmdl
bmVyYXRlZEJ5dGVjb2RlRm9yKGtpbmQpOworICAgIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5n
VGhpcyA9IGV4ZWMtPmFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzKCk7CisKKyAgICAvLyBUaGlz
IGVuc3VyZXMgZW5vdWdoIHNwYWNlIGZvciB0aGUgd29yc3QgY2FzZSBzY2VuYXJpbyBvZiB6ZXJv
IGFyZ3VtZW50cyBwYXNzZWQgYnkgdGhlIGNhbGxlci4KKyAgICBpZiAoIXJlZ2lzdGVyRmlsZS0+
Z3JvdyhleGVjLT5yZWdpc3RlcnMoKSArIG5ld0NvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpICsg
bmV3Q29kZUJsb2NrLT5tX251bUNhbGxlZVJlZ2lzdGVycykpCisgICAgICAgIHJldHVybiAwOwor
CisgICAgQVNTRVJUKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzIDwgbmV3Q29kZUJsb2NrLT5u
dW1QYXJhbWV0ZXJzKCkpOworCisgICAgLy8gVG9vIGZldyBhcmd1bWVudHMgLS0gY29weSBjYWxs
IGZyYW1lIGFuZCBhcmd1bWVudHMsIHRoZW4gZmlsbCBpbiBtaXNzaW5nIGFyZ3VtZW50cyB3aXRo
IHVuZGVmaW5lZC4KKyAgICBzaXplX3QgZGVsdGEgPSBuZXdDb2RlQmxvY2stPm51bVBhcmFtZXRl
cnMoKSAtIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzOworICAgIFJlZ2lzdGVyKiBzcmMgPSBl
eGVjLT5yZWdpc3RlcnMoKTsKKyAgICBSZWdpc3RlciogZHN0ID0gZXhlYy0+cmVnaXN0ZXJzKCkg
KyBkZWx0YTsKKworICAgIGludCBpOworICAgIGludCBlbmQgPSAtRXhlY1N0YXRlOjpvZmZzZXRG
b3IoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOworICAgIGZvciAoaSA9IC0xOyBpID49IGVu
ZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBzcmNbaV07CisKKyAgICBlbmQgLT0gZGVsdGE7Cisg
ICAgZm9yICggOyBpID49IGVuZDsgLS1pKQorICAgICAgICBkc3RbaV0gPSBqc1VuZGVmaW5lZCgp
OworCisgICAgRXhlY1N0YXRlKiBuZXdFeGVjID0gRXhlY1N0YXRlOjpjcmVhdGUoZHN0KTsKKyAg
ICBBU1NFUlQoKHZvaWQqKW5ld0V4ZWMgPD0gcmVnaXN0ZXJGaWxlLT5lbmQoKSk7CisgICAgcmV0
dXJuIG5ld0V4ZWM7Cit9CisKIEFMV0FZU19JTkxJTkUgYm9vbCBvcEluc3RhbmNlT2ZTbG93KEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSwgSlNWYWx1ZSBiYXNlVmFsLCBKU1ZhbHVlIHBy
b3RvKQogewogICAgIEFTU0VSVCghdmFsdWUuaXNDZWxsKCkgfHwgIWJhc2VWYWwuaXNDZWxsKCkg
fHwgIXByb3RvLmlzQ2VsbCgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMTA4MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJCeXRlY29kZUdlbmVyYXRvci5oIgogI2luY2x1ZGUgIkNvZGVCbG9jay5o
IgogI2luY2x1ZGUgIkRGR0RyaXZlci5oIgorI2luY2x1ZGUgIkV4ZWN1dGlvbkhhcm5lc3MuaCIK
ICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKSVREcml2ZXIuaCIKICNpbmNsdWRlICJQYXJz
ZXIuaCIKQEAgLTg4LDcgKzg5LDcgQEAgSW50cmluc2ljIE5hdGl2ZUV4ZWN1dGFibGU6OmludHJp
bnNpYygpIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0YXRpYyB2b2lkIGpldHRpc29uQ29kZUJs
b2NrKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPFQ+JiBjb2RlQmxvY2spCiB7Ci0g
ICAgQVNTRVJUKGNvZGVCbG9jay0+Z2V0SklUVHlwZSgpICE9IEpJVENvZGU6OkJhc2VsaW5lSklU
KTsKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNPcHRpbWl6aW5nSklUKGNvZGVCbG9jay0+Z2V0SklU
VHlwZSgpKSk7CiAgICAgQVNTRVJUKGNvZGVCbG9jay0+YWx0ZXJuYXRpdmUoKSk7CiAgICAgT3du
UHRyPFQ+IGNvZGVCbG9ja1RvSmV0dGlzb24gPSBjb2RlQmxvY2sucmVsZWFzZSgpOwogICAgIGNv
ZGVCbG9jayA9IHN0YXRpY19wb2ludGVyX2Nhc3Q8VD4oY29kZUJsb2NrVG9KZXR0aXNvbi0+cmVs
ZWFzZUFsdGVybmF0aXZlKCkpOwpAQCAtMTc1LDkgKzE3NiwzMiBAQCBKU09iamVjdCogRXZhbEV4
ZWN1dGFibGU6OmNvbXBpbGVPcHRpbWl6CiAgICAgcmV0dXJuIGVycm9yOwogfQogCisjaWYgRU5B
QkxFKEpJVCkKK3ZvaWQgRXZhbEV4ZWN1dGFibGU6OmppdENvbXBpbGUoSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0gaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUo
Z2xvYmFsRGF0YSwgbV9ldmFsQ29kZUJsb2NrLCBtX2ppdENvZGVGb3JDYWxsLCBKSVRDb2RlOjpi
b3R0b21UaWVySklUKCkpOworICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQor
I2VuZGlmCisKK2lubGluZSBjb25zdCBjaGFyKiBzYW1wbGluZ0Rlc2NyaXB0aW9uKEpJVENvZGU6
OkpJVFR5cGUgaml0VHlwZSkKK3sKKyAgICBzd2l0Y2ggKGppdFR5cGUpIHsKKyAgICBjYXNlIEpJ
VENvZGU6OkludGVycHJldGVyVGh1bms6CisgICAgICAgIHJldHVybiAiSW50ZXJwcmV0ZXIgQ29t
cGlsYXRpb24gKFRPVEFMKSI7CisgICAgY2FzZSBKSVRDb2RlOjpCYXNlbGluZUpJVDoKKyAgICAg
ICAgcmV0dXJuICJCYXNlbGluZSBDb21waWxhdGlvbiAoVE9UQUwpIjsKKyAgICBjYXNlIEpJVENv
ZGU6OkRGR0pJVDoKKyAgICAgICAgcmV0dXJuICJERkcgQ29tcGlsYXRpb24gKFRPVEFMKSI7Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVy
biAwOworICAgIH0KK30KKwogSlNPYmplY3QqIEV2YWxFeGVjdXRhYmxlOjpjb21waWxlSW50ZXJu
YWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENv
ZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lv
bihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9u
IChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdp
b24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAj
aWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtMjE4LDcgKzI0
Miw3IEBAIEpTT2JqZWN0KiBFdmFsRXhlY3V0YWJsZTo6Y29tcGlsZUludGVybmEKICAgICB9CiAK
ICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoKmdsb2Jh
bERhdGEsIG1fZXZhbENvZGVCbG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCisgICAg
aWYgKCFwcmVwYXJlRm9yRXhlY3V0aW9uKCpnbG9iYWxEYXRhLCBtX2V2YWxDb2RlQmxvY2ssIG1f
aml0Q29kZUZvckNhbGwsIGppdFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBA
IC0zMDMsOSArMzI3LDE3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6Y29tcGlsZU9w
dGkKICAgICByZXR1cm4gZXJyb3I7CiB9CiAKKyNpZiBFTkFCTEUoSklUKQordm9pZCBQcm9ncmFt
RXhlY3V0YWJsZTo6aml0Q29tcGlsZShKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEpCit7CisgICAg
Ym9vbCByZXN1bHQgPSBqaXRDb21waWxlSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX3Byb2dy
YW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGwsIEpJVENvZGU6OmJvdHRvbVRpZXJKSVQoKSk7
CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdCk7Cit9CisjZW5kaWYKKwogSlNPYmpl
Y3QqIFByb2dyYW1FeGVjdXRhYmxlOjpjb21waWxlSW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBT
Y29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkK
IHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6
OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21w
aWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2Ft
cGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAg
VU5VU0VEX1BBUkFNKGppdFR5cGUpOwpAQCAtMzQ0LDcgKzM3Niw3IEBAIEpTT2JqZWN0KiBQcm9n
cmFtRXhlY3V0YWJsZTo6Y29tcGlsZUludGUKICAgICB9CiAKICNpZiBFTkFCTEUoSklUKQotICAg
IGlmICghaml0Q29tcGlsZUlmQXBwcm9wcmlhdGUoKmdsb2JhbERhdGEsIG1fcHJvZ3JhbUNvZGVC
bG9jaywgbV9qaXRDb2RlRm9yQ2FsbCwgaml0VHlwZSkpCisgICAgaWYgKCFwcmVwYXJlRm9yRXhl
Y3V0aW9uKCpnbG9iYWxEYXRhLCBtX3Byb2dyYW1Db2RlQmxvY2ssIG1faml0Q29kZUZvckNhbGws
IGppdFR5cGUpKQogICAgICAgICByZXR1cm4gMDsKICNlbmRpZgogCkBAIC00MjAsNyArNDUyLDcg
QEAgRnVuY3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6YgogICAgIHdoaWxlIChy
ZXN1bHQtPmFsdGVybmF0aXZlKCkpCiAgICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PEZ1bmN0
aW9uQ29kZUJsb2NrKj4ocmVzdWx0LT5hbHRlcm5hdGl2ZSgpKTsKICAgICBBU1NFUlQocmVzdWx0
KTsKLSAgICBBU1NFUlQocmVzdWx0LT5nZXRKSVRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVK
SVQpOworICAgIEFTU0VSVChKSVRDb2RlOjppc0Jhc2VsaW5lQ29kZShyZXN1bHQtPmdldEpJVFR5
cGUoKSkpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTQ0Niw2ICs0NzgsMjAgQEAgSlNP
YmplY3QqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29tcGlsZU9wdAogICAgIHJldHVybiBlcnJvcjsK
IH0KIAorI2lmIEVOQUJMRShKSVQpCit2b2lkIEZ1bmN0aW9uRXhlY3V0YWJsZTo6aml0Q29tcGls
ZUZvckNhbGwoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wgcmVzdWx0ID0g
aml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2NvZGVCbG9ja0Zv
ckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVjaywg
bV9zeW1ib2xUYWJsZSwgSklUQ29kZTo6Ym90dG9tVGllckpJVCgpKTsKKyAgICBBU1NFUlRfVU5V
U0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKwordm9pZCBGdW5jdGlvbkV4ZWN1dGFibGU6OmppdENv
bXBpbGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKQoreworICAgIGJvb2wg
cmVzdWx0ID0gaml0Q29tcGlsZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShnbG9iYWxEYXRhLCBtX2Nv
ZGVCbG9ja0ZvckNvbnN0cnVjdCwgbV9qaXRDb2RlRm9yQ29uc3RydWN0LCBtX2ppdENvZGVGb3JD
b25zdHJ1Y3RXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgSklUQ29kZTo6Ym90dG9tVGll
ckpJVCgpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0KTsKK30KKyNlbmRpZgor
CiBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb2RlQmxvY2tXaXRoQnl0
ZWNvZGVGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQogewogICAgIEZ1bmN0aW9uQ29k
ZUJsb2NrKiBjb2RlQmxvY2sgPSBiYXNlbGluZUNvZGVCbG9ja0ZvcihraW5kKTsKQEAgLTQ5MCw3
ICs1MzYsNyBAQCBQYXNzT3duUHRyPEZ1bmN0aW9uQ29kZUJsb2NrPiBGdW5jdGlvbkV4CiAKIEpT
T2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3JDYWxsSW50ZXJuYWwoRXhlY1N0
YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2NvcGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5
cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBl
ID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJhc2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCki
IDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxp
bmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihqaXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJM
RShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGV4ZWMpOwpAQCAtNTEyLDcgKzU1OCw3IEBAIEpTT2Jq
ZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNvbXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0g
bV9jb2RlQmxvY2tGb3JDYWxsLT5zaGFyZWRTeW1ib2xUYWJsZSgpOwogCiAjaWYgRU5BQkxFKEpJ
VCkKLSAgICBpZiAoIWppdENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZXhlYy0+Z2xvYmFs
RGF0YSgpLCBtX2NvZGVCbG9ja0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZv
ckNhbGxXaXRoQXJpdHlDaGVjaywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSkpCisgICAgaWYgKCFw
cmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oZXhlYy0+Z2xvYmFsRGF0YSgpLCBtX2NvZGVCbG9j
a0ZvckNhbGwsIG1faml0Q29kZUZvckNhbGwsIG1faml0Q29kZUZvckNhbGxXaXRoQXJpdHlDaGVj
aywgbV9zeW1ib2xUYWJsZSwgaml0VHlwZSwgQ29kZUZvckNhbGwpKQogICAgICAgICByZXR1cm4g
MDsKICNlbmRpZgogCkBAIC01MzIsNyArNTc4LDcgQEAgSlNPYmplY3QqIEZ1bmN0aW9uRXhlY3V0
YWJsZTo6Y29tcGlsZUZvcgogCiBKU09iamVjdCogRnVuY3Rpb25FeGVjdXRhYmxlOjpjb21waWxl
Rm9yQ29uc3RydWN0SW50ZXJuYWwoRXhlY1N0YXRlKiBleGVjLCBTY29wZUNoYWluTm9kZSogc2Nv
cGVDaGFpbk5vZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0VHlwZSkKIHsKLSAgICBTYW1wbGluZ1Jl
Z2lvbiBzYW1wbGluZ1JlZ2lvbihqaXRUeXBlID09IEpJVENvZGU6OkJhc2VsaW5lSklUID8gIkJh
c2VsaW5lIENvbXBpbGF0aW9uIChUT1RBTCkiIDogIkRGRyBDb21waWxhdGlvbiAoVE9UQUwpIik7
CisgICAgU2FtcGxpbmdSZWdpb24gc2FtcGxpbmdSZWdpb24oc2FtcGxpbmdEZXNjcmlwdGlvbihq
aXRUeXBlKSk7CiAgICAgCiAjaWYgIUVOQUJMRShKSVQpCiAgICAgVU5VU0VEX1BBUkFNKGppdFR5
cGUpOwpAQCAtNTU0LDcgKzYwMCw3IEBAIEpTT2JqZWN0KiBGdW5jdGlvbkV4ZWN1dGFibGU6OmNv
bXBpbGVGb3IKICAgICBtX3N5bWJvbFRhYmxlID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QtPnNo
YXJlZFN5bWJvbFRhYmxlKCk7CiAKICNpZiBFTkFCTEUoSklUKQotICAgIGlmICghaml0Q29tcGls
ZUZ1bmN0aW9uSWZBcHByb3ByaWF0ZShleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9y
Q29uc3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdp
dGhBcml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlKSkKKyAgICBpZiAoIXByZXBhcmVG
dW5jdGlvbkZvckV4ZWN1dGlvbihleGVjLT5nbG9iYWxEYXRhKCksIG1fY29kZUJsb2NrRm9yQ29u
c3RydWN0LCBtX2ppdENvZGVGb3JDb25zdHJ1Y3QsIG1faml0Q29kZUZvckNvbnN0cnVjdFdpdGhB
cml0eUNoZWNrLCBtX3N5bWJvbFRhYmxlLCBqaXRUeXBlLCBDb2RlRm9yQ29uc3RydWN0KSkKICAg
ICAgICAgcmV0dXJuIDA7CiAjZW5kaWYKIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTA4MzU4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3
IEBACiAjZGVmaW5lIEV4ZWN1dGFibGVfaAogCiAjaW5jbHVkZSAiQ2FsbERhdGEuaCIKKyNpbmNs
dWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCiAjaW5jbHVkZSAiSlNGdW5jdGlvbi5oIgog
I2luY2x1ZGUgIkludGVycHJldGVyLmgiCiAjaW5jbHVkZSAiTm9kZXMuaCIKQEAgLTM5LDEyICs0
MCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBEZWJ1Z2dlcjsKICAgICBjbGFzcyBF
dmFsQ29kZUJsb2NrOwogICAgIGNsYXNzIEZ1bmN0aW9uQ29kZUJsb2NrOworICAgIGNsYXNzIExM
SW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBQcm9ncmFtQ29kZUJsb2NrOwogICAgIGNs
YXNzIFNjb3BlQ2hhaW5Ob2RlOwogCiAgICAgc3RydWN0IEV4Y2VwdGlvbkluZm87CiAgICAgCi0g
ICAgZW51bSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHsgQ29kZUZvckNhbGwsIENvZGVGb3JDb25z
dHJ1Y3QgfTsKICAgICBlbnVtIENvbXBpbGF0aW9uS2luZCB7IEZpcnN0Q29tcGlsYXRpb24sIE9w
dGltaXppbmdDb21waWxhdGlvbiB9OwogCiAgICAgaW5saW5lIGJvb2wgaXNDYWxsKENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKQEAgLTMyNSw2ICszMjYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICB9OwogCiAgICAgY2xhc3MgRXZhbEV4ZWN1dGFibGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0
YWJsZSB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAg
cHVibGljOgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtMzQ0
LDYgKzM0Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQog
ICAgICAgICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZShKU0dsb2JhbERhdGEmKTsKKyAgICAg
ICAgdm9pZCBqaXRDb21waWxlKEpTR2xvYmFsRGF0YSYpOwogI2VuZGlmCiAKICAgICAgICAgRXZh
bENvZGVCbG9jayYgZ2VuZXJhdGVkQnl0ZWNvZGUoKQpAQCAtMzkwLDYgKzM5Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgIH07CiAKICAgICBjbGFzcyBQcm9ncmFtRXhlY3V0YWJsZSA6IHB1Ymxp
YyBTY3JpcHRFeGVjdXRhYmxlIHsKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKICAgICBwdWJsaWM6CiAgICAgICAgIHR5cGVkZWYgU2NyaXB0RXhlY3V0YWJsZSBC
YXNlOwogCkBAIC00MTcsNiArNDIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lm
IEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQgamV0dGlzb25PcHRpbWl6ZWRDb2RlKEpTR2xvYmFs
RGF0YSYpOworICAgICAgICB2b2lkIGppdENvbXBpbGUoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYK
IAogICAgICAgICBQcm9ncmFtQ29kZUJsb2NrJiBnZW5lcmF0ZWRCeXRlY29kZSgpCkBAIC00NTks
NiArNDY0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBjbGFzcyBGdW5jdGlvbkV4ZWN1dGFi
bGUgOiBwdWJsaWMgU2NyaXB0RXhlY3V0YWJsZSB7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBKSVQ7
CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgcHVibGlj
OgogICAgICAgICB0eXBlZGVmIFNjcmlwdEV4ZWN1dGFibGUgQmFzZTsKIApAQCAtNTE0LDYgKzUy
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICNpZiBFTkFCTEUoSklUKQogICAgICAg
ICB2b2lkIGpldHRpc29uT3B0aW1pemVkQ29kZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7CisgICAg
ICAgIHZvaWQgaml0Q29tcGlsZUZvckNhbGwoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAogICAg
ICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ2FsbCgpIGNvbnN0CkBAIC01NDEsNiArNTQ4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIAogI2lmIEVOQUJMRShKSVQpCiAgICAgICAgIHZvaWQg
amV0dGlzb25PcHRpbWl6ZWRDb2RlRm9yQ29uc3RydWN0KEpTR2xvYmFsRGF0YSYpOworICAgICAg
ICB2b2lkIGppdENvbXBpbGVGb3JDb25zdHJ1Y3QoSlNHbG9iYWxEYXRhJik7CiAjZW5kaWYKIAog
ICAgICAgICBib29sIGlzR2VuZXJhdGVkRm9yQ29uc3RydWN0KCkgY29uc3QKQEAgLTU4OCw2ICs1
OTYsMTYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICAgICAgamV0dGlzb25PcHRpbWl6
ZWRDb2RlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB2b2lkIGppdENvbXBpbGVGb3IoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIGlmIChraW5kID09IENvZGVGb3JDYWxsKSB7CisgICAgICAgICAgICAgICAgaml0Q29tcGls
ZUZvckNhbGwoZ2xvYmFsRGF0YSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgQVNTRVJUKGtpbmQgPT0gQ29kZUZvckNvbnN0cnVjdCk7CisgICAg
ICAgICAgICBqaXRDb21waWxlRm9yQ29uc3RydWN0KGdsb2JhbERhdGEpOworICAgICAgICB9CiAj
ZW5kaWYKICAgICAgICAgCiAgICAgICAgIGJvb2wgaXNHZW5lcmF0ZWRGb3IoQ29kZVNwZWNpYWxp
emF0aW9uS2luZCBraW5kKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0aW9uSGFybmVzcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGlvbkhhcm5lc3MuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3
MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIEV4ZWN1dGlvbkhhcm5lc3NfaAorI2RlZmluZSBFeGVjdXRpb25IYXJuZXNzX2gKKworI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorCisjaWYgRU5BQkxFKEpJVCkKKworI2luY2x1ZGUgIkpJ
VERyaXZlci5oIgorI2luY2x1ZGUgIkxMSW50RW50cnlwb2ludHMuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK3RlbXBsYXRlPHR5cGVuYW1lIENvZGVCbG9ja1R5cGU+CitpbmxpbmUgYm9vbCBwcmVw
YXJlRm9yRXhlY3V0aW9uKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgT3duUHRyPENvZGVCbG9j
a1R5cGU+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGppdENvZGUsIEpJVENvZGU6OkpJVFR5cGUgaml0
VHlwZSkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYgKEpJVENvZGU6OmlzQmFzZWxpbmVD
b2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9mZiBpbiB0aGUgbG93IGxldmVsIGlu
dGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RW50cnlwb2ludChnbG9iYWxEYXRhLCBjb2Rl
QmxvY2suZ2V0KCksIGppdENvZGUpOworICAgICAgICBjb2RlQmxvY2stPnNldEpJVENvZGUoaml0
Q29kZSwgTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisjZW5kaWYgLy8gRU5BQkxFKExMSU5UKQorICAgIHJldHVybiBqaXRDb21waWxlSWZBcHBy
b3ByaWF0ZShnbG9iYWxEYXRhLCBjb2RlQmxvY2ssIGppdENvZGUsIGppdFR5cGUpOworfQorCitp
bmxpbmUgYm9vbCBwcmVwYXJlRnVuY3Rpb25Gb3JFeGVjdXRpb24oSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCBPd25QdHI8RnVuY3Rpb25Db2RlQmxvY2s+JiBjb2RlQmxvY2ssIEpJVENvZGUmIGpp
dENvZGUsIE1hY3JvQXNzZW1ibGVyQ29kZVB0ciYgaml0Q29kZVdpdGhBcml0eUNoZWNrLCBTaGFy
ZWRTeW1ib2xUYWJsZSomIHN5bWJvbFRhYmxlLCBKSVRDb2RlOjpKSVRUeXBlIGppdFR5cGUsIENv
ZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3sKKyNpZiBFTkFCTEUoTExJTlQpCisgICAgaWYg
KEpJVENvZGU6OmlzQmFzZWxpbmVDb2RlKGppdFR5cGUpKSB7CisgICAgICAgIC8vIFN0YXJ0IG9m
ZiBpbiB0aGUgbG93IGxldmVsIGludGVycHJldGVyLgorICAgICAgICBMTEludDo6Z2V0RnVuY3Rp
b25FbnRyeXBvaW50KGdsb2JhbERhdGEsIGtpbmQsIGppdENvZGUsIGppdENvZGVXaXRoQXJpdHlD
aGVjayk7CisgICAgICAgIGNvZGVCbG9jay0+c2V0SklUQ29kZShqaXRDb2RlLCBqaXRDb2RlV2l0
aEFyaXR5Q2hlY2spOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisjZWxzZQorICAgIFVO
VVNFRF9QQVJBTShraW5kKTsKKyNlbmRpZiAvLyBFTkFCTEUoTExJTlQpCisgICAgcmV0dXJuIGpp
dENvbXBpbGVGdW5jdGlvbklmQXBwcm9wcmlhdGUoZ2xvYmFsRGF0YSwgY29kZUJsb2NrLCBqaXRD
b2RlLCBqaXRDb2RlV2l0aEFyaXR5Q2hlY2ssIHN5bWJvbFRhYmxlLCBqaXRUeXBlKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBFTkFCTEUoSklUKQorCisjZW5kaWYgLy8g
RXhlY3V0aW9uSGFybmVzc19oCisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQXJyYXkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0FycmF5LmgJKHJldmlzaW9uIDEwODM1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBKU0FycmF5OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJh
Y3RvcjsKIAogICAgIHN0cnVjdCBTcGFyc2VBcnJheUVudHJ5IDogcHVibGljIFdyaXRlQmFycmll
cjxVbmtub3duPiB7CiAgICAgICAgIHR5cGVkZWYgV3JpdGVCYXJyaWVyPFVua25vd24+IEJhc2U7
CkBAIC0xMjIsNiArMTIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgfTsKIAogICAgIGNsYXNz
IEpTQXJyYXkgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CisgICAgICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgICAgIGZyaWVuZCBjbGFzcyBXYWxrZXI7CiAK
ICAgICBwcm90ZWN0ZWQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
aAkocmV2aXNpb24gMTA4MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlND
ZWxsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDkgKzM2LDEwIEBACiBuYW1lc3BhY2UgSlNDIHsK
IAogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwotICAgIGNsYXNzIFN0cnVjdHVyZTsKKyAgICBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUHJvcGVydHlEZXNjcmlwdG9y
OwogICAgIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OworICAgIGNsYXNzIFN0cnVjdHVyZTsKIAog
ICAgIGVudW0gRW51bWVyYXRpb25Nb2RlIHsKICAgICAgICAgRXhjbHVkZURvbnRFbnVtUHJvcGVy
dGllcywKQEAgLTE2Myw2ICsxNjQsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGlj
IGJvb2wgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIFByb3BlcnR5RGVzY3JpcHRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAg
ICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAg
ICAgIGNvbnN0IENsYXNzSW5mbyogbV9jbGFzc0luZm87CiAgICAgICAgIFdyaXRlQmFycmllcjxT
dHJ1Y3R1cmU+IG1fc3RydWN0dXJlOwogICAgIH07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oCShyZXZpc2lvbiAxMDgzNTgpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYg
KzMzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgRnVuY3Rpb25Qcm90b3R5cGU7CiAg
ICAgY2xhc3MgSlNBY3RpdmF0aW9uOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OworICAgIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwog
ICAgIGNsYXNzIFNvdXJjZUNvZGU7CiAgICAgbmFtZXNwYWNlIERGRyB7CkBAIC0xNDAsNiArMTQx
LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBj
bGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBKU19FWFBPUlRf
UFJJVkFURSBib29sIGlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkgY29uc3Q7CiAKICAgICAgICAg
c3RhdGljIEpTVmFsdWUgYXJndW1lbnRzR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0
IElkZW50aWZpZXImKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxEYXRhLmNwcAkocmV2aXNpb24gMTA4MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxEYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUs
NyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyQWN0aXZhdGlvbi5oIgogI2luY2x1ZGUgIkZ1bmN0aW9u
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJHZXR0ZXJTZXR0ZXIuaCIKKyNpbmNsdWRlICJIb3N0
Q2FsbFJldHVyblZhbHVlLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJK
U0FjdGl2YXRpb24uaCIKICNpbmNsdWRlICJKU0FQSVZhbHVlV3JhcHBlci5oIgpAQCAtMTQxLDYg
KzE0Miw4IEBAIEpTR2xvYmFsRGF0YTo6SlNHbG9iYWxEYXRhKEdsb2JhbERhdGFUeXAKICAgICAs
IGtleXdvcmRzKGFkb3B0UHRyKG5ldyBLZXl3b3Jkcyh0aGlzKSkpCiAgICAgLCBpbnRlcnByZXRl
cigwKQogICAgICwgaGVhcCh0aGlzLCBoZWFwU2l6ZSkKKyAgICAsIGpzQXJyYXlDbGFzc0luZm8o
JkpTQXJyYXk6OnNfaW5mbykKKyAgICAsIGpzRmluYWxPYmplY3RDbGFzc0luZm8oJkpTRmluYWxP
YmplY3Q6OnNfaW5mbykKICNpZiBFTkFCTEUoREZHX0pJVCkKICAgICAsIHNpemVPZkxhc3RTY3Jh
dGNoQnVmZmVyKDApCiAjZW5kaWYKQEAgLTIxNiw5ICsyMTksMTMgQEAgSlNHbG9iYWxEYXRhOjpK
U0dsb2JhbERhdGEoR2xvYmFsRGF0YVR5cAogICAgIGppdFN0dWJzID0gYWRvcHRQdHIobmV3IEpJ
VFRodW5rcyh0aGlzKSk7CiAjZW5kaWYKIAotICAgIGludGVycHJldGVyLT5pbml0aWFsaXplKHRo
aXMtPmNhblVzZUpJVCgpKTsKKyAgICBpbnRlcnByZXRlci0+aW5pdGlhbGl6ZSgmbGxpbnREYXRh
LCB0aGlzLT5jYW5Vc2VKSVQoKSk7CisgICAgCisgICAgaW5pdGlhbGl6ZUhvc3RDYWxsUmV0dXJu
VmFsdWUoKTsgLy8gVGhpcyBpcyBuZWVkZWQgdG8gY29udmluY2UgdGhlIGxpbmtlciBub3QgdG8g
ZHJvcCBob3N0IGNhbGwgcmV0dXJuIHN1cHBvcnQuCiAKICAgICBoZWFwLm5vdGlmeUlzU2FmZVRv
Q29sbGVjdCgpOworICAgIAorICAgIGxsaW50RGF0YS5wZXJmb3JtQXNzZXJ0aW9ucygqdGhpcyk7
CiB9CiAKIHZvaWQgSlNHbG9iYWxEYXRhOjpjbGVhckJ1aWx0aW5TdHJ1Y3R1cmVzKCkKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsRGF0YS5oCShyZXZpc2lv
biAxMDgzNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbERhdGEu
aAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTUgKzMwLDE2IEBACiAjZGVmaW5lIEpTR2xvYmFsRGF0
YV9oCiAKICNpbmNsdWRlICJDYWNoZWRUcmFuc2NlbmRlbnRhbEZ1bmN0aW9uLmgiCi0jaW5jbHVk
ZSAiSW50cmluc2ljLmgiCiAjaW5jbHVkZSAiRGF0ZUluc3RhbmNlQ2FjaGUuaCIKICNpbmNsdWRl
ICJFeGVjdXRhYmxlQWxsb2NhdG9yLmgiCiAjaW5jbHVkZSAiSGVhcC5oIgotI2luY2x1ZGUgIlN0
cm9uZy5oIgorI2luY2x1ZGUgIkludHJpbnNpYy5oIgogI2luY2x1ZGUgIkpJVFN0dWJzLmgiCiAj
aW5jbHVkZSAiSlNWYWx1ZS5oIgorI2luY2x1ZGUgIkxMSW50RGF0YS5oIgogI2luY2x1ZGUgIk51
bWVyaWNTdHJpbmdzLmgiCiAjaW5jbHVkZSAiU21hbGxTdHJpbmdzLmgiCisjaW5jbHVkZSAiU3Ry
b25nLmgiCiAjaW5jbHVkZSAiVGVybWluYXRvci5oIgogI2luY2x1ZGUgIlRpbWVvdXRDaGVja2Vy
LmgiCiAjaW5jbHVkZSAiV2Vha1JhbmRvbS5oIgpAQCAtNjUsNiArNjYsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBjbGFzcyBKU0dsb2JhbE9iamVjdDsKICAgICBjbGFzcyBKU09iamVjdDsKICAg
ICBjbGFzcyBLZXl3b3JkczsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiAgICAg
Y2xhc3MgTmF0aXZlRXhlY3V0YWJsZTsKICAgICBjbGFzcyBQYXJzZXJBcmVuYTsKICAgICBjbGFz
cyBSZWdFeHBDYWNoZTsKQEAgLTI0MSw3ICsyNDMsMTIgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEhlYXAgaGVhcDsKIAogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbjsKLSNpZiBFTkFCTEUo
SklUKQorCisgICAgICAgIGNvbnN0IENsYXNzSW5mbyogY29uc3QganNBcnJheUNsYXNzSW5mbzsK
KyAgICAgICAgY29uc3QgQ2xhc3NJbmZvKiBjb25zdCBqc0ZpbmFsT2JqZWN0Q2xhc3NJbmZvOwor
CisgICAgICAgIExMSW50OjpEYXRhIGxsaW50RGF0YTsKKwogICAgICAgICBSZXR1cm5BZGRyZXNz
UHRyIGV4Y2VwdGlvbkxvY2F0aW9uOwogICAgICAgICBKU1ZhbHVlIGhvc3RDYWxsUmV0dXJuVmFs
dWU7CiAgICAgICAgIENhbGxGcmFtZSogY2FsbEZyYW1lRm9yVGhyb3c7CkBAIC0yNzEsNyArMjc4
LDYgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICByZXR1cm4gc2NyYXRjaEJ1ZmZlcnMu
bGFzdCgpOwogICAgICAgICB9CiAjZW5kaWYKLSNlbmRpZgogCiAgICAgICAgIEhhc2hNYXA8T3Bh
cXVlSlNDbGFzcyosIE93blB0cjxPcGFxdWVKU0NsYXNzQ29udGV4dERhdGE+ID4gb3BhcXVlSlND
bGFzc0RhdGE7CiAKQEAgLTM0Niw2ICszNTIsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICN1bmRlZiBy
ZWdpc3RlclR5cGVkQXJyYXlGdW5jdGlvbgogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5k
IGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTR2xvYmFs
RGF0YShHbG9iYWxEYXRhVHlwZSwgVGhyZWFkU3RhY2tUeXBlLCBIZWFwU2l6ZSk7CiAgICAgICAg
IHN0YXRpYyBKU0dsb2JhbERhdGEqJiBzaGFyZWRJbnN0YW5jZUludGVybmFsKCk7CiAgICAgICAg
IHZvaWQgY3JlYXRlTmF0aXZlVGh1bmsoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMTA4MzU4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpA
QCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBGdW5jdGlvblByb3Rv
dHlwZTsKICAgICBjbGFzcyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgR2xvYmFsQ29kZUJsb2Nr
OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yOwogICAgIGNsYXNzIFByb2dyYW1Db2RlQmxvY2s7CiAgICAgY2xhc3MgUmVn
RXhwQ29uc3RydWN0b3I7CkBAIC0zNDAsNiArMzQxLDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgYWRkU3RhdGljR2xvYmFscyhHbG9iYWxQcm9wZXJ0
eUluZm8qLCBpbnQgY291bnQpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FOiBGb2xk
IHJlc2V0IGludG8gaW5pdC4KICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBpbml0KEpT
T2JqZWN0KiB0aGlzVmFsdWUpOwogICAgICAgICB2b2lkIHJlc2V0KEpTVmFsdWUgcHJvdG90eXBl
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAkocmV2aXNp
b24gMTA4MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAko
d29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFz
cyBHZXR0ZXJTZXR0ZXI7CiAgICAgY2xhc3MgSGFzaEVudHJ5OwogICAgIGNsYXNzIEludGVybmFs
RnVuY3Rpb247CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNzIE1h
cmtlZEJsb2NrOwogICAgIGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKICAgICBjbGFzcyBQcm9w
ZXJ0eU5hbWVBcnJheTsKQEAgLTI2NCw2ICsyNjUsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgSlNPYmplY3QoSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKiwgUHJvcGVydHlTdG9yYWdlIGlu
bGluZVN0b3JhZ2UpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50
T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIC8vIE5vYm9keSBzaG91bGQgZXZl
ciBhc2sgYW55IG9mIHRoZXNlIHF1ZXN0aW9ucyBvbiBzb21ldGhpbmcgYWxyZWFkeSBrbm93biB0
byBiZSBhIEpTT2JqZWN0LgogICAgICAgICB1c2luZyBKU0NlbGw6OmlzQVBJVmFsdWVXcmFwcGVy
OwogICAgICAgICB1c2luZyBKU0NlbGw6OmlzR2V0dGVyU2V0dGVyOwpAQCAtMzY5LDYgKzM3Miw4
IEBAIENPTVBJTEVfQVNTRVJUKChKU0ZpbmFsT2JqZWN0X2lubGluZVN0b3IKICAgICAgICAgfQog
CiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3Rv
cjsKKyAgICAgICAgCiAgICAgICAgIGV4cGxpY2l0IEpTRmluYWxPYmplY3QoSlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICAgICAgICAgIDogSlNPYmpl
Y3QoZ2xvYmFsRGF0YSwgc3RydWN0dXJlLCBtX2lubGluZVN0b3JhZ2UpCiAgICAgICAgIHsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Byb3BlcnR5
TmFtZUl0ZXJhdG9yLmgJKHJldmlzaW9uIDEwODM1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvcGVydHlOYW1lSXRlcmF0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzgs
NiArMzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIGNsYXNzIElkZW50aWZpZXI7CiAgICAg
Y2xhc3MgSlNPYmplY3Q7CisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAgICAg
Y2xhc3MgSlNQcm9wZXJ0eU5hbWVJdGVyYXRvciA6IHB1YmxpYyBKU0NlbGwgewogICAgICAgICBm
cmllbmQgY2xhc3MgSklUOwpAQCAtOTYsNiArOTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgfQogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IoRXhlY1N0
YXRlKiwgUHJvcGVydHlOYW1lQXJyYXlEYXRhKiBwcm9wZXJ0eU5hbWVBcnJheURhdGEsIHNpemVf
dCBudW1DYWNoZWFibGVTbG90KTsKIAogICAgICAgICBXcml0ZUJhcnJpZXI8U3RydWN0dXJlPiBt
X2NhY2hlZFN0cnVjdHVyZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
U3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNT
dHJpbmcuaAkocmV2aXNpb24gMTA4MzU4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsNyBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKICAgICBjbGFzcyBKU1N0cmluZzsKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRy
YWN0b3I7CiAKICAgICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhKU0dsb2JhbERhdGEqKTsKICAg
ICBKU1N0cmluZyoganNFbXB0eVN0cmluZyhFeGVjU3RhdGUqKTsKQEAgLTI0MCw2ICsyNDEsOCBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVzb2x2ZVJvcGUoRXhlY1N0YXRlKikgY29uc3Q7CiAgICAgICAgIHZvaWQgcmVz
b2x2ZVJvcGVTbG93Q2FzZTgoTENoYXIqKSBjb25zdDsKICAgICAgICAgdm9pZCByZXNvbHZlUm9w
ZVNsb3dDYXNlKFVDaGFyKikgY29uc3Q7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVJbmZvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNUeXBlSW5mby5oCShyZXZpc2lvbiAxMDgzNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1R5cGVJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDgg
QEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CisKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgTWFzcXVlcmFkZXNBc1VuZGVmaW5lZCA9IDE7
IC8vIFdlYkNvcmUgdXNlcyBNYXNxdWVyYWRlc0FzVW5kZWZpbmVkIHRvIG1ha2UgZG9jdW1lbnQu
YWxsIHVuZGV0ZWN0YWJsZS4KICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgSW1wbGVtZW50c0hh
c0luc3RhbmNlID0gMSA8PCAxOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBPdmVycmlkZXNI
YXNJbnN0YW5jZSA9IDEgPDwgMjsKQEAgLTg3LDYgKzg5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIH0KIAogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNl
dHNFeHRyYWN0b3I7CisgICAgICAgIAogICAgICAgICBib29sIGlzU2V0T25GbGFnczEodW5zaWdu
ZWQgZmxhZykgY29uc3QgeyBBU1NFUlQoZmxhZyA8PSAoMSA8PCA3KSk7IHJldHVybiBtX2ZsYWdz
ICYgZmxhZzsgfQogICAgICAgICBib29sIGlzU2V0T25GbGFnczIodW5zaWduZWQgZmxhZykgY29u
c3QgeyBBU1NFUlQoZmxhZyA+PSAoMSA8PCA4KSk7IHJldHVybiBtX2ZsYWdzMiAmIChmbGFnID4+
IDgpOyB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVmFsdWUuY3Bw
CShyZXZpc2lvbiAxMDgzNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Zh
bHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDcgKzExOCw3IEBAIEpTT2JqZWN0KiBKU1Zh
bHVlOjpzeW50aGVzaXplUHJvdG90eXBlKEUKIAogY2hhciogSlNWYWx1ZTo6ZGVzY3JpcHRpb24o
KQogewotICAgIHN0YXRpYyBjb25zdCBzaXplX3Qgc2l6ZSA9IDY0OworICAgIHN0YXRpYyBjb25z
dCBzaXplX3Qgc2l6ZSA9IDEyODsKICAgICBzdGF0aWMgY2hhciBkZXNjcmlwdGlvbltzaXplXTsK
IAogICAgIGlmICghKnRoaXMpCkBAIC0xMjcsMTQgKzEyNywxNCBAQCBjaGFyKiBKU1ZhbHVlOjpk
ZXNjcmlwdGlvbigpCiAgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiSW50MzI6
ICVkIiwgYXNJbnQzMigpKTsKICAgICBlbHNlIGlmIChpc0RvdWJsZSgpKSB7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICAgICAgc25wcmludGYoZGVzY3JpcHRpb24sIHNpemUsICJEb3VibGU6ICVs
ZiwgJWx4IiwgYXNEb3VibGUoKSwgcmVpbnRlcnByZXREb3VibGVUb0ludHB0cihhc0RvdWJsZSgp
KSk7CisgICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiRG91YmxlOiAlbHgsICVs
ZiIsIHJlaW50ZXJwcmV0RG91YmxlVG9JbnRwdHIoYXNEb3VibGUoKSksIGFzRG91YmxlKCkpOwog
I2Vsc2UKICAgICAgICAgdW5pb24gewogICAgICAgICAgICAgZG91YmxlIGFzRG91YmxlOwogICAg
ICAgICAgICAgdWludDMyX3QgYXNUd29JbnQzMnNbMl07CiAgICAgICAgIH0gdTsKICAgICAgICAg
dS5hc0RvdWJsZSA9IGFzRG91YmxlKCk7Ci0gICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBz
aXplLCAiRG91YmxlOiAlbGYsICUwOHg6JTA4eCIsIGFzRG91YmxlKCksIHUuYXNUd29JbnQzMnNb
MV0sIHUuYXNUd29JbnQzMnNbMF0pOworICAgICAgICBzbnByaW50ZihkZXNjcmlwdGlvbiwgc2l6
ZSwgIkRvdWJsZTogJTA4eDolMDh4LCAlbGYiLCB1LmFzVHdvSW50MzJzWzFdLCB1LmFzVHdvSW50
MzJzWzBdLCBhc0RvdWJsZSgpKTsKICNlbmRpZgogICAgIH0gZWxzZSBpZiAoaXNDZWxsKCkpCiAg
ICAgICAgIHNucHJpbnRmKGRlc2NyaXB0aW9uLCBzaXplLCAiQ2VsbDogJXAiLCBhc0NlbGwoKSk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYWx1ZS5oCShyZXZpc2lvbiAx
MDgzNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1ZhbHVlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU1LDYgKzU1LDkgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNsYXNz
IFNwZWN1bGF0aXZlSklUOwogICAgIH0KICNlbmRpZgorICAgIG5hbWVzcGFjZSBMTEludCB7Cisg
ICAgICAgIGNsYXNzIERhdGE7CisgICAgfQogCiAgICAgc3RydWN0IENsYXNzSW5mbzsKICAgICBz
dHJ1Y3QgSW5zdHJ1Y3Rpb247CkBAIC0xMTgsNiArMTIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBERkc6Ok9TUkV4aXRDb21waWxlcjsKICAgICAgICAgZnJpZW5k
IGNsYXNzIERGRzo6U3BlY3VsYXRpdmVKSVQ7CiAjZW5kaWYKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50OjpEYXRhOwogCiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgZW5jb2RlKEpTVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNWYXJpYWJsZU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTVmFyaWFibGVPYmplY3QuaAkocmV2aXNpb24gMTA4MzU4KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNWYXJpYWJsZU9iamVjdC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zOCwxMCArMzgsMTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKKyAgICBjbGFzcyBMTEludE9m
ZnNldHNFeHRyYWN0b3I7CiAgICAgY2xhc3MgUmVnaXN0ZXI7CiAKICAgICBjbGFzcyBKU1Zhcmlh
YmxlT2JqZWN0IDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgICAgICBmcmllbmQgY2xh
c3MgSklUOworICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogCiAg
ICAgcHVibGljOgogICAgICAgICB0eXBlZGVmIEpTTm9uRmluYWxPYmplY3QgQmFzZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnMuY3BwCShyZXZpc2lvbiAxMDgz
NTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTIsNiArNTIsMTAgQEAgdW5zaWduZWQgbWF4aW11bUZ1bmN0aW9uRm9yQ29u
c3RydWN0SW5saQogCiB1bnNpZ25lZCBtYXhpbXVtSW5saW5pbmdEZXB0aDsKIAoraW50MzJfdCBl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcDsKK2ludDMyX3QgZXhlY3V0aW9u
Q291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworaW50MzJfdCBleGVjdXRpb25Db3Vu
dGVyVmFsdWVGb3JKSVRTb29uOworCiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9w
dGltaXplQWZ0ZXJXYXJtVXA7CiBpbnQzMl90IGV4ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGlt
aXplQWZ0ZXJMb25nV2FybVVwOwogaW50MzJfdCBleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250
T3B0aW1pemVBbnl0aW1lU29vbjsKQEAgLTEzNyw2ICsxNDEsMTAgQEAgdm9pZCBpbml0aWFsaXpl
T3B0aW9ucygpCiAgICAgCiAgICAgU0VUKG1heGltdW1JbmxpbmluZ0RlcHRoLCA1KTsKIAorICAg
IFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JKSVRBZnRlcldhcm1VcCwgICAgIC0xMDApOwor
ICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250SklUQW55dGltZVNvb24sIHN0ZDo6
bnVtZXJpY19saW1pdHM8aW50MzJfdD46Om1pbigpKTsKKyAgICBTRVQoZXhlY3V0aW9uQ291bnRl
clZhbHVlRm9ySklUU29vbiwgICAgICAgICAgICAtMTAwKTsKKwogICAgIFNFVChleGVjdXRpb25D
b3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyV2FybVVwLCAgICAgLTEwMDApOwogICAgIFNFVChl
eGVjdXRpb25Db3VudGVyVmFsdWVGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dhcm1VcCwgLTUwMDApOwog
ICAgIFNFVChleGVjdXRpb25Db3VudGVyVmFsdWVGb3JEb250T3B0aW1pemVBbnl0aW1lU29vbiwg
c3RkOjpudW1lcmljX2xpbWl0czxpbnQzMl90Pjo6bWluKCkpOwpAQCAtMTg1LDYgKzE5Myw4IEBA
IHZvaWQgaW5pdGlhbGl6ZU9wdGlvbnMoKQogICAgIGlmIChjcHVzVG9Vc2UgPCAxKQogICAgICAg
ICBjcHVzVG9Vc2UgPSAxOwogICAgIAorICAgIGNwdXNUb1VzZSA9IDE7CisgICAgCiAgICAgU0VU
KG51bWJlck9mR0NNYXJrZXJzLCBjcHVzVG9Vc2UpOwogCiAgICAgQVNTRVJUKGV4ZWN1dGlvbkNv
dW50ZXJWYWx1ZUZvckRvbnRPcHRpbWl6ZUFueXRpbWVTb29uIDw9IGV4ZWN1dGlvbkNvdW50ZXJW
YWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9PcHRpb25zLmgJKHJldmlzaW9uIDEwODM1OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTAg
QEAgZXh0ZXJuIHVuc2lnbmVkIG1heGltdW1GdW5jdGlvbkZvckNvbnN0cgogCiBleHRlcm4gdW5z
aWduZWQgbWF4aW11bUlubGluaW5nRGVwdGg7IC8vIERlcHRoIG9mIGlubGluZSBzdGFjaywgc28g
MSA9IG5vIGlubGluaW5nLCAyID0gb25lIGxldmVsLCBldGMuCiAKK2V4dGVybiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvckpJVEFmdGVyV2FybVVwOworZXh0ZXJuIGludDMyX3QgZXhl
Y3V0aW9uQ291bnRlclZhbHVlRm9yRG9udEpJVEFueXRpbWVTb29uOworZXh0ZXJuIGludDMyX3Qg
ZXhlY3V0aW9uQ291bnRlclZhbHVlRm9ySklUU29vbjsKKwogZXh0ZXJuIGludDMyX3QgZXhlY3V0
aW9uQ291bnRlclZhbHVlRm9yT3B0aW1pemVBZnRlcldhcm1VcDsKIGV4dGVybiBpbnQzMl90IGV4
ZWN1dGlvbkNvdW50ZXJWYWx1ZUZvck9wdGltaXplQWZ0ZXJMb25nV2FybVVwOwogZXh0ZXJuIGlu
dDMyX3QgZXhlY3V0aW9uQ291bnRlclZhbHVlRm9yRG9udE9wdGltaXplQW55dGltZVNvb247Cklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NvcGVDaGFpbi5oCShyZXZpc2lv
biAxMDgzNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY29wZUNoYWluLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xh
c3MgSlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogICAgIGNsYXNzIEpT
T2JqZWN0OworICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBjbGFzcyBTY29w
ZUNoYWluSXRlcmF0b3I7CiAgICAgY2xhc3MgU2xvdFZpc2l0b3I7CiAgICAgCkBAIC05MSw2ICs5
Miw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNfRVhQT1JUREFUQSBjb25z
dCBDbGFzc0luZm8gc19pbmZvOwogCiAgICAgcHJpdmF0ZToKKyAgICAgICAgZnJpZW5kIGNsYXNz
IExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKKyAgICAgICAgCiAgICAgICAgIHN0YXRpYyBjb25zdCB1
bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IE92ZXJyaWRlc1Zpc2l0Q2hpbGRyZW47CiAgICAgfTsK
IApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCShy
ZXZpc2lvbiAxMDgzNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1
cmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNyArMzI1LDcgQEAgU3RydWN0dXJlKiBTdHJ1
Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdAogICAgICAgICAgICAgdHJhbnNpdGlvbi0+Z3Jvd1By
b3BlcnR5U3RvcmFnZUNhcGFjaXR5KCk7CiAgICAgICAgIHJldHVybiB0cmFuc2l0aW9uOwogICAg
IH0KLQorICAgIAogICAgIFN0cnVjdHVyZSogdHJhbnNpdGlvbiA9IGNyZWF0ZShnbG9iYWxEYXRh
LCBzdHJ1Y3R1cmUpOwogCiAgICAgdHJhbnNpdGlvbi0+bV9jYWNoZWRQcm90b3R5cGVDaGFpbi5z
ZXRNYXlCZU51bGwoZ2xvYmFsRGF0YSwgdHJhbnNpdGlvbiwgc3RydWN0dXJlLT5tX2NhY2hlZFBy
b3RvdHlwZUNoYWluLmdldCgpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cnVjdHVyZS5oCShyZXZpc2lvbiAxMDgzNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJ1Y3R1cmUuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAorICAgIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKICAgICBj
bGFzcyBQcm9wZXJ0eU5hbWVBcnJheTsKICAgICBjbGFzcyBQcm9wZXJ0eU5hbWVBcnJheURhdGE7
CiAgICAgY2xhc3MgU3RydWN0dXJlQ2hhaW47CkBAIC0yMDYsNiArMjA3LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIHN0YXRpYyBKU19FWFBPUlREQVRBIGNvbnN0IENsYXNzSW5mbyBzX2lu
Zm87CiAKICAgICBwcml2YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0
cmFjdG9yOworICAgICAgICAKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgU3RydWN0dXJlKEpT
R2xvYmFsRGF0YSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBwcm90b3R5cGUsIGNvbnN0IFR5
cGVJbmZvJiwgY29uc3QgQ2xhc3NJbmZvKik7CiAgICAgICAgIFN0cnVjdHVyZShKU0dsb2JhbERh
dGEmKTsKICAgICAgICAgU3RydWN0dXJlKEpTR2xvYmFsRGF0YSYsIGNvbnN0IFN0cnVjdHVyZSop
OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlQ2hhaW4uaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmVDaGFp
bi5oCShyZXZpc2lvbiAxMDgzNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJ1Y3R1cmVDaGFpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVz
cGFjZSBKU0MgewogCisgICAgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogICAgIGNsYXNz
IFN0cnVjdHVyZTsKIAogICAgIGNsYXNzIFN0cnVjdHVyZUNoYWluIDogcHVibGljIEpTQ2VsbCB7
CkBAIC03NCw2ICs3NSw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICBwcml2
YXRlOgorICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOworICAgICAg
ICAKICAgICAgICAgU3RydWN0dXJlQ2hhaW4oSlNHbG9iYWxEYXRhJiwgU3RydWN0dXJlKik7CiAg
ICAgICAgIHN0YXRpYyB2b2lkIGRlc3Ryb3koSlNDZWxsKik7CiAgICAgICAgIE93bkFycmF5UHRy
PFdyaXRlQmFycmllcjxTdHJ1Y3R1cmU+ID4gbV92ZWN0b3I7CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvd3RmL0lubGluZUFTTS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS93dGYvSW5saW5lQVNNLmgJKHJldmlzaW9uIDEwODM1OCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvSW5saW5lQVNNLmgJKHdvcmtpbmcgY29weSkKQEAgLTcwLDQgKzcwLDExIEBA
CiAjZGVmaW5lIEhJREVfU1lNQk9MKG5hbWUpCiAjZW5kaWYKIAorLy8gRklYTUU6IGZpZ3VyZSBv
dXQgaG93IHRoaXMgd29ya3Mgb24gYWxsIHRoZSBwbGF0Zm9ybXMuIEkga25vdyB0aGF0CisvLyBv
biBMaW51eCwgdGhlIHByZWZlcnJlZCBmb3JtIGlzICIuTHN0dWZmIiBhcyBvcHBvc2VkIHRvICJM
c3R1ZmYiLgorLy8gRG9uJ3Qga25vdyBhYm91dCBhbnkgb2YgdGhlIG90aGVycy4KKyNpZiBQTEFU
Rk9STShNQUMpCisjZGVmaW5lIExPQ0FMX0xBQkVMX1NUUklORyhuYW1lKSAiTCIgI25hbWUKKyNl
bmRpZgorCiAjZW5kaWYgLy8gSW5saW5lQVNNX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmgJKHJldmlzaW9uIDEwODM1OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtOTI4LDYgKzkyOCwxMiBAQAogI2RlZmlu
ZSBFTkFCTEVfSklUIDEKICNlbmRpZgogCisvKiBPbiBzb21lIG9mIHRoZSBwbGF0Zm9ybXMgd2hl
cmUgd2UgaGF2ZSBhIEpJVCwgd2Ugd2FudCB0byBhbHNvIGhhdmUgdGhlIAorICAgbG93LWxldmVs
IGludGVycHJldGVyLiAqLworI2lmICFkZWZpbmVkKEVOQUJMRV9MTElOVCkgJiYgRU5BQkxFKEpJ
VCkgJiYgT1MoREFSV0lOKSAmJiAoQ1BVKFg4NikgfHwgQ1BVKEFSTV9USFVNQjIpKSAmJiBVU0Uo
SlNWQUxVRTMyXzY0KQorI2RlZmluZSBFTkFCTEVfTExJTlQgMQorI2VuZGlmCisKICNpZiAhZGVm
aW5lZChFTkFCTEVfREZHX0pJVCkgJiYgRU5BQkxFKEpJVCkKIC8qIEVuYWJsZSB0aGUgREZHIEpJ
VCBvbiBYODYgYW5kIFg4Nl82NC4gIE9ubHkgdGVzdGVkIG9uIE1hYyBhbmQgR05VL0xpbnV4LiAq
LwogI2lmIChDUFUoWDg2KSB8fCBDUFUoWDg2XzY0KSkgJiYgKFBMQVRGT1JNKE1BQykgfHwgT1Mo
TElOVVgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9TZW50aW5lbExpbmtlZExp
c3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1NlbnRpbmVsTGlu
a2VkTGlzdC5oCShyZXZpc2lvbiAxMDgzNTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd3Rm
L1NlbnRpbmVsTGlua2VkTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC04Niw2ICs4Niw4IEBAIHB1
YmxpYzoKIAogICAgIGl0ZXJhdG9yIGJlZ2luKCk7CiAgICAgaXRlcmF0b3IgZW5kKCk7CisgICAg
CisgICAgYm9vbCBpc0VtcHR5KCkgeyByZXR1cm4gYmVnaW4oKSA9PSBlbmQoKTsgfQogCiBwcml2
YXRlOgogICAgIFJhd05vZGUgbV9oZWFkU2VudGluZWw7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvd3RmL3RleHQvU3RyaW5nSW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHJldmlzaW9uIDEwODM1OCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93dGYvdGV4dC9TdHJpbmdJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTQzLDYgKzQzLDggQEAgdHlwZWRlZiBjb25zdCBzdHJ1Y3QgX19DRlN0cmluZyAqIENGU3RyaQog
Ly8gTGFuZGluZyB0aGUgZmlsZSBtb3ZlcyBpbiBvbmUgcGF0Y2gsIHdpbGwgZm9sbG93IG9uIHdp
dGggcGF0Y2hlcyB0byBjaGFuZ2UgdGhlIG5hbWVzcGFjZXMuCiBuYW1lc3BhY2UgSlNDIHsKIHN0
cnVjdCBJZGVudGlmaWVyQ1N0cmluZ1RyYW5zbGF0b3I7CituYW1lc3BhY2UgTExJbnQgeyBjbGFz
cyBEYXRhOyB9CitjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CiB0ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4gc3RydWN0IElkZW50aWZpZXJDaGFyQnVmZmVyVHJhbnNsYXRvcjsKIHN0cnVjdCBJZGVu
dGlmaWVyTENoYXJGcm9tVUNoYXJUcmFuc2xhdG9yOwogfQpAQCAtNzIsNyArNzQsOSBAQCBjbGFz
cyBTdHJpbmdJbXBsIHsKICAgICBmcmllbmQgc3RydWN0IFdURjo6U3Vic3RyaW5nVHJhbnNsYXRv
cjsKICAgICBmcmllbmQgc3RydWN0IFdURjo6VUNoYXJCdWZmZXJUcmFuc2xhdG9yOwogICAgIGZy
aWVuZCBjbGFzcyBBdG9taWNTdHJpbmdJbXBsOwotCisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJ
bnQ6OkRhdGE7CisgICAgZnJpZW5kIGNsYXNzIEpTQzo6TExJbnRPZmZzZXRzRXh0cmFjdG9yOwor
ICAgIAogcHJpdmF0ZToKICAgICBlbnVtIEJ1ZmZlck93bmVyc2hpcCB7CiAgICAgICAgIEJ1ZmZl
ckludGVybmFsLApJbmRleDogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTA4MzU4KQorKysgU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDEzICsxLDMgQEAKLTIwMTItMDIt
MjEgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgotCi0gICAgICAgIFJvbGwgb3V0IHIx
MDgzMDksIHIxMDgzMjMsIGFuZCByMTA4MzI2Ci0KLSAgICAgICAgVGhleSBicm9rZSB0aGUgMzIt
Yml0IExpb24gYnVpbGQuCi0KLSAgICAgICAgT3JpZ2luYWwgYnVncyBpcyA8aHR0cDovL3dlYmtp
dC5vcmcvYi83NTgxMj4gPHJkYXI6Ly9wcm9ibGVtLzEwMDc5Njk0Pi4KLQotICAgICAgICAqIENN
YWtlTGlzdHMudHh0OgotCiAyMDEyLTAyLTIxICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW1N1Z2dlc3RCb3hdIHRleHRQ
cm9tcHQuY3NzIGRpc2FibGVtZW50IGRpc3BsYXlzIGdhcmJsZWQgc3VnZ2VzdCBib3gKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMDgzNTgpCisrKyBTb3VyY2UvV2ViQ29yZS9D
TWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNzUsNiArNzUsNyBAQCBTRVQoV2ViQ29y
ZV9JTkNMVURFX0RJUkVDVE9SSUVTCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9kZWJ1Z2dl
ciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyIgogICAgICIke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vaml0IgorICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJUn0vbGxpbnQiCiAg
ICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9wYXJzZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVf
RElSfS9wcm9maWxlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3J1bnRpbWUiCkluZGV4
OiBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0No
YW5nZUxvZwkocmV2aXNpb24gMTA4MzU4KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMTMgKzEsMyBAQAotMjAxMi0wMi0yMSAgQWRhbSBSb2JlbiAgPGFy
b2JlbkBhcHBsZS5jb20+Ci0KLSAgICAgICAgUm9sbCBvdXQgcjEwODMwOSwgcjEwODMyMywgYW5k
IHIxMDgzMjYKLQotICAgICAgICBUaGV5IGJyb2tlIHRoZSAzMi1iaXQgTGlvbiBidWlsZC4KLQot
ICAgICAgICBPcmlnaW5hbCBidWdzIGlzIDxodHRwOi8vd2Via2l0Lm9yZy9iLzc1ODEyPiA8cmRh
cjovL3Byb2JsZW0vMTAwNzk2OTQ+LgotCi0gICAgICAgICogQ01ha2VMaXN0cy50eHQ6Ci0KIDIw
MTItMDItMjAgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0Mg
c2hvdWxkIGJlIGEgdHJpcGxlLXRpZXIgVk0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ01ha2VMaXN0
cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMTA4MzU4KQorKysgU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtNDUsNiArNDUsNyBAQCBTRVQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAi
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2RlYnVnZ2VyIgogICAgICIke0pBVkFTQ1JJUFRDT1JFX0RJ
Un0vaW50ZXJwcmV0ZXIiCiAgICAgIiR7SkFWQVNDUklQVENPUkVfRElSfS9qaXQiCisgICAgIiR7
SkFWQVNDUklQVENPUkVfRElSfS9sbGludCIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Bh
cnNlciIKICAgICAiJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3Byb2ZpbGVyIgogICAgICIke0pBVkFT
Q1JJUFRDT1JFX0RJUn0vcnVudGltZSIKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwODM1OCkKKysrIFRvb2xzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwxMyArMSwzIEBACi0yMDEyLTAyLTIxICBBZGFtIFJvYmVu
ICA8YXJvYmVuQGFwcGxlLmNvbT4KLQotICAgICAgICBSb2xsIG91dCByMTA4MzA5LCByMTA4MzIz
LCBhbmQgcjEwODMyNgotCi0gICAgICAgIFRoZXkgYnJva2UgdGhlIDMyLWJpdCBMaW9uIGJ1aWxk
LgotCi0gICAgICAgIE9yaWdpbmFsIGJ1Z3MgaXMgPGh0dHA6Ly93ZWJraXQub3JnL2IvNzU4MTI+
IDxyZGFyOi8vcHJvYmxlbS8xMDA3OTY5ND4uCi0KLSAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9l
ZmwvQ01ha2VMaXN0cy50eHQ6Ci0KIDIwMTItMDItMjEgIEFuZHJhcyBCZWNzaSAgPGFuZHJhcy5i
ZWNzaUBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtXSzJdIEdldCByaWQgb2YgdGhlIGRlcGVu
ZGVuY3kgdG8gUXRXaWRnZXRzCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01ha2VM
aXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0NNYWtlTGlz
dHMudHh0CShyZXZpc2lvbiAxMDgzNTgpCisrKyBUb29scy9EdW1wUmVuZGVyVHJlZS9lZmwvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTcwLDEwICs3MCwxMiBAQCBTRVQoRHVtcFJl
bmRlclRyZWVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfQog
ICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9BUEkKICAgICAke0pBVkFTQ1JJUFRDT1JFX0RJUn0v
YXNzZW1ibGVyCisgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2J5dGVjb2RlCiAgICAgJHtKQVZB
U0NSSVBUQ09SRV9ESVJ9L2RmZwogICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9oZWFwCiAgICAg
JHtKQVZBU0NSSVBUQ09SRV9ESVJ9L2ludGVycHJldGVyCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9E
SVJ9L2ppdAorICAgICR7SkFWQVNDUklQVENPUkVfRElSfS9sbGludAogICAgICR7SkFWQVNDUklQ
VENPUkVfRElSfS9ydW50aW1lCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L0ZvcndhcmRpbmdI
ZWFkZXJzCiAgICAgJHtKQVZBU0NSSVBUQ09SRV9ESVJ9L3d0Zgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>